diff --git a/.package.resolved b/.package.resolved new file mode 100644 index 00000000..8e4f0285 --- /dev/null +++ b/.package.resolved @@ -0,0 +1,23 @@ +{ + "pins" : [ + { + "identity" : "appauth-ios-for-olvid", + "kind" : "remoteSourceControl", + "location" : "https://github.com/olvid-io/AppAuth-iOS-for-Olvid", + "state" : { + "branch" : "targetfix", + "revision" : "0d90e24667c4a1fd9a84edb27ce966cc395f1314" + } + }, + { + "identity" : "joseswift-for-olvid", + "kind" : "remoteSourceControl", + "location" : "https://github.com/olvid-io/JOSESwift-for-Olvid", + "state" : { + "branch" : "targetfix", + "revision" : "a1cd4c990da61c86e5bb4cd7605e2d372cc10c72" + } + } + ], + "version" : 2 +} diff --git a/.tuist-version b/.tuist-version index c5b45eb7..594f7183 100644 --- a/.tuist-version +++ b/.tuist-version @@ -1 +1 @@ -3.18.0 +3.33.4 diff --git a/CHANGELOG.en.md b/CHANGELOG.en.md index 8074e242..c2dda683 100644 --- a/CHANGELOG.en.md +++ b/CHANGELOG.en.md @@ -1,5 +1,69 @@ # Changelog +## [1.3.1 (719)] - 2023-12-11 + +- Bugfix release + +## [1.3 (716)] - 2023-12-08 + +- Secure calls are now available on macOS! +- The secure calls feature has a fresh new aesthetic, designed to enhance visual appeal across all devices and orientations. +- Introducing a revamped interface for editing the nickname and custom photo of contacts or groups. +- Enjoy the convenience of inviting all group members simultaneously with the new "Invite All" option. +- Resolves an issue on macOS related to file imports using AirDrop. +- Addresses various bugs concerning keycloak-managed users when the keycloak server is inaccessible. +- Resolves a crash that occurred on certain iPhones when rotating the screen during an active discussion. +- Fixes a bug that hindered secure calls from functioning when the device's local time was incorrect. +- Various other minor bug fixes. + +## [1.2 (709)] - 2023-10-25 + +- It is now possible to subscribe to the multi-device while adding a new device. +- Fixes localization issues. +- Fixes a bug sometimes provoking a crash in the background. +- Fixes a few issues concerning groups (including enterprise managed groups). +- Several fixes improving the multi-device experience. + +## [1.1 (705)] - 2023-10-15 + +- Fully redesigned invitation tab! +- Improves the onboarding process. +- Fixes the authorization screen request access to the microphone. +- Fixes an issue sometimes preventing to receive a code during an invitation process. + +## [1.0 (703)] - 2023-10-10 + +- This is a major update! Welcome to Olvid v1.0 ;-) +- You can now use the same profile on multiple devices simultaneously! +- Start a conversation on your iPhone, continue it on your Mac, finish it on your iPad. +- All your contacts, groups, and settings stay synchronized across all your devices. +- Add a new contact on the go thanks to your iPhone, discuss with them from any device. +- All your conversations stay end-to-end secured (end-to-end encrypted and end-to-end authenticated) across all your devices and those of your contacts. +- Adding a new device to your list of devices is done in seconds thanks to a new, completely redesigned, secure, onboarding process! +- Changing phone is now also done in seconds if you still have your old device at hand. + +## [0.12.12 (694)] - 2023-09-15 + +- Ready for iOS 17! +- You can drag and drop files from (and to) the discussion screen under iPadOS. +- Fixes various typos in French. +- Fixes an issue sometimes preventing a backup to be restored. +- Fixes an issue sometimes preventing the finalization of the download of certain attachments. +- Fixes a bug preventing copy/paste of text in the compose view. +- Fixes an issue preventing a profile from taking advantage of another profile's permission to emit secure calls. +- The list of trust origins is now displayed on a separate screen. +- Adds an advanced setting allowing you to download missing profile pictures for contacts, groups, and personal profiles. + +## [0.12.11 (669)] - 2023-07-19 + +- Fixes a bug preventing certain copy/paste in the composition field. +- Updates the UI of the contact sheet. + +## [0.12.10 (666)] - 2023-07-11 + +- Fixes a bug preventing the download of attachments under iOS 17 beta 3. +- Other minor bugfixes + ## [0.12.9 (661)] - 2023-05-22 - Improves the new group protocol to prevent situations were group pending members would never become full members. Basically, Olvid works even better than before. diff --git a/CHANGELOG.fr.md b/CHANGELOG.fr.md index 06a7fb8b..523ac9fc 100644 --- a/CHANGELOG.fr.md +++ b/CHANGELOG.fr.md @@ -1,5 +1,69 @@ # Changelog +## [1.3.1 (719)] - 2023-12-11 + +- Bugfix + +## [1.3 (716)] - 2023-12-08 + +- Les appels sécurisés sont désormais disponibles sur macOS ! +- Les interfaces des appels sécurisés ont été repensées pour s'adapter à tous les écrans et orientations. +- Introduction d'une nouvelle interface permettant de modifier le surnom et la photo personnalisée d'un contact ou d'un groupe. +- Il est désormais possible d'inviter tous les membres d'un groupe en une seule fois pour des discussions privées individuelles. +- Correction d'une erreur sous macOS lors de l'importation d'un fichier via AirDrop. +- Résolution de plusieurs bugs liés aux utilisateurs gérés par Keycloak lorsque le serveur Keycloak n'est pas accessible. +- Correction d'un crash sur certains iPhone lors de la rotation de l'écran. +- Correction d'un bug empêchant les appels sécurisés de fonctionner lorsque l'heure locale de l'appareil est incorrecte. +- Diverses autres corrections mineures. + +## [1.2 (709)] - 2023-10-25 + +- Il est possible de souscrire un abonnement au moment de l'ajout d'un nouvel appareil. +- Corrige des erreurs de traduction. +- Corrige une erreur pouvant provoquer un crash de l'app en arrière plan. +- Corrige un certain nombre de bug concernant les groupes (y compris les groupes administrés par annuaire). +- Plusieurs corrections afin d'améliorer l'expérience en multi-appareils. + +## [1.1 (705)] - 2023-10-15 + +- Nouveau tab d'invitations ! +- Améliore le processus d'onboarding. +- Corrige l'écran d'autorisation à l'occasion de la demande de micro. +- Corrige un bug empêchant parfois d'arriver au terme d'une invitation. + +## [1.0 (703)] - 2023-10-10 + +- Mise à jour majeure ! Bienvenue à Olvid v1.0 ;-) +- Vous pouvez maintenant utiliser votre profil sur plusieurs appareils simultanément ! +- Commencez une discussion sur votre iPhone, continuez-la sur votre Mac, terminez-la sur votre iPad. +- Tous vos contacts, groupes et paramètres restent synchronisés entre tous vos appareils. +- Ajoutez un nouveau contact depuis votre iPhone, discutez ensuite depuis n’importe lequel de vos appareils. +- Vos conversations restent sécurisées de bout en bout (chiffrées de bout en bout et authentifiées de bout en bout) entre tous vos appareils et ceux de vos contacts. +- Ajouter un nouvel appareil à votre liste d’appareils ne demande que quelques secondes grâce à un nouveau processus « d’onboarding » sécurisé complètement revu ! +- Changer de téléphone ne demande que quelques secondes si vous avez encore votre ancien appareil sous la main. + +## [0.12.12 (694)] - 2023-09-15 + +- Tout est prêt pour iOS 17 ! +- Il est possible de faire un glisser-déposer depuis (et vers) la vue de discussion sur iPadOS. +- Corrige de nombreuses erreurs dans les textes français. +- Corrige un bug empêchant parfois une sauvegarde d'être restaurée. +- Corrige un bug empêchant parfois l'accès à une pièce jointe après son téléchargement. +- Corrige un bug empêchant le copier/coller de certains liens dans la zone de composition. +- Corrige un bug empêchant un profil de profiter du droit d'appeler d'un autre profil. +- La liste des origines de confiance est maintenant affichée sur un écran séparé. +- Un paramètre avancé permet de télécharger les photos de profil manquantes pour les contacts, groupes et profils personnels. + +## [0.12.11 (669)] - 2023-07-19 + +- Corrige un bug empêchant le copier/coller de certains liens dans la zone de composition. +- Amélioration de l'interface de la fiche contact. + +## [0.12.10 (666)] - 2023-07-11 + +- Corrige un bug empêchant le téléchargement de pièces jointes sous iOS 17 beta 3 +- Autres corrections de bug mineurs + ## [0.12.9 (661)] - 2023-05-22 - Améliore le protocole concernant les nouveaux groupes afin de limiter les situations où des membres en attente de deviennent jamais membre à part entière. Bref, ça marche encore mieux qu'avant. @@ -136,7 +200,7 @@ - Corrige un problème rencontré sous iOS 16 concernant les autorisations systématiques demandées au moment de faire un copier/coller. - Corrige un bug empêchant l'affichage de certaines notifications d'appel manqué. - Le démarrage d'Olvid est encore plus rapide qu'avant. -- Afin de ne jamais rater un appel sécurisé, vous avez maintenant la possibilité d'accorder l'accès au micro pendant l'onboarding. +- Afin de ne jamais raté un appel sécurisé, vous avez maintenant la possibilité d'accorder l'accès au micro pendant l'onboarding. ## [0.11.1 (564)] - 2022-09-22 diff --git a/Engine/JWS/JWS/JWSUtil.swift b/Engine/JWS/JWS/JWSUtil.swift index c30be269..a7004f33 100644 --- a/Engine/JWS/JWS/JWSUtil.swift +++ b/Engine/JWS/JWS/JWSUtil.swift @@ -19,9 +19,13 @@ import Foundation import JOSESwift +import ObvEncoder +import OlvidUtils -public struct ObvJWKSet { - +public struct ObvJWKSet: ObvErrorMaker { + + public static let errorDomain = "ObvJWKSet" + fileprivate let jWKSet: JWKSet public init(data: Data) throws { @@ -38,6 +42,37 @@ public struct ObvJWKSet { } +/// We make `ObvJWKSet` conform to `ObvCodable` since this type is used within the engine's protocol messages. +extension ObvJWKSet: ObvFailableCodable { + + public func obvEncode() throws -> ObvEncoder.ObvEncoded { + guard let obvJWKSetAsJSONData = self.jsonData() else { + assertionFailure() + throw Self.makeError(message: "Could not encode ObvJWKSet") + } + return obvJWKSetAsJSONData.obvEncode() + } + + + public init?(_ obvEncoded: ObvEncoded) { + + guard let obvJWKSetAsJSONData = Data(obvEncoded) else { + assertionFailure() + return nil + } + + do { + try self.init(data: obvJWKSetAsJSONData) + } catch { + assertionFailure(error.localizedDescription) + return nil + } + + } + +} + + public struct ObvJWK: Equatable { private static let errorDomain = "ObvJWK" @@ -84,6 +119,35 @@ public struct ObvJWK: Equatable { } +/// We make `ObvJWK` conform to `ObvCodable` since this type is used within the engine's protocol messages. +extension ObvJWK: ObvFailableCodable { + + public func obvEncode() throws -> ObvEncoder.ObvEncoded { + let jsonData = try self.jsonEncode() + return jsonData.obvEncode() + } + + + public init?(_ obvEncoded: ObvEncoded) { + + guard let jsonData = Data(obvEncoded) else { + assertionFailure() + return nil + } + + guard let obvJWK = try? Self.jsonDecode(rawObvJWK: jsonData) else { + assertionFailure() + return nil + } + + self = obvJWK + + } + +} + + + public final class JWSUtil { private static let errorDomain = "JWSUtil" diff --git a/Engine/ObvBackupManager/ObvBackupManager/CoreData/Backup.swift b/Engine/ObvBackupManager/ObvBackupManager/CoreData/Backup.swift index 05aabd12..6583b1d6 100644 --- a/Engine/ObvBackupManager/ObvBackupManager/CoreData/Backup.swift +++ b/Engine/ObvBackupManager/ObvBackupManager/CoreData/Backup.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/Engine/ObvBackupManager/ObvBackupManager/CoreData/BackupKey.swift b/Engine/ObvBackupManager/ObvBackupManager/CoreData/BackupKey.swift index c8e9987f..9aef311b 100644 --- a/Engine/ObvBackupManager/ObvBackupManager/CoreData/BackupKey.swift +++ b/Engine/ObvBackupManager/ObvBackupManager/CoreData/BackupKey.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/Engine/ObvBackupManager/ObvBackupManager/ObvBackupDelegateManager.swift b/Engine/ObvBackupManager/ObvBackupManager/ObvBackupDelegateManager.swift index 6c9e7efa..fb899e92 100644 --- a/Engine/ObvBackupManager/ObvBackupManager/ObvBackupDelegateManager.swift +++ b/Engine/ObvBackupManager/ObvBackupManager/ObvBackupDelegateManager.swift @@ -33,6 +33,4 @@ final class ObvBackupDelegateManager { weak var contextCreator: ObvCreateContextDelegate! weak var notificationDelegate: ObvNotificationDelegate! - - } diff --git a/Engine/ObvBackupManager/ObvBackupManager/ObvBackupManagerImplementation.swift b/Engine/ObvBackupManager/ObvBackupManager/ObvBackupManagerImplementation.swift index 1ba09d74..27f6f481 100644 --- a/Engine/ObvBackupManager/ObvBackupManager/ObvBackupManagerImplementation.swift +++ b/Engine/ObvBackupManager/ObvBackupManager/ObvBackupManagerImplementation.swift @@ -269,13 +269,13 @@ extension ObvBackupManagerImplementation: ObvBackupDelegate { let fullBackup = try FullBackup(allInternalJsonAndIdentifier: allInternalDataForBackup) - // Create and compress the full backup + // Create the full backup - let possiblyCompressedFullBackupData = try fullBackup.computeData(flowId: backupRequestIdentifier, doCompressData: ObvConstants.compressBackupedData, log: log) + let fullBackupData = try fullBackup.computeData(flowId: backupRequestIdentifier, log: log) - os_log("The compressed full backup is made of %d bytes within flow %{public}@", log: log, type: .info, possiblyCompressedFullBackupData.count, backupRequestIdentifier.description) + os_log("The full backup is made of %d bytes within flow %{public}@", log: log, type: .info, fullBackupData.count, backupRequestIdentifier.description) - return try await createPersistedBackup(forExport: forExport, backupRequestIdentifier: backupRequestIdentifier, possiblyCompressedFullBackupData: possiblyCompressedFullBackupData) + return try await createPersistedBackup(forExport: forExport, backupRequestIdentifier: backupRequestIdentifier, fullBackupData: fullBackupData) } @@ -436,7 +436,7 @@ extension ObvBackupManagerImplementation: ObvBackupDelegate { throw BackupRestoreError.backupDataDecryptionFailed } - os_log("The backup data was successfully decrypted for backup request identified by %{public}@. We can decompress this data.", log: log, type: .info, backupRequestIdentifier.description) + os_log("The backup data was successfully decrypted for backup request identified by %{public}@", log: log, type: .info, backupRequestIdentifier.description) let fullBackup: FullBackup do { @@ -579,7 +579,7 @@ extension ObvBackupManagerImplementation: ObvBackupDelegate { extension ObvBackupManagerImplementation { - private func createPersistedBackup(forExport: Bool, backupRequestIdentifier: FlowIdentifier, possiblyCompressedFullBackupData: Data) async throws -> (backupKeyUid: UID, version: Int, encryptedContent: Data) { + private func createPersistedBackup(forExport: Bool, backupRequestIdentifier: FlowIdentifier, fullBackupData: Data) async throws -> (backupKeyUid: UID, version: Int, encryptedContent: Data) { assert(!Thread.isMainThread) @@ -605,11 +605,11 @@ extension ObvBackupManagerImplementation { throw Self.makeError(message: "Could not find any backup key for ongoing backup") } - // At this point we have a compressed backup and the appropriate keys. We can encrypt the backup. + // At this point we have a backup and the appropriate keys. We can encrypt the backup. - os_log("Encrypting the compressed full backup for backupRequestIdentifier %{public}@", log: log, type: .info, backupRequestIdentifier.description) + os_log("Encrypting the full backup for backupRequestIdentifier %{public}@", log: log, type: .info, backupRequestIdentifier.description) - let encryptedBackup = PublicKeyEncryption.encrypt(possiblyCompressedFullBackupData, using: derivedKeysForBackup.publicKeyForEncryption, and: prng) + let encryptedBackup = PublicKeyEncryption.encrypt(fullBackupData, using: derivedKeysForBackup.publicKeyForEncryption, and: prng) let macOfEncryptedBackup = try MAC.compute(forData: encryptedBackup, withKey: derivedKeysForBackup.macKey) let authenticatedEncryptedBackup = EncryptedData(data: encryptedBackup.raw + macOfEncryptedBackup) @@ -922,7 +922,7 @@ fileprivate struct FullBackup: Codable { return result } - func computeData(flowId: FlowIdentifier, doCompressData: Bool, log: OSLog) throws -> Data { + func computeData(flowId: FlowIdentifier, log: OSLog) throws -> Data { // Create the full backup content @@ -931,42 +931,10 @@ fileprivate struct FullBackup: Codable { let jsonEncoder = JSONEncoder() let fullBackupData = try jsonEncoder.encode(self) - if doCompressData { - - // Compress the full backup content - - os_log("Compressing the %d bytes full backup content within flow %{public}@", log: log, type: .info, fullBackupData.count, flowId.description) - - let compressedFullBackupData = try compressFullBackupContent(fullBackupData) - - return compressedFullBackupData - - } else { - - return fullBackupData - - } - - } - - - private func compressFullBackupContent(_ fullBackupContent: Data) throws -> Data { - - // See https://developer.apple.com/documentation/accelerate/compressing_and_decompressing_data_with_buffer_compression - // We use a method working under iOS 11+. Under iOS 13+, we could use simpler APIs. - - var sourceBuffer = [UInt8](fullBackupContent) - let destinationBuffer = UnsafeMutablePointer.allocate(capacity: fullBackupContent.count) - let algorithm = COMPRESSION_ZLIB - let compressedSize = compression_encode_buffer(destinationBuffer, fullBackupContent.count, &sourceBuffer, fullBackupContent.count, nil, algorithm) - guard compressedSize > 0 else { - throw ObvBackupManagerImplementation.makeError(message: "Compression failed") - } - let compressedFullBackupData = Data(bytes: destinationBuffer, count: compressedSize) - return compressedFullBackupData + return fullBackupData } - + private static func decompressCompressedBackupContent(_ compressedFullBackupData: Data) async throws -> Data { diff --git a/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvChannel.swift b/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvChannel.swift index 4e493604..f046d067 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvChannel.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvChannel.swift @@ -30,7 +30,7 @@ protocol ObvChannel { var cryptoSuiteVersion: SuiteVersion { get } /// The returned set contains all the crypto identities to which the `message` was successfully posted. - static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [MessageIdentifier: Set] + static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [ObvMessageIdentifier: Set] static func acceptableChannelsForPosting(_ message: ObvChannelMessageToSend, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [ObvChannel] @@ -84,7 +84,7 @@ extension ObvNetworkChannel { } - static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [MessageIdentifier: Set] { + static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [ObvMessageIdentifier: Set] { let log = OSLog(subsystem: delegateManager.logSubsystem, category: "ObvNetworkChannel") diff --git a/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvLocalChannel.swift b/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvLocalChannel.swift index 31d1fe31..e56bccbd 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvLocalChannel.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvLocalChannel.swift @@ -43,7 +43,7 @@ final class ObvLocalChannel: ObvChannel { self.ownedIdentity = ownedIdentity } - private func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> MessageIdentifier { + private func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> ObvMessageIdentifier { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ObvLocalChannel.logCategory) @@ -75,7 +75,7 @@ final class ObvLocalChannel: ObvChannel { } let randomUid = UID.gen(with: prng) - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: randomUid) // For a local message, to toIdentity is also the from (owned) identity + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: randomUid) // For a local message, to toIdentity is also the from (owned) identity let receivedMessage = ObvProtocolReceivedMessage(messageId: messageId, timestamp: message.timestamp, @@ -117,7 +117,7 @@ final class ObvLocalChannel: ObvChannel { try protocolDelegate.process(receivedMessage, within: obvContext) let randomUid = UID.gen(with: prng) - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: randomUid) // For a local message, to toIdentity is also the from (owned) identity + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: randomUid) // For a local message, to toIdentity is also the from (owned) identity return messageId @@ -138,7 +138,7 @@ final class ObvLocalChannel: ObvChannel { try protocolDelegate.process(receivedMessage, within: obvContext) let randomUid = UID.gen(with: prng) - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: randomUid) // For a local message, to toIdentity is also the from (owned) identity + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: randomUid) // For a local message, to toIdentity is also the from (owned) identity return messageId @@ -168,7 +168,9 @@ extension ObvLocalChannel { throw ObvLocalChannel.makeError(message: "Wrong message type") } - guard try identityDelegate.isOwned(ownedIdentity, within: obvContext) else { + // We check that the identity is owned, or that its server is the fake server used for ephemeral identities during the owned identity transfer protocol + + guard try identityDelegate.isOwned(ownedIdentity, within: obvContext) || ownedIdentity.serverURL == ObvConstants.ephemeralIdentityServerURL else { os_log("Cannot send local message to an identity that is not owned", log: log, type: .error) throw ObvLocalChannel.makeError(message: "Cannot send local message to an identity that is not owned") } @@ -183,7 +185,7 @@ extension ObvLocalChannel { return acceptableChannels } - static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [MessageIdentifier: Set] { + static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [ObvMessageIdentifier: Set] { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ObvLocalChannel.logCategory) diff --git a/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvServerChannel.swift b/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvServerChannel.swift index 98b00b61..a6de2ecf 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvServerChannel.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvServerChannel.swift @@ -47,7 +47,7 @@ final class ObvServerChannel: ObvChannel { // MARK: - Implementing ObvChannel extension ObvServerChannel { - private func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> MessageIdentifier { + private func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> ObvMessageIdentifier { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ObvServerChannel.logCategory) @@ -91,6 +91,26 @@ extension ObvServerChannel { serverQueryType = .updateGroupBlob(groupIdentifier: groupIdentifier, encodedServerAdminPublicKey: encodedServerAdminPublicKey, encryptedBlob: encryptedBlob, lockNonce: lockNonce, signature: signature) case .getKeycloakData(serverURL: let serverURL, serverLabel: let serverLabel): serverQueryType = .getKeycloakData(serverURL: serverURL, serverLabel: serverLabel) + case .ownedDeviceDiscovery: + serverQueryType = .ownedDeviceDiscovery + case .setOwnedDeviceName(ownedDeviceUID: let ownedDeviceUID, encryptedOwnedDeviceName: let encryptedOwnedDeviceName, isCurrentDevice: let isCurrentDevice): + serverQueryType = .setOwnedDeviceName(ownedDeviceUID: ownedDeviceUID, encryptedOwnedDeviceName: encryptedOwnedDeviceName, isCurrentDevice: isCurrentDevice) + case .deactivateOwnedDevice(ownedDeviceUID: let ownedDeviceUID, isCurrentDevice: let isCurrentDevice): + serverQueryType = .deactivateOwnedDevice(ownedDeviceUID: ownedDeviceUID, isCurrentDevice: isCurrentDevice) + case .setUnexpiringOwnedDevice(ownedDeviceUID: let ownedDeviceUID): + serverQueryType = .setUnexpiringOwnedDevice(ownedDeviceUID: ownedDeviceUID) + case .sourceGetSessionNumber(protocolInstanceUID: let protocolInstanceUID): + serverQueryType = .sourceGetSessionNumber(protocolInstanceUID: protocolInstanceUID) + case .sourceWaitForTargetConnection(protocolInstanceUID: let protocolInstanceUID): + serverQueryType = .sourceWaitForTargetConnection(protocolInstanceUID: protocolInstanceUID) + case .targetSendEphemeralIdentity(protocolInstanceUID: let protocolInstanceUID, transferSessionNumber: let transferSessionNumber, payload: let payload): + serverQueryType = .targetSendEphemeralIdentity(protocolInstanceUID: protocolInstanceUID, transferSessionNumber: transferSessionNumber, payload: payload) + case .transferRelay(protocolInstanceUID: let protocolInstanceUID, connectionIdentifier: let connectionIdentifier, payload: let payload, thenCloseWebSocket: let thenCloseWebSocket): + serverQueryType = .transferRelay(protocolInstanceUID: protocolInstanceUID, connectionIdentifier: connectionIdentifier, payload: payload, thenCloseWebSocket: thenCloseWebSocket) + case .transferWait(protocolInstanceUID: let protocolInstanceUID, connectionIdentifier: let connectionIdentifier): + serverQueryType = .transferWait(protocolInstanceUID: protocolInstanceUID, connectionIdentifier: connectionIdentifier) + case .closeWebsocketConnection(protocolInstanceUID: let protocolInstanceUID): + serverQueryType = .closeWebsocketConnection(protocolInstanceUID: protocolInstanceUID) } let serverQuery = ServerQuery(ownedIdentity: ownedIdentity, queryType: serverQueryType, encodedElements: message.encodedElements) @@ -98,7 +118,7 @@ extension ObvServerChannel { networkFetchDelegate.postServerQuery(serverQuery, within: obvContext) let randomUid = UID.gen(with: prng) - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: randomUid) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: randomUid) return messageId @@ -127,8 +147,9 @@ extension ObvServerChannel { guard message.messageType == .ServerQuery else { throw ObvServerChannel.makeError(message: "Wrong message type") } - - if try identityDelegate.isOwned(ownedIdentity, within: obvContext) { + + /// We check that the identity is owned. On some occasions (like in the owned identity transfer protocol), we can use ephemeral owned identities + if try identityDelegate.isOwned(ownedIdentity, within: obvContext) || message.channelType.fromOwnedIdentity.serverURL == ObvConstants.ephemeralIdentityServerURL { acceptableChannels = [ObvServerChannel(ownedIdentity: ownedIdentity)] } else { assertionFailure() @@ -145,7 +166,7 @@ extension ObvServerChannel { } - static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [MessageIdentifier: Set] { + static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [ObvMessageIdentifier: Set] { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ObvServerChannel.logCategory) diff --git a/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvUserInterfaceChannel.swift b/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvUserInterfaceChannel.swift index 72214e07..0aaedeb8 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvUserInterfaceChannel.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/ChannelTypes/ObvUserInterfaceChannel.swift @@ -44,7 +44,7 @@ final class ObvUserInterfaceChannel: ObvChannel { self.toOwnedIdentity = toOwnedIdentity } - private func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> MessageIdentifier { + private func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> ObvMessageIdentifier { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ObvUserInterfaceChannel.logCategory) @@ -67,7 +67,7 @@ final class ObvUserInterfaceChannel: ObvChannel { try obvUserInterfaceChannelDelegate.newUserDialogToPresent(obvChannelDialogMessageToSend: message, within: obvContext) let randomUid = UID.gen(with: prng) - let messageId = MessageIdentifier(ownedCryptoIdentity: toOwnedIdentity, uid: randomUid) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: toOwnedIdentity, uid: randomUid) return messageId @@ -121,7 +121,7 @@ extension ObvUserInterfaceChannel { } - static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [MessageIdentifier: Set] { + static func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, delegateManager: ObvChannelDelegateManager, within obvContext: ObvContext) throws -> [ObvMessageIdentifier: Set] { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ObvUserInterfaceChannel.logCategory) diff --git a/Engine/ObvChannelManager/ObvChannelManager/Coordinators/NetworkReceivedMessageDecryptor.swift b/Engine/ObvChannelManager/ObvChannelManager/Coordinators/NetworkReceivedMessageDecryptor.swift index 425e61b5..fdfde72f 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/Coordinators/NetworkReceivedMessageDecryptor.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/Coordinators/NetworkReceivedMessageDecryptor.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -38,7 +38,9 @@ final class NetworkReceivedMessageDecryptor: NetworkReceivedMessageDecryptorDele } + // MARK: Implementing ObvNetworkReceivedMessageDecryptorDelegate + extension NetworkReceivedMessageDecryptor { // This method only succeeds if the ObvNetworkReceivedMessageEncrypted actually is an Application message. It is typically used when decrypting Application's User Notifications sent through APNS. @@ -67,7 +69,7 @@ extension NetworkReceivedMessageDecryptor { /// This method is called on each new received message. - func decryptAndProcess(_ receivedMessage: ObvNetworkReceivedMessageEncrypted, within obvContext: ObvContext) throws { + func decryptAndProcessNetworkReceivedMessageEncrypted(_ receivedMessage: ObvNetworkReceivedMessageEncrypted, within obvContext: ObvContext) throws { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvChannelDelegateManager.defaultLogSubsystem, category: NetworkReceivedMessageDecryptor.logCategory) @@ -99,7 +101,7 @@ extension NetworkReceivedMessageDecryptor { os_log("🔑 A received wrapped key was decrypted using an Asymmetric Channel", log: log, type: .debug) decryptAndProcess(receivedMessage, with: messageKey, channelType: channelInfo, within: obvContext) } else { - os_log("🔑 The received message %@ could not be decrypted", log: log, type: .error, receivedMessage.messageId.debugDescription) + os_log("🔑 The received message %@ could not be decrypted", log: log, type: .fault, receivedMessage.messageId.debugDescription) networkFetchDelegate.deleteMessageAndAttachments(messageId: receivedMessage.messageId, within: obvContext) } diff --git a/Engine/ObvChannelManager/ObvChannelManager/Coordinators/ObliviousChannelLifeManager.swift b/Engine/ObvChannelManager/ObvChannelManager/Coordinators/ObliviousChannelLifeManager.swift index eb8227c8..a0e9e436 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/Coordinators/ObliviousChannelLifeManager.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/Coordinators/ObliviousChannelLifeManager.swift @@ -240,6 +240,19 @@ extension ObliviousChannelLifeManager { } + + public func anObliviousChannelExistsBetweenCurrentDeviceUid(_ currentDeviceUid: UID, andRemoteDeviceUid remoteDeviceUid: UID, of remoteIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { + + let channel = try ObvObliviousChannel.get(currentDeviceUid: currentDeviceUid, + remoteCryptoIdentity: remoteIdentity, + remoteDeviceUid: remoteDeviceUid, + necessarilyConfirmed: false, + within: obvContext) + return channel != nil + + } + + public func aConfirmedObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity remoteIdentity: ObvCryptoIdentity, withRemoteDeviceUid remoteDeviceUid: UID, within obvContext: ObvContext) throws -> Bool { guard let delegateManager = delegateManager else { diff --git a/Engine/ObvChannelManager/ObvChannelManager/Core Data/ObvObliviousChannel.swift b/Engine/ObvChannelManager/ObvChannelManager/Core Data/ObvObliviousChannel.swift index c25f885f..dcf87f64 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/Core Data/ObvObliviousChannel.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/Core Data/ObvObliviousChannel.swift @@ -51,7 +51,7 @@ final class ObvObliviousChannel: NSManagedObject, ObvManagedObject, ObvNetworkCh // MARK: General Attributes and Properties @NSManaged private(set) var currentDeviceUid: UID // Part of primary key - @NSManaged private(set) var remoteCryptoIdentity: ObvCryptoIdentity // Part of primary key + @NSManaged private(set) var remoteCryptoIdentity: ObvCryptoIdentity // Part of primary key (may be an owned identity) @NSManaged private(set) var remoteDeviceUid: UID // Part of primary key private(set) var isConfirmed: Bool { @@ -368,31 +368,54 @@ final class ObvObliviousChannel: NSManagedObject, ObvManagedObject, ObvNetworkCh // MARK: - Convenience DB getters extension ObvObliviousChannel { + struct Predicate { + enum Key: String { + case currentDeviceUid = "currentDeviceUid" + case remoteCryptoIdentity = "remoteCryptoIdentity" + case remoteDeviceUid = "remoteDeviceUid" + case isConfirmed = "isConfirmed" + } + static func withCurrentDeviceUid(_ currentDeviceUid: UID) -> NSPredicate { + NSPredicate(format: "%K == %@", Key.currentDeviceUid.rawValue, currentDeviceUid) + } + static func withRemoteCryptoIdentity(_ remoteCryptoIdentity: ObvCryptoIdentity) -> NSPredicate { + NSPredicate(format: "%K == %@", Key.remoteCryptoIdentity.rawValue, remoteCryptoIdentity) + } + static func withRemoteDeviceUid(_ remoteDeviceUid: UID) -> NSPredicate { + NSPredicate(format: "%K == %@", Key.remoteDeviceUid.rawValue, remoteDeviceUid) + } + static func withRemoteDeviceUid(in remoteDeviceUids: [UID]) -> NSPredicate { + NSPredicate(format: "%K IN %@", Key.remoteDeviceUid.rawValue, remoteDeviceUids) + } + static func whereIsConfirmed(is isConfirmed: Bool) -> NSPredicate { + NSPredicate(Key.isConfirmed, is: isConfirmed) + } + } + @nonobjc class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: ObvObliviousChannel.entityName) } + /// This method returns an ObvObliviousChannel if one is found. static func get(currentDeviceUid: UID, remoteCryptoIdentity: ObvCryptoIdentity, remoteDeviceUid: UID, necessarilyConfirmed: Bool, within obvContext: ObvContext) throws -> ObvObliviousChannel? { let request: NSFetchRequest = ObvObliviousChannel.fetchRequest() + var allPredicates: [NSPredicate] = [ + Predicate.withCurrentDeviceUid(currentDeviceUid), + Predicate.withRemoteCryptoIdentity(remoteCryptoIdentity), + Predicate.withRemoteDeviceUid(remoteDeviceUid) + ] if necessarilyConfirmed { - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %@ AND %K == %@", - currentDeviceUidKey, currentDeviceUid, - remoteCryptoIdentityKey, remoteCryptoIdentity, - remoteDeviceUidKey, remoteDeviceUid, - isConfirmedKey, NSNumber(value: true)) - } else { - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %@", - currentDeviceUidKey, currentDeviceUid, - remoteCryptoIdentityKey, remoteCryptoIdentity, - remoteDeviceUidKey, remoteDeviceUid) + allPredicates.append(Predicate.whereIsConfirmed(is: true)) } + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: allPredicates) request.fetchLimit = 1 let item = (try obvContext.fetch(request)).first item?.obvContext = obvContext return item } + static func get(objectID: NSManagedObjectID, within obvContext: ObvContext) throws -> ObvObliviousChannel? { let request: NSFetchRequest = ObvObliviousChannel.fetchRequest() request.predicate = NSPredicate(format: "self == %@", objectID) @@ -402,21 +425,21 @@ extension ObvObliviousChannel { return item } + /// This method returns an array of ObvObliviousChannels. static func get(currentDeviceUid: UID, remoteCryptoIdentity: ObvCryptoIdentity, remoteDeviceUids: [UID], necessarilyConfirmed: Bool, within obvContext: ObvContext) throws -> [ObvObliviousChannel] { let request: NSFetchRequest = ObvObliviousChannel.fetchRequest() + + var allPredicates: [NSPredicate] = [ + Predicate.withCurrentDeviceUid(currentDeviceUid), + Predicate.withRemoteCryptoIdentity(remoteCryptoIdentity), + Predicate.withRemoteDeviceUid(in: remoteDeviceUids), + ] if necessarilyConfirmed { - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K IN %@ AND %K == %@", - currentDeviceUidKey, currentDeviceUid, - remoteCryptoIdentityKey, remoteCryptoIdentity, - remoteDeviceUidKey, remoteDeviceUids, - isConfirmedKey, NSNumber(value: true)) - } else { - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K IN %@", - currentDeviceUidKey, currentDeviceUid, - remoteCryptoIdentityKey, remoteCryptoIdentity, - remoteDeviceUidKey, remoteDeviceUids) + allPredicates.append(Predicate.whereIsConfirmed(is: true)) } + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: allPredicates) + request.fetchLimit = remoteDeviceUids.count let items = try obvContext.fetch(request) return items.map { $0.obvContext = obvContext; return $0 } } @@ -425,10 +448,12 @@ extension ObvObliviousChannel { /// This method returns an array of ObvObliviousChannels. static func getAllConfirmedChannels(currentDeviceUid: UID, remoteCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> [ObvObliviousChannel] { let request: NSFetchRequest = ObvObliviousChannel.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %@", - currentDeviceUidKey, currentDeviceUid, - remoteCryptoIdentityKey, remoteCryptoIdentity, - isConfirmedKey, NSNumber(value: true)) + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withCurrentDeviceUid(currentDeviceUid), + Predicate.withRemoteCryptoIdentity(remoteCryptoIdentity), + Predicate.whereIsConfirmed(is: true), + ]) + request.fetchBatchSize = 1_000 let items = try obvContext.fetch(request) return items.map { $0.obvContext = obvContext; return $0 } } @@ -443,9 +468,10 @@ extension ObvObliviousChannel { static func delete(currentDeviceUid: UID, remoteCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { let request: NSFetchRequest = ObvObliviousChannel.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@", - currentDeviceUidKey, currentDeviceUid, - remoteCryptoIdentityKey, remoteCryptoIdentity) + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withCurrentDeviceUid(currentDeviceUid), + Predicate.withRemoteCryptoIdentity(remoteCryptoIdentity), + ]) let channels = try obvContext.fetch(request) for channel in channels { channel.obvContext = obvContext @@ -456,10 +482,11 @@ extension ObvObliviousChannel { static func delete(currentDeviceUid: UID, remoteDeviceUid: UID, remoteIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { let request: NSFetchRequest = ObvObliviousChannel.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %@", - currentDeviceUidKey, currentDeviceUid, - remoteDeviceUidKey, remoteDeviceUid, - remoteCryptoIdentityKey, remoteIdentity) + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withCurrentDeviceUid(currentDeviceUid), + Predicate.withRemoteDeviceUid(remoteDeviceUid), + Predicate.withRemoteCryptoIdentity(remoteIdentity), + ]) let channels = try obvContext.fetch(request) for channel in channels { channel.obvContext = obvContext @@ -468,19 +495,6 @@ extension ObvObliviousChannel { } - static func getContactCryptoIdentitiesOfEstablishedChannels(withTheCurrentDeviceUid currentDeviceUid: UID, ofTheOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) -> Set? { - let request: NSFetchRequest = ObvObliviousChannel.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@ AND %K != %@ AND %K == %@", - currentDeviceUidKey, currentDeviceUid, - remoteCryptoIdentityKey, ownedIdentity, - isConfirmedKey, NSNumber(value: true)) - guard let items = try? obvContext.fetch(request) else { return nil } - _ = items.map { $0.obvContext = obvContext } - let identities = items.map { $0.remoteCryptoIdentity } - return Set(identities) - } - - static func getAllKnownRemoteDeviceUids(within obvContext: ObvContext) throws -> Set { let request: NSFetchRequest = ObvObliviousChannel.fetchRequest() let items = try obvContext.fetch(request) @@ -493,7 +507,7 @@ extension ObvObliviousChannel { static func deleteAllObliviousChannelsForCurrentDeviceUid(_ currentDeviceUid: UID, within obvContext: ObvContext) throws { let request: NSFetchRequest = ObvObliviousChannel.fetchRequest() request.fetchBatchSize = 500 - request.predicate = NSPredicate(format: "%K == %@", currentDeviceUidKey, currentDeviceUid) + request.predicate = Predicate.withCurrentDeviceUid(currentDeviceUid) request.propertiesToFetch = [] let channels = try obvContext.fetch(request) for channel in channels { @@ -563,36 +577,41 @@ extension ObvObliviousChannel { case .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: let contactIdentities, fromOwnedIdentity: let ownedIdentity): - let channels: [[ObvObliviousChannel]] = try contactIdentities.compactMap { (contactIdentity) in - guard let remoteDeviceUids = try? identityDelegate.getDeviceUidsOfContactIdentity(contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) else { - os_log("Could not determine the device uids of one of the recipient (4)", log: log, type: .error) - return nil - } - let channels = try ObvObliviousChannel.getAcceptableObliviousChannels(from: ownedIdentity, - to: contactIdentity, - remoteDeviceUids: Array(remoteDeviceUids), - necessarilyConfirmed: true, - within: obvContext) - return channels - } - acceptableChannels = channels.reduce([ObvObliviousChannel]()) { (array, channels) in - return array + channels - } + let acceptableChannelsWithContacts = try Self.getAcceptableChannelsWithContacts( + contactIdentities: contactIdentities, + identityDelegate: identityDelegate, + ownedIdentity: ownedIdentity, + log: log, + within: obvContext) + + acceptableChannels = acceptableChannelsWithContacts case .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity(ownedIdentity: let ownedIdentity): - guard try identityDelegate.isOwned(ownedIdentity, within: obvContext) else { - throw ObvObliviousChannel.makeError(message: "Identity is not owned") - } - let remoteDeviceUids = try identityDelegate.getDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) - let channels = try ObvObliviousChannel.getAcceptableObliviousChannels(from: ownedIdentity, - to: ownedIdentity, - remoteDeviceUids: Array(remoteDeviceUids), - necessarilyConfirmed: true, - within: obvContext) - acceptableChannels = channels + + let acceptableChannelsWithOtherOwnedDevices = try Self.getAcceptableChannelsWithOtherOwnedDevices( + ownedIdentity: ownedIdentity, + identityDelegate: identityDelegate, + within: obvContext) + + acceptableChannels = acceptableChannelsWithOtherOwnedDevices + case .AllConfirmedObliviousChannelsWithContactIdentitiesAndWithOtherDevicesOfOwnedIdentity(contactIdentities: let contactIdentities, fromOwnedIdentity: let ownedIdentity): + let acceptableChannelsWithContacts = try Self.getAcceptableChannelsWithContacts( + contactIdentities: contactIdentities, + identityDelegate: identityDelegate, + ownedIdentity: ownedIdentity, + log: log, + within: obvContext) + + let acceptableChannelsWithOtherOwnedDevices = try Self.getAcceptableChannelsWithOtherOwnedDevices( + ownedIdentity: ownedIdentity, + identityDelegate: identityDelegate, + within: obvContext) + + acceptableChannels = acceptableChannelsWithContacts + acceptableChannelsWithOtherOwnedDevices + case .AsymmetricChannel, .AsymmetricChannelBroadcast, .Local, @@ -605,6 +624,48 @@ extension ObvObliviousChannel { return acceptableChannels } + + + /// Helper methods for ``static ObvObliviousChannel.acceptableChannelsForPosting(_:delegateManager:within:)`` + private static func getAcceptableChannelsWithContacts(contactIdentities: Set, identityDelegate: ObvIdentityDelegate, ownedIdentity: ObvCryptoIdentity, log: OSLog, within obvContext: ObvContext) throws -> [ObvObliviousChannel] { + + let channelsWithContacts: [[ObvObliviousChannel]] = try contactIdentities.compactMap { (contactIdentity) in + guard let remoteDeviceUids = try? identityDelegate.getDeviceUidsOfContactIdentity(contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) else { + os_log("Could not determine the device uids of one of the recipient", log: log, type: .fault) + return nil + } + let channels = try ObvObliviousChannel.getAcceptableObliviousChannels(from: ownedIdentity, + to: contactIdentity, + remoteDeviceUids: Array(remoteDeviceUids), + necessarilyConfirmed: true, + within: obvContext) + return channels + } + let acceptableChannelsWithContacts = channelsWithContacts.reduce([ObvObliviousChannel]()) { (array, channels) in + return array + channels + } + + return acceptableChannelsWithContacts + + } + + + /// Helper methods for ``static ObvObliviousChannel.acceptableChannelsForPosting(_:delegateManager:within:)`` + private static func getAcceptableChannelsWithOtherOwnedDevices(ownedIdentity: ObvCryptoIdentity, identityDelegate: ObvIdentityDelegate, within obvContext: ObvContext) throws -> [ObvObliviousChannel] { + + guard try identityDelegate.isOwned(ownedIdentity, within: obvContext) else { + throw ObvObliviousChannel.makeError(message: "Identity is not owned") + } + let remoteDeviceUids = try identityDelegate.getDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + let acceptableChannelsWithOtherOwnedDevices = try ObvObliviousChannel.getAcceptableObliviousChannels(from: ownedIdentity, + to: ownedIdentity, + remoteDeviceUids: Array(remoteDeviceUids), + necessarilyConfirmed: true, + within: obvContext) + + return acceptableChannelsWithOtherOwnedDevices + + } private static func getAcceptableObliviousChannels(from ownedIdentity: ObvCryptoIdentity, to remoteCryptoIdentity: ObvCryptoIdentity, remoteDeviceUids: [UID], necessarilyConfirmed: Bool, within obvContext: ObvContext) throws -> [ObvObliviousChannel] { diff --git a/Engine/ObvChannelManager/ObvChannelManager/Internal Delegates/NetworkReceivedMessageDecryptorDelegate.swift b/Engine/ObvChannelManager/ObvChannelManager/Internal Delegates/NetworkReceivedMessageDecryptorDelegate.swift index 2a4f8436..7181de65 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/Internal Delegates/NetworkReceivedMessageDecryptorDelegate.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/Internal Delegates/NetworkReceivedMessageDecryptorDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,6 @@ import ObvTypes import OlvidUtils protocol NetworkReceivedMessageDecryptorDelegate { - func decryptAndProcess(_ receivedMessage: ObvNetworkReceivedMessageEncrypted, within obvContext: ObvContext) throws + func decryptAndProcessNetworkReceivedMessageEncrypted(_ receivedMessage: ObvNetworkReceivedMessageEncrypted, within obvContext: ObvContext) throws func decrypt(_ receivedMessage: ObvNetworkReceivedMessageEncrypted, within obvContext: ObvContext) throws -> ReceivedApplicationMessage } diff --git a/Engine/ObvChannelManager/ObvChannelManager/Internal Delegates/ObliviousChannelLifeDelegate.swift b/Engine/ObvChannelManager/ObvChannelManager/Internal Delegates/ObliviousChannelLifeDelegate.swift index dfc87a49..3f2d6ff5 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/Internal Delegates/ObliviousChannelLifeDelegate.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/Internal Delegates/ObliviousChannelLifeDelegate.swift @@ -43,6 +43,8 @@ protocol ObliviousChannelLifeDelegate { func anObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity: ObvCryptoIdentity, withRemoteDeviceUid: UID, within: ObvContext) throws -> Bool + func anObliviousChannelExistsBetweenCurrentDeviceUid(_ currentDeviceUid: UID, andRemoteDeviceUid remoteDeviceUid: UID, of remoteIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool + func aConfirmedObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity: ObvCryptoIdentity, withRemoteDeviceUid: UID, within: ObvContext) throws -> Bool func aConfirmedObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity: ObvCryptoIdentity, within: ObvContext) throws -> Bool diff --git a/Engine/ObvChannelManager/ObvChannelManager/MessageTypes/ObvChannelReceivedMessage.swift b/Engine/ObvChannelManager/ObvChannelManager/MessageTypes/ObvChannelReceivedMessage.swift index 0a109e3e..a6f3c011 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/MessageTypes/ObvChannelReceivedMessage.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/MessageTypes/ObvChannelReceivedMessage.swift @@ -32,7 +32,7 @@ struct ReceivedMessage { let extendedMessagePayload: Data? // Available only when the message was received in a notification. Not available during a "normal" reception as the extended payload is downloaded asynchronously private let message: ObvNetworkReceivedMessageEncrypted - var messageId: MessageIdentifier { return message.messageId } + var messageId: ObvMessageIdentifier { return message.messageId } var knownAttachmentCount: Int? { return message.knownAttachmentCount } var messageUploadTimestampFromServer: Date { return message.messageUploadTimestampFromServer } @@ -92,7 +92,7 @@ struct ReceivedApplicationMessage { let messagePayload: Data let attachmentsInfos: [ObvNetworkFetchAttachmentInfos] - var messageId: MessageIdentifier { return message.messageId } + var messageId: ObvMessageIdentifier { return message.messageId } var extendedMessagePayloadKey: AuthenticatedEncryptionKey? { message.extendedMessagePayloadKey } var extendedMessagePayload: Data? { message.extendedMessagePayload } diff --git a/Engine/ObvChannelManager/ObvChannelManager/MessageTypes/ObvNetworkReceivedMessageDecrypted+Extension.swift b/Engine/ObvChannelManager/ObvChannelManager/MessageTypes/ObvNetworkReceivedMessageDecrypted+Extension.swift index 4d6c9ba9..4f8cb850 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/MessageTypes/ObvNetworkReceivedMessageDecrypted+Extension.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/MessageTypes/ObvNetworkReceivedMessageDecrypted+Extension.swift @@ -18,6 +18,7 @@ */ import Foundation +import ObvTypes import ObvMetaManager @@ -26,7 +27,7 @@ extension ObvNetworkReceivedMessageDecrypted { init(with message: ReceivedApplicationMessage, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date) { let attachmentIds = message.attachmentsInfos.enumerated().map { - AttachmentIdentifier(messageId: message.messageId, attachmentNumber: $0.offset) + ObvAttachmentIdentifier(messageId: message.messageId, attachmentNumber: $0.offset) } self = ObvNetworkReceivedMessageDecrypted(messageId: message.messageId, attachmentIds: attachmentIds, diff --git a/Engine/ObvChannelManager/ObvChannelManager/ObvChannelManagerImplementation.swift b/Engine/ObvChannelManager/ObvChannelManager/ObvChannelManagerImplementation.swift index 83ff8066..65f6e246 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/ObvChannelManagerImplementation.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/ObvChannelManagerImplementation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -193,7 +193,7 @@ extension ObvChannelManagerImplementation { for encryptedMessage in messages { do { - try delegateManager.networkReceivedMessageDecryptorDelegate.decryptAndProcess(encryptedMessage, within: obvContext) + try delegateManager.networkReceivedMessageDecryptorDelegate.decryptAndProcessNetworkReceivedMessageEncrypted(encryptedMessage, within: obvContext) } catch { os_log("Failed to decrypt and process an encrypted message", log: log, type: .fault) assertionFailure() @@ -220,11 +220,11 @@ extension ObvChannelManagerImplementation { // MARK: - ObvChannelDelegate extension ObvChannelManagerImplementation { - + // MARK: Posting a message - public func post(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, within obvContext: ObvContext) throws -> [MessageIdentifier: Set] { + public func postChannelMessage(_ message: ObvChannelMessageToSend, randomizedWith prng: PRNGService, within obvContext: ObvContext) throws -> [ObvMessageIdentifier: Set] { assert(!Thread.isMainThread) os_log("Posting a message within obvContext: %{public}@", log: log, type: .info, obvContext.name) debugPrint("🚨 Posting a message within obvContext: \(obvContext.name)") @@ -238,7 +238,7 @@ extension ObvChannelManagerImplementation { // MARK: Decrypting a message - + // This method only succeeds if the ObvNetworkReceivedMessageEncrypted actually is an Application message. It is typically used when decrypting Application's User Notifications sent through APNS. public func decrypt(_ receivedMessage: ObvNetworkReceivedMessageEncrypted, within flowId: FlowIdentifier) throws -> ObvNetworkReceivedMessageDecrypted { guard let contextCreator = self.contextCreator else { @@ -262,7 +262,7 @@ extension ObvChannelManagerImplementation { downloadTimestampFromServer: receivedMessage.downloadTimestampFromServer, localDownloadTimestamp: receivedMessage.localDownloadTimestamp) } - + // MARK: Oblivious Channels management @@ -271,7 +271,7 @@ extension ObvChannelManagerImplementation { try gateKeeper.waitUntilSlotIsAvailableForObvContext(obvContext) try delegateManager.obliviousChannelLifeDelegate.deleteObliviousChannelBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andTheRemoteDeviceWithUid: remoteDeviceUid, ofRemoteIdentity: remoteIdentity, within: obvContext) } - + public func deleteObliviousChannelBetweenCurentDeviceWithUid(currentDeviceUid: UID, andTheRemoteDeviceWithUid remoteDeviceUid: UID, ofRemoteIdentity remoteIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { os_log("🚗 deleteObliviousChannelBetweenCurentDeviceWithUid", log: log, type: .info) @@ -285,7 +285,7 @@ extension ObvChannelManagerImplementation { try gateKeeper.waitUntilSlotIsAvailableForObvContext(obvContext) try delegateManager.obliviousChannelLifeDelegate.deleteAllObliviousChannelsBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andTheDevicesOfContactIdentity: contactIdentity, within: obvContext) } - + public func createObliviousChannelBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity remoteCryptoIdentity: ObvCryptoIdentity, withRemoteDeviceUid remoteDeviceUid: UID, with seed: Seed, cryptoSuiteVersion: Int, within obvContext: ObvContext) throws { try gateKeeper.waitUntilSlotIsAvailableForObvContext(obvContext) @@ -315,7 +315,7 @@ extension ObvChannelManagerImplementation { try gateKeeper.waitUntilSlotIsAvailableForObvContext(obvContext) return try delegateManager.obliviousChannelLifeDelegate.aConfirmedObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andRemoteIdentity: remoteIdentity, withRemoteDeviceUid: remoteDeviceUid, within: obvContext) } - + public func anObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity remoteIdentity: ObvCryptoIdentity, withRemoteDeviceUid remoteDeviceUid: UID, within obvContext: ObvContext) throws -> Bool { try gateKeeper.waitUntilSlotIsAvailableForObvContext(obvContext) @@ -323,6 +323,12 @@ extension ObvChannelManagerImplementation { } + public func anObliviousChannelExistsBetweenCurrentDeviceUid(_ currentDeviceUid: UID, andRemoteDeviceUid remoteDeviceUid: UID, of remoteIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { + try gateKeeper.waitUntilSlotIsAvailableForObvContext(obvContext) + return try delegateManager.obliviousChannelLifeDelegate.anObliviousChannelExistsBetweenCurrentDeviceUid(currentDeviceUid, andRemoteDeviceUid: remoteDeviceUid, of: remoteIdentity, within: obvContext) + } + + public func aConfirmedObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity remoteIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { try gateKeeper.waitUntilSlotIsAvailableForObvContext(obvContext) return try delegateManager.obliviousChannelLifeDelegate.aConfirmedObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andRemoteIdentity: remoteIdentity, within: obvContext) diff --git a/Engine/ObvChannelManager/ObvChannelManager/ObvChannelMessageToSendWrapper.swift b/Engine/ObvChannelManager/ObvChannelManager/ObvChannelMessageToSendWrapper.swift index 55ee27db..815d5be1 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/ObvChannelMessageToSendWrapper.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/ObvChannelMessageToSendWrapper.swift @@ -107,7 +107,7 @@ struct ObvChannelProtocolMessageToSendWrapper: ObvChannelMessageToSendWrapper { let messagesToSend: [ObvNetworkMessageToSend] = headersForServer.map { (serverURL, headersForThisServer) in let uid = UID.gen(with: prng) let ownedCryptoIdentity = self.protocolMessage.channelType.fromOwnedIdentity - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedCryptoIdentity, uid: uid) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedCryptoIdentity, uid: uid) return ObvNetworkMessageToSend(messageId: messageId, encryptedContent: encryptedContent.encryptedMessagePayload, encryptedExtendedMessagePayload: encryptedContent.encryptedExtendedMessagePayload, @@ -193,7 +193,7 @@ struct ObvChannelApplicationMessageToSendWrapper: ObvChannelMessageToSendWrapper let messagesToSend: [ObvNetworkMessageToSend] = headersForServer.map { (serverURL, headersForThisServer) in let uid = UID.gen(with: prng) let ownedCryptoIdentity = self.applicationMessage.channelType.fromOwnedIdentity - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedCryptoIdentity, uid: uid) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedCryptoIdentity, uid: uid) return ObvNetworkMessageToSend(messageId: messageId, encryptedContent: encryptedContent.encryptedMessagePayload, encryptedExtendedMessagePayload: encryptedContent.encryptedExtendedMessagePayload, diff --git a/Engine/ObvChannelManager/ObvChannelManager/ObvChannelSendChannelTypeExtension.swift b/Engine/ObvChannelManager/ObvChannelManager/ObvChannelSendChannelTypeExtension.swift index 20dc2c98..96d835c6 100644 --- a/Engine/ObvChannelManager/ObvChannelManager/ObvChannelSendChannelTypeExtension.swift +++ b/Engine/ObvChannelManager/ObvChannelManager/ObvChannelSendChannelTypeExtension.swift @@ -27,6 +27,7 @@ extension ObvChannelSendChannelType { switch self { case .AllConfirmedObliviousChannelsWithContactIdentities, .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity, + .AllConfirmedObliviousChannelsWithContactIdentitiesAndWithOtherDevicesOfOwnedIdentity, .ObliviousChannel: return ObvObliviousChannel.self case .AsymmetricChannel, diff --git a/Engine/ObvCrypto/ObvCrypto/ObvCryptoIdentity.swift b/Engine/ObvCrypto/ObvCrypto/ObvCryptoIdentity.swift index 53e99882..f948f789 100644 --- a/Engine/ObvCrypto/ObvCrypto/ObvCryptoIdentity.swift +++ b/Engine/ObvCrypto/ObvCrypto/ObvCryptoIdentity.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -98,23 +98,10 @@ extension ObvCryptoIdentity { } -/// Creating an UID describing an identity, computed from the public keys. This UID should not be used -/// as a long term identifier. It is typically used as an UID in operations. -extension ObvCryptoIdentity { - public var transientUid: UID { - var hash = ObvCryptoSuite.sharedInstance.hashFunction() - if hash.outputLength < UID.length { - hash = SHA256.self - } - var dataFromKeys = Data() - dataFromKeys.append(publicKeyForAuthentication.getCompactKey()) - dataFromKeys.append(publicKeyForPublicKeyEncryption.getCompactKey()) - let hashedKeys = hash.hash(dataFromKeys) - return UID(uid: hashedKeys[hashedKeys.startIndex.. Bool { guard lhs.publicKeyForAuthentication.isEqualTo(other: rhs.publicKeyForAuthentication) else { return false } @@ -133,7 +120,9 @@ extension ObvCryptoIdentity { } } -// Implementing NSCopying (this solves a bug we encoutered while using `ObvCryptoIdentity`s with Core Data) +// MARK: Implementing NSCopying + +/// This solves a bug we encoutered while using `ObvCryptoIdentity`s with Core Data extension ObvCryptoIdentity { public func copy(with zone: NSZone? = nil) -> Any { return ObvCryptoIdentity(serverURL: serverURL, diff --git a/Engine/ObvCrypto/ObvCrypto/ObvCryptoSuite.swift b/Engine/ObvCrypto/ObvCrypto/ObvCryptoSuite.swift index 951bb236..9c060b9f 100644 --- a/Engine/ObvCrypto/ObvCrypto/ObvCryptoSuite.swift +++ b/Engine/ObvCrypto/ObvCrypto/ObvCryptoSuite.swift @@ -33,7 +33,6 @@ public class ObvCryptoSuite { private let prngServices: [SuiteVersion: PRNGService.Type] private let authenticatedEncryptionPrimitives: [SuiteVersion: AuthenticatedEncryptionConcrete.Type] private let kdfPrimitives: [SuiteVersion: KDF.Type] - private let proofOfWorkEngines: [SuiteVersion: ProofOfWorkEngine.Type] private let authentications: [SuiteVersion: AuthenticationConcrete.Type] private let hashFunctions: [SuiteVersion: HashFunction.Type] private let commitmentSchemes: [SuiteVersion: Commitment.Type] @@ -49,7 +48,6 @@ public class ObvCryptoSuite { prngServices = [0: PRNGServiceWithHMACWithSHA256.self] authenticatedEncryptionPrimitives = [0: AuthenticatedEncryptionWithAES256CTRThenHMACWithSHA256.self] kdfPrimitives = [0: KDFFromPRNGWithHMACWithSHA256.self] - proofOfWorkEngines = [0: ProofOfWorkEngineSyndromeBased.self] authentications = [0: AuthenticationFromSignatureOnMDC.self] hashFunctions = [0: SHA256.self] commitmentSchemes = [0: CommitmentWithSHA256.self] @@ -98,16 +96,6 @@ public class ObvCryptoSuite { return kdf(forSuiteVersion: latestVersion)! } - // Proof of Work - - func proofOfWorkEngine(forSuiteVersion version: SuiteVersion) -> ProofOfWorkEngine.Type? { - return proofOfWorkEngines[version] - } - - public func proofOfWorkEngine() -> ProofOfWorkEngine.Type { - return proofOfWorkEngine(forSuiteVersion: latestVersion)! - } - // Authentication func authentication(forSuiteVersion version: SuiteVersion) -> AuthenticationConcrete.Type? { diff --git a/Engine/ObvCrypto/ObvCrypto/ObvOwnedCryptoIdentity.swift b/Engine/ObvCrypto/ObvCrypto/ObvOwnedCryptoIdentity.swift index 2274552c..d98ecaff 100644 --- a/Engine/ObvCrypto/ObvCrypto/ObvOwnedCryptoIdentity.swift +++ b/Engine/ObvCrypto/ObvCrypto/ObvOwnedCryptoIdentity.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -59,22 +59,16 @@ public final class ObvOwnedCryptoIdentity: NSObject, NSCopying { } } -// MARK: Create an ObvIdentity from an ObvOwnedCryptoIdentity +// MARK: Create an ObvCryptoIdentity from an ObvOwnedCryptoIdentity extension ObvOwnedCryptoIdentity { public func getObvCryptoIdentity() -> ObvCryptoIdentity { return ObvCryptoIdentity(serverURL: serverURL, publicKeyForAuthentication: publicKeyForAuthentication, publicKeyForPublicKeyEncryption: publicKeyForPublicKeyEncryption) } } -// MARK: Leverage ObvIdentity to create a UID describing an identity, computed from the public keys. This UID should not be used -/// as a long term identifier. It is typically used as an UID in operations. -extension ObvOwnedCryptoIdentity { - public var transientUid: UID { - return getObvCryptoIdentity().transientUid - } -} +// MARK: Implementing Equatable -// Implementing Equatable (replacing the NSObject default implementation) +/// Replacing the NSObject default implementation extension ObvOwnedCryptoIdentity { static func == (lhs: ObvOwnedCryptoIdentity, rhs: ObvOwnedCryptoIdentity) -> Bool { guard lhs.publicKeyForAuthentication.isEqualTo(other: rhs.publicKeyForAuthentication) else { return false } @@ -95,7 +89,9 @@ extension ObvOwnedCryptoIdentity { } } -// Implementing NSCopying (this solves a bug we encoutered while using `ObvCryptoIdentity`s with Core Data) +// MARK: Implementing NSCopying + +/// This solves a bug we encoutered while using `ObvCryptoIdentity`s with Core Data extension ObvOwnedCryptoIdentity { public func copy(with zone: NSZone? = nil) -> Any { return ObvOwnedCryptoIdentity(serverURL: serverURL, @@ -235,3 +231,19 @@ public struct ObvOwnedCryptoIdentityPrivateBackupItem: Codable, Hashable { } + + +extension ObvOwnedCryptoIdentity { + + public var snapshotItem: ObvOwnedCryptoIdentityPrivateSnapshotItem { + return ObvOwnedCryptoIdentityPrivateSnapshotItem(obvOwnedCryptoIdentity: self) + } + +} + + +/// For now, there is no difference between a `ObvOwnedCryptoIdentityPrivateSnapshotItem` and a `ObvOwnedCryptoIdentityPrivateBackupItem`. +/// If, in the future, we decide to modify a `ObvOwnedCryptoIdentityPrivateSnapshotItem`, we should *not* modify the `ObvOwnedCryptoIdentityPrivateBackupItem` struct. +/// Instead, we should copy/paste the `ObvOwnedCryptoIdentityPrivateBackupItem` implementation to define `ObvOwnedCryptoIdentityPrivateSnapshotItem` and update +/// the pasted code. +public typealias ObvOwnedCryptoIdentityPrivateSnapshotItem = ObvOwnedCryptoIdentityPrivateBackupItem diff --git a/Engine/ObvCrypto/ObvCrypto/PRNG/BackupSeed.swift b/Engine/ObvCrypto/ObvCrypto/PRNG/BackupSeed.swift index 54507c1e..5f144887 100644 --- a/Engine/ObvCrypto/ObvCrypto/PRNG/BackupSeed.swift +++ b/Engine/ObvCrypto/ObvCrypto/PRNG/BackupSeed.swift @@ -168,7 +168,7 @@ public struct BackupSeed: LosslessStringConvertible, CustomStringConvertible, Eq public struct DerivedKeysForBackup: Equatable { // Warning: Adding a local var requires updating the method required in order to implement Equatable - public let backupKeyUid: UID + public let backupKeyUid: UID // Not used for testing equality (due to a bug in the Android version of the app) public let publicKeyForEncryption: PublicKeyForPublicKeyEncryption public let privateKeyForEncryption: PrivateKeyForPublicKeyEncryption? public let macKey: MACKey @@ -195,7 +195,7 @@ public struct DerivedKeysForBackup: Equatable { } public static func == (lhs: DerivedKeysForBackup, rhs: DerivedKeysForBackup) -> Bool { - guard lhs.backupKeyUid == rhs.backupKeyUid else { return false } + // We do *not* test the equality of the backupKeyUid (due to a bug in the Android version of the app) guard lhs.publicKeyForEncryption.getCompactKey() == rhs.publicKeyForEncryption.getCompactKey() else { return false } guard lhs.macKey.data == rhs.macKey.data else { return false } return true diff --git a/Engine/ObvCrypto/ObvCrypto/ProofOfWork/ProofOfWorkColumn.swift b/Engine/ObvCrypto/ObvCrypto/ProofOfWork/ProofOfWorkColumn.swift deleted file mode 100644 index e240735d..00000000 --- a/Engine/ObvCrypto/ObvCrypto/ProofOfWork/ProofOfWorkColumn.swift +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import ObvEncoder - -struct Column { - - let indexes: [Int] // List of the matrix indexes used to compute this column - let val: [UInt64] - - init?(indexes: [Int], val: [UInt64]) { - guard val.count == ProofOfWorkEngineSyndromeBasedConstants.numberOfUInt64PerColumn else { return nil } - self.indexes = indexes - self.val = val - } - - init?(indexes: [Int], bytes: Data) { - guard bytes.count == ProofOfWorkEngineSyndromeBasedConstants.numberOfBytesPerColumn else { return nil } - self.indexes = indexes - var val = [UInt64]() - // By stride, 8 bytes at a time (i.e., 64 bits at a time) - for i in stride(from: bytes.startIndex, to: bytes.endIndex, by: 8) { - var valElement = UInt64(0) - for j in 0..<8 { - valElement ^= UInt64(bytes[i+j]) << (j*8) - } - val.append(valElement) - } - self.val = val - } - - func xor(_ other: Column) -> Column { - var xorVal = [UInt64].init(repeating: 0, count: ProofOfWorkEngineSyndromeBasedConstants.numberOfUInt64PerColumn) - for i in 0.. Bool { - return lhs.val == rhs.val - } - -} diff --git a/Engine/ObvCrypto/ObvCrypto/ProofOfWork/ProofOfWorkEngine.swift b/Engine/ObvCrypto/ObvCrypto/ProofOfWork/ProofOfWorkEngine.swift deleted file mode 100644 index a0659dd3..00000000 --- a/Engine/ObvCrypto/ObvCrypto/ProofOfWork/ProofOfWorkEngine.swift +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import ObvEncoder -import BigInt - -public protocol ProofOfWorkEngine { - static func solve(_: ObvEncoded) -> ObvEncoded? -} - -struct ProofOfWorkEngineSyndromeBasedConstants { - static let numberOfLines = 128 // Must be a multiple of 64 - static let numberOfColumns = 256 - - static var numberOfUInt64PerColumn: Int { - return numberOfLines / 64 - } - - static var numberOfBytesPerColumn: Int { - return numberOfLines / 8 - } - - static var numberOfBytesPerMatrix: Int { - return numberOfLines*numberOfColumns / 8 - } -} - -final class ProofOfWorkEngineSyndromeBased: ProofOfWorkEngine { - - static func solve(_ challenge: ObvEncoded) -> ObvEncoded? { - guard let (H, S) = decode(challenge) else { return nil } - var (setHalf, setHalfS) = computeAllPairwiseColumnsXor(of: H, alsoXoring: S) - // Removes from setHalf the columns (of this set) that aren’t also in setHalfS - setHalf.formIntersection(setHalfS) - // At this point, each column in setHalf contains two indices that are part of a solution made of 4 indices. - // We consider a arbitrary column of setHalf, and look for a column with identical value in setHalfS. - // Once found, we will deduce the 4 indices (i.e., the final solution). - guard let columnFromSetHalf = setHalf.first else { return nil } - let columnFromSetHalfS = setHalfS[setHalfS.firstIndex(of: columnFromSetHalf)!] - let indexes = (columnFromSetHalf.indexes + columnFromSetHalfS.indexes).sorted() - return encode(indexes) - } - - private static func computeAllPairwiseColumnsXor(of H: Matrix, alsoXoring S: Column) -> (Set, Set) { - let expectedNumberOfColumns = H.columns.count * (H.columns.count+1) / 2 - var pairwiseColumnXors = Set.init(minimumCapacity: expectedNumberOfColumns) - var pairwiseColumnXorsWithS = Set.init(minimumCapacity: expectedNumberOfColumns) - for i in 1.. (H: Matrix, S: Column)? { - guard let listOfEncodedElements = [ObvEncoded](challenge) else { return nil } - guard listOfEncodedElements.count == 2 else { return nil } - // Decode H - guard let seed = Seed(listOfEncodedElements[0]) else { return nil } - guard let H = Matrix(from: seed) else { return nil } - // Decode S - guard let bytesForColumnS = Data(listOfEncodedElements[1]) else { return nil } - guard let S = Column.init(indexes: [Int](), bytes: bytesForColumnS) else { return nil } - // Return - return (H, S) - } - - private static func encode(_ indexes: [Int]) -> ObvEncoded? { - let listOfEncodedIndexes = indexes.map() { $0.obvEncode() } - return listOfEncodedIndexes.obvEncode() - } - -} diff --git a/Engine/ObvCrypto/ObvCrypto/ProofOfWork/ProofOfWorkMatrix.swift b/Engine/ObvCrypto/ObvCrypto/ProofOfWork/ProofOfWorkMatrix.swift deleted file mode 100644 index 15bdb686..00000000 --- a/Engine/ObvCrypto/ObvCrypto/ProofOfWork/ProofOfWorkMatrix.swift +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation - -struct Matrix { - - let columns: [Column] - - init?(from seed: Seed) { - let PRNGType = ObvCryptoSuite.sharedInstance.concretePRNG() - let prng = PRNGType.init(with: seed) - let bytes = prng.genBytes(count: ProofOfWorkEngineSyndromeBasedConstants.numberOfBytesPerMatrix) - var columns = [Column].init() - var columnIndex = 0 - for i in stride(from: bytes.startIndex, to: bytes.endIndex, by: ProofOfWorkEngineSyndromeBasedConstants.numberOfBytesPerColumn) { - let localBytes = bytes[i.. PrivateKeyForPublicKeyEncryption { + guard let key = Self.obvDecode(encodedKey) else { assertionFailure(); throw ObvError.decodingFailed} + return key + } + enum ObvError: Error { + case decodingFailed + } } struct PrivateKeyForPublicKeyEncryptionOnEdwardsCurve: PrivateKeyForPublicKeyEncryption, PrivateKeyFromEdwardsCurveScalar { diff --git a/Engine/ObvCrypto/ObvCrypto/PublicKeyPrimitives/ServerAuthentication/PrivateKeyForAuthentication.swift b/Engine/ObvCrypto/ObvCrypto/PublicKeyPrimitives/ServerAuthentication/PrivateKeyForAuthentication.swift index 10206e07..1690926c 100644 --- a/Engine/ObvCrypto/ObvCrypto/PublicKeyPrimitives/ServerAuthentication/PrivateKeyForAuthentication.swift +++ b/Engine/ObvCrypto/ObvCrypto/PublicKeyPrimitives/ServerAuthentication/PrivateKeyForAuthentication.swift @@ -47,6 +47,13 @@ public final class PrivateKeyForAuthenticationDecoder: ObvDecoder { return PrivateKeyForAuthenticationFromSignatureOnEdwardsCurve(obvDictionary: obvDic, curveByteId: .Curve25519ByteId) } } + public static func obvDecodeOrThrow(_ encodedKey: ObvEncoded) throws -> PrivateKeyForAuthentication { + guard let key = Self.obvDecode(encodedKey) else { assertionFailure(); throw ObvError.decodingFailed} + return key + } + enum ObvError: Error { + case decodingFailed + } } struct PrivateKeyForAuthenticationFromSignatureOnEdwardsCurve: PrivateKeyForAuthentication, PrivateKeyFromEdwardsCurveScalar { diff --git a/Engine/ObvCrypto/ObvCrypto/SymmetricPrimitives/Hash.swift b/Engine/ObvCrypto/ObvCrypto/SymmetricPrimitives/Hash.swift index 192f2fd1..e1bea493 100644 --- a/Engine/ObvCrypto/ObvCrypto/SymmetricPrimitives/Hash.swift +++ b/Engine/ObvCrypto/ObvCrypto/SymmetricPrimitives/Hash.swift @@ -59,6 +59,10 @@ extension HashFunction where Self: HashFunctionBasedOnCommonCrypto { static func hash(fileAtUrl url: URL) throws -> Data { + guard FileManager.default.fileExists(atPath: url.path) else { + throw Self.makeError(message: "Hash computation failed as there is no file at the specified URL") + } + let hashFunction = Self() guard let fileStream = InputStream(fileAtPath: url.path) else { diff --git a/Engine/ObvCrypto/ObvCrypto/SymmetricPrimitives/MAC/MACKey.swift b/Engine/ObvCrypto/ObvCrypto/SymmetricPrimitives/MAC/MACKey.swift index 4266a7a9..32b658de 100644 --- a/Engine/ObvCrypto/ObvCrypto/SymmetricPrimitives/MAC/MACKey.swift +++ b/Engine/ObvCrypto/ObvCrypto/SymmetricPrimitives/MAC/MACKey.swift @@ -47,6 +47,13 @@ public final class MACKeyDecoder { return HMACWithSHA256Key(obvDictionaryOfInternalElements: obvDic) } } + public static func obvDecodeOrThrow(_ encodedKey: ObvEncoded) throws -> MACKey { + guard let key = Self.decode(encodedKey) else { assertionFailure(); throw ObvError.decodingFailed} + return key + } + enum ObvError: Error { + case decodingFailed + } } struct HMACWithSHA256Key: MACKey, Equatable { diff --git a/Engine/ObvCrypto/ObvCrypto/UID.swift b/Engine/ObvCrypto/ObvCrypto/UID.swift index 8fc7d1f2..254066f5 100644 --- a/Engine/ObvCrypto/ObvCrypto/UID.swift +++ b/Engine/ObvCrypto/ObvCrypto/UID.swift @@ -57,6 +57,17 @@ public final class UID: NSObject, NSCopying, Comparable { } +// Deterministic UUID from an UID. Should *NOT* be used for long term storage as this implementation might change anytime + +extension UID { + + public var deterministicUUID: UUID { + let bytes = [UInt8](raw) + return .init(uuid: (bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5], bytes[6], bytes[7], bytes[8], bytes[9], bytes[10], bytes[11], bytes[12], bytes[13], bytes[14], bytes[15])) + } + +} + // Implementing Comparable extension UID { diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/DataMigrationManagerForObvEngine.swift b/Engine/ObvDatabaseManager/ObvDatabaseManager/DataMigrationManagerForObvEngine.swift index daaa4a6e..2c502807 100644 --- a/Engine/ObvDatabaseManager/ObvDatabaseManager/DataMigrationManagerForObvEngine.swift +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/DataMigrationManagerForObvEngine.swift @@ -84,9 +84,11 @@ final class DataMigrationManagerForObvEngine: DataMigrationManager URL { - let sha256 = ObvCryptoSuite.sharedInstance.hashFunctionSha256() - let directoryName = sha256.hash(messageId.rawValue).hexString() + private static func getAttachmentDirectory(withinInbox inbox: URL, messageId: ObvMessageIdentifier) -> URL { + let directoryName = messageId.directoryNameForMessageAttachments return inbox.appendingPathComponent(directoryName, isDirectory: true) } - private static func getAttachmentURL(withinInbox inbox: URL, attachmentId: AttachmentIdentifier) -> URL { + private static func getAttachmentURL(withinInbox inbox: URL, attachmentId: ObvAttachmentIdentifier) -> URL { let attachmentFileName = "\(attachmentId.attachmentNumber)" let url = InboxAttachmentToInboxAttachmentMigrationPolicyV24ToV25.getAttachmentDirectory(withinInbox: inbox, messageId: attachmentId.messageId).appendingPathComponent(attachmentFileName) return url } - private static func createAttachmentsDirectoryIfRequired(withinInbox inbox: URL, messageId: MessageIdentifier) throws { + private static func createAttachmentsDirectoryIfRequired(withinInbox inbox: URL, messageId: ObvMessageIdentifier) throws { let attachmentsDirectory = getAttachmentDirectory(withinInbox: inbox, messageId: messageId) guard !FileManager.default.fileExists(atPath: attachmentsDirectory.path) else { return } try FileManager.default.createDirectory(at: attachmentsDirectory, withIntermediateDirectories: false) } - private func createEmptyFileForWritingChunks(withinInbox inbox: URL, cleartextLength: Int, attachmentId: AttachmentIdentifier) throws { + private func createEmptyFileForWritingChunks(withinInbox inbox: URL, cleartextLength: Int, attachmentId: ObvAttachmentIdentifier) throws { let url = InboxAttachmentToInboxAttachmentMigrationPolicyV24ToV25.getAttachmentURL(withinInbox: inbox, attachmentId: attachmentId) diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationEngineDatabase_v48_to_v49.md b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationEngineDatabase_v48_to_v49.md new file mode 100644 index 00000000..918aad78 --- /dev/null +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationEngineDatabase_v48_to_v49.md @@ -0,0 +1,56 @@ +# Engine database migration from v48 to v49 + + +## ChannelCreationWithOwnedDeviceProtocolInstance - New entity + +This does not prevent lightweight migration. + + +## ContactIdentity - Modified entity + +- ++ ++ + +👉 This requires a heavyweight migration to transform the old cryptoIdentity attribute into the rawIdentity attribute. +The rawDateOfLastBootstrappedContactDeviceDiscovery is optional and requires no work. + + +## OwnedIdentity - Modified entity + +- + +👉 If set, this attribute should be copied into the ownAPIKey attribute of the associated KeycloakServer, if any. + + +## KeycloakServer - Modified entity + ++ + +👉 Although the attribute is optional, we should set it with the value found in the associated owned identity, from the (deleted) apiKey attribute. + + +## OwnedDevice - Modified entity + ++ ++ ++ + +All attributes are optional and do not prevent lightweight migration. + + +## ProtocolInstance - Modified entity + ++ + +Nothing to do here. + + +## ServerPushNotification - Deleted entity + +Nothing to do here. We drop the entries, they are now kept in memory. + + +## ServerSession - Modified entity + +We can simply drop all entries. diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationEngineDatabase_v48_to_v49.xcmappingmodel/xcmapping.xml b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationEngineDatabase_v48_to_v49.xcmappingmodel/xcmapping.xml new file mode 100644 index 00000000..108b0480 --- /dev/null +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationEngineDatabase_v48_to_v49.xcmappingmodel/xcmapping.xml @@ -0,0 +1,2139 @@ + + + + + + 134481920 + 1B4ECD1F-3D05-477B-824E-446938183FC2 + 519 + + + + NSPersistenceFrameworkVersion + 1251 + NSStoreModelVersionHashes + + XDDevAttributeMapping + + 0plcXXRN7XHKl5CcF+fwriFmUpON3ZtcI/AfK748aWc= + + XDDevEntityMapping + + qeN1Ym3TkWN1G6dU9RfX6Kd2ccEvcDVWHpd3LpLgboI= + + XDDevMappingModel + + EqtMzvRnVZWkXwBHu4VeVGy8UyoOe+bi67KC79kphlQ= + + XDDevPropertyMapping + + XN33V44TTGY4JETlMoOB5yyTKxB+u4slvDIinv0rtGA= + + XDDevRelationshipMapping + + akYY9LhehVA/mCb4ATLWuI9XGLcjpm14wWL1oEBtIcs= + + + NSStoreModelVersionHashesDigest + +Hmc2uYZK6og+Pvx5GUJ7oW75UG4V/ksQanTjfTKUnxyGWJRMtB5tIRgVwGsrd7lz/QR57++wbvWsr6nxwyS0A== + NSStoreModelVersionHashesVersion + 3 + NSStoreModelVersionIdentifiers + + + + + + + + + OutboxMessage + Undefined + 32 + OutboxMessage + 1 + + + + + + rawBackupKeyUid + + + + isActive + + + + expirationDate + + + + ownedCryptoIdentity + + + + 1 + provision + + + + rawAcknowledgerAppType + + + + 1 + publishedDetails + + + + latestGroupUpdateTimestamp + + + + extendedMessagePayload + + + + 1 + backups + + + + ContactOwnedIdentityDeletionSignatureReceived + Undefined + 18 + ContactOwnedIdentityDeletionSignatureReceived + 1 + + + + + + ContactGroupDetailsLatest + Undefined + 4 + ContactGroupDetailsLatest + 1 + + + + + + rawOwnedIdentity + + + + version + + + + 1 + trustedIdentityDetails + + + + 1 + contactIdentity + + + + 1 + obliviousChannel + + + + rawGroupUID + + + + wellKnownData + + + + 1 + ownedIdentity + + + + rawPhotoServerLabel + + + + 1 + attachment + + + + GroupV2ServerUserData + Undefined + 3 + GroupV2ServerUserData + 1 + + + + + + Provision + Undefined + 36 + Provision + 1 + + + + + + currentStateRawId + + + + isAppMessageWithUserContent + + + + photoFilename + + + + remoteCryptoIdentity + + + + expectedChunkLength + + + + rawMessageIdUid + + + + contactDeviceUid + + + + 1 + revokedIdentities + + + + fileURL + + + + token + + + + ObvObliviousChannel + Undefined + 35 + ObvObliviousChannel + 1 + + + + + + ContactGroupV2 + Undefined + 21 + ContactGroupV2 + 1 + + + + + + statusChangeTimestamp + + + + 1 + trustedDetails + + + + isDeletionInProgress + + + + latestRegistrationDate + + + + isCertifiedByOwnKeycloak + + + + 1 + protocolInstance + + + + rawMessageIdOwnedIdentity + + + + latestRevocationListTimetamp + + + + 1 + rawPendingMembers + + + + fromCryptoIdentity + + + + ContactGroupDetailsTrusted + Undefined + 6 + ContactGroupDetailsTrusted + 1 + + + + + + photoFilename + + + + 1 + contactGroup + + + + photoFilename + + + + 1 + unsortedAttachments + + + + groupMembersVersion + + + + childProtocolInstanceUid + + + + ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v48.xcdatamodel + YnBsaXN0MDDUAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAApYJHZlcnNpb25ZJGFyY2hp +dmVyVCR0b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEAAAAIAAAACVRyb290gAGvESV6AAAACwAAAAwAAAAbAAAANwAAADgAAAA5AAAAtQAAALYAAAC3AAAAuAAAALkAAAC6AAAAuwAAALwAAAC9AAAAvgAAAL8AAADAAAAAwQAAAMIAAADDAAAAxAAAAMUAAADGAAAAxwAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAADPAAAA0AAAANEAAADSAAAA0wAAANQAAADVAAAA1gAAANcAAADYAAAA2QAAANoAAADbAAAA3AAAAN0AAADeAAAA3wAAAOAAAADhAAAA4gAAAOMAAADkAAAA5QAAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAO8AAADwAAABCwAAAQwAAAENAAABEwAAARQAAAEgAAABNgAAATcAAAE4AAABOQAAAToAAAE7AAABPAAAAT0AAAE+AAABPwAAAVgAAAFbAAABYgAAAWgAAAF3AAABhgAAAYoAAAGQAAABkQAAAZIAAAGTAAABogAAAbEAAAG0AAABCgAAAcQAAAHTAAAB1wAAAdsAAAHqAAAB8AAAAfEAAAH5AAACCAAAAgkAAAISAAACNAAAAjUAAAI2AAACNwAAAjgAAAI5AAACOgAAAjsAAAI8AAACPQAAAj4AAAI/AAACQAAAAkEAAAJCAAACQwAAAlgAAAJZAAACYQAAAmIAAAJjAAACbwAAAoMAAAKEAAAChQAAAoYAAAKHAAACiAAAAokAAAKKAAACiwAAApoAAAKpAAACuAAAArwAAALLAAAC2gAAAukAAAL4AAADBwAAAxMAAAMlAAADJgAAAycAAAMoAAADKQAAAyoAAAMrAAADLAAAAzsAAANKAAADWQAAA2gAAANpAAADeAAAA4cAAAOIAAADlwAAA58AAAO0AAADtQAAA70AAAPJAAAD3QAAA+wAAAP7AAAECgAABA4AAAQdAAAELAAABC0AAAQ8AAAESwAABFoAAARmAAAEeAAABIcAAASWAAAEpQAABLQAAATDAAAE0gAABNMAAATiAAAE9wAABPgAAAUAAAAFDAAABSAAAAUvAAAFPgAABU0AAAVRAAAFYAAABW8AAAV+AAAFjQAABZwAAAWoAAAFugAABckAAAXKAAAF2QAABegAAAX3AAAF+AAABgcAAAYWAAAGJQAABjoAAAY7AAAGQwAABk8AAAZjAAAGcgAABoEAAAaQAAAGlAAABqMAAAayAAAGwQAABtAAAAbfAAAG6wAABv0AAAcMAAAHGwAAByoAAAc5AAAHSAAAB1cAAAdmAAAHewAAB3wAAAeEAAAHkAAAB6QAAAezAAAHwgAAB9EAAAfVAAAH5AAAB/MAAAgCAAAIEQAACCAAAAgsAAAIPgAACE0AAAhOAAAIXQAACGwAAAh7AAAIfAAACIsAAAiaAAAIqQAACL4AAAi/AAAIxwAACNMAAAjnAAAI9gAACQUAAAkUAAAJGAAACScAAAk2AAAJRQAACVQAAAljAAAJbwAACYEAAAmQAAAJnwAACa4AAAm9AAAJvgAACc0AAAncAAAJ6wAACgAAAAoBAAAKCQAAChUAAAopAAAKOAAACkcAAApWAAAKWgAACmkAAAp4AAAKhwAACpYAAAqlAAAKsQAACsMAAArSAAAK4QAACvAAAAr/AAALDgAACx0AAAseAAALLQAAC0IAAAtDAAALSwAAC1cAAAtrAAALegAAC4kAAAuYAAALnAAAC6sAAAu6AAALyQAAC9gAAAvnAAAL8wAADAUAAAwUAAAMIwAADDIAAAxBAAAMUAAADF8AAAxgAAAMbwAADIQAAAyFAAAMjQAADJkAAAytAAAMvAAADMsAAAzaAAAM3gAADO0AAAz8AAANCwAADRoAAA0pAAANNQAADUcAAA1WAAANZQAADXQAAA2DAAANkgAADaEAAA2wAAANxQAADcYAAA3OAAAN2gAADe4AAA39AAAODAAADhsAAA4fAAAOLgAADj0AAA5MAAAOWwAADmoAAA52AAAOiAAADpcAAA6mAAAOtQAADsQAAA7TAAAO4gAADvEAAA8GAAAPBwAADw8AAA8bAAAPLwAADz4AAA9NAAAPXAAAD2AAAA9vAAAPfgAAD40AAA+cAAAPqwAAD7cAAA/JAAAP2AAAD+cAAA/2AAAQBQAAEBQAABAjAAAQMgAAEEcAABBIAAAQUAAAEFwAABBwAAAQfwAAEI4AABCdAAAQoQAAELAAABC/AAAQzgAAEN0AABDsAAAQ+AAAEQoAABEZAAARKAAAETcAABFGAAARVQAAEWQAABFzAAARiAAAEYkAABGRAAARnQAAEbEAABHAAAARzwAAEd4AABHiAAAR8QAAEgAAABIPAAASHgAAEi0AABI5AAASSwAAEloAABJpAAASeAAAEocAABKWAAASpQAAErQAABLJAAASygAAEtIAABLeAAAS8gAAEwEAABMQAAATHwAAEyMAABMyAAATQQAAE1AAABNfAAATbgAAE3oAABOMAAATmwAAE6oAABO5AAATyAAAE9cAABPmAAAT9QAAFAoAABQLAAAUEwAAFBQAABQgAAAUNAAAFEMAABRSAAAUYQAAFGUAABR0AAAUgwAAFJIAABShAAAUsAAAFLwAABTOAAAUzwAAFNAAABTRAAAU0gAAFNMAABTUAAAU1QAAADEAABTkAAAU8wAAFPQAABUDAAAVEgAAFSwAABUtAAAVMwAAFT8AABVVAAAVZAAAFWcAABV2AAAVhQAAFYgAABWXAAAVpgAAFakAABW4AAAVxwAAFcsAABXaAAAV6QAAFfkAABX6AAAV+wAAFfwAABX9AAAV/gAAFf8AABYUAAAWFQAAFh0AABYpAAAWPQAAFkwAABZbAAAWagAAFm4AABZ9AAAWjAAAFpsAABaqAAAWuQAAFsUAABbXAAAW5gAAFvUAABcEAAAXEwAAFyIAABcxAAAXQAAAF1UAABdWAAAXXgAAF2oAABd+AAAXjQAAF5wAABerAAAXrwAAF74AABfNAAAX3AAAF+sAABf6AAAYBgAAGBgAABgnAAAYNgAAGEUAABhUAAAYYwAAGHIAABhzAAAYggAAGJcAABiYAAAYoAAAGKwAABjAAAAYzwAAGN4AABjtAAAY8QAAGQAAABkPAAAZHgAAGS0AABk8AAAZSAAAGVoAABlpAAAZeAAAGYcAABmWAAAZpQAAGbQAABnDAAAZ2AAAGdkAABnhAAAZ7QAAGgEAABoQAAAaHwAAGi4AABoyAAAaQQAAGlAAABpfAAAabgAAGn0AABqJAAAamwAAGqoAABq5AAAaugAAGskAABrYAAAa5wAAGvYAABsFAAAbDQAAGyIAABsjAAAbKwAAGzcAABtLAAAbWgAAG2kAABt4AAAbfAAAG4sAABuaAAAbqQAAG7gAABvHAAAb0wAAG+UAABv0AAAcAwAAHBIAABwhAAAcOwAAHDwAABxCAAAcTgAAHGQAABxzAAAcdgAAHIUAAByUAAAclwAAHKYAABy1AAAcuAAAHMcAABzWAAAc2gAAHOkAABz4AAAc+QAAHQcAAB0IAAAdCQAAHQoAAB0LAAAdDAAAHSEAAB0iAAAdKgAAHTYAAB1KAAAdWQAAHWgAAB13AAAdewAAHYoAAB2ZAAAdqAAAHbcAAB3GAAAd0gAAHeQAAB3zAAAeAgAAHhEAAB4gAAAeLwAAHj4AAB5NAAAeYgAAHmMAAB5rAAAedwAAHosAAB6aAAAeqQAAHrgAAB68AAAeywAAHtoAAB7pAAAe+AAAHwcAAB8TAAAfJQAAHzQAAB9DAAAfUgAAH2EAAB9iAAAfcQAAH4AAAB+PAAAfpAAAH6UAAB+tAAAfuQAAH80AAB/cAAAf6wAAH/oAAB/+AAAgDQAAIBwAACArAAAgOgAAIEkAACBVAAAgZwAAIHYAACCFAAAglAAAIKMAACCyAAAgwQAAINAAACDlAAAg5gAAIO4AACD6AAAhDgAAIR0AACEsAAAhOwAAIT8AACFOAAAhXQAAIWwAACF7AAAhigAAIZYAACGoAAAhtwAAIcYAACHVAAAh5AAAIfMAACICAAAiEQAAIiYAACInAAAiLwAAIjsAACJPAAAiXgAAIm0AACJ8AAAigAAAIo8AACKeAAAirQAAIrwAACLLAAAi1wAAIukAACL4AAAjBwAAIxYAACMlAAAjNAAAI0MAACNSAAAjUwAAI1YAACNfAAAjbgAAI30AACOMAAAjoQAAI6IAACOqAAAjtgAAI8oAACPZAAAj6AAAI/cAACP7AAAkCgAAJBkAACQoAAAkNwAAJEYAACRSAAAkZAAAJHMAACSCAAAkkQAAJKAAACSvAAAkvgAAJM0AACTQAAAk3wAAJO4AACT9AAAlAAAAJRoAACUbAAAlIQAAJS0AACVDAAAlUgAAJVUAACVkAAAlcwAAJXcAACV8AAAlfQAAJX4AACWNAAAlnAAAJZ8AACWuAAAlvQAAJcEAACXQAAAl3wAAJeAAACYAAAAmAQAAJgIAACYDAAAmBAAAJgUAACYGAAAmBwAAJggAACYJAAAmCgAAJgsAACYMAAAmDQAAJg4AACYjAAAmJAAAJiwAACY4AAAmTAAAJlsAACZqAAAmeQAAJn0AACaMAAAmmwAAJqoAACa5AAAmyAAAJtQAACbmAAAm9QAAJwQAACcTAAAnIgAAJzEAACdAAAAnQQAAJ1AAACdlAAAnZgAAJ24AACd6AAAnjgAAJ50AACesAAAnuwAAJ78AACfOAAAn3QAAJ+wAACf7AAAoCgAAKBYAACgoAAAoNwAAKEYAAChVAAAoZAAAKH4AACh/AAAohQAAKJEAACinAAAotgAAKLkAACjIAAAo1wAAKNsAACjhAAAo4gAAKOMAACjkAAAo8wAAKQIAACkFAAApFAAAKSMAACknAAApNgAAKUUAAClGAAApYAAAKWEAACliAAApYwAAKWQAACllAAApZgAAKWcAACloAAApaQAAKWoAAClrAAApgAAAKYEAACmJAAAplQAAKakAACm4AAApxwAAKdYAACnaAAAp6QAAKfgAACoHAAAqFgAAKiUAACoxAAAqQwAAKlIAACphAAAqcAAAKn8AACqOAAAqnQAAKqwAACrBAAAqwgAAKsoAACrWAAAq6gAAKvkAACsIAAArFwAAKxsAACsqAAArOQAAK0gAACtXAAArZgAAK3IAACuEAAArkwAAK6IAACuxAAArwAAAK88AACveAAAr7QAALAIAACwDAAAsCwAALBcAACwrAAAsOgAALEkAACxYAAAsXAAALGsAACx6AAAsiQAALJgAACynAAAsswAALMUAACzUAAAs4wAALPIAAC0BAAAtEAAALR8AAC0uAAAtQwAALUQAAC1MAAAtWAAALWwAAC17AAAtigAALZkAAC2dAAAtrAAALbsAAC3KAAAt2QAALegAAC30AAAuBgAALhUAAC4kAAAuMwAALkIAAC5cAAAuXQAALmMAAC5vAAAuhQAALpQAAC6XAAAupgAALrUAAC65AAAuwAAALsEAAC7CAAAuwwAALsQAAC7TAAAu4gAALuUAAC70AAAvAwAALwcAAC8WAAAvJQAALyYAAC9AAAAvQQAAL0IAAC9DAAAvRAAAL0UAAC9GAAAvRwAAL0gAAC9JAAAvSgAAL0sAAC9gAAAvYQAAL2kAAC91AAAviQAAL5gAAC+nAAAvtgAAL7oAAC/JAAAv2AAAL+cAAC/2AAAwBQAAMBEAADAjAAAwMgAAMEEAADBQAAAwXwAAMG4AADB9AAAwjAAAMKEAADCiAAAwqgAAMLYAADDKAAAw2QAAMOgAADD3AAAw+wAAMQoAADEZAAAxKAAAMTcAADFGAAAxUgAAMWQAADFzAAAxggAAMZEAADGgAAAxrwAAMb4AADHNAAAx4gAAMeMAADHrAAAx9wAAMgsAADIaAAAyKQAAMjgAADI8AAAySwAAMloAADJpAAAyeAAAMocAADKTAAAypQAAMrQAADLDAAAy0gAAMuEAADLiAAAy8QAAMwAAADMPAAAzJAAAMyUAADMtAAAzOQAAM00AADNcAAAzawAAM3oAADN+AAAzjQAAM5wAADOrAAAzugAAM8kAADPVAAAz5wAAM/YAADQFAAA0FAAANCMAADQyAAA0QQAANFAAADRlAAA0ZgAANG4AADR6AAA0jgAANJ0AADSsAAA0uwAANL8AADTOAAA03QAANOwAADT7AAA1CgAANRYAADUoAAA1NwAANUYAADVVAAA1ZAAANXMAADWCAAA1kQAANaYAADWnAAA1rwAANbsAADXPAAA13gAANe0AADX8AAA2AAAANg8AADYeAAA2LQAANjwAADZLAAA2VwAANmkAADZ4AAA2hwAANpYAADalAAA2tAAANsMAADbSAAA25wAANugAADbwAAA2/AAANxAAADcfAAA3LgAANz0AADdBAAA3UAAAN18AADduAAA3fQAAN4wAADeYAAA3qgAAN7kAADfIAAA31wAAN+YAADf1AAA4BAAAOBMAADgoAAA4KQAAODEAADg9AAA4UQAAOGAAADhvAAA4fgAAOIIAADiRAAA4oAAAOK8AADi+AAA4zQAAONkAADjrAAA4+gAAOQkAADkYAAA5JwAAOTYAADlFAAA5VAAAOWkAADlqAAA5cgAAOX4AADmSAAA5oQAAObAAADm/AAA5wwAAOdIAADnhAAA58AAAOf8AADoOAAA6GgAAOiwAADo7AAA6SgAAOlkAADpoAAA6dwAAOoYAADqVAAA6qgAAOqsAADqzAAA6vwAAOtMAADriAAA68QAAOwAAADsEAAA7EwAAOyIAADsxAAA7QAAAO08AADtbAAA7bQAAO3wAADuLAAA7mgAAO6kAADu4AAA7xwAAO9YAADvrAAA77AAAO/QAADwAAAA8FAAAPCMAADwyAAA8QQAAPEUAADxUAAA8YwAAPHIAADyBAAA8kAAAPJwAADyuAAA8vQAAPMwAADzbAAA86gAAPPkAAD0IAAA9FwAAPRoAAD0pAAA9OAAAPUcAAD1cAAA9XQAAPWUAAD1xAAA9hQAAPZQAAD2jAAA9sgAAPbYAAD3FAAA91AAAPeMAAD3yAAA+AQAAPg0AAD4fAAA+LgAAPj0AAD5MAAA+WwAAPmoAAD55AAA+iAAAPp0AAD6eAAA+pgAAPrIAAD7GAAA+1QAAPuQAAD7zAAA+9wAAPwYAAD8VAAA/JAAAPzMAAD9CAAA/TgAAP2AAAD9vAAA/fgAAP40AAD+cAAA/qwAAP7oAAD/JAAA/3gAAP98AAD/nAAA/8wAAQAcAAEAWAABAJQAAQDQAAEA4AABARwAAQFYAAEBlAABAdAAAQIMAAECPAABAoQAAQLAAAEC/AABAzgAAQN0AAED3AABA+AAAQP4AAEEKAABBIAAAQS8AAEEyAABBQQAAQVAAAEFUAABBWAAAQVkAAEFoAABBdwAAQXoAAEGJAABBmAAAQZwAAEGrAABBugAAQbsAAEHFAABBxgAAQccAAEHcAABB3QAAQeUAAEHxAABCBQAAQhQAAEIjAABCMgAAQjYAAEJFAABCVAAAQmMAAEJyAABCgQAAQo0AAEKfAABCrgAAQr0AAELMAABC2wAAQuoAAEL5AABDCAAAQx0AAEMeAABDJgAAQzIAAENGAABDVQAAQ2QAAENzAABDdwAAQ4YAAEOVAABDpAAAQ7MAAEPCAABDzgAAQ+AAAEPvAABD/gAARA0AAEQcAABEHQAARCwAAEQ7AABESgAARF8AAERgAABEaAAARHQAAESIAABElwAARKYAAES1AABEuQAARMgAAETXAABE5gAARPUAAEUEAABFEAAARSIAAEUxAABFQAAARU8AAEVeAABFbQAARXwAAEWLAABFjgAARZ0AAEWsAABFuwAARdAAAEXRAABF2QAAReUAAEX5AABGCAAARhcAAEYmAABGKgAARjkAAEZIAABGVwAARmYAAEZ1AABGgQAARpMAAEaiAABGsQAARsAAAEbPAABG3gAARu0AAEb8AABHEQAARxIAAEcaAABHJgAARzoAAEdJAABHWAAAR2cAAEdrAABHegAAR4kAAEeYAABHpwAAR7YAAEfCAABH1AAAR+MAAEfyAABIAQAASBAAAEgfAABILgAASD0AAEhSAABIUwAASFsAAEhnAABIewAASIoAAEiZAABIqAAASKwAAEi7AABIygAASNkAAEjoAABI9wAASQMAAEkVAABJJAAASTMAAElCAABJUQAASWAAAElvAABJfgAASZMAAEmUAABJnAAASagAAEm8AABJywAASdoAAEnpAABJ7QAASfwAAEoLAABKGgAASikAAEo4AABKRAAASlYAAEplAABKdAAASoMAAEqSAABKoQAASrAAAEq/AABKwgAAStEAAErgAABK7wAASwQAAEsFAABLDQAASxkAAEstAABLPAAAS0sAAEtaAABLXgAAS20AAEt8AABLiwAAS5oAAEupAABLtQAAS8cAAEvWAABL5QAAS/QAAEwDAABMEgAATCEAAEwwAABMRQAATEYAAExOAABMWgAATG4AAEx9AABMjAAATJsAAEyfAABMrgAATL0AAEzMAABM2wAATOoAAEz2AABNCAAATRcAAE0mAABNNQAATUQAAE1TAABNYgAATXEAAE2GAABNhwAATY8AAE2bAABNrwAATb4AAE3NAABN3AAATeAAAE3vAABN/gAATg0AAE4cAABOKwAATjcAAE5JAABOWAAATmcAAE52AABOhQAATpQAAE6jAABOsgAATscAAE7IAABO0AAATtwAAE7wAABO/wAATw4AAE8dAABPIQAATzAAAE8/AABPTgAAT10AAE9sAABPeAAAT4oAAE+ZAABPqAAAT7cAAE/GAABP1QAAT+QAAE/zAABQCAAAUAkAAFARAABQHQAAUDEAAFBAAABQTwAAUF4AAFBiAABQcQAAUIAAAFCPAABQngAAUK0AAFC5AABQywAAUNoAAFDpAABQ+AAAUQcAAFEWAABRJQAAUSYAAFE1AABRSgAAUUsAAFFTAABRXwAAUXMAAFGCAABRkQAAUaAAAFGkAABRswAAUcIAAFHRAABR4AAAUe8AAFH7AABSDQAAUhwAAFIrAABSOgAAUkkAAFJYAABSZwAAUmgAAFJ3AABSjAAAUo0AAFKVAABSoQAAUrUAAFLEAABS0wAAUuIAAFLmAABS9QAAUwQAAFMTAABTIgAAUzEAAFM9AABTTwAAU14AAFNtAABTfAAAU4sAAFOaAABTqQAAU7gAAFPNAABTzgAAU9YAAFPiAABT9gAAVAUAAFQUAABUIwAAVCcAAFQ2AABURQAAVFQAAFRjAABUcgAAVH4AAFSQAABUnwAAVK4AAFS9AABUzAAAVNsAAFTqAABU6wAAVPoAAFUPAABVEAAAVRgAAFUkAABVOAAAVUcAAFVWAABVZQAAVWkAAFV4AABVhwAAVZYAAFWlAABVtAAAVcAAAFXSAABV4QAAVfAAAFX/AABWDgAAVh0AAFYsAABWOwAAVlAAAFZRAABWWQAAVmUAAFZ5AABWiAAAVpcAAFamAABWqgAAVrkAAFbIAABW1wAAVuYAAFb1AABXAQAAVxMAAFciAABXMQAAV0AAAFdPAABXXgAAV20AAFd8AABXkQAAV5IAAFeaAABXpgAAV7oAAFfJAABX2AAAV+cAAFfrAABX+gAAWAkAAFgYAABYJwAAWDYAAFhCAABYVAAAWGMAAFhyAABYgQAAWJAAAFifAABYrgAAWK8AAFi+AABY0wAAWNQAAFjcAABY6AAAWPwAAFkLAABZGgAAWSkAAFktAABZPAAAWUsAAFlaAABZaQAAWXgAAFmEAABZlgAAWaUAAFm0AABZwwAAWdIAAFnhAABZ8AAAWf8AAFoCAABaHAAAWh0AAFojAABaLwAAWkUAAFpUAABaVwAAWmYAAFp1AABaeAAAWocAAFqWAABamQAAWqgAAFq3AABauwAAWsoAAFrZAABa2gAAWuQAAFrlAABa5gAAWucAAFr8AABa/QAAWwUAAFsRAABbJQAAWzQAAFtDAABbUgAAW1YAAFtlAABbdAAAW4MAAFuSAABboQAAW60AAFu/AABbzgAAW90AAFvsAABb+wAAXAoAAFwZAABcGgAAXCkAAFw+AABcPwAAXEcAAFxTAABcZwAAXHYAAFyFAABclAAAXJgAAFynAABctgAAXMUAAFzUAABc4wAAXO8AAF0BAABdEAAAXR8AAF0uAABdPQAAXVcAAF1YAABdXgAAXWoAAF2AAABdjwAAXZIAAF2hAABdsAAAXbMAAF3CAABd0QAAXdQAAF3jAABd8gAAXfYAAF4FAABeFAAAXhUAAF43AABeOAAAXjkAAF46AABeOwAAXjwAAF49AABePgAAXj8AAF5AAABeQQAAXkIAAF5DAABeRAAAXkUAAF5GAABeWwAAXlwAAF5kAABecAAAXoQAAF6TAABeogAAXrEAAF61AABexAAAXtMAAF7iAABe8QAAXwAAAF8MAABfHgAAXy0AAF88AABfSwAAX1oAAF9bAABfagAAX3kAAF+IAABfnQAAX54AAF+mAABfsgAAX8YAAF/VAABf5AAAX/MAAF/3AABgBgAAYBUAAGAkAABgMwAAYEIAAGBOAABgYAAAYG8AAGB+AABgjQAAYJwAAGCrAABgugAAYMkAAGD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DAACC0gAAguEAAILlAACC9AAAgwMAAIMSAACDIQAAgzAAAIM8AACDTgAAg10AAINsAACDewAAg4oAAIOZAACDqAAAg7cAAIPMAACDzQAAg9UAAIPhAACD9QAAhAQAAIQTAACEIgAAhCYAAIQ1AACERAAAhFMAAIRiAACEcQAAhH0AAISPAACEngAAhK0AAIS8AACEywAAhNoAAITpAACE+AAAhQ0AAIUOAACFFgAAhSIAAIU2AACFRQAAhVQAAIVjAACFZwAAhXYAAIWFAACFlAAAhaMAAIWyAACFvgAAhdAAAIXfAACF7gAAhf0AAIYMAACGGwAAhioAAIY5AACGTgAAhk8AAIZXAACGYwAAhncAAIaGAACGlQAAhqQAAIaoAACGtwAAhsYAAIbVAACG5AAAhvMAAIb/AACHEQAAhyAAAIcvAACHPgAAh00AAIdcAACHawAAh3oAAIePAACHkAAAh5gAAIekAACHuAAAh8cAAIfWAACH5QAAh+kAAIf4AACIBwAAiBYAAIglAACINAAAiEAAAIhSAACIYQAAiHAAAIh/AACIjgAAiJ0AAIisAACIuwAAiNAAAIjRAACI2QAAiOUAAIj5AACJCAAAiRcAAIkmAACJKgAAiTkAAIlIAACJVwAAiWYAAIl1AACJgQAAiZMAAImiAACJsQAAicAAAInPAACJ3gAAie0AAIn8AACKEQAAihIAAIoaAACKJgAAijoAAIpJAACKWAAAimcAAIprAACKegAAiokAAIqYAACKpwAAirYAAIrCAACK1AAAiuMAAIryAACLAQAAixAAAIsfAACLLgAAiz0AAItSAACLUwAAi1sAAItnAACLewAAi4oAAIuZAACLqAAAi6wAAIu7AACLygAAi9kAAIvoAACL9wAAjAMAAIwVAACMJAAAjDMAAIxCAACMUQAAjGAAAIxvAACMfgAAjJMAAIyUAACMnAAAjKgAAIy8AACMywAAjNoAAIzpAACM7QAAjPwAAI0LAACNGgAAjSkAAI04AACNRAAAjVYAAI1lAACNdAAAjYMAAI2SAACNrAAAja0AAI2zAACNvwAAjdUAAI3kAACN5wAAjfYAAI4FAACOCAAAjhcAAI4mAACOKQAAjjgAAI5HAACOSwAAjloAAI5pAACOagAAjogAAI6JAACOigAAjosAAI6MAACOjQAAjo4AAI6PAACOkAAAjpEAAI6SAACOkwAAjpQAAI6VAACOqgAAjqsAAI6zAACOvwAAjtMAAI7iAACO8QAAjwAAAI8EAACPEwAAjyIAAI8xAACPQAAAj08AAI9bAACPbQAAj3wAAI+LAACPmgAAj6kAAI/LAACPzAAAj9IAAI/eAACP9AAAkAMAAJAGAACQFQAAkCQAAJAnAACQNgAAkEUAAJBIAACQVwAAkGYAAJBqAACQeQAAkIgAAJCJAACQmQAAkJoAAJCbAACQnAAAkJ0AAJCeAACQnwAAkLQAAJC1AACQvQAAkMkAAJDdAACQ7AAAkPsAAJEKAACRDgAAkR0AAJEsAACROwAAkUoAAJFZAACRZQAAkXcAAJGGAACRlQAAkaQAAJGzAACRwgAAkdEAAJHgAACR9QAAkfYAAJH+AACSCgAAkh4AAJItAACSPAAAkksAAJJPAACSXgAAkm0AAJJ8AACSiwAAkpoAAJKmAACSuAAAkscAAJLWAACS5QAAkvQAAJMDAACTEgAAkyEAAJM2AACTNwAAkz8AAJNLAACTXwAAk24AAJN9AACTjAAAk5AAAJOfAACTrgAAk70AAJPMAACT2wAAk+cAAJP5AACUCAAAlBcAAJQmAACUNQAAlEQAAJRTAACUVAAAlGMAAJR4AACUeQAAlIEAAJSNAACUoQAAlLAAAJS/AACUzgAAlNIAAJThAACU8AAAlP8AAJUOAACVHQAAlSkAAJU7AACVSgAAlVkAAJVoAACVdwAAlYYAAJWVAACVpAAAlbkAAJW6AACVwgAAlc4AAJXiAACV8QAAlgAAAJYPAACWEwAAliIAAJYxAACWQAAAlk8AAJZeAACWagAAlnwAAJaLAACWmgAAlqkAAJa4AACWxwAAltYAAJblAACW+gAAlvsAAJcDAACXDwAAlyMAAJcyAACXQQAAl1AAAJdUAACXYwAAl3IAAJeBAACXkAAAl58AAJerAACXvQAAl8wAAJfbAACX6gAAl/kAAJgTAACYFAAAmBoAAJgmAACYPAAAmEsAAJhOAACYXQAAmGwAAJhvAACYfgAAmI0AAJiQAACYnwAAmK4AAJiyAACYwQAAmNAAAJjRAACY3QAAmN4AAJjfAACY4AAAmOEAAJj2AACY9wAAmP8AAJkLAACZHwAAmS4AAJk9AACZTAAAmVAAAJlfAACZbgAAmX0AAJmMAACZmwAAmacAAJm5AACZyAAAmdcAAJnmAACZ9QAAmgQAAJoTAACaIgAAmjcAAJo4AACaQAAAmkwAAJpgAACabwAAmn4AAJqNAACakQAAmqAAAJqvAACavgAAms0AAJrcAACa6AAAmvoAAJsJAACbGAAAmycAAJs2AACbRQAAm1QAAJtjAACbeAAAm3kAAJuBAACbjQAAm6EAAJuwAACbvwAAm84AAJvSAACb4QAAm/AAAJv/AACcDgAAnB0AAJwpAACcOwAAnEoAAJxZAACcaAAAnHcAAJyGAACclQAAnJYAAJylAACcugAAnLsAAJzDAACczwAAnOMAAJzyAACdAQAAnRAAAJ0UAACdIwAAnTIAAJ1BAACdUAAAnV8AAJ1rAACdfQAAnYwAAJ2bAACdqgAAnbkAAJ3IAACd1wAAneYAAJ3pAACd+AAAngcAAJ4WAACeKwAAniwAAJ40AACeQAAAnlQAAJ5jAACecgAAnoEAAJ6FAACelAAAnqMAAJ6yAACewQAAntAAAJ7cAACe7gAAnv0AAJ8MAACfGwAAnyoAAJ9EAACfRQAAn0sAAJ9XAACfbQAAn3wAAJ9/AACfjgAAn50AAJ+gAACfrwAAn74AAJ/BAACf0AAAn98AAJ/jAACf8gAAoAEAAKACAACgCAAAoAkAAKAeAACgHwAAoCcAAKAzAACgRwAAoFYAAKBlAACgdAAAoHgAAKCHAACglgAAoKUAAKC0AACgwwAAoM8AAKDhAACg8AAAoP8AAKEOAAChHQAAoSwAAKE7AAChSgAAoU4AAKFXAAChWAAAoXoAAKF7AAChgQAAoY0AAKGjAAChsgAAobUAAKHEAACh0wAAodYAAKHlAACh9AAAofcAAKIGAACiFQAAohkAAKIoAACiNwAAojgAAKJGAACiRwAAokgAAKJJAACiSgAAoksAAKJgAACiYQAAomkAAKJ1AACiiQAAopgAAKKnAACitgAAoroAAKLJAACi2AAAoucAAKL2AACjBQAAoxEAAKMjAACjMgAAo0EAAKNQAACjXwAAo24AAKN9AACjjAAAo6EAAKOiAACjqgAAo7YAAKPKAACj2QAAo+gAAKP3AACj+wAApAoAAKQZAACkKAAApDcAAKRGAACkUgAApGQAAKRzAACkggAApJEAAKSgAACkrwAApL4AAKTNAACk4gAApOMAAKTrAACk9wAApQsAAKUaAAClKQAApTgAAKU8AAClSwAApVoAAKVpAACleAAApYcAAKWTAAClpQAApbQAAKXDAACl0gAApeEAAKXwAACl/wAApg4AAKYjAACmJAAApiwAAKY4AACmTAAAplsAAKZqAACmeQAApn0AAKaMAACmmwAApqoAAKa5AACmyAAAptQAAKbmAACm9QAApwQAAKcTAACnIgAApzEAAKdAAACnTwAAp2QAAKdlAACnbQAAp3kAAKeNAACnnAAAp6sAAKe6AACnvgAAp80AAKfcAACn6wAAp/oAAKgJAACoFQAAqCcAAKg2AACoRQAAqFQAAKhVAACoZAAAqHMAAKiCAACokQAAqJQAAKiaAACooQAAqLsAAKi8AACowgAAqM4AAKjkAACo8wAAqPYAAKkFAACpFAAAqRcAAKkmAACpNQAAqTgAAKlHAACpVgAAqVoAAKlpAACpeAAAqXkAAKl/AACpgAAAqZUAAKmWAACpngAAqaoAAKm+AACpzQAAqdwAAKnrAACp7wAAqf4AAKoNAACqHAAAqisAAKo6AACqRgAAqlgAAKpnAACqdgAAqoUAAKqUAACqrgAAqq8AAKq1AACqwQAAqtcAAKrmAACq6QAAqvgAAKsHAACrCgAAqxkAAKsoAACrKwAAqzoAAKtJAACrTQAAq1wAAKtrAACrbAAAq3IAAKtzAACriAAAq4kAAKuRAACrnQAAq7EAAKvAAACrzwAAq94AAKviAACr8QAArAAAAKwPAACsHgAArC0AAKw5AACsSwAArFoAAKxpAACseAAArIcAAKyWAACspQAArLQAAKy4AACsvwAArMAAAKzGAACs1QAArOQAAKzzAACs9wAArPgAAKz/AACtGQAArRoAAK0gAACtLAAArUIAAK1RAACtVAAArWMAAK1yAACtdQAArYQAAK2TAACtlgAAraUAAK20AACtuAAArccAAK3WAACt1wAArd0AAK3eAACt8wAArfQAAK38AACuCAAArhwAAK4rAACuOgAArkkAAK5NAACuXAAArmsAAK56AACuiQAArpgAAK6kAACutgAArsUAAK7UAACu4wAArvIAAK8MAACvDQAArxMAAK8fAACvNQAAr0QAAK9HAACvVgAAr2UAAK9oAACvdwAAr4YAAK+JAACvmAAAr6cAAK+rAACvugAAr8kAAK/KAACv0gAAr9MAAK/UAACv6QAAr+oAAK/yAACv/gAAsBIAALAhAACwMAAAsD8AALBDAACwUgAAsGEAALBwAACwfwAAsI4AALCaAACwrAAAsLsAALDKAACw2QAAsOgAALD3AACxBgAAsRUAALEqAACxKwAAsTMAALE/AACxUwAAsWIAALFxAACxgAAAsYQAALGTAACxogAAsbEAALHAAACxzwAAsdsAALHtAACx/AAAsgsAALIMAACyGwAAsioAALI5AACySAAAslcAALJsAACybQAAsnUAALKBAACylQAAsqQAALKzAACywgAAssYAALLVAACy5AAAsvMAALMCAACzEQAAsx0AALMvAACzPgAAs00AALNcAACzawAAs3oAALOJAACzmAAAs5wAALOjAACzpAAAs7MAALPCAACz0QAAs9UAALPWAACz5QAAs/QAALQDAAC0BgAAtAsAALQaAAC0KQAAtDgAALRNAAC0TgAAtFYAALRiAAC0dgAAtIUAALSUAAC0owAAtKcAALS2AAC0xQAAtNQAALTjAAC08gAAtP4AALUQAAC1HwAAtS4AALU9AAC1TAAAtWYAALVnAAC1bQAAtXkAALWPAAC1ngAAtaEAALWwAAC1vwAAtcIAALXRAAC14AAAteMAALXyAAC2AQAAtgUAALYUAAC2IwAAtiQAALY0AAC2NQAAtjYAALY3AAC2OAAAtjkAALZOAAC2TwAAtlcAALZjAAC2dwAAtoYAALaVAAC2pAAAtqgAALa3AAC2xgAAttUAALbkAAC28wAAtv8AALcRAAC3IAAAty8AALc+AAC3TQAAt1wAALdrAAC3egAAt48AALeQAAC3mAAAt6QAALe4AAC3xwAAt9YAALflAAC36QAAt/gAALgHAAC4FgAAuCUAALg0AAC4QAAAuFIAALhhAAC4cAAAuH8AALiOAAC4nQAAuKwAALi7AAC40AAAuNEAALjZAAC45QAAuPkAALkIAAC5FwAAuSYAALkqAAC5OQAAuUgAALlXAAC5ZgAAuXUAALmBAAC5kwAAuaIAALmxAAC5wAAAuc8AALneAAC57QAAufwAALoRAAC6EgAAuhoAALomAAC6OgAAukkAALpYAAC6ZwAAumsAALp6AAC6iQAAupgAALqnAAC6tgAAusIAALrUAAC64wAAuvIAALsBAAC7EAAAux8AALsuAAC7PQAAu1IAALtTAAC7WwAAu2cAALt7AAC7igAAu5kAALuoAAC7rAAAu7sAALvKAAC72QAAu+gAALv3AAC8AwAAvBUAALwkAAC8MwAAvEIAALxRAAC8YAAAvG8AALx+AAC8kwAAvJQAALycAAC8qAAAvLwAALzLAAC82gAAvOkAALztAAC8/AAAvQsAAL0aAAC9KQAAvTgAAL1EAAC9VgAAvWUAAL10AAC9gwAAvZIAAL2hAAC9sAAAvb8AAL3CAAC90QAAveAAAL3vAAC+BAAAvgUAAL4NAAC+GQAAvi0AAL48AAC+SwAAvloAAL5eAAC+bQAAvnwAAL6LAAC+mgAAvqkAAL61AAC+xwAAvtYAAL7lAAC+9AAAvwMAAL8SAAC/IQAAvzAAAL9FAAC/RgAAv04AAL9aAAC/bgAAv30AAL+MAAC/mwAAv58AAL+uAAC/vQAAv8wAAL/bAAC/6gAAv/YAAMAIAADAFwAAwCYAAMA1AADARAAAwFMAAMBiAADAcQAAwIYAAMCHAADAjwAAwJsAAMCvAADAvgAAwM0AAMDcAADA4AAAwO8AAMD+AADBDQAAwRwAAMErAADBNwAAwUkAAMFYAADBZwAAwXYAAMGFAADBlAAAwaMAAMGkAADBswAAwcgAAMHJAADB0QAAwd0AAMHxAADCAAAAwg8AAMIeAADCIgAAwjEAAMJAAADCTwAAwl4AAMJtAADCeQAAwosAAMKaAADCqQAAwrgAAMLHAADC4QAAwuIAAMLoAADC9AAAwwoAAMMZAADDHAAAwysAAMM6AADDPQAAw0wAAMNbAADDXgAAw20AAMN8AADDgAAAw48AAMOeAADDnwAAw6sAAMOsAADDrQAAw64AAMPDAADDxAAAw8wAAMPYAADD7AAAw/sAAMQKAADEGQAAxB0AAMQsAADEOwAAxEoAAMRZAADEaAAAxHQAAMSGAADElQAAxKQAAMSzAADEwgAAxNEAAMTgAADE7wAAxQQAAMUFAADFDQAAxRkAAMUtAADFPAAAxUsAAMVaAADFXgAAxW0AAMV8AADFiwAAxZoAAMWpAADFtQAAxccAAMXWAADF5QAAxfQAAMYDAADGEgAAxiEAAMYiAADGMQAAxkYAAMZHAADGTwAAxlsAAMZvAADGfgAAxo0AAMacAADGoAAAxq8AAMa+AADGzQAAxtwAAMbrAADG9wAAxwkAAMcYAADHJwAAxzYAAMdFAADHVAAAx2MAAMdyAADHhwAAx4gAAMeQAADHnAAAx7AAAMe/AADHzgAAx90AAMfhAADH8AAAx/8AAMgOAADIHQAAyCwAAMg4AADISgAAyFkAAMhoAADIdwAAyIYAAMiVAADIpAAAyLMAAMjIAADIyQAAyNEAAMjdAADI8QAAyQAAAMkPAADJHgAAySIAAMkxAADJQAAAyU8AAMleAADJbQAAyXkAAMmLAADJmgAAyakAAMm4AADJxwAAydYAAMnlAADJ9AAAyfcAAMoGAADKFQAAyiQAAMo5AADKOgAAykIAAMpOAADKYgAAynEAAMqAAADKjwAAypMAAMqiAADKsQAAysAAAMrPAADK3gAAyuoAAMr8AADLCwAAyxoAAMspAADLOAAAy0cAAMtWAADLVwAAy2YAAMt7AADLfAAAy4QAAMuQAADLpAAAy7MAAMvCAADL0QAAy9UAAMvkAADL8wAAzAIAAMwRAADMIAAAzCwAAMw+AADMTQAAzFwAAMxrAADMegAAzIkAAMyYAADMpwAAzLwAAMy9AADMxQAAzNEAAMzlAADM9AAAzQMAAM0SAADNFgAAzSUAAM00AADNQwAAzVIAAM1hAADNbQAAzX8AAM2OAADNnQAAzawAAM27AADNygAAzdkAAM3oAADN/QAAzf4AAM4GAADOEgAAziYAAM41AADORAAAzlMAAM5XAADOZgAAznUAAM6EAADOkwAAzqIAAM6uAADOwAAAzs8AAM7eAADO7QAAzvwAAM8LAADPGgAAzykAAM8+AADPPwAAz0cAAM9TAADPZwAAz3YAAM+FAADPlAAAz5gAAM+nAADPtgAAz8UAAM/UAADP4wAAz+8AANABAADQEAAA0B8AANAuAADQPQAA0FcAANBYAADQXgAA0GoAANCAAADQjwAA0JIAANChAADQsAAA0LMAANDCAADQ0QAA0NQAANDjAADQ8gAA0PYAANEFAADRFAAA0RUAANEdAADRHgAA0R8AANE0AADRNQAA0T0AANFJAADRXQAA0WwAANF7AADRigAA0Y4AANGdAADRrAAA0bsAANHKAADR2QAA0eUAANH3AADSBgAA0hUAANIkAADSMwAA0kIAANJRAADSUgAA0mEAANJ2AADSdwAA0n8AANKLAADSnwAA0q4AANK9AADSzAAA0tAAANLfAADS7gAA0v0AANMMAADTGwAA0ycAANM5AADTSAAA01cAANNmAADTdQAA04QAANOTAADTogAA06UAANO0AADTwwAA09IAANPnAADT6AAA0/AAANP8AADUEAAA1B8AANQuAADUPQAA1EEAANRQAADUXwAA1G4AANR9AADUjAAA1JgAANSqAADUuQAA1MgAANTXAADU5gAA1QAAANUBAADVBwAA1RMAANUpAADVOAAA1TsAANVKAADVWQAA1V0AANViAADVYwAA1WQAANVzAADVggAA1YUAANWUAADVowAA1acAANW2AADVxQAA1cYAANXmAADV5wAA1egAANXpAADV6gAA1esAANXsAADV7QAA1e4AANXvAADV8AAA1fEAANXyAADV8wAA1ggAANYJAADWEQAA1h0AANYxAADWQAAA1k8AANZeAADWYgAA1nEAANaAAADWjwAA1p4AANatAADWuQAA1ssAANbaAADW6QAA1vgAANcHAADXFgAA1yUAANc0AADXSQAA10oAANdSAADXXgAA13IAANeBAADXkAAA158AANejAADXsgAA18EAANfQAADX3wAA1+4AANf6AADYDAAA2BsAANgqAADYOQAA2EgAANhXAADYZgAA2HUAANiKAADYiwAA2JMAANifAADYswAA2MIAANjRAADY4AAA2OQAANjzAADZAgAA2REAANkgAADZLwAA2TsAANlNAADZXAAA2WsAANl6AADZiQAA2ZgAANmnAADZtgAA2csAANnMAADZ1AAA2eAAANn0AADaAwAA2hIAANohAADaJQAA2jQAANpDAADaUgAA2mEAANpwAADafAAA2o4AANqdAADarAAA2rsAANrKAADa2QAA2ugAANr3AADbDAAA2w0AANsVAADbIQAA2zUAANtEAADbUwAA22IAANtmAADbdQAA24QAANuTAADbogAA27EAANu9AADbzwAA294AANvtAADb/AAA3AsAANwaAADcKQAA3DgAANxNAADcTgAA3FYAANxiAADcdgAA3IUAANyUAADcowAA3KcAANy2AADcxQAA3NQAANzjAADc8gAA3P4AAN0QAADdHwAA3S4AAN09AADdTAAA3VsAAN1qAADdeQAA3Y4AAN2PAADdlwAA3aMAAN23AADdxgAA3dUAAN3kAADd6AAA3fcAAN4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SAAEM3gABDPAAAQz/AAENDgABDR0AAQ0sAAENOwABDUoAAQ1ZAAENbgABDW8AAQ13AAENgwABDZcAAQ2mAAENtQABDcQAAQ3IAAEN1wABDeYAAQ31AAEOBAABDhMAAQ4fAAEOMQABDkAAAQ5PAAEOXgABDm0AAQ58AAEOiwABDpoAAQ6vAAEOsAABDrgAAQ7EAAEO2AABDucAAQ72AAEPBQABDwkAAQ8YAAEPJwABDzYAAQ9FAAEPVAABD2AAAQ9yAAEPgQABD5AAAQ+fAAEPrgABD70AAQ/MAAEPzQABD9wAAQ/fAAEP7gABD/0AARAMAAEQIQABECIAARAqAAEQNgABEEoAARBZAAEQaAABEHcAARB7AAEQigABEJkAARCoAAEQtwABEMYAARDSAAEQ5AABEPMAARECAAEREQABESAAAREvAAERPgABEU0AARFiAAERYwABEWsAARF3AAERiwABEZoAARGpAAERuAABEbwAARHLAAER2gABEekAARH4AAESBwABEhMAARIlAAESNAABEkMAARJSAAESYQABEnAAARJ/AAESgAABEo8AARKkAAESpQABEq0AARK5AAESzQABEtwAARLrAAES+gABEv4AARMNAAETHAABEysAARM6AAETSQABE1UAARNnAAETdgABE4UAAROUAAETowABE7IAARPBAAET0AABE+UAARPmAAET7gABE/oAARQOAAEUHQABFCwAARQ7AAEUPwABFE4AARRdAAEUbAABFHsAARSKAAEUlgABFKgAARS3AAEUxgABFNUAARTkAAEU8wABFQIAARURAAEVFAABFSMAARUyAAEVQQABFVYAARVXAAEVXwABFWsAARV/AAEVjgABFZ0AARWsAAEVsAABFb8AARXOAAEV3QABFewAARX7AAEWBwABFhkAARYoAAEWNwABFkYAARZVAAEWZAABFnMAARaCAAEWhQABFp8AARagAAEWpgABFrIAARbIAAEW1wABFtoAARbpAAEW+AABFvsAARcKAAEXGQABFxwAARcrAAEXOgABFz4AARdNAAEXXAABF10AARdhAAEXZQABF2wAARdtAAEXjwABF5AAAReWAAEXogABF7gAARfHAAEXygABF9kAARfoAAEX6wABF/oAARgJAAEYDAABGBsAARgqAAEYLgABGD0AARhMAAEYTQABGFcAARhYAAEYWQABGFoAARhvAAEYcAABGHgAARiEAAEYmAABGKcAARi2AAEYxQABGMkAARjYAAEY5wABGPYAARkFAAEZFAABGSAAARkyAAEZQQABGVAAARlfAAEZbgABGX0AARmMAAEZmwABGbAAARmxAAEZuQABGcUAARnZAAEZ6AABGfcAARoGAAEaCgABGhkAARooAAEaNwABGkYAARpVAAEaYQABGnMAARqCAAEakQABGqAAARqvAAEavgABGs0AARrcAAEa8QABGvIAARr6AAEbBgABGxoAARspAAEbOAABG0cAARtLAAEbWgABG2kAARt4AAEbhwABG5YAARuiAAEbtAABG8MAARvSAAEb4QABG/AAARv/AAEcDgABHB0AARwgAAEcJgABHC0AARxHAAEcSAABHE4AARxaAAEccAABHH8AARyCAAEckQABHKAAARyjAAEcsgABHMEAARzEAAEc0wABHOIAARzmAAEc9QABHQQAAR0FAAEdCwABHQwAAR0hAAEdIgABHSoAAR02AAEdSgABHVkAAR1oAAEddwABHXsAAR2KAAEdmQABHagAAR23AAEdxgABHdIAAR3kAAEd8wABHgIAAR4RAAEeIAABHi8AAR4+AAEeTQABHlEAAR5SAAEeWQABHnMAAR50AAEeegABHoYAAR6cAAEeqwABHq4AAR69AAEezAABHs8AAR7eAAEe7QABHvAAAR7/AAEfDgABHxIAAR8hAAEfMAABHzEAAR87AAEfPAABHz0AAR8+AAEfUwABH1QAAR9cAAEfaAABH3wAAR+LAAEfmgABH6kAAR+tAAEfvAABH8sAAR/aAAEf6QABH/gAASAEAAEgFgABICUAASA0AAEgQwABIFIAASBhAAEgcAABIH8AASCUAAEglQABIJ0AASCpAAEgvQABIMwAASDbAAEg6gABIO4AASD9AAEhDAABIRsAASEqAAEhOQABIUUAASFXAAEhZgABIXUAASGEAAEhkwABIaIAASGxAAEhwAABIdUAASHWAAEh3gABIeoAASH+AAEiDQABIhwAASIrAAEiLwABIj4AASJNAAEiXAABImsAASJ6AAEihgABIpgAASKnAAEitgABIsUAASLUAAEi4wABIvIAASMBAAEjBQABIwYAASMgAAEjIQABIycAASMzAAEjSQABI1gAASNbAAEjagABI3kAASN9AAEjhAABI4UAASOGAAEjhwABI4gAASOXAAEjpgABI6kAASO4AAEjxwABI8sAASPaAAEj6QABI+oAASQGAAEkBwABJAgAASQJAAEkCgABJAsAASQMAAEkDQABJA4AASQPAAEkEAABJCUAASQmAAEkLgABJDoAASROAAEkXQABJGwAASR7AAEkfwABJI4AASSdAAEkrAABJLsAASTKAAEk1gABJOgAAST3AAElBgABJRUAASUkAAElMwABJUIAASVRAAElZgABJWcAASVvAAElewABJY8AASWeAAElrQABJbwAASXAAAElzwABJd4AASXtAAEl/AABJgsAASYXAAEmKQABJjgAASZHAAEmVgABJmUAASZ0AAEmgwABJpIAASanAAEmqAABJrAAASa8AAEm0AABJt8AASbuAAEm/QABJwEAAScQAAEnHwABJy4AASc9AAEnTAABJ1gAASdqAAEneQABJ4gAASeXAAEnpgABJ7UAASfEAAEn0wABJ+gAASfpAAEn8QABJ/0AASgRAAEoIAABKC8AASg+AAEoQgABKFEAAShgAAEobwABKH4AASiNAAEomQABKKsAASi6AAEoyQABKNgAASjnAAEo9gABKQUAASkUAAEpKQABKSoAASkyAAEpPgABKVIAASlhAAEpcAABKX8AASmDAAEpkgABKaEAASmwAAEpvwABKc4AASnaAAEp7AABKfsAASoKAAEqGQABKigAASo3AAEqRgABKlUAASpqAAEqawABKnMAASp/AAEqkwABKqIAASqxAAEqwAABKsQAASrTAAEq4gABKvEAASsAAAErDwABKxsAASstAAErPAABK0sAAStaAAEraQABK3gAASuHAAErlgABK6sAASusAAErtAABK8AAASvUAAEr4wABK/IAASwBAAEsBQABLBQAASwjAAEsMgABLEEAASxQAAEsXAABLG4AASx9AAEsjAABLJsAASyqAAEsuQABLMgAASzXAAEs7AABLO0AASz1AAEtAQABLRUAAS0kAAEtMwABLUIAAS1GAAEtVQABLWQAAS1zAAEtggABLZEAAS2dAAEtrwABLb4AAS3NAAEt3AABLesAAS36AAEuCQABLhgAAS4tAAEuLgABLjYAAS5CAAEuVgABLmUAAS50AAEugwABLocAAS6WAAEupQABLrQAAS7DAAEu0gABLt4AAS7wAAEu/wABLw4AAS8dAAEvLAABL0YAAS9HAAEvTQABL1kAAS9vAAEvfgABL4EAAS+QAAEvnwABL6MAAS+pAAEvqgABL6sAAS+sAAEvuwABL8oAAS/NAAEv3AABL+sAAS/vAAEv/gABMA0AATAOAAEwKAABMCkAATAqAAEwKwABMCwAATAtAAEwLgABMC8AATAwAAEwRQABMEYAATBOAAEwWgABMG4AATB9AAEwjAABMJsAATCfAAEwrgABML0AATDMAAEw2wABMOoAATD2AAExCAABMRcAATEmAAExNQABMUQAATFTAAExYgABMXEAATGGAAExhwABMY8AATGbAAExrwABMb4AATHNAAEx3AABMeAAATHvAAEx/gABMg0AATIcAAEyKwABMjcAATJJAAEyWAABMmcAATJ2AAEyhQABMpQAATKjAAEysgABMscAATLIAAEy0AABMtwAATLwAAEy/wABMw4AATMdAAEzIQABMzAAATM/AAEzTgABM10AATNsAAEzeAABM4oAATOZAAEzqAABM7cAATPGAAEz1QABM+QAATPzAAE0CAABNAkAATQRAAE0HQABNDEAATRAAAE0TwABNF4AATRiAAE0cQABNIAAATSPAAE0ngABNK0AATS5AAE0ywABNNoAATTpAAE0+AABNQcAATUWAAE1JQABNTQAATVJAAE1SgABNVIAATVeAAE1cgABNYEAATWQAAE1nwABNaMAATWyAAE1wQABNdAAATXfAAE17gABNfoAATYMAAE2GwABNioAATY5AAE2SAABNmIAATZjAAE2aQABNnUAATaLAAE2mgABNp0AATasAAE2uwABNr8AATbDAAE2xAABNtMAATbiAAE25QABNvQAATcDAAE3BwABNxYAATclAAE3JgABNzIAATczAAE3NAABN0kAATdKAAE3UgABN14AATdyAAE3gQABN5AAATefAAE3owABN7IAATfBAAE30AABN98AATfuAAE3+gABOAwAATgbAAE4KgABODkAAThIAAE4VwABOGYAATh1AAE4igABOIsAATiTAAE4nwABOLMAATjCAAE40QABOOAAATjkAAE48wABOQIAATkRAAE5IAABOS8AATk7AAE5TQABOVwAATlrAAE5egABOYkAATmYAAE5pwABObYAATnLAAE5zAABOdQAATngAAE59AABOgMAAToSAAE6IQABOiUAATo0AAE6QwABOlIAATphAAE6cAABOnwAATqOAAE6nQABOqwAATq7AAE6ygABOtkAATroAAE69wABOwwAATsNAAE7FQABOyEAATs1AAE7RAABO1MAATtiAAE7ZgABO3UAATuEAAE7kwABO6IAATuxAAE7vQABO88AATveAAE77QABO/wAATwLAAE8GgABPCkAATw4AAE8OwABPEoAATxZAAE8aAABPH0AATx+AAE8hgABPJIAATymAAE8tQABPMQAATzTAAE81wABPOYAATz1AAE9BAABPRMAAT0iAAE9LgABPUAAAT1PAAE9XgABPW0AAT18AAE9lgABPZcAAT2dAAE9qQABPb8AAT3OAAE90QABPeAAAT3vAAE98wABPfgAAT35AAE9+gABPgkAAT4YAAE+GwABPioAAT45AAE+PQABPkwAAT5bAAE+XAABPn4AAT5/AAE+gAABPoEAAT6CAAE+gwABPoQAAT6FAAE+hgABPocAAT6IAAE+iQABPooAAT6LAAE+jAABPqEAAT6iAAE+qgABPrYAAT7KAAE+2QABPugAAT73AAE++wABPwoAAT8ZAAE/KAABPzcAAT9GAAE/UgABP2QAAT9zAAE/ggABP5EAAT+gAAE/rwABP74AAT/NAAE/4gABP+MAAT/rAAE/9wABQAsAAUAaAAFAKQABQDgAAUA8AAFASwABQFoAAUBpAAFAeAABQIcAAUCTAAFApQABQLQAAUDDAAFA0gABQOEAAUDwAAFA/wABQQAAAUEPAAFBJAABQSUAAUEtAAFBOQABQU0AAUFcAAFBawABQXoAAUF+AAFBjQABQZwAAUGrAAFBugABQckAAUHVAAFB5wABQfYAAUIFAAFCFAABQiMAAUIyAAFCQQABQlAAAUJlAAFCZgABQm4AAUJ6AAFCjgABQp0AAUKsAAFCuwABQr8AAULOAAFC3QABQuwAAUL7AAFDCgABQxYAAUMoAAFDNwABQ0YAAUNVAAFDZAABQ3MAAUOCAAFDgwABQ5IAAUOnAAFDqAABQ7AAAUO8AAFD0AABQ98AAUPuAAFD/QABRAEAAUQQAAFEHwABRC4AAUQ9AAFETAABRFgAAURqAAFEeQABRIgAAUSXAAFEpgABRLUAAUTEAAFE0wABROgAAUTpAAFE8QABRP0AAUURAAFFIAABRS8AAUU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hAAFc8AABXP8AAV0DAAFdEgABXSEAAV0wAAFdPwABXU4AAV1aAAFdbAABXXsAAV2KAAFdmQABXagAAV23AAFdxgABXdUAAV3qAAFd6wABXfMAAV3/AAFeEwABXiIAAV4xAAFeQAABXkQAAV5TAAFeYgABXnEAAV6AAAFejwABXpsAAV6tAAFevAABXssAAV7aAAFe6QABXvgAAV8HAAFfFgABXysAAV8sAAFfNAABX0AAAV9UAAFfYwABX3IAAV+BAAFfhQABX5QAAV+jAAFfsgABX8EAAV/QAAFf3AABX+4AAV/9AAFgDAABYBsAAWAqAAFgOQABYEgAAWBXAAFgWgABYGkAAWB4AAFghwABYJwAAWCdAAFgpQABYLEAAWDFAAFg1AABYOMAAWDyAAFg9gABYQUAAWEUAAFhIwABYTIAAWFBAAFhTQABYV8AAWFuAAFhfQABYYwAAWGbAAFhqgABYbkAAWHIAAFh3QABYd4AAWHmAAFh8gABYgYAAWIVAAFiJAABYjMAAWI3AAFiRgABYlUAAWJkAAFicwABYoIAAWKOAAFioAABYq8AAWK+AAFizQABYtwAAWLrAAFi+gABYwkAAWMeAAFjHwABYycAAWMzAAFjRwABY1YAAWNlAAFjdAABY3gAAWOHAAFjlgABY6UAAWO0AAFjwwABY88AAWPhAAFj8AABY/8AAWQOAAFkHQABZCwAAWQ7AAFkSgABZE0AAWRnAAFkaAABZG4AAWR6AAFkkAABZJ8AAWSiAAFksQABZMAAAWTEAAFkyQABZMoAAWTLAAFk2gABZOkAAWTsAAFk+wABZQoAAWUOAAFlHQABZSwAAWUtAAFlNQABZTYAAWU3AAFlTAABZU0AAWVVAAFlYQABZXUAAWWEAAFlkwABZaIAAWWmAAFltQABZcQAAWXTAAFl4gABZfEAAWX9AAFmDwABZh4AAWYtAAFmPAABZksAAWZaAAFmaQABZmoAAWZ5AAFmjgABZo8AAWaXAAFmowABZrcAAWbGAAFm1QABZuQAAWboAAFm9wABZwYAAWcVAAFnJAABZzMAAWc/AAFnUQABZ2AAAWdvAAFnfgABZ40AAWecAAFnqwABZ7oAAWe9AAFn1wABZ9gAAWfeAAFn6gABaAAAAWgPAAFoEgABaCEAAWgwAAFoNAABaDkAAWg6AAFoSQABaFgAAWhbAAFoagABaHkAAWh9AAFojAABaJsAAWivAAFosAABaLEAAWiyAAFoswABaLQAAWi1AAFotgABaMsAAWjMAAFo1AABaOAAAWj0AAFpAwABaRIAAWkhAAFpJQABaTQAAWlDAAFpUgABaWEAAWlwAAFpfAABaY4AAWmdAAFprAABabsAAWnKAAFp2QABaegAAWn3AAFqDAABag0AAWoVAAFqIQABajUAAWpEAAFqUwABamIAAWpmAAFqdQABaoQAAWqTAAFqogABarEAAWq9AAFqzwABat4AAWrtAAFq/AABawsAAWslAAFrJgABaywAAWs4AAFrTgABa10AAWtgAAFrbwABa34AAWuCAAFrhgABa4cAAWuWAAFrpQABa6gAAWu3AAFrxgABa8oAAWvZAAFr6AABa/wAAWv9AAFr/gABa/8AAWwAAAFsAQABbAIAAWwDAAFsGAABbBkAAWwhAAFsLQABbEEAAWxQAAFsXwABbG4AAWxyAAFsgQABbJAAAWyfAAFsrgABbL0AAWzJAAFs2wABbOoAAWz5AAFtCAABbRcAAW0mAAFtNQABbUQAAW1ZAAFtWgABbWIAAW1uAAFtggABbZEAAW2gAAFtrwABbbMAAW3CAAFt0QABbeAAAW3vAAFt/gABbgoAAW4cAAFuKwABbjoAAW5JAAFuWAABbmcAAW52AAFuhQABbpoAAW6bAAFuowABbq8AAW7DAAFu0gABbuEAAW7wAAFu9AABbwMAAW8SAAFvIQABbzAAAW8/AAFvSwABb10AAW9sAAFvewABb4oAAW+ZAAFvqAABb7cAAW/GAAFv2wABb9wAAW/kAAFv8AABcAQAAXATAAFwIgABcDEAAXA1AAFwRAABcFMAAXBiAAFwcQABcIAAAXCMAAFwngABcK0AAXC8AAFwywABcNoAAXDpAAFw+AABcQcAAXEcAAFxHQABcSUAAXExAAFxRQABcVQAAXFjAAFxcgABcXYAAXGFAAFxlAABcaMAAXGyAAFxwQABcc0AAXHfAAFx7gABcf0AAXIMAAFyGwABcioAAXI5AAFySAABcl0AAXJeAAFyZgABcnIAAXKGAAFylQABcqQAAXKzAAFytwABcsYAAXLVAAFy5AABcvMAAXMCAAFzDgABcyAAAXMvAAFzPgABc00AAXNcAAFzawABc3oAAXOJAAFzngABc58AAXOnAAFzswABc8cAAXPWAAFz5QABc/QAAXP4AAF0BwABdBYAAXQlAAF0NAABdEMAAXRPAAF0YQABdHAAAXR/AAF0jgABdJ0AAXSsAAF0uwABdMoAAXTfAAF04AABdOgAAXT0AAF1CAABdRcAAXUmAAF1NQABdTkAAXVIAAF1VwABdWYAAXV1AAF1hAABdZAAAXWiAAF1sQABdcAAAXXPAAF13gABde0AAXX8AAF2CwABdg4AAXYdAAF2LAABdjsAAXZQAAF2UQABdlkAAXZlAAF2eQABdogAAXaXAAF2pgABdqoAAXa5AAF2yAABdtcAAXbmAAF29QABdwEAAXcTAAF3IgABdzEAAXdAAAF3TwABd14AAXdtAAF3fAABd5EAAXeSAAF3mgABd6YAAXe6AAF3yQABd9gAAXfnAAF36wABd/oAAXgJAAF4GAABeCcAAXg2AAF4QgABeFQAAXhjAAF4cgABeIEAAXiQAAF4nwABeK4AAXi9AAF40gABeNMAAXjbAAF45wABePsAAXkKAAF5GQABeSgAAXksAAF5OwABeUoAAXlZAAF5aAABeXcAAXmDAAF5lQABeaQAAXmzAAF5wgABedEAAXngAAF57wABef4AAXoTAAF6FAABehwAAXooAAF6PAABeksAAXpaAAF6aQABem0AAXp8AAF6iwABepoAAXqpAAF6uAABesQAAXrWAAF65QABevQAAXsDAAF7EgABeyEAAXswAAF7PwABe1QAAXtVAAF7XQABe2kAAXt9AAF7jAABe5sAAXuqAAF7rgABe70AAXvMAAF72wABe+oAAXv5AAF8BQABfBcAAXwmAAF8NQABfEQAAXxTAAF8YgABfHEAAXyAAAF8lQABfJYAAXyeAAF8qgABfL4AAXzNAAF83AABfOsAAXzvAAF8/gABfQ0AAX0cAAF9KwABfToAAX1GAAF9WAABfWcAAX12AAF9hQABfZQAAX2jAAF9sgABfcEAAX3EAAF93gABfd8AAX3lAAF98QABfgcAAX4WAAF+GQABfigAAX43AAF+OgABfkkAAX5YAAF+WwABfmoAAX55AAF+fQABfowAAX6bAAF+nAABfrgAAX65AAF+ugABfrsAAX68AAF+vQABfr4AAX6/AAF+wAABfsEAAX7CAAF+wwABftgAAX7ZAAF+4QABfu0AAX8BAAF/EAABfx8AAX8uAAF/MgABf0EAAX9QAAF/XwABf24AAX99AAF/iQABf5sAAX+qAAF/uQABf8gAAX/XAAF/5gABf/UAAYAEAAGAGQABgBoAAYAiAAGALgABgEIAAYBRAAGAYAABgG8AAYBzAAGAggABgJEAAYCgAAGArwABgL4AAYDKAAGA3AABgOsAAYD6AAGBCQABgRgAAYEnAAGBNgABgUUAAYFaAAGBWwABgWMAAYFvAAGBgwABgZIAAYGhAAGBsAABgbQAAYHDAAGB0gABgeEAAYHwAAGB/wABggsAAYIdAAGCLAABgjsAAYJKAAGCWQABgmgAAYJ3AAGChgABgpsAAYKcAAGCpAABgrAAAYLEAAGC0wABguIAAYLxAAGC9QABgwQAAYMTAAGDIgABgzEAAYNAAAGDTAABg14AAYNtAAGDfAABg4sAAYOaAAGDqQABg7gAAYPHAAGD3AABg90AAYPlAAGD8QABhAUAAYQUAAGEIwABhDIAAYQ2AAGERQABhFQAAYRjAAGEcgABhIEAAYSNAAGEnwABhK4AAYS9AAGEzAABhNsAAYTqAAGE+QABhQgAAYUdAAGFHgABhSYAAYUyAAGFRgABhVUAAYVkAAGFcwABhXcAAYWGAAGFlQABhaQAAYWzAAGFwgABhc4AAYXgAAGF7wABhf4AAYYNAAGGHAABhisAAYY6AAGGSQABhl4AAYZfAAGGZwABhnMAAYaHAAGGlgABhqUAAYa0AAGGuAABhscAAYbWAAGG5QABhvQAAYcDAAGHDwABhyEAAYcwAAGHPwABh04AAYddAAGHbAABh3sAAYeKAAGHnwABh6AAAYeoAAGHtAABh8gAAYfXAAGH5gABh/UAAYf5AAGICAABiBcAAYgmAAGINQABiEQAAYhQAAGIYgABiHEAAYiAAAGIjwABiJ4AAYitAAGIvAABiMsAAYjgAAGI4QABiOkAAYj1AAGJCQABiRgAAYknAAGJNgABiToAAYlJAAGJWAABiWcAAYl2AAGJhQABiZEAAYmjAAGJsgABicEAAYnQAAGJ3wABie4AAYn9AAGKDAABiiEAAYoiAAGKKgABijYAAYpKAAGKWQABimgAAYp3AAGKewABiooAAYqZAAGKqAABircAAYrGAAGK0gABiuQAAYrzAAGLAgABixEAAYsgAAGLLwABiz4AAYtNAAGLYgABi2MAAYtrAAGLdwABi4sAAYuaAAGLqQABi7gAAYu8AAGLywABi9oAAYvpAAGL+AABjAcAAYwTAAGMJQABjDQAAYxDAAGMUgABjGEAAYxwAAGMfwABjI4AAYyjAAGMpAABjKwAAYy4AAGMzAABjNsAAYzqAAGM+QABjP0AAY0MAAGNGwABjSoAAY05AAGNSAABjVQAAY1mAAGNdQABjYQAAY2TAAGNogABjbEAAY3AAAGNzwABjdIAAY3sAAGN7QABjfMAAY3/AAGOFQABjiQAAY4nAAGONgABjkUAAY5IAAGOVwABjmYAAY5pAAGOeAABjocAAY6LAAGOmgABjqkAAY6qAAGOtgABjrcAAY64AAGOuQABjroAAY7PAAGO0AABjtgAAY7kAAGO+AABjwcAAY8WAAGPJQABjykAAY84AAGPRwABj1YAAY9lAAGPdAABj4AAAY+SAAGPoQABj7AAAY+/AAGPzgABj90AAY/sAAGP+wABkBAAAZARAAGQGQABkCUAAZA5AAGQSAABkFcAAZBmAAGQagABkHkAAZCIAAGQlwABkKYAAZC1AAGQwQABkNMAAZDiAAGQ8QABkQAAAZEPAAGRHgABkS0AAZE8AAGRUQABkVIAAZFaAAGRZgABkXoAAZGJAAGRmAABkacAAZGrAAGRugABkckAAZHYAAGR5wABkfYAAZICAAGSFAABkiMAAZIyAAGSQQABklAAAZJfAAGSbgABkm8AAZJ+AAGSkwABkpQAAZKcAAGSqAABkrwAAZLLAAGS2gABkukAAZLtAAGS/AABkwsAAZMaAAGTKQABkzgAAZNEAAGTVgABk2UAAZN0AAGTgwABk5IAAZOsAAGTrQABk7MAAZO/AAGT1QABk+QAAZPnAAGT9gABlAUAAZQIAAGUFwABlCYAAZQpAAGUOAABlEcAAZRLAAGUWgABlGkAAZRqAAGUfgABlH8AAZSAAAGUgQABlIIAAZSDAAGUhAABlIUAAZSaAAGUmwABlKMAAZSvAAGUwwABlNIAAZThAAGU8AABlPQAAZUDAAGVEgABlSEAAZUwAAGVPwABlUsAAZVdAAGVbAABlXsAAZWKAAGVmQABlagAAZW3AAGVxgABldsAAZXcAAGV5AABlfAAAZYEAAGWEwABliIAAZYxAAGWNQABlkQAAZZTAAGWYgABlnEAAZaAAAGWjAABlp4AAZatAAGWvAABlssAAZbaAAGW6QABlvgAAZb5AAGXCAABlx0AAZceAAGXJgABlzIAAZdGAAGXVQABl2QAAZdzAAGXdwABl4YAAZeVAAGXpAABl7MAAZfCAAGXzgABl+AAAZfvAAGX/gABmA0AAZgcAAGYKwABmDoAAZg7AAGYSgABmF8AAZhgAAGYaAABmHQAAZiIAAGYlwABmKYAAZi1AAGYuQABmMgAAZjXAAGY5gABmPUAAZkEAAGZEAABmSIAAZkxAAGZQAABmU8AAZleAAGZeAABmXkAAZl/AAGZiwABmaEAAZmwAAGZswABmcIAAZnRAAGZ1AABmeMAAZnyAAGZ9QABmgQAAZoTAAGaFwABmiYAAZo1AAGaNgABmkAAAZpBAAGaQgABmkMAAZpYAAGaWQABmmEAAZptAAGagQABmpAAAZqfAAGargABmrIAAZrBAAGa0AABmt8AAZruAAGa/QABmwkAAZsbAAGbKgABmzkAAZtIAAGbVwABm2YAAZt1AAGbdgABm4UAAZuaAAGbmwABm6MAAZuvAAGbwwABm9IAAZvhAAGb8AABm/QAAZwDAAGcEgABnCEAAZwwAAGcPwABnEsAAZxdAAGcbAABnHsAAZyKAAGcmQABnKgAAZy3AAGcuAABnMcAAZzcAAGc3QABnOUAAZzxAAGdBQABnRQAAZ0jAAGdMgABnTYAAZ1FAAGdVAABnWMAAZ1yAAGdgQABnY0AAZ2fAAGdrgABnb0AAZ3MAAGd2wABneoAAZ35AAGeCAABngsAAZ4aAAGeKQABnjgAAZ5NAAGeTgABnlYAAZ5iAAGedgABnoUAAZ6UAAGeowABnqcAAZ62AAGexQABntQAAZ7jAAGe8gABnv4AAZ8QAAGfHwABny4AAZ89AAGfTAABn2YAAZ9nAAGfbQABn3kAAZ+PAAGfngABn6EAAZ+wAAGfsQABn8AAAZ/DAAGf0gABn+EAAZ/kAAGf8wABoAIAAaAGAAGgFQABoCQAAaAlAAGgMQABoDIAAaAzAAGgNAABoDUAAaBKAAGgSwABoFMAAaBfAAGgcwABoIIAAaCRAAGgoAABoKQAAaCzAAGgwgABoNEAAaDgAAGg7wABoPsAAaENAAGhHAABoSsAAaE6AAGhSQABoVgAAaFnAAGhaAABoXcAAaGMAAGhjQABoZUAAaGhAAGhtQABocQAAaHTAAGh4gABoeYAAaH1AAGiBAABohMAAaIiAAGiMQABoj0AAaJPAAGiXgABom0AAaJ8AAGiiwABopoAAaKpAAGiqgABorkAAaLOAAGizwABotcAAaLjAAGi9wABowYAAaMVAAGjJAABoygAAaM3AAGjRgABo1UAAaNkAAGjcwABo38AAaORAAGjoAABo68AAaO+AAGjzQABo9wAAaPrAAGj7AABo/sAAaQQAAGkEQABpBkAAaQlAAGkOQABpEgAAaRXAAGkZgABpGoAAaR5AAGkiAABpJcAAaSmAAGktQABpMEAAaTTAAGk4gABpPEAAaUAAAGlDwABpR4AAaUtAAGlPAABpT8AAaVOAAGlXQABpWwAAaWBAAGlggABpYoAAaWWAAGlqgABpbkAAaXIAAGl1wABpdsAAaXqAAGl+QABpggAAaYXAAGmJgABpjIAAaZEAAGmUwABpmIAAaZxAAGmgAABpo8AAaaeAAGmrQABpsIAAabDAAGmywABptcAAabrAAGm+gABpwkAAacYAAGnHAABpysAAac6AAGnSQABp1gAAadnAAGncwABp4UAAaeUAAGnowABp7IAAafBAAGn0AABp98AAafuAAGoAwABqAQAAagMAAGoGAABqCwAAag7AAGoSgABqFkAAahdAAGobAABqHsAAaiKAAGomQABqKgAAai0AAGoxgABqNUAAajkAAGo8wABqQIAAakRAAGpIAABqSEAAakwAAGpMwABqUIAAalRAAGpYAABqWMAAal9AAGpfgABqYQAAamQAAGppgABqbUAAam4AAGpxwABqdYAAanaAAGp3wABqeAAAanhAAGp8AABqf8AAaoCAAGqEQABqiAAAaokAAGqMwABqkIAAapDAAGqSwABqkwAAaphAAGqYgABqmoAAap2AAGqigABqpkAAaqoAAGqtwABqrsAAarKAAGq2QABqugAAar3AAGrBgABqxIAAaskAAGrMwABq0IAAatRAAGrYAABq28AAat+AAGrjQABq6IAAaujAAGrqwABq7cAAavLAAGr2gABq+kAAav4AAGr/AABrAsAAawaAAGsKQABrDgAAaxHAAGsUwABrGUAAax0AAGsgwABrJIAAayhAAGssAABrL8AAazOAAGs0QABrOsAAazsAAGs8gABrP4AAa0UAAGtIwABrSYAAa01AAGtRAABrUgAAa1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AAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACbAAAAnAAAAJ0AAACeAAAAnwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAAK8AAACwAAAAsQAAALIAAACzgEGBAzOBB0OBFb2BFsCBG7iBAoSBHAGBHauBFISBDBmBEemBHt+BFmKBDKaBDY6BDe2BIQSBIUuBH1GBEMuBCc+BIcOBDcSBFCiBIgiBIkyBBWiBIsKBD26BFdSBH8eBB4aBFjOBC3eBGMuBCC+BGXmBIx+BCAOBF6+BCLaBI2aBID2BE2uBI9yBAfiBBACBGD+BE5qBDm2BJCKBDNWBHEiBEG6BJSyBC0KBA4SBDWWAY18QE09idk9ibGl2aW91c0NoYW5uZWxcSW5ib3hNZXNzYWdlXUNvbnRhY3REZXZpY2VfEBZJZGVudGl0eVNlcnZlclVzZXJEYXRhXxAVT3V0Ym94QXR0YWNobWVudENodW5rXxAXUGVuZGluZ0RlbGV0ZUZyb21TZXJ2ZXJbS2V5TWF0ZXJpYWxWQmFja3VwXxAWU2VydmVyUHVzaE5vdGlmaWNhdGlvbl8QFFBlcnNpc3RlZFRydXN0T3JpZ2luXxASUGVuZGluZ0dyb3VwTWVtYmVyXxAXS2V5Y2xvYWtSZXZva2VkSWRlbnRpdHlfEBxMaW5rQmV0d2VlblByb3RvY29sSW5zdGFuY2VzXxAVR3JvdXBWMlNlcnZlclVzZXJEYXRhXxAcQ29udGFjdEdyb3VwRGV0YWlsc1B1Ymxpc2hlZF8QEUNvbnRhY3RHcm91cE93bmVkXxASQ29udGFjdEdyb3VwSm9pbmVkXxAkVHJ1c3RFc3RhYmxpc2htZW50Q29tbWl0bWVudFJlY2VpdmVkXxAURGVsZXRlZE91dGJveE1lc3NhZ2VfEBBQcm90b2NvbEluc3RhbmNlXktleWNsb2FrU2VydmVyXxAbQ29udGFjdEdyb3VwVjJQZW5kaW5nTWVtYmVyXxAtQ29udGFjdE93bmVkSWRlbnRpdHlEZWxldGlvblNpZ25hdHVyZVJlY2VpdmVkXxAaQ29udGFjdEdyb3VwRGV0YWlsc1RydXN0ZWRfEB1Db250YWN0SWRlbnRpdHlEZXRhaWxzVHJ1c3RlZF8QGEdyb3VwVjJTaWduYXR1cmVSZWNlaXZlZF8QElBlbmRpbmdTZXJ2ZXJRdWVyeV8QFkluYm94QXR0YWNobWVudFNlc3Npb25fEA9DYWNoZWRXZWxsS25vd25bT3duZWREZXZpY2VeU2VydmVyVXNlckRhdGFfEDBDaGFubmVsQ3JlYXRpb25XaXRoQ29udGFjdERldmljZVByb3RvY29sSW5zdGFuY2VfEA9Db250YWN0SWRlbnRpdHlfEBNHcm91cFNlcnZlclVzZXJEYXRhXENvbnRhY3RHcm91cF1PdXRib3hNZXNzYWdlXkNvbnRhY3RHcm91cFYyXU1lc3NhZ2VIZWFkZXJfEBVQZXJzaXN0ZWRFbmdpbmVEaWFsb2dfEBRDb250YWN0R3JvdXBWMk1lbWJlcl8QEE91dGJveEF0dGFjaG1lbnRfEBVDb250YWN0R3JvdXBWMkRldGFpbHNdU2VydmVyU2Vzc2lvbl8QMlByb3RvY29sSW5zdGFuY2VXYWl0aW5nRm9yQ29udGFjdFVwZ3JhZGVUb09uZVRvT25lXxAfQ29udGFjdElkZW50aXR5RGV0YWlsc1B1Ymxpc2hlZF8QG011dHVhbFNjYW5TaWduYXR1cmVSZWNlaXZlZFlQcm92aXNpb25fEBRJbmJveEF0dGFjaG1lbnRDaHVua18QF091dGJveEF0dGFjaG1lbnRTZXNzaW9uXxAWQ29udGFjdElkZW50aXR5RGV0YWlsc18QHU93bmVkSWRlbnRpdHlEZXRhaWxzUHVibGlzaGVkXxAPUmVjZWl2ZWRNZXNzYWdlXxATQ29udGFjdEdyb3VwRGV0YWlsc1lCYWNrdXBLZXlfEBdPd25lZElkZW50aXR5TWFza2luZ1VJRF8QJENoYW5uZWxDcmVhdGlvblBpbmdTaWduYXR1cmVSZWNlaXZlZF1Pd25lZElkZW50aXR5XxAPSW5ib3hBdHRhY2htZW50XxAZQ29udGFjdEdyb3VwRGV0YWlsc0xhdGVzdN8QEAAAAPEAAADyAAAA8wAAAPQAAAAhAAAA9QAAAPYAAAAjAAAA9wAAAPgAAAAOAAAAJQAAAPkAAAD6AAAAKAAAAPsAAAD8AAAA/QAAACkAAAApAAAAFAAAAQEAAAECAAAAMQAAACkAAAD8AAABBQAAAD0AAAD8AAABCAAAAQkAAAEKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gEOAa4AEgASAAoBEgQMRgASAQ4EDE4AGgEOBAzKAQggSLKBkD1dvcmRlcmVk0wAAADoAAAA7AAAADgAAAQ4AAAEQAAAAtKEAAAEPgEWhAAABEYBGgGNeWERfUFN0ZXJlb3R5cGXZAAAAIQAAACUAAAEVAAAADgAAACgAAAEWAAAAIwAAAPsAAAEXAAAAeQAAAQ8AAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAAEfXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgEGARYBDgGqAAIAECIBH0wAAADoAAAA7AAAADgAAASEAAAErAAAAtKkAAAEiAAABIwAAASQAAAElAAABJgAAAScAAAEoAAABKQAAASqASIBJgEqAS4BMgE2AToBPgFCpAAABLAAAAS0AAAEuAAABLwAAATAAAAExAAABMgAAATMAAAE0gFGAVYBWgFyAXYBfgGGAZIBogGNfEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGVhEUE1VbmlxdWVuZXNzQ29uc3RyYWl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QOG51bWJlck9mRGVjcnlwdGVkTWVzc2FnZXNTaW5jZUxhc3RGdWxsUmF0Y2hldFNlbnRNZXNzYWdlXxA2bnVtYmVyT2ZFbmNyeXB0ZWRNZXNzYWdlc0F0VGhlVGltZU9mVGhlTGFzdEZ1bGxSYXRjaGV0XxAlYUZ1bGxSYXRjaGV0T2ZUaGVTZW5kU2VlZElzSW5Qcm9ncmVzc18QJXRpbWVzdGFtcE9mTGFzdEZ1bGxSYXRjaGV0U2VudE1lc3NhZ2VfEBRyZW1vdGVDcnlwdG9JZGVudGl0eV8QEGN1cnJlbnREZXZpY2VVaWRfEBJjcnlwdG9TdWl0ZVZlcnNpb25fECJmdWxsUmF0Y2hldGluZ0NvdW50T2ZMYXN0UHJvdmlzaW9uXxAadGltZXN0YW1wT2ZMYXN0RnVsbFJhdGNoZXRbaXNDb25maXJtZWRfEBludW1iZXJPZkVuY3J5cHRlZE1lc3NhZ2VzXxA4bnVtYmVyT2ZFbmNyeXB0ZWRNZXNzYWdlc1NpbmNlTGFzdEZ1bGxSYXRjaGV0U2VudE1lc3NhZ2VacHJvdmlzaW9uc98QEgAAAUAAAAFBAAABQgAAAkQAAAAhAAABRAAAAUUAAAJFAAAAIwAAAUMAAAJGAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAAB5AAABCgAAAQoAAAJOAAAAMQAAAQoAAAD8AAABCgAAAlIAAAIUAAABCgAAAQoAAAJWAAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgEEICIB9CIBDCIClgGwICIB8CBJ1soEP0wAAADoAAAA7AAAADgAAAloAAAJdAAAAtKIAAAJbAAACXIB+gH+iAAACXgAAAl+AgICTgGNfEBJYRF9QUHJvcFN0ZXJlb3R5cGVfEBJYRF9QQXR0X1N0ZXJlb3R5cGXZAAAAIQAAACUAAAJkAAAADgAAACgAAAJlAAAAIwAAAPsAAAJmAAACJAAAAlsAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAAJuXxAhWERCdWNrZXRGb3JPd25lZEF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BCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwAAAAQoAAAEKAAAAFwAAAQqAAIEB84AAgQtxCAgICIBUgQHtCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAmwAAABcAAI6xAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwQAAAQoAAAEKAAAAFwAAAQqAAIELd4AAgQtxCAgICIBUgQHuCAiAAAjfEBQAAAD7AACPqgAAj6sAAI+sAACPrQAAj64AAI+vAAAAIQAAAA4AAI+wAAAAJQAAj7EAAAAoAACPsgAAj7MAAI+0AACPtQAAj7YAAI+3AAAAIwAABCwAAAD8AAAA/AAAj7sAAAApAAABAgAAAPwAAAAUAAABBQAAACkAAABfAACPwwAAj8QAAAApAAAAKQAAAPwAAI/IAACPyQAAAQIAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYBDgEOBC3mABIEDEYBDgAKBAxOABIAogQ5UgQt4gASABIBDgQuKgQ5VgQMREoHk/PnTAAAAOgAAADsAAAAOAACPzQAAj88AAAC0oQAAAQ+ARaEAAI/QgQt6gGPZAAAAIQAAACUAAI/TAAAADgAAACgAAI/UAAAAIwAAAPsAAI/VAAAAmwAAAQ8AAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAI/dXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQt3gEWAQ4BqgACABAiBC3vTAAAAOgAAADsAAAAOAACP3wAAj+kAAAC0qQAAASIAAAEjAAABJAAAASUAAAEmAAABJwAAASgAAAEpAAABKoBIgEmASoBLgEyATYBOgE+AUKkAAI/qAACP6wAAj+wAAI/tAACP7gAAj+8AAI/wAACP8QAAj/KBC3yBC36BC3+BC4GBC4KBC4SBC4WBC4eBC4iAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAI/2AAAAFwAAj9AAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEiAAABCgAAAQoAAAAXAAABCoAAgQt9gACBC3oICAgIgFSASAgIgAAI0gAAADsAAAAOAACQBAAAAVqggFPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAI/QAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABIwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBC3oICAgIgFSASQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAkBcAAAAXAACP0AAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASQAAAEKAAABCgAAABcAAAEKgACBC4CAAIELeggICAiAVIBKCAiAAAjSAAAAOwAAAA4AAJAlAAABWqCAU98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAj9AAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAElAAABCgAAAQoAAAAXAAABCoAAgACAAIELeggICAiAVIBLCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACQOAAAABcAAI/QAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABJgAAAQoAAAEKAAAAFwAAAQqAAIELg4AAgQt6CAgICIBUgEwICIAACNIAAAA7AAAADgAAkEYAAAFaoIBT3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABB8AAAAXAACP0AAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAScAAAEKAAABCgAAABcAAAEKgACAsYAAgQt6CAgICIBUgE0ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJBZAAAAFwAAj9AAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEoAAABCgAAAQoAAAAXAAABCoAAgQuGgACBC3oICAgIgFSATggIgAAI0wAAADoAAAA7AAAADgAAkGcAAJBoAAAAtKCggGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAB3QAAABcAAI/QAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABKQAAAQoAAAEKAAAAFwAAAQqAAIBlgACBC3oICAgIgFSATwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAkHsAAAAXAACP0AAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASoAAAEKAAABCgAAABcAAAEKgACBC4mAAIELeggICAiAVIBQCAiAAAhcQ29udGFjdEdyb3Vw0wAAADoAAAA7AAAADgAAkIoAAJCRAAAAtKYAAJCLAACQjAAAkI0AAJCOAACQjwAAkJCBC4uBC4yBC42BC46BC4+BC5CmAACQkgAAkJMAAJCUAACQlQAAkJYAAJCXgQuRgQuogQu/gQvXgQwFgQySgGNdb3duZWRJZGVudGl0eV8QE2dyb3VwTWVtYmVyc1ZlcnNpb25YZ3JvdXBVaWRcZ3JvdXBNZW1iZXJzXxATcGVuZGluZ0dyb3VwTWVtYmVyc18QEHB1Ymxpc2hlZERldGFpbHPfEBIAAAFAAAABQQAAAUIAAJCgAAAAIQAAAUQAAAFFAACQoQAAACMAAAFDAACQogAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAApAAAAmwAAAQoAAAEKAACQqgAAADEAAAEKAAAA/AAAAQoAABQEAACQiwAAAQoAAAEKAACQsgAAAQpfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIELdwgIgQuTCIBDCIECb4ELiwgIgQuSCBLgPAoX0wAAADoAAAA7AAAADgAAkLYAAJC5AAAAtKIAAAJbAAAUDoB+gQHdogAAkLoAAJC7gQuUgQufgGPZAAAAIQAAACUAAJC+AAAADgAAACgAAJC/AAAAIwAAAPsAAJDAAACQkgAAAlsAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAJDIXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQuRgH6AQ4BqgACABAiBC5XTAAAAOgAAADsAAAAOAACQygAAkNMAAAC0qAAAAnEAAAJyAAACcwAAAnQAAAJ1AAACdgAAAncAAAJ4gIKAg4CEgIWAhoCHgIiAiagAAJDUAACQ1QAAkNYAAJDXAACQ2AAAkNkAAJDaAACQ24ELloELl4ELmIELmoELm4ELnIELnYELnoBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACQugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnEAAAEKAAABCgAAABcAAAEKgACAYIAAgQuUCAgICIBUgIIICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAkLoAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJyAAABCgAAAQoAAAAXAAABCoAAgACAAIELlAgICAiAVICDCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACQ/QAAABcAAJC6AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcwAAAQoAAAEKAAAAFwAAAQqAAIELmYAAgQuUCAgICIBUgIQICIAACNMAAAA6AAAAOwAAAA4AAJELAACRDAAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACQugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnQAAAEKAAABCgAAABcAAAEKgACAYIAAgQuUCAgICIBUgIUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAkLoAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ1AAABCgAAAQoAAAAXAAABCoAAgGCAAIELlAgICAiAVICGCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJC6AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdgAAAQoAAAEKAAAAFwAAAQqAAIBggACBC5QICAgIgFSAhwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACQugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAncAAAEKAAABCgAAABcAAAEKgACAAIAAgQuUCAgICIBUgIgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAkLoAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ4AAABCgAAAQoAAAAXAAABCoAAgGCAAIELlAgICAiAVICJCAiAAAjZAAAAIQAAACUAAJFaAAAADgAAACgAAJFbAAAAIwAAAPsAAJFcAACQkgAAFA4AAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAJFkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQuRgQHdgEOAaoAAgAQIgQug0wAAADoAAAA7AAAADgAAkWYAAJFuAAAAtKcAABS+AAAUvwAAFMAAABTBAAAUwgAAFMMAABTEgQHrgQHsgQHtgQHugQHvgQHwgQHxpwAAkW8AAJFwAACRcQAAkXIAAJFzAACRdAAAkXWBC6GBC6KBC6OBC6SBC6WBC6aBC6eAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAABTXAAAAFwAAkLsAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABS+AAABCgAAAQoAAAAXAAABCoAAgQHzgACBC58ICAgIgFSBAesICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAABqsAAAAFwAAkLsAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABS/AAABCgAAAQoAAAAXAAABCoAAgQJpgACBC58ICAgIgFSBAewICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAABqsAAAAFwAAkLsAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTAAAABCgAAAQoAAAAXAAABCoAAgQJpgACBC58ICAgIgFSBAe0ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAACxAAAAFwAAkLsAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTBAAABCgAAAQoAAAAXAAABCoAAgQtCgACBC58ICAgIgFSBAe4ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAkLsAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTCAAABCgAAAQoAAAAXAAABCoAAgGCAAIELnwgICAiAVIEB7wgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACQuwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMMAAAEKAAABCgAAABcAAAEKgACAYIAAgQufCAgICIBUgQHwCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACOegAAABcAAJC7AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUxAAAAQoAAAEKAAAAFwAAAQqAAIELY4AAgQufCAgICIBUgQHxCAiAAAjfEBIAAAFAAAABQQAAAUIAAJHhAAAAIQAAAUQAAAFFAACR4gAAACMAAAFDAACR4wAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAApAAAAmwAAAQoAAAEKAACR6wAAADEAAAEKAAAA/AAAAQoAAAJSAACQjAAAAQoAAAEKAACR8wAAAQpfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIELdwgIgQuqCIBDCIClgQuMCAiBC6kIEpE25MbTAAAAOgAAADsAAAAOAACR9wAAkfoAAAC0ogAAAlsAAAJcgH6Af6IAAJH7AACR/IELq4ELtoBj2QAAACEAAAAlAACR/wAAAA4AAAAoAACSAAAAACMAAAD7AACSAQAAkJMAAAJbAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAACSCV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYELqIB+gEOAaoAAgAQIgQus0wAAADoAAAA7AAAADgAAkgsAAJIUAAAAtKgAAAJxAAACcgAAAnMAAAJ0AAACdQAAAnYAAAJ3AAACeICCgIOAhICFgIaAh4CIgImoAACSFQAAkhYAAJIXAACSGAAAkhkAAJIaAACSGwAAkhyBC62BC66BC6+BC7GBC7KBC7OBC7SBC7WAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAkfsAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJxAAABCgAAAQoAAAAXAAABCoAAgGCAAIELqwgICAiAVICCCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJH7AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcgAAAQoAAAEKAAAAFwAAAQqAAIAAgACBC6sICAgIgFSAgwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAkj4AAAAXAACR+wAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnMAAAEKAAABCgAAABcAAAEKgACBC7CAAIELqwgICAiAVICECAiAAAjTAAAAOgAAADsAAAAOAACSTAAAkk0AAAC0oKCAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAkfsAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ0AAABCgAAAQoAAAAXAAABCoAAgGCAAIELqwgICAiAVICFCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJH7AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdQAAAQoAAAEKAAAAFwAAAQqAAIBggACBC6sICAgIgFSAhggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACR+wAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnYAAAEKAAABCgAAABcAAAEKgACAYIAAgQurCAgICIBUgIcICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAkfsAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ3AAABCgAAAQoAAAAXAAABCoAAgACAAIELqwgICAiAVICICAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJH7AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACeAAAAQoAAAEKAAAAFwAAAQqAAIBggACBC6sICAgIgFSAiQgIgAAI2QAAACEAAAAlAACSmwAAAA4AAAAoAACSnAAAACMAAAD7AACSnQAAkJMAAAJcAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAACSpV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYELqIB/gEOAaoAAgAQIgQu30wAAADoAAAA7AAAADgAAkqcAAJKvAAAAtKcAAAMVAAADFgAAAxcAAAMYAAADGQAAAxoAAAMbgJWAloCXgJiAmYCagJunAACSsAAAkrEAAJKyAACSswAAkrQAAJK1AACStoELuIELuYELuoELu4ELvIELvYELvoBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACR/AAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxUAAAEKAAABCgAAABcAAAEKgACAAIAAgQu2CAgICIBUgJUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAkfwAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMWAAABCgAAAQoAAAAXAAABCoAAgGCAAIELtggICAiAVICWCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAFvAAAABcAAJH8AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADFwAAAQoAAAEKAAAAFwAAAQqAAIDQgACBC7YICAgIgFSAlwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABeoAAAAXAACR/AAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxgAAAEKAAABCgAAABcAAAEKgACA1IAAgQu2CAgICIBUgJgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAkfwAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMZAAABCgAAAQoAAAAXAAABCoAAgACAAIELtggICAiAVICZCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJH8AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGgAAAQoAAAEKAAAAFwAAAQqAAIAAgACBC7YICAgIgFSAmggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACR/AAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxsAAAEKAAABCgAAABcAAAEKgACAAIAAgQu2CAgICIBUgJsICIAACN8QEgAAAUAAAAFBAAABQgAAkyIAAAAhAAABRAAAAUUAAJMjAAAAIwAAAUMAAJMkAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAACbAAABCgAAAQoAAJMsAAAAMQAAAQoAAAD8AAABCgAAAlIAAJCNAAABCgAAAQoAAJM0AAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQt3CAiBC8EIgEMIgKWBC40ICIELwAgSdQBchtMAAAA6AAAAOwAAAA4AAJM4AACTOwAAALSiAAACWwAAAlyAfoB/ogAAkzwAAJM9gQvCgQvNgGPZAAAAIQAAACUAAJNAAAAADgAAACgAAJNBAAAAIwAAAPsAAJNCAACQlAAAAlsAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAJNKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQu/gH6AQ4BqgACABAiBC8PTAAAAOgAAADsAAAAOAACTTAAAk1UAAAC0qAAAAnEAAAJyAAACcwAAAnQAAAJ1AAACdgAAAncAAAJ4gIKAg4CEgIWAhoCHgIiAiagAAJNWAACTVwAAk1gAAJNZAACTWgAAk1sAAJNcAACTXYELxIELxYELxoELyIELyYELyoELy4ELzIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACTPAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnEAAAEKAAABCgAAABcAAAEKgACAYIAAgQvCCAgICIBUgIIICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAkzwAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJyAAABCgAAAQoAAAAXAAABCoAAgACAAIELwggICAiAVICDCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACTfwAAABcAAJM8AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcwAAAQoAAAEKAAAAFwAAAQqAAIELx4AAgQvCCAgICIBUgIQICIAACNMAAAA6AAAAOwAAAA4AAJONAACTjgAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACTPAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnQAAAEKAAABCgAAABcAAAEKgACAYIAAgQvCCAgICIBUgIUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAkzwAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ1AAABCgAAAQoAAAAXAAABCoAAgGCAAIELwggICAiAVICGCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJM8AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdgAAAQoAAAEKAAAAFwAAAQqAAIBggACBC8IICAgIgFSAhwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACTPAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAncAAAEKAAABCgAAABcAAAEKgACAAIAAgQvCCAgICIBUgIgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAkzwAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ4AAABCgAAAQoAAAAXAAABCoAAgGCAAIELwggICAiAVICJCAiAAAjZAAAAIQAAACUAAJPcAAAADgAAACgAAJPdAAAAIwAAAPsAAJPeAACQlAAAAlwAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAJPmXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQu/gH+AQ4BqgACABAiBC87TAAAAOgAAADsAAAAOAACT6AAAk/AAAAC0pwAAAxUAAAMWAAADFwAAAxgAAAMZAAADGgAAAxuAlYCWgJeAmICZgJqAm6cAAJPxAACT8gAAk/MAAJP0AACT9QAAk/YAAJP3gQvPgQvQgQvRgQvSgQvTgQvUgQvWgGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJM9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADFQAAAQoAAAEKAAAAFwAAAQqAAIAAgACBC80ICAgIgFSAlQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACTPQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxYAAAEKAAABCgAAABcAAAEKgACAYIAAgQvNCAgICIBUgJYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAkz0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMXAAABCgAAAQoAAAAXAAABCoAAgACAAIELzQgICAiAVICXCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAADWwAAABcAAJM9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGAAAAQoAAAEKAAAAFwAAAQqAAICggACBC80ICAgIgFSAmAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACTPQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxkAAAEKAAABCgAAABcAAAEKgACAAIAAgQvNCAgICIBUgJkICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJRGAAAAFwAAkz0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMaAAABCgAAAQoAAAAXAAABCoAAgQvVgACBC80ICAgIgFSAmggIgAAIXlVJRFRyYW5zZm9ybWVy3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACTPQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxsAAAEKAAABCgAAABcAAAEKgACAAIAAgQvNCAgICIBUgJsICIAACN8QEgAAAUAAAAFBAAABQgAAlGQAAAAhAAABRAAAAUUAAJRlAAAAIwAAAUMAAJRmAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAACbAAABCgAAAQoAAJRuAAAAMQAAAQoAAAD8AAABCgAAFAQAAJCOAAABCgAAAQoAAJR2AAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQt3CAiBC9kIgEMIgQJvgQuOCAiBC9gIErF0SLHTAAAAOgAAADsAAAAOAACUegAAlH0AAAC0ogAAAlsAABQOgH6BAd2iAACUfgAAlH+BC9qBC+WAY9kAAAAhAAAAJQAAlIIAAAAOAAAAKAAAlIMAAAAjAAAA+wAAlIQAAJCVAAACWwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAlIxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC9eAfoBDgGqAAIAECIEL29MAAAA6AAAAOwAAAA4AAJSOAACUlwAAALSoAAACcQAAAnIAAAJzAAACdAAAAnUAAAJ2AAACdwAAAniAgoCDgISAhYCGgIeAiICJqAAAlJgAAJSZAACUmgAAlJsAAJScAACUnQAAlJ4AAJSfgQvcgQvdgQvegQvggQvhgQvigQvjgQvkgGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJR+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcQAAAQoAAAEKAAAAFwAAAQqAAIBggACBC9oICAgIgFSAgggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACUfgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnIAAAEKAAABCgAAABcAAAEKgACAAIAAgQvaCAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJTBAAAAFwAAlH4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgQvfgACBC9oICAgIgFSAhAgIgAAI0wAAADoAAAA7AAAADgAAlM8AAJTQAAAAtKCggGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJR+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdAAAAQoAAAEKAAAAFwAAAQqAAIBggACBC9oICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACUfgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAYIAAgQvaCAgICIBUgIYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAlH4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ2AAABCgAAAQoAAAAXAAABCoAAgGCAAIEL2ggICAiAVICHCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJR+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBC9oICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACUfgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgQvaCAgICIBUgIkICIAACNkAAAAhAAAAJQAAlR4AAAAOAAAAKAAAlR8AAAAjAAAA+wAAlSAAAJCVAAAUDgAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAlShfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC9eBAd2AQ4BqgACABAiBC+bTAAAAOgAAADsAAAAOAACVKgAAlTIAAAC0pwAAFL4AABS/AAAUwAAAFMEAABTCAAAUwwAAFMSBAeuBAeyBAe2BAe6BAe+BAfCBAfGnAACVMwAAlTQAAJU1AACVNgAAlTcAAJU4AACVOYEL54EL6IEL6YEL6oEL64EL7IEL7YBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAFNcAAAAXAACUfwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFL4AAAEKAAABCgAAABcAAAEKgACBAfOAAIEL5QgICAiAVIEB6wgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAGqwAAAAXAACUfwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFL8AAAEKAAABCgAAABcAAAEKgACBAmmAAIEL5QgICAiAVIEB7AgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAFNcAAAAXAACUfwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMAAAAEKAAABCgAAABcAAAEKgACBAfOAAIEL5QgICAiAVIEB7QgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAJkAAAAXAACUfwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMEAAAEKAAABCgAAABcAAAEKgACBB4aAAIEL5QgICAiAVIEB7ggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABB8AAAAXAACUfwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMIAAAEKAAABCgAAABcAAAEKgACAsYAAgQvlCAgICIBUgQHvCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJR/AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwwAAAQoAAAEKAAAAFwAAAQqAAIBggACBC+UICAgIgFSBAfAICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAF4sAAAAFwAAlH8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTEAAABCgAAAQoAAAAXAAABCoAAgQvugACBC+UICAgIgFSBAfEICIAACN8QEgAAAUAAAAFBAAABQgAAlaUAAAAhAAABRAAAAUUAAJWmAAAAIwAAAUMAAJWnAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAACZAAABCgAAAQoAAJWvAAAAMQAAAQoAAAD8AAABCgAAFAQAAF4cAAABCgAAAQoAAJW3AAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQeGCAiBC/AIgEMIgQJvgQefCAiBC+8IEpyCMaTTAAAAOgAAADsAAAAOAACVuwAAlb4AAAC0ogAAAlsAABQOgH6BAd2iAACVvwAAlcCBC/GBC/yAY9kAAAAhAAAAJQAAlcMAAAAOAAAAKAAAlcQAAAAjAAAA+wAAlcUAAF4sAAACWwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAlc1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC+6AfoBDgGqAAIAECIEL8tMAAAA6AAAAOwAAAA4AAJXPAACV2AAAALSoAAACcQAAAnIAAAJzAAACdAAAAnUAAAJ2AAACdwAAAniAgoCDgISAhYCGgIeAiICJqAAAldkAAJXaAACV2wAAldwAAJXdAACV3gAAld8AAJXggQvzgQv0gQv1gQv3gQv4gQv5gQv6gQv7gGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJW/AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcQAAAQoAAAEKAAAAFwAAAQqAAIBggACBC/EICAgIgFSAgggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACVvwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnIAAAEKAAABCgAAABcAAAEKgACAAIAAgQvxCAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJYCAAAAFwAAlb8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgQv2gACBC/EICAgIgFSAhAgIgAAI0wAAADoAAAA7AAAADgAAlhAAAJYRAAAAtKCggGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJW/AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdAAAAQoAAAEKAAAAFwAAAQqAAIBggACBC/EICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACVvwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAYIAAgQvxCAgICIBUgIYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAlb8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ2AAABCgAAAQoAAAAXAAABCoAAgGCAAIEL8QgICAiAVICHCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJW/AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBC/EICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACVvwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgQvxCAgICIBUgIkICIAACNkAAAAhAAAAJQAAll8AAAAOAAAAKAAAlmAAAAAjAAAA+wAAlmEAAF4sAAAUDgAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAlmlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC+6BAd2AQ4BqgACABAiBC/3TAAAAOgAAADsAAAAOAACWawAAlnMAAAC0pwAAFL4AABS/AAAUwAAAFMEAABTCAAAUwwAAFMSBAeuBAeyBAe2BAe6BAe+BAfCBAfGnAACWdAAAlnUAAJZ2AACWdwAAlngAAJZ5AACWeoEL/oEL/4EMAIEMAYEMAoEMA4EMBIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAFNcAAAAXAACVwAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFL4AAAEKAAABCgAAABcAAAEKgACBAfOAAIEL/AgICAiAVIEB6wgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAGqwAAAAXAACVwAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFL8AAAEKAAABCgAAABcAAAEKgACBAmmAAIEL/AgICAiAVIEB7AgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAFNcAAAAXAACVwAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMAAAAEKAAABCgAAABcAAAEKgACBAfOAAIEL/AgICAiAVIEB7QgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAJsAAAAXAACVwAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMEAAAEKAAABCgAAABcAAAEKgACBC3eAAIEL/AgICAiAVIEB7ggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABB8AAAAXAACVwAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMIAAAEKAAABCgAAABcAAAEKgACAsYAAgQv8CAgICIBUgQHvCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJXAAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwwAAAQoAAAEKAAAAFwAAAQqAAIBggACBC/wICAgIgFSBAfAICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJCVAAAAFwAAlcAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTEAAABCgAAAQoAAAAXAAABCoAAgQvXgACBC/wICAgIgFSBAfEICIAACN8QEgAAAUAAAAFBAAABQgAAluYAAAAhAAABRAAAAUUAAJbnAAAAIwAAAUMAAJboAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAACbAAABCgAAAQoAAJbwAAAAMQAAAQoAAAD8AAABCgAAFAQAAJCPAAABCgAAAQoAAJb4AAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQt3CAiBDAcIgEMIgQJvgQuPCAiBDAYIEmIUfcnTAAAAOgAAADsAAAAOAACW/AAAlv8AAAC0ogAAAlsAABQOgH6BAd2iAACXAAAAlwGBDAiBDBOAY9kAAAAhAAAAJQAAlwQAAAAOAAAAKAAAlwUAAAAjAAAA+wAAlwYAAJCWAAACWwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAlw5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDAWAfoBDgGqAAIAECIEMCdMAAAA6AAAAOwAAAA4AAJcQAACXGQAAALSoAAACcQAAAnIAAAJzAAACdAAAAnUAAAJ2AAACdwAAAniAgoCDgISAhYCGgIeAiICJqAAAlxoAAJcbAACXHAAAlx0AAJceAACXHwAAlyAAAJchgQwKgQwLgQwMgQwOgQwPgQwQgQwRgQwSgGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJcAAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcQAAAQoAAAEKAAAAFwAAAQqAAIBggACBDAgICAgIgFSAgggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACXAAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnIAAAEKAAABCgAAABcAAAEKgACAAIAAgQwICAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJdDAAAAFwAAlwAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgQwNgACBDAgICAgIgFSAhAgIgAAI0wAAADoAAAA7AAAADgAAl1EAAJdSAAAAtKCggGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJcAAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdAAAAQoAAAEKAAAAFwAAAQqAAIBggACBDAgICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACXAAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAYIAAgQwICAgICIBUgIYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAlwAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ2AAABCgAAAQoAAAAXAAABCoAAgGCAAIEMCAgICAiAVICHCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJcAAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDAgICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACXAAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgQwICAgICIBUgIkICIAACNkAAAAhAAAAJQAAl6AAAAAOAAAAKAAAl6EAAAAjAAAA+wAAl6IAAJCWAAAUDgAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAl6pfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDAWBAd2AQ4BqgACABAiBDBTTAAAAOgAAADsAAAAOAACXrAAAl7QAAAC0pwAAFL4AABS/AAAUwAAAFMEAABTCAAAUwwAAFMSBAeuBAeyBAe2BAe6BAe+BAfCBAfGnAACXtQAAl7YAAJe3AACXuAAAl7kAAJe6AACXu4EMFYEMFoEMF4EMGIEMj4EMkIEMkYBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAFNcAAAAXAACXAQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFL4AAAEKAAABCgAAABcAAAEKgACBAfOAAIEMEwgICAiAVIEB6wgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAFOYAAAAXAACXAQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFL8AAAEKAAABCgAAABcAAAEKgACBAfWAAIEMEwgICAiAVIEB7AgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAFNcAAAAXAACXAQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMAAAAEKAAABCgAAABcAAAEKgACBAfOAAIEMEwgICAiAVIEB7QgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAIMAAAAXAACXAQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMEAAAEKAAABCgAAABcAAAEKgACBDBmAAIEMEwgICAiAVIEB7ggIgAAI3xAQAACX+gAAl/sAAJf8AACX/QAAACEAAJf+AACX/wAAACMAAJgAAACYAQAAAA4AAAAlAACYAgAAmAMAAAAoAAAA+wAAAPwAAJgFAAAAKQAAACkAAAAUAACYCQAAAQIAAAAxAAAAKQAAAPwAAAEFAAAARwAAAPwAAJgQAACYEQAAAQpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAQ4EMLIAEgASAAoEMG4EDEYAEgEOBAxOAEIBDgQyOgQwaCBLp1TTo0wAAADoAAAA7AAAADgAAmBUAAJgXAAAAtKEAAAEPgEWhAACYGIEMHIBj2QAAACEAAAAlAACYGwAAAA4AAAAoAACYHAAAACMAAAD7AACYHQAAAIMAAAEPAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAACYJV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMGYBFgEOAaoAAgAQIgQwd0wAAADoAAAA7AAAADgAAmCcAAJgxAAAAtKkAAAEiAAABIwAAASQAAAElAAABJgAAAScAAAEoAAABKQAAASqASIBJgEqAS4BMgE2AToBPgFCpAACYMgAAmDMAAJg0AACYNQAAmDYAAJg3AACYOAAAmDkAAJg6gQwegQwggQwhgQwjgQwkgQwmgQwngQwpgQwqgGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACYPgAAABcAAJgYAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABIgAAAQoAAAEKAAAAFwAAAQqAAIEMH4AAgQwcCAgICIBUgEgICIAACNIAAAA7AAAADgAAmEwAAAFaoIBT3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACYGAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASMAAAEKAAABCgAAABcAAAEKgACAAIAAgQwcCAgICIBUgEkICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJhfAAAAFwAAmBgAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEkAAABCgAAAQoAAAAXAAABCoAAgQwigACBDBwICAgIgFSASggIgAAI0gAAADsAAAAOAACYbQAAAVqggFPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJgYAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABJQAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDBwICAgIgFSASwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAmIAAAAAXAACYGAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASYAAAEKAAABCgAAABcAAAEKgACBDCWAAIEMHAgICAiAVIBMCAiAAAjSAAAAOwAAAA4AAJiOAAABWqCAU98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAmBgAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEnAAABCgAAAQoAAAAXAAABCoAAgGCAAIEMHAgICAiAVIBNCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACYoQAAABcAAJgYAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABKAAAAQoAAAEKAAAAFwAAAQqAAIEMKIAAgQwcCAgICIBUgE4ICIAACNMAAAA6AAAAOwAAAA4AAJivAACYsAAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAd0AAAAXAACYGAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASkAAAEKAAABCgAAABcAAAEKgACAZYAAgQwcCAgICIBUgE8ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJjDAAAAFwAAmBgAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEqAAABCgAAAQoAAAAXAAABCoAAgQwrgACBDBwICAgIgFSAUAgIgAAIXxASUGVuZGluZ0dyb3VwTWVtYmVy0wAAADoAAAA7AAAADgAAmNIAAJjXAAAAtKQAAJjTAACY1AAAmNUAAJjWgQwtgQwugQwvgQwwpAAAmNgAAJjZAACY2gAAmNuBDDGBDEiBDF+BDHeAY1hkZWNsaW5lZFxjb250YWN0R3JvdXBeY3J5cHRvSWRlbnRpdHlfEB1zZXJpYWxpemVkSWRlbnRpdHlDb3JlRGV0YWlsc98QEgAAAUAAAAFBAAABQgAAmOIAAAAhAAABRAAAAUUAAJjjAAAAIwAAAUMAAJjkAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAACDAAABCgAAAQoAAJjsAAAAMQAAAQoAAAD8AAABCgAAAlIAAJjTAAABCgAAAQoAAJj0AAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQwZCAiBDDMIgEMIgKWBDC0ICIEMMggSm7Ny3tMAAAA6AAAAOwAAAA4AAJj4AACY+wAAALSiAAACWwAAAlyAfoB/ogAAmPwAAJj9gQw0gQw/gGPZAAAAIQAAACUAAJkAAAAADgAAACgAAJkBAAAAIwAAAPsAAJkCAACY2AAAAlsAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAJkKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQwxgH6AQ4BqgACABAiBDDXTAAAAOgAAADsAAAAOAACZDAAAmRUAAAC0qAAAAnEAAAJyAAACcwAAAnQAAAJ1AAACdgAAAncAAAJ4gIKAg4CEgIWAhoCHgIiAiagAAJkWAACZFwAAmRgAAJkZAACZGgAAmRsAAJkcAACZHYEMNoEMN4EMOIEMOoEMO4EMPIEMPYEMPoBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACY/AAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnEAAAEKAAABCgAAABcAAAEKgACAYIAAgQw0CAgICIBUgIIICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAmPwAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJyAAABCgAAAQoAAAAXAAABCoAAgACAAIEMNAgICAiAVICDCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACZPwAAABcAAJj8AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcwAAAQoAAAEKAAAAFwAAAQqAAIEMOYAAgQw0CAgICIBUgIQICIAACNMAAAA6AAAAOwAAAA4AAJlNAACZTgAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACY/AAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnQAAAEKAAABCgAAABcAAAEKgACAYIAAgQw0CAgICIBUgIUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAmPwAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ1AAABCgAAAQoAAAAXAAABCoAAgGCAAIEMNAgICAiAVICGCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJj8AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdgAAAQoAAAEKAAAAFwAAAQqAAIBggACBDDQICAgIgFSAhwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACY/AAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAncAAAEKAAABCgAAABcAAAEKgACAAIAAgQw0CAgICIBUgIgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAmPwAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ4AAABCgAAAQoAAAAXAAABCoAAgGCAAIEMNAgICAiAVICJCAiAAAjZAAAAIQAAACUAAJmcAAAADgAAACgAAJmdAAAAIwAAAPsAAJmeAACY2AAAAlwAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAJmmXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQwxgH+AQ4BqgACABAiBDEDTAAAAOgAAADsAAAAOAACZqAAAmbAAAAC0pwAAAxUAAAMWAAADFwAAAxgAAAMZAAADGgAAAxuAlYCWgJeAmICZgJqAm6cAAJmxAACZsgAAmbMAAJm0AACZtQAAmbYAAJm3gQxBgQxCgQxDgQxEgQxFgQxGgQxHgGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJj9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADFQAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDD8ICAgIgFSAlQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACY/QAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxYAAAEKAAABCgAAABcAAAEKgACAYIAAgQw/CAgICIBUgJYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAmP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMXAAABCgAAAQoAAAAXAAABCoAAgACAAIEMPwgICAiAVICXCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAIbgAAABcAAJj9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGAAAAQoAAAEKAAAAFwAAAQqAAIEBBIAAgQw/CAgICIBUgJgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAmP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMZAAABCgAAAQoAAAAXAAABCoAAgACAAIEMPwgICAiAVICZCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJj9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGgAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDD8ICAgIgFSAmggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACY/QAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxsAAAEKAAABCgAAABcAAAEKgACAAIAAgQw/CAgICIBUgJsICIAACN8QEgAAAUAAAAFBAAABQgAAmiMAAAAhAAABRAAAAUUAAJokAAAAIwAAAUMAAJolAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAACDAAABCgAAAQoAAJotAAAAMQAAAQoAAAD8AAABCgAAFAQAAJjUAAABCgAAAQoAAJo1AAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQwZCAiBDEoIgEMIgQJvgQwuCAiBDEkIEk/orZDTAAAAOgAAADsAAAAOAACaOQAAmjwAAAC0ogAAAlsAABQOgH6BAd2iAACaPQAAmj6BDEuBDFaAY9kAAAAhAAAAJQAAmkEAAAAOAAAAKAAAmkIAAAAjAAAA+wAAmkMAAJjZAAACWwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAmktfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDEiAfoBDgGqAAIAECIEMTNMAAAA6AAAAOwAAAA4AAJpNAACaVgAAALSoAAACcQAAAnIAAAJzAAACdAAAAnUAAAJ2AAACdwAAAniAgoCDgISAhYCGgIeAiICJqAAAmlcAAJpYAACaWQAAmloAAJpbAACaXAAAml0AAJpegQxNgQxOgQxPgQxRgQxSgQxTgQxUgQxVgGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJo9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcQAAAQoAAAEKAAAAFwAAAQqAAIBggACBDEsICAgIgFSAgggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACaPQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnIAAAEKAAABCgAAABcAAAEKgACAAIAAgQxLCAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJqAAAAAFwAAmj0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgQxQgACBDEsICAgIgFSAhAgIgAAI0wAAADoAAAA7AAAADgAAmo4AAJqPAAAAtKCggGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJo9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdAAAAQoAAAEKAAAAFwAAAQqAAIBggACBDEsICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACaPQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAYIAAgQxLCAgICIBUgIYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAmj0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ2AAABCgAAAQoAAAAXAAABCoAAgGCAAIEMSwgICAiAVICHCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJo9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDEsICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACaPQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgQxLCAgICIBUgIkICIAACNkAAAAhAAAAJQAAmt0AAAAOAAAAKAAAmt4AAAAjAAAA+wAAmt8AAJjZAAAUDgAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAmudfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDEiBAd2AQ4BqgACABAiBDFfTAAAAOgAAADsAAAAOAACa6QAAmvEAAAC0pwAAFL4AABS/AAAUwAAAFMEAABTCAAAUwwAAFMSBAeuBAeyBAe2BAe6BAe+BAfCBAfGnAACa8gAAmvMAAJr0AACa9QAAmvYAAJr3AACa+IEMWIEMWYEMWoEMW4EMXIEMXYEMXoBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAFNcAAAAXAACaPgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFL4AAAEKAAABCgAAABcAAAEKgACBAfOAAIEMVggICAiAVIEB6wgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAGqwAAAAXAACaPgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFL8AAAEKAAABCgAAABcAAAEKgACBAmmAAIEMVggICAiAVIEB7AgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAGqwAAAAXAACaPgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMAAAAEKAAABCgAAABcAAAEKgACBAmmAAIEMVggICAiAVIEB7QgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAJsAAAAXAACaPgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMEAAAEKAAABCgAAABcAAAEKgACBC3eAAIEMVggICAiAVIEB7ggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACaPgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMIAAAEKAAABCgAAABcAAAEKgACAYIAAgQxWCAgICIBUgQHvCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJo+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwwAAAQoAAAEKAAAAFwAAAQqAAIBggACBDFYICAgIgFSBAfAICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJCWAAAAFwAAmj4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTEAAABCgAAAQoAAAAXAAABCoAAgQwFgACBDFYICAgIgFSBAfEICIAACN8QEgAAAUAAAAFBAAABQgAAm2QAAAAhAAABRAAAAUUAAJtlAAAAIwAAAUMAAJtmAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAACDAAABCgAAAQoAAJtuAAAAMQAAAQoAAAD8AAABCgAAAlIAAJjVAAABCgAAAQoAAJt2AAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQwZCAiBDGEIgEMIgKWBDC8ICIEMYAgTAAAAARw/hR7TAAAAOgAAADsAAAAOAACbegAAm30AAAC0ogAAAlsAAAJcgH6Af6IAAJt+AACbf4EMYoEMbYBj2QAAACEAAAAlAACbggAAAA4AAAAoAACbgwAAACMAAAD7AACbhAAAmNoAAAJbAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAACbjF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMX4B+gEOAaoAAgAQIgQxj0wAAADoAAAA7AAAADgAAm44AAJuXAAAAtKgAAAJxAAACcgAAAnMAAAJ0AAACdQAAAnYAAAJ3AAACeICCgIOAhICFgIaAh4CIgImoAACbmAAAm5kAAJuaAACbmwAAm5wAAJudAACbngAAm5+BDGSBDGWBDGaBDGiBDGmBDGqBDGuBDGyAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAm34AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJxAAABCgAAAQoAAAAXAAABCoAAgGCAAIEMYggICAiAVICCCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJt+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcgAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDGIICAgIgFSAgwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAm8EAAAAXAACbfgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnMAAAEKAAABCgAAABcAAAEKgACBDGeAAIEMYggICAiAVICECAiAAAjTAAAAOgAAADsAAAAOAACbzwAAm9AAAAC0oKCAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAm34AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ0AAABCgAAAQoAAAAXAAABCoAAgGCAAIEMYggICAiAVICFCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJt+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdQAAAQoAAAEKAAAAFwAAAQqAAIBggACBDGIICAgIgFSAhggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACbfgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnYAAAEKAAABCgAAABcAAAEKgACAYIAAgQxiCAgICIBUgIcICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAm34AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ3AAABCgAAAQoAAAAXAAABCoAAgACAAIEMYggICAiAVICICAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJt+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACeAAAAQoAAAEKAAAAFwAAAQqAAIBggACBDGIICAgIgFSAiQgIgAAI2QAAACEAAAAlAACcHgAAAA4AAAAoAACcHwAAACMAAAD7AACcIAAAmNoAAAJcAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAACcKF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMX4B/gEOAaoAAgAQIgQxu0wAAADoAAAA7AAAADgAAnCoAAJwyAAAAtKcAAAMVAAADFgAAAxcAAAMYAAADGQAAAxoAAAMbgJWAloCXgJiAmYCagJunAACcMwAAnDQAAJw1AACcNgAAnDcAAJw4AACcOYEMb4EMcIEMcYEMcoEMc4EMdIEMdoBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACbfwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxUAAAEKAAABCgAAABcAAAEKgACAAIAAgQxtCAgICIBUgJUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAm38AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMWAAABCgAAAQoAAAAXAAABCoAAgGCAAIEMbQgICAiAVICWCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJt/AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADFwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDG0ICAgIgFSAlwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAA1sAAAAXAACbfwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxgAAAEKAAABCgAAABcAAAEKgACAoIAAgQxtCAgICIBUgJgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAm38AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMZAAABCgAAAQoAAAAXAAABCoAAgACAAIEMbQgICAiAVICZCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACciAAAABcAAJt/AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGgAAAQoAAAEKAAAAFwAAAQqAAIEMdYAAgQxtCAgICIBUgJoICIAACF8QHE9idkNyeXB0b0lkZW50aXR5VHJhbnNmb3JtZXLfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJt/AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDG0ICAgIgFSAmwgIgAAI3xASAAABQAAAAUEAAAFCAACcpgAAACEAAAFEAAABRQAAnKcAAAAjAAABQwAAnKgAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAAKQAAAIMAAAEKAAABCgAAnLAAAAAxAAABCgAAAPwAAAEKAAACUgAAmNYAAAEKAAABCgAAnLgAAAEKXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBDBkICIEMeQiAQwiApYEMMAgIgQx4CBLZuoZs0wAAADoAAAA7AAAADgAAnLwAAJy/AAAAtKIAAAJbAAACXIB+gH+iAACcwAAAnMGBDHqBDIWAY9kAAAAhAAAAJQAAnMQAAAAOAAAAKAAAnMUAAAAjAAAA+wAAnMYAAJjbAAACWwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAnM5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDHeAfoBDgGqAAIAECIEMe9MAAAA6AAAAOwAAAA4AAJzQAACc2QAAALSoAAACcQAAAnIAAAJzAAACdAAAAnUAAAJ2AAACdwAAAniAgoCDgISAhYCGgIeAiICJqAAAnNoAAJzbAACc3AAAnN0AAJzeAACc3wAAnOAAAJzhgQx8gQx9gQx+gQyAgQyBgQyCgQyDgQyEgGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJzAAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcQAAAQoAAAEKAAAAFwAAAQqAAIBggACBDHoICAgIgFSAgggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACcwAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnIAAAEKAAABCgAAABcAAAEKgACAAIAAgQx6CAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJ0DAAAAFwAAnMAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgQx/gACBDHoICAgIgFSAhAgIgAAI0wAAADoAAAA7AAAADgAAnREAAJ0SAAAAtKCggGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJzAAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdAAAAQoAAAEKAAAAFwAAAQqAAIBggACBDHoICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACcwAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAYIAAgQx6CAgICIBUgIYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAnMAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ2AAABCgAAAQoAAAAXAAABCoAAgGCAAIEMeggICAiAVICHCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJzAAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDHoICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACcwAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgQx6CAgICIBUgIkICIAACNkAAAAhAAAAJQAAnWAAAAAOAAAAKAAAnWEAAAAjAAAA+wAAnWIAAJjbAAACXAAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAnWpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDHeAf4BDgGqAAIAECIEMhtMAAAA6AAAAOwAAAA4AAJ1sAACddAAAALSnAAADFQAAAxYAAAMXAAADGAAAAxkAAAMaAAADG4CVgJaAl4CYgJmAmoCbpwAAnXUAAJ12AACddwAAnXgAAJ15AACdegAAnXuBDIeBDIiBDImBDIqBDIuBDIyBDI2AY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAnMEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMVAAABCgAAAQoAAAAXAAABCoAAgACAAIEMhQgICAiAVICVCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJzBAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADFgAAAQoAAAEKAAAAFwAAAQqAAIBggACBDIUICAgIgFSAlggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACcwQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxcAAAEKAAABCgAAABcAAAEKgACAAIAAgQyFCAgICIBUgJcICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAB9UAAAAFwAAnMEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMYAAABCgAAAQoAAAAXAAABCoAAgQLIgACBDIUICAgIgFSAmAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACcwQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxkAAAEKAAABCgAAABcAAAEKgACAAIAAgQyFCAgICIBUgJkICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAnMEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMaAAABCgAAAQoAAAAXAAABCoAAgACAAIEMhQgICAiAVICaCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJzBAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDIUICAgIgFSAmwgIgAAI0gAAADsAAAAOAACd5wAAAVqggFPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAEHwAAABcAAJcBAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwgAAAQoAAAEKAAAAFwAAAQqAAICxgACBDBMICAgIgFSBAe8ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAlwEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTDAAABCgAAAQoAAAAXAAABCoAAgGCAAIEMEwgICAiAVIEB8AgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAmNkAAAAXAACXAQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMQAAAEKAAABCgAAABcAAAEKgACBDEiAAIEMEwgICAiAVIEB8QgIgAAI3xASAAABQAAAAUEAAAFCAACeFwAAACEAAAFEAAABRQAAnhgAAAAjAAABQwAAnhkAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAAKQAAAJsAAAEKAAABCgAAniEAAAAxAAABCgAAAPwAAAEKAAAUBAAAkJAAAAEKAAABCgAAnikAAAEKXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBC3cICIEMlAiAQwiBAm+BC5AICIEMkwgSPoBw5dMAAAA6AAAAOwAAAA4AAJ4tAACeMAAAALSiAAACWwAAFA6AfoEB3aIAAJ4xAACeMoEMlYEMoIBj2QAAACEAAAAlAACeNQAAAA4AAAAoAACeNgAAACMAAAD7AACeNwAAkJcAAAJbAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAACeP18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMkoB+gEOAaoAAgAQIgQyW0wAAADoAAAA7AAAADgAAnkEAAJ5KAAAAtKgAAAJxAAACcgAAAnMAAAJ0AAACdQAAAnYAAAJ3AAACeICCgIOAhICFgIaAh4CIgImoAACeSwAAnkwAAJ5NAACeTgAAnk8AAJ5QAACeUQAAnlKBDJeBDJiBDJmBDJuBDJyBDJ2BDJ6BDJ+AY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAnjEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJxAAABCgAAAQoAAAAXAAABCoAAgGCAAIEMlQgICAiAVICCCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJ4xAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcgAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDJUICAgIgFSAgwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAnnQAAAAXAACeMQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnMAAAEKAAABCgAAABcAAAEKgACBDJqAAIEMlQgICAiAVICECAiAAAjTAAAAOgAAADsAAAAOAACeggAAnoMAAAC0oKCAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAnjEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ0AAABCgAAAQoAAAAXAAABCoAAgGCAAIEMlQgICAiAVICFCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJ4xAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdQAAAQoAAAEKAAAAFwAAAQqAAIBggACBDJUICAgIgFSAhggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACeMQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnYAAAEKAAABCgAAABcAAAEKgACAYIAAgQyVCAgICIBUgIcICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAnjEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ3AAABCgAAAQoAAAAXAAABCoAAgACAAIEMlQgICAiAVICICAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAJ4xAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACeAAAAQoAAAEKAAAAFwAAAQqAAIBggACBDJUICAgIgFSAiQgIgAAI2QAAACEAAAAlAACe0QAAAA4AAAAoAACe0gAAACMAAAD7AACe0wAAkJcAABQOAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAACe218QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMkoEB3YBDgGqAAIAECIEModMAAAA6AAAAOwAAAA4AAJ7dAACe5QAAALSnAAAUvgAAFL8AABTAAAAUwQAAFMIAABTDAAAUxIEB64EB7IEB7YEB7oEB74EB8IEB8acAAJ7mAACe5wAAnugAAJ7pAACe6gAAnusAAJ7sgQyigQyjgQykgQylgQ5RgQ5SgQ5TgGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAU1wAAABcAAJ4yAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUvgAAAQoAAAEKAAAAFwAAAQqAAIEB84AAgQygCAgICIBUgQHrCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAU5gAAABcAAJ4yAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUvwAAAQoAAAEKAAAAFwAAAQqAAIEB9YAAgQygCAgICIBUgQHsCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAarAAAABcAAJ4yAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwAAAAQoAAAEKAAAAFwAAAQqAAIECaYAAgQygCAgICIBUgQHtCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAhwAAABcAAJ4yAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwQAAAQoAAAEKAAAAFwAAAQqAAIEMpoAAgQygCAgICIBUgQHuCAiAAAjfEBAAAJ8rAACfLAAAny0AAJ8uAAAAIQAAny8AAJ8wAAAAIwAAnzEAAJ8yAAAADgAAACUAAJ8zAACfNAAAACgAAAD7AAAA/AAAnzYAAAApAAAAKQAAABQAAJ86AAABAgAAADEAAAApAAAA/AAAAQUAAABLAAAA/AAAn0EAAJ9CAAABCl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYBDgQy5gASABIACgQyogQMRgASAQ4EDE4AUgEOBDNKBDKcIEi9FuGvTAAAAOgAAADsAAAAOAACfRgAAn0gAAAC0oQAAAQ+ARaEAAJ9JgQypgGPZAAAAIQAAACUAAJ9MAAAADgAAACgAAJ9NAAAAIwAAAPsAAJ9OAAAAhwAAAQ8AAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAJ9WXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQymgEWAQ4BqgACABAiBDKrTAAAAOgAAADsAAAAOAACfWAAAn2IAAAC0qQAAASIAAAEjAAABJAAAASUAAAEmAAABJwAAASgAAAEpAAABKoBIgEmASoBLgEyATYBOgE+AUKkAAJ9jAACfZAAAn2UAAJ9mAACfZwAAn2gAAJ9pAACfagAAn2uBDKuBDK2BDK6BDLCBDLGBDLOBDLSBDLaBDLeAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJ9vAAAAFwAAn0kAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEiAAABCgAAAQoAAAAXAAABCoAAgQysgACBDKkICAgIgFSASAgIgAAI0gAAADsAAAAOAACffQAAAVqggFPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAJ9JAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABIwAAAQoAAAEKAAAAFwAAAQqAAIAAgACBDKkICAgIgFSASQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAn5AAAAAXAACfSQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASQAAAEKAAABCgAAABcAAAEKgACBDK+AAIEMqQgICAiAVIBKCAiAAAjSAAAAOwAAAA4AAJ+eAAABWqCAU98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAn0kAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAElAAABCgAAAQoAAAAXAAABCoAAgACAAIEMqQgICAiAVIBLCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACfsQAAABcAAJ9JAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABJgAAAQoAAAEKAAAAFwAAAQqAAIEMsoAAgQypCAgICIBUgEwICIAACNIAAAA7AAAADgAAn78AAAFaoIBT3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACfSQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAScAAAEKAAABCgAAABcAAAEKgACAYIAAgQypCAgICIBUgE0ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAJ/SAAAAFwAAn0kAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEoAAABCgAAAQoAAAAXAAABCoAAgQy1gACBDKkICAgIgFSATggIgAAI0wAAADoAAAA7AAAADgAAn+AAAJ/hAAAAtKCggGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAB3QAAABcAAJ9JAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABKQAAAQoAAAEKAAAAFwAAAQqAAIBlgACBDKkICAgIgFSATwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAn/QAAAAXAACfSQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASoAAAEKAAABCgAAABcAAAEKgACBDLiAAIEMqQgICAiAVIBQCAiAAAhfEBxDb250YWN0R3JvdXBEZXRhaWxzUHVibGlzaGVk0wAAADoAAAA7AAAADgAAoAMAAKAFAAAAtKEAAKAEgQy6oQAAoAaBDLuAY1xjb250YWN0R3JvdXDfEBIAAAFAAAABQQAAAUIAAKAKAAAAIQAAAUQAAAFFAACgCwAAACMAAAFDAACgDAAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAApAAAAhwAAAQoAAAEKAACgFAAAADEAAAEKAAAA/AAAAQoAABQEAACgBAAAAQoAAAEKAACgHAAAAQpfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEMpggIgQy9CIBDCIECb4EMuggIgQy8CBLW+eeK0wAAADoAAAA7AAAADgAAoCAAAKAjAAAAtKIAAAJbAAAUDoB+gQHdogAAoCQAAKAlgQy+gQzJgGPZAAAAIQAAACUAAKAoAAAADgAAACgAAKApAAAAIwAAAPsAAKAqAACgBgAAAlsAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAKAyXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQy7gH6AQ4BqgACABAiBDL/TAAAAOgAAADsAAAAOAACgNAAAoD0AAAC0qAAAAnEAAAJyAAACcwAAAnQAAAJ1AAACdgAAAncAAAJ4gIKAg4CEgIWAhoCHgIiAiagAAKA+AACgPwAAoEAAAKBBAACgQgAAoEMAAKBEAACgRYEMwIEMwYEMwoEMxIEMxYEMxoEMx4EMyIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACgJAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnEAAAEKAAABCgAAABcAAAEKgACAYIAAgQy+CAgICIBUgIIICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAoCQAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJyAAABCgAAAQoAAAAXAAABCoAAgACAAIEMvggICAiAVICDCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACgZwAAABcAAKAkAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcwAAAQoAAAEKAAAAFwAAAQqAAIEMw4AAgQy+CAgICIBUgIQICIAACNMAAAA6AAAAOwAAAA4AAKB1AACgdgAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACgJAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnQAAAEKAAABCgAAABcAAAEKgACAYIAAgQy+CAgICIBUgIUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAoCQAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ1AAABCgAAAQoAAAAXAAABCoAAgGCAAIEMvggICAiAVICGCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAKAkAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdgAAAQoAAAEKAAAAFwAAAQqAAIBggACBDL4ICAgIgFSAhwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAACgJAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAncAAAEKAAABCgAAABcAAAEKgACAAIAAgQy+CAgICIBUgIgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAoCQAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ4AAABCgAAAQoAAAAXAAABCoAAgGCAAIEMvggICAiAVICJCAiAAAjZAAAAIQAAACUAAKDEAAAADgAAACgAAKDFAAAAIwAAAPsAAKDGAACgBgAAFA4AAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAKDOXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQy7gQHdgEOAaoAAgAQIgQzK0wAAADoAAAA7AAAADgAAoNAAAKDYAAAAtKcAABS+AAAUvwAAFMAAABTBAAAUwgAAFMMAABTEgQHrgQHsgQHtgQHugQHvgQHwgQHxpwAAoNkAAKDaAACg2wAAoNwAAKDdAACg3gAAoN+BDMuBDMyBDM2BDM6BDM+BDNCBDNGAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAABTXAAAAFwAAoCUAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABS+AAABCgAAAQoAAAAXAAABCoAAgQHzgACBDMkICAgIgFSBAesICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAABqsAAAAFwAAoCUAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABS/AAABCgAAAQoAAAAXAAABCoAAgQJpgACBDMkICAgIgFSBAewICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAABqsAAAAFwAAoCUAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTAAAABCgAAAQoAAAAXAAABCoAAgQJpgACBDMkICAgIgFSBAe0ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAACbAAAAFwAAoCUAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTBAAABCgAAAQoAAAAXAAABCoAAgQt3gACBDMkICAgIgFSBAe4ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAoCUAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTCAAABCgAAAQoAAAAXAAABCoAAgGCAAIEMyQgICAiAVIEB7wgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAACgJQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMMAAAEKAAABCgAAABcAAAEKgACAYIAAgQzJCAgICIBUgQHwCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAACQlwAAABcAAKAlAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUxAAAAQoAAAEKAAAAFwAAAQqAAIEMkoAAgQzJCAgICIBUgQHxCAiAAAjSAAAAOwAAAA4AAKFLAAABWqEAAKFMgQzTgFPXAAAADgAAACUAAKFPAAAAIQAAACgAAKFQAAAAIwAAoVEAAAAXAAAAhwAAAIcAAKFVAAAArQAAADFZX3NwZWNpZmljWF9nZW5lcmFsgQ29gACBDKaBDKaBDNSBDNUSpStD4d8QFAAAAPsAAKFZAAChWgAAoVsAAKFcAAChXQAAoV4AAAAhAAAADgAAoV8AAAAlAAChYAAAACgAAKFhAAChYgAAoWMAAKFkAAChZQAAoWYAAAAjAAAELAAAAPwAAAD8AAChagAAACkAAAECAAAA/AAAABQAAAEFAAAAKQAAAHEAAKFyAAChcwAAACkAAAApAAAA/AAAoXcAAKF4AAABAgAAADFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXM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A+wAA47UAAACEAAABDwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAA471fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEemARYBDgGqAAIAECIER7dMAAAA6AAAAOwAAAA4AAOO/AADjyQAAALSpAAABIgAAASMAAAEkAAABJQAAASYAAAEnAAABKAAAASkAAAEqgEiASYBKgEuATIBNgE6AT4BQqQAA48oAAOPLAADjzAAA480AAOPOAADjzwAA49AAAOPRAADj0oER7oER8IER8YER84ER9IER9oER94ER+YER+oBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAA49YAAAAXAADjsAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASIAAAEKAAABCgAAABcAAAEKgACBEe+AAIER7AgICAiAVIBICAiAAAjSAAAAOwAAAA4AAOPkAAABWqCAU98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAA47AAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEjAAABCgAAAQoAAAAXAAABCoAAgACAAIER7AgICAiAVIBJCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAADj9wAAABcAAOOwAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABJAAAAQoAAAEKAAAAFwAAAQqAAIER8oAAgRHsCAgICIBUgEoICIAACNIAAAA7AAAADgAA5AUAAAFaoIBT3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAADjsAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASU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A+jkAAPo6AAD6OwAA+jwAAPo9AAAAIQAAAA4AAPo+AAAAJQAA+j8AAAAoAAD6QAAA+kEAAPpCAAD6QwAA+kQAAPpFAAAAIwAABCwAAAD8AAAA/AAA+kkAAAApAAABAgAAAPwAAAAUAAABBQAAACkAAABuAAD6UQAA+lIAAAApAAAAKQAAAPwAAPpWAAD6VwAAAQIAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYBDgEOBE5yABIEDEYBDgAKBAxOABIA3gRQlgRObgASABIBDgROtgRQmgQMREjpxl3PTAAAAOgAAADsAAAAOAAD6WwAA+l0AAAC0oQAAAQ+ARaEAAPpegROdgGPZAAAAIQAAACUAAPphAAAADgAAACgAAPpiAAAAIwAAAPsAAPpjAAAAqgAAAQ8AAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAPprXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGV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CdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYBDgEOBFdaABIEDEYBDgAKBAxOABIAkgRYwgRXVgASABIBDgRXngRYxgQMREwAAAAEMMVKx0wAAADoAAAA7AAAADgABF5EAAReTAAAAtKEAAAEPgEWhAAEXlIEV14Bj2QAAACEAAAAlAAEXlwAAAA4AAAAoAAEXmAAAACMAAAD7AAEXmQAAAJcAAAEPAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAAEXoV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEV1IBFgEOAaoAAgAQIgRXY0wAAADoAAAA7AAAADgABF6MAARetAAAAtKkAAAEiAAABIwAAASQAAAElAAABJgAAAScAAAEoAAABKQAAASqASIBJgEqAS4BMgE2AToBPgFCpAAEXrgABF68AARewAAEXsQA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yAAE+cwABPnQAAT51AAE+dgABPncAAT54AAE+eQABPnoAAT57AAE+fIEY8IEZB4EZH4EZNoEZToEZZYEaJ4EaPoEaVYEabYEahIEam4EasoEayYEa4IBjXxATdGltZXN0YW1wRnJvbVNlcnZlcl8QGXJhd01lc3NhZ2VJZE93bmVkSWRlbnRpdHlfEBtpc0FwcE1lc3NhZ2VXaXRoVXNlckNvbnRlbnRfEBdyYXdNZXNzYWdlVWlkRnJvbVNlcnZlcl8QInJhd0VuY3J5cHRlZEV4dGVuZGVkTWVzc2FnZVBheWxvYWRXaGVhZGVyc18QD25vbmNlRnJvbVNlcnZlcl8QEGVuY3J5cHRlZENvbnRlbnRfEBN1bnNvcnRlZEF0dGFjaG1lbnRzWHVwbG9hZGVkXxAZY2FuY2VsRXh0ZXJuYWxseVJlcXVlc3RlZF8QD3Jhd01lc3NhZ2VJZFVpZFxjcmVhdGlvbkRhdGVdaXNWb2lwTWVzc2FnZd8QEgAAAUAAAAFBAAABQgABPo0AAAAhAAABRAAAAUUAAT6OAAAAIwAAAUMAAT6PAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAACcAAABCgAAAQoAAT6XAAAAMQAAAQoAAAD8AAABCgAAAlIAAT5eAAABCgAAAQoAAT6fAAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRjLCAiBGPIIgEMIgKWBGOIICIEY8QgSt4BsS9MAAAA6AAAAOwAAAA4AAT6jAAE+pgAAALSiAAACWwAAAlyAfoB/ogABPqcAAT6ogRjzgRj+gGPZAAAAIQAAACUAAT6rAAAADgAAACgAAT6sAAAAIwAAAPsAAT6tAAE+bgAAAlsAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAT61XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWd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AAKTtAACk7wAApPEAAKTzAACk9QAApPcAAKT5AAClHgAApSAAAKUiAAClJAAApSYAAKUoAAClKgAApSwAAKUuAAClMAAApTIAAKVIAAClWwAApXcAAKWUAAClsAAApcQAAKXWAACl7AAApgUAAKaAAACmhgAApo8AAKacAACmqAAAprIAAKa8AACmxwAAptIAAKbfAACm5wAApukAAKbrAACm7QAApu8AAKbwAACm8QAApvIAAKbzAACm9QAApvcAAKb4AACm+QAApvsAAKb8AACnDQAApw4AAKcQAACnIQAApywAAKc1AACnRAAAp1EAAKdZAACnYgAAp3MAAKeGAACnlwAAp6oAAKfBAACn0wAAqE4AAKhQAACoUgAAqFQAAKhWAACoVwAAqFgAAKhZAACoWgAAqFwAAKheAACoXwAAqGAAAKhiAACoYwAAqN4AAKjgAACo4gAAqOQAAKjmAACo5wAAqOgAAKjpAACo6gAAqOwAAKjuAACo7wAAqPAAAKjyAACo8wAAqQQAAKkJAACpCwAAqQ0AAKkeAACpKwAAqS0AAKkvAACpMQAAqTMAAKlGAACpXQAAqW8AAKnqAACp7AAAqe4AAKnwAACp8gAAqfMAAKn0AACp9QAAqfYAAKn4AACp+gAAqfsAAKn8AACp/gAAqf8AAKp6AACqfAAAqn4AAKqAAACqggAAqoMAAKqEAACqhQAAqoYAAKqIAACqigAAqosAAKqMAACqjgAAqo8AAKqgAACqoQAAqqMAAKseAACrIAAAqyIAAKskAACrJgAAqycAAKsoAACrKQAAqyoAAKssAACrLgAAqy8AAKswAACrMgAAqzMAAKs0AACrrwAAq7EAAKuzAACrtQAAq7cAAKu4AACruQAAq7oAAKu7AACrvQAAq78AAKvAAACrwQAAq8MAAKvEAACr3QAAq94AAKvfAACr4QAAq/IAAKwIAACsFQAArCIAAKydAACsnwAArKEAAKyjAACspQAArKYAAKynAACsqAAArKkAAKyrAACsrQAArK4AAKyvAACssQAArLIAAKzjAACs5QAArOcAAKzpAACs6gAArOwAAK0DAACtFAAArSIAAK07AACtSQAArV4AAK1yAACtiQAArZsAAK4WAACuGAAArhoAAK4cAACuHgAArh8AAK4gAACuIQAAriIAAK4kAACuJgAAricAAK4oAACuKgAArisAAK5BAACuUgAArmcAAK6EAACumQAArqcAAK68AACu0AAArucAAK75AACvEgAAr1EAAK9TAACvVQAAr1cAAK9ZAACvWwAAr10AAK9fAACvYQAAr2MAAK9lAACvZwAAr2kAAK9rAACvbQAAr28AAK+uAACvsAAAr7IAAK+0AACvtgAAr7gAAK+7AACvvgAAr8EAAK/EAACvxwAAr8oAAK/NAACv0AAAr9MAAK/WAACv2AAAr+oAAK//AACwOgAAsHMAALCbAACwwwAAsNoAALDtAACxAgAAsScAALFEAACxUAAAsWwAALGnAACxsgAAskUAALJoAACyiAAAsqgAALKqAACyrAAAsq4AALKwAACysgAAsrMAALK0AACytgAAsrcAALK5AACyugAAsrwAALK+AACyvwAAssAAALLCAACywwAAssgAALLhAACy6gAAsuwAALLuAACy9wAAsvkAALL7AACy/QAAsxIAALMnAACzcAAAs5QAALO7AACz3wAAs+EAALPjAACz5QAAs+cAALPpAACz6wAAs+wAALPuAAC0BwAAtCgAALQqAAC0LAAAtC4AALQwAAC0MgAAtDQAALQ2AAC0OAAAtFkAALRbAAC0XQAAtF8AALRhAAC0YwAAtGUAALRnAAC0aQAAtGsAALSJAAC0pwAAtLoAALTOAAC04wAAtQAAALUUAAC1KgAAtaUAALWnAAC1qQAAtasAALWtAAC1rgAAta8AALWwAAC1sQAAtbMAALW1AAC1tgAAtbcAALW5AAC1ugAAtjUAALY3AAC2OQAAtjsAALY9AAC2PgAAtj8AALZAAAC2QQAAtkMAALZFAAC2RgAAtkcAALZJAAC2SgAAtsUAALbHAAC2yQAAtssAALbNAAC2zgAAts8AALbQAAC20QAAttMAALbVAAC21gAAttcAALbZAAC22gAAtvMAALb0AAC29QAAtvcAALdyAAC3dAAAt3YAALd4AAC3egAAt3sAALd8AAC3fQAAt34AALeAAAC3ggAAt4MAALeEAAC3hgAAt4cAALgCAAC4BAAAuAYAALgIAAC4CgAAuAsAALgMAAC4DQAAuA4AALgQAAC4EgAAuBMAALgUAAC4FgAAuBcAALiSAAC4lAAAuJYAALiYAAC4mgAAuJsAALicAAC4nQAAuJ4AALigAAC4ogAAuKMAALikAAC4pgAAuKcAALkiAAC5JAAAuSYAALkoAAC5KgAAuSsAALksAAC5LQAAuS4AALkwAAC5MgAAuTMAALk0AAC5NgAAuTcAALmyAAC5tAAAubYAALm4AAC5ugAAubsAALm8AAC5vQAAub4AALnAAAC5wgAAucMAALnEAAC5xgAAuccAALoQAAC6NAAAulsAALp/AAC6gQAAuoMAALqFAAC6hwAAuokAALqLAAC6jAAAuo4AALqnAAC6xAAAusYAALrIAAC6ygAAuswAALrOAAC60AAAutIAALrvAAC68QAAuvMAALr1AAC69wAAuvkAALr7AAC6/QAAuv8AALsfAAC7SgAAu2QAALt9AAC7lwAAu7cAALvaAAC8VQAAvFcAALxZAAC8WwAAvF0AALxeAAC8XwAAvGAAALxhAAC8YwAAvGUAALxmAAC8ZwAAvGkAALxqAAC85QAAvOcAALzpAAC86wAAvO0AALzuAAC87wAAvPAAALzxAAC88wAAvPUAALz2AAC89wAAvPkAALz6AAC9dQAAvXcAAL15AAC9ewAAvX0AAL1+AAC9fwAAvYAAAL2BAAC9gwAAvYUAAL2GAAC9hwAAvYkAAL2KAAC+BQAAvgcAAL4JAAC+CwAAvg0AAL4OAAC+DwAAvhAAAL4RAAC+EwAAvhUAAL4WAAC+FwAAvhkAAL4aAAC+HQAAvpgAAL6aAAC+nAAAvp4AAL6gAAC+oQAAvqIAAL6jAAC+pAAAvqYAAL6oAAC+qQAAvqoAAL6sAAC+rQAAvygAAL8qAAC/LAAAvy4AAL8wAAC/MQAAvzIAAL8zAAC/NAAAvzYAAL84AAC/OQAAvzoAAL88AAC/PQAAv0wAAL/HAAC/yQAAv8sAAL/NAAC/zwAAv9AAAL/RAAC/0gAAv9MAAL/VAAC/1wAAv9gAAL/ZAAC/2wAAv9wAAL/tAAC/+wAAwBQAAMAiAADALwAAwEIAAMBZAADAawAAwP4AAMEhAADBQQAAwWEAAMFjAADBZQAAwWcAAMFpAADBawAAwWwAAMFtAADBbwAAwXAAAMFyAADBcwAAwXUAAMF3AADBeAAAwXkAAMF7AADBfAAAwYEAAMGaAADBowAAwaUAAMGnAADBsAAAwbIAAMG0AADBtgAAwf8AAMIjAADCSgAAwm4AAMJwAADCcgAAwnQAAMJ2AADCeAAAwnoAAMJ7AADCfQAAwpYAAMK3AADCuQAAwrsAAMK9AADCvwAAwsEAAMLDAADCxQAAwscAAMLoAADC6gAAwuwAAMLuAADC8AAAwvIAAML0AADC9gAAwvgAAML6AADDdQAAw3cAAMN5AADDewAAw30AAMN+AADDfwAAw4AAAMOBAADDgwAAw4UAAMOGAADDhwAAw4kAAMOKAADEBQAAxAcAAMQJAADECwAAxA0AAMQOAADEDwAAxBAAAMQRAADEEwAAxBUAAMQWAADEFwAAxBkAAMQaAADElQAAxJcAAMSZAADEmwAAxJ0AAMSeAADEnwAAxKAAAMShAADEowAAxKUAAMSmAADEpwAAxKkAAMSqAADEwwAAxMQAAMTFAADExwAAxUIAAMVEAADFRgAAxUgAAMVKAADFSwAAxUwAAMVNAADFTgAAxVAAAMVSAADFUwAAxVQAAMVWAADFVwAAxdIAAMXUAADF1gAAxdgAAMXaAADF2wAAxdwAAMXdAADF3gAAxeAAAMXiAADF4wAAxeQAAMXmAADF5wAAxegAAMZjAADGZQAAxmcAAMZpAADGawAAxmwAAMZtAADGbgAAxm8AAMZxAADGcwAAxnQAAMZ1AADGdwAAxngAAMbzAADG9QAAxvcAAMb5AADG+wAAxvwAAMb9AADG/gAAxv8AAMcBAADHAwAAxwQAAMcFAADHBwAAxwgAAMeDAADHhQAAx4cAAMeJAADHiwAAx4wAAMeNAADHjgAAx48AAMeRAADHkwAAx5QAAMeVAADHlwAAx5gAAMfhAADIBQAAyCwAAMhQAADIUgAAyFQAAMhWAADIWAAAyFoAAMhcAADIXQAAyF8AAMh4AADIlQAAyJcAAMiZAADImwAAyJ0AAMifAADIoQAAyKMAAMjAAADIwgAAyMQAAMjGAADIyAAAyMoAAMjMAADIzgAAyNAAAMlLAADJTQAAyU8AAMlRAADJUwAAyVQAAMlVAADJVgAAyVcAAMlZAADJWwAAyVwAAMldAADJXwAAyWAAAMnbAADJ3QAAyd8AAMnhAADJ4wAAyeQAAMnlAADJ5gAAyecAAMnpAADJ6wAAyewAAMntAADJ7wAAyfAAAMprAADKbQAAym8AAMpxAADKcwAAynQAAMp1AADKdgAAyncAAMp5AADKewAAynwAAMp9AADKfwAAyoAAAMr7AADK/QAAyv8AAMsBAADLAwAAywQAAMsFAADLBgAAywcAAMsJAADLCwAAywwAAMsNAADLDwAAyxAAAMuLAADLjQAAy48AAMuRAADLkwAAy5QAAMuVAADLlgAAy5cAAMuZAADLmwAAy5wAAMudAADLnwAAy6AAAMwbAADMHQAAzB8AAMwhAADMIwAAzCQAAMwlAADMJgAAzCcAAMwpAADMKwAAzCwAAMwtAADMLwAAzDAAAMxCAADMvQAAzL8AAMzBAADMwwAAzMUAAMzGAADMxwAAzMgAAMzJAADMywAAzM0AAMzOAADMzwAAzNEAAMzSAADNZQAAzYgAAM2oAADNyAAAzcoAAM3MAADNzgAAzdAAAM3SAADN0wAAzdQAAM3WAADN1wAAzdkAAM3aAADN3AAAzd4AAM3fAADN4AAAzeIAAM3jAADN6AAAzgEAAM4KAADODAAAzg4AAM4XAADOGQAAzhsAAM4dAADOZgAAzooAAM6xAADO1QAAztcAAM7ZAADO2wAAzt0AAM7fAADO4QAAzuIAAM7kAADO/QAAzx4AAM8gAADPIgAAzyQAAM8mAADPKAAAzyoAAM8sAADPLgAAz08AAM9RAADPUwAAz1UAAM9XAADPWQAAz1sAAM9dAADPXwAAz2EAAM/cAADP3gAAz+AAAM/iAADP5AAAz+UAAM/mAADP5wAAz+gAAM/qAADP7AAAz+0AAM/uAADP8AAAz/EAANBsAADQbgAA0HAAANByAADQdAAA0HUAANB2AADQdwAA0HgAANB6AADQfAAA0H0AANB+AADQgAAA0IEAAND8AADQ/gAA0QAAANECAADRBAAA0QUAANEGAADRBwAA0QgAANEKAADRDAAA0Q0AANEOAADREAAA0REAANEqAADRKwAA0SwAANEuAADRqQAA0asAANGtAADRrwAA0bEAANGyAADRswAA0bQAANG1AADRtwAA0bkAANG6AADRuwAA0b0AANG+AADSOQAA0jsAANI9AADSPwAA0kEAANJCAADSQwAA0kQAANJFAADSRwAA0kkAANJKAADSSwAA0k0AANJOAADSyQAA0ssAANLNAADSzwAA0tEAANLSAADS0wAA0tQAANLVAADS1wAA0tkAANLaAADS2wAA0t0AANLeAADTWQAA01sAANNdAADTXwAA02EAANNiAADTYwAA02QAANNlAADTZwAA02kAANNqAADTawAA020AANNuAADT6QAA0+sAANPtAADT7wAA0/EAANPyAADT8wAA0/QAANP1AADT9wAA0/kAANP6AADT+wAA0/0AANP+AADURwAA1GsAANSSAADUtgAA1LgAANS6AADUvAAA1L4AANTAAADUwgAA1MMAANTFAADU3gAA1PsAANT9AADU/wAA1QEAANUDAADVBQAA1QcAANUJAADVJgAA1SgAANUqAADVLAAA1S4AANUwAADVMgAA1TQAANU2AADVsQAA1bMAANW1AADVtwAA1bkAANW6AADVuwAA1bwAANW9AADVvwAA1cEAANXCAADVwwAA1cUAANXGAADVyAAA1kMAANZFAADWRwAA1kkAANZLAADWTAAA1k0AANZOAADWTwAA1lEAANZTAADWVAAA1lUAANZXAADWWAAA1tMAANbVAADW1wAA1tkAANbbAADW3AAA1t0AANbeAADW3wAA1uEAANbjAADW5AAA1uUAANbnAADW6AAA12MAANdlAADXZwAA12kAANdrAADXbAAA120AANduAADXbwAA13EAANdzAADXdAAA13UAANd3AADXeAAA13sAANf2AADX+AAA1/oAANf8AADX/gAA1/8AANgAAADYAQAA2AIAANgEAADYBgAA2AcAANgIAADYCgAA2AsAANiGAADYiAAA2IoAANiMAADYjgAA2I8AANiQAADYkQAA2JIAANiUAADYlgAA2JcAANiYAADYmgAA2JsAANkWAADZGAAA2RoAANkcAADZHgAA2R8AANkgAADZIQAA2SIAANkkAADZJgAA2ScAANkoAADZKgAA2SsAANm+AADZ4QAA2gEAANohAADaIwAA2iUAANonAADaKQAA2isAANosAADaLQAA2i8AANowAADaMgAA2jMAANo1AADaNwAA2jgAANo5AADaOwAA2jwAANpBAADaWgAA2mMAANplAADaZwAA2nAAANpyAADadAAA2nYAANq/AADa4wAA2woAANsuAADbMAAA2zIAANs0AADbNgAA2zgAANs6AADbOwAA2z0AANtWAADbdwAA23kAANt7AADbfQAA238AANuBAADbgwAA24UAANuHAADbqAAA26oAANusAADbrgAA27AAANuyAADbtAAA27YAANu4AADbugAA3DUAANw3AADcOQAA3DsAANw9AADcPgAA3D8AANxAAADcQQAA3EMAANxFAADcRgAA3EcAANxJAADcSgAA3MUAANzHAADcyQAA3MsAANzNAADczgAA3M8AANzQAADc0QAA3NMAANzVAADc1gAA3NcAANzZAADc2gAA3VUAAN1XAADdWQAA3VsAAN1dAADdXgAA3V8AAN1gAADdYQAA3WMAAN1lAADdZgAA3WcAAN1pAADdagAA3YMAAN2EAADdhQAA3YcAAN4CAADeBAAA3gYAAN4IAADeCgAA3gsAAN4MAADeDQAA3g4AAN4QAADeEgAA3hMAAN4UAADeFgAA3hcAAN6SAADelAAA3pYAAN6YAADemgAA3psAAN6cAADenQAA3p4AAN6gAADeogAA3qMAAN6kAADepgAA3qcAAN8iAADfJAAA3yYAAN8oAADfKgAA3ysAAN8sAADfLQAA3y4AAN8wAADfMgAA3zMAAN80AADfNgAA3zcAAN+yAADftAAA37YAAN+4AADfugAA37sAAN+8AADfvQAA374AAN/AAADfwgAA38MAAN/EAADfxgAA38cAAOBCAADgRAAA4EYAAOBIAADgSgAA4EsAAOBMAADgTQAA4E4AAOBQAADgUgAA4FMAAOBUAADgVgAA4FcAAOCgAADgxAAA4OsAAOEPAADhEQAA4RMAAOEVAADhFwAA4RkAAOEbAADhHAAA4R4AAOE3AADhVAAA4VYAAOFYAADhWgAA4VwAAOFeAADhYAAA4WIAAOF/AADhgQAA4YMAAOGFAADhhwAA4YkAAOGLAADhjQAA4Y8AAOIKAADiDAAA4g4AAOIQAADiEgAA4hMAAOIUAADiFQAA4hYAAOIYAADiGgAA4hsAAOIcAADiHgAA4h8AAOKaAADinAAA4p4AAOKgAADiogAA4qMAAOKkAADipQAA4qYAAOKoAADiqgAA4qsAAOKsAADirgAA4q8AAOMqAADjLAAA4y4AAOMwAADjMgAA4zMAAOM0AADjNQAA4zYAAOM4AADjOgAA4zsAAOM8AADjPgAA4z8AAOO6AADjvAAA474AAOPAAADjwgAA48MAAOPEAADjxQAA48YAAOPIAADjygAA48sAAOPMAADjzgAA488AAORKAADkTAAA5E4AAORQAADkUgAA5FMAAORUAADkVQAA5FYAAORYAADkWgAA5FsAAORcAADkXgAA5F8AAOTaAADk3AAA5N4AAOTgAADk4gAA5OMAAOTkAADk5QAA5OYAAOToAADk6gAA5OsAAOTsAADk7gAA5O8AAOVqAADlbAAA5W4AAOVwAADlcgAA5XMAAOV0AADldQAA5XYAAOV4AADlegAA5XsAAOV8AADlfgAA5X8AAOYSAADmNQAA5lUAAOZ1AADmdwAA5nkAAOZ7AADmfQAA5n8AAOaAAADmgQAA5oMAAOaEAADmhgAA5ocAAOaJAADmiwAA5owAAOaNAADmjwAA5pAAAOaVAADmrgAA5rcAAOa5AADmuwAA5sQAAObGAADmyAAA5soAAOcTAADnNwAA514AAOeCAADnhAAA54YAAOeIAADnigAA54wAAOeOAADnjwAA55EAAOeqAADnywAA580AAOfPAADn0QAA59MAAOfVAADn1wAA59kAAOfbAADn/AAA5/4AAOgAAADoAgAA6AQAAOgGAADoCAAA6AoAAOgMAADoDgAA6IkAAOiLAADojQAA6I8AAOiRAADokgAA6JMAAOiUAADolQAA6JcAAOiZAADomgAA6JsAAOidAADongAA6RkAAOkbAADpHQAA6R8AAOkhAADpIgAA6SMAAOkkAADpJQAA6ScAAOkpAADpKgAA6SsAAOktAADpLgAA6akAAOmrAADprQAA6a8AAOmxAADpsgAA6bMAAOm0AADptQAA6bcAAOm5AADpugAA6bsAAOm9AADpvgAA6dcAAOnYAADp2QAA6dsAAOpWAADqWAAA6loAAOpcAADqXgAA6l8AAOpgAADqYQAA6mIAAOpkAADqZgAA6mcAAOpoAADqagAA6msAAOrmAADq6AAA6uoAAOrsAADq7gAA6u8AAOrwAADq8QAA6vIAAOr0AADq9gAA6vcAAOr4AADq+gAA6vsAAOt2AADreAAA63oAAOt8AADrfgAA638AAOuAAADrgQAA64IAAOuEAADrhgAA64cAAOuIAADrigAA64sAAOwGAADsCAAA7AoAAOwMAADsDgAA7A8AAOwQAADsEQAA7BIAAOwUAADsFgAA7BcAAOwYAADsGgAA7BsAAOyWAADsmAAA7JoAAOycAADsngAA7J8AAOygAADsoQAA7KIAAOykAADspgAA7KcAAOyoAADsqgAA7KsAAOz0AADtGAAA7T8AAO1jAADtZQAA7WcAAO1pAADtawAA7W0AAO1vAADtcAAA7XI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AAQdyAAEHdAABB3UAAQfwAAEH8gABB/QAAQf2AAEH+QABB/oAAQf7AAEH/AABB/0AAQf/AAEIAQABCAIAAQgDAAEIBQABCAYAAQiBAAEIgwABCIUAAQiHAAEIigABCIsAAQiMAAEIjQABCI4AAQiQAAEIkgABCJMAAQiUAAEIlgABCJcAAQkSAAEJFAABCRYAAQkYAAEJGwABCRwAAQkdAAEJHgABCR8AAQkhAAEJIwABCSQAAQklAAEJJwABCSgAAQmjAAEJpQABCacAAQmpAAEJrAABCa0AAQmuAAEJrwABCbAAAQmyAAEJtAABCbUAAQm2AAEJuAABCbkAAQo0AAEKNgABCjkAAQo7AAEKPgABCj8AAQpAAAEKQQABCkIAAQpEAAEKRgABCkcAAQpIAAEKSgABCksAAQpqAAEK5QABCucAAQrpAAEK6wABCu4AAQrvAAEK8AABCvEAAQryAAEK9AABCvYAAQr3AAEK+AABCvoAAQr7AAELjgABC7EAAQvRAAEL8QABC/MAAQv1AAEL9wABC/kAAQv7AAEL/AABC/0AAQwAAAEMAQABDAMAAQwEAAEMBgABDAgAAQwJAAEMCgABDA0AAQwOAAEMEwABDCwAAQw1AAEMNwABDDkAAQxCAAEMRQABDEgAAQxKAAEMkwABDLcAAQzeAAENAgABDQUAAQ0HAAENCQABDQsAAQ0NAAENDwABDRAAAQ0TAAENLAABDU0AAQ1PAAENUQABDVMAAQ1VAAENVwABDVkAAQ1bAAENXQABDX4AAQ2BAAENhAABDYcAAQ2KAAENjQABDZAAAQ2TAAENlgABDZgAAQ4TAAEOFQABDhcAAQ4ZAAEOHAABDh0AAQ4eAAEOHwABDiAAAQ4iAAEOJAABDiUAAQ4mAAEOKAABDikAAQ6kAAEOpgABDqgAAQ6qAAEOrQABDq4AAQ6vAAEOsAABDrEAAQ6zAAEOtQABDrYAAQ63AAEOuQABDroAAQ81AAEPNwABDzoAAQ88AAEPPwABD0AAAQ9BAAEPQgABD0MAAQ9FAAEPRwABD0gAAQ9JAAEPSwABD0wAAQ9lAAEPZgABD2cAAQ9pAAEP5AABD+YAAQ/oAAEP6gABD+0AAQ/uAAEP7wABD/AAAQ/xAAEP8wABD/UAAQ/2AAEP9wABD/kAAQ/6AAEQdQABEHcAARB5AAEQewABEH4AARB/AAEQgAABEIEAARCCAAEQhAABEIYAARCHAAEQiAABEIoAARCLAAERBgABEQgAAREKAAERDAABEQ8AAREQAAEREQABERIAARETAAERFQABERcAAREYAAERGQABERsAAREcAAERlwABEZkAARGbAAERnQABEaAAARGhAAERogABEaMAARGkAAERpgABEagAARGpAAERqgABEawAARGtAAESKAABEioAARIsAAESLgABEjEAARIyAAESMwABEjQAARI1AAESNwABEjkAARI6AAESOwABEj0AARI+AAEShwABEqsAARLSAAES9gABEvkAARL7AAES/QABEv8AARMBAAETAwABEwQAARMHAAETIAABEz0AARM/AAETQQABE0MAARNFAAETRwABE0kAARNLAAETaAABE2sAARNuAAETcQABE3QAARN3AAETegABE30AARN/AAET+gABE/wAARP+AAEUAAABFAMAARQEAAEUBQABFAYAARQHAAEUCQABFAsAARQMAAEUDQABFA8AARQQAAEUiwABFI0AARSPAAEUkQABFJQAARSVAAEUlgABFJcAARSYAAEUmgABFJwAARSdAAEUngABFKAAARShAAEVHAABFR4AARUgAAEVIgABFSUAARUmAAEVJwABFSgAARUpAAEVKwABFS0AARUuAAEVLwABFTEAARUyAAEVrQABFa8AARWxAAEVswABFbYAARW3AAEVuAABFbkAARW6AAEVvAABFb4AARW/AAEVwAABFcIAARXDAAEWPgABFkAAARZCAAEWRAABFkcAARZIAAEWSQABFkoAARZLAAEWTQABFk8AARZQAAEWUQABFlMAARZUAAEWzwABFtEAARbUAAEW1gABFtkAARbaAAEW2wABFtwAARbdAAEW3wABFuEAARbiAAEW4wABFuUAARbmAAEW9QABF3AAARdyAAEXdAABF3YAARd5AAEXegABF3sAARd8AAEXfQABF38AAReBAAEXggABF4MAAReFAAEXhgABGBkAARg8AAEYXAABGHwAARh+AAEYgAABGIIAARiEAAEYhgABGIcAARiIAAEYiwABGIwAARiOAAEYjwABGJEAARiTAAEYlAABGJUAARiYAAEYmQABGJ4AARi3AAEYwAABGMIAARjEAAEYzQABGNAAARjTAAEY1QABGR4AARlCAAEZaQABGY0AARmQAAEZkgABGZQAARmWAAEZmAABGZoAARmbAAEZngABGbcAARnYAAEZ2gABGdwAARneAAEZ4AABGeIAARnkAAEZ5gABGegAARoJAAEaDAABGg8AARoSAAEaFQABGhgAARobAAEaHgABGiEAARojAAEangABGqAAARqiAAEapAABGqcAARqoAAEaqQABGqoAARqrAAEarQABGq8AARqwAAEasQABGrMAARq0AAEbLwABGzEAARszAAEbNQABGzgAARs5AAEbOgABGzsAARs8AAEbPgABG0AAARtBAAEbQgABG0QAARtFAAEbwAABG8IAARvFAAEbxwABG8oAARvLAAEbzAABG80AARvOAAEb0AABG9IAARvTAAEb1AABG9YAARvXAAEb8AABG/EAARvyAAEb9AABHG8AARxxAAEccwABHHUAARx4AAEceQABHHoAARx7AAEcfAABHH4AARyAAAEcgQABHIIAARyEAAEchQABHQAAAR0CAAEdBAABHQYAAR0JAAEdCgABHQsAAR0MAAEdDQABHQ8AAR0RAAEdEgABHRMAAR0VAAEdFgABHZEAAR2TAAEdlQABHZcAAR2aAAEdmwABHZwAAR2dAAEdngABHaAAAR2iAAEdowABHaQAAR2mAAEdpwABHiIAAR4kAAEeJgABHigAAR4rAAEeLAABHi0AAR4uAAEeLwABHjEAAR4zAAEeNAABHjUAAR43AAEeOAABHrMAAR61AAEetwABHrkAAR68AAEevQABHr4AAR6/AAEewAABHsIAAR7EAAEexQABHsYAAR7IAAEeyQABHxIAAR82AAEfXQABH4EAAR+EAAEfhgABH4gAAR+KAAEfjAABH44AAR+PAAEfkgABH6sAAR/IAAEfygABH8wAAR/OAAEf0AABH9IAAR/UAAEf1gABH/MAAR/2AAEf+QABH/wAAR//AAEgAgABIAUAASAIAAEgCgABIIUAASCHAAEgiQABIIsAASCOAAEgjwABIJAAASCRAAEgkgABIJQAASCWAAEglwABIJgAASCaAAEgmwABIRYAASEYAAEhGgABIRwAASEfAAEhIAABISEAASEiAAEhIwABISUAASEnAAEhKAABISkAASErAAEhLAABIacAASGpAAEhqwABIa0AASGwAAEhsQABIbIAASGzAAEhtAABIbYAASG4AAEhuQABIboAASG8AAEhvQABIjgAASI6AAEiPAABIj4AASJBAAEiQgABIkMAASJEAAEiRQABIkcAASJJAAEiSgABIksAASJNAAEiTgABIskAASLLAAEizQABIs8AASLSAAEi0wABItQAASLVAAEi1gABItgAASLaAAEi2wABItwAASLeAAEi3wABI1oAASNcAAEjXgABI2AAASNjAAEjZAABI2UAASNmAAEjZwABI2kAASNrAAEjbAABI20AASNvAAEjcAABI+sAASPtAAEj7wABI/EAASP0AAEj9QABI/YAASP3AAEj+AABI/oAASP8AAEj/QABI/4AASQAAAEkAQABJJQAASS3AAEk1wABJPcAAST5AAEk+wABJP0AAST/AAElAQABJQIAASUDAAElBgABJQcAASUJAAElCgABJQwAASUOAAElDwABJRAAASUTAAElFAABJRkAASUyAAElOwABJT0AASU/AAElSAABJUsAASVOAAElUAABJZkAASW9AAEl5AABJggAASYLAAEmDQABJg8AASYRAAEmEwABJhUAASYWAAEmGQABJjIAASZTAAEmVQABJlcAASZZAAEmWwABJl0AASZfAAEmYQABJmMAASaEAAEmhwABJooAASaNAAEmkAABJpMAASaWAAEmmQABJpwAASaeAAEnGQABJxsAAScdAAEnHwABJyIAAScjAAEnJAABJyUAAScmAAEnKAABJyoAAScrAAEnLAABJy4AAScvAAEnqgABJ6wAASeuAAEnsAABJ7MAASe0AAEntQABJ7YAASe3AAEnuQABJ7sAASe8AAEnvQABJ78AASfAAAEoOwABKD0AAShAAAEoQgABKEUAAShGAAEoRwABKEgAAShJAAEoSwABKE0AAShOAAEoTwABKFEAAShSAAEoawABKGwAAShtAAEobwABKOoAASjsAAEo7gABKPAAASjzAAEo9AABKPUAASj2AAEo9wABKPkAASj7AAEo/AABKP0AASj/AAEpAAABKXsAASl9AAEpfwABKYEAASmEAAEphQABKYYAASmHAAEpiAABKYoAASmMAAEpjQABKY4AASmQAAEpkQABKgwAASoOAAEqEAABKhIAASoVAAEqFgABKhcAASoYAAEqGQABKhsAASodAAEqHgABKh8AASohAAEqIgABKp0AASqfAAEqoQABKqMAASqmAAEqpwABKqgAASqpAAEqqgABKqwAASquAAEqrwABKrAAASqyAAEqswABKy4AASswAAErMgABKzQAASs3AAErOAABKzkAASs6AAErOwABKz0AASs/AAErQAABK0EAAStDAAErRAABK40AASuxAAEr2AABK/wAASv/AAEsAQABLAMAASwFAAEsBwABLAkAASwKAAEsDQABLCYAASxDAAEsRQABLEcAASxJAAEsSwABLE0AASxPAAEsUQABLG4AASxxAAEsdAABLHcAASx6AAEsfQABLIAAASyDAAEshQABLQAAAS0CAAEtBAABLQYAAS0JAAEtCgABLQsAAS0MAAEtDQABLQ8AAS0RAAEtEgABLRMAAS0VAAEtFgABLZEAAS2TAAEtlQABLZcAAS2aAAEtmwABLZwAAS2dAAEtngABLaAAAS2iAAEtowABLaQAAS2mAAEtpwABLiIAAS4kAAEuJgABLigAAS4rAAEuLAABLi0AAS4uAAEuLwABLjEAAS4zAAEuNAABLjUAAS43AAEuOAABLrMAAS61AAEutwABLrkAAS68AAEuvQABLr4AAS6/AAEuwAABLsIAAS7EAAEuxQABLsYAAS7IAAEuyQABL0QAAS9GAAEvSAABL0oAAS9NAAEvTgABL08AAS9QAAEvUQABL1MAAS9VAAEvVgABL1cAAS9ZAAEvWgABL9UAAS/XAAEv2QABL9sAAS/eAAEv3wABL+AAAS/hAAEv4gABL+QAAS/mAAEv5wABL+gAAS/qAAEv6wABMGYAATBoAAEwagABMGwAATBvAAEwcAABMHEAATByAAEwcwABMHUAATB3AAEweAABMHkAATB7AAEwfAABMQ8AATEyAAExUgABMXIAATF0AAExdgABMXgAATF6AAExfAABMX0AATF+AAExgQABMYIAATGEAAExhQABMYcAATGJAAExigABMYsAATGOAAExjwABMZQAATGtAAExtgABMbgAATG6AAExwwABMcYAATHJAAExywABMhQAATI4AAEyXwABMoMAATKGAAEyiAABMooAATKMAAEyjgABMpAAATKRAAEylAABMq0AATLOAAEy0AABMtIAATLUAAEy1gABMtgAATLaAAEy3AABMt4AATL/AAEzAgABMwUAATMIAAEzCwABMw4AATMRAAEzFAABMxcAATMZAAEzlAABM5YAATOYAAEzmgABM50AATOeAAEznwABM6AAATOhAAEzowABM6UAATOmAAEzpwABM6kAATOqAAE0JQABNCcAATQpAAE0KwABNC4AATQvAAE0MAABNDEAATQyAAE0NAABNDYAATQ3AAE0OAABNDoAATQ7AAE0tgABNLgAATS7AAE0vQABNMAAATTBAAE0wgABNMMAATTEAAE0xgABNMgAATTJAAE0ygABNMwAATTNAAE05gABNOcAATToAAE06gABNWUAATVnAAE1aQABNWsAATVuAAE1bwABNXAAATVxAAE1cgABNXQAATV2AAE1dwABNXgAATV6AAE1ewABNfYAATX4AAE1+gABNfwAATX/AAE2AAABNgEAATYCAAE2AwABNgUAATYHAAE2CAABNgkAATYLAAE2DAABNocAATaJAAE2iwABNo0AATaQAAE2kQABNpIAATaTAAE2lAABNpYAATaYAAE2mQABNpoAATacAAE2nQABNxgAATcaAAE3HAABNx4AATchAAE3IgABNyMAATckAAE3JQABNycAATcpAAE3KgABNysAATctAAE3LgABN6kAATerAAE3rQABN68AATeyAAE3swABN7QAATe1AAE3tgABN7gAATe6AAE3uwABN7wAATe+AAE3vwABOAgAATgsAAE4UwABOHcAATh6AAE4fAABOH4AATiAAAE4ggABOIQAATiFAAE4iAABOKEAATi+AAE4wAABOMIAATjEAAE4xgABOMgAATjKAAE4zAABOOkAATjsAAE47wABOPIAATj1AAE4+AABOPsAATj+AAE5AAABOXsAATl9AAE5fwABOYEAATmEAAE5hQABOYYAATmHAAE5iAABOYoAATmMAAE5jQABOY4AATmQAAE5kQABOgwAAToOAAE6EAABOhIAAToVAAE6FgABOhcAAToYAAE6GQABOhsAATodAAE6HgABOh8AATohAAE6IgABOp0AATqfAAE6oQABOqMAATqmAAE6pwABOqgAATqpAAE6qgABOqwAATquAAE6rwABOrAAATqyAAE6swABOy4AATswAAE7MwABOzUAATs4AAE7OQABOzoAATs7AAE7PAABOz4AATtAAAE7QQABO0IAATtEAAE7RQABO8AAATvCAAE7xAABO8YAATvJAAE7ygABO8sAATvMAAE7zQABO88AATvRAAE70gABO9MAATvVAAE71gABPFE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AAU3BAAFNwwABTcUAAU3GAAFNxwABTckAAU3KAAFN4wABTeQAAU3lAAFN5wABTmIAAU5kAAFOZgABTmgAAU5rAAFObAABTm0AAU5uAAFObwABTnEAAU5zAAFOdAABTnUAAU53AAFOeAABTvMAAU71AAFO9wABTvkAAU78AAFO/QABTv4AAU7/AAFPAAABTwIAAU8EAAFPBQABTwYAAU8IAAFPCQABT4QAAU+GAAFPiAABT4oAAU+NAAFPjgABT48AAU+QAAFPkQABT5MAAU+VAAFPlgABT5cAAU+ZAAFPmgABUBUAAVAXAAFQGQABUBsAAVAeAAFQHwABUCAAAVAhAAFQIgABUCQAAVAmAAFQJwABUCgAAVAqAAFQKwABUKYAAVCoAAFQqgABUKwAAVCvAAFQsAABULEAAVCyAAFQswABULUAAVC3AAFQuAABULkAAVC7AAFQvAABUQUAAVEpAAFRUAABUXQAAVF3AAFReQABUXsAAVF9AAFRfwABUYEAAVGCAAFRhQABUZ4AAVG7AAFRvQABUb8AAVHBAAFRwwABUcUAAVHHAAFRyQABUeYAAVHpAAFR7AABUe8AAVHyAAFR9QABUfgAAVH7AAFR/QABUngAAVJ6AAFSfAABUn4AAVKBAAFSggABUoMAAVKEAAFShQABUocAAVKJAAFSigABUosAAVKNAAFSjgABUwkAAVMLAAFTDQABUw8AAVMSAAFTEwABUxQAAVMVAAFTFgABUxgAAVMaAAFTGwABUxwAAVMeAAFTHwABU5oAAVOcAAFTngABU6AAAVOjAAFTpAABU6UAAVOmAAFTpwABU6kAAVOrAAFTrAABU60AAVOvAAFTsAABVCsAAVQtAAFULwABVDEAAVQ0AAFUNQABVDYAAVQ3AAFUOAABVDoAAVQ8AAFUPQABVD4AAVRAAAFUQQABVLwAAVS+AAFUwAABVMIAAVTFAAFUxgABVMcAAVTIAAFUyQABVMsAAVTNAAFUzgABVM8AAVTRAAFU0gABVU0AAVVPAAFVUQABVVMAAVVWAAFVVwABVVgAAVVZAAFVWgABVVwAAVVeAAFVXwABVWAAAVViAAFVYwABVd4AAVXgAAFV4gABVeQAAVXnAAFV6AABVekAAVXqAAFV6wABVe0AAVXvAAFV8AABVfEAAVXzAAFV9AABVocAAVaqAAFWygABVuoAAVbsAAFW7gABVvAAAVbyAAFW9AABVvUAAVb2AAFW+QABVvoAAVb8AAFW/QABVv8AAVcBAAFXAgABVwMAAVcGAAFXBwABVwwAAVclAAFXLgABVzAAAVcyAAFXOwABVz4AAVdBAAFXQwABV4wAAVewAAFX1wABV/sAAVf+AAFYAAABWAIAAVgEAAFYBgABWAgAAVgJAAFYDAABWCUAAVhGAAFYSAABWEoAAVhMAAFYTgABWFAAAVhSAAFYVAABWFYAAVh3AAFYegABWH0AAViAAAFYgwABWIYAAViJAAFYjAABWI8AAViRAAFZDAABWQ4AAVkQAAFZEgABWRUAAVkWAAFZFwABWRgAAVkZAAFZGwABWR0AAVkeAAFZHwABWSEAAVkiAAFZnQABWZ8AAVmhAAFZowABWaYAAVmnAAFZqAABWakAAVmqAAFZrAABWa4AAVmvAAFZsAABWbIAAVmzAAFaLgABWjAAAVozAAFaNQABWjgAAVo5AAFaOgABWjsAAVo8AAFaPgABWkAAAVpBAAFaQgABWkQAAVpFAAFaXgABWl8AAVpgAAFaYgABWt0AAVrfAAFa4QABWuMAAVrmAAFa5wABWugAAVrpAAFa6gABWuwAAVruAAFa7wABWvAAAVryAAFa8wABW24AAVtwAAFbcgABW3QAAVt3AAFbeAABW3kAAVt6AAFbewABW30AAVt/AAFbgAABW4EAAVuDAAFbhAABW/8AAVwBAAFcAwABXAUAAVwIAAFcCQABXAoAAVwLAAFcDAABXA4AAVwQAAFcEQABXBIAAVwUAAFcFQABXJAAAVySAAFclAABXJYAAVyZAAFcmgABXJsAAVycAAFcnQABXJ8AAVyhAAFcogABXKMAAVylAAFcpgABXSEAAV0jAAFdJQABXScAAV0qAAFdKwABXSwAAV0tAAFdLgABXTAAAV0yAAFdMwABXTQAAV02AAFdNwABXYAAAV2kAAFdywABXe8AAV3yAAFd9AABXfYAAV34AAFd+gABXfwAAV39AAFeAAABXhkAAV42AAFeOAABXjoAAV48AAFePgABXkAAAV5CAAFeRAABXmEAAV5kAAFeZwABXmoAAV5tAAFecAABXnMAAV52AAFeeAABXvMAAV71AAFe9wABXvkAAV78AAFe/QABXv4AAV7/AAFfAAABXwIAAV8EAAFfBQABXwYAAV8IAAFfCQABX4QAAV+GAAFfiAABX4oAAV+NAAFfjgABX48AAV+QAAFfkQABX5MAAV+VAAFflgABX5cAAV+ZAAFfmgABYBUAAWAXAAFgGQABYBsAAWAeAAFgHwABYCAAAWAhAAFgIgABYCQAAWAmAAFgJwABYCgAAWAqAAFgKwABYKYAAWCoAAFgqgABYKwAAWCvAAFgsAABYLEAAWCyAAFgswABYLUAAWC3AAFguAABYLkAAWC7AAFgvAABYTcAAWE5AAFhOwABYT0AAWFAAAFhQQABYUIAAWFDAAFhRAABYUYAAWFIAAFhSQABYUoAAWFMAAFhTQABYcgAAWHKAAFhzAABYc4AAWHRAAFh0gABYdMAAWHUAAFh1QABYdcAAWHZAAFh2gABYdsAAWHdAAFh3gABYlkAAWJbAAFiXQABYl8AAWJiAAFiYwABYmQAAWJlAAFiZgABYmgAAWJqAAFiawABYmwAAWJuAAFibwABYwIAAWMlAAFjRQABY2UAAWNnAAFjaQABY2sAAWNtAAFjbwABY3AAAWNxAAFjdAABY3UAAWN3AAFjeAABY3sAAWN9AAFjfgABY38AAWOCAAFjgwABY4gAAWOhAAFjqgABY6wAAWOvAAFjuAABY7sAAWO+AAFjwAABY9MAAWQcAAFkQAABZGcAAWSLAAFkjgABZJAAAWSSAAFklAABZJYAAWSYAAFkmQABZJwAAWS1AAFk1gABZNgAAWTaAAFk3AABZN4AAWTgAAFk4gABZOQAAWTmAAFlBwABZQoAAWUNAAFlEAABZRMAAWUWAAFlGQABZRwAAWUfAAFlIQABZZwAAWWeAAFloAABZaIAAWWlAAFlpgABZacAAWWoAAFlqQABZasAAWWtAAFlrgABZa8AAWWxAAFlsgABZi0AAWYvAAFmMQABZjMAAWY2AAFmNwABZjgAAWY5AAFmOgABZjwAAWY+AAFmPwABZkAAAWZCAAFmQwABZr4AAWbAAAFmwwABZsUAAWbIAAFmyQABZsoAAWbLAAFmzAABZs4AAWbQAAFm0QABZtIAAWbUAAFm1QABZu4AAWbvAAFm8AABZvIAAWdtAAFnbwABZ3EAAWdzAAFndgABZ3cAAWd4AAFneQABZ3oAAWd8AAFnfgABZ38AAWeAAAFnggABZ4MAAWf+AAFoAAABaAIAAWgEAAFoBwABaAgAAWgJAAFoCgABaAsAAWgNAAFoDwABaBAAAWgRAAFoEwABaBQAAWiPAAFokQABaJMAAWiVAAFomAABaJkAAWiaAAFomwABaJwAAWieAAFooAABaKEAAWiiAAFopAABaKUAAWkgAAFpIgABaSQAAWkmAAFpKQABaSoAAWkrAAFpLAABaS0AAWkvAAFpMQABaTIAAWkzAAFpNQABaTYAAWmxAAFpswABabUAAWm3AAFpugABabsAAWm8AAFpvQABab4AAWnAAAFpwgABacMAAWnEAAFpxgABaccAAWoQAAFqNAABalsAAWp/AAFqggABaoUAAWqHAAFqiQABaosAAWqNAAFqjgABapEAAWqqAAFqxwABasoAAWrNAAFq0AABatMAAWrWAAFq2QABatwAAWr5AAFq/AABav8AAWsCAAFrBQABawgAAWsLAAFrDgABaxAAAWsiAAFrNgABa0gAAWtdAAFrbwABa34AAWubAAFsFgABbBgAAWwbAAFsHQABbCAAAWwhAAFsIgABbCMAAWwkAAFsJgABbCkAAWwqAAFsKwABbC0AAWwuAAFsqQABbKsAAWyuAAFssAABbLMAAWy0AAFstQABbLYAAWy3AAFsuQABbLwAAWy9AAFsvgABbMAAAWzBAAFswwABbT4AAW1AAAFtQwABbUUAAW1IAAFtSQABbUoAAW1LAAFtTAABbU4AAW1RAAFtUgABbVMAAW1VAAFtVgABbdEAAW3TAAFt1gABbdgAAW3bAAFt3AABbd0AAW3eAAFt3wABbeEAAW3kAAFt5QABbeYAAW3oAAFt6QABbmwAAW6QAAFutAABbtcAAW7+AAFvHgABb0UAAW9sAAFvjAABb7AAAW/UAAFv1gABb9kAAW/bAAFv3QABb98AAW/iAAFv5QABb+cAAW/pAAFv7AABb+4AAW/wAAFv8wABb/YAAW/3AAFv/AABcBUAAXAaAAFwHAABcCEAAXAkAAFwJgABcG8AAXCTAAFwugABcN4AAXDhAAFw4wABcOUAAXDnAAFw6QABcOsAAXDsAAFw7wABcQgAAXEtAAFxLwABcTEAAXEzAAFxNQABcTcAAXE5AAFxOwABcT0AAXE/AAFxZAABcWcAAXFqAAFxbQABcXAAAXFzAAFxdgABcXkAAXF8AAFxfwABcYEAAXH8AAFx/gABcgEAAXIDAAFyBgABcgcAAXIIAAFyCQABcgoAAXIMAAFyDgABcg8AAXIQAAFyEgABchMAAXIkAAFyJQABcicAAXKiAAFypAABcqYAAXKoAAFyqwABcqwAAXKtAAFyrgABcq8AAXKxAAFyswABcrQAAXK1AAFytwABcrgAAXMzAAFzNQABczgAAXM6AAFzPQABcz4AAXM/AAFzQAABc0EAAXNDAAFzRQABc0YAAXNHAAFzSQABc0oAAXNbAAFzXAABc14AAXPZAAFz2wABc90AAXPfAAFz4gABc+MAAXPkAAFz5QABc+YAAXPoAAFz6gABc+sAAXPsAAFz7gABc+8AAXRqAAF0bAABdG8AAXRxAAF0dAABdHUAAXR2AAF0dwABdHgAAXR6AAF0fAABdH0AAXR+AAF0gAABdIEAAXSSAAF0kwABdJUAAXUQAAF1EgABdRQAAXUWAAF1GQABdRoAAXUbAAF1HAABdR0AAXUfAAF1IQABdSIAAXUjAAF1JQABdSYAAXWhAAF1owABdaYAAXWoAAF1qwABdawAAXWtAAF1rgABda8AAXWxAAF1swABdbQAAXW1AAF1twABdbgAAXXRAAF10gABddMAAXXVAAF2UAABdlIAAXZUAAF2VgABdlkAAXZaAAF2WwABdlwAAXZdAAF2XwABdmEAAXZiAAF2YwABdmUAAXZmAAF24QABduMAAXblAAF25wABduoAAXbrAAF27AABdu0AAXbuAAF28AABdvIAAXbzAAF29AABdvYAAXb3AAF3EAABdykAAXcsAAF3LwABdzIAAXc1AAF3OAABdzsAAXdUAAF3VwABd1oAAXddAAF3YAABd2MAAXdmAAF3aAABd30AAXegAAF3tgABd8kAAXfVAAF36wABeH4AAXihAAF4wQABeOEAAXjjAAF45QABeOcAAXjpAAF47AABeO0AAXjuAAF48QABePIAAXj0AAF49QABePcAAXj6AAF4+wABePwAAXj/AAF5AAABeQUAAXkeAAF5JwABeSkAAXkrAAF5NAABeTcAAXk6AAF5PAABeYUAAXmpAAF50AABefQAAXn3AAF5+QABefsAAXn9AAF5/wABegEAAXoCAAF6BQABeh4AAXo/AAF6QQABekMAAXpFAAF6RwABekkAAXpLAAF6TQABek8AAXpwAAF6cwABenYAAXp5AAF6fAABen8AAXqCAAF6hQABeogAAXqKAAF7BQABewcAAXsJAAF7CwABew4AAXsPAAF7EAABexEAAXsSAAF7FAABexYAAXsXAAF7GAABexoAAXsbAAF7lgABe5gAAXuaAAF7nAABe58AAXugAAF7oQABe6IAAXujAAF7pQABe6cAAXuoAAF7qQABe6sAAXusAAF8JwABfCkAAXwsAAF8LgABfDEAAXwyAAF8MwABfDQAAXw1AAF8NwABfDkAAXw6AAF8OwABfD0AAXw+AAF8VwABfFgAAXxZAAF8WwABfNYAAXzYAAF82gABfNwAAXzfAAF84AABfOEAAXziAAF84wABfOUAAXznAAF86AABfOkAAXzrAAF87AABfWcAAX1pAAF9awABfW0AAX1wAAF9cQABfXIAAX1zAAF9dAABfXYAAX14AAF9eQABfXoAAX18AAF9fQABffgAAX36AAF9/AABff4AAX4BAAF+AgABfgMAAX4EAAF+BQABfgcAAX4JAAF+CgABfgsAAX4NAAF+DgABfokAAX6LAAF+jQABfo8AAX6SAAF+kwABfpQAAX6VAAF+lgABfpgAAX6aAAF+mwABfpwAAX6eAAF+nwABfxoAAX8cAAF/HgABfyAAAX8jAAF/JAABfyUAAX8mAAF/JwABfykAAX8rAAF/LAABfy0AAX8vAAF/MAABf3kAAX+dAAF/xAABf+gAAX/rAAF/7QABf+8AAX/xAAF/8wABf/UAAX/2AAF/+QABgBIAAYAvAAGAMQABgDMAAYA1AAGANwABgDkAAYA7AAGAPQABgFoAAYBdAAGAYAABgGMAAYBmAAGAaQABgGwAAYBvAAGAcQABgOwAAYDuAAGA8AABgPIAAYD1AAGA9gABgPcAAYD4AAGA+QABgPsAAYD9AAGA/gABgP8AAYEBAAGBAgABgX0AAYF/AAGBgQABgYMAAYGGAAGBhwABgYgAAYGJAAGBigABgYwAAYGOAAGBjwABgZAAAYGSAAGBkwABgg4AAYIQAAGCEgABghQAAYIXAAGCGAABghkAAYIaAAGCGwABgh0AAYIfAAGCIAABgiEAAYIjAAGCJAABgp8AAYKhAAGCowABgqUAAYKoAAGCqQABgqoAAYKrAAGCrAABgq4AAYKwAAGCsQABgrIAAYK0AAGCtQABgzAAAYMyAAGDNAABgzYAAYM5AAGDOgABgzsAAYM8AAGDPQABgz8AAYNBAAGDQgABg0MAAYNFAAGDRgABg8EAAYPDAAGDxQABg8cAAYPKAAGDywABg8wAAYPNAAGDzgABg9AAAYPSAAGD0wABg9QAAYPWAAGD1wABhFIAAYRUAAGEVgABhFgAAYRbAAGEXAABhF0AAYReAAGEXwABhGEAAYRjAAGEZAABhGUAAYRnAAGEaAABhPsAAYUeAAGFPgABhV4AAYVgAAGFYgABhWQAAYVmAAGFaQABhWoAAYVrAAGFbgABhW8AAYVxAAGFcgABhXQAAYV3AAGFeAABhXkAAYV8AAGFfQABhYIAAYWbAAGFpAABhaYAAYWoAAGFsQABhbQAAYW3AAGFuQABhgIAAYYmAAGGTQABhnEAAYZ0AAGGdgABhngAAYZ6AAGGfAABhn4AAYZ/AAGGggABhpsAAYa8AAGGvgABhsAAAYbCAAGGxAABhsYAAYbIAAGGygABhswAAYbtAAGG8AABhvMAAYb2AAGG+QABhvwAAYb/AAGHAgABhwUAAYcHAAGHggABh4QAAYeGAAGHiAABh4sAAYeMAAGHjQABh44AAYePAAGHkQABh5MAAYeUAAGHlQABh5cAAYeYAAGIEwABiBUAAYgXAAGIGQABiBwAAYgdAAGIHgABiB8AAYggAAGIIgABiCQAAYglAAGIJgABiCgAAYgpAAGIpAABiKYAAYipAAGIqwABiK4AAYivAAGIsAABiLEAAYiyAAGItAABiLYAAYi3AAGIuAABiLoAAYi7AAGI1AABiNUAAYjWAAGI2AABiVMAAYlVAAGJVwABiVkAAYlcAAGJXQABiV4AAYlfAAGJYAABiWIAAYlkAAGJZQABiWYAAYloAAGJaQABieQAAYnmAAGJ6AABieoAAYntAAGJ7gABie8AAYnwAAGJ8QABifMAAYn1AAGJ9gABifcAAYn5AAGJ+gABinUAAYp3AAGKeQABinsAAYp+AAGKfwABioAAAYqBAAGKggABioQAAYqGAAGKhwABiogAAYqKAAGKiwABiwYAAYsIAAGLCgABiwwAAYsPAAGLEAABixEAAYsSAAGLEwABixUAAYsXAAGLGAABixkAAYsbAAGLHAABi5cAAYuZAAGLmwABi50AAYugAAGLoQABi6IAAYujAAGLpAABi6YAAYuoAAGLqQABi6oAAYusAAGLrQABi/YAAYwaAAGMQQABjGUAAYxoAAGMagABjGwAAYxuAAGMcAABjHIAAYxzAAGMdgABjI8AAYysAAGMrgABjLAAAYyyAAGMtAABjLYAAYy4AAGMugABjNcAAYzaAAGM3QABjOAAAYzjAAGM5gABjOkAAYzsAAGM7gABjWkAAY1rAAGNbQABjW8AAY1yAAGNcwABjXQAAY11AAGNdgABjXgAAY16AAGNewABjXwAAY1+AAGNfwABjfoAAY38AAGN/gABjgAAAY4DAAGOBAABjgUAAY4GAAGOBwABjgkAAY4LAAGODAABjg0AAY4PAAGOEAABjosAAY6NAAGOjwABjpEAAY6UAAGOlQABjpYAAY6XAAGOmAABjpoAAY6cAAGOnQABjp4AAY6gAAGOoQABjxwAAY8eAAGPIAABjyIAAY8lAAGPJgABjycAAY8oAAGPKQABjysAAY8tAAGPLgABjy8AAY8xAAGPMgABj60AAY+vAAGPsQABj7MAAY+2AAGPtwABj7gAAY+5AAGPugABj7wAAY++AAGPvwABj8AAAY/CAAGPwwABkD4AAZBAAAGQQwABkEUAAZBIAAGQSQABkEoAAZBLAAGQTAABkE4AAZBQAAGQUQABkFIAAZBUAAGQVQABkGcAAZDiAAGQ5AABkOYAAZDoAAGQ6wABkOwAAZDtAAGQ7gABkO8AAZDxAAGQ8wABkPQAAZD1AAGQ9wABkPgAAZGLAAGRrgABkc4AAZHuAAGR8AABkfIAAZH0AAGR9gABkfkAAZH6AAGR+wABkf4AAZH/AAGSAQABkgIAAZIEAAGSBwABkggAAZIJAAGSDAABkg0AAZISAAGSKwABkjQAAZI2AAGSOAABkkEAAZJEAAGSRwABkkkAAZKSAAGStgABkt0AAZMBAAGTBAABkwYAAZMIAAGTCgABkwwAAZMOAAGTDwABkxIAAZMrAAGTTAABk04AAZNQAAGTUgABk1QAAZNWAAGTWAABk1oAAZNcAAGTfQABk4AAAZODAAGThgABk4kAAZOMAAGTjwABk5IAAZOVAAGTlwABlBIAAZQUAAGUFgABlBgAAZQbAAGUHAABlB0AAZQeAAGUHwABlCEAAZQjAAGUJAABlCUAAZQnAAGUKAABlKMAAZSlAAGUpwABlKkAAZSsAAGUrQABlK4AAZSvAAGUsAABlLIAAZS0AAGUtQABlLYAAZS4AAGUuQABlTQAAZU2AAGVOQABlTsAAZU+AAGVPwABlUAAAZVBAAGVQgABlUQAAZVGAAGVRwABlUgAAZVKAAGVSwABlWQAAZVlAAGVZgABlWgAAZXjAAGV5QABlecAAZXpAAGV7AABle0AAZXuAAGV7wABlfAAAZXyAAGV9AABlfUAAZX2AAGV+AABlfkAAZZ0AAGWdgABlngAAZZ6AAGWfQABln4AAZZ/AAGWgAABloEAAZaDAAGWhQABloYAAZaHAAGWiQABlooAAZcFAAGXBwABlwkAAZcLAAGXDgABlw8AAZcQAAGXEQABlxIAAZcUAAGXFgABlxcAAZcYAAGXGgABlxsAAZeWAAGXmAABl5oAAZecAAGXnwABl6AAAZehAAGXogABl6MAAZelAAGXpwABl6gAAZepAAGXqwABl6wAAZgnAAGYKQABmCsAAZgtAAGYMAABmDEAAZgyAAGYMwABmDQAAZg2AAGYOAABmDkAAZg6AAGYPAABmD0AAZiGAAGYqgABmNEAAZj1AAGY+AABmPoAAZj8AAGY/gABmQAAAZkCAAGZAwABmQYAAZkfAAGZPAABmT4AAZlAAAGZQgABmUQAAZlGAAGZSAABmUoAAZlnAAGZagABmW0AAZlwAAGZcwABmXYAAZl5AAGZfAABmX4AAZn5AAGZ+wABmf0AAZn/AAGaAgABmgMAAZoEAAGaBQABmgYAAZoIAAGaCgABmgsAAZoMAAGaDgABmg8AAZqKAAGajAABmo4AAZqQAAGakwABmpQAAZqVAAGalgABmpcAAZqZAAGamwABmpwAAZqdAAGanwABmqAAAZsbAAGbHQABmx8AAZshAAGbJAABmyUAAZsmAAGbJwABmygAAZsqAAGbLAABmy0AAZsuAAGbMAABmzEAAZusAAGbrgABm7AAAZuyAAGbtQABm7YAAZu3AAGbuAABm7kAAZu7AAGbvQABm74AAZu/AAGbwQABm8IAAZw9AAGcPwABnEEAAZxDAAGcRgABnEcAAZxIAAGcSQABnEoAAZxMAAGcTgABnE8AAZxQAAGcUgABnFMAAZzOAAGc0AABnNIAAZzUAAGc1wABnNgAAZzZAAGc2gABnNsAAZzdAAGc3wABnOAAAZzhAAGc4wABnOQAAZ1fAAGdYQABnWMAAZ1lAAGdaAABnWkAAZ1qAAGdawABnWwAAZ1uAAGdcAABnXEAAZ1yAAGddAABnXUAAZ4IAAGeKwABnksAAZ5rAAGebQABnm8AAZ5xAAGecwABnnYAAZ53AAGeeAABnnsAAZ58AAGefgABnn8AAZ6CAAGehQABnoYAAZ6HAAGeigABnosAAZ6QAAGeqQABnrIAAZ60AAGetwABnsAAAZ7DAAGexgABnsgAAZ8RAAGfNQABn1wAAZ+AAAGfgwABn4UAAZ+HAAGfiQABn4sAAZ+NAAGfjgABn5EAAZ+qAAGfywABn80AAZ/PAAGf0QABn9MAAZ/VAAGf1wABn9kAAZ/bAAGf/AABn/8AAaACAAGgBQABoAgAAaALAAGgDgABoBEAAaAUAAGgFgABoJEAAaCTAAGglQABoJcAAaCaAAGgmwABoJwAAaCdAAGgngABoKAAAaCiAAGgowABoKQAAaCmAAGgpwABoSIAAaEkAAGhJgABoSgAAaErAAGhLAABoS0AAaEuAAGhLwABoTEAAaEzAAGhNAABoTUAAaE3AAGhOAABobMAAaG1AAGhuAABoboAAaG9AAGhvgABob8AAaHAAAGhwQABocMAAaHFAAGhxgABoccAAaHJAAGhygABoeMAAaHkAAGh5QABoecAAaJiAAGiZAABomYAAaJoAAGiawABomwAAaJtAAGibgABom8AAaJxAAGicwABonQAAaJ1AAGidwABongAAaLzAAGi9QABovcAAaL5AAGi/AABov0AAaL+AAGi/wABowAAAaMCAAGjBAABowUAAaMGAAGjCAABowkAAaOEAAGjhgABo4gAAaOKAAGjjQABo44AAaOPAAGjkAABo5EAAaOTAAGjlQABo5YAAaOXAAGjmQABo5oAAaQVAAGkFwABpBkAAaQbAAGkHgABpB8AAaQgAAGkIQABpCIAAaQkAAGkJgABpCcAAaQoAAGkKgABpCsAAaSmAAGkqAABpKoAAaSsAAGkrwABpLAAAaSxAAGksgABpLMAAaS1AAGktwABpLgAAaS5AAGkuwABpLwAAaUFAAGlKQABpVAAAaV0AAGldwABpXoAAaV8AAGlfgABpYAAAaWCAAGlgwABpYYAAaWfAAGlvAABpb8AAaXCAAGlxQABpcgAAaXLAAGlzgABpdEAAaXuAAGl8QABpfQAAaX3AAGl+gABpf0AAaYAAAGmAwABpgUAAaaAAAGmggABpoUAAaaHAAGmigABposAAaaMAAGmjQABpo4AAaaQAAGmkwABppQAAaaVAAGmlwABppgAAacTAAGnFQABpxgAAacaAAGnHQABpx4AAacfAAGnIAABpyEAAacjAAGnJgABpycAAacoAAGnKgABpysAAactAAGnqAABp6oAAaetAAGnrwABp7IAAaezAAGntAABp7UAAae2AAGnuAABp7sAAae8AAGnvQABp78AAafAAAGoOwABqD0AAag/AAGoQQABqEQAAahFAAGoRgABqEcAAahIAAGoSgABqE0AAahOAAGoTwABqFEAAahSAAGozQABqM8AAajRAAGo0wABqNYAAajXAAGo2AABqNkAAajaAAGo3AABqN8AAajgAAGo4QABqOMAAajkAAGpXwABqWEAAaljAAGpZQABqWgAAalpAAGpagABqWsAAalsAAGpbgABqXEAAalyAAGpcwABqXUAAal2AAGp8QABqfMAAan2AAGp+AABqfsAAan8AAGp/QABqf4AAan/AAGqAQABqgQAAaoFAAGqBgABqggAAaoJAAGqGgABqi0AAapGAAGqWQABqmYAAap5AAGqkAABqqIAAas1AAGrWAABq3gAAauYAAGrmgABq5wAAaueAAGroAABq6MAAaukAAGrpQABq6gAAaupAAGrqwABq6wAAauvAAGrsgABq7MAAau0AAGrtwABq7gAAavBAAGr2gABq+MAAavlAAGr6AABq/EAAav0AAGr9wABq/kAAaxCAAGsZgABrI0AAayxAAGstAABrLYAAay4AAGsugABrLwAAay+AAGsvwABrMIAAazbAAGs/AABrP4AAa0AAAGtAgABrQQAAa0GAAGtCAABrQoAAa0MAAGtLQABrTAAAa0zAAGtNgABrTkAAa08AAGtPwABrUIAAa1FAAGtRwABrcIAAa3EAAGtxgABrcgAAa3LAAGtzAABrc0AAa3OAAGtzwABrdEAAa3TAAGt1AABrdUAAa3XAAGt2AABrlMAAa5VAAGuVwABrlkAAa5cAAGuXQABrl4AAa5fAAGuYAABrmIAAa5kAAGuZQABrmYAAa5oAAGuaQABruQAAa7mAAGu6QABrusAAa7uAAGu7wABrvAAAa7xAAGu8gABrvQAAa72AAGu9wABrvgAAa76AAGu+wABrxQAAa8VAAGvFgABrxgAAa+TAAGvlQABr5cAAa+ZAAGvnAABr50AAa+eAAGvnwABr6AAAa+iAAGvpAABr6UAAa+mAAGvqAABr6kAAbAkAAGwJgABsCgAAbAqAAGwLQABsC4AAbAvAAGwMAABsDEAAbAzAAGwNQABsDYAAbA3AAGwOQABsDoAAbC1AAGwtwABsLkAAbC7AAGwvgABsL8AAbDAAAGwwQABsMIAAbDEAAGwxgABsMcAAbDIAAGwygABsMsAAbFGAAGxSAABsUoAAbFMAAGxTwABsVAAAbFRAAGxUgABsVMAAbFVAAGxVwABsVgAAbFZAAGxWwABsVwAAbHXAAGx2QABsdsAAbHdAAGx4AABseEAAbHiAAGx4wABseQAAbHmAAGx6AABsekAAbHqAAGx7AABse0AAbI2AAGyWgABsoEAAbKlAAGyqAABsqsAAbKtAAGyrwABsrEAAbKzAAGytAABsrcAAbLQAAGy7QABsvAAAbLzAAGy9gABsvkAAbL8AAGy/wABswIAAbMfAAGzIgABsyUAAbMoAAGzKwABsy4AAbMxAAGzNAABszYAAbOxAAGzswABs7YAAbO4AAGzuwABs7wAAbO9AAGzvgABs78AAbPBAAGzxAABs8UAAbPGAAGzyAABs8kAAbREAAG0RgABtEkAAbRLAAG0TgABtE8AAbRQAAG0UQABtFIAAbRUAAG0VwABtFgAAbRZAAG0WwABtFwAAbTXAAG02QABtNwAAbTeAAG04QABtOIAAbTjAAG05AABtOUAAbTnAAG06gABtOsAAbTsAAG07gABtO8AAbVqAAG1bAABtW8AAbVxAAG1dAABtXUAAbV2AAG1dwABtXgAAbV6AAG1fQABtX4AAbV/AAG1gQABtYIAAbYFAAG2KQABtk0AAbZwAAG2lwABtrcAAbbeAAG3BQABtyUAAbdJAAG3bQABt28AAbdyAAG3dAABt3YAAbd4AAG3ewABt34AAbeAAAG3ggABt4UAAbeHAAG3iQABt4wAAbePAAG3kAABt5UAAbeuAAG3swABt7UAAbe6AAG3vQABt78AAbgIAAG4LAABuFMAAbh3AAG4egABuHwAAbh+AAG4gAABuIIAAbiEAAG4hQABuIgAAbihAAG4xgABuMgAAbjKAAG4zAABuM4AAbjQAAG40gABuNQAAbjWAAG42AABuP0AAbkAAAG5AwABuQYAAbkJAAG5DAABuQ8AAbkSAAG5FQABuRgAAbkaAAG5lQABuZcAAbmaAAG5nAABuZ8AAbmgAAG5oQABuaIAAbmjAAG5pQABuacAAbmoAAG5qQABuasAAbmsAAG5vQABub4AAbnAAAG6OwABuj0AAbo/AAG6QQABukQAAbpFAAG6RgABukcAAbpIAAG6SgABukwAAbpNAAG6TgABulAAAbpRAAG6zAABus4AAbrRAAG60wAButYAAbrXAAG62AAButkAAbraAAG63AABut4AAbrfAAG64AABuuIAAbrjAAG69AABuvUAAbr3AAG7cgABu3QAAbt2AAG7eAABu3sAAbt8AAG7fQABu34AAbt/AAG7gQABu4MAAbuEAAG7hQABu4cAAbuIAAG8AwABvAUAAbwIAAG8CgABvA0AAbwOAAG8DwABvBAAAbwRAAG8EwABvBUAAbwWAAG8FwABvBkAAbwaAAG8KwABvCwAAbwuAAG8qQABvKsAAbytAAG8rwABvLIAAbyzAAG8tAABvLUAAby2AAG8uAABvLoAAby7AAG8vAABvL4AAby/AAG9OgABvTwAAb0/AAG9QQABvUQAAb1FAAG9RgABvUcAAb1IAAG9SgABvUwAAb1NAAG9TgABvVAAAb1RAAG9agABvWsAAb1sAAG9bgABvekAAb3rAAG97QABve8AAb3yAAG98wABvfQAAb31AAG99gABvfgAAb36AAG9+wABvfwAAb3+AAG9/wABvnoAAb58AAG+fwABvoEAAb6EAAG+hQABvoYAAb6HAAG+iAABvooAAb6MAAG+jQABvo4AAb6QAAG+kQABvp0AAb62AAG+ywABvs4AAb7RAAG+1AABvtcAAb7aAAG+7wABvvIAAb71AAG++AABvvsAAb7+AAG/AAABvxYAAb8hAAG/LQABv0MAAb9NAAG/4AABwAMAAcAjAAHAQwABwEUAAcBHAAHASQABwEsAAcBOAAHATwABwFAAAcBTAAHAVAABwFYAAcBXAAHAWQABwFwAAcBdAAHAXgABwGEAAcBiAAHAZwABwIAAAcCJAAHAiwABwI0AAcCWAAHAmQABwJwAAcCeAAHA5wABwQsAAcEyAAHBVgABwVkAAcFbAAHBXQABwV8AAcFhAAHBYwABwWQAAcFnAAHBgAABwaEAAcGjAAHBpQABwacAAcGpAAHBqwABwa0AAcGvAAHBsQABwdIAAcHVAAHB2AABwdsAAcHeAAHB4QABweQAAcHnAAHB6gABwewAAcJnAAHCaQABwmsAAcJtAAHCcAABwnEAAcJyAAHCcwABwnQAAcJ2AAHCeAABwnkAAcJ6AAHCfAABwn0AAcL4AAHC+gABwvwAAcL+AAHDAQABwwIAAcMDAAHDBAABwwUAAcMHAAHDCQABwwoAAcMLAAHDDQABww4AAcOJAAHDiwABw44AAcOQAAHDkwABw5QAAcOVAAHDlgABw5cAAcOZAAHDmwABw5wAAcOdAAHDnwABw6AAAcO5AAHDugABw7sAAcO9AAHEOAABxDoAAcQ8AAHEPgABxEEAAcRCAAHEQwABxEQAAcRFAAHERwABxEkAAcRKAAHESwABxE0AAcROAAHEyQABxMsAAcTNAAHEzwABxNIAAcTTAAHE1AABxNUAAcTWAAHE2AABxNoAAcTbAAHE3AABxN4AAcTfAAHFWgABxVwAAcVeAAHFYAABxWMAAcVkAAHFZQABxWYAAcVnAAHFaQABxWsAAcVsAAHFbQABxW8AAcVwAAHF6wABxe0AAcXvAAHF8QABxfQAAcX1AAHF9gABxfcAAcX4AAHF+gABxfwAAcX9AAHF/gABxgAAAcYBAAHGfAABxn4AAcaAAAHGggABxoUAAcaGAAHGhwABxogAAcaJAAHGiwABxo0AAcaOAAHGjwABxpEAAcaSAAHG2wABxv8AAccmAAHHSgABx00AAcdPAAHHUQABx1MAAcdVAAHHVwABx1gAAcdbAAHHdAABx5EAAceTAAHHlQABx5cAAceZAAHHmwABx50AAcefAAHHvAABx78AAcfCAAHHxQABx8gAAcfLAAHHzgABx9EAAcfTAAHITgAByFAAAchSAAHIVAAByFcAAchYAAHIWQAByFoAAchbAAHIXQAByF8AAchgAAHIYQAByGMAAchkAAHI3wAByOEAAcjjAAHI5QAByOgAAcjpAAHI6gAByOsAAcjsAAHI7gAByPAAAcjxAAHI8gAByPQAAcj1AAHJcAAByXIAAcl0AAHJdgAByXkAAcl6AAHJewAByXwAAcl9AAHJfwAByYEAAcmCAAHJgwAByYUAAcmGAAHKAQABygMAAcoGAAHKCAABygsAAcoMAAHKDQAByg4AAcoPAAHKEQAByhMAAcoUAAHKFQAByhcAAcoYAAHKkwABypUAAcqXAAHKmQABypwAAcqdAAHKngAByp8AAcqgAAHKogAByqQAAcqlAAHKpgAByqgAAcqpAAHLJAAByyYAAcsoAAHLKgAByy0AAcsuAAHLLwAByzAAAcsxAAHLMwAByzUAAcs2AAHLNwAByzkAAcs6AAHLtQABy7cAAcu5AAHLuwABy74AAcu/AAHLwAABy8EAAcvCAAHLxAABy8YAAcvHAAHLyAABy8oAAcvLAAHMXgABzIEAAcyhAAHMwQABzMMAAczFAAHMxwABzMkAAczMAAHMzQABzM4AAczRAAHM0gABzNQAAczVAAHM1wABzNoAAczbAAHM3AABzN8AAczgAAHM5QABzP4AAc0HAAHNCQABzQsAAc0UAAHNFwABzRoAAc0cAAHNZQABzYkAAc2wAAHN1AABzdcAAc3ZAAHN2wABzd0AAc3fAAHN4QABzeIAAc3lAAHN/gABzh8AAc4hAAHOIwABziUAAc4nAAHOKQABzisAAc4tAAHOLwABzlAAAc5TAAHOVgABzlkAAc5cAAHOXwABzmIAAc5lAAHOaAABzmoAAc7lAAHO5wABzukAAc7rAAHO7gABzu8AAc7wAAHO8QABzvIAAc70AAHO9gABzvcAAc74AAHO+gABzvsAAc92AAHPeAABz3oAAc98AAHPfwABz4AAAc+BAAHPggABz4MAAc+FAAHPhwABz4gAAc+JAAHPiwABz4wAAdAHAAHQCQAB0AwAAdAOAAHQEQAB0BIAAdATAAHQFAAB0BUAAdAXAAHQGQAB0BoAAdAbAAHQHQAB0B4AAdA3AAHQOAAB0DkAAdA7AAHQtgAB0LgAAdC6AAHQvAAB0L8AAdDAAAHQwQAB0MIAAdDDAAHQxQAB0McAAdDIAAHQyQAB0MsAAdDMAAHRRwAB0UkAAdFLAAHRTQAB0VAAAdFRAAHRUgAB0VMAAdFUAAHRVgAB0VgAAdFZAAHRWgAB0VwAAdFdAAHR2AAB0doAAdHcAAHR3gAB0eEAAdHiAAHR4wAB0eQAAdHlAAHR5wAB0ekAAdHqAAHR6wAB0e0AAdHuAAHSaQAB0msAAdJtAAHSbwAB0nIAAdJzAAHSdAAB0nUAAdJ2AAHSeAAB0noAAdJ7AAHSfAAB0n4AAdJ/AAHS+gAB0vwAAdL+AAHTAAAB0wMAAdMEAAHTBQAB0wYAAdMHAAHTCQAB0wsAAdMMAAHTDQAB0w8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AAf8sAAH/LgAB/y8AAf+qAAH/rAAB/64AAf+wAAH/swAB/7QAAf+1AAH/tgAB/7cAAf+5AAH/vAAB/70AAf++AAH/wAAB/8EAAgA8AAIAPgACAEEAAgBDAAIARgACAEcAAgBIAAIASQACAEoAAgBMAAIATwACAFAAAgBRAAIAUwACAFQAAgDnAAIBCgACASoAAgFKAAIBTAACAU4AAgFQAAIBUgACAVUAAgFWAAIBVwACAVoAAgFbAAIBXQACAV4AAgFgAAIBYwACAWQAAgFlAAIBaAACAWkAAgFuAAIBhwACAZAAAgGSAAIBlAACAZ0AAgGgAAIBowACAaUAAgHuAAICEgACAjkAAgJdAAICYAACAmIAAgJkAAICZgACAmgAAgJqAAICawACAm4AAgKHAAICqAACAqoAAgKsAAICrgACArAAAgKyAAICtAACArYAAgK4AAIC2QACAtwAAgLfAAIC4gACAuUAAgLoAAIC6wACAu4AAgLxAAIC8wACA24AAgNwAAIDcgACA3QAAgN3AAIDeAACA3kAAgN6AAIDewACA30AAgN/AAIDgAACA4EAAgODAAIDhAACA/8AAgQBAAIEAwACBAUAAgQIAAIECQACBAoAAgQLAAIEDAACBA4AAgQQAAIEEQACBBIAAgQUAAIEFQACBJAAAgSSAAIElQACBJcAAgSaAAIEmwACBJwAAgSdAAIEngACBKAAAgSiAAIEowACBKQAAgSmAAIEpwACBMAAAgTBAAIEwgACBMQAAgU/AAIFQQACBUMAAgVFAAIFSAACBUkAAgVKAAIFSwACBUwAAgVOAAIFUAACBVEAAgVSAAIFVAACBVUAAgXQAAIF0gACBdQAAgXWAAIF2QACBdoAAgXbAAIF3AACBd0AAgXfAAIF4QACBeIAAgXjAAIF5QACBeYAAgZhAAIGYwACBmUAAgZnAAIGagACBmsAAgZsAAIGbQACBm4AAgZwAAIGcgACBnMAAgZ0AAIGdgACBncAAgbyAAIG9AACBvYAAgb4AAIG+wACBvwAAgb9AAIG/gACBv8AAgcBAAIHAwACBwQAAgcFAAIHBwACBwgAAgeDAAIHhQACB4cAAgeJAAIHjAACB40AAgeOAAIHjwACB5AAAgeSAAIHlAACB5UAAgeWAAIHmAACB5kAAgfiAAIIBgACCC0AAghRAAIIVAACCFYAAghYAAIIWgACCFwAAgheAAIIXwACCGIAAgh7AAIImAACCJoAAgicAAIIngACCKAAAgiiAAIIpAACCKYAAgjDAAIIxgACCMkAAgjMAAIIzwACCNIAAgjVAAII2AACCNoAAglVAAIJVwACCVkAAglbAAIJXgACCV8AAglgAAIJYQACCWIAAglkAAIJZgACCWcAAgloAAIJagACCWsAAgnmAAIJ6AACCeoAAgnsAAIJ7wACCfAAAgnxAAIJ8gACCfMAAgn1AAIJ9wACCfgAAgn5AAIJ+wACCfwAAgp3AAIKeQACCnsAAgp9AAIKgAACCoEAAgqCAAIKgwACCoQAAgqGAAIKiAACCokAAgqKAAIKjAACCo0AAgsIAAILCgACCwwAAgsOAAILEQACCxIAAgsTAAILFAACCxUAAgsXAAILGQACCxoAAgsbAAILHQACCx4AAguZAAILmwACC50AAgufAAILogACC6MAAgukAAILpQACC6YAAguoAAILqgACC6sAAgusAAILrgACC68AAgwqAAIMLAACDC4AAgwwAAIMMwACDDQAAgw1AAIMNgACDDcAAgw5AAIMOwACDDwAAgw9AAIMPwACDEAAAgy7AAIMvQACDL8AAgzBAAIMxAACDMUAAgzGAAIMxwACDMgAAgzKAAIMzAACDM0AAgzOAAIM0AACDNEAAgziAAIM4wACDOUAAg1gAAINYgACDWQAAg1mAAINaQACDWoAAg1rAAINbAACDW0AAg1vAAINcgACDXMAAg10AAINdgACDXcAAg3yAAIN9AACDfYAAg34AAIN+wACDfwAAg39AAIN/gACDf8AAg4BAAIOBAACDgUAAg4GAAIOCAACDgkAAg6EAAIOhgACDokAAg6LAAIOjgACDo8AAg6QAAIOkQACDpIAAg6UAAIOlwACDpgAAg6ZAAIOmwACDpwAAg6tAAIOrgACDrAAAg8zAAIPVwACD3sAAg+eAAIPxQACD+UAAhAMAAIQMwACEFMAAhB3AAIQmwACEJ0AAhCgAAIQogACEKQAAhCmAAIQqQACEKwAAhCuAAIQsAACELMAAhC1AAIQtwACELoAAhC9AAIQvgACEMcAAhDgAAIQ5QACEOcAAhDsAAIQ7wACEPEAAhE6AAIRXgACEYUAAhGpAAIRrAACEa4AAhGwAAIRsgACEbQAAhG2AAIRtwACEbo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AAiNhAAIjYwACI2QAAiNlAAIjZwACI2gAAiPjAAIj5QACI+cAAiPpAAIj7AACI+0AAiPuAAIj7wACI/AAAiPyAAIj9AACI/UAAiP2AAIj+AACI/kAAiR0AAIkdgACJHgAAiR6AAIkfQACJH4AAiR/AAIkgAACJIEAAiSDAAIkhQACJIYAAiSHAAIkiQACJIoAAiUFAAIlBwACJQoAAiUMAAIlDwACJRAAAiURAAIlEgACJRMAAiUVAAIlFwACJRgAAiUZAAIlGwACJRwAAiWXAAIlmQACJZsAAiWdAAIloAACJaEAAiWiAAIlowACJaQAAiWmAAIlqAACJakAAiWqAAIlrAACJa0AAiYoAAImKgACJi0AAiYvAAImMgACJjMAAiY0AAImNQACJjYAAiY4AAImOgACJjsAAiY8AAImPgACJj8AAiZOAAImyQACJssAAibNAAImzwACJtIAAibTAAIm1AACJtUAAibWAAIm2AACJtoAAibbAAIm3AACJt4AAibfAAIncgACJ5UAAie1AAIn1QACJ9cAAifZAAIn2wACJ90AAifgAAIn4QACJ+IAAiflAAIn5gACJ+gAAifpAAIn7AACJ+8AAifwAAIn8QACJ/QAAif1AAIn+gACKBMAAigcAAIoHgACKCEAAigqAAIoLQACKDAAAigyAAIoewACKJ8AAijGAAIo6gACKO0AAijvAAIo8QACKPMAAij1AAIo9wACKPgAAij7AAIpFAACKTUAAik3AAIpOQACKTsAAik9AAIpPwACKUEAAilDAAIpRQACKWYAAilpAAIpbAACKW8AAilyAAIpdQACKXgAAil7AAIpfgACKYAAAin7AAIp/QACKf8AAioBAAIqBAACKgUAAioGAAIqBwACKggAAioKAAIqDAACKg0AAioOAAIqEAACKhEAAiqMAAIqjgACKpAAAiqSAAIqlQACKpYAAiqXAAIqmAACKpkAAiqbAAIqnQACKp4AAiqfAAIqoQACKqIAAisdAAIrHwACKyIAAiskAAIrJwACKygAAispAAIrKgACKysAAistAAIrLwACKzAAAisxAAIrMwACKzQAAitNAAIrTgACK08AAitRAAIrzAACK84AAivQAAIr0gACK9UAAivWAAIr1wACK9gAAivZAAIr2wACK90AAiveAAIr3wACK+EAAiviAAIsXQACLF8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AAk/5AAJP+wACT/wAAlB3AAJQeQACUHsAAlB9AAJQgAACUIEAAlCCAAJQgwACUIQAAlCGAAJQiAACUIkAAlCKAAJQjAACUI0AAlDWAAJQ+gACUSEAAlFFAAJRSAACUUoAAlFMAAJRTgACUVAAAlFSAAJRUwACUVYAAlFvAAJRjAACUY4AAlGQAAJRkgACUZQAAlGWAAJRmAACUZoAAlG3AAJRugACUb0AAlHAAAJRwwACUcYAAlHJAAJRzAACUc4AAlJJAAJSSwACUk0AAlJPAAJSUgACUlMAAlJUAAJSVQACUlYAAlJYAAJSWgACUlsAAlJcAAJSXgACUl8AAlLaAAJS3AACUt4AAlLgAAJS4wACUuQAAlLlAAJS5gACUucAAlLpAAJS6wACUuwAAlLtAAJS7wACUvAAAlNrAAJTbQACU28AAlNxAAJTdAACU3UAAlN2AAJTdwACU3gAAlN6AAJTfAACU30AAlN+AAJTgAACU4EAAlP8AAJT/gACVAEAAlQDAAJUBgACVAcAAlQIAAJUCQACVAoAAlQMAAJUDgACVA8AAlQQAAJUEgACVBMAAlSOAAJUkAACVJIAAlSUAAJUlwACVJgAAlSZAAJUmgACVJsAAlSdAAJUnwACVKAAAlShAAJUowACVKQAAlUfAAJVIQACVSMAAlUlAAJVKAACVSkAAlUqAAJVKwACVSwAAlUuAAJVMAACVTEAAlUyAAJVNAACVTUAAlWwAAJVsgACVbQAAlW2AAJVuQACVboAAlW7AAJVvAACVb0AAlW/AAJVwQACVcIAAlXDAAJVxQACVcYAAlZZAAJWfAACVpwAAla8AAJWvgACVsAAAlbCAAJWxAACVscAAlbIAAJWyQACVswAAlbNAAJWzwACVtAAAlbSAAJW1QACVtYAAlbXAAJW2gACVtsAAlbgAAJW+QACVwIAAlcEAAJXBgACVw8AAlcSAAJXFQACVxcAAldgAAJXhAACV6sAAlfPAAJX0gACV9QAAlfWAAJX2AACV9oAAlfcAAJX3QACV+AAAlf5AAJYGgACWBwAAlgeAAJYIAACWCIAAlgkAAJYJgACWCgAAlgqAAJYSwACWE4AAlhRAAJYVAACWFcAAlhaAAJYXQACWGAAAlhjAAJYZQACWOAAAljiAAJY5AACWOYAAljpAAJY6gACWOsAAljsAAJY7QACWO8AAljxAAJY8gACWPMAAlj1AAJY9gACWXEAAllzAAJZdQACWXcAAll6AAJZewACWXwAAll9AAJZfgACWYAAAlmCAAJZgwACWYQAAlmGAAJZhwACWgIAAloEAAJaBwACWgkAAloMAAJaDQACWg4AAloPAAJaEAACWhIAAloUAAJaFQACWhYAAloYAAJaGQACWjIAAlozAAJaNAACWjYAAlqxAAJaswACWrUAAlq3AAJaugACWrsAAlq8AAJavQACWr4AAlrAAAJawgACWsMAAlrEAAJaxgACWscAAltCAAJbRAACW0YAAltIAAJbSwACW0wAAltNAAJbTgACW08AAltRAAJbUwACW1QAAltVAAJbVwACW1gAAlvTAAJb1QACW9cAAlvZAAJb3AACW90AAlveAAJb3wACW+AAAlviAAJb5AACW+UAAlvmAAJb6AACW+kAAlxkAAJcZgACXGgAAlxqAAJcbQACXG4AAlxvAAJccAACXHEAAlxzAAJcdQACXHYAAlx3AAJceQACXHoAAlz1AAJc9wACXPkAAlz7AAJc/gACXP8AAl0AAAJdAQACXQIAAl0EAAJdBgACXQcAAl0IAAJdCgACXQsAAl1UAAJdeAACXZ8AAl3DAAJdxgACXcgAAl3KAAJdzAACXc4AAl3QAAJd0QACXdQAAl3tAAJeCgACXgwAAl4OAAJeEAACXhIAAl4UAAJeFgACXhgAAl41AAJeOAACXjsAAl4+AAJeQQACXkQAAl5HAAJeSgACXkwAAl7HAAJeyQACXssAAl7NAAJe0AACXtEAAl7SAAJe0wACXtQAAl7WAAJe2AACXtkAAl7aAAJe3AACXt0AAl9YAAJfWgACX1wAAl9eAAJfYQACX2IAAl9jAAJfZAACX2UAAl9nAAJfaQACX2oAAl9rAAJfbQACX24AAl/pAAJf6wACX+0AAl/vAAJf8gACX/MAAl/0AAJf9QACX/YAAl/4AAJf+gACX/sAAl/8AAJf/gACX/8AAmB6AAJgfAACYH4AAmCAAAJggwACYIQAAmCFAAJghgACYIcAAmCJAAJgiwACYIwAAmCNAAJgjwACYJAAAmELAAJhDQACYQ8AAmERAAJhFAACYRUAAmEWAAJhFwACYRgAAmEaAAJhHAACYR0AAmEeAAJhIAACYSEAAmGcAAJhngACYaAAAmGiAAJhpQACYaYAAmGnAAJhqAACYakAAmGrAAJhrQACYa4AAmGvAAJhsQACYbIAAmItAAJiLwACYjEAAmIzAAJiNgACYjcAAmI4AAJiOQACYjoAAmI8AAJiPgACYj8AAmJAAAJiQgACYkMAAmLWAAJi+QACYxkAAmM5AAJjOwACYz0AAmM/AAJjQQACY0QAAmNFAAJjRgACY0kAAmNKAAJjTAACY00AAmNQAAJjUwACY1QAAmNVAAJjWAACY1kAAmNeAAJjdwACY4AAAmOCAAJjhQACY44AAmORAAJjlAACY5YAAmPfAAJkAwACZCoAAmROAAJkUQACZFMAAmRVAAJkVwACZFkAAmRbAAJkXAACZF8AAmR4AAJkmQACZJsAAmSdAAJknwACZKEAAmSjAAJkpQACZKcAAmSpAAJkygACZM0AAmTQAAJk0wACZNYAAmTZAAJk3AACZN8AAmTiAAJk5AACZV8AAmVhAAJlYwACZWUAAmVoAAJlaQACZWoAAmVrAAJlbAACZW4AAmVwAAJlcQACZXIAAmV0AAJldQACZfAAAmXyAAJl9AACZfYAAmX5AAJl+gACZfsAAmX8AAJl/QACZf8AAmYBAAJmAgACZgMAAmYFAAJmBgACZoEAAmaDAAJmhgACZogAAmaLAAJmjAACZo0AAmaOAAJmjwACZpEAAmaTAAJmlAACZpUAAmaXAAJmmAACZrEAAmayAAJmswACZrUAAmcwAAJnMgACZzQAAmc2AAJnOQACZzoAAmc7AAJnPAACZz0AAmc/AAJnQQACZ0IAAmdDAAJnRQACZ0YAAmfBAAJnwwACZ8UAAmfHAAJnygACZ8sAAmfMAAJnzQACZ84AAmfQAAJn0gACZ9MAAmfUAAJn1gACZ9cAAmhSAAJoVAACaFYAAmhYAAJoWwACaFwAAmhdAAJoXgACaF8AAmhhAAJoYwACaGQAAmhlAAJoZwACaGgAAmjjAAJo5QACaOcAAmjpAAJo7AACaO0AAmjuAAJo7wACaPAAAmjyAAJo9AACaPUAAmj2AAJo+AACaPkAAml0AAJpdgACaXgAAml6AAJpfQACaX4AAml/AAJpgAACaYEAAmmDAAJphQACaYYAAmmHAAJpiQACaYoAAmnTAAJp9wACah4AAmpCAAJqRQACakgAAmpKAAJqTAACak4AAmpQAAJqUQACalQAAmptAAJqigACao0AAmqQAAJqkwACapYAAmqZAAJqnAACap8AAmq8AAJqvwACasIAAmrFAAJqyAACassAAmrOAAJq0QACatMAAmtOAAJrUAACa1MAAmtVAAJrWAACa1kAAmtaAAJrWwACa1wAAmteAAJrYQACa2IAAmtjAAJrZQACa2YAAmvhAAJr4wACa+YAAmvoAAJr6wACa+wAAmvtAAJr7gACa+8AAmvxAAJr9AACa/UAAmv2AAJr+AACa/kAAmx0AAJsdgACbHkAAmx7AAJsfgACbH8AAmyAAAJsgQACbIIAAmyEAAJshwACbIgAAmyJAAJsiwACbIwAAm0HAAJtCQACbQwAAm0OAAJtEQACbRIAAm0TAAJtFAACbRUAAm0XAAJtGgACbRsAAm0cAAJtHgACbR8AAm2iAAJtxgACbeoAAm4NAAJuNAACblQAAm57AAJuogACbsIAAm7mAAJvCgACbwwAAm8PAAJvEQACbxMAAm8VAAJvGAACbxsAAm8dAAJvHwACbyIAAm8kAAJvJgACbykAAm8sAAJvLQACbzYAAm9PAAJvVAACb1YAAm9bAAJvXgACb2AAAm+pAAJvzQACb/QAAnAYAAJwGwACcB0AAnAfAAJwIQACcCMAAnAlAAJwJgACcCkAAnBCAAJwZwACcGkAAnBrAAJwbQACcG8AAnBxAAJwcwACcHUAAnB3AAJweQACcJ4AAnChAAJwpAACcKcAAnCqAAJwrQACcLAAAnCzAAJwtgACcLkAAnC7AAJxNgACcTgAAnE7AAJxPQACcUAAAnFBAAJxQgACcUMAAnFEAAJxRgACcUgAAnFJAAJxSgACcUwAAnFNAAJxXgACcV8AAnFhAAJx3AACcd4AAnHgAAJx4gACceUAAnHmAAJx5wACcegAAnHpAAJx6wACce0AAnHuAAJx7wACcfEAAnHyAAJybQACcm8AAnJyAAJydAACcncAAnJ4AAJyeQACcnoAAnJ7AAJyfQACcn8AAnKAAAJygQACcoMAAnKEAAJylQACcpoAAnKdAAJynwACcrAAAnLBAAJyxAACcscAAnLKAAJyzQACcs8AAnLrAAJy/QACcxAAAnMcAAJzlwACc5kAAnObAAJznQACc6AAAnOhAAJzogACc6MAAnOkAAJzpgACc6gAAnOpAAJzqgACc6wAAnOtAAJ0KAACdCoAAnQtAAJ0LwACdDIAAnQzAAJ0NAACdDUAAnQ2AAJ0OAACdDoAAnQ7AAJ0PAACdD4AAnQ/AAJ0UAACdFEAAnRTAAJ0zgACdNAAAnTSAAJ01AACdNcAAnTYAAJ02QACdNoAAnTbAAJ03QACdN8AAnTgAAJ04QACdOMAAnTkAAJ1XwACdWEAAnVkAAJ1ZgACdWkAAnVqAAJ1awACdWwAAnVtAAJ1bwACdXEAAnVyAAJ1cwACdXUAAnV2AAJ1jwACdZAAAnWRAAJ1kwACdg4AAnYQAAJ2EgACdhQAAnYXAAJ2GAACdhkAAnYaAAJ2GwACdh0AAnYfAAJ2IAACdiEAAnYjAAJ2JAACdp8AAnahAAJ2pAACdqYAAnapAAJ2qgACdqsAAnasAAJ2rQACdq8AAnaxAAJ2sgACdrMAAna1AAJ2tgACds0AAnbmAAJ3EwACdxYAAncZAAJ3HAACdx8AAnciAAJ3JQACdygAAncrAAJ3LgACdzEAAnc0AAJ3YQACd2QAAndnAAJ3agACd20AAndwAAJ3cwACd3YAAnd5AAJ3fAACd38AAneCAAJ3hAACd5YAAneuAAJ3wgACd+0AAnf5AAJ4EwACeCkAAngzAAJ4PgACeFoAAnhtAAJ5AAACeSMAAnlDAAJ5YwACeWUAAnlnAAJ5aQACeWsAAnluAAJ5bwACeXAAAnlzAAJ5dAACeXYAAnl3AAJ5eQACeXwAAnl9AAJ5fgACeYEAAnmCAAJ5iwACeaQAAnmtAAJ5rwACebEAAnm6AAJ5vQACecAAAnnCAAJ6CwACei8AAnpWAAJ6egACen0AAnp/AAJ6gQACeoMAAnqFAAJ6hwACeogAAnqLAAJ6pAACesUAAnrHAAJ6yQACessAAnrNAAJ6zwACetEAAnrTAAJ61QACevYAAnr5AAJ6/AACev8AAnsCAAJ7BQACewgAAnsLAAJ7DgACexAAAnuLAAJ7jQACe48AAnuRAAJ7lAACe5UAAnuWAAJ7lwACe5gAAnuaAAJ7nAACe50AAnueAAJ7oAACe6EAAnwcAAJ8HgACfCAAAnwiAAJ8JQACfCYAAnwnAAJ8KAACfCkAAnwrAAJ8LQACfC4AAnwvAAJ8MQACfDIAAnytAAJ8rwACfLIAAny0AAJ8twACfLgAAny5AAJ8ugACfLsAAny9AAJ8vwACfMAAAnzBAAJ8wwACfMQAAnzdAAJ83gACfN8AAnzhAAJ9XAACfV4AAn1gAAJ9YgACfWUAAn1mAAJ9ZwACfWgAAn1pAAJ9awACfW0AAn1uAAJ9bwACfXEAAn1yAAJ97QACfe8AAn3xAAJ98wACffYAAn33AAJ9+AACffkAAn36AAJ9/AACff4AAn3/AAJ+AAACfgIAAn4DAAJ+fgACfoAAAn6CAAJ+hAACfocAAn6IAAJ+iQACfooAAn6LAAJ+jQACfo8AAn6QAAJ+kQACfpMAAn6UAAJ/DwACfxEAAn8TAAJ/FQACfxgAAn8ZAAJ/GgACfxsAAn8cAAJ/HgACfyAAAn8hAAJ/IgACfyQAAn8lAAJ/oAACf6IAAn+kAAJ/pgACf6kAAn+qAAJ/qwACf6wAAn+tAAJ/rwACf7EAAn+yAAJ/swACf7UAAn+2AAJ//wACgCMAAoBKAAKAbgACgHEAAoBzAAKAdQACgHcAAoB5AAKAewACgHwAAoB/AAKAmAACgLUAAoC3AAKAuQACgLsAAoC9AAKAvwACgMEAAoDDAAKA4AACgOMAAoDmAAKA6QACgOwAAoDvAAKA8gACgPUAAoD3AAKBcgACgXQAAoF2AAKBeAACgXsAAoF8AAKBfQACgX4AAoF/AAKBgQACgYMAAoGEAAKBhQACgYcAAoGIAAKCAwACggUAAoIHAAKCCQACggwAAoINAAKCDgACgg8AAoIQAAKCEgACghQAAoIVAAKCFgACghgAAoIZAAKClAACgpYAAoKYAAKCmgACgp0AAoKeAAKCnwACgqAAAoKhAAKCowACgqUAAoKmAAKCpwACgqkAAoKqAAKDJQACgycAAoMqAAKDLAACgy8AAoMwAAKDMQACgzIAAoMzAAKDNQACgzcAAoM4AAKDOQACgzsAAoM8AAKDtwACg7kAAoO7AAKDvQACg8AAAoPBAAKDwgACg8MAAoPEAAKDxgACg8gAAoPJAAKDygACg8wAAoPNAAKESAAChEoAAoRMAAKETgAChFEAAoRSAAKEUwAChFQAAoRVAAKEVwAChFkAAoRaAAKEWwAChF0AAoReAAKE2QAChNsAAoTdAAKE3wAChOIAAoTjAAKE5AAChOUAAoTmAAKE6AAChOoAAoTrAAKE7AAChO4AAoTvAAKFggAChaUAAoXFAAKF5QAChecAAoXpAAKF6wAChe0AAoXwAAKF8QAChfIAAoX1AAKF9gAChfgAAoX5AAKF+wAChf4AAoX/AAKGAAAChgMAAoYEAAKGCQAChiIAAoYrAAKGLQAChi8AAoY4AAKGOwAChj4AAoZAAAKGiQAChq0AAobUAAKG+AAChvsAAob9AAKG/wAChwEAAocDAAKHBQAChwYAAocJAAKHIgACh0MAAodFAAKHRwACh0kAAodLAAKHTQACh08AAodRAAKHUwACh3QAAod3AAKHegACh30AAoeAAAKHgwACh4YAAoeJAAKHjAACh44AAogJAAKICwACiA0AAogPAAKIEgACiBMAAogUAAKIFQACiBYAAogYAAKIGgACiBsAAogcAAKIHgACiB8AAoiaAAKInAACiJ4AAoigAAKIowACiKQAAoilAAKIpgACiKcAAoipAAKIqwACiKwAAoitAAKIrwACiLAAAokrAAKJLQACiTAAAokyAAKJNQACiTYAAok3AAKJOAACiTkAAok7AAKJPQACiT4AAok/AAKJQQACiUIAAolbAAKJXAACiV0AAolfAAKJ2gACidwAAoneAAKJ4AACieMAAonkAAKJ5QACieYAAonnAAKJ6QACiesAAonsAAKJ7QACie8AAonwAAKKawACim0AAopvAAKKcQACinQAAop1AAKKdgACincAAop4AAKKegACinwAAop9AAKKfgACioAAAoqBAAKK/AACiv4AAosAAAKLAgACiwUAAosGAAKLBwACiwgAAosJAAKLCwACiw0AAosOAAKLDwACixEAAosSAAKLjQACi48AAouRAAKLkwACi5YAAouXAAKLmAACi5kAAouaAAKLnAACi54AAoufAAKLoAACi6IAAoujAAKMHgACjCAAAowiAAKMJAACjCcAAowoAAKMKQACjCoAAowrAAKMLQACjC8AAowwAAKMMQACjDMAAow0AAKMfQACjKEAAozIAAKM7AACjO8AAozxAAKM8wACjPUAAoz3AAKM+QACjPoAAoz9AAKNFgACjTMAAo01AAKNNwACjTkAAo07AAKNPQACjT8AAo1BAAKNXgACjWEAAo1kAAKNZwACjWoAAo1tAAKNcAACjXMAAo11AAKN8AACjfIAAo30AAKN9gACjfkAAo36AAKN+wACjfwAAo39AAKN/wACjgEAAo4CAAKOAwACjgUAAo4GAAKOgQACjoMAAo6FAAKOhwACjooAAo6LAAKOjAACjo0AAo6OAAKOkAACjpIAAo6TAAKOlAACjpYAAo6XAAKPEgACjxQAAo8WAAKPGAACjxsAAo8cAAKPHQACjx4AAo8fAAKPIQACjyMAAo8kAAKPJQACjycAAo8oAAKPowACj6UAAo+nAAKPqQACj6wAAo+tAAKPrgACj68AAo+wAAKPsgACj7QAAo+1AAKPtgACj7gAAo+5AAKQNAACkDYAApA4AAKQOgACkD0AApA+AAKQPwACkEAAApBBAAKQQwACkEUAApBGAAKQRwACkEkAApBKAAKQxQACkMcAApDJAAKQywACkM4AApDPAAKQ0AACkNEAApDSAAKQ1AACkNYAApDXAAKQ2AACkNoAApDbAAKRVgACkVgAApFaAAKRXAACkV8AApFgAAKRYQACkWIAApFjAAKRZQACkWcAApFoAAKRaQACkWsAApFsAAKR/wACkiIAApJCAAKSYgACkmQAApJmAAKSaAACkmoAApJtAAKSbgACkm8AApJyAAKScwACknUAApJ2AAKSeAACknsAApJ8AAKSfQACkoAAApKBAAKShgACkp8AApKoAAKSqgACkqwAApK1AAKSuAACkrsAApK9AAKTBgACkyoAApNRAAKTdQACk3gAApN6AAKTfAACk34AApOAAAKTggACk4MAApOGAAKTnwACk8AAApPCAAKTxAACk8YAApPIAAKTygACk8wAApPOAAKT0AACk/EAApP0AAKT9wACk/oAApP9AAKUAAAClAMAApQGAAKUCQAClAsAApSGAAKUiAAClIoAApSMAAKUjwAClJAAApSRAAKUkgAClJMAApSVAAKUlwAClJgAApSZAAKUmwAClJwAApUXAAKVGQAClRsAApUdAAKVIAAClSEAApUiAAKVIwAClSQAApUmAAKVKAAClSkAApUqAAKVLAAClS0AApWoAAKVqgACla0AApWvAAKVsgAClbMAApW0AAKVtQAClbYAApW4AAKVugAClbsAApW8AAKVvgAClb8AApXYAAKV2QACldoAApXcAAKWVwACllkAApZbAAKWXQAClmAAApZhAAKWYgAClmMAApZkAAKWZgAClmgAApZpAAKWagAClmwAApZtAAKW6AACluoAApbsAAKW7gAClvEAApbyAAKW8wAClvQAApb1AAKW9wAClvkAApb6AAKW+wAClv0AApb+AAKXeQACl3sAApd9AAKXfwACl4IAApeDAAKXhAACl4UAApeGAAKXiAACl4oAApeLAAKXjAACl44AApePAAKYCgACmAwAApgOAAKYEAACmBMAApgUAAKYFQACmBYAApgXAAKYGQACmBsAApgcAAKYHQACmB8AApggAAKYmwACmJ0AApifAAKYoQACmKQAApilAAKYpgACmKcAApioAAKYqgACmKwAApitAAKYrgACmLAAApixAAKY+gACmR4AAplFAAKZaQACmWwAApluAAKZcAACmXIAApl0AAKZdgACmXcAApl6AAKZkwACmbAAApmyAAKZtAACmbYAApm4AAKZugACmbwAApm+AAKZ2wACmd4AApnhAAKZ5AACmecAApnqAAKZ7QACmfAAApnyAAKabQACmm8AAppxAAKacwACmnYAApp3AAKaeAACmnkAApp6AAKafAACmn4AApp/AAKagAACmoIAApqDAAKa/gACmwAAApsCAAKbBAACmwcAApsIAAKbCQACmwoAApsLAAKbDQACmw8AApsQAAKbEQACmxMAApsUAAKbjwACm5EAApuTAAKblQACm5gAApuZAAKbmgACm5sAApucAAKbngACm6AAApuhAAKbogACm6QAApulAAKcIAACnCIAApwlAAKcJwACnCoAApwrAAKcLAACnC0AApwuAAKcMAACnDIAApwzAAKcNAACnDYAApw3AAKcOgACnLUAApy3AAKcuQACnLsAApy+AAKcvwACnMAAApzBAAKcwgACnMQAApzGAAKcxwACnMgAApzKAAKcywACnUYAAp1IAAKdSgACnUwAAp1PAAKdUAACnVEAAp1SAAKdUwACnVUAAp1XAAKdWAACnVkAAp1bAAKdXAACndcAAp3ZAAKd2wACnd0AAp3gAAKd4QACneIAAp3jAAKd5AACneYAAp3oAAKd6QACneoAAp3sAAKd7QACnoAAAp6jAAKewwACnuMAAp7lAAKe5wACnukAAp7rAAKe7gACnu8AAp7wAAKe8wACnvQAAp72AAKe9wACnvkAAp78AAKe/QACnv4AAp8BAAKfAgACnwcAAp8gAAKfKQACnysAAp8tAAKfNgACnzkAAp88AAKfPgACn4cAAp+rAAKf0gACn/YAAp/5AAKf+wACn/0AAp//AAKgAQACoAMAAqAEAAKgBwACoCAAAqBBAAKgQwACoEUAAqBHAAKgSQACoEsAAqBNAAKgTwACoFEAAqByAAKgdQACoHgAAqB7AAKgfgACoIEAAqCEAAKghwACoIoAAqCMAAKhBwACoQkAAqELAAKhDQACoRAAAqERAAKhEgACoRMAAqEUAAKhFgACoRgAAqEZAAKhGgACoRwAAqEdAAKhmAACoZoAAqGcAAKhngACoaEAAqGiAAKhowACoaQAAqGlAAKhpwACoakAAqGqAAKhqwACoa0AAqGuAAKiKQACoisAAqIuAAKiMAACojMAAqI0AAKiNQACojYAAqI3AAKiOQACojsAAqI8AAKiPQACoj8AAqJAAAKiWQAColoAAqJbAAKiXQACotgAAqLaAAKi3AACot4AAqLhAAKi4gACouMAAqLkAAKi5QACoucAAqLpAAKi6gACousAAqLtAAKi7gACo2kAAqNrAAKjbQACo28AAqNyAAKjcwACo3QAAqN1AAKjdgACo3gAAqN6AAKjewACo3wAAqN+AAKjfwACo/oAAqP8AAKj/gACpAAAAqQDAAKkBAACpAUAAqQGAAKkBwACpAkAAqQLAAKkDAACpA0AAqQPAAKkEAACpIsAAqSNAAKkjwACpJEAAqSUAAKklQACpJYAAqSXAAKkmAACpJoAAqScAAKknQACpJ4AAqSgAAKkoQACpRwAAqUeAAKlIAACpSIAAqUlAAKlJgACpScAAqUoAAKlKQACpSsAAqUtAAKlLgACpS8AAqUxAAKlMgACpXsAAqWfAAKlxgACpeoAAqXtAAKl7wACpfEAAqXzAAKl9QACpfcAAqX4AAKl+wACphQAAqYxAAKmMwACpjUAAqY3AAKmOQACpjsAAqY9AAKmPwACplwAAqZfAAKmYgACpmUAAqZoAAKmawACpm4AAqZxAAKmcwACpu4AAqbwAAKm8wACpvUAAqb4AAKm+QACpvoAAqb7AAKm/AACpv4AAqcAAAKnAQACpwIAAqcEAAKnBQACp4AAAqeCAAKnhAACp4YAAqeJAAKnigACp4sAAqeMAAKnjQACp48AAqeRAAKnkgACp5MAAqeVAAKnlgACqBEAAqgTAAKoFQACqBcAAqgaAAKoGwACqBwAAqgdAAKoHgACqCAAAqgiAAKoIwACqCQAAqgmAAKoJwACqKIAAqikAAKopwACqKkAAqisAAKorQACqK4AAqivAAKosAACqLIAAqi0AAKotQACqLYAAqi4AAKouQACqTQAAqk2AAKpOAACqToAAqk9AAKpPgACqT8AAqlAAAKpQQACqUMAAqlFAAKpRgACqUcAAqlJAAKpSgACqcUAAqnHAAKpyQACqcsAAqnOAAKpzwACqdAAAqnRAAKp0gACqdQAAqnWAAKp1wACqdgAAqnaAAKp2wACqlYAAqpYAAKqWgACqlwAAqpfAAKqYAACqmEAAqpiAAKqYwACqmUAAqpnAAKqaAACqmkAAqprAAKqbAACqv8AAqsiAAKrQgACq2IAAqtkAAKrZgACq2gAAqtqAAKrbQACq24AAqtvAAKrcgACq3MAAqt1AAKrdgACq3gAAqt7AAKrfAACq30AAquAAAKrgQACq4YAAqufAAKrqAACq6oAAqusAAKrtQACq7gAAqu7AAKrvQACrAYAAqwqAAKsUQACrHUAAqx4AAKsegACrHwAAqx+AAKsgAACrIIAAqyDAAKshgACrJ8AAqzAAAKswgACrMQAAqzGAAKsyAACrMoAAqzMAAKszgACrNAAAqzxAAKs9AACrPcAAqz6AAKs/QACrQAAAq0DAAKtBgACrQkAAq0LAAKthgACrYgAAq2KAAKtjAACrY8AAq2QAAKtkQACrZIAAq2TAAKtlQACrZcAAq2YAAKtmQACrZsAAq2cAAKuFwACrhkAAq4bAAKuHQACriAAAq4hAAKuIgACriMAAq4kAAKuJgACrigAAq4pAAKuKgACriwAAq4tAAKuqAACrqoAAq6tAAKurwACrrIAAq6zAAKutAACrrUAAq62AAKuuAACrroAAq67AAKuvAACrr4AAq6/AAKu2AACrtkAAq7aAAKu3AACr1cAAq9ZAAKvWwACr10AAq9gAAKvYQACr2IAAq9jAAKvZAACr2YAAq9oAAKvaQACr2oAAq9sAAKvbQACr+gAAq/qAAKv7AACr+4AAq/xAAKv8gACr/MAAq/0AAKv9QACr/cAAq/5AAKv+gACr/sAAq/9AAKv/gACsHkAArB7AAKwfQACsH8AArCCAAKwgwACsIQAArCFAAKwhgACsIgAArCKAAKwiwACsIwAArCOAAKwjwACsQoAArEMAAKxDgACsRAAArETAAKxFAACsRUAArEWAAKxFwACsRkAArEbAAKxHAACsR0AArEfAAKxIAACsZsAArGdAAKxnwACsaEAArGkAAKxpQACsaYAArGnAAKxqAACsaoAArGsAAKxrQACsa4AArGwAAKxsQACsfoAArIeAAKyRQACsmkAArJsAAKybgACsnAAArJyAAKydAACsnYAArJ3AAKyegACspMAArKwAAKysgACsrQAArK2AAKyuAACsroAArK8AAKyvgACstsAArLeAAKy4QACsuQAArLnAAKy6gACsu0AArLwAAKy8gACs20AArNvAAKzcQACs3MAArN2AAKzdwACs3gAArN5AAKzegACs3wAArN+AAKzfwACs4AAArOCAAKzgwACs/4AArQAAAK0AgACtAQAArQHAAK0CAACtAkAArQKAAK0CwACtA0AArQPAAK0EAACtBEAArQTAAK0FAACtI8AArSRAAK0kwACtJUAArSYAAK0mQACtJoAArSbAAK0nAACtJ4AArSgAAK0oQACtKIAArSkAAK0pQACtSAAArUiAAK1JAACtSYAArUpAAK1KgACtSsAArUsAAK1LQACtS8AArUxAAK1MgACtTMAArU1AAK1NgACtbEAArWzAAK1tQACtbcAArW6AAK1uwACtbwAArW9AAK1vgACtcAAArXCAAK1wwACtcQAArXGAAK1xwACtkIAArZEAAK2RgACtkgAArZLAAK2TAACtk0AArZOAAK2TwACtlEAArZTAAK2VAACtlUAArZXAAK2WAACttMAArbVAAK21wACttkAArbcAAK23QACtt4AArbfAAK24AACtuIAArbkAAK25QACtuYAArboAAK26QACt3wAArefAAK3vwACt98AArfhAAK34wACt+UAArfnAAK36gACt+sAArfsAAK37wACt/AAArfyAAK38wACt/UAArf4AAK3+QACt/oAArf9AAK3/gACuAMAArgcAAK4JQACuCcAArgpAAK4MgACuDUAArg4AAK4OgACuIMAArinAAK4zgACuPIAArj1AAK49wACuPkAArj7AAK4/QACuP8AArkAAAK5AwACuRwAArk9AAK5PwACuUEAArlDAAK5RQACuUcAArlJAAK5SwACuU0AArluAAK5cQACuXQAArl3AAK5egACuX0AArmAAAK5gwACuYYAArmIAAK6AwACugUAAroHAAK6CQACugwAAroNAAK6DgACug8AAroQAAK6EgACuhQAAroVAAK6FgACuhgAAroZAAK6lAACupYAArqYAAK6mgACup0AArqeAAK6nwACuqAAArqhAAK6owACuqUAArqmAAK6pwACuqkAArqqAAK7JQACuycAArsqAAK7LAACuy8AArswAAK7MQACuzIAArszAAK7NQACuzcAArs4AAK7OQACuzsAArs8AAK7VQACu1YAArtXAAK7WQACu9QAArvWAAK72AACu9oAArvdAAK73gACu98AArvgAAK74QACu+MAArvlAAK75gACu+cAArvpAAK76gACvGUAArxnAAK8aQACvGsAArxuAAK8bwACvHAAArxxAAK8cgACvHQAArx2AAK8dwACvHgAArx6AAK8ewACvPYAArz4AAK8+gACvPwAArz/AAK9AAACvQEAAr0CAAK9AwACvQUAAr0HAAK9CAACvQkAAr0LAAK9DAACvYcAAr2JAAK9iwACvY0AAr2QAAK9kQACvZIAAr2TAAK9lAACvZYAAr2YAAK9mQACvZoAAr2cAAK9nQACvhgAAr4aAAK+HAACvh4AAr4hAAK+IgACviMAAr4kAAK+JQACvicAAr4pAAK+KgACvisAAr4tAAK+LgACvncAAr6bAAK+wgACvuYAAr7pAAK+6wACvu0AAr7vAAK+8QACvvMAAr70AAK+9wACvxAAAr8tAAK/LwACvzEAAr8zAAK/NQACvzcAAr85AAK/OwACv1gAAr9bAAK/XgACv2EAAr9kAAK/ZwACv2oAAr9tAAK/bwACv+oAAr/sAAK/7gACv/AAAr/zAAK/9AACv/UAAr/2AAK/9wACv/kAAr/7AAK//AACv/0AAr//AALAAAACwHsAAsB9AALAfwACwIEAAsCEAALAhQACwIYAAsCHAALAiAACwIoAAsCMAALAjQACwI4AAsCQAALAkQACwQwAAsEOAALBEAACwRIAAsEVAALBFgACwRcAAsEYAALBGQACwRsAAsEdAALBHgACwR8AAsEhAALBIgACwZ0AAsGfAALBoQACwaMAAsGmAALBpwACwagAAsGpAALBqgACwawAAsGuAALBrwACwbAAAsGyAALBswACwi4AAsIwAALCMgACwjQAAsI3AALCOAACwjkAAsI6AALCOwACwj0AAsI/AALCQAACwkEAAsJDAALCRAACwr8AAsLBAALCwwACwsUAAsLIAALCyQACwsoAAsLLAALCzAACws4AAsLQAALC0QACwtIAAsLUAALC1QACw1AAAsNSAALDVAACw1YAAsNZAALDWgACw1sAAsNcAALDXQACw18AAsNhAALDYgACw2MAAsNlAALDZgACw/kAAsQcAALEPAACxFwAAsReAALEYAACxGIAAsRkAALEZwACxGgAAsRpAALEbAACxG0AAsRvAALEcAACxHIAAsR1AALEdgACxHcAAsR6AALEewACxIQAAsSdAALEpgACxKgAAsSqAALEswACxLYAAsS5AALEuwACxQQAAsUoAALFTwACxXMAAsV2AALFeAACxXoAAsV8AALFfgACxYAAAsWBAALFhAACxZ0AAsW+AALFwAACxcIAAsXEAALFxgACxcgAAsXKAALFzAACxc4AAsXvAALF8gACxfUAAsX4AALF+wACxf4AAsYBAALGBAACxgcAAsYJAALGhAACxoYAAsaIAALGigACxo0AAsaOAALGjwACxpAAAsaRAALGkwACxpUAAsaWAALGlwACxpkAAsaaAALHFQACxxcAAscZAALHGwACxx4AAscfAALHIAACxyEAAsciAALHJAACxyYAAscnAALHKAACxyoAAscrAALHpgACx6gAAserAALHrQACx7AAAsexAALHsgACx7MAAse0AALHtgACx7gAAse5AALHugACx7wAAse9AALH1gACx9cAAsfYAALH2gACyFUAAshXAALIWQACyFsAAsheAALIXwACyGAAAshhAALIYgACyGQAAshmAALIZwACyGgAAshqAALIawACyOYAAsjoAALI6gACyOwAAsjvAALI8AACyPEAAsjyAALI8wACyPUAAsj3AALI+AACyPkAAsj7AALI/AACyXcAAsl5AALJewACyX0AAsmAAALJgQACyYIAAsmDAALJhAACyYYAAsmIAALJiQACyYoAAsmMAALJjQACyggAAsoKAALKDAACyg4AAsoRAALKEgACyhMAAsoUAALKFQACyhcAAsoZAALKGgACyhsAAsodAALKHgACypkAAsqbAALKnQACyp8AAsqiAALKowACyqQAAsqlAALKpgACyqgAAsqqAALKqwACyqwAAsquAALKrwACyvgAAsscAALLQwACy2cAAstqAALLbAACy24AAstwAALLcgACy3QAAst1AALLeAACy5EAAsuuAALLsAACy7IAAsu0AALLtgACy7gAAsu6AALLvAACy9kAAsvcAALL3wACy+IAAsvlAALL6AACy+sAAsvuAALL8AACzGsAAsxtAALMbwACzHEAAsx0AALMdQACzHYAAsx3AALMeAACzHoAAsx8AALMfQACzH4AAsyAAALMgQACzPwAAsz+AALNAAACzQIAAs0FAALNBgACzQcAAs0IAALNCQACzQsAAs0NAALNDgACzQ8AAs0RAALNEgACzY0AAs2PAALNkQACzZMAAs2WAALNlwACzZgAAs2ZAALNmgACzZwAAs2eAALNnwACzaAAAs2iAALNowACzh4AAs4gAALOIwACziUAAs4oAALOKQACzioAAs4rAALOLAACzi4AAs4wAALOMQACzjIAAs40AALONQACzrAAAs6yAALOtAACzrYAAs65AALOugACzrsAAs68AALOvQACzr8AAs7BAALOwgACzsMAAs7FAALOxgACz0EAAs9DAALPRQACz0cAAs9KAALPSwACz0wAAs9NAALPTgACz1AAAs9SAALPUwACz1QAAs9WAALPVwACz9IAAs/UAALP1gACz9gAAs/bAALP3AACz90AAs/eAALP3wACz+EAAs/jAALP5AACz+UAAs/nAALP6AAC0HsAAtCeAALQvgAC0N4AAtDgAALQ4gAC0OQAAtDmAALQ6QAC0OoAAtDrAALQ7gAC0O8AAtDxAALQ8gAC0PQAAtD3AALQ+AAC0PkAAtD8AALQ/QAC0QIAAtEbAALRJAAC0SYAAtEoAALRMQAC0TQAAtE3AALROQAC0YIAAtGmAALRzQAC0fEAAtH0AALR9gAC0fgAAtH6AALR/AAC0f4AAtH/AALSAgAC0hsAAtI8AALSPgAC0kAAAtJCAALSRAAC0kYAAtJIAALSSgAC0kwAAtJtAALScAAC0nMAAtJ2AALSeQAC0nwAAtJ/AALSggAC0oUAAtKHAALTAgAC0wQAAtMGAALTCAAC0wsAAtMMAALTDQAC0w4AAtMPAALTEQAC0xMAAtMUAALTFQAC0xcAAtMYAALTkwAC05UAAtOXAALTmQAC05wAAtOdAALTngAC058AAtOgAALTogAC06QAAtOlAALTpgAC06gAAtOpAALUJAAC1CYAAtQpAALUKwAC1C4AAtQvAALUMAAC1DEAAtQyAALUNAAC1DYAAtQ3AALUOAAC1DoAAtQ7AALUVAAC1FUAAtRWAALUWAAC1NMAAtTVAALU1wAC1NkAAtTcAALU3QAC1N4AAtTfAALU4AAC1OIAAtTkAALU5QAC1OYAAtToAALU6QAC1WQAAtVmAALVaAAC1WoAAtVtAALVbgAC1W8AAtVwAALVcQAC1XMAAtV1AALVdgAC1XcAAtV5AALVegAC1fUAAtX3AALV+QAC1fsAAtX+AALV/wAC1gAAAtYBAALWAgAC1gQAAtYGAALWBwAC1ggAAtYKAALWCwAC1oYAAtaIAALWigAC1owAAtaPAALWkAAC1pEAAtaSAALWkwAC1pUAAtaXAALWmAAC1pkAAtabAALWnAAC1xcAAtcZAALXGwAC1x0AAtcgAALXIQAC1yIAAtcjAALXJAAC1yYAAtcoAALXKQAC1yoAAtcsAALXLQAC13YAAteaAALXwQAC1+UAAtfoAALX6gAC1+wAAtfuAALX8AAC1/IAAtfzAALX9gAC2A8AAtgsAALYLgAC2DAAAtgyAALYNAAC2DYAAtg4AALYOgAC2FcAAthaAALYXQAC2GAAAthjAALYZgAC2GkAAthsAALYbgAC2OkAAtjrAALY7QAC2O8AAtjyAALY8wAC2PQAAtj1AALY9gAC2PgAAtj6AALY+wAC2PwAAtj+AALY/wAC2XoAAtl8AALZfgAC2YAAAtmDAALZhAAC2YUAAtmGAALZhwAC2YkAAtmLAALZjAAC2Y0AAtmPAALZkAAC2gsAAtoNAALaDwAC2hEAAtoUAALaFQAC2hYAAtoXAALaGAAC2hoAAtocAALaHQAC2h4AAtogAALaIQAC2pwAAtqeAALaoQAC2qMAAtqmAALapwAC2qgAAtqpAALaqgAC2qwAAtquAALarwAC2rAAAtqyAALaswAC2y4AAtswAALbMgAC2zQAAts3AALbOAAC2zkAAts6AALbOwAC2z0AAts/AALbQAAC20EAAttDAALbRAAC278AAtvBAALbwwAC28UAAtvIAALbyQAC28oAAtvLAALbzAAC284AAtvQAALb0QAC29IAAtvUAALb1QAC3FAAAtxSAALcVAAC3FYAAtxZAALcWgAC3FsAAtxcAALcXQAC3F8AAtxhAALcYgAC3GMAAtxlAALcZgAC3PkAAt0cAALdPAAC3VwAAt1eAALdYAAC3WIAAt1kAALdZwAC3WgAAt1pAALdbAAC3W0AAt1vAALdcAAC3XMAAt12AALddwAC3XgAAt17AALdfAAC3YEAAt2aAALdowAC3aUAAt2oAALdsQAC3bQAAt23AALduQAC3gIAAt4mAALeTQAC3nEAAt50AALedgAC3ngAAt56AALefAAC3n4AAt5/AALeggAC3psAAt68AALevgAC3sAAAt7CAALexAAC3sYAAt7IAALeygAC3swAAt7tAALe8AAC3vMAAt72AALe+QAC3vwAAt7/AALfAgAC3wUAAt8HAALfggAC34QAAt+GAALfiAAC34sAAt+MAALfjQAC344AAt+PAALfkQAC35MAAt+UAALflQAC35cAAt+YAALgEwAC4BUAAuAXAALgGQAC4BwAAuAdAALgHgAC4B8AAuAgAALgIgAC4CQAAuAlAALgJgAC4CgAAuApAALgpAAC4KYAAuCpAALgqwAC4K4AAuCvAALgsAAC4LEAAuCyAALgtAAC4LYAAuC3AALguAAC4LoAAuC7AALg1AAC4NUAAuDWAALg2AAC4VMAAuFVAALhVwAC4VkAAuFcAALhXQAC4V4AAuFfAALhYAAC4WIAAuFkAALhZQAC4WYAAuFoAALhaQAC4eQAAuHmAALh6AAC4eoAAuHtAALh7gAC4e8AAuHwAALh8QAC4fMAAuH1AALh9gAC4fcAAuH5AALh+gAC4nUAAuJ3AALieQAC4nsAAuJ+AALifwAC4oAAAuKBAALiggAC4oQAAuKGAALihwAC4ogAAuKKAALiiwAC4wYAAuMIAALjCgAC4wwAAuMPAALjEAAC4xEAAuMSAALjEwAC4xUAAuMXAALjGAAC4xkAAuMbAALjHAAC45cAAuOZAALjmwAC450AAuOgAALjoQAC46IAAuOjAALjpAAC46YAAuOoAALjqQAC46oAAuOsAALjrQAC4/YAAuQaAALkQQAC5GUAAuRoAALkawAC5G0AAuRvAALkcQAC5HMAAuR0AALkdwAC5JAAAuStAALksAAC5LMAAuS2AALkuQAC5LwAAuS/AALkwgAC5N8AAuTiAALk5QAC5OgAAuTrAALk7gAC5PEAAuT0AALk9gAC5XEAAuVzAALldgAC5XgAAuV7AALlfAAC5X0AAuV+AALlfwAC5YEAAuWEAALlhQAC5YYAAuWIAALliQAC5gQAAuYGAALmCQAC5gsAAuYOAALmDwAC5hAAAuYRAALmEgAC5hQAAuYXAALmGAAC5hkAAuYbAALmHAAC5pcAAuaZAALmnAAC5p4AAuahAALmogAC5qMAAuakAALmpQAC5qcAAuaqAALmqwAC5qwAAuauAALmrwAC5yoAAucsAALnLwAC5zEAAuc0AALnNQAC5zYAAuc3AALnOAAC5zoAAuc9AALnPgAC5z8AAudBAALnQgAC570AAue/AALnwQAC58MAAufGAALnxwAC58gAAufJAALnygAC58wAAufPAALn0AAC59EAAufTAALn1AAC6E8AAuhRAALoUwAC6FUAAuhYAALoWQAC6FoAAuhbAALoXAAC6F4AAuhhAALoYgAC6GMAAuhlAALoZgAC6OEAAujjAALo5gAC6OgAAujrAALo7AAC6O0AAujuAALo7wAC6PEAAuj0AALo9QAC6PYAAuj4AALo+QAC6YwAAumvAALpzwAC6e8AAunxAALp8wAC6fUAAun3AALp+gAC6fsAAun8AALp/wAC6gAAAuoCAALqAwAC6gUAAuoIAALqCQAC6goAAuoNAALqDgAC6hMAAuosAALqNQAC6jcAAuo5AALqQgAC6kUAAupIAALqSgAC6pMAAuq3AALq3gAC6wIAAusFAALrBwAC6wkAAusLAALrDQAC6w8AAusQAALrEwAC6ywAAutNAALrTwAC61EAAutTAALrVQAC61cAAutZAALrWwAC610AAut+AALrgQAC64QAAuuHAALrigAC640AAuuQAALrkwAC65YAAuuYAALsEwAC7BUAAuwXAALsGQAC7BwAAuwdAALsHgAC7B8AAuwgAALsIgAC7CQAAuwlAALsJgAC7CgAAuwpAALspAAC7KYAAuyoAALsqgAC7K0AAuyuAALsrwAC7LAAAuyxAALsswAC7LUAAuy2AALstwAC7LkAAuy6AALtNQAC7TcAAu06AALtPAAC7T8AAu1AAALtQQAC7UIAAu1DAALtRQAC7UcAAu1IAALtSQAC7UsAAu1MAALtZQAC7WYAAu1nAALtaQAC7eQAAu3mAALt6AAC7eoAAu3tAALt7gAC7e8AAu3wAALt8QAC7fMAAu31AALt9gAC7fcAAu35AALt+gAC7nUAAu53AALueQAC7nsAAu5+AALufwAC7oAAAu6BAALuggAC7oQAAu6GAALuhwAC7ogAAu6KAALuiwAC7wYAAu8IAALvCgAC7ww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AAzW0AAM1tQADNbcAAzW4AAM10QADNdIAAzXTAAM11QADNlAAAzZSAAM2VAADNlYAAzZZAAM2WgADNlsAAzZcAAM2XQADNl8AAzZhAAM2YgADNmMAAzZlAAM2ZgADNuEAAzbjAAM25QADNucAAzbqAAM26wADNuwAAzbtAAM27gADNvAAAzbyAAM28wADNvQAAzb2AAM29wADN3IAAzd0AAM3dgADN3gAAzd7AAM3fAADN30AAzd+AAM3fwADN4EAAzeDAAM3hAADN4UAAzeHAAM3iAADOAMAAzgFAAM4BwADOAkAAzgMAAM4DQADOA4AAzgPAAM4EAADOBIAAzgUAAM4FQADOBYAAzgYAAM4GQADOJQAAziWAAM4mAADOJoAAzidAAM4ngADOJ8AAzigAAM4oQADOKMAAzilAAM4pgADOKcAAzipAAM4qgADOPMAAzkXAAM5PgADOWIAAzllAAM5aAADOWoAAzlsAAM5bgADOXAAAzlxAAM5dAADOY0AAzmqAAM5rQADObAAAzmzAAM5tgADObkAAzm8AAM5vwADOdwAAznfAAM54gADOeUAAznoAAM56wADOe4AAznxAAM58wADOm4AAzpwAAM6cwADOnUAAzp4AAM6eQADOnoAAzp7AAM6fAADOn4AAzqBAAM6ggADOoMAAzqFAAM6hgADOwEAAzsDAAM7BgADOwgAAzsLAAM7DAADOw0AAzsOAAM7DwADOxEAAzsUAAM7FQADOxYAAzsYAAM7GQADO5QAAzuWAAM7mQADO5sAAzueAAM7nwADO6AAAzuhAAM7ogADO6QAAzunAAM7qAADO6kAAzurAAM7rAADPCcAAzwpAAM8LAADPC4AAzwxAAM8MgADPDMAAzw0AAM8NQADPDcAAzw6AAM8OwADPDwAAzw+AAM8PwADPLoAAzy8AAM8vgADPMAAAzzDAAM8xAADPMUAAzzGAAM8xwADPMkAAzzMAAM8zQADPM4AAzzQAAM80QADPUwAAz1OAAM9UAADPVIAAz1VAAM9VgADPVcAAz1YAAM9WQADPVsAAz1eAAM9XwADPWAAAz1iAAM9YwADPd4AAz3gAAM94wADPeUAAz3oAAM96QADPeoAAz3rAAM97AADPe4AAz3xAAM98gADPfMAAz31AAM99gADPokAAz6sAAM+zAADPuwAAz7uAAM+8AADPvIAAz70AAM+9wADPvgAAz75AAM+/AADPv0AAz7/AAM/AAADPwIAAz8FAAM/BgADPwcAAz8KAAM/CwADPxQAAz8tAAM/NgADPzgAAz86AAM/QwADP0YAAz9JAAM/SwADP5QAAz+4AAM/3wADQAMAA0AGAANACAADQAoAA0AMAANADgADQBAAA0ARAANAFAADQC0AA0BOAANAUAADQFIAA0BUAANAVgADQFgAA0BaAANAXAADQF4AA0B/AANAggADQIUAA0CIAANAiwADQI4AA0CRAANAlAADQJcAA0CZAANBFAADQRYAA0EYAANBGgADQR0AA0EeAANBHwADQSAAA0EhAANBIwADQSUAA0EmAANBJwADQSkAA0EqAANBpQADQacAA0GpAANBqwADQa4AA0GvAANBsAADQbEAA0GyAANBtAADQbYAA0G3AANBuAADQboAA0G7AANCNgADQjgAA0I7AANCPQADQkAAA0JBAANCQgADQkMAA0JEAANCRgADQkgAA0JJAANCSgADQkwAA0JNAANCZgADQmcAA0JoAANCagADQuUAA0LnAANC6QADQusAA0LuAANC7wADQvAAA0LxAANC8gADQvQAA0L2AANC9wADQvgAA0L6AANC+wADQ3YAA0N4AANDegADQ3wAA0N/AANDgAADQ4EAA0OCAANDgwADQ4UAA0OHAANDiAADQ4kAA0OLAANDjAADRAcAA0QJAANECwADRA0AA0QQAANEEQADRBIAA0QTAANEFAADRBYAA0QYAANEGQADRBoAA0QcAANEHQADRJgAA0SaAANEnAADRJ4AA0ShAANEogADRKMAA0SkAANEpQADRKcAA0SpAANEqgADRKsAA0StAANErgADRSkAA0UrAANFLQADRS8AA0UyAANFMwADRTQAA0U1AANFNgADRTgAA0U6AANFOwADRTwAA0U+AANFPwADRYgAA0WsAANF0wADRfcAA0X6AANF/AADRf4AA0YAAANGAgADRgQAA0YFAANGCAADRiEAA0Y+AANGQAADRkIAA0ZEAANGRgADRkgAA0ZKAANGTAADRmkAA0ZsAANGbwADRnIAA0Z1AANGeAADRnsAA0Z+AANGgAADRvsAA0b9AANG/wADRwEAA0cEAANHBQADRwYAA0cHAANHCAADRwoAA0cMAANHDQADRw4AA0cQAANHEQADR4wAA0eOAANHkAADR5IAA0eVAANHlgADR5cAA0eYAANHmQADR5sAA0edAANHngADR58AA0ehAANHogADSB0AA0gfAANIIQADSCMAA0gmAANIJwADSCgAA0gpAANIKgADSCwAA0guAANILwADSDAAA0gyAANIMwADSK4AA0iwAANIswADSLUAA0i4AANIuQADSLoAA0i7AANIvAADSL4AA0jAAANIwQADSMIAA0jEAANIxQADSMgAA0lDAANJRQADSUcAA0lJAANJTAADSU0AA0lOAANJTwADSVAAA0lSAANJVAADSVUAA0lWAANJWAADSVkAA0nUAANJ1gADSdgAA0naAANJ3QADSd4AA0nfAANJ4AADSeEAA0njAANJ5QADSeYAA0nnAANJ6QADSeoAA0plAANKZwADSmkAA0prAANKbgADSm8AA0pwAANKcQADSnIAA0p0AANKdgADSncAA0p4AANKegADSnsAA0sOAANLMQADS1EAA0txAANLcwADS3UAA0t3AANLeQADS3wAA0t9AANLfgADS4EAA0uCAANLhAADS4UAA0uHAANLigADS4sAA0uMAANLjwADS5AAA0uZAANLsgADS7sAA0u9AANLvwADS8gAA0vLAANLzgADS9AAA0wZAANMPQADTGQAA0yIAANMiwADTI0AA0yPAANMkQADTJMAA0yVAANMlgADTJkAA0yyAANM0wADTNUAA0zXAANM2QADTNsAA0zdAANM3wADTOEAA0zjAANNBAADTQcAA00KAANNDQADTRAAA00TAANNFgADTRkAA00cAANNHgADTZkAA02bAANNnQADTZ8AA02iAANNowADTaQAA02lAANNpgADTagAA02qAANNqwADTawAA02uAANNrwADTioAA04sAANOLgADTjAAA04zAANONAADTjUAA042AANONwADTjkAA047AANOPAADTj0AA04/AANOQAADTrsAA069AANOwAADTsIAA07FAANOxgADTscAA07IAANOyQADTssAA07NAANOzgADTs8AA07RAANO0gADTusAA07sAANO7QADTu8AA09qAANPbAADT24AA09wAANPcwADT3QAA091AANPdgADT3cAA095AANPewADT3wAA099AANPfwADT4AAA0/7AANP/QADT/8AA1ABAANQBAADUAUAA1AGAANQBwADUAgAA1AKAANQDAADUA0AA1AOAANQEAADUBEAA1CMAANQjgADUJAAA1CSAANQlQADUJYAA1CXAANQmAADUJkAA1CbAANQnQADUJ4AA1CfAANQoQADUKIAA1EdAANRHwADUSEAA1EjAANRJgADUScAA1EoAANRKQADUSoAA1EsAANRLgADUS8AA1EwAANRMgADUTMAA1GuAANRsAADUbIAA1G0AANRtwADUbgAA1G5AANRugADUbsAA1G9AANRvwADUcAAA1HBAANRwwADUcQAA1INAANSMQADUlgAA1J8AANSfwADUoEAA1KDAANShQADUocAA1KJAANSigADUo0AA1KmAANSwwADUsUAA1LHAANSyQADUssAA1LNAANSzwADUtEAA1LuAANS8QADUvQAA1L3AANS+gADUv0AA1MAAANTAwADUwUAA1OAAANTggADU4QAA1OGAANTiQADU4oAA1OLAANTjAADU40AA1OPAANTkQADU5IAA1OTAANTlQADU5YAA1QRAANUEwADVBUAA1QXAANUGgADVBsAA1QcAANUHQADVB4AA1QgAANUIgADVCMAA1QkAANUJgADVCcAA1SiAANUpAADVKYAA1SoAANUqwADVKwAA1StAANUrgADVK8AA1SxAANUswADVLQAA1S1AANUtwADVLgAA1UzAANVNQADVTgAA1U6AANVPQADVT4AA1U/AANVQAADVUEAA1VDAANVRQADVUYAA1VHAANVSQADVUoAA1XFAANVxwADVckAA1XLAANVzgADVc8AA1XQAANV0QADVdIAA1XUAANV1gADVdcAA1XYAANV2gADVdsAA1ZWAANWWAADVloAA1ZcAANWXwADVmAAA1ZhAANWYgADVmMAA1ZlAANWZwADVmgAA1ZpAANWawADVmwAA1bnAANW6QADVusAA1btAANW8AADVvEAA1byAANW8wADVvQAA1b2AANW+AADVvkAA1b6AANW/AADVv0AA1cOAANXDwADVxEAA1eMAANXjgADV5AAA1eSAANXlQADV5YAA1eXAANXmAADV5kAA1ebAANXngADV58AA1egAANXogADV6MAA1geAANYIAADWCIAA1gkAANYJwADWCgAA1gpAANYKgADWCsAA1gtAANYMAADWDEAA1gyAANYNAADWDUAA1iwAANYsgADWLUAA1i3AANYugADWLsAA1i8AANYvQADWL4AA1jAAANYwwADWMQAA1jFAANYxwADWMgAA1lbAANZfgADWZ4AA1m+AANZwAADWcIAA1nEAANZxgADWckAA1nKAANZywADWc4AA1nPAANZ0QADWdIAA1nUAANZ1wADWdgAA1nZAANZ3AADWd0AA1niAANZ+wADWgQAA1oGAANaCAADWhEAA1oUAANaFwADWhkAA1piAANahgADWq0AA1rRAANa1AADWtYAA1rYAANa2gADWtwAA1reAANa3wADWuIAA1r7AANbHAADWx4AA1sgAANbIgADWyQAA1smAANbKAADWyoAA1ssAANbTQADW1AAA1tTAANbVgADW1kAA1tcAANbXwADW2IAA1tlAANbZwADW+IAA1vkAANb5gADW+gAA1vrAANb7AADW+0AA1vuAANb7wADW/EAA1vzAANb9AADW/UAA1v3AANb+AADXHMAA1x1AANcdwADXHkAA1x8AANcfQADXH4AA1x/AANcgAADXIIAA1yEAANchQADXIYAA1yIAANciQADXQQAA10GAANdCQADXQsAA10OAANdDwADXRAAA10RAANdEgADXRQAA10WAANdFwADXRgAA10aAANdGwADXTQAA101AANdNgADXTgAA12zAANdtQADXbcAA125AANdvAADXb0AA12+AANdvwADXcAAA13CAANdxAADXcUAA13GAANdyAADXckAA15EAANeRgADXkgAA15KAANeTQADXk4AA15PAANeUAADXlEAA15TAANeVQADXlYAA15XAANeWQADXloAA17VAANe1wADXtkAA17bAANe3gADXt8AA17gAANe4QADXuIAA17kAANe5gADXucAA17oAANe6gADXusAA19mAANfaAADX2oAA19sAANfbwADX3AAA19xAANfcgADX3MAA191AANfdwADX3gAA195AANfewADX3wAA1/3AANf+QADX/sAA1/9AANgAAADYAEAA2ACAANgAwADYAQAA2AGAANgCAADYAkAA2AKAANgDAADYA0AA2BWAANgegADYKEAA2DFAANgyAADYMoAA2DMAANgzgADYNAAA2DSAANg0wADYNYAA2DvAANhDAADYQ4AA2EQAANhEgADYRQAA2EWAANhGAADYRoAA2E3AANhOgADYT0AA2FAAANhQwADYUYAA2FJAANhTAADYU4AA2HJAANhywADYc0AA2HPAANh0gADYdMAA2HUAANh1QADYdYAA2HYAANh2gADYdsAA2HcAANh3gADYd8AA2JaAANiXAADYl4AA2JgAANiYwADYmQAA2JlAANiZgADYmcAA2JpAANiawADYmwAA2JtAANibwADYnAAA2LrAANi7QADYu8AA2LxAANi9AADYvUAA2L2AANi9wADYvgAA2L6AANi/AADYv0AA2L+AANjAAADYwEAA2N8AANjfgADY4AAA2OCAANjhQADY4YAA2OHAANjiAADY4kAA2OLAANjjQADY44AA2OPAANjkQADY5IAA2QNAANkDwADZBEAA2QTAANkFgADZBcAA2QYAANkGQADZBoAA2QcAANkHgADZB8AA2QgAANkIgADZCMAA2SeAANkoAADZKIAA2SkAANkpwADZKgAA2SpAANkqgADZKsAA2StAANkrwADZLAAA2SxAANkswADZLQAA2UvAANlMQADZTMAA2U1AANlOAADZTkAA2U6AANlOwADZTwAA2U+AANlQAADZUEAA2VCAANlRAADZUUAA2XYAANl+wADZhsAA2Y7AANmPQADZj8AA2ZBAANmQwADZkYAA2ZHAANmSAADZksAA2ZMAANmTgADZk8AA2ZRAANmVAADZlUAA2ZWAANmWQADZloAA2ZfAANmeAADZoEAA2aDAANmhQADZo4AA2aRAANmlAADZpYAA2bfAANnAwADZyoAA2dOAANnUQADZ1MAA2dVAANnVwADZ1kAA2dbAANnXAADZ18AA2d4AANnmQADZ5sAA2edAANnnwADZ6EAA2ejAANnpQADZ6cAA2epAANnygADZ80AA2fQAANn0wADZ9YAA2fZAANn3AADZ98AA2fiAANn5AADaF8AA2hhAANoYwADaGUAA2hoAANoaQADaGoAA2hrAANobAADaG4AA2hwAANocQADaHIAA2h0AANodQADaPAAA2jyAANo9AADaPYAA2j5AANo+gADaPsAA2j8AANo/QADaP8AA2kBAANpAgADaQMAA2kFAANpBgADaYEAA2mDAANphgADaYgAA2mLAANpjAADaY0AA2mOAANpjwADaZEAA2mTAANplAADaZUAA2mXAANpmAADabEAA2myAANpswADabUAA2owAANqMgADajQAA2o2AANqOQADajoAA2o7AANqPAADaj0AA2o/AANqQQADakIAA2pDAANqRQADakYAA2rBAANqwwADasUAA2rHAANqygADassAA2rMAANqzQADas4AA2rQAANq0gADatMAA2rUAANq1gADatcAA2tSAANrVAADa1YAA2tYAANrWwADa1wAA2tdAANrXgADa18AA2thAANrYwADa2QAA2tlAANrZwADa2gAA2vjAANr5QADa+cAA2vpAANr7AADa+0AA2vuAANr7wADa/AAA2vyAANr9AADa/UAA2v2AANr+AADa/kAA2x0AANsdgADbHgAA2x6AANsfQADbH4AA2x/AANsgAADbIEAA2yDAANshQADbIYAA2yHAANsiQADbIoAA2zTAANs9wADbR4AA21CAANtRQADbUcAA21JAANtSwADbU0AA21PAANtUAADbVMAA21sAANtiQADbYsAA22NAANtjwADbZEAA22TAANtlQADbZcAA220AANttwADbboAA229AANtwAADbcMAA23GAANtyQADbcsAA25GAANuSAADbkoAA25MAANuTwADblAAA25RAANuUgADblMAA25VAANuVwADblgAA25ZAANuWwADblwAA27XAANu2QADbtsAA27dAANu4AADbuEAA27iAANu4wADbuQAA27mAANu6AADbukAA27qAANu7AADbu0AA29oAANvagADb2wAA29uAANvcQADb3IAA29zAANvdAADb3UAA293AANveQADb3oAA297AANvfQADb34AA2/5AANv+wADb/0AA2//AANwAgADcAMAA3AEAANwBQADcAYAA3AIAANwCgADcAsAA3AMAANwDgADcA8AA3CKAANwjAADcI4AA3CQAANwkwADcJQAA3CVAANwlgADcJcAA3CZAANwmwADcJwAA3CdAANwnwADcKAAA3EbAANxHQADcR8AA3EhAANxJAADcSUAA3EmAANxJwADcSgAA3EqAANxLAADcS0AA3EuAANxMAADcTEAA3GsAANxrgADcbAAA3GyAANxtQADcbYAA3G3AANxuAADcbkAA3G7AANxvQADcb4AA3G/AANxwQADccIAA3JVAANyeAADcpgAA3K4AANyugADcrwAA3K+AANywAADcsMAA3LEAANyxQADcsgAA3LJAANyywADcswAA3LOAANy0QADctIAA3LTAANy1gADctcAA3LgAANy+QADcwIAA3MEAANzBgADcw8AA3MSAANzFQADcxcAA3NgAANzhAADc6sAA3PPAANz0gADc9QAA3PWAANz2AADc9oAA3PcAANz3QADc+AAA3P5AAN0GgADdBwAA3QeAAN0IAADdCIAA3QkAAN0JgADdCgAA3QqAAN0SwADdE4AA3RRAAN0VAADdFcAA3RaAAN0XQADdGAAA3RjAAN0ZQADdOAAA3TiAAN05AADdOYAA3TpAAN06gADdOsAA3TsAAN07QADdO8AA3TxAAN08gADdPMAA3T1AAN09gADdXEAA3VzAAN1dQADdXcAA3V6AAN1ewADdXwAA3V9AAN1fgADdYAAA3WCAAN1gwADdYQAA3WGAAN1hwADdgIAA3YEAAN2BwADdgkAA3YMAAN2DQADdg4AA3YPAAN2EAADdhIAA3YUAAN2FQADdhYAA3YYAAN2GQADdjIAA3YzAAN2NAADdjYAA3axAAN2swADdrUAA3a3AAN2ugADdrsAA3a8AAN2vQADdr4AA3bAAAN2wgADdsMAA3bEAAN2xgADdscAA3dCAAN3RAADd0YAA3dIAAN3SwADd0wAA3dNAAN3TgADd08AA3dRAAN3UwADd1QAA3dVAAN3VwADd1gAA3fTAAN31QADd9cAA3fZAAN33AADd90AA3feAAN33wADd+AAA3fiAAN35AADd+UAA3fmAAN36AADd+kAA3hkAAN4ZgADeGgAA3hqAAN4bQADeG4AA3hvAAN4cAADeHEAA3hzAAN4dQADeHYAA3h3AAN4eQADeHoAA3j1AAN49wADePkAA3j7AAN4/gADeP8AA3kAAAN5AQADeQIAA3kEAAN5BgADeQcAA3kIAAN5CgADeQsAA3lUAAN5eAADeZ8AA3nDAAN5xgADecgAA3nKAAN5zAADec4AA3nQAAN50QADedQAA3ntAAN6CgADegwAA3oOAAN6EAADehIAA3oUAAN6FgADehgAA3o1AAN6OAADejsAA3o+AAN6QQADekQAA3pHAAN6SgADekwAA3rHAAN6yQADessAA3rNAAN60AADetEAA3rSAAN60wADetQAA3rWAAN62AADetkAA3raAAN63AADet0AA3tYAAN7WgADe1wAA3teAAN7YQADe2IAA3tjAAN7ZAADe2UAA3tnAAN7aQADe2oAA3trAAN7bQADe24AA3vpAAN76wADe+0AA3vvAAN78gADe/MAA3v0AAN79QADe/YAA3v4AAN7+gADe/sAA3v8AAN7/gADe/8AA3x6AAN8fAADfH8AA3yBAAN8hAADfIUAA3yGAAN8hwADfIgAA3yKAAN8jAADfI0AA3yOAAN8kAADfJEAA30MAAN9DgADfRAAA30SAAN9FQADfRYAA30XAAN9GAADfRkAA30bAAN9HQADfR4AA30fAAN9IQADfSIAA32dAAN9nwADfaEAA32jAAN9pgADfacAA32oAAN9qQADfaoAA32sAAN9rgADfa8AA32wAAN9sgADfbMAA34uAAN+MAADfjIAA340AAN+NwADfjgAA345AAN+OgADfjsAA349AAN+PwADfkAAA35BAAN+QwADfkQAA37XAAN++gADfxoAA386AAN/PAADfz4AA39AAAN/QgADf0UAA39GAAN/RwADf0oAA39LAAN/TQADf04AA39QAAN/UwADf1QAA39VAAN/WAADf1kAA39iAAN/ewADf4QAA3+GAAN/iAADf5EAA3+UAAN/lwADf5kAA3/iAAOABgADgC0AA4BRAAOAVAADgFYAA4BYAAOAWgADgFwAA4BeAAOAXwADgGIAA4B7AAOAnAADgJ4AA4CgAAOAogADgKQAA4CmAAOAqAADgKoAA4CsAAOAzQADgNAAA4DTAAOA1gADgNkAA4DcAAOA3wADgOIAA4DlAAOA5wADgWIAA4FkAAOBZgADgWgAA4FrAAOBbAADgW0AA4FuAAOBbwADgXEAA4FzAAOBdAADgXUAA4F3AAOBeAADgfMAA4H1AAOB9wADgfkAA4H8AAOB/QADgf4AA4H/AAOCAAADggIAA4IEAAOCBQADggYAA4IIAAOCCQADgoQAA4KGAAOCiQADgosAA4KOAAOCjwADgpAAA4KRAAOCkgADgpQAA4KWAAOClwADgpgAA4KaAAOCmwADgrQAA4K1AAOCtgADgrgAA4MzAAODNQADgzcAA4M5AAODPAADgz0AA4M+AAODPwADg0AAA4NCAAODRAADg0UAA4NGAAODSAADg0kAA4PEAAODxgADg8gAA4PKAAODzQADg84AA4PPAAOD0AADg9EAA4PTAAOD1QADg9YAA4PXAAOD2QADg9oAA4RVAAOEVwADhFkAA4RbAAOEXgADhF8AA4RgAAOEYQADhGIAA4RkAAOEZgADhGcAA4RoAAOEagADhGsAA4TmAAOE6AADhOoAA4TsAAOE7wADhPAAA4TxAAOE8gADhPMAA4T1AAOE9wADhPgAA4T5AAOE+wADhPwAA4V3AAOFeQADhXsAA4V9AAOFgAADhYEAA4WCAAOFgwADhYQAA4WGAAOFiAADhYkAA4WKAAOFjAADhY0AA4XWAAOF+gADhiEAA4ZFAAOGSAADhkoAA4ZMAAOGTgADhlAAA4ZSAAOGUwADhlYAA4ZvAAOGjAADho4AA4aQAAOGkgADhpQAA4aWAAOGmAADhpoAA4a3AAOGugADhr0AA4bAAAOGwwADhsYAA4bJAAOGzAADhs4AA4dJAAOHSwADh00AA4dPAAOHUgADh1MAA4dUAAOHVQADh1YAA4dYAAOHWgADh1sAA4dcAAOHXgADh18AA4faAAOH3AADh94AA4fgAAOH4wADh+QAA4flAAOH5gADh+cAA4fpAAOH6wADh+wAA4ftAAOH7wADh/AAA4hrAAOIbQADiG8AA4hxAAOIdAADiHUAA4h2AAOIdwADiHgAA4h6AAOIfAADiH0AA4h+AAOIgAADiIEAA4j8AAOI/gADiQAAA4kCAAOJBQADiQYAA4kHAAOJCAADiQkAA4kLAAOJDQADiQ4AA4kPAAOJEQADiRIAA4mNAAOJjwADiZEAA4mTAAOJlgADiZcAA4mYAAOJmQADiZoAA4mcAAOJngADiZ8AA4mgAAOJogADiaMAA4oeAAOKIAADiiIAA4okAAOKJwADiigAA4opAAOKKgADiisAA4otAAOKLwADijAAA4oxAAOKMwADijQAA4qvAAOKsQADirMAA4q1AAOKuAADirkAA4q6AAOKuwADirwAA4q+AAOKwAADisEAA4rCAAOKxAADisUAA4rWAAOK1wADitkAA4tUAAOLVgADi1gAA4taAAOLXQADi14AA4tfAAOLYAADi2EAA4tjAAOLZgADi2cAA4toAAOLagADi2sAA4vmAAOL6AADi+oAA4vsAAOL7wADi/AAA4vxAAOL8gADi/MAA4v1AAOL+AADi/kAA4v6AAOL/AADi/0AA4x4AAOMegADjH0AA4x/AAOMggADjIMAA4yEAAOMhQADjIYAA4yIAAOMiwADjIwAA4yNAAOMjwADjJAAA40jAAONRgADjWYAA42GAAONiAADjYoAA42MAAONjgADjZEAA42SAAONkwADjZYAA42XAAONmQADjZoAA42cAAONnwADjaAAA42hAAONpAADjaUAA42qAAONwwADjcwAA43OAAON0AADjdkAA43cAAON3wADjeEAA44qAAOOTgADjnUAA46ZAAOOnAADjp4AA46gAAOOogADjqQAA46mAAOOpwADjqoAA47DAAOO5AADjuYAA47oAAOO6gADjuwAA47uAAOO8AADjvIAA470AAOPFQADjxgAA48bAAOPHgADjyEAA48kAAOPJwADjyoAA48tAAOPLwADj6oAA4+sAAOPrgADj7AAA4+zAAOPtAADj7UAA4+2AAOPtwADj7kAA4+7AAOPvAADj70AA4+/AAOPwAADkDsAA5A9AAOQPwADkEEAA5BEAAOQRQADkEYAA5BHAAOQSAADkEoAA5BMAAOQTQADkE4AA5BQAAOQUQADkMwAA5DOAAOQ0QADkNMAA5DWAAOQ1wADkNgAA5DZAAOQ2gADkNwAA5DeAAOQ3wADkOAAA5DiAAOQ4wADkPwAA5D9AAOQ/gADkQAAA5F7AAORfQADkX8AA5GBAAORhAADkYUAA5GGAAORhwADkYgAA5GKAAORjAADkY0AA5GOAAORkAADkZEAA5IMAAOSDgADkhAAA5ISAAOSFQADkhYAA5IXAAOSGAADkhkAA5IbAAOSHQADkh4AA5IfAAOSIQADkiIAA5KdAAOSnwADkqEAA5KjAAOSpgADkqcAA5KoAAOSqQADkqoAA5KsAAOSrgADkq8AA5KwAAOSsgADkrMAA5MuAAOTMAADkzIAA5M0AAOTNwADkzgAA5M5AAOTOgADkzsAA5M9AAOTPwADk0AAA5NBAAOTQwADk0QAA5O/AAOTwQADk8MAA5PFAAOTyAADk8kAA5PKAAOTywADk8wAA5POAAOT0AADk9EAA5PSAAOT1AADk9UAA5QeAAOUQgADlGkAA5SNAAOUkAADlJIAA5SUAAOUlgADlJgAA5SaAAOUmwADlJ4AA5S3AAOU1AADlNYAA5TYAAOU2gADlNwAA5TeAAOU4AADlOIAA5T/AAOVAgADlQUAA5UIAAOVCwADlQ4AA5URAAOVFAADlRYAA5WRAAOVkwADlZUAA5WXAAOVmgADlZsAA5WcAAOVnQADlZ4AA5WgAAOVogADlaMAA5WkAAOVpgADlacAA5YiAAOWJAADliYAA5YoAAOWKwADliwAA5YtAAOWLgADli8AA5YxAAOWMwADljQAA5Y1AAOWNwADljgAA5azAAOWtQADlrcAA5a5AAOWvAADlr0AA5a+AAOWvwADlsAAA5bCAAOWxAADlsUAA5bGAAOWyAADlskAA5dEAAOXRgADl0kAA5dLAAOXTgADl08AA5dQAAOXUQADl1IAA5dUAAOXVgADl1cAA5dYAAOXWgADl1sAA5fWAAOX2AADl9oAA5fcAAOX3wADl+AAA5fhAAOX4gADl+MAA5flAAOX5wADl+gAA5fpAAOX6wADl+wAA5hnAAOYaQADmGsAA5htAAOYcAADmHEAA5hyAAOYcwADmHQAA5h2AAOYeAADmHkAA5h6AAOYfAADmH0AA5j4AAOY+gADmPwAA5j+AAOZAQADmQIAA5kDAAOZBAADmQUAA5kHAAOZCQADmQoAA5kLAAOZDQADmQ4AA5mhAAOZxAADmeQAA5oEAAOaBgADmggAA5oKAAOaDAADmg8AA5oQAAOaEQADmhQAA5oVAAOaFwADmhgAA5oaAAOaHQADmh4AA5ofAAOaIgADmiMAA5ooAAOaQQADmkoAA5pMAAOaTgADmlcAA5paAAOaXQADml8AA5qoAAOazAADmvMAA5sXAAObGgADmxwAA5seAAObIAADmyIAA5skAAObJQADmygAA5tBAAObYgADm2QAA5tmAAObaAADm2oAA5tsAAObbgADm3AAA5tyAAObkwADm5YAA5uZAAObnAADm58AA5uiAAObpQADm6gAA5urAAObrQADnCgAA5wqAAOcLAADnC4AA5wxAAOcMgADnDMAA5w0AAOcNQADnDcAA5w5AAOcOgADnDsAA5w9AAOcPgADnLkAA5y7AAOcvQADnL8AA5zCAAOcwwADnMQAA5zFAAOcxgADnMgAA5zKAAOcywADnMwAA5zOAAOczwADnUoAA51MAAOdTwADnVEAA51UAAOdVQADnVYAA51XAAOdWAADnVoAA51cAAOdXQADnV4AA51gAAOdYQADnXoAA517AAOdfAADnX4AA535AAOd+wADnf0AA53/AAOeAgADngMAA54EAAOeBQADngYAA54IAAOeCgADngsAA54MAAOeDgADng8AA56KAAOejAADno4AA56QAAOekwADnpQAA56VAAOelgADnpcAA56ZAAOemwADnpwAA56dAAOenwADnqAAA58bAAOfHQADnx8AA58hAAOfJAADnyUAA58mAAOfJwADnygAA58qAAOfLAADny0AA58uAAOfMAADnzEAA5+sAAOfrgADn7AAA5+yAAOftQADn7YAA5+3AAOfuAADn7kAA5+7AAOfvQADn74AA5+/AAOfwQADn8IAA6A9AAOgPwADoEEAA6BDAAOgRgADoEcAA6BIAAOgSQADoEoAA6BMAAOgTgADoE8AA6BQAAOgUgADoFMAA6CcAAOgwAADoOcAA6ELAAOhDgADoRAAA6ESAAOhFAADoRYAA6EYAAOhGQADoRwAA6E1AAOhUgADoVQAA6FWAAOhWAADoVoAA6FcAAOhXgADoWAAA6F9AAOhgAADoYMAA6GGAAOhiQADoYwAA6GPAAOhkgADoZQAA6IPAAOiEQADohMAA6IVAAOiGAADohkAA6IaAAOiGwADohwAA6IeAAOiIAADoiEAA6IiAAOiJAADoiUAA6KgAAOiogADoqQAA6KmAAOiqQADoqoAA6KrAAOirAADoq0AA6KvAAOisQADorIAA6KzAAOitQADorYAA6MxAAOjMwADozUAA6M3AAOjOgADozsAA6M8AAOjPQADoz4AA6NAAAOjQgADo0MAA6NEAAOjRgADo0cAA6PCAAOjxAADo8cAA6PJAAOjzAADo80AA6POAAOjzwADo9AAA6PSAAOj1AADo9UAA6PWAAOj2AADo9kAA6RUAAOkVgADpFgAA6RaAAOkXQADpF4AA6RfAAOkYAADpGEAA6RjAAOkZQADpGYAA6RnAAOkaQADpGoAA6TlAAOk5wADpOkAA6TrAAOk7gADpO8AA6TwAAOk8QADpPIAA6T0AAOk9gADpPcAA6T4AAOk+gADpPsAA6V2AAOleAADpXoAA6V8AAOlfwADpYAAA6WBAAOlggADpYMAA6WFAAOlhwADpYgAA6WJAAOliwADpYwAA6YfAAOmQgADpmIAA6aCAAOmhAADpoYAA6aIAAOmigADpo0AA6aOAAOmjwADppIAA6aTAAOmlQADppYAA6aYAAOmmwADppwAA6adAAOmoAADpqEAA6amAAOmvwADpsgAA6bKAAOmzAADptUAA6bYAAOm2wADpt0AA6cmAAOnSgADp3EAA6eVAAOnmAADp5oAA6ecAAOnngADp6AAA6eiAAOnowADp6YAA6e/AAOn4AADp+IAA6fkAAOn5gADp+gAA6fqAAOn7AADp+4AA6fwAAOoEQADqBQAA6gXAAOoGgADqB0AA6ggAAOoIwADqCYAA6gpAAOoKwADqKYAA6ioAAOoqgADqKwAA6ivAAOosAADqLEAA6iyAAOoswADqLUAA6i3AAOouAADqLkAA6i7AAOovAADqTcAA6k5AAOpOwADqT0AA6lAAAOpQQADqUIAA6lDAAOpRAADqUYAA6lIAAOpSQADqUoAA6lMAAOpTQADqcgAA6nKAAOpzQADqc8AA6nSAAOp0wADqdQAA6nVAAOp1gADqdgAA6naAAOp2wADqdwAA6neAAOp3wADqfgAA6n5AAOp+gADqfwAA6p3AAOqeQADqnsAA6p9AAOqgAADqoEAA6qCAAOqgwADqoQAA6qGAAOqiAADqokAA6qKAAOqjAADqo0AA6sIAAOrCgADqwwAA6sOAAOrEQADqxIAA6sTAAOrFAADqxUAA6sXAAOrGQADqxoAA6sbAAOrHQADqx4AA6uZAAOrmwADq50AA6ufAAOrogADq6MAA6ukAAOrpQADq6YAA6uoAAOrqgADq6sAA6usAAOrrgADq68AA6wqAAOsLAADrC4AA6wwAAOsMwADrDQAA6w1AAOsNgADrDcAA6w5AAOsOwADrDwAA6w9AAOsPwADrEAAA6y7AAOsvQADrL8AA6zBAAOsxAADrMUAA6zGAAOsxwADrMgAA6zKAAOszAADrM0AA6zOAAOs0AADrNEAA60aAAOtPgADrWUAA62JAAOtjAADrY4AA62QAAOtkgADrZQAA62WAAOtlwADrZoAA62zAAOt0AADrdIAA63UAAOt1gADrdgAA63aAAOt3AADrd4AA637AAOt/gADrgEAA64EAAOuBwADrgoAA64NAAOuEAADrhIAA66NAAOujwADrpEAA66TAAOulgADrpcAA66YAAOumQADrpoAA66cAAOungADrp8AA66gAAOuogADrqMAA68eAAOvIAADryIAA68kAAOvJwADrygAA68pAAOvKgADrysAA68tAAOvLwADrzAAA68xAAOvMwADrzQAA6+vAAOvsQADr7MAA6+1AAOvuAADr7kAA6+6AAOvuwADr7wAA6++AAOvwAADr8EAA6/CAAOvxAADr8UAA7BAAAOwQgADsEUAA7BHAAOwSgADsEsAA7BMAAOwTQADsE4AA7BQAAOwUgADsFMAA7BUAAOwVgADsFcAA7DSAAOw1AADsNYAA7DYAAOw2wADsNwAA7DdAAOw3gADsN8AA7DhAAOw4wADsOQAA7DlAAOw5wADsOgAA7FjAAOxZQADsWcAA7FpAAOxbAADsW0AA7FuAAOxbwADsXAAA7FyAAOxdAADsXUAA7F2AAOxeAADsXkAA7H0AAOx9gADsfgAA7H6AAOx/QADsf4AA7H/AAOyAAADsgEAA7IDAAOyBQADsgYAA7IHAAOyCQADsgoAA7KdAAOywAADsuAAA7MAAAOzAgADswQAA7MGAAOzCAADswsAA7MMAAOzDQADsxAAA7MRAAOzEwADsxQAA7MWAAOzGQADsxoAA7MbAAOzHgADsx8AA7MkAAOzPQADs0YAA7NIAAOzSgADs1MAA7NWAAOzWQADs1sAA7OkAAOzyAADs+8AA7QTAAO0FgADtBgAA7QaAAO0HAADtB4AA7QgAAO0IQADtCQAA7Q9AAO0XgADtGAAA7RiAAO0ZAADtGYAA7RoAAO0agADtGwAA7RuAAO0jwADtJIAA7SVAAO0mAADtJsAA7SeAAO0oQADtKQAA7SnAAO0qQADtSQAA7UmAAO1KAADtSoAA7UtAAO1LgADtS8AA7UwAAO1MQADtTMAA7U1AAO1NgADtTcAA7U5AAO1OgADtbUAA7W3AAO1uQADtbsAA7W+AAO1vwADtcAAA7XBAAO1wgADtcQAA7XGAAO1xwADtcgAA7XKAAO1ywADtkYAA7ZIAAO2SwADtk0AA7ZQAAO2UQADtlIAA7ZTAAO2VAADtlYAA7ZYAAO2WQADtloAA7ZcAAO2XQADtnYAA7Z3AAO2eAADtnoAA7b1AAO29wADtvkAA7b7AAO2/gADtv8AA7cAAAO3AQADtwIAA7cEAAO3BgADtwcAA7cIAAO3CgADtwsAA7eGAAO3iAADt4oAA7eMAAO3jwADt5AAA7eRAAO3kgADt5MAA7eVAAO3lwADt5gAA7eZAAO3mwADt5wAA7gXAAO4GQADuBsAA7gdAAO4IAADuCEAA7giAAO4IwADuCQAA7gmAAO4KAADuCkAA7gqAAO4LAADuC0AA7ioAAO4qgADuKwAA7iuAAO4sQADuLIAA7izAAO4tAADuLUAA7i3AAO4uQADuLoAA7i7AAO4vQADuL4AA7k5AAO5OwADuT0AA7k/AAO5QgADuUMAA7lEAAO5RQADuUYAA7lIAAO5SgADuUsAA7lMAAO5TgADuU8AA7mYAAO5vAADueMAA7oHAAO6CgADugwAA7oOAAO6EAADuhIAA7oUAAO6FQADuhgAA7oxAAO6TgADulAAA7pSAAO6VAADulYAA7pYAAO6WgADulwAA7p5AAO6fAADun8AA7qCAAO6hQADuogAA7qLAAO6jgADupAAA7sLAAO7DQADuxAAA7sSAAO7FQADuxYAA7sXAAO7GAADuxkAA7sbAAO7HQADux4AA7sfAAO7IQADuyIAA7udAAO7nwADu6EAA7ujAAO7pgADu6cAA7uoAAO7qQADu6oAA7usAAO7rgADu68AA7uwAAO7sgADu7MAA7wuAAO8MAADvDIAA7w0AAO8NwADvDgAA7w5AAO8OgADvDsAA7w9AAO8PwADvEAAA7xBAAO8QwADvEQAA7y/AAO8wQADvMQAA7zGAAO8yQADvMoAA7zLAAO8zAADvM0AA7zPAAO80QADvNIAA7zTAAO81QADvNYAA71RAAO9UwADvVUAA71XAAO9WgADvVsAA71cAAO9XQADvV4AA71gAAO9YgADvWMAA71kAAO9ZgADvWcAA73iAAO95AADveYAA73oAAO96wADvewAA73tAAO97gADve8AA73xAAO98wADvfQAA731AAO99wADvfgAA75zAAO+dQADvncAA755AAO+fAADvn0AA75+AAO+fwADvoAAA76CAAO+hAADvoUAA76GAAO+iAADvokAA78cAAO/PwADv18AA79/AAO/gQADv4MAA7+FAAO/hwADv4oAA7+LAAO/jAADv48AA7+QAAO/kgADv5MAA7+VAAO/mAADv5kAA7+aAAO/nQADv54AA7+jAAO/vAADv8UAA7/HAAO/yQADv9IAA7/VAAO/2AADv9oAA8AjAAPARwADwG4AA8CSAAPAlQADwJcAA8CZAAPAmwADwJ0AA8CfAAPAoAADwKMAA8C8AAPA3QADwN8AA8DhAAPA4wADwOUAA8DnAAPA6QADwOsAA8DtAAPBDgADwREAA8EUAAPBFwADwRoAA8EdAAPBIAADwSMAA8EmAAPBKAADwaMAA8GlAAPBpwADwakAA8GsAAPBrQADwa4AA8GvAAPBsAADwbIAA8G0AAPBtQADwbYAA8G4AAPBuQADwjQAA8I2AAPCOAADwjoAA8I9AAPCPgADwj8AA8JAAAPCQQADwkMAA8JFAAPCRgADwkcAA8JJAAPCSgADwsUAA8LHAAPCygADwswAA8LPAAPC0AADwtEAA8LSAAPC0wADwtUAA8LXAAPC2AADwtkAA8LbAAPC3AADwvUAA8L2AAPC9wADwvkAA8N0AAPDdgADw3gAA8N6AAPDfQADw34AA8N/AAPDgAADw4EAA8ODAAPDhQADw4YAA8OHAAPDiQADw4oAA8QFAAPEBwADxAkAA8QLAAPEDgADxA8AA8QQAAPEEQADxBIAA8QUAAPEFgADxBcAA8QYAAPEGgADxBsAA8SWAAPEmAADxJoAA8ScAAPEnwADxKAAA8ShAAPEogADxKMAA8SlAAPEpwADxKgAA8SpAAPEqwADxKwAA8UnAAPFKQADxSsAA8UtAAPFMAADxTEAA8UyAAPFMwADxTQAA8U2AAPFOAADxTkAA8U6AAPFPAADxT0AA8W4AAPFugADxbwAA8W+AAPFwQADxcIAA8XDAAPFxAADxcUAA8XHAAPFyQADxcoAA8XLAAPFzQADxc4AA8YXAAPGOwADxmIAA8aGAAPGiQADxosAA8aNAAPGjwADxpEAA8aTAAPGlAADxpcAA8awAAPGzQADxs8AA8bRAAPG0wADxtUAA8bXAAPG2QADxtsAA8b4AAPG+wADxv4AA8cBAAPHBAADxwcAA8cKAAPHDQADxw8AA8eKAAPHjAADx44AA8eQAAPHkwADx5QAA8eVAAPHlgADx5cAA8eZAAPHmwADx5wAA8edAAPHnwADx6AAA8gbAAPIHQADyB8AA8ghAAPIJAADyCUAA8gmAAPIJwADyCgAA8gqAAPILAADyC0AA8guAAPIMAADyDEAA8isAAPIrgADyLAAA8iyAAPItQADyLYAA8i3AAPIuAADyLkAA8i7AAPIvQADyL4AA8i/AAPIwQADyMIAA8k9AAPJPwADyUEAA8lDAAPJRgADyUcAA8lIAAPJSQADyUoAA8lMAAPJTgADyU8AA8lQAAPJUgADyVMAA8nOAAPJ0AADydIAA8nUAAPJ1wADydgAA8nZAAPJ2gADydsAA8ndAAPJ3wADyeAAA8nhAAPJ4wADyeQAA8pfAAPKYQADymQAA8pmAAPKaQADymoAA8prAAPKbAADym0AA8pvAAPKcQADynIAA8pzAAPKdQADynYAA8qVAAPLEAADyxIAA8sUAAPLFgADyxkAA8saAAPLGwADyxwAA8sdAAPLHwADyyEAA8siAAPLIwADyyUAA8smAAPLuQADy9wAA8v8AAPMHAADzB4AA8wgAAPMIgADzCQAA8wnAAPMKAADzCkAA8wsAAPMLQADzC8AA8wwAAPMMgADzDUAA8w2AAPMNwADzDoAA8w7AAPMQAADzFkAA8xiAAPMZAADzGYAA8xvAAPMcgADzHUAA8x3AAPMwAADzOQAA80LAAPNLwADzTIAA800AAPNNgADzTgAA806AAPNPAADzT0AA81AAAPNWQADzXoAA818AAPNfgADzYAAA82CAAPNhAADzYYAA82IAAPNigADzasAA82uAAPNsQADzbQAA823AAPNugADzb0AA83AAAPNwwADzcUAA85AAAPOQgADzkQAA85GAAPOSQADzkoAA85LAAPOTAADzk0AA85PAAPOUQADzlIAA85TAAPOVQADzlYAA87RAAPO0wADztUAA87XAAPO2gADztsAA87cAAPO3QADzt4AA87gAAPO4gADzuMAA87kAAPO5gADzucAA89iAAPPZAADz2cAA89pAAPPbAADz20AA89uAAPPbwADz3AAA89yAAPPdAADz3UAA892AAPPeAADz3kAA8+SAAPPkwADz5QAA8+WAAPQEQAD0BMAA9AVAAPQFwAD0BoAA9AbAAPQHAAD0B0AA9AeAAPQIAAD0CIAA9AjAAPQJAAD0CYAA9AnAAPQogAD0KQAA9CmAAPQqAAD0KsAA9CsAAPQrQAD0K4AA9CvAAPQsQAD0LMAA9C0AAPQtQAD0LcAA9C4AAPRMwAD0TUAA9E3AAPROQAD0TwAA9E9AAPRPgAD0T8AA9FAAAPRQgAD0UQAA9FFAAPRRgAD0UgAA9FJAAPRxAAD0cYAA9HIAAPRygAD0c0AA9HOAAPRzwAD0dAAA9HRAAPR0wAD0dUAA9HWAAPR1wAD0dkAA9HaAAPSVQAD0lcAA9JZAAPSWwAD0l4AA9JfAAPSYAAD0mEAA9JiAAPSZAAD0mYAA9JnAAPSaAAD0moAA9JrAAPStAAD0tgAA9L/AAPTIwAD0yYAA9MoAAPTKgAD0ywAA9MuAAPTMAAD0zEAA9M0AAPTTQAD02oAA9NsAAPTbgAD03A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AA+VAAAPlQwAD5UQAA+VGAAPlRwAD5UkAA+VMAAPlTQAD5U4AA+VRAAPlUgAD5VcAA+VwAAPleQAD5XsAA+V9AAPlhgAD5YkAA+WMAAPljgAD5dcAA+X7AAPmIgAD5kYAA+ZJAAPmSwAD5k0AA+ZPAAPmUQAD5lMAA+ZUAAPmVwAD5nAAA+aRAAPmkwAD5pUAA+aXAAPmmQAD5psAA+adAAPmnwAD5qEAA+bCAAPmxQAD5sgAA+bLAAPmzgAD5tEAA+bUAAPm1wAD5toAA+bcAAPnVwAD51kAA+dbAAPnXQAD52AAA+dhAAPnYgAD52MAA+dkAAPnZgAD52gAA+dpAAPnagAD52wAA+dtAAPn6AAD5+oAA+fsAAPn7gAD5/EAA+fyAAPn8wAD5/QAA+f1AAPn9wAD5/kAA+f6AAPn+wAD5/0AA+f+AAPoeQAD6HsAA+h+AAPogAAD6IMAA+iEAAPohQAD6IYAA+iHAAPoiQAD6IsAA+iMAAPojQAD6I8AA+iQAAPoqQAD6KoAA+irAAPorQAD6SgAA+kqAAPpLAAD6S4AA+kxAAPpMgAD6TMAA+k0AAPpNQAD6TcAA+k5AAPpOgAD6TsAA+k9AAPpPgAD6bkAA+m7AAPpvQAD6b8AA+nCAAPpwwAD6cQAA+nFAAPpxgAD6cgAA+nKAAPpywAD6cwAA+nOAAPpzwAD6koAA+pMAAPqTgAD6lAAA+pTAAPqVAAD6lUAA+pWAAPqVwAD6lkAA+pbAAPqXAAD6l0AA+pfAAPqYAAD6tsAA+rdAAPq3wAD6uEAA+rkAAPq5QAD6uYAA+rnAAPq6AAD6uoAA+rsAAPq7QAD6u4AA+rwAAPq8QAD62wAA+tuAAPrcAAD63IAA+t1AAPrdgAD63cAA+t4AAPreQAD63sAA+t9AAPrfgAD638AA+uBAAPrggAD68sAA+vvAAPsFgAD7DoAA+w9AAPsPwAD7EEAA+xDAAPsRQAD7EcAA+xIAAPsSwAD7GQAA+yBAAPsgwAD7IUAA+yHAAPsiQAD7IsAA+yNAAPsjwAD7KwAA+yvAAPssgAD7LUAA+y4AAPsuwAD7L4AA+zBAAPswwAD7T4AA+1AAAPtQgAD7UQAA+1HAAPtSAAD7UkAA+1KAAPtSwAD7U0AA+1PAAPtUAAD7VEAA+1TAAPtVAAD7c8AA+3RAAPt0wAD7dU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AA/+IAAP/qQAD/6sAA/+tAAP/rwAD/7EAA/+zAAP/tQAD/7cAA/+5AAP/2gAD/90AA//gAAP/4wAD/+YAA//pAAP/7AAD/+8AA//yAAP/9AAEAG8ABABxAAQAcwAEAHUABAB4AAQAeQAEAHoABAB7AAQAfAAEAH4ABACAAAQAgQAEAIIABACEAAQAhQAEAQAABAECAAQBBAAEAQYABAEJAAQBCgAEAQsABAEMAAQBDQAEAQ8ABAERAAQBEgAEARMABAEVAAQBFgAEAZEABAGTAAQBlgAEAZgABAGbAAQBnAAEAZ0ABAGeAAQBnwAEAaEABAGjAAQBpAAEAaUABAGnAAQBqAAEAcEABAHCAAQBwwAEAcUABAJAAAQCQgAEAkQABAJGAAQCSQAEAkoABAJLAAQCTAAEAk0ABAJPAAQCUQAEAlIABAJTAAQCVQAEAlYABALRAAQC0wAEAtUABALXAAQC2gAEAtsABALcAAQC3QAEAt4ABALgAAQC4gAEAuMABALkAAQC5gAEAucABANiAAQDZAAEA2YABANoAAQDawAEA2wABANtAAQDbgAEA28ABANxAAQDcwAEA3QABAN1AAQDdwAEA3gABAPzAAQD9QAEA/cABAP5AAQD/AAEA/0ABAP+AAQD/wAEBAAABAQCAAQEBAAEBAUABAQGAAQECAAEBAkABASEAAQEhgAEBIgABASKAAQEjQAEBI4ABASPAAQEkAAEBJEABASTAAQElQAEBJYABASXAAQEmQAEBJoABATjAAQFBwAEBS4ABAVSAAQFVQAEBVcABAVZAAQFWwAEBV0ABAVfAAQFYAAEBWMABAV8AAQFmQAEBZsABAWdAAQFnwAEBaEABAWjAAQFpQAEBacABAXEAAQFxwAEBcoABAXNAAQF0AAEBdMABAXWAAQF2QAEBdsABAZWAAQGWAAEBloABAZcAAQGXwAEBmAABAZhAAQGYgAEBmMABAZlAAQGZwAEBmgABAZpAAQGawAEBmwABAbnAAQG6QAEBusABAbtAAQG8AAEBvEABAbyAAQG8wAEBvQABAb2AAQG+AAEBvkABAb6AAQG/AAEBv0ABAd4AAQHegAEB3wABAd+AAQHgQAEB4IABAeDAAQHhAAEB4UABAeHAAQHiQAEB4oABAeLAAQHjQAEB44ABAgJAAQICwAECA4ABAgQAAQIEwAECBQABAgVAAQIFgAECBcABAgZAAQIGwAECBwABAgdAAQIHwAECCAABAibAAQInQAECJ8ABAihAAQIpAAECKUABAimAAQIpwAECKgABAiqAAQIrAAECK0ABAiuAAQIsAAECLEABAksAAQJLgAECTAABAkyAAQJNQAECTYABAk3AAQJOAAECTkABAk7AAQJPQAECT4ABAk/AAQJQQAECUIABAm9AAQJvwAECcEABAnDAAQJxgAECccABAnIAAQJyQAECcoABAnMAAQJzgAECc8ABAnQAAQJ0gAECdMABApmAAQKiQAECqkABArJAAQKywAECs0ABArPAAQK0QAECtQABArVAAQK1gAECtkABAraAAQK3AAECt0ABArfAAQK4gAECuMABArkAAQK5wAECugABArtAAQLBgAECw8ABAsRAAQLEwAECxwABAsfAAQLIgAECyQABAttAAQLkQAEC7gABAvcAAQL3wAEC+EABAvjAAQL5QAEC+cABAvpAAQL6gAEC+0ABAwGAAQMJwAEDCkABAwrAAQMLQAEDC8ABAwxAAQMMwAEDDUABAw3AAQMWAAEDFsABAxeAAQMYQAEDGQABAxnAAQMagAEDG0ABAxwAAQMcgAEDO0ABAzvAAQM8QAEDPMABAz2AAQM9wAEDPgABAz5AAQM+gAEDPwABAz+AAQM/wAEDQAABA0CAAQNAwAEDX4ABA2AAAQNggAEDYQABA2HAAQNiAAEDYkABA2KAAQNiwAEDY0ABA2PAAQNkAAEDZEABA2TAAQNlAAEDg8ABA4RAAQOFAAEDhYABA4ZAAQOGgAEDhsABA4cAAQOHQAEDh8ABA4hAAQOIgAEDiMABA4lAAQOJgAEDj8ABA5AAAQOQQAEDkMABA6+AAQOwAAEDsIABA7EAAQOxwAEDsgABA7JAAQOygAEDssABA7NAAQOzwAEDtAABA7RAAQO0wAEDtQABA9PAAQPUQAED1MABA9VAAQPWAAED1kABA9aAAQPWwAED1wABA9eAAQPYAAED2EABA9iAAQPZAAED2UABA/gAAQP4gAED+QABA/mAAQP6QAED+oABA/rAAQP7AAED+0ABA/vAAQP8QAED/IABA/zAAQP9QAED/YABBBxAAQQcwAEEHUABBB3AAQQegAEEHsABBB8AAQQfQAEEH4ABBCAAAQQggAEEIMABBCEAAQQhgAEEIc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ABDSaAAQ0nQAENLYABDTTAAQ01QAENNcABDTZAAQ02wAENN0ABDTfAAQ04QAENP4ABDUBAAQ1BAAENQcABDUKAAQ1DQAENRAABDUTAAQ1FQAENZAABDWSAAQ1lAAENZYABDWZAAQ1mgAENZsABDWcAAQ1nQAENZ8ABDWhAAQ1ogAENaMABDWlAAQ1pgAENiEABDYjAAQ2JQAENicABDYqAAQ2KwAENiwABDYtAAQ2LgAENjAABDYyAAQ2MwAENjQABDY2AAQ2NwAENrIABDa0AAQ2tgAENrgABDa7AAQ2vAAENr0ABDa+AAQ2vwAENsEABDbDAAQ2xAAENsUABDbHAAQ2yAAEN0MABDdFAAQ3RwAEN0kABDdMAAQ3TQAEN04ABDdPAAQ3UAAEN1IABDdUAAQ3VQAEN1YABDdYAAQ3WQAEN9QABDfWAAQ32AAEN9oABDfdAAQ33gAEN98ABDfgAAQ34QAEN+MABDflAAQ35gAEN+cABDfpAAQ36gAEOGUABDhnAAQ4agAEOGwABDhvAAQ4cAAEOHEABDhyAAQ4cwAEOHUABDh3AAQ4eAAEOHkABDh7AAQ4fAAEOIsABDkGAAQ5CAAEOQoABDkMAAQ5DwAEORAABDkRAAQ5EgAEORMABDkVAAQ5FwAEORgABDkZAAQ5GwAEORwABDmvAAQ50gAEOfIABDoSAAQ6FAAEOhYABDoYAAQ6GgAEOh0ABDoeAAQ6HwAEOiIABDojAAQ6JQAEOiYABDopAAQ6LAAEOi0ABDouAAQ6MQAEOjIABDo7AAQ6VAAEOl0ABDpfAAQ6YgAEOmsABDpuAAQ6cQAEOnMABDq8AAQ64AAEOwcABDsrAAQ7LgAEOzAABDsyAAQ7NAAEOzYABDs4AAQ7OQAEOzwABDtVAAQ7dgAEO3gABDt6AAQ7fAAEO34ABDuAAAQ7ggAEO4QABDuGAAQ7pwAEO6oABDutAAQ7sAAEO7MABDu2AAQ7uQAEO7wABDu/AAQ7wQAEPDwABDw+AAQ8QAAEPEIABDxFAAQ8RgAEPEcABDxIAAQ8SQAEPEsABDxNAAQ8TgAEPE8ABDxRAAQ8UgAEPM0ABDzPAAQ80QAEPNMABDzWAAQ81wAEPNgABDzZAAQ82gAEPNwABDzeAAQ83wAEPOAABDziAAQ84wAEPV4ABD1gAAQ9YwAEPWUABD1oAAQ9aQAEPWoABD1rAAQ9bAAEPW4ABD1wAAQ9cQAEPXIABD10AAQ9dQAEPY4ABD2PAAQ9kAAEPZIABD4NAAQ+DwAEPhEABD4TAAQ+FgAEPhcABD4YAAQ+GQAEPhoABD4cAAQ+HgAEPh8ABD4gAAQ+IgAEPiMABD6eAAQ+oAAEPqIABD6kAAQ+pwAEPqgABD6pAAQ+qgAEPqsABD6tAAQ+rwAEPrAABD6xAAQ+swAEPrQABD8vAAQ/MQAEPzMABD81AAQ/OAAEPzkABD86AAQ/OwAEPzwABD8+AAQ/QAAEP0EABD9CAAQ/RAAEP0UABD/AAAQ/wgAEP8QABD/GAAQ/yQAEP8oABD/LAAQ/zAAEP80ABD/PAAQ/0QAEP9IABD/TAAQ/1QAEP9YABEBRAARAUwAEQFUABEBXAARAWgAEQFsABEBcAARAXQAEQF4ABEBgAARAYgAEQGMABEBkAARAZgAEQGcABECwAARA1AAEQPsABEEfAARBIgAEQSUABEEnAARBKQAEQSsABEEtAARBLgAEQTEABEFKAARBZwAEQWoABEFtAARBcAAEQXMABEF2AARBeQAEQXwABEGZAARBnAAEQZ8ABEGiAARBpQAEQagABEGrAARBrgAEQbAABEIrAARCLQAEQjAABEIyAARCNQAEQjYABEI3AARCOAAEQjkABEI7AARCPgAEQj8ABEJAAARCQgAEQkMABEK+AARCwAAEQsMABELFAARCyAAEQskABELKAARCywAEQswABELOAARC0QAEQtIABELTAARC1QAEQtYABENRAARDUwAEQ1YABENYAARDWwAEQ1wABENdAARDXgAEQ18ABENhAARDZAAEQ2UABENmAARDaAAEQ2kABEPkAARD5gAEQ+kABEPrAARD7gAEQ+8ABEPwAARD8QAEQ/IABEP0AARD9wAEQ/gABEP5AARD+wAEQ/wABER/AAREowAERMcABETqAARFEQAERTEABEVYAARFfwAERZ8ABEXDAARF5wAERekABEXsAARF7gAERfAABEXyAARF9QAERfgABEX6AARF/AAERf8ABEYBAARGAwAERgYABEYJAARGCgAERg8ABEYoAARGLQAERi8ABEY0AARGNwAERjkABEaCAARGpgAERs0ABEbxAARG9AAERvYABEb4AARG+gAERvwABEb+AARG/wAERwIABEcbAARHQAAER0IABEdEAARHRgAER0gABEdKAARHTAAER04ABEdQAARHUgAER3cABEd6AARHfQAER4AABEeDAARHhgAER4kABEeMAARHjwAER5IABEeUAARIDwAESBEABEgUAARIFgAESBkABEgaAARIGwAESBwABEgdAARIHwAESCEABEgiAARIIwAESCUABEgmAARINwAESDgABEg6AARItQAESLcABEi5AARIuwAESL4ABEi/AARIwAAESMEABEjCAARIxAAESMYABEjHAARIyAAESMoABEjLAARJRgAESUgABElLAARJTQAESVAABElRAARJUgAESVMABElUAARJVgAESVgABElZAARJWgAESVwABEldAARJbgAESW8ABElxAARJ7AAESe4ABEnwAARJ8gAESfUABEn2AARJ9wAESfgABEn5AARJ+wAESf0ABEn+AARJ/wAESgEABEoCAARKfQAESn8ABEqCAARKhAAESocABEqIAARKiQAESooABEqLAARKjQAESo8ABEqQAARKkQAESpMABEqUAARKpQAESqYABEqoAARLIwAESyUABEsnAARLKQAESywABEstAARLLgAESy8ABEswAARLMgAESzQABEs1AARLNgAESzgABEs5AARLtAAES7YABEu5AARLuwAES74ABEu/AARLwAAES8EABEvCAARLxAAES8YABEvHAARLyAAES8oABEvLAARL5AAES+UABEvmAARL6AAETGMABExlAARMZwAETGkABExsAARMbQAETG4ABExvAARMcAAETHIABEx0AARMdQAETHYABEx4AARMeQAETPQABEz2AARM+QAETPsABEz+AARM/wAETQAABE0BAARNAgAETQQABE0GAARNBwAETQgABE0KAARNCwAETR0ABE02AARNdQAETXgABE17AARNfgAETYEABE2EAARNhwAETYoABE2NAARNkAAETZMABE2WAARNmQAETZwABE2fAARNogAETeEABE3kAARN5wAETeoABE3tAARN8AAETfMABE32AARN+QAETfwABE3/AAROAgAETgUABE4IAAROCwAETg4ABE4QAAROHgAETjoABE5SAAROZQAETm0ABE57AAROlgAETq4ABE65AAROyAAETuMABE74AARPEQAETyoABE84AARPywAET+4ABFAOAARQLgAEUDAABFAyAARQNAAEUDYABFA5AARQOgAEUDsABFA+AARQPwAEUEEABFBCAARQRAAEUEcABFBIAARQSQAEUEwABFBNAARQUgAEUGsABFB0AARQdgAEUHgABFCBAARQhAAEUIcABFCJAARQ0gAEUPYABFEdAARRQQAEUUQABFFGAARRSAAEUUoABFFMAARRTgAEUU8ABFFSAARRawAEUYwABFGOAARRkAAEUZIABFGUAARRlgAEUZgABFGaAARRnAAEUb0ABFHAAARRwwAEUcYABFHJAARRzAAEUc8ABFHSAARR1QAEUdcABFJSAARSVAAEUlYABFJYAARSWwAEUlwABFJdAARSXgAEUl8ABFJhAARSYwAEUmQABFJlAARSZwAEUmgABFLjAARS5QAEUucABFLpAARS7AAEUu0ABFLuAARS7wAEUvAABFLyAARS9AAEUvUABFL2AARS+AAEUvkABFN0AARTdgAEU3kABFN7AARTfgAEU38ABFOAAARTgQAEU4IABFOEAARThgAEU4cABFOIAARTigAEU4sABFOkAARTpQAEU6YABFOoAARUIwAEVCUABFQnAARUKQAEVCwABFQtAARULgAEVC8ABFQwAARUMgAEVDQABFQ1AARUNgAEVDgABFQ5AARUtAAEVLYABFS4AARUugAEVL0ABFS+AARUvwAEVMAABFTBAARUwwAEVMUABFTGAARUxwAEVMkABFTKAARVRQAEVUcABFVJAARVSwAEVU4ABFVPAARVUAAEVVEABFVSAARVVAAEVVYABFVXAARVWAAEVVoABFVbAARV1gAEVdgABFXaAARV3AAEVd8ABFXgAARV4QAEVeIABFXjAARV5QAEVecABFXoAARV6QAEVesABFXsAARWZwAEVmkABFZrAARWbQAEVnAABFZxAARWcgAEVnMABFZ0AARWdgAEVngABFZ5AARWegAEVnwABFZ9AARWxgAEVuoABFcRAARXNQAEVzgABFc6AARXPAAEVz4ABFdAAARXQgAEV0MABFdGAARXXwAEV3wABFd+AARXgAAEV4IABFeEAARXhgAEV4gABFeKAARXpwAEV6oABFetAARXsAAEV7MABFe2AARXuQAEV7wABFe+AARYOQAEWDsABFg9AARYPwAEWEIABFhDAARYRAAEWEUABFhGAARYSAAEWEoABFhLAARYTAAEWE4ABFhPAARYygAEWMwABFjOAARY0AAEWNMABFjUAARY1QAEWNYABFjXAARY2QAEWNsABFjcAARY3QAEWN8ABFjgAARZWwAEWV0ABFlfAARZYQAEWWQABFllAARZZgAEWWcABFloAARZagAEWWwABFltAARZbgAEWXAABFlxAARZ7AAEWe4ABFnxAARZ8wAEWfYABFn3AARZ+AAEWfkABFn6AARZ/AAEWf4ABFn/AARaAAAEWgIABFoDAARaBgAEWoEABFqDAARahQAEWocABFqKAARaiwAEWowABFqNAARajgAEWpAABFqSAARakwAEWpQABFqWAARalwAEWxIABFsUAARbFgAEWxgABFsbAARbHAAEWx0ABFseAARbHwAEWyEABFsjAARbJAAEWyUABFsnAARbKAAEW6MABFulAARbpwAEW6kABFusAARbrQAEW64ABFuvAARbsAAEW7IABFu0AARbtQAEW7YABFu4AARbuQAEXEwABFxvAARcjwAEXK8ABFyxAARcswAEXLUABFy3AARcugAEXLsABFy8AARcvwAEXMAABFzCAARcwwAEXMUABFzIAARcyQAEXMoABFzNAARczgAEXNcABFzwAARc+QAEXPsABFz9AARdBgAEXQkABF0MAARdDgAEXVcABF17AARdogAEXcYABF3JAARdywAEXc0ABF3PAARd0QAEXdMABF3UAARd1wAEXfAABF4RAAReEwAEXhUABF4XAAReGQAEXhsABF4dAAReHwAEXiEABF5CAAReRQAEXkgABF5LAAReTgAEXlEABF5UAAReVwAEXloABF5cAARe1wAEXtkABF7bAARe3QAEXuAABF7hAARe4gAEXuMABF7kAARe5gAEXugABF7pAARe6gAEXuwABF7tAARfaAAEX2oABF9sAARfbgAEX3EABF9yAARfcwAEX3QABF91AARfdwAEX3kABF96AARfewAEX30ABF9+AARf+QAEX/sABF/+AARgAAAEYAMABGAEAARgBQAEYAYABGAHAARgCQAEYAsABGAMAARgDQAEYA8ABGAQAARgKQAEYCoABGArAARgLQAEYKgABGCqAARgrAAEYK4ABGCxAARgsgAEYLMABGC0AARgtQAEYLcABGC5AARgugAEYLsABGC9AARgvgAEYTkABGE7AARhPQAEYT8ABGFCAARhQwAEYUQABGFFAARhRgAEYUgABGFKAARhSwAEYUwABGFOAARhTwAEYcoABGHMAARhzgAEYdAABGHTAARh1AAEYdUABGHWAARh1wAEYdkABGHbAARh3AAEYd0ABGHfAARh4AAEYlsABGJdAARiXwAEYmEABGJkAARiZQAEYmYABGJnAARiaAAEYmoABGJsAARibQAEYm4ABGJwAARicQAEYuwABGLuAARi8AAEYvIABGL1AARi9gAEYvcABGL4AARi+QAEYvsABGL9AARi/gAEYv8ABGMBAARjAgAEY0sABGNvAARjlgAEY7oABGO9AARjvwAEY8EABGPDAARjxQAEY8cABGPIAARjywAEY+QABGQBAARkAwAEZAUABGQHAARkCQAEZAsABGQNAARkDwAEZCwABGQvAARkMgAEZDUABGQ4AARkOwAEZD4ABGRBAARkQwAEZL4ABGTAAARkwwAEZMUABGTIAARkyQAEZMoABGTLAARkzAAEZM4ABGTQAARk0QAEZNIABGTUAARk1QAEZVAABGVSAARlVAAEZVYABGVZAARlWgAEZVsABGVcAARlXQAEZV8ABGVhAARlYgAEZWMABGVlAARlZgAEZeEABGXjAARl5QAEZecABGXqAARl6wAEZewABGXtAARl7gAEZfAABGXyAARl8wAEZfQABGX2AARl9wAEZnIABGZ0AARmdwAEZnkABGZ8AARmfQAEZn4ABGZ/AARmgAAEZoIABGaEAARmhQAEZoYABGaIAARmiQAEZwQABGcGAARnCAAEZwoABGcNAARnDgAEZw8ABGcQAARnEQAEZxMABGcVAARnFgAEZxcABGcZAARnGgAEZ5UABGeXAARnmQAEZ5sABGeeAARnnwAEZ6AABGehAARnogAEZ6QABGemAARnpwAEZ6gABGeqAARnqwAEaCYABGgoAARoKgAEaCwABGgvAARoMAAEaDEABGgyAARoMwAEaDUABGg3AARoOAAEaDkABGg7AARoPAAEaM8ABGjyAARpEgAEaTIABGk0AARpNgAEaTgABGk6AARpPQAEaT4ABGk/AARpQgAEaUMABGlFAARpRgAEaUgABGlLAARpTAAEaU0ABGlQAARpUQAEaVYABGlvAARpeAAEaXoABGl8AARphQAEaYgABGmLAARpjQAEadYABGn6AARqIQAEakUABGpIAARqSgAEakwABGpOAARqUAAEalIABGpTAARqVgAEam8ABGqQAARqkgAEapQABGqWAARqmAAEapoABGqcAARqngAEaqAABGrBAARqxAAEascABGrKAARqzQAEatAABGrTAARq1gAEatkABGrbAARrVgAEa1gABGtaAARrXAAEa18ABGtgAARrYQAEa2IABGtjAARrZQAEa2cABGtoAARraQAEa2sABGtsAARr5wAEa+kABGvrAARr7QAEa/AABGvxAARr8gAEa/MABGv0AARr9gAEa/gABGv5AARr+gAEa/wABGv9AARseAAEbHoABGx9AARsfwAEbIIABGyDAARshAAEbIUABGyGAARsiAAEbIoABGyLAARsjAAEbI4ABGyPAARsqAAEbKkABGyqAARsrAAEbScABG0pAARtKwAEbS0ABG0wAARtMQAEbTIABG0zAARtNAAEbTYABG04AARtOQAEbToABG08AARtPQAEbbgABG26AARtvAAEbb4ABG3BAARtwgAEbcMABG3EAARtxQAEbccABG3JAARtygAEbcsABG3NAARtzgAEbkkABG5LAARuTQAEbk8ABG5SAARuUwAEblQABG5VAARuVgAEblgABG5aAARuWwAEblwABG5eAARuXwAEbtoABG7cAARu3gAEbuAABG7jAARu5AAEbuUABG7mAARu5wAEbukABG7rAARu7AAEbu0ABG7vAARu8AAEb2sABG9tAARvbwAEb3EABG90AARvdQAEb3YABG93AARveAAEb3oABG98AARvfQAEb34ABG+AAARvgQAEb8oABG/uAARwFQAEcDkABHA8AARwPgAEcEAABHBCAARwRAAEcEYABHBHAARwSgAEcGMABHCAAARwggAEcIQABHCGAARwiAAEcIoABHCMAARwjgAEcKsABHCuAARwsQAEcLQABHC3AARwugAEcL0ABHDAAARwwgAEcT0ABHE/AARxQQAEcUMABHFGAARxRwAEcUgABHFJAARxSgAEcUwABHFOAARxTwAEcVAABHFSAARxUwAEcc4ABHHQAARx0gAEcdQABHHXAARx2AAEcdkABHHaAARx2wAEcd0ABHHfAARx4AAEceEABHHjAARx5AAEcl8ABHJhAARyYwAEcmUABHJoAARyaQAEcmoABHJrAARybAAEcm4ABHJwAARycQAEcnIABHJ0AARydQAEcvAABHLyAARy9QAEcvcABHL6AARy+wAEcvwABHL9AARy/gAEcwAABHMCAARzAwAEcwQABHMGAARzBwAEc4IABHOEAARzhgAEc4gABHOLAARzjAAEc40ABHOOAARzjwAEc5EABHOTAARzlAAEc5UABHOXAARzmAAEdBMABHQVAAR0FwAEdBkABHQcAAR0HQAEdB4ABHQfAAR0IAAEdCIABHQkAAR0JQAEdCYABHQoAAR0KQAEdKQABHSmAAR0qAAEdKoABHStAAR0rgAEdK8ABHSwAAR0sQAEdLMABHS1AAR0tgAEdLcABHS5AAR0ugAEdU0ABHVwAAR1kAAEdbAABHWyAAR1tAAEdbYABHW4AAR1uwAEdbwABHW9AAR1wAAEdcEABHXDAAR1xAAEdccABHXKAAR1ywAEdcwABHXPAAR10AAEddkABHXyAAR1+wAEdf0ABHYAAAR2CQAEdgwABHYPAAR2EQAEdloABHZ+AAR2pQAEdskABHbMAAR2zgAEdtAABHbSAAR21AAEdtYABHbXAAR22gAEdvMABHcUAAR3FgAEdxgABHcaAAR3HAAEdx4ABHcgAAR3IgAEdyQABHdFAAR3SAAEd0sABHdOAAR3UQAEd1QABHdXAAR3WgAEd10ABHdfAAR32gAEd9wABHfeAAR34AAEd+MABHfkAAR35QAEd+YABHfnAAR36QAEd+sABHfsAAR37QAEd+8ABHfwAAR4awAEeG0ABHhvAAR4cQAEeHQABHh1AAR4dgAEeHcABHh4AAR4egAEeHwABHh9AAR4fgAEeIAABHiBAAR4/AAEeP4ABHkBAAR5AwAEeQYABHkHAAR5CAAEeQkABHkKAAR5DAAEeQ4ABHkPAAR5EAAEeRIABHkTAAR5LAAEeS0ABHkuAAR5MAAEeasABHmtAAR5rwAEebEABHm0AAR5tQAEebYABHm3AAR5uAAEeboABHm8AAR5vQAEeb4ABHnAAAR5wQAEejwABHo+AAR6QAAEekIABHpFAAR6RgAEekcABHpIAAR6SQAEeksABHpNAAR6TgAEek8ABHpRAAR6UgAEes0ABHrPAAR60QAEetMABHrWAAR61wAEetgABHrZAAR62gAEetwABHreAAR63wAEeuAABHriAAR64wAEe14ABHtgAAR7YgAEe2QABHtnAAR7aAAEe2kABHtqAAR7awAEe20ABHtvAAR7cAAEe3EABHtzAAR7dAAEe+8ABHvxAAR78wAEe/UABHv4AAR7+QAEe/oABHv7AAR7/AAEe/4ABHwAAAR8AQAEfAIABHwEAAR8BQAEfE4ABHxyAAR8mQAEfL0ABHzAAAR8wwAEfMUABHzHAAR8yQAEfMsABHzMAAR8zwAEfOgABH0FAAR9CAAEfQsABH0OAAR9EQAEfRQABH0XAAR9GgAEfTcABH06AAR9PQAEfUAABH1DAAR9RgAEfUkABH1MAAR9TgAEfckABH3LAAR9zgAEfdAABH3TAAR91AAEfdUABH3WAAR91wAEfdkABH3cAAR93QAEfd4ABH3gAAR94QAEflwABH5eAAR+YQAEfmMABH5mAAR+ZwAEfmgABH5pAAR+agAEfmwABH5vAAR+cAAEfnEABH5zAAR+dAAEfu8ABH7xAAR+9AAEfvYABH75AAR++gAEfvsABH78AAR+/QAEfv8ABH8CAAR/AwAEfwQABH8GAAR/BwAEf4IABH+EAAR/hwAEf4kABH+MAAR/jQAEf44ABH+PAAR/kAAEf5IABH+VAAR/lgAEf5cABH+ZAAR/mgAEgB0ABIBBAASAZQAEgIgABICvAASAzwAEgPYABIEdAASBPQAEgWEABIGFAASBhwAEgYoABIGMAASBjgAEgZAABIGTAASBlgAEgZgABIGaAASBnQAEgZ8ABIGhAASBpAAEgacABIGoAASBrQAEgcYABIHLAASBzQAEgdIABIHVAASB1wAEgiAABIJEAASCawAEgo8ABIKSAASClAAEgpYABIKYAASCmgAEgpwABIKdAASCoAAEgrkABILeAASC4AAEguIABILkAASC5gAEgugABILqAASC7AAEgu4ABILwAASDFQAEgxgABIMbAASDHgAEgyEABIMkAASDJwAEgyoABIMtAASDMAAEgzIABIOtAASDrwAEg7IABIO0AASDtwAEg7gABIO5AASDugAEg7sABIO9AASDvwAEg8AABIPBAASDwwAEg8QABIPVAASD1gAEg9gABIRTAASEVQAEhFcABIRZAASEXAAEhF0ABIReAASEXwAEhGAABIRiAASEZAAEhGUABIRmAASEaAAEhGkABITkAASE5gAEhOkABITrAASE7gAEhO8ABITwAASE8QAEhPIABIT0AASE9gAEhPcABIT4AASE+gAEhPsABIUMAASFDQAEhQ8ABIWKAASFjAAEhY4ABIWQAASFkwAEhZQABIWVAASFlgAEhZcABIWZAASFmwAEhZwABIWdAASFnwAEhaAABIYbAASGHQAEhiAABIYiAASGJQAEhiYABIYnAASGKAAEhikABIYrAASGLQAEhi4ABIYvAASGMQAEhjIABIZDAASGRAAEhkYABIbBAASGwwAEhsUABIbHAASGygAEhssABIbMAASGzQAEhs4ABIbQAASG0gAEhtMABIbUAASG1gAEhtcABIdSAASHVAAEh1cABIdZAASHXAAEh10ABIdeAASHXwAEh2AABIdiAASHZAAEh2UABIdmAASHaAAEh2kABIeCAASHgwAEh4QABIeGAASIAQAEiAMABIgFAASIBwAEiAoABIgLAASIDAAEiA0ABIgOAASIEAAEiBIABIgTAASIFAAEiBYABIgXAASIkgAEiJQABIiXAASImQAEiJwABIidAASIngAEiJ8ABIigAASIogAEiKQABIilAASIpgAEiKgABIipAASIwAAEiNkABIjqAASI7QAEiPAABIjzAASI9gAEiQcABIkKAASJDQAEiRAABIkTAASJFQAEiScABIk2AASJSwAEiWIABIn1AASKGAAEijgABIpYAASKWgAEilwABIpeAASKYAAEimMABIpkAASKZQAEimgABIppAASKawAEimwABIpvAASKcgAEinMABIp0AASKdwAEingABIp9AASKlgAEip8ABIqhAASKpAAEiq0ABIqwAASKswAEirUABIr+AASLIgAEi0kABIttAASLcAAEi3IABIt0AASLdgAEi3gABIt6AASLewAEi34ABIuXAASLuAAEi7oABIu8AASLvgAEi8AABIvCAASLxAAEi8YABIvIAASL6QAEi+wABIvvAASL8gAEi/UABIv4AASL+wAEi/4ABIwBAASMAwAEjH4ABIyAAASMggAEjIQABIyHAASMiAAEjIkABIyKAASMiwAEjI0ABIyPAASMkAAEjJEABIyTAASMlAAEjQ8ABI0RAASNEwAEjRUABI0YAASNGQAEjRoABI0bAASNHAAEjR4ABI0gAASNIQAEjSIABI0kAASNJQAEjaAABI2iAASNpQAEjacABI2qAASNqwAEjawABI2tAASNrgAEjbAABI2yAASNswAEjbQABI22AASNtwAEjdAABI3RAASN0gAEjdQABI5PAASOUQAEjlMABI5VAASOWAAEjlkABI5aAASOWwAEjlwABI5eAASOYAAEjmEABI5iAASOZAAEjmUABI7gAASO4gAEjuQABI7mAASO6QAEjuoABI7rAASO7AAEju0ABI7vAASO8QAEjvIABI7zAASO9QAEjvYABI9xAASPcwAEj3UABI93AASPegAEj3sABI98AASPfQAEj34ABI+AAASPggAEj4MABI+EAASPhgAEj4cABJACAASQBAAEkAYABJAIAASQCwAEkAwABJANAASQDgAEkA8ABJARAASQEwAEkBQABJAVAASQFwAEkBgABJCTAASQlQAEkJcABJCZAASQnAAEkJ0ABJCeAASQnwAEkKAABJCiAASQpAAEkKUABJCmAASQqAAEkKkABJDyAASRFgAEkT0ABJFhAASRZAAEkWcABJFpAASRawAEkW0ABJFvAASRcAAEkXMABJGMAASRqQAEkawABJGvAASRsgAEkbUABJG4AASRuwAEkb4ABJHbAASR3gAEkeEABJHkAASR5wAEkeoABJHtAASR8AAEkfIABJJtAASSbwAEknIABJJ0AASSdwAEkngABJJ5AASSegAEknsABJJ9AASSgAAEkoEABJKCAASShAAEkoUABJMAAASTAgAEkwUABJMHAASTCgAEkwsABJMMAASTDQAEkw4ABJMQAASTEwAEkxQABJMVAASTFwAEkxgABJOTAASTlQAEk5gABJOaAASTnQAEk54ABJOfAASToAAEk6EABJOjAASTpgAEk6cABJOoAASTqgAEk6sABJQmAASUKAAElCsABJQtAASUMAAElDEABJQyAASUMwAElDQABJQ2AASUOQAElDoABJQ7AASUPQAElD4ABJTBAASU5QAElQkABJUsAASVUwAElXMABJWaAASVwQAEleEABJYFAASWKQAElisABJYuAASWMAAEljIABJY0AASWNwAEljoABJY8AASWPgAElkEABJZDAASWRQAElkgABJZLAASWTAAEllEABJZqAASWbwAElnEABJZ2AASWeQAElnsABJbEAASW6AAElw8ABJczAASXNgAElzgABJc6AASXPAAElz4ABJdAAASXQQAEl0QABJddAASXggAEl4QABJeGAASXiAAEl4oABJeMAASXjgAEl5AABJeSAASXlAAEl7kABJe8AASXvwAEl8IABJfFAASXyAAEl8sABJfOAASX0QAEl9QABJfWAASYUQAEmFMABJhWAASYWAAEmFsABJhcAASYXQAEmF4ABJhfAASYYQAEmGMABJhkAASYZQAEmGcABJhoAASYeQAEmHoABJh8AASY9wAEmPkABJj7AASY/QAEmQAABJkBAASZAgAEmQMABJkEAASZBgAEmQgABJkJAASZCgAEmQwABJkNAASZiAAEmYoABJmNAASZjwAEmZIABJmTAASZlAAEmZUABJmWAASZmAAEmZoABJmbAASZnAAEmZ4ABJmfAASZsAAEmbUABJm4AASZugAEmcsABJncAASZ3wAEmeIABJnlAASZ6AAEmeoABJoFAASaEQAEmh0ABJoqAASapQAEmqcABJqpAASaqwAEmq4ABJqvAASasAAEmrEABJqyAASatAAEmrYABJq3AASauAAEmroABJq7AASbNgAEmzgABJs7AASbPQAEm0AABJtBAASbQgAEm0MABJtEAASbRgAEm0gABJtJAASbSgAEm0wABJtNAASbXgAEm18ABJthAASb3AAEm94ABJvgAASb4gAEm+UABJvmAASb5wAEm+gABJvpAASb6wAEm+0ABJvuAASb7wAEm/EABJvyAAScbQAEnG8ABJxyAAScdAAEnHcABJx4AASceQAEnHoABJx7AAScfQAEnH8ABJyAAAScgQAEnIMABJyEAAScnQAEnJ4ABJyfAAScoQAEnRwABJ0eAASdIAAEnSIABJ0lAASdJgAEnScABJ0oAASdKQAEnSsABJ0tAASdLgAEnS8ABJ0xAASdMgAEna0ABJ2vAASdsgAEnbQABJ23AASduAAEnbkABJ26AASduwAEnb0ABJ2/AASdwAAEncEABJ3DAASdxAAEndMABJ3sAASePwAEnkIABJ5FAASeSAAEnksABJ5OAASeUQAEnlQABJ5XAASeWgAEnl0ABJ5gAASeYwAEnmYABJ5pAASebAAEnm8ABJ5yAASedQAEnngABJ57AASezgAEntEABJ7UAASe1wAEntoABJ7dAASe4AAEnuMABJ7mAASe6QAEnuwABJ7vAASe8gAEnvUABJ74AASe+wAEnv4ABJ8BAASfBAAEnwcABJ8KAASfDAAEnx4ABJ8zAASfOgAEn04ABJ9vAASfgwAEn5cABJ+2AASfwwAEn9UABJ/hAASgDwAEoBwABKA3AASgUgAEoF8ABKByAASgfgAEoJQABKCuAAShQQAEoWQABKGEAAShpAAEoaYABKGoAAShqgAEoawABKGvAAShsAAEobEABKG0AAShtQAEobcABKG4AAShuwAEob4ABKG/AAShwAAEocMABKHEAAShyQAEoeIABKHrAASh7QAEofAABKH5AASh/AAEof8ABKIBAASiSgAEom4ABKKVAASiuQAEorwABKK+AASiwAAEosIABKLEAASixgAEoscABKLKAASi4wAEowQABKMGAASjCAAEowoABKMMAASjDgAEoxAABKMSAASjFAAEozUABKM4AASjOwAEoz4ABKNBAASjRAAEo0cABKNKAASjTQAEo08ABKPKAASjzAAEo84ABKPQAASj0wAEo9QABKPVAASj1gAEo9cABKPZAASj2wAEo9wABKPdAASj3wAEo+AABKRbAASkXQAEpF8ABKRhAASkZAAEpGUABKRmAASkZwAEpGgABKRqAASkbAAEpG0ABKRuAASkcAAEpHEABKTsAASk7gAEpPEABKTzAASk9gAEpPcABKT4AASk+QAEpPoABKT8AASk/gAEpP8ABKUAAASlAgAEpQMABKUcAASlHQAEpR4ABKUgAASlmwAEpZ0ABKWfAASloQAEpaQABKWlAASlpgAEpacABKWoAASlqgAEpawABKWtAASlrgAEpbAABKWxAASmLAAEpi4ABKYwAASmMgAEpjUABKY2AASmNwAEpjgABKY5AASmOwAEpj0ABKY+AASmPwAEpkEABKZCAASmvQAEpr8ABKbBAASmwwAEpsYABKbHAASmyAAEpskABKbKAASmzAAEps4ABKbPAASm0AAEptIABKbTAASnTgAEp1AABKdSAASnVAAEp1cABKdYAASnWQAEp1oABKdbAASnXQAEp18ABKdgAASnYQAEp2MABKdkAASn3wAEp+EABKfjAASn5QAEp+gABKfpAASn6gAEp+sABKfsAASn7gAEp/AABKfxAASn8gAEp/QABKf1AASoPgAEqGIABKiJAASorQAEqLAABKizAASotQAEqLcABKi5AASouwAEqLwABKi/AASo2AAEqPUABKj4AASo+wAEqP4ABKkBAASpBAAEqQcABKkKAASpJwAEqSoABKktAASpMAAEqTMABKk2AASpOQAEqTwABKk+AASpuQAEqbsABKm+AASpwAAEqcMABKnEAASpxQAEqcYABKnHAASpyQAEqcwABKnNAASpzgAEqdAABKnRAASqTAAEqk4ABKpRAASqUwAEqlYABKpXAASqWAAEqlkABKpaAASqXAAEql8ABKpgAASqYQAEqmMABKpkAASq3wAEquEABKrkAASq5gAEqukABKrqAASq6wAEquwABKrtAASq7wAEqvIABKrzAASq9AAEqvYABKr3AASrcgAEq3QABKt3AASreQAEq3wABKt9AASrfgAEq38ABKuAAASrggAEq4UABKuGAASrhwAEq4kABKuKAASsBQAErAcABKwJAASsCwAErA4ABKwPAASsEAAErBEABKwSAASsFAAErBcABKwYAASsGQAErBsABKwcAASslwAErJkABKybAASsnQAErKAABKyhAASsogAErKMABKykAASspgAErKkABKyqAASsqwAErK0ABKyuAAStKQAErSsABK0uAAStMAAErTMABK00AAStNQAErTYABK03AAStOQAErTwABK09AAStPgAErUAABK1BAASt1AAErfcABK4XAASuNwAErjkABK47AASuPQAErj8ABK5CAASuQwAErkQABK5HAASuSAAErkoABK5LAASuTQAErlAABK5RAASuUgAErlUABK5WAASuWwAErnQABK59AASufwAEroEABK6KAASujQAErpAABK6SAASu2wAErv8ABK8mAASvSgAEr00ABK9PAASvUQAEr1MABK9VAASvVwAEr1gABK9bAASvdAAEr5UABK+XAASvmQAEr5sABK+dAASvnwAEr6EABK+jAASvpQAEr8YABK/JAASvzAAEr88ABK/SAASv1QAEr9gABK/bAASv3gAEr+AABLBbAASwXQAEsF8ABLBhAASwZAAEsGUABLBmAASwZwAEsGgABLBqAASwbAAEsG0ABLBuAASwcAAEsHEABLDsAASw7gAEsPAABLDyAASw9QAEsPYABLD3AASw+AAEsPkABLD7AASw/QAEsP4ABLD/AASxAQAEsQIABLF9AASxfwAEsYIABLGEAASxhwAEsYgABLGJAASxigAEsYsABLGNAASxjwAEsZAABLGRAASxkwAEsZQABLGtAASxrgAEsa8ABLGxAASyLAAEsi4ABLIwAASyMgAEsjUABLI2AASyNwAEsjgABLI5AASyOwAEsj0ABLI+AASyPwAEskEABLJCAASyvQAEsr8ABLLBAASywwAEssYABLLHAASyyAAEsskABLLKAASyzAAEss4ABLLPAASy0AAEstIABLLTAASzTgAEs1AABLNSAASzVAAEs1cABLNYAASzWQAEs1oABLNbAASzXQAEs18ABLNgAASzYQAEs2MABLNkAASz3wAEs+EABLPjAASz5QAEs+gABLPpAASz6gAEs+sABLPsAASz7gAEs/AABLPxAASz8gAEs/QABLP1AAS0cAAEtHIABLR0AAS0dgAEtHkABLR6AAS0ewAEtHwABLR9AAS0fwAEtIEABLSCAAS0gwAEtIUABLSGAAS0zwAEtPMABLUaAAS1PgAEtUEABLVDAAS1RQAEtUcABLVJAAS1SwAEtUwABLVPAAS1aAAEtYUABLWHAAS1iQAEtYsABLWNAAS1jwAEtZEABLWTAAS1sAAEtbMABLW2AAS1uQAEtbwABLW/AAS1wgAEtcUABLXHAAS2QgAEtkQABLZGAAS2SAAEtksABLZMAAS2TQAEtk4ABLZPAAS2UQAEtlMABLZUAAS2VQAEtlcABLZYAAS20wAEttUABLbXAAS22QAEttwABLbdAAS23gAEtt8ABLbgAAS24gAEtuQABLblAAS25gAEtugABLbpAAS3ZAAEt2YABLdoAAS3agAEt20ABLduAAS3bwAEt3AABLdxAAS3cwAEt3UABLd2AAS3dwAEt3kABLd6AAS39QAEt/cABLf6AAS3/AAEt/8ABLgAAAS4AQAEuAIABLgDAAS4BQAEuAcABLgIAAS4CQAEuAsABLgMAAS4hwAEuIkABLiLAAS4jQAEuJAABLiRAAS4kgAEuJMABLiUAAS4lgAEuJgABLiZAAS4mgAEuJwABLidAAS5GAAEuRoABLkcAAS5HgAEuSEABLkiAAS5IwAEuSQABLklAAS5JwAEuSkABLkqAAS5KwAEuS0ABLkuAAS5qQAEuasABLmtAAS5rwAEubIABLmzAAS5tAAEubUABLm2AAS5uAAEuboABLm7AAS5vAAEub4ABLm/AAS6UgAEunUABLqVAAS6tQAEurcABLq5AAS6uwAEur0ABLrAAAS6wQAEusIABLrFAAS6xgAEusgABLrJAAS6ywAEus4ABLrPAAS60AAEutMABLrUAAS62QAEuvIABLr7AAS6/QAEuv8ABLsIAAS7CwAEuw4ABLsQAAS7WQAEu30ABLukAAS7yAAEu8sABLvNAAS7zwAEu9EABLvTAAS71QAEu9YABLvZAAS78gAEvBMABLwVAAS8FwAEvBkABLwbAAS8HQAEvB8ABLwhAAS8IwAEvEQABLxHAAS8SgAEvE0ABLxQAAS8UwAEvFYABLxZAAS8XAAEvF4ABLzZAAS82wAEvN0ABLzfAAS84gAEvOMABLzkAAS85QAEvOYABLzoAAS86gAEvOsABLzsAAS87gAEvO8ABL1qAAS9bAAEvW4ABL1wAAS9cwAEvXQABL11AAS9dgAEvXcABL15AAS9ewAEvXwABL19AAS9fwAEvYAABL37AAS9/QAEvgAABL4CAAS+BQAEvgYABL4HAAS+CAAEvgkABL4LAAS+DQAEvg4ABL4PAAS+EQAEvhIABL4rAAS+LAAEvi0ABL4vAAS+qgAEvqwABL6uAAS+sAAEvrMABL60AAS+tQAEvrYABL63AAS+uQAEvrsABL68AAS+vQAEvr8ABL7AAAS/OwAEvz0ABL8/AAS/QQAEv0QABL9FAAS/RgAEv0cABL9IAAS/SgAEv0wABL9NAAS/TgAEv1AABL9RAAS/zAAEv84ABL/QAAS/0gAEv9UABL/WAAS/1wAEv9gABL/ZAAS/2wAEv90ABL/eAAS/3wAEv+EABL/iAATAXQAEwF8ABMBhAATAYwAEwGYABMBnAATAaAAEwGkABMBqAATAbAAEwG4ABMBvAATAcAAEwHIABMBzAATA7gAEwPAABMDyAATA9AAEwPcABMD4AATA+QAEwPoABMD7AATA/QAEwP8ABMEAAATBAQAEwQMABMEEAATBTQAEwXEABMGYAATBvAAEwb8ABMHBAATBwwAEwcUABMHHAATByQAEwcoABMHNAATB5gAEwgMABMIFAATCBwAEwgkABMILAATCDQAEwg8ABMIRAATCLgAEwjEABMI0AATCNwAEwjoABMI9AATCQAAEwkMABMJFAATCwAAEwsIABMLFAATCxwAEwsoABMLLAATCzAAEws0ABMLOAATC0AAEwtIABMLTAATC1AAEwtYABMLXAATC2wAEw1YABMNYAATDWgAEw1wABMNfAATDYAAEw2EABMNiAATDYwAEw2UABMNnAATDaAAEw2kABMNrAATDbAAEw+cABMPpAATD6wAEw+0ABMPwAATD8QAEw/IABMPzAATD9AAEw/YABMP4AATD+QAEw/oABMP8AATD/QAExHgABMR6AATEfQAExH8ABMSCAATEgwAExIQABMSFAATEhgAExIgABMSKAATEiwAExIwABMSOAATEjwAExQoABMUMAATFDgAExRAABMUTAATFFAAExRUABMUWAATFFwAExRkABMUbAATFHAAExR0ABMUfAATFIAAExZsABMWdAATFnwAExaEABMWkAATFpQAExaYABMWnAATFqAAExaoABMWsAATFrQAExa4ABMWwAATFsQAExiwABMYuAATGMAAExjIABMY1AATGNgAExjcABMY4AATGOQAExjsABMY9AATGPgAExj8ABMZBAATGQgAExtUABMb4AATHGAAExzgABMc6AATHPAAExz4ABMdAAATHQwAEx0QABMdFAATHSAAEx0kABMdLAATHTAAEx08ABMdSAATHUwAEx1QABMdXAATHWAAEx2EABMd6AATHgwAEx4UABMeIAATHkQAEx5QABMeXAATHmQAEx+IABMgGAATILQAEyFEABMhUAATIVgAEyFgABMhaAATIXAAEyF4ABMhfAATIYgAEyHsABMicAATIngAEyKAABMiiAATIpAAEyKYABMioAATIqgAEyKwABMjNAATI0AAEyNMABMjWAATI2QAEyNwABMjfAATI4gAEyOUABMjnAATJYgAEyWQABMlmAATJaAAEyWsABMlsAATJbQAEyW4ABMlvAATJcQAEyXMABMl0AATJdQAEyXcABMl4AATJ8wAEyfUABMn3AATJ+QAEyfwABMn9AATJ/gAEyf8ABMoAAATKAgAEygQABMoFAATKBgAEyggABMoJAATKhAAEyoYABMqJAATKiwAEyo4ABMqPAATKkAAEypEABMqSAATKlAAEypYABMqXAATKmAAEypoABMqbAATKtAAEyrUABMq2AATKuAAEyzMABMs1AATLNwAEyzkABMs8AATLPQAEyz4ABMs/AATLQAAEy0IABMtEAATLRQAEy0YABMtIAATLSQAEy8QABMvGAATLyAAEy8oABMvNAATLzgAEy88ABMvQAATL0QAEy9MABMvVAATL1gAEy9cABMvZAATL2gAEzFUABMxXAATMWQAEzFsABMxeAATMXwAEzGAABMxhAATMYgAEzGQABMxmAATMZwAEzGgABMxqAATMawAEzOYABMzoAATM6gAEzOwABMzvAATM8AAEzPEABMzyAATM8wAEzPUABMz3AATM+AAEzPkABMz7AATM/AAEzXcABM15AATNewAEzX0ABM2AAATNgQAEzYIABM2DAATNhAAEzYYABM2IAATNiQAEzYoABM2MAATNjQAEzdYABM36AATOIQAEzkUABM5IAATOSwAEzk0ABM5PAATOUQAEzlMABM5UAATOVwAEznAABM6NAATOkAAEzpMABM6WAATOmQAEzpwABM6fAATOogAEzr8ABM7CAATOxQAEzsgABM7LAATOzgAEztEABM7UAATO1gAEz1EABM9TAATPVgAEz1gABM9bAATPXAAEz10ABM9eAATPXwAEz2EABM9kAATPZQAEz2YABM9oAATPaQAEz+QABM/mAATP6QAEz+sABM/uAATP7wAEz/AABM/xAATP8gAEz/QABM/3AATP+AAEz/kABM/7AATP/AAE0HcABNB5AATQfAAE0H4ABNCBAATQggAE0IMABNCEAATQhQAE0IcABNCKAATQiwAE0IwABNCOAATQjwAE0QoABNEMAATRDwAE0REABNEUAATRFQAE0RYABNEXAATRGAAE0RoABNEdAATRHgAE0R8ABNEhAATRIgAE0aUABNHJAATR7QAE0hAABNI3AATSVwAE0n4ABNKlAATSxQAE0ukABNMNAATTDwAE0xIABNMUAATTFgAE0xgABNMbAATTHgAE0yAABNMiAATTJQAE0ycABNMpAATTLAAE0y8ABNMwAATTNQAE004ABNNTAATTVQAE01oABNNdAATTXwAE06gABNPMAATT8wAE1BcABNQaAATUHAAE1B4ABNQgAATUIgAE1CQABNQlAATUKAAE1EEABNRmAATUaAAE1GoABNRsAATUbgAE1HAABNRyAATUdAAE1HYABNR4AATUnQAE1KAABNSjAATUpgAE1KkABNSsAATUrwAE1LIABNS1AATUuAAE1LoABNU1AATVNwAE1ToABNU8AATVPwAE1UAABNVBAATVQgAE1UMABNVFAATVRwAE1UgABNVJAATVSwAE1UwABNVdAATVXgAE1WAABNXbAATV3QAE1d8ABNXhAATV5AAE1eUABNXmAATV5wAE1egABNXqAATV7AAE1e0ABNXuAATV8AAE1fEABNZsAATWbgAE1nEABNZzAATWdgAE1ncABNZ4AATWeQAE1noABNZ8AATWfgAE1n8ABNaAAATWggAE1oMABNaUAATWlQAE1pcABNcSAATXFAAE1xYABNcYAATXGwAE1xwABNcdAATXHgAE1x8ABNchAATXIwAE1yQABNclAATXJwAE1ygABNejAATXpQAE16gABNeqAATXrQAE164ABNevAATXsAAE17EABNezAATXtQAE17YABNe3AATXuQAE17oABNfLAATXzAAE184ABNhJAATYSwAE2E0ABNhPAATYUgAE2FMABNhUAATYVQAE2FYABNhYAATYWgAE2FsABNhcAATYXgAE2F8ABNjaAATY3AAE2N8ABNjhAATY5AAE2OUABNjmAATY5wAE2OgABNjqAATY7AAE2O0ABNjuAATY8AAE2PEABNkKAATZCwAE2QwABNkOAATZiQAE2YsABNmNAATZjwAE2ZIABNmTAATZlAAE2ZUABNmWAATZmAAE2ZoABNmbAATZnAAE2Z4ABNmfAATaGgAE2hwABNofAATaIQAE2iQABNolAATaJgAE2icABNooAATaKgAE2iwABNotAATaLgAE2jAABNoxAATaSQAE2mIABNp/AATaggAE2oUABNqIAATaiwAE2o4ABNqRAATalAAE2rEABNq0AATatwAE2roABNq9AATawAAE2sMABNrGAATayAAE2uMABNsOAATbJAAE2z0ABNtmAATbfgAE24wABNwfAATcQgAE3GIABNyCAATchAAE3IYABNyIAATcigAE3I0ABNyOAATcjwAE3JIABNyTAATclQAE3JYABNyYAATcmwAE3JwABNydAATcoAAE3KEABNyqAATcwwAE3MwABNzOAATc0AAE3NkABNzcAATc3wAE3OEABN0qAATdTgAE3XUABN2ZAATdnAAE3Z4ABN2gAATdogAE3aQABN2mAATdpwAE3aoABN3DAATd5AAE3eYABN3oAATd6gAE3ewABN3uAATd8AAE3fIABN30AATeFQAE3hgABN4bAATeHgAE3iEABN4kAATeJwAE3ioABN4tAATeLwAE3qoABN6sAATergAE3rAABN6zAATetAAE3rUABN62AATetwAE3rkABN67AATevAAE3r0ABN6/AATewAAE3zsABN89AATfPwAE30EABN9EAATfRQAE30YABN9HAATfSAAE30oABN9MAATfTQAE304ABN9QAATfUQAE38wABN/OAATf0QAE39MABN/WAATf1wAE39gABN/ZAATf2gAE39wABN/eAATf3wAE3+AABN/iAATf4wAE3/wABN/9AATf/gAE4AAABOB7AATgfQAE4H8ABOCBAATghAAE4IUABOCGAATghwAE4IgABOCKAATgjAAE4I0ABOCOAATgkAAE4JEABOEMAAThDgAE4RAABOESAAThFQAE4RYABOEXAAThGAAE4RkABOEbAAThHQAE4R4ABOEfAAThIQAE4SIABOGdAAThnwAE4aEABOGjAAThpgAE4acABOGoAAThqQAE4aoABOGsAAThrgAE4a8ABOGwAAThsgAE4bMABOIuAATiMAAE4jIABOI0AATiNwAE4jgABOI5AATiOgAE4jsABOI9AATiPwAE4kAABOJBAATiQwAE4kQABOK/AATiwQAE4sMABOLFAATiyAAE4skABOLKAATiywAE4swABOLOAATi0AAE4tEABOLSAATi1AAE4tUABOMeAATjQgAE42kABOONAATjkAAE45IABOOUAATjlgAE45gABOOaAATjmwAE454ABOO3AATj1AAE49YABOPYAATj2gAE49wABOPeAATj4AAE4+IABOP/AATkAgAE5AUABOQIAATkCwAE5A4ABOQRAATkFAAE5BYABOSRAATkkwAE5JUABOSXAATkmgAE5JsABOScAATknQAE5J4ABOSgAATkogAE5KMABOSkAATkpgAE5KcABOUiAATlJAAE5SYABOUoAATlKwAE5SwABOUtAATlLgAE5S8ABOUxAATlMwAE5TQABOU1AATlNwAE5TgABOWzAATltQAE5bcABOW5AATlvAAE5b0ABOW+AATlvwAE5cAABOXCAATlxAAE5cUABOXGAATlyAAE5ckABOZEAATmRgAE5kkABOZLAATmTgAE5k8ABOZQAATmUQAE5lIABOZUAATmVgAE5lcABOZYAATmWgAE5lsABObWAATm2AAE5toABObcAATm3wAE5uAABObhAATm4gAE5uMABOblAATm5wAE5ugABObpAATm6wAE5uwABOdnAATnaQAE52sABOdtAATncAAE53EABOdyAATncwAE53QABOd2AATneAAE53kABOd6AATnfAAE530ABOf4AATn+gAE5/wABOf+AAToAQAE6AIABOgDAAToBAAE6AUABOgHAAToCQAE6AoABOgLAAToDQAE6A4ABOihAAToxAAE6OQABOkEAATpBgAE6QgABOkKAATpDAAE6Q8ABOkQAATpEQAE6RQABOkVAATpFwAE6RgABOkbAATpHgAE6R8ABOkgAATpIwAE6SQABOkpAATpQgAE6UsABOlNAATpUAAE6VkABOlcAATpXwAE6WEABOmqAATpzgAE6fUABOoZAATqHAAE6h4ABOogAATqIgAE6iQABOomAATqJwAE6ioABOpDAATqZAAE6mYABOpoAATqagAE6mwABOpuAATqcAAE6nIABOp0AATqlQAE6pgABOqbAATqngAE6qEABOqkAATqpwAE6qoABOqtAATqrwAE6yoABOssAATrLgAE6zAABOszAATrNAAE6zUABOs2AATrNwAE6zkABOs7AATrPAAE6z0ABOs/AATrQAAE67sABOu9AATrvwAE68EABOvEAATrxQAE68YABOvHAATryAAE68oABOvMAATrzQAE684ABOvQAATr0QAE7EwABOxOAATsUQAE7FMABOxWAATsVwAE7FgABOxZAATsWgAE7FwABOxeAATsXwAE7GAABOxiAATsYwAE7HwABOx9AATsfgAE7IAABOz7AATs/QAE7P8ABO0BAATtBAAE7QUABO0GAATtBwAE7QgABO0KAATtDAAE7Q0ABO0OAATtEAAE7REABO2MAATtjgAE7ZAABO2SAATtlQAE7ZYABO2XAATtmAAE7ZkABO2bAATtnQAE7Z4ABO2fAATtoQAE7aIABO4dAATuHwAE7iEABO4jAATuJgAE7icABO4oAATuKQAE7ioABO4sAATuLgAE7i8ABO4wAATuMgAE7jMABO6uAATusAAE7rIABO60AATutwAE7rgABO65AATuugAE7rsABO69AATuvwAE7sAABO7BAATuwwAE7sQABO8/AATvQQAE70MABO9FAATvSAAE70kABO9KAATvSwAE70wABO9OAATvUAAE71EABO9SAATvVAAE71UABO+eAATvwgAE7+kABPANAATwEAAE8BMABPAVAATwFwAE8BkABPAbAATwHAAE8B8ABPA4AATwVQAE8FgABPBbAATwXgAE8GEABPBkAATwZwAE8GoABPCHAATwigAE8I0ABPCQAATwkwAE8JYABPCZAATwnAAE8J4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ABQJ2AAUCeAAFAoEABQKEAAUChwAFAokABQLSAAUC9gAFAx0ABQNBAAUDRAAFA0YABQNIAAUDSgAFA0wABQNOAAUDTwAFA1IABQNrAAUDjAAFA44ABQOQAAUDkgAFA5QABQOWAAUDmAAFA5oABQOcAAUDvQAFA8AABQPDAAUDxgAFA8kABQPMAAUDzwAFA9IABQPVAAUD1wAFBFIABQRUAAUEVgAFBFgABQRbAAUEXAAFBF0ABQReAAUEXwAFBGEABQRjAAUEZAAFBGUABQRnAAUEaAAFBOMABQTlAAUE5wAFBOkABQTsAAUE7QAFBO4ABQTvAAUE8AAFBPIABQT0AAUE9QAFBPYABQT4AAUE+QAFBXQABQV2AAUFeQAFBXsABQV+AAUFfwAFBYAABQWBAAUFggAFBYQABQWGAAUFhwAFBYgABQWKAAUFiwAFBaQABQWlAAUFpgAFBagABQYjAAUGJQAFBicABQYpAAUGLAAFBi0ABQYuAAUGLwAFBjAABQYyAAUGNAAFBjUABQY2AAUGOAAFBjkABQa0AAUGtgAFBrgABQa6AAUGvQAFBr4ABQa/AAUGwAAFBsEABQbDAAUGxQAFBsYABQbHAAUGyQAFBsoABQdFAAUHRwAFB0kABQdLAAUHTgAFB08ABQdQAAUHUQAFB1IABQdUAAUHVgAFB1cABQdYAAUHWgAFB1sABQfWAAUH2AAFB9oABQfcAAUH3wAFB+AABQfhAAUH4gAFB+MABQflAAUH5wAFB+gABQfpAAUH6wAFB+wABQhnAAUIaQAFCGsABQhtAAUIcAAFCHEABQhyAAUIcwAFCHQABQh2AAUIeAAFCHkABQh6AAUIfAAFCH0ABQjGAAUI6gAFCREABQk1AAUJOAAFCToABQk8AAUJPgAFCUAABQlCAAUJQwAFCUYABQlfAAUJfAAFCX4ABQmAAAUJggAFCYQABQmGAAUJiAAFCYoABQmnAAUJqgAFCa0ABQmwAAUJswAFCbYABQm5AAUJvAAFCb4ABQo5AAUKOwAFCj0ABQo/AAUKQgAFCkMABQpEAAUKRQAFCkYABQpIAAUKSgAFCksABQpMAAUKTgAFCk8ABQrKAAUKzAAFCs4ABQrQAAUK0wAFCtQABQrVAAUK1gAFCtcABQrZAAUK2wAFCtwABQrdAAUK3wAFCuAABQtbAAULXQAFC18ABQthAAULZAAFC2UABQtmAAULZwAFC2gABQtqAAULbAAFC20ABQtuAAULcAAFC3EABQvsAAUL7gAFC/EABQvzAAUL9gAFC/cABQv4AAUL+QAFC/oABQv8AAUL/gAFC/8ABQwAAAUMAgAFDAMABQx+AAUMgAAFDIIABQyEAAUMhwAFDIgABQyJAAUMigAFDIsABQyNAAUMjwAFDJAABQyRAAUMkwAFDJQABQ0PAAUNEQAFDRMABQ0VAAUNGAAFDRkABQ0aAAUNGwAFDRwABQ0eAAUNIAAFDSEABQ0iAAUNJAAFDSUABQ2gAAUNogAFDaQABQ2mAAUNqQAFDaoABQ2rAAUNrAAFDa0ABQ2vAAUNsQAFDbIABQ2zAAUNtQAFDbYABQ5JAAUObAAFDowABQ6sAAUOrgAFDrAABQ6yAAUOtAAFDrcABQ64AAUOuQAFDrwABQ69AAUOvwAFDsAABQ7CAAUOxQAFDsYABQ7HAAUOygAFDssABQ7QAAUO6QAFDvIABQ70AAUO9gAFDv8ABQ8CAAUPBQAFDwcABQ9QAAUPdAAFD5sABQ+/AAUPwgAFD8QABQ/GAAUPyAAFD8oABQ/MAAUPzQAFD9AABQ/pAAUQCgAFEAwABRAOAAUQEAAFEBIABRAUAAUQFgAFEBgABRAaAAUQOwAFED4ABRBBAAUQRAAFEEcABRBKAAUQTQAFEFAABRBTAAUQVQAFENAABRDSAAUQ1AAFENYABRDZAAUQ2gAFENsABRDcAAUQ3QAFEN8ABRDhAAUQ4gAFEOMABRDlAAUQ5gAFEWEABRFjAAURZQAFEWcABRFqAAURawAFEWwABRFtAAURbgAFEXAABRFyAAURcwAFEXQABRF2AAURdwAFEfIABRH0AAUR9wAFEfkABRH8AAUR/QAFEf4ABRH/AAUSAAAFEgIABRIEAAUSBQAFEgYABRIIAAUSCQAFEiIABRIjAAUSJAAFEiYABRKhAAUSowAFEqUABRKnAAUSqgAFEqsABRKsAAUSrQAFEq4ABRKwAAUSsgAFErMABRK0AAUStgAFErcABRMyAAUTNAAFEzYABRM4AAUTOwAFEzwABRM9AAUTPgAFEz8ABRNBAAUTQwAFE0QABRNFAAUTRwAFE0gABRPDAAUTxQAFE8cABRPJAAUTzAAFE80ABRPOAAUTzwAFE9AABRPSAAUT1AAFE9UABRPWAAUT2AAFE9kABRRUAAUUVgAFFFgABRRaAAUUXQAFFF4ABRRfAAUUYAAFFGEABRRjAAUUZQAFFGYABRRnAAUUaQAFFGoABRTlAAUU5wAFFOkABRTrAAUU7gAFFO8ABRTwAAUU8QAFFPIABRT0AAUU9gAFFPcABRT4AAUU+gAFFPsABRVEAAUVaAAFFY8ABRWzAAUVtgAFFbgABRW6AAUVvAAFFb4ABRXAAAUVwQAFFcQABRXdAAUV+gAFFfwABRX+AAUWAAAFFgIABRYEAAUWBgAFFggABRYlAAUWKAAFFisABRYuAAUWMQAFFjQABRY3AAUWOgAFFjwABRa3AAUWuQAFFrsABRa9AAUWwAAFFsEABRbCAAUWwwAFFsQABRbGAAUWyAAFFskABRbKAAUWzAAFFs0ABRdIAAUXSgAFF0wABRdOAAUXUQAFF1IABRdTAAUXVAAFF1UABRdXAAUXWQAFF1oABRdbAAUXXQAFF14ABRfZAAUX2wAFF90ABRffAAUX4gAFF+MABRfkAAUX5QAFF+YABRfoAAUX6gAFF+sABRfsAAUX7gAFF+8ABRhqAAUYbAAFGG8ABRhxAAUYdAAFGHUABRh2AAUYdwAFGHgABRh6AAUYfAAFGH0ABRh+AAUYgAAFGIEABRj8AAUY/gAFGQAABRkCAAUZBQAFGQYABRkHAAUZCAAFGQkABRkLAAUZDQAFGQ4ABRkPAAUZEQAFGRIABRmNAAUZjwAFGZEABRmTAAUZlgAFGZcABRmYAAUZmQAFGZoABRmcAAUZngAFGZ8ABRmgAAUZogAFGaMABRoeAAUaIAAFGiIABRokAAUaJwAFGigABRopAAUaKgAFGisABRotAAUaLwAFGjAABRoxAAUaMwAFGjQABRrHAAUa6gAFGwoABRsqAAUbLAAFGy4ABRswAAUbMgAFGzUABRs2AAUbNwAFGzoABRs7AAUbPQAFGz4ABRtBAAUbRAAFG0UABRtGAAUbSQAFG0oABRtPAAUbaAAFG3EABRtzAAUbdgAFG38ABRuCAAUbhQAFG4cABRvQAAUb9AAFHBsABRw/AAUcQgAFHEQABRxGAAUcSAAFHEoABRxMAAUcTQAFHFAABRxpAAUcigAFHIwABRyOAAUckAAFHJIABRyUAAUclgAFHJgABRyaAAUcuwAFHL4ABRzBAAUcxAAFHMcABRzKAAUczQAFHNAABRzTAAUc1QAFHVAABR1SAAUdVAAFHVYABR1ZAAUdWgAFHVsABR1cAAUdXQAFHV8ABR1hAAUdYgAFHWMABR1lAAUdZgAFHeEABR3jAAUd5QAFHecABR3qAAUd6wAFHewABR3tAAUd7gAFHfAABR3yAAUd8wAFHfQABR32AAUd9wAFHnIABR50AAUedwAFHnkABR58AAUefQAFHn4ABR5/AAUegAAFHoIABR6EAAUehQAFHoYABR6IAAUeiQAFHqIABR6jAAUepAAFHqYABR8hAAUfIwAFHyUABR8nAAUfKgAFHysABR8sAAUfLQAFHy4ABR8wAAUfMgAFHzMABR80AAUfNgAFHzcABR+yAAUftAAFH7YABR+4AAUfuwAFH7wABR+9AAUfvgAFH78ABR/BAAUfwwAFH8QABR/FAAUfxwAFH8gABSBDAAUgRQAFIEcABSBJAAUgTAAFIE0ABSBOAAUgTwAFIFAABSBSAAUgVAAFIFUABSBWAAUgWAAFIFkABSDUAAUg1gAFINgABSDaAAUg3QAFIN4ABSDfAAUg4AAFIOEABSDjAAUg5QAFIOYABSDnAAUg6QAFIOoABSFlAAUhZwAFIWkABSFrAAUhbgAFIW8ABSFwAAUhcQAFIXIABSF0AAUhdgAFIXcABSF4AAUhegAFIXsABSHEAAUh6AAFIg8ABSIzAAUiNgAFIjkABSI7AAUiPQAFIj8ABSJBAAUiQgAFIkUABSJeAAUiewAFIn4ABSKBAAUihAAFIocABSKKAAUijQAFIpAABSKtAAUisAAFIrMABSK2AAUiuQAFIrwABSK/AAUiwgAFIsQABSM/AAUjQQAFI0QABSNGAAUjSQAFI0oABSNLAAUjTAAFI00ABSNPAAUjUgAFI1MABSNUAAUjVgAFI1cABSPSAAUj1AAFI9cABSPZAAUj3AAFI90ABSPeAAUj3wAFI+AABSPiAAUj5QAFI+YABSPnAAUj6QAFI+oABSRlAAUkZwAFJGoABSRsAAUkbwAFJHAABSRxAAUkcgAFJHMABSR1AAUkeAAFJHkABSR6AAUkfAAFJH0ABST4AAUk+gAFJP0ABST/AAUlAgAFJQMABSUEAAUlBQAFJQYABSUIAAUlCwAFJQwABSUNAAUlDwAFJRAABSWLAAUljQAFJY8ABSWRAAUllAAFJZUABSWWAAUllwAFJZgABSWaAAUlnQAFJZ4ABSWfAAUloQAFJaIABSYdAAUmHwAFJiEABSYjAAUmJgAFJicABSYoAAUmKQAFJioABSYsAAUmLwAFJjAABSYxAAUmMwAFJjQABSavAAUmsQAFJrQABSa2AAUmuQAFJroABSa7AAUmvAAFJr0ABSa/AAUmwgAFJsMABSbEAAUmxgAFJscABSdaAAUnfQAFJ50ABSe9AAUnvwAFJ8EABSfDAAUnxQAFJ8gABSfJAAUnygAFJ80ABSfOAAUn0AAFJ9EABSfTAAUn1gAFJ9cABSfYAAUn2wAFJ9wABSfhAAUn+gAFKAMABSgFAAUoBwAFKBAABSgTAAUoFgAFKBgABShhAAUohQAFKKwABSjQAAUo0wAFKNUABSjXAAUo2QAFKNsABSjdAAUo3gAFKOEABSj6AAUpGwAFKR0ABSkfAAUpIQAFKSMABSklAAUpJwAFKSkABSkrAAUpTAAFKU8ABSlSAAUpVQAFKVgABSlbAAUpXgAFKWEABSlkAAUpZgAFKeEABSnjAAUp5QAFKecABSnqAAUp6wAFKewABSntAAUp7gAFKfAABSnyAAUp8wAFKfQABSn2AAUp9wAFKnIABSp0AAUqdgAFKngABSp7AAUqfAAFKn0ABSp+AAUqfwAFKoEABSqDAAUqhAAFKoUABSqHAAUqiAAFKwMABSsFAAUrCAAFKwoABSsNAAUrDgAFKw8ABSsQAAUrEQAFKxMABSsVAAUrFgAFKxcABSsZAAUrGgAFKzMABSs0AAUrNQAFKzcABSuyAAUrtAAFK7YABSu4AAUruwAFK7wABSu9AAUrvgAFK78ABSvBAAUrwwAFK8QABSvFAAUrxwAFK8gABSxDAAUsRQAFLEcABSxJAAUsTAAFLE0ABSxOAAUsTwAFLFAABSxSAAUsVAAFLFUABSxWAAUsWAAFLFkABSzUAAUs1gAFLNgABSzaAAUs3QAFLN4ABSzfAAUs4AAFLOEABSzjAAUs5QAFLOYABSznAAUs6QAFLOoABS1lAAUtZwAFLWkABS1rAAUtbgAFLW8ABS1wAAUtcQAFLXIABS10AAUtdgAFLXcABS14AAUtegAFLXsABS32AAUt+AAFLfoABS38AAUt/wAFLgAABS4BAAUuAgAFLgMABS4FAAUuBwAFLggABS4JAAUuCwAFLgw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ABVE7AAVRPAAFUbcABVG5AAVRuwAFUb0ABVHAAAVRwQAFUcIABVHDAAVRxAAFUcYABVHIAAVRyQAFUcoABVHMAAVRzQAFUkgABVJKAAVSTQAFUk8ABVJSAAVSUwAFUlQABVJVAAVSVgAFUlgABVJaAAVSWwAFUlwABVJeAAVSXwAFUngABVJ5AAVSegAFUnwABVL3AAVS+QAFUvsABVL9AAVTAAAFUwEABVMCAAVTAwAFUwQABVMGAAVTCAAFUwkABVMKAAVTDAAFUw0ABVOIAAVTigAFU4wABVOOAAVTkQAFU5IABVOTAAVTlAAFU5UABVOXAAVTmQAFU5oABVObAAVTnQAFU54ABVQZAAVUGwAFVB0ABVQfAAVUIgAFVCMABVQkAAVUJQAFVCYABVQoAAVUKgAFVCsABVQsAAVULgAFVC8ABVSqAAVUrAAFVK4ABVSwAAVUswAFVLQABVS1AAVUtgAFVLcABVS5AAVUuwAFVLwABVS9AAVUvwAFVMAABVU7AAVVPQAFVT8ABVVBAAVVRAAFVUUABVVGAAVVRwAFVUgABVVKAAVVTAAFVU0ABVVOAAVVUAAFVVEABVWaAAVVvgAFVeUABVYJAAVWDAAFVg4ABVYQAAVWEgAFVhQABVYWAAVWFwAFVhoABVYzAAVWUAAFVlIABVZUAAVWVgAFVlgABVZaAAVWXAAFVl4ABVZ7AAVWfgAFVoEABVaEAAVWhwAFVooABVaNAAVWkAAFVpIABVcNAAVXDwAFVxEABVcTAAVXFgAFVxcABVcYAAVXGQAFVxoABVccAAVXHgAFVx8ABVcgAAVXIgAFVyMABVeeAAVXoAAFV6IABVekAAVXpwAFV6gABVepAAVXqgAFV6sABVetAAVXrwAFV7AABVexAAVXswAFV7QABVgvAAVYMQAFWDMABVg1AAVYOAAFWDkABVg6AAVYOwAFWDwABVg+AAVYQAAFWEEABVhCAAVYRAAFWEUABVjAAAVYwgAFWMUABVjHAAVYygAFWMsABVjMAAVYzQAFWM4ABVjQAAVY0gAFWNMABVjUAAVY1gAFWNcABVlSAAVZVAAFWVYABVlYAAVZWwAFWVwABVldAAVZXgAFWV8ABVlhAAVZYwAFWWQABVllAAVZZwAFWWgABVnjAAVZ5QAFWecABVnpAAVZ7AAFWe0ABVnuAAVZ7wAFWfAABVnyAAVZ9AAFWfUABVn2AAVZ+AAFWfkABVp0AAVadgAFWngABVp6AAVafQAFWn4ABVp/AAVagAAFWoEABVqDAAVahQAFWoYABVqHAAVaiQAFWooABVsdAAVbQAAFW2AABVuAAAVbggAFW4QABVuGAAVbiAAFW4sABVuMAAVbjQAFW5AABVuRAAVbkwAFW5QABVuXAAVbmgAFW5sABVucAAVbnwAFW6AABVulAAVbvgAFW8cABVvJAAVbzAAFW9UABVvYAAVb2wAFW90ABVwmAAVcSgAFXHEABVyVAAVcmAAFXJoABVycAAVcngAFXKAABVyiAAVcowAFXKYABVy/AAVc4AAFXOIABVzkAAVc5gAFXOgABVzqAAVc7AAFXO4ABVzwAAVdEQAFXRQABV0XAAVdGgAFXR0ABV0gAAVdIwAFXSYABV0pAAVdKwAFXaYABV2oAAVdqgAFXawABV2vAAVdsAAFXbEABV2yAAVdswAFXbUABV23AAVduAAFXbkABV27AAVdvAAFXjcABV45AAVeOwAFXj0ABV5AAAVeQQAFXkIABV5DAAVeRAAFXkYABV5IAAVeSQAFXkoABV5MAAVeTQAFXsgABV7KAAVezQAFXs8ABV7SAAVe0wAFXtQABV7VAAVe1gAFXtgABV7aAAVe2wAFXtwABV7eAAVe3wAFXvgABV75AAVe+gAFXvwABV93AAVfeQAFX3sABV99AAVfgAAFX4EABV+CAAVfgwAFX4QABV+GAAVfiAAFX4kABV+KAAVfjAAFX40ABWAIAAVgCgAFYAwABWAOAAVgEQAFYBIABWATAAVgFAAFYBUABWAXAAVgGQAFYBoABWAbAAVgHQAFYB4ABWCZAAVgmwAFYJ0ABWCfAAVgogAFYKMABWCkAAVgpQAFYKYABWCoAAVgqgAFYKsABWCsAAVgrgAFYK8ABWEqAAVhLAAFYS4ABWEwAAVhMwAFYTQABWE1AAVhNgAFYTcABWE5AAVhOwAFYTwABWE9AAVhPwAFYUAABWG7AAVhvQAFYb8ABWHBAAVhxAAFYcUABWHGAAVhxwAFYcgABWHKAAVhzAAFYc0ABWHOAAVh0AAFYdEABWIaAAViPgAFYmUABWKJAAVijAAFYo8ABWKRAAVikwAFYpUABWKXAAVimAAFYpsABWK0AAVi0QAFYtQABWLXAAVi2gAFYt0ABWLgAAVi4wAFYuYABWMDAAVjBgAFYwkABWMMAAVjDwAFYxIABWMVAAVjGAAFYxoABWOVAAVjlwAFY5oABWOcAAVjnwAFY6AABWOhAAVjogAFY6MABWOlAAVjqAAFY6kABWOqAAVjrAAFY60ABWQoAAVkKgAFZC0ABWQvAAVkMgAFZDMABWQ0AAVkNQAFZDYABWQ4AAVkOwAFZDwABWQ9AAVkPwAFZEAABWS7AAVkvQAFZMAABWTCAAVkxQAFZMYABWTHAAVkyAAFZMkABWTLAAVkzgAFZM8ABWTQAAVk0gAFZNMABWVOAAVlUAAFZVMABWVVAAVlWAAFZVkABWVaAAVlWwAFZVwABWVeAAVlYQAFZWIABWVjAAVlZQAFZWYABWXpAAVmDQAFZjEABWZUAAVmewAFZpsABWbCAAVm6QAFZwkABWctAAVnUQAFZ1MABWdWAAVnWAAFZ1oABWdcAAVnXwAFZ2IABWdkAAVnZgAFZ2kABWdrAAVnbQAFZ3AABWdzAAVndAAFZ3kABWeSAAVnlwAFZ5kABWeeAAVnoQAFZ6MABWfsAAVoEAAFaDcABWhbAAVoXgAFaGAABWhiAAVoZAAFaGYABWhoAAVoaQAFaGwABWiFAAVoqgAFaKwABWiuAAVosAAFaLIABWi0AAVotgAFaLgABWi6AAVovAAFaOEABWjkAAVo5wAFaOoABWjtAAVo8AAFaPMABWj2AAVo+QAFaPwABWj+AAVpeQAFaXsABWl+AAVpgAAFaYMABWmEAAVphQAFaYYABWmHAAVpiQAFaYsABWmMAAVpjQAFaY8ABWmQAAVpoQAFaaIABWmkAAVqHwAFaiEABWojAAVqJQAFaigABWopAAVqKgAFaisABWosAAVqLgAFajAABWoxAAVqMgAFajQABWo1AAVqsAAFarIABWq1AAVqtwAFaroABWq7AAVqvAAFar0ABWq+AAVqwAAFasIABWrDAAVqxAAFasYABWrHAAVq2AAFatkABWrbAAVrVgAFa1gABWtaAAVrXAAFa18ABWtgAAVrYQAFa2IABWtjAAVrZQAFa2cABWtoAAVraQAFa2sABWtsAAVr5wAFa+kABWvsAAVr7gAFa/EABWvyAAVr8wAFa/QABWv1AAVr9wAFa/kABWv6AAVr+wAFa/0ABWv+AAVsDwAFbBAABWwSAAVsjQAFbI8ABWyRAAVskwAFbJYABWyXAAVsmAAFbJkABWyaAAVsnAAFbJ4ABWyfAAVsoAAFbKIABWyjAAVtHgAFbSAABW0jAAVtJQAFbSgABW0pAAVtKgAFbSsABW0sAAVtLgAFbTAABW0xAAVtMgAFbTQABW01AAVtTgAFbU8ABW1QAAVtUgAFbc0ABW3PAAVt0QAFbdMABW3WAAVt1wAFbdgABW3ZAAVt2gAFbdwABW3eAAVt3wAFbeAABW3iAAVt4wAFbl4ABW5gAAVuYwAFbmUABW5oAAVuaQAFbmoABW5rAAVubAAFbm4ABW5wAAVucQAFbnIABW50AAVudQAFbpMABW6sAAVuwQAFbsQABW7HAAVuygAFbs0ABW7QAAVu5QAFbugABW7rAAVu7gAFbvEABW70AAVu9gAFbxYABW8lAAVvNwAFb0MABW9aAAVv7QAFcBAABXAwAAVwUAAFcFIABXBUAAVwVgAFcFgABXBbAAVwXAAFcF0ABXBgAAVwYQAFcGMABXBkAAVwZgAFcGkABXBqAAVwawAFcG4ABXBvAAVwdAAFcI0ABXCWAAVwmAAFcJoABXCjAAVwpgAFcKkABXCrAAVw9AAFcRgABXE/AAVxYwAFcWYABXFoAAVxagAFcWwABXFuAAVxcAAFcXEABXF0AAVxjQAFca4ABXGwAAVxsgAFcbQABXG2AAVxuAAFcboABXG8AAVxvgAFcd8ABXHiAAVx5QAFcegABXHrAAVx7gAFcfEABXH0AAVx9wAFcfkABXJ0AAVydgAFcngABXJ6AAVyfQAFcn4ABXJ/AAVygAAFcoEABXKDAAVyhQAFcoYABXKHAAVyiQAFcooABXMFAAVzBwAFcwkABXMLAAVzDgAFcw8ABXMQAAVzEQAFcxIABXMUAAVzFgAFcxcABXMYAAVzGgAFcxsABXOWAAVzmAAFc5sABXOdAAVzoAAFc6EABXOiAAVzowAFc6QABXOmAAVzqAAFc6kABXOqAAVzrAAFc60ABXPGAAVzxwAFc8gABXPKAAV0RQAFdEcABXRJAAV0SwAFdE4ABXRPAAV0UAAFdFEABXRSAAV0VAAFdFYABXRXAAV0WAAFdFoABXRbAAV01gAFdNgABXTaAAV03AAFdN8ABXTgAAV04QAFdOIABXTjAAV05QAFdOcABXToAAV06QAFdOsABXTsAAV1ZwAFdWkABXVrAAV1bQAFdXAABXVxAAV1cgAFdXMABXV0AAV1dgAFdXgABXV5AAV1egAFdXwABXV9AAV1+AAFdfoABXX8AAV1/gAFdgEABXYCAAV2AwAFdgQABXYFAAV2BwAFdgkABXYKAAV2CwAFdg0ABXYOAAV2iQAFdosABXaNAAV2jwAFdpIABXaTAAV2lAAFdpUABXaWAAV2mAAFdpoABXabAAV2nAAFdp4ABXafAAV26AAFdwwABXczAAV3VwAFd1oABXdcAAV3XgAFd2AABXdiAAV3ZAAFd2UABXdoAAV3gQAFd54ABXegAAV3ogAFd6QABXemAAV3qAAFd6oABXesAAV3yQAFd8wABXfPAAV30gAFd9UABXfYAAV32wAFd94ABXfgAAV4WwAFeF0ABXhfAAV4YQAFeGQABXhlAAV4ZgAFeGcABXhoAAV4agAFeGwABXhtAAV4bgAFeHAABXhxAAV47AAFeO4ABXjwAAV48gAFePUABXj2AAV49wAFePgABXj5AAV4+wAFeP0ABXj+AAV4/wAFeQEABXkCAAV5fQAFeX8ABXmBAAV5gwAFeYYABXmHAAV5iAAFeYkABXmKAAV5jAAFeY4ABXmPAAV5kAAFeZIABXmTAAV6DgAFehAABXoTAAV6FQAFehgABXoZAAV6GgAFehsABXocAAV6HgAFeiAABXohAAV6IgAFeiQABXolAAV6oAAFeqIABXqkAAV6pgAFeqkABXqqAAV6qwAFeqwABXqtAAV6rwAFerEABXqyAAV6swAFerUABXq2AAV7MQAFezMABXs1AAV7NwAFezoABXs7AAV7PAAFez0ABXs+AAV7QAAFe0IABXtDAAV7RAAFe0YABXtHAAV7wgAFe8QABXvGAAV7yAAFe8sABXvMAAV7zQAFe84ABXvPAAV70QAFe9MABXvUAAV71QAFe9cABXvYAAV8awAFfI4ABXyuAAV8zgAFfNAABXzSAAV81AAFfNYABXzZAAV82gAFfNsABXzeAAV83wAFfOEABXziAAV85AAFfOcABXzoAAV86QAFfOwABXztAAV89gAFfQ8ABX0YAAV9GgAFfRwABX0lAAV9KAAFfSsABX0tAAV9dgAFfZoABX3BAAV95QAFfegABX3qAAV97AAFfe4ABX3wAAV98gAFffMABX32AAV+DwAFfjAABX4yAAV+NAAFfjYABX44AAV+OgAFfjwABX4+AAV+QAAFfmEABX5kAAV+ZwAFfmoABX5tAAV+cAAFfnMABX52AAV+eQAFfnsABX72AAV++AAFfvoABX78AAV+/wAFfwAABX8BAAV/AgAFfwMABX8FAAV/BwAFfwgABX8JAAV/CwAFfwwABX+HAAV/iQAFf4sABX+NAAV/kAAFf5EABX+SAAV/kwAFf5QABX+WAAV/mAAFf5kABX+aAAV/nAAFf50ABYAYAAWAGgAFgB0ABYAfAAWAIgAFgCMABYAkAAWAJQAFgCYABYAoAAWAKgAFgCsABYAsAAWALgAFgC8ABYBIAAWASQAFgEoABYBMAAWAxwAFgMkABYDLAAWAzQAFgNAABYDRAAWA0gAFgNMABYDUAAWA1gAFgNgABYDZAAWA2gAFgNwABYDdAAWBWAAFgVoABYFcAAWBXgAFgWEABYFiAAWBYwAFgWQABYFlAAWBZwAFgWkABYFqAAWBawAFgW0ABYFuAAWB6QAFgesABYHtAAWB7wAFgfIABYHzAAWB9AAFgfUABYH2AAWB+AAFgfoABYH7AAWB/AAFgf4ABYH/AAWCegAFgnwABYJ+AAWCgAAFgoMABYKEAAWChQAFgoYABYKHAAWCiQAFgosABYKMAAWCjQAFgo8ABYKQAAWDCwAFgw0ABYMPAAWDEQAFgxQABYMVAAWDFgAFgxcABYMYAAWDGgAFgxwABYMdAAWDHgAFgyAABYMhAAWDagAFg44ABYO1AAWD2QAFg9wABYPeAAWD4AAFg+IABYPkAAWD5gAFg+cABYPqAAWEAwAFhCAABYQiAAWEJAAFhCYABYQoAAWEKgAFhCwABYQuAAWESwAFhE4ABYRRAAWEVAAFhFcABYRaAAWEXQAFhGAABYRiAAWE3QAFhN8ABYThAAWE4wAFhOYABYTnAAWE6AAFhOkABYTqAAWE7AAFhO4ABYTvAAWE8AAFhPIABYTzAAWFbgAFhXAABYVyAAWFdAAFhXcABYV4AAWFeQAFhXoABYV7AAWFfQAFhX8ABYWAAAWFgQAFhYMABYWEAAWF/wAFhgEABYYDAAWGBQAFhggABYYJAAWGCgAFhgsABYYMAAWGDgAFhhAABYYRAAWGEgAFhhQABYYVAAWGkAAFhpIABYaVAAWGlwAFhpoABYabAAWGnAAFhp0ABYaeAAWGoAAFhqIABYajAAWGpAAFhqYABYanAAWHIgAFhyQABYcmAAWHKAAFhysABYcsAAWHLQAFhy4ABYcvAAWHMQAFhzMABYc0AAWHNQAFhzcABYc4AAWHswAFh7UABYe3AAWHuQAFh7wABYe9AAWHvgAFh78ABYfAAAWHwgAFh8QABYfFAAWHxgAFh8gABYfJAAWIRAAFiEYABYhIAAWISgAFiE0ABYhOAAWITwAFiFAABYhRAAWIUwAFiFUABYhWAAWIVwAFiFkABYhaAAWI7QAFiRAABYkwAAWJUAAFiVIABYlUAAWJVgAFiVgABYlbAAWJXAAFiV0ABYlgAAWJYQAFiWMABYlkAAWJZwAFiWoABYlrAAWJbAAFiW8ABYlwAAWJdQAFiY4ABYmXAAWJmQAFiZwABYmlAAWJqAAFiasABYmtAAWJ9gAFihoABYpBAAWKZQAFimgABYpqAAWKbAAFim4ABYpwAAWKcgAFinMABYp2AAWKjwAFirAABYqyAAWKtAAFirYABYq4AAWKugAFirwABYq+AAWKwAAFiuEABYrkAAWK5wAFiuoABYrtAAWK8AAFivMABYr2AAWK+QAFivsABYt2AAWLeAAFi3oABYt8AAWLfwAFi4AABYuBAAWLggAFi4MABYuFAAWLhwAFi4gABYuJAAWLiwAFi4wABYwHAAWMCQAFjAsABYwNAAWMEAAFjBEABYwSAAWMEwAFjBQABYwWAAWMGAAFjBkABYwaAAWMHAAFjB0ABYyYAAWMmgAFjJ0ABYyfAAWMogAFjKMABYykAAWMpQAFjKYABYyoAAWMqgAFjKsABYysAAWMrgAFjK8ABYzIAAWMyQAFjMoABYzMAAWNRwAFjUkABY1LAAWNTQAFjVAABY1RAAWNUgAFjVMABY1UAAWNVgAFjVgABY1ZAAWNWgAFjVwABY1dAAWN2AAFjdoABY3cAAWN3gAFjeEABY3iAAWN4wAFjeQABY3lAAWN5wAFjekABY3qAAWN6wAFje0ABY3uAAWOaQAFjmsABY5tAAWObwAFjnIABY5zAAWOdAAFjnUABY52AAWOeAAFjnoABY57AAWOfAAFjn4ABY5/AAWO+gAFjvwABY7+AAWPAAAFjwMABY8EAAWPBQAFjwYABY8HAAWPCQAFjwsABY8MAAWPDQAFjw8ABY8QAAWPiwAFj40ABY+PAAWPkQAFj5QABY+VAAWPlgAFj5cABY+YAAWPmgAFj5wABY+dAAWPngAFj6AABY+hAAWP6gAFkA4ABZA1AAWQWQAFkFwABZBfAAWQYQAFkGMABZBlAAWQZwAFkGgABZBrAAWQhAAFkKEABZCkAAWQpwAFkKoABZCtAAWQsAAFkLMABZC2AAWQ0wAFkNYABZDZAAWQ3AAFkN8ABZDiAAWQ5QAFkOgABZDqAAWRZQAFkWcABZFqAAWRbAAFkW8ABZFwAAWRcQAFkXIABZFzAAWRdQAFkXgABZF5AAWRegAFkXwABZF9AAWR+AAFkfoABZH9AAWR/wAFkgIABZIDAAWSBAAFkgUABZIGAAWSCAAFkgsABZIMAAWSDQAFkg8ABZIQAAWSiwAFko0ABZKQAAWSkgAFkpUABZKWAAWSlwAFkpgABZKZAAWSmwAFkp4ABZKfAAWSoAAFkqIABZKjAAWTHgAFkyAABZMjAAWTJQAFkygABZMpAAWTKgAFkysABZMsAAWTLgAFkzEABZMyAAWTMwAFkzUABZM2AAWTsQAFk7MABZO1AAWTtwAFk7oABZO7AAWTvAAFk70ABZO+AAWTwAAFk8MABZPEAAWTxQAFk8cABZPIAAWUQwAFlEUABZRHAAWUSQAFlEwABZRNAAWUTgAFlE8ABZRQAAWUUgAFlFUABZRWAAWUVwAFlFkABZRaAAWU1QAFlNcABZTaAAWU3AAFlN8ABZTgAAWU4QAFlOIABZTjAAWU5QAFlOgABZTpAAWU6gAFlOwABZTtAAWVgAAFlaMABZXDAAWV4wAFleUABZXnAAWV6QAFlesABZXuAAWV7wAFlfAABZXzAAWV9AAFlfYABZX3AAWV+QAFlfwABZX9AAWV/gAFlgEABZYCAAWWCwAFliQABZYtAAWWLwAFljEABZY6AAWWPQAFlkAABZZCAAWWiwAFlq8ABZbWAAWW+gAFlv0ABZb/AAWXAQAFlwMABZcFAAWXBwAFlwgABZcLAAWXJAAFl0UABZdHAAWXSQAFl0sABZdNAAWXTwAFl1EABZdTAAWXVQAFl3YABZd5AAWXfAAFl38ABZeCAAWXhQAFl4gABZeLAAWXjgAFl5AABZgLAAWYDQAFmA8ABZgRAAWYFAAFmBUABZgWAAWYFwAFmBgABZgaAAWYHAAFmB0ABZgeAAWYIAAFmCEABZicAAWYngAFmKA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ABankAAWp5wAFqeoABantAAWp8AAFqfMABan1AAWqcAAFqnIABap0AAWqdgAFqnkABap6AAWqewAFqnwABap9AAWqfwAFqoEABaqCAAWqgwAFqoUABaqGAAWrAQAFqwMABasFAAWrBwAFqwoABasLAAWrDAAFqw0ABasOAAWrEAAFqxIABasTAAWrFAAFqxYABasXAAWrkgAFq5QABauWAAWrmAAFq5sABaucAAWrnQAFq54ABaufAAWroQAFq6MABaukAAWrpQAFq6cABauoAAWsIwAFrCUABawoAAWsKgAFrC0ABawuAAWsLwAFrDAABawxAAWsMwAFrDUABaw2AAWsNwAFrDkABaw6AAWstQAFrLcABay5AAWsuwAFrL4ABay/AAWswAAFrMEABazCAAWsxAAFrMYABazHAAWsyAAFrMoABazLAAWtRgAFrUgABa1KAAWtTAAFrU8ABa1QAAWtUQAFrVIABa1TAAWtVQAFrVcABa1YAAWtWQAFrVsABa1cAAWt1wAFrdkABa3bAAWt3QAFreAABa3hAAWt4gAFreMABa3kAAWt5gAFregABa3pAAWt6gAFrewABa3tAAWt/gAFrf8ABa4BAAWufAAFrn4ABa6AAAWuggAFroUABa6GAAWuhwAFrogABa6JAAWuiwAFro4ABa6PAAWukAAFrpIABa6TAAWvDgAFrxAABa8SAAWvFAAFrxcABa8YAAWvGQAFrxoABa8bAAWvHQAFryAABa8hAAWvIgAFryQABa8lAAWvoAAFr6IABa+lAAWvpwAFr6oABa+rAAWvrAAFr60ABa+uAAWvsAAFr7MABa+0AAWvtQAFr7cABa+4AAWwSwAFsG4ABbCOAAWwrgAFsLAABbCyAAWwtAAFsLYABbC5AAWwugAFsLsABbC+AAWwvwAFsMEABbDCAAWwxAAFsMcABbDIAAWwyQAFsMwABbDNAAWw0gAFsOsABbD0AAWw9gAFsPgABbEBAAWxBAAFsQcABbEJAAWxUgAFsXYABbGdAAWxwQAFscQABbHGAAWxyAAFscoABbHMAAWxzgAFsc8ABbHSAAWx6wAFsgwABbIOAAWyEAAFshIABbIUAAWyFgAFshgABbIaAAWyHAAFsj0ABbJAAAWyQwAFskYABbJJAAWyTAAFsk8ABbJSAAWyVQAFslcABbLSAAWy1AAFstYABbLYAAWy2wAFstwABbLdAAWy3gAFst8ABbLhAAWy4wAFsuQABbLlAAWy5wAFsugABbNjAAWzZQAFs2cABbNpAAWzbAAFs20ABbNuAAWzbwAFs3AABbNyAAWzdAAFs3UABbN2AAWzeAAFs3kABbP0AAWz9gAFs/kABbP7AAWz/gAFs/8ABbQAAAW0AQAFtAIABbQEAAW0BgAFtAcABbQIAAW0CgAFtAsABbQkAAW0JQAFtCYABbQoAAW0owAFtKUABbSnAAW0qQAFtKwABbStAAW0rgAFtK8ABbSwAAW0sgAFtLQABbS1AAW0tgAFtLgABbS5AAW1NAAFtTYABbU4AAW1OgAFtT0ABbU+AAW1PwAFtUAABbVBAAW1QwAFtUUABbVGAAW1RwAFtUkABbVKAAW1xQAFtccABbXJAAW1ywAFtc4ABbXPAAW10AAFtdEABbXSAAW11AAFtdYABbXXAAW12AAFtdoABbXbAAW2VgAFtlgABbZaAAW2XAAFtl8ABbZgAAW2YQAFtmIABbZjAAW2ZQAFtmcABbZoAAW2aQAFtmsABbZsAAW25wAFtukABbbrAAW27QAFtvAABbbxAAW28gAFtvMABbb0AAW29gAFtvgABbb5AAW2+gAFtvwABbb9AAW3RgAFt2oABbeRAAW3tQAFt7gABbe6AAW3vAAFt74ABbfAAAW3wgAFt8MABbfGAAW33wAFt/wABbf+AAW4AAAFuAIABbgEAAW4BgAFuAgABbgKAAW4JwAFuCoABbgtAAW4MAAFuDMABbg2AAW4OQAFuDwABbg+AAW4uQAFuLsABbi9AAW4vwAFuMIABbjDAAW4xAAFuMUABbjGAAW4yAAFuMoABbjLAAW4zAAFuM4ABbjPAAW5SgAFuUwABblOAAW5UAAFuVMABblUAAW5VQAFuVYABblXAAW5WQAFuVsABblcAAW5XQAFuV8ABblgAAW52wAFud0ABbnfAAW54QAFueQABbnlAAW55gAFuecABbnoAAW56gAFuewABbntAAW57gAFufAABbnxAAW6bAAFum4ABbpxAAW6cwAFunYABbp3AAW6eAAFunkABbp6AAW6fAAFun4ABbp/AAW6gAAFuoIABbqDAAW6/gAFuwAABbsCAAW7BAAFuwcABbsIAAW7CQAFuwoABbsLAAW7DQAFuw8ABbsQAAW7EQAFuxMABbsUAAW7jwAFu5EABbuTAAW7lQAFu5gABbuZAAW7mgAFu5sABbucAAW7ngAFu6AABbuhAAW7ogAFu6QABbulAAW8IAAFvCIABbwkAAW8JgAFvCkABbwqAAW8KwAFvCwABbwtAAW8LwAFvDEABbwyAAW8MwAFvDUABbw2AAW8yQAFvOwABb0MAAW9LAAFvS4ABb0wAAW9MgAFvTQABb03AAW9OAAFvTkABb08AAW9PQAFvT8ABb1AAAW9QgAFvUUABb1GAAW9RwAFvUoABb1LAAW9UAAFvWkABb1yAAW9dAAFvXYABb1/AAW9ggAFvYUABb2HAAW90AAFvfQABb4bAAW+PwAFvkIABb5EAAW+RgAFvkgABb5KAAW+TAAFvk0ABb5QAAW+aQAFvooABb6MAAW+jgAFvpAABb6SAAW+lAAFvpYABb6YAAW+mgAFvrsABb6+AAW+wQAFvsQABb7HAAW+ygAFvs0ABb7QAAW+0wAFvtUABb9QAAW/UgAFv1QABb9WAAW/WQAFv1oABb9bAAW/XAAFv10ABb9fAAW/YQAFv2IABb9jAAW/ZQAFv2YABb/hAAW/4wAFv+UABb/nAAW/6gAFv+sABb/sAAW/7QAFv+4ABb/wAAW/8gAFv/MABb/0AAW/9gAFv/cABcByAAXAdAAFwHcABcB5AAXAfAAFwH0ABcB+AAXAfwAFwIAABcCCAAXAhAAFwIUABcCGAAXAiAAFwIkABcCiAAXAowAFwKQABcCmAAXBIQAFwSMABcElAAXBJwAFwSoABcErAAXBLAAFwS0ABcEuAAXBMAAFwTIABcEzAAXBNAAFwTYABcE3AAXBsgAFwbQABcG2AAXBuAAFwbsABcG8AAXBvQAFwb4ABcG/AAXBwQAFwcMABcHEAAXBxQAFwccABcHIAAXCQwAFwkUABcJHAAXCSQAFwkwABcJNAAXCTgAFwk8ABcJQAAXCUgAFwlQABcJVAAXCVgAFwlgABcJZAAXC1AAFwtYABcLYAAXC2gAFwt0ABcLeAAXC3wAFwuAABcLhAAXC4wAFwuUABcLmAAXC5wAFwukABcLqAAXDZQAFw2cABcNpAAXDawAFw24ABcNvAAXDcAAFw3EABcNyAAXDdAAFw3YABcN3AAXDeAAFw3oABcN7AAXDxAAFw+gABcQPAAXEMwAFxDYABcQ4AAXEOgAFxDwABcQ+AAXEQAAFxEEABcREAAXEXQAFxHoABcR8AAXEfgAFxIAABcSCAAXEhAAFxIYABcSIAAXEpQAFxKgABcSrAAXErgAFxLEABcS0AAXEtwAFxLoABcS8AAXFNwAFxTkABcU7AAXFPQAFxUAABcVBAAXFQgAFxUMABcVEAAXFRgAFxUgABcVJAAXFSgAFxUwABcVNAAXFyAAFxcoABcXMAAXFzgAFxdEABcXSAAXF0wAFxdQABcXVAAXF1wAFxdkABcXaAAXF2wAFxd0ABcXeAAXGWQAFxlsABcZdAAXGXwAFxmIABcZjAAXGZAAFxmUABcZmAAXGaAAFxmoABcZrAAXGbAAFxm4ABcZvAAXG6gAFxuwABcbuAAXG8AAFxvMABcb0AAXG9QAFxvYABcb3AAXG+QAFxvsABcb8AAXG/QAFxv8ABccAAAXHewAFx30ABcd/AAXHgQAFx4QABceFAAXHhgAFx4cABceIAAXHigAFx4wABceNAAXHjgAFx5AABceRAAXIDAAFyA4ABcgQAAXIEgAFyBUABcgWAAXIFwAFyBgABcgZAAXIGwAFyB0ABcgeAAXIHwAFyCEABcgiAAXInQAFyJ8ABcihAAXIowAFyKYABcinAAXIqAAFyKkABciqAAXIrAAFyK4ABcivAAXIsAAFyLIABcizAAXJRgAFyWkABcmJAAXJqQAFyasABcmtAAXJrwAFybEABcm0AAXJtQAFybYABcm5AAXJugAFybwABcm9AAXJvwAFycIABcnDAAXJxAAFyccABcnIAAXJ0QAFyeoABcnzAAXJ9QAFyfcABcoAAAXKAwAFygYABcoIAAXKUQAFynUABcqcAAXKwAAFysMABcrFAAXKxwAFyskABcrLAAXKzQAFys4ABcrRAAXK6gAFywsABcsNAAXLDwAFyxEABcsTAAXLFQAFyxcABcsZAAXLGwAFyzwABcs/AAXLQgAFy0UABctIAAXLSwAFy04ABctRAAXLVAAFy1YABcvRAAXL0wAFy9UABcvXAAXL2gAFy9sABcvcAAXL3QAFy94ABcvgAAXL4gAFy+MABcvkAAXL5gAFy+cABcxiAAXMZAAFzGYABcxoAAXMawAFzGwABcxtAAXMbgAFzG8ABcxxAAXMcwAFzHQABcx1AAXMdwAFzHgABczzAAXM9QAFzPgABcz6AAXM/QAFzP4ABcz/AAXNAAAFzQEABc0DAAXNBQAFzQYABc0HAAXNCQAFzQoABc0jAAXNJAAFzSUABc0nAAXNogAFzaQABc2mAAXNqAAFzasABc2sAAXNrQAFza4ABc2vAAXNsQAFzbMABc20AAXNtQAFzbcABc24AAXOMwAFzjUABc43AAXOOQAFzjwABc49AAXOPgAFzj8ABc5AAAXOQgAFzkQABc5FAAXORgAFzkgABc5JAAXOxAAFzsYABc7IAAXOygAFzs0ABc7OAAXOzwAFztAABc7RAAXO0wAFztUABc7WAAXO1wAFztkABc7aAAXPVQAFz1cABc9ZAAXPWwAFz14ABc9fAAXPYAAFz2EABc9iAAXPZAAFz2YABc9nAAXPaAAFz2oABc9rAAXP5gAFz+gABc/qAAXP7AAFz+8ABc/wAAXP8QAFz/IABc/zAAXP9QAFz/cABc/4AAXP+QAFz/sABc/8AAXQRQAF0GkABdCQAAXQtAAF0LcABdC5AAXQuwAF0L0ABdC/AAXQwQAF0MIABdDFAAXQ3gAF0PsABdD9AAXQ/wAF0QEABdEDAAXRBQAF0QcABdEJAAXRJgAF0SkABdEsAAXRLwAF0TIABdE1AAXROAAF0TsABdE9AAXRuAAF0boABdG8AAXRvgAF0cEABdHCAAXRwwAF0cQABdHFAAXRxwAF0ckABdHKAAXRywAF0c0ABdHOAAXSSQAF0ksABdJNAAXSTwAF0lIABdJTAAXSVAAF0lUABdJWAAXSWAAF0loABdJbAAXSXAAF0l4ABdJfAAXS2gAF0twABdLeAAXS4AAF0uMABdLkAAXS5QAF0uYABdLnAAXS6QAF0usABdLsAAXS7QAF0u8ABdLwAAXTawAF020ABdNwAAXTcgAF03UABdN2AAXTdwAF03gABdN5AAXTewAF030ABdN+AAXTfwAF04EABdOCAAXT/QAF0/8ABdQBAAXUAwAF1AYABdQHAAXUCAAF1AkABdQKAAXUDAAF1A4ABdQPAAXUEAAF1BIABdQTAAXUjgAF1JAABdSSAAXUlAAF1JcABdSYAAXUmQAF1JoABdSbAAXUnQAF1J8ABdSgAAXUoQAF1KMABdSkAAXVHwAF1SEABdUjAAXVJQAF1SgABdUpAAXVKgAF1SsABdUsAAXVLgAF1TAABdUxAAXVMgAF1TQABdU1AAXVyAAF1es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ABec5AAXnOgAF5zsABec8AAXnPgAF50AABedBAAXnQgAF50QABedFAAXnwAAF58IABefEAAXnxgAF58kABefKAAXnywAF58wABefNAAXnzwAF59EABefSAAXn0wAF59UABefWAAXoUQAF6FMABehVAAXoVwAF6FoABehbAAXoXAAF6F0ABeheAAXoYAAF6GIABehjAAXoZAAF6GYABehnAAXo4gAF6OQABejmAAXo6AAF6OsABejsAAXo7QAF6O4ABejvAAXo8QAF6PMABej0AAXo9QAF6PcABej4AAXpQQAF6WUABemMAAXpsAAF6bMABem1AAXptwAF6bkABem7AAXpvQAF6b4ABenBAAXp2gAF6fcABen5AAXp+wAF6f0ABen/AAXqAQAF6gMABeoFAAXqIgAF6iUABeooAAXqKwAF6i4ABeoxAAXqNAAF6jcABeo5AAXqtAAF6rYABeq4AAXqugAF6r0ABeq+AAXqvwAF6sAABerBAAXqwwAF6sUABerGAAXqxwAF6skABerKAAXrRQAF60cABetJAAXrSwAF604ABetPAAXrUAAF61EABetSAAXrVAAF61YABetXAAXrWAAF61oABetbAAXr1gAF69gABevaAAXr3AAF698ABevgAAXr4QAF6+IABevjAAXr5QAF6+cABevoAAXr6QAF6+sABevsAAXsZwAF7GkABexsAAXsbgAF7HEABexyAAXscwAF7HQABex1AAXsdwAF7HkABex6AAXsewAF7H0ABex+AAXs+QAF7PsABez9AAXs/wAF7QIABe0DAAXtBAAF7QUABe0GAAXtCAAF7QoABe0LAAXtDAAF7Q4ABe0PAAXtigAF7YwABe2OAAXtkAAF7ZMABe2UAAXtlQAF7ZYABe2XAAXtmQAF7ZsABe2cAAXtnQAF7Z8ABe2gAAXuGwAF7h0ABe4fAAXuIQAF7iQABe4lAAXuJgAF7icABe4oAAXuKgAF7iwABe4tAAXuLgAF7jAABe4xAAXuxAAF7ucABe8HAAXvJwAF7ykABe8rAAXvLQAF7y8ABe8yAAXvMwAF7zQABe83AAXvOAAF7zoABe87AAXvPQAF70AABe9BAAXvQgAF70UABe9GAAXvSwAF72QABe9tAAXvbwAF73EABe96AAXvfQAF74AABe+CAAXvywAF7+8ABfAWAAXwOgAF8D0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ABgFaAAYBXAAGAV4ABgFfAAYBYAAGAWIABgFjAAYB3gAGAeAABgHiAAYB5AAGAecABgHoAAYB6QAGAeoABgHrAAYB7QAGAe8ABgHwAAYB8QAGAfMABgH0AAYCPQAGAmEABgKIAAYCrAAGAq8ABgKxAAYCswAGArUABgK3AAYCuQAGAroABgK9AAYC1gAGAvMABgL1AAYC9wAGAvkABgL7AAYC/QAGAv8ABgMBAAYDHgAGAyEABgMkAAYDJwAGAyoABgMtAAYDMAAGAzMABgM1AAYDsAAGA7IABgO0AAYDtgAGA7kABgO6AAYDuwAGA7wABgO9AAYDvwAGA8EABgPCAAYDwwAGA8UABgPGAAYEQQAGBEMABgRFAAYERwAGBEoABgRLAAYETAAGBE0ABgROAAYEUAAGBFIABgRTAAYEVAAGBFYABgRXAAYE0gAGBNQABgTWAAYE2AAGBNsABgTcAAYE3QAGBN4ABgTfAAYE4QAGBOMABgTkAAYE5QAGBOcABgToAAYFYwAGBWUABgVoAAYFagAGBW0ABgVuAAYFbwAGBXAABgVxAAYFcwAGBXUABgV2AAYFdwAGBXkABgV6AAYF9QAGBfcABgX5AAYF+wAGBf4ABgX/AAYGAAAGBgEABgYCAAYGBAAGBgYABgYHAAYGCAAGBgoABgYLAAYGhgAGBogABgaKAAYGjAAGBo8ABgaQAAYGkQAGBpIABgaTAAYGlQAGBpcABgaYAAYGmQAGBpsABgacAAYHFwAGBxkABgcbAAYHHQAGByAABgchAAYHIgAGByMABgckAAYHJgAGBygABgcpAAYHKgAGBywABgctAAYHwAAGB+MABggDAAYIIwAGCCUABggnAAYIKQAGCCsABgguAAYILwAGCDAABggzAAYINAAGCDYABgg3AAYIOQAGCDwABgg9AAYIPgAGCEEABghCAAYIRwAGCGAABghpAAYIawAGCG0ABgh2AAYIeQAGCHwABgh+AAYIxwAGCOsABgkSAAYJNgAGCTkABgk7AAYJPQAGCT8ABglBAAYJQwAGCUQABglHAAYJYAAGCYEABgmDAAYJhQAGCYcABgmJAAYJiwAGCY0ABgmPAAYJkQAGCbIABgm1AAYJuAAGCbsABgm+AAYJwQAGCcQABgnHAAYJygAGCcwABgpHAAYKSQAGCksABgpNAAYKUAAGClE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ABiR/AAYkgQAGJIIABiSDAAYkhQAGJIYABiSfAAYkoAAGJKEABiSjAAYlHgAGJSAABiUiAAYlJAAGJScABiUoAAYlKQAGJSoABiUrAAYlLQAGJS8ABiUwAAYlMQAGJTMABiU0AAYlrwAGJbEABiWzAAYltQAGJbgABiW5AAYlugAGJbsABiW8AAYlvgAGJcAABiXBAAYlwgAGJcQABiXFAAYmQAAGJkIABiZEAAYmRgAGJkkABiZKAAYmSwAGJkwABiZNAAYmTwAGJlEABiZSAAYmUwAGJlUABiZWAAYm0QAGJtMABibVAAYm1wAGJtoABibbAAYm3AAGJt0ABibeAAYm4AAGJuIABibjAAYm5AAGJuYABibnAAYnYgAGJ2QABidmAAYnaAAGJ2sABidsAAYnbQAGJ24ABidvAAYncQAGJ3MABid0AAYndQAGJ3cABid4AAYnwQAGJ+UABigMAAYoMAAGKDMABig2AAYoOAAGKDoABig8AAYoPgAGKD8ABihCAAYoWwAGKHgABih7AAYofgAGKIEABiiEAAYohwAGKIoABiiNAAYoqgAGKK0ABiiwAAYoswAGKLYABii5AAYovAAGKL8ABijBAAYpPAAGKT4ABilBAAYpQwAGKUYABilHAAYpSAAGKUkABilKAAYpTAAGKU8ABilQAAYpUQAGKVMABilUAAYpzwAGKdEABinUAAYp1gAGKdkABinaAAYp2wAGKdwABindAAYp3wAGKeIABinjAAYp5AAGKeYABinnAAYqYgAGKmQABipnAAYqaQAGKmwABiptAAYqbgAGKm8ABipwAAYqcgAGKnUABip2AAYqdwAGKnkABip6AAYq9QAGKvcABir6AAYq/AAGKv8ABisAAAYrAQAGKwIABisDAAYrBQAGKwgABisJAAYrCgAGKwwABisNAAYrkAAGK7QABivYAAYr+wAGLCIABixCAAYsaQAGLJAABiywAAYs1AAGLPgABiz6AAYs/QAGLP8ABi0BAAYtAwAGLQYABi0JAAYtCwAGLQ0ABi0QAAYtEgAGLRQABi0XAAYtGgAGLRsABi0gAAYtOQAGLT4ABi1AAAYtRQAGLUgABi1KAAYtkwAGLbcABi3eAAYuAgAGLgUABi4HAAYuCQAGLgsABi4NAAYuDwAGLhAABi4TAAYuLAAGLlEABi5TAAYuVQAGLlc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ABlIOAAZSDwAGUooABlKMAAZSjgAGUpAABlKTAAZSlAAGUpUABlKWAAZSlwAGUpkABlKbAAZSnAAGUp0ABlKfAAZSoAAGUukABlMNAAZTNAAGU1gABlNbAAZTXgAGU2AABlNiAAZTZAAGU2YABlNnAAZTagAGU4MABlOgAAZTowAGU6YABlOpAAZTrAAGU68ABlOyAAZTtQAGU9IABlPVAAZT2AAGU9sABlPeAAZT4QAGU+QABlPnAAZT6QAGVGQABlRmAAZUaQAGVGsABlRuAAZUbwAGVHAABlRxAAZUcgAGVHQABlR3AAZUeAAGVHkABlR7AAZUfAAGVPcABlT5AAZU/AAGVP4ABlUBAAZVAgAGVQMABlUEAAZVBQAGVQcABlUKAAZVCwAGVQwABlUOAAZVDwAGVYoABlWMAAZVjwAGVZEABlWUAAZVlQAGVZYABlWXAAZVmAAGVZoABlWdAAZVngAGVZ8ABlWhAAZVogAGVh0ABlYfAAZWIgAGViQABlYnAAZWKAAGVikABlYqAAZWKwAGVi0ABlYwAAZWMQAGVjIABlY0AAZWNQAGVrAABlayAAZWtAAGVrYABla5AAZWugAGVrsABla8AAZWvQAGVr8ABlbCAAZWwwAGVsQABlbGAAZWxwAGV0IABldEAAZXRgAGV0gABldLAAZXTAAGV00ABldOAAZXTwAGV1EABldUAAZXVQAGV1YABldYAAZXWQAGV9QABlfWAAZX2QAGV9sABlfeAAZX3wAGV+AABlfhAAZX4gAGV+QABlfnAAZX6AAGV+kABlfrAAZX7AAGWH8ABliiAAZYwgAGWOIABljkAAZY5gAGWOgABljqAAZY7QAGWO4ABljvAAZY8gAGWPMABlj1AAZY9gAGWPgABlj7AAZY/AAGWP0ABlkAAAZZAQAGWQYABlkfAAZZKAAGWSoABlksAAZZNQAGWTgABlk7AAZZPQAGWYYABlmqAAZZ0QAGWfUABln4AAZZ+gAGWfwABln+AAZaAAAGWgIABloDAAZaBgAGWh8ABlpAAAZaQgAGWkQABlpGAAZaSAAGWkoABlpMAAZaTgAGWlAABlpxAAZadAAGWncABlp6AAZafQAGWoAABlqDAAZahgAGWokABlqLAAZbBgAGWwgABlsKAAZbDAAGWw8ABlsQAAZbEQAGWxIABlsTAAZbFQAGWxcABlsYAAZbGQAGWxsABlscAAZblwAGW5kABlubAAZbnQAGW6AABluhAAZbogAGW6MABlukAAZbpgAGW6gABlupAAZbqgAGW6wABlutAAZcKAAGXCoABlwtAAZcLwAGXDIABlwzAAZcNAAGXDUABlw2AAZcOAAGXDoABlw7AAZcPAAGXD4ABlw/AAZcWAAGXFkABlxaAAZcXAAGXNcABlzZAAZc2wAGXN0ABlzgAAZc4QAGXOIABlzjAAZc5AAGXOYABlzoAAZc6QAGXOoABlzsAAZc7QAGXWgABl1qAAZdbAAGXW4ABl1xAAZdcgAGXXMABl10AAZddQAGXXcABl15AAZdegAGXXsABl19AAZdfgAGXfkABl37AAZd/QAGXf8ABl4CAAZeAwAGXgQABl4FAAZeBgAGXggABl4KAAZeCwAGXgwABl4OAAZeDwAGXooABl6MAAZejgAGXpAABl6TAAZelAAGXpUABl6WAAZelwAGXpkABl6bAAZenAAGXp0ABl6fAAZeoAAGXxsABl8dAAZfHwAGXyEABl8kAAZfJQAGXyYABl8nAAZfKAAGXyoABl8sAAZfLQAGXy4ABl8wAAZfMQAGX3oABl+eAAZfxQAGX+kABl/sAAZf7gAGX/AABl/yAAZf9AAGX/YABl/3AAZf+gAGYBMABmAwAAZgMgAGYDQABmA2AAZgOAAGYDoABmA8AAZgPgAGYFsABmBeAAZgYQAGYGQABmBnAAZgagAGYG0ABmBwAAZgcgAGYO0ABmDvAAZg8QAGYPMABmD2AAZg9wAGYPgABmD5AAZg+gAGYPwABmD+AAZg/wAGYQAABmECAAZhAwAGYX4ABmGAAAZhggAGYYQABmGHAAZhiAAGYYkABmGKAAZhiwAGYY0ABmGPAAZhkAAGYZEABmGTAAZhlAAGYg8ABmIRAAZiEwAGYhUABmIYAAZiGQAGYhoABmIbAAZiHAAGYh4ABmIgAAZiIQAGYiIABmIkAAZiJQAGYqAABmKiAAZipAAGYqYABmKpAAZiqgAGYqsABmKsAAZirQAGYq8ABmKxAAZisgAGYrMABmK1AAZitgAGYzEABmMzAAZjNQAGYzcABmM6AAZjOwAGYzwABmM9AAZjPgAGY0AABmNCAAZjQwAGY0QABmNGAAZjRwAGY8IABmPEAAZjxgAGY8gABmPLAAZjzAAGY80ABmPOAAZjzwAGY9EABmPTAAZj1AAGY9UABmPXAAZj2AAGZFMABmRVAAZkVwAGZFkABmRcAAZkXQAGZF4ABmRfAAZkYAAGZGIABmRkAAZkZQAGZGYABmRoAAZkaQAGZPwABmUfAAZlPwAGZV8ABmVhAAZlYwAGZWUABmVnAAZlagAGZWsABmVsAAZlbwAGZXAABmVyAAZlcwAGZXUABmV4AAZleQAGZXoABmV9AAZlfgAGZYMABmWcAAZlpQAGZacABmWpAAZlsgAGZbUABmW4AAZlugAGZgMABmYnAAZmTgAGZnIABmZ1AAZmdwAGZnkABmZ7AAZmfQAGZn8ABmaAAAZmgwAGZpwABma9AAZmvwAGZsEABmbDAAZmxQAGZscABmbJAAZmywAGZs0ABmbuAAZm8QAGZvQABmb3AAZm+gAGZv0ABmcAAAZnAwAGZwYABmcIAAZngwAGZ4UABmeHAAZniQAGZ4wABmeNAAZnjgAGZ48ABmeQAAZnkgAGZ5QABmeVAAZnlgAGZ5gABmeZAAZoFAAGaBYABmgYAAZoGgAGaB0ABmgeAAZoHwAGaCAABmghAAZoIwAGaCUABmgmAAZoJwAGaCkABmgqAAZopQAGaKcABmiqAAZorAAGaK8ABmiwAAZosQAGaLIABmizAAZotQAGaLcABmi4AAZouQAGaLsABmi8AAZo1QAGaNYABmjXAAZo2QAGaVQABmlWAAZpWAAGaVoABmldAAZpXgAGaV8ABmlgAAZpYQAGaWMABmllAAZpZgAGaWcABmlpAAZpagAGaeUABmnnAAZp6QAGaesABmnuAAZp7wAGafAABmnxAAZp8gAGafQABmn2AAZp9wAGafgABmn6AAZp+wAGanYABmp4AAZqegAGanwABmp/AAZqgAAGaoEABmqCAAZqgwAGaoUABmqHAAZqiAAGaokABmqLAAZqjAAGawcABmsJAAZrCwAGaw0ABmsQAAZrEQAGaxIABmsTAAZrFAAGaxYABmsYAAZrGQAGaxoABmscAAZrHQAGa5gABmuaAAZrnAAGa54ABmuhAAZrogAGa6MABmukAAZrpQAGa6cABmupAAZrqgAGa6sABmutAAZrrgAGa/cABmwbAAZsQgAGbGYABmxpAAZsawAGbG0ABmxvAAZscQAGbHMABmx0AAZsdwAGbJAABmytAAZsrwAGbLEABmyzAAZstQAGbLcABmy5AAZsuwAGbNgABmzbAAZs3gAGbOEABmzkAAZs5wAGbOoABmztAAZs7wAGbWoABm1sAAZtbgAGbXAABm1zAAZtdAAGbXUABm12AAZtdwAGbXkABm17AAZtfAAGbX0ABm1/AAZtgAAGbfsABm39AAZt/wAGbgEABm4EAAZuBQAGbgYABm4HAAZuCAAGbgoABm4MAAZuDQAGbg4ABm4QAAZuEQAGbowABm6OAAZukAAGbpIABm6VAAZulgAGbpcABm6YAAZumQAGbpsABm6dAAZungAGbp8ABm6hAAZuogAGbx0ABm8fAAZvIQAGbyMABm8mAAZvJwAGbygABm8pAAZvKgAGbywABm8uAAZvLwAGbzAABm8yAAZvMwAGb64ABm+wAAZvsgAGb7QABm+3AAZvuAAGb7kABm+6AAZvuwAGb70ABm+/AAZvwAAGb8EABm/DAAZvxAAGcD8ABnBBAAZwRAAGcEYABnBJAAZwSgAGcEsABnBMAAZwTQAGcE8ABnBRAAZwUgAGcFMABnBVAAZwVgAGcGUABnDgAAZw4gAGcOQABnDmAAZw6QAGcOoABnDrAAZw7AAGcO0ABnDvAAZw8QAGcPIABnDzAAZw9QAGcPYABnGJAAZxrAAGccwABnHsAAZx7gAGcfAABnHyAAZx9AAGcfcABnH4AAZx+QAGcfwABnH9AAZx/wAGcgAABnIDAAZyBgAGcgcABnIIAAZyCwAGcgwABnIRAAZyKgAGcjMABnI1AAZyOAAGckEABnJEAAZyRwAGckkABnKSAAZytgAGct0ABnMBAAZzBAAGcwYABnMIAAZzCgAGcwwABnMOAAZzDwAGcxIABnMrAAZzTAAGc04ABnNQAAZzUgAGc1QABnNWAAZzWAAGc1oABnNcAAZzfQAGc4AABnODAAZzhgAGc4kABnOMAAZzjwAGc5IABnOVAAZzlwAGdBIABnQUAAZ0FgAGdBgABnQbAAZ0HAAGdB0ABnQeAAZ0HwAGdCEABnQjAAZ0JAAGdCUABnQnAAZ0KAAGdKMABnSlAAZ0pwAGdKkABnSsAAZ0rQAGdK4ABnSvAAZ0sAAGdLIABnS0AAZ0tQAGdLYABnS4AAZ0uQAGdTQABnU2AAZ1OQAGdTsABnU+AAZ1PwAGdUAABnVBAAZ1QgAGdUQABnVGAAZ1RwAGdUgABnVKAAZ1SwAGdWQABnVlAAZ1ZgAGdWgABnXjAAZ15QAGdecABnXpAAZ17AAGde0ABnXuAAZ17wAGdfAABnXyAAZ19AAGdfUABnX2AAZ1+AAGdfkABnZ0AAZ2dgAGdngABnZ6AAZ2fQAGdn4ABnZ/AAZ2gAAGdoEABnaDAAZ2hQAGdoYABnaHAAZ2iQAGdooABncFAAZ3BwAGdwkABncLAAZ3DgAGdw8ABncQAAZ3EQAGdxIABncUAAZ3FgAGdxcABncYAAZ3GgAGdxsABneWAAZ3mAAGd5oABnecAAZ3nwAGd6AABnehAAZ3ogAGd6MABnelAAZ3pwAGd6gABnepAAZ3qwAGd6wABngnAAZ4KQAGeCsABngtAAZ4MAAGeDEABngyAAZ4MwAGeDQABng2AAZ4OAAGeDkABng6AAZ4PAAGeD0ABniGAAZ4qgAGeNEABnj1AAZ4+AAGePsABnj9AAZ4/wAGeQEABnkDAAZ5BAAGeQcABnkgAAZ5PQAGeUAABnlDAAZ5RgAGeUkABnlMAAZ5TwAGeVIABnlvAAZ5cgAGeXUABnl4AAZ5ewAGeX4ABnmBAAZ5hAAGeYYABnoBAAZ6AwAGegYABnoIAAZ6CwAGegwABnoNAAZ6DgAGeg8ABnoRAAZ6FAAGehUABnoWAAZ6GAAGehkABnqUAAZ6lgAGepkABnqbAAZ6ngAGep8ABnqgAAZ6oQAGeqIABnqkAAZ6pwAGeqgABnqpAAZ6qwAGeqwABnsnAAZ7KQAGeywABnsuAAZ7MQAGezIABnszAAZ7NAAGezUABns3AAZ7OgAGezsABns8AAZ7PgAGez8ABnu6AAZ7vAAGe78ABnvBAAZ7xAAGe8UABnvGAAZ7xwAGe8gABnvKAAZ7zQAGe84ABnvPAAZ70QAGe9IABnxNAAZ8TwAGfFEABnxTAAZ8VgAGfFcABnxYAAZ8WQAGfFoABnxcAAZ8XwAGfGAABnxhAAZ8YwAGfGQABnzfAAZ84QAGfOMABnzlAAZ86AAGfOkABnzqAAZ86wAGfOwABnzuAAZ88QAGfPIABnzzAAZ89QAGfPYABn1xAAZ9cwAGfXYABn14AAZ9ewAGfXwABn19AAZ9fgAGfX8ABn2BAAZ9hAAGfYUABn2GAAZ9iAAGfYkABn4cAAZ+PwAGfl8ABn5/AAZ+gQAGfoMABn6FAAZ+hwAGfooABn6LAAZ+jAAGfo8ABn6QAAZ+kgAGfpMABn6WAAZ+mQAGfpoABn6bAAZ+ngAGfp8ABn6kAAZ+vQAGfsYABn7IAAZ+ywAGftQABn7XAAZ+2gAGftwABn8lAAZ/SQAGf3AABn+UAAZ/lwAGf5kABn+bAAZ/nQAGf58ABn+hAAZ/ogAGf6UABn++AAZ/3wAGf+EABn/jAAZ/5QAGf+cABn/pAAZ/6wAGf+0ABn/vAAaAEAAGgBMABoAWAAaAGQAGgBwABoAfAAaAIgAGgCUABoAoAAaAKgAGgKUABoCnAAaAqQAGgKsABoCuAAaArwAGgLAABoCxAAaAsgAGgLQABoC2AAaAtwAGgLgABoC6AAaAuwAGgTYABoE4AAaBOgAGgTwABoE/AAaBQAAGgUEABoFCAAaBQwAGgUUABoFHAAaBSAAGgUkABoFLAAaBTAAGgccABoHJAAaBzAAGgc4ABoHRAAaB0gAGgdMABoHUAAaB1QAGgdcABoHZAAaB2gAGgdsABoHdAAaB3gAGgfcABoH4AAaB+QAGgfsABoJ2AAaCeAAGgnoABoJ8AAaCfwAGgoAABoKBAAaCggAGgoMABoKFAAaChwAGgogABoKJAAaCiwAGgowABoMHAAaDCQAGgwsABoMNAAaDEAAGgxEABoMSAAaDEwAGgxQABoMWAAaDGAAGgxkABoMaAAaDHAAGgx0ABoOYAAaDmgAGg5wABoOeAAaDoQAGg6IABoOjAAaDpAAGg6UABoOnAAaDqQAGg6oABoOrAAaDrQAGg64ABoQpAAaEKwAGhC0ABoQvAAaEMgAGhDMABoQ0AAaENQAGhDYABoQ4AAaEOgAGhDsABoQ8AAaEPgAGhD8ABoS6AAaEvAAGhL4ABoTAAAaEwwAGhMQABoTFAAaExgAGhMcABoTJAAaEywAGhMwABoTNAAaEzwAGhNAABoUZAAaFPQAGhWQABoWIAAaFiwAGhY4ABoWQAAaFkgAGhZQABoWWAAaFlwAGhZoABoWzAAaF0AAGhdMABoXWAAaF2QAGhdwABoXfAAaF4gAGheUABoYCAAaGBQAGhggABoYLAAaGDgAGhhEABoYUAAaGFwAGhhkABoaUAAaGlgAGhpkABoabAAaGngAGhp8ABoagAAaGoQAGhqIABoakAAaGpwAGhqgABoapAAaGqwAGhqwABocnAAaHKQAGhywABocuAAaHMQAGhzIABoczAAaHNAAGhzUABoc3AAaHOgAGhzsABoc8AAaHPgAGhz8ABoe6AAaHvAAGh78ABofBAAaHxAAGh8UABofGAAaHxwAGh8gABofKAAaHzQAGh84ABofPAAaH0QAGh9IABohNAAaITwAGiFIABohUAAaIVwAGiFgABohZAAaIWgAGiFsABohdAAaIYAAGiGEABohiAAaIZAAGiGUABojgAAaI4gAGiOQABojmAAaI6QAGiOoABojrAAaI7AAGiO0ABojvAAaI8gAGiPMABoj0AAaI9gAGiPcABolyAAaJdAAGiXYABol4AAaJewAGiXwABol9AAaJfgAGiX8ABomBAAaJhAAGiYUABomGAAaJiAAGiYkABooEAAaKBgAGigkABooLAAaKDgAGig8ABooQAAaKEQAGihIABooUAAaKFwAGihgABooZAAaKGwAGihwABoqvAAaK0gAGivIABosSAAaLFAAGixYABosYAAaLGgAGix0ABoseAAaLHwAGiyIABosjAAaLJQAGiyYABospAAaLLAAGiy0ABosuAAaLMQAGizIABos3AAaLUAAGi1kABotbAAaLXgAGi2cABotqAAaLbQAGi28ABou4AAaL3AAGjAMABownAAaMKgAGjCwABowuAAaMMAAGjDIABow0AAaMNQAGjDgABoxRAAaMcgAGjHQABox2AAaMeAAGjHoABox8AAaMfgAGjIAABoyCAAaMowAGjKYABoypAAaMrAAGjK8ABoyyAAaMtQAGjLgABoy7AAaMvQAGjTgABo06AAaNPAAGjT4ABo1BAAaNQgAGjUMABo1EAAaNRQAGjUcABo1JAAaNSgAGjUsABo1NAAaNTgAGjckABo3LAAaNzQAGjc8ABo3SAAaN0wAGjdQABo3VAAaN1gAGjdgABo3aAAaN2wAGjdwABo3eAAaN3wAGjloABo5cAAaOXwAGjmEABo5kAAaOZQAGjmYABo5nAAaOaAAGjmoABo5sAAaObQAGjm4ABo5wAAaOcQAGjooABo6LAAaOjAAGjo4ABo8JAAaPCwAGjw0ABo8PAAaPEgAGjxMABo8UAAaPFQAGjxYABo8YAAaPGgAGjxsABo8cAAaPHgAGjx8ABo+aAAaPnAAGj54ABo+gAAaPowAGj6QABo+lAAaPpgAGj6cABo+pAAaPqwAGj6wABo+tAAaPrwAGj7AABpArAAaQLQAGkC8ABpAxAAaQNAAGkDUABpA2AAaQNwAGkDgABpA6AAaQPAAGkD0ABpA+AAaQQAAGkEEABpC8AAaQvgAGkMAABpDCAAaQxQAGkMYABpDHAAaQyAAGkMkABpDLAAaQzQAGkM4ABpDPAAaQ0QAGkNIABpFNAAaRTwAGkVEABpFTAAaRVgAGkVcABpFYAAaRWQAGkVoABpFcAAaRXgAGkV8ABpFgAAaRYgAGkWMABpGsAAaR0AAGkfcABpIbAAaSHgAGkiEABpIjAAaSJQAGkicABpIpAAaSKgAGki0ABpJGAAaSYwAGkmYABpJpAAaSbAAGkm8ABpJyAAaSdQAGkngABpKVAAaSmAAGkpsABpKeAAaSoQAGkqQABpKnAAaSqgAGkqwABpMnAAaTKQAGkywABpMuAAaTMQAGkzIABpMzAAaTNAAGkzUABpM3AAaTOgAGkzsABpM8AAaTPgAGkz8ABpO6AAaTvAAGk78ABpPBAAaTxAAGk8UABpPGAAaTxwAGk8gABpPKAAaTzQAGk84ABpPPAAaT0QAGk9IABpRNAAaUTwAGlFIABpRUAAaUVwAGlFgABpRZAAaUWgAGlFsABpRdAAaUYAAGlGEABpRiAAaUZAAGlGUABpTgAAaU4gAGlOUABpTnAAaU6gAGlOsABpTsAAaU7QAGlO4ABpTwAAaU8wAGlPQABpT1AAaU9wAGlPgABpV7AAaVnwAGlcMABpXmAAaWDQAGli0ABpZUAAaWewAGlpsABpa/AAaW4wAGluUABpboAAaW6gAGluwABpbuAAaW8QAGlvQABpb2AAaW+AAGlvsABpb9AAaW/wAGlwIABpcFAAaXBgAGlwsABpckAAaXKQAGlysABpcwAAaXMwAGlzUABpd+AAaXogAGl8kABpftAAaX8AAGl/IABpf0AAaX9gAGl/gABpf6AAaX+wAGl/4ABpgXAAaYPAAGmD4ABphAAAaYQgAGmEQABphGAAaYSAAGmEoABphMAAaYTgAGmHMABph2AAaYeQAGmHwABph/AAaYggAGmIUABpiIAAaYiwAGmI4ABpiQAAaZCwAGmQ0ABpkQAAaZEgAGmRUABpkWAAaZFwAGmRgABpkZAAaZGwAGmR0ABpkeAAaZHwAGmSEABpkiAAaZMwAGmTQABpk2AAaZsQAGmbMABpm1AAaZtwAGmboABpm7AAaZvAAGmb0ABpm+AAaZwAAGmcIABpnDAAaZxAAGmcYABpnHAAaaQgAGmkQABppHAAaaSQAGmkwABppNAAaaTgAGmk8ABppQAAaaUgAGmlQABppVAAaaVgAGmlgABppZAAaaagAGmmsABpptAAaa6AAGmuoABprsAAaa7gAGmvEABpryAAaa8wAGmvQABpr1AAaa9wAGmvkABpr6AAaa+wAGmv0ABpr+AAabeQAGm3sABpt+AAabgAAGm4MABpuEAAabhQAGm4YABpuHAAabiQAGm4sABpuMAAabjQAGm48ABpuQAAaboQAGm6IABpukAAacHwAGnCEABpwjAAacJQAGnCgABpwpAAacKgAGnCsABpwsAAacLgAGnDAABpwxAAacMgAGnDQABpw1AAacsAAGnLIABpy1AAactwAGnLoABpy7AAacvAAGnL0ABpy+AAacwAAGnMIABpzDAAacxAAGnMYABpzHAAac4AAGnOEABpziAAac5AAGnV8ABp1hAAadYwAGnWUABp1oAAadaQAGnWoABp1rAAadbAAGnW4ABp1wAAadcQAGnXIABp10AAaddQAGnfAABp3yAAad9QAGnfcABp36AAad+wAGnfwABp39AAad/gAGngAABp4CAAaeAwAGngQABp4GAAaeBwAGnhwABp41AAaeRgAGnkkABp5MAAaeTwAGnlIABp5jAAaeZgAGnmkABp5sAAaebwAGnnEABp56AAaehwAGnpYABp62AAafSQAGn2wABp+MAAafrAAGn64ABp+wAAafsgAGn7QABp+3AAafuAAGn7kABp+8AAafvQAGn78ABp/AAAafwgAGn8UABp/GAAafxwAGn8oABp/LAAaf0AAGn+kABp/yAAaf9AAGn/YABp//AAagAgAGoAUABqAHAAagUAAGoHQABqCbAAagvwAGoMIABqDEAAagxgAGoMgABqDKAAagzAAGoM0ABqDQAAag6QAGoQoABqEMAAahDgAGoRAABqESAAahFAAGoRYABqEYAAahGgAGoTsABqE+AAahQQAGoUQABqFHAAahSgAGoU0ABqFQAAahUwAGoVUABqHQAAah0gAGodQABqHWAAah2QAGodoABqHbAAah3AAGod0ABqHfAAah4QAGoeIABqHjAAah5QAGoeYABqJhAAaiYwAGomUABqJnAAaiagAGomsABqJsAAaibQAGom4ABqJwAAaicgAGonMABqJ0AAaidgAGoncABqLyAAai9AAGovcABqL5AAai/AAGov0ABqL+AAai/wAGowAABqMCAAajBAAGowUABqMGAAajCAAGowkABqMiAAajIwAGoyQABqMmAAajoQAGo6MABqOlAAajpwAGo6oABqOrAAajrAAGo60ABqOuAAajsAAGo7IABqOzAAajtAAGo7YABqO3AAakMgAGpDQABqQ2AAakOAAGpDsABqQ8AAakPQAGpD4ABqQ/AAakQQAGpEMABqREAAakRQAGpEcABqRIAAakwwAGpMUABqTHAAakyQAGpMwABqTNAAakzgAGpM8ABqTQAAak0gAGpNQABqTVAAak1gAGpNgABqTZAAalVAAGpVYABqVYAAalWgAGpV0ABqVeAAalXwAGpWAABqVhAAalYwAGpWUABqVmAAalZwAGpWkABqVqAAal5QAGpecABqXpAAal6wAGpe4ABqXvAAal8AAGpfEABqXyAAal9AAGpfYABqX3AAal+AAGpfoABqX7AAamRAAGpmgABqaPAAamswAGprYABqa4AAamugAGprwABqa+AAamwAAGpsEABqbEAAam3QAGpvoABqb8AAam/gAGpwAABqcCAAanBAAGpwYABqcIAAanJQAGpygABqcrAAanLgAGpzEABqc0AAanNwAGpzoABqc8AAantwAGp7kABqe7AAanvQAGp8AABqfBAAanwgAGp8MABqfEAAanxgAGp8gABqfJAAanygAGp8wABqfNAAaoSAAGqEoABqhMAAaoTgAGqFEABqhSAAaoUwAGqFQABqhVAAaoVwAGqFkABqhaAAaoWwAGqF0ABqheAAao2QAGqNsABqjdAAao3wAGqOIABqjjAAao5AAGqOUABqjmAAao6AAGqOoABqjrAAao7AAGqO4ABqjvAAapagAGqWwABqlvAAapcQAGqXQABql1AAapdgAGqXcABql4AAapegAGqXwABql9AAapfgAGqYAABqmBAAap/AAGqf4ABqoAAAaqAgAGqgUABqoGAAaqBwAGqggABqoJAAaqCwAGqg0ABqoOAAaqDwAGqhEABqoSAAaqjQAGqo8ABqqRAAaqkwAGqpYABqqXAAaqmAAGqpkABqqaAAaqnAAGqp4ABqqfAAaqoAAGqqIABqqjAAarHgAGqyAABqsiAAarJAAGqycABqsoAAarKQAGqyoABqsrAAarLQAGqy8ABqswAAarMQAGqzMABqs0AAarxwAGq+oABqwKAAasKgAGrCwABqwuAAasMAAGrDIABqw1AAasNgAGrDcABqw6AAasOwAGrD0ABqw+AAasQQAGrEQABqxFAAasRgAGrEkABqxKAAasTwAGrGgABqxxAAascwAGrHYABqx/AAasggAGrIUABqyHAAas0AAGrPQABq0bAAatPwAGrUIABq1EAAatRgAGrUgABq1KAAatTAAGrU0ABq1QAAataQAGrYoABq2MAAatjgAGrZAABq2SAAatlAAGrZYABq2YAAatmgAGrbsABq2+AAatwQAGrcQABq3HAAatygAGrc0ABq3QAAat0wAGrdUABq5QAAauUgAGrlQABq5WAAauWQAGrloABq5bAAauXAAGrl0ABq5fAAauYQAGrmIABq5jAAauZQAGrmYABq7hAAau4wAGruUABq7nAAau6gAGrusABq7sAAau7QAGru4ABq7wAAau8gAGrvMABq70AAau9gAGrvcABq9yAAavdAAGr3cABq95AAavfAAGr30ABq9+AAavfwAGr4AABq+CAAavhAAGr4UABq+GAAaviAAGr4kABq+iAAavowAGr6QABq+mAAawIQAGsCMABrAlAAawJwAGsCoABrArAAawLAAGsC0ABrAuAAawMAAGsDIABrAzAAawNAAGsDYABrA3AAawsgAGsLQABrC2AAawuAAGsLsABrC8AAawvQAGsL4ABrC/AAawwQAGsMMABrDEAAawxQAGsMcABrDIAAaxQwAGsUUABrFHAAaxSQAGsUwABrFNAAaxTgAGsU8ABrFQAAaxUgAGsVQABrFVAAaxVgAGsVgABrFZAAax1AAGsdYABrHYAAax2gAGsd0ABrHeAAax3wAGseAABrHhAAax4wAGseUABrHmAAax5wAGsekABrHqAAayZQAGsmcABrJpAAayawAGsm4ABrJvAAaycAAGsnEABrJyAAaydAAGsnYABrJ3AAayeAAGsnoABrJ7AAayxAAGsugABrMPAAazMwAGszYABrM5AAazOwAGsz0ABrM/AAazQQAGs0IABrNFAAazXgAGs3sABrN+AAazgQAGs4QABrOHAAazigAGs40ABrOQAAazrQAGs7AABrOzAAaztgAGs7kABrO8AAazvwAGs8IABrPEAAa0PwAGtEEABrREAAa0RgAGtEkABrRKAAa0SwAGtEwABrRNAAa0TwAGtFIABrRTAAa0VAAGtFYABrRXAAa00gAGtNQABrTXAAa02QAGtNwABrTdAAa03gAGtN8ABrTgAAa04gAGtOUABrTmAAa05wAGtOkABrTqAAa1ZQAGtWcABrVqAAa1bAAGtW8ABrVwAAa1cQAGtXIABrVzAAa1dQAGtXgABrV5AAa1egAGtXwABrV9AAa1+AAGtfoABrX9AAa1/wAGtgIABrYDAAa2BAAGtgUABrYGAAa2CAAGtgsABrYMAAa2DQAGtg8ABrYQAAa2iwAGto0ABraPAAa2kQAGtpQABraVAAa2lgAGtpcABraYAAa2mgAGtp0ABraeAAa2nwAGtqEABraiAAa3HQAGtx8ABrchAAa3IwAGtyYABrcnAAa3KAAGtykABrcqAAa3LAAGty8ABrcwAAa3MQAGtzMABrc0AAa3rwAGt7EABre0AAa3tgAGt7kABre6AAa3uwAGt7wABre9AAa3vwAGt8IABrfDAAa3xAAGt8YABrfHAAa4WgAGuH0ABridAAa4vQAGuL8ABrjBAAa4wwAGuMUABrjIAAa4yQAGuMoABrjNAAa4zgAGuNAABrjRAAa40wAGuNYABrjXAAa42AAGuNsABrjcAAa45QAGuP4ABrkHAAa5CQAGuQsABrkUAAa5FwAGuRoABrkcAAa5ZQAGuYkABrmwAAa51AAGudcABrnZAAa52wAGud0ABrnfAAa54QAGueIABrnlAAa5/gAGuh8ABrohAAa6IwAGuiUABronAAa6KQAGuisABrotAAa6LwAGulAABrpTAAa6VgAGulkABrpcAAa6XwAGumIABrplAAa6aAAGumoABrrlAAa65wAGuukABrrrAAa67gAGuu8ABrrwAAa68QAGuvIABrr0AAa69gAGuvcABrr4AAa6+gAGuvsABrt2AAa7eAAGu3oABrt8AAa7fwAGu4AABruBAAa7ggAGu4MABruFAAa7hwAGu4gABruJAAa7iwAGu4wABrwHAAa8CQAGvAwABrwOAAa8EQAGvBIABrwTAAa8FAAGvBUABrwXAAa8GQAGvBoABrwbAAa8HQAGvB4ABrw3AAa8OAAGvDkABrw7AAa8tgAGvLgABry6AAa8vAAGvL8ABrzAAAa8wQAGvMIABrzDAAa8xQAGvMcABrzIAAa8yQAGvMsABrzMAAa9RwAGvUkABr1LAAa9TQAGvVAABr1RAAa9UgAGvVMABr1UAAa9VgAGvVgABr1ZAAa9WgAGvVwABr1dAAa92AAGvdoABr3cAAa93gAGveEABr3iAAa94wAGveQABr3lAAa95wAGvekABr3qAAa96wAGve0ABr3uAAa+aQAGvmsABr5tAAa+bwAGvnIABr5zAAa+dAAGvnUABr52AAa+eAAGvnoABr57AAa+fAAGvn4ABr5/AAa++gAGvvwABr7+AAa/AAAGvwMABr8EAAa/BQAGvwYABr8HAAa/CQAGvwsABr8MAAa/DQAGvw8ABr8QAAa/WQAGv30ABr+kAAa/yAAGv8sABr/NAAa/zwAGv9EABr/TAAa/1QAGv9YABr/ZAAa/8gAGwA8ABsARAAbAEwAGwBUABsAXAAbAGQAGwBsABsAdAAbAOgAGwD0ABsBAAAbAQwAGwEYABsBJAAbATAAGwE8ABsBRAAbAzAAGwM4ABsDQAAbA0gAGwNUABsDWAAbA1wAGwNgABsDZAAbA2wAGwN0ABsDeAAbA3wAGwOEABsDiAAbBXQAGwV8ABsFhAAbBYwAGwWYABsFnAAbBaAAGwWkABsFqAAbBbAAGwW4ABsFvAAbBcAAGwXIABsFzAAbB7gAGwfAABsHyAAbB9AAGwfcABsH4AAbB+QAGwfoABsH7AAbB/QAGwf8ABsIAAAbCAQAGwgMABsIEAAbCfwAGwoEABsKDAAbChQAGwogABsKJAAbCigAGwosABsKMAAbCjgAGwpAABsKRAAbCkgAGwpQABsKVAAbDEAAGwxIABsMUAAbDFgAGwxkABsMaAAbDGwAGwxwABsMdAAbDHwAGwyEABsMiAAbDIwAGwyUABsMmAAbDoQAGw6MABsOmAAbDqAAGw6sABsOsAAbDrQAGw64ABsOvAAbDsQAGw7MABsO0AAbDtQAGw7cABsO4AAbD1wAGxFIABsRUAAbEVgAGxFgABsRbAAbEXAAGxF0ABsReAAbEXwAGxGEABsRjAAbEZAAGxGUABsRnAAbEaAAGxPsABsUeAAbFPgAGxV4ABsVgAAbFYgAGxWQABsVmAAbFaQAGxWoABsVrAAbFbgAGxW8ABsVxAAbFcgAGxXQABsV3AAbFeAAGxXkABsV8AAbFfQAGxYIABsWbAAbFpAAGxaYABsWoAAbFsQAGxbQABsW3AAbFuQAGxgIABsYmAAbGTQAGxnEABsZ0AAbGdgAGxngABsZ6AAbGfAAGxn4ABsZ/AAbGggAGxpsABsa8AAbGvgAGxsAABsbCAAbGxAAGxsYABsbIAAbGygAGxswABsbtAAbG8AAGxvMABsb2AAbG+QAGxvwABsb/AAbHAgAGxwUABscHAAbHggAGx4QABseGAAbHiAAGx4sABseMAAbHjQAGx44ABsePAAbHkQAGx5MABseUAAbHlQAGx5cABseYAAbIEwAGyBUABsgXAAbIGQAGyBwABsgdAAbIHgAGyB8ABsggAAbIIgAGyCQABsglAAbIJgAGyCgABsgpAAbIpAAGyKYABsipAAbIqwAGyK4ABsivAAbIsAAGyLEABsiyAAbItAAGyLYABsi3AAbIuAAGyLoABsi7AAbI1AAGyNUABsjWAAbI2AAGyVMABslVAAbJVwAGyVkABslcAAbJXQAGyV4ABslfAAbJYAAGyWIABslkAAbJZQAGyWYABsloAAbJaQAGyeQABsnmAAbJ6AAGyeoABsntAAbJ7gAGye8ABsnwAAbJ8QAGyfMABsn1AAbJ9gAGyfcABsn5AAbJ+gAGynUABsp3AAbKeQAGynsABsp+AAbKfwAGyoAABsqBAAbKggAGyoQABsqGAAbKhwAGyogABsqKAAbKiwAGywYABssIAAbLCgAGywwABssPAAbLEAAGyxEABssSAAbLEwAGyxUABssXAAbLGAAGyxkABssbAAbLHAAGy5cABsuZAAbLmwAGy50ABsugAAbLoQAGy6IABsujAAbLpAAGy6YABsuoAAbLqQAGy6oABsusAAbLrQAGy/YABswaAAbMQQAGzGUABsxoAAbMagAGzGwABsxuAAbMcAAGzHIABsxzAAbMdgAGzI8ABsysAAbMrgAGzLAABsyyAAbMtAAGzLYABsy4AAbMugAGzNcABszaAAbM3QAGzOAABszjAAbM5gAGzOkABszsAAbM7gAGzWkABs1rAAbNbQAGzW8ABs1yAAbNcwAGzXQABs11AAbNdgAGzXgABs16AAbNewAGzXwABs1+AAbNfwAGzfoABs38AAbN/gAGzgAABs4DAAbOBAAGzgUABs4GAAbOBwAGzgkABs4LAAbODAAGzg0ABs4PAAbOEAAGzosABs6NAAbOjwAGzpEABs6UAAbOlQAGzpYABs6XAAbOmAAGzpoABs6cAAbOnQAGzp4ABs6gAAbOoQAGzxwABs8eAAbPIQAGzyMABs8mAAbPJwAGzygABs8pAAbPKgAGzywABs8uAAbPLwAGzzAABs8yAAbPMwAGz64ABs+wAAbPsgAGz7QABs+3AAbPuAAGz7kABs+6AAbPuwAGz70ABs+/AAbPwAAGz8EABs/DAAbPxAAG0D8ABtBBAAbQQwAG0EUABtBIAAbQSQAG0EoABtBLAAbQTAAG0E4ABtBQAAbQUQAG0FIABtBUAAbQVQAG0NAABtDSAAbQ1AAG0NYABtDZAAbQ2gAG0NsABtDcAAbQ3QAG0N8ABtDhAAbQ4gAG0OMABtDlAAbQ5gAG0PcABtD4AAbQ+gAG0XUABtF3AAbReQAG0XsABtF+AAbRfwAG0YAABtGBAAbRggAG0YQABtGHAAbRiAAG0YkABtGLAAbRjAAG0gcABtIJAAbSCwAG0g0ABtIQAAbSEQAG0hIABtITAAbSFAAG0hYABtIZAAbSGgAG0hsABtIdAAbSHgAG0pkABtKbAAbSngAG0qAABtKjAAbSpAAG0qUABtKmAAbSpwAG0qkABtKsAAbSrQAG0q4ABtKwAAbSsQAG00QABtNnAAbThwAG06cABtOpAAbTqwAG060ABtOvAAbTsgAG07MABtO0AAbTtwAG07gABtO6AAbTuwAG074ABtPBAAbTwgAG08MABtPGAAbTxwAG08wABtPlAAbT7gAG0/AABtPzAAbT/AAG0/8ABtQCAAbUBAAG1E0ABtRxAAbUmAAG1LwABtS/AAbUwQAG1MMABtTFAAbUxwAG1MkABtTKAAbUzQAG1OYABtUHAAbVCQAG1QsABtUNAAbVDwAG1REABtUTAAbVFQAG1RcABtU4AAbVOwAG1T4ABtVBAAbVRAAG1UcABtVKAAbVTQAG1VAABtVSAAbVzQAG1c8ABtXRAAbV0wAG1dYABtXXAAbV2AAG1dkABtXaAAbV3AAG1d4ABtXfAAbV4AAG1eIABtXjAAbWXgAG1mAABtZiAAbWZAAG1mcABtZoAAbWaQAG1moABtZrAAbWbQAG1m8ABtZwAAbWcQAG1nMABtZ0AAbW7wAG1vEABtb0AAbW9gAG1vkABtb6AAbW+wAG1vwABtb9AAbW/wAG1wEABtcCAAbXAwAG1wUABtcGAAbXHwAG1yAABtchAAbXIwAG154ABtegAAbXogAG16QABtenAAbXqAAG16kABteqAAbXqwAG160ABtevAAbXsAAG17EABtezAAbXtAAG2C8ABtgxAAbYMwAG2DUABtg4AAbYOQAG2DoABtg7AAbYPAAG2D4ABthAAAbYQQAG2EIABthEAAbYRQAG2MAABtjCAAbYxAAG2MYABtjJAAbYygAG2MsABtjMAAbYzQAG2M8ABtjRAAbY0gAG2NMABtjVAAbY1gAG2VEABtlTAAbZVQAG2VcABtlaAAbZWwAG2VwABtldAAbZXgAG2WAABtliAAbZYwAG2WQABtlmAAbZZwAG2eIABtnkAAbZ5gAG2egABtnrAAbZ7AAG2e0ABtnuAAbZ7wAG2fEABtnzAAbZ9AAG2fUABtn3AAbZ+AAG2kEABtplAAbajAAG2rAABtqzAAbatgAG2rgABtq6AAbavAAG2r4ABtq/AAbawgAG2tsABtr4AAba+wAG2v4ABtsBAAbbBAAG2wcABtsKAAbbDQAG2yoABtstAAbbMAAG2zMABts2AAbbOQAG2zwABts/AAbbQQAG27wABtu+AAbbwQAG28MABtvGAAbbxwAG28gABtvJAAbbygAG28wABtvPAAbb0AAG29EABtvTAAbb1AAG3E8ABtxRAAbcVAAG3FYABtxZAAbcWgAG3FsABtxcAAbcXQAG3F8ABtxiAAbcYwAG3GQABtxmAAbcZwAG3OIABtzkAAbc5wAG3OkABtzsAAbc7QAG3O4ABtzvAAbc8AAG3PIABtz1AAbc9gAG3PcABtz5AAbc+gAG3XUABt13AAbdegAG3XwABt1/AAbdgAAG3YEABt2CAAbdgwAG3YUABt2IAAbdiQAG3YoABt2MAAbdjQAG3hAABt40AAbeWAAG3nsABt6iAAbewgAG3ukABt8QAAbfMAAG31QABt94AAbfegAG330ABt9/AAbfgQAG34MABt+GAAbfiQAG34sABt+NAAbfkAAG35IABt+UAAbflwAG35oABt+bAAbfoAAG37kABt++AAbfwAAG38UABt/IAAbfygAG4BMABuA3AAbgXgAG4IIABuCFAAbghwAG4IkABuCLAAbgjQAG4I8ABuCQAAbgkwAG4KwABuDRAAbg0wAG4NUABuDXAAbg2QAG4NsABuDdAAbg3wAG4OEABuDjAAbhCAAG4QsABuEOAAbhEQAG4RQABuEXAAbhGgAG4R0ABuEgAAbhIwAG4SUABuGgAAbhogAG4aUABuGnAAbhqgAG4asABuGsAAbhrQAG4a4ABuGwAAbhsgAG4bMABuG0AAbhtgAG4bcABuHIAAbhyQAG4csABuJGAAbiSAAG4koABuJMAAbiTwAG4lAABuJRAAbiUgAG4lMABuJVAAbiVwAG4lgABuJZAAbiWwAG4lwABuLXAAbi2QAG4twABuLeAAbi4QAG4uIABuLjAAbi5AAG4uUABuLnAAbi6QAG4uoABuLrAAbi7QAG4u4ABuL/AAbjAAAG4wIABuN9AAbjfwAG44EABuODAAbjhgAG44cABuOIAAbjiQAG44oABuOMAAbjjgAG448ABuOQAAbjkgAG45MABuQOAAbkEAAG5BMABuQVAAbkGAAG5BkABuQaAAbkGwAG5BwABuQeAAbkIAAG5CEABuQiAAbkJAAG5CUABuQ2AAbkNwAG5DkABuS0AAbktgAG5LgABuS6AAbkvQAG5L4ABuS/AAbkwAAG5MEABuTDAAbkxQAG5MYABuTHAAbkyQAG5MoABuVFAAblRwAG5UoABuVMAAblTwAG5VAABuVRAAblUgAG5VMABuVVAAblVwAG5VgABuVZAAblWwAG5VwABuV1AAbldgAG5XcABuV5AAbl9AAG5fYABuX4AAbl+gAG5f0ABuX+AAbl/wAG5gAABuYBAAbmAwAG5gUABuYGAAbmBwAG5gkABuYKAAbmhQAG5ocABuaKAAbmjAAG5o8ABuaQAAbmkQAG5pIABuaTAAbmlQAG5pcABuaYAAbmmQAG5psABuacAAbmuwAG5tQABubZAAbm3AAG5uEABubkAAbm5gAG5vMABueGAAbnqQAG58kABufpAAbn6wAG5+0ABufvAAbn8QAG5/QABuf1AAbn9gAG5/kABuf6AAbn/AAG5/0ABugAAAboAwAG6AQABugFAAboCAAG6AkABugOAAboJwAG6DAABugyAAboNQAG6D4ABuhBAAboRAAG6EYABuiPAAboswAG6NoABuj+AAbpAQAG6QMABukFAAbpBwAG6QkABukLAAbpDAAG6Q8ABukoAAbpSQAG6UsABulNAAbpTwAG6VEABulTAAbpVQAG6VcABulZAAbpegAG6X0ABumAAAbpgwAG6YYABumJAAbpjAAG6Y8ABumSAAbplAAG6g8ABuoRAAbqEwAG6hUABuoYAAbqGQAG6hoABuobAAbqHAAG6h4ABuogAAbqIQAG6iIABuokAAbqJQAG6qAABuqiAAbqpAAG6qYABuqpAAbqqgAG6qsABuqsAAbqrQAG6q8ABuqxAAbqsgAG6rMABuq1AAbqtgAG6zEABuszAAbrNgAG6zgABus7AAbrPAAG6z0ABus+AAbrPwAG60EAButDAAbrRAAG60UAButHAAbrSAAG62EAButiAAbrYwAG62UABuvgAAbr4gAG6+QABuvmAAbr6QAG6+oABuvrAAbr7AAG6+0ABuvvAAbr8QAG6/IABuvzAAbr9QAG6/YABuxxAAbscwAG7HUABux3AAbsegAG7HsABux8AAbsfQAG7H4ABuyAAAbsggAG7IMABuyEAAbshgAG7IcABu0CAAbtBAAG7QYABu0IAAbtCwAG7QwABu0NAAbtDgAG7Q8ABu0RAAbtEwAG7RQABu0VAAbtFwAG7RgABu2TAAbtlQAG7ZcABu2ZAAbtnAAG7Z0ABu2eAAbtnwAG7aAABu2iAAbtpAAG7aUABu2mAAbtqAAG7akABu4kAAbuJgAG7igABu4qAAbuLQAG7i4ABu4vAAbuMAAG7jEABu4zAAbuNQAG7jYABu43AAbuOQAG7joABu6DAAbupwAG7s4ABu7yAAbu9QAG7vgABu76AAbu/AAG7v4ABu8AAAbvAQAG7wQABu8dAAbvOgAG7z0ABu9AAAbvQwAG70YABu9JAAbvTAAG708ABu9sAAbvbwAG73IABu91AAbveAAG73sABu9+AAbvgQAG74MABu/+AAbwAAAG8AMABvAFAAbwCAAG8AkABvAKAAbwCwAG8AwABvAOAAbwEQAG8BIABvATAAbwFQAG8BYABvCRAAbwkwAG8JYABvCYAAbwmwAG8JwABvCdAAbwngAG8J8ABvChAAbwpAAG8KUABvCmAAbwqAAG8KkABvEkAAbxJgAG8SkABvErAAbxLgAG8S8ABvEwAAbxMQAG8TIABvE0AAbxNwAG8TgABvE5AAbxOwAG8TwABvG3AAbxuQAG8bwABvG+AAbxwQAG8cIABvHDAAbxxAAG8cUABvHHAAbxygAG8csABvHMAAbxzgAG8c8ABvJKAAbyTAAG8k4ABvJQAAbyUwAG8lQABvJVAAbyVgAG8lcABvJZAAbyXAAG8l0ABvJeAAbyYAAG8mEABvLcAAby3gAG8uAABvLiAAby5QAG8uYABvLnAAby6AAG8ukABvLrAAby7gAG8u8ABvLwAAby8gAG8vMABvNuAAbzcAAG83MABvN1AAbzeAAG83kABvN6AAbzewAG83wABvN+AAbzgQAG84IABvODAAbzhQAG84YABvOXAAbznAAG858ABvOhAAbz2gAG8+QABvPtAAbz8AAG8/IABvP1AAbz+AAG8/sABvP+AAb0AwAG9KYABvTKAAb07gAG9Q4ABvU1AAb1XAAG9XwABvWjAAb1xwAG9eoABvYRAAb2NQAG9lkABvZ9AAb2pAAG9qUABvanAAb2qQAG9qwABvauAAb2sQAG9rMABva1AAb2uAAG9roABva8AAb2vwAG9sIABvbEAAb2xgAG9sgABvbLAAb2zgAG9tEABvbWAAb27wAG9vQABvb2AAb2+wAG9v4ABvcAAAb3SQAG920ABveUAAb3uAAG97sABve9AAb3vwAG98EABvfDAAb3xQAG98YABvfJAAb34gAG+AcABvgJAAb4CwAG+A0ABvgPAAb4EQAG+BMABvgVAAb4FwAG+BkABvg+AAb4QQAG+EQABvhHAAb4SgAG+E0ABvhQAAb4UwAG+FYABvhZAAb4WwAG+NYABvjYAAb42wAG+N0ABvjgAAb44QAG+OIABvjjAAb45AAG+OYABvjoAAb46QAG+OoABvjsAAb47QAG+P4ABvj/AAb5AQAG+XwABvl+AAb5gAAG+YIABvmFAAb5hgAG+YcABvmIAAb5iQAG+YsABvmNAAb5jgAG+Y8ABvmRAAb5kgAG+g0ABvoPAAb6EgAG+hQABvoXAAb6GAAG+hkABvoaAAb6GwAG+h0ABvofAAb6IAAG+iEABvojAAb6JAAG+jUABvo2AAb6OAAG+rMABvq1AAb6twAG+rkABvq8AAb6vQAG+r4ABvq/AAb6wAAG+sIABvrEAAb6xQAG+sYABvrIAAb6yQAG+0QABvtGAAb7SQAG+0sABvtOAAb7TwAG+1AABvtRAAb7UgAG+1QABvtWAAb7VwAG+1gABvtaAAb7WwAG+2wABvttAAb7bwAG++oABvvsAAb77gAG+/AABvvzAAb79AAG+/UABvv2AAb79wAG+/kABvv7AAb7/AAG+/0ABvv/AAb8AAAG/HsABvx9AAb8gAAG/IIABvyFAAb8hgAG/IcABvyIAAb8iQAG/IsABvyNAAb8jgAG/I8ABvyRAAb8kgAG/KsABvysAAb8rQAG/K8ABv0qAAb9LAAG/S4ABv0wAAb9MwAG/TQABv01AAb9NgAG/TcABv05AAb9OwAG/TwABv09AAb9PwAG/UAABv27AAb9vQAG/cAABv3CAAb9xQAG/cYABv3HAAb9yAAG/ckABv3LAAb9zQAG/c4ABv3PAAb90QAG/dIABv3oAAb+AQAG/hYABv4ZAAb+HAAG/h8ABv4iAAb+JQAG/joABv49AAb+QAAG/kMABv5GAAb+SQAG/ksABv5jAAb+cQAG/okABv6fAAb+pwAG/zoABv9dAAb/fQAG/50ABv+fAAb/oQAG/6MABv+lAAb/qAAG/6kABv+qAAb/rQAG/64ABv+wAAb/sQAG/7MABv+2AAb/twAG/7gABv+7AAb/vAAG/8EABv/aAAb/4wAG/+UABv/nAAb/8AAG//MABv/2AAb/+AAHAEEABwBlAAcAjAAHALAABwCzAAcAtQAHALcABwC5AAcAuwAHAL0ABwC+AAcAwQAHANoABwD7AAcA/QAHAP8ABwEBAAcBAwAHAQUABwEHAAcBCQAHAQsABwEsAAcBLwAHATIABwE1AAcBOAAHATsABwE+AAcBQQAHAUQABwFGAAcBwQAHAcMABwHFAAcBxwAHAcoABwHLAAcBzAAHAc0ABwHOAAcB0AAHAdIABwHTAAcB1AAHAdYABwHXAAcCUgAHAlQABwJWAAcCWAAHAlsABwJcAAcCXQAHAl4ABwJfAAcCYQAHAmMABwJkAAcCZQAHAmcABwJoAAcC4wAHAuUABwLoAAcC6gAHAu0ABwLuAAcC7wAHAvAABwLxAAcC8wAHAvUABwL2AAcC9wAHAvkABwL6AAcDEwAHAxQABwMVAAcDFwAHA5IABwOUAAcDlgAHA5gABwObAAcDnAAHA50ABwOeAAcDnwAHA6EABwOjAAcDpAAHA6UABwOnAAcDqAAHBCMABwQlAAcEJwAHBCkABwQsAAcELQAHBC4ABwQvAAcEMAAHBDIABwQ0AAcENQAHBDYABwQ4AAcEOQAHBLQABwS2AAcEuAAHBLoABwS9AAcEvgAHBL8ABwTAAAcEwQAHBMMABwTFAAcExgAHBMcABwTJAAcEygAHBUUABwVHAAcFSQAHBUsABwVOAAcFTwAHBVAABwVRAAcFUgAHBVQABwVWAAcFVwAHBVgABwVaAAcFWwAHBdYABwXYAAcF2gAHBdwABwXfAAcF4AAHBeEABwXiAAcF4wAHBeUABwXnAAcF6AAHBekABwXrAAcF7AAHBjUABwZZAAcGgAAHBqQABwanAAcGqQAHBqsABwatAAcGrwAHBrEABwayAAcGtQAHBs4ABwbrAAcG7QAHBu8ABwbxAAcG8wAHBvUABwb3AAcG+QAHBxYABwcZAAcHHAAHBx8ABwciAAcHJQAHBygABwcrAAcHLQAHB6gABweqAAcHrAAHB64ABwexAAcHsgAHB7MABwe0AAcHtQAHB7cABwe5AAcHugAHB7sABwe9AAcHvgAHCDkABwg7AAcIPQAHCD8ABwhCAAcIQwAHCEQABwhFAAcIRgAHCEgABwhKAAcISwAHCEwABwhOAAcITwAHCMoABwjMAAcIzgAHCNAABwjTAAcI1AAHCNUABwjWAAcI1wAHCNkABwjbAAcI3AAHCN0ABwjfAAcI4AAHCVsABwldAAcJYAAHCWIABwllAAcJZgAHCWcABwloAAcJaQAHCWsABwltAAcJbgAHCW8ABwlxAAcJcgAHCe0ABwnvAAcJ8QAHCfMABwn2AAcJ9wAHCfgABwn5AAcJ+gAHCfwABwn+AAcJ/wAHCgAABwoCAAcKAwAHCn4ABwqAAAcKggAHCoQABwqHAAcKiAAHCokABwqKAAcKiwAHCo0ABwqPAAcKkAAHCpEABwqTAAcKlAAHCw8ABwsRAAcLEwAHCxUABwsYAAcLGQAHCxoABwsbAAcLHAAHCx4ABwsgAAcLIQAHCyIABwskAAcLJQAHC7gABwvbAAcL+wAHDBsABwwdAAcMHwAHDCEABwwjAAcMJgAHDCcABwwoAAcMKwAHDCwABwwuAAcMLwAHDDEABww0AAcMNQAHDDYABww5AAcMOgAHDD8ABwxYAAcMYQAHDGMABwxlAAcMbgAHDHEABwx0AAcMdgAHDL8ABwzjAAcNCgAHDS4ABw0xAAcNMwAHDTUABw03AAcNOQAHDTsABw08AAcNPwAHDVgABw15AAcNewAHDX0ABw1/AAcNgQAHDYM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ABx7eAAce3wAHHuEABx7jAAce5AAHHuUABx7nAAce6AAHHzEABx9VAAcffAAHH6AABx+jAAcfpQAHH6cABx+pAAcfqwAHH60ABx+uAAcfsQAHH8oABx/nAAcf6QAHH+sABx/tAAcf7wAHH/EABx/zAAcf9QAHIBIAByAVAAcgGAAHIBsAByAeAAcgIQAHICQAByAnAAcgKQAHIKQAByCmAAcgqAAHIKoAByCtAAcgrgAHIK8AByCwAAcgsQAHILMAByC1AAcgtgAHILcAByC5AAcgugAHITUAByE3AAchOQAHITsAByE+AAchPwAHIUAAByFBAAchQgAHIUQAByFGAAchRwAHIUgAByFKAAchSwAHIcYAByHIAAchygAHIcwAByHPAAch0AAHIdEAByHSAAch0wAHIdUAByHXAAch2AAHIdkAByHbAAch3AAHIlcAByJZAAciXAAHIl4AByJhAAciYgAHImMAByJkAAciZQAHImcAByJpAAciagAHImsAByJtAAcibgAHIukAByLrAAci7QAHIu8AByLyAAci8wAHIvQAByL1AAci9gAHIvgAByL6AAci+wAHIvwAByL+AAci/wAHI3oAByN8AAcjfgAHI4AAByODAAcjhAAHI4UAByOGAAcjhwAHI4kAByOLAAcjjAAHI40AByOPAAcjkAAHJAsAByQNAAckDwAHJBEAByQUAAckFQAHJBYAByQXAAckGAAHJBoAByQcAAckHQAHJB4AByQgAAckIQAHJLQAByTXAAck9wAHJRcAByUZAAclGwAHJR0AByUfAAclIgAHJSMAByUkAAclJwAHJSgAByUqAAclKwAHJS0AByUwAAclMQAHJTIAByU1AAclNgAHJTsAByVUAAclXQAHJV8AByVhAAclagAHJW0AByVwAAclcgAHJbsAByXfAAcmBgAHJioAByYtAAcmLwAHJjEAByYzAAcmNQAHJjcAByY4AAcmOwAHJlQAByZ1AAcmdwAHJnkAByZ7AAcmfQAHJn8AByaBAAcmgwAHJoUAByamAAcmqQAHJqwAByavAAcmsgAHJrUABya4AAcmuwAHJr4ABybAAAcnOwAHJz0AByc/AAcnQQAHJ0QABydFAAcnRgAHJ0cABydIAAcnSgAHJ0wABydNAAcnTgAHJ1AABydRAAcnzAAHJ84AByfQAAcn0gAHJ9UAByfWAAcn1wAHJ9gAByfZAAcn2wAHJ90AByfeAAcn3wAHJ+EAByfiAAcoXQAHKF8AByhiAAcoZAAHKGcAByhoAAcoaQAHKGoAByhrAAcobQAHKG8AByhwAAcocQAHKHMAByh0AAcojQAHKI4AByiPAAcokQAHKQwABykOAAcpEAAHKRIABykVAAcpFgAHKRcABykYAAcpGQAHKRsABykdAAcpHgAHKR8ABykhAAcpIgAHKZ0ABymfAAcpoQAHKaMABymmAAcppwAHKagABympAAcpqgAHKawABymuAAcprwAHKbAABymyAAcpswAHKi4AByowAAcqMgAHKjQAByo3AAcqOAAHKjkAByo6AAcqOwAHKj0AByo/AAcqQAAHKkEABypDAAcqRAAHKr8AByrBAAcqwwAHKsUAByrIAAcqyQAHKsoAByrLAAcqzAAHKs4AByrQAAcq0QAHKtIAByrUAAcq1QAHK1AABytSAAcrVAAHK1YABytZAAcrWgAHK1sABytcAAcrXQAHK18ABythAAcrYgAHK2MABytlAAcrZgAHK68AByvTAAcr+gAHLB4ABywhAAcsIwAHLCUABywnAAcsKQAHLCsABywsAAcsLwAHLEgAByxlAAcsZwAHLGkAByxrAAcsbQAHLG8AByxxAAcscwAHLJAAByyTAAcslgAHLJkAByycAAcsnwAHLKIAByylAAcspwAHLSIABy0kAActJgAHLSgABy0rAActLAAHLS0ABy0uAActLwAHLTEABy0zAActNAAHLTUABy03AActOAAHLbMABy21AActtwAHLbkABy28AActvQAHLb4ABy2/AActwAAHLcIABy3EAActxQAHLcYABy3IAActyQAHLkQABy5GAAcuSAAHLkoABy5NAAcuTgAHLk8ABy5QAAcuUQAHLlMABy5VAAcuVgAHLlcABy5ZAAcuWgAHLtUABy7XAAcu2gAHLtwABy7fAAcu4AAHLuEABy7iAAcu4wAHLuUABy7nAAcu6AAHLukABy7rAAcu7AAHL2cABy9pAAcvawAHL20ABy9wAAcvcQAHL3IABy9zAAcvdAAHL3YABy94AAcveQAHL3oABy98AAcvfQAHL/gABy/6AAcv/AAHL/4ABzABAAcwAgAHMAMABzAEAAcwBQAHMAcABzAJAAcwCgAHMAsABzANAAcwDgAHMIk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AB1U7AAdVPQAHVT8AB1VBAAdVQwAHVUUAB1VHAAdVbAAHVW8AB1VyAAdVdQAHVXgAB1V7AAdVfgAHVYEAB1WEAAdVhwAHVYkAB1YEAAdWBgAHVgkAB1YLAAdWDgAHVg8AB1YQAAdWEQAHVhIAB1YUAAdWFgAHVhcAB1YYAAdWGgAHVhsAB1YsAAdWLQAHVi8AB1aqAAdWrAAHVq4AB1awAAdWswAHVrQAB1a1AAdWtgAHVrcAB1a5AAdWuwAHVrwAB1a9AAdWvwAHVsAAB1c7AAdXPQAHV0AAB1dCAAdXRQAHV0YAB1dHAAdXSAAHV0kAB1dLAAdXTQAHV04AB1dPAAdXUQAHV1IAB1djAAdXZAAHV2YAB1fhAAdX4wAHV+UAB1fnAAdX6gAHV+sAB1fsAAdX7QAHV+4AB1fwAAdX8gAHV/MAB1f0AAdX9gAHV/cAB1hyAAdYdAAHWHcAB1h5AAdYfAAHWH0AB1h+AAdYfwAHWIAAB1iCAAdYhAAHWIUAB1iGAAdYiAAHWIkAB1iaAAdYmwAHWJ0AB1kYAAdZGgAHWRwAB1keAAdZIQAHWSIAB1kjAAdZJAAHWSUAB1knAAdZKQAHWSoAB1krAAdZLQAHWS4AB1mpAAdZqwAHWa4AB1mwAAdZswAHWbQAB1m1AAdZtgAHWbcAB1m5AAdZuwAHWbwAB1m9AAdZvwAHWcAAB1nZAAdZ2gAHWdsAB1ndAAdaWAAHWloAB1pcAAdaXgAHWmEAB1piAAdaYwAHWmQAB1plAAdaZwAHWmkAB1pqAAdaawAHWm0AB1puAAda6QAHWusAB1ruAAda8AAHWvMAB1r0AAda9QAHWvYAB1r3AAda+QAHWvsAB1r8AAda/QAHWv8AB1sAAAdbFAAHWy0AB1syAAdbNQAHWzoAB1s9AAdbPwAHW00AB1vgAAdcAwAHXCMAB1xDAAdcRQAHXEcAB1xJAAdcSwAHXE4AB1xPAAdcUAAHXFMAB1xUAAdcVgAHXFcAB1xaAAdcXQAHXF4AB1xfAAdcYgAHXGMAB1xoAAdcgQAHXIoAB1yMAAdcjwAHXJgAB1ybAAdcngAHXKAAB1zpAAddDQAHXTQAB11YAAddWwAHXV0AB11fAAddYQAHXWMAB11lAAddZgAHXWkAB12CAAddowAHXaUAB12nAAddqQAHXasAB12tAAddrwAHXbEAB12zAAdd1AAHXdcAB13aAAdd3QAHXeAAB13jAAdd5gAHXekAB13sAAdd7gAHXmkAB15rAAdebQAHXm8AB15yAAdecwAHXnQAB151AAdedgAHXngAB156AAdeewAHXnwAB15+AAdefwAHXvoAB178AAde/gAHXwAAB18DAAdfBAAHXwUAB18GAAdfBwAHXwkAB18LAAdfDAAHXw0AB18PAAdfEAAHX4sAB1+NAAdfkAAHX5IAB1+VAAdflgAHX5cAB1+YAAdfmQAHX5sAB1+dAAdfngAHX58AB1+hAAdfogAHX7sAB1+8AAdfvQAHX78AB2A6AAdgPAAHYD4AB2BAAAdgQwAHYEQAB2BFAAdgRgAHYEcAB2BJAAdgSwAHYEwAB2BNAAdgTwAHYFAAB2DLAAdgzQAHYM8AB2DRAAdg1AAHYNUAB2DWAAdg1wAHYNgAB2DaAAdg3AAHYN0AB2DeAAdg4AAHYOEAB2FcAAdhXgAHYWAAB2FiAAdhZQAHYWYAB2FnAAdhaAAHYWkAB2FrAAdhbQAHYW4AB2FvAAdhcQAHYXIAB2HtAAdh7wAHYfEAB2HzAAdh9gAHYfcAB2H4AAdh+QAHYfoAB2H8AAdh/gAHYf8AB2IAAAdiAgAHYgMAB2J+AAdigAAHYoIAB2KEAAdihwAHYogAB2KJAAdiigAHYosAB2KNAAdijwAHYpAAB2KRAAdikwAHYpQAB2LdAAdjAQAHYygAB2NMAAdjTwAHY1IAB2NUAAdjVgAHY1gAB2NaAAdjWwAHY14AB2N3AAdjlAAHY5cAB2OaAAdjnQAHY6AAB2OjAAdjpgAHY6kAB2PGAAdjyQAHY8wAB2PPAAdj0gAHY9UAB2PYAAdj2wAHY90AB2RYAAdkWgAHZF0AB2RfAAdkYgAHZGMAB2RkAAdkZQAHZGYAB2RoAAdkawAHZGwAB2RtAAdkbwAHZHAAB2TrAAdk7QAHZPAAB2TyAAdk9QAHZPYAB2T3AAdk+AAHZPkAB2T7AAdk/gAHZP8AB2UAAAdlAgAHZQMAB2V+AAdlgAAHZYMAB2WFAAdliAAHZYkAB2WKAAdliwAHZYwAB2WOAAdlkQAHZZIAB2WTAAdllQAHZZYAB2YRAAdmEwAHZhYAB2YYAAdmGwAHZhwAB2YdAAdmHgAHZh8AB2YhAAdmJAAHZiUAB2YmAAdmKAAHZikAB2akAAdmpgAHZqgAB2aqAAdmrQAHZq4AB2avAAdmsAAHZrEAB2azAAdmtgAHZrcAB2a4AAdmugAHZrsAB2c2AAdnOAAHZzoAB2c8AAdnPwAHZ0AAB2dBAAdnQgAHZ0MAB2dFAAdnSAAHZ0kAB2dKAAdnTAAHZ00AB2fIAAdnygAHZ80AB2fPAAdn0gAHZ9MAB2fUAAdn1QAHZ9YAB2fYAAdn2wAHZ9wAB2fdAAdn3wAHZ+AAB2fxAAdn9gAHZ/kAB2f7AAdoNAAHaDcAB2g5AAdoPAAHaD8AB2hCAAdoRQAHaEoAB2hbAAdodAAHaIUAB2ieAAdotQAHaMcAB2lCAAdpRAAHaUYAB2lIAAdpSwAHaUwAB2lNAAdpTgAHaU8AB2lRAAdpVAAHaVUAB2lWAAdpWAAHaVkAB2nUAAdp1gAHadgAB2naAAdp3QAHad4AB2nfAAdp4AAHaeEAB2njAAdp5gAHaecAB2noAAdp6gAHaesAB2pmAAdqaAAHamsAB2ptAAdqcAAHanEAB2pyAAdqcwAHanQAB2p2AAdqeQAHanoAB2p7AAdqfQAHan4AB2qPAAdqlAAHapcAB2qZAAdqngAHatcAB2raAAdq3AAHat8AB2riAAdq5QAHaugAB2trAAdrjwAHa7MAB2vWAAdr/QAHbB0AB2xEAAdsawAHbIsAB2yvAAds0wAHbNUAB2zYAAds2gAHbNwAB2zeAAds4QAHbOQAB2zmAAds6AAHbOsAB2ztAAds7wAHbPIAB2z1AAds9gAHbPsAB20UAAdtGQAHbRsAB20gAAdtIwAHbSUAB21uAAdtkgAHbbkAB23dAAdt4AAHbeIAB23kAAdt5gAHbegAB23qAAdt6wAHbe4AB24HAAduLAAHbi4AB24wAAduMgAHbjQAB242AAduOAAHbjoAB248AAduPgAHbmMAB25mAAduaQAHbmwAB25vAAducgAHbnUAB254AAduewAHbn4AB26AAAdu+wAHbv0AB28AAAdvAgAHbwUAB28GAAdvBwAHbwgAB28JAAdvCwAHbw0AB28OAAdvDwAHbxEAB28SAAdvIwAHbyQAB28mAAdvoQAHb6MAB2+lAAdvpwAHb6oAB2+rAAdvrAAHb60AB2+uAAdvsAAHb7IAB2+zAAdvtAAHb7YAB2+3AAdwMgAHcDQAB3A3AAdwOQAHcDwAB3A9AAdwPgAHcD8AB3BAAAdwQgAHcEQAB3BFAAdwRgAHcEgAB3BJAAdwWgAHcFsAB3BdAAdw2AAHcNoAB3DcAAdw3gAHcOEAB3DiAAdw4wAHcOQAB3DlAAdw5wAHcOkAB3DqAAdw6wAHcO0AB3DuAAdxaQAHcWsAB3FuAAdxcAAHcXMAB3F0AAdxdQAHcXYAB3F3AAdxeQAHcXsAB3F8AAdxfQAHcX8AB3GAAAdxkQAHcZIAB3GUAAdyDwAHchEAB3ITAAdyFQAHchgAB3IZAAdyGgAHchsAB3IcAAdyHgAHciAAB3IhAAdyIgAHciQAB3IlAAdyoAAHcqIAB3KlAAdypwAHcqoAB3KrAAdyrAAHcq0AB3KuAAdysAAHcrIAB3KzAAdytAAHcrYAB3K3AAdy0AAHctEAB3LSAAdy1AAHc08AB3NRAAdzUwAHc1UAB3NYAAdzWQAHc1oAB3NbAAdzXAAHc14AB3NgAAdzYQAHc2IAB3NkAAdzZQAHc+AAB3PiAAdz5QAHc+cAB3PqAAdz6wAHc+wAB3PtAAdz7gAHc/AAB3PyAAdz8wAHc/QAB3P2AAdz9wAHdBQAB3QtAAd0MgAHdDUAB3Q6AAd0PQAHdD8AB3RUAAd05wAHdQoAB3UqAAd1SgAHdUwAB3VOAAd1UAAHdVIAB3VVAAd1VgAHdVcAB3VaAAd1WwAHdV0AB3VeAAd1YQAHdWQAB3VlAAd1ZgAHdWkAB3VqAAd1bwAHdYgAB3WRAAd1kwAHdZYAB3WfAAd1ogAHdaUAB3WnAAd18AAHdhQAB3Y7AAd2XwAHdmIAB3ZkAAd2ZgAHdmgAB3ZqAAd2bAAHdm0AB3ZwAAd2iQAHdqoAB3asAAd2rgAHdrAAB3ayAAd2tAAHdrYAB3a4AAd2ugAHdtsAB3beAAd24QAHduQAB3bnAAd26gAHdu0AB3bwAAd28wAHdvUAB3dwAAd3cgAHd3QAB3d2AAd3eQAHd3oAB3d7AAd3fAAHd30AB3d/AAd3gQAHd4IAB3eDAAd3hQAHd4YAB3gBAAd4AwAHeAUAB3gHAAd4CgAHeAsAB3gMAAd4DQAHeA4AB3gQAAd4EgAHeBMAB3gUAAd4FgAHeBcAB3iSAAd4lAAHeJcAB3iZAAd4nAAHeJ0AB3ieAAd4nwAHeKAAB3iiAAd4pAAHeKUAB3imAAd4qAAHeKkAB3jCAAd4wwAHeMQAB3jGAAd5QQAHeUMAB3lFAAd5RwAHeUoAB3lLAAd5TAAHeU0AB3lOAAd5UAAHeVIAB3lTAAd5VAAHeVYAB3lXAAd50gAHedQAB3nWAAd52AAHedsAB3ncAAd53QAHed4AB3nfAAd54QAHeeMAB3nkAAd55QAHeecAB3noAAd6YwAHemUAB3pnAAd6aQAHemwAB3ptAAd6bgAHem8AB3pwAAd6cgAHenQAB3p1AAd6dgAHengAB3p5AAd69AAHevYAB3r4AAd6+gAHev0AB3r+AAd6/wAHewAAB3sBAAd7AwAHewUAB3sGAAd7BwAHewkAB3sKAAd7hQAHe4cAB3uJAAd7iwAHe44AB3uPAAd7kAAHe5EAB3uSAAd7lAAHe5YAB3uXAAd7mAAHe5oAB3ubAAd75AAHfAgAB3wvAAd8UwAHfFYAB3xZAAd8WwAHfF0AB3xfAAd8YQAHfGIAB3xlAAd8fgAHfJsAB3yeAAd8oQAHfKQAB3ynAAd8qgAHfK0AB3ywAAd8zQAHfNAAB3zTAAd81gAHfNkAB3zcAAd83wAHfOIAB3zkAAd9XwAHfWEAB31kAAd9ZgAHfWkAB31qAAd9awAHfWwAB31tAAd9bwAHfXIAB31zAAd9dAAHfXYAB313AAd98gAHffQAB333AAd9+QAHffwAB339AAd9/gAHff8AB34AAAd+AgAHfgUAB34GAAd+BwAHfgkAB34KAAd+hQAHfocAB36KAAd+jAAHfo8AB36QAAd+kQAHfpIAB36TAAd+lQAHfpgAB36ZAAd+mgAHfpwAB36dAAd/GAAHfxoAB38dAAd/HwAHfyIAB38jAAd/JAAHfyUAB38mAAd/KAAHfysAB38sAAd/LQAHfy8AB38wAAd/swAHf9cAB3/7AAeAHgAHgEUAB4BlAAeAjAAHgLMAB4DTAAeA9wAHgRsAB4EdAAeBIAAHgSIAB4EkAAeBJgAHgSkAB4EsAAeBLgAHgTAAB4EzAAeBNQAHgTcAB4E6AAeBPQAHgT4AB4FDAAeBXAAHgWEAB4FjAAeBaAAHgWsAB4FtAAeBtgAHgdoAB4IBAAeCJQAHgigAB4IqAAeCLAAHgi4AB4IwAAeCMgAHgjMAB4I2AAeCTwAHgnQAB4J2AAeCeAAHgnoAB4J8AAeCfgAHgoAAB4KCAAeChAAHgoYAB4KrAAeCrgAHgrEAB4K0AAeCtwAHgroAB4K9AAeCwAAHgsMAB4LGAAeCyAAHg0MAB4NFAAeDSAAHg0oAB4NNAAeDTgAHg08AB4NQAAeDUQAHg1MAB4NVAAeDVgAHg1cAB4NZAAeDWgAHg2sAB4NsAAeDbgAHg+kAB4PrAAeD7QAHg+8AB4PyAAeD8wAHg/QAB4P1AAeD9gAHg/gAB4P6AAeD+wAHg/wAB4P+AAeD/wAHhHoAB4R8AAeEfwAHhIEAB4SEAAeEhQAHhIYAB4SHAAeEiAAHhIoAB4SMAAeEjQAHhI4AB4SQAAeEkQAHhKIAB4SjAAeEpQAHhSAAB4UiAAeFJAAHhSYAB4UpAAeFKgAHhSsAB4UsAAeFLQAHhS8AB4UxAAeFMgAHhTMAB4U1AAeFNgAHhbEAB4WzAAeFtgAHhbgAB4W7AAeFvAAHhb0AB4W+AAeFvwAHhcEAB4XDAAeFxAAHhcUAB4XHAAeFyAAHhdkAB4XaAAeF3AAHhlcAB4ZZAAeGWwAHhl0AB4ZgAAeGYQAHhmIAB4ZjAAeGZAAHhmYAB4ZoAAeGaQAHhmoAB4ZsAAeGbQAHhugAB4bqAAeG7QAHhu8AB4byAAeG8wAHhvQAB4b1AAeG9gAHhvgAB4b6AAeG+wAHhvwAB4b+AAeG/wAHhxgAB4cZAAeHGgAHhxwAB4eXAAeHmQAHh5sAB4edAAeHoAAHh6EAB4eiAAeHowAHh6QAB4emAAeHqAAHh6kAB4eqAAeHrAAHh60AB4goAAeIKgAHiC0AB4gvAAeIMgAHiDMAB4g0AAeINQAHiDYAB4g4AAeIOgAHiDsAB4g8AAeIPgAHiD8AB4hUAAeIbQAHiHYAB4h5AAeIfAAHiIUAB4iIAAeIiwAHiI0AB4iYAAeIpwAHiToAB4ldAAeJfQAHiZ0AB4mfAAeJoQAHiaMAB4mlAAeJqAAHiakAB4mqAAeJrQAHia4AB4mwAAeJsQAHibQAB4m3AAeJuAAHibkAB4m8AAeJvQAHicIAB4nbAAeJ5AAHieYAB4npAAeJ8gAHifUAB4n4AAeJ+gAHikMAB4pnAAeKjgAHirIAB4q1AAeKtwAHirkAB4q7AAeKvQAHir8AB4rAAAeKwwAHitwAB4r9AAeK/wAHiwEAB4sDAAeLBQAHiwcAB4sJAAeLCwAHiw0AB4suAAeLMQAHizQAB4s3AAeLOgAHiz0AB4tAAAeLQwAHi0YAB4tIAAeLwwAHi8UAB4vHAAeLyQAHi8wAB4vNAAeLzgAHi88AB4vQAAeL0gAHi9QAB4vVAAeL1gAHi9gAB4vZAAeMVAAHjFYAB4xYAAeMWgAHjF0AB4xeAAeMXwAHjGAAB4xhAAeMYwAHjGUAB4xmAAeMZwAHjGkAB4xqAAeM5QAHjOcAB4zqAAeM7AAHjO8AB4zwAAeM8QAHjPIAB4zzAAeM9QAHjPcAB4z4AAeM+QAHjPsAB4z8AAeNFQAHjRYAB40XAAeNGQAHjZQAB42WAAeNmAAHjZoAB42dAAeNngAHjZ8AB42gAAeNoQAHjaMAB42lAAeNpgAHjacAB42pAAeNqgAHjiUAB44nAAeOKQAHjisAB44uAAeOLwAHjjAAB44xAAeOMgAHjjQAB442AAeONwAHjjgAB446AAeOOwAHjrYAB464AAeOugAHjrwAB46/AAeOwAAHjsEAB47CAAeOwwAHjsUAB47HAAeOyAAHjskAB47LAAeOzAAHj0cAB49JAAePSwAHj00AB49QAAePUQAHj1IAB49TAAePVAAHj1YAB49YAAePWQAHj1oAB49cAAePXQAHj9gAB4/aAAeP3AAHj94AB4/hAAeP4gAHj+MAB4/kAAeP5QAHj+cAB4/pAAeP6gAHj+sAB4/tAAeP7gAHkDcAB5BbAAeQggAHkKYAB5CpAAeQrAAHkK4AB5CwAAeQsgAHkLQAB5C1AAeQuAAHkNEAB5DuAAeQ8QAHkPQAB5D3AAeQ+gAHkP0AB5EAAAeRAwAHkSAAB5EjAAeRJgAHkSkAB5EsAAeRLwAHkTIAB5E1AAeRNwAHkbIAB5G0AAeRtwAHkbkAB5G8AAeRvQAHkb4AB5G/AAeRwAAHkcIAB5HFAAeRxgAHkccAB5HJAAeRygAHkkUAB5JHAAeSSgAHkkwAB5JPAAeSUAAHklEAB5JSAAeSUwAHklUAB5JYAAeSWQAHkloAB5JcAAeSXQAHktgAB5LaAAeS3QAHkt8AB5LiAAeS4wAHkuQAB5LlAAeS5gAHkugAB5LrAAeS7AAHku0AB5LvAAeS8AAHk2sAB5NtAAeTcAAHk3IAB5N1AAeTdgAHk3cAB5N4AAeTeQAHk3sAB5N+AAeTfwAHk4AAB5OCAAeTgwAHk/4AB5QAAAeUAgAHlAQAB5QHAAeUCAAHlAkAB5QKAAeUCwAHlA0AB5QQAAeUEQAHlBIAB5QUAAeUFQAHlJAAB5SSAAeUlAAHlJYAB5SZAAeUmgAHlJsAB5ScAAeUnQAHlJ8AB5SiAAeUowAHlKQAB5SmAAeUpwAHlSIAB5UkAAeVJwAHlSkAB5UsAAeVLQAHlS4AB5UvAAeVMAAHlTIAB5U1AAeVNgAHlTcAB5U5AAeVOgAHlc0AB5XwAAeWEAAHljAAB5YyAAeWNAAHljYAB5Y4AAeWOwAHljwAB5Y9AAeWQAAHlkEAB5ZDAAeWRAAHlkcAB5ZKAAeWSwAHlkwAB5ZPAAeWUAAHllUAB5ZuAAeWdwAHlnkAB5Z8AAeWhQAHlogAB5aLAAeWjQAHltYAB5b6AAeXIQAHl0UAB5dIAAeXSgAHl0wAB5dOAAeXUAAHl1IAB5dTAAeXVgAHl28AB5eQAAeXkgAHl5QAB5eWAAeXmAAHl5oAB5ecAAeXngAHl6AAB5fBAAeXxAAHl8cAB5fKAAeXzQAHl9AAB5fTAAeX1gAHl9kAB5fbAAeYVgAHmFgAB5haAAeYXAAHmF8AB5hgAAeYYQAHmGIAB5hjAAeYZQAHmGcAB5hoAAeYaQAHmGsAB5hsAAeY5wAHmOkAB5jrAAeY7QAHmPAAB5jxAAeY8gAHmPMAB5j0AAeY9gAHmPgAB5j5AAeY+gAHmPwAB5j9AAeZeAAHmXoAB5l9AAeZfwAHmYIAB5mDAAeZhAAHmYUAB5mGAAeZiAAHmYoAB5mLAAeZjAAHmY4AB5mPAAeZqAAHmakAB5mqAAeZrAAHmicAB5opAAeaKwAHmi0AB5owAAeaMQAHmjIAB5ozAAeaNAAHmjYAB5o4AAeaOQAHmjoAB5o8AAeaPQAHmrgAB5q6AAeavAAHmr4AB5rBAAeawgAHmsMAB5rEAAeaxQAHmscAB5rJAAeaygAHmssAB5rNAAeazgAHm0kAB5tLAAebTQAHm08AB5tSAAebUwAHm1QAB5tVAAebVgAHm1gAB5taAAebWwAHm1wAB5teAAebXwAHm9oAB5vcAAeb3gAHm+AAB5vjAAeb5AAHm+UAB5vmAAeb5wAHm+kAB5vrAAeb7AAHm+0AB5vvAAeb8AAHnGsAB5xtAAecbwAHnHEAB5x0AAecdQAHnHYAB5x3AAeceAAHnHoAB5x8AAecfQAHnH4AB5yAAAecgQAHnMoAB5zuAAedFQAHnTkAB508AAedPwAHnUEAB51DAAedRQAHnUcAB51IAAedSwAHnWQAB52BAAedhAAHnYcAB52KAAedjQAHnZAAB52TAAedlgAHnbMAB522AAeduQAHnbwAB52/AAedwgAHncUAB53IAAedygAHnkUAB55HAAeeSgAHnkwAB55PAAeeUAAHnlEAB55SAAeeUwAHnlUAB55YAAeeWQAHnloAB55cAAeeXQAHntgAB57aAAee3QAHnt8AB57iAAee4wAHnuQAB57lAAee5gAHnugAB57rAAee7AAHnu0AB57vAAee8AAHnvIAB59tAAefbwAHn3IAB590AAefdwAHn3gAB595AAefegAHn3sAB599AAefgAAHn4EAB5+CAAefhAAHn4UAB6AAAAegAgAHoAUAB6AHAAegCgAHoAsAB6AMAAegDQAHoA4AB6AQAAegEwAHoBQAB6AVAAegFwAHoBgAB6CTAAeglQAHoJcAB6CZAAegnAAHoJ0AB6CeAAegnwAHoKAAB6CiAAegpQAHoKYAB6CnAAegqQAHoKoAB6ElAAehJwAHoSkAB6ErAAehLgAHoS8AB6EwAAehMQAHoTIAB6E0AAehNwAHoTgAB6E5AAehOwAHoTwAB6G3AAehuQAHobwAB6G+AAehwQAHocIAB6HDAAehxAAHocUAB6HHAAehygAHocsAB6HMAAehzgAHoc8AB6JiAAeihQAHoqUAB6LFAAeixwAHoskAB6LLAAeizQAHotAAB6LRAAei0gAHotUAB6LWAAei2AAHotkAB6LcAAei3wAHouAAB6LhAAei5AAHouUAB6LqAAejAwAHowwAB6MOAAejEQAHoxoAB6MdAAejIAAHoyIAB6NrAAejjwAHo7YAB6PaAAej3QAHo98AB6PhAAej4wAHo+UAB6PnAAej6AAHo+sAB6QEAAekJQAHpCcAB6QpAAekKwAHpC0AB6QvAAekMQAHpDMAB6Q1AAekVgAHpFkAB6RcAAekXwAHpGIAB6RlAAekaAAHpGsAB6RuAAekcAAHpOsAB6TtAAek7wAHpPEAB6T0AAek9QAHpPYAB6T3AAek+AAHpPoAB6T8AAek/QAHpP4AB6UAAAelAQAHpXwAB6V+AAelgAAHpYIAB6WFAAelhgAHpYcAB6WIAAeliQAHpYsAB6WNAAeljgAHpY8AB6WRAAelkgAHpg0AB6YPAAemEgAHphQAB6YXAAemGAAHphkAB6YaAAemGwAHph0AB6YfAAemIAAHpiEAB6YjAAemJAAHpj0AB6Y+AAemPwAHpkEAB6a8AAemvgAHpsAAB6bCAAemxQAHpsYAB6bHAAemyAAHpskAB6bLAAemzQAHps4AB6bPAAem0QAHptIAB6dNAAenTwAHp1EAB6dTAAenVgAHp1cAB6dYAAenWQAHp1oAB6dcAAenXgAHp18AB6dgAAenYgAHp2MAB6feAAen4AAHp+IAB6fkAAen5wAHp+gAB6fpAAen6gAHp+sAB6ftAAen7wAHp/AAB6fxAAen8wAHp/QAB6hvAAeocQAHqHMAB6h1AAeoeAAHqHkAB6h6AAeoewAHqHwAB6h+AAeogAAHqIEAB6iCAAeohAAHqIUAB6kAAAepAgAHqQQAB6kGAAepCQAHqQoAB6kLAAepDAAHqQ0AB6kPAAepEQAHqRIAB6kTAAepFQAHqRYAB6lfAAepgwAHqaoAB6nOAAep0QAHqdQAB6nWAAep2AAHqdoAB6ncAAep3QAHqeAAB6n5AAeqFgAHqhkAB6ocAAeqHwAHqiIAB6olAAeqKAAHqisAB6pIAAeqSwAHqk4AB6pRAAeqVAAHqlcAB6paAAeqXQAHql8AB6raAAeq3AAHqt8AB6rhAAeq5AAHquUAB6rmAAeq5wAHqugAB6rqAAeq7QAHqu4AB6rvAAeq8QAHqvIAB6ttAAerbwAHq3IAB6t0AAerdwAHq3gAB6t5AAeregAHq3sAB6t9AAergAAHq4EAB6uCAAerhAAHq4UAB6wAAAesAgAHrAUAB6wHAAesCgAHrAsAB6wMAAesDQAHrA4AB6wQAAesEwAHrBQAB6wVAAesFwAHrBgAB6yTAAeslQAHrJgAB6yaAAesnQAHrJ4AB6yfAAesoAAHrKEAB6yjAAespgAHrKcAB6yoAAesqgAHrKsAB60mAAetKAAHrSoAB60sAAetLwAHrTAAB60xAAetMgAHrTMAB601AAetOAAHrTkAB606AAetPAAHrT0AB624AAetugAHrbwAB62+AAetwQAHrcIAB63DAAetxAAHrcUAB63HAAetygAHrcsAB63MAAetzgAHrc8AB65KAAeuTAAHrk8AB65RAAeuVAAHrlUAB65WAAeuVwAHrlgAB65aAAeuXQAHrl4AB65fAAeuYQAHrmIAB65zAAeueAAHrnsAB659AAeutgAHrrkAB667AAeuvgAHrsEAB67EAAeuxwAHrswAB69HAAevSQAHr0sAB69NAAevUAAHr1EAB69SAAevUwAHr1QAB69WAAevWQAHr1oAB69bAAevXQAHr14AB6/ZAAev2wAHr90AB6/fAAev4gAHr+MAB6/kAAev5QAHr+YAB6/oAAev6wAHr+wAB6/tAAev7wAHr/AAB7BrAAewbQAHsHAAB7ByAAewdQAHsHYAB7B3AAeweAAHsHkAB7B7AAewfgAHsH8AB7CAAAewggAHsIMAB7CUAAewmQAHsJwAB7CeAAewpwAHsSIAB7EkAAexJgAHsSgAB7ErAAexLAAHsS0AB7EuAAexLwAHsTEAB7E0AAexNQAHsTYAB7E4AAexOQAHsbQAB7G2AAexuAAHsboAB7G9AAexvgAHsb8AB7HAAAexwQAHscMAB7HGAAexxwAHscgAB7HKAAexywAHskYAB7JIAAeySwAHsk0AB7JQAAeyUQAHslIAB7JTAAeyVAAHslYAB7JZAAeyWgAHslsAB7JdAAeyXgAHsm8AB7JwAAeycgAHsoMAB7KMAAeyjwAHspIAB7KUAAezDwAHsxEAB7MTAAezFQAHsxgAB7MZAAezGgAHsxsAB7McAAezHgAHsyEAB7MiAAezIwAHsyUAB7MmAAezoQAHs6MAB7OlAAezpwAHs6oAB7OrAAezrAAHs60AB7OuAAezsAAHs7MAB7O0AAeztQAHs7cAB7O4AAe0MwAHtDUAB7Q4AAe0OgAHtD0AB7Q+AAe0PwAHtEAAB7RBAAe0QwAHtEYAB7RHAAe0SAAHtEoAB7RLAAe03gAHtQEAB7UhAAe1QQAHtUMAB7VFAAe1RwAHtUkAB7VMAAe1TQAHtU4AB7VRAAe1UgAHtVQAB7VVAAe1WAAHtVsAB7VcAAe1XQAHtWAAB7VhAAe1ZgAHtX8AB7WIAAe1igAHtY0AB7WWAAe1mQAHtZwAB7WeAAe15wAHtgsAB7YyAAe2VgAHtlkAB7ZbAAe2XQAHtl8AB7ZhAAe2YwAHtmQAB7ZnAAe2gAAHtqEAB7ajAAe2pQAHtqcAB7apAAe2qwAHtq0AB7avAAe2sQAHttIAB7bVAAe22AAHttsAB7beAAe24QAHtuQAB7bnAAe26gAHtuwAB7dnAAe3aQAHt2sAB7dtAAe3cAAHt3EAB7dyAAe3cwAHt3QAB7d2AAe3eAAHt3kAB7d6AAe3fAAHt30AB7f4AAe3+gAHt/wAB7f+AAe4AQAHuAIAB7gDAAe4BAAHuAUAB7gHAAe4CQAHuAoAB7gLAAe4DQAHuA4AB7iJAAe4iwAHuI4AB7iQAAe4kwAHuJQAB7iVAAe4lgAHuJcAB7iZAAe4mwAHuJwAB7idAAe4nwAHuKAAB7i5AAe4ugAHuLsAB7i9AAe5OAAHuToAB7k8AAe5PgAHuUEAB7lCAAe5QwAHuUQAB7lFAAe5RwAHuUkAB7lKAAe5SwAHuU0AB7lOAAe5yQAHucsAB7nNAAe5zwAHudIAB7nTAAe51AAHudUAB7nWAAe52AAHudoAB7nbAAe53AAHud4AB7nfAAe6WgAHulwAB7peAAe6YAAHumMAB7pkAAe6ZQAHumYAB7pnAAe6aQAHumsAB7psAAe6bQAHum8AB7pwAAe66wAHuu0AB7rvAAe68QAHuvQAB7r1AAe69gAHuvcAB7r4AAe6+gAHuvwAB7r9AAe6/gAHuwAAB7sBAAe7fAAHu34AB7uAAAe7ggAHu4UAB7uGAAe7hwAHu4gAB7uJAAe7iwAHu40AB7uOAAe7jwAHu5EAB7uSAAe72wAHu/8AB7wmAAe8SgAHvE0AB7xQAAe8UgAHvFQAB7xWAAe8WAAHvFkAB7xcAAe8dQAHvJIAB7yVAAe8mAAHvJsAB7yeAAe8oQAHvKQAB7ynAAe8xAAHvMcAB7zKAAe8zQAHvNAAB7zTAAe81gAHvNkAB7zbAAe9VgAHvVgAB71bAAe9XQAHvWAAB71hAAe9YgAHvWMAB71kAAe9ZgAHvWkAB71qAAe9awAHvW0AB71uAAe96QAHvesAB73uAAe98AAHvfMAB730AAe99QAHvfYAB733AAe9+QAHvfwAB739AAe9/gAHvgAAB74BAAe+fAAHvn4AB76BAAe+gwAHvoYAB76HAAe+iAAHvokAB76KAAe+jAAHvo8AB76QAAe+kQAHvpMAB76UAAe/DwAHvxEAB78UAAe/FgAHvxkAB78aAAe/GwAHvxwAB78dAAe/HwAHvyIAB78jAAe/JAAHvyYAB78nAAe/qgAHv84AB7/yAAfAFQAHwDwAB8BcAAfAgwAHwKoAB8DKAAfA7gAHwRIAB8EUAAfBFwAHwRkAB8EbAAfBHQAHwSAAB8EjAAfBJQAHwScAB8EqAAfBLAAHwS4AB8ExAAfBNAAHwTUAB8E6AAfBUwAHwVgAB8FaAAfBXwAHwWIAB8FkAAfBrQAHwdEAB8H4AAfCHAAHwh8AB8IhAAfCIwAHwiUAB8InAAfCKQAHwioAB8ItAAfCRgAHwmsAB8JtAAfCbwAHwnEAB8JzAAfCdQAHwncAB8J5AAfCewAHwn0AB8KiAAfCpQAHwqgAB8KrAAfCrgAHwrEAB8K0AAfCtwAHwroAB8K9AAfCvwAHwzoAB8M8AAfDPwAHw0EAB8NEAAfDRQAHw0YAB8NHAAfDSAAHw0oAB8NMAAfDTQAHw04AB8NQAAfDUQAHw2IAB8NjAAfDZQAHw+AAB8PiAAfD5AAHw+YAB8PpAAfD6gAHw+sAB8PsAAfD7QAHw+8AB8PxAAfD8gAHw/MAB8P1AAfD9gAHxHEAB8RzAAfEdgAHxHgAB8R7AAfEfAAHxH0AB8R+AAfEfwAHxIEAB8SDAAfEhAAHxIUAB8SHAAfEiAAHxJkAB8SaAAfEnAAHxRcAB8UZAAfFGwAHxR0AB8UgAAfFIQAHxSIAB8UjAAfFJAAHxSYAB8UoAAfFKQAHxSoAB8UsAAfFLQAHxagAB8WqAAfFrQAHxa8AB8WyAAfFswAHxbQAB8W1AAfFtgAHxbgAB8W6AAfFuwAHxbwAB8W+AAfFvwAHxdAAB8XRAAfF0wAHxk4AB8ZQAAfGUgAHxlQAB8ZXAAfGWAAHxlkAB8ZaAAfGWwAHxl0AB8ZfAAfGYAAHxmEAB8ZjAAfGZAAHxt8AB8bhAAfG5AAHxuYAB8bpAAfG6gAHxusAB8bsAAfG7QAHxu8AB8bxAAfG8gAHxvMAB8b1AAfG9gAHxw8AB8cQAAfHEQAHxxMAB8eOAAfHkAAHx5IAB8eUAAfHlwAHx5gAB8eZAAfHmgAHx5sAB8edAAfHnwAHx6AAB8ehAAfHowAHx6QAB8gfAAfIIQAHyCQAB8gmAAfIKQAHyCoAB8grAAfILAAHyC0AB8gvAAfIMQAHyDIAB8gzAAfINQAHyDYAB8hWAAfIbwAHyIgAB8iLAAfIjgAHyJEAB8iUAAfIlwAHyJoAB8izAAfItgAHyLkAB8i8AAfIvwAHyMIAB8jFAAfIxwAHyNUAB8jjAAfI+wAHyREAB8kxAAfJxAAHyecAB8oHAAfKJwAHyikAB8orAAfKLQAHyi8AB8oyAAfKMwAHyjQAB8o3AAfKOAAHyjoAB8o7AAfKPQAHykAAB8pBAAfKQgAHykUAB8pGAAfKSwAHymQAB8ptAAfKbwAHynEAB8p6AAfKfQAHyoAAB8qCAAfKywAHyu8AB8sWAAfLOgAHyz0AB8s/AAfLQQAHy0MAB8tFAAfLRwAHy0gAB8tLAAfLZAAHy4UAB8uHAAfLiQAHy4sAB8uNAAfLjwAHy5EAB8uTAAfLlQAHy7YAB8u5AAfLvAAHy78AB8vCAAfLxQAHy8gAB8vLAAfLzgAHy9AAB8xLAAfMTQAHzE8AB8xRAAfMVAAHzFUAB8xWAAfMVwAHzFgAB8xaAAfMXAAHzF0AB8xeAAfMYAAHzGEAB8zcAAfM3gAHzOAAB8ziAAfM5QAHzOYAB8znAAfM6AAHzOkAB8zrAAfM7QAHzO4AB8zvAAfM8QAHzPIAB81tAAfNbwAHzXIAB810AAfNdwAHzXgAB815AAfNegAHzXsAB819AAfNfwAHzYAAB82BAAfNgwAHzYQAB82dAAfNngAHzZ8AB82hAAfOHAAHzh4AB84gAAfOIgAHziUAB84mAAfOJwAHzigAB84pAAfOKwAHzi0AB84uAAfOLwAHzjEAB84yAAfOrQAHzq8AB86xAAfOswAHzrYAB863AAfOuAAHzrkAB866AAfOvAAHzr4AB86/AAfOwAAHzsIAB87DAAfPPgAHz0AAB89CAAfPRAAHz0cAB89IAAfPSQAHz0oAB89LAAfPTQAHz08AB89QAAfPUQAHz1MAB89UAAfPzwAHz9EAB8/TAAfP1QAHz9gAB8/ZAAfP2gAHz9sAB8/cAAfP3gAHz+AAB8/hAAfP4gAHz+QAB8/lAAfQYAAH0GIAB9BkAAfQZgAH0GkAB9BqAAfQawAH0GwAB9BtAAfQbwAH0HEAB9ByAAfQcwAH0HUAB9B2AAfQvwAH0OMAB9EKAAfRLgAH0TEAB9EzAAfRNQAH0TcAB9E5AAfROwAH0TwAB9E/AAfRWAAH0XUAB9F3AAfReQAH0XsAB9F9AAfRfwAH0YEAB9GDAAfRoAAH0aMAB9GmAAfRqQAH0awAB9GvAAfRsgAH0bUAB9G3AAfSMgAH0jQ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ACAaQAAgGkgAIBpQACAaVAAgGlgAIBpgACAaZAAgHFAAIBxYACAcYAAgHGgAIBx0ACAceAAgHHwAIByAACAchAAgHIwAIByUACAcmAAgHJwAIBykACAcqAAgHpQAIB6cACAepAAgHqwAIB64ACAevAAgHsAAIB7EACAeyAAgHtAAIB7YACAe3AAgHuAAIB7oACAe7AAgITgAICHEACAiRAAgIsQAICLMACAi1AAgItwAICLkACAi8AAgIvQAICL4ACAjBAAgIwgAICMQACAjFAAgIxwAICMoACAjLAAgIzAAICM8ACAjQAAgI1QAICO4ACAj3AAgI+QAICPsACAkEAAgJBwAICQoACAkMAAgJVQAICXkACAmgAAgJxAAICccACAnJAAgJywAICc0ACAnPAAgJ0QAICdIACAnVAAgJ7gAICg8ACAoRAAgKEwAIChUACAoXAAgKGQAIChsACAodAAgKHwAICkAACApDAAgKRgAICkkACApMAAgKTwAIClIACApVAAgKWAAICloACArVAAgK1wAICtkACArbAAgK3gAICt8ACArgAAgK4QAICuIACArkAAgK5gAICucACAroAAgK6gAICusACAtmAAgLaAAIC2oACAtsAAgLbwAIC3AACAtxAAgLcgAIC3MACAt1AAgLdwAIC3gACAt5AAgLewAIC3wACAv3AAgL+QAIC/wACAv+AAgMAQAIDAIACAwDAAgMBAAIDAUACAwHAAgMCQAIDAoACAwLAAgMDQAIDA4ACAwnAAgMKAAIDCkACAwrAAgMpgAIDKgACAyqAAgMrAAIDK8ACAywAAgMsQAIDLIACAyzAAgMtQAIDLcACAy4AAgMuQAIDLsACAy8AAgNNwAIDTkACA07AAgNPQAIDUAACA1BAAgNQgAIDUMACA1EAAgNRgAIDUgACA1JAAgNSgAIDUwACA1NAAgNyAAIDcoACA3MAAgNzgAIDdEACA3SAAgN0wAIDdQACA3VAAgN1wAIDdkACA3aAAgN2wAIDd0ACA3eAAgOWQAIDlsACA5dAAgOXwAIDmIACA5jAAgOZAAIDmUACA5mAAgOaAAIDmoACA5rAAgObAAIDm4ACA5vAAgO6gAIDuwACA7uAAgO8AAIDvMACA70AAgO9QAIDvYACA73AAgO+QAIDvsACA78AAgO/QAIDv8ACA8AAAgPSQAID20ACA+UAAgPuAAID7sACA+9AAgPvwAID8EACA/DAAgPxQAID8YACA/JAAgP4gAID/8ACBABAAgQAwAIEAUACBAHAAgQCQAIEAsACBANAAgQKgAIEC0ACBAwAAgQMwAIEDYACBA5AAgQPAAIED8ACBBBAAgQvAAIEL4ACBDAAAgQwgAIEMUACBDGAAgQxwAIEMgACBDJAAgQywAIEM0ACBDOAAgQzwAIENEACBDSAAgRTQAIEU8ACBFRAAgRUwAIEVYACBFXAAgRWAAIEVkACBFaAAgRXAAIEV4ACBFfAAgRYAAIEWIACBFjAAgR3gAIEeAACBHiAAgR5AAIEecACBHoAAgR6QAIEeoACBHrAAgR7QAIEe8ACBHwAAgR8QAIEfMACBH0AAgSbwAIEnEACBJ0AAgSdgAIEnkACBJ6AAgSewAIEnwACBJ9AAgSfwAIEoEACBKCAAgSgwAIEoUACBKGAAgTAQAIEwMACBMFAAgTBwAIEwoACBMLAAgTDAAIEw0ACBMOAAgTEAAIExIACBMTAAgTFAAIExYACBMXAAgTkgAIE5QACBOWAAgTmAAIE5sACBOcAAgTnQAIE54ACBOfAAgToQAIE6MACBOkAAgTpQAIE6cACBOoAAgUIwAIFCUACBQnAAgUKQAIFCwACBQtAAgULgAIFC8ACBQwAAgUMgAIFDQACBQ1AAgUNgAIFDgACBQ5AAgUSgAIFEsACBRNAAgUyAAIFMoACBTMAAgUzgAIFNEACBTSAAgU0wAIFNQACBTVAAgU1wAIFNoACBTbAAgU3AAIFN4ACBTfAAgVWgAIFVwACBVeAAgVYAAIFWMACBVkAAgVZQAIFWYACBVnAAgVaQAIFWwACBVtAAgVbgAIFXAACBVxAAgV7AAIFe4ACBXxAAgV8wAIFfYACBX3AAgV+AAIFfkACBX6AAgV/AAIFf8ACBYAAAgWAQAIFgMACBYEAAgWlwAIFroACBbaAAgW+gAIFvwACBb+AAgXAAAIFwIACBcFAAgXBgAIFwcACBcKAAgXCwAIFw0ACBcOAAgXEQAIFxQACBcVAAgXFgAIFxkACBcaAAgXHwAIFzgACBdBAAgXQwAIF0YACBdPAAgXUgAIF1UACBdXAAgXoAAIF8QACBfrAAgYDwAIGBIACBgUAAgYFgAIGBgACBgaAAgYHAAIGB0ACBggAAgYOQAIGFoACBhcAAgYXgAIGGAACBhiAAgYZAAIGGYACBhoAAgYagAIGIsACBiOAAgYkQAIGJQACBiXAAgYmgAIGJ0ACBigAAgYowAIGKUACBkgAAgZIgAIGSQACBkmAAgZKQAIGSoACBkrAAgZLAAIGS0ACBkvAAgZMQAIGTIACBkzAAgZNQAIGTYACBmxAAgZswAIGbUACBm3AAgZugAIGbsACBm8AAgZvQAIGb4ACBnAAAgZwgAIGcMACBnEAAgZxgAIGccACBpCAAgaRAAIGkcACBpJAAgaTAAIGk0ACBpOAAgaTwAIGlAACBpSAAgaVAAIGlUACBpWAAgaWAAIGlkACBpyAAgacwAIGnQACBp2AAga8QAIGvMACBr1AAga9wAIGvoACBr7AAga/AAIGv0ACBr+AAgbAAAIGwIACBsDAAgbBAAIGwYACBsHAAgbggAIG4QACBuGAAgbiAAIG4sACBuMAAgbjQAIG44ACBuPAAgbkQAIG5MACBuUAAgblQAIG5cACBuYAAgcEwAIHBUACBwXAAgcGQAIHBwACBwdAAgcHgAIHB8ACBwgAAgcIgAIHCQACBwlAAgcJgAIHCgACBwpAAgcpAAIHKYACByoAAgcqgAIHK0ACByuAAgcrwAIHLAACByxAAgcswAIHLUACBy2AAgctwAIHLkACBy6AAgdNQAIHTcACB05AAgdOwAIHT4ACB0/AAgdQAAIHUEACB1CAAgdRAAIHUYACB1HAAgdSAAIHUoACB1LAAgdlAAIHbgACB3fAAgeAwAIHgYACB4JAAgeCwAIHg0ACB4PAAgeEQAIHhIACB4VAAgeLgAIHksACB5OAAgeUQAIHlQACB5XAAgeWgAIHl0ACB5gAAgefQAIHoAACB6DAAgehgAIHokACB6MAAgejwAIHpIACB6UAAgfDwAIHxEACB8UAAgfFgAIHxkACB8aAAgfGwAIHxwACB8dAAgfHwAIHyIACB8jAAgfJAAIHyYACB8nAAgfogAIH6QACB+nAAgfqQAIH6wACB+tAAgfrgAIH68ACB+wAAgfsgAIH7UACB+2AAgftwAIH7kACB+6AAggNQAIIDcACCA6AAggPAAIID8ACCBAAAggQQAIIEIACCBDAAggRQAIIEgACCBJAAggSgAIIEwACCBNAAggyAAIIMoACCDNAAggzwAIINIACCDTAAgg1AAIINUACCDWAAgg2AAIINsACCDcAAgg3QAIIN8ACCDgAAghWwAIIV0ACCFfAAghYQAIIWQACCFlAAghZgAIIWcACCFoAAghagAIIW0ACCFuAAghbwAIIXEACCFyAAgh7QAIIe8ACCHxAAgh8wAIIfYACCH3AAgh+AAIIfkACCH6AAgh/AAIIf8ACCIAAAgiAQAIIgMACCIEAAgifwAIIoEACCKEAAgihgAIIokACCKKAAgiiwAIIowACCKNAAgijwAIIpIACCKTAAgilAAIIpYACCKXAAgjKgAII00ACCNtAAgjjQAII48ACCORAAgjkwAII5UACCOYAAgjmQAII5oACCOdAAgjngAII6AACCOhAAgjowAII6YACCOnAAgjqAAII6sACCOsAAgjsQAII8oACCPTAAgj1QAII9cACCPgAAgj4wAII+YACCPoAAgkMQAIJFUACCR8AAgkoAAIJKMACCSlAAgkpwAIJKkACCSrAAgkrQAIJK4ACCSxAAgkygAIJOsACCTtAAgk7wAIJPEACCTzAAgk9QAIJPcACCT5AAgk+wAIJRwACCUfAAglIgAIJSUACCUoAAglKwAIJS4ACCUxAAglNAAIJTYACCWxAAglswAIJbUACCW3AAglugAIJbsACCW8AAglvQAIJb4ACCXAAAglwgAIJcMACCXEAAglxgAIJccACCZCAAgmRAAIJkYACCZIAAgmSwAIJkwACCZNAAgmTgAIJk8ACCZRAAgmUwAIJlQACCZVAAgmVwAIJlgACCbTAAgm1QAIJtgACCbaAAgm3QAIJt4ACCbfAAgm4AAIJuEACCbjAAgm5QAIJuYACCbnAAgm6QAIJuoACCcDAAgnBAAIJwUACCcHAAgnggAIJ4QACCeGAAgniAAIJ4sACCeMAAgnjQAIJ44ACCePAAgnkQAIJ5MACCeUAAgnlQAIJ5cACCeYAAgoEwAIKBUACCgXAAgoGQAIKBwACCgdAAgoHgAIKB8ACCggAAgoIgAIKCQACCglAAgoJgAIKCgACCgpAAgopAAIKKYACCioAAgoqgAIKK0ACCiuAAgorwAIKLAACCixAAgoswAIKLUACCi2AAgotwAIKLkACCi6AAgpNQAIKTcACCk5AAgpOwAIKT4ACCk/AAgpQAAIKUEACClCAAgpRAAIKUYACClHAAgpSAAIKUoACClLAAgpxgAIKcgACCnKAAgpzAAIKc8ACCnQAAgp0QAIKdIACCnTAAgp1QAIKdcACCnYAAgp2QAIKdsACCncAAgqJQAIKkkACCpwAAgqlAAIKpcACCqZAAgqmwAIKp0ACCqfAAgqoQAIKqIACCqlAAgqvgAIKtsACCrdAAgq3wAIKuEACCrjAAgq5QAIKucACCrpAAgrBgAIKwkACCsMAAgrDwAIKxIACCsVAAgrGAAIKxsACCsdAAgrmAAIK5oACCudAAgrnwAIK6IACCujAAgrpAAIK6UACCumAAgrqAAIK6oACCurAAgrrAAIK64ACCuvAAgsKgAILCwACCwuAAgsMAAILDMACCw0AAgsNQAILDYACCw3AAgsOQAILDsACCw8AAgsPQAILD8ACCxAAAgsuwAILL0ACCy/AAgswQAILMQACCzFAAgsxgAILMcACCzIAAgsygAILMwACCzNAAgszgAILNAACCzRAAgtTAAILU4ACC1RAAgtUwAILVYACC1XAAgtWAAILVkACC1aAAgtXAAILV4ACC1fAAgtYAAILWIACC1jAAgt3gAILeAACC3iAAgt5AAILecACC3oAAgt6QAILeoACC3rAAgt7QAILe8ACC3wAAgt8QAILfMACC30AAgubwAILnEACC5zAAgudQAILngACC55AAguegAILnsACC58AAgufgAILoAACC6BAAguggAILoQACC6FAAgvAAAILwIACC8EAAgvBgAILwkACC8KAAgvCwAILwwACC8NAAgvDwAILxEACC8SAAgvEwAILxUACC8WAAgvqQAIL8wACC/sAAgwDAAIMA4ACDAQAAgwEgAIMBQACDAXAAgwGAAIMBkACDAcAAgwHQAIMB8ACDAgAAgwIgAIMCUACDAmAAgwJwAIMCoACDArAAgwMAAIMEkACDBSAAgwVAAIMFYACDBfAAgwYgAIMGUACDBnAAgwsAAIMNQACDD7AAgxHwAIMSIACDEkAAgxJgAIMSgACDEqAAgxLAAIMS0ACDEwAAgxSQAIMWoACDFsAAgxbgAIMXAACDFyAAgxdAAIMXYACDF4AAgxegAIMZsACDGeAAgxoQAIMaQACDGnAAgxqgAIMa0ACDGwAAgxswAIMbUACDIwAAgyMgAIMjQACDI2AAgyOQAIMjoACDI7AAgyPAAIMj0ACDI/AAgyQQAIMkIACDJDAAgyRQAIMkYACDLBAAgywwAIMsUACDLHAAgyygAIMssACDLMAAgyzQAIMs4ACDLQAAgy0gAIMtMACDLUAAgy1gAIMtcACDNSAAgzVAAIM1cACDNZAAgzXAAIM10ACDNeAAgzXwAIM2AACDNiAAgzZAAIM2UACDNmAAgzaAAIM2kACDOCAAgzgwAIM4QACDOGAAg0AQAINAMACDQFAAg0BwAINAoACDQLAAg0DAAINA0ACDQOAAg0EAAINBIACDQTAAg0FAAINBYACDQXAAg0kgAINJQACDSWAAg0mAAINJsACDScAAg0nQAINJ4ACDSfAAg0oQAINKMACDSkAAg0pQAINKcACDSoAAg1IwAINSUACDUnAAg1KQAINSwACDUtAAg1LgAINS8ACDUwAAg1MgAINTQACDU1AAg1NgAINTgACDU5AAg1tAAINbYACDW4AAg1ugAINb0ACDW+AAg1vwAINcAACDXBAAg1wwAINcUACDXGAAg1xwAINckACDXKAAg2RQAINkcACDZJAAg2SwAINk4ACDZPAAg2UAAINlEACDZSAAg2VAAINlYACDZXAAg2WAAINloACDZbAAg2pAAINsgACDbvAAg3EwAINxYACDcYAAg3GgAINxwACDceAAg3IAAINyEACDckAAg3PQAIN1oACDdcAAg3XgAIN2AACDdiAAg3ZAAIN2YACDdoAAg3hQAIN4gACDeLAAg3jgAIN5EACDeUAAg3lwAIN5oACDecAAg4FwAIOBkACDgbAAg4HQAIOCAACDghAAg4IgAIOCMACDgkAAg4JgAIOCgACDgpAAg4KgAIOCwACDgtAAg4qAAIOKoACDisAAg4rgAIOLEACDiyAAg4swAIOLQACDi1AAg4twAIOLkACDi6AAg4uwAIOL0ACDi+AAg5OQAIOTsACDk9AAg5PwAIOUIACDlDAAg5RAAIOUUACDlGAAg5SAAIOUoACDlLAAg5TAAIOU4ACDlPAAg5ygAIOcwACDnOAAg50AAIOdMACDnUAAg51QAIOdYACDnXAAg52QAIOdsACDncAAg53QAIOd8ACDngAAg6WwAIOl0ACDpfAAg6YQAIOmQACDplAAg6ZgAIOmcACDpoAAg6agAIOmwACDptAAg6bgAIOnAACDpxAAg67AAIOu4ACDrxAAg68wAIOvYACDr3AAg6+AAIOvkACDr6AAg6/AAIOv4ACDr/AAg7AAAIOwIACDsDAAg7JwAIO6IACDukAAg7pgAIO6gACDurAAg7rAAIO60ACDuuAAg7rwAIO7EACDuzAAg7tAAIO7UACDu3AAg7uAAIPEsACDxuAAg8jgAIPK4ACDywAAg8sgAIPLQACDy2AAg8uQAIPLoACDy7AAg8vgAIPL8ACDzBAAg8wgAIPMUACDzIAAg8yQAIPMoACDzNAAg8zgAIPNMACDzsAAg89QAIPPcACDz6AAg9AwAIPQYACD0JAAg9CwAIPVQACD14AAg9nwAIPcMACD3GAAg9yAAIPcoACD3MAAg9zgAIPdAACD3RAAg91AAIPe0ACD4OAAg+EAAIPhIACD4UAAg+FgAIPhgACD4aAAg+HAAIPh4ACD4/AAg+QgAIPkUACD5IAAg+SwAIPk4ACD5RAAg+VAAIPlcACD5ZAAg+1AAIPtYACD7YAAg+2gAIPt0ACD7eAAg+3wAIPuAACD7hAAg+4wAIPuUACD7mAAg+5wAIPukACD7qAAg/ZQAIP2cACD9pAAg/awAIP24ACD9vAAg/cAAIP3EACD9yAAg/dAAIP3YACD93AAg/eAAIP3oACD97AAg/9gAIP/gACD/7AAg//QAIQAAACEABAAhAAgAIQAMACEAEAAhABgAIQAgACEAJAAhACgAIQAwACEANAAhAJgAIQCcACEAoAAhAKgAIQKUACECnAAhAqQAIQKsACECuAAhArwAIQLAACECxAAhAsgAIQLQACEC2AAhAtwAIQLgACEC6AAhAuwAIQTYACEE4AAhBOgAIQTwACEE/AAhBQAAIQUEACEFCAAhBQwAIQUUACEFHAAhBSAAIQUkACEFLAAhBTAAIQccACEHJAAhBywAIQc0ACEHQAAhB0QAIQdIACEHTAAhB1AAIQdYACEHYAAhB2QAIQdoACEHcAAhB3QAIQlgACEJaAAhCXAAIQl4ACEJhAAhCYgAIQmMACEJkAAhCZQAIQmcACEJpAAhCagAIQmsACEJtAAhCbgAIQukACELrAAhC7QAIQu8ACELyAAhC8wAIQvQACEL1AAhC9gAIQvgACEL6AAhC+wAIQvwACEL+AAhC/wAIQ0gACENsAAhDkwAIQ7cACEO6AAhDvQAIQ78ACEPBAAhDwwAIQ8UACEPGAAhDyQAIQ+IACEP/AAhEAgAIRAUACEQIAAhECwAIRA4ACEQRAAhEFAAIRDEACEQ0AAhENwAIRDoACEQ9AAhEQAAIREMACERGAAhESAAIRMMACETFAAhEyAAIRMoACETNAAhEzgAIRM8ACETQAAhE0QAIRNMACETWAAhE1wAIRNgACETaAAhE2wAIRVYACEVYAAhFWwAIRV0ACEVgAAhFYQAIRWIACEVjAAhFZAAIRWYACEVpAAhFagAIRWsACEVtAAhFbgAIRekACEXrAAhF7gAIRfAACEXzAAhF9AAIRfUACEX2AAhF9wAIRfkACEX8AAhF/QAIRf4ACEYAAAhGAQAIRnwACEZ+AAhGgQAIRoMACEaGAAhGhwAIRogACEaJAAhGigAIRowACEaPAAhGkAAIRpEACEaTAAhGlAAIRxcACEc7AAhHXwAIR4IACEepAAhHyQAIR/AACEgXAAhINwAISFsACEh/AAhIgQAISIQACEiGAAhIiAAISIoACEiNAAhIkAAISJIACEiUAAhIlwAISJkACEibAAhIngAISKEACEiiAAhIpwAISMAACEjFAAhIxwAISMwACEjPAAhI0QAISRoACEk+AAhJZQAISYkACEmMAAhJjgAISZAACEmSAAhJlAAISZYACEmXAAhJmgAISbMACEnYAAhJ2gAISdwACEneAAhJ4AAISeIACEnkAAhJ5gAISegACEnqAAhKDwAIShIACEoVAAhKGAAIShsACEoeAAhKIQAISiQACEonAAhKKgAISiwACEqnAAhKqQAISqwACEquAAhKsQAISrIACEqzAAhKtAAISrUACEq3AAhKuQAISroACEq7AAhKvQAISr4ACErPAAhK0AAIStIACEtNAAhLTwAIS1EACEtTAAhLVgAIS1cACEtYAAhLWQAIS1oACEtcAAhLXgAIS18ACEtgAAhLYgAIS2MACEveAAhL4AAIS+MACEvlAAhL6AAIS+kACEvqAAhL6wAIS+wACEvuAAhL8AAIS/EACEvyAAhL9AAIS/UACEwGAAhMBwAITAkACEyEAAhMhgAITIgACEyKAAhMjQAITI4ACEyPAAhMkAAITJEACEyTAAhMlQAITJYACEyXAAhMmQAITJoACE0VAAhNFwAITRoACE0cAAhNHwAITSAACE0hAAhNIgAITSMACE0lAAhNJwAITSgACE0pAAhNKwAITSwACE09AAhNPgAITUAACE27AAhNvQAITb8ACE3BAAhNxAAITcUACE3GAAhNxwAITcgACE3KAAhNzAAITc0ACE3OAAhN0AAITdEACE5MAAhOTgAITlEACE5TAAhOVgAITlcACE5YAAhOWQAITloACE5cAAhOXgAITl8ACE5gAAhOYgAITmMACE58AAhOfQAITn4ACE6AAAhO+wAITv0ACE7/AAhPAQAITwQACE8FAAhPBgAITwcACE8IAAhPCgAITwwACE8NAAhPDgAITxAACE8RAAhPjAAIT44ACE+RAAhPkwAIT5YACE+XAAhPmAAIT5kACE+aAAhPnAAIT54ACE+fAAhPoAAIT6IACE+jAAhPrwAIT8gACE/ZAAhP3AAIT98ACE/iAAhP5QAIT/YACE/5AAhP/AAIT/8ACFACAAhQBAAIUBwACFAuAAhQRQAIUNgACFD7AAhRGwAIUTsACFE9AAhRPwAIUUEACFFDAAhRRgAIUUcACFFIAAhRSwAIUUwACFFOAAhRTwAIUVIACFFVAAhRVgAIUVcACFFaAAhRWwAIUWAACFF5AAhRggAIUYQACFGHAAhRkAAIUZMACFGWAAhRmAAIUeEACFIFAAhSLAAIUlAACFJTAAhSVQAIUlcACFJZAAhSWwAIUl0ACFJeAAhSYQAIUnoACFKbAAhSnQAIUp8ACFKhAAhSowAIUqUACFKnAAhSqQAIUqsACFLMAAhSzwAIUtIACFLVAAhS2AAIUtsACFLeAAhS4QAIUuQACFLmAAhTYQAIU2MACFNlAAhTZwAIU2oACFNrAAhTbAAIU20ACFNuAAhTcAAIU3IACFNzAAhTdAAIU3YACFN3AAhT8gAIU/QACFP2AAhT+AAIU/sACFP8AAhT/QAIU/4ACFP/AAhUAQAIVAMACFQEAAhUBQAIVAcACFQIAAhUgwAIVIUACFSIAAhUigAIVI0ACFSOAAhUjwAIVJAACFSRAAhUkwAIVJUACFSWAAhUlwAIVJkACFSaAAhUswAIVLQACFS1AAhUtwAIVTIACFU0AAhVNgAIVTgACFU7AAhVPAAIVT0ACFU+AAhVPwAIVUEACFVDAAhVRAAIVUUACFVHAAhVSAAIVcMACFXFAAhVxwAIVckACFXMAAhVzQAIVc4ACFXPAAhV0AAIVdIACFXUAAhV1QAIVdYACFXYAAhV2QAIVlQACFZWAAhWWAAIVloACFZdAAhWXgAIVl8ACFZgAAhWYQAIVmMACFZlAAhWZgAIVmcACFZpAAhWagAIVuUACFbnAAhW6QAIVusACFbuAAhW7wAIVvAACFbxAAhW8gAIVvQACFb2AAhW9wAIVvgACFb6AAhW+wAIV3YACFd4AAhXegAIV3wACFd/AAhXgAAIV4EACFeCAAhXgwAIV4UACFeHAAhXiAAIV4kACFeLAAhXjAAIV9UACFf5AAhYIAAIWEQACFhHAAhYSgAIWEwACFhOAAhYUAAIWFIACFhTAAhYVgAIWG8ACFiMAAhYjwAIWJIACFiVAAhYmAAIWJsACFieAAhYoQAIWL4ACFjBAAhYxAAIWMcACFjKAAhYzQAIWNAACFjTAAhY1QAIWVAACFlSAAhZVQAIWVcACFlaAAhZWwAIWVwACFldAAhZXgAIWWAACFljAAhZZAAIWWUACFlnAAhZaAAIWeMACFnlAAhZ6AAIWeoACFntAAhZ7gAIWe8ACFnwAAhZ8QAIWfMACFn2AAhZ9wAIWfgACFn6AAhZ+wAIWnYACFp4AAhaewAIWn0ACFqAAAhagQAIWoIACFqDAAhahAAIWoYACFqJAAhaigAIWosACFqNAAhajgAIWwkACFsLAAhbDgAIWxAACFsTAAhbFAAIWxUACFsWAAhbFwAIWxkACFscAAhbHQAIWx4ACFsgAAhbIQAIW5wACFueAAhboAAIW6IACFulAAhbpgAIW6cACFuoAAhbqQAIW6sACFuuAAhbrwAIW7AACFuyAAhbswAIXC4ACFwwAAhcMgAIXDQACFw3AAhcOAAIXDkACFw6AAhcOwAIXD0ACFxAAAhcQQAIXEIACFxEAAhcRQAIXMAACFzCAAhcxQAIXMcACFzKAAhcywAIXMwACFzNAAhczgAIXNAACFzTAAhc1AAIXNUACFzXAAhc2AAIXWsACF2OAAhdrgAIXc4ACF3QAAhd0gAIXdQACF3WAAhd2QAIXdoACF3bAAhd3gAIXd8ACF3hAAhd4gAIXeQACF3nAAhd6AAIXekACF3sAAhd7QAIXfIACF4LAAheFAAIXhYACF4YAAheIQAIXiQACF4nAAheKQAIXnIACF6WAAhevQAIXuEACF7kAAhe5gAIXugACF7qAAhe7AAIXu4ACF7vAAhe8gAIXwsACF8sAAhfLgAIXzAACF8yAAhfNAAIXzYACF84AAhfOgAIXzwACF9dAAhfYAAIX2MACF9mAAhfaQAIX2wACF9vAAhfcgAIX3UACF93AAhf8gAIX/QACF/2AAhf+AAIX/sACF/8AAhf/QAIX/4ACF//AAhgAQAIYAMACGAEAAhgBQAIYAcACGAIAAhggwAIYIUACGCHAAhgiQAIYIwACGCNAAhgjgAIYI8ACGCQAAhgkgAIYJQACGCVAAhglgAIYJgACGCZAAhhFAAIYRYACGEZAAhhGwAIYR4ACGEfAAhhIAAIYSEACGEiAAhhJAAIYSYACGEnAAhhKAAIYSoACGErAAhhRAAIYUUACGFGAAhhSAAIYcMACGHFAAhhxwAIYckACGHMAAhhzQAIYc4ACGHPAAhh0AAIYdIACGHUAAhh1QAIYdYACGHYAAhh2QAIYlQACGJWAAhiWAAIYloACGJdAAhiXgAIYl8ACGJgAAhiYQAIYmMACGJlAAhiZgAIYmcACGJpAAhiagAIYuUACGLnAAhi6QAIYusACGLuAAhi7wAIYvAACGLxAAhi8gAIYvQACGL2AAhi9wAIYvgACGL6AAhi+wAIY3YACGN4AAhjegAIY3wACGN/AAhjgAAIY4EACGOCAAhjgwAIY4UACGOHAAhjiAAIY4kACGOLAAhjjAAIZAcACGQJAAhkCwAIZA0ACGQQAAhkEQAIZBIACGQTAAhkFAAIZBYACGQYAAhkGQAIZBoACGQcAAhkHQAIZGYACGSKAAhksQAIZNUACGTYAAhk2gAIZNwACGTeAAhk4AAIZOIACGTjAAhk5gAIZP8ACGUcAAhlHgAIZSAACGUiAAhlJAAIZSYACGUoAAhlKgAIZUcACGVKAAhlTQAIZVAACGVTAAhlVgAIZVkACGVcAAhlXgAIZdkACGXbAAhl3QAIZd8ACGXiAAhl4wAIZeQACGXlAAhl5gAIZegACGXqAAhl6wAIZewACGXuAAhl7wAIZmoACGZsAAhmbgAIZnAACGZzAAhmdAAIZnUACGZ2AAhmdwAIZnkACGZ7AAhmfAAIZn0ACGZ/AAhmgAAIZvsACGb9AAhm/wAIZwEACGcEAAhnBQAIZwYACGcHAAhnCAAIZwoACGcMAAhnDQAIZw4ACGcQAAhnEQAIZ4wACGeOAAhnkAAIZ5IACGeVAAhnlgAIZ5cACGeYAAhnmQAIZ5sACGedAAhnngAIZ58ACGehAAhnogAIaB0ACGgfAAhoIQAIaCMACGgmAAhoJwAIaCgACGgpAAhoKgAIaCwACGguAAhoLwAIaDAACGgyAAhoMwAIaK4ACGiwAAhoswAIaLUACGi4AAhouQAIaLoACGi7AAhovAAIaL4ACGjAAAhowQAIaMIACGjEAAhoxQAIaNQACGlPAAhpUQAIaVMACGlVAAhpWAAIaVkACGlaAAhpWwAIaVwACGleAAhpYAAIaWEACGliAAhpZAAIaWUACGn4AAhqGwAIajsACGpbAAhqXQAIal8ACGphAAhqYwAIamYACGpnAAhqaAAIamsACGpsAAhqbgAIam8ACGpxAAhqdAAIanUACGp2AAhqeQAIanoACGqDAAhqnAAIaqUACGqnAAhqqQAIarIACGq1AAhquAAIaroACGsDAAhrJwAIa04ACGtyAAhrdQAIa3cACGt5AAhrewAIa30ACGt/AAhrgAAIa4MACGucAAhrvQAIa78ACGvBAAhrwwAIa8UACGvHAAhryQAIa8sACGvNAAhr7gAIa/EACGv0AAhr9wAIa/oACGv9AAhsAAAIbAMACGwGAAhsCAAIbIMACGyFAAhshwAIbIkACGyMAAhsjQAIbI4ACGyPAAhskAAIbJIACGyUAAhslQAIbJYACGyYAAhsmQAIbRQACG0WAAhtGAAIbRoACG0dAAhtHgAIbR8ACG0gAAhtIQAIbSMACG0lAAhtJgAIbScACG0pAAhtKgAIbaUACG2nAAhtqgAIbawACG2vAAhtsAAIbbEACG2yAAhtswAIbbUACG23AAhtuAAIbbkACG27AAhtvAAIbdUACG3WAAht1wAIbdkACG5UAAhuVgAIblgACG5aAAhuXQAIbl4ACG5fAAhuYAAIbmEACG5jAAhuZQAIbmYACG5nAAhuaQAIbmoACG7lAAhu5wAIbukACG7rAAhu7gAIbu8ACG7wAAhu8QAIbvIACG70AAhu9gAIbvcACG74AAhu+gAIbvsACG92AAhveAAIb3oACG98AAhvfwAIb4AACG+BAAhvggAIb4MACG+FAAhvhwAIb4gACG+JAAhviwAIb4wACHAHAAhwCQAIcAsACHANAAhwEAAIcBEACHASAAhwEwAIcBQACHAWAAhwGAAIcBkACHAaAAhwHAAIcB0ACHCYAAhwmgAIcJwACHCeAAhwoQAIcKIACHCjAAhwpAAIcKUACHCnAAhwqQAIcKoACHCrAAhwrQAIcK4ACHD3AAhxGwAIcUIACHFmAAhxaQAIcWsACHFtAAhxbwAIcXEACHFzAAhxdAAIcXcACHGQAAhxrQAIca8ACHGxAAhxswAIcbUACHG3AAhxuQAIcbsACHHYAAhx2wAIcd4ACHHhAAhx5AAIcecACHHqAAhx7QAIce8ACHJqAAhybAAIcm4ACHJwAAhycwAIcnQACHJ1AAhydgAIcncACHJ5AAhyewAIcnwACHJ9AAhyfwAIcoAACHL7AAhy/QAIcv8ACHMBAAhzBAAIcwUACHMGAAhzBwAIcwgACHMKAAhzDAAIcw0ACHMOAAhzEAAIcxEACHOMAAhzjgAIc5AACHOSAAhzlQAIc5YACHOXAAhzmAAIc5kACHObAAhznQAIc54ACHOfAAhzoQAIc6IACHQdAAh0HwAIdCIACHQkAAh0JwAIdCgACHQpAAh0KgAIdCsACHQtAAh0LwAIdDAACHQxAAh0MwAIdDQACHSvAAh0sQAIdLMACHS1AAh0uAAIdLkACHS6AAh0uwAIdLwACHS+AAh0wAAIdMEACHTCAAh0xAAIdMUACHVAAAh1QgAIdUQACHVGAAh1SQAIdUoACHVLAAh1TAAIdU0ACHVPAAh1UQAIdVIACHVTAAh1VQAIdVYACHXRAAh10wAIddUACHXXAAh12gAIddsACHXcAAh13QAIdd4ACHXgAAh14gAIdeMACHXkAAh15gAIdecACHZ6AAh2nQAIdr0ACHbdAAh23wAIduEACHbjAAh25QAIdugACHbpAAh26gAIdu0ACHbuAAh28AAIdvEACHb0AAh29wAIdvgACHb5AAh2/AAIdv0ACHcCAAh3GwAIdyQACHcmAAh3KQAIdzIACHc1AAh3OAAIdzoACHeDAAh3pwAId84ACHfyAAh39QAId/cACHf5AAh3+wAId/0ACHf/AAh4AAAIeAMACHgcAAh4PQAIeD8ACHhBAAh4QwAIeEUACHhHAAh4SQAIeEsACHhNAAh4bgAIeHEACHh0AAh4dwAIeHoACHh9AAh4gAAIeIMACHiGAAh4iAAIeQMACHkFAAh5BwAIeQkACHkMAAh5DQAIeQ4ACHkPAAh5EAAIeRIACHkUAAh5FQAIeRYACHkYAAh5GQAIeZQACHmWAAh5mAAIeZoACHmdAAh5ngAIeZ8ACHmgAAh5oQAIeaMACHmlAAh5pgAIeacACHmpAAh5qgAIeiUACHonAAh6KgAIeiwACHovAAh6MAAIejEACHoyAAh6MwAIejUACHo3AAh6OAAIejkACHo7AAh6PAAIelUACHpWAAh6VwAIelkACHrUAAh61gAIetgACHraAAh63QAIet4ACHrfAAh64AAIeuEACHrjAAh65QAIeuYACHrnAAh66QAIeuoACHtlAAh7ZwAIe2kACHtrAAh7bgAIe28ACHtwAAh7cQAIe3IACHt0AAh7dgAIe3cACHt4AAh7egAIe3sACHv2AAh7+AAIe/oACHv8AAh7/wAIfAAACHwBAAh8AgAIfAMACHwFAAh8BwAIfAgACHwJAAh8CwAIfAwACHyHAAh8iQAIfIsACHyNAAh8kAAIfJEACHySAAh8kwAIfJQACHyWAAh8mAAIfJkACHyaAAh8nAAIfJ0ACH0YAAh9GgAIfRwACH0eAAh9IQAIfSIACH0jAAh9JAAIfSUACH0nAAh9KQAIfSoACH0rAAh9LQAIfS4ACH13AAh9mwAIfcIACH3mAAh96QAIfewACH3uAAh98AAIffIACH30AAh99QAIffgACH4RAAh+LgAIfjEACH40AAh+NwAIfjoACH49AAh+QAAIfkMACH5gAAh+YwAIfmYACH5pAAh+bAAIfm8ACH5yAAh+dQAIfncACH7yAAh+9AAIfvcACH75AAh+/AAIfv0ACH7+AAh+/wAIfwAACH8CAAh/BQAIfwYACH8HAAh/CQAIfwoACH+FAAh/hwAIf4oACH+MAAh/jwAIf5AACH+RAAh/kgAIf5MACH+VAAh/mAAIf5kACH+aAAh/nAAIf50ACIAYAAiAGgAIgB0ACIAfAAiAIgAIgCMACIAkAAiAJQAIgCYACIAoAAiAKwAIgCwACIAtAAiALwAIgDAACICrAAiArQAIgLAACICyAAiAtQAIgLYACIC3AAiAuAAIgLkACIC7AAiAvgAIgL8ACIDAAAiAwgAIgMMACIE+AAiBQAAIgUIACIFEAAiBRwAIgUgACIFJAAiBSgAIgUsACIFNAAiBUAAIgVEACIFSAAiBVAAIgVUACIHQAAiB0gAIgdQACIHWAAiB2QAIgdoACIHbAAiB3AAIgd0ACIHfAAiB4gAIgeMACIHkAAiB5gAIgecACIJiAAiCZAAIgmcACIJpAAiCbAAIgm0ACIJuAAiCbwAIgnAACIJyAAiCdQAIgnYACIJ3AAiCeQAIgnoACIMNAAiDMAAIg1AACINwAAiDcgAIg3QACIN2AAiDeAAIg3sACIN8AAiDfQAIg4AACIOBAAiDgwAIg4QACIOHAAiDigAIg4sACIOMAAiDjwAIg5AACIOVAAiDrgAIg7cACIO5AAiDvAAIg8UACIPIAAiDywAIg80ACIQWAAiEOgAIhGEACISFAAiEiAAIhIoACISMAAiEjgAIhJAACISSAAiEkwAIhJYACISvAAiE0AAIhNIACITUAAiE1gAIhNgACITaAAiE3AAIhN4ACITgAAiFAQAIhQQACIUHAAiFCgAIhQ0ACIUQAAiFEwAIhRYACIUZAAiFGwAIhZYACIWYAAiFmgAIhZwACIWfAAiFoAAIhaEACIWiAAiFowAIhaUACIWnAAiFqAAIhakACIWrAAiFrAAIhicACIYpAAiGKwAIhi0ACIYwAAiGMQAIhjIACIYzAAiGNAAIhjYACIY4AAiGOQAIhjoACIY8AAiGPQAIhrgACIa6AAiGvQAIhr8ACIbCAAiGwwAIhsQACIbFAAiGxgAIhsgACIbKAAiGywAIhswACIbOAAiGzwAIhugACIbpAAiG6gAIhuwACIdnAAiHaQAIh2sACIdtAAiHcAAIh3EACIdyAAiHcwAIh3QACId2AAiHeAAIh3kACId6AAiHfAAIh30ACIf4AAiH+gAIh/wACIf+AAiIAQAIiAIACIgDAAiIBAAIiAUACIgHAAiICQAIiAoACIgLAAiIDQAIiA4ACIiJAAiIiwAIiI0ACIiPAAiIkgAIiJMACIiUAAiIlQAIiJYACIiYAAiImgAIiJsACIicAAiIngAIiJ8ACIkaAAiJHAAIiR4ACIkgAAiJIwAIiSQACIklAAiJJgAIiScACIkpAAiJKwAIiSwACIktAAiJLwAIiTAACImrAAiJrQAIia8ACImxAAiJtAAIibUACIm2AAiJtwAIibgACIm6AAiJvAAIib0ACIm+AAiJwAAIicEACIoKAAiKLgAIilUACIp5AAiKfAAIin8ACIqBAAiKgwAIioUACIqHAAiKiAAIiosACIqkAAiKwQAIisQACIrHAAiKygAIis0ACIrQAAiK0wAIitYACIrzAAiK9gAIivkACIr8AAiK/wAIiwIACIsFAAiLCAAIiwoACIuFAAiLhwAIi4oACIuMAAiLjwAIi5AACIuRAAiLkgAIi5MACIuVAAiLmAAIi5kACIuaAAiLnAAIi50ACIwYAAiMGgAIjB0ACIwfAAiMIgAIjCMACIwkAAiMJQAIjCYACIwoAAiMKwAIjCwACIwtAAiMLwAIjDAACIyrAAiMrQAIjLAACIyyAAiMtQAIjLYACIy3AAiMuAAIjLkACIy7AAiMvgAIjL8ACIzAAAiMwgAIjMMACI0+AAiNQAAIjUMACI1FAAiNSAAIjUkACI1KAAiNSwAIjUwACI1OAAiNUQAIjVIACI1TAAiNVQAIjVYACI3RAAiN0wAIjdUACI3XAAiN2gAIjdsACI3cAAiN3QAIjd4ACI3gAAiN4wAIjeQACI3lAAiN5wAIjegACI5jAAiOZQAIjmcACI5pAAiObAAIjm0ACI5uAAiObwAIjnAACI5yAAiOdQAIjnYACI53AAiOeQAIjnoACI71AAiO9wAIjvoACI78AAiO/wAIjwAACI8BAAiPAgAIjwMACI8FAAiPCAAIjwkACI8KAAiPDAAIjw0ACI8eAAiPHwAIjyEACI+cAAiPngAIj6AACI+iAAiPpQAIj6YACI+nAAiPqAAIj6kACI+rAAiPrgAIj68ACI+wAAiPsgAIj7MACJAuAAiQMAAIkDIACJA0AAiQNwAIkDgACJA5AAiQOgAIkDsACJA9AAiQQAAIkEEACJBCAAiQRAAIkEUACJDAAAiQwgAIkMUACJDHAAiQygAIkMsACJDMAAiQzQAIkM4ACJDQAAiQ0wAIkNQACJDVAAiQ1wAIkNgACJFrAAiRjgAIka4ACJHOAAiR0AAIkdIACJHUAAiR1gAIkdkACJHaAAiR2wAIkd4ACJHfAAiR4QAIkeIACJHkAAiR5wAIkegACJHpAAiR7AAIke0ACJHyAAiSCwAIkhQACJIWAAiSGAAIkiEACJIkAAiSJwAIkikACJJyAAiSlgAIkr0ACJLhAAiS5AAIkuYACJLoAAiS6gAIkuwACJLuAAiS7wAIkvIACJMLAAiTLAAIky4ACJMwAAiTMgAIkzQACJM2AAiTOAAIkzoACJM8AAiTXQAIk2AACJNjAAiTZgAIk2kACJNsAAiTbwAIk3IACJN1AAiTdwAIk/IACJP0AAiT9gAIk/gACJP7AAiT/AAIk/0ACJP+AAiT/wAIlAEACJQDAAiUBAAIlAUACJQHAAiUCAAIlIMACJSFAAiUhwAIlIkACJSMAAiUjQAIlI4ACJSPAAiUkAAIlJIACJSUAAiUlQAIlJYACJSYAAiUmQAIlRQACJUWAAiVGQAIlRsACJUeAAiVHwAIlSAACJUhAAiVIgAIlSQACJUmAAiVJwAIlSgACJUqAAiVKwAIlUQACJVFAAiVRgAIlUgACJXDAAiVxQAIlccACJXJAAiVzAAIlc0ACJXOAAiVzwAIldAACJXSAAiV1AAIldUACJXWAAiV2AAIldkACJZUAAiWVgAIllgACJZaAAiWXQAIll4ACJZfAAiWYAAIlmEACJZjAAiWZQAIlmYACJZnAAiWaQAIlmoACJblAAiW5wAIlukACJbrAAiW7gAIlu8ACJbwAAiW8QAIlvIACJb0AAiW9gAIlvcACJb4AAiW+gAIlvsACJd2AAiXeAAIl3oACJd8AAiXfwAIl4AACJeBAAiXggAIl4MACJeFAAiXhwAIl4gACJeJAAiXiwAIl4wACJgHAAiYCQAImAsACJgNAAiYEAAImBEACJgSAAiYEwAImBQACJgWAAiYGAAImBkACJgaAAiYHAAImB0ACJhmAAiYigAImLEACJjVAAiY2AAImNoACJjcAAiY3gAImOAACJjiAAiY4wAImOYACJj/AAiZHAAImR4ACJkgAAiZIgAImSQACJkmAAiZKAAImSoACJlHAAiZSgAImU0ACJlQAAiZUwAImVYACJlZAAiZXAAImV4ACJnZAAiZ2wAImd0ACJnfAAiZ4gAImeMACJnkAAiZ5QAImeYACJnoAAiZ6gAImesACJnsAAiZ7gAIme8ACJpqAAiabAAImm4ACJpwAAiacwAImnQACJp1AAiadgAImncACJp5AAiaewAImnwACJp9AAiafwAImoAACJr7AAia/QAImv8ACJsBAAibBAAImwUACJsGAAibBwAImwgACJsKAAibDAAImw0ACJsOAAibEAAImxEACJuMAAibjgAIm5AACJuSAAiblQAIm5YACJuXAAibmAAIm5kACJubAAibnQAIm54ACJufAAiboQAIm6IACJwdAAicHwAInCEACJwjAAicJgAInCcACJwoAAicKQAInCoACJwsAAicLgAInC8ACJwwAAicMgAInDMACJyuAAicsAAInLMACJy1AAicuAAInLkACJy6AAicuwAInLwACJy+AAicwAAInMEACJzCAAicxAAInMUACJzkAAidXwAInWEACJ1jAAidZQAInWgACJ1pAAidagAInWsACJ1sAAidbgAInXAACJ1xAAidcgAInXQACJ11AAieCAAInisACJ5LAAieawAInm0ACJ5vAAiecQAInnMACJ52AAiedwAInngACJ57AAiefAAInn4ACJ5/AAieggAInoUACJ6GAAiehwAInooACJ6LAAielAAInq0ACJ62AAieuAAInrsACJ7EAAiexwAInsoACJ7MAAifFQAInzkACJ9gAAifhAAIn4cACJ+JAAifiwAIn40ACJ+PAAifkQAIn5IACJ+VAAifrgAIn88ACJ/RAAif0wAIn9UACJ/XAAif2QAIn9sACJ/dAAif3wAIoAAACKADAAigBgAIoAkACKAMAAigDwAIoBIACKAVAAigGAAIoBoACKCVAAiglwAIoJkACKCbAAigngAIoJ8ACKCgAAigoQAIoKIACKCkAAigpgAIoKcACKCoAAigqgAIoKsACKEmAAihKAAIoSoACKEsAAihLwAIoTAACKExAAihMgAIoTMACKE1AAihNwAIoTgACKE5AAihOwAIoTwACKG3AAihuQAIobwACKG+AAihwQAIocIACKHDAAihxAAIocUACKHHAAihyQAIocoACKHLAAihzQAIoc4ACKHnAAih6AAIoekACKHrAAiiZgAIomgACKJqAAiibAAIom8ACKJwAAiicQAIonIACKJzAAiidQAIoncACKJ4AAiieQAIonsACKJ8AAii9wAIovkACKL7AAii/QAIowAACKMBAAijAgAIowMACKMEAAijBgAIowgACKMJAAijCgAIowwACKMNAAijiAAIo4oACKOMAAijjgAIo5EACKOSAAijkwAIo5QACKOVAAijlwAIo5kACKOaAAijmwAIo50ACKOeAAikGQAIpBsACKQdAAikHwAIpCIACKQjAAikJAAIpCUACKQmAAikKAAIpCoACKQrAAikLAAIpC4ACKQvAAikqgAIpKwACKSuAAiksAAIpLMACKS0AAiktQAIpLYACKS3AAikuQAIpLsACKS8AAikvQAIpL8ACKTAAAilCQAIpS0ACKVUAAileAAIpXsACKV+AAilgAAIpYIACKWEAAilhgAIpYcACKWKAAilowAIpcAACKXDAAilxgAIpckACKXMAAilzwAIpdIACKXVAAil8gAIpfUACKX4AAil+wAIpf4ACKYBAAimBAAIpgcACKYJAAimhAAIpoYACKaJAAimiwAIpo4ACKaPAAimkAAIppEACKaSAAimlAAIppcACKaYAAimmQAIppsACKacAAinFwAIpxkACKccAAinHgAIpyEACKciAAinIwAIpyQACKclAAinJwAIpyoACKcrAAinLAAIpy4ACKcvAAinqgAIp6wACKevAAinsQAIp7QACKe1AAintgAIp7cACKe4AAinugAIp70ACKe+AAinvwAIp8EACKfCAAioPQAIqD8ACKhCAAioRAAIqEcACKhIAAioSQAIqEoACKhLAAioTQAIqFAACKhRAAioUgAIqFQACKhVAAio0AAIqNIACKjUAAio1gAIqNkACKjaAAio2wAIqNwACKjdAAio3wAIqOIACKjjAAio5AAIqOYACKjnAAipYgAIqWQACKlmAAipaAAIqWsACKlsAAipbQAIqW4ACKlvAAipcQAIqXQACKl1AAipdgAIqXgACKl5AAip9AAIqfYACKn5AAip+wAIqf4ACKn/AAiqAAAIqgEACKoCAAiqBAAIqgcACKoIAAiqCQAIqgsACKoMAAiqnwAIqsIACKriAAirAgAIqwQACKsGAAirCAAIqwoACKsNAAirDgAIqw8ACKsSAAirEwAIqxUACKsWAAirGQAIqxwACKsdAAirHgAIqyEACKsiAAirJwAIq0AACKtJAAirSwAIq04ACKtXAAirWgAIq10ACKtfAAirqAAIq8wACKvzAAisFwAIrBoACKwcAAisHgAIrCAACKwiAAisJAAIrCUACKwoAAisQQAIrGIACKxkAAisZgAIrGgACKxqAAisbAAIrG4ACKxwAAiscgAIrJMACKyWAAismQAIrJwACKyfAAisogAIrKUACKyoAAisqwAIrK0ACK0oAAitKgAIrSwACK0uAAitMQAIrTIACK0zAAitNAAIrTUACK03AAitOQAIrToACK07AAitPQAIrT4ACK25AAituwAIrb0ACK2/AAitwgAIrcMACK3EAAitxQAIrcYACK3IAAitygAIrcsACK3MAAitzgAIrc8ACK5KAAiuTAAIrk8ACK5RAAiuVAAIrlUACK5WAAiuVwAIrlgACK5aAAiuXAAIrl0ACK5eAAiuYAAIrmEACK56AAiuewAIrnwACK5+AAiu+QAIrvsACK79AAiu/wAIrwIACK8DAAivBAAIrwUACK8GAAivCAAIrwoACK8LAAivDAAIrw4ACK8PAAivigAIr4wACK+OAAivkAAIr5MACK+UAAivlQAIr5YACK+XAAivmQAIr5sACK+cAAivnQAIr58ACK+gAAiwGwAIsB0ACLAfAAiwIQAIsCQACLAlAAiwJgAIsCcACLAoAAiwKgAIsCwACLAtAAiwLgAIsDAACLAxAAiwrAAIsK4ACLCwAAiwsgAIsLUACLC2AAiwtwAIsLgACLC5AAiwuwAIsL0ACLC+AAiwvwAIsMEACLDCAAixPQAIsT8ACLFBAAixQwAIsUYACLFHAAixSAAIsUkACLFKAAixTAAIsU4ACLFPAAixUAAIsVIACLFTAAixnAAIscAACLHnAAiyCwAIsg4ACLIRAAiyEwAIshUACLIXAAiyGQAIshoACLIdAAiyNgAIslMACLJWAAiyWQAIslwACLJfAAiyYgAIsmUACLJoAAiyhQAIsogACLKLAAiyjgAIspEACLKUAAiylwAIspoACLKcAAizFwAIsxkACLMcAAizHgAIsyEACLMiAAizIwAIsyQACLMlAAizJwAIsyoACLMrAAizLAAIsy4ACLMvAAizqgAIs6wACLOvAAizsQAIs7QACLO1AAiztgAIs7cACLO4AAizugAIs70ACLO+AAizvwAIs8EACLPCAAi0PQAItD8ACLRCAAi0RAAItEcACLRIAAi0SQAItEoACLRLAAi0TQAItFAACLRRAAi0UgAItFQACLRVAAi00AAItNIACLTVAAi01wAItNoACLTbAAi03AAItN0ACLTeAAi04AAItOMACLTkAAi05QAItOcACLToAAi1YwAItWUACLVnAAi1aQAItWwACLVtAAi1bgAItW8ACLVwAAi1cgAItXUACLV2AAi1dwAItXkACLV6AAi19QAItfcACLX5AAi1+wAItf4ACLX/AAi2AAAItgEACLYCAAi2BAAItgcACLYIAAi2CQAItgsACLYMAAi2hwAItokACLaMAAi2jgAItpEACLaSAAi2kwAItpQACLaVAAi2lwAItpoACLabAAi2nAAItp4ACLafAAi3MgAIt1UACLd1AAi3lQAIt5cACLeZAAi3mwAIt50ACLegAAi3oQAIt6IACLelAAi3pgAIt6gACLepAAi3qwAIt64ACLevAAi3sAAIt7MACLe0AAi3uQAIt9IACLfbAAi33QAIt98ACLfoAAi36wAIt+4ACLfwAAi4OQAIuF0ACLiEAAi4qAAIuKsACLitAAi4rwAIuLEACLizAAi4tQAIuLYACLi5AAi40gAIuPMACLj1AAi49wAIuPkACLj7AAi4/QAIuP8ACLkBAAi5AwAIuSQACLknAAi5KgAIuS0ACLkwAAi5MwAIuTYACLk5AAi5PAAIuT4ACLm5AAi5uwAIub0ACLm/AAi5wgAIucMACLnEAAi5xQAIucYACLnIAAi5ygAIucsACLnMAAi5zgAIuc8ACLpKAAi6TAAIuk4ACLpQAAi6UwAIulQACLpVAAi6VgAIulcACLpZAAi6WwAIulwACLpdAAi6XwAIumAACLrbAAi63QAIuuAACLriAAi65QAIuuYACLrnAAi66AAIuukACLrrAAi67QAIuu4ACLrvAAi68QAIuvIACLsLAAi7DAAIuw0ACLsPAAi7igAIu4wACLuOAAi7kAAIu5MACLuUAAi7lQAIu5YACLuXAAi7mQAIu5sACLucAAi7nQAIu58ACLugAAi8GwAIvB0ACLwfAAi8IQAIvCQACLwlAAi8JgAIvCcACLwoAAi8KgAIvCwACLwtAAi8LgAIvDAACLwxAAi8rAAIvK4ACLywAAi8sgAIvLUACLy2AAi8twAIvLgACLy5AAi8uwAIvL0ACLy+AAi8vwAIvMEACLzCAAi9PQAIvT8ACL1BAAi9QwAIvUYACL1HAAi9SAAIvUkACL1KAAi9TAAIvU4ACL1PAAi9UAAIvVIACL1TAAi9zgAIvdAACL3SAAi91AAIvdcACL3YAAi92QAIvdoACL3bAAi93QAIvd8ACL3gAAi94QAIveMACL3kAAi+LQAIvlEACL54AAi+nAAIvp8ACL6hAAi+owAIvqUACL6nAAi+qQAIvqoACL6tAAi+xgAIvuMACL7lAAi+5wAIvukACL7rAAi+7QAIvu8ACL7xAAi/DgAIvxEACL8UAAi/FwAIvxoACL8dAAi/IAAIvyMACL8lAAi/oAAIv6IACL+kAAi/pgAIv6kACL+qAAi/qwAIv6wACL+tAAi/rwAIv7EACL+yAAi/swAIv7UACL+2AAjAMQAIwDMACMA1AAjANwAIwDoACMA7AAjAPAAIwD0ACMA+AAjAQAAIwEIACMBDAAjARAAIwEYACMBHAAjAwgAIwMQACMDGAAjAyAAIwMsACMDMAAjAzQAIwM4ACMDPAAjA0QAIwNMACMDUAAjA1QAIwNcACMDYAAjBUwAIwVUACMFYAAjBWgAIwV0ACMFeAAjBXwAIwWAACMFhAAjBYwAIwWUACMFmAAjBZwAIwWkACMFqAAjB5QAIwecACMHpAAjB6wAIwe4ACMHvAAjB8AAIwfEACMHyAAjB9AAIwfYACMH3AAjB+AAIwfoACMH7AAjCdgAIwngACMJ6AAjCfAAIwn8ACMKAAAjCgQAIwoIACMKDAAjChQAIwocACMKIAAjCiQAIwosACMKMAAjDBwAIwwkACMMLAAjDDQAIwxAACMMRAAjDEgAIwxMACMMUAAjDFgAIwxgACMMZAAjDGgAIwxwACMMdAAjDsAAIw9MACMPzAAjEEwAIxBUACMQXAAjEGQAIxBsACMQeAAjEHwAIxCAACMQjAAjEJAAIxCYACMQnAAjEKgAIxC0ACMQuAAjELwAIxDIACMQzAAjEPAAIxFUACMReAAjEYAAIxGMACMRsAAjEbwAIxHIACMR0AAjEvQAIxOEACMUIAAjFLAAIxS8ACMUxAAjFMwAIxTUACMU3AAjFOQAIxToACMU9AAjFVgAIxXcACMV5AAjFewAIxX0ACMV/AAjFgQAIxYMACMWFAAjFhwAIxagACMWrAAjFrgAIxbEACMW0AAjFtwAIxboACMW9AAjFwAAIxcIACMY9AAjGPwAIxkEACMZDAAjGRgAIxkcACMZIAAjGSQAIxkoACMZMAAjGTgAIxk8ACMZQAAjGUgAIxlMACMbOAAjG0AAIxtIACMbUAAjG1wAIxtgACMbZAAjG2gAIxtsACMbdAAjG3wAIxuAACMbhAAjG4wAIxuQACMdfAAjHYQAIx2QACMdmAAjHaQAIx2oACMdrAAjHbAAIx20ACMdvAAjHcQAIx3IACMdzAAjHdQAIx3YACMePAAjHkAAIx5EACMeTAAjIDgAIyBAACMgSAAjIFAAIyBcACMgYAAjIGQAIyBoACMgbAAjIHQAIyB8ACMggAAjIIQAIyCMACMgkAAjInwAIyKEACMijAAjIpQAIyKgACMipAAjIqgAIyKsACMisAAjIrgAIyLAACMixAAjIsgAIyLQACMi1AAjJMAAIyTIACMk0AAjJNgAIyTkACMk6AAjJOwAIyTwACMk9AAjJPwAIyUEACMlCAAjJQwAIyUUACMlGAAjJwQAIycMACMnFAAjJxwAIycoACMnLAAjJzAAIyc0ACMnOAAjJ0AAIydIACMnTAAjJ1AAIydYACMnXAAjKUgAIylQACMpWAAjKWAAIylsACMpcAAjKXQAIyl4ACMpfAAjKYQAIymMACMpkAAjKZQAIymcACMpoAAjKsQAIytUACMr8AAjLIAAIyyMACMsmAAjLKAAIyyoACMssAAjLLgAIyy8ACMsyAAjLSwAIy2gACMtrAAjLbgAIy3EACMt0AAjLdwAIy3oACMt9AAjLmgAIy50ACMugAAjLowAIy6YACMupAAjLrAAIy68ACMuxAAjMLAAIzC4ACMwxAAjMMwAIzDYACMw3AAjMOAAIzDkACMw6AAjMPAAIzD8ACMxAAAjMQQAIzEMACMxEAAjMvwAIzMEACMzEAAjMxgAIzMkACMzKAAjMywAIzMwACMzNAAjMzwAIzNIACMzTAAjM1AAIzNYACMzXAAjNUgAIzVQACM1XAAjNWQAIzVwACM1dAAjNXgAIzV8ACM1gAAjNYgAIzWUACM1mAAjNZwAIzWkACM1qAAjN5QAIzecACM3qAAjN7AAIze8ACM3wAAjN8QAIzfIACM3zAAjN9QAIzfgACM35AAjN+gAIzfwACM39AAjOgAAIzqQACM7IAAjO6wAIzxIACM8yAAjPWQAIz4AACM+gAAjPxAAIz+gACM/qAAjP7QAIz+8ACM/xAAjP8wAIz/YACM/5AAjP+wAIz/0ACNAAAAjQAgAI0AQACNAHAAjQCgAI0AsACNAQAAjQKQAI0C4ACNAwAAjQNQAI0DgACNA6AAjQgwAI0KcACNDOAAjQ8gAI0PUACND3AAjQ+QAI0PsACND9AAjQ/wAI0QAACNEDAAjRHAAI0UEACNFDAAjRRQAI0UcACNFJAAjRSwAI0U0ACNFPAAjRUQAI0VMACNF4AAjRewAI0X4ACNGBAAjRhAAI0YcACNGKAAjRjQAI0ZAACNGTAAjRlQAI0hAACNISAAjSFQAI0hcACNIaAAjSGwAI0hwACNIdAAjSHgAI0iAACNIiAAjSIwAI0iQACNImAAjSJwAI0jgACNI5AAjSOwAI0rYACNK4AAjSugAI0rwACNK/AAjSwAAI0sEACNLCAAjSwwAI0sUACNLHAAjSyAAI0skACNLLAAjSzAAI00cACNNJAAjTTAAI004ACNNRAAjTUgAI01MACNNUAAjTVQAI01cACNNZAAjTWgAI01sACNNdAAjTXgAI028ACNNwAAjTcgAI0+0ACNPvAAjT8QAI0/MACNP2AAjT9wAI0/gACNP5AAjT+gAI0/wACNP+AAjT/wAI1AAACNQCAAjUAwAI1H4ACNSAAAjUgwAI1IUACNSIAAjUiQAI1IoACNSLAAjUjAAI1I4ACNSQAAjUkQAI1JIACNSUAAjUlQAI1KYACNSnAAjUqQAI1SQACNUmAAjVKAAI1SoACNUtAAjVLgAI1S8ACNUwAAjVMQAI1TMACNU1AAjVNgAI1TcACNU5AAjVOgAI1bUACNW3AAjVugAI1bwACNW/AAjVwAAI1cEACNXCAAjVwwAI1cUACNXHAAjVyAAI1ckACNXLAAjVzAAI1eUACNXmAAjV5wAI1ekACNZkAAjWZgAI1mgACNZqAAjWbQAI1m4ACNZvAAjWcAAI1nEACNZzAAjWdQAI1nYACNZ3AAjWeQAI1noACNb1AAjW9wAI1voACNb8AAjW/wAI1wAACNcBAAjXAgAI1wMACNcFAAjXBwAI1wgACNcJAAjXCwAI1wwACNcmAAjXPwAI10gACNdLAAjXTgAI11cACNdaAAjXXQAI118ACNdqAAjXeAAI2AsACNguAAjYTgAI2G4ACNhwAAjYcgAI2HQACNh2AAjYeQAI2HoACNh7AAjYfgAI2H8ACNiBAAjYggAI2IQACNiHAAjYiAAI2IkACNiMAAjYjQAI2JIACNirAAjYtAAI2LYACNi4AAjYwQAI2MQACNjHAAjYyQAI2RIACNk2AAjZXQAI2YEACNmEAAjZhgAI2YgACNmKAAjZjAAI2Y4ACNmPAAjZkgAI2asACNnMAAjZzgAI2dAACNnSAAjZ1AAI2dYACNnYAAjZ2gAI2dwACNn9AAjaAAAI2gMACNoGAAjaCQAI2gwACNoPAAjaEgAI2hUACNoXAAjakgAI2pQACNqWAAjamAAI2psACNqcAAjanQAI2p4ACNqfAAjaoQAI2qMACNqkAAjapQAI2qcACNqoAAjbIwAI2yUACNsnAAjbKQAI2ywACNstAAjbLgAI2y8ACNswAAjbMgAI2zQACNs1AAjbNgAI2zgACNs5AAjbtAAI27YACNu5AAjbuwAI274ACNu/AAjbwAAI28EACNvCAAjbxAAI28YACNvHAAjbyAAI28oACNvLAAjb5AAI2+UACNvmAAjb6AAI3GMACNxlAAjcZwAI3GkACNxsAAjcbQAI3G4ACNxvAAjccAAI3HIACNx0AAjcdQAI3HYACNx4AAjceQAI3PQACNz2AAjc+AAI3PoACNz9AAjc/gAI3P8ACN0AAAjdAQAI3QMACN0FAAjdBgAI3QcACN0JAAjdCgAI3YUACN2HAAjdiQAI3YsACN2OAAjdjwAI3ZAACN2RAAjdkgAI3ZQACN2WAAjdlwAI3ZgACN2aAAjdmwAI3hYACN4YAAjeGgAI3hwACN4fAAjeIAAI3iEACN4iAAjeIwAI3iUACN4nAAjeKAAI3ikACN4rAAjeLAAI3qcACN6pAAjeqwAI3q0ACN6wAAjesQAI3rIACN6zAAjetAAI3rYACN64AAjeuQAI3roACN68AAjevQAI3wYACN8qAAjfUQAI33UACN94AAjfegAI33wACN9+AAjfgAAI34IACN+DAAjfhgAI358ACN+8AAjfvgAI38AACN/CAAjfxAAI38YACN/IAAjfygAI3+cACN/qAAjf7QAI3/AACN/zAAjf9gAI3/kACN/8AAjf/gAI4HkACOB7AAjgfQAI4H8ACOCCAAjggwAI4IQACOCFAAjghgAI4IgACOCKAAjgiwAI4IwACOCOAAjgjwAI4QoACOEMAAjhDgAI4RAACOETAAjhFAAI4RUACOEWAAjhFwAI4RkACOEbAAjhHAAI4R0ACOEfAAjhIAAI4ZsACOGdAAjhnwAI4aEACOGkAAjhpQAI4aYACOGnAAjhqAAI4aoACOGsAAjhrQAI4a4ACOGwAAjhsQAI4iwACOIuAAjiMAAI4jIACOI1AAjiNgAI4jcACOI4AAjiOQAI4jsACOI9AAjiPgAI4j8ACOJBAAjiQgAI4r0ACOK/AAjiwQAI4sMACOLGAAjixwAI4sgACOLJAAjiygAI4swACOLOAAjizwAI4tAACOLSAAji0wAI404ACONQAAjjUwAI41UACONYAAjjWQAI41oACONbAAjjXAAI414ACONgAAjjYQAI42IACONkAAjjZQAI43QACOPvAAjj8QAI4/MACOP1AAjj+AAI4/kACOP6AAjj+wAI4/wACOP+AAjkAAAI5AEACOQCAAjkBAAI5AUACOSYAAjkuwAI5NsACOT7AAjk/QAI5P8ACOUBAAjlAwAI5QYACOUHAAjlCAAI5QsACOUMAAjlDgAI5Q8ACOUSAAjlFQAI5RYACOUXAAjlGgAI5RsACOUgAAjlOQAI5UIACOVEAAjlRwAI5VAACOVTAAjlVgAI5VgACOWhAAjlxQAI5ewACOYQAAjmEwAI5hUACOYXAAjmGQAI5hsACOYdAAjmHgAI5iEACOY6AAjmWwAI5l0ACOZfAAjmYQAI5mMACOZlAAjmZwAI5mkACOZrAAjmjAAI5o8ACOaSAAjmlQAI5pgACOabAAjmngAI5qEACOakAAjmpgAI5yEACOcjAAjnJQAI5ycACOcqAAjnKwAI5ywACOctAAjnLgAI5zAACOcyAAjnMwAI5zQACOc2AAjnNwAI57IACOe0AAjntgAI57gACOe7AAjnvAAI570ACOe+AAjnvwAI58EACOfDAAjnxAAI58UACOfHAAjnyAAI6EMACOhFAAjoSAAI6EoACOhNAAjoTgAI6E8ACOhQAAjoUQAI6FMACOhVAAjoVgAI6FcACOhZAAjoWgAI6HMACOh0AAjodQAI6HcACOjyAAjo9AAI6PYACOj4AAjo+wAI6PwACOj9AAjo/gAI6P8ACOkBAAjpAwAI6QQACOkFAAjpBwAI6QgACOmDAAjphQAI6YcACOmJAAjpjAAI6Y0ACOmOAAjpjwAI6ZAACOmSAAjplAAI6ZUACOmWAAjpmAAI6ZkACOoUAAjqFgAI6hgACOoaAAjqHQAI6h4ACOofAAjqIAAI6iEACOojAAjqJQAI6iYACOonAAjqKQAI6ioACOqlAAjqpwAI6qkACOqrAAjqrgAI6q8ACOqwAAjqsQAI6rIACOq0AAjqtgAI6rcACOq4AAjqugAI6rsACOs2AAjrOAAI6zoACOs8AAjrPwAI60AACOtBAAjrQgAI60MACOtFAAjrRwAI60gACOtJAAjrSwAI60wACOuVAAjruQAI6+AACOwEAAjsBwAI7AoACOwMAAjsDgAI7BAACOwSAAjsEwAI7BYACOwvAAjsTAAI7E8ACOxSAAjsVQAI7FgACOxbAAjsXgAI7GEACOx+AAjsgQAI7IQACOyHAAjsigAI7I0ACOyQAAjskwAI7JUACO0QAAjtEgAI7RUACO0XAAjtGgAI7RsACO0cAAjtHQAI7R4ACO0gAAjtIwAI7SQACO0lAAjtJwAI7SgACO2jAAjtpQAI7agACO2qAAjtrQAI7a4ACO2vAAjtsAAI7bEACO2zAAjttgAI7bcACO24AAjtugAI7bsACO42AAjuOAAI7jsACO49AAjuQAAI7kEACO5CAAjuQwAI7kQACO5GAAjuSQAI7koACO5LAAjuTQAI7k4ACO7JAAjuywAI7s4ACO7QAAju0wAI7tQACO7VAAju1gAI7tcACO7ZAAju3AAI7t0ACO7eAAju4AAI7uEACO9cAAjvXgAI72AACO9iAAjvZQAI72YACO9nAAjvaAAI72kACO9rAAjvbgAI728ACO9wAAjvcgAI73MACO/uAAjv8AAI7/IACO/0AAjv9wAI7/gACO/5AAjv+gAI7/sACO/9AAjwAAAI8AEACPACAAjwBAAI8AUACPCAAAjwggAI8IUACPCHAAjwigAI8IsACPCMAAjwjQAI8I4ACPCQAAjwkwAI8JQACPCVAAjwlwAI8JgACPCpAAjwqgAI8KwACPEnAAjxKQAI8SsACPEtAAjxMAAI8TEACPEyAAjxMwAI8TQACPE2AAjxOQAI8ToACPE7AAjxPQAI8T4ACPG5AAjxuwAI8b0ACPG/AAjxwgAI8cMACPHEAAjxxQAI8cYACPHIAAjxywAI8cwACPHNAAjxzwAI8dAACPJLAAjyTQAI8lAACPJSAAjyVQAI8lYACPJXAAjyWAAI8lkACPJbAAjyXgAI8l8ACPJgAAjyYgAI8mMACPL2AAjzGQAI8zkACPNZAAjzWwAI810ACPNfAAjzYQAI82QACPNlAAjzZgAI82kACPNqAAjzbAAI820ACPNwAAjzcwAI83QACPN1AAjzeAAI83kACPN+AAjzlwAI86AACPOiAAjzpQAI864ACPOxAAjztAAI87YACPP/AAj0IwAI9EoACPRuAAj0cQAI9HMACPR1AAj0dwAI9HkACPR7AAj0fAAI9H8ACPSYAAj0uQAI9LsACPS9AAj0vwAI9MEACPTDAAj0xQAI9McACPTJAAj06gAI9O0ACPTwAAj08wAI9PYACPT5AAj0/AAI9P8ACPUCAAj1BAAI9X8ACPWBAAj1gwAI9YUACPWIAAj1iQAI9YoACPWLAAj1jAAI9Y4ACPWQAAj1kQAI9ZIACPWUAAj1lQAI9hAACPYSAAj2FAAI9hYACPYZAAj2GgAI9hsACPYcAAj2HQAI9h8ACPYhAAj2IgAI9iMACPYlAAj2JgAI9qEACPajAAj2pgAI9qgACParAAj2rAAI9q0ACPauAAj2rwAI9rEACPazAAj2tAAI9rUACPa3AAj2uAAI9tEACPbSAAj20wAI9tUACPdQAAj3UgAI91QACPdWAAj3WQAI91oACPdbAAj3XAAI910ACPdfAAj3YQAI92IACPdjAAj3ZQAI92YACPfhAAj34wAI9+UACPfnAAj36gAI9+sACPfsAAj37QAI9+4ACPfwAAj38gAI9/MACPf0AAj39gAI9/cACPhyAAj4dAAI+HYACPh4AAj4ewAI+HwACPh9AAj4fgAI+H8ACPiBAAj4gwAI+IQACPiFAAj4hwAI+IgACPkDAAj5BQAI+QcACPkJAAj5DAAI+Q0ACPkOAAj5DwAI+RAACPkSAAj5FAAI+RUACPkWAAj5GAAI+RkACPmUAAj5lgAI+ZgACPmaAAj5nQAI+Z4ACPmfAAj5oAAI+aEACPmjAAj5pQAI+aYACPmnAAj5qQAI+aoACPnzAAj6FwAI+j4ACPpiAAj6ZQAI+mgACPpqAAj6bAAI+m4ACPpwAAj6cQAI+nQACPqNAAj6qgAI+q0ACPqwAAj6swAI+rYACPq5AAj6vAAI+r8ACPrcAAj63wAI+uIACPrlAAj66AAI+usACPruAAj68QAI+vMACPtuAAj7cAAI+3MACPt1AAj7eAAI+3kACPt6AAj7ewAI+3wACPt+AAj7gQAI+4IACPuDAAj7hQAI+4YACPwBAAj8AwAI/AYACPwIAAj8CwAI/AwACPwNAAj8DgAI/A8ACPwRAAj8FAAI/BUACPwWAAj8GAAI/BkACPyUAAj8lgAI/JkACPybAAj8ngAI/J8ACPygAAj8oQAI/KIACPykAAj8pwAI/KgACPypAAj8qwAI/KwACP0nAAj9KQAI/SwACP0uAAj9MQAI/TIACP0zAAj9NAAI/TUACP03AAj9OgAI/TsACP08AAj9PgAI/T8ACP3CAAj95gAI/goACP4tAAj+VAAI/nQACP6bAAj+wgAI/uIACP8GAAj/KgAI/ywACP8vAAj/MQAI/zMACP81AAj/OAAI/zsACP89AAj/PwAI/0IACP9EAAj/RgAI/0kACP9MAAj/TQAI/1IACP9rAAj/cAAI/3IACP93AAj/egAI/3wACP/FAAj/6QAJABAACQA0AAkANwAJADkACQA7AAkAPQAJAD8ACQBBAAkAQgAJAEUACQBeAAkAgwAJAIUACQCHAAkAiQAJAIsACQCNAAkAjwAJAJEACQCTAAkAlQAJALoACQC9AAkAwAAJAMMACQDGAAkAyQAJAMwACQDPAAkA0gAJANUACQDXAAkBUgAJAVQACQFXAAkBWQAJAVwACQFdAAkBXgAJAV8ACQFgAAkBYgAJAWQACQFlAAkBZgAJAWgACQFpAAkBegAJAXsACQF9AAkB+AAJAfoACQH8AAkB/gAJAgEACQICAAkCAwAJAgQACQIFAAkCBwAJAgkACQIKAAkCCwAJAg0ACQIOAAkCiQAJAosACQKOAAkCkAAJApMACQKUAAkClQAJApYACQKXAAkCmQAJApsACQKcAAkCnQAJAp8ACQKgAAkCsQAJArYACQK5AAkCuwAJAswACQLVAAkC2AAJAtsACQLdAAkC8AAJAvoACQN1AAkDdwAJA3kACQN7AAkDfgAJA38ACQOAAAkDgQAJA4IACQOEAAkDhgAJA4cACQOIAAkDigAJA4sACQQGAAkECAAJBAsACQQNAAkEEAAJBBEACQQSAAkEEwAJBBQACQQWAAkEGAAJBBkACQQaAAkEHAAJBB0ACQQuAAkELwAJBDEACQSsAAkErgAJBLAACQSyAAkEtQAJBLYACQS3AAkEuAAJBLkACQS7AAkEvQAJBL4ACQS/AAkEwQAJBMIACQU9AAkFPwAJBUIACQVEAAkFRwAJBUgACQVJAAkFSgAJBUsACQVNAAkFTwAJBVAACQVRAAkFUwAJBVQACQVtAAkFbgAJBW8ACQVxAAkF7AAJBe4ACQXwAAkF8gAJBfUACQX2AAkF9wAJBfgACQX5AAkF+wAJBf0ACQX+AAkF/wAJBgEACQYCAAkGfQAJBn8ACQaCAAkGhAAJBocACQaIAAkGiQAJBooACQaLAAkGjQAJBo8ACQaQAAkGkQAJBpMACQaUAAkGowAJBrwACQb1AAkG+AAJBvsACQb+AAkHAQAJBwQACQcHAAkHCgAJBw0ACQcQAAkHEwAJBxYACQcZAAkHHAAJBx8ACQdYAAkHWwAJB14ACQdhAAkHZAAJB2cACQdqAAkHbQAJB3AACQdzAAkHdgAJB3kACQd8AAkHfwAJB4IACQeEAAkHkQAJB7AACQe5AAkH0wAJB+YACQf+AAkIDAAJCBkACQg2AAkISgAJCFIACQhhAAkIeAAJCQsACQkuAAkJTgAJCW4ACQlwAAkJcgAJCXQACQl2AAkJeQAJCXoACQl7AAkJfgAJCX8ACQmBAAkJggAJCYQACQmHAAkJiAAJCYkACQmMAAkJjQAJCZIACQmrAAkJtAAJCbYACQm4AAkJwQAJCcQACQnHAAkJyQAJChIACQo2AAkKXQAJCoEACQqEAAkKhgAJCogACQqKAAkKjAAJCo4ACQqPAAkKkgAJCqsACQrMAAkKzgAJCtAACQrSAAkK1AAJCtYACQrYAAkK2gAJCtwACQr9AAkLAAAJCwMACQsGAAkLCQAJCwwACQsPAAkLEgAJCxUACQsXAAkLkgAJC5QACQuWAAkLmAAJC5sACQucAAkLnQAJC54ACQufAAkLoQAJC6MACQukAAkLpQAJC6cACQuoAAkMIwAJDCUACQwnAAkMKQAJDCwACQwtAAkMLgAJDC8ACQwwAAkMMgAJDDQACQw1AAkMNgAJDDgACQw5AAkMtAAJDLYACQy5AAkMuwAJDL4ACQy/AAkMwAAJDMEACQzCAAkMxAAJDMYACQzHAAkMyAAJDMoACQzLAAkM5AAJDOUACQzmAAkM6AAJDWMACQ1lAAkNZwAJDWkACQ1sAAkNbQAJDW4ACQ1vAAkNcAAJDXIACQ10AAkNdQAJDXYACQ14AAkNeQAJDfQACQ32AAkN+AAJDfoACQ39AAkN/gAJDf8ACQ4AAAkOAQAJDgMACQ4FAAkOBgAJDgcACQ4JAAkOCgAJDoUACQ6HAAkOiQAJDosACQ6OAAkOjwAJDpAACQ6RAAkOkgAJDpQACQ6WAAkOlwAJDpgACQ6aAAkOmwAJDxYACQ8YAAkPGgAJDxwACQ8fAAkPIAAJDyEACQ8iAAkPIwAJDyUACQ8nAAkPKAAJDykACQ8rAAkPLAAJD6cACQ+pAAkPqwAJD60ACQ+wAAkPsQAJD7IACQ+zAAkPtAAJD7YACQ+4AAkPuQAJD7oACQ+8AAkPvQAJEAYACRAqAAkQUQAJEHUACRB4AAkQegAJEHwACRB+AAkQgAAJEIIACRCDAAkQhgAJEJ8ACRC8AAkQvgAJEMAACRDCAAkQxAAJEMYACRDIAAkQygAJEOcACRDqAAkQ7QAJEPAACRDzAAkQ9gAJEPkACRD8AAkQ/gAJEXkACRF7AAkRfQAJEX8ACRGCAAkRgwAJEYQACRGFAAkRhgAJEYgACRGKAAkRiwAJEYwACRGOAAkRjwAJEgoACRIMAAkSDgAJEhAACRITAAkSFAAJEhUACRIWAAkSFwAJEhkACRIbAAkSHAAJEh0ACRIfAAkSIAAJEpsACRKdAAkSnwAJEqEACRKkAAkSpQAJEqYACRKnAAkSqAAJEqoACRKsAAkSrQAJEq4ACRKwAAkSsQAJEywACRMuAAkTMQAJEzMACRM2AAkTNwAJEzgACRM5AAkTOgAJEzwACRM+AAkTPwAJE0AACRNCAAkTQwAJE74ACRPAAAkTwgAJE8QACRPHAAkTyAAJE8kACRPKAAkTywAJE80ACRPPAAkT0AAJE9EACRPTAAkT1AAJFE8ACRRRAAkUUwAJFFUACRRYAAkUWQAJFFoACRRbAAkUXAAJFF4ACRRgAAkUYQAJFGIACRRkAAkUZQAJFOAACRTiAAkU5AAJFOYACRTpAAkU6gAJFOsACRTsAAkU7QAJFO8ACRTxAAkU8gAJFPMACRT1AAkU9gAJFYkACRWsAAkVzAAJFewACRXuAAkV8AAJFfIACRX0AAkV9wAJFfgACRX5AAkV/AAJFf0ACRX/AAkWAAAJFgIACRYFAAkWBgAJFgcACRYKAAkWCwAJFhAACRYpAAkWMgAJFjQACRY2AAkWPwAJFkIACRZFAAkWRwAJFpAACRa0AAkW2wAJFv8ACRcCAAkXBAAJFwYACRcIAAkXCgAJFwwACRcNAAkXEAAJFykACRdKAAkXTAAJF04ACRdQAAkXUgAJF1QACRdWAAkXWAAJF1oACRd7AAkXfgAJF4EACReEAAkXhwAJF4oACReNAAkXkAAJF5MACReVAAkYEAAJGBIACRgUAAkYFgAJGBkACRgaAAkYGwAJGBwACRgdAAkYHwAJGCEACRgiAAkYIwAJGCUACRgmAAkYoQAJGKMACRilAAkYpwAJGKoACRirAAkYrAAJGK0ACRiuAAkYsAAJGLIACRizAAkYtAAJGLYACRi3AAkZMgAJGTQACRk3AAkZOQAJGTwACRk9AAkZPgAJGT8ACRlAAAkZQgAJGUQACRlFAAkZRgAJGUgACRlJAAkZYgAJGWMACRlkAAkZZgAJGeEACRnjAAkZ5QAJGecACRnqAAkZ6wAJGewACRntAAkZ7gAJGfAACRnyAAkZ8wAJGfQACRn2AAkZ9wAJGnIACRp0AAkadgAJGngACRp7AAkafAAJGn0ACRp+AAkafwAJGoEACRqDAAkahAAJGoUACRqHAAkaiAAJGwMACRsFAAkbBwAJGwkACRsMAAkbDQAJGw4ACRsPAAkbEAAJGxIACRsUAAkbFQAJGxYACRsYAAkbGQAJG5QACRuWAAkbmAAJG5oACRudAAkbngAJG58ACRugAAkboQAJG6MACRulAAkbpgAJG6cACRupAAkbqgAJHCUACRwnAAkcKQAJHCsACRwuAAkcLwAJHDAACRwxAAkcMgAJHDQACRw2AAkcNwAJHDgACRw6AAkcOwAJHIQACRyoAAkczwAJHPMACRz2AAkc+AAJHPoACRz8AAkc/gAJHQAACR0BAAkdBAAJHR0ACR06AAkdPAAJHT4ACR1AAAkdQgAJHUQACR1GAAkdSAAJHWUACR1oAAkdawAJHW4ACR1xAAkddAAJHXcACR16AAkdfAAJHfcACR35AAkd+wAJHf0ACR4AAAkeAQAJHgIACR4DAAkeBAAJHgYACR4IAAkeCQAJHgoACR4MAAkeDQAJHogACR6KAAkejAAJHo4ACR6RAAkekgAJHpMACR6UAAkelQAJHpcACR6ZAAkemgAJHpsACR6dAAkengAJHxkACR8bAAkfHQAJHx8ACR8iAAkfIwAJHyQACR8lAAkfJgAJHygACR8qAAkfKwAJHywACR8uAAkfLwAJH6oACR+sAAkfrwAJH7EACR+0AAkftQAJH7YACR+3AAkfuAAJH7oACR+8AAkfvQAJH74ACR/AAAkfwQAJIDwACSA+AAkgQAAJIEIACSBFAAkgRgAJIEcACSBIAAkgSQAJIEsACSBNAAkgTgAJIE8ACSBRAAkgUgAJIM0ACSDPAAkg0QAJINMACSDWAAkg1wAJINgACSDZAAkg2gAJINwACSDeAAkg3wAJIOAACSDiAAkg4wAJIV4ACSFgAAkhYgAJIWQACSFnAAkhaAAJIWkACSFqAAkhawAJIW0ACSFvAAkhcAAJIXEACSFzAAkhdAAJIgcACSIqAAkiSgAJImoACSJsAAkibgAJInAACSJyAAkidQAJInYACSJ3AAkiegAJInsACSJ9AAkifgAJIoAACSKDAAkihAAJIoUACSKIAAkiiQAJIo4ACSKnAAkisAAJIrIACSK0AAkivQAJIsAACSLDAAkixQAJIw4ACSMyAAkjWQAJI30ACSOAAAkjggAJI4QACSOGAAkjiAAJI4oACSOLAAkjjgAJI6cACSPIAAkjygAJI8wACSPOAAkj0AAJI9IACSPUAAkj1gAJI9gACSP5AAkj/AAJI/8ACSQCAAkkBQAJJAgACSQLAAkkDgAJJBEACSQTAAkkjgAJJJAACSSSAAkklAAJJJcACSSYAAkkmQAJJJoACSSbAAkknQAJJJ8ACSSgAAkkoQAJJKMACSSkAAklHwAJJSEACSUjAAklJQAJJSgACSUpAAklKgAJJSsACSUsAAklLgAJJTAACSUxAAklMgAJJTQACSU1AAklsAAJJbIACSW1AAkltwAJJboACSW7AAklvAAJJb0ACSW+AAklwAAJJcIACSXDAAklxAAJJcYACSXHAAkl4AAJJeEACSXiAAkl5AAJJl8ACSZhAAkmYwAJJmUACSZoAAkmaQAJJmoACSZrAAkmbAAJJm4ACSZwAAkmcQAJJnIACSZ0AAkmdQAJJvAACSbyAAkm9AAJJvYACSb5AAkm+gAJJvsACSb8AAkm/QAJJv8ACScBAAknAgAJJwMACScFAAknBgAJJ4EACSeDAAknhQAJJ4cACSeKAAkniwAJJ4wACSeNAAknjgAJJ5AACSeSAAknkwAJJ5QACSeWAAknlwAJKBIACSgUAAkoFgAJKBgACSgbAAkoHAAJKB0ACSgeAAkoHwAJKCEACSgjAAkoJAAJKCUACSgnAAkoKAAJKKMACSilAAkopwAJKKkACSisAAkorQAJKK4ACSivAAkosAAJKLIACSi0AAkotQAJKLYACSi4AAkouQAJKQIACSkmAAkpTQAJKXEACSl0AAkpdgAJKXgACSl6AAkpfAAJKX4ACSl/AAkpggAJKZsACSm4AAkpugAJKbwACSm+AAkpwAAJKcIACSnEAAkpxgAJKeMACSnmAAkp6QAJKewACSnvAAkp8gAJKfUACSn4AAkp+gAJKnUACSp3AAkqeQAJKnsACSp+AAkqfwAJKoAACSqBAAkqggAJKoQACSqGAAkqhwAJKogACSqKAAkqiwAJKwYACSsIAAkrCgAJKwwACSsPAAkrEAAJKxEACSsSAAkrEwAJKxUACSsXAAkrGAAJKxkACSsbAAkrHAAJK5cACSuZAAkrmwAJK50ACSugAAkroQAJK6IACSujAAkrpAAJK6YACSuoAAkrqQAJK6oACSusAAkrrQAJLCgACSwqAAksLQAJLC8ACSwyAAksMwAJLDQACSw1AAksNgAJLDgACSw6AAksOwAJLDwACSw+AAksPwAJLLoACSy8AAksvgAJLMAACSzDAAksxAAJLMUACSzGAAksxwAJLMkACSzLAAkszAAJLM0ACSzPAAks0AAJLUsACS1NAAktTwAJLVEACS1UAAktVQAJLVYACS1XAAktWAAJLVoACS1cAAktXQAJLV4ACS1gAAktYQAJLdwACS3eAAkt4AAJLeIACS3lAAkt5gAJLecACS3oAAkt6QAJLesACS3tAAkt7gAJLe8ACS3xAAkt8gAJLoUACS6oAAkuyAAJLugACS7qAAku7AAJLu4ACS7wAAku8wAJLvQACS71AAku+AAJLvkACS77AAku/AAJLv4ACS8BAAkvAgAJLwMACS8GAAkvBwAJLwwACS8lAAkvLgAJLzAACS8yAAkvOwAJLz4ACS9BAAkvQwAJL4wACS+wAAkv1wAJL/sACS/+AAkwAAAJMAIACTAEAAkwBgAJMAgACTAJAAkwDAAJMCUACTBGAAkwSAAJMEoACTBMAAkwTgAJMFAACTBSAAkwVAAJMFYACTB3AAkwegAJMH0ACTCAAAkwgwAJMIYACTCJAAkwjAAJMI8ACTCRAAkxDAAJMQ4ACTEQAAkxEgAJMRUACTEWAAkxFwAJMRgACTEZAAkxGwAJMR0ACTEeAAkxHwAJMSEACTEiAAkxnQAJMZ8ACTGhAAkxowAJMaYACTGnAAkxqAAJMakACTGqAAkxrAAJMa4ACTGvAAkxsAAJMbIACTGzAAkyLgAJMjAACTIzAAkyNQAJMjgACTI5AAkyOgAJMjsACTI8AAkyPgAJMkAACTJBAAkyQgAJMkQACTJFAAkyXgAJMl8ACTJgAAkyYgAJMt0ACTLfAAky4QAJMuMACTLmAAky5wAJMugACTLpAAky6gAJMuwACTLuAAky7wAJMvAACTLyAAky8wAJM24ACTNwAAkzcgAJM3QACTN3AAkzeAAJM3k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ACUUmAAlFKQAJRSsACUUuAAlFLwAJRTAACUUxAAlFMgAJRTQACUU2AAlFNwAJRTgACUU6AAlFOwAJRbYACUW4AAlFugAJRbwACUW/AAlFwAAJRcEACUXCAAlFwwAJRcUACUXHAAlFyAAJRckACUXLAAlFzAAJRkcACUZJAAlGSwAJRk0ACUZQAAlGUQAJRlIACUZTAAlGVAAJRlYACUZYAAlGWQAJRloACUZcAAlGXQAJRtgACUbaAAlG3AAJRt4ACUbhAAlG4gAJRuMACUbkAAlG5QAJRucACUbpAAlG6gAJRusACUbtAAlG7gAJR4EACUekAAlHxAAJR+QACUfmAAlH6AAJR+oACUfsAAlH7wAJR/AACUfxAAlH9AAJR/UACUf3AAlH+AAJR/oACUf9AAlH/gAJR/8ACUgCAAlIAwAJSAgACUghAAlIKgAJSCwACUguAAlINwAJSDoACUg9AAlIPwAJSIgACUisAAlI0wAJSPcACUj6AAlI/AAJSP4ACUkAAAlJAgAJSQQACUkFAAlJCAAJSSEACUlCAAlJRAAJSUYACUlIAAlJSgAJSUwACUlOAAlJUAAJSVIACUlzAAlJdgAJSXkACUl8AAlJfwAJSYIACUmFAAlJiAAJSYsACUmNAAlKCAAJSgoACUoMAAlKDgAJShEACUoSAAlKEwAJShQACUoVAAlKFwAJShkACUoaAAlKGwAJSh0ACUoeAAlKmQAJSpsACUqdAAlKnwAJSqIACUqjAAlKpAAJSqUACUqmAAlKqAAJSqoACUqrAAlKrAAJSq4ACUqvAAlLKgAJSywACUsvAAlLMQAJSzQACUs1AAlLNgAJSzcACUs4AAlLOgAJSzwACUs9AAlLPgAJS0AACUtBAAlLWgAJS1sACUtcAAlLXgAJS9kACUvbAAlL3QAJS98ACUviAAlL4wAJS+QACUvlAAlL5gAJS+gACUvqAAlL6wAJS+wACUvuAAlL7wAJTGoACUxsAAlMbgAJTHAACUxzAAlMdAAJTHUACUx2AAlMdwAJTHkACUx7AAlMfAAJTH0ACUx/AAlMgAAJTPsACUz9AAlM/wAJTQEACU0EAAlNBQAJTQYACU0HAAlNCAAJTQoACU0MAAlNDQAJTQ4ACU0QAAlNEQAJTYwACU2OAAlNkAAJTZIACU2VAAlNlgAJTZcACU2YAAlNmQAJTZsACU2dAAlNngAJTZ8ACU2hAAlNogAJTh0ACU4fAAlOIQAJTiMACU4mAAlOJwAJTigACU4pAAlOKgAJTiwACU4uAAlOLwAJTjAACU4yAAlOMwAJTnwACU6gAAlOxwAJTusACU7uAAlO8AAJTvIACU70AAlO9gAJTvgACU75AAlO/AAJTxUACU8yAAlPNAAJTzYACU84AAlPOgAJTzwACU8+AAlPQAAJT10ACU9gAAlPYwAJT2YACU9pAAlPbAAJT28ACU9yAAlPdAAJT+8ACU/xAAlP8wAJT/UACU/4AAlP+QAJT/oACU/7AAlP/AAJT/4ACVAAAAlQAQAJUAIACVAEAAlQBQAJUIAACVCCAAlQhAAJUIYACVCJAAlQigAJUIsACVCMAAlQjQAJUI8ACVCRAAlQkgAJUJMACVCVAAlQlgAJUREACVETAAlRFQAJURcACVEaAAlRGwAJURwACVEdAAlRHgAJUSAACVEiAAlRIwAJUSQACVEmAAlRJwAJUaIACVGkAAlRpwAJUakACVGsAAlRrQAJUa4ACVGvAAlRsAAJUbIACVG0AAlRtQAJUbYACVG4AAlRuQAJUjQACVI2AAlSOAAJUjoACVI9AAlSPgAJUj8ACVJAAAlSQQAJUkMACVJFAAlSRgAJUkcACVJJAAlSSgAJUsUACVLHAAlSyQAJUssACVLOAAlSzwAJUtAACVLRAAlS0gAJUtQACVLWAAlS1wAJUtgACVLaAAlS2wAJU1YACVNYAAlTWgAJU1wACVNfAAlTYAAJU2EACVNiAAlTYwAJU2UACVNnAAlTaAAJU2kACVNrAAlTbAAJU/8ACVQiAAlUQgAJVGIACVRkAAlUZgAJVGgACVRqAAlUbQAJVG4ACVRvAAlUcgAJVHMACVR1AAlUdgAJVHgACVR7AAlUfAAJVH0ACVSAAAlUgQAJVIYACVSfAAlUqAAJVKoACVSsAAlUtQAJVLgACVS7AAlUvQAJVQYACVUqAAlVUQAJVXUACVV4AAlVegAJVXwACVV+AAlVgAAJVYIACVWDAAlVhgAJVZ8ACVXAAAlVwgAJVcQACVXGAAlVyAAJVcoACVXMAAlVzgAJVdAACVXxAAlV9AAJVfcACVX6AAlV/QAJVgAACVYDAAlWBgAJVgkACVYLAAlWhgAJVogACVaKAAlWjAAJVo8ACVaQAAlWkQAJVpIACVaTAAlWlQAJVpcACVaYAAlWmQAJVpsACVacAAlXFwAJVxkACVcbAAlXHQAJVyAACVchAAlXIgAJVyMACVckAAlXJgAJVygACVcpAAlXKgAJVywACVctAAlXqAAJV6oACVetAAlXrwAJV7IACVezAAlXtAAJV7UACVe2AAlXuAAJV7oACVe7AAlXvAAJV74ACVe/AAlX2AAJV9kACVfaAAlX3AAJWFcACVhZAAlYWwAJWF0ACVhgAAlYYQAJWGIACVhjAAlYZAAJWGYACVhoAAlYaQAJWGoACVhsAAlYbQAJWOgACVjqAAlY7AAJWO4ACVjxAAlY8gAJWPMACVj0AAlY9QAJWPcACVj5AAlY+gAJWPsACVj9AAlY/gAJWXkACVl7AAlZfQAJWX8ACVmCAAlZgwAJWYQACVmFAAlZhgAJWYgACVmKAAlZiwAJWYwACVmOAAlZjwAJWgoACVoMAAlaDgAJWhAACVoTAAlaFAAJWhUACVoWAAlaFwAJWhkACVobAAlaHAAJWh0ACVofAAlaIAAJWpsACVqdAAlanwAJWqEACVqkAAlapQAJWqYACVqnAAlaqAAJWqoACVqsAAlarQAJWq4ACVqwAAlasQAJWvoACVseAAlbRQAJW2kACVtsAAlbbgAJW3AACVtyAAlbdAAJW3YACVt3AAlbegAJW5MACVuwAAlbsgAJW7QACVu2AAlbuAAJW7oACVu8AAlbvgAJW9sACVveAAlb4QAJW+QACVvnAAlb6gAJW+0ACVvwAAlb8gAJXG0ACVxvAAlccQAJXHMACVx2AAlcdwAJXHgACVx5AAlcegAJXHwACVx+AAlcfwAJXIAACVyCAAlcgwAJXP4ACV0AAAldAgAJXQQACV0HAAldCAAJXQkACV0KAAldCwAJXQ0ACV0PAAldEAAJXREACV0TAAldFAAJXY8ACV2RAAldkwAJXZUACV2YAAldmQAJXZoACV2bAAldnAAJXZ4ACV2gAAldoQAJXaIACV2kAAldpQAJXiAACV4iAAleJQAJXicACV4qAAleKwAJXiwACV4tAAleLgAJXjAACV4yAAleMwAJXjQACV42AAleNwAJXrIACV60AAletgAJXrgACV67AAlevAAJXr0ACV6+AAlevwAJXsEACV7DAAlexAAJXsUACV7HAAleyAAJX0MACV9FAAlfRwAJX0kACV9MAAlfTQAJX04ACV9PAAlfUAAJX1IACV9UAAlfVQAJX1YACV9YAAlfWQAJX9QACV/WAAlf2AAJX9oACV/dAAlf3gAJX98ACV/gAAlf4QAJX+MACV/lAAlf5gAJX+cACV/pAAlf6gAJYH0ACWCgAAlgwAAJYOAACWDiAAlg5AAJYOYACWDoAAlg6wAJYOwACWDtAAlg8AAJYPEACWDzAAlg9AAJYPYACWD5AAlg+gAJYPsACWD+AAlg/wAJYQQACWEdAAlhJgAJYSgACWEqAAlhMwAJYTYACWE5AAlhOwAJYYQACWGoAAlhzwAJYfMACWH2AAlh+AAJYfoACWH8AAlh/gAJYgAACWIBAAliBAAJYh0ACWI+AAliQAAJYkIACWJEAAliRgAJYkgACWJKAAliTAAJYk4ACWJvAAlicgAJYnUACWJ4AAliewAJYn4ACWKBAAlihAAJYocACWKJAAljBAAJYwYACWMIAAljCgAJYw0ACWMOAAljDwAJYxAACWMRAAljEwAJYxUACWMWAAljFwAJYxkACWMaAAljlQAJY5cACWOZAAljmwAJY54ACWOfAAljoAAJY6EACWOiAAljpAAJY6YACWOnAAljqAAJY6oACWOrAAlkJgAJZCgACWQrAAlkLQAJZDAACWQxAAlkMgAJZDMACWQ0AAlkNgAJZDgACWQ5AAlkOgAJZDwACWQ9AAlkVgAJZFcACWRYAAlkWgAJZNUACWTXAAlk2QAJZNsACWTeAAlk3wAJZOAACWThAAlk4gAJZOQACWTmAAlk5wAJZOgACWTqAAlk6wAJZWYACWVoAAllagAJZWwACWVvAAllcAAJZXEACWVyAAllcwAJZXUACWV3AAlleAAJZXkACWV7AAllfAAJZfcACWX5AAll+wAJZf0ACWYAAAlmAQAJZgIACWYDAAlmBAAJZgYACWYIAAlmCQAJZgoACWYMAAlmDQAJZogACWaKAAlmjAAJZo4ACWaRAAlmkgAJZpMACWaUAAlmlQAJZpcACWaZAAlmmgAJZpsACWadAAlmngAJZxkACWcbAAlnHQAJZx8ACWciAAlnIwAJZyQACWclAAlnJgAJZygACWcqAAlnKwAJZywACWcuAAlnLwAJZ3gACWecAAlnwwAJZ+cACWfqAAln7AAJZ+4ACWfwAAln8gAJZ/QACWf1AAln+AAJaBEACWguAAloMAAJaDIACWg0AAloNgAJaDgACWg6AAloPAAJaFkACWhcAAloXwAJaGIACWhlAAloaAAJaGsACWhuAAlocAAJaOsACWjtAAlo7wAJaPEACWj0AAlo9QAJaPYACWj3AAlo+AAJaPoACWj8AAlo/QAJaP4ACWkAAAlpAQAJaXwACWl+AAlpgAAJaYIACWmFAAlphgAJaYcACWmIAAlpiQAJaYsACWmNAAlpjgAJaY8ACWmRAAlpkgAJag0ACWoPAAlqEQAJahMACWoWAAlqFwAJahgACWoZAAlqGgAJahwACWoeAAlqHwAJaiAACWoiAAlqIwAJap4ACWqgAAlqowAJaqUACWqoAAlqqQAJaqoACWqrAAlqrAAJaq4ACWqwAAlqsQAJarIACWq0AAlqtQAJazAACWsyAAlrNAAJazYACWs5AAlrOgAJazsACWs8AAlrPQAJaz8ACWtBAAlrQgAJa0MACWtFAAlrRgAJa8EACWvDAAlrxQAJa8cACWvKAAlrywAJa8wACWvNAAlrzgAJa9AACWvSAAlr0wAJa9QACWvWAAlr1wAJbFIACWxUAAlsVgAJbFgACWxbAAlsXAAJbF0ACWxeAAlsXwAJbGEACWxjAAlsZAAJbGUACWxnAAlsaAAJbPsACW0eAAltPgAJbV4ACW1gAAltYgAJbWQACW1mAAltaQAJbWoACW1rAAltbgAJbW8ACW1xAAltcgAJbXQACW13AAlteAAJbXkACW18AAltfQAJbYIACW2bAAltpAAJbaYACW2oAAltsQAJbbQACW23AAltuQAJbgIACW4mAAluTQAJbnEACW50AAludgAJbngACW56AAlufAAJbn4ACW5/AAluggAJbpsACW68AAluvgAJbsAACW7CAAluxAAJbsYACW7IAAluygAJbswACW7tAAlu8AAJbvMACW72AAlu+QAJbvwACW7/AAlvAgAJbwUACW8HAAlvggAJb4QACW+GAAlviAAJb4sACW+MAAlvjQAJb44ACW+PAAlvkQAJb5MACW+UAAlvlQAJb5cACW+YAAlwEwAJcBUACXAXAAlwGQAJcBwACXAdAAlwHgAJcB8ACXAgAAlwIgAJcCQACXAlAAlwJgAJcCgACXApAAlwpAAJcKYACXCpAAlwqwAJcK4ACXCvAAlwsAAJcLEACXCyAAlwtAAJcLYACXC3AAlwuAAJcLoACXC7AAlw1AAJcNUACXDWAAlw2AAJcVMACXFVAAlxVwAJcVkACXFcAAlxXQAJcV4ACXFfAAlxYAAJcWIACXFkAAlxZQAJcWYACXFoAAlxaQAJceQACXHmAAlx6AAJceoACXHtAAlx7gAJce8ACXHwAAlx8QAJcfMACXH1AAlx9gAJcfcACXH5AAlx+gAJcnUACXJ3AAlyeQAJcnsACXJ+AAlyfwAJcoAACXKBAAlyggAJcoQACXKGAAlyhwAJcogACXKKAAlyiwAJcwYACXMIAAlzCgAJcwwACXMPAAlzEAAJcxEACXMSAAlzEwAJcxUACXMXAAlzGAAJcxkACXMbAAlzHAAJc5cACXOZAAlzmwAJc50ACXOgAAlzoQAJc6IACXOjAAlzpAAJc6YACXOoAAlzqQAJc6oACXOsAAlzrQAJc/YACXQaAAl0QQAJdGUACXRoAAl0agAJdGwACXRuAAl0cAAJdHIACXRzAAl0dgAJdI8ACXSsAAl0rgAJdLAACXSyAAl0tAAJdLYACXS4AAl0ugAJdNcACXTaAAl03QAJdOAACXTjAAl05gAJdOkACXTsAAl07gAJdWkACXVrAAl1bQAJdW8ACXVyAAl1cwAJdXQACXV1AAl1dgAJdXgACXV6AAl1ewAJdXwACXV+AAl1fwAJdfoACXX8AAl1/gAJdgAACXYDAAl2BAAJdgUACXYGAAl2BwAJdgkACXYLAAl2DAAJdg0ACXYPAAl2EAAJdosACXaNAAl2jwAJdpEACXaUAAl2lQAJdpYACXaXAAl2mAAJdpoACXacAAl2nQAJdp4ACXagAAl2oQAJdxwACXceAAl3IQAJdyMACXcmAAl3JwAJdygACXcpAAl3KgAJdywACXcuAAl3LwAJdzAACXcyAAl3MwAJd64ACXewAAl3sgAJd7QACXe3AAl3uAAJd7kACXe6AAl3uwAJd70ACXe/AAl3wAAJd8EACXfDAAl3xAAJeD8ACXhBAAl4QwAJeEUACXhIAAl4SQAJeEoACXhLAAl4TAAJeE4ACXhQAAl4UQAJeFIACXhUAAl4VQAJeNAACXjSAAl41AAJeNYACXjZAAl42gAJeNsACXjcAAl43QAJeN8ACXjhAAl44gAJeOMACXjlAAl45gAJeXkACXmcAAl5vAAJedwACXneAAl54AAJeeIACXnkAAl55wAJeegACXnpAAl57AAJee0ACXnvAAl58AAJefIACXn1AAl59gAJefcACXn6AAl5+wAJegAACXoZAAl6IgAJeiQACXomAAl6LwAJejIACXo1AAl6NwAJeoAACXqkAAl6ywAJeu8ACXryAAl69AAJevYACXr4AAl6+gAJevwACXr9AAl7AAAJexkACXs6AAl7PAAJez4ACXtAAAl7QgAJe0QACXtGAAl7SAAJe0oACXtrAAl7bgAJe3EACXt0AAl7dwAJe3oACXt9AAl7gAAJe4MACXuFAAl8AAAJfAIACXwEAAl8BgAJfAkACXwKAAl8CwAJfAwACXwNAAl8DwAJfBEACXwSAAl8EwAJfBUACXwWAAl8kQAJfJMACXyVAAl8lwAJfJoACXybAAl8nAAJfJ0ACXyeAAl8oAAJfKIACXyjAAl8pAAJfKYACXynAAl9IgAJfSQACX0nAAl9KQAJfSwACX0tAAl9LgAJfS8ACX0wAAl9MgAJfTQACX01AAl9NgAJfTgACX05AAl9UgAJfVMACX1UAAl9VgAJfdEACX3TAAl91QAJfdcACX3aAAl92wAJfdwACX3dAAl93gAJfeAACX3iAAl94wAJfeQACX3mAAl95wAJfmIACX5kAAl+ZgAJfmgACX5rAAl+bAAJfm0ACX5uAAl+bwAJfnEACX5zAAl+dAAJfnUACX53AAl+eAAJfvMACX71AAl+9wAJfvkACX78AAl+/QAJfv4ACX7/AAl/AAAJfwIACX8EAAl/BQAJfwYACX8IAAl/CQAJf4QACX+GAAl/iAAJf4oACX+NAAl/jgAJf48ACX+QAAl/kQAJf5MACX+VAAl/lgAJf5cACX+ZAAl/mgAJgBUACYAXAAmAGQAJgBsACYAeAAmAHwAJgCAACYAhAAmAIgAJgCQACYAmAAmAJwAJgCgACYAqAAmAKwAJgHQACYCYAAmAvwAJgOMACYDmAAmA6AAJgOoACYDsAAmA7gAJgPAACYDxAAmA9AAJgQ0ACYEqAAmBLAAJgS4ACYEwAAmBMgAJgTQACYE2AAmBOAAJgVUACYFYAAmBWwAJgV4ACYFhAAmBZAAJgWcACYFqAAmBbAAJgecACYHpAAmB6wAJge0ACYHwAAmB8QAJgfIACYHzAAmB9AAJgfYACYH4AAmB+QAJgfoACYH8AAmB/QAJgngACYJ6AAmCfAAJgn4ACYKBAAmCggAJgoMACYKEAAmChQAJgocACYKJAAmCigAJgosACYKNAAmCjgAJgwkACYMLAAmDDQAJgw8ACYMSAAmDEwAJgxQACYMVAAmDFgAJgxgACYMaAAmDGwAJgxwACYMeAAmDHwAJg5oACYOcAAmDnwAJg6EACYOkAAmDpQAJg6YACYOnAAmDqAAJg6oACYOsAAmDrQAJg64ACYOwAAmDsQAJhCwACYQuAAmEMAAJhDIACYQ1AAmENgAJhDcACYQ4AAmEOQAJhDsACYQ9AAmEPgAJhD8ACYRBAAmEQgAJhL0ACYS/AAmEwQAJhMMACYTGAAmExwAJhMgACYTJAAmEygAJhMwACYTOAAmEzwAJhNAACYTSAAmE0wAJhU4ACYVQAAmFUgAJhVQACYVXAAmFWAAJhVkACYVaAAmFWwAJhV0ACYVfAAmFYAAJhWEACYVjAAmFZAAJhfcACYYaAAmGOgAJhloACYZcAAmGXgAJhmAACYZiAAmGZQAJhmYACYZnAAmGagAJhmsACYZtAAmGbgAJhnEACYZ0AAmGdQAJhnYACYZ5AAmGegAJhn8ACYaYAAmGoQAJhqMACYamAAmGrwAJhrIACYa1AAmGtwAJhwAACYckAAmHSwAJh28ACYdyAAmHdAAJh3YACYd4AAmHegAJh3wACYd9AAmHgAAJh5kACYe6AAmHvAAJh74ACYfAAAmHwgAJh8QACYfGAAmHyAAJh8oACYfrAAmH7gAJh/EACYf0AAmH9wAJh/oACYf9AAmIAAAJiAMACYgFAAmIgAAJiIIACYiEAAmIhgAJiIkACYiKAAmIiwAJiIwACYiNAAmIjwAJiJEACYiSAAmIkwAJiJUACYiWAAmJEQAJiRMACYkVAAmJFwAJiRoACYkbAAmJHAAJiR0ACYkeAAmJIAAJiSIACYkjAAmJJAAJiSYACYknAAmJogAJiaQACYmnAAmJqQAJiawACYmtAAmJrgAJia8ACYmwAAmJsgAJibQACYm1AAmJtgAJibgACYm5AAmJ0gAJidMACYnUAAmJ1gAJilEACYpTAAmKVQAJilcACYpaAAmKWwAJilwACYpdAAmKXgAJimAACYpiAAmKYwAJimQACYpmAAmKZwAJiuIACYrkAAmK5gAJiugACYrrAAmK7AAJiu0ACYruAAmK7wAJivEACYrzAAmK9AAJivUACYr3AAmK+AAJi3MACYt1AAmLdwAJi3kACYt8AAmLfQAJi34ACYt/AAmLgAAJi4IACYuEAAmLhQAJi4YACYuIAAmLiQAJjAQACYwGAAmMCAAJjAoACYwNAAmMDgAJjA8ACYwQAAmMEQAJjBMACYwVAAmMFgAJjBcACYwZAAmMGgAJjJUACYyXAAmMmQAJjJsACYyeAAmMnwAJjKAACYyhAAmMogAJjKQACYymAAmMpwAJjKgACYyqAAmMqwAJjPQACY0YAAmNPwAJjWMACY1mAAmNaQAJjWsACY1tAAmNbwAJjXEACY1yAAmNdQAJjY4ACY2rAAmNrgAJjbEACY20AAmNtwAJjboACY29AAmNwAAJjd0ACY3gAAmN4wAJjeYACY3pAAmN7AAJje8ACY3yAAmN9AAJjm8ACY5xAAmOdAAJjnYACY55AAmOegAJjnsACY58AAmOfQAJjn8ACY6CAAmOgwAJjoQACY6GAAmOhwAJjwIACY8EAAmPBwAJjwkACY8MAAmPDQAJjw4ACY8PAAmPEAAJjxIACY8VAAmPFgAJjxcACY8ZAAmPGgAJj5UACY+XAAmPmgAJj5wACY+fAAmPoAAJj6EACY+iAAmPowAJj6UACY+oAAmPqQAJj6oACY+sAAmPrQAJkCgACZAqAAmQLQAJkC8ACZAyAAmQMwAJkDQACZA1AAmQNgAJkDgACZA7AAmQPAAJkD0ACZA/AAmQQAAJkMMACZDnAAmRCwAJkS4ACZFVAAmRdQAJkZwACZHDAAmR4wAJkgcACZIrAAmSLQAJkjAACZIyAAmSNAAJkjYACZI5AAmSPAAJkj4ACZJAAAmSQwAJkkUACZJHAAmSSgAJkk0ACZJOAAmSUwAJkmwACZJxAAmScwAJkngACZJ7AAmSfQAJksYACZLqAAmTEQAJkzUACZM4AAmTOgAJkzwACZM+AAmTQAAJk0IACZNDAAmTRgAJk18ACZOEAAmThgAJk4gACZOKAAmTjAAJk44ACZOQAAmTkgAJk5QACZOWAAmTuwAJk74ACZPBAAmTxAAJk8cACZPKAAmTzQAJk9AACZPTAAmT1gAJk9gACZRTAAmUVQAJlFgACZRaAAmUXQAJlF4ACZRfAAmUYAAJlGEACZRjAAmUZQAJlGYACZRnAAmUaQAJlGoACZR7AAmUfAAJlH4ACZT5AAmU+wAJlP0ACZT/AAmVAgAJlQMACZUEAAmVBQAJlQYACZUIAAmVCgAJlQsACZUMAAmVDgAJlQ8ACZWKAAmVjAAJlY8ACZWRAAmVlAAJlZUACZWWAAmVlwAJlZgACZWaAAmVnAAJlZ0ACZWeAAmVoAAJlaEACZWyAAmVswAJlbUACZYwAAmWMgAJljQACZY2AAmWOQAJljoACZY7AAmWPAAJlj0ACZY/AAmWQQAJlkIACZZDAAmWRQAJlkYACZbBAAmWwwAJlsYACZbIAAmWywAJlswACZbNAAmWzgAJls8ACZbRAAmW0wAJltQACZbVAAmW1wAJltgACZbpAAmW6gAJluwACZdnAAmXaQAJl2sACZdtAAmXcAAJl3EACZdyAAmXcwAJl3QACZd2AAmXeAAJl3kACZd6AAmXfAAJl30ACZf4AAmX+gAJl/0ACZf/AAmYAgAJmAMACZgEAAmYBQAJmAYACZgIAAmYCgAJmAsACZgMAAmYDgAJmA8ACZgoAAmYKQAJmCoACZgsAAmYpwAJmKkACZirAAmYrQAJmLAACZixAAmYsgAJmLMACZi0AAmYtgAJmLgACZi5AAmYugAJmLwACZi9AAmZOAAJmToACZk9AAmZPwAJmUIACZlDAAmZRAAJmUUACZlGAAmZSAAJmUoACZlLAAmZTAAJmU4ACZlPAAmZaQAJmYIACZmTAAmZlgAJmZkACZmcAAmZnwAJmbAACZmzAAmZtgAJmbkACZm8AAmZvgAJmc0ACZnhAAmZ7QAJmgMACZqWAAmauQAJmtkACZr5AAma+wAJmv0ACZr/AAmbAQAJmwQACZsFAAmbBgAJmwkACZsKAAmbDAAJmw0ACZsQAAmbEwAJmxQACZsVAAmbGAAJmxkACZseAAmbNwAJm0AACZtCAAmbRQAJm04ACZtRAAmbVAAJm1YACZufAAmbwwAJm+oACZwOAAmcEQAJnBMACZwVAAmcFwAJnBkACZwbAAmcHAAJnB8ACZw4AAmcWQAJnFsACZxdAAmcXwAJnGEACZxjAAmcZQAJnGcACZxpAAmcigAJnI0ACZyQAAmckwAJnJYACZyZAAmcnAAJnJ8ACZyiAAmcpAAJnR8ACZ0hAAmdIwAJnSUACZ0oAAmdKQAJnSoACZ0rAAmdLAAJnS4ACZ0wAAmdMQAJnTIACZ00AAmdNQAJnbAACZ2yAAmdtAAJnbYACZ25AAmdugAJnbsACZ28AAmdvQAJnb8ACZ3BAAmdwgAJncMACZ3FAAmdxgAJnkEACZ5DAAmeRgAJnkgACZ5LAAmeTAAJnk0ACZ5OAAmeTwAJnlEACZ5TAAmeVAAJnlUACZ5XAAmeWAAJnnEACZ5yAAmecwAJnnUACZ7wAAme8gAJnvQACZ72AAme+QAJnvoACZ77AAme/AAJnv0ACZ7/AAmfAQAJnwIACZ8DAAmfBQAJnwYACZ+BAAmfgwAJn4UACZ+HAAmfigAJn4sACZ+MAAmfjQAJn44ACZ+QAAmfkgAJn5MACZ+UAAmflgAJn5cACaASAAmgFAAJoBYACaAYAAmgGwAJoBwACaAdAAmgHgAJoB8ACaAhAAmgIwAJoCQACaAlAAmgJwAJoCgACaCjAAmgpQAJoKcACaCpAAmgrAAJoK0ACaCuAAmgrwAJoLAACaCyAAmgtAAJoLUACaC2AAmguAAJoLkACaE0AAmhNgAJoTgACaE6AAmhPQAJoT4ACaE/AAmhQAAJoUEACaFDAAmhRQAJoUYACaFHAAmhSQAJoUoACaGTAAmhtwAJod4ACaICAAmiBQAJoggACaIKAAmiDAAJog4ACaIQAAmiEQAJohQACaItAAmiSgAJok0ACaJQAAmiUwAJolYACaJZAAmiXAAJol8ACaJ8AAmifwAJooIACaKFAAmiiAAJoosACaKOAAmikQAJopMACaMOAAmjEAAJoxMACaMVAAmjGAAJoxkACaMaAAmjGwAJoxwACaMeAAmjIQAJoyIACaMjAAmjJQAJoyYACaOhAAmjowAJo6YACaOoAAmjqwAJo6wACaOtAAmjrgAJo68ACaOxAAmjtAAJo7UACaO2AAmjuAAJo7kACaQ0AAmkNgAJpDkACaQ7AAmkPgAJpD8ACaRAAAmkQQAJpEIACaREAAmkRwAJpEgACaRJAAmkSwAJpEwACaTHAAmkyQAJpMwACaTOAAmk0QAJpNIACaTTAAmk1AAJpNUACaTXAAmk2gAJpNsACaTcAAmk3gAJpN8ACaVaAAmlXAAJpV4ACaVgAAmlYwAJpWQACaVlAAmlZgAJpWcACaVpAAmlbAAJpW0ACaVuAAmlcAAJpXEACaXsAAml7gAJpfAACaXyAAml9QAJpfYACaX3AAml+AAJpfkACaX7AAml/gAJpf8ACaYAAAmmAgAJpgMACaZ+AAmmgAAJpoMACaaFAAmmiAAJpokACaaKAAmmiwAJpowACaaOAAmmkQAJppIACaaTAAmmlQAJppYACacpAAmnTAAJp2wACaeMAAmnjgAJp5AACaeSAAmnlAAJp5cACaeYAAmnmQAJp5wACaedAAmnnwAJp6AACaeiAAmnpQAJp6YACaenAAmnqgAJp6sACae0AAmnzQAJp9YACafYAAmn2gAJp+MACafmAAmn6QAJp+sACag0AAmoWAAJqH8ACaijAAmopgAJqKgACaiqAAmorAAJqK4ACaiwAAmosQAJqLQACajNAAmo7gAJqPAACajyAAmo9AAJqPYACaj4AAmo+gAJqPwACaj+AAmpHwAJqSIACaklAAmpKAAJqSsACakuAAmpMQAJqTQACak3AAmpOQAJqbQACam2AAmpuAAJqboACam9AAmpvgAJqb8ACanAAAmpwQAJqcMACanFAAmpxgAJqccACanJAAmpygAJqkUACapHAAmqSQAJqksACapOAAmqTwAJqlAACapRAAmqUgAJqlQACapWAAmqVwAJqlgACapaAAmqWwAJqtYACarYAAmq2wAJqt0ACargAAmq4QAJquIACarjAAmq5AAJquYACaroAAmq6QAJquoACarsAAmq7QAJqwYACasHAAmrCAAJqwoACauFAAmrhwAJq4kACauLAAmrjgAJq48ACauQAAmrkQAJq5IACauUAAmrlgAJq5cACauYAAmrmgAJq5sACawWAAmsGAAJrBoACawcAAmsHwAJrCAACawhAAmsIgAJrCMACawlAAmsJwAJrCgACawpAAmsKwAJrCwACaynAAmsqQAJrKsACaytAAmssAAJrLEACayyAAmsswAJrLQACay2AAmsuAAJrLkACay6AAmsvAAJrL0ACa04AAmtOgAJrTwACa0+AAmtQQAJrUIACa1DAAmtRAAJrUUACa1HAAmtSQAJrUoACa1LAAmtTQAJrU4ACa3JAAmtywAJrc0ACa3PAAmt0gAJrdMACa3UAAmt1QAJrdYACa3YAAmt2gAJrdsACa3cAAmt3gAJrd8ACa4oAAmuTAAJrnMACa6XAAmumgAJrpwACa6eAAmuoAAJrqIACa6kAAmupQAJrqgACa7BAAmu3gAJruAACa7iAAmu5AAJruYACa7oAAmu6gAJruwACa8JAAmvDAAJrw8ACa8SAAmvFQAJrxgACa8bAAmvHgAJryAACa+bAAmvnQAJr58ACa+hAAmvpAAJr6UACa+mAAmvpwAJr6gACa+qAAmvrAAJr60ACa+uAAmvsAAJr7EACbAsAAmwLgAJsDAACbAyAAmwNQAJsDYACbA3AAmwOAAJsDkACbA7AAmwPQAJsD4ACbA/AAmwQQAJsEIACbC9AAmwvwAJsMEACbDDAAmwxgAJsMcACbDIAAmwyQAJsMoACbDMAAmwzgAJsM8ACbDQAAmw0gAJsNMACbFOAAmxUAAJsVIACbFUAAmxVwAJsVgACbFZAAmxWgAJsVsACbFdAAmxXwAJsWAACbFhAAmxYwAJsWQACbHfAAmx4QAJseMACbHlAAmx6AAJsekACbHqAAmx6wAJsewACbHuAAmx8AAJsfEACbHyAAmx9AAJsfUACbJwAAmycgAJsnQACbJ2AAmyeQAJsnoACbJ7AAmyfAAJsn0ACbJ/AAmygQAJsoIACbKDAAmyhQAJsoYACbMBAAmzAwAJswUACbMHAAmzCgAJswsACbMMAAmzDQAJsw4ACbMQAAmzEgAJsxMACbMUAAmzFgAJsxcACbOqAAmzzQAJs+0ACbQNAAm0DwAJtBEACbQTAAm0FQAJtBgACbQZAAm0GgAJtB0ACbQeAAm0IAAJtCEACbQjAAm0JgAJtCcACbQoAAm0KwAJtCwACbQxAAm0SgAJtFMACbRVAAm0VwAJtGAACbRjAAm0ZgAJtGgACbSxAAm01QAJtPwACbUgAAm1IwAJtSUACbUnAAm1KQAJtSsACbUtAAm1LgAJtTEACbVKAAm1awAJtW0ACbVvAAm1cQAJtXMACbV1AAm1dwAJtXkACbV7AAm1nAAJtZ8ACbWiAAm1pQAJtagACbWrAAm1rgAJtbEACbW0AAm1tgAJtjEACbYzAAm2NQAJtjcACbY6AAm2OwAJtjwACbY9AAm2PgAJtkAACbZCAAm2QwAJtkQACbZGAAm2RwAJtsIACbbEAAm2xgAJtsgACbbLAAm2zAAJts0ACbbOAAm2zwAJttEACbbTAAm21AAJttUACbbXAAm22AAJt1MACbdVAAm3WAAJt1oACbddAAm3XgAJt18ACbdgAAm3YQAJt2MACbdlAAm3ZgAJt2cACbdpAAm3agAJt4MACbeEAAm3hQAJt4cACbgCAAm4BAAJuAYACbgIAAm4CwAJuAwACbgNAAm4DgAJuA8ACbgRAAm4EwAJuBQACbgVAAm4FwAJuBgACbiTAAm4lQAJuJcACbiZAAm4nAAJuJ0ACbieAAm4nwAJuKAACbiiAAm4pAAJuKUACbimAAm4qAAJuKkACbkkAAm5JgAJuSgACbkqAAm5LQAJuS4ACbkvAAm5MAAJuTEACbkzAAm5NQAJuTYACbk3AAm5OQAJuToACbm1AAm5twAJubkACbm7AAm5vgAJub8ACbnAAAm5wQAJucIACbnEAAm5xgAJuccACbnIAAm5ygAJucsACbpGAAm6SAAJukoACbpMAAm6TwAJulAACbpRAAm6UgAJulMACbpVAAm6VwAJulgACbpZAAm6WwAJulwACbqlAAm6yQAJuvAACbsUAAm7FwAJuxkACbsbAAm7HQAJux8ACbshAAm7IgAJuyUACbs+AAm7WwAJu10ACbtfAAm7YQAJu2MACbtlAAm7ZwAJu2kACbuGAAm7iQAJu4wACbuPAAm7kgAJu5UACbuYAAm7mwAJu50ACbwYAAm8GgAJvBwACbweAAm8IQAJvCIACbwjAAm8JAAJvCUACbwnAAm8KQAJvCoACbwrAAm8LQAJvC4ACbypAAm8qwAJvK0ACbyvAAm8sgAJvLMACby0AAm8tQAJvLYACby4AAm8ugAJvLsACby8AAm8vgAJvL8ACb06AAm9PAAJvT4ACb1AAAm9QwAJvUQACb1FAAm9RgAJvUcACb1JAAm9SwAJvUwACb1NAAm9TwAJvVAACb3LAAm9zQAJvdAACb3SAAm91QAJvdYACb3XAAm92AAJvdkACb3bAAm93QAJvd4ACb3fAAm94QAJveIACb5dAAm+XwAJvmEACb5jAAm+ZgAJvmcACb5oAAm+aQAJvmoACb5sAAm+bgAJvm8ACb5wAAm+cgAJvnMACb7uAAm+8AAJvvIACb70AAm+9wAJvvgACb75AAm++gAJvvsACb79AAm+/wAJvwAACb8BAAm/AwAJvwQACb9/AAm/gQAJv4MACb+FAAm/iAAJv4kACb+KAAm/iwAJv4wACb+OAAm/kAAJv5EACb+SAAm/lAAJv5UACcAoAAnASwAJwGsACcCLAAnAjQAJwI8ACcCRAAnAkwAJwJYACcCXAAnAmAAJwJsACcCcAAnAngAJwJ8ACcChAAnApAAJwKUACcCmAAnAqQAJwKoACcCvAAnAyAAJwNEACcDTAAnA1QAJwN4ACcDhAAnA5AAJwOYACcEvAAnBUwAJwXoACcGeAAnBoQAJwaMACcGlAAnBpwAJwakACcGrAAnBrAAJwa8ACcHIAAnB6QAJwesACcHtAAnB7wAJwfEACcHzAAnB9QAJwfcACcH5AAnCGgAJwh0ACcIgAAnCIwAJwiYACcIpAAnCLAAJwi8ACcIyAAnCNAAJwq8ACcKxAAnCswAJwrUACcK4AAnCuQAJwroACcK7AAnCvAAJwr4ACcLAAAnCwQAJwsIACcLEAAnCxQAJw0AACcNCAAnDRAAJw0YACcNJAAnDSgAJw0sACcNMAAnDTQAJw08ACcNRAAnDUgAJw1MACcNVAAnDVgAJw9EACcPTAAnD1gAJw9gACcPbAAnD3AAJw90ACcPeAAnD3wAJw+EACcPjAAnD5AAJw+UACcPnAAnD6AAJxAEACcQCAAnEAwAJxAUACcSAAAnEggAJxIQACcSGAAnEiQAJxIoACcSLAAnEjAAJxI0ACcSPAAnEkQAJxJIACcSTAAnElQAJxJYACcURAAnFEwAJxRUACcUXAAnFGgAJxRsACcUcAAnFHQAJxR4ACcUgAAnFIgAJxSMACcUkAAnFJgAJxScACcWiAAnFpAAJxaYACcWoAAnFqwAJxawACcWtAAnFrgAJxa8ACcWxAAnFswAJxbQACcW1AAnFtwAJxbgACcYzAAnGNQAJxjcACcY5AAnGPAAJxj0ACcY+AAnGPwAJxkAACcZCAAnGRAAJxkUACcZGAAnGSAAJxkkACcbEAAnGxgAJxsgACcbKAAnGzQAJxs4ACcbPAAnG0AAJxtEACcbTAAnG1QAJxtYACcbXAAnG2QAJxtoACccjAAnHRwAJx24ACceSAAnHlQAJx5cACceZAAnHmwAJx50ACcefAAnHoAAJx6MACce8AAnH2QAJx9sACcfdAAnH3wAJx+EACcfjAAnH5QAJx+cACcgEAAnIBwAJyAoACcgNAAnIEAAJyBMACcgWAAnIGQAJyBsACciWAAnImAAJyJoACcicAAnInwAJyKAACcihAAnIogAJyKMACcilAAnIpwAJyKgACcipAAnIqwAJyKwACcknAAnJKQAJySsACcktAAnJMAAJyTEACckyAAnJMwAJyTQACck2AAnJOAAJyTkACck6AAnJPAAJyT0ACcm4AAnJugAJybwACcm+AAnJwQAJycIACcnDAAnJxAAJycUACcnHAAnJyQAJycoACcnLAAnJzQAJyc4ACcpJAAnKSwAJyk4ACcpQAAnKUwAJylQACcpVAAnKVgAJylcACcpZAAnKWwAJylwACcpdAAnKXwAJymAACcrbAAnK3QAJyt8ACcrhAAnK5AAJyuUACcrmAAnK5wAJyugACcrqAAnK7AAJyu0ACcruAAnK8AAJyvEACctsAAnLbgAJy3AACctyAAnLdQAJy3YACct3AAnLeAAJy3kACct7AAnLfQAJy34ACct/AAnLgQAJy4IACcv9AAnL/wAJzAEACcwDAAnMBgAJzAcACcwIAAnMCQAJzAoACcwMAAnMDgAJzA8ACcwQAAnMEgAJzBMACcwkAAnMJQAJzCcACcyiAAnMpAAJzKYACcyoAAnMqwAJzKwACcytAAnMrgAJzK8ACcyxAAnMtAAJzLUACcy2AAnMuAAJzLkACc00AAnNNgAJzTgACc06AAnNPQAJzT4ACc0/AAnNQAAJzUEACc1DAAnNRgAJzUcACc1IAAnNSgAJzUsACc3GAAnNyAAJzcsACc3NAAnN0AAJzdEACc3SAAnN0wAJzdQACc3WAAnN2QAJzdoACc3bAAnN3QAJzd4ACc5xAAnOlAAJzrQACc7UAAnO1gAJztgACc7aAAnO3AAJzt8ACc7gAAnO4QAJzuQACc7lAAnO5wAJzugACc7qAAnO7QAJzu4ACc7vAAnO8gAJzvMACc78AAnPFQAJzx4ACc8gAAnPIgAJzysACc8uAAnPMQAJzzMACc98AAnPoAAJz8cACc/rAAnP7gAJz/AACc/yAAnP9AAJz/YACc/4AAnP+QAJz/wACdAVAAnQNgAJ0DgACdA6AAnQPAAJ0D4ACdBAAAnQQgAJ0EQACdBGAAnQZwAJ0GoACdBtAAnQcAAJ0HMACdB2AAnQeQAJ0HwACdB/AAnQgQAJ0PwACdD+AAnRAAAJ0QIACdEFAAnRBgAJ0QcACdEIAAnRCQAJ0QsACdENAAnRDgAJ0Q8ACdERAAnREgAJ0Y0ACdGPAAnRkQAJ0ZMACdGWAAnRlwAJ0ZgACdGZAAnRmgAJ0ZwACdGeAAnRnwAJ0aAACdGiAAnRowAJ0h4ACdIgAAnSIwAJ0iUACdIoAAnSKQAJ0ioACdIrAAnSLAAJ0i4ACdIwAAnSMQAJ0jIACdI0AAnSNQAJ0k4ACdJPAAnSUAAJ0lIACdLNAAnSzwAJ0tEACdLTAAnS1gAJ0tcACdLYAAnS2QAJ0toACdLcAAnS3gAJ0t8ACdLgAAnS4gAJ0uMACdNeAAnTYAAJ02IACdNkAAnTZwAJ02gACdNpAAnTagAJ02sACdNtAAnTbwAJ03AACdNxAAnTcwAJ03QACdPvAAnT8QAJ0/MACdP1AAnT+AAJ0/kACdP6AAnT+wAJ0/wACdP+AAnUAAAJ1AEACdQCAAnUBAAJ1AUACdSAAAnUggAJ1IQACdSGAAnUiQAJ1IoACdSLAAnUjAAJ1I0ACdSPAAnUkQAJ1JIACdSTAAnUlQAJ1JYACdURAAnVEwAJ1RUACdUXAAnVGgAJ1RsACdUcAAnVHQAJ1R4ACdUgAAnVIgAJ1SMACdUkAAnVJgAJ1ScACdVwAAnVlAAJ1bsACdXfAAnV4gAJ1eQACdXmAAnV6AAJ1eoACdXsAAnV7QAJ1fAACdYJAAnWJgAJ1igACdYqAAnWLAAJ1i4ACdYwAAnWMgAJ1jQACdZRAAnWVAAJ1lcACdZaAAnWXQAJ1mAACdZjAAnWZgAJ1mgACdbjAAnW5QAJ1ucACdbpAAnW7AAJ1u0ACdbuAAnW7wAJ1vAACdbyAAnW9AAJ1vUACdb2AAnW+AAJ1vkACdd0AAnXdgAJ13gACdd6AAnXfQAJ134ACdd/AAnXgAAJ14EACdeDAAnXhQAJ14YACdeHAAnXiQAJ14oACdgFAAnYBwAJ2AkACdgLAAnYDgAJ2A8ACdgQAAnYEQAJ2BIACdgUAAnYFgAJ2BcACdgYAAnYGgAJ2BsACdiWAAnYmAAJ2JsACdidAAnYoAAJ2KEACdiiAAnYowAJ2KQACdimAAnYqAAJ2KkACdiqAAnYrAAJ2K0ACdkoAAnZKgAJ2SwACdkuAAnZMQAJ2TIACdkzAAnZNAAJ2TUACdk3AAnZOQAJ2ToACdk7AAnZPQAJ2T4ACdm5AAnZuwAJ2b0ACdm/AAnZwgAJ2cMACdnEAAnZxQAJ2cYACdnIAAnZygAJ2csACdnMAAnZzgAJ2c8ACdpKAAnaTAAJ2k4ACdpQAAnaUwAJ2lQACdpVAAnaVgAJ2lcACdpZAAnaWwAJ2lwACdpdAAnaXwAJ2mAACdrzAAnbFgAJ2zYACdtWAAnbWAAJ21oACdtcAAnbXgAJ22EACdtiAAnbYwAJ22YACdtnAAnbaQAJ22oACdtsAAnbbwAJ23AACdtxAAnbdAAJ23UACdt6AAnbkwAJ25wACdueAAnboAAJ26kACdusAAnbrwAJ27EACdv6AAncHgAJ3EUACdxpAAncbAAJ3G4ACdxwAAnccgAJ3HQACdx2AAncdwAJ3HoACdyTAAnctAAJ3LYACdy4AAncugAJ3LwACdy+AAncwAAJ3MIACdzEAAnc5QAJ3OgACdzrAAnc7gAJ3PEACdz0AAnc9wAJ3PoACdz9AAnc/wAJ3XoACd18AAndfgAJ3YAACd2DAAndhAAJ3YUACd2GAAndhwAJ3YkACd2LAAndjAAJ3Y0ACd2PAAndkAAJ3gsACd4NAAneDwAJ3hEACd4UAAneFQAJ3hYACd4XAAneGAAJ3hoACd4cAAneHQAJ3h4ACd4gAAneIQAJ3pwACd6eAAneoQAJ3qMACd6mAAnepwAJ3qgACd6pAAneqgAJ3qwACd6uAAnerwAJ3rAACd6yAAneswAJ3swACd7NAAnezgAJ3tAACd9LAAnfTQAJ308ACd9RAAnfVAAJ31UACd9WAAnfVwAJ31gACd9aAAnfXAAJ310ACd9eAAnfYAAJ32EACd/cAAnf3gAJ3+AACd/iAAnf5QAJ3+YACd/nAAnf6AAJ3+kACd/rAAnf7QAJ3+4ACd/vAAnf8QAJ3/IACeBtAAngbwAJ4HEACeBzAAngdgAJ4HcACeB4AAngeQAJ4HoACeB8AAngfgAJ4H8ACeCAAAngggAJ4IMACeD+AAnhAAAJ4QIACeEEAAnhBwAJ4QgACeEJAAnhCgAJ4QsACeENAAnhDwAJ4RAACeERAAnhEwAJ4RQACeGPAAnhkQAJ4ZMACeGVAAnhmAAJ4ZkACeGaAAnhmwAJ4ZwACeGeAAnhoAAJ4aEACeGiAAnhpAAJ4aUACeHuAAniEgAJ4jkACeJdAAniYAAJ4mIACeJkAAniZgAJ4mgACeJqAAniawAJ4m4ACeKHAAnipAAJ4qYACeKoAAniqgAJ4qwACeKuAAnisAAJ4rIACeLPAAni0gAJ4tUACeLYAAni2wAJ4t4ACeLhAAni5AAJ4uYACeNhAAnjYwAJ42UACeNnAAnjagAJ42sACeNsAAnjbQAJ424ACeNwAAnjcgAJ43MACeN0AAnjdgAJ43cACePyAAnj9AAJ4/YACeP4AAnj+wAJ4/wACeP9AAnj/gAJ4/8ACeQBAAnkAwAJ5AQACeQFAAnkBwAJ5AgACeSDAAnkhQAJ5IcACeSJAAnkjAAJ5I0ACeSOAAnkjwAJ5JAACeSSAAnklAAJ5JUACeSWAAnkmAAJ5JkACeUUAAnlFgAJ5RkACeUbAAnlHgAJ5R8ACeUgAAnlIQAJ5SIACeUkAAnlJgAJ5ScACeUoAAnlKgAJ5SsACeWmAAnlqAAJ5aoACeWsAAnlrwAJ5bAACeWxAAnlsgAJ5bMACeW1AAnltwAJ5bgACeW5AAnluwAJ5bwACeY3AAnmOQAJ5jsACeY9AAnmQAAJ5kEACeZCAAnmQwAJ5kQACeZGAAnmSAAJ5kkACeZKAAnmTAAJ5k0ACebIAAnmygAJ5swACebOAAnm0QAJ5tIACebTAAnm1AAJ5tUACebXAAnm2QAJ5toACebbAAnm3QAJ5t4ACedxAAnnlAAJ57QACefUAAnn1gAJ59gACefaAAnn3AAJ598ACefgAAnn4QAJ5+QACeflAAnn5wAJ5+gACefrAAnn7gAJ5+8ACefwAAnn8wAJ5/QACef5AAnoEgAJ6BsACegdAAnoIAAJ6CkACegsAAnoLwAJ6DEACeh6AAnongAJ6MUACejpAAno7AAJ6O4ACejwAAno8gAJ6PQACej2AAno9wAJ6PoACekTAAnpNAAJ6TYACek4AAnpOgAJ6TwACek+AAnpQAAJ6UIACelEAAnpZQAJ6WgACelrAAnpbgAJ6XEACel0AAnpdwAJ6XoACel9AAnpfwAJ6foACen8AAnp/gAJ6gAACeoDAAnqBAAJ6gUACeoGAAnqBwAJ6gkACeoLAAnqDAAJ6g0ACeoPAAnqEAAJ6osACeqNAAnqjwAJ6pEACeqUAAnqlQAJ6pYACeqXAAnqmAAJ6poACeqcAAnqnQAJ6p4ACeqgAAnqoQAJ6xwACeseAAnrIQAJ6yMACesmAAnrJwAJ6ygACespAAnrKgAJ6ywACesuAAnrLwAJ6zAACesyAAnrMwAJ60wACetNAAnrTgAJ61AACevLAAnrzQAJ688ACevRAAnr1AAJ69UACevWAAnr1wAJ69gACevaAAnr3AAJ690ACeveAAnr4AAJ6+EACexcAAnsXgAJ7GAACexiAAnsZQAJ7GYACexnAAnsaAAJ7GkACexrAAnsbQAJ7G4ACexvAAnscQAJ7HIACeztAAns7wAJ7PEACezzAAns9gAJ7PcACez4AAns+QAJ7PoACez8AAns/gAJ7P8ACe0AAAntAgAJ7QMACe1+AAntgAAJ7YIACe2EAAnthwAJ7YgACe2JAAntigAJ7YsACe2NAAntjwAJ7ZAACe2RAAntkwAJ7ZQACe4PAAnuEQAJ7hMACe4VAAnuGAAJ7hkACe4aAAnuGwAJ7hwACe4eAAnuIAAJ7iEACe4iAAnuJAAJ7iUACe5uAAnukgAJ7rkACe7dAAnu4AAJ7uMACe7lAAnu5wAJ7ukACe7rAAnu7AAJ7u8ACe8IAAnvJQAJ7ygACe8rAAnvLgAJ7zEACe80AAnvNwAJ7zoACe9XAAnvWgAJ710ACe9gAAnvYwAJ72YACe9pAAnvbAAJ724ACe/pAAnv6wAJ7+4ACe/wAAnv8wAJ7/QACe/1AAnv9gAJ7/cACe/5AAnv/AAJ7/0ACe/+AAnwAAAJ8AEACfB8AAnwfgAJ8IEACfCDAAnwhgAJ8IcACfCIAAnwiQAJ8IoACfCMAAnwjwAJ8JAACfCRAAnwkwAJ8JQACfEPAAnxEQAJ8RQACfEWAAnxGQAJ8RoACfEbAAnxHAAJ8R0ACfEfAAnxIgAJ8SMACfEkAAnxJgAJ8ScACfGiAAnxpAAJ8acACfGpAAnxrAAJ8a0ACfGuAAnxrwAJ8bAACfGyAAnxtQAJ8bYACfG3AAnxuQAJ8boACfI1AAnyNwAJ8jkACfI7AAnyPgAJ8j8ACfJAAAnyQQAJ8kIACfJEAAnyRwAJ8kgACfJJAAnySwAJ8kwACfLHAAnyyQAJ8ssACfLNAAny0AAJ8tEACfLSAAny0wAJ8tQACfLWAAny2QAJ8toACfLbAAny3QAJ8t4ACfNZAAnzWwAJ814ACfNgAAnzYwAJ82QACfNlAAnzZgAJ82cACfNpAAnzbAAJ820ACfNuAAnzcAAJ83EACfOCAAnzgwAJ84UACfQAAAn0AgAJ9AQACfQGAAn0CQAJ9AoACfQLAAn0DAAJ9A0ACfQPAAn0EgAJ9BMACfQUAAn0FgAJ9BcACfSSAAn0lAAJ9JYACfSYAAn0mwAJ9JwACfSdAAn0ngAJ9J8ACfShAAn0pAAJ9KUACfSmAAn0qAAJ9KkACfUkAAn1JgAJ9SkACfUrAAn1LgAJ9S8ACfUwAAn1MQAJ9TIACfU0AAn1NwAJ9TgACfU5AAn1OwAJ9TwACfXPAAn18gAJ9hIACfYyAAn2NAAJ9jYACfY4AAn2OgAJ9j0ACfY+AAn2PwAJ9kIACfZDAAn2RQAJ9kYACfZIAAn2SwAJ9kwACfZNAAn2UAAJ9lEACfZWAAn2bwAJ9ngACfZ6AAn2fAAJ9oUACfaIAAn2iwAJ9o0ACfbWAAn2+gAJ9yEACfdFAAn3SAAJ90oACfdMAAn3TgAJ91AACfdSAAn3UwAJ91YACfdvAAn3kAAJ95IACfeUAAn3lgAJ95gACfeaAAn3nAAJ954ACfegAAn3wQAJ98QACffHAAn3ygAJ980ACffQAAn30wAJ99YACffZAAn32wAJ+FYACfhYAAn4WgAJ+FwACfhfAAn4YAAJ+GEACfhiAAn4YwAJ+GUACfhnAAn4aAAJ+GkACfhrAAn4bAAJ+OcACfjpAAn46wAJ+O0ACfjwAAn48QAJ+PIACfjzAAn49AAJ+PYACfj4AAn4+QAJ+PoACfj8AAn4/QAJ+XgACfl6AAn5fQAJ+X8ACfmCAAn5gwAJ+YQACfmFAAn5hgAJ+YgACfmKAAn5iwAJ+YwACfmOAAn5jwAJ+agACfmpAAn5qgAJ+awACfonAAn6KQAJ+isACfotAAn6MAAJ+jEACfoyAAn6MwAJ+jQACfo2AAn6OAAJ+jkACfo6AAn6PAAJ+j0ACfq4AAn6ugAJ+rwACfq+AAn6wQAJ+sIACfrDAAn6xAAJ+sUACfrHAAn6yQAJ+soACfrLAAn6zQAJ+s4ACftJAAn7SwAJ+00ACftPAAn7UgAJ+1MACftUAAn7VQAJ+1YACftYAAn7WgAJ+1sACftcAAn7XgAJ+18ACfvaAAn73AAJ+94ACfvgAAn74wAJ++QACfvlAAn75gAJ++cACfvpAAn76wAJ++wACfvtAAn77wAJ+/AACfxrAAn8bQAJ/G8ACfxxAAn8dAAJ/HUACfx2AAn8dwAJ/HgACfx6AAn8fAAJ/H0ACfx+AAn8gAAJ/IEACfzKAAn87gAJ/RUACf05AAn9PAAJ/T4ACf1AAAn9QgAJ/UQACf1GAAn9RwAJ/UoACf1jAAn9gAAJ/YIACf2EAAn9hgAJ/YgACf2KAAn9jAAJ/Y4ACf2rAAn9rgAJ/bEACf20AAn9twAJ/boACf29AAn9wAAJ/cIACf49AAn+PwAJ/kIACf5EAAn+RwAJ/kgACf5JAAn+SgAJ/ksACf5NAAn+TwAJ/lAACf5RAAn+UwAJ/lQACf7PAAn+0QAJ/tMACf7VAAn+2AAJ/tkACf7aAAn+2wAJ/twACf7eAAn+4AAJ/uEACf7iAAn+5AAJ/uUACf9gAAn/YgAJ/2QACf9mAAn/aQAJ/2oACf9rAAn/bAAJ/20ACf9vAAn/cQAJ/3IACf9zAAn/dQAJ/3YACf/xAAn/8wAJ//YACf/4AAn/+wAJ//wACf/9AAn//gAJ//8ACgABAAoAAwAKAAQACgAFAAoABwAKAAgACgCDAAoAhQAKAIcACgCJAAoAjAAKAI0ACgCOAAoAjwAKAJAACgCSAAoAlAAKAJUACgCWAAoAmAAKAJkACgEUAAoBFgAKARgACgEaAAoBHQAKAR4ACgEfAAoBIAAKASEACgEjAAoBJQAKASYACgEnAAoBKQAKASoACgGlAAoBpwAKAakACgGrAAoBrgAKAa8ACgGwAAoBsQAKAbIACgG0AAoBtgAKAbcACgG4AAoBugAKAbsACgHMAAoBzQAKAc8ACgJKAAoCTAAKAk4ACgJQAAoCUwAKAlQACgJVAAoCVgAKAlcACgJZAAoCXAAKAl0ACgJeAAoCYAAKAmEACgLcAAoC3gAKAuAACgLiAAoC5QAKAuYACgLnAAoC6AAKAukACgLrAAoC7gAKAu8ACgLwAAoC8gAKAvMACgNuAAoDcAAKA3MACgN1AAoDeAAKA3kACgN6AAoDewAKA3wACgN+AAoDgQAKA4IACgODAAoDhQAKA4YACgQZAAoEPAAKBFwACgR8AAoEfgAKBIAACgSCAAoEhAAKBIcACgSIAAoEiQAKBIwACgSNAAoEjwAKBJAACgSSAAoElQAKBJYACgSXAAoEmgAKBJsACgSgAAoEuQAKBMIACgTEAAoExgAKBM8ACgTSAAoE1QAKBNcACgUgAAoFRAAKBWsACgWPAAoFkgAKBZQACgWWAAoFmAAKBZoACgWcAAoFnQAKBaAACgW5AAoF2gAKBdwACgXeAAoF4AAKBeIACgXkAAoF5gAKBegACgXqAAoGCwAKBg4ACgYRAAoGFAAKBhcACgYaAAoGHQAKBiAACgYjAAoGJQAKBqAACgaiAAoGpAAKBqYACgapAAoGqgAKBqsACgasAAoGrQAKBq8ACgaxAAoGsgAKBrMACga1AAoGtgAKBzEACgczAAoHNQAKBzcACgc6AAoHOwAKBzwACgc9AAoHPgAKB0AACgdCAAoHQwAKB0QACgdGAAoHRwAKB8IACgfEAAoHxwAKB8kACgfMAAoHzQAKB84ACgfPAAoH0AAKB9IACgfUAAoH1QAKB9YACgfYAAoH2QAKB/IACgfzAAoH9AAKB/YACghxAAoIcwAKCHUACgh3AAoIegAKCHsACgh8AAoIfQAKCH4ACgiAAAoIggAKCIMACgiEAAoIhgAKCIcACgkCAAoJBAAKCQYACgkIAAoJCwAKCQwACgkNAAoJDgAKCQ8ACgkRAAoJEwAKCRQACgkVAAoJFwAKCRgACgmTAAoJlQAKCZcACgmZAAoJnAAKCZ0ACgmeAAoJnwAKCaAACgmiAAoJpAAKCaUACgmmAAoJqAAKCakACgokAAoKJgAKCigACgoqAAoKLQAKCi4ACgovAAoKMAAKCjEACgozAAoKNQAKCjYACgo3AAoKOQAKCjoACgq1AAoKtwAKCrkACgq7AAoKvgAKCr8ACgrAAAoKwQAKCsIACgrEAAoKxgAKCscACgrIAAoKygAKCssACgsUAAoLOAAKC18ACguDAAoLhgAKC4gACguKAAoLjAAKC44ACguQAAoLkQAKC5QACgutAAoLygAKC8wACgvOAAoL0AAKC9IACgvUAAoL1gAKC9gACgv1AAoL+AAKC/sACgv+AAoMAQAKDAQACgwHAAoMCgAKDAwACgyHAAoMiQAKDIsACgyNAAoMkAAKDJEACgySAAoMkwAKDJQACgyWAAoMmAAKDJkACgyaAAoMnAAKDJ0ACg0YAAoNGgAKDRwACg0eAAoNIQAKDSIACg0jAAoNJAAKDSUACg0nAAoNKQAKDSoACg0rAAoNLQAKDS4ACg2pAAoNqwAKDa0ACg2vAAoNsgAKDbMACg20AAoNtQAKDbYACg24AAoNugAKDbsACg28AAoNvgAKDb8ACg46AAoOPAAKDj4ACg5AAAoOQwAKDkQACg5FAAoORgAKDkcACg5JAAoOSwAKDkwACg5NAAoOTwAKDlAACg7LAAoOzQAKDs8ACg7RAAoO1AAKDtUACg7WAAoO1wAKDtgACg7aAAoO3AAKDt0ACg7eAAoO4AAKDuEACg9cAAoPXgAKD2AACg9iAAoPZQAKD2YACg9nAAoPaAAKD2kACg9rAAoPbQAKD24ACg9vAAoPcQAKD3IACg/tAAoP7wAKD/EACg/zAAoP9gAKD/cACg/4AAoP+QAKD/oACg/8AAoP/gAKD/8AChAAAAoQAgAKEAMAChCWAAoQuQAKENkAChD5AAoQ+wAKEP0AChD/AAoRAQAKEQQAChEFAAoRBgAKEQkAChEKAAoRDAAKEQ0AChEPAAoREgAKERMAChEUAAoRFwAKERgAChEdAAoRNgAKET8AChFBAAoRQwAKEUwAChFPAAoRUgAKEVQAChGdAAoRwQAKEegAChIMAAoSDwAKEhEAChITAAoSFQAKEhcAChIZAAoSGgAKEh0AChI2AAoSVwAKElkAChJbAAoSXQAKEl8AChJhAAoSYwAKEmUAChJnAAoSiAAKEosAChKOAAoSkQAKEpQAChKXAAoSmgAKEp0AChKgAAoSogAKEx0AChMfAAoTIQAKEyMAChMmAAoTJwAKEygAChMpAAoTKgAKEywAChMuAAoTLwAKEzAAChMyAAoTMwAKE64AChOwAAoTsgAKE7QAChO3AAoTuAAKE7kAChO6AAoTuwAKE70AChO/AAoTwAAKE8EAChPDAAoTxAAKFD8AChRBAAoURAAKFEYAChRJAAoUSgAKFEsAChRMAAoUTQAKFE8AChRRAAoUUgAKFFMAChRVAAoUVgAKFG8AChRwAAoUcQAKFHMAChTuAAoU8AAKFPIAChT0AAoU9wAKFPgAChT5AAoU+gAKFPsAChT9AAoU/wAKFQAAChUBAAoVAwAKFQQAChV/AAoVgQAKFYMAChWFAAoViAAKFYkAChWKAAoViwAKFYwAChWOAAoVkAAKFZEAChWSAAoVlAAKFZUAChYQAAoWEgAKFhQAChYWAAoWGQAKFhoAChYbAAoWHAAKFh0AChYfAAoWIQAKFiIAChYjAAoWJQAKFiYAChahAAoWowAKFqUAChanAAoWqgAKFqsAChasAAoWrQAKFq4AChawAAoWsgAKFrMACha0AAoWtgAKFrcAChcyAAoXNAAKFzYAChc4AAoXOwAKFzwAChc9AAoXPgAKFz8AChdBAAoXQwAKF0QAChdFAAoXRwAKF0gACheRAAoXtQAKF9wAChgAAAoYAwAKGAUAChgHAAoYCQAKGAsAChgNAAoYDgAKGBEAChgqAAoYRwAKGEkAChhLAAoYTQAKGE8AChhRAAoYUwAKGFUAChhyAAoYdQAKGHgAChh7AAoYfgAKGIEAChiEAAoYhwAKGIkAChkEAAoZBgAKGQgAChkKAAoZDQAKGQ4AChkPAAoZEAAKGREAChkTAAoZFQAKGRYAChkXAAoZGQAKGRoAChmVAAoZlwAKGZkAChmbAAoZngAKGZ8AChmgAAoZoQAKGaIAChmkAAoZpgAKGacAChmoAAoZqgAKGasAChomAAoaKAAKGioAChosAAoaLwAKGjAAChoxAAoaMgAKGjMACho1AAoaNwAKGjgACho5AAoaOwAKGjwAChq3AAoauQAKGrwAChq+AAoawQAKGsIAChrDAAoaxAAKGsUAChrHAAoayQAKGsoAChrLAAoazQAKGs4AChtJAAobSwAKG00AChtPAAobUgAKG1MAChtUAAobVQAKG1YAChtYAAobWgAKG1sAChtcAAobXgAKG18AChvaAAob3AAKG94AChvgAAob4wAKG+QAChvlAAob5gAKG+cAChvpAAob6wAKG+wAChvtAAob7wAKG/AAChxrAAocbQAKHG8AChxxAAocdAAKHHUAChx2AAocdwAKHHgAChx6AAocfAAKHH0AChx+AAocgAAKHIEAChySAAockwAKHJUACh0QAAodEgAKHRQACh0WAAodGQAKHRoACh0bAAodHAAKHR0ACh0fAAodIgAKHSMACh0kAAodJgAKHScACh2iAAodpAAKHaYACh2oAAodqwAKHawACh2tAAodrgAKHa8ACh2xAAodtAAKHbUACh22AAoduAAKHbkACh40AAoeNgAKHjkACh47AAoePgAKHj8ACh5AAAoeQQAKHkIACh5EAAoeRwAKHkgACh5JAAoeSwAKHkwACh7fAAofAgAKHyIACh9CAAofRAAKH0YACh9IAAofSgAKH00ACh9OAAofTwAKH1IACh9TAAofVQAKH1YACh9YAAofWwAKH1wACh9dAAofYAAKH2EACh9qAAofgwAKH4wACh+OAAofkAAKH5kACh+cAAofnwAKH6EACh/qAAogDgAKIDUACiBZAAogXAAKIF4ACiBgAAogYgAKIGQACiBmAAogZwAKIGoACiCDAAogpAAKIKYACiCoAAogqgAKIKwACiCuAAogsAAKILIACiC0AAog1QAKINgACiDbAAog3gAKIOEACiDkAAog5wAKIOoACiDtAAog7wAKIWoACiFsAAohbgAKIXAACiFzAAohdAAKIXUACiF2AAohdwAKIXkACiF7AAohfAAKIX0ACiF/AAohgAAKIfsACiH9AAoh/wAKIgEACiIEAAoiBQAKIgYACiIHAAoiCAAKIgoACiIMAAoiDQAKIg4ACiIQAAoiEQAKIowACiKOAAoikQAKIpMACiKWAAoilwAKIpgACiKZAAoimgAKIpwACiKeAAoinwAKIqAACiKiAAoiowAKIrwACiK9AAoivgAKIsAACiM7AAojPQAKIz8ACiNBAAojRAAKI0UACiNGAAojRwAKI0gACiNKAAojTAAKI00ACiNOAAojUAAKI1EACiPMAAojzgAKI9AACiPSAAoj1QAKI9YACiPXAAoj2AAKI9kACiPbAAoj3QAKI94ACiPfAAoj4QAKI+IACiRdAAokXwAKJGEACiRjAAokZgAKJGcACiRoAAokaQAKJGoACiRsAAokbgAKJG8ACiRwAAokcgAKJHMACiTuAAok8AAKJPIACiT0AAok9wAKJPgACiT5AAok+gAKJPsACiT9AAok/wAKJQAACiUBAAolAwAKJQQACiV/AAolgQAKJYMACiWFAAoliAAKJYkACiWKAAoliwAKJYwACiWOAAolkAAKJZEACiWSAAollAAKJZUACiXeAAomAgAKJikACiZNAAomUAAKJlIACiZUAAomVgAKJlgACiZaAAomWwAKJl4ACiZ3AAomlAAKJpYACiaYAAommgAKJpwACiaeAAomoAAKJqIACia/AAomwgAKJsUACibIAAomywAKJs4ACibRAAom1AAKJtYACidRAAonUwAKJ1UACidXAAonWgAKJ1sACidcAAonXQAKJ14ACidgAAonYgAKJ2MACidkAAonZgAKJ2cACifiAAon5AAKJ+YACifoAAon6wAKJ+wACiftAAon7gAKJ+8ACifxAAon8wAKJ/QACif1AAon9wAKJ/gACihzAAoodQAKKHcACih5AAoofAAKKH0ACih+AAoofwAKKIAACiiCAAoohAAKKIUACiiGAAooiAAKKIkACikEAAopBgAKKQkACikLAAopDgAKKQ8ACikQAAopEQAKKRIACikUAAopFgAKKRcACikYAAopGgAKKRsACimWAAopmAAKKZoACimcAAopnwAKKaAACimhAAopogAKKaMACimlAAoppwAKKagACimpAAopqwAKKawACionAAoqKQAKKisACiotAAoqMAAKKjEACioyAAoqMwAKKjQACio2AAoqOAAKKjkACio6AAoqPAAKKj0ACiq4AAoqugAKKrwACiq+AAoqwQAKKsIACirDAAoqxAAKKsUACirHAAoqyQAKKsoACirLAAoqzQAKKs4ACithAAorhAAKK6QACivEAAorxgAKK8gACivKAAorzAAKK88ACivQAAor0QAKK9QACivVAAor1wAKK9gACivbAAor3gAKK98ACivgAAor4wAKK+QACivpAAosAgAKLAsACiwNAAosEAAKLBkACiwcAAosHwAKLCEACixqAAosjgAKLLUACizZAAos3AAKLN4ACizgAAos4gAKLOQACizmAAos5wAKLOoACi0DAAotJAAKLSYACi0oAAotKgAKLSwACi0uAAotMAAKLTIACi00AAotVQAKLVgACi1bAAotXgAKLWEACi1kAAotZwAKLWoACi1tAAotbwAKLeoACi3sAAot7gAKLfAACi3zAAot9AAKLfUACi32AAot9wAKLfkACi37AAot/AAKLf0ACi3/AAouAAAKLnsACi59AAoufwAKLoEACi6EAAouhQAKLoYACi6HAAouiAAKLooACi6MAAoujQAKLo4ACi6QAAoukQAKLwwACi8OAAovEQAKLxMACi8WAAovFwAKLxgACi8ZAAovGgAKLxwACi8eAAovHwAKLyAACi8iAAovIwAKLzwACi89AAovPgAKL0AACi+7AAovvQAKL78ACi/BAAovxAAKL8UACi/GAAovxwAKL8gACi/KAAovzAAKL80ACi/OAAov0AAKL9EACjBMAAowTgAKMFAACjBSAAowVQAKMFYACjBXAAowWAAKMFkACjBbAAowXQAKMF4ACjBfAAowYQAKMGIACjDdAAow3wAKMOEACjDjAAow5gAKMOcACjDoAAow6QAKMOoACjDsAAow7gAKMO8ACjDwAAow8gAKMPMACjFuAAoxcAAKMXIACjF0AAoxdwAKMXgACjF5AAoxegAKMXsACjF9AAoxfwAKMYAACjGBAAoxgwAKMYQACjH/AAoyAQAKMgMACjIFAAoyCAAKMgkACjIKAAoyCwAKMgw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ACkPTAApD1gAKQ9cACkPYAApD2QAKQ9oACkPcAApD3gAKQ98ACkPgAApD4gAKQ+MACkP0AApD9QAKQ/cACkRyAApEdAAKRHYACkR4AApEewAKRHwACkR9AApEfgAKRH8ACkSBAApEhAAKRIUACkSGAApEiAAKRIkACkUEAApFBgAKRQgACkUKAApFDQAKRQ4ACkUPAApFEAAKRREACkUTAApFFgAKRRcACkUYAApFGgAKRRsACkWWAApFmAAKRZsACkWdAApFoAAKRaEACkWiAApFowAKRaQACkWmAApFqQAKRaoACkWrAApFrQAKRa4ACkZBAApGZAAKRoQACkakAApGpgAKRqgACkaqAApGrAAKRq8ACkawAApGsQAKRrQACka1AApGtwAKRrgACka7AApGvgAKRr8ACkbAAApGwwAKRsQACkbJAApG4gAKRusACkbtAApG8AAKRvkACkb8AApG/wAKRwEACkdKAApHbgAKR5UACke5AApHvAAKR74ACkfAAApHwgAKR8QACkfGAApHxwAKR8oACkfjAApIBAAKSAYACkgIAApICgAKSAwACkgOAApIEAAKSBIACkgUAApINQAKSDgACkg7AApIPgAKSEEACkhEAApIRwAKSEoACkhNAApITwAKSMoACkjMAApIzgAKSNAACkjTAApI1AAKSNUACkjWAApI1wAKSNkACkjbAApI3AAKSN0ACkjfAApI4AAKSVsACkldAApJXwAKSWEACklkAApJZQAKSWYACklnAApJaAAKSWoACklsAApJbQAKSW4ACklwAApJcQAKSewACknuAApJ8QAKSfMACkn2AApJ9wAKSfgACkn5AApJ+gAKSfwACkn+AApJ/wAKSgAACkoCAApKAwAKShwACkodAApKHgAKSiAACkqbAApKnQAKSp8ACkqhAApKpAAKSqUACkqmAApKpwAKSqgACkqqAApKrAAKSq0ACkquAApKsAAKSrEACkssAApLLgAKSzAACksyAApLNQAKSzYACks3AApLOAAKSzkACks7AApLPQAKSz4ACks/AApLQQAKS0IACku9AApLvwAKS8EACkvDAApLxgAKS8cACkvIAApLyQAKS8oACkvMAApLzgAKS88ACkvQAApL0gAKS9MACkxOAApMUAAKTFIACkxUAApMVwAKTFgACkxZAApMWgAKTFsACkxdAApMXwAKTGAACkxhAApMYwAKTGQACkzfAApM4QAKTOMACkzlAApM6AAKTOkACkzqAApM6wAKTOwACkzuAApM8AAKTPEACkzyAApM9AAKTPUACk0+AApNYgAKTYkACk2tAApNsAAKTbMACk21AApNtwAKTbkACk27AApNvAAKTb8ACk3YAApN9QAKTfgACk37AApN/gAKTgEACk4EAApOBwAKTgoACk4nAApOKgAKTi0ACk4wAApOMwAKTjYACk45AApOPAAKTj4ACk65AApOuwAKTr4ACk7AAApOwwAKTsQACk7FAApOxgAKTscACk7JAApOzAAKTs0ACk7OAApO0AAKTtEACk9MAApPTgAKT1EACk9TAApPVgAKT1cACk9YAApPWQAKT1oACk9cAApPXwAKT2AACk9hAApPYwAKT2QACk/fAApP4QAKT+QACk/mAApP6QAKT+oACk/rAApP7AAKT+0ACk/vAApP8gAKT/MACk/0AApP9gAKT/cAClByAApQdAAKUHcAClB5AApQfAAKUH0AClB+AApQfwAKUIAAClCCAApQhQAKUIYAClCHAApQiQAKUIoAClEFAApRBwAKUQkAClELAApRDgAKUQ8AClEQAApREQAKURIAClEUAApRFwAKURgAClEZAApRGwAKURwAClGXAApRmQAKUZsAClGdAApRoAAKUaEAClGiAApRowAKUaQAClGmAApRqQAKUaoAClGrAApRrQAKUa4AClIpAApSKwAKUi4AClIwAApSMwAKUjQAClI1AApSNgAKUjcAClI5AApSPAAKUj0AClI+AApSQAAKUkEAClLUAApS9wAKUxcAClM3AApTOQAKUzsAClM9AApTPwAKU0IAClNDAApTRAAKU0cAClNIAApTSgAKU0sAClNOAApTUQAKU1IAClNTAApTVgAKU1cAClNgAApTeQAKU4IAClOEAApThwAKU5AAClOTAApTlgAKU5gAClPhAApUBQAKVCwAClRQAApUUwAKVFUAClRXAApUWQAKVFsAClRdAApUXgAKVGEAClR6AApUmwAKVJ0AClSfAApUoQAKVKMAClSlAApUpwAKVKkAClSrAApUzAAKVM8AClTSAApU1QAKVNgAClTbAApU3gAKVOEAClTkAApU5gAKVWEAClVjAApVZQAKVWcAClVqAApVawAKVWwAClVtAApVbgAKVXAAClVyAApVcwAKVXQAClV2AApVdwAKVfIAClX0AApV9gAKVfgAClX7AApV/AAKVf0AClX+AApV/wAKVgEAClYDAApWBAAKVgUAClYHAApWCAAKVoMAClaFAApWiAAKVooAClaNAApWjgAKVo8AClaQAApWkQAKVpMAClaVAApWlgAKVpcAClaZAApWmgAKVrMACla0AApWtQAKVrcAClcyAApXNAAKVzYAClc4AApXOwAKVzwAClc9AApXPgAKVz8ACldBAApXQwAKV0QACldFAApXRwAKV0gAClfDAApXxQAKV8cAClfJAApXzAAKV80AClfOAApXzwAKV9AAClfSAApX1AAKV9UAClfWAApX2AAKV9kAClhUAApYVgAKWFgAClhaAApYXQAKWF4AClhfAApYYAAKWGEAClhjAApYZQAKWGYAClhnAApYaQAKWGoACljlAApY5wAKWOkACljrAApY7gAKWO8ACljwAApY8QAKWPIAClj0AApY9gAKWPcAClj4AApY+gAKWPsACll2AApZeAAKWXoACll8AApZfwAKWYAAClmBAApZggAKWYMAClmFAApZhwAKWYgAClmJAApZiwAKWYwAClnVAApZ+QAKWiAAClpEAApaRwAKWkoAClpMAApaTgAKWlAAClpSAApaUwAKWlYAClpvAApajAAKWo8AClqSAApalQAKWpgAClqbAApangAKWqEAClq+AApawQAKWsQAClrHAApaygAKWs0AClrQAApa0wAKWtUACltQAApbUgAKW1UACltXAApbWgAKW1sACltcAApbXQAKW14ACltgAApbYwAKW2QACltlAApbZwAKW2gAClvjAApb5QAKW+gAClvqAApb7QAKW+4AClvvAApb8AAKW/EAClvzAApb9gAKW/cAClv4AApb+gAKW/sAClx2AApceAAKXHsAClx9AApcgAAKXIEAClyCAApcgwAKXIQAClyGAApciQAKXIoAClyLAApcjQAKXI4ACl0JAApdCwAKXQ4ACl0QAApdEwAKXRQACl0VAApdFgAKXRcACl0ZAApdHAAKXR0ACl0eAApdIAAKXSEACl2kAApdyAAKXewACl4PAApeNgAKXlYACl59AApepAAKXsQACl7oAApfDAAKXw4ACl8RAApfEwAKXxUACl8XAApfGgAKXx0ACl8fAApfIQAKXyQACl8mAApfKAAKXysACl8uAApfLwAKXzQACl9NAApfUgAKX1QACl9ZAApfXAAKX14ACl+nAApfywAKX/IACmAWAApgGQAKYBsACmAdAApgHwAKYCEACmAjAApgJAAKYCcACmBAAApgZQAKYGcACmBpAApgawAKYG0ACmBvAApgcQAKYHMACmB1AApgdwAKYJwACmCfAApgogAKYKUACmCoAApgqwAKYK4ACmCxAApgtAAKYLcACmC5AAphNAAKYTYACmE5AAphOwAKYT4ACmE/AAphQAAKYUEACmFCAAphRAAKYUYACmFHAAphSAAKYUoACmFLAAphXAAKYV0ACmFfAAph2gAKYdwACmHeAAph4AAKYeMACmHkAAph5QAKYeYACmHnAAph6QAKYesACmHsAAph7QAKYe8ACmHwAApiawAKYm0ACmJwAApicgAKYnUACmJ2AApidwAKYngACmJ5AApiewAKYn0ACmJ+AApifwAKYoEACmKCAApikwAKYpQACmKWAApjEQAKYxMACmMVAApjFwAKYxoACmMbAApjHAAKYx0ACmMeAApjIAAKYyIACmMjAApjJAAKYyYACmMnAApjogAKY6QACmOnAApjqQAKY6wACmOtAApjrgAKY68ACmOwAApjsgAKY7QACmO1AApjtgAKY7gACmO5AApjygAKY8sACmPNAApkSAAKZEoACmRMAApkTgAKZFEACmRSAApkUwAKZFQACmRVAApkVwAKZFkACmRaAApkWwAKZF0ACmReAApk2QAKZNsACmTeAApk4AAKZOMACmTkAApk5QAKZOYACmTnAApk6QAKZOsACmTsAApk7QAKZO8ACmTwAAplCQAKZQoACmULAAplDQAKZYgACmWKAApljAAKZY4ACmWRAAplkgAKZZMACmWUAApllQAKZZcACmWZAAplmgAKZZsACmWdAAplngAKZhkACmYbAApmHgAKZiAACmYjAApmJAAKZiUACmYmAApmJwAKZikACmYrAApmLAAKZi0ACmYvAApmMAAKZlIACmZrAApmcAAKZnMACmZ4AApmewAKZn0ACmaPAApnIgAKZ0UACmdlAApnhQAKZ4cACmeJAApniwAKZ40ACmeQAApnkQAKZ5IACmeVAApnlgAKZ5gACmeZAApnnAAKZ58ACmegAApnoQAKZ6QACmelAApnqgAKZ8MACmfMAApnzgAKZ9EACmfaAApn3QAKZ+AACmfiAApoKwAKaE8ACmh2AApomgAKaJ0ACmifAApooQAKaKMACmilAApopwAKaKgACmirAApoxAAKaOUACmjnAApo6QAKaOsACmjtAApo7wAKaPEACmjzAApo9QAKaRYACmkZAAppHAAKaR8ACmkiAAppJQAKaSgACmkrAAppLgAKaTAACmmrAApprQAKaa8ACmmxAApptAAKabUACmm2AApptwAKabgACmm6AAppvAAKab0ACmm+AAppwAAKacEACmo8AApqPgAKakAACmpCAApqRQAKakYACmpHAApqSAAKakkACmpLAApqTQAKak4ACmpPAApqUQAKalIACmrNAApqzwAKatIACmrUAApq1wAKatgACmrZAApq2gAKatsACmrdAApq3wAKauAACmrhAApq4wAKauQACmr9AApq/gAKav8ACmsBAAprfAAKa34ACmuAAAprggAKa4UACmuGAAprhwAKa4gACmuJAApriwAKa40ACmuOAAprjwAKa5EACmuSAApsDQAKbA8ACmwRAApsEwAKbBYACmwXAApsGAAKbBkACmwaAApsHAAKbB4ACmwfAApsIAAKbCIACmwjAApsngAKbKAACmyiAApspAAKbKcACmyoAApsqQAKbKoACmyrAApsrQAKbK8ACmywAApssQAKbLMACmy0AAptLwAKbTEACm0zAAptNQAKbTgACm05AAptOgAKbTsACm08AAptPgAKbUAACm1BAAptQgAKbUQACm1FAAptwAAKbcIACm3EAAptxgAKbckACm3KAAptywAKbcwACm3NAAptzwAKbdEACm3SAApt0wAKbdUACm3WAApuHwAKbkMACm5qAApujgAKbpEACm6UAApulgAKbpgACm6aAApunAAKbp0ACm6gAApuuQAKbtYACm7ZAApu3AAKbt8ACm7iAApu5QAKbugACm7rAApvCAAKbwsACm8OAApvEQAKbxQACm8XAApvGgAKbx0ACm8fAApvmgAKb5wACm+fAApvoQAKb6QACm+lAApvpgAKb6cACm+oAApvqgAKb60ACm+uAApvrwAKb7EACm+yAApwLQAKcC8ACnAyAApwNAAKcDcACnA4AApwOQAKcDoACnA7AApwPQAKcEAACnBBAApwQgAKcEQACnBFAApwwAAKcMIACnDFAApwxwAKcMoACnDLAApwzAAKcM0ACnDOAApw0AAKcNMACnDUAApw1QAKcNcACnDYAApxUwAKcVUACnFYAApxWgAKcV0ACnFeAApxXwAKcWAACnFhAApxYwAKcWYACnFnAApxaAAKcWoACnFrAApx5gAKcegACnHqAApx7AAKce8ACnHwAApx8QAKcfIACnHzAApx9QAKcfgACnH5AApx+gAKcfwACnH9AApyeAAKcnoACnJ8AApyfgAKcoEACnKCAApygwAKcoQACnKFAApyhwAKcooACnKLAApyjAAKco4ACnKPAApzCgAKcwwACnMPAApzEQAKcxQACnMVAApzFgAKcxcACnMYAApzGgAKcx0ACnMeAApzHwAKcyEACnMiAApzMwAKczgACnM7AApzPQAKc3YACnN5AApzewAKc34ACnOBAApzhAAKc4cACnOQAAp0MwAKdFcACnR7AAp0mwAKdMIACnTpAAp1CQAKdTAACnVUAAp1dwAKdZ4ACnXCAAp15gAKdgoACnYxAAp2MgAKdjQACnY2AAp2OQAKdjsACnY+AAp2QAAKdkIACnZFAAp2RwAKdkkACnZMAAp2TwAKdlEACnZTAAp2VQAKdlgACnZbAAp2XgAKdmMACnZ8AAp2gQAKdoMACnaIAAp2iwAKdo0ACnbWAAp2+gAKdyEACndFAAp3SAAKd0oACndMAAp3TgAKd1AACndSAAp3UwAKd1YACndvAAp3lAAKd5YACneYAAp3mgAKd5wACneeAAp3oAAKd6IACnekAAp3pgAKd8sACnfOAAp30QAKd9QACnfXAAp32gAKd90ACnfgAAp34wAKd+YACnfoAAp4YwAKeGUACnhoAAp4agAKeG0ACnhuAAp4bwAKeHAACnhxAAp4cwAKeHUACnh2AAp4dwAKeHkACnh6AAp4iwAKeIwACniOAAp5CQAKeQsACnkNAAp5DwAKeRIACnkTAAp5FAAKeRUACnkWAAp5GAAKeRoACnkbAAp5HAAKeR4ACnkfAAp5mgAKeZwACnmfAAp5oQAKeaQACnmlAAp5pgAKeacACnmoAAp5qgAKeawACnmtAAp5rgAKebAACnmxAAp5wgAKecMACnnFAAp6QAAKekIACnpEAAp6RgAKekkACnpKAAp6SwAKekwACnpNAAp6TwAKelEACnpSAAp6UwAKelUACnpWAAp60QAKetMACnrWAAp62AAKetsACnrcAAp63QAKet4ACnrfAAp64QAKeuMACnrkAAp65QAKeucACnroAAp6+QAKevoACnr8AAp7dwAKe3kACnt7AAp7fQAKe4AACnuBAAp7ggAKe4MACnuEAAp7hgAKe4gACnuJAAp7igAKe4wACnuNAAp8CAAKfAoACnwNAAp8DwAKfBIACnwTAAp8FAAKfBUACnwWAAp8GAAKfBoACnwbAAp8HAAKfB4ACnwfAAp8OAAKfDkACnw6AAp8PAAKfLcACny5AAp8uwAKfL0ACnzAAAp8wQAKfMIACnzDAAp8xAAKfMYACnzIAAp8yQAKfMoACnzMAAp8zQAKfUgACn1KAAp9TQAKfU8ACn1SAAp9UwAKfVQACn1VAAp9VgAKfVgACn1aAAp9WwAKfVwACn1eAAp9XwAKfXgACn2RAAp9pgAKfakACn2sAAp9rwAKfbIACn21AAp9ygAKfc0ACn3QAAp90wAKfdYACn3ZAAp92wAKfekACn4BAAp+FwAKfjcACn7KAAp+7QAKfw0ACn8tAAp/LwAKfzEACn8zAAp/NQAKfzgACn85AAp/OgAKfz0ACn8+AAp/QAAKf0EACn9DAAp/RgAKf0cACn9IAAp/SwAKf0wACn9RAAp/agAKf3MACn91AAp/dwAKf4AACn+DAAp/hgAKf4gACn/RAAp/9QAKgBwACoBAAAqAQwAKgEUACoBHAAqASQAKgEsACoBNAAqATgAKgFEACoBqAAqAiwAKgI0ACoCPAAqAkQAKgJMACoCVAAqAlwAKgJkACoCbAAqAvAAKgL8ACoDCAAqAxQAKgMgACoDLAAqAzgAKgNEACoDUAAqA1gAKgVEACoFTAAqBVQAKgVcACoFaAAqBWwAKgVwACoFdAAqBXgAKgWAACoFiAAqBYwAKgWQACoFmAAqBZwAKgeIACoHkAAqB5gAKgegACoHrAAqB7AAKge0ACoHuAAqB7wAKgfEACoHzAAqB9AAKgfUACoH3AAqB+AAKgnMACoJ1AAqCeAAKgnoACoJ9AAqCfgAKgn8ACoKAAAqCgQAKgoMACoKFAAqChgAKgocACoKJAAqCigAKgqMACoKkAAqCpQAKgqcACoMiAAqDJAAKgyYACoMoAAqDKwAKgywACoMtAAqDLgAKgy8ACoMxAAqDMwAKgzQACoM1AAqDNwAKgzgACoOzAAqDtQAKg7cACoO5AAqDvAAKg70ACoO+AAqDvwAKg8AACoPCAAqDxAAKg8UACoPGAAqDyAAKg8kACoREAAqERgAKhEgACoRKAAqETQAKhE4ACoRPAAqEUAAKhFEACoRTAAqEVQAKhFYACoRXAAqEWQAKhFoACoTVAAqE1wAKhNkACoTbAAqE3gAKhN8ACoTgAAqE4QAKhOIACoTkAAqE5gAKhOcACoToAAqE6gAKhOsACoVmAAqFaAAKhWoACoVsAAqFbwAKhXAACoVxAAqFcgAKhXMACoV1AAqFdwAKhXgACoV5AAqFewAKhXwACoXFAAqF6QAKhhAACoY0AAqGNwAKhjkACoY7AAqGPQAKhj8ACoZBAAqGQgAKhkUACoZeAAqGewAKhn0ACoZ/AAqGgQAKhoMACoaFAAqGhwAKhokACoamAAqGqQAKhqwACoavAAqGsgAKhrUACoa4AAqGuwAKhr0ACoc4AAqHOgAKhzwACoc+AAqHQQAKh0IACodDAAqHRAAKh0UACodHAAqHSQAKh0oACodLAAqHTQAKh04ACofJAAqHywAKh80ACofPAAqH0gAKh9MACofUAAqH1QAKh9YACofYAAqH2gAKh9sACofcAAqH3gAKh98ACohaAAqIXAAKiF4ACohgAAqIYwAKiGQACohlAAqIZgAKiGcACohpAAqIawAKiGwACohtAAqIbwAKiHAACojrAAqI7QAKiO8ACojxAAqI9AAKiPUACoj2AAqI9wAKiPgACoj6AAqI/AAKiP0ACoj+AAqJAAAKiQEACol8AAqJfgAKiYAAComCAAqJhQAKiYYAComHAAqJiAAKiYkAComLAAqJjQAKiY4AComPAAqJkQAKiZIACooNAAqKDwAKihEACooTAAqKFgAKihcACooYAAqKGQAKihoACoocAAqKHgAKih8ACoogAAqKIgAKiiMACoqeAAqKoAAKiqIACoqkAAqKpwAKiqgACoqpAAqKqgAKiqsACoqtAAqKrwAKirAACoqxAAqKswAKirQACotHAAqLagAKi4oACouqAAqLrAAKi64ACouwAAqLsgAKi7UACou2AAqLtwAKi7oACou7AAqLvQAKi74ACovAAAqLwwAKi8QACovFAAqLyAAKi8kACovSAAqL6wAKi/QACov2AAqL+AAKjAEACowEAAqMBwAKjAkACoxSAAqMdgAKjJ0ACozBAAqMxAAKjMYACozIAAqMygAKjMwACozOAAqMzwAKjNIACozrAAqNDAAKjQ4ACo0QAAqNEgAKjRQACo0WAAqNGAAKjRoACo0cAAqNPQAKjUAACo1DAAqNRgAKjUkACo1MAAqNTwAKjVIACo1VAAqNVwAKjdIACo3UAAqN1gAKjdgACo3bAAqN3AAKjd0ACo3eAAqN3wAKjeEACo3jAAqN5AAKjeUACo3nAAqN6AAKjmMACo5lAAqOZwAKjmkACo5sAAqObQAKjm4ACo5vAAqOcAAKjnIACo50AAqOdQAKjnYACo54AAqOeQAKjvQACo72AAqO+QAKjvsACo7+AAqO/wAKjwAACo8BAAqPAgAKjwQACo8GAAqPBwAKjwgACo8KAAqPCwAKjyQACo8lAAqPJgAKjygACo+jAAqPpQAKj6cACo+pAAqPrAAKj60ACo+uAAqPrwAKj7AACo+yAAqPtAAKj7UACo+2AAqPuAAKj7kACpA0AAqQNgAKkDgACpA6AAqQPQAKkD4ACpA/AAqQQAAKkEEACpBDAAqQRQAKkEYACpBHAAqQSQAKkEoACpDFAAqQxwAKkMkACpDLAAqQzgAKkM8ACpDQAAqQ0QAKkNIACpDUAAqQ1gAKkNcACpDYAAqQ2gAKkNsACpFWAAqRWAAKkVoACpFcAAqRXwAKkWAACpFhAAqRYgAKkWMACpFlAAqRZwAKkWgACpFpAAqRawAKkWwACpHnAAqR6QAKkesACpHtAAqR8AAKkfEACpHyAAqR8wAKkfQACpH2AAqR+AAKkfkACpH6AAqR/AAKkf0ACpJGAAqSagAKkpEACpK1AAqSuAAKkroACpK8AAqSvgAKksAACpLCAAqSwwAKksYACpLfAAqS/AAKkv4ACpMAAAqTAgAKkwQACpMGAAqTCAAKkwoACpMnAAqTKgAKky0ACpMwAAqTMwAKkzYACpM5AAqTPAAKkz4ACpO5AAqTuwAKk70ACpO/AAqTwgAKk8MACpPEAAqTxQAKk8YACpPIAAqTygAKk8sACpPMAAqTzgAKk88ACpRKAAqUTAAKlE4ACpRQAAqUUwAKlFQACpRVAAqUVgAKlFcACpRZAAqUWwAKlFwACpRdAAqUXwAKlGAACpTbAAqU3QAKlN8ACpThAAqU5AAKlOUACpTmAAqU5wAKlOgACpTqAAqU7AAKlO0ACpTuAAqU8AAKlPEACpVsAAqVbgAKlXEACpVzAAqVdgAKlXcACpV4AAqVeQAKlXoACpV8AAqVfgAKlX8ACpWAAAqVggAKlYMACpX+AAqWAAAKlgIACpYEAAqWBwAKlggACpYJAAqWCgAKlgsACpYNAAqWDwAKlhAACpYRAAqWEwAKlhQACpaPAAqWkQAKlpMACpaVAAqWmAAKlpkACpaaAAqWmwAKlpwACpaeAAqWoAAKlqEACpaiAAqWpAAKlqUACpcgAAqXIgAKlyQACpcmAAqXKQAKlyoACpcrAAqXLAAKly0ACpcvAAqXMQAKlzIACpczAAqXNQAKlzYACpfJAAqX7AAKmAwACpgsAAqYLgAKmDAACpgyAAqYNAAKmDcACpg4AAqYOQAKmDwACpg9AAqYPwAKmEAACphCAAqYRQAKmEYACphHAAqYSgAKmEsACphQAAqYaQAKmHIACph0AAqYdgAKmH8ACpiCAAqYhQAKmIcACpjQAAqY9AAKmRsACpk/AAqZQgAKmUQACplGAAqZSAAKmUoACplMAAqZTQAKmVAACplpAAqZigAKmYwACpmOAAqZkAAKmZIACpmUAAqZlgAKmZgACpmaAAqZuwAKmb4ACpnBAAqZxAAKmccACpnKAAqZzQAKmdAACpnTAAqZ1QAKmlAACppSAAqaVAAKmlYACppZAAqaWgAKmlsACppcAAqaXQAKml8ACpphAAqaYgAKmmMACpplAAqaZgAKmuEACprjAAqa5QAKmucACprqAAqa6wAKmuwACprtAAqa7gAKmvAACpryAAqa8wAKmvQACpr2AAqa9wAKm3IACpt0AAqbdwAKm3kACpt8AAqbfQAKm34ACpt/AAqbgAAKm4IACpuEAAqbhQAKm4YACpuIAAqbiQAKm6IACpujAAqbpAAKm6YACpwhAAqcIwAKnCUACpwnAAqcKgAKnCsACpwsAAqcLQAKnC4ACpwwAAqcMgAKnDMACpw0AAqcNgAKnDcACpyyAAqctAAKnLYACpy4AAqcuwAKnLwACpy9AAqcvgAKnL8ACpzBAAqcwwAKnMQACpzFAAqcxwAKnMgACp1DAAqdRQAKnUcACp1JAAqdTAAKnU0ACp1OAAqdTwAKnVAACp1SAAqdVAAKnVUACp1WAAqdWAAKnVkACp3UAAqd1gAKndgACp3aAAqd3QAKnd4ACp3fAAqd4AAKneEACp3jAAqd5QAKneYACp3nAAqd6QAKneoACp5lAAqeZwAKnmkACp5rAAqebgAKnm8ACp5wAAqecQAKnnIACp50AAqedgAKnncACp54AAqeegAKnnsACp7EAAqe6AAKnw8ACp8zAAqfNgAKnzgACp86AAqfPAAKnz4ACp9AAAqfQQAKn0QACp9dAAqfegAKn3wACp9+AAqfgAAKn4IACp+EAAqfhgAKn4gACp+lAAqfqAAKn6sACp+uAAqfsQAKn7QACp+3AAqfugAKn7wACqA3AAqgOQAKoDsACqA9AAqgQAAKoEEACqBCAAqgQwAKoEQACqBGAAqgSAAKoEkACqBKAAqgTAAKoE0ACqDIAAqgygAKoMwACqDOAAqg0QAKoNIACqDTAAqg1AAKoNUACqDXAAqg2QAKoNoACqDbAAqg3QAKoN4ACqFZAAqhWwAKoV0ACqFfAAqhYgAKoWMACqFkAAqhZQAKoWYACqFoAAqhagAKoWsACqFsAAqhbgAKoW8ACqHqAAqh7AAKoe8ACqHxAAqh9AAKofUACqH2AAqh9wAKofgACqH6AAqh/AAKof0ACqH+AAqiAAAKogEACqJ8AAqifgAKooAACqKCAAqihQAKooYACqKHAAqiiAAKookACqKLAAqijQAKoo4ACqKPAAqikQAKopIACqMNAAqjDwAKoxEACqMTAAqjFgAKoxcACqMYAAqjGQAKoxoACqMcAAqjHgAKox8ACqMgAAqjIgAKoyMACqOeAAqjoAAKo6IACqOkAAqjpwAKo6gACqOpAAqjqgAKo6sACqOtAAqjrwAKo7AACqOxAAqjswAKo7QACqRHAAqkagAKpIoACqSqAAqkrAAKpK4ACqSwAAqksgAKpLUACqS2AAqktwAKpLoACqS7AAqkvQAKpL4ACqTAAAqkwwAKpMQACqTFAAqkyAAKpMkACqTOAAqk5wAKpPAACqTyAAqk9AAKpP0ACqUAAAqlAwAKpQUACqVOAAqlcgAKpZkACqW9AAqlwAAKpcIACqXEAAqlxgAKpcgACqXKAAqlywAKpc4ACqXnAAqmCAAKpgoACqYMAAqmDgAKphAACqYSAAqmFAAKphYACqYYAAqmOQAKpjwACqY/AAqmQgAKpkUACqZIAAqmSwAKpk4ACqZRAAqmUwAKps4ACqbQAAqm0gAKptQACqbXAAqm2AAKptkACqbaAAqm2wAKpt0ACqbfAAqm4AAKpuEACqbjAAqm5AAKp18ACqdhAAqnYwAKp2UACqdoAAqnaQAKp2oACqdrAAqnbAAKp24ACqdwAAqncQAKp3IACqd0AAqndQAKp/AACqfyAAqn9QAKp/cACqf6AAqn+wAKp/wACqf9AAqn/gAKqAAACqgCAAqoAwAKqAQACqgGAAqoBwAKqCAACqghAAqoIgAKqCQACqifAAqooQAKqKMACqilAAqoqAAKqKkACqiqAAqoqwAKqKwACqiuAAqosAAKqLEACqiyAAqotAAKqLUACqkwAAqpMgAKqTQACqk2AAqpOQAKqToACqk7AAqpPAAKqT0ACqk/AAqpQQAKqUIACqlDAAqpRQAKqUYACqnBAAqpwwAKqcUACqnHAAqpygAKqcsACqnMAAqpzQAKqc4ACqnQAAqp0gAKqdMACqnUAAqp1gAKqdcACqpSAAqqVAAKqlYACqpYAAqqWwAKqlwACqpdAAqqXgAKql8ACqphAAqqYwAKqmQACqplAAqqZwAKqmgACqrjAAqq5QAKqucACqrpAAqq7AAKqu0ACqruAAqq7wAKqvAACqryAAqq9AAKqvUACqr2AAqq+AAKqvkACqtCAAqrZgAKq40ACquxAAqrtAAKq7YACqu4AAqrugAKq7wACqu+AAqrvwAKq8IACqvbAAqr+AAKq/oACqv8AAqr/gAKrAAACqwCAAqsBAAKrAYACqwjAAqsJgAKrCkACqwsAAqsLwAKrDIACqw1AAqsOAAKrDoACqy1AAqstwAKrLkACqy7AAqsvgAKrL8ACqzAAAqswQAKrMIACqzEAAqsxgAKrMcACqzIAAqsygAKrMsACq1GAAqtSAAKrUoACq1MAAqtTwAKrVAACq1RAAqtUgAKrVMACq1VAAqtVwAKrVgACq1ZAAqtWwAKrVwACq3XAAqt2QAKrdsACq3dAAqt4AAKreEACq3iAAqt4wAKreQACq3mAAqt6AAKrekACq3qAAqt7AAKre0ACq5oAAquagAKrm0ACq5vAAqucgAKrnMACq50AAqudQAKrnYACq54AAquegAKrnsACq58AAqufgAKrn8ACq76AAqu/AAKrv4ACq8AAAqvAwAKrwQACq8FAAqvBgAKrwcACq8JAAqvCwAKrwwACq8NAAqvDwAKrxAACq+LAAqvjQAKr48ACq+RAAqvlAAKr5UACq+WAAqvlwAKr5gACq+aAAqvnAAKr50ACq+eAAqvoAAKr6EACrAcAAqwHgAKsCAACrAiAAqwJQAKsCYACrAnAAqwKAAKsCkACrArAAqwLQAKsC4ACrAvAAqwMQAKsDIACrDFAAqw6AAKsQgACrEoAAqxKgAKsSwACrEuAAqxMAAKsTMACrE0AAqxNQAKsTgACrE5AAqxOwAKsTwACrE+AAqxQQAKsUIACrFDAAqxRgAKsUcACrFMAAqxZQAKsW4ACrFwAAqxcgAKsXsACrF+AAqxgQAKsYMACrHMAAqx8AAKshcACrI7AAqyPgAKskAACrJCAAqyRAAKskYACrJIAAqySQAKskwACrJlAAqyhgAKsogACrKKAAqyjAAKso4ACrKQAAqykgAKspQACrKWAAqytwAKsroACrK9AAqywAAKssMACrLGAAqyyQAKsswACrLPAAqy0QAKs0wACrNOAAqzUAAKs1IACrNVAAqzVgAKs1cACrNYAAqzWQAKs1sACrNdAAqzXgAKs18ACrNhAAqzYgAKs90ACrPfAAqz4QAKs+MACrPmAAqz5wAKs+gACrPpAAqz6gAKs+wACrPuAAqz7wAKs/AACrPyAAqz8wAKtG4ACrRwAAq0cwAKtHUACrR4AAq0eQAKtHoACrR7AAq0fAAKtH4ACrSAAAq0gQAKtIIACrSEAAq0hQAKtJ4ACrSfAAq0oAAKtKIACrUdAAq1HwAKtSEACrUjAAq1JgAKtScACrUoAAq1KQAKtSoACrUsAAq1LgAKtS8ACrUwAAq1MgAKtTMACrWuAAq1sAAKtbIACrW0AAq1twAKtbgACrW5AAq1ugAKtbsACrW9AAq1vwAKtcAACrXBAAq1wwAKtcQACrY/AAq2QQAKtkMACrZFAAq2SAAKtkkACrZKAAq2SwAKtkwACrZOAAq2UAAKtlEACrZSAAq2VAAKtlUACrbQAAq20gAKttQACrbWAAq22QAKttoACrbbAAq23AAKtt0ACrbfAAq24QAKtuIACrbjAAq25QAKtuYACrdhAAq3YwAKt2UACrdnAAq3agAKt2sACrdsAAq3bQAKt24ACrdwAAq3cgAKt3MACrd0AAq3dgAKt3cACrfAAAq35AAKuAsACrgvAAq4MgAKuDQACrg2AAq4OAAKuDoACrg8AAq4PQAKuEAACrhZAAq4dgAKuHgACrh6AAq4fAAKuH4ACriAAAq4ggAKuIQACrihAAq4pAAKuKcACriqAAq4rQAKuLAACrizAAq4tgAKuLgACrkzAAq5NQAKuTcACrk5AAq5PAAKuT0ACrk+AAq5PwAKuUAACrlCAAq5RAAKuUUACrlGAAq5SAAKuUkACrnEAAq5xgAKucgACrnKAAq5zQAKuc4ACrnPAAq50AAKudEACrnTAAq51QAKudYACrnXAAq52QAKudoACrpVAAq6VwAKulkACrpbAAq6XgAKul8ACrpgAAq6YQAKumIACrpkAAq6ZgAKumcACrpoAAq6agAKumsACrrmAAq66AAKuusACrrtAAq68AAKuvEACrryAAq68wAKuvQACrr2AAq6+AAKuvkACrr6AAq6/AAKuv0ACrt4AAq7egAKu3wACrt+AAq7gQAKu4IACruDAAq7hAAKu4UACruHAAq7iQAKu4oACruLAAq7jQAKu44ACrwJAAq8CwAKvA0ACrwPAAq8EgAKvBMACrwUAAq8FQAKvBYACrwYAAq8GgAKvBsACrwcAAq8HgAKvB8ACryaAAq8nAAKvJ4ACrygAAq8owAKvKQACrylAAq8pgAKvKcACrypAAq8qwAKvKwACrytAAq8rwAKvLAACrzBAAq8wgAKvMQACrzVAAq83gAKvOEACrzkAAq85gAKvR8ACr0iAAq9JAAKvScACr0qAAq9LQAKvTAACr2zAAq91wAKvfsACr4eAAq+RQAKvmUACr6MAAq+swAKvtMACr73AAq/GwAKvx0ACr8gAAq/IgAKvyQACr8mAAq/KQAKvywACr8uAAq/MAAKvzMACr81AAq/NwAKvzoACr89AAq/PgAKv0MACr9cAAq/YQAKv2MACr9oAAq/awAKv20ACr+2AAq/2gAKwAEACsAlAArAKAAKwCoACsAsAArALgAKwDAACsAyAArAMwAKwDYACsBPAArAdAAKwHYACsB4AArAegAKwHwACsB+AArAgAAKwIIACsCEAArAhgAKwKsACsCuAArAsQAKwLQACsC3AArAugAKwL0ACsDAAArAwwAKwMYACsDIAArBQwAKwUUACsFIAArBSgAKwU0ACsFOAArBTwAKwVAACsFRAArBUwAKwVUACsFWAArBVwAKwVkACsFaAArBawAKwWwACsFuAArB6QAKwesACsHtAArB7wAKwfIACsHzAArB9AAKwfUACsH2AArB+AAKwfoACsH7AArB/AAKwf4ACsH/AArCegAKwnwACsJ/AArCgQAKwoQACsKFAArChgAKwocACsKIAArCigAKwowACsKNAArCjgAKwpAACsKRAArCogAKwqMACsKlAArDIAAKwyIACsMkAArDJgAKwykACsMqAArDKwAKwywACsMtAArDLwAKwzEACsMyAArDMwAKwzUACsM2AArDsQAKw7MACsO2AArDuAAKw7sACsO8AArDvQAKw74ACsO/AArDwQAKw8MACsPEAArDxQAKw8cACsPIAArD2QAKw9oACsPcAArEVwAKxFkACsRbAArEXQAKxGAACsRhAArEYgAKxGMACsRkAArEZgAKxGgACsRpAArEagAKxGwACsRtAArE6AAKxOoACsTtAArE7wAKxPIACsTzAArE9AAKxPUACsT2AArE+AAKxPoACsT7AArE/AAKxP4ACsT/AArFGAAKxRkACsUaAArFHAAKxZcACsWZAArFmwAKxZ0ACsWgAArFoQAKxaIACsWjAArFpAAKxaYACsWoAArFqQAKxaoACsWsAArFrQAKxigACsYqAArGLQAKxi8ACsYyAArGMwAKxjQACsY1AArGNgAKxjgACsY6AArGOwAKxjwACsY+AArGPwAKxl8ACsZ4AArGfQAKxoAACsaFAArGiAAKxooACsacAArHLwAKx1IACsdyAArHkgAKx5QACseWAArHmAAKx5oACsedAArHngAKx58ACseiAArHowAKx6UACsemAArHqQAKx6wACsetAArHrgAKx7EACseyAArHuwAKx9QACsfdAArH3wAKx+IACsfrAArH7gAKx/EACsfzAArIPAAKyGAACsiHAArIqwAKyK4ACsiwAArIsgAKyLQACsi2AArIuAAKyLkACsi8AArI1QAKyPYACsj4AArI+gAKyPwACsj+AArJAAAKyQIACskEAArJBgAKyScACskqAArJLQAKyTAACskzAArJNgAKyTkACsk8AArJPwAKyUEACsm8AArJvgAKycAACsnCAArJxQAKycYACsnHAArJyAAKyckACsnLAArJzQAKyc4ACsnPAArJ0QAKydIACspNAArKTwAKylEACspTAArKVgAKylcACspYAArKWQAKyloACspcAArKXgAKyl8ACspgAArKYgAKymMACsreAArK4AAKyuMACsrlAArK6AAKyukACsrqAArK6wAKyuwACsruAArK8AAKyvEACsryAArK9AAKyvUACssOAArLDwAKyxAACssSAArLjQAKy48ACsuRAArLkwAKy5YACsuXAArLmAAKy5kACsuaAArLnAAKy54ACsufAArLoAAKy6IACsujAArMHgAKzCAACswiAArMJAAKzCcACswoAArMKQAKzCoACswrAArMLQAKzC8ACswwAArMMQAKzDMACsw0AArMrwAKzLEACsyzAArMtQAKzLgACsy5AArMugAKzLsACsy8AArMvgAKzMAACszBAArMwgAKzMQACszFAArNQAAKzUIACs1EAArNRgAKzUkACs1KAArNSwAKzUwACs1NAArNTwAKzVEACs1SAArNUwAKzVUACs1WAArN0QAKzdMACs3VAArN1wAKzdoACs3bAArN3AAKzd0ACs3eAArN4AAKzeIACs3jAArN5AAKzeYACs3nAArOMAAKzlQACs57AArOnwAKzqIACs6lAArOpwAKzqkACs6rAArOrQAKzq4ACs6xAArOygAKzucACs7qAArO7QAKzvAACs7zAArO9gAKzvkACs78AArPGQAKzxwACs8fAArPIgAKzyUACs8oAArPKwAKzy4ACs8wAArPqwAKz60ACs+wAArPsgAKz7UACs+2AArPtwAKz7gACs+5AArPuwAKz74ACs+/AArPwAAKz8IACs/DAArQPgAK0EAACtBDAArQRQAK0EgACtBJAArQSgAK0EsACtBMAArQTgAK0FEACtBSAArQUwAK0FUACtBWAArQ0QAK0NMACtDWAArQ2AAK0NsACtDcAArQ3QAK0N4ACtDfAArQ4QAK0OQACtDlAArQ5gAK0OgACtDpAArRZAAK0WYACtFpAArRawAK0W4ACtFvAArRcAAK0XEACtFyAArRdAAK0XcACtF4AArReQAK0XsACtF8AArR9wAK0fkACtH7AArR/QAK0gAACtIBAArSAgAK0gMACtIEAArSBgAK0gkACtIKAArSCwAK0g0ACtIOAArSiQAK0osACtKNAArSjwAK0pIACtKTAArSlAAK0pUACtKWAArSmAAK0psACtKcAArSnQAK0p8ACtKgAArTGwAK0x0ACtMgAArTIgAK0yUACtMmAArTJwAK0ygACtMpAArTKwAK0y4ACtMvAArTMAAK0zIACtMzAArTxgAK0+kACtQJAArUKQAK1CsACtQtAArULwAK1DEACtQ0AArUNQAK1DYACtQ5AArUOgAK1DwACtQ9AArUQAAK1EMACtREAArURQAK1EgACtRJAArUTgAK1GcACtRwAArUcgAK1HUACtR+AArUgQAK1IQACtSGAArUzwAK1PMACtUaAArVPgAK1UEACtVDAArVRQAK1UcACtVJAArVSwAK1UwACtVPAArVaAAK1YkACtWLAArVjQAK1Y8ACtWRAArVkwAK1ZUACtWXAArVmQAK1boACtW9AArVwAAK1cMACtXGAArVyQAK1cwACtXPAArV0gAK1dQACtZPAArWUQAK1lMACtZVAArWWAAK1lkACtZaAArWWwAK1lwACtZeAArWYAAK1mEACtZiAArWZAAK1mUACtbgAArW4gAK1uQACtbmAArW6QAK1uoACtbrAArW7AAK1u0ACtbvAArW8QAK1vIACtbzAArW9QAK1vYACtdxAArXcwAK13YACtd4AArXewAK13wACtd9AArXfgAK138ACteBAArXgwAK14QACteFAArXhwAK14gACtehAArXogAK16MACtelAArYIAAK2CIACtgkAArYJgAK2CkACtgqAArYKwAK2CwACtgtAArYLwAK2DEACtgyAArYMwAK2DUACtg2AArYsQAK2LMACti1AArYtwAK2LoACti7AArYvAAK2L0ACti+AArYwAAK2MIACtjDAArYxAAK2MYACtjHAArZQgAK2UQACtlGAArZSAAK2UsACtlMAArZTQAK2U4ACtlPAArZUQAK2VMACtlUAArZVQAK2VcACtlYAArZ0wAK2dUACtnXAArZ2QAK2dwACtndAArZ3gAK2d8ACtngAArZ4gAK2eQACtnlAArZ5gAK2egACtnpAAraZAAK2mYACtpoAAraagAK2m0ACtpuAArabwAK2nAACtpxAAracwAK2nUACtp2AAradwAK2nkACtp6AArawwAK2ucACtsOAArbMgAK2zUACts4AArbOgAK2zwACts+AArbQAAK20EACttEAArbXQAK23oACtt9AArbgAAK24MACtuGAArbiQAK24wACtuPAArbrAAK268ACtuyAArbtQAK27gACtu7AArbvgAK28EACtvDAArcPgAK3EAACtxDAArcRQAK3EgACtxJAArcSgAK3EsACtxMAArcTgAK3FEACtxSAArcUwAK3FUACtxWAArc0QAK3NMACtzWAArc2AAK3NsACtzcAArc3QAK3N4ACtzfAArc4QAK3OQACtzlAArc5gAK3OgACtzpAArdZAAK3WYACt1pAArdawAK3W4ACt1vAArdcAAK3XEACt1yAArddAAK3XcACt14AArdeQAK3XsACt18AArd9wAK3fkACt38AArd/gAK3gEACt4CAAreAwAK3gQACt4FAAreBwAK3goACt4LAAreDAAK3g4ACt4PAAreigAK3owACt6OAArekAAK3pMACt6UAArelQAK3pYACt6XAAremQAK3pwACt6dAArengAK3qAACt6hAArfHAAK3x4ACt8gAArfIgAK3yUACt8mAArfJwAK3ygACt8pAArfKwAK3y4ACt8vAArfMAAK3zIACt8zAArfrgAK37AACt+zAArftQAK37gACt+5AArfugAK37sACt+8AArfvgAK38EACt/CAArfwwAK38UACt/GAArf1wAK39wACt/fAArf4QAK3+YACuBhAArgYwAK4GUACuBnAArgagAK4GsACuBsAArgbQAK4G4ACuBwAArgcwAK4HQACuB1AArgdwAK4HgACuDzAArg9QAK4PcACuD5AArg/AAK4P0ACuD+AArg/wAK4QAACuECAArhBQAK4QYACuEHAArhCQAK4QoACuGFAArhhwAK4YoACuGMAArhjwAK4ZAACuGRAArhkgAK4ZMACuGVAArhmAAK4ZkACuGaAArhnAAK4Z0ACuIwAAriUwAK4nMACuKTAArilQAK4pcACuKZAArimwAK4p4ACuKfAArioAAK4qMACuKkAAripgAK4qcACuKqAArirQAK4q4ACuKvAArisgAK4rMACuK8AAri1QAK4t4ACuLgAAri4wAK4uwACuLvAAri8gAK4vQACuM9AArjYQAK44gACuOsAArjrwAK47EACuOzAArjtQAK47cACuO5AArjugAK470ACuPWAArj9wAK4/kACuP7AArj/QAK4/8ACuQBAArkAwAK5AUACuQHAArkKAAK5CsACuQuAArkMQAK5DQACuQ3AArkOgAK5D0ACuRAAArkQgAK5L0ACuS/AArkwQAK5MMACuTGAArkxwAK5MgACuTJAArkygAK5MwACuTOAArkzwAK5NAACuTSAArk0wAK5U4ACuVQAArlUgAK5VQACuVXAArlWAAK5VkACuVaAArlWwAK5V0ACuVfAArlYAAK5WEACuVjAArlZAAK5d8ACuXhAArl5AAK5eYACuXpAArl6gAK5esACuXsAArl7QAK5e8ACuXxAArl8gAK5fMACuX1AArl9gAK5g8ACuYQAArmEQAK5hMACuaOAArmkAAK5pIACuaUAArmlwAK5pgACuaZAArmmgAK5psACuadAArmnwAK5qAACuahAArmowAK5qQACucfAArnIQAK5yMACuclAArnKAAK5ykACucqAArnKwAK5ywACucuAArnMAAK5zEACucyAArnNAAK5zUACuewAArnsgAK57QACue2AArnuQAK57oACue7AArnvAAK570ACue/AArnwQAK58IACufDAArnxQAK58YACuhBAAroQwAK6EUACuhHAAroSgAK6EsACuhMAAroTQAK6E4ACuhQAAroUgAK6FMACuhUAAroVgAK6FcACujSAAro1AAK6NYACujYAAro2wAK6NwACujdAAro3gAK6N8ACujhAAro4wAK6OQACujlAAro5wAK6OgACukxAArpVQAK6XwACumgAArpowAK6aYACumoAArpqgAK6awACumuAArprwAK6bIACunLAArp6AAK6esACunuAArp8QAK6fQACun3AArp+gAK6f0ACuoaAArqHQAK6iAACuojAArqJgAK6ikACuosAArqLwAK6jEACuqsAArqrgAK6rEACuqzAArqtgAK6rcACuq4AArquQAK6roACuq8AArqvwAK6sAACurBAArqwwAK6sQACus/AArrQQAK60QACutGAArrSQAK60oACutLAArrTAAK600ACutPAArrUgAK61MACutUAArrVgAK61cACuvSAArr1AAK69cACuvZAArr3AAK690ACuveAArr3wAK6+AACuviAArr5QAK6+YACuvnAArr6QAK6+oACuxlAArsZwAK7GoACuxsAArsbwAK7HAACuxxAArscgAK7HMACux1AArseAAK7HkACux6AArsfAAK7H0ACu0AAArtJAAK7UgACu1rAArtkgAK7bIACu3ZAAruAAAK7iAACu5EAAruaAAK7moACu5tAArubwAK7nEACu5zAArudgAK7nkACu57AArufQAK7oAACu6CAAruhAAK7ocACu6KAAruiwAK7pAACu6pAArurgAK7rAACu61AAruuAAK7roACu8DAArvJwAK704ACu9yAArvdQAK73cACu95AArvewAK730ACu9/AArvgAAK74MACu+cAArvwQAK78MACu/FAArvxwAK78kACu/LAArvzQAK788ACu/RAArv0wAK7/gACu/7AArv/gAK8AEACvAEAArwBwAK8AoACvANAArwEAAK8BMACvAVAArwkAAK8JIACvCVAArwlwAK8JoACvCbAArwnAAK8J0ACvCeAArwoAAK8KIACvCjAArwpAAK8KYACvCnAArwuAAK8LkACvC7AArxNgAK8TgACvE6AArxPAAK8T8ACvFAAArxQQAK8UIACvFDAArxRQAK8UcACvFIAArxSQAK8UsACvFMAArxxwAK8ckACvHMAArxzgAK8dEACvHSAArx0wAK8dQACvHVAArx1wAK8dkACvHaAArx2wAK8d0ACvHeAArx7wAK8fAACvHyAArybQAK8m8ACvJxAArycwAK8nYACvJ3AAryeAAK8nkACvJ6AAryfAAK8n4ACvJ/AArygAAK8oIACvKDAAry/gAK8wAACvMDAArzBQAK8wgACvMJAArzCgAK8wsACvMMAArzDgAK8xAACvMRAArzEgAK8xQACvMVAArzJgAK8ycACvMpAArzpAAK86YACvOoAArzqgAK860ACvOuAArzrwAK87AACvOxAArzswAK87UACvO2AArztwAK87kACvO6AAr0NQAK9DcACvQ6AAr0PAAK9D8ACvRAAAr0QQAK9EIACvRDAAr0RQAK9EcACvRIAAr0SQAK9EsACvRMAAr0ZQAK9GYACvRnAAr0aQAK9OQACvTmAAr06AAK9OoACvTtAAr07gAK9O8ACvTwAAr08QAK9PMACvT1AAr09gAK9PcACvT5AAr0+gAK9XUACvV3AAr1egAK9XwACvV/AAr1gAAK9YEACvWCAAr1gwAK9YUACvWHAAr1iAAK9YkACvWLAAr1jAAK9aMACvW8AAr12QAK9dwACvXfAAr14gAK9eUACvXoAAr16wAK9e4ACvYLAAr2DgAK9hEACvYUAAr2FwAK9hoACvYdAAr2IAAK9iIACvYvAAr2SQAK9lEACvZgAAr2hgAK9qsACvc+AAr3YQAK94EACvehAAr3owAK96UACvenAAr3qQAK96wACvetAAr3rgAK97EACveyAAr3tAAK97UACve3AAr3ugAK97sACve8AAr3vwAK98AACvfFAAr33gAK9+cACvfpAAr36wAK9/QACvf3AAr3+gAK9/wACvhFAAr4aQAK+JAACvi0AAr4twAK+LkACvi7AAr4vQAK+L8ACvjBAAr4wgAK+MUACvjeAAr4/wAK+QEACvkDAAr5BQAK+QcACvkJAAr5CwAK+Q0ACvkPAAr5MAAK+TMACvk2AAr5OQAK+TwACvk/AAr5QgAK+UUACvlIAAr5SgAK+cUACvnHAAr5yQAK+csACvnOAAr5zwAK+dAACvnRAAr50gAK+dQACvnWAAr51wAK+dgACvnaAAr52wAK+lYACvpYAAr6WgAK+lwACvpfAAr6YAAK+mEACvpiAAr6YwAK+mUACvpnAAr6aAAK+mkACvprAAr6bAAK+ucACvrpAAr67AAK+u4ACvrxAAr68gAK+vMACvr0AAr69QAK+vcACvr5AAr6+gAK+vsACvr9AAr6/gAK+xcACvsYAAr7GQAK+xsACvuWAAr7mAAK+5oACvucAAr7nwAK+6AACvuhAAr7ogAK+6MACvulAAr7pwAK+6gACvupAAr7qwAK+6wACvwnAAr8KQAK/CsACvwtAAr8MAAK/DEACvwyAAr8MwAK/DQACvw2AAr8OAAK/DkACvw6AAr8PAAK/D0ACvy4AAr8ugAK/LwACvy+AAr8wQAK/MIACvzDAAr8xAAK/MUACvzHAAr8yQAK/MoACvzLAAr8zQAK/M4ACv1JAAr9SwAK/U0ACv1PAAr9UgAK/VMACv1UAAr9VQAK/VYACv1YAAr9WgAK/VsACv1cAAr9XgAK/V8ACv3aAAr93AAK/d4ACv3gAAr94wAK/eQACv3lAAr95gAK/ecACv3pAAr96wAK/ewACv3tAAr97wAK/fAACv45AAr+XQAK/oQACv6oAAr+qwAK/q0ACv6vAAr+sQAK/rMACv61AAr+tgAK/rkACv7SAAr+7wAK/vEACv7zAAr+9QAK/vcACv75AAr++wAK/v0ACv8aAAr/HQAK/yAACv8jAAr/JgAK/ykACv8sAAr/LwAK/zEACv+sAAr/rgAK/7AACv+yAAr/tQAK/7YACv+3AAr/uAAK/7kACv+7AAr/vQAK/74ACv+/AAr/wQAK/8IACwA9AAsAPwALAEEACwBDAAsARgALAEcACwBIAAsASQALAEoACwBMAAsATgALAE8ACwBQAAsAUgALAFMACwDOAAsA0AALANIACwDUAAsA1wALANgACwDZAAsA2gALANsACwDdAAsA3wALAOAACwDhAAsA4wALAOQACwFfAAsBYQALAWMACwFlAAsBaAALAWkACwFqAAsBawALAWwACwFuAAsBcAALAXEACwFyAAsBdAALAXUACwHwAAsB8gALAfQACwH2AAsB+QALAfoACwH7AAsB/AALAf0ACwH/AAsCAQALAgIACwIDAAsCBQALAgYACwKBAAsCgwALAoUACwKHAAsCigALAosACwKMAAsCjQALAo4ACwKQAAsCkgALApMACwKUAAsClgALApcACwMSAAsDFAALAxYACwMYAAsDGwALAxwACwMdAAsDHgALAx8ACwMhAAsDIwALAyQACwMlAAsDJwALAygACwO7AAsD3gALA/4ACwQeAAsEIAALBCIACwQkAAsEJgALBCkACwQqAAsEKwALBC4ACwQvAAsEMQALBDIACwQ0AAsENwALBDgACwQ5AAsEPAALBD0ACwRGAAsEXwALBGgACwRqAAsEbAALBHUACwR4AAsEewALBH0ACwTGAAsE6gALBREACwU1AAsFOAALBToACwU8AAsFPgALBUAACwVCAAsFQwALBUYACwVfAAsFgAALBYIACwWEAAsFhgALBYgACwWKAAsFjAALBY4ACwWQAAsFsQALBbQACwW3AAsFugALBb0ACwXAAAsFwwALBcYACwXJAAsFywALBkYACwZIAAsGSgALBkwACwZPAAsGUAALBlEACwZSAAsGUwALBlUACwZXAAsGWAALBlkACwZbAAsGXAALBtcACwbZAAsG2wALBt0ACwbgAAsG4QALBuIACwbjAAsG5AALBuYACwboAAsG6QALBuoACwbsAAsG7QALB2gACwdqAAsHbQALB28ACwdyAAsHcwALB3QACwd1AAsHdgALB3gACwd6AAsHewALB3wACwd+AAsHfwALB5gACweZAAsHmgALB5wACwgXAAsIGQALCBsACwgdAAsIIAALCCEACwgiAAsIIwALCCQACwgmAAsIKAALCCkACwgqAAsILAALCC0ACwioAAsIqgALCKwACwiuAAsIsQALCLIACwizAAsItAALCLUACwi3AAsIuQALCLoACwi7AAsIvQALCL4ACwk5AAsJOwALCT0ACwk/AAsJQgALCUMACwlEAAsJRQALCUYACwlIAAsJSgALCUsACwlMAAsJTgALCU8ACwnKAAsJzAALCc4ACwnQAAsJ0wALCdQACwnVAAsJ1gALCdcACwnZAAsJ2wALCdwACwndAAsJ3wALCeAACwpbAAsKXQALCl8ACwphAAsKZAALCmUACwpmAAsKZwALCmgACwpqAAsKbAALCm0ACwpuAAsKcAALCnEACwq6AAsK3gALCwUACwspAAsLLAALCy4ACwswAAsLMgALCzQACws2AAsLNwALCzoACwtTAAsLcAALC3IACwt0AAsLdgALC3gACwt6AAsLfAALC34ACwubAAsLngALC6EACwukAAsLpwALC6oACwutAAsLsAALC7IACwwtAAsMLwALDDEACwwzAAsMNgALDDcACww4AAsMOQALDDoACww8AAsMPgALDD8ACwxAAAsMQgALDEMACwy+AAsMwAALDMIACwzEAAsMxwALDMgACwzJAAsMygALDMsACwzNAAsMzwALDNAACwzRAAsM0wALDNQACw1PAAsNUQALDVMACw1VAAsNWAALDVkACw1aAAsNWwALDVwACw1eAAsNYAALDWEACw1iAAsNZAALDWUACw3gAAsN4gALDeUACw3nAAsN6gALDesACw3sAAsN7QALDe4ACw3wAAsN8gALDfMACw30AAsN9gALDfcACw5yAAsOdAALDnYACw54AAsOewALDnwACw59AAsOfgALDn8ACw6BAAsOgwALDoQACw6FAAsOhwALDogACw8DAAsPBQALDwcACw8JAAsPDAALDw0ACw8OAAsPDwALDxAACw8SAAsPFAALDxUACw8WAAsPGAALDxkACw+UAAsPlgALD5gACw+aAAsPnQALD54ACw+fAAsPoAALD6EACw+jAAsPpQALD6YACw+nAAsPqQALD6oACxA9AAsQYAALEIAACxCgAAsQogALEKQACxCmAAsQqAALEKsACxCsAAsQrQALELAACxCxAAsQswALELQACxC3AAsQugALELsACxC8AAsQvwALEMAACxDFAAsQ3gALEOcACxDpAAsQ7AALEPUACxD4AAsQ+wALEP0ACxFGAAsRagALEZEACxG1AAsRuAALEboACxG8AAsRvgALEcAACxHCAAsRwwALEcYACxHfAAsSAAALEgIACxIEAAsSBgALEggACxIKAAsSDAALEg4ACxIQAAsSMQALEjQACxI3AAsSOgALEj0ACxJAAAsSQwALEkYACxJJAAsSSwALEsYACxLIAAsSygALEswACxLPAAsS0AALEtEACxLSAAsS0wALEtUACxLXAAsS2AALEtkACxLbAAsS3AALE1cACxNZAAsTWwALE10ACxNgAAsTYQALE2IACxNjAAsTZAALE2YACxNoAAsTaQALE2oACxNsAAsTbQALE+gACxPqAAsT7QALE+8ACxPyAAsT8wALE/QACxP1AAsT9gALE/gACxP6AAsT+wALE/wACxP+AAsT/wALFBgACxQZAAsUGgALFBwACxSXAAsUmQALFJsACxSdAAsUoAALFKEACxSiAAsUowALFKQACxSmAAsUqAALFKkACxSqAAsUrAALFK0ACxUoAAsVKgALFSwACxUuAAsVMQALFTIACxUzAAsVNAALFTUACxU3AAsVOQALFToACxU7AAsVPQALFT4ACxW5AAsVuwALFb0ACxW/AAsVwgALFcMACxXEAAsVxQALFcYACxXIAAsVygALFcsACxXMAAsVzgALFc8ACxZKAAsWTAALFk4ACxZQAAsWUwALFlQACxZVAAsWVgALFlcACxZZAAsWWwALFlwACxZdAAsWXwALFmAACxbbAAsW3QALFt8ACxbhAAsW5AALFuUACxbmAAsW5wALFugACxbqAAsW7AALFu0ACxbuAAsW8AALFvEACxc6AAsXXgALF4UACxepAAsXrAALF68ACxexAAsXswALF7UACxe3AAsXuAALF7sACxfUAAsX8QALF/QACxf3AAsX+gALF/0ACxgAAAsYAwALGAYACxgjAAsYJgALGCkACxgsAAsYLwALGDIACxg1AAsYOAALGDoACxi1AAsYtwALGLoACxi8AAsYvwALGMAACxjBAAsYwgALGMMACxjFAAsYyAALGMkACxjKAAsYzAALGM0ACxlIAAsZSgALGU0ACxlPAAsZUgALGVMACxlUAAsZVQALGVYACxlYAAsZWwALGVwACxldAAsZXwALGWAACxnbAAsZ3QALGeAACxniAAsZ5QALGeYACxnnAAsZ6AALGekACxnrAAsZ7gALGe8ACxnwAAsZ8gALGfMACxpuAAsacAALGnMACxp1AAsaeAALGnkACxp6AAsaewALGnwACxp+AAsagQALGoIACxqDAAsahQALGoYACxsBAAsbAwALGwUACxsHAAsbCgALGwsACxsMAAsbDQALGw4ACxsQAAsbEwALGxQACxsVAAsbFwALGxgACxuTAAsblQALG5cACxuZAAsbnAALG50ACxueAAsbnwALG6AACxuiAAsbpQALG6YACxunAAsbqQALG6oACxwlAAscJwALHCoACxwsAAscLwALHDAACxwxAAscMgALHDMACxw1AAscOAALHDkACxw6AAscPAALHD0ACxzQAAsc8wALHRMACx0zAAsdNQALHTcACx05AAsdOwALHT4ACx0/AAsdQAALHUMACx1EAAsdRgALHUcACx1JAAsdTAALHU0ACx1OAAsdUQALHVIACx1XAAsdcAALHXkACx17AAsdfQALHYYACx2JAAsdjAALHY4ACx3XAAsd+wALHiIACx5GAAseSQALHksACx5NAAseTwALHlEACx5TAAseVAALHlcACx5wAAsekQALHpMACx6VAAselwALHpkACx6bAAsenQALHp8ACx6hAAsewgALHsUACx7IAAseywALHs4ACx7RAAse1AALHtcACx7aAAse3AALH1cACx9ZAAsfWwALH10ACx9gAAsfYQALH2IACx9jAAsfZAALH2YACx9oAAsfaQALH2oACx9sAAsfbQALH+gACx/qAAsf7AALH+4ACx/xAAsf8gALH/MACx/0AAsf9QALH/cACx/5AAsf+gALH/sACx/9AAsf/gALIHkACyB7AAsgfgALIIAACyCDAAsghAALIIUACyCGAAsghwALIIkACyCLAAsgjAALII0ACyCPAAsgkAALIKkACyCqAAsgqwALIK0ACyEoAAshKgALISwACyEuAAshMQALITIACyEzAAshNAALITUACyE3AAshOQALIToACyE7AAshPQALIT4ACyG5AAshuwALIb0ACyG/AAshwgALIcMACyHEAAshxQALIcYACyHIAAshygALIcsACyHMAAshzgALIc8ACyJKAAsiTAALIk4ACyJQAAsiUwALIlQACyJVAAsiVgALIlcACyJZAAsiWwALIlwACyJdAAsiXwALImAACyLbAAsi3QALIt8ACyLhAAsi5AALIuUACyLmAAsi5wALIugACyLqAAsi7AALIu0ACyLuAAsi8AALIvEACyNsAAsjbgALI3AACyNyAAsjdQALI3YACyN3AAsjeAALI3kACyN7AAsjfQALI34ACyN/AAsjgQALI4IACyPLAAsj7wALJBYACyQ6AAskPQALJD8ACyRBAAskQwALJEUACyRHAAskSAALJEsACyRkAAskgQALJIMACySFAAskhwALJIkACySLAAskjQALJI8ACySsAAskrwALJLIACyS1AAskuAALJLsACyS+AAskwQALJMMACyU+AAslQAALJUIACyVEAAslRwALJUgACyVJAAslSgALJUsACyVNAAslTwALJVAACyVRAAslUwALJVQACyXPAAsl0QALJdMACyXVAAsl2AALJdkACyXaAAsl2wALJdwACyXeAAsl4AALJeEACyXiAAsl5AALJeUACyZgAAsmYgALJmQACyZmAAsmaQALJmoACyZrAAsmbAALJm0ACyZvAAsmcQALJnIACyZzAAsmdQALJnYACybxAAsm8wALJvYACyb4AAsm+wALJvwACyb9AAsm/gALJv8ACycBAAsnAwALJwQACycFAAsnBwALJwgACyeDAAsnhQALJ4cACyeJAAsnjAALJ40ACyeOAAsnjwALJ5AACyeSAAsnlAALJ5UACyeWAAsnmAALJ5kACygUAAsoFgALKBgACygaAAsoHQALKB4ACygfAAsoIAALKCEACygjAAsoJQALKCYACygnAAsoKQALKCoACyilAAsopwALKKkACyirAAsorgALKK8ACyiwAAsosQALKLIACyi0AAsotgALKLcACyi4AAsougALKLsACylOAAspcQALKZEACymxAAspswALKbUACym3AAspuQALKbwACym9AAspvgALKcEACynCAAspxAALKcUACynHAAspygALKcsACynMAAspzwALKdAACynVAAsp7gALKfcACyn5AAsp+wALKgQACyoHAAsqCgALKgwACypVAAsqeQALKqAACyrEAAsqxwALKskACyrLAAsqzQALKs8ACyrRAAsq0gALKtUACyruAAsrDwALKxEACysTAAsrFQALKxcACysZAAsrGwALKx0ACysfAAsrQAALK0MACytGAAsrSQALK0wACytPAAsrUgALK1UACytYAAsrWgALK9UACyvXAAsr2QALK9sACyveAAsr3wALK+AACyvhAAsr4gALK+QACyvmAAsr5wALK+gACyvqAAsr6wALLGYACyxoAAssagALLGwACyxvAAsscAALLHEACyxyAAsscwALLHUACyx3AAsseAALLHkACyx7AAssfAALLPcACyz5AAss/AALLP4ACy0BAAstAgALLQMACy0EAAstBQALLQcACy0JAAstCgALLQsACy0NAAstDgALLScACy0oAAstKQALLSsACy2mAAstqAALLaoACy2sAAstrwALLbAACy2xAAstsgALLbMACy21AAsttwALLbgACy25AAstuwALLbwACy43AAsuOQALLjsACy49AAsuQAALLkEACy5CAAsuQwALLkQACy5GAAsuSAALLkkACy5KAAsuTAALLk0ACy7IAAsuygALLswACy7OAAsu0QALLtIACy7TAAsu1AALLtUACy7XAAsu2QALLtoACy7bAAsu3QALLt4ACy9ZAAsvWwALL10ACy9fAAsvYgALL2MACy9kAAsvZQALL2YACy9oAAsvagALL2sACy9sAAsvbgALL28ACy/qAAsv7AALL+4ACy/wAAsv8wALL/QACy/1AAsv9gALL/cACy/5AAsv+wALL/wACy/9AAsv/wALMAAACzBJAAswbQALMJQACzC4AAswuwALML0ACzC/AAswwQALMMMACzDFAAswxgALMMkACzDiAAsw/wALMQEACzEDAAsxBQALMQcACzEJAAsxCwALMQ0ACzEqAAsxLQALMTAACzEzAAsxNgALMTkACzE8AAsxPwALMUEACzG8AAsxvgALMcAACzHCAAsxxQALMcYACzHHAAsxyAALMckACzHLAAsxzQALMc4ACzHPAAsx0QALMdIACzJNAAsyTwALMlEACzJTAAsyVgALMlcACzJYAAsyWQALMloACzJcAAsyXgALMl8ACzJgAAsyYgALMmMACzLeAAsy4AALMuIACzLkAAsy5wALMugACzLpAAsy6gALMusACzLtAAsy7wALMvAACzLxAAsy8wALMvQACzNvAAszcQALM3MACzN1AAszeAALM3kACzN6AAszewALM3wACzN+AAszgAALM4EACzOCAAszhAALM4UACzQAAAs0AgALNAQACzQGAAs0CQALNAoACzQLAAs0DAALNA0ACzQPAAs0EQALNBIACzQTAAs0FQALNBYACzSRAAs0kwALNJUACzSXAAs0mgALNJsACzScAAs0nQALNJ4ACzSgAAs0ogALNKMACzSkAAs0pgALNKcACzUiAAs1JAALNSYACzUoAAs1KwALNSwACzUtAAs1LgALNS8ACzUxAAs1MwALNTQACzU1AAs1NwALNTgACzXLAAs17gALNg4ACzYuAAs2MAALNjIACzY0AAs2NgALNjkACzY6AAs2OwALNj4ACzY/AAs2QQALNkIACzZEAAs2RwALNkgACzZJAAs2TAALNk0ACzZSAAs2awALNnQACzZ2AAs2eAALNoEACzaEAAs2hwALNokACzbSAAs29gALNx0ACzdBAAs3RAALN0YACzdIAAs3SgALN0wACzdOAAs3TwALN1IACzdrAAs3jAALN44ACzeQAAs3kgALN5QACzeWAAs3mAALN5oACzecAAs3vQALN8AACzfDAAs3xgALN8kACzfMAAs3zwALN9IACzfVAAs31wALOFIACzhUAAs4VgALOFgACzhbAAs4XAALOF0ACzheAAs4XwALOGEACzhjAAs4ZAALOGUACzhnAAs4aAALOOMACzjlAAs45wALOOkACzjsAAs47QALOO4ACzjvAAs48AALOPIACzj0AAs49QALOPYACzj4AAs4+QALOXQACzl2AAs5eQALOXsACzl+AAs5fwALOYAACzmBAAs5ggALOYQACzmGAAs5hwALOYgACzmKAAs5iwALOaQACzmlAAs5pgALOagACzojAAs6JQALOicACzopAAs6LAALOi0ACzouAAs6LwALOjAACzoyAAs6NAALOjUACzo2AAs6OAALOjkACzq0AAs6tgALOrgACzq6AAs6vQALOr4ACzq/AAs6wAALOsEACzrDAAs6xQALOsYACzrHAAs6yQALOsoACztFAAs7RwALO0kACztLAAs7TgALO08ACztQAAs7UQALO1IACztUAAs7VgALO1cACztYAAs7WgALO1sACzvWAAs72AALO9oACzvcAAs73wALO+AACzvhAAs74gALO+MACzvlAAs75wALO+gACzvpAAs76wALO+wACzxnAAs8aQALPGsACzxtAAs8cAALPHEACzxyAAs8cwALPHQACzx2AAs8eAALPHkACzx6AAs8fAALPH0ACzzGAAs86gALPRE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AC05PAAtOUAALTlIAC05TAAtOZAALTmUAC05nAAtO4gALTuQAC07mAAtO6AALTusAC07sAAtO7QALTu4AC07vAAtO8QALTvQAC071AAtO9gALTvgAC075AAtPdAALT3YAC094AAtPegALT30AC09+AAtPfwALT4AAC0+BAAtPgwALT4YAC0+HAAtPiAALT4oAC0+LAAtQBgALUAgAC1ALAAtQDQALUBAAC1ARAAtQEgALUBMAC1AUAAtQFgALUBkAC1AaAAtQGwALUB0AC1AeAAtQsQALUNQAC1D0AAtRFAALURYAC1EYAAtRGgALURwAC1EfAAtRIAALUSEAC1EkAAtRJQALUScAC1EoAAtRKgALUS0AC1EuAAtRLwALUTIAC1EzAAtROAALUVEAC1FaAAtRXAALUV4AC1FnAAtRagALUW0AC1FvAAtRuAALUdwAC1IDAAtSJwALUioAC1IsAAtSLgALUjAAC1IyAAtSNAALUjUAC1I4AAtSUQALUnIAC1J0AAtSdgALUngAC1J6AAtSfAALUn4AC1KAAAtSggALUqMAC1KmAAtSqQALUqwAC1KvAAtSsgALUrUAC1K4AAtSuwALUr0AC1M4AAtTOgALUzwAC1M+AAtTQQALU0IAC1NDAAtTRAALU0UAC1NHAAtTSQALU0oAC1NLAAtTTQALU04AC1PJAAtTywALU80AC1PPAAtT0gALU9MAC1PUAAtT1QALU9YAC1PYAAtT2gALU9sAC1PcAAtT3gALU98AC1RaAAtUXAALVF8AC1RhAAtUZAALVGUAC1RmAAtUZwALVGgAC1RqAAtUbAALVG0AC1RuAAtUcAALVHEAC1SKAAtUiwALVIwAC1SOAAtVCQALVQsAC1UNAAtVDwALVRIAC1UTAAtVFAALVRUAC1UWAAtVGAALVRoAC1UbAAtVHAALVR4AC1UfAAtVmgALVZwAC1WeAAtVoAALVaMAC1WkAAtVpQALVaYAC1WnAAtVqQALVasAC1WsAAtVrQALVa8AC1WwAAtWKwALVi0AC1YvAAtWMQALVjQAC1Y1AAtWNgALVjcAC1Y4AAtWOgALVjwAC1Y9AAtWPgALVkAAC1ZBAAtWvAALVr4AC1bAAAtWwgALVsUAC1bGAAtWxwALVsgAC1bJAAtWywALVs0AC1bOAAtWzwALVtEAC1bSAAtXTQALV08AC1dRAAtXUwALV1YAC1dXAAtXWAALV1kAC1daAAtXXAALV14AC1dfAAtXYAALV2IAC1djAAtXrAALV9AAC1f3AAtYGwALWB4AC1ggAAtYIgALWCQAC1gmAAtYKAALWCkAC1gsAAtYRQALWGIAC1hkAAtYZgALWGgAC1hqAAtYbAALWG4AC1hwAAtYjQALWJAAC1iTAAtYlgALWJkAC1icAAtYnwALWKIAC1ikAAtZHwALWSEAC1kkAAtZJgALWSkAC1kqAAtZKwALWSwAC1ktAAtZLwALWTEAC1kyAAtZMwALWTUAC1k2AAtZsQALWbMAC1m1AAtZtwALWboAC1m7AAtZvAALWb0AC1m+AAtZwAALWcIAC1nDAAtZxAALWcYAC1nHAAtaQgALWkQAC1pGAAtaSAALWksAC1pMAAtaTQALWk4AC1pPAAtaUQALWlMAC1pUAAtaVQALWlcAC1pYAAta0wALWtUAC1rYAAta2gALWt0AC1reAAta3wALWuAAC1rhAAta4wALWuUAC1rmAAta5wALWukAC1rqAAtbZQALW2cAC1tpAAtbawALW24AC1tvAAtbcAALW3EAC1tyAAtbdAALW3YAC1t3AAtbeAALW3oAC1t7AAtb9gALW/gAC1v6AAtb/AALW/8AC1wAAAtcAQALXAIAC1wDAAtcBQALXAcAC1wIAAtcCQALXAsAC1wMAAtchwALXIkAC1yLAAtcjQALXJAAC1yRAAtckgALXJMAC1yUAAtclgALXJgAC1yZAAtcmgALXJwAC1ydAAtdMAALXVMAC11zAAtdkwALXZUAC12XAAtdmQALXZsAC12eAAtdnwALXaAAC12jAAtdpAALXaYAC12nAAtdqQALXawAC12tAAtdrgALXbEAC12yAAtdtwALXdAAC13ZAAtd2wALXd0AC13mAAtd6QALXewAC13uAAteNwALXlsAC16CAAtepgALXqkAC16rAAterQALXq8AC16xAAteswALXrQAC163AAte0AALXvEAC17zAAte9QALXvcAC175AAte+wALXv0AC17/AAtfAQALXyIAC18lAAtfKAALXysAC18uAAtfMQALXzQAC183AAtfOgALXzwAC1+3AAtfuQALX7sAC1+9AAtfwAALX8EAC1/CAAtfwwALX8QAC1/GAAtfyAALX8kAC1/KAAtfzAALX80AC2BIAAtgSgALYEwAC2BOAAtgUQALYFIAC2BTAAtgVAALYFUAC2BXAAtgWQALYFoAC2BbAAtgXQALYF4AC2DZAAtg2wALYN4AC2DgAAtg4wALYOQAC2DlAAtg5gALYOcAC2DpAAtg6wALYOwAC2DtAAtg7wALYPAAC2EJAAthCgALYQsAC2ENAAthiAALYYoAC2GMAAthjgALYZEAC2GSAAthkwALYZQAC2GVAAthlwALYZkAC2GaAAthmwALYZ0AC2GeAAtiGQALYhsAC2IdAAtiHwALYiIAC2IjAAtiJAALYiUAC2ImAAtiKAALYioAC2IrAAtiLAALYi4AC2IvAAtiqgALYqwAC2KuAAtisAALYrMAC2K0AAtitQALYrYAC2K3AAtiuQALYrsAC2K8AAtivQALYr8AC2LAAAtjOwALYz0AC2M/AAtjQQALY0QAC2NFAAtjRgALY0cAC2NIAAtjSgALY0wAC2NNAAtjTgALY1AAC2NRAAtjzAALY84AC2PQAAtj0gALY9UAC2PWAAtj1wALY9gAC2PZAAtj2wALY90AC2PeAAtj3wALY+EAC2PiAAtkKwALZE8AC2R2AAtkmgALZJ0AC2SfAAtkoQALZKMAC2SlAAtkpwALZKgAC2SrAAtkxAALZOEAC2TjAAtk5QALZOcAC2TpAAtk6wALZO0AC2TvAAtlDAALZQ8AC2USAAtlFQALZRgAC2UbAAtlHgALZSEAC2UjAAtlngALZaAAC2WiAAtlpAALZacAC2WoAAtlqQALZaoAC2WrAAtlrQALZa8AC2WwAAtlsQALZbMAC2W0AAtmLwALZjEAC2YzAAtmNQALZjgAC2Y5AAtmOgALZjsAC2Y8AAtmPgALZkAAC2ZBAAtmQgALZkQAC2ZFAAtmwAALZsIAC2bEAAtmxgALZskAC2bKAAtmywALZswAC2bNAAtmzwALZtEAC2bSAAtm0wALZtUAC2bWAAtnUQALZ1MAC2dVAAtnVwALZ1oAC2dbAAtnXAALZ10AC2deAAtnYAALZ2IAC2djAAtnZAALZ2YAC2dnAAtn4gALZ+QAC2fmAAtn6AALZ+sAC2fsAAtn7QALZ+4AC2fvAAtn8QALZ/MAC2f0AAtn9QALZ/cAC2f4AAtocwALaHUAC2h4AAtoegALaH0AC2h+AAtofwALaIAAC2iBAAtogwALaIUAC2iGAAtohwALaIkAC2iKAAtoqQALaSQAC2kmAAtpKAALaSoAC2ktAAtpLgALaS8AC2kwAAtpMQALaTMAC2k1AAtpNgALaTcAC2k5AAtpOgALac0AC2nwAAtqEAALajAAC2oyAAtqNAALajYAC2o4AAtqOwALajwAC2o9AAtqQAALakEAC2pDAAtqRAALakYAC2pJAAtqSgALaksAC2pOAAtqTwALalQAC2ptAAtqdgALangAC2p6AAtqgwALaoYAC2qJAAtqiwALatQAC2r4AAtrHwALa0MAC2tGAAtrSAALa0oAC2tMAAtrTgALa1AAC2tRAAtrVAALa20AC2uOAAtrkAALa5IAC2uUAAtrlgALa5gAC2uaAAtrnAALa54AC2u/AAtrwgALa8UAC2vIAAtrywALa84AC2vRAAtr1AALa9cAC2vZAAtsVAALbFYAC2xYAAtsWgALbF0AC2xeAAtsXwALbGAAC2xhAAtsYwALbGUAC2xmAAtsZwALbGkAC2xqAAts5QALbOcAC2zpAAts6wALbO4AC2zvAAts8AALbPEAC2zyAAts9AALbPYAC2z3AAts+AALbPoAC2z7AAttdgALbXgAC217AAttfQALbYAAC22BAAttggALbYMAC22EAAtthgALbYgAC22JAAttigALbYwAC22NAAttpgALbacAC22oAAttqgALbiUAC24nAAtuKQALbisAC24uAAtuLwALbjAAC24xAAtuMgALbjQAC242AAtuNwALbjgAC246AAtuOwALbrYAC264AAtuugALbrwAC26/AAtuwAALbsEAC27CAAtuwwALbsUAC27HAAtuyAALbskAC27LAAtuzAALb0cAC29JAAtvSwALb00AC29QAAtvUQALb1IAC29TAAtvVAALb1YAC29YAAtvWQALb1oAC29cAAtvXQALb9gAC2/aAAtv3AALb94AC2/hAAtv4gALb+MAC2/kAAtv5QALb+cAC2/pAAtv6gALb+sAC2/tAAtv7gALcGkAC3BrAAtwbQALcG8AC3ByAAtwcwALcHQAC3B1AAtwdgALcHgAC3B6AAtwewALcHwAC3B+AAtwfwALcMgAC3DsAAtxEwALcTcAC3E6AAtxPAALcT4AC3FAAAtxQgALcUQAC3FFAAtxSAALcWEAC3F+AAtxgAALcYIAC3GEAAtxhgALcYgAC3GKAAtxjAALcakAC3GsAAtxrwALcbIAC3G1AAtxuAALcbsAC3G+AAtxwAALcjsAC3I9AAtyQAALckIAC3JFAAtyRgALckcAC3JIAAtySQALcksAC3JNAAtyTgALck8AC3JRAAtyUgALcs0AC3LPAAty0QALctMAC3LWAAty1wALctgAC3LZAAty2gALctwAC3LeAAty3wALcuAAC3LiAAty4wALc14AC3NgAAtzYgALc2QAC3NnAAtzaAALc2kAC3NqAAtzawALc20AC3NvAAtzcAALc3EAC3NzAAtzdAALc+8AC3PxAAtz9AALc/YAC3P5AAtz+gALc/sAC3P8AAtz/QALc/8AC3QBAAt0AgALdAMAC3QFAAt0BgALdIEAC3SDAAt0hQALdIcAC3SKAAt0iwALdIwAC3SNAAt0jgALdJAAC3SSAAt0kwALdJQAC3SWAAt0lwALdRIAC3UUAAt1FgALdRgAC3UbAAt1HAALdR0AC3UeAAt1HwALdSEAC3UjAAt1JAALdSUAC3UnAAt1KAALdaMAC3WlAAt1pwALdakAC3WsAAt1rQALda4AC3WvAAt1sAALdbIAC3W0AAt1tQALdbYAC3W4AAt1uQALdkwAC3ZvAAt2jwALdq8AC3axAAt2swALdrUAC3a3AAt2ugALdrsAC3a8AAt2vwALdsAAC3bCAAt2wwALdsUAC3bIAAt2yQALdsoAC3bNAAt2zgALdtMAC3bsAAt29QALdvcAC3b5AAt3AgALdwUAC3cIAAt3CgALd1MAC3d3AAt3ngALd8IAC3fFAAt3xwALd8kAC3fLAAt3zQALd88AC3fQAAt30wALd+wAC3gNAAt4DwALeBEAC3gTAAt4FQALeBcAC3gZAAt4GwALeB0AC3g+AAt4QQALeEQAC3hHAAt4SgALeE0AC3hQAAt4UwALeFYAC3hYAAt40wALeNUAC3jXAAt42QALeNwAC3jdAAt43gALeN8AC3jgAAt44gALeOQAC3jlAAt45gALeOgAC3jpAAt5ZAALeWYAC3loAAt5agALeW0AC3luAAt5bwALeXAAC3lxAAt5cwALeXUAC3l2AAt5dwALeXkAC3l6AAt59QALefcAC3n6AAt5/AALef8AC3oAAAt6AQALegIAC3oDAAt6BQALegcAC3oIAAt6CQALegsAC3oMAAt6JQALeiYAC3onAAt6KQALeqQAC3qmAAt6qAALeqoAC3qtAAt6rgALeq8AC3qwAAt6sQALerMAC3q1AAt6tgALercAC3q5AAt6ugALezUAC3s3AAt7OQALezsAC3s+AAt7PwALe0AAC3tBAAt7QgALe0QAC3tGAAt7RwALe0gAC3tKAAt7SwALe8YAC3vIAAt7ygALe8wAC3vPAAt70AALe9EAC3vSAAt70wALe9UAC3vXAAt72AALe9kAC3vbAAt73AALfFcAC3xZAAt8WwALfF0AC3xgAAt8YQALfGIAC3xjAAt8ZAALfGYAC3xoAAt8aQALfGoAC3xsAAt8bQALfOgAC3zqAAt87AALfO4AC3zxAAt88gALfPMAC3z0AAt89QALfPcAC3z5AAt8+gALfPsAC3z9AAt8/gALfUcAC31rAAt9kgALfbYAC325AAt9uwALfb0AC32/AAt9wQALfcMAC33EAAt9xwALfeAAC339AAt9/wALfgEAC34DAAt+BQALfgcAC34JAAt+CwALfigAC34rAAt+LgALfjEAC340AAt+NwALfjoAC349AAt+PwALfroAC368AAt+vwALfsEAC37EAAt+xQALfsYAC37HAAt+yAALfsoAC37MAAt+zQALfs4AC37QAAt+0QALf0wAC39OAAt/UAALf1IAC39VAAt/VgALf1cAC39YAAt/WQALf1sAC39dAAt/XgALf18AC39hAAt/YgALf90AC3/fAAt/4QALf+MAC3/mAAt/5wALf+gAC3/pAAt/6gALf+wAC3/uAAt/7wALf/AAC3/yAAt/8wALgG4AC4BwAAuAcwALgHUAC4B4AAuAeQALgHoAC4B7AAuAfAALgH4AC4CAAAuAgQALgIIAC4CEAAuAhQALgQAAC4ECAAuBBAALgQYAC4EJAAuBCgALgQsAC4EMAAuBDQALgQ8AC4ERAAuBEgALgRMAC4EVAAuBFgALgZEAC4GTAAuBlQALgZcAC4GaAAuBmwALgZwAC4GdAAuBngALgaAAC4GiAAuBowALgaQAC4GmAAuBpwALgiIAC4IkAAuCJgALgigAC4IrAAuCLAALgi0AC4IuAAuCLwALgjEAC4IzAAuCNAALgjUAC4I3AAuCOAALgkkAC4JKAAuCTAALgscAC4LJAAuCywALgs0AC4LQAAuC0QALgtIAC4LTAAuC1AALgtYAC4LZAAuC2gALgtsAC4LdAAuC3gALg1kAC4NbAAuDXQALg18AC4NiAAuDYwALg2QAC4NlAAuDZgALg2gAC4NrAAuDbAALg20AC4NvAAuDcAALg+sAC4PtAAuD8AALg/IAC4P1AAuD9gALg/cAC4P4AAuD+QALg/sAC4P+AAuD/wALhAAAC4QCAAuEAwALhJYAC4S5AAuE2QALhPkAC4T7AAuE/QALhP8AC4UBAAuFBAALhQUAC4UGAAuFCQALhQoAC4UMAAuFDQALhQ8AC4USAAuFEwALhRQAC4UXAAuFGAALhR0AC4U2AAuFPwALhUEAC4VDAAuFTAALhU8AC4VSAAuFVAALhZ0AC4XBAAuF6AALhgwAC4YPAAuGEQALhhMAC4YVAAuGFwALhhkAC4YaAAuGHQALhjYAC4ZXAAuGWQALhlsAC4ZdAAuGXwALhmEAC4ZjAAuGZQALhmcAC4aIAAuGiwALho4AC4aRAAuGlAALhpcAC4aaAAuGnQALhqAAC4aiAAuHHQALhx8AC4chAAuHIwALhyYAC4cnAAuHKAALhykAC4cqAAuHLAALhy4AC4cvAAuHMAALhzIAC4czAAuHrgALh7AAC4eyAAuHtAALh7cAC4e4AAuHuQALh7oAC4e7AAuHvQALh78AC4fAAAuHwQALh8MAC4fEAAuIPwALiEEAC4hEAAuIRgALiEkAC4hKAAuISwALiEwAC4hNAAuITwALiFEAC4hSAAuIUwALiFUAC4hWAAuIbwALiHAAC4hxAAuIcwALiO4AC4jwAAuI8gALiPQAC4j3AAuI+AALiPkAC4j6AAuI+wALiP0AC4j/AAuJAAALiQEAC4kDAAuJBAALiX8AC4mBAAuJgwALiYUAC4mIAAuJiQALiYoAC4mLAAuJjAALiY4AC4mQAAuJkQALiZIAC4mUAAuJlQALihAAC4oSAAuKFAALihYAC4oZAAuKGgALihsAC4ocAAuKHQALih8AC4ohAAuKIgALiiMAC4olAAuKJgALiqEAC4qjAAuKpQALiqcAC4qqAAuKqwALiqwAC4qtAAuKrgALirAAC4qyAAuKswALirQAC4q2AAuKtwALizIAC4s0AAuLNgALizgAC4s7AAuLPAALiz0AC4s+AAuLPwALi0EAC4tDAAuLRAALi0UAC4tHAAuLSAALi5EAC4u1AAuL3AALjAAAC4wDAAuMBQALjAcAC4wJAAuMCwALjA0AC4wOAAuMEQALjCoAC4xHAAuMSQALjEsAC4xNAAuMTwALjFEAC4xTAAuMVQALjHIAC4x1AAuMeAALjHsAC4x+AAuMgQALjIQAC4yHAAuMiQALjQQAC40GAAuNCAALjQoAC40NAAuNDgALjQ8AC40QAAuNEQALjRMAC40VAAuNFgALjRcAC40ZAAuNGgALjZUAC42XAAuNmQALjZsAC42eAAuNnwALjaAAC42hAAuNogALjaQAC42mAAuNpwALjagAC42qAAuNqwALjiYAC44oAAuOKgALjiwAC44vAAuOMAALjjEAC44yAAuOMwALjjUAC443AAuOOAALjjkAC447AAuOPAALjrcAC465AAuOvAALjr4AC47BAAuOwgALjsMAC47EAAuOxQALjscAC47JAAuOygALjssAC47NAAuOzgALj0kAC49LAAuPTQALj08AC49SAAuPUwALj1QAC49VAAuPVgALj1gAC49aAAuPWwALj1wAC49eAAuPXwALj9oAC4/cAAuP3gALj+AAC4/jAAuP5AALj+UAC4/mAAuP5wALj+kAC4/rAAuP7AALj+0AC4/vAAuP8AALkGsAC5BtAAuQbwALkHEAC5B0AAuQdQALkHYAC5B3AAuQeAALkHoAC5B8AAuQfQALkH4AC5CAAAuQgQALkJIAC5CTAAuQlQALkRgAC5E8AAuRYAALkYMAC5GqAAuRygALkfEAC5IYAAuSOAALklwAC5KAAAuSggALkoUAC5KHAAuSiQALkosAC5KOAAuSkQALkpMAC5KVAAuSmAALkpoAC5KcAAuSnwALkqIAC5KjAAuSqAALksEAC5LGAAuSyAALks0AC5LQAAuS0gALkxsAC5M/AAuTZgALk4oAC5ONAAuTjwALk5EAC5OTAAuTlQALk5cAC5OYAAuTmwALk7QAC5PZAAuT2wALk90AC5PfAAuT4QALk+MAC5PlAAuT5wALk+kAC5PrAAuUEAALlBMAC5QWAAuUGQALlBwAC5QfAAuUIgALlCUAC5QoAAuUKwALlC0AC5SoAAuUqgALlK0AC5SvAAuUsgALlLMAC5S0AAuUtQALlLYAC5S4AAuUugALlLsAC5S8AAuUvgALlL8AC5TQAAuU0QALlNMAC5VOAAuVUAALlVIAC5VUAAuVVwALlVgAC5VZAAuVWgALlVsAC5VdAAuVXwALlWAAC5VhAAuVYwALlWQAC5XfAAuV4QALleQAC5XmAAuV6QALleoAC5XrAAuV7AALle0AC5XvAAuV8QALlfIAC5XzAAuV9QALlfYAC5YHAAuWCAALlgoAC5aFAAuWhwALlokAC5aLAAuWjgALlo8AC5aQAAuWkQALlpIAC5aUAAuWlgALlpcAC5aYAAuWmgALlpsAC5cWAAuXGAALlxsAC5cdAAuXIAALlyEAC5ciAAuXIwALlyQAC5cmAAuXKAALlykAC5cqAAuXLAALly0AC5c+AAuXPwALl0EAC5e8AAuXvgALl8AAC5fCAAuXxQALl8YAC5fHAAuXyAALl8kAC5fLAAuXzQALl84AC5fPAAuX0QALl9IAC5hNAAuYTwALmFIAC5hUAAuYVwALmFgAC5hZAAuYWgALmFsAC5hdAAuYXwALmGAAC5hhAAuYYwALmGQAC5h9AAuYfgALmH8AC5iBAAuY/AALmP4AC5kAAAuZAgALmQUAC5kGAAuZBwALmQgAC5kJAAuZCwALmQ0AC5kOAAuZDwALmREAC5kSAAuZjQALmY8AC5mSAAuZlAALmZcAC5mYAAuZmQALmZoAC5mbAAuZnQALmZ8AC5mgAAuZoQALmaMAC5mkAAuZvQALmdYAC5nXAAuZ2AALmdoAC5nrAAuZ8AALmfMAC5n1AAuaLgALmjEAC5ozAAuaNgALmjkAC5o8AAuaPwALmkQAC5rnAAubCwALmy8AC5tPAAubdgALm50AC5u9AAub5AALnAgAC5wrAAucUgALnHYAC5yaAAucvgALnOUAC5zmAAuc6AALnOoAC5ztAAuc7wALnPIAC5z0AAuc9gALnPkAC5z7AAuc/QALnQAAC50DAAudBQALnQcAC50JAAudDAALnQ8AC50SAAudGwALnTQAC505AAudOwALnUAAC51DAAudRQALnY4AC52yAAud2QALnf0AC54AAAueAgALngQAC54GAAueCAALngoAC54LAAueDgALnicAC55MAAueTgALnlAAC55SAAueVAALnlYAC55YAAueWgALnlwAC55eAAuegwALnoYAC56JAAuejAALno8AC56SAAuelQALnpgAC56bAAuengALnqAAC58bAAufHQALnyAAC58iAAufJQALnyYAC58nAAufKAALnykAC58rAAufLQALny4AC58vAAufMQALnzIAC59DAAufRAALn0YAC5/BAAufwwALn8UAC5/HAAufygALn8sAC5/MAAufzQALn84AC5/QAAuf0gALn9MAC5/UAAuf1gALn9cAC6BSAAugVAALoFcAC6BZAAugXAALoF0AC6BeAAugXwALoGAAC6BiAAugZAALoGUAC6BmAAugaAALoGkAC6B6AAugewALoH0AC6D4AAug+gALoPwAC6D+AAuhAQALoQIAC6EDAAuhBAALoQUAC6EHAAuhCQALoQoAC6ELAAuhDQALoQ4AC6GJAAuhiwALoY4AC6GQAAuhkwALoZQAC6GVAAuhlgALoZcAC6GZAAuhmwALoZwAC6GdAAuhnwALoaAAC6GxAAuhsgALobQAC6IvAAuiMQALojMAC6I1AAuiOAALojkAC6I6AAuiOwALojwAC6I+AAuiQAALokEAC6JCAAuiRAALokUAC6LAAAuiwgALosUAC6LHAAuiygALossAC6LMAAuizQALos4AC6LQAAui0gALotMAC6LUAAui1gALotcAC6LwAAui8QALovIAC6L0AAujbwALo3EAC6NzAAujdQALo3gAC6N5AAujegALo3sAC6N8AAujfgALo4AAC6OBAAujggALo4QAC6OFAAukAAALpAIAC6QFAAukBwALpAoAC6QLAAukDAALpA0AC6QOAAukEAALpBIAC6QTAAukFAALpBYAC6QXAAukJgALpD8AC6RMAAukTwALpFIAC6RVAAukYgALpGUAC6RoAAukawALpG0AC6SEAAuklwALpKAAC6UzAAulVgALpXYAC6WWAAulmAALpZoAC6WcAAulngALpaEAC6WiAAulowALpaYAC6WnAAulqQALpaoAC6WsAAulrwALpbAAC6WxAAultAALpbUAC6W6AAul0wALpdwAC6XeAAul4AALpekAC6XsAAul7wALpfEAC6Y6AAumXgALpoUAC6apAAumrAALpq4AC6awAAumsgALprQAC6a2AAumtwALproAC6bTAAum9AALpvYAC6b4AAum+gALpvwAC6b+AAunAAALpwIAC6cEAAunJQALpygAC6crAAunLgALpzEAC6c0AAunNwALpzoAC6c9AAunPwALp7oAC6e8AAunvgALp8AAC6fDAAunxAALp8UAC6fGAAunxwALp8kAC6fLAAunzAALp80AC6fPAAun0AALqEsAC6hNAAuoTwALqFEAC6hUAAuoVQALqFYAC6hXAAuoWAALqFoAC6hcAAuoXQALqF4AC6hgAAuoYQALqNwAC6jeAAuo4QALqOMAC6jmAAuo5wALqOgAC6jpAAuo6gALqOwAC6juAAuo7wALqPAAC6jyAAuo8wALqQwAC6kNAAupDgALqRAAC6mLAAupjQALqY8AC6mRAAuplAALqZUAC6mWAAuplwALqZgAC6maAAupnAALqZ0AC6meAAupoAALqaEAC6ocAAuqHgALqiAAC6oiAAuqJQALqiYAC6onAAuqKAALqikAC6orAAuqLQALqi4AC6ovAAuqMQALqjIAC6qtAAuqrwALqrEAC6qzAAuqtgALqrcAC6q4AAuquQALqroAC6q8AAuqvgALqr8AC6rAAAuqwgALqsMAC6s+AAurQAALq0IAC6tEAAurRwALq0gAC6tJAAurSgALq0sAC6tNAAurTwALq1AAC6tRAAurUwALq1QAC6vPAAur0QALq9MAC6vVAAur2AALq9kAC6vaAAur2wALq9wAC6veAAur4AALq+EAC6viAAur5AALq+UAC6wuAAusUgALrHkAC6ydAAusoAALrKIAC6ykAAuspgALrKgAC6yqAAusqwALrK4AC6zHAAus5AALrOYAC6zoAAus6gALrOwAC6zuAAus8AALrPIAC60PAAutEgALrRUAC60YAAutGwALrR4AC60hAAutJAALrSYAC62hAAutowALraUAC62nAAutqgALrasAC62sAAutrQALra4AC62wAAutsgALrbMAC620AAuttgALrbcAC64yAAuuNAALrjYAC644AAuuOwALrjwAC649AAuuPgALrj8AC65BAAuuQwALrkQAC65FAAuuRwALrkgAC67DAAuuxQALrscAC67JAAuuzAALrs0AC67OAAuuzwALrtAAC67SAAuu1AALrtUAC67WAAuu2AALrtkAC69UAAuvVgALr1kAC69bAAuvXgALr18AC69gAAuvYQALr2IAC69kAAuvZgALr2cAC69oAAuvagALr2sAC6/mAAuv6AALr+oAC6/sAAuv7wALr/AAC6/xAAuv8gALr/MAC6/1AAuv9wALr/gAC6/5AAuv+wALr/wAC7B3AAuweQALsHsAC7B9AAuwgAALsIEAC7CCAAuwgwALsIQAC7CGAAuwiAALsIkAC7CKAAuwjAALsI0AC7EIAAuxCgALsQwAC7EOAAuxEQALsRIAC7ETAAuxFAALsRUAC7EXAAuxGQALsRoAC7EbAAuxHQALsR4AC7GxAAux1AALsfQAC7IUAAuyFgALshgAC7IaAAuyHAALsh8AC7IgAAuyIQALsiQAC7IlAAuyJwALsigAC7IqAAuyLQALsi4AC7IvAAuyMgALsjMAC7I4AAuyUQALsloAC7JcAAuyXgALsmcAC7JqAAuybQALsm8AC7K4AAuy3AALswMAC7MnAAuzKgALsywAC7MuAAuzMAALszIAC7M0AAuzNQALszgAC7NRAAuzcgALs3QAC7N2AAuzeAALs3oAC7N8AAuzfgALs4AAC7OCAAuzowALs6YAC7OpAAuzrAALs68AC7OyAAuztQALs7gAC7O7AAuzvQALtDgAC7Q6AAu0PAALtD4AC7RBAAu0QgALtEMAC7REAAu0RQALtEcAC7RJAAu0SgALtEsAC7RNAAu0TgALtMkAC7TLAAu0zQALtM8AC7TSAAu00wALtNQAC7TVAAu01gALtNgAC7TaAAu02wALtNwAC7TeAAu03wALtVoAC7VcAAu1XwALtWEAC7VkAAu1ZQALtWYAC7VnAAu1aAALtWoAC7VsAAu1bQALtW4AC7VwAAu1cQALtYoAC7WLAAu1jAALtY4AC7YJAAu2CwALtg0AC7YPAAu2EgALthMAC7YUAAu2FQALthYAC7YYAAu2GgALthsAC7YcAAu2HgALth8AC7aaAAu2nAALtp4AC7agAAu2owALtqQAC7alAAu2pgALtqcAC7apAAu2qwALtqwAC7atAAu2rwALtrAAC7crAAu3LQALty8AC7cxAAu3NAALtzUAC7c2AAu3NwALtzgAC7c6AAu3PAALtz0AC7c+AAu3QAALt0EAC7e8AAu3vgALt8AAC7fCAAu3xQALt8YAC7fHAAu3yAALt8kAC7fLAAu3zQALt84AC7fPAAu30QALt9IAC7hNAAu4TwALuFEAC7hTAAu4VgALuFcAC7hYAAu4WQALuFoAC7hcAAu4XgALuF8AC7hgAAu4YgALuGMAC7isAAu40AALuPcAC7kbAAu5HgALuSAAC7kiAAu5JAALuSYAC7koAAu5KQALuSwAC7lFAAu5YgALuWQAC7lmAAu5aAALuWoAC7lsAAu5bgALuXAAC7mNAAu5kAALuZMAC7mWAAu5mQALuZwAC7mfAAu5ogALuaQAC7ofAAu6IQALuiMAC7olAAu6KAALuikAC7oqAAu6KwALuiwAC7ouAAu6MAALujEAC7oyAAu6NAALujUAC7qwAAu6sgALurQAC7q2AAu6uQALuroAC7q7AAu6vAALur0AC7q/AAu6wQALusIAC7rDAAu6xQALusYAC7tBAAu7QwALu0UAC7tHAAu7SgALu0sAC7tMAAu7TQALu04AC7tQAAu7UgALu1MAC7tUAAu7VgALu1cAC7vSAAu71AALu9cAC7vZAAu73AALu90AC7veAAu73wALu+AAC7viAAu75AALu+UAC7vmAAu76AALu+kAC7xkAAu8ZgALvGgAC7xqAAu8bQALvG4AC7xvAAu8cAALvHEAC7xzAAu8dQALvHYAC7x3AAu8eQALvHoAC7z1AAu89wALvPkAC7z7AAu8/gALvP8AC70AAAu9AQALvQIAC70EAAu9BgALvQcAC70IAAu9CgALvQsAC72GAAu9iAALvYoAC72MAAu9jwALvZAAC72RAAu9kgALvZMAC72VAAu9lwALvZgAC72ZAAu9mwALvZwAC74vAAu+UgALvnIAC76SAAu+lAALvpYAC76YAAu+mgALvp0AC76eAAu+nwALvqIAC76jAAu+pQALvqYAC76oAAu+qwALvqwAC76tAAu+sAALvrEAC762AAu+zwALvtgAC77aAAu+3AALvuUAC77oAAu+6wALvu0AC782AAu/WgALv4EAC7+lAAu/qAALv6oAC7+sAAu/rgALv7AAC7+yAAu/swALv7YAC7/PAAu/8AALv/IAC7/0AAu/9gALv/gAC7/6AAu//AALv/4AC8AAAAvAIQALwCQAC8AnAAvAKgALwC0AC8AwAAvAMwALwDYAC8A5AAvAOwALwLYAC8C4AAvAugALwLwAC8C/AAvAwAALwMEAC8DCAAvAwwALwMUAC8DHAAvAyAALwMkAC8DLAAvAzAALwUcAC8FJAAvBSwALwU0AC8FQAAvBUQALwVIAC8FTAAvBVAALwVYAC8FYAAvBWQALwVoAC8FcAAvBXQALwdgAC8HaAAvB3QALwd8AC8HiAAvB4wALweQAC8HlAAvB5gALwegAC8HqAAvB6wALwewAC8HuAAvB7wALwggAC8IJAAvCCgALwgwAC8KHAAvCiQALwosAC8KNAAvCkAALwpEAC8KSAAvCkwALwpQAC8KWAAvCmAALwpkAC8KaAAvCnAALwp0AC8MYAAvDGgALwxwAC8MeAAvDIQALwyIAC8MjAAvDJAALwyUAC8MnAAvDKQALwyoAC8MrAAvDLQALwy4AC8OpAAvDqwALw60AC8OvAAvDsgALw7MAC8O0AAvDtQALw7YAC8O4AAvDugALw7sAC8O8AAvDvgALw78AC8Q6AAvEPAALxD4AC8RAAAvEQwALxEQAC8RFAAvERgALxEcAC8RJAAvESwALxEwAC8RNAAvETwALxFAAC8TLAAvEzQALxM8AC8TRAAvE1AALxNUAC8TWAAvE1wALxNgAC8TaAAvE3AALxN0AC8TeAAvE4AALxOEAC8UqAAvFTgALxXUAC8WZAAvFnAALxZ4AC8WgAAvFogALxaQAC8WmAAvFpwALxaoAC8XDAAvF4AALxeIAC8XkAAvF5gALxegAC8XqAAvF7AALxe4AC8YLAAvGDgALxhEAC8YUAAvGFwALxhoAC8YdAAvGIAALxiIAC8adAAvGnwALxqEAC8ajAAvGpgALxqcAC8aoAAvGqQALxqoAC8asAAvGrgALxq8AC8awAAvGsgALxrMAC8cuAAvHMAALxzIAC8c0AAvHNwALxzgAC8c5AAvHOgALxzsAC8c9AAvHPwALx0AAC8dBAAvHQwALx0QAC8e/AAvHwQALx8MAC8fFAAvHyAALx8kAC8fKAAvHywALx8wAC8fOAAvH0AALx9EAC8fSAAvH1AALx9UAC8hQAAvIUgALyFUAC8hXAAvIWgALyFsAC8hcAAvIXQALyF4AC8hgAAvIYgALyGMAC8hkAAvIZgALyGcAC8jiAAvI5AALyOYAC8joAAvI6wALyOwAC8jtAAvI7gALyO8AC8jxAAvI8wALyPQAC8j1AAvI9wALyPgAC8lzAAvJdQALyXcAC8l5AAvJfAALyX0AC8l+AAvJfwALyYAAC8mCAAvJhAALyYUAC8mGAAvJiAALyYkAC8oEAAvKBgALyggAC8oKAAvKDQALyg4AC8oPAAvKEAALyhEAC8oTAAvKFQALyhYAC8oXAAvKGQALyhoAC8orAAvKLAALyi4AC8o/AAvKTAALyk8AC8pSAAvKVQALylcAC8qQAAvKkwALypUAC8qYAAvKmwALyp4AC8qhAAvLJAALy0gAC8tsAAvLjwALy7YAC8vWAAvL/QALzCQAC8xEAAvMaAALzIwAC8yOAAvMkQALzJMAC8yVAAvMlwALzJoAC8ydAAvMnwALzKEAC8ykAAvMpgALzKgAC8yrAAvMrgALzK8AC8y0AAvMzQALzNIAC8zUAAvM2QALzNwAC8zeAAvNJwALzUsAC81yAAvNlgALzZkAC82bAAvNnQALzZ8AC82hAAvNowALzaQAC82nAAvNwAALzeUAC83nAAvN6QALzesAC83tAAvN7wALzfEAC83zAAvN9QALzfcAC84cAAvOHwALziIAC84lAAvOKAALzisAC84uAAvOMQALzjQAC843AAvOOQALzrQAC862AAvOuQALzrsAC86+AAvOvwALzsAAC87BAAvOwgALzsQAC87GAAvOxwALzsgAC87KAAvOywALztwAC87dAAvO3wALz1oAC89cAAvPXgALz2AAC89jAAvPZAALz2UAC89mAAvPZwALz2kAC89rAAvPbAALz20AC89vAAvPcAALz+sAC8/tAAvP8AALz/IAC8/1AAvP9gALz/cAC8/4AAvP+QALz/sAC8/9AAvP/gALz/8AC9ABAAvQAgAL0BMAC9AUAAvQFgAL0JEAC9CTAAvQlQAL0JcAC9CaAAvQmwAL0JwAC9CdAAvQngAL0KAAC9CiAAvQowAL0KQAC9CmAAvQpwAL0SIAC9EkAAvRJwAL0SkAC9EsAAvRLQAL0S4AC9EvAAvRMAAL0TIAC9E0AAvRNQAL0TYAC9E4AAvROQAL0UoAC9FLAAvRTQAL0cgAC9HKAAvRzAAL0c4AC9HRAAvR0gAL0dMAC9HUAAvR1QAL0dcAC9HZAAvR2gAL0dsAC9HdAAvR3gAL0lkAC9JbAAvSXgAL0mAAC9JjAAvSZAAL0mUAC9JmAAvSZwAL0mkAC9JrAAvSbAAL0m0AC9JvAAvScAAL0okAC9KKAAvSiwAL0o0AC9MIAAvTCgAL0wwAC9MOAAvTEQAL0xIAC9MTAAvTFAAL0xUAC9MXAAvTGQAL0xoAC9MbAAvTHQAL0x4AC9OZAAvTmwAL054AC9OgAAvTowAL06QAC9OlAAvTpgAL06cAC9OpAAvTqwAL06wAC9OtAAvTrwAL07AAC9PGAAvT3wAL0+QAC9PnAAvT7AAL0+8AC9PxAAvT/QAL1JAAC9SzAAvU0wAL1PMAC9T1AAvU9wAL1PkAC9T7AAvU/gAL1P8AC9UAAAvVAwAL1QQAC9UGAAvVBwAL1QkAC9UMAAvVDQAL1Q4AC9URAAvVEgAL1RcAC9UwAAvVOQAL1TsAC9U9AAvVRgAL1UkAC9VMAAvVTgAL1ZcAC9W7AAvV4gAL1gYAC9YJAAvWCwAL1g0AC9YPAAvWEQAL1hMAC9YUAAvWFwAL1jAAC9ZRAAvWUwAL1lUAC9ZXAAvWWQAL1lsAC9ZdAAvWXwAL1mEAC9aCAAvWhQAL1ogAC9aLAAvWjgAL1pEAC9aUAAvWlwAL1poAC9acAAvXFwAL1xkAC9cbAAvXHQAL1yAAC9chAAvXIgAL1yMAC9ckAAvXJgAL1ygAC9cpAAvXKgAL1ywAC9ctAAvXqAAL16oAC9esAAvXrgAL17EAC9eyAAvXswAL17QAC9e1AAvXtwAL17kAC9e6AAvXuwAL170AC9e+AAvYOQAL2DsAC9g+AAvYQAAL2EMAC9hEAAvYRQAL2EYAC9hHAAvYSQAL2EsAC9hMAAvYTQAL2E8AC9hQAAvYaQAL2GoAC9hrAAvYbQAL2OgAC9jqAAvY7AAL2O4AC9jxAAvY8gAL2PMAC9j0AAvY9QAL2PcAC9j5AAvY+gAL2PsAC9j9AAvY/gAL2XkAC9l7AAvZfQAL2X8AC9mCAAvZgwAL2YQAC9mFAAvZhgAL2YgAC9mKAAvZiwAL2YwAC9mOAAvZjwAL2goAC9oMAAvaDgAL2hAAC9oTAAvaFAAL2hUAC9oWAAvaFwAL2hkAC9obAAvaHAAL2h0AC9ofAAvaIAAL2psAC9qdAAvanwAL2qEAC9qkAAvapQAL2qYAC9qnAAvaqAAL2qoAC9qsAAvarQAL2q4AC9qwAAvasQAL2ywAC9suAAvbMAAL2zIAC9s1AAvbNgAL2zcAC9s4AAvbOQAL2zsAC9s9AAvbPgAL2z8AC9tBAAvbQgAL24sAC9uvAAvb1gAL2/oAC9v9AAvb/wAL3AEAC9wDAAvcBQAL3AcAC9wIAAvcCwAL3CQAC9xBAAvcQwAL3EUAC9xHAAvcSQAL3EsAC9xNAAvcTwAL3GwAC9xvAAvccgAL3HUAC9x4AAvcewAL3H4AC9yBAAvcgwAL3P4AC90AAAvdAgAL3QQAC90HAAvdCAAL3QkAC90KAAvdCwAL3Q0AC90PAAvdEAAL3REAC90TAAvdFAAL3Y8AC92RAAvdkwAL3ZUAC92YAAvdmQAL3ZoAC92bAAvdnAAL3Z4AC92gAAvdoQAL3aIAC92kAAvdpQAL3iAAC94iAAveJAAL3iYAC94pAAveKgAL3isAC94sAAveLQAL3i8AC94xAAveMgAL3jMAC941AAveNgAL3rEAC96zAAvetgAL3rgAC967AAvevAAL3r0AC96+AAvevwAL3sEAC97DAAvexAAL3sUAC97HAAveyAAL30MAC99FAAvfRwAL30kAC99MAAvfTQAL304AC99PAAvfUAAL31IAC99UAAvfVQAL31YAC99YAAvfWQAL39QAC9/WAAvf2AAL39oAC9/dAAvf3gAL398AC9/gAAvf4QAL3+MAC9/lAAvf5gAL3+cAC9/pAAvf6gAL4GUAC+BnAAvgaQAL4GsAC+BuAAvgbwAL4HAAC+BxAAvgcgAL4HQAC+B2AAvgdwAL4HgAC+B6AAvgewAL4IwAC+CRAAvglAAL4JYAC+CbAAvg1AAL4NcAC+DZAAvg3AAL4N8AC+DiAAvg5QAL4WgAC+GMAAvhsAAL4dMAC+H6AAviGgAL4kEAC+JoAAviiAAL4qwAC+LQAAvi0gAL4tUAC+LXAAvi2QAL4tsAC+LeAAvi4QAL4uMAC+LlAAvi6AAL4uoAC+LsAAvi7wAL4vIAC+LzAAvi+AAL4xEAC+MWAAvjGAAL4x0AC+MgAAvjIgAL42sAC+OPAAvjtgAL49oAC+PdAAvj3wAL4+EAC+PjAAvj5QAL4+cAC+PoAAvj6wAL5AQAC+QpAAvkKwAL5C0AC+QvAAvkMQAL5DMAC+Q1AAvkNwAL5DkAC+Q7AAvkYAAL5GMAC+RmAAvkaQAL5GwAC+RvAAvkcgAL5HUAC+R4AAvkewAL5H0AC+T4AAvk+gAL5P0AC+T/AAvlAgAL5QMAC+UEAAvlBQAL5QYAC+UIAAvlCgAL5QsAC+UMAAvlDgAL5Q8AC+UgAAvlIQAL5SMAC+WeAAvloAAL5aIAC+WkAAvlpwAL5agAC+WpAAvlqgAL5asAC+WtAAvlrwAL5bAAC+WxAAvlswAL5bQAC+YvAAvmMQAL5jQAC+Y2AAvmOQAL5joAC+Y7AAvmPAAL5j0AC+Y/AAvmQQAL5kIAC+ZDAAvmRQAL5kYAC+ZXAAvmWAAL5loAC+bVAAvm1wAL5tkAC+bbAAvm3gAL5t8AC+bgAAvm4QAL5uIAC+bkAAvm5gAL5ucAC+boAAvm6gAL5usAC+dmAAvnaAAL52sAC+dtAAvncAAL53EAC+dyAAvncwAL53QAC+d2AAvneAAL53kAC+d6AAvnfAAL530AC+eOAAvnjwAL55EAC+gMAAvoDgAL6BAAC+gSAAvoFQAL6BYAC+gXAAvoGAAL6BkAC+gbAAvoHQAL6B4AC+gfAAvoIQAL6CIAC+idAAvonwAL6KIAC+ikAAvopwAL6KgAC+ipAAvoqgAL6KsAC+itAAvorwAL6LAAC+ixAAvoswAL6LQAC+jNAAvozgAL6M8AC+jRAAvpTAAL6U4AC+lQAAvpUgAL6VUAC+lWAAvpVwAL6VgAC+lZAAvpWwAL6V0AC+leAAvpXwAL6WEAC+liAAvp3QAL6d8AC+niAAvp5AAL6ecAC+noAAvp6QAL6eoAC+nrAAvp7QAL6e8AC+nwAAvp8QAL6fMAC+n0AAvqDAAL6iUAC+oyAAvqNQAL6jgAC+o7AAvqSAAL6ksAC+pOAAvqUQAL6lMAC+pfAAvqawAL6ngAC+sLAAvrLgAL604AC+tuAAvrcAAL63IAC+t0AAvrdgAL63kAC+t6AAvrewAL634AC+t/AAvrgQAL64IAC+uEAAvrhwAL64gAC+uJAAvrjAAL640AC+uSAAvrqwAL67QAC+u2AAvruAAL68EAC+vEAAvrxwAL68kAC+wSAAvsNgAL7F0AC+yBAAvshAAL7IYAC+yIAAvsigAL7IwAC+yOAAvsjwAL7JIAC+yrAAvszAAL7M4AC+zQAAvs0gAL7NQAC+zWAAvs2AAL7NoAC+zcAAvs/QAL7QAAC+0DAAvtBgAL7QkAC+0MAAvtDwAL7RIAC+0VAAvtFwAL7ZIAC+2UAAvtlgAL7ZgAC+2bAAvtnAAL7Z0AC+2eAAvtnwAL7aEAC+2jAAvtpAAL7aUAC+2nAAvtqAAL7iMAC+4lAAvuJwAL7ikAC+4sAAvuLQAL7i4AC+4vAAvuMAAL7jIAC+40AAvuNQAL7jYAC+44AAvuOQAL7rQAC+62AAvuuQAL7rsAC+6+AAvuvwAL7sAAC+7BAAvuwgAL7sQAC+7GAAvuxwAL7sgAC+7KAAvuywAL7uQAC+7lAAvu5gAL7ugAC+9jAAvvZQAL72cAC+9pAAvvbAAL720AC+9uAAvvbwAL73AAC+9yAAvvdAAL73UAC+92AAvveAAL73kAC+/0AAvv9gAL7/gAC+/6AAvv/QAL7/4AC+//AAvwAAAL8AEAC/ADAAvwBQAL8AYAC/AHAAvwCQAL8AoAC/CFAAvwhwAL8IkAC/CLAAvwjgAL8I8AC/CQAAvwkQAL8JIAC/CUAAvwlgAL8JcAC/CYAAvwmgAL8JsAC/EWAAvxGAAL8RoAC/EcAAvxHwAL8SAAC/EhAAvxIgAL8SMAC/ElAAvxJwAL8SgAC/EpAAvxKwAL8SwAC/GnAAvxqQAL8asAC/GtAAvxsAAL8bEAC/GyAAvxswAL8bQAC/G2AAvxuAAL8bkAC/G6AAvxvAAL8b0AC/IGAAvyKgAL8lEAC/J1AAvyeAAL8noAC/J8AAvyfgAL8oAAC/KCAAvygwAL8oYAC/KfAAvyvAAL8r4AC/LAAAvywgAL8sQAC/LGAAvyyAAL8soAC/LnAAvy6gAL8u0AC/LwAAvy8wAL8vYAC/L5AAvy/AAL8v4AC/N5AAvzewAL830AC/N/AAvzggAL84MAC/OEAAvzhQAL84YAC/OIAAvzigAL84sAC/OMAAvzjgAL848AC/QKAAv0DAAL9A4AC/QQAAv0EwAL9BQAC/QVAAv0FgAL9BcAC/QZAAv0GwAL9BwAC/QdAAv0HwAL9CAAC/SbAAv0nQAL9J8AC/ShAAv0pAAL9KUAC/SmAAv0pwAL9KgAC/SqAAv0rAAL9K0AC/SuAAv0sAAL9LEAC/UsAAv1LgAL9TEAC/UzAAv1NgAL9TcAC/U4AAv1OQAL9ToAC/U8AAv1PgAL9T8AC/VAAAv1QgAL9UMAC/W+AAv1wAAL9cIAC/XEAAv1xwAL9cgAC/XJAAv1ygAL9csAC/XNAAv1zwAL9dAAC/XRAAv10wAL9dQAC/ZPAAv2UQAL9lMAC/ZVAAv2WAAL9lkAC/ZaAAv2WwAL9lwAC/ZeAAv2YAAL9mEAC/ZiAAv2ZAAL9mUAC/bgAAv24gAL9uQAC/bmAAv26QAL9uoAC/brAAv27AAL9u0AC/bvAAv28QAL9vIAC/bzAAv29QAL9vYAC/eJAAv3rAAL98wAC/fsAAv37gAL9/AAC/fyAAv39AAL9/cAC/f4AAv3+QAL9/wAC/f9AAv3/wAL+AAAC/gCAAv4BQAL+AYAC/gHAAv4CgAL+AsAC/gQAAv4KQAL+DIAC/g0AAv4NgAL+D8AC/hCAAv4RQAL+EcAC/iQAAv4tAAL+NsAC/j/AAv5AgAL+QQAC/kGAAv5CAAL+QoAC/kMAAv5DQAL+RAAC/kpAAv5SgAL+UwAC/lOAAv5UAAL+VIAC/lUAAv5VgAL+VgAC/laAAv5ewAL+X4AC/mBAAv5hAAL+YcAC/mKAAv5jQAL+ZAAC/mTAAv5lQAL+hAAC/oSAAv6FAAL+hYAC/oZAAv6GgAL+hsAC/ocAAv6HQAL+h8AC/ohAAv6IgAL+iMAC/olAAv6JgAL+qEAC/qjAAv6pQAL+qcAC/qqAAv6qwAL+qwAC/qtAAv6rgAL+rAAC/qyAAv6swAL+rQAC/q2AAv6twAL+zIAC/s0AAv7NwAL+zkAC/s8AAv7PQAL+z4AC/s/AAv7QAAL+0IAC/tEAAv7RQAL+0YAC/tIAAv7SQAL+2IAC/tjAAv7ZAAL+2YAC/vhAAv74wAL++UAC/vnAAv76gAL++sAC/vsAAv77QAL++4AC/vwAAv78gAL+/MAC/v0AAv79gAL+/cAC/xyAAv8dAAL/HYAC/x4AAv8ewAL/HwAC/x9AAv8fgAL/H8AC/yBAAv8gwAL/IQAC/yFAAv8hwAL/IgAC/0DAAv9BQAL/QcAC/0JAAv9DAAL/Q0AC/0OAAv9DwAL/RAAC/0SAAv9FAAL/RUAC/0WAAv9GAAL/RkAC/2UAAv9lgAL/ZgAC/2aAAv9nQAL/Z4AC/2fAAv9oAAL/aEAC/2jAAv9pQAL/aYAC/2nAAv9qQAL/aoAC/4lAAv+JwAL/ikAC/4rAAv+LgAL/i8AC/4wAAv+MQAL/jIAC/40AAv+NgAL/jcAC/44AAv+OgAL/jsAC/6EAAv+qAAL/s8AC/7zAAv+9gAL/vgAC/76AAv+/AAL/v4AC/8AAAv/AQAL/wQAC/8dAAv/OgAL/zwAC/8+AAv/QAAL/0IAC/9EAAv/RgAL/0gAC/9lAAv/aAAL/2sAC/9uAAv/cQAL/3QAC/93AAv/egAL/3wAC//3AAv/+QAL//sAC//9AAwAAAAMAAEADAACAAwAAwAMAAQADAAGAAwACAAMAAkADAAKAAwADAAMAA0ADACIAAwAigAMAIwADACOAAwAkQAMAJIADACTAAwAlAAMAJUADACXAAwAmQAMAJoADACbAAwAnQAMAJ4ADAEZAAwBGwAMAR0ADAEfAAwBIgAMASMADAEkAAwBJQAMASYADAEoAAwBKgAMASsADAEsAAwBLgAMAS8ADAGqAAwBrAAMAa4ADAGwAAwBswAMAbQADAG1AAwBtgAMAbcADAG5AAwBuwAMAbwADAG9AAwBvwAMAcAADAI7AAwCPQAMAj8ADAJBAAwCRAAMAkUADAJGAAwCRwAMAkgADAJKAAwCTAAMAk0ADAJOAAwCUAAMAlEADALMAAwCzgAMAtAADALSAAwC1QAMAtYADALXAAwC2AAMAtkADALbAAwC3QAMAt4ADALfAAwC4QAMAuIADANdAAwDXwAMA2EADANjAAwDZgAMA2cADANoAAwDaQAMA2oADANsAAwDbgAMA28ADANwAAwDcgAMA3MADAQGAAwEKQAMBEkADARpAAwEawAMBG0ADARvAAwEcQAMBHQADAR1AAwEdgAMBHkADAR6AAwEfAAMBH0ADAR/AAwEggAMBIMADASEAAwEhwAMBIgADASRAAwEqgAMBLMADAS1AAwEtwAMBMAADATDAAwExgAMBMgADAURAAwFNQAMBVwADAWAAAwFgwAMBYUADAWHAAwFiQAMBYsADAWNAAwFjgAMBZEADAWqAAwFywAMBc0ADAXPAAwF0QAMBdMADAXVAAwF1wAMBdkADAXbAAwF/AAMBf8ADAYCAAwGBQAMBggADAYLAAwGDgAMBhEADAYUAAwGFgAMBpEADAaTAAwGlQAMBpcADAaaAAwGmwAMBpwADAadAAwGngAMBqAADAaiAAwGowAMBqQADAamAAwGpwAMByIADAckAAwHJgAMBygADAcrAAwHLAAMBy0ADAcuAAwHLwAMBzEADAczAAwHNAAMBzUADAc3AAwHOAAMB7MADAe1AAwHuAAMB7oADAe9AAwHvgAMB78ADAfAAAwHwQAMB8MADAfFAAwHxgAMB8cADAfJAAwHygAMB+MADAfkAAwH5QAMB+cADAhiAAwIZAAMCGYADAhoAAwIawAMCGwADAhtAAwIbgAMCG8ADAhxAAwIcwAMCHQADAh1AAwIdwAMCHgADAjzAAwI9QAMCPcADAj5AAwI/AAMCP0ADAj+AAwI/wAMCQAADAkCAAwJBAAMCQUADAkGAAwJCAAMCQkADAmEAAwJhgAMCYgADAmKAAwJjQAMCY4ADAmPAAwJkAAMCZEADAmTAAwJlQAMCZYADAmXAAwJmQAMCZoADAoVAAwKFwAMChkADAobAAwKHgAMCh8ADAogAAwKIQAMCiIADAokAAwKJgAMCicADAooAAwKKgAMCisADAqmAAwKqAAMCqoADAqsAAwKrwAMCrAADAqxAAwKsgAMCrMADAq1AAwKtwAMCrgADAq5AAwKuwAMCrwADAsFAAwLKQAMC1AADAt0AAwLdwAMC3kADAt7AAwLfQAMC38ADAuBAAwLggAMC4UADAueAAwLuwAMC70ADAu/AAwLwQAMC8MADAvFAAwLxwAMC8kADAvmAAwL6QAMC+wADAvvAAwL8gAMC/UADAv4AAwL+wAMC/0ADAx4AAwMegAMDHwADAx+AAwMgQAMDIIADAyDAAwMhAAMDIUADAyHAAwMiQAMDIoADAyLAAwMjQAMDI4ADA0JAAwNCwAMDQ0ADA0PAAwNEgAMDRMADA0UAAwNFQAMDRYADA0YAAwNGgAMDRsADA0cAAwNHgAMDR8ADA2aAAwNnAAMDZ4ADA2gAAwNowAMDaQADA2lAAwNpgAMDacADA2pAAwNqwAMDawADA2tAAwNrwAMDbAADA4rAAwOLQAMDjAADA4yAAwONQAMDjYADA43AAwOOAAMDjkADA47AAwOPQAMDj4ADA4/AAwOQQAMDkIADA69AAwOvwAMDsEADA7DAAwOxgAMDscADA7IAAwOyQAMDsoADA7MAAwOzgAMDs8ADA7QAAwO0gAMDtMADA9OAAwPUAAMD1IADA9UAAwPVwAMD1gADA9ZAAwPWgAMD1sADA9dAAwPXwAMD2AADA9hAAwPYwAMD2QADA/fAAwP4QAMD+MADA/lAAwP6AAMD+kADA/qAAwP6wAMD+wADA/uAAwP8AAMD/EADA/yAAwP9AAMD/UADBAGAAwQCwAMEA4ADBAQAAwQGQAMEJwADBDAAAwQ5AAMEQcADBEuAAwRTgAMEXUADBGcAAwRvAAMEeAADBIEAAwSBgAMEgkADBILAAwSDQAMEg8ADBISAAwSFQAMEhcADBIZAAwSHAAMEh4ADBIgAAwSIwAMEiYADBInAAwSLAAMEkUADBJKAAwSTAAMElEADBJUAAwSVgAMEp8ADBLDAAwS6gAMEw4ADBMRAAwTEwAMExUADBMXAAwTGQAMExsADBMcAAwTHwAMEzgADBNdAAwTXwAME2EADBNjAAwTZQAME2cADBNpAAwTawAME20ADBNvAAwTlAAME5cADBOaAAwTnQAME6AADBOjAAwTpgAME6kADBOsAAwTrwAME7EADBQsAAwULgAMFDEADBQzAAwUNgAMFDcADBQ4AAwUOQAMFDoADBQ8AAwUPgAMFD8ADBRAAAwUQgAMFEMADBRUAAwUVQAMFFcADBTSAAwU1AAMFNYADBTYAAwU2wAMFNwADBTdAAwU3gAMFN8ADBThAAwU4wAMFOQADBTlAAwU5wAMFOgADBVjAAwVZQAMFWgADBVqAAwVbQAMFW4ADBVvAAwVcAAMFXEADBVzAAwVdQAMFXYADBV3AAwVeQAMFXoADBWLAAwVkAAMFZMADBWVAAwVpgAMFbcADBW6AAwVvQAMFcAADBXDAAwVxQAMFeEADBXzAAwWBgAMFhIADBaNAAwWjwAMFpEADBaTAAwWlgAMFpcADBaYAAwWmQAMFpoADBacAAwWngAMFp8ADBagAAwWogAMFqMADBceAAwXIAAMFyMADBclAAwXKAAMFykADBcqAAwXKwAMFywADBcuAAwXMAAMFzEADBcyAAwXNAAMFzUADBdGAAwXRwAMF0kADBfEAAwXxgAMF8gADBfKAAwXzQAMF84ADBfPAAwX0AAMF9EADBfTAAwX1QAMF9YADBfXAAwX2QAMF9oADBhVAAwYVwAMGFoADBhcAAwYXwAMGGAADBhhAAwYYgAMGGMADBhlAAwYZwAMGGgADBhpAAwYawAMGGwADBiFAAwYhgAMGIcADBiJAAwZBAAMGQYADBkIAAwZCgAMGQ0ADBkOAAwZDwAMGRAADBkRAAwZEwAMGRUADBkWAAwZFwAMGRkADBkaAAwZlQAMGZcADBmaAAwZnAAMGZ8ADBmgAAwZoQAMGaIADBmjAAwZpQAMGacADBmoAAwZqQAMGasADBmsAAwZxAAMGd0ADBoOAAwaEQAMGhQADBoXAAwaGgAMGh0ADBogAAwaIwAMGiYADBopAAwaLAAMGi8ADBoyAAwaYwAMGmYADBppAAwabAAMGm8ADBpyAAwadQAMGngADBp7AAwafgAMGoEADBqEAAwahwAMGokADBqlAAwauQAMGtIADBrpAAwa/AAMGxQADBssAAwbSAAMG1oADBtmAAwb+QAMHBwADBw8AAwcXAAMHF4ADBxgAAwcYgAMHGQADBxnAAwcaAAMHGkADBxsAAwcbQAMHG8ADBxwAAwccgAMHHUADBx2AAwcdwAMHHoADBx7AAwcgAAMHJkADByiAAwcpAAMHKYADByvAAwcsgAMHLUADBy3AAwdAAAMHSQADB1LAAwdbwAMHXIADB10AAwddgAMHXgADB16AAwdfAAMHX0ADB2AAAwdmQAMHboADB28AAwdvgAMHcAADB3CAAwdxAAMHcYADB3IAAwdygAMHesADB3uAAwd8QAMHfQADB33AAwd+gAMHf0ADB4AAAweAwAMHgUADB6AAAweggAMHoQADB6GAAweiQAMHooADB6LAAwejAAMHo0ADB6PAAwekQAMHpIADB6TAAwelQAMHpYADB8RAAwfEwAMHxUADB8XAAwfGgAMHxsADB8cAAwfHQAMHx4ADB8gAAwfIgAMHyMADB8kAAwfJgAMHycADB+iAAwfpAAMH6cADB+pAAwfrAAMH60ADB+uAAwfrwAMH7AADB+yAAwftAAMH7UADB+2AAwfuAAMH7kADB/SAAwf0wAMH9QADB/WAAwgUQAMIFMADCBVAAwgVwAMIFoADCBbAAwgXAAMIF0ADCBeAAwgYAAMIGIADCBjAAwgZAAMIGYADCBnAAwg4gAMIOQADCDmAAwg6AAMIOsADCDsAAwg7QAMIO4ADCDvAAwg8QAMIPMADCD0AAwg9QAMIPcADCD4AAwhcwAMIXUADCF3AAwheQAMIXwADCF9AAwhfgAMIX8ADCGAAAwhggAMIYQADCGFAAwhhgAMIYgADCGJAAwiBAAMIgYADCIIAAwiCgAMIg0ADCIOAAwiDwAMIhAADCIRAAwiEwAMIhUADCIWAAwiFwAMIhkADCIaAAwilQAMIpcADCKZAAwimwAMIp4ADCKfAAwioAAMIqEADCKiAAwipAAMIqYADCKnAAwiqAAMIqoADCKrAAwi9AAMIxgADCM/AAwjYwAMI2YADCNoAAwjagAMI2wADCNuAAwjcAAMI3EADCN0AAwjjQAMI6oADCOsAAwjrgAMI7AADCOyAAwjtAAMI7YADCO4AAwj1QAMI9gADCPbAAwj3gAMI+EADCPkAAwj5wAMI+oADCPsAAwkZwAMJGkADCRrAAwkbQAMJHAADCRxAAwkcgAMJHMADCR0AAwkdgAMJHgADCR5AAwkegAMJHwADCR9AAwk+AAMJPoADCT8AAwk/gAMJQEADCUCAAwlAwAMJQQADCUFAAwlBwAMJQkADCUKAAwlCwAMJQ0ADCUOAAwliQAMJYsADCWNAAwljwAMJZIADCWTAAwllAAMJZUADCWWAAwlmAAMJZoADCWbAAwlnAAMJZ4ADCWfAAwmGgAMJhwADCYfAAwmIQAMJiQADCYlAAwmJgAMJicADCYoAAwmKgAMJiwADCYtAAwmLgAMJjAADCYxAAwmrAAMJq4ADCawAAwmsgAMJrUADCa2AAwmtwAMJrgADCa5AAwmuwAMJr0ADCa+AAwmvwAMJsEADCbCAAwnPQAMJz8ADCdBAAwnQwAMJ0YADCdHAAwnSAAMJ0kADCdKAAwnTAAMJ04ADCdPAAwnUAAMJ1IADCdTAAwnzgAMJ9AADCfSAAwn1AAMJ9cADCfYAAwn2QAMJ9oADCfbAAwn3QAMJ98ADCfgAAwn4QAMJ+MADCfkAAwodwAMKJoADCi6AAwo2gAMKNwADCjeAAwo4AAMKOIADCjlAAwo5gAMKOcADCjqAAwo6wAMKO0ADCjuAAwo8AAMKPMADCj0AAwo9QAMKPgADCj5AAwo/gAMKRcADCkgAAwpIgAMKSQADCktAAwpMAAMKTMADCk1AAwpfgAMKaIADCnJAAwp7QAMKfAADCnyAAwp9AAMKfYADCn4AAwp+gAMKfsADCn+AAwqFwAMKjgADCo6AAwqPAAMKj4ADCpAAAwqQgAMKkQADCpGAAwqSAAMKmkADCpsAAwqbwAMKnIADCp1AAwqeAAMKnsADCp+AAwqgQAMKoMADCr+AAwrAAAMKwIADCsEAAwrBwAMKwgADCsJAAwrCgAMKwsADCsNAAwrDwAMKxAADCsRAAwrEwAMKxQADCuPAAwrkQAMK5MADCuVAAwrmAAMK5kADCuaAAwrmwAMK5wADCueAAwroAAMK6EADCuiAAwrpAAMK6UADCwgAAwsIgAMLCUADCwnAAwsKgAMLCsADCwsAAwsLQAMLC4ADCwwAAwsMgAMLDMADCw0AAwsNgAMLDcADCxQAAwsUQAMLFIADCxUAAwszwAMLNEADCzTAAws1QAMLNgADCzZAAws2gAMLNsADCzcAAws3gAMLOAADCzhAAws4gAMLOQADCzlAAwtYAAMLWIADC1kAAwtZgAMLWkADC1qAAwtawAMLWwADC1tAAwtbwAMLXEADC1yAAwtcwAMLXUADC12AAwt8QAMLfMADC31AAwt9wAMLfoADC37AAwt/AAMLf0ADC3+AAwuAAAMLgIADC4DAAwuBAAMLgYADC4HAAwuggAMLoQADC6GAAwuiAAMLosADC6MAAwujQAMLo4ADC6PAAwukQAMLpMADC6UAAwulQAMLpcADC6YAAwvEwAMLxUADC8XAAwvGQAMLxwADC8dAAwvHgAMLx8ADC8gAAwvIgAMLyQADC8lAAwvJgAMLygADC8pAAwvcgAML5YADC+9AAwv4QAML+QADC/mAAwv6AAML+oADC/sAAwv7gAML+8ADC/yAAwwCwAMMCgADDAqAAwwLAAMMC4ADDAwAAwwMgAMMDQADDA2AAwwUwAMMFYADDBZAAwwXAAMMF8ADDBiAAwwZQAMMGgADDBqAAww5QAMMOcADDDpAAww6wAMMO4ADDDvAAww8AAMMPEADDDyAAww9AAMMPYADDD3AAww+AAMMPoADDD7AAwxdgAMMXgADDF6AAwxfAAMMX8ADDGAAAwxgQAMMYIADDGDAAwxhQAMMYcADDGIAAwxiQAMMYsADDGMAAwyBwAMMgkADDILAAwyDQAMMhAADDIRAAwyEgAMMhMADDIUAAwyFgAMMhgADDIZAAwyGgAMMhwADDIdAAwymAAMMpoADDKdAAwynwAMMqIADDKjAAwypAAMMqUADDKmAAwyqAAMMqoADDKrAAwyrAAMMq4ADDKvAAwzKgAMMywADDMuAAwzMAAMMzMADDM0AAwzNQAMMzYADDM3AAwzOQAMMzsADDM8AAwzPQAMMz8ADDNAAAwzuwAMM70ADDO/AAwzwQAMM8QADDPFAAwzxgAMM8cADDPIAAwzygAMM8wADDPNAAwzzgAMM9AADDPRAAw0TAAMNE4ADDRQAAw0UgAMNFUADDRWAAw0VwAMNFgADDRZAAw0WwAMNF0ADDReAAw0XwAMNGEADDRiAAw09QAMNRgADDU4AAw1WAAMNVoADDVcAAw1XgAMNWAADDVjAAw1ZAAMNWUADDVoAAw1aQAMNWsADDVsAAw1bgAMNXEADDVyAAw1cwAMNXYADDV3AAw1fAAMNZUADDWeAAw1oAAMNaIADDWrAAw1rgAMNbEADDWzAAw1/AAMNiAADDZHAAw2awAMNm4ADDZwAAw2cgAMNnQADDZ2AAw2eAAMNnkADDZ8AAw2lQAMNrYADDa4AAw2ugAMNrwADDa+AAw2wAAMNsIADDbEAAw2xgAMNucADDbqAAw27QAMNvAADDbzAAw29gAMNvkADDb8AAw2/wAMNwEADDd8AAw3fgAMN4AADDeCAAw3hQAMN4YADDeHAAw3iAAMN4kADDeLAAw3jQAMN44ADDePAAw3kQAMN5IADDgNAAw4DwAMOBEADDgTAAw4FgAMOBcADDgYAAw4GQAMOBoADDgcAAw4HgAMOB8ADDggAAw4IgAMOCMADDieAAw4oAAMOKMADDilAAw4qAAMOKkADDiqAAw4qwAMOKwADDiuAAw4sAAMOLEADDiyAAw4tAAMOLUADDjOAAw4zwAMONAADDjSAAw5TQAMOU8ADDlRAAw5UwAMOVYADDlXAAw5WAAMOVkADDlaAAw5XAAMOV4ADDlfAAw5YAAMOWIADDljAAw53gAMOeAADDniAAw55AAMOecADDnoAAw56QAMOeoADDnrAAw57QAMOe8ADDnwAAw58QAMOfMADDn0AAw6bwAMOnEADDpzAAw6dQAMOngADDp5AAw6egAMOnsADDp8AAw6fgAMOoAADDqBAAw6ggAMOoQADDqFAAw7AAAMOwIADDsEAAw7BgAMOwkADDsKAAw7CwAMOwwADDsNAAw7DwAMOxEADDsSAAw7EwAMOxUADDsWAAw7kQAMO5MADDuVAAw7lwAMO5oADDubAAw7nAAMO50ADDueAAw7oAAMO6IADDujAAw7pAAMO6YADDunAAw78AAMPBQADDw7AAw8XwAMPGIADDxkAAw8ZgAMPGgADDxqAAw8bAAMPG0ADDxwAAw8iQAMPKYADDyoAAw8qgAMPKwADDyuAAw8sAAMPLIADDy0AAw80QAMPNQADDzXAAw82gAMPN0ADDzgAAw84wAMPOYADDzoAAw9YwAMPWUADD1nAAw9aQAMPWwADD1tAAw9bgAMPW8ADD1wAAw9cgAMPXQADD11AAw9dgAMPXgADD15AAw99AAMPfYADD34AAw9+gAMPf0ADD3+AAw9/wAMPgAADD4BAAw+AwAMPgUADD4GAAw+BwAMPgkADD4KAAw+hQAMPocADD6JAAw+iwAMPo4ADD6PAAw+kAAMPpEADD6SAAw+lAAMPpY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ADFCBAAxQhAAMUIUADFCGAAxQhwAMUIgADFCKAAxQjAAMUI0ADFCOAAxQkAAMUJEADFEMAAxRDgAMURAADFESAAxRFQAMURYADFEXAAxRGAAMURkADFEbAAxRHQAMUR4ADFEfAAxRIQAMUSIADFGdAAxRnwAMUaIADFGkAAxRpwAMUagADFGpAAxRqgAMUasADFGtAAxRrwAMUbAADFGxAAxRswAMUbQADFHNAAxRzgAMUc8ADFHRAAxSTAAMUk4ADFJQAAxSUgAMUlUADFJWAAxSVwAMUlgADFJZAAxSWwAMUl0ADFJeAAxSXwAMUmEADFJiAAxS3QAMUt8ADFLhAAxS4wAMUuYADFLnAAxS6AAMUukADFLqAAxS7AAMUu4ADFLvAAxS8AAMUvIADFLzAAxTbgAMU3AADFNyAAxTdAAMU3cADFN4AAxTeQAMU3oADFN7AAxTfQAMU38ADFOAAAxTgQAMU4MADFOEAAxT/wAMVAEADFQDAAxUBQAMVAgADFQJAAxUCgAMVAsADFQMAAxUDgAMVBAADFQRAAxUEgAMVBQADFQVAAxUkAAMVJIADFSUAAxUlgAMVJkADFSaAAxUmwAMVJwADFSdAAxUnwAMVKEADFSiAAxUowAMVKUADFSmAAxU7wAMVRMADFU6AAxVXgAMVWEADFVjAAxVZQAMVWcADFVpAAxVawAMVWwADFVvAAxViAAMVaUADFWnAAxVqQAMVasADFWtAAxVrwAMVbEADFWzAAxV0AAMVdMADFXWAAxV2QAMVdwADFXfAAxV4gAMVeUADFXnAAxWYgAMVmQADFZmAAxWaAAMVmsADFZsAAxWbQAMVm4ADFZvAAxWcQAMVnMADFZ0AAxWdQAMVncADFZ4AAxW8wAMVvUADFb3AAxW+QAMVvwADFb9AAxW/gAMVv8ADFcAAAxXAgAMVwQADFcFAAxXBgAMVwgADFcJAAxXhAAMV4YADFeIAAxXigAMV40ADFeOAAxXjwAMV5AADFeRAAxXkwAMV5UADFeWAAxXlwAMV5kADFeaAAxYFQAMWBcADFgZAAxYGwAMWB4ADFgfAAxYIAAMWCEADFgiAAxYJAAMWCYADFgnAAxYKAAMWCoADFgrAAxYpgAMWKgADFiqAAxYrAAMWK8ADFiwAAxYsQAMWLIADFizAAxYtQAMWLcADFi4AAxYuQAMWLsADFi8AAxZNwAMWTkADFk7AAxZPQAMWUAADFlBAAxZQgAMWUMADFlEAAxZRgAMWUgADFlJAAxZSgAMWUwADFlNAAxZyAAMWcoADFnMAAxZzgAMWdEADFnSAAxZ0wAMWdQADFnVAAxZ1wAMWdkADFnaAAxZ2wAMWd0ADFneAAxacQAMWpQADFq0AAxa1AAMWtYADFrYAAxa2gAMWtwADFrfAAxa4AAMWuEADFrkAAxa5QAMWucADFroAAxa6gAMWu0ADFruAAxa7wAMWvIADFrzAAxa+AAMWxEADFsaAAxbHAAMWx4ADFsnAAxbKgAMWy0ADFsvAAxbeAAMW5wADFvDAAxb5wAMW+oADFvsAAxb7gAMW/AADFvyAAxb9AAMW/UADFv4AAxcEQAMXDIADFw0AAxcNgAMXDgADFw6AAxcPAAMXD4ADFxAAAxcQgAMXGMADFxmAAxcaQAMXGwADFxvAAxccgAMXHUADFx4AAxcewAMXH0ADFz4AAxc+gAMXPwADFz+AAxdAQAMXQIADF0DAAxdBAAMXQUADF0HAAxdCQAMXQoADF0LAAxdDQAMXQ4ADF2JAAxdiwAMXY0ADF2PAAxdkgAMXZMADF2UAAxdlQAMXZYADF2YAAxdmgAMXZsADF2cAAxdngAMXZ8ADF4aAAxeHAAMXh8ADF4hAAxeJAAMXiUADF4mAAxeJwAMXigADF4qAAxeLAAMXi0ADF4uAAxeMAAMXjEADF5KAAxeSwAMXkwADF5OAAxeyQAMXssADF7NAAxezwAMXtIADF7TAAxe1AAMXtUADF7WAAxe2AAMXtoADF7bAAxe3AAMXt4ADF7fAAxfWgAMX1wADF9eAAxfYAAMX2MADF9kAAxfZQAMX2YADF9nAAxfaQAMX2sADF9sAAxfbQAMX28ADF9wAAxf6wAMX+0ADF/vAAxf8QAMX/QADF/1AAxf9gAMX/cADF/4AAxf+gAMX/wADF/9AAxf/gAMYAAADGABAAxgfAAMYH4ADGCAAAxgggAMYIUADGCGAAxghwAMYIgADGCJAAxgiwAMYI0ADGCOAAxgjwAMYJEADGCSAAxhDQAMYQ8ADGERAAxhEwAMYRYADGEXAAxhGAAMYRkADGEaAAxhHAAMYR4ADGEfAAxhIAAMYSIADGEjAAxhbAAMYZAADGG3AAxh2wAMYd4ADGHgAAxh4gAMYeQADGHmAAxh6AAMYekADGHsAAxiBQAMYiIADGIkAAxiJgAMYigADGIqAAxiLAAMYi4ADGIwAAxiTQAMYlAADGJTAAxiVgAMYlkADGJcAAxiXwAMYmIADGJkAAxi3wAMYuEADGLjAAxi5QAMYugADGLpAAxi6gAMYusADGLsAAxi7gAMYvAADGLxAAxi8gAMYvQADGL1AAxjcAAMY3IADGN0AAxjdgAMY3kADGN6AAxjewAMY3wADGN9AAxjfwAMY4EADGOCAAxjgwAMY4UADGOGAAxkAQAMZAMADGQFAAxkBwAMZAoADGQLAAxkDAAMZA0ADGQOAAxkEAAMZBIADGQTAAxkFAAMZBYADGQXAAxkkgAMZJQADGSWAAxkmAAMZJsADGScAAxknQAMZJ4ADGSfAAxkoQAMZKMADGSkAAxkpQAMZKcADGSoAAxlIwAMZSUADGUnAAxlKQAMZSwADGUtAAxlLgAMZS8ADGUwAAxlMgAMZTQADGU1AAxlNgAMZTgADGU5AAxltAAMZbYADGW4AAxlugAMZb0ADGW+AAxlvwAMZcAADGXBAAxlwwAMZcUADGXGAAxlxwAMZckADGXKAAxmRQAMZkcADGZJAAxmSwAMZk4ADGZPAAxmUAAMZlEADGZSAAxmVAAMZlYADGZXAAxmWAAMZloADGZbAAxm7gAMZxEADGcxAAxnUQAMZ1MADGdVAAxnVwAMZ1kADGdcAAxnXQAMZ14ADGdhAAxnYgAMZ2QADGdlAAxnZwAMZ2oADGdrAAxnbAAMZ28ADGdwAAxndQAMZ44ADGeXAAxnmQAMZ5sADGekAAxnpwAMZ6oADGesAAxn9QAMaBkADGhAAAxoZAAMaGcADGhpAAxoawAMaG0ADGhvAAxocQAMaHIADGh1AAxojgAMaK8ADGixAAxoswAMaLUADGi3AAxouQAMaLsADGi9AAxovwAMaOAADGjjAAxo5gAMaOkADGjsAAxo7wAMaPIADGj1AAxo+AAMaPoADGl1AAxpdwAMaXkADGl7AAxpfgAMaX8ADGmAAAxpgQAMaYIADGmEAAxphgAMaYcADGmIAAxpigAMaYsADGoGAAxqCAAMagoADGoMAAxqDwAMahAADGoRAAxqEgAMahMADGoVAAxqFwAMahgADGoZAAxqGwAMahwADGqXAAxqmQAMapwADGqeAAxqoQAMaqIADGqjAAxqpAAMaqUADGqnAAxqqQAMaqoADGqrAAxqrQAMaq4ADGrHAAxqyAAMaskADGrLAAxrRgAMa0gADGtKAAxrTAAMa08ADGtQAAxrUQAMa1IADGtTAAxrVQAMa1cADGtYAAxrWQAMa1sADGtcAAxr1wAMa9kADGvbAAxr3QAMa+AADGvhAAxr4gAMa+MADGvkAAxr5gAMa+gADGvpAAxr6gAMa+wADGvtAAxsaAAMbGoADGxsAAxsbgAMbHEADGxyAAxscwAMbHQADGx1AAxsdwAMbHkADGx6AAxsewAMbH0ADGx+AAxs+QAMbPsADGz9AAxs/wAMbQIADG0DAAxtBAAMbQUADG0GAAxtCAAMbQoADG0LAAxtDAAMbQ4ADG0PAAxtigAMbYwADG2OAAxtkAAMbZMADG2UAAxtlQAMbZYADG2XAAxtmQAMbZsADG2cAAxtnQAMbZ8ADG2gAAxt6QAMbg0ADG40AAxuWAAMblsADG5dAAxuXwAMbmEADG5jAAxuZQAMbmYADG5pAAxuggAMbp8ADG6hAAxuowAMbqUADG6nAAxuqQAMbqsADG6tAAxuygAMbs0ADG7QAAxu0wAMbtYADG7ZAAxu3AAMbt8ADG7hAAxvXAAMb14ADG9gAAxvYgAMb2UADG9mAAxvZwAMb2gADG9pAAxvawAMb20ADG9uAAxvbwAMb3EADG9yAAxv7QAMb+8ADG/xAAxv8wAMb/YADG/3AAxv+AAMb/kADG/6AAxv/AAMb/4ADG//AAxwAAAMcAIADHADAAxwfgAMcIAADHCCAAxwhAAMcIcADHCIAAxwiQAMcIoADHCLAAxwjQAMcI8ADHCQAAxwkQAMcJMADHCUAAxxDwAMcREADHETAAxxFQAMcRgADHEZAAxxGgAMcRsADHEcAAxxHgAMcSAADHEhAAxxIgAMcSQADHElAAxxoAAMcaIADHGkAAxxpgAMcakADHGqAAxxqwAMcawADHGtAAxxrwAMcbEADHGyAAxxswAMcbUADHG2AAxyMQAMcjMADHI1AAxyNwAMcjoADHI7AAxyPAAMcj0ADHI+AAxyQAAMckIADHJDAAxyRAAMckYADHJHAAxywgAMcsQADHLGAAxyyAAMcssADHLMAAxyzQAMcs4ADHLPAAxy0QAMctMADHLUAAxy1QAMctcADHLYAAxzawAMc44ADHOuAAxzzgAMc9AADHPSAAxz1AAMc9YADHPZAAxz2gAMc9sADHPeAAxz3wAMc+EADHPiAAxz5AAMc+cADHPoAAxz6QAMc+wADHPtAAxz8gAMdAsADHQUAAx0FgAMdBgADHQhAAx0JAAMdCcADHQpAAx0cgAMdJYADHS9AAx04QAMdOQADHTmAAx06AAMdOoADHTsAAx07gAMdO8ADHTyAAx1CwAMdSwADHUuAAx1MAAMdTIADHU0AAx1NgAMdTgADHU6AAx1PAAMdV0ADHVgAAx1YwAMdWYADHVpAAx1bAAMdW8ADHVyAAx1dQAMdXcADHXyAAx19AAMdfYADHX4AAx1+wAMdfwADHX9AAx1/gAMdf8ADHYBAAx2AwAMdgQADHYFAAx2BwAMdggADHaDAAx2hQAMdocADHaJAAx2jAAMdo0ADHaOAAx2jwAMdpAADHaSAAx2lAAMdpUADHaWAAx2mAAMdpkADHcUAAx3FgAMdxkADHcbAAx3HgAMdx8ADHcgAAx3IQAMdyIADHckAAx3JgAMdycADHcoAAx3KgAMdysADHdEAAx3RQAMd0YADHdIAAx3wwAMd8UADHfHAAx3yQAMd8wADHfNAAx3zgAMd88ADHfQAAx30gAMd9QADHfVAAx31gAMd9gADHfZAAx4VAAMeFYADHhYAAx4WgAMeF0ADHheAAx4XwAMeGAADHhhAAx4YwAMeGUADHhmAAx4ZwAMeGkADHhqAAx45QAMeOcADHjpAAx46wAMeO4ADHjvAAx48AAMePEADHjyAAx49AAMePYADHj3AAx4+AAMePoADHj7AAx5dgAMeXgADHl6AAx5fAAMeX8ADHmAAAx5gQAMeYIADHmDAAx5hQAMeYcADHmIAAx5iQAMeYsADHmMAAx6BwAMegkADHoLAAx6DQAMehAADHoRAAx6EgAMehMADHoUAAx6FgAMehgADHoZAAx6GgAMehwADHodAAx6ZgAMeooADHqxAAx61QAMetgADHraAAx63AAMet4ADHrgAAx64gAMeuMADHrmAAx6/wAMexwADHseAAx7IAAMeyIADHskAAx7JgAMeygADHsqAAx7RwAMe0oADHtNAAx7UAAMe1MADHtWAAx7WQAMe1wADHteAAx72QAMe9sADHvdAAx73wAMe+IADHvjAAx75AAMe+UADHvmAAx76AAMe+oADHvrAAx77AAMe+4ADHvvAAx8agAMfGwADHxuAAx8cAAMfHMADHx0AAx8dQAMfHYADHx3AAx8eQAMfHsADHx8AAx8fQAMfH8ADHyAAAx8+wAMfP0ADHz/AAx9AQAMfQQADH0FAAx9BgAMfQcADH0IAAx9CgAMfQwADH0NAAx9DgAMfRAADH0RAAx9jAAMfY4ADH2RAAx9kwAMfZYADH2XAAx9mAAMfZkADH2aAAx9nAAMfZ4ADH2fAAx9oAAMfaIADH2jAAx+HgAMfiAADH4iAAx+JAAMficADH4oAAx+KQAMfioADH4rAAx+LQAMfi8ADH4wAAx+MQAMfjMADH40AAx+rwAMfrEADH6zAAx+tQAMfrgADH65AAx+ugAMfrsADH68AAx+vgAMfsAADH7BAAx+wgAMfsQADH7FAAx/QAAMf0IADH9EAAx/RgAMf0kADH9KAAx/SwAMf0wADH9NAAx/TwAMf1EADH9SAAx/UwAMf1UADH9WAAx/6QAMgAwADIAsAAyATAAMgE4ADIBQAAyAUgAMgFQADIBXAAyAWAAMgFkADIBcAAyAXQAMgF8ADIBgAAyAYwAMgGYADIBnAAyAaAAMgGsADIBsAAyAcQAMgIoADICTAAyAlQAMgJgADIChAAyApAAMgKcADICpAAyA8gAMgRYADIE9AAyBYQAMgWQADIFmAAyBaAAMgWoADIFsAAyBbgAMgW8ADIFyAAyBiwAMgawADIGuAAyBsAAMgbIADIG0AAyBtgAMgbgADIG6AAyBvAAMgd0ADIHgAAyB4wAMgeYADIHpAAyB7AAMge8ADIHyAAyB9QAMgfcADIJyAAyCdAAMgnYADIJ4AAyCewAMgnwADIJ9AAyCfgAMgn8ADIKBAAyCgwAMgoQADIKFAAyChwAMgogADIMDAAyDBQAMgwcADIMJAAyDDAAMgw0ADIMOAAyDDwAMgxAADIMSAAyDFAAMgxUADIMWAAyDGAAMgxkADIOUAAyDlgAMg5kADIObAAyDngAMg58ADIOgAAyDoQAMg6IADIOkAAyDpgAMg6cADIOoAAyDqgAMg6sADIPEAAyDxQAMg8YADIPIAAyEQwAMhEUADIRHAAyESQAMhEwADIRNAAyETgAMhE8ADIRQAAyEUgAMhFQADIRVAAyEVgAMhFgADIRZAAyE1AAMhNYADITYAAyE2gAMhN0ADITeAAyE3wAMhOAADIThAAyE4wAMhOUADITmAAyE5wAMhOkADITqAAyFZQAMhWcADIVpAAyFawAMhW4ADIVvAAyFcAAMhXEADIVyAAyFdAAMhXYADIV3AAyFeAAMhXoADIV7AAyF9gAMhfgADIX6AAyF/AAMhf8ADIYAAAyGAQAMhgIADIYDAAyGBQAMhgcADIYIAAyGCQAMhgsADIYMAAyGhwAMhokADIaLAAyGjQAMhpAADIaRAAyGkgAMhpMADIaUAAyGlgAMhpgADIaZAAyGmgAMhpwADIadAAyG5gAMhwoADIcxAAyHVQAMh1gADIdbAAyHXQAMh18ADIdhAAyHYwAMh2QADIdnAAyHgAAMh50ADIegAAyHowAMh6YADIepAAyHrAAMh68ADIeyAAyHzwAMh9IADIfVAAyH2AAMh9sADIfeAAyH4QAMh+QADIfmAAyIYQAMiGMADIhmAAyIaAAMiGsADIhsAAyIbQAMiG4ADIhvAAyIcQAMiHQADIh1AAyIdgAMiHgADIh5AAyI9AAMiPYADIj5AAyI+wAMiP4ADIj/AAyJAAAMiQEADIkCAAyJBAAMiQcADIkIAAyJCQAMiQsADIkMAAyJhwAMiYkADImMAAyJjgAMiZEADImSAAyJkwAMiZQADImVAAyJlwAMiZoADImbAAyJnAAMiZ4ADImfAAyKGgAMihwADIofAAyKIQAMiiQADIolAAyKJgAMiicADIooAAyKKgAMii0ADIouAAyKLwAMijEADIoyAAyKtQAMitkADIr9AAyLIAAMi0cADItnAAyLjgAMi7UADIvVAAyL+QAMjB0ADIwfAAyMIgAMjCQADIwmAAyMKAAMjCsADIwuAAyMMAAMjDIADIw1AAyMNwAMjDkADIw8AAyMPwAMjEAADIxJAAyMYgAMjGcADIxpAAyMbgAMjHEADIxzAAyMvAAMjOAADI0HAAyNKwAMjS4ADI0wAAyNMgAMjTQADI02AAyNOAAMjTkADI08AAyNVQAMjXoADI18AAyNfgAMjYAADI2CAAyNhAAMjYYADI2IAAyNigAMjYwADI2xAAyNtAAMjbcADI26AAyNvQAMjcAADI3DAAyNxgAMjckADI3MAAyNzgAMjkkADI5LAAyOTgAMjlAADI5TAAyOVAAMjlUADI5WAAyOVwAMjlkADI5bAAyOXAAMjl0ADI5fAAyOYAAMjnEADI5yAAyOdAAMju8ADI7xAAyO8wAMjvUADI74AAyO+QAMjvoADI77AAyO/AAMjv4ADI8AAAyPAQAMjwIADI8EAAyPBQAMj4AADI+CAAyPhQAMj4cADI+KAAyPiwAMj4wADI+NAAyPjgAMj5AADI+SAAyPkwAMj5QADI+WAAyPlwAMj6gADI+tAAyPsAAMj7IADI/DAAyP0AAMj9MADI/WAAyP2QAMj9sADI/3AAyQCQAMkBwADJCXAAyQmQAMkJsADJCdAAyQoAAMkKEADJCiAAyQowAMkKQADJCmAAyQqAAMkKkADJCqAAyQrAAMkK0ADJEoAAyRKgAMkS0ADJEvAAyRMgAMkTMADJE0AAyRNQAMkTYADJE4AAyROgAMkTsADJE8AAyRPgAMkT8ADJFQAAyRUQAMkVMADJHOAAyR0AAMkdIADJHUAAyR1wAMkdgADJHZAAyR2gAMkdsADJHdAAyR3wAMkeAADJHhAAyR4wAMkeQADJJfAAySYQAMkmQADJJmAAySaQAMkmoADJJrAAySbAAMkm0ADJJvAAyScQAMknIADJJzAAySdQAMknYADJKPAAySkAAMkpEADJKTAAyTDgAMkxAADJMSAAyTFAAMkxcADJMYAAyTGQAMkxoADJMbAAyTHQAMkx8ADJMgAAyTIQAMkyMADJMkAAyTnwAMk6EADJOkAAyTpgAMk6kADJOqAAyTqwAMk6wADJOtAAyTrwAMk7EADJOyAAyTswAMk7UADJO2AAyTyQAMk+IADJQPAAyUEgAMlBUADJQYAAyUGwAMlB4ADJQhAAyUJAAMlCcADJQqAAyULQAMlDAADJRdAAyUYAAMlGMADJRmAAyUaQAMlGwADJRvAAyUcgAMlHUADJR4AAyUewAMlH4ADJSAAAyUnAAMlK8ADJTBAAyU0wAMlNsADJT/AAyVGwAMlS4ADJXBAAyV5AAMlgQADJYkAAyWJgAMligADJYqAAyWLAAMli8ADJYwAAyWMQAMljQADJY1AAyWNwAMljgADJY6AAyWPQAMlj4ADJY/AAyWQgAMlkMADJZIAAyWYQAMlmoADJZsAAyWbgAMlncADJZ6AAyWfQAMln8ADJbIAAyW7AAMlxMADJc3AAyXOgAMlzwADJc+AAyXQAAMl0IADJdEAAyXRQAMl0gADJdhAAyXggAMl4QADJeGAAyXiAAMl4oADJeMAAyXjgAMl5AADJeSAAyXswAMl7YADJe5AAyXvAAMl78ADJfCAAyXxQAMl8gADJfLAAyXzQAMmEgADJhKAAyYTAAMmE4ADJhRAAyYUgAMmFMADJhUAAyYVQAMmFcADJhZAAyYWgAMmFsADJhdAAyYXgAMmNkADJjbAAyY3QAMmN8ADJjiAAyY4wAMmOQADJjlAAyY5gAMmOgADJjqAAyY6wAMmOwADJjuAAyY7wAMmWoADJlsAAyZbwAMmXEADJl0AAyZdQAMmXYADJl3AAyZeAAMmXoADJl8AAyZfQAMmX4ADJmAAAyZgQAMmZoADJmbAAyZnAAMmZ4ADJoZAAyaGwAMmh0ADJofAAyaIgAMmiMADJokAAyaJQAMmiYADJooAAyaKgAMmisADJosAAyaLgAMmi8ADJqqAAyarAAMmq4ADJqwAAyaswAMmrQADJq1AAyatgAMmrcADJq5AAyauwAMmrwADJq9AAyavwAMmsAADJs7AAybPQAMmz8ADJtBAAybRAAMm0UADJtGAAybRwAMm0gADJtKAAybTAAMm00ADJtOAAybUAAMm1EADJvMAAybzgAMm9AADJvSAAyb1QAMm9YADJvXAAyb2AAMm9kADJvbAAyb3QAMm94ADJvfAAyb4QAMm+IADJxdAAycXwAMnGEADJxjAAycZgAMnGcADJxoAAycaQAMnGoADJxsAAycbgAMnG8ADJxwAAyccgAMnHMADJy8AAyc4AAMnQcADJ0rAAydLgAMnTAADJ0yAAydNAAMnTYADJ04AAydOQAMnTwADJ1VAAydcgAMnXQADJ12AAydeAAMnXoADJ18AAydfgAMnYAADJ2dAAydoAAMnaMADJ2mAAydqQAMnawADJ2vAAydsgAMnbQADJ4vAAyeMQAMnjQADJ42AAyeOQAMnjoADJ47AAyePAAMnj0ADJ4/AAyeQQAMnkIADJ5DAAyeRQAMnkYADJ7BAAyewwAMnsUADJ7HAAyeygAMnssADJ7MAAyezQAMns4ADJ7QAAye0gAMntMADJ7UAAye1gAMntcADJ9SAAyfVAAMn1YADJ9YAAyfWwAMn1wADJ9dAAyfXgAMn18ADJ9hAAyfYwAMn2QADJ9lAAyfZwAMn2gADJ/jAAyf5QAMn+gADJ/qAAyf7QAMn+4ADJ/vAAyf8AAMn/EADJ/zAAyf9QAMn/YADJ/3AAyf+QAMn/oADKB1AAygdwAMoHkADKB7AAygfgAMoH8ADKCAAAyggQAMoIIADKCEAAyghgAMoIcADKCIAAygigAMoIsADKEGAAyhCAAMoQoADKEMAAyhDwAMoRAADKERAAyhEgAMoRMADKEVAAyhFwAMoRgADKEZAAyhGwAMoRwADKGXAAyhmQAMoZsADKGdAAyhoAAMoaEADKGiAAyhowAMoaQADKGmAAyhqAAMoakADKGqAAyhrAAMoa0ADKJAAAyiYwAMooMADKKjAAyipQAMoqcADKKpAAyiqwAMoq4ADKKvAAyisAAMorMADKK0AAyitgAMorcADKK5AAyivAAMor0ADKK+AAyiwQAMosIADKLLAAyi5AAMou0ADKLvAAyi8QAMovoADKL9AAyjAAAMowIADKNLAAyjbwAMo5YADKO6AAyjvQAMo78ADKPBAAyjwwAMo8UADKPHAAyjyAAMo8sADKPkAAykBQAMpAcADKQJAAykCwAMpA0ADKQPAAykEQAMpBMADKQVAAykNgAMpDkADKQ8AAykPwAMpEIADKRFAAykSAAMpEsADKROAAykUAAMpMsADKTNAAykzwAMpNEADKTUAAyk1QAMpNYADKTXAAyk2AAMpNoADKTcAAyk3QAMpN4ADKTgAAyk4QAMpVwADKVeAAylYAAMpWIADKVlAAylZgAMpWcADKVoAAylaQAMpWsADKVtAAylbgAMpW8ADKVxAAylcgAMpe0ADKXvAAyl8gAMpfQADKX3AAyl+AAMpfkADKX6AAyl+wAMpf0ADKX/AAymAAAMpgEADKYDAAymBAAMph0ADKYeAAymHwAMpiEADKacAAymngAMpqAADKaiAAympQAMpqYADKanAAymqAAMpqkADKarAAymrQAMpq4ADKavAAymsQAMprIADKctAAynLwAMpzEADKczAAynNgAMpzcADKc4AAynOQAMpzoADKc8AAynPgAMpz8ADKdAAAynQgAMp0MADKe+AAynwAAMp8IADKfEAAynxwAMp8gADKfJAAynygAMp8sADKfNAAynzwAMp9AADKfRAAyn0wAMp9QADKhPAAyoUQAMqFMADKhVAAyoWAAMqFkADKhaAAyoWwAMqFwADKheAAyoYAAMqGEADKhiAAyoZAAMqGUADKjgAAyo4gAMqOQADKjmAAyo6QAMqOoADKjrAAyo7AAMqO0ADKjvAAyo8QAMqPIADKjzAAyo9QAMqPYADKk/AAypYwAMqYoADKmuAAypsQAMqbMADKm1AAyptwAMqbkADKm7AAypvAAMqb8ADKnYAAyp9QAMqfcADKn5AAyp+wAMqf0ADKn/AAyqAQAMqgMADKogAAyqIwAMqiYADKopAAyqLAAMqi8ADKoyAAyqNQAMqjcADKqyAAyqtAAMqrYADKq4AAyquwAMqrwADKq9AAyqvgAMqr8ADKrBAAyqwwAMqsQADKrFAAyqxwAMqsgADKtDAAyrRQAMq0cADKtJAAyrTAAMq00ADKtOAAyrTwAMq1AADKtSAAyrVAAMq1UADKtWAAyrWAAMq1kADKvUAAyr1gAMq9gADKvaAAyr3QAMq94ADKvfAAyr4AAMq+EADKvjAAyr5QAMq+YADKvnAAyr6QAMq+oADKxlAAysZwAMrGkADKxrAAysbgAMrG8ADKxwAAyscQAMrHIADKx0AAysdgAMrHcADKx4AAysegAMrHsADKz2AAys+AAMrPoADKz8AAys/wAMrQAADK0BAAytAgAMrQMADK0FAAytBwAMrQgADK0JAAytCwAMrQwADK2HAAytiQAMrYsADK2NAAytkAAMrZEADK2SAAytkwAMrZQADK2WAAytmAAMrZkADK2aAAytnAAMrZ0ADK4YAAyuGgAMrhwADK4eAAyuIQAMriIADK4jAAyuJAAMriUADK4nAAyuKQAMrioADK4rAAyuLQAMri4ADK7BAAyu5AAMrwQADK8kAAyvJgAMrygADK8qAAyvLAAMry8ADK8wAAyvMQAMrzQADK81AAyvNwAMrzgADK86AAyvPQAMrz4ADK8/AAyvQgAMr0MADK9IAAyvYQAMr2oADK9sAAyvbgAMr3cADK96AAyvfQAMr38ADK/IAAyv7AAMsBMADLA3AAywOgAMsDwADLA+AAywQAAMsEIADLBEAAywRQAMsEgADLBhAAywggAMsIQADLCGAAywiAAMsIoADLCMAAywjgAMsJAADLCSAAywswAMsLYADLC5AAywvAAMsL8ADLDCAAywxQAMsMgADLDLAAywzQAMsUgADLFKAAyxTAAMsU4ADLFRAAyxUgAMsVMADLFUAAyxVQAMsVcADLFZAAyxWgAMsVsADLFdAAyxXgAMsdkADLHbAAyx3QAMsd8ADLHiAAyx4wAMseQADLHlAAyx5gAMsegADLHqAAyx6wAMsewADLHuAAyx7wAMsmoADLJsAAyybwAMsnEADLJ0AAyydQAMsnYADLJ3AAyyeAAMsnoADLJ8AAyyfQAMsn4ADLKAAAyygQAMspoADLKbAAyynAAMsp4ADLMZAAyzGwAMsx0ADLMfAAyzIgAMsyMADLMkAAyzJQAMsyYADLMoAAyzKgAMsysADLMsAAyzLgAMsy8ADLOqAAyzrAAMs64ADLOwAAyzswAMs7QADLO1AAyztgAMs7cADLO5AAyzuwAMs7wADLO9AAyzvwAMs8AADLQ7AAy0PQAMtD8ADLRBAAy0RAAMtEUADLRGAAy0RwAMtEgADLRKAAy0TAAMtE0ADLROAAy0UAAMtFEADLTMAAy0zgAMtNAADLTSAAy01QAMtNYADLTXAAy02AAMtNkADLTbAAy03QAMtN4ADLTfAAy04QAMtOIADLVdAAy1XwAMtWEADLVjAAy1ZgAMtWcADLVoAAy1aQAMtWoADLVsAAy1bgAMtW8ADLVwAAy1cgAMtXMADLW8AAy14AAMtgcADLYrAAy2LgAMtjAADLYyAAy2NAAMtjYADLY4AAy2OQAMtjwADLZVAAy2cgAMtnQADLZ2AAy2eAAMtnoADLZ8AAy2fgAMtoAADLadAAy2oAAMtqMADLamAAy2qQAMtqwADLavAAy2sgAMtrQADLcvAAy3MQAMtzMADLc1AAy3OAAMtzkADLc6AAy3OwAMtzwADLc+AAy3QAAMt0EADLdCAAy3RAAMt0UADLfAAAy3wgAMt8QADLfGAAy3yQAMt8oADLfLAAy3zAAMt80ADLfPAAy30QAMt9IADLfTAAy31QAMt9YADLhRAAy4UwAMuFUADLhXAAy4WgAMuFsADLhcAAy4XQAMuF4ADLhgAAy4YgAMuGMADLhkAAy4ZgAMuGcADLjiAAy45AAMuOcADLjpAAy47AAMuO0ADLjuAAy47wAMuPAADLjyAAy49AAMuPUADLj2AAy4+AAMuPkADLl0AAy5dgAMuXgADLl6AAy5fQAMuX4ADLl/AAy5gAAMuYEADLmDAAy5hQAMuYYADLmHAAy5iQAMuYoADLoFAAy6BwAMugkADLoLAAy6DgAMug8ADLoQAAy6EQAMuhIADLoUAAy6FgAMuhcADLoYAAy6GgAMuhsADLqWAAy6mAAMupoADLqcAAy6nwAMuqAADLqhAAy6ogAMuqMADLqlAAy6pwAMuqgADLqpAAy6qwAMuqwADLs/AAy7YgAMu4IADLuiAAy7pAAMu6YADLuoAAy7qgAMu60ADLuuAAy7rwAMu7IADLuzAAy7tQAMu7YADLu5AAy7vAAMu70ADLu+AAy7wQAMu8IADLvHAAy74AAMu+kADLvrAAy77gAMu/cADLv6AAy7/QAMu/8ADLxIAAy8bAAMvJMADLy3AAy8ugAMvLwADLy+AAy8wAAMvMIADLzEAAy8xQAMvMgADLzhAAy9AgAMvQQADL0GAAy9CAAMvQoADL0MAAy9DgAMvRAADL0SAAy9MwAMvTYADL05AAy9PAAMvT8ADL1CAAy9RQAMvUgADL1LAAy9TQAMvcgADL3KAAy9zAAMvc4ADL3RAAy90gAMvdMADL3UAAy91QAMvdcADL3ZAAy92gAMvdsADL3dAAy93gAMvlkADL5bAAy+XQAMvl8ADL5iAAy+YwAMvmQADL5lAAy+ZgAMvmgADL5qAAy+awAMvmwADL5uAAy+bwAMvuoADL7sAAy+7wAMvvEADL70AAy+9QAMvvYADL73AAy++AAMvvoADL78AAy+/QAMvv4ADL8AAAy/AQAMvxoADL8bAAy/HAAMvx4ADL+ZAAy/mwAMv50ADL+fAAy/ogAMv6MADL+kAAy/pQAMv6YADL+oAAy/qgAMv6sADL+sAAy/rgAMv68ADMAqAAzALAAMwC4ADMAwAAzAMwAMwDQADMA1AAzANgAMwDcADMA5AAzAOwAMwDwADMA9AAzAPwAMwEAADMC7AAzAvQAMwL8ADMDBAAzAxAAMwMUADMDGAAzAxwAMwMgADMDKAAzAzAAMwM0ADMDOAAzA0AAMwNEADMFMAAzBTgAMwVAADMFSAAzBVQAMwVYADMFXAAzBWAAMwVkADMFbAAzBXQAMwV4ADMFfAAzBYQAMwWIADMHdAAzB3wAMweEADMHjAAzB5gAMwecADMHoAAzB6QAMweoADMHsAAzB7gAMwe8ADMHwAAzB8gAMwfMADMI8AAzCYAAMwocADMKrAAzCrgAMwrEADMKzAAzCtQAMwrcADMK5AAzCugAMwr0ADMLWAAzC8wAMwvYADML5AAzC/AAMwv8ADMMCAAzDBQAMwwgADMMlAAzDKAAMwysADMMuAAzDMQAMwzQADMM3AAzDOgAMwzwADMO3AAzDuQAMw7wADMO+AAzDwQAMw8IADMPDAAzDxAAMw8UADMPHAAzDygAMw8sADMPMAAzDzgAMw88ADMRKAAzETAAMxE8ADMRRAAzEVAAMxFUADMRWAAzEVwAMxFgADMRaAAzEXQAMxF4ADMRfAAzEYQAMxGIADMTdAAzE3wAMxOIADMTkAAzE5wAMxOgADMTpAAzE6gAMxOsADMTtAAzE8AAMxPEADMTyAAzE9AAMxPUADMVwAAzFcgAMxXUADMV3AAzFegAMxXsADMV8AAzFfQAMxX4ADMWAAAzFgwAMxYQADMWFAAzFhwAMxYgADMYDAAzGBQAMxgcADMYJAAzGDAAMxg0ADMYOAAzGDwAMxhAADMYSAAzGFQAMxhYADMYXAAzGGQAMxhoADMaVAAzGlwAMxpkADMabAAzGngAMxp8ADMagAAzGoQAMxqIADMakAAzGpwAMxqgADMapAAzGqwAMxqwADMcnAAzHKQAMxywADMcuAAzHMQAMxzIADMczAAzHNAAMxzUADMc3AAzHOgAMxzsADMc8AAzHPgAMxz8ADMfSAAzH9QAMyBUADMg1AAzINwAMyDkADMg7AAzIPQAMyEAADMhBAAzIQgAMyEUADMhGAAzISAAMyEkADMhMAAzITwAMyFAADMhRAAzIVAAMyFUADMheAAzIdwAMyIAADMiCAAzIhQAMyI4ADMiRAAzIlAAMyJYADMjfAAzJAwAMySoADMlOAAzJUQAMyVMADMlVAAzJVwAMyVkADMlbAAzJXAAMyV8ADMl4AAzJmQAMyZsADMmdAAzJnwAMyaEADMmjAAzJpQAMyacADMmpAAzJygAMyc0ADMnQAAzJ0wAMydYADMnZAAzJ3AAMyd8ADMniAAzJ5AAMyl8ADMphAAzKYwAMymUADMpoAAzKaQAMymoADMprAAzKbAAMym4ADMpwAAzKcQAMynIADMp0AAzKdQAMyvAADMryAAzK9AAMyvYADMr5AAzK+gAMyvsADMr8AAzK/QAMyv8ADMsBAAzLAgAMywMADMsFAAzLBgAMy4EADMuDAAzLhgAMy4gADMuLAAzLjAAMy40ADMuOAAzLjwAMy5EADMuTAAzLlAAMy5UADMuXAAzLmAAMy7EADMuyAAzLswAMy7UADMwwAAzMMgAMzDQADMw2AAzMOQAMzDoADMw7AAzMPAAMzD0ADMw/AAzMQQAMzEIADMxDAAzMRQAMzEYADMzBAAzMwwAMzMUADMzHAAzMygAMzMsADMzMAAzMzQAMzM4ADMzQAAzM0gAMzNMADMzUAAzM1gAMzNcADM1SAAzNVAAMzVYADM1YAAzNWwAMzVwADM1dAAzNXgAMzV8ADM1hAAzNYwAMzWQADM1lAAzNZwAMzWgADM3jAAzN5QAMzecADM3pAAzN7AAMze0ADM3uAAzN7wAMzfAADM3yAAzN9AAMzfUADM32AAzN+AAMzfkADM50AAzOdgAMzngADM56AAzOfQAMzn4ADM5/AAzOgAAMzoEADM6DAAzOhQAMzoYADM6HAAzOiQAMzooADM7TAAzO9wAMzx4ADM9CAAzPRQAMz0gADM9KAAzPTAAMz04ADM9QAAzPUQAMz1QADM9tAAzPigAMz40ADM+QAAzPkwAMz5YADM+ZAAzPnAAMz58ADM+8AAzPvwAMz8IADM/FAAzPyAAMz8sADM/OAAzP0QAMz9MADNBOAAzQUAAM0FMADNBVAAzQWAAM0FkADNBaAAzQWwAM0FwADNBeAAzQYQAM0GIADNBjAAzQZQAM0GYADNDhAAzQ4wAM0OYADNDoAAzQ6wAM0OwADNDtAAzQ7gAM0O8ADNDxAAzQ9AAM0PUADND2AAzQ+AAM0PkADNF0AAzRdgAM0XkADNF7AAzRfgAM0X8ADNGAAAzRgQAM0YIADNGEAAzRhwAM0YgADNGJAAzRiwAM0YwADNIHAAzSCQAM0gwADNIOAAzSEQAM0hIADNITAAzSFAAM0hUADNIXAAzSGgAM0hsADNIcAAzSHgAM0h8ADNKiAAzSxgAM0uoADNMNAAzTNAAM01QADNN7AAzTogAM08IADNPmAAzUCgAM1AwADNQPAAzUEQAM1BMADNQVAAzUGAAM1BsADNQdAAzUHwAM1CIADNQkAAzUJgAM1CkADNQsAAzULQAM1DYADNRPAAzUVAAM1FYADNRbAAzUXgAM1GAADNSpAAzUzQAM1PQADNUYAAzVGwAM1R0ADNUfAAzVIQAM1SMADNUlAAzVJgAM1SkADNVCAAzVZwAM1WkADNVrAAzVbQAM1W8ADNVxAAzVcwAM1XUADNV3AAzVeQAM1Z4ADNWhAAzVpAAM1acADNWqAAzVrQAM1bAADNWzAAzVtgAM1bkADNW7AAzWNgAM1jgADNY7AAzWPQAM1kAADNZBAAzWQgAM1kMADNZEAAzWRgAM1kgADNZJAAzWSgAM1kwADNZNAAzWXgAM1l8ADNZhAAzW3AAM1t4ADNbgAAzW4gAM1uUADNbmAAzW5wAM1ugADNbpAAzW6wAM1u0ADNbuAAzW7wAM1vEADNbyAAzXbQAM128ADNdyAAzXdAAM13cADNd4AAzXeQAM13oADNd7AAzXfQAM138ADNeAAAzXgQAM14MADNeEAAzXlQAM15oADNedAAzXnwAM17AADNe1AAzXuAAM17oADNfIAAzYQwAM2EUADNhHAAzYSQAM2EwADNhNAAzYTgAM2E8ADNhQAAzYUgAM2FQADNhVAAzYVgAM2FgADNhZAAzY1AAM2NYADNjZAAzY2wAM2N4ADNjfAAzY4AAM2OEADNjiAAzY5AAM2OYADNjnAAzY6AAM2OoADNjrAAzY/AAM2P0ADNj/AAzZegAM2XwADNl+AAzZgAAM2YMADNmEAAzZhQAM2YYADNmHAAzZiQAM2YsADNmMAAzZjQAM2Y8ADNmQAAzaCwAM2g0ADNoQAAzaEgAM2hUADNoWAAzaFwAM2hgADNoZAAzaGwAM2h0ADNoeAAzaHwAM2iEADNoiAAzaOwAM2jwADNo9AAzaPwAM2roADNq8AAzavgAM2sAADNrDAAzaxAAM2sUADNrGAAzaxwAM2skADNrLAAzazAAM2s0ADNrPAAza0AAM20sADNtNAAzbUAAM21IADNtVAAzbVgAM21cADNtYAAzbWQAM21sADNtdAAzbXgAM218ADNthAAzbYgAM23wADNuVAAzbpgAM26kADNusAAzbrwAM27IADNvDAAzbxgAM28kADNvMAAzbzwAM29EADNvcAAzb6gAM3H0ADNygAAzcwAAM3OAADNziAAzc5AAM3OYADNzoAAzc6wAM3OwADNztAAzc8AAM3PEADNzzAAzc9AAM3PcADNz6AAzc+wAM3PwADNz/AAzdAAAM3QUADN0eAAzdJwAM3SkADN0sAAzdNQAM3TgADN07AAzdPQAM3YYADN2qAAzd0QAM3fUADN34AAzd+gAM3fwADN3+AAzeAAAM3gIADN4DAAzeBgAM3h8ADN5AAAzeQgAM3kQADN5GAAzeSAAM3koADN5MAAzeTgAM3lAADN5xAAzedAAM3ncADN56AAzefQAM3oAADN6DAAzehgAM3okADN6LAAzfBgAM3wgADN8KAAzfDAAM3w8ADN8QAAzfEQAM3xIADN8TAAzfFQAM3xcADN8YAAzfGQAM3xsADN8cAAzflwAM35kADN+bAAzfnQAM36AADN+hAAzfogAM36MADN+kAAzfpgAM36gADN+pAAzfqgAM36wADN+tAAzgKAAM4CoADOAtAAzgLwAM4DIADOAzAAzgNAAM4DUADOA2AAzgOAAM4DoADOA7AAzgPAAM4D4ADOA/AAzgWAAM4FkADOBaAAzgXAAM4NcADODZAAzg2wAM4N0ADODgAAzg4QAM4OIADODjAAzg5AAM4OYADODoAAzg6QAM4OoADODsAAzg7QAM4WgADOFqAAzhbAAM4W4ADOFxAAzhcgAM4XMADOF0AAzhdQAM4XcADOF5AAzhegAM4XsADOF9AAzhfgAM4fkADOH7AAzh/QAM4f8ADOICAAziAwAM4gQADOIFAAziBgAM4ggADOIKAAziCwAM4gwADOIOAAziDwAM4ooADOKMAAzijgAM4pAADOKTAAzilAAM4pUADOKWAAzilwAM4pkADOKbAAzinAAM4p0ADOKfAAzioAAM4xsADOMdAAzjHwAM4yEADOMkAAzjJQAM4yYADOMnAAzjKAAM4yoADOMsAAzjLQAM4y4ADOMwAAzjMQAM43oADOOeAAzjxQAM4+kADOPsAAzj7wAM4/EADOPzAAzj9QAM4/cADOP4AAzj+wAM5BQADOQxAAzkNAAM5DcADOQ6AAzkPQAM5EAADORDAAzkRgAM5GMADORmAAzkaQAM5GwADORvAAzkcgAM5HUADOR4AAzkegAM5PUADOT3AAzk+gAM5PwADOT/AAzlAAAM5QEADOUCAAzlAwAM5QUADOUIAAzlCQAM5QoADOUMAAzlDQAM5YgADOWKAAzljQAM5Y8ADOWSAAzlkwAM5ZQADOWVAAzllgAM5ZgADOWbAAzlnAAM5Z0ADOWfAAzloAAM5hsADOYdAAzmIAAM5iIADOYlAAzmJgAM5icADOYoAAzmKQAM5isADOYuAAzmLwAM5jAADOYyAAzmMwAM5q4ADOawAAzmswAM5rUADOa4AAzmuQAM5roADOa7AAzmvAAM5r4ADObBAAzmwgAM5sMADObFAAzmxgAM50EADOdDAAznRQAM50cADOdKAAznSwAM50wADOdNAAznTgAM51AADOdTAAznVAAM51UADOdXAAznWAAM59MADOfVAAzn1wAM59kADOfcAAzn3QAM594ADOffAAzn4AAM5+IADOflAAzn5gAM5+cADOfpAAzn6gAM6GUADOhnAAzoagAM6GwADOhvAAzocAAM6HEADOhyAAzocwAM6HUADOh4AAzoeQAM6HoADOh8AAzofQAM6RAADOkzAAzpUwAM6XMADOl1AAzpdwAM6XkADOl7AAzpfgAM6X8ADOmAAAzpgwAM6YQADOmGAAzphwAM6YkADOmMAAzpjQAM6Y4ADOmRAAzpkgAM6ZcADOmwAAzpuQAM6bsADOm9AAzpxgAM6ckADOnMAAzpzgAM6hcADOo7AAzqYgAM6oYADOqJAAzqiwAM6o0ADOqPAAzqkQAM6pMADOqUAAzqlwAM6rAADOrRAAzq0wAM6tUADOrXAAzq2QAM6tsADOrdAAzq3wAM6uEADOsCAAzrBQAM6wgADOsLAAzrDgAM6xEADOsUAAzrFwAM6xoADOscAAzrlwAM65kADOubAAzrnQAM66AADOuhAAzrogAM66MADOukAAzrpgAM66gADOupAAzrqgAM66wADOutAAzsKAAM7CoADOwsAAzsLgAM7DEADOwyAAzsMwAM7DQADOw1AAzsNwAM7DkADOw6AAzsOwAM7D0ADOw+AAzsuQAM7LsADOy+AAzswAAM7MMADOzEAAzsxQAM7MYADOzHAAzsyQAM7MsADOzMAAzszQAM7M8ADOzQAAzs6QAM7OoADOzrAAzs7QAM7WgADO1qAAztbAAM7W4ADO1xAAztcgAM7XMADO10AAztdQAM7XcADO15AAztegAM7XsADO19AAztfgAM7fkADO37AAzt/QAM7f8ADO4CAAzuAwAM7gQADO4FAAzuBgAM7ggADO4KAAzuCwAM7gwADO4OAAzuDwAM7ooADO6MAAzujgAM7pAADO6TAAzulAAM7pUADO6WAAzulwAM7pkADO6bAAzunAAM7p0ADO6fAAzuoAAM7xsADO8dAAzvHwAM7yEADO8kAAzvJQAM7yYADO8nAAzvKAAM7yoADO8sAAzvLQAM7y4ADO8wAAzvMQAM76wADO+uAAzvsAAM77IADO+1AAzvtgAM77c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ADQFkAA0BZgANAWgADQFrAA0BbAANAW0ADQFuAA0BbwANAXEADQFzAA0BdAANAXUADQF3AA0BeAANAgsADQIuAA0CTgANAm4ADQJwAA0CcgANAnQADQJ2AA0CeQANAnoADQJ7AA0CfgANAn8ADQKBAA0CggANAoQADQKHAA0CiAANAokADQKMAA0CjQANApIADQKrAA0CtAANArYADQK4AA0CwQANAsQADQLHAA0CyQANAxIADQM2AA0DXQANA4EADQOEAA0DhgANA4gADQOKAA0DjAANA44ADQOPAA0DkgANA6sADQPMAA0DzgANA9AADQPSAA0D1AANA9YADQPYAA0D2gANA9wADQP9AA0EAAANBAMADQQGAA0ECQANBAwADQQPAA0EEgANBBUADQQXAA0EkgANBJQADQSWAA0EmAANBJsADQScAA0EnQANBJ4ADQSfAA0EoQANBKMADQSkAA0EpQANBKcADQSoAA0FIwANBSUADQUnAA0FKQANBSwADQUtAA0FLgANBS8ADQUwAA0FMgANBTQADQU1AA0FNgANBTgADQU5AA0FtAANBbYADQW5AA0FuwANBb4ADQW/AA0FwAANBcEADQXCAA0FxAANBcYADQXHAA0FyAANBcoADQXLAA0F5AANBeUADQXmAA0F6AANBmMADQZlAA0GZwANBmkADQZsAA0GbQANBm4ADQZvAA0GcAANBnIADQZ0AA0GdQANBnYADQZ4AA0GeQANBvQADQb2AA0G+AANBvoADQb9AA0G/gANBv8ADQcAAA0HAQANBwMADQcFAA0HBgANBwcADQcJAA0HCgANB4UADQeHAA0HiQANB4sADQeOAA0HjwANB5AADQeRAA0HkgANB5QADQeWAA0HlwANB5gADQeaAA0HmwANCBYADQgYAA0IGgANCBwADQgfAA0IIAANCCEADQgiAA0IIwANCCUADQgnAA0IKAANCCkADQgrAA0ILAANCKcADQipAA0IqwANCK0ADQiwAA0IsQANCLIADQizAA0ItAANCLYADQi4AA0IuQANCLoADQi8AA0IvQANCQYADQkqAA0JUQANCXUADQl4AA0JegANCXwADQl+AA0JgAANCYIADQmDAA0JhgANCZ8ADQm8AA0JvgANCcAADQnCAA0JxAANCcYADQnIAA0JygANCecADQnqAA0J7QANCfAADQnzAA0J9gANCfkADQn8AA0J/gANCnkADQp7AA0KfQANCn8ADQqCAA0KgwANCoQADQqFAA0KhgANCogADQqKAA0KiwANCowADQqOAA0KjwANCwoADQsMAA0LDgANCxAADQsTAA0LFAANCxUADQsWAA0LFwANCxkADQsbAA0LHAANCx0ADQsfAA0LIAANC5sADQudAA0LnwANC6EADQukAA0LpQANC6YADQunAA0LqAANC6oADQusAA0LrQANC64ADQuwAA0LsQANDCwADQwuAA0MMQANDDMADQw2AA0MNwANDDgADQw5AA0MOgANDDwADQw+AA0MPwANDEAADQxCAA0MQwANDL4ADQzAAA0MwgANDMQADQzHAA0MyAANDMkADQzKAA0MywANDM0ADQzPAA0M0AANDNEADQzTAA0M1AANDU8ADQ1RAA0NUwANDVUADQ1YAA0NWQANDVoADQ1bAA0NXAANDV4ADQ1gAA0NYQANDWIADQ1kAA0NZQANDeAADQ3iAA0N5AANDeYADQ3pAA0N6gANDesADQ3sAA0N7QANDe8ADQ3xAA0N8gANDfMADQ31AA0N9gANDgcADQ4IAA0OCgANDoUADQ6HAA0OiQANDosADQ6OAA0OjwANDpAADQ6RAA0OkgANDpQADQ6XAA0OmAANDpkADQ6bAA0OnAANDxcADQ8ZAA0PGwANDx0ADQ8gAA0PIQANDyIADQ8jAA0PJAANDyYADQ8pAA0PKgANDysADQ8tAA0PLgAND6kADQ+rAA0PrgAND7AADQ+zAA0PtAAND7UADQ+2AA0PtwAND7kADQ+8AA0PvQAND74ADQ/AAA0PwQANEFQADRB3AA0QlwANELcADRC5AA0QuwANEL0ADRC/AA0QwgANEMMADRDEAA0QxwANEMgADRDKAA0QywANEM4ADRDRAA0Q0gANENMADRDWAA0Q1wANENwADRD1AA0Q/gANEQAADREDAA0RDAANEQ8ADRESAA0RFAANEV0ADRGBAA0RqAANEcwADRHPAA0R0QANEdMADRHVAA0R1wANEdkADRHaAA0R3QANEfYADRIXAA0SGQANEhsADRIdAA0SHwANEiEADRIjAA0SJQANEicADRJIAA0SSwANEk4ADRJRAA0SVAANElcADRJaAA0SXQANEmAADRJiAA0S3QANEt8ADRLhAA0S4wANEuYADRLnAA0S6AANEukADRLqAA0S7AANEu4ADRLvAA0S8AANEvIADRLzAA0TbgANE3AADRNyAA0TdAANE3cADRN4AA0TeQANE3oADRN7AA0TfQANE38ADROAAA0TgQANE4MADROEAA0T/wANFAEADRQEAA0UBgANFAkADRQKAA0UCwANFAwADRQNAA0UDwANFBEADRQSAA0UEwANFBUADRQWAA0ULwANFDAADRQxAA0UMwANFK4ADRSwAA0UsgANFLQADRS3AA0UuAANFLkADRS6AA0UuwANFL0ADRS/AA0UwAANFMEADRTDAA0UxAANFT8ADRVBAA0VQwANFUUADRVIAA0VSQANFUoADRVLAA0VTAANFU4ADRVQAA0VUQANFVIADRVUAA0VVQANFdAADRXSAA0V1AANFdYADRXZAA0V2gANFdsADRXcAA0V3QANFd8ADRXhAA0V4gANFeMADRXlAA0V5gANFmEADRZjAA0WZQANFmcADRZqAA0WawANFmwADRZtAA0WbgANFnAADRZyAA0WcwANFnQADRZ2AA0WdwANFvIADRb0AA0W9gANFvgADRb7AA0W/AANFv0ADRb+AA0W/wANFwEADRcDAA0XBAANFwUADRcHAA0XCAANF1EADRd1AA0XnAANF8AADRfDAA0XxgANF8gADRfKAA0XzAANF84ADRfPAA0X0gANF+sADRgIAA0YCwANGA4ADRgRAA0YFAANGBcADRgaAA0YHQANGDoADRg9AA0YQAANGEMADRhGAA0YSQANGEwADRhPAA0YUQANGMwADRjOAA0Y0QANGNMADRjWAA0Y1wANGNgADRjZAA0Y2gANGNwADRjfAA0Y4AANGOEADRjjAA0Y5AANGV8ADRlhAA0ZZAANGWYADRlpAA0ZagANGWsADRlsAA0ZbQANGW8ADRlyAA0ZcwANGXQADRl2AA0ZdwANGfIADRn0AA0Z9wANGfkADRn8AA0Z/QANGf4ADRn/AA0aAAANGgIADRoFAA0aBgANGgcADRoJAA0aCgANGoUADRqHAA0aigANGowADRqPAA0akAANGpEADRqSAA0akwANGpUADRqYAA0amQANGpoADRqcAA0anQANGyAADRtEAA0baAANG4sADRuyAA0b0gANG/kADRwgAA0cQAANHGQADRyIAA0cigANHI0ADRyPAA0ckQANHJMADRyWAA0cmQANHJsADRydAA0coAANHKIADRykAA0cpwANHKoADRyrAA0csAANHMkADRzOAA0c0AANHNUADRzYAA0c2gANHSMADR1HAA0dbgANHZIADR2VAA0dlwANHZkADR2bAA0dnQANHZ8ADR2gAA0dowANHbwADR3hAA0d4wANHeUADR3nAA0d6QANHesADR3tAA0d7wANHfEADR3zAA0eGAANHhsADR4eAA0eIQANHiQADR4nAA0eKgANHi0ADR4wAA0eMwANHjUADR6wAA0esgANHrUADR63AA0eugANHrsADR68AA0evQANHr4ADR7AAA0ewgANHsMADR7EAA0exgANHscADR7YAA0e2QANHtsADR9WAA0fWAANH1oADR9cAA0fXwANH2AADR9hAA0fYgANH2MADR9lAA0fZwANH2gADR9pAA0fawANH2wADR/nAA0f6QANH+wADR/uAA0f8QANH/IADR/zAA0f9AANH/UADR/3AA0f+QANH/oADR/7AA0f/QANH/4ADSAPAA0gFAANIBcADSAZAA0gKgANIDMADSA2AA0gOQANIDsADSBXAA0gaQANIOQADSDmAA0g6AANIOoADSDtAA0g7gANIO8ADSDwAA0g8QANIPMADSD1AA0g9gANIPcADSD5AA0g+gANIXUADSF3AA0hegANIXwADSF/AA0hgAANIYEADSGCAA0hgwANIYUADSGHAA0hiAANIYkADSGLAA0hjAANIZ0ADSGeAA0hoAANIhsADSIdAA0iHwANIiEADSIkAA0iJQANIiYADSInAA0iKAANIioADSIsAA0iLQANIi4ADSIwAA0iMQANIqwADSKuAA0isQANIrMADSK2AA0itwANIrgADSK5AA0iugANIrwADSK+AA0ivwANIsAADSLCAA0iwwANItwADSLdAA0i3gANIuAADSNbAA0jXQANI18ADSNhAA0jZAANI2UADSNmAA0jZwANI2gADSNqAA0jbAANI20ADSNuAA0jcAANI3EADSPsAA0j7gANI/EADSPzAA0j9gANI/cADSP4AA0j+QANI/oADSP8AA0j/gANI/8ADSQAAA0kAgANJAMADSQRAA0kKgANJGkADSRsAA0kbwANJHIADSR1AA0keAANJHsADSR+AA0kgQANJIQADSSHAA0kigANJI0ADSSQAA0kkwANJJYADSTVAA0k2AANJNsADSTeAA0k4QANJOQADSTnAA0k6gANJO0ADSTwAA0k8wANJPYADST5AA0k/AANJP8ADSUCAA0lBAANJRoADSU2AA0lVAANJW4ADSWTAA0lmwANJa0ADSXAAA0l1gANJd8ADSX7AA0mDQANJhoADSYoAA0muwANJt4ADSb+AA0nHgANJyAADSciAA0nJAANJyYADScpAA0nKgANJysADScuAA0nLwANJzEADScyAA0nNAANJzcADSc4AA0nOQANJzwADSc9AA0nQgANJ1sADSdkAA0nZgANJ2gADSdxAA0ndAANJ3cADSd5AA0nwgANJ+YADSgNAA0oMQANKDQADSg2AA0oOAANKDoADSg8AA0oPgANKD8ADShCAA0oWwANKHwADSh+AA0ogAANKIIADSiEAA0ohgANKIgADSiKAA0ojAANKK0ADSiwAA0oswANKLYADSi5AA0ovAANKL8ADSjCAA0oxQANKMcADSlCAA0pRAANKUYADSlIAA0pSwANKUwADSlNAA0pTgANKU8ADSlRAA0pUwANKVQADSlVAA0pVwANKVgADSnTAA0p1QANKdcADSnZAA0p3AANKd0ADSneAA0p3wANKeAADSniAA0p5AANKeUADSnmAA0p6AANKekADSpkAA0qZgANKmkADSprAA0qbgANKm8ADSpwAA0qcQANKnIADSp0AA0qdgANKncADSp4AA0qegANKnsADSqUAA0qlQANKpYADSqYAA0rEwANKxUADSsXAA0rGQANKxwADSsdAA0rHgANKx8ADSsgAA0rIgANKyQADSslAA0rJgANKygADSspAA0rpAANK6YADSuoAA0rqgANK60ADSuuAA0rrwANK7AADSuxAA0rswANK7UADSu2AA0rtwANK7kADSu6AA0sNQANLDcADSw5AA0sOwANLD4ADSw/AA0sQAANLEEADSxCAA0sRAANLEYADSxHAA0sSAANLEoADSxLAA0sxgANLMgADSzKAA0szAANLM8ADSzQAA0s0QANLNIADSzTAA0s1QANLNcADSzYAA0s2QANLNsADSzcAA0tVwANLVkADS1bAA0tXQANLWAADS1hAA0tYgANLWMADS1kAA0tZgANLWgADS1pAA0tagANLWwADS1tAA0ttgANLdoADS4BAA0uJQANLigADS4qAA0uLAANLi4ADS4wAA0uMgANLjMADS42AA0uTwANLmwADS5uAA0ucAANLnIADS50AA0udgANLngADS56AA0ulwANLpoADS6dAA0uoAANLqMADS6mAA0uqQANLqwADS6uAA0vKQANLysADS8tAA0vLwANLzIADS8zAA0vNAANLzUADS82AA0vOAANLzoADS87AA0vPAANLz4ADS8/AA0vugANL7wADS++AA0vwAANL8MADS/EAA0vxQANL8YADS/HAA0vyQANL8sADS/MAA0vzQANL88ADS/QAA0wSwANME0ADTBPAA0wUQANMFQADTBVAA0wVgANMFcADTBYAA0wWgANMFwADTBdAA0wXgANMGAADTBhAA0w3AANMN4ADTDhAA0w4wANMOYADTDnAA0w6AANMOkADTDqAA0w7AANMO4ADTDvAA0w8AANMPIADTDzAA0xbgANMXAADTFyAA0xdAANMXcADTF4AA0xeQANMXoADTF7AA0xfQANMX8ADTGAAA0xgQANMYMADTGEAA0x/wANMgEADTIDAA0yBQANMggADTIJAA0yCgANMgsADTIMAA0yDgANMhAADTIRAA0yEgANMhQADTIVAA0ykAANMpIADTKUAA0ylgANMpkADTKaAA0ymwANMpwADTKdAA0ynwANMqEADTKiAA0yowANMqUADTKmAA0zOQANM1wADTN8AA0znAANM54ADTOgAA0zogANM6QADTOnAA0zqAANM6kADTOsAA0zrQANM68ADTOwAA0zsgANM7UADTO2AA0ztwANM7oADTO7AA0zwAANM9kADTPiAA0z5AANM+YADTPvAA0z8gANM/UADTP3AA00QAANNGQADTSLAA00rwANNLIADTS0AA00tgANNLgADTS6AA00vAANNL0ADTTAAA002QANNPoADTT8AA00/gANNQAADTUCAA01BAANNQYADTUIAA01CgANNSsADTUuAA01MQANNTQADTU3AA01OgANNT0ADTVAAA01QwANNUUADTXAAA01wgANNcQADTXGAA01yQANNcoADTXLAA01zAANNc0ADTXPAA010QANNdIADTXTAA011QANNdYADTZRAA02UwANNlUADTZXAA02WgANNlsADTZcAA02XQANNl4ADTZgAA02YgANNmMADTZkAA02ZgANNmcADTbiAA025AANNucADTbpAA027AANNu0ADTbuAA027wANNvAADTbyAA029AANNvUADTb2AA02+AANNvkADTcSAA03EwANNxQADTcWAA03kQANN5MADTeVAA03lwANN5oADTebAA03nAANN50ADTeeAA03oAANN6IADTejAA03pAANN6YADTenAA04IgANOCQADTgmAA04KAANOCsADTgsAA04LQANOC4ADTgvAA04MQANODMADTg0AA04NQANODcADTg4AA04swANOLUADTi3AA04uQANOLwADTi9AA04vgANOL8ADTjAAA04wgANOMQADTjFAA04xgANOMgADTjJAA05RAANOUYADTlIAA05SgANOU0ADTlOAA05TwANOVAADTlRAA05UwANOVUADTlWAA05VwANOVkADTlaAA051QANOdcADTnZAA052wANOd4ADTnfAA054AANOeEADTniAA055AANOeYADTnnAA056AANOeoADTnrAA06NAANOlgADTp/AA06owANOqYADTqoAA06qgANOqwADTquAA06sAANOrEADTq0AA06zQANOuoADTrsAA067gANOvAADTryAA069AANOvYADTr4AA07FQANOxgADTsbAA07HgANOyEADTskAA07JwANOyoADTssAA07pwANO6kADTurAA07rQANO7AADTuxAA07sgANO7MADTu0AA07tgANO7gADTu5AA07ugANO7wADTu9AA08OAANPDoADTw8AA08PgANPEEADTxCAA08QwANPEQADTxFAA08RwANPEkADTxKAA08SwANPE0ADTxOAA08yQANPMsADTzNAA08zwANPNIADTzTAA081AANPNUADTzWAA082AANPNoADTzbAA083AANPN4ADTzfAA09WgANPVwADT1fAA09YQANPWQADT1lAA09ZgANPWcADT1oAA09agANPWwADT1tAA09bgANPXAADT1xAA097AANPe4ADT3wAA098gANPfUADT32AA099wANPfgADT35AA09+wANPf0ADT3+AA09/wANPgEADT4CAA0+fQANPn8ADT6CAA0+hAANPocADT6IAA0+iQANPooADT6LAA0+jQANPo8ADT6QAA0+kQANPpMADT6UAA0+owANPx4ADT8gAA0/IgANPyQADT8nAA0/KAANPykADT8qAA0/KwANPy0ADT8vAA0/MAANPzEADT8zAA0/NAANP8cADT/qAA1ACgANQCoADUAsAA1ALgANQDAADUAyAA1ANQANQDYADUA3AA1AOgANQDsADUA9AA1APgANQEAADUBDAA1ARAANQEUADUBIAA1ASQANQE4ADUBnAA1AcAANQHIADUB0AA1AfQANQIAADUCDAA1AhQANQM4ADUDyAA1BGQANQT0ADUFAAA1BQgANQUQADUFGAA1BSAANQUoADUFLAA1BTgANQWcADUGIAA1BigANQYwADUGOAA1BkAANQZIADUGUAA1BlgANQZgADUG5AA1BvAANQb8ADUHCAA1BxQANQcgADUHLAA1BzgANQdEADUHTAA1CTgANQlAADUJSAA1CVAANQlcADUJYAA1CWQANQloADUJbAA1CXQANQl8ADUJgAA1CYQANQmMADUJkAA1C3wANQuEADULjAA1C5QANQugADULpAA1C6gANQusADULsAA1C7gANQvAADULxAA1C8gANQvQADUL1AA1DcAANQ3IADUN1AA1DdwANQ3oADUN7AA1DfAANQ30ADUN+AA1DgAANQ4IADUODAA1DhAANQ4YADUOHAA1DoAANQ6EADUOiAA1DpAANRB8ADUQhAA1EIwANRCUADUQoAA1EKQANRCoADUQrAA1ELAANRC4ADUQwAA1EMQANRDIADUQ0AA1ENQANRLAADUSyAA1EtAANRLYADUS5AA1EugANRLsADUS8AA1EvQANRL8ADUTBAA1EwgANRMMADUTFAA1ExgANRUEADUVDAA1FRQANRUcADUVKAA1FSwANRUwADUVNAA1FTgANRVAADUVSAA1FUwANRVQADUVWAA1FVwANRdIADUXUAA1F1gANRdgADUXbAA1F3AANRd0ADUXeAA1F3wANReEADUXjAA1F5AANReUADUXnAA1F6AANRmMADUZlAA1GZwANRmkADUZsAA1GbQANRm4ADUZvAA1GcAANRnIADUZ0AA1GdQANRnYADUZ4AA1GeQANRsIADUbmAA1HDQANRzEADUc0AA1HNgANRzgADUc6AA1HPAANRz4ADUc/AA1HQgANR1sADUd4AA1HegANR3wADUd+AA1HgAANR4IADUeEAA1HhgANR6MADUemAA1HqQANR6wADUevAA1HsgANR7UADUe4AA1HugANSDUADUg3AA1IOQANSDsADUg+AA1IPwANSEAADUhBAA1IQgANSEQADUhGAA1IRwANSEgADUhKAA1ISwANSMYADUjIAA1IygANSMwADUjPAA1I0AANSNEADUjSAA1I0wANSNUADUjXAA1I2AANSNkADUjbAA1I3AANSVcADUlZAA1JWwANSV0ADUlgAA1JYQANSWIADUljAA1JZAANSWYADUloAA1JaQANSWoADUlsAA1JbQANSegADUnqAA1J7QANSe8ADUnyAA1J8wANSfQADUn1AA1J9gANSfgADUn6AA1J+wANSfwADUn+AA1J/wANSnoADUp8AA1KfgANSoAADUqDAA1KhAANSoUADUqGAA1KhwANSokADUqLAA1KjAANSo0ADUqPAA1KkAANSwsADUsNAA1LDwANSxEADUsUAA1LFQANSxYADUsXAA1LGAANSxoADUscAA1LHQANSx4ADUsgAA1LIQANS5wADUueAA1LoAANS6IADUulAA1LpgANS6cADUuoAA1LqQANS6sADUutAA1LrgANS68ADUuxAA1LsgANTEUADUxoAA1MiAANTKgADUyqAA1MrAANTK4ADUywAA1MswANTLQADUy1AA1MuAANTLkADUy7AA1MvAANTL4ADUzBAA1MwgANTMMADUzGAA1MxwANTMwADUzlAA1M7gANTPAADUzyAA1M+wANTP4ADU0BAA1NAwANTUwADU1wAA1NlwANTbsADU2+AA1NwAANTcIADU3EAA1NxgANTcgADU3JAA1NzAANTeUADU4GAA1OCAANTgoADU4MAA1ODgANThAADU4SAA1OFAANThYADU43AA1OOgANTj0ADU5AAA1OQwANTkYADU5JAA1OTAANTk8ADU5RAA1OzAANTs4ADU7QAA1O0gANTtUADU7WAA1O1wANTtgADU7ZAA1O2wANTt0ADU7eAA1O3wANTuEADU7iAA1PXQANT18ADU9hAA1PYwANT2YADU9nAA1PaAANT2kADU9qAA1PbAANT24ADU9vAA1PcAANT3IADU9zAA1P7gANT/AADU/zAA1P9QANT/gADU/5AA1P+gANT/sADU/8AA1P/gANUAAADVABAA1QAgANUAQADVAFAA1QHgANUB8ADVAgAA1QIgANUJ0ADVCfAA1QoQANUKMADVCmAA1QpwANUKgADVCpAA1QqgANUKwADVCuAA1QrwANULAADVCyAA1QswANUS4ADVEwAA1RMgANUTQADVE3AA1ROAANUTkADVE6AA1ROwANUT0ADVE/AA1RQAANUUEADVFDAA1RRAANUb8ADVHBAA1RwwANUcUADVHIAA1RyQANUcoADVHLAA1RzAANUc4ADVHQAA1R0QANUdIADVHUAA1R1QANUlAADVJSAA1SVAANUlYADVJZAA1SWgANUlsADVJcAA1SXQANUl8ADVJhAA1SYgANUmMADVJlAA1SZgANUuEADVLjAA1S5QANUucADVLqAA1S6wANUuwADVLtAA1S7gANUvAADVLyAA1S8wANUvQADVL2AA1S9wANU0AADVNkAA1TiwANU68ADVOyAA1TtAANU7YADVO4AA1TugANU7wADVO9AA1TwAANU9kADVP2AA1T+AANU/oADVP8AA1T/gANVAAADVQCAA1UBAANVCEADVQkAA1UJwANVCoADVQtAA1UMAANVDMADVQ2AA1UOAANVLMADVS1AA1UtwANVLkADVS8AA1UvQANVL4ADVS/AA1UwAANVMIADVTEAA1UxQANVMYADVTIAA1UyQANVUQADVVGAA1VSAANVUoADVVNAA1VTgANVU8ADVVQAA1VUQANVVMADVVVAA1VVgANVVcADVVZAA1VWgANVdUADVXXAA1V2QANVdsADVXeAA1V3wANVeAADVXhAA1V4gANVeQADVXmAA1V5wANVegADVXqAA1V6wANVmYADVZoAA1WawANVm0ADVZwAA1WcQANVnIADVZzAA1WdAANVnYADVZ4AA1WeQANVnoADVZ8AA1WfQANVvgADVb6AA1W/AANVv4ADVcBAA1XAgANVwMADVcEAA1XBQANVwcADVcJAA1XCgANVwsADVcNAA1XDgANV4kADVeLAA1XjgANV5AADVeTAA1XlAANV5UADVeWAA1XlwANV5kADVebAA1XnAANV50ADVefAA1XoAANV68ADVgqAA1YLAANWC4ADVgwAA1YMwANWDQADVg1AA1YNgANWDcADVg5AA1YOwANWDwADVg9AA1YPwANWEAADVjTAA1Y9gANWRYADVk2AA1ZOAANWToADVk8AA1ZPgANWUEADVlCAA1ZQwANWUYADVlHAA1ZSQANWUoADVlMAA1ZTwANWVAADVlRAA1ZVAANWVUADVlaAA1ZcwANWXwADVl+AA1ZgAANWYkADVmMAA1ZjwANWZEADVnaAA1Z/gANWiUADVpJAA1aTAANWk4ADVpQAA1aUgANWlQADVpWAA1aVwANWloADVpzAA1alAANWpYADVqYAA1amgANWpwADVqeAA1aoAANWqIADVqkAA1axQANWsgADVrLAA1azgANWtEADVrUAA1a1wANWtoADVrdAA1a3wANW1oADVtcAA1bXgANW2AADVtjAA1bZAANW2UADVtmAA1bZwANW2kADVtrAA1bbAANW20ADVtvAA1bcAANW+sADVvtAA1b7wANW/EADVv0AA1b9QANW/YADVv3AA1b+AANW/oADVv8AA1b/QANW/4ADVwAAA1cAQANXHwADVx+AA1cgQANXIMADVyGAA1chwANXIgADVyJAA1cigANXIwADVyOAA1cjwANXJAADVySAA1ckwANXKwADVytAA1crgANXLAADV0rAA1dLQANXS8ADV0xAA1dNAANXTUADV02AA1dNwANXTgADV06AA1dPAANXT0ADV0+AA1dQAANXUEADV28AA1dvgANXcAADV3CAA1dxQANXcYADV3HAA1dyAANXckADV3LAA1dzQANXc4ADV3PAA1d0QANXdIADV5NAA1eTwANXlEADV5TAA1eVgANXlcADV5YAA1eWQANXloADV5cAA1eXgANXl8ADV5gAA1eYgANXmMADV7eAA1e4AANXuIADV7kAA1e5wANXugADV7pAA1e6gANXusADV7tAA1e7wANXvAADV7xAA1e8wANXvQADV9vAA1fcQANX3MADV91AA1feAANX3kADV96AA1fewANX3wADV9+AA1fgAANX4EADV+CAA1fhAANX4UADV/OAA1f8gANYBkADWA9AA1gQAANYEIADWBEAA1gRgANYEgADWBKAA1gSwANYE4ADWBnAA1ghAANYIYADWCIAA1gigANYIwADWCOAA1gkAANYJIADWCvAA1gsgANYLUADWC4AA1guwANYL4ADWDBAA1gxAANYMYADWFBAA1hQwANYUUADWFHAA1hSgANYUsADWFMAA1hTQANYU4ADWFQAA1hUgANYVMADWFUAA1hVgANYVcADWHSAA1h1AANYdYADWHYAA1h2wANYdwADWHdAA1h3gANYd8ADWHhAA1h4wANYeQADWHlAA1h5wANYegADWJjAA1iZQANYmcADWJpAA1ibAANYm0ADWJuAA1ibwANYnAADWJyAA1idAANYnUADWJ2AA1ieAANYnkADWL0AA1i9gANYvkADWL7AA1i/gANYv8ADWMAAA1jAQANYwIADWMEAA1jBgANYwcADWMIAA1jCgANYwsADWOGAA1jiAANY4oADWOMAA1jjwANY5AADWORAA1jkgANY5MADWOVAA1jlwANY5gADWOZAA1jmwANY5wADWQXAA1kGQANZBsADWQdAA1kIAANZCEADWQiAA1kIwANZCQADWQmAA1kKAANZCkADWQqAA1kLAANZC0ADWSoAA1kqgANZKwADWSuAA1ksQANZLIADWSzAA1ktAANZLUADWS3AA1kuQANZLoADWS7AA1kvQANZL4ADWVRAA1ldAANZZQADWW0AA1ltgANZbgADWW6AA1lvAANZb8ADWXAAA1lwQANZcQADWXFAA1lxwANZcgADWXLAA1lzgANZc8ADWXQAA1l0wANZdQADWXZAA1l8gANZfsADWX9AA1mAAANZgkADWYMAA1mDwANZhEADWZaAA1mfgANZqUADWbJAA1mzAANZs4ADWbQAA1m0gANZtQADWbWAA1m1wANZtoADWbzAA1nFAANZxYADWcYAA1nGgANZxwADWceAA1nIAANZyIADWckAA1nRQANZ0gADWdLAA1nTgANZ1EADWdUAA1nVwANZ1oADWddAA1nXwANZ9oADWfcAA1n3gANZ+AADWfjAA1n5AANZ+UADWfmAA1n5wANZ+kADWfrAA1n7AANZ+0ADWfvAA1n8AANaGsADWhtAA1obwANaHEADWh0AA1odQANaHYADWh3AA1oeAANaHoADWh8AA1ofQANaH4ADWiAAA1ogQANaPwADWj+AA1pAQANaQMADWkGAA1pBwANaQgADWkJAA1pCgANaQwADWkOAA1pDwANaRAADWkSAA1pEwANaSwADWktAA1pLgANaTAADWmrAA1prQANaa8ADWmxAA1ptAANabUADWm2AA1ptwANabgADWm6AA1pvAANab0ADWm+AA1pwAANacEADWo8AA1qPgANakAADWpCAA1qRQANakYADWpHAA1qSAANakkADWpLAA1qTQANak4ADWpPAA1qUQANalIADWrNAA1qzwANatEADWrTAA1q1gANatcADWrYAA1q2QANatoADWrcAA1q3gANat8ADWrgAA1q4gANauMADWteAA1rYAANa2IADWtkAA1rZwANa2gADWtpAA1ragANa2sADWttAA1rbwANa3AADWtxAA1rcwANa3QADWvvAA1r8QANa/MADWv1AA1r+AANa/kADWv6AA1r+wANa/wADWv+AA1sAAANbAEADWwCAA1sBAANbAUADWxOAA1scgANbJkADWy9AA1swAANbMMADWzFAA1sxwANbMkADWzLAA1szAANbM8ADWzoAA1tBQANbQgADW0LAA1tDgANbREADW0UAA1tFwANbRoADW03AA1tOgANbT0ADW1AAA1tQwANbUYADW1JAA1tTAANbU4ADW3JAA1tywANbc4ADW3QAA1t0wANbdQADW3VAA1t1gANbdcADW3ZAA1t3AANbd0ADW3eAA1t4AANbeEADW5cAA1uXgANbmEADW5jAA1uZgANbmcADW5oAA1uaQANbmoADW5sAA1ubwANbnAADW5xAA1ucwANbnQADW7vAA1u8QANbvQADW72AA1u+QANbvoADW77AA1u/AANbv0ADW7/AA1vAgANbwMADW8EAA1vBgANbwcADW+CAA1vhAANb4cADW+JAA1vjAANb40ADW+OAA1vjwANb5AADW+SAA1vlQANb5YADW+XAA1vmQANb5oADXAdAA1wQQANcGUADXCIAA1wrwANcM8ADXD2AA1xHQANcT0ADXFhAA1xhQANcYcADXGKAA1xjAANcY4ADXGQAA1xkwANcZYADXGYAA1xmgANcZ0ADXGfAA1xoQANcaQADXGnAA1xqAANca0ADXHGAA1xywANcc0ADXHSAA1x1QANcdcADXIgAA1yRAANcmsADXKPAA1ykgANcpQADXKWAA1ymAANcpoADXKcAA1ynQANcqAADXK5AA1y3gANcuAADXLiAA1y5AANcuYADXLoAA1y6gANcuwADXLuAA1y8AANcxUADXMYAA1zGwANcx4ADXMhAA1zJAANcycADXMqAA1zLQANczAADXMyAA1zrQANc68ADXOyAA1ztAANc7cADXO4AA1zuQANc7oADXO7AA1zvQANc78ADXPAAA1zwQANc8MADXPEAA1z1QANc9YADXPYAA10UwANdFUADXRXAA10WQANdFwADXRdAA10XgANdF8ADXRgAA10YgANdGQADXRlAA10ZgANdGgADXRpAA105AANdOYADXTpAA106wANdO4ADXTvAA108AANdPEADXTyAA109AANdPYADXT3AA10+AANdPoADXT7AA11DAANdREADXUUAA11FgANdScADXU4AA11OwANdT4ADXVBAA11RAANdUYADXViAA11dAANdX4ADXWRAA12DAANdg4ADXYQAA12EgANdhUADXYWAA12FwANdhgADXYZAA12GwANdh0ADXYeAA12HwANdiEADXYiAA12nQANdp8ADXaiAA12pAANdqcADXaoAA12qQANdqoADXarAA12rQANdq8ADXawAA12sQANdrMADXa0AA12xQANdsYADXbIAA13QwANd0UADXdHAA13SQANd0wADXdNAA13TgANd08ADXdQAA13UgANd1QADXdVAA13VgANd1gADXdZAA131AANd9YADXfZAA132wANd94ADXffAA134AANd+EADXfiAA135AANd+YADXfnAA136AANd+oADXfrAA14BAANeAUADXgGAA14CAANeIMADXiFAA14hwANeIkADXiMAA14jQANeI4ADXiPAA14kAANeJIADXiUAA14lQANeJYADXiYAA14mQANeRQADXkWAA15GQANeRsADXkeAA15HwANeSAADXkhAA15IgANeSQADXkmAA15JwANeSgADXkqAA15KwANeTkADXlSAA15awANeW4ADXlxAA15dAANeXcADXl6AA15fQANeZYADXmZAA15nAANeZ8ADXmiAA15pQANeagADXmqAA15xgANedgADXnrAA159gANeokADXqsAA16zAANeuwADXruAA168AANevIADXr0AA169wANevgADXr5AA16/AANev0ADXr/AA17AAANewIADXsFAA17BgANewcADXsKAA17CwANexAADXspAA17MgANezQADXs2AA17PwANe0IADXtFAA17RwANe5AADXu0AA172wANe/8ADXwCAA18BAANfAYADXwIAA18CgANfAwADXwNAA18EAANfCkADXxKAA18TAANfE4ADXxQAA18UgANfFQADXxWAA18WAANfFoADXx7AA18fgANfIEADXyEAA18hwANfIoADXyNAA18kAANfJMADXyVAA19EAANfRIADX0UAA19FgANfRkADX0aAA19GwANfRwADX0dAA19HwANfSEADX0iAA19IwANfSUADX0mAA19oQANfaMADX2lAA19pwANfaoADX2rAA19rAANfa0ADX2uAA19sAANfbIADX2zAA19tAANfbYADX23AA1+MgANfjQADX43AA1+OQANfjwADX49AA1+PgANfj8ADX5AAA1+QgANfkQADX5FAA1+RgANfkgADX5JAA1+YgANfmMADX5kAA1+ZgANfuEADX7jAA1+5QANfucADX7qAA1+6wANfuwADX7tAA1+7gANfvAADX7yAA1+8wANfvQADX72AA1+9wANf3IADX90AA1/dgANf3gADX97AA1/fAANf30ADX9+AA1/fwANf4EADX+DAA1/hAANf4UADX+HAA1/iAANgAMADYAFAA2ABwANgAkADYAMAA2ADQANgA4ADYAPAA2AEAANgBIADYAUAA2AFQANgBYADYAYAA2AGQANgJQADYCWAA2AmAANgJoADYCdAA2AngANgJ8ADYCgAA2AoQANgKMADYClAA2ApgANgKcADYCpAA2AqgANgSUADYEnAA2BKQANgSsADYEuAA2BLwANgTAADYExAA2BMgANgTQADYE2AA2BNwANgTgADYE6AA2BOwANgYQADYGoAA2BzwANgfMADYH2AA2B+AANgfoADYH8AA2B/gANggAADYIBAA2CBAANgh0ADYI6AA2CPAANgj4ADYJAAA2CQgANgkQADYJGAA2CSAANgmUADYJoAA2CawANgm4ADYJxAA2CdAANgncADYJ6AA2CfAANgvcADYL5AA2C+wANgv0ADYMAAA2DAQANgwIADYMDAA2DBAANgwYADYMIAA2DCQANgwoADYMMAA2DDQANg4gADYOKAA2DjAANg44ADYORAA2DkgANg5MADYOUAA2DlQANg5cADYOZAA2DmgANg5sADYOdAA2DngANhBkADYQbAA2EHQANhB8ADYQiAA2EIwANhCQADYQlAA2EJgANhCgADYQqAA2EKwANhCwADYQuAA2ELwANhKoADYSsAA2ErgANhLAADYSzAA2EtAANhLUADYS2AA2EtwANhLkADYS7AA2EvAANhL0ADYS/AA2EwAANhTsADYU9AA2FPwANhUEADYVEAA2FRQANhUYADYVHAA2FSAANhUoADYVMAA2FTQANhU4ADYVQAA2FUQANhcwADYXOAA2F0QANhdMADYXWAA2F1wANhdgADYXZAA2F2gANhdwADYXeAA2F3wANheAADYXiAA2F4wANhfIADYZtAA2GbwANhnEADYZzAA2GdgANhncADYZ4AA2GeQANhnoADYZ8AA2GfgANhn8ADYaAAA2GggANhoMADYcWAA2HOQANh1kADYd5AA2HewANh30ADYd/AA2HgQANh4QADYeFAA2HhgANh4kADYeKAA2HjAANh40ADYeQAA2HkwANh5QADYeVAA2HmAANh5kADYeeAA2HtwANh8AADYfCAA2HxQANh84ADYfRAA2H1AANh9YADYgfAA2IQwANiGoADYiOAA2IkQANiJMADYiVAA2IlwANiJkADYibAA2InAANiJ8ADYi4AA2I2QANiNsADYjdAA2I3wANiOEADYjjAA2I5QANiOcADYjpAA2JCgANiQ0ADYkQAA2JEwANiRYADYkZAA2JHAANiR8ADYkiAA2JJAANiZ8ADYmhAA2JowANiaUADYmoAA2JqQANiaoADYmrAA2JrAANia4ADYmwAA2JsQANibIADYm0AA2JtQANijAADYoyAA2KNAANijYADYo5AA2KOgANijsADYo8AA2KPQANij8ADYpBAA2KQgANikMADYpFAA2KRgANisEADYrDAA2KxgANisgADYrLAA2KzAANis0ADYrOAA2KzwANitEADYrTAA2K1AANitUADYrXAA2K2AANivEADYryAA2K8wANivUADYtwAA2LcgANi3QADYt2AA2LeQANi3oADYt7AA2LfAANi30ADYt/AA2LgQANi4IADYuDAA2LhQANi4YADYwBAA2MAwANjAUADYwHAA2MCgANjAsADYwMAA2MDQANjA4ADYwQAA2MEgANjBMADYwUAA2MFgANjBcADYySAA2MlAANjJYADYyYAA2MmwANjJwADYydAA2MngANjJ8ADYyhAA2MowANjKQADYylAA2MpwANjKgADY0jAA2NJQANjScADY0pAA2NLAANjS0ADY0uAA2NLwANjTAADY0yAA2NNAANjTUADY02AA2NOAANjTkADY20AA2NtgANjbgADY26AA2NvQANjb4ADY2/AA2NwAANjcEADY3DAA2NxQANjcYADY3HAA2NyQANjcoADY4TAA2ONwANjl4ADY6CAA2OhQANjogADY6KAA2OjAANjo4ADY6QAA2OkQANjpQADY6tAA2OygANjs0ADY7QAA2O0wANjtYADY7ZAA2O3AANjt8ADY78AA2O/wANjwIADY8FAA2PCAANjwsADY8OAA2PEQANjxMADY+OAA2PkAANj5MADY+VAA2PmAANj5kADY+aAA2PmwANj5wADY+eAA2PoQANj6IADY+jAA2PpQANj6YADZAhAA2QIwANkCYADZAoAA2QKwANkCwADZAtAA2QLgANkC8ADZAxAA2QNAANkDUADZA2AA2QOAANkDkADZC0AA2QtgANkLkADZC7AA2QvgANkL8ADZDAAA2QwQANkMIADZDEAA2QxwANkMgADZDJAA2QywANkMwADZFHAA2RSQANkUwADZFOAA2RUQANkVIADZFTAA2RVAANkVUADZFXAA2RWgANkVsADZFcAA2RXgANkV8ADZHaAA2R3AANkd4ADZHgAA2R4wANkeQADZHlAA2R5gANkecADZHpAA2R7AANke0ADZHuAA2R8AANkfEADZJsAA2SbgANknAADZJyAA2SdQANknYADZJ3AA2SeAANknkADZJ7AA2SfgANkn8ADZKAAA2SggANkoMADZL+AA2TAAANkwMADZMFAA2TCAANkwkADZMKAA2TCwANkwwADZMOAA2TEQANkxIADZMTAA2TFQANkxYADZOpAA2TzAANk+wADZQMAA2UDgANlBAADZQSAA2UFAANlBcADZQYAA2UGQANlBwADZQdAA2UHwANlCAADZQiAA2UJQANlCYADZQnAA2UKgANlCsADZQwAA2USQANlFIADZRUAA2UVgANlF8ADZRiAA2UZQANlGcADZSwAA2U1AANlPsADZUfAA2VIgANlSQADZUmAA2VKAANlSoADZUsAA2VLQANlTAADZVJAA2VagANlWwADZVuAA2VcAANlXIADZV0AA2VdgANlXgADZV6AA2VmwANlZ4ADZWhAA2VpAANlacADZWqAA2VrQANlbAADZWzAA2VtQANljAADZYyAA2WNAANljYADZY5AA2WOgANljsADZY8AA2WPQANlj8ADZZBAA2WQgANlkMADZZFAA2WRgANlsEADZbDAA2WxQANlscADZbKAA2WywANlswADZbNAA2WzgANltAADZbSAA2W0wANltQADZbWAA2W1wANl1IADZdUAA2XVwANl1kADZdcAA2XXQANl14ADZdfAA2XYAANl2IADZdkAA2XZQANl2YADZdoAA2XaQANl4IADZeDAA2XhAANl4YADZgBAA2YAwANmAUADZgHAA2YCgANmAsADZgMAA2YDQANmA4ADZgQAA2YEgANmBMADZgUAA2YFgANmBcADZiSAA2YlAANmJYADZiYAA2YmwANmJwADZidAA2YngANmJ8ADZihAA2YowANmKQADZilAA2YpwANmKgADZkjAA2ZJQANmScADZkpAA2ZLAANmS0ADZkuAA2ZLwANmTAADZkyAA2ZNAANmTUADZk2AA2ZOAANmTkADZm0AA2ZtgANmbgADZm6AA2ZvQANmb4ADZm/AA2ZwAANmcEADZnDAA2ZxQANmcYADZnHAA2ZyQANmcoADZpFAA2aRwANmkkADZpLAA2aTgANmk8ADZpQAA2aUQANmlIADZpUAA2aVgANmlcADZpYAA2aWgANmlsADZqkAA2ayAANmu8ADZsTAA2bFgANmxgADZsaAA2bHAANmx4ADZsgAA2bIQANmyQADZs9AA2bWgANm1wADZteAA2bYAANm2IADZtkAA2bZgANm2gADZuFAA2biAANm4sADZuOAA2bkQANm5QADZuXAA2bmgANm5wADZwXAA2cGQANnBsADZwdAA2cIAANnCEADZwiAA2cIwANnCQADZwmAA2cKAANnCkADZwqAA2cLAANnC0ADZyoAA2cqgANnKwADZyuAA2csQANnLIADZyzAA2ctAANnLUADZy3AA2cuQANnLoADZy7AA2cvQANnL4ADZ05AA2dOwANnT0ADZ0/AA2dQgANnUMADZ1EAA2dRQANnUYADZ1IAA2dSgANnUsADZ1MAA2dTgANnU8ADZ3KAA2dzAANnc8ADZ3RAA2d1AANndUADZ3WAA2d1wANndgADZ3aAA2d3AANnd0ADZ3eAA2d4AANneEADZ5cAA2eXgANnmAADZ5iAA2eZQANnmYADZ5nAA2eaAANnmkADZ5rAA2ebQANnm4ADZ5vAA2ecQANnnIADZ7tAA2e7wANnvEADZ7zAA2e9gANnvcADZ74AA2e+QANnvoADZ78AA2e/gANnv8ADZ8AAA2fAgANnwMADZ9+AA2fgAANn4IADZ+EAA2fhwANn4gADZ+JAA2figANn4sADZ+NAA2fjwANn5AADZ+RAA2fkwANn5QADaAnAA2gSgANoGoADaCKAA2gjAANoI4ADaCQAA2gkgANoJUADaCWAA2glwANoJoADaCbAA2gnQANoJ4ADaCgAA2gowANoKQADaClAA2gqAANoKkADaCyAA2gywANoNQADaDWAA2g2AANoOEADaDkAA2g5wANoOkADaEyAA2hVgANoX0ADaGhAA2hpAANoaYADaGoAA2hqgANoawADaGuAA2hrwANobIADaHLAA2h7AANoe4ADaHwAA2h8gANofQADaH2AA2h+AANofoADaH8AA2iHQANoiAADaIjAA2iJgANoikADaIsAA2iLwANojIADaI1AA2iNwANorIADaK0AA2itgANorgADaK7AA2ivAANor0ADaK+AA2ivwANosEADaLDAA2ixAANosUADaLHAA2iyAANo0MADaNFAA2jRwANo0kADaNMAA2jTQANo04ADaNPAA2jUAANo1IADaNUAA2jVQANo1YADaNYAA2jWQANo9QADaPWAA2j2QANo9sADaPeAA2j3wANo+AADaPhAA2j4gANo+QADaPmAA2j5wANo+gADaPqAA2j6wANpAQADaQFAA2kBgANpAgADaSDAA2khQANpIcADaSJAA2kjAANpI0ADaSOAA2kjwANpJAADaSSAA2klAANpJUADaSWAA2kmAANpJkADaUUAA2lFgANpRgADaUaAA2lHQANpR4ADaUfAA2lIAANpSEADaUjAA2lJQANpSYADaUnAA2lKQANpSoADaWlAA2lpwANpakADaWrAA2lrgANpa8ADaWwAA2lsQANpbIADaW0AA2ltgANpbcADaW4AA2lugANpbsADaY2AA2mOAANpjoADaY8AA2mPwANpkAADaZBAA2mQgANpkMADaZFAA2mRwANpkgADaZJAA2mSwANpkwADabHAA2myQANpssADabNAA2m0AANptEADabSAA2m0wANptQADabWAA2m2AANptkADabaAA2m3AANpt0ADacmAA2nSgANp3EADaeVAA2nmAANp5oADaecAA2nngANp6AADaeiAA2nowANp6YADae/AA2n3AANp94ADafgAA2n4gANp+QADafmAA2n6AANp+oADagHAA2oCgANqA0ADagQAA2oEwANqBYADagZAA2oHAANqB4ADaiZAA2omwANqJ0ADaifAA2oogANqKMADaikAA2opQANqKYADaioAA2oqgANqKsADaisAA2orgANqK8ADakqAA2pLAANqS4ADakwAA2pMwANqTQADak1AA2pNgANqTcADak5AA2pOwANqTwADak9AA2pPwANqUAADam7AA2pvQANqb8ADanBAA2pxAANqcUADanGAA2pxwANqcgADanKAA2pzAANqc0ADanOAA2p0AANqdEADapMAA2qTgANqlEADapTAA2qVgANqlcADapYAA2qWQANqloADapcAA2qXgANql8ADapgAA2qYgANqmMADareAA2q4AANquIADarkAA2q5wANqugADarpAA2q6gANqusADartAA2q7wANqvAADarxAA2q8wANqvQADatvAA2rcQANq3MADat1AA2reAANq3kADat6AA2rewANq3wADat+AA2rgAANq4EADauCAA2rhAANq4UADawAAA2sAgANrAQADawGAA2sCQANrAoADawLAA2sDAANrA0ADawPAA2sEQANrBIADawTAA2sFQANrBYADaypAA2szAANrOwADa0MAA2tDgANrRAADa0SAA2tFAANrRcADa0YAA2tGQANrRwADa0dAA2tHwANrSAADa0iAA2tJQANrSYADa0nAA2tKgANrSsADa0wAA2tSQANrVIADa1UAA2tVgANrV8ADa1iAA2tZQANrWcADa2wAA2t1AANrfsADa4fAA2uIgANriQADa4mAA2uKAANrioADa4sAA2uLQANrjAADa5JAA2uagANrmwADa5uAA2ucAANrnIADa50AA2udgANrngADa56AA2umwANrp4ADa6hAA2upAANrqcADa6qAA2urQANrrAADa6zAA2utQANrzAADa8yAA2vNAANrzYADa85AA2vOgANrzsADa88AA2vPQANrz8ADa9BAA2vQgANr0MADa9FAA2vRgANr8EADa/DAA2vxQANr8cADa/KAA2vywANr8wADa/NAA2vzgANr9AADa/SAA2v0wANr9QADa/WAA2v1wANsFIADbBUAA2wVwANsFkADbBcAA2wXQANsF4ADbBfAA2wYAANsGIADbBkAA2wZQANsGYADbBoAA2waQANsIIADbCDAA2whAANsIYADbEBAA2xAwANsQUADbEHAA2xCgANsQsADbEMAA2xDQANsQ4ADbEQAA2xEgANsRMADbEUAA2xFgANsRcADbGSAA2xlAANsZYADbGYAA2xmwANsZwADbGdAA2xngANsZ8ADbGhAA2xowANsaQADbGlAA2xpwANsagADbIjAA2yJQANsicADbIpAA2yLAANsi0ADbIuAA2yLwANsjAADbIyAA2yNAANsjUADbI2AA2yOAANsjkADbK0AA2ytgANsrgADbK6AA2yvQANsr4ADbK/AA2ywAANssEADbLDAA2yxQANssYADbLHAA2yyQANssoADbNFAA2zRwANs0kADbNLAA2zTgANs08ADbNQAA2zUQANs1IADbNUAA2zVgANs1cADbNYAA2zWgANs1sADbOkAA2zyAANs+8ADbQTAA20FgANtBgADbQaAA20HAANtB4ADbQgAA20IQANtCQADbQ9AA20WgANtFwADbReAA20YAANtGIADbRkAA20ZgANtGgADbSFAA20iAANtIsADbSOAA20kQANtJQADbSXAA20mgANtJwADbUXAA21GQANtRsADbUdAA21IAANtSEADbUiAA21IwANtSQADbUmAA21KAANtSkADbUqAA21LAANtS0ADbWoAA21qgANtawADbWuAA21sQANtbIADbWzAA21tAANtbUADbW3AA21uQANtboADbW7AA21vQANtb4ADbY5AA22OwANtj0ADbY/AA22QgANtkMADbZEAA22RQANtkYADbZIAA22SgANtksADbZMAA22TgANtk8ADbbKAA22zAANts4ADbbQAA220wANttQADbbVAA221gANttcADbbZAA222wANttwADbbdAA223wANtuAADbdbAA23XQANt18ADbdhAA23ZAANt2UADbdmAA23ZwANt2gADbdqAA23bAANt20ADbduAA23cAANt3EADbfsAA237gANt/EADbfzAA239gANt/cADbf4AA23+QANt/oADbf8AA23/gANt/8ADbgAAA24AgANuAMADbgiAA24nQANuJ8ADbihAA24owANuKYADbinAA24qAANuKkADbiqAA24rAANuK4ADbivAA24sAANuLIADbizAA25RgANuWkADbmJAA25qQANuasADbmtAA25rwANubEADbm0AA25tQANubYADbm5AA25ugANubwADbm9AA25vwANucIADbnDAA25xAANuccADbnIAA25zQANueYADbnvAA258QANufMADbn8AA25/wANugIADboEAA26TQANunEADbqYAA26vAANur8ADbrBAA26wwANusUADbrHAA26yQANusoADbrNAA265gANuwcADbsJAA27CwANuw0ADbsPAA27EQANuxMADbsVAA27FwANuzgADbs7AA27PgANu0EADbtEAA27RwANu0oADbtNAA27UAANu1IADbvNAA27zwANu9EADbvTAA271gANu9cADbvYAA272QANu9oADbvcAA273gANu98ADbvgAA274gANu+MADbxeAA28YAANvGIADbxkAA28ZwANvGgADbxpAA28agANvGsADbxtAA28bwANvHAADbxxAA28cwANvHQADbzvAA288QANvPQADbz2AA28+QANvPoADbz7AA28/AANvP0ADbz/AA29AQANvQIADb0DAA29BQANvQYADb0fAA29IAANvSEADb0jAA29ngANvaAADb2iAA29pAANvacADb2oAA29qQANvaoADb2rAA29rQANva8ADb2wAA29sQANvbMADb20AA2+LwANvjEADb4zAA2+NQANvjgADb45AA2+OgANvjsADb48AA2+PgANvkAADb5BAA2+QgANvkQADb5FAA2+wAANvsIADb7EAA2+xgANvskADb7KAA2+ywANvswADb7NAA2+zwANvtEADb7SAA2+0wANvtUADb7WAA2/UQANv1MADb9VAA2/VwANv1oADb9bAA2/XAANv10ADb9eAA2/YAANv2IADb9jAA2/ZAANv2YADb9nAA2/4gANv+QADb/mAA2/6AANv+sADb/sAA2/7QANv+4ADb/vAA2/8QANv/MADb/0AA2/9QANv/cADb/4AA3AQQANwGUADcCMAA3AsAANwLMADcC1AA3AtwANwLkADcC7AA3AvQANwL4ADcDBAA3A2gANwPcADcD5AA3A+wANwP0ADcD/AA3BAQANwQMADcEFAA3BIgANwSUADcEoAA3BKwANwS4ADcExAA3BNAANwTcADcE5AA3BtAANwbYADcG4AA3BugANwb0ADcG+AA3BvwANwcAADcHBAA3BwwANwcUADcHGAA3BxwANwckADcHKAA3CRQANwkcADcJJAA3CSwANwk4ADcJPAA3CUAANwlEADcJSAA3CVAANwlYADcJXAA3CWAANwloADcJbAA3C1gANwtgADcLaAA3C3AANwt8ADcLgAA3C4QANwuIADcLjAA3C5QANwucADcLoAA3C6QANwusADcLsAA3DZwANw2kADcNrAA3DbQANw3AADcNxAA3DcgANw3MADcN0AA3DdgANw3gADcN5AA3DegANw3wADcN9AA3D+AANw/oADcP8AA3D/gANxAEADcQCAA3EAwANxAQADcQFAA3EBwANxAkADcQKAA3ECwANxA0ADcQOAA3EiQANxIsADcSOAA3EkAANxJMADcSUAA3ElQANxJYADcSXAA3EmQANxJsADcScAA3EnQANxJ8ADcSgAA3EuwANxTYADcU4AA3FOgANxTwADcU/AA3FQAANxUEADcVCAA3FQwANxUUADcVHAA3FSAANxUkADcVLAA3FTAANxV0ADcVeAA3FYAANxdsADcXdAA3F3wANxeEADcXkAA3F5QANxeYADcXnAA3F6AANxeoADcXtAA3F7gANxe8ADcXxAA3F8gANxm0ADcZvAA3GcQANxnMADcZ2AA3GdwANxngADcZ5AA3GegANxnwADcZ/AA3GgAANxoEADcaDAA3GhAANxv8ADccBAA3HBAANxwYADccJAA3HCgANxwsADccMAA3HDQANxw8ADccSAA3HEwANxxQADccWAA3HFwANx6oADcfNAA3H7QANyA0ADcgPAA3IEQANyBMADcgVAA3IGAANyBkADcgaAA3IHQANyB4ADcggAA3IIQANyCMADcgmAA3IJwANyCgADcgrAA3ILAANyDEADchKAA3IUwANyFUADchXAA3IYAANyGMADchmAA3IaAANyLEADcjVAA3I/AANySAADckjAA3JJQANyScADckpAA3JKwANyS0ADckuAA3JMQANyUoADclrAA3JbQANyW8ADclxAA3JcwANyXUADcl3AA3JeQANyXsADcmcAA3JnwANyaIADcmlAA3JqAANyasADcmuAA3JsQANybQADcm2AA3KMQANyjMADco1AA3KNwANyjoADco7AA3KPAANyj0ADco+AA3KQAANykIADcpDAA3KRAANykYADcpHAA3KwgANysQADcrGAA3KyAANyssADcrMAA3KzQANys4ADcrPAA3K0QANytMADcrUAA3K1QANytcADcrYAA3LUwANy1UADctYAA3LWgANy10ADcteAA3LXwANy2AADcthAA3LYwANy2UADctmAA3LZwANy2kADctqAA3LgwANy4QADcuFAA3LhwANzAIADcwEAA3MBgANzAgADcwLAA3MDAANzA0ADcwOAA3MDwANzBEADcwTAA3MFAANzBUADcwXAA3MGAANzJMADcyVAA3MlwANzJkADcycAA3MnQANzJ4ADcyfAA3MoAANzKIADcykAA3MpQANzKYADcyoAA3MqQANzSQADc0mAA3NKAANzSoADc0tAA3NLgANzS8ADc0wAA3NMQANzTMADc01AA3NNgANzTcADc05AA3NOgANzbUADc23AA3NuQANzbsADc2+AA3NvwANzcAADc3BAA3NwgANzcQADc3GAA3NxwANzcgADc3KAA3NywANzkYADc5IAA3OSgANzkwADc5PAA3OUAANzlEADc5SAA3OUwANzlUADc5XAA3OWAANzlkADc5bAA3OXAANzqUADc7JAA3O8AANzxQADc8XAA3PGQANzxsADc8dAA3PHwANzyEADc8iAA3PJQANzz4ADc9bAA3PXQANz18ADc9hAA3PYwANz2UADc9nAA3PaQANz4YADc+JAA3PjAANz48ADc+SAA3PlQANz5gADc+bAA3PnQAN0BgADdAaAA3QHAAN0B4ADdAhAA3QIgAN0CMADdAkAA3QJQAN0CcADdApAA3QKgAN0CsADdAtAA3QLgAN0KkADdCrAA3QrQAN0K8ADdCyAA3QswAN0LQADdC1AA3QtgAN0LgADdC6AA3QuwAN0LwADdC+AA3QvwAN0ToADdE8AA3RPgAN0UAADdFDAA3RRAAN0UUADdFGAA3RRwAN0UkADdFLAA3RTAAN0U0ADdFPAA3RUAAN0csADdHNAA3R0AAN0dIADdHVAA3R1gAN0dcADdHYAA3R2QAN0dsADdHdAA3R3gAN0d8ADdHhAA3R4gAN0l0ADdJfAA3SYQAN0mMADdJmAA3SZwAN0mgADdJpAA3SagAN0mwADdJuAA3SbwAN0nAADdJyAA3ScwAN0u4ADdLwAA3S8gAN0vQADdL3AA3S+AAN0vkADdL6AA3S+wAN0v0ADdL/AA3TAAAN0wEADdMDAA3TBAAN038ADdOBAA3TgwAN04UADdOIAA3TiQAN04oADdOLAA3TjAAN044ADdOQAA3TkQAN05IADdOUAA3TlQAN1CgADdRLAA3UawAN1IsADdSNAA3UjwAN1JEADdSTAA3UlgAN1JcADdSYAA3UmwAN1JwADdSeAA3UnwAN1KEADdSkAA3UpQAN1KYADdSpAA3UqgAN1K8ADdTIAA3U0QAN1NMADdTVAA3U3gAN1OEADdTkAA3U5gAN1S8ADdVTAA3VegAN1Z4ADdWhAA3VowAN1aUADdWnAA3VqQAN1asADdWsAA3VrwAN1cgADdXpAA3V6wAN1e0ADdXvAA3V8QAN1fMADdX1AA3V9wAN1fkADdYaAA3WHQAN1iAADdYjAA3WJgAN1ikADdYsAA3WLwAN1jIADdY0AA3WrwAN1rEADdazAA3WtQAN1rgADda5AA3WugAN1rsADda8AA3WvgAN1sAADdbBAA3WwgAN1sQADdbFAA3XQAAN10IADddEAA3XRgAN10kADddKAA3XSwAN10wADddNAA3XTwAN11EADddSAA3XUwAN11UADddWAA3X0QAN19MADdfWAA3X2AAN19sADdfcAA3X3QAN194ADdffAA3X4QAN1+MADdfkAA3X5QAN1+cADdfoAA3YAQAN2AIADdgDAA3YBQAN2IAADdiCAA3YhAAN2IYADdiJAA3YigAN2IsADdiMAA3YjQAN2I8ADdiRAA3YkgAN2JMADdiVAA3YlgAN2READdkTAA3ZFQAN2RcADdkaAA3ZGwAN2RwADdkdAA3ZHgAN2SAADdkiAA3ZIwAN2SQADdkmAA3ZJwAN2aIADdmkAA3ZpgAN2agADdmrAA3ZrAAN2a0ADdmuAA3ZrwAN2bEADdmzAA3ZtAAN2bUADdm3AA3ZuAAN2jMADdo1AA3aNwAN2jkADdo8AA3aPQAN2j4ADdo/AA3aQAAN2kIADdpEAA3aRQAN2kYADdpIAA3aSQAN2sQADdrGAA3ayAAN2soADdrNAA3azgAN2s8ADdrQAA3a0QAN2tMADdrVAA3a1gAN2tcADdrZAA3a2gAN2yMADdtHAA3bbgAN25IADduVAA3blwAN25kADdubAA3bnQAN258ADdugAA3bowAN27wADdvZAA3b2wAN290ADdvfAA3b4QAN2+MADdvlAA3b5wAN3AQADdwHAA3cCgAN3A0ADdwQAA3cEwAN3BYADdwZAA3cGwAN3JYADdyYAA3cmgAN3JwADdyfAA3coAAN3KEADdyiAA3cowAN3KUADdynAA3cqAAN3KkADdyrAA3crAAN3ScADd0pAA3dKwAN3S0ADd0wAA3dMQAN3TIADd0zAA3dNAAN3TYADd04AA3dOQAN3ToADd08AA3dPQAN3bgADd26AA3dvAAN3b4ADd3BAA3dwgAN3cMADd3EAA3dxQAN3ccADd3JAA3dygAN3csADd3NAA3dzgAN3kkADd5LAA3eTgAN3lAADd5TAA3eVAAN3lUADd5WAA3eVwAN3lkADd5bAA3eXAAN3l0ADd5fAA3eYAAN3tsADd7dAA3e3wAN3uEADd7kAA3e5QAN3uYADd7nAA3e6AAN3uoADd7sAA3e7QAN3u4ADd7wAA3e8QAN32wADd9uAA3fcAAN33IADd91AA3fdgAN33cADd94AA3feQAN33sADd99AA3ffgAN338ADd+BAA3fggAN3/0ADd//AA3gAQAN4AMADeAGAA3gBwAN4AgADeAJAA3gCgAN4AwADeAOAA3gDwAN4BAADeASAA3gEwAN4KYADeDJAA3g6QAN4QkADeELAA3hDQAN4Q8ADeERAA3hFAAN4RUADeEWAA3hGQAN4RoADeEcAA3hHQAN4R8ADeEiAA3hIwAN4SQADeEnAA3hKAAN4S0ADeFGAA3hTwAN4VEADeFTAA3hXAAN4V8ADeFiAA3hZAAN4a0ADeHRAA3h+AAN4hwADeIfAA3iIQAN4iMADeIlAA3iJwAN4ikADeIqAA3iLQAN4kYADeJnAA3iaQAN4msADeJtAA3ibwAN4nEADeJzAA3idQAN4ncADeKYAA3imwAN4p4ADeKhAA3ipAAN4qcADeKqAA3irQAN4rAADeKyAA3jLQAN4y8ADeMxAA3jMwAN4zYADeM3AA3jOAAN4zkADeM6AA3jPAAN4z4ADeM/AA3jQAAN40IADeNDAA3jvgAN48AADePCAA3jxAAN48cADePIAA3jyQAN48oADePLAA3jzQAN488ADePQAA3j0QAN49MADePUAA3kTwAN5FEADeRUAA3kVgAN5FkADeRaAA3kWwAN5FwADeRdAA3kXwAN5GEADeRiAA3kYwAN5GUADeRmAA3kfwAN5IAADeSBAA3kgwAN5P4ADeUAAA3lAgAN5QQADeUHAA3lCAAN5QkADeUKAA3lCwAN5Q0ADeUPAA3lEAAN5READeUTAA3lFAAN5Y8ADeWRAA3lkwAN5ZUADeWYAA3lmQAN5ZoADeWbAA3lnAAN5Z4ADeWgAA3loQAN5aIADeWkAA3lpQAN5iAADeYiAA3mJAAN5iYADeYpAA3mKgAN5isADeYsAA3mLQAN5i8ADeYxAA3mMgAN5jMADeY1AA3mNgAN5rEADeazAA3mtQAN5rcADea6AA3muwAN5rwADea9AA3mvgAN5sAADebCAA3mwwAN5sQADebGAA3mxwAN50IADedEAA3nRgAN50gADedLAA3nTAAN500ADedOAA3nTwAN51EADedTAA3nVAAN51UADedXAA3nWAAN56EADefFAA3n7AAN6BAADegTAA3oFQAN6BcADegZAA3oGwAN6B0ADegeAA3oIQAN6DoADehXAA3oWQAN6FsADehdAA3oXwAN6GEADehjAA3oZQAN6IIADeiFAA3oiAAN6IsADeiOAA3okQAN6JQADeiXAA3omQAN6RQADekWAA3pGAAN6RoADekdAA3pHgAN6R8ADekgAA3pIQAN6SMADeklAA3pJgAN6ScADekpAA3pKgAN6aUADemnAA3pqQAN6asADemuAA3prwAN6bAADemxAA3psgAN6bQADem2AA3ptwAN6bgADem6AA3puwAN6jYADeo4AA3qOgAN6jwADeo/AA3qQAAN6kEADepCAA3qQwAN6kUADepHAA3qSAAN6kkADepLAA3qTAAN6scADerJAA3qywAN6s0ADerQAA3q0QAN6tIADerTAA3q1AAN6tYADerYAA3q2QAN6toADercAA3q3QAN61gADetaAA3rXAAN614ADethAA3rYgAN62MADetkAA3rZQAN62cADetpAA3ragAN62sADettAA3rbgAN6+kADevrAA3r7gAN6/AADevzAA3r9AAN6/UADev2AA3r9wAN6/kADev7AA3r/AAN6/0ADev/AA3sAAAN7BsADeyWAA3smAAN7JoADeycAA3snwAN7KAADeyhAA3sogAN7KMADeylAA3spwAN7KgADeypAA3sqwAN7KwADe0/AA3tYgAN7YIADe2iAA3tpAAN7aYADe2oAA3tqgAN7a0ADe2uAA3trwAN7bIADe2zAA3ttQAN7bYADe25AA3tvAAN7b0ADe2+AA3twQAN7cIADe3HAA3t4AAN7ekADe3rAA3t7gAN7fcADe36AA3t/QAN7f8ADe5IAA3ubAAN7pMADe63AA3uugAN7rwADe6+AA3uwAAN7sIADe7EAA3uxQAN7sgADe7hAA3vAgAN7wQADe8GAA3vCAAN7woADe8MAA3vDgAN7xAADe8SAA3vMwAN7zYADe85AA3vPAAN7z8ADe9CAA3vRQAN70gADe9LAA3vTQAN78gADe/KAA3vzAAN784ADe/RAA3v0gAN79MADe/UAA3v1QAN79cADe/ZAA3v2gAN79sADe/dAA3v3gAN8FkADfBbAA3wXQAN8F8ADfBiAA3wYwAN8GQADfBlAA3wZgAN8GgADfBqAA3wawAN8GwADfBuAA3wbwAN8OoADfDsAA3w7wAN8PEADfD0AA3w9QAN8PYADfD3AA3w+AAN8PoADfD8AA3w/QAN8P4ADfEAAA3xAQAN8RoADfEbAA3xHAAN8R4ADfGZAA3xmwAN8Z0ADfGfAA3xogAN8aMADfGkAA3xpQAN8aYADfGoAA3xqgAN8asADfGsAA3xrgAN8a8ADfIqAA3yLAAN8i4ADfIwAA3yMwAN8jQADfI1AA3yNgAN8jcADfI5AA3yOwAN8jwADfI9AA3yPwAN8kAADfK7AA3yvQAN8r8ADfLBAA3yxAAN8sUADfLGAA3yxwAN8sgADfLKAA3yzAAN8s0ADfLOAA3y0AAN8tEADfNMAA3zTgAN81AADfNSAA3zVQAN81YADfNXAA3zWAAN81kADfNbAA3zXQAN814ADfNfAA3zYQAN82IADfPdAA3z3wAN8+EADfPjAA3z5gAN8+cADfPoAA3z6QAN8+oADfPsAA3z7gAN8+8ADfPwAA3z8gAN8/MADfQ8AA30YAAN9IcADfSrAA30rgAN9LEADfSzAA30tQAN9LcADfS5AA30ugAN9L0ADfTWAA308wAN9PYADfT5AA30/AAN9P8ADfUCAA31BQAN9QgADfUlAA31KAAN9SsADfUuAA31MQAN9TQADfU3AA31OgAN9TwADfW3AA31uQAN9bwADfW+AA31wQAN9cIADfXDAA31xAAN9cUADfXHAA31ygAN9csADfXMAA31zgAN9c8ADfZKAA32TAAN9k8ADfZRAA32VAAN9lUADfZWAA32VwAN9lgADfZaAA32XQAN9l4ADfZfAA32YQAN9mIADfbdAA323wAN9uIADfbkAA325wAN9ugADfbpAA326gAN9usADfbtAA328AAN9vEADfbyAA329AAN9vUADfdwAA33cgAN93UADfd3AA33egAN93sADfd8AA33fQAN934ADfeAAA33gwAN94QADfeFAA33hwAN94gADfgDAA34BQAN+AcADfgJAA34DAAN+A0ADfgOAA34DwAN+BAADfgSAA34FQAN+BYADfgXAA34GQAN+BoADfiVAA34lwAN+JkADfibAA34ngAN+J8ADfigAA34oQAN+KIADfikAA34pwAN+KgADfipAA34qwAN+KwADfknAA35KQAN+SwADfkuAA35MQAN+TIADfkzAA35NAAN+TUADfk3AA35OgAN+TsADfk8AA35PgAN+T8ADfnSAA359QAN+hUADfo1AA36NwAN+jkADfo7AA36PQAN+kAADfpBAA36QgAN+kUADfpGAA36SAAN+kkADfpLAA36TgAN+k8ADfpQAA36UwAN+lQADfpZAA36cgAN+nsADfp9AA36fwAN+ogADfqLAA36jgAN+pAADfrZAA36/QAN+yQADftIAA37SwAN+00ADftPAA37UQAN+1MADftVAA37VgAN+1kADftyAA37kwAN+5UADfuXAA37mQAN+5sADfudAA37nwAN+6EADfujAA37xAAN+8cADfvKAA37zQAN+9AADfvTAA371gAN+9kADfvcAA373gAN/FkADfxbAA38XQAN/F8ADfxiAA38YwAN/GQADfxlAA38ZgAN/GgADfxqAA38awAN/GwADfxuAA38bwAN/OoADfzsAA387gAN/PAADfzzAA389AAN/PUADfz2AA389wAN/PkADfz7AA38/AAN/P0ADfz/AA39AAAN/XsADf19AA39gAAN/YIADf2FAA39hgAN/YcADf2IAA39iQAN/YsADf2NAA39jgAN/Y8ADf2RAA39kgAN/asADf2sAA39rQAN/a8ADf4qAA3+LAAN/i4ADf4wAA3+MwAN/jQADf41AA3+NgAN/jcADf45AA3+OwAN/jwADf49AA3+PwAN/kAADf67AA3+vQAN/r8ADf7BAA3+xAAN/sUADf7GAA3+xwAN/sgADf7KAA3+zAAN/s0ADf7OAA3+0AAN/tEADf9MAA3/TgAN/1AADf9SAA3/VQAN/1YADf9XAA3/WAAN/1kADf9bAA3/XQAN/14ADf9fAA3/YQAN/2IADf/dAA3/3wAN/+EADf/jAA3/5gAN/+cADf/oAA3/6QAN/+oADf/sAA3/7gAN/+8ADf/wAA3/8gAN//MADgBuAA4AcAAOAHIADgB0AA4AdwAOAHgADgB5AA4AegAOAHsADgB9AA4AfwAOAIAADgCBAA4AgwAOAIQADgDNAA4A8QAOARgADgE8AA4BPwAOAUEADgFDAA4BRQAOAUcADgFJAA4BSgAOAU0ADgFmAA4BgwAOAYUADgGHAA4BiQAOAYsADgGNAA4BjwAOAZEADgGuAA4BsQAOAbQADgG3AA4BugAOAb0ADgHAAA4BwwAOAcUADgJAAA4CQgAOAkUADgJHAA4CSgAOAksADgJMAA4CTQAOAk4ADgJQAA4CUgAOAlMADgJUAA4CVgAOAlcADgLSAA4C1AAOAtYADgLYAA4C2wAOAtwADgLdAA4C3gAOAt8ADgLhAA4C4wAOAuQADgLlAA4C5wAOAugADgNjAA4DZQAOA2cADgNpAA4DbAAOA20ADgNuAA4DbwAOA3AADgNyAA4DdAAOA3UADgN2AA4DeAAOA3kADgP0AA4D9gAOA/kADgP7AA4D/gAOA/8ADgQAAA4EAQAOBAIADgQEAA4EBgAOBAcADgQIAA4ECgAOBAsADgSGAA4EiAAOBIoADgSMAA4EjwAOBJAADgSRAA4EkgAOBJMADgSVAA4ElwAOBJgADgSZAA4EmwAOBJwADgUXAA4FGQAOBRsADgUdAA4FIAAOBSEADgUiAA4FIwAOBSQADgUmAA4FKAAOBSkADgUqAA4FLAAOBS0ADgWoAA4FqgAOBawADgWuAA4FsQAOBbIADgWzAA4FtAAOBbUADgW3AA4FuQAOBboADgW7AA4FvQAOBb4ADgZRAA4GdAAOBpQADga0AA4GtgAOBrgADga6AA4GvAAOBr8ADgbAAA4GwQAOBsQADgbFAA4GxwAOBsgADgbKAA4GzQAOBs4ADgbPAA4G0gAOBtMADgbYAA4G8QAOBvoADgb8AA4G/gAOBwcADgcKAA4HDQAOBw8ADgdYAA4HfAAOB6MADgfHAA4HygAOB8wADgfOAA4H0AAOB9IADgfUAA4H1QAOB9gADgfxAA4IEgAOCBQADggWAA4IGAAOCBoADggcAA4IHgAOCCAADggiAA4IQwAOCEYADghJAA4ITAAOCE8ADghSAA4IVQAOCFgADghbAA4IXQAOCNgADgjaAA4I3AAOCN4ADgjhAA4I4gAOCOMADgjkAA4I5QAOCOcADgjpAA4I6gAOCOsADgjtAA4I7gAOCWkADglrAA4JbQAOCW8ADglyAA4JcwAOCXQADgl1AA4JdgAOCXgADgl6AA4JewAOCXwADgl+AA4JfwAOCfoADgn8AA4J/wAOCgEADgoEAA4KBQAOCgYADgoHAA4KCAAOCgoADgoMAA4KDQAOCg4ADgoQAA4KEQAOCioADgorAA4KLAAOCi4ADgqpAA4KqwAOCq0ADgqvAA4KsgAOCrMADgq0AA4KtQAOCrYADgq4AA4KugAOCrsADgq8AA4KvgAOCr8ADgs6AA4LPAAOCz4ADgtAAA4LQwAOC0QADgtFAA4LRgAOC0cADgtJAA4LSwAOC0wADgtNAA4LTwAOC1AADgvLAA4LzQAOC88ADgvRAA4L1AAOC9UADgvWAA4L1wAOC9gADgvaAA4L3AAOC90ADgveAA4L4AAOC+EADgxcAA4MXgAODGAADgxiAA4MZQAODGYADgxnAA4MaAAODGkADgxrAA4MbQAODG4ADgxvAA4McQAODHIADgztAA4M7wAODPEADgzzAA4M9gAODPcADgz4AA4M+QAODPoADgz8AA4M/gAODP8ADg0AAA4NAgAODQMADg1MAA4NcAAODZcADg27AA4NvgAODcAADg3CAA4NxAAODcYADg3IAA4NyQAODcwADg3lAA4OAgAODgQADg4GAA4OCAAODgoADg4MAA4ODgAODhAADg4tAA4OMAAODjMADg42AA4OOQAODjwADg4/AA4OQgAODkQADg6/AA4OwQAODsQADg7GAA4OyQAODsoADg7LAA4OzAAODs0ADg7PAA4O0QAODtIADg7TAA4O1QAODtYADg9RAA4PUwAOD1UADg9XAA4PWgAOD1sADg9cAA4PXQAOD14ADg9gAA4PYgAOD2MADg9kAA4PZgAOD2cADg/iAA4P5AAOD+YADg/oAA4P6wAOD+wADg/tAA4P7gAOD+8ADg/xAA4P8wAOD/QADg/1AA4P9wAOD/gADhBzAA4QdQAOEHgADhB6AA4QfQAOEH4ADhB/AA4QgAAOEIEADhCDAA4QhQAOEIYADhCHAA4QiQAOEIoADhEFAA4RBwAOEQkADhELAA4RDgAOEQ8ADhEQAA4REQAOERIADhEUAA4RFgAOERcADhEYAA4RGgAOERsADhGWAA4RmAAOEZoADhGcAA4RnwAOEaAADhGhAA4RogAOEaMADhGlAA4RpwAOEagADhGpAA4RqwAOEawADhInAA4SKQAOEisADhItAA4SMAAOEjEADhIyAA4SMwAOEjQADhI2AA4SOAAOEjkADhI6AA4SPAAOEj0ADhLQAA4S8wAOExMADhMzAA4TNQAOEzcADhM5AA4TOwAOEz4ADhM/AA4TQAAOE0MADhNEAA4TRgAOE0cADhNJAA4TTAAOE00ADhNOAA4TUQAOE1IADhNXAA4TcAAOE3kADhN7AA4TfQAOE4YADhOJAA4TjAAOE44ADhPXAA4T+wAOFCIADhRGAA4USQAOFEsADhRNAA4UTwAOFFEADhRTAA4UVAAOFFcADhRwAA4UkQAOFJMADhSVAA4UlwAOFJkADhSbAA4UnQAOFJ8ADhShAA4UwgAOFMUADhTIAA4UywAOFM4ADhTRAA4U1AAOFNcADhTaAA4U3AAOFVcADhVZAA4VWwAOFV0ADhVgAA4VYQAOFWIADhVjAA4VZAAOFWYADhVoAA4VaQAOFWoADhVsAA4VbQAOFegADhXqAA4V7AAOFe4ADhXxAA4V8gAOFfMADhX0AA4V9QAOFfcADhX5AA4V+gAOFfsADhX9AA4V/gAOFnkADhZ7AA4WfgAOFoAADhaDAA4WhAAOFoUADhaGAA4WhwAOFokADhaLAA4WjAAOFo0ADhaPAA4WkAAOFqkADhaqAA4WqwAOFq0ADhcoAA4XKgAOFywADhcuAA4XMQAOFzIADhczAA4XNAAOFzUADhc3AA4XOQAOFzoADhc7AA4XPQAOFz4ADhe5AA4XuwAOF70ADhe/AA4XwgAOF8MADhfEAA4XxQAOF8YADhfIAA4XygAOF8sADhfMAA4XzgAOF88ADhhKAA4YTAAOGE4ADhhQAA4YUwAOGFQADhhVAA4YVgAOGFcADhhZAA4YWwAOGFwADhhdAA4YXwAOGGAADhjbAA4Y3QAOGN8ADhjhAA4Y5AAOGOUADhjmAA4Y5wAOGOgADhjqAA4Y7AAOGO0ADhjuAA4Y8AAOGPEADhlsAA4ZbgAOGXAADhlyAA4ZdQAOGXYADhl3AA4ZeAAOGXkADhl7AA4ZfQAOGX4ADhl/AA4ZgQAOGYIADhnLAA4Z7wAOGhYADho6AA4aPQAOGj8ADhpBAA4aQwAOGkUADhpHAA4aSAAOGksADhpkAA4agQAOGoMADhqFAA4ahwAOGokADhqLAA4ajQAOGo8ADhqsAA4arwAOGrIADhq1AA4auAAOGrsADhq+AA4awQAOGsMADhs+AA4bQAAOG0IADhtEAA4bRwAOG0gADhtJAA4bSgAOG0sADhtNAA4bTwAOG1AADhtRAA4bUwAOG1QADhvPAA4b0QAOG9MADhvVAA4b2AAOG9kADhvaAA4b2wAOG9wADhveAA4b4AAOG+EADhviAA4b5AAOG+UADhxgAA4cYgAOHGQADhxmAA4caQAOHGoADhxrAA4cbAAOHG0ADhxvAA4ccQAOHHIADhxzAA4cdQAOHHYADhzxAA4c8wAOHPYADhz4AA4c+wAOHPwADhz9AA4c/gAOHP8ADh0BAA4dAwAOHQQADh0FAA4dBwAOHQgADh2DAA4dhQAOHYcADh2JAA4djAAOHY0ADh2OAA4djwAOHZAADh2SAA4dlAAOHZUADh2WAA4dmAAOHZkADh4UAA4eFgAOHhgADh4aAA4eHQAOHh4ADh4fAA4eIAAOHiEADh4jAA4eJQAOHiYADh4nAA4eKQAOHioADh6lAA4epwAOHqkADh6rAA4ergAOHq8ADh6wAA4esQAOHrIADh60AA4etgAOHrcADh64AA4eugAOHrsADh9OAA4fcQAOH5EADh+xAA4fswAOH7UADh+3AA4fuQAOH7wADh+9AA4fvgAOH8EADh/CAA4fxAAOH8UADh/HAA4fygAOH8sADh/MAA4fzwAOH9AADh/VAA4f7gAOH/cADh/5AA4f+wAOIAQADiAHAA4gCgAOIAwADiBVAA4geQAOIKAADiDEAA4gxwAOIMkADiDLAA4gzQAOIM8ADiDRAA4g0gAOINUADiDuAA4hDwAOIREADiETAA4hFQAOIRcADiEZAA4hGwAOIR0ADiEfAA4hQAAOIUMADiFGAA4hSQAOIUwADiFPAA4hUgAOIVUADiFYAA4hWgAOIdUADiHXAA4h2QAOIdsADiHeAA4h3wAOIeAADiHhAA4h4gAOIeQADiHmAA4h5wAOIegADiHqAA4h6wAOImYADiJoAA4iagAOImwADiJvAA4icAAOInEADiJyAA4icwAOInUADiJ3AA4ieAAOInkADiJ7AA4ifAAOIvcADiL5AA4i/AAOIv4ADiMBAA4jAgAOIwMADiMEAA4jBQAOIwcADiMJAA4jCgAOIwsADiMNAA4jDgAOIycADiMoAA4jKQAOIysADiOmAA4jqAAOI6oADiOsAA4jrwAOI7AADiOxAA4jsgAOI7MADiO1AA4jtwAOI7gADiO5AA4juwAOI7wADiQ3AA4kOQAOJDsADiQ9AA4kQAAOJEEADiRCAA4kQwAOJEQADiRGAA4kSAAOJEkADiRKAA4kTAAOJE0ADiTIAA4kygAOJMwADiTOAA4k0QAOJNIADiTTAA4k1AAOJNUADiTXAA4k2QAOJNoADiTbAA4k3QAOJN4ADiVZAA4lWwAOJV0ADiVfAA4lYgAOJWMADiVkAA4lZQAOJWYADiVoAA4lagAOJWsADiVsAA4lbgAOJW8ADiXqAA4l7AAOJe4ADiXwAA4l8wAOJfQADiX1AA4l9gAOJfcADiX5AA4l+wAOJfwADiX9AA4l/wAOJgAADiZJAA4mbQAOJpQADia4AA4muwAOJr0ADia/AA4mwQAOJsMADibFAA4mxgAOJskADibiAA4m/wAOJwEADicDAA4nBQAOJwcADicJAA4nCwAOJw0ADicqAA4nLQAOJzAADiczAA4nNgAOJzkADic8AA4nPwAOJ0EADie8AA4nvgAOJ8AADifCAA4nxQAOJ8YADifHAA4nyAAOJ8kADifLAA4nzQAOJ84ADifPAA4n0QAOJ9IADihNAA4oTwAOKFEADihTAA4oVgAOKFcADihYAA4oWQAOKFoADihcAA4oXgAOKF8ADihgAA4oYgAOKGMADijeAA4o4AAOKOIADijkAA4o5wAOKOgADijpAA4o6gAOKOsADijtAA4o7wAOKPAADijxAA4o8wAOKPQADilvAA4pcQAOKXQADil2AA4peQAOKXoADil7AA4pfAAOKX0ADil/AA4pgQAOKYIADimDAA4phQAOKYYADioBAA4qAwAOKgUADioHAA4qCgAOKgsADioMAA4qDQAOKg4ADioQAA4qEgAOKhMADioUAA4qFgAOKhcADiqSAA4qlAAOKpYADiqYAA4qmwAOKpwADiqdAA4qngAOKp8ADiqhAA4qowAOKqQADiqlAA4qpwAOKqgADisjAA4rJQAOKycADispAA4rLAAOKy0ADisuAA4rLwAOKzAADisyAA4rNAAOKzUADis2AA4rOAAOKzkADivMAA4r7wAOLA8ADiwvAA4sMQAOLDMADiw1AA4sNwAOLDoADiw7AA4sPAAOLD8ADixAAA4sQgAOLEMADixFAA4sSAAOLEkADixKAA4sTQAOLE4ADixTAA4sbAAOLHUADix3AA4seQAOLIIADiyFAA4siAAOLIoADizTAA4s9wAOLR4ADi1CAA4tRQAOLUcADi1JAA4tSwAOLU0ADi1PAA4tUAAOLVMADi1sAA4tjQAOLY8ADi2RAA4tkwAOLZUADi2XAA4tmQAOLZsADi2dAA4tvgAOLcEADi3EAA4txwAOLcoADi3NAA4t0AAOLdMADi3WAA4t2AAOLlMADi5VAA4uVwAOLlkADi5cAA4uXQAOLl4ADi5fAA4uYAAOLmIADi5kAA4uZQAOLmYADi5oAA4uaQAOLuQADi7mAA4u6AAOLuoADi7tAA4u7gAOLu8ADi7wAA4u8QAOLvMADi71AA4u9gAOLvcADi75AA4u+gAOL3UADi93AA4vegAOL3wADi9/AA4vgAAOL4EADi+CAA4vgwAOL4UADi+HAA4viAAOL4kADi+LAA4vjAAOL6UADi+mAA4vpwAOL6kADjAkAA4wJgAOMCgADjAqAA4wLQAOMC4ADjAvAA4wMAAOMDEADjAzAA4wNQAOMDYADjA3AA4wOQAOMDoADjC1AA4wtwAOMLkADjC7AA4wvgAOML8ADjDAAA4wwQAOMMIADjDEAA4wxgAOMMcADjDIAA4wygAOMMsADjFGAA4xSAAOMUoADjFMAA4xTwAOMVAADjFRAA4xUgAOMVMADjFVAA4xVwAOMVgADjFZAA4xWwAOMVwADjHXAA4x2QAOMdsADjHdAA4x4AAOMeEADjHiAA4x4wAOMeQADjHmAA4x6AAOMekADjHqAA4x7AAOMe0ADjJoAA4yagAOMmwADjJuAA4ycQAOMnIADjJzAA4ydAAOMnUADjJ3AA4yeQAOMnoADjJ7AA4yfQAOMn4ADjLHAA4y6wAOMxIADjM2AA4zOQAOMzsADjM9AA4zPwAOM0EADjNDAA4zRAAOM0cADjNgAA4zfQAOM38ADjOBAA4zgwAOM4UADjOHAA4ziQAOM4sADjOoAA4zqwAOM64ADjOxAA4ztAAOM7cADjO6AA4zvQAOM78ADjQ6AA40PAAOND8ADjRBAA40RAAONEUADjRGAA40RwAONEgADjRKAA40TAAONE0ADjROAA40UAAONFEADjTMAA40zgAONNAADjTSAA401QAONNYADjTXAA402AAONNkADjTbAA403QAONN4ADjTfAA404QAONOIADjVdAA41XwAONWEADjVjAA41ZgAONWcADjVoAA41aQAONWoADjVsAA41bgAONW8ADjVwAA41cgAONXMADjXuAA418AAONfMADjX1AA41+AAONfkADjX6AA41+wAONfwADjX+AA42AAAONgEADjYCAA42BAAONgUADjaAAA42ggAONoQADjaGAA42iQAONooADjaLAA42jAAONo0ADjaPAA42kQAONpIADjaTAA42lQAONpYADjcRAA43EwAONxUADjcXAA43GgAONxsADjccAA43HQAONx4ADjcgAA43IgAONyMADjckAA43JgAONycADjeiAA43pAAON6YADjeoAA43qwAON6wADjetAA43rgAON68ADjexAA43swAON7QADje1AA43twAON7gADjfJAA43ygAON8wADjhHAA44SQAOOEsADjhNAA44UAAOOFEADjhSAA44UwAOOFQADjhWAA44WQAOOFoADjhbAA44XQAOOF4ADjjZAA442wAOON0ADjjfAA444gAOOOMADjjkAA445QAOOOYADjjoAA446wAOOOwADjjtAA447wAOOPAADjlrAA45bQAOOXAADjlyAA45dQAOOXYADjl3AA45eAAOOXkADjl7AA45fgAOOX8ADjmAAA45ggAOOYMADjoWAA46OQAOOlkADjp5AA46ewAOOn0ADjp/AA46gQAOOoQADjqFAA46hgAOOokADjqKAA46jAAOOo0ADjqPAA46kgAOOpMADjqUAA46lwAOOpgADjqhAA46ugAOOsMADjrFAA46xwAOOtAADjrTAA461gAOOtgADjshAA47RQAOO2wADjuQAA47kwAOO5UADjuXAA47mQAOO5sADjudAA47ngAOO6EADju6AA472wAOO90ADjvfAA474QAOO+MADjvlAA475wAOO+kADjvrAA48DAAOPA8ADjwSAA48FQAOPBgADjwbAA48HgAOPCEADjwkAA48JgAOPKEADjyjAA48pQAOPKcADjyqAA48qwAOPKwADjytAA48rgAOPLAADjyyAA48swAOPLQADjy2AA48twAOPTIADj00AA49NgAOPTgADj07AA49PAAOPT0ADj0+AA49PwAOPUEADj1DAA49RAAOPUUADj1HAA49SAAOPcMADj3FAA49yAAOPcoADj3NAA49zgAOPc8ADj3QAA490QAOPdMADj3VAA491gAOPdcADj3ZAA492gAOPfMADj30AA499QAOPfcADj5yAA4+dAAOPnYADj54AA4+ewAOPnwADj59AA4+fgAOPn8ADj6BAA4+gwAOPoQ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ADlAzAA5QNAAOUDUADlA3AA5QOQAOUDoADlA7AA5QPQAOUD4ADlC5AA5QuwAOUL4ADlDAAA5QwwAOUMQADlDFAA5QxgAOUMcADlDJAA5QywAOUMwADlDNAA5QzwAOUNAADlFLAA5RTQAOUU8ADlFRAA5RVAAOUVUADlFWAA5RVwAOUVgADlFaAA5RXAAOUV0ADlFeAA5RYAAOUWEADlHcAA5R3gAOUeAADlHiAA5R5QAOUeYADlHnAA5R6AAOUekADlHrAA5R7QAOUe4ADlHvAA5R8QAOUfIADlJtAA5SbwAOUnEADlJzAA5SdgAOUncADlJ4AA5SeQAOUnoADlJ8AA5SfgAOUn8ADlKAAA5SggAOUoMADlMWAA5TOQAOU1kADlN5AA5TewAOU30ADlN/AA5TgQAOU4QADlOFAA5ThgAOU4kADlOKAA5TjAAOU40ADlOPAA5TkgAOU5MADlOUAA5TlwAOU5gADlOdAA5TtgAOU78ADlPBAA5TwwAOU8wADlPPAA5T0gAOU9QADlQdAA5UQQAOVGgADlSMAA5UjwAOVJEADlSTAA5UlQAOVJcADlSZAA5UmgAOVJ0ADlS2AA5U1wAOVNkADlTbAA5U3QAOVN8ADlThAA5U4wAOVOUADlTnAA5VCAAOVQsADlUOAA5VEQAOVRQADlUXAA5VGgAOVR0ADlUgAA5VIgAOVZ0ADlWfAA5VoQAOVaMADlWmAA5VpwAOVagADlWpAA5VqgAOVawADlWuAA5VrwAOVbAADlWyAA5VswAOVi4ADlYwAA5WMgAOVjQADlY3AA5WOAAOVjkADlY6AA5WOwAOVj0ADlY/AA5WQAAOVkEADlZDAA5WRAAOVr8ADlbBAA5WxAAOVsYADlbJAA5WygAOVssADlbMAA5WzQAOVs8ADlbRAA5W0gAOVtMADlbVAA5W1gAOVu8ADlbwAA5W8QAOVvMADlduAA5XcAAOV3IADld0AA5XdwAOV3gADld5AA5XegAOV3sADld9AA5XfwAOV4AADleBAA5XgwAOV4QADlf/AA5YAQAOWAMADlgFAA5YCAAOWAkADlgKAA5YCwAOWAwADlgOAA5YEAAOWBEADlgSAA5YFAAOWBUADliQAA5YkgAOWJQADliWAA5YmQAOWJoADlibAA5YnAAOWJ0ADlifAA5YoQAOWKIADlijAA5YpQAOWKYADlkhAA5ZIwAOWSUADlknAA5ZKgAOWSsADlksAA5ZLQAOWS4ADlkwAA5ZMgAOWTMADlk0AA5ZNgAOWTcADlmyAA5ZtAAOWbYADlm4AA5ZuwAOWbwADlm9AA5ZvgAOWb8ADlnBAA5ZwwAOWcQADlnFAA5ZxwAOWcgADloRAA5aNQAOWlwADlqAAA5agwAOWoUADlqHAA5aiQAOWosADlqNAA5ajgAOWpEADlqqAA5axwAOWskADlrLAA5azQAOWs8ADlrRAA5a0wAOWtUADlryAA5a9QAOWvgADlr7AA5a/gAOWwEADlsEAA5bBwAOWwkADluEAA5bhgAOW4gADluKAA5bjQAOW44ADluPAA5bkAAOW5EADluTAA5blQAOW5YADluXAA5bmQAOW5oADlwVAA5cFwAOXBkADlwbAA5cHgAOXB8ADlwgAA5cIQAOXCIADlwkAA5cJgAOXCcADlwoAA5cKgAOXCsADlymAA5cqAAOXKoADlysAA5crwAOXLAADlyxAA5csgAOXLMADly1AA5ctwAOXLgADly5AA5cuwAOXLwADl03AA5dOQAOXTwADl0+AA5dQQAOXUIADl1DAA5dRAAOXUUADl1HAA5dSQAOXUoADl1LAA5dTQAOXU4ADl3JAA5dywAOXc0ADl3PAA5d0gAOXdMADl3UAA5d1QAOXdYADl3YAA5d2gAOXdsADl3cAA5d3gAOXd8ADl5aAA5eXAAOXl4ADl5gAA5eYwAOXmQADl5lAA5eZgAOXmcADl5pAA5eawAOXmwADl5tAA5ebwAOXnAADl7rAA5e7QAOXu8ADl7xAA5e9AAOXvUADl72AA5e9wAOXvgADl76AA5e/AAOXv0ADl7+AA5fAAAOXwEADl+UAA5ftwAOX9cADl/3AA5f+QAOX/sADl/9AA5f/wAOYAIADmADAA5gBAAOYAcADmAIAA5gCgAOYAsADmANAA5gEAAOYBEADmASAA5gFQAOYBYADmAbAA5gNAAOYD0ADmA/AA5gQQAOYEoADmBNAA5gUAAOYFIADmCbAA5gvwAOYOYADmEKAA5hDQAOYQ8ADmERAA5hEwAOYRUADmEXAA5hGAAOYRsADmE0AA5hVQAOYVcADmFZAA5hWwAOYV0ADmFfAA5hYQAOYWMADmFlAA5hhgAOYYkADmGMAA5hjwAOYZIADmGVAA5hmAAOYZsADmGeAA5hoAAOYhsADmIdAA5iHwAOYiEADmIkAA5iJQAOYiYADmInAA5iKAAOYioADmIsAA5iLQAOYi4ADmIwAA5iMQAOYqwADmKuAA5isAAOYrIADmK1AA5itgAOYrcADmK4AA5iuQAOYrsADmK9AA5ivgAOYr8ADmLBAA5iwgAOYz0ADmM/AA5jQgAOY0QADmNHAA5jSAAOY0kADmNKAA5jSwAOY00ADmNPAA5jUAAOY1EADmNTAA5jVAAOY20ADmNuAA5jbwAOY3EADmPsAA5j7gAOY/AADmPyAA5j9QAOY/YADmP3AA5j+AAOY/kADmP7AA5j/QAOY/4ADmP/AA5kAQAOZAIADmR9AA5kfwAOZIEADmSDAA5khgAOZIcADmSIAA5kiQAOZIoADmSMAA5kjgAOZI8ADmSQAA5kkgAOZJMADmUOAA5lEAAOZRIADmUUAA5lFwAOZRgADmUZAA5lGgAOZRsADmUdAA5lHwAOZSAADmUhAA5lIwAOZSQADmWfAA5loQAOZaMADmWlAA5lqAAOZakADmWqAA5lqwAOZawADmWuAA5lsAAOZbEADmWyAA5ltAAOZbUADmYwAA5mMgAOZjQADmY2AA5mOQAOZjoADmY7AA5mPAAOZj0ADmY/AA5mQQAOZkIADmZDAA5mRQAOZkYADmaPAA5mswAOZtoADmb+AA5nAQAOZwMADmcFAA5nBwAOZwkADmcLAA5nDAAOZw8ADmcoAA5nRQAOZ0cADmdJAA5nSwAOZ00ADmdPAA5nUQAOZ1MADmdwAA5ncwAOZ3YADmd5AA5nfAAOZ38ADmeCAA5nhQAOZ4cADmgCAA5oBAAOaAYADmgIAA5oCwAOaAwADmgNAA5oDgAOaA8ADmgRAA5oEwAOaBQADmgVAA5oFwAOaBgADmiTAA5olQAOaJcADmiZAA5onAAOaJ0ADmieAA5onwAOaKAADmiiAA5opAAOaKUADmimAA5oqAAOaKkADmkkAA5pJgAOaSgADmkqAA5pLQAOaS4ADmkvAA5pMAAOaTEADmkzAA5pNQAOaTYADmk3AA5pOQAOaToADmm1AA5ptwAOaboADmm8AA5pvwAOacAADmnBAA5pwgAOacMADmnFAA5pxwAOacgADmnJAA5pywAOacwADmpHAA5qSQAOaksADmpNAA5qUAAOalEADmpSAA5qUwAOalQADmpWAA5qWAAOalkADmpaAA5qXAAOal0ADmrYAA5q2gAOatwADmreAA5q4QAOauIADmrjAA5q5AAOauUADmrnAA5q6QAOauoADmrrAA5q7QAOau4ADmtpAA5rawAOa20ADmtvAA5rcgAOa3MADmt0AA5rdQAOa3YADmt4AA5regAOa3sADmt8AA5rfgAOa38ADmwSAA5sNQAObFUADmx1AA5sdwAObHkADmx7AA5sfQAObIAADmyBAA5sggAObIUADmyGAA5siAAObIkADmyLAA5sjgAObI8ADmyQAA5skwAObJQADmyZAA5ssgAObLsADmy9AA5svwAObMgADmzLAA5szgAObNAADm0ZAA5tPQAObWQADm2IAA5tiwAObY0ADm2PAA5tkQAObZMADm2VAA5tlgAObZkADm2yAA5t0wAObdUADm3XAA5t2QAObdsADm3dAA5t3wAObeEADm3jAA5uBAAObgcADm4KAA5uDQAObhAADm4TAA5uFgAObhkADm4cAA5uHgAObpkADm6bAA5unQAObp8ADm6iAA5uowAObqQADm6lAA5upgAObqgADm6qAA5uqwAObqwADm6uAA5urwAObyoADm8sAA5vLgAObzAADm8zAA5vNAAObzUADm82AA5vNwAObzkADm87AA5vPAAObz0ADm8/AA5vQAAOb7sADm+9AA5vwAAOb8IADm/FAA5vxgAOb8cADm/IAA5vyQAOb8sADm/NAA5vzgAOb88ADm/RAA5v0gAOb+sADm/sAA5v7QAOb+8ADnBqAA5wbAAOcG4ADnBwAA5wcwAOcHQADnB1AA5wdgAOcHcADnB5AA5wewAOcHwADnB9AA5wfwAOcIAADnD7AA5w/QAOcP8ADnEBAA5xBAAOcQUADnEGAA5xBwAOcQgADnEKAA5xDAAOcQ0ADnEOAA5xEAAOcREADnGMAA5xjgAOcZAADnGSAA5xlQAOcZYADnGXAA5xmAAOcZkADnGbAA5xnQAOcZ4ADnGfAA5xoQAOcaIADnIdAA5yHwAOciEADnIjAA5yJgAOcicADnIoAA5yKQAOcioADnIsAA5yLgAOci8ADnIwAA5yMgAOcjMADnKuAA5ysAAOcrIADnK0AA5ytwAOcrgADnK5AA5yugAOcrsADnK9AA5yvwAOcsAADnLBAA5ywwAOcsQADnMNAA5zMQAOc1gADnN8AA5zfwAOc4EADnODAA5zhQAOc4cADnOJAA5zigAOc40ADnOmAA5zwwAOc8UADnPHAA5zyQAOc8sADnPNAA5zzwAOc9EADnPuAA5z8QAOc/QADnP3AA5z+gAOc/0ADnQAAA50AwAOdAUADnSAAA50ggAOdIQADnSGAA50iQAOdIoADnSLAA50jAAOdI0ADnSPAA50kQAOdJIADnSTAA50lQAOdJYADnURAA51EwAOdRUADnUXAA51GgAOdRsADnUcAA51HQAOdR4ADnUgAA51IgAOdSMADnUkAA51JgAOdScADnWiAA51pAAOdaYADnWoAA51qwAOdawADnWtAA51rgAOda8ADnWxAA51swAOdbQADnW1AA51twAOdbgADnYzAA52NQAOdjcADnY5AA52PAAOdj0ADnY+AA52PwAOdkAADnZCAA52RAAOdkUADnZGAA52SAAOdkkADnbEAA52xgAOdsgADnbKAA52zQAOds4ADnbPAA520AAOdtEADnbTAA521QAOdtYADnbXAA522QAOdtoADndVAA53VwAOd1kADndbAA53XgAOd18ADndgAA53YQAOd2IADndkAA53ZgAOd2cADndoAA53agAOd2sADnfmAA536AAOd+oADnfsAA537wAOd/AADnfxAA538gAOd/MADnf1AA539wAOd/gADnf5AA53+wAOd/wADngNAA54DgAOeBAADniLAA54jQAOeI8ADniRAA54lAAOeJUADniWAA54lwAOeJgADniaAA54nQAOeJ4ADnifAA54oQAOeKIADnkdAA55HwAOeSEADnkjAA55JgAOeScADnkoAA55KQAOeSoADnksAA55LwAOeTAADnkxAA55MwAOeTQADnmvAA55sQAOebQADnm2AA55uQAOeboADnm7AA55vAAOeb0ADnm/AA55wgAOecMADnnEAA55xgAOeccADnpaAA56fQAOep0ADnq9AA56vwAOesEADnrDAA56xQAOesgADnrJAA56ygAOes0ADnrOAA560AAOetEADnrTAA561gAOetcADnrYAA562wAOetwADnrhAA56+gAOewMADnsFAA57BwAOexAADnsTAA57FgAOexgADnthAA57hQAOe6wADnvQAA570wAOe9UADnvXAA572QAOe9sADnvdAA573gAOe+EADnv6AA58GwAOfB0ADnwfAA58IQAOfCMADnwlAA58JwAOfCkADnwrAA58TAAOfE8ADnxSAA58VQAOfFgADnxbAA58XgAOfGEADnxkAA58ZgAOfOEADnzjAA585QAOfOcADnzqAA586wAOfOwADnztAA587gAOfPAADnzyAA588wAOfPQADnz2AA589wAOfXIADn10AA59dgAOfXgADn17AA59fAAOfX0ADn1+AA59fwAOfYEADn2DAA59hAAOfYUADn2HAA59iAAOfgMADn4FAA5+CAAOfgoADn4NAA5+DgAOfg8ADn4QAA5+EQAOfhMADn4VAA5+FgAOfhcADn4ZAA5+GgAOfjMADn40AA5+NQAOfjcADn6yAA5+tAAOfrYADn64AA5+uwAOfrwADn69AA5+vgAOfr8ADn7BAA5+wwAOfsQADn7FAA5+xwAOfsgADn9DAA5/RQAOf0cADn9JAA5/TAAOf00ADn9OAA5/TwAOf1AADn9SAA5/VAAOf1UADn9WAA5/WAAOf1kADn/UAA5/1gAOf9gADn/aAA5/3QAOf94ADn/fAA5/4AAOf+EADn/jAA5/5QAOf+YADn/nAA5/6QAOf+oADoBlAA6AZwAOgGkADoBrAA6AbgAOgG8ADoBwAA6AcQAOgHIADoB0AA6AdgAOgHcADoB4AA6AegAOgHsADoD2AA6A+AAOgPoADoD8AA6A/wAOgQAADoEBAA6BAgAOgQMADoEFAA6BBwAOgQgADoEJAA6BCwAOgQwADoFVAA6BeQAOgaAADoHEAA6BxwAOgckADoHLAA6BzQAOgc8ADoHRAA6B0gAOgdUADoHuAA6CCwAOgg0ADoIPAA6CEQAOghMADoIVAA6CFwAOghkADoI2AA6COQAOgjwADoI/AA6CQgAOgkUADoJIAA6CSwAOgk0ADoLIAA6CygAOgs0ADoLPAA6C0gAOgtMADoLUAA6C1QAOgtYADoLYAA6C2gAOgtsADoLcAA6C3gAOgt8ADoNaAA6DXAAOg14ADoNgAA6DYwAOg2QADoNlAA6DZgAOg2cADoNpAA6DawAOg2wADoNtAA6DbwAOg3AADoPrAA6D7QAOg+8ADoPxAA6D9AAOg/UADoP2AA6D9wAOg/gADoP6AA6D/AAOg/0ADoP+AA6EAAAOhAEADoR8AA6EfgAOhIEADoSDAA6EhgAOhIcADoSIAA6EiQAOhIoADoSMAA6EjgAOhI8ADoSQAA6EkgAOhJMADoUOAA6FEAAOhRIADoUUAA6FFwAOhRgADoUZAA6FGgAOhRsADoUdAA6FHwAOhSAADoUhAA6FIwAOhSQADoWfAA6FoQAOhaMADoWlAA6FqAAOhakADoWqAA6FqwAOhawADoWuAA6FsAAOhbEADoWyAA6FtAAOhbUADoYwAA6GMgAOhjQADoY2AA6GOQAOhjoADoY7AA6GPAAOhj0ADoY/AA6GQQAOhkIADoZDAA6GRQAOhkYADobZAA6G/AAOhxwADoc8AA6HPgAOh0AADodCAA6HRAAOh0cADodIAA6HSQAOh0wADodNAA6HTwAOh1AADodSAA6HVQAOh1YADodXAA6HWgAOh1sADodgAA6HeQAOh4IADoeEAA6HhgAOh48ADoeSAA6HlQAOh5cADofgAA6IBAAOiCsADohPAA6IUgAOiFQADohWAA6IWAAOiFoADohcAA6IXQAOiGAADoh5AA6ImgAOiJwADoieAA6IoAAOiKIADoikAA6IpgAOiKgADoiqAA6IywAOiM4ADojRAA6I1AAOiNcADojaAA6I3QAOiOAADojjAA6I5QAOiWAADoliAA6JZAAOiWYADolpAA6JagAOiWsADolsAA6JbQAOiW8ADolxAA6JcgAOiXMADol1AA6JdgAOifEADonzAA6J9QAOifcADon6AA6J+wAOifwADon9AA6J/gAOigAADooCAA6KAwAOigQADooGAA6KBwAOioIADoqEAA6KhwAOiokADoqMAA6KjQAOio4ADoqPAA6KkAAOipIADoqUAA6KlQAOipYADoqYAA6KmQAOirIADoqzAA6KtAAOirYADosxAA6LMwAOizUADos3AA6LOgAOizsADos8AA6LPQAOiz4ADotAAA6LQgAOi0MADotEAA6LRgAOi0cADovCAA6LxAAOi8YADovIAA6LywAOi8wADovNAA6LzgAOi88ADovRAA6L0wAOi9QADovVAA6L1wAOi9gADoxTAA6MVQAOjFcADoxZAA6MXAAOjF0ADoxeAA6MXwAOjGAADoxiAA6MZAAOjGUADoxmAA6MaAAOjGkADozkAA6M5gAOjOgADozqAA6M7QAOjO4ADozvAA6M8AAOjPEADozzAA6M9QAOjPYADoz3AA6M+QAOjPoADo11AA6NdwAOjXkADo17AA6NfgAOjX8ADo2AAA6NgQAOjYIADo2EAA6NhgAOjYcADo2IAA6NigAOjYsADo3UAA6N+AAOjh8ADo5DAA6ORgAOjkgADo5KAA6OTAAOjk4ADo5QAA6OUQAOjlQADo5tAA6OigAOjowADo6OAA6OkAAOjpIADo6UAA6OlgAOjpgADo61AA6OuAAOjrsADo6+AA6OwQAOjsQADo7HAA6OygAOjswADo9HAA6PSQAOj0sADo9NAA6PUAAOj1EADo9SAA6PUwAOj1QADo9WAA6PWAAOj1kADo9aAA6PXAAOj10ADo/YAA6P2gAOj9wADo/eAA6P4QAOj+IADo/jAA6P5AAOj+UADo/nAA6P6QAOj+oADo/rAA6P7QAOj+4ADpBpAA6QawAOkG0ADpBvAA6QcgAOkHMADpB0AA6QdQAOkHYADpB4AA6QegAOkHsADpB8AA6QfgAOkH8ADpD6AA6Q/AAOkP8ADpEBAA6RBAAOkQUADpEGAA6RBwAOkQgADpEKAA6RDAAOkQ0ADpEOAA6REAAOkREADpGMAA6RjgAOkZAADpGSAA6RlQAOkZYADpGXAA6RmAAOkZkADpGbAA6RnQAOkZ4ADpGfAA6RoQAOkaIADpIdAA6SHwAOkiEADpIjAA6SJgAOkicADpIoAA6SKQAOkioADpIsAA6SLgAOki8ADpIwAA6SMgAOkjMADpKuAA6SsAAOkrIADpK0AA6StwAOkrgADpK5AA6SugAOkrsADpK9AA6SvwAOksAADpLBAA6SwwAOksQADpNXAA6TegAOk5oADpO6AA6TvAAOk74ADpPAAA6TwgAOk8UADpPGAA6TxwAOk8oADpPLAA6TzQAOk84ADpPQAA6T0wAOk9QADpPVAA6T2AAOk9kADpPeAA6T9wAOlAAADpQCAA6UBAAOlA0ADpQQAA6UEwAOlBUADpReAA6UggAOlKkADpTNAA6U0AAOlNIADpTUAA6U1gAOlNgADpTaAA6U2wAOlN4ADpT3AA6VGAAOlRoADpUcAA6VHgAOlSAADpUiAA6VJAAOlSYADpUoAA6VSQAOlUwADpVPAA6VUgAOlVUADpVYAA6VWwAOlV4ADpVhAA6VYwAOld4ADpXgAA6V4gAOleQADpXnAA6V6AAOlekADpXqAA6V6wAOle0ADpXvAA6V8AAOlfEADpXzAA6V9AAOlm8ADpZxAA6WcwAOlnUADpZ4AA6WeQAOlnoADpZ7AA6WfAAOln4ADpaAAA6WgQAOloIADpaEAA6WhQAOlwAADpcCAA6XBQAOlwcADpcKAA6XCwAOlwwADpcNAA6XDgAOlxAADpcSAA6XEwAOlxQADpcWAA6XFwAOlzAADpcxAA6XMgAOlzQADpevAA6XsQAOl7MADpe1AA6XuAAOl7kADpe6AA6XuwAOl7wADpe+AA6XwAAOl8EADpfCAA6XxAAOl8UADphAAA6YQgAOmEQADphGAA6YSQAOmEoADphLAA6YTAAOmE0ADphPAA6YUQAOmFIADphTAA6YVQAOmFYADpjRAA6Y0wAOmNUADpjXAA6Y2gAOmNsADpjcAA6Y3QAOmN4ADpjgAA6Y4gAOmOMADpjkAA6Y5gAOmOcADpliAA6ZZAAOmWYADploAA6ZawAOmWwADpltAA6ZbgAOmW8ADplxAA6ZcwAOmXQADpl1AA6ZdwAOmXgADpnzAA6Z9QAOmfcADpn5AA6Z/AAOmf0ADpn+AA6Z/wAOmgAADpoCAA6aBAAOmgUADpoGAA6aCAAOmgkADppSAA6adgAOmp0ADprBAA6axAAOmsYADprIAA6aygAOmswADprOAA6azwAOmtIADprrAA6bCAAOmwoADpsMAA6bDgAOmxAADpsSAA6bFAAOmxYADpszAA6bNgAOmzkADps8AA6bPwAOm0IADptFAA6bSAAOm0oADpvFAA6bxwAOm8kADpvLAA6bzgAOm88ADpvQAA6b0QAOm9IADpvUAA6b1gAOm9cADpvYAA6b2gAOm9sADpxWAA6cWAAOnFoADpxcAA6cXwAOnGAADpxhAA6cYgAOnGMADpxlAA6cZwAOnGgADpxpAA6cawAOnGwADpznAA6c6QAOnOsADpztAA6c8AAOnPEADpzyAA6c8wAOnPQADpz2AA6c+AAOnPkADpz6AA6c/AAOnP0ADp14AA6degAOnXwADp1+AA6dgQAOnYIADp2DAA6dhAAOnYUADp2HAA6diQAOnYoADp2LAA6djQAOnY4ADp4JAA6eCwAOng0ADp4PAA6eEgAOnhMADp4UAA6eFQAOnhYADp4YAA6eGgAOnhsADp4cAA6eHgAOnh8ADp6aAA6enAAOnp4ADp6gAA6eowAOnqQADp6lAA6epgAOnqcADp6pAA6eqwAOnqwADp6tAA6erwAOnrAADp8rAA6fLQAOny8ADp8xAA6fNAAOnzUADp82AA6fNwAOnzgADp86AA6fPAAOnz0ADp8+AA6fQAAOn0EADp9SAA6fUwAOn1UADp/YAA6f/AAOoCAADqBDAA6gagAOoIoADqCxAA6g2AAOoPgADqEcAA6hQAAOoUIADqFFAA6hRwAOoUkADqFLAA6hTgAOoVEADqFTAA6hVQAOoVgADqFaAA6hXAAOoV8ADqFiAA6hYwAOoWgADqGBAA6hhgAOoYgADqGNAA6hkAAOoZIADqHbAA6h/wAOoiYADqJKAA6iTQAOok8ADqJRAA6iUwAOolUADqJXAA6iWAAOolsADqJ0AA6imQAOopsADqKdAA6inwAOoqEADqKjAA6ipQAOoqcADqKpAA6iqwAOotAADqLTAA6i1gAOotkADqLcAA6i3wAOouIADqLlAA6i6AAOousADqLtAA6jaAAOo2oADqNtAA6jbwAOo3IADqNzAA6jdAAOo3UADqN2AA6jeAAOo3oADqN7AA6jfAAOo34ADqN/AA6jkAAOo5EADqOTAA6kDgAOpBAADqQSAA6kFAAOpBcADqQYAA6kGQAOpBoADqQbAA6kHQAOpB8ADqQgAA6kIQAOpCMADqQkAA6knwAOpKEADqSkAA6kpgAOpKkADqSqAA6kqwAOpKwADqStAA6krwAOpLEADqSyAA6kswAOpLUADqS2AA6kxwAOpMwADqTPAA6k0QAOpOIADqTrAA6k7gAOpPEADqTzAA6lDwAOpSEADqWcAA6lngAOpaAADqWiAA6lpQAOpaYADqWnAA6lqAAOpakADqWrAA6lrQAOpa4ADqWvAA6lsQAOpbIADqYtAA6mLwAOpjIADqY0AA6mNwAOpjgADqY5AA6mOgAOpjsADqY9AA6mPwAOpkAADqZBAA6mQwAOpkQADqZVAA6mVgAOplgADqbTAA6m1QAOptcADqbZAA6m3AAOpt0ADqbeAA6m3wAOpuAADqbiAA6m5AAOpuUADqbmAA6m6AAOpukADqdkAA6nZgAOp2kADqdrAA6nbgAOp28ADqdwAA6ncQAOp3IADqd0AA6ndgAOp3cADqd4AA6negAOp3sADqeUAA6nlQAOp5YADqeYAA6oEwAOqBUADqgXAA6oGQAOqBwADqgdAA6oHgAOqB8ADqggAA6oIgAOqCQADqglAA6oJgAOqCgADqgpAA6opAAOqKYADqipAA6oqwAOqK4ADqivAA6osAAOqLEADqiyAA6otAAOqLYADqi3AA6ouAAOqLoADqi7AA6o1QAOqO4ADqj3AA6o+gAOqP0ADqkGAA6pCQAOqQwADqkOAA6pIAAOqTwADqnPAA6p8gAOqhIADqoyAA6qNAAOqjYADqo4AA6qOgAOqj0ADqo+AA6qPwAOqkIADqpDAA6qRQAOqkYADqpIAA6qSwAOqkwADqpNAA6qUAAOqlEADqpaAA6qcwAOqnwADqp+AA6qgAAOqokADqqMAA6qjwAOqpEADqraAA6q/gAOqyUADqtJAA6rTAAOq04ADqtQAA6rUgAOq1QADqtWAA6rVwAOq1oADqtzAA6rlAAOq5YADquYAA6rmgAOq5wADqueAA6roAAOq6IADqukAA6rxQAOq8gADqvLAA6rzgAOq9EADqvUAA6r1wAOq9oADqvdAA6r3wAOrFoADqxcAA6sXgAOrGAADqxjAA6sZAAOrGUADqxmAA6sZwAOrGkADqxrAA6sbAAOrG0ADqxvAA6scAAOrOsADqztAA6s7wAOrPEADqz0AA6s9QAOrPYADqz3AA6s+AAOrPoADqz8AA6s/QAOrP4ADq0AAA6tAQAOrXwADq1+AA6tgQAOrYMADq2GAA6thwAOrYgADq2JAA6tigAOrYwADq2OAA6tjwAOrZAADq2SAA6tkwAOrawADq2tAA6trgAOrbAADq4rAA6uLQAOri8ADq4xAA6uNAAOrjUADq42AA6uNwAOrjgADq46AA6uPAAOrj0ADq4+AA6uQAAOrkEADq68AA6uvgAOrsAADq7CAA6uxQAOrsYADq7HAA6uyAAOrskADq7LAA6uzQAOrs4ADq7PAA6u0QAOrtIADq9NAA6vTwAOr1EADq9TAA6vVgAOr1cADq9YAA6vWQAOr1oADq9cAA6vXgAOr18ADq9gAA6vYgAOr2MADq/eAA6v4AAOr+IADq/kAA6v5wAOr+gADq/pAA6v6gAOr+sADq/tAA6v7wAOr/AADq/xAA6v8wAOr/QADrBvAA6wcQAOsHMADrB1AA6weAAOsHkADrB6AA6wewAOsHwADrB+AA6wgAAOsIEADrCCAA6whAAOsIUADrDOAA6w8gAOsRkADrE9AA6xQAAOsUIADrFEAA6xRgAOsUgADrFKAA6xSwAOsU4ADrFnAA6xhAAOsYYADrGIAA6xigAOsYwADrGOAA6xkAAOsZIADrGvAA6xsgAOsbUADrG4AA6xuwAOsb4ADrHBAA6xxAAOscYADrJBAA6yQwAOskUADrJHAA6ySgAOsksADrJMAA6yTQAOsk4ADrJQAA6yUgAOslMADrJUAA6yVgAOslcADrLSAA6y1AAOstYADrLYAA6y2wAOstwADrLdAA6y3gAOst8ADrLhAA6y4wAOsuQADrLlAA6y5wAOsugADrNjAA6zZQAOs2cADrNpAA6zbAAOs20ADrNuAA6zbwAOs3AADrNyAA6zdAAOs3UADrN2AA6zeAAOs3kADrP0AA6z9gAOs/kADrP7AA6z/gAOs/8ADrQAAA60AQAOtAIADrQEAA60BgAOtAcADrQIAA60CgAOtAsADrSGAA60iAAOtIoADrSMAA60jwAOtJAADrSRAA60kgAOtJMADrSVAA60lwAOtJgADrSZAA60mwAOtJwADrUXAA61GQAOtRwADrUeAA61IQAOtSIADrUjAA61JAAOtSUADrUnAA61KQAOtSoADrUrAA61LQAOtS4ADrU9AA61uAAOtboADrW8AA61vgAOtcEADrXCAA61wwAOtcQADrXFAA61xwAOtckADrXKAA61ywAOtc0ADrXOAA62YQAOtoQADrakAA62xAAOtsYADrbIAA62ygAOtswADrbPAA620AAOttEADrbUAA621QAOttcADrbYAA622gAOtt0ADrbeAA623wAOtuIADrbjAA626AAOtwEADrcKAA63DAAOtw4ADrcXAA63GgAOtx0ADrcfAA63aAAOt4wADrezAA631wAOt9oADrfcAA633gAOt+AADrfiAA635AAOt+UADrfoAA64AQAOuCIADrgkAA64JgAOuCgADrgqAA64LAAOuC4ADrgwAA64MgAOuFMADrhWAA64WQAOuFwADrhfAA64YgAOuGUADrhoAA64awAOuG0ADrjoAA646gAOuOwADrjuAA648QAOuPIADrjzAA649AAOuPUADrj3AA64+QAOuPoADrj7AA64/QAOuP4ADrl5AA65ewAOuX0ADrl/AA65ggAOuYMADrmEAA65hQAOuYYADrmIAA65igAOuYsADrmMAA65jgAOuY8ADroKAA66DAAOug8ADroRAA66FAAOuhUADroWAA66FwAOuhgADroaAA66HAAOuh0ADroeAA66IAAOuiEADro6AA66OwAOujwADro+AA66uQAOursADrq9AA66vwAOusIADrrDAA66xAAOusUADrrGAA66yAAOusoADrrLAA66zAAOus4ADrrPAA67SgAOu0wADrtOAA67UAAOu1MADrtUAA67VQAOu1YADrtXAA67WQAOu1sADrtcAA67XQAOu18ADrtgAA672wAOu90ADrvfAA674QAOu+QADrvlAA675gAOu+cADrvoAA676gAOu+wADrvtAA677gAOu/AADrvxAA68bAAOvG4ADrxwAA68cgAOvHUADrx2AA68dwAOvHgADrx5AA68ewAOvH0ADrx+AA68fwAOvIEADryCAA68/QAOvP8ADr0BAA69AwAOvQYADr0HAA69CAAOvQkADr0KAA69DAAOvQ4ADr0PAA69EAAOvRIADr0TAA69XAAOvYAADr2nAA69ywAOvc4ADr3QAA690gAOvdQADr3WAA692AAOvdkADr3cAA699QAOvhIADr4UAA6+FgAOvhgADr4aAA6+HAAOvh4ADr4gAA6+PQAOvkAADr5DAA6+RgAOvkkADr5MAA6+TwAOvlIADr5UAA6+zwAOvtEADr7TAA6+1QAOvtgADr7ZAA6+2gAOvtsADr7cAA6+3gAOvuAADr7hAA6+4gAOvuQADr7lAA6/YAAOv2IADr9kAA6/ZgAOv2kADr9qAA6/awAOv2wADr9tAA6/bwAOv3EADr9yAA6/cwAOv3UADr92AA6/8QAOv/MADr/1AA6/9wAOv/oADr/7AA6//AAOv/0ADr/+AA7AAAAOwAIADsADAA7ABAAOwAYADsAHAA7AggAOwIQADsCHAA7AiQAOwIwADsCNAA7AjgAOwI8ADsCQAA7AkgAOwJQADsCVAA7AlgAOwJgADsCZAA7BFAAOwRYADsEYAA7BGgAOwR0ADsEeAA7BHwAOwSAADsEhAA7BIwAOwSUADsEmAA7BJwAOwSkADsEqAA7BpQAOwacADsGpAA7BqwAOwa4ADsGvAA7BsAAOwbEADsGyAA7BtAAOwbYADsG3AA7BuAAOwboADsG7AA7CNgAOwjgADsI6AA7CPAAOwj8ADsJAAA7CQQAOwkIADsJDAA7CRQAOwkcADsJIAA7CSQAOwksADsJMAA7CXQAOwl4ADsJgAA7C4wAOwwcADsMrAA7DTgAOw3UADsOVAA7DvAAOw+MADsQDAA7EJwAOxEsADsRNAA7EUAAOxFIADsRUAA7EVgAOxFkADsRcAA7EXgAOxGAADsRjAA7EZQAOxGcADsRqAA7EbQAOxG4ADsRzAA7EjAAOxJEADsSTAA7EmAAOxJsADsSdAA7E5gAOxQoADsUxAA7FVQAOxVgADsVaAA7FXAAOxV4ADsVgAA7FYgAOxWMADsVmAA7FfwAOxaQADsWmAA7FqAAOxaoADsWsAA7FrgAOxbAADsWyAA7FtAAOxbYADsXbAA7F3gAOxeEADsXkAA7F5wAOxeoADsXtAA7F8AAOxfMADsX2AA7F+AAOxnMADsZ1AA7GeAAOxnoADsZ9AA7GfgAOxn8ADsaAAA7GgQAOxoMADsaFAA7GhgAOxocADsaJAA7GigAOxpsADsacAA7GngAOxxkADscbAA7HHQAOxx8ADsciAA7HIwAOxyQADsclAA7HJgAOxygADscqAA7HKwAOxywADscuAA7HLwAOx6oADsesAA7HrwAOx7EADse0AA7HtQAOx7YADse3AA7HuAAOx7oADse8AA7HvQAOx74ADsfAAA7HwQAOx9IADsfXAA7H2gAOx9wADsftAA7H9gAOx/kADsf8AA7H/gAOyBAADsiLAA7IjQAOyI8ADsiRAA7IlAAOyJUADsiWAA7IlwAOyJgADsiaAA7InAAOyJ0ADsieAA7IoAAOyKEADskcAA7JHgAOySEADskjAA7JJgAOyScADskoAA7JKQAOySoADsksAA7JLgAOyS8ADskwAA7JMgAOyTMADslEAA7JRQAOyUcADsnCAA7JxAAOycYADsnIAA7JywAOycwADsnNAA7JzgAOyc8ADsnRAA7J0wAOydQADsnVAA7J1wAOydgADspTAA7KVQAOylgADspaAA7KXQAOyl4ADspfAA7KYAAOymEADspjAA7KZQAOymYADspnAA7KaQAOymoADsqDAA7KhAAOyoUADsqHAA7LAgAOywQADssGAA7LCAAOywsADssMAA7LDQAOyw4ADssPAA7LEQAOyxMADssUAA7LFQAOyxcADssYAA7LkwAOy5UADsuXAA7LmQAOy5wADsudAA7LngAOy58ADsugAA7LogAOy6QADsulAA7LpgAOy6gADsupAA7LwgAOy+MADsvmAA7L6QAOy+wADsvvAA7L8gAOy/UADsv4AA7L+wAOzBwADswfAA7MIgAOzCUADswoAA7MKwAOzC4ADswxAA7MNAAOzDYADsxMAA7MWQAOzHEADsyDAA7MjQAOzKEADsyrAA7NPgAOzWEADs2BAA7NoQAOzaMADs2lAA7NpwAOzakADs2sAA7NrQAOza4ADs2xAA7NsgAOzbQADs21AA7NtwAOzboADs27AA7NvAAOzb8ADs3AAA7NxQAOzd4ADs3nAA7N6QAOzesADs30AA7N9wAOzfoADs38AA7ORQAOzmkADs6QAA7OtAAOzrcADs65AA7OuwAOzr0ADs6/AA7OwQAOzsIADs7FAA7O3gAOzv8ADs8BAA7PAwAOzwUADs8HAA7PCQAOzwsADs8NAA7PDwAOzzAADs8zAA7PNgAOzzkADs88AA7PPwAOz0IADs9FAA7PSAAOz0oADs/FAA7PxwAOz8kADs/LAA7PzgAOz88ADs/QAA7P0QAOz9IADs/UAA7P1gAOz9cADs/YAA7P2gAOz9sADtBWAA7QWAAO0FoADtBcAA7QXwAO0GAADtBhAA7QYgAO0GMADtBlAA7QZwAO0GgADtBpAA7QawAO0GwADtDnAA7Q6QAO0OwADtDuAA7Q8QAO0PIADtDzAA7Q9AAO0PUADtD3AA7Q+QAO0PoADtD7AA7Q/QAO0P4ADtEXAA7RGAAO0RkADtEbAA7RlgAO0ZgADtGaAA7RnAAO0Z8ADtGgAA7RoQAO0aIADtGjAA7RpQAO0acADtGoAA7RqQAO0asADtGsAA7SJwAO0ikADtIrAA7SLQAO0jAADtIxAA7SMgAO0jMADtI0AA7SNgAO0jgADtI5AA7SOgAO0jwADtI9AA7SuAAO0roADtK8AA7SvgAO0sEADtLCAA7SwwAO0sQADtLFAA7SxwAO0skADtLKAA7SywAO0s0ADtLOAA7TSQAO00sADtNNAA7TTwAO01IADtNTAA7TVAAO01UADtNWAA7TWAAO01oADtNbAA7TXAAO014ADtNfAA7T2gAO09wADtPeAA7T4AAO0+MADtPkAA7T5QAO0+YADtPnAA7T6QAO0+sADtPsAA7T7QAO0+8ADtPwAA7UOQAO1F0ADtSEAA7UqAAO1KsADtStAA7UrwAO1LEADtSzAA7UtQAO1LYADtS5AA7U0gAO1O8ADtTxAA7U8wAO1PUADtT3AA7U+QAO1PsADtT9AA7VGgAO1R0ADtUgAA7VIwAO1SYADtUpAA7VLAAO1S8ADtUxAA7VrAAO1a4ADtWwAA7VsgAO1bUADtW2AA7VtwAO1bgADtW5AA7VuwAO1b0ADtW+AA7VvwAO1cEADtXCAA7WPQAO1j8ADtZBAA7WQwAO1kYADtZHAA7WSAAO1kkADtZKAA7WTAAO1k4ADtZPAA7WUAAO1lIADtZTAA7WzgAO1tAADtbSAA7W1AAO1tcADtbYAA7W2QAO1toADtbbAA7W3QAO1t8ADtbgAA7W4QAO1uMADtbkAA7XXwAO12EADtdkAA7XZgAO12kADtdqAA7XawAO12wADtdtAA7XbwAO13EADtdyAA7XcwAO13UADtd2AA7X8QAO1/MADtf1AA7X9wAO1/oADtf7AA7X/AAO1/0ADtf+AA7YAAAO2AIADtgDAA7YBAAO2AYADtgHAA7YggAO2IQADtiGAA7YiAAO2IsADtiMAA7YjQAO2I4ADtiPAA7YkQAO2JMADtiUAA7YlQAO2JcADtiYAA7ZEwAO2RUADtkXAA7ZGQAO2RwADtkdAA7ZHgAO2R8ADtkgAA7ZIgAO2SQADtklAA7ZJgAO2SgADtkpAA7ZvAAO2d8ADtn/AA7aHwAO2iEADtojAA7aJQAO2icADtoqAA7aKwAO2iwADtovAA7aMAAO2jIADtozAA7aNgAO2jkADto6AA7aOwAO2j4ADto/AA7aRAAO2l0ADtpmAA7aaAAO2msADtp0AA7adwAO2noADtp8AA7axQAO2ukADtsQAA7bNAAO2zcADts5AA7bOwAO2z0ADts/AA7bQQAO20IADttFAA7bXgAO238ADtuBAA7bgwAO24UADtuHAA7biQAO24sADtuNAA7bjwAO27AADtuzAA7btgAO27kADtu8AA7bvwAO28IADtvFAA7byAAO28oADtxFAA7cRwAO3EkADtxLAA7cTgAO3E8ADtxQAA7cUQAO3FIADtxUAA7cVgAO3FcADtxYAA7cWgAO3FsADtzWAA7c2AAO3NoADtzcAA7c3wAO3OAADtzhAA7c4gAO3OMADtzlAA7c5wAO3OgADtzpAA7c6wAO3OwADt1nAA7daQAO3WwADt1uAA7dcQAO3XIADt1zAA7ddAAO3XUADt13AA7deQAO3XoADt17AA7dfQAO3X4ADt2XAA7dmAAO3ZkADt2bAA7eFgAO3hgADt4aAA7eHAAO3h8ADt4gAA7eIQAO3iIADt4jAA7eJQAO3icADt4oAA7eKQAO3isADt4sAA7epwAO3qkADt6rAA7erQAO3rAADt6xAA7esgAO3rMADt60AA7etgAO3rgADt65AA7eugAO3rwADt69AA7fOAAO3zoADt88AA7fPgAO30EADt9CAA7fQwAO30QADt9FAA7fRwAO30kADt9KAA7fSwAO300ADt9OAA7fyQAO38sADt/NAA7fzwAO39IADt/TAA7f1AAO39UADt/WAA7f2AAO39oADt/bAA7f3AAO394ADt/fAA7gWgAO4FwADuBeAA7gYAAO4GMADuBkAA7gZQAO4GYADuBnAA7gaQAO4GsADuBsAA7gbQAO4G8ADuBwAA7guQAO4N0ADuEEAA7hKAAO4SsADuEuAA7hMAAO4TIADuE0AA7hNgAO4TcADuE6AA7hUwAO4XAADuFzAA7hdgAO4XkADuF8AA7hfwAO4YIADuGFAA7hogAO4aUADuGoAA7hqwAO4a4ADuGxAA7htAAO4bcADuG5AA7iNAAO4jYADuI5AA7iOwAO4j4ADuI/AA7iQAAO4kEADuJCAA7iRAAO4kcADuJIAA7iSQAO4ksADuJMAA7ixwAO4skADuLMAA7izgAO4tEADuLSAA7i0wAO4tQADuLVAA7i1wAO4toADuLbAA7i3AAO4t4ADuLfAA7jWgAO41wADuNfAA7jYQAO42QADuNlAA7jZgAO42cADuNoAA7jagAO420ADuNuAA7jbwAO43EADuNyAA7j7QAO4+8ADuPyAA7j9AAO4/cADuP4AA7j+QAO4/oADuP7AA7j/QAO5AAADuQBAA7kAgAO5AQADuQFAA7kiAAO5KwADuTQAA7k8wAO5RoADuU6AA7lYQAO5YgADuWoAA7lzAAO5fAADuXyAA7l9QAO5fcADuX5AA7l+wAO5f4ADuYBAA7mAwAO5gUADuYIAA7mCgAO5gwADuYPAA7mEgAO5hMADuYcAA7mNQAO5joADuY8AA7mQQAO5kQADuZGAA7mjwAO5rMADubaAA7m/gAO5wEADucDAA7nBQAO5wcADucJAA7nCwAO5wwADucPAA7nKAAO500ADudPAA7nUQAO51MADudVAA7nVwAO51kADudbAA7nXQAO518ADueEAA7nhwAO54oADueNAA7nkAAO55MADueWAA7nmQAO55wADuefAA7noQAO6BwADugeAA7oIQAO6CMADugmAA7oJwAO6CgADugpAA7oKgAO6CwADuguAA7oLwAO6DAADugyAA7oMwAO6EQADuhFAA7oRwAO6MIADujEAA7oxgAO6MgADujLAA7ozAAO6M0ADujOAA7ozwAO6NEADujTAA7o1AAO6NUADujXAA7o2AAO6VMADulVAA7pWAAO6VoADuldAA7pXgAO6V8ADulgAA7pYQAO6WMADullAA7pZgAO6WcADulpAA7pagAO6XsADumAAA7pgwAO6YUADumWAA7pmwAO6Z4ADumgAA7ppwAO6iIADuokAA7qJgAO6igADuorAA7qLAAO6i0ADuouAA7qLwAO6jEADuozAA7qNAAO6jUADuo3AA7qOAAO6rMADuq1AA7quAAO6roADuq9AA7qvgAO6r8ADurAAA7qwQAO6sMADurFAA7qxgAO6scADurJAA7qygAO6tsADurcAA7q3gAO61kADutbAA7rXQAO618ADutiAA7rYwAO62QADutlAA7rZgAO62gADutqAA7rawAO62wADutuAA7rbwAO6+oADuvsAA7r7wAO6/EADuv0AA7r9QAO6/YADuv3AA7r+AAO6/oADuv8AA7r/QAO6/4ADuwAAA7sAQAO7BoADuwbAA7sHAAO7B4ADuyZAA7smwAO7J0ADuyfAA7sogAO7KMADuykAA7spQAO7KYADuyoAA7sqgAO7KsADuysAA7srgAO7K8ADu0qAA7tLAAO7S4ADu0wAA7tMwAO7TQADu01AA7tNgAO7TcADu05AA7tOwAO7TwADu09AA7tPwAO7UAADu1ZAA7tegAO7X0ADu2AAA7tgwAO7YYADu2JAA7tjAAO7Y8ADu2SAA7tswAO7bYADu25AA7tvAAO7b8ADu3CAA7txQAO7cgADu3LAA7tzQAO7fIADu4LAA7uJAAO7i4ADu5MAA7udQAO7n0ADu8QAA7vMwAO71MADu9zAA7vdQAO73cADu95AA7vewAO734ADu9/AA7vgAAO74MADu+EAA7vhgAO74cADu+JAA7vjAAO740ADu+OAA7vkQAO75IADu+bAA7vtAAO770ADu+/AA7vwQAO78oADu/NAA7v0AAO79IADvAbAA7wPwAO8GYADvCKAA7wjQAO8I8ADvCRAA7wkwAO8JUADvCXAA7wmAAO8JsADvC0AA7w1QAO8NcADvDZAA7w2wAO8N0ADvDfAA7w4QAO8OMADvDlAA7xBgAO8QkADvEMAA7xDwAO8RIADvEVAA7xGAAO8RsADvEeAA7xIAAO8ZsADvGdAA7xnwAO8aEADvGkAA7xpQAO8aYADvGnAA7xqAAO8aoADvGsAA7xrQAO8a4ADvGwAA7xsQAO8iwADvIuAA7yMAAO8jIADvI1AA7yNgAO8jcADvI4AA7yOQAO8jsADvI9AA7yPgAO8j8ADvJBAA7yQgAO8r0ADvK/AA7ywgAO8sQADvLHAA7yyAAO8skADvLKAA7yywAO8s0ADvLPAA7y0AAO8tEADvLTAA7y1AAO8u0ADvLuAA7y7wAO8vEADvNsAA7zbgAO83AADvNyAA7zdQAO83YADvN3AA7zeAAO83kADvN7AA7zfQAO834ADvN/AA7zgQAO84IADvP9AA7z/wAO9AEADvQDAA70BgAO9AcADvQIAA70CQAO9AoADvQMAA70DgAO9A8ADvQQAA70EgAO9BMADvSOAA70kAAO9JIADvSUAA70lwAO9JgADvSZAA70mgAO9JsADvSdAA70nwAO9KAADvShAA70owAO9KQADvUfAA71IQAO9SMADvUlAA71KAAO9SkADvUqAA71KwAO9SwADvUuAA71MAAO9TEADvUyAA71NAAO9TUADvWwAA71sgAO9bQADvW2AA71uQAO9boADvW7AA71vAAO9b0ADvW/AA71wQAO9cIADvXDAA71xQAO9cYADvYPAA72MwAO9loADvZ+AA72gQAO9oMADvaFAA72hwAO9okADvaLAA72jAAO9o8ADvaoAA72xQAO9scADvbJAA72ywAO9s0ADvbPAA720QAO9tMADvbwAA728wAO9vYADvb5AA72/AAO9v8ADvcCAA73BQAO9wcADveCAA73hAAO94YADveIAA73iwAO94wADveNAA73jgAO948ADveRAA73kwAO95QADveVAA73lwAO95gADvgTAA74FQAO+BcADvgZAA74HAAO+B0ADvgeAA74HwAO+CAADvgiAA74JAAO+CUADvgmAA74KAAO+CkADvikAA74pgAO+KgADviqAA74rQAO+K4ADvivAA74sAAO+LEADvizAA74tQAO+LYADvi3AA74uQAO+LoADvk1AA75NwAO+ToADvk8AA75PwAO+UAADvlBAA75QgAO+UMADvlFAA75RwAO+UgADvlJAA75SwAO+UwADvnHAA75yQAO+csADvnNAA750AAO+dEADvnSAA750wAO+dQADvnWAA752AAO+dkADvnaAA753AAO+d0ADvpYAA76WgAO+lwADvpeAA76YQAO+mIADvpjAA76ZAAO+mUADvpnAA76aQAO+moADvprAA76bQAO+m4ADvrpAA766wAO+u0ADvrvAA768gAO+vMADvr0AA769QAO+vYADvr4AA76+gAO+vsADvr8AA76/gAO+v8ADvuSAA77tQAO+9UADvv1AA779wAO+/kADvv7AA77/QAO/AAADvwBAA78AgAO/AUADvwGAA78CAAO/AkADvwLAA78DgAO/A8ADvwQAA78EwAO/BQADvwZAA78MgAO/DsADvw9AA78PwAO/EgADvxLAA78TgAO/FAADvyZAA78vQAO/OQADv0IAA79CwAO/Q0ADv0PAA79EQAO/RMADv0VAA79FgAO/RkADv0yAA79UwAO/VUADv1XAA79WQAO/VsADv1dAA79XwAO/WEADv1jAA79hAAO/YcADv2KAA79jQAO/ZAADv2TAA79lgAO/ZkADv2cAA79ngAO/hkADv4bAA7+HQAO/h8ADv4iAA7+IwAO/iQADv4lAA7+JgAO/igADv4qAA7+KwAO/iwADv4uAA7+LwAO/qoADv6sAA7+rgAO/rAADv6zAA7+tAAO/rUADv62AA7+twAO/rkADv67AA7+vAAO/r0ADv6/AA7+wAAO/zsADv89AA7/QAAO/0IADv9FAA7/RgAO/0cADv9IAA7/SQAO/0sADv9NAA7/TgAO/08ADv9RAA7/UgAO/2sADv9sAA7/bQAO/28ADv/qAA7/7AAO/+4ADv/wAA7/8wAO//QADv/1AA7/9gAO//cADv/5AA7/+wAO//wADv/9AA7//wAPAAAADwB7AA8AfQAPAH8ADwCBAA8AhAAPAIUADwCGAA8AhwAPAIgADwCKAA8AjAAPAI0ADwCOAA8AkAAPAJEADwEMAA8BDgAPARAADwESAA8BFQAPARYADwEXAA8BGAAPARkADwEbAA8BHQAPAR4ADwEfAA8BIQAPASIADwGdAA8BnwAPAaEADwGjAA8BpgAPAacADwGoAA8BqQAPAaoADwGsAA8BrgAPAa8ADwGwAA8BsgAPAbMADwIuAA8CMAAPAjIADwI0AA8CNwAPAjgADwI5AA8COgAPAjsADwI9AA8CPwAPAkAADwJBAA8CQwAPAkQADwKNAA8CsQAPAtgADwL8AA8C/wAPAwEADwMDAA8DBQAPAwcADwMJAA8DCgAPAw0ADwMmAA8DQwAPA0UADwNHAA8DSQAPA0sADwNNAA8DTwAPA1EADwNuAA8DcQAPA3QADwN3AA8DegAPA30ADwOAAA8DgwAPA4UADwQAAA8EAgAPBAQADwQGAA8ECQAPBAoADwQLAA8EDAAPBA0ADwQPAA8EEQAPBBIADwQTAA8EFQAPBBYADwSRAA8EkwAPBJUADwSXAA8EmgAPBJsADwScAA8EnQAPBJ4ADwSgAA8EogAPBKMADwSkAA8EpgAPBKcADwUiAA8FJAAPBSYADwUoAA8FKwAPBSwADwUtAA8FLgAPBS8ADwUxAA8FMwAPBTQADwU1AA8FNwAPBTgADwWzAA8FtQAPBbgADwW6AA8FvQAPBb4ADwW/AA8FwAAPBcEADwXDAA8FxQAPBcYADwXHAA8FyQAPBcoADwZFAA8GRwAPBkkADwZLAA8GTgAPBk8ADwZQAA8GUQAPBlIADwZUAA8GVgAPBlcADwZYAA8GWgAPBlsADwbWAA8G2AAPBtoADwbcAA8G3wAPBuAADwbhAA8G4gAPBuMADwblAA8G5wAPBugADwbpAA8G6wAPBuwADwdnAA8HaQAPB2sADwdtAA8HcAAPB3EADwdyAA8HcwAPB3QADwd2AA8HeAAPB3kADwd6AA8HfAAPB30ADwgQAA8IMwAPCFMADwhzAA8IdQAPCHcADwh5AA8IewAPCH4ADwh/AA8IgAAPCIMADwiEAA8IhgAPCIcADwiJAA8IjAAPCI0ADwiOAA8IkQAPCJIADwiXAA8IsAAPCLkADwi7AA8IvQAPCMYADwjJAA8IzAAPCM4ADwkXAA8JOwAPCWIADwmGAA8JiQAPCYsADwmNAA8JjwAPCZEADwmTAA8JlAAPCZcADwmwAA8J0QAPCdMADwnVAA8J1wAPCdkADwnbAA8J3QAPCd8ADwnhAA8KAgAPCgUADwoIAA8KCwAPCg4ADwoRAA8KFAAPChcADwoaAA8KHAAPCpcADwqZAA8KmwAPCp0ADwqgAA8KoQAPCqIADwqjAA8KpAAPCqYADwqoAA8KqQAPCqoADwqsAA8KrQAPCygADwsqAA8LLAAPCy4ADwsxAA8LMgAPCzMADws0AA8LNQAPCzcADws5AA8LOgAPCzsADws9AA8LPgAPC7kADwu7AA8LvgAPC8AADwvDAA8LxAAPC8UADwvGAA8LxwAPC8kADwvLAA8LzAAPC80ADwvPAA8L0AAPC+kADwvqAA8L6wAPC+0ADwxoAA8MagAPDGwADwxuAA8McQAPDHIADwxzAA8MdAAPDHUADwx3AA8MeQAPDHoADwx7AA8MfQAPDH4ADwz5AA8M+wAPDP0ADwz/AA8NAgAPDQMADw0EAA8NBQAPDQYADw0IAA8NCgAPDQsADw0MAA8NDgAPDQ8ADw2KAA8NjAAPDY4ADw2QAA8NkwAPDZQADw2VAA8NlgAPDZcADw2ZAA8NmwAPDZwADw2dAA8NnwAPDaAADw4bAA8OHQAPDh8ADw4hAA8OJAAPDiUADw4mAA8OJwAPDigADw4qAA8OLAAPDi0ADw4uAA8OMAAPDjEADw6sAA8OrgAPDrAADw6yAA8OtQAPDrYADw63AA8OuAAPDrkADw67AA8OvQAPDr4ADw6/AA8OwQAPDsIADw8LAA8PLwAPD1YADw96AA8PfQAPD38ADw+BAA8PgwAPD4UADw+HAA8PiAAPD4sADw+kAA8PwQAPD8MADw/FAA8PxwAPD8kADw/LAA8PzQAPD88ADw/sAA8P7wAPD/IADw/1AA8P+AAPD/sADw/+AA8QAQAPEAMADxB+AA8QgAAPEIIADxCEAA8QhwAPEIgADxCJAA8QigAPEIsADxCNAA8QjwAPEJAADxCRAA8QkwAPEJQADxEPAA8REQAPERMADxEVAA8RGAAPERkADxEaAA8RGwAPERwADxEeAA8RIAAPESEADxEiAA8RJAAPESUADxGgAA8RogAPEaQADxGmAA8RqQAPEaoADxGrAA8RrAAPEa0ADxGvAA8RsQAPEbIADxGzAA8RtQAPEbYADxIxAA8SMwAPEjYADxI4AA8SOwAPEjwADxI9AA8SPgAPEj8ADxJBAA8SQwAPEkQADxJFAA8SRwAPEkgADxLDAA8SxQAPEscADxLJAA8SzAAPEs0ADxLOAA8SzwAPEtAADxLSAA8S1AAPEtUADxLWAA8S2AAPEtkADxNUAA8TVgAPE1gADxNaAA8TXQAPE14ADxNfAA8TYAAPE2EADxNjAA8TZQAPE2YADxNnAA8TaQAPE2oADxPlAA8T5wAPE+kADxPrAA8T7gAPE+8ADxPwAA8T8QAPE/IADxP0AA8T9gAPE/cADxP4AA8T+gAPE/sADxSOAA8UsQAPFNEADxTxAA8U8wAPFPUADxT3AA8U+QAPFPwADxT9AA8U/gAPFQEADxUCAA8VBAAPFQUADxUHAA8VCgAPFQsADxUMAA8VDwAPFRAADxUVAA8VLgAPFTcADxU5AA8VOwAPFUQADxVHAA8VSgAPFUwADxWVAA8VuQAPFeAADxYEAA8WBwAPFgkADxYLAA8WDQAPFg8ADxYRAA8WEgAPFhUADxYuAA8WTwAPFlEADxZTAA8WVQAPFlcADxZZAA8WWwAPFl0ADxZfAA8WgAAPFoMADxaGAA8WiQAPFowADxaPAA8WkgAPFpUADxaYAA8WmgAPFxUADxcXAA8XGQAPFxsADxceAA8XHwAPFyAADxchAA8XIgAPFyQADxcmAA8XJwAPFygADxcqAA8XKwAPF6YADxeoAA8XqgAPF6wADxevAA8XsAAPF7EADxeyAA8XswAPF7UADxe3AA8XuAAPF7kADxe7AA8XvAAPGDcADxg5AA8YPAAPGD4ADxhBAA8YQgAPGEMADxhEAA8YRQAPGEcADxhJAA8YSgAPGEsADxhNAA8YTgAPGGcADxhoAA8YaQAPGGsADxjmAA8Y6AAPGOoADxjsAA8Y7wAPGPAADxjxAA8Y8gAPGPMADxj1AA8Y9wAPGPgADxj5AA8Y+wAPGPwADxl3AA8ZeQAPGXsADxl9AA8ZgAAPGYEADxmCAA8ZgwAPGYQADxmGAA8ZiAAPGYkADxmKAA8ZjAAPGY0ADxoIAA8aCgAPGgwADxoOAA8aEQAPGhIADxoTAA8aFAAPGhUADxoXAA8aGQAPGhoADxobAA8aHQAPGh4ADxqZAA8amwAPGp0ADxqfAA8aogAPGqMADxqkAA8apQAPGqYADxqoAA8aqgAPGqsADxqsAA8argAPGq8ADxsqAA8bLAAPGy4ADxswAA8bMwAPGzQADxs1AA8bNgAPGzcADxs5AA8bOwAPGzwADxs9AA8bPwAPG0AADxuJAA8brQAPG9QADxv4AA8b+wAPG/0ADxv/AA8cAQAPHAMADxwFAA8cBgAPHAkADxwiAA8cPwAPHEEADxxDAA8cRQAPHEcADxxJAA8cSwAPHE0ADxxqAA8cbQAPHHAADxxzAA8cdgAPHHkADxx8AA8cfwAPHIEADxz8AA8c/gAPHQAADx0CAA8dBQAPHQYADx0HAA8dCAAPHQkADx0LAA8dDQAPHQ4ADx0PAA8dEQAPHRIADx2NAA8djwAPHZEADx2TAA8dlgAPHZcADx2YAA8dmQAPHZoADx2cAA8dngAPHZ8ADx2gAA8dogAPHaMADx4eAA8eIAAPHiIADx4kAA8eJwAPHigADx4pAA8eKgAPHisADx4tAA8eLwAPHjAADx4xAA8eMwAPHjQADx6vAA8esQAPHrQADx62AA8euQAPHroADx67AA8evAAPHr0ADx6/AA8ewQAPHsIADx7DAA8exQAPHsYADx9BAA8fQwAPH0UADx9HAA8fSgAPH0sADx9MAA8fTQAPH04ADx9QAA8fUgAPH1MADx9UAA8fVgAPH1cADx/SAA8f1AAPH9YADx/YAA8f2wAPH9wADx/dAA8f3gAPH98ADx/hAA8f4wAPH+QADx/lAA8f5wAPH+gADyBjAA8gZQAPIGcADyBpAA8gbAAPIG0ADyBuAA8gbwAPIHAADyByAA8gdAAPIHUADyB2AA8geAAPIHkADyEMAA8hLwAPIU8ADyFvAA8hcQAPIXMADyF1AA8hdwAPIXoADyF7AA8hfAAPIX8ADyGAAA8hggAPIYMADyGFAA8hiAAPIYkADyGKAA8hjQAPIY4ADyGTAA8hrAAPIbUADyG3AA8huQAPIcIADyHFAA8hyAAPIcoADyITAA8iNwAPIl4ADyKCAA8ihQAPIocADyKJAA8iiwAPIo0ADyKPAA8ikAAPIpMADyKsAA8izQAPIs8ADyLRAA8i0wAPItUADyLXAA8i2QAPItsADyLdAA8i/gAPIwEADyMEAA8jBwAPIwoADyMNAA8jEAAPIxMADyMWAA8jGAAPI5MADyOVAA8jlwAPI5kADyOcAA8jnQAPI54ADyOfAA8joAAPI6IADyOkAA8jpQAPI6YADyOoAA8jqQAPJCQADyQmAA8kKAAPJCoADyQtAA8kLgAPJC8ADyQwAA8kMQAPJDMADyQ1AA8kNgAPJDcADyQ5AA8kOgAPJLUADyS3AA8kugAPJLwADyS/AA8kwAAPJMEADyTCAA8kwwAPJMUADyTHAA8kyAAPJMkADyTLAA8kzAAPJOUADyTmAA8k5wAPJOkADyVkAA8lZgAPJWgADyVqAA8lbQAPJW4ADyVvAA8lcAAPJXEADyVzAA8ldQAPJXYADyV3AA8leQAPJXoADyX1AA8l9wAPJfkADyX7AA8l/gAPJf8ADyYAAA8mAQAPJgIADyYEAA8mBgAPJgcADyYIAA8mCgAPJgsADyaGAA8miAAPJooADyaMAA8mjwAPJpAADyaRAA8mkgAPJpMADyaVAA8mlwAPJpgADyaZAA8mmwAPJpwADycXAA8nGQAPJxsADycdAA8nIAAPJyEADyciAA8nIwAPJyQADycmAA8nKAAPJykADycqAA8nLAAPJy0ADyeoAA8nqgAPJ6wADyeuAA8nsQAPJ7IADyezAA8ntAAPJ7UADye3AA8nuQAPJ7oADye7AA8nvQAPJ74ADygHAA8oKwAPKFIADyh2AA8oeQAPKHsADyh9AA8ofwAPKIEADyiDAA8ohAAPKIcADyigAA8ovQAPKL8ADyjBAA8owwAPKMUADyjHAA8oyQAPKMsADyjoAA8o6wAPKO4ADyjxAA8o9AAPKPcADyj6AA8o/QAPKP8ADyl6AA8pfAAPKX4ADymAAA8pgwAPKYQADymFAA8phgAPKYcADymJAA8piwAPKYwADymNAA8pjwAPKZAADyoLAA8qDQAPKg8ADyoRAA8qFAAPKhUADyoWAA8qFwAPKhgADyoaAA8qHAAPKh0ADyoeAA8qIAAPKiEADyqcAA8qngAPKqAADyqiAA8qpQAPKqYADyqnAA8qqAAPKqkADyqrAA8qrQAPKq4ADyqvAA8qsQAPKrIADystAA8rLwAPKzIADys0AA8rNwAPKzgADys5AA8rOgAPKzsADys9AA8rPwAPK0AADytBAA8rQwAPK0QADyu/AA8rwQAPK8MADyvFAA8ryAAPK8kADyvKAA8rywAPK8wADyvOAA8r0AAPK9EADyvSAA8r1AAPK9UADyxQAA8sUgAPLFQADyxWAA8sWQAPLFoADyxbAA8sXAAPLF0ADyxfAA8sYQAPLGIADyxjAA8sZQAPLGYADyzhAA8s4wAPLOUADyznAA8s6gAPLOsADyzsAA8s7QAPLO4ADyzwAA8s8gAPLPMADyz0AA8s9gAPLPcADy2KAA8trQAPLc0ADy3tAA8t7wAPLfEADy3zAA8t9QAPLfgADy35AA8t+gAPLf0ADy3+AA8uAAAPLgEADy4DAA8uBgAPLgcADy4IAA8uCwAPLgwADy4RAA8uKgAPLjMADy41AA8uNwAPLkAADy5DAA8uRgAPLkgADy6RAA8utQAPLtwADy8AAA8vAwAPLwUADy8HAA8vCQAPLwsADy8NAA8vDgAPLxEADy8qAA8vSwAPL00ADy9PAA8vUQAPL1MADy9VAA8vVwAPL1kADy9bAA8vfAAPL38ADy+CAA8vhQAPL4gADy+LAA8vjgAPL5EADy+UAA8vlgAPMBEADzATAA8wFQAPMBcADzAaAA8wGwAPMBwADzAdAA8wHgAPMCAADzAiAA8wIwAPMCQADzAmAA8wJwAPMKIADzCkAA8wpgAPMKgADzCrAA8wrAAPMK0ADzCuAA8wrwAPMLEADzCzAA8wtAAPMLUADzC3AA8wuAAPMTMADzE1AA8xOAAPMToADzE9AA8xPgAPMT8ADzFAAA8xQQAPMUMADzFFAA8xRgAPMUcADzFJAA8xSgAPMWMADzFkAA8xZQAPMWcADzHiAA8x5AAPMeYADzHoAA8x6wAPMewADzHtAA8x7gAPMe8ADzHxAA8x8wAPMfQADzH1AA8x9wAPMfgADzJzAA8ydQAPMncADzJ5AA8yfAAPMn0ADzJ+AA8yfwAPMoAADzKCAA8yhAAPMoUADzKGAA8yiAAPMokADzMEAA8zBgAPMwgADzMKAA8zDQAPMw4ADzMPAA8zEAAPMxEADzMTAA8zFQAPMxYADzMXAA8zGQAPMxoADzOVAA8zlwAPM5kADzObAA8zngAPM58ADzOgAA8zoQAPM6IADzOkAA8zpgAPM6cADzOoAA8zqgAPM6sADzQmAA80KAAPNCoADzQsAA80LwAPNDAADzQxAA80MgAPNDMADzQ1AA80NwAPNDgADzQ5AA80OwAPNDwADzSFAA80qQAPNNAADzT0AA809wAPNPkADzT7AA80/QAPNP8ADzUBAA81AgAPNQUADzUeAA81OwAPNT0ADzU/AA81QQAPNUMADzVFAA81RwAPNUkADzVmAA81aQAPNWwADzVvAA81cgAPNXUADzV4AA81ewAPNX0ADzX4AA81+gAPNfwADzX+AA82AQAPNgIADzYDAA82BAAPNgUADzYHAA82CQAPNgoADzYLAA82DQAPNg4ADzaJAA82iwAPNo0ADzaPAA82kgAPNpMADzaUAA82lQAPNpYADzaYAA82mgAPNpsADzacAA82ngAPNp8ADzcaAA83HAAPNx4ADzcgAA83IwAPNyQADzclAA83JgAPNycADzcpAA83KwAPNywADzctAA83LwAPNzAADzerAA83rQAPN68ADzexAA83tAAPN7UADze2AA83twAPN7gADze6AA83vAAPN70ADze+AA83wAAPN8EADzg8AA84PgAPOEAADzhCAA84RQAPOEYADzhHAA84SAAPOEkADzhLAA84TQAPOE4ADzhPAA84UQAPOFIADzjNAA84zwAPONEADzjTAA841gAPONcADzjYAA842QAPONoADzjcAA843gAPON8ADzjgAA844gAPOOMADzleAA85YAAPOWIADzlkAA85ZwAPOWgADzlpAA85agAPOWsADzltAA85bwAPOXAADzlxAA85cwAPOXQADzoHAA86KgAPOkoADzpqAA86bAAPOm4ADzpwAA86cgAPOnUADzp2AA86dwAPOnoADzp7AA86fQAPOn4ADzqAAA86gwAPOoQADzqFAA86iAAPOokADzqOAA86pwAPOrAADzqyAA86tAAPOr0ADzrAAA86wwAPOsUADzsOAA87MgAPO1kADzt9AA87gAAPO4IADzuEAA87hgAPO4gADzuKAA87iwAPO44ADzunAA87yAAPO8oADzvMAA87zgAPO9AADzvSAA871AAPO9YADzvYAA87+QAPO/wADzv/AA88AgAPPAUADzwIAA88CwAPPA4ADzwRAA88EwAPPI4ADzyQAA88kgAPPJQADzyXAA88mAAPPJkADzyaAA88mwAPPJ0ADzyfAA88oAAPPKEADzyjAA88pAAPPR8ADz0hAA89IwAPPSUADz0oAA89KQAPPSoADz0rAA89LAAPPS4ADz0wAA89MQAPPTIADz00AA89NQAPPbAADz2yAA89tQAPPbcADz26AA89uwAPPbwADz29AA89vgAPPcAADz3CAA89wwAPPcQADz3GAA89xwAPPeAADz3hAA894gAPPeQADz5fAA8+YQAPPmMADz5lAA8+aAAPPmkADz5qAA8+awAPPmwADz5uAA8+cAAPPnEADz5yAA8+dAAPPnUADz7wAA8+8gAPPvQ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AD1A4AA9QOgAPUDsAD1C2AA9QuAAPULsAD1C9AA9QwAAPUMEAD1DCAA9QwwAPUMQAD1DGAA9QyQAPUMoAD1DLAA9QzQAPUM4AD1FJAA9RSwAPUU0AD1FPAA9RUgAPUVMAD1FUAA9RVQAPUVYAD1FYAA9RWwAPUVwAD1FdAA9RXwAPUWAAD1HbAA9R3QAPUd8AD1HhAA9R5AAPUeUAD1HmAA9R5wAPUegAD1HqAA9R7QAPUe4AD1HvAA9R8QAPUfIAD1JtAA9SbwAPUnIAD1J0AA9SdwAPUngAD1J5AA9SegAPUnsAD1J9AA9SgAAPUoEAD1KCAA9ShAAPUoUAD1KWAA9SlwAPUpkAD1MUAA9TFgAPUxgAD1MaAA9THQAPUx4AD1MfAA9TIAAPUyEAD1MjAA9TJgAPUycAD1MoAA9TKgAPUysAD1OmAA9TqAAPU6oAD1OsAA9TrwAPU7AAD1OxAA9TsgAPU7MAD1O1AA9TuAAPU7kAD1O6AA9TvAAPU70AD1Q4AA9UOgAPVD0AD1Q/AA9UQgAPVEMAD1REAA9URQAPVEYAD1RIAA9USwAPVEwAD1RNAA9UTwAPVFAAD1TjAA9VBgAPVSYAD1VGAA9VSAAPVUoAD1VMAA9VTgAPVVEAD1VSAA9VUwAPVVYAD1VXAA9VWQAPVVoAD1VcAA9VXwAPVWAAD1VhAA9VZAAPVWUAD1VqAA9VgwAPVYwAD1WOAA9VkAAPVZkAD1WcAA9VnwAPVaEAD1XqAA9WDgAPVjUAD1ZZAA9WXAAPVl4AD1ZgAA9WYgAPVmQAD1ZmAA9WZwAPVmoAD1aDAA9WpAAPVqYAD1aoAA9WqgAPVqwAD1auAA9WsAAPVrIAD1a0AA9W1QAPVtgAD1bbAA9W3gAPVuEAD1bkAA9W5wAPVuoAD1btAA9W7wAPV2oAD1dsAA9XbgAPV3AAD1dzAA9XdAAPV3UAD1d2AA9XdwAPV3kAD1d7AA9XfAAPV30AD1d/AA9XgAAPV/sAD1f9AA9X/wAPWAEAD1gEAA9YBQAPWAYAD1gHAA9YCAAPWAoAD1gMAA9YDQAPWA4AD1gQAA9YEQAPWIwAD1iOAA9YkQAPWJMAD1iWAA9YlwAPWJgAD1iZAA9YmgAPWJwAD1ieAA9YnwAPWKAAD1iiAA9YowAPWLwAD1i9AA9YvgAPWMAAD1k7AA9ZPQAPWT8AD1lBAA9ZRAAPWUUAD1lGAA9ZRwAPWUgAD1lKAA9ZTAAPWU0AD1lOAA9ZUAAPWVEAD1nMAA9ZzgAPWdAAD1nSAA9Z1QAPWdYAD1nXAA9Z2AAPWdkAD1nbAA9Z3QAPWd4AD1nfAA9Z4QAPWeIAD1pdAA9aXwAPWmEAD1pjAA9aZgAPWmcAD1poAA9aaQAPWmoAD1psAA9abgAPWm8AD1pwAA9acgAPWnMAD1ruAA9a8AAPWvIAD1r0AA9a9wAPWvgAD1r5AA9a+gAPWvsAD1r9AA9a/wAPWwAAD1sBAA9bAwAPWwQAD1t/AA9bgQAPW4MAD1uFAA9biAAPW4kAD1uKAA9biwAPW4wAD1uOAA9bkAAPW5EAD1uSAA9blAAPW5UAD1veAA9cAgAPXCkAD1xNAA9cUAAPXFIAD1xUAA9cVgAPXFgAD1xaAA9cWwAPXF4AD1x3AA9clAAPXJYAD1yYAA9cmgAPXJwAD1yeAA9coAAPXKIAD1y/AA9cwgAPXMUAD1zIAA9cywAPXM4AD1zRAA9c1AAPXNYAD11RAA9dUwAPXVUAD11XAA9dWgAPXVsAD11cAA9dXQAPXV4AD11gAA9dYgAPXWMAD11kAA9dZgAPXWcAD13iAA9d5AAPXeYAD13oAA9d6wAPXewAD13tAA9d7gAPXe8AD13xAA9d8wAPXfQAD131AA9d9wAPXfgAD15zAA9edQAPXncAD155AA9efAAPXn0AD15+AA9efwAPXoAAD16CAA9ehAAPXoUAD16GAA9eiAAPXokAD18EAA9fBgAPXwkAD18LAA9fDgAPXw8AD18QAA9fEQAPXxIAD18UAA9fFgAPXxcAD18YAA9fGgAPXxsAD1+WAA9fmAAPX5oAD1+cAA9fnwAPX6AAD1+hAA9fogAPX6MAD1+lAA9fpwAPX6gAD1+pAA9fqwAPX6wAD2AnAA9gKQAPYCsAD2AtAA9gMAAPYDEAD2AyAA9gMwAPYDQAD2A2AA9gOAAPYDkAD2A6AA9gPAAPYD0AD2C4AA9gugAPYLwAD2C+AA9gwQAPYMIAD2DDAA9gxAAPYMUAD2DHAA9gyQAPYMoAD2DLAA9gzQAPYM4AD2FhAA9hhAAPYaQAD2HEAA9hxgAPYcgAD2HKAA9hzAAPYc8AD2HQAA9h0QAPYdQAD2HVAA9h1wAPYdgAD2HaAA9h3QAPYd4AD2HfAA9h4gAPYeMAD2HoAA9iAQAPYgoAD2IMAA9iDgAPYhcAD2IaAA9iHQAPYh8AD2JoAA9ijAAPYrMAD2LXAA9i2gAPYtwAD2LeAA9i4AAPYuIAD2LkAA9i5QAPYugAD2MBAA9jIgAPYyQAD2MmAA9jKAAPYyoAD2MsAA9jLgAPYzAAD2MyAA9jUwAPY1YAD2NZAA9jXAAPY18AD2NiAA9jZQAPY2gAD2NrAA9jbQAPY+gAD2PqAA9j7AAPY+4AD2PxAA9j8gAPY/MAD2P0AA9j9QAPY/cAD2P5AA9j+gAPY/sAD2P9AA9j/gAPZHkAD2R7AA9kfQAPZH8AD2SCAA9kgwAPZIQAD2SFAA9khgAPZIgAD2SKAA9kiwAPZIwAD2SOAA9kjwAPZQoAD2UMAA9lDwAPZREAD2UUAA9lFQAPZRYAD2UXAA9lGAAPZRoAD2UcAA9lHQAPZR4AD2UgAA9lIQAPZToAD2U7AA9lPAAPZT4AD2W5AA9luwAPZb0AD2W/AA9lwgAPZcMAD2XEAA9lxQAPZcYAD2XIAA9lygAPZcsAD2XMAA9lzgAPZc8AD2ZKAA9mTAAPZk4AD2ZQAA9mUwAPZlQAD2ZVAA9mVgAPZlcAD2ZZAA9mWwAPZlwAD2ZdAA9mXwAPZmAAD2bbAA9m3QAPZt8AD2bhAA9m5AAPZuUAD2bmAA9m5wAPZugAD2bqAA9m7AAPZu0AD2buAA9m8AAPZvEAD2dsAA9nbgAPZ3AAD2dyAA9ndQAPZ3YAD2d3AA9neAAPZ3kAD2d7AA9nfQAPZ34AD2d/AA9ngQAPZ4IAD2f9AA9n/wAPaAEAD2gDAA9oBgAPaAcAD2gIAA9oCQAPaAoAD2gMAA9oDgAPaA8AD2gQAA9oEgAPaBMAD2hcAA9ogAAPaKcAD2jLAA9ozgAPaNAAD2jSAA9o1AAPaNYAD2jYAA9o2QAPaNwAD2j1AA9pEgAPaRQAD2kWAA9pGAAPaRoAD2kcAA9pHgAPaSAAD2k9AA9pQAAPaUMAD2lGAA9pSQAPaUwAD2lPAA9pUgAPaVQAD2nPAA9p0QAPadMAD2nVAA9p2AAPadkAD2naAA9p2wAPadwAD2neAA9p4AAPaeEAD2niAA9p5AAPaeUAD2pgAA9qYgAPamQAD2pmAA9qaQAPamoAD2prAA9qbAAPam0AD2pvAA9qcQAPanIAD2pzAA9qdQAPanYAD2rxAA9q8wAPavUAD2r3AA9q+gAPavsAD2r8AA9q/QAPav4AD2sAAA9rAgAPawMAD2sEAA9rBgAPawcAD2uCAA9rhAAPa4cAD2uJAA9rjAAPa40AD2uOAA9rjwAPa5AAD2uSAA9rlAAPa5UAD2uWAA9rmAAPa5kAD2wUAA9sFgAPbBgAD2waAA9sHQAPbB4AD2wfAA9sIAAPbCEAD2wjAA9sJQAPbCYAD2wnAA9sKQAPbCoAD2ylAA9spwAPbKkAD2yrAA9srgAPbK8AD2ywAA9ssQAPbLIAD2y0AA9stgAPbLcAD2y4AA9sugAPbLsAD202AA9tOAAPbToAD208AA9tPwAPbUAAD21BAA9tQgAPbUMAD21FAA9tRwAPbUgAD21JAA9tSwAPbUwAD23fAA9uAgAPbiIAD25CAA9uRAAPbkYAD25IAA9uSgAPbk0AD25OAA9uTwAPblIAD25TAA9uVQAPblYAD25YAA9uWwAPblwAD25dAA9uYAAPbmEAD25mAA9ufwAPbogAD26KAA9ujAAPbpUAD26YAA9umwAPbp0AD27mAA9vCgAPbzEAD29VAA9vWAAPb1oAD29cAA9vXgAPb2AAD29iAA9vYwAPb2YAD29/AA9voAAPb6IAD2+kAA9vpgAPb6gAD2+qAA9vrAAPb64AD2+wAA9v0QAPb9QAD2/XAA9v2gAPb90AD2/gAA9v4wAPb+YAD2/pAA9v6wAPcGYAD3BoAA9wagAPcGwAD3BvAA9wcAAPcHEAD3ByAA9wcwAPcHUAD3B3AA9weAAPcHkAD3B7AA9wfAAPcPcAD3D5AA9w+wAPcP0AD3EAAA9xAQAPcQIAD3EDAA9xBAAPcQYAD3EIAA9xCQAPcQoAD3EMAA9xDQAPcYgAD3GKAA9xjQAPcY8AD3GSAA9xkwAPcZQAD3GVAA9xlgAPcZgAD3GaAA9xmwAPcZwAD3GeAA9xnwAPcbgAD3G5AA9xugAPcbwAD3I3AA9yOQAPcjsAD3I9AA9yQAAPckEAD3JCAA9yQwAPckQAD3JGAA9ySAAPckkAD3JKAA9yTAAPck0AD3LIAA9yygAPcswAD3LOAA9y0QAPctIAD3LTAA9y1AAPctUAD3LXAA9y2QAPctoAD3LbAA9y3QAPct4AD3NZAA9zWwAPc10AD3NfAA9zYgAPc2MAD3NkAA9zZQAPc2YAD3NoAA9zagAPc2sAD3NsAA9zbgAPc28AD3PqAA9z7AAPc+4AD3PwAA9z8wAPc/QAD3P1AA9z9gAPc/cAD3P5AA9z+wAPc/wAD3P9AA9z/wAPdAAAD3R7AA90fQAPdH8AD3SBAA90hAAPdIUAD3SGAA90hwAPdIgAD3SKAA90jAAPdI0AD3SOAA90kAAPdJEAD3TaAA90/gAPdSUAD3VJAA91TAAPdU4AD3VQAA91UgAPdVQAD3VWAA91VwAPdVoAD3VzAA91kAAPdZIAD3WUAA91lgAPdZgAD3WaAA91nAAPdZ4AD3W7AA91vgAPdcEAD3XEAA91xwAPdcoAD3XNAA910AAPddIAD3ZNAA92TwAPdlEAD3ZTAA92VgAPdlcAD3ZYAA92WQAPdloAD3ZcAA92XgAPdl8AD3ZgAA92YgAPdmMAD3beAA924AAPduIAD3bkAA925wAPdugAD3bpAA926gAPdusAD3btAA927wAPdvAAD3bxAA928wAPdvQAD3dvAA93cQAPd3MAD3d1AA93eAAPd3kAD3d6AA93ewAPd3wAD3d+AA93gAAPd4EAD3eCAA93hAAPd4UAD3gAAA94AgAPeAQAD3gGAA94CQAPeAoAD3gLAA94DAAPeA0AD3gPAA94EQAPeBIAD3gTAA94FQAPeBYAD3iRAA94kwAPeJUAD3iXAA94mgAPeJsAD3icAA94nQAPeJ4AD3igAA94ogAPeKMAD3ikAA94pgAPeKcAD3kiAA95JAAPeSYAD3koAA95KwAPeSwAD3ktAA95LgAPeS8AD3kxAA95MwAPeTQAD3k1AA95NwAPeTgAD3mzAA95tQAPebcAD3m5AA95vAAPeb0AD3m+AA95vwAPecAAD3nCAA95xAAPecUAD3nGAA95yAAPeckAD3pcAA96fwAPep8AD3q/AA96wQAPesMAD3rFAA96xwAPesoAD3rLAA96zAAPes8AD3rQAA960gAPetMAD3rVAA962AAPetkAD3raAA963QAPet4AD3rjAA96/AAPewUAD3sHAA97CQAPexIAD3sVAA97GAAPexoAD3tjAA97hwAPe64AD3vSAA971QAPe9cAD3vZAA972wAPe90AD3vfAA974AAPe+MAD3v8AA98HQAPfB8AD3whAA98IwAPfCUAD3wnAA98KQAPfCsAD3wtAA98TgAPfFEAD3xUAA98VwAPfFoAD3xdAA98YAAPfGMAD3xmAA98aAAPfOMAD3zlAA985wAPfOkAD3zsAA987QAPfO4AD3zvAA988AAPfPIAD3z0AA989QAPfPYAD3z4AA98+QAPfXQAD312AA99eAAPfXoAD319AA99fgAPfX8AD32AAA99gQAPfYMAD32FAA99hgAPfYcAD32JAA99igAPfgUAD34HAA9+CgAPfgwAD34PAA9+EAAPfhEAD34SAA9+EwAPfhUAD34XAA9+GAAPfhkAD34bAA9+HAAPfjUAD342AA9+NwAPfjkAD360AA9+tgAPfrgAD366AA9+vQAPfr4AD36/AA9+wAAPfsEAD37DAA9+xQAPfsYAD37HAA9+yQAPfsoAD39FAA9/RwAPf0kAD39LAA9/TgAPf08AD39QAA9/UQAPf1IAD39UAA9/VgAPf1cAD39YAA9/WgAPf1sAD3/WAA9/2AAPf9oAD3/cAA9/3wAPf+AAD3/hAA9/4gAPf+MAD3/lAA9/5wAPf+gAD3/pAA9/6wAPf+wAD4BnAA+AaQAPgGsAD4BtAA+AcAAPgHEAD4ByAA+AcwAPgHQAD4B2AA+AeAAPgHkAD4B6AA+AfAAPgH0AD4D4AA+A+gAPgPwAD4D+AA+BAQAPgQIAD4EDAA+BBAAPgQUAD4EHAA+BCQAPgQoAD4ELAA+BDQAPgQ4AD4FXAA+BewAPgaIAD4HGAA+ByQAPgcsAD4HNAA+BzwAPgdEAD4HTAA+B1AAPgdcAD4HwAA+CDQAPgg8AD4IRAA+CEwAPghUAD4IXAA+CGQAPghsAD4I4AA+COwAPgj4AD4JBAA+CRAAPgkcAD4JKAA+CTQAPgk8AD4LKAA+CzAAPgs4AD4LQAA+C0wAPgtQAD4LVAA+C1gAPgtcAD4LZAA+C2wAPgtwAD4LdAA+C3wAPguAAD4NbAA+DXQAPg18AD4NhAA+DZAAPg2UAD4NmAA+DZwAPg2gAD4NqAA+DbAAPg20AD4NuAA+DcAAPg3EAD4PsAA+D7gAPg/AAD4PyAA+D9QAPg/YAD4P3AA+D+AAPg/kAD4P7AA+D/QAPg/4AD4P/AA+EAQAPhAIAD4R9AA+EfwAPhIIAD4SEAA+EhwAPhIgAD4SJAA+EigAPhIsAD4SNAA+EjwAPhJAAD4SRAA+EkwAPhJQAD4UPAA+FEQAPhRMAD4UVAA+FGAAPhRkAD4UaAA+FGwAPhRwAD4UeAA+FIAAPhSEAD4UiAA+FJAAPhSUAD4WgAA+FogAPhaQAD4WmAA+FqQAPhaoAD4WrAA+FrAAPha0AD4WvAA+FsQAPhbIAD4WzAA+FtQAPhbYAD4YxAA+GMwAPhjUAD4Y3AA+GOgAPhjsAD4Y8AA+GPQAPhj4AD4ZAAA+GQgAPhkMAD4ZEAA+GRgAPhkcAD4baAA+G/QAPhx0AD4c9AA+HPwAPh0EAD4dDAA+HRQAPh0gAD4dJAA+HSgAPh00AD4dOAA+HUAAPh1EAD4dTAA+HVgAPh1cAD4dYAA+HWwAPh1wAD4dhAA+HegAPh4MAD4eFAA+HhwAPh5AAD4eTAA+HlgAPh5gAD4fhAA+IBQAPiCwAD4hQAA+IUwAPiFUAD4hXAA+IWQAPiFsAD4hdAA+IXgAPiGEAD4h6AA+ImwAPiJ0AD4ifAA+IoQAPiKMAD4ilAA+IpwAPiKkAD4irAA+IzAAPiM8AD4jSAA+I1QAPiNgAD4jbAA+I3gAPiOEAD4jkAA+I5gAPiWEAD4ljAA+JZQAPiWcAD4lqAA+JawAPiWwAD4ltAA+JbgAPiXAAD4lyAA+JcwAPiXQAD4l2AA+JdwAPifIAD4n0AA+J9gAPifgAD4n7AA+J/AAPif0AD4n+AA+J/wAPigEAD4oDAA+KBAAPigUAD4oHAA+KCAAPioMAD4qFAA+KiAAPiooAD4qNAA+KjgAPio8AD4qQAA+KkQAPipMAD4qVAA+KlgAPipcAD4qZAA+KmgAPirMAD4q0AA+KtQAPircAD4syAA+LNAAPizYAD4s4AA+LOwAPizwAD4s9AA+LPgAPiz8AD4tBAA+LQwAPi0QAD4tFAA+LRwAPi0gAD4vDAA+LxQAPi8cAD4vJAA+LzAAPi80AD4vOAA+LzwAPi9AAD4vSAA+L1AAPi9UAD4vWAA+L2AAPi9kAD4xUAA+MVgAPjFgAD4xaAA+MXQAPjF4AD4xfAA+MYAAPjGEAD4xjAA+MZQAPjGYAD4xnAA+MaQAPjGoAD4zlAA+M5wAPjOkAD4zrAA+M7gAPjO8AD4zwAA+M8QAPjPIAD4z0AA+M9gAPjPcAD4z4AA+M+gAPjPsAD412AA+NeAAPjXoAD418AA+NfwAPjYAAD42BAA+NggAPjYMAD42FAA+NhwAPjYgAD42JAA+NiwAPjYwAD43VAA+N+QAPjiAAD45EAA+ORwAPjkkAD45LAA+OTQAPjk8AD45RAA+OUgAPjlUAD45uAA+OiwAPjo0AD46PAA+OkQAPjpMAD46VAA+OlwAPjpkAD462AA+OuQAPjrwAD46/AA+OwgAPjsUAD47IAA+OywAPjs0AD49IAA+PSgAPj0wAD49OAA+PUQAPj1IAD49TAA+PVAAPj1UAD49XAA+PWQAPj1oAD49bAA+PXQAPj14AD4/ZAA+P2wAPj90AD4/fAA+P4gAPj+MAD4/kAA+P5QAPj+YAD4/oAA+P6gAPj+sAD4/sAA+P7gAPj+8AD5BqAA+QbAAPkG4AD5BwAA+QcwAPkHQAD5B1AA+QdgAPkHcAD5B5AA+QewAPkHwAD5B9AA+QfwAPkIAAD5D7AA+Q/QAPkP8AD5EBAA+RBAAPkQUAD5EGAA+RBwAPkQgAD5EKAA+RDAAPkQ0AD5EOAA+REAAPkREAD5GMAA+RjgAPkZAAD5GSAA+RlQAPkZYAD5GXAA+RmAAPkZkAD5GbAA+RnQAPkZ4AD5GfAA+RoQAPkaIAD5IdAA+SHwAPkiEAD5IjAA+SJgAPkicAD5IoAA+SKQAPkioAD5IsAA+SLgAPki8AD5IwAA+SMgAPkjMAD5KuAA+SsAAPkrIAD5K0AA+StwAPkrgAD5K5AA+SugAPkrsAD5K9AA+SvwAPksAAD5LBAA+SwwAPksQAD5NXAA+TegAPk5oAD5O6AA+TvAAPk74AD5PAAA+TwgAPk8UAD5PGAA+TxwAPk8oAD5PLAA+TzQAPk84AD5PQAA+T0wAPk9QAD5PVAA+T2AAPk9kAD5PeAA+T9wAPlAAAD5QCAA+UBAAPlA0AD5QQAA+UEwAPlBUAD5ReAA+UggAPlKkAD5TNAA+U0AAPlNIAD5TUAA+U1gAPlNgAD5TaAA+U2wAPlN4AD5T3AA+VGAAPlRoAD5UcAA+VHgAPlSAAD5UiAA+VJAAPlSYAD5UoAA+VSQAPlUwAD5VPAA+VUgAPlVUAD5VYAA+VWwAPlV4AD5VhAA+VYwAPld4AD5XgAA+V4gAPleQAD5XnAA+V6AAPlekAD5XqAA+V6wAPle0AD5XvAA+V8AAPlfEAD5XzAA+V9AAPlm8AD5ZxAA+WcwAPlnUAD5Z4AA+WeQAPlnoAD5Z7AA+WfAAPln4AD5aAAA+WgQAPloIAD5aEAA+WhQAPlwAAD5cCAA+XBQAPlwcAD5cKAA+XCwAPlwwAD5cNAA+XDgAPlxAAD5cSAA+XEwAPlxQAD5cWAA+XFwAPlzAAD5cxAA+XMgAPlzQAD5evAA+XsQAPl7MAD5e1AA+XuAAPl7kAD5e6AA+XuwAPl7wAD5e+AA+XwAAPl8EAD5fCAA+XxAAPl8UAD5hAAA+YQgAPmEQAD5hGAA+YSQAPmEoAD5hLAA+YTAAPmE0AD5hPAA+YUQAPmFIAD5hTAA+YVQAPmFYAD5jRAA+Y0wAPmNUAD5jXAA+Y2gAPmNsAD5jcAA+Y3QAPmN4AD5jgAA+Y4gAPmOMAD5jkAA+Y5gAPmOcAD5liAA+ZZAAPmWYAD5loAA+ZawAPmWwAD5ltAA+ZbgAPmW8AD5lxAA+ZcwAPmXQAD5l1AA+ZdwAPmXgAD5nzAA+Z9QAPmfcAD5n5AA+Z/AAPmf0AD5n+AA+Z/wAPmgAAD5oCAA+aBAAPmgUAD5oGAA+aCAAPmgkAD5pSAA+adgAPmp0AD5rBAA+axAAPmsYAD5rIAA+aygAPmswAD5rOAA+azwAPmtIAD5rrAA+bCAAPmwoAD5sMAA+bDgAPmxAAD5sSAA+bFAAPmxYAD5szAA+bNgAPmzkAD5s8AA+bPwAPm0IAD5tFAA+bSAAPm0oAD5vFAA+bxwAPm8kAD5vLAA+bzgAPm88AD5vQAA+b0QAPm9IAD5vUAA+b1gAPm9cAD5vYAA+b2gAPm9sAD5xWAA+cWAAPnFoAD5xcAA+cXwAPnGAAD5xhAA+cYgAPnGMAD5xlAA+cZwAPnGgAD5xpAA+cawAPnGwAD5znAA+c6QAPnOsAD5ztAA+c8AAPnPEAD5zyAA+c8wAPnPQAD5z2AA+c+AAPnPkAD5z6AA+c/AAPnP0AD514AA+degAPnXwAD51+AA+dgQAPnYIAD52DAA+dhAAPnYUAD52HAA+diQAPnYoAD52LAA+djQAPnY4AD54JAA+eCwAPng0AD54PAA+eEgAPnhMAD54UAA+eFQAPnhYAD54YAA+eGgAPnhsAD54cAA+eHgAPnh8AD56aAA+enAAPnp4AD56gAA+eowAPnqQAD56lAA+epgAPnqcAD56pAA+eqwAPnqwAD56tAA+erwAPnrAAD58rAA+fLQAPny8AD58xAA+fNAAPnzUAD582AA+fNwAPnzgAD586AA+fPAAPnz0AD58+AA+fQAAPn0EAD59SAA+fUwAPn1UAD5/YAA+f/AAPoCAAD6BDAA+gagAPoIoAD6CxAA+g2AAPoPgAD6EcAA+hQAAPoUIAD6FFAA+hRwAPoUkAD6FLAA+hTgAPoVEAD6FTAA+hVQAPoVgAD6FaAA+hXAAPoV8AD6FiAA+hYwAPoWwAD6GFAA+higAPoYwAD6GRAA+hlAAPoZYAD6HfAA+iAwAPoioAD6JOAA+iUQAPolMAD6JVAA+iVwAPolkAD6JbAA+iXAAPol8AD6J4AA+inQAPop8AD6KhAA+iowAPoqUAD6KnAA+iqQAPoqsAD6KtAA+irwAPotQAD6LXAA+i2gAPot0AD6LgAA+i4wAPouYAD6LpAA+i7AAPou8AD6LxAA+jbAAPo24AD6NxAA+jcwAPo3YAD6N3AA+jeAAPo3kAD6N6AA+jfAAPo34AD6N/AA+jgAAPo4IAD6ODAA+jlAAPo5UAD6OXAA+kEgAPpBQAD6QWAA+kGAAPpBsAD6QcAA+kHQAPpB4AD6QfAA+kIQAPpCMAD6QkAA+kJQAPpCcAD6QoAA+kowAPpKUAD6SoAA+kqgAPpK0AD6SuAA+krwAPpLAAD6SxAA+kswAPpLUAD6S2AA+ktwAPpLkAD6S6AA+kywAPpMwAD6TOAA+lSQAPpUsAD6VNAA+lTwAPpVIAD6VTAA+lVAAPpVUAD6VWAA+lWAAPpVoAD6VbAA+lXAAPpV4AD6VfAA+l2gAPpdwAD6XfAA+l4QAPpeQAD6XlAA+l5gAPpecAD6XoAA+l6gAPpewAD6XtAA+l7gAPpfAAD6XxAA+mAgAPpgMAD6YFAA+mgAAPpoIAD6aEAA+mhgAPpokAD6aKAA+miwAPpowAD6aNAA+mjwAPppEAD6aSAA+mkwAPppUAD6aWAA+nEQAPpxMAD6cWAA+nGAAPpxsAD6ccAA+nHQAPpx4AD6cfAA+nIQAPpyMAD6ckAA+nJQAPpycAD6coAA+nQQAPp0IAD6dDAA+nRQAPp8AAD6fCAA+nxAAPp8YAD6fJAA+nygAPp8sAD6fMAA+nzQAPp88AD6fRAA+n0gAPp9MAD6fVAA+n1gAPqFEAD6hTAA+oVgAPqFgAD6hbAA+oXAAPqF0AD6heAA+oXwAPqGEAD6hjAA+oZAAPqGUAD6hnAA+oaAAPqIEAD6iaAA+oywAPqM4AD6jRAA+o1AAPqNcAD6jaAA+o3QAPqOAAD6jjAA+o5gAPqOkAD6jsAA+o7wAPqSAAD6kjAA+pJgAPqSkAD6ksAA+pLwAPqTIAD6k1AA+pOAAPqTsAD6k+AA+pQQAPqUQAD6lGAA+pVQAPqWMAD6l5AA+plQAPqagAD6myAA+pygAPqegAD6n7AA+qGQAPqiMAD6q2AA+q2QAPqvkAD6sZAA+rGwAPqx0AD6sfAA+rIQAPqyQAD6slAA+rJgAPqykAD6sqAA+rLAAPqy0AD6svAA+rMgAPqzMAD6s0AA+rNwAPqzgAD6s9AA+rVgAPq18AD6thAA+rYwAPq2wAD6tvAA+rcgAPq3QAD6u9AA+r4QAPrAgAD6wsAA+sLwAPrDEAD6wzAA+sNQAPrDcAD6w5AA+sOgAPrD0AD6xWAA+sdwAPrHkAD6x7AA+sfQAPrH8AD6yBAA+sgwAPrIUAD6yHAA+sqAAPrKsAD6yuAA+ssQAPrLQAD6y3AA+sugAPrL0AD6zAAA+swgAPrT0AD60/AA+tQQAPrUMAD61GAA+tRwAPrUgAD61JAA+tSgAPrUwAD61OAA+tTwAPrVAAD61SAA+tUwAPrc4AD63QAA+t0gAPrdQAD63XAA+t2AAPrdkAD63aAA+t2wAPrd0AD63fAA+t4AAPreEAD63jAA+t5AAPrl8AD65hAA+uZAAPrmYAD65pAA+uagAPrmsAD65sAA+ubQAPrm8AD65xAA+ucgAPrnMAD651AA+udgAPro8AD66QAA+ukQAPrpMAD68OAA+vEAAPrxIAD68UAA+vFwAPrxgAD68ZAA+vGgAPrxsAD68dAA+vHwAPryAAD68hAA+vIwAPryQAD6+fAA+voQAPr6MAD6+lAA+vqAAPr6kAD6+qAA+vqwAPr6wAD6+uAA+vsAAPr7EAD6+yAA+vtAAPr7UAD7AwAA+wMgAPsDQAD7A2AA+wOQAPsDoAD7A7AA+wPAAPsD0AD7A/AA+wQQAPsEIAD7BDAA+wRQAPsEYAD7DBAA+wwwAPsMUAD7DHAA+wygAPsMsAD7DMAA+wzQAPsM4AD7DQAA+w0gAPsNMAD7DUAA+w1gAPsNcAD7FSAA+xVAAPsVYAD7FYAA+xWwAPsVwAD7FdAA+xXgAPsV8AD7FhAA+xYwAPsWQAD7FlAA+xZwAPsWgAD7GxAA+x1QAPsfwAD7IgAA+yIwAPsiUAD7InAA+yKQAPsisAD7ItAA+yLgAPsjEAD7JKAA+yZwAPsmkAD7JrAA+ybQAPsm8AD7JxAA+ycwAPsnUAD7KSAA+ylQAPspgAD7KbAA+yngAPsqEAD7KkAA+ypwAPsqkAD7MkAA+zJgAPsykAD7MrAA+zLgAPsy8AD7MwAA+zMQAPszIAD7M0AA+zNgAPszcAD7M4AA+zOgAPszsAD7O2AA+zuAAPs7oAD7O8AA+zvwAPs8AAD7PBAA+zwgAPs8MAD7PFAA+zxwAPs8gAD7PJAA+zywAPs8wAD7RHAA+0SQAPtEsAD7RNAA+0UAAPtFEAD7RSAA+0UwAPtFQAD7RWAA+0WAAPtFkAD7RaAA+0XAAPtF0AD7TYAA+02gAPtN0AD7TfAA+04gAPtOMAD7TkAA+05QAPtOYAD7ToAA+06gAPtOsAD7TsAA+07gAPtO8AD7VqAA+1bAAPtW4AD7VwAA+1cwAPtXQAD7V1AA+1dgAPtXcAD7V5AA+1ewAPtXwAD7V9AA+1fwAPtYAAD7X7AA+1/QAPtf8AD7YBAA+2BAAPtgUAD7YGAA+2BwAPtggAD7YKAA+2DAAPtg0AD7YOAA+2EAAPthEAD7aMAA+2jgAPtpAAD7aSAA+2lQAPtpYAD7aXAA+2mAAPtpkAD7abAA+2nQAPtp4AD7afAA+2oQAPtqIAD7c1AA+3WAAPt3gAD7eYAA+3mgAPt5wAD7eeAA+3oAAPt6MAD7ekAA+3pQAPt6gAD7epAA+3qwAPt6wAD7euAA+3sQAPt7IAD7ezAA+3tgAPt7cAD7e8AA+31QAPt94AD7fgAA+34gAPt+sAD7fuAA+38QAPt/MAD7g8AA+4YAAPuIcAD7irAA+4rgAPuLAAD7iyAA+4tAAPuLYAD7i4AA+4uQAPuLwAD7jVAA+49gAPuPgAD7j6AA+4/AAPuP4AD7kAAA+5AgAPuQQAD7kGAA+5JwAPuSoAD7ktAA+5MAAPuTMAD7k2AA+5OQAPuTwAD7k/AA+5QQAPubwAD7m+AA+5wAAPucIAD7nFAA+5xgAPuccAD7nIAA+5yQAPucsAD7nNAA+5zgAPuc8AD7nRAA+50gAPuk0AD7pPAA+6UQAPulMAD7pWAA+6VwAPulgAD7pZAA+6WgAPulwAD7peAA+6XwAPumAAD7piAA+6YwAPut4AD7rgAA+64wAPuuUAD7roAA+66QAPuuoAD7rrAA+67AAPuu4AD7rwAA+68QAPuvIAD7r0AA+69QAPuw4AD7sPAA+7EAAPuxIAD7uNAA+7jwAPu5EAD7uTAA+7lgAPu5cAD7uYAA+7mQAPu5oAD7ucAA+7ngAPu58AD7ugAA+7ogAPu6MAD7weAA+8IAAPvCIAD7wkAA+8JwAPvCgAD7wpAA+8KgAPvCsAD7wtAA+8LwAPvDAAD7wxAA+8MwAPvDQAD7yvAA+8sQAPvLMAD7y1AA+8uAAPvLkAD7y6AA+8uwAPvLwAD7y+AA+8wAAPvMEAD7zCAA+8xAAPvMUAD71AAA+9QgAPvUQAD71GAA+9SQAPvUoAD71LAA+9TAAPvU0AD71PAA+9UQAPvVIAD71TAA+9VQAPvVYAD73RAA+90wAPvdUAD73XAA+92gAPvdsAD73cAA+93QAPvd4AD73gAA+94gAPveMAD73kAA+95gAPvecAD74wAA++VAAPvnsAD76fAA++ogAPvqQAD76mAA++qAAPvqoAD76sAA++rQAPvrAAD77JAA++5gAPvugAD77qAA++7AAPvu4AD77wAA++8gAPvvQAD78RAA+/FAAPvxcAD78aAA+/HQAPvyAAD78jAA+/JgAPvygAD7+jAA+/pQAPv6cAD7+pAA+/rAAPv60AD7+uAA+/rwAPv7AAD7+yAA+/tAAPv7UAD7+2AA+/uAAPv7kAD8A0AA/ANgAPwDgAD8A6AA/APQAPwD4AD8A/AA/AQAAPwEEAD8BDAA/ARQAPwEYAD8BHAA/ASQAPwEoAD8DFAA/AxwAPwMkAD8DLAA/AzgAPwM8AD8DQAA/A0QAPwNIAD8DUAA/A1gAPwNcAD8DYAA/A2gAPwNsAD8FWAA/BWAAPwVsAD8FdAA/BYAAPwWEAD8FiAA/BYwAPwWQAD8FmAA/BaAAPwWkAD8FqAA/BbAAPwW0AD8HoAA/B6gAPwewAD8HuAA/B8QAPwfIAD8HzAA/B9AAPwfUAD8H3AA/B+QAPwfoAD8H7AA/B/QAPwf4AD8J5AA/CewAPwn0AD8J/AA/CggAPwoMAD8KEAA/ChQAPwoYAD8KIAA/CigAPwosAD8KMAA/CjgAPwo8AD8MKAA/DDAAPww4AD8MQAA/DEwAPwxQAD8MVAA/DFgAPwxcAD8MZAA/DGwAPwxwAD8MdAA/DHwAPwyAAD8OzAA/D1gAPw/YAD8QWAA/EGAAPxBoAD8QcAA/EHgAPxCEAD8QiAA/EIwAPxCYAD8QnAA/EKQAPxCoAD8QsAA/ELwAPxDAAD8QxAA/ENAAPxDUAD8Q+AA/EVwAPxGAAD8RiAA/EZAAPxG0AD8RwAA/EcwAPxHUAD8S+AA/E4gAPxQkAD8UtAA/FMAAPxTIAD8U0AA/FNgAPxTgAD8U6AA/FOwAPxT4AD8VXAA/FeAAPxXoAD8V8AA/FfgAPxYAAD8WCAA/FhAAPxYYAD8WIAA/FqQAPxawAD8WvAA/FsgAPxbUAD8W4AA/FuwAPxb4AD8XBAA/FwwAPxj4AD8ZAAA/GQgAPxkQAD8ZHAA/GSAAPxkkAD8ZKAA/GSwAPxk0AD8ZPAA/GUAAPxlEAD8ZTAA/GVAAPxs8AD8bRAA/G0wAPxtUAD8bYAA/G2QAPxtoAD8bbAA/G3AAPxt4AD8bgAA/G4QAPxuIAD8bkAA/G5QAPx2AAD8diAA/HZQAPx2cAD8dqAA/HawAPx2wAD8dtAA/HbgAPx3AAD8dyAA/HcwAPx3QAD8d2AA/HdwAPx5AAD8eRAA/HkgAPx5QAD8gPAA/IEQAPyBMAD8gVAA/IGAAPyBkAD8gaAA/IGwAPyBwAD8geAA/IIAAPyCEAD8giAA/IJAAPyCUAD8igAA/IogAPyKQAD8imAA/IqQAPyKoAD8irAA/IrAAPyK0AD8ivAA/IsQAPyLIAD8izAA/ItQAPyLYAD8kxAA/JMwAPyTUAD8k3AA/JOgAPyTsAD8k8AA/JPQAPyT4AD8lAAA/JQgAPyUMAD8lEAA/JRgAPyUcAD8nCAA/JxAAPycYAD8nIAA/JywAPycwAD8nNAA/JzgAPyc8AD8nRAA/J0wAPydQAD8nVAA/J1wAPydgAD8pTAA/KVQAPylcAD8pZAA/KXAAPyl0AD8peAA/KXwAPymAAD8piAA/KZAAPymUAD8pmAA/KaAAPymkAD8qyAA/K1gAPyv0AD8shAA/LJAAPyyYAD8soAA/LKgAPyywAD8suAA/LLwAPyzIAD8tLAA/LaAAPy2oAD8tsAA/LbgAPy3AAD8tyAA/LdAAPy3YAD8uTAA/LlgAPy5kAD8ucAA/LnwAPy6IAD8ulAA/LqAAPy6oAD8wlAA/MJwAPzCkAD8wrAA/MLgAPzC8AD8wwAA/MMQAPzDIAD8w0AA/MNgAPzDcAD8w4AA/MOgAPzDsAD8y2AA/MuAAPzLoAD8y8AA/MvwAPzMAAD8zBAA/MwgAPzMMAD8zFAA/MxwAPzMgAD8zJAA/MywAPzMwAD81HAA/NSQAPzUsAD81NAA/NUAAPzVEAD81SAA/NUwAPzVQAD81WAA/NWAAPzVkAD81aAA/NXAAPzV0AD83YAA/N2gAPzd0AD83fAA/N4gAPzeMAD83kAA/N5QAPzeYAD83oAA/N6gAPzesAD83sAA/N7gAPze8AD85qAA/ObAAPzm4AD85wAA/OcwAPznQAD851AA/OdgAPzncAD855AA/OewAPznwAD859AA/OfwAPzoAAD877AA/O/QAPzv8AD88BAA/PBAAPzwUAD88GAA/PBwAPzwgAD88KAA/PDAAPzw0AD88OAA/PEAAPzxEAD8+MAA/PjgAPz5AAD8+SAA/PlQAPz5YAD8+XAA/PmAAPz5kAD8+bAA/PnQAPz54AD8+fAA/PoQAPz6IAD9A1AA/QWAAP0HgAD9CYAA/QmgAP0JwAD9CeAA/QoAAP0KMAD9CkAA/QpQAP0KgAD9CpAA/QqwAP0KwAD9CuAA/QsQAP0LIAD9CzAA/QtgAP0LcAD9C8AA/Q1QAP0N4AD9DgAA/Q4gAP0OsAD9DuAA/Q8QAP0PMAD9E8AA/RYAAP0YcAD9GrAA/RrgAP0bAAD9GyAA/RtAAP0bYAD9G4AA/RuQAP0bwAD9HVAA/R9gAP0fgAD9H6AA/R/AAP0f4AD9IAAA/SAgAP0gQAD9IGAA/SJwAP0ioAD9ItAA/SMAAP0jMAD9I2AA/SOQAP0jwAD9I/AA/SQQAP0rwAD9K+AA/SwAAP0sIAD9LFAA/SxgAP0scAD9LIAA/SyQAP0ssAD9LNAA/SzgAP0s8AD9LRAA/S0gAP000AD9NPAA/TUQAP01MAD9NWAA/TVwAP01gAD9NZAA/TWgAP01wAD9NeAA/TXwAP02AAD9NiAA/TYwAP094AD9PgAA/T4wAP0+UAD9PoAA/T6QAP0+oAD9PrAA/T7AAP0+4AD9PwAA/T8QAP0/IAD9P0AA/T9QAP1A4AD9QPAA/UEAAP1BIAD9SNAA/UjwAP1JEAD9STAA/UlgAP1JcAD9SYAA/UmQAP1JoAD9ScAA/UngAP1J8AD9SgAA/UogAP1KMAD9UeAA/VIAAP1SIAD9UkAA/VJwAP1SgAD9UpAA/VKgAP1SsAD9UtAA/VLwAP1TAAD9UxAA/VMwAP1TQAD9WvAA/VsQAP1bMAD9W1AA/VuAAP1bkAD9W6AA/VuwAP1bwAD9W+AA/VwAAP1cEAD9XCAA/VxAAP1cUAD9ZAAA/WQgAP1kQAD9ZGAA/WSQAP1koAD9ZLAA/WTAAP1k0AD9ZPAA/WUQAP1lIAD9ZTAA/WVQAP1lYAD9bRAA/W0wAP1tUAD9bXAA/W2gAP1tsAD9bcAA/W3QAP1t4AD9bgAA/W4gAP1uMAD9bkAA/W5gAP1ucAD9cwAA/XVAAP13sAD9efAA/XogAP16QAD9emAA/XqAAP16oAD9esAA/XrQAP17AAD9fJAA/X5gAP1+gAD9fqAA/X7AAP1+4AD9fwAA/X8gAP1/QAD9gRAA/YFAAP2BcAD9gaAA/YHQAP2CAAD9gjAA/YJgAP2CgAD9ijAA/YpQAP2KcAD9ipAA/YrAAP2K0AD9iuAA/YrwAP2LAAD9iyAA/YtAAP2LUAD9i2AA/YuAAP2LkAD9k0AA/ZNgAP2TgAD9k6AA/ZPQAP2T4AD9k/AA/ZQAAP2UEAD9lDAA/ZRQAP2UYAD9lHAA/ZSQAP2UoAD9nFAA/ZxwAP2ckAD9nLAA/ZzgAP2c8AD9nQAA/Z0QAP2dIAD9nUAA/Z1gAP2dcAD9nYAA/Z2gAP2dsAD9pWAA/aWAAP2loAD9pcAA/aXwAP2mAAD9phAA/aYgAP2mMAD9plAA/aZwAP2mgAD9ppAA/aawAP2mwAD9rnAA/a6QAP2usAD9rtAA/a8AAP2vEAD9ryAA/a8wAP2vQAD9r2AA/a+AAP2vkAD9r6AA/a/AAP2v0AD9t4AA/begAP23wAD9t+AA/bgQAP24IAD9uDAA/bhAAP24UAD9uHAA/biQAP24oAD9uLAA/bjQAP244AD9wJAA/cCwAP3A0AD9wPAA/cEgAP3BMAD9wUAA/cFQAP3BYAD9wYAA/cGgAP3BsAD9wcAA/cHgAP3B8AD9yyAA/c1QAP3PUAD90VAA/dFwAP3RkAD90bAA/dHQAP3SAAD90hAA/dIgAP3SUAD90mAA/dKAAP3SkAD90rAA/dLgAP3S8AD90wAA/dMwAP3TQAD905AA/dUgAP3VsAD91dAA/dXwAP3WgAD91rAA/dbgAP3XAAD925AA/d3QAP3gQAD94oAA/eKwAP3i0AD94vAA/eMQAP3jMAD941AA/eNgAP3jkAD95SAA/ecwAP3nUAD953AA/eeQAP3nsAD959AA/efwAP3oEAD96DAA/epAAP3qcAD96qAA/erQAP3rAAD96zAA/etgAP3rkAD968AA/evgAP3zkAD987AA/fPQAP3z8AD99CAA/fQwAP30QAD99FAA/fRgAP30gAD99KAA/fSwAP30wAD99OAA/fTwAP38oAD9/MAA/fzgAP39AAD9/TAA/f1AAP39UAD9/WAA/f1wAP39kAD9/bAA/f3AAP390AD9/fAA/f4AAP4FsAD+BdAA/gYAAP4GIAD+BlAA/gZgAP4GcAD+BoAA/gaQAP4GsAD+BtAA/gbgAP4G8AD+BxAA/gcgAP4IsAD+CMAA/gjQAP4I8AD+EKAA/hDAAP4Q4AD+EQAA/hEwAP4RQAD+EVAA/hFgAP4RcAD+EZAA/hGwAP4RwAD+EdAA/hHwAP4SAAD+GbAA/hnQAP4Z8AD+GhAA/hpAAP4aUAD+GmAA/hpwAP4agAD+GqAA/hrAAP4a0AD+GuAA/hsAAP4bEAD+IsAA/iLgAP4jAAD+IyAA/iNQAP4jYAD+I3AA/iOAAP4jkAD+I7AA/iPQAP4j4AD+I/AA/iQQAP4kIAD+K9AA/ivwAP4sEAD+LDAA/ixgAP4scAD+LIAA/iyQAP4soAD+LMAA/izgAP4s8AD+LQAA/i0gAP4tMAD+NOAA/jUAAP41IAD+NUAA/jVwAP41gAD+NZAA/jWgAP41sAD+NdAA/jXwAP42AAD+NhAA/jYwAP42QAD+OtAA/j0QAP4/gAD+QcAA/kHwAP5CEAD+QjAA/kJQAP5CcAD+QpAA/kKgAP5C0AD+RGAA/kYwAP5GUAD+RnAA/kaQAP5GsAD+RtAA/kbwAP5HEAD+SOAA/kkQAP5JQAD+SXAA/kmgAP5J0AD+SgAA/kowAP5KUAD+UgAA/lIgAP5SUAD+UnAA/lKgAP5SsAD+UsAA/lLQAP5S4AD+UwAA/lMgAP5TMAD+U0AA/lNgAP5TcAD+WyAA/ltAAP5bYAD+W4AA/luwAP5bwAD+W9AA/lvgAP5b8AD+XBAA/lwwAP5cQAD+XFAA/lxwAP5cg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AEABsABAAbwAQAHAAEABxABAAcgAQAHMAEAB1ABAAdwAQAHgAEAB5ABAAewAQAHwAEAD3ABAA+QAQAPsAEAD9ABABAAAQAQEAEAECABABAwAQAQQAEAEGABABCAAQAQkAEAEKABABDAAQAQ0AEAGIABABigAQAYwAEAGOABABkQAQAZIAEAGTABABlAAQAZUAEAGXABABmQAQAZoAEAGbABABnQAQAZ4AEAIxABACVAAQAnQAEAKUABAClgAQApgAEAKaABACnAAQAp8AEAKgABACoQAQAqQAEAKlABACpwAQAqgAEAKqABACrQAQAq4AEAKvABACsgAQArMAEAK4ABAC0QAQAtoAEALcABAC3gAQAucAEALqABAC7QAQAu8AEAM4ABADXAAQA4MAEAOnABADqgAQA6wAEAOuABADsAAQA7IAEAO0ABADtQAQA7gAEAPRABAD8gAQA/QAEAP2ABAD+AAQA/oAEAP8ABAD/gAQBAAAEAQCABAEIwAQBCYAEAQpABAELAAQBC8AEAQyABAENQAQBDgAEAQ7ABAEPQAQBLgAEAS6ABAEvAAQBL4AEATBABAEwgAQBMMAEATEABAExQAQBMcAEATJABAEygAQBMsAEATNABAEzgAQBUkAEAVLABAFTQAQBU8AEAVSABAFUwAQBVQAEAVVABAFVgAQBVgAEAVaABAFWwAQBVwAEAVeABAFXwAQBdoAEAXcABAF3wAQBeEAEAXkABAF5QAQBeYAEAXnABAF6AAQBeoAEAXsABAF7QAQBe4AEAXwABAF8QAQBgoAEAYLABAGDAAQBg4AEAaJABAGiwAQBo0AEAaPABAGkgAQBpMAEAaUABAGlQAQBpYAEAaYABAGmgAQBpsAEAacABAGngAQBp8AEAcaABAHHAAQBx4AEAcgABAHIwAQByQAEAclABAHJgAQBycAEAcpABAHKwAQBywAEActABAHLwAQBzAAEAerABAHrQAQB68AEAexABAHtAAQB7UAEAe2ABAHtwAQB7gAEAe6ABAHvAAQB70AEAe+ABAHwAAQB8EAEAg8ABAIPgAQCEAAEAhCABAIRQAQCEYAEAhHABAISAAQCEkAEAhLABAITQAQCE4AEAhPABAIUQAQCFIAEAjNABAIzwAQCNEAEAjTABAI1gAQCNcAEAjYABAI2QAQCNoAEAjcABAI3gAQCN8AEAjgABAI4gAQCOMAEAksABAJUAAQCXcAEAmbABAJngAQCaAAEAmiABAJpAAQCaYAEAmoABAJqQAQCawAEAnFABAJ4gAQCeQAEAnmABAJ6AAQCeoAEAnsABAJ7gAQCfAAEAoNABAKEAAQChMAEAoWABAKGQAQChwAEAofABAKIgAQCiQAEAqfABAKoQAQCqMAEAqlABAKqAAQCqkAEAqqABAKqwAQCqwAEAquABAKsAAQCrEAEAqyABAKtAAQCrUAEAswABALMgAQCzQAEAs2ABALOQAQCzoAEAs7ABALPAAQCz0AEAs/ABALQQAQC0IAEAtDABALRQAQC0YAEAvBABALwwAQC8UAEAvHABALygAQC8sAEAvMABALzQAQC84AEAvQABAL0gAQC9MAEAvUABAL1gAQC9cAEAxSABAMVAAQDFYAEAxYABAMWwAQDFwAEAxdABAMXgAQDF8AEAxhABAMYwAQDGQAEAxlABAMZwAQDGgAEAzjABAM5QAQDOcAEAzpABAM7AAQDO0AEAzuABAM7wAQDPAAEAzyABAM9AAQDPUAEAz2ABAM+AAQDPkAEA10ABANdgAQDXgAEA16ABANfQAQDX4AEA1/ABANgAAQDYEAEA2DABANhQAQDYYAEA2HABANiQAQDYoAEA4FABAOBwAQDgkAEA4LABAODgAQDg8AEA4QABAOEQAQDhIAEA4UABAOFgAQDhcAEA4YABAOGgAQDhsAEA6uABAO0QAQDvEAEA8RABAPEwAQDxUAEA8XABAPGQAQDxwAEA8dABAPHgAQDyEAEA8iABAPJAAQDyUAEA8nABAPKgAQDysAEA8sABAPLwAQDzAAEA85ABAPUgAQD1sAEA9dABAPXwAQD2gAEA9rABAPbgAQD3AAEA+5ABAP3QAQEAQAEBAoABAQKwAQEC0AEBAvABAQMQAQEDMAEBA1ABAQNgAQEDkAEBBSABAQcwAQEHUAEBB3ABAQeQAQEHsAEBB9ABAQfwAQEIEAEBCDABAQpAAQEKcAEBCqABAQrQAQELAAEBCzABAQtgAQELkAEBC8ABAQvgAQETkAEBE7ABARPQAQET8AEBFCABARQwAQEUQAEBFFABARRgAQEUgAEBFKABARSwAQEUwAEBFOABARTwAQEcoAEBHMABARzgAQEdAAEBHTABAR1AAQEdUAEBHWABAR1wAQEdkAEBHbABAR3AAQEd0AEBHfABAR4AAQElsAEBJdABASYAAQEmIAEBJlABASZgAQEmcAEBJoABASaQAQEmsAEBJtABASbgAQEm8AEBJxABAScgAQEosAEBKMABASjQAQEo8AEBMKABATDAAQEw4AEBMQABATEwAQExQAEBMVABATFgAQExcAEBMZABATGwAQExwAEBMdABATHwAQEyAAEBObABATnQAQE58AEBOhABATpAAQE6UAEBOmABATpwAQE6gAEBOqABATrAAQE60AEBOuABATsAAQE7EAEBQsABAULgAQFDAAEBQyABAUNQAQFDYAEBQ3ABAUOAAQFDkAEBQ7ABAUPQAQFD4AEBQ/ABAUQQAQFEIAEBS9ABAUvwAQFMEAEBTDABAUxgAQFMcAEBTIABAUyQAQFMoAEBTMABAUzgAQFM8AEBTQABAU0gAQFNMAEBVOABAVUAAQFVIAEBVUABAVVwAQFVgAEBVZABAVWgAQFVsAEBVdABAVXwAQFWAAEBVhABAVYwAQFWQAEBWtABAV0QAQFfgAEBYcABAWHwAQFiEAEBYjABAWJQAQFicAEBYpABAWKgAQFi0AEBZGABAWYwAQFmUAEBZnABAWaQAQFmsAEBZtABAWbwAQFnEAEBaOABAWkQAQFpQAEBaXABAWmgAQFp0AEBagABAWowAQFqUAEBcgABAXIgAQFyQAEBcmABAXKQAQFyoAEBcrABAXLAAQFy0AEBcvABAXMQAQFzIAEBczABAXNQAQFzYAEBexABAXswAQF7UAEBe3ABAXugAQF7sAEBe8ABAXvQAQF74AEBfAABAXwgAQF8MAEBfEABAXxgAQF8cAEBhCABAYRAAQGEYAEBhIABAYSwAQGEwAEBhNABAYTgAQGE8AEBhRABAYUwAQGFQAEBhVABAYVwAQGFgAEBjTABAY1QAQGNgAEBjaABAY3QAQGN4AEBjfABAY4AAQGOEAEBjjABAY5QAQGOYAEBjnABAY6QAQGOoAEBllABAZZwAQGWkAEBlrABAZbgAQGW8AEBlwABAZcQAQGXIAEBl0ABAZdgAQGXcAEBl4ABAZegAQGXsAEBn2ABAZ+AAQGfoAEBn8ABAZ/wAQGgAAEBoBABAaAgAQGgMAEBoFABAaBwAQGggAEBoJABAaCwAQGgwAEBqHABAaiQAQGosAEBqNABAakAAQGpEAEBqSABAakwAQGpQAEBqWABAamAAQGpkAEBqaABAanAAQGp0AEBswABAbUwAQG3MAEBuTABAblQAQG5cAEBuZABAbmwAQG54AEBufABAboAAQG6MAEBukABAbpgAQG6cAEBupABAbrAAQG60AEBuuABAbsQAQG7IAEBu3ABAb0AAQG9kAEBvbABAb3QAQG+YAEBvpABAb7AAQG+4AEBw3ABAcWwAQHIIAEBymABAcqQAQHKsAEBytABAcrwAQHLEAEByzABActAAQHLcAEBzQABAc8QAQHPMAEBz1ABAc9wAQHPkAEBz7ABAc/QAQHP8AEB0BABAdIgAQHSUAEB0oABAdKwAQHS4AEB0xABAdNAAQHTcAEB06ABAdPAAQHbcAEB25ABAduwAQHb0AEB3AABAdwQAQHcIAEB3DABAdxAAQHcYAEB3IABAdyQAQHcoAEB3MABAdzQAQHkgAEB5KABAeTAAQHk4AEB5RABAeUgAQHlMAEB5UABAeVQAQHlcAEB5ZABAeWgAQHlsAEB5dABAeXgAQHtkAEB7bABAe3gAQHuAAEB7jABAe5AAQHuUAEB7mABAe5wAQHukAEB7rABAe7AAQHu0AEB7vABAe8AAQHwkAEB8KABAfCwAQHw0AEB+IABAfigAQH4wAEB+OABAfkQAQH5IAEB+TABAflAAQH5UAEB+XABAfmQAQH5oAEB+bABAfnQAQH54AECAZABAgGwAQIB0AECAfABAgIgAQICMAECAkABAgJQAQICYAECAoABAgKgAQICsAECAsABAgLgAQIC8AECCqABAgrAAQIK4AECCwABAgswAQILQAECC1ABAgtgAQILcAECC5ABAguwAQILwAECC9ABAgvwAQIMAAECE7ABAhPQAQIT8AECFBABAhRAAQIUUAECFGABAhRwAQIUgAECFKABAhTAAQIU0AECFOABAhUAAQIVEAECHMABAhzgAQIdAAECHSABAh1QAQIdYAECHXABAh2AAQIdkAECHbABAh3QAQId4AECHfABAh4QAQIeIAECIrABAiTwAQInYAECKaABAinQAQIp8AECKhABAiowAQIqUAECKnABAiqAAQIqsAECLEABAi4QAQIuMAECLlABAi5wAQIukAECLrABAi7QAQIu8AECMMABAjDwAQIxIAECMVABAjGAAQIxsAECMeABAjIQAQIyMAECOeABAjoAAQI6MAECOlABAjqAAQI6kAECOqABAjqwAQI6wAECOuABAjsAAQI7EAECOyABAjtAAQI7UAECQwABAkMgAQJDQAECQ2ABAkOQAQJDoAECQ7ABAkPAAQJD0AECQ/ABAkQQAQJEIAECRDABAkRQAQJEYAECTBABAkwwAQJMUAECTHABAkygAQJMsAECTMABAkzQAQJM4AECTQABAk0gAQJNMAECTUABAk1gAQJNcAECVSABAlVAAQJVYAECVYABAlWwAQJVwAECVdABAlXgAQJV8AECVhABAlYwAQJWQAECVlABAlZwAQJWgAECXjABAl5QAQJecAECXpABAl7AAQJe0AECXuABAl7wAQJfAAECXyABAl9AAQJfUAECX2ABAl+AAQJfkAECZ0ABAmdgAQJngAECZ6ABAmfQAQJn4AECZ/ABAmgAAQJoEAECaDABAmhQAQJoYAECaHABAmiQAQJooAECcFABAnBwAQJwkAECcLABAnDgAQJw8AECcQABAnEQAQJxIAECcUABAnFgAQJxcAECcYABAnGgAQJxsAECeuABAn0QAQJ/EAECgRABAoEwAQKBUAECgXABAoGQAQKBwAECgdABAoHgAQKCEAECgiABAoJAAQKCUAECgnABAoKgAQKCsAECgsABAoLwAQKDAAECg1ABAoTgAQKFcAEChZABAoWwAQKGQAEChnABAoagAQKGwAECi1ABAo2QAQKQAAECkkABApJwAQKSkAECkrABApLQAQKS8AECkxABApMgAQKTUAEClOABApbwAQKXEAEClzABApdQAQKXcAECl5ABApewAQKX0AECl/ABApoAAQKaMAECmmABApqQAQKawAECmvABApsgAQKbUAECm4ABApugAQKjUAECo3ABAqOQAQKjsAECo+ABAqPwAQKkAAECpBABAqQgAQKkQAECpGABAqRwAQKkgAECpKABAqSwAQKsYAECrIABAqygAQKswAECrPABAq0AAQKtEAECrSABAq0wAQKtUAECrXABAq2AAQKtkAECrbABAq3AAQK1cAECtZABArXAAQK14AECthABArYgAQK2MAECtkABArZQAQK2cAECtpABAragAQK2sAECttABArbgAQK4cAECuIABAriQAQK4sAECwGABAsCAAQLAoAECwMABAsDwAQLBAAECwRABAsEgAQLBMAECwVABAsFwAQLBgAECwZABAsGwAQLBwAECyXABAsmQAQLJsAECydABAsoAAQLKEAECyiABAsowAQLKQAECymABAsqAAQLKkAECyqABAsrAAQLK0AEC0oABAtKgAQLSwAEC0uABAtMQAQLTIAEC0zABAtNAAQLTUAEC03ABAtOQAQLToAEC07ABAtPQAQLT4AEC25ABAtuwAQLb0AEC2/ABAtwgAQLcMAEC3EABAtxQAQLcYAEC3IABAtygAQLcsAEC3MABAtzgAQLc8AEC5KABAuTAAQLk4AEC5QABAuUwAQLlQAEC5VABAuVgAQLlcAEC5ZABAuWwAQLlwAEC5dABAuXwAQLmAAEC6pABAuzQAQLvQAEC8YABAvGwAQLx0AEC8fABAvIQAQLyMAEC8lABAvJgAQLykAEC9CABAvXwAQL2EAEC9jABAvZQAQL2cAEC9pABAvawAQL20AEC+KABAvjQAQL5AAEC+TABAvlgAQL5kAEC+cABAvnwAQL6EAEDAcABAwHgAQMCAAEDAiABAwJQAQMCYAEDAnABAwKAAQMCkAEDArABAwLQAQMC4AEDAvABAwMQAQMDIAEDCtABAwrwAQMLEAEDCzABAwtgAQMLcAEDC4ABAwuQAQMLoAEDC8ABAwvgAQML8AEDDAABAwwgAQMMMAEDE+ABAxQAAQMUIAEDFEABAxRwAQMUgAEDFJABAxSgAQMUsAEDFNABAxTwAQMVAAEDFRABAxUwAQMVQAEDHPABAx0QAQMdQAEDHWABAx2QAQMdoAEDHbABAx3AAQMd0AEDHfABAx4QAQMeIAEDHjABAx5QAQMeYAEDJhABAyYwAQMmUAEDJnABAyagAQMmsAEDJsABAybQAQMm4AEDJwABAycgAQMnMAEDJ0ABAydgAQMncAEDLyABAy9AAQMvYAEDL4ABAy+wAQMvwAEDL9ABAy/gAQMv8AEDMBABAzAwAQMwQAEDMFABAzBwAQMwgAEDODABAzhQAQM4cAEDOJABAzjAAQM40AEDOOABAzjwAQM5AAEDOSABAzlAAQM5UAEDOWABAzmAAQM5kAEDQsABA0TwAQNG8AEDSPABA0kQAQNJMAEDSVABA0lwAQNJoAEDSbABA0nAAQNJ8AEDSgABA0ogAQNKMAEDSlABA0qAAQNKkAEDSqABA0rQAQNK4AEDSzABA0zAAQNNUAEDTXABA02QAQNOIAEDTlABA06AAQNOoAEDUzABA1VwAQNX4AEDWiABA1pQAQNacAEDWpABA1qwAQNa0AEDWvABA1sAAQNbMAEDXMABA17QAQNe8AEDXxABA18wAQNfUAEDX3ABA1+QAQNfsAEDX9ABA2HgAQNiEAEDYkABA2JwAQNioAEDYtABA2MAAQNjMAEDY2ABA2OAAQNrMAEDa1ABA2twAQNrkAEDa8ABA2vQAQNr4AEDa/ABA2wAAQNsIAEDbEABA2xQAQNsYAEDbIABA2yQAQN0QAEDdGABA3SAAQN0oAEDdNABA3TgAQN08AEDdQABA3UQAQN1MAEDdVABA3VgAQN1cAEDdZABA3WgAQN9UAEDfXABA32gAQN9wAEDffABA34AAQN+EAEDfiABA34wAQN+UAEDfnABA36AAQN+kAEDfrABA37AAQOAUAEDgGABA4BwAQOAkAEDiEABA4hgAQOIgAEDiKABA4jQAQOI4AEDiPABA4kAAQOJEAEDiTABA4lQAQOJYAEDiXABA4mQAQOJoAEDkVABA5FwAQORkAEDkbABA5HgAQOR8AEDkgABA5IQAQOSIAEDkkABA5JgAQOScAEDkoABA5KgAQOSsAEDmmABA5qAAQOaoAEDmsABA5rwAQObAAEDmxABA5sgAQObMAEDm1ABA5twAQObgAEDm5ABA5uwAQObwAEDo3ABA6OQAQOjsAEDo9ABA6QAAQOkEAEDpCABA6QwAQOkQAEDpGABA6SAAQOkkAEDpKABA6TAAQOk0AEDrIABA6ygAQOswAEDrOABA60QAQOtIAEDrTABA61AAQOtUAEDrXABA62QAQOtoAEDrbABA63QAQOt4AEDsnABA7SwAQO3IAEDuWABA7mQAQO5sAEDudABA7nwAQO6EAEDujABA7pAAQO6cAEDvAABA73QAQO98AEDvhABA74wAQO+UAEDvnABA76QAQO+sAEDwIABA8CwAQPA4AEDwRABA8FAAQPBcAEDwaABA8HQAQPB8AEDyaABA8nAAQPJ4AEDygABA8owAQPKQAEDylABA8pgAQPKcAEDypABA8qwAQPKwAEDytABA8rwAQPLAAED0rABA9LQAQPS8AED0xABA9NAAQPTUAED02ABA9NwAQPTgAED06ABA9PAAQPT0AED0+ABA9QAAQPUEAED28ABA9vgAQPcA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AEFAiABBQJAAQUCcAEFAoABBQKQAQUCoAEFArABBQLQAQUC8AEFAwABBQMQAQUDMAEFA0ABBQrwAQULEAEFCzABBQtQAQULgAEFC5ABBQugAQULsAEFC8ABBQvgAQUMAAEFDBABBQwgAQUMQAEFDFABBRQAAQUUIAEFFEABBRRgAQUUkAEFFKABBRSwAQUUwAEFFNABBRTwAQUVEAEFFSABBRUwAQUVUAEFFWABBRnwAQUcMAEFHqABBSDgAQUhEAEFITABBSFQAQUhcAEFIZABBSGwAQUhwAEFIfABBSOAAQUlUAEFJXABBSWQAQUlsAEFJdABBSXwAQUmEAEFJjABBSgAAQUoMAEFKGABBSiQAQUowAEFKPABBSkgAQUpUAEFKXABBTEgAQUxQAEFMWABBTGAAQUxsAEFMcABBTHQAQUx4AEFMfABBTIQAQUyMAEFMkABBTJQAQUycAEFMoABBTowAQU6UAEFOnABBTqQAQU6wAEFOtABBTrgAQU68AEFOwABBTsgAQU7QAEFO1ABBTtgAQU7gAEFO5ABBUNAAQVDYAEFQ4ABBUOgAQVD0AEFQ+ABBUPwAQVEAAEFRBABBUQwAQVEUAEFRGABBURwAQVEkAEFRKABBUxQAQVMcAEFTJABBUywAQVM4AEFTPABBU0AAQVNEAEFTSABBU1AAQVNYAEFTXABBU2AAQVNoAEFTbABBVVgAQVVgAEFVaABBVXAAQVV8AEFVgABBVYQAQVWIAEFVjABBVZQAQVWcAEFVoABBVaQAQVWsAEFVsABBV5wAQVekAEFXrABBV7QAQVfAAEFXxABBV8gAQVfMAEFX0ABBV9gAQVfgAEFX5ABBV+gAQVfwAEFX9ABBWeAAQVnoAEFZ8ABBWfgAQVoEAEFaCABBWgwAQVoQAEFaFABBWhwAQVokAEFaKABBWiwAQVo0AEFaOABBXIQAQV0QAEFdkABBXhAAQV4YAEFeIABBXigAQV4wAEFePABBXkAAQV5EAEFeUABBXlQAQV5cAEFeYABBXmgAQV50AEFeeABBXnwAQV6IAEFejABBXqAAQV8EAEFfKABBXzAAQV84AEFfXABBX2gAQV90AEFffABBYKAAQWEwAEFhzABBYlwAQWJoAEFicABBYngAQWKAAEFiiABBYpAAQWKUAEFioABBYwQAQWOIAEFjkABBY5gAQWOgAEFjqABBY7AAQWO4AEFjwABBY8gAQWRMAEFkWABBZGQAQWRwAEFkfABBZIgAQWSUAEFkoABBZKwAQWS0AEFmoABBZqgAQWawAEFmuABBZsQAQWbIAEFmzABBZtAAQWbUAEFm3ABBZuQAQWboAEFm7ABBZvQAQWb4AEFo5ABBaOwAQWj0AEFo/ABBaQgAQWkMAEFpEABBaRQAQWkYAEFpIABBaSgAQWksAEFpMABBaTgAQWk8AEFrKABBazAAQWs8AEFrRABBa1AAQWtUAEFrWABBa1wAQWtgAEFraABBa3AAQWt0AEFreABBa4AAQWuEAEFr6ABBa+wAQWvwAEFr+ABBbeQAQW3sAEFt9ABBbfwAQW4IAEFuDABBbhAAQW4UAEFuGABBbiAAQW4oAEFuLABBbjAAQW44AEFuPABBcCgAQXAwAEFwOABBcEAAQXBMAEFwUABBcFQAQXBYAEFwXABBcGQAQXBsAEFwcABBcHQAQXB8AEFwgABBcmwAQXJ0AEFyfABBcoQAQXKQAEFylABBcpgAQXKcAEFyoABBcqgAQXKwAEFytABBcrgAQXLAAEFyxABBdLAAQXS4AEF0wABBdMgAQXTUAEF02ABBdNwAQXTgAEF05ABBdOwAQXT0AEF0+ABBdPwAQXUEAEF1CABBdvQAQXb8AEF3BABBdwwAQXcYAEF3HABBdyAAQXckAEF3KABBdzAAQXc4AEF3PABBd0AAQXdIAEF3TABBeHAAQXkAAEF5nABBeiwAQXo4AEF6QABBekgAQXpQAEF6WABBemAAQXpkAEF6cABBetQAQXtIAEF7UABBe1gAQXtgAEF7aABBe3AAQXt4AEF7gABBe/QAQXwAAEF8DABBfBgAQXwkAEF8MABBfDwAQXxIAEF8UABBfjwAQX5EAEF+TABBflQAQX5gAEF+ZABBfmgAQX5sAEF+cABBfngAQX6AAEF+hABBfogAQX6QAEF+lABBgIAAQYCIAEGAkABBgJgAQYCkAEGAqABBgKwAQYCwAEGAtABBgLwAQYDEAEGAyABBgMwAQYDUAEGA2ABBgsQAQYLMAEGC1ABBgtwAQYLoAEGC7ABBgvAAQYL0AEGC+ABBgwAAQYMIAEGDDABBgxAAQYMYAEGDHABBhQgAQYUQAEGFGABBhSAAQYUsAEGFMABBhTQAQYU4AEGFPABBhUQAQYVMAEGFUABBhVQAQYVcAEGFYABBh0wAQYdUAEGHXABBh2QAQYdwAEGHdABBh3gAQYd8AEGHgABBh4gAQYeQAEGHlABBh5gAQYegAEGHpABBiZAAQYmYAEGJoABBiagAQYm0AEGJuABBibwAQYnAAEGJxABBicwAQYnUAEGJ2ABBidwAQYnkAEGJ6ABBi9QAQYvcAEGL5ABBi+wAQYv4AEGL/ABBjAAAQYwEAEGMCABBjBAAQYwYAEGMHABBjCAAQYwoAEGMLABBjngAQY8EAEGPhABBkAQAQZAMAEGQFABBkBwAQZAkAEGQMABBkDQAQZA4AEGQRABBkEgAQZBQAEGQVABBkFwAQZBoAEGQbABBkHAAQZB8AEGQgABBkJQAQZD4AEGRHABBkSQAQZEsAEGRUABBkVwAQZFoAEGRcABBkpQAQZMkAEGTwABBlFAAQZRcAEGUZABBlGwAQZR0AEGUfABBlIQAQZSIAEGUlABBlPgAQZV8AEGVhABBlYwAQZWUAEGVnABBlaQAQZWsAEGVtABBlbwAQZZAAEGWTABBllgAQZZkAEGWcABBlnwAQZaIAEGWlABBlqAAQZaoAEGYlABBmJwAQZikAEGYrABBmLgAQZi8AEGYwABBmMQAQZjIAEGY0ABBmNgAQZjcAEGY4ABBmOgAQZjsAEGa2ABBmuAAQZroAEGa8ABBmvwAQZsAAEGbBABBmwgAQZsMAEGbFABBmxwAQZsgAEGbJABBmywAQZswAEGdHABBnSQAQZ0wAEGdOABBnUQAQZ1IAEGdTABBnVAAQZ1UAEGdXABBnWQAQZ1oAEGdbABBnXQAQZ14AEGd3ABBneAAQZ3kAEGd7ABBn9gAQZ/gAEGf6ABBn/AAQZ/8AEGgAABBoAQAQaAIAEGgDABBoBQAQaAcAEGgIABBoCQAQaAsAEGgMABBohwAQaIkAEGiLABBojQAQaJAAEGiRABBokgAQaJMAEGiUABBolgAQaJgAEGiZABBomgAQaJwAEGidABBpGAAQaRoAEGkcABBpHgAQaSEAEGkiABBpIwAQaSQAEGklABBpJwAQaSkAEGkqABBpKwAQaS0AEGkuABBpqQAQaasAEGmtABBprwAQabIAEGmzABBptAAQabUAEGm2ABBpuAAQaboAEGm7ABBpvAAQab4AEGm/ABBqOgAQajwAEGo+ABBqQAAQakMAEGpEABBqRQAQakYAEGpHABBqSQAQaksAEGpMABBqTQAQak8AEGpQABBqmQAQar0AEGrkABBrCAAQawsAEGsNABBrDwAQaxEAEGsTABBrFQAQaxYAEGsZABBrMgAQa08AEGtRABBrUwAQa1UAEGtXABBrWQAQa1sAEGtdABBregAQa30AEGuAABBrgwAQa4YAEGuJABBrjAAQa48AEGuRABBsDAAQbA4AEGwQABBsEgAQbBUAEGwWABBsFwAQbBgAEGwZABBsGwAQbB0AEGweABBsHwAQbCEAEGwiABBsnQAQbJ8AEGyhABBsowAQbKYAEGynABBsqAAQbKkAEGyqABBsrAAQbK4AEGyvABBssAAQbLIAEGyzABBtLgAQbTAAEG0yABBtNAAQbTcAEG04ABBtOQAQbToAEG07ABBtPQAQbT8AEG1AABBtQQAQbUMAEG1EABBtvwAQbcEAEG3DABBtxQAQbcgAEG3JABBtygAQbcsAEG3MABBtzgAQbdAAEG3RABBt0gAQbdQAEG3VABBuUAAQblIAEG5UABBuVgAQblkAEG5aABBuWwAQblwAEG5dABBuXwAQbmEAEG5iABBuYwAQbmUAEG5mABBu4QAQbuMAEG7mABBu6AAQbusAEG7sABBu7QAQbu4AEG7vABBu8QAQbvMAEG70ABBu9QAQbvcAEG74ABBvBwAQb4IAEG+EABBvhgAQb4gAEG+LABBvjAAQb40AEG+OABBvjwAQb5EAEG+TABBvlAAQb5UAEG+XABBvmAAQcCsAEHBOABBwbgAQcI4AEHCQABBwkgAQcJQAEHCWABBwmQAQcJoAEHCbABBwngAQcJ8AEHChABBwogAQcKUAEHCoABBwqQAQcKoAEHCtABBwrgAQcLMAEHDMABBw1QAQcNcAEHDaABBw4wAQcOYAEHDpABBw6wAQcTQAEHFYABBxfwAQcaMAEHGmABBxqAAQcaoAEHGsABBxrgAQcbAAEHGxABBxtAAQcc0AEHHuABBx8AAQcfIAEHH0ABBx9gAQcfgAEHH6ABBx/AAQcf4AEHIfABByIgAQciUAEHIoABByKwAQci4AEHIxABByNAAQcjcAEHI5ABBytAAQcrYAEHK4ABByugAQcr0AEHK+ABByvwAQcsAAEHLBABBywwAQcsUAEHLGABByxwAQcskAEHLKABBzRQAQc0cAEHNJABBzSwAQc04AEHNPABBzUAAQc1EAEHNSABBzVAAQc1YAEHNXABBzWAAQc1oAEHNbABBz1gAQc9gAEHPbABBz3QAQc+AAEHPhABBz4gAQc+MAEHPkABBz5gAQc+gAEHPpABBz6gAQc+wAEHPtABB0BgAQdAcAEHQIABB0CgAQdIUAEHSHABB0iQAQdIsAEHSOABB0jwAQdJAAEHSRABB0kgAQdJQAEHSWABB0lwAQdJgAEHSaABB0mwAQdRYAEHUYABB1GgAQdRwAEHUfABB1IAAQdSEAEHUiABB1IwAQdSUAEHUnABB1KAAQdSkAEHUrABB1LAAQdacAEHWpABB1qwAQda0AEHWwABB1sQAQdbIAEHWzABB1tAAQdbYAEHW4ABB1uQAQdboAEHW8ABB1vQAQdjgAEHY6ABB2PAAQdj4AEHZBABB2QgAQdkMAEHZEABB2RQAQdkcAEHZJABB2SgAQdksAEHZNABB2TgAQdskAEHbLABB2zQAQds8AEHbSABB20wAQdtQAEHbVABB21gAQdtgAEHbaABB22wAQdtwAEHbeABB23wAQdygAEHdMABB3cwAQd5cAEHeaABB3nQAQd58AEHehABB3owAQd6UAEHemABB3qQAQd8IAEHffABB34gAQd+UAEHfoABB36wAQd+4AEHfxABB39AAQeBEAEHgUABB4FwAQeBoAEHgdABB4IAAQeCMAEHgmABB4KAAQeKMAEHilABB4qAAQeKoAEHitABB4rgAQeK8AEHiwABB4sQAQeLMAEHi2ABB4twAQeLgAEHi6ABB4uwAQeTYAEHk4ABB5OwAQeT0AEHlAABB5QQAQeUIAEHlDABB5RAAQeUYAEHlJABB5SgAQeUsAEHlNABB5TgAQeckAEHnLABB5zgAQedAAEHnTABB51AAQedUAEHnWABB51wAQedkAEHncABB53QAQed4AEHngABB54QAQelwAEHpeABB6YQAQemMAEHpmABB6ZwAQemgAEHppABB6agAQemwAEHpvABB6cAAQenEAEHpzABB6dAAQevcAEHsbABB7PwAQe2IAEHuJABB7qQAQe9AAEHv3ABB8FwAQfDsAEHxfABB8YQAQfGQAEHxmABB8aAAQfGoAEHxtABB8cAAQfHIAEHx0ABB8dwAQfHkAEHx7ABB8fgAQfIEAEHyCABB8hwAQfKAAEHylABB8pwAQfKwAEHyvABB8sQAQfPoAEH0eABB9RQAQfWkAEH1sABB9bgAQfXAAEH1yABB9dAAQfXYAEH13ABB9egAQfZMAEH24ABB9ugAQfbwAEH2+ABB9wAAQfcIAEH3EABB9xgAQfcgAEH3KABB97wAQffIAEH31ABB9+AAQffsAEH3+ABB+AQAQfgQAEH4HABB+CgAQfgwAEH6HABB+iQAQfowAEH6OABB+kQAQfpIAEH6TABB+lAAQfpUAEH6XABB+mQAQfpoAEH6bABB+nQAQfp4AEH6vABB+sAAQfrIAEH8tABB/LwAQfzEAEH8zABB/NgAQfzcAEH84ABB/OQAQfzoAEH88ABB/PgAQfz8AEH9AABB/QgAQf0MAEH++ABB/wAAQf8MAEH/FABB/yAAQf8kAEH/KABB/ywAQf8wAEH/OABB/0AAQf9EAEH/SABB/1AAQf9UAEH/mABB/5wAQf+kAEIBkABCAZgAQgGgAEIBqABCAbQAQgG4AEIBvABCAcAAQgHEAEIBzABCAdQAQgHYAEIB3ABCAeQAQgHoAEID1ABCA9wAQgPoAEID8ABCA/wAQgQAAEIEBABCBAgAQgQMAEIEFABCBBwAQgQgAEIEJABCBCwAQgQwAEIEdABCBHgAQgSAAEIGbABCBnQAQgZ8AEIGhABCBpAAQgaUAEIGmABCBpwAQgagAEIGqABCBrAAQga0AEIGuABCBsAAQgbEAEIIsABCCLgAQgjEAEIIzABCCNgAQgjcAEII4ABCCOQAQgjoAEII8ABCCPgAQgj8AEIJAABCCQgAQgkMAEIJcABCCXQAQgl4AEIJgABCC2wAQgt0AEILfABCC4QAQguQAEILlABCC5gAQgucAEILoABCC6gAQguwAEILtABCC7gAQgvAAEILxABCDbAAQg24AEINxABCDcwAQg3YAEIN3ABCDeAAQg3kAEIN6ABCDfAAQg34AEIN/ABCDgAAQg4IAEIODABCDlgAQg68AEIPQABCD0wAQg9YAEIPZABCD3AAQg98AEIPiABCD5QAQg+gAEIQJABCEDAAQhA8AEIQSABCEFQAQhBgAEIQbABCEHgAQhCEAEIQjABCEOQAQhE8AEIR/ABCEngAQhLwAEITQABCE5gAQhXkAEIWcABCFvAAQhdwAEIXeABCF4AAQheIAEIXkABCF5wAQhegAEIXpABCF7AAQhe0AEIXvABCF8AAQhfIAEIX1ABCF9gAQhfcAEIX6ABCF+wAQhgAAEIYZABCGIgAQhiQAEIYmABCGLwAQhjIAEIY1ABCGNwAQhoAAEIakABCGywAQhu8AEIbyABCG9AAQhvYAEIb4ABCG+gAQhvwAEIb9ABCHAAAQhxkAEIc6ABCHPAAQhz4AEIdAABCHQgAQh0QAEIdGABCHSAAQh0oAEIdrABCHbgAQh3EAEId0ABCHdwAQh3oAEId9ABCHgAAQh4MAEIeFABCIAAAQiAIAEIgEABCIBgAQiAkAEIgKABCICwAQiAwAEIgNABCIDwAQiBEAEIgSABCIEwAQiBUAEIgWABCIkQAQiJMAEIiVABCIlwAQiJoAEIibABCInAAQiJ0AEIieABCIoAAQiKIAEIijABCIpAAQiKYAEIinABCJIgAQiSQAEIknABCJKQAQiSwAEIktABCJLgAQiS8AEIkwABCJMgAQiTQAEIk1ABCJNgAQiTgAEIk5ABCJUgAQiVMAEIlUABCJVgAQidEAEInTABCJ1QAQidcAEInaABCJ2wAQidwAEIndABCJ3gAQieAAEIniABCJ4wAQieQAEInmABCJ5wAQimIAEIpkABCKZgAQimgAEIprABCKbAAQim0AEIpuABCKbwAQinEAEIpzABCKdAAQinUAEIp3ABCKeAAQivMAEIr1ABCK9wAQivkAEIr8ABCK/QAQiv4AEIr/ABCLAAAQiwIAEIsEABCLBQAQiwYAEIsIABCLCQAQi4QAEIuGABCLiAAQi4oAEIuNABCLjgAQi48AEIuQABCLkQAQi5MAEIuVABCLlgAQi5cAEIuZABCLmgAQjBUAEIwXABCMGQAQjBsAEIweABCMHwAQjCAAEIwhABCMIgAQjCQAEIwmABCMJwAQjCgAEIwqABCMKwAQjHQAEIyYABCMvwAQjOMAEIzmABCM6AAQjOoAEIzsABCM7gAQjPAAEIzxABCM9AAQjQ0AEI0qABCNLAAQjS4AEI0wABCNMgAQjTQAEI02ABCNOAAQjVUAEI1YABCNWwAQjV4AEI1hABCNZAAQjWcAEI1qABCNbAAQjecAEI3pABCN6wAQje0AEI3wABCN8QAQjfIAEI3zABCN9AAQjfYAEI34ABCN+QAQjfoAEI38ABCN/QAQjngAEI56ABCOfAAQjn4AEI6BABCOggAQjoMAEI6EABCOhQAQjocAEI6JABCOigAQjosAEI6NABCOjgAQjwkAEI8LABCPDQAQjw8AEI8SABCPEwAQjxQAEI8VABCPFgAQjxgAEI8aABCPGwAQjxwAEI8eABCPHwAQj5oAEI+cABCPngAQj6AAEI+jABCPpAAQj6UAEI+mABCPpwAQj6kAEI+rABCPrAAQj60AEI+vABCPsAAQkCsAEJAtABCQLwAQkDEAEJA0ABCQNQAQkDYAEJA3ABCQOAAQkDoAEJA8ABCQPQAQkD4AEJBAABCQQQAQkLwAEJC+ABCQwAAQkMIAEJDFABCQxgAQkMcAEJDIABCQyQAQkMsAEJDNABCQzgAQkM8AEJDRABCQ0gAQkU0AEJFPABCRUQAQkVMAEJFWABCRVwAQkVgAEJFZABCRWgAQkVwAEJFeABCRXwAQkWAAEJFiABCRYwAQkfYAEJIZABCSOQAQklkAEJJbABCSXQAQkl8AEJJhABCSZAAQkmUAEJJmABCSaQAQkmoAEJJsABCSbQAQkm8AEJJyABCScwAQknQAEJJ3ABCSeAAQkn0AEJKWABCSnwAQkqEAEJKjABCSrAAQkq8AEJKyABCStAAQkv0AEJMhABCTSAAQk2wAEJNvABCTcQAQk3MAEJN1ABCTdwAQk3kAEJN6ABCTfQAQk5YAEJO3ABCTuQAQk7sAEJO9ABCTvwAQk8EAEJPDABCTxQAQk8cAEJPoABCT6wAQk+4AEJPxABCT9AAQk/cAEJP6ABCT/QAQlAAAEJQCABCUfQAQlH8AEJSBABCUgwAQlIYAEJSHABCUiAAQlIkAEJSKABCUjAAQlI4AEJSPABCUkAAQlJIAEJSTABCVDgAQlRAAEJUSABCVFAAQlRcAEJUYABCVGQAQlRoAEJUbABCVHQAQlR8AEJUgABCVIQAQlSMAEJUkABCVnwAQlaEAEJWkABCVpgAQlakAEJWqABCVqwAQlawAEJWtABCVrwAQlbEAEJWyABCVswAQlbUAEJW2ABCVzwAQldAAEJXRABCV0wAQlk4AEJZQABCWUgAQllQAEJZXABCWWAAQllkAEJZaABCWWwAQll0AEJZfABCWYAAQlmEAEJZjABCWZAAQlt8AEJbhABCW4wAQluUAEJboABCW6QAQluoAEJbrABCW7AAQlu4AEJbwABCW8QAQlvIAEJb0ABCW9QAQl3AAEJdyABCXdAAQl3YAEJd5ABCXegAQl3sAEJd8ABCXfQAQl38AEJeBABCXggAQl4MAEJeFABCXhgAQmAEAEJgDABCYBQAQmAcAEJgKABCYCwAQmAwAEJgNABCYDgAQmBAAEJgSABCYEwAQmBQAEJgWABCYFwAQmJIAEJiUABCYlgAQmJgAEJibABCYnAAQmJ0AEJieABCYnwAQmKEAEJijABCYpAAQmKUAEJinABCYqAAQmPEAEJkVABCZPAAQmWAAEJljABCZZQAQmWcAEJlpABCZawAQmW0AEJluABCZcQAQmYoAEJmnABCZqQAQmasAEJmtABCZrwAQmbEAEJmzABCZtQAQmdIAEJnVABCZ2AAQmdsAEJneABCZ4QAQmeQAEJnnABCZ6QAQmmQAEJpmABCaaAAQmmoAEJptABCabgAQmm8AEJpwABCacQAQmnMAEJp1ABCadgAQmncAEJp5ABCaegAQmvUAEJr3ABCa+QAQmvsAEJr+ABCa/wAQmwAAEJsBABCbAgAQmwQAEJsGABCbBwAQmwgAEJsKABCbCwAQm4YAEJuIABCbigAQm4wAEJuPABCbkAAQm5EAEJuSABCbkwAQm5UAEJuXABCbmAAQm5kAEJubABCbnAAQnBcAEJwZABCcGwAQnB0AEJwgABCcIQAQnCIAEJwjABCcJAAQnCYAEJwoABCcKQAQnCoAEJwsABCcLQAQnKgAEJyqABCcrAAQnK4AEJyxABCcsgAQnLMAEJy0ABCctQAQnLcAEJy5ABCcugAQnLsAEJy9ABCcvgAQnTkAEJ07ABCdPgAQnUAAEJ1DABCdRAAQnUUAEJ1GABCdRwAQnUkAEJ1LABCdTAAQnU0AEJ1PABCdUAAQnV8AEJ3aABCd3AAQnd4AEJ3gABCd4wAQneQAEJ3lABCd5gAQnecAEJ3pABCd6wAQnewAEJ3tABCd7wAQnfAAEJ6DABCepgAQnsYAEJ7mABCe6AAQnuoAEJ7sABCe7gAQnvEAEJ7yABCe8wAQnvYAEJ73ABCe+QAQnvoAEJ78ABCe/wAQnwAAEJ8BABCfBAAQnwUAEJ8KABCfIwAQnywAEJ8uABCfMAAQnzkAEJ88ABCfPwAQn0EAEJ+KABCfrgAQn9UAEJ/5ABCf/AAQn/4AEKAAABCgAgAQoAQAEKAGABCgBwAQoAoAEKAjABCgRAAQoEYAEKBIABCgSgAQoEwAEKBOABCgUAAQoFIAEKBUABCgdQAQoHgAEKB7ABCgfgAQoIEAEKCEABCghwAQoIoAEKCNABCgjwAQoQoAEKEMABChDgAQoRAAEKETABChFAAQoRUAEKEWABChFwAQoRkAEKEbABChHAAQoR0AEKEfABChIAAQoZsAEKGdABChnwAQoaEAEKGkABChpQAQoaYAEKGnABChqAAQoaoAEKGsABChrQAQoa4AEKGwABChsQAQoiwAEKIuABCiMQAQojMAEKI2ABCiNwAQojgAEKI5ABCiOgAQojwAEKI+ABCiPwAQokAAEKJCABCiQwAQolwAEKJdABCiXgAQomAAEKLbABCi3QAQot8AEKLhABCi5AAQouUAEKLmABCi5wAQougAEKLqABCi7AAQou0AEKLuABCi8AAQovEAEKNsABCjbgAQo3AAEKNyABCjdQAQo3YAEKN3ABCjeAAQo3kAEKN7ABCjfQAQo34AEKN/ABCjgQAQo4IAEKP9ABCj/wAQpAEAEKQDABCkBgAQpAcAEKQIABCkCQAQpAoAEKQMABCkDgAQpA8AEKQQABCkEgAQpBMAEKSOABCkkAAQpJIAEKSUABCklwAQpJgAEKSZABCkmgAQpJsAEKSdABCknwAQpKAAEKShABCkowAQpKQAEKUfABClIQAQpSMAEKUlABClKAAQpSkAEKUqABClKwAQpSwAEKUuABClMAAQpTEAEKUyABClNAAQpTUAEKV+ABClogAQpckAEKXtABCl8AAQpfIAEKX0ABCl9gAQpfgAEKX6ABCl+wAQpf4AEKYXABCmNAAQpjYAEKY4ABCmOgAQpjwAEKY+ABCmQAAQpkIAEKZfABCmYgAQpmUAEKZoABCmawAQpm4AEKZxABCmdAAQpnYAEKbxABCm8wAQpvUAEKb3ABCm+gAQpvsAEKb8ABCm/QAQpv4AEKcAABCnAgAQpwMAEKcEABCnBgAQpwcAEKeCABCnhAAQp4YAEKeIABCniwAQp4wAEKeNABCnjgAQp48AEKeRABCnkwAQp5QAEKeVABCnlwAQp5gAEKgTABCoFQAQqBcAEKgZABCoHAAQqB0AEKgeABCoHwAQqCAAEKgiABCoJAAQqCUAEKgmABCoKAAQqCkAEKikABCopgAQqKgAEKiqABCorQAQqK4AEKivABCosAAQqLEAEKizABCotQAQqLYAEKi3ABCouQAQqLoAEKk1ABCpNwAQqTkAEKk7ABCpPgAQqT8AEKlAABCpQQAQqUIAEKlEABCpRgAQqUcAEKlIABCpSgAQqUsAEKnGABCpyAAQqcsAEKnNABCp0AAQqdEAEKnSABCp0wAQqdQAEKnWABCp2AAQqdkAEKnaABCp3AAQqd0AEKn1ABCqcAAQqnIAEKp0ABCqdgAQqnkAEKp6ABCqewAQqnwAEKp9ABCqfwAQqoEAEKqCABCqgwAQqoUAEKqGABCrGQAQqzwAEKtcABCrfAAQq34AEKuAABCrggAQq4QAEKuHABCriAAQq4kAEKuMABCrjQAQq48AEKuQABCrkwAQq5YAEKuXABCrmAAQq5sAEKucABCroQAQq7oAEKvDABCrxQAQq8gAEKvRABCr1AAQq9cAEKvZABCsIgAQrEYAEKxtABCskQAQrJQAEKyWABCsmAAQrJoAEKycABCsngAQrJ8AEKyiABCsuwAQrNwAEKzeABCs4AAQrOIAEKzkABCs5gAQrOgAEKzqABCs7AAQrQ0AEK0QABCtEwAQrRYAEK0ZABCtHAAQrR8AEK0iABCtJQAQrScAEK2iABCtpAAQraYAEK2oABCtqwAQrawAEK2tABCtrgAQra8AEK2xABCtswAQrbQAEK21ABCttwAQrbgAEK4zABCuNQAQrjcAEK45ABCuPAAQrj0AEK4+ABCuPwAQrkAAEK5CABCuRAAQrkUAEK5GABCuSAAQrkkAEK7EABCuxgAQrskAEK7LABCuzgAQrs8AEK7QABCu0QAQrtIAEK7UABCu1gAQrtcAEK7YABCu2gAQrtsAEK70ABCu9QAQrvYAEK74ABCvcwAQr3UAEK93ABCveQAQr3wAEK99ABCvfgAQr38AEK+AABCvggAQr4QAEK+FABCvhgAQr4gAEK+JABCwBAAQsAYAELAIABCwCgAQsA0AELAOABCwDwAQsBAAELARABCwEwAQsBUAELAWABCwFwAQsBkAELAaABCwlQAQsJcAELCZABCwmwAQsJ4AELCfABCwoAAQsKEAELCiABCwpAAQsKYAELCnABCwqAAQsKoAELCrABCxJgAQsSgAELEqABCxLAAQsS8AELEwABCxMQAQsTIAELEzABCxNQAQsTcAELE4ABCxOQAQsTsAELE8ABCxtwAQsbkAELG7ABCxvQAQscAAELHBABCxwgAQscMAELHEABCxxgAQscgAELHJABCxygAQscwAELHNABCyFgAQsjoAELJhABCyhQAQsogAELKLABCyjQAQso8AELKRABCykwAQspQAELKXABCysAAQss0AELLQABCy0wAQstYAELLZABCy3AAQst8AELLiABCy/wAQswIAELMFABCzCAAQswsAELMOABCzEQAQsxQAELMWABCzkQAQs5MAELOWABCzmAAQs5sAELOcABCznQAQs54AELOfABCzoQAQs6QAELOlABCzpgAQs6gAELOpABC0JAAQtCYAELQpABC0KwAQtC4AELQvABC0MAAQtDEAELQyABC0NAAQtDcAELQ4ABC0OQAQtDsAELQ8ABC0twAQtLkAELS8ABC0vgAQtMEAELTCABC0wwAQtMQAELTFABC0xwAQtMoAELTLABC0zAAQtM4AELTPABC1SgAQtUwAELVPABC1UQAQtVQAELVVABC1VgAQtVcAELVYABC1WgAQtV0AELVeABC1XwAQtWEAELViABC15QAQtgkAELYtABC2UAAQtncAELaXABC2vgAQtuUAELcFABC3KQAQt00AELdPABC3UgAQt1QAELdWABC3WAAQt1sAELdeABC3YAAQt2IAELdlABC3ZwAQt2kAELdsABC3bwAQt3AAELd1ABC3jgAQt5MAELeVABC3mgAQt50AELefABC36AAQuAwAELgzABC4VwAQuFoAELhcABC4XgAQuGAAELhiABC4ZAAQuGUAELhoABC4gQAQuKYAELioABC4qgAQuKwAELiuABC4sAAQuLIAELi0ABC4tgAQuLgAELjdABC44AAQuOMAELjmABC46QAQuOwAELjvABC48gAQuPUAELj4ABC4+gAQuXUAELl3ABC5egAQuXwAELl/ABC5gAAQuYEAELmCABC5gwAQuYUAELmHABC5iAAQuYkAELmLABC5jAAQuZ0AELmeABC5oAAQuhsAELodABC6HwAQuiEAELokABC6JQAQuiYAELonABC6KAAQuioAELosABC6LQAQui4AELowABC6MQAQuqwAELquABC6sQAQurMAELq2ABC6twAQurgAELq5ABC6ugAQurwAELq+ABC6vwAQusAAELrCABC6wwAQutQAELrVABC61wAQu1IAELtUABC7VgAQu1gAELtbABC7XAAQu10AELteABC7XwAQu2EAELtjABC7ZAAQu2UAELtnABC7aAAQu+MAELvlABC76AAQu+oAELvtABC77gAQu+8AELvwABC78QAQu/MAELv1ABC79gAQu/cAELv5ABC7+gAQvAsAELwMABC8DgAQvIkAELyLABC8jQAQvI8AELySABC8kwAQvJQAELyVABC8lgAQvJgAELyaABC8mwAQvJwAELyeABC8nwAQvRoAEL0cABC9HwAQvSEAEL0kABC9JQAQvSYAEL0nABC9KAAQvSoAEL0sABC9LQAQvS4AEL0wABC9MQAQvUoAEL1LABC9TAAQvU4AEL3JABC9ywAQvc0AEL3PABC90gAQvdMAEL3UABC91QAQvdYAEL3YABC92gAQvdsAEL3cABC93gAQvd8AEL5aABC+XAAQvl8AEL5hABC+ZAAQvmUAEL5mABC+ZwAQvmgAEL5qABC+bAAQvm0AEL5uABC+cAAQvnEAEL6kABC+vQAQvsoAEL7NABC+0AAQvtMAEL7gABC+4wAQvuYAEL7pABC+6wAQvv4AEL8QABC/IwAQv7YAEL/ZABC/+QAQwBkAEMAbABDAHQAQwB8AEMAhABDAJAAQwCUAEMAmABDAKQAQwCoAEMAsABDALQAQwC8AEMAyABDAMwAQwDQAEMA3ABDAOAAQwD0AEMBWABDAXwAQwGEAEMBjABDAbAAQwG8AEMByABDAdAAQwL0AEMDhABDBCAAQwSwAEMEvABDBMQAQwTMAEME1ABDBNwAQwTkAEME6ABDBPQAQwVYAEMF3ABDBeQAQwXsAEMF9ABDBfwAQwYEAEMGDABDBhQAQwYcAEMGoABDBqwAQwa4AEMGxABDBtAAQwbcAEMG6ABDBvQAQwcAAEMHCABDCPQAQwj8AEMJBABDCQwAQwkYAEMJHABDCSAAQwkkAEMJKABDCTAAQwk4AEMJPABDCUAAQwlIAEMJTABDCzgAQwtAAEMLSABDC1AAQwtcAEMLYABDC2QAQwtoAEMLbABDC3QAQwt8AEMLgABDC4QAQwuMAEMLkABDDXwAQw2EAEMNkABDDZgAQw2kAEMNqABDDawAQw2wAEMNtABDDbwAQw3EAEMNyABDDcwAQw3UAEMN2ABDDjwAQw5AAEMORABDDkwAQxA4AEMQQABDEEgAQxBQAEMQXABDEGAAQxBkAEMQaABDEGwAQxB0AEMQfABDEIAAQxCEAEMQjABDEJAAQxJ8AEMShABDEowAQxKUAEMSoABDEqQAQxKoAEMSrABDErAAQxK4AEMSwABDEsQAQxLIAEMS0ABDEtQAQxTAAEMUyABDFNAAQxTYAEMU5ABDFOgAQxTsAEMU8ABDFPQAQxT8AEMVBABDFQgAQxUMAEMVFABDFRgAQxcEAEMXDABDFxQAQxccAEMXKABDFywAQxcwAEMXNABDFzgAQxdAAEMXSABDF0wAQxdQAEMXWABDF1wAQxlIAEMZUABDGVgAQxlgAEMZbABDGXAAQxl0AEMZeABDGXwAQxmEAEMZjABDGZAAQxmUAEMZnABDGaAAQxrEAEMbVABDG/AAQxyAAEMcjABDHJQAQxycAEMcpABDHKwAQxy0AEMcuABDHMQAQx0oAEMdnABDHaQAQx2sAEMdtABDHbwAQx3EAEMdzABDHdQAQx5IAEMeVABDHmAAQx5sAEMeeABDHoQAQx6QAEMenABDHqQAQyCQAEMgmABDIKAAQyCoAEMgtABDILgAQyC8AEMgwABDIMQAQyDMAEMg1ABDINgAQyDcAEMg5ABDIOgAQyLUAEMi3ABDIuQAQyLsAEMi+ABDIvwAQyMAAEMjBABDIwgAQyMQAEMjGABDIxwAQyMgAEMjKABDIywAQyUYAEMlIABDJSgAQyUwAEMlPABDJUAAQyVEAEMlSABDJUwAQyVUAEMlXABDJWAAQyVkAEMlbABDJXAAQydcAEMnZABDJ2wAQyd0AEMngABDJ4QAQyeIAEMnjABDJ5AAQyeYAEMnoABDJ6QAQyeoAEMnsABDJ7QAQymgAEMpqABDKbAAQym4AEMpxABDKcgAQynMAEMp0ABDKdQAQyncAEMp5ABDKegAQynsAEMp9ABDKfgAQyvkAEMr7ABDK/gAQywAAEMsDABDLBAAQywUAEMsGABDLBwAQywkAEMsLABDLDAAQyw0AEMsPABDLEAAQyx8AEMuaABDLnAAQy54AEMugABDLowAQy6QAEMulABDLpgAQy6cAEMupABDLqwAQy6wAEMutABDLrwAQy7AAEMxDABDMZgAQzIYAEMymABDMqAAQzKoAEMysABDMrgAQzLEAEMyyABDMswAQzLYAEMy3ABDMuQAQzLoAEMy8ABDMvwAQzMAAEMzBABDMxAAQzMUAEMzKABDM4wAQzOwAEMzuABDM8AAQzPkAEMz8ABDM/wAQzQEAEM1KABDNbgAQzZUAEM25ABDNvAAQzb4AEM3AABDNwgAQzcQAEM3GABDNxwAQzcoAEM3jABDOBAAQzgYAEM4IABDOCgAQzgwAEM4OABDOEAAQzhIAEM4UABDONQAQzjgAEM47ABDOPgAQzkEAEM5EABDORwAQzkoAEM5NABDOTwAQzsoAEM7MABDOzgAQztAAEM7TABDO1AAQztUAEM7WABDO1wAQztkAEM7bABDO3AAQzt0AEM7fABDO4AAQz1sAEM9dABDPXwAQz2EAEM9kABDPZQAQz2YAEM9nABDPaAAQz2oAEM9sABDPbQAQz24AEM9wABDPcQAQz+wAEM/uABDP8QAQz/MAEM/2ABDP9wAQz/gAEM/5ABDP+gAQz/wAEM/+ABDP/wAQ0AAAENACABDQAwAQ0BwAENAdABDQHgAQ0CAAENCbABDQnQAQ0J8AENChABDQpAAQ0KUAENCmABDQpwAQ0KgAENCqABDQrAAQ0K0AENCuABDQsAAQ0LEAENEsABDRLgAQ0TAAENEyABDRNQAQ0TYAENE3ABDROAAQ0TkAENE7ABDRPQAQ0T4AENE/ABDRQQAQ0UIAENG9ABDRvwAQ0cEAENHDABDRxgAQ0ccAENHIABDRyQAQ0coAENHMABDRzgAQ0c8AENHQABDR0gAQ0dMAENJOABDSUAAQ0lIAENJUABDSVwAQ0lgAENJZABDSWgAQ0lsAENJdABDSXwAQ0mAAENJhABDSYwAQ0mQAENLfABDS4QAQ0uMAENLlABDS6AAQ0ukAENLqABDS6wAQ0uwAENLuABDS8AAQ0vEAENLyABDS9AAQ0vUAENM+ABDTYgAQ04kAENOtABDTsAAQ07IAENO0ABDTtgAQ07gAENO6ABDTuwAQ074AENPXABDT9AAQ0/YAENP4ABDT+gAQ0/wAENP+ABDUAAAQ1AIAENQfABDUIgAQ1CUAENQoABDUKwAQ1C4AENQxABDUNAAQ1DYAENSxABDUswAQ1LUAENS3ABDUugAQ1LsAENS8ABDUvQAQ1L4AENTAABDUwgAQ1MMAENTEABDUxgAQ1McAENVCABDVRAAQ1UYAENVIABDVSwAQ1UwAENVNABDVTgAQ1U8AENVRABDVUwAQ1VQAENVVABDVVwAQ1VgAENXTABDV1QAQ1dcAENXZABDV3AAQ1d0AENXeABDV3wAQ1eAAENXiABDV5AAQ1eUAENXmABDV6AAQ1ekAENZkABDWZgAQ1mgAENZqABDWbQAQ1m4AENZvABDWcAAQ1nEAENZzABDWdQAQ1nYAENZ3ABDWeQAQ1noAENb1ABDW9wAQ1vkAENb7ABDW/gAQ1v8AENcAABDXAQAQ1wIAENcEABDXBgAQ1wcAENcIABDXCgAQ1wsAENeGABDXiAAQ14sAENeNABDXkAAQ15EAENeSABDXkwAQ15QAENeWABDXmAAQ15kAENeaABDXnAAQ150AENe8ABDYNwAQ2DkAENg7ABDYPQAQ2EAAENhBABDYQgAQ2EMAENhEABDYRgAQ2EgAENhJABDYSgAQ2EwAENhNABDY4AAQ2QMAENkjABDZQwAQ2UUAENlHABDZSQAQ2UsAENlOABDZTwAQ2VAAENlTABDZVAAQ2VYAENlXABDZWgAQ2V0AENleABDZXwAQ2WIAENljABDZaAAQ2YEAENmKABDZjAAQ2Y8AENmYABDZmwAQ2Z4AENmgABDZ6QAQ2g0AENo0ABDaWAAQ2lsAENpdABDaXwAQ2mEAENpjABDaZQAQ2mYAENppABDaggAQ2qMAENqlABDapwAQ2qkAENqrABDarQAQ2q8AENqxABDaswAQ2tQAENrXABDa2gAQ2t0AENrgABDa4wAQ2uYAENrpABDa7AAQ2u4AENtpABDbawAQ220AENtvABDbcgAQ23MAENt0ABDbdQAQ23YAENt4ABDbegAQ23sAENt8ABDbfgAQ238AENv6ABDb/AAQ2/4AENwAABDcAwAQ3AQAENwFABDcBgAQ3AcAENwJABDcCwAQ3AwAENwNABDcDwAQ3BAAENyLABDcjQAQ3JAAENySABDclQAQ3JYAENyXABDcmAAQ3JkAENybABDcnQAQ3J4AENyfABDcoQAQ3KIAENy7ABDcvAAQ3L0AENy/ABDdOgAQ3TwAEN0+ABDdQAAQ3UMAEN1EABDdRQAQ3UYAEN1HABDdSQAQ3UsAEN1MABDdTQAQ3U8AEN1QABDdywAQ3c0AEN3PABDd0QAQ3dQAEN3VABDd1gAQ3dcAEN3YABDd2gAQ3dwAEN3dABDd3gAQ3eAAEN3hABDeXAAQ3l4AEN5gABDeYgAQ3mUAEN5mABDeZwAQ3mgAEN5pABDeawAQ3m0AEN5uABDebwAQ3nEAEN5yABDe7QAQ3u8AEN7xABDe8wAQ3vYAEN73ABDe+AAQ3vkAEN76ABDe/AAQ3v4AEN7/ABDfAAAQ3wIAEN8DABDffgAQ34AAEN+CABDfhAAQ34cAEN+IABDfiQAQ34oAEN+LABDfjQAQ348AEN+QABDfkQAQ35MAEN+UABDf3QAQ4AEAEOAoABDgTAAQ4E8AEOBSABDgVAAQ4FYAEOBYABDgWgAQ4FsAEOBeABDgdwAQ4JQAEOCXABDgmgAQ4J0AEOCgABDgowAQ4KYAEOCpABDgxgAQ4MkAEODMABDgzwAQ4NIAEODVABDg2AAQ4NsAEODdABDhWAAQ4VoAEOFdABDhXwAQ4WIAEOFjABDhZAAQ4WUAEOFmABDhaAAQ4WsAEOFsABDhbQAQ4W8AEOFwABDh6wAQ4e0AEOHwABDh8gAQ4fUAEOH2ABDh9wAQ4fgAEOH5ABDh+wAQ4f4AEOH/ABDiAAAQ4gIAEOIDABDifgAQ4oAAEOKDABDihQAQ4ogAEOKJABDiigAQ4osAEOKMABDijgAQ4pEAEOKSABDikwAQ4pUAEOKWABDjEQAQ4xMAEOMWABDjGAAQ4xsAEOMcABDjHQAQ4x4AEOMfABDjIQAQ4yQAEOMlABDjJgAQ4ygAEOMpABDjpAAQ46YAEOOoABDjqgAQ460AEOOuABDjrwAQ47AAEOOxABDjswAQ47YAEOO3ABDjuAAQ47oAEOO7ABDkNgAQ5DgAEOQ6ABDkPAAQ5D8AEORAABDkQQAQ5EIAEORDABDkRQAQ5EgAEORJABDkSgAQ5EwAEORNABDkyAAQ5MoAEOTNABDkzwAQ5NIAEOTTABDk1AAQ5NUAEOTWABDk2AAQ5NsAEOTcABDk3QAQ5N8AEOTgABDk8QAQ5PIAEOT0ABDlbwAQ5XEAEOVzABDldQAQ5XgAEOV5ABDlegAQ5XsAEOV8ABDlfgAQ5YEAEOWCABDlgwAQ5YUAEOWGABDmAQAQ5gMAEOYFABDmBwAQ5goAEOYLABDmDAAQ5g0AEOYOABDmEAAQ5hMAEOYUABDmFQAQ5hcAEOYYABDmkwAQ5pUAEOaYABDmmgAQ5p0AEOaeABDmnwAQ5qAAEOahABDmowAQ5qYAEOanABDmqAAQ5qoAEOarABDnPgAQ52E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AEQJXABECWQARAloAEQLVABEC1wARAtkAEQLbABEC3gARAt8AEQLgABEC4QARAuIAEQLkABEC5gARAucAEQLoABEC6gARAusAEQM0ABEDWAARA38AEQOjABEDpgARA6gAEQOqABEDrAARA64AEQOwABEDsQARA7QAEQPNABED6gARA+wAEQPuABED8AARA/IAEQP0ABED9gARA/gAEQQVABEEGAARBBsAEQQeABEEIQARBCQAEQQnABEEKgARBCwAEQSnABEEqQARBKsAEQStABEEsAARBLEAEQSyABEEswARBLQAEQS2ABEEuAARBLkAEQS6ABEEvAARBL0AEQU4ABEFOgARBTwAEQU+ABEFQQARBUIAEQVDABEFRAARBUUAEQVHABEFSQARBUoAEQVLABEFTQARBU4AEQXJABEFywARBc0AEQXPABEF0gARBdMAEQXUABEF1QARBdYAEQXYABEF2gARBdsAEQXcABEF3gARBd8AEQZaABEGXAARBl4AEQZgABEGYwARBmQAEQZlABEGZgARBmcAEQZpABEGawARBmwAEQZtABEGbwARBnAAEQbrABEG7QARBu8AEQbxABEG9AARBvUAEQb2ABEG9wARBvgAEQb6ABEG/AARBv0AEQb+ABEHAAARBwEAEQd8ABEHfgARB4EAEQeDABEHhgARB4cAEQeIABEHiQARB4oAEQeMABEHjgARB48AEQeQABEHkgARB5MAEQeiABEIHQARCB8AEQghABEIIwARCCYAEQgnABEIKAARCCkAEQgqABEILAARCC4AEQgvABEIMAARCDIAEQgzABEIxgARCOkAEQkJABEJKQARCSsAEQktABEJLwARCTEAEQk0ABEJNQARCTYAEQk5ABEJOgARCTwAEQk9ABEJPwARCUIAEQlDABEJRAARCUcAEQlIABEJTQARCWYAEQlvABEJcQARCXMAEQl8ABEJfwARCYIAEQmEABEJzQARCfEAEQoYABEKPAARCj8AEQpBABEKQwARCkUAEQpHABEKSQARCkoAEQpNABEKZgARCocAEQqJABEKiwARCo0AEQqPABEKkQARCpMAEQqVABEKlwARCrgAEQq7ABEKvgARCsEAEQrEABEKxwARCsoAEQrNABEK0AARCtIAEQtNABELTwARC1EAEQtTABELVgARC1cAEQtYABELWQARC1oAEQtcABELXgARC18AEQtgABELYgARC2MAEQveABEL4AARC+IAEQvkABEL5wARC+gAEQvpABEL6gARC+sAEQvtABEL7wARC/AAEQvxABEL8wARC/QAEQxvABEMcQARDHQAEQx2ABEMeQARDHoAEQx7ABEMfAARDH0AEQx/ABEMgQARDIIAEQyDABEMhQARDIYAEQyfABEMoAARDKEAEQyjABENHgARDSAAEQ0iABENJAARDScAEQ0oABENKQARDSoAEQ0rABENLQARDS8AEQ0wABENMQARDTMAEQ00ABENrwARDbEAEQ2zABENtQARDbgAEQ25ABENugARDbsAEQ28ABENvgARDcAAEQ3BABENwgARDcQAEQ3FABEOQAARDkIAEQ5EABEORgARDkkAEQ5KABEOSwARDkwAEQ5NABEOTwARDlEAEQ5SABEOUwARDlUAEQ5WABEO0QARDtMAEQ7VABEO1wARDtoAEQ7bABEO3AARDt0AEQ7eABEO4AARDuIAEQ7jABEO5AARDuYAEQ7nABEPYgARD2QAEQ9mABEPaAARD2sAEQ9sABEPbQARD24AEQ9vABEPcQARD3MAEQ90ABEPdQARD3cAEQ94ABEPwQARD+UAERAMABEQMAAREDMAERA1ABEQNwAREDkAERA7ABEQPQARED4AERBBABEQWgAREHcAERB5ABEQewAREH0AERB/ABEQgQAREIMAERCFABEQogAREKUAERCoABEQqwAREK4AERCxABEQtAARELcAERC5ABERNAARETYAERE4ABEROgARET0AERE+ABERPwAREUAAERFBABERQwAREUUAERFGABERRwAREUkAERFKABERxQAREccAERHJABERywAREc4AERHPABER0AAREdEAERHSABER1AAREdYAERHXABER2AAREdoAERHbABESVgARElgAERJaABESXAAREl8AERJgABESYQAREmIAERJjABESZQAREmcAERJoABESaQAREmsAERJsABES5wAREukAERLrABES7QAREvAAERLxABES8gAREvMAERL0ABES9gAREvgAERL5ABES+gAREvwAERL9ABETeAARE3oAERN8ABETfgARE4EAEROCABETgwARE4QAEROFABEThwARE4kAEROKABETiwARE40AEROOABEUCQARFAsAERQOABEUEAARFBMAERQUABEUFQARFBYAERQXABEUGQARFBsAERQcABEUHQARFB8AERQgABEUPwARFLoAERS8ABEUvgARFMAAERTDABEUxAARFMUAERTGABEUxwARFMkAERTLABEUzAARFM0AERTPABEU0AARFWMAERWGABEVpgARFcYAERXIABEVygARFcwAERXOABEV0QARFdIAERXTABEV1gARFdcAERXZABEV2gARFdwAERXfABEV4AARFeEAERXkABEV5QARFeoAERYDABEWDAARFg4AERYQABEWGQARFhwAERYfABEWIQARFmoAERaOABEWtQARFtkAERbcABEW3gARFuAAERbiABEW5AARFuYAERbnABEW6gARFwMAERckABEXJgARFygAERcqABEXLAARFy4AERcwABEXMgARFzQAERdVABEXWAARF1sAERdeABEXYQARF2QAERdnABEXagARF20AERdvABEX6gARF+wAERfuABEX8AARF/MAERf0ABEX9QARF/YAERf3ABEX+QARF/sAERf8ABEX/QARF/8AERgAABEYewARGH0AERh/ABEYgQARGIQAERiFABEYhgARGIcAERiIABEYigARGIwAERiNABEYjgARGJAAERiRABEZDAARGQ4AERkRABEZEwARGRYAERkXABEZGAARGRkAERkaABEZHAARGR4AERkfABEZIAARGSIAERkjABEZPAARGT0AERk+ABEZQAARGbsAERm9ABEZvwARGcEAERnEABEZxQARGcYAERnHABEZyAARGcoAERnMABEZzQARGc4AERnQABEZ0QARGkwAERpOABEaUAARGlIAERpVABEaVgARGlcAERpYABEaWQARGlsAERpdABEaXgARGl8AERphABEaYgARGt0AERrfABEa4QARGuMAERrmABEa5wARGugAERrpABEa6gARGuwAERruABEa7wARGvAAERryABEa8wARG24AERtwABEbcgARG3QAERt3ABEbeAARG3kAERt6ABEbewARG30AERt/ABEbgAARG4EAERuDABEbhAARG/8AERwBABEcAwARHAUAERwIABEcCQARHAoAERwLABEcDAARHA4AERwQABEcEQARHBIAERwUABEcFQARHF4AERyCABEcqQARHM0AERzQABEc0gARHNQAERzWABEc2AARHNoAERzbABEc3gARHPcAER0UABEdFgARHRgAER0aABEdHAARHR4AER0gABEdIgARHT8AER1CABEdRQARHUgAER1LABEdTgARHVEAER1UABEdVgARHdEAER3TABEd1QARHdcAER3aABEd2wARHdwAER3dABEd3gARHeAAER3iABEd4wARHeQAER3mABEd5wARHmIAER5kABEeZgARHmgAER5rABEebAARHm0AER5uABEebwARHnEAER5zABEedAARHnUAER53ABEeeAARHvMAER71ABEe9wARHvkAER78ABEe/QARHv4AER7/ABEfAAARHwIAER8EABEfBQARHwYAER8IABEfCQARH4QAER+GABEfiAARH4oAER+NABEfjgARH48AER+QABEfkQARH5MAER+VABEflgARH5cAER+ZABEfmgARIBUAESAXABEgGQARIBsAESAeABEgHwARICAAESAhABEgIgARICQAESAmABEgJwARICgAESAqABEgKwARIKYAESCoABEgqwARIK0AESCwABEgsQARILIAESCzABEgtAARILYAESC4ABEguQARILoAESC8ABEgvQARINwAESFXABEhWQARIVsAESFdABEhYAARIWEAESFiABEhYwARIWQAESFmABEhaAARIWkAESFqABEhbAARIW0AESIAABEiIwARIkMAESJjABEiZQARImcAESJpABEiawARIm4AESJvABEicAARInMAESJ0ABEidgARIncAESJ6ABEifQARIn4AESJ/ABEiggARIoMAESKIABEioQARIqoAESKsABEirwARIrgAESK7ABEivgARIsAAESMJABEjLQARI1QAESN4ABEjewARI30AESN/ABEjgQARI4MAESOFABEjhgARI4kAESOiABEjwwARI8UAESPHABEjyQARI8sAESPNABEjzwARI9EAESPTABEj9AARI/cAESP6ABEj/QARJAAAESQDABEkBgARJAkAESQMABEkDgARJIkAESSLABEkjQARJI8AESSSABEkkwARJJQAESSVABEklgARJJgAESSaABEkmwARJJwAESSeABEknwARJRoAESUcABElHgARJSAAESUjABElJAARJSUAESUmABElJwARJSkAESUrABElLAARJS0AESUvABElMAARJasAESWtABElsAARJbIAESW1ABEltgARJbcAESW4ABEluQARJbsAESW9ABElvgARJb8AESXBABElwgARJdsAESXcABEl3QARJd8AESZaABEmXAARJl4AESZgABEmYwARJmQAESZlABEmZgARJmcAESZpABEmawARJmwAESZtABEmbwARJnAAESbrABEm7QARJu8AESbxABEm9AARJvUAESb2ABEm9wARJvgAESb6ABEm/AARJv0AESb+ABEnAAARJwEAESd8ABEnfgARJ4AAESeCABEnhQARJ4YAESeHABEniAARJ4kAESeLABEnjQARJ44AESePABEnkQARJ5IAESgNABEoDwARKBEAESgTABEoFgARKBcAESgYABEoGQARKBoAESgcABEoHgARKB8AESggABEoIgARKCMAESieABEooAARKKIAESikABEopwARKKgAESipABEoqgARKKsAESitABEorwARKLAAESixABEoswARKLQAESj9ABEpIQARKUgAESlsABEpbwARKXIAESl0ABEpdgARKXgAESl6ABEpewARKX4AESmXABEptAARKbcAESm6ABEpvQARKcAAESnDABEpxgARKckAESnmABEp6QARKewAESnvABEp8gARKfUAESn4ABEp+wARKf0AESp4ABEqegARKn0AESp/ABEqggARKoMAESqEABEqhQARKoYAESqIABEqiwARKowAESqNABEqjwARKpAAESsLABErDQARKxAAESsSABErFQARKxYAESsXABErGAARKxkAESsbABErHgARKx8AESsgABErIgARKyMAESueABEroAARK6MAESulABErqAARK6kAESuqABErqwARK6wAESuuABErsQARK7IAESuzABErtQARK7YAESwxABEsMwARLDYAESw4ABEsOwARLDwAESw9ABEsPgARLD8AESxBABEsRAARLEUAESxGABEsSAARLEkAESzEABEsxgARLMgAESzKABEszQARLM4AESzPABEs0AARLNEAESzTABEs1gARLNcAESzYABEs2gARLNsAES1WABEtWAARLVoAES1cABEtXwARLWAAES1hABEtYgARLWMAES1lABEtaAARLWkAES1qABEtbAARLW0AES3oABEt6gARLe0AES3vABEt8gARLfMAES30ABEt9QARLfYAES34ABEt+wARLfwAES39ABEt/wARLgAAES4RABEuEgARLhQAES6PABEukQARLpMAES6VABEumAARLpkAES6aABEumwARLpwAES6eABEuoQARLqIAES6jABEupQARLqYAES8hABEvIwARLyUAES8nABEvKgARLysAES8sABEvLQARLy4AES8wABEvMwARLzQAES81ABEvNwARLzgAES+zABEvtQARL7gAES+6ABEvvQARL74AES+/ABEvwAARL8EAES/DABEvxgARL8cAES/IABEvygARL8sAETBeABEwgQARMKEAETDBABEwwwARMMUAETDHABEwyQARMMwAETDNABEwzgARMNEAETDSABEw1AARMNUAETDYABEw2wARMNwAETDdABEw4AARMOEAETDmABEw/wARMQgAETEKABExDQARMRYAETEZABExHAARMR4AETFnABExiwARMbIAETHWABEx2QARMdsAETHdABEx3wARMeEAETHjABEx5AARMecAETIAABEyIQARMiMAETIlABEyJwARMikAETIrABEyLQARMi8AETIxABEyUgARMlUAETJYABEyWwARMl4AETJhABEyZAARMmcAETJqABEybAARMucAETLpABEy6wARMu0AETLwABEy8QARMvIAETLzABEy9AARMvYAETL4ABEy+QARMvoAETL8ABEy/QARM3gAETN6ABEzfAARM34AETOBABEzggARM4MAETOEABEzhQARM4cAETOJABEzigARM4sAETONABEzjgARNAkAETQLABE0DgARNBAAETQTABE0FAARNBUAETQWABE0FwARNBkAETQbABE0HAARNB0AETQfABE0IAARNDkAETQ6ABE0OwARND0AETS4ABE0ugARNLwAETS+ABE0wQARNMIAETTDABE0xAARNMUAETTHABE0yQARNMoAETTLABE0zQARNM4AETVJABE1SwARNU0AETVPABE1UgARNVMAETVUABE1VQARNVYAETVYABE1WgARNVsAETVcABE1XgARNV8AETXaABE13AARNd4AETXgABE14wARNeQAETXlABE15gARNecAETXpABE16wARNewAETXtABE17wARNfAAETZrABE2bQARNm8AETZxABE2dAARNnUAETZ2ABE2dwARNngAETZ6ABE2fAARNn0AETZ+ABE2gAARNoEAETb8ABE2/gARNwAAETcCABE3BQARNwYAETcHABE3CAARNwkAETcLABE3DQARNw4AETcPABE3EQARNxIAETdbABE3fwARN6YAETfKABE3zQARN9AAETfSABE31AARN9YAETfYABE32QARN9wAETf1ABE4EgAROBUAETgYABE4GwAROB4AETghABE4JAAROCcAEThEABE4RwAROEoAEThNABE4UAAROFMAEThWABE4WQAROFsAETjWABE42AARONsAETjdABE44AAROOEAETjiABE44wAROOQAETjmABE46QAROOoAETjrABE47QAROO4AETlpABE5awAROW4AETlwABE5cwAROXQAETl1ABE5dgAROXcAETl5ABE5fAAROX0AETl+ABE5gAAROYEAETn8ABE5/gAROgEAEToDABE6BgAROgcAEToIABE6CQAROgoAEToMABE6DwAROhAAEToRABE6EwAROhQAETqPABE6kQAROpQAETqWABE6mQAROpoAETqbABE6nAAROp0AETqfABE6ogAROqMAETqkABE6pgAROqcAETsiABE7JAAROyYAETsoABE7KwAROywAETstABE7LgAROy8AETsxABE7NAAROzUAETs2ABE7OAAROzkAETu0ABE7tgARO7gAETu6ABE7vQARO74AETu/ABE7wAARO8EAETvDABE7xgARO8cAETvIABE7ygARO8sAETxGABE8SAARPEsAETxNABE8UAARPFEAETxSABE8UwARPFQAETxWABE8WQARPFoAETxbABE8XQARPF4AETzxABE9FAARPTQAET1UABE9VgARPVgAET1aABE9XAARPV8AET1gABE9YQARPWQAET1lABE9ZwARPWgAET1qABE9bQARPW4AET1vABE9cgARPXMAET18ABE9lQARPZ4AET2gABE9ogARPasAET2uABE9sQARPbMAET38ABE+IAARPkcAET5rABE+bgARPnAAET5yABE+dAARPnYAET54ABE+eQARPnwAET6VABE+tgARPrgAET66ABE+vAARPr4AET7AABE+wgARPsQAET7GABE+5wARPuoAET7tABE+8AARPvMAET72ABE++QARPvwAET7/ABE/AQARP3wAET9+ABE/gAARP4IAET+FABE/hgARP4cAET+IABE/iQARP4sAET+NABE/jgARP48AET+RABE/kgARQA0AEUAPABFAEQARQBMAEUAWABFAFwARQBgAEUAZABFAGgARQBwAEUAeABFAHwARQCAAEUAiABFAIwARQJ4AEUCgABFAowARQKUAEUCoABFAqQARQKoAEUCrABFArAARQK4AEUCwABFAsQARQLIAEUC0ABFAtQARQM4AEUDPABFA0AARQNIAEUFNABFBTwARQVEAEUFTABFBVgARQVcAEUFYABFBWQARQVoAEUFcABFBXgARQV8AEUFgABFBYgARQWMAEUHeABFB4AARQeIAEUHkABFB5wARQegAEUHpABFB6gARQesAEUHtABFB7wARQfAAEUHxABFB8wARQfQAEUJvABFCcQARQnMAEUJ1ABFCeAARQnkAEUJ6ABFCewARQnwAEUJ+ABFCgAARQoEAEUKCABFChAARQoUAEUMAABFDAgARQwQAEUMGABFDCQARQwoAEUMLABFDDAARQw0AEUMPABFDEQARQxIAEUMTABFDFQARQxYAEUORABFDkwARQ5UAEUOXABFDmgARQ5sAEUOcABFDnQARQ54AEUOgABFDogARQ6MAEUOkABFDpgARQ6cAEUPwABFEFAARRDsAEURfABFEYgARRGQAEURmABFEaAARRGoAEURsABFEbQARRHAAEUSJABFEpgARRKgAEUSqABFErAARRK4AEUSwABFEsgARRLQAEUTRABFE1AARRNcAEUTaABFE3QARROAAEUTjABFE5gARROgAEUVjABFFZQARRWcAEUVpABFFbAARRW0AEUVuABFFbwARRXAAEUVyABFFdAARRXUAEUV2ABFFeAARRXkAEUX0ABFF9gARRfgAEUX6ABFF/QARRf4AEUX/ABFGAAARRgEAEUYDABFGBQARRgYAEUYHABFGCQARRgoAEUaFABFGhwARRokAEUaLABFGjgARRo8AEUaQABFGkQARRpIAEUaUABFGlgARRpcAEUaYABFGmgARRpsAEUcWABFHGAARRxoAEUccABFHHwARRyAAEUchABFHIgARRyMAEUclABFHJwARRygAEUcpABFHKwARRywAEUenABFHqQARR6sAEUetABFHsAARR7EAEUeyABFHswARR7QAEUe2ABFHuAARR7kAEUe6ABFHvAARR70AEUg4ABFIOgARSDwAEUg+ABFIQQARSEIAEUhDABFIRAARSEUAEUhHABFISQARSEoAEUhLABFITQARSE4AEUjJABFIywARSM0AEUjPABFI0gARSNMAEUjUABFI1QARSNYAEUjYABFI2gARSNsAEUjcABFI3gARSN8AEUlyABFJlQARSbUAEUnVABFJ1wARSdkAEUnbABFJ3QARSeAAEUnhABFJ4gARSeUAEUnmABFJ6AARSekAEUnrABFJ7gARSe8AEUnwABFJ8wARSfQAEUn5ABFKEgARShsAEUodABFKHwARSigAEUorABFKLgARSjAAEUp5ABFKnQARSsQAEUroABFK6wARSu0AEUrvABFK8QARSvMAEUr1ABFK9gARSvkAEUsSABFLMwARSzUAEUs3ABFLOQARSzsAEUs9ABFLPwARS0EAEUtDABFLZAARS2cAEUtqABFLbQARS3AAEUtzABFLdgARS3kAEUt8ABFLfgARS/kAEUv7ABFL/QARS/8AEUwCABFMAwARTAQAEUwFABFMBgARTAgAEUwKABFMCwARTAwAEUwOABFMDwARTIoAEUyMABFMjgARTJAAEUyTABFMlAARTJUAEUyWABFMlwARTJkAEUybABFMnAARTJ0AEUyfABFMoAARTRsAEU0dABFNIAARTSIAEU0lABFNJgARTScAEU0oABFNKQARTSsAEU0tABFNLgARTS8AEU0xABFNMgARTUsAEU1MABFNTQARTU8AEU3KABFNzAARTc4AEU3QABFN0wARTdQAEU3VABFN1gARTdcAEU3ZABFN2wARTdwAEU3dABFN3wARTeAAEU5bABFOXQARTl8AEU5hABFOZAARTmUAEU5mABFOZwARTmgAEU5qABFObAARTm0AEU5uABFOcAARTnEAEU7sABFO7gARTvAAEU7yABFO9QARTvYAEU73ABFO+AARTvkAEU77ABFO/QARTv4AEU7/ABFPAQARTwIAEU99ABFPfwART4EAEU+DABFPhgART4cAEU+IABFPiQART4oAEU+MABFPjgART48AEU+QABFPkgART5MAEVAOABFQEAARUBIAEVAUABFQFwARUBgAEVAZABFQGgARUBsAEVAdABFQHwARUCAAEVAhABFQIwARUCQAEVBtABFQkQARULgAEVDcABFQ3wARUOEAEVDjABFQ5QARUOcAEVDpABFQ6gARUO0AEVEGABFRIwARUSUAEVEnABFRKQARUSsAEVEtABFRLwARUTEAEVFOABFRUQARUVQAEVFXABFRWgARUV0AEVFgABFRYwARUWUAEVHgABFR4gARUeQAEVHmABFR6QARUeoAEVHrABFR7AARUe0AEVHvABFR8QARUfIAEVHzABFR9QARUfYAEVJxABFScwARUnUAEVJ3ABFSegARUnsAEVJ8ABFSfQARUn4AEVKAABFSggARUoMAEVKEABFShgARUocAEVMCABFTBAARUwYAEVMIABFTCwARUwwAEVMNABFTDgARUw8AEVMRABFTEwARUxQAEVMVABFTFwARUxgAEVOTABFTlQARU5cAEVOZABFTnAARU50AEVOeABFTnwARU6AAEVOiABFTpAARU6UAEVOmABFTqAARU6kAEVQkABFUJgARVCgAEVQqABFULQARVC4AEVQvABFUMAARVDEAEVQzABFUNQARVDYAEVQ3ABFUOQARVDoAEVS1ABFUtwARVLoAEVS8ABFUvwARVMAAEVTBABFUwgARVMMAEVTFABFUxwARVMgAEVTJABFUywARVMwAEVTrABFVZgARVWgAEVVqABFVbAARVW8AEVVwABFVcQARVXIAEVVzABFVdQARVXcAEVV4ABFVeQARVXsAEVV8ABFVjQARVY4AEVWQABFWCwARVg0AEVYPABFWEQARVhQAEVYVABFWFgARVhcAEVYYABFWGgARVh0AEVYeABFWHwARViEAEVYiABFWnQARVp8AEVahABFWowARVqYAEVanABFWqAARVqkAEVaqABFWrAARVq8AEVawABFWsQARVrMAEVa0ABFXLwARVzEAEVc0ABFXNgARVzkAEVc6ABFXOwARVzwAEVc9ABFXPwARV0IAEVdDABFXRAARV0YAEVdHABFXWAARV1kAEVdbABFX3gARWAIAEVgmABFYSQARWHAAEViQABFYtwARWN4AEVj+ABFZIgARWUYAEVlIABFZSwARWU0AEVlPABFZUQARWVQAEVlXABFZWQARWVsAEVleABFZYAARWWIAEVllABFZaAARWWkAEVluABFZhwARWYwAEVmOABFZkwARWZYAEVmYABFZ4QARWgUAEVosABFaUAARWlMAEVpVABFaVwARWlkAEVpbABFaXQARWl4AEVphABFaegARWp8AEVqhABFaowARWqUAEVqnABFaqQARWqsAEVqtABFarwARWrEAEVrWABFa2QARWtwAEVrfABFa4gARWuUAEVroABFa6wARWu4AEVrxABFa8wARW24AEVtwABFbcwARW3UAEVt4ABFbeQARW3oAEVt7ABFbfAARW34AEVuAABFbgQARW4IAEVuEABFbhQARW5YAEVuXABFbmQARXBQAEVwWABFcGAARXBoAEVwdABFcHgARXB8AEVwgABFcIQARXCMAEVwlABFcJgARXCcAEVwpABFcKgARXKUAEVynABFcqgARXKwAEVyvABFcsAARXLEAEVyyABFcswARXLUAEVy3ABFcuAARXLkAEVy7ABFcvAARXM0AEVzSABFc1QARXNcAEVzoABFc8QARXPQAEVz3ABFc+QARXQwAEV0XABFdkgARXZQAEV2WABFdmAARXZsAEV2cABFdnQARXZ4AEV2fABFdoQARXaMAEV2kABFdpQARXacAEV2oABFeIwARXiUAEV4oABFeKgARXi0AEV4uABFeLwARXjAAEV4xABFeMwARXjUAEV42ABFeNwARXjkAEV46ABFeSwARXkwAEV5OABFeyQARXssAEV7NABFezwARXtIAEV7TABFe1AARXtUAEV7WABFe2AARXtoAEV7bABFe3AARXt4AEV7fABFfWgARX1wAEV9fABFfYQARX2QAEV9lABFfZgARX2cAEV9oABFfagARX2wAEV9tABFfbgARX3AAEV9xABFfigARX4sAEV+MABFfjgARYAkAEWALABFgDQARYA8AEWASABFgEwARYBQAEWAVABFgFgARYBgAEWAaABFgGwARYBwAEWAeABFgHwARYJoAEWCcABFgnwARYKEAEWCkABFgpQARYKYAEWCnABFgqAARYKoAEWCsABFgrQARYK4AEWCwABFgsQARYNgAEWDxABFg+gARYP0AEWEAABFhCQARYQwAEWEPABFhEQARYSQAEWG3ABFh2gARYfoAEWIaABFiHAARYh4AEWIgABFiIgARYiUAEWImABFiJwARYioAEWIrABFiLQARYi4AEWIwABFiMwARYjQAEWI1ABFiOAARYjkAEWI+ABFiVwARYmAAEWJiABFiZAARYm0AEWJwABFicwARYnUAEWK+ABFi4gARYwkAEWMtABFjMAARYzIAEWM0ABFjNgARYzgAEWM6ABFjOwARYz4AEWNXABFjeAARY3oAEWN8ABFjfgARY4AAEWOCABFjhAARY4YAEWOIABFjqQARY6wAEWOvABFjsgARY7UAEWO4ABFjuwARY74AEWPBABFjwwARZD4AEWRAABFkQgARZEQAEWRHABFkSAARZEkAEWRKABFkSwARZE0AEWRPABFkUAARZFEAEWRTABFkVAARZM8AEWTRABFk0wARZNUAEWTYABFk2QARZNoAEWTbABFk3AARZN4AEWTgABFk4QARZOIAEWTkABFk5QARZWAAEWViABFlZQARZWcAEWVqABFlawARZWwAEWVtABFlbgARZXAAEWVyABFlcwARZXQAEWV2ABFldwARZZAAEWWRABFlkgARZZQAEWYPABFmEQARZhMAEWYVABFmGAARZhkAEWYaABFmGwARZhwAEWYeABFmIAARZiEAEWYiABFmJAARZiUAEWagABFmogARZqQAEWamABFmqQARZqoAEWarABFmrAARZq0AEWavABFmsQARZrIAEWazABFmtQARZrYAEWcxABFnMwARZzUAEWc3ABFnOgARZzsAEWc8ABFnPQARZz4AEWdAABFnQgARZ0MAEWdEABFnRgARZ0cAEWfCABFnxAARZ8YAEWfIABFnywARZ8wAEWfNABFnzgARZ88AEWfRABFn0wARZ9QAEWfVABFn1wARZ9gAEWhTABFoVQARaFcAEWhZABFoXAARaF0AEWheABFoXwARaGAAEWhiABFoZAARaGUAEWhmABFoaAARaGkAEWiyABFo1gARaP0AEWkhABFpJAARaSYAEWkoABFpKgARaSwAEWkuABFpLwARaTIAEWlLABFpaAARaWoAEWlsABFpbgARaXAAEWlyABFpdAARaXYAEWmTABFplgARaZkAEWmcABFpnwARaaIAEWmlABFpqAARaaoAEWolABFqJwARaikAEWorABFqLgARai8AEWowABFqMQARajIAEWo0ABFqNgARajcAEWo4ABFqOgARajsAEWq2ABFquAARaroAEWq8ABFqvwARasAAEWrBABFqwgARasMAEWrFABFqxwARasgAEWrJABFqywARaswAEWtHABFrSQARa0sAEWtNABFrUAARa1EAEWtSABFrUwARa1QAEWtWABFrWAARa1kAEWtaABFrXAARa10AEWvYABFr2gARa90AEWvfABFr4gARa+MAEWvkABFr5QARa+YAEWvoABFr6gARa+sAEWvsABFr7gARa+8AEWxqABFsbAARbG4AEWxwABFscwARbHQAEWx1ABFsdgARbHcAEWx5ABFsewARbHwAEWx9ABFsfwARbIAAEWz7ABFs/QARbP8AEW0BABFtBAARbQUAEW0GABFtBwARbQgAEW0KABFtDAARbQ0AEW0OABFtEAARbREAEW2MABFtjgARbZAAEW2SABFtlQARbZYAEW2XABFtmAARbZkAEW2bABFtnQARbZ4AEW2fABFtoQARbaIAEW41ABFuWAARbngAEW6YABFumgARbpwAEW6eABFuoAARbqMAEW6kABFupQARbqgAEW6pABFuqwARbqwAEW6uABFusQARbrIAEW6zABFutgARbrcAEW68ABFu1QARbt4AEW7gABFu4gARbusAEW7uABFu8QARbvMAEW88ABFvYAARb4cAEW+rABFvrgARb7AAEW+yABFvtAARb7YAEW+4ABFvuQARb7wAEW/VABFv9gARb/gAEW/6ABFv/AARb/4AEXAAABFwAgARcAQAEXAGABFwJwARcCoAEXAtABFwMAARcDMAEXA2ABFwOQARcDwAEXA/ABFwQQARcLwAEXC+ABFwwAARcMIAEXDFABFwxgARcMcAEXDIABFwyQARcMsAEXDNABFwzgARcM8AEXDRABFw0gARcU0AEXFPABFxUQARcVMAEXFWABFxVwARcVgAEXFZABFxWgARcVwAEXFeABFxXwARcWAAEXFiABFxYwARcd4AEXHgABFx4wARceUAEXHoABFx6QARceoAEXHrABFx7AARce4AEXHwABFx8QARcfIAEXH0ABFx9QARcg4AEXIPABFyEAARchIAEXKNABFyjwARcpEAEXKTABFylgARcpcAEXKYABFymQARcpoAEXKcABFyngARcp8AEXKgABFyogARcqMAEXMeABFzIAARcyIAEXMkABFzJwARcygAEXMpABFzKgARcysAEXMtABFzLwARczAAEXMxABFzMwARczQAEXOvABFzsQARc7MAEXO1ABFzuAARc7kAEXO6ABFzuwARc7wAEXO+ABFzwAARc8EAEXPCABFzxAARc8UAEXRAABF0QgARdEQAEXRGABF0SQARdEoAEXRLABF0TAARdE0AEXRPABF0UQARdFIAEXRTABF0VQARdFYAEXTRABF00wARdNUAEXTXABF02gARdNsAEXTcABF03QARdN4AEXTgABF04gARdOMAEXTkABF05gARdOcAEXUwABF1VAARdXsAEXWfABF1ogARdaQAEXWmABF1qAARdaoAEXWsABF1rQARdbAAEXXJABF15gARdegAEXXqABF17AARde4AEXXwABF18gARdfQAEXYRABF2FAARdhcAEXYaABF2HQARdiAAEXYjABF2JgARdigAEXajABF2pQARdqcAEXapABF2rAARdq0AEXauABF2rwARdrAAEXayABF2tAARdrUAEXa2ABF2uAARdrkAEXc0ABF3NgARdzgAEXc6ABF3PQARdz4AEXc/ABF3QAARd0EAEXdDABF3RQARd0YAEXdHABF3SQARd0oAEXfFABF3xwARd8kAEXfLABF3zgARd88AEXfQABF30QARd9IAEXfUABF31gARd9cAEXfYABF32gARd9sAEXhWABF4WAAReFsAEXhdABF4YAAReGEAEXhiABF4YwAReGQAEXhmABF4aAAReGkAEXhqABF4bAAReG0AEXjoABF46gAReOwAEXjuABF48QARePIAEXjzABF49AARePUAEXj3ABF4+QARePoAEXj7ABF4/QAReP4AEXl5ABF5ewAReX0AEXl/ABF5ggAReYMAEXmEABF5hQAReYYAEXmIABF5igAReYsAEXmMABF5jgAReY8AEXoKABF6DAAReg4AEXoQABF6EwARehQAEXoVABF6FgARehcAEXoZABF6GwARehwAEXodABF6HwAReiAAEXoxABF6MgARejQAEXq3ABF62wARev8AEXsiABF7SQARe2kAEXuQABF7twARe9cAEXv7ABF8HwARfCEAEXwkABF8JgARfCgAEXwqABF8LQARfDAAEXwyABF8NAARfDcAEXw5ABF8OwARfD4AEXxBABF8QgARfEcAEXxgABF8ZQARfGcAEXxsABF8bwARfHEAEXy6ABF83gARfQUAEX0pABF9LAARfS4AEX0wABF9MgARfTQAEX02ABF9NwARfToAEX1TABF9eAARfXoAEX18ABF9fgARfYAAEX2CABF9hAARfYYAEX2IABF9igARfa8AEX2yABF9tQARfbgAEX27ABF9vgARfcEAEX3EABF9xwARfcoAEX3MABF+RwARfkkAEX5MABF+TgARflEAEX5SABF+UwARflQAEX5VABF+VwARflkAEX5aABF+WwARfl0AEX5eABF+bwARfnAAEX5yABF+7QARfu8AEX7xABF+8wARfvYAEX73ABF++AARfvkAEX76ABF+/AARfv4AEX7/ABF/AAARfwIAEX8DABF/fgARf4AAEX+DABF/hQARf4gAEX+JABF/igARf4sAEX+MABF/jgARf5AAEX+RABF/kgARf5QAEX+VABF/pgARf6sAEX+uABF/sAARf8EAEX/KABF/zQARf9AAEX/SABF/7gARgAAAEYB7ABGAfQARgH8AEYCBABGAhAARgIUAEYCGABGAhwARgIgAEYCKABGAjAARgI0AEYCOABGAkAARgJEAEYEMABGBDgARgREAEYETABGBFgARgRcAEYEYABGBGQARgRoAEYEcABGBHgARgR8AEYEgABGBIgARgSMAEYE0ABGBNQARgTcAEYGyABGBtAARgbYAEYG4ABGBuwARgbwAEYG9ABGBvgARgb8AEYHBABGBwwARgcQAEYHFABGBxwARgcgAEYJDABGCRQARgkgAEYJKABGCTQARgk4AEYJPABGCUAARglEAEYJTABGCVQARglYAEYJXABGCWQARgloAEYJzABGCdAARgnUAEYJ3ABGC8gARgvQAEYL2ABGC+AARgvsAEYL8ABGC/QARgv4AEYL/ABGDAQARgwMAEYMEABGDBQARgwcAEYMIABGDgwARg4UAEYOIABGDigARg40AEYOOABGDjwARg5AAEYORABGDkwARg5UAEYOWABGDlwARg5kAEYOaABGDsQARg8oAEYPbABGD3gARg+EAEYPkABGD5wARg/gAEYP7ABGD/gARhAEAEYQEABGEBgARhBwAEYQ4ABGESgARhFgAEYTrABGFDgARhS4AEYVOABGFUAARhVIAEYVUABGFVgARhVkAEYVaABGFWwARhV4AEYVfABGFYQARhWIAEYVkABGFZwARhWgAEYVpABGFbAARhW0AEYVyABGFiwARhZQAEYWWABGFmAARhaEAEYWkABGFpwARhakAEYXyABGGFgARhj0AEYZhABGGZAARhmYAEYZoABGGagARhmwAEYZuABGGbwARhnIAEYaLABGGrAARhq4AEYawABGGsgARhrQAEYa2ABGGuAARhroAEYa8ABGG3QARhuAAEYbjABGG5gARhukAEYbsABGG7wARhvIAEYb1ABGG9wARh3IAEYd0ABGHdgARh3gAEYd7ABGHfAARh30AEYd+ABGHfwARh4EAEYeDABGHhAARh4UAEYeHABGHiAARiAMAEYgFABGIBwARiAkAEYgMABGIDQARiA4AEYgPABGIEAARiBIAEYgUABGIFQARiBYAEYgYABGIGQARiJQAEYiWABGImQARiJsAEYieABGInwARiKAAEYihABGIogARiKQAEYimABGIpwARiKgAEYiqABGIqwARiMQAEYjFABGIxgARiMgAEYlDABGJRQARiUcAEYlJABGJTAARiU0AEYlOABGJTwARiVAAEYlSABGJVAARiVUAEYlWABGJWAARiVkAEYnUABGJ1gARidgAEYnaABGJ3QARid4AEYnfABGJ4AARieEAEYnjABGJ5QARieYAEYnnABGJ6QARieoAEYplABGKZwARimkAEYprABGKbgARim8AEYpwABGKcQARinIAEYp0ABGKdgARincAEYp4ABGKegARinsAEYr2ABGK+AARivoAEYr8ABGK/wARiwAAEYsBABGLAgARiwMAEYsFABGLBwARiwgAEYsJABGLCwARiwwAEYuHABGLiQARi4sAEYuNABGLkAARi5EAEYuSABGLkwARi5QAEYuWABGLmAARi5kAEYuaABGLnAARi50AEYvmABGMCgARjDEAEYxVABGMWAARjFoAEYxcABGMXgARjGAAEYxiABGMYwARjGYAEYx/ABGMnAARjJ4AEYygABGMogARjKQAEYymABGMqAARjKoAEYzHABGMygARjM0AEYzQABGM0wARjNYAEYzZABGM3AARjN4AEY1ZABGNWwARjV0AEY1fABGNYgARjWMAEY1kABGNZQARjWYAEY1oABGNagARjWsAEY1sABGNbgARjW8AEY3qABGN7AARje4AEY3wABGN8wARjfQAEY31ABGN9gARjfcAEY35ABGN+wARjfwAEY39ABGN/wARjgAAEY57ABGOfQARjn8AEY6BABGOhAARjoUAEY6GABGOhwARjogAEY6KABGOjAARjo0AEY6OABGOkAARjpEAEY8MABGPDgARjxEAEY8TABGPFgARjxcAEY8YABGPGQARjxoAEY8cABGPHgARjx8AEY8gABGPIgARjyMAEY+eABGPoAARj6IAEY+kABGPpwARj6gAEY+pABGPqgARj6sAEY+tABGPrwARj7AAEY+xABGPswARj7QAEZAvABGQMQARkDMAEZA1ABGQOAARkDkAEZA6ABGQOwARkDwAEZA+ABGQQAARkEEAEZBCABGQRAARkEUAEZDAABGQwgARkMQAEZDGABGQyQARkMoAEZDLABGQzAARkM0AEZDPABGQ0QARkNIAEZDTABGQ1QARkNYAEZFpABGRjAARkawAEZHMABGRzgARkdAAEZHSABGR1AARkdcAEZHYABGR2QARkdwAEZHdABGR3wARkeAAEZHiABGR5QARkeYAEZHnABGR6gARkesAEZHwABGSCQARkhIAEZIUABGSFgARkh8AEZIiABGSJQARkicAEZJwABGSlAARkrsAEZLfABGS4gARkuQAEZLmABGS6AARkuoAEZLsABGS7QARkvAAEZMJABGTKgARkywAEZMuABGTMAARkzIAEZM0ABGTNgARkzgAEZM6ABGTWwARk14AEZNhABGTZAARk2cAEZNqABGTbQARk3AAEZNzABGTdQARk/AAEZPyABGT9AARk/YAEZP5ABGT+gARk/sAEZP8ABGT/QARk/8AEZQBABGUAgARlAMAEZQFABGUBgARlIEAEZSDABGUhQARlIcAEZSKABGUiwARlIwAEZSNABGUjgARlJAAEZSSABGUkwARlJQAEZSWABGUlwARlRIAEZUUABGVFwARlRkAEZUcABGVHQARlR4AEZUfABGVIAARlSIAEZUkABGVJQARlSYAEZUoABGVKQARlUIAEZVDABGVRAARlUYAEZXBABGVwwARlcUAEZXHABGVygARlcsAEZXMABGVzQARlc4AEZXQABGV0gARldMAEZXUABGV1gARldcAEZZSABGWVAARllYAEZZYABGWWwARllwAEZZdABGWXgARll8AEZZhABGWYwARlmQAEZZlABGWZwARlmgAEZbjABGW5QARlucAEZbpABGW7AARlu0AEZbuABGW7wARlvAAEZbyABGW9AARlvUAEZb2ABGW+AARlvkAEZd0ABGXdgARl3gAEZd6ABGXfQARl34AEZd/ABGXgAARl4EAEZeDABGXhQARl4YAEZeHABGXiQARl4oAEZgFABGYBwARmAkAEZgLABGYDgARmA8AEZgQABGYEQARmBIAEZgUABGYFgARmBcAEZgYABGYGgARmBsAEZhkABGYiAARmK8AEZjTABGY1gARmNgAEZjaABGY3AARmN4AEZjgABGY4QARmOQAEZj9ABGZGgARmRwAEZkeABGZIAARmSIAEZkkABGZJgARmSgAEZlFABGZSAARmUsAEZlOABGZUQARmVQAEZlXABGZWgARmVwAEZnXABGZ2QARmdsAEZndABGZ4AARmeEAEZniABGZ4wARmeQAEZnmABGZ6AARmekAEZnqABGZ7AARme0AEZpoABGaagARmmwAEZpuABGacQARmnIAEZpzABGadAARmnUAEZp3ABGaeQARmnoAEZp7ABGafQARmn4AEZr5ABGa+wARmv0AEZr/ABGbAgARmwMAEZsEABGbBQARmwYAEZsIABGbCgARmwsAEZsMABGbDgARmw8AEZuKABGbjAARm48AEZuRABGblAARm5UAEZuWABGblwARm5gAEZuaABGbnAARm50AEZueABGboAARm6EAEZwcABGcHgARnCAAEZwiABGcJQARnCYAEZwnABGcKAARnCkAEZwrABGcLQARnC4AEZwvABGcMQARnDIAEZytABGcrwARnLEAEZyzABGctgARnLcAEZy4ABGcuQARnLoAEZy8ABGcvgARnL8AEZzAABGcwgARnMMAEZ0+ABGdQAARnUIAEZ1EABGdRwARnUgAEZ1JABGdSgARnUsAEZ1NABGdTwARnVAAEZ1RABGdUwARnVQAEZ3nABGeCgARnioAEZ5KABGeTAARnk4AEZ5QABGeUgARnlUAEZ5WABGeVwARnloAEZ5bABGeXQARnl4AEZ5gABGeYwARnmQAEZ5lABGeaAARnmkAEZ5uABGehwARnpAAEZ6SABGelAARnp0AEZ6gABGeowARnqUAEZ7uABGfEgARnzkAEZ9dABGfYAARn2IAEZ9kABGfZgARn2gAEZ9qABGfawARn24AEZ+HABGfqAARn6oAEZ+sABGfrgARn7AAEZ+yABGftAARn7YAEZ+4ABGf2QARn9wAEZ/fABGf4gARn+UAEZ/oABGf6wARn+4AEZ/xABGf8wARoG4AEaBwABGgcgARoHQAEaB3ABGgeAARoHkAEaB6ABGgewARoH0AEaB/ABGggAARoIEAEaCDABGghAARoP8AEaEBABGhAwARoQUAEaEIABGhCQARoQoAEaELABGhDAARoQ4AEaEQABGhEQARoRIAEaEUABGhFQARoZAAEaGSABGhlQARoZcAEaGaABGhmwARoZwAEaGdABGhngARoaAAEaGiABGhowARoaQAEaGmABGhpwARocAAEaHBABGhwgARocQAEaI/ABGiQQARokMAEaJFABGiSAARokkAEaJKABGiSwARokwAEaJOABGiUAARolEAEaJSABGiVAARolUAEaLQABGi0gARotQAEaLWABGi2QARotoAEaLbABGi3AARot0AEaLfABGi4QARouIAEaLjABGi5QARouYAEaNhABGjYwARo2UAEaNnABGjagARo2sAEaNsABGjbQARo24AEaNwABGjcgARo3MAEaN0ABGjdgARo3cAEaPyABGj9AARo/YAEaP4ABGj+wARo/wAEaP9ABGj/gARo/8AEaQBABGkAwARpAQAEaQFABGkBwARpAgAEaSDABGkhQARpIcAEaSJABGkjAARpI0AEaSOABGkjwARpJAAEaSSABGklAARpJUAEaSWABGkmAARpJkAEaTiABGlBgARpS0AEaVRABGlVAARpVYAEaVYABGlWgARpVwAEaVeABGlXwARpWIAEaV7ABGlmAARpZoAEaWcABGlngARpaAAEaWiABGlpAARpaYAEaXDABGlxgARpckAEaXMABGlzwARpdIAEaXVABGl2AARpdoAEaZVABGmVwARplkAEaZbABGmXgARpl8AEaZgABGmYQARpmIAEaZkABGmZgARpmcAEaZoABGmagARpmsAEabmABGm6AARpuoAEabsABGm7wARpvAAEabxABGm8gARpvMAEab1ABGm9wARpvgAEab5ABGm+wARpvwAEad3ABGneQARp3sAEad9ABGngAARp4EAEaeCABGngwARp4QAEaeGABGniAARp4kAEaeKABGnjAARp40AEagIABGoCgARqA0AEagPABGoEgARqBMAEagUABGoFQARqBYAEagYABGoGgARqBsAEagcABGoHgARqB8AEaiaABGonAARqJ4AEaigABGoowARqKQAEailABGopgARqKcAEaipABGoqwARqKwAEaitABGorwARqLAAEakrABGpLQARqS8AEakxABGpNAARqTUAEak2ABGpNwARqTgAEak6ABGpPAARqT0AEak+ABGpQAARqUEAEam8ABGpvgARqcAAEanCABGpxQARqcYAEanHABGpyAARqckAEanLABGpzQARqc4AEanPABGp0QARqdIAEaplABGqiAARqqgAEarIABGqygARqswAEarOABGq0AARqtMAEarUABGq1QARqtgAEarZABGq2wARqtwAEareABGq4QARquIAEarjABGq5gARqucAEarsABGrBQARqw4AEasQABGrEgARqxsAEaseABGrIQARqyMAEatsABGrkAARq7cAEavbABGr3gARq+AAEaviABGr5AARq+YAEavoABGr6QARq+wAEawFABGsJgARrCgAEawqABGsLAARrC4AEawwABGsMgARrDQAEaw2ABGsVwARrFoAEaxdABGsYAARrGMAEaxmABGsaQARrGwAEaxvABGscQARrOwAEazuABGs8AARrPIAEaz1ABGs9gARrPcAEaz4ABGs+QARrPsAEaz9ABGs/gARrP8AEa0BABGtAgARrX0AEa1/ABGtgQARrYMAEa2GABGthwARrYgAEa2JABGtigARrYwAEa2OABGtjwARrZAAEa2SABGtkwARrg4AEa4QABGuEwARrhUAEa4YABGuGQARrhoAEa4bABGuHAARrh4AEa4gABGuIQARriIAEa4kABGuJQARrj4AEa4/ABGuQAARrkIAEa69ABGuvwARrsEAEa7DABGuxgARrscAEa7IABGuyQARrsoAEa7MABGuzgARrs8AEa7QABGu0gARrtMAEa9OABGvUAARr1IAEa9UABGvVwARr1gAEa9ZABGvWgARr1sAEa9dABGvXwARr2AAEa9hABGvYwARr2QAEa/fABGv4QARr+MAEa/lABGv6AARr+kAEa/qABGv6wARr+wAEa/uABGv8AARr/EAEa/yABGv9AARr/UAEbBwABGwcgARsHQAEbB2ABGweQARsHoAEbB7ABGwfAARsH0AEbB/ABGwgQARsIIAEbCDABGwhQARsIYAEbEBABGxAwARsQUAEbEHABGxCgARsQsAEbEMABGxDQARsQ4AEbEQABGxEgARsRMAEbEUABGxFgARsRcAEbFgABGxhAARsasAEbHPABGx0gARsdQAEbHWABGx2AARsdoAEbHcABGx3QARseAAEbH5ABGyFgARshgAEbIaABGyHAARsh4AEbIgABGyIgARsiQAEbJBABGyRAARskcAEbJKABGyTQARslAAEbJTABGyVgARslgAEbLTABGy1QARstcAEbLZABGy3AARst0AEbLeABGy3wARsuAAEbLiABGy5AARsuUAEbLmABGy6AARsukAEbNkABGzZgARs2gAEbNqABGzbQARs24AEbNvABGzcAARs3EAEbNzABGzdQARs3YAEbN3ABGzeQARs3oAEbP1ABGz9wARs/kAEbP7ABGz/gARs/8AEbQAABG0AQARtAIAEbQEABG0BgARtAcAEbQIABG0CgARtAsAEbSGABG0iAARtIsAEbSNABG0kAARtJEAEbSSABG0kwARtJQAEbSWABG0mAARtJkAEbSaABG0nAARtJ0AEbUYABG1GgARtRwAEbUeABG1IQARtSIAEbUjABG1JAARtSUAEbUnABG1KQARtSoAEbUrABG1LQARtS4AEbWpABG1qwARta0AEbWvABG1sgARtbMAEbW0ABG1tQARtbYAEbW4ABG1ugARtbsAEbW8ABG1vgARtb8AEbY6ABG2PAARtj4AEbZAABG2QwARtkQAEbZFABG2RgARtkcAEbZJABG2SwARtkwAEbZNABG2TwARtlAAEbZhABG2YgARtmQAEbbnABG3CwARty8AEbdSABG3eQARt5kAEbfAABG35wARuAcAEbgrABG4TwARuFEAEbhUABG4VgARuFgAEbhaABG4XQARuGAAEbhiABG4ZAARuGcAEbhpABG4awARuG4AEbhxABG4cgARuHcAEbiQABG4lQARuJcAEbicABG4nwARuKEAEbjqABG5DgARuTUAEblZABG5XAARuV4AEblgABG5YgARuWQAEblmABG5ZwARuWoAEbmDABG5qAARuaoAEbmsABG5rgARubAAEbmyABG5tAARubYAEbm4ABG5ugARud8AEbniABG55QARuegAEbnrABG57gARufEAEbn0ABG59wARufoAEbn8ABG6dwARunkAEbp8ABG6fgARuoEAEbqCABG6gwARuoQAEbqFABG6hwARuokAEbqKABG6iwARuo0AEbqOABG6nwARuqAAEbqiABG7HQARux8AEbshABG7IwARuyYAEbsnABG7KAARuykAEbsqABG7LAARuy4AEbsvABG7MAARuzIAEbszABG7rgARu7AAEbuzABG7tQARu7gAEbu5ABG7ugARu7sAEbu8ABG7vgARu8AAEbvBABG7wgARu8QAEbvFABG71gARu9cAEbvZABG8VAARvFYAEbxYABG8WgARvF0AEbxeABG8XwARvGAAEbxhABG8YwARvGUAEbxmABG8ZwARvGkAEbxqABG85QARvOcAEbzqABG87AARvO8AEbzwABG88QARvPIAEbzzABG89QARvPcAEbz4ABG8+QARvPsAEbz8ABG9DQARvQ4AEb0QABG9iwARvY0AEb2PABG9kQARvZQAEb2VABG9lgARvZcAEb2YABG9mgARvZwAEb2dABG9ngARvaAAEb2hABG+HAARvh4AEb4hABG+IwARviYAEb4nABG+KAARvikAEb4qABG+LAARvi4AEb4vABG+MAARvjIAEb4zABG+TAARvk0AEb5OABG+UAARvssAEb7NABG+zwARvtEAEb7UABG+1QARvtYAEb7XABG+2AARvtoAEb7cABG+3QARvt4AEb7gABG+4QARv1wAEb9eABG/YQARv2MAEb9mABG/ZwARv2gAEb9pABG/agARv2wAEb9uABG/bwARv3AAEb9yABG/cwARv6MAEb+8ABG/xQARv8gAEb/LABG/1AARv9cAEb/aABG/3AARv+8AEb/5ABHAjAARwK8AEcDPABHA7wARwPEAEcDzABHA9QARwPcAEcD6ABHA+wARwPwAEcD/ABHBAAARwQIAEcEDABHBBQARwQgAEcEJABHBCgARwQ0AEcEOABHBEwARwSwAEcE1ABHBNwARwTkAEcFCABHBRQARwUgAEcFKABHBkwARwbcAEcHeABHCAgARwgUAEcIHABHCCQARwgsAEcINABHCDwARwhAAEcITABHCLAARwk0AEcJPABHCUQARwlMAEcJVABHCVwARwlkAEcJbABHCXQARwn4AEcKBABHChAARwocAEcKKABHCjQARwpAAEcKTABHClgARwpgAEcMTABHDFQARwxcAEcMZABHDHAARwx0AEcMeABHDHwARwyAAEcMiABHDJAARwyUAEcMmABHDKAARwykAEcOkABHDpgARw6gAEcOqABHDrQARw64AEcOvABHDsAARw7EAEcOzABHDtQARw7YAEcO3ABHDuQARw7oAEcQ1ABHENwARxDoAEcQ8ABHEPwARxEAAEcRBABHEQgARxEMAEcRFABHERwARxEgAEcRJABHESwARxEwAEcRlABHEZgARxGcAEcRpABHE5AARxOYAEcToABHE6gARxO0AEcTuABHE7wARxPAAEcTxABHE8wARxPUAEcT2ABHE9wARxPkAEcT6ABHFdQARxXcAEcV5ABHFewARxX4AEcV/ABHFgAARxYEAEcWCABHFhAARxYYAEcWHABHFiAARxYoAEcWLABHGBgARxggAEcYKABHGDAARxg8AEcYQABHGEQARxhIAEcYTABHGFQARxhcAEcYYABHGGQARxhsAEcYcABHGlwARxpkAEcabABHGnQARxqAAEcahABHGogARxqMAEcakABHGpgARxqgAEcapABHGqgARxqwAEcatABHHKAARxyoAEccsABHHLgARxzEAEccyABHHMwARxzQAEcc1ABHHNwARxzkAEcc6ABHHOwARxz0AEcc+ABHHhwARx6sAEcfSABHH9gARx/kAEcf7ABHH/QARx/8AEcgBABHIAwARyAQAEcgHABHIIAARyD0AEcg/ABHIQQARyEMAEchFABHIRwARyEkAEchLABHIaAARyGsAEchuABHIcQARyHQAEch3ABHIegARyH0AEch/ABHI+gARyPwAEcj+ABHJAAARyQMAEckEABHJBQARyQYAEckHABHJCQARyQsAEckMABHJDQARyQ8AEckQABHJiwARyY0AEcmPABHJkQARyZQAEcmVABHJlgARyZcAEcmYABHJmgARyZwAEcmdABHJngARyaAAEcmhABHKHAARyh4AEcogABHKIgARyiUAEcomABHKJwARyigAEcopABHKKwARyi0AEcouABHKLwARyjEAEcoyABHKrQARyq8AEcqyABHKtAARyrcAEcq4ABHKuQARyroAEcq7ABHKvQARyr8AEcrAABHKwQARysMAEcrEABHLPwARy0EAEctDABHLRQARy0gAEctJABHLSgARy0sAEctMABHLTgARy1AAEctRABHLUgARy1QAEctVABHL0AARy9IAEcvUABHL1gARy9kAEcvaABHL2wARy9wAEcvdABHL3wARy+EAEcviABHL4wARy+UAEcvmABHMYQARzGMAEcxlABHMZwARzGoAEcxrABHMbAARzG0AEcxuABHMcAARzHIAEcxzABHMdAARzHYAEcx3ABHNCgARzS0AEc1NABHNbQARzW8AEc1xABHNcwARzXUAEc14ABHNeQARzXoAEc19ABHNfgARzYAAEc2BABHNgwARzYYAEc2HABHNiAARzYsAEc2MABHNkQARzaoAEc2zABHNtQARzbcAEc3AABHNwwARzcYAEc3IABHOEQARzjUAEc5cABHOgAARzoMAEc6FABHOhwARzokAEc6LABHOjQARzo4AEc6RABHOqgARzssAEc7NABHOzwARztEAEc7TABHO1QARztcAEc7ZABHO2wARzvwAEc7/ABHPAgARzwUAEc8IABHPCwARzw4AEc8RABHPFAARzxYAEc+RABHPkwARz5UAEc+XABHPmgARz5sAEc+cABHPnQARz54AEc+gABHPogARz6MAEc+kABHPpgARz6cAEdAiABHQJAAR0CYAEdAoABHQKwAR0CwAEdAtABHQLgAR0C8AEdAxABHQMwAR0DQAEdA1ABHQNwAR0DgAEdCzABHQtQAR0LgAEdC6ABHQvQAR0L4AEdC/ABHQwAAR0MEAEdDDABHQxQAR0MYAEdDHABHQyQAR0MoAEdDjABHQ5AAR0OUAEdDnABHRYgAR0WQAEdFmABHRaAAR0WsAEdFsABHRbQAR0W4AEdFvABHRcQAR0XMAEdF0ABHRdQAR0XcAEdF4ABHR8wAR0fUAEdH3ABHR+QAR0fwAEdH9ABHR/gAR0f8AEdIAABHSAgAR0gQAEdIFABHSBgAR0ggAEdIJABHShAAR0oYAEdKIABHSigAR0o0AEdKOABHSjwAR0pAAEdKRABHSkwAR0pUAEdKWABHSlwAR0pkAEdKaABHTFQAR0xcAEdMZABHTGwAR0x4AEdMfABHTIAAR0yEAEdMiABHTJAAR0yYAEdMnABHTKAAR0yoAEdMrABHTpgAR06gAEdOqABHTrAAR068AEdOwABHTsQAR07IAEdOzABHTtQAR07cAEdO4ABHTuQAR07sAEdO8ABHUBQAR1CkAEdRQABHUdAAR1HcAEdR5ABHUewAR1H0AEdR/ABHUgQAR1IIAEdSFABHUngAR1LsAEdS9ABHUvwAR1MEAEdTDABHUxQAR1McAEdTJABHU5gAR1OkAEdTsABHU7wAR1PIAEdT1ABHU+AAR1PsAEdT9ABHVeAAR1XoAEdV8ABHVfgAR1YEAEdWCABHVgwAR1YQAEdWFABHVhwAR1YkAEdWKABHViwAR1Y0AEdWOABHWCQAR1gsAEdYNABHWDwAR1hIAEdYTABHWFAAR1hUAEdYWABHWGAAR1hoAEdYbABHWHAAR1h4AEdYfABHWmgAR1pwAEdaeABHWoAAR1qMAEdakABHWpQAR1qYAEdanABHWqQAR1qsAEdasABHWrQAR1q8AEdawABHXKwAR1y0AEdcwABHXMgAR1zUAEdc2ABHXNwAR1zgAEdc5ABHXOwAR1z0AEdc+ABHXPwAR10EAEddCABHXvQAR178AEdfBABHXwwAR18YAEdfHABHXyAAR18kAEdfKABHXzAAR184AEdfPABHX0AAR19IAEdfTABHYTgAR2FAAEdhSABHYVAAR2FcAEdhYABHYWQAR2FoAEdhbABHYXQAR2F8AEdhgABHYYQAR2GMAEdhkABHY3wAR2OEAEdjjABHY5QAR2OgAEdjpABHY6gAR2OsAEdjsABHY7gAR2PAAEdjxABHY8gAR2PQAEdj1ABHZBgAR2QcAEdkJABHZjAAR2bAAEdnUABHZ9wAR2h4AEdo+ABHaZQAR2owAEdqsABHa0AAR2vQAEdr2ABHa+QAR2vsAEdr9ABHa/wAR2wIAEdsFABHbBwAR2wkAEdsMABHbDgAR2xAAEdsTABHbFgAR2xcAEdscABHbNQAR2zoAEds8ABHbQQAR20QAEdtGABHbjwAR27MAEdvaABHb/gAR3AEAEdwDABHcBQAR3AcAEdwJABHcCwAR3AwAEdwPABHcKAAR3E0AEdxPABHcUQAR3FMAEdxVABHcVwAR3FkAEdxbABHcXQAR3F8AEdyEABHchwAR3IoAEdyNABHckAAR3JMAEdyWABHcmQAR3JwAEdyfABHcoQAR3RwAEd0eABHdIQAR3SMAEd0mABHdJwAR3SgAEd0pABHdKgAR3SwAEd0uABHdLwAR3TAAEd0yABHdMwAR3UQAEd1FABHdRwAR3cIAEd3EABHdxgAR3cgAEd3LABHdzAAR3c0AEd3OABHdzwAR3dEAEd3TABHd1AAR3dUAEd3XABHd2AAR3lMAEd5VABHeWAAR3loAEd5dABHeXgAR3l8AEd5gABHeYQAR3mMAEd5lABHeZgAR3mcAEd5pABHeagAR3nsAEd58ABHefgAR3vkAEd77ABHe/QAR3v8AEd8CABHfAwAR3wQAEd8FABHfBgAR3wgAEd8KABHfCwAR3wwAEd8OABHfDwAR34oAEd+MABHfjwAR35EAEd+UABHflQAR35YAEd+XABHfmAAR35oAEd+cABHfnQAR354AEd+gABHfoQAR37IAEd+zABHftQAR4DAAEeAyABHgNAAR4DYAEeA5ABHgOgAR4DsAEeA8ABHgPQAR4D8AEeBBABHgQgAR4EMAEeBFABHgRgAR4MEAEeDDABHgxgAR4MgAEeDLABHgzAAR4M0AEeDOABHgzwAR4NEAEeDTABHg1AAR4NUAEeDXABHg2AAR4PEAEeDyABHg8wAR4PUAEeFwABHhcgAR4XQAEeF2ABHheQAR4XoAEeF7ABHhfAAR4X0AEeF/ABHhgQAR4YIAEeGDABHhhQAR4YYAEeIBABHiAwAR4gYAEeIIABHiCwAR4gwAEeINABHiDgAR4g8AEeIRABHiEwAR4hQAEeIVABHiFwAR4hgAEeIzABHiTAAR4lUAEeJYABHiWwAR4mQAEeJnABHiagAR4mwAEeJ/ABHjEgAR4zUAEeNVABHjdQAR43cAEeN5ABHjewAR430AEeOAABHjgQAR44IAEeOFABHjhgAR44gAEeOJABHjiwAR444AEeOPABHjkAAR45MAEeOUABHjmQAR47IAEeO7ABHjvQAR478AEePIABHjywAR484AEePQABHkGQAR5D0AEeRkABHkiAAR5IsAEeSNABHkjwAR5JEAEeSTABHklQAR5JYAEeSZABHksgAR5NMAEeTVABHk1wAR5NkAEeTbABHk3QAR5N8AEeThABHk4wAR5QQAEeUHABHlCgAR5Q0AEeUQABHlEwAR5RYAEeUZABHlHAAR5R4AEeWZABHlmwAR5Z0AEeWfABHlogAR5aMAEeWkABHlpQAR5aYAEeWoABHlqgAR5asAEeWsABHlrgAR5a8AEeYqABHmLAAR5i4AEeYwABHmMwAR5jQAEeY1ABHmNgAR5jcAEeY5ABHmOwAR5jwAEeY9ABHmPwAR5kAAEea7ABHmvQAR5sAAEebCABHmxQAR5sYAEebHABHmyAAR5skAEebLABHmzQAR5s4AEebPABHm0QAR5tIAEebrABHm7AAR5u0AEebvABHnagAR52wAEeduABHncAAR53MAEed0ABHndQAR53YAEed3ABHneQAR53sAEed8ABHnfQAR538AEeeAABHn+wAR5/0AEef/ABHoAQAR6AQAEegFABHoBgAR6AcAEegIABHoCgAR6AwAEegNABHoDgAR6BAAEegRABHojAAR6I4AEeiQABHokgAR6JUAEeiWABHolwAR6JgAEeiZABHomwAR6J0AEeieABHonwAR6KEAEeiiABHpHQAR6R8AEekhABHpIwAR6SYAEeknABHpKAAR6SkAEekqABHpLAAR6S4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AEfreABH63wAR+uAAEfrhABH64wAR+uUAEfrmABH65wAR+ukAEfrqABH7ZQAR+2cAEftpABH7awAR+24AEftvABH7cAAR+3EAEftyABH7dAAR+3YAEft3ABH7eAAR+3oAEft7ABH7jAAR+40AEfuPABH8EgAR/DYAEfxaABH8fQAR/KQAEfzEABH86wAR/RIAEf0yABH9VgAR/XoAEf18ABH9fwAR/YEAEf2DABH9hQAR/YgAEf2LABH9jQAR/Y8AEf2SABH9lAAR/ZYAEf2ZABH9nAAR/Z0AEf2iABH9uwAR/cAAEf3CABH9xwAR/coAEf3MABH+FQAR/jkAEf5gABH+hAAR/ocAEf6JABH+iwAR/o0AEf6PABH+kQAR/pIAEf6VABH+rgAR/tMAEf7VABH+1wAR/tkAEf7bABH+3QAR/t8AEf7hABH+4wAR/uUAEf8KABH/DQAR/xAAEf8TABH/FgAR/xkAEf8cABH/HwAR/yIAEf8lABH/JwAR/6IAEf+kABH/pwAR/6kAEf+sABH/rQAR/64AEf+vABH/sAAR/7IAEf+0ABH/tQAR/7YAEf+4ABH/uQAR/8oAEf/LABH/zQASAEgAEgBKABIATAASAE4AEgBRABIAUgASAFMAEgBUABIAVQASAFcAEgBZABIAWgASAFsAEgBdABIAXgASANkAEgDbABIA3gASAOAAEgDjABIA5AASAOUAEgDmABIA5wASAOkAEgDrABIA7AASAO0AEgDvABIA8AASAQEAEgECABIBBAASAX8AEgGBABIBgwASAYUAEgGIABIBiQASAYoAEgGLABIBjAASAY4AEgGQABIBkQASAZIAEgGUABIBlQASAhAAEgISABICFQASAhcAEgIaABICGwASAhwAEgIdABICHgASAiAAEgIiABICIwASAiQAEgImABICJwASAjgAEgI5ABICOwASArYAEgK4ABICugASArwAEgK/ABICwAASAsEAEgLCABICwwASAsUAEgLHABICyAASAskAEgLLABICzAASA0cAEgNJABIDTAASA04AEgNRABIDUgASA1MAEgNUABIDVQASA1cAEgNZABIDWgASA1sAEgNdABIDXgASA3cAEgN4ABIDeQASA3sAEgP2ABID+AASA/oAEgP8ABID/wASBAAAEgQBABIEAgASBAMAEgQFABIEBwASBAgAEgQJABIECwASBAwAEgSHABIEiQASBIwAEgSOABIEkQASBJIAEgSTABIElAASBJUAEgSXABIEmQASBJoAEgSbABIEnQASBJ4AEgSzABIEzAASBN0AEgTgABIE4wASBOYAEgTpABIE+gASBP0AEgUAABIFAwASBQYAEgUIABIFHgASBSwAEgU/ABIFUQASBeQAEgYHABIGJwASBkcAEgZJABIGSwASBk0AEgZPABIGUgASBlMAEgZUABIGVwASBlgAEgZaABIGWwASBl0AEgZgABIGYQASBmIAEgZlABIGZgASBmsAEgaEABIGjQASBo8AEgaRABIGmgASBp0AEgagABIGogASBusAEgcPABIHNgASB1oAEgddABIHXwASB2EAEgdjABIHZQASB2cAEgdoABIHawASB4QAEgelABIHpwASB6kAEgerABIHrQASB68AEgexABIHswASB7UAEgfWABIH2QASB9wAEgffABIH4gASB+UAEgfoABIH6wASB+4AEgfwABIIawASCG0AEghvABIIcQASCHQAEgh1ABIIdgASCHcAEgh4ABIIegASCHwAEgh9ABIIfgASCIAAEgiBABII/AASCP4AEgkAABIJAgASCQUAEgkGABIJBwASCQgAEgkJABIJCwASCQ0AEgkOABIJDwASCREAEgkSABIJjQASCY8AEgmSABIJlAASCZcAEgmYABIJmQASCZoAEgmbABIJnQASCZ8AEgmgABIJoQASCaMAEgmkABIJvQASCb4AEgm/ABIJwQASCjwAEgo+ABIKQAASCkIAEgpFABIKRgASCkcAEgpIABIKSQASCksAEgpNABIKTgASCk8AEgpRABIKUgASCs0AEgrPABIK0QASCtMAEgrWABIK1wASCtgAEgrZABIK2gASCtwAEgreABIK3wASCuAAEgriABIK4wASC14AEgtgABILYgASC2QAEgtnABILaAASC2kAEgtqABILawASC20AEgtvABILcAASC3EAEgtzABILdAASC+8AEgvxABIL8wASC/UAEgv4ABIL+QASC/oAEgv7ABIL/AASC/4AEgwAABIMAQASDAIAEgwEABIMBQASDIAAEgyCABIMhAASDIYAEgyJABIMigASDIsAEgyMABIMjQASDI8AEgyRABIMkgASDJMAEgyVABIMlgASDN8AEg0DABINKgASDU4AEg1RABINUwASDVUAEg1XABINWQASDVsAEg1cABINXwASDXgAEg2VABINlwASDZkAEg2bABINnQASDZ8AEg2hABINowASDcAAEg3DABINxgASDckAEg3MABINzwASDdIAEg3VABIN1wASDlIAEg5UABIOVgASDlgAEg5bABIOXAASDl0AEg5eABIOXwASDmEAEg5jABIOZAASDmUAEg5nABIOaAASDuMAEg7lABIO5wASDukAEg7sABIO7QASDu4AEg7vABIO8AASDvIAEg70ABIO9QASDvYAEg74ABIO+QASD3QAEg92ABIPeAASD3oAEg99ABIPfgASD38AEg+AABIPgQASD4MAEg+FABIPhgASD4cAEg+JABIPigASEAUAEhAHABIQCgASEAwAEhAPABIQEAASEBEAEhASABIQEwASEBUAEhAXABIQGAASEBkAEhAbABIQHAASEJcAEhCZABIQmwASEJ0AEhCgABIQoQASEKIAEhCjABIQpAASEKYAEhCoABIQqQASEKoAEhCsABIQrQASESgAEhEqABIRLAASES4AEhExABIRMgASETMAEhE0ABIRNQASETcAEhE5ABIROgASETsAEhE9ABIRPgASEbkAEhG7ABIRvQASEb8AEhHCABIRwwASEcQAEhHFABIRxgASEcgAEhHKABIRywASEcwAEhHOABIRzwASEmIAEhKFABISpQASEsUAEhLHABISyQASEssAEhLNABIS0AASEtEAEhLSABIS1QASEtYAEhLYABIS2QASEtsAEhLeABIS3wASEuAAEhLjABIS5AASEu0AEhMGABITDwASExEAEhMTABITHAASEx8AEhMiABITJAASE20AEhORABITuAASE9wAEhPfABIT4QASE+MAEhPlABIT5wASE+kAEhPqABIT7QASFAYAEhQnABIUKQASFCsAEhQtABIULwASFDEAEhQzABIUNQASFDcAEhRYABIUWwASFF4AEhRhABIUZAASFGcAEhRqABIUbQASFHAAEhRyABIU7QASFO8AEhTxABIU8wASFPYAEhT3ABIU+AASFPkAEhT6ABIU/AASFP4AEhT/ABIVAAASFQIAEhUDABIVfgASFYAAEhWCABIVhAASFYcAEhWIABIViQASFYoAEhWLABIVjQASFY8AEhWQABIVkQASFZMAEhWUABIWDwASFhEAEhYUABIWFgASFhkAEhYaABIWGwASFhwAEhYdABIWHwASFiEAEhYiABIWIwASFiUAEhYmABIWPwASFkAAEhZBABIWQwASFr4AEhbAABIWwgASFsQAEhbHABIWyAASFskAEhbKABIWywASFs0AEhbPABIW0AASFtEAEhbTABIW1AASF08AEhdRABIXUwASF1UAEhdYABIXWQASF1oAEhdbABIXXAASF14AEhdgABIXYQASF2IAEhdkABIXZQASF+AAEhfiABIX5AASF+YAEhfpABIX6gASF+sAEhfsABIX7QASF+8AEhfxABIX8gASF/MAEhf1ABIX9gASGHEAEhhzABIYdQASGHcAEhh6ABIYewASGHwAEhh9ABIYfgASGIAAEhiCABIYgwASGIQAEhiGABIYhwASGQIAEhkEABIZBgASGQgAEhkLABIZDAASGQ0AEhkOABIZDwASGREAEhkTABIZFAASGRUAEhkXABIZGAASGWEAEhmFABIZrAASGdAAEhnTABIZ1QASGdcAEhnZABIZ2wASGd0AEhneABIZ4QASGfoAEhoXABIaGQASGhsAEhodABIaHwASGiEAEhojABIaJQASGkIAEhpFABIaSAASGksAEhpOABIaUQASGlQAEhpXABIaWQASGtQAEhrWABIa2AASGtoAEhrdABIa3gASGt8AEhrgABIa4QASGuMAEhrlABIa5gASGucAEhrpABIa6gASG2UAEhtnABIbaQASG2sAEhtuABIbbwASG3AAEhtxABIbcgASG3QAEht2ABIbdwASG3gAEht6ABIbewASG/YAEhv4ABIb+gASG/wAEhv/ABIcAAASHAEAEhwCABIcAwASHAUAEhwHABIcCAASHAkAEhwLABIcDAASHIcAEhyJABIciwASHI0AEhyQABIckQASHJIAEhyTABIclAASHJYAEhyYABIcmQASHJoAEhycABIcnQASHRgAEh0aABIdHAASHR4AEh0hABIdIgASHSMAEh0kABIdJQASHScAEh0pABIdKgASHSsAEh0tABIdLgASHakAEh2rABIdrgASHbAAEh2zABIdtAASHbUAEh22ABIdtwASHbkAEh27ABIdvAASHb0AEh2/ABIdwAASHd8AEh5aABIeXAASHl4AEh5gABIeYwASHmQAEh5lABIeZgASHmcAEh5pABIeawASHmwAEh5tABIebwASHnAAEh8DABIfJgASH0YAEh9mABIfaAASH2oAEh9sABIfbgASH3EAEh9yABIfcwASH3YAEh93ABIfeQASH3oAEh98ABIffwASH4AAEh+BABIfhAASH4UAEh+KABIfowASH6wAEh+uABIfsAASH7kAEh+8ABIfvwASH8EAEiAKABIgLgASIFUAEiB5ABIgfAASIH4AEiCAABIgggASIIQAEiCGABIghwASIIoAEiCjABIgxAASIMYAEiDIABIgygASIMwAEiDOABIg0AASINIAEiDUABIg9QASIPgAEiD7ABIg/gASIQEAEiEEABIhBwASIQoAEiENABIhDwASIYoAEiGMABIhjgASIZAAEiGTABIhlAASIZUAEiGWABIhlwASIZkAEiGbABIhnAASIZ0AEiGfABIhoAASIhsAEiIdABIiHwASIiEAEiIkABIiJQASIiYAEiInABIiKAASIioAEiIsABIiLQASIi4AEiIwABIiMQASIqwAEiKuABIisQASIrMAEiK2ABIitwASIrgAEiK5ABIiugASIrwAEiK+ABIivwASIsAAEiLCABIiwwASItwAEiLdABIi3gASIuAAEiNbABIjXQASI18AEiNhABIjZAASI2UAEiNmABIjZwASI2gAEiNqABIjbAASI20AEiNuABIjcAASI3EAEiPsABIj7gASI/AAEiPyABIj9QASI/YAEiP3ABIj+AASI/kAEiP7ABIj/QASI/4AEiP/ABIkAQASJAIAEiR9ABIkfwASJIEAEiSDABIkhgASJIcAEiSIABIkiQASJIoAEiSMABIkjgASJI8AEiSQABIkkgASJJMAEiUOABIlEAASJRIAEiUUABIlFwASJRgAEiUZABIlGgASJRsAEiUdABIlHwASJSAAEiUhABIlIwASJSQAEiWfABIloQASJaMAEiWlABIlqAASJakAEiWqABIlqwASJawAEiWuABIlsAASJbEAEiWyABIltAASJbUAEiX+ABImIgASJkkAEiZtABImcAASJnIAEiZ0ABImdgASJngAEiZ6ABImewASJn4AEiaXABImtAASJrYAEia4ABImugASJrwAEia+ABImwAASJsIAEibfABIm4gASJuUAEiboABIm6wASJu4AEibxABIm9AASJvYAEidxABIncwASJ3UAEid3ABInegASJ3sAEid8ABInfQASJ34AEieAABInggASJ4MAEieEABInhgASJ4cAEigCABIoBAASKAYAEigIABIoCwASKAwAEigNABIoDgASKA8AEigRABIoEwASKBQAEigVABIoFwASKBgAEiiTABIolQASKJcAEiiZABIonAASKJ0AEiieABIonwASKKAAEiiiABIopAASKKUAEiimABIoqAASKKkAEikkABIpJgASKSkAEikrABIpLgASKS8AEikwABIpMQASKTIAEik0ABIpNgASKTcAEik4ABIpOgASKTsAEim2ABIpuAASKboAEim8ABIpvwASKcAAEinBABIpwgASKcMAEinFABIpxwASKcgAEinJABIpywASKcwAEipHABIqSQASKksAEipNABIqUAASKlEAEipSABIqUwASKlQAEipWABIqWAASKlkAEipaABIqXAASKl0AEirYABIq2gASKtwAEireABIq4QASKuIAEirjABIq5AASKuUAEirnABIq6QASKuoAEirrABIq7QASKu4AEiuBABIrpAASK8QAEivkABIr5gASK+gAEivqABIr7AASK+8AEivwABIr8QASK/QAEiv1ABIr9wASK/gAEiv6ABIr/QASK/4AEiv/ABIsAgASLAMAEiwIABIsIQASLCoAEiwsABIsLgASLDcAEiw6ABIsPQASLD8AEiyIABIsrAASLNMAEiz3ABIs+gASLPwAEiz+ABItAAASLQIAEi0EABItBQASLQgAEi0hABItQgASLUQAEi1GABItSAASLUoAEi1MABItTgASLVAAEi1SABItcwASLXYAEi15ABItfAASLX8AEi2CABIthQASLYgAEi2LABItjQASLggAEi4KABIuDAASLg4AEi4RABIuEgASLhMAEi4UABIuFQASLhcAEi4ZABIuGgASLhsAEi4dABIuHgASLpkAEi6bABIunQASLp8AEi6iABIuowASLqQAEi6lABIupgASLqgAEi6qABIuqwASLqwAEi6uABIurwASLyoAEi8sABIvLwASLzEAEi80ABIvNQASLzYAEi83ABIvOAASLzoAEi88ABIvPQASLz4AEi9AABIvQQASL1oAEi9bABIvXAASL14AEi/ZABIv2wASL90AEi/fABIv4gASL+MAEi/kABIv5QASL+YAEi/oABIv6gASL+sAEi/sABIv7gASL+8AEjBqABIwbAASMG4AEjBwABIwcwASMHQAEjB1ABIwdgASMHcAEjB5ABIwewASMHwAEjB9ABIwfwASMIAAEjD7ABIw/QASMP8AEjEBABIxBAASMQUAEjEGABIxBwASMQgAEjEKABIxDAASMQ0AEjEOABIxEAASMREAEjGMABIxjgASMZAAEjGSABIxlQASMZYAEjGXABIxmAASMZkAEjGbABIxnQASMZ4AEjGfABIxoQASMaIAEjIdABIyHwASMiEAEjIjABIyJgASMicAEjIoABIyKQASMioAEjIsABIyLgASMi8AEjIwABIyMgASMjMAEjJ8ABIyoAASMscAEjLrABIy7gASMvAAEjLyABIy9AASMvYAEjL4ABIy+QASMvwAEjMVABIzMgASMzQAEjM2ABIzOAASMzoAEjM8ABIzPgASM0AAEjNdABIzYAASM2MAEjNmABIzaQASM2wAEjNvABIzcgASM3QAEjPvABIz8QASM/MAEjP1ABIz+AASM/kAEjP6ABIz+wASM/wAEjP+ABI0AAASNAEAEjQCABI0BAASNAUAEjSAABI0ggASNIQAEjSGABI0iQASNIoAEjSLABI0jAASNI0AEjSPABI0kQASNJIAEjSTABI0lQASNJYAEjURABI1EwASNRUAEjUXABI1GgASNRsAEjUcABI1HQASNR4AEjUgABI1IgASNSMAEjUkABI1JgASNScAEjWiABI1pAASNacAEjWpABI1rAASNa0AEjWuABI1rwASNbAAEjWyABI1tAASNbUAEjW2ABI1uAASNbkAEjY0ABI2NgASNjgAEjY6ABI2PQASNj4AEjY/ABI2QAASNkEAEjZDABI2RQASNkYAEjZHABI2SQASNkoAEjbFABI2xwASNskAEjbLABI2zgASNs8AEjbQABI20QASNtIAEjbUABI21gASNtcAEjbYABI22gASNtsAEjdWABI3WAASN1oAEjdcABI3XwASN2AAEjdhABI3YgASN2MAEjdlABI3ZwASN2gAEjdpABI3awASN2wAEjd9ABI3fgASN4AAEjgDABI4JwASOEsAEjhuABI4lQASOLUAEjjcABI5AwASOSMAEjlHABI5awASOW0AEjlwABI5cgASOXQAEjl2ABI5eQASOXwAEjl+ABI5gAASOYMAEjmFABI5hwASOYoAEjmNABI5jgASOZMAEjmsABI5sQASObMAEjm4ABI5uwASOb0AEjoGABI6KgASOlEAEjp1ABI6eAASOnoAEjp8ABI6fgASOoAAEjqCABI6gwASOoYAEjqfABI6xAASOsYAEjrIABI6ygASOswAEjrOABI60AASOtIAEjrUABI61gASOvsAEjr+ABI7AQASOwQAEjsHABI7CgASOw0AEjsQABI7EwASOxYAEjsYABI7kwASO5UAEjuYABI7mgASO50AEjueABI7nwASO6AAEjuhABI7owASO6UAEjumABI7pwASO6kAEjuqABI7uwASO7wAEju+ABI8OQASPDsAEjw9ABI8PwASPEIAEjxDABI8RAASPEUAEjxGABI8SAASPEoAEjxLABI8TAASPE4AEjxPABI8ygASPMwAEjzPABI80QASPNQAEjzVABI81gASPNcAEjzYABI82gASPNwAEjzdABI83gASPOAAEjzhABI88gASPPcAEjz6ABI8/AASPQ0AEj0SABI9FQASPRcAEj2SABI9lAASPZYAEj2YABI9mwASPZwAEj2dABI9ngASPZ8AEj2hABI9owASPaQAEj2lABI9pwASPagAEj4jABI+JQASPigAEj4qABI+LQASPi4AEj4vABI+MAASPjEAEj4zABI+NQASPjYAEj43ABI+OQASPjoAEj5LABI+TAASPk4AEj7JABI+ywASPs0AEj7PABI+0gASPtMAEj7UABI+1QASPtYAEj7YABI+2gASPtsAEj7cABI+3gASPt8AEj9aABI/XAASP18AEj9hABI/ZAASP2UAEj9mABI/ZwASP2gAEj9qABI/bAASP20AEj9uABI/cAASP3EAEj+KABI/iwASP4wAEj+OABJACQASQAsAEkANABJADwASQBIAEkATABJAFAASQBUAEkAWABJAGAASQBoAEkAbABJAHAASQB4AEkAfABJAmgASQJwAEkCfABJAoQASQKQAEkClABJApgASQKcAEkCoABJAqgASQKwAEkCtABJArgASQLAAEkCxABJAwwASQNwAEkDpABJA7AASQO8AEkDyABJA/wASQQIAEkEFABJBCAASQQoAEkEeABJBLAASQb8AEkHiABJCAgASQiIAEkIkABJCJgASQigAEkIqABJCLQASQi4AEkIvABJCMgASQjMAEkI1ABJCNgASQjgAEkI7ABJCPAASQj0AEkJAABJCQQASQkYAEkJfABJCaAASQmoAEkJsABJCdQASQngAEkJ7ABJCfQASQsYAEkLqABJDEQASQzUAEkM4ABJDOgASQzwAEkM+ABJDQAASQ0IAEkNDABJDRgASQ18AEkOAABJDggASQ4QAEkOGABJDiAASQ4oAEkOMABJDjgASQ5AAEkOxABJDtAASQ7cAEkO6ABJDvQASQ8AAEkPDABJDxgASQ8kAEkPLABJERgASREgAEkRKABJETAASRE8AEkRQABJEUQASRFIAEkRTABJEVQASRFcAEkRYABJEWQASRFsAEkRcABJE1wASRNkAEkTbABJE3QASROAAEkThABJE4gASROMAEkTkABJE5gASROgAEkTpABJE6gASROwAEkTtABJFaAASRWoAEkVtABJFbwASRXIAEkVzABJFdAASRXUAEkV2ABJFeAASRXoAEkV7ABJFfAASRX4AEkV/ABJFmAASRZkAEkWaABJFnAASRhcAEkYZABJGGwASRh0AEkYgABJGIQASRiIAEkYjABJGJAASRiYAEkYoABJGKQASRioAEkYsABJGLQASRqgAEkaqABJGrAASRq4AEkaxABJGsgASRrMAEka0ABJGtQASRrcAEka5ABJGugASRrsAEka9ABJGvgASRzkAEkc7ABJHPQASRz8AEkdCABJHQwASR0QAEkdFABJHRgASR0gAEkdKABJHSwASR0wAEkdOABJHTwASR8oAEkfMABJHzgASR9AAEkfTABJH1AASR9UAEkfWABJH1wASR9kAEkfbABJH3AASR90AEkffABJH4AASSFsAEkhdABJIXwASSGEAEkhkABJIZQASSGYAEkhnABJIaAASSGoAEkhsABJIbQASSG4AEkhwABJIcQASSLoAEkjeABJJBQASSSkAEkksABJJLgASSTAAEkkyABJJNAASSTYAEkk3ABJJOgASSVMAEklwABJJcgASSXQAEkl2ABJJeAASSXoAEkl8ABJJfgASSZsAEkmeABJJoQASSaQAEkmnABJJqgASSa0AEkmwABJJsgASSi0AEkovABJKMQASSjMAEko2ABJKNwASSjgAEko5ABJKOgASSjwAEko+ABJKPwASSkAAEkpCABJKQwASSr4AEkrAABJKwgASSsQAEkrHABJKyAASSskAEkrKABJKywASSs0AEkrPABJK0AASStEAEkrTABJK1AASS08AEktRABJLUwASS1UAEktYABJLWQASS1oAEktbABJLXAASS14AEktgABJLYQASS2IAEktkABJLZQASS+AAEkviABJL5QASS+cAEkvqABJL6wASS+wAEkvtABJL7gASS/AAEkvyABJL8wASS/QAEkv2ABJL9wASTHIAEkx0ABJMdgASTHgAEkx7ABJMfAASTH0AEkx+ABJMfwASTIEAEkyDABJMhAASTIUAEkyHABJMiAASTQMAEk0FABJNBwASTQkAEk0MABJNDQASTQ4AEk0PABJNEAASTRIAEk0UABJNFQASTRYAEk0YABJNGQASTZQAEk2WABJNmAASTZoAEk2dABJNngASTZ8AEk2gABJNoQASTaMAEk2lABJNpgASTacAEk2pABJNqgASTj0AEk5gABJOgAASTqAAEk6iABJOpAASTqYAEk6oABJOqwASTqwAEk6tABJOsAASTrEAEk6zABJOtAASTrYAEk65ABJOugASTrsAEk6+ABJOvwASTsgAEk7hABJO6gASTuwAEk7uABJO9wASTvoAEk79ABJO/wAST0gAEk9sABJPkwAST7cAEk+6ABJPvAAST74AEk/AABJPwgAST8QAEk/FABJPyAAST+EAElACABJQBAASUAYAElAIABJQCgASUAwAElAOABJQEAASUBIAElAzABJQNgASUDkAElA8ABJQPwASUEIAElBFABJQSAASUEsAElBNABJQyAASUMoAElDMABJQzgASUNEAElDSABJQ0wASUNQAElDVABJQ1wASUNkAElDaABJQ2wASUN0AElDeABJRWQASUVsAElFdABJRXwASUWIAElFjABJRZAASUWUAElFmABJRaAASUWoAElFrABJRbAASUW4AElFvABJR6gASUewAElHvABJR8QASUfQAElH1ABJR9gASUfcAElH4ABJR+gASUfwAElH9ABJR/gASUgAAElIBABJSGgASUhsAElIcABJSHgASUpkAElKbABJSnQASUp8AElKiABJSowASUqQAElKlABJSpgASUqgAElKqABJSqwASUqwAElKuABJSrwASUyoAElMsABJTLgASUzAAElMzABJTNAASUzUAElM2ABJTNwASUzkAElM7ABJTPAASUz0AElM/ABJTQAASU7sAElO9ABJTvwASU8EAElPEABJTxQASU8YAElPHABJTyAASU8oAElPMABJTzQASU84AElPQABJT0QASVEwAElROABJUUAASVFIAElRVABJUVgASVFcAElRYABJUWQASVFsAElRdABJUXgASVF8AElRhABJUYgASVN0AElTfABJU4QASVOMAElTmABJU5wASVOgAElTpABJU6gASVOwAElTuABJU7wASVPAAElTyABJU8wASVTwAElVgABJVhwASVasAElWuABJVsAASVbIAElW0ABJVtgASVbgAElW5ABJVvAASVdUAElXyABJV9AASVfYAElX4ABJV+gASVfwAElX+ABJWAAASVh0AElYgABJWIwASViYAElYpABJWLAASVi8AElYyABJWNAASVq8AElaxABJWswASVrUAEla4ABJWuQASVroAEla7ABJWvAASVr4AElbAABJWwQASVsIAElbEABJWxQASV0AAEldCABJXRAASV0YAEldJABJXSgASV0sAEldMABJXTQASV08AEldRABJXUgASV1MAEldVABJXVgASV9EAElfTABJX1QASV9cAElfaABJX2wASV9wAElfdABJX3gASV+AAElfiABJX4wASV+QAElfmABJX5wASWGIAElhkABJYZwASWGkAElhsABJYbQASWG4AElhvABJYcAASWHIAElh0ABJYdQASWHYAElh4ABJYeQASWPQAElj2ABJY+AASWPoAElj9ABJY/gASWP8AElkAABJZAQASWQMAElkFABJZBgASWQcAElkJABJZCgASWYUAElmHABJZiQASWYsAElmOABJZjwASWZAAElmRABJZkgASWZQAElmWABJZlwASWZgAElmaABJZmwASWhYAEloYABJaGgASWhwAElofABJaIAASWiEAEloiABJaIwASWiUAElonABJaKAASWikAElorABJaLAASWr8AElriABJbAgASWyIAElskABJbJgASWygAElsqABJbLQASWy4AElsvABJbMgASWzMAEls1ABJbNgASWzgAEls7ABJbPAASWz0AEltAABJbQQASW0YAEltfABJbaAASW2oAEltsABJbdQASW3gAElt7ABJbfQASW8YAElvqABJcEQASXDUAElw4ABJcOgASXDwAElw+ABJcQAASXEIAElxDABJcRgASXF8AElyAABJcggASXIQAElyGABJciAASXIoAElyMABJcjgASXJAAElyxABJctAASXLcAEly6ABJcvQASXMAAElzDABJcxgASXMkAElzLABJdRgASXUgAEl1KABJdTAASXU8AEl1QABJdUQASXVIAEl1TABJdVQASXVcAEl1YABJdWQASXVsAEl1cABJd1wASXdkAEl3bABJd3QASXeAAEl3hABJd4gASXeMAEl3kABJd5gASXegAEl3pABJd6gASXewAEl3tABJeaAASXmoAEl5tABJebwASXnIAEl5zABJedAASXnUAEl52ABJeeAASXnoAEl57ABJefAASXn4AEl5/ABJemAASXpkAEl6aABJenAASXxcAEl8ZABJfGwASXx0AEl8gABJfIQASXyIAEl8jABJfJAASXyYAEl8oABJfKQASXyoAEl8sABJfLQASX6gAEl+qABJfrAASX64AEl+xABJfsgASX7MAEl+0ABJftQASX7cAEl+5ABJfugASX7sAEl+9ABJfvgASYDkAEmA7ABJgPQASYD8AEmBCABJgQwASYEQAEmBFABJgRgASYEgAEmBKABJgSwASYEwAEmBOABJgTwASYMoAEmDMABJgzgASYNAAEmDTABJg1AASYNUAEmDWABJg1wASYNkAEmDbABJg3AASYN0AEmDfABJg4AASYVsAEmFdABJhXwASYWEAEmFkABJhZQASYWYAEmFnABJhaAASYWoAEmFsABJhbQASYW4AEmFwABJhcQASYboAEmHeABJiBQASYikAEmIsABJiLgASYjAAEmIyABJiNAASYjYAEmI3ABJiOgASYlMAEmJwABJicgASYnQAEmJ2ABJieAASYnoAEmJ8ABJifgASYpsAEmKeABJioQASYqQAEmKnABJiqgASYq0AEmKwABJisgASYy0AEmMvABJjMQASYzMAEmM2ABJjNwASYzgAEmM5ABJjOgASYzwAEmM+ABJjPwASY0AAEmNCABJjQwASY74AEmPAABJjwgASY8QAEmPHABJjyAASY8kAEmPKABJjywASY80AEmPPABJj0AASY9EAEmPTABJj1AASZE8AEmRRABJkUwASZFUAEmRYABJkWQASZFoAEmRbABJkXAASZF4AEmRgABJkYQASZGIAEmRkABJkZQASZOAAEmTiABJk5QASZOcAEmTqABJk6wASZOwAEmTtABJk7gASZPAAEmTyABJk8wASZPQAEmT2ABJk9wASZXIAEmV0ABJldgASZXgAEmV7ABJlfAASZX0AEmV+ABJlfwASZYEAEmWDABJlhAASZYUAEmWHABJliAASZgMAEmYFABJmBwASZgkAEmYMABJmDQASZg4AEmYPABJmEAASZhIAEmYUABJmFQASZhYAEmYYABJmGQASZpQAEmaWABJmmAASZpoAEmadABJmngASZp8AEmagABJmoQASZqMAEmalABJmpgASZqcAEmapABJmqgASZrsAEma8ABJmvgASZ0EAEmdlABJniQASZ6wAEmfTABJn8wASaBoAEmhBABJoYQASaIUAEmipABJoqwASaK4AEmiwABJosgASaLQAEmi3ABJougASaLwAEmi+ABJowQASaMMAEmjFABJoyAASaMsAEmjMABJo0QASaOoAEmjvABJo8QASaPYAEmj5ABJo+wASaUQAEmloABJpjwASabMAEmm2ABJpuAASaboAEmm8ABJpvgASacAAEmnBABJpxAASad0AEmoCABJqBAASagYAEmoIABJqCgASagwAEmoOABJqEAASahIAEmoUABJqOQASajwAEmo/ABJqQgASakUAEmpIABJqSwASak4AEmpRABJqVAASalYAEmrRABJq0wASatYAEmrYABJq2wASatwAEmrdABJq3gASat8AEmrhABJq4wASauQAEmrlABJq5wASaugAEmr5ABJq+gASavwAEmt3ABJreQASa3sAEmt9ABJrgAASa4EAEmuCABJrgwASa4QAEmuGABJriAASa4kAEmuKABJrjAASa40AEmwIABJsCgASbA0AEmwPABJsEgASbBMAEmwUABJsFQASbBYAEmwYABJsGgASbBsAEmwcABJsHgASbB8AEmwwABJsNQASbDgAEmw6ABJsSwASbFAAEmxTABJsVQASbFoAEmzVABJs1wASbNkAEmzbABJs3gASbN8AEmzgABJs4QASbOIAEmzkABJs5gASbOcAEmzoABJs6gASbOsAEm1mABJtaAASbWsAEm1tABJtcAASbXEAEm1yABJtcwASbXQAEm12ABJteAASbXkAEm16ABJtfAASbX0AEm2OABJtjwASbZEAEm4MABJuDgASbhAAEm4SABJuFQASbhYAEm4XABJuGAASbhkAEm4bABJuHQASbh4AEm4fABJuIQASbiIAEm6dABJunwASbqIAEm6kABJupwASbqgAEm6pABJuqgASbqsAEm6tABJurwASbrAAEm6xABJuswASbrQAEm7NABJuzgASbs8AEm7RABJvTAASb04AEm9QABJvUgASb1UAEm9WABJvVwASb1gAEm9ZABJvWwASb10AEm9eABJvXwASb2EAEm9iABJv3QASb98AEm/iABJv5AASb+cAEm/oABJv6QASb+oAEm/rABJv7QASb+8AEm/wABJv8QASb/MAEm/0ABJwDAAScCUAEnAuABJwMQAScDQAEnA9ABJwQAAScEMAEnBFABJwWAAScOsAEnEOABJxLgAScU4AEnFQABJxUgAScVQAEnFWABJxWQAScVoAEnFbABJxXgAScV8AEnFhABJxYgAScWQAEnFnABJxaAAScWkAEnFsABJxbQAScXIAEnGLABJxlAAScZYAEnGYABJxoQAScaQAEnGnABJxqQAScfIAEnIWABJyPQAScmEAEnJkABJyZgAScmgAEnJqABJybAAScm4AEnJvABJycgAScosAEnKsABJyrgAScrAAEnKyABJytAAScrYAEnK4ABJyugAScrwAEnLdABJy4AAScuMAEnLmABJy6QAScuwAEnLvABJy8gAScvUAEnL3ABJzcgASc3QAEnN2ABJzeAASc3sAEnN8ABJzfQASc34AEnN/ABJzgQASc4MAEnOEABJzhQASc4cAEnOIABJ0AwASdAUAEnQHABJ0CQASdAwAEnQNABJ0DgASdA8AEnQQABJ0EgASdBQAEnQVABJ0FgASdBgAEnQZABJ0lAASdJYAEnSZABJ0mwASdJ4AEnSfABJ0oAASdKEAEnSiABJ0pAASdKYAEnSnABJ0qAASdKoAEnSrABJ0xAASdMUAEnTGABJ0yAASdUMAEnVFABJ1RwASdUkAEnVMABJ1TQASdU4AEnVPABJ1UAASdVIAEnVUABJ1VQASdVYAEnVYABJ1WQASddQAEnXWABJ12AASddoAEnXdABJ13gASdd8AEnXgABJ14QASdeMAEnXlABJ15gASdecAEnXpABJ16gASdmUAEnZnABJ2aQASdmsAEnZuABJ2bwASdnAAEnZxABJ2cgASdnQAEnZ2ABJ2dwASdngAEnZ6ABJ2ewASdvYAEnb4ABJ2+gASdvwAEnb/ABJ3AAASdwEAEncCABJ3AwASdwUAEncHABJ3CAASdwkAEncLABJ3DAASd4cAEneJABJ3iwASd40AEneQABJ3kQASd5IAEneTABJ3lAASd5YAEneYABJ3mQASd5oAEnecABJ3nQASd+YAEngKABJ4MQASeFUAEnhYABJ4WgASeFwAEnheABJ4YAASeGIAEnhjABJ4ZgASeH8AEnicABJ4ngASeKAAEniiABJ4pAASeKYAEnioABJ4qgASeMcAEnjKABJ4zQASeNAAEnjTABJ41gASeNkAEnjcABJ43gASeVkAEnlbABJ5XQASeV8AEnliABJ5YwASeWQAEnllABJ5ZgASeWgAEnlqABJ5awASeWwAEnluABJ5bwASeeoAEnnsABJ57gASefAAEnnzABJ59AASefUAEnn2ABJ59wASefkAEnn7ABJ5/AASef0AEnn/ABJ6AAASensAEnp9ABJ6fwASeoEAEnqEABJ6hQASeoYAEnqHABJ6iAASeooAEnqMABJ6jQASeo4AEnqQABJ6kQASewwAEnsOABJ7EAASexIAEnsVABJ7FgASexcAEnsYABJ7GQASexsAEnsdABJ7HgASex8AEnshABJ7IgASe50AEnufABJ7oQASe6MAEnumABJ7pwASe6gAEnupABJ7qgASe6wAEnuuABJ7rwASe7AAEnuyABJ7swASfC4AEnwwABJ8MwASfDUAEnw4ABJ8OQASfDoAEnw7ABJ8PAASfD4AEnxAABJ8QQASfEIAEnxEABJ8RQASfF0AEnzYABJ82gASfNwAEnzeABJ84QASfOIAEnzjABJ85AASfOUAEnznABJ86QASfOoAEnzrABJ87QASfO4AEn2BABJ9pAASfcQAEn3kABJ95gASfegAEn3qABJ97AASfe8AEn3wABJ98QASffQAEn31ABJ99wASffgAEn36ABJ9/QASff4AEn3/ABJ+AgASfgMAEn4MABJ+JQASfi4AEn4wABJ+MgASfjsAEn4+ABJ+QQASfkMAEn6MABJ+sAASftcAEn77ABJ+/gASfwAAEn8CABJ/BAASfwYAEn8IABJ/CQASfwwAEn8lABJ/RgASf0gAEn9KABJ/TAASf04AEn9QABJ/UgASf1QAEn9WABJ/dwASf3oAEn99ABJ/gAASf4MAEn+GABJ/iQASf4wAEn+PABJ/kQASgAwAEoAOABKAEAASgBIAEoAVABKAFgASgBcAEoAYABKAGQASgBsAEoAdABKAHgASgB8AEoAhABKAIgASgJ0AEoCfABKAoQASgKMAEoCmABKApwASgKgAEoCpABKAqgASgKwAEoCuABKArwASgLAAEoCyABKAswASgS4AEoEwABKBMwASgTUAEoE4ABKBOQASgToAEoE7ABKBPAASgT4AEoFAABKBQQASgUIAEoFEABKBRQASgV4AEoFfABKBYAASgWIAEoHdABKB3wASgeEAEoHjABKB5gASgecAEoHoABKB6QASgeoAEoHsABKB7gASge8AEoHwABKB8gASgfMAEoJuABKCcAASgnIAEoJ0ABKCdwASgngAEoJ5ABKCegASgnsAEoJ9ABKCfwASgoAAEoKBABKCgwASgoQAEoL/ABKDAQASgwMAEoMFABKDCAASgwkAEoMKABKDCwASgwwAEoMOABKDEAASgxEAEoMSABKDFAASgxUAEoOQABKDkgASg5QAEoOWABKDmQASg5oAEoObABKDnAASg50AEoOfABKDoQASg6IAEoOjABKDpQASg6YAEoQhABKEIwAShCUAEoQnABKEKgAShCsAEoQsABKELQAShC4AEoQwABKEMgAShDMAEoQ0ABKENgAShDcAEoSAABKEpAAShMsAEoTvABKE8gAShPQAEoT2ABKE+AAShPoAEoT8ABKE/QAShQAAEoUZABKFNgAShTgAEoU6ABKFPAAShT4AEoVAABKFQgAShUQAEoVhABKFZAAShWcAEoVqABKFbQAShXAAEoVzABKFdgAShXgAEoXzABKF9QAShfcAEoX5ABKF/AAShf0AEoX+ABKF/wAShgAAEoYCABKGBAAShgUAEoYGABKGCAAShgkAEoaEABKGhgAShogAEoaKABKGjQASho4AEoaPABKGkAAShpEAEoaTABKGlQAShpYAEoaXABKGmQAShpoAEocVABKHFwAShxkAEocbABKHHgAShx8AEocgABKHIQAShyIAEockABKHJgAShycAEocoABKHKgAShysAEoemABKHqAASh6sAEoetABKHsAASh7EAEoeyABKHswASh7QAEoe2ABKHuAASh7kAEoe6ABKHvAASh70AEog4ABKIOgASiDwAEog+ABKIQQASiEIAEohDABKIRAASiEUAEohHABKISQASiEoAEohLABKITQASiE4AEojJABKIywASiM0AEojPABKI0gASiNMAEojUABKI1QASiNYAEojYABKI2gASiNsAEojcABKI3gASiN8AEolaABKJXAASiV4AEolgABKJYwASiWQAEollABKJZgASiWcAEolpABKJawASiWwAEoltABKJbwASiXAAEomBABKJggASiYQAEooHABKKKwASik8AEopyABKKmQASirkAEorgABKLBwASiycAEotLABKLbwASi3EAEot0ABKLdgASi3gAEot6ABKLfQASi4AAEouCABKLhAASi4cAEouJABKLiwASi44AEouRABKLkgASi5cAEouwABKLtQASi7cAEou8ABKLvwASi8EAEowKABKMLgASjFUAEox5ABKMfAASjH4AEoyAABKMggASjIQAEoyGABKMhwASjIoAEoyjABKMyAASjMoAEozMABKMzgASjNAAEozSABKM1AASjNYAEozYABKM2gASjP8AEo0CABKNBQASjQgAEo0LABKNDgASjREAEo0UABKNFwASjRoAEo0cABKNlwASjZkAEo2cABKNngASjaEAEo2iABKNowASjaQAEo2lABKNpwASjakAEo2qABKNqwASja0AEo2uABKNvwASjcAAEo3CABKOPQASjj8AEo5BABKOQwASjkYAEo5HABKOSAASjkkAEo5KABKOTAASjk4AEo5PABKOUAASjlIAEo5TABKOzgASjtAAEo7TABKO1QASjtgAEo7ZABKO2gASjtsAEo7cABKO3gASjuAAEo7hABKO4gASjuQAEo7lABKO9gASjvcAEo75ABKPdAASj3YAEo94ABKPegASj30AEo9+ABKPfwASj4AAEo+BABKPgwASj4UAEo+GABKPhwASj4kAEo+KABKQBQASkAcAEpAKABKQDAASkA8AEpAQABKQEQASkBIAEpATABKQFQASkBcAEpAYABKQGQASkBsAEpAcABKQLQASkC4AEpAwABKQqwASkK0AEpCvABKQsQASkLQAEpC1ABKQtgASkLcAEpC4ABKQugASkLwAEpC9ABKQvgASkMAAEpDBABKRPAASkT4AEpFBABKRQwASkUYAEpFHABKRSAASkUkAEpFKABKRTAASkU4AEpFPABKRUAASkVIAEpFTABKRbAASkW0AEpFuABKRcAASkesAEpHtABKR7wASkfEAEpH0ABKR9QASkfYAEpH3ABKR+AASkfoAEpH8ABKR/QASkf4AEpIAABKSAQASknwAEpJ+ABKSgQASkoMAEpKGABKShwASkogAEpKJABKSigASkowAEpKOABKSjwASkpAAEpKSABKSkwASkqEAEpK6ABKSywASks4AEpLRABKS1AASktcAEpLoABKS6wASku4AEpLxABKS9AASkvYAEpL8ABKTBQASkxQAEpMaABKTrQASk9AAEpPwABKUEAASlBIAEpQUABKUFgASlBgAEpQbABKUHAASlB0AEpQgABKUIQASlCMAEpQkABKUJgASlCkAEpQqABKUKwASlC4AEpQvABKUNAASlE0AEpRWABKUWAASlFoAEpRjABKUZgASlGkAEpRrABKUtAASlNgAEpT/ABKVIwASlSYAEpUoABKVKgASlSwAEpUuABKVMAASlTEAEpU0ABKVTQASlW4AEpVwABKVcgASlXQAEpV2ABKVeAASlXoAEpV8ABKVfgASlZ8AEpWiABKVpQASlagAEpWrABKVrgASlbEAEpW0ABKVtwASlbkAEpY0ABKWNgASljgAEpY6ABKWPQASlj4AEpY/ABKWQAASlkEAEpZDABKWRQASlkYAEpZHABKWSQASlkoAEpbFABKWxwASlskAEpbLABKWzgASls8AEpbQABKW0QASltIAEpbUABKW1gASltcAEpbYABKW2gASltsAEpdWABKXWAASl1sAEpddABKXYAASl2EAEpdiABKXYwASl2QAEpdmABKXaAASl2kAEpdqABKXbAASl20AEpeGABKXhwASl4gAEpeKABKYBQASmAcAEpgJABKYCwASmA4AEpgPABKYEAASmBEAEpgSABKYFAASmBYAEpgXABKYGAASmBoAEpgbABKYlgASmJgAEpiaABKYnAASmJ8AEpigABKYoQASmKIAEpijABKYpQASmKcAEpioABKYqQASmKsAEpisABKZJwASmSkAEpkrABKZLQASmTAAEpkxABKZMgASmTMAEpk0ABKZNgASmTgAEpk5ABKZOgASmTwAEpk9ABKZuAASmboAEpm8ABKZvgASmcEAEpnCABKZwwASmcQAEpnFABKZxwASmckAEpnKABKZywASmc0AEpnOABKaSQASmksAEppNABKaTwASmlIAEppTABKaVAASmlUAEppWABKaWAASmloAEppbABKaXAASml4AEppfABKaqAASmswAEprzABKbFwASmxoAEpscABKbHgASmyAAEpsiABKbJAASmyUAEpsoABKbQQASm14AEptgABKbYgASm2QAEptmABKbaAASm2oAEptsABKbiQASm4wAEpuPABKbkgASm5UAEpuYABKbmwASm54AEpugABKcGwASnB0AEpwfABKcIQASnCQAEpwlABKcJgASnCcAEpwoABKcKgASnCwAEpwtABKcLgASnDAAEpwxABKcrAASnK4AEpywABKcsgASnLUAEpy2ABKctwASnLgAEpy5ABKcuwASnL0AEpy+ABKcvwASnMEAEpzCABKdPQASnT8AEp1BABKdQwASnUYAEp1HABKdSAASnUkAEp1KABKdTAASnU4AEp1PABKdUAASnVIAEp1TABKdzgASndAAEp3TABKd1QASndgAEp3ZABKd2gASndsAEp3cABKd3gASneAAEp3hABKd4gASneQAEp3lABKeYAASnmIAEp5kABKeZgASnmkAEp5qABKeawASnmwAEp5tABKebwASnnEAEp5yABKecwASnnUAEp52ABKe8QASnvMAEp71ABKe9wASnvoAEp77ABKe/AASnv0AEp7+ABKfAAASnwIAEp8DABKfBAASnwYAEp8HABKfggASn4QAEp+GABKfiAASn4sAEp+MABKfjQASn44AEp+PABKfkQASn5MAEp+UABKflQASn5cAEp+YABKgKwASoE4AEqBuABKgjgASoJAAEqCSABKglAASoJYAEqCZABKgmgASoJsAEqCeABKgnwASoKEAEqCiABKgpAASoKcAEqCoABKgqQASoKwAEqCtABKgsgASoMsAEqDUABKg1gASoNgAEqDhABKg5AASoOcAEqDpABKhMgASoVYAEqF9ABKhoQASoaQAEqGmABKhqAASoaoAEqGsABKhrgASoa8AEqGyABKhywASoewAEqHuABKh8AASofIAEqH0ABKh9gASofgAEqH6ABKh/AASoh0AEqIgABKiIwASoiYAEqIpABKiLAASoi8AEqIyABKiNQASojcAEqKyABKitAASorYAEqK4ABKiuwASorwAEqK9ABKivgASor8AEqLBABKiwwASosQAEqLFABKixwASosgAEqNDABKjRQASo0cAEqNJABKjTAASo00AEqNOABKjTwASo1AAEqNSABKjVAASo1UAEqNWABKjWAASo1kAEqPUABKj1gASo9kAEqPbABKj3gASo98AEqPgABKj4QASo+IAEqPkABKj5gASo+cAEqPoABKj6gASo+sAEqQEABKkBQASpAYAEqQIABKkgwASpIUAEqSHABKkiQASpIwAEqSNABKkjgASpI8AEqSQABKkkgASpJQAEqSVABKklgASpJgAEqSZABKlFAASpRYAEqUYABKlGgASpR0AEqUeABKlHwASpSAAEqUhABKlIwASpSUAEqUmABKlJwASpSkAEqUqABKlpQASpacAEqWpABKlqwASpa4AEqWvABKlsAASpbEAEqWyABKltAASpbYAEqW3ABKluAASpboAEqW7ABKmNgASpjgAEqY6ABKmPAASpj8AEqZAABKmQQASpkIAEqZDABKmRQASpkcAEqZIABKmSQASpksAEqZMABKmxwASpskAEqbLABKmzQASptAAEqbRABKm0gASptMAEqbUABKm1gASptgAEqbZABKm2gASptwAEqbdABKnJgASp0oAEqdxABKnlQASp5gAEqeaABKnnAASp54AEqegABKnogASp6MAEqemABKnvwASp9wAEqfeABKn4AASp+IAEqfkABKn5gASp+gAEqfqABKoBwASqAoAEqgNABKoEAASqBMAEqgWABKoGQASqBwAEqgeABKomQASqJsAEqidABKonwASqKIAEqijABKopAASqKUAEqimABKoqAASqKoAEqirABKorAASqK4AEqivABKpKgASqSwAEqkuABKpMAASqTMAEqk0ABKpNQASqTYAEqk3ABKpOQASqTsAEqk8ABKpPQASqT8AEqlAABKpuwASqb0AEqm/ABKpwQASqcQAEqnFABKpxgASqccAEqnIABKpygASqcwAEqnNABKpzgASqdAAEqnRABKqTAASqk4AEqpRABKqUwASqlYAEqpXABKqWAASqlkAEqpaABKqXAASql4AEqpfABKqYAASqmIAEqpjABKq3gASquAAEqriABKq5AASqucAEqroABKq6QASquoAEqrrABKq7QASqu8AEqrwABKq8QASqvMAEqr0ABKrbwASq3EAEqtzABKrdQASq3gAEqt5ABKregASq3sAEqt8ABKrfgASq4AAEquBABKrggASq4QAEquFABKsAAASrAIAEqwEABKsBgASrAkAEqwKABKsCwASrAwAEqwNABKsDwASrBEAEqwSABKsEwASrBUAEqwWABKsqQASrMwAEqzsABKtDAASrQ4AEq0QABKtEgASrRQAEq0XABKtGAASrRkAEq0cABKtHQASrR8AEq0gABKtIgASrSUAEq0mABKtJwASrSoAEq0rABKtMAASrUkAEq1SABKtVAASrVYAEq1fABKtYgASrWUAEq1nABKtsAASrdQAEq37ABKuHwASriIAEq4kABKuJgASrigAEq4qABKuLAASri0AEq4wABKuSQASrmoAEq5sABKubgASrnAAEq5yABKudAASrnYAEq54ABKuegASrpsAEq6eABKuoQASrqQAEq6nABKuqgASrq0AEq6wABKuswASrrUAEq8wABKvMgASrzQAEq82ABKvOQASrzoAEq87ABKvPAASrz0AEq8/ABKvQQASr0IAEq9DABKvRQASr0YAEq/BABKvwwASr8UAEq/HABKvygASr8sAEq/MABKvzQASr84AEq/QABKv0gASr9MAEq/UABKv1gASr9cAErBSABKwVAASsFcAErBZABKwXAASsF0AErBeABKwXwASsGAAErBiABKwZAASsGUAErBmABKwaAASsGkAErCCABKwgwASsIQAErCGABKxAQASsQMAErEFABKxBwASsQoAErELABKxDAASsQ0AErEOABKxEAASsRIAErETABKxFAASsRYAErEXABKxkgASsZQAErGWABKxmAASsZsAErGcABKxnQASsZ4AErGfABKxoQASsaMAErGkABKxpQASsacAErGoABKyIwASsiUAErInABKyKQASsiwAErItABKyLgASsi8AErIwABKyMgASsjQAErI1ABKyNgASsjgAErI5ABKytAASsrYAErK4ABKyugASsr0AErK+ABKyvwASssAAErLBABKywwASssUAErLGABKyxwASsskAErLKABKzRQASs0cAErNJABKzSwASs04AErNPABKzUAASs1EAErNSABKzVAASs1YAErNXABKzWAASs1oAErNbABKzpAASs8gAErPvABK0EwAStBYAErQYABK0GgAStBwAErQeABK0IAAStCEAErQkABK0PQAStFoAErRcABK0XgAStGAAErRiABK0ZAAStGYAErRoABK0hQAStIgAErSLABK0jgAStJEAErSUABK0lwAStJoAErScABK1FwAStRkAErUbABK1HQAStSAAErUhABK1IgAStSMAErUkABK1JgAStSgAErUpABK1KgAStSwAErUtABK1qAAStaoAErWsABK1rgAStbEAErWyABK1swAStbQAErW1ABK1twAStbkAErW6ABK1uwAStb0AErW+ABK2OQAStjsAErY9ABK2PwAStkIAErZDABK2RAAStkUAErZGABK2SAAStkoAErZLABK2TAAStk4AErZPABK2ygAStswAErbOABK20AASttMAErbUABK21QASttYAErbXABK22QASttsAErbcABK23QAStt8AErbgABK3WwASt10AErdfABK3YQASt2QAErdlABK3ZgASt2cAErdoABK3agASt2wAErdtABK3bgASt3AAErdxABK37AASt+4AErfxABK38wASt/YAErf3ABK3+AASt/kAErf6ABK3/AASt/4AErf/ABK4AAASuAIAErgDABK4IgASuJ0AErifABK4oQASuKMAErimABK4pwASuKgAEripABK4qgASuKwAEriuABK4rwASuLAAEriyABK4swASuUYAErlpABK5iQASuakAErmrABK5rQASua8AErmxABK5tAASubUAErm2ABK5uQASuboAErm8ABK5vQASub8AErnCABK5wwASucQAErnHABK5yAASudEAErnqABK58wASufUAErn3ABK6AAASugMAEroGABK6CAASulEAErp1ABK6nAASusAAErrDABK6xQASuscAErrJABK6ywASus0AErrOABK60QASuuoAErsLABK7DQASuw8AErsRABK7EwASuxUAErsXABK7GQASuxsAErs8ABK7PwASu0IAErtFABK7SAASu0sAErtOABK7UQASu1QAErtWABK70QASu9MAErvVABK71wASu9oAErvbABK73AASu90AErveABK74AASu+IAErvjABK75AASu+YAErvnABK8YgASvGQAErxmABK8aAASvGsAErxsABK8bQASvG4AErxvABK8cQASvHMAErx0ABK8dQASvHcAErx4ABK88wASvPUAErz4ABK8+gASvP0AErz+ABK8/wASvQAAEr0BABK9AwASvQUAEr0GABK9BwASvQkAEr0KABK9IwASvSQAEr0lABK9JwASvaIAEr2kABK9pgASvagAEr2rABK9rAASva0AEr2uABK9rwASvbEAEr2zABK9tAASvbUAEr23ABK9uAASvjMAEr41ABK+NwASvjkAEr48ABK+PQASvj4AEr4/ABK+QAASvkIAEr5EABK+RQASvkYAEr5IABK+SQASvsQAEr7GABK+yAASvsoAEr7NABK+zgASvs8AEr7QABK+0QASvtMAEr7VABK+1gASvtcAEr7ZABK+2gASv1UAEr9XABK/WQASv1sAEr9eABK/XwASv2AAEr9hABK/YgASv2QAEr9mABK/ZwASv2gAEr9qABK/awASv+YAEr/oABK/6gASv+wAEr/vABK/8AASv/EAEr/yABK/8wASv/UAEr/3ABK/+AASv/kAEr/7ABK//AASwEUAEsBpABLAkAASwLQAEsC3ABLAuQASwLsAEsC9ABLAvwASwMEAEsDCABLAxQASwN4AEsD7ABLA/QASwP8AEsEBABLBAwASwQUAEsEHABLBCQASwSYAEsEpABLBLAASwS8AEsEyABLBNQASwTgAEsE7ABLBPQASwbgAEsG6ABLBvAASwb4AEsHBABLBwgASwcMAEsHEABLBxQASwccAEsHJABLBygASwcsAEsHNABLBzgASwkkAEsJLABLCTQASwk8AEsJSABLCUwASwlQAEsJVABLCVgASwlgAEsJaABLCWwASwlwAEsJeABLCXwASwtoAEsLcABLC3gASwuAAEsLjABLC5AASwuUAEsLmABLC5wASwukAEsLrABLC7AASwu0AEsLvABLC8AASw2sAEsNtABLDcAASw3IAEsN1ABLDdgASw3cAEsN4ABLDeQASw3sAEsN9ABLDfgASw38AEsOBABLDggASw/0AEsP/ABLEAQASxAMAEsQGABLEBwASxAgAEsQJABLECgASxAwAEsQOABLEDwASxBAAEsQSABLEEwASxI4AEsSQABLEkgASxJQAEsSXABLEmAASxJkAEsSaABLEmwASxJ0AEsSfABLEoAASxKEAEsSjABLEpAASxR8AEsUhABLFIwASxSUAEsUoABLFKQASxSoAEsUrABLFLAASxS4AEsUwABLFMQASxTIAEsU0ABLFNQASxUYAEsVHABLFSQASxcwAEsXwABLGFAASxjcAEsZeABLGfgASxqUAEsbMABLG7AASxxAAEsc0ABLHNgASxzkAEsc7ABLHPQASxz8AEsdCABLHRQASx0cAEsdJABLHTAASx04AEsdQABLHUwASx1YAEsdXABLHYAASx3kAEsd+ABLHgAASx4UAEseIABLHigASx9MAEsf3ABLIHgASyEIAEshFABLIRwASyEkAEshLABLITQASyE8AEshQABLIUwASyGwAEsiRABLIkwASyJUAEsiXABLImQASyJsAEsidABLInwASyKEAEsijABLIyAASyMsAEsjOABLI0QASyNQAEsjXABLI2gASyN0AEsjgABLI4wASyOUAEslgABLJYgASyWUAEslnABLJagASyWsAEslsABLJbQASyW4AEslwABLJcgASyXMAEsl0ABLJdgASyXcAEsmIABLJiQASyYsAEsoGABLKCAASygoAEsoMABLKDwASyhAAEsoRABLKEgASyhMAEsoVABLKFwASyhgAEsoZABLKGwASyhwAEsqXABLKmQASypwAEsqeABLKoQASyqIAEsqjABLKpAASyqUAEsqnABLKqQASyqoAEsqrABLKrQASyq4AEsq/ABLKxAASyscAEsrJABLK2gASyuMAEsrmABLK6QASyusAEsr+ABLLeQASy3sAEst9ABLLfwASy4IAEsuDABLLhAASy4UAEsuGABLLiAASy4oAEsuLABLLjAASy44AEsuPABLMCgASzAwAEswPABLMEQASzBQAEswVABLMFgASzBcAEswYABLMGgASzBwAEswdABLMHgASzCAAEswhABLMMgASzDMAEsw1ABLMsAASzLIAEsy0ABLMtgASzLkAEsy6ABLMuwASzLwAEsy9ABLMvwASzMEAEszCABLMwwASzMUAEszGABLNQQASzUMAEs1GABLNSAASzUsAEs1MABLNTQASzU4AEs1PABLNUQASzVMAEs1UABLNVQASzVcAEs1YABLNcQASzXIAEs1zABLNdQASzfAAEs3yABLN9AASzfYAEs35ABLN+gASzfsAEs38ABLN/QASzf8AEs4BABLOAgASzgMAEs4FABLOBgASzoEAEs6DABLOhgASzogAEs6LABLOjAASzo0AEs6OABLOjwASzpEAEs6TABLOlAASzpUAEs6XABLOmAASzrYAEs7PABLO2AASztsAEs7eABLO5wASzuoAEs7tABLO7wASzwIAEs+VABLPuAASz9gAEs/4ABLP+gASz/wAEs/+ABLQAAAS0AMAEtAEABLQBQAS0AgAEtAJABLQCwAS0AwAEtAOABLQEQAS0BIAEtATABLQFgAS0BcAEtAcABLQNQAS0D4AEtBAABLQQgAS0EsAEtBOABLQUQAS0FMAEtCcABLQwAAS0OcAEtELABLRDgAS0RAAEtESABLRFAAS0RYAEtEYABLRGQAS0RwAEtE1ABLRVgAS0VgAEtFaABLRXAAS0V4AEtFgABLRYgAS0WQAEtFmABLRhwAS0YoAEtGNABLRkAAS0ZMAEtGWABLRmQAS0ZwAEtGfABLRoQAS0hwAEtIeABLSIAAS0iIAEtIlABLSJgAS0icAEtIoABLSKQAS0isAEtItABLSLgAS0i8AEtIxABLSMgAS0q0AEtKvABLSsQAS0rMAEtK2ABLStwAS0rgAEtK5ABLSugAS0rwAEtK+ABLSvwAS0sAAEtLCABLSwwAS0z4AEtNAABLTQwAS00UAEtNIABLTSQAS00oAEtNLABLTTAAS004AEtNQABLTUQAS01IAEtNUABLTVQAS024AEtNvABLTcAAS03IAEtPtABLT7wAS0/EAEtPzABLT9gAS0/cAEtP4ABLT+QAS0/oAEtP8ABLT/gAS0/8AEtQAABLUAgAS1AMAEtR+ABLUgAAS1IIAEtSEABLUhwAS1IgAEtSJABLUigAS1IsAEtSNABLUjwAS1JAAEtSRABLUkwAS1JQAEtUPABLVEQAS1RMAEtUVABLVGAAS1RkAEtUaABLVGwAS1RwAEtUeABLVIAAS1SEAEtUiABLVJAAS1SUAEtWgABLVogAS1aQAEtWmABLVqQAS1aoAEtWrABLVrAAS1a0AEtWvABLVsQAS1bIAEtWzABLVtQAS1bYAEtYxABLWMwAS1jUAEtY3ABLWOgAS1jsAEtY8ABLWPQAS1j4AEtZAABLWQgAS1kMAEtZEABLWRgAS1kcAEtaQABLWtAAS1tsAEtb/ABLXAgAS1wQAEtcGABLXCAAS1woAEtcMABLXDQAS1xAAEtcpABLXRgAS10gAEtdKABLXTAAS104AEtdQABLXUgAS11QAEtdxABLXdAAS13cAEtd6ABLXfQAS14AAEteDABLXhgAS14gAEtgDABLYBQAS2AcAEtgJABLYDAAS2A0AEtgOABLYDwAS2BAAEtgSABLYFAAS2BUAEtgWABLYGAAS2BkAEtiUABLYlgAS2JgAEtiaABLYnQAS2J4AEtifABLYoAAS2KEAEtijABLYpQAS2KYAEtinABLYqQAS2KoAEtklABLZJwAS2SkAEtkrABLZLgAS2S8AEtkwABLZMQAS2TIAEtk0ABLZNgAS2TcAEtk4ABLZOgAS2TsAEtm2ABLZuAAS2bsAEtm9ABLZwAAS2cEAEtnCABLZwwAS2cQAEtnGABLZyAAS2ckAEtnKABLZzAAS2c0AEtpIABLaSgAS2kwAEtpOABLaUQAS2lIAEtpTABLaVAAS2lUAEtpXABLaWQAS2loAEtpbABLaXQAS2l4AEtrZABLa2wAS2t0AEtrfABLa4gAS2uMAEtrkABLa5QAS2uYAEtroABLa6gAS2usAEtrsABLa7gAS2u8AEttqABLbbAAS224AEttwABLbcwAS23QAEtt1ABLbdgAS23cAEtt5ABLbewAS23wAEtt9ABLbfwAS24AAEtwTABLcNgAS3FYAEtx2ABLceAAS3HoAEtx8ABLcfgAS3IEAEtyCABLcgwAS3IYAEtyHABLciQAS3IoAEtyMABLcjwAS3JAAEtyRABLclAAS3JUAEtyeABLctwAS3MAAEtzCABLcxAAS3M0AEtzQABLc0wAS3NUAEt0eABLdQgAS3WkAEt2NABLdkAAS3ZIAEt2UABLdlgAS3ZgAEt2aABLdmwAS3Z4AEt23ABLd2AAS3doAEt3cABLd3gAS3eAAEt3iABLd5AAS3eYAEt3oABLeCQAS3gwAEt4PABLeEgAS3hUAEt4YABLeGwAS3h4AEt4hABLeIwAS3p4AEt6gABLeogAS3qQAEt6nABLeqAAS3qkAEt6qABLeqwAS3q0AEt6vABLesAAS3rEAEt6zABLetAAS3y8AEt8xABLfMwAS3zUAEt84ABLfOQAS3zoAEt87ABLfPAAS3z4AEt9AABLfQQAS30IAEt9EABLfRQAS38AAEt/CABLfxQAS38cAEt/KABLfywAS38wAEt/NABLfzgAS39AAEt/SABLf0wAS39QAEt/WABLf1wAS3/AAEt/xABLf8gAS3/QAEuBvABLgcQAS4HMAEuB1ABLgeAAS4HkAEuB6ABLgewAS4HwAEuB+ABLggAAS4IEAEuCCABLghAAS4IUAEuEAABLhAgAS4QQAEuEGABLhCQAS4QoAEuELABLhDAAS4Q0AEuEPABLhEQAS4RIAEuETABLhFQAS4RYAEuGRABLhkwAS4ZUAEuGXABLhmgAS4ZsAEuGcABLhnQAS4Z4AEuGgABLhogAS4aMAEuGkABLhpgAS4acAEuIiABLiJAAS4iYAEuIoABLiKwAS4iwAEuItABLiLgAS4i8AEuIxABLiMwAS4jQAEuI1ABLiNwAS4jgAEuKzABLitQAS4rcAEuK5ABLivAAS4r0AEuK+ABLivwAS4sAAEuLCABLixAAS4sUAEuLGABLiyAAS4skAEuMSABLjNgAS410AEuOBABLjhAAS44YAEuOIABLjigAS44wAEuOOABLjjwAS45IAEuOrABLjyAAS48oAEuPMABLjzgAS49AAEuPSABLj1AAS49YAEuPzABLj9gAS4/kAEuP8ABLj/wAS5AIAEuQFABLkCAAS5AoAEuSFABLkhwAS5IkAEuSLABLkjgAS5I8AEuSQABLkkQAS5JIAEuSUABLklgAS5JcAEuSYABLkmgAS5JsAEuUWABLlGAAS5RoAEuUcABLlHwAS5SAAEuUhABLlIgAS5SMAEuUlABLlJwAS5SgAEuUpABLlKwAS5SwAEuWnABLlqQAS5asAEuWtABLlsAAS5bEAEuWyABLlswAS5bQAEuW2ABLluAAS5bkAEuW6ABLlvAAS5b0AEuY4ABLmOgAS5j0AEuY/ABLmQgAS5kMAEuZEABLmRQAS5kYAEuZIABLmSgAS5ksAEuZMABLmTgAS5k8AEubKABLmzAAS5s4AEubQABLm0wAS5tQAEubVABLm1gAS5tcAEubZABLm2wAS5twAEubdABLm3wAS5uAAEudbABLnXQAS518AEudhABLnZAAS52UAEudmABLnZwAS52gAEudqABLnbAAS520AEuduABLncAAS53EAEufsABLn7gAS5/AAEufyABLn9QAS5/YAEuf3ABLn+AAS5/kAEuf7ABLn/QAS5/4AEuf/ABLoAQAS6AIAEugTABLoFAAS6BYAEuiZABLovQAS6OEAEukEABLpKwAS6UsAEulyABLpmQAS6bkAEundABLqAQAS6gMAEuoGABLqCAAS6goAEuoMABLqDwAS6hIAEuoUABLqFgAS6hkAEuobABLqHQAS6iAAEuojABLqJAAS6ikAEupCABLqRwAS6kkAEupOABLqUQAS6lMAEuqcABLqwAAS6ucAEusLABLrDgAS6xAAEusSABLrFAAS6xYAEusYABLrGQAS6xwAEus1ABLrWgAS61wAEuteABLrYAAS62IAEutkABLrZgAS62gAEutqABLrbAAS65EAEuuUABLrlwAS65oAEuudABLroAAS66MAEuumABLrqQAS66wAEuuuABLsKQAS7CsAEuwuABLsMAAS7DMAEuw0ABLsNQAS7DYAEuw3ABLsOQAS7DsAEuw8ABLsPQAS7D8AEuxAABLsUQAS7FIAEuxUABLszwAS7NEAEuzTABLs1QAS7NgAEuzZABLs2gAS7NsAEuzcABLs3gAS7OAAEuzhABLs4gAS7OQAEuzlABLtYAAS7WIAEu1lABLtZwAS7WoAEu1rABLtbAAS7W0AEu1uABLtcAAS7XIAEu1zABLtdAAS7XYAEu13ABLtiAAS7Y0AEu2QABLtkgAS7aMAEu2sABLtrwAS7bIAEu20ABLt0AAS7eIAEu5dABLuXwAS7mEAEu5jABLuZgAS7mcAEu5oABLuaQAS7moAEu5sABLubgAS7m8AEu5wABLucgAS7nMAEu7uABLu8AAS7vMAEu71ABLu+AAS7vkAEu76ABLu+wAS7vwAEu7+ABLvAAAS7wEAEu8CABLvBAAS7wUAEu8WABLvFwAS7xkAEu+UABLvlgAS75gAEu+aABLvnQAS754AEu+fABLvoAAS76EAEu+jABLvpQAS76YAEu+nABLvqQAS76oAEvAlABLwJwAS8CoAEvAsABLwLwAS8DAAEvAxABLwMgAS8DMAEvA1ABLwNwAS8DgAEvA5ABLwOwAS8DwAEvBVABLwVgAS8FcAEvBZABLw1AAS8NYAEvDYABLw2gAS8N0AEvDeABLw3wAS8OAAEvDhABLw4wAS8OUAEvDmABLw5wAS8OkAEvDqABLxZQAS8WcAEvFqABLxbAAS8W8AEvFwABLxcQAS8XIAEvFzABLxdQAS8XcAEvF4ABLxeQAS8XsAEvF8ABLxjgAS8acAEvHQABLx0wAS8dYAEvHZABLx3AAS8d8AEvHiABLx5QAS8egAEvHrABLx7gAS8hcAEvIaABLyHQAS8iAAEvIjABLyJgAS8ikAEvIsABLyLwAS8jIAEvI1ABLyNwAS8kYAEvJiABLyeAAS8o8AEvKmABLyvQAS8ssAEvLnABLy+QAS84wAEvOvABLzzwAS8+8AEvPxABLz8wAS8/UAEvP3ABLz+gAS8/sAEvP8ABLz/wAS9AAAEvQCABL0AwAS9AUAEvQIABL0CQAS9AoAEvQNABL0DgAS9BMAEvQsABL0NQAS9DcAEvQ5ABL0QgAS9EUAEvRIABL0SgAS9JMAEvS3ABL03gAS9QIAEvUFABL1BwAS9QkAEvULABL1DQAS9Q8AEvUQABL1EwAS9SwAEvVNABL1TwAS9VEAEvVTABL1VQAS9VcAEvVZABL1WwAS9V0AEvV+ABL1gQAS9YQAEvWHABL1igAS9Y0AEvWQABL1kwAS9ZYAEvWYABL2EwAS9hUAEvYXABL2GQAS9hwAEvYdABL2HgAS9h8AEvYgABL2IgAS9iQAEvYlABL2JgAS9igAEvYpABL2pAAS9qYAEvaoABL2qgAS9q0AEvauABL2rwAS9rAAEvaxABL2swAS9rUAEva2ABL2twAS9rkAEva6ABL3NQAS9zcAEvc6ABL3PAAS9z8AEvdAABL3QQAS90IAEvdDABL3RQAS90cAEvdIABL3SQAS90sAEvdMABL3ZQAS92YAEvdnABL3aQAS9+QAEvfmABL36AAS9+oAEvftABL37gAS9+8AEvfwABL38QAS9/MAEvf1ABL39gAS9/cAEvf5ABL3+gAS+HUAEvh3ABL4eQAS+HsAEvh+ABL4fwAS+IAAEviBABL4ggAS+IQAEviGABL4hwAS+IgAEviKABL4iwAS+QYAEvkIABL5CgAS+QwAEvkPABL5EAAS+REAEvkSABL5EwAS+RUAEvkXABL5GAAS+RkAEvkbABL5HAAS+ZcAEvmZABL5mwAS+Z0AEvmgABL5oQAS+aIAEvmjABL5pAAS+aYAEvmoABL5qQAS+aoAEvmsABL5rQAS+igAEvoqABL6LAAS+i4AEvoxABL6MgAS+jMAEvo0ABL6NQAS+jcAEvo5ABL6OgAS+jsAEvo9ABL6PgAS+ocAEvqrABL60gAS+vYAEvr5ABL6+wAS+v0AEvr/ABL7AQAS+wMAEvsEABL7BwAS+yAAEvs9ABL7PwAS+0EAEvtDABL7RQAS+0cAEvtJABL7SwAS+2gAEvtrABL7bgAS+3EAEvt0ABL7dwAS+3oAEvt9ABL7fwAS+/oAEvv8ABL7/gAS/AAAEvwDABL8BAAS/AUAEvwGABL8BwAS/AkAEvwLABL8DAAS/A0AEvwPABL8EAAS/IsAEvyNABL8jwAS/JEAEvyUABL8lQAS/JYAEvyXABL8mAAS/JoAEvycABL8nQAS/J4AEvygABL8oQAS/RwAEv0eABL9IAAS/SIAEv0lABL9JgAS/ScAEv0oABL9KQAS/SsAEv0tABL9LgAS/S8AEv0xABL9MgAS/a0AEv2vABL9sgAS/bQAEv23ABL9uAAS/bkAEv26ABL9uwAS/b0AEv2/ABL9wAAS/cEAEv3DABL9xAAS/j8AEv5BABL+QwAS/kUAEv5IABL+SQAS/koAEv5LABL+TAAS/k4AEv5QABL+UQAS/lIAEv5UABL+VQAS/tAAEv7SABL+1AAS/tYAEv7ZABL+2gAS/tsAEv7cABL+3QAS/t8AEv7hABL+4gAS/uMAEv7lABL+5gAS/2EAEv9jABL/ZQAS/2cAEv9qABL/awAS/2wAEv9tABL/bgAS/3AAEv9yABL/cwAS/3QAEv92ABL/dwATAAoAEwAtABMATQATAG0AEwBvABMAcQATAHMAEwB1ABMAeAATAHkAEwB6ABMAfQATAH4AEwCAABMAgQATAIMAEwCGABMAhwATAIgAEwCLABMAjAATAJUAEwCuABMAtwATALkAEwC7ABMAxAATAMcAEwDKABMAzAATARUAEwE5ABMBYAATAYQAEwGHABMBiQATAYsAEwGNABMBjwATAZEAEwGSABMBlQATAa4AEwHPABMB0QATAdMAEwHVABMB1wATAdkAEwHbABMB3QATAd8AEwIAABMCAwATAgYAEwIJABMCDAATAg8AEwISABMCFQATAhgAEwIaABMClQATApcAEwKZABMCmwATAp4AEwKfABMCoAATAqEAEwKiABMCpAATAqYAEwKnABMCqAATAqoAEwKrABMDJgATAygAEwMqABMDLAATAy8AEwMwABMDMQATAzIAEwMzABMDNQATAzcAEwM4ABMDOQATAzsAEwM8ABMDtwATA7kAEwO8ABMDvgATA8EAEwPCABMDwwATA8QAEwPFABMDxwATA8kAEwPKABMDywATA80AEwPOABMD5wATA+gAEwPpABMD6wATBGYAEwRoABMEagATBGwAEwRvABMEcAATBHEAEwRyABMEcwATBHUAEwR3ABMEeAATBHkAEwR7ABMEfAATBPcAEwT5ABME+wATBP0AEwUAABMFAQATBQIAEwUDABMFBAATBQYAEwUIABMFCQATBQoAEwUMABMFDQATBYgAEwWKABMFjAATBY4AEwWRABMFkgATBZMAEwWUABMFlQATBZcAEwWZABMFmgATBZsAEwWdABMFngATBhkAEwYbABMGHQATBh8AEwYiABMGIwATBiQAEwYlABMGJgATBigAEwYqABMGKwATBiwAEwYuABMGLwATBqoAEwasABMGrgATBrAAEwazABMGtAATBrUAEwa2ABMGtwATBrkAEwa7ABMGvAATBr0AEwa/ABMGwAATBwkAEwctABMHVAATB3gAEwd7ABMHfQATB38AEweBABMHgwATB4UAEweGABMHiQATB6IAEwe/ABMHwQATB8MAEwfFABMHxwATB8kAEwfLABMHzQATB+oAEwftABMH8AATB/MAEwf2ABMH+QATB/wAEwf/ABMIAQATCHwAEwh+ABMIgAATCIIAEwiFABMIhgATCIcAEwiIABMIiQATCIsAEwiNABMIjgATCI8AEwiRABMIkgATCQ0AEwkPABMJEQATCRMAEwkWABMJFwATCRgAEwkZABMJGgATCRwAEwkeABMJHwATCSAAEwkiABMJIwATCZ4AEwmgABMJogATCaQAEwmnABMJqAATCakAEwmqABMJqwATCa0AEwmvABMJsAATCbEAEwmzABMJtAATCi8AEwoxABMKMwATCjUAEwo4ABMKOQATCjoAEwo7ABMKPAATCj4AEwpAABMKQQATCkIAEwpEABMKRQATCsAAEwrCABMKxAATCsYAEwrJABMKygATCssAEwrMABMKzQATCs8AEwrRABMK0gATCtMAEwrVABMK1gATC1EAEwtTABMLVgATC1gAEwtbABMLXAATC10AEwteABMLXwATC2EAEwtjABMLZAATC2UAEwtnABMLaAATC4AAEwv7ABML/QATC/8AEwwBABMMBAATDAUAEwwGABMMBwATDAgAEwwKABMMDAATDA0AEwwOABMMEAATDBEAEwykABMMxwATDOcAEw0HABMNCQATDQsAEw0NABMNDwATDRIAEw0TABMNFAATDRcAEw0YABMNGgATDRsAEw0dABMNIAATDSEAEw0iABMNJQATDSYAEw0rABMNRAATDU0AEw1PABMNUQATDVoAEw1dABMNYAATDWIAEw2rABMNzwATDfYAEw4aABMOHQATDh8AEw4hABMOIwATDiUAEw4nABMOKAATDisAEw5EABMOZQATDmcAEw5pABMOawATDm0AEw5vABMOcQATDnMAEw51ABMOlgATDpkAEw6cABMOnwATDqIAEw6lABMOqAATDqsAEw6uABMOsAATDysAEw8tABMPLwATDzEAEw80ABMPNQATDzYAEw83ABMPOAATDzoAEw88ABMPPQATDz4AEw9AABMPQQATD7wAEw++ABMPwAATD8IAEw/FABMPxgATD8cAEw/IABMPyQATD8sAEw/NABMPzgATD88AEw/RABMP0gATEE0AExBPABMQUgATEFQAExBXABMQWAATEFkAExBaABMQWwATEF0AExBfABMQYAATEGEAExBjABMQZAATEH0AExB+ABMQfwATEIEAExD8ABMQ/gATEQAAExECABMRBQATEQYAExEHABMRCAATEQkAExELABMRDQATEQ4AExEPABMREQATERIAExGNABMRjwATEZEAExGTABMRlgATEZcAExGYABMRmQATEZoAExGcABMRngATEZ8AExGgABMRogATEaMAExIeABMSIAATEiIAExIkABMSJwATEigAExIpABMSKgATEisAExItABMSLwATEjAAExIxABMSMwATEjQAExKvABMSsQATErMAExK1ABMSuAATErkAExK6ABMSuwATErwAExK+ABMSwAATEsEAExLCABMSxAATEsUAExNAABMTQgATE0QAExNGABMTSQATE0oAExNLABMTTAATE00AExNPABMTUQATE1IAExNTABMTVQATE1YAExOfABMTwwATE+oAExQOABMUEQATFBMAExQVABMUFwATFBkAExQbABMUHAATFB8AExQ4ABMUVQATFFcAExRZABMUWwATFF0AExRfABMUYQATFGMAExSAABMUgwATFIYAExSJABMUjAATFI8AExSSABMUlQATFJcAExUSABMVFAATFRYAExUYABMVGwATFRwAExUdABMVHgATFR8AExUhABMVIwATFSQAExUlABMVJwATFSgAExWjABMVpQATFacAExWpABMVrAATFa0AExWuABMVrwATFbAAExWyABMVtAATFbUAExW2ABMVuAATFbkAExY0ABMWNgATFjgAExY6ABMWPQATFj4AExY/ABMWQAATFkEAExZDABMWRQATFkYAExZHABMWSQATFkoAExbFABMWxwATFskAExbLABMWzgATFs8AExbQABMW0QATFtIAExbUABMW1gATFtcAExbYABMW2gATFtsAExdWABMXWAATF1oAExdcABMXXwATF2AAExdhABMXYgATF2MAExdlABMXZwATF2gAExdpABMXawATF2wAExfnABMX6QATF+wAExfuABMX8QATF/IAExfzABMX9AATF/UAExf3ABMX+QATF/oAExf7ABMX/QATF/4AExgNABMYiAATGIoAExiMABMYjgATGJEAExiSABMYkwATGJQAExiVABMYlwATGJkAExiaABMYmwATGJ0AExieABMZMQATGVQAExl0ABMZlAATGZYAExmYABMZmgATGZwAExmfABMZoAATGaEAExmkABMZpQATGacAExmoABMZqgATGa0AExmuABMZrwATGbIAExmzABMZuAATGdEAExnaABMZ3AATGd4AExnnABMZ6gATGe0AExnvABMaOAATGlwAExqDABMapwATGqoAExqsABMargATGrAAExqyABMatAATGrUAExq4ABMa0QATGvIAExr0ABMa9gATGvgAExr6ABMa/AATGv4AExsAABMbAgATGyMAExsmABMbKQATGywAExsvABMbMgATGzUAExs4ABMbOwATGz0AExu4ABMbugATG7wAExu+ABMbwQATG8IAExvDABMbxAATG8UAExvHABMbyQATG8oAExvLABMbzQATG84AExxJABMcSwATHE0AExxPABMcUgATHFMAExxUABMcVQATHFYAExxYABMcWgATHFsAExxcABMcXgATHF8AExzaABMc3AATHN8AExzhABMc5AATHOUAExzmABMc5wATHOgAExzqABMc7AATHO0AExzuABMc8AATHPEAEx0KABMdCwATHQwAEx0OABMdiQATHYsAEx2NABMdjwATHZIAEx2TABMdlAATHZUAEx2WABMdmAATHZoAEx2bABMdnAATHZ4AEx2fABMeGgATHhwAEx4eABMeIAATHiMAEx4kABMeJQATHiYAEx4nABMeKQATHisAEx4sABMeLQATHi8AEx4wABMeqwATHq0AEx6vABMesQATHrQAEx61ABMetgATHrcAEx64ABMeugATHrwAEx69ABMevgATHsAAEx7BABMfPAATHz4AEx9AABMfQgATH0UAEx9GABMfRwATH0gAEx9JABMfSwATH00AEx9OABMfTwATH1EAEx9SABMfzQATH88AEx/RABMf0wATH9YAEx/XABMf2AATH9kAEx/aABMf3AATH94AEx/fABMf4AATH+IAEx/jABMgLAATIFAAEyB3ABMgmwATIJ4AEyCgABMgogATIKQAEyCmABMgqAATIKkAEyCsABMgxQATIOIAEyDkABMg5gATIOgAEyDqABMg7AATIO4AEyDwABMhDQATIRAAEyETABMhFgATIRkAEyEcABMhHwATISIAEyEkABMhnwATIaEAEyGjABMhpQATIagAEyGpABMhqgATIasAEyGsABMhrgATIbAAEyGxABMhsgATIbQAEyG1ABMiMAATIjIAEyI0ABMiNgATIjkAEyI6ABMiOwATIjwAEyI9ABMiPwATIkEAEyJCABMiQwATIkUAEyJGABMiwQATIsMAEyLFABMixwATIsoAEyLLABMizAATIs0AEyLOABMi0AATItIAEyLTABMi1AATItYAEyLXABMjUgATI1QAEyNXABMjWQATI1wAEyNdABMjXgATI18AEyNgABMjYgATI2QAEyNlABMjZgATI2gAEyNpABMj5AATI+YAEyPoABMj6gATI+0AEyPuABMj7wATI/AAEyPxABMj8wATI/UAEyP2ABMj9wATI/kAEyP6ABMkdQATJHcAEyR5ABMkewATJH4AEyR/ABMkgAATJIEAEySCABMkhAATJIYAEySHABMkiAATJIoAEySLABMlBgATJQgAEyUKABMlDAATJQ8AEyUQABMlEQATJRIAEyUTABMlFQATJRcAEyUYABMlGQATJRsAEyUcABMlrwATJdIAEyXyABMmEgATJhQAEyYWABMmGAATJhoAEyYdABMmHgATJh8AEyYiABMmIwATJiUAEyYmABMmKAATJisAEyYsABMmLQATJjAAEyYxABMmNgATJk8AEyZYABMmWgATJlwAEyZlABMmaAATJmsAEyZtABMmtgATJtoAEycBABMnJQATJygAEycqABMnLAATJy4AEycwABMnMgATJzMAEyc2ABMnTwATJ3AAEydyABMndAATJ3YAEyd4ABMnegATJ3wAEyd+ABMngAATJ6EAEyekABMnpwATJ6oAEyetABMnsAATJ7MAEye2ABMnuQATJ7sAEyg2ABMoOAATKDoAEyg8ABMoPwATKEAAEyhBABMoQgATKEMAEyhFABMoRwATKEgAEyhJABMoSwATKEwAEyjHABMoyQATKMsAEyjNABMo0AATKNEAEyjSABMo0wATKNQAEyjWABMo2AATKNkAEyjaABMo3AATKN0AEylYABMpWgATKV0AEylfABMpYgATKWMAEylkABMpZQATKWYAEyloABMpagATKWsAEylsABMpbgATKW8AEymIABMpiQATKYoAEymMABMqBwATKgkAEyoLABMqDQATKhAAEyoRABMqEgATKhMAEyoUABMqFgATKhgAEyoZABMqGgATKhwAEyodABMqmAATKpoAEyqcABMqngATKqEAEyqiABMqowATKqQAEyqlABMqpwATKqkAEyqqABMqqwATKq0AEyquABMrKQATKysAEystABMrLwATKzIAEyszABMrNAATKzUAEys2ABMrOAATKzoAEys7ABMrPAATKz4AEys/ABMrugATK7wAEyu+ABMrwAATK8MAEyvEABMrxQATK8YAEyvHABMryQATK8sAEyvMABMrzQATK88AEyvQABMsSwATLE0AEyxPABMsUQATLFQAEyxVABMsVgATLFcAEyxYABMsWgATLFwAEyxdABMsXgATLGAAEyxhABMsqgATLM4AEyz1ABMtGQATLRwAEy0eABMtIAATLSIAEy0kABMtJgATLScAEy0qABMtQwATLWAAEy1iABMtZAATLWYAEy1oABMtagATLWwAEy1uABMtiwATLY4AEy2RABMtlAATLZcAEy2aABMtnQATLaAAEy2iABMuHQATLh8AEy4hABMuIwATLiYAEy4nABMuKAATLikAEy4qABMuLAATLi4AEy4vABMuMAATLjIAEy4zABMurgATLrAAEy6yABMutAATLrcAEy64ABMuuQATLroAEy67ABMuvQATLr8AEy7AABMuwQATLsMAEy7EABMvPwATL0EAEy9DABMvRQATL0gAEy9JABMvSgATL0sAEy9MABMvTgATL1AAEy9RABMvUgATL1QAEy9VABMv0AATL9IAEy/UABMv1gATL9kAEy/aABMv2wATL9wAEy/dABMv3wATL+EAEy/iABMv4wATL+UAEy/mABMwYQATMGMAEzBlABMwZwATMGoAEzBrABMwbAATMG0AEzBuABMwcAATMHIAEzBzABMwdAATMHYAEzB3ABMw8gATMPQAEzD3ABMw+QATMPwAEzD9ABMw/gATMP8AEzEAABMxAgATMQQAEzEFABMxBgATMQgAEzEJABMxIQATMZwAEzGeABMxoAATMaIAEzGlABMxpgATMacAEzGoABMxqQATMasAEzGtABMxrgATMa8AEzGxABMxsgATMkUAEzJoABMyiAATMqgAEzKqABMyrAATMq4AEzKwABMyswATMrQAEzK1ABMyuAATMrkAEzK7ABMyvAATMr4AEzLBABMywgATMsMAEzLGABMyxwATMswAEzLlABMy7gATMvAAEzLyABMy+wATMv4AEzMBABMzAwATM0wAEzNwABMzlwATM7sAEzO+ABMzwAATM8IAEzPEABMzxgATM8gAEzPJABMzzAATM+UAEzQGABM0CAATNAoAEzQMABM0DgATNBAAEzQSABM0FAATNBYAEzQ3ABM0OgATND0AEzRAABM0QwATNEYAEzRJABM0TAATNE8AEzRRABM0zAATNM4AEzTQABM00gATNNUAEzTWABM01wATNNgAEzTZABM02wATNN0AEzTeABM03wATNOEAEzTiABM1XQATNV8AEzVhABM1YwATNWYAEzVnABM1aAATNWkAEzVqABM1bAATNW4AEzVvABM1cAATNXIAEzVzABM17gATNfAAEzXzABM19QATNfgAEzX5ABM1+gATNfsAEzX8ABM1/gATNgAAEzYBABM2AgATNgQAEzYFABM2HgATNh8AEzYgABM2IgATNp0AEzafABM2oQATNqMAEzamABM2pwATNqgAEzapABM2qgATNqwAEzauABM2rwATNrAAEzayABM2swATNy4AEzcwABM3MgATNzQAEzc3ABM3OAATNzkAEzc6ABM3OwATNz0AEzc/ABM3QAATN0EAEzdDABM3RAATN78AEzfBABM3wwATN8UAEzfIABM3yQATN8oAEzfLABM3zAATN84AEzfQABM30QATN9IAEzfUABM31QATOFAAEzhSABM4VAATOFYAEzhZABM4WgATOFsAEzhcABM4XQATOF8AEzhhABM4YgATOGMAEzhlABM4ZgATOOEAEzjjABM45QATOOcAEzjqABM46wATOOwAEzjtABM47gATOPAAEzjyABM48wATOPQAEzj2ABM49wATOUAAEzlkABM5iwATOa8AEzmyABM5tAATObYAEzm4ABM5ugATObwAEzm9ABM5wAATOdkAEzn2ABM5+AATOfoAEzn8ABM5/gATOgAAEzoCABM6BAATOiEAEzokABM6JwATOioAEzotABM6MAATOjMAEzo2ABM6OAATOrMAEzq1ABM6twATOrkAEzq8ABM6vQATOr4AEzq/ABM6wAATOsIAEzrEABM6xQATOsYAEzrIABM6yQATO0QAEztGABM7SAATO0oAEztNABM7TgATO08AEztQABM7UQATO1MAEztVABM7VgATO1cAEztZABM7WgATO9UAEzvXABM72QATO9sAEzveABM73wATO+AAEzvhABM74gATO+QAEzvmABM75wATO+gAEzvqABM76wATPGYAEzxoABM8agATPGwAEzxvABM8cAATPHEAEzxyABM8cwATPHUAEzx3ABM8eAATPHkAEzx7ABM8fAATPPcAEzz5ABM8+wATPP0AEz0AABM9AQATPQIAEz0DABM9BAATPQYAEz0IABM9CQATPQoAEz0MABM9DQATPYgAEz2KABM9jAATPY4AEz2RABM9kgATPZMAEz2UABM9lQATPZcAEz2ZABM9mgATPZsAEz2dABM9ngATPhkAEz4bABM+HQATPh8AEz4iABM+IwATPiQAEz4lABM+JgATPigAEz4qABM+KwATPiwAEz4uABM+LwATPsIAEz7lABM/BQATPyUAEz8nABM/KQATPysAEz8tABM/MAATPzEAEz8yABM/NQATPzYAEz84ABM/OQATPzsAEz8+ABM/PwATP0AAEz9DABM/RAATP00AEz9mABM/bwATP3EAEz9zABM/fAATP38AEz+CABM/hAATP80AEz/xABNAGAATQDwAE0A/ABNAQQATQEMAE0BFABNARwATQEkAE0BKABNATQATQGYAE0CHABNAiQATQIsAE0CNABNAjwATQJEAE0CTABNAlQATQJcAE0C4ABNAuwATQL4AE0DBABNAxAATQMcAE0DKABNAzQATQNAAE0DSABNBTQATQU8AE0FRABNBUwATQVYAE0FXABNBWAATQVkAE0FaABNBXAATQV4AE0FfABNBYAATQWIAE0FjABNB3gATQeAAE0HiABNB5AATQecAE0HoABNB6QATQeoAE0HrABNB7QATQe8AE0HwABNB8QATQfMAE0H0ABNCbwATQnEAE0J0ABNCdgATQnkAE0J6ABNCewATQnwAE0J9ABNCfwATQoEAE0KCABNCgwATQoUAE0KGABNCnwATQqAAE0KhABNCowATQx4AE0MgABNDIgATQyQAE0MnABNDKAATQykAE0MqABNDKwATQy0AE0MvABNDMAATQzEAE0MzABNDNAATQ68AE0OxABNDswATQ7UAE0O4ABNDuQATQ7oAE0O7ABNDvAATQ74AE0PAABNDwQATQ8IAE0PEABNDxQATREAAE0RCABNERAATREYAE0RJABNESgATREsAE0RMABNETQATRE8AE0RRABNEUgATRFMAE0RVABNEVgATRNEAE0TTABNE1QATRNcAE0TaABNE2wATRNwAE0TdABNE3gATROAAE0TiABNE4wATROQAE0TmABNE5wATRWIAE0VkABNFZgATRWgAE0VrABNFbAATRW0AE0VuABNFbwATRXEAE0VzABNFdAATRXUAE0V3ABNFeAATRcEAE0XlABNGDAATRjAAE0YzABNGNQATRjcAE0Y5ABNGOwATRj0AE0Y+ABNGQQATRloAE0Z3ABNGeQATRnsAE0Z9ABNGfwATRoEAE0aDABNGhQATRqIAE0alABNGqAATRqsAE0auABNGsQATRrQAE0a3ABNGuQATRzQAE0c2ABNHOAATRzoAE0c9ABNHPgATRz8AE0dAABNHQQATR0MAE0dFABNHRgATR0cAE0dJABNHSgATR8UAE0fHABNHyQATR8sAE0fOABNHzwATR9AAE0fRABNH0gATR9QAE0fWABNH1wATR9gAE0faABNH2wATSFYAE0hYABNIWgATSFwAE0hfABNIYAATSGEAE0hiABNIYwATSGUAE0hnABNIaAATSGkAE0hrABNIbAATSOcAE0jpABNI6wATSO0AE0jwABNI8QATSPIAE0jzABNI9AATSPYAE0j4ABNI+QATSPoAE0j8ABNI/QATSXgAE0l6ABNJfAATSX4AE0mBABNJggATSYMAE0mEABNJhQATSYcAE0mJABNJigATSYsAE0mNABNJjgATSgkAE0oLABNKDQATSg8AE0oSABNKEwATShQAE0oVABNKFgATShgAE0oaABNKGwATShwAE0oeABNKHwATSpoAE0qcABNKngATSqAAE0qjABNKpAATSqUAE0qmABNKpwATSqkAE0qrABNKrAATSq0AE0qvABNKsAATS0MAE0tmABNLhgATS6YAE0uoABNLqgATS6wAE0uuABNLsQATS7IAE0uzABNLtgATS7cAE0u5ABNLugATS7wAE0u/ABNLwAATS8EAE0vEABNLxQATS8oAE0vjABNL7AATS+4AE0vwABNL+QATS/wAE0v/ABNMAQATTEoAE0xuABNMlQATTLkAE0y8ABNMvgATTMAAE0zCABNMxAATTMYAE0zHABNMygATTOMAE00EABNNBgATTQgAE00KABNNDAATTQ4AE00QABNNEgATTRQAE001ABNNOAATTTsAE00+ABNNQQATTUQAE01HABNNSgATTU0AE01PABNNygATTcwAE03OABNN0AATTdMAE03UABNN1QATTdYAE03XABNN2QATTdsAE03cABNN3QATTd8AE03gABNOWwATTl0AE05fABNOYQATTmQAE05lABNOZgATTmcAE05oABNOagATTmwAE05tABNObgATTnAAE05xABNO7AATTu4AE07xABNO8wATTvYAE073ABNO+AATTvkAE076ABNO/AATTv4AE07/ABNPAAATTwIAE08DABNPHAATTx0AE08eABNPIAATT5sAE0+dABNPnwATT6EAE0+kABNPpQATT6YAE0+nABNPqAATT6oAE0+sABNPrQATT64AE0+wABNPsQATUCwAE1AuABNQMAATUDIAE1A1ABNQNgATUDcAE1A4ABNQOQATUDsAE1A9ABNQPgATUD8AE1BBABNQQgATUL0AE1C/ABNQwQATUMMAE1DGABNQxwATUMgAE1DJABNQygATUMwAE1DOABNQzwATUNAAE1DSABNQ0wATUU4AE1FQABNRUgATUVQAE1FXABNRWAATUVkAE1FaABNRWwATUV0AE1FfABNRYAATUWEAE1FjABNRZAATUd8AE1HhABNR4wATUeUAE1HoABNR6QATUeoAE1HrABNR7AATUe4AE1HwABNR8QATUfIAE1H0ABNR9QATUj4AE1JiABNSiQATUq0AE1KwABNSsgATUrQAE1K2ABNSuAATUroAE1K7ABNSvgATUtcAE1L0ABNS9gATUvgAE1L6ABNS/AATUv4AE1MAABNTAgATUx8AE1MiABNTJQATUygAE1MrABNTLgATUzEAE1M0ABNTNgATU7EAE1OzABNTtQATU7cAE1O6ABNTuwATU7wAE1O9ABNTvgATU8AAE1PCABNTwwATU8QAE1PGABNTxwATVEIAE1REABNURgATVEgAE1RLABNUTAATVE0AE1ROABNUTwATVFEAE1RTABNUVAATVFUAE1RXABNUWAATVNMAE1TVABNU1wATVNkAE1TcABNU3QATVN4AE1TfABNU4AATVOIAE1TkABNU5QATVOYAE1ToABNU6QATVWQAE1VmABNVaQATVWsAE1VuABNVbwATVXAAE1VxABNVcgATVXQAE1V2ABNVdwATVXgAE1V6ABNVewATVfYAE1X4ABNV+gATVfwAE1X/ABNWAAATVgEAE1YCABNWAwATVgUAE1YHABNWCAATVgkAE1YLABNWDAATVocAE1aJABNWiwATVo0AE1aQABNWkQATVpIAE1aTABNWlAATVpYAE1aYABNWmQATVpoAE1acABNWnQATVxgAE1caABNXHAATVx4AE1chABNXIgATVyMAE1ckABNXJQATVycAE1cpABNXKgATVysAE1ctABNXLgATV8EAE1fkABNYBAATWCQAE1gmABNYKAATWCoAE1gsABNYLwATWDAAE1gxABNYNAATWDUAE1g3ABNYOAATWDoAE1g9ABNYPgATWD8AE1hCABNYQwATWEgAE1hhABNYagATWGwAE1huABNYdwATWHoAE1h9ABNYfwATWMgAE1jsABNZEwATWTcAE1k6ABNZPAATWT4AE1lAABNZQgATWUQAE1lFABNZSAATWWEAE1mCABNZhAATWYYAE1mIABNZigATWYwAE1mOABNZkAATWZIAE1mzABNZtgATWbkAE1m8ABNZvwATWcIAE1nFABNZyAATWcsAE1nNABNaSAATWkoAE1pMABNaTgATWlEAE1pSABNaUwATWlQAE1pVABNaVwATWlkAE1paABNaWwATWl0AE1peABNa2QATWtsAE1rdABNa3wATWuIAE1rjABNa5AATWuUAE1rmABNa6AATWuoAE1rrABNa7AATWu4AE1rvABNbagATW2wAE1tvABNbcQATW3QAE1t1ABNbdgATW3cAE1t4ABNbegATW3wAE1t9ABNbfgATW4AAE1uBABNbmgATW5sAE1ucABNbngATXBkAE1wbABNcHQATXB8AE1wiABNcIwATXCQAE1wlABNcJgATXCgAE1wqABNcKwATXCwAE1wuABNcLwATXKoAE1ysABNcrgATXLAAE1yzABNctAATXLUAE1y2ABNctwATXLkAE1y7ABNcvAATXL0AE1y/ABNcwAATXTsAE109ABNdPwATXUEAE11EABNdRQATXUYAE11HABNdSAATXUoAE11MABNdTQATXU4AE11QABNdUQATXcwAE13OABNd0AATXdIAE13VABNd1gATXdcAE13YABNd2QATXdsAE13dABNd3gATXd8AE13hABNd4gATXl0AE15fABNeYQATXmMAE15mABNeZwATXmgAE15pABNeagATXmwAE15uABNebwATXnAAE15yABNecwATXrwAE17gABNfBwATXysAE18uABNfMAATXzIAE180ABNfNgATXzgAE185ABNfPAATX1UAE19yABNfdAATX3YAE194ABNfegATX3wAE19+ABNfgAATX50AE1+gABNfowATX6YAE1+pABNfrAATX68AE1+yABNftAATYC8AE2AxABNgMwATYDUAE2A4ABNgOQATYDoAE2A7ABNgPAATYD4AE2BAABNgQQATYEIAE2BEABNgRQATYMAAE2DCABNgxAATYMYAE2DJABNgygATYMsAE2DMABNgzQATYM8AE2DRABNg0gATYNMAE2DVABNg1gATYVEAE2FTABNhVQATYVcAE2FaABNhWwATYVwAE2FdABNhXgATYWAAE2FiABNhYwATYWQAE2FmABNhZwATYeIAE2HkABNh5wATYekAE2HsABNh7QATYe4AE2HvABNh8AATYfIAE2H0ABNh9QATYfYAE2H4ABNh+QATYnQAE2J2ABNieAATYnoAE2J9ABNifgATYn8AE2KAABNigQATYoMAE2KFABNihgATYocAE2KJABNiigATYwUAE2MHABNjCQATYwsAE2MOABNjDwATYxAAE2MRABNjEgATYxQAE2MWABNjFwATYxgAE2MaABNjGwATY5YAE2OYABNjmgATY5wAE2OfABNjoAATY6EAE2OiABNjowATY6UAE2OnABNjqAATY6kAE2OrABNjrAATZD8AE2RiABNkggATZKIAE2SkABNkpgATZKgAE2SqABNkrQATZK4AE2SvABNksgATZLMAE2S1ABNktgATZLgAE2S7ABNkvAATZL0AE2TAABNkwQATZMYAE2TfABNk6AATZOoAE2TsABNk9QATZPgAE2T7ABNk/QATZUYAE2VqABNlkQATZbUAE2W4ABNlugATZbwAE2W+ABNlwAATZcIAE2XDABNlxgATZd8AE2YAABNmAgATZgQAE2YGABNmCAATZgoAE2YMABNmDgATZhAAE2YxABNmNAATZjcAE2Y6ABNmPQATZkAAE2ZDABNmRgATZkkAE2ZLABNmxgATZsgAE2bKABNmzAATZs8AE2bQABNm0QATZtIAE2bTABNm1QATZtcAE2bYABNm2QATZtsAE2bcABNnVwATZ1kAE2dbABNnXQATZ2AAE2dhABNnYgATZ2MAE2dkABNnZgATZ2gAE2dpABNnagATZ2wAE2dtABNn6AATZ+oAE2ftABNn7wATZ/IAE2fzABNn9AATZ/UAE2f2ABNn+AATZ/oAE2f7ABNn/AATZ/4AE2f/ABNoGAATaBkAE2gaABNoHAATaJcAE2iZABNomwATaJ0AE2igABNooQATaKIAE2ijABNopAATaKYAE2ioABNoqQATaKoAE2isABNorQATaSgAE2kqABNpLAATaS4AE2kxABNpMgATaTMAE2k0ABNpNQATaTcAE2k5ABNpOgATaTsAE2k9ABNpPgATabkAE2m7ABNpvQATab8AE2nCABNpwwATacQAE2nFABNpxgATacgAE2nKABNpywATacwAE2nOABNpzwATakoAE2pMABNqTgATalAAE2pTABNqVAATalUAE2pWABNqVwATalkAE2pbABNqXAATal0AE2pfABNqYAATatsAE2rdABNq3wATauEAE2rkABNq5QATauYAE2rnABNq6AATauoAE2rsABNq7QATau4AE2rwABNq8QATazoAE2teABNrhQATa6kAE2usABNrrgATa7AAE2uyABNrtAATa7YAE2u3ABNrugATa9MAE2vwABNr8gATa/QAE2v2ABNr+AATa/oAE2v8ABNr/gATbBsAE2weABNsIQATbCQAE2wnABNsKgATbC0AE2wwABNsMgATbK0AE2yvABNssQATbLMAE2y2ABNstwATbLgAE2y5ABNsugATbLwAE2y+ABNsvwATbMAAE2zCABNswwATbT4AE21AABNtQgATbUQAE21HABNtSAATbUkAE21KABNtSwATbU0AE21PABNtUAATbVEAE21TABNtVAATbc8AE23RABNt0wATbdUAE23YABNt2QATbdoAE23bABNt3AATbd4AE23gABNt4QATbeIAE23kABNt5QATbmAAE25iABNuZQATbmcAE25qABNuawATbmwAE25tABNubgATbnAAE25yABNucwATbnQAE252ABNudwATbvIAE270ABNu9gATbvgAE277ABNu/AATbv0AE27+ABNu/wATbwEAE28DABNvBAATbwUAE28HABNvCAATb4MAE2+FABNvhwATb4kAE2+MABNvjQATb44AE2+PABNvkAATb5IAE2+UABNvlQATb5YAE2+YABNvmQATcBQAE3AWABNwGAATcBoAE3AdABNwHgATcB8AE3AgABNwIQATcCMAE3AlABNwJgATcCcAE3ApABNwKgATcDsAE3A8ABNwPgATcMEAE3DlABNxCQATcSwAE3FTABNxcwATcZoAE3HBABNx4QATcgUAE3IpABNyKwATci4AE3IwABNyMgATcjQAE3I3ABNyOgATcjwAE3I+ABNyQQATckMAE3JFABNySAATcksAE3JMABNyUQATcmoAE3JvABNycQATcnYAE3J5ABNyewATcsQAE3LoABNzDwATczMAE3M2ABNzOAATczoAE3M8ABNzPgATc0AAE3NBABNzRAATc10AE3OCABNzhAATc4YAE3OIABNzigATc4wAE3OOABNzkAATc5IAE3OUABNzuQATc7wAE3O/ABNzwgATc8UAE3PIABNzywATc84AE3PRABNz1AATc9YAE3RRABN0UwATdFYAE3RYABN0WwATdFwAE3RdABN0XgATdF8AE3RhABN0YwATdGQAE3RlABN0ZwATdGgAE3R5ABN0egATdHwAE3T3ABN0+QATdPsAE3T9ABN1AAATdQEAE3UCABN1AwATdQQAE3UGABN1CAATdQkAE3UKABN1DAATdQ0AE3WIABN1igATdY0AE3WPABN1kgATdZMAE3WUABN1lQATdZYAE3WYABN1mgATdZsAE3WcABN1ngATdZ8AE3WwABN1tQATdbgAE3W6ABN1ywATddQAE3XXABN12gATddwAE3XvABN2agATdmwAE3ZuABN2cAATdnMAE3Z0ABN2dQATdnYAE3Z3ABN2eQATdnsAE3Z8ABN2fQATdn8AE3aAABN2+wATdv0AE3cAABN3AgATdwUAE3cGABN3BwATdwgAE3cJABN3CwATdw0AE3cOABN3DwATdxEAE3cSABN3IwATdyQAE3cmABN3oQATd6MAE3elABN3pwATd6oAE3erABN3rAATd60AE3euABN3sAATd7IAE3ezABN3tAATd7YAE3e3ABN4MgATeDQAE3g3ABN4OQATeDwAE3g9ABN4PgATeD8AE3hAABN4QgATeEQAE3hFABN4RgATeEgAE3hJABN4YgATeGMAE3hkABN4ZgATeOEAE3jjABN45QATeOcAE3jqABN46wATeOwAE3jtABN47gATePAAE3jyABN48wATePQAE3j2ABN49wATeXIAE3l0ABN5dwATeXkAE3l8ABN5fQATeX4AE3l/ABN5gAATeYIAE3mEABN5hQATeYYAE3mIABN5iQATebAAE3nJABN50gATedUAE3nYABN54QATeeQAE3nnABN56QATefwAE3qPABN6sgATetIAE3ryABN69AATevYAE3r4ABN6+gATev0AE3r+ABN6/wATewIAE3sDABN7BQATewYAE3sIABN7CwATewwAE3sNABN7EAATexEAE3sWABN7LwATezgAE3s6ABN7PAATe0UAE3tIABN7SwATe00AE3uWABN7ugATe+EAE3wFABN8CAATfAoAE3wMABN8DgATfBAAE3wSABN8EwATfBYAE3wvABN8UAATfFIAE3xUABN8VgATfFgAE3xaABN8XAATfF4AE3xgABN8gQATfIQAE3yHABN8igATfI0AE3yQABN8kwATfJYAE3yZABN8mwATfRYAE30YABN9GgATfRwAE30fABN9IAATfSEAE30iABN9IwATfSUAE30nABN9KAATfSkAE30rABN9LAATfacAE32pABN9qwATfa0AE32wABN9sQATfbIAE32zABN9tAATfbYAE324ABN9uQATfboAE328ABN9vQATfjgAE346ABN+PQATfj8AE35CABN+QwATfkQAE35FABN+RgATfkgAE35KABN+SwATfkwAE35OABN+TwATfmgAE35pABN+agATfmwAE37nABN+6QATfusAE37tABN+8AATfvEAE37yABN+8wATfvQAE372ABN++AATfvkAE376ABN+/AATfv0AE394ABN/egATf3wAE39+ABN/gQATf4IAE3+DABN/hAATf4UAE3+HABN/iQATf4oAE3+LABN/jQATf44AE4AJABOACwATgA0AE4APABOAEgATgBMAE4AUABOAFQATgBYAE4AYABOAGgATgBsAE4AcABOAHgATgB8AE4CaABOAnAATgJ4AE4CgABOAowATgKQAE4ClABOApgATgKcAE4CpABOAqwATgKwAE4CtABOArwATgLAAE4ErABOBLQATgS8AE4ExABOBNAATgTUAE4E2ABOBNwATgTgAE4E6ABOBPAATgT0AE4E+ABOBQAATgUEAE4GKABOBrgATgdUAE4H5ABOB/AATgf4AE4IAABOCAgATggQAE4IGABOCBwATggoAE4IjABOCQAATgkIAE4JEABOCRgATgkgAE4JKABOCTAATgk4AE4JrABOCbgATgnEAE4J0ABOCdwATgnoAE4J9ABOCgAATgoIAE4L9ABOC/wATgwEAE4MDABODBgATgwcAE4MIABODCQATgwoAE4MMABODDgATgw8AE4MQABODEgATgxMAE4OOABODkAATg5IAE4OUABODlwATg5gAE4OZABODmgATg5sAE4OdABODnwATg6AAE4OhABODowATg6QAE4QfABOEIQAThCMAE4QlABOEKAAThCkAE4QqABOEKwAThCwAE4QuABOEMAAThDEAE4QyABOENAAThDUAE4SwABOEsgAThLUAE4S3ABOEugAThLsAE4S8ABOEvQAThL4AE4TAABOEwgAThMMAE4TEABOExgAThMcAE4VCABOFRAAThUYAE4VIABOFSwAThUwAE4VNABOFTgAThU8AE4VRABOFUwAThVQAE4VVABOFVwAThVgAE4XTABOF1QAThdcAE4XZABOF3AAThd0AE4XeABOF3wATheAAE4XiABOF5AATheUAE4XmABOF6AAThekAE4ZkABOGZgAThmgAE4ZqABOGbQAThm4AE4ZvABOGcAAThnEAE4ZzABOGdQAThnYAE4Z3ABOGeQAThnoAE4cNABOHMAATh1AAE4dwABOHcgATh3QAE4d2ABOHeAATh3sAE4d8ABOHfQATh4AAE4eBABOHgwATh4QAE4eGABOHiQATh4oAE4eLABOHjgATh48AE4eUABOHrQATh7YAE4e4ABOHugATh8MAE4fGABOHyQATh8sAE4gUABOIOAATiF8AE4iDABOIhgATiIgAE4iKABOIjAATiI4AE4iQABOIkQATiJQAE4itABOIzgATiNAAE4jSABOI1AATiNYAE4jYABOI2gATiNwAE4jeABOI/wATiQIAE4kFABOJCAATiQsAE4kOABOJEQATiRQAE4kXABOJGQATiZQAE4mWABOJmAATiZoAE4mdABOJngATiZ8AE4mgABOJoQATiaMAE4mlABOJpgATiacAE4mpABOJqgATiiUAE4onABOKKQATiisAE4ouABOKLwATijAAE4oxABOKMgATijQAE4o2ABOKNwATijgAE4o6ABOKOwATirYAE4q4ABOKuwATir0AE4rAABOKwQATisIAE4rDABOKxAATisYAE4rIABOKyQATisoAE4rMABOKzQATiuYAE4rnABOK6AATiuoAE4tlABOLZwATi2kAE4trABOLbgATi28AE4twABOLcQATi3IAE4t0ABOLdgATi3cAE4t4ABOLegATi3sAE4v2ABOL+AATi/oAE4v8ABOL/wATjAAAE4wBABOMAgATjAMAE4wFABOMBwATjAgAE4wJABOMCwATjAwAE4yHABOMiQATjIsAE4yNABOMkAATjJEAE4ySABOMkwATjJQAE4yWABOMmAATjJkAE4yaABOMnAATjJ0AE40YABONGgATjRwAE40eABONIQATjSIAE40jABONJAATjSUAE40nABONKQATjSoAE40rABONLQATjS4AE42pABONqwATja0AE42vABONsgATjbMAE420ABONtQATjbYAE424ABONugATjbsAE428ABONvgATjb8AE44IABOOLAATjlMAE453ABOOegATjnwAE45+ABOOgAATjoIAE46EABOOhQATjogAE46hABOOvgATjsAAE47CABOOxAATjsYAE47IABOOygATjswAE47pABOO7AATju8AE47yABOO9QATjvgAE477ABOO/gATjwAAE497ABOPfQATj38AE4+BABOPhAATj4UAE4+GABOPhwATj4gAE4+KABOPjAATj40AE4+OABOPkAATj5EAE5AMABOQDgATkBAAE5ASABOQFQATkBYAE5AXABOQGAATkBkAE5AbABOQHQATkB4AE5AfABOQIQATkCIAE5CdABOQnwATkKEAE5CjABOQpgATkKcAE5CoABOQqQATkKoAE5CsABOQrgATkK8AE5CwABOQsgATkLMAE5EuABORMAATkTMAE5E1ABOROAATkTkAE5E6ABOROwATkTwAE5E+ABORQAATkUEAE5FCABORRAATkUUAE5HAABORwgATkcQAE5HGABORyQATkcoAE5HLABORzAATkc0AE5HPABOR0QATkdIAE5HTABOR1QATkdYAE5JRABOSUwATklUAE5JXABOSWgATklsAE5JcABOSXQATkl4AE5JgABOSYgATkmMAE5JkABOSZgATkmcAE5LiABOS5AATkuYAE5LoABOS6wATkuwAE5LtABOS7gATku8AE5LxABOS8wATkvQAE5L1ABOS9wATkvgAE5MJABOTCgATkwwAE5MlABOTJgATkycAE5MpABOTQgATk0MAE5NEABOTRgATk18AE5NgABOTYQATk2MAE5N0ABOTgwATk5wAE5OrABOTvQATk9EAE5PoABOT+gATlAsAE5QMABOUDgATlCcAE5QoABOUKQATlCsAE5RAABOUUQATlFsAE5RoAAAAAAAABAQAAAAAAAHiHAAAAAAAAAAAAAAAAAATlHA= + + ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v49.xcdatamodel + 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WAAAc2gAAHOkAABz4AAAc+QAAHQcAAB0IAAAdCQAAHQoAAB0LAAAdDAAAHSEAAB0iAAAdKgAAHTYAAB1KAAAdWQAAHWgAAB13AAAdewAAHYoAAB2ZAAAdqAAAHbcAAB3GAAAd0gAAHeQAAB3zAAAeAgAAHhEAAB4gAAAeLwAAHj4AAB5NAAAeYgAAHmMAAB5rAAAedwAAHosAAB6aAAAeqQAAHrgAAB68AAAeywAAHtoAAB7pAAAe+AAAHwcAAB8TAAAfJQAAHzQAAB9DAAAfUgAAH2EAAB9iAAAfcQAAH4AAAB+PAAAfpAAAH6UAAB+tAAAfuQAAH80AAB/cAAAf6wAAH/oAAB/+AAAgDQAAIBwAACArAAAgOgAAIEkAACBVAAAgZwAAIHYAACCFAAAglAAAIKMAACCyAAAgwQAAINAAACDlAAAg5gAAIO4AACD6AAAhDgAAIR0AACEsAAAhOwAAIT8AACFOAAAhXQAAIWwAACF7AAAhigAAIZYAACGoAAAhtwAAIcYAACHVAAAh5AAAIfMAACICAAAiEQAAIiYAACInAAAiLwAAIjsAACJPAAAiXgAAIm0AACJ8AAAigAAAIo8AACKeAAAirQAAIrwAACLLAAAi1wAAIukAACL4AAAjBwAAIxYAACMlAAAjNAAAI0MAACNSAAAjUwAAI1YAACNfAAAjbgAAI30AACOMAAAjoQAAI6IAACOqAAAjtgAAI8oAACPZAAAj6AAAI/cAACP7AAAkCgAAJBkAACQoAAAkNwAAJEYAACRSAAAkZAAAJHMAACSCAAAkkQAAJKAAACSvAAAkvgAAJM0AACTQAAAk3wAAJO4AACT9AAAlAAAAJRoAACUbAAAlIQAAJS0AACVDAAAlUgAAJVUAACVkAAAlcwAAJXcAACV8AAAlfQAAJX4AACWNAAAlnAAAJZ8AACWuAAAlvQAAJcEAACXQAAAl3wAAJeAAACYAAAAmAQAAJgIAACYDAAAmBAAAJgUAACYGAAAmBwAAJggAACYJAAAmCgAAJgsAACYMAAAmDQAAJg4AACYjAAAmJAAAJiwAACY4AAAmTAAAJlsAACZqAAAmeQAAJn0AACaMAAAmmwAAJqoAACa5AAAmyAAAJtQAACbmAAAm9QAAJwQAACcTAAAnIgAAJzEAACdAAAAnQQAAJ1AAACdlAAAnZgAAJ24AACd6AAAnjgAAJ50AACesAAAnuwAAJ78AACfOAAAn3QAAJ+wAACf7AAAoCgAAKBYAACgoAAAoNwAAKEYAAChVAAAoZAAAKH4AACh/AAAohQAAKJEAACinAAAotgAAKLkAACjIAAAo1wAAKNsAACjhAAAo4gAAKOMAACjkAAAo8wAAKQIAACkFAAApFAAAKSMAACknAAApNgAAKUUAAClGAAApYAAAKWEAACliAAApYwAAKWQAACllAAApZgAAKWcAACloAAApaQAAKWoAAClrAAApgAAAKYEAACmJAAAplQAAKakAACm4AAApxwAAKdYAACnaAAAp6QAAKfgAACoHAAAqFgAAKiUAACoxAAAqQwAAKlIAACphAAAqcAAAKn8AACqOAAAqnQAAKqwAACrBAAAqwgAAKsoAACrWAAAq6gAAKvkAACsIAAArFwAAKxsAACsqAAArOQAAK0gAACtXAAArZgAAK3IAACuEAAArkwAAK6IAACuxAAArwAAAK88AACveAAAr7QAALAIAACwDAAAsCwAALBcAACwrAAAsOgAALEkAACxYAAAsXAAALGsAACx6AAAsiQAALJgAACynAAAsswAALMUAACzUAAAs4wAALPIAAC0BAAAtEAAALR8AAC0uAAAtQwAALUQAAC1MAAAtWAAALWwAAC17AAAtigAALZkAAC2dAAAtrAAALbsAAC3KAAAt2QAALegAAC30AAAuBgAALhUAAC4kAAAuMwAALkIAAC5cAAAuXQAALmMAAC5vAAAuhQAALpQAAC6XAAAupgAALrUAAC65AAAuwAAALsEAAC7CAAAuwwAALsQAAC7TAAAu4gAALuUAAC70AAAvAwAALwcAAC8WAAAvJQAALyYAAC9AAAAvQQAAL0IAAC9DAAAvRAAAL0UAAC9GAAAvRwAAL0gAAC9JAAAvSgAAL0sAAC9gAAAvYQAAL2kAAC91AAAviQAAL5gAAC+nAAAvtgAAL7oAAC/JAAAv2AAAL+cAAC/2AAAwBQAAMBEAADAjAAAwMgAAMEEAADBQAAAwXwAAMG4AADB9AAAwjAAAMKEAADCiAAAwqgAAMLYAADDKAAAw2QAAMOgAADD3AAAw+wAAMQoAADEZAAAxKAAAMTcAADFGAAAxUgAAMWQAADFzAAAxggAAMZEAADGgAAAxrwAAMb4AADHNAAAx4gAAMeMAADHrAAAx9wAAMgsAADIaAAAyKQAAMjgAADI8AAAySwAAMloAADJpAAAyeAAAMocAADKTAAAypQAAMrQAADLDAAAy0gAAMuEAADLiAAAy8QAAMwAAADMPAAAzJAAAMyUAADMtAAAzOQAAM00AADNcAAAzawAAM3oAADN+AAAzjQAAM5wAADOrAAAzugAAM8kAADPVAAAz5wAAM/YAADQFAAA0FAAANCMAADQyAAA0QQAANFAAADRlAAA0ZgAANG4AADR6AAA0jgAANJ0AADSsAAA0uwAANL8AADTOAAA03QAANOwAADT7AAA1CgAANRYAADUoAAA1NwAANUYAADVVAAA1ZAAANXMAADWCAAA1kQAANaYAADWnAAA1rwAANbsAADXPAAA13gAANe0AADX8AAA2AAAANg8AADYeAAA2LQAANjwAADZLAAA2VwAANmkAADZ4AAA2hwAANpYAADalAAA2tAAANsMAADbSAAA25wAANugAADbwAAA2/AAANxAAADcfAAA3LgAANz0AADdBAAA3UAAAN18AADduAAA3fQAAN4wAADeYAAA3qgAAN7kAADfIAAA31wAAN+YAADf1AAA4BAAAOBMAADgoAAA4KQAAODEAADg9AAA4UQAAOGAAADhvAAA4fgAAOIIAADiRAAA4oAAAOK8AADi+AAA4zQAAONkAADjrAAA4+gAAOQkAADkYAAA5JwAAOTYAADlFAAA5VAAAOWkAADlqAAA5cgAAOX4AADmSAAA5oQAAObAAADm/AAA5wwAAOdIAADnhAAA58AAAOf8AADoOAAA6GgAAOiwAADo7AAA6SgAAOlkAADpoAAA6dwAAOoYAADqVAAA6qgAAOqsAADqzAAA6vwAAOtMAADriAAA68QAAOwAAADsEAAA7EwAAOyIAADsxAAA7QAAAO08AADtbAAA7bQAAO3wAADuLAAA7mgAAO6kAADu4AAA7xwAAO9YAADvrAAA77AAAO/QAADwAAAA8FAAAPCMAADwyAAA8QQAAPEUAADxUAAA8YwAAPHIAADyBAAA8kAAAPJwAADyuAAA8vQAAPMwAADzbAAA86gAAPPkAAD0IAAA9FwAAPRoAAD0pAAA9OAAAPUcAAD1cAAA9XQAAPWUAAD1xAAA9hQAAPZQAAD2jAAA9sgAAPbYAAD3FAAA91AAAPeMAAD3yAAA+AQAAPg0AAD4fAAA+LgAAPj0AAD5MAAA+WwAAPmoAAD55AAA+iAAAPp0AAD6eAAA+pgAAPrIAAD7GAAA+1QAAPuQAAD7zAAA+9wAAPwYAAD8VAAA/JAAAPzMAAD9CAAA/TgAAP2AAAD9vAAA/fgAAP40AAD+cAAA/qwAAP7oAAD/JAAA/3gAAP98AAD/nAAA/8wAAQAcAAEAWAABAJQAAQDQAAEA4AABARwAAQFYAAEBlAABAdAAAQIMAAECPAABAoQAAQLAAAEC/AABAzgAAQN0AAED3AABA+AAAQP4AAEEKAABBIAAAQS8AAEEyAABBQQAAQVAAAEFUAABBWAAAQVkAAEFoAABBdwAAQXoAAEGJAABBmAAAQZwAAEGrAABBugAAQbsAAEHFAABBxgAAQccAAEHcAABB3QAAQeUAAEHxAABCBQAAQhQAAEIjAABCMgAAQjYAAEJFAABCVAAAQmMAAEJyAABCgQAAQo0AAEKfAABCrgAAQr0AAELMAABC2wAAQuoAAEL5AABDCAAAQx0AAEMeAABDJgAAQzIAAENGAABDVQAAQ2QAAENzAABDdwAAQ4YAAEOVAABDpAAAQ7MAAEPCAABDzgAAQ+AAAEPvAABD/gAARA0AAEQcAABEHQAARCwAAEQ7AABESgAARF8AAERgAABEaAAARHQAAESIAABElwAARKYAAES1AABEuQAARMgAAETXAABE5gAARPUAAEUEAABFEAAARSIAAEUxAABFQAAARU8AAEVeAABFbQAARXwAAEWLAABFjgAARZ0AAEWsAABFuwAARdAAAEXRAABF2QAAReUAAEX5AABGCAAARhcAAEYmAABGKgAARjkAAEZIAABGVwAARmYAAEZ1AABGgQAARpMAAEaiAABGsQAARsAAAEbPAABG3gAARu0AAEb8AABHEQAARxIAAEcaAABHJgAARzoAAEdJAABHWAAAR2cAAEdrAABHegAAR4kAAEeYAABHpwAAR7YAAEfCAABH1AAAR+MAAEfyAABIAQAASBAAAEgfAABILgAASD0AAEhSAABIUwAASFsAAEhnAABIewAASIoAAEiZAABIqAAASKwAAEi7AABIygAASNkAAEjoAABI9wAASQMAAEkVAABJJAAASTMAAElCAABJUQAASWAAAElvAABJfgAASZMAAEmUAABJnAAASagAAEm8AABJywAASdoAAEnpAABJ7QAASfwAAEoLAABKGgAASikAAEo4AABKRAAASlYAAEplAABKdAAASoMAAEqSAABKoQAASrAAAEq/AABKwgAAStEAAErgAABK7wAASwQAAEsFAABLDQAASxkAAEstAABLPAAAS0sAAEtaAABLXgAAS20AAEt8AABLiwAAS5oAAEupAABLtQAAS8cAAEvWAABL5QAAS/QAAEwDAABMEgAATCEAAEwwAABMRQAATEYAAExOAABMWgAATG4AAEx9AABMjAAATJsAAEyfAABMrgAATL0AAEzMAABM2wAATOoAAEz2AABNCAAATRcAAE0mAABNNQAATUQAAE1TAABNYgAATXEAAE2GAABNhwAATY8AAE2bAABNrwAATb4AAE3NAABN3AAATeAAAE3vAABN/gAATg0AAE4cAABOKwAATjcAAE5JAABOWAAATmcAAE52AABOhQAATpQAAE6jAABOsgAATscAAE7IAABO0AAATtwAAE7wAABO/wAATw4AAE8dAABPIQAATzAAAE8/AABPTgAAT10AAE9sAABPeAAAT4oAAE+ZAABPqAAAT7cAAE/GAABP1QAAT+QAAE/zAABQCAAAUAkAAFARAABQHQAAUDEAAFBAAABQTwAAUF4AAFBiAABQcQAAUIAAAFCPAABQngAAUK0AAFC5AABQywAAUNoAAFDpAABQ+AAAUQcAAFEWAABRJQAAUSYAAFE1AABRSgAAUUsAAFFTAABRXwAAUXMAAFGCAABRkQAAUaAAAFGkAABRswAAUcIAAFHRAABR4AAAUe8AAFH7AABSDQAAUhwAAFIrAABSOgAAUkkAAFJYAABSZwAAUmgAAFJ3AABSjAAAUo0AAFKVAABSoQAAUrUAAFLEAABS0wAAUuIAAFLmAABS9QAAUwQAAFMTAABTIgAAUzEAAFM9AABTTwAAU14AAFNtAABTfAAAU4sAAFOaAABTqQAAU7gAAFPNAABTzgAAU9YAAFPiAABT9gAAVAUAAFQUAABUIwAAVCcAAFQ2AABURQAAVFQAAFRjAABUcgAAVH4AAFSQAABUnwAAVK4AAFS9AABUzAAAVNsAAFTqAABU6wAAVPoAAFUPAABVEAAAVRgAAFUkAABVOAAAVUcAAFVWAABVZQAAVWkAAFV4AABVhwAAVZYAAFWlAABVtAAAVcAAAFXSAABV4QAAVfAAAFX/AABWDgAAVh0AAFYsAABWOwAAVlAAAFZRAABWWQAAVmUAAFZ5AABWiAAAVpcAAFamAABWqgAAVrkAAFbIAABW1wAAVuYAAFb1AABXAQAAVxMAAFciAABXMQAAV0AAAFdPAABXXgAAV20AAFd8AABXkQAAV5IAAFeaAABXpgAAV7oAAFfJAABX2AAAV+cAAFfrAABX+gAAWAkAAFgYAABYJwAAWDYAAFhCAABYVAAAWGMAAFhyAABYgQAAWJAAAFifAABYrgAAWK8AAFi+AABY0wAAWNQAAFjcAABY6AAAWPwAAFkLAABZGgAAWSkAAFktAABZPAAAWUsAAFlaAABZaQAAWXgAAFmEAABZlgAAWaUAAFm0AABZwwAAWdIAAFnhAABZ8AAAWf8AAFoCAABaHAAAWh0AAFojAABaLwAAWkUAAFpUAABaVwAAWmYAAFp1AABaeAAAWocAAFqWAABamQAAWqgAAFq3AABauwAAWsoAAFrZAABa2gAAWuQAAFrlAABa5gAAWucAAFr8AABa/QAAWwUAAFsRAABbJQAAWzQAAFtDAABbUgAAW1YAAFtlAABbdAAAW4MAAFuSAABboQAAW60AAFu/AABbzgAAW90AAFvsAABb+wAAXAoAAFwZAABcGgAAXCkAAFw+AABcPwAAXEcAAFxTAABcZwAAXHYAAFyFAABclAAAXJgAAFynAABctgAAXMUAAFzUAABc4wAAXO8AAF0BAABdEAAAXR8AAF0uAABdPQAAXVcAAF1YAABdXgAAXWoAAF2AAABdjwAAXZIAAF2hAABdsAAAXbMAAF3CAABd0QAAXdQAAF3jAABd8gAAXfYAAF4FAABeFAAAXhUAAF45AABeOgAAXjsAAF48AABePQAAXj4AAF4/AABeQAAAXkEAAF5CAABeQwAAXkQAAF5FAABeRgAAXkcAAF5IAABeSQAAXl4AAF5fAABeZwAAXnMAAF6HAABelgAAXqUAAF60AABeuAAAXscAAF7WAABe5QAAXvQAAF8DAABfDwAAXyEAAF8wAABfPwAAX04AAF9dAABfbAAAX3sAAF+KAABfnwAAX6AAAF+oAABftAAAX8gAAF/XAABf5gAAX/UAAF/5AABgCAAAYBcAAGAmAABgNQAAYEQAAGBQAABgYgAAYHEAAGCAAABgjwAAYJ4AAGCtAABgvAAAYMsAAGDgAABg4QAAYOkAAGD1AABhCQAAYRgAAGEnAABhNgAAYToAAGFJAABhWAAAYWcAAGF2AABhhQAAYZEAAGGjAABhsgAAYcEAAGHQAABh3wAAYe4AAGH9AABiDAAAYiEAAGIiAABiKgAAYjYAAGJKAABiWQAAYmgAAGJ3AABiewAAYooAAGKZAABiqAAAYrcAAGLGAABi0gAAYuQAAGLzAABjAgAAYxEAAGMgAABjIQAAYzAAAGM/AABjTgAAY2MAAGNkAABjbAAAY3gAAGOMAABjmwAAY6oAAGO5AABjvQAAY8wAAGPbAABj6gAAY/kAAGQIAABkFAAAZCYAAGQ1AABkRAAAZFMAAGRiAABkcQAAZIAAAGSPAABkpAAAZKUAAGStAABkuQAAZM0AAGTcAABk6wAAZPoAAGT+AABlDQAAZRwAAGUrAABlOgAAZUkAAGVVAABlZwAAZXYAAGWFAABllAAAZaMAAGW9AABlvgAAZcQAAGXQAABl5gAAZfUAAGX4AABmBwAAZhYAAGYZAABmKAAAZjcAAGY6AABmSQAAZlgAAGZcAABmawAAZnoAAGZ7AABmhwAAZogAAGaJAABmigAAZosAAGagAABmoQAAZqkAAGa1AABmyQAAZtgAAGbnAABm9gAAZvoAAGcJAABnGAAAZycAAGc2AABnRQAAZ1EAAGdjAABncgAAZ4EAAGeQAABnnwAAZ7kAAGe6AABnwAAAZ8wAAGfiAABn8QAAZ/QAAGgDAABoEgAAaBYAAGgdAABoHgAAaB8AAGggAABoIQAAaDAAAGg/AABoQgAAaFEAAGhgAABoZAAAaHMAAGiCAABogwAAaK8AAGiwAABosQAAaLIAAGizAABotAAAaLUAAGi2AABotwAAaLgAAGi5AABougAAaLsAAGi8AABovQAAaL4AAGi/AABowAAAaMEAAGjCAABowwAAaNgAAGjZAABo4QAAaO0AAGkBAABpEAAAaR8AAGkuAABpMgAAaUEAAGlQAABpXwAAaW4AAGl9AABpiQAAaZsAAGmqAABpuQAAacgAAGnXAABp5gAAafUAAGoEAABqGQAAahoAAGoiAABqLgAAakIAAGpRAABqYAAAam8AAGpzAABqggAAapEAAGqgAABqrwAAar4AAGrKAABq3AAAausAAGr6AABrCQAAaxgAAGsnAABrNgAAa0UAAGtaAABrWwAAa2MAAGtvAABrgwAAa5IAAGuhAABrsAAAa7QAAGvDAABr0gAAa+EAAGvwAABr/wAAbAsAAGwdAABsLAAAbC0AAGw8AABsSwAAbFoAAGxpAABseAAAbIcAAGycAABsnQAAbKUAAGyxAABsxQAAbNQAAGzjAABs8gAAbPYAAG0FAABtFAAAbSMAAG0yAABtQQAAbU0AAG1fAABtbgAAbX0AAG2MAABtmwAAbbUAAG22AABtvAAAbcgAAG3eAABt7QAAbfAAAG3/AABuDgAAbhEAAG4gAABuLwAAbjIAAG5BAABuUAAAblQAAG5jAABucgAAbnMAAG6FAABuhgAAbocAAG6IAABuiQAAbooAAG6LAABujAAAbqEAAG6iAABuqgAAbrYAAG7KAABu2QAAbugAAG73AABu+wAAbwoAAG8ZAABvKAAAbzcAAG9GAABvUgAAb2QAAG9zAABvggAAb5EAAG+gAABvrwAAb74AAG/NAABv4gAAb+MAAG/rAABv9wAAcAsAAHAaAABwKQAAcDgAAHA8AABwSwAAcFoAAHBpAABweAAAcIcAAHCTAABwpQAAcLQAAHDDAABw0gAAcOEAAHDwAABw/wAAcQ4AAHEjAABxJAAAcSwAAHE4AABxTAAAcVsAAHFqAABxeQAAcX0AAHGMAABxmwAAcaoAAHG5AABxyAAAcdQAAHHmAABx9QAAcgQAAHITAAByIgAAcjEAAHJAAAByTwAAcmQAAHJlAABybQAAcnkAAHKNAABynAAAcqsAAHK6AAByvgAAcs0AAHLcAABy6wAAcvoAAHMJAABzFQAAcycAAHM2AABzRQAAc1QAAHNjAABzcgAAc4EAAHOQAABzpQAAc6YAAHOuAABzugAAc84AAHPdAABz7AAAc/sAAHP/AAB0DgAAdB0AAHQsAAB0OwAAdEoAAHRWAAB0aAAAdHcAAHSGAAB0lQAAdKQAAHSzAAB0wgAAdNEAAHTmAAB05wAAdO8AAHT7AAB1DwAAdR4AAHUtAAB1PAAAdUAAAHVPAAB1XgAAdW0AAHV8AAB1iwAAdZcAAHWpAAB1uAAAdccAAHXWAAB15QAAdfQAAHYDAAB2EgAAdicAAHYoAAB2MAAAdjwAAHZQAAB2XwAAdm4AAHZ9AAB2gQAAdpAAAHafAAB2rgAAdr0AAHbMAAB22AAAduoAAHb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0AACaAwAAmhIAAJohAACaLQAAmj8AAJpOAACaXQAAmmwAAJp7AACalQAAmpYAAJqcAACaqAAAmr4AAJrNAACa0AAAmt8AAJruAACa8QAAmwAAAJsPAACbEgAAmyEAAJswAACbNAAAm0MAAJtSAACbUwAAm18AAJtgAACbYQAAm2IAAJtjAACbeAAAm3kAAJuBAACbjQAAm6EAAJuwAACbvwAAm84AAJvSAACb4QAAm/AAAJv/AACcDgAAnB0AAJwpAACcOwAAnEoAAJxZAACcaAAAnHcAAJyGAACclQAAnKQAAJy5AACcugAAnMIAAJzOAACc4gAAnPEAAJ0AAACdDwAAnRMAAJ0iAACdMQAAnUAAAJ1PAACdXgAAnWoAAJ18AACdiwAAnZoAAJ2pAACduAAAnccAAJ3WAACd5QAAnfoAAJ37AACeAwAAng8AAJ4jAACeMgAAnkEAAJ5QAACeVAAAnmMAAJ5yAACegQAAnpAAAJ6fAACeqwAAnr0AAJ7MAACe2wAAnuoAAJ75AACfCAAAnxcAAJ8YAACfJwAAnzwAAJ89AACfRQAAn1EAAJ9lAACfdAAAn4MAAJ+SAACflgAAn6UAAJ+0AACfwwAAn9IAAJ/hAACf7QAAn/8AAKAOAACgHQAAoCwAAKA7AACgSgAAoFkAAKBoAACgawAAoHoAAKCJAACgmAAAoK0AAKCuAACgtgAAoMIAAKDWAACg5QAAoPQAAKEDAAChBwAAoRYAAKElAAChNAAAoUMAAKFSAAChXgAAoXAAAKF/AAChjgAAoZ0AAKGsAAChxgAAoccAAKHNAACh2QAAoe8AAKH+AACiAQAAohAAAKIfAACiIgAAojEAAKJAAACiQwAAolIAAKJhAACiZQAAonQAAKKDAACihAAAoooAAKKLAACioAAAoqEAAKKpAACitQAAoskAAKLYAACi5wAAovYAAKL6AACjCQAAoxgAAKMnAACjNgAAo0UAAKNRAACjYwAAo3IAAKOBAACjkAAAo58AAKOuAACjvQAAo8wAAKPQAACj2QAAo9oAAKP8AACj/QAApAMAAKQPAACkJQAApDQAAKQ3AACkRgAApFUAAKRYAACkZwAApHYAAKR5AACkiAAApJcAAKSbAACkqgAApLkAAKS6AACkyAAApMkAAKTKAACkywAApMwAAKTNAACk4gAApOMAAKTrAACk9wAApQsAAKUaAAClKQAApTgAAKU8AAClSwAApVoAAKVpAACleAAApYcAAKWTAAClpQAApbQAAKXDAACl0gAApeEAAKXwAACl/wAApg4AAKYjAACmJAAApiwAAKY4AACmTAAAplsAAKZqAACmeQAApn0AAKaMAACmmwAApqoAAKa5AACmyAAAptQAAKbmAACm9QAApwQAAKcTAACnIgAApzEAAKdAAACnTwAAp2QAAKdlAACnbQAAp3kAAKeNAACnnAAAp6sAAKe6AACnvgAAp80AAKfcAACn6wAAp/oAAKgJAACoFQAAqCcAAKg2AACoRQAAqFQAAKhjAACocgAAqIEAAKiQAACopQAAqKYAAKiuAACougAAqM4AAKjdAACo7AAAqPsAAKj/AACpDgAAqR0AAKksAACpOwAAqUoAAKlWAACpaAAAqXcAAKmGAACplQAAqaQAAKmzAACpwgAAqdEAAKnmAACp5wAAqe8AAKn7AACqDwAAqh4AAKotAACqPAAAqkAAAKpPAACqXgAAqm0AAKp8AACqiwAAqpcAAKqpAACquAAAqscAAKrWAACq1wAAquYAAKr1AACrBAAAqxMAAKsWAACrHAAAqyMAAKs9AACrPgAAq0QAAKtQAACrZgAAq3UAAKt4AACrhwAAq5YAAKuZAACrqAAAq7cAAKu6AACryQAAq9gAAKvcAACr6wAAq/oAAKv7AACsAQAArAIAAKwXAACsGAAArCAAAKwsAACsQAAArE8AAKxeAACsbQAArHEAAKyAAACsjwAArJ4AAKytAACsvAAArMgAAKzaAACs6QAArPgAAK0HAACtFgAArTAAAK0xAACtNwAArUMAAK1ZAACtaAAArWsAAK16AACtiQAArYwAAK2bAACtqgAAra0AAK28AACtywAArc8AAK3eAACt7QAAre4AAK30AACt9QAArgoAAK4LAACuEwAArh8AAK4zAACuQgAArlEAAK5gAACuZAAArnMAAK6CAACukQAArqAAAK6vAACuuwAArs0AAK7cAACu6wAArvoAAK8JAACvGAAArycAAK82AACvOgAAr0EAAK9CAACvSAAAr1cAAK9mAACvdQAAr3kAAK96AACvgQAAr5sAAK+cAACvogAAr64AAK/EAACv0wAAr9YAAK/lAACv9AAAr/cAALAGAACwFQAAsBgAALAnAACwNgAAsDoAALBJAACwWAAAsFkAALBfAACwYAAAsHUAALB2AACwfgAAsIoAALCeAACwrQAAsLwAALDLAACwzwAAsN4AALDtAACw/AAAsQsAALEaAACxJgAAsTgAALFHAACxVgAAsWUAALF0AACxjgAAsY8AALGVAACxoQAAsbcAALHGAACxyQAAsdgAALHnAACx6gAAsfkAALIIAACyCwAAshoAALIpAACyLQAAsjwAALJLAACyTAAAslQAALJVAACyVgAAsmsAALJsAACydAAAsoAAALKUAACyowAAsrIAALLBAACyxQAAstQAALLjAACy8gAAswEAALMQAACzHAAAsy4AALM9AACzTAAAs1sAALNqAACzeQAAs4gAALOXAACzrAAAs60AALO1AACzwQAAs9UAALPkAACz8wAAtAIAALQGAAC0FQAAtCQAALQzAAC0QgAAtFEAALRdAAC0bwAAtH4AALSNAAC0jgAAtJ0AALSsAAC0uwAAtMoAALTZAAC07gAAtO8AALT3AAC1AwAAtRcAALUmAAC1NQAAtUQAALVIAAC1VwAAtWYAALV1AAC1hAAAtZMAALWfAAC1sQAAtcAAALXPAAC13gAAte0AALX8AAC2CwAAthoAALYeAAC2JQAAtiYAALY1AAC2RAAAtlMAALZXAAC2WAAAtmcAALZ2AAC2hQAAtogAALaNAAC2nAAAtqsAALa6AAC2zwAAttAAALbYAAC25AAAtvgAALcHAAC3FgAAtyUAALcpAAC3OAAAt0cAALdWAAC3ZQAAt3QAALeAAAC3kgAAt6EAALewAAC3vwAAt84AALfoAAC36QAAt+8AALf7AAC4EQAAuCAAALgjAAC4MgAAuEEAALhEAAC4UwAAuGIAALhlAAC4dAAAuIMAALiHAAC4lgAAuKUAALimAAC4tgAAuLcAALi4AAC4uQAAuLoAALi7AAC40AAAuNEAALjZAAC45QAAuPkAALkIAAC5FwAAuSYAALkqAAC5OQAAuUgAALlXAAC5ZgAAuXUAALmBAAC5kwAAuaIAALmxAAC5wAAAuc8AALneAAC57QAAufwAALoRAAC6EgAAuhoAALomAAC6OgAAukkAALpYAAC6ZwAAumsAALp6AAC6iQAAupgAALqnAAC6tgAAusIAALrUAAC64wAAuvIAALsBAAC7EAAAux8AALsuAAC7PQAAu1IAALtTAAC7WwAAu2cAALt7AAC7igAAu5kAALuoAAC7rAAAu7sAALvKAAC72QAAu+gAALv3AAC8AwAAvBUAALwkAAC8MwAAvEIAALxRAAC8YAAAvG8AALx+AAC8kwAAvJQAALycAAC8qAAAvLwAALzLAAC82gAAvOkAALztAAC8/AAAvQsAAL0aAAC9KQAAvTgAAL1EAAC9VgAAvWUAAL10AAC9gwAAvZIAAL2hAAC9sAAAvb8AAL3UAAC91QAAvd0AAL3pAAC9/QAAvgwAAL4bAAC+KgAAvi4AAL49AAC+TAAAvlsAAL5qAAC+eQAAvoUAAL6XAAC+pgAAvrUAAL7EAAC+0wAAvuIAAL7xAAC/AAAAvxUAAL8WAAC/HgAAvyoAAL8+AAC/TQAAv1wAAL9rAAC/bwAAv34AAL+NAAC/nAAAv6sAAL+6AAC/xgAAv9gAAL/nAAC/9gAAwAUAAMAUAADAIwAAwDIAAMBBAADARAAAwFMAAMBiAADAcQAAwIYAAMCHAADAjwAAwJsAAMCvAADAvgAAwM0AAMDcAADA4AAAwO8AAMD+AADBDQAAwRwAAMErAADBNwAAwUkAAMFYAADBZwAAwXYAAMGFAADBlAAAwaMAAMGyAADBxwAAwcgAAMHQAADB3AAAwfAAAMH/AADCDgAAwh0AAMIhAADCMAAAwj8AAMJOAADCXQAAwmwAAMJ4AADCigAAwpkAAMKoAADCtwAAwsYAAMLVAADC5AAAwvMAAMMIAADDCQAAwxEAAMMdAADDMQAAw0AAAMNPAADDXgAAw2IAAMNxAADDgAAAw48AAMOeAADDrQAAw7kAAMPLAADD2gAAw+kAAMP4AADEBwAAxBYAAMQlAADEJgAAxDUAAMRKAADESwAAxFMAAMRfAADEcwAAxIIAAMSRAADEoAAAxKQAAMSzAADEwgAAxNEAAMTgAADE7wAAxPsAAMUNAADFHAAAxSsAAMU6AADFSQAAxWMAAMVkAADFagAAxXYAAMWMAADFmwAAxZ4AAMWtAADFvAAAxb8AAMXOAADF3QAAxeAAAMXvAADF/gAAxgIAAMYRAADGIAAAxiEAAMYzAADGNAAAxjUAAMY2AADGNwAAxjgAAMY5AADGTgAAxk8AAMZXAADGYwAAxncAAMaGAADGlQAAxqQAAMaoAADGtwAAxsYAAMbVAADG5AAAxvMAAMb/AADHEQAAxyAAAMcvAADHPgAAx00AAMdcAADHawAAx3oAAMePAADHkAAAx5gAAMekAADHuAAAx8cAAMfWAADH5QAAx+kAAMf4AADIBwAAyBYAAMglAADINAAAyEAAAMhSAADIYQAAyHAAAMh/AADIjgAAyJ0AAMisAADIrQAAyLwAAMjRAADI0gAAyNoAAMjmAADI+gAAyQkAAMkYAADJJwAAySsAAMk6AADJSQAAyVgAAMlnAADJdgAAyYIAAMmUAADJowAAybIAAMnBAADJ0AAAyd8AAMnuAADJ/QAAyhIAAMoTAADKGwAAyicAAMo7AADKSgAAylkAAMpoAADKbAAAynsAAMqKAADKmQAAyqgAAMq3AADKwwAAytUAAMrkAADK8wAAywIAAMsRAADLIAAAyy8AAMs+AADLUwAAy1QAAMtcAADLaAAAy3wAAMuLAADLmgAAy6kAAMutAADLvAAAy8sAAMvaAADL6QAAy/gAAMwEAADMFgAAzCUAAMw0AADMQwAAzFIAAMxhAADMcAAAzH8AAMyUAADMlQAAzJ0AAMypAADMvQAAzMwAAMzbAADM6gAAzO4AAMz9AADNDAAAzRsAAM0qAADNOQAAzUUAAM1XAADNZgAAzXUAAM2EAADNkwAAzaIAAM2xAADNwAAAzdUAAM3WAADN3gAAzeoAAM3+AADODQAAzhwAAM4rAADOLwAAzj4AAM5NAADOXAAAzmsAAM56AADOhgAAzpgAAM6nAADOtgAAzsUAAM7UAADO4wAAzvIAAM8BAADPFgAAzxcAAM8fAADPKwAAzz8AAM9OAADPXQAAz2wAAM9wAADPfwAAz44AAM+dAADPrAAAz7sAAM/HAADP2QAAz+gAAM/3AADQBgAA0BUAANAkAADQMwAA0EIAANBFAADQVAAA0GMAANByAADQhwAA0IgAANCQAADQnAAA0LAAANC/AADQzgAA0N0AANDhAADQ8AAA0P8AANEOAADRHQAA0SwAANE4AADRSgAA0VkAANFoAADRdwAA0YYAANGVAADRpAAA0aUAANG0AADRyQAA0coAANHSAADR3gAA0fIAANIBAADSEAAA0h8AANIjAADSMgAA0kEAANJQAADSXwAA0m4AANJ6AADSjAAA0psAANKqAADSuQAA0sgAANLXAADS5gAA0vUAANMKAADTCwAA0xMAANMfAADTMwAA00IAANNRAADTYAAA02QAANNzAADTggAA05EAANOgAADTrwAA07sAANPNAADT3AAA0+sAANP6AADUCQAA1BgAANQnAADUNgAA1EsAANRMAADUVAAA1GAAANR0AADUgwAA1JIAANShAADUpQAA1LQAANTDAADU0gAA1OEAANTwAADU/AAA1Q4AANUdAADVLAAA1TsAANVKAADVZAAA1WUAANVrAADVdwAA1Y0AANWcAADVnwAA1a4AANW9AADVwAAA1c8AANXeAADV4QAA1fAAANX/AADWAwAA1hIAANYhAADWIgAA1ioAANYrAADWLAAA1kEAANZCAADWSgAA1lYAANZqAADWeQAA1ogAANaXAADWmwAA1qoAANa5AADWyAAA1tcAANbmAADW8gAA1wQAANcTAADXIgAA1zEAANdAAADXTwAA114AANdfAADXbgAA14MAANeEAADXjAAA15gAANesAADXuwAA18oAANfZAADX3QAA1+wAANf7AADYCgAA2BkAANgoAADYNAAA2EYAANhVAADYZAAA2HMAANiCAADYkQAA2KAAANivAADYsgAA2MEAANjQAADY3wAA2PQAANj1AADY/QAA2QkAANkdAADZLAAA2TsAANlKAADZTgAA2V0AANlsAADZewAA2YoAANmZAADZpQAA2bcAANnGAADZ1QAA2eQAANnzAADaDQAA2g4AANoUAADaIAAA2jYAANpFAADaSAAA2lcAANpmAADaagAA2m8AANpwAADacQAA2oAAANqPAADakgAA2qEAANqwAADatAAA2sMAANrSAADa0wAA2vUAANr2AADa9wAA2vgAANr5AADa+gAA2vsAANr8AADa/QAA2v4AANr/AADbAAAA2wEAANsCAADbAwAA2xgAANsZAADbIQAA2y0AANtBAADbUAAA218AANtuAADbcgAA24EAANuQAADbnwAA264AANu9AADbyQAA29sAANvqAADb+QAA3AgAANwXAADcJgAA3DUAANxEAADcWQAA3FoAANxiAADcbgAA3IIAANyRAADcoAAA3K8AANyzAADcwgAA3NEAANzgAADc7wAA3P4AAN0KAADdHAAA3SsAAN06AADdSQAA3VgAAN1nAADddgAA3YUAAN2aAADdmwAA3aMAAN2vAADdwwAA3dIAAN3hAADd8AAA3fQAAN4DAADeEgAA3iEAAN4wAADePwAA3ksAAN5dAADebAAA3nsAAN6KAADemQAA3qgAAN63AADexgAA3tsAAN7cAADe5AAA3vAAAN8EAADfEwAA3yIAAN8xAADfNQAA30QAAN9TAADfYgAA33EAAN+AAADfjAAA354AAN+tAADfvAAA38sAAN/aAADf6QAA3/gAAOAHAADgHAAA4B0AAOAlAADgMQAA4EUAAOBUAADgYwAA4HIAAOB2AADghQAA4JQAAOCjAADgsgAA4MEAAODNAADg3wAA4O4AAOD9AADhDAAA4RsAAOEqAADhOQAA4UgAAOFdAADhXgAA4WYAAOFyAADhhgAA4ZUAAOGkAADhswAA4bcAAOHGAADh1QAA4eQAAOHzAADiAgAA4g4AAOIgAADiLwAA4j4AAOJNAADiXAAA4msAAOJ6AADiiQAA4p4AAOKfAADipwAA4rMAAOLHAADi1gAA4uUAAOL0AADi+AAA4wcAAOMWAADjJQAA4zQAAONDAADjTwAA42EAAONwAADjfwAA444AAOOdAADjrAAA47sAAOPKAADj3wAA4+AAAOPoAADj9AAA5AgAAOQXAADkJgAA5DUAAOQ5AADkSAAA5FcAAORmAADkdQAA5IQAAOSQAADkogAA5LEAAOTAAADkzwAA5N4AAOTtAADk/AAA5QsAAOUgAADlIQAA5SkAAOU1AADlSQAA5VgAAOVnAADldgAA5XoAAOWJAADlmAAA5acAAOW2AADlxQAA5dEAAOXjAADl8gAA5gEAAOYQAADmHwAA5i4AAOY9AADmTAAA5mEAAOZiAADmagAA5nYAAOaKAADmmQAA5qgAAOa3AADmuwAA5soAAObZAADm6AAA5vcAAOcGAADnEgAA5yQAAOczAADnQgAA51EAAOdgAADnbwAA534AAOeNAADnogAA56MAAOerAADntwAA58sAAOfaAADn6QAA5/gAAOf8AADoCwAA6BoAAOgpAADoOAAA6EcAAOhTAADoZQAA6HQAAOiDAADokgAA6KEAAOi7AADovAAA6MIAAOjOAADo5AAA6PMAAOj2AADpBQAA6RQAAOkXAADpJgAA6TUAAOk4AADpRwAA6VYAAOlaAADpaQAA6XgAAOl5AADphQAA6YYAAOmHAADpiAAA6YkAAOmeAADpnwAA6acAAOm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iAAEMsQABDMAAAQzPAAEM3gABDOoAAQz8AAENCwABDRoAAQ0pAAENOAABDUcAAQ1WAAENZQABDXoAAQ17AAENgwABDY8AAQ2jAAENsgABDcEAAQ3QAAEN1AABDeMAAQ3yAAEOAQABDhAAAQ4fAAEOKwABDj0AAQ5MAAEOWwABDmoAAQ55AAEOiAABDpcAAQ6mAAEOuwABDrwAAQ7EAAEO0AABDuQAAQ7zAAEPAgABDxEAAQ8VAAEPJAABDzMAAQ9CAAEPUQABD2AAAQ9sAAEPfgABD40AAQ+cAAEPqwABD7oAAQ/JAAEP2AABD+cAAQ/8AAEP/QABEAUAARARAAEQJQABEDQAARBDAAEQUgABEFYAARBlAAEQdAABEIMAARCSAAEQoQABEK0AARC/AAEQzgABEN0AARDsAAEQ+wABEQoAAREZAAERKAABET0AARE+AAERRgABEVIAARFmAAERdQABEYQAARGTAAERlwABEaYAARG1AAERxAABEdMAARHiAAER7gABEgAAARIPAAESHgABEi0AARI8AAESSwABEloAARJpAAESfgABEn8AARKHAAESkwABEqcAARK2AAESxQABEtQAARLYAAES5wABEvYAARMFAAETFAABEyMAARMvAAETQQABE1AAARNfAAETbgABE30AAROMAAETmwABE6oAARO/AAETwAABE8gAARPUAAET6AABE/cAARQGAAEUFQABFBkAARQoAAEUNwABFEYAARRVAAEUZAABFHAAARSCAAEUkQABFKAAARSvAAEUvgABFM0AARTcAAEU3QABFOwAARTvAAEU/gABFQ0AARUcAAEVMQABFTIAARU6AAEVRgABFVoAARVpAAEVeAABFYcAARWLAAEVmgABFakAARW4AAEVxwABFdYAARXiAAEV9AABFgMAARYSAAEWIQABFjAAARY/AAEWTgABFl0AARZyAAEWcwABFnsAARaHAAEWmwABFqoAARa5AAEWyAABFswAARbbAAEW6gABFvkAARcIAAEXFwABFyMAARc1AAEXRAABF1MAARdiAAEXcQABF4AAARePAAEXngABF7MAARe0AAEXvAABF8gAARfcAAEX6wABF/oAARgJAAEYDQABGBwAARgrAAEYOgABGEkAARhYAAEYZAABGHYAARiFAAEYlAABGKMAARiyAAEYwQABGNAAARjfAAEY9AABGPUAARj9AAEZCQABGR0AARksAAEZOwABGUoAARlOAAEZXQABGWwAARl7AAEZigABGZkAARmlAAEZtwABGcYAARnVAAEZ5AABGfMAARoCAAEaEQABGiAAARojAAEaMgABGkEAARpQAAEaZQABGmYAARpuAAEaegABGo4AARqdAAEarAABGrsAARq/AAEazgABGt0AARrsAAEa+wABGwoAARsWAAEbKAABGzcAARtGAAEbVQABG2QAARtzAAEbggABG5EAARuUAAEbrgABG68AARu1AAEbwQABG9cAARvmAAEb6QABG/gAARwHAAEcCwABHBAAARwRAAEcEgABHCEAARwwAAEcMwABHEIAARxRAAEcVQABHGQAARxzAAEcdAABHH4AARx/AAEcgAABHIEAARyWAAEclwABHJ8AARyrAAEcvwABHM4AARzdAAEc7AABHPAAARz/AAEdDgABHR0AAR0sAAEdOwABHUcAAR1ZAAEdaAABHXcAAR2GAAEdlQABHaQAAR2zAAEdwgABHdcAAR3YAAEd4AABHewAAR4AAAEeDwABHh4AAR4tAAEeMQABHkAAAR5PAAEeXgABHm0AAR58AAEeiAABHpoAAR6pAAEeuAABHscAAR7WAAEe5QABHvQAAR8DAAEfGAABHxkAAR8hAAEfLQABH0EAAR9QAAEfXwABH24AAR9yAAEfgQABH5AAAR+fAAEfrgABH70AAR/JAAEf2wABH+oAAR/5AAEgCAABIBcAASAxAAEgMgABIDgAASBEAAEgWgABIGkAASBsAAEgewABIIoAASCNAAEgnAABIKsAASCuAAEgvQABIMwAASDQAAEg3wABIO4AASDvAAEhBQABIQYAASEHAAEhCAABIQkAASEKAAEhCwABIQwAASENAAEhIgABISMAASErAAEhNwABIUsAASFaAAEhaQABIXgAASF8AAEhiwABIZoAASGpAAEhuAABIccAASHTAAEh5QABIfQAASIDAAEiEgABIiEAASIwAAEiPwABIk4AASJjAAEiZAABImwAASJ4AAEijAABIpsAASKqAAEiuQABIr0AASLMAAEi2wABIuoAASL5AAEjCAABIxQAASMmAAEjNQABI0QAASNTAAEjYgABI3EAASOAAAEjgQABI5AAASOlAAEjpgABI64AASO6AAEjzgABI90AASPsAAEj+wABI/8AASQOAAEkHQABJCwAASQ7AAEkSgABJFYAASRoAAEkdwABJIYAASSVAAEkpAABJLMAASTCAAEk0QABJOYAASTnAAEk7wABJPsAASUPAAElHgABJS0AASU8AAElQAABJU8AASVeAAElbQABJXwAASWLAAEllwABJakAASW4AAElxwABJdYAASXlAAEl9AABJgMAASYEAAEmEwABJigAASYpAAEmMQABJj0AASZRAAEmYAABJm8AASZ+AAEmggABJpEAASagAAEmrwABJr4AASbNAAEm2QABJusAASb6AAEnCQABJxgAAScnAAEnQQABJ0IAASdIAAEnVAABJ2oAASd5AAEnfAABJ4sAASeaAAEnnQABJ6wAASe7AAEnvgABJ80AASfcAAEn4AABJ+8AASf+AAEn/wABKAkAASgKAAEoCwABKAwAASghAAEoIgABKCoAASg2AAEoSgABKFkAAShoAAEodwABKHsAASiKAAEomQABKKgAASi3AAEoxgABKNIAASjkAAEo8wABKQIAASkRAAEpIAABKS8AASk+AAEpPwABKU4AASljAAEpZAABKWwAASl4AAEpjAABKZsAASmqAAEpuQABKb0AASnMAAEp2wABKeoAASn5AAEqCAABKhQAASomAAEqNQABKkQAASpTAAEqYgABKnEAASqAAAEqgQABKpAAASqlAAEqpgABKq4AASq6AAEqzgABKt0AASrsAAEq+wABKv8AASsOAAErHQABKywAASs7AAErSgABK1YAAStoAAErdwABK4YAASuVAAErpAABK7MAASvCAAEr0QABK9QAASvjAAEr8gABLAEAASwWAAEsFwABLB8AASwrAAEsPwABLE4AASxdAAEsbAABLHAAASx/AAEsjgABLJ0AASysAAEsuwABLMcAASzZAAEs6AABLPcAAS0GAAEtFQABLS8AAS0wAAEtNgABLUIAAS1YAAEtZwABLWoAAS15AAEtegABLYkAAS2MAAEtmwABLaoAAS2tAAEtvAABLcsAAS3PAAEt3gABLe0AAS3uAAEt+gABLfsAAS38AAEt/QABLf4AAS4TAAEuFAABLhwAAS4oAAEuPAABLksAAS5aAAEuaQABLm0AAS58AAEuiwABLpoAAS6pAAEuuAABLsQAAS7WAAEu5QABLvQAAS8DAAEvEgABLyEAAS8wAAEvMQABL0AAAS9VAAEvVgABL14AAS9qAAEvfgABL40AAS+cAAEvqwABL68AAS++AAEvzQABL9wAAS/rAAEv+gABMAYAATAYAAEwJwABMDYAATBFAAEwVAABMGMAATByAAEwcwABMIIAATCXAAEwmAABMKAAATCsAAEwwAABMM8AATDeAAEw7QABMPEAATEAAAExDwABMR4AATEtAAExPAABMUgAATFaAAExaQABMXgAATGHAAExlgABMaUAATG0AAExtQABMcQAATHZAAEx2gABMeIAATHuAAEyAgABMhEAATIgAAEyLwABMjMAATJCAAEyUQABMmAAATJvAAEyfgABMooAATKcAAEyqwABMroAATLJAAEy2AABMucAATL2AAEzBQABMwgAATMXAAEzJgABMzUAATNKAAEzSwABM1MAATNfAAEzcwABM4IAATORAAEzoAABM6QAATOzAAEzwgABM9EAATPgAAEz7wABM/sAATQNAAE0HAABNCsAATQ6AAE0SQABNFgAATRnAAE0dgABNIsAATSMAAE0lAABNKAAATS0AAE0wwABNNIAATThAAE05QABNPQAATUDAAE1EgABNSEAATUwAAE1PAABNU4AATVdAAE1bAABNXsAATWKAAE1pAABNaUAATWrAAE1twABNc0AATXcAAE13wABNe4AATX9AAE2AAABNg8AATYeAAE2IQABNjAAATY/AAE2QwABNlIAATZhAAE2YgABNm4AATZvAAE2cAABNnEAATZyAAE2hwABNogAATaQAAE2nAABNrAAATa/AAE2zgABNt0AATbhAAE28AABNv8AATcOAAE3HQABNywAATc4AAE3SgABN1kAATdoAAE3dwABN4YAATeVAAE3pAABN7MAATfIAAE3yQABN9EAATfdAAE38QABOAAAATgPAAE4HgABOCIAATgxAAE4QAABOE8AATheAAE4bQABOHkAATiLAAE4mgABOKkAATi4AAE4xwABONYAATjlAAE49AABOQkAATkKAAE5EgABOR4AATkyAAE5QQABOVAAATlfAAE5YwABOXIAATmBAAE5kAABOZ8AATmuAAE5ugABOcwAATnbAAE56gABOfkAAToIAAE6FwABOiYAATonAAE6NgABOksAATpMAAE6VAABOmAAATp0AAE6gwABOpIAATqhAAE6pQABOrQAATr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2AAFcOgABXEkAAVxYAAFcZwABXHYAAVyFAAFckQABXKMAAVyyAAFcwQABXNAAAVzfAAFc+QABXPoAAV0AAAFdDAABXSIAAV0xAAFdNAABXUMAAV1SAAFdVgABXVoAAV1bAAFdagABXXkAAV18AAFdiwABXZoAAV2eAAFdrQABXbwAAV29AAFdyQABXcoAAV3LAAFd4AABXeEAAV3pAAFd9QABXgkAAV4YAAFeJwABXjYAAV46AAFeSQABXlgAAV5nAAFedgABXoUAAV6RAAFeowABXrIAAV7BAAFe0AABXt8AAV7uAAFe/QABXwwAAV8hAAFfIgABXyoAAV82AAFfSgABX1kAAV9oAAFfdwABX3sAAV+KAAFfmQABX6gAAV+3AAFfxgABX9IAAV/kAAFf8wABYAIAAWARAAFgIAABYC8AAWA+AAFgTQABYGIAAWBjAAFgawABYHcAAWCLAAFgmgABYKkAAWC4AAFgvAABYMsAAWDaAAFg6QABYPgAAWEHAAFhEwABYSUAAWE0AAFhQwABYVIAAWFhAAFhcAABYX8AAWGOAAFhowABYaQAAWGsAAFhuAABYcwAAWHbAAFh6gABYfkAAWH9AAFiDAABYhsAAWIqAAFiOQABYkgAAWJUAAFiZgABYnUAAWKEAAFikwABYqIAAWKxAAFiwAABYs8AAWLSAAFi4QABYvAAAWL/AAFjFAABYxUAAWMdAAFjKQABYz0AAWNMAAFjWwABY2oAAWNuAAFjfQABY4wAAWObAAFjqgABY7kAAWPFAAFj1wABY+YAAWP1AAFkBAABZBMAAWQtAAFkLgABZDQAAWRAAAFkVgABZGUAAWRoAAFkdwABZIYAAWSKAAFkjwABZJAAAWSRAAFkoAABZK8AAWSyAAFkwQABZNAAAWTUAAFk4wABZPIAAWTzAAFlFQABZRYAAWUXAAFlGAABZRkAAWUaAAFlGwABZRwAAWUdAAFlHgABZR8AAWUgAAFlIQABZSIAAWUjAAFlOAABZTkAAWVBAAFlTQABZWEAAWVwAAFlfwABZY4AAWWSAAFloQABZbAAAWW/AAFlzgABZd0AAWXpAAFl+wABZgoAAWYZAAFmKAABZjcAAWZGAAFmVQABZmQAAWZ5AAFmegABZoIAAWaOAAFmogABZrEAAWbAAAFmzwABZtMAAWbiAAFm8QABZwAAAWc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pAAGVeAABlYcAAZWLAAGVmgABlakAAZW4AAGVxwABldYAAZXiAAGV9AABlgMAAZYSAAGWIQABljAAAZY/AAGWTgABll0AAZZyAAGWcwABlnsAAZaHAAGWmwABlqoAAZa5AAGWyAABlswAAZbbAAGW6gABlvkAAZcIAAGXFwABlyMAAZc1AAGXRAABl1MAAZdiAAGXcQABl4AAAZePAAGXngABl7MAAZe0AAGXvAABl8gAAZfcAAGX6wABl/oAAZgJAAGYDQABmBwAAZgrAAGYOgABmEkAAZhYAAGYZAABmHYAAZiFAAGYlAABmKMAAZiyAAGYwQABmNAAAZjfAAGY9AABmPUAAZj9AAGZCQABmR0AAZksAAGZOwABmUoAAZlOAAGZXQABmWwAAZl7AAGZigABmZkAAZmlAAGZtwABmcYAAZnVAAGZ5AABmfMAAZoCAAGaEQABmiAAAZo1AAGaNgABmj4AAZpKAAGaXgABmm0AAZp8AAGaiwABmo8AAZqeAAGarQABmrwAAZrLAAGa2gABmuYAAZr4AAGbBwABmxYAAZslAAGbNAABm0MAAZtSAAGbYQABm3YAAZt3AAGbfwABm4sAAZufAAGbrgABm70AAZvMAAGb0AABm98AAZvuAAGb/QABnAwAAZwbAAGcJwABnDkAAZxIAAGcVwABnGYAAZx1AAGchAABnJMAAZyiAAGcpQABnLQAAZzDAAGc0gABnOcAAZzoAAGc8AABnPwAAZ0QAAGdHwABnS4AAZ09AAGdQQABnVAAAZ1fAAGdbgABnX0AAZ2MAAGdmAABnaoAAZ25AAGdyAABndcAAZ3mAAGd9QABngQAAZ4TAAGeKAABnikAAZ4xAAGePQABnlEAAZ5gAAGebwABnn4AAZ6CAAGekQABnqAAAZ6vAAGevgABns0AAZ7ZAAGe6wABnvoAAZ8JAAGfGAABnycAAZ82AAGfRQABn1QAAZ9pAAGfagABn3IAAZ9+AAGfkgABn6EAAZ+wAAGfvwABn8MAAZ/SAAGf4QABn/AAAZ//AAGgDgABoBoAAaAsAAGgOwABoEoAAaBZAAGgaAABoHcAAaCGAAGglQABoKoAAaCrAAGgswABoL8AAaDTAAGg4gABoPEAAaEAAAGhBAABoRMAAaEiAAGhMQABoUAAAaFPAAGhWwABoW0AAaF8AAGhiwABoZoAAaGpAAGhuAABoccAAaHWAAGh6wABoewAAaH0AAGiAAABohQAAaIjAAGiMgABokEAAaJFAAGiVAABomMAAaJyAAGigQABopAAAaKcAAGirgABor0AAaLMAAGi2wABouoAAaL5AAGjCAABoxcAAaMsAAGjLQABozUAAaNBAAGjVQABo2QAAaNzAAGjggABo4YAAaOVAAGjpAABo7MAAaPCAAGj0QABo90AAaPvAAGj/gABpA0AAaQcAAGkKwABpDoAAaRJAAGkWAABpFsAAaR1AAGkdgABpHwAAaSIAAGkngABpK0AAaSwAAGkvwABpM4AAaTSAAGk1wABpNgAAaTZAAGk6AABpPcAAaT6AAGlCQABpRgAAaUcAAGlKwABpToAAaU7AAGlQwABpUQAAaVZAAGlWgABpWIAAaVuAAGlggABpZEAAaWgAAGlrwABpbMAAaXCAAGl0QABpeAAAaXvAAGl/gABpgoAAaYcAAGmKwABpjoAAaZJAAGmWAABpmcAAaZ2AAGmhQABppoAAaabAAGmowABpq8AAabDAAGm0gABpuEAAabwAAGm9AABpwMAAacSAAGnIQABpzAAAac/AAGnSwABp10AAadsAAGnewABp4oAAaeZAAGnqAABp7cAAafGAAGnyQABp+MAAafkAAGn6gABp/YAAagMAAGoGwABqB4AAagtAAGoPAABqEAAAahFAAGoRgABqEcAAahWAAGoZQABqGgAAah3AAGohgABqIoAAaiZAAGoqAABqKkAAai1AAGotgABqLcAAai4AAGouQABqM4AAajPAAGo1wABqOMAAaj3AAGpBgABqRUAAakkAAGpKAABqTcAAalGAAGpVQABqWQAAalzAAGpfwABqZEAAamgAAGprwABqb4AAanNAAGp3AABqesAAan6AAGqDwABqhAAAaoYAAGqJAABqjgAAapHAAGqVgABqmUAAappAAGqeAABqocAAaqWAAGqpQABqrQAAarAAAGq0gABquEAAarwAAGq/wABqw4AAasdAAGrLAABqzsAAatQAAGrUQABq1kAAatlAAGreQABq4gAAauXAAGrpgABq6oAAau5AAGryAABq9cAAavmAAGr9QABrAEAAawTAAGsIgABrDEAAaxAAAGsTwABrF4AAaxtAAGsfAABrJEAAaySAAGsmgABrKYAAay6AAGsyQABrNgAAaz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OAAHDUgABw2EAAcNwAAHDcQABw38AAcOAAAHDgQABw4IAAcODAAHDhAABw5kAAcOaAAHDogABw64AAcPCAAHD0QABw+AAAcPvAAHD8wABxAIAAcQRAAHEIAABxC8AAcQ+AAHESgABxFwAAcRrAAHEegABxIkAAcSYAAHEpwABxLYAAcTFAAHE2gABxNsAAcTjAAHE7wABxQMAAcUSAAHFIQABxTAAAcU0AAHFQwABxVIAAcVhAAHFcAABxX8AAcWLAAHFnQABxawAAcW7AAHFygABxdkAAcXoAAHF9wABxfgAAcYHAAHGHAABxh0AAcYlAAHGMQABxkUAAcZUAAHGYwABxnIAAcZ2AAHGhQABxpQAAcajAAHGsgABxsEAAcbNAAHG3wABxu4AAcb9AAHHDAABxxsAAccqAAHHOQABx0gAAcddAAHHXgABx2YAAcdyAAHHhgABx5UAAcekAAHHswABx7cAAcfGAAHH1QABx+QAAcfzAAHIAgAByA4AAcggAAHILwAByD4AAchNAAHIXAAByGsAAch6AAHIiQAByJ4AAcifAAHIpwAByLMAAcjHAAHI1gAByOUAAcj0AAHI+AAByQcAAckWAAHJJQAByTQAAclDAAHJTwAByWEAAclwAAHJfwAByY4AAcmdAAHJrAABybsAAcnKAAHJzQAByecAAcnoAAHJ7gAByfoAAcoQAAHKHwAByiIAAcoxAAHKQAABykQAAcpJAAHKSgABylkAAcpoAAHKawABynoAAcqJAAHKjQABypwAAcqrAAHKrAAByrQAAcq1AAHKygAByssAAcrTAAHK3wAByvMAAcsCAAHLEQAByyAAAcskAAHLMwABy0IAActRAAHLYAABy28AAct7AAHLjQABy5wAAcurAAHLugABy8kAAcvYAAHL5wABy/YAAcwLAAHMDAABzBQAAcwgAAHMNAABzEMAAcxSAAHMYQABzGUAAcx0AAHMgwABzJIAAcyhAAHMsAABzLwAAczOAAHM3QABzOwAAcz7AAHNCgABzRkAAc0oAAHNNwABzToAAc1UAAHNVQABzVsAAc1nAAHNfQABzYwAAc2PAAHNngABza0AAc2xAAHNtgABzbcAAc24AAHNxwABzdYAAc3ZAAHN6AABzfcAAc37AAHOCgABzhkAAc4aAAHOMgABzjMAAc40AAHONQABzjYAAc4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BAfiBBACBGzuBE/qBDpuBI92BDQOBH0SBEM2BJOeBC3GBA4SBDZOAY18QE09idk9ibGl2aW91c0NoYW5uZWxcSW5ib3hNZXNzYWdlXUNvbnRhY3REZXZpY2VfEC5DaGFubmVsQ3JlYXRpb25XaXRoT3duZWREZXZpY2VQcm90b2NvbEluc3RhbmNlXxAWSWRlbnRpdHlTZXJ2ZXJVc2VyRGF0YV8QFU91dGJveEF0dGFjaG1lbnRDaHVua18QF1BlbmRpbmdEZWxldGVGcm9tU2VydmVyW0tleU1hdGVyaWFsVkJhY2t1cF8QFFBlcnNpc3RlZFRydXN0T3JpZ2luXxASUGVuZGluZ0dyb3VwTWVtYmVyXxAXS2V5Y2xvYWtSZXZva2VkSWRlbnRpdHlfEBxMaW5rQmV0d2VlblByb3RvY29sSW5zdGFuY2VzXxAVR3JvdXBWMlNlcnZlclVzZXJEYXRhXxAcQ29udGFjdEdyb3VwRGV0YWlsc1B1Ymxpc2hlZF8QEUNvbnRhY3RHcm91cE93bmVkXxASQ29udGFjdEdyb3VwSm9pbmVkXxAkVHJ1c3RFc3RhYmxpc2htZW50Q29tbWl0bWVudFJlY2VpdmVkXxAURGVsZXRlZE91dGJveE1lc3NhZ2VfEBBQcm90b2NvbEluc3RhbmNlXktleWNsb2FrU2VydmVyXxAbQ29udGFjdEdyb3VwVjJQZW5kaW5nTWVtYmVyXxAtQ29udGFjdE93bmVkSWRlbnRpdHlEZWxldGlvblNpZ25hdHVyZVJlY2VpdmVkXxAaQ29udGFjdEdyb3VwRGV0YWlsc1RydXN0ZWRfEB1Db250YWN0SWRlbnRpdHlEZXRhaWxzVHJ1c3RlZF8QGEdyb3VwVjJTaWduYXR1cmVSZWNlaXZlZF8QElBlbmRpbmdTZXJ2ZXJRdWVyeV8QFkluYm94QXR0YWNobWVudFNlc3Npb25fEA9DYWNoZWRXZWxsS25vd25bT3duZWREZXZpY2VeU2VydmVyVXNlckRhdGFfEDBDaGFubmVsQ3JlYXRpb25XaXRoQ29udGFjdERldmljZVByb3RvY29sSW5zdGFuY2VfEA9Db250YWN0SWRlbnRpdHlfEBNHcm91cFNlcnZlclVzZXJEYXRhXENvbnRhY3RHcm91cF1PdXRib3hNZXNzYWdlXkNvbnRhY3RHcm91cFYyXU1lc3NhZ2VIZWFkZXJfEBVQZXJzaXN0ZWRFbmdpbmVEaWFsb2dfEBRDb250YWN0R3JvdXBWMk1lbWJlcl8QEE91dGJveEF0dGFjaG1lbnRfEBVDb250YWN0R3JvdXBWMkRldGFpbHNdU2VydmVyU2Vzc2lvbl8QMlByb3RvY29sSW5zdGFuY2VXYWl0aW5nRm9yQ29udGFjdFVwZ3JhZGVUb09uZVRvT25lXxAfQ29udGFjdElkZW50aXR5RGV0YWlsc1B1Ymxpc2hlZF8QG011dHVhbFNjYW5TaWduYXR1cmVSZWNlaXZlZFlQcm92aXNpb25fEBRJbmJveEF0dGFjaG1lbnRDaHVua18QF091dGJveEF0dGFjaG1lbnRTZXNzaW9uXxAWQ29udGFjdElkZW50aXR5RGV0YWlsc18QHU93bmVkSWRlbnRpdHlEZXRhaWxzUHVibGlzaGVkXxAPUmVjZWl2ZWRNZXNzYWdlXxATQ29udGFjdEdyb3VwRGV0YWlsc1lCYWNrdXBLZXlfEBdPd25lZElkZW50aXR5TWFza2luZ1VJRF8QJENoYW5uZWxDcmVhdGlvblBpbmdTaWduYXR1cmVSZWNlaXZlZF1Pd25lZElkZW50aXR5XxAPSW5ib3hBdHRhY2htZW50XxAZQ29udGFjdEdyb3VwRGV0YWlsc0xhdGVzdN8QEAAAAPEAAADyAAAA8wAAAPQAAAAhAAAA9QAAAPYAAAAjAAAA9wAAAPgAAAAOAAAAJQAAAPkAAAD6AAAAKAAAAPsAAAD8AAAA/QAAACkAAAApAAAAFAAAAQEAAAECAAAAMQAAACkAAAD8AAABBQAAAD0AAAD8AAABCAAAAQkAAAEKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gEOAa4AEgASAAoBEgQMRgASAQ4EDE4AGgEOBAzKAQggSxPZTk1dvcmRlcmVk0wAAADoAAAA7AAAADgAAAQ4AAAEQAAAAtKEAAAEPgEWhAAABEYBGgGNeWERfUFN0ZXJlb3R5cGXZAAAAIQAAACUAAAEVAAAADgAAACgAAAEWAAAAIwAAAPsAAAEXAAAAeQAAAQ8AAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAAEfXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgEGARYBDgGqAAIAECIBH0wAAADoAAAA7AAAADgAAASEAAAErAAAAtKkAAAEiAAABIwAAASQAAAElAAABJgAAAScAAAEoAAABKQAAASqASIBJgEqAS4BMgE2AToBPgFCpAAABLAAAAS0AAAEuAAABLwAAATAAAAExAAABMgAAATMAAAE0gFGAVYBWgFyAXYBfgGGAZIBogGNfEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGVhEUE1VbmlxdWVuZXNzQ29uc3RyYWludHNfEBpYRF9QU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QGVhEX1BTS19mZXRjaFJlcXVlc3RzQXJyYXlfEBFYRF9QU0tfaXNBYnN0cmFjdF8QD1hEX1BTS191c2VySW5mb18QE1hEX1BTS19jbGFzc01hcHBpbmdfEBZYRF9QU0tfZW50aXR5Q2xhc3NOYW1l3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAUsAAAAXAAABEQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASI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AIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxYAAAEKAAABCgAAABcAAAEKgACAYIAAgOYICAgIgFSAlggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABbwAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxcAAAEKAAABCgAAABcAAAEKgACA0IAAgOYICAgIgFSAlwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABeoAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxgAAAEKAAABCgAAABcAAAEKgACA1IAAgOYICAgIgFSAmAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxkAAAEKAAABCgAAABcAAAEKgACAAIAAgOYICAgIgFSAmQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxoAAAEKAAABCgAAABcAAAEKgACAAIAAgOYICAgIgFSAmggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxsAAAEKAAABCgAAABcAAAEKgACAAIAAgOYICAgIgFSAmwgIgAAI3xASAAABQAAAAUEAAAFCAAAHZwAAACEAAAFEAAABRQAAB2gAAAAjAAABQwAAB2kAAAFGAAA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AAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAmwAAABcAAJEzAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwQAAAQoAAAEKAAAAFwAAAQqAAIELpYAAgQufCAgICIBUgQHuCAiAAAjfEBQAAAD7AACSLAAAki0AAJIuAACSLwAAkjAAAJIxAAAAIQAAAA4AAJIyAAAAJQAAkjMAAAAoAACSNAAAkjUAAJI2AACSNwAAkjgAAJI5AAAAIwAABCwAAAD8AAAA/AAAkj0AAAApAAABAgAAAPwAAAAUAAABBQAAACkAAABfAACSRQAAkkYAAAApAAAAKQAAAPwAAJJKAACSSwAAAQIAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYBDgEOBC6eABIEDEYBDgAKBAxOABIAogQ6CgQumgASABIBDgQu4gQ6DgQMREl5kWJrTAAAAOgAAADsAAAAOAACSTwAAklEAAAC0oQA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AFMQAAAEKAAABCgAAABcAAAEKgACBDMCAAIEM9wgICAiAVIEB8QgIgAAI0gAAADsAAAAOAACjzQAAAVqhAACjzoENAYBT1wAAAA4AAAAlAACj0QAAACEAAAAoAACj0gAAACMAAKPTAAAAFwAAAIcAAACHAACj1wAAAK0AAAAxWV9zcGVjaWZpY1hfZ2VuZXJhbIEN64AAgQzUgQzUgQ0CgQ0DEwAAAAEOsRnt3xAUAAAA+wAAo9sAAKPcAACj3QAAo94AAKPfAACj4AAAACEAAAAOAACj4QAAACUAAKPiAAAAKAAAo+MAAKPkAACj5QAAo+YAAKPnAACj6AAAACMAAAQsAAAA/AAAAPwAAKPsAAAAKQAAAQIAAAD8AAAAFAAAAQUAAAApAAAAcQAAo/QAAKP1AAAAKQAAACkAAAD8AACj+QAAo/oAAAECAAAAMV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zb3JkZXJlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIVhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zc3RvcmFnZV8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zZHVwbGljYXRlcwmAQ4BDgQ0FgASBAxGAQ4ACgQMTgASAOoENkIENBIAEgASAQ4ENFoENkYEDERJ078zR0wAAADo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AAAEKAAABCgAAABcAAAEKgACAAIAAgREtCAgICIBUgEkICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAANpZAAAAFwAA2hIAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEkAAABCgAAAQoAAAAXAAABCoAAgREzgACBES0ICAgIgFSASggIgAAI0gAAADsAAAAOAADaZwAAAVqhAADaaIERNIBT0gAAADsAAAAOAADaawAAAVqiAADabAAA2m2BETWBETaAU18QEHJhd093bmVkSWRlbnRpdHlZc2VydmVyVVJM3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAADaEgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASUAAAEKAAABCgAAABcAAAEKgACAAIAAgREtCAgICIBUgEsICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAANqCAAAAFwAA2hIAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEmAAABCgAAAQoAAAAXAAABCoAAgRE5gACBES0ICAgIgFSATAgIgAAI0gAAADsAAAAOAADakAAAAVqggFPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAANoSAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABJwAAAQoAAAEKAAAAFwAAAQqAAIBggACBES0ICAgIgFSATQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAA2qMAAAAXAADaEgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASgAAAEKAAABCgAAABcAAAEKgACBETyAAIERLQgICAiAVIBOCAiAAAjTAAAAOgAAADsAAAAOAADasQAA2rIAAAC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XAAABCoAAgRO3gACBE+4ICAgIgFSBAfEICIAACNIAAAA7AAAADgAA/zwAAAFaoQAA/z2BE/iAU9cAAAAOAAAAJQAAo9EAAAAhAAAAKAAAo9IAAAAjAACj0wAAABcAAAClAAAApQAA/0QAAACqAAAAMYEN64AAgRPLgRPLgRP5gRP6EmlCwrLfEBQAAAD7AAD/SAAA/0kAAP9KAAD/SwAA/0wAAP9NAAAAIQAAAA4AAP9OAAAAJQAA/08AAAAoAAD/UAAA/1EAAP9SAAD/UwAA/1QAAP9VAAAAIwAABCwAAAD8AAAA/AAA/1kAAAApAAABAgAAAPwAAAAUAAABBQAAACkAAABuAAD/YQAA/2IAAAApAAAAKQAAAPwAAP9mAAD/ZwAAAQIAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYBDgEOBE/yABIEDEYBDgAKBAxOABIA3gRSFgRP7gASABIBDgRQNgRSGgQMREqLeCgDTAAAAOgAAADsAAAAOAAD/awAA/20AAAC0oQAAAQ+ARaEAAP9ugRP9gGP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AagAAAG8AAABxAACVSQAAlU8AAJWIAACVmgAAlaEAAJWuAACVwQAAldkAAJXnAACWAQAAlgMAAJYGAACWCQAAlgsAAJYOAACWEAAAlhMAAJaEAACWowAAlsAAAJbfAACW8QAAlxEAAJcYAACXNgAAl0IAAJdeAACXZAAAl4YAAJenAACXugAAl7wAAJe/AACXwgAAl8QAAJfGAACXyAAAl8sAAJfOAACX0AAAl9IAAJfUAACX1gAAl9gAAJfaAACX2wAAl98AAJf4AACYAAAAmAsAAJj6AACY/AAAmP4AAJkAAACZAgAAmQQAAJkGAACZCAAAmQoAAJkMAACZDgAAmRAAAJkSAACZFAAAmRYAAJkYAACZGgAAmRwAAJkeAACZIAAAmSIAAJkkAACZJgAAmSgAAJkqAACZLAAAmS4AAJkwAACZMgAAmTQAAJk2AACZOAAAmToAAJk8AACZPgAAmUAAAJlCAACZRAAAmUYAAJlIAACZSgAAmUwAAJlOAACZUAAAmVIAAJlUAACZVgAAmVgAAJlaAACZXAAAmV4AAJlgAACZYgAAmWQAAJlmAACZaAAAmWoAAJlsAACZbgAAmXAAAJpfAACaYQAAmmQAAJpnAACaagAAmm0AAJpwAACacwAAmnYAAJp5AACafAAAmn8AAJqCAACahQAAmogAAJqLAACajgAAmpEAAJqUAACalwAAmpoAAJqdAACaoAAAmqMAAJqmAACaqQAAmqwAAJqvAACasgAAmrUAAJq4AACauwAAmr4AAJrBAACaxAAAmscAAJrKAACazQAAmtAAAJrTAACa1gAAmtkAAJrcAACa3wAAmuIAAJrlAACa6AAAmusAAJruAACa8QAAmvQAAJr3AACa+gAAmv0AAJsAAACbAwAAmwYAAJsJAACbDAAAmw8AAJsRAACbJwAAmzQAAJtCAACbcwAAm4wAAJukAACbvgAAm8oAAJvRAACb6AAAm/0AAJwXAACcNgAAnE4AAJxtAACcgQAAnJYAAJy9AACc1AAAnOcAAJz2AACdFAAAnUQAAJ1hAACdgQAAnZwAAJ2xAACdygAAndwAAJ3oAACd9wAAnioAAJ48AACeUgAAnl8AAJ5tAACefAAAnooAAJ6iAACeuQAAnswAAJ7kAACe8gAAnycAAJ9JAACfZwAAn3EAAJ+IAACfogAAn7sAAJ/bAACf7QAAoAMAAKANAACgJwAAoE4AAKBcAACgbgAAoIoAAKENAAChMQAAoVUAAKF4AAChnwAAob8AAKHmAACiDQAAoi0AAKJRAACidQAAooEAAKKDAACihQAAoocAAKKJAACiiwAAoo0AAKKQAACikgAAopQAAKKXAACimQAAopsAAKKeAACioAAAoqEAAKKmAACirgAAoscAAKLMAACizgAAotMAAKLVAACi1wAAouYAAKMvAACjUwAAo3oAAKOeAACjoAAAo6IAAKOkAACjpgAAo6gAAKOqAACjqwAAo60AAKPGAACj6wAAo+0AAKPvAACj8QAAo/MAAKP1AACj9wAAo/kAAKP7AACj/QAApCIAAKQkAACkJgAApCgAAKQqAACkLAAApC4AAKQwAACkMgAApDQAAKQ2AACkTAAApF8AAKR7AACkmAAApLQAAKTIAACk2gAApPAAAKUJAAClhAAApYoAAKWTAACloAAApawAAKW2AAClwAAApcsAAKXWAACl4wAApesAAKXtAACl7wAApfEAAKXzAACl9AAApfUAAKX2AACl9wAApfkAAKX7AACl/AAApf0AAKX/AACmAAAAphEAAKYSAACmFAAApiUAAKYwAACmOQAApkgAAKZVAACmXQAApmYAAKZ3AACmigAAppsAAKauAACmxQAAptcAAKdSAACnVAAAp1YAAKdYAACnWgAAp1sAAKdcAACnXQAAp14AAKdgAACnYgAAp2MAAKdkAACnZgAAp2cAAKfiAACn5AAAp+YAAKfoAACn6gAAp+sAAKfsAACn7QAAp+4AAKfwAACn8gAAp/MAAKf0AACn9gAAp/cAAKgIAACoDQAAqA8AAKgRAACoIgAAqC8AAKgxAACoMwAAqDUAAKg3AACoSgAAqGEAAKhzAACo7gAAqPAAAKjyAACo9AAAqPYAAKj3AACo+AAAqPkAAKj6AACo/AAAqP4AAKj/AACpAAAAqQIAAKkDAACpfgAAqYAAAKmCAACphAAAqYYAAKmHAACpiAAAqYkAAKmKAACpjAAAqY4AAKmPAACpkAAAqZIAAKmTAACppAAAqaUAAKmnAACqIgAAqiQAAKomAACqKAAAqioAAKorAACqLAAAqi0AAKouAACqMAAAqjIAAKozAACqNAAAqjYAAKo3AACqOAAAqrMAAKq1AACqtwAAqrkAAKq7AACqvAAAqr0AAKq+AACqvwAAqsEAAKrDAACqxAAAqsUAAKrHAACqyAAAquEAAKriAACq4wAAquUAAKr2AACrDAAAqxkAAKsmAACroQAAq6MAAKulAACrpwAAq6kAAKuqAACrqwAAq6wAAKutAACrrwAAq7EAAKuyAACrswAAq7UAAKu2AACr5wAAq+kAAKvrAACr7QAAq+4AAKvwAACsBwAArBgAAKwmAACsPwAArE0AAKxiAACsdgAArI0AAKyfAACtGgAArRwAAK0eAACtIAAArSIAAK0jAACtJAAArSUAAK0mAACtKAAArSoAAK0rAACtLAAArS4AAK0vAACtRQAArVYAAK1rAACtiAAArZ0AAK2rAACtwAAArdQAAK3rAACt/QAArhYAAK5VAACuVwAArlkAAK5bAACuXQAArl8AAK5hAACuYwAArmUAAK5nAACuaQAArmsAAK5tAACubwAArnEAAK5zAACusgAArrQAAK62AACuuAAArroAAK68AACuvwAArsIAAK7FAACuyAAArssAAK7OAACu0QAArtQAAK7XAACu2gAArtwAAK7uAACvAwAArz4AAK93AACvnwAAr8cAAK/eAACv8QAAsAYAALArAACwSAAAsFQAALBwAACwqwAAsLYAALFJAACxbAAAsYwAALGsAACxrgAAsbAAALGyAACxtAAAsbYAALG3AACxuAAAsboAALG7AACxvQAAsb4AALHAAACxwgAAscMAALHEAACxxgAAsccAALHQAACx6QAAsfIAALH0AACx9gAAsf8AALIBAACyAwAAsgUAALIaAACyLwAAsngAALKcAACywwAAsucAALLpAACy6wAAsu0AALLvAACy8QAAsvMAALL0AACy9gAAsw8AALMwAACzMgAAszQAALM2AACzOAAAszoAALM8AACzPgAAs0AAALNhAACzYwAAs2UAALNnAACzaQAAs2sAALNtAACzbwAAs3EAALNzAACzkQAAs68AALPCAACz1gAAs+sAALQIAAC0HAAAtDIAALStAAC0rwAAtLEAALSzAAC0tQAAtLYAALS3AAC0uAAAtLkAALS7AAC0vQAAtL4AALS/AAC0wQAAtMIAALU9AAC1PwAAtUEAALVDAAC1RQAAtUYAALVHAAC1SAAAtUkAALVLAAC1TQAAtU4AALVPAAC1UQAAtVIAALXNAAC1zwAAtdEAALXTAAC11QAAtdYAALXXAAC12AAAtdkAALXbAAC13QAAtd4AALXfAAC14QAAteIAALX7AAC1/AAAtf0AALX/AAC2egAAtnwAALZ+AAC2gAAAtoIAALaDAAC2hAAAtoUAALaGAAC2iAAAtooAALaLAAC2jAAAto4AALaPAAC3CgAAtwwAALcOAAC3EAAAtxIAALcTAAC3FAAAtxUAALcWAAC3GAAAtxoAALcbAAC3HAAAtx4AALcfAAC3mgAAt5wAALeeAAC3oAAAt6IAALejAAC3pAAAt6UAALemAAC3qAAAt6oAALerAAC3rAAAt64AALevAAC4KgAAuCwAALguAAC4MAAAuDIAALgzAAC4NAAAuDUAALg2AAC4OAAAuDoAALg7AAC4PAAAuD4AALg/AAC4ugAAuLwAALi+AAC4wAAAuMIAALjDAAC4xAAAuMUAALjGAAC4yAAAuMoAALjLAAC4zAAAuM4AALjPAAC5GAAAuTwAALljAAC5hwAAuYkAALmLAAC5jQAAuY8AALmRAAC5kwAAuZQAALmWAAC5rwAAucwAALnOAAC50AAAudIAALnUAAC51gAAudgAALnaAAC59wAAufkAALn7AAC5/QAAuf8AALoBAAC6AwAAugUAALoHAAC6JwAAulIAALpsAAC6hQAAup8AALq/AAC64gAAu10AALtfAAC7YQAAu2MAALtlAAC7ZgAAu2cAALtoAAC7aQAAu2sAALttAAC7bgAAu28AALtxAAC7cgAAu+0AALvvAAC78QAAu/MAALv1AAC79gAAu/cAALv4AAC7+QAAu/sAALv9AAC7/gAAu/8AALwBAAC8AgAAvH0AALx/AAC8gQAAvIMAALyFAAC8hgAAvIcAALyIAAC8iQAAvIsAALyNAAC8jgAAvI8AALyRAAC8kgAAvQ0AAL0PAAC9EQAAvRMAAL0VAAC9FgAAvRcAAL0YAAC9GQAAvRsAAL0dAAC9HgAAvR8AAL0hAAC9IgAAvSUAAL2gAAC9ogAAvaQAAL2mAAC9qAAAvakAAL2qAAC9qwAAvawAAL2uAAC9sAAAvbEAAL2yAAC9tAAAvbUAAL4wAAC+MgAAvjQAAL42AAC+OAAAvjkAAL46AAC+OwAAvjwAAL4+AAC+QAAAvkEAAL5CAAC+RAAAvkUAAL5UAAC+zwAAvtEAAL7TAAC+1QAAvtcAAL7YAAC+2QAAvtoAAL7bAAC+3QAAvt8AAL7gAAC+4QAAvuMAAL7kAAC+9QAAvwMAAL8cAAC/KgAAvzcAAL9KAAC/YQAAv3MAAMAGAADAKQAAwEkAAMBpAADAawAAwG0AAMBvAADAcQAAwHMAAMB0AADAdQAAwHcAAMB4AADAegAAwHsAAMB9AADAfwAAwIAAAMCBAADAgwAAwIQAAMCJAADAogAAwKsAAMCtAADArwAAwLgAAMC6AADAvAAAwL4AAMEHAADBKwAAwVIAAMF2AADBeAAAwXoAAMF8AADBfgAAwYAAAMGCAADBgwAAwYUAAMGeAADBvwAAwcEAAMHDAADBxQAAwccAAMHJAADBywAAwc0AAMHPAADB8AAAwfIAAMH0AADB9gAAwfgAAMH6AADB/AAAwf4AAMIAAADCAgAAwn0AAMJ/AADCgQAAwoMAAMKFAADChgAAwocAAMKIAADCiQAAwosAAMKNAADCjgAAwo8AAMKRAADCkgAAww0AAMMPAADDEQAAwxMAAMMVAADDFgAAwxcAAMMYAADDGQAAwxsAAMMdAADDHgAAwx8AAMMhAADDIgAAw50AAMOfAADDoQAAw6MAAMOlAADDpgAAw6cAAMOoAADDqQAAw6sAAMOtAADDrgAAw68AAMOxAADDsgAAw8sAAMPMAADDzQAAw88AAMRKAADETAAAxE4AAMRQAADEUgAAxFMAAMRUAADEVQAAxFYAAMRYAADEWgAAxFsAAMRcAADEXgAAxF8AAMTaAADE3AAAxN4AAMTgAADE4gAAxOMAAMTkAADE5QAAxOYAAMToAADE6gAAxOsAAMTsAADE7gAAxO8AAMTwAADFawAAxW0AAMVvAADFcQAAxXMAAMV0AADFdQAAxXYAAMV3AADFeQAAxXsAAMV8AADFfQAAxX8AAMWAAADF+wAAxf0AAMX/AADGAQAAxgMAAMYEAADGBQAAxgYAAMYHAADGCQAAxgsAAMYMAADGDQAAxg8AAMYQAADGiwAAxo0AAMaPAADGkQAAxpMAAMaUAADGlQAAxpYAAMaXAADGmQAAxpsAAMacAADGnQAAxp8AAMagAADG6QAAxw0AAMc0AADHWAAAx1oAAMdcAADHXgAAx2AAAMdiAADHZAAAx2UAAMdnAADHgAAAx50AAMefAADHoQAAx6MAAMelAADHpwAAx6kAAMerAADHyAAAx8oAAMfMAADHzgAAx9AAAMfSAADH1AAAx9YAAMfYAADIUwAAyFUAAMhXAADIWQAAyFsAAMhcAADIXQAAyF4AAMhfAADIYQAAyGMAAMhkAADIZQAAyGcAAMhoAADI4wAAyOUAAMjnAADI6QAAyOsAAMjsAADI7QAAyO4AAMjvAADI8QAAyPMAAMj0AADI9QAAyPcAAMj4AADJcwAAyXUAAMl3AADJeQAAyXsAAMl8AADJfQAAyX4AAMl/AADJgQAAyYMAAMmEAADJhQAAyYcAAMmIAADKAwAAygUAAMoHAADKCQAAygsAAMoMAADKDQAAyg4AAMoPAADKEQAAyhMAAMoUAADKFQAAyhcAAMoYAADKkwAAypUAAMqXAADKmQAAypsAAMqcAADKnQAAyp4AAMqfAADKoQAAyqMAAMqkAADKpQAAyqcAAMqoAADLIwAAyyUAAMsnAADLKQAAyysAAMssAADLLQAAyy4AAMsvAADLMQAAyzMAAMs0AADLNQAAyzcAAMs4AADLSgAAy8UAAMvHAADLyQAAy8sAAMvNAADLzgAAy88AAMvQAADL0QAAy9MAAMvVAADL1gAAy9cAAMvZAADL2gAAzG0AAMyQAADMsAAAzNAAAMzSAADM1AAAzNYAAMzYAADM2gAAzNsAAMzcAADM3gAAzN8AAMzhAADM4gAAzOQAAMzmAADM5wAAzOgAAMzqAADM6wAAzPAAAM0JAADNEgAAzRQAAM0WAADNHwAAzSEAAM0jAADNJQAAzW4AAM2SAADNuQAAzd0AAM3fAADN4QAAzeMAAM3lAADN5wAAzekAAM3qAADN7AAAzgUAAM4mAADOKAAAzioAAM4sAADOLgAAzjAAAM4yAADONAAAzjYAAM5XAADOWQAAzlsAAM5dAADOXwAAzmEAAM5jAADOZQAAzmcAAM5pAADO5AAAzuYAAM7oAADO6gAAzuwAAM7tAADO7gAAzu8AAM7wAADO8gAAzvQAAM71AADO9gAAzvgAAM75AADPdAAAz3YAAM94AADPegAAz3wAAM99AADPfgAAz38AAM+AAADPggAAz4QAAM+FAADPhgAAz4gAAM+JAADQBAAA0AYAANAIAADQCgAA0AwAANANAADQDgAA0A8AANAQAADQEgAA0BQAANAVAADQFgAA0BgAANAZAADQMgAA0DMAANA0AADQNgAA0LEAANCzAADQtQAA0LcAANC5AADQugAA0LsAANC8AADQvQAA0L8AANDBAADQwgAA0MMAANDFAADQxgAA0UEAANFDAADRRQAA0UcAANFJAADRSgAA0UsAANFMAADRTQAA0U8AANFRAADRUgAA0VMAANFVAADRVgAA0dEAANHTAADR1QAA0dcAANHZAADR2gAA0dsAANHcAADR3QAA0d8AANHhAADR4gAA0eMAANHlAADR5gAA0mEAANJjAADSZQAA0mcAANJpAADSagAA0msAANJsAADSbQAA0m8AANJxAADScgAA0nMAANJ1AADSdgAA0vEAANLzAADS9QAA0vcAANL5AADS+gAA0vsAANL8AADS/QAA0v8AANMBAADTAgAA0wMAANMFAADTBgAA008AANNzAADTmgAA074AANPAAADTwgAA08QAANPGAADTyAAA08oAANPLAADTzQAA0+YAANQDAADUBQAA1AcAANQJAADUCwAA1A0AANQPAADUEQAA1C4AANQwAADUMgAA1DQAANQ2AADUOAAA1DoAANQ8AADUPgAA1LkAANS7AADUvQAA1L8AANTBAADUwgAA1MMAANTEAADUxQAA1McAANTJAADUygAA1MsAANTNAADUzgAA1NAAANVLAADVTQAA1U8AANVRAADVUwAA1VQAANVVAADVVgAA1VcAANVZAADVWwAA1VwAANVdAADVXwAA1WAAANXbAADV3QAA1d8AANXhAADV4wAA1eQAANXlAADV5gAA1ecAANXpAADV6wAA1ewAANXtAADV7wAA1fAAANZrAADWbQAA1m8AANZxAADWcwAA1nQAANZ1AADWdgAA1ncAANZ5AADWewAA1nwAANZ9AADWfwAA1oAAANaDAADW/gAA1wAAANcCAADXBAAA1wYAANcHAADXCAAA1wkAANcKAADXDAAA1w4AANcPAADXEAAA1xIAANcTAADXjgAA15AAANeSAADXlAAA15YAANeXAADXmAAA15kAANeaAADXnAAA154AANefAADXoAAA16IAANejAADYHgAA2CAAANgiAADYJAAA2CYAANgnAADYKAAA2CkAANgqAADYLAAA2C4AANgvAADYMAAA2DIAANgzAADYxgAA2OkAANkJAADZKQAA2SsAANktAADZLwAA2TEAANkzAADZNAAA2TUAANk3AADZOAAA2ToAANk7AADZPQAA2T8AANlAAADZQQAA2UMAANlEAADZSQAA2WIAANlrAADZbQAA2W8AANl4AADZegAA2XwAANl+AADZxwAA2esAANoSAADaNgAA2jgAANo6AADaPAAA2j4AANpAAADaQgAA2kMAANpFAADaXgAA2n8AANqBAADagwAA2oUAANqHAADaiQAA2osAANqNAADajwAA2rAAANqyAADatAAA2rYAANq4AADaugAA2rwAANq+AADawAAA2sIAANs9AADbPwAA20EAANtDAADbRQAA20YAANtHAADbSAAA20kAANtLAADbTQAA204AANtPAADbUQAA21IAANvNAADbzwAA29EAANvTAADb1QAA29YAANvXAADb2AAA29kAANvbAADb3QAA294AANvfAADb4QAA2+IAANxdAADcXwAA3GEAANxjAADcZQAA3GYAANxnAADcaAAA3GkAANxrAADcbQAA3G4AANxvAADccQAA3HIAANyLAADcjAAA3I0AANyPAADdCgAA3QwAAN0OAADdEAAA3RIAAN0TAADdFAAA3RUAAN0WAADdGAAA3RoAAN0bAADdHAAA3R4AAN0fAADdmgAA3ZwAAN2eAADdoAAA3aIAAN2jAADdpAAA3aUAAN2mAADdqAAA3aoAAN2rAADdrAAA3a4AAN2vAADeKgAA3iwAAN4uAADeMAAA3jIAAN4zAADeNAAA3jUAAN42AADeOAAA3joAAN47AADePAAA3j4AAN4/AADeugAA3rwAAN6+AADewAAA3sIAAN7DAADexAAA3sUAAN7GAADeyAAA3soAAN7LAADezAAA3s4AAN7PAADfSgAA30wAAN9OAADfUAAA31IAAN9TAADfVAAA31UAAN9WAADfWAAA31oAAN9bAADfXAAA314AAN9fAADfqAAA38wAAN/zAADgFwAA4BkAAOAbAADgHQAA4B8AAOAhAADgIwAA4CQAAOAmAADgPwAA4FwAAOBeAADgYAAA4GIAAOBkAADgZgAA4GgAAOBqAADghwAA4IkAAOCLAADgjQAA4I8AAOCRAADgkwAA4JUAAOCXAADhEgAA4RQAAOEWAADhGAAA4RoAAOEbAADhHAAA4R0AAOEeAADhIAAA4SIAAOEjAADhJAAA4SYAAOEnAADhogAA4aQAAOGmAADhqAAA4aoAAOGrAADhrAAA4a0AAOGuAADhsAAA4bIAAOGzAADhtAAA4bYAAOG3AADiMgAA4jQAAOI2AADiOAAA4joAAOI7AADiPAAA4j0AAOI+AADiQAAA4kIAAOJDAADiRAAA4kYAAOJHAADiwgAA4sQAAOLGAADiyAAA4soAAOLLAADizAAA4s0AAOLOAADi0AAA4tIAAOLTAADi1AAA4tYAAOLXAADjUgAA41QAAONWAADjWAAA41oAAONbAADjXAAA410AAONeAADjYAAA42IAAONjAADjZAAA42YAAONnAADj4gAA4+QAAOPmAADj6AAA4+oAAOPrAADj7AAA4+0AAOPuAADj8AAA4/IAAOPzAADj9AAA4/YAAOP3AADkcgAA5HQAAOR2AADkeAAA5HoAAOR7AADkfAAA5H0AAOR+AADkgAAA5IIAAOSDAADkhAAA5IYAAOSHAADlGgAA5T0AAOVdAADlfQAA5X8AAOWBAADlgwAA5YUAAOWHAADliAAA5YkAAOWLAADljAAA5Y4AAOWPAADlkQAA5ZMAAOWUAADllQAA5ZcAAOWYAADlnQAA5bYAAOW/AADlwQAA5cMAAOXMAADlzgAA5dAAAOXSAADmGwAA5j8AAOZmAADmigAA5owAAOaOAADmkAAA5pIAAOaUAADmlgAA5pcAAOaZAADmsgAA5tMAAObVAADm1wAA5tkAAObbAADm3QAA5t8AAObhAADm4wAA5wQAAOcGAADnCAAA5woAAOcMAADnDgAA5xAAAOcSAADnFAAA5xYAAOeRAADnkwAA55UAAOeXAADnmQAA55oAAOebAADnnAAA550AAOefAADnoQAA56IAAOejAADnpQAA56YAAOghAADoIwAA6CUAAOgnAADoKQAA6CoAAOgrAADoLAAA6C0AAOgvAADoMQAA6DIAAOgzAADoNQAA6DYAAOixAADoswAA6LUAAOi3AADouQAA6LoAAOi7AADovAAA6L0AAOi/AADowQAA6MIAAOjDAADoxQAA6MYAAOjfAADo4AAA6OEAAOjjAADpXgAA6WAAAOliAADpZAAA6WYAAOlnAADpaAAA6WkAAOlqAADpbAAA6W4AAOlvAADpcAAA6XIAAOlzAADp7gAA6fAAAOnyAADp9AAA6fYAAOn3AADp+AAA6fkAAOn6AADp/AAA6f4AAOn/AAD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NLgABDTAAAQ0xAAENMgABDTQAAQ01AAENsAABDbIAAQ20AAENtgABDbkAAQ26AAENuwABDbwAAQ29AAENvwABDcEAAQ3CAAENwwABDcUAAQ3GAAEOQQABDkMAAQ5GAAEOSAABDksAAQ5MAAEOTQABDk4AAQ5PAAEOUQABDlMAAQ5UAAEOVQABDlcAAQ5YAAEOcQABDnIAAQ5zAAEOdQABDvAAAQ7yAAEO9AABDvYAAQ75AAEO+gABDvsAAQ78AAEO/QABDv8AAQ8BAAEPAgABDwMAAQ8FAAEPBgABD4EAAQ+DAAEPhQABD4cAAQ+KAAEPiwABD4wAAQ+NAAEPjgABD5AAAQ+SAAEPkwABD5QAAQ+WAAEPlwABEBIAARAUAAEQFgABEBgAARAbAAEQHAABEB0AARAeAAEQHwABECEAARAjAAEQJAABECUAARAnAAEQKAABEKMAARClAAEQpwABEKkAARCsAAEQrQABEK4AARCvAAEQsAABELIAARC0AAEQtQABELYAARC4AAEQuQABETQAARE2AAEROAABEToAARE9AAERPgABET8AARFAAAERQQABEUMAARFFAAERRgABEUcAARFJAAERSgABEZMAARG3AAER3gABEgIAARIFAAESBwABEgkAARILAAESDQABEg8AARIQAAESEwABEiwAARJJAAESSwABEk0AARJPAAESUQABElMAARJVAAESVwABEnQAARJ3AAESegABEn0AARKAAAESgwABEoYAARKJAAESiwABEwYAARMIAAETCgABEwwAARMPAAETEAABExEAARMSAAETEwABExUAARMXAAETGAABExkAARMbAAETHAABE5cAAROZAAETmwABE50AAROgAAEToQABE6IAAROjAAETpAABE6YAAROoAAETqQABE6oAAROsAAETrQABFCgAARQqAAEULAABFC4AARQxAAEUMgABFDMAARQ0AAEUNQABFDcAARQ5AAEUOgABFDsAARQ9AAEUPgABFLkAARS7AAEUvQABFL8AARTCAAEUwwABFMQAARTFAAEUxgABFMgAARTKAAEUywABFMwAARTOAAEUzwABFUoAARVMAAEVTgABFVAAARVTAAEVVAABFVUAARVWAAEVVwABFVkAARVbAAEVXAABFV0AARVfAAEVYAABFdsAARXdAAEV4AABFeIAARXlAAEV5gABFecAARXoAAEV6QABFesAARXtAAEV7gABFe8AARXxAAEV8gABFgEAARZ8AAEWfgABFoAAARaCAAEWhQABFoYAARaHAAEWiAABFokAARaLAAEWjQABFo4AARaPAAEWkQABFpIAARclAAEXSAABF2gAAReIAAEXigABF4wAAReOAAEXkAABF5IAAReTAAEXlAABF5cAAReYAAEXmgABF5sAARedAAEXnwABF6AAARehAAEXpAABF6UAAReqAAEXwwABF8wAARfOAAEX0AABF9kAARfcAAEX3wABF+EAARgqAAEYTgABGHUAARiZAAEYnAABGJ4AARigAAEYogABGKQAARimAAEYpwABGKoAARjDAAEY5AABGOYAARjoAAEY6gABGOwAARjuAAEY8AABGPIAARj0AAEZFQABGRgAARkbAAEZHgABGSEAARkkAAEZJwABGSoAARktAAEZLwABGaoAARmsAAEZrgABGbAAARmzAAEZtAABGbUAARm2AAEZtwABGbkAARm7AAEZvAABGb0AARm/AAEZwAABGjsAARo9AAEaPwABGkEAARpEAAEaRQABGkYAARpHAAEaSAABGkoAARpMAAEaTQABGk4AARpQAAEaUQABGswAARrOAAEa0QABGtMAARrWAAEa1wABGtgAARrZAAEa2gABGtwAARreAAEa3wABGuAAARriAAEa4wABGvwAARr9AAEa/gABGwAAARt7AAEbfQABG38AARuBAAEbhAABG4UAARuGAAEbhwABG4gAARuKAAEbjAABG40AARuOAAEbkAABG5EAARwMAAEcDgABHBAAARwSAAEcFQABHBYAARwXAAEcGAABHBkAARwbAAEcHQABHB4AARwfAAEcIQABHCIAARydAAEcnwABHKEAARyjAAEcpgABHKcAARyoAAEcqQABHKoAARysAAEcrgABHK8AARywAAEcsgABHLMAAR0uAAEdMAABHTIAAR00AAEdNwABHTgAAR05AAEdOgABHTsAAR09AAEdPwABHUAAAR1BAAEdQwABHUQAAR2/AAEdwQABHcMAAR3FAAEdyAABHckAAR3KAAEdywABHcwAAR3OAAEd0AABHdEAAR3SAAEd1AABHdUAAR4eAAEeQgABHmkAAR6NAAEekAABHpIAAR6UAAEelgABHpgAAR6aAAEemwABHp4AAR63AAEe1AABHtYAAR7YAAEe2gABHtwAAR7eAAEe4AABHuIAAR7/AAEfAgABHwUAAR8IAAEfCwABHw4AAR8RAAEfFAABHxYAAR+RAAEfkwABH5UAAR+XAAEfmgABH5sAAR+cAAEfnQABH54AAR+gAAEfogABH6MAAR+kAAEfpgABH6cAASAiAAEgJAABICYAASAoAAEgKwABICwAASAtAAEgLgABIC8AASAxAAEgMwABIDQAASA1AAEgNwABIDgAASCzAAEgtQABILcAASC5AAEgvAABIL0AASC+AAEgvwABIMAAASDCAAEgxAABIMUAASDGAAEgyAABIMkAASFEAAEhRgABIUgAASFKAAEhTQABIU4AASFPAAEhUAABIVEAASFTAAEhVQABIVYAASFXAAEhWQABIVoAASHVAAEh1wABIdkAASHbAAEh3gABId8AASHgAAEh4QABIeIAASHkAAEh5gABIecAASHoAAEh6gABIesAASJmAAEiaAABImoAASJsAAEibwABInAAASJxAAEicgABInMAASJ1AAEidwABIngAASJ5AAEiewABInwAASL3AAEi+QABIvsAASL9AAEjAAABIwEAASMCAAEjAwABIwQAASMGAAEjCAABIwkAASMKAAEjDAABIw0AASOgAAEjwwABI+MAASQDAAEkBQABJAcAASQJAAEkCwABJA0AASQOAAEkDwABJBIAASQTAAEkFQABJBYAASQYAAEkGgABJBsAASQcAAEkHwABJCAAASQlAAEkPgABJEcAASRJAAEkSwABJFQAASRXAAEkWgABJFwAASSlAAEkyQABJPAAASUUAAElFwABJRkAASUbAAElHQABJR8AASUhAAElIgABJSUAASU+AAElXwABJWEAASVjAAElZQABJWcAASVpAAElawABJW0AASVvAAElkAABJZMAASWWAAElmQABJZwAASWfAAElogABJaUAASWoAAElqgABJiUAASYnAAEmKQABJisAASYuAAEmLwABJjAAASYxAAEmMgABJjQAASY2AAEmNwABJjgAASY6AAEmOwABJrYAASa4AAEmugABJrwAASa/AAEmwAABJsEAASbCAAEmwwABJsUAASbHAAEmyAABJskAASbLAAEmzAABJ0cAASdJAAEnTAABJ04AASdRAAEnUgABJ1MAASdUAAEnVQABJ1cAASdZAAEnWgABJ1sAASddAAEnXgABJ3cAASd4AAEneQABJ3sAASf2AAEn+AABJ/oAASf8AAEn/wABKAAAASgBAAEoAgABKAMAASgFAAEoBwABKAgAASgJAAEoCwABKAwAASiHAAEoiQABKIsAASiNAAEokAABKJEAASiSAAEokwABKJQAASiWAAEomAABKJkAASiaAAEonAABKJ0AASkYAAEpGgABKRwAASkeAAEpIQABKSIAASkjAAEpJAABKSUAASknAAEpKQABKSoAASkrAAEpLQABKS4AASmpAAEpqwABKa0AASmvAAEpsgABKbMAASm0AAEptQABKbYAASm4AAEpugABKbsAASm8AAEpvgABKb8AASo6AAEqPAABKj4AASpAAAEqQwABKkQAASpFAAEqRgABKkcAASpJAAEqSwABKkwAASpNAAEqTwABKlAAASqZAAEqvQABKuQAASsIAAErCwABKw0AASsPAAErEQABKxMAASsVAAErFgABKxkAASsyAAErTwABK1EAAStTAAErVQABK1cAAStZAAErWwABK10AASt6AAErfQABK4AAASuDAAErhgABK4kAASuMAAErjwABK5EAASwMAAEsDgABLBAAASwSAAEsFQABLBYAASwXAAEsGAABLBkAASwbAAEsHQABLB4AASwfAAEsIQABLCIAASydAAEsnwABLKEAASyjAAEspgABLKcAASyoAAEsqQABLKoAASysAAEsrgABLK8AASywAAEssgABLLMAAS0uAAEtMAABLTIAAS00AAEtNwABLTgAAS05AAEtOgABLTsAAS09AAEtPwABLUAAAS1BAAEtQwABLUQAAS2/AAEtwQABLcMAAS3FAAEtyAABLckAAS3KAAEtywABLcwAAS3OAAEt0AABLdEAAS3SAAEt1AABLdUAAS5QAAEuUgABLlQAAS5WAAEuWQABLloAAS5bAAEuXAABLl0AAS5fAAEuYQABLmIAAS5jAAEuZQABLmYAAS7hAAEu4wABLuUAAS7nAAEu6gABLusAAS7sAAEu7QABLu4AAS7wAAEu8gABLvMAAS70AAEu9gABLvcAAS9yAAEvdAABL3YAAS94AAEvewABL3wAAS99AAEvfgABL38AAS+BAAEvgwABL4QAAS+FAAEvhwABL4gAATAbAAEwPgABMF4AATB+AAEwgAABMIIAATCEAAEwhgABMIgAATCJAAEwigABMI0AATCOAAEwkAABMJEAATCTAAEwlQABMJYAATCXAAEwmgABMJsAATCgAAEwuQABMMIAATDEAAEwxgABMM8AATDSAAEw1QABMNcAATEgAAExRAABMWsAATGPAAExkgABMZQAATGWAAExmAABMZoAATGcAAExnQABMaAAATG5AAEx2gABMdwAATHeAAEx4AABMeIAATHkAAEx5gABMegAATHqAAEyCwABMg4AATIRAAEyFAABMhcAATIaAAEyHQABMiAAATIjAAEyJQABMqAAATKiAAEypAABMqYAATKpAAEyqgABMqsAATKsAAEyrQABMq8AATKxAAEysgABMrMAATK1AAEytgABMzEAATMzAAEzNQABMzcAATM6AAEzOwABMzwAATM9AAEzPgABM0AAATNCAAEzQwABM0QAATNGAAEzRwABM8IAATPEAAEzxwABM8kAATPMAAEzzQABM84AATPPAAEz0AABM9IAATPUAAEz1QABM9YAATPYAAEz2QABM/IAATPzAAEz9AABM/YAATRxAAE0cwABNHUAATR3AAE0egABNHsAATR8AAE0fQABNH4AATSAAAE0ggABNIMAATSEAAE0hgABNIcAATUCAAE1BAABNQYAATUIAAE1CwABNQwAATUNAAE1DgABNQ8AATURAAE1EwABNRQAATUVAAE1FwABNRgAATWTAAE1lQABNZcAATWZAAE1nAABNZ0AATWeAAE1nwABNaAAATWiAAE1pAABNaUAATWmAAE1qAABNakAATYkAAE2JgABNigAATYqAAE2LQABNi4AATYvAAE2MAABNjEAATYzAAE2NQABNjYAATY3AAE2OQABNjoAATa1AAE2twABNrkAATa7AAE2vgABNr8AATbAAAE2wQABNsIAATbEAAE2xgABNscAATbIAAE2ygABNssAATcUAAE3OAABN18AATeDAAE3hgABN4gAATeKAAE3jAABN44AATeQAAE3kQABN5QAATetAAE3ygABN8wAATfOAAE30AABN9IAATfUAAE31gABN9gAATf1AAE3+AABN/sAATf+AAE4AQABOAQAATgHAAE4CgABOAwAATiHAAE4iQABOIsAATiNAAE4kAABOJEAATiSAAE4kwABOJQAATiWAAE4mAABOJkAATiaAAE4nAABOJ0AATkYAAE5GgABORwAATkeAAE5IQABOSIAATkjAAE5JAABOSUAATknAAE5KQABOSoAATkrAAE5LQABOS4AATmpAAE5qwABOa0AATmvAAE5sgABObMAATm0AAE5tQABObYAATm4AAE5ugABObsAATm8AAE5vgABOb8AATo6AAE6PAABOj8AATpBAAE6RAABOkUAATpGAAE6RwABOkgAATpKAAE6TAABOk0AATpOAAE6UAABOlEAATrMAAE6zgABOtAAATrSAAE61QABOtYAATrXAAE62AABOtkAATrbAAE63QABOt4AATrfAAE64QABOuIAATtdAAE7XwABO2EAATtjAAE7ZgABO2cAATtoAAE7aQABO2oAATtsAAE7bgABO28AATtwAAE7cgABO3MAATvuAAE78AABO/IAATv0AAE79wABO/gAATv5AAE7+gABO/sAATv9AAE7/wABPAAAATwBAAE8AwABPAQAATyXAAE8ugABPNoAATz6AAE8/AABPP4AAT0AAAE9AgABPQQAAT0FAAE9BgABPQkAAT0KAAE9DAABPQ0AAT0PAAE9EQABPRIAAT0TAAE9FgABPRcAAT0cAAE9NQABPT4AAT1AAAE9QgABPUsAAT1OAAE9UQABPVMAAT2cAAE9wAABPecAAT4LAAE+DgABPhAAAT4SAAE+FAABPhYAAT4YAAE+GQABPhwAAT41AAE+VgABPlgAAT5aAAE+XAABPl4AAT5gAAE+YgABPmQAAT5mAAE+hwABPooAAT6NAAE+kAABPpMAAT6WAAE+mQABPpwAAT6fAAE+oQABPxwAAT8eAAE/IAABPyIAAT8lAAE/JgABPycAAT8oAAE/KQABPysAAT8tAAE/LgABPy8AAT8xAAE/MgABP60AAT+vAAE/sQABP7MAAT+2AAE/twABP7gAAT+5AAE/ugABP7wAAT++AAE/vwABP8AAAT/CAAE/wwABQD4AAUBAAAFAQwABQEUAAUBIAAFASQABQEoAAUBLAAFATAABQE4AAUBQAAFAUQABQFIAAUBUAAFAVQABQG4AAUBvAAFAcAABQHIAAUDtAAFA7wABQPEAAUDzAAFA9gABQPcAAUD4AAFA+QABQPoAAUD8AAFA/gABQP8AAUEAAAFBAgABQQMAAUF+AAFBgAABQYIAAUGEAAFBhwABQYgAAUGJAAFBigABQYsAAUGNAAF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TQAABU0EAAVNCAAFTQwABU0QAAVNGAAFTSAABU0kAAVNKAAFTTAABU00AAVPIAAFTygABU8wAAVPOAAFT0QABU9IAAVPTAAFT1AABU9UAAVPXAAFT2QABU9oAAVPbAAFT3QABU94AAVRZAAFUWwABVF0AAVRfAAFUYgABVGMAAVRkAAFUZQABVGYAAVRoAAFUagABVGsAAVRsAAFUbgABVG8AAVTqAAFU7AABVO4AAVTwAAFU8wABVPQAAVT1AAFU9gABVPcAAVT5AAFU+wABVPwAAVT9AAFU/wABVQAAAVWTAAFVtgABVdYAAVX2AAFV+AABVfoAAVX8AAFV/gABVgAAAVYBAAFWAgABVgUAAVYGAAFWCAABVgkAAVYLAAFWDQABVg4AAVYPAAFWEgABVhMAAVYcAAFWNQABVj4AAVZAAAFWQgABVksAAVZOAAFWUQABVlMAAVacAAFWwAABVucAAVcLAAFXDgABVxAAAVcSAAFXFAABVxYAAVcYAAFXGQABVxwAAVc1AAFXVgABV1gAAVdaAAFXXAABV14AAVdgAAFXYgABV2QAAVdmAAFXhwABV4oAAVeNAAFXkAABV5MAAVeWAAFXmQABV5wAAVefAAFXoQABWBwAAVgeAAFYIAABWCIAAVglAAFYJgABWCcAAVgoAAFYKQABWCsAAVgtAAFYLgABWC8AAVgxAAFYMgABWK0AAVivAAFYsQABWLMAAVi2AAFYtwABWLgAAVi5AAFYugABWLwAAVi+AAFYvwABWMAAAVjCAAFYwwABWT4AAVlAAAFZQwABWUUAAVlIAAFZSQABWUoAAVlLAAFZTAABWU4AAVlQAAFZUQABWVIAAVlUAAFZVQABWW4AAVlvAAFZcAABWXIAAVntAAFZ7wABWfEAAVnzAAFZ9gABWfcAAVn4AAFZ+QABWfoAAVn8AAFZ/gABWf8AAVoAAAFaAgABWgMAAVp+AAFagAABWoIAAVqEAAFahwABWogAAVqJAAFaigABWosAAVqNAAFajwABWpAAAVqRAAFakwABWpQAAVsPAAFbEQABWxMAAVsVAAFbGAABWxkAAVsaAAFbGwABWxwAAVseAAFbIAABWyEAAVsiAAFbJAABWyUAAVugAAFbogABW6QAAVumAAFbqQABW6oAAVurAAFbrAABW60AAVuvAAFbsQABW7IAAVuzAAFbtQABW7YAAVwxAAFcMwABXDUAAVw3AAFcOgABXDsAAVw8AAFcPQABXD4AAVxAAAFcQgABXEMAAVxEAAFcRgABXEcAAVyQAAFctAABXNsAAVz/AAFdAgABXQQAAV0GAAFdCAABXQoAAV0MAAFdDQABXRAAAV0pAAFdRgABXUgAAV1KAAFdTAABXU4AAV1QAAFdUgABXVQAAV1xAAFddAABXXcAAV16AAFdfQABXYAAAV2DAAFdhgABXYgAAV4DAAFeBQABXgcAAV4JAAFeDAABXg0AAV4OAAFeDwABXhAAAV4SAAFeFAABXhUAAV4WAAFeGAABXhkAAV6UAAFelgABXpgAAV6aAAFenQABXp4AAV6fAAFeoAABXqEAAV6jAAFepQABXqYAAV6nAAFeqQABXqoAAV8lAAFfJwABXykAAV8rAAFfLgABXy8AAV8wAAFfMQABXzIAAV80AAFfNgABXzcAAV84AAFfOgABXzsAAV+2AAFfuAABX7oAAV+8AAFfvwABX8AAAV/BAAFfwgABX8MAAV/FAAFfxwABX8gAAV/JAAFfywABX8wAAWBHAAFgSQABYEsAAWBNAAFgUAABYFEAAWBSAAFgUwABYFQAAWBWAAFgWAABYFkAAWBaAAFgXAABYF0AAWDYAAFg2gABYNwAAWDeAAFg4QABYOIAAWDjAAFg5AABYOUAAWDnAAFg6QABYOoAAWDrAAFg7QABYO4AAWFpAAFhawABYW0AAWFvAAFhcgABYXMAAWF0AAFhdQABYXYAAWF4AAFhegABYXsAAWF8AAFhfgABYX8AAWISAAFiNQABYlUAAWJ1AAFidwABYnkAAWJ7AAFifQABYn8AAWKAAAFigQABYoQAAWKFAAFihwABYogAAWKLAAFijQABYo4AAWKPAAFikgABYpMAAWKYAAFisQABYroAAWK8AAFivwABYsgAAWLLAAFizgABYtAAAWLjAAFjLAABY1AAAWN3AAFjmwABY54AAWOgAAFjogABY6QAAWOmAAFjqAABY6kAAWOsAAFjxQABY+YAAWPoAAFj6gABY+wAAWPuAAFj8AABY/IAAWP0AAFj9gABZBcAAWQaAAFkHQABZCAAAWQjAAFkJgABZCkAAWQsAAFkLwABZDEAAWSsAAFkrgABZLAAAWSyAAFktQABZLYAAWS3AAFkuAABZLkAAWS7AAFkvQABZL4AAWS/AAFkwQABZMIAAWU9AAFlPwABZUEAAWVDAAFlRgABZUcAAWVIAAFlSQABZUoAAWVMAAFlTgABZU8AAWVQAAFlUgABZVMAAWXOAAFl0AABZdMAAWXVAAFl2AABZdkAAWXaAAFl2wABZdwAAWXeAAFl4AABZeEAAWXiAAFl5AABZeUAAWX+AAFl/wABZgAAAWYCAAFmfQABZn8AAWaBAAFmgwABZoYAAWaHAAFmiAABZokAAWaKAAFmjAABZo4AAWaPAAFmkAABZpIAAWaTAAFnDgABZxAAAWcSAAFnFAABZxcAAWcYAAFnGQABZxoAAWcbAAFnHQABZx8AAWcgAAFnIQABZyMAAWckAAFnnwABZ6EAAWejAAFnpQABZ6gAAWepAAFnqgABZ6sAAWesAAFnrgABZ7AAAWexAAFnsgABZ7QAAWe1AAFoMAABaDIAAWg0AAFoNgABaDkAAWg6AAFoOwABaDwAAWg9AAFoPwABaEEAAWhCAAFoQwABaEUAAWhGAAFowQABaMMAAWjFAAFoxwABaMoAAWjLAAFozAABaM0AAWjOAAFo0AABaNIAAWjTAAFo1AABaNYAAWjXAAFpIAABaUQAAWlrAAFpjwABaZIAAWmVAAFplwABaZkAAWmbAAFpnQABaZ4AAWmhAAFpugABadcAAWnaAAFp3QABaeAAAWnjAAFp5gABaekAAWnsAAFqCQABagwAAWoPAAFqEgABahUAAWoYAAFqGwABah4AAWogAAFqMgABakYAAWpYAAFqbQABan8AAWqOAAFqqwABayYAAWsoAAFrKwABay0AAWswAAFrMQABazIAAWszAAFrNAABazYAAWs5AAFrOgABazsAAWs9AAFrPgABa7kAAWu7AAFrvgABa8AAAWvDAAFrxAABa8UAAWvGAAFrxwABa8kAAWvMAAFrzQABa84AAWvQAAFr0QABa9MAAWxOAAFsUAABbFMAAWxVAAFsWAABbFkAAWxaAAFsWwABbFwAAWxeAAFsYQABbGIAAWxjAAFsZQABbGYAAWzhAAFs4wABbOYAAWzoAAFs6wABbOwAAWztAAFs7gABbO8AAWzxAAFs9AABbPUAAWz2AAFs+AABbPkAAW18AAFtoAABbcQAAW3nAAFuDgABbi4AAW5VAAFufAABbpwAAW7AAAFu5AABbuYAAW7pAAFu6wABbu0AAW7vAAFu8gABbvUAAW73AAFu+QABbvwAAW7+AAFvAAABbwMAAW8GAAFvBwABbwwAAW8lAAFvKgABbywAAW8xAAFvNAABbzYAAW9/AAFvowABb8oAAW/uAAFv8QABb/MAAW/1AAFv9wABb/kAAW/7AAFv/AABb/8AAXAYAAFwPQABcD8AAXBBAAFwQwABcEUAAXBHAAFwSQABcEsAAXBNAAFwTwABcHQAAXB3AAFwegABcH0AAXCAAAFwgwABcIYAAXCJAAFwjAABcI8AAXCRAAFxDAABcQ4AAXERAAFxEwABcRYAAXEXAAFxGAABcRkAAXEaAAFxHAABcR4AAXEfAAFxIAABcSIAAXEjAAFxNAABcTUAAXE3AAFxsgABcbQAAXG2AAFxuAABcbsAAXG8AAFxvQABcb4AAXG/AAFxwQABccMAAXHEAAFxxQABcccAAXHIAAFyQwABckUAAXJIAAFySgABck0AAXJOAAFyTwABclAAAXJRAAFyUwABclUAAXJWAAFyVwABclkAAXJaAAFyawABcmwAAXJuAAFy6QABcusAAXLtAAFy7wABcvIAAXLzAAFy9AABcvUAAXL2AAFy+AABcvoAAXL7AAFy/AABcv4AAXL/AAFzegABc3wAAXN/AAFzgQABc4QAAXOFAAFzhgABc4cAAXOIAAFzigABc4wAAXONAAFzjgABc5AAAXORAAFzogABc6MAAXOlAAF0IAABdCIAAXQkAAF0JgABdCkAAXQqAAF0KwABdCwAAXQtAAF0LwABdDEAAXQyAAF0MwABdDUAAXQ2AAF0sQABdLMAAXS2AAF0uAABdLsAAXS8AAF0vQABdL4AAXS/AAF0wQABdMMAAXTEAAF0xQABdMcAAXTIAAF04QABdOIAAXTjAAF05QABdWAAAXViAAF1ZAABdWYAAXVpAAF1agABdWsAAXVsAAF1bQABdW8AAXVxAAF1cgABdXMAAXV1AAF1dgABdfEAAXXzAAF19QABdfcAAXX6AAF1+wABdfwAAXX9AAF1/gABdgAAAXYCAAF2AwABdgQAAXYGAAF2BwABdiAAAXY5AAF2PAABdj8AAXZCAAF2RQABdkgAAXZLAAF2ZAABdmcAAXZqAAF2bQABdnAAAXZzAAF2dgABdngAAXaNAAF2sAABdsYAAXbZAAF25QABdvsAAXeOAAF3sQABd9EAAXfxAAF38wABd/UAAXf3AAF3+QABd/wAAXf9AAF3/gABeAEAAXgCAAF4BAABeAUAAXgHAAF4CgABeAsAAXgMAAF4DwABeBAAAXgZAAF4MgABeDsAAXg9AAF4PwABeEgAAXhLAAF4TgABeFAAAXiZAAF4vQABeOQAAXkIAAF5CwABeQ0AAXkPAAF5EQABeRMAAXkVAAF5FgABeRkAAXkyAAF5UwABeVUAAXlXAAF5WQABeVsAAXldAAF5XwABeWEAAXljAAF5hAABeYcAAXmKAAF5jQABeZAAAXmTAAF5lgABeZkAAXmcAAF5ngABehkAAXobAAF6HQABeh8AAXoiAAF6IwABeiQAAXolAAF6JgABeigAAXoqAAF6KwABeiwAAXouAAF6LwABeqoAAXqsAAF6rgABerAAAXqzAAF6tAABerUAAXq2AAF6twABerkAAXq7AAF6vAABer0AAXq/AAF6wAABezsAAXs9AAF7QAABe0IAAXtFAAF7RgABe0cAAXtIAAF7SQABe0sAAXtNAAF7TgABe08AAXtRAAF7UgABe2sAAXtsAAF7bQABe28AAXvqAAF77AABe+4AAXvwAAF78wABe/QAAXv1AAF79gABe/cAAXv5AAF7+wABe/wAAXv9AAF7/wABfAAAAXx7AAF8fQABfH8AAXyBAAF8hAABfIUAAXyGAAF8hwABfIgAAXyKAAF8jAABfI0AAXyOAAF8kAABfJEAAX0MAAF9DgABfRAAAX0SAAF9FQABfRYAAX0XAAF9GAABfRkAAX0bAAF9HQABfR4AAX0fAAF9IQABfSIAAX2dAAF9nwABfaEAAX2jAAF9pgABfacAAX2oAAF9qQABfaoAAX2sAAF9rgABfa8AAX2wAAF9sgABfbMAAX4uAAF+MAABfjIAAX40AAF+NwABfjgAAX45AAF+OgABfjsAAX49AAF+PwABfkAAAX5BAAF+QwABfkQAAX6NAAF+sQABftgAAX78AAF+/wABfwEAAX8DAAF/BQABfwcAAX8JAAF/CgABfw0AAX8mAAF/QwABf0UAAX9HAAF/SQABf0sAAX9NAAF/TwABf1EAAX9uAAF/cQABf3QAAX93AAF/egABf30AAX+AAAF/gwABf4UAAYAAAAGAAgABgAQAAYAGAAGACQABgAoAAYALAAGADAABgA0AAYAPAAGAEQABgBIAAYATAAGAFQABgBYAAYCRAAGAkwABgJUAAYCXAAGAmgABgJsAAYCcAAGAnQABgJ4AAYCgAAGAogABgKMAAYCkAAGApgABgKcAAYEiAAGBJAABgSYAAYEoAAGBKwABgSwAAYEtAAGBLgABgS8AAYExAAGBMwABgTQAAYE1AAGBNwABgTgAAYGzAAGBtQABgbcAAYG5AAGBvAABgb0AAYG+AAGBvwABgcAAAYHCAAGBxAABgcUAAYHGAAGByAABgckAAYJEAAGCRgABgkgAAYJKAAGCTQABgk4AAYJPAAGCUAABglEAAYJTAAGCVQABglYAAYJXAAGCWQABgloAAYLVAAGC1wABgtkAAYLbAAGC3gABgt8AAYLgAAGC4QABguIAAYLkAAGC5gABgucAAYLoAAGC6gABgusAAYNmAAGDaAABg2oAAYNsAAGDbwABg3AAAYNxAAGDcgABg3MAAYN1AAGDdwABg3gAAYN5AAGDewABg3wAAYQPAAGEMgABhFIAAYRyAAGEdAABhHYAAYR4AAGEegABhH0AAYR+AAGEfwABhIIAAYSDAAGEhQABhIYAAYSIAAGEiwABhIwAAYSNAAGEkAABhJEAAYSaAAGEswABhLwAAYS+AAGEwAABhMkAAYTMAAGEzwABhNEAAYUaAAGFPgABhWUAAYWJAAGFjAABhY4AAYWQAAGFkgABhZQAAYWWAAGFlwABhZoAAYWzAAGF1AABhdYAAYXYAAGF2gABhdwAAYXeAAGF4AABheIAAYXkAAGGBQABhggAAYYLAAGGDgABhhEAAYYUAAGGFwABhhoAAYYdAAGGHwABhpoAAYacAAGGngABhqAAAYajAAGGpAABhqUAAYamAAGGpwABhqkAAYarAAGGrAABhq0AAYavAAGGsAABhysAAYctAAGHLwABhzEAAYc0AAGHNQABhzYAAYc3AAGHOAABhzoAAYc8AAGHPQABhz4AAYdAAAGHQQABh7wAAYe+AAGHwQABh8MAAYfGAAGHxwABh8gAAYfJAAGHygABh8wAAYfOAAGHzwABh9AAAYfSAAGH0wABh+wAAYftAAGH7gABh/AAAYhrAAGIbQABiG8AAYhxAAGIdAABiHUAAYh2AAGIdwABiHgAAYh6AAGIfAABiH0AAYh+AAGIgAABiIEAAYj8AAGI/gABiQAAAYkCAAGJBQABiQYAAYkHAAGJCAABiQkAAYkLAAGJDQABiQ4AAYkPAAGJEQABiRIAAYmNAAGJjwABiZEAAYmTAAGJlgABiZcAAYmYAAGJmQABiZoAAYmcAAGJngABiZ8AAYmgAAGJogABiaMAAYoeAAGKIAABiiIAAYokAAGKJwABiigAAYopAAGKKgABiisAAYotAAGKLwABijAAAYoxAAGKMwABijQAAYqvAAGKsQABirMAAYq1AAGKuAABirkAAYq6AAGKuwABirwAAYq+AAGKwAABisEAAYrCAAGKxAABisUAAYsOAAGLMgABi1kAAYt9AAGLgAABi4IAAYuEAAGLhgABi4gAAYuKAAGLiwABi44AAYunAAGLxAABi8YAAYvIAAGLygABi8wAAYvOAAGL0AABi9IAAYvvAAGL8gABi/UAAYv4AAGL+wABi/4AAYwBAAGMBAABjAYAAYyBAAGMgwABjIUAAYyHAAGMigABjIsAAYyMAAGMjQABjI4AAYyQAAGMkgABjJMAAYyUAAGMlgABjJcAAY0SAAGNFAABjRYAAY0YAAGNGwABjRwAAY0dAAGNHgABjR8AAY0hAAGNIwABjSQAAY0lAAGNJwABjSgAAY2jAAGNpQABjacAAY2pAAGNrAABja0AAY2uAAGNrwABjbAAAY2yAAGNtAABjbUAAY22AAGNuAABjbkAAY40AAGONgABjjgAAY46AAGOPQABjj4AAY4/AAGOQAABjkEAAY5DAAGORQABjkYAAY5HAAGOSQABjkoAAY7FAAGOxwABjskAAY7LAAGOzgABjs8AAY7QAAGO0QABjtIAAY7UAAGO1gABjtcAAY7YAAGO2gABjtsAAY9WAAGPWAABj1sAAY9dAAGPYAABj2EAAY9iAAGPYwABj2QAAY9mAAGPaAABj2kAAY9qAAGPbAABj20AAY9/AAGP+gABj/wAAY/+AAGQAAABkAMAAZAEAAGQBQABkAYAAZAHAAGQCQABkAsAAZAMAAGQDQABkA8AAZAQAAGQowABkMYAAZDmAAGRBgABkQgAAZEKAAGRDAABkQ4AAZERAAGREgABkRMAAZEWAAGRFwABkRkAAZEaAAGRHAABkR8AAZEgAAGRIQABkSQAAZElAAGRLgABkUcAAZFQAAGRUgABkVQAAZFdAAGRYAABkWMAAZFlAAGRrgABkdIAAZH5AAGSHQABkiAAAZIiAAGSJAABkiYAAZIoAAGSKgABkisAAZIuAAGSRwABkmgAAZJqAAGSbAABkm4AAZJwAAGScgABknQAAZJ2AAGSeAABkpkAAZKcAAGSnwABkqIAAZKlAAGSqAABkqsAAZKuAAGSsQABkrMAAZMuAAGTMAABkzIAAZM0AAGTNwABkzgAAZM5AAGTOgABkzsAAZM9AAGTPwABk0AAAZNBAAGTQwABk0QAAZO/AAGTwQABk8MAAZPFAAGTyAABk8kAAZPKAAGTywABk8wAAZPOAAGT0AABk9EAAZPSAAGT1AABk9UAAZRQAAGUUgABlFUAAZRXAAGUWgABlFsAAZRcAAGUXQABlF4AAZRgAAGUYgABlGMAAZRkAAGUZgABlGcAAZSAAAGUgQABlIIAAZSEAAGU/wABlQEAAZUDAAGVBQABlQgAAZUJAAGVCgABlQsAAZUMAAGVDgABlRAAAZURAAGVEgABlRQAAZUVAAGVkAABlZIAAZWUAAGVlgABlZkAAZWaAAGVmwABlZwAAZWdAAGVnwABlaEAAZWiAAGVowABlaUAAZWmAAGWIQABliMAAZYlAAGWJwABlioAAZYrAAGWLAABli0AAZYuAAGWMAABljIAAZYzAAGWNAABljYAAZY3AAGWsgABlrQAAZa2AAGWuAABlrsAAZa8AAGWvQABlr4AAZa/AAGWwQABlsMAAZbEAAGWxQABlscAAZbIAAGXQwABl0UAAZdHAAGXSQABl0wAAZdNAAGXTgABl08AAZdQAAGXUgABl1QAAZdVAAGXVgABl1gAAZdZAAGXogABl8YAAZftAAGYEQABmBQAAZgWAAGYGAABmBoAAZgcAAGYHgABmB8AAZgiAAGYOwABmFgAAZhaAAGYXAABmF4AAZhgAAGYYgABmGQAAZhmAAGYgwABmIYAAZiJAAGYjAABmI8AAZiSAAGYlQABmJgAAZiaAAGZFQABmRcAAZkZAAGZGwABmR4AAZkfAAGZIAABmSEAAZkiAAGZJAABmSYAAZknAAGZKAABmSoAAZkrAAGZpgABmagAAZmqAAGZrAABma8AAZmwAAGZsQABmbIAAZmzAAGZtQABmbcAAZm4AAGZuQABmbsAAZm8AAGaNwABmjkAAZo7AAGaPQABmkAAAZpBAAGaQgABmkMAAZpEAAGaRgABmkgAAZpJAAGaSgABmkwAAZpNAAGayAABmsoAAZrMAAGazgABmtEAAZrSAAGa0wABmtQAAZrVAAGa1wABmtkAAZraAAGa2wABmt0AAZreAAGbWQABm1sAAZtdAAGbXwABm2IAAZtjAAGbZAABm2UAAZtmAAGbaAABm2oAAZtrAAGbbAABm24AAZtvAAGb6gABm+wAAZvuAAGb8AABm/MAAZv0AAGb9QABm/YAAZv3AAGb+QABm/sAAZv8AAGb/QABm/8AAZwAAAGcewABnH0AAZx/AAGcgQABnIQAAZyFAAGchgABnIcAAZyIAAGcigABnIwAAZyNAAGcjgABnJAAAZyRAAGdJAABnUcAAZ1nAAGdhwABnYkAAZ2LAAGdjQABnY8AAZ2SAAGdkwABnZQAAZ2XAAGdmAABnZoAAZ2bAAGdngABnaEAAZ2iAAGdowABnaYAAZ2nAAGdrAABncUAAZ3OAAGd0AABndMAAZ3cAAGd3wABneIAAZ3kAAGeLQABnlEAAZ54AAGenAABnp8AAZ6hAAGeowABnqUAAZ6nAAGeqQABnqoAAZ6tAAGexgABnucAAZ7pAAGe6wABnu0AAZ7vAAGe8QABnvMAAZ71AAGe9wABnxgAAZ8bAAGfHgABnyEAAZ8kAAGfJwABnyoAAZ8tAAGfMAABnzIAAZ+tAAGfrwABn7EAAZ+zAAGftgABn7cAAZ+4AAGfuQABn7oAAZ+8AAGfvgABn78AAZ/AAAGfwgABn8MAAaA+AAGgQAABoEIAAaBEAAGgRwABoEgAAaBJAAGgSgABoEsAAaBNAAGgTwABoFAAAaBRAAGgUwABoFQAAaDPAAGg0QABoNQAAaDWAAGg2QABoNoAAaDbAAGg3AABoN0AAaDfAAGg4QABoOIAAaDjAAGg5QABoOYAAaD/AAGhAAABoQEAAaEDAAGhfgABoYAAAaGCAAGhhAABoYcAAaGIAAGhiQABoYoAAaGLAAGhjQABoY8AAaGQAAGhkQABoZMAAaGUAAGiDwABohEAAaITAAGiFQABohgAAaIZAAGiGgABohsAAaIcAAGiHgABoiAAAaIhAAGiIgABoiQAAaIlAAGioAABoqIAAaKkAAGipgABoqkAAaKqAAGiqwABoqwAAaKtAAGirwABorEAAaKyAAGiswABorUAAaK2AAGjMQABozMAAaM1AAGjNwABozoAAaM7AAGjPAABoz0AAaM+AAGjQAABo0IAAaNDAAGjRAABo0YAAaNHAAGjwgABo8QAAaPGAAGjyAABo8sAAaPMAAGjzQABo84AAaPPAAGj0QABo9MAAaPUAAGj1QABo9cAAaPYAAGkIQABpEUAAaRsAAGkkAABpJMAAaSWAAGkmAABpJoAAaScAAGkngABpJ8AAaSiAAGkuwABpNgAAaTbAAGk3gABpOEAAaTkAAGk5wABpOoAAaTtAAGlCgABpQ0AAaUQAAGlEwABpRYAAaUZAAGlHAABpR8AAaUhAAGlnAABpZ4AAaWhAAGlowABpaYAAaWnAAGlqAABpakAAaWqAAGlrAABpa8AAaWwAAGlsQABpbMAAaW0AAGmLwABpjEAAaY0AAGmNgABpjkAAaY6AAGmOwABpjwAAaY9AAGmPwABpkIAAaZDAAGmRAABpkYAAaZHAAGmSQABpsQAAabGAAGmyQABpssAAabOAAGmzwABptAAAabRAAGm0gABptQAAabXAAGm2AABptkAAabbAAGm3AABp1cAAadZAAGnWwABp10AAadgAAGnYQABp2IAAadjAAGnZAABp2YAAadpAAGnagABp2sAAadtAAGnbgABp+kAAafrAAGn7QABp+8AAafyAAGn8wABp/QAAaf1AAGn9gABp/gAAaf7AAGn/AABp/0AAaf/AAGoAAABqHsAAah9AAGofwABqIEAAaiEAAGohQABqIYAAaiHAAGoiAABqIoAAaiNAAGojgABqI8AAaiRAAGokgABqQ0AAakPAAGpEgABqRQAAakXAAGpGAABqRkAAakaAAGpGwABqR0AAakgAAGpIQABqSIAAakkAAGpJQABqTYAAalJAAGpYgABqXUAAamCAAGplQABqawAAam+AAGqUQABqnQAAaqUAAGqtAABqrYAAaq4AAGqugABqrwAAaq/AAGqwAABqsEAAarEAAGqxQABqscAAarIAAGqywABqs4AAarPAAGq0AABqtMAAarUAAGq2QABqvIAAar7AAGq/QABqwAAAasJAAGrDAABqw8AAasRAAGrWgABq34AAaulAAGryQABq8wAAavOAAGr0AABq9IAAavUAAGr1gABq9cAAavaAAGr8wABrBQAAawWAAGsGAABrBoAAawcAAGsHgABrCAAAawiAAGsJAABrEUAAaxIAAGsSwABrE4AAaxRAAGsVAABrFcAAaxaAAGsXQABrF8AAazaAAGs3AABrN4AAazgAAGs4wABrOQAAazlAAGs5gABrOcAAazpAAGs6wABrOwAAaztAAGs7wABrPAAAa1rAAGtbQABrW8AAa1xAAGtdAABrXUAAa12AAGtdwABrXgAAa16AAGtfAABrX0AAa1+AAGtgAABrYEAAa38AAGt/gABrgEAAa4DAAGuBgABrgcAAa4IAAGuCQABrgoAAa4MAAGuDgABrg8AAa4QAAGuEgABrhMAAa4sAAGuLQABri4AAa4wAAGuqwABrq0AAa6vAAGusQABrrQAAa61AAGutgABrrcAAa64AAGuugABrrwAAa69AAGuvgABrsAAAa7BAAGvPAABrz4AAa9AAAGvQgABr0UAAa9GAAGvRwABr0gAAa9JAAGvSwABr00AAa9OAAGvTwABr1EAAa9SAAGvzQABr88AAa/RAAGv0wABr9YAAa/XAAGv2AABr9kAAa/aAAGv3AABr94AAa/fAAGv4AABr+IAAa/jAAGwXgABsGAAAbBiAAGwZAABsGcAAbBoAAGwaQABsGoAAbBrAAGwbQABsG8AAbBwAAGwcQABsHMAAbB0AAGw7wABsPEAAbDzAAGw9QABsPgAAbD5AAGw+gABsPsAAbD8AAGw/gABsQAAAbEBAAGxAgABsQQAAbEFAAGxTgABsXIAAbGZAAGxvQABscAAAbHDAAGxxQABsccAAbHJAAGxywABscwAAbHPAAGx6AABsgUAAbIIAAGyCwABsg4AAbIRAAGyFAABshcAAbIaAAGyNwABsjoAAbI9AAGyQAABskMAAbJGAAGySQABskwAAbJOAAGyyQABsssAAbLOAAGy0AABstMAAbLUAAGy1QABstYAAbLXAAGy2QABstwAAbLdAAGy3gABsuAAAbLhAAGzXAABs14AAbNhAAGzYwABs2YAAbNnAAGzaAABs2kAAbNqAAGzbAABs28AAbNwAAGzcQABs3MAAbN0AAGz7wABs/EAAbP0AAGz9gABs/kAAbP6AAGz+wABs/wAAbP9AAGz/wABtAIAAbQDAAG0BAABtAYAAbQHAAG0ggABtIQAAbSHAAG0iQABtIwAAbSNAAG0jgABtI8AAbSQAAG0kgABtJUAAbSWAAG0lwABtJkAAbSaAAG1HQABtUEAAbVlAAG1iAABta8AAbXPAAG19gABth0AAbY9AAG2YQABtoUAAbaHAAG2igABtowAAbaOAAG2kAABtpMAAbaWAAG2mAABtpoAAbadAAG2nwABtqEAAbakAAG2pwABtqgAAbatAAG2xgABtssAAbbNAAG20gABttUAAbbXAAG3IAABt0QAAbdrAAG3jwABt5IAAbeUAAG3lgABt5gAAbeaAAG3nAABt50AAbegAAG3uQABt94AAbfgAAG34gABt+QAAbfmAAG36AABt+oAAbfsAAG37gABt/AAAbgVAAG4GAABuBsAAbgeAAG4IQABuCQAAbgnAAG4KgABuC0AAbgwAAG4MgABuK0AAbivAAG4sgABuLQAAbi3AAG4uAABuLkAAbi6AAG4uwABuL0AAbi/AAG4wAABuMEAAbjDAAG4xAABuNUAAbjWAAG42AABuVMAAblVAAG5VwABuVkAAblcAAG5XQABuV4AAblfAAG5YAABuWIAAblkAAG5ZQABuWYAAbloAAG5aQABueQAAbnmAAG56QABuesAAbnuAAG57wABufAAAbnxAAG58gABufQAAbn2AAG59wABufgAAbn6AAG5+wABugwAAboNAAG6DwABuooAAbqMAAG6jgABupAAAbqTAAG6lAABupUAAbqWAAG6lwABupkAAbqbAAG6nAABup0AAbqfAAG6oAABuxsAAbsdAAG7IAABuyIAAbslAAG7JgABuycAAbsoAAG7KQABuysAAbstAAG7LgABuy8AAbsxAAG7MgABu0MAAbtEAAG7RgABu8EAAbvDAAG7xQABu8cAAbvKAAG7ywABu8wAAbvNAAG7zgABu9AAAbvSAAG70wABu9QAAbvWAAG71wABvFIAAbxUAAG8VwABvFkAAbxcAAG8XQABvF4AAbxfAAG8YAABvGIAAbxkAAG8ZQABvGYAAbxoAAG8aQABvIIAAbyDAAG8hAABvIYAAb0BAAG9AwABvQUAAb0HAAG9CgABvQsAAb0MAAG9DQABvQ4AAb0QAAG9EgABvRMAAb0UAAG9FgABvRcAAb2SAAG9lAABvZcAAb2ZAAG9nAABvZ0AAb2eAAG9nwABvaAAAb2iAAG9pAABvaUAAb2mAAG9qAABvakAAb21AAG9zgABveMAAb3mAAG96QABvewAAb3vAAG98gABvgcAAb4KAAG+DQABvhAAAb4TAAG+FgABvhgAAb4uAAG+OQABvkUAAb5bAAG+ZQABvvgAAb8bAAG/OwABv1sAAb9dAAG/XwABv2EAAb9jAAG/ZgABv2cAAb9oAAG/awABv2wAAb9uAAG/bwABv3EAAb90AAG/dQABv3YAAb95AAG/egABv4MAAb+cAAG/pQABv6cAAb+pAAG/sgABv7UAAb+4AAG/ugABwAMAAcAnAAHATgABwHIAAcB1AAHAdwABwHkAAcB7AAHAfQABwH8AAcCAAAHAgwABwJwAAcC9AAHAvwABwMEAAcDDAAHAxQABwMcAAcDJAAHAywABwM0AAcDuAAHA8QABwPQAAcD3AAHA+gABwP0AAcEAAAHBAwABwQYAAcEIAAHBgwABwYUAAcGHAAHBiQABwYwAAcGNAAHBjgABwY8AAcGQAAHBkgABwZQAAcGVAAHBlgABwZgAAcGZAAHCFAABwhYAAcIYAAHCGgABwh0AAcIeAAHCHwABwiAAAcIhAAHCIwABwiUAAcImAAHCJwABwikAAcIqAAHCpQABwqcAAcKqAAHCrAABwq8AAcKwAAHCsQABwrIAAcKzAAHCtQABwrcAAcK4AAHCuQABwrsAAcK8AAHC1QABwtYAAcLXAAHC2QABw1QAAcNWAAHDWAABw1oAAcNdAAHDXgABw18AAcNgAAHDYQABw2MAAcNlAAHDZgABw2cAAcNpAAHDagABw+UAAcPnAAHD6QABw+sAAcPuAAHD7wABw/AAAcPxAAHD8gABw/QAAcP2AAHD9wABw/gAAcP6AAHD+wABxHYAAcR4AAHEegABxHwAAcR/AAHEgAABxIEAAcSCAAHEgwABxIUAAcSHAAHEiAABxIkAAcSLAAHEjAABxQcAAcUJAAHFCwABxQ0AAcUQAAHFEQABxRIAAcUTAAHFFAABxRYAAcUYAAHFGQABxRoAAcUcAAHFHQABxZgAAcWaAAHFnAABxZ4AAcWhAAHFogABxaMAAcWkAAHFpQABxacAAcWpAAHFqgABxasAAcWtAAHFrgABxfcAAcYbAAHGQgABxmYAAcZpAAHGawABxm0AAcZvAAHGcQABxnMAAcZ0AAHGdwABxpAAAcatAAHGrwABxrEAAcazAAHGtQABxrcAAca5AAHGuwABxtgAAcbbAAHG3gABxuEAAcbkAAHG5wABxuoAAcbtAAHG7wABx2oAAcdsAAHHbgABx3AAAcdzAAHHdAABx3UAAcd2AAHHdwABx3kAAcd7AAHHfAABx30AAcd/AAHHgAABx/sAAcf9AAHH/wAByAEAAcgEAAHIBQAByAYAAcgHAAHICAAByAoAAcgMAAHIDQAByA4AAcgQAAHIEQAByIwAAciOAAHIkAAByJIAAciVAAHIlgAByJcAAciYAAHImQAByJsAAcidAAHIngAByJ8AAcihAAHIogAByR0AAckfAAHJIgABySQAAcknAAHJKAABySkAAckqAAHJKwAByS0AAckvAAHJMAAByTEAAckzAAHJNAABya8AAcmxAAHJswABybUAAcm4AAHJuQAByboAAcm7AAHJvAAByb4AAcnAAAHJwQABycIAAcnEAAHJxQABykAAAcpCAAHKRAABykYAAcpJAAHKSgAByksAAcpMAAHKTQAByk8AAcpRAAHKUgABylMAAcpVAAHKVgABytEAAcrTAAHK1QABytcAAcraAAHK2wABytwAAcrdAAHK3gAByuAAAcriAAHK4wAByuQAAcrmAAHK5wABy3oAAcudAAHLvQABy90AAcvfAAHL4QABy+MAAcvlAAHL6AABy+kAAcvqAAHL7QABy+4AAcvwAAHL8QABy/MAAcv2AAHL9wABy/gAAcv7AAHL/AABzAEAAcwaAAHMIwABzCUAAcwnAAHMMAABzDMAAcw2AAHMOAABzIEAAcylAAHMzAABzPAAAczzAAHM9QABzPcAAcz5AAHM+wABzP0AAcz+AAHNAQABzRoAAc07AAHNPQABzT8AAc1BAAHNQwABzUUAAc1HAAHNSQABzUsAAc1sAAHNbwABzXIAAc11AAHNeAABzXsAAc1+AAHNgQABzYQAAc2GAAHOAQABzgMAAc4FAAHOBwABzgoAAc4LAAHODAABzg0AAc4OAAHOEAABzhIAAc4TAAHOFAABzhYAAc4XAAHOkgABzpQAAc6WAAHOmAABzpsAAc6cAAHOnQABzp4AAc6fAAHOoQABzqMAAc6kAAHOpQABzqcAAc6oAAHPIwABzyUAAc8oAAHPKgABzy0AAc8uAAHPLwABzzAAAc8xAAHPMwABzzUAAc82AAHPNwABzzkAAc86AAHPUwABz1QAAc9VAAHPVwABz9IAAc/UAAHP1gABz9gAAc/bAAHP3AABz90AAc/eAAHP3wABz+EAAc/jAAHP5AABz+UAAc/nAAH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E9wACBPgAAgT5AAIE+wACBP0AAgT+AAIE/wACBQEAAgUCAAIFfQACBX8AAgWBAAIFgwACBYYAAgWHAAIFiAACBYkAAgWKAAIFjAACBY4AAgWPAAIFkAACBZIAAgWTAAIGDgACBhAAAgYSAAIGFAACBhcAAgYYAAIGGQACBhoAAgYbAAIGHQACBh8AAgYgAAIGIQACBiMAAgYkAAIGnwACBqEAAgajAAIGpQACBqgAAgapAAIGqgACBqsAAgasAAIGrgACBrAAAgaxAAIGsgACBrQAAga1AAIG/gACByIAAgdJAAIHbQACB3AAAgdyAAIHdAACB3YAAgd4AAIHegACB3sAAgd+AAIHlwACB7QAAge2AAIHuAACB7oAAge8AAIHvgACB8AAAgfCAAIH3wACB+IAAgflAAIH6AACB+sAAgfuAAIH8QACB/QAAgf2AAIIcQACCHMAAgh1AAIIdwACCHoAAgh7AAIIfAACCH0AAgh+AAIIgAACCIIAAgiDAAIIhAACCIYAAgiHAAIJAgACCQQAAgkGAAIJCAACCQsAAgkMAAIJDQACCQ4AAgkPAAIJEQACCRMAAgkUAAIJFQACCRcAAgkYAAIJkwACCZUAAgmXAAIJmQACCZwAAgmdAAIJngACCZ8AAgmgAAIJogACCaQAAgmlAAIJpgACCagAAgmpAAIKJAACCiYAAgooAAIKKgACCi0AAgouAAIKLwACCjAAAgoxAAIKMwACCjUAAgo2AAIKNwACCjkAAgo6AAIKtQACCrcAAgq5AAIKuwACCr4AAgq/AAIKwAACCsEAAgrCAAIKxAACCsYAAgrHAAIKyAACCsoAAgrLAAILRgACC0gAAgtKAAILTAACC08AAgtQAAILUQACC1IAAgtTAAILVQACC1cAAgtYAAILWQACC1sAAgtcAAIL1wACC9kAAgvbAAIL3QACC+AAAgvhAAIL4gACC+MAAgvkAAIL5gACC+gAAgvpAAIL6gACC+wAAgvtAAIL/gACC/8AAgwBAAIMfAACDH4AAgyAAAIMggACDIUAAgyGAAIMhwACDIgAAgyJAAIMiwACDI4AAgyPAAIMkAACDJIAAgyTAAINDgACDRAAAg0SAAINFAACDRcAAg0YAAINGQACDRoAAg0bAAINHQACDSAAAg0hAAINIgACDSQAAg0lAAINoAACDaIAAg2lAAINpwACDaoAAg2rAAINrAACDa0AAg2uAAINsAACDbMAAg20AAINtQACDbcAAg24AAINyQACDcoAAg3MAAIOTwACDnMAAg6XAAIOugACDuEAAg8BAAIPKAACD08AAg9vAAIPkwACD7cAAg+5AAIPvAACD74AAg/AAAIPwgACD8UAAg/IAAIPygACD8wAAg/PAAIP0QACD9MAAg/WAAIP2QACD9oAAg/jAAIP/AACEAEAAhADAAIQCAACEAsAAhANAAIQVgACEHoAAhChAAIQxQACEMgAAhDKAAIQzAACEM4AAhDQAAIQ0gACENMAAhDWAAIQ7wACERQAAhEWAAIRGAACERoAAhEcAAIRHgACESAAAhEiAAIRJAACESYAAhFLAAIRTgACEVEAAhFUAAIRVwACEVoAAhFdAAIRYAACEWMAAhFmAAIRaAACEeMAAhHlAAIR6AACEeoAAhHtAAIR7gACEe8AAhHwAAIR8QACEfMAAhH1AAIR9gACEfcAAhH5AAIR+gACEgsAAhIMAAISDgACEokAAhKLAAISjQACEo8AAhKSAAISkwACEpQAAhKVAAISlgACEpgAAhKaAAISmwACEpwAAhKeAAISnwACExoAAhMcAAITHwACEyEAAhMkAAITJQACEyYAAhMnAAITKAACEyoAAhMsAAITLQACEy4AAhMwAAITMQACE0IAAhNHAAITSgACE0wAAhNdAAITZgACE2kAAhNsAAITbgACE4oAAhOcAAIUFwACFBkAAhQbAAIUHQACFCAAAhQhAAIUIgACFCMAAhQkAAIUJgACFCgAAhQpAAIUKgACFCwAAhQtAAIUqAACFKoAAhStAAIUrwACFLIAAhSzAAIUtAACFLUAAhS2AAIUuAACFLoAAhS7AAIUvAACFL4AAhS/AAIU0AACFNEAAhTTAAIVTgACFVAAAhVSAAIVVAACFVcAAhVYAAIVWQACFVoAAhVbAAIVXQACFV8AAhVgAAIVYQACFWMAAhVkAAIV3wACFeEAAhXkAAIV5gACFekAAhXqAAIV6wACFewAAhXtAAIV7wACFfEAAhXyAAIV8wACFfUAAhX2AAIWDwACFhAAAhYRAAIWEwACFo4AAhaQAAIWkgACFpQAAhaXAAIWmAACFpkAAhaaAAIWmwACFp0AAhafAAIWoAACFqEAAhajAAIWpAACFx8AAhchAAIXJAACFyYAAhcpAAIXKgACFysAAhcsAAIXLQACFy8AAhcxAAIXMgACFzMAAhc1AAIXNgACF0MAAhdcAAIXlQACF5gAAhebAAIXngACF6EAAhekAAIXpwACF6oAAhetAAIXsAACF7MAAhe2AAIXuQACF7wAAhe/AAIX+AACF/sAAhf+AAIYAQACGAQAAhgHAAIYCgACGA0AAhgQAAIYEwACGBYAAhgZAAIYHAACGB8AAhgiAAIYJAACGEAAAhhOAAIYZwACGHYAAhiZAAIYrQACGMIAAhjNAAIY5gACGPkAAhkeAAIZPAACGU4AAhltAAIaAAACGiMAAhpDAAIaYwACGmUAAhpnAAIaaQACGmsAAhpuAAIabwACGnAAAhpzAAIadAACGnYAAhp3AAIaeQACGnwAAhp9AAIafgACGoEAAhqCAAIahwACGqAAAhqpAAIaqwACGq0AAhq2AAIauQACGrwAAhq+AAIbBwACGysAAhtSAAIbdgACG3kAAht7AAIbfQACG38AAhuBAAIbgwACG4QAAhuHAAIboAACG8EAAhvDAAIbxQACG8cAAhvJAAIbywACG80AAhvPAAIb0QACG/IAAhv1AAIb+AACG/sAAhv+AAIcAQACHAQAAhwHAAIcCgACHAwAAhyHAAIciQACHIsAAhyNAAIckAACHJEAAhySAAIckwACHJQAAhyWAAIcmAACHJkAAhyaAAIcnAACHJ0AAh0YAAIdGgACHRwAAh0eAAIdIQACHSIAAh0jAAIdJAACHSUAAh0nAAIdKQACHSoAAh0rAAIdLQACHS4AAh2pAAIdqwACHa4AAh2wAAIdswACHbQAAh21AAIdtgACHbcAAh25AAIduwACHbwAAh29AAIdvwACHcAAAh3ZAAId2gACHdsAAh3dAAIeWAACHloAAh5cAAIeXgACHmEAAh5iAAIeYwACHmQAAh5lAAIeZwACHmkAAh5qAAIeawACHm0AAh5uAAIe6QACHusAAh7tAAIe7wACHvIAAh7zAAIe9AACHvUAAh72AAIe+AACHvoAAh77AAIe/AACHv4AAh7/AAIfegACH3wAAh9+AAIfgAACH4MAAh+EAAIfhQACH4YAAh+HAAIfiQACH4sAAh+MAAIfjQACH48AAh+QAAIgCwACIA0AAiAPAAIgEQACIBQAAiAVAAIgFgACIBcAAiAYAAIgGgACIBwAAiAdAAIgHgACICAAAiAhAAIgnAACIJ4AAiCgAAIgogACIKUAAiCmAAIgpwACIKgAAiCpAAIgqwACIK0AAiCuAAIgrwACILEAAiCyAAIg+wACIR8AAiFGAAIhagACIW0AAiFvAAIhcQACIXMAAiF1AAIhdwACIXgAAiF7AAIhlAACIbEAAiGzAAIhtQACIbcAAiG5AAIhuwACIb0AAiG/AAIh3AACId8AAiHiAAIh5QACIegAAiHrAAIh7gACIfEAAiHzAAIibgACInAAAiJyAAIidAACIncAAiJ4AAIieQACInoAAiJ7AAIifQACIn8AAiKAAAIigQACIoMAAiKEAAIi/wACIwEAAiMDAAIjBQACIwgAAiMJAAIjCgACIwsAAiMMAAIjDgACIxAAAiMRAAIjEgACIxQAAiMVAAIjkAACI5IAAiOUAAIjlgACI5kAAiOaAAIjmwACI5wAAiOdAAIjnwACI6EAAiOiAAIjowACI6UAAiOmAAIkIQACJCMAAiQmAAIkKAACJCsAAiQsAAIkLQACJC4AAiQvAAIkMQACJDMAAiQ0AAIkNQACJDcAAiQ4AAIkswACJLUAAiS3AAIkuQACJLwAAiS9AAIkvgACJL8AAiTAAAIkwgACJMQAAiTFAAIkxgACJMgAAiTJAAIlRAACJUYAAiVJAAIlSwACJU4AAiVPAAIlUAACJVEAAiVSAAIlVAACJVYAAiVXAAIlWAACJVoAAiVbAAIlagACJeUAAiXnAAIl6QACJesAAiXuAAIl7wACJfAAAiXxAAIl8gACJfQAAiX2AAIl9wACJfgAAiX6AAIl+wACJo4AAiaxAAIm0QACJvEAAibzAAIm9QACJvcAAib5AAIm/AACJv0AAib+AAInAQACJwIAAicEAAInBQACJwgAAicLAAInDAACJw0AAicQAAInEQACJxYAAicvAAInOAACJzoAAic9AAInRgACJ0kAAidMAAInTgACJ5cAAie7AAIn4gACKAYAAigJAAIoCwACKA0AAigPAAIoEQACKBMAAigUAAIoFwACKDAAAihRAAIoUwACKFUAAihXAAIoWQACKFsAAihdAAIoXwACKGEAAiiCAAIohQACKIgAAiiLAAIojgACKJEAAiiUAAIolwACKJoAAiicAAIpFwACKRkAAikbAAIpHQACKSAAAikhAAIpIgACKSMAAikkAAIpJgACKSgAAikpAAIpKgACKSwAAiktAAIpqAACKaoAAimsAAIprgACKbEAAimyAAIpswACKbQAAim1AAIptwACKbkAAim6AAIpuwACKb0AAim+AAIqOQACKjsAAio+AAIqQAACKkMAAipEAAIqRQACKkYAAipHAAIqSQACKksAAipMAAIqTQACKk8AAipQAAIqaQACKmoAAiprAAIqbQACKugAAirqAAIq7AACKu4AAirxAAIq8gACKvMAAir0AAIq9QACKvcAAir5AAIq+gACKvsAAir9AAIq/gACK3kAAit7AAIrfQACK38AAiuCAAIrgwACK4QAAiuFAAIrhgACK4gAAiuKAAIriwACK4wAAiuOAAIrjwACLAoAAiwMAAIsDgACLBAAAiwTAAIsFAACLBUAAiwWAAIsFwACLBkAAiwbAAIsHAACLB0AAiwfAAIsIAACLJsAAiydAAIsnwACLKEAAiykAAIspQACLKYAAiynAAIsqAACLKoAAiysAAIsrQACLK4AAiywAAIssQACLSwAAi0uAAItMAACLTIAAi01AAItNgACLTcAAi04AAItOQACLTsAAi09AAItPgACLT8AAi1BAAItQgACLYsAAi2vAAIt1gACLfoAAi39AAIuAAACLgIAAi4EAAIuBgACLggAAi4JAAIuDAACLiUAAi5CAAIuRQACLkgAAi5LAAIuTgACLlEAAi5UAAIuVwACLnQAAi53AAIuegACLn0AAi6AAAIugwACLoYAAi6JAAIuiwACLwYAAi8IAAIvCwACLw0AAi8QAAIvEQACLxIAAi8TAAIvFAACLxYAAi8ZAAIvGgACLxsAAi8dAAIvHgACL5kAAi+bAAIvngACL6AAAi+jAAIvpAACL6UAAi+mAAIvpwACL6kAAi+sAAIvrQACL64AAi+wAAIvsQACMCwAAjAuAAIwMQACMDMAAjA2AAIwNwACMDgAAjA5AAIwOgACMDwAAjA/AAIwQAACMEEAAjBDAAIwRAACML8AAjDBAAIwxAACMMYAAjDJAAIwygACMMsAAjDMAAIwzQACMM8AAjDSAAIw0wACMNQAAjDWAAIw1wACMVoAAjF+AAIxogACMcUAAjHsAAIyDAACMjMAAjJaAAIyegACMp4AAjLCAAIyxAACMscAAjLJAAIyywACMs0AAjLQAAI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EMAACRDIAAkQ0AAJEUQACRFQAAkRXAAJEWgACRF0AAkRgAAJEYwACRGYAAkRoAAJE4wACROUAAkTnAAJE6QACROwAAkTtAAJE7gACRO8AAkTwAAJE8gACRPQAAkT1AAJE9gACRPgAAkT5AAJFdAACRXYAAkV4AAJFegACRX0AAkV+AAJFfwACRYAAAkWBAAJFgwACRYUAAkWGAAJFhwACRYkAAkWKAAJGBQACRgcAAkYJAAJGCwACRg4AAkYPAAJGEAACRhEAAkYSAAJGFAACRhYAAkYXAAJGGAACRhoAAkYbAAJGlgACRpgAAkabAAJGnQACRqAAAkahAAJGogACRqMAAkakAAJGpgACRqgAAkapAAJGqgACRqwAAkatAAJHKAACRyoAAkcsAAJHLgACRzEAAkcyAAJHMwACRzQAAkc1AAJHNwACRzkAAkc6AAJHOwACRz0AAkc+AAJHuQACR7sAAke9AAJHvwACR8IAAkfDAAJHxAACR8UAAkfGAAJHyAACR8oAAkfLAAJHzAACR84AAkfPAAJISgACSEwAAkhOAAJIUAACSFMAAkhUAAJIVQACSFYAAkhXAAJIWQACSFsAAkhcAAJIXQACSF8AAkhgAAJI8wACSRYAAkk2AAJJVgACSVgAAklaAAJJXAACSV4AAklhAAJJYgACSWMAAklmAAJJZwACSWkAAklqAAJJbAACSW8AAklwAAJJcQACSXQAAkl1AAJJegACSZMAAkmcAAJJngACSaAAAkmpAAJJrAACSa8AAkmxAAJJ+gACSh4AAkpFAAJKaQACSmwAAkpuAAJKcAACSnIAAkp0AAJKdgACSncAAkp6AAJKkwACSrQAAkq2AAJKuAACSroAAkq8AAJKvgACSsAAAkrCAAJKxAACSuUAAkroAAJK6wACSu4AAkrxAAJK9AACSvcAAkr6AAJK/QACSv8AAkt6AAJLfAACS34AAkuAAAJLgwACS4QAAkuFAAJLhgACS4cAAkuJAAJLiwACS4wAAkuNAAJLjwACS5AAAkwLAAJMDQACTA8AAkwRAAJMFAACTBUAAkwWAAJMFwACTBgAAkwaAAJMHAACTB0AAkweAAJMIAACTCEAAkycAAJMngACTKEAAkyjAAJMpgACTKcAAkyoAAJMqQACTKoAAkysAAJMrgACTK8AAkywAAJMsgACTLMAAkzMAAJMzQACTM4AAkzQAAJNSwACTU0AAk1PAAJNUQACTVQAAk1VAAJNVgACTVcAAk1YAAJNWgACTVwAAk1dAAJNXgACTWAAAk1hAAJN3AACTd4AAk3gAAJN4gACTeUAAk3mAAJN5wACTegAAk3pAAJN6wACTe0AAk3uAAJN7wACTfEAAk3yAAJObQACTm8AAk5xAAJOcwACTnYAAk53AAJOeAACTnkAAk56AAJOfAACTn4AAk5/AAJOgAACToIAAk6DAAJO/gACTwAAAk8CAAJPBAACTwcAAk8IAAJPCQACTwoAAk8LAAJPDQACTw8AAk8QAAJPEQACTxMAAk8UAAJPjwACT5EAAk+TAAJPlQACT5gAAk+ZAAJPmgACT5sAAk+cAAJPngACT6AAAk+hAAJPogACT6QAAk+lAAJP7gACUBIAAlA5AAJQXQACUGAAAlBiAAJQZAACUGYAAlBoAAJQagACUGsAAlBuAAJQhwACUKQAAlCmAAJQqAACUKoAAlCsAAJQrgACULAAAlCyAAJQzwACUNIAAlDVAAJQ2AACUNsAAlDeAAJQ4QACUOQAAlDmAAJRYQACUWMAAlFlAAJRZwACUWoAAlFrAAJRbAACUW0AAlFuAAJRcAACUXIAAlFzAAJRdAACUXYAAlF3AAJR8gACUfQAAlH2AAJR+AACUfsAAlH8AAJR/QACUf4AAlH/AAJSAQACUgMAAlIEAAJSBQACUgcAAlIIAAJSgwACUoUAAlKHAAJSiQACUowAAlKNAAJSjgACUo8AAlKQAAJSkgACUpQAAlKVAAJSlgACUpgAAlKZAAJTFAACUxYAAlMZAAJTGwACUx4AAlMfAAJTIAACUyEAAlMiAAJTJAACUyYAAlMnAAJTKAACUyoAAlMrAAJTpgACU6gAAlOqAAJTrAACU68AAlOwAAJTsQACU7IAAlOzAAJTtQACU7cAAlO4AAJTuQACU7sAAlO8AAJUNwACVDkAAlQ7AAJUPQACVEAAAlRBAAJUQgACVEMAAlREAAJURgACVEgAAlRJAAJUSgACVEwAAlRNAAJUyAACVMoAAlTMAAJUzgACVNEAAlTSAAJU0wACVNQAAlTVAAJU1wACVNkAAlTaAAJU2wACVN0AAlTeAAJVcQACVZQAAlW0AAJV1AACVdYAAlXYAAJV2gACVdwAAlXfAAJV4AACVeEAAlXkAAJV5QACVecAAlXoAAJV6gACVe0AAlXuAAJV7wACVfIAAlXzAAJV+AACVhEAAlYaAAJWHAACVh4AAlYnAAJWKgACVi0AAlYvAAJWeAACVpwAAlbDAAJW5wACVuoAAlbsAAJW7gACVvAAAlbyAAJW9AACVvUAAlb4AAJXEQACVzIAAlc0AAJXNgACVzgAAlc6AAJXPAACVz4AAldAAAJXQgACV2MAAldmAAJXaQACV2wAAldvAAJXcgACV3UAAld4AAJXewACV30AAlf4AAJX+gACV/wAAlf+AAJYAQACWAIAAlgDAAJYBAACWAUAAlgHAAJYCQACWAoAAlgLAAJYDQACWA4AAliJAAJYiwACWI0AAliPAAJYkgACWJMAAliUAAJYlQACWJYAAliYAAJYmgACWJsAAlicAAJYngACWJ8AAlkaAAJZHAACWR8AAlkhAAJZJAACWSUAAlkmAAJZJwACWSgAAlkqAAJZLAACWS0AAlkuAAJZMAACWTEAAllKAAJZSwACWUwAAllOAAJZyQACWcsAAlnNAAJZzwACWdIAAlnTAAJZ1AACWdUAAlnWAAJZ2AACWdoAAlnbAAJZ3AACWd4AAlnfAAJaWgACWlwAAlpeAAJaYAACWmMAAlpkAAJaZQACWmYAAlpnAAJaaQACWmsAAlpsAAJabQACWm8AAlpwAAJa6wACWu0AAlrvAAJa8QACWvQAAlr1AAJa9gACWvcAAlr4AAJa+gACWvwAAlr9AAJa/gACWwAAAlsBAAJbfAACW34AAluAAAJbggACW4UAAluGAAJbhwACW4gAAluJAAJbiwACW40AAluOAAJbjwACW5EAAluSAAJcDQACXA8AAlwRAAJcEwACXBYAAlwXAAJcGAACXBkAAlwaAAJcHAACXB4AAlwfAAJcIAACXCIAAlwjAAJcbAACXJAAAly3AAJc2wACXN4AAlzgAAJc4gACXOQAAlzmAAJc6AACXOkAAlzsAAJdBQACXSIAAl0kAAJdJgACXSgAAl0qAAJdLAACXS4AAl0wAAJdTQACXVAAAl1TAAJdVgACXVkAAl1cAAJdXwACXWIAAl1kAAJd3wACXeEAAl3jAAJd5QACXegAAl3pAAJd6gACXesAAl3sAAJd7gACXfAAAl3xAAJd8gACXfQAAl31AAJecAACXnIAAl50AAJedgACXnkAAl56AAJeewACXnwAAl59AAJefwACXoEAAl6CAAJegwACXoUAAl6GAAJfAQACXwMAAl8FAAJfBwACXwoAAl8LAAJfDAACXw0AAl8OAAJfEAACXxIAAl8TAAJfFAACXxYAAl8XAAJfkgACX5QAAl+WAAJfmAACX5sAAl+cAAJfnQACX54AAl+fAAJfoQACX6MAAl+kAAJfpQACX6cAAl+oAAJgIwACYCUAAmAnAAJgKQACYCwAAmAtAAJgLgACYC8AAmAwAAJgMgACYDQAAmA1AAJgNgACYDgAAmA5AAJgtAACYLYAAmC4AAJgugACYL0AAmC+AAJgvwACYMAAAmDBAAJgwwACYMUAAmDGAAJgxwACYMkAAmDKAAJhRQACYUcAAmFJAAJhSwACYU4AAmFPAAJhUAACYVEAAmFSAAJhVAACYVYAAmFXAAJhWAACYVoAAmFbAAJh7gACYhEAAmIxAAJiUQACYlMAAmJVAAJiVwACYlkAAmJcAAJiXQACYl4AAmJhAAJiYgACYmQAAmJlAAJiaAACYmsAAmJsAAJibQACYnAAAmJxAAJidgACYo8AAmKYAAJimgACYp0AAmKmAAJiqQACYqwAAmKuAAJi9wACYxsAAmNCAAJjZgACY2kAAmNrAAJjbQACY28AAmNxAAJjcwACY3QAAmN3AAJjkAACY7EAAmOzAAJjtQACY7cAAmO5AAJjuwACY70AAmO/AAJjwQACY+IAAmPlAAJj6AACY+sAAmPuAAJj8QACY/QAAmP3AAJj+gACY/wAAmR3AAJkeQACZHsAAmR9AAJkgAACZIEAAmSCAAJkgwACZIQAAmSGAAJkiAACZIkAAmSKAAJkjAACZI0AAmUIAAJlCgACZQwAAmUOAAJlEQACZRIAAmUTAAJlFAACZRUAAmUXAAJlGQACZRoAAmUbAAJlHQACZR4AAmWZAAJlmwACZZ4AAmWgAAJlowACZaQAAmWlAAJlpgACZacAAmWpAAJlqwACZawAAmWtAAJlrwACZbAAAmXJAAJlygACZcsAAmXNAAJmSAACZkoAAmZMAAJmTgACZlEAAmZSAAJmUwACZlQAAmZVAAJmVwACZlkAAmZaAAJmWwACZl0AAmZeAAJm2QACZtsAAmbdAAJm3wACZuIAAmbjAAJm5AACZuUAAmbmAAJm6AACZuoAAmbrAAJm7AACZu4AAmbvAAJnagACZ2wAAmduAAJncAACZ3MAAmd0AAJndQACZ3YAAmd3AAJneQACZ3sAAmd8AAJnfQACZ38AAmeAAAJn+wACZ/0AAmf/AAJoAQACaAQAAmgFAAJoBgACaAcAAmgIAAJoCgACaAwAAmgNAAJoDgACaBAAAmgRAAJojAACaI4AAmiQAAJokgACaJUAAmiWAAJolwACaJgAAmiZAAJomwACaJ0AAmieAAJonwACaKEAAmiiAAJo6wACaQ8AAmk2AAJpWgACaV0AAmlgAAJpYgACaWQAAmlmAAJpaAACaWkAAmlsAAJphQACaaIAAmmlAAJpqAACaasAAmmuAAJpsQACabQAAmm3AAJp1AACadcAAmnaAAJp3QACaeAAAmnjAAJp5gACaekAAmnrAAJqZgACamgAAmprAAJqbQACanAAAmpxAAJqcgACanMAAmp0AAJqdgACankAAmp6AAJqewACan0AAmp+AAJq+QACavsAAmr+AAJrAAACawMAAmsEAAJrBQACawYAAmsHAAJrCQACawwAAmsNAAJrDgACaxAAAmsRAAJrjAACa44AAmuRAAJrkwACa5YAAmuXAAJrmAACa5kAAmuaAAJrnAACa58AAmugAAJroQACa6MAAmukAAJsHwACbCEAAmwkAAJsJgACbCkAAmwqAAJsKwACbCwAAmwtAAJsLwACbDIAAmwzAAJsNAACbDYAAmw3AAJsugACbN4AAm0CAAJtJQACbUwAAm1sAAJtkwACbboAAm3aAAJt/gACbiIAAm4kAAJuJwACbikAAm4rAAJuLQACbjAAAm4zAAJuNQACbjcAAm46AAJuPAACbj4AAm5BAAJuRAACbkUAAm5KAAJuYwACbmgAAm5qAAJubwACbnIAAm50AAJuvQACbuEAAm8IAAJvLAACby8AAm8xAAJvMwACbzUAAm83AAJvOQACbzoAAm89AAJvVgACb3sAAm99AAJvfwACb4EAAm+DAAJvhQACb4cAAm+JAAJviwACb40AAm+yAAJvtQACb7gAAm+7AAJvvgACb8EAAm/EAAJvxwACb8oAAm/NAAJvzwACcEoAAnBMAAJwTwACcFEAAnBUAAJwVQACcFYAAnBXAAJwWAACcFoAAnBcAAJwXQACcF4AAnBgAAJwYQACcHIAAnBzAAJwdQACcPAAAnDyAAJw9AACcPYAAnD5AAJw+gACcPsAAnD8AAJw/QACcP8AAnEBAAJxAgACcQMAAnEFAAJxBgACcYEAAnGDAAJxhgACcYgAAnGLAAJxjAACcY0AAnGOAAJxjwACcZEAAnGTAAJxlAACcZUAAnGXAAJxmAACcakAAnGuAAJxsQACcbMAAnHEAAJx1QACcdgAAnHbAAJx3gACceEAAnHjAAJx/wACchEAAnIkAAJyMAACcqsAAnKtAAJyrwACcrEAAnK0AAJytQACcrYAAnK3AAJyuAACcroAAnK8AAJyvQACcr4AAnLAAAJywQACczwAAnM+AAJzQQACc0MAAnNGAAJzRwACc0gAAnNJAAJzSgACc0wAAnNOAAJzTwACc1AAAnNSAAJzUwACc2QAAnNlAAJzZwACc+IAAnPkAAJz5gACc+gAAnPrAAJz7AACc+0AAnPuAAJz7wACc/EAAnPzAAJz9AACc/UAAnP3AAJz+AACdHMAAnR1AAJ0eAACdHoAAnR9AAJ0fgACdH8AAnSAAAJ0gQACdIMAAnSFAAJ0hgACdIcAAnSJAAJ0igACdKMAAnSkAAJ0pQACdKcAAnUiAAJ1JAACdSYAAnUoAAJ1KwACdSwAAnUtAAJ1LgACdS8AAnUxAAJ1MwACdTQAAnU1AAJ1NwACdTgAAnWzAAJ1tQACdbgAAnW6AAJ1vQACdb4AAnW/AAJ1wAACdcEAAnXDAAJ1xQACdcYAAnXHAAJ1yQACdcoAAnXhAAJ1+gACdicAAnYqAAJ2LQACdjAAAnYzAAJ2NgACdjkAAnY8AAJ2PwACdkIAAnZFAAJ2SAACdnUAAnZ4AAJ2ewACdn4AAnaBAAJ2hAACdocAAnaKAAJ2jQACdpAAAnaTAAJ2lgACdpgAAnaqAAJ2wgACdtYAAncBAAJ3DQACdycAAnc9AAJ3RwACd1IAAnduAAJ3gQACeBQAAng3AAJ4VwACeHcAAnh5AAJ4ewACeH0AAnh/AAJ4ggACeIMAAniEAAJ4hwACeIgAAniKAAJ4iwACeI0AAniQAAJ4kQACeJIAAniVAAJ4lgACeJsAAni0AAJ4vQACeL8AAnjBAAJ4ygACeM0AAnjQAAJ40gACeRsAAnk/AAJ5ZgACeYoAAnmNAAJ5jwACeZEAAnmTAAJ5lQACeZcAAnmYAAJ5mwACebQAAnnVAAJ51wACedkAAnnbAAJ53QACed8AAnnhAAJ54wACeeUAAnoGAAJ6CQACegwAAnoPAAJ6EgACehUAAnoYAAJ6GwACeh4AAnogAAJ6mwACep0AAnqfAAJ6oQACeqQAAnqlAAJ6pgACeqcAAnqoAAJ6qgACeqwAAnqtAAJ6rgACerAAAnqxAAJ7LAACey4AAnswAAJ7MgACezUAAns2AAJ7NwACezgAAns5AAJ7OwACez0AAns+AAJ7PwACe0EAAntCAAJ7vQACe78AAnvCAAJ7xAACe8cAAnvIAAJ7yQACe8oAAnvLAAJ7zQACe88AAnvQAAJ70QACe9MAAnvUAAJ77QACe+4AAnvvAAJ78QACfGwAAnxuAAJ8cAACfHIAAnx1AAJ8dgACfHcAAnx4AAJ8eQACfHsAAnx9AAJ8fgACfH8AAnyBAAJ8ggACfP0AAnz/AAJ9AQACfQMAAn0GAAJ9BwACfQgAAn0JAAJ9CgACfQwAAn0OAAJ9DwACfRAAAn0SAAJ9EwACfY4AAn2QAAJ9kgACfZQAAn2XAAJ9mAACfZkAAn2aAAJ9mwACfZ0AAn2fAAJ9oAACfaEAAn2jAAJ9pAACfh8AAn4hAAJ+IwACfiUAAn4oAAJ+KQACfioAAn4rAAJ+LAACfi4AAn4wAAJ+MQACfjIAAn40AAJ+NQACfrAAAn6yAAJ+tAACfrYAAn65AAJ+ugACfrsAAn68AAJ+vQACfr8AAn7BAAJ+wgACfsMAAn7FAAJ+xgACfw8AAn8zAAJ/WgACf34AAn+BAAJ/gwACf4UAAn+HAAJ/iQACf4sAAn+MAAJ/jwACf6gAAn/FAAJ/xwACf8kAAn/LAAJ/zQACf88AAn/RAAJ/0wACf/AAAn/zAAJ/9gACf/kAAn/8AAJ//wACgAIAAoAFAAKABwACgIIAAoCEAAKAhgACgIgAAoCLAAKAjAACgI0AAoCOAAKAjwACgJEAAoCTAAKAlAACgJUAAoCXAAKAmAACgRMAAoEVAAKBFwACgRkAAoEcAAKBHQACgR4AAoEfAAKBIAACgSIAAoEkAAKBJQACgSYAAoEoAAKBKQACgaQAAoGmAAKBqAACgaoAAoGtAAKBrgACga8AAoGwAAKBsQACgbMAAoG1AAKBtgACgbcAAoG5AAKBugACgjUAAoI3AAKCOgACgjwAAoI/AAKCQAACgkEAAoJCAAKCQwACgkUAAoJHAAKCSAACgkkAAoJLAAKCTAACgscAAoLJAAKCywACgs0AAoLQAAKC0QACgtIAAoLTAAKC1AACgtYAAoLYAAKC2QACgtoAAoLcAAKC3QACg1gAAoNaAAKDXAACg14AAoNhAAKDYgACg2MAAoNkAAKDZQACg2cAAoNpAAKDagACg2sAAoNtAAKDbgACg+kAAoPrAAKD7QACg+8AAoPyAAKD8wACg/QAAoP1AAKD9gACg/gAAoP6AAKD+wACg/wAAoP+AAKD/wAChJIAAoS1AAKE1QAChPUAAoT3AAKE+QAChPsAAoT9AAKFAAAChQEAAoUCAAKFBQAChQYAAoUIAAKFCQAChQsAAoUOAAKFDwAChRAAAoUTAAKFFAAChRkAAoUyAAKFOwAChT0AAoU/AAKFSAAChUsAAoVOAAKFUAAChZkAAoW9AAKF5AAChggAAoYLAAKGDQAChg8AAoYRAAKGEwAChhUAAoYWAAKGGQAChjIAAoZTAAKGVQAChlcAAoZZAAKGWwAChl0AAoZfAAKGYQAChmMAAoaEAAKGhwAChooAAoaNAAKGkAAChpMAAoaWAAKGmQAChpwAAoaeAAKHGQAChxsAAocdAAKHHwAChyIAAocjAAKHJAAChyUAAocmAAKHKAAChyoAAocrAAKHLAAChy4AAocvAAKHqgACh6wAAoeuAAKHsAACh7MAAoe0AAKHtQACh7YAAoe3AAKHuQACh7sAAoe8AAKHvQACh78AAofAAAKIOwACiD0AAohAAAKIQgACiEUAAohGAAKIRwACiEgAAohJAAKISwACiE0AAohOAAKITwACiFEAAohSAAKIawACiGwAAohtAAKIbwACiOoAAojsAAKI7gACiPAAAojzAAKI9AACiPUAAoj2AAKI9wACiPkAAoj7AAKI/AACiP0AAoj/AAKJAAACiXsAAol9AAKJfwACiYEAAomEAAKJhQACiYYAAomHAAKJiAACiYoAAomMAAKJjQACiY4AAomQAAKJkQACigwAAooOAAKKEAACihIAAooVAAKKFgACihcAAooYAAKKGQACihsAAoodAAKKHgACih8AAoohAAKKIgACip0AAoqfAAKKoQACiqMAAoqmAAKKpwACiqgAAoqpAAKKqgACiqwAAoquAAKKrwACirAAAoqyAAKKswACiy4AAoswAAKLMgACizQAAos3AAKLOAACizkAAos6AAKLOwACiz0AAos/AAKLQAACi0EAAotDAAKLRAACi40AAouxAAKL2AACi/wAAov/AAKMAQACjAMAAowFAAKMBwACjAkAAowKAAKMDQACjCYAAoxDAAKMRQACjEcAAoxJAAKMSwACjE0AAoxPAAKMUQACjG4AAoxxAAKMdAACjHcAAox6AAKMfQACjIAAAoyDAAKMhQACjQAAAo0CAAKNBAACjQYAAo0JAAKNCgACjQsAAo0MAAKNDQACjQ8AAo0RAAKNEgACjRMAAo0VAAKNFgACjZEAAo2TAAKNlQACjZcAAo2aAAKNmwACjZwAAo2dAAKNngACjaAAAo2iAAKNowACjaQAAo2mAAKNpwACjiIAAo4kAAKOJgACjigAAo4rAAKOLAACji0AAo4uAAKOLwACjjEAAo4zAAKONAACjjUAAo43AAKOOAACjrMAAo61AAKOtwACjrkAAo68AAKOvQACjr4AAo6/AAKOwAACjsIAAo7EAAKOxQACjsYAAo7IAAKOyQACj0QAAo9GAAKPSAACj0oAAo9NAAKPTgACj08AAo9QAAKPUQACj1MAAo9VAAKPVgACj1cAAo9ZAAKPWgACj9UAAo/XAAKP2QACj9sAAo/eAAKP3wACj+AAAo/hAAKP4gACj+QAAo/mAAKP5wACj+gAAo/qAAKP6wACkGYAApBoAAKQagACkGwAApBvAAKQcAACkHEAApByAAKQcwACkHUAApB3AAKQeAACkHkAApB7AAKQfAACkQ8AApEyAAKRUgACkXIAApF0AAKRdgACkXgAApF6AAKRfQACkX4AApF/AAKRggACkYMAApGFAAKRhgACkYgAApGLAAKRjAACkY0AApGQAAKRkQACkZoAApGzAAKRvAACkb4AApHAAAKRyQACkcwAApHPAAKR0QACkhoAApI+AAKSZQACkokAApKMAAKSjgACkpAAApKSAAKSlAACkpYAApKXAAKSmgACkrMAApLUAAKS1gACktgAApLaAAKS3AACkt4AApLgAAKS4gACkuQAApMFAAKTCAACkwsAApMOAAKTEQACkxQAApMXAAKTGgACkx0AApMfAAKTmgACk5wAApOeAAKToAACk6MAApOkAAKTpQACk6YAApOnAAKTqQACk6sAApOsAAKTrQACk68AApOwAAKUKwAClC0AApQvAAKUMQAClDQAApQ1AAKUNgAClDcAApQ4AAKUOgAClDwAApQ9AAKUPgAClEAAApRBAAKUvAAClL4AApTBAAKUwwAClMYAApTHAAKUyAAClMkAApTKAAKUzAAClM4AApTPAAKU0AAClNIAApTTAAKU7AAClO0AApTuAAKU8AAClWsAApVtAAKVbwAClXEAApV0AAKVdQAClXYAApV3AAKVeAAClXoAApV8AAKVfQAClX4AApWAAAKVgQAClfwAApX+AAKWAAAClgIAApYFAAKWBgAClgcAApYIAAKWCQAClgsAApYNAAKWDgAClg8AApYRAAKWEgAClo0AApaPAAKWkQAClpMAApaWAAKWlwAClpgAApaZAAKWmgAClpwAApaeAAKWnwAClqAAApaiAAKWowAClx4AApcgAAKXIgAClyQAApcnAAKXKAAClykAApcqAAKXKwACly0AApcvAAKXMAAClzEAApczAAKXNAACl68AApexAAKXswACl7UAApe4AAKXuQACl7oAApe7AAKXvAACl74AApfAAAKXwQACl8IAApfEAAKXxQACmA4AApgyAAKYWQACmH0AApiAAAKYggACmIQAApiGAAKYiAACmIoAApiLAAKYjgACmKcAApjEAAKYxgACmMgAApjKAAKYzAACmM4AApjQAAKY0gACmO8AApjyAAKY9QACmPgAApj7AAKY/gACmQEAApkEAAKZBgACmYEAApmDAAKZhQACmYcAApmKAAKZiwACmYwAApmNAAKZjgACmZAAApmSAAKZkwACmZQAApmWAAKZlwACmhIAApoUAAKaFgACmhgAApobAAKaHAACmh0AApoeAAKaHwACmiEAApojAAKaJAACmiUAAponAAKaKAACmqMAApqlAAKapwACmqkAApqsAAKarQACmq4AApqvAAKasAACmrIAApq0AAKatQACmrYAApq4AAKauQACmzQAAps2AAKbOQACmzsAAps+AAKbPwACm0AAAptBAAKbQgACm0QAAptGAAKbRwACm0gAAptKAAKbSwACm04AApvJAAKbywACm80AApvPAAKb0gACm9MAApvUAAKb1QACm9YAApvYAAKb2gACm9sAApvcAAKb3gACm98AApxaAAKcXAACnF4AApxgAAKcYwACnGQAApxlAAKcZgACnGcAApxpAAKcawACnGwAApxtAAKcbwACnHAAApzrAAKc7QACnO8AApzxAAKc9AACnPUAApz2AAKc9wACnPgAApz6AAKc/AACnP0AApz+AAKdAAACnQEAAp2UAAKdtwACndcAAp33AAKd+QACnfsAAp39AAKd/wACngIAAp4DAAKeBAACngcAAp4IAAKeCgACngsAAp4NAAKeEAACnhEAAp4SAAKeFQACnhYAAp4bAAKeNAACnj0AAp4/AAKeQQACnkoAAp5NAAKeUAACnlIAAp6bAAKevwACnuYAAp8KAAKfDQACnw8AAp8RAAKfEwACnxUAAp8XAAKfGAACnxsAAp80AAKfVQACn1cAAp9ZAAKfWwACn10AAp9fAAKfYQACn2MAAp9lAAKfhgACn4kAAp+MAAKfjwACn5IAAp+VAAKfmAACn5sAAp+eAAKfoAACoBsAAqAdAAKgHwACoCEAAqAkAAKgJQACoCYAAqAnAAKgKAACoCoAAqAsAAKgLQACoC4AAqAwAAKgMQACoKwAAqCuAAKgsAACoLIAAqC1AAKgtgACoLcAAqC4AAKguQACoLsAAqC9AAKgvgACoL8AAqDBAAKgwgACoT0AAqE/AAKhQgACoUQAAqFHAAKhSAACoUkAAqFKAAKhSwACoU0AAqFPAAKhUAACoVEAAqFTAAKhVAACoW0AAqFuAAKhbwACoXEAAqHsAAKh7gACofAAAqHyAAKh9QACofYAAqH3AAKh+AACofkAAqH7AAKh/QACof4AAqH/AAKiAQACogIAAqJ9AAKifwACooEAAqKDAAKihgACoocAAqKIAAKiiQACoooAAqKMAAKijgACoo8AAqKQAAKikgACopMAAqMOAAKjEAACoxIAAqMUAAKjFwACoxgAAqMZAAKjGgACoxsAAqMdAAKjHwACoyAAAqMhAAKjIwACoyQAAqOfAAKjoQACo6MAAqOlAAKjqAACo6kAAqOqAAKjqwACo6wAAqOuAAKjsAACo7EAAqOyAAKjtAACo7UAAqQwAAKkMgACpDQAAqQ2AAKkOQACpDoAAqQ7AAKkPAACpD0AAqQ/AAKkQQACpEIAAqRDAAKkRQACpEYAAqSPAAKkswACpNoAAqT+AAKlAQACpQMAAqUFAAKlBwACpQkAAqULAAKlDAACpQ8AAqUoAAKlRQACpUcAAqVJAAKlSwACpU0AAqVPAAKlUQACpVMAAqVwAAKlcwACpXYAAqV5AAKlfAACpX8AAqWCAAKlhQACpYcAAqYCAAKmBAACpgcAAqYJAAKmDAACpg0AAqYOAAKmDwACphAAAqYSAAKmFAACphUAAqYWAAKmGAACphkAAqaUAAKmlgACppgAAqaaAAKmnQACpp4AAqafAAKmoAACpqEAAqajAAKmpQACpqYAAqanAAKmqQACpqoAAqclAAKnJwACpykAAqcrAAKnLgACpy8AAqcwAAKnMQACpzIAAqc0AAKnNgACpzcAAqc4AAKnOgACpzsAAqe2AAKnuAACp7sAAqe9AAKnwAACp8EAAqfCAAKnwwACp8QAAqfGAAKnyAACp8kAAqfKAAKnzAACp80AAqhIAAKoSgACqEwAAqhOAAKoUQACqFIAAqhTAAKoVAACqFUAAqhXAAKoWQACqFoAAqhbAAKoXQACqF4AAqjZAAKo2wACqN0AAqjfAAKo4gACqOMAAqjkAAKo5QACqOYAAqjoAAKo6gACqOsAAqjsAAKo7gACqO8AAqlqAAKpbAACqW4AAqlwAAKpcwACqXQAAql1AAKpdgACqXcAAql5AAKpewACqXwAAql9AAKpfwACqYAAAqoTAAKqNgACqlYAAqp2AAKqeAACqnoAAqp8AAKqfgACqoEAAqqCAAKqgwACqoYAAqqHAAKqiQACqooAAqqMAAKqjwACqpAAAqqRAAKqlAACqpUAAqqeAAKqtwACqsAAAqrCAAKqxAACqs0AAqrQAAKq0wACqtUAAqseAAKrQgACq2kAAquNAAKrkAACq5IAAquUAAKrlgACq5gAAquaAAKrmwACq54AAqu3AAKr2AACq9oAAqvcAAKr3gACq+AAAqviAAKr5AACq+YAAqvoAAKsCQACrAwAAqwPAAKsEgACrBUAAqwYAAKsGwACrB4AAqwhAAKsIwACrJ4AAqygAAKsogACrKQAAqynAAKsqAACrKkAAqyqAAKsqwACrK0AAqyvAAKssAACrLEAAqyzAAKstAACrS8AAq0xAAKtMwACrTUAAq04AAKtOQACrToAAq07AAKtPAACrT4AAq1AAAKtQQACrUIAAq1EAAKtRQACrcAAAq3CAAKtxQACrccAAq3KAAKtywACrcwAAq3NAAKtzgACrdAAAq3SAAKt0wACrdQAAq3WAAKt1wACrfAAAq3xAAKt8gACrfQAAq5vAAKucQACrnMAAq51AAKueAACrnkAAq56AAKuewACrnwAAq5+AAKugAACroEAAq6CAAKuhAACroUAAq8AAAKvAgACrwQAAq8GAAKvCQACrwoAAq8LAAKvDAACrw0AAq8PAAKvEQACrxIAAq8TAAKvFQACrxYAAq+RAAKvkwACr5UAAq+XAAKvmgACr5sAAq+cAAKvnQACr54AAq+gAAKvogACr6MAAq+kAAKvpgACr6cAArAiAAKwJAACsCYAArAoAAKwKwACsCwAArAtAAKwLgACsC8AArAxAAKwMwACsDQAArA1AAKwNwACsDgAArCzAAKwtQACsLcAArC5AAKwvAACsL0AArC+AAKwvwACsMAAArDCAAKwxAACsMUAArDGAAKwyAACsMkAArESAAKxNgACsV0AArGBAAKxhAACsYYAArGIAAKxigACsYwAArGOAAKxjwACsZIAArGrAAKxyAACscoAArHMAAKxzgACsdAAArHSAAKx1AACsdYAArHzAAKx9gACsfkAArH8AAKx/wACsgIAArIFAAKyCAACsgoAArKFAAKyhwACsokAArKLAAKyjgACso8AArKQAAKykQACspIAArKUAAKylgACspcAArKYAAKymgACspsAArMWAAKzGAACsxoAArMcAAKzHwACsyAAArMhAAKzIgACsyMAArMlAAKzJwACsygAArMpAAKzKwACsywAArOnAAKzqQACs6sAArOtAAKzsAACs7EAArOyAAKzswACs7QAArO2AAKzuAACs7kAArO6AAKzvAACs70AArQ4AAK0OgACtDwAArQ+AAK0QQACtEIAArRDAAK0RAACtEUAArRHAAK0SQACtEoAArRLAAK0TQACtE4AArTJAAK0ywACtM0AArTPAAK00gACtNMAArTUAAK01QACtNYAArTYAAK02gACtNsAArTcAAK03gACtN8AArVaAAK1XAACtV4AArVgAAK1YwACtWQAArVlAAK1ZgACtWcAArVpAAK1awACtWwAArVtAAK1bwACtXAAArXrAAK17QACte8AArXxAAK19AACtfUAArX2AAK19wACtfgAArX6AAK1/AACtf0AArX+AAK2AAACtgEAAraUAAK2twACttcAArb3AAK2+QACtvsAArb9AAK2/wACtwIAArcDAAK3BAACtwcAArcIAAK3CgACtwsAArcNAAK3EAACtxEAArcSAAK3FQACtxYAArcbAAK3NAACtz0AArc/AAK3QQACt0oAArdNAAK3UAACt1IAArebAAK3vwACt+YAArgKAAK4DQACuA8AArgRAAK4EwACuBUAArgXAAK4GAACuBsAArg0AAK4VQACuFcAArhZAAK4WwACuF0AArhfAAK4YQACuGMAArhlAAK4hgACuIkAAriMAAK4jwACuJIAAriVAAK4mAACuJsAArieAAK4oAACuRsAArkdAAK5HwACuSEAArkkAAK5JQACuSYAArknAAK5KAACuSoAArksAAK5LQACuS4AArkwAAK5MQACuawAArmuAAK5sAACubIAArm1AAK5tgACubcAArm4AAK5uQACubsAArm9AAK5vgACub8AArnBAAK5wgACuj0AAro/AAK6QgACukQAArpHAAK6SAACukkAArpKAAK6SwACuk0AArpPAAK6UAACulEAArpTAAK6VAACum0AArpuAAK6bwACunEAArrsAAK67gACuvAAArryAAK69QACuvYAArr3AAK6+AACuvkAArr7AAK6/QACuv4AArr/AAK7AQACuwIAArt9AAK7fwACu4EAAruDAAK7hgACu4cAAruIAAK7iQACu4oAAruMAAK7jgACu48AAruQAAK7kgACu5MAArwOAAK8EAACvBIAArwUAAK8FwACvBgAArwZAAK8GgACvBsAArwdAAK8HwACvCAAArwhAAK8IwACvCQAAryfAAK8oQACvKMAArylAAK8qAACvKkAAryqAAK8qwACvKwAAryuAAK8sAACvLEAAryyAAK8tAACvLUAAr0wAAK9MgACvTQAAr02AAK9OQACvToAAr07AAK9PAACvT0AAr0/AAK9QQACvUIAAr1DAAK9RQACvUYAAr2PAAK9swACvdoAAr3+AAK+AQACvgMAAr4FAAK+BwACvgkAAr4LAAK+DAACvg8AAr4oAAK+RQACvkcAAr5JAAK+SwACvk0AAr5PAAK+UQACvlMAAr5wAAK+cwACvnYAAr55AAK+fAACvn8AAr6CAAK+hQACvocAAr8CAAK/BAACvwYAAr8IAAK/CwACvwwAAr8NAAK/DgACvw8AAr8RAAK/EwACvxQAAr8VAAK/FwACvxgAAr+TAAK/lQACv5cAAr+ZAAK/nAACv50AAr+eAAK/nwACv6AAAr+iAAK/pAACv6UAAr+mAAK/qAACv6kAAsAkAALAJgACwCgAAsAqAALALQACwC4AAsAvAALAMAACwDEAAsAzAALANQACwDYAAsA3AALAOQACwDoAAsC1AALAtwACwLkAAsC7AALAvgACwL8AAsDAAALAwQACwMIAAsDEAALAxgACwMcAAsDIAALAygACwMsAAsFGAALBSAACwUoAAsFMAALBTwACwVAAAsFRAALBUgACwVMAAsFVAALBVwACwVgAAsFZAALBWwACwVwAAsHXAALB2QACwdsAAsHdAALB4AACweEAAsHiAALB4wACweQAAsHmAALB6AACwekAAsHqAALB7AACwe0AAsJoAALCagACwmwAAsJuAALCcQACwnIAAsJzAALCdAACwnUAAsJ3AALCeQACwnoAAsJ7AALCfQACwn4AAsMRAALDNAACw1QAAsN0AALDdgACw3gAAsN6AALDfAACw38AAsOAAALDgQACw4QAAsOFAALDhwACw4gAAsOKAALDjQACw44AAsOPAALDkgACw5MAAsOYAALDsQACw7oAAsO8AALDvgACw8cAAsPKAALDzQACw88AAsQYAALEPAACxGMAAsSHAALEigACxIwAAsSOAALEkAACxJIAAsSUAALElQACxJgAAsSxAALE0gACxNQAAsTWAALE2AACxNoAAsTcAALE3gACxOAAAsTiAALFAwACxQYAAsUJAALFDAACxQ8AAsUSAALFFQACxRgAAsUbAALFHQACxZgAAsWaAALFnAACxZ4AAsWhAALFogACxaMAAsWkAALFpQACxacAAsWpAALFqgACxasAAsWtAALFrgACxikAAsYrAALGLQACxi8AAsYyAALGMwACxjQAAsY1AALGNgACxjgAAsY6AALGOwACxjwAAsY+AALGPwACxroAAsa8AALGvwACxsEAAsbEAALGxQACxsYAAsbHAALGyAACxsoAAsbMAALGzQACxs4AAsbQAALG0QACxuoAAsbrAALG7AACxu4AAsdpAALHawACx20AAsdvAALHcgACx3MAAsd0AALHdQACx3YAAsd4AALHegACx3sAAsd8AALHfgACx38AAsf6AALH/AACx/4AAsgAAALIAwACyAQAAsgFAALIBgACyAcAAsgJAALICwACyAwAAsgNAALIDwACyBAAAsiLAALIjQACyI8AAsiRAALIlAACyJUAAsiWAALIlwACyJgAAsiaAALInAACyJ0AAsieAALIoAACyKEAAskcAALJHgACySAAAskiAALJJQACySYAAsknAALJKAACySkAAskrAALJLQACyS4AAskvAALJMQACyTIAAsmtAALJrwACybEAAsmzAALJtgACybcAAsm4AALJuQACyboAAsm8AALJvgACyb8AAsnAAALJwgACycMAAsoMAALKMAACylcAAsp7AALKfgACyoAAAsqCAALKhAACyoYAAsqIAALKiQACyowAAsqlAALKwgACysQAAsrGAALKyAACysoAAsrMAALKzgACytAAAsrtAALK8AACyvMAAsr2AALK+QACyvwAAsr/AALLAgACywQAAst/AALLgQACy4MAAsuFAALLiAACy4kAAsuKAALLiwACy4wAAsuOAALLkAACy5EAAsuSAALLlAACy5UAAswQAALMEgACzBQAAswWAALMGQACzBoAAswbAALMHAACzB0AAswfAALMIQACzCIAAswjAALMJQACzCYAAsyhAALMowACzKUAAsynAALMqgACzKsAAsysAALMrQACzK4AAsywAALMsgACzLMAAsy0AALMtgACzLcAAs0yAALNNAACzTcAAs05AALNPAACzT0AAs0+AALNPwACzUAAAs1CAALNRAACzUUAAs1GAALNSAACzUkAAs3EAALNxgACzcgAAs3KAALNzQACzc4AAs3PAALN0AACzdEAAs3TAALN1QACzdYAAs3XAALN2QACzdoAAs5VAALOVwACzlkAAs5bAALOXgACzl8AAs5gAALOYQACzmIAAs5kAALOZgACzmcAAs5oAALOagACzmsAAs7mAALO6AACzuoAAs7sAALO7wACzvAAAs7xAALO8gACzvMAAs71AALO9wACzvgAAs75AALO+wACzvwAAs+PAALPsgACz9IAAs/yAALP9AACz/YAAs/4AALP+gACz/0AAs/+AALP/wAC0AIAAtADAALQBQAC0AYAAtAIAALQCwAC0AwAAtANAALQEAAC0BEAAtAWAALQLwAC0DgAAtA6AALQPAAC0EUAAtBIAALQSwAC0E0AAtCWAALQugAC0OEAAtEFAALRCAAC0QoAAtEMAALRDgAC0RAAAtESAALREwAC0RYAAtEvAALRUAAC0VIAAtFUAALRVgAC0VgAAtFaAALRXAAC0V4AAtFgAAL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ivAAC4r0AAuK+AALiwAAC4sEAAuMKAALjLgAC41UAAuN5AALjfAAC438AAuOBAALjgwAC44UAAuOHAALjiAAC44sAAuOkAALjwQAC48QAAuPHAALjygAC480AAuPQAALj0wAC49YAAuPzAALj9gAC4/kAAuP8AALj/wAC5AIAAuQFAALkCAAC5AoAAuSFAALkhwAC5IoAAuSMAALkjwAC5JAAAuSRAALkkgAC5JMAAuSVAALkmAAC5JkAAuSaAALknAAC5J0AAuUYAALlGgAC5R0AAuUfAALlIgAC5SMAAuUkAALlJQAC5SYAAuUoAALlKwAC5SwAAuUtAALlLwAC5TAAAuWrAALlrQAC5bAAAuWyAALltQAC5bYAAuW3AALluAAC5bkAAuW7AALlvgAC5b8AAuXAAALlwgAC5cMAAuY+AALmQAAC5kMAAuZFAALmSAAC5kkAAuZKAALmSwAC5kwAAuZOAALmUQAC5lIAAuZTAALmVQAC5lYAAubRAALm0wAC5tUAAubXAALm2gAC5tsAAubcAALm3QAC5t4AAubgAALm4wAC5uQAAublAALm5wAC5ugAAudjAALnZQAC52cAAudpAALnbAAC520AAuduAALnbwAC53AAAudyAALndQAC53YAAud3AALneQAC53oAAuf1AALn9wAC5/oAAuf8AALn/wAC6AAAAugBAALoAgAC6AMAAugFAALoCAAC6AkAAugKAALoDAAC6A0AAuigAALowwAC6OMAAukDAALpBQAC6QcAAukJAALpCwAC6Q4AAukPAALpEAAC6RMAAukUAALpFgAC6RcAAukZAALpHAAC6R0AAukeAALpIQAC6SIAAuknAALpQAAC6UkAAulLAALpTQAC6VYAAulZAALpXAAC6V4AAumnAALpywAC6fIAAuoWAALqGQAC6hsAAuodAALqHwAC6iEAAuojAALqJAAC6icAAupAAALqYQAC6mMAAuplAALqZwAC6mkAAuprAALqbQAC6m8AAupxAALqkgAC6pUAAuqYAALqmwAC6p4AAuqhAALqpAAC6qcAAuqqAALqrAAC6ycAAuspAALrKwAC6y0AAuswAALrMQAC6zIAAuszAALrNAAC6zYAAus4AALrOQAC6zoAAus8AALrPQAC67gAAuu6AALrvAAC674AAuvBAALrwgAC68MAAuvEAALrxQAC68cAAuvJAALrygAC68sAAuvNAALrzgAC7EkAAuxLAALsTgAC7FAAAuxTAALsVAAC7FUAAuxWAALsVwAC7FkAAuxbAALsXAAC7F0AAuxfAALsYAAC7HkAAux6AALsewAC7H0AAuz4AALs+gAC7PwAAuz+AALtAQAC7QIAAu0DAALtBAAC7QUAAu0HAALtCQAC7QoAAu0LAALtDQAC7Q4AAu2JAALtiwAC7Y0AAu2PAALtkgAC7ZMAAu2UAALtlQAC7ZYAAu2YAALtmgAC7ZsAAu2cAALtngAC7Z8AAu4aAALuHAAC7h4AAu4gAALuIwAC7iQAAu4lAALuJgAC7icAAu4pAALuKwAC7iwAAu4tAALuLwAC7jAAAu6rAALurQAC7q8AAu6xAALutAAC7rUAAu62AALutwAC7rgAAu66AALuvAAC7r0AAu6+AALuwAAC7sEAAu88AALvPgAC70AAAu9CAALvRQAC70YAAu9HAALvSAAC70kAAu9LAALvTQAC704AAu9PAALvUQAC71IAAu+bAALvvwAC7+YAAvAKAALwDQAC8A8AAvARAALwEwAC8BUAAvAXAALwGAAC8BsAAvA0AALwUQAC8FMAAvBVAALwVwAC8FkAAvBbAALwXQAC8F8AAvB8AALwfwAC8IIAAvCFAALwiAAC8IsAAvCOAALwkQAC8JMAAvEOAALxEAAC8RIAAvEUAALxFwAC8RgAAvEZAALxGgAC8RsAAvEdAALxHwAC8SAAAvEhAALxIwAC8SQAAvGfAALxoQAC8aMAAvGlAALxqAAC8akAAvGqAALxqwAC8awAAvGuAALxsAAC8bEAAvGyAALxtAAC8bUAAvIwAALyMgAC8jQAAvI2AALyOQAC8joAAvI7AALyPAAC8j0AAvI/AALyQQAC8kIAAvJDAALyRQAC8kYAAvLBAALywwAC8sYAAvLIAALyywAC8swAAvLNAALyzgAC8s8AAvLRAALy0wAC8tQAAvLVAALy1wAC8tgAAvNTAALzVQAC81cAAvNZAALzXAAC810AAvNeAALzXwAC82AAAvNiAALzZAAC82UAAvNmAALzaAAC82kAAvPkAALz5gAC8+gAAvPqAALz7QAC8+4AAvPvAALz8AAC8/EAAvPzAALz9QAC8/YAAvP3AALz+QAC8/oAAvR1AAL0dwAC9HkAAvR7AAL0fgAC9H8AAvSAAAL0gQAC9IIAAvSEAAL0hgAC9IcAAvSIAAL0igAC9IsAAvUeAAL1QQAC9WEAAvWBAAL1gwAC9YUAAvWHAAL1iQAC9YwAAvWNAAL1jgAC9ZEAAvWSAAL1lAAC9ZUAAvWXAAL1mgAC9ZsAAvWcAAL1nwAC9aAAAvWpAAL1wgAC9csAAvXNAAL1zwAC9dgAAvXbAAL13gAC9eAAAvYpAAL2TQAC9nQAAvaYAAL2mwAC9p0AAvafAAL2oQAC9qMAAvalAAL2pgAC9qkAAvbCAAL24wAC9uUAAvbnAAL26QAC9usAAvbtAAL27wAC9vEAAvbzAAL3FAAC9xcAAvcaAAL3HQAC9yAAAvcjAAL3JgAC9ykAAvcsAAL3LgAC96kAAverAAL3rQAC968AAveyAAL3swAC97QAAve1AAL3tgAC97gAAve6AAL3uwAC97wAAve+AAL3vwAC+DoAAvg8AAL4PgAC+EAAAvhDAAL4RAAC+EUAAvhGAAL4RwAC+EkAAvhLAAL4TAAC+E0AAvhPAAL4UAAC+MsAAvjNAAL40AAC+NIAAvjVAAL41gAC+NcAAvjYAAL42QAC+NsAAvjdAAL43gAC+N8AAvjhAAL44gAC+PsAAvj8AAL4/QAC+P8AAvl6AAL5fAAC+X4AAvmAAAL5gwAC+YQAAvmFAAL5hgAC+YcAAvmJAAL5iwAC+YwAAvmNAAL5jwAC+ZAAAvoLAAL6DQAC+g8AAvoRAAL6FAAC+hUAAvoWAAL6FwAC+hgAAvoaAAL6HAAC+h0AAvoeAAL6IAAC+iEAAvqcAAL6ngAC+qAAAvqiAAL6pQAC+qYAAvqnAAL6qAAC+qkAAvqrAAL6rQAC+q4AAvqvAAL6sQAC+rIAAvstAAL7LwAC+zEAAvszAAL7NgAC+zcAAvs4AAL7OQAC+zoAAvs8AAL7PgAC+z8AAvtAAAL7QgAC+0MAAvu+AAL7wAAC+8IAAvvEAAL7xwAC+8gAAvvJAAL7ygAC+8sAAvvNAAL7zwAC+9AAAvvRAAL70wAC+9QAAvwdAAL8QQAC/GgAAvyMAAL8jwAC/JEAAvyTAAL8lQAC/JcAAvyZAAL8mgAC/J0AAvy2AAL80wAC/NUAAvzXAAL82QAC/NsAAvzdAAL83wAC/OEAAvz+AAL9AQAC/QQAAv0HAAL9CgAC/Q0AAv0QAAL9EwAC/RUAAv2QAAL9kgAC/ZQAAv2WAAL9mQAC/ZoAAv2bAAL9nAAC/Z0AAv2fAAL9oQAC/aIAAv2jAAL9pQAC/aYAAv4hAAL+IwAC/iUAAv4nAAL+KgAC/isAAv4sAAL+LQAC/i4AAv4wAAL+MgAC/jMAAv40AAL+NgAC/jcAAv6yAAL+tAAC/rYAAv64AAL+uwAC/rwAAv69AAL+vgAC/r8AAv7BAAL+wwAC/sQAAv7FAAL+xwAC/sgAAv9DAAL/RQAC/0cAAv9JAAL/TAAC/00AAv9OAAL/TwAC/1AAAv9SAAL/VAAC/1UAAv9WAAL/WAAC/1kAAv/UAAL/1gAC/9gAAv/aAAL/3QAC/94AAv/fAAL/4AAC/+EAAv/jAAL/5QAC/+YAAv/nAAL/6QAC/+oAAwBlAAMAZwADAGkAAwBrAAMAbgADAG8AAwBwAAMAcQADAHIAAwB0AAMAdgADAHcAAwB4AAMAegADAHsAAwD2AAMA+AADAPoAAwD8AAMA/wADAQAAAwEBAAMBAgADAQMAAwEFAAMBBwADAQgAAwEJAAMBCwADAQwAAwEdAAMBHgADASAAAwGbAAMBnQADAZ8AAwGhAAMBpAADAaUAAwGmAAMBpwADAagAAwGqAAMBrQADAa4AAwGvAAMBsQADAbIAAwItAAMCLwADAjEAAwIzAAMCNgADAjcAAwI4AAMCOQADAjoAAwI8AAMCPwADAkAAAwJBAAMCQwADAkQAAwK/AAMCwQADAsQAAwLGAAMCyQADAsoAAwLLAAMCzAADAs0AAwLPAAMC0gADAtMAAwLUAAMC1gADAtcAAwNqAAMDjQADA60AAwPNAAMDzwADA9EAAwPTAAMD1QADA9gAAwPZAAMD2gADA90AAwPeAAMD4AADA+EAAwPkAAMD5wADA+gAAwPpAAMD7AADA+0AAwPyAAMECwADBBQAAwQWAAMEGQADBCIAAwQlAAMEKAADBCoAAwRzAAMElwADBL4AAwTiAAME5QADBOcAAwTpAAME6wADBO0AAwTvAAME8AADBPMAAwUMAAMFLQADBS8AAwUxAAMFMwADBTUAAwU3AAMFOQADBTsAAwU9AAMFXgADBWEAAwVkAAMFZwADBWoAAwVtAAMFcAADBXMAAwV2AAMFeAADBfMAAwX1AAMF9wADBfkAAwX8AAMF/QADBf4AAwX/AAMGAAADBgIAAwYEAAMGBQADBgYAAwYIAAMGCQADBoQAAwaGAAMGiAADBooAAwaNAAMGjgADBo8AAwaQAAMGkQADBpMAAwaVAAMGlgADBpcAAwaZAAMGmgADBxUAAwcXAAMHGgADBxwAAwcfAAMHIAADByEAAwciAAMHIwADByUAAwcnAAMHKAADBykAAwcrAAMHLAADB0UAAwdGAAMHRwADB0kAAwfEAAMHxgADB8gAAwfKAAMHzQADB84AAwfPAAMH0AADB9EAAwfTAAMH1QADB9YAAwfXAAMH2QADB9oAAwhVAAMIVwADCFkAAwhbAAMIXgADCF8AAwhgAAMIYQADCGIAAwhkAAMIZgADCGcAAwhoAAMIagADCGsAAwjmAAMI6AADCOoAAwjsAAMI7wADCPAAAwjxAAMI8gADCPMAAwj1AAMI9wADCPgAAwj5AAMI+wADCPwAAwl3AAMJeQADCXsAAwl9AAMJgAADCYEAAwmCAAMJgwADCYQAAwmGAAMJiAADCYkAAwmKAAMJjAADCY0AAwoIAAMKCgADCgwAAwoOAAMKEQADChIAAwoTAAMKFAADChUAAwoXAAMKGQADChoAAwobAAMKHQADCh4AAwpnAAMKiwADCrIAAwrWAAMK2QADCtwAAwreAAMK4AADCuIAAwrkAAMK5QADCugAAwsBAAMLHgADCyEAAwskAAMLJwADCyoAAwstAAMLMAADCzMAAwtQAAMLUwADC1YAAwtZAAMLXAADC18AAwtiAAMLZQADC2cAAwviAAML5AADC+cAAwvpAAML7AADC+0AAwvuAAML7wADC/AAAwvyAAML9QADC/YAAwv3AAML+QADC/oAAwx1AAMMdwADDHoAAwx8AAMMfwADDIAAAwyBAAMMggADDIMAAwyFAAMMiAADDIkAAwyKAAMMjAADDI0AAw0IAAMNCgADDQ0AAw0PAAMNEgADDRMAAw0UAAMNFQADDRYAAw0YAAMNGwADDRwAAw0dAAMNHwADDSAAAw2bAAMNnQADDaAAAw2iAAMNpQADDaYAAw2nAAMNqAADDakAAw2rAAMNrgADDa8AAw2wAAMNsgADDbMAAw4uAAMOMAADDjIAAw40AAMONwADDjgAAw45AAMOOgADDjsAAw49AAMOQAADDkEAAw5CAAMORAADDkUAAw7AAAMOwgADDsQAAw7GAAM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7UAADO1EAAztTAAM7VgADO1cAAztYAAM7WgADO1sAAzvWAAM72AADO9oAAzvcAAM73wADO+AAAzvhAAM74gADO+MAAzvlAAM76AADO+kAAzvqAAM77AADO+0AAzxoAAM8agADPGwAAzxuAAM8cQADPHIAAzxzAAM8dAADPHUAAzx3AAM8egADPHsAAzx8AAM8fgADPH8AAzz6AAM8/AADPP8AAz0BAAM9BAADPQUAAz0GAAM9BwADPQgAAz0KAAM9DQADPQ4AAz0PAAM9EQADPRIAAz2lAAM9yAADPegAAz4IAAM+CgADPgwAAz4OAAM+EAADPhMAAz4UAAM+FQADPhgAAz4ZAAM+GwADPhwAAz4eAAM+IQADPiIAAz4jAAM+JgADPicAAz4sAAM+RQADPk4AAz5QAAM+UgADPlsAAz5eAAM+YQADPmMAAz6sAAM+0AADPvcAAz8bAAM/HgADPyAAAz8iAAM/JAADPyYAAz8oAAM/KQADPywAAz9FAAM/ZgADP2gAAz9qAAM/bAADP24AAz9wAAM/cgADP3QAAz92AAM/lwADP5oAAz+dAAM/oAADP6MAAz+mAAM/qQADP6wAAz+vAAM/sQADQCwAA0AuAANAMAADQDIAA0A1AANANgADQDcAA0A4AANAOQADQDsAA0A9AANAPgADQD8AA0BBAANAQgADQL0AA0C/AANAwQADQMMAA0DGAANAxwADQMgAA0DJAANAygADQMwAA0DOAANAzwADQNAAA0DSAANA0wADQU4AA0FQAANBUwADQVUAA0FYAANBWQADQVoAA0FbAANBXAADQV4AA0FgAANBYQADQWIAA0FkAANBZQADQX4AA0F/AANBgAADQYIAA0H9AANB/wADQgEAA0IDAANCBgADQgcAA0IIAANCCQADQgoAA0IMAANCDgADQg8AA0IQAANCEgADQhMAA0KOAANCkAADQpIAA0KUAANClwADQpgAA0KZAANCmgADQpsAA0KdAANCnwADQqAAA0KhAANCowADQqQAA0MfAANDIQADQyMAA0MlAANDKAADQykAA0MqAANDKwADQywAA0MuAANDMAADQzEAA0MyAANDNAADQzUAA0OwAANDsgADQ7QAA0O2AANDuQADQ7oAA0O7AANDvAADQ70AA0O/AANDwQADQ8IAA0PDAANDxQADQ8YAA0RBAANEQwADREUAA0RHAANESgADREsAA0RMAANETQADRE4AA0RQAANEUgADRFMAA0RUAANEVgADRFcAA0SgAANExAADROsAA0UPAANFEgADRRQAA0UWAANFGAADRRoAA0UcAANFHQADRSAAA0U5AANFVgADRVgAA0VaAANFXAADRV4AA0VgAANFYgADRWQAA0WBAANFhAADRYcAA0WKAANFjQADRZAAA0WTAANFlgADRZgAA0YTAANGFQADRhcAA0YZAANGHAADRh0AA0YeAANGHwADRiAAA0YiAANGJAADRiUAA0YmAANGKAADRikAA0akAANGpgADRqgAA0aqAANGrQADRq4AA0avAANGsAADRrEAA0azAANGtQADRrYAA0a3AANGuQADRroAA0c1AANHNwADRzkAA0c7AANHPgADRz8AA0dAAANHQQADR0IAA0dEAANHRgADR0cAA0dIAANHSgADR0sAA0fGAANHyAADR8sAA0fNAANH0AADR9EAA0fSAANH0wADR9QAA0fWAANH2AADR9kAA0faAANH3AADR90AA0fgAANIWwADSF0AA0hfAANIYQADSGQAA0hlAANIZgADSGcAA0hoAANIagADSGwAA0htAANIbgADSHAAA0hxAANI7AADSO4AA0jwAANI8gADSPUAA0j2AANI9wADSPgAA0j5AANI+wADSP0AA0j+AANI/wADSQEAA0kCAANJfQADSX8AA0mBAANJgwADSYYAA0mHAANJiAADSYkAA0mKAANJjAADSY4AA0mPAANJkAADSZIAA0mTAANKJgADSkkAA0ppAANKiQADSosAA0qNAANKjwADSpEAA0qUAANKlQADSpYAA0qZAANKmgADSpwAA0qdAANKnwADSqIAA0qjAANKpAADSqcAA0qoAANKrQADSsYAA0rPAANK0QADStMAA0rcAANK3wADSuIAA0rkAANLLQADS1EAA0t4AANLnAADS58AA0uhAANLowADS6UAA0unAANLqQADS6oAA0utAANLxgADS+cAA0vpAANL6wADS+0AA0vvAANL8QADS/MAA0v1AANL9wADTBgAA0wbAANMHgADTCEAA0wkAANMJwADTCoAA0wtAANMMAADTDIAA0ytAANMrwADTLEAA0yzAANMtgADTLcAA0y4AANMuQADTLoAA0y8AANMvgADTL8AA0zAAANMwgADTMMAA00+AANNQAADTUIAA01EAANNRwADTUgAA01JAANNSgADTUsAA01NAANNTwADTVAAA01RAANNUwADTVQAA03PAANN0QADTdQAA03WAANN2QADTdoAA03bAANN3AADTd0AA03fAANN4QADTeIAA03jAANN5QADTeYAA03/AANOAAADTgEAA04DAANOfgADToAAA06CAANOhAADTocAA06IAANOiQADTooAA06LAANOjQADTo8AA06QAANOkQADTpMAA06UAANPDwADTxEAA08TAANPFQADTxgAA08ZAANPGgADTxsAA08cAANPHgADTyAAA08hAANPIgADTyQAA08lAANPoAADT6IAA0+kAANPpgADT6kAA0+qAANPqwADT6wAA0+tAANPrwADT7EAA0+yAANPswADT7UAA0+2AANQMQADUDMAA1A1AANQNwADUDoAA1A7AANQPAADUD0AA1A+AANQQAADUEIAA1BDAANQRAADUEYAA1BHAANQwgADUMQAA1DGAANQyAADUMsAA1DMAANQzQADUM4AA1DPAANQ0QADUNMAA1DUAANQ1QADUNcAA1DYAANRIQADUUUAA1FsAANRkAADUZMAA1GVAANRlwADUZkAA1GbAANRnQADUZ4AA1GhAANRugADUdcAA1HZAANR2wADUd0AA1HfAANR4QADUeMAA1HlAANSAgADUgUAA1IIAANSCwADUg4AA1IRAANSFAADUhcAA1IZAANSlAADUpYAA1KYAANSmgADUp0AA1KeAANSnwADUqAAA1KhAANSowADUqUAA1KmAANSpwADUqkAA1KqAANTJQADUycAA1MpAANTKwADUy4AA1MvAANTMAADUzEAA1MyAANTNAADUzYAA1M3AANTOAADUzoAA1M7AANTtgADU7gAA1O6AANTvAADU78AA1PAAANTwQADU8IAA1PDAANTxQADU8cAA1PIAANTyQADU8sAA1PMAANURwADVEkAA1RMAANUTgADVFEAA1RSAANUUwADVFQAA1RVAANUVwADVFkAA1RaAANUWwADVF0AA1ReAANU2QADVNsAA1TdAANU3wADVOIAA1TjAANU5AADVOUAA1TmAANU6AADVOoAA1TrAANU7AADVO4AA1TvAANVagADVWwAA1VuAANVcAADVXMAA1V0AANVdQADVXYAA1V3AANVeQADVXsAA1V8AANVfQADVX8AA1WAAANV+wADVf0AA1X/AANWAQADVgQAA1YFAANWBgADVgcAA1YIAANWCgADVgwAA1YNAANWDgADVhAAA1YRAANWIgADViMAA1YlAANWoAADVqIAA1akAANWpgADVqkAA1aqAANWqwADVqwAA1atAANWrwADVrIAA1azAANWtAADVrYAA1a3AANXMgADVzQAA1c2AANXOAADVzsAA1c8AANXPQADVz4AA1c/AANXQQADV0QAA1dFAANXRgADV0gAA1dJAANXxAADV8YAA1fJAANXywADV84AA1fPAANX0AADV9EAA1fSAANX1AADV9cAA1fYAANX2QADV9sAA1fcAANYbwADWJIAA1iyAANY0gADWNQAA1jWAANY2AADWNoAA1jdAANY3gADWN8AA1jiAANY4wADWOUAA1jmAANY6AADWOsAA1jsAANY7QADWPAAA1jxAANY9gADWQ8AA1kYAANZGgADWRwAA1klAANZKAADWSsAA1ktAANZdgADWZoAA1nBAANZ5QADWegAA1nqAANZ7AADWe4AA1nwAANZ8gADWfMAA1n2AANaDwADWjAAA1oyAANaNAADWjYAA1o4AANaOgADWjwAA1o+AANaQAADWmEAA1pkAANaZwADWmoAA1ptAANacAADWnMAA1p2AANaeQADWnsAA1r2AANa+AADWvoAA1r8AANa/wADWwAAA1sBAANbAgADWwMAA1sFAANbBwADWwgAA1sJAANbCwADWwwAA1uHAANbiQADW4sAA1uNAANbkAADW5EAA1uSAANbkwADW5QAA1uWAANbmAADW5kAA1uaAANbnAADW50AA1wYAANcGgADXB0AA1wfAANcIgADXCMAA1wkAANcJQADXCYAA1woAANcKgADXCsAA1wsAANcLgADXC8AA1xIAANcSQADXEoAA1xMAANcxwADXMkAA1zLAANczQADXNAAA1zRAANc0gADXNMAA1zUAANc1gADXNgAA1zZAANc2gADXNwAA1zdAANdWAADXVoAA11cAANdXgADXWEAA11iAANdYwADXWQAA11lAANdZwADXWkAA11qAANdawADXW0AA11uAANd6QADXesAA13tAANd7wADXfIAA13zAANd9AADXfUAA132AANd+AADXfoAA137AANd/AADXf4AA13/AANeegADXnwAA15+AANegAADXoMAA16EAANehQADXoYAA16HAANeiQADXosAA16MAANejQADXo8AA16QAANfCwADXw0AA18PAANfEQADXxQAA18VAANfFgADXxcAA18YAANfGgADXxwAA18dAANfHgADXyAAA18hAANfagADX44AA1+1AANf2QADX9wAA1/eAANf4AADX+IAA1/kAANf5gADX+cAA1/qAANgAwADYCAAA2AiAANgJAADYCYAA2AoAANgKgADYCwAA2AuAANgSwADYE4AA2BRAANgVAADYFcAA2BaAANgXQADYGAAA2BiAANg3QADYN8AA2DhAANg4wADYOYAA2DnAANg6AADYOkAA2DqAANg7AADYO4AA2DvAANg8AADYPIAA2DzAANhbgADYXAAA2FyAANhdAADYXcAA2F4AANheQADYXoAA2F7AANhfQADYX8AA2GAAANhgQADYYMAA2GEAANh/wADYgEAA2IDAANiBQADYggAA2IJAANiCgADYgsAA2IMAANiDgADYhAAA2IRAANiEgADYhQAA2IVAANikAADYpIAA2KUAANilgADYpkAA2KaAANimwADYpwAA2KdAANinwADYqEAA2KiAANiowADYqUAA2KmAANjIQADYyMAA2MlAANjJwADYyoAA2MrAANjLAADYy0AA2MuAANjMAADYzIAA2MzAANjNAADYzYAA2M3AANjsgADY7QAA2O2AANjuAADY7sAA2O8AANjvQADY74AA2O/AANjwQADY8MAA2PEAANjxQADY8cAA2PIAANkQwADZEUAA2RHAANkSQADZEwAA2RNAANkTgADZE8AA2RQAANkUgADZFQAA2RVAANkVgADZFgAA2RZAANk7AADZQ8AA2UvAANlTwADZVEAA2VTAANlVQADZVcAA2VaAANlWwADZVwAA2VfAANlYAADZWIAA2VjAANlZQADZWgAA2VpAANlagADZW0AA2VuAANldwADZZAAA2WZAANlmwADZZ0AA2WmAANlqQADZawAA2WuAANl9wADZhsAA2ZCAANmZgADZmkAA2ZrAANmbQADZm8AA2ZxAANmcwADZnQAA2Z3AANmkAADZrEAA2azAANmtQADZrcAA2a5AANmuwADZr0AA2a/AANmwQADZuIAA2blAANm6AADZusAA2buAANm8QADZvQAA2b3AANm+gADZvwAA2d3AANneQADZ3sAA2d9AANngAADZ4EAA2eCAANngwADZ4QAA2eGAANniAADZ4kAA2eKAANnjAADZ40AA2gIAANoCgADaAwAA2gOAANoEQADaBIAA2gTAANoFAADaBUAA2gXAANoGQADaBoAA2gbAANoHQADaB4AA2iZAANomwADaJ4AA2igAANoowADaKQAA2ilAANopgADaKcAA2ipAANoqwADaKwAA2itAANorwADaLAAA2jJAANoygADaMsAA2jNAANpSAADaUoAA2lMAANpTgADaVEAA2lSAANpUwADaVQAA2lVAANpVwADaVkAA2laAANpWwADaV0AA2leAANp2QADadsAA2ndAANp3wADaeIAA2njAANp5AADaeUAA2nmAANp6AADaeoAA2nrAANp7AADae4AA2nvAANqagADamwAA2puAANqcAADanMAA2p0AANqdQADanYAA2p3AANqeQADansAA2p8AANqfQADan8AA2qAAANq+wADav0AA2r/AANrAQADawQAA2sFAANrBgADawcAA2sIAANrCgADawwAA2sNAANrDgADaxAAA2sRAANrjAADa44AA2uQAANrkgADa5UAA2uWAANrlwADa5gAA2uZAANrmwADa50AA2ueAANrnwADa6EAA2uiAANr6wADbA8AA2w2AANsWgADbF0AA2xfAANsYQADbGMAA2xlAANsZwADbGgAA2xrAANshAADbKEAA2yjAANspQADbKcAA2ypAANsqwADbK0AA2yvAANszAADbM8AA2zSAANs1QADbNgAA2zbAANs3gADbOEAA2zjAANtXgADbWAAA21iAANtZAADbWcAA21oAANtaQADbWoAA21rAANtbQADbW8AA21wAANtcQADbXMAA210AANt7wADbfEAA23zAANt9QADbfgAA235AANt+gADbfsAA238AANt/gADbgAAA24BAANuAgADbgQAA24FAANugAADboIAA26EAANuhgADbokAA26KAANuiwADbowAA26NAANujwADbpEAA26SAANukwADbpUAA26WAANvEQADbxMAA28VAANvFwADbxoAA28bAANvHAADbx0AA28eAANvIAADbyIAA28jAANvJAADbyYAA28nAANvogADb6QAA2+mAANvqAADb6sAA2+sAANvrQADb64AA2+vAANvsQADb7MAA2+0AANvtQADb7cAA2+4AANwMwADcDUAA3A3AANwOQADcDwAA3A9AANwPgADcD8AA3BAAANwQgADcEQAA3BFAANwRgADcEgAA3BJAANwxAADcMYAA3DIAANwygADcM0AA3DOAANwzwADcNAAA3DRAANw0wADcNUAA3DWAANw1wADcNkAA3DaAANxbQADcZAAA3GwAANx0AADcdIAA3HUAANx1gADcdgAA3HbAANx3AADcd0AA3HgAANx4QADceMAA3HkAANx5gADcekAA3HqAANx6wADce4AA3HvAANx+AADchEAA3IaAANyHAADch4AA3InAANyKgADci0AA3IvAANyeAADcpwAA3LDAANy5wADcuoAA3LsAANy7gADcvAAA3LyAANy9AADcvUAA3L4AANzEQADczIAA3M0AANzNgADczgAA3M6AANzPAADcz4AA3NAAANzQgADc2MAA3NmAANzaQADc2wAA3NvAANzcgADc3UAA3N4AANzewADc30AA3P4AANz+gADc/wAA3P+AAN0AQADdAIAA3QDAAN0BAADdAUAA3QHAAN0CQADdAoAA3QLAAN0DQADdA4AA3SJAAN0iwADdI0AA3SPAAN0kgADdJMAA3SUAAN0lQADdJYAA3SYAAN0mgADdJsAA3ScAAN0ngADdJ8AA3UaAAN1HAADdR8AA3UhAAN1JAADdSUAA3UmAAN1JwADdSgAA3UqAAN1LAADdS0AA3UuAAN1MAADdTEAA3VKAAN1SwADdUwAA3VOAAN1yQADdcsAA3XNAAN1zwADddIAA3XTAAN11AADddUAA3XWAAN12AADddoAA3XbAAN13AADdd4AA3XfAAN2WgADdlwAA3ZeAAN2YAADdmMAA3ZkAAN2ZQADdmYAA3ZnAAN2aQADdmsAA3ZsAAN2bQADdm8AA3ZwAAN26wADdu0AA3bvAAN28QADdvQAA3b1AAN29gADdvcAA3b4AAN2+gADdvwAA3b9AAN2/gADdwAAA3cBAAN3fAADd34AA3eAAAN3ggADd4UAA3eGAAN3hwADd4gAA3eJAAN3iwADd40AA3eOAAN3jwADd5EAA3eSAAN4DQADeA8AA3gRAAN4EwADeBYAA3gXAAN4GAADeBkAA3gaAAN4HAADeB4AA3gfAAN4IAADeCIAA3gjAAN4bAADeJAAA3i3AAN42wADeN4AA3jgAAN44gADeOQAA3jmAAN46AADeOkAA3jsAAN5BQADeSIAA3kkAAN5JgADeSgAA3kqAAN5LAADeS4AA3kwAAN5TQADeVAAA3lTAAN5VgADeVkAA3lcAAN5XwADeWIAA3lkAAN53wADeeEAA3njAAN55QADeegAA3npAAN56gADeesAA3nsAAN57gADefAAA3nxAAN58gADefQAA3n1AAN6cAADenIAA3p0AAN6dgADenkAA3p6AAN6ewADenwAA3p9AAN6fwADeoEAA3qCAAN6gwADeoUAA3qGAAN7AQADewMAA3sFAAN7BwADewoAA3sLAAN7DAADew0AA3sOAAN7EAADexIAA3sTAAN7FAADexYAA3sXAAN7kgADe5QAA3uXAAN7mQADe5wAA3udAAN7ngADe58AA3ugAAN7ogADe6QAA3ulAAN7pgADe6gAA3upAAN8JAADfCYAA3woAAN8KgADfC0AA3wuAAN8LwADfDAAA3wxAAN8MwADfDUAA3w2AAN8NwADfDkAA3w6AAN8tQADfLcAA3y5AAN8uwADfL4AA3y/AAN8wAADfMEAA3zCAAN8xAADfMYAA3zHAAN8yAADfMoAA3zLAAN9RgADfUgAA31KAAN9TAADfU8AA31QAAN9UQADfVIAA31TAAN9VQADfVcAA31YAAN9WQADfVsAA31cAAN97wADfhIAA34yAAN+UgADflQAA35WAAN+WAADfloAA35dAAN+XgADfl8AA35iAAN+YwADfmUAA35mAAN+aAADfmsAA35sAAN+bQADfnAAA35xAAN+dgADfo8AA36YAAN+mgADfpwAA36lAAN+qAADfqsAA36tAAN+9gADfxoAA39BAAN/ZQADf2gAA39qAAN/bAADf24AA39wAAN/cgADf3MAA392AAN/jwADf7AAA3+yAAN/tAADf7YAA3+4AAN/ugADf7wAA3++AAN/wAADf+EAA3/kAAN/5wADf+oAA3/tAAN/8AADf/MAA3/2AAN/+QADf/sAA4B2AAOAeAADgHoAA4B8AAOAfwADgIAAA4CBAAOAggADgIMAA4CFAAOAhwADgIgAA4CJAAOAiwADgIwAA4EHAAOBCQADgQsAA4ENAAOBEAADgREAA4ESAAOBEwADgRQAA4EWAAOBGAADgRkAA4EaAAOBHAADgR0AA4GYAAOBmgADgZ0AA4GfAAOBogADgaMAA4GkAAOBpQADgaYAA4GoAAOBqgADgasAA4GsAAOBrgADga8AA4HIAAOByQADgcoAA4HMAAOCRwADgkkAA4JLAAOCTQADglAAA4JRAAOCUgADglMAA4JUAAOCVgADglgAA4JZAAOCWgADglwAA4JdAAOC2AADgtoAA4LcAAOC3gADguEAA4LiAAOC4wADguQAA4LlAAOC5wADgukAA4LqAAOC6wADgu0AA4LuAAODaQADg2sAA4NtAAODbwADg3IAA4NzAAODdAADg3UAA4N2AAODeAADg3oAA4N7AAODfAADg34AA4N/AAOD+gADg/wAA4P+AAOEAAADhAMAA4QEAAOEBQADhAYAA4QHAAOECQADhAsAA4QMAAOEDQADhA8AA4QQAAOEiwADhI0AA4SPAAOEkQADhJQAA4SVAAOElgADhJcAA4SYAAOEmgADhJwAA4SdAAOEngADhKAAA4ShAAOE6gADhQ4AA4U1AAOFWQADhVwAA4VeAAOFYAADhWIAA4VkAAOFZgADhWcAA4VqAAOFgwADhaAAA4WiAAOFpAADhaYAA4WoAAOFqgADhawAA4WuAAOFywADhc4AA4XRAAOF1AADhdcAA4XaAAOF3QADheAAA4XiAAOGXQADhl8AA4ZhAAOGYwADhmYAA4ZnAAOGaAADhmkAA4ZqAAOGbAADhm4AA4ZvAAOGcAADhnIAA4ZzAAOG7gADhvAAA4byAAOG9AADhvcAA4b4AAOG+QADhvoAA4b7AAOG/QADhv8AA4cAAAOHAQADhwMAA4cEAAOHfwADh4EAA4eDAAOHhQADh4gAA4eJAAOHigADh4sAA4eMAAOHjgADh5AAA4eRAAOHkgADh5QAA4eVAAOIEAADiBIAA4gUAAOIFgADiBkAA4gaAAOIGwADiBwAA4gdAAOIHwADiCEAA4giAAOIIwADiCUAA4gmAAOIoQADiKMAA4ilAAOIpwADiKoAA4irAAOIrAADiK0AA4iuAAOIsAADiLIAA4izAAOItAADiLYAA4i3AAOJMgADiTQAA4k2AAOJOAADiTsAA4k8AAOJPQADiT4AA4k/AAOJQQADiUMAA4lEAAOJRQADiUcAA4lIAAOJwwADicUAA4nHAAOJyQADicwAA4nNAAOJzgADic8AA4nQAAOJ0gADidQAA4nVAAOJ1gADidgAA4nZAAOJ6gADiesAA4ntAAOKaAADimoAA4psAAOKbgADinEAA4pyAAOKcwADinQAA4p1AAOKdwADinoAA4p7AAOKfAADin4AA4p/AAOK+gADivwAA4r+AAOLAAADiwMAA4sEAAOLBQADiwYAA4sHAAOLCQADiwwAA4sNAAOLDgADixAAA4sRAAOLjAADi44AA4uRAAOLkwADi5YAA4uXAAOLmAADi5kAA4uaAAOLnAADi58AA4ugAAOLoQADi6MAA4ukAAOMNwADjFoAA4x6AAOMmgADjJwAA4yeAAOMoAADjKIAA4ylAAOMpgADjKcAA4yqAAOMqwADjK0AA4yuAAOMsAADjLMAA4y0AAOMtQADjLgAA4y5AAOMvgADjNcAA4zgAAOM4gADjOQAA4ztAAOM8AADjPMAA4z1AAONPgADjWIAA42JAAONrQADjbAAA42yAAONtAADjbYAA424AAONugADjbsAA42+AAON1wADjfgAA436AAON/AADjf4AA44AAAOOAgADjgQAA44GAAOOCAADjikAA44sAAOOLwADjjIAA441AAOOOAADjjsAA44+AAOOQQADjkMAA46+AAOOwAADjsIAA47EAAOOxwADjsgAA47JAAOOygADjssAA47NAAOOzwADjtAAA47RAAOO0wADjtQAA49PAAOPUQADj1MAA49VAAOPWAADj1kAA49aAAOPWwADj1wAA49eAAOPYAADj2EAA49iAAOPZAADj2UAA4/gAAOP4gADj+UAA4/nAAOP6gADj+sAA4/sAAOP7QADj+4AA4/wAAOP8gADj/MAA4/0AAOP9gADj/cAA5AQAAOQEQADkBIAA5AUAAOQjwADkJEAA5CTAAOQlQADkJgAA5CZAAOQmgADkJsAA5CcAAOQngADkKAAA5ChAAOQogADkKQAA5ClAAORIAADkSIAA5EkAAORJgADkSkAA5EqAAORKwADkSwAA5EtAAORLwADkTEAA5EyAAORMwADkTUAA5E2AAORsQADkbMAA5G1AAORtwADkboAA5G7AAORvAADkb0AA5G+AAORwAADkcIAA5HDAAORxAADkcYAA5HHAAOSQgADkkQAA5JGAAOSSAADkksAA5JMAAOSTQADkk4AA5JPAAOSUQADklMAA5JUAAOSVQADklcAA5JYAAOS0wADktUAA5LXAAOS2QADktwAA5LdAAOS3gADkt8AA5LgAAOS4gADkuQAA5LlAAOS5gADkugAA5LpAAOTMgADk1YAA5N9AAOToQADk6QAA5OmAAOTqAADk6oAA5OsAAOTrgADk68AA5OyAAOTywADk+gAA5PqAAOT7AADk+4AA5PwAAOT8gADk/QAA5P2AAOUEwADlBYAA5QZAAOUHAADlB8AA5QiAAOUJQADlCgAA5QqAAOUpQADlKcAA5SpAAOUqwADlK4AA5SvAAOUsAADlLEAA5SyAAOUtAADlLYAA5S3AAOUuAADlLoAA5S7AAOVNgADlTgAA5U6AAOVPAADlT8AA5VAAAOVQQADlUIAA5VDAAOVRQADlUcAA5VIAAOVSQADlUsAA5VMAAOVxwADlckAA5XLAAOVzQADldAAA5XRAAOV0gADldMAA5XUAAOV1gADldgAA5XZAAOV2gADldwAA5XdAAOWWAADlloAA5ZdAAOWXwADlmIAA5ZjAAOWZAADlmUAA5ZmAAOWaAADlmoAA5ZrAAOWbAADlm4AA5ZvAAOW6gADluwAA5buAAOW8AADlvMAA5b0AAOW9QADlvYAA5b3AAOW+QADlvsAA5b8AAOW/QADlv8AA5cAAAOXewADl30AA5d/AAOXgQADl4QAA5eFAAOXhgADl4cAA5eIAAOXigADl4wAA5eNAAOXjgADl5AAA5eRAAOYDAADmA4AA5gQAAOYEgADmBUAA5gWAAOYFwADmBgAA5gZAAOYGwADmB0AA5geAAOYHwADmCEAA5giAAOYtQADmNgAA5j4AAOZGAADmRoAA5kcAAOZHgADmSAAA5kjAAOZJAADmSUAA5koAAOZKQADmSsAA5ksAAOZLgADmTEAA5kyAAOZMwADmTYAA5k3AAOZPAADmVUAA5leAAOZYAADmWIAA5lrAAOZbgADmXEAA5lzAAOZvAADmeAAA5oHAAOaKwADmi4AA5owAAOaMgADmjQAA5o2AAOaOAADmjkAA5o8AAOaVQADmnYAA5p4AAOaegADmnwAA5p+AAOagAADmoIAA5qEAAOahgADmqcAA5qqAAOarQADmrAAA5qzAAOatgADmrkAA5q8AAOavwADmsEAA5s8AAObPgADm0AAA5tCAAObRQADm0YAA5tHAAObSAADm0kAA5tLAAObTQADm04AA5tPAAObUQADm1IAA5vNAAObzwADm9EAA5vTAAOb1gADm9cAA5vYAAOb2QADm9oAA5vcAAOb3gADm98AA5vgAAOb4gADm+MAA5xeAAOcYAADnGMAA5xlAAOcaAADnGkAA5xqAAOcawADnGwAA5xuAAOccAADnHEAA5xyAAOcdAADnHUAA5yOAAOcjwADnJAAA5ySAAOdDQADnQ8AA50RAAOdEwADnRYAA50XAAOdGAADnRkAA50aAAOdHAADnR4AA50fAAOdIAADnSIAA50jAAOdngADnaAAA52iAAOdpAADnacAA52oAAOdqQADnaoAA52rAAOdrQADna8AA52wAAOdsQADnbMAA520AAOeLwADnjEAA54zAAOeNQADnjgAA545AAOeOgADnjsAA548AAOePgADnkAAA55BAAOeQgADnkQAA55FAAOewAADnsIAA57EAAOexgADnskAA57KAAOeywADnswAA57NAAOezwADntEAA57SAAOe0wADntUAA57WAAOfUQADn1MAA59VAAOfVwADn1oAA59bAAOfXAADn10AA59eAAOfYAADn2IAA59jAAOfZAADn2YAA59nAAOfsAADn9QAA5/7AAOgHwADoCIAA6AkAAOgJgADoCgAA6AqAAOgLAADoC0AA6AwAAOgSQADoGYAA6BoAAOgagADoGwAA6BuAAOgcAADoHIAA6B0AAOgkQADoJQAA6CXAAOgmgADoJ0AA6CgAAOgowADoKYAA6CoAAOhIwADoSUAA6EnAAOhKQADoSwAA6EtAAOhLgADoS8AA6EwAAOhMgADoTQAA6E1AAOhNgADoTgAA6E5AAOhtAADobYAA6G4AAOhugADob0AA6G+AAOhvwADocAAA6HBAAOhwwADocUAA6HGAAOhxwADockAA6HKAAOiRQADokcAA6JJAAOiSwADok4AA6JPAAOiUAADolEAA6JSAAOiVAADolYAA6JXAAOiWAADoloAA6JbAAOi1gADotgAA6LbAAOi3QADouAAA6LhAAOi4gADouMAA6LkAAOi5gADougAA6LpAAOi6gADouwAA6LtAAOjaAADo2oAA6NsAAOjbgADo3EAA6NyAAOjcwADo3QAA6N1AAOjdwADo3kAA6N6AAOjewADo30AA6N+AAOj+QADo/sAA6P9AAOj/wADpAIAA6QDAAOkBAADpAUAA6QGAAOkCAADpAoAA6QLAAOkDAADpA4AA6QPAAOkigADpIwAA6SOAAOkkAADpJMAA6SUAAOklQADpJYAA6SXAAOkmQADpJsAA6ScAAOknQADpJ8AA6SgAAOlMwADpVYAA6V2AAOllgADpZgAA6WaAAOlnAADpZ4AA6WhAAOlogADpaMAA6WmAAOlpwADpakAA6WqAAOlrAADpa8AA6WwAAOlsQADpbQAA6W1AAOlugADpdMAA6XcAAOl3gADpeAAA6XpAAOl7AADpe8AA6XxAAOmOgADpl4AA6aFAAOmqQADpqwAA6auAAOmsAADprIAA6a0AAOmtgADprcAA6a6AAOm0wADpvQAA6b2AAOm+AADpvoAA6b8AAOm/gADpwAAA6cCAAOnBAADpyUAA6coAAOnKwADpy4AA6cxAAOnNAADpzcAA6c6AAOnPQADpz8AA6e6AAOnvAADp74AA6fAAAOnwwADp8QAA6fFAAOnxgADp8cAA6fJAAOnywADp8wAA6fNAAOnzwADp9AAA6hLAAOoTQADqE8AA6hRAAOoVAADqFUAA6hWAAOoVwADqFgAA6haAAOoXAADqF0AA6heAAOoYAADqGEAA6jcAAOo3gADqOEAA6jjAAOo5gADqOcAA6joAAOo6QADqOoAA6jsAAOo7gADqO8AA6jwAAOo8gADqPMAA6kMAAOpDQADqQ4AA6kQAAOpiwADqY0AA6mPAAOpkQADqZQAA6mVAAOplgADqZcAA6mYAAOpmgADqZwAA6mdAAOpngADqaAAA6mhAAOqHAADqh4AA6ogAAOqIgADqiUAA6omAAOqJwADqigAA6opAAOqKwADqi0AA6ouAAOqLwADqjEAA6oyAAOqrQADqq8AA6qxAAOqswADqrYAA6q3AAOquAADqrkAA6q6AAOqvAADqr4AA6q/AAOqwAADqsIAA6rDAAOrPgADq0AAA6tCAAOrRAADq0cAA6tIAAOrSQADq0oAA6tLAAOrTQADq08AA6tQAAOrUQADq1MAA6tUAAOrzwADq9EAA6vTAAOr1QADq9gAA6vZAAOr2gADq9sAA6vcAAOr3gADq+AAA6vhAAOr4gADq+QAA6vlAAOsLgADrFIAA6x5AAOsnQADrKAAA6yiAAOspAADrKYAA6yoAAOsqgADrKsAA6yuAAOsxwADrOQAA6zmAAOs6AADrOoAA6zsAAOs7gADrPAAA6zyAAOtDwADrRIAA60VAAOtGAADrRsAA60eAAOtIQADrSQAA60mAAOtoQADraMAA62lAAOtpwADraoAA62rAAOtrAADra0AA62uAAOtsAADrbIAA62zAAOttAADrbYAA623AAOuMgADrjQAA642AAOuOAADrjsAA648AAOuPQADrj4AA64/AAOuQQADrkMAA65EAAOuRQADrkcAA65IAAOuwwADrsUAA67HAAOuyQADrswAA67NAAOuzgADrs8AA67QAAOu0gADrtQAA67VAAOu1gADrtgAA67ZAAOvVAADr1YAA69ZAAOvWwADr14AA69fAAOvYAADr2EAA69iAAOvZAADr2YAA69nAAOvaAADr2oAA69rAAOv5gADr+gAA6/qAAOv7AADr+8AA6/wAAOv8QADr/IAA6/zAAOv9QADr/cAA6/4AAOv+QADr/sAA6/8AAOwdwADsHkAA7B7AAOwfQADsIAAA7CBAAOwggADsIMAA7CEAAOwhgADsIgAA7CJAAOwigADsIwAA7CNAAOxCAADsQoAA7EMAAOxDgADsREAA7ESAAOxEwADsRQAA7EVAAOxFwADsRkAA7EaAAOxGwADsR0AA7EeAAOxsQADsdQAA7H0AAOyFAADshYAA7IYAAOyGgADshwAA7IfAAOyIAADsiEAA7IkAAOyJQADsicAA7IoAAOyKgADsi0AA7IuAAOyLwADsjIAA7IzAAOyOAADslEAA7JaAAOyXAADsl4AA7JnAAOyagADsm0AA7JvAAOyuAADstwAA7MDAAOzJwADsyoAA7MsAAOzLgADszAAA7MyAAOzNAADszUAA7M4AAOzUQADs3IAA7N0AAOzdgADs3gAA7N6AAOzfAADs34AA7OAAAOzggADs6MAA7OmAAOzqQADs6wAA7OvAAOzsgADs7UAA7O4AAOzuwADs70AA7Q4AAO0OgADtDwAA7Q+AAO0QQADtEIAA7RDAAO0RAADtEUAA7RHAAO0SQADtEoAA7RLAAO0TQADtE4AA7TJAAO0ywADtM0AA7TPAAO00gADtNMAA7TUAAO01QADtNYAA7TYAAO02gADtNsAA7TcAAO03gADtN8AA7VaAAO1XAADtV8AA7VhAAO1ZAADtWUAA7VmAAO1ZwADtWgAA7VqAAO1bAADtW0AA7VuAAO1cAADtXEAA7WKAAO1iwADtYwAA7WOAAO2CQADtgsAA7YNAAO2DwADthIAA7YTAAO2FAADthUAA7YWAAO2GAADthoAA7YbAAO2HAADth4AA7YfAAO2mgADtpwAA7aeAAO2oAADtqMAA7akAAO2pQADtqYAA7anAAO2qQADtqsAA7asAAO2rQADtq8AA7awAAO3KwADty0AA7cvAAO3MQADtzQAA7c1AAO3NgADtzcAA7c4AAO3OgADtzwAA7c9AAO3PgADt0AAA7dBAAO3vAADt74AA7fAAAO3wgADt8UAA7fGAAO3xwADt8gAA7fJAAO3ywADt80AA7fOAAO3zwADt9EAA7fSAAO4TQADuE8AA7hRAAO4UwADuFYAA7hXAAO4WAADuFkAA7haAAO4XAADuF4AA7hfAAO4YAADuGIAA7hjAAO4rAADuNAAA7j3AAO5GwADuR4AA7kgAAO5IgADuSQAA7kmAAO5KAADuSkAA7ksAAO5RQADuWIAA7lkAAO5ZgADuWgAA7lqAAO5bAADuW4AA7lwAAO5jQADuZAAA7mTAAO5lgADuZkAA7mcAAO5nwADuaIAA7mkAAO6HwADuiEAA7okAAO6JgADuikAA7oqAAO6KwADuiwAA7otAAO6LwADujEAA7oyAAO6MwADujUAA7o2AAO6sQADurMAA7q1AAO6twADuroAA7q7AAO6vAADur0AA7q+AAO6wAADusIAA7rDAAO6xAADusYAA7rHAAO7QgADu0QAA7tGAAO7SAADu0sAA7tMAAO7TQADu04AA7tPAAO7UQADu1MAA7tUAAO7VQADu1cAA7tYAAO70wADu9UAA7vYAAO72gADu90AA7veAAO73wADu+AAA7vhAAO74wADu+UAA7vmAAO75wADu+kAA7vqAAO8ZQADvGcAA7xpAAO8awADvG4AA7xvAAO8cAADvHEAA7xyAAO8dAADvHYAA7x3AAO8eAADvHoAA7x7AAO89gADvPgAA7z6AAO8/AADvP8AA70AAAO9AQADvQIAA70DAAO9BQADvQcAA70IAAO9CQADvQsAA70MAAO9hwADvYkAA72LAAO9jQADvZAAA72RAAO9kgADvZMAA72UAAO9lgADvZgAA72ZAAO9mgADvZwAA72dAAO+MAADvlMAA75zAAO+kwADvpUAA76XAAO+mQADvpsAA76eAAO+nwADvqAAA76jAAO+pAADvqYAA76nAAO+qQADvqwAA76tAAO+rgADvrEAA76yAAO+twADvtAAA77ZAAO+2wADvt0AA77mAAO+6QADvuwAA77uAAO/NwADv1sAA7+CAAO/pgADv6kAA7+rAAO/rQADv68AA7+xAAO/swADv7QAA7+3AAO/0AADv/EAA7/zAAO/9QADv/cAA7/5AAO/+wADv/0AA7//AAPAAQADwCIAA8AlAAPAKAADwCsAA8AuAAPAMQADwDQAA8A3AAPAOgADwDwAA8C3AAPAuQADwLsAA8C9AAPAwAADwMEAA8DCAAPAwwADwMQAA8DGAAPAyAADwMkAA8DKAAPAzAADwM0AA8FIAAPBSgADwUwAA8FOAAPBUQADwVIAA8FTAAPBVAADwVUAA8FXAAPBWQADwVoAA8FbAAPBXQADwV4AA8HZAAPB2wADwd4AA8HgAAPB4wADweQAA8HlAAPB5gADwecAA8HpAAPB6wADwewAA8HtAAPB7wADwfAAA8IJAAPCCgADwgsAA8INAAPCiAADwooAA8KMAAPCjgADwpEAA8KSAAPCkwADwpQAA8KVAAPClwADwpkAA8KaAAPCmwADwp0AA8KeAAPDGQADwxsAA8MdAAPDHwADwyIAA8MjAAPDJAADwyUAA8MmAAPDKAADwyoAA8MrAAPDLAADwy4AA8MvAAPDqgADw6wAA8OuAAPDsAADw7MAA8O0AAPDtQADw7YAA8O3AAPDuQADw7sAA8O8AAPDvQADw78AA8PAAAPEOwADxD0AA8Q/AAPEQQADxEQAA8RFAAPERgADxEcAA8RIAAPESgADxEwAA8RNAAPETgADxFAAA8RRAAPEzAADxM4AA8TQAAPE0gADxNUAA8TWAAPE1wADxNgAA8TZAAPE2wADxN0AA8TeAAPE3wADxOEAA8TiAAPFKwADxU8AA8V2AAPFmgADxZ0AA8WfAAPFoQADxaMAA8WlAAPFpwADxagAA8WrAAPFxAADxeEAA8XjAAPF5QADxecAA8XpAAPF6wADxe0AA8XvAAPGDAADxg8AA8YSAAPGFQADxhgAA8YbAAPGHgADxiEAA8YjAAPGngADxqAAA8aiAAPGpAADxqcAA8aoAAPGqQADxqoAA8arAAPGrQADxq8AA8awAAPGsQADxrMAA8a0AAPHLwADxzEAA8czAAPHNQADxzgAA8c5AAPHOgADxzsAA8c8AAPHPgADx0AAA8dBAAPHQgADx0QAA8dFAAPHwAADx8IAA8fEAAPHxgADx8kAA8fKAAPHywADx8wAA8fNAAPHzwADx9EAA8fSAAPH0wADx9UAA8fWAAPIUQADyFMAA8hVAAPIVwADyFoAA8hbAAPIXAADyF0AA8heAAPIYAADyGIAA8hjAAPIZAADyGYAA8hnAAPI4gADyOQAA8jmAAPI6AADyOsAA8jsAAPI7QADyO4AA8jvAAPI8QADyPMAA8j0AAPI9QADyPcAA8j4AAPJcwADyXUAA8l4AAPJegADyX0AA8l+AAPJfwADyYAAA8mBAAPJgwADyYUAA8mGAAPJhwADyYkAA8mKAAPJqQADyiQAA8omAAPKKAADyioAA8otAAPKLgADyi8AA8owAAPKMQADyjMAA8o1AAPKNgADyjcAA8o5AAPKOgADys0AA8rwAAPLEAADyzAAA8syAAPLNAADyzYAA8s4AAPLOwADyzwAA8s9AAPLQAADy0EAA8tDAAPLRAADy0YAA8tJAAPLSgADy0sAA8tOAAPLTwADy1QAA8ttAAPLdgADy3gAA8t6AAPLgwADy4YAA8uJAAPLiwADy9QAA8v4AAPMHwADzEMAA8xGAAPMSAADzEoAA8xMAAPMTgADzFAAA8xRAAPMVAADzG0AA8yOAAPMkAADzJIAA8yUAAPMlgADzJgAA8yaAAPMnAADzJ4AA8y/AAPMwgADzMUAA8zIAAPMywADzM4AA8zRAAPM1AADzNcAA8zZAAPNVAADzVYAA81YAAPNWgADzV0AA81eAAPNXwADzWAAA81hAAPNYwADzWUAA81mAAPNZwADzWkAA81qAAPN5QADzecAA83pAAPN6wADze4AA83vAAPN8AADzfEAA83yAAPN9AADzfYAA833AAPN+AADzfoAA837AAPOdgADzngAA857AAPOfQADzoAAA86BAAPOggADzoMAA86EAAPOhgADzogAA86JAAPOigADzowAA86NAAPOpgADzqcAA86oAAPOqgADzyUAA88nAAPPKQADzysAA88uAAPPLwADzzAAA88xAAPPMgADzzQAA882AAPPNwADzzgAA886AAPPOwADz7YAA8+4AAPPugADz7wAA8+/AAPPwAADz8EAA8/CAAPPwwADz8UAA8/HAAPPyAADz8kAA8/LAAPPzAAD0EcAA9BJAAP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E3AAEBN8ABATiAAQE5QAEBOgABATrAAQE7gAEBPEABATzAAQFbgAEBXAABAVyAAQFdAAEBXcABAV4AAQFeQAEBXoABAV7AAQFfQAEBX8ABAWAAAQFgQAEBYMABAWEAAQF/wAEBgEABAYDAAQGBQAEBggABAYJAAQGCgAEBgsABAYMAAQGDgAEBhAABAYRAAQGEgAEBhQABAYVAAQGkAAEBpIABAaUAAQGlgAEBpkABAaaAAQGmwAEBpwABAadAAQGnwAEBqEABAaiAAQGowAEBqUABAamAAQHIQAEByMABAcmAAQHKAAEBysABAcsAAQHLQAEBy4ABAcvAAQHMQAEBzMABAc0AAQHNQAEBzcABAc4AAQHswAEB7UABAe3AAQHuQAEB7wABAe9AAQHvgAEB78ABAfAAAQHwgAEB8QABAfFAAQHxgAEB8gABAfJAAQIRAAECEYABAhIAAQISgAECE0ABAhOAAQITwAECFAABAhRAAQIUwAECFUABAhWAAQIVwAECFkABAhaAAQI1QAECNcABAjZAAQI2wAECN4ABAjfAAQI4AAECOEABAjiAAQI5AAECOYABAjnAAQI6AAECOoABAjrAAQJfgAECaEABAnBAAQJ4QAECeMABAnlAAQJ5wAECekABAnsAAQJ7QAECe4ABAnxAAQJ8gAECfQABAn1AAQJ9wAECfoABAn7AAQJ/AAECf8ABAoAAAQKBQAECh4ABAonAAQKKQAECisABAo0AAQKNwAECjoABAo8AAQKhQAECqkABArQAAQK9AAECvcABAr5AAQK+wAECv0ABAr/AAQLAQAECwIABAsFAAQLHgAECz8ABAtBAAQLQwAEC0UABAtHAAQLSQAEC0sABAtNAAQLTwAEC3AABAtzAAQLdgAEC3kABAt8AAQLfwAEC4IABAuFAAQLiAAEC4oABAwFAAQMBwAEDAkABAwLAAQMDgAEDA8ABAwQAAQMEQAEDBIABAwUAAQMFgAEDBcABAwYAAQMGgAEDBsABAyWAAQMmAAEDJoABAycAAQMnwAEDKAABAyhAAQMogAEDKMABAylAAQMpwAEDKgABAypAAQMqwAEDKwABA0nAAQNKQAEDSwABA0uAAQNMQAEDTIABA0zAAQNNAAEDTUABA03AAQNOQAEDToABA07AAQNPQAEDT4ABA1XAAQNWAAEDVkABA1bAAQ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oqQAEKKoABCisAAQorgAEKK8ABCiwAAQosgAEKLMABCjEAAQoxQAEKMcABClCAAQpRAAEKUYABClIAAQpSwAEKUwABClNAAQpTgAEKU8ABClRAAQpUwAEKVQABClVAAQpVwAEKVgABCnTAAQp1QAEKdgABCnaAAQp3QAEKd4ABCnfAAQp4AAEKeEABCnjAAQp5QAEKeYABCnnAAQp6QAEKeoABCoDAAQqBAAEKgUABCoHAAQqggAEKoQABCqGAAQqiAAEKosABCqMAAQqjQAEKo4ABCqPAAQqkQAEKpMABCqUAAQqlQAEKpcABCqYAAQrEwAEKxUABCsYAAQrGgAEKx0ABCseAAQrHwAEKyAABCshAAQrIwAEKyUABCsmAAQrJwAEKykABCsqAAQrOAAEK1EABCteAAQrYQAEK2QABCtnAAQrdAAEK3cABCt6AAQrfQAEK38ABCuDAAQrlQAEK6cABCw6AAQsXQAELH0ABCydAAQsnwAELKEABCyjAAQspQAELKgABCypAAQsqgAELK0ABCyuAAQssAAELLEABCyzAAQstgAELLcABCy4AAQsuwAELLwABCzFAAQs3gAELOcABCzpAAQs6wAELPQABCz3AAQs+gAELPwABC1FAAQtaQAELZAABC20AAQttwAELbkABC27AAQtvQAELb8ABC3BAAQtwgAELcUABC3eAAQt/wAELgEABC4DAAQuBQAELgcABC4JAAQuCwAELg0ABC4PAAQuMAAELjMABC42AAQuOQAELjwABC4/AAQuQgAELkUABC5IAAQuSgAELsUABC7HAAQuyQAELssABC7OAAQuzwAELtAABC7RAAQu0gAELtQABC7WAAQu1wAELtgABC7aAAQu2wAEL1YABC9YAAQvWgAEL1wABC9fAAQvYAAEL2EABC9iAAQvYwAEL2UABC9nAAQvaAAEL2kABC9rAAQvbAAEL+cABC/pAAQv7AAEL+4ABC/xAAQv8gAEL/MABC/0AAQv9QAEL/cABC/5AAQv+gAEL/sABC/9AAQv/gAEMBcABDAYAAQwGQAEMBsABDCWAAQwmAAEMJoABDCcAAQwnwAEMKAABDChAAQwogAEMKMABDClAAQwpwAEMKgABDCpAAQwqwAEMKwABDEnAAQxKQAEMSsABDEtAAQxMAAEMTEABDEyAAQxMwAEMTQABDE2AAQ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DBwAEQwoABEMLAARDDAAEQw0ABEMOAARDEAAEQxMABEMUAARDFQAEQxcABEMYAARDmwAEQ78ABEPjAAREBgAERC0ABERNAAREdAAERJsABES7AARE3wAERQMABEUFAARFCAAERQoABEUMAARFDgAERREABEUUAARFFgAERRgABEUbAARFHQAERR8ABEUiAARFJQAERSYABEUrAARFRAAERUkABEVLAARFUAAERVMABEVVAARFngAERcIABEXpAARGDQAERhAABEYSAARGFAAERhYABEYYAARGGgAERhsABEYeAARGNwAERlwABEZeAARGYAAERmIABEZkAARGZgAERmgABEZqAARGbAAERm4ABEaTAARGlgAERpkABEacAARGnwAERqIABEalAARGqAAERqsABEauAARGsAAERysABEctAARHMAAERzIABEc1AARHNgAERzcABEc4AARHOQAERzsABEc9AARHPgAERz8ABEdBAARHQgAER1MABEdUAARHVgAER9EABEfTAARH1QAER9cABEfaAARH2wAER9wABEfdAARH3gAER+AABEfiAARH4wAER+QABEfmAARH5wAESGIABEhkAARIZwAESGkABEhsAARIbQAESG4ABEhvAARIcAAESHIABEh0AARIdQAESHYABEh4AARIeQAESIoABEiLAARIjQAESQgABEkKAARJDAAESQ4ABEkRAARJEgAESRMABEkUAARJFQAESRcABEkZAARJGgAESRsABEkdAARJHgAESZkABEmbAARJngAESaAABEmjAARJpAAESaUABEmmAARJpwAESakABEmrAARJrAAESa0ABEmvAARJsAAEScEABEnCAARJxAAESj8ABEpBAARKQwAESkUABEpIAARKSQAESkoABEpLAARKTAAESk4ABEpQAARKUQAESlIABEpUAARKVQAEStAABErSAARK1QAEStcABEraAARK2wAEStwABErdAARK3gAESuAABEriAARK4wAESuQABErmAARK5wAESwAABEsBAARLAgAESwQABEt/AARLgQAES4MABEuFAARLiAAES4kABEuKAARLiwAES4wABEuOAARLkAAES5EABEuSAARLlAAES5UABEwQAARMEgAETBUABEwXAARMGgAETBsABEwcAARMHQAETB4ABEwgAARMIgAETCMABEwkAARMJgAETCcABEw5AARMUgAETJUABEyYAARMmwAETJ4ABEyhAARMpAAETKcABEyqAARMrQAETLAABEyzAARMtgAETLkABEy8AARMvwAETMIABEzFAARNCAAETQsABE0OAARNEQAETRQABE0XAARNGgAETR0ABE0gAARNIwAETSYABE0pAARNLAAETS8ABE0yAARNNQAETTgABE06AARNbAAETYgABE2gAARNrgAETbYABE3JAARN1wAETfIABE4KAAROFQAETjAABE5FAAROXgAETmoABE6DAAROkQAETyQABE9HAARPZwAET4cABE+JAARPiwAET40ABE+PAARPkgAET5MABE+UAARPlwAET5gABE+aAARPmwAET50ABE+gAARPoQAET6IABE+lAARPpgAET68ABE/IAARP0QAET9MABE/VAARP3gAET+EABE/kAARP5gAEUC8ABFBTAARQegAEUJ4ABFChAARQowAEUKUABFCnAARQqQAEUKsABFCsAARQrwAEUMgABFDpAARQ6wAEUO0ABFDvAARQ8QAEUPMABFD1AARQ9wAEUPkABFEaAARRHQAEUSAABFEjAARRJgAEUSkABFEsAARRLwAEUTIABFE0AARRrwAEUbEABFGzAARRtQAEUbgABFG5AARRugAEUbsABFG8AARRvgAEUcAABFHBAARRwgAEUcQABFHFAARSQAAEUkIABFJEAARSRgAEUkkABFJKAARSSwAEUkwABFJNAARSTwAEUlEABFJSAARSUwAEUlUABFJWAARS0QAEUtMABFLWAARS2AAEUtsABFLcAARS3QAEUt4ABFLfAARS4QAEUuMABFLkAARS5QAEUucABFLoAARTAQAEUwIABFMDAARTBQAEU4AABFOCAARThAAEU4YABFOJAARTigAEU4sABFOMAARTjQAEU48ABFORAARTkgAEU5MABFOVAARTlgAEVBEABFQTAARUFQAEVBcABFQaAARUGwAEVBwABFQdAARUHgAEVCAABFQiAARUIwAEVCQABFQmAARUJwAEVKIABFSkAARUpgAEVKgABFSrAARUrAAEVK0ABFSuAARUrwAEVLEABFSzAARUtAAEVLUABFS3AARUuAAEVTMABFU1AARVNwAEVTkABFU8AARVPQAEVT4ABFU/AARVQAAEVUIABFVEAARVRQAEVUYABFVIAARVSQAEVcQABFXGAARVyAAEVcoABFXNAARVzgAEVc8ABFXQAARV0QAEVdMABFXVAARV1gAEVdcABFXZAARV2gAEViMABFZHAARWbgAEVpIABFaVAARWlwAEVpkABFabAARWnQAEVp8ABFagAARWowAEVrwABFbZAARW2wAEVt0ABFbfAARW4QAEVuMABFblAARW5wAEVwQABFcHAARXCgAEVw0ABFcQAARXEwAEVxYABFcZAARXGwAEV5YABFeYAARXmgAEV5wABFefAARXoAAEV6EABFeiAARXowAEV6UABFenAARXqAAEV6kABFerAARXrAAEWCcABFgpAARYKwAEWC0ABFgwAARYMQAEWDIABFgzAARYNAAEWDYABFg4AARYOQAEWDoABFg8AARYPQAEWLgABFi6AARYvAAEWL4ABFjBAARYwgAEWMMABFjEAARYxQAEWMcABFjJAARYygAEWMsABFjNAARYzgAEWUkABFlLAARZTgAEWVAABFlTAARZVAAEWVUABFlWAARZVwAEWVkABFlbAARZXAAEWV0ABFlfAARZYAAEWdsABFndAARZ3wAEWeEABFnkAARZ5QAEWeYABFnnAARZ6AAEWeoABFnsAARZ7QAEWe4ABFnwAARZ8QAEWmwABFpuAARacAAEWnIABFp1AARadgAEWncABFp4AARaeQAEWnsABFp9AARafgAEWn8ABFqBAARaggAEWv0ABFr/AARbAQAEWwMABFsGAARbBwAEWwgABFsJAARbCgAEWwwABFsOAARbDwAEWxAABFsSAARbEwAEW6YABFvJAARb6QAEXAkABFwLAARcDQAEXA8ABFwRAARcFAAEXBUABFwWAARcGQAEXBoABFwcAARcHQAEXB8ABFwiAARcIwAEXCQABFwnAARcKAAEXDEABFxKAARcUwAEXFUABFxXAARcYAAEXGMABFxmAARcaAAEXLEABFzVAARc/AAEXSAABF0jAARdJQAEXScABF0pAARdKwAEXS0ABF0uAARdMQAEXUoABF1rAARdbQAEXW8ABF1xAARdcwAEXXUABF13AARdeQAEXXsABF2cAARdnwAEXaIABF2lAARdqAAEXasABF2uAARdsQAEXbQABF22AAReMQAEXjMABF41AAReNwAEXjoABF47AARePAAEXj0ABF4+AAReQAAEXkIABF5DAAReRAAEXkYABF5HAARewgAEXsQABF7GAAReyAAEXssABF7MAARezQAEXs4ABF7PAARe0QAEXtMABF7UAARe1QAEXtcABF7YAARfUwAEX1UABF9YAARfWgAEX10ABF9eAARfXwAEX2AABF9hAARfYwAEX2UABF9mAARfZwAEX2kABF9qAARfgwAEX4QABF+FAARfhwAEYAIABGAEAARgBgAEYAgABGALAARgDAAEYA0ABGAOAARgDwAEYBEABGATAARgFAAEYBUABGAXAARgGAAEYJMABGCVAARglwAEYJkABGCcAARgnQAEYJ4ABGCfAARgoAAEYKIABGCkAARgpQAEYKYABGCoAARgqQAEYSQABGEmAARhKAAEYSoABGEtAARhLgAEYS8ABGEwAARhMQAEYTMABGE1AARhNgAEYTcABGE5AARhOgAEYbUABGG3AARhuQAEYbsABGG+AARhvwAEYcAABGHBAARhwgAEYcQABGHGAARhxwAEYcgABGHKAARhywAEYkYABGJIAARiSgAEYkwABGJPAARiUAAEYlEABGJSAARiUwAEYlUABGJXAARiWAAEYlkABGJbAARiXAAEYqUABGLJAARi8AAEYxQABGMXAARjGQAEYxsABGMdAARjHwAEYyEABGMiAARjJQAEYz4ABGNbAARjXQAEY18ABGNhAARjYwAEY2UABGNnAARjaQAEY4YABGOJAARjjAAEY48ABGOSAARjlQAEY5gABGObAARjnQAEZBgABGQaAARkHQAEZB8ABGQiAARkIwAEZCQABGQlAARkJgAEZCgABGQqAARkKwAEZCwABGQuAARkLwAEZKoABGSsAARkrgAEZLAABGSzAARktAAEZLUABGS2AARktwAEZLkABGS7AARkvAAEZL0ABGS/AARkwAAEZTsABGU9AARlPwAEZUEABGVEAARlRQAEZUYABGVHAARlSAAEZUoABGVMAARlTQAEZU4ABGVQAARlUQAEZcwABGXOAARl0QAEZdMABGXWAARl1wAEZdgABGXZAARl2gAEZdwABGXeAARl3wAEZeAABGXiAARl4wAEZl4ABGZgAARmYgAEZmQABGZnAARmaAAEZmkABGZqAARmawAEZm0ABGZvAARmcAAEZnEABGZzAARmdAAEZu8ABGbxAARm8wAEZvUABGb4AARm+QAEZvoABGb7AARm/AAEZv4ABGcAAARnAQAEZwIABGcEAARnBQAEZ4AABGeCAARnhAAEZ4YABGeJAARnigAEZ4sABGeMAARnjQAEZ48ABGeRAARnkgAEZ5MABGeVAARnlgAEaCkABGhMAARobAAEaIwABGiOAARokAAEaJIABGiUAARolwAEaJgABGiZAARonAAEaJ0ABGifAARooAAEaKIABGilAARopgAEaKcABGiqAARoqwAEaLAABGjJAARo0gAEaNQABGjWAARo3wAEaOIABGjlAARo5wAEaTAABGlUAARpewAEaZ8ABGmiAARppAAEaaYABGmoAARpqgAEaawABGmtAARpsAAEackABGnqAARp7AAEae4ABGnwAARp8gAEafQABGn2AARp+AAEafoABGobAARqHgAEaiEABGokAARqJwAEaioABGotAARqMAAEajMABGo1AARqsAAEarIABGq0AARqtgAEarkABGq6AARquwAEarwABGq9AARqvwAEasEABGrCAARqwwAEasUABGrGAARrQQAEa0MABGtFAARrRwAEa0oABGtLAARrTAAEa00ABGtOAARrUAAEa1IABGtTAARrVAAEa1YABGtXAARr0gAEa9QABGvXAARr2QAEa9wABGvdAARr3gAEa98ABGvgAARr4gAEa+QABGvlAARr5gAEa+gABGvpAARsAgAEbAMABGwEAARsBgAEbIEABGyDAARshQAEbIcABGyKAARsiwAEbIwABGyNAARsjgAEbJAABGySAARskwAEbJQABGyWAARslwAEbRIABG0UAARtFgAEbRgABG0bAARtHAAEbR0ABG0eAARtHwAEbSEABG0jAARtJAAEbSUABG0nAARtKAAEbaMABG2lAARtpwAEbakABG2sAARtrQAEba4ABG2vAARtsAAEbbIABG20AARttQAEbbYABG24AARtuQAEbjQABG42AARuOAAEbjoABG49AARuPgAEbj8ABG5AAARuQQAEbkMABG5FAARuRgAEbkcABG5JAARuSgAEbsUABG7HAARuyQAEbssABG7OAARuzwAEbtAABG7RAARu0gAEbtQABG7WAARu1wAEbtgABG7aAARu2wAEbyQABG9IAARvbwAEb5MABG+WAARvmAAEb5oABG+cAARvngAEb6AABG+hAARvpAAEb70ABG/aAARv3AAEb94ABG/gAARv4gAEb+QABG/mAARv6AAEcAUABHAIAARwCwAEcA4ABHARAARwFAAEcBcABHAaAARwHAAEcJcABHCZAARwmwAEcJ0ABHCgAARwoQAEcKIABHCjAARwpAAEcKYABHCoAARwqQAEcKoABHCsAARwrQAEcSgABHEqAARxLAAEcS4ABHExAARxMgAEcTMABHE0AARxNQAEcTcABHE5AARxOgAEcTsABHE9AARxPgAEcbkABHG7AARxvQAEcb8ABHHCAARxwwAEccQABHHFAARxxgAEccgABHHKAARxywAEccwABHHOAARxzwAEckoABHJMAARyTwAEclEABHJUAARyVQAEclYABHJXAARyWAAEcloABHJcAARyXQAEcl4ABHJgAARyYQAEctwABHLeAARy4AAEcuIABHLlAARy5gAEcucABHLoAARy6QAEcusABHLtAARy7gAEcu8ABHLxAARy8gAEc20ABHNvAARzcQAEc3MABHN2AARzdwAEc3gABHN5AARzegAEc3wABHN+AARzfwAEc4AABHOCAARzgwAEc/4ABHQAAAR0AgAEdAQABHQHAAR0CAAEdAkABHQKAAR0CwAEdA0ABHQPAAR0EAAEdBEABHQTAAR0FAAEdKcABHTKAAR06gAEdQoABHUMAAR1DgAEdRAABHUSAAR1FQAEdRYABHUXAAR1GgAEdRsABHUdAAR1HgAEdSAABHUjAAR1JAAEdSUABHUoAAR1KQAEdTIABHVLAAR1VAAEdVYABHVYAAR1YQAEdWQABHVnAAR1aQAEdbIABHXWAAR1/QAEdiEABHYkAAR2JgAEdigABHYqAAR2LAAEdi4ABHYvAAR2MgAEdksABHZsAAR2bgAEdnAABHZyAAR2dAAEdnYABHZ4AAR2egAEdnwABHadAAR2oAAEdqMABHamAAR2qQAEdqwABHavAAR2sgAEdrUABHa3AAR3MgAEdzQABHc2AAR3OAAEdzsABHc8AAR3PQAEdz4ABHc/AAR3QQAEd0MABHdEAAR3RQAEd0cABHdIAAR3wwAEd8UABHfHAAR3yQAEd8wABHfNAAR3zgAEd88ABHfQAAR30gAEd9QABHfVAAR31gAEd9gABHfZAAR4VAAEeFYABHhZAAR4WwAEeF4ABHhfAAR4YAAEeGEABHhiAAR4ZAAEeGYABHhnAAR4aAAEeGoABHhrAAR4hAAEeIUABHiGAAR4iAAEeQMABHkFAAR5BwAEeQkABHkMAAR5DQAEeQ4ABHkPAAR5EAAEeRIABHkUAAR5FQAEeRYABHkYAAR5GQAEeZQABHmWAAR5mAAEeZoABHmdAAR5ngAEeZ8ABHmgAAR5oQAEeaMABHmlAAR5pgAEeacABHmpAAR5qgAEeiUABHonAAR6KQAEeisABHouAAR6LwAEejAABHoxAAR6MgAEejQABHo2AAR6NwAEejgABHo6AAR6OwAEerYABHq4AAR6ugAEerwABHq/AAR6wAAEesEABHrCAAR6wwAEesUABHrHAAR6yAAEeskABHrLAAR6zAAEe0cABHtJAAR7SwAEe00ABHtQAAR7UQAEe1IABHtTAAR7VAAEe1YABHtYAAR7WQAEe1oABHtcAAR7XQAEe6YABHvKAAR78QAEfBUABHwYAAR8GgAEfBwABHweAAR8IAAEfCIABHwjAAR8JgAEfD8ABHxcAAR8XgAEfGAABHxiAAR8ZAAEfGYABHxoAAR8agAEfIcABHyKAAR8jQAEfJAABHyTAAR8lgAEfJkABHycAAR8ngAEfRkABH0bAAR9HQAEfR8ABH0iAAR9IwAEfSQABH0lAAR9JgAEfSgABH0qAAR9KwAEfSwABH0uAAR9LwAEfaoABH2sAAR9rgAEfbAABH2zAAR9tAAEfbUABH22AAR9twAEfbkABH27AAR9vAAEfb0ABH2/AAR9wAAEfjsABH49AAR+PwAEfkEABH5EAAR+RQAEfkYABH5HAAR+SAAEfkoABH5MAAR+TQAEfk4ABH5QAAR+UQAEfswABH7OAAR+0QAEftMABH7WAAR+1wAEftgABH7ZAAR+2gAEftwABH7eAAR+3wAEfuAABH7iAAR+4wAEfuYABH9hAAR/YwAEf2UABH9nAAR/agAEf2sABH9sAAR/bQAEf24ABH9wAAR/cgAEf3MABH90AAR/dgAEf3cABH/yAAR/9AAEf/YABH/4AAR/+wAEf/wABH/9AAR//gAEf/8ABIABAASAAwAEgAQABIAFAASABwAEgAgABICDAASAhQAEgIcABICJAASAjAAEgI0ABICOAASAjwAEgJAABICSAASAlAAEgJUABICWAASAmAAEgJkABIEsAASBTwAEgW8ABIGPAASBkQAEgZMABIGVAASBlwAEgZoABIGbAASBnAAEgZ8ABIGgAASBogAEgaMABIGmAASBqQAEgaoABIGrAASBrgAEga8ABIG4AASB0QAEgdoABIHcAASB3wAEgegABIHrAASB7gAEgfAABII5AASCXQAEgoQABIKoAASCqwAEgq0ABIKvAASCsQAEgrMABIK1AASCtgAEgrkABILSAASC8wAEgvUABIL3AASC+QAEgvsABIL9AASC/wAEgwEABIMDAASDJAAEgycABIMqAASDLQAEgzAABIMzAASDNgAEgzkABIM8AASDPgAEg7kABIO7AASDvQAEg78ABIPCAASDwwAEg8QABIPFAASDxgAEg8gABIPKAASDywAEg8wABIPOAASDzwAEhEoABIRMAASETgAEhFAABIRTAASEVAAEhFUABIRWAASEVwAEhFkABIRbAASEXAAEhF0ABIRfAASEYAAEhNsABITdAASE4AAEhOIABITlAASE5gAEhOcABIToAASE6QAEhOsABITtAASE7gAEhO8ABITxAASE8gAEhQsABIUMAASFDQAEhQ8ABIWKAASFjAAEhY4ABIWQAASFkwAEhZQABIWVAASFlgAEhZcABIWZAASFmwAEhZwABIWdAASFnwAEhaAABIYbAASGHQAEhh8ABIYhAASGJAAEhiUABIYmAASGJwAEhigABIYqAASGLAAEhi0ABIYuAASGMAAEhjEABIasAASGrgAEhrAABIayAASGtQAEhrYABIa3AASGuAAEhrkABIa7AASGvQAEhr4ABIa/AASGwQAEhsIABIc9AASHPwAEh0EABIdDAASHRgAEh0cABIdIAASHSQAEh0oABIdMAASHTgAEh08ABIdQAASHUgAEh1MABIfOAASH0AAEh9IABIfUAASH1wAEh9gABIfZAASH2gAEh9sABIfdAASH3wAEh+AABIfhAASH4wAEh+QABIgtAASIUQAEiHgABIicAASInwAEiKIABIikAASIpgAEiKgABIiqAASIqwAEiK4ABIjHAASI5AAEiOcABIjqAASI7QAEiPAABIjzAASI9gAEiPkABIkWAASJGQAEiRwABIkfAASJIgAEiSUABIkoAASJKwAEiS0ABImoAASJqgAEia0ABImvAASJsgAEibMABIm0AASJtQAEibYABIm4AASJuwAEibwABIm9AASJvwAEicAABIo7AASKPQAEikAABIpCAASKRQAEikYABIpHAASKSAAEikkABIpLAASKTgAEik8ABIpQAASKUgAEilMABIrOAASK0AAEitMABIrVAASK2AAEitkABIraAASK2wAEitwABIreAASK4QAEiuIABIrjAASK5QAEiuYABIthAASLYwAEi2YABItoAASLawAEi2wABIttAASLbgAEi28ABItxAASLdAAEi3UABIt2AASLeAAEi3kABIv0AASL9gAEi/gABIv6AASL/QAEi/4ABIv/AASMAAAEjAEABIwDAASMBgAEjAcABIwIAASMCgAEjAsABIyGAASMiAAEjIoABIyMAASMjwAEjJAABIyRAASMkgAEjJMABIyVAASMmAAEjJkABIyaAASMnAAEjJ0ABI0YAASNGgAEjR0ABI0fAASNIgAEjSMABI0kAASNJQAEjSYABI0oAASNKwAEjSwABI0tAASNLwAEjTAABI3DAASN5gAEjgYABI4mAASOKAAEjioABI4sAASOLgAEjjEABI4yAASOMwAEjjYABI43AASOOQAEjjoABI49AASOQAAEjkEABI5CAASORQAEjkYABI5PAASOaAAEjnEABI5zAASOdgAEjn8ABI6CAASOhQAEjocABI7QAASO9AAEjxsABI8/AASPQgAEj0QABI9GAASPSAAEj0oABI9MAASPTQAEj1AABI9pAASPigAEj4wABI+OAASPkAAEj5IABI+UAASPlgAEj5gABI+aAASPuwAEj74ABI/BAASPxAAEj8cABI/KAASPzQAEj9AABI/TAASP1QAEkFAABJBSAASQVAAEkFYABJBZAASQWgAEkFsABJBcAASQXQAEkF8ABJBhAASQYgAEkGMABJBlAASQZgAEkOEABJDjAASQ5QAEkOcABJDqAASQ6wAEkOwABJDtAASQ7gAEkPAABJDyAASQ8wAEkPQABJD2AASQ9wAEkXIABJF0AASRdwAEkXkABJF8AASRfQAEkX4ABJF/AASRgAAEkYIABJGEAASRhQAEkYYABJGIAASRiQAEkaIABJGjAASRpAAEkaYABJIhAASSIwAEkiUABJInAASSKgAEkisABJIsAASSLQAEki4ABJIwAASSMgAEkjMABJI0AASSNgAEkjcABJKyAASStAAEkrYABJK4AASSuwAEkrwABJK9AASSvgAEkr8ABJLBAASSwwAEksQABJLFAASSxwAEksgABJNDAASTRQAEk0cABJNJAASTTAAEk00ABJNOAASTTwAEk1AABJNSAASTVAAEk1UABJNWAASTWAAEk1kABJPUAAST1gAEk9gABJPaAAST3QAEk94ABJPfAAST4AAEk+EABJPjAAST5QAEk+YABJPnAAST6QAEk+oABJRlAASUZwAElGkABJRrAASUbgAElG8ABJRwAASUcQAElHIABJR0AASUdgAElHcABJR4AASUegAElHsABJTEAASU6AAElQ8ABJUzAASVNgAElTkABJU7AASVPQAElT8ABJVBAASVQgAElUUABJVeAASVewAElX4ABJWBAASVhAAElYcABJWKAASVjQAElZAABJWtAASVsAAElbMABJW2AASVuQAElbwABJW/AASVwgAElcQABJY/AASWQQAElkQABJZGAASWSQAElkoABJZLAASWTAAElk0ABJZPAASWUgAEllMABJZUAASWVgAEllcABJbSAASW1AAEltcABJbZAASW3AAElt0ABJbeAASW3wAEluAABJbiAASW5QAEluYABJbnAASW6QAEluoABJdlAASXZwAEl2oABJdsAASXbwAEl3AABJdxAASXcgAEl3MABJd1AASXeAAEl3kABJd6AASXfAAEl30ABJf4AASX+gAEl/0ABJf/AASYAgAEmAMABJgEAASYBQAEmAYABJgIAASYCwAEmAwABJgNAASYDwAEmBAABJiTAASYtwAEmNsABJj+AASZJQAEmUUABJlsAASZkwAEmbMABJnXAASZ+wAEmf0ABJoAAASaAgAEmgQABJoGAASaCQAEmgwABJoOAASaEAAEmhMABJoVAASaFwAEmhoABJodAASaHgAEmiMABJo8AASaQQAEmkMABJpIAASaSwAEmk0ABJqWAASaugAEmuEABJsFAASbCAAEmwoABJsMAASbDgAEmxAABJsSAASbEwAEmxYABJsvAASbVAAEm1YABJtYAASbWgAEm1wABJteAASbYAAEm2IABJtkAASbZgAEm4sABJuOAASbkQAEm5QABJuXAASbmgAEm50ABJugAASbowAEm6YABJuoAAScIwAEnCUABJwoAAScKgAEnC0ABJwuAAScLwAEnDAABJwxAAScMwAEnDUABJw2AAScNwAEnDkABJw6AAScSwAEnEwABJxOAAScyQAEnMsABJzNAASczwAEnNIABJzTAASc1AAEnNUABJzWAASc2AAEnNoABJzbAASc3AAEnN4ABJzfAASdWgAEnVwABJ1fAASdYQAEnWQABJ1lAASdZgAEnWcABJ1oAASdagAEnWwABJ1tAASdbgAEnXAABJ1xAASdggAEnYMABJ2FAASeAAAEngIABJ4EAASeBgAEngkABJ4KAASeCwAEngwABJ4NAASeDwAEnhEABJ4SAASeEwAEnhUABJ4WAASekQAEnpMABJ6WAASemAAEnpsABJ6cAASenQAEnp4ABJ6fAASeoQAEnqMABJ6kAASepQAEnqcABJ6oAASeuQAEnroABJ68AASfNwAEnzkABJ87AASfPQAEn0AABJ9BAASfQgAEn0MABJ9EAASfRgAEn0gABJ9JAASfSgAEn0wABJ9NAASfyAAEn8oABJ/NAASfzwAEn9IABJ/TAASf1AAEn9UABJ/WAASf2AAEn9oABJ/bAASf3AAEn94ABJ/fAASf+AAEn/kABJ/6AASf/AAEoHcABKB5AASgewAEoH0ABKCAAASggQAEoIIABKCDAASghAAEoIYABKCIAASgiQAEoIoABKCMAASgjQAEoQgABKEKAAShDQAEoQ8ABKESAAShEwAEoRQABKEVAAShFgAEoRgABKEaAAShGwAEoRwABKEeAAShHwAEoTYABKFPAAShYAAEoWMABKFmAAShaQAEoWwABKF9AAShgAAEoYMABKGGAAShiQAEoYsABKGdAAShrAAEocEABKHYAASiawAEoo4ABKKuAASizgAEotAABKLSAASi1AAEotYABKLZAASi2gAEotsABKLeAASi3wAEouEABKLiAASi5QAEougABKLpAASi6gAEou0ABKLuAASi8wAEowwABKMVAASjFwAEoxoABKMjAASjJgAEoykABKMrAASjdAAEo5gABKO/AASj4wAEo+YABKPoAASj6gAEo+wABKPuAASj8AAEo/EABKP0AASkDQAEpC4ABKQwAASkMgAEpDQABKQ2AASkOAAEpDoABKQ8AASkPgAEpF8ABKRiAASkZQAEpGgABKRrAASkbgAEpHEABKR0AASkdwAEpHkABKT0AASk9gAEpPgABKT6AASk/QAEpP4ABKT/AASlAAAEpQEABKUDAASlBQAEpQYABKUHAASlCQAEpQoABKWFAASlhwAEpYkABKWLAASljgAEpY8ABKWQAASlkQAEpZIABKWUAASllgAEpZcABKWYAASlmgAEpZsABKYWAASmGAAEphsABKYdAASmIAAEpiEABKYiAASmIwAEpiQABKYmAASmKAAEpikABKYqAASmLAAEpi0ABKZGAASmRwAEpkgABKZKAASmxQAEpscABKbJAASmywAEps4ABKbPAASm0AAEptEABKbSAASm1AAEptYABKbXAASm2AAEptoABKbbAASnVgAEp1gABKdaAASnXAAEp18ABKdgAASnYQAEp2IABKdjAASnZQAEp2cABKdoAASnaQAEp2sABKdsAASn5wAEp+kABKfrAASn7QAEp/AABKfxAASn8gAEp/MABKf0AASn9gAEp/gABKf5AASn+gAEp/wABKf9AASoeAAEqHoABKh8AASofgAEqIEABKiCAASogwAEqIQABKiFAASohwAEqIkABKiKAASoiwAEqI0ABKiOAASpCQAEqQsABKkNAASpDwAEqRIABKkTAASpFAAEqRUABKkWAASpGAAEqRoABKkbAASpHAAEqR4ABKkfAASpaAAEqYwABKmzAASp1wAEqdoABKndAASp3wAEqeEABKnjAASp5QAEqeYABKnpAASqAgAEqh8ABKoiAASqJQAEqigABKorAASqLgAEqjEABKo0AASqUQAEqlQABKpXAASqWgAEql0ABKpgAASqYwAEqmYABKpoAASq4wAEquUABKroAASq6gAEqu0ABKruAASq7wAEqvAABKrxAASq8wAEqvYABKr3AASq+AAEqvoABKr7AASrdgAEq3gABKt7AASrfQAEq4AABKuBAASrggAEq4MABKuEAASrhgAEq4kABKuKAASriwAEq40ABKuOAASsCQAErAsABKwOAASsEAAErBMABKwUAASsFQAErBYABKwXAASsGQAErBwABKwdAASsHgAErCAABKwhAASsnAAErJ4ABKyhAASsowAErKYABKynAASsqAAErKkABKyqAASsrAAErK8ABKywAASssQAErLMABKy0AAStNwAErVsABK1/AAStogAErckABK3pAASuEAAErjcABK5XAASuewAErp8ABK6hAASupAAErqYABK6oAASuqgAErq0ABK6wAASusgAErrQABK63AASuuQAErrsABK6+AASuwQAErsIABK7HAASu4AAEruUABK7nAASu7AAEru8ABK7xAASvOgAEr14ABK+FAASvqQAEr6wABK+uAASvsAAEr7IABK+0AASvtgAEr7cABK+6AASv0wAEr/gABK/6AASv/AAEr/4ABLAAAASwAgAEsAQABLAGAASwCAAEsAoABLAvAASwMgAEsDUABLA4AASwOwAEsD4ABLBBAASwRAAEsEcABLBKAASwTAAEsMcABLDJAASwzAAEsM4ABLDRAASw0gAEsNMABLDUAASw1QAEsNcABLDZAASw2gAEsNsABLDdAASw3gAEsO8ABLDwAASw8gAEsW0ABLFvAASxcQAEsXMABLF2AASxdwAEsXgABLF5AASxegAEsXwABLF+AASxfwAEsYAABLGCAASxgwAEsf4ABLIAAASyAwAEsgUABLIIAASyCQAEsgoABLILAASyDAAEsg4ABLIQAASyEQAEshIABLIUAASyFQAEsiYABLIrAASyLgAEsjAABLJBAASyUgAEslUABLJYAASyWwAEsl4ABLJgAASyewAEsocABLKTAASyoAAEsxsABLMdAASzHwAEsyEABLMkAASzJQAEsyYABLMnAASzKAAEsyoABLMsAASzLQAEsy4ABLMwAASzMQAEs6wABLOuAASzsQAEs7MABLO2AASztwAEs7gABLO5AASzugAEs7wABLO+AASzvwAEs8AABLPCAASzwwAEs9QABLPVAASz1wAEtFIABLRUAAS0VgAEtFgABLRbAAS0XAAEtF0ABLReAAS0XwAEtGEABLRjAAS0ZAAEtGUABLRnAAS0aAAEtOMABLTlAAS06AAEtOoABLTtAAS07gAEtO8ABLTwAAS08QAEtPMABLT1AAS09gAEtPcABLT5AAS0+gAEtRMABLUUAAS1FQAEtRcABLWSAAS1lAAEtZYABLWYAAS1mwAEtZwABLWdAAS1ngAEtZ8ABLWhAAS1owAEtaQABLWlAAS1pwAEtagABLYjAAS2JQAEtigABLYqAAS2LQAEti4ABLYvAAS2MAAEtjEABLYzAAS2NQAEtjYABLY3AAS2OQAEtjoABLZJAAS2YgAEtrUABLa4AAS2uwAEtr4ABLbBAAS2xAAEtscABLbKAAS2zQAEttAABLbTAAS21gAEttkABLbcAAS23wAEtuIABLblAAS26AAEtusABLbuAAS28QAEt0QABLdHAAS3SgAEt00ABLdQAAS3UwAEt1YABLdZAAS3XAAEt18ABLdiAAS3ZQAEt2gABLdrAAS3bgAEt3EABLd0AAS3dwAEt3oABLd9AAS3gAAEt4IABLeUAAS3qQAEt7AABLfEAAS35QAEt/kABLgNAAS4LAAEuDkABLhLAAS4VwAEuIUABLiSAAS4rQAEuMgABLjVAAS46AAEuPQABLkKAAS5JAAEubcABLnaAAS5+gAEuhoABLocAAS6HgAEuiAABLoiAAS6JQAEuiYABLonAAS6KgAEuisABLotAAS6LgAEujEABLo0AAS6NQAEujYABLo5AAS6OgAEukMABLpcAAS6ZQAEumcABLpqAAS6cwAEunYABLp5AAS6ewAEusQABLroAAS7DwAEuzMABLs2AAS7OAAEuzoABLs8AAS7PgAEu0AABLtBAAS7RAAEu10ABLt+AAS7gAAEu4IABLuEAAS7hgAEu4gABLuKAAS7jAAEu44ABLuvAAS7sgAEu7UABLu4AAS7uwAEu74ABLvBAAS7xAAEu8cABLvJAAS8RAAEvEYABLxIAAS8SgAEvE0ABLxOAAS8TwAEvFAABLxRAAS8UwAEvFUABLxWAAS8VwAEvFkABLxaAAS81QAEvNcABLzZAAS82wAEvN4ABLzfAAS84AAEvOEABLziAAS85AAEvOYABLznAAS86AAEvOoABLzrAAS9ZgAEvWgABL1rAAS9bQAEvXAABL1xAAS9cgAEvXMABL10AAS9dgAEvXgABL15AAS9egAEvXwABL19AAS9lgAEvZcABL2YAAS9mgAEvhUABL4XAAS+GQAEvhsABL4eAAS+HwAEviAABL4hAAS+IgAEviQABL4mAAS+JwAEvigABL4qAAS+KwAEvqYABL6oAAS+qgAEvqwABL6vAAS+sAAEvrEABL6yAAS+swAEvrUABL63AAS+uAAEvrkABL67AAS+vAAEvzcABL85AAS/OwAEvz0ABL9AAAS/QQAEv0IABL9DAAS/RAAEv0YABL9IAAS/SQAEv0oABL9MAAS/TQAEv8gABL/KAAS/zAAEv84ABL/RAAS/0gAEv9MABL/UAAS/1QAEv9cABL/ZAAS/2gAEv9sABL/dAAS/3gAEwFkABMBbAATAXQAEwF8ABMBiAATAYwAEwGQABMBlAATAZgAEwGgABMBqAATAawAEwGwABMBuAATAbwAEwLgABMDcAATBAwAEwScABMEqAATBLQAEwS8ABMExAATBMwAEwTUABME2AATBOQAEwVIABMFvAATBcgAEwXUABMF4AATBewAEwX4ABMGBAATBhAAEwaEABMGkAATBpwAEwaoABMGtAATBsAAEwbMABMG2AATBuAAEwjMABMI1AATCOAAEwjoABMI9AATCPgAEwj8ABMJAAATCQQAEwkMABMJGAATCRwAEwkgABMJKAATCSwAEwsYABMLIAATCywAEws0ABMLQAATC0QAEwtIABMLTAATC1AAEwtYABMLZAATC2gAEwtsABMLdAATC3gAEw1kABMNbAATDXgAEw2AABMNjAATDZAAEw2UABMNmAATDZwAEw2kABMNsAATDbQAEw24ABMNwAATDcQAEw+wABMPuAATD8QAEw/MABMP2AATD9wAEw/gABMP5AATD+gAEw/wABMP/AATEAAAExAEABMQDAATEBAAExH8ABMSBAATEgwAExIUABMSIAATEiQAExIoABMSLAATEjAAExI4ABMSRAATEkgAExJMABMSVAATElgAExREABMUTAATFFQAExRcABMUaAATFGwAExRwABMUdAATFHgAExSAABMUjAATFJAAExSUABMUnAATFKAAExaMABMWlAATFqAAExaoABMWtAATFrgAExa8ABMWwAATFsQAExbMABMW2AATFtwAExbgABMW6AATFuwAExk4ABMZxAATGkQAExrEABMazAATGtQAExrcABMa5AATGvAAExr0ABMa+AATGwQAExsIABMbEAATGxQAExscABMbKAATGywAExswABMbPAATG0AAExtUABMbuAATG9wAExvkABMb7AATHBAAExwcABMcKAATHDAAEx1UABMd5AATHoAAEx8QABMfHAATHyQAEx8sABMfNAATHzwAEx9EABMfSAATH1QAEx+4ABMgPAATIEQAEyBMABMgVAATIFwAEyBkABMgbAATIHQAEyB8ABMhAAATIQwAEyEYABMhJAATITAAEyE8ABMhSAATIVQAEyFgABMhaAATI1QAEyNcABMjZAATI2wAEyN4ABMjfAATI4AAEyOEABMjiAATI5AAEyOYABMjnAATI6AAEyOoABMjrAATJZgAEyWgABMlqAATJbAAEyW8ABMlwAATJcQAEyXIABMlzAATJdQAEyXcABMl4AATJeQAEyXsABMl8AATJ9wAEyfkABMn8AATJ/gAEygEABMoCAATKAwAEygQABMoFAATKBwAEygkABMoKAATKCwAEyg0ABMoOAATKJwAEyigABMopAATKKwAEyqYABMqoAATKqgAEyqwABMqvAATKsAAEyrEABMqyAATKswAEyrUABMq3AATKuAAEyrkABMq7AATKvAAEyzcABMs5AATLOwAEyz0ABMtAAATLQQAEy0IABMtDAATLRAAEy0YABMtIAATLSQAEy0oABMtMAATLTQAEy8gABMvKAATLzAAEy84ABMvRAATL0gAEy9MABMvUAATL1QAEy9cABMvZAATL2gAEy9sABMvdAATL3gAEzFkABMxbAATMXQAEzF8ABMxiAATMYwAEzGQABMxlAATMZgAEzGgABMxqAATMawAEzGwABMxuAATMbwAEzOoABMzsAATM7gAEzPAABMzzAATM9AAEzPUABMz2AATM9wAEzPkABMz7AATM/AAEzP0ABMz/AATNAAAEzUkABM1tAATNlAAEzbgABM27AATNvQAEzb8ABM3BAATNwwAEzcUABM3GAATNyQAEzeIABM3/AATOAQAEzgMABM4FAATOBwAEzgkABM4LAATODQAEzioABM4tAATOMAAEzjMABM42AATOOQAEzjwABM4/AATOQQAEzrwABM6+AATOwAAEzsIABM7FAATOxgAEzscABM7IAATOyQAEzssABM7NAATOzgAEzs8ABM7RAATO0gAEz00ABM9PAATPUQAEz1MABM9WAATPVwAEz1gABM9ZAATPWgAEz1wABM9eAATPXwAEz2AABM9iAATPYwAEz94ABM/gAATP4gAEz+QABM/nAATP6AAEz+kABM/qAATP6wAEz+0ABM/vAATP8AAEz/EABM/zAATP9AAE0G8ABNBxAATQdAAE0HYABNB5AATQegAE0HsABNB8AATQfQAE0H8ABNCBAATQggAE0IMABNCFAATQhgAE0QEABNEDAATRBQAE0QcABNEKAATRCwAE0QwABNENAATRDgAE0RAABNESAATREwAE0RQABNEWAATRFwAE0ZIABNGUAATRlgAE0ZgABNGbAATRnAAE0Z0ABNGeAATRnwAE0aEABNGjAATRpAAE0aUABNGnAATRqAAE0iMABNIlAATSJwAE0ikABNIsAATSLQAE0i4ABNIvAATSMAAE0jIABNI0AATSNQAE0jYABNI4AATSOQAE0swABNLvAATTDwAE0y8ABNMxAATTMwAE0zUABNM3AATTOgAE0zsABNM8AATTPwAE00AABNNCAATTQwAE00UABNNIAATTSQAE00oABNNNAATTTgAE01MABNNsAATTdQAE03cABNN5AATTggAE04UABNOIAATTigAE09MABNP3AATUHgAE1EIABNRFAATURwAE1EkABNRLAATUTQAE1E8ABNRQAATUUwAE1GwABNSNAATUjwAE1JEABNSTAATUlQAE1JcABNSZAATUmwAE1J0ABNS+AATUwQAE1MQABNTHAATUygAE1M0ABNTQAATU0wAE1NYABNTYAATVUwAE1VUABNVXAATVWQAE1VwABNVdAATVXgAE1V8ABNVgAATVYgAE1WQABNVlAATVZgAE1WgABNVpAATV5AAE1eYABNXoAATV6gAE1e0ABNXuAATV7wAE1fAABNXxAATV8wAE1fUABNX2AATV9wAE1fkABNX6AATWdQAE1ncABNZ6AATWfAAE1n8ABNaAAATWgQAE1oIABNaDAATWhQAE1ocABNaIAATWiQAE1osABNaMAATWpQAE1qYABNanAATWqQAE1yQABNcmAATXKAAE1yoABNctAATXLgAE1y8ABNcwAATXMQAE1zMABNc1AATXNgAE1zcABNc5AATXOgAE17UABNe3AATXuQAE17sABNe+AATXvwAE18AABNfBAATXwgAE18QABNfGAATXxwAE18gABNfKAATXywAE2EYABNhIAATYSgAE2EwABNhPAATYUAAE2FEABNhSAATYUwAE2FUABNhXAATYWAAE2FkABNhbAATYXAAE2NcABNjZAATY2wAE2N0ABNjgAATY4QAE2OIABNjjAATY5AAE2OYABNjoAATY6QAE2OoABNjsAATY7QAE2WgABNlqAATZbAAE2W4ABNlxAATZcgAE2XMABNl0AATZdQAE2XcABNl5AATZegAE2XsABNl9AATZfgAE2ccABNnrAATaEgAE2jYABNo5AATaOwAE2j0ABNo/AATaQQAE2kMABNpEAATaRwAE2mAABNp9AATafwAE2oEABNqDAATahQAE2ocABNqJAATaiwAE2qgABNqrAATargAE2rEABNq0AATatwAE2roABNq9AATavwAE2zoABNs8AATbPwAE20EABNtEAATbRQAE20YABNtHAATbSAAE20oABNtMAATbTQAE204ABNtQAATbUQAE21UABNvQAATb0gAE29QABNvWAATb2QAE29oABNvbAATb3AAE290ABNvfAATb4QAE2+IABNvjAATb5QAE2+YABNxhAATcYwAE3GUABNxnAATcagAE3GsABNxsAATcbQAE3G4ABNxwAATccgAE3HMABNx0AATcdgAE3HcABNzyAATc9AAE3PcABNz5AATc/AAE3P0ABNz+AATc/wAE3QAABN0CAATdBAAE3QUABN0GAATdCAAE3QkABN2EAATdhgAE3YgABN2KAATdjQAE3Y4ABN2PAATdkAAE3ZEABN2TAATdlQAE3ZYABN2XAATdmQAE3ZoABN4VAATeFwAE3hkABN4bAATeHgAE3h8ABN4gAATeIQAE3iIABN4kAATeJgAE3icABN4oAATeKgAE3isABN6mAATeqAAE3qoABN6sAATerwAE3rAABN6xAATesgAE3rMABN61AATetwAE3rgABN65AATeuwAE3rwABN9PAATfcgAE35IABN+yAATftAAE37YABN+4AATfugAE370ABN++AATfvwAE38IABN/DAATfxQAE38YABN/JAATfzAAE380ABN/OAATf0QAE39IABN/XAATf8AAE3/kABN/7AATf/gAE4AcABOAKAATgDQAE4A8ABOBYAATgfAAE4KMABODHAATgygAE4MwABODOAATg0AAE4NIABODUAATg1QAE4NgABODxAAThEgAE4RQABOEWAAThGAAE4RoABOEcAAThHgAE4SAABOEiAAThQwAE4UYABOFJAAThTAAE4U8ABOFSAAThVQAE4VgABOFbAAThXQAE4dgABOHaAATh3AAE4d4ABOHhAATh4gAE4eMABOHkAATh5QAE4ecABOHpAATh6gAE4esABOHtAATh7gAE4mkABOJrAATibQAE4m8ABOJyAATicwAE4nQABOJ1AATidgAE4ngABOJ6AATiewAE4nwABOJ+AATifwAE4voABOL8AATi/wAE4wEABOMEAATjBQAE4wYABOMHAATjCAAE4woABOMMAATjDQAE4w4ABOMQAATjEQAE4yoABOMrAATjLAAE4y4ABOOpAATjqwAE460ABOOvAATjsgAE47MABOO0AATjtQAE47YABOO4AATjugAE47sABOO8AATjvgAE478ABOQ6AATkPAAE5D4ABORAAATkQwAE5EQABORFAATkRgAE5EcABORJAATkSwAE5EwABORNAATkTwAE5FAABOTLAATkzQAE5M8ABOTRAATk1AAE5NUABOTWAATk1wAE5NgABOTaAATk3AAE5N0ABOTeAATk4AAE5OEABOVcAATlXgAE5WAABOViAATlZQAE5WYABOVnAATlaAAE5WkABOVrAATlbQAE5W4ABOVvAATlcQAE5XIABOXtAATl7wAE5fEABOXzAATl9gAE5fcABOX4AATl+QAE5foABOX8AATl/gAE5f8ABOYAAATmAgAE5gMABOZMAATmcAAE5pcABOa7AATmvgAE5sEABObDAATmxQAE5scABObJAATmygAE5s0ABObmAATnAwAE5wYABOcJAATnDAAE5w8ABOcSAATnFQAE5xgABOc1AATnOAAE5zsABOc+AATnQQAE50QABOdHAATnSgAE50wABOfHAATnyQAE58wABOfOAATn0QAE59IABOfTAATn1AAE59UABOfXAATn2gAE59sABOfcAATn3gAE598ABOhaAAToXAAE6F8ABOhhAAToZAAE6GUABOhmAAToZwAE6GgABOhqAATobQAE6G4ABOhvAATocQAE6HIABOjtAATo7wAE6PIABOj0AATo9wAE6PgABOj5AATo+gAE6PsABOj9AATpAAAE6QEABOkCAATpBAAE6QUABOmAAATpggAE6YUABOmHAATpigAE6YsABOmMAATpjQAE6Y4ABOmQAATpkwAE6ZQABOmVAATplwAE6ZgABOobAATqPwAE6mMABOqGAATqrQAE6s0ABOr0AATrGwAE6zsABOtfAATrgwAE64UABOuIAATrigAE64wABOuOAATrkQAE65QABOuWAATrmAAE65sABOudAATrnwAE66IABOulAATrpgAE668ABOvIAATrzQAE688ABOvUAATr1wAE69kABOwiAATsRgAE7G0ABOyRAATslAAE7JYABOyYAATsmgAE7JwABOyeAATsnwAE7KIABOy7AATs4AAE7OIABOzkAATs5gAE7OgABOzqAATs7AAE7O4ABOzwAATs8gAE7RcABO0aAATtHQAE7SAABO0jAATtJgAE7SkABO0sAATtLwAE7TIABO00AATtrwAE7bEABO20AATttgAE7bkABO26AATtuwAE7bwABO29AATtvwAE7cEABO3CAATtwwAE7cUABO3GAATt1wAE7dgABO3aAATuVQAE7lcABO5ZAATuWwAE7l4ABO5fAATuYAAE7mEABO5iAATuZAAE7mYABO5nAATuaAAE7moABO5rAATu5gAE7ugABO7rAATu7QAE7vAABO7xAATu8gAE7vMABO70AATu9gAE7vgABO75AATu+gAE7vwABO79AATvDgAE7w8ABO8RAATvjAAE744ABO+QAATvkgAE75UABO+WAATvlwAE75gABO+ZAATvmwAE750ABO+eAATvnwAE76EABO+iAATwHQAE8B8ABPAiAATwJAAE8CcABPAoAATwKQAE8CoABPArAATwLQAE8C8ABPAwAATwMQAE8DMABPA0AATwRQAE8EYABPBIAATwwwAE8MUABPDHAATwyQAE8MwABPDNAATwzgAE8M8ABPDQAATw0gAE8NQABPDVAATw1gAE8NgABPDZAATxVAAE8VYABPFZAATxWwAE8V4ABPFfAATxYAAE8WEABPFiAATxZAAE8WYABPFnAATxaAAE8WoABPFrAATxhAAE8YUABPGGAATxiAAE8gMABPIFAATyBwAE8gkABPIMAATyDQAE8g4ABPIPAATyEAAE8hIABPIUAATyFQAE8hYABPIYAATyGQAE8pQABPKWAATymQAE8psABPKeAATynwAE8qAABPKhAATyogAE8qQABPKmAATypwAE8qgABPKqAATyqwAE8sMABPLcAATy+QAE8vwABPL/AATzAgAE8wUABPMIAATzCwAE8w4ABPMrAATzLgAE8zEABPM0AATzNwAE8zoABPM9AATzQAAE80IABPNdAATziAAE854ABPO3AATz4AAE8/gABPQGAAT0mQAE9LwABPTcAAT0/AAE9P4ABPUAAAT1AgAE9QQABPUHAAT1CAAE9QkABPUMAAT1DQAE9Q8ABPUQAAT1EgAE9RUABPUWAAT1FwAE9RoABPUbAAT1JAAE9T0ABPVGAAT1SAAE9UoABPVTAAT1VgAE9VkABPVbAAT1pAAE9cgABPXvAAT2EwAE9hYABPYYAAT2GgAE9hwABPYeAAT2IAAE9iEABPYkAAT2PQAE9l4ABPZgAAT2YgAE9mQABPZmAAT2aAAE9moABPZsAAT2bgAE9o8ABPaSAAT2lQAE9pgABPabAAT2ngAE9qEABPakAAT2pwAE9qkABPckAAT3JgAE9ygABPcqAAT3LQAE9y4ABPcvAAT3MAAE9zEABPczAAT3NQAE9zYABPc3AAT3OQAE9zoABPe1AAT3twAE97kABPe7AAT3vgAE978ABPfAAAT3wQAE98IABPfEAAT3xgAE98cABPfIAAT3ygAE98sABPhGAAT4SAAE+EsABPhNAAT4UAAE+FEABPhSAAT4UwAE+FQABPhWAAT4WAAE+FkABPhaAAT4XAAE+F0ABPh2AAT4dwAE+HgABPh6AAT49QAE+PcABPj5AAT4+wAE+P4ABPj/AAT5AAAE+QEABPkCAAT5BAAE+QYABPkHAAT5CAAE+QoABPkLAAT5hgAE+YgABPmKAAT5jAAE+Y8ABPmQAAT5kQAE+ZIABPmTAAT5lQAE+ZcABPmYAAT5mQAE+ZsABPmcAAT6FwAE+hkABPobAAT6HQAE+iAABPohAAT6IgAE+iMABPokAAT6JgAE+igABPopAAT6KgAE+iwABPotAAT6qAAE+qoABPqsAAT6rgAE+rEABPqyAAT6swAE+rQABPq1AAT6twAE+rkABPq6AAT6uwAE+r0ABPq+AAT7OQAE+zsABPs9AAT7PwAE+0IABPtDAAT7RAAE+0UABPtGAAT7SAAE+0oABPtLAAT7TAAE+04ABPtPAAT7mAAE+7wABPvjAAT8BwAE/AoABPwMAAT8DgAE/BAABPwSAAT8FAAE/BUABPwYAAT8MQAE/E4ABPxQAAT8UgAE/FQABPxWAAT8WAAE/FoABPxcAAT8eQAE/HwABPx/AAT8ggAE/IUABPyIAAT8iwAE/I4ABPyQAAT9CwAE/Q0ABP0PAAT9EQAE/RQABP0VAAT9FgAE/RcABP0YAAT9GgAE/RwABP0dAAT9HgAE/SAABP0hAAT9nAAE/Z4ABP2gAAT9ogAE/aUABP2mAAT9pwAE/agABP2pAAT9qwAE/a0ABP2uAAT9rwAE/bEABP2yAAT+LQAE/i8ABP4xAAT+MwAE/jYABP43AAT+OAAE/jkABP46AAT+PAAE/j4ABP4/AAT+QAAE/kIABP5DAAT+vgAE/sAABP7DAAT+xQAE/sgABP7JAAT+ygAE/ssABP7MAAT+zgAE/tAABP7RAAT+0gAE/tQABP7VAAT/UAAE/1IABP9UAAT/VgAE/1kABP9aAAT/WwAE/1wABP9dAAT/XwAE/2EABP9iAAT/YwAE/2UABP9mAAT/4QAE/+MABP/lAAT/5wAE/+oABP/rAAT/7AAE/+0ABP/uAAT/8AAE//IABP/zAAT/9AAE//YABP/3AAUAcgAFAHQABQB2AAUAeAAFAHsABQB8AAUAfQAFAH4ABQB/AAUAgQAFAIMABQCEAAUAhQAFAIcABQCIAAUBGwAFAT4ABQFeAAUBfgAFAYAABQGCAAUBhAAFAYYABQGJAAUBigAFAYsABQGOAAUBjwAFAZEABQGSAAUBlQAFAZgABQGZAAUBmgAFAZ0ABQGeAAUBowAFAbwABQHFAAUBxwAFAcoABQHTAAUB1gAFAdkABQHbAAUCJAAFAkgABQJvAAUCkwAFApYABQKYAAUCmgAFApwABQKeAAUCoAAFAqEABQKkAAUCvQAFAt4ABQLgAAUC4gAFAuQABQLmAAUC6AAFAuoABQLsAAUC7gAFAw8ABQMSAAUDFQAFAxgABQMbAAUDHgAFAyEABQMkAAUDJwAFAykABQOkAAUDpgAFA6gABQOqAAUDrQAFA64ABQOvAAUDsAAFA7EABQOzAAUDtQAFA7YABQO3AAUDuQAFA7oABQQ1AAUENwAFBDkABQQ7AAUEPgAFBD8ABQRAAAUEQQAFBEIABQREAAUERgAFBEcABQRIAAUESgAFBEsABQTGAAUEyAAFBMsABQTNAAUE0AAFBNEABQTSAAUE0wAFBNQABQTWAAUE2AAFBNkABQTaAAUE3AAFBN0ABQT2AAUE9wAFBPgABQT6AAUFdQAFBXcABQV5AAUFewAFBX4ABQV/AAUFgAAFBYEABQWCAAUFhAAFBYYABQWHAAUFiAAFBYoABQWLAAUGBgAFBggABQYKAAUGDAAFBg8ABQYQAAUGEQAFBhIABQYTAAUGFQAFBhcABQYYAAUGGQAFBhsABQYcAAUGlwAFBpkABQabAAUGnQAFBqAABQahAAUGogAFBqMABQakAAUGpgAFBqgABQapAAUGqgAFBqwABQatAAUHKAAFByoABQcsAAUHLgAFBzEABQcyAAUHMwAFBzQABQc1AAUHNwAFBzkABQc6AAUHOwAFBz0ABQc+AAUHuQAFB7sABQe9AAUHvwAFB8IABQfDAAUHxAAFB8UABQfGAAUHyAAFB8oABQfLAAUHzAAFB84ABQfPAAU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z/AAFM/8ABTQBAAU0SgAFNG4ABTSVAAU0uQAFNLwABTS+AAU0wAAFNMIABTTEAAU0xgAFNMcABTTKAAU04wAFNQQABTUGAAU1CAAFNQoABTUMAAU1DgAFNRAABTUSAAU1FAAFNTUABTU4AAU1OwAFNT4ABTVBAAU1RAAFNUcABTVKAAU1TQAFNU8ABTXKAAU1zAAFNc4ABTXQAAU10wAFNdQABTXVAAU11gAFNdcABTXZAAU12wAFNdwABTXdAAU13wAFNeAABTZbAAU2XQAFNl8ABTZhAAU2ZAAFNmUABTZmAAU2ZwAFNmgABTZqAAU2bAAFNm0ABTZuAAU2cAAFNnEABTbsAAU27gAFNvEABTbzAAU29gAFNvcABTb4AAU2+QAFNvoABTb8AAU2/gAFNv8ABTcAAAU3AgAFNwMABTccAAU3HQAFNx4ABTcgAAU3mwAFN50ABTefAAU3oQAFN6QABTelAAU3pgAFN6cABTeoAAU3qgAFN6wABTetAAU3rgAFN7AABTexAAU4LAAFOC4ABTgwAAU4MgAFODUABTg2AAU4NwAFODgABTg5AAU4OwAFOD0ABTg+AAU4PwAFOEEABThCAAU4vQAFOL8ABTjBAAU4wwAFOMYABTjHAAU4yAAFOMkABTjKAAU4zAAFOM4ABTjPAAU40AAFONIABTjTAAU5TgAFOVAABTlSAAU5VAAFOVcABTlYAAU5WQAFOVoABTlbAAU5XQAFOV8ABTlgAAU5YQAFOWMABTlkAAU53wAFOeEABTnjAAU55QAFOegABTnpAAU56gAFOesABTnsAAU57gAFOfAABTnxAAU58gAFOfQABTn1AAU6PgAFOmIABTqJAAU6rQAFOrAABTqzAAU6tQAFOrcABTq5AAU6uwAFOrwABTq/AAU62AAFOvUABTr4AAU6+wAFOv4ABTsBAAU7BAAFOwcABTsKAAU7JwAFOyoABTstAAU7MAAFOzMABTs2AAU7OQAFOzwABTs+AAU7uQAFO7sABTu+AAU7wAAFO8MABTvEAAU7xQAFO8YABTvHAAU7yQAFO8wABTvNAAU7zgAFO9AABTvRAAU8TAAFPE4ABTxRAAU8UwAFPFYABTxXAAU8WAAFPFkABTxaAAU8XAAFPF8ABTxgAAU8YQAFPGMABTxkAAU83wAFPOEABTzkAAU85gAFPOkABTzqAAU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OYAAFTmIABU7dAAVO3wAFTuEABU7jAAVO5gAFTucABU7oAAVO6QAFTuoABU7sAAVO7gAFTu8ABU7wAAVO8gAFTvMABU9uAAVPcAAFT3IABU90AAVPdwAFT3gABU95AAVPegAFT3sABU99AAVPfwAFT4AABU+BAAVPgwAFT4QABU//AAVQAQAFUAQABVAGAAVQCQAFUAoABVALAAVQDAAFUA0ABVAPAAVQEQAFUBIABVATAAVQFQAFUBYABVAvAAVQMAAFUDEABVAzAAVQrgAFULAABVCyAAVQtAAFULcABVC4AAVQuQAFULoABVC7AAVQvQAFUL8ABVDAAAVQwQAFUMMABVDEAAVRPwAFUUEABVFDAAVRRQAFUUgABVFJAAVRSgAFUUsABVFMAAVRTgAFUVAABVFRAAVRUgAFUVQABVFVAAVR0AAFUdIABVHUAAVR1gAFUdkABVHaAAVR2wAFUdwABVHdAAVR3wAFUeEABVHiAAVR4wAFUeUABVHmAAVSYQAFUmMABVJlAAVSZwAFUmoABVJrAAVSbAAFUm0ABVJuAAVScAAFUnIABVJzAAVSdAAFUnYABVJ3AAVS8gAFUvQABVL2AAVS+AAFUvsABVL8AAVS/QAFUv4ABVL/AAVTAQAFUwMABVMEAAVTBQAFUwcABVMIAAVTUQAFU3UABVOcAAVTwAAFU8MABVPFAAVTxwAFU8kABVPLAAVTzQAFU84ABVPRAAVT6gAFVAcABVQJAAVUCwAFVA0ABVQPAAVUEQAFVBMABVQVAAVUMgAFVDUABVQ4AAVUOwAFVD4ABVRBAAVURAAFVEcABVRJAAVUxAAFVMYABVTIAAVUygAFVM0ABVTOAAVUzwAFVNAABVTRAAVU0wAFVNUABVTWAAVU1wAFVNkABVTaAAVVVQAFVVcABVVZAAVVWwAFVV4ABVVfAAVVYAAFVWEABVViAAVVZAAFVWYABVVnAAVVaAAFVWoABVVrAAVV5gAFVegABVXqAAVV7AAFVe8ABVXwAAVV8QAFVfIABVXzAAVV9QAFVfcABVX4AAVV+QAFVfsABVX8AAVWdwAFVnkABVZ8AAVWfgAFVoEABVaCAAVWgwAFVoQABVaFAAVWhwAFVokABVaKAAVWiwAFVo0ABVaOAAVXCQAFVwsABVcNAAVXDwAFVxIABVcTAAVXFAAFVxUABVcWAAVXGAAFVxoABVcbAAVXHAAFVx4ABVcfAAVXmgAFV5wABVeeAAVXoAAFV6MABVekAAVXpQAFV6YABVenAAVXqQAFV6sABVesAAVXrQAFV68ABVewAAVYKwAFWC0ABVgvAAVYMQAFWDQABVg1AAVYNgAFWDcABVg4AAVYOgAFWDwABVg9AAVYPgAFWEAABVhBAAVYUgAFWFMABVhVAAVY0AAFWNIABVjUAAVY1gAFWNkABVjaAAVY2wAFWNwABVjdAAVY3wAFWOIABVjjAAVY5AAFWOYABVjnAAVZYgAFWWQABVlmAAVZaAAFWWsABVlsAAVZbQAFWW4ABVlvAAVZcQAFWXQABVl1AAVZdgAFWXgABVl5AAVZ9AAFWfYABVn5AAVZ+wAFWf4ABVn/AAVaAAAFWgEABVoCAAVaBAAFWgcABVoIAAVaCQAFWgsABVoMAAVanwAFWsIABVriAAVbAgAFWwQABVsGAAVbCAAFWwoABVsNAAVbDgAFWw8ABVsSAAVbEwAFWxUABVsWAAVbGAAFWxsABVscAAVbHQAFWyAABVshAAVbJgAFWz8ABVtIAAVbSgAFW0wABVtVAAVbWAAFW1sABVtdAAVbpgAFW8oABVvxAAVcFQAFXBgABVwaAAVcHAAFXB4ABVwgAAVcIgAFXCMABVwmAAVcPwAFXGAABVxiAAVcZAAFXGYABVxoAAVcagAFXGwABVxuAAVccAAFXJEABVyUAAVclwAFXJoABVydAAVcoAAFXKMABVymAAVcqQAFXKsABV0mAAVdKAAFXSoABV0sAAVdLwAFXTAABV0xAAVdMgAFXTMABV01AAVdNwAFXTgABV05AAVdOwAFXTwABV23AAVduQAFXbsABV29AAVdwAAFXcEABV3CAAVdwwAFXcQABV3GAAVdyAAFXckABV3KAAVdzAAFXc0ABV5IAAVeSgAFXk0ABV5PAAVeUgAFXlMABV5UAAVeVQAFXlYABV5YAAVeWgAFXlsABV5cAAVeXgAFXl8ABV54AAVeeQAFXnoABV58AAVe9wAFXvkABV77AAVe/QAFXwAABV8BAAVfAgAFXwMABV8EAAVfBgAFXwgABV8JAAVfCgAFXwwABV8NAAVfiAAFX4oABV+MAAVfjgAFX5EABV+SAAVfkwAFX5QABV+VAAVflwAFX5kABV+aAAVfmwAFX50ABV+eAAVgGQAFYBsABWAdAAVgHwAFYCIABWAjAAVgJAAFYCUABWAmAAVgKAAFYCoABWArAAVgLAAFYC4ABWAvAAVgqgAFYKwABWCuAAVgsAAFYLMABWC0AAVgtQAFYLYABWC3AAVguQAFYLsABWC8AAVgvQAFYL8ABWDAAAVhOwAFYT0ABWE/AAVhQQAFYUQABWFFAAVhRgAFYUcABWFIAAVhSgAFYUwABWFNAAVhTgAFYVAABWFRAAVhmgAFYb4ABWHlAAViCQAFYgwABWIOAAViEAAFYhIABWIUAAViFgAFYhcABWIaAAViMwAFYlAABWJSAAViVAAFYlYABWJYAAViWgAFYlwABWJeAAViewAFYn4ABWKBAAVihAAFYocABWKKAAVijQAFYpAABWKSAAVjDQAFYw8ABWMRAAVjEwAFYxYABWMXAAVjGAAFYxkABWMaAAVjHAAFYx4ABWMfAAVjIAAFYyIABWMjAAVjngAFY6AABWOiAAVjpAAFY6cABWOoAAVjqQAFY6oABWOrAAVjrQAFY68ABWOwAAVjsQAFY7MABWO0AAVkLwAFZDEABWQzAAVkNQAFZDgABWQ5AAVkOgAFZDsABWQ8AAVkPgAFZEAABWRBAAVkQgAFZEQABWRFAAVkwAAFZMIABWTFAAVkxwAFZMoABWTLAAVkzAAFZM0ABWTOAAVk0AAFZNIABWTTAAVk1AAFZNYABWTXAAVlUgAFZVQABWVWAAVlWAAFZVsABWVcAAVlXQAFZV4ABWVfAAVlYQAFZWMABWVkAAVlZQAFZWcABWVoAAVl4wAFZeUABWXnAAVl6QAFZewABWXtAAVl7gAFZe8ABWXwAAVl8gAFZfQABWX1AAVl9gAFZfgABWX5AAVmdAAFZnYABWZ4AAVmegAFZn0ABWZ+AAVmfwAFZoAABWaBAAVmgwAFZoUABWaGAAVmhwAFZokABWaKAAVnHQAFZ0AABWdgAAVngAAFZ4IABWeEAAVnhgAFZ4gABWeLAAVnjAAFZ40ABWeQAAVnkQAFZ5MABWeUAAVnlgAFZ5kABWeaAAVnmwAFZ54ABWefAAVnpAAFZ70ABWfGAAVnyAAFZ8oABWfTAAVn1gAFZ9kABWfbAAVoJAAFaEgABWhvAAVokwAFaJYABWiYAAVomgAFaJwABWieAAVooAAFaKEABWikAAVovQAFaN4ABWjgAAVo4gAFaOQABWjmAAVo6AAFaOoABWjsAAVo7gAFaQ8ABWkSAAVpFQAFaRgABWkbAAVpHgAFaSEABWkkAAVpJwAFaSkABWmkAAVppgAFaagABWmqAAVprQAFaa4ABWmvAAVpsAAFabEABWmzAAVptQAFabYABWm3AAVpuQAFaboABWo1AAVqNwAFajkABWo7AAVqPgAFaj8ABWpAAAVqQQAFakIABWpEAAVqRgAFakcABWpIAAVqSgAFaksABWrGAAVqyAAFassABWrNAAVq0AAFatEABWrSAAVq0wAFatQABWrWAAVq2AAFatkABWraAAVq3AAFat0ABWr2AAVq9wAFavgABWr6AAVrdQAFa3cABWt5AAVrewAFa34ABWt/AAVrgAAFa4EABWuCAAVrhAAFa4YABWuHAAVriAAFa4oABWuLAAVsBgAFbAgABWwKAAVsDAAFbA8ABWwQAAVsEQAFbBIABWwTAAVsFQAFbBcABWwYAAVsGQAFbBsABWwcAAVslwAFbJkABWybAAVsnQAFbKAABWyhAAVsogAFbKMABWykAAVspgAFbKgABWypAAVsqgAFbKwABWytAAVtKAAFbSoABW0sAAVtLgAFbTEABW0yAAVtMwAFbTQABW01AAVtNwAFbTkABW06AAVtOwAFbT0ABW0+AAVtuQAFbbsABW29AAVtvwAFbcIABW3DAAVtxAAFbcUABW3GAAVtyAAFbcoABW3LAAVtzAAFbc4ABW3PAAVuGAAFbjwABW5jAAVuhwAFbooABW6MAAVujgAFbpAABW6SAAVulAAFbpUABW6YAAVusQAFbs4ABW7QAAVu0gAFbtQABW7WAAVu2AAFbtoABW7cAAVu+QAFbvwABW7/AAVvAgAFbwUABW8IAAVvCwAFbw4ABW8QAAVviwAFb40ABW+PAAVvkQAFb5QABW+VAAVvlgAFb5cABW+YAAVvmgAFb5wABW+dAAVvngAFb6AABW+hAAVwHAAFcB4ABXAgAAVwIgAFcCUABXAmAAVwJwAFcCgABXApAAVwKwAFcC0ABXAuAAVwLwAFcDEABXAyAAVwrQAFcK8ABXCxAAVwswAFcLYABXC3AAVwuAAFcLkABXC6AAVwvAAFcL4ABXC/AAVwwAAFcMIABXDDAAVxPgAFcUAABXFDAAVxRQAFcUgABXFJAAVxSgAFcUsABXFMAAVxTgAFcVAABXFRAAVxUgAFcVQABXFVAAVx0AAFcdIABXHUAAVx1gAFcdkABXHaAAVx2wAFcdwABXHdAAVx3wAFceEABXHiAAVx4wAFceUABXHmAAVyYQAFcmMABXJlAAVyZwAFcmoABXJrAAVybAAFcm0ABXJuAAVycAAFcnIABXJzAAVydAAFcnYABXJ3AAVy8gAFcvQABXL2AAVy+AAFcvsABXL8AAVy/QAFcv4ABXL/AAVzAQAFcwMABXMEAAVzBQAFcwcABXMIAAVzmwAFc74ABXPeAAVz/gAFdAAABXQCAAV0BAAFdAYABXQJAAV0CgAFdAsABXQOAAV0DwAFdBEABXQSAAV0FQAFdBgABXQZAAV0GgAFdB0ABXQeAAV0IwAFdDwABXRFAAV0RwAFdEoABXRTAAV0VgAFdFkABXRbAAV0pAAFdMgABXTvAAV1EwAFdRYABXUYAAV1GgAFdRwABXUeAAV1IAAFdSEABXUkAAV1PQAFdV4ABXVgAAV1YgAFdWQABXVmAAV1aAAFdWoABXVsAAV1bgAFdY8ABXWSAAV1lQAFdZgABXWbAAV1ngAFdaEABXWkAAV1pwAFdakABXYkAAV2JgAFdigABXYqAAV2LQAFdi4ABXYvAAV2MAAFdjEABXYzAAV2NQAFdjYABXY3AAV2OQAFdjoABXa1AAV2twAFdrkABXa7AAV2vgAFdr8ABXbAAAV2wQAFdsIABXbEAAV2xgAFdscABXbIAAV2ygAFdssABXdGAAV3SAAFd0sABXdNAAV3UAAFd1EABXdSAAV3UwAFd1QABXdWAAV3WAAFd1kABXdaAAV3XAAFd10ABXd2AAV3dwAFd3gABXd6AAV39QAFd/cABXf5AAV3+wAFd/4ABXf/AAV4AAAFeAEABXgCAAV4BAAFeAYABXgHAAV4CAAFeAoABXgLAAV4hgAFeIgABXiKAAV4jAAFeI8ABXiQAAV4kQAFeJIABXiTAAV4lQAFeJcABXiYAAV4mQAFeJsABXicAAV5FwAFeRkABXkbAAV5HQAFeSAABXkhAAV5IgAFeSMABXkkAAV5JgAFeSgABXkpAAV5KgAFeSwABXktAAV5qAAFeaoABXmsAAV5rgAFebEABXmyAAV5swAFebQABXm1AAV5twAFebkABXm6AAV5uwAFeb0ABXm+AAV6OQAFejsABXo9AAV6PwAFekIABXpDAAV6RAAFekUABXpGAAV6SAAFekoABXpLAAV6TAAFek4ABXpPAAV6mAAFerwABXrjAAV7BwAFewoABXsNAAV7DwAFexEABXsTAAV7FQAFexYABXsZAAV7MgAFe08ABXtSAAV7VQAFe1gABXtbAAV7XgAFe2EABXtkAAV7gQAFe4QABXuHAAV7igAFe40ABXuQAAV7kwAFe5YABXuYAAV8EwAFfBUABXwYAAV8GgAFfB0ABXweAAV8HwAFfCAABXwhAAV8IwAFfCYABXwnAAV8KAAFfCoABXwrAAV8pgAFfKgABXyrAAV8rQAFfLAABXyxAAV8sgAFfLMABXy0AAV8tgAFfLkABXy6AAV8uwAFfL0ABXy+AAV9OQAFfTsABX0+AAV9QAAFfUMABX1EAAV9RQAFfUYABX1HAAV9SQAFfUwABX1NAAV9TgAFfVAABX1RAAV9zAAFfc4ABX3RAAV90wAFfdYABX3XAAV92AAFfdkABX3aAAV93AAFfd8ABX3gAAV94QAFfeMABX3kAAV+ZwAFfosABX6vAAV+0gAFfvkABX8ZAAV/QAAFf2cABX+HAAV/qwAFf88ABX/RAAV/1AAFf9YABX/YAAV/2gAFf90ABX/gAAV/4gAFf+QABX/nAAV/6QAFf+sABX/uAAV/8QAFf/IABX/3AAWAEAAFgBUABYAXAAWAHAAFgB8ABYAhAAWAagAFgI4ABYC1AAWA2QAFgNwABYDeAAWA4AAFgOIABYDkAAWA5gAFgOcABYDqAAWBAwAFgSgABYEqAAWBLAAFgS4ABYEwAAWBMgAFgTQABYE2AAWBOAAFgToABYFfAAWBYgAFgWUABYFoAAWBawAFgW4ABYFxAAWBdAAFgXcABYF6AAWBfAAFgfcABYH5AAWB/AAFgf4ABYIBAAWCAgAFggMABYIEAAWCBQAFggcABYIJAAWCCgAFggsABYINAAWCDgAFgh8ABYIgAAWCIgAFgp0ABYKfAAWCoQAFgqMABYKmAAWCpwAFgqgABYKpAAWCqgAFgqwABYKuAAWCrwAFgrAABYKyAAWCswAFgy4ABYMwAAWDMwAFgzUABYM4AAWDOQAFgzoABYM7AAWDPAAFgz4ABYNAAAWDQQAFg0IABYNEAAWDRQAFg1YABYNXAAWDWQAFg9QABYPWAAWD2AAFg9oABYPdAAWD3gAFg98ABYPgAAWD4QAFg+MABYPlAAWD5gAFg+cABYPpAAWD6gAFhGUABYRnAAWEagAFhGwABYRvAAWEcAAFhHEABYRyAAWEcwAFhHUABYR3AAWEeAAFhHkABYR7AAWEfAAFhI0ABYSOAAWEkAAFhQsABYUNAAWFDwAFhREABYUUAAWFFQAFhRYABYUXAAWFGAAFhRoABYUcAAWFHQAFhR4ABYUgAAWFIQAFhZwABYWeAAWFoQAFhaMABYWmAAWFpwAFhagABYWpAAWFqgAFhawABYWuAAWFrwAFhbAABYWyAAWFswAFhcwABYXNAAWFzgAFhdAABYZLAAWGTQAFhk8ABYZRAAWGVAAFhlUABYZWAAWGVwAFhlgABYZaAAWGXAAFhl0ABYZeAAWGYAAFhmEABYbcAAWG3gAFhuEABYbjAAWG5gAFhucABYboAAWG6QAFhuoABYbsAAWG7gAFhu8ABYbwAAWG8gAFhvMABYcRAAWHKgAFhz8ABYdCAAWHRQAFh0gABYdLAAWHTgAFh2MABYdmAAWHaQAFh2wABYdvAAWHcgAFh3QABYeUAAWHowAFh7UABYfBAAWH2AAFiGsABYiOAAWIrgAFiM4ABYjQAAWI0gAFiNQABYjWAAWI2QAFiNoABYjbAAWI3gAFiN8ABYjhAAWI4gAFiOQABYjnAAWI6AAFiOkABYjsAAWI7QAFiPYABYkPAAWJGAAFiRoABYkcAAWJJQAFiSgABYkrAAWJLQAFiXYABYmaAAWJwQAFieUABYnoAAWJ6gAFiewABYnuAAWJ8AAFifIABYnzAAWJ9gAFig8ABYowAAWKMgAFijQABYo2AAWKOAAFijoABYo8AAWKPgAFikAABYphAAWKZAAFimcABYpqAAWKbQAFinAABYpzAAWKdgAFinkABYp7AAWK9gAFivgABYr6AAWK/AAFiv8ABYsAAAWLAQAFiwIABYsDAAWLBQAFiwcABYsIAAWLCQAFiwsABYsMAAWLhwAFi4kABYuLAAWLjQAFi5AABYuRAAWLkgAFi5MABYuUAAWLlgAFi5gABYuZAAWLmgAFi5wABYudAAWMGAAFjBoABYwdAAWMHwAFjCIABYwjAAWMJAAFjCUABYwmAAWMKAAFjCoABYwrAAWMLAAFjC4ABYwvAAWMSAAFjEkABYxKAAWMTAAFjMcABYzJAAWMywAFjM0ABYzQAAWM0QAFjNIABYzTAAWM1AAFjNYABYzYAAWM2QAFjNoABYzcAAWM3QAFjVgABY1aAAWNXAAFjV4ABY1hAAWNYgAFjWMABY1kAAWNZQAFjWcABY1pAAWNagAFjWsABY1tAAWNbgAFjekABY3rAAWN7QAFje8ABY3yAAWN8wAFjfQABY31AAWN9gAFjfgABY36AAWN+wAFjfwABY3+AAWN/wAFjnoABY58AAWOfgAFjoAABY6DAAWOhAAFjoUABY6GAAWOhwAFjokABY6LAAWOjAAFjo0ABY6PAAWOkAAFjwsABY8NAAWPDwAFjxEABY8UAAWPFQAFjxYABY8XAAWPGAAFjxoABY8cAAWPHQAFjx4ABY8gAAWPIQAFj2oABY+OAAWPtQAFj9kABY/cAAWP3gAFj+AABY/iAAWP5AAFj+YABY/nAAWP6gAFkAMABZAgAAWQIgAFkCQABZAmAAWQKAAFkCoABZAsAAWQLgAFkEsABZBOAAWQUQAFkFQABZBXAAWQWgAFkF0ABZBgAAWQYgAFkN0ABZDfAAWQ4QAFkOMABZDmAAWQ5wAFkOgABZDpAAWQ6gAFkOwABZDuAAWQ7wAFkPAABZDyAAWQ8wAFkW4ABZFwAAWRcgAFkXQABZF3AAWReAAFkXkABZF6AAWRewAFkX0ABZF/AAWRgAAFkYEABZGDAAWRhAAFkf8ABZIBAAWSAwAFkgUABZIIAAWSCQAFkgoABZILAAWSDAAFkg4ABZIQAAWSEQAFkhIABZIUAAWSFQAFkpAABZKSAAWSlQAFkpcABZKaAAWSmwAFkpwABZKdAAWSngAFkqAABZKiAAWSowAFkqQABZKmAAWSpwAFkyIABZMkAAWTJgAFkygABZMrAAWTLAAFky0ABZMuAAWTLwAFkzEABZMzAAWTNAAFkzUABZM3AAWTOAAFk7MABZO1AAWTtwAFk7kABZO8AAWTvQAFk74ABZO/AAWTwAAFk8IABZPEAAWTxQAFk8YABZPIAAWTyQAFlEQABZRGAAWUSAAFlEoABZRNAAWUTgAFlE8ABZRQAAWUUQAFlFMABZRVAAWUVgAFlFcABZRZAAWUWgAFlO0ABZUQAAWVMAAFlVAABZVSAAWVVAAFlVYABZVYAAWVWwAFlVwABZVdAAWVYAAFlWEABZVjAAWVZAAFlWYABZVpAAWVagAFlWsABZVuAAWVbwAFlXQABZWNAAWVlgAFlZgABZWaAAWVowAFlaYABZWpAAWVqwAFlfQABZYYAAWWPwAFlmMABZZmAAWWaAAFlmoABZZsAAWWbgAFlnAABZZxAAWWdAAFlo0ABZauAAWWsAAFlrIABZa0AAWWtgAFlrgABZa6AAWWvAAFlr4ABZbfAAWW4gAFluUABZboAAWW6wAFlu4ABZbxAAWW9AAFlvcABZb5AAWXdAAFl3YABZd4AAWXegAFl30ABZd+AAWXfwAFl4AABZeBAAWXgwAFl4UABZeGAAWXhwAFl4kABZeKAAWYBQAFmAcABZgJAAWYCwAFmA4ABZgPAAWYEAAFmBEABZgSAAWYFAAFmBYABZgXAAWYGAAFmBoABZgbAAWYlgAFmJgABZibAAWYnQAFmKAABZihAAWYogAFmKMABZikAAWYpgAFmKgABZipAAWYqgAFmKwABZitAAWYxgAFmMcABZjIAAWYygAFmUUABZlHAAWZSQAFmUsABZlOAAWZTwAFmVAABZlRAAWZUgAFmVQABZlWAAWZVwAFmVgABZlaAAWZWwAFmdYABZnYAAWZ2gAFmdwABZnfAAWZ4AAFmeEABZniAAWZ4wAFmeUABZnnAAWZ6AAFmekABZnrAAWZ7AAFmmcABZppAAWaawAFmm0ABZpwAAWacQAFmnIABZpzAAWadAAFmnYABZp4AAWaeQAFmnoABZp8AAWafQAFmvgABZr6AAWa/AAFmv4ABZsBAAWbAgAFmwMABZsEAAWbBQAFmwcABZsJAAWbCgAFmwsABZsNAAWbDgAFm4kABZuLAAWbjQAFm48ABZuSAAWbkwAFm5QABZuVAAWblgAFm5gABZuaAAWbmwAFm5wABZueAAWbnwAFm+gABZwMAAWcMwAFnFcABZxaAAWcXAAFnF4ABZxgAAWcYgAFnGQABZxlAAWcaAAFnIEABZyeAAWcoAAFnKIABZykAAWcpgAFnKgABZyqAAWcrAAFnMkABZzMAAWczwAFnNIABZzVAAWc2AAFnNsABZzeAAWc4AAFnVsABZ1dAAWdXwAFnWEABZ1kAAWdZQAFnWYABZ1nAAWdaAAFnWoABZ1sAAWdbQAFnW4ABZ1wAAWdcQAFnewABZ3uAAWd8AAFnfIABZ31AAWd9gAFnfcABZ34AAWd+QAFnfsABZ39AAWd/gAFnf8ABZ4BAAWeAgAFnn0ABZ5/AAWegQAFnoMABZ6GAAWehwAFnogABZ6JAAWeigAFnowABZ6OAAWejwAFnpAABZ6SAAWekwAFnw4ABZ8QAAWfEwAFnxUABZ8YAAWfGQAFnxoABZ8bAAWfHAAFnx4ABZ8gAAWfIQAFnyIABZ8kAAWfJQAFn6AABZ+iAAWfpAAFn6YABZ+pAAWfqgAFn6sABZ+sAAWfrQAFn68ABZ+xAAWfsgAFn7MABZ+1AAWftgAFoDEABaAzAAWgNQAFoDcABaA6AAWgOwAFoDwABaA9AAWgPgAFoEAABaBCAAWgQwAFoEQABaBGAAWgRwAFoMIABaDEAAWgxgAFoMgABaDLAAWgzAAFoM0ABaDOAAWgzwAFoNEABaDTAAWg1AAFoNUABaDXAAWg2AAFoWsABaGOAAWhrgAFoc4ABaHQAAWh0gAFodQABaHWAAWh2QAFodoABaHbAAWh3gAFod8ABaHhAAWh4gAFoeUABaHoAAWh6QAFoeoABaHtAAWh7gAFofMABaIMAAWiFQAFohcABaIaAAWiIwAFoiYABaIpAAWiKwAFonQABaKYAAWivwAFouMABaLmAAWi6AAFouoABaLsAAWi7gAFovAABaLxAAWi9AAFow0ABaMuAAWjMAAFozIABaM0AAWjNgAFozgABaM6AAWjPAAFoz4ABaNfAAWjYgAFo2UABaNoAAWjawAFo24ABaNxAAWjdAAFo3cABaN5AAWj9AAFo/YABaP4AAWj+gAFo/0ABaP+AAWj/wAFpAAABaQBAAWkAwAFpAUABaQGAAWkBwAFpAkABaQKAAWkhQAFpIcABaSJAAWkiwAFpI4ABaSPAAWkkAAFpJEABaSSAAWklAAFpJYABaSXAAWkmAAFpJoABaSbAAWlFgAFpRgABaUbAAWlHQAFpSAABaUhAAWlIgAFpSMABaUkAAWlJgAFpSgABaUpAAWlKgAFpSwABaUtAAWlRgAFpUcABaVIAAWlSgAFpcUABaXHAAWlyQAFpcsABaXOAAWlzwAFpdAABaXRAAWl0gAFpdQABaXWAAWl1wAFpdgABaXaAAWl2wAFplYABaZYAAWmWgAFplwABaZfAAWmYAAFpmEABaZiAAWmYwAFpmUABaZnAAWmaAAFpmkABaZrAAWmbAAFpucABabpAAWm6wAFpu0ABabwAAWm8QAFpvIABabzAAWm9AAFpvYABab4AAWm+QAFpvoABab8AAWm/QAFp3gABad6AAWnfAAFp34ABaeBAAWnggAFp4MABaeEAAWnhQAFp4cABaeJAAWnigAFp4sABaeNAAWnjgAFqAkABagLAAWoDQAFqA8ABagSAAWoEwAFqBQABagVAAWoFgAFqBgABagaAAWoGwAFqBwABageAAWoHwAFqGgABaiMAAWoswAFqNcABajaAAWo3QAFqN8ABajhAAWo4wAFqOUABajmAAWo6QAFqQIABakfAAWpIgAFqSUABakoAAWpKwAFqS4ABakxAAWpNAAFqVEABalUAAWpVwAFqVoABaldAAWpYAAFqWMABalmAAWpaAAFqeMABanlAAWp6AAFqeoABantAAWp7gAFqe8ABanwAAWp8QAFqfMABan2AAWp9wAFqfgABan6AAWp+wAFqnYABap4AAWqewAFqn0ABaqAAAWqgQAFqoIABaqDAAWqhAAFqoYABaqJAAWqigAFqosABaqNAAWqjgAFqwkABasLAAWrDgAFqxAABasTAAWrFAAFqxUABasWAAWrFwAFqxkABascAAWrHQAFqx4ABasgAAWrIQAFq5wABaueAAWroQAFq6MABaumAAWrpwAFq6gABaupAAWrqgAFq6wABauvAAWrsAAFq7EABauzAAWrtAAFrC8ABawxAAWsMwAFrDUABaw4AAWsOQAFrDoABaw7AAWsPAAFrD4ABaxBAAWsQgAFrEMABaxFAAWsRgAFrMEABazDAAWsxQAFrMcABazKAAWsywAFrMwABazNAAWszgAFrNAABazTAAWs1AAFrNUABazXAAWs2AAFrVMABa1VAAWtWAAFrVoABa1dAAWtXgAFrV8ABa1gAAWtYQAFrWMABa1mAAWtZwAFrWgABa1qAAWtawAFrf4ABa4hAAWuQQAFrmEABa5jAAWuZQAFrmcABa5pAAWubAAFrm0ABa5uAAWucQAFrnIABa50AAWudQAFrncABa56AAWuewAFrnwABa5/AAWugAAFroUABa6eAAWupwAFrqkABa6rAAWutAAFrrcABa66AAWuvAAFrwUABa8pAAWvUAAFr3QABa93AAWveQAFr3sABa99AAWvfwAFr4EABa+CAAWvhQAFr54ABa+/AAWvwQAFr8MABa/FAAWvxwAFr8kABa/LAAWvzQAFr88ABa/wAAWv8wAFr/YABa/5AAWv/AAFr/8ABbACAAWwBQAFsAgABbAKAAWwhQAFsIcABbCJAAWwiwAFsI4ABbCPAAWwkAAFsJEABbCSAAWwlAAFsJYABbCXAAWwmAAFsJoABbCbAAWxFgAFsRgABbEaAAWxHAAFsR8ABbEgAAWxIQAFsSIABbEjAAWxJQAFsScABbEoAAWxKQAFsSsABbEsAAWxpwAFsakABbGsAAWxrgAFsbEABbGyAAWxswAFsbQABbG1AAWxtwAFsbkABbG6AAWxuwAFsb0ABbG+AAWx1wAFsdgABbHZAAWx2wAFslYABbJYAAWyWgAFslwABbJfAAWyYAAFsmEABbJiAAWyYwAFsmUABbJnAAWyaAAFsmkABbJrAAWybAAFsucABbLpAAWy6wAFsu0ABbLwAAWy8QAFsvIABbLzAAWy9AAFsvYABbL4AAWy+QAFsvoABbL8AAWy/QAFs3gABbN6AAWzfAAFs34ABbOBAAWzggAFs4MABbOEAAWzhQAFs4cABbOJAAWzigAFs4sABbONAAWzjgAFtAkABbQLAAW0DQAFtA8ABbQSAAW0EwAFtBQABbQVAAW0FgAFtBgABbQaAAW0GwAFtBwABbQeAAW0HwAFtJoABbScAAW0ngAFtKAABbSjAAW0pAAFtKUABbSmAAW0pwAFtKkABbSrAAW0rAAFtK0ABbSvAAW0sAAFtPkABbUdAAW1RAAFtWgABbVrAAW1bQAFtW8ABbVxAAW1cwAFtXUABbV2AAW1eQAFtZIABbWvAAW1sQAFtbMABbW1AAW1twAFtbkABbW7AAW1vQAFtdoABbXdAAW14AAFteMABbXmAAW16QAFtewABbXvAAW18QAFtmwABbZuAAW2cAAFtnIABbZ1AAW2dgAFtncABbZ4AAW2eQAFtnsABbZ9AAW2fgAFtn8ABbaBAAW2ggAFtv0ABbb/AAW3AQAFtwMABbcGAAW3BwAFtwgABbcJAAW3CgAFtwwABbcOAAW3DwAFtxAABbcSAAW3EwAFt44ABbeQAAW3kgAFt5QABbeXAAW3mAAFt5kABbeaAAW3mwAFt50ABbefAAW3oAAFt6EABbejAAW3pAAFuB8ABbghAAW4JAAFuCYABbgpAAW4KgAFuCsABbgsAAW4LQAFuC8ABbgxAAW4MgAFuDMABbg1AAW4NgAFuLEABbizAAW4tQAFuLcABbi6AAW4uwAFuLwABbi9AAW4vgAFuMAABbjCAAW4wwAFuMQABbjGAAW4xwAFuUIABblEAAW5RgAFuUgABblLAAW5TAAFuU0ABblOAAW5TwAFuVEABblTAAW5VAAFuVUABblXAAW5WAAFudMABbnVAAW51wAFudkABbncAAW53QAFud4ABbnfAAW54AAFueIABbnkAAW55QAFueYABbnoAAW56QAFunwABbqfAAW6vwAFut8ABbrhAAW64wAFuuUABbrnAAW66gAFuusABbrsAAW67wAFuvAABbryAAW68wAFuvUABbr4AAW6+QAFuvoABbr9AAW6/gAFuwMABbscAAW7JQAFuycABbspAAW7MgAFuzUABbs4AAW7OgAFu4MABbunAAW7zgAFu/IABbv1AAW79wAFu/kABbv7AAW7/QAFu/8ABbwAAAW8AwAFvBwABbw9AAW8PwAFvEEABbxDAAW8RQAFvEcABbxJAAW8SwAFvE0ABbxuAAW8cQAFvHQABbx3AAW8egAFvH0ABbyAAAW8gwAFvIYABbyIAAW9AwAFvQUABb0HAAW9CQAFvQwABb0NAAW9DgAFvQ8ABb0QAAW9EgAFvRQABb0VAAW9FgAFvRgABb0ZAAW9lAAFvZYABb2YAAW9mgAFvZ0ABb2eAAW9nwAFvaAABb2hAAW9owAFvaUABb2mAAW9pwAFvakABb2qAAW+JQAFvicABb4qAAW+LAAFvi8ABb4wAAW+MQAFvjIABb4zAAW+NQAFvjcABb44AAW+OQAFvjsABb48AAW+VQAFvlYABb5XAAW+WQAFvtQABb7WAAW+2AAFvtoABb7dAAW+3gAFvt8ABb7gAAW+4QAFvuMABb7lAAW+5gAFvucABb7pAAW+6gAFv2UABb9nAAW/aQAFv2sABb9uAAW/bwAFv3AABb9xAAW/cgAFv3QABb92AAW/dwAFv3gABb96AAW/ewAFv/YABb/4AAW/+gAFv/wABb//AAXAAAAFwAEABcACAAXAAwAFwAUABcAHAAXACAAFwAkABcALAAXADAAFwIcABcCJAAXAiwAFwI0ABcCQAAXAkQAFwJIABcCTAAXAlAAFwJYABcCYAAXAmQAFwJoABcCcAAXAnQAFwRgABcEaAAXBHAAFwR4ABcEhAAXBIgAFwSMABcEkAAXBJQAFwScABcEpAAXBKgAFwSsABcEtAAXBLgAFwXcABcGbAAXBwgAFweYABcHpAAXB6wAFwe0ABcHvAAXB8QAFwfMABcH0AAXB9wAFwhAABcItAAXCLwAFwjEABcIzAAXCNQAFwjcABcI5AAXCOwAFwlgABcJbAAXCXgAFwmEABcJkAAXCZwAFwmoABcJtAAXCbwAFwuoABcLsAAXC7gAFwvAABcLzAAXC9AAFwvUABcL2AAXC9wAFwvkABcL7AAXC/AAFwv0ABcL/AAXDAAAFw3sABcN9AAXDfwAFw4EABcOEAAXDhQAFw4YABcOHAAXDiAAFw4oABcOMAAXDjQAFw44ABcOQAAXDkQAFxAwABcQOAAXEEAAFxBIABcQVAAXEFgAFxBcABcQYAAXEGQAFxBsABcQdAAXEHgAFxB8ABcQhAAXEIgAFxJ0ABcSfAAXEogAFxKQABcSnAAXEqAAFxKkABcSqAAXEqwAFxK0ABcSvAAXEsAAFxLEABcSzAAXEtAAFxS8ABcUxAAXFMwAFxTUABcU4AAXFOQAFxToABcU7AAXFPAAFxT4ABcVAAAXFQQAFxUIABcVEAAXFRQAFxcAABcXCAAXFxAAFxcYABcXJAAXFygAFxcsABcXMAAXFzQAFxc8ABcXRAAXF0gAFxdMABcXVAAXF1gAFxlEABcZTAAXGVQAFxlcABcZaAAXGWwAFxlwABcZdAAXGXgAFxmAABcZiAAXGYwAFxmQABcZmAAXGZwAFxngABcZ5AAXGewAFxvYABcb4AAXG+gAFxvwABcb/AAXHAAAFxwEABccCAAXHAwAFxwUABccIAAXHCQAFxwoABccMAAXHDQAFx4gABceKAAXHjAAFx44ABceRAAXHkgAFx5MABceUAAXHlQAFx5cABceaAAXHmwAFx5wABceeAAXHnwAFyBoABcgcAAXIHwAFyCEABcgkAAXIJQAFyCYABcgnAAXIKAAFyCoABcgtAAXILgAFyC8ABcgxAAXIMgAFyMUABcjoAAXJCAAFySgABckqAAXJLAAFyS4ABckwAAXJMwAFyTQABck1AAXJOAAFyTkABck7AAXJPAAFyT4ABclBAAXJQgAFyUMABclGAAXJRwAFyUwABcllAAXJbgAFyXAABclyAAXJewAFyX4ABcmBAAXJgwAFycwABcnwAAXKFwAFyjsABco+AAXKQAAFykIABcpEAAXKRgAFykgABcpJAAXKTAAFymUABcqGAAXKiAAFyooABcqMAAXKjgAFypAABcqSAAXKlAAFypYABcq3AAXKugAFyr0ABcrAAAXKwwAFysYABcrJAAXKzAAFys8ABcrRAAXLTAAFy04ABctQAAXLUgAFy1UABctWAAXLVwAFy1gABctZAAXLWwAFy10ABcteAAXLXwAFy2EABctiAAXL3QAFy98ABcvhAAXL4wAFy+YABcvnAAXL6AAFy+kABcvqAAXL7AAFy+4ABcvvAAXL8AAFy/IABcvzAAXMbgAFzHAABcxzAAXMdQAFzHgABcx5AAXMegAFzHsABcx8AAXMfgAFzIAABcyBAAXMggAFzIQABcyFAAXMngAFzJ8ABcygAAXMogAFzR0ABc0fAAXNIQAFzSMABc0mAAXNJwAFzSgABc0pAAXNKgAFzSwABc0uAAXNLwAFzTAABc0yAAXNMwAFza4ABc2wAAXNsgAFzbQABc23AAXNuAAFzbkABc26AAXNuwAFzb0ABc2/AAXNwAAFzcEABc3DAAXNxAAFzj8ABc5BAAXOQwAFzkUABc5IAAXOSQAFzkoABc5LAAXOTAAFzk4ABc5QAAXOUQAFzlIABc5UAAXOVQAFztAABc7SAAXO1AAFztYABc7ZAAXO2gAFztsABc7cAAXO3QAFzt8ABc7hAAXO4gAFzuMABc7lAAXO5gAFz2EABc9jAAXPZQAFz2cABc9qAAXPawAFz2wABc9tAAXPbgAFz3AABc9yAAXPcwAFz3QABc92AAXPdwAFz8AABc/kAAXQCwAF0C8ABdAyAAXQNAAF0DYABdA4AAXQOgAF0DwABdA9AAXQQAAF0FkABdB2AAXQeAAF0HoABdB8AAXQfgAF0IAABdCCAAXQhAAF0KEABdCkAAXQpwAF0KoABdCtAAXQsAAF0LMABdC2AAXQuAAF0TMABdE1AAXRNwAF0TkABdE8AAXRPQAF0T4ABdE/AAXRQAAF0UIABdFEAAXRRQAF0UYABdFIAAXRSQAF0cQABdHGAAXRyAAF0coABdHNAAXRzgAF0c8ABdHQAAXR0QAF0dMABdHVAAXR1gAF0dcABdHZAAXR2gAF0lUABdJXAAXSWQAF0lsABdJeAAXSXwAF0mAABdJhAAXSYgAF0mQABdJmAAXSZwAF0mgABdJqAAX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kUgAF5FMABeRUAAXkVgAF5FgABeRZAAXkWgAF5FwABeRdAAXk2AAF5NoABeTcAAXk3gAF5OEABeTiAAXk4wAF5OQABeTlAAXk5wAF5OkABeTqAAXk6wAF5O0ABeTuAAXlaQAF5WsABeVuAAXlcAAF5XMABeV0AAXldQAF5XYABeV3AAXleQAF5XsABeV8AAXlfQAF5X8ABeWAAAXlmQAF5ZoABeWbAAXlnQAF5hgABeYaAAXmHAAF5h4ABeYhAAXmIgAF5iMABeYkAAXmJQAF5icABeYpAAXmKgAF5isABeYtAAXmLgAF5qkABearAAXmrQAF5q8ABeayAAXmswAF5rQABea1AAXmtgAF5rgABea6AAXmuwAF5rwABea+AAXmvwAF5zoABec8AAXnPgAF50AABedDAAXnRAAF50UABedGAAXnRwAF50kABedLAAXnTAAF500ABedPAAXnUAAF58sABefNAAXnzwAF59EABefUAAXn1QAF59YABefXAAXn2AAF59oABefcAAXn3QAF594ABefgAAXn4QAF6FwABeheAAXoYAAF6GIABehlAAXoZgAF6GcABehoAAXoaQAF6GsABehtAAXobgAF6G8ABehxAAXocgAF6LsABejfAAXpBgAF6SoABektAAXpLwAF6TEABekzAAXpNQAF6TcABek4AAXpOwAF6VQABelxAAXpcwAF6XUABel3AAXpeQAF6XsABel9AAXpfwAF6ZwABemfAAXpogAF6aUABemoAAXpqwAF6a4ABemxAAXpswAF6i4ABeowAAXqMgAF6jQABeo3AAXqOAAF6jkABeo6AAXqOwAF6j0ABeo/AAXqQAAF6kEABepDAAXqRAAF6r8ABerBAAXqwwAF6sUABerIAAXqyQAF6soABerLAAXqzAAF6s4ABerQAAXq0QAF6tIABerUAAXq1QAF61AABetSAAXrVAAF61YABetZAAXrWgAF61sABetcAAXrXQAF618ABethAAXrYgAF62MABetlAAXrZgAF6+EABevjAAXr5gAF6+gABevrAAXr7AAF6+0ABevuAAXr7wAF6/EABevzAAXr9AAF6/UABev3AAXr+AAF7HMABex1AAXsdwAF7HkABex8AAXsfQAF7H4ABex/AAXsgAAF7IIABeyEAAXshQAF7IYABeyIAAXsiQAF7QQABe0GAAXtCAAF7QoABe0NAAXtDgAF7Q8ABe0QAAXtEQAF7RMABe0VAAXtFgAF7RcABe0ZAAXtGgAF7ZUABe2XAAXtmQAF7ZsABe2eAAXtnwAF7aAABe2hAAXtogAF7aQABe2mAAXtpwAF7agABe2qAAXtqwAF7j4ABe5hAAXugQAF7qEABe6jAAXupQAF7qcABe6pAAXurAAF7q0ABe6uAAXusQAF7rIABe60AAXutQAF7rcABe66AAXuuwAF7rwABe6/AAXuwAAF7sUABe7eAAXu5wAF7ukABe7rAAXu9AAF7vcABe76AAXu/AAF70UABe9pAAXvkAAF77QABe+3AAXvuQAF77sABe+9AAXvvwAF78EABe/CAAXvxQAF794ABe//AAXwAQAF8AMABfAFAAXwBwAF8AkABfALAAXwDQAF8A8ABfAwAAXwMwAF8DYABfA5AAXwPAAF8D8ABfBCAAXwRQAF8EgABfBKAAXwxQAF8McABfDJAAXwywAF8M4ABfDPAAXw0AAF8NEABfDSAAXw1AAF8NYABfDXAAXw2AAF8NoABfDbAAXxVgAF8VgABfFaAAXxXAAF8V8ABfFgAAXxYQAF8WIABfFjAAXxZQAF8WcABfFoAAXxaQAF8WsABfFsAAXx5wAF8ekABfHsAAXx7gAF8fEABfHyAAXx8wAF8fQABfH1AAXx9wAF8fkABfH6AAXx+wAF8f0ABfH+AAXyFwAF8hgABfIZAAXyGwAF8pYABfKYAAXymgAF8pwABfKfAAXyoAAF8qEABfKiAAXyowAF8qUABfKnAAXyqAAF8qkABfKrAAXyrAAF8ycABfMpAAXzKwAF8y0ABfMwAAXzMQAF8zIABfMzAAXzNAAF8zYABfM4AAXzOQAF8zoABfM8AAXzPQAF87gABfO6AAXzvAAF874ABfPBAAXzwgAF88MABfPEAAXzxQAF88cABfPJAAXzygAF88sABfPNAAXzzgAF9EkABfRLAAX0TQAF9E8ABfRSAAX0UwAF9FQABfRVAAX0VgAF9FgABfRaAAX0WwAF9FwABfReAAX0XwAF9NoABfTcAAX03gAF9OAABfTjAAX05AAF9OUABfTmAAX05wAF9OkABfTrAAX07AAF9O0ABfTvAAX08AAF9TkABfVdAAX1hAAF9agABfWrAAX1rQAF9a8ABfWxAAX1swAF9bUABfW2AAX1uQAF9dIABfXvAAX18QAF9fMABfX1AAX19wAF9fkABfX7AAX1/QAF9hoABfYdAAX2IAAF9iMABfYmAAX2KQAF9iwABfYvAAX2MQAF9qwABfauAAX2sAAF9rIABfa1AAX2tgAF9rcABfa4AAX2uQAF9rsABfa9AAX2vgAF9r8ABfbBAAX2wgAF9z0ABfc/AAX3QQAF90MABfdGAAX3RwAF90gABfdJAAX3SgAF90wABfdOAAX3TwAF91AABfdSAAX3UwAF984ABffQAAX30gAF99QABffXAAX32AAF99kABffaAAX32wAF990ABfffAAX34AAF9+EABffjAAX35AAF+F8ABfhhAAX4ZAAF+GYABfhpAAX4agAF+GsABfhsAAX4bQAF+G8ABfhxAAX4cgAF+HMABfh1AAX4dgAF+PEABfjzAAX49QAF+PcABfj6AAX4+wAF+PwABfj9AAX4/gAF+QAABfkCAAX5AwAF+QQABfkGAAX5BwAF+YIABfmEAAX5hgAF+YgABfmLAAX5jAAF+Y0ABfmOAAX5jwAF+ZEABfmTAAX5lAAF+ZUABfmXAAX5mAAF+hMABfoVAAX6FwAF+hkABfocAAX6HQAF+h4ABfofAAX6IAAF+iIABfokAAX6JQAF+iYABfooAAX6KQAF+rwABfrfAAX6/wAF+x8ABfshAAX7IwAF+yUABfsnAAX7KgAF+ysABfssAAX7LwAF+zAABfsyAAX7MwAF+zUABfs4AAX7OQAF+zoABfs9AAX7PgAF+0cABftgAAX7aQAF+2sABfttAAX7dgAF+3kABft8AAX7fgAF+8cABfvrAAX8EgAF/DYABfw5AAX8OwAF/D0ABfw/AAX8QQAF/EMABfxEAAX8RwAF/GAABfyBAAX8gwAF/IUABfyHAAX8iQAF/IsABfyNAAX8jwAF/JEABfyyAAX8tQAF/LgABfy7AAX8vgAF/MEABfzEAAX8xwAF/MoABfzMAAX9RwAF/UkABf1LAAX9TQAF/VAABf1RAAX9UgAF/VMABf1UAAX9VgAF/VgABf1ZAAX9WgAF/VwABf1dAAX92AAF/doABf3cAAX93gAF/eEABf3iAAX94wAF/eQABf3lAAX95wAF/ekABf3qAAX96wAF/e0ABf3uAAX+aQAF/msABf5uAAX+cAAF/nMABf50AAX+dQAF/nYABf53AAX+eQAF/nsABf58AAX+fQAF/n8ABf6AAAX+mQAF/poABf6bAAX+nQAF/xgABf8aAAX/HAAF/x4ABf8hAAX/IgAF/yMABf8kAAX/JQAF/ycABf8pAAX/KgAF/ysABf8tAAX/LgAF/6kABf+rAAX/rQAF/68ABf+yAAX/swAF/7QABf+1AAX/tgAF/7gABf+6AAX/uwAF/7wABf++AAX/vwAGADoABgA8AAYAPgAGAEAABgBDAAYARAAGAEUABgBGAAYARwAGAEkABgBLAAYATAAGAE0ABgBPAAYAUAAGAMsABgDNAAYAzwAGANEABgDUAAYA1QAGANYABgDXAAYA2AAGANoABgDcAAYA3QAGAN4ABgDgAAYA4QAGAVwABgFeAAYBYAAGAWIABgFlAAYBZgAGAWcABgFoAAYBaQAGAWsABgFtAAYBbgAGAW8ABgFxAAYBcgAGAbsABgHfAAYCBgAGAioABgItAAYCLwAGAjEABgIzAAYCNQAGAjcABgI4AAYCOwAGAlQABgJxAAYCcwAGAnUABgJ3AAYCeQAGAnsABgJ9AAYCfwAGApwABgKfAAYCogAGAqUABgKoAAYCqwAGAq4ABgKxAAYCswAGAy4ABgMwAAYDMgAGAzQABgM3AAYDOAAGAzkABgM6AAYDOwAGAz0ABgM/AAYDQAAGA0EABgNDAAYDRAAGA78ABgPBAAYDwwAGA8UABgPIAAYDyQAGA8oABgPLAAYDzAAGA84ABgPQAAYD0QAGA9IABgPUAAYD1QAGBFAABgRSAAYEVAAGBFYABgRZAAYEWgAGBFsABgRcAAYEXQAGBF8ABgRhAAYEYgAGBGMABgRlAAYEZgAGBOEABgTjAAYE5gAGBOgABgTrAAYE7AAGBO0ABgTuAAYE7wAGBPEABgTzAAYE9AAGBPUABgT3AAYE+AAGBXMABgV1AAYFdwAGBXkABgV8AAYFfQAGBX4ABgV/AAYFgAAGBYIABgWEAAYFhQAGBYYABgWIAAYFiQAGBgQABgYGAAYGCAAGBgoABgYNAAYGDgAGBg8ABgYQAAYGEQAGBhMABgYVAAYGFgAGBhcABgYZAAYGGgAGBpUABgaXAAYGmQAGBpsABgaeAAYGnwAGBqAABgahAAYGogAGBqQABgamAAYGpwAGBqgABgaqAAYGqwAGBz4ABgdhAAYHgQAGB6EABgejAAYHpQAGB6cABgepAAYHrAAGB60ABgeuAAYHsQAGB7IABge0AAYHtQAGB7cABge6AAYHuwAGB7wABge/AAYHwAAGB8UABgfeAAYH5wAGB+kABgfrAAYH9AAGB/cABgf6AAYH/AAGCEUABghpAAYIkAAGCLQABgi3AAYIuQAGCLsABgi9AAYIvwAGCMEABgjCAAYIxQAGCN4ABgj/AAYJAQAGCQMABgkFAAYJBwAGCQkABgkLAAYJDQAGCQ8ABgkwAAYJMwAGCTYABgk5AAYJPAAGCT8ABglCAAYJRQAGCUgABglKAAYJxQAGCccABgnJAAYJywAGCc4ABgnPAAYJ0AAGCdEABgnSAAYJ1AAGCdYABgnXAAYJ2AAGCdoABgnbAAYKVgAGClgABgpaAAYKXAAGCl8ABgpgAAYKYQAGCmIABgpjAAYKZQAGCmcABgpoAAYKaQAGCmsABgpsAAYK5wAGCukABgrsAAYK7gAGCvEABgryAAYK8wAGCvQABgr1AAYK9wAGCvkABgr6AAYK+wAGCv0ABgr+AAYLFwAGCxgABgsZAAYLGwAGC5YABguYAAYLmgAGC5wABgufAAYLoAAGC6EABguiAAYLowAGC6UABgunAAYLqAAGC6kABgurAAYLrAAGDCcABgwpAAYMKwAGDC0ABgwwAAYMMQAGDDIABgwzAAYMNAAGDDYABgw4AAYMOQAGDDoABgw8AAYMPQAGDLgABgy6AAYMvAAGDL4ABgzBAAYMwgAGDMMABgzEAAYMxQAGDMcABgzJAAYMygAGDMsABgzNAAYMzgAGDUkABg1LAAYNTQAGDU8ABg1SAAYNUwAGDVQABg1VAAYNVgAGDVgABg1aAAYNWwAGDVwABg1eAAYNXwAGDdoABg3cAAYN3gAGDeAABg3jAAYN5AAGDeUABg3mAAYN5wAGDekABg3rAAYN7AAGDe0ABg3vAAYN8AAGDjkABg5dAAYOhAAGDqgABg6rAAYOrQAGDq8ABg6xAAYOswAGDrUABg62AAYOuQAGDtIABg7vAAYO8QAGDvMABg71AAYO9wAGDvkABg77AAYO/QAGDxoABg8dAAYPIAAGDyMABg8mAAYPKQAGDywABg8vAAYPMQAGD6wABg+uAAYPsAAGD7IABg+1AAYPtgAGD7cABg+4AAYPuQAGD7sABg+9AAYPvgAGD78ABg/BAAY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huwAGIb0ABiG+AAYhwQAGIdoABiH7AAYh/QAGIf8ABiIBAAYiAwAGIgUABiIHAAYiCQAGIgsABiIsAAYiLwAGIjIABiI1AAYiOAAGIjsABiI+AAYiQQAGIkQABiJGAAYiwQAGIsMABiLFAAYixwAGIsoABiLLAAYizAAGIs0ABiLOAAYi0AAGItIABiLTAAYi1AAGItYABiLXAAYjUgAGI1QABiNWAAYjWAAGI1sABiNcAAYjXQAGI14ABiNfAAYjYQAGI2MABiNkAAYjZQAGI2cABiNoAAYj4wAGI+UABiPoAAYj6gAGI+0ABiPuAAYj7wAGI/AABiPxAAYj8wAGI/UABiP2AAYj9wAGI/kABiP6AAYkEwAGJBQABiQVAAYkFwAGJJIABiSUAAYklgAGJJgABiSbAAYknAAGJJ0ABiSeAAYknwAGJKEABiSjAAYkpAAGJKUABiSnAAYkqAAGJSMABiUlAAYlJwAGJSkABiUsAAYlLQAGJS4ABiUvAAYlMAAGJTIABiU0AAYlNQAGJTYABiU4AAYlOQAGJbQABiW2AAYluAAGJboABiW9AAYlvgAGJb8ABiXAAAYlwQAGJcMABiXFAAYlxgAGJccABiXJAAYlygAGJkUABiZHAAYmSQAGJksABiZOAAYmTwAGJlAABiZRAAYmUgAGJlQABiZWAAYmVwAGJlgABiZaAAYmWwAGJtYABibYAAYm2gAGJtwABibfAAYm4AAGJuEABibiAAYm4wAGJuUABibnAAYm6AAGJukABibrAAYm7AAGJzUABidZAAYngAAGJ6QABienAAYnqQAGJ6sABietAAYnrwAGJ7EABieyAAYntQAGJ84ABifrAAYn7QAGJ+8ABifxAAYn8wAGJ/UABif3AAYn+QAGKBYABigZAAYoHAAGKB8ABigiAAYoJQAGKCgABigrAAYoLQAGKKgABiiqAAYorAAGKK4ABiixAAYosgAGKLMABii0AAYotQAGKLcABii5AAYougAGKLsABii9AAYovgAGKTkABik7AAYpPQAGKT8ABilCAAYpQwAGKUQABilFAAYpRgAGKUgABilKAAYpSwAGKUwABilOAAYpTwAGKcoABinMAAYpzgAGKdAABinTAAYp1AAGKdUABinWAAYp1wAGKdkABinbAAYp3AAGKd0ABinfAAYp4AAGKlsABipdAAY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FggAGRYQABkWGAAZFiQAGRYwABkWNAAZFkgAGRasABkWwAAZFsgAGRbcABkW6AAZFvAAGRgUABkYpAAZGUAAGRnQABkZ3AAZGeQAGRnsABkZ9AAZGfwAGRoEABkaCAAZGhQAGRp4ABkbDAAZGxQAGRscABkbJAAZGywAGRs0ABkbPAAZG0QAGRtMABkbVAAZG+gAGRv0ABkcAAAZHAwAGRwYABkcJAAZHDAAGRw8ABkcSAAZHFQAGRxcABkeSAAZHlAAGR5cABkeZAAZHnAAGR50ABkeeAAZHnwAGR6AABkeiAAZHpAAGR6UABkemAAZHqAAGR6kABke6AAZHuwAGR70ABkg4AAZIOgAGSDwABkg+AAZIQQAGSEIABkhDAAZIRAAGSEUABkhHAAZISQAGSEoABkhLAAZITQAGSE4ABkjJAAZIywAGSM4ABkjQAAZI0wAGSNQABkjVAAZI1gAGSNcABkjZAAZI2wAGSNwABkjdAAZI3wAGSOAABkjxAAZI8gAGSPQABklvAAZJcQAGSXMABkl1AAZJeAAGSXkABkl6AAZJewAGSXwABkl+AAZJgAAGSYEABkmCAAZJhAAGSYUABkoAAAZKAgAGSgUABkoHAAZKCgAGSgsABkoMAAZKDQAGSg4ABkoQAAZKEgAGShMABkoUAAZKFgAGShcABkooAAZKKQAGSisABkqmAAZKqAAGSqoABkqsAAZKrwAGSrAABkqxAAZKsgAGSrMABkq1AAZKtwAGSrgABkq5AAZKuwAGSrwABks3AAZLOQAGSzwABks+AAZLQQAGS0IABktDAAZLRAAGS0UABktHAAZLSQAGS0oABktLAAZLTQAGS04ABktnAAZLaAAGS2kABktrAAZL5gAGS+gABkvqAAZL7AAGS+8ABkvwAAZL8QAGS/IABkvzAAZL9QAGS/cABkv4AAZL+QAGS/sABkv8AAZMdwAGTHkABkx8AAZMfgAGTIEABkyCAAZMgwAGTIQABkyFAAZMhwAGTIkABkyKAAZMiwAGTI0ABkyOAAZMnAAGTLUABkzmAAZM6QAGTOwABkzvAAZM8gAGTPUABkz4AAZM+wAGTP4ABk0BAAZNBAAGTQcABk0KAAZNOwAGTT4ABk1BAAZNRAAGTUcABk1KAAZNTQAGTVAABk1TAAZNVgAGTVkABk1cAAZNXwAGTWEABk1vAAZNigAGTZwABk2zAAZNyQAGTdcABk3mAAZN+gAGTgUABk4SAAZOIQAGTioABk69AAZO4AAGTwAABk8gAAZPIgAGTyQABk8mAAZPKAAGTysABk8sAAZPLQAGTzAABk8xAAZPMwAGTzQABk83AAZPOgAGTzsABk88AAZPPwAGT0AABk9FAAZPXgAGT2cABk9pAAZPbAAGT3UABk94AAZPewAGT30ABk/GAAZP6gAGUBEABlA1AAZQOAAGUDoABlA8AAZQPgAGUEAABlBCAAZQQwAGUEYABlBfAAZQgAAGUIIABlCEAAZQhgAGUIgABlCKAAZQjAAGUI4ABlCQAAZQsQAGULQABlC3AAZQugAGUL0ABlDAAAZQwwAGUMYABlDJAAZQywAGUUYABlFIAAZRSgAGUUwABlFPAAZRUAAGUVEABlFSAAZRUwAGUVUABlFXAAZRWAAGUVkABlFbAAZRXAAGUdcABlHZAAZR2wAGUd0ABlHgAAZR4QAGUeIABlHjAAZR5AAGUeYABlHoAAZR6QAGUeoABlHsAAZR7QAGUmgABlJqAAZSbQAGUm8ABlJyAAZScwAGUnQABlJ1AAZSdgAGUngABlJ6AAZSewAGUnwABlJ+AAZSfwAGUpgABlKZAAZSmgAGUpwABlMXAAZTGQAGUxsABlMdAAZTIAAGUyEABlMiAAZTIwAGUyQABlMmAAZTKAAGUykABlMqAAZTLAAGUy0ABlOoAAZTqgAGU6wABlOuAAZTsQAGU7IABlOzAAZTtAAGU7UABlO3AAZTuQAGU7oABlO7AAZTvQAGU74ABlQ5AAZUOwAGVD0ABlQ/AAZUQgAGVEMABlREAAZURQAGVEYABlRIAAZUSgAGVEsABlRMAAZUTgAGVE8ABlTKAAZUzAAGVM4ABlTQAAZU0wAGVNQABlTVAAZU1gAGVNcABlTZAAZU2wAGVNwABlTdAAZU3wAGVOAABlVbAAZVXQAGVV8ABlVhAAZVZAAGVWUABlVmAAZVZwAGVWgABlVqAAZVbAAGVW0ABlVuAAZVcAAGVXEABlW6AAZV3gAGVgUABlYpAAZWLAAGVi8ABlYxAAZWMwAGVjUABlY3AAZWOAAGVjsABlZUAAZWcQAGVnQABlZ3AAZWegAGVn0ABlaAAAZWgwAGVoYABlajAAZWpgAGVqkABlasAAZWrwAGVrIABla1AAZWuAAGVroABlc1AAZXNwAGVzoABlc8AAZXPwAGV0AABldBAAZXQgAGV0MABldFAAZXSAAGV0kABldKAAZXTAAGV00ABlfIAAZXygAGV80ABlfPAAZX0gAGV9MABlfUAAZX1QAGV9YABlfYAAZX2wAGV9wABlfdAAZX3wAGV+AABlhbAAZYXQAGWGAABlhiAAZYZQAGWGYABlhnAAZYaAAGWGkABlhrAAZYbgAGWG8ABlhwAAZYcgAGWHMABljuAAZY8AAGWPMABlj1AAZY+AAGWPkABlj6AAZY+wAGWPwABlj+AAZZAQAGWQIABlkDAAZZBQAGWQYABlmpAAZZzQAGWfEABloRAAZaOAAGWl8ABlp/AAZapgAGWsoABlrtAAZbFAAGWzgABltcAAZbgAAGW6cABluoAAZbqgAGW6wABluvAAZbsQAGW7QABlu2AAZbuAAGW7sABlu9AAZbvwAGW8IABlvFAAZbxwAGW8kABlvLAAZbzgAGW9EABlvUAAZb2QAGW/IABlv3AAZb+QAGW/4ABlwBAAZcAwAGXEwABlxwAAZclwAGXLsABly+AAZcwAAGXMIABlzEAAZcxgAGXMgABlzJAAZczAAGXOUABl0KAAZdDAAGXQ4ABl0QAAZdEgAGXRQABl0WAAZdGAAGXRoABl0cAAZdQQAGXUQABl1HAAZdSgAGXU0ABl1QAAZdUwAGXVYABl1ZAAZdXAAGXV4ABl3ZAAZd2wAGXd4ABl3gAAZd4wAGXeQABl3lAAZd5gAGXecABl3pAAZd6wAGXewABl3tAAZd7wAGXfAABl4BAAZeAgAGXgQABl5/AAZegQAGXoMABl6FAAZeiAAGXokABl6KAAZeiwAGXowABl6OAAZekAAGXpEABl6SAAZelAAGXpUABl8QAAZfEgAGXxUABl8XAAZfGgAGXxsABl8cAAZfHQAGXx4ABl8gAAZfIgAGXyMABl8kAAZfJgAGXycABl84AAZfOQAGXzsABl+2AAZfuAAGX7oABl+8AAZfvwAGX8AABl/BAAZfwgAGX8MABl/FAAZfxwAGX8gABl/JAAZfywAGX8wABmBHAAZgSQAGYEwABmBOAAZgUQAGYFIABmBTAAZgVAAGYFUABmBXAAZgWQAGYFoABmBbAAZgXQAGYF4ABmBvAAZgcAAGYHIABmDtAAZg7wAGYPEABmDzAAZg9gAGYPcABmD4AAZg+QAGYPoABmD8AAZg/gAGYP8ABmEAAAZhAgAGYQMABmF+AAZhgAAGYYMABmGFAAZhiAAGYYkABmGKAAZhiwAGYYwABmGOAAZhkAAGYZEABmGSAAZhlAAGYZUABmGuAAZhrwAGYbAABmGyAAZiLQAGYi8ABmIxAAZiMwAGYjYABmI3AAZiOAAGYjkABmI6AAZiPAAGYj4ABmI/AAZiQAAGYkIABmJDAAZivgAGYsAABmLDAAZixQAGYsgABmLJAAZiygAGYssABmLMAAZizgAGYtAABmLRAAZi0gAGYtQABmLVAAZi4gAGYvsABmMUAAZjFwAGYxoABmMdAAZjIAAGYyMABmMmAAZjPwAGY0IABmNFAAZjSAAGY0sABmNOAAZjUQAGY1MABmNhAAZjdwAGY4AABmONAAZjowAGY7YABmRJAAZkbAAGZIwABmSsAAZkrgAGZLAABmSyAAZktAAGZLcABmS4AAZkuQAGZLwABmS9AAZkvwAGZMAABmTDAAZkxgAGZMcABmTIAAZkywAGZMwABmTRAAZk6gAGZPMABmT1AAZk+AAGZQEABmUEAAZlBwAGZQkABmVSAAZldgAGZZ0ABmXBAAZlxAAGZcYABmXIAAZlygAGZcwABmXOAAZlzwAGZdIABmXrAAZmDAAGZg4ABmYQAAZmEgAGZhQABmYWAAZmGAAGZhoABmYcAAZmPQAGZkAABmZDAAZmRgAGZkkABmZMAAZmTwAGZlIABmZVAAZmVwAGZtIABmbUAAZm1gAGZtgABmbbAAZm3AAGZt0ABmbeAAZm3wAGZuEABmbjAAZm5AAGZuUABmbnAAZm6AAGZ2MABmdlAAZnZwAGZ2kABmdsAAZnbQAGZ24ABmdvAAZncAAGZ3IABmd0AAZndQAGZ3YABmd4AAZneQAGZ/QABmf2AAZn+QAGZ/sABmf+AAZn/wAGaAAABmgBAAZoAgAGaAQABmgGAAZoBwAGaAgABmgKAAZoCwAGaCQABmglAAZoJgAGaCgABmijAAZopQAGaKcABmipAAZorAAGaK0ABmiuAAZorwAGaLAABmiyAAZotAAGaLUABmi2AAZouAAGaLkABmk0AAZpNgAGaTgABmk6AAZpPQAGaT4ABmk/AAZpQAAGaUEABmlDAAZpRQAGaUYABmlHAAZpSQAGaUoABmnFAAZpxwAGackABmnLAAZpzgAGac8ABmnQAAZp0QAGadIABmnUAAZp1gAGadcABmnYAAZp2gAGadsABmpWAAZqWAAGaloABmpcAAZqXwAGamAABmphAAZqYgAGamMABmplAAZqZwAGamgABmppAAZqawAGamwABmrnAAZq6QAGausABmrtAAZq8AAGavEABmryAAZq8wAGavQABmr2AAZq+AAGavkABmr6AAZq/AAGav0ABmtGAAZragAGa5EABmu1AAZruAAGa7sABmu9AAZrvwAGa8EABmvDAAZrxAAGa8cABmvgAAZr/QAGbAAABmwDAAZsBgAGbAkABmwMAAZsDwAGbBIABmwvAAZsMgAGbDUABmw4AAZsOwAGbD4ABmxBAAZsRAAGbEYABmzBAAZswwAGbMYABmzIAAZsywAGbMwABmzNAAZszgAGbM8ABmzRAAZs1AAGbNUABmzWAAZs2AAGbNkABm1UAAZtVgAGbVkABm1bAAZtXgAGbV8ABm1gAAZtYQAGbWIABm1kAAZtZwAGbWgABm1pAAZtawAGbWwABm3nAAZt6QAGbewABm3uAAZt8QAGbfIABm3zAAZt9AAGbfUABm33AAZt+gAGbfsABm38AAZt/gAGbf8ABm56AAZufAAGbn8ABm6BAAZuhAAGboUABm6GAAZuhwAGbogABm6KAAZujQAGbo4ABm6PAAZukQAGbpIABm8NAAZvDwAGbxEABm8TAAZvFgAGbxcABm8YAAZvGQAGbxoABm8cAAZvHwAGbyAABm8hAAZvIwAGbyQABm+fAAZvoQAGb6MABm+lAAZvqAAGb6kABm+qAAZvqwAGb6wABm+uAAZvsQAGb7IABm+zAAZvtQAGb7YABnAxAAZwMwAGcDYABnA4AAZwOwAGcDwABnA9AAZwPgAGcD8ABnBBAAZwRAAGcEUABnBGAAZwSAAGcEkABnDcAAZw/wAGcR8ABnE/AAZxQQAGcUMABnFFAAZxRwAGcUoABnFLAAZxTAAGcU8ABnFQAAZxUgAGcVMABnFVAAZxWAAGcVkABnFaAAZxXQAGcV4ABnFjAAZxfAAGcYUABnGHAAZxiQAGcZIABnGVAAZxmAAGcZoABnHjAAZyBwAGci4ABnJSAAZyVQAGclcABnJZAAZyWwAGcl0ABnJfAAZyYAAGcmMABnJ8AAZynQAGcp8ABnKhAAZyowAGcqUABnKnAAZyqQAGcqsABnKtAAZyzgAGctEABnLUAAZy1wAGctoABnLdAAZy4AAGcuMABnLmAAZy6AAGc2MABnNlAAZzZwAGc2kABnNsAAZzbQAGc24ABnNvAAZzcAAGc3IABnN0AAZzdQAGc3YABnN4AAZzeQAGc/QABnP2AAZz+AAGc/oABnP9AAZz/gAGc/8ABnQAAAZ0AQAGdAMABnQFAAZ0BgAGdAcABnQJAAZ0CgAGdIUABnSHAAZ0igAGdIwABnSPAAZ0kAAGdJEABnSSAAZ0kwAGdJUABnSXAAZ0mAAGdJkABnSbAAZ0nAAGdLUABnS2AAZ0twAGdLkABnU0AAZ1NgAGdTgABnU6AAZ1PQAGdT4ABnU/AAZ1QAAGdUEABnVDAAZ1RQAGdUYABnVHAAZ1SQAGdUoABnXFAAZ1xwAGdckABnXLAAZ1zgAGdc8ABnXQAAZ10QAGddIABnXUAAZ11gAGddcABnXYAAZ12gAGddsABnZWAAZ2WAAGdloABnZcAAZ2XwAGdmAABnZhAAZ2YgAGdmMABnZlAAZ2ZwAGdmgABnZpAAZ2awAGdmwABnbnAAZ26QAGdusABnbtAAZ28AAGdvEABnbyAAZ28wAGdvQABnb2AAZ2+AAGdvkABnb6AAZ2/AAGdv0ABnd4AAZ3egAGd3wABnd+AAZ3gQAGd4IABneDAAZ3hAAGd4UABneHAAZ3iQAGd4oABneLAAZ3jQAGd44ABnfXAAZ3+wAGeCIABnhGAAZ4SQAGeEsABnhNAAZ4TwAGeFEABnhTAAZ4VAAGeFcABnhwAAZ4jQAGeI8ABniRAAZ4kwAGeJUABniXAAZ4mQAGeJsABni4AAZ4uwAGeL4ABnjBAAZ4xAAGeMcABnjKAAZ4zQAGeM8ABnlKAAZ5TAAGeU4ABnlQAAZ5UwAGeVQABnlVAAZ5VgAGeVcABnlZAAZ5WwAGeVwABnldAAZ5XwAGeWAABnnbAAZ53QAGed8ABnnhAAZ55AAGeeUABnnmAAZ55wAGeegABnnqAAZ57AAGee0ABnnuAAZ58AAGefEABnpsAAZ6bgAGenAABnpyAAZ6dQAGenYABnp3AAZ6eAAGenkABnp7AAZ6fQAGen4ABnp/AAZ6gQAGeoIABnr9AAZ6/wAGewEABnsDAAZ7BgAGewcABnsIAAZ7CQAGewoABnsMAAZ7DgAGew8ABnsQAAZ7EgAGexMABnuOAAZ7kAAGe5IABnuUAAZ7lwAGe5gABnuZAAZ7mgAGe5sABnudAAZ7nwAGe6AABnuhAAZ7owAGe6QABnwfAAZ8IQAGfCMABnwlAAZ8KAAGfCkABnwqAAZ8KwAGfCwABnwuAAZ8MAAGfDEABnwyAAZ8NAAGfDUABnywAAZ8sgAGfLQABny2AAZ8uQAGfLoABny7AAZ8vAAGfL0ABny/AAZ8wQAGfMIABnzDAAZ8xQAGfMYABn1ZAAZ9fAAGfZwABn28AAZ9vgAGfcAABn3CAAZ9xAAGfccABn3IAAZ9yQAGfcwABn3NAAZ9zwAGfdAABn3SAAZ91QAGfdYABn3XAAZ92gAGfdsABn3kAAZ9/QAGfgYABn4IAAZ+CgAGfhMABn4WAAZ+GQAGfhsABn5kAAZ+iAAGfq8ABn7TAAZ+1gAGftgABn7aAAZ+3AAGft4ABn7gAAZ+4QAGfuQABn79AAZ/HgAGfyAABn8iAAZ/JAAGfyYABn8oAAZ/KgAGfywABn8uAAZ/TwAGf1IABn9VAAZ/WAAGf1sABn9eAAZ/YQAGf2QABn9nAAZ/aQAGf+QABn/mAAZ/6AAGf+oABn/tAAZ/7gAGf+8ABn/wAAZ/8QAGf/MABn/1AAZ/9gAGf/cABn/5AAZ/+gAGgHUABoB3AAaAeQAGgHsABoB+AAaAfwAGgIAABoCBAAaAggAGgIQABoCGAAaAhwAGgIgABoCKAAaAiwAGgQYABoEIAAaBCwAGgQ0ABoEQAAaBEQAGgRIABoETAAaBFAAGgRYABoEYAAaBGQAGgRoABoEcAAaBHQAGgTYABoE3AAaBOAAGgToABoG1AAaBtwAGgbkABoG7AAaBvgAGgb8ABoHAAAaBwQAGgcIABoHEAAaBxgAGgccABoHIAAaBygAGgcsABoJGAAaCSAAGgkoABoJMAAaCTwAGglAABoJRAAaCUgAGglMABoJVAAaCVwAGglgABoJZAAaCWwAGglwABoLXAAaC2QAGgtsABoLdAAaC4AAGguEABoLiAAaC4wAGguQABoLmAAaC6AAGgukABoLqAAaC7AAGgu0ABoNoAAaDagAGg2wABoNuAAaDcQAGg3IABoNzAAaDdAAGg3UABoN3AAaDeQAGg3oABoN7AAaDfQAGg34ABoP5AAaD+wAGg/0ABoP/AAaEAgAGhAMABoQEAAaEBQAGhAYABoQIAAaECgAGhAsABoQMAAaEDgAGhA8ABoRYAAaEfAAGhKMABoTHAAaEygAGhMwABoTOAAaE0AAGhNIABoTUAAaE1QAGhNgABoTxAAaFDgAGhRAABoUSAAaFFAAGhRYABoUYAAaFGgAGhRwABoU5AAaFPAAGhT8ABoVCAAaFRQAGhUgABoVLAAaFTgAGhVAABoXLAAaFzQAGhc8ABoXRAAaF1AAGhdUABoXWAAaF1wAGhdgABoXaAAaF3AAGhd0ABoXeAAaF4AAGheEABoZcAAaGXgAGhmAABoZiAAaGZQAGhmYABoZnAAaGaAAGhmkABoZrAAaGbQAGhm4ABoZvAAaGcQAGhnIABobtAAaG7wAGhvEABobzAAaG9gAGhvcABob4AAaG+QAGhvoABob8AAaG/gAGhv8ABocAAAaHAgAGhwMABod+AAaHgAAGh4IABoeEAAaHhwAGh4gABoeJAAaHigAGh4sABoeNAAaHjwAGh5AABoeRAAaHkwAGh5QABogPAAaIEQAGiBMABogVAAaIGAAGiBkABogaAAaIGwAGiBwABogeAAaIIAAGiCEABogiAAaIJAAGiCUABoigAAaIogAGiKUABoinAAaIqgAGiKsABoisAAaIrQAGiK4ABoiwAAaIsgAGiLMABoi0AAaItgAGiLcABojGAAaJQQAGiUMABolFAAaJRwAGiUoABolLAAaJTAAGiU0ABolOAAaJUAAGiVIABolTAAaJVAAGiVYABolXAAaJ6gAGig0ABootAAaKTQAGik8ABopRAAaKUwAGilUABopYAAaKWQAGiloABopdAAaKXgAGimAABophAAaKZAAGimcABopoAAaKaQAGimwABoptAAaKcgAGiosABoqUAAaKlgAGipkABoqiAAaKpQAGiqgABoqqAAaK8wAGixcABos+AAaLYgAGi2UABotnAAaLaQAGi2sABottAAaLbwAGi3AABotzAAaLjAAGi60ABouvAAaLsQAGi7MABou1AAaLtwAGi7kABou7AAaLvQAGi94ABovhAAaL5AAGi+cABovqAAaL7QAGi/AABovzAAaL9gAGi/gABoxzAAaMdQAGjHcABox5AAaMfAAGjH0ABox+AAaMfwAGjIAABoyCAAaMhAAGjIUABoyGAAaMiAAGjIkABo0EAAaNBgAGjQgABo0KAAaNDQAGjQ4ABo0PAAaNEAAGjREABo0TAAaNFQAGjRYABo0XAAaNGQAGjRoABo2VAAaNlwAGjZoABo2cAAaNnwAGjaAABo2hAAaNogAGjaMABo2lAAaNpwAGjagABo2pAAaNqwAGjawABo3FAAaNxgAGjccABo3JAAaORAAGjkYABo5IAAaOSgAGjk0ABo5OAAaOTwAGjlAABo5RAAaOUwAGjlUABo5WAAaOVwAGjlkABo5aAAaO1QAGjtcABo7ZAAaO2wAGjt4ABo7fAAaO4AAGjuEABo7iAAaO5AAGjuYABo7nAAaO6AAGjuoABo7rAAaPZgAGj2gABo9qAAaPbAAGj28ABo9wAAaPcQAGj3IABo9zAAaPdQAGj3cABo94AAaPeQAGj3sABo98AAaP9wAGj/kABo/7AAaP/QAGkAAABpABAAaQAgAGkAMABpAEAAaQBgAGkAgABpAJAAaQCgAGkAwABpANAAaQiAAGkIoABpCMAAaQjgAGkJEABpCSAAaQkwAGkJQABpCVAAaQlwAGkJkABpCaAAaQmwAGkJ0ABpCeAAaQ5wAGkQsABpEyAAaRVgAGkVkABpFcAAaRXgAGkWAABpFiAAaRZAAGkWUABpFoAAaRgQAGkZ4ABpGhAAaRpAAGkacABpGqAAaRrQAGkbAABpGzAAaR0AAGkdMABpHWAAaR2QAGkdwABpHfAAaR4gAGkeUABpHnAAaSYgAGkmQABpJnAAaSaQAGkmwABpJtAAaSbgAGkm8ABpJwAAaScgAGknUABpJ2AAaSdwAGknkABpJ6AAaS9QAGkvcABpL6AAaS/AAGkv8ABpMAAAaTAQAGkwIABpMDAAaTBQAGkwgABpMJAAaTCgAGkwwABpMNAAaTiAAGk4oABpONAAaTjwAGk5IABpOTAAaTlAAGk5UABpOWAAaTmAAGk5sABpOcAAaTnQAGk58ABpOgAAaUGwAGlB0ABpQgAAaUIgAGlCUABpQmAAaUJwAGlCgABpQpAAaUKwAGlC4ABpQvAAaUMAAGlDIABpQzAAaUrgAGlLAABpSyAAaUtAAGlLcABpS4AAaUuQAGlLoABpS7AAaUvQAGlMAABpTBAAaUwgAGlMQABpTFAAaVQAAGlUIABpVEAAaVRgAGlUkABpVKAAaVSwAGlUwABpVNAAaVTwAGlVIABpVTAAaVVAAGlVYABpVXAAaV0gAGldQABpXXAAaV2QAGldwABpXdAAaV3gAGld8ABpXgAAaV4gAGleUABpXmAAaV5wAGlekABpXqAAaWfQAGlqAABpbAAAaW4AAGluIABpbkAAaW5gAGlugABpbrAAaW7AAGlu0ABpbwAAaW8QAGlvMABpb0AAaW9wAGlvoABpb7AAaW/AAGlv8ABpcAAAaXCQAGlyIABpcrAAaXLQAGlzAABpc5AAaXPAAGlz8ABpdBAAaXigAGl64ABpfVAAaX+QAGl/wABpf+AAaYAAAGmAIABpgEAAaYBgAGmAcABpgKAAaYIwAGmEQABphGAAaYSAAGmEoABphMAAaYTgAGmFAABphSAAaYVAAGmHUABph4AAaYewAGmH4ABpiBAAaYhAAGmIcABpiKAAaYjQAGmI8ABpkKAAaZDAAGmQ4ABpkQAAaZEwAGmRQABpkVAAaZFgAGmRcABpkZAAaZGwAGmRwABpkdAAaZHwAGmSAABpmbAAaZnQAGmZ8ABpmhAAaZpAAGmaUABpmmAAaZpwAGmagABpmqAAaZrAAGma0ABpmuAAaZsAAGmbEABposAAaaLgAGmjEABpozAAaaNgAGmjcABpo4AAaaOQAGmjoABpo8AAaaPgAGmj8ABppAAAaaQgAGmkMABppcAAaaXQAGml4ABppgAAaa2wAGmt0ABprfAAaa4QAGmuQABprlAAaa5gAGmucABproAAaa6gAGmuwABprtAAaa7gAGmvAABprxAAabbAAGm24ABptwAAabcgAGm3UABpt2AAabdwAGm3gABpt5AAabewAGm30ABpt+AAabfwAGm4EABpuCAAab/QAGm/8ABpwBAAacAwAGnAYABpwHAAacCAAGnAkABpwKAAacDAAGnA4ABpwPAAacEAAGnBIABpwTAAacjgAGnJAABpySAAaclAAGnJcABpyYAAacmQAGnJoABpybAAacnQAGnJ8ABpygAAacoQAGnKMABpykAAadHwAGnSEABp0jAAadJQAGnSgABp0pAAadKgAGnSsABp0sAAadLgAGnTAABp0xAAadMgAGnTQABp01AAadfgAGnaIABp3JAAad7QAGnfAABp3zAAad9QAGnfcABp35AAad+wAGnfwABp3/AAaeGAAGnjUABp44AAaeOwAGnj4ABp5BAAaeRAAGnkcABp5KAAaeZwAGnmoABp5tAAaecAAGnnMABp52AAaeeQAGnnwABp5+AAae+QAGnvsABp7+AAafAAAGnwMABp8EAAafBQAGnwYABp8HAAafCQAGnwwABp8NAAafDgAGnxAABp8RAAafjAAGn44ABp+RAAafkwAGn5YABp+XAAafmAAGn5kABp+aAAafnAAGn58ABp+gAAafoQAGn6MABp+kAAagHwAGoCEABqAkAAagJgAGoCkABqAqAAagKwAGoCwABqAtAAagLwAGoDIABqAzAAagNAAGoDYABqA3AAagsgAGoLQABqC3AAaguQAGoLwABqC9AAagvgAGoL8ABqDAAAagwgAGoMUABqDGAAagxwAGoMkABqDKAAahRQAGoUcABqFJAAahSwAGoU4ABqFPAAahUAAGoVEABqFSAAahVAAGoVcABqFYAAahWQAGoVsABqFcAAah1wAGodkABqHbAAah3QAGoeAABqHhAAah4gAGoeMABqHkAAah5gAGoekABqHqAAah6wAGoe0ABqHuAAaiaQAGomsABqJuAAaicAAGonMABqJ0AAaidQAGonYABqJ3AAaieQAGonwABqJ9AAaifgAGooAABqKBAAajFAAGozcABqNXAAajdwAGo3kABqN7AAajfQAGo38ABqOCAAajgwAGo4QABqOHAAajiAAGo4oABqOLAAajjgAGo5EABqOSAAajkwAGo5YABqOXAAajnAAGo7UABqO+AAajwAAGo8MABqPMAAajzwAGo9IABqPUAAakHQAGpEEABqRoAAakjAAGpI8ABqSRAAakkwAGpJUABqSXAAakmQAGpJoABqSdAAaktgAGpNcABqTZAAak2wAGpN0ABqTfAAak4QAGpOMABqTlAAak5wAGpQgABqULAAalDgAGpREABqUUAAalFwAGpRoABqUdAAalIAAGpSIABqWdAAalnwAGpaEABqWjAAalpgAGpacABqWoAAalqQAGpaoABqWsAAalrgAGpa8ABqWwAAalsgAGpbMABqYuAAamMAAGpjIABqY0AAamNwAGpjgABqY5AAamOgAGpjsABqY9AAamPwAGpkAABqZBAAamQwAGpkQABqa/AAamwQAGpsQABqbGAAamyQAGpsoABqbLAAamzAAGps0ABqbPAAam0QAGptIABqbTAAam1QAGptYABqbvAAam8AAGpvEABqbzAAanbgAGp3AABqdyAAandAAGp3cABqd4AAaneQAGp3oABqd7AAanfQAGp38ABqeAAAangQAGp4MABqeEAAan/wAGqAEABqgDAAaoBQAGqAgABqgJAAaoCgAGqAsABqgMAAaoDgAGqBAABqgRAAaoEgAGqBQABqgVAAaokAAGqJIABqiUAAaolgAGqJkABqiaAAaomwAGqJwABqidAAaonwAGqKEABqiiAAaoowAGqKUABqimAAapIQAGqSMABqklAAapJwAGqSoABqkrAAapLAAGqS0ABqkuAAapMAAGqTIABqkzAAapNAAGqTYABqk3AAapsgAGqbQABqm2AAapuAAGqbsABqm8AAapvQAGqb4ABqm/AAapwQAGqcMABqnEAAapxQAGqccABqnIAAaqEQAGqjUABqpcAAaqgAAGqoMABqqGAAaqiAAGqooABqqMAAaqjgAGqo8ABqqSAAaqqwAGqsgABqrLAAaqzgAGqtEABqrUAAaq1wAGqtoABqrdAAaq+gAGqv0ABqsAAAarAwAGqwYABqsJAAarDAAGqw8ABqsRAAarjAAGq44ABquRAAarkwAGq5YABquXAAarmAAGq5kABquaAAarnAAGq58ABqugAAaroQAGq6MABqukAAasHwAGrCEABqwkAAasJgAGrCkABqwqAAasKwAGrCwABqwtAAasLwAGrDIABqwzAAasNAAGrDYABqw3AAassgAGrLQABqy3AAasuQAGrLwABqy9AAasvgAGrL8ABqzAAAaswgAGrMUABqzGAAasxwAGrMkABqzKAAatRQAGrUcABq1KAAatTAAGrU8ABq1QAAatUQAGrVIABq1TAAatVQAGrVgABq1ZAAatWgAGrVwABq1dAAat4AAGrgQABq4oAAauSwAGrnIABq6SAAauuQAGruAABq8AAAavJAAGr0gABq9KAAavTQAGr08ABq9RAAavUwAGr1YABq9ZAAavWwAGr10ABq9gAAavYgAGr2QABq9nAAavagAGr2sABq9wAAaviQAGr44ABq+QAAavlQAGr5gABq+aAAav4wAGsAcABrAuAAawUgAGsFUABrBXAAawWQAGsFsABrBdAAawXwAGsGAABrBjAAawfAAGsKEABrCjAAawpQAGsKcABrCpAAawqwAGsK0ABrCvAAawsQAGsLMABrDYAAaw2wAGsN4ABrDhAAaw5AAGsOcABrDqAAaw7QAGsPAABrDzAAaw9QAGsXAABrFyAAaxdQAGsXcABrF6AAaxewAGsXwABrF9AAaxfgAGsYAABrGCAAaxgwAGsYQABrGGAAaxhwAGsZgABrGZAAaxmwAGshYABrIYAAayGgAGshwABrIfAAayIAAGsiEABrIiAAayIwAGsiUABrInAAayKAAGsikABrIrAAayLAAGsqcABrKpAAayrAAGsq4ABrKxAAaysgAGsrMABrK0AAaytQAGsrcABrK5AAayugAGsrsABrK9AAayvgAGss8ABrLQAAay0gAGs00ABrNPAAazUQAGs1MABrNWAAazVwAGs1gABrNZAAazWgAGs1wABrNeAAazXwAGs2AABrNiAAazYwAGs94ABrPgAAaz4wAGs+UABrPoAAaz6QAGs+oABrPrAAaz7AAGs+4ABrPwAAaz8QAGs/IABrP0AAaz9QAGtAYABrQHAAa0CQAGtIQABrSGAAa0iAAGtIoABrSNAAa0jgAGtI8ABrSQAAa0kQAGtJMABrSVAAa0lgAGtJcABrSZAAa0mgAGtRUABrUXAAa1GgAGtRwABrUfAAa1IAAGtSEABrUiAAa1IwAGtSUABrUnAAa1KAAGtSkABrUrAAa1LAAGtUUABrVGAAa1RwAGtUkABrXEAAa1xgAGtcgABrXKAAa1zQAGtc4ABrXPAAa10AAGtdEABrXTAAa11QAGtdYABrXXAAa12QAGtdoABrZVAAa2VwAGtloABrZcAAa2XwAGtmAABrZhAAa2YgAGtmMABrZlAAa2ZwAGtmgABrZpAAa2awAGtmwABraBAAa2mgAGtqsABrauAAa2sQAGtrQABra3AAa2yAAGtssABrbOAAa20QAGttQABrbWAAa23wAGtuwABrb7AAa3GwAGt64ABrfRAAa38QAGuBEABrgTAAa4FQAGuBcABrgZAAa4HAAGuB0ABrgeAAa4IQAGuCIABrgkAAa4JQAGuCcABrgqAAa4KwAGuCwABrgvAAa4MAAGuDUABrhOAAa4VwAGuFkABrhbAAa4ZAAGuGcABrhqAAa4bAAGuLUABrjZAAa5AAAGuSQABrknAAa5KQAGuSsABrktAAa5LwAGuTEABrkyAAa5NQAGuU4ABrlvAAa5cQAGuXMABrl1AAa5dwAGuXkABrl7AAa5fQAGuX8ABrmgAAa5owAGuaYABrmpAAa5rAAGua8ABrmyAAa5tQAGubgABrm6AAa6NQAGujcABro5AAa6OwAGuj4ABro/AAa6QAAGukEABrpCAAa6RAAGukYABrpHAAa6SAAGukoABrpLAAa6xgAGusgABrrKAAa6zAAGus8ABrrQAAa60QAGutIABrrTAAa61QAGutcABrrYAAa62QAGutsABrrcAAa7VwAGu1kABrtcAAa7XgAGu2EABrtiAAa7YwAGu2QABrtlAAa7ZwAGu2kABrtqAAa7awAGu20ABrtuAAa7hwAGu4gABruJAAa7iwAGvAYABrwIAAa8CgAGvAwABrwPAAa8EAAGvBEABrwSAAa8EwAGvBUABrwXAAa8GAAGvBkABrwbAAa8HAAGvJcABryZAAa8mwAGvJ0ABrygAAa8oQAGvKIABryjAAa8pAAGvKYABryoAAa8qQAGvKoABrysAAa8rQAGvSgABr0qAAa9LAAGvS4ABr0xAAa9MgAGvTMABr00AAa9NQAGvTcABr05AAa9OgAGvTsABr09AAa9PgAGvbkABr27AAa9vQAGvb8ABr3CAAa9wwAGvcQABr3FAAa9xgAGvcgABr3KAAa9ywAGvcwABr3OAAa9zwAGvkoABr5MAAa+TgAGvlAABr5TAAa+VAAGvlUABr5WAAa+VwAGvlkABr5bAAa+XAAGvl0ABr5fAAa+YAAGvqkABr7NAAa+9AAGvxgABr8bAAa/HQAGvx8ABr8hAAa/IwAGvyUABr8mAAa/KQAGv0IABr9fAAa/YQAGv2MABr9lAAa/ZwAGv2kABr9rAAa/bQAGv4oABr+NAAa/kAAGv5MABr+WAAa/mQAGv5wABr+fAAa/oQAGwBwABsAeAAbAIAAGwCIABsAlAAbAJgAGwCcABsAoAAbAKQAGwCsABsAtAAbALgAGwC8ABsAxAAbAMgAGwK0ABsCvAAbAsQAGwLMABsC2AAbAtwAGwLgABsC5AAbAugAGwLwABsC+AAbAvwAGwMAABsDCAAbAwwAGwT4ABsFAAAbBQgAGwUQABsFHAAbBSAAGwUkABsFKAAbBSwAGwU0ABsFPAAbBUAAGwVEABsFTAAbBVAAGwc8ABsHRAAbB1AAGwdYABsHZAAbB2gAGwdsABsHcAAbB3QAGwd8ABsHhAAbB4gAGweMABsHlAAbB5gAGwmEABsJjAAbCZQAGwmcABsJqAAbCawAGwmwABsJtAAbCbgAGwnAABsJyAAbCcwAGwnQABsJ2AAbCdwAGwvIABsL0AAbC9gAGwvgABsL7AAbC/AAGwv0ABsL+AAbC/wAGwwEABsMDAAbDBAAGwwUABsMHAAbDCAAGw4MABsOFAAbDhwAGw4kABsOMAAbDjQAGw44ABsOPAAbDkAAGw5IABsOUAAbDlQAGw5YABsOYAAbDmQAGxCwABsRPAAbEbwAGxI8ABsSRAAbEkwAGxJUABsSXAAbEmgAGxJsABsScAAbEnwAGxKAABsSiAAbEowAGxKYABsSpAAbEqgAGxKsABsSuAAbErwAGxLQABsTNAAbE1gAGxNgABsTbAAbE5AAGxOcABsTqAAbE7AAGxTUABsVZAAbFgAAGxaQABsWnAAbFqQAGxasABsWtAAbFrwAGxbEABsWyAAbFtQAGxc4ABsXvAAbF8QAGxfMABsX1AAbF9wAGxfkABsX7AAbF/QAGxf8ABsYgAAbGIwAGxiYABsYpAAbGLAAGxi8ABsYyAAbGNQAGxjgABsY6AAbGtQAGxrcABsa5AAbGuwAGxr4ABsa/AAbGwAAGxsEABsbCAAbGxAAGxsYABsbHAAbGyAAGxsoABsbLAAbHRgAGx0gABsdKAAbHTAAGx08ABsdQAAbHUQAGx1IABsdTAAbHVQAGx1cABsdYAAbHWQAGx1sABsdcAAbH1wAGx9kABsfcAAbH3gAGx+EABsfiAAbH4wAGx+QABsflAAbH5wAGx+kABsfqAAbH6wAGx+0ABsfuAAbIBwAGyAgABsgJAAbICwAGyIYABsiIAAbIigAGyIwABsiPAAbIkAAGyJEABsiSAAbIkwAGyJUABsiXAAbImAAGyJkABsibAAbInAAGyRcABskZAAbJGwAGyR0ABskgAAbJIQAGySIABskjAAbJJAAGySYABskoAAbJKQAGySoABsksAAbJLQAGyagABsmqAAbJrAAGya4ABsmxAAbJsgAGybMABsm0AAbJtQAGybcABsm5AAbJugAGybsABsm9AAbJvgAGyjkABso7AAbKPQAGyj8ABspCAAbKQwAGykQABspFAAbKRgAGykgABspKAAbKSwAGykwABspOAAbKTwAGysoABsrMAAbKzgAGytAABsrTAAbK1AAGytUABsrWAAbK1wAGytkABsrbAAbK3AAGyt0ABsrfAAbK4AAGyykABstNAAbLdAAGy5gABsubAAbLngAGy6AABsuiAAbLpAAGy6YABsunAAbLqgAGy8MABsvgAAbL4wAGy+YABsvpAAbL7AAGy+8ABsvyAAbL9QAGzBIABswVAAbMGAAGzBsABsweAAbMIQAGzCQABswnAAbMKQAGzKQABsymAAbMqQAGzKsABsyuAAbMrwAGzLAABsyxAAbMsgAGzLQABsy3AAbMuAAGzLkABsy7AAbMvAAGzTcABs05AAbNPAAGzT4ABs1BAAbNQgAGzUMABs1EAAbNRQAGzUcABs1KAAbNSwAGzUwABs1OAAbNTwAGzcoABs3MAAbNzwAGzdEABs3UAAbN1QAGzdYABs3XAAbN2AAGzdoABs3dAAbN3gAGzd8ABs3hAAbN4gAGzl0ABs5fAAbOYgAGzmQABs5nAAbOaAAGzmkABs5qAAbOawAGzm0ABs5wAAbOcQAGznIABs50AAbOdQAGzvAABs7yAAbO9AAGzvYABs75AAbO+gAGzvsABs78AAbO/QAGzv8ABs8CAAbPAwAGzwQABs8GAAbPBwAGz4IABs+EAAbPhgAGz4gABs+LAAbPjAAGz40ABs+OAAbPjwAGz5EABs+UAAbPlQAGz5YABs+YAAbPmQAG0BQABtAWAAbQGQAG0BsABtAeAAbQHwAG0CAABtAhAAbQIgAG0CQABtAnAAbQKAAG0CkABtArAAbQLAAG0L8ABtDiAAbRAgAG0SIABtEkAAbRJgAG0SgABtEqAAbRLQAG0S4ABtEvAAbRMgAG0TMABtE1AAbRNgAG0TgABtE7AAbRPAAG0T0ABtFAAAbRQQAG0UYABtFfAAbRaAAG0WoABtFsAAbRdQAG0XgABtF7AAbRfQAG0cYABtHqAAbSEQAG0jUABtI4AAbSOgAG0jwABtI+AAbSQAAG0kIABtJDAAbSRgAG0l8ABtKAAAbSggAG0oQABtKGAAbSiAAG0ooABtKMAAbSjgAG0pAABtKxAAbStAAG0rcABtK6AAbSvQAG0sAABtLDAAbSxgAG0skABtLLAAbTRgAG00gABtNKAAbTTAAG008ABtNQAAbTUQAG01IABtNTAAbTVQAG01cABtNYAAbTWQAG01sABtNcAAbT1wAG09kABtPbAAbT3QAG0+AABtPhAAbT4gAG0+MABtPkAAbT5gAG0+gABtPpAAbT6gAG0+wABtPtAAbUaAAG1GoABtRtAAbUbwAG1HIABtRzAAbUdAAG1HUABtR2AAbUeAAG1HoABtR7AAbUfAAG1H4ABtR/AAbUmAAG1JkABtSaAAbUnAAG1RcABtUZAAbVGwAG1R0ABtUgAAbVIQAG1SIABtUjAAbVJAAG1SYABtUoAAbVKQAG1SoABtUsAAbVLQAG1agABtWqAAbVrAAG1a4ABtWxAAbVsgAG1bMABtW0AAbVtQAG1bcABtW5AAbVugAG1bsABtW9AAbVvgAG1jkABtY7AAbWPQAG1j8ABtZCAAbWQwAG1kQABtZFAAbWRgAG1kgABtZKAAbWSwAG1kwABtZOAAbWTwAG1soABtbMAAbWzgAG1tAABtbTAAbW1AAG1tUABtbWAAbW1wAG1tkABtbbAAbW3AAG1t0ABtbfAAbW4AAG11sABtddAAbXXwAG12EABtdkAAbXZQAG12YABtdnAAbXaAAG12oABtdsAAbXbQAG124ABtdwAAbXcQAG17oABtfeAAbYBQAG2CkABtgsAAbYLgAG2DAABtgyAAbYNAAG2DYABtg3AAbYOgAG2FMABthwAAbYcgAG2HQABth2AAbYeAAG2HoABth8AAbYfgAG2JsABtieAAbYoQAG2KQABtinAAbYqgAG2K0ABtiwAAbYsgAG2S0ABtkvAAbZMQAG2TMABtk2AAbZNwAG2TgABtk5AAbZOgAG2TwABtk+AAbZPwAG2UAABtlCAAbZQwAG2b4ABtnAAAbZwgAG2cQABtnHAAbZyAAG2ckABtnKAAbZywAG2c0ABtnPAAbZ0AAG2dEABtnTAAbZ1AAG2k8ABtpRAAbaUwAG2lUABtpYAAbaWQAG2loABtpbAAbaXAAG2l4ABtpgAAbaYQAG2mIABtpkAAbaZQAG2uAABtriAAba5AAG2uYABtrpAAba6gAG2usABtrsAAba7QAG2u8ABtrxAAba8gAG2vMABtr1AAba9gAG23EABttzAAbbdQAG23cABtt6AAbbewAG23wABtt9AAbbfgAG24AABtuCAAbbgwAG24QABtuGAAbbhwAG3AIABtwEAAbcBwAG3AkABtwMAAbcDQAG3A4ABtwPAAbcEAAG3BIABtwUAAbcFQAG3BYABtwYAAbcGQAG3DgABtyzAAbctQAG3LcABty5AAbcvAAG3L0ABty+AAbcvwAG3MAABtzCAAbcxAAG3MUABtzGAAbcyAAG3MkABt1cAAbdfwAG3Z8ABt2/AAbdwQAG3cMABt3FAAbdxwAG3coABt3LAAbdzAAG3c8ABt3QAAbd0gAG3dMABt3VAAbd2AAG3dkABt3aAAbd3QAG3d4ABt3jAAbd/AAG3gUABt4HAAbeCQAG3hIABt4VAAbeGAAG3hoABt5jAAbehwAG3q4ABt7SAAbe1QAG3tcABt7ZAAbe2wAG3t0ABt7fAAbe4AAG3uMABt78AAbfHQAG3x8ABt8hAAbfIwAG3yUABt8nAAbfKQAG3ysABt8tAAbfTgAG31EABt9UAAbfVwAG31oABt9dAAbfYAAG32MABt9mAAbfaAAG3+MABt/lAAbf5wAG3+kABt/sAAbf7QAG3+4ABt/vAAbf8AAG3/IABt/0AAbf9QAG3/YABt/4AAbf+QAG4HQABuB2AAbgeAAG4HoABuB9AAbgfgAG4H8ABuCAAAbggQAG4IMABuCFAAbghgAG4IcABuCJAAbgigAG4QUABuEHAAbhCgAG4QwABuEPAAbhEAAG4REABuESAAbhEwAG4RUABuEXAAbhGAAG4RkABuEbAAbhHAAG4TUABuE2AAbhNwAG4TkABuG0AAbhtgAG4bgABuG6AAbhvQAG4b4ABuG/AAbhwAAG4cEABuHDAAbhxQAG4cYABuHHAAbhyQAG4coABuJFAAbiRwAG4kkABuJLAAbiTgAG4k8ABuJQAAbiUQAG4lIABuJUAAbiVgAG4lcABuJYAAbiWgAG4lsABuLWAAbi2AAG4toABuLcAAbi3wAG4uAABuLhAAbi4gAG4uMABuLlAAbi5wAG4ugABuLpAAbi6wAG4uwABuNnAAbjaQAG42sABuNtAAbjcAAG43EABuNyAAbjcwAG43QABuN2AAbjeAAG43kABuN6AAbjfAAG430ABuP4AAbj+gAG4/wABuP+AAbkAQAG5AIABuQDAAbkBAAG5AUABuQHAAbkCQAG5AoABuQLAAbkDQAG5A4ABuRXAAbkewAG5KIABuTGAAbkyQAG5MsABuTNAAbkzwAG5NEABuTTAAbk1AAG5NcABuTwAAblDQAG5Q8ABuURAAblEwAG5RUABuUXAAblGQAG5RsABuU4AAblOwAG5T4ABuVBAAblRAAG5UcABuVKAAblTQAG5U8ABuXKAAblzAAG5c4ABuXQAAbl0wAG5dQABuXVAAbl1gAG5dcABuXZAAbl2wAG5dwABuXdAAbl3wAG5eAABuZbAAbmXQAG5l8ABuZhAAbmZAAG5mUABuZmAAbmZwAG5mgABuZqAAbmbAAG5m0ABuZuAAbmcAAG5nEABubsAAbm7gAG5vAABubyAAbm9QAG5vYABub3AAbm+AAG5vkABub7AAbm/QAG5v4ABub/AAbnAQAG5wIABud9AAbnfwAG54IABueEAAbnhwAG54gABueJAAbnigAG54sABueNAAbnjwAG55AABueRAAbnkwAG55QABugPAAboEQAG6BMABugVAAboGAAG6BkABugaAAboGwAG6BwABugeAAboIAAG6CEABugiAAboJAAG6CUABuigAAboogAG6KQABuimAAboqQAG6KoABuirAAborAAG6K0ABuivAAbosQAG6LIABuizAAbotQAG6LYABukxAAbpMwAG6TUABuk3AAbpOgAG6TsABuk8AAbpPQAG6T4ABulAAAbpQgAG6UMABulEAAbpRgAG6UcABulYAAbpWQAG6VsABunWAAbp2AAG6doABuncAAbp3wAG6eAABunhAAbp4gAG6eMABunlAAbp6AAG6ekABunqAAbp7AAG6e0ABupoAAbqagAG6mwABupuAAbqcQAG6nIABupzAAbqdAAG6nUABup3AAbqegAG6nsABup8AAbqfgAG6n8ABur6AAbq/AAG6v8ABusBAAbrBAAG6wUABusGAAbrBwAG6wgABusKAAbrDQAG6w4ABusPAAbrEQAG6xIABuulAAbryAAG6+gABuwIAAbsCgAG7AwABuwOAAbsEAAG7BMABuwUAAbsFQAG7BgABuwZAAbsGwAG7BwABuwfAAbsIgAG7CMABuwkAAbsJwAG7CgABuwtAAbsRgAG7E8ABuxRAAbsVAAG7F0ABuxgAAbsYwAG7GUABuyuAAbs0gAG7PkABu0dAAbtIAAG7SIABu0kAAbtJgAG7SgABu0qAAbtKwAG7S4ABu1HAAbtaAAG7WoABu1sAAbtbgAG7XAABu1yAAbtdAAG7XYABu14AAbtmQAG7ZwABu2fAAbtogAG7aUABu2oAAbtqwAG7a4ABu2xAAbtswAG7i4ABu4wAAbuMgAG7jQABu43AAbuOAAG7jkABu46AAb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AbwAHAIgABwCRAAcAkwAHAJYABwCfAAcAogAHAKUABwCnAAcA8AAHARQABwE7AAcBXwAHAWIABwFkAAcBZgAHAWgABwFqAAcBbAAHAW0ABwFwAAcBiQAHAaoABwGsAAcBrgAHAbAABwGyAAcBtAAHAbYABwG4AAcBugAHAdsABwHeAAcB4QAHAeQABwHnAAcB6gAHAe0ABwHwAAcB8wAHAfUABwJwAAcCcgAHAnQABwJ2AAcCeQAHAnoABwJ7AAcCfAAHAn0ABwJ/AAcCgQAHAoIABwKDAAcChQAHAoYABwMBAAcDAwAHAwUABwMHAAcDCgAHAwsABwMMAAcDDQAHAw4ABwMQAAcDEgAHAxMABwMUAAcDFgAHAxcABwOSAAcDlAAHA5cABwOZAAcDnAAHA50ABwOeAAcDnwAHA6AABwOiAAcDpAAHA6UABwOmAAcDqAAHA6kABwPCAAcDwwAHA8QABwPGAAcEQQAHBEMABwRFAAcERwAHBEoABwRLAAcETAAHBE0ABwROAAcEUAAHBFIABwRTAAcEVAAHBFYABwRXAAcE0gAHBNQABwTWAAcE2AAHBNsABwTcAAcE3QAHBN4ABwTfAAcE4QAHBOMABwTkAAcE5QAHBOcABwToAAcFYwAHBWUABwVnAAcFaQAHBWwABwVtAAcFbgAHBW8ABwVwAAcFcgAHBXQABwV1AAcFdgAHBXgABwV5AAcF9AAHBfYABwX4AAcF+gAHBf0ABwX+AAcF/wAHBgAABwYBAAcGAwAHBgUABwYGAAcGBwAHBgkABwYKAAcGhQAHBocABwaJAAcGiwAHBo4ABwaPAAcGkAAHBpEABwaSAAcGlAAHBpYABwaXAAcGmAAHBpoABwabAAcG5AAHBwgABwcvAAcHUwAHB1YABwdZAAcHWwAHB10ABwdfAAcHYQAHB2IABwdlAAcHfgAHB5sABweeAAcHoQAHB6QABwenAAcHqgAHB60ABwewAAcHzQAHB9AABwfTAAcH1gAHB9kABwfcAAcH3wAHB+IABwfkAAcIXwAHCGEABwhkAAcIZgAHCGkABwhqAAcIawAHCGwABwhtAAcIbwAHCHIABwhzAAcIdAAHCHYABwh3AAcI8gAHCPQABwj3AAcI+QAHCPwABwj9AAcI/gAHCP8ABwkAAAcJAgAHCQUABwkGAAcJBwAHCQkABwkKAAc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cAwAHHAQABxwGAAccCAAHHAkABxwKAAccDAAHHA0ABxyIAAccigAHHIwABxyOAAcckQAHHJIABxyTAAcclAAHHJUABxyXAAccmQAHHJoABxybAAccnQAHHJ4ABx0ZAAcdGwAHHR0ABx0fAAcdIgAHHSMABx0kAAcdJQAHHSYABx0oAAcdKgAHHSsABx0sAAcdLgAHHS8ABx2qAAcdrAAHHa4ABx2wAAcdswAHHbQABx21AAcdtgAHHbcABx25AAcduwAHHbwABx29AAcdvwAHHcAABx47AAcePQAHHj8ABx5BAAceRAAHHkUABx5GAAceRwAHHkgABx5KAAceTAAHHk0ABx5OAAceUAAHHlEABx6aAAcevgAHHuUABx8JAAcfDAAHHw4ABx8QAAcfEgAHHxQABx8WAAcfFwAHHxoABx8zAAcfUAAHH1IABx9UAAcfVgAHH1gABx9aAAcfXAAHH14ABx97AAcffgAHH4EABx+EAAcfhwAHH4oABx+NAAcfkAAHH5IAByANAAcgDwAHIBEAByATAAcgFgAHIBcAByAYAAcgGQAHIBoAByAcAAcgHgAHIB8AByAgAAcgIgAHICMAByCeAAcgoAAHIKIAByCkAAcgpwAHIKgAByCpAAcgqgAHIKsAByCtAAcgrwAHILAAByCxAAcgswAHILQAByEvAAchMQAHITMAByE1AAchOAAHITkAByE6AAchOwAHITwAByE+AAchQAAHIUEAByFCAAchRAAHIUUAByHAAAchwgAHIcUAByHHAAchygAHIcsAByHMAAchzQAHIc4AByHQAAch0gAHIdMAByHUAAch1gAHIdcAByJSAAciVAAHIlYAByJYAAciWwAHIlwAByJdAAciXgAHIl8AByJhAAciYwAHImQAByJlAAciZwAHImgAByLjAAci5QAHIucAByLpAAci7AAHIu0AByLuAAci7wAHIvAAByLyAAci9AAHIvUAByL2AAci+AAHIvkAByN0AAcjdgAHI3gAByN6AAcjfQAHI34AByN/AAcjgAAHI4EAByODAAcjhQAHI4YAByOHAAcjiQAHI4oAByQdAAckQAAHJGAABySAAAckggAHJIQABySGAAckiAAHJIsABySMAAckjQAHJJAABySRAAckkwAHJJQABySWAAckmQAHJJoABySbAAckngAHJJ8ABySkAAckvQAHJMYAByTIAAckygAHJNMAByTWAAck2QAHJNsAByUkAAclSAAHJW8AByWTAAcllgAHJZgAByWaAAclnAAHJZ4AByWgAAcloQAHJaQAByW9AAcl3gAHJeAAByXiAAcl5AAHJeYAByXoAAcl6gAHJewAByXuAAcmDwAHJhIAByYVAAcmGAAHJhsAByYeAAcmIQAHJiQAByYnAAcmKQAHJqQAByamAAcmqAAHJqoAByatAAcmrgAHJq8AByawAAcmsQAHJrMABya1AAcmtgAHJrcABya5AAcmugAHJzUAByc3AAcnOQAHJzsAByc+AAcnPwAHJ0AABydBAAcnQgAHJ0QABydGAAcnRwAHJ0gABydKAAcnSwAHJ8YAByfIAAcnywAHJ80AByfQAAcn0QAHJ9IAByfTAAcn1AAHJ9YAByfYAAcn2QAHJ9oAByfcAAcn3QAHJ/YAByf3AAcn+AAHJ/oAByh1AAcodwAHKHkAByh7AAcofgAHKH8AByiAAAcogQAHKIIAByiEAAcohgAHKIcAByiIAAcoigAHKIsABykGAAcpCAAHKQoABykMAAcpDwAHKRAABykRAAcpEgAHKRMABykVAAcpFwAHKRgABykZAAcpGwAHKRwABymXAAcpmQAHKZsABymdAAcpoAAHKaEABymiAAcpowAHKaQABymmAAcpqAAHKakABymqAAcprAAHKa0AByooAAcqKgAHKiwAByouAAcqMQAHKjIAByozAAcqNAAHKjUAByo3AAcqOQAHKjoAByo7AAcqPQAHKj4AByq5AAcquwAHKr0AByq/AAcqwgAHKsMAByrEAAcqxQAHKsYAByrIAAcqygAHKssAByrMAAcqzgAHKs8ABysYAAcrPAAHK2MAByuHAAcrigAHK4wAByuOAAcrkAAHK5IAByuUAAcrlQAHK5gAByuxAAcrzgAHK9AAByvSAAcr1AAHK9YAByvYAAcr2gAHK9wAByv5AAcr/AAHK/8ABywCAAcsBQAHLAgABywLAAcsDgAHLBAAByyLAAcsjQAHLI8AByyRAAcslAAHLJUAByyWAAcslwAHLJgAByyaAAcsnAAHLJ0AByyeAAcsoAAHLKEABy0cAActHgAHLSAABy0iAActJQAHLSYABy0nAActKAAHLSkABy0rAActLQAHLS4ABy0vAActMQAHLTIABy2tAAc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aKQAHWioAB1orAAdaLAAHWi0AB1ovAAdaMQAHWjIAB1ozAAdaNQAHWjYAB1pHAAdaSAAHWkoAB1rFAAdaxwAHWskAB1rLAAdazgAHWs8AB1rQAAda0QAHWtIAB1rUAAda1gAHWtcAB1rYAAda2gAHWtsAB1tWAAdbWAAHW1sAB1tdAAdbYAAHW2EAB1tiAAdbYwAHW2QAB1tmAAdbaAAHW2kAB1tqAAdbbAAHW20AB1t+AAdbfwAHW4EAB1v8AAdb/gAHXAAAB1wCAAdcBQAHXAYAB1wHAAdcCAAHXAkAB1wLAAdcDQAHXA4AB1wPAAdcEQAHXBIAB1yNAAdcjwAHXJIAB1yUAAdclwAHXJgAB1yZAAdcmgAHXJsAB1ydAAdcnwAHXKAAB1yhAAdcowAHXKQAB1y1AAdctgAHXLgAB10zAAddNQAHXTcAB105AAddPAAHXT0AB10+AAddPwAHXUAAB11CAAddRAAHXUUAB11GAAddSAAHXUkAB13EAAddxgAHXckAB13LAAddzgAHXc8AB13QAAdd0QAHXdIAB13UAAdd1gAHXdcAB13YAAdd2gAHXdsAB130AAdd9QAHXfYAB134AAdecwAHXnUAB153AAdeeQAHXnwAB159AAdefgAHXn8AB16AAAdeggAHXoQAB16FAAdehgAHXogAB16JAAdfBAAHXwYAB18JAAdfCwAHXw4AB18PAAdfEAAHXxEAB18SAAdfFAAHXxYAB18XAAdfGAAHXxoAB18bAAdfNwAHX1AAB19VAAdfWAAHX10AB19gAAdfYgAHX3YAB2AJAAdgLAAHYEwAB2BsAAdgbgAHYHAAB2ByAAdgdAAHYHcAB2B4AAdgeQAHYHwAB2B9AAdgfwAHYIAAB2CDAAdghgAHYIcAB2CIAAdgiwAHYIwAB2CRAAdgqgAHYLMAB2C1AAdguAAHYMEAB2DEAAdgxwAHYMkAB2ESAAdhNgAHYV0AB2GBAAdhhAAHYYYAB2GIAAdhigAHYYwAB2GOAAdhjwAHYZIAB2GrAAdhzAAHYc4AB2HQAAdh0gAHYdQAB2HWAAdh2AAHYdoAB2HcAAdh/QAHYgAAB2IDAAdiBgAHYgkAB2IMAAdiDwAHYhIAB2IVAAdiFwAHYpIAB2KUAAdilgAHYpgAB2KbAAdinAAHYp0AB2KeAAdinwAHYqEAB2KjAAdipAAHYqUAB2KnAAdiqAAHYyMAB2MlAAdjJwAHYykAB2MsAAdjLQAHYy4AB2MvAAdjMAAHYzIAB2M0AAdjNQAHYzYAB2M4AAdjOQAHY7QAB2O2AAdjuQAHY7sAB2O+AAdjvwAHY8AAB2PBAAdjwgAHY8QAB2PGAAdjxwAHY8gAB2PKAAdjywAHY+QAB2PlAAdj5gAHY+gAB2RjAAdkZQAHZGcAB2RpAAdkbAAHZG0AB2RuAAdkbwAHZHAAB2RyAAdkdAAHZHUAB2R2AAdkeAAHZHkAB2T0AAdk9gAHZPgAB2T6AAdk/QAHZP4AB2T/AAdlAAAHZQEAB2UDAAdlBQAHZQYAB2UHAAdlCQAHZQoAB2WFAAdlhwAHZYkAB2WLAAdljgAHZY8AB2WQAAdlkQAHZZIAB2WUAAdllgAHZZcAB2WYAAdlmgAHZZsAB2YWAAdmGAAHZhoAB2YcAAdmHwAHZiAAB2YhAAdmIgAHZiMAB2YlAAdmJwAHZigAB2YpAAdmKwAHZiwAB2anAAdmqQAHZqsAB2atAAdmsAAHZrEAB2ayAAdmswAHZrQAB2a2AAdmuAAHZrkAB2a6AAdmvAAHZr0AB2cGAAdnKgAHZ1EAB2d1AAdneAAHZ3sAB2d9AAdnfwAHZ4EAB2eDAAdnhAAHZ4cAB2egAAdnvQAHZ8AAB2fDAAdnxgAHZ8kAB2fMAAdnzwAHZ9IAB2fvAAdn8gAHZ/UAB2f4AAdn+wAHZ/4AB2gBAAdoBAAHaAYAB2iBAAdogwAHaIYAB2iIAAdoiwAHaIwAB2iNAAdojgAHaI8AB2iRAAdolAAHaJUAB2iWAAdomAAHaJkAB2kUAAdpFgAHaRkAB2kbAAdpHgAHaR8AB2kgAAdpIQAHaSIAB2kkAAdpJwAHaSgAB2kpAAdpKwAHaSwAB2mnAAdpqQAHaawAB2muAAdpsQAHabIAB2mzAAdptAAHabUAB2m3AAdpugAHabsAB2m8AAdpvgAHab8AB2o6AAdqPAAHaj8AB2pBAAdqRAAHakUAB2pGAAdqRwAHakgAB2pKAAdqTQAHak4AB2pPAAdqUQAHalIAB2rVAAdq+QAHax0AB2tAAAdrZwAHa4cAB2uuAAdr1QAHa/UAB2wZAAdsPQAHbD8AB2xCAAdsRAAHbEYAB2xIAAdsSwAHbE4AB2xQAAdsUgAHbFUAB2xXAAdsWQAHbFwAB2xfAAdsYAAHbGUAB2x+AAdsgwAHbIUAB2yKAAdsjQAHbI8AB2zYAAds/AAHbSMAB21HAAdtSgAHbUwAB21OAAdtUAAHbVIAB21UAAdtVQAHbVgAB21xAAdtlgAHbZgAB22aAAdtnAAHbZ4AB22gAAdtogAHbaQAB22mAAdtqAAHbc0AB23QAAdt0wAHbdYAB23ZAAdt3AAHbd8AB23iAAdt5QAHbegAB23qAAduZQAHbmcAB25qAAdubAAHbm8AB25wAAducQAHbnIAB25zAAdudQAHbncAB254AAdueQAHbnsAB258AAdujQAHbo4AB26QAAdvCwAHbw0AB28PAAdvEQAHbxQAB28VAAdvFgAHbxcAB28YAAdvGgAHbxwAB28dAAdvHgAHbyAAB28hAAdvnAAHb54AB2+hAAdvowAHb6YAB2+nAAdvqAAHb6kAB2+qAAdvrAAHb64AB2+vAAdvsAAHb7IAB2+zAAdvxAAHb8UAB2/HAAdwQgAHcEQAB3BGAAdwSAAHcEsAB3BMAAdwTQAHcE4AB3BPAAdwUQAHcFMAB3BUAAdwVQAHcFcAB3BYAAdw0wAHcNUAB3DYAAdw2gAHcN0AB3DeAAdw3wAHcOAAB3DhAAdw4wAHcOUAB3DmAAdw5wAHcOkAB3DqAAdw+wAHcPwAB3D+AAdxeQAHcXsAB3F9AAdxfwAHcYIAB3GDAAdxhAAHcYUAB3GGAAdxiAAHcYoAB3GLAAdxjAAHcY4AB3GPAAdyCgAHcgwAB3IPAAdyEQAHchQAB3IVAAdyFgAHchcAB3IYAAdyGgAHchwAB3IdAAdyHgAHciAAB3IhAAdyOgAHcjsAB3I8AAdyPgAHcrkAB3K7AAdyvQAHcr8AB3LCAAdywwAHcsQAB3LFAAdyxgAHcsgAB3LKAAdyywAHcswAB3LOAAdyzwAHc0oAB3NMAAdzTwAHc1EAB3NUAAdzVQAHc1YAB3NXAAdzWAAHc1oAB3NcAAdzXQAHc14AB3NgAAdzYQAHc3UAB3OOAAdzkwAHc5YAB3ObAAdzngAHc6AAB3OuAAd0QQAHdGQAB3SEAAd0pAAHdKYAB3SoAAd0qgAHdKwAB3SvAAd0sAAHdLEAB3S0AAd0tQAHdLcAB3S4AAd0uwAHdL4AB3S/AAd0wAAHdMMAB3TEAAd0yQAHdOIAB3TrAAd07QAHdPAAB3T5AAd0/AAHdP8AB3UBAAd1SgAHdW4AB3WVAAd1uQAHdbwAB3W+AAd1wAAHdcIAB3XEAAd1xgAHdccAB3XKAAd14wAHdgQAB3YGAAd2CAAHdgoAB3YMAAd2DgAHdhAAB3YSAAd2FAAHdjUAB3Y4AAd2OwAHdj4AB3ZBAAd2RAAHdkcAB3ZKAAd2TQAHdk8AB3bKAAd2zAAHds4AB3bQAAd20wAHdtQAB3bVAAd21gAHdtcAB3bZAAd22wAHdtwAB3bdAAd23wAHduAAB3dbAAd3XQAHd18AB3dhAAd3ZAAHd2UAB3dmAAd3ZwAHd2gAB3dqAAd3bAAHd20AB3duAAd3cAAHd3EAB3fsAAd37gAHd/EAB3fzAAd39gAHd/cAB3f4AAd3+QAHd/oAB3f8AAd3/gAHd/8AB3gAAAd4AgAHeAMAB3gcAAd4HQAHeB4AB3ggAAd4mwAHeJ0AB3ifAAd4oQAHeKQAB3ilAAd4pgAHeKcAB3ioAAd4qgAHeKwAB3itAAd4rgAHeLAAB3ixAAd5LAAHeS4AB3kwAAd5MgAHeTUAB3k2AAd5NwAHeTgAB3k5AAd5OwAHeT0AB3k+AAd5PwAHeUEAB3lCAAd5vQAHeb8AB3nBAAd5wwAHecYAB3nHAAd5yAAHeckAB3nKAAd5zAAHec4AB3nPAAd50AAHedIAB3nTAAd6TgAHelAAB3pSAAd6VAAHelcAB3pYAAd6WQAHeloAB3pbAAd6XQAHel8AB3pgAAd6YQAHemMAB3pkAAd63wAHeuEAB3rjAAd65QAHeugAB3rpAAd66gAHeusAB3rsAAd67gAHevAAB3rxAAd68gAHevQAB3r1AAd7PgAHe2IAB3uJAAd7rQAHe7AAB3uzAAd7tQAHe7cAB3u5AAd7uwAHe7wAB3u/AAd72AAHe/UAB3v4AAd7+wAHe/4AB3wBAAd8BAAHfAcAB3wKAAd8JwAHfCoAB3wtAAd8MAAHfDMAB3w2AAd8OQAHfDwAB3w+AAd8uQAHfLsAB3y+AAd8wAAHfMMAB3zEAAd8xQAHfMYAB3zHAAd8yQAHfMwAB3zNAAd8zgAHfNAAB3zRAAd9TAAHfU4AB31RAAd9UwAHfVYAB31XAAd9WAAHfVkAB31aAAd9XAAHfV8AB31gAAd9YQAHfWMAB31kAAd93wAHfeEAB33kAAd95gAHfekAB33qAAd96wAHfewAB33tAAd97wAHffIAB33zAAd99AAHffYAB333AAd+cgAHfnQAB353AAd+eQAHfnwAB359AAd+fgAHfn8AB36AAAd+ggAHfoUAB36GAAd+hwAHfokAB36KAAd/BQAHfwcAB38JAAd/CwAHfw4AB38PAAd/EAAHfxEAB38SAAd/FAAHfxcAB38YAAd/GQAHfxsAB38cAAd/lwAHf5kAB3+bAAd/nQAHf6AAB3+hAAd/ogAHf6MAB3+kAAd/pgAHf6kAB3+qAAd/qwAHf60AB3+uAAeAKQAHgCsAB4AuAAeAMAAHgDMAB4A0AAeANQAHgDYAB4A3AAeAOQAHgDwAB4A9AAeAPgAHgEAAB4BBAAeAUgAHgFcAB4BaAAeAXAAHgJUAB4CYAAeAmgAHgJ0AB4CgAAeAowAHgKYAB4CrAAeAvAAHgNUAB4DmAAeA/wAHgRYAB4EoAAeBowAHgaUAB4GnAAeBqQAHgawAB4GtAAeBrgAHga8AB4GwAAeBsgAHgbUAB4G2AAeBtwAHgbkAB4G6AAeCNQAHgjcAB4I5AAeCOwAHgj4AB4I/AAeCQAAHgkEAB4JCAAeCRAAHgkcAB4JIAAeCSQAHgksAB4JMAAeCxwAHgskAB4LMAAeCzgAHgtEAB4LSAAeC0wAHgtQAB4LVAAeC1wAHgtoAB4LbAAeC3AAHgt4AB4LfAAeC8AAHgvUAB4L4AAeC+gAHgv8AB4M4AAeDOwAHgz0AB4NAAAeDQwAHg0YAB4NJAAeDzAAHg/AAB4QUAAeENwAHhF4AB4R+AAeEpQAHhMwAB4TsAAeFEAAHhTQAB4U2AAeFOQAHhTsAB4U9AAeFPwAHhUIAB4VFAAeFRwAHhUkAB4VMAAeFTgAHhVAAB4VTAAeFVgAHhVcAB4VcAAeFdQAHhXoAB4V8AAeFgQAHhYQAB4WGAAeFzwAHhfMAB4YaAAeGPgAHhkEAB4ZDAAeGRQAHhkcAB4ZJAAeGSwAHhkwAB4ZPAAeGaAAHho0AB4aPAAeGkQAHhpMAB4aVAAeGlwAHhpkAB4abAAeGnQAHhp8AB4bEAAeGxwAHhsoAB4bNAAeG0AAHhtMAB4bWAAeG2QAHhtwAB4bfAAeG4QAHh1wAB4deAAeHYQAHh2MAB4dmAAeHZwAHh2gAB4dpAAeHagAHh2wAB4duAAeHbwAHh3AAB4dyAAeHcwAHh4QAB4eFAAeHhwAHiAIAB4gEAAeIBgAHiAgAB4gLAAeIDAAHiA0AB4gOAAeIDwAHiBEAB4gTAAeIFAAHiBUAB4gXAAeIGAAHiJMAB4iVAAeImAAHiJoAB4idAAeIngAHiJ8AB4igAAeIoQAHiKMAB4ilAAeIpgAHiKcAB4ipAAeIqgAHiLsAB4i8AAeIvgAHiTkAB4k7AAeJPQAHiT8AB4lCAAeJQwAHiUQAB4lFAAeJRgAHiUgAB4lKAAeJSwAHiUwAB4lOAAeJTwAHicoAB4nMAAeJzwAHidEAB4nUAAeJ1QAHidYAB4nXAAeJ2AAHidoAB4ncAAeJ3QAHid4AB4ngAAeJ4QAHifIAB4nzAAeJ9QAHinAAB4pyAAeKdAAHinYAB4p5AAeKegAHinsAB4p8AAeKfQAHin8AB4qBAAeKggAHioMAB4qFAAeKhgAHiwEAB4sDAAeLBgAHiwgAB4sLAAeLDAAHiw0AB4sOAAeLDwAHixEAB4sTAAeLFAAHixUAB4sXAAeLGAAHizEAB4syAAeLMwAHizUAB4uwAAeLsgAHi7QAB4u2AAeLuQAHi7oAB4u7AAeLvAAHi70AB4u/AAeLwQAHi8IAB4vDAAeLxQAHi8YAB4xBAAeMQwAHjEYAB4xIAAeMSwAHjEwAB4xNAAeMTgAHjE8AB4xRAAeMUwAHjFQAB4xVAAeMVwAHjFgAB4x1AAeMjgAHjJMAB4yWAAeMmwAHjJ4AB4ygAAeMtQAHjUgAB41rAAeNiwAHjasAB42tAAeNrwAHjbEAB42zAAeNtgAHjbcAB424AAeNuwAHjbwAB42+AAeNvwAHjcIAB43FAAeNxgAHjccAB43KAAeNywAHjdAAB43pAAeN8gAHjfQAB433AAeOAAAHjgMAB44GAAeOCAAHjlEAB451AAeOnAAHjsAAB47DAAeOxQAHjscAB47JAAeOywAHjs0AB47OAAeO0QAHjuoAB48LAAePDQAHjw8AB48RAAePEwAHjxUAB48XAAePGQAHjxsAB488AAePPwAHj0IAB49FAAePSAAHj0sAB49OAAePUQAHj1QAB49WAAeP0QAHj9MAB4/VAAeP1wAHj9oAB4/bAAeP3AAHj90AB4/eAAeP4AAHj+IAB4/jAAeP5AAHj+YAB4/nAAeQYgAHkGQAB5BmAAeQaAAHkGsAB5BsAAeQbQAHkG4AB5BvAAeQcQAHkHMAB5B0AAeQdQAHkHcAB5B4AAeQ8wAHkPUAB5D4AAeQ+gAHkP0AB5D+AAeQ/wAHkQAAB5EBAAeRAwAHkQUAB5EGAAeRBwAHkQkAB5EKAAeRIwAHkSQAB5ElAAeRJwAHkaIAB5GkAAeRpgAHkagAB5GrAAeRrAAHka0AB5GuAAeRrwAHkbEAB5GzAAeRtAAHkbUAB5G3AAeRuAAHkjMAB5I1AAeSNwAHkjkAB5I8AAeSPQAHkj4AB5I/AAeSQAAHkkIAB5JEAAeSRQAHkkYAB5JIAAeSSQAHksQAB5LGAAeSyAAHksoAB5LNAAeSzgAHks8AB5LQAAeS0QAHktMAB5LVAAeS1gAHktcAB5LZAAeS2gAHk1UAB5NXAAeTWQAHk1sAB5NeAAeTXwAHk2AAB5NhAAeTYgAHk2QAB5NmAAeTZwAHk2gAB5NqAAeTawAHk+YAB5PoAAeT6gAHk+wAB5PvAAeT8AAHk/EAB5PyAAeT8wAHk/UAB5P3AAeT+AAHk/kAB5P7AAeT/AAHlEUAB5RpAAeUkAAHlLQAB5S3AAeUugAHlLwAB5S+AAeUwAAHlMIAB5TDAAeUxgAHlN8AB5T8AAeU/wAHlQIAB5UFAAeVCAAHlQsAB5UOAAeVEQAHlS4AB5UxAAeVNAAHlTcAB5U6AAeVPQAHlUAAB5VDAAeVRQAHlcAAB5XCAAeVxQAHlccAB5XKAAeVywAHlcwAB5XNAAeVzgAHldAAB5XTAAeV1AAHldUAB5XXAAeV2AAHllMAB5ZVAAeWWAAHlloAB5ZdAAeWXgAHll8AB5ZgAAeWYQAHlmMAB5ZmAAeWZwAHlmgAB5ZqAAeWawAHluYAB5boAAeW6wAHlu0AB5bwAAeW8QAHlvIAB5bzAAeW9AAHlvYAB5b5AAeW+gAHlvsAB5b9AAeW/gAHl3kAB5d7AAeXfgAHl4AAB5eDAAeXhAAHl4UAB5eGAAeXhwAHl4kAB5eMAAeXjQAHl44AB5eQAAeXkQAHmBQAB5g4AAeYXAAHmH8AB5imAAeYxgAHmO0AB5kUAAeZNAAHmVgAB5l8AAeZfgAHmYEAB5mDAAeZhQAHmYcAB5mKAAeZjQAHmY8AB5mRAAeZlAAHmZYAB5mYAAeZmwAHmZ4AB5mfAAeZpAAHmb0AB5nCAAe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rSgAHq0sAB6tNAAerUAAHq1EAB6tSAAerVAAHq1UAB6vQAAer0gAHq9UAB6vXAAer2gAHq9sAB6vcAAer3QAHq94AB6vgAAer4wAHq+QAB6vlAAer5wAHq+gAB6xjAAesZQAHrGcAB6xpAAesbAAHrG0AB6xuAAesbwAHrHAAB6xyAAesdQAHrHYAB6x3AAeseQAHrHoAB6z1AAes9wAHrPkAB6z7AAes/gAHrP8AB60AAAetAQAHrQIAB60EAAetBwAHrQgAB60JAAetCwAHrQwAB62HAAetiQAHrYwAB62OAAetkQAHrZIAB62TAAetlAAHrZUAB62XAAetmgAHrZsAB62cAAetngAHrZ8AB64yAAeuVQAHrnUAB66VAAeulwAHrpkAB66bAAeunQAHrqAAB66hAAeuogAHrqUAB66mAAeuqAAHrqkAB66sAAeurwAHrrAAB66xAAeutAAHrrUAB666AAeu0wAHrtwAB67eAAeu4QAHruoAB67tAAeu8AAHrvIAB687AAevXwAHr4YAB6+qAAevrQAHr68AB6+xAAevswAHr7UAB6+3AAevuAAHr7sAB6/UAAev9QAHr/cAB6/5AAev+wAHr/0AB6//AAewAQAHsAMAB7AFAAewJgAHsCkAB7AsAAewLwAHsDIAB7A1AAewOAAHsDsAB7A+AAewQAAHsLsAB7C9AAewvwAHsMEAB7DEAAewxQAHsMYAB7DHAAewyAAHsMoAB7DMAAewzQAHsM4AB7DQAAew0QAHsUwAB7FOAAexUAAHsVIAB7FVAAexVgAHsVcAB7FYAAexWQAHsVsAB7FdAAexXgAHsV8AB7FhAAexYgAHsd0AB7HfAAex4gAHseQAB7HnAAex6AAHsekAB7HqAAex6wAHse0AB7HvAAex8AAHsfEAB7HzAAex9AAHsg0AB7IOAAeyDwAHshEAB7KMAAeyjgAHspAAB7KSAAeylQAHspYAB7KXAAeymAAHspkAB7KbAAeynQAHsp4AB7KfAAeyoQAHsqIAB7MdAAezHwAHsyEAB7MjAAezJgAHsycAB7MoAAezKQAHsyoAB7MsAAezLgAHsy8AB7MwAAezMgAHszMAB7OuAAezsAAHs7IAB7O0AAeztwAHs7gAB7O5AAezugAHs7sAB7O9AAezvwAHs8AAB7PBAAezwwAHs8QAB7Q/AAe0QQAHtEMAB7RFAAe0SAAHtEkAB7RKAAe0SwAHtEwAB7ROAAe0UAAHtFEAB7RSAAe0VAAHtFUAB7TQAAe00gAHtNQAB7TWAAe02QAHtNoAB7TbAAe03AAHtN0AB7TfAAe04QAHtOIAB7TjAAe05QAHtOYAB7UvAAe1UwAHtXoAB7WeAAe1oQAHtaQAB7WmAAe1qAAHtaoAB7WsAAe1rQAHtbAAB7XJAAe15gAHtekAB7XsAAe17wAHtfIAB7X1AAe1+AAHtfsAB7YYAAe2GwAHth4AB7YhAAe2JAAHticAB7YqAAe2LQAHti8AB7aqAAe2rAAHtq8AB7axAAe2tAAHtrUAB7a2AAe2twAHtrgAB7a6AAe2vQAHtr4AB7a/AAe2wQAHtsIAB7c9AAe3PwAHt0IAB7dEAAe3RwAHt0gAB7dJAAe3SgAHt0sAB7dNAAe3UAAHt1EAB7dSAAe3VAAHt1UAB7dXAAe30gAHt9QAB7fXAAe32QAHt9wAB7fdAAe33gAHt98AB7fgAAe34gAHt+UAB7fmAAe35wAHt+kAB7fqAAe4ZQAHuGcAB7hqAAe4bAAHuG8AB7hwAAe4cQAHuHIAB7hzAAe4dQAHuHgAB7h5AAe4egAHuHwAB7h9AAe4+AAHuPoAB7j8AAe4/gAHuQEAB7kCAAe5AwAHuQQAB7kFAAe5BwAHuQoAB7kLAAe5DAAHuQ4AB7kPAAe5igAHuYwAB7mOAAe5kAAHuZMAB7mUAAe5lQAHuZYAB7mXAAe5mQAHuZwAB7mdAAe5ngAHuaAAB7mhAAe6HAAHuh4AB7ohAAe6IwAHuiYAB7onAAe6KAAHuikAB7oqAAe6LAAHui8AB7owAAe6MQAHujMAB7o0AAe6xwAHuuoAB7sKAAe7KgAHuywAB7suAAe7MAAHuzIAB7s1AAe7NgAHuzcAB7s6AAe7OwAHuz0AB7s+AAe7QQAHu0QAB7tFAAe7RgAHu0kAB7tKAAe7TwAHu2gAB7txAAe7cwAHu3YAB7t/AAe7ggAHu4UAB7uHAAe70AAHu/QAB7wbAAe8PwAHvEIAB7xEAAe8RgAHvEgAB7xKAAe8TAAHvE0AB7xQAAe8aQAHvIoAB7yMAAe8jgAHvJAAB7ySAAe8lAAHvJYAB7yYAAe8mgAHvLsAB7y+AAe8wQAHvMQAB7zHAAe8ygAHvM0AB7zQAAe80wAHvNUAB71QAAe9UgAHvVQAB71WAAe9WQAHvVoAB71bAAe9XAAHvV0AB71fAAe9YQAHvWIAB71jAAe9ZQAHvWYAB73hAAe94wAHveUAB73nAAe96gAHvesAB73sAAe97QAHve4AB73wAAe98gAHvfMAB730AAe99gAHvfcAB75yAAe+dAAHvncAB755AAe+fAAHvn0AB75+AAe+fwAHvoAAB76CAAe+hAAHvoUAB76GAAe+iAAHvokAB76iAAe+owAHvqQAB76mAAe/IQAHvyMAB78lAAe/JwAHvyoAB78rAAe/LAAHvy0AB78uAAe/MAAHvzIAB78zAAe/NAAHvzYAB783AAe/sgAHv7QAB7+2AAe/uAAHv7sAB7+8AAe/vQAHv74AB7+/AAe/wQAHv8MAB7/EAAe/xQAHv8cAB7/IAAfAQwAHwEUAB8BHAAfASQAHwEwAB8BNAAfATgAHwE8AB8BQAAfAUgAHwFQAB8BVAAfAVgAHwFgAB8BZAAfA1AAHwNYAB8DYAAfA2gAHwN0AB8DeAAfA3wAHwOAAB8DhAAfA4wAHwOUAB8DmAAfA5wAHwOkAB8DqAAfBZQAHwWcAB8FpAAfBawAHwW4AB8FvAAfBcAAHwXEAB8FyAAfBdAAHwXYAB8F3AAfBeAAHwXoAB8F7AAfBxAAHwegAB8IPAAfCMwAHwjYAB8I5AAfCOwAHwj0AB8I/AAfCQQAHwkIAB8JFAAfCXgAHwnsAB8J+AAfCgQAHwoQAB8KHAAfCigAHwo0AB8KQAAfCrQAHwrAAB8KzAAfCtgAHwrkAB8K8AAfCvwAHwsIAB8LEAAfDPwAHw0EAB8NEAAfDRgAHw0kAB8NKAAfDSwAHw0wAB8NNAAfDTwAHw1IAB8NTAAfDVAAHw1YAB8NXAAfD0gAHw9QAB8PXAAfD2QAHw9wAB8PdAAfD3gAHw98AB8PgAAfD4gAHw+UAB8PmAAfD5wAHw+kAB8PqAAfEZQAHxGcAB8RqAAfEbAAHxG8AB8RwAAfEcQAHxHIAB8RzAAfEdQAHxHgAB8R5AAfEegAHxHwAB8R9AAfE+AAHxPoAB8T9AAfE/wAHxQIAB8UDAAfFBAAHxQUAB8UGAAfFCAAHxQsAB8UMAAfFDQAHxQ8AB8UQAAfFiwAHxY0AB8WPAAfFkQAHxZQAB8WVAAfFlgAHxZcAB8WYAAfFmgAHxZ0AB8WeAAfFnwAHxaEAB8WiAAfGHQAHxh8AB8YhAAfGIwAHxiYAB8YnAAfGKAAHxikAB8YqAAfGLAAHxi8AB8YwAAfGMQAHxjMAB8Y0AAfGrwAHxrEAB8a0AAfGtgAHxrkAB8a6AAfGuwAHxrwAB8a9AAfGvwAHxsIAB8bDAAfGxAAHxsYAB8bHAAfG2AAHxt0AB8bgAAfG4gAHxxsAB8ceAAfHIAAHxyMAB8cmAAfHKQAHxywAB8cxAAfHrAAHx64AB8ewAAfHsgAHx7UAB8e2AAfHtwAHx7gAB8e5AAfHuwAHx74AB8e/AAfHwAAHx8IAB8fDAAfIPgAHyEAAB8hCAAfIRAAHyEcAB8hIAAfISQAHyEoAB8hLAAfITQAHyFAAB8hRAAfIUgAHyFQAB8hVAAfI0AAHyNIAB8jVAAfI1wAHyNoAB8jbAAfI3AAHyN0AB8jeAAfI4AAHyOMAB8jkAAfI5QAHyOcAB8joAAfI+QAHyP4AB8kBAAfJAwAHyQwAB8mHAAfJiQAHyYsAB8mNAAfJkAAHyZEAB8mSAAfJkwAHyZQAB8mWAAfJmQAHyZoAB8mbAAfJnQAHyZ4AB8oZAAfKGwAHyh0AB8ofAAfKIgAHyiMAB8okAAfKJQAHyiYAB8ooAAfKKwAHyiwAB8otAAfKLwAHyjAAB8qrAAfKrQAHyrAAB8qyAAfKtQAHyrYAB8q3AAfKuAAHyrkAB8q7AAfKvgAHyr8AB8rAAAfKwgAHysMAB8rUAAfK1QAHytcAB8roAAfK8QAHyvQAB8r3AAfK+QAHy3QAB8t2AAfLeAAHy3oAB8t9AAfLfgAHy38AB8uAAAfLgQAHy4MAB8uGAAfLhwAHy4gAB8uKAAfLiwAHzAYAB8wIAAfMCgAHzAwAB8wPAAfMEAAHzBEAB8wSAAfMEwAHzBUAB8wYAAfMGQAHzBoAB8wcAAfMHQAHzJgAB8yaAAfMnQAHzJ8AB8yiAAfMowAHzKQAB8ylAAfMpgAHzKgAB8yrAAfMrAAHzK0AB8yvAAfMsAAHzUMAB81mAAfNhgAHzaYAB82oAAfNqgAHzawAB82uAAfNsQAHzbIAB82zAAfNtgAHzbcAB825AAfNugAHzb0AB83AAAfNwQAHzcIAB83FAAfNxgAHzcsAB83kAAfN7QAHze8AB83yAAfN+wAHzf4AB84BAAfOAwAHzkwAB85wAAfOlwAHzrsAB86+AAfOwAAHzsIAB87EAAfOxgAHzsgAB87JAAfOzAAHzuUAB88GAAfPCAAHzwoAB88MAAfPDgAHzxAAB88SAAfPFAAHzxYAB883AAfPOgAHzz0AB89AAAfPQwAHz0YAB89JAAfPTAAHz08AB89RAAfPzAAHz84AB8/QAAfP0gAHz9UAB8/WAAfP1wAHz9gAB8/ZAAfP2wAHz90AB8/eAAfP3wAHz+EAB8/iAAfQXQAH0F8AB9BhAAfQYwAH0GYAB9BnAAfQaAAH0GkAB9BqAAfQbAAH0G4AB9BvAAfQcAAH0HIAB9BzAAfQ7gAH0PAAB9DzAAfQ9QAH0PgAB9D5AAfQ+gAH0PsAB9D8AAfQ/gAH0QAAB9EBAAfRAgAH0QQAB9EFAAfRHgAH0R8AB9EgAAfRIgAH0Z0AB9GfAAfRoQAH0aMAB9GmAAfRpwAH0agAB9GpAAfRqgAH0awAB9GuAAfRrwAH0bAAB9GyAAfRswAH0i4AB9IwAAfSMgAH0jQAB9I3AAfSOAAH0jkAB9I6AAfSOwAH0j0AB9I/AAfSQAAH0kEAB9JDAAfSRAAH0r8AB9LBAAfSwwAH0sUAB9LIAAfSyQAH0soAB9LLAAfSzAAH0s4AB9LQAAfS0QAH0tIAB9LUAAfS1QAH01AAB9NSAAfTVAAH01YAB9NZAAfTWgAH01sAB9NcAAfTXQAH018AB9NhAAfTYgAH02MAB9NlAAfTZgAH0+EAB9PjAAfT5QAH0+cAB9PqAAfT6wAH0+wAB9PtAAfT7gAH0/AAB9PyAAfT8wAH0/QAB9P2AAfT9wAH1EAAB9RkAAfUiwAH1K8AB9SyAAfUtQAH1LcAB9S5AAfUuwAH1L0AB9S+AAfUwQAH1NoAB9T3AAfU+gAH1P0AB9UAAAfVAwAH1QYAB9UJAAfVDAAH1SkAB9UsAAfVLwAH1TIAB9U1AAfVOAAH1TsAB9U+AAfVQAAH1bsAB9W9AAfVwAAH1cIAB9XFAAfVxgAH1ccAB9XIAAfVyQAH1csAB9XOAAfVzwAH1dAAB9XSAAfV0wAH1k4AB9ZQAAfWUwAH1lUAB9ZYAAfWWQAH1loAB9ZbAAfWXAAH1l4AB9ZhAAfWYgAH1mMAB9ZlAAfWZgAH1uEAB9bjAAfW5gAH1ugAB9brAAfW7AAH1u0AB9buAAf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DuAAIA7oACAO8AAgDvQAIA74ACAPAAAgDwQAIBDwACAQ+AAgEQAAIBEIACARFAAgERgAIBEcACARIAAgESQAIBEsACARNAAgETgAIBE8ACARRAAgEUgAIBM0ACATPAAgE0QAIBNMACATWAAgE1wAIBNgACATZAAgE2gAIBNwACATeAAgE3wAIBOAACATiAAgE4wAIBV4ACAVgAAgFYwAIBWUACAVoAAgFaQAIBWoACAVrAAgFbAAIBW4ACAVwAAgFcQAIBXIACAV0AAgFdQAIBfAACAXyAAgF9AAIBfYACAX5AAgF+gAIBfsACAX8AAgF/QAIBf8ACAYBAAgGAgAIBgMACAYFAAgGBgAIBoEACAaDAAgGhQAIBocACAaKAAgGiwAIBowACAaNAAgGjgAIBpAACAaSAAgGkwAIBpQACAaWAAgGlwAIBxIACAcUAAgHFgAIBxgACAcbAAgHHAAIBx0ACAceAAgHHwAIByEACAcjAAgHJAAIByUACAcnAAgHKAAIB7sACAfeAAgH/gAICB4ACAggAAgIIgAICCQACAgmAAgIKQAICCoACAgrAAgILgAICC8ACAgxAAgIMgAICDQACAg3AAgIOAAICDkACAg8AAgIPQAICEIACAhbAAgIZAAICGYACAhoAAgIcQAICHQACAh3AAgIeQAICMIACAjmAAgJDQAICTEACAk0AAgJNgAICTgACAk6AAgJPAAICT4ACAk/AAgJQgAICVsACAl8AAgJfgAICYAACAmCAAgJhAAICYYACAmIAAgJigAICYwACAmtAAgJsAAICbMACAm2AAgJuQAICbwACAm/AAgJwgAICcUACAnHAAgKQgAICkQACApGAAgKSAAICksACApMAAgKTQAICk4ACApPAAgKUQAIClMACApUAAgKVQAIClcACApYAAgK0wAICtUACArXAAgK2QAICtwACArdAAgK3gAICt8ACArgAAgK4gAICuQACArlAAgK5gAICugACArpAAgLZAAIC2YACAtpAAgLawAIC24ACAtvAAgLcAAIC3EACAtyAAgLdAAIC3YACAt3AAgLeAAIC3oACAt7AAgLlAAIC5UACAuWAAgLmAAIDBMACAwVAAgMFwAIDBkACAwcAAgMHQAIDB4ACAwfAAgMIAAIDCIACAwkAAgMJQAIDCYACAwoAAgMKQAIDKQACAymAAgMqAAIDKoACAytAAgMrgAIDK8ACAywAAgMsQAIDLMACAy1AAgMtgAIDLcACAy5AAgMugAIDTUACA03AAgNOQAIDTsACA0+AAgNPwAIDUAACA1BAAgNQgAIDUQACA1GAAgNRwAIDUgACA1KAAgNSwAIDcYACA3IAAgNygAIDcwACA3PAAgN0AAIDdEACA3SAAgN0wAIDdUACA3XAAgN2AAIDdkACA3bAAgN3AAIDlcACA5ZAAgOWwAIDl0ACA5gAAgOYQAIDmIACA5jAAgOZAAIDmYACA5oAAgOaQAIDmoACA5sAAgObQAIDrYACA7aAAgPAQAIDyUACA8oAAgPKgAIDywACA8uAAgPMAAIDzIACA8zAAgPNgAID08ACA9sAAgPbgAID3AACA9yAAgPdAAID3YACA94AAgPegAID5cACA+aAAgPnQAID6AACA+jAAgPpgAID6kACA+sAAgPrgAIECkACBArAAgQLQAIEC8ACBAyAAgQMwAIEDQACBA1AAgQNgAIEDgACBA6AAgQOwAIEDwACBA+AAgQPwAIELoACBC8AAgQvgAIEMAACBDDAAgQxAAIEMUACBDGAAgQxwAIEMkACBDLAAgQzAAIEM0ACBDPAAgQ0AAIEUsACBFNAAgRTwAIEVEACBFUAAgRVQAIEVYACBFXAAgRWAAIEVoACBFcAAgRXQAIEV4ACBFgAAgRYQAIEdwACBHeAAgR4QAIEeMACBHmAAgR5wAIEegACBHpAAgR6gAIEewACBHuAAgR7wAIEfAACBHyAAgR8wAIEm4ACBJwAAgScgAIEnQACBJ3AAgSeAAIEnkACBJ6AAgSewAIEn0ACBJ/AAgSgAAIEoEACBKDAAgShAAIEv8ACBMBAAgTAwAIEwUACBMIAAgTCQAIEwoACBMLAAgTDAAIEw4ACBMQAAgTEQAIExIACBMUAAgTFQAIE5AACBOSAAgTlAAIE5YACBOZAAgTmgAIE5sACBOcAAgTnQAIE58ACBOhAAgTogAIE6MACBOlAAgTpgAIFDkACBRcAAgUfAAIFJwACBSeAAgUoAAIFKIACBSkAAgUpwAIFKgACBSpAAgUrAAIFK0ACBSvAAgUsAAIFLIACBS1AAgUtgAIFLcACBS6AAgUuwAIFMQACBTdAAgU5gAIFOgACBTqAAgU8wAIFPYACBT5AAgU+wAIFUQACBVoAAgVjwAIFbMACBW2AAgVuAAIFboACBW8AAgVvgAIFcAACBXBAAgVxAAIFd0ACBX+AAgWAAAIFgIACBYEAAgWBgAIFggACBYKAAgWDAAIFg4ACBYvAAgWMgAIFjUACBY4AAgWOwAIFj4ACBZBAAgWRAAIFkcACBZJAAgWxAAIFsYACBbIAAgWygAIFs0ACBbOAAgWzwAIFtAACBbRAAgW0wAIFtUACBbWAAgW1wAIFtkACBbaAAgXVQAIF1cACBdZAAgXWwAIF14ACBdfAAgXYAAIF2EACBdiAAgXZAAIF2YACBdnAAgXaAAIF2oACBdrAAgX5gAIF+gACBfrAAgX7QAIF/AACBfxAAgX8gAIF/MACBf0AAgX9gAIF/gACBf5AAgX+gAIF/wACBf9AAgYFgAIGBcACBgYAAgYGgAIGJUACBiXAAgYmQAIGJsACBieAAgYnwAIGKAACBihAAgYogAIGKQACBimAAgYpwAIGKgACBiqAAgYqwAIGSYACBkoAAgZKgAIGSwACBkvAAgZMAAIGTEACBkyAAgZMwAIGTUACBk3AAgZOAAIGTkACBk7AAgZPAAIGbcACBm5AAgZuwAIGb0ACBnAAAgZwQAIGcIACBnDAAgZxAAIGcYACBnIAAgZyQAIGcoACBnMAAgZzQAIGkgACBpKAAgaTAAIGk4ACBpRAAgaUgAIGlMACBpUAAgaVQAIGlcACBpZAAgaWgAIGlsACBpdAAgaXgAIGtkACBrbAAga3QAIGt8ACBriAAga4wAIGuQACBrlAAga5gAIGugACBrqAAga6wAIGuwACBruAAga7wAIGzgACBtcAAgbgwAIG6cACBuqAAgbrAAIG64ACBuwAAgbsgAIG7QACBu1AAgbuAAIG9EACBvuAAgb8AAIG/IACBv0AAgb9gAIG/gACBv6AAgb/AAIHBkACBwcAAgcHwAIHCIACBwlAAgcKAAIHCsACBwuAAgcMAAIHKsACBytAAgcrwAIHLEACBy0AAgctQAIHLYACBy3AAgcuAAIHLoACBy8AAgcvQAIHL4ACBzAAAgcwQAIHTwACB0+AAgdQAAIHUIACB1FAAgdRgAIHUcACB1IAAgdSQAIHUsACB1NAAgdTgAIHU8ACB1RAAgdUgAIHc0ACB3PAAgd0QAIHdMACB3WAAgd1wAIHdgACB3ZAAgd2gAIHdwACB3eAAgd3wAIHeAACB3iAAgd4wAIHl4ACB5gAAgeYwAIHmUACB5oAAgeaQAIHmoACB5rAAgebAAIHm4ACB5wAAgecQAIHnIACB50AAgedQAIHvAACB7yAAge9AAIHvYACB75AAge+gAIHvsACB78AAge/QAIHv8ACB8BAAgfAgAIHwMACB8FAAgfBgAIH4EACB+DAAgfhQAIH4cACB+KAAgfiwAIH4wACB+NAAgfjgAIH5AACB+SAAgfkwAIH5QACB+WAAgflwAIIBIACCAUAAggFgAIIBgACCAbAAggHAAIIB0ACCAeAAggHwAIICEACCAjAAggJAAIICUACCAnAAggKAAIILsACCDeAAgg/gAIIR4ACCEgAAghIgAIISQACCEmAAghKQAIISoACCErAAghLgAIIS8ACCExAAghMgAIITQACCE3AAghOAAIITkACCE8AAghPQAIIUYACCFfAAghaAAIIWoACCFsAAghdQAIIXgACCF7AAghfQAIIcYACCHqAAgiEQAIIjUACCI4AAgiOgAIIjwACCI+AAgiQAAIIkIACCJDAAgiRgAIIl8ACCKAAAgiggAIIoQACCKGAAgiiAAIIooACCKMAAgijgAIIpAACCKxAAgitAAIIrcACCK6AAgivQAIIsAACCLDAAgixgAIIskACCLLAAgjRgAII0gACCNKAAgjTAAII08ACCNQAAgjUQAII1IACCNTAAgjVQAII1cACCNYAAgjWQAII1sACCNcAAgj1wAII9kACCPbAAgj3QAII+AACCPhAAgj4gAII+MACCPkAAgj5gAII+gACCPpAAgj6gAII+wACCPtAAgkaAAIJGoACCRtAAgkbwAIJHIACCRzAAgkdAAIJHUACCR2AAgkeAAIJHoACCR7AAgkfAAIJH4ACCR/AAgkmAAIJJkACCSaAAgknAAIJRcACCUZAAglGwAIJR0ACCUgAAglIQAIJSIACCUjAAglJAAIJSYACCUoAAglKQAIJSoACCUsAAglLQAIJagACCWqAAglrAAIJa4ACCWxAAglsgAIJbMACCW0AAgltQAIJbcACCW5AAglugAIJbsACCW9AAglvgAIJjkACCY7AAgmPQAIJj8ACCZCAAgmQwAIJkQACCZFAAgmRgAIJkgACCZKAAgmSwAIJkwACCZOAAgmTwAIJsoACCbMAAgmzgAIJtAACCbTAAgm1AAIJtUACCbWAAgm1wAIJtkACCbbAAgm3AAIJt0ACCbfAAgm4AAIJ1sACCddAAgnXwAIJ2EACCdkAAgnZQAIJ2YACCdnAAgnaAAIJ2oACCdsAAgnbQAIJ24ACCdwAAgncQAIJ7oACCfeAAgoBQAIKCkACCgsAAgoLgAIKDAACCgyAAgoNAAIKDYACCg3AAgoOgAIKFMACChwAAgocgAIKHQACCh2AAgoeAAIKHoACCh8AAgofgAIKJsACCieAAgooQAIKKQACCinAAgoqgAIKK0ACCiwAAgosgAIKS0ACCkvAAgpMQAIKTMACCk2AAgpNwAIKTgACCk5AAgpOgAIKTwACCk+AAgpPwAIKUAACClCAAgpQwAIKb4ACCnAAAgpwgAIKcQACCnHAAgpyAAIKckACCnKAAgpywAIKc0ACCnPAAgp0AAIKdEACCnTAAgp1AAIKk8ACCpRAAgqUwAIKlUACCpYAAgqWQAIKloACCpbAAgqXAAIKl4ACCpgAAgqYQAIKmIACCpkAAgqZQAIKuAACCriAAgq5QAIKucACCrqAAgq6wAIKuwACCrtAAgq7gAIKvAACCryAAgq8wAIKvQACCr2AAgq9wAIK3IACCt0AAgrdgAIK3gACCt7AAgrfAAIK30ACCt+AAgrfwAIK4EACCuDAAgrhAAIK4UACCuHAAgriAAILAMACCwFAAgsBwAILAkACCwMAAgsDQAILA4ACCwPAAgsEAAILBIACCwUAAgsFQAILBYACCwYAAgsGQAILJQACCyWAAgsmAAILJoACCydAAgsngAILJ8ACCygAAgsoQAILKMACCylAAgspgAILKcACCypAAgsqgAILLsACCy8AAgsvgAILTkACC07AAgtPQAILT8ACC1CAAgtQwAILUQACC1FAAgtRgAILUgACC1LAAgtTAAILU0ACC1PAAgtUAAILcsACC3NAAgtzwAILdEACC3UAAgt1QAILdYACC3XAAgt2AAILdoACC3dAAgt3gAILd8ACC3hAAgt4gAILl0ACC5fAAguYgAILmQACC5nAAguaAAILmkACC5qAAguawAILm0ACC5wAAgucQAILnIACC50AAgudQAILwgACC8rAAgvSwAIL2sACC9tAAgvbwAIL3EACC9zAAgvdgAIL3cACC94AAgvewAIL3wACC9+AAgvfwAIL4IACC+FAAg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J6QAISesACEoMAAhKDwAIShIACEoVAAhKGAAIShsACEoeAAhKIQAISiQACEomAAhKoQAISqMACEqlAAhKpwAISqoACEqrAAhKrAAISq0ACEquAAhKsAAISrIACEqzAAhKtAAISrYACEq3AAhLMgAISzQACEs2AAhLOAAISzsACEs8AAhLPQAISz4ACEs/AAhLQQAIS0MACEtEAAhLRQAIS0cACEtIAAhLwwAIS8UACEvIAAhLygAIS80ACEvOAAhLzwAIS9AACEvRAAhL0wAIS9UACEvWAAhL1wAIS9kACEvaAAhL8wAIS/QACEv1AAhL9wAITHIACEx0AAhMdgAITHgACEx7AAhMfAAITH0ACEx+AAhMfwAITIEACEyDAAhMhAAITIUACEyHAAhMiAAITQMACE0FAAhNBwAITQkACE0MAAhNDQAITQ4ACE0PAAhNEAAITRIACE0UAAhNFQAITRYACE0YAAhNGQAITZQACE2WAAhNmAAITZoACE2dAAhNngAITZ8ACE2gAAhNoQAITaMACE2lAAhNpgAITacACE2pAAhNqgAITiUACE4nAAhOKQAITisACE4uAAhOLwAITjAACE4xAAhOMgAITjQACE42AAhONwAITjgACE46AAhOOwAITrYACE64AAhOugAITrwACE6/AAhOwAAITsEACE7CAAhOwwAITsUACE7HAAhOyAAITskACE7LAAhOzAAITxUACE85AAhPYAAIT4QACE+HAAhPiQAIT4sACE+NAAhPjwAIT5EACE+SAAhPlQAIT64ACE/LAAhPzQAIT88ACE/RAAhP0wAIT9UACE/XAAhP2QAIT/YACE/5AAhP/AAIT/8ACFACAAhQBQAIUAgACFALAAhQDQAIUIgACFCKAAhQjAAIUI4ACFCRAAhQkgAIUJMACFCUAAhQlQAIUJcACFCZAAhQmgAIUJsACFCdAAhQngAIURkACFEbAAhRHQAIUR8ACFEiAAhRIwAIUSQACFElAAhRJgAIUSgACFEqAAhRKwAIUSwACFEuAAhRLwAIUaoACFGsAAhRrgAIUbAACFGzAAhRtAAIUbUACFG2AAhRtwAIUbkACFG7AAhRvAAIUb0ACFG/AAhRwAAIUjsACFI9AAhSPwAIUkEACFJEAAhSRQAIUkYACFJHAAhSSAAIUkoACFJMAAhSTQAIUk4ACFJQAAhSUQAIUswACFLOAAhS0AAIUtIACFLVAAhS1gAIUtcACFLYAAhS2QAIUtsACFLdAAhS3gAIUt8ACFLhAAhS4gAIU10ACFNfAAhTYgAIU2QACFNnAAhTaAAIU2kACFNqAAhTawAIU20ACFNvAAhTcAAIU3EACFNzAAhTdAAIU5gACFQTAAhUFQAIVBcACFQZAAhUHAAIVB0ACFQeAAhUHwAIVCAACFQiAAhUJAAIVCUACFQmAAhUKAAIVCkACFS8AAhU3wAIVP8ACFUfAAhVIQAIVSMACFUlAAhVJwAIVSoACFUrAAhVLAAIVS8ACFUwAAhVMgAIVTMACFU2AAhVOQAIVToACFU7AAhVPgAIVT8ACFVEAAhVXQAIVWYACFVoAAhVawAIVXQACFV3AAhVegAIVXwACFXFAAhV6QAIVhAACFY0AAhWNwAIVjkACFY7AAhWPQAIVj8ACFZBAAhWQgAIVkUACFZeAAhWfwAIVoEACFaDAAhWhQAIVocACFaJAAhWiwAIVo0ACFaPAAhWsAAIVrMACFa2AAhWuQAIVrwACFa/AAhWwgAIVsUACFbIAAhWygAIV0UACFdHAAhXSQAIV0sACFdOAAhXTwAIV1AACFdRAAhXUgAIV1QACFdWAAhXVwAIV1gACFdaAAhXWwAIV9YACFfYAAhX2gAIV9wACFffAAhX4AAIV+EACFfiAAhX4wAIV+UACFfnAAhX6AAIV+kACFfrAAhX7AAIWGcACFhpAAhYbAAIWG4ACFhxAAhYcgAIWHMACFh0AAhYdQAIWHcACFh5AAhYegAIWHsACFh9AAhYfgAIWJcACFiYAAhYmQAIWJsACFkWAAhZGAAIWRoACFkcAAhZHwAIWSAACFkhAAhZIgAIWSMACFklAAhZJwAIWSgACFkpAAhZKwAIWSwACFmnAAhZqQAIWasACFmtAAhZsAAIWbEACFmyAAhZswAIWbQACFm2AAhZuAAIWbkACFm6AAhZvAAIWb0ACFo4AAhaOgAIWjwACFo+AAhaQQAIWkIACFpDAAhaRAAIWkUACFpHAAhaSQAIWkoACFpLAAhaTQAIWk4ACFrJAAhaywAIWs0ACFrPAAha0gAIWtMACFrUAAha1QAIWtYACFrYAAha2gAIWtsACFrcAAha3gAIWt8ACFtaAAhbXAAIW14ACFtgAAhbYwAIW2QACFtlAAhbZgAIW2cACFtpAAhbawAIW2wACFttAAhbbwAIW3AACFu5AAhb3QAIXAQACFwoAAhcKwAIXC4ACFwwAAhcMgAIXDQACFw2AAhcNwAIXDoACFxTAAhccAAIXHMACFx2AAhceQAIXHwACFx/AAhcggAIXIUACFyiAAhcpQAIXKgACFyrAAhcrgAIXLEACFy0AAhctwAIXLkACF00AAhdNgAIXTkACF07AAhdPgAIXT8ACF1AAAhdQQAIXUIACF1EAAhdRwAIXUgACF1JAAhdSwAIXUwACF3HAAhdyQAIXcwACF3OAAhd0QAIXdIACF3TAAhd1AAIXdUACF3XAAhd2gAIXdsACF3cAAhd3gAIXd8ACF5aAAheXAAIXl8ACF5hAAheZAAIXmUACF5mAAheZwAIXmgACF5qAAhebQAIXm4ACF5vAAhecQAIXnIACF7tAAhe7wAIXvIACF70AAhe9wAIXvgACF75AAhe+gAIXvsACF79AAhfAAAIXwEACF8CAAhfBAAIXwUACF+IAAhfrAAIX9AACF/zAAhgGgAIYDoACGBhAAhgiAAIYKgACGDMAAhg8AAIYPIACGD1AAhg9wAIYPkACGD7AAhg/gAIYQEACGEDAAhhBQAIYQgACGEKAAhhDAAIYQ8ACGESAAhhEwAIYRgACGExAAhhNgAIYTgACGE9AAhhQAAIYUIACGGLAAhhrwAIYdYACGH6AAhh/QAIYf8ACGIBAAhiAwAIYgUACGIHAAhiCAAIYgsACGIkAAhiSQAIYksACGJNAAhiTwAIYlEACGJTAAhiVQAIYlcACGJZAAhiWwAIYoAACGKDAAhihgAIYokACGKMAAhijwAIYpIACGKVAAhimAAIYpsACGKdAAhjGAAIYxoACGMdAAhjHwAIYyIACGMjAAhjJAAIYyUACGMmAAhjKAAIYyoACGMrAAhjLAAIYy4ACGMvAAhjQAAIY0EACGNDAAhjvgAIY8AACGPCAAhjxAAIY8cACGPIAAhjyQAIY8oACGPLAAhjzQAIY88ACGPQAAhj0QAIY9MACGPUAAhkTwAIZFEACGRUAAhkVgAIZFkACGRaAAhkWwAIZFwACGRdAAhkXwAIZGEACGRiAAhkYwAIZGUACGRmAAhkdwAIZHgACGR6AAhk9QAIZPcACGT5AAhk+wAIZP4ACGT/AAhlAAAIZQEACGUCAAhlBAAIZQYACGUHAAhlCAAIZQoACGULAAhlhgAIZYgACGWLAAhljQAIZZAACGWRAAhlkgAIZZMACGWUAAhllgAIZZgACGWZAAhlmgAIZZwACGWdAAhlrgAIZa8ACGWxAAhmLAAIZi4ACGYwAAhmMgAIZjUACGY2AAhmNwAIZjgACGY5AAhmOwAIZj0ACGY+AAhmPwAIZkEACGZCAAhmvQAIZr8ACGbCAAhmxAAIZscACGbIAAhmyQAIZsoACGbLAAhmzQAIZs8ACGbQAAhm0QAIZtMACGbUAAhm7QAIZu4ACGbvAAhm8QAIZ2wACGduAAhncAAIZ3IACGd1AAhndgAIZ3cACGd4AAhneQAIZ3sACGd9AAhnfgAIZ38ACGeBAAhnggAIZ/0ACGf/AAhoAgAIaAQACGgHAAhoCAAIaAkACGgKAAhoCwAIaA0ACGgPAAhoEAAIaBEACGgTAAhoFAAIaCAACGg5AAhoVgAIaFkACGhcAAhoXwAIaGIACGhlAAhoaAAIaGsACGiIAAhoiwAIaI4ACGiRAAholAAIaJcACGiaAAhonQAIaJ8ACGiuAAhowAAIaNgACGjvAAhpCAAIaQ0ACGmgAAhpwwAIaeMACGoDAAhqBQAIagcACGoJAAhqCwAIag4ACGoPAAhqEAAIahMACGoUAAhqFgAIahcACGoZAAhqHAAIah0ACGoeAAhqIQAIaiIACGonAAhqQAAIakkACGpLAAhqTQAIalYACGpZAAhqXAAIal4ACGqnAAhqywAIavIACGsWAAhrGQAIaxsACGsdAAhrHwAIayEACGsjAAhrJAAIaycACGtAAAhrYQAIa2MACGtlAAhrZwAIa2kACGtrAAhrbQAIa28ACGtxAAhrkgAIa5UACGuYAAhrmwAIa54ACGuhAAhrpAAIa6cACGuqAAhrrAAIbCcACGwpAAhsKwAIbC0ACGwwAAhsMQAIbDIACGwzAAhsNAAIbDYACGw4AAhsOQAIbDoACGw8AAhsPQAIbLgACGy6AAhsvAAIbL4ACGzBAAhswgAIbMMACGzEAAhsxQAIbMcACGzJAAhsygAIbMsACGzNAAhszgAIbUkACG1LAAhtTgAIbVAACG1TAAhtVAAIbVUACG1WAAhtVwAIbVkACG1bAAhtXAAIbV0ACG1fAAhtYAAIbXkACG16AAhtewAIbX0ACG34AAht+gAIbfwACG3+AAhuAQAIbgIACG4DAAhuBAAIbgUACG4HAAhuCQAIbgoACG4LAAhuDQAIbg4ACG6JAAhuiwAIbo0ACG6PAAhukgAIbpMACG6UAAhulQAIbpYACG6YAAhumgAIbpsACG6cAAhungAIbp8ACG8aAAhvHAAIbx4ACG8gAAhvIwAIbyQACG8lAAhvJgAIbycACG8pAAhvKwAIbywACG8tAAhvLwAIbzAACG+rAAhvrQAIb68ACG+xAAhvtAAIb7UACG+2AAhvtwAIb7gACG+6AAhvvAAIb70ACG++AAhvwAAIb8EACHA8AAhwPgAIcEAACHBCAAhwRQAIcEYACHBHAAhwSAAIcEkACHBLAAhwTQAIcE4ACHBPAAhwUQAIcFIACHCbAAhwvwAIcOYACHEKAAhxDQAIcQ8ACHERAAhxEwAIcRUACHEXAAhxGAAIcRsACHE0AAhxUQAIcVMACHFVAAhxVwAIcVkACHFbAAhxXQAIcV8ACHF8AAhxfwAIcYIACHGFAAhxiAAIcYsACHGOAAhxkQAIcZMACHIOAAhyEAAIchIACHIUAAhyFwAIchgACHIZAAhyGgAIchsACHIdAAhyHwAIciAACHIhAAhyIwAIciQACHKfAAhyoQAIcqMACHKlAAhyqAAIcqkACHKqAAhyqwAIcqwACHKuAAhysAAIcrEACHKyAAhytAAIcrUACHMwAAhzMgAIczQACHM2AAhzOQAIczoACHM7AAhzPAAIcz0ACHM/AAhzQQAIc0IACHNDAAhzRQAIc0YACHPBAAhzwwAIc8YACHPIAAhzywAIc8wACHPNAAhzzgAIc88ACHPRAAhz0wAIc9QACHPVAAhz1wAIc9gACHRTAAh0VQAIdFcACHRZAAh0XAAIdF0ACHReAAh0XwAIdGAACHRiAAh0ZAAIdGUACHRmAAh0aAAIdGkACHTkAAh05gAIdOgACHTqAAh07QAIdO4ACHTvAAh08AAIdPEACHTzAAh09QAIdPYACHT3AAh0+QAIdPoACHV1AAh1dwAIdXkACHV7AAh1fgAIdX8ACHWAAAh1gQAIdYIACHWEAAh1hgAIdYcACHWIAAh1igAIdYsACHYeAAh2QQAIdmEACHaBAAh2gwAIdoUACHaHAAh2iQAIdowACHaNAAh2jgAIdpEACHaSAAh2lAAIdpUACHaXAAh2mgAIdpsACHacAAh2nwAIdqAACHapAAh2wgAIdssACHbNAAh2zwAIdtgACHbbAAh23gAIduAACHcpAAh3TQAId3QACHeYAAh3mwAId50ACHefAAh3oQAId6MACHelAAh3pgAId6kACHfCAAh34wAId+UACHfnAAh36QAId+sACHftAAh37wAId/EACHfzAAh4FAAIeBcACHgaAAh4HQAIeCAACHgjAAh4JgAIeCkACHgsAAh4LgAIeKkACHirAAh4rQAIeK8ACHiyAAh4swAIeLQACHi1AAh4tgAIeLgACHi6AAh4uwAIeLwACHi+AAh4vwAIeToACHk8AAh5PgAIeUAACHlDAAh5RAAIeUUACHlGAAh5RwAIeUkACHlLAAh5TAAIeU0ACHlPAAh5UAAIecsACHnNAAh50AAIedIACHnVAAh51gAIedcACHnYAAh52QAIedsACHndAAh53gAIed8ACHnhAAh54gAIefsACHn8AAh5/QAIef8ACHp6AAh6fAAIen4ACHqAAAh6gwAIeoQACHqFAAh6hgAIeocACHqJAAh6iwAIeowACHqNAAh6jwAIepAACHsLAAh7DQAIew8ACHsRAAh7FAAIexUACHsWAAh7FwAIexgACHsaAAh7HAAIex0ACHseAAh7IAAIeyEACHucAAh7ngAIe6AACHuiAAh7pQAIe6YACHunAAh7qAAIe6kACHurAAh7rQAIe64ACHuvAAh7sQAIe7IACHwtAAh8LwAIfDEACHwzAAh8NgAIfDcACHw4AAh8OQAIfDoACHw8AAh8PgAIfD8ACHxAAAh8QgAIfEMACHy+AAh8wAAIfMIACHzEAAh8xwAIfMgACHzJAAh8ygAIfMsACHzNAAh8zwAIfNAACHzRAAh80wAIfNQACH0dAAh9QQAIfWgACH2MAAh9jwAIfZEACH2TAAh9lQAIfZcACH2ZAAh9mgAIfZ0ACH22AAh90wAIfdUACH3XAAh92QAIfdsACH3dAAh93wAIfeEACH3+AAh+AQAIfgQACH4HAAh+CgAIfg0ACH4QAAh+EwAIfhUACH6QAAh+kgAIfpQACH6WAAh+mQAIfpoACH6bAAh+nAAIfp0ACH6fAAh+oQAIfqIACH6jAAh+pQAIfqYACH8hAAh/IwAIfyUACH8nAAh/KgAIfysACH8sAAh/LQAIfy4ACH8wAAh/MgAIfzMACH80AAh/NgAIfzcACH+yAAh/tAAIf7YACH+4AAh/uwAIf7wACH+9AAh/vgAIf78ACH/BAAh/wwAIf8QACH/FAAh/xwAIf8gACIBDAAiARQAIgEcACIBJAAiATAAIgE0ACIBOAAiATwAIgFAACIBSAAiAVAAIgFUACIBWAAiAWAAIgFkACIDUAAiA1gAIgNgACIDaAAiA3QAIgN4ACIDfAAiA4AAIgOEACIDjAAiA5QAIgOYACIDnAAiA6QAIgOoACIFlAAiBZwAIgWoACIFsAAiBbwAIgXAACIFxAAiBcgAIgXMACIF1AAiBdwAIgXgACIF5AAiBewAIgXwACIGLAAiCBgAIgggACIIKAAiCDAAIgg8ACIIQAAiCEQAIghIACIITAAiCFQAIghcACIIYAAiCGQAIghsACIIcAAiCrwAIgtIACILyAAiDEgAIgxQACIMWAAiDGAAIgxoACIMdAAiDHgAIgx8ACIMiAAiDIwAIgyUACIMmAAiDKAAIgysACIMsAAiDLQAIgzAACIMxAAiDNgAIg08ACINYAAiDWgAIg1wACINlAAiDaAAIg2sACINtAAiDtgAIg9oACIQBAAiEJQAIhCgACIQqAAiELAAIhC4ACIQwAAiEMgAIhDMACIQ2AAiETwAIhHAACIRyAAiEdAAIhHYACIR4AAiEegAIhHwACIR+AAiEgAAIhKEACISkAAiEpwAIhKoACIStAAiEsAAIhLMACIS2AAiEuQAIhLsACIU2AAiFOAAIhToACIU8AAiFPwAIhUAACIVBAAiFQgAIhUMACIVFAAiFRwAIhUgACIVJAAiFSwAIhUwACIXHAAiFyQAIhcsACIXNAAiF0AAIhdEACIXSAAiF0wAIhdQACIXWAAiF2AAIhdkACIXaAAiF3AAIhd0ACIZYAAiGWgAIhl0ACIZfAAiGYgAIhmMACIZkAAiGZQAIhmYACIZoAAiGagAIhmsACIZsAAiGbgAIhm8ACIaIAAiGiQAIhooACIaMAAiHBwAIhwkACIcLAAiHDQAIhxAACIcRAAiHEgAIhxMACIcUAAiHFgAIhxgACIcZAAiHGgAIhxwACIcdAAiHmAAIh5oACIecAAiHngAIh6EACIeiAAiHowAIh6QACIelAAiHpwAIh6kACIeqAAiHqwAIh60ACIeuAAiIKQAIiCsACIgtAAiILwAIiDIACIgzAAiINAAIiDUACIg2AAiIOAAIiDoACIg7AAiIPAAIiD4ACIg/AAiIugAIiLwACIi+AAiIwAAIiMMACIjEAAiIxQAIiMYACIjHAAiIyQAIiMsACIjMAAiIzQAIiM8ACIjQAAiJSwAIiU0ACIlPAAiJUQAIiVQACIlVAAiJVgAIiVcACIlYAAiJWgAIiVwACIldAAiJXgAIiWAACIlhAAiJqgAIic4ACIn1AAiKGQAIihwACIoeAAiKIAAIiiIACIokAAiKJgAIiicACIoqAAiKQwAIimAACIpiAAiKZAAIimYACIpoAAiKagAIimwACIpuAAiKiwAIio4ACIqRAAiKlAAIipcACIqaAAiKnQAIiqAACIqiAAiLHQAIix8ACIshAAiLIwAIiyYACIsnAAiLKAAIiykACIsqAAiLLAAIiy4ACIsvAAiLMAAIizIACIszAAiLrgAIi7AACIuyAAiLtAAIi7cACIu4AAiLuQAIi7oACIu7AAiLvQAIi78ACIvAAAiLwQAIi8MACIvEAAiMPwAIjEEACIxDAAiMRQAIjEgACIxJAAiMSgAIjEsACIxMAAiMTgAIjFAACIxRAAiMUgAIjFQACIxVAAiM0AAIjNIACIzVAAiM1wAIjNoACIzbAAiM3AAIjN0ACIzeAAiM4AAIjOIACIzjAAiM5AAIjOYACIznAAiNYgAIjWQACI1mAAiNaAAIjWsACI1sAAiNbQAIjW4ACI1vAAiNcQAIjXMACI10AAiNdQAIjXcACI14AAiN8wAIjfUACI33AAiN+QAIjfwACI39AAiN/gAIjf8ACI4AAAiOAgAIjgQACI4FAAiOBgAIjggACI4JAAiOhAAIjoYACI6IAAiOigAIjo0ACI6OAAiOjwAIjpAACI6RAAiOkwAIjpUACI6WAAiOlwAIjpkACI6aAAiPLQAIj1AACI9wAAiPkAAIj5IACI+UAAiPlgAIj5gACI+bAAiPnAAIj50ACI+gAAiPoQAIj6MACI+kAAiPpwAIj6oACI+rAAiPrAAIj68ACI+wAAiPtQAIj84ACI/XAAiP2QAIj9wACI/lAAiP6AAIj+sACI/tAAiQNgAIkFoACJCBAAiQpQAIkKgACJCqAAiQrAAIkK4ACJCwAAiQsgAIkLMACJC2AAiQzwAIkPAACJDyAAiQ9AAIkPYACJD4AAiQ+gAIkPwACJD+AAiRAAAIkSEACJEkAAiRJwAIkSoACJEtAAiRMAAIkTMACJE2AAiROQAIkTsACJG2AAiRuAAIkboACJG8AAiRvwAIkcAACJHBAAiRwgAIkcMACJHFAAiRxwAIkcgACJHJAAiRywAIkcwACJJHAAiSSQAIkksACJJNAAiSUAAIklEACJJSAAiSUwAIklQACJJWAAiSWAAIklkACJJaAAiSXAAIkl0ACJLYAAiS2gAIkt0ACJLfAAiS4gAIkuMACJLkAAiS5QAIkuYACJLoAAiS6gAIkusACJLsAAiS7gAIku8ACJMIAAiTCQAIkwoACJMMAAiThwAIk4kACJOLAAiTjQAIk5AACJORAAiTkgAIk5MACJOUAAiTlgAIk5gACJOZAAiTmgAIk5wACJOdAAiUGAAIlBoACJQcAAiUHgAIlCEACJQiAAiUIwAIlCQACJQlAAiUJwAIlCkACJQqAAiUKwAIlC0ACJQuAAiUqQAIlKsACJStAAiUrwAIlLIACJSzAAiUtAAIlLUACJS2AAiUuAAIlLoACJS7AAiUvAAIlL4ACJS/AAiVOgAIlTwACJU+AAiVQAAIlUMACJVEAAiVRQAIlUYACJVHAAiVSQAIlUsACJVMAAiVTQAIlU8ACJVQAAiVywAIlc0ACJXPAAiV0QAIldQACJXVAAiV1gAIldcACJXYAAiV2gAIldwACJXdAAiV3gAIleAACJXhAAiWKgAIlk4ACJZ1AAiWmQAIlpwACJafAAiWoQAIlqMACJalAAiWpwAIlqgACJarAAiWxAAIluEACJbkAAiW5wAIluoACJbtAAiW8AAIlvMACJb2AAiXEwAIlxYACJcZAAiXHAAIlx8ACJciAAiXJQAIlygACJcqAAiXpQAIl6cACJeqAAiXrAAIl68ACJewAAiXsQAIl7IACJezAAiXtQAIl7gACJe5AAiXugAIl7wACJe9AAiYOAAImDoACJg9AAiYPwAImEIACJhDAAiYRAAImEUACJhGAAiYSAAImEsACJhMAAiYTQAImE8ACJhQAAiYywAImM0ACJjQAAiY0gAImNUACJjWAAiY1wAImNgACJjZAAiY2wAImN4ACJjfAAiY4AAImOIACJjjAAiZXgAImWAACJljAAiZZQAImWgACJlpAAiZagAImWsACJlsAAiZbgAImXEACJlyAAiZcwAImXUACJl2AAiZ8QAImfMACJn1AAiZ9wAImfoACJn7AAiZ/AAImf0ACJn+AAiaAAAImgMACJoEAAiaBQAImgcACJoIAAiagwAImoUACJqHAAiaiQAImowACJqNAAiajgAImo8ACJqQAAiakgAImpUACJqWAAialwAImpkACJqaAAibFQAImxcACJsaAAibHAAImx8ACJsgAAibIQAImyIACJsjAAibJQAImygACJspAAibKgAImywACJstAAibwAAIm+MACJwDAAicIwAInCUACJwnAAicKQAInCsACJwuAAicLwAInDAACJwzAAicNAAInDYACJw3AAicOgAInD0ACJw+AAicPwAInEIACJxDAAicSAAInGEACJxqAAicbAAInG8ACJx4AAicewAInH4ACJyAAAicyQAInO0ACJ0UAAidOAAInTsACJ09AAidPwAInUEACJ1DAAidRQAInUYACJ1JAAidYgAInYMACJ2FAAidhwAInYkACJ2LAAidjQAInY8ACJ2RAAidkwAInbQACJ23AAidugAInb0ACJ3AAAidwwAIncYACJ3JAAidzAAInc4ACJ5JAAieSwAInk0ACJ5PAAieUgAInlMACJ5UAAieVQAInlYACJ5YAAieWgAInlsACJ5cAAieXgAInl8ACJ7aAAie3AAInt4ACJ7gAAie4wAInuQACJ7lAAie5gAInucACJ7pAAie6wAInuwACJ7tAAie7wAInvAACJ9rAAifbQAIn3AACJ9yAAifdQAIn3YACJ93AAifeAAIn3kACJ97AAiffQAIn34ACJ9/AAifgQAIn4IACJ+bAAifnAAIn50ACJ+fAAigGgAIoBwACKAeAAigIAAIoCMACKAkAAigJQAIoCYACKAnAAigKQAIoCsACKAsAAigLQAIoC8ACKAwAAigqwAIoK0ACKCvAAigsQAIoLQACKC1AAigtgAIoLcACKC4AAigugAIoLwACKC9AAigvgAIoMAACKDBAAihPAAIoT4ACKFAAAihQgAIoUUACKFGAAihRwAIoUgACKFJAAihSwAIoU0ACKFOAAihTwAIoVEACKFSAAihzQAIoc8ACKHRAAih0wAIodYACKHXAAih2AAIodkACKHaAAih3AAIod4ACKHfAAih4AAIoeIACKHjAAiiXgAIomAACKJiAAiiZAAIomcACKJoAAiiaQAIomoACKJrAAiibQAIom8ACKJwAAiicQAIonMACKJ0AAiivQAIouEACKMIAAijLAAIoy8ACKMyAAijNAAIozYACKM4AAijOgAIozsACKM+AAijVwAIo3QACKN3AAijegAIo30ACKOAAAijgwAIo4YACKOJAAijpgAIo6kACKOsAAijrwAIo7IACKO1AAijuAAIo7sACKO9AAikOAAIpDoACKQ9AAikPwAIpEIACKRDAAikRAAIpEUACKRGAAikSAAIpEsACKRMAAikTQAIpE8ACKRQAAikywAIpM0ACKTQAAik0gAIpNUACKTWAAik1wAIpNgACKTZAAik2wAIpN4ACKTfAAik4AAIpOIACKTjAAilXgAIpWAACKVjAAilZQAIpWgACKVpAAilagAIpWsACKVsAAilbgAIpXEACKVyAAilcwAIpXUACKV2AAil8QAIpfMACKX2AAil+AAIpfsACKX8AAil/QAIpf4ACKX/AAimAQAIpgQACKYFAAimBgAIpggACKYJAAimhAAIpoYACKaIAAimigAIpo0ACKaOAAimjwAIppAACKaRAAimkwAIppYACKaXAAimmAAIppoACKabAAinFgAIpxgACKcaAAinHAAIpx8ACKcgAAinIQAIpyIACKcjAAinJQAIpygACKcpAAinKgAIpywACKctAAinqAAIp6oACKetAAinrwAIp7IACKezAAintAAIp7UACKe2AAinuAAIp7sACKe8AAinvQAIp78ACKfAAAioUwAIqHYACKiWAAiotgAIqLgACKi6AAiovAAIqL4ACKjBAAiowgAIqMMACKjGAAioxwAIqMkACKjKAAiozQAIqNAACKjRAAio0gAIqNUACKjWAAio2wAIqPQACKj9AAio/wAIqQIACKkLAAipDgAIqREACKkTAAipXAAIqYAACKmnAAipywAIqc4ACKnQAAip0gAIqdQACKnWAAip2AAIqdkACKncAAip9QAIqhYACKoYAAiqGgAIqhwACKoeAAiqIAAIqiIACKokAAiqJgAIqkcACKpKAAiqTQAIqlAACKpTAAiqVgAIqlkACKpcAAiqXwAIqmEACKrcAAiq3gAIquAACKriAAiq5QAIquYACKrnAAiq6AAIqukACKrrAAiq7QAIqu4ACKrvAAiq8QAIqvIACKttAAirbwAIq3EACKtzAAirdgAIq3cACKt4AAireQAIq3oACKt8AAirfgAIq38ACKuAAAirggAIq4MACKv+AAisAAAIrAMACKwFAAisCAAIrAkACKwKAAisCwAIrAwACKwOAAisEAAIrBEACKwSAAisFAAIrBUACKwuAAisLwAIrDAACKwyAAisrQAIrK8ACKyxAAisswAIrLYACKy3AAisuAAIrLkACKy6AAisvAAIrL4ACKy/AAiswAAIrMIACKzDAAitPgAIrUAACK1CAAitRAAIrUcACK1IAAitSQAIrUoACK1LAAitTQAIrU8ACK1QAAitUQAIrVMACK1UAAitzwAIrdEACK3TAAit1QAIrdgACK3ZAAit2gAIrdsACK3cAAit3gAIreAACK3hAAit4gAIreQACK3lAAiuYAAIrmIACK5kAAiuZgAIrmkACK5qAAiuawAIrmwACK5tAAiubwAIrnEACK5yAAiucwAIrnUACK52AAiu8QAIrvMACK71AAiu9wAIrvoACK77AAiu/AAIrv0ACK7+AAivAAAIrwIACK8DAAivBAAIrwYACK8HAAivUAAIr3QACK+bAAivvwAIr8IACK/FAAivxwAIr8kACK/LAAivzQAIr84ACK/RAAiv6gAIsAcACLAKAAiwDQAIsBAACLATAAiwFgAIsBkACLAcAAiwOQAIsDwACLA/AAiwQgAIsEUACLBIAAiwSwAIsE4ACLBQAAiwywAIsM0ACLDQAAiw0gAIsNUACLDWAAiw1wAIsNgACLDZAAiw2wAIsN4ACLDfAAiw4AAIsOIACLDjAAixXgAIsWAACLFjAAixZQAIsWgACLFpAAixagAIsWsACLFsAAixbgAIsXEACLFyAAixcwAIsXUACLF2AAix8QAIsfMACLH2AAix+AAIsfsACLH8AAix/QAIsf4ACLH/AAiyAQAIsgQACLIFAAiyBgAIsggACLIJAAiyhAAIsoYACLKJAAiyiwAIso4ACLKPAAiykAAIspEACLKSAAiylAAIspcACLKYAAiymQAIspsACLKcAAizFwAIsxkACLMbAAizHQAIsyAACLMhAAizIgAIsyMACLMkAAizJgAIsykACLMqAAizKwAIsy0ACLMuAAizqQAIs6sACLOtAAizrwAIs7IACLOzAAiztAAIs7UACLO2AAizuAAIs7sACLO8AAizvQAIs78ACLPAAAi0OwAItD0ACLRAAAi0QgAItEUACLRGAAi0RwAItEgACLRJAAi0SwAItE4ACLRPAAi0UAAItFIACLRTAAi05gAItQkACLUpAAi1SQAItUsACLVNAAi1TwAItVEACLVUAAi1VQAItVYACLVZAAi1WgAItVwACLVdAAi1XwAItWIACLVjAAi1ZAAItWcACLVoAAi1bQAItYYACLWPAAi1kQAItZMACLWcAAi1nwAItaIACLWkAAi17QAIthEACLY4AAi2XAAItl8ACLZhAAi2YwAItmUACLZnAAi2aQAItmoACLZtAAi2hgAItqcACLapAAi2qwAItq0ACLavAAi2sQAItrMACLa1AAi2twAIttgACLbbAAi23gAItuEACLbkAAi25wAItuoACLbtAAi28AAItvIACLdtAAi3bwAIt3EACLdzAAi3dgAIt3cACLd4AAi3eQAIt3oACLd8AAi3fgAIt38ACLeAAAi3ggAIt4MACLf+AAi4AAAIuAIACLgEAAi4BwAIuAgACLgJAAi4CgAIuAsACLgNAAi4DwAIuBAACLgRAAi4EwAIuBQACLiPAAi4kQAIuJQACLiWAAi4mQAIuJoACLibAAi4nAAIuJ0ACLifAAi4oQAIuKIACLijAAi4pQAIuKYACLi/AAi4wAAIuMEACLjDAAi5PgAIuUAACLlCAAi5RAAIuUcACLlIAAi5SQAIuUoACLlLAAi5TQAIuU8ACLlQAAi5UQAIuVMACLlUAAi5zwAIudEACLnTAAi51QAIudgACLnZAAi52gAIudsACLncAAi53gAIueAACLnhAAi54gAIueQACLnlAAi6YAAIumIACLpkAAi6ZgAIumkACLpqAAi6awAIumwACLptAAi6bwAIunEACLpyAAi6cwAIunUACLp2AAi68QAIuvMACLr1AAi69wAIuvoACLr7AAi6/AAIuv0ACLr+AAi7AAAIuwIACLsDAAi7BAAIuwYACLsHAAi7ggAIu4QACLuGAAi7iAAIu4sACLuMAAi7jQAIu44ACLuPAAi7kQAIu5MACLuUAAi7lQAIu5cACLuYAAi74QAIvAUACLwsAAi8UAAIvFMACLxVAAi8VwAIvFkACLxbAAi8XQAIvF4ACLxhAAi8egAIvJcACLyZAAi8mwAIvJ0ACLyfAAi8oQAIvKMACLylAAi8wgAIvMUACLzIAAi8ywAIvM4ACLzRAAi81AAIvNcACLzZAAi9VAAIvVYACL1YAAi9WgAIvV0ACL1eAAi9XwAIvWAACL1hAAi9YwAIvWUACL1mAAi9ZwAIvWkACL1qAAi95QAIvecACL3pAAi96wAIve4ACL3vAAi98AAIvfEACL3yAAi99AAIvfYACL33AAi9+AAIvfoACL37AAi+dgAIvngACL56AAi+fAAIvn8ACL6AAAi+gQAIvoIACL6DAAi+hQAIvocACL6IAAi+iQAIvosACL6MAAi/BwAIvwkACL8MAAi/DgAIvxEACL8SAAi/EwAIvxQACL8VAAi/FwAIvxkACL8aAAi/GwAIvx0ACL8eAAi/mQAIv5sACL+dAAi/nwAIv6IACL+jAAi/pAAIv6UACL+mAAi/qAAIv6oACL+rAAi/rAAIv64ACL+vAAjAKgAIwCwACMAuAAjAMAAIwDMACMA0AAjANQAIwDYACMA3AAjAOQAIwDsACMA8AAjAPQAIwD8ACMBAAAjAuwAIwL0ACMC/AAjAwQAIwMQACMDFAAjAxgAIwMcACMDIAAjAygAIwMwACMDNAAjAzgAIwNAACMDRAAjBZAAIwYcACMGnAAjBxwAIwckACMHLAAjBzQAIwc8ACMHSAAjB0wAIwdQACMHXAAjB2AAIwdoACMHbAAjB3QAIweAACMHhAAjB4gAIweUACMHmAAjB6wAIwgQACMINAAjCDwAIwhEACMIaAAjCHQAIwiAACMIiAAjCawAIwo8ACMK2AAjC2gAIwt0ACMLfAAjC4QAIwuMACMLlAAjC5wAIwugACMLrAAjDBAAIwyUACMMnAAjDKQAIwysACMMtAAjDLwAIwzEACMMzAAjDNQAIw1YACMNZAAjDXAAIw18ACMNiAAjDZQAIw2gACMNrAAjDbgAIw3AACMPrAAjD7QAIw+8ACMPxAAjD9AAIw/UACMP2AAjD9wAIw/gACMP6AAjD/AAIw/0ACMP+AAjEAAAIxAEACMR8AAjEfgAIxIAACMSCAAjEhQAIxIYACMSHAAjEiAAIxIkACMSLAAjEjQAIxI4ACMSPAAjEkQAIxJIACMUNAAjFDwAIxRIACMUUAAjFFwAIxRgACMUZAAjFGgAIxRsACMUdAAjFHwAIxSAACMUhAAjFIwAIxSQACMU9AAjFPgAIxT8ACMVBAAjFvAAIxb4ACMXAAAjFwgAIxcUACMXGAAjFxwAIxcgACMXJAAjFywAIxc0ACMXOAAjFzwAIxdEACMXSAAjGTQAIxk8ACMZRAAjGUwAIxlYACMZXAAjGWAAIxlkACMZaAAjGXAAIxl4ACMZfAAjGYAAIxmIACMZjAAjG3gAIxuAACMbiAAjG5AAIxucACMboAAjG6QAIxuoACMbrAAjG7QAIxu8ACMbwAAjG8QAIxvMACMb0AAjHbwAIx3EACMdzAAjHdQAIx3gACMd5AAjHegAIx3sACMd8AAjHfgAIx4AACMeBAAjHggAIx4QACMeFAAjIAAAIyAIACMgEAAjIBgAIyAkACMgKAAjICwAIyAwACMgNAAjIDwAIyBEACMgSAAjIEwAIyBUACMgWAAjIXwAIyIMACMiqAAjIzgAIyNEACMjTAAjI1QAIyNcACMjZAAjI2wAIyNwACMjfAAjI+AAIyRUACMkXAAjJGQAIyRsACMkdAAjJHwAIySEACMkjAAjJQAAIyUMACMlGAAjJSQAIyUwACMlPAAjJUgAIyVUACMlXAAjJ0gAIydQACMnWAAjJ2AAIydsACMncAAjJ3QAIyd4ACMnfAAjJ4QAIyeMACMnkAAjJ5QAIyecACMnoAAjKYwAIymUACMpnAAjKaQAIymwACMptAAjKbgAIym8ACMpwAAjKcgAIynQACMp1AAjKdgAIyngACMp5AAjK9AAIyvYACMr4AAjK+gAIyv0ACMr+AAjK/wAIywAACMsBAAjLAwAIywUACMsGAAjLBwAIywkACMsKAAjLhQAIy4cACMuKAAjLjAAIy48ACMuQAAjLkQAIy5IACMuTAAjLlQAIy5cACMuYAAjLmQAIy5sACMucAAjMFwAIzBkACMwbAAjMHQAIzCAACMwhAAjMIgAIzCMACMwkAAjMJgAIzCgACMwpAAjMKgAIzCwACMwtAAjMqAAIzKoACMysAAjMrgAIzLEACMyyAAjMswAIzLQACMy1AAjMtwAIzLkACMy6AAjMuwAIzL0ACMy+AAjNOQAIzTsACM09AAjNPwAIzUIACM1DAAjNRAAIzUUACM1GAAjNSAAIzUoACM1LAAjNTAAIzU4ACM1PAAjNYAAIzWEACM1jAAjN3gAIzeAACM3iAAjN5AAIzecACM3oAAjN6QAIzeoACM3rAAjN7QAIzfAACM3xAAjN8gAIzfQACM31AAjOcAAIznIACM50AAjOdgAIznkACM56AAjOewAIznwACM59AAjOfwAIzoIACM6DAAjOhAAIzoYACM6HAAjPAgAIzwQACM8HAAjPCQAIzwwACM8NAAjPDgAIzw8ACM8QAAjPEgAIzxUACM8WAAjPFwAIzxkACM8aAAjPrQAIz9AACM/wAAjQEAAI0BIACNAUAAjQFgAI0BgACNAbAAjQHAAI0B0ACNAgAAjQIQAI0CMACNAkAAjQJgAI0CkACNAqAAjQKwAI0C4ACNAvAAjQNAAI0E0ACNBWAAjQWAAI0FoACNBjAAjQZgAI0GkACNBrAAjQtAAI0NgACND/AAjRIwAI0SYACNEoAAjRKgAI0SwACNEuAAjRMAAI0TEACNE0AAjRTQAI0W4ACNFwAAjRcgAI0XQACNF2AAjReAAI0XoACNF8AAjRfgAI0Z8ACNGiAAjRpQAI0agACNGrAAjRrgAI0bEACNG0AAjRtwAI0bkACNI0AAjSNgAI0jgACNI6AAjSPQAI0j4ACNI/AAjSQAAI0kEACNJDAAjSRQAI0kYACNJHAAjSSQAI0koACNLFAAjSxwAI0skACNLLAAjSzgAI0s8ACNLQAAjS0QAI0tIACNLUAAjS1gAI0tcACNLYAAjS2gAI0tsACNNWAAjTWAAI01sACNNdAAjTYAAI02EACNNiAAjTYwAI02QACNNmAAjTaAAI02kACNNqAAjTbAAI020ACNOGAAjThwAI04gACNOKAAjUBQAI1AcACNQJAAjUCwAI1A4ACNQPAAjUEAAI1BEACNQSAAjUFAAI1BYACNQXAAjUGAAI1BoACNQbAAjUlgAI1JgACNSaAAjUnAAI1J8ACNSgAAjUoQAI1KIACNSjAAjUpQAI1KcACNSoAAjUqQAI1KsACNSsAAjVJwAI1SkACNUrAAjVLQAI1TAACNUxAAjVMgAI1TMACNU0AAjVNgAI1TgACNU5AAjVOgAI1TwACNU9AAjVuAAI1boACNW8AAjVvgAI1cEACNXCAAjVwwAI1cQACNXFAAjVxwAI1ckACNXKAAjVywAI1c0ACNXOAAjWSQAI1ksACNZNAAjWTwAI1lIACNZTAAjWVAAI1lUACNZWAAjWWAAI1loACNZbAAjWXAAI1l4ACNZfAAjWqAAI1swACNbzAAjXFwAI1xoACNccAAjXHgAI1yAACNciAAjXJAAI1yUACNcoAAjXQQAI114ACNdgAAjXYgAI12QACNdmAAjXaAAI12oACNdsAAjXiQAI14wACNePAAjXkgAI15UACNeYAAjXmwAI154ACNegAAjYGwAI2B0ACNgfAAjYIQAI2CQACNglAAjYJgAI2CcACNgoAAjYKgAI2CwACNgtAAjYLgAI2DAACNgxAAjYrAAI2K4ACNiwAAjYsgAI2LUACNi2AAjYtwAI2LgACNi5AAjYuwAI2L0ACNi+AAjYvwAI2MEACNjCAAjZPQAI2T8ACNlBAAjZQwAI2UYACNlHAAjZSAAI2UkACNlKAAjZTAAI2U4ACNlPAAjZUAAI2VIACNlTAAjZzgAI2dAACNnSAAjZ1AAI2dcACNnYAAjZ2QAI2doACNnbAAjZ3QAI2d8ACNngAAjZ4QAI2eMACNnkAAjaXwAI2mEACNpjAAjaZQAI2mgACNppAAjaagAI2msACNpsAAjabgAI2nAACNpxAAjacgAI2nQACNp1AAja8AAI2vIACNr1AAja9wAI2voACNr7AAja/AAI2v0ACNr+AAjbAAAI2wIACNsDAAjbBAAI2wYACNsHAAjbJgAI26EACNujAAjbpQAI26cACNuqAAjbqwAI26wACNutAAjbrgAI27AACNuyAAjbswAI27QACNu2AAjbtwAI3EoACNxtAAjcjQAI3K0ACNyvAAjcsQAI3LMACNy1AAjcuAAI3LkACNy6AAjcvQAI3L4ACNzAAAjcwQAI3MQACNzHAAjcyAAI3MkACNzMAAjczQAI3NIACNzrAAjc9AAI3PYACNz5AAjdAgAI3QUACN0IAAjdCgAI3VMACN13AAjdngAI3cIACN3FAAjdxwAI3ckACN3LAAjdzQAI3c8ACN3QAAjd0wAI3ewACN4NAAjeDwAI3hEACN4TAAjeFQAI3hcACN4ZAAjeGwAI3h0ACN4+AAjeQQAI3kQACN5HAAjeSgAI3k0ACN5QAAjeUwAI3lYACN5YAAje0wAI3tUACN7XAAje2QAI3twACN7dAAje3gAI3t8ACN7gAAje4gAI3uQACN7lAAje5gAI3ugACN7pAAjfZAAI32YACN9oAAjfagAI320ACN9uAAjfbwAI33AACN9xAAjfcwAI33UACN92AAjfdwAI33kACN96AAjf9QAI3/cACN/6AAjf/AAI3/8ACOAAAAjgAQAI4AIACOADAAjgBQAI4AcACOAIAAjgCQAI4AsACOAMAAjgJQAI4CYACOAnAAjgKQAI4KQACOCmAAjgqAAI4KoACOCtAAjgrgAI4K8ACOCwAAjgsQAI4LMACOC1AAjgtgAI4LcACOC5AAjgugAI4TUACOE3AAjhOQAI4TsACOE+AAjhPwAI4UAACOFBAAjhQgAI4UQACOFGAAjhRwAI4UgACOFKAAjhSwAI4cYACOHIAAjhygAI4cwACOHPAAjh0AAI4dEACOHSAAjh0wAI4dUACOHXAAjh2AAI4dkACOHbAAjh3AAI4lcACOJZAAjiWwAI4l0ACOJgAAjiYQAI4mIACOJjAAjiZAAI4mYACOJoAAjiaQAI4moACOJsAAjibQAI4ugACOLqAAji7AAI4u4ACOLxAAji8gAI4vMACOL0AAji9QAI4vcACOL5AAji+gAI4vsACOL9AAji/gAI40cACONrAAjjkgAI47YACOO5AAjjvAAI474ACOPAAAjjwgAI48QACOPFAAjjyAAI4+EACOP+AAjkAQAI5AQACOQHAAjkCgAI5A0ACOQQAAjkEwAI5DAACOQzAAjkNgAI5DkACOQ8AAjkPwAI5EIACORFAAjkRwAI5MIACOTEAAjkxwAI5MkACOTMAAjkzQAI5M4ACOTPAAjk0AAI5NIACOTVAAjk1gAI5NcACOTZAAjk2gAI5VUACOVXAAjlWgAI5VwACOVfAAjlYAAI5WEACOViAAjlYwAI5WUACOVoAAjlaQAI5WoACOVsAAjlbQAI5egACOXqAAjl7QAI5e8ACOXyAAjl8wAI5fQACOX1AAjl9gAI5fgACOX7AAjl/AAI5f0ACOX/AAjmAAAI5nsACOZ9AAjmgAAI5oIACOaFAAjmhgAI5ocACOaIAAjmiQAI5osACOaOAAjmjwAI5pAACOaSAAjmkwAI5w4ACOcQAAjnEgAI5xQACOcXAAjnGAAI5xkACOcaAAjnGwAI5x0ACOcgAAjnIQAI5yIACOckAAjnJQAI56AACOeiAAjnpAAI56YACOepAAjnqgAI56sACOesAAjnrQAI568ACOeyAAjnswAI57QACOe2AAjntwAI6DIACOg0AAjoNwAI6DkACOg8AAjoPQAI6D4ACOg/AAjoQAAI6EIACOhFAAjoRgAI6EcACOhJAAjoSgAI6N0ACOkAAAj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D4gAJA+MACQP0AAkD9QAJA/cACQRyAAkEdAAJBHYACQR4AAkEewAJBHwACQR9AAkEfgAJBH8ACQSBAAkEgwAJBIQACQSFAAkEhwAJBIgACQUDAAkFBQAJBQgACQUKAAkFDQAJBQ4ACQUPAAkFEAAJBREACQUTAAkFFQAJBRYACQUXAAkFGQAJBRoACQUrAAkFLAAJBS4ACQWpAAkFqwAJBa0ACQWvAAkFsgAJBbMACQW0AAkFtQAJBbYACQW4AAkFugAJBbsACQW8AAkFvgAJBb8ACQY6AAkGPAAJBj8ACQZBAAkGRAAJBkUACQZGAAkGRwAJBkgACQZKAAkGTAAJBk0ACQZOAAkGUAAJBlEACQZiAAkGYwAJBmUACQbgAAkG4gAJBuQACQbmAAkG6QAJBuoACQbrAAkG7AAJBu0ACQbvAAkG8QAJBvIACQbzAAkG9QAJBvYACQdxAAkHcwAJB3YACQd4AAkHewAJB3wACQd9AAkHfgAJB38ACQeBAAkHgwAJB4QACQeFAAkHhwAJB4gACQehAAkHogAJB6MACQelAAkIIAAJCCIACQgkAAkIJgAJCCkACQgqAAkIKwAJCCwACQgtAAkILwAJCDEACQgyAAkIMwAJCDUACQg2AAkIsQAJCLMACQi2AAkIuAAJCLsACQi8AAkIvQAJCL4ACQi/AAkIwQAJCMMACQjEAAkIxQAJCMcACQjIAAkI4gAJCPsACQkEAAkJBwAJCQoACQkTAAkJFgAJCRkACQkbAAkJJgAJCTQACQnHAAkJ6gAJCgoACQoqAAkKLAAJCi4ACQowAAkKMgAJCjUACQo2AAkKNwAJCjoACQo7AAkKPQAJCj4ACQpAAAkKQwAJCkQACQpFAAkKSAAJCkkACQpOAAkKZwAJCnAACQpyAAkKdAAJCn0ACQqAAAkKgwAJCoUACQrOAAkK8gAJCxkACQs9AAkLQAAJC0IACQtEAAkLRgAJC0gACQtKAAkLSwAJC04ACQtnAAkLiAAJC4oACQuMAAkLjgAJC5AACQuSAAkLlAAJC5YACQuYAAkLuQAJC7wACQu/AAkLwgAJC8UACQvIAAkLywAJC84ACQvRAAkL0wAJDE4ACQxQAAkMUgAJDFQACQxXAAkMWAAJDFkACQxaAAkMWwAJDF0ACQxfAAkMYAAJDGEACQxjAAkMZAAJDN8ACQzhAAkM4wAJDOUACQzoAAkM6QAJDOoACQzrAAkM7AAJDO4ACQzwAAkM8QAJDPIACQz0AAkM9QAJDXAACQ1yAAkNdQAJDXcACQ16AAkNewAJDXwACQ19AAkNfgAJDYAACQ2CAAkNgwAJDYQACQ2GAAkNhwAJDaAACQ2hAAkNogAJDaQACQ4fAAkOIQAJDiMACQ4lAAkOKAAJDikACQ4qAAkOKwAJDiwACQ4uAAkOMAAJDjEACQ4yAAkONAAJDjUACQ6wAAkOsgAJDrQACQ62AAkOuQAJDroACQ67AAkOvAAJDr0ACQ6/AAkOwQAJDsIACQ7DAAkOxQAJDsYACQ9BAAkPQwAJD0UACQ9HAAkPSgAJD0sACQ9MAAkPTQAJD04ACQ9QAAkPUgAJD1MACQ9UAAkPVgAJD1cACQ/SAAkP1AAJD9YACQ/YAAkP2wAJD9wACQ/dAAkP3gAJD98ACQ/hAAkP4wAJD+QACQ/lAAkP5wAJD+gACRBjAAkQZQAJEGcACRBpAAkQbAAJEG0ACRBuAAkQbwAJEHAACRByAAkQdAAJEHUACRB2AAkQeAAJEHkACRDCAAkQ5gAJEQ0ACRExAAkRNAAJETYACRE4AAkROgAJETwACRE+AAkRPwAJEUIACRFbAAkReAAJEXoACRF8AAkRfgAJEYAACRGCAAkRhAAJEYYACRGjAAkRpgAJEakACRGsAAkRrwAJEbIACRG1AAkRuAAJEboACRI1AAkSNwAJEjkACRI7AAkSPgAJEj8ACRJAAAkSQQAJEkIACRJEAAkSRgAJEkcACRJIAAkSSgAJEksACRLGAAkSyAAJEsoACRLMAAkSzwAJEtAACRLRAAkS0gAJEtMACRLVAAkS1wAJEtgACRLZAAkS2wAJEtwACRNXAAkTWQAJE1sACRNdAAkTYAAJE2EACRNiAAkTYwAJE2QACRNmAAkTaAAJE2kACRNqAAkTbAAJE20ACRPoAAkT6gAJE+wACRPuAAkT8QAJE/IACRPzAAkT9AAJE/UACRP3AAkT+QAJE/oACRP7AAkT/QAJE/4ACRR5AAkUewAJFH0ACRR/AAkUggAJFIMACRSEAAkUhQAJFIYACRSIAAkUigAJFIsACRSMAAkUjgAJFI8ACRUKAAkVDAAJFQ8ACRURAAkVFAAJFRUACRUWAAkVFwAJFRgACRUaAAkVHAAJFR0ACRUeAAkVIAAJFSEACRUwAAkVqwAJFa0ACRWvAAkVsQAJFbQACRW1AAkVtgAJFbcACRW4AAkVugAJFbwACRW9AAkVvgAJFcAACRXBAAkWVAAJFncACRaXAAkWtwAJFrkACRa7AAkWvQAJFr8ACRbCAAkWwwAJFsQACRbHAAkWyAAJFsoACRbLAAkWzgAJFtEACRbSAAkW0wAJFtYACRbXAAkW4AAJFvkACRcCAAkXBAAJFwcACRcQAAkXEwAJFxYACRcYAAkXYQAJF4UACResAAkX0AAJF9MACRfVAAkX1wAJF9kACRfbAAkX3QAJF94ACRfhAAkX+gAJGBsACRgdAAkYHwAJGCEACRgjAAkYJQAJGCcACRgpAAkYKwAJGEwACRhPAAkYUgAJGFUACRhYAAkYWwAJGF4ACRhhAAkYZAAJGGYACRjhAAkY4wAJGOUACRjnAAkY6gAJGOsACRjsAAkY7QAJGO4ACRjwAAkY8gAJGPMACRj0AAkY9gAJGPcACRlyAAkZdAAJGXYACRl4AAkZewAJGXwACRl9AAkZfgAJGX8ACRmBAAkZgwAJGYQACRmFAAkZhwAJGYgACRoDAAkaBQAJGggACRoKAAkaDQAJGg4ACRoPAAkaEAAJGhEACRoTAAkaFQAJGhYACRoXAAkaGQAJGhoACRozAAkaNAAJGjUACRo3AAkasgAJGrQACRq2AAkauAAJGrsACRq8AAkavQAJGr4ACRq/AAkawQAJGsMACRrEAAkaxQAJGscACRrIAAkbQwAJG0UACRtHAAkbSQAJG0wACRtNAAkbTgAJG08ACRtQAAkbUgAJG1QACRtVAAkbVgAJG1gACRtZAAkb1AAJG9YACRvYAAkb2gAJG90ACRveAAkb3wAJG+AACRvhAAkb4wAJG+UACRvmAAkb5wAJG+kACRvqAAkcZQAJHGcACRxpAAkcawAJHG4ACRxvAAkccAAJHHEACRxyAAkcdAAJHHYACRx3AAkceAAJHHoACRx7AAkc9gAJHPgACRz6AAkc/AAJHP8ACR0AAAkdAQAJHQIACR0DAAkdBQAJHQcACR0IAAkdCQAJHQsACR0MAAkdVQAJHXkACR2gAAkdxAAJHccACR3KAAkdzAAJHc4ACR3QAAkd0gAJHdMACR3WAAkd7wAJHgwACR4PAAkeEgAJHhUACR4YAAkeGwAJHh4ACR4hAAkePgAJHkEACR5EAAkeRwAJHkoACR5NAAkeUAAJHlMACR5VAAke0AAJHtIACR7VAAke1wAJHtoACR7bAAke3AAJHt0ACR7eAAke4AAJHuMACR7kAAke5QAJHucACR7oAAkfYwAJH2UACR9oAAkfagAJH20ACR9uAAkfbwAJH3AACR9xAAkfcwAJH3YACR93AAkfeAAJH3oACR97AAkf9gAJH/gACR/7AAkf/QAJIAAACSABAAkgAgAJIAMACSAEAAkgBgAJIAkACSAKAAkgCwAJIA0ACSAOAAkgiQAJIIsACSCOAAkgkAAJIJMACSCUAAkglQAJIJYACSCXAAkgmQAJIJwACSCdAAkgngAJIKAACSChAAkhHAAJIR4ACSEgAAkhIgAJISUACSEmAAkhJwAJISgACSEpAAkhKwAJIS4ACSEvAAkhMAAJITIACSEzAAkhrgAJIbAACSGyAAkhtAAJIbcACSG4AAkhuQAJIboACSG7AAkhvQAJIcAACSHBAAkhwgAJIcQACSHFAAkiQAAJIkIACSJFAAkiRwAJIkoACSJLAAkiTAAJIk0ACSJOAAkiUAAJIlMACSJUAAkiVQAJIlcACSJYAAkiaQAJImoACSJsAAki5wAJIukACSLrAAki7QAJIvAACSLxAAki8gAJIvMACSL0AAki9gAJIvkACSL6AAki+wAJIv0ACSL+AAkjeQAJI3sACSN9AAkjfwAJI4IACSODAAkjhAAJI4UACSOGAAkjiAAJI4sACSOMAAkjjQAJI48ACSOQAAkkCwAJJA0ACSQQAAkkEgAJJBUACSQWAAkkFwAJJBgACSQZAAkkGwAJJB4ACSQfAAkkIAAJJCIACSQjAAkktgAJJNkACST5AAklGQAJJRsACSUdAAklHwAJJSEACSUkAAklJQAJJSYACSUpAAklKgAJJSwACSUtAAklMAAJJTMACSU0AAklNQAJJTgACSU5AAklQgAJJVsACSVkAAklZgAJJWkACSVyAAkldQAJJXgACSV6AAklwwAJJecACSYOAAkmMgAJJjUACSY3AAkmOQAJJjsACSY9AAkmPwAJJkAACSZDAAkmXAAJJn0ACSZ/AAkmgQAJJoMACSaFAAkmhwAJJokACSaLAAkmjQAJJq4ACSaxAAkmtAAJJrcACSa6AAkmvQAJJsAACSbDAAkmxgAJJsgACSdDAAk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TVwAJU1gACVPrAAlUDgAJVC4ACVROAAlUUAAJVFIACVRUAAlUVgAJVFkACVRaAAlUWwAJVF4ACVRfAAlUYQAJVGIACVRkAAlUZwAJVGgACVRpAAlUbAAJVG0ACVR2AAlUjwAJVJgACVSaAAlUnAAJVKUACVSoAAlUqwAJVK0ACVT2AAlVGgAJVUEACVVlAAlVaAAJVWoACVVsAAlVbgAJVXAACVVyAAlVcwAJVXYACVWPAAlVsAAJVbIACVW0AAlVtgAJVbgACVW6AAlVvAAJVb4ACVXAAAlV4QAJVeQACVXnAAlV6gAJVe0ACVXwAAlV8wAJVfYACVX5AAlV+wAJVnYACVZ4AAlWegAJVnwACVZ/AAlWgAAJVoEACVaCAAlWgwAJVoUACVaHAAlWiAAJVokACVaLAAlWjAAJVwcACVcJAAlXCwAJVw0ACVcQAAlXEQAJVxIACVcTAAlXFAAJVxYACVcYAAlXGQAJVxoACVccAAlXHQAJV5gACVeaAAlXnQAJV58ACVeiAAlXowAJV6QACVelAAlXpgAJV6gACVeqAAlXqwAJV6wACVeuAAlXrwAJV8gACVfJAAlXygAJV8wACVhHAAlYSQAJWEsACVhNAAlYUAAJWFEACVhSAAlYUwAJWFQACVhWAAlYWAAJWFkACVhaAAlYXAAJWF0ACVjYAAlY2gAJWNwACVjeAAlY4QAJWOIACVjjAAlY5AAJWOUACVjnAAlY6QAJWOoACVjrAAlY7QAJWO4ACVlpAAlZawAJWW0ACVlvAAlZcgAJWXMACVl0AAlZdQAJWXYACVl4AAlZegAJWXsACVl8AAlZfgAJWX8ACVn6AAlZ/AAJWf4ACVoAAAlaAwAJWgQACVoFAAlaBgAJWgcACVoJAAlaCwAJWgwACVoNAAlaDwAJWhAACVqLAAlajQAJWo8ACVqRAAlalAAJWpUACVqWAAlalwAJWpgACVqaAAlanAAJWp0ACVqeAAlaoAAJWqEACVrqAAlbDgAJWzUACVtZAAlbXAAJW14ACVtgAAlbYgAJW2QACVtmAAlbZwAJW2oACVuDAAlboAAJW6IACVukAAlbpgAJW6gACVuqAAlbrAAJW64ACVvLAAlbzgAJW9EACVvUAAlb1wAJW9oACVvdAAlb4AAJW+IACVxdAAlcXwAJXGEACVxjAAlcZgAJXGcACVxoAAlcaQAJXGoACVxsAAlcbgAJXG8ACVxwAAlccgAJXHMACVzuAAlc8AAJXPIACVz0AAlc9wAJXPgACVz5AAlc+gAJXPsACVz9AAlc/wAJXQAACV0BAAldAwAJXQQACV1/AAldgQAJXYMACV2FAAldiAAJXYkACV2KAAldiwAJXYwACV2OAAldkAAJXZEACV2SAAldlAAJXZUACV4QAAleEgAJXhUACV4XAAleGgAJXhsACV4cAAleHQAJXh4ACV4gAAleIgAJXiMACV4kAAleJgAJXicACV6iAAlepAAJXqYACV6oAAleqwAJXqwACV6tAAlergAJXq8ACV6xAAleswAJXrQACV61AAletwAJXrgACV8zAAlfNQAJXzcACV85AAlfPAAJXz0ACV8+AAlfPwAJX0AACV9CAAlfRAAJX0UACV9GAAlfSAAJX0kACV/EAAlfxgAJX8gACV/KAAlfzQAJX84ACV/PAAlf0AAJX9EACV/TAAlf1QAJX9YACV/XAAlf2QAJX9oACWBtAAlgkAAJYLAACWDQAAlg0gAJYNQACWDWAAlg2AAJYNsACWDcAAlg3QAJYOAACWDhAAlg4wAJYOQACWDmAAlg6QAJYOoACWDrAAlg7gAJYO8ACWD0AAlhDQAJYRYACWEYAAlhGgAJYSMACWEmAAlhKQAJYSsACWF0AAlhmAAJYb8ACWHjAAlh5gAJYegACWHqAAlh7AAJYe4ACWHwAAlh8QAJYfQACWINAAliLgAJYjAACWIyAAliNAAJYjYACWI4AAliOgAJYjwACWI+AAliXwAJYmIACWJlAAliaAAJYmsACWJuAAlicQAJYnQACWJ3AAlieQAJYvQACWL2AAli+AAJYvoACWL9AAli/gAJYv8ACWMAAAljAQAJYwMACWMFAAljBgAJYwcACWMJAAljCgAJY4UACWOHAAljiQAJY4sACWOOAAljjwAJY5AACWORAAljkgAJY5QACWOWAAljlwAJY5gACWOaAAljmwAJZBYACWQYAAlkGwAJZB0ACWQgAAlkIQAJZCIACWQjAAlkJAAJZCYACWQoAAlkKQAJZCoACWQsAAlkLQAJZEYACWRHAAlkSAAJZEoACWTFAAlkxwAJZMkACWTLAAlkzgAJZM8ACWTQAAlk0QAJZNIACWTUAAlk1gAJZNcACWTYAAlk2gAJZNsACWVWAAllWAAJZVoACWVcAAllXwAJZWAACWVhAAllYgAJZWMACWVlAAllZwAJZWgACWVpAAllawAJZWwACWXnAAll6QAJZesACWXtAAll8AAJZfEACWXyAAll8wAJZfQACWX2AAll+AAJZfkACWX6AAll/AAJZf0ACWZ4AAlmegAJZnwACWZ+AAlmgQAJZoIACWaDAAlmhAAJZoUACWaHAAlmiQAJZooACWaLAAlmjQAJZo4ACWcJAAlnCwAJZw0ACWcPAAlnEgAJZxMACWcUAAlnFQAJZxYACWcYAAlnGgAJZxsACWccAAlnHgAJZx8ACWdoAAlnjAAJZ7MACWfXAAln2gAJZ9wACWfeAAln4AAJZ+IACWfkAAln5QAJZ+gACWgBAAloHgAJaCAACWgiAAloJAAJaCYACWgoAAloKgAJaCwACWhJAAloTAAJaE8ACWhSAAloVQAJaFgACWhbAAloXgAJaGAACWjbAAlo3QAJaN8ACWjhAAlo5AAJaOUACWjmAAlo5wAJaOgACWjqAAlo7AAJaO0ACWjuAAlo8AAJaPEACWlsAAlpbgAJaXAACWlyAAlpdQAJaXYACWl3AAlpeAAJaXkACWl7AAlpfQAJaX4ACWl/AAlpgQAJaYIACWn9AAlp/wAJagEACWoDAAlqBgAJagcACWoIAAlqCQAJagoACWoMAAlqDgAJag8ACWoQAAlqEgAJahMACWqOAAlqkAAJapMACWqVAAlqmAAJapkACWqaAAlqmwAJapwACWqeAAlqoAAJaqEACWqiAAlqpAAJaqUACWsgAAlrIgAJayQACWsmAAlrKQAJayoACWsrAAlrLAAJay0ACWsvAAlrMQAJazIACWszAAlrNQAJazYACWuxAAlrswAJa7UACWu3AAlrugAJa7sACWu8AAlrvQAJa74ACWvAAAlrwgAJa8MACWvEAAlrxgAJa8cACWxCAAlsRAAJbEYACWxIAAlsSwAJbEwACWxNAAlsTgAJbE8ACWxRAAlsUwAJbFQACWxVAAlsVwAJbFgACWzrAAltDgAJbS4ACW1OAAltUAAJbVIACW1UAAltVgAJbVkACW1aAAltWwAJbV4ACW1fAAltYQAJbWIACW1kAAltZwAJbWgACW1pAAltbAAJbW0ACW1yAAltiwAJbZQACW2WAAltmAAJbaEACW2kAAltpwAJbakACW3yAAluFgAJbj0ACW5hAAluZAAJbmYACW5oAAluagAJbmwACW5uAAlubwAJbnIACW6LAAlurAAJbq4ACW6wAAlusgAJbrQACW62AAluuAAJbroACW68AAlu3QAJbuAACW7jAAlu5gAJbukACW7sAAlu7wAJbvIACW71AAlu9wAJb3IACW90AAlvdgAJb3gACW97AAlvfAAJb30ACW9+AAlvfwAJb4EACW+DAAlvhAAJb4UACW+HAAlviAAJcAMACXAFAAlwBwAJcAkACXAMAAlwDQAJcA4ACXAPAAlwEAAJcBIACXAUAAlwFQAJcBYACXAYAAlwGQAJcJQACXCWAAlwmQAJcJsACXCeAAlwnwAJcKAACXChAAlwogAJcKQACXCmAAlwpwAJcKgACXCqAAlwqwAJcMQACXDFAAlwxgAJcMgACXFDAAlxRQAJcUcACXFJAAlxTAAJcU0ACXFOAAlxTwAJcVAACXFSAAlxVAAJcVUACXFWAAlxWAAJcVkACXHUAAlx1gAJcdgACXHaAAlx3QAJcd4ACXHfAAlx4AAJceEACXHjAAlx5QAJceYACXHnAAlx6QAJceoACXJlAAlyZwAJcmkACXJrAAlybgAJcm8ACXJwAAlycQAJcnIACXJ0AAlydgAJcncACXJ4AAlyegAJcnsACXL2AAly+AAJcvoACXL8AAly/wAJcwAACXMBAAlzAgAJcwMACXMFAAlzBwAJcwgACXMJAAlzCwAJcwwACXOHAAlziQAJc4sACXONAAlzkAAJc5EACXOSAAlzkwAJc5QACXOWAAlzmAAJc5kACXOaAAlznAAJc50ACXPmAAl0CgAJdDEACXRVAAl0WAAJdFoACXRcAAl0XgAJdGAACXRiAAl0YwAJdGYACXR/AAl0nAAJdJ4ACXSgAAl0ogAJdKQACXSmAAl0qAAJdKoACXTHAAl0ygAJdM0ACXTQAAl00wAJdNYACXTZAAl03AAJdN4ACXVZAAl1WwAJdV0ACXVfAAl1YgAJdWMACXVkAAl1ZQAJdWYACXVoAAl1agAJdWsACXVsAAl1bgAJdW8ACXXqAAl17AAJde4ACXXwAAl18wAJdfQACXX1AAl19gAJdfcACXX5AAl1+wAJdfwACXX9AAl1/wAJdgAACXZ7AAl2fQAJdn8ACXaBAAl2hAAJdoUACXaGAAl2hwAJdogACXaKAAl2jAAJdo0ACXaOAAl2kAAJdpEACXcMAAl3DgAJdxEACXcTAAl3FgAJdxcACXcYAAl3GQAJdxoACXccAAl3HgAJdx8ACXcgAAl3IgAJdyMACXeeAAl3oAAJd6IACXekAAl3pwAJd6gACXepAAl3qgAJd6sACXetAAl3rwAJd7AACXexAAl3swAJd7QACXgvAAl4MQAJeDMACXg1AAl4OAAJeDkACXg6AAl4OwAJeDwACXg+AAl4QAAJeEEACXhCAAl4RAAJeEUACXjAAAl4wgAJeMQACXjGAAl4yQAJeMoACXjLAAl4zAAJeM0ACXjPAAl40QAJeNIACXjTAAl41QAJeNYACXlpAAl5jAAJeawACXnMAAl5zgAJedAACXnSAAl51AAJedcACXnYAAl52QAJedwACXndAAl53wAJeeAACXniAAl55QAJeeYACXnnAAl56gAJeesACXn0AAl6DQAJehYACXoYAAl6GgAJeiMACXomAAl6KQAJeisACXp0AAl6mAAJer8ACXrjAAl65gAJeugACXrqAAl67AAJeu4ACXrwAAl68QAJevQACXsNAAl7LgAJezAACXsyAAl7NAAJezYACXs4AAl7OgAJezwACXs+AAl7XwAJe2IACXtlAAl7aAAJe2sACXtuAAl7cQAJe3QACXt3AAl7eQAJe/QACXv2AAl7+AAJe/oACXv9AAl7/gAJe/8ACXwAAAl8AQAJfAMACXwFAAl8BgAJfAcACXwJAAl8CgAJfIUACXyHAAl8iQAJfIsACXyOAAl8jwAJfJAACXyRAAl8kgAJfJQACXyWAAl8lwAJfJgACXyaAAl8mwAJfRYACX0YAAl9GwAJfR0ACX0gAAl9IQAJfSIACX0jAAl9JAAJfSYACX0oAAl9KQAJfSoACX0sAAl9LQAJfUYACX1HAAl9SAAJfUoACX3FAAl9xwAJfckACX3LAAl9zgAJfc8ACX3QAAl90QAJfdIACX3UAAl91gAJfdcACX3YAAl92gAJfdsACX5WAAl+WAAJfloACX5cAAl+XwAJfmAACX5hAAl+YgAJfmMACX5lAAl+ZwAJfmgACX5pAAl+awAJfmwACX7nAAl+6QAJfusACX7tAAl+8AAJfvEACX7yAAl+8wAJfvQACX72AAl++AAJfvkACX76AAl+/AAJfv0ACX94AAl/egAJf3wACX9+AAl/gQAJf4IACX+DAAl/hAAJf4UACX+HAAl/iQAJf4oACX+LAAl/jQAJf44ACYAJAAmACwAJgA0ACYAPAAmAEgAJgBMACYAUAAmAFQAJgBYACYAYAAmAGgAJgBsACYAcAAmAHgAJgB8ACYBoAAmAjAAJgLMACYDXAAmA2gAJgNwACYDeAAmA4AAJgOIACYDkAAmA5QAJgOgACYEBAAmBHgAJgSAACYEiAAmBJAAJgSYACYEoAAmBKgAJgSwACYFJAAmBTAAJgU8ACYFSAAmBVQAJgVgACYFbAAmBXgAJgWAACYHbAAmB3QAJgd8ACYHhAAmB5AAJgeUACYHmAAmB5wAJgegACYHqAAmB7AAJge0ACYHuAAmB8AAJgfEACYJsAAmCbgAJgnAACYJyAAmCdQAJgnYACYJ3AAmCeAAJgnkACYJ7AAmCfQAJgn4ACYJ/AAmCgQAJgoIACYL9AAmC/wAJgwEACYMDAAmDBgAJgwcACYMIAAmDCQAJgwoACYMMAAmDDgAJgw8ACYMQAAmDEgAJgxMACYOOAAmDkAAJg5MACYOVAAmDmAAJg5kACYOaAAmDmwAJg5wACYOeAAmDoAAJg6EACYOiAAmDpAAJg6UACYQgAAmEIgAJhCQACYQmAAmEKQAJhCoACYQrAAmELAAJhC0ACYQvAAmEMQAJhDIACYQzAAmENQAJhDYACYSxAAmEswAJhLUACYS3AAmEugAJhLsACYS8AAmEvQAJhL4ACYTAAAmEwgAJhMMACYTEAAmExgAJhMcACYVCAAmFRAAJhUYACYVIAAmFSwAJhUwACYVNAAmFTgAJhU8ACYVRAAmFUwAJhVQACYVVAAmFVwAJhVgACYXrAAmGDgAJhi4ACYZOAAmGUAAJhlIACYZUAAmGVgAJhlkACYZaAAmGWwAJhl4ACYZfAAmGYQAJhmIACYZkAAmGZwAJhmgACYZpAAmGbAAJhm0ACYZyAAmGiwAJhpQACYaWAAmGmAAJhqEACYakAAmGpwAJhqkACYbyAAmHFgAJhz0ACYdhAAmHZAAJh2YACYdoAAmHagAJh2wACYduAAmHbwAJh3IACYeLAAmHrAAJh64ACYewAAmHsgAJh7QACYe2AAmHuAAJh7oACYe8AAmH3QAJh+AACYfjAAmH5gAJh+kACYfsAAmH7wAJh/IACYf1AAmH9wAJiHIACYh0AAmIdgAJiHgACYh7AAmIfAAJiH0ACYh+AAmIfwAJiIEACYiDAAmIhAAJiIUACYiHAAmIiAAJiQMACYkFAAmJBwAJiQkACYkMAAmJDQAJiQ4ACYkPAAmJEAAJiRIACYkUAAmJFQAJiRYACYkYAAmJGQAJiZQACYmWAAmJmQAJiZsACYmeAAmJnwAJiaAACYmhAAmJogAJiaQACYmmAAmJpwAJiagACYmqAAmJqwAJicQACYnFAAmJxgAJicgACYpDAAmKRQAJikcACYpJAAmKTAAJik0ACYpOAAmKTwAJilAACYpSAAmKVAAJilUACYpWAAmKWAAJilkACYrUAAmK1gAJitgACYraAAmK3QAJit4ACYrfAAmK4AAJiuEACYrjAAmK5QAJiuYACYrnAAmK6QAJiuoACYtlAAmLZwAJi2kACYtrAAmLbgAJi28ACYtwAAmLcQAJi3IACYt0AAmLdgAJi3cACYt4AAmLegAJi3sACYv2AAmL+AAJi/oACYv8AAmL/wAJjAAACYwBAAmMAgAJjAMACYwFAAmMBwAJjAgACYwJAAmMCwAJjAwACYyHAAmMiQAJjIsACYyNAAmMkAAJjJEACYySAAmMkwAJjJQACYyWAAmMmAAJjJkACYyaAAmMnAAJjJ0ACYzmAAmNCgAJjTEACY1VAAmNWAAJjVoACY1cAAmNXgAJjWAACY1iAAmNYwAJjWYACY1/AAmNnAAJjZ4ACY2gAAmNogAJjaQACY2mAAmNqAAJjaoACY3HAAmNygAJjc0ACY3QAAmN0wAJjdYACY3ZAAmN3AAJjd4ACY5ZAAmOWwAJjl0ACY5fAAmOYgAJjmMACY5kAAmOZQAJjmYACY5oAAmOagAJjmsACY5sAAmObgAJjm8ACY7qAAmO7AAJju4ACY7wAAmO8wAJjvQACY71AAmO9gAJjvcACY75AAmO+wAJjvwACY79AAmO/wAJjwAACY97AAmPfQAJj38ACY+BAAmPhAAJj4UACY+GAAmPhwAJj4gACY+KAAmPjAAJj40ACY+OAAmPkAAJj5EACZAMAAmQDgAJkBEACZATAAmQFgAJkBcACZAYAAmQGQAJkBoACZAcAAmQHgAJkB8ACZAgAAmQIgAJkCMACZCeAAmQoAAJkKIACZCkAAmQpwAJkKgACZCpAAmQqgAJkKsACZCtAAmQrwAJkLAACZCxAAmQswAJkLQACZEvAAmRMQAJkTMACZE1AAmROAAJkTkACZE6AAmROwAJkTwACZE+AAmRQAAJkUEACZFCAAmRRAAJkUUACZHAAAmRwgAJkcQACZHGAAmRyQAJkcoACZHLAAmRzAAJkc0ACZHPAAmR0QAJkdIACZHTAAmR1QAJkdYACZJpAAmSjAAJkqwACZLMAAmSzgAJktAACZLSAAmS1AAJktcACZLYAAmS2QAJktwACZLdAAmS3wAJkuAACZLiAAmS5QAJkuYACZLnAAmS6gAJkusACZLwAAmTCQAJkxIACZMUAAmTFgAJkx8ACZMiAAmTJQAJkycACZNwAAmTlAAJk7sACZPfAAmT4gAJk+QACZPmAAmT6AAJk+oACZPsAAmT7QAJk/AACZQJAAmUKgAJlCwACZQuAAmUMAAJlDIACZQ0AAmUNgAJlDgACZQ6AAmUWwAJlF4ACZRhAAmUZAAJlGcACZRqAAmUbQAJlHAACZRzAAmUdQAJlPAACZTyAAmU9AAJlPYACZT5AAmU+gAJlPsACZT8AAmU/QAJlP8ACZUBAAmVAgAJlQMACZUFAAmVBgAJlYEACZWDAAmVhQAJlYcACZWKAAmViwAJlYwACZWNAAmVjgAJlZAACZWSAAmVkwAJlZQACZWWAAmVlwAJlhIACZYUAAmWFwAJlhkACZYcAAmWHQAJlh4ACZYfAAmWIAAJliIACZYkAAmWJQAJliYACZYoAAmWKQAJlkIACZZDAAmWRAAJlkYACZbBAAmWwwAJlsUACZbHAAmWygAJlssACZbMAAmWzQAJls4ACZbQAAmW0gAJltMACZbUAAmW1gAJltcACZdSAAmXVAAJl1YACZdYAAmXWwAJl1wACZddAAmXXgAJl18ACZdhAAmXYwAJl2QACZdlAAmXZwAJl2gACZfjAAmX5QAJl+cACZfpAAmX7AAJl+0ACZfuAAmX7wAJl/AACZfyAAmX9AAJl/UACZf2AAmX+AAJl/kACZh0AAmYdgAJmHgACZh6AAmYfQAJmH4ACZh/AAmYgAAJmIEACZiDAAmYhQAJmIYACZiHAAmYiQAJmIoACZkFAAmZBwAJmQkACZkLAAmZDgAJmQ8ACZkQAAmZEQAJmRIACZkUAAmZFgAJmRcACZkYAAmZGgAJmRsACZlkAAmZiAAJma8ACZnTAAmZ1gAJmdgACZnaAAmZ3AAJmd4ACZngAAmZ4QAJmeQACZn9AAmaGgAJmhwACZoeAAmaIAAJmiIACZokAAmaJgAJmigACZpFAAmaSAAJmksACZpOAAmaUQAJmlQACZpXAAmaWgAJmlwACZrXAAma2QAJmtsACZrdAAma4AAJmuEACZriAAma4wAJmuQACZrmAAma6AAJmukACZrqAAma7AAJmu0ACZtoAAmbagAJm2wACZtuAAmbcQAJm3IACZtzAAmbdAAJm3UACZt3AAmbeQAJm3oACZt7AAmbfQAJm34ACZv5AAmb+wAJm/0ACZv/AAmcAgAJnAMACZwEAAmcBQAJnAYACZwIAAmcCgAJnAsACZwMAAmcDgAJnA8ACZyKAAmcjAAJnI8ACZyRAAmclAAJnJUACZyWAAmclwAJnJgACZyaAAmcnAAJnJ0ACZyeAAmcoAAJnKEACZ0cAAmdHgAJnSAACZ0iAAmdJQAJnSYACZ0nAAmdKAAJnSkACZ0rAAmdLQAJnS4ACZ0vAAmdMQAJnTIACZ2tAAmdrwAJnbEACZ2zAAmdtgAJnbcACZ24AAmduQAJnboACZ28AAmdvgAJnb8ACZ3AAAmdwgAJncMACZ4+AAmeQAAJnkIACZ5EAAmeRwAJnkgACZ5JAAmeSgAJnksACZ5NAAmeTwAJnlAACZ5RAAmeUwAJnlQACZ7nAAmfCgAJnyoACZ9KAAmfTAAJn04ACZ9QAAmfUgAJn1UACZ9WAAmfVwAJn1oACZ9bAAmfXQAJn14ACZ9gAAmfYwAJn2QACZ9lAAmfaAAJn2kACZ9uAAmfhwAJn5AACZ+SAAmflAAJn50ACZ+gAAmfowAJn6UACZ/uAAmgEgAJoDkACaBdAAmgYAAJoGIACaBkAAmgZgAJoGgACaBqAAmgawAJoG4ACaCHAAmgqAAJoKoACaCsAAmgrgAJoLAACaCyAAmgtAAJoLYACaC4AAmg2QAJoNwACaDfAAmg4gAJoOUACaDoAAmg6wAJoO4ACaDxAAmg8wAJoW4ACaFwAAmhcgAJoXQACaF3AAmheAAJoXkACaF6AAmhewAJoX0ACaF/AAmhgAAJoYEACaGDAAmhhAAJof8ACaIBAAmiAwAJogUACaIIAAmiCQAJogoACaILAAmiDAAJog4ACaIQAAmiEQAJohIACaIUAAmiFQAJopAACaKSAAmilQAJopcACaKaAAmimwAJopwACaKdAAmingAJoqAACaKiAAmiowAJoqQACaKmAAmipwAJosAACaLBAAmiwgAJosQACaM/AAmjQQAJo0MACaNFAAmjSAAJo0kACaNKAAmjSwAJo0wACaNOAAmjUAAJo1EACaNSAAmjVAAJo1UACaPQAAmj0gAJo9QACaPWAAmj2QAJo9oACaPbAAmj3AAJo90ACaPfAAmj4QAJo+IACaPjAAmj5QAJo+YACaRhAAmkYwAJpGUACaRnAAmkagAJpGsACaRsAAmkbQAJpG4ACaRwAAmkcgAJpHMACaR0AAmkdgAJpHcACaTyAAmk9AAJpPYACaT4AAmk+wAJpPwACaT9AAmk/gAJpP8ACaUBAAmlAwAJpQQACaUFAAmlBwAJpQgACaWDAAmlhQAJpYcACaWJAAmljAAJpY0ACaWOAAmljwAJpZAACaWSAAmllAAJpZUACaWWAAmlmAAJpZkACaXiAAmmBgAJpi0ACaZRAAmmVAAJplYACaZYAAmmWgAJplwACaZeAAmmXwAJpmIACaZ7AAmmmAAJppoACaacAAmmngAJpqAACaaiAAmmpAAJpqYACabDAAmmxgAJpskACabMAAmmzwAJptIACabVAAmm2AAJptoACadVAAmnVwAJp1kACadbAAmnXgAJp18ACadgAAmnYQAJp2IACadkAAmnZgAJp2cACadoAAmnagAJp2sACafmAAmn6AAJp+oACafsAAmn7wAJp/AACafxAAmn8gAJp/MACaf1AAmn9wAJp/gACaf5AAmn+wAJp/wACah3AAmoeQAJqHsACah9AAmogAAJqIEACaiCAAmogwAJqIQACaiGAAmoiAAJqIkACaiKAAmojAAJqI0ACakIAAmpCgAJqQ0ACakPAAmpEgAJqRMACakUAAmpFQAJqRYACakYAAmpGgAJqRsACakcAAmpHgAJqR8ACamaAAmpnAAJqZ4ACamgAAmpowAJqaQACamlAAmppgAJqacACampAAmpqwAJqawACamtAAmprwAJqbAACaorAAmqLQAJqi8ACaoxAAmqNAAJqjUACao2AAmqNwAJqjgACao6AAmqPAAJqj0ACao+AAmqQAAJqkEACaq8AAmqvgAJqsAACarCAAmqxQAJqsYACarHAAmqyAAJqskACarLAAmqzQAJqs4ACarPAAmq0QAJqtIACatlAAmriAAJq6gACavIAAmrygAJq8wACavOAAmr0AAJq9MACavUAAmr1QAJq9gACavZAAmr2wAJq9wACaveAAmr4QAJq+IACavjAAmr5gAJq+cACavsAAmsBQAJrA4ACawQAAmsEgAJrBsACaweAAmsIQAJrCMACaxsAAmskAAJrLcACazbAAms3gAJrOAACaziAAms5AAJrOYACazoAAms6QAJrOwACa0FAAmtJgAJrSgACa0qAAmtLAAJrS4ACa0wAAmtMgAJrTQACa02AAmtVwAJrVoACa1dAAmtYAAJrWMACa1mAAmtaQAJrWwACa1vAAmtcQAJrewACa3uAAmt8AAJrfIACa31AAmt9gAJrfcACa34AAmt+QAJrfsACa39AAmt/gAJrf8ACa4BAAmuAgAJrn0ACa5/AAmugQAJroMACa6GAAmuhwAJrogACa6JAAmuigAJrowACa6OAAmujwAJrpAACa6SAAmukwAJrw4ACa8QAAmvEwAJrxUACa8YAAmvGQAJrxoACa8bAAmvHAAJrx4ACa8gAAmvIQAJryIACa8kAAmvJQAJrz4ACa8/AAmvQAAJr0IACa+9AAmvvwAJr8EACa/DAAmvxgAJr8cACa/IAAmvyQAJr8oACa/MAAmvzgAJr88ACa/QAAmv0gAJr9MACbBOAAmwUAAJsFIACbBUAAmwVwAJsFgACbBZAAmwWgAJsFsACbBdAAmwXwAJsGAACbBhAAmwYwAJsGQACbDfAAmw4QAJsOMACbDlAAmw6AAJsOkACbDqAAmw6wAJsOwACbDuAAmw8AAJsPEACbDyAAmw9AAJsPUACbFwAAmxcgAJsXQACbF2AAmxeQAJsXoACbF7AAmxfAAJsX0ACbF/AAmxgQAJsYIACbGDAAmxhQAJsYYACbIBAAmyAwAJsgUACbIHAAmyCgAJsgsACbIMAAmyDQAJsg4ACbIQAAmyEgAJshMACbIUAAmyFgAJshcACbJgAAmyhAAJsqsACbLPAAmy0gAJstQACbLWAAmy2AAJstoACbLcAAmy3QAJsuAACbL5AAmzFgAJsxgACbMaAAmzHAAJsx4ACbMgAAmzIgAJsyQACbNBAAmzRAAJs0cACbNKAAmzTQAJs1AACbNTAAmzVgAJs1gACbPTAAmz1QAJs9cACbPZAAmz3AAJs90ACbPeAAmz3wAJs+AACbPiAAmz5AAJs+UACbPmAAmz6AAJs+kACbRkAAm0ZgAJtGgACbRqAAm0bQAJtG4ACbRvAAm0cAAJtHEACbRzAAm0dQAJtHYACbR3AAm0eQAJtHoACbT1AAm09wAJtPkACbT7AAm0/gAJtP8ACbUAAAm1AQAJtQIACbUEAAm1BgAJtQcACbUIAAm1CgAJtQsACbWGAAm1iAAJtYsACbWNAAm1kAAJtZEACbWSAAm1kwAJtZQACbWWAAm1mAAJtZkACbWaAAm1nAAJtZ0ACbYYAAm2GgAJthwACbYeAAm2IQAJtiIACbYjAAm2JAAJtiUACbYnAAm2KQAJtioACbYrAAm2LQAJti4ACbapAAm2qwAJtq0ACbavAAm2sgAJtrMACba0AAm2tQAJtrYACba4AAm2ugAJtrsACba8AAm2vgAJtr8ACbc6AAm3PAAJtz4ACbdAAAm3QwAJt0QACbdFAAm3RgAJt0cACbdJAAm3SwAJt0wACbdNAAm3TwAJt1AACbfjAAm4BgAJuCYACbhGAAm4SAAJuEoACbhMAAm4TgAJuFEACbhSAAm4UwAJuFYACbhXAAm4WQAJuFoACbhdAAm4YAAJuGEACbhiAAm4ZQAJuGYACbhrAAm4hAAJuI0ACbiPAAm4kgAJuJsACbieAAm4oQAJuKMACbjsAAm5EAAJuTcACblbAAm5XgAJuWAACbliAAm5ZAAJuWYACbloAAm5aQAJuWwACbmFAAm5pgAJuagACbmqAAm5rAAJua4ACbmwAAm5sgAJubQACbm2AAm51wAJudoACbndAAm54AAJueMACbnmAAm56QAJuewACbnvAAm58QAJumwACbpuAAm6cAAJunIACbp1AAm6dgAJuncACbp4AAm6eQAJunsACbp9AAm6fgAJun8ACbqBAAm6ggAJuv0ACbr/AAm7AQAJuwMACbsGAAm7BwAJuwgACbsJAAm7CgAJuwwACbsOAAm7DwAJuxAACbsSAAm7EwAJu44ACbuQAAm7kwAJu5UACbuYAAm7mQAJu5oACbubAAm7nAAJu54ACbugAAm7oQAJu6IACbukAAm7pQAJu74ACbu/AAm7wAAJu8IACbw9AAm8PwAJvEEACbxDAAm8RgAJvEcACbxIAAm8SQAJvEoACbxMAAm8TgAJvE8ACbxQAAm8UgAJvFMACbzOAAm80AAJvNIACbzUAAm81wAJvNgACbzZAAm82gAJvNsACbzdAAm83wAJvOAACbzhAAm84wAJvOQACb1fAAm9YQAJvWMACb1lAAm9aAAJvWkACb1qAAm9awAJvWwACb1uAAm9cAAJvXEACb1yAAm9dAAJvXUACb3wAAm98gAJvfQACb32AAm9+QAJvfoACb37AAm9/AAJvf0ACb3/AAm+AQAJvgIACb4DAAm+BQAJvgYACb6BAAm+gwAJvoUACb6HAAm+igAJvosACb6MAAm+jQAJvo4ACb6QAAm+kgAJvpMACb6UAAm+lgAJvpcACb7gAAm/BAAJvysACb9PAAm/UgAJv1UACb9XAAm/WQAJv1sACb9dAAm/XgAJv2EACb96AAm/lwAJv5oACb+dAAm/oAAJv6MACb+mAAm/qQAJv6wACb/JAAm/zAAJv88ACb/SAAm/1QAJv9gACb/bAAm/3gAJv+AACcBbAAnAXQAJwGAACcBiAAnAZQAJwGYACcBnAAnAaAAJwGkACcBrAAnAbgAJwG8ACcBwAAnAcgAJwHMACcDuAAnA8AAJwPMACcD1AAnA+AAJwPkACcD6AAnA+wAJwPwACcD+AAnBAQAJwQIACcEDAAnBBQAJwQYACcGBAAnBgwAJwYYACcGIAAnBiwAJwYwACcGNAAnBjgAJwY8ACcGRAAnBlAAJwZUACcGWAAnBmAAJwZkACcIUAAnCFgAJwhkACcIbAAnCHgAJwh8ACcIgAAnCIQAJwiIACcIkAAnCJwAJwigACcIpAAnCKwAJwiwACcKvAAnC0wAJwvcACcMaAAnDQQAJw2EACcOIAAnDrwAJw88ACcPzAAnEFwAJxBkACcQcAAnEHgAJxCAACcQiAAnEJQAJxCgACcQqAAnELAAJxC8ACcQxAAnEMwAJxDYACcQ5AAnEOgAJxD8ACcRYAAnEXQAJxF8ACcRkAAnEZwAJxGkACcSyAAnE1gAJxP0ACcUhAAnFJAAJxSYACcUoAAnFKgAJxSwACcUuAAnFLwAJxTIACcVLAAnFcAAJxXIACcV0AAnFdgAJxXgACcV6AAnFfAAJxX4ACcWAAAnFggAJxacACcWqAAnFrQAJxbAACcWzAAnFtgAJxbkACcW8AAnFvwAJxcIACcXEAAnGPwAJxkEACcZEAAnGRgAJxkkACcZKAAnGSwAJxkwACcZNAAnGTwAJxlEACcZSAAnGUwAJxlUACcZWAAnGZwAJxmgACcZqAAnG5QAJxucACcbpAAnG6wAJxu4ACcbvAAnG8AAJxvEACcbyAAnG9AAJxvYACcb3AAnG+AAJxvoACcb7AAnHdgAJx3gACcd7AAnHfQAJx4AACceBAAnHggAJx4MACceEAAnHhgAJx4gACceJAAnHigAJx4wACceNAAnHngAJx58ACcehAAnIHAAJyB4ACcggAAnIIgAJyCUACcgmAAnIJwAJyCgACcgpAAnIKwAJyC0ACcguAAnILwAJyDEACcgyAAnIrQAJyK8ACciyAAnItAAJyLcACci4AAnIuQAJyLoACci7AAnIvQAJyL8ACcjAAAnIwQAJyMMACcjEAAnI1QAJyNYACcjYAAnJUwAJyVUACclXAAnJWQAJyVwACcldAAnJXgAJyV8ACclgAAnJYgAJyWQACcllAAnJZgAJyWgACclpAAnJ5AAJyeYACcnpAAnJ6wAJye4ACcnvAAnJ8AAJyfEACcnyAAnJ9AAJyfYACcn3AAnJ+AAJyfoACcn7AAnKFAAJyhUACcoWAAnKGAAJypMACcqVAAnKlwAJypkACcqcAAnKnQAJyp4ACcqfAAnKoAAJyqIACcqkAAnKpQAJyqYACcqoAAnKqQAJyyQACcsmAAnLKQAJyysACcsuAAnLLwAJyzAACcsxAAnLMgAJyzQACcs2AAnLNwAJyzgACcs6AAnLOwAJy1UACctuAAnLfwAJy4IACcuFAAnLiAAJy4sACcucAAnLnwAJy6IACculAAnLqAAJy6oACcu5AAnLzQAJy9kACcvvAAnMggAJzKUACczFAAnM5QAJzOcACczpAAnM6wAJzO0ACczwAAnM8QAJzPIACcz1AAnM9gAJzPgACcz5AAnM/AAJzP8ACc0AAAnNAQAJzQQACc0FAAnNCgAJzSMACc0sAAnNLgAJzTEACc06AAnNPQAJzUAACc1CAAnNiwAJza8ACc3WAAnN+gAJzf0ACc3/AAnOAQAJzgMACc4FAAnOBwAJzggACc4LAAnOJAAJzkUACc5HAAnOSQAJzksACc5NAAnOTwAJzlEACc5TAAnOVQAJznYACc55AAnOfAAJzn8ACc6CAAnOhQAJzogACc6LAAnOjgAJzpAACc8LAAnPDQAJzw8ACc8RAAnPFAAJzxUACc8WAAnPFwAJzxgACc8aAAnPHAAJzx0ACc8eAAnPIAAJzyEACc+cAAnPngAJz6AACc+iAAnPpQAJz6YACc+nAAnPqAAJz6kACc+rAAnPrQAJz64ACc+vAAnPsQAJz7IACdAtAAnQLwAJ0DIACdA0AAnQNwAJ0DgACdA5AAnQOgAJ0DsACdA9AAnQPwAJ0EAACdBBAAnQQwAJ0EQACdBdAAnQXgAJ0F8ACdBhAAnQ3AAJ0N4ACdDgAAnQ4gAJ0OUACdDmAAnQ5wAJ0OgACdDpAAnQ6wAJ0O0ACdDuAAnQ7wAJ0PEACdDyAAnRbQAJ0W8ACdFxAAnRcwAJ0XYACdF3AAnReAAJ0XkACdF6AAnRfAAJ0X4ACdF/AAnRgAAJ0YIACdGDAAnR/gAJ0gAACdICAAnSBAAJ0gcACdIIAAnSCQAJ0goACdILAAnSDQAJ0g8ACdIQAAnSEQAJ0hMACdIUAAnSjwAJ0pEACdKTAAnSlQAJ0pgACdKZAAnSmgAJ0psACdKcAAnSngAJ0qAACdKhAAnSogAJ0qQACdKlAAnTIAAJ0yIACdMkAAnTJgAJ0ykACdMqAAnTKwAJ0ywACdMtAAnTLwAJ0zEACdMyAAnTMwAJ0zUACdM2AAnTfwAJ06MACdPKAAnT7gAJ0/EACdP0AAnT9gAJ0/gACdP6AAnT/AAJ0/0ACdQAAAnUGQAJ1DYACdQ5AAnUPAAJ1D8ACdRCAAnURQAJ1EgACdRLAAnUaAAJ1GsACdRuAAnUcQAJ1HQACdR3AAnUegAJ1H0ACdR/AAnU+gAJ1PwACdT/AAnVAQAJ1QQACdUFAAnVBgAJ1QcACdUIAAnVCgAJ1Q0ACdUOAAnVDwAJ1REACdUSAAnVjQAJ1Y8ACdWSAAnVlAAJ1ZcACdWYAAnVmQAJ1ZoACdWbAAnVnQAJ1aAACdWhAAnVogAJ1aQACdWlAAnWIAAJ1iIACdYlAAnWJwAJ1ioACdYrAAnWLAAJ1i0ACdYuAAnWMAAJ1jMACdY0AAnWNQAJ1jcACdY4AAnWswAJ1rUACda4AAnWugAJ1r0ACda+AAnWvwAJ1sAACdbBAAnWwwAJ1sYACdbHAAnWyAAJ1soACdbLAAnXRgAJ10gACddKAAnXTAAJ108ACddQAAnXUQAJ11IACddTAAnXVQAJ11gACddZAAnXWgAJ11wACdddAAnX2AAJ19oACdfcAAnX3gAJ1+EACdfiAAnX4wAJ1+QACdflAAnX5wAJ1+oACdfrAAnX7AAJ1+4ACdfvAAnYagAJ2GwACdhvAAnYcQAJ2HQACdh1AAnYdgAJ2HcACdh4AAnYegAJ2H0ACdh+AAnYfwAJ2IEACdiCAAnZFQAJ2TgACdlYAAnZeAAJ2XoACdl8AAnZfgAJ2YAACdmDAAnZhAAJ2YUACdmIAAnZiQAJ2YsACdmMAAnZjgAJ2ZEACdmSAAnZkwAJ2ZYACdmXAAnZnAAJ2bUACdm+AAnZwAAJ2cIACdnLAAnZzgAJ2dEACdnTAAnaHAAJ2kAACdpnAAnaiwAJ2o4ACdqQAAnakgAJ2pQACdqWAAnamAAJ2pkACdqcAAnatQAJ2tYACdrYAAna2gAJ2twACdreAAna4AAJ2uIACdrkAAna5gAJ2wcACdsKAAnbDQAJ2xAACdsTAAnbFgAJ2xkACdscAAnbHwAJ2yEACducAAnbngAJ26AACduiAAnbpQAJ26YACdunAAnbqAAJ26kACdurAAnbrQAJ264ACduvAAnbsQAJ27IACdwtAAncLwAJ3DEACdwzAAncNgAJ3DcACdw4AAncOQAJ3DoACdw8AAncPgAJ3D8ACdxAAAncQgAJ3EMACdy+AAncwAAJ3MMACdzFAAncyAAJ3MkACdzKAAncywAJ3MwACdzOAAnc0AAJ3NEACdzSAAnc1AAJ3NUACdzuAAnc7wAJ3PAACdzyAAndbQAJ3W8ACd1xAAndcwAJ3XYACd13AAndeAAJ3XkACd16AAndfAAJ3X4ACd1/AAndgAAJ3YIACd2DAAnd/gAJ3gAACd4CAAneBAAJ3gcACd4IAAneCQAJ3goACd4LAAneDQAJ3g8ACd4QAAneEQAJ3hMACd4UAAnejwAJ3pEACd6TAAnelQAJ3pgACd6ZAAnemgAJ3psACd6cAAnengAJ3qAACd6hAAneogAJ3qQACd6lAAnfIAAJ3yIACd8kAAnfJgAJ3ykACd8qAAnfKwAJ3ywACd8tAAnfLwAJ3zEACd8yAAnfMwAJ3zUACd82AAnfsQAJ37MACd+1AAnftwAJ37oACd+7AAnfvAAJ370ACd++AAnfwAAJ38IACd/DAAnfxAAJ38YACd/HAAngEAAJ4DQACeBbAAngfwAJ4IIACeCEAAnghgAJ4IgACeCKAAngjAAJ4I0ACeCQAAngqQAJ4MYACeDIAAngygAJ4MwACeDOAAng0AAJ4NIACeDUAAng8QAJ4PQACeD3AAng+gAJ4P0ACeEAAAnhAwAJ4QYACeEIAAnhgwAJ4YUACeGHAAnhiQAJ4YwACeGNAAnhjgAJ4Y8ACeGQAAnhkgAJ4ZQACeGVAAnhlgAJ4ZgACeGZAAniFAAJ4hYACeIYAAniGgAJ4h0ACeIeAAniHwAJ4iAACeIhAAniIwAJ4iUACeImAAniJwAJ4ikACeIqAAnipQAJ4qcACeKpAAniqwAJ4q4ACeKvAAnisAAJ4rEACeKyAAnitAAJ4rYACeK3AAniuAAJ4roACeK7AAnjNgAJ4zgACeM6AAnjPAAJ4z8ACeNAAAnjQQAJ40IACeNDAAnjRQAJ40cACeNIAAnjSQAJ40sACeNMAAnjxwAJ48kACePLAAnjzQAJ49AACePRAAnj0gAJ49MACePUAAnj1gAJ49gACePZAAnj2gAJ49wACePdAAnkWAAJ5FoACeRcAAnkXgAJ5GEACeRiAAnkYwAJ5GQACeRlAAnkZwAJ5GkACeRqAAnkawAJ5G0ACeRuAAnk6QAJ5OsACeTtAAnk7wAJ5PIACeTzAAnk9AAJ5PUACeT2AAnk+AAJ5PoACeT7AAnk/AAJ5P4ACeT/AAnlkgAJ5bUACeXVAAnl9QAJ5fcACeX5AAnl+wAJ5f0ACeYAAAnmAQAJ5gIACeYFAAnmBgAJ5ggACeYJAAnmCwAJ5g4ACeYPAAnmEAAJ5hMACeYUAAnmHQAJ5jYACeY/AAnmQQAJ5kMACeZMAAnmTwAJ5lIACeZUAAnmnQAJ5sEACeboAAnnDAAJ5w8ACecRAAnnEwAJ5xUACecXAAnnGQAJ5xoACecdAAnnNgAJ51cACedZAAnnWwAJ510ACedfAAnnYQAJ52MACedlAAnnZwAJ54gACeeLAAnnjgAJ55EACeeUAAnnlwAJ55oACeedAAnnoAAJ56IACegdAAnoHwAJ6CEACegjAAnoJgAJ6CcACegoAAnoKQAJ6CoACegsAAnoLgAJ6C8ACegwAAnoMgAJ6DMACeiuAAnosAAJ6LIACei0AAnotwAJ6LgACei5AAnougAJ6LsACei9AAnovwAJ6MAACejBAAnowwAJ6MQACek/AAnpQQAJ6UQACelGAAnpSQAJ6UoACelLAAnpTAAJ6U0ACelPAAnpUQAJ6VIACelTAAnpVQAJ6VYACelvAAnpcAAJ6XEACelzAAnp7gAJ6fAACenyAAnp9AAJ6fcACen4AAnp+QAJ6foACen7AAnp/QAJ6f8ACeoAAAnqAQAJ6gMACeoEAAnqfwAJ6oEACeqDAAnqhQAJ6ogACeqJAAnqigAJ6osACeqMAAnqjgAJ6pAACeqRAAnqkgAJ6pQACeqVAAnrEAAJ6xIACesUAAnrFgAJ6xkACesaAAnrGwAJ6xwACesdAAnrHwAJ6yEACesiAAnrIwAJ6yUACesmAAnroQAJ66MACeulAAnrpwAJ66oACeurAAnrrAAJ660ACeuuAAnrsAAJ67IACeuzAAnrtAAJ67YACeu3AAnsMgAJ7DQACew2AAnsOAAJ7DsACew8AAnsPQAJ7D4ACew/AAnsQQAJ7EMACexEAAnsRQAJ7EcACexIAAnskQAJ7LUACezcAAntAAAJ7QMACe0FAAntBwAJ7QkACe0LAAntDQAJ7Q4ACe0RAAntKgAJ7UcACe1JAAntSwAJ7U0ACe1PAAntUQAJ7VMACe1VAAntcgAJ7XUACe14AAntewAJ7X4ACe2BAAnthAAJ7YcACe2JAAnuBAAJ7gYACe4IAAnuCgAJ7g0ACe4OAAnuDwAJ7hAACe4RAAnuEwAJ7hUACe4WAAnuFwAJ7hkACe4aAAnulQAJ7pcACe6ZAAnumwAJ7p4ACe6fAAnuoAAJ7qEACe6iAAnupAAJ7qYACe6nAAnuqAAJ7qoACe6rAAnvJgAJ7ygACe8qAAnvLAAJ7y8ACe8wAAnvMQAJ7zIACe8zAAnvNQAJ7zcACe84AAnvOQAJ7zsACe88AAnvtwAJ77kACe+8AAnvvgAJ78EACe/CAAnvwwAJ78QACe/FAAnvxwAJ78kACe/KAAnvywAJ780ACe/OAAnwSQAJ8EsACfBNAAnwTwAJ8FIACfBTAAnwVAAJ8FUACfBWAAnwWAAJ8FoACfBbAAnwXAAJ8F4ACfBfAAnw2gAJ8NwACfDeAAnw4AAJ8OMACfDkAAnw5QAJ8OYACfDnAAnw6QAJ8OsACfDsAAnw7QAJ8O8ACfDwAAnxawAJ8W0ACfFvAAnxcQAJ8XQACfF1AAnxdgAJ8XcACfF4AAnxegAJ8XwACfF9AAnxfgAJ8YAACfGBAAnyFAAJ8jcACfJXAAnydwAJ8nkACfJ7AAnyfQAJ8n8ACfKCAAn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DjgAKA48ACgQKAAoEDAAKBA8ACgQRAAoEFAAKBBUACgQWAAoEFwAKBBgACgQaAAoEHAAKBB0ACgQeAAoEIAAKBCEACgQ6AAoEOwAKBDwACgQ+AAoEuQAKBLsACgS9AAoEvwAKBMIACgTDAAoExAAKBMUACgTGAAoEyAAKBMoACgTLAAoEzAAKBM4ACgTPAAoFSgAKBUwACgVOAAoFUAAKBVMACgVUAAoFVQAKBVYACgVXAAoFWQAKBVsACgVcAAoFXQAKBV8ACgVgAAoF2wAKBd0ACgXfAAoF4QAKBeQACgXlAAoF5gAKBecACgXoAAoF6gAKBewACgXtAAoF7gAKBfAACgXxAAoGbAAKBm4ACgZwAAoGcgAKBnUACgZ2AAoGdwAKBngACgZ5AAoGewAKBn0ACgZ+AAoGfwAKBoEACgaCAAoG/QAKBv8ACgcBAAoHAwAKBwYACgcHAAoHCAAKBwkACgcKAAoHDAAKBw4ACgcPAAoHEAAKBxIACgcTAAoHXAAKB4AACgenAAoHywAKB84ACgfQAAoH0gAKB9QACgfWAAoH2AAKB9kACgfcAAoH9QAKCBIACggUAAoIFgAKCBgACggaAAoIHAAKCB4ACgggAAoIPQAKCEAACghDAAoIRgAKCEkACghMAAoITwAKCFIACghUAAoIzwAKCNEACgjTAAoI1QAKCNgACgjZAAoI2gAKCNsACgjcAAoI3gAKCOAACgjhAAoI4gAKCOQACgjlAAoJYAAKCWIACglkAAoJZgAKCWkACglqAAoJawAKCWwACgltAAoJbwAKCXEACglyAAoJcwAKCXUACgl2AAoJ8QAKCfMACgn1AAoJ9wAKCfoACgn7AAoJ/AAKCf0ACgn+AAoKAAAKCgIACgoDAAoKBAAKCgYACgoHAAoKggAKCoQACgqHAAoKiQAKCowACgqNAAoKjgAKCo8ACgqQAAoKkgAKCpQACgqVAAoKlgAKCpgACgqZAAoLFAAKCxYACgsYAAoLGgAKCx0ACgseAAoLHwAKCyAACgshAAoLIwAKCyUACgsmAAoLJwAKCykACgsqAAoLpQAKC6cACgupAAoLqwAKC64ACguvAAoLsAAKC7EACguyAAoLtAAKC7YACgu3AAoLuAAKC7oACgu7AAoMNgAKDDgACgw6AAoMPAAKDD8ACgxAAAoMQQAKDEIACgxDAAoMRQAKDEcACgxIAAoMSQAKDEsACgxMAAoM3wAKDQIACg0iAAoNQgAKDUQACg1GAAoNSAAKDUoACg1NAAoNTgAKDU8ACg1SAAoNUwAKDVUACg1WAAoNWAAKDVsACg1cAAoNXQAKDWAACg1hAAoNZgAKDX8ACg2IAAoNigAKDYwACg2VAAoNmAAKDZsACg2dAAoN5gAKDgoACg4xAAoOVQAKDlgACg5aAAoOXAAKDl4ACg5gAAoOYgAKDmMACg5mAAoOfwAKDqAACg6iAAoOpAAKDqYACg6oAAoOqgAKDqwACg6uAAoOsAAKDtEACg7UAAoO1wAKDtoACg7dAAoO4AAKDuMACg7mAAoO6QAKDusACg9mAAoPaAAKD2oACg9sAAoPbwAKD3AACg9xAAoPcgAKD3MACg91AAoPdwAKD3gACg95AAoPewAKD3wACg/3AAoP+QAKD/sACg/9AAoQAAAKEAEAChACAAoQAwAKEAQAChAGAAoQCAAKEAkAChAKAAoQDAAKEA0AChCIAAoQigAKEI0AChCPAAoQkgAKEJMAChCUAAoQlQAKEJYAChCYAAoQmgAKEJsAChCcAAoQngAKEJ8AChC4AAoQuQAKELoAChC8AAoRNwAKETkAChE7AAoRPQAKEUAAChFBAAoRQgAKEUMAChFEAAoRRgAKEUgAChFJAAoRSgAKEUwAChFNAAoRyAAKEcoAChHMAAoRzgAKEdEAChHSAAoR0wAKEdQAChHVAAoR1wAKEdkAChHaAAoR2wAKEd0AChHeAAoSWQAKElsAChJdAAoSXwAKEmIAChJjAAoSZAAKEmUAChJmAAoSaAAKEmoAChJrAAoSbAAKEm4AChJvAAoS6gAKEuwAChLuAAoS8AAKEvMAChL0AAoS9QAKEvYAChL3AAoS+QAKEvsAChL8AAoS/QAKEv8AChMAAAoTewAKE30AChN/AAoTgQAKE4QAChOFAAoThgAKE4cAChOIAAoTigAKE4wAChONAAoTjgAKE5AAChORAAoT2gAKE/4AChQlAAoUSQAKFEwAChROAAoUUAAKFFIAChRUAAoUVgAKFFcAChRaAAoUcwAKFJAAChSSAAoUlAAKFJYAChSYAAoUmgAKFJwAChSeAAoUuwAKFL4AChTBAAoUxAAKFMcAChTKAAoUzQAKFNAAChTSAAoVTQAKFU8AChVRAAoVUwAKFVYAChVXAAoVWAAKFVkAChVaAAoVXAAKFV4AChVfAAoVYAAKFWIAChVjAAoV3gAKFeAAChXiAAoV5AAKFecAChXoAAoV6QAKFeoAChXrAAoV7QAKFe8AChXwAAoV8QAKFfMAChX0AAoWbwAKFnEAChZzAAoWdQAKFngAChZ5AAoWegAKFnsAChZ8AAoWfgAKFoAAChaBAAoWggAKFoQAChaFAAoXAAAKFwIAChcFAAoXBwAKFwoAChcLAAoXDAAKFw0AChcOAAoXEAAKFxIAChcTAAoXFAAKFxYAChcXAAoXkgAKF5QACheWAAoXmAAKF5sAChecAAoXnQAKF54AChefAAoXoQAKF6MAChekAAoXpQAKF6cACheoAAoYIwAKGCUAChgnAAoYKQAKGCwAChgtAAoYLgAKGC8AChgwAAoYMgAKGDQAChg1AAoYNgAKGDgAChg5AAoYtAAKGLYAChi4AAoYugAKGL0AChi+AAoYvwAKGMAAChjBAAoYwwAKGMUAChjGAAoYxwAKGMkAChjKAAoZXQAKGYAAChmgAAoZwAAKGcIAChnEAAoZxgAKGcgAChnLAAoZzAAKGc0AChnQAAoZ0QAKGdMAChnUAAoZ1gAKGdkAChnaAAoZ2wAKGd4AChnfAAoZ5AAKGf0AChoGAAoaCAAKGgoAChoTAAoaFgAKGhkAChobAAoaZAAKGogAChqvAAoa0wAKGtYAChrYAAoa2gAKGtwAChreAAoa4AAKGuEAChrkAAoa/QAKGx4AChsgAAobIgAKGyQAChsmAAobKAAKGyoAChssAAobLgAKG08AChtSAAobVQAKG1gAChtbAAobXgAKG2EAChtkAAobZwAKG2kAChvkAAob5gAKG+gAChvqAAob7QAKG+4AChvvAAob8AAKG/EAChvzAAob9QAKG/YAChv3AAob+QAKG/oAChx1AAocdwAKHHkAChx7AAocfgAKHH8AChyAAAocgQAKHIIAChyEAAochgAKHIcAChyIAAocigAKHIsACh0GAAodCAAKHQsACh0NAAodEAAKHREACh0SAAodEwAKHRQACh0WAAodGAAKHRkACh0aAAodHAAKHR0ACh02AAodNwAKHTgACh06AAodtQAKHbcACh25AAoduwAKHb4ACh2/AAodwAAKHcEACh3CAAodxAAKHcYACh3HAAodyAAKHcoACh3LAAoeRgAKHkgACh5KAAoeTAAKHk8ACh5QAAoeUQAKHlIACh5TAAoeVQAKHlcACh5YAAoeWQAKHlsACh5cAAoe1wAKHtkACh7bAAoe3QAKHuAACh7hAAoe4gAKHuMACh7kAAoe5gAKHugACh7pAAoe6gAKHuwACh7tAAofaAAKH2oACh9sAAofbgAKH3EACh9yAAofcwAKH3QACh91AAofdwAKH3kACh96AAofewAKH30ACh9+AAof+QAKH/sACh/9AAof/wAKIAIACiADAAogBAAKIAUACiAGAAogCAAKIAoACiALAAogDAAKIA4ACiAPAAogWAAKIHwACiCjAAogxwAKIMoACiDMAAogzgAKINAACiDSAAog1AAKINUACiDYAAog8QAKIQ4ACiEQAAohEgAKIRQACiEWAAohGAAKIRoACiEcAAohOQAKITwACiE/AAohQgAKIUUACiFIAAohSwAKIU4ACiFQAAohywAKIc0ACiHPAAoh0QAKIdQACiHVAAoh1gAKIdcACiHYAAoh2gAKIdwACiHdAAoh3gAKIeAACiHhAAoiXAAKIl4ACiJgAAoiYgAKImUACiJmAAoiZwAKImgACiJpAAoiawAKIm0ACiJuAAoibwAKInEACiJyAAoi7QAKIu8ACiLxAAoi8wAKIvYACiL3AAoi+AAKIvkACiL6AAoi/AAKIv4ACiL/AAojAAAKIwIACiMDAAojfgAKI4AACiODAAojhQAKI4gACiOJAAojigAKI4sACiOMAAojjgAKI5AACiORAAojkgAKI5QACiOVAAokEAAKJBIACiQUAAokFgAKJBkACiQaAAokGwAKJBwACiQdAAokHwAKJCEACiQiAAokIwAKJCUACiQmAAokoQAKJKMACiSlAAokpwAKJKoACiSrAAokrAAKJK0ACiSuAAoksAAKJLIACiSzAAoktAAKJLYACiS3AAolMgAKJTQACiU2AAolOAAKJTsACiU8AAolPQAKJT4ACiU/AAolQQAKJUMACiVEAAolRQAKJUcACiVIAAol2wAKJf4ACiYeAAomPgAKJkAACiZCAAomRAAKJkYACiZJAAomSgAKJksACiZOAAomTwAKJlEACiZSAAomVQAKJlgACiZZAAomWgAKJl0ACiZeAAomYwAKJnwACiaFAAomhwAKJooACiaTAAomlgAKJpkACiabAAom5AAKJwgACicvAAonUwAKJ1YACidYAAonWgAKJ1wACideAAonYAAKJ2EACidkAAonfQAKJ54ACiegAAonogAKJ6QACiemAAonqAAKJ6oACiesAAonrgAKJ88ACifSAAon1QAKJ9gACifbAAon3gAKJ+EACifkAAon5wAKJ+kACihkAAooZgAKKGgACihqAAoobQAKKG4ACihvAAoocAAKKHEACihzAAoodQAKKHYACih3AAooeQAKKHoACij1AAoo9wAKKPkACij7AAoo/gAKKP8ACikAAAopAQAKKQIACikEAAopBgAKKQcACikIAAopCgAKKQsACimGAAopiAAKKYsACimNAAopkAAKKZEACimSAAopkwAKKZQACimWAAopmAAKKZkACimaAAopnAAKKZ0ACim2AAoptwAKKbgACim6AAoqNQAKKjcACio5AAoqOwAKKj4ACio/AAoqQAAKKkEACipCAAoqRAAKKkYACipHAAoqSAAKKkoACipLAAoqxgAKKsgACirKAAoqzAAKKs8ACirQAAoq0QAKKtIACirTAAoq1QAKKtcACirYAAoq2QAKKtsACircAAorVwAKK1kACitbAAorXQAKK2AACithAAorYgAKK2MACitkAAorZgAKK2gACitpAAoragAKK2wACittAAor6AAKK+oACivsAAor7gAKK/EACivyAAor8wAKK/QACiv1AAor9wAKK/kACiv6AAor+wAKK/0ACiv+AAoseQAKLHsACix9AAosfwAKLIIACiyDAAoshAAKLIUACiyGAAosiAAKLIoACiyLAAosjAAKLI4ACiyPAAos2AAKLPwACi0jAAotRwAKLUoACi1NAAotTwAKLVEACi1TAAotVQAKLVYACi1ZAAotcgAKLY8ACi2SAAotlQAKLZgACi2bAAotngAKLaEACi2kAAotwQAKLcQACi3HAAotygAKLc0ACi3QAAot0wAKLdYACi3YAAouUwAKLlUACi5YAAouWgAKLl0ACi5eAAouXwAKLmAACi5hAAouYwAKLmYACi5nAAouaAAKLmoACi5rAAou5gAKLugACi7rAAou7QAKLvAACi7xAAou8gAKLvMACi70AAou9gAKLvkACi76AAou+wAKLv0ACi7+AAoveQAKL3sACi9+AAovgAAKL4MACi+EAAo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AwwAKQMYACkDHAApAyAAKQMoACkDLAApBRgAKQUgACkFKAApBTAAKQU8ACkFQAApBUQAKQVIACkFTAApBVQAKQVgACkFZAApBWgAKQVwACkFdAApB2AAKQdoACkHdAApB3wAKQeIACkHjAApB5AAKQeUACkHmAApB6AAKQesACkHsAApB7QAKQe8ACkHwAApCgwAKQqYACkLGAApC5gAKQugACkLqAApC7AAKQu4ACkLxAApC8gAKQvMACkL2AApC9wAKQvkACkL6AApC/AAKQv8ACkMAAApDAQAKQwQACkMFAApDCgAKQyMACkMsAApDLgAKQzAACkM5AApDPAAKQz8ACkNBAApDigAKQ64ACkPVAApD+QAKQ/wACkP+AApEAAAKRAIACkQEAApEBgAKRAcACkQKAApEIwAKREQACkRGAApESAAKREoACkRMAApETgAKRFAACkRSAApEVAAKRHUACkR4AApEewAKRH4ACkSBAApEhAAKRIcACkSKAApEjQAKRI8ACkUKAApFDAAKRQ4ACkUQAApFEwAKRRQACkUVAApFFgAKRRcACkUZAApFGwAKRRwACkUdAApFHwAKRSAACkWbAApFnQAKRZ8ACkWhAApFpAAKRaUACkWmAApFpwAKRagACkWqAApFrAAKRa0ACkWuAApFsAAKRbEACkYsAApGLgAKRjEACkYzAApGNgAKRjcACkY4AApGOQAKRjoACkY8AApGPgAKRj8ACkZAAApGQgAKRkMACkZcAApGXQAKRl4ACkZgAApG2wAKRt0ACkbfAApG4QAKRuQACkblAApG5gAKRucACkboAApG6gAKRuwACkbtAApG7gAKRvAACkbxAApHbAAKR24ACkdwAApHcgAKR3UACkd2AApHdwAKR3gACkd5AApHewAKR30ACkd+AApHfwAKR4EACkeCAApH/QAKR/8ACkgBAApIAwAKSAYACkgHAApICAAKSAkACkgKAApIDAAKSA4ACkgPAApIEAAKSBIACkgTAApIjgAKSJAACkiSAApIlAAKSJcACkiYAApImQAKSJoACkibAApInQAKSJ8ACkigAApIoQAKSKMACkikAApJHwAKSSEACkkjAApJJQAKSSgACkkpAApJKgAKSSsACkksAApJLgAKSTAACkkxAApJMgAKSTQACkk1AApJfgAKSaIACknJAApJ7QAKSfAACknyAApJ9AAKSfYACkn4AApJ+gAKSfsACkn+AApKFwAKSjQACko2AApKOAAKSjoACko8AApKPgAKSkAACkpCAApKXwAKSmIACkplAApKaAAKSmsACkpuAApKcQAKSnQACkp2AApK8QAKSvMACkr1AApK9wAKSvoACkr7AApK/AAKSv0ACkr+AApLAAAKSwIACksDAApLBAAKSwYACksHAApLggAKS4QACkuGAApLiAAKS4sACkuMAApLjQAKS44ACkuPAApLkQAKS5MACkuUAApLlQAKS5cACkuYAApMEwAKTBUACkwXAApMGQAKTBwACkwdAApMHgAKTB8ACkwgAApMIgAKTCQACkwlAApMJgAKTCgACkwpAApMpAAKTKYACkyoAApMqgAKTK0ACkyuAApMrwAKTLAACkyxAApMswAKTLUACky2AApMtwAKTLkACky6AApNNQAKTTcACk05AApNOwAKTT4ACk0/AApNQAAKTUEACk1CAApNRAAKTUYACk1HAApNSAAKTUoACk1LAApNxgAKTcgACk3KAApNzAAKTc8ACk3QAApN0QAKTdIACk3TAApN1QAKTdcACk3YAApN2QAKTdsACk3cAApOVwAKTlkACk5bAApOXQAKTmAACk5hAApOYgAKTmMACk5kAApOZgAKTmgACk5pAApOagAKTmwACk5tAApPAAAKTyMACk9DAApPYwAKT2UACk9nAApPaQAKT2sACk9uAApPbwAKT3AACk9zAApPdAAKT3YACk93AApPeQAKT3wACk99AApPfgAKT4EACk+CAApPhwAKT6AACk+pAApPqwAKT60ACk+2AApPuQAKT7wACk++AApQBwAKUCsAClBSAApQdgAKUHkAClB7AApQfQAKUH8AClCBAApQgwAKUIQAClCHAApQoAAKUMEAClDDAApQxQAKUMcAClDJAApQywAKUM0AClDPAApQ0QAKUPIAClD1AApQ+AAKUPsAClD+AApRAQAKUQQAClEHAApRCgAKUQwAClGHAApRiQAKUYsAClGNAApRkAAKUZEAClGSAApRkwAKUZQAClGWAApRmAAKUZkAClGaAApRnAAKUZ0AClIYAApSGgAKUhwAClIeAApSIQAKUiIAClIjAApSJAAKUiUAClInAApSKQAKUioAClIrAApSLQAKUi4AClKpAApSqwAKUq4AClKwAApSswAKUrQAClK1AApStgAKUrcAClK5AApSuwAKUrwAClK9AApSvwAKUsAAClLZAApS2gAKUtsAClLdAApTWAAKU1oAClNcAApTXgAKU2EAClNiAApTYwAKU2QAClNlAApTZwAKU2kAClNqAApTawAKU20AClNuAApT6QAKU+sAClPtAApT7wAKU/IAClPzAApT9AAKU/UAClP2AApT+AAKU/oAClP7AApT/AAKU/4AClP/AApUegAKVHwAClR+AApUgAAKVIMAClSEAApUhQAKVIYAClSHAApUiQAKVIsAClSMAApUjQAKVI8AClSQAApVCwAKVQ0AClUPAApVEQAKVRQAClUVAApVFgAKVRcAClUYAApVGgAKVRwAClUdAApVHgAKVSAAClUhAApVnAAKVZ4AClWgAApVogAKVaUAClWmAApVpwAKVagAClWpAApVqwAKVa0AClWuAApVrwAKVbEAClWyAApV+wAKVh8AClZGAApWagAKVm0AClZvAApWcQAKVnMAClZ1AApWdwAKVngAClZ7AApWlAAKVrEAClazAApWtQAKVrcACla5AApWuwAKVr0ACla/AApW3AAKVt8AClbiAApW5QAKVugAClbrAApW7gAKVvEAClbzAApXbgAKV3AACldyAApXdAAKV3cACld4AApXeQAKV3oACld7AApXfQAKV38ACleAAApXgQAKV4MACleEAApX/wAKWAEAClgDAApYBQAKWAgAClgJAApYCgAKWAsAClgMAApYDgAKWBAAClgRAApYEgAKWBQAClgVAApYkAAKWJIACliUAApYlgAKWJkACliaAApYmwAKWJwAClidAApYnwAKWKEACliiAApYowAKWKUAClimAApZIQAKWSMAClkmAApZKAAKWSsAClksAApZLQAKWS4AClkvAApZMQAKWTMAClk0AApZNQAKWTcAClk4AApZswAKWbUAClm3AApZuQAKWbwAClm9AApZvgAKWb8AClnAAApZwgAKWcQAClnFAApZxgAKWcgAClnJAApaRAAKWkYAClpIAApaSgAKWk0AClpOAApaTwAKWlAAClpRAApaUwAKWlUAClpWAApaVwAKWlkAClpaAApa1QAKWtcAClrZAApa2wAKWt4AClrfAApa4AAKWuEAClriAApa5AAKWuYAClrnAApa6AAKWuoAClrrAApa/AAKWv0AClr/AApbegAKW3wAClt+AApbgAAKW4MACluEAApbhQAKW4YACluHAApbiQAKW4wACluNAApbjgAKW5AACluRAApcDAAKXA4AClwQAApcEgAKXBUAClwWAApcFwAKXBgAClwZAApcGwAKXB4AClwfAApcIAAKXCIAClwjAApcngAKXKAAClyjAApcpQAKXKgAClypAApcqgAKXKsAClysAApcrgAKXLEAClyyAApcswAKXLUACly2AApdSQAKXWwACl2MAApdrAAKXa4ACl2wAApdsgAKXbQACl23AApduAAKXbkACl28AApdvQAKXb8ACl3AAApdwgAKXcUACl3GAApdxwAKXcoACl3LAApd0AAKXekACl3yAApd9AAKXfYACl3/AApeAgAKXgUACl4HAApeUAAKXnQACl6bAApevwAKXsIACl7EAApexgAKXsgACl7KAApezAAKXs0ACl7QAApe6QAKXwoACl8MAApfDgAKXxAACl8SAApfFAAKXxYACl8YAApfGgAKXzsACl8+AApfQQAKX0QACl9HAApfSgAKX00ACl9QAApfUwAKX1UACl/QAApf0gAKX9QACl/WAApf2QAKX9oACl/bAApf3AAKX90ACl/fAApf4QAKX+IACl/jAApf5QAKX+YACmBhAApgYwAKYGUACmBnAApgagAKYGsACmBsAApgbQAKYG4ACmBwAApgcgAKYHMACmB0AApgdgAKYHcACmDyAApg9AAKYPcACmD5AApg/AAKYP0ACmD+AApg/wAKYQAACmECAAphBAAKYQUACmEGAAphCAAKYQkACmEiAAphIwAKYSQACmEmAAphoQAKYaMACmGlAAphpwAKYaoACmGrAAphrAAKYa0ACmGuAAphsAAKYbIACmGzAAphtAAKYbYACmG3AApiMgAKYjQACmI2AApiOAAKYjsACmI8AApiPQAKYj4ACmI/AApiQQAKYkMACmJEAApiRQAKYkcACmJIAApiwwAKYsUACmLHAApiyQAKYswACmLNAApizgAKYs8ACmLQAApi0gAKYtQACmLVAApi1gAKYtgACmLZAApjVAAKY1YACmNYAApjWgAKY10ACmNeAApjXwAKY2AACmNhAApjYwAKY2UACmNmAApjZwAKY2kACmNqAApj5QAKY+cACmPpAApj6wAKY+4ACmPvAApj8AAKY/EACmPyAApj9AAKY/YACmP3AApj+AAKY/oACmP7AApkRAAKZGgACmSPAApkswAKZLYACmS4AApkugAKZLwACmS+AApkwAAKZMEACmTEAApk3QAKZPoACmT8AApk/gAKZQAACmUCAAplBAAKZQYACmUIAAplJQAKZSgACmUrAAplLgAKZTEACmU0AAplNwAKZToACmU8AApltwAKZbkACmW7AAplvQAKZcAACmXBAAplwgAKZcMACmXEAAplxgAKZcgACmXJAAplygAKZcwACmXNAApmSAAKZkoACmZMAApmTgAKZlEACmZSAApmUwAKZlQACmZVAApmVwAKZlkACmZaAApmWwAKZl0ACmZeAApm2QAKZtsACmbdAApm3wAKZuIACmbjAApm5AAKZuUACmbmAApm6AAKZuoACmbrAApm7AAKZu4ACmbvAApnagAKZ2wACmdvAApncQAKZ3QACmd1AApndgAKZ3cACmd4AApnegAKZ3wACmd9AApnfgAKZ4AACmeBAApn/AAKZ/4ACmgAAApoAgAKaAUACmgGAApoBwAKaAgACmgJAApoCwAKaA0ACmgOAApoDwAKaBEACmgSAApojQAKaI8ACmiRAApokwAKaJYACmiXAApomAAKaJkACmiaAAponAAKaJ4ACmifAApooAAKaKIACmijAAppHgAKaSAACmkiAAppJAAKaScACmkoAAppKQAKaSoACmkrAAppLQAKaS8ACmkwAAppMQAKaTMACmk0AAppxwAKaeoACmoKAApqKgAKaiwACmouAApqMAAKajIACmo1AApqNgAKajcACmo6AApqOwAKaj0ACmo+AApqQQAKakQACmpFAApqRgAKakkACmpKAApqTwAKamgACmpxAApqcwAKanYACmp/AApqggAKaoUACmqHAApq0AAKavQACmsbAAprPwAKa0IACmtEAAprRgAKa0gACmtKAAprTAAKa00ACmtQAApraQAKa4oACmuMAAprjgAKa5AACmuSAAprlAAKa5YACmuYAAprmgAKa7sACmu+AAprwQAKa8QACmvHAAprygAKa80ACmvQAApr0wAKa9UACmxQAApsUgAKbFQACmxWAApsWQAKbFoACmxbAApsXAAKbF0ACmxfAApsYQAKbGIACmxjAApsZQAKbGYACmzhAAps4wAKbOUACmznAAps6gAKbOsACmzsAAps7QAKbO4ACmzwAAps8gAKbPMACmz0AAps9gAKbPcACm1yAAptdAAKbXcACm15AAptfAAKbX0ACm1+AAptfwAKbYAACm2CAApthAAKbYUACm2GAAptiAAKbYkACm2iAAptowAKbaQACm2mAApuIQAKbiMACm4lAApuJwAKbioACm4rAApuLAAKbi0ACm4uAApuMAAKbjIACm4zAApuNAAKbjYACm43AApusgAKbrQACm62AApuuAAKbrsACm68AApuvQAKbr4ACm6/AApuwQAKbsMACm7EAApuxQAKbscACm7IAApvQwAKb0UACm9HAApvSQAKb0wACm9NAApvTgAKb08ACm9QAApvUgAKb1QACm9VAApvVgAKb1gACm9ZAApv1AAKb9YACm/YAApv2gAKb90ACm/eAApv3wAKb+AACm/hAApv4wAKb+UACm/mAApv5wAKb+kACm/qAApwZQAKcGcACnBpAApwawAKcG4ACnBvAApwcAAKcHEACnByAApwdAAKcHYACnB3AApweAAKcHoACnB7AApwxAAKcOgACnEPAApxMwAKcTYACnE5AApxOwAKcT0ACnE/AApxQQAKcUIACnFFAApxXgAKcXsACnF+AApxgQAKcYQACnGHAApxigAKcY0ACnGQAApxrQAKcbAACnGzAApxtgAKcbkACnG8AApxvwAKccIACnHEAApyPwAKckEACnJEAApyRgAKckkACnJKAApySwAKckwACnJNAApyTwAKclIACnJTAApyVAAKclYACnJXAApy0gAKctQACnLXAApy2QAKctwACnLdAApy3gAKct8ACnLgAApy4gAKcuUACnLmAApy5wAKcukACnLqAApzZQAKc2cACnNqAApzbAAKc28ACnNwAApzcQAKc3IACnNzAApzdQAKc3gACnN5AApzegAKc3wACnN9AApz+AAKc/oACnP9AApz/wAKdAIACnQDAAp0BAAKdAUACnQGAAp0CAAKdAsACnQMAAp0DQAKdA8ACnQQAAp0iwAKdI0ACnSPAAp0kQAKdJQACnSVAAp0lgAKdJcACnSYAAp0mgAKdJ0ACnSeAAp0nwAKdKEACnSiAAp1HQAKdR8ACnUhAAp1IwAKdSYACnUnAAp1KAAKdSkACnUqAAp1LAAKdS8ACnUwAAp1MQAKdTMACnU0AAp1rwAKdbEACnW0AAp1tgAKdbkACnW6AAp1uwAKdbwACnW9AAp1vwAKdcIACnXDAAp1xAAKdcYACnXHAAp2WgAKdn0ACnadAAp2vQAKdr8ACnbBAAp2wwAKdsUACnbIAAp2yQAKdsoACnbNAAp2zgAKdtAACnbRAAp20wAKdtYACnbXAAp22AAKdtsACnbcAAp24QAKdvoACncDAAp3BQAKdwcACncQAAp3EwAKdxYACncYAAp3YQAKd4UACnesAAp30AAKd9MACnfVAAp31wAKd9kACnfbAAp33QAKd94ACnfhAAp3+gAKeBsACngdAAp4HwAKeCEACngjAAp4JQAKeCcACngpAAp4KwAKeEwACnhPAAp4UgAKeFUACnhYAAp4WwAKeF4ACnhhAAp4ZAAKeGYACnjhAAp44wAKeOUACnjnAAp46gAKeOsACnjsAAp47QAKeO4ACnjwAAp48gAKePMACnj0AAp49gAKePcACnlyAAp5dAAKeXYACnl4AAp5ewAKeXwACnl9AAp5fgAKeX8ACnmBAAp5gwAKeYQACnmFAAp5hwAKeYgACnoDAAp6BQAKeggACnoKAAp6DQAKeg4ACnoPAAp6EAAKehEACnoTAAp6FQAKehYACnoXAAp6GQAKehoACnozAAp6NAAKejUACno3AAp6sgAKerQACnq2AAp6uAAKersACnq8AAp6vQAKer4ACnq/AAp6wQAKesMACnrEAAp6xQAKescACnrIAAp7QwAKe0UACntHAAp7SQAKe0wACntNAAp7TgAKe08ACntQAAp7UgAKe1QACntVAAp7VgAKe1gACntZAAp71AAKe9YACnvYAAp72gAKe90ACnveAAp73wAKe+AACnvhAAp74wAKe+UACnvmAAp75wAKe+kACnvqAAp8ZQAKfGcACnxpAAp8awAKfG4ACnxvAAp8cAAKfHEACnxyAAp8dAAKfHYACnx3AAp8eAAKfHoACnx7AAp89gAKfPgACnz6AAp8/AAKfP8ACn0AAAp9AQAKfQIACn0DAAp9BQAKfQcACn0IAAp9CQAKfQsACn0MAAp9VQAKfXkACn2gAAp9xAAKfccACn3JAAp9ywAKfc0ACn3PAAp90QAKfdIACn3VAAp97gAKfgsACn4NAAp+DwAKfhEACn4TAAp+FQAKfhcACn4ZAAp+NgAKfjkACn48AAp+PwAKfkIACn5FAAp+SAAKfksACn5NAAp+yAAKfsoACn7MAAp+zgAKftEACn7SAAp+0wAKftQACn7VAAp+1wAKftkACn7aAAp+2wAKft0ACn7eAAp/WQAKf1sACn9dAAp/XwAKf2IACn9jAAp/ZAAKf2UACn9mAAp/aAAKf2oACn9rAAp/bAAKf24ACn9vAAp/6gAKf+wACn/uAAp/8AAKf/MACn/0AAp/9QAKf/YACn/3AAp/+QAKf/sACn/8AAp//QAKf/8ACoAAAAqAewAKgH0ACoCAAAqAggAKgIUACoCGAAqAhwAKgIgACoCJAAqAiwAKgI0ACoCOAAqAjwAKgJEACoCSAAqBDQAKgQ8ACoERAAqBEwAKgRYACoEXAAqBGAAKgRkACoEaAAqBHAAKgR4ACoEfAAqBIAAKgSIACoEjAAqBngAKgaAACoGiAAqBpAAKgacACoGoAAqBqQAKgaoACoGrAAqBrQAKga8ACoGwAAqBsQAKgbMACoG0AAqCLwAKgjEACoIzAAqCNQAKgjgACoI5AAqCOgAKgjsACoI8AAqCPgAKgkAACoJBAAqCQgAKgkQACoJFAAqCVgAKglcACoJZAAqC1AAKgtYACoLYAAqC2gAKgt0ACoLeAAqC3wAKguAACoLhAAqC4wAKguYACoLnAAqC6AAKguoACoLrAAqDZgAKg2gACoNqAAqDbAAKg28ACoNwAAqDcQAKg3IACoNzAAqDdQAKg3gACoN5AAqDegAKg3wACoN9AAqD+AAKg/oACoP9AAqD/wAKhAIACoQDAAqEBAAKhAUACoQGAAqECAAKhAsACoQMAAqEDQAKhA8ACoQQAAqEowAKhMYACoTmAAqFBgAKhQgACoUKAAqFDAAKhQ4ACoURAAqFEgAKhRMACoUWAAqFFwAKhRkACoUaAAqFHQAKhSAACoUhAAqFIgAKhSUACoUmAAqFKwAKhUQACoVNAAqFTwAKhVIACoVbAAqFXgAKhWEACoVjAAqFrAAKhdAACoX3AAqGGwAKhh4ACoYgAAqGIgAKhiQACoYmAAqGKAAKhikACoYsAAqGRQAKhmYACoZoAAqGagAKhmwACoZuAAqGcAAKhnIACoZ0AAqGdgAKhpcACoaaAAqGnQAKhqAACoajAAqGpgAKhqkACoasAAqGrwAKhrEACocsAAqHLgAKhzAACocyAAqHNQAKhzYACoc3AAqHOAAKhzkACoc7AAqHPQAKhz4ACoc/AAqHQQAKh0IACoe9AAqHvwAKh8EACofDAAqHxgAKh8cACofIAAqHyQAKh8oACofMAAqHzgAKh88ACofQAAqH0gAKh9MACohOAAqIUAAKiFMACohVAAqIWAAKiFkACohaAAqIWwAKiFwACoheAAqIYAAKiGEACohiAAqIZAAKiGUACoh+AAqIfwAKiIAACoiCAAqI/QAKiP8ACokBAAqJAwAKiQYACokHAAqJCAAKiQkACokKAAqJDAAKiQ4ACokPAAqJEAAKiRIACokTAAqJjgAKiZAAComSAAqJlAAKiZcAComYAAqJmQAKiZoACombAAqJnQAKiZ8AComgAAqJoQAKiaMAComkAAqKHwAKiiEACoojAAqKJQAKiigACoopAAqKKgAKiisACoosAAqKLgAKijAACooxAAqKMgAKijQACoo1AAqKsAAKirIACoq0AAqKtgAKirkACoq6AAqKuwAKirwACoq9AAqKvwAKisEACorCAAqKwwAKisUACorGAAqLQQAKi0MACotFAAqLRwAKi0oACotLAAqLTAAKi00ACotOAAqLUAAKi1IACotTAAqLVAAKi1YACotXAAqLoAAKi8QACovrAAqMDwAKjBIACowVAAqMFwAKjBkACowbAAqMHQAKjB4ACowhAAqMOgAKjFcACoxaAAqMXQAKjGAACoxjAAqMZgAKjGkACoxsAAqMiQAKjIwACoyPAAqMkgAKjJUACoyYAAqMmwAKjJ4ACoygAAqNGwAKjR0ACo0gAAqNIgAKjSUACo0mAAqNJwAKjSgACo0pAAqNKwAKjS4ACo0vAAqNMAAKjTIACo0zAAqNrgAKjbAACo2zAAqNtQAKjbgACo25AAqNugAKjbsACo28AAqNvgAKjcEACo3CAAqNwwAKjcUACo3GAAqOQQAKjkMACo5GAAqOSAAKjksACo5MAAqOTQAKjk4ACo5PAAqOUQAKjlQACo5VAAqOVgAKjlgACo5ZAAqO1AAKjtYACo7ZAAqO2wAKjt4ACo7fAAqO4AAKjuEACo7iAAqO5AAKjucACo7oAAqO6QAKjusACo7sAAqPbwAKj5MACo+3AAqP2gAKkAEACpAhAAqQSAAKkG8ACpCPAAqQswAKkNcACpDZAAqQ3AAKkN4ACpDgAAqQ4gAKkOUACpDoAAqQ6gAKkOwACpDvAAqQ8QAKkPMACpD2AAqQ+QAKkPoACpEDAAqRHAAKkSEACpEjAAqRKAAKkSsACpEtAAqRdgAKkZoACpHBAAqR5QAKkegACpHqAAqR7AAKke4ACpHwAAqR8gAKkfMACpH2AAqSDwAKkjQACpI2AAqSOAAKkjoACpI8AAqSPgAKkkAACpJCAAqSRAAKkkYACpJrAAqSbgAKknEACpJ0AAqSdwAKknoACpJ9AAqSgAAKkoMACpKGAAqSiAAKkwMACpMFAAqTCAAKkwoACpMNAAqTDgAKkw8ACpMQAAqTEQAKkxMACpMVAAqTFgAKkxcACpMZAAqTGgAKkysACpMsAAqTLgAKk6kACpOrAAqTrQAKk68ACpOyAAqTswAKk7QACpO1AAqTtgAKk7gACpO6AAqTuwAKk7wACpO+AAqTvwAKlDoACpQ8AAqUPwAKlEEACpREAAqURQAKlEYACpRHAAqUSAAKlEoACpRMAAqUTQAKlE4ACpRQAAqUUQAKlGIACpRjAAqUZQAKlOAACpTiAAqU5AAKlOYACpTpAAqU6gAKlOsACpTsAAqU7QAKlO8ACpTxAAqU8gAKlPMACpT1AAqU9gAKlXEACpVzAAqVdgAKlXgACpV7AAqVfAAKlX0ACpV+AAqVfwAKlYEACpWDAAqVhAAKlYUACpWHAAqViAAKlZkACpWaAAqVnAAKlhcACpYZAAqWGwAKlh0ACpYgAAqWIQAKliIACpYjAAqWJAAKliYACpYoAAqWKQAKlioACpYsAAqWLQAKlqgACpaqAAqWrQAKlq8ACpayAAqWswAKlrQACpa1AAqWtgAKlrgACpa6AAqWuwAKlrwACpa+AAqWvwAKltgACpbZAAqW2gAKltwACpdXAAqXWQAKl1sACpddAAqXYAAKl2EACpdiAAqXYwAKl2QACpdmAAqXaAAKl2kACpdqAAqXbAAKl20ACpfoAAqX6gAKl+0ACpfvAAqX8gAKl/MACpf0AAqX9QAKl/YACpf4AAqX+gAKl/sACpf8AAqX/gAKl/8ACpghAAqYOgAKmD8ACphCAAqYRwAKmEoACphMAAqYXgAKmPEACpkUAAqZNAAKmVQACplWAAqZWAAKmVoACplcAAqZXwAKmWAACplhAAqZZAAKmWUACplnAAqZaAAKmWsACpluAAqZbwAKmXAACplzAAqZdAAKmXkACpmSAAqZmwAKmZ0ACpmgAAqZqQAKmawACpmvAAqZsQAKmfoACpoeAAqaRQAKmmkACppsAAqabgAKmnAACppyAAqadAAKmnYACpp3AAqaegAKmpMACpq0AAqatgAKmrgACpq6AAqavAAKmr4ACprAAAqawgAKmsQACprlAAqa6AAKmusACpruAAqa8QAKmvQACpr3AAqa+gAKmv0ACpr/AAqbegAKm3wACpt+AAqbgAAKm4MACpuEAAqbhQAKm4YACpuHAAqbiQAKm4sACpuMAAqbjQAKm48ACpuQAAqcCwAKnA0ACpwPAAqcEQAKnBQACpwVAAqcFgAKnBcACpwYAAqcGgAKnBwACpwdAAqcHgAKnCAACpwhAAqcnAAKnJ4ACpyhAAqcowAKnKYACpynAAqcqAAKnKkACpyqAAqcrAAKnK4ACpyvAAqcsAAKnLIACpyzAAqczAAKnM0ACpzOAAqc0AAKnUsACp1NAAqdTwAKnVEACp1UAAqdVQAKnVYACp1XAAqdWAAKnVoACp1cAAqdXQAKnV4ACp1gAAqdYQAKndwACp3eAAqd4AAKneIACp3lAAqd5gAKnecACp3oAAqd6QAKnesACp3tAAqd7gAKne8ACp3xAAqd8gAKnm0ACp5vAAqecQAKnnMACp52AAqedwAKnngACp55AAqeegAKnnwACp5+AAqefwAKnoAACp6CAAqegwAKnv4ACp8AAAqfAgAKnwQACp8HAAqfCAAKnwkACp8KAAqfCwAKnw0ACp8PAAqfEAAKnxEACp8TAAqfFAAKn48ACp+RAAqfkwAKn5UACp+YAAqfmQAKn5oACp+bAAqfnAAKn54ACp+gAAqfoQAKn6IACp+kAAqfpQAKn+4ACqASAAqgOQAKoF0ACqBgAAqgYwAKoGUACqBnAAqgaQAKoGsACqBsAAqgbwAKoIgACqClAAqgqAAKoKsACqCuAAqgsQAKoLQACqC3AAqgugAKoNcACqDaAAqg3QAKoOAACqDjAAqg5gAKoOkACqDsAAqg7gAKoWkACqFrAAqhbgAKoXAACqFzAAqhdAAKoXUACqF2AAqhdwAKoXkACqF8AAqhfQAKoX4ACqGAAAqhgQAKofwACqH+AAqiAQAKogMACqIGAAqiBwAKoggACqIJAAqiCgAKogwACqIPAAqiEAAKohEACqITAAqiFAAKoo8ACqKRAAqilAAKopYACqKZAAqimgAKopsACqKcAAqinQAKop8ACqKiAAqiowAKoqQACqKmAAqipwAKoyIACqMkAAqjJwAKoykACqMsAAqjLQAKoy4ACqMvAAqjMAAKozIACqM1AAqjNgAKozcACqM5AAqjOgAKo7UACqO3AAqjuQAKo7sACqO+AAqjvwAKo8AACqPBAAqjwgAKo8QACqPHAAqjyAAKo8kACqPLAAqjzAAKpEcACqRJAAqkSwAKpE0ACqRQAAqkUQAKpFIACqRTAAqkVAAKpFYACqRZAAqkWgAKpFsACqRdAAqkXgAKpNkACqTbAAqk3gAKpOAACqTjAAqk5AAKpOUACqTmAAqk5wAKpOkACqTsAAqk7QAKpO4ACqTwAAqk8QAKpQIACqUHAAqlCgAKpQwACqVFAAqlSAAKpUoACqVNAAqlUAAKpVMACqVWAAqlWwAKpf4ACqYiAAqmRgAKpmYACqaNAAqmtAAKptQACqb7AAqnHwAKp0IACqdpAAqnjQAKp7EACqfVAAqn/AAKp/0ACqf/AAqoAQAKqAQACqgGAAqoCQAKqAsACqgNAAqoEAAKqBIACqgUAAqoFwAKqBoACqgcAAqoHgAKqCAACqgjAAqoJgAKqCkACqguAAqoRwAKqEwACqhOAAqoUwAKqFYACqhYAAqooQAKqMUACqjsAAqpEAAKqRMACqkVAAqpFwAKqRkACqkbAAqpHQAKqR4ACqkhAAqpOgAKqV8ACqlhAAqpYwAKqWUACqlnAAqpaQAKqWsACqltAAqpbwAKqXEACqmWAAqpmQAKqZwACqmfAAqpogAKqaUACqmoAAqpqwAKqa4ACqmxAAqpswAKqi4ACqowAAqqMwAKqjUACqo4AAqqOQAKqjoACqo7AAqqPAAKqj4ACqpAAAqqQQAKqkIACqpEAAqqRQAKqlYACqpXAAqqWQAKqtQACqrWAAqq2AAKqtoACqrdAAqq3gAKqt8ACqrgAAqq4QAKquMACqrlAAqq5gAKqucACqrpAAqq6gAKq2UACqtnAAqragAKq2wACqtvAAqrcAAKq3EACqtyAAqrcwAKq3UACqt3AAqreAAKq3kACqt7AAqrfAAKq40ACquOAAqrkAAKrAsACqwNAAqsDwAKrBEACqwUAAqsFQAKrBYACqwXAAqsGAAKrBoACqwcAAqsHQAKrB4ACqwgAAqsIQAKrJwACqyeAAqsoQAKrKMACqymAAqspwAKrKgACqypAAqsqgAKrKwACqyuAAqsrwAKrLAACqyyAAqsswAKrMQACqzFAAqsxwAKrUIACq1EAAqtRgAKrUgACq1LAAqtTAAKrU0ACq1OAAqtTwAKrVEACq1TAAqtVAAKrVUACq1XAAqtWAAKrdMACq3VAAqt2AAKrdoACq3dAAqt3gAKrd8ACq3gAAqt4QAKreMACq3lAAqt5gAKrecACq3pAAqt6gAKrgMACq4EAAquBQAKrgcACq6CAAquhAAKroYACq6IAAquiwAKrowACq6NAAqujgAKro8ACq6RAAqukwAKrpQACq6VAAqulwAKrpgACq8TAAqvFQAKrxgACq8aAAqvHQAKrx4ACq8fAAqvIAAKryEACq8jAAqvJQAKryYACq8nAAqvKQAKryoACq9DAAqvXAAKr3EACq90AAqvdwAKr3oACq99AAqvgAAKr5UACq+YAAqvmwAKr54ACq+hAAqvpAAKr6YACq+0AAqvzAAKr+IACrACAAqwlQAKsLgACrDYAAqw+AAKsPoACrD8AAqw/gAKsQAACrEDAAqxBAAKsQUACrEIAAqxCQAKsQsACrEMAAqxDgAKsREACrESAAqxEwAKsRYACrEXAAqxHAAKsTUACrE+AAqxQAAKsUIACrFLAAqxTgAKsVEACrFTAAqxnAAKscAACrHnAAqyCwAKsg4ACrIQAAqyEgAKshQACrIWAAqyGAAKshkACrIcAAqyNQAKslYACrJYAAqyWgAKslwACrJeAAqyYAAKsmIACrJkAAqyZgAKsocACrKKAAqyjQAKspAACrKTAAqylgAKspkACrKcAAqynwAKsqEACrMcAAqzHgAKsyAACrMiAAqzJQAKsyYACrMnAAqzKAAKsykACrMrAAqzLQAKsy4ACrMvAAqzMQAKszIACrOtAAqzrwAKs7EACrOzAAqztgAKs7cACrO4AAqzuQAKs7oACrO8AAqzvgAKs78ACrPAAAqzwgAKs8MACrQ+AAq0QAAKtEMACrRFAAq0SAAKtEkACrRKAAq0SwAKtEwACrROAAq0UAAKtFEACrRSAAq0VAAKtFUACrRuAAq0bwAKtHAACrRyAAq07QAKtO8ACrTxAAq08wAKtPYACrT3AAq0+AAKtPkACrT6AAq0/AAKtP4ACrT/AAq1AAAKtQIACrUDAAq1fgAKtYAACrWCAAq1hAAKtYcACrWIAAq1iQAKtYoACrWLAAq1jQAKtY8ACrWQAAq1kQAKtZMACrWUAAq2DwAKthEACrYTAAq2FQAKthgACrYZAAq2GgAKthsACrYcAAq2HgAKtiAACrYhAAq2IgAKtiQACrYlAAq2oAAKtqIACrakAAq2pgAKtqkACraqAAq2qwAKtqwACratAAq2rwAKtrEACrayAAq2swAKtrUACra2AAq3MQAKtzMACrc1AAq3NwAKtzoACrc7AAq3PAAKtz0ACrc+AAq3QAAKt0IACrdDAAq3RAAKt0YACrdHAAq3kAAKt7QACrfbAAq3/wAKuAIACrgEAAq4BgAKuAgACrgKAAq4DAAKuA0ACrgQAAq4KQAKuEYACrhIAAq4SgAKuEwACrhOAAq4UAAKuFIACrhUAAq4cQAKuHQACrh3AAq4egAKuH0ACriAAAq4gwAKuIYACriIAAq5AwAKuQUACrkHAAq5CQAKuQwACrkNAAq5DgAKuQ8ACrkQAAq5EgAKuRQACrkVAAq5FgAKuRgACrkZAAq5lAAKuZYACrmYAAq5mgAKuZ0ACrmeAAq5nwAKuaAACrmhAAq5owAKuaUACrmmAAq5pwAKuakACrmqAAq6JQAKuicACropAAq6KwAKui4ACrovAAq6MAAKujEACroyAAq6NAAKujYACro3AAq6OAAKujoACro7AAq6tgAKurgACrq6AAq6vAAKur8ACrrAAAq6wQAKusIACrrDAAq6xQAKuscACrrIAAq6yQAKussACrrMAAq7RwAKu0kACrtLAAq7TQAKu1AACrtRAAq7UgAKu1MACrtUAAq7VgAKu1gACrtZAAq7WgAKu1wACrtdAAq72AAKu9oACrvcAAq73gAKu+EACrviAAq74wAKu+QACrvlAAq75wAKu+kACrvqAAq76wAKu+0ACrvuAAq8aQAKvGsACrxtAAq8bwAKvHIACrxzAAq8dAAKvHUACrx2AAq8eAAKvHoACrx7AAq8fAAKvH4ACrx/AAq9EgAKvTUACr1VAAq9dQAKvXcACr15AAq9ewAKvX0ACr2AAAq9gQAKvYIACr2FAAq9hgAKvYgACr2JAAq9iwAKvY4ACr2PAAq9kAAKvZMACr2UAAq9mQAKvbIACr27AAq9vQAKvb8ACr3IAAq9ywAKvc4ACr3QAAq+GQAKvj0ACr5kAAq+iAAKvosACr6NAAq+jwAKvpEACr6TAAq+lQAKvpYACr6ZAAq+sgAKvtMACr7VAAq+1wAKvtkACr7bAAq+3QAKvt8ACr7hAAq+4wAKvwQACr8HAAq/CgAKvw0ACr8QAAq/EwAKvxYACr8ZAAq/HAAKvx4ACr+ZAAq/mwAKv50ACr+fAAq/ogAKv6MACr+kAAq/pQAKv6YACr+oAAq/qgAKv6sACr+sAAq/rgAKv68ACsAqAArALAAKwC4ACsAwAArAMwAKwDQACsA1AArANgAKwDcACsA5AArAOwAKwDwACsA9AArAPwAKwEAACsC7AArAvQAKwMAACsDCAArAxQAKwMYACsDHAArAyAAKwMkACsDLAArAzQAKwM4ACsDPAArA0QAKwNIACsDrAArA7AAKwO0ACsDvAArBagAKwWwACsFuAArBcAAKwXMACsF0AArBdQAKwXYACsF3AArBeQAKwXsACsF8AArBfQAKwX8ACsGAAArB+wAKwf0ACsH/AArCAQAKwgQACsIFAArCBgAKwgcACsIIAArCCgAKwgwACsINAArCDgAKwhAACsIRAArCjAAKwo4ACsKQAArCkgAKwpUACsKWAArClwAKwpgACsKZAArCmwAKwp0ACsKeAArCnwAKwqEACsKiAArDHQAKwx8ACsMhAArDIwAKwyYACsMnAArDKAAKwykACsMqAArDLAAKwy4ACsMvAArDMAAKwzIACsMzAArDrgAKw7AACsOyAArDtAAKw7cACsO4AArDuQAKw7oACsO7AArDvQAKw78ACsPAAArDwQAKw8MACsPEAArEDQAKxDEACsRYAArEfAAKxH8ACsSBAArEgwAKxIUACsSHAArEiQAKxIoACsSNAArEpgAKxMMACsTFAArExwAKxMkACsTLAArEzQAKxM8ACsTRAArE7gAKxPEACsT0AArE9wAKxPoACsT9AArFAAAKxQMACsUFAArFgAAKxYIACsWEAArFhgAKxYkACsWKAArFiwAKxYwACsWNAArFjwAKxZEACsWSAArFkwAKxZUACsWWAArGEQAKxhMACsYVAArGFwAKxhoACsYbAArGHAAKxh0ACsYeAArGIAAKxiIACsYjAArGJAAKxiYACsYnAArGogAKxqQACsamAArGqAAKxqsACsasAArGrQAKxq4ACsavAArGsQAKxrMACsa0AArGtQAKxrcACsa4AArHMwAKxzUACsc4AArHOgAKxz0ACsc+AArHPwAKx0AACsdBAArHQwAKx0UACsdGAArHRwAKx0kACsdKAArHxQAKx8cACsfJAArHywAKx84ACsfPAArH0AAKx9EACsfSAArH1AAKx9YACsfXAArH2AAKx9oACsfbAArIVgAKyFgACshaAArIXAAKyF8ACshgAArIYQAKyGIACshjAArIZQAKyGcACshoAArIaQAKyGsACshsAArI5wAKyOkACsjrAArI7QAKyPAACsjxAArI8gAKyPMACsj0AArI9gAKyPgACsj5AArI+gAKyPwACsj9AArJkAAKybMACsnTAArJ8wAKyfUACsn3AArJ+QAKyfsACsn+AArJ/wAKygAACsoDAArKBAAKygYACsoHAArKCQAKygwACsoNAArKDgAKyhEACsoSAArKFwAKyjAACso5AArKOwAKyj0ACspGAArKSQAKykwACspOAArKlwAKyrsACsriAArLBgAKywkACssLAArLDQAKyw8ACssRAArLEwAKyxQACssXAArLMAAKy1EACstTAArLVQAKy1cACstZAArLWwAKy10ACstfAArLYQAKy4IACsuFAArLiAAKy4sACsuOAArLkQAKy5QACsuXAArLmgAKy5wACswXAArMGQAKzBsACswdAArMIAAKzCEACswiAArMIwAKzCQACswmAArMKAAKzCkACswqAArMLAAKzC0ACsyoAArMqgAKzKwACsyuAArMsQAKzLIACsyzAArMtAAKzLUACsy3AArMuQAKzLoACsy7AArMvQAKzL4ACs05AArNOwAKzT4ACs1AAArNQwAKzUQACs1FAArNRgAKzUcACs1JAArNSwAKzUwACs1NAArNTwAKzVAACs1pAArNagAKzWsACs1tAArN6AAKzeoACs3sAArN7gAKzfEACs3yAArN8wAKzfQACs31AArN9wAKzfkACs36AArN+wAKzf0ACs3+AArOeQAKznsACs59AArOfwAKzoIACs6DAArOhAAKzoUACs6GAArOiAAKzooACs6LAArOjAAKzo4ACs6PAArPCgAKzwwACs8OAArPEAAKzxMACs8UAArPFQAKzxYACs8XAArPGQAKzxsACs8cAArPHQAKzx8ACs8gAArPmwAKz50ACs+fAArPoQAKz6QACs+lAArPpgAKz6cACs+oAArPqgAKz6wACs+tAArPrgAKz7AACs+xAArQLAAK0C4ACtAwAArQMgAK0DUACtA2AArQNwAK0DgACtA5AArQOwAK0D0ACtA+AArQPwAK0EEACtBCAArQiwAK0K8ACtDWAArQ+gAK0P0ACtD/AArRAQAK0QMACtEFAArRBwAK0QgACtELAArRJAAK0UEACtFDAArRRQAK0UcACtFJAArRSwAK0U0ACtFPAArRbAAK0W8ACtFyAArRdQAK0XgACtF7AArRfgAK0YEACtGDAArR/gAK0gAACtICAArSBAAK0gcACtIIAArSCQAK0goACtILAArSDQAK0g8ACtIQAArSEQAK0hMACtIUAArSjwAK0pEACtKTAArSlQAK0pgACtKZAArSmgAK0psACtKcAArSngAK0qAACtKhAArSogAK0qQACtKlAArTIAAK0yIACtMkAArTJgAK0ykACtMqAArTKwAK0ywACtMtAArTLwAK0zEACtMyAArTMwAK0zUACtM2AArTsQAK07MACtO2AArTuAAK07sACtO8AArTvQAK074ACtO/AArTwQAK08MACtPEAArTxQAK08cACtPIAArUQwAK1EUACtRHAArUSQAK1EwACtRNAArUTgAK1E8ACtRQAArUUgAK1FQACtRVAArUVgAK1FgACtRZAArU1AAK1NYACtTYAArU2gAK1N0ACtTeAArU3wAK1OAACtThAArU4wAK1OUACtTmAArU5wAK1OkACtTqAArVZQAK1WcACtVpAArVawAK1W4ACtVvAArVcAAK1XEACtVyAArVdAAK1XYACtV3AArVeAAK1XoACtV7AArWDgAK1jEACtZRAArWcQAK1nMACtZ1AArWdwAK1nkACtZ8AArWfQAK1n4ACtaBAArWggAK1oQACtaFAArWhwAK1ooACtaLAArWjAAK1o8ACtaQAArWmQAK1rIACta7AArWvQAK1r8ACtbIAArWywAK1s4ACtbQAArXGQAK1z0ACtdkAArXiAAK14sACteNAArXjwAK15EACteTAArXlQAK15YACteZAArXsgAK19MACtfVAArX1wAK19kACtfbAArX3QAK198ACtfhAArX4wAK2AQACtgHAArYCgAK2A0ACtgQAArYEwAK2BYACtgZAArYHAAK2B4ACtiZAArYmwAK2J0ACtifAArYogAK2KMACtikAArYpQAK2KYACtioAArYqgAK2KsACtisAArYrgAK2K8ACtkqAArZLAAK2S4ACtkwAArZMwAK2TQACtk1AArZNgAK2TcACtk5AArZOwAK2TwACtk9AArZPwAK2UAACtm7AArZvQAK2cAACtnCAArZxQAK2cYACtnHAArZyAAK2ckACtnLAArZzQAK2c4ACtnPAArZ0QAK2dIACtnrAArZ7AAK2e0ACtnvAAraagAK2mwACtpuAAracAAK2nMACtp0AAradQAK2nYACtp3AAraeQAK2nsACtp8AArafQAK2n8ACtqAAAra+wAK2v0ACtr/AArbAQAK2wQACtsFAArbBgAK2wcACtsIAArbCgAK2wwACtsNAArbDgAK2xAACtsRAArbjAAK244ACtuQAArbkgAK25UACtuWAArblwAK25gACtuZAArbmwAK250ACtueAArbnwAK26EACtuiAArcHQAK3B8ACtwhAArcIwAK3CYACtwnAArcKAAK3CkACtwqAArcLAAK3C4ACtwvAArcMAAK3DIACtwzAArcrgAK3LAACtyyAArctAAK3LcACty4AArcuQAK3LoACty7AArcvQAK3L8ACtzAAArcwQAK3MMACtzEAArdDQAK3TEACt1YAArdfAAK3X8ACt2BAArdgwAK3YUACt2HAArdiQAK3YoACt2NAArdpgAK3cMACt3FAArdxwAK3ckACt3LAArdzQAK3c8ACt3RAArd7gAK3fEACt30AArd9wAK3foACt39AAreAAAK3gMACt4FAAregAAK3oIACt6EAArehgAK3okACt6KAAreiwAK3owACt6NAArejwAK3pEACt6SAArekwAK3pUACt6WAArfEQAK3xMACt8VAArfFwAK3xoACt8bAArfHAAK3x0ACt8eAArfIAAK3yIACt8jAArfJAAK3yYACt8nAArfogAK36QACt+mAArfqAAK36sACt+sAArfrQAK364ACt+vAArfsQAK37MACt+0AArftQAK37cACt+4AArgMwAK4DUACuA4AArgOgAK4D0ACuA+AArgPwAK4EAACuBBAArgQwAK4EUACuBGAArgRwAK4EkACuBKAArgxQAK4McACuDJAArgywAK4M4ACuDPAArg0AAK4NEACuDSAArg1AAK4NYACuDXAArg2AAK4NoACuDbAArhVgAK4VgACuFaAArhXAAK4V8ACuFgAArhYQAK4WIACuFjAArhZQAK4WcACuFoAArhaQAK4WsACuFsAArh5wAK4ekACuHrAArh7QAK4fAACuHxAArh8gAK4fMACuH0AArh9gAK4fgACuH5AArh+gAK4fwACuH9AArikAAK4rMACuLTAAri8wAK4vUACuL3AAri+QAK4vsACuL+AAri/wAK4wAACuMDAArjBAAK4wYACuMHAArjCQAK4wwACuMNAArjDgAK4xEACuMSAArjFwAK4zAACuM5AArjOwAK4z0ACuNGAArjSQAK40wACuNOAArjlwAK47sACuPiAArkBgAK5AkACuQLAArkDQAK5A8ACuQRAArkEwAK5BQACuQXAArkMAAK5FEACuRTAArkVQAK5FcACuRZAArkWwAK5F0ACuRfAArkYQAK5IIACuSFAArkiAAK5IsACuSOAArkkQAK5JQACuSXAArkmgAK5JwACuUXAArlGQAK5RsACuUdAArlIAAK5SEACuUiAArlIwAK5SQACuUmAArlKAAK5SkACuUqAArlLAAK5S0ACuWoAArlqgAK5awACuWuAArlsQAK5bIACuWzAArltAAK5bUACuW3AArluQAK5boACuW7AArlvQAK5b4ACuY5AArmOwAK5j4ACuZAAArmQwAK5kQACuZFAArmRgAK5kcACuZJAArmSwAK5kwACuZNAArmTwAK5lAACuZpAArmagAK5msACuZtAArm6AAK5uoACubsAArm7gAK5vEACubyAArm8wAK5vQACub1AArm9wAK5vkACub6AArm+wAK5v0ACub+AArneQAK53sACud9AArnfwAK54IACueDAArnhAAK54UACueGAArniAAK54oACueLAArnjAAK544ACuePAAroCgAK6AwACugOAAroEAAK6BMACugUAAroFQAK6BYACugXAAroGQAK6BsACugcAAroHQAK6B8ACuggAAromwAK6J0ACuifAArooQAK6KQACuilAAropgAK6KcACuioAAroqgAK6KwACuitAArorgAK6LAACuixAArpLAAK6S4ACukwAArpMgAK6TUACuk2AArpNwAK6TgACuk5AArpOwAK6T0ACuk+AArpPwAK6UEACulCAArpiwAK6a8ACunWAArp+gAK6f0ACun/AArqAQAK6gMACuoFAArqBwAK6ggACuoLAArqJAAK6kEACupDAArqRQAK6kcACupJAArqSwAK6k0ACupPAArqbAAK6m8ACupyAArqdQAK6ngACup7AArqfgAK6oEACuqDAArq/gAK6wAACusCAArrBAAK6wcACusIAArrCQAK6woACusLAArrDQAK6w8ACusQAArrEQAK6xMACusUAArrjwAK65EACuuTAArrlQAK65gACuuZAArrmgAK65sACuucAArrngAK66AACuuhAArrogAK66QACuulAArsIAAK7CIACuwkAArsJgAK7CkACuwqAArsKwAK7CwACuwtAArsLwAK7DEACuwyAArsMwAK7DUACuw2AArssQAK7LMACuy2AArsuAAK7LsACuy8AArsvQAK7L4ACuy/AArswQAK7MMACuzEAArsxQAK7McACuzIAArtQwAK7UUACu1HAArtSQAK7UwACu1NAArtTgAK7U8ACu1QAArtUgAK7VQACu1VAArtVgAK7VgACu1ZAArt1AAK7dYACu3YAArt2gAK7d0ACu3eAArt3wAK7eAACu3hAArt4wAK7eUACu3mAArt5wAK7ekACu3qAAruZQAK7mcACu5pAAruawAK7m4ACu5vAArucAAK7nEACu5yAArudAAK7nYACu53AArueAAK7noACu57AArujAAK7o0ACu6PAAruoAAK7qkACu6sAArurwAK7rEACu7qAAru7QAK7u8ACu7yAAru9QAK7vgACu77AArvfgAK76IACu/GAArv6QAK8BAACvAwAArwVwAK8H4ACvCeAArwwgAK8OYACvDoAArw6wAK8O0ACvDvAArw8QAK8PQACvD3AArw+QAK8PsACvD+AArxAAAK8QIACvEFAArxCAAK8QkACvEOAArxJwAK8SwACvEuAArxMwAK8TYACvE4AArxgQAK8aUACvHMAArx8AAK8fMACvH1AArx9wAK8fkACvH7AArx/QAK8f4ACvIBAAryGgAK8j8ACvJBAAryQwAK8kUACvJHAArySQAK8ksACvJNAAryTwAK8lEACvJ2AAryeQAK8nwACvJ/AAryggAK8oUACvKIAAryiwAK8o4ACvKRAArykwAK8w4ACvMQAArzEwAK8xUACvMYAArzGQAK8xoACvMbAArzHAAK8x4ACvMgAArzIQAK8yIACvMkAArzJQAK8zYACvM3AArzOQAK87QACvO2AArzuAAK87oACvO9AArzvgAK878ACvPAAArzwQAK88MACvPFAArzxgAK88cACvPJAArzygAK9EUACvRHAAr0SgAK9EwACvRPAAr0UAAK9FEACvRSAAr0UwAK9FUACvRXAAr0WAAK9FkACvRbAAr0XAAK9G0ACvRuAAr0cAAK9OsACvTtAAr07wAK9PEACvT0AAr09QAK9PYACvT3AAr0+AAK9PoACvT8AAr0/QAK9P4ACvUAAAr1AQAK9XwACvV+AAr1gQAK9YMACvWGAAr1hwAK9YgACvWJAAr1igAK9YwACvWOAAr1jwAK9ZAACvWSAAr1kwAK9aQACvWlAAr1pwAK9iIACvYkAAr2JgAK9igACvYrAAr2LAAK9i0ACvYuAAr2LwAK9jEACvYzAAr2NAAK9jUACvY3AAr2OAAK9rMACva1AAr2uAAK9roACva9AAr2vgAK9r8ACvbAAAr2wQAK9sMACvbFAAr2xgAK9scACvbJAAr2ygAK9uMACvbkAAr25QAK9ucACvdiAAr3ZAAK92YACvdoAAr3awAK92wACvdtAAr3bgAK928ACvdxAAr3cwAK93QACvd1AAr3dwAK93gACvfzAAr39QAK9/gACvf6AAr3/QAK9/4ACvf/AAr4AAAK+AEACvgDAAr4BQAK+AYACvgHAAr4CQAK+AoACvgqAAr4QwAK+EgACvhLAAr4UAAK+FMACvhVAAr4ZwAK+PoACvkdAAr5PQAK+V0ACvlfAAr5YQAK+WMACvllAAr5aAAK+WkACvlqAAr5bQAK+W4ACvlwAAr5cQAK+XQACvl3AAr5eAAK+XkACvl8AAr5fQAK+YIACvmbAAr5pAAK+aYACvmpAAr5sgAK+bUACvm4AAr5ugAK+gMACvonAAr6TgAK+nIACvp1AAr6dwAK+nkACvp7AAr6fQAK+n8ACvqAAAr6gwAK+pwACvq9AAr6vwAK+sEACvrDAAr6xQAK+scACvrJAAr6ywAK+s0ACvruAAr68QAK+vQACvr3AAr6+gAK+v0ACvsAAAr7AwAK+wYACvsIAAr7gwAK+4UACvuHAAr7iQAK+4wACvuNAAr7jgAK+48ACvuQAAr7kgAK+5QACvuVAAr7lgAK+5gACvuZAAr8FAAK/BYACvwYAAr8GgAK/B0ACvweAAr8HwAK/CAACvwhAAr8IwAK/CUACvwmAAr8JwAK/CkACvwqAAr8pQAK/KcACvyqAAr8rAAK/K8ACvywAAr8sQAK/LIACvyzAAr8tQAK/LcACvy4AAr8uQAK/LsACvy8AAr81QAK/NYACvzXAAr82QAK/VQACv1WAAr9WAAK/VoACv1dAAr9XgAK/V8ACv1gAAr9YQAK/WMACv1lAAr9ZgAK/WcACv1pAAr9agAK/eUACv3nAAr96QAK/esACv3uAAr97wAK/fAACv3xAAr98gAK/fQACv32AAr99wAK/fgACv36AAr9+wAK/nYACv54AAr+egAK/nwACv5/AAr+gAAK/oEACv6CAAr+gwAK/oUACv6HAAr+iAAK/okACv6LAAr+jAAK/wcACv8JAAr/CwAK/w0ACv8QAAr/EQAK/xIACv8TAAr/FAAK/xYACv8YAAr/GQAK/xoACv8cAAr/HQAK/5gACv+aAAr/nAAK/54ACv+hAAr/ogAK/6MACv+kAAr/pQAK/6cACv+pAAr/qgAK/6sACv+tAAr/rgAK//cACwAbAAsAQgALAGYACwBpAAsAbAALAG4ACwBwAAsAcgALAHQACwB1AAsAeAALAJEACwCuAAsAsQALALQACwC3AAsAugALAL0ACwDAAAsAwwALAOAACwDjAAsA5gALAOkACwDsAAsA7wALAPIACwD1AAsA9wALAXIACwF0AAsBdwALAXkACwF8AAsBfQALAX4ACwF/AAsBgAALAYIACwGFAAsBhgALAYcACwGJAAsBigALAgUACwIHAAsCCgALAgwACwIPAAsCEAALAhEACwISAAsCEwALAhUACwIYAAsCGQALAhoACwIcAAsCHQALApgACwKaAAsCnQALAp8ACwKiAAsCowALAqQACwKlAAsCpgALAqgACwKrAAsCrAALAq0ACwKvAAsCsAALAysACwMtAAsDMAALAzIACwM1AAsDNgALAzcACwM4AAsDOQALAzsACwM+AAsDPwALA0AACwNCAAsDQwALA74ACwPAAAsDwgALA8QACwPHAAsDyAALA8kACwPKAAsDywALA80ACwPQAAsD0QALA9IACwPUAAsD1QALBFAACwRSAAsEVAALBFYACwRZAAsEWgALBFsACwRcAAsEXQALBF8ACwRiAAsEYwALBGQACwRmAAsEZwALBOIACwTkAAsE5wALBOkACwTsAAsE7QALBO4ACwTvAAsE8AALBPIACwT1AAsE9gALBPcACwT5AAsE+gALBY0ACwWwAAsF0AALBfAACwXyAAsF9AALBfYACwX4AAsF+wALBfwACwX9AAsGAAALBgEACwYDAAsGBAALBgcACwYKAAsGCwALBgwACwYPAAsGEAALBhUACwYuAAsGNwALBjkACwY8AAsGRQALBkgACwZLAAsGTQALBpYACwa6AAsG4QALBwUACwcIAAsHCgALBwwACwcOAAsHEAALBxIACwcTAAsHFgALBy8ACwdQAAsHUgALB1QACwdWAAsHWAALB1oACwdcAAsHXgALB2AACweBAAsHhAALB4cACweKAAsHjQALB5AACweTAAsHlgALB5kACwebAAsIFgALCBgACwgaAAsIHAALCB8ACwggAAsIIQALCCIACwgjAAsIJQALCCcACwgoAAsIKQALCCsACwgsAAsIpwALCKkACwirAAsIrQALCLAACwixAAsIsgALCLMACwi0AAsItgALCLgACwi5AAsIugALCLwACwi9AAsJOAALCToACwk9AAsJPwALCUIACwlDAAsJRAALCUUACwlGAAsJSAALCUoACwlLAAsJTAALCU4ACwlPAAsJaAALCWkACwlqAAsJbAALCecACwnpAAsJ6wALCe0ACwnwAAsJ8QALCfIACwnzAAsJ9AALCfYACwn4AAsJ+QALCfoACwn8AAsJ/QALCngACwp6AAsKfAALCn4ACwqBAAsKggALCoMACwqEAAsKhQALCocACwqJAAsKigALCosACwqNAAsKjgALCwkACwsLAAsLDQALCw8ACwsSAAsLEwALCxQACwsVAAsLFgALCxgACwsaAAsLGwALCxwACwseAAsLHwALC5oACwucAAsLngALC6AACwujAAsLpAALC6UACwumAAsLpwALC6kACwurAAsLrAALC60ACwuvAAsLsAALDCsACwwtAAsMLwALDDEACww0AAsMNQALDDYACww3AAsMOAALDDoACww8AAsMPQALDD4ACwxAAAsMQQALDIoACwyuAAsM1QALDPkACwz8AAsM/wALDQEACw0DAAsNBQALDQcACw0IAAsNCwALDSQACw1BAAsNRAALDUcACw1KAAsNTQALDVAACw1TAAsNVgALDXMACw12AAsNeQALDXwACw1/AAsNggALDYUACw2IAAsNigALDgUACw4HAAsOCgALDgwACw4PAAsOEAALDhEACw4SAAsOEwALDhUACw4YAAsOGQALDhoACw4cAAsOHQALDpgACw6aAAsOnQALDp8ACw6iAAsOowALDqQACw6lAAsOpgALDqgACw6rAAsOrAALDq0ACw6vAAsOsAALDysACw8tAAsPMAALDzIACw81AAsPNgALDzcACw84AAsPOQALDzsACw8+AAsPPwALD0AACw9CAAsPQwALD74ACw/AAAsPwwALD8UACw/IAAsPyQALD8oACw/LAAsPzAALD84ACw/RAAsP0gALD9MACw/VAAsP1gALEFEACxBTAAsQVQALEFcACxBaAAsQWwALEFwACxBdAAsQXgALEGAACxBjAAsQZAALEGUACxBnAAsQaAALEOMACxDlAAsQ5wALEOkACxDsAAsQ7QALEO4ACxDvAAsQ8AALEPIACxD1AAsQ9gALEPcACxD5AAsQ+gALEXUACxF3AAsRegALEXwACxF/AAsRgAALEYEACxGCAAsRgwALEYUACxGIAAsRiQALEYoACxGMAAsRjQALEZ4ACxGjAAsRpgALEagACxGtAAsSKAALEioACxIsAAsSLgALEjEACxIyAAsSMwALEjQACxI1AAsSNwALEjoACxI7AAsSPAALEj4ACxI/AAsSugALErwACxK+AAsSwAALEsMACxLEAAsSxQALEsYACxLHAAsSyQALEswACxLNAAsSzgALEtAACxLRAAsTTAALE04ACxNRAAsTUwALE1YACxNXAAsTWAALE1kACxNaAAsTXAALE18ACxNgAAsTYQALE2MACxNkAAsT9wALFBoACxQ6AAsUWgALFFwACxReAAsUYAALFGIACxRlAAsUZgALFGcACxRqAAsUawALFG0ACxRuAAsUcQALFHQACxR1AAsUdgALFHkACxR6AAsUfwALFJgACxShAAsUowALFKYACxSvAAsUsgALFLUACxS3AAsVAAALFSQACxVLAAsVbwALFXIACxV0AAsVdgALFXgACxV6AAsVfAALFX0ACxWAAAsVmQALFboACxW8AAsVvgALFcAACxXCAAsVxAALFcYACxXIAAsVygALFesACxXuAAsV8QALFfQACxX3AAsV+gALFf0ACxYAAAsWAwALFgUACxaAAAsWggALFoQACxaGAAsWiQALFooACxaLAAsWjAALFo0ACxaPAAsWkQALFpIACxaTAAsWlQALFpYACxcRAAsXEwALFxUACxcXAAsXGgALFxsACxccAAsXHQALFx4ACxcgAAsXIgALFyMACxckAAsXJgALFycACxeiAAsXpAALF6cACxepAAsXrAALF60ACxeuAAsXrwALF7AACxeyAAsXtAALF7UACxe2AAsXuAALF7kACxfSAAsX0wALF9QACxfWAAsYUQALGFMACxhVAAsYVwALGFoACxhbAAsYXAALGF0ACxheAAsYYAALGGIACxhjAAsYZAALGGYACxhnAAsY4gALGOQACxjmAAsY6AALGOsACxjsAAsY7QALGO4ACxjvAAsY8QALGPMACxj0AAsY9QALGPcACxj4AAsZcwALGXUACxl3AAsZeQALGXwACxl9AAsZfgALGX8ACxmAAAsZggALGYQACxmFAAsZhgALGYgACxmJAAsaBAALGgYACxoIAAsaCgALGg0ACxoOAAsaDwALGhAACxoRAAsaEwALGhUACxoWAAsaFwALGhkACxoaAAsalQALGpcACxqZAAsamwALGp4ACxqfAAsaoAALGqEACxqiAAsapAALGqYACxqnAAsaqAALGqoACxqrAAsa9AALGxgACxs/AAsbYwALG2YACxtpAAsbawALG20ACxtvAAsbcQALG3IACxt1AAsbjgALG6sACxuuAAsbsQALG7QACxu3AAsbugALG70ACxvAAAsb3QALG+AACxvjAAsb5gALG+kACxvsAAsb7wALG/IACxv0AAscbwALHHEACxx0AAscdgALHHkACxx6AAscewALHHwACxx9AAscfwALHIIACxyDAAschAALHIYACxyHAAsdAgALHQQACx0HAAsdCQALHQwACx0NAAsdDgALHQ8ACx0QAAsdEgALHRUACx0WAAsdFwALHRkACx0aAAsdlQALHZcACx2aAAsdnAALHZ8ACx2gAAsdoQALHaIACx2jAAsdpQALHagACx2pAAsdqgALHawACx2tAAseKAALHioACx4tAAseLwALHjIACx4zAAseNAALHjUACx42AAseOAALHjsACx48AAsePQALHj8ACx5AAAsewwALHucACx8LAAsfLgALH1UACx91AAsfnAALH8MACx/jAAsgBwALICsACyAtAAsgMAALIDIACyA0AAsgNgALIDkACyA8AAsgPgALIEAACyBDAAsgRQALIEcACyBKAAsgTQALIE4ACyBTAAsgbAALIHEACyBzAAsgeAALIHsACyB9AAsgxgALIOoACyERAAshNQALITgACyE6AAshPAALIT4ACyFAAAshQgALIUMACyFGAAshXwALIYQACyGGAAshiAALIYoACyGMAAshjgALIZAACyGSAAshlAALIZYACyG7AAshvgALIcEACyHEAAshxwALIcoACyHNAAsh0AALIdMACyHWAAsh2AALIlMACyJVAAsiWAALIloACyJdAAsiXgALIl8ACyJgAAsiYQALImMACyJlAAsiZgALImcACyJpAAsiagALInsACyJ8AAsifgALIvkACyL7AAsi/QALIv8ACyMCAAsjAwALIwQACyMFAAsjBgALIwgACyMKAAsjCwALIwwACyMOAAsjDwALI4oACyOMAAsjjwALI5EACyOUAAsjlQALI5YACyOXAAsjmAALI5oACyOcAAsjnQALI54ACyOgAAsjoQALI7IACyOzAAsjtQALJDAACyQyAAskNAALJDYACyQ5AAskOgALJDsACyQ8AAskPQALJD8ACyRBAAskQgALJEMACyRFAAskRgALJMEACyTDAAskxgALJMgACyTLAAskzAALJM0ACyTOAAskzwALJNEACyTTAAsk1AALJNUACyTXAAsk2AALJOkACyTqAAsk7AALJWcACyVpAAslawALJW0ACyVwAAslcQALJXIACyVzAAsldAALJXYACyV4AAsleQALJXoACyV8AAslfQALJfgACyX6AAsl/QALJf8ACyYCAAsmAwALJgQACyYFAAsmBgALJggACyYKAAsmCwALJgwACyYOAAsmDwALJigACyYpAAsmKgALJiwACyanAAsmqQALJqsACyatAAsmsAALJrEACyayAAsmswALJrQACya2AAsmuAALJrkACya6AAsmvAALJr0ACyc4AAsnOgALJz0ACyc/AAsnQgALJ0MACydEAAsnRQALJ0YACydIAAsnSgALJ0sACydMAAsnTgALJ08ACydmAAsnfwALJ5wACyefAAsnogALJ6UACyeoAAsnqwALJ64ACyexAAsnzgALJ9EACyfUAAsn1wALJ9oACyfdAAsn4AALJ+MACyflAAsn8gALKAwACygUAAsoIwALKEkACyhuAAspAQALKSQACylEAAspZAALKWYACyloAAspagALKWwACylvAAspcAALKXEACyl0AAspdQALKXcACyl4AAspegALKX0ACyl+AAspfwALKYIACymDAAspiAALKaEACymqAAsprAALKa4ACym3AAspugALKb0ACym/AAsqCAALKiwACypTAAsqdwALKnoACyp8AAsqfgALKoAACyqCAAsqhAALKoUACyqIAAsqoQALKsIACyrEAAsqxgALKsgACyrKAAsqzAALKs4ACyrQAAsq0gALKvMACyr2AAsq+QALKvwACyr/AAsrAgALKwUACysIAAsrCwALKw0ACyuIAAsrigALK4wACyuOAAsrkQALK5IACyuTAAsrlAALK5UACyuXAAsrmQALK5oACyubAAsrnQALK54ACywZAAssGwALLB0ACywfAAssIgALLCMACywkAAssJQALLCYACywoAAssKgALLCsACywsAAssLgALLC8ACyyqAAssrAALLK8ACyyxAAsstAALLLUACyy2AAsstwALLLgACyy6AAssvAALLL0ACyy+AAsswAALLMEACyzaAAss2wALLNwACyzeAAstWQALLVsACy1dAAstXwALLWIACy1jAAstZAALLWUACy1mAAstaAALLWoACy1rAAstbAALLW4ACy1vAAst6gALLewACy3uAAst8AALLfMACy30AAst9QALLfYACy33AAst+QALLfsACy38AAst/QALLf8ACy4AAAsuewALLn0ACy5/AAsugQALLoQACy6FAAsuhgALLocACy6IAAsuigALLowACy6NAAsujgALLpAACy6RAAsvDAALLw4ACy8QAAsvEgALLxUACy8WAAsvFwALLxgACy8ZAAsvGwALLx0ACy8eAAsvHwALLyEACy8iAAsvnQALL58ACy+hAAsvowALL6YACy+nAAsvqAALL6kACy+qAAsvrAALL64ACy+vAAsvsAALL7IACy+zAAsv/AALMCAACzBHAAswawALMG4ACzBwAAswcgALMHQACzB2AAsweAALMHkACzB8AAswlQALMLIACzC0AAswtgALMLgACzC6AAswvAALML4ACzDAAAsw3QALMOAACzDjAAsw5gALMOkACzDsAAsw7wALMPIACzD0AAsxbwALMXEACzFzAAsxdQALMXgACzF5AAsxegALMXsACzF8AAsxfgALMYAACzGBAAsxggALMYQACzGFAAsyAAALMgIACzIEAAsyBgALMgkACzIKAAsyCwALMgwACzINAAsyDwALMhEACzISAAsyEwALMhUACzIWAAsykQALMpMACzKVAAsylwALMpoACzKbAAsynAALMp0ACzKeAAsyoAALMqIACzKjAAsypAALMqYACzKnAAszIgALMyQACzMmAAszKAALMysACzMsAAszLQALMy4ACzMvAAszMQALMzMACzM0AAszNQALMzcACzM4AAszswALM7UACzO3AAszuQALM7wACzO9AAszvgALM78ACzPAAAszwgALM8QACzPFAAszxgALM8gACzPJAAs0RAALNEYACzRIAAs0SgALNE0ACzROAAs0TwALNFAACzRRAAs0UwALNFUACzRWAAs0VwALNFkACzRaAAs01QALNNcACzTZAAs02wALNN4ACzTfAAs04AALNOEACzTiAAs05AALNOYACzTnAAs06AALNOoACzTrAAs1fgALNaEACzXBAAs14QALNeMACzXlAAs15wALNekACzXsAAs17QALNe4ACzXxAAs18gALNfQACzX1AAs19wALNfoACzX7AAs1/AALNf8ACzYAAAs2CQALNiIACzYrAAs2LQALNi8ACzY4AAs2OwALNj4ACzZAAAs2iQALNq0ACzbUAAs2+AALNvsACzb9AAs2/wALNwEACzcDAAs3BQALNwYACzcJAAs3IgALN0MACzdFAAs3RwALN0kACzdLAAs3TQALN08ACzdRAAs3UwALN3QACzd3AAs3egALN30ACzeAAAs3gwALN4YACzeJAAs3jAALN44ACzgJAAs4CwALOA0ACzgPAAs4EgALOBMACzgUAAs4FQALOBYACzgYAAs4GgALOBsACzgcAAs4HgALOB8ACziaAAs4nAALOJ4ACzigAAs4owALOKQACzilAAs4pgALOKcACzipAAs4qwALOKwACzitAAs4rwALOLAACzkrAAs5LQALOTAACzkyAAs5NQALOTYACzk3AAs5OAALOTkACzk7AAs5PQALOT4ACzk/AAs5QQALOUIACzlbAAs5XAALOV0ACzlfAAs52gALOdwACzneAAs54AALOeMACznkAAs55QALOeYACznnAAs56QALOesACznsAAs57QALOe8ACznwAAs6awALOm0ACzpvAAs6cQALOnQACzp1AAs6dgALOncACzp4AAs6egALOnwACzp9AAs6fgALOoAACzqBAAs6/AALOv4ACzsAAAs7AgALOwUACzsGAAs7BwALOwgACzsJAAs7CwALOw0ACzsOAAs7DwALOxEACzsSAAs7jQALO48ACzuRAAs7kwALO5YACzuXAAs7mAALO5kACzuaAAs7nAALO54ACzufAAs7oAALO6IACzujAAs8HgALPCAACzwiAAs8JAALPCcACzwoAAs8KQALPCoACzwrAAs8LQALPC8ACzwwAAs8MQALPDMACzw0AAs8fQALPKEACzzIAAs87AALPO8ACzzxAAs88wALPPUACzz3AAs8+QALPPoACzz9AAs9FgALPTMACz01AAs9NwALPTkACz07AAs9PQALPT8ACz1BAAs9XgALPWEACz1kAAs9ZwALPWoACz1tAAs9cAALPXMACz11AAs98AALPfIACz30AAs99gALPfkACz36AAs9+wALPfwACz39AAs9/wALPgEACz4CAAs+AwALPgUACz4GAAs+gQALPoMACz6FAAs+hwALPooACz6LAAs+jAALPo0ACz6OAAs+kAALPpIACz6TAAs+lAALPpYACz6XAAs/EgALPxQACz8WAAs/GAALPxsACz8cAAs/HQALPx4ACz8fAAs/IQALPyMACz8kAAs/JQALPycACz8oAAs/owALP6UACz+oAAs/qgALP60ACz+uAAs/rwALP7AACz+xAAs/swALP7UACz+2AAs/twALP7kACz+6AAtANQALQDcAC0A5AAtAOwALQD4AC0A/AAtAQAALQEEAC0BCAAtARAALQEYAC0BHAAtASAALQEoAC0BLAAtAxgALQMgAC0DKAAtAzAALQM8AC0DQAAtA0QALQNIAC0DTAAtA1QALQNcAC0DYAAtA2QALQNsAC0DcAAtBVwALQVkAC0FbAAtBXQALQWAAC0FhAAtBYgALQWMAC0FkAAtBZgALQWgAC0FpAAtBagALQWwAC0FtAAtCAAALQiMAC0JDAAtCYwALQmUAC0JnAAtCaQALQmsAC0JuAAtCbwALQnAAC0JzAAtCdAALQnYAC0J3AAtCegALQn0AC0J+AAtCfwALQoIAC0KDAAtCiAALQqEAC0KqAAtCrAALQq8AC0K4AAtCuwALQr4AC0LAAAtDCQALQy0AC0NUAAtDeAALQ3sAC0N9AAtDfwALQ4EAC0ODAAtDhQALQ4YAC0OJAAtDogALQ8MAC0PFAAtDxwALQ8kAC0PLAAtDzQALQ88AC0PRAAtD0wALQ/QAC0P3AAtD+gALQ/0AC0QAAAtEAwALRAYAC0QJAAtEDAALRA4AC0SJAAtEiwALRI0AC0SPAAtEkgALRJMAC0SUAAtElQALRJYAC0SYAAtEmgALRJsAC0ScAAtEngALRJ8AC0UaAAtFHAALRR4AC0UgAAtFIwALRSQAC0UlAAtFJgALRScAC0UpAAtFKwALRSwAC0UtAAtFLwALRTAAC0WrAAtFrQALRbAAC0WyAAtFtQALRbYAC0W3AAtFuAALRbkAC0W7AAtFvQALRb4AC0W/AAtFwQALRcIAC0XbAAtF3AALRd0AC0XfAAtGWgALRlwAC0ZeAAtGYAALRmMAC0ZkAAtGZQALRmYAC0ZnAAtGaQALRmsAC0ZsAAtGbQALRm8AC0ZwAAtG6wALRu0AC0bvAAtG8QALRvQAC0b1AAtG9gALRvcAC0b4AAtG+gALRvwAC0b9AAtG/gALRwAAC0cBAAtHfAALR34AC0eAAAtHggALR4UAC0eGAAtHhwALR4gAC0eJAAtHiwALR40AC0eOAAtHjwALR5EAC0eSAAtIDQALSA8AC0gRAAtIEwALSBYAC0gXAAtIGAALSBkAC0gaAAtIHAALSB4AC0gfAAtIIAALSCIAC0gjAAtIngALSKAAC0iiAAtIpAALSKcAC0ioAAtIqQALSKoAC0irAAtIrQALSK8AC0iwAAtIsQALSLMAC0i0AAtI/QALSSEAC0lIAAtJbAALSW8AC0lyAAtJdAALSXYAC0l4AAtJegALSXsAC0l+AAtJlwALSbQAC0m3AAtJugALSb0AC0nAAAtJwwALScYAC0nJAAtJ5gALSekAC0nsAAtJ7wALSfIAC0n1AAtJ+AALSfsAC0n9AAtKeAALSnoAC0p9AAtKfwALSoIAC0qDAAtKhAALSoUAC0qGAAtKiAALSosAC0qMAAtKjQALSo8AC0qQAAtLCwALSw0AC0sQAAtLEgALSxUAC0sWAAtLFwALSxgAC0sZAAtLGwALSx4AC0sfAAtLIAALSyIAC0sjAAtLngALS6AAC0ujAAtLpQALS6gAC0upAAtLqgALS6sAC0usAAtLrgALS7EAC0uyAAtLswALS7UAC0u2AAtMMQALTDMAC0w2AAtMOAALTDsAC0w8AAtMPQALTD4AC0w/AAtMQQALTEQAC0xFAAtMRgALTEgAC0xJAAtMxAALTMYAC0zIAAtMygALTM0AC0zOAAtMzwALTNAAC0zRAAtM0wALTNYAC0zXAAtM2AALTNoAC0zbAAtNVgALTVgAC01aAAtNXAALTV8AC01gAAtNYQALTWIAC01jAAtNZQALTWgAC01pAAtNagALTWwAC01tAAtN6AALTeoAC03tAAtN7wALTfIAC03zAAtN9AALTfUAC032AAtN+AALTfsAC038AAtN/QALTf8AC04AAAtOkwALTrYAC07WAAtO9gALTvgAC076AAtO/AALTv4AC08BAAtPAgALTwMAC08GAAtPBwALTwkAC08KAAtPDAALTw8AC08QAAtPEQALTxQAC08VAAtPGgALTzMAC088AAtPPgALT0AAC09JAAtPTAALT08AC09RAAtPmgALT74AC0/lAAtQCQALUAwAC1AOAAtQEAALUBIAC1AUAAtQFgALUBcAC1AaAAtQMwALUFQAC1BWAAtQWAALUFoAC1BcAAtQXgALUGAAC1BiAAtQZAALUIUAC1CIAAtQiwALUI4AC1CRAAtQlAALUJcAC1CaAAtQnQALUJ8AC1EaAAtRHAALUR4AC1EgAAtRIwALUSQAC1ElAAtRJgALUScAC1EpAAtRKwALUSwAC1EtAAtRLwALUTAAC1GrAAtRrQALUa8AC1GxAAtRtAALUbUAC1G2AAtRtwALUbgAC1G6AAtRvAALUb0AC1G+AAtRwAALUcEAC1I8AAtSPgALUkEAC1JDAAtSRgALUkcAC1JIAAtSSQALUkoAC1JMAAtSTgALUk8AC1JQAAtSUgALUlMAC1JsAAtSbQALUm4AC1JwAAtS6wALUu0AC1LvAAtS8QALUvQAC1L1AAtS9gALUvcAC1L4AAtS+gALUvwAC1L9AAtS/gALUwAAC1MBAAtTfAALU34AC1OAAAtTggALU4UAC1OGAAtThwALU4gAC1OJAAtTiwALU40AC1OOAAtTjwALU5EAC1OSAAtUDQALVA8AC1QRAAtUEwALVBYAC1QXAAtUGAALVBkAC1QaAAtUHAALVB4AC1QfAAtUIAALVCIAC1QjAAtUngALVKAAC1SiAAtUpAALVKcAC1SoAAtUqQALVKoAC1SrAAtUrQALVK8AC1SwAAtUsQALVLMAC1S0AAtVLwALVTEAC1UzAAtVNQALVTgAC1U5AAtVOgALVTsAC1U8AAtVPgALVUAAC1VBAAtVQgALVUQAC1VFAAtVjgALVbIAC1XZAAtV/QALVgAAC1YCAAtWBAALVgYAC1YIAAtWCgALVgsAC1YOAAtWJwALVkQAC1ZGAAtWSAALVkoAC1ZMAAtWTgALVlAAC1ZSAAtWbwALVnIAC1Z1AAtWeAALVnsAC1Z+AAtWgQALVoQAC1aGAAtXAQALVwMAC1cFAAtXBwALVwoAC1cLAAtXDAALVw0AC1cOAAtXEAALVxIAC1cTAAtXFAALVxYAC1cXAAtXkgALV5QAC1eWAAtXmAALV5sAC1ecAAtXnQALV54AC1efAAtXoQALV6MAC1ekAAtXpQALV6cAC1eoAAtYIwALWCUAC1gnAAtYKQALWCwAC1gtAAtYLgALWC8AC1gwAAtYMgALWDQAC1g1AAtYNgALWDgAC1g5AAtYtAALWLYAC1i5AAtYuwALWL4AC1i/AAtYwAALWMEAC1jCAAtYxAALWMYAC1jHAAtYyAALWMoAC1jLAAtZRgALWUgAC1lKAAtZTAALWU8AC1lQAAtZUQALWVIAC1lTAAtZVQALWVcAC1lYAAtZWQALWVsAC1lcAAtZ1wALWdkAC1nbAAtZ3QALWeAAC1nhAAtZ4gALWeMAC1nkAAtZ5gALWegAC1npAAtZ6gALWewAC1ntAAtaaAALWmoAC1psAAtabgALWnEAC1pyAAtacwALWnQAC1p1AAtadwALWnkAC1p6AAtaewALWn0AC1p+AAtbEQALWzQAC1tUAAtbdAALW3YAC1t4AAtbegALW3wAC1t/AAtbgAALW4EAC1uEAAtbhQALW4cAC1uIAAtbigALW40AC1uOAAtbjwALW5IAC1uTAAtbmAALW7EAC1u6AAtbvAALW74AC1vHAAtbygALW80AC1vPAAtcGAALXDwAC1xjAAtchwALXIoAC1yMAAtcjgALXJAAC1ySAAtclAALXJUAC1yYAAtcsQALXNIAC1zUAAtc1gALXNgAC1zaAAtc3AALXN4AC1zgAAtc4gALXQMAC10GAAtdCQALXQwAC10PAAtdEgALXRUAC10YAAtdGwALXR0AC12YAAtdmgALXZwAC12eAAtdoQALXaIAC12jAAtdpAALXaUAC12nAAtdqQALXaoAC12rAAtdrQALXa4AC14pAAteKwALXi0AC14vAAteMgALXjMAC140AAteNQALXjYAC144AAteOgALXjsAC148AAtePgALXj8AC166AAtevAALXr8AC17BAAtexAALXsUAC17GAAtexwALXsgAC17KAAtezAALXs0AC17OAAte0AALXtEAC17qAAte6wALXuwAC17uAAtfaQALX2sAC19tAAtfbwALX3IAC19zAAtfdAALX3UAC192AAtfeAALX3oAC197AAtffAALX34AC19/AAtf+gALX/wAC1/+AAtgAAALYAMAC2AEAAtgBQALYAYAC2AHAAtgCQALYAsAC2AMAAtgDQALYA8AC2AQAAtgiwALYI0AC2CPAAtgkQALYJQAC2CVAAtglgALYJcAC2CYAAtgmgALYJwAC2CdAAtgngALYKAAC2ChAAthHAALYR4AC2EgAAthIgALYSUAC2EmAAthJwALYSgAC2EpAAthKwALYS0AC2EuAAthLwALYTEAC2EyAAthrQALYa8AC2GxAAthswALYbYAC2G3AAthuAALYbkAC2G6AAthvAALYb4AC2G/AAthwAALYcIAC2HDAAtiDAALYjAAC2JXAAtiewALYn4AC2KAAAtiggALYoQAC2KGAAtiiAALYokAC2KMAAtipQALYsIAC2LEAAtixgALYsgAC2LKAAtizAALYs4AC2LQAAti7QALYvAAC2LzAAti9gALYvkAC2L8AAti/wALYwIAC2MEAAtjfwALY4EAC2ODAAtjhQALY4gAC2OJAAtjigALY4sAC2OMAAtjjgALY5AAC2ORAAtjkgALY5QAC2OVAAtkEAALZBIAC2QUAAtkFgALZBkAC2QaAAtkGwALZBwAC2QdAAtkHwALZCEAC2QiAAtkIwALZCUAC2QmAAtkoQALZKMAC2SlAAtkpwALZKoAC2SrAAtkrAALZK0AC2SuAAtksAALZLIAC2SzAAtktAALZLYAC2S3AAtlMgALZTQAC2U2AAtlOAALZTsAC2U8AAtlPQALZT4AC2U/AAtlQQALZUMAC2VEAAtlRQALZUcAC2VIAAtlwwALZcUAC2XHAAtlyQALZcwAC2XNAAtlzgALZc8AC2XQAAtl0gALZdQAC2XVAAtl1gALZdgAC2XZAAtmVAALZlYAC2ZYAAtmWgALZl0AC2ZeAAtmXwALZmAAC2ZhAAtmYwALZmUAC2ZmAAtmZwALZmkAC2ZqAAtm5QALZucAC2bpAAtm6wALZu4AC2bvAAtm8AALZvEAC2byAAtm9AALZvYAC2b3AAtm+AALZvoAC2b7AAtnjgALZ7EAC2fRAAtn8QALZ/MAC2f1AAtn9wALZ/kAC2f8AAtn/QALZ/4AC2gBAAtoAgALaAQAC2gFAAtoBwALaAoAC2gLAAtoDAALaA8AC2gQAAtoFQALaC4AC2g3AAtoOQALaDsAC2hEAAtoRwALaEoAC2hMAAtolQALaLkAC2jgAAtpBAALaQcAC2kJAAtpCwALaQ0AC2kPAAtpEQALaRIAC2kVAAtpLgALaU8AC2lRAAtpUwALaVUAC2lXAAtpWQALaVsAC2ldAAtpXwALaYAAC2mDAAtphgALaYkAC2mMAAtpjwALaZIAC2mVAAtpmAALaZoAC2oVAAtqFwALahkAC2obAAtqHgALah8AC2ogAAtqIQALaiIAC2okAAtqJgALaicAC2ooAAtqKgALaisAC2qmAAtqqAALaqoAC2qsAAtqrwALarAAC2qxAAtqsgALarMAC2q1AAtqtwALargAC2q5AAtquwALarwAC2s3AAtrOQALazwAC2s+AAtrQQALa0IAC2tDAAtrRAALa0UAC2tHAAtrSQALa0oAC2tLAAtrTQALa04AC2tnAAtraAALa2kAC2trAAtr5gALa+gAC2vqAAtr7AALa+8AC2vwAAtr8QALa/IAC2vzAAtr9QALa/cAC2v4AAtr+QALa/sAC2v8AAtsdwALbHkAC2x7AAtsfQALbIAAC2yBAAtsggALbIMAC2yEAAtshgALbIgAC2yJAAtsigALbIwAC2yNAAttCAALbQoAC20MAAttDgALbREAC20SAAttEwALbRQAC20VAAttFwALbRkAC20aAAttGwALbR0AC20eAAttmQALbZsAC22dAAttnwALbaIAC22jAAttpAALbaUAC22mAAttqAALbaoAC22rAAttrAALba4AC22vAAtuKgALbiwAC24uAAtuMAALbjMAC240AAtuNQALbjYAC243AAtuOQALbjsAC248AAtuPQALbj8AC25AAAtuiQALbq0AC27UAAtu+AALbvsAC279AAtu/wALbwEAC28DAAtvBQALbwYAC28JAAtvIgALbz8AC29BAAtvQwALb0UAC29HAAtvSQALb0sAC29NAAtvagALb20AC29wAAtvcwALb3YAC295AAtvfAALb38AC2+BAAtv/AALb/4AC3AAAAtwAgALcAUAC3AGAAtwBwALcAgAC3AJAAtwCwALcA0AC3AOAAtwDwALcBEAC3ASAAtwjQALcI8AC3CRAAtwkwALcJYAC3CXAAtwmAALcJkAC3CaAAtwnAALcJ4AC3CfAAtwoAALcKIAC3CjAAtxHgALcSAAC3EiAAtxJAALcScAC3EoAAtxKQALcSoAC3ErAAtxLQALcS8AC3EwAAtxMQALcTMAC3E0AAtxrwALcbEAC3G0AAtxtgALcbkAC3G6AAtxuwALcbwAC3G9AAtxvwALccEAC3HCAAtxwwALccUAC3HGAAtyQQALckMAC3JFAAtyRwALckoAC3JLAAtyTAALck0AC3JOAAtyUAALclIAC3JTAAtyVAALclYAC3JXAAty0gALctQAC3LWAAty2AALctsAC3LcAAty3QALct4AC3LfAAty4QALcuMAC3LkAAty5QALcucAC3LoAAtzYwALc2UAC3NnAAtzaQALc2wAC3NtAAtzbgALc28AC3NwAAtzcgALc3QAC3N1AAtzdgALc3gAC3N5AAt0DAALdC8AC3RPAAt0bwALdHEAC3RzAAt0dQALdHcAC3R6AAt0ewALdHwAC3R/AAt0gAALdIIAC3SDAAt0hQALdIgAC3SJAAt0igALdI0AC3SOAAt0kwALdKwAC3S1AAt0twALdLkAC3TCAAt0xQALdMgAC3TKAAt1EwALdTcAC3VeAAt1ggALdYUAC3WHAAt1iQALdYsAC3WNAAt1jwALdZAAC3WTAAt1rAALdc0AC3XPAAt10QALddMAC3XVAAt11wALddkAC3XbAAt13QALdf4AC3YBAAt2BAALdgcAC3YKAAt2DQALdhAAC3YTAAt2FgALdhgAC3aTAAt2lQALdpcAC3aZAAt2nAALdp0AC3aeAAt2nwALdqAAC3aiAAt2pAALdqUAC3amAAt2qAALdqkAC3ckAAt3JgALdygAC3cqAAt3LQALdy4AC3cvAAt3MAALdzEAC3czAAt3NQALdzYAC3c3AAt3OQALdzoAC3e1AAt3twALd7oAC3e8AAt3vwALd8AAC3fBAAt3wgALd8MAC3fFAAt3xwALd8gAC3fJAAt3ywALd8wAC3flAAt35gALd+cAC3fpAAt4ZAALeGYAC3hoAAt4agALeG0AC3huAAt4bwALeHAAC3hxAAt4cwALeHUAC3h2AAt4dwALeHkAC3h6AAt49QALePcAC3j5AAt4+wALeP4AC3j/AAt5AAALeQEAC3kCAAt5BAALeQYAC3kHAAt5CAALeQoAC3kLAAt5hgALeYgAC3mKAAt5jAALeY8AC3mQAAt5kQALeZIAC3mTAAt5lQALeZcAC3mYAAt5mQALeZsAC3mcAAt6FwALehkAC3obAAt6HQALeiAAC3ohAAt6IgALeiMAC3okAAt6JgALeigAC3opAAt6KgALeiwAC3otAAt6qAALeqoAC3qsAAt6rgALerEAC3qyAAt6swALerQAC3q1AAt6twALerkAC3q6AAt6uwALer0AC3q+AAt7BwALeysAC3tSAAt7dgALe3kAC3t7AAt7fQALe38AC3uBAAt7gwALe4QAC3uHAAt7oAALe70AC3u/AAt7wQALe8MAC3vFAAt7xwALe8kAC3vLAAt76AALe+sAC3vuAAt78QALe/QAC3v3AAt7+gALe/0AC3v/AAt8egALfHwAC3x+AAt8gAALfIMAC3yEAAt8hQALfIYAC3yHAAt8iQALfIsAC3yMAAt8jQALfI8AC3yQAAt9CwALfQ0AC30PAAt9EQALfRQAC30VAAt9FgALfRcAC30YAAt9GgALfRwAC30dAAt9HgALfSAAC30hAAt9nAALfZ4AC32gAAt9ogALfaUAC32mAAt9pwALfagAC32pAAt9qwALfa0AC32uAAt9rwALfbEAC32yAAt+LQALfi8AC34xAAt+MwALfjYAC343AAt+OAALfjkAC346AAt+PAALfj4AC34/AAt+QAALfkIAC35DAAt+vgALfsAAC37CAAt+xAALfscAC37IAAt+yQALfsoAC37LAAt+zQALfs8AC37QAAt+0QALftMAC37UAAt/TwALf1EAC39UAAt/VgALf1kAC39aAAt/WwALf1wAC39dAAt/XwALf2EAC39iAAt/YwALf2UAC39mAAt/hQALgAAAC4ACAAuABAALgAYAC4AJAAuACgALgAsAC4AMAAuADQALgA8AC4ARAAuAEgALgBMAC4AVAAuAFgALgCcAC4AoAAuAKgALgKUAC4CnAAuAqQALgKsAC4CuAAuArwALgLAAC4CxAAuAsgALgLQAC4C3AAuAuAALgLkAC4C7AAuAvAALgTcAC4E5AAuBOwALgT0AC4FAAAuBQQALgUIAC4FDAAuBRAALgUYAC4FJAAuBSgALgUsAC4FNAAuBTgALgckAC4HLAAuBzgALgdAAC4HTAAuB1AALgdUAC4HWAAuB1wALgdkAC4HcAAuB3QALgd4AC4HgAAuB4QALgnQAC4KXAAuCtwALgtcAC4LZAAuC2wALgt0AC4LfAAuC4gALguMAC4LkAAuC5wALgugAC4LqAAuC6wALgu0AC4LwAAuC8QALgvIAC4L1AAuC9gALgvsAC4MUAAuDHQALgx8AC4MhAAuDKgALgy0AC4MwAAuDMgALg3sAC4OfAAuDxgALg+oAC4PtAAuD7wALg/EAC4PzAAuD9QALg/cAC4P4AAuD+wALhBQAC4Q1AAuENwALhDkAC4Q7AAuEPQALhD8AC4RBAAuEQwALhEUAC4RmAAuEaQALhGwAC4RvAAuEcgALhHUAC4R4AAuEewALhH4AC4SAAAuE+wALhP0AC4T/AAuFAQALhQQAC4UFAAuFBgALhQcAC4UIAAuFCgALhQwAC4UNAAuFDgALhRAAC4URAAuFjAALhY4AC4WQAAuFkgALhZUAC4WWAAuFlwALhZgAC4WZAAuFmwALhZ0AC4WeAAuFnwALhaEAC4WiAAuGHQALhh8AC4YiAAuGJAALhicAC4YoAAuGKQALhioAC4YrAAuGLQALhi8AC4YwAAuGMQALhjMAC4Y0AAuGTQALhk4AC4ZPAAuGUQALhswAC4bOAAuG0AALhtIAC4bVAAuG1gALhtcAC4bYAAuG2QALhtsAC4bdAAuG3gALht8AC4bhAAuG4gALh10AC4dfAAuHYQALh2MAC4dmAAuHZwALh2gAC4dpAAuHagALh2wAC4duAAuHbwALh3AAC4dyAAuHcwALh+4AC4fwAAuH8gALh/QAC4f3AAuH+AALh/kAC4f6AAuH+wALh/0AC4f/AAuIAAALiAEAC4gDAAuIBAALiH8AC4iBAAuIgwALiIUAC4iIAAuIiQALiIoAC4iLAAuIjAALiI4AC4iQAAuIkQALiJIAC4iUAAuIlQALiRAAC4kSAAuJFAALiRYAC4kZAAuJGgALiRsAC4kcAAuJHQALiR8AC4khAAuJIgALiSMAC4klAAuJJgALiW8AC4mTAAuJugALid4AC4nhAAuJ4wALieUAC4nnAAuJ6QALiesAC4nsAAuJ7wALiggAC4olAAuKJwALiikAC4orAAuKLQALii8AC4oxAAuKMwALilAAC4pTAAuKVgALilkAC4pcAAuKXwALimIAC4plAAuKZwALiuIAC4rkAAuK5wALiukAC4rsAAuK7QALiu4AC4rvAAuK8AALivIAC4r0AAuK9QALivYAC4r4AAuK+QALi3QAC4t2AAuLeAALi3oAC4t9AAuLfgALi38AC4uAAAuLgQALi4MAC4uFAAuLhgALi4cAC4uJAAuLigALjAUAC4wHAAuMCQALjAsAC4wOAAuMDwALjBAAC4wRAAuMEgALjBQAC4wWAAuMFwALjBgAC4waAAuMGwALjJYAC4yYAAuMmwALjJ0AC4ygAAuMoQALjKIAC4yjAAuMpAALjKYAC4yoAAuMqQALjKoAC4ysAAuMrQALjSgAC40qAAuNLAALjS4AC40xAAuNMgALjTMAC400AAuNNQALjTcAC405AAuNOgALjTsAC409AAuNPgALjbkAC427AAuNvQALjb8AC43CAAuNwwALjcQAC43FAAuNxgALjcgAC43KAAuNywALjcwAC43OAAuNzwALjkoAC45MAAuOTgALjlAAC45TAAuOVAALjlUAC45WAAuOVwALjlkAC45bAAuOXAALjl0AC45fAAuOYAALjvMAC48WAAuPNgALj1YAC49YAAuPWgALj1wAC49eAAuPYQALj2IAC49jAAuPZgALj2cAC49pAAuPagALj2wAC49vAAuPcAALj3EAC490AAuPdQALj34AC4+XAAuPoAALj6IAC4+kAAuPrQALj7AAC4+zAAuPtQALj/4AC5AiAAuQSQALkG0AC5BwAAuQcgALkHQAC5B2AAuQeAALkHoAC5B7AAuQfgALkJcAC5C4AAuQugALkLwAC5C+AAuQwAALkMIAC5DEAAuQxgALkMgAC5DpAAuQ7AALkO8AC5DyAAuQ9QALkPgAC5D7AAuQ/gALkQEAC5EDAAuRfgALkYAAC5GCAAuRhAALkYcAC5GIAAuRiQALkYoAC5GLAAuRjQALkY8AC5GQAAuRkQALkZMAC5GUAAuSDwALkhEAC5ITAAuSFQALkhgAC5IZAAuSGgALkhsAC5IcAAuSHgALkiAAC5IhAAuSIgALkiQAC5IlAAuSoAALkqIAC5KlAAuSpwALkqoAC5KrAAuSrAALkq0AC5KuAAuSsAALkrIAC5KzAAuStAALkrYAC5K3AAuS0AALktEAC5LSAAuS1AALk08AC5NRAAuTUwALk1UAC5NYAAuTWQALk1oAC5NbAAuTXAALk14AC5NgAAuTYQALk2IAC5NkAAuTZQALk+AAC5PiAAuT5AALk+YAC5PpAAuT6gALk+sAC5PsAAuT7QALk+8AC5PxAAuT8gALk/MAC5P1AAuT9gALlHEAC5RzAAuUdQALlHcAC5R6AAuUewALlHwAC5R9AAuUfgALlIAAC5SCAAuUgwALlIQAC5SGAAuUhwALlQIAC5UEAAuVBgALlQgAC5ULAAuVDAALlQ0AC5UOAAuVDwALlREAC5UTAAuVFAALlRUAC5UXAAuVGAALlZMAC5WVAAuVlwALlZkAC5WcAAuVnQALlZ4AC5WfAAuVoAALlaIAC5WkAAuVpQALlaYAC5WoAAuVqQALlfIAC5YWAAuWPQALlmEAC5ZkAAuWZgALlmgAC5ZqAAuWbAALlm4AC5ZvAAuWcgALlosAC5aoAAuWqgALlqwAC5auAAuWsAALlrIAC5a0AAuWtgALltMAC5bWAAuW2QALltwAC5bfAAuW4gALluUAC5boAAuW6gALl2UAC5dnAAuXagALl2wAC5dvAAuXcAALl3EAC5dyAAuXcwALl3UAC5d3AAuXeAALl3kAC5d7AAuXfAALl/cAC5f5AAuX+wALl/0AC5gAAAuYAQALmAIAC5gDAAuYBAALmAYAC5gIAAuYCQALmAoAC5gMAAuYDQALmIgAC5iKAAuYjAALmI4AC5iRAAuYkgALmJMAC5iUAAuYlQALmJcAC5iZAAuYmgALmJsAC5idAAuYngALmRkAC5kbAAuZHgALmSAAC5kjAAuZJAALmSUAC5kmAAuZJwALmSkAC5krAAuZLAALmS0AC5kvAAuZMAALmasAC5mtAAuZrwALmbEAC5m0AAuZtQALmbYAC5m3AAuZuAALmboAC5m8AAuZvQALmb4AC5nAAAuZwQALmjwAC5o+AAuaQAALmkIAC5pFAAuaRgALmkcAC5pIAAuaSQALmksAC5pNAAuaTgALmk8AC5pRAAuaUgALms0AC5rPAAua0QALmtMAC5rWAAua1wALmtgAC5rZAAua2gALmtwAC5reAAua3wALmuAAC5riAAua4wALm3YAC5uZAAubuQALm9kAC5vbAAub3QALm98AC5vhAAub5AALm+UAC5vmAAub6QALm+oAC5vsAAub7QALm+8AC5vyAAub8wALm/QAC5v3AAub+AALnAEAC5waAAucIwALnCUAC5wnAAucMAALnDMAC5w2AAucOAALnIEAC5ylAAuczAALnPAAC5zzAAuc9QALnPcAC5z5AAuc+wALnP0AC5z+AAudAQALnRoAC507AAudPQALnT8AC51BAAudQwALnUUAC51HAAudSQALnUsAC51sAAudbwALnXIAC511AAudeAALnXsAC51+AAudgQALnYQAC52GAAueAQALngMAC54FAAueBwALngoAC54LAAueDAALng0AC54OAAueEAALnhIAC54TAAueFAALnhYAC54XAAuekgALnpQAC56WAAuemAALnpsAC56cAAuenQALnp4AC56fAAueoQALnqMAC56kAAuepQALnqcAC56oAAufIwALnyUAC58oAAufKgALny0AC58uAAufLwALnzAAC58xAAufMwALnzUAC582AAufNwALnzkAC586AAufUwALn1QAC59VAAufVwALn9IAC5/UAAuf1gALn9gAC5/bAAuf3AALn90AC5/eAAuf3wALn+EAC5/jAAuf5AALn+UAC5/nAAuf6AALoGMAC6BlAAugZwALoGkAC6BsAAugbQALoG4AC6BvAAugcAALoHIAC6B0AAugdQALoHYAC6B4AAugeQALoPQAC6D2AAug+AALoPoAC6D9AAug/gALoP8AC6EAAAuhAQALoQMAC6EFAAuhBgALoQcAC6EJAAuhCgALoYUAC6GHAAuhiQALoYsAC6GOAAuhjwALoZAAC6GRAAuhkgALoZQAC6GWAAuhlwALoZgAC6GaAAuhmwALohYAC6IYAAuiGgALohwAC6IfAAuiIAALoiEAC6IiAAuiIwALoiUAC6InAAuiKAALoikAC6IrAAuiLAALonUAC6KZAAuiwAALouQAC6LnAAui6QALousAC6LtAAui7wALovEAC6LyAAui9QALow4AC6MrAAujLQALoy8AC6MxAAujMwALozUAC6M3AAujOQALo1YAC6NZAAujXAALo18AC6NiAAujZQALo2gAC6NrAAujbQALo+gAC6PqAAuj7AALo+4AC6PxAAuj8gALo/MAC6P0AAuj9QALo/cAC6P5AAuj+gALo/sAC6P9AAuj/gALpHkAC6R7AAukfQALpH8AC6SCAAukgwALpIQAC6SFAAukhgALpIgAC6SKAAukiwALpIwAC6SOAAukjwALpQoAC6UMAAulDgALpRAAC6UTAAulFAALpRUAC6UWAAulFwALpRkAC6UbAAulHAALpR0AC6UfAAulIAALpZsAC6WdAAuloAALpaIAC6WlAAulpgALpacAC6WoAAulqQALpasAC6WtAAulrgALpa8AC6WxAAulsgALpi0AC6YvAAumMQALpjMAC6Y2AAumNwALpjgAC6Y5AAumOgALpjwAC6Y+AAumPwALpkAAC6ZCAAumQwALpr4AC6bAAAumwgALpsQAC6bHAAumyAALpskAC6bKAAumywALps0AC6bPAAum0AALptEAC6bTAAum1AALp08AC6dRAAunUwALp1UAC6dYAAunWQALp1oAC6dbAAunXAALp14AC6dgAAunYQALp2IAC6dkAAunZQALp/gAC6gbAAuoOwALqFsAC6hdAAuoXwALqGEAC6hjAAuoZgALqGcAC6hoAAuoawALqGwAC6huAAuobwALqHEAC6h0AAuodQALqHYAC6h5AAuoegALqH8AC6iYAAuooQALqKMAC6ilAAuorgALqLEAC6i0AAuotgALqP8AC6kjAAupSgALqW4AC6lxAAupcwALqXUAC6l3AAupeQALqXsAC6l8AAupfwALqZgAC6m5AAupuwALqb0AC6m/AAupwQALqcMAC6nFAAupxwALqckAC6nqAAup7QALqfAAC6nzAAup9gALqfkAC6n8AAup/wALqgIAC6oEAAuqfwALqoEAC6qDAAuqhQALqogAC6qJAAuqigALqosAC6qMAAuqjgALqpAAC6qRAAuqkgALqpQAC6qVAAurEAALqxIAC6sUAAurFgALqxkAC6saAAurGwALqxwAC6sdAAurHwALqyEAC6siAAurIwALqyUAC6smAAuroQALq6MAC6umAAurqAALq6sAC6usAAurrQALq64AC6uvAAursQALq7MAC6u0AAurtQALq7cAC6u4AAur0QALq9IAC6vTAAur1QALrFAAC6xSAAusVAALrFYAC6xZAAusWgALrFsAC6xcAAusXQALrF8AC6xhAAusYgALrGMAC6xlAAusZgALrOEAC6zjAAus5QALrOcAC6zqAAus6wALrOwAC6ztAAus7gALrPAAC6zyAAus8wALrPQAC6z2AAus9wALrXIAC610AAutdgALrXgAC617AAutfAALrX0AC61+AAutfwALrYEAC62DAAuthAALrYUAC62HAAutiAALrgMAC64FAAuuBwALrgkAC64MAAuuDQALrg4AC64PAAuuEAALrhIAC64UAAuuFQALrhYAC64YAAuuGQALrpQAC66WAAuumAALrpoAC66dAAuungALrp8AC66gAAuuoQALrqMAC66lAAuupgALrqcAC66pAAuuqgALrvMAC68XAAuvPgALr2IAC69lAAuvZwALr2kAC69rAAuvbQALr28AC69wAAuvcwALr4wAC6+pAAuvqwALr60AC6+vAAuvsQALr7MAC6+1AAuvtwALr9QAC6/XAAuv2gALr90AC6/gAAuv4wALr+YAC6/pAAuv6wALsGYAC7BoAAuwawALsG0AC7BwAAuwcQALsHIAC7BzAAuwdAALsHYAC7B4AAuweQALsHoAC7B8AAuwfQALsPgAC7D6AAuw/AALsP4AC7EBAAuxAgALsQMAC7EEAAuxBQALsQcAC7EJAAuxCgALsQsAC7ENAAuxDgALsYkAC7GLAAuxjQALsY8AC7GSAAuxkwALsZQAC7GVAAuxlgALsZgAC7GaAAuxmwALsZwAC7GeAAuxnwALshoAC7IcAAuyHwALsiEAC7IkAAuyJQALsiYAC7InAAuyKAALsioAC7IsAAuyLQALsi4AC7IwAAuyMQALsqwAC7KuAAuysAALsrIAC7K1AAuytgALsrcAC7K4AAuyuQALsrsAC7K9AAuyvgALsr8AC7LBAAuywgALsz0AC7M/AAuzQQALs0MAC7NGAAuzRwALs0gAC7NJAAuzSgALs0wAC7NOAAuzTwALs1AAC7NSAAuzUwALs84AC7PQAAuz0gALs9QAC7PXAAuz2AALs9kAC7PaAAuz2wALs90AC7PfAAuz4AALs+EAC7PjAAuz5AALs/UAC7P2AAuz+AALtHMAC7R1AAu0dwALtHkAC7R8AAu0fQALtH4AC7R/AAu0gAALtIIAC7SFAAu0hgALtIcAC7SJAAu0igALtQUAC7UHAAu1CQALtQsAC7UOAAu1DwALtRAAC7URAAu1EgALtRQAC7UXAAu1GAALtRkAC7UbAAu1HAALtZcAC7WZAAu1nAALtZ4AC7WhAAu1ogALtaMAC7WkAAu1pQALtacAC7WqAAu1qwALtawAC7WuAAu1rwALtkIAC7ZlAAu2hQALtqUAC7anAAu2qQALtqsAC7atAAu2sAALtrEAC7ayAAu2tQALtrYAC7a4AAu2uQALtrsAC7a+AAu2vwALtsAAC7bDAAu2xAALtskAC7biAAu26wALtu0AC7bvAAu2+AALtvsAC7b+AAu3AAALt0kAC7dtAAu3lAALt7gAC7e7AAu3vQALt78AC7fBAAu3wwALt8UAC7fGAAu3yQALt+IAC7gDAAu4BQALuAcAC7gJAAu4CwALuA0AC7gPAAu4EQALuBMAC7g0AAu4NwALuDoAC7g9AAu4QAALuEMAC7hGAAu4SQALuEwAC7hOAAu4yQALuMsAC7jNAAu4zwALuNIAC7jTAAu41AALuNUAC7jWAAu42AALuNoAC7jbAAu43AALuN4AC7jfAAu5WgALuVwAC7leAAu5YAALuWMAC7lkAAu5ZQALuWYAC7lnAAu5aQALuWsAC7lsAAu5bQALuW8AC7lwAAu56wALue0AC7nwAAu58gALufUAC7n2AAu59wALufgAC7n5AAu5+wALuf0AC7n+AAu5/wALugEAC7oCAAu6GwALuhwAC7odAAu6HwALupoAC7qcAAu6ngALuqAAC7qjAAu6pAALuqUAC7qmAAu6pwALuqkAC7qrAAu6rAALuq0AC7qvAAu6sAALuysAC7stAAu7LwALuzEAC7s0AAu7NQALuzYAC7s3AAu7OAALuzoAC7s8AAu7PQALuz4AC7tAAAu7QQALu7wAC7u+AAu7wAALu8IAC7vFAAu7xgALu8cAC7vIAAu7yQALu8sAC7vNAAu7zgALu88AC7vRAAu70gALvE0AC7xPAAu8UQALvFMAC7xWAAu8VwALvFgAC7xZAAu8WgALvFwAC7xeAAu8XwALvGAAC7xiAAu8YwALvN4AC7zgAAu84gALvOQAC7znAAu86AALvOkAC7zqAAu86wALvO0AC7zvAAu88AALvPEAC7zzAAu89AALvT0AC71hAAu9iAALvawAC72vAAu9sQALvbMAC721AAu9twALvbkAC726AAu9vQALvdYAC73zAAu99QALvfcAC735AAu9+wALvf0AC73/AAu+AQALvh4AC74hAAu+JAALvicAC74qAAu+LQALvjAAC74zAAu+NQALvrAAC76yAAu+tAALvrYAC765AAu+ugALvrsAC768AAu+vQALvr8AC77BAAu+wgALvsMAC77FAAu+xgALv0EAC79DAAu/RQALv0cAC79KAAu/SwALv0wAC79NAAu/TgALv1AAC79SAAu/UwALv1QAC79WAAu/VwALv9IAC7/UAAu/1gALv9gAC7/bAAu/3AALv90AC7/eAAu/3wALv+EAC7/jAAu/5AALv+UAC7/nAAu/6AALwGMAC8BlAAvAaAALwGoAC8BtAAvAbgALwG8AC8BwAAvAcQALwHMAC8B1AAvAdgALwHcAC8B5AAvAegALwPUAC8D3AAvA+QALwPsAC8D+AAvA/wALwQAAC8EBAAvBAgALwQQAC8EGAAvBBwALwQgAC8EKAAvBCwALwYYAC8GIAAvBigALwYwAC8GPAAvBkAALwZEAC8GSAAvBkwALwZUAC8GXAAvBmAALwZkAC8GbAAvBnAALwhcAC8IZAAvCGwALwh0AC8IgAAvCIQALwiIAC8IjAAvCJAALwiYAC8IoAAvCKQALwioAC8IsAAvCLQALwj4AC8I/AAvCQQALwsQAC8LoAAvDDAALwy8AC8NWAAvDdgALw50AC8PEAAvD5AALxAgAC8QsAAvELgALxDEAC8QzAAvENQALxDcAC8Q6AAvEPQALxD8AC8RBAAvERAALxEYAC8RIAAvESwALxE4AC8RPAAvEVAALxG0AC8RyAAvEdAALxHkAC8R8AAvEfgALxMcAC8TrAAvFEgALxTYAC8U5AAvFOwALxT0AC8U/AAvFQQALxUMAC8VEAAvFRwALxWAAC8WFAAvFhwALxYkAC8WLAAvFjQALxY8AC8WRAAvFkwALxZUAC8WXAAvFvAALxb8AC8XCAAvFxQALxcgAC8XLAAvFzgALxdEAC8XUAAvF1wALxdkAC8ZUAAvGVgALxlkAC8ZbAAvGXgALxl8AC8ZgAAvGYQALxmIAC8ZkAAvGZgALxmcAC8ZoAAvGagALxmsAC8Z8AAvGfQALxn8AC8b6AAvG/AALxv4AC8cAAAvHAwALxwQAC8cFAAvHBgALxwcAC8cJAAvHCwALxwwAC8cNAAvHDwALxxAAC8eLAAvHjQALx5AAC8eSAAvHlQALx5YAC8eXAAvHmAALx5kAC8ebAAvHnQALx54AC8efAAvHoQALx6IAC8ezAAvHuAALx7sAC8e9AAvHzgALx9cAC8faAAvH3QALx98AC8f6AAvIDwALyIoAC8iMAAvIjgALyJAAC8iTAAvIlAALyJUAC8iWAAvIlwALyJkAC8ibAAvInAALyJ0AC8ifAAvIoAALyRsAC8kdAAvJIAALySIAC8klAAvJJgALyScAC8koAAvJKQALySsAC8ktAAvJLgALyS8AC8kxAAvJMgALyUMAC8lEAAvJRgALycEAC8nDAAvJxQALyccAC8nKAAvJywALycwAC8nNAAvJzgALydAAC8nSAAvJ0wALydQAC8nWAAvJ1wALylIAC8pUAAvKVwALylkAC8pcAAvKXQALyl4AC8pfAAvKYAALymIAC8pkAAvKZQALymYAC8poAAvKaQALyoIAC8qDAAvKhAALyoYAC8sBAAvLAwALywUAC8sHAAvLCgALywsAC8sMAAvLDQALyw4AC8sQAAvLEgALyxMAC8sUAAvLFgALyxcAC8uSAAvLlAALy5cAC8uZAAvLnAALy50AC8ueAAvLnwALy6AAC8uiAAvLpAALy6UAC8umAAvLqAALy6kAC8vaAAvL8wALzAAAC8wDAAvMBgALzAkAC8wWAAvMGQALzBwAC8wfAAvMIQALzDwAC8xRAAvMZAALzPcAC80aAAvNOgALzVoAC81cAAvNXgALzWAAC81iAAvNZQALzWYAC81nAAvNagALzWsAC81tAAvNbgALzXAAC81zAAvNdAALzXUAC814AAvNeQALzX4AC82XAAvNoAALzaIAC82kAAvNrQALzbAAC82zAAvNtQALzf4AC84iAAvOSQALzm0AC85wAAvOcgALznQAC852AAvOeAALznoAC857AAvOfgALzpcAC864AAvOugALzrwAC86+AAvOwAALzsIAC87EAAvOxgALzsgAC87pAAvO7AALzu8AC87yAAvO9QALzvgAC877AAvO/gALzwEAC88DAAvPfgALz4AAC8+CAAvPhAALz4cAC8+IAAvPiQALz4oAC8+LAAvPjQALz48AC8+QAAvPkQALz5MAC8+UAAvQDwAL0BEAC9ATAAvQFQAL0BgAC9AZAAvQGgAL0BsAC9AcAAvQHgAL0CAAC9AhAAvQIgAL0CQAC9AlAAvQoAAL0KIAC9ClAAvQpwAL0KoAC9CrAAvQrAAL0K0AC9CuAAvQsAAL0LIAC9CzAAvQtAAL0LYAC9C3AAvQ0AAL0NEAC9DSAAvQ1AAL0U8AC9FRAAvRUwAL0VUAC9FYAAvRWQAL0VoAC9FbAAvRXAAL0V4AC9FgAAvRYQAL0WIAC9FkAAvRZQAL0eAAC9HiAAvR5AAL0eYAC9HpAAvR6gAL0esAC9HsAAvR7QAL0e8AC9HxAAvR8gAL0fMAC9H1AAvR9gAL0nEAC9JzAAvSdQAL0ncAC9J6AAvSewAL0nwAC9J9AAvSfgAL0oAAC9KCAAvSgwAL0oQAC9KGAAvShwAL0wIAC9MEAAvTBgAL0wgAC9MLAAvTDAAL0w0AC9MOAAvTDwAL0xEAC9MTAAvTFAAL0xUAC9MXAAvTGAAL05MAC9OVAAvTlwAL05kAC9OcAAvTnQAL054AC9OfAAvToAAL06IAC9OkAAvTpQAL06YAC9OoAAvTqQAL0/IAC9QWAAvUPQAL1GEAC9RkAAvUZgAL1GgAC9RqAAvUbAAL1G4AC9RvAAvUcgAL1IsAC9SoAAvUqgAL1KwAC9SuAAvUsAAL1LIAC9S0AAvUtgAL1NMAC9TWAAvU2QAL1NwAC9TfAAvU4gAL1OUAC9ToAAvU6gAL1WUAC9VnAAvVaQAL1WsAC9VuAAvVbwAL1XAAC9VxAAvVcgAL1XQAC9V2AAvVdwAL1XgAC9V6AAvVewAL1fYAC9X4AAvV+gAL1fwAC9X/AAvWAAAL1gEAC9YCAAvWAwAL1gUAC9YHAAvWCAAL1gkAC9YLAAvWDAAL1ocAC9aJAAvWiwAL1o0AC9aQAAvWkQAL1pIAC9aTAAvWlAAL1pYAC9aYAAvWmQAL1poAC9acAAvWnQAL1xgAC9caAAvXHQAL1x8AC9ciAAvXIwAL1yQAC9clAAvXJgAL1ygAC9cqAAvXKwAL1ywAC9cuAAvXLwAL16oAC9esAAvXrgAL17AAC9ezAAvXtAAL17UAC9e2AAvXtwAL17kAC9e7AAvXvAAL170AC9e/AAvXwAAL2DsAC9g9AAvYPwAL2EEAC9hEAAvYRQAL2EYAC9hHAAvYSAAL2EoAC9hMAAvYTQAL2E4AC9hQAAvYUQAL2MwAC9jOAAvY0AAL2NIAC9jVAAvY1gAL2NcAC9jYAAvY2QAL2NsAC9jdAAvY3gAL2N8AC9jhAAvY4gAL2XUAC9mYAAvZuAAL2dgAC9naAAvZ3AAL2d4AC9ngAAvZ4wAL2eQAC9nlAAvZ6AAL2ekAC9nrAAvZ7AAL2e4AC9nxAAvZ8gAL2fMAC9n2AAvZ9wAL2gAAC9oZAAvaIgAL2iQAC9omAAvaLwAL2jIAC9o1AAvaNwAL2oAAC9qkAAvaywAL2u8AC9ryAAva9AAL2vYAC9r4AAva+gAL2vwAC9r9AAvbAAAL2xkAC9s6AAvbPAAL2z4AC9tAAAvbQgAL20QAC9tGAAvbSAAL20oAC9trAAvbbgAL23EAC9t0AAvbdwAL23oAC9t9AAvbgAAL24MAC9uFAAvcAAAL3AIAC9wEAAvcBgAL3AkAC9wKAAvcCwAL3AwAC9wNAAvcDwAL3BEAC9wSAAvcEwAL3BUAC9wWAAvckQAL3JMAC9yVAAvclwAL3JoAC9ybAAvcnAAL3J0AC9yeAAvcoAAL3KIAC9yjAAvcpAAL3KYAC9ynAAvdIgAL3SQAC90nAAvdKQAL3SwAC90tAAvdLgAL3S8AC90wAAvdMgAL3TQAC901AAvdNgAL3TgAC905AAvdUgAL3VMAC91UAAvdVgAL3dEAC93TAAvd1QAL3dcAC93aAAvd2wAL3dwAC93dAAvd3gAL3eAAC93iAAvd4wAL3eQAC93mAAvd5wAL3mIAC95kAAveZgAL3mgAC95rAAvebAAL3m0AC95uAAvebwAL3nEAC95zAAvedAAL3nUAC953AAveeAAL3vMAC971AAve9wAL3vkAC978AAve/QAL3v4AC97/AAvfAAAL3wIAC98EAAvfBQAL3wYAC98IAAvfCQAL34QAC9+GAAvfiAAL34oAC9+NAAvfjgAL348AC9+QAAvfkQAL35MAC9+VAAvflgAL35cAC9+ZAAvfmgAL4BUAC+AXAAvgGQAL4BsAC+AeAAvgHwAL4CAAC+AhAAvgIgAL4CQAC+AmAAvgJwAL4CgAC+AqAAvgKwAL4HQAC+CYAAvgvwAL4OMAC+DmAAvg6AAL4OoAC+DsAAvg7gAL4PAAC+DxAAvg9AAL4Q0AC+EqAAvhLAAL4S4AC+EwAAvhMgAL4TQAC+E2AAvhOAAL4VUAC+FYAAvhWwAL4V4AC+FhAAvhZAAL4WcAC+FqAAvhbAAL4ecAC+HpAAvh6wAL4e0AC+HwAAvh8QAL4fIAC+HzAAvh9AAL4fYAC+H4AAvh+QAL4foAC+H8AAvh/QAL4ngAC+J6AAvifAAL4n4AC+KBAAviggAL4oMAC+KEAAvihQAL4ocAC+KJAAviigAL4osAC+KNAAvijgAL4wkAC+MLAAvjDQAL4w8AC+MSAAvjEwAL4xQAC+MVAAvjFgAL4xgAC+MaAAvjGwAL4xwAC+MeAAvjHwAL45oAC+OcAAvjnwAL46EAC+OkAAvjpQAL46YAC+OnAAvjqAAL46oAC+OsAAvjrQAL464AC+OwAAvjsQAL5CwAC+QuAAvkMAAL5DIAC+Q1AAvkNgAL5DcAC+Q4AAvkOQAL5DsAC+Q9AAvkPgAL5D8AC+RBAAvkQgAL5L0AC+S/AAvkwQAL5MMAC+TGAAvkxwAL5MgAC+TJAAvkygAL5MwAC+TOAAvkzwAL5NAAC+TSAAvk0wAL5U4AC+VQAAvlUgAL5VQAC+VXAAvlWAAL5VkAC+VaAAvlWwAL5V0AC+VfAAvlYAAL5WEAC+VjAAvlZAAL5fcAC+YaAAvmOgAL5loAC+ZcAAvmXgAL5mAAC+ZiAAvmZQAL5mYAC+ZnAAvmagAL5msAC+ZtAAvmbgAL5nEAC+Z0AAvmdQAL5nYAC+Z5AAvmegAL5n8AC+aYAAvmoQAL5qMAC+amAAvmrwAL5rIAC+a1AAvmtwAL5wAAC+ckAAvnSwAL528AC+dyAAvndAAL53YAC+d4AAvnegAL53wAC+d9AAvngAAL55kAC+e6AAvnvAAL574AC+fAAAvnwgAL58QAC+fGAAvnyAAL58oAC+frAAvn7gAL5/EAC+f0AAvn9wAL5/oAC+f9AAvoAAAL6AMAC+gFAAvogAAL6IIAC+iEAAvohgAL6IkAC+iKAAvoiwAL6IwAC+iNAAvojwAL6JEAC+iSAAvokwAL6JUAC+iWAAvpEQAL6RMAC+kVAAvpFwAL6RoAC+kbAAvpHAAL6R0AC+keAAvpIAAL6SIAC+kjAAvpJAAL6SYAC+knAAvpogAL6aQAC+mnAAvpqQAL6awAC+mtAAvprgAL6a8AC+mwAAvpsgAL6bQAC+m1AAvptgAL6bgAC+m5AAvp0gAL6dMAC+nUAAvp1gAL6lEAC+pTAAvqVQAL6lcAC+paAAvqWwAL6lwAC+pdAAvqXgAL6mAAC+piAAvqYwAL6mQAC+pmAAvqZwAL6uIAC+rkAAvq5gAL6ugAC+rrAAvq7AAL6u0AC+ruAAvq7wAL6vEAC+rzAAvq9AAL6vUAC+r3AAvq+AAL63MAC+t1AAvrdwAL63kAC+t8AAvrfQAL634AC+t/AAvrgAAL64IAC+uEAAvrhQAL64YAC+uIAAvriQAL7AQAC+wGAAvsCAAL7AoAC+wNAAvsDgAL7A8AC+wQAAvsEQAL7BMAC+wVAAvsFgAL7BcAC+wZAAvsGgAL7JUAC+yXAAvsmQAL7JsAC+yeAAvsnwAL7KAAC+yhAAvsogAL7KQAC+ymAAvspwAL7KgAC+yqAAvsqwAL7PQAC+0YAAvtPwAL7WMAC+1mAAvtaQAL7WsAC+1tAAvtbwAL7XEAC+1yAAvtdQAL7Y4AC+2rAAvtrgAL7bEAC+20AAvttwAL7boAC+29AAvtwAAL7d0AC+3gAAvt4wAL7eYAC+3pAAvt7AAL7e8AC+3yAAvt9AAL7m8AC+5xAAvudAAL7nYAC+55AAvuegAL7nsAC+58AAvufQAL7n8AC+6CAAvugwAL7oQAC+6GAAvuhwAL7wIAC+8EAAvvBwAL7wkAC+8MAAvvDQAL7w4AC+8PAAvvEAAL7xIAC+8VAAvvFgAL7xcAC+8ZAAvvGgAL75UAC++XAAvvmgAL75wAC++fAAvvoAAL76EAC++iAAvvowAL76UAC++oAAvvqQAL76oAC++sAAvvrQAL8CgAC/AqAAvwLQAL8C8AC/AyAAvwMwAL8DQAC/A1AAvwNgAL8DgAC/A7AAvwPAAL8D0AC/A/AAvwQAAL8MMAC/DnAAvxCwAL8S4AC/FVAAvxdQAL8ZwAC/HDAAvx4wAL8gcAC/IrAAvyLQAL8jAAC/IyAAvyNAAL8jYAC/I5AAvyPAAL8j4AC/JAAAvyQwAL8kUAC/JHAAvySgAL8k0AC/JOAAvyUwAL8mwAC/JxAAvycwAL8ngAC/J7AAvyfQAL8sYAC/LqAAvzEQAL8zUAC/M4AAvzOgAL8zwAC/M+AAvzQAAL80IAC/NDAAvzRgAL818AC/OEAAvzhgAL84gAC/OKAAvzjAAL844AC/OQAAvzkgAL85QAC/OWAAvzuwAL874AC/PBAAvzxAAL88cAC/PKAAvzzQAL89AAC/PTAAvz1gAL89gAC/RTAAv0VQAL9FgAC/RaAAv0XQAL9F4AC/RfAAv0YAAL9GEAC/RjAAv0ZQAL9GYAC/RnAAv0aQAL9GoAC/R7AAv0fAAL9H4AC/T5AAv0+wAL9P0AC/T/AAv1AgAL9QMAC/UEAAv1BQAL9QYAC/UIAAv1CgAL9QsAC/UMAAv1DgAL9Q8AC/WKAAv1jAAL9Y8AC/WRAAv1lAAL9ZUAC/WWAAv1lwAL9ZgAC/WaAAv1nAAL9Z0AC/WeAAv1oAAL9aEAC/WyAAv1swAL9bUAC/YwAAv2MgAL9jQAC/Y2AAv2OQAL9joAC/Y7AAv2PAAL9j0AC/Y/AAv2QQAL9kIAC/ZDAAv2RQAL9kYAC/bBAAv2wwAL9sYAC/bIAAv2ywAL9swAC/bNAAv2zgAL9s8AC/bRAAv20wAL9tQAC/bVAAv21wAL9tgAC/bpAAv26gAL9uwAC/dnAAv3aQAL92sAC/dtAAv3cAAL93EAC/dyAAv3cwAL93QAC/d2AAv3eAAL93kAC/d6AAv3fAAL930AC/f4AAv3+gAL9/0AC/f/AAv4AgAL+AMAC/gEAAv4BQAL+AYAC/gIAAv4CgAL+AsAC/gMAAv4DgAL+A8AC/goAAv4KQAL+CoAC/gsAAv4pwAL+KkAC/irAAv4rQAL+LAAC/ixAAv4sgAL+LMAC/i0AAv4tgAL+LgAC/i5AAv4ugAL+LwAC/i9AAv5OAAL+ToAC/k9AAv5PwAL+UIAC/lDAAv5RAAL+UUAC/lGAAv5SAAL+UoAC/lLAAv5TAAL+U4AC/lPAAv5YgAL+XsAC/mgAAv5owAL+aYAC/mpAAv5rAAL+a8AC/myAAv5tQAL+bgAC/m7AAv54AAL+eMAC/nmAAv56QAL+ewAC/nvAAv58gAL+fUAC/n4AAv5+wAL+f0AC/oTAAv6SAAL+l4AC/qOAAv6rQAL+sEAC/rfAAv69QAL+4gAC/urAAv7ywAL++sAC/vtAAv77wAL+/EAC/vzAAv79gAL+/cAC/v4AAv7+wAL+/wAC/v+AAv7/wAL/AEAC/wEAAv8BQAL/AYAC/wJAAv8CgAL/A8AC/woAAv8MQAL/DMAC/w1AAv8PgAL/EEAC/xEAAv8RgAL/I8AC/yzAAv82gAL/P4AC/0BAAv9AwAL/QUAC/0HAAv9CQAL/QsAC/0MAAv9DwAL/SgAC/1JAAv9SwAL/U0AC/1PAAv9UQAL/VMAC/1VAAv9VwAL/VkAC/16AAv9fQAL/YAAC/2DAAv9hgAL/YkAC/2MAAv9jwAL/ZIAC/2UAAv+DwAL/hEAC/4TAAv+FQAL/hgAC/4ZAAv+GgAL/hsAC/4cAAv+HgAL/iAAC/4hAAv+IgAL/iQAC/4lAAv+oAAL/qIAC/6kAAv+pgAL/qkAC/6qAAv+qwAL/qwAC/6tAAv+rwAL/rEAC/6yAAv+swAL/rUAC/62AAv/MQAL/zMAC/82AAv/OAAL/zsAC/88AAv/PQAL/z4AC/8/AAv/QQAL/0MAC/9EAAv/RQAL/0cAC/9IAAv/YQAL/2IAC/9jAAv/ZQAL/+AAC//iAAv/5AAL/+YAC//pAAv/6gAL/+sAC//sAAv/7QAL/+8AC//xAAv/8gAL//MAC//1AAv/9gAMAHEADABzAAwAdQAMAHcADAB6AAwAewAMAHwADAB9AAwAfgAMAIAADACCAAwAgwAMAIQADACGAAwAhwAMAQIADAEEAAwBBgAMAQgADAELAAwBDAAMAQ0ADAEOAAwBDwAMAREADAETAAwBFAAMARUADAEXAAwBGAAMAZMADAGVAAwBlwAMAZkADAGcAAwBnQAMAZ4ADAGfAAwBoAAMAaIADAGkAAwBpQAMAaYADAGoAAwBqQAMAiQADAImAAwCKAAMAioADAItAAwCLgAMAi8ADAIwAAwCMQAMAjMADAI1AAwCNgAMAjcADAI5AAwCOgAMAoMADAKnAAwCzgAMAvIADAL1AAwC9wAMAvkADAL7AAwC/QAMAv8ADAMAAAwDAwAMAxwADAM5AAwDOwAMAz0ADAM/AAwDQQAMA0MADANFAAwDRwAMA2QADANnAAwDagAMA20ADANwAAwDcwAMA3YADAN5AAwDewAMA/YADAP4AAwD+gAMA/wADAP/AAwEAAAMBAEADAQCAAwEAwAMBAUADAQHAAwECAAMBAkADAQLAAwEDAAMBIcADASJAAwEiwAMBI0ADASQAAwEkQAMBJIADASTAAwElAAMBJYADASYAAwEmQAMBJoADAScAAwEnQAMBRgADAUaAAwFHAAMBR4ADAUhAAwFIgAMBSMADAUkAAwFJQAMBScADAUpAAwFKgAMBSsADAUtAAwFLgAMBakADAWrAAwFrQAMBa8ADAWyAAwFswAMBbQADAW1AAwFtgAMBbgADAW6AAwFuwAMBbwADAW+AAwFvwAMBjoADAY8AAwGPgAMBkAADAZDAAwGRAAMBkUADAZGAAwGRwAMBkkADAZLAAwGTAAMBk0ADAZPAAwGUAAMBssADAbNAAwGzwAMBtEADAbUAAwG1QAMBtYADAbXAAwG2AAMBtoADAbcAAwG3QAMBt4ADAbgAAwG4QAMB1wADAdeAAwHYAAMB2IADAdlAAwHZgAMB2cADAdoAAwHaQAMB2sADAdtAAwHbgAMB28ADAdxAAwHcgAMCAUADAgoAAwISAAMCGgADAhqAAwIbAAMCG4ADAhwAAwIcwAMCHQADAh1AAwIeAAMCHkADAh7AAwIfAAMCH4ADAiBAAwIggAMCIMADAiGAAwIhwAMCIwADAilAAwIrgAMCLAADAiyAAwIuwAMCL4ADAjBAAwIwwAMCQwADAkwAAwJVwAMCXsADAl+AAwJgAAMCYIADAmEAAwJhgAMCYgADAmJAAwJjAAMCaUADAnGAAwJyAAMCcoADAnMAAwJzgAMCdAADAnSAAwJ1AAMCdYADAn3AAwJ+gAMCf0ADAoAAAwKAwAMCgYADAoJAAwKDAAMCg8ADAoRAAwKjAAMCo4ADAqQAAwKkgAMCpUADAqWAAwKlwAMCpgADAqZAAwKmwAMCp0ADAqeAAwKnwAMCqEADAqiAAwLHQAMCx8ADAshAAwLIwAMCyYADAsnAAwLKAAMCykADAsqAAwLLAAMCy4ADAsvAAwLMAAMCzIADAszAAwLrgAMC7AADAuzAAwLtQAMC7gADAu5AAwLugAMC7sADAu8AAwLvgAMC8AADAvBAAwLwgAMC8QADAvFAAwL3gAMC98ADAvgAAwL4gAMDF0ADAxfAAwMYQAMDGMADAxmAAwMZwAMDGgADAxpAAwMagAMDGwADAxuAAwMbwAMDHAADAxyAAwMcwAMDO4ADAzwAAwM8gAMDPQADAz3AAwM+AAMDPkADAz6AAwM+wAMDP0ADAz/AAwNAAAMDQEADA0DAAwNBAAMDX8ADA2BAAwNgwAMDYUADA2IAAwNiQAMDYoADA2LAAwNjAAMDY4ADA2QAAwNkQAMDZIADA2UAAwNlQAMDhAADA4SAAwOFAAMDhYADA4ZAAwOGgAMDhsADA4cAAwOHQAMDh8ADA4hAAwOIgAMDiMADA4lAAwOJgAMDqEADA6jAAwOpQAMDqcADA6qAAwOqwAMDqwADA6tAAwOrgAMDrAADA6yAAwOswAMDrQADA62AAwOtwAMDwAADA8kAAwPSwAMD28ADA9yAAwPdAAMD3YADA94AAwPegAMD3wADA99AAwPgAAMD5kADA+2AAwPuAAMD7oADA+8AAwPvgAMD8AADA/CAAwPxAAMD+EADA/kAAwP5wAMD+oADA/tAAwP8AAMD/MADA/2AAwP+AAMEHMADBB1AAwQdwAMEHkADBB8AAwQfQAMEH4ADBB/AAwQgAAMEIIADBCEAAwQhQAMEIYADBCIAAwQiQAMEQQADBEGAAwRCAAMEQoADBENAAwRDgAMEQ8ADBEQAAwREQAMERMADBEVAAwRFgAMERcADBEZAAwRGgAMEZUADBGXAAwRmQAMEZsADBGeAAwRnwAMEaAADBGhAAwRogAMEaQADBGmAAwRpwAMEagADBGqAAwRqwAMEiYADBIoAAwSKgAMEiwADBIvAAwSMAAMEjEADBIyAAwSMwAMEjUADBI3AAwSOAAMEjkADBI7AAwSPAAMErcADBK5AAwSuwAMEr0ADBLAAAwSwQAMEsIADBLDAAwSxAAMEsYADBLIAAwSyQAMEsoADBLMAAwSzQAME0gADBNKAAwTTQAME08ADBNSAAwTUwAME1QADBNVAAwTVgAME1gADBNaAAwTWwAME1wADBNeAAwTXwAME24ADBPpAAwT6wAME+0ADBPvAAwT8gAME/MADBP0AAwT9QAME/YADBP4AAwT+gAME/sADBP8AAwT/gAME/8ADBSSAAwUtQAMFNUADBT1AAwU9wAMFPkADBT7AAwU/QAMFQAADBUBAAwVAgAMFQUADBUGAAwVCAAMFQkADBUMAAwVDwAMFRAADBURAAwVFAAMFRUADBUaAAwVMwAMFTwADBU+AAwVQQAMFUoADBVNAAwVUAAMFVIADBWbAAwVvwAMFeYADBYKAAwWDQAMFg8ADBYRAAwWEwAMFhUADBYXAAwWGAAMFhsADBY0AAwWVQAMFlcADBZZAAwWWwAMFl0ADBZfAAwWYQAMFmMADBZlAAwWhgAMFokADBaMAAwWjwAMFpIADBaVAAwWmAAMFpsADBaeAAwWoAAMFxsADBcdAAwXHwAMFyEADBckAAwXJQAMFyYADBcnAAwXKAAMFyoADBcsAAwXLQAMFy4ADBcwAAwXMQAMF6wADBeuAAwXsAAMF7IADBe1AAwXtgAMF7cADBe4AAwXuQAMF7sADBe9AAwXvgAMF78ADBfBAAwXwgAMGD0ADBg/AAwYQgAMGEQADBhHAAwYSAAMGEkADBhKAAwYSwAMGE0ADBhPAAwYUAAMGFEADBhTAAwYVAAMGG0ADBhuAAwYbwAMGHEADBjsAAwY7gAMGPAADBjyAAwY9QAMGPYADBj3AAwY+AAMGPkADBj7AAwY/QAMGP4ADBj/AAwZAQAMGQIADBl9AAwZfwAMGYEADBmDAAwZhgAMGYcADBmIAAwZiQAMGYoADBmMAAwZjgAMGY8ADBmQAAwZkgAMGZMADBoOAAwaEAAMGhIADBoUAAwaFwAMGhgADBoZAAwaGgAMGhsADBodAAwaHwAMGiAADBohAAwaIwAMGiQADBqfAAwaoQAMGqMADBqlAAwaqAAMGqkADBqqAAwaqwAMGqwADBquAAwasAAMGrEADBqyAAwatAAMGrUADBswAAwbMgAMGzQADBs2AAwbOQAMGzoADBs7AAwbPAAMGz0ADBs/AAwbQQAMG0IADBtDAAwbRQAMG0YADBuPAAwbswAMG9oADBv+AAwcAQAMHAQADBwGAAwcCAAMHAoADBwMAAwcDQAMHBAADBwpAAwcRgAMHEkADBxMAAwcTwAMHFIADBxVAAwcWAAMHFsADBx4AAwcewAMHH4ADByBAAwchAAMHIcADByKAAwcjQAMHI8ADB0KAAwdDAAMHQ8ADB0RAAwdFAAMHRUADB0WAAwdFwAMHRgADB0aAAwdHQAMHR4ADB0fAAwdIQAMHSIADB2dAAwdnwAMHaIADB2kAAwdpwAMHagADB2pAAwdqgAMHasADB2tAAwdsAAMHbEADB2yAAwdtAAMHbUADB4wAAweMgAMHjUADB43AAweOgAMHjsADB48AAwePQAMHj4ADB5AAAweQwAMHkQADB5FAAweRwAMHkgADB7DAAwexQAMHsgADB7KAAwezQAMHs4ADB7PAAwe0AAMHtEADB7TAAwe1gAMHtcADB7YAAwe2gAMHtsADB9WAAwfWAAMH1oADB9cAAwfXwAMH2AADB9hAAwfYgAMH2MADB9lAAwfaAAMH2kADB9qAAwfbAAMH20ADB/oAAwf6gAMH+wADB/uAAwf8QAMH/IADB/zAAwf9AAMH/UADB/3AAwf+gAMH/sADB/8AAwf/gAMH/8ADCB6AAwgfAAMIH8ADCCBAAwghAAMIIUADCCGAAwghwAMIIgADCCKAAwgjQAMII4ADCCPAAwgkQAMIJIADCElAAwhSAAMIWgADCGIAAwhigAMIYwADCGOAAwhkAAMIZMADCGUAAwhlQAMIZgADCGZAAwhmwAMIZwADCGeAAwhoQAMIaIADCGjAAwhpgAMIacADCGsAAwhxQAMIc4ADCHQAAwh0gAMIdsADCHeAAwh4QAMIeMADCIsAAwiUAAMIncADCKbAAwingAMIqAADCKiAAwipAAMIqYADCKoAAwiqQAMIqwADCLFAAwi5gAMIugADCLqAAwi7AAMIu4ADCLwAAwi8gAMIvQADCL2AAwjFwAMIxoADCMdAAwjIAAMIyMADCMmAAwjKQAMIywADCMvAAwjMQAMI6wADCOuAAwjsAAMI7IADCO1AAwjtgAMI7cADCO4AAwjuQAMI7sADCO9AAwjvgAMI78ADCPBAAwjwgAMJD0ADCQ/AAwkQQAMJEMADCRGAAwkRwAMJEgADCRJAAwkSgAMJEwADCROAAwkTwAMJFAADCRSAAwkUwAMJM4ADCTQAAwk0wAMJNUADCTYAAwk2QAMJNoADCTbAAwk3AAMJN4ADCTgAAwk4QAMJOIADCTkAAwk5QAMJP4ADCT/AAwlAAAMJQIADCV9AAwlfwAMJYEADCWDAAwlhgAMJYcADCWIAAwliQAMJYoADCWMAAwljgAMJY8ADCWQAAwlkgAMJZMADCYOAAwmEAAMJhIADCYUAAwmFwAMJhgADCYZAAwmGgAMJhsADCYdAAwmHwAMJiAADCYhAAwmIwAMJiQADCafAAwmoQAMJqMADCalAAwmqAAMJqkADCaqAAwmqwAMJqwADCauAAwmsAAMJrEADCayAAwmtAAMJrUADCcwAAwnMgAMJzQADCc2AAwnOQAMJzoADCc7AAwnPAAMJz0ADCc/AAwnQQAMJ0IADCdDAAwnRQAMJ0YADCfBAAwnwwAMJ8UADCfHAAwnygAMJ8sADCfMAAwnzQAMJ84ADCfQAAwn0gAMJ9MADCfUAAwn1gAMJ9cADCggAAwoRAAMKGsADCiPAAwokgAMKJQADCiWAAwomAAMKJoADCicAAw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EHwAMRCEADEQjAAxEJQAMRCcADEQpAAxEKwAMRC0ADEROAAxEUQAMRFQADERXAAxEWgAMRF0ADERgAAxEYwAMRGYADERoAAxE4wAMROUADETnAAxE6QAMROwADETtAAxE7gAMRO8ADETwAAxE8gAMRPQADET1AAxE9gAMRPgADET5AAxFdAAMRXYADEV4AAxFegAMRX0ADEV+AAxFfwAMRYAADEWBAAxFgwAMRYUADEWGAAxFhwAMRYkADEWKAAxGBQAMRgcADEYKAAxGDAAMRg8ADEYQAAxGEQAMRhIADEYTAAxGFQAMRhcADEYYAAxGGQAMRhsADEYcAAxGNQAMRjYADEY3AAxGOQAMRrQADEa2AAxGuAAMRroADEa9AAxGvgAMRr8ADEbAAAxGwQAMRsMADEbFAAxGxgAMRscADEbJAAxGygAMR0UADEdHAAxHSQAMR0sADEdOAAxHTwAMR1AADEdRAAxHUgAMR1QADEdWAAxHVwAMR1gADEdaAAxHWwAMR9YADEfYAAxH2gAMR9wADEffAAxH4AAMR+EADEfiAAxH4wAMR+UADEfnAAxH6AAMR+kADEfrAAxH7AAMSGcADEhpAAxIawAMSG0ADEhwAAxIcQAMSHIADEhzAAxIdAAMSHYADEh4AAxIeQAMSHoADEh8AAxIfQAMSPgADEj6AAxI/AAMSP4ADEkBAAxJAgAMSQMADEkEAAxJBQAMSQcADEkJAAxJCgAMSQsADEkNAAxJDgAMSVcADEl7AAxJogAMScYADEnJAAxJywAMSc0ADEnPAAxJ0QAMSdMADEnUAAxJ1wAMSfAADEoNAAxKDwAMShEADEoTAAxKFQAMShcADEoZAAxKGwAMSjgADEo7AAxKPgAMSkEADEpEAAxKRwAMSkoADEpNAAxKTwAMSsoADErMAAxKzgAMStAADErTAAxK1AAMStUADErWAAxK1wAMStkADErbAAxK3AAMSt0ADErfAAxK4AAMS1sADEtdAAxLXwAMS2EADEtkAAxLZQAMS2YADEtnAAxLaAAMS2oADEtsAAxLbQAMS24ADEtwAAxLcQAMS+wADEvuAAxL8AAMS/IADEv1AAxL9gAMS/cADEv4AAxL+QAMS/sADEv9AAxL/gAMS/8ADEwBAAxMAgAMTH0ADEx/AAxMgQAMTIMADEyGAAxMhwAMTIgADEyJAAxMigAMTIwADEyOAAxMjwAMTJAADEySAAxMkwAMTQ4ADE0QAAxNEgAMTRQADE0XAAxNGAAMTRkADE0aAAxNGwAMTR0ADE0fAAxNIAAMTSEADE0jAAxNJAAMTZ8ADE2hAAxNpAAMTaYADE2pAAxNqgAMTasADE2sAAxNrQAMTa8ADE2xAAxNsgAMTbMADE21AAxNtgAMTcUADE5AAAxOQgAMTkQADE5GAAxOSQAMTkoADE5LAAxOTAAMTk0ADE5PAAxOUQAMTlIADE5TAAxOVQAMTlYADE7pAAxPDAAMTywADE9MAAxPTgAMT1AADE9SAAxPVAAMT1cADE9YAAxPWQAMT1wADE9dAAxPXwAMT2AADE9iAAxPZQAMT2YADE9nAAxPagAMT2sADE9wAAxPiQAMT5IADE+UAAxPlgAMT58ADE+iAAxPpQAMT6cADE/wAAxQFAAMUDsADFBfAAxQYgAMUGQADFBmAAxQaAAMUGoADFBsAAxQbQAMUHAADFCJAAxQqgAMUKwADFCuAAxQsAAMULIADFC0AAxQtgAMULgADFC6AAxQ2wAMUN4ADFDhAAxQ5AAMUOcADFDqAAxQ7QAMUPAADFDzAAxQ9QAMUXAADFFyAAxRdAAMUXYADFF5AAxRegAMUXsADFF8AAxRfQAMUX8ADFGBAAxRggAMUYMADFGFAAxRhgAMUgEADFIDAAxSBQAMUgcADFIKAAxSCwAMUgwADFINAAxSDgAMUhAADFISAAxSEwAMUhQADFIWAAxSFwAMUpIADFKUAAxSlwAMUpkADFKcAAxSnQAMUp4ADFKfAAxSoAAMUqIADFKkAAxSpQAMUqYADFKoAAxSqQAMUsIADFLDAAxSxAAMUsYADFNBAAxTQwAMU0UADFNHAAxTSgAMU0sADFNMAAxTTQAMU04ADFNQAAxTUgAMU1MADFNUAAxTVgAMU1cADFPSAAxT1AAMU9YADFPYAAxT2wAMU9wADFPdAAxT3gAMU98ADFPhAAxT4wAMU+QADFPlAAxT5wAMU+gADFRjAAxUZQAMVGcADFRpAAxUbAAMVG0ADFRuAAxUbwAMVHAADFRyAAxUdAAMVHUADFR2AAxUeAAMVHkADFT0AAxU9gAMVPgADFT6AAxU/QAMVP4ADFT/AAxVAAAMVQEADFUDAAxVBQAMVQYADFUHAAxVCQAMVQoADFWFAAxVhwAMVYkADFWLAAxVjgAMVY8ADFWQAAxVkQAMVZIADFWUAAxVlgAMVZcADFWYAAxVmgAMVZsADFXkAAxWCAAMVi8ADFZTAAxWVgAMVlgADFZaAAxWXAAMVl4ADFZgAAxWYQAMVmQADFZ9AAxWmgAMVpwADFaeAAxWoAAMVqIADFakAAxWpgAMVqgADFbFAAxWyAAMVssADFbOAAxW0QAMVtQADFbXAAxW2gAMVtwADFdXAAxXWQAMV1sADFddAAxXYAAMV2EADFdiAAxXYwAMV2QADFdmAAxXaAAMV2kADFdqAAxXbAAMV20ADFfoAAxX6gAMV+wADFfuAAxX8QAMV/IADFfzAAxX9AAMV/UADFf3AAxX+QAMV/oADFf7AAxX/QAMV/4ADFh5AAxYewAMWH0ADFh/AAxYggAMWIMADFiEAAxYhQAMWIYADFiIAAxYigAMWIsADFiMAAxYjgAMWI8ADFkKAAxZDAAMWQ4ADFkQAAxZEwAMWRQADFkVAAxZFgAMWRcADFkZAAxZGwAMWRwADFkdAAxZHwAMWSAADFmbAAxZnQAMWZ8ADFmhAAxZpAAMWaUADFmmAAxZpwAMWagADFmqAAxZrAAMWa0ADFmuAAxZsAAMWbEADFosAAxaLgAMWjEADFozAAxaNgAMWjcADFo4AAxaOQAMWjoADFo8AAxaPgAMWj8ADFpAAAxaQgAMWkMADFpiAAxa3QAMWt8ADFrhAAxa4wAMWuYADFrnAAxa6AAMWukADFrqAAxa7AAMWu4ADFrvAAxa8AAMWvIADFrzAAxbhgAMW6kADFvJAAxb6QAMW+sADFvtAAxb7wAMW/EADFv0AAxb9QAMW/YADFv5AAxb+gAMW/wADFv9AAxcAAAMXAMADFwEAAxcBQAMXAgADFwJAAxcDgAMXCcADFwwAAxcMgAMXDUADFw+AAxcQQAMXEQADFxGAAxcjwAMXLMADFzaAAxc/gAMXQEADF0DAAxdBQAMXQcADF0JAAxdCwAMXQwADF0PAAxdKAAMXUkADF1LAAxdTQAMXU8ADF1RAAxdUwAMXVUADF1XAAxdWQAMXXoADF19AAxdgAAMXYMADF2GAAxdiQAMXYwADF2PAAxdkgAMXZQADF4PAAxeEQAMXhMADF4VAAxeGAAMXhkADF4aAAxeGwAMXhwADF4eAAxeIAAMXiEADF4iAAxeJAAMXiUADF6gAAxeogAMXqQADF6mAAxeqQAMXqoADF6rAAxerAAMXq0ADF6vAAxesQAMXrIADF6zAAxetQAMXrYADF8xAAxfMwAMXzYADF84AAxfOwAMXzwADF89AAxfPgAMXz8ADF9BAAxfQwAMX0QADF9FAAxfRwAMX0gADF9hAAxfYgAMX2MADF9lAAxf4AAMX+IADF/kAAxf5gAMX+kADF/qAAxf6wAMX+wADF/tAAxf7wAMX/EADF/yAAxf8wAMX/UADF/2AAxgcQAMYHMADGB1AAxgdwAMYHoADGB7AAxgfAAMYH0ADGB+AAxggAAMYIIADGCDAAxghAAMYIYADGCHAAxhAgAMYQQADGEGAAxhCAAMYQsADGEMAAxhDQAMYQ4ADGEPAAxhEQAMYRMADGEUAAxhFQAMYRcADGEYAAxhkwAMYZUADGGXAAxhmQAMYZwADGGdAAxhngAMYZ8ADGGgAAxhogAMYaQADGGlAAxhpgAMYagADGGpAAxiJAAMYiYADGIoAAxiKgAMYi0ADGIuAAxiLwAMYjAADGIxAAxiMwAMYjUADGI2AAxiNwAMYjkADGI6AAxigwAMYqcADGLOAAxi8gAMYvUADGL4AAxi+gAMYvwADGL+AAxjAAAMYwEADGMEAAxjHQAMYzoADGM9AAxjQAAMY0MADGNGAAxjSQAMY0wADGNPAAxjbAAMY28ADGNyAAxjdQAMY3gADGN7AAxjfgAMY4EADGODAAxj/gAMZAAADGQDAAxkBQAMZAgADGQJAAxkCgAMZAsADGQMAAxkDgAMZBEADGQSAAxkEwAMZBUADGQWAAxkkQAMZJMADGSWAAxkmAAMZJsADGScAAxknQAMZJ4ADGSfAAxkoQAMZKQADGSlAAxkpgAMZKgADGSpAAxlJAAMZSYADGUpAAxlKwAMZS4ADGUvAAxlMAAMZTEADGUyAAxlNAAMZTcADGU4AAxlOQAMZTsADGU8AAxltwAMZbkADGW8AAxlvgAMZcEADGXCAAxlwwAMZcQADGXFAAxlxwAMZcoADGXLAAxlzAAMZc4ADGXPAAxmSgAMZkwADGZOAAxmUAAMZlMADGZUAAxmVQAMZlYADGZXAAxmWQAMZlwADGZdAAxmXgAMZmAADGZhAAxm3AAMZt4ADGbgAAxm4gAMZuUADGbmAAxm5wAMZugADGbpAAxm6wAMZu4ADGbvAAxm8AAMZvIADGbzAAxnbgAMZ3AADGdzAAxndQAMZ3gADGd5AAxnegAMZ3sADGd8AAxnfgAMZ4EADGeCAAxngwAMZ4UADGeGAAxnlwAMZ5gADGeaAAxoFQAMaBcADGgZAAxoGwAMaB4ADGgfAAxoIAAMaCEADGgiAAxoJAAMaCcADGgoAAxoKQAMaCsADGgsAAxopwAMaKkADGirAAxorQAMaLAADGixAAxosgAMaLMADGi0AAxotgAMaLkADGi6AAxouwAMaL0ADGi+AAxpOQAMaTsADGk+AAxpQAAMaUMADGlEAAxpRQAMaUYADGlHAAxpSQAMaUwADGlNAAxpTgAMaVAADGlRAAxp5AAMagcADGonAAxqRwAMakkADGpLAAxqTQAMak8ADGpSAAxqUwAMalQADGpXAAxqWAAMaloADGpbAAxqXgAMamEADGpiAAxqYwAMamYADGpnAAxqbAAMaoUADGqOAAxqkAAMapMADGqcAAxqnwAMaqIADGqkAAxq7QAMaxEADGs4AAxrXAAMa18ADGthAAxrYwAMa2UADGtnAAxraQAMa2oADGttAAxrhgAMa6cADGupAAxrqwAMa60ADGuvAAxrsQAMa7MADGu1AAxrtwAMa9gADGvbAAxr3gAMa+EADGvkAAxr5wAMa+oADGvtAAxr8AAMa/IADGxtAAxsbwAMbHEADGxzAAxsdgAMbHcADGx4AAxseQAMbHoADGx8AAxsfgAMbH8ADGyAAAxsggAMbIMADGz+AAxtAAAMbQIADG0EAAxtBwAMbQgADG0JAAxtCgAMbQsADG0NAAxtDwAMbRAADG0RAAxtEwAMbRQADG2PAAxtkQAMbZQADG2WAAxtmQAMbZoADG2bAAxtnAAMbZ0ADG2fAAxtoQAMbaIADG2jAAxtpQAMbaYADG2/AAxtwAAMbcEADG3DAAxuPgAMbkAADG5CAAxuRAAMbkcADG5IAAxuSQAMbkoADG5LAAxuTQAMbk8ADG5QAAxuUQAMblMADG5UAAxuzwAMbtEADG7TAAxu1QAMbtgADG7ZAAxu2gAMbtsADG7cAAxu3gAMbuAADG7hAAxu4gAMbuQADG7lAAxvYAAMb2IADG9kAAxvZgAMb2kADG9qAAxvawAMb2wADG9tAAxvbwAMb3EADG9yAAxvcwAMb3UADG92AAxv8QAMb/MADG/1AAxv9wAMb/oADG/7AAxv/AAMb/0ADG/+AAxwAAAMcAIADHADAAxwBAAMcAYADHAHAAxwggAMcIQADHCGAAxwiAAMcIsADHCMAAxwjQAMcI4ADHCPAAxwkQAMcJMADHCUAAxwlQAMcJcADHCYAAxw4QAMcQUADHEsAAxxUAAMcVMADHFWAAxxWAAMcVoADHFcAAxxXgAMcV8ADHFiAAxxewAMcZgADHGbAAxxngAMcaEADHGkAAxxpwAMcaoADHGtAAxxygAMcc0ADHHQAAxx0wAMcdYADHHZAAxx3AAMcd8ADHHhAAxyXAAMcl4ADHJhAAxyYwAMcmYADHJnAAxyaAAMcmkADHJqAAxybAAMcm8ADHJwAAxycQAMcnMADHJ0AAxy7wAMcvEADHL0AAxy9gAMcvkADHL6AAxy+wAMcvwADHL9AAxy/wAMcwIADHMDAAxzBAAMcwYADHMHAAxzggAMc4QADHOHAAxziQAMc4wADHONAAxzjgAMc48ADHOQAAxzkgAMc5UADHOWAAxzlwAMc5kADHOaAAx0FQAMdBcADHQaAAx0HAAMdB8ADHQgAAx0IQAMdCIADHQjAAx0JQAMdCgADHQpAAx0KgAMdCwADHQtAAx0sAAMdNQADHT4AAx1GwAMdUIADHViAAx1iQAMdbAADHXQAAx19AAMdhgADHYaAAx2HQAMdh8ADHYhAAx2IwAMdiYADHYpAAx2KwAMdi0ADHYwAAx2MgAMdjQADHY3AAx2OgAMdjsADHZEAAx2XQAMdmIADHZkAAx2aQAMdmwADHZuAAx2twAMdtsADHcCAAx3JgAMdykADHcrAAx3LQAMdy8ADHcxAAx3MwAMdzQADHc3AAx3UAAMd3UADHd3AAx3eQAMd3sADHd9AAx3fwAMd4EADHeDAAx3hQAMd4cADHesAAx3rwAMd7IADHe1AAx3uAAMd7sADHe+AAx3wQAMd8QADHfHAAx3yQAMeEQADHhGAAx4SQAMeEsADHhOAAx4TwAMeFAADHhRAAx4UgAMeFQADHhWAAx4VwAMeFgADHhaAAx4WwAMeGwADHhtAAx4bwAMeOoADHjsAAx47wAMePEADHj0AAx49QAMePYADHj3AAx4+AAMePoADHj8AAx4/QAMeP4ADHkAAAx5AQAMeTAADHmrAAx5rQAMebAADHmyAAx5tQAMebYADHm3AAx5uAAMebkADHm7AAx5vQAMeb4ADHm/AAx5wQAMecIADHnTAAx51AAMedYADHpRAAx6UwAMelUADHpXAAx6WgAMelsADHpcAAx6XQAMel4ADHpgAAx6YgAMemMADHpkAAx6ZgAMemcADHriAAx65AAMeucADHrpAAx67AAMeu0ADHruAAx67wAMevAADHryAAx69AAMevUADHr2AAx6+AAMevkADHsKAAx7CwAMew0ADHuIAAx7igAMe4wADHuOAAx7kQAMe5IADHuTAAx7lAAMe5UADHuXAAx7mQAMe5oADHubAAx7nQAMe54ADHwZAAx8GwAMfB4ADHwgAAx8IwAMfCQADHwlAAx8JgAMfCcADHwpAAx8KwAMfCwADHwtAAx8LwAMfDAADHxJAAx8SgAMfEsADHxNAAx8yAAMfMoADHzMAAx8zgAMfNEADHzSAAx80wAMfNQADHzVAAx81wAMfNkADHzaAAx82wAMfN0ADHzeAAx9WQAMfVsADH1eAAx9YAAMfWMADH1kAAx9ZQAMfWYADH1nAAx9aQAMfWsADH1sAAx9bQAMfW8ADH1wAAx9pQAMfb4ADH3PAAx90gAMfdUADH3YAAx92wAMfewADH3vAAx98gAMffUADH34AAx9+gAMfg8ADH4nAAx+PQAMflAADH7jAAx/BgAMfyYADH9GAAx/SAAMf0oADH9MAAx/TgAMf1EADH9SAAx/UwAMf1YADH9XAAx/WQAMf1oADH9cAAx/XwAMf2AADH9hAAx/ZAAMf2UADH9qAAx/gwAMf4wADH+OAAx/kAAMf5kADH+cAAx/nwAMf6EADH/qAAyADgAMgDUADIBZAAyAXAAMgF4ADIBgAAyAYgAMgGQADIBmAAyAZwAMgGoADICDAAyApAAMgKYADICoAAyAqgAMgKwADICuAAyAsAAMgLIADIC0AAyA1QAMgNgADIDbAAyA3gAMgOEADIDkAAyA5wAMgOoADIDtAAyA7wAMgWoADIFsAAyBbgAMgXAADIFzAAyBdAAMgXUADIF2AAyBdwAMgXkADIF7AAyBfAAMgX0ADIF/AAyBgAAMgfsADIH9AAyB/wAMggEADIIEAAyCBQAMggYADIIHAAyCCAAMggoADIIMAAyCDQAMgg4ADIIQAAyCEQAMgowADIKOAAyCkQAMgpMADIKWAAyClwAMgpgADIKZAAyCmgAMgpwADIKeAAyCnwAMgqAADIKiAAyCowAMgrwADIK9AAyCvgAMgsAADIM7AAyDPQAMgz8ADINBAAyDRAAMg0UADINGAAyDRwAMg0gADINKAAyDTAAMg00ADINOAAyDUAAMg1EADIPMAAyDzgAMg9AADIPSAAyD1QAMg9YADIPXAAyD2AAMg9kADIPbAAyD3QAMg94ADIPfAAyD4QAMg+IADIRdAAyEXwAMhGEADIRjAAyEZgAMhGcADIRoAAyEaQAMhGoADIRsAAyEbgAMhG8ADIRwAAyEcgAMhHMADITuAAyE8AAMhPIADIT0AAyE9wAMhPgADIT5AAyE+gAMhPsADIT9AAyE/wAMhQAADIUBAAyFAwAMhQQADIV/AAyFgQAMhYMADIWFAAyFiAAMhYkADIWKAAyFiwAMhYwADIWOAAyFkAAMhZEADIWSAAyFlAAMhZUADIXeAAyGAgAMhikADIZNAAyGUAAMhlIADIZUAAyGVgAMhlgADIZaAAyGWwAMhl4ADIZ3AAyGlAAMhpYADIaYAAyGmgAMhpwADIaeAAyGoAAMhqIADIa/AAyGwgAMhsUADIbIAAyGywAMhs4ADIbRAAyG1AAMhtYADIdRAAyHUwAMh1UADIdXAAyHWgAMh1sADIdcAAyHXQAMh14ADIdgAAyHYgAMh2MADIdkAAyHZgAMh2cADIfiAAyH5AAMh+YADIfoAAyH6wAMh+wADIftAAyH7gAMh+8ADIfxAAyH8wAMh/QADIf1AAyH9wAMh/gADIhzAAyIdQAMiHcADIh5AAyIfAAMiH0ADIh+AAyIfwAMiIAADIiCAAyIhAAMiIUADIiGAAyIiAAMiIkADIkEAAyJBgAMiQgADIkKAAyJDQAMiQ4ADIkPAAyJEAAMiREADIkTAAyJFQAMiRYADIkXAAyJGQAMiRoADImVAAyJlwAMiZkADImbAAyJngAMiZ8ADImgAAyJoQAMiaIADImkAAyJpgAMiacADImoAAyJqgAMiasADIomAAyKKAAMiisADIotAAyKMAAMijEADIoyAAyKMwAMijQADIo2AAyKOAAMijkADIo6AAyKPAAMij0ADIpMAAyKxwAMiskADIrLAAyKzQAMitAADIrRAAyK0gAMitMADIrUAAyK1gAMitgADIrZAAyK2gAMitwADIrdAAyLcAAMi5MADIuzAAyL0wAMi9UADIvXAAyL2QAMi9sADIveAAyL3wAMi+AADIvjAAyL5AAMi+YADIvnAAyL6QAMi+wADIvtAAyL7gAMi/EADIvyAAyL9wAMjBAADIwZAAyMGwAMjB0ADIwmAAyMKQAMjCwADIwuAAyMdwAMjJsADIzCAAyM5gAMjOkADIzrAAyM7QAMjO8ADIzxAAyM8wAMjPQADIz3AAyNEAAMjTEADI0zAAyNNQAMjTcADI05AAyNOwAMjT0ADI0/AAyNQQAMjWIADI1lAAyNaAAMjWsADI1uAAyNcQAMjXQADI13AAyNegAMjXwADI33AAyN+QAMjfsADI39AAyOAAAMjgEADI4CAAyOAwAMjgQADI4GAAyOCAAMjgkADI4KAAyODAAMjg0ADI6IAAyOigAMjowADI6OAAyOkQAMjpIADI6TAAyOlAAMjpUADI6XAAyOmQAMjpoADI6bAAyOnQAMjp4ADI8ZAAyPGwAMjx4ADI8gAAyPIwAMjyQADI8lAAyPJgAMjycADI8pAAyPKwAMjywADI8tAAyPLwAMjzAADI9JAAyPSgAMj0sADI9NAAyPyAAMj8oADI/MAAyPzgAMj9EADI/SAAyP0wAMj9QADI/VAAyP1wAMj9kADI/aAAyP2wAMj90ADI/eAAyQWQAMkFsADJBdAAyQXwAMkGIADJBjAAyQZAAMkGUADJBmAAyQaAAMkGoADJBrAAyQbAAMkG4ADJBvAAyQ6gAMkOwADJDuAAyQ8AAMkPMADJD0AAyQ9QAMkPYADJD3AAyQ+QAMkPsADJD8AAyQ/QAMkP8ADJEAAAyRewAMkX0ADJF/AAyRgQAMkYQADJGFAAyRhgAMkYcADJGIAAyRigAMkYwADJGNAAyRjgAMkZAADJGRAAySDAAMkg4ADJIQAAySEgAMkhUADJIWAAySFwAMkhgADJIZAAySGwAMkh0ADJIeAAySHwAMkiEADJIiAAySawAMko8ADJK2AAyS2gAMkt0ADJLfAAyS4QAMkuMADJLlAAyS5wAMkugADJLrAAyTBAAMkyEADJMjAAyTJQAMkycADJMpAAyTKwAMky0ADJMvAAyTTAAMk08ADJNSAAyTVQAMk1gADJNbAAyTXgAMk2EADJNjAAyT3gAMk+AADJPiAAyT5AAMk+cADJPoAAyT6QAMk+oADJPrAAyT7QAMk+8ADJPwAAyT8QAMk/MADJP0AAyUbwAMlHEADJRzAAyUdQAMlHgADJR5AAyUegAMlHsADJR8AAyUfgAMlIAADJSBAAyUggAMlIQADJSFAAyVAAAMlQIADJUEAAyVBgAMlQkADJUKAAyVCwAMlQwADJUNAAyVDwAMlREADJUSAAyVEwAMlRUADJUWAAyVkQAMlZMADJWVAAyVlwAMlZoADJWbAAyVnAAMlZ0ADJWeAAyVoAAMlaIADJWjAAyVpAAMlaYADJWnAAyWIgAMliQADJYmAAyWKAAMlisADJYsAAyWLQAMli4ADJYvAAyWMQAMljMADJY0AAyWNQAMljcADJY4AAyWswAMlrUADJa4AAyWugAMlr0ADJa+AAyWvwAMlsAADJbBAAyWwwAMlsUADJbGAAyWxwAMlskADJbKAAyW6QAMl2QADJdmAAyXaAAMl2oADJdtAAyXbgAMl28ADJdwAAyXcQAMl3MADJd1AAyXdgAMl3cADJd5AAyXegAMmA0ADJgwAAyYUAAMmHAADJhyAAyYdAAMmHYADJh4AAyYewAMmHwADJh9AAyYgAAMmIEADJiDAAyYhAAMmIYADJiJAAyYigAMmIsADJiOAAyYjwAMmJQADJitAAyYtgAMmLgADJi6AAyYwwAMmMYADJjJAAyYywAMmRQADJk4AAyZXwAMmYMADJmGAAyZiAAMmYoADJmMAAyZjgAMmZAADJmRAAyZlAAMma0ADJnOAAyZ0AAMmdIADJnUAAyZ1gAMmdgADJnaAAyZ3AAMmd4ADJn/AAyaAgAMmgUADJoIAAyaCwAMmg4ADJoRAAyaFAAMmhcADJoZAAyalAAMmpYADJqYAAyamgAMmp0ADJqeAAyanwAMmqAADJqhAAyaowAMmqUADJqmAAyapwAMmqkADJqqAAybJQAMmycADJspAAybKwAMmy4ADJsvAAybMAAMmzEADJsyAAybNAAMmzYADJs3AAybOAAMmzoADJs7AAybtgAMm7gADJu7AAybvQAMm8AADJvBAAybwgAMm8MADJvEAAybxgAMm8gADJvJAAybygAMm8wADJvNAAyb5gAMm+cADJvoAAyb6gAMnGUADJxnAAycaQAMnGsADJxuAAycbwAMnHAADJxxAAyccgAMnHQADJx2AAycdwAMnHgADJx6AAycewAMnPYADJz4AAyc+gAMnPwADJz/AAydAAAMnQEADJ0CAAydAwAMnQUADJ0HAAydCAAMnQkADJ0LAAydDAAMnYcADJ2JAAydiwAMnY0ADJ2QAAydkQAMnZIADJ2TAAydlAAMnZYADJ2YAAydmQAMnZoADJ2cAAydnQAMnhgADJ4aAAyeHAAMnh4ADJ4hAAyeIgAMniMADJ4kAAyeJQAMnicADJ4pAAyeKgAMnisADJ4tAAyeLgAMnqkADJ6rAAyerQAMnq8ADJ6yAAyeswAMnrQADJ61AAyetgAMnrgADJ66AAyeuwAMnrwADJ6+AAyevwAMnwgADJ8sAAyfUwAMn3cADJ96AAyffAAMn34ADJ+AAAyfggAMn4QADJ+FAAyfiAAMn6EADJ++AAyfwAAMn8IADJ/EAAyfxgAMn8gADJ/KAAyfzAAMn+kADJ/sAAyf7wAMn/IADJ/1AAyf+AAMn/sADJ/+AAygAAAMoHsADKB9AAygfwAMoIEADKCEAAyghQAMoIYADKCHAAygiAAMoIoADKCMAAygjQAMoI4ADKCQAAygkQAMoQwADKEOAAyhEAAMoRIADKEVAAyhFgAMoRcADKEYAAyhGQAMoRsADKEdAAyhHgAMoR8ADKEhAAyhIgAMoZ0ADKGfAAyhoQAMoaMADKGmAAyhpwAMoagADKGpAAyhqgAMoawADKGuAAyhrwAMobAADKGyAAyhswAMoi4ADKIwAAyiMgAMojQADKI3AAyiOAAMojkADKI6AAyiOwAMoj0ADKI/AAyiQAAMokEADKJDAAyiRAAMor8ADKLBAAyiwwAMosUADKLIAAyiyQAMosoADKLLAAyizAAMos4ADKLQAAyi0QAMotIADKLUAAyi1QAMo1AADKNSAAyjVQAMo1cADKNaAAyjWwAMo1wADKNdAAyjXgAMo2AADKNiAAyjYwAMo2QADKNmAAyjZwAMo4YADKQBAAykAwAMpAUADKQHAAykCgAMpAsADKQMAAykDQAMpA4ADKQQAAykEgAMpBMADKQUAAykFgAMpBcADKSqAAykzQAMpO0ADKUNAAylDwAMpREADKUTAAylFQAMpRgADKUZAAylGgAMpR0ADKUeAAylIAAMpSEADKUkAAylJwAMpSgADKUpAAylLAAMpS0ADKUyAAylSwAMpVQADKVWAAylWQAMpWIADKVlAAylaAAMpWoADKWzAAyl1wAMpf4ADKYiAAymJQAMpicADKYpAAymKwAMpi0ADKYvAAymMAAMpjMADKZMAAymbQAMpm8ADKZxAAymcwAMpnUADKZ3AAymeQAMpnsADKZ9AAymngAMpqEADKakAAympwAMpqoADKatAAymsAAMprMADKa2AAymuAAMpzMADKc1AAynNwAMpzkADKc8AAynPQAMpz4ADKc/AAynQAAMp0IADKdEAAynRQAMp0YADKdIAAynSQAMp8QADKfGAAynyAAMp8oADKfNAAynzgAMp88ADKfQAAyn0QAMp9MADKfVAAyn1gAMp9cADKfZAAyn2gAMqFUADKhXAAyoWgAMqFwADKhfAAyoYAAMqGEADKhiAAyoYwAMqGUADKhnAAyoaAAMqGkADKhrAAyobAAMqIUADKiGAAyohwAMqIkADKkEAAypBgAMqQgADKkKAAypDQAMqQ4ADKkPAAypEAAMqREADKkTAAypFQAMqRYADKkXAAypGQAMqRoADKmVAAyplwAMqZkADKmbAAypngAMqZ8ADKmgAAypoQAMqaIADKmkAAyppgAMqacADKmoAAypqgAMqasADKomAAyqKAAMqioADKosAAyqLwAMqjAADKoxAAyqMgAMqjMADKo1AAyqNwAMqjgADKo5AAyqOwAMqjwADKq3AAyquQAMqrsADKq9AAyqwAAMqsEADKrCAAyqwwAMqsQADKrGAAyqyAAMqskADKrKAAyqzAAMqs0ADKtIAAyrSgAMq0wADKtOAAyrUQAMq1IADKtTAAyrVAAMq1UADKtXAAyrWQAMq1oADKtbAAyrXQAMq14ADKunAAyrywAMq/IADKwWAAysGQAMrBwADKweAAysIAAMrCIADKwkAAysJQAMrCgADKxBAAysXgAMrGEADKxkAAysZwAMrGoADKxtAAyscAAMrHMADKyQAAyskwAMrJYADKyZAAysnAAMrJ8ADKyiAAyspQAMrKcADK0iAAytJAAMrScADK0pAAytLAAMrS0ADK0uAAytLwAMrTAADK0yAAytNQAMrTYADK03AAytOQAMrToADK21AAyttwAMrboADK28AAytvwAMrcAADK3BAAytwgAMrcMADK3FAAytyAAMrckADK3KAAytzAAMrc0ADK5IAAyuSgAMrk0ADK5PAAyuUgAMrlMADK5UAAyuVQAMrlYADK5YAAyuWwAMrlwADK5dAAyuXwAMrmAADK7bAAyu3QAMruAADK7iAAyu5QAMruYADK7nAAyu6AAMrukADK7rAAyu7gAMru8ADK7wAAyu8gAMrvMADK9uAAyvcAAMr3IADK90AAyvdwAMr3gADK95AAyvegAMr3sADK99AAyvgAAMr4EADK+CAAyvhAAMr4UADLAAAAywAgAMsAQADLAGAAywCQAMsAoADLALAAywDAAMsA0ADLAPAAywEgAMsBMADLAUAAywFgAMsBcADLCSAAywlAAMsJcADLCZAAywnAAMsJ0ADLCeAAywnwAMsKAADLCiAAywpQAMsKYADLCnAAywqQAMsKoADLC7AAywvAAMsL4ADLE5AAyxOwAMsT0ADLE/AAyxQgAMsUMADLFEAAyxRQAMsUYADLFIAAyxSwAMsUwADLFNAAyxTwAMsVAADLHLAAyxzQAMsc8ADLHRAAyx1AAMsdUADLHWAAyx1wAMsdgADLHaAAyx3QAMsd4ADLHfAAyx4QAMseIADLJdAAyyXwAMsmIADLJkAAyyZwAMsmgADLJpAAyyagAMsmsADLJtAAyycAAMsnEADLJyAAyydAAMsnUADLMIAAyzKwAMs0sADLNrAAyzbQAMs28ADLNxAAyzcwAMs3YADLN3AAyzeAAMs3sADLN8AAyzfgAMs38ADLOBAAyzhAAMs4UADLOGAAyziQAMs4oADLOPAAyzqAAMs7EADLOzAAyztQAMs74ADLPBAAyzxAAMs8YADLQPAAy0MwAMtFoADLR+AAy0gQAMtIMADLSFAAy0hwAMtIkADLSLAAy0jAAMtI8ADLSoAAy0yQAMtMsADLTNAAy0zwAMtNEADLTTAAy01QAMtNcADLTZAAy0+gAMtP0ADLUAAAy1AwAMtQYADLUJAAy1DAAMtQ8ADLUSAAy1FAAMtY8ADLWRAAy1kwAMtZUADLWYAAy1mQAMtZoADLWbAAy1nAAMtZ4ADLWgAAy1oQAMtaIADLWkAAy1pQAMtiAADLYiAAy2JAAMtiYADLYpAAy2KgAMtisADLYsAAy2LQAMti8ADLYxAAy2MgAMtjMADLY1AAy2NgAMtrEADLazAAy2tgAMtrgADLa7AAy2vAAMtr0ADLa+AAy2vwAMtsEADLbDAAy2xAAMtsUADLbHAAy2yAAMtuEADLbiAAy24wAMtuUADLdgAAy3YgAMt2QADLdmAAy3aQAMt2oADLdrAAy3bAAMt20ADLdvAAy3cQAMt3IADLdzAAy3dQAMt3YADLfxAAy38wAMt/UADLf3AAy3+gAMt/sADLf8AAy3/QAMt/4ADLgAAAy4AgAMuAMADLgEAAy4BgAMuAcADLiCAAy4hAAMuIYADLiIAAy4iwAMuIwADLiNAAy4jgAMuI8ADLiRAAy4kwAMuJQADLiVAAy4lwAMuJgADLkTAAy5FQAMuRcADLkZAAy5HAAMuR0ADLkeAAy5HwAMuSAADLkiAAy5JAAMuSUADLkmAAy5KAAMuSkADLmkAAy5pgAMuagADLmqAAy5rQAMua4ADLmvAAy5sAAMubEADLmzAAy5tQAMubYADLm3AAy5uQAMuboADLoDAAy6JwAMuk4ADLpyAAy6dQAMuncADLp5AAy6ewAMun0ADLp/AAy6gAAMuoMADLqcAAy6uQAMursADLq9AAy6vwAMusEADLrDAAy6xQAMuscADLrkAAy65wAMuuoADLrtAAy68AAMuvMADLr2AAy6+QAMuvsADLt2AAy7eAAMu3oADLt8AAy7fwAMu4AADLuBAAy7ggAMu4MADLuFAAy7hwAMu4gADLuJAAy7iwAMu4wADLwHAAy8CQAMvAsADLwNAAy8EAAMvBEADLwSAAy8EwAMvBQADLwWAAy8GAAMvBkADLwaAAy8HAAMvB0ADLyYAAy8mgAMvJwADLyeAAy8oQAMvKIADLyjAAy8pAAMvKUADLynAAy8qQAMvKoADLyrAAy8rQAMvK4ADL0pAAy9KwAMvS0ADL0vAAy9MgAMvTMADL00AAy9NQAMvTYADL04AAy9OgAMvTsADL08AAy9PgAMvT8ADL26AAy9vAAMvb4ADL3AAAy9wwAMvcQADL3FAAy9xgAMvccADL3JAAy9ywAMvcwADL3NAAy9zwAMvdAADL5LAAy+TQAMvk8ADL5RAAy+VAAMvlUADL5WAAy+VwAMvlgADL5aAAy+XAAMvl0ADL5eAAy+YAAMvmEADL7cAAy+3gAMvuAADL7iAAy+5QAMvuYADL7nAAy+6AAMvukADL7rAAy+7QAMvu4ADL7vAAy+8QAMvvIADL+FAAy/qAAMv8gADL/oAAy/6gAMv+wADL/uAAy/8AAMv/MADL/0AAy/9QAMv/gADL/5AAy/+wAMv/wADL//AAzAAgAMwAMADMAEAAzABwAMwAgADMANAAzAJgAMwC8ADMAxAAzANAAMwD0ADMBAAAzAQwAMwEUADMCOAAzAsgAMwNkADMD9AAzBAAAMwQIADMEEAAzBBgAMwQgADMEKAAzBCwAMwQ4ADMEnAAzBSAAMwUoADMFMAAzBTgAMwVAADMFSAAzBVAAMwVYADMFYAAzBeQAMwXwADMF/AAzBggAMwYUADMGIAAzBiwAMwY4ADMGRAAzBkwAMwg4ADMIQAAzCEgAMwhQADMIXAAzCGAAMwhkADMIaAAzCGwAMwh0ADMIfAAzCIAAMwiEADMIjAAzCJAAMwp8ADMKhAAzCowAMwqUADMKoAAzCqQAMwqoADMKrAAzCrAAMwq4ADMKwAAzCsQAMwrIADMK0AAzCtQAMwzAADMMyAAzDNQAMwzcADMM6AAzDOwAMwzwADMM9AAzDPgAMw0AADMNCAAzDQwAMw0QADMNGAAzDRwAMw2AADMNhAAzDYgAMw2QADMPfAAzD4QAMw+MADMPlAAzD6AAMw+kADMPqAAzD6wAMw+wADMPuAAzD8AAMw/EADMPyAAzD9AAMw/UADMRwAAzEcgAMxHQADMR2AAzEeQAMxHoADMR7AAzEfAAMxH0ADMR/AAzEgQAMxIIADMSDAAzEhQAMxIYADMUBAAzFAwAMxQUADMUHAAzFCgAMxQsADMUMAAzFDQAMxQ4ADMUQAAzFEgAMxRMADMUUAAzFFgAMxRcADMWSAAzFlAAMxZYADMWYAAzFmwAMxZwADMWdAAzFngAMxZ8ADMWhAAzFowAMxaQADMWlAAzFpwAMxagADMYjAAzGJQAMxicADMYpAAzGLAAMxi0ADMYuAAzGLwAMxjAADMYyAAzGNAAMxjUADMY2AAzGOAAMxjkADMaCAAzGpgAMxs0ADMbxAAzG9AAMxvcADMb5AAzG+wAMxv0ADMb/AAzHAAAMxwMADMccAAzHOQAMxzwADMc/AAzHQgAMx0UADMdIAAzHSwAMx04ADMdrAAzHbgAMx3EADMd0AAzHdwAMx3oADMd9AAzHgAAMx4IADMf9AAzH/wAMyAIADMgEAAzIBwAMyAgADMgJAAzICgAMyAsADMgNAAzIEAAMyBEADMgSAAzIFAAMyBUADMiQAAzIkgAMyJUADMiXAAzImgAMyJsADMicAAzInQAMyJ4ADMigAAzIowAMyKQADMilAAzIpwAMyKgADMkjAAzJJQAMySgADMkqAAzJLQAMyS4ADMkvAAzJMAAMyTEADMkzAAzJNgAMyTcADMk4AAzJOgAMyTsADMm2AAzJuAAMybsADMm9AAzJwAAMycEADMnCAAzJwwAMycQADMnGAAzJyQAMycoADMnLAAzJzQAMyc4ADMpRAAzKdQAMypkADMq8AAzK4wAMywMADMsqAAzLUQAMy3EADMuVAAzLuQAMy7sADMu+AAzLwAAMy8IADMvEAAzLxwAMy8oADMvMAAzLzgAMy9EADMvTAAzL1QAMy9gADMvbAAzL3AAMy+EADMv6AAzL/wAMzAEADMwGAAzMCQAMzAsADMxUAAzMeAAMzJ8ADMzDAAzMxgAMzMgADMzKAAzMzAAMzM4ADMzQAAzM0QAMzNQADMztAAzNEgAMzRQADM0WAAzNGAAMzRoADM0cAAzNHgAMzSAADM0iAAzNJAAMzUkADM1MAAzNTwAMzVIADM1VAAzNWAAMzVsADM1eAAzNYQAMzWQADM1mAAzN4QAMzeMADM3mAAzN6AAMzesADM3sAAzN7QAMze4ADM3vAAzN8QAMzfMADM30AAzN9QAMzfcADM34AAzOCQAMzgoADM4MAAzOhwAMzokADM6LAAzOjQAMzpAADM6RAAzOkgAMzpMADM6UAAzOlgAMzpgADM6ZAAzOmgAMzpwADM6dAAzPGAAMzxoADM8dAAzPHwAMzyIADM8jAAzPJAAMzyUADM8mAAzPKAAMzyoADM8rAAzPLAAMzy4ADM8vAAzPQAAMz0EADM9DAAzPvgAMz8AADM/CAAzPxAAMz8cADM/IAAzPyQAMz8oADM/LAAzPzQAMz88ADM/QAAzP0QAMz9MADM/UAAzQTwAM0FEADNBUAAzQVgAM0FkADNBaAAzQWwAM0FwADNBdAAzQXwAM0GEADNBiAAzQYwAM0GUADNBmAAzQdwAM0HgADNB6AAzQ9QAM0PcADND5AAzQ+wAM0P4ADND/AAzRAAAM0QEADNECAAzRBAAM0QYADNEHAAzRCAAM0QoADNELAAzRhgAM0YgADNGLAAzRjQAM0ZAADNGRAAzRkgAM0ZMADNGUAAzRlgAM0ZgADNGZAAzRmgAM0ZwADNGdAAzRtgAM0bcADNG4AAzRugAM0jUADNI3AAzSOQAM0jsADNI+AAzSPwAM0kAADNJBAAzSQgAM0kQADNJGAAzSRwAM0kgADNJKAAzSSwAM0sYADNLIAAzSywAM0s0ADNLQAAzS0QAM0tIADNLTAAzS1AAM0tYADNLYAAzS2QAM0toADNLcAAzS3QAM0vwADNMVAAzTJgAM0ykADNMsAAzTLwAM0zIADNNDAAzTRgAM00kADNNMAAzTTwAM01EADNNmAAzTgAAM05sADNO0AAzURwAM1GoADNSKAAzUqgAM1KwADNSuAAzUsAAM1LIADNS1AAzUtgAM1LcADNS6AAzUuwAM1L0ADNS+AAzUwAAM1MMADNTEAAzUxQAM1MgADNTJAAzUzgAM1OcADNTwAAzU8gAM1PQADNT9AAzVAAAM1QMADNUFAAzVTgAM1XIADNWZAAzVvQAM1cAADNXCAAzVxAAM1cYADNXIAAzVygAM1csADNXOAAzV5wAM1ggADNYKAAzWDAAM1g4ADNYQAAzWEgAM1hQADNYWAAzWGAAM1jkADNY8AAzWPwAM1kIADNZFAAzWSAAM1ksADNZOAAzWUQAM1lMADNbOAAzW0AAM1tIADNbUAAzW1wAM1tgADNbZAAzW2gAM1tsADNbdAAzW3wAM1uAADNbhAAzW4wAM1uQADNdfAAzXYQAM12MADNdlAAzXaAAM12kADNdqAAzXawAM12wADNduAAzXcAAM13EADNdyAAzXdAAM13UADNfwAAzX8gAM1/UADNf3AAzX+gAM1/sADNf8AAzX/QAM1/4ADNgAAAzYAgAM2AMADNgEAAzYBgAM2AcADNggAAzYIQAM2CIADNgkAAzYnwAM2KEADNijAAzYpQAM2KgADNipAAzYqgAM2KsADNisAAzYrgAM2LAADNixAAzYsgAM2LQADNi1AAzZMAAM2TIADNk0AAzZNgAM2TkADNk6AAzZOwAM2TwADNk9AAzZPwAM2UEADNlCAAzZQwAM2UUADNlGAAzZwQAM2cMADNnFAAzZxwAM2coADNnLAAzZzAAM2c0ADNnOAAzZ0AAM2dIADNnTAAzZ1AAM2dYADNnXAAzaUgAM2lQADNpWAAzaWAAM2lsADNpcAAzaXQAM2l4ADNpfAAzaYQAM2mMADNpkAAzaZQAM2mcADNpoAAza4wAM2uUADNrnAAza6QAM2uwADNrtAAza7gAM2u8ADNrwAAza8gAM2vQADNr1AAza9gAM2vgADNr5AAzbQgAM22YADNuNAAzbsQAM27QADNu2AAzbuAAM27oADNu8AAzbvgAM278ADNvCAAzb2wAM2/gADNv6AAzb/AAM2/4ADNwAAAzcAgAM3AQADNwGAAzcIwAM3CYADNwpAAzcLAAM3C8ADNwyAAzcNQAM3DgADNw6AAzctQAM3LcADNy5AAzcuwAM3L4ADNy/AAzcwAAM3MEADNzCAAzcxAAM3MYADNzHAAzcyAAM3MoADNzLAAzdRgAM3UgADN1KAAzdTAAM3U8ADN1QAAzdUQAM3VIADN1TAAzdVQAM3VcADN1YAAzdWQAM3VsADN1cAAzd1wAM3dkADN3bAAzd3QAM3eAADN3hAAzd4gAM3eMADN3kAAzd5gAM3egADN3pAAzd6gAM3ewADN3tAAzeaAAM3moADN5sAAzebgAM3nEADN5yAAzecwAM3nQADN51AAzedwAM3nkADN56AAzeewAM3n0ADN5+AAze+QAM3vsADN79AAze/wAM3wIADN8DAAzfBAAM3wUADN8GAAzfCAAM3woADN8LAAzfDAAM3w4ADN8PAAzfigAM34wADN+OAAzfkAAM35MADN+UAAzflQAM35YADN+XAAzfmQAM35sADN+cAAzfnQAM358ADN+gAAzgGwAM4B0ADOAfAAzgIQAM4CQADOAlAAzgJgAM4CcADOAoAAzgKgAM4CwADOAtAAzgLgAM4DAADOAxAAzgxAAM4OcADOEHAAzhJwAM4SkADOErAAzhLQAM4S8ADOEyAAzhMwAM4TQADOE3AAzhOAAM4ToADOE7AAzhPQAM4UAADOFBAAzhQgAM4UUADOFGAAzhTwAM4WgADOFxAAzhcwAM4XUADOF+AAzhgQAM4YQADOGGAAzhzwAM4fMADOIaAAziPgAM4kEADOJDAAziRQAM4kcADOJJAAziSwAM4kwADOJPAAziaAAM4okADOKLAAzijQAM4o8ADOKRAAzikwAM4pUADOKXAAzimQAM4roADOK9AAziwAAM4sMADOLGAAziyQAM4swADOLPAAzi0gAM4tQADONPAAzjUQAM41MADONVAAzjWAAM41kADONaAAzjWwAM41wADONeAAzjYAAM42EADONiAAzjZAAM42UADOPgAAzj4gAM4+QADOPmAAzj6QAM4+oADOPrAAzj7AAM4+0ADOPvAAzj8QAM4/IADOPzAAzj9QAM4/YADORxAAzkcwAM5HYADOR4AAzkewAM5HwADOR9AAzkfgAM5H8ADOSBAAzkgwAM5IQADOSFAAzkhwAM5IgADOShAAzkogAM5KMADOSlAAzlIAAM5SIADOUkAAzlJgAM5SkADOUqAAzlKwAM5SwADOUtAAzlLwAM5TEADOUyAAzlMwAM5TUADOU2AAzlsQAM5bMADOW1AAzltwAM5boADOW7AAzlvAAM5b0ADOW+AAzlwAAM5cIADOXDAAzlxAAM5cYADOXHAAzmQgAM5kQADOZGAAzmSAAM5ksADOZMAAzmTQAM5k4ADOZPAAzmUQAM5lMADOZUAAzmVQAM5lcADOZYAAzm0wAM5tUADObXAAzm2QAM5twADObdAAzm3gAM5t8ADObgAAzm4gAM5uQADOblAAzm5gAM5ugADObpAAznZAAM52YADOdoAAznagAM520ADOduAAznbwAM53AADOdxAAzncwAM53UADOd2AAzndwAM53kADOd6AAznwwAM5+cADOgOAAzoMgAM6DUADOg3AAzoOQAM6DsADOg9AAzoPwAM6EAADOhDAAzoXAAM6HkADOh7AAzofQAM6H8ADOiBAAzogwAM6IUADOiHAAzopAAM6KcADOiqAAzorQAM6LAADOizAAzotgAM6LkADOi7AAzpNgAM6TgADOk6AAzpPAAM6T8ADOlAAAzpQQAM6UIADOlDAAzpRQAM6UcADOlIAAzpSQAM6UsADOlMAAzpxwAM6ckADOnLAAzpzQAM6dAADOnRAAzp0gAM6dMADOnUAAzp1gAM6dgADOnZAAzp2gAM6dwADOndAAzqWAAM6loADOpcAAzqXgAM6mEADOpiAAzqYwAM6mQADOplAAzqZwAM6mkADOpqAAzqawAM6m0ADOpuAAzq6QAM6usADOrtAAzq7wAM6vIADOrzAAzq9AAM6vUADOr2AAzq+AAM6voADOr7AAzq/AAM6v4ADOr/AAzregAM63wADOt+AAzrgAAM64MADOuEAAzrhQAM64YADOuHAAzriQAM64sADOuMAAzrjQAM648ADOuQAAzsCwAM7A0ADOwPAAzsEQAM7BQADOwVAAzsFgAM7BcADOwYAAzsGgAM7BwADOwdAAzsHgAM7CAADOwhAAzsnAAM7J4ADOygAAzsogAM7KUADOymAAzspwAM7KgADOypAAzsqwAM7K0ADOyuAAzsrwAM7LEADOyyAAztRQAM7WgADO2IAAztqAAM7aoADO2sAAztrgAM7bAADO2zAAzttAAM7bUADO24AAztuQAM7bsADO28AAztvgAM7cEADO3CAAztwwAM7cYADO3HAAztzAAM7eUADO3uAAzt8AAM7fIADO37AAzt/gAM7gEADO4DAAzuTAAM7nAADO6XAAzuuwAM7r4ADO7AAAzuwgAM7sQADO7GAAzuyAAM7skADO7MAAzu5QAM7wYADO8IAAzvCgAM7wwADO8OAAzvEAAM7xIADO8UAAzvFgAM7zcADO86AAzvPQAM70AADO9DAAzvRgAM70kADO9MAAzvTwAM71EADO/MAAzvzgAM79AADO/SAAzv1QAM79YADO/XAAzv2AAM79kADO/bAAzv3QAM794ADO/fAAzv4QAM7+IADPBdAAzwXwAM8GEADPBjAAzwZgAM8GcADPBoAAzwaQAM8GoADPBsAAzwbgAM8G8ADPBwAAzwcgAM8HMADPDuAAzw8AAM8PMADPD1AAzw+AAM8PkADPD6AAzw+wAM8PwADPD+AAzxAAAM8QEADPECAAzxBAAM8QUADPEeAAzxHwAM8SAADPEiAAzxnQAM8Z8ADPGhAAzxowAM8aYADPGnAAzxqAAM8akADPGqAAzxrAAM8a4ADPGvAAzxsAAM8bIADPGzAAzyLgAM8jAADPIyAAzyNAAM8jcADPI4AAzyOQAM8joADPI7AAzyPQAM8j8ADPJAAAzyQQAM8kMADPJEAAzyvwAM8sEADPLDAAzyxQAM8sgADPLJAAzyygAM8ssADPLMAAzyzgAM8tAADPLRAAzy0gAM8tQADPLVAAzzUAAM81IADPNUAAzzVgAM81kADPNaAAzzWwAM81wADPNdAAzzXwAM82EADPNiAAzzYwAM82UADPNmAAzz4QAM8+MADPPlAAzz5wAM8+oADPPrAAzz7AAM8+0ADPPuAAzz8AAM8/IADPPzAAzz9AAM8/YADPP3AAz0QAAM9GQADPSLAAz0rwAM9LIADPS0AAz0tgAM9LgADPS6AAz0vAAM9L0ADPTAAAz02QAM9PYADPT4AAz0+gAM9PwADPT+AAz1AAAM9QIADPUEAAz1IQAM9SQADPUnAAz1KgAM9S0ADPUwAAz1MwAM9TYADPU4AAz1swAM9bUADPW3AAz1uQAM9bwADPW9AAz1vgAM9b8ADPXAAAz1wgAM9cQADPXFAAz1xgAM9cgADPXJAAz2RAAM9kYADPZIAAz2SgAM9k0ADPZOAAz2TwAM9lAADPZRAAz2UwAM9lUADPZWAAz2VwAM9lkADPZaAAz21QAM9tcADPbZAAz22wAM9t4ADPbfAAz24AAM9uEADPbiAAz25AAM9uYADPbnAAz26AAM9uoADPbrAAz3ZgAM92gADPdqAAz3bAAM928ADPdwAAz3cQAM93IADPdzAAz3dQAM93cADPd4AAz3eQAM93sADPd8AAz39wAM9/kADPf7AAz3/QAM+AAADPgBAAz4AgAM+AMADPgEAAz4BgAM+AgADPgJAAz4CgAM+AwADPgNAAz4iAAM+IoADPiNAAz4jwAM+JIADPiTAAz4lAAM+JUADPiWAAz4mAAM+JoADPibAAz4nAAM+J4ADPifAAz4rgAM+SkADPkrAAz5LQAM+S8ADPkyAAz5MwAM+TQADPk1AAz5NgAM+TgADPk6AAz5OwAM+TwADPk+AAz5PwAM+dIADPn1AAz6FQAM+jUADPo3AAz6OQAM+jsADPo9AAz6QAAM+kEADPpCAAz6RQAM+kYADPpIAAz6SQAM+kwADPpPAAz6UAAM+lEADPpUAAz6VQAM+loADPpzAAz6fAAM+n4ADPqBAAz6igAM+o0ADPqQAAz6kgAM+tsADPr/AAz7JgAM+0oADPtNAAz7TwAM+1EADPtTAAz7VQAM+1cADPtYAAz7WwAM+3QADPuVAAz7lwAM+5kADPubAAz7nQAM+58ADPuhAAz7owAM+6UADPvGAAz7yQAM+8wADPvPAAz70gAM+9UADPvYAAz72wAM+94ADPvgAAz8WwAM/F0ADPxfAAz8YQAM/GQADPxlAAz8ZgAM/GcADPxoAAz8agAM/GwADPxtAAz8bgAM/HAADPxxAAz87AAM/O4ADPzwAAz88gAM/PUADPz2AAz89wAM/PgADPz5AAz8+wAM/P0ADPz+AAz8/wAM/QEADP0CAAz9fQAM/X8ADP2CAAz9hAAM/YcADP2IAAz9iQAM/YoADP2LAAz9jQAM/Y8ADP2QAAz9kQAM/ZMADP2UAAz9rQAM/a4ADP2vAAz9sQAM/iwADP4uAAz+MAAM/jIADP41AAz+NgAM/jcADP44AAz+OQAM/jsADP49AAz+PgAM/j8ADP5BAAz+QgAM/r0ADP6/AAz+wQAM/sMADP7GAAz+xwAM/sgADP7JAAz+ygAM/swADP7OAAz+zwAM/tAADP7SAAz+0wAM/04ADP9QAAz/UgAM/1QADP9XAAz/WAAM/1kADP9aAAz/WwAM/10ADP9fAAz/YAAM/2EADP9jAAz/ZAAM/98ADP/hAAz/4wAM/+UADP/oAAz/6QAM/+oADP/rAAz/7AAM/+4ADP/wAAz/8QAM//IADP/0AAz/9QANAHAADQByAA0AdAANAHYADQB5AA0AegANAHsADQB8AA0AfQANAH8ADQCBAA0AggANAIMADQCFAA0AhgANAM8ADQDzAA0BGgANAT4ADQFBAA0BRAANAUYADQFIAA0BSgANAUwADQFNAA0BUAANAWkADQGGAA0BiQANAYwADQGPAA0BkgANAZUADQGYAA0BmwANAbgADQG7AA0BvgANAcEADQHEAA0BxwANAcoADQHNAA0BzwANAkoADQJMAA0CTwANAlEADQJUAA0CVQANAlYADQJXAA0CWAANAloADQJdAA0CXgANAl8ADQJhAA0CYgANAt0ADQLfAA0C4gANAuQADQLnAA0C6AANAukADQLqAA0C6wANAu0ADQLwAA0C8QANAvIADQL0AA0C9QANA3AADQNyAA0DdQANA3cADQN6AA0DewANA3wADQN9AA0DfgANA4AADQODAA0DhAANA4UADQOHAA0DiAANBAMADQQFAA0ECAANBAoADQQNAA0EDgANBA8ADQQQAA0EEQANBBMADQQWAA0EFwANBBgADQQaAA0EGwANBJYADQSYAA0EmgANBJwADQSfAA0EoAANBKEADQSiAA0EowANBKUADQSoAA0EqQANBKoADQSsAA0ErQANBSgADQUqAA0FLAANBS4ADQUxAA0FMgANBTMADQU0AA0FNQANBTcADQU6AA0FOwANBTwADQU+AA0FPwANBboADQW8AA0FvwANBcEADQXEAA0FxQANBcYADQXHAA0FyAANBcoADQXNAA0FzgANBc8ADQXRAA0F0gANBeMADQXkAA0F5gANBmEADQZjAA0GZQANBmcADQZqAA0GawANBmwADQZtAA0GbgANBnAADQZzAA0GdAANBnUADQZ3AA0GeAANBvMADQb1AA0G9wANBvkADQb8AA0G/QANBv4ADQb/AA0HAAANBwIADQcFAA0HBgANBwcADQcJAA0HCgANB4UADQeHAA0HigANB4wADQePAA0HkAANB5EADQeSAA0HkwANB5UADQeYAA0HmQANB5oADQecAA0HnQANCDAADQhTAA0IcwANCJMADQiVAA0IlwANCJkADQibAA0IngANCJ8ADQigAA0IowANCKQADQimAA0IpwANCKkADQisAA0IrQANCK4ADQixAA0IsgANCLcADQjQAA0I2QANCNsADQjdAA0I5gANCOkADQjsAA0I7gANCTcADQlbAA0JggANCaYADQmpAA0JqwANCa0ADQmvAA0JsQANCbMADQm0AA0JtwANCdAADQnxAA0J8wANCfUADQn3AA0J+QANCfsADQn9AA0J/wANCgEADQoiAA0KJQANCigADQorAA0KLgANCjEADQo0AA0KNwANCjoADQo8AA0KtwANCrkADQq7AA0KvQANCsAADQrBAA0KwgANCsMADQrEAA0KxgANCsgADQrJAA0KygANCswADQrNAA0LSAANC0oADQtMAA0LTgANC1EADQtSAA0LUwANC1QADQtVAA0LVwANC1kADQtaAA0LWwANC10ADQteAA0L2QANC9sADQveAA0L4AANC+MADQvkAA0L5QANC+YADQvnAA0L6QANC+sADQvsAA0L7QANC+8ADQvwAA0MCQANDAoADQwLAA0MDQANDIgADQyKAA0MjAANDI4ADQyRAA0MkgANDJMADQyUAA0MlQANDJcADQyZAA0MmgANDJsADQydAA0MngANDRkADQ0bAA0NHQANDR8ADQ0iAA0NIwANDSQADQ0lAA0NJgANDSgADQ0qAA0NKwANDSwADQ0uAA0NLwANDaoADQ2sAA0NrgANDbAADQ2zAA0NtAANDbUADQ22AA0NtwANDbkADQ27AA0NvAANDb0ADQ2/AA0NwAANDjsADQ49AA0OPwANDkEADQ5EAA0ORQANDkYADQ5HAA0OSAANDkoADQ5MAA0OTQANDk4ADQ5QAA0OUQANDswADQ7OAA0O0AANDtIADQ7VAA0O1gANDtcADQ7YAA0O2QANDtsADQ7dAA0O3gANDt8ADQ7hAA0O4gANDysADQ9PAA0PdgAND5oADQ+dAA0PnwAND6EADQ+jAA0PpQAND6cADQ+oAA0PqwAND8QADQ/hAA0P4wAND+UADQ/nAA0P6QAND+sADQ/tAA0P7wANEAwADRAPAA0QEgANEBUADRAYAA0QGwANEB4ADRAhAA0QIwANEJ4ADRCgAA0QogANEKQADRCnAA0QqAANEKkADRCqAA0QqwANEK0ADRCvAA0QsAANELEADRCzAA0QtAANES8ADRExAA0RMwANETUADRE4AA0ROQANEToADRE7AA0RPAANET4ADRFAAA0RQQANEUIADRFEAA0RRQANEcAADRHCAA0RxAANEcYADRHJAA0RygANEcsADRHMAA0RzQANEc8ADRHRAA0R0gANEdMADRHVAA0R1gANElEADRJTAA0SVQANElcADRJaAA0SWwANElwADRJdAA0SXgANEmAADRJiAA0SYwANEmQADRJmAA0SZwANEuIADRLkAA0S5gANEugADRLrAA0S7AANEu0ADRLuAA0S7wANEvEADRLzAA0S9AANEvUADRL3AA0S+AANE3MADRN1AA0TeAANE3oADRN9AA0TfgANE38ADROAAA0TgQANE4MADROFAA0ThgANE4cADROJAA0TigANE6kADRQkAA0UJgANFCgADRQqAA0ULQANFC4ADRQvAA0UMAANFDEADRQzAA0UNQANFDYADRQ3AA0UOQANFDoADRRLAA0UTAANFE4ADRTJAA0UywANFM0ADRTPAA0U0gANFNMADRTUAA0U1QANFNYADRTYAA0U2wANFNwADRTdAA0U3wANFOAADRVbAA0VXQANFV8ADRVhAA0VZAANFWUADRVmAA0VZwANFWgADRVqAA0VbQANFW4ADRVvAA0VcQANFXIADRXtAA0V7wANFfIADRX0AA0V9wANFfgADRX5AA0V+gANFfsADRX9AA0WAAANFgEADRYCAA0WBAANFgUADRYWAA0WFwANFhkADRacAA0WwAANFuQADRcHAA0XLgANF04ADRd1AA0XnAANF7wADRfgAA0YBAANGAYADRgJAA0YCwANGA0ADRgPAA0YEgANGBUADRgXAA0YGQANGBwADRgeAA0YIAANGCMADRgmAA0YJwANGCwADRhFAA0YSgANGEwADRhRAA0YVAANGFYADRifAA0YwwANGOoADRkOAA0ZEQANGRMADRkVAA0ZFwANGRkADRkbAA0ZHAANGR8ADRk4AA0ZXQANGV8ADRlhAA0ZYwANGWUADRlnAA0ZaQANGWsADRltAA0ZbwANGZQADRmXAA0ZmgANGZ0ADRmgAA0ZowANGaYADRmpAA0ZrAANGa8ADRmxAA0aLAANGi4ADRoxAA0aMwANGjYADRo3AA0aOAANGjkADRo6AA0aPAANGj4ADRo/AA0aQAANGkIADRpDAA0aVAANGlUADRpXAA0a0gANGtQADRrWAA0a2AANGtsADRrcAA0a3QANGt4ADRrfAA0a4QANGuMADRrkAA0a5QANGucADRroAA0bYwANG2UADRtoAA0bagANG20ADRtuAA0bbwANG3AADRtxAA0bcwANG3UADRt2AA0bdwANG3kADRt6AA0biwANG4wADRuOAA0cCQANHAsADRwNAA0cDwANHBIADRwTAA0cFAANHBUADRwWAA0cGAANHBoADRwbAA0cHAANHB4ADRwfAA0cmgANHJwADRyfAA0coQANHKQADRylAA0cpgANHKcADRyoAA0cqgANHKwADRytAA0crgANHLAADRyxAA0cwgANHMMADRzFAA0dQAANHUIADR1EAA0dRgANHUkADR1KAA0dSwANHUwADR1NAA0dTwANHVEADR1SAA0dUwANHVUADR1WAA0d0QANHdMADR3WAA0d2AANHdsADR3cAA0d3QANHd4ADR3fAA0d4QANHeMADR3kAA0d5QANHecADR3oAA0eAQANHgIADR4DAA0eBQANHoAADR6CAA0ehAANHoYADR6JAA0eigANHosADR6MAA0ejQANHo8ADR6RAA0ekgANHpMADR6VAA0elgANHxEADR8TAA0fFgANHxgADR8bAA0fHAANHx0ADR8eAA0fHwANHyEADR8jAA0fJAANHyUADR8nAA0fKAANH0EADR9aAA0fWwANH1wADR9eAA0fbwANH3QADR93AA0feQANH7IADR+1AA0ftwANH7oADR+9AA0fwAANH8MADR/IAA0gawANII8ADSCzAA0g0wANIPoADSEhAA0hQQANIWgADSGMAA0hrwANIdYADSH6AA0iHgANIkIADSJpAA0iagANImwADSJuAA0icQANInMADSJ2AA0ieAANInoADSJ9AA0ifwANIoEADSKEAA0ihwANIokADSKLAA0ijQANIpAADSKTAA0ilgANIpsADSK0AA0iuQANIrsADSLAAA0iwwANIsUADSMOAA0jMgANI1kADSN9AA0jgAANI4IADSOEAA0jhgANI4gADSOKAA0jiwANI44ADSOnAA0jzAANI84ADSPQAA0j0gANI9QADSPWAA0j2AANI9oADSPcAA0j3gANJAMADSQGAA0kCQANJAwADSQPAA0kEgANJBUADSQYAA0kGwANJB4ADSQgAA0kmwANJJ0ADSSgAA0kogANJKUADSSmAA0kpwANJKgADSSpAA0kqwANJK0ADSSuAA0krwANJLEADSSyAA0kwwANJMQADSTGAA0lQQANJUMADSVFAA0lRwANJUoADSVLAA0lTAANJU0ADSVOAA0lUAANJVIADSVTAA0lVAANJVYADSVXAA0l0gANJdQADSXXAA0l2QANJdwADSXdAA0l3gANJd8ADSXgAA0l4gANJeQADSXlAA0l5gANJegADSXpAA0l+gANJfsADSX9AA0meAANJnoADSZ8AA0mfgANJoEADSaCAA0mgwANJoQADSaFAA0mhwANJokADSaKAA0miwANJo0ADSaOAA0nCQANJwsADScOAA0nEAANJxMADScUAA0nFQANJxYADScXAA0nGQANJxsADSccAA0nHQANJx8ADScgAA0nMQANJzIADSc0AA0nrwANJ7EADSezAA0ntQANJ7gADSe5AA0nugANJ7sADSe8AA0nvgANJ8AADSfBAA0nwgANJ8QADSfFAA0oQAANKEIADShFAA0oRwANKEoADShLAA0oTAANKE0ADShOAA0oUAANKFIADShTAA0oVAANKFYADShXAA0ocAANKHEADShyAA0odAANKO8ADSjxAA0o8wANKPUADSj4AA0o+QANKPoADSj7AA0o/AANKP4ADSkAAA0pAQANKQIADSkEAA0pBQANKYAADSmCAA0phQANKYcADSmKAA0piwANKYwADSmNAA0pjgANKZAADSmSAA0pkwANKZQADSmWAA0plwANKaYADSm/AA0pzAANKc8ADSnSAA0p1QANKeIADSnlAA0p6AANKesADSntAA0qBAANKhcADSogAA0qswANKtYADSr2AA0rFgANKxgADSsaAA0rHAANKx4ADSshAA0rIgANKyMADSsmAA0rJwANKykADSsqAA0rLAANKy8ADSswAA0rMQANKzQADSs1AA0rOgANK1MADStcAA0rXgANK2AADStpAA0rbAANK28ADStxAA0rugANK94ADSwFAA0sKQANLCwADSwuAA0sMAANLDIADSw0AA0sNgANLDcADSw6AA0sUwANLHQADSx2AA0seAANLHoADSx8AA0sfgANLIAADSyCAA0shAANLKUADSyoAA0sqwANLK4ADSyxAA0stAANLLcADSy6AA0svQANLL8ADS06AA0tPAANLT4ADS1AAA0tQwANLUQADS1FAA0tRgANLUcADS1JAA0tSwANLUwADS1NAA0tTwANLVAADS3LAA0tzQANLc8ADS3RAA0t1AANLdUADS3WAA0t1wANLdgADS3aAA0t3AANLd0ADS3eAA0t4AANLeEADS5cAA0uXgANLmEADS5jAA0uZgANLmcADS5oAA0uaQANLmoADS5sAA0ubgANLm8ADS5wAA0ucgANLnMADS6MAA0ujQANLo4ADS6QAA0vCwANLw0ADS8PAA0vEQANLxQADS8VAA0vFgANLxcADS8YAA0vGgANLxwADS8dAA0vHgANLyAADS8hAA0vnAANL54ADS+gAA0vogANL6UADS+mAA0vpwANL6gADS+pAA0vqwANL60ADS+uAA0vrwANL7EADS+yAA0wLQANMC8ADTAxAA0wMwANMDYADTA3AA0wOAANMDkADTA6AA0wPAANMD4ADTA/AA0wQAANMEIADTBDAA0wvgANMMAADTDCAA0wxAANMMcADTDIAA0wyQANMMoADTDLAA0wzQANMM8ADTDQAA0w0QANMNMADTDUAA0xTwANMVEADTFTAA0xVQANMVgADTFZAA0xWgANMVsADTFcAA0xXgANMWAADTFhAA0xYgANMWQADTFlAA0xrgANMdIADTH5AA0yHQANMiAADTIiAA0yJAANMiYADTIoAA0yKgANMisADTIuAA0yRwANMmQADTJmAA0yaAANMmoADTJsAA0ybgANMnAADTJyAA0yjwANMpIADTKVAA0ymAANMpsADTKeAA0yoQANMqQADTKmAA0zIQANMyMADTMlAA0zJwANMyoADTMrAA0zLAANMy0ADTMuAA0zMAANMzIADTMzAA0zNAANMzYADTM3AA0zsgANM7QADTO2AA0zuAANM7sADTO8AA0zvQANM74ADTO/AA0zwQANM8MADTPEAA0zxQANM8cADTPIAA00QwANNEUADTRHAA00SQANNEwADTRNAA00TgANNE8ADTRQAA00UgANNFQADTRVAA00VgANNFgADTRZAA001AANNNYADTTZAA002wANNN4ADTTfAA004AANNOEADTTiAA005AANNOYADTTnAA006AANNOoADTTrAA01ZgANNWgADTVqAA01bAANNW8ADTVwAA01cQANNXIADTVzAA01dQANNXcADTV4AA01eQANNXsADTV8AA019wANNfkADTX7AA01/QANNgAADTYBAA02AgANNgMADTYEAA02BgANNggADTYJAA02CgANNgwADTYNAA02iAANNooADTaMAA02jgANNpEADTaSAA02kwANNpQADTaVAA02lwANNpkADTaaAA02mwANNp0ADTaeAA03MQANN1QADTd0AA03lAANN5YADTeYAA03mgANN5wADTefAA03oAANN6EADTekAA03pQANN6cADTeoAA03qgANN60ADTeuAA03rwANN7IADTezAA03vAANN9UADTfeAA034AANN+IADTfrAA037gANN/EADTfzAA04PAANOGAADTiHAA04qwANOK4ADTiwAA04sgANOLQADTi2AA04uAANOLkADTi8AA041QANOPYADTj4AA04+gANOPwADTj+AA05AAANOQIADTkEAA05BgANOScADTkqAA05LQANOTAADTkzAA05NgANOTkADTk8AA05PwANOUEADTm8AA05vgANOcAADTnCAA05xQANOcYADTnHAA05yAANOckADTnLAA05zQANOc4ADTnPAA050QANOdIADTpNAA06TwANOlEADTpTAA06VgANOlcADTpYAA06WQANOloADTpcAA06XgANOl8ADTpgAA06YgANOmMADTreAA064AANOuMADTrlAA066AANOukADTrqAA066wANOuwADTruAA068AANOvEADTryAA069AANOvUADTsOAA07DwANOxAADTsSAA07jQANO48ADTuRAA07kwANO5YADTuXAA07mAANO5kADTuaAA07nAANO54ADTufAA07oAANO6IADTujAA08HgANPCAADTwiAA08JAANPCcADTwoAA08KQANPCoADTwrAA08LQANPC8ADTwwAA08MQANPDMADTw0AA08rwANPLEADTyzAA08tQANPLgADTy5AA08ugANPLsADTy8AA08vgANPMAADTzBAA08wgANPMQADTzFAA09QAANPUIADT1EAA09RgANPUkADT1KAA09SwANPUwADT1NAA09TwANPVEADT1SAA09UwANPVUADT1WAA090QANPdMADT3VAA091wANPdoADT3bAA093AANPd0ADT3eAA094AANPeIADT3jAA095AANPeYADT3nAA0+MAANPlQADT57AA0+nwANPqIADT6kAA0+pgANPqgADT6qAA0+rAANPq0ADT6wAA0+yQANPuYADT7oAA0+6gANPuwADT7uAA0+8AANPvIADT70AA0/EQANPxQADT8XAA0/GgANPx0ADT8gAA0/IwANPyYADT8oAA0/owANP6UADT+nAA0/qQANP6wADT+tAA0/rgANP68ADT+wAA0/sgANP7QADT+1AA0/tgANP7gADT+5AA1ANAANQDYADUA4AA1AOgANQD0ADUA+AA1APwANQEAADUBBAA1AQwANQEUADUBGAA1ARwANQEkADUBKAA1AxQANQMcADUDJAA1AywANQM4ADUDPAA1A0AANQNEADUDSAA1A1AANQNYADUDXAA1A2AANQNoADUDbAA1BVgANQVgADUFbAA1BXQANQWAADUFhAA1BYgANQWMADUFkAA1BZgANQWgADUFpAA1BagANQWwADUFtAA1B6AANQeoADUHsAA1B7gANQfEADUHyAA1B8wANQfQADUH1AA1B9wANQfkADUH6AA1B+wANQf0ADUH+AA1CeQANQnsADUJ9AA1CfwANQoIADUKDAA1ChAANQoUADUKGAA1CiAANQooADUKLAA1CjAANQo4ADUKPAA1DCgANQwwADUMOAA1DEAANQxMADUMUAA1DFQANQxYADUMXAA1DGQANQxsADUMcAA1DHQANQx8ADUMgAA1DswANQ9YADUP2AA1EFgANRBgADUQaAA1EHAANRB4ADUQhAA1EIgANRCMADUQmAA1EJwANRCkADUQqAA1ELAANRC8ADUQwAA1EMQANRDQADUQ1AA1EOgANRFMADURcAA1EXgANRGAADURpAA1EbAANRG8ADURxAA1EugANRN4ADUUFAA1FKQANRSwADUUuAA1FMAANRTIADUU0AA1FNgANRTcADUU6AA1FUwANRXQADUV2AA1FeAANRXoADUV8AA1FfgANRYAADUWCAA1FhAANRaUADUWoAA1FqwANRa4ADUWxAA1FtAANRbcADUW6AA1FvQANRb8ADUY6AA1GPAANRj4ADUZAAA1GQwANRkQADUZFAA1GRgANRkcADUZJAA1GSwANRkwADUZNAA1GTwANRlAADUbLAA1GzQANRs8ADUbRAA1G1AANRtUADUbWAA1G1wANRtgADUbaAA1G3AANRt0ADUbeAA1G4AANRuEADUdcAA1HXgANR2EADUdjAA1HZgANR2cADUdoAA1HaQANR2oADUdsAA1HbgANR28ADUdwAA1HcgANR3MADUeMAA1HjQANR44ADUeQAA1ICwANSA0ADUgPAA1IEQANSBQADUgVAA1IFgANSBcADUgYAA1IGgANSBwADUgdAA1IHgANSCAADUghAA1InAANSJ4ADUigAA1IogANSKUADUimAA1IpwANSKgADUipAA1IqwANSK0ADUiuAA1IrwANSLEADUiyAA1JLQANSS8ADUkxAA1JMwANSTYADUk3AA1JOAANSTkADUk6AA1JPAANST4ADUk/AA1JQAANSUIADUlDAA1JvgANScAADUnCAA1JxAANSccADUnIAA1JyQANScoADUnLAA1JzQANSc8ADUnQAA1J0QANSdMADUnUAA1KTwANSlEADUpTAA1KVQANSlgADUpZAA1KWgANSlsADUpcAA1KXgANSmAADUphAA1KYgANSmQADUplAA1KrgANStIADUr5AA1LHQANSyAADUsiAA1LJAANSyYADUsoAA1LKgANSysADUsuAA1LRwANS2QADUtmAA1LaAANS2oADUtsAA1LbgANS3AADUtyAA1LjwANS5IADUuVAA1LmAANS5sADUueAA1LoQANS6QADUumAA1MIQANTCMADUwlAA1MJwANTCoADUwrAA1MLAANTC0ADUwuAA1MMAANTDIADUwzAA1MNAANTDYADUw3AA1MsgANTLQADUy2AA1MuAANTLsADUy8AA1MvQANTL4ADUy/AA1MwQANTMMADUzEAA1MxQANTMcADUzIAA1NQwANTUUADU1HAA1NSQANTUwADU1NAA1NTgANTU8ADU1QAA1NUgANTVQADU1VAA1NVgANTVgADU1ZAA1N1AANTdYADU3ZAA1N2wANTd4ADU3fAA1N4AANTeEADU3iAA1N5AANTeYADU3nAA1N6AANTeoADU3rAA1OZgANTmgADU5qAA1ObAANTm8ADU5wAA1OcQANTnIADU5zAA1OdQANTncADU54AA1OeQANTnsADU58AA1O9wANTvkADU77AA1O/QANTwAADU8BAA1PAgANTwMADU8EAA1PBgANTwgADU8JAA1PCgANTwwADU8NAA1PiAANT4oADU+MAA1PjgANT5EADU+SAA1PkwANT5QADU+VAA1PlwANT5kADU+aAA1PmwANT50ADU+eAA1PrwANT7AADU+yAA1PwwANT9AADU/TAA1P1gANT9kADU/bAA1QFAANUBcADVAZAA1QHAANUB8ADVAiAA1QJQANUKgADVDMAA1Q8AANURMADVE6AA1RWgANUYEADVGoAA1RyAANUewADVIQAA1SEgANUhUADVIXAA1SGQANUhsADVIeAA1SIQANUiMADVIlAA1SKAANUioADVIsAA1SLwANUjIADVIzAA1SOAANUlEADVJWAA1SWAANUl0ADVJgAA1SYgANUqsADVLPAA1S9gANUxoADVMdAA1THwANUyEADVMjAA1TJQANUycADVMoAA1TKwANU0QADVNpAA1TawANU20ADVNvAA1TcQANU3MADVN1AA1TdwANU3kADVN7AA1ToAANU6MADVOmAA1TqQANU6wADVOvAA1TsgANU7UADVO4AA1TuwANU70ADVQ4AA1UOgANVD0ADVQ/AA1UQgANVEMADVREAA1URQANVEYADVRIAA1USgANVEsADVRMAA1UTgANVE8ADVRgAA1UYQANVGMADVTeAA1U4AANVOIADVTkAA1U5wANVOgADVTpAA1U6gANVOsADVTtAA1U7wANVPAADVTxAA1U8wANVPQADVVvAA1VcQANVXQADVV2AA1VeQANVXoADVV7AA1VfAANVX0ADVV/AA1VgQANVYIADVWDAA1VhQANVYYADVWXAA1VmAANVZoADVYVAA1WFwANVhkADVYbAA1WHgANVh8ADVYgAA1WIQANViIADVYkAA1WJgANVicADVYoAA1WKgANVisADVamAA1WqAANVqsADVatAA1WsAANVrEADVayAA1WswANVrQADVa2AA1WuAANVrkADVa6AA1WvAANVr0ADVbOAA1WzwANVtEADVdMAA1XTgANV1AADVdSAA1XVQANV1YADVdXAA1XWAANV1kADVdbAA1XXQANV14ADVdfAA1XYQANV2IADVfdAA1X3wANV+IADVfkAA1X5wANV+gADVfpAA1X6gANV+sADVftAA1X7wANV/AADVfxAA1X8wANV/QADVgNAA1YDgANWA8ADVgRAA1YjAANWI4ADViQAA1YkgANWJUADViWAA1YlwANWJgADViZAA1YmwANWJ0ADVieAA1YnwANWKEADViiAA1ZHQANWR8ADVkiAA1ZJAANWScADVkoAA1ZKQANWSoADVkrAA1ZLQANWS8ADVkwAA1ZMQANWTMADVk0AA1ZSgANWWMADVloAA1ZawANWXAADVlzAA1ZdQANWYEADVoUAA1aNwANWlcADVp3AA1aeQANWnsADVp9AA1afwANWoIADVqDAA1ahAANWocADVqIAA1aigANWosADVqNAA1akAANWpEADVqSAA1alQANWpYADVqbAA1atAANWr0ADVq/AA1awQANWsoADVrNAA1a0AANWtIADVsbAA1bPwANW2YADVuKAA1bjQANW48ADVuRAA1bkwANW5UADVuXAA1bmAANW5sADVu0AA1b1QANW9cADVvZAA1b2wANW90ADVvfAA1b4QANW+MADVvlAA1cBgANXAkADVwMAA1cDwANXBIADVwVAA1cGAANXBsADVweAA1cIAANXJsADVydAA1cnwANXKEADVykAA1cpQANXKYADVynAA1cqAANXKoADVysAA1crQANXK4ADVywAA1csQANXSwADV0uAA1dMAANXTIADV01AA1dNgANXTcADV04AA1dOQANXTsADV09AA1dPgANXT8ADV1BAA1dQgANXb0ADV2/AA1dwgANXcQADV3HAA1dyAANXckADV3KAA1dywANXc0ADV3PAA1d0AANXdEADV3TAA1d1AANXe0ADV3uAA1d7wANXfEADV5sAA1ebgANXnAADV5yAA1edQANXnYADV53AA1eeAANXnkADV57AA1efQANXn4ADV5/AA1egQANXoIADV79AA1e/wANXwEADV8DAA1fBgANXwcADV8IAA1fCQANXwoADV8MAA1fDgANXw8ADV8QAA1fEgANXxMADV+OAA1fkAANX5IADV+UAA1flwANX5gADV+ZAA1fmgANX5sADV+dAA1fnwANX6AADV+hAA1fowANX6QADWAfAA1gIQANYCMADWAlAA1gKAANYCkADWAqAA1gKwANYCwADWAuAA1gMAANYDEADWAyAA1gNAANYDUADWCwAA1gsgANYLQADWC2AA1guQANYLoADWC7AA1gvAANYL0ADWC/AA1gwQANYMIADWDDAA1gxQANYMYADWEPAA1hMwANYVoADWF+AA1hgQANYYMADWGFAA1hhwANYYkADWGLAA1hjAANYY8ADWGoAA1hxQANYccADWHJAA1hywANYc0ADWHPAA1h0QANYdMADWHwAA1h8wANYfYADWH5AA1h/AANYf8ADWICAA1iBQANYgcADWKCAA1ihAANYoYADWKIAA1iiwANYowADWKNAA1ijgANYo8ADWKRAA1ikwANYpQADWKVAA1ilwANYpgADWMTAA1jFQANYxcADWMZAA1jHAANYx0ADWMeAA1jHwANYyAADWMiAA1jJAANYyUADWMmAA1jKAANYykADWOkAA1jpgANY6gADWOqAA1jrQANY64ADWOvAA1jsAANY7EADWOzAA1jtQANY7YADWO3AA1juQANY7oADWQ1AA1kNwANZDoADWQ8AA1kPwANZEAADWRBAA1kQgANZEMADWRFAA1kRwANZEgADWRJAA1kSwANZEwADWTHAA1kyQANZMsADWTNAA1k0AANZNEADWTSAA1k0wANZNQADWTWAA1k2AANZNkADWTaAA1k3AANZN0ADWVYAA1lWgANZVwADWVeAA1lYQANZWIADWVjAA1lZAANZWUADWVnAA1laQANZWoADWVrAA1lbQANZW4ADWXpAA1l6wANZe0ADWXvAA1l8gANZfMADWX0AA1l9QANZfYADWX4AA1l+gANZfsADWX8AA1l/gANZf8ADWYQAA1mFQANZhgADWYaAA1mHwANZlgADWZbAA1mXQANZmAADWZjAA1mZgANZmkADWbsAA1nEAANZzQADWdXAA1nfgANZ54ADWfFAA1n7AANaAwADWgwAA1oVAANaFYADWhZAA1oWwANaF0ADWhfAA1oYgANaGUADWhnAA1oaQANaGwADWhuAA1ocAANaHMADWh2AA1odwANaHwADWiVAA1omgANaJwADWihAA1opAANaKYADWjvAA1pEwANaToADWleAA1pYQANaWMADWllAA1pZwANaWkADWlrAA1pbAANaW8ADWmIAA1prQANaa8ADWmxAA1pswANabUADWm3AA1puQANabsADWm9AA1pvwANaeQADWnnAA1p6gANae0ADWnwAA1p8wANafYADWn5AA1p/AANaf8ADWoBAA1qfAANan4ADWqBAA1qgwANaoYADWqHAA1qiAANaokADWqKAA1qjAANao4ADWqPAA1qkAANapIADWqTAA1qpAANaqUADWqnAA1rIgANayQADWsmAA1rKAANaysADWssAA1rLQANay4ADWsvAA1rMQANazMADWs0AA1rNQANazcADWs4AA1rswANa7UADWu4AA1rugANa70ADWu+AA1rvwANa8AADWvBAA1rwwANa8UADWvGAA1rxwANa8kADWvKAA1r2wANa9wADWveAA1sWQANbFsADWxdAA1sXwANbGIADWxjAA1sZAANbGUADWxmAA1saAANbGoADWxrAA1sbAANbG4ADWxvAA1s6gANbOwADWzvAA1s8QANbPQADWz1AA1s9gANbPcADWz4AA1s+gANbPwADWz9AA1s/gANbQAADW0BAA1tEgANbRMADW0VAA1tkAANbZIADW2UAA1tlgANbZkADW2aAA1tmwANbZwADW2dAA1tnwANbaEADW2iAA1towANbaUADW2mAA1uIQANbiMADW4mAA1uKAANbisADW4sAA1uLQANbi4ADW4vAA1uMQANbjMADW40AA1uNQANbjcADW44AA1uUQANblIADW5TAA1uVQANbtAADW7SAA1u1AANbtYADW7ZAA1u2gANbtsADW7cAA1u3QANbt8ADW7hAA1u4gANbuMADW7lAA1u5gANb2EADW9jAA1vZgANb2gADW9rAA1vbAANb20ADW9uAA1vbwANb3EADW9zAA1vdAANb3UADW93AA1veAANb5AADW+pAA1vtgANb7kADW+8AA1vvwANb8wADW/PAA1v0gANb9UADW/XAA1v4wANb+8ADW/8AA1wjwANcLIADXDSAA1w8gANcPQADXD2AA1w+AANcPoADXD9AA1w/gANcP8ADXECAA1xAwANcQUADXEGAA1xCAANcQsADXEMAA1xDQANcRAADXERAA1xFgANcS8ADXE4AA1xOgANcTwADXFFAA1xSAANcUsADXFNAA1xlgANcboADXHhAA1yBQANcggADXIKAA1yDAANcg4ADXIQAA1yEgANchMADXIWAA1yLwANclAADXJSAA1yVAANclYADXJYAA1yWgANclwADXJeAA1yYAANcoEADXKEAA1yhwANcooADXKNAA1ykAANcpMADXKWAA1ymQANcpsADXMWAA1zGAANcxoADXMcAA1zHwANcyAADXMhAA1zIgANcyMADXMlAA1zJwANcygADXMpAA1zKwANcywADXOnAA1zqQANc6sADXOtAA1zsAANc7EADXOyAA1zswANc7QADXO2AA1zuAANc7kADXO6AA1zvAANc70ADXQ4AA10OgANdD0ADXQ/AA10QgANdEMADXREAA10RQANdEYADXRIAA10SgANdEsADXRMAA10TgANdE8ADXRoAA10aQANdGoADXRsAA105wANdOkADXTrAA107QANdPAADXTxAA108gANdPMADXT0AA109gANdPgADXT5AA10+gANdPwADXT9AA11eAANdXoADXV8AA11fgANdYEADXWCAA11gwANdYQADXWFAA11hwANdYkADXWKAA11iwANdY0ADXWOAA12CQANdgsADXYNAA12DwANdhIADXYTAA12FAANdhUADXYWAA12GAANdhoADXYbAA12HAANdh4ADXYfAA12mgANdpwADXaeAA12oAANdqMADXakAA12pQANdqYADXanAA12qQANdqsADXasAA12rQANdq8ADXawAA13KwANdy0ADXcvAA13MQANdzQADXc1AA13NgANdzcADXc4AA13OgANdzwADXc9AA13PgANd0AADXdBAA13igANd64ADXfVAA13+QANd/wADXf+AA14AAANeAIADXgEAA14BgANeAcADXgKAA14IwANeEAADXhCAA14RAANeEYADXhIAA14SgANeEwADXhOAA14awANeG4ADXhxAA14dAANeHcADXh6AA14fQANeIAADXiCAA14/QANeP8ADXkBAA15AwANeQYADXkHAA15CAANeQkADXkKAA15DAANeQ4ADXkPAA15EAANeRIADXkTAA15jgANeZAADXmSAA15lAANeZcADXmYAA15mQANeZoADXmbAA15nQANeZ8ADXmgAA15oQANeaMADXmkAA16HwANeiEADXojAA16JQANeigADXopAA16KgANeisADXosAA16LgANejAADXoxAA16MgANejQADXo1AA16sAANerIADXq1AA16twANeroADXq7AA16vAANer0ADXq+AA16wAANesIADXrDAA16xAANesYADXrHAA17QgANe0QADXtGAA17SAANe0sADXtMAA17TQANe04ADXtPAA17UQANe1MADXtUAA17VQANe1cADXtYAA170wANe9UADXvXAA172QANe9wADXvdAA173gANe98ADXvgAA174gANe+QADXvlAA175gANe+gADXvpAA18ZAANfGYADXxoAA18agANfG0ADXxuAA18bwANfHAADXxxAA18cwANfHUADXx2AA18dwANfHkADXx6AA19DQANfTAADX1QAA19cAANfXIADX10AA19dgANfXgADX17AA19fAANfX0ADX2AAA19gQANfYMADX2EAA19hgANfYkADX2KAA19iwANfY4ADX2PAA19mAANfbEADX26AA19vAANfb4ADX3HAA19ygANfc0ADX3PAA1+GAANfjwADX5jAA1+hwANfooADX6MAA1+jgANfpAADX6SAA1+lAANfpUADX6YAA1+sQANftIADX7UAA1+1gANftgADX7aAA1+3AANft4ADX7gAA1+4gANfwMADX8GAA1/CQANfwwADX8PAA1/EgANfxUADX8YAA1/GwANfx0ADX+YAA1/mgANf5wADX+eAA1/oQANf6IADX+jAA1/pAANf6UADX+nAA1/qQANf6oADX+rAA1/rQANf64ADYApAA2AKwANgC0ADYAvAA2AMgANgDMADYA0AA2ANQANgDYADYA4AA2AOgANgDsADYA8AA2APgANgD8ADYC6AA2AvAANgL8ADYDBAA2AxAANgMUADYDGAA2AxwANgMgADYDKAA2AzAANgM0ADYDOAA2A0AANgNEADYDqAA2A6wANgOwADYDuAA2BaQANgWsADYFtAA2BbwANgXIADYFzAA2BdAANgXUADYF2AA2BeAANgXoADYF7AA2BfAANgX4ADYF/AA2B+gANgfwADYH+AA2CAAANggMADYIEAA2CBQANggYADYIHAA2CCQANggsADYIMAA2CDQANgg8ADYIQAA2CiwANgo0ADYKPAA2CkQANgpQADYKVAA2ClgANgpcADYKYAA2CmgANgpwADYKdAA2CngANgqAADYKhAA2DHAANgx4ADYMgAA2DIgANgyUADYMmAA2DJwANgygADYMpAA2DKwANgy0ADYMuAA2DLwANgzEADYMyAA2DrQANg68ADYOxAA2DswANg7YADYO3AA2DuAANg7kADYO6AA2DvAANg74ADYO/AA2DwAANg8IADYPDAA2EDAANhDAADYRXAA2EewANhH4ADYSAAA2EggANhIQADYSGAA2EiAANhIkADYSMAA2EpQANhMIADYTEAA2ExgANhMgADYTKAA2EzAANhM4ADYTQAA2E7QANhPAADYTzAA2E9gANhPkADYT8AA2E/wANhQIADYUEAA2FfwANhYEADYWDAA2FhQANhYgADYWJAA2FigANhYsADYWMAA2FjgANhZAADYWRAA2FkgANhZQADYWVAA2GEAANhhIADYYUAA2GFgANhhkADYYaAA2GGwANhhwADYYdAA2GHwANhiEADYYiAA2GIwANhiUADYYmAA2GoQANhqMADYalAA2GpwANhqoADYarAA2GrAANhq0ADYauAA2GsAANhrIADYazAA2GtAANhrYADYa3AA2HMgANhzQADYc2AA2HOAANhzsADYc8AA2HPQANhz4ADYc/AA2HQQANh0MADYdEAA2HRQANh0cADYdIAA2HwwANh8UADYfHAA2HyQANh8wADYfNAA2HzgANh88ADYfQAA2H0gANh9QADYfVAA2H1gANh9gADYfZAA2IVAANiFYADYhYAA2IWgANiF0ADYheAA2IXwANiGAADYhhAA2IYwANiGUADYhmAA2IZwANiGkADYhqAA2I5QANiOcADYjpAA2I6wANiO4ADYjvAA2I8AANiPEADYjyAA2I9AANiPYADYj3AA2I+AANiPoADYj7AA2JjgANibEADYnRAA2J8QANifMADYn1AA2J9wANifkADYn8AA2J/QANif4ADYoBAA2KAgANigQADYoFAA2KBwANigoADYoLAA2KDAANig8ADYoQAA2KFQANii4ADYo3AA2KOQANijsADYpEAA2KRwANikoADYpMAA2KlQANirkADYrgAA2LBAANiwcADYsJAA2LCwANiw0ADYsPAA2LEQANixIADYsVAA2LLgANi08ADYtRAA2LUwANi1UADYtXAA2LWQANi1sADYtdAA2LXwANi4AADYuDAA2LhgANi4kADYuMAA2LjwANi5IADYuVAA2LmAANi5oADYwVAA2MFwANjBkADYwbAA2MHgANjB8ADYwgAA2MIQANjCIADYwkAA2MJgANjCcADYwoAA2MKgANjCsADYymAA2MqAANjKoADYysAA2MrwANjLAADYyxAA2MsgANjLMADYy1AA2MtwANjLgADYy5AA2MuwANjLwADY03AA2NOQANjTwADY0+AA2NQQANjUIADY1DAA2NRAANjUUADY1HAA2NSQANjUoADY1LAA2NTQANjU4ADY1nAA2NaAANjWkADY1rAA2N5gANjegADY3qAA2N7AANje8ADY3wAA2N8QANjfIADY3zAA2N9QANjfcADY34AA2N+QANjfsADY38AA2OdwANjnkADY57AA2OfQANjoAADY6BAA2OggANjoMADY6EAA2OhgANjogADY6JAA2OigANjowADY6NAA2PCAANjwoADY8MAA2PDgANjxEADY8SAA2PEwANjxQADY8VAA2PFwANjxkADY8aAA2PGwANjx0ADY8eAA2PmQANj5sADY+dAA2PnwANj6IADY+jAA2PpAANj6UADY+mAA2PqAANj6oADY+rAA2PrAANj64ADY+vAA2QKgANkCwADZAuAA2QMAANkDMADZA0AA2QNQANkDYADZA3AA2QOQANkDsADZA8AA2QPQANkD8ADZBAAA2QiQANkK0ADZDUAA2Q+AANkPsADZD9AA2Q/wANkQEADZEDAA2RBQANkQYADZEJAA2RIgANkT8ADZFBAA2RQwANkUUADZFHAA2RSQANkUsADZFNAA2RagANkW0ADZFwAA2RcwANkXYADZF5AA2RfAANkX8ADZGBAA2R/AANkf4ADZIAAA2SAgANkgUADZIGAA2SBwANkggADZIJAA2SCwANkg0ADZIOAA2SDwANkhEADZISAA2SjQANko8ADZKRAA2SkwANkpYADZKXAA2SmAANkpkADZKaAA2SnAANkp4ADZKfAA2SoAANkqIADZKjAA2THgANkyAADZMiAA2TJAANkycADZMoAA2TKQANkyoADZMrAA2TLQANky8ADZMwAA2TMQANkzMADZM0AA2TrwANk7EADZO0AA2TtgANk7kADZO6AA2TuwANk7wADZO9AA2TvwANk8EADZPCAA2TwwANk8UADZPGAA2UQQANlEMADZRFAA2URwANlEoADZRLAA2UTAANlE0ADZROAA2UUAANlFIADZRTAA2UVAANlFYADZRXAA2U0gANlNQADZTWAA2U2AANlNsADZTcAA2U3QANlN4ADZTfAA2U4QANlOMADZTkAA2U5QANlOcADZToAA2VYwANlWUADZVnAA2VaQANlWwADZVtAA2VbgANlW8ADZVwAA2VcgANlXQADZV1AA2VdgANlXgADZV5AA2VigANlY8ADZWSAA2VlAANlZkADZYcAA2WQAANlmQADZaHAA2WrgANls4ADZb1AA2XHAANlzwADZdgAA2XhAANl4YADZeJAA2XiwANl40ADZePAA2XkgANl5UADZeXAA2XmQANl5wADZeeAA2XoAANl6MADZemAA2XpwANl6wADZfFAA2XygANl8wADZfRAA2X1AANl9YADZgfAA2YQwANmGoADZiOAA2YkQANmJMADZiVAA2YlwANmJkADZibAA2YnAANmJ8ADZi4AA2Y3QANmN8ADZjhAA2Y4wANmOUADZjnAA2Y6QANmOsADZjtAA2Y7wANmRQADZkXAA2ZGgANmR0ADZkgAA2ZIwANmSYADZkpAA2ZLAANmS8ADZkxAA2ZrAANma4ADZmxAA2ZswANmbYADZm3AA2ZuAANmbkADZm6AA2ZvAANmb4ADZm/AA2ZwAANmcIADZnDAA2Z1AANmdUADZnXAA2aUgANmlQADZpWAA2aWAANmlsADZpcAA2aXQANml4ADZpfAA2aYQANmmMADZpkAA2aZQANmmcADZpoAA2a4wANmuUADZroAA2a6gANmu0ADZruAA2a7wANmvAADZrxAA2a8wANmvUADZr2AA2a9wANmvkADZr6AA2bCwANmxAADZsTAA2bFQANmyYADZs3AA2bOgANmz0ADZtAAA2bQwANm0UADZthAA2bcwANm4YADZuSAA2cDQANnA8ADZwRAA2cEwANnBYADZwXAA2cGAANnBkADZwaAA2cHAANnB4ADZwfAA2cIAANnCIADZwjAA2cngANnKAADZyjAA2cpQANnKgADZypAA2cqgANnKsADZysAA2crgANnLAADZyxAA2csgANnLQADZy1AA2cxgANnMcADZzJAA2dRAANnUYADZ1IAA2dSgANnU0ADZ1OAA2dTwANnVAADZ1RAA2dUwANnVUADZ1WAA2dVwANnVkADZ1aAA2d1QANndcADZ3aAA2d3AANnd8ADZ3gAA2d4QANneIADZ3jAA2d5QANnecADZ3oAA2d6QANnesADZ3sAA2eBQANngYADZ4HAA2eCQANnoQADZ6GAA2eiAANnooADZ6NAA2ejgANno8ADZ6QAA2ekQANnpMADZ6VAA2elgANnpcADZ6ZAA2emgANnxUADZ8XAA2fGgANnxwADZ8fAA2fIAANnyEADZ8iAA2fIwANnyUADZ8nAA2fKAANnykADZ8rAA2fLAANn0QADZ9dAA2fjgANn5EADZ+UAA2flwANn5oADZ+dAA2foAANn6MADZ+mAA2fqQANn6wADZ+vAA2fsgANn+MADZ/mAA2f6QANn+wADZ/vAA2f8gANn/UADZ/4AA2f+wANn/4ADaABAA2gBAANoAcADaAJAA2gJQANoDkADaBSAA2gaQANoHwADaCUAA2grAANoMgADaDaAA2g5gANoXkADaGcAA2hvAANodwADaHeAA2h4AANoeIADaHkAA2h5wANoegADaHpAA2h7AANoe0ADaHvAA2h8AANofIADaH1AA2h9gANofcADaH6AA2h+wANogAADaIZAA2iIgANoiQADaImAA2iLwANojIADaI1AA2iNwANooAADaKkAA2iywANou8ADaLyAA2i9AANovYADaL4AA2i+gANovwADaL9AA2jAAANoxkADaM6AA2jPAANoz4ADaNAAA2jQgANo0QADaNGAA2jSAANo0oADaNrAA2jbgANo3EADaN0AA2jdwANo3oADaN9AA2jgAANo4MADaOFAA2kAAANpAIADaQEAA2kBgANpAkADaQKAA2kCwANpAwADaQNAA2kDwANpBEADaQSAA2kEwANpBUADaQWAA2kkQANpJMADaSVAA2klwANpJoADaSbAA2knAANpJ0ADaSeAA2koAANpKIADaSjAA2kpAANpKYADaSnAA2lIgANpSQADaUnAA2lKQANpSwADaUtAA2lLgANpS8ADaUwAA2lMgANpTQADaU1AA2lNgANpTgADaU5AA2lUgANpVMADaVUAA2lVgANpdEADaXTAA2l1QANpdcADaXaAA2l2wANpdwADaXdAA2l3gANpeAADaXiAA2l4wANpeQADaXmAA2l5wANpmIADaZkAA2mZgANpmgADaZrAA2mbAANpm0ADaZuAA2mbwANpnEADaZzAA2mdAANpnUADaZ3AA2meAANpvMADab1AA2m9wANpvkADab8AA2m/QANpv4ADab/AA2nAAANpwIADacEAA2nBQANpwYADacIAA2nCQANp4QADaeGAA2niAANp4oADaeNAA2njgANp48ADaeQAA2nkQANp5MADaeVAA2nlgANp5cADaeZAA2nmgANqBUADagXAA2oGQANqBsADageAA2oHwANqCAADaghAA2oIgANqCQADagmAA2oJwANqCgADagqAA2oKwANqHQADaiYAA2ovwANqOMADajmAA2o6AANqOoADajsAA2o7gANqPAADajxAA2o9AANqQ0ADakqAA2pLAANqS4ADakwAA2pMgANqTQADak2AA2pOAANqVUADalYAA2pWwANqV4ADalhAA2pZAANqWcADalqAA2pbAANqecADanpAA2p6wANqe0ADanwAA2p8QANqfIADanzAA2p9AANqfYADan4AA2p+QANqfoADan8AA2p/QANqngADap6AA2qfAANqn4ADaqBAA2qggANqoMADaqEAA2qhQANqocADaqJAA2qigANqosADaqNAA2qjgANqwkADasLAA2rDQANqw8ADasSAA2rEwANqxQADasVAA2rFgANqxgADasaAA2rGwANqxwADaseAA2rHwANq5oADaucAA2rnwANq6EADaukAA2rpQANq6YADaunAA2rqAANq6oADausAA2rrQANq64ADauwAA2rsQANrCwADawuAA2sMAANrDIADaw1AA2sNgANrDcADaw4AA2sOQANrDsADaw9AA2sPgANrD8ADaxBAA2sQgANrL0ADay/AA2swQANrMMADazGAA2sxwANrMgADazJAA2sygANrMwADazOAA2szwANrNAADazSAA2s0wANrU4ADa1QAA2tUgANrVQADa1XAA2tWAANrVkADa1aAA2tWwANrV0ADa1fAA2tYAANrWEADa1jAA2tZAANrfcADa4aAA2uOgANrloADa5cAA2uXgANrmAADa5iAA2uZQANrmYADa5nAA2uagANrmsADa5tAA2ubgANrnAADa5zAA2udAANrnUADa54AA2ueQANrn4ADa6XAA2uoAANrqIADa6kAA2urQANrrAADa6zAA2utQANrv4ADa8iAA2vSQANr20ADa9wAA2vcgANr3QADa92AA2veAANr3oADa97AA2vfgANr5cADa+4AA2vugANr7wADa++AA2vwAANr8IADa/EAA2vxgANr8gADa/pAA2v7AANr+8ADa/yAA2v9QANr/gADa/7AA2v/gANsAEADbADAA2wfgANsIAADbCCAA2whAANsIcADbCIAA2wiQANsIoADbCLAA2wjQANsI8ADbCQAA2wkQANsJMADbCUAA2xDwANsREADbETAA2xFQANsRgADbEZAA2xGgANsRsADbEcAA2xHgANsSAADbEhAA2xIgANsSQADbElAA2xoAANsaIADbGlAA2xpwANsaoADbGrAA2xrAANsa0ADbGuAA2xsAANsbIADbGzAA2xtAANsbYADbG3AA2x0AANsdEADbHSAA2x1AANsk8ADbJRAA2yUwANslUADbJYAA2yWQANsloADbJbAA2yXAANsl4ADbJgAA2yYQANsmIADbJkAA2yZQANsuAADbLiAA2y5AANsuYADbLpAA2y6gANsusADbLsAA2y7QANsu8ADbLxAA2y8gANsvMADbL1AA2y9gANs3EADbNzAA2zdQANs3cADbN6AA2zewANs3wADbN9AA2zfgANs4AADbOCAA2zgwANs4QADbOGAA2zhwANtAIADbQEAA20BgANtAgADbQLAA20DAANtA0ADbQOAA20DwANtBEADbQTAA20FAANtBUADbQXAA20GAANtJMADbSVAA20lwANtJkADbScAA20nQANtJ4ADbSfAA20oAANtKIADbSkAA20pQANtKYADbSoAA20qQANtPIADbUWAA21PQANtWEADbVkAA21ZgANtWgADbVqAA21bAANtW4ADbVvAA21cgANtYsADbWoAA21qgANtawADbWuAA21sAANtbIADbW0AA21tgANtdMADbXWAA212QANtdwADbXfAA214gANteUADbXoAA216gANtmUADbZnAA22aQANtmsADbZuAA22bwANtnAADbZxAA22cgANtnQADbZ2AA22dwANtngADbZ6AA22ewANtvYADbb4AA22+gANtvwADbb/AA23AAANtwEADbcCAA23AwANtwUADbcHAA23CAANtwkADbcLAA23DAANt4cADbeJAA23iwANt40ADbeQAA23kQANt5IADbeTAA23lAANt5YADbeYAA23mQANt5oADbecAA23nQANuBgADbgaAA24HQANuB8ADbgiAA24IwANuCQADbglAA24JgANuCgADbgqAA24KwANuCwADbguAA24LwANuKoADbisAA24rgANuLAADbizAA24tAANuLUADbi2AA24twANuLkADbi7AA24vAANuL0ADbi/AA24wAANuTsADbk9AA25PwANuUEADblEAA25RQANuUYADblHAA25SAANuUoADblMAA25TQANuU4ADblQAA25UQANucwADbnOAA250AANudIADbnVAA251gANudcADbnYAA252QANudsADbndAA253gANud8ADbnhAA254gANunUADbqYAA26uAANutgADbraAA263AANut4ADbrgAA264wANuuQADbrlAA266AANuukADbrrAA267AANuu4ADbrxAA268gANuvMADbr2AA269wANuwAADbsZAA27IgANuyQADbsmAA27LwANuzIADbs1AA27NwANu4AADbukAA27ywANu+8ADbvyAA279AANu/YADbv4AA27+gANu/wADbv9AA28AAANvBkADbw6AA28PAANvD4ADbxAAA28QgANvEQADbxGAA28SAANvEoADbxrAA28bgANvHEADbx0AA28dwANvHoADbx9AA28gAANvIMADbyFAA29AAANvQIADb0EAA29BgANvQkADb0KAA29CwANvQwADb0NAA29DwANvREADb0SAA29EwANvRUADb0WAA29kQANvZMADb2VAA29lwANvZoADb2bAA29nAANvZ0ADb2eAA29oAANvaIADb2jAA29pAANvaYADb2nAA2+IgANviQADb4nAA2+KQANviwADb4tAA2+LgANvi8ADb4wAA2+MgANvjQADb41AA2+NgANvjgADb45AA2+UgANvlMADb5UAA2+VgANvtEADb7TAA2+1QANvtcADb7aAA2+2wANvtwADb7dAA2+3gANvuAADb7iAA2+4wANvuQADb7mAA2+5wANv2IADb9kAA2/ZgANv2gADb9rAA2/bAANv20ADb9uAA2/bwANv3EADb9zAA2/dAANv3UADb93AA2/eAANv/MADb/1AA2/9wANv/kADb/8AA2//QANv/4ADb//AA3AAAANwAIADcAEAA3ABQANwAYADcAIAA3ACQANwIQADcCGAA3AiAANwIoADcCNAA3AjgANwI8ADcCQAA3AkQANwJMADcCVAA3AlgANwJcADcCZAA3AmgANwRUADcEXAA3BGQANwRsADcEeAA3BHwANwSAADcEhAA3BIgANwSQADcEmAA3BJwANwSgADcEqAA3BKwANwXQADcGYAA3BvwANweMADcHmAA3B6AANweoADcHsAA3B7gANwfAADcHxAA3B9AANwg0ADcIqAA3CLAANwi4ADcIwAA3CMgANwjQADcI2AA3COAANwlUADcJYAA3CWwANwl4ADcJhAA3CZAANwmcADcJqAA3CbAANwucADcLpAA3C6wANwu0ADcLwAA3C8QANwvIADcLzAA3C9AANwvYADcL4AA3C+QANwvoADcL8AA3C/QANw3gADcN6AA3DfAANw34ADcOBAA3DggANw4MADcOEAA3DhQANw4cADcOJAA3DigANw4sADcONAA3DjgANxAkADcQLAA3EDQANxA8ADcQSAA3EEwANxBQADcQVAA3EFgANxBgADcQaAA3EGwANxBwADcQeAA3EHwANxJoADcScAA3EngANxKAADcSjAA3EpAANxKUADcSmAA3EpwANxKkADcSrAA3ErAANxK0ADcSvAA3EsAANxSsADcUtAA3FLwANxTEADcU0AA3FNQANxTYADcU3AA3FOAANxToADcU8AA3FPQANxT4ADcVAAA3FQQANxbwADcW+AA3FwAANxcIADcXFAA3FxgANxccADcXIAA3FyQANxcsADcXNAA3FzgANxc8ADcXRAA3F0gANxk0ADcZPAA3GUQANxlMADcZWAA3GVwANxlgADcZZAA3GWgANxlwADcZeAA3GXwANxmAADcZiAA3GYwANxvYADccZAA3HOQANx1kADcdbAA3HXQANx18ADcdhAA3HZAANx2UADcdmAA3HaQANx2oADcdsAA3HbQANx28ADcdyAA3HcwANx3QADcd3AA3HeAANx30ADceWAA3HnwANx6EADcejAA3HrAANx68ADceyAA3HtAANx/0ADcghAA3ISAANyGwADchvAA3IcQANyHMADch1AA3IdwANyHkADch6AA3IfQANyJYADci3AA3IuQANyLsADci9AA3IvwANyMEADcjDAA3IxQANyMcADcjoAA3I6wANyO4ADcjxAA3I9AANyPcADcj6AA3I/QANyQAADckCAA3JfQANyX8ADcmBAA3JgwANyYYADcmHAA3JiAANyYkADcmKAA3JjAANyY4ADcmPAA3JkAANyZIADcmTAA3KDgANyhAADcoSAA3KFAANyhcADcoYAA3KGQANyhoADcobAA3KHQANyh8ADcogAA3KIQANyiMADcokAA3KnwANyqEADcqkAA3KpgANyqkADcqqAA3KqwANyqwADcqtAA3KrwANyrEADcqyAA3KswANyrUADcq2AA3KzwANytAADcrRAA3K0wANy04ADctQAA3LUgANy1QADctXAA3LWAANy1kADctaAA3LWwANy10ADctfAA3LYAANy2EADctjAA3LZAANy98ADcvhAA3L4wANy+UADcvoAA3L6QANy+oADcvrAA3L7AANy+4ADcvwAA3L8QANy/IADcv0AA3L9QANzHAADcxyAA3MdAANzHYADcx5AA3MegANzHsADcx8AA3MfQANzH8ADcyBAA3MggANzIMADcyFAA3MhgANzQEADc0DAA3NBQANzQcADc0KAA3NCwANzQwADc0NAA3NDgANzRAADc0SAA3NEwANzRQADc0WAA3NFwANzZIADc2UAA3NlgANzZgADc2bAA3NnAANzZ0ADc2eAA3NnwANzaEADc2jAA3NpAANzaUADc2nAA3NqAANzfEADc4VAA3OPAANzmAADc5jAA3OZQANzmcADc5pAA3OawANzm0ADc5uAA3OcQANzooADc6nAA3OqQANzqsADc6tAA3OrwANzrEADc6zAA3OtQANztIADc7VAA3O2AANztsADc7eAA3O4QANzuQADc7nAA3O6QANz2QADc9mAA3PaAANz2oADc9tAA3PbgANz28ADc9wAA3PcQANz3MADc91AA3PdgANz3cADc95AA3PegANz/UADc/3AA3P+QANz/sADc/+AA3P/wAN0AAADdABAA3QAgAN0AQADdAGAA3QBwAN0AgADdAKAA3QCwAN0IYADdCIAA3QigAN0IwADdCPAA3QkAAN0JEADdCSAA3QkwAN0JUADdCXAA3QmAAN0JkADdCbAA3QnAAN0RcADdEZAA3RHAAN0R4ADdEhAA3RIgAN0SMADdEkAA3RJQAN0ScADdEpAA3RKgAN0SsADdEtAA3RLgAN0akADdGrAA3RrQAN0a8ADdGyAA3RswAN0bQADdG1AA3RtgAN0bgADdG6AA3RuwAN0bwADdG+AA3RvwAN0joADdI8AA3SPgAN0kAADdJDAA3SRAAN0kUADdJGAA3SRwAN0kkADdJLAA3STAAN0k0ADdJPAA3SUAAN0ssADdLNAA3SzwAN0tEADdLUAA3S1QAN0tYADdLXAA3S2AAN0toADdLcAA3S3QAN0t4ADdLgAA3S4QAN03QADdOXAA3TtwAN09cADdPZAA3T2wAN090ADdPfAA3T4gAN0+MADdPkAA3T5wAN0+gADdPqAA3T6wAN0+0ADdPwAA3T8QAN0/IADdP1AA3T9gAN0/sADdQUAA3UHQAN1B8ADdQhAA3UKgAN1C0ADdQwAA3UMgAN1HsADdSfAA3UxgAN1OoADdTtAA3U7wAN1PEADdTzAA3U9QAN1PcADdT4AA3U+wAN1RQADdU1AA3VNwAN1TkADdU7AA3VPQAN1T8ADdVBAA3VQwAN1UUADdVmAA3VaQAN1WwADdVvAA3VcgAN1XUADdV4AA3VewAN1X4ADdWAAA3V+wAN1f0ADdX/AA3WAQAN1gQADdYFAA3WBgAN1gcADdYIAA3WCgAN1gwADdYNAA3WDgAN1hAADdYRAA3WjAAN1o4ADdaQAA3WkgAN1pUADdaWAA3WlwAN1pgADdaZAA3WmwAN1p0ADdaeAA3WnwAN1qEADdaiAA3XHQAN1x8ADdciAA3XJAAN1ycADdcoAA3XKQAN1yoADdcrAA3XLQAN1y8ADdcwAA3XMQAN1zMADdc0AA3XTQAN104ADddPAA3XUQAN18wADdfOAA3X0AAN19IADdfVAA3X1gAN19cADdfYAA3X2QAN19sADdfdAA3X3gAN198ADdfhAA3X4gAN2F0ADdhfAA3YYQAN2GMADdhmAA3YZwAN2GgADdhpAA3YagAN2GwADdhuAA3YbwAN2HAADdhyAA3YcwAN2O4ADdjwAA3Y8gAN2PQADdj3AA3Y+AAN2PkADdj6AA3Y+wAN2P0ADdj/AA3ZAAAN2QEADdkDAA3ZBAAN2X8ADdmBAA3ZgwAN2YUADdmIAA3ZiQAN2YoADdmLAA3ZjAAN2Y4ADdmQAA3ZkQAN2ZIADdmUAA3ZlQAN2hAADdoSAA3aFAAN2hYADdoZAA3aGgAN2hsADdocAA3aHQAN2h8ADdohAA3aIgAN2iMADdolAA3aJgAN2m8ADdqTAA3augAN2t4ADdrhAA3a4wAN2uUADdrnAA3a6QAN2usADdrsAA3a7wAN2wgADdslAA3bJwAN2ykADdsrAA3bLQAN2y8ADdsxAA3bMwAN21AADdtTAA3bVgAN21kADdtcAA3bXwAN22IADdtlAA3bZwAN2+IADdvkAA3b5gAN2+gADdvrAA3b7AAN2+0ADdvuAA3b7wAN2/EADdvzAA3b9AAN2/UADdv3AA3b+AAN3HMADdx1AA3cdwAN3HkADdx8AA3cfQAN3H4ADdx/AA3cgAAN3IIADdyEAA3chQAN3IYADdyIAA3ciQAN3QQADd0GAA3dCAAN3QoADd0NAA3dDgAN3Q8ADd0QAA3dEQAN3RMADd0VAA3dFgAN3RcADd0ZAA3dGgAN3ZUADd2XAA3dmQAN3ZsADd2eAA3dnwAN3aAADd2hAA3dogAN3aQADd2mAA3dpwAN3agADd2qAA3dqwAN3iYADd4oAA3eKgAN3iwADd4vAA3eMAAN3jEADd4yAA3eMwAN3jUADd43AA3eOAAN3jkADd47AA3ePAAN3rcADd65AA3euwAN3r0ADd7AAA3ewQAN3sIADd7DAA3exAAN3sYADd7IAA3eyQAN3soADd7MAA3ezQAN30gADd9KAA3fTAAN304ADd9RAA3fUgAN31MADd9UAA3fVQAN31cADd9ZAA3fWgAN31sADd9dAA3fXgAN3/EADeAUAA3gNAAN4FQADeBWAA3gWAAN4FoADeBcAA3gXwAN4GAADeBhAA3gZAAN4GUADeBnAA3gaAAN4GoADeBtAA3gbgAN4G8ADeByAA3gcwAN4HwADeCVAA3gngAN4KAADeCiAA3gqwAN4K4ADeCxAA3gswAN4PwADeEgAA3hRwAN4WsADeFuAA3hcAAN4XIADeF0AA3hdgAN4XgADeF5AA3hfAAN4ZUADeG2AA3huAAN4boADeG8AA3hvgAN4cAADeHCAA3hxAAN4cYADeHnAA3h6gAN4e0ADeHwAA3h8wAN4fYADeH5AA3h/AAN4f8ADeIBAA3ifAAN4n4ADeKAAA3iggAN4oUADeKGAA3ihwAN4ogADeKJAA3iiwAN4o0ADeKOAA3ijwAN4pEADeKSAA3jDQAN4w8ADeMRAA3jEwAN4xYADeMXAA3jGAAN4xkADeMaAA3jHAAN4x4ADeMfAA3jIAAN4yIADeMjAA3jngAN46AADeOjAA3jpQAN46gADeOpAA3jqgAN46sADeOsAA3jrgAN47AADeOxAA3jsgAN47QADeO1AA3jzgAN488ADePQAA3j0gAN5E0ADeRPAA3kUQAN5FMADeRWAA3kVwAN5FgADeRZAA3kWgAN5FwADeReAA3kXwAN5GAADeRiAA3kYwAN5N4ADeTgAA3k4gAN5OQADeTnAA3k6AAN5OkADeTqAA3k6wAN5O0ADeTvAA3k8AAN5PEADeTzAA3k9AAN5W8ADeVxAA3lcwAN5XUADeV4AA3leQAN5XoADeV7AA3lfAAN5X4ADeWAAA3lgQAN5YIADeWEAA3lhQAN5gAADeYCAA3mBAAN5gYADeYJAA3mCgAN5gsADeYMAA3mDQAN5g8ADeYRAA3mEgAN5hMADeYVAA3mFgAN5pEADeaTAA3mlQAN5pcADeaaAA3mmwAN5pwADeadAA3mngAN5qAADeaiAA3mowAN5qQADeamAA3mpwAN5vAADecUAA3nOwAN518ADediAA3nZAAN52YADedoAA3nagAN52wADedtAA3ncAAN54kADeemAA3nqAAN56oADeesAA3nrgAN57AADeeyAA3ntAAN59EADefUAA3n1wAN59oADefdAA3n4AAN5+MADefmAA3n6AAN6GMADehlAA3oZwAN6GkADehsAA3obQAN6G4ADehvAA3ocAAN6HIADeh0AA3odQAN6HYADeh4AA3oeQAN6PQADej2AA3o+AAN6PoADej9AA3o/gAN6P8ADekAAA3pAQAN6QMADekFAA3pBgAN6QcADekJAA3pCgAN6YUADemHAA3piQAN6YsADemOAA3pjwAN6ZAADemRAA3pkgAN6ZQADemWAA3plwAN6ZgADemaAA3pmwAN6hYADeoYAA3qGgAN6hwADeofAA3qIAAN6iEADeoiAA3qIwAN6iUADeonAA3qKAAN6ikADeorAA3qLAAN6qcADeqpAA3qqwAN6q0ADeqwAA3qsQAN6rIADeqzAA3qtAAN6rYADeq4AA3quQAN6roADeq8AA3qvQAN6zgADes6AA3rPAAN6z4ADetBAA3rQgAN60MADetEAA3rRQAN60cADetJAA3rSgAN60sADetNAA3rTgAN68kADevLAA3rzQAN688ADevSAA3r0wAN69QADevVAA3r1gAN69gADevaAA3r2wAN69wADeveAA3r3wAN7HIADeyVAA3stQAN7NUADezXAA3s2QAN7NsADezdAA3s4AAN7OEADeziAA3s5QAN7OYADezoAA3s6QAN7OsADezuAA3s7wAN7PAADezzAA3s9AAN7PkADe0SAA3tGwAN7R0ADe0fAA3tKAAN7SsADe0uAA3tMAAN7XkADe2dAA3txAAN7egADe3rAA3t7QAN7e8ADe3xAA3t8wAN7fUADe32AA3t+QAN7hIADe4zAA3uNQAN7jcADe45AA3uOwAN7j0ADe4/AA3uQQAN7kMADe5kAA3uZwAN7moADe5tAA3ucAAN7nMADe52AA3ueQAN7nwADe5+AA3u+QAN7vsADe79AA3u/wAN7wIADe8DAA3vBAAN7wUADe8GAA3vCAAN7woADe8LAA3vDAAN7w4ADe8PAA3vigAN74wADe+OAA3vkAAN75MADe+UAA3vlQAN75YADe+XAA3vmQAN75sADe+cAA3vnQAN758ADe+gAA3wGwAN8B0ADfAgAA3wIgAN8CUADfAmAA3wJwAN8CgADfApAA3wKwAN8C0ADfAuAA3wLwAN8DEADfAyAA3wSwAN8EwADfBNAA3wTwAN8MoADfDMAA3wzgAN8NAADfDTAA3w1AAN8NUADfDWAA3w1wAN8NkADfDbAA3w3AAN8N0ADfDfAA3w4AAN8VsADfFdAA3xXwAN8WEADfFkAA3xZQAN8WYADfFnAA3xaAAN8WoADfFsAA3xbQAN8W4ADfFwAA3xcQAN8ewADfHuAA3x8AAN8fIADfH1AA3x9gAN8fcADfH4AA3x+QAN8fsADfH9AA3x/gAN8f8ADfIBAA3yAgAN8n0ADfJ/AA3ygQAN8oMADfKGAA3yhwAN8ogADfKJAA3yigAN8owADfKOAA3yjwAN8pAADfKSAA3ykwAN8w4ADfMQAA3zEgAN8xQADfMXAA3zGAAN8xkADfMaAA3zGwAN8x0ADfMfAA3zIAAN8yEADfMjAA3zJAAN820ADfORAA3zuAAN89wADfPfAA3z4QAN8+MADfPlAA3z5wAN8+kADfPqAA3z7QAN9AYADfQjAA30JQAN9CcADfQpAA30KwAN9C0ADfQvAA30MQAN9E4ADfRRAA30VAAN9FcADfRaAA30XQAN9GAADfRjAA30ZQAN9OAADfTiAA305AAN9OYADfTpAA306gAN9OsADfTsAA307QAN9O8ADfTxAA308gAN9PMADfT1AA309gAN9XEADfVzAA31dQAN9XcADfV6AA31ewAN9XwADfV9AA31fgAN9YAADfWCAA31gwAN9YQADfWGAA31hwAN9gIADfYEAA32BgAN9ggADfYLAA32DAAN9g0ADfYOAA32DwAN9hEADfYTAA32FAAN9hUADfYXAA32GAAN9pMADfaVAA32lwAN9pkADfacAA32nQAN9p4ADfafAA32oAAN9qIADfakAA32pQAN9qYADfaoAA32qQAN9yQADfcmAA33KAAN9yoADfctAA33LgAN9y8ADfcwAA33MQAN9zMADfc1AA33NgAN9zcADfc5AA33OgAN97UADfe3AA33uQAN97sADfe+AA33vwAN98AADffBAA33wgAN98QADffGAA33xwAN98gADffKAA33ywAN+EYADfhIAA34SgAN+EwADfhPAA34UAAN+FEADfhSAA34UwAN+FUADfhXAA34WAAN+FkADfhbAA34XAAN+O8ADfkSAA35MgAN+VIADflUAA35VgAN+VgADflaAA35XQAN+V4ADflfAA35YgAN+WMADfllAA35ZgAN+WgADflrAA35bAAN+W0ADflwAA35cQAN+XYADfmPAA35mAAN+ZoADfmcAA35pQAN+agADfmrAA35rQAN+fYADfoaAA36QQAN+mUADfpoAA36agAN+mwADfpuAA36cAAN+nIADfpzAA36dgAN+o8ADfqwAA36sgAN+rQADfq2AA36uAAN+roADfq8AA36vgAN+sAADfrhAA365AAN+ucADfrqAA367QAN+vAADfrzAA369gAN+vkADfr7AA37dgAN+3gADft6AA37fAAN+38ADfuAAA37gQAN+4IADfuDAA37hQAN+4cADfuIAA37iQAN+4sADfuMAA38BwAN/AkADfwLAA38DQAN/BAADfwRAA38EgAN/BMADfwUAA38FgAN/BgADfwZAA38GgAN/BwADfwdAA38mAAN/JoADfydAA38nwAN/KIADfyjAA38pAAN/KUADfymAA38qAAN/KoADfyrAA38rAAN/K4ADfyvAA38yAAN/MkADfzKAA38zAAN/UcADf1JAA39SwAN/U0ADf1QAA39UQAN/VIADf1TAA39VAAN/VYADf1YAA39WQAN/VoADf1cAA39XQAN/dgADf3aAA393AAN/d4ADf3hAA394gAN/eMADf3kAA395QAN/ecADf3pAA396gAN/esADf3tAA397gAN/mkADf5rAA3+bQAN/m8ADf5yAA3+cwAN/nQADf51AA3+dgAN/ngADf56AA3+ewAN/nwADf5+AA3+fwAN/voADf78AA3+/gAN/wAADf8DAA3/BAAN/wUADf8GAA3/BwAN/wkADf8LAA3/DAAN/w0ADf8PAA3/EAAN/4sADf+NAA3/jwAN/5EADf+UAA3/lQAN/5YADf+XAA3/mAAN/5oADf+cAA3/nQAN/54ADf+gAA3/oQAN/+oADgAOAA4ANQAOAFkADgBcAA4AXgAOAGAADgBiAA4AZAAOAGYADgBnAA4AagAOAIMADgCgAA4AogAOAKQADgCmAA4AqAAOAKoADgCsAA4ArgAOAMsADgDOAA4A0QAOANQADgDXAA4A2gAOAN0ADgDgAA4A4gAOAV0ADgFfAA4BYQAOAWMADgFmAA4BZwAOAWgADgFpAA4BagAOAWwADgFuAA4BbwAOAXAADgFyAA4BcwAOAe4ADgHwAA4B8gAOAfQADgH3AA4B+AAOAfkADgH6AA4B+wAOAf0ADgH/AA4CAAAOAgEADgIDAA4CBAAOAn8ADgKBAA4CgwAOAoUADgKIAA4CiQAOAooADgKLAA4CjAAOAo4ADgKQAA4CkQAOApIADgKUAA4ClQAOAxAADgMSAA4DFQAOAxcADgMaAA4DGwAOAxwADgMdAA4DHgAOAyAADgMiAA4DIwAOAyQADgMmAA4DJwAOA6IADgOkAA4DpgAOA6gADgOrAA4DrAAOA60ADgOuAA4DrwAOA7EADgOzAA4DtAAOA7UADgO3AA4DuAAOBDMADgQ1AA4ENwAOBDkADgQ8AA4EPQAOBD4ADgQ/AA4EQAAOBEIADgREAA4ERQAOBEYADgRIAA4ESQAOBMQADgTGAA4EyAAOBMoADgTNAA4EzgAOBM8ADgTQAA4E0QAOBNMADgTVAA4E1gAOBNcADgTZAA4E2gAOBW0ADgWQAA4FsAAOBdAADgXSAA4F1AAOBdYADgXYAA4F2wAOBdwADgXdAA4F4AAOBeEADgXjAA4F5AAOBecADgXqAA4F6wAOBewADgXvAA4F8AAOBfUADgYOAA4GFwAOBhkADgYcAA4GJQAOBigADgYrAA4GLQAOBnYADgaaAA4GwQAOBuUADgboAA4G6gAOBuwADgbuAA4G8AAOBvIADgbzAA4G9gAOBw8ADgcwAA4HMgAOBzQADgc2AA4HOAAOBzoADgc8AA4HPgAOB0AADgdhAA4HZAAOB2cADgdqAA4HbQAOB3AADgdzAA4HdgAOB3kADgd7AA4H9gAOB/gADgf6AA4H/AAOB/8ADggAAA4IAQAOCAIADggDAA4IBQAOCAcADggIAA4ICQAOCAsADggMAA4IhwAOCIkADgiLAA4IjQAOCJAADgiRAA4IkgAOCJMADgiUAA4IlgAOCJgADgiZAA4ImgAOCJwADgidAA4JGAAOCRoADgkdAA4JHwAOCSIADgkjAA4JJAAOCSUADgkmAA4JKAAOCSoADgkrAA4JLAAOCS4ADgkvAA4JSAAOCUkADglKAA4JTAAOCccADgnJAA4JywAOCc0ADgnQAA4J0QAOCdIADgnTAA4J1AAOCdYADgnYAA4J2QAOCdoADgncAA4J3QAOClgADgpaAA4KXAAOCl4ADgphAA4KYgAOCmMADgpkAA4KZQAOCmcADgppAA4KagAOCmsADgptAA4KbgAOCukADgrrAA4K7QAOCu8ADgryAA4K8wAOCvQADgr1AA4K9gAOCvgADgr6AA4K+wAOCvwADgr+AA4K/wAOC3oADgt8AA4LfgAOC4AADguDAA4LhAAOC4UADguGAA4LhwAOC4kADguLAA4LjAAOC40ADguPAA4LkAAODAsADgwNAA4MDwAODBEADgwUAA4MFQAODBYADgwXAA4MGAAODBoADgwcAA4MHQAODB4ADgwgAA4MIQAODGoADgyOAA4MtQAODNkADgzcAA4M3wAODOEADgzjAA4M5QAODOcADgzoAA4M6wAODQQADg0hAA4NJAAODScADg0qAA4NLQAODTAADg0zAA4NNgAODVMADg1WAA4NWQAODVwADg1fAA4NYgAODWUADg1oAA4NagAODeUADg3nAA4N6gAODewADg3vAA4N8AAODfEADg3yAA4N8wAODfUADg34AA4N+QAODfoADg38AA4N/QAODngADg56AA4OfQAODn8ADg6CAA4OgwAODoQADg6FAA4OhgAODogADg6LAA4OjAAODo0ADg6PAA4OkAAODwsADg8NAA4PEAAODxIADg8VAA4PFgAODxcADg8YAA4PGQAODxsADg8eAA4PHwAODyAADg8iAA4PIwAOD54ADg+gAA4PowAOD6UADg+oAA4PqQAOD6oADg+rAA4PrAAOD64ADg+xAA4PsgAOD7MADg+1AA4PtgAOEDkADhBdAA4QgQAOEKQADhDLAA4Q6wAOERIADhE5AA4RWQAOEX0ADhGhAA4RowAOEaYADhGoAA4RqgAOEawADhGvAA4RsgAOEbQADhG2AA4RuQAOEbsADhG9AA4RwAAOEcMADhHEAA4RyQAOEeIADhHnAA4R6QAOEe4ADhHxAA4R8wAOEjwADhJgAA4ShwAOEqsADhKuAA4SsAAOErIADhK0AA4StgAOErgADhK5AA4SvAAOEtUADhL6AA4S/AAOEv4ADhMAAA4TAgAOEwQADhMGAA4TCAAOEwoADhMMAA4TMQAOEzQADhM3AA4TOgAOEz0ADhNAAA4TQwAOE0YADhNJAA4TTAAOE04ADhPJAA4TywAOE84ADhPQAA4T0wAOE9QADhPVAA4T1gAOE9cADhPZAA4T2wAOE9wADhPdAA4T3wAOE+AADhPxAA4T8gAOE/QADhRvAA4UcQAOFHMADhR1AA4UeAAOFHkADhR6AA4UewAOFHwADhR+AA4UgAAOFIEADhSCAA4UhAAOFIUADhUAAA4VAgAOFQUADhUHAA4VCgAOFQsADhUMAA4VDQAOFQ4ADhUQAA4VEgAOFRMADhUUAA4VFgAOFRcADhUoAA4VLQAOFTAADhUyAA4VQwAOFVAADhVTAA4VVgAOFVkADhVbAA4VdwAOFYkADhWcAA4WFwAOFhkADhYbAA4WHQAOFiAADhYhAA4WIgAOFiMADhYkAA4WJgAOFigADhYpAA4WKgAOFiwADhYtAA4WqAAOFqoADhatAA4WrwAOFrIADhazAA4WtAAOFrUADha2AA4WuAAOFroADha7AA4WvAAOFr4ADha/AA4W0AAOFtEADhbTAA4XTgAOF1AADhdSAA4XVAAOF1cADhdYAA4XWQAOF1oADhdbAA4XXQAOF18ADhdgAA4XYQAOF2MADhdkAA4X3wAOF+EADhfkAA4X5gAOF+kADhfqAA4X6wAOF+wADhftAA4X7wAOF/EADhfyAA4X8wAOF/UADhf2AA4YDwAOGBAADhgRAA4YEwAOGI4ADhiQAA4YkgAOGJQADhiXAA4YmAAOGJkADhiaAA4YmwAOGJ0ADhifAA4YoAAOGKEADhijAA4YpAAOGR8ADhkhAA4ZJAAOGSYADhkpAA4ZKgAOGSsADhksAA4ZLQAOGS8ADhkxAA4ZMgAOGTMADhk1AA4ZNgAOGUkADhliAA4ZjwAOGZIADhmVAA4ZmAAOGZsADhmeAA4ZoQAOGaQADhmnAA4ZqgAOGa0ADhmwAA4Z3QAOGeAADhnjAA4Z5gAOGekADhnsAA4Z7wAOGfIADhn1AA4Z+AAOGfsADhn+AA4aAAAOGhwADhovAA4aQQAOGlMADhpbAA4afwAOGpsADhquAA4bQQAOG2QADhuEAA4bpAAOG6YADhuoAA4bqgAOG6wADhuvAA4bsAAOG7EADhu0AA4btQAOG7cADhu4AA4bugAOG70ADhu+AA4bvwAOG8IADhvDAA4byAAOG+EADhvqAA4b7AAOG+4ADhv3AA4b+gAOG/0ADhv/AA4cSAAOHGwADhyTAA4ctwAOHLoADhy8AA4cvgAOHMAADhzCAA4cxAAOHMUADhzIAA4c4QAOHQIADh0EAA4dBgAOHQgADh0KAA4dDAAOHQ4ADh0QAA4dEgAOHTMADh02AA4dOQAOHTwADh0/AA4dQgAOHUUADh1IAA4dSwAOHU0ADh3IAA4dygAOHcwADh3OAA4d0QAOHdIADh3TAA4d1AAOHdUADh3XAA4d2QAOHdoADh3bAA4d3QAOHd4ADh5ZAA4eWwAOHl0ADh5fAA4eYgAOHmMADh5kAA4eZQAOHmYADh5oAA4eagAOHmsADh5sAA4ebgAOHm8ADh7qAA4e7AAOHu8ADh7xAA4e9AAOHvUADh72AA4e9wAOHvgADh76AA4e/AAOHv0ADh7+AA4fAAAOHwEADh8aAA4fGwAOHxwADh8eAA4fmQAOH5sADh+dAA4fnwAOH6IADh+jAA4fpAAOH6UADh+mAA4fqAAOH6oADh+rAA4frAAOH64ADh+vAA4gKgAOICwADiAuAA4gMAAOIDMADiA0AA4gNQAOIDYADiA3AA4gOQAOIDsADiA8AA4gPQAOID8ADiBAAA4guwAOIL0ADiC/AA4gwQAOIMQADiDFAA4gxgAOIMcADiDIAA4gygAOIMwADiDNAA4gzgAOINAADiDRAA4hTAAOIU4ADiFQAA4hUgAOIVUADiFWAA4hVwAOIVgADiFZAA4hWwAOIV0ADiFeAA4hXwAOIWEADiFiAA4h3QAOId8ADiHhAA4h4wAOIeYADiHnAA4h6AAOIekADiHqAA4h7AAOIe4ADiHvAA4h8AAOIfIADiHzAA4iPAAOImAADiKHAA4iqwAOIq4ADiKwAA4isgAOIrQADiK2AA4iuAAOIrkADiK8AA4i1QAOIvIADiL0AA4i9gAOIvgADiL6AA4i/AAOIv4ADiMAAA4jHQAOIyAADiMjAA4jJgAOIykADiMsAA4jLwAOIzIADiM0AA4jrwAOI7EADiO0AA4jtgAOI7kADiO6AA4juwAOI7wADiO9AA4jvwAOI8EADiPCAA4jwwAOI8UADiPGAA4kQQAOJEMADiRFAA4kRwAOJEoADiRLAA4kTAAOJE0ADiROAA4kUAAOJFIADiRTAA4kVAAOJFYADiRXAA4k0gAOJNQADiTWAA4k2AAOJNsADiTcAA4k3QAOJN4ADiTfAA4k4QAOJOMADiTkAA4k5QAOJOcADiToAA4lYwAOJWUADiVoAA4lagAOJW0ADiVuAA4lbwAOJXAADiVxAA4lcwAOJXUADiV2AA4ldwAOJXkADiV6AA4l9QAOJfcADiX5AA4l+wAOJf4ADiX/AA4mAAAOJgEADiYCAA4mBAAOJgYADiYHAA4mCAAOJgoADiYLAA4mhgAOJogADiaKAA4mjAAOJo8ADiaQAA4mkQAOJpIADiaTAA4mlQAOJpcADiaYAA4mmQAOJpsADiacAA4nFwAOJxkADicbAA4nHQAOJyAADichAA4nIgAOJyMADickAA4nJgAOJygADicpAA4nKgAOJywADictAA4nwAAOJ+MADigDAA4oIwAOKCUADignAA4oKQAOKCsADiguAA4oLwAOKDAADigzAA4oNAAOKDYADig3AA4oOQAOKDwADig9AA4oPgAOKEEADihCAA4oRwAOKGAADihpAA4oawAOKG0ADih2AA4oeQAOKHwADih+AA4oxwAOKOsADikSAA4pNgAOKTkADik7AA4pPQAOKT8ADilBAA4pQwAOKUQADilHAA4pYAAOKYEADimDAA4phQAOKYcADimJAA4piwAOKY0ADimPAA4pkQAOKbIADim1AA4puAAOKbsADim+AA4pwQAOKcQADinHAA4pygAOKcwADipHAA4qSQAOKksADipNAA4qUAAOKlEADipSAA4qUwAOKlQADipWAA4qWAAOKlkADipaAA4qXAAOKl0ADirYAA4q2gAOKtwADireAA4q4QAOKuIADirjAA4q5AAOKuUADirnAA4q6QAOKuoADirrAA4q7QAOKu4ADitpAA4rawAOK24ADitwAA4rcwAOK3QADit1AA4rdgAOK3cADit5AA4rewAOK3wADit9AA4rfwAOK4AADiuZAA4rmgAOK5sADiudAA4sGAAOLBoADiwcAA4sHgAOLCEADiwiAA4sIwAOLCQADiwlAA4sJwAOLCkADiwqAA4sKwAOLC0ADiwuAA4sqQAOLKsADiytAA4srwAOLLIADiyzAA4stAAOLLUADiy2AA4suAAOLLoADiy7AA4svAAOLL4ADiy/AA4tOgAOLTwADi0+AA4tQAAOLUMADi1EAA4tRQAOLUYADi1HAA4tSQAOLUsADi1MAA4tTQAOLU8ADi1QAA4tywAOLc0ADi3PAA4t0QAOLdQADi3VAA4t1gAOLdcADi3YAA4t2gAOLdwADi3dAA4t3gAOLeAADi3hAA4uXAAOLl4ADi5gAA4uYgAOLmUADi5mAA4uZwAOLmgADi5pAA4uawAOLm0ADi5uAA4ubwAOLnEADi5yAA4uuwAOLt8ADi8GAA4vKgAOLy0ADi8vAA4vMQAOLzMADi81AA4vNwAOLzgADi87AA4vVAAOL3EADi9zAA4vdQAOL3cADi95AA4vewAOL30ADi9/AA4vnAAOL58ADi+iAA4vpQAOL6gADi+rAA4vrgAOL7EADi+zAA4wLgAOMDAADjAyAA4wNAAOMDcADjA4AA4wOQAOMDoADjA7AA4wPQAOMD8ADjBAAA4wQQAOMEMADjBEAA4wvwAOMMEADjDDAA4wxQAOMMgADjDJAA4wygAOMMsADjDMAA4wzgAOMNAADjDRAA4w0gAOMNQADjDVAA4xUAAOMVIADjFUAA4xVgAOMVkADjFaAA4xWwAOMVwADjFdAA4xXwAOMWEADjFiAA4xYwAOMWUADjFmAA4x4QAOMeMADjHlAA4x5wAOMeoADjHrAA4x7AAOMe0ADjHuAA4x8AAOMfIADjHzAA4x9AAOMfYADjH3AA4ycgAOMnQADjJ2AA4yeAAOMnsADjJ8AA4yfQAOMn4ADjJ/AA4ygQAOMoMADjKEAA4yhQAOMocADjKIAA4zAwAOMwUADjMHAA4zCQAOMwwADjMNAA4zDgAOMw8ADjMQAA4zEgAOMxQADjMVAA4zFgAOMxgADjMZAA4zlAAOM5YADjOYAA4zmgAOM50ADjOeAA4znwAOM6AADjOhAA4zowAOM6UADjOmAA4zpwAOM6kADjOqAA40PQAONGAADjSAAA40oAAONKIADjSkAA40pgAONKgADjSrAA40rAAONK0ADjSwAA40sQAONLMADjS0AA40tgAONLkADjS6AA40uwAONL4ADjS/AA40xAAONN0ADjTmAA406AAONOoADjTzAA409gAONPkADjT7AA41RAAONWgADjWPAA41swAONbYADjW4AA41ugAONbwADjW+AA41wAAONcEADjXEAA413QAONf4ADjYAAA42AgAONgQADjYGAA42CAAONgoADjYMAA42DgAONi8ADjYyAA42NQAONjgADjY7AA42PgAONkEADjZEAA42RwAONkkADjbEAA42xgAONsgADjbKAA42zQAONs4ADjbPAA420AAONtEADjbTAA421QAONtYADjbXAA422QAONtoADjdVAA43VwAON1kADjdbAA43XgAON18ADjdgAA43YQAON2IADjdkAA43ZgAON2cADjdoAA43agAON2sADjfmAA436AAON+sADjftAA438AAON/EADjfyAA438wAON/QADjf2AA43+AAON/kADjf6AA43/AAON/0ADjgWAA44FwAOOBgADjgaAA44lQAOOJcADjiZAA44mwAOOJ4ADjifAA44oAAOOKEADjiiAA44pAAOOKYADjinAA44qAAOOKoADjirAA45JgAOOSgADjkqAA45LAAOOS8ADjkwAA45MQAOOTIADjkzAA45NQAOOTcADjk4AA45OQAOOTsADjk8AA45twAOObkADjm7AA45vQAOOcAADjnBAA45wgAOOcMADjnEAA45xgAOOcgADjnJAA45ygAOOcwADjnNAA46SAAOOkoADjpMAA46TgAOOlEADjpSAA46UwAOOlQADjpVAA46VwAOOlkADjpaAA46WwAOOl0ADjpeAA462QAOOtsADjrdAA463wAOOuIADjrjAA465AAOOuUADjrmAA466AAOOuoADjrrAA467AAOOu4ADjrvAA47OAAOO1wADjuDAA47pwAOO6oADjusAA47rgAOO7AADjuyAA47tAAOO7UADju4AA470QAOO+4ADjvwAA478gAOO/QADjv2AA47+AAOO/oADjv8AA48GQAOPBwADjwfAA48IgAOPCUADjwoAA48KwAOPC4ADjwwAA48qwAOPK0ADjyvAA48sQAOPLQADjy1AA48tgAOPLcADjy4AA48ugAOPLwADjy9AA48vgAOPMAADjzBAA49PAAOPT4ADj1AAA49QgAOPUUADj1GAA49RwAOPUgADj1JAA49SwAOPU0ADj1OAA49TwAOPVEADj1SAA49zQAOPc8ADj3RAA490wAOPdYADj3XAA492AAOPdkADj3aAA493AAOPd4ADj3fAA494AAOPeIADj3jAA4+XgAOPmAADj5jAA4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P7AAOT+0ADk/uAA5P8AAOT/EADlBsAA5QbgAOUHAADlByAA5QdQAOUHYADlB3AA5QeAAOUHkADlB7AA5QfQAOUH4ADlB/AA5QgQAOUIIADlD9AA5Q/wAOUQIADlEEAA5RBwAOUQgADlEJAA5RCgAOUQsADlENAA5RDwAOURAADlERAA5REwAOURQADlEtAA5RLgAOUS8ADlExAA5RrAAOUa4ADlGwAA5RsgAOUbUADlG2AA5RtwAOUbgADlG5AA5RuwAOUb0ADlG+AA5RvwAOUcEADlHCAA5SPQAOUj8ADlJBAA5SQwAOUkYADlJHAA5SSAAOUkkADlJKAA5STAAOUk4ADlJPAA5SUAAOUlIADlJTAA5SzgAOUtAADlLSAA5S1AAOUtcADlLYAA5S2QAOUtoADlLbAA5S3QAOUt8ADlLgAA5S4QAOUuMADlLkAA5TXwAOU2EADlNjAA5TZQAOU2gADlNpAA5TagAOU2sADlNsAA5TbgAOU3AADlNxAA5TcgAOU3QADlN1AA5T8AAOU/IADlP0AA5T9gAOU/kADlP6AA5T+wAOU/wADlP9AA5T/wAOVAEADlQCAA5UAwAOVAUADlQGAA5UTwAOVHMADlSaAA5UvgAOVMEADlTEAA5UxgAOVMgADlTKAA5UzAAOVM0ADlTQAA5U6QAOVQYADlUJAA5VDAAOVQ8ADlUSAA5VFQAOVRgADlUbAA5VOAAOVTsADlU+AA5VQQAOVUQADlVHAA5VSgAOVU0ADlVPAA5VygAOVcwADlXPAA5V0QAOVdQADlXVAA5V1gAOVdcADlXYAA5V2gAOVd0ADlXeAA5V3wAOVeEADlXiAA5WXQAOVl8ADlZiAA5WZAAOVmcADlZoAA5WaQAOVmoADlZrAA5WbQAOVnAADlZxAA5WcgAOVnQADlZ1AA5W8AAOVvIADlb1AA5W9wAOVvoADlb7AA5W/AAOVv0ADlb+AA5XAAAOVwMADlcEAA5XBQAOVwcADlcIAA5XgwAOV4UADleIAA5XigAOV40ADleOAA5XjwAOV5AADleRAA5XkwAOV5YADleXAA5XmAAOV5oADlebAA5YHgAOWEIADlhmAA5YiQAOWLAADljQAA5Y9wAOWR4ADlk+AA5ZYgAOWYYADlmIAA5ZiwAOWY0ADlmPAA5ZkQAOWZQADlmXAA5ZmQAOWZsADlmeAA5ZoAAOWaIADlmlAA5ZqAAOWakADlmuAA5ZxwAOWcwADlnOAA5Z0wAOWdYADlnYAA5aIQAOWkUADlpsAA5akAAOWpMADlqVAA5alwAOWpkADlqbAA5anQAOWp4ADlqhAA5augAOWt8ADlrhAA5a4wAOWuUADlrnAA5a6QAOWusADlrtAA5a7wAOWvEADlsWAA5bGQAOWxwADlsfAA5bIgAOWyUADlsoAA5bKwAOWy4ADlsxAA5bMwAOW64ADluwAA5bswAOW7UADlu4AA5buQAOW7oADlu7AA5bvAAOW74ADlvAAA5bwQAOW8IADlvEAA5bxQAOW9YADlvXAA5b2QAOXFQADlxWAA5cWAAOXFoADlxdAA5cXgAOXF8ADlxgAA5cYQAOXGMADlxlAA5cZgAOXGcADlxpAA5cagAOXOUADlznAA5c6gAOXOwADlzvAA5c8AAOXPEADlzyAA5c8wAOXPUADlz3AA5c+AAOXPkADlz7AA5c/AAOXQ0ADl0SAA5dFQAOXRcADl0oAA5dLQAOXTAADl0yAA5dQAAOXbsADl29AA5dvwAOXcEADl3EAA5dxQAOXcYADl3HAA5dyAAOXcoADl3MAA5dzQAOXc4ADl3QAA5d0QAOXkwADl5OAA5eUQAOXlMADl5WAA5eVwAOXlgADl5ZAA5eWgAOXlwADl5eAA5eXwAOXmAADl5iAA5eYwAOXnQADl51AA5edwAOXvIADl70AA5e9gAOXvgADl77AA5e/AAOXv0ADl7+AA5e/wAOXwEADl8DAA5fBAAOXwUADl8HAA5fCAAOX4MADl+FAA5fiAAOX4oADl+NAA5fjgAOX48ADl+QAA5fkQAOX5MADl+VAA5flgAOX5cADl+ZAA5fmgAOX7MADl+0AA5ftQAOX7cADmAyAA5gNAAOYDYADmA4AA5gOwAOYDwADmA9AA5gPgAOYD8ADmBBAA5gQwAOYEQADmBFAA5gRwAOYEgADmDDAA5gxQAOYMgADmDKAA5gzQAOYM4ADmDPAA5g0AAOYNEADmDTAA5g1QAOYNYADmDXAA5g2QAOYNoADmD0AA5hDQAOYR4ADmEhAA5hJAAOYScADmEqAA5hOwAOYT4ADmFBAA5hRAAOYUcADmFJAA5hVAAOYWIADmH1AA5iGAAOYjgADmJYAA5iWgAOYlwADmJeAA5iYAAOYmMADmJkAA5iZQAOYmgADmJpAA5iawAOYmwADmJvAA5icgAOYnMADmJ0AA5idwAOYngADmJ9AA5ilgAOYp8ADmKhAA5ipAAOYq0ADmKwAA5iswAOYrUADmL+AA5jIgAOY0kADmNtAA5jcAAOY3IADmN0AA5jdgAOY3gADmN6AA5jewAOY34ADmOXAA5juAAOY7oADmO8AA5jvgAOY8AADmPCAA5jxAAOY8YADmPIAA5j6QAOY+wADmPvAA5j8gAOY/UADmP4AA5j+wAOY/4ADmQBAA5kAwAOZH4ADmSAAA5kggAOZIQADmSHAA5kiAAOZIkADmSKAA5kiwAOZI0ADmSPAA5kkAAOZJEADmSTAA5klAAOZQ8ADmURAA5lEwAOZRUADmUYAA5lGQAOZRoADmUbAA5lHAAOZR4ADmUgAA5lIQAOZSIADmUkAA5lJQAOZaAADmWiAA5lpQAOZacADmWqAA5lqwAOZawADmWtAA5lrgAOZbAADmWyAA5lswAOZbQADmW2AA5ltwAOZdAADmXRAA5l0gAOZdQADmZPAA5mUQAOZlMADmZVAA5mWAAOZlkADmZaAA5mWwAOZlwADmZeAA5mYAAOZmEADmZiAA5mZAAOZmUADmbgAA5m4gAOZuQADmbmAA5m6QAOZuoADmbrAA5m7AAOZu0ADmbvAA5m8QAOZvIADmbzAA5m9QAOZvYADmdxAA5ncwAOZ3UADmd3AA5negAOZ3sADmd8AA5nfQAOZ34ADmeAAA5nggAOZ4MADmeEAA5nhgAOZ4cADmgCAA5oBAAOaAYADmgIAA5oCwAOaAwADmgNAA5oDgAOaA8ADmgRAA5oEwAOaBQADmgVAA5oFwAOaBgADmiTAA5olQAOaJcADmiZAA5onAAOaJ0ADmieAA5onwAOaKAADmiiAA5opAAOaKUADmimAA5oqAAOaKkADmjyAA5pFgAOaT0ADmlhAA5pZAAOaWcADmlpAA5pawAOaW0ADmlvAA5pcAAOaXMADmmMAA5pqQAOaawADmmvAA5psgAOabUADmm4AA5puwAOab4ADmnbAA5p3gAOaeEADmnkAA5p5wAOaeoADmntAA5p8AAOafIADmptAA5qbwAOanIADmp0AA5qdwAOangADmp5AA5qegAOansADmp9AA5qgAAOaoEADmqCAA5qhAAOaoUADmsAAA5rAgAOawUADmsHAA5rCgAOawsADmsMAA5rDQAOaw4ADmsQAA5rEwAOaxQADmsVAA5rFwAOaxgADmuTAA5rlQAOa5gADmuaAA5rnQAOa54ADmufAA5roAAOa6EADmujAA5rpgAOa6cADmuoAA5rqgAOa6sADmwmAA5sKAAObCsADmwtAA5sMAAObDEADmwyAA5sMwAObDQADmw2AA5sOQAObDoADmw7AA5sPQAObD4ADmy5AA5suwAObL0ADmy/AA5swgAObMMADmzEAA5sxQAObMYADmzIAA5sywAObMwADmzNAA5szwAObNAADm1LAA5tTQAObU8ADm1RAA5tVAAObVUADm1WAA5tVwAObVgADm1aAA5tXQAObV4ADm1fAA5tYQAObWIADm3dAA5t3wAObeIADm3kAA5t5wAObegADm3pAA5t6gAObesADm3tAA5t8AAObfEADm3yAA5t9AAObfUADm6IAA5uqwAObssADm7rAA5u7QAObu8ADm7xAA5u8wAObvYADm73AA5u+AAObvsADm78AA5u/gAObv8ADm8BAA5vBAAObwUADm8GAA5vCQAObwoADm8PAA5vKAAObzEADm8zAA5vNQAObz4ADm9BAA5vRAAOb0YADm+PAA5vswAOb9oADm/+AA5wAQAOcAMADnAFAA5wBwAOcAkADnALAA5wDAAOcA8ADnAoAA5wSQAOcEsADnBNAA5wTwAOcFEADnBTAA5wVQAOcFcADnBZAA5wegAOcH0ADnCAAA5wgwAOcIYADnCJAA5wjAAOcI8ADnCSAA5wlAAOcQ8ADnERAA5xEwAOcRUADnEYAA5xGQAOcRoADnEbAA5xHAAOcR4ADnEgAA5xIQAOcSIADnEkAA5xJQAOcaAADnGiAA5xpAAOcaYADnGpAA5xqgAOcasADnGsAA5xrQAOca8ADnGxAA5xsgAOcbMADnG1AA5xtgAOcjEADnIzAA5yNgAOcjgADnI7AA5yPAAOcj0ADnI+AA5yPwAOckEADnJDAA5yRAAOckUADnJHAA5ySAAOcmEADnJiAA5yYwAOcmUADnLgAA5y4gAOcuQADnLmAA5y6QAOcuoADnLrAA5y7AAOcu0ADnLvAA5y8QAOcvIADnLzAA5y9QAOcvYADnNxAA5zcwAOc3UADnN3AA5zegAOc3sADnN8AA5zfQAOc34ADnOAAA5zggAOc4MADnOEAA5zhgAOc4cADnQCAA50BAAOdAYADnQIAA50CwAOdAwADnQNAA50DgAOdA8ADnQRAA50EwAOdBQADnQVAA50FwAOdBgADnSTAA50lQAOdJcADnSZAA50nAAOdJ0ADnSeAA50nwAOdKAADnSiAA50pAAOdKUADnSmAA50qAAOdKkADnUkAA51JgAOdSgADnUqAA51LQAOdS4ADnUvAA51MAAOdTEADnUzAA51NQAOdTYADnU3AA51OQAOdToADnWDAA51pwAOdc4ADnXyAA519QAOdfcADnX5AA51+wAOdf0ADnX/AA52AAAOdgMADnYcAA52OQAOdjsADnY9AA52PwAOdkEADnZDAA52RQAOdkcADnZkAA52ZwAOdmoADnZtAA52cAAOdnMADnZ2AA52eQAOdnsADnb2AA52+AAOdvoADnb8AA52/wAOdwAADncBAA53AgAOdwMADncFAA53BwAOdwgADncJAA53CwAOdwwADneHAA53iQAOd4sADneNAA53kAAOd5EADneSAA53kwAOd5QADneWAA53mAAOd5kADneaAA53nAAOd50ADngYAA54GgAOeBwADngeAA54IQAOeCIADngjAA54JAAOeCUADngnAA54KQAOeCoADngrAA54LQAOeC4ADnipAA54qwAOeK4ADniwAA54swAOeLQADni1AA54tgAOeLcADni5AA54uwAOeLwADni9AA54vwAOeMAADnk7AA55PQAOeT8ADnlBAA55RAAOeUUADnlGAA55RwAOeUgADnlKAA55TAAOeU0ADnlOAA55UAAOeVEADnnMAA55zgAOedAADnnSAA551QAOedYADnnXAA552AAOedkADnnbAA553QAOed4ADnnfAA554QAOeeIADnpdAA56XwAOemEADnpjAA56ZgAOemcADnpoAA56aQAOemoADnpsAA56bgAOem8ADnpwAA56cgAOenMADnsGAA57KQAOe0kADntpAA57awAOe20ADntvAA57cQAOe3QADnt1AA57dgAOe3kADnt6AA57fAAOe30ADnt/AA57ggAOe4MADnuEAA57hwAOe4gADnuNAA57pgAOe68ADnuxAA57swAOe7wADnu/AA57wgAOe8QADnwNAA58MQAOfFgADnx8AA58fwAOfIEADnyDAA58hQAOfIcADnyJAA58igAOfI0ADnymAA58xwAOfMkADnzLAA58zQAOfM8ADnzRAA580wAOfNUADnzXAA58+AAOfPsADnz+AA59AQAOfQQADn0HAA59CgAOfQ0ADn0QAA59EgAOfY0ADn2PAA59kQAOfZMADn2WAA59lwAOfZgADn2ZAA59mgAOfZwADn2eAA59nwAOfaAADn2iAA59owAOfh4ADn4gAA5+IgAOfiQADn4nAA5+KAAOfikADn4qAA5+KwAOfi0ADn4vAA5+MAAOfjEADn4zAA5+NAAOfq8ADn6xAA5+tAAOfrYADn65AA5+ugAOfrsADn68AA5+vQAOfr8ADn7BAA5+wgAOfsMADn7FAA5+xgAOft8ADn7gAA5+4QAOfuMADn9eAA5/YAAOf2IADn9kAA5/ZwAOf2gADn9pAA5/agAOf2sADn9tAA5/bwAOf3AADn9xAA5/cwAOf3QADn/vAA5/8QAOf/MADn/1AA5/+AAOf/kADn/6AA5/+wAOf/wADn/+AA6AAAAOgAEADoACAA6ABAAOgAUADoCAAA6AggAOgIQADoCGAA6AiQAOgIoADoCLAA6AjAAOgI0ADoCPAA6AkQAOgJIADoCTAA6AlQAOgJYADoERAA6BEwAOgRUADoEXAA6BGgAOgRsADoEcAA6BHQAOgR4ADoEgAA6BIgAOgSMADoEkAA6BJgAOgScADoGiAA6BpAAOgaYADoGoAA6BqwAOgawADoGtAA6BrgAOga8ADoGxAA6BswAOgbQADoG1AA6BtwAOgbgADoIBAA6CJQAOgkwADoJwAA6CcwAOgnUADoJ3AA6CeQAOgnsADoJ9AA6CfgAOgoEADoKaAA6CtwAOgrkADoK7AA6CvQAOgr8ADoLBAA6CwwAOgsUADoLiAA6C5QAOgugADoLrAA6C7gAOgvEADoL0AA6C9wAOgvkADoN0AA6DdgAOg3gADoN6AA6DfQAOg34ADoN/AA6DgAAOg4EADoODAA6DhQAOg4YADoOHAA6DiQAOg4oADoQFAA6EBwAOhAkADoQLAA6EDgAOhA8ADoQQAA6EEQAOhBIADoQUAA6EFgAOhBcADoQYAA6EGgAOhBsADoSWAA6EmAAOhJoADoScAA6EnwAOhKAADoShAA6EogAOhKMADoSlAA6EpwAOhKgADoSpAA6EqwAOhKwADoUnAA6FKQAOhSsADoUtAA6FMAAOhTEADoUyAA6FMwAOhTQADoU2AA6FOAAOhTkADoU6AA6FPAAOhT0ADoW4AA6FugAOhbwADoW+AA6FwQAOhcIADoXDAA6FxAAOhcUADoXHAA6FyQAOhcoADoXLAA6FzQAOhc4ADoZJAA6GSwAOhk0ADoZPAA6GUgAOhlMADoZUAA6GVQAOhlYADoZYAA6GWgAOhlsADoZcAA6GXgAOhl8ADobaAA6G3AAOht4ADobgAA6G4wAOhuQADoblAA6G5gAOhucADobpAA6G6wAOhuwADobtAA6G7wAOhvAADoeDAA6HpgAOh8YADofmAA6H6AAOh+oADofsAA6H7gAOh/EADofyAA6H8wAOh/YADof3AA6H+QAOh/oADof8AA6H/wAOiAAADogBAA6IBAAOiAUADogKAA6IIwAOiCwADoguAA6IMAAOiDkADog8AA6IPwAOiEEADoiKAA6IrgAOiNUADoj5AA6I/AAOiP4ADokAAA6JAgAOiQQADokGAA6JBwAOiQoADokjAA6JRAAOiUYADolIAA6JSgAOiUwADolOAA6JUAAOiVIADolUAA6JdQAOiXgADol7AA6JfgAOiYEADomEAA6JhwAOiYoADomNAA6JjwAOigoADooMAA6KDgAOihAADooTAA6KFAAOihUADooWAA6KFwAOihkADoobAA6KHAAOih0ADoofAA6KIAAOipsADoqdAA6KnwAOiqEADoqkAA6KpQAOiqYADoqnAA6KqAAOiqoADoqsAA6KrQAOiq4ADoqwAA6KsQAOiywADosuAA6LMQAOizMADos2AA6LNwAOizgADos5AA6LOgAOizwADos+AA6LPwAOi0AADotCAA6LQwAOi1wADotdAA6LXgAOi2AADovbAA6L3QAOi98ADovhAA6L5AAOi+UADovmAA6L5wAOi+gADovqAA6L7AAOi+0ADovuAA6L8AAOi/EADoxsAA6MbgAOjHAADoxyAA6MdQAOjHYADox3AA6MeAAOjHkADox7AA6MfQAOjH4ADox/AA6MgQAOjIIADoz9AA6M/wAOjQEADo0DAA6NBgAOjQcADo0IAA6NCQAOjQoADo0MAA6NDgAOjQ8ADo0QAA6NEgAOjRMADo2OAA6NkAAOjZIADo2UAA6NlwAOjZgADo2ZAA6NmgAOjZsADo2dAA6NnwAOjaAADo2hAA6NowAOjaQADo4fAA6OIQAOjiMADo4lAA6OKAAOjikADo4qAA6OKwAOjiwADo4uAA6OMAAOjjEADo4yAA6ONAAOjjUADo5+AA6OogAOjskADo7tAA6O8AAOjvIADo70AA6O9gAOjvgADo76AA6O+wAOjv4ADo8XAA6PNAAOjzYADo84AA6POgAOjzwADo8+AA6PQAAOj0IADo9fAA6PYgAOj2UADo9oAA6PawAOj24ADo9xAA6PdAAOj3YADo/xAA6P8wAOj/UADo/3AA6P+gAOj/sADo/8AA6P/QAOj/4ADpAAAA6QAgAOkAMADpAEAA6QBgAOkAcADpCCAA6QhAAOkIYADpCIAA6QiwAOkIwADpCNAA6QjgAOkI8ADpCRAA6QkwAOkJQADpCVAA6QlwAOkJgADpETAA6RFQAOkRcADpEZAA6RHAAOkR0ADpEeAA6RHwAOkSAADpEiAA6RJAAOkSUADpEmAA6RKAAOkSkADpGkAA6RpgAOkakADpGrAA6RrgAOka8ADpGwAA6RsQAOkbIADpG0AA6RtgAOkbcADpG4AA6RugAOkbsADpI2AA6SOAAOkjoADpI8AA6SPwAOkkAADpJBAA6SQgAOkkMADpJFAA6SRwAOkkgADpJJAA6SSwAOkkwADpLHAA6SyQAOkssADpLNAA6S0AAOktEADpLSAA6S0wAOktQADpLWAA6S2AAOktkADpLaAA6S3AAOkt0ADpNYAA6TWgAOk1wADpNeAA6TYQAOk2IADpNjAA6TZAAOk2UADpNnAA6TaQAOk2oADpNrAA6TbQAOk24ADpN/AA6TgAAOk4IADpP9AA6T/wAOlAEADpQDAA6UBgAOlAcADpQIAA6UCQAOlAoADpQMAA6UDwAOlBAADpQRAA6UEwAOlBQADpSPAA6UkQAOlJMADpSVAA6UmAAOlJkADpSaAA6UmwAOlJwADpSeAA6UoQAOlKIADpSjAA6UpQAOlKYADpUhAA6VIwAOlSYADpUoAA6VKwAOlSwADpUtAA6VLgAOlS8ADpUxAA6VNAAOlTUADpU2AA6VOAAOlTkADpXMAA6V7wAOlg8ADpYvAA6WMQAOljMADpY1AA6WNwAOljoADpY7AA6WPAAOlj8ADpZAAA6WQgAOlkMADpZGAA6WSQAOlkoADpZLAA6WTgAOlk8ADpZYAA6WcQAOlnoADpZ8AA6WfwAOlogADpaLAA6WjgAOlpAADpbZAA6W/QAOlyQADpdIAA6XSwAOl00ADpdPAA6XUQAOl1MADpdVAA6XVgAOl1kADpdyAA6XkwAOl5UADpeXAA6XmQAOl5sADpedAA6XnwAOl6EADpejAA6XxAAOl8cADpfKAA6XzQAOl9AADpfTAA6X1gAOl9kADpfcAA6X3gAOmFkADphbAA6YXQAOmF8ADphiAA6YYwAOmGQADphlAA6YZgAOmGgADphqAA6YawAOmGwADphuAA6YbwAOmOoADpjsAA6Y7gAOmPAADpjzAA6Y9AAOmPUADpj2AA6Y9wAOmPkADpj7AA6Y/AAOmP0ADpj/AA6ZAAAOmXsADpl9AA6ZgAAOmYIADpmFAA6ZhgAOmYcADpmIAA6ZiQAOmYsADpmNAA6ZjgAOmY8ADpmRAA6ZkgAOmasADpmsAA6ZrQAOma8ADpoqAA6aLAAOmi4ADpowAA6aMwAOmjQADpo1AA6aNgAOmjcADpo5AA6aOwAOmjwADpo9AA6aPwAOmkAADpq7AA6avQAOmr8ADprBAA6axAAOmsUADprGAA6axwAOmsgADprKAA6azAAOms0ADprOAA6a0AAOmtEADptMAA6bTgAOm1AADptSAA6bVQAOm1YADptXAA6bWAAOm1kADptbAA6bXQAOm14ADptfAA6bYQAOm2IADpvdAA6b3wAOm+EADpvjAA6b5gAOm+cADpvoAA6b6QAOm+oADpvsAA6b7gAOm+8ADpvwAA6b8gAOm/MADpxuAA6ccAAOnHIADpx0AA6cdwAOnHgADpx5AA6cegAOnHsADpx9AA6cfwAOnIAADpyBAA6cgwAOnIQADpzNAA6c8QAOnRgADp08AA6dPwAOnUIADp1EAA6dRgAOnUgADp1KAA6dSwAOnU4ADp1nAA6dhAAOnYcADp2KAA6djQAOnZAADp2TAA6dlgAOnZkADp22AA6duQAOnbwADp2/AA6dwgAOncUADp3IAA6dywAOnc0ADp5IAA6eSgAOnk0ADp5PAA6eUgAOnlMADp5UAA6eVQAOnlYADp5YAA6eWwAOnlwADp5dAA6eXwAOnmAADp7bAA6e3QAOnuAADp7iAA6e5QAOnuYADp7nAA6e6AAOnukADp7rAA6e7gAOnu8ADp7wAA6e8gAOnvMADp9uAA6fcAAOn3MADp91AA6feAAOn3kADp96AA6fewAOn3wADp9+AA6fgQAOn4IADp+DAA6fhQAOn4YADqABAA6gAwAOoAYADqAIAA6gCwAOoAwADqANAA6gDgAOoA8ADqARAA6gFAAOoBUADqAWAA6gGAAOoBkADqCcAA6gwAAOoOQADqEHAA6hLgAOoU4ADqF1AA6hnAAOobwADqHgAA6iBAAOogYADqIJAA6iCwAOog0ADqIPAA6iEgAOohUADqIXAA6iGQAOohwADqIeAA6iIAAOoiMADqImAA6iJwAOojAADqJJAA6iTgAOolAADqJVAA6iWAAOoloADqKjAA6ixwAOou4ADqMSAA6jFQAOoxcADqMZAA6jGwAOox0ADqMfAA6jIAAOoyMADqM8AA6jYQAOo2MADqNlAA6jZwAOo2kADqNrAA6jbQAOo28ADqNxAA6jcwAOo5gADqObAA6jngAOo6EADqOkAA6jpwAOo6oADqOtAA6jsAAOo7MADqO1AA6kMAAOpDIADqQ1AA6kNwAOpDoADqQ7AA6kPAAOpD0ADqQ+AA6kQAAOpEIADqRDAA6kRAAOpEYADqRHAA6kWAAOpFkADqRbAA6k1gAOpNgADqTaAA6k3AAOpN8ADqTgAA6k4QAOpOIADqTjAA6k5QAOpOcADqToAA6k6QAOpOsADqTsAA6lZwAOpWkADqVsAA6lbgAOpXEADqVyAA6lcwAOpXQADqV1AA6ldwAOpXkADqV6AA6lewAOpX0ADqV+AA6ljwAOpZQADqWXAA6lmQAOpaoADqWzAA6ltgAOpbkADqW7AA6l1wAOpekADqZkAA6mZgAOpmgADqZqAA6mbQAOpm4ADqZvAA6mcAAOpnEADqZzAA6mdQAOpnYADqZ3AA6meQAOpnoADqb1AA6m9wAOpvoADqb8AA6m/wAOpwAADqcBAA6nAgAOpwMADqcFAA6nBwAOpwgADqcJAA6nCwAOpwwADqcdAA6nHgAOpyAADqebAA6nnQAOp58ADqehAA6npAAOp6UADqemAA6npwAOp6gADqeqAA6nrAAOp60ADqeuAA6nsAAOp7EADqgsAA6oLgAOqDEADqgzAA6oNgAOqDcADqg4AA6oOQAOqDoADqg8AA6oPgAOqD8ADqhAAA6oQgAOqEMADqhcAA6oXQAOqF4ADqhgAA6o2wAOqN0ADqjfAA6o4QAOqOQADqjlAA6o5gAOqOcADqjoAA6o6gAOqOwADqjtAA6o7gAOqPAADqjxAA6pbAAOqW4ADqlxAA6pcwAOqXYADql3AA6peAAOqXkADql6AA6pfAAOqX4ADql/AA6pgAAOqYIADqmDAA6pkQAOqaoADqnpAA6p7AAOqe8ADqnyAA6p9QAOqfgADqn7AA6p/gAOqgEADqoEAA6qBwAOqgoADqoNAA6qEAAOqhMADqoWAA6qVQAOqlgADqpbAA6qXgAOqmEADqpkAA6qZwAOqmoADqptAA6qcAAOqnMADqp2AA6qeQAOqnwADqp/AA6qggAOqoQADqqaAA6qtgAOqtQADqruAA6rEwAOqxsADqstAA6rQAAOq1YADqtfAA6rewAOq40ADquaAA6rqAAOrDsADqxeAA6sfgAOrJ4ADqygAA6sogAOrKQADqymAA6sqQAOrKoADqyrAA6srgAOrK8ADqyxAA6ssgAOrLQADqy3AA6suAAOrLkADqy8AA6svQAOrMIADqzbAA6s5AAOrOYADqzoAA6s8QAOrPQADqz3AA6s+QAOrUIADq1mAA6tjQAOrbEADq20AA6ttgAOrbgADq26AA6tvAAOrb4ADq2/AA6twgAOrdsADq38AA6t/gAOrgAADq4CAA6uBAAOrgYADq4IAA6uCgAOrgwADq4tAA6uMAAOrjMADq42AA6uOQAOrjwADq4/AA6uQgAOrkUADq5HAA6uwgAOrsQADq7GAA6uyAAOrssADq7MAA6uzQAOrs4ADq7PAA6u0QAOrtMADq7UAA6u1QAOrtcADq7YAA6vUwAOr1UADq9XAA6vWQAOr1wADq9dAA6vXgAOr18ADq9gAA6vYgAOr2QADq9lAA6vZgAOr2gADq9pAA6v5AAOr+YADq/pAA6v6wAOr+4ADq/vAA6v8AAOr/EADq/yAA6v9AAOr/YADq/3AA6v+AAOr/oADq/7AA6wFAAOsBUADrAWAA6wGAAOsJMADrCVAA6wlwAOsJkADrCcAA6wnQAOsJ4ADrCfAA6woAAOsKIADrCkAA6wpQAOsKYADrCoAA6wqQAOsSQADrEmAA6xKAAOsSoADrEtAA6xLgAOsS8ADrEwAA6xMQAOsTMADrE1AA6xNgAOsTcADrE5AA6xOgAOsbUADrG3AA6xuQAOsbsADrG+AA6xvwAOscAADrHBAA6xwgAOscQADrHGAA6xxwAOscgADrHKAA6xywAOskYADrJIAA6ySgAOskwADrJPAA6yUAAOslEADrJSAA6yUwAOslUADrJXAA6yWAAOslkADrJbAA6yXAAOstcADrLZAA6y2wAOst0ADrLgAA6y4QAOsuIADrLjAA6y5AAOsuYADrLoAA6y6QAOsuoADrLsAA6y7QAOszYADrNaAA6zgQAOs6UADrOoAA6zqgAOs6wADrOuAA6zsAAOs7IADrOzAA6ztgAOs88ADrPsAA6z7gAOs/AADrPyAA6z9AAOs/YADrP4AA6z+gAOtBcADrQaAA60HQAOtCAADrQjAA60JgAOtCkADrQsAA60LgAOtKkADrSrAA60rQAOtK8ADrSyAA60swAOtLQADrS1AA60tgAOtLgADrS6AA60uwAOtLwADrS+AA60vwAOtToADrU8AA61PgAOtUAADrVDAA61RAAOtUUADrVGAA61RwAOtUkADrVLAA61TAAOtU0ADrVPAA61UAAOtcsADrXNAA61zwAOtdEADrXUAA611QAOtdYADrXXAA612AAOtdoADrXcAA613QAOtd4ADrXgAA614QAOtlwADrZeAA62YQAOtmMADrZmAA62ZwAOtmgADrZpAA62agAOtmwADrZuAA62bwAOtnAADrZyAA62cwAOtu4ADrbwAA628gAOtvQADrb3AA62+AAOtvkADrb6AA62+wAOtv0ADrb/AA63AAAOtwEADrcDAA63BAAOt38ADreBAA63gwAOt4UADreIAA63iQAOt4oADreLAA63jAAOt44ADreQAA63kQAOt5IADreUAA63lQAOuBAADrgSAA64FAAOuBYADrgZAA64GgAOuBsADrgcAA64HQAOuB8ADrghAA64IgAOuCMADrglAA64JgAOuLkADrjcAA64/AAOuRwADrkeAA65IAAOuSIADrkkAA65JwAOuSgADrkpAA65LAAOuS0ADrkvAA65MAAOuTIADrk1AA65NgAOuTcADrk6AA65OwAOuUQADrldAA65ZgAOuWgADrlqAA65cwAOuXYADrl5AA65ewAOucQADrnoAA66DwAOujMADro2AA66OAAOujoADro8AA66PgAOukAADrpBAA66RAAOul0ADrp+AA66gAAOuoIADrqEAA66hgAOuogADrqKAA66jAAOuo4ADrqvAA66sgAOurUADrq4AA66uwAOur4ADrrBAA66xAAOuscADrrJAA67RAAOu0YADrtIAA67SgAOu00ADrtOAA67TwAOu1AADrtRAA67UwAOu1UADrtWAA67VwAOu1kADrtaAA671QAOu9cADrvZAA672wAOu94ADrvfAA674AAOu+EADrviAA675AAOu+YADrvnAA676AAOu+oADrvrAA68ZgAOvGgADrxrAA68bQAOvHAADrxxAA68cgAOvHMADrx0AA68dgAOvHgADrx5AA68egAOvHwADrx9AA68lgAOvJcADryYAA68mgAOvRUADr0XAA69GQAOvRsADr0eAA69HwAOvSAADr0hAA69IgAOvSQADr0mAA69JwAOvSgADr0qAA69KwAOvaYADr2oAA69qgAOvawADr2vAA69sAAOvbEADr2yAA69swAOvbUADr23AA69uAAOvbkADr27AA69vAAOvjcADr45AA6+OwAOvj0ADr5AAA6+QQAOvkIADr5DAA6+RAAOvkYADr5IAA6+SQAOvkoADr5MAA6+TQAOvsgADr7KAA6+zAAOvs4ADr7RAA6+0gAOvtMADr7UAA6+1QAOvtcADr7ZAA6+2gAOvtsADr7dAA6+3gAOv1kADr9bAA6/XQAOv18ADr9iAA6/YwAOv2QADr9lAA6/ZgAOv2gADr9qAA6/awAOv2wADr9uAA6/bwAOv7gADr/cAA7AAwAOwCcADsAqAA7ALAAOwC4ADsAwAA7AMgAOwDQADsA1AA7AOAAOwFEADsBuAA7AcAAOwHIADsB0AA7AdgAOwHgADsB6AA7AfAAOwJkADsCcAA7AnwAOwKIADsClAA7AqAAOwKsADsCuAA7AsAAOwSsADsEtAA7BLwAOwTEADsE0AA7BNQAOwTYADsE3AA7BOAAOwToADsE8AA7BPQAOwT4ADsFAAA7BQQAOwbwADsG+AA7BwAAOwcIADsHFAA7BxgAOwccADsHIAA7ByQAOwcsADsHNAA7BzgAOwc8ADsHRAA7B0gAOwk0ADsJPAA7CUQAOwlMADsJWAA7CVwAOwlgADsJZAA7CWgAOwlwADsJeAA7CXwAOwmAADsJiAA7CYwAOwt4ADsLgAA7C4wAOwuUADsLoAA7C6QAOwuoADsLrAA7C7AAOwu4ADsLwAA7C8QAOwvIADsL0AA7C9QAOw3AADsNyAA7DdAAOw3YADsN5AA7DegAOw3sADsN8AA7DfQAOw38ADsOBAA7DggAOw4MADsOFAA7DhgAOxAEADsQDAA7EBgAOxAgADsQLAA7EDAAOxA0ADsQOAA7EDwAOxBEADsQTAA7EFAAOxBUADsQXAA7EGAAOxCcADsSiAA7EpAAOxKYADsSoAA7EqwAOxKwADsStAA7ErgAOxK8ADsSxAA7EswAOxLQADsS1AA7EtwAOxLgADsVLAA7FbgAOxY4ADsWuAA7FsAAOxbIADsW0AA7FtgAOxbkADsW6AA7FuwAOxb4ADsW/AA7FwQAOxcIADsXEAA7FxwAOxcgADsXJAA7FzAAOxc0ADsXSAA7F6wAOxfQADsX2AA7F+AAOxgEADsYEAA7GBwAOxgkADsZSAA7GdgAOxp0ADsbBAA7GxAAOxsYADsbIAA7GygAOxswADsbOAA7GzwAOxtIADsbrAA7HDAAOxw4ADscQAA7HEgAOxxQADscWAA7HGAAOxxoADsccAA7HPQAOx0AADsdDAA7HRgAOx0kADsdMAA7HTwAOx1IADsdVAA7HVwAOx9IADsfUAA7H1gAOx9gADsfbAA7H3AAOx90ADsfeAA7H3wAOx+EADsfjAA7H5AAOx+UADsfnAA7H6AAOyGMADshlAA7IZwAOyGkADshsAA7IbQAOyG4ADshvAA7IcAAOyHIADsh0AA7IdQAOyHYADsh4AA7IeQAOyPQADsj2AA7I+QAOyPsADsj+AA7I/wAOyQAADskBAA7JAgAOyQQADskGAA7JBwAOyQgADskKAA7JCwAOySQADsklAA7JJgAOySgADsmjAA7JpQAOyacADsmpAA7JrAAOya0ADsmuAA7JrwAOybAADsmyAA7JtAAOybUADsm2AA7JuAAOybkADso0AA7KNgAOyjgADso6AA7KPQAOyj4ADso/AA7KQAAOykEADspDAA7KRQAOykYADspHAA7KSQAOykoADsrFAA7KxwAOyskADsrLAA7KzgAOys8ADsrQAA7K0QAOytIADsrUAA7K1gAOytcADsrYAA7K2gAOytsADstWAA7LWAAOy1oADstcAA7LXwAOy2AADsthAA7LYgAOy2MADstlAA7LZwAOy2gADstpAA7LawAOy2wADsvnAA7L6QAOy+sADsvtAA7L8AAOy/EADsvyAA7L8wAOy/QADsv2AA7L+AAOy/kADsv6AA7L/AAOy/0ADsxGAA7MagAOzJEADsy1AA7MuAAOzLoADsy8AA7MvgAOzMAADszCAA7MwwAOzMYADszfAA7M/AAOzP4ADs0AAA7NAgAOzQQADs0GAA7NCAAOzQoADs0nAA7NKgAOzS0ADs0wAA7NMwAOzTYADs05AA7NPAAOzT4ADs25AA7NuwAOzb0ADs2/AA7NwgAOzcMADs3EAA7NxQAOzcYADs3IAA7NygAOzcsADs3MAA7NzgAOzc8ADs5KAA7OTAAOzk4ADs5QAA7OUwAOzlQADs5VAA7OVgAOzlcADs5ZAA7OWwAOzlwADs5dAA7OXwAOzmAADs7bAA7O3QAOzt8ADs7hAA7O5AAOzuUADs7mAA7O5wAOzugADs7qAA7O7AAOzu0ADs7uAA7O8AAOzvEADs9sAA7PbgAOz3EADs9zAA7PdgAOz3cADs94AA7PeQAOz3oADs98AA7PfgAOz38ADs+AAA7PggAOz4MADs/+AA7QAAAO0AIADtAEAA7QBwAO0AgADtAJAA7QCgAO0AsADtANAA7QDwAO0BAADtARAA7QEwAO0BQADtCPAA7QkQAO0JMADtCVAA7QmAAO0JkADtCaAA7QmwAO0JwADtCeAA7QoAAO0KEADtCiAA7QpAAO0KUADtEgAA7RIgAO0SQADtEmAA7RKQAO0SoADtErAA7RLAAO0S0ADtEvAA7RMQAO0TIADtEzAA7RNQAO0TYADtHJAA7R7AAO0gwADtIsAA7SLgAO0jAADtIyAA7SNAAO0jcADtI4AA7SOQAO0jwADtI9AA7SPwAO0kAADtJCAA7SRQAO0kYADtJHAA7SSgAO0ksADtJQAA7SaQAO0nIADtJ0AA7SdgAO0n8ADtKCAA7ShQAO0ocADtLQAA7S9AAO0xsADtM/AA7TQgAO00QADtNGAA7TSAAO00oADtNMAA7TTQAO01AADtNpAA7TigAO04wADtOOAA7TkAAO05IADtOUAA7TlgAO05gADtOaAA7TuwAO074ADtPBAA7TxAAO08cADtPKAA7TzQAO09AADtPTAA7T1QAO1FAADtRSAA7UVAAO1FYADtRZAA7UWgAO1FsADtRcAA7UXQAO1F8ADtRhAA7UYgAO1GMADtRlAA7UZgAO1OEADtTjAA7U5QAO1OcADtTqAA7U6wAO1OwADtTtAA7U7gAO1PAADtTyAA7U8wAO1PQADtT2AA7U9wAO1XIADtV0AA7VdwAO1XkADtV8AA7VfQAO1X4ADtV/AA7VgAAO1YIADtWEAA7VhQAO1YYADtWIAA7ViQAO1aIADtWjAA7VpAAO1aYADtYhAA7WIwAO1iUADtYnAA7WKgAO1isADtYsAA7WLQAO1i4ADtYwAA7WMgAO1jMADtY0AA7WNgAO1jcADtayAA7WtAAO1rYADta4AA7WuwAO1rwADta9AA7WvgAO1r8ADtbBAA7WwwAO1sQADtbFAA7WxwAO1sgADtdDAA7XRQAO10cADtdJAA7XTAAO100ADtdOAA7XTwAO11AADtdSAA7XVAAO11UADtdWAA7XWAAO11kADtfUAA7X1gAO19gADtfaAA7X3QAO194ADtffAA7X4AAO1+EADtfjAA7X5QAO1+YADtfnAA7X6QAO1+oADthlAA7YZwAO2GkADthrAA7YbgAO2G8ADthwAA7YcQAO2HIADth0AA7YdgAO2HcADth4AA7YegAO2HsADtjEAA7Y6AAO2Q8ADtkzAA7ZNgAO2TgADtk6AA7ZPAAO2T4ADtlAAA7ZQQAO2UQADtldAA7ZegAO2XwADtl+AA7ZgAAO2YIADtmEAA7ZhgAO2YgADtmlAA7ZqAAO2asADtmuAA7ZsQAO2bQADtm3AA7ZugAO2bwADto3AA7aOQAO2jsADto9AA7aQAAO2kEADtpCAA7aQwAO2kQADtpGAA7aSAAO2kkADtpKAA7aTAAO2k0ADtrIAA7aygAO2swADtrOAA7a0QAO2tIADtrTAA7a1AAO2tUADtrXAA7a2QAO2toADtrbAA7a3QAO2t4ADttZAA7bWwAO210ADttfAA7bYgAO22MADttkAA7bZQAO22YADttoAA7bagAO22sADttsAA7bbgAO228ADtvqAA7b7AAO2+8ADtvxAA7b9AAO2/UADtv2AA7b9wAO2/gADtv6AA7b/AAO2/0ADtv+AA7cAAAO3AEADtx8AA7cfgAO3IAADtyCAA7chQAO3IYADtyHAA7ciAAO3IkADtyLAA7cjQAO3I4ADtyPAA7ckQAO3JIADt0NAA7dDwAO3RIADt0UAA7dFwAO3RgADt0ZAA7dGgAO3RsADt0dAA7dHwAO3SAADt0hAA7dIwAO3SQADt0zAA7drgAO3bAADt2yAA7dtAAO3bcADt24AA7duQAO3boADt27AA7dvQAO3b8ADt3AAA7dwQAO3cMADt3EAA7eVwAO3noADt6aAA7eugAO3rwADt6+AA7ewAAO3sIADt7FAA7exgAO3scADt7KAA7eywAO3s0ADt7OAA7e0AAO3tMADt7UAA7e1QAO3tgADt7ZAA7e3gAO3vcADt8AAA7fAgAO3wQADt8NAA7fEAAO3xMADt8VAA7fXgAO34IADt+pAA7fzQAO39AADt/SAA7f1AAO39YADt/YAA7f2gAO39sADt/eAA7f9wAO4BgADuAaAA7gHAAO4B4ADuAgAA7gIgAO4CQADuAmAA7gKAAO4EkADuBMAA7gTwAO4FIADuBVAA7gWAAO4FsADuBeAA7gYQAO4GMADuDeAA7g4AAO4OIADuDkAA7g5wAO4OgADuDpAA7g6gAO4OsADuDtAA7g7wAO4PAADuDxAA7g8wAO4PQADuFvAA7hcQAO4XMADuF1AA7heAAO4XkADuF6AA7hewAO4XwADuF+AA7hgAAO4YEADuGCAA7hhAAO4YUADuIAAA7iAgAO4gUADuIHAA7iCgAO4gsADuIMAA7iDQAO4g4ADuIQAA7iEgAO4hMADuIUAA7iFgAO4hcADuIwAA7iMQAO4jIADuI0AA7irwAO4rEADuKzAA7itQAO4rgADuK5AA7iugAO4rsADuK8AA7ivgAO4sAADuLBAA7iwgAO4sQADuLFAA7jQAAO40IADuNEAA7jRgAO40kADuNKAA7jSwAO40wADuNNAA7jTwAO41EADuNSAA7jUwAO41UADuNWAA7j0QAO49MADuPVAA7j1wAO49oADuPbAA7j3AAO490ADuPeAA7j4AAO4+IADuPjAA7j5AAO4+YADuPnAA7kYgAO5GQADuRmAA7kaAAO5GsADuRsAA7kbQAO5G4ADuRvAA7kcQAO5HMADuR0AA7kdQAO5HcADuR4AA7k8wAO5PUADuT3AA7k+QAO5PwADuT9AA7k/gAO5P8ADuUAAA7lAgAO5QQADuUFAA7lBgAO5QgADuUJAA7lUgAO5XYADuWdAA7lwQAO5cQADuXGAA7lyAAO5coADuXMAA7lzgAO5c8ADuXSAA7l6wAO5ggADuYKAA7mDAAO5g4ADuYQAA7mEgAO5hQADuYWAA7mMwAO5jYADuY5AA7mPAAO5j8ADuZCAA7mRQAO5kgADuZKAA7mxQAO5scADubJAA7mywAO5s4ADubPAA7m0AAO5tEADubSAA7m1AAO5tYADubXAA7m2AAO5toADubbAA7nVgAO51gADudaAA7nXAAO518ADudgAA7nYQAO52IADudjAA7nZQAO52cADudoAA7naQAO52sADudsAA7n5wAO5+kADufrAA7n7QAO5/AADufxAA7n8gAO5/MADuf0AA7n9gAO5/gADuf5AA7n+gAO5/wADuf9AA7oeAAO6HoADuh9AA7ofwAO6IIADuiDAA7ohAAO6IUADuiGAA7oiAAO6IoADuiLAA7ojAAO6I4ADuiPAA7pCgAO6QwADukOAA7pEAAO6RMADukUAA7pFQAO6RYADukXAA7pGQAO6RsADukcAA7pHQAO6R8ADukgAA7pmwAO6Z0ADumfAA7poQAO6aQADumlAA7ppgAO6acADumoAA7pqgAO6awADumtAA7prgAO6bAADumxAA7qLAAO6i4ADuowAA7qMgAO6jUADuo2AA7qNwAO6jgADuo5AA7qOwAO6j0ADuo+AA7qPwAO6kEADupCAA7q1QAO6vgADusYAA7rOAAO6zoADus8AA7rPgAO60AADutDAA7rRAAO60UADutIAA7rSQAO60sADutMAA7rTwAO61IADutTAA7rVAAO61cADutYAA7rYQAO63oADuuDAA7rhQAO64gADuuRAA7rlAAO65cADuuZAA7r4gAO7AYADuwtAA7sUQAO7FQADuxWAA7sWAAO7FoADuxcAA7sXgAO7F8ADuxiAA7sewAO7JwADuyeAA7soAAO7KIADuykAA7spgAO7KgADuyqAA7srAAO7M0ADuzQAA7s0wAO7NYADuzZAA7s3AAO7N8ADuziAA7s5QAO7OcADu1iAA7tZAAO7WYADu1oAA7tawAO7WwADu1tAA7tbgAO7W8ADu1xAA7tcwAO7XQADu11AA7tdwAO7XgADu3zAA7t9QAO7fcADu35AA7t/AAO7f0ADu3+AA7t/wAO7gAADu4CAA7uBAAO7gUADu4GAA7uCAAO7gkADu6EAA7uhgAO7okADu6LAA7ujgAO7o8ADu6QAA7ukQAO7pIADu6UAA7ulgAO7pcADu6YAA7umgAO7psADu60AA7utQAO7rYADu64AA7vMwAO7zUADu83AA7vOQAO7zwADu89AA7vPgAO7z8ADu9AAA7vQgAO70QADu9FAA7vRgAO70gADu9JAA7vxAAO78YADu/IAA7vygAO780ADu/OAA7vzwAO79AADu/RAA7v0wAO79UADu/WAA7v1wAO79kADu/aAA7wVQAO8FcADvBZAA7wWwAO8F4ADvBfAA7wYAAO8GEADvBiAA7wZAAO8GYADvBnAA7waAAO8GoADvBrAA7w5gAO8OgADvDqAA7w7AAO8O8ADvDwAA7w8QAO8PIADvDzAA7w9QAO8PcADvD4AA7w+QAO8PsADvD8AA7xdwAO8XkADvF7AA7xfQAO8YAADvGBAA7xggAO8YMADvGEAA7xhgAO8YgADvGJAA7xigAO8YwADvGNAA7x1gAO8foADvIhAA7yRQAO8kgADvJLAA7yTQAO8k8ADvJRAA7yUwAO8lQADvJXAA7ycAAO8o0ADvKQAA7ykwAO8pYADvKZAA7ynAAO8p8ADvKiAA7yvwAO8sIADvLFAA7yyAAO8ssADvLOAA7y0QAO8tQADvLWAA7zUQAO81MADvNWAA7zWAAO81sADvNcAA7zXQAO814ADvNfAA7zYQAO82QADvNlAA7zZgAO82gADvNpAA7z5AAO8+YADvPpAA7z6wAO8+4ADvPvAA7z8AAO8/EADvPyAA7z9AAO8/cADvP4AA7z+QAO8/sADvP8AA70dwAO9HkADvR8AA70fgAO9IEADvSCAA70gwAO9IQADvSFAA70hwAO9IoADvSLAA70jAAO9I4ADvSPAA71CgAO9QwADvUPAA71EQAO9RQADvUVAA71FgAO9RcADvUYAA71GgAO9R0ADvUeAA71HwAO9SEADvUiAA71pQAO9ckADvXtAA72EAAO9jcADvZXAA72fgAO9qUADvbFAA726QAO9w0ADvcPAA73EgAO9xQADvcWAA73GAAO9xsADvceAA73IAAO9yIADvclAA73JwAO9ykADvcsAA73LwAO9zAADvc5AA73UgAO91cADvdZAA73XgAO92EADvdjAA73rAAO99AADvf3AA74GwAO+B4ADvggAA74IgAO+CQADvgmAA74KAAO+CkADvgsAA74RQAO+GoADvhsAA74bgAO+HAADvhyAA74dAAO+HYADvh4AA74egAO+HwADvihAA74pAAO+KcADviqAA74rQAO+LAADvizAA74tgAO+LkADvi8AA74vgAO+TkADvk7AA75PgAO+UAADvlDAA75RAAO+UUADvlGAA75RwAO+UkADvlLAA75TAAO+U0ADvlPAA75UAAO+WEADvliAA75ZAAO+d8ADvnhAA754wAO+eUADvnoAA756QAO+eoADvnrAA757AAO+e4ADvnwAA758QAO+fIADvn0AA759QAO+nAADvpyAA76dQAO+ncADvp6AA76ewAO+nwADvp9AA76fgAO+oAADvqCAA76gwAO+oQADvqGAA76hwAO+pgADvqdAA76oAAO+qIADvqzAA76xAAO+scADvrKAA76zQAO+tAADvrSAA767gAO+wAADvsKAA77HQAO+5gADvuaAA77nAAO+54ADvuhAA77ogAO+6MADvukAA77pQAO+6cADvupAA77qgAO+6sADvutAA77rgAO/CkADvwrAA78LgAO/DAADvwzAA78NAAO/DUADvw2AA78NwAO/DkADvw7AA78PAAO/D0ADvw/AA78QAAO/FEADvxSAA78VAAO/M8ADvzRAA780wAO/NUADvzYAA782QAO/NoADvzbAA783AAO/N4ADvzgAA784QAO/OIADvzkAA785QAO/WAADv1iAA79ZQAO/WcADv1qAA79awAO/WwADv1tAA79bgAO/XAADv1yAA79cwAO/XQADv12AA79dwAO/ZAADv2RAA79kgAO/ZQADv4PAA7+EQAO/hMADv4VAA7+GAAO/hkADv4aAA7+GwAO/hwADv4eAA7+IAAO/iEADv4iAA7+JAAO/iUADv6gAA7+ogAO/qUADv6nAA7+qgAO/qsADv6sAA7+rQAO/q4ADv6wAA7+sgAO/rMADv60AA7+tgAO/rcADv7FAA7+3gAO/vcADv76AA7+/QAO/wAADv8DAA7/BgAO/wkADv8iAA7/JQAO/ygADv8rAA7/LgAO/zEADv80AA7/NgAO/1IADv9kAA7/dwAO/4IADwAVAA8AOAAPAFgADwB4AA8AegAPAHwADwB+AA8AgAAPAIMADwCEAA8AhQAPAIgADwCJAA8AiwAPAIwADwCOAA8AkQAPAJIADwCTAA8AlgAPAJcADwCcAA8AtQAPAL4ADwDAAA8AwgAPAMsADwDOAA8A0QAPANMADwEcAA8BQAAPAWcADwGLAA8BjgAPAZAADwGSAA8BlAAPAZYADwGYAA8BmQAPAZwADwG1AA8B1gAPAdgADwHaAA8B3AAPAd4ADwHgAA8B4gAPAeQADwHmAA8CBwAPAgoADwINAA8CEAAPAhMADwIWAA8CGQAPAhwADwIfAA8CIQAPApwADwKeAA8CoAAPAqIADwKlAA8CpgAPAqcADwKoAA8CqQAPAqsADwKtAA8CrgAPAq8ADwKxAA8CsgAPAy0ADwMvAA8DMQAPAzMADwM2AA8DNwAPAzgADwM5AA8DOgAPAzwADwM+AA8DPwAPA0AADwNCAA8DQwAPA74ADwPAAA8DwwAPA8UADwPIAA8DyQAPA8oADwPLAA8DzAAPA84ADwPQAA8D0QAPA9IADwPUAA8D1QAPA+4ADwPvAA8D8AAPA/IADwRtAA8EbwAPBHEADwRzAA8EdgAPBHcADwR4AA8EeQAPBHoADwR8AA8EfgAPBH8ADwSAAA8EggAPBIMADwT+AA8FAAAPBQIADwUEAA8FBwAPBQgADwUJAA8FCgAPBQsADwUNAA8FDwAPBRAADwURAA8FEwAPBRQADwWPAA8FkQAPBZMADwWVAA8FmAAPBZkADwWaAA8FmwAPBZwADwWeAA8FoAAPBaEADwWiAA8FpAAPBaUADwYgAA8GIgAPBiQADwYmAA8GKQAPBioADwYrAA8GLAAPBi0ADwYvAA8GMQAPBjIADwYzAA8GNQAPBjYADwaxAA8GswAPBrUADwa3AA8GugAPBrsADwa8AA8GvQAPBr4ADwbAAA8GwgAPBsMADwbEAA8GxgAPBscADwcQAA8HNAAPB1sADwd/AA8HggAPB4QADweGAA8HiAAPB4oADweMAA8HjQAPB5AADwepAA8HxgAPB8gADwfKAA8HzAAPB84ADwfQAA8H0gAPB9QADwfxAA8H9AAPB/cADwf6AA8H/QAPCAAADwgDAA8IBgAPCAgADwiDAA8IhQAPCIcADwiJAA8IjAAPCI0ADwiOAA8IjwAPCJAADwiSAA8IlAAPCJUADwiWAA8ImAAPCJkADwkUAA8JFgAPCRgADwkaAA8JHQAPCR4ADwkfAA8JIAAPCSEADwkjAA8JJQAPCSYADwknAA8JKQAPCSoADwmlAA8JpwAPCakADwmrAA8JrgAPCa8ADwmwAA8JsQAPCbIADwm0AA8JtgAPCbcADwm4AA8JugAPCbsADwo2AA8KOAAPCjoADwo8AA8KPwAPCkAADwpBAA8KQgAPCkMADwpFAA8KRwAPCkgADwpJAA8KSwAPCkwADwrHAA8KyQAPCssADwrNAA8K0AAPCtEADwrSAA8K0wAPCtQADwrWAA8K2AAPCtkADwraAA8K3AAPCt0ADwtYAA8LWgAPC10ADwtfAA8LYgAPC2MADwtkAA8LZQAPC2YADwtoAA8LagAPC2sADwtsAA8LbgAPC28ADwt+AA8L+QAPC/sADwv9AA8L/wAPDAIADwwDAA8MBAAPDAUADwwGAA8MCAAPDAoADwwLAA8MDAAPDA4ADwwPAA8MogAPDMUADwzlAA8NBQAPDQcADw0JAA8NCwAPDQ0ADw0QAA8NEQAPDRIADw0VAA8NFgAPDRgADw0ZAA8NHAAPDR8ADw0gAA8NIQAPDSQADw0lAA8NKgAPDUMADw1MAA8NTgAPDVEADw1aAA8NXQAPDWAADw1iAA8NqwAPDc8ADw32AA8OGgAPDh0ADw4fAA8OIQAPDiMADw4lAA8OJwAPDigADw4rAA8ORAAPDmUADw5nAA8OaQAPDmsADw5tAA8ObwAPDnEADw5zAA8OdQAPDpYADw6ZAA8OnAAPDp8ADw6iAA8OpQAPDqgADw6rAA8OrgAPDrAADw8rAA8PLQAPDy8ADw8xAA8PNAAPDzUADw82AA8PNwAPDzgADw86AA8PPAAPDz0ADw8+AA8PQAAPD0EADw+8AA8PvgAPD8AADw/CAA8PxQAPD8YADw/HAA8PyAAPD8kADw/LAA8PzQAPD84ADw/PAA8P0QAPD9IADxBNAA8QTwAPEFIADxBUAA8QVwAPEFgADxBZAA8QWgAPEFsADxBdAA8QXwAPEGAADxBhAA8QYwAPEGQADxB9AA8QfgAPEH8ADxCBAA8Q/AAPEP4ADxEAAA8RAgAPEQUADxEGAA8RBwAPEQgADxEJAA8RCwAPEQ0ADxEOAA8RDwAPEREADxESAA8RjQAPEY8ADxGRAA8RkwAPEZYADxGXAA8RmAAPEZkADxGaAA8RnAAPEZ4ADxGfAA8RoAAPEaIADxGjAA8SHgAPEiAADxIiAA8SJAAPEicADxIoAA8SKQAPEioADxIrAA8SLQAPEi8ADxIwAA8SMQAPEjMADxI0AA8SrwAPErEADxKzAA8StQAPErgADxK5AA8SugAPErsADxK8AA8SvgAPEsAADxLBAA8SwgAPEsQADxLFAA8TQAAPE0IADxNEAA8TRgAPE0kADxNKAA8TSwAPE0wADxNNAA8TTwAPE1EADxNSAA8TUwAPE1UADxNWAA8TnwAPE8MADxPqAA8UDgAPFBEADxQUAA8UFgAPFBgADxQaAA8UHAAPFB0ADxQgAA8UOQAPFFYADxRZAA8UXAAPFF8ADxRiAA8UZQAPFGgADxRrAA8UiAAPFIsADxSOAA8UkQAPFJQADxSXAA8UmgAPFJ0ADxSfAA8VGgAPFRwADxUfAA8VIQAPFSQADxUlAA8VJgAPFScADxUoAA8VKgAPFS0ADxUuAA8VLwAPFTEADxUyAA8VrQAPFa8ADxWyAA8VtAAPFbcADxW4AA8VuQAPFboADxW7AA8VvQAPFcAADxXBAA8VwgAPFcQADxXFAA8WQAAPFkIADxZFAA8WRwAPFkoADxZLAA8WTAAPFk0ADxZOAA8WUAAPFlMADxZUAA8WVQAPFlcADxZYAA8W0wAPFtUADxbYAA8W2gAPFt0ADxbeAA8W3wAPFuAADxbhAA8W4wAPFuYADxbnAA8W6AAPFuoADxbrAA8XZgAPF2gADxdqAA8XbAAPF28ADxdwAA8XcQAPF3IADxdzAA8XdQAPF3gADxd5AA8XegAPF3wADxd9AA8X+AAPF/oADxf8AA8X/gAPGAEADxgCAA8YAwAPGAQADxgFAA8YBwAPGAoADxgLAA8YDAAPGA4ADxgPAA8YigAPGIwADxiPAA8YkQAPGJQADxiVAA8YlgAPGJcADxiYAA8YmgAPGJ0ADxieAA8YnwAPGKEADxiiAA8ZNQAPGVgADxl4AA8ZmAAPGZoADxmcAA8ZngAPGaAADxmjAA8ZpAAPGaUADxmoAA8ZqQAPGasADxmsAA8ZrgAPGbEADxmyAA8ZswAPGbYADxm3AA8ZvAAPGdUADxneAA8Z4AAPGeIADxnrAA8Z7gAPGfEADxnzAA8aPAAPGmAADxqHAA8aqwAPGq4ADxqwAA8asgAPGrQADxq2AA8auAAPGrkADxq8AA8a1QAPGvYADxr4AA8a+gAPGvwADxr+AA8bAAAPGwIADxsEAA8bBgAPGycADxsqAA8bLQAPGzAADxszAA8bNgAPGzkADxs8AA8bPwAPG0EADxu8AA8bvgAPG8AADxvCAA8bxQAPG8YADxvHAA8byAAPG8kADxvLAA8bzQAPG84ADxvPAA8b0QAPG9IADxxNAA8cTwAPHFEADxxTAA8cVgAPHFcADxxYAA8cWQAPHFoADxxcAA8cXgAPHF8ADxxgAA8cYgAPHGMADxzeAA8c4AAPHOMADxzlAA8c6AAPHOkADxzqAA8c6wAPHOwADxzuAA8c8AAPHPEADxzyAA8c9AAPHPUADx0OAA8dDwAPHRAADx0SAA8djQAPHY8ADx2RAA8dkwAPHZYADx2XAA8dmAAPHZkADx2aAA8dnAAPHZ4ADx2fAA8doAAPHaIADx2jAA8eHgAPHiAADx4iAA8eJAAPHicADx4oAA8eKQAPHioADx4rAA8eLQAPHi8ADx4wAA8eMQAPHjMADx40AA8erwAPHrEADx6zAA8etQAPHrgADx65AA8eugAPHrsADx68AA8evgAPHsAADx7BAA8ewgAPHsQADx7FAA8fQAAPH0IADx9EAA8fRgAPH0kADx9KAA8fSwAPH0wADx9NAA8fTwAPH1EADx9SAA8fUwAPH1UADx9WAA8f0QAPH9MADx/VAA8f1wAPH9oADx/bAA8f3AAPH90ADx/eAA8f4AAPH+IADx/jAA8f5AAPH+YADx/nAA8gMAAPIFQADyB7AA8gnwAPIKIADyCkAA8gpgAPIKgADyCqAA8grAAPIK0ADyCwAA8gyQAPIOYADyDoAA8g6gAPIOwADyDuAA8g8AAPIPIADyD0AA8hEQAPIRQADyEXAA8hGgAPIR0ADyEgAA8hIwAPISYADyEoAA8howAPIaUADyGnAA8hqQAPIawADyGtAA8hrgAPIa8ADyGwAA8hsgAPIbQADyG1AA8htgAPIbgADyG5AA8iNAAPIjYADyI4AA8iOgAPIj0ADyI+AA8iPwAPIkAADyJBAA8iQwAPIkUADyJGAA8iRwAPIkkADyJKAA8ixQAPIscADyLJAA8iywAPIs4ADyLPAA8i0AAPItEADyLSAA8i1AAPItYADyLXAA8i2AAPItoADyLbAA8jVgAPI1gADyNbAA8jXQAPI2AADyNhAA8jYgAPI2MADyNkAA8jZgAPI2gADyNpAA8jagAPI2wADyNtAA8j6AAPI+oADyPsAA8j7gAPI/EADyPyAA8j8wAPI/QADyP1AA8j9wAPI/kADyP6AA8j+wAPI/0ADyP+AA8keQAPJHsADyR9AA8kfwAPJIIADySDAA8khAAPJIUADySGAA8kiAAPJIoADySLAA8kjAAPJI4ADySPAA8lCgAPJQwADyUOAA8lEAAPJRMADyUUAA8lFQAPJRYADyUXAA8lGQAPJRsADyUcAA8lHQAPJR8ADyUgAA8lswAPJdYADyX2AA8mFgAPJhgADyYaAA8mHAAPJh4ADyYhAA8mIgAPJiMADyYmAA8mJwAPJikADyYqAA8mLAAPJi8ADyYwAA8mMQAPJjQADyY1AA8mOgAPJlMADyZcAA8mXgAPJmAADyZpAA8mbAAPJm8ADyZxAA8mugAPJt4ADycFAA8nKQAPJywADycuAA8nMAAPJzIADyc0AA8nNgAPJzcADyc6AA8nUwAPJ3QADyd2AA8neAAPJ3oADyd8AA8nfgAPJ4AADyeCAA8nhAAPJ6UADyeoAA8nqwAPJ64ADyexAA8ntAAPJ7cADye6AA8nvQAPJ78ADyg6AA8oPAAPKD4ADyhAAA8oQwAPKEQADyhFAA8oRgAPKEcADyhJAA8oSwAPKEwADyhNAA8oTwAPKFAADyjLAA8ozQAPKM8ADyjRAA8o1AAPKNUADyjWAA8o1wAPKNgADyjaAA8o3AAPKN0ADyjeAA8o4AAPKOEADylcAA8pXgAPKWEADyljAA8pZgAPKWcADyloAA8paQAPKWoADylsAA8pbgAPKW8ADylwAA8pcgAPKXMADymMAA8pjQAPKY4ADymQAA8qCwAPKg0ADyoPAA8qEQAPKhQADyoVAA8qFgAPKhcADyoYAA8qGgAPKhwADyodAA8qHgAPKiAADyohAA8qnAAPKp4ADyqgAA8qogAPKqUADyqmAA8qpwAPKqgADyqpAA8qqwAPKq0ADyquAA8qrwAPKrEADyqyAA8rLQAPKy8ADysxAA8rMwAPKzYADys3AA8rOAAPKzkADys6AA8rPAAPKz4ADys/AA8rQAAPK0IADytDAA8rvgAPK8AADyvCAA8rxAAPK8cADyvIAA8ryQAPK8oADyvLAA8rzQAPK88ADyvQAA8r0QAPK9MADyvUAA8sTwAPLFEADyxTAA8sVQAPLFgADyxZAA8sWgAPLFsADyxcAA8sXgAPLGAADyxhAA8sYgAPLGQADyxlAA8srgAPLNIADyz5AA8tHQAPLSAADy0iAA8tJAAPLSYADy0oAA8tKgAPLSsADy0uAA8tRwAPLWQADy1mAA8taAAPLWoADy1sAA8tbgAPLXAADy1yAA8tjwAPLZIADy2VAA8tmAAPLZsADy2eAA8toQAPLaQADy2mAA8uIQAPLiMADy4lAA8uJwAPLioADy4rAA8uLAAPLi0ADy4uAA8uMAAPLjIADy4zAA8uNAAPLjYADy43AA8usgAPLrQADy62AA8uuAAPLrsADy68AA8uvQAPLr4ADy6/AA8uwQAPLsMADy7EAA8uxQAPLscADy7IAA8vQwAPL0UADy9HAA8vSQAPL0wADy9NAA8vTgAPL08ADy9QAA8vUgAPL1QADy9VAA8vVgAPL1gADy9ZAA8v1AAPL9YADy/ZAA8v2wAPL94ADy/fAA8v4AAPL+EADy/iAA8v5AAPL+YADy/nAA8v6AAPL+oADy/rAA8wZgAPMGgADzBqAA8wbAAPMG8ADzBwAA8wcQAPMHIADzBzAA8wdQAPMHcADzB4AA8weQAPMHsADzB8AA8w9wAPMPkADzD7AA8w/QAPMQAADzEBAA8xAgAPMQMADzEEAA8xBgAPMQgADzEJAA8xCgAPMQwADzENAA8xiAAPMYoADzGMAA8xjgAPMZEADzGSAA8xkwAPMZQADzGVAA8xlwAPMZkADzGaAA8xmwAPMZ0ADzGeAA8yMQAPMlQADzJ0AA8ylAAPMpYADzKYAA8ymgAPMpwADzKfAA8yoAAPMqEADzKkAA8ypQAPMqcADzKoAA8yqgAPMq0ADzKuAA8yrwAPMrIADzKzAA8yuAAPMtEADzLaAA8y3AAPMt4ADzLnAA8y6gAPMu0ADzLvAA8zOAAPM1wADzODAA8zpwAPM6oADzOsAA8zrgAPM7AADzOyAA8ztAAPM7UADzO4AA8z0QAPM/IADzP0AA8z9gAPM/gADzP6AA8z/AAPM/4ADzQAAA80AgAPNCMADzQmAA80KQAPNCwADzQvAA80MgAPNDUADzQ4AA80OwAPND0ADzS4AA80ugAPNLwADzS+AA80wQAPNMIADzTDAA80xAAPNMUADzTHAA80yQAPNMoADzTLAA80zQAPNM4ADzVJAA81SwAPNU0ADzVPAA81UgAPNVMADzVUAA81VQAPNVYADzVYAA81WgAPNVsADzVcAA81XgAPNV8ADzXaAA813AAPNd8ADzXhAA815AAPNeUADzXmAA815wAPNegADzXqAA817AAPNe0ADzXuAA818AAPNfEADzYKAA82CwAPNgwADzYOAA82iQAPNosADzaNAA82jwAPNpIADzaTAA82lAAPNpUADzaWAA82mAAPNpoADzabAA82nAAPNp4ADzafAA83GgAPNxwADzceAA83IAAPNyMADzckAA83JQAPNyYADzcnAA83KQAPNysADzcsAA83LQAPNy8ADzcwAA83qwAPN60ADzevAA83sQAPN7QADze1AA83tgAPN7cADze4AA83ugAPN7wADze9AA83vgAPN8AADzfBAA84PAAPOD4ADzhAAA84QgAPOEUADzhGAA84RwAPOEgADzhJAA84SwAPOE0ADzhOAA84TwAPOFEADzhSAA84zQAPOM8ADzjRAA840wAPONYADzjXAA842AAPONkADzjaAA843AAPON4ADzjfAA844AAPOOIADzjjAA85LAAPOVAADzl3AA85mwAPOZ4ADzmgAA85ogAPOaQADzmmAA85qAAPOakADzmsAA85xQAPOeIADznkAA855gAPOegADznqAA857AAPOe4ADznwAA86DQAPOhAADzoTAA86FgAPOhkADzocAA86HwAPOiIADzokAA86nwAPOqEADzqjAA86pQAPOqgADzqpAA86qgAPOqsADzqsAA86rgAPOrAADzqxAA86sgAPOrQADzq1AA87MAAPOzIADzs0AA87NgAPOzkADzs6AA87OwAPOzwADzs9AA87PwAPO0EADztCAA87QwAPO0UADztGAA87wQAPO8MADzvFAA87xwAPO8oADzvLAA87zAAPO80ADzvOAA870AAPO9IADzvTAA871AAPO9YADzvXAA88UgAPPFQADzxWAA88WAAPPFsADzxcAA88XQAPPF4ADzxfAA88YQAPPGMADzxkAA88ZQAPPGcADzxoAA884wAPPOUADzznAA886QAPPOwADzztAA887gAPPO8ADzzwAA888gAPPPQADzz1AA889gAPPPgADzz5AA89dAAPPXYADz15AA89ewAPPX4ADz1/AA89gAAPPYEADz2CAA89hAAPPYYADz2HAA89iAAPPYoADz2LAA89qgAPPiUADz4nAA8+KQAPPisADz4uAA8+LwAPPjAADz4xAA8+MgAPPjQADz42AA8+NwAPPjgADz46AA8+OwAPPs4ADz7xAA8/EQAPPzEADz8zAA8/NQAPPzcADz85AA8/PAAPPz0ADz8+AA8/QQAPP0IADz9EAA8/RQAPP0cADz9KAA8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Q5gAPUOcAD1DoAA9Q6QAPUOsAD1DtAA9Q7gAPUO8AD1DxAA9Q8gAPUQsAD1EMAA9RDQAPUQ8AD1GKAA9RjAAPUY4AD1GQAA9RkwAPUZQAD1GVAA9RlgAPUZcAD1GZAA9RmwAPUZwAD1GdAA9RnwAPUaAAD1IbAA9SHQAPUh8AD1IhAA9SJAAPUiUAD1ImAA9SJwAPUigAD1IqAA9SLAAPUi0AD1IuAA9SMAAPUjEAD1KsAA9SrgAPUrAAD1KyAA9StQAPUrYAD1K3AA9SuAAPUrkAD1K7AA9SvQAPUr4AD1K/AA9SwQAPUsIAD1M9AA9TPwAPU0EAD1NDAA9TRgAPU0cAD1NIAA9TSQAPU0oAD1NMAA9TTgAPU08AD1NQAA9TUgAPU1MAD1POAA9T0AAPU9IAD1PUAA9T1wAPU9gAD1PZAA9T2gAPU9sAD1PdAA9T3wAPU+AAD1PhAA9T4wAPU+QAD1QtAA9UUQAPVHgAD1ScAA9UnwAPVKEAD1SjAA9UpQAPVKcAD1SpAA9UqgAPVK0AD1TGAA9U4wAPVOUAD1TnAA9U6QAPVOsAD1TtAA9U7wAPVPEAD1UOAA9VEQAPVRQAD1UXAA9VGgAPVR0AD1UgAA9VIwAPVSUAD1WgAA9VogAPVaQAD1WmAA9VqQAPVaoAD1WrAA9VrAAPVa0AD1WvAA9VsQAPVbIAD1WzAA9VtQAPVbYAD1YxAA9WMwAPVjUAD1Y3AA9WOgAPVjsAD1Y8AA9WPQAPVj4AD1ZAAA9WQgAPVkMAD1ZEAA9WRgAPVkcAD1bCAA9WxAAPVsYAD1bIAA9WywAPVswAD1bNAA9WzgAPVs8AD1bRAA9W0wAPVtQAD1bVAA9W1wAPVtgAD1dTAA9XVQAPV1gAD1daAA9XXQAPV14AD1dfAA9XYAAPV2EAD1djAA9XZQAPV2YAD1dnAA9XaQAPV2oAD1flAA9X5wAPV+kAD1frAA9X7gAPV+8AD1fwAA9X8QAPV/IAD1f0AA9X9gAPV/cAD1f4AA9X+gAPV/sAD1h2AA9YeAAPWHoAD1h8AA9YfwAPWIAAD1iBAA9YggAPWIMAD1iFAA9YhwAPWIgAD1iJAA9YiwAPWIwAD1kHAA9ZCQAPWQsAD1kNAA9ZEAAPWREAD1kSAA9ZEwAPWRQAD1kWAA9ZGAAPWRkAD1kaAA9ZHAAPWR0AD1mwAA9Z0wAPWfMAD1oTAA9aFQAPWhcAD1oZAA9aGwAPWh4AD1ofAA9aIAAPWiMAD1okAA9aJgAPWicAD1opAA9aLAAPWi0AD1ouAA9aMQAPWjIAD1o3AA9aUAAPWlkAD1pbAA9aXQAPWmYAD1ppAA9abAAPWm4AD1q3AA9a2wAPWwIAD1smAA9bKQAPWysAD1stAA9bLwAPWzEAD1szAA9bNAAPWzcAD1tQAA9bcQAPW3MAD1t1AA9bdwAPW3kAD1t7AA9bfQAPW38AD1uBAA9bogAPW6UAD1uoAA9bqwAPW64AD1uxAA9btAAPW7cAD1u6AA9bvAAPXDcAD1w5AA9cOwAPXD0AD1xAAA9cQQAPXEIAD1xDAA9cRAAPXEYAD1xIAA9cSQAPXEoAD1xMAA9cTQAPXMgAD1zKAA9czAAPXM4AD1zRAA9c0gAPXNMAD1zUAA9c1QAPXNcAD1zZAA9c2gAPXNsAD1zdAA9c3gAPXVkAD11bAA9dXgAPXWAAD11jAA9dZAAPXWUAD11mAA9dZwAPXWkAD11rAA9dbAAPXW0AD11vAA9dcAAPXYkAD12KAA9diwAPXY0AD14IAA9eCgAPXgwAD14OAA9eEQAPXhIAD14TAA9eFAAPXhUAD14XAA9eGQAPXhoAD14bAA9eHQAPXh4AD16ZAA9emwAPXp0AD16fAA9eogAPXqMAD16kAA9epQAPXqYAD16oAA9eqgAPXqsAD16sAA9ergAPXq8AD18qAA9fLAAPXy4AD18wAA9fMwAPXzQAD181AA9fNgAPXzcAD185AA9fOwAPXzwAD189AA9fPwAPX0AAD1+7AA9fvQAPX78AD1/BAA9fxAAPX8UAD1/GAA9fxwAPX8gAD1/KAA9fzAAPX80AD1/OAA9f0AAPX9EAD2BMAA9gTgAPYFAAD2BSAA9gVQAPYFYAD2BXAA9gWAAPYFkAD2BbAA9gXQAPYF4AD2BfAA9gYQAPYGIAD2CrAA9gzwAPYPYAD2EaAA9hHQAPYR8AD2EhAA9hIwAPYSUAD2EnAA9hKAAPYSsAD2FEAA9hYQAPYWMAD2FlAA9hZwAPYWkAD2FrAA9hbQAPYW8AD2GMAA9hjwAPYZIAD2GVAA9hmAAPYZsAD2GeAA9hoQAPYaMAD2IeAA9iIAAPYiIAD2IkAA9iJwAPYigAD2IpAA9iKgAPYisAD2ItAA9iLwAPYjAAD2IxAA9iMwAPYjQAD2KvAA9isQAPYrMAD2K1AA9iuAAPYrkAD2K6AA9iuwAPYrwAD2K+AA9iwAAPYsEAD2LCAA9ixAAPYsUAD2NAAA9jQgAPY0QAD2NGAA9jSQAPY0oAD2NLAA9jTAAPY00AD2NPAA9jUQAPY1IAD2NTAA9jVQAPY1YAD2PRAA9j0wAPY9YAD2PYAA9j2wAPY9wAD2PdAA9j3gAPY98AD2PhAA9j4wAPY+QAD2PlAA9j5wAPY+gAD2RjAA9kZQAPZGcAD2RpAA9kbAAPZG0AD2RuAA9kbwAPZHAAD2RyAA9kdAAPZHUAD2R2AA9keAAPZHkAD2T0AA9k9gAPZPgAD2T6AA9k/QAPZP4AD2T/AA9lAAAPZQEAD2UDAA9lBQAPZQYAD2UHAA9lCQAPZQoAD2WFAA9lhwAPZYkAD2WLAA9ljgAPZY8AD2WQAA9lkQAPZZIAD2WUAA9llgAPZZcAD2WYAA9lmgAPZZsAD2YuAA9mUQAPZnEAD2aRAA9mkwAPZpUAD2aXAA9mmQAPZpwAD2adAA9mngAPZqEAD2aiAA9mpAAPZqUAD2anAA9mqgAPZqsAD2asAA9mrwAPZrAAD2a1AA9mzgAPZtcAD2bZAA9m2wAPZuQAD2bnAA9m6gAPZuwAD2c1AA9nWQAPZ4AAD2ekAA9npwAPZ6kAD2erAA9nrQAPZ68AD2exAA9nsgAPZ7UAD2fOAA9n7wAPZ/EAD2fzAA9n9QAPZ/cAD2f5AA9n+wAPZ/0AD2f/AA9oIAAPaCMAD2gmAA9oKQAPaCwAD2gvAA9oMgAPaDUAD2g4AA9oOgAPaLUAD2i3AA9ouQAPaLsAD2i+AA9ovwAPaMAAD2jBAA9owgAPaMQAD2jGAA9oxwAPaMgAD2jKAA9oywAPaUYAD2lIAA9pSgAPaUwAD2lPAA9pUAAPaVEAD2lSAA9pUwAPaVUAD2lXAA9pWAAPaVkAD2lbAA9pXAAPadcAD2nZAA9p3AAPad4AD2nhAA9p4gAPaeMAD2nkAA9p5QAPaecAD2npAA9p6gAPaesAD2ntAA9p7gAPagcAD2oIAA9qCQAPagsAD2qGAA9qiAAPaooAD2qMAA9qjwAPapAAD2qRAA9qkgAPapMAD2qVAA9qlwAPapgAD2qZAA9qmwAPapwAD2sXAA9rGQAPaxsAD2sdAA9rIAAPayEAD2siAA9rIwAPayQAD2smAA9rKAAPaykAD2sqAA9rLAAPay0AD2uoAA9rqgAPa6wAD2uuAA9rsQAPa7IAD2uzAA9rtAAPa7UAD2u3AA9ruQAPa7oAD2u7AA9rvQAPa74AD2w5AA9sOwAPbD0AD2w/AA9sQgAPbEMAD2xEAA9sRQAPbEYAD2xIAA9sSgAPbEsAD2xMAA9sTgAPbE8AD2zKAA9szAAPbM4AD2zQAA9s0wAPbNQAD2zVAA9s1gAPbNcAD2zZAA9s2wAPbNwAD2zdAA9s3wAPbOAAD20pAA9tTQAPbXQAD22YAA9tmwAPbZ0AD22fAA9toQAPbaMAD22lAA9tpgAPbakAD23CAA9t3wAPbeEAD23jAA9t5QAPbecAD23pAA9t6wAPbe0AD24KAA9uDQAPbhAAD24TAA9uFgAPbhkAD24cAA9uHwAPbiEAD26cAA9ungAPbqAAD26iAA9upQAPbqYAD26nAA9uqAAPbqkAD26rAA9urQAPbq4AD26vAA9usQAPbrIAD28tAA9vLwAPbzEAD28zAA9vNgAPbzcAD284AA9vOQAPbzoAD288AA9vPgAPbz8AD29AAA9vQgAPb0MAD2++AA9vwAAPb8IAD2/EAA9vxwAPb8gAD2/JAA9vygAPb8sAD2/NAA9vzwAPb9AAD2/RAA9v0wAPb9QAD3BPAA9wUQAPcFMAD3BVAA9wWAAPcFkAD3BaAA9wWwAPcFwAD3BeAA9wYAAPcGEAD3BiAA9wZAAPcGUAD3DgAA9w4gAPcOQAD3DmAA9w6QAPcOoAD3DrAA9w7AAPcO0AD3DvAA9w8QAPcPIAD3DzAA9w9QAPcPYAD3FxAA9xcwAPcXYAD3F4AA9xewAPcXwAD3F9AA9xfgAPcX8AD3GBAA9xgwAPcYQAD3GFAA9xhwAPcYgAD3GjAA9yHgAPciAAD3IiAA9yJAAPcicAD3IoAA9yKQAPcioAD3IrAA9yLQAPci8AD3IwAA9yMQAPcjMAD3I0AA9yxwAPcuoAD3MKAA9zKgAPcywAD3MuAA9zMAAPczIAD3M1AA9zNgAPczcAD3M6AA9zOwAPcz0AD3M+AA9zQQAPc0QAD3NFAA9zRgAPc0kAD3NKAA9zTwAPc2gAD3NxAA9zcwAPc3YAD3N/AA9zggAPc4UAD3OHAA9z0AAPc/QAD3QbAA90PwAPdEIAD3REAA90RgAPdEgAD3RKAA90TAAPdE0AD3RQAA90aQAPdIoAD3SMAA90jgAPdJAAD3SSAA90lAAPdJYAD3SYAA90mgAPdLsAD3S+AA90wQAPdMQAD3THAA90ygAPdM0AD3TQAA900wAPdNUAD3VQAA91UgAPdVQAD3VWAA91WQAPdVoAD3VbAA91XAAPdV0AD3VfAA91YQAPdWIAD3VjAA91ZQAPdWYAD3XhAA914wAPdeUAD3XnAA916gAPdesAD3XsAA917QAPde4AD3XwAA918gAPdfMAD3X0AA919gAPdfcAD3ZyAA92dAAPdncAD3Z5AA92fAAPdn0AD3Z+AA92fwAPdoAAD3aCAA92hAAPdoUAD3aGAA92iAAPdokAD3aiAA92owAPdqQAD3amAA93IQAPdyMAD3clAA93JwAPdyoAD3crAA93LAAPdy0AD3cuAA93MAAPdzIAD3czAA93NAAPdzYAD3c3AA93sgAPd7QAD3e2AA93uAAPd7sAD3e8AA93vQAPd74AD3e/AA93wQAPd8MAD3fEAA93xQAPd8cAD3fIAA94QwAPeEUAD3hHAA94SQAPeEwAD3hNAA94TgAPeE8AD3hQAA94UgAPeFQAD3hVAA94VgAPeFgAD3hZAA941AAPeNYAD3jYAA942gAPeN0AD3jeAA943wAPeOAAD3jhAA944wAPeOUAD3jmAA945wAPeOkAD3jqAA95ZQAPeWcAD3lpAA95awAPeW4AD3lvAA95cAAPeXEAD3lyAA95dAAPeXYAD3l3AA95eAAPeXoAD3l7AA95xAAPeegAD3oPAA96MwAPejYAD3o5AA96OwAPej0AD3o/AA96QQAPekIAD3pFAA96XgAPensAD3p+AA96gQAPeoQAD3qHAA96igAPeo0AD3qQAA96rQAPerAAD3qzAA96tgAPerkAD3q8AA96vwAPesIAD3rEAA97PwAPe0EAD3tEAA97RgAPe0kAD3tKAA97SwAPe0wAD3tNAA97TwAPe1IAD3tTAA97VAAPe1YAD3tXAA970gAPe9QAD3vXAA972QAPe9wAD3vdAA973gAPe98AD3vgAA974gAPe+UAD3vmAA975wAPe+kAD3vqAA98ZQAPfGcAD3xqAA98bAAPfG8AD3xwAA98cQAPfHIAD3xzAA98dQAPfHgAD3x5AA98egAPfHwAD3x9AA98+AAPfPoAD3z9AA98/wAPfQIAD30DAA99BAAPfQUAD30GAA99CAAPfQsAD30MAA99DQAPfQ8AD30QAA99iwAPfY0AD32PAA99kQAPfZQAD32VAA99lgAPfZcAD32YAA99mgAPfZ0AD32eAA99nwAPfaEAD32iAA9+HQAPfh8AD34hAA9+IwAPfiYAD34nAA9+KAAPfikAD34qAA9+LAAPfi8AD34wAA9+MQAPfjMAD340AA9+rwAPfrEAD360AA9+tgAPfrkAD366AA9+uwAPfrwAD369AA9+vwAPfsIAD37DAA9+xAAPfsYAD37HAA9/WgAPf30AD3+dAA9/vQAPf78AD3/BAA9/wwAPf8UAD3/IAA9/yQAPf8oAD3/NAA9/zgAPf9AAD3/RAA9/0wAPf9YAD3/XAA9/2AAPf9sAD3/cAA9/4QAPf/oAD4ADAA+ABQAPgAcAD4AQAA+AEwAPgBYAD4AYAA+AYQAPgIUAD4CsAA+A0AAPgNMAD4DVAA+A1wAPgNkAD4DbAA+A3QAPgN4AD4DhAA+A+gAPgRsAD4EdAA+BHwAPgSEAD4EjAA+BJQAPgScAD4EpAA+BKwAPgUwAD4FPAA+BUgAPgVUAD4FYAA+BWwAPgV4AD4FhAA+BZAAPgWYAD4HhAA+B4wAPgeUAD4HnAA+B6gAPgesAD4HsAA+B7QAPge4AD4HwAA+B8gAPgfMAD4H0AA+B9gAPgfcAD4JyAA+CdAAPgnYAD4J4AA+CewAPgnwAD4J9AA+CfgAPgn8AD4KBAA+CgwAPgoQAD4KFAA+ChwAPgogAD4MDAA+DBQAPgwgAD4MKAA+DDQAPgw4AD4MPAA+DEAAPgxEAD4MTAA+DFQAPgxYAD4MXAA+DGQAPgxoAD4MzAA+DNAAPgzUAD4M3AA+DsgAPg7QAD4O2AA+DuAAPg7sAD4O8AA+DvQAPg74AD4O/AA+DwQAPg8MAD4PEAA+DxQAPg8cAD4PIAA+EQwAPhEUAD4RHAA+ESQAPhEwAD4RNAA+ETgAPhE8AD4RQAA+EUgAPhFQAD4RVAA+EVgAPhFgAD4RZAA+E1AAPhNYAD4TYAA+E2gAPhN0AD4TeAA+E3wAPhOAAD4ThAA+E4wAPhOUAD4TmAA+E5wAPhOkAD4TqAA+FZQAPhWcAD4VpAA+FawAPhW4AD4VvAA+FcAAPhXEAD4VyAA+FdAAPhXYAD4V3AA+FeAAPhXoAD4V7AA+F9gAPhfgAD4X6AA+F/AAPhf8AD4YAAA+GAQAPhgIAD4YDAA+GBQAPhgcAD4YIAA+GCQAPhgsAD4YMAA+GVQAPhnkAD4agAA+GxAAPhscAD4bJAA+GywAPhs0AD4bPAA+G0QAPhtIAD4bVAA+G7gAPhwsAD4cNAA+HDwAPhxEAD4cTAA+HFQAPhxcAD4cZAA+HNgAPhzkAD4c8AA+HPwAPh0IAD4dFAA+HSAAPh0sAD4dNAA+HyAAPh8oAD4fNAA+HzwAPh9IAD4fTAA+H1AAPh9UAD4fWAA+H2AAPh9oAD4fbAA+H3AAPh94AD4ffAA+IWgAPiFwAD4heAA+IYAAPiGMAD4hkAA+IZQAPiGYAD4hnAA+IaQAPiGsAD4hsAA+IbQAPiG8AD4hwAA+I6wAPiO0AD4jvAA+I8QAPiPQAD4j1AA+I9gAPiPcAD4j4AA+I+gAPiPwAD4j9AA+I/gAPiQAAD4kBAA+JfAAPiX4AD4mBAA+JgwAPiYYAD4mHAA+JiAAPiYkAD4mKAA+JjAAPiY4AD4mPAA+JkAAPiZIAD4mTAA+KDgAPihAAD4oSAA+KFAAPihcAD4oYAA+KGQAPihoAD4obAA+KHQAPih8AD4ogAA+KIQAPiiMAD4okAA+KnwAPiqEAD4qjAA+KpQAPiqgAD4qpAA+KqgAPiqsAD4qsAA+KrgAPirAAD4qxAA+KsgAPirQAD4q1AA+LMAAPizIAD4s0AA+LNgAPizkAD4s6AA+LOwAPizwAD4s9AA+LPwAPi0EAD4tCAA+LQwAPi0UAD4tGAA+L2QAPi/wAD4wcAA+MPAAPjD4AD4xAAA+MQgAPjEQAD4xHAA+MSAAPjEkAD4xMAA+MTQAPjE8AD4xQAA+MUgAPjFUAD4xWAA+MVwAPjFoAD4xbAA+MYAAPjHkAD4yCAA+MhAAPjIYAD4yPAA+MkgAPjJUAD4yXAA+M4AAPjQQAD40rAA+NTwAPjVIAD41UAA+NVgAPjVgAD41aAA+NXAAPjV0AD41gAA+NeQAPjZoAD42cAA+NngAPjaAAD42iAA+NpAAPjaYAD42oAA+NqgAPjcsAD43OAA+N0QAPjdQAD43XAA+N2gAPjd0AD43gAA+N4wAPjeUAD45gAA+OYgAPjmQAD45mAA+OaQAPjmoAD45rAA+ObAAPjm0AD45vAA+OcQAPjnIAD45zAA+OdQAPjnYAD47xAA+O8wAPjvUAD473AA+O+gAPjvsAD478AA+O/QAPjv4AD48AAA+PAgAPjwMAD48EAA+PBgAPjwcAD4+CAA+PhAAPj4cAD4+JAA+PjAAPj40AD4+OAA+PjwAPj5AAD4+SAA+PlAAPj5UAD4+WAA+PmAAPj5kAD4+yAA+PswAPj7QAD4+2AA+QMQAPkDMAD5A1AA+QNwAPkDoAD5A7AA+QPAAPkD0AD5A+AA+QQAAPkEIAD5BDAA+QRAAPkEYAD5BHAA+QwgAPkMQAD5DGAA+QyAAPkMsAD5DMAA+QzQAPkM4AD5DPAA+Q0QAPkNMAD5DUAA+Q1QAPkNcAD5DYAA+RUwAPkVUAD5FXAA+RWQAPkVwAD5FdAA+RXgAPkV8AD5FgAA+RYgAPkWQAD5FlAA+RZgAPkWgAD5FpAA+R5AAPkeYAD5HoAA+R6gAPke0AD5HuAA+R7wAPkfAAD5HxAA+R8wAPkfUAD5H2AA+R9wAPkfkAD5H6AA+SdQAPkncAD5J5AA+SewAPkn4AD5J/AA+SgAAPkoEAD5KCAA+ShAAPkoYAD5KHAA+SiAAPkooAD5KLAA+S1AAPkvgAD5MfAA+TQwAPk0YAD5NIAA+TSgAPk0wAD5NOAA+TUAAPk1EAD5NUAA+TbQAPk4oAD5OMAA+TjgAPk5AAD5OSAA+TlAAPk5YAD5OYAA+TtQAPk7gAD5O7AA+TvgAPk8EAD5PEAA+TxwAPk8oAD5PMAA+URwAPlEkAD5RMAA+UTgAPlFEAD5RSAA+UUwAPlFQAD5RVAA+UVwAPlFkAD5RaAA+UWwAPlF0AD5ReAA+U2QAPlNsAD5TdAA+U3wAPlOIAD5TjAA+U5AAPlOUAD5TmAA+U6AAPlOoAD5TrAA+U7AAPlO4AD5TvAA+VagAPlWwAD5VuAA+VcAAPlXMAD5V0AA+VdQAPlXYAD5V3AA+VeQAPlXsAD5V8AA+VfQAPlX8AD5WAAA+V+wAPlf0AD5YAAA+WAgAPlgUAD5YGAA+WBwAPlggAD5YJAA+WCwAPlg0AD5YOAA+WDwAPlhEAD5YSAA+WjQAPlo8AD5aRAA+WkwAPlpYAD5aXAA+WmAAPlpkAD5aaAA+WnAAPlp4AD5afAA+WoAAPlqIAD5ajAA+XHgAPlyAAD5ciAA+XJAAPlycAD5coAA+XKQAPlyoAD5crAA+XLQAPly8AD5cwAA+XMQAPlzMAD5c0AA+XrwAPl7EAD5ezAA+XtQAPl7gAD5e5AA+XugAPl7sAD5e8AA+XvgAPl8AAD5fBAA+XwgAPl8QAD5fFAA+YWAAPmHsAD5ibAA+YuwAPmL0AD5i/AA+YwQAPmMMAD5jGAA+YxwAPmMgAD5jLAA+YzAAPmM4AD5jPAA+Y0QAPmNQAD5jVAA+Y1gAPmNkAD5jaAA+Y3wAPmPgAD5kBAA+ZAwAPmQUAD5kOAA+ZEQAPmRQAD5kWAA+ZXwAPmYMAD5mqAA+ZzgAPmdEAD5nTAA+Z1QAPmdcAD5nZAA+Z2wAPmdwAD5nfAA+Z+AAPmhkAD5obAA+aHQAPmh8AD5ohAA+aIwAPmiUAD5onAA+aKQAPmkoAD5pNAA+aUAAPmlMAD5pWAA+aWQAPmlwAD5pfAA+aYgAPmmQAD5rfAA+a4QAPmuMAD5rlAA+a6AAPmukAD5rqAA+a6wAPmuwAD5ruAA+a8AAPmvEAD5ryAA+a9AAPmvUAD5twAA+bcgAPm3QAD5t2AA+beQAPm3oAD5t7AA+bfAAPm30AD5t/AA+bgQAPm4IAD5uDAA+bhQAPm4YAD5wBAA+cAwAPnAYAD5wIAA+cCwAPnAwAD5wNAA+cDgAPnA8AD5wRAA+cEwAPnBQAD5wVAA+cFwAPnBgAD5wxAA+cMgAPnDMAD5w1AA+csAAPnLIAD5y0AA+ctgAPnLkAD5y6AA+cuwAPnLwAD5y9AA+cvwAPnMEAD5zCAA+cwwAPnMUAD5zGAA+dQQAPnUMAD51FAA+dRwAPnUoAD51LAA+dTAAPnU0AD51OAA+dUAAPnVIAD51TAA+dVAAPnVYAD51XAA+d0gAPndQAD53WAA+d2AAPndsAD53cAA+d3QAPnd4AD53fAA+d4QAPneMAD53kAA+d5QAPnecAD53oAA+eYwAPnmUAD55nAA+eaQAPnmwAD55tAA+ebgAPnm8AD55wAA+ecgAPnnQAD551AA+edgAPnngAD555AA+e9AAPnvYAD574AA+e+gAPnv0AD57+AA+e/wAPnwAAD58BAA+fAwAPnwUAD58GAA+fBwAPnwkAD58KAA+fUwAPn3cAD5+eAA+fwgAPn8UAD5/HAA+fyQAPn8sAD5/NAA+fzwAPn9AAD5/TAA+f7AAPoAkAD6ALAA+gDQAPoA8AD6ARAA+gEwAPoBUAD6AXAA+gNAAPoDcAD6A6AA+gPQAPoEAAD6BDAA+gRgAPoEkAD6BLAA+gxgAPoMgAD6DKAA+gzAAPoM8AD6DQAA+g0QAPoNIAD6DTAA+g1QAPoNcAD6DYAA+g2QAPoNsAD6DcAA+hVwAPoVkAD6FbAA+hXQAPoWAAD6FhAA+hYgAPoWMAD6FkAA+hZgAPoWgAD6FpAA+hagAPoWwAD6FtAA+h6AAPoeoAD6HsAA+h7gAPofEAD6HyAA+h8wAPofQAD6H1AA+h9wAPofkAD6H6AA+h+wAPof0AD6H+AA+ieQAPonsAD6J+AA+igAAPooMAD6KEAA+ihQAPooYAD6KHAA+iiQAPoosAD6KMAA+ijQAPoo8AD6KQAA+jCwAPow0AD6MPAA+jEQAPoxQAD6MVAA+jFgAPoxcAD6MYAA+jGgAPoxwAD6MdAA+jHgAPoyAAD6MhAA+jnAAPo54AD6OgAA+jogAPo6UAD6OmAA+jpwAPo6gAD6OpAA+jqwAPo60AD6OuAA+jrwAPo7EAD6OyAA+kLQAPpC8AD6QxAA+kMwAPpDYAD6Q3AA+kOAAPpDkAD6Q6AA+kPAAPpD4AD6Q/AA+kQAAPpEIAD6RDAA+k1gAPpPkAD6UZAA+lOQAPpTsAD6U9AA+lPwAPpUEAD6VEAA+lRQAPpUYAD6VJAA+lSgAPpUwAD6VNAA+lTwAPpVIAD6VTAA+lVAAPpVcAD6VYAA+lXQAPpXYAD6V/AA+lgQAPpYMAD6WMAA+ljwAPpZIAD6WUAA+l3QAPpgEAD6YoAA+mTAAPpk8AD6ZRAA+mUwAPplUAD6ZXAA+mWQAPploAD6ZdAA+mdgAPppcAD6aZAA+mmwAPpp0AD6afAA+moQAPpqMAD6alAA+mpwAPpsgAD6bLAA+mzgAPptEAD6bUAA+m1wAPptoAD6bdAA+m4AAPpuIAD6ddAA+nXwAPp2EAD6djAA+nZgAPp2cAD6doAA+naQAPp2oAD6dsAA+nbgAPp28AD6dwAA+ncgAPp3MAD6fuAA+n8AAPp/IAD6f0AA+n9wAPp/gAD6f5AA+n+gAPp/sAD6f9AA+n/wAPqAAAD6gBAA+oAwAPqAQAD6h/AA+ogQAPqIQAD6iGAA+oiQAPqIoAD6iLAA+ojAAPqI0AD6iPAA+okQAPqJIAD6iTAA+olQAPqJYAD6ivAA+osAAPqLEAD6izAA+pLgAPqTAAD6kyAA+pNAAPqTcAD6k4AA+pOQAPqToAD6k7AA+pPQAPqT8AD6lAAA+pQQAPqUMAD6lEAA+pvwAPqcEAD6nDAA+pxQAPqcgAD6nJAA+pygAPqcsAD6nMAA+pzgAPqdAAD6nRAA+p0gAPqdQAD6nVAA+qUAAPqlIAD6pUAA+qVgAPqlkAD6paAA+qWwAPqlwAD6pdAA+qXwAPqmEAD6piAA+qYwAPqmUAD6pmAA+q4QAPquMAD6rlAA+q5wAPquoAD6rrAA+q7AAPqu0AD6ruAA+q8AAPqvIAD6rzAA+q9AAPqvYAD6r3AA+rcgAPq3QAD6t2AA+reAAPq3sAD6t8AA+rfQAPq34AD6t/AA+rgQAPq4MAD6uEAA+rhQAPq4cAD6uIAA+r0QAPq/UAD6wcAA+sQAAPrEMAD6xFAA+sRwAPrEkAD6xLAA+sTQAPrE4AD6xRAA+sagAPrIcAD6yJAA+siwAPrI0AD6yPAA+skQAPrJMAD6yVAA+ssgAPrLUAD6y4AA+suwAPrL4AD6zBAA+sxAAPrMcAD6zJAA+tRAAPrUYAD61IAA+tSgAPrU0AD61OAA+tTwAPrVAAD61RAA+tUwAPrVUAD61WAA+tVwAPrVkAD61aAA+t1QAPrdcAD63ZAA+t2wAPrd4AD63fAA+t4AAPreEAD63iAA+t5AAPreYAD63nAA+t6AAPreoAD63rAA+uZgAPrmgAD65qAA+ubAAPrm8AD65wAA+ucQAPrnIAD65zAA+udQAPrncAD654AA+ueQAPrnsAD658AA+u9wAPrvkAD678AA+u/gAPrwEAD68CAA+vAwAPrwQAD68FAA+vBwAPrwkAD68KAA+vCwAPrw0AD68OAA+viQAPr4sAD6+NAA+vjwAPr5IAD6+TAA+vlAAPr5UAD6+WAA+vmAAPr5oAD6+bAA+vnAAPr54AD6+fAA+wGgAPsBwAD7AeAA+wIAAPsCMAD7AkAA+wJQAPsCYAD7AnAA+wKQAPsCsAD7AsAA+wLQAPsC8AD7AwAA+wqwAPsK0AD7CvAA+wsQAPsLQAD7C1AA+wtgAPsLcAD7C4AA+wugAPsLwAD7C9AA+wvgAPsMAAD7DBAA+xVAAPsXcAD7GXAA+xtwAPsbkAD7G7AA+xvQAPsb8AD7HCAA+xwwAPscQAD7HHAA+xyAAPscoAD7HLAA+xzQAPsdAAD7HRAA+x0gAPsdUAD7HWAA+x2wAPsfQAD7H9AA+x/wAPsgEAD7IKAA+yDQAPshAAD7ISAA+yWwAPsn8AD7KmAA+yygAPss0AD7LPAA+y0QAPstMAD7LVAA+y1wAPstgAD7LbAA+y9AAPsxUAD7MXAA+zGQAPsxsAD7MdAA+zHwAPsyEAD7MjAA+zJQAPs0YAD7NJAA+zTAAPs08AD7NSAA+zVQAPs1gAD7NbAA+zXgAPs2AAD7PbAA+z3QAPs98AD7PhAA+z5AAPs+UAD7PmAA+z5wAPs+gAD7PqAA+z7AAPs+0AD7PuAA+z8AAPs/EAD7RsAA+0bgAPtHAAD7RyAA+0dQAPtHYAD7R3AA+0eAAPtHkAD7R7AA+0fQAPtH4AD7R/AA+0gQAPtIIAD7T9AA+0/wAPtQIAD7UEAA+1BwAPtQgAD7UJAA+1CgAPtQsAD7UNAA+1DwAPtRAAD7URAA+1EwAPtRQAD7UtAA+1LgAPtS8AD7UxAA+1rAAPta4AD7WwAA+1sgAPtbUAD7W2AA+1twAPtbgAD7W5AA+1uwAPtb0AD7W+AA+1vwAPtcEAD7XCAA+2PQAPtj8AD7ZBAA+2QwAPtkYAD7ZHAA+2SAAPtkkAD7ZKAA+2TAAPtk4AD7ZPAA+2UAAPtlIAD7ZTAA+2zgAPttAAD7bSAA+21AAPttcAD7bYAA+22QAPttoAD7bbAA+23QAPtt8AD7bgAA+24QAPtuMAD7bkAA+3XwAPt2EAD7djAA+3ZQAPt2gAD7dpAA+3agAPt2sAD7dsAA+3bgAPt3AAD7dxAA+3cgAPt3QAD7d1AA+38AAPt/IAD7f0AA+39gAPt/kAD7f6AA+3+wAPt/wAD7f9AA+3/wAPuAEAD7gCAA+4AwAPuAUAD7gGAA+4TwAPuHMAD7iaAA+4vgAPuMEAD7jDAA+4xQAPuMcAD7jJAA+4ywAPuMwAD7jPAA+46AAPuQUAD7kHAA+5CQAPuQsAD7kNAA+5DwAPuREAD7kTAA+5MAAPuTMAD7k2AA+5OQAPuTwAD7k/AA+5QgAPuUUAD7lHAA+5wgAPucQAD7nHAA+5yQAPucwAD7nNAA+5zgAPuc8AD7nQAA+50gAPudQAD7nVAA+51gAPudgAD7nZAA+6VAAPulYAD7pYAA+6WgAPul0AD7peAA+6XwAPumAAD7phAA+6YwAPumUAD7pmAA+6ZwAPumkAD7pqAA+65QAPuucAD7rpAA+66wAPuu4AD7rvAA+68AAPuvEAD7ryAA+69AAPuvYAD7r3AA+6+AAPuvoAD7r7AA+7dgAPu3gAD7t7AA+7fQAPu4AAD7uBAA+7ggAPu4MAD7uEAA+7hgAPu4gAD7uJAA+7igAPu4wAD7uNAA+8CAAPvAoAD7wMAA+8DgAPvBEAD7wSAA+8EwAPvBQAD7wVAA+8FwAPvBkAD7waAA+8GwAPvB0AD7weAA+8mQAPvJsAD7ydAA+8nwAPvKIAD7yjAA+8pAAPvKUAD7ymAA+8qAAPvKoAD7yrAA+8rAAPvK4AD7yvAA+9KgAPvSwAD70uAA+9MAAPvTMAD700AA+9NQAPvTYAD703AA+9OQAPvTsAD708AA+9PQAPvT8AD71AAA+9UQAPvVIAD71UAA+9zwAPvdEAD73TAA+91QAPvdgAD73ZAA+92gAPvdsAD73cAA+93gAPveEAD73iAA+94wAPveUAD73mAA++YQAPvmMAD75lAA++ZwAPvmoAD75rAA++bAAPvm0AD75uAA++cAAPvnMAD750AA++dQAPvncAD754AA++8wAPvvUAD774AA+++gAPvv0AD77+AA++/wAPvwAAD78BAA+/AwAPvwYAD78HAA+/CAAPvwoAD78LAA+/ngAPv8EAD7/hAA/AAQAPwAMAD8AFAA/ABwAPwAkAD8AMAA/ADQAPwA4AD8ARAA/AEgAPwBQAD8AVAA/AFwAPwBoAD8AbAA/AHAAPwB8AD8AgAA/AJQAPwD4AD8BHAA/ASQAPwEsAD8BUAA/AVwAPwFoAD8BcAA/ApQAPwMkAD8DwAA/BFAAPwRcAD8EZAA/BGwAPwR0AD8EfAA/BIQAPwSIAD8ElAA/BPgAPwV8AD8FhAA/BYwAPwWUAD8FnAA/BaQAPwWsAD8FtAA/BbwAPwZAAD8GTAA/BlgAPwZkAD8GcAA/BnwAPwaIAD8GlAA/BqAAPwaoAD8IlAA/CJwAPwikAD8IrAA/CLgAPwi8AD8IwAA/CMQAPwjIAD8I0AA/CNgAPwjcAD8I4AA/COgAPwjsAD8K2AA/CuAAPwroAD8K8AA/CvwAPwsAAD8LBAA/CwgAPwsMAD8LFAA/CxwAPwsgAD8LJAA/CywAPwswAD8NHAA/DSQAPw0wAD8NOAA/DUQAPw1IAD8NTAA/DVAAPw1UAD8NXAA/DWQAPw1oAD8NbAA/DXQAPw14AD8N3AA/DeAAPw3kAD8N7AA/D9gAPw/gAD8P6AA/D/AAPw/8AD8QAAA/EAQAPxAIAD8QDAA/EBQAPxAcAD8QIAA/ECQAPxAsAD8QMAA/EhwAPxIkAD8SLAA/EjQAPxJAAD8SRAA/EkgAPxJMAD8SUAA/ElgAPxJgAD8SZAA/EmgAPxJwAD8SdAA/FGAAPxRoAD8UcAA/FHgAPxSEAD8UiAA/FIwAPxSQAD8UlAA/FJwAPxSkAD8UqAA/FKwAPxS0AD8UuAA/FqQAPxasAD8WtAA/FrwAPxbIAD8WzAA/FtAAPxbUAD8W2AA/FuAAPxboAD8W7AA/FvAAPxb4AD8W/AA/GOgAPxjwAD8Y+AA/GQAAPxkMAD8ZEAA/GRQAPxkYAD8ZHAA/GSQAPxksAD8ZMAA/GTQAPxk8AD8ZQAA/GmQAPxr0AD8bkAA/HCAAPxwsAD8cNAA/HDwAPxxEAD8cTAA/HFQAPxxYAD8cZAA/HMgAPx08AD8dRAA/HUwAPx1UAD8dXAA/HWQAPx1sAD8ddAA/HegAPx30AD8eAAA/HgwAPx4YAD8eJAA/HjAAPx48AD8eRAA/IDAAPyA4AD8gQAA/IEgAPyBUAD8gWAA/IFwAPyBgAD8gZAA/IGwAPyB0AD8geAA/IHwAPyCEAD8giAA/InQAPyJ8AD8ihAA/IowAPyKYAD8inAA/IqAAPyKkAD8iqAA/IrAAPyK4AD8ivAA/IsAAPyLIAD8izAA/JLgAPyTAAD8kyAA/JNAAPyTcAD8k4AA/JOQAPyToAD8k7AA/JPQAPyT8AD8lAAA/JQQAPyUMAD8lEAA/JvwAPycEAD8nEAA/JxgAPyckAD8nKAA/JywAPycwAD8nNAA/JzwAPydEAD8nSAA/J0wAPydUAD8nWAA/KUQAPylMAD8pVAA/KVwAPyloAD8pbAA/KXAAPyl0AD8peAA/KYAAPymIAD8pjAA/KZAAPymYAD8pnAA/K4gAPyuQAD8rmAA/K6AAPyusAD8rsAA/K7QAPyu4AD8rvAA/K8QAPyvMAD8r0AA/K9QAPyvcAD8r4AA/LcwAPy3UAD8t3AA/LeQAPy3wAD8t9AA/LfgAPy38AD8uAAA/LggAPy4QAD8uFAA/LhgAPy4gAD8uJAA/MHAAPzD8AD8xfAA/MfwAPzIEAD8yDAA/MhQAPzIcAD8yKAA/MiwAPzIwAD8yPAA/MkAAPzJIAD8yTAA/MlQAPzJgAD8yZAA/MmgAPzJ0AD8yeAA/MowAPzLwAD8zFAA/MxwAPzMkAD8zSAA/M1QAPzNgAD8zaAA/NIwAPzUcAD81uAA/NkgAPzZUAD82XAA/NmQAPzZsAD82dAA/NnwAPzaAAD82jAA/NvAAPzd0AD83fAA/N4QAPzeMAD83lAA/N5wAPzekAD83rAA/N7QAPzg4AD84RAA/OFAAPzhcAD84aAA/OHQAPziAAD84jAA/OJgAPzigAD86jAA/OpQAPzqcAD86pAA/OrAAPzq0AD86uAA/OrwAPzrAAD86yAA/OtAAPzrUAD862AA/OuAAPzrkAD880AA/PNgAPzzgAD886AA/PPQAPzz4AD88/AA/PQAAPz0EAD89DAA/PRQAPz0YAD89HAA/PSQAPz0oAD8/FAA/PxwAPz8oAD8/MAA/PzwAPz9AAD8/RAA/P0gAPz9MAD8/VAA/P1wAPz9gAD8/ZAA/P2wAPz9wAD8/1AA/P9gAPz/cAD8/5AA/QdAAP0HYAD9B4AA/QegAP0H0AD9B+AA/QfwAP0IAAD9CBAA/QgwAP0IUAD9CGAA/QhwAP0IkAD9CKAA/RBQAP0QcAD9EJAA/RCwAP0Q4AD9EPAA/REAAP0READ9ESAA/RFAAP0RYAD9EXAA/RGAAP0RoAD9EbAA/RlgAP0ZgAD9GaAA/RnAAP0Z8AD9GgAA/RoQAP0aIAD9GjAA/RpQAP0acAD9GoAA/RqQAP0asAD9GsAA/SJwAP0ikAD9IrAA/SLQAP0jAAD9IxAA/SMgAP0jMAD9I0AA/SNgAP0jgAD9I5AA/SOgAP0jwAD9I9AA/SuAAP0roAD9K8AA/SvgAP0sEAD9LCAA/SwwAP0sQAD9LFAA/SxwAP0skAD9LKAA/SywAP0s0AD9LOAA/TFwAP0zsAD9NiAA/ThgAP04kAD9OLAA/TjQAP048AD9ORAA/TkwAP05QAD9OXAA/TsAAP080AD9PPAA/T0QAP09MAD9PVAA/T1wAP09kAD9PbAA/T+AAP0/sAD9P+AA/UAQAP1AQAD9QHAA/UCgAP1A0AD9QPAA/UigAP1IwAD9SOAA/UkAAP1JMAD9SUAA/UlQAP1JYAD9SXAA/UmQAP1JsAD9ScAA/UnQAP1J8AD9SgAA/VGwAP1R0AD9UfAA/VIQAP1SQAD9UlAA/VJgAP1ScAD9UoAA/VKgAP1SwAD9UtAA/VLgAP1TAAD9UxAA/VrAAP1a4AD9WwAA/VsgAP1bUAD9W2AA/VtwAP1bgAD9W5AA/VuwAP1b0AD9W+AA/VvwAP1cEAD9XCAA/WPQAP1j8AD9ZCAA/WRAAP1kcAD9ZIAA/WSQAP1koAD9ZLAA/WTQAP1k8AD9ZQAA/WUQAP1lMAD9ZUAA/WzwAP1tEAD9bTAA/W1QAP1tgAD9bZAA/W2gAP1tsAD9bcAA/W3gAP1uAAD9bhAA/W4gAP1uQAD9blAA/XYAAP12IAD9dkAA/XZgAP12kAD9dqAA/XawAP12wAD9dtAA/XbwAP13EAD9dyAA/XcwAP13UAD9d2AA/X8QAP1/MAD9f1AA/X9wAP1/oAD9f7AA/X/AAP1/0AD9f+AA/YAAAP2AIAD9gDAA/YBAAP2AYAD9gHAA/YmgAP2L0AD9jdAA/Y/QAP2P8AD9kBAA/ZAwAP2QUAD9kIAA/ZCQAP2QoAD9kNAA/ZDgAP2RAAD9kRAA/ZEwAP2RYAD9kXAA/ZGAAP2RsAD9kcAA/ZIQAP2ToAD9lDAA/ZRQAP2UcAD9lQAA/ZUwAP2VYAD9lYAA/ZoQAP2cUAD9nsAA/aEAAP2hMAD9oVAA/aFwAP2hkAD9obAA/aHQAP2h4AD9ohAA/aOgAP2lsAD9pdAA/aXwAP2mEAD9pjAA/aZQAP2mcAD9ppAA/aawAP2owAD9qPAA/akgAP2pUAD9qYAA/amwAP2p4AD9qhAA/apAAP2qYAD9shAA/bIwAP2yUAD9snAA/bKgAP2ysAD9ssAA/bLQAP2y4AD9swAA/bMgAP2zMAD9s0AA/bNgAP2zcAD9uyAA/btAAP27YAD9u4AA/buwAP27wAD9u9AA/bvgAP278AD9vBAA/bwwAP28QAD9vFAA/bxwAP28gAD9xDAA/cRQAP3EgAD9xKAA/cTQAP3E4AD9xPAA/cUAAP3FEAD9xTAA/cVQAP3FYAD9xXAA/cWQAP3FoAD9xzAA/cdAAP3HUAD9x3AA/c8gAP3PQAD9z2AA/c+AAP3PsAD9z8AA/c/QAP3P4AD9z/AA/dAQAP3QMAD90EAA/dBQAP3QcAD90IAA/dgwAP3YUAD92HAA/diQAP3YwAD92NAA/djgAP3Y8AD92QAA/dkgAP3ZQAD92VAA/dlgAP3ZgAD92ZAA/eFAAP3hYAD94YAA/eGgAP3h0AD94eAA/eHwAP3iAAD94hAA/eIwAP3iUAD94mAA/eJwAP3ikAD94qAA/epQAP3qcAD96pAA/eqwAP3q4AD96vAA/esAAP3rEAD96yAA/etAAP3rYAD963AA/euAAP3roAD967AA/fNgAP3zgAD986AA/fPAAP3z8AD99AAA/fQQAP30IAD99DAA/fRQAP30cAD99IAA/fSQAP30sAD99MAA/flQAP37kAD9/gAA/gBAAP4AcAD+AJAA/gCwAP4A0AD+APAA/gEQAP4BIAD+AVAA/gLgAP4EsAD+BNAA/gTwAP4FEAD+BTAA/gVQAP4FcAD+BZAA/gdgAP4HkAD+B8AA/gfwAP4IIAD+CFAA/giAAP4IsAD+CNAA/hCAAP4QoAD+EMAA/hDgAP4READ+ESAA/hEwAP4RQAD+EVAA/hFwAP4RkAD+EaAA/hGwAP4R0AD+EeAA/hmQAP4ZsAD+GdAA/hnwAP4aIAD+GjAA/hpAAP4aUAD+GmAA/hqAAP4aoAD+GrAA/hrAAP4a4AD+GvAA/iKgAP4iwAD+IuAA/iMAAP4jMAD+I0AA/iNQAP4jYAD+I3AA/iOQAP4jsAD+I8AA/iPQAP4j8AD+JAAA/iuwAP4r0AD+LAAA/iwgAP4sUAD+LGAA/ixwAP4sgAD+LJAA/iywAP4s0AD+LOAA/izwAP4tEAD+LSAA/jTQAP408AD+NRAA/jUwAP41YAD+NXAA/jWAAP41kAD+NaAA/jXAAP414AD+NfAA/jYAAP42IAD+NjAA/j3gAP4+AAD+PiAA/j5AAP4+cAD+PoAA/j6QAP4+oAD+PrAA/j7QAP4+8AD+PwAA/j8QAP4/MAD+P0AA/kbwAP5HEAD+RzAA/kdQAP5HgAD+R5AA/kegAP5HsAD+R8AA/kfgAP5IAAD+SBAA/kggAP5IQAD+SFAA/lGAAP5TsAD+VbAA/lewAP5X0AD+V/AA/lgQAP5YMAD+WGAA/lhwAP5YgAD+WLAA/ljAAP5Y4AD+WPAA/lkQAP5ZQAD+WVAA/llgAP5ZkAD+WaAA/lnwAP5bgAD+XBAA/lwwAP5cUAD+XOAA/l0QAP5dQAD+XWAA/mHwAP5kMAD+ZqAA/mjgAP5pEAD+aTAA/mlQAP5pcAD+aZAA/mmwAP5pwAD+afAA/muAAP5tkAD+bbAA/m3QAP5t8AD+bhAA/m4wAP5uUAD+bnAA/m6QAP5woAD+cNAA/nEAAP5xMAD+cWAA/nGQAP5xwAD+cfAA/nIgAP5yQAD+efAA/noQAP56MAD+elAA/nqAAP56kAD+eqAA/nqwAP56wAD+euAA/nsAAP57EAD+eyAA/ntAAP57UAD+gwAA/oMgAP6DQAD+g2AA/oOQAP6DoAD+g7AA/oPAAP6D0AD+g/AA/oQQAP6EIAD+hDAA/oRQAP6EYAD+jBAA/owwAP6MYAD+jIAA/oywAP6MwAD+jNAA/ozgAP6M8AD+jRAA/o0wAP6NQAD+jVAA/o1wAP6NgAD+jxAA/o8gAP6PMAD+j1AA/pcAAP6XIAD+l0AA/pdgAP6XkAD+l6AA/pewAP6XwAD+l9AA/pfwAP6YEAD+mCAA/pgwAP6YUAD+mGAA/qAQAP6gMAD+oFAA/qBwAP6goAD+oLAA/qDAAP6g0AD+oOAA/qEAAP6hIAD+oTAA/qFAAP6hYAD+oXAA/qkgAP6pQAD+qWAA/qmAAP6psAD+qcAA/qnQAP6p4AD+qfAA/qoQAP6qMAD+qkAA/qpQAP6qcAD+qoAA/rIwAP6yUAD+snAA/rKQAP6ywAD+stAA/rLgAP6y8AD+swAA/rMgAP6zQAD+s1AA/rNgAP6zgAD+s5AA/rtAAP67YAD+u4AA/rugAP670AD+u+AA/rvwAP68AAD+vBAA/rwwAP68UAD+vGAA/rxwAP68kAD+vKAA/sEwAP7DcAD+xeAA/sggAP7IUAD+yHAA/siQAP7IsAD+yNAA/sjwAP7JAAD+yTAA/srAAP7MkAD+zLAA/szQAP7M8AD+zRAA/s0wAP7NUAD+zXAA/s9AAP7PcAD+z6AA/s/QAP7QAAD+0DAA/tBgAP7QkAD+0LAA/thgAP7YgAD+2KAA/tjAAP7Y8AD+2QAA/tkQAP7ZIAD+2TAA/tlQAP7ZcAD+2YAA/tmQAP7ZsAD+2cAA/uFwAP7hkAD+4bAA/uHQAP7iAAD+4hAA/uIgAP7iMAD+4kAA/uJgAP7igAD+4pAA/uKgAP7iwAD+4tAA/uqAAP7qoAD+6sAA/urgAP7rEAD+6yAA/uswAP7rQAD+61AA/utwAP7rkAD+66AA/uuwAP7r0AD+6+AA/vOQAP7zsAD+8+AA/vQAAP70MAD+9EAA/vRQAP70YAD+9HAA/vSQAP70sAD+9MAA/vTQAP708AD+9QAA/vywAP780AD+/PAA/v0QAP79QAD+/VAA/v1gAP79cAD+/YAA/v2gAP79wAD+/dAA/v3gAP7+AAD+/hAA/wXAAP8F4AD/BgAA/wYgAP8GUAD/BmAA/wZwAP8GgAD/BpAA/wawAP8G0AD/BuAA/wbwAP8HEAD/ByAA/w7QAP8O8AD/DxAA/w8wAP8PYAD/D3AA/w+AAP8PkAD/D6AA/w/AAP8P4AD/D/AA/xAAAP8QIAD/EDAA/xlgAP8bkAD/HZAA/x+QAP8fsAD/H9AA/x/wAP8gEAD/IEAA/yBQAP8gYAD/IJAA/yCgAP8gwAD/INAA/yDwAP8hIAD/ITAA/yFAAP8hcAD/IYAA/yHQAP8jYAD/I/AA/yQQAP8kMAD/JMAA/yTwAP8lIAD/JUAA/ynQAP8sEAD/LoAA/zDAAP8w8AD/MRAA/zEwAP8xUAD/MXAA/zGQAP8xoAD/MdAA/zNgAP81cAD/NZAA/zWwAP810AD/NfAA/zYQAP82MAD/NlAA/zZwAP84gAD/OLAA/zjgAP85EAD/OUAA/zlwAP85oAD/OdAA/zoAAP86IAD/QdAA/0HwAP9CEAD/QjAA/0JgAP9CcAD/QoAA/0KQAP9CoAD/QsAA/0LgAP9C8AD/QwAA/0MgAP9DMAD/SuAA/0sAAP9LIAD/S0AA/0twAP9LgAD/S5AA/0ugAP9LsAD/S9AA/0vwAP9MAAD/TBAA/0wwAP9MQAD/U/AA/1QQAP9UQAD/VGAA/1SQAP9UoAD/VLAA/1TAAP9U0AD/VPAA/1UQAP9VIAD/VTAA/1VQAP9VYAD/VvAA/1cAAP9XEAD/VzAA/17gAP9fAAD/XyAA/19AAP9fcAD/X4AA/1+QAP9foAD/X7AA/1/QAP9f8AD/YAAA/2AQAP9gMAD/YEAA/2fwAP9oEAD/aDAA/2hQAP9ogAD/aJAA/2igAP9osAD/aMAA/2jgAP9pAAD/aRAA/2kgAP9pQAD/aVAA/3EAAP9xIAD/cUAA/3FgAP9xkAD/caAA/3GwAP9xwAD/cdAA/3HwAP9yEAD/ciAA/3IwAP9yUAD/cmAA/3oQAP96MAD/elAA/3pwAP96oAD/erAA/3rAAP960AD/euAA/3sAAP97IAD/ezAA/3tAAP97YAD/e3AA/4MgAP+DQAD/g2AA/4OAAP+DsAD/g8AA/4PQAP+D4AD/g/AA/4QQAP+EMAD/hEAA/4RQAP+EcAD/hIAA/4kQAP+LUAD/jcAA/5AAAP+QMAD/kFAA/5BwAP+QkAD/kLAA/5DQAP+Q4AD/kRAA/5KgAP+UcAD/lJAA/5SwAP+U0AD/lPAA/5UQAP+VMAD/lVAA/5cgAP+XUAD/l4AA/5ewAP+X4AD/mBAA/5hAAP+YcAD/mJAA/6BAAP+gYAD/oIAA/6CgAP+g0AD/oOAA/6DwAP+hAAD/oRAA/6EwAP+hUAD/oWAA/6FwAP+hkAD/oaAA/6lQAP+pcAD/qZAA/6mwAP+p4AD/qfAA/6oAAP+qEAD/qiAA/6pAAP+qYAD/qnAA/6qAAP+qoAD/qrAA/7JgAP+ygAD/sqAA/7LAAP+y8AD/swAA/7MQAP+zIAD/szAA/7NQAP+zcAD/s4AA/7OQAP+zsAD/s8AA/7twAP+7kAD/u7AA/7vQAP+8AAD/vBAA/7wgAP+8MAD/vEAA/7xgAP+8gAD/vJAA/7ygAP+8wAD/vNAA/8SAAP/EoAD/xMAA/8TgAP/FEAD/xSAA/8UwAP/FQAD/xVAA/8VwAP/FkAD/xaAA/8WwAP/F0AD/xeAA/82QAP/NsAD/zdAA/83wAP/OIAD/zjAA/85AAP/OUAD/zmAA/86AAP/OoAD/zrAA/87AAP/O4AD/zvAA/9agAP/WwAD/1uAA/9cAAP/XMAD/10AA/9dQAP/XYAD/13AA/9eQAP/XsAD/18AA/9fQAP/X8AD/2AAA/9kQAP/ZIAD/2UAA/+DwAP/hEAD/4TAA/+FQAP/hgAD/4ZAA/+GgAP/hsAD/4cAA/+HgAP/iEAD/4iAA/+IwAP/iUAD/4mAA/+oQAP/qMAD/6lAA/+pwAP/qoAD/6rAA/+rAAP/q0AD/6uAA/+sAAP/rMAD/60AA/+tQAP/rcAD/64AA//MwAP/zUAD/84AA//OgAP/z0AD/8+AA//PwAP/0AAD/9BAA//QwAP/0YAD/9HAA//SAAP/0oAD/9LAA//3gAQAAEAEAAhABAAQQAQAEMAEABFABAARwAQAEkAEABMABAATQAQAE4AEABRABAAUgAQAFQAEABVABAAVwAQAFoAEABbABAAXAAQAF8AEABgABAAZQAQAH4AEACHABAAiQAQAIsAEACUABAAlwAQAJoAEACcABAA5QAQAQkAEAEwABABVAAQAVcAEAFZABABWwAQAV0AEAFfABABYQAQAWIAEAFlABABfgAQAZ8AEAGhABABowAQAaUAEAGnABABqQAQAasAEAGtABABrwAQAdAAEAHTABAB1gAQAdkAEAHcABAB3wAQAeIAEAHlABAB6AAQAeoAEAJlABACZwAQAmkAEAJrABACbgAQAm8AEAJwABACcQAQAnIAEAJ0ABACdgAQAncAEAJ4ABACegAQAnsAEAL2ABAC+AAQAvoAEAL8ABAC/wAQAwAAEAMBABADAgAQAwMAEAMFABADBwAQAwgAEAMJABADCwAQAwwAEAOHABADiQAQA4wAEAOOABADkQAQA5IAEAOTABADlAAQA5UAEAOXABADmQAQA5oAEAObABADnQAQA54AEAO3ABADuAAQA7kAEAO7ABAENgAQBDgAEAQ6ABAEPAAQBD8AEARAABAEQQAQBEIAEARDABAERQAQBEcAEARIABAESQAQBEsAEARMABAExwAQBMkAEATLABAEzQAQBNAAEATRABAE0gAQBNMAEATUABAE1gAQBNgAEATZABAE2gAQBNwAEATdABAFWAAQBVoAEAVcABAFXgAQBWEAEAViABAFYwAQBWQAEAVlABAFZwAQBWkAEAVqABAFawAQBW0AEAVuABAF6QAQBesAEAXtABAF7wAQBfIAEAXzABAF9AAQBfUAEAX2ABAF+AAQBfoAEAX7ABAF/AAQBf4AEAX/ABAGegAQBnwAEAZ+ABAGgAAQBoMAEAaEABAGhQAQBoYAEAaHABAGiQAQBosAEAaMABAGjQAQBo8AEAaQABAG2QAQBv0AEAckABAHSAAQB0sAEAdNABAHTwAQB1EAEAdTABAHVQAQB1YAEAdZABAHcgAQB48AEAeRABAHkwAQB5UAEAeXABAHmQAQB5sAEAedABAHugAQB70AEAfAABAHwwAQB8YAEAfJABAHzAAQB88AEAfRABAITAAQCE4AEAhRABAIUwAQCFYAEAhXABAIWAAQCFkAEAhaABAIXAAQCF4AEAhfABAIYAAQCGIAEAhjABAI3gAQCOAAEAjiABAI5AAQCOcAEAjoABAI6QAQCOoAEAjrABAI7QAQCO8AEAjwABAI8QAQCPMAEAj0ABAJbwAQCXEAEAlzABAJdQAQCXgAEAl5ABAJegAQCXsAEAl8ABAJfgAQCYAAEAmBABAJggAQCYQAEAmFABAKAAAQCgIAEAoFABAKBwAQCgoAEAoLABAKDAAQCg0AEAoOABAKEAAQChIAEAoTABAKFAAQChYAEAoXABAKkgAQCpQAEAqWABAKmAAQCpsAEAqcABAKnQAQCp4AEAqfABAKoQAQCqMAEAqkABAKpQAQCqcAEAqoABALIwAQCyUAEAsnABALKQAQCywAEAstABALLgAQCy8AEAswABALMgAQCzQAEAs1ABALNgAQCzgAEAs5ABALtAAQC7YAEAu4ABALugAQC70AEAu+ABALvwAQC8AAEAvBABALwwAQC8UAEAvGABALxwAQC8kAEAvKABAMXQAQDIAAEAygABAMwAAQDMIAEAzEABAMxgAQDMgAEAzLABAMzAAQDM0AEAzQABAM0QAQDNMAEAzUABAM1gAQDNkAEAzaABAM2wAQDN4AEAzfABAM5AAQDP0AEA0GABANCAAQDQoAEA0TABANFgAQDRkAEA0bABANZAAQDYgAEA2vABAN0wAQDdYAEA3YABAN2gAQDdwAEA3eABAN4AAQDeEAEA3kABAN/QAQDh4AEA4gABAOIgAQDiQAEA4mABAOKAAQDioAEA4sABAOLgAQDk8AEA5SABAOVQAQDlgAEA5bABAOXgAQDmEAEA5kABAOZwAQDmkAEA7kABAO5gAQDugAEA7qABAO7QAQDu4AEA7vABAO8AAQDvEAEA7zABAO9QAQDvYAEA73ABAO+QAQDvoAEA91ABAPdwAQD3kAEA97ABAPfgAQD38AEA+AABAPgQAQD4IAEA+EABAPhgAQD4cAEA+IABAPigAQD4sAEBAGABAQCAAQEAsAEBANABAQEAAQEBEAEBASABAQEwAQEBQAEBAWABAQGAAQEBkAEBAaABAQHAAQEB0AEBA2ABAQNwAQEDgAEBA6ABAQtQAQELcAEBC5ABAQuwAQEL4AEBC/ABAQwAAQEMEAEBDCABAQxAAQEMYAEBDHABAQyAAQEMoAEBDLABARRgAQEUgAEBFKABARTAAQEU8AEBFQABARUQAQEVIAEBFTABARVQAQEVcAEBFYABARWQAQEVsAEBFcABAR1wAQEdkAEBHbABAR3QAQEeAAEBHhABAR4gAQEeMAEBHkABAR5gAQEegAEBHpABAR6gAQEewAEBHtABASaAAQEmoAEBJsABASbgAQEnEAEBJyABAScwAQEnQAEBJ1ABASdwAQEnkAEBJ6ABASewAQEn0AEBJ+ABAS+QAQEvsAEBL9ABAS/wAQEwIAEBMDABATBAAQEwUAEBMGABATCAAQEwoAEBMLABATDAAQEw4AEBMPABATWAAQE3wAEBOjABATxwAQE8oAEBPMABATzgAQE9AAEBPSABAT1AAQE9UAEBPYABAT8QAQFA4AEBQQABAUEgAQFBQAEBQWABAUGAAQFBoAEBQcABAUOQAQFDwAEBQ/ABAUQgAQFEUAEBRIABAUSwAQFE4AEBRQABAUywAQFM0AEBTPABAU0QAQFNQAEBTVABAU1gAQFNcAEBTYABAU2gAQFNwAEBTdABAU3gAQFOAAEBThABAVXAAQFV4AEBVgABAVYgAQFWUAEBVmABAVZwAQFWgAEBVpABAVawAQFW0AEBVuABAVbwAQFXEAEBVyABAV7QAQFe8AEBXxABAV8wAQFfYAEBX3ABAV+AAQFfkAEBX6ABAV/AAQFf4AEBX/ABAWAAAQFgIAEBYDABAWfgAQFoAAEBaDABAWhQAQFogAEBaJABAWigAQFosAEBaMABAWjgAQFpAAEBaRABAWkgAQFpQAEBaVABAXEAAQFxIAEBcUABAXFgAQFxkAEBcaABAXGwAQFxwAEBcdABAXHwAQFyEAEBciABAXIwAQFyUAEBcmABAXoQAQF6MAEBelABAXpwAQF6oAEBerABAXrAAQF60AEBeuABAXsAAQF7IAEBezABAXtAAQF7YAEBe3ABAYMgAQGDQAEBg2ABAYOAAQGDsAEBg8ABAYPQAQGD4AEBg/ABAYQQAQGEMAEBhEABAYRQAQGEcAEBhIABAY2wAQGP4AEBkeABAZPgAQGUAAEBlCABAZRAAQGUYAEBlJABAZSgAQGUsAEBlOABAZTwAQGVEAEBlSABAZVAAQGVcAEBlYABAZWQAQGVwAEBldABAZYgAQGXsAEBmEABAZhgAQGYgAEBmRABAZlAAQGZcAEBmZABAZ4gAQGgYAEBotABAaUQAQGlQAEBpWABAaWAAQGloAEBpcABAaXgAQGl8AEBpiABAaewAQGpwAEBqeABAaoAAQGqIAEBqkABAapgAQGqgAEBqqABAarAAQGs0AEBrQABAa0wAQGtYAEBrZABAa3AAQGt8AEBriABAa5QAQGucAEBtiABAbZAAQG2YAEBtoABAbawAQG2wAEBttABAbbgAQG28AEBtxABAbcwAQG3QAEBt1ABAbdwAQG3gAEBvzABAb9QAQG/cAEBv5ABAb/AAQG/0AEBv+ABAb/wAQHAAAEBwCABAcBAAQHAUAEBwGABAcCAAQHAkAEByEABAchgAQHIkAEByLABAcjgAQHI8AEByQABAckQAQHJIAEByUABAclgAQHJcAEByYABAcmgAQHJsAEBy0ABActQAQHLYAEBy4ABAdMwAQHTUAEB03ABAdOQAQHTwAEB09ABAdPgAQHT8AEB1AABAdQgAQHUQAEB1FABAdRgAQHUgAEB1JABAdxAAQHcYAEB3IABAdygAQHc0AEB3OABAdzwAQHdAAEB3RABAd0wAQHdUAEB3WABAd1wAQHdkAEB3aABAeVQAQHlcAEB5ZABAeWwAQHl4AEB5fABAeYAAQHmEAEB5iABAeZAAQHmYAEB5nABAeaAAQHmoAEB5rABAe5gAQHugAEB7qABAe7AAQHu8AEB7wABAe8QAQHvIAEB7zABAe9QAQHvcAEB74ABAe+QAQHvsAEB78ABAfdwAQH3kAEB97ABAffQAQH4AAEB+BABAfggAQH4MAEB+EABAfhgAQH4gAEB+JABAfigAQH4wAEB+NABAf1gAQH/oAECAhABAgRQAQIEgAECBKABAgTAAQIE4AECBQABAgUgAQIFMAECBWABAgbwAQIIwAECCOABAgkAAQIJIAECCUABAglgAQIJgAECCaABAgtwAQILoAECC9ABAgwAAQIMMAECDGABAgyQAQIMwAECDOABAhSQAQIUsAECFNABAhTwAQIVIAECFTABAhVAAQIVUAECFWABAhWAAQIVoAECFbABAhXAAQIV4AECFfABAh2gAQIdwAECHeABAh4AAQIeMAECHkABAh5QAQIeYAECHnABAh6QAQIesAECHsABAh7QAQIe8AECHwABAiawAQIm0AECJvABAicQAQInQAECJ1ABAidgAQIncAECJ4ABAiegAQInwAECJ9ABAifgAQIoAAECKBABAi/AAQIv4AECMAABAjAgAQIwUAECMGABAjBwAQIwgAECMJABAjCwAQIw0AECMOABAjDwAQIxEAECMSABAjjQAQI48AECORABAjkwAQI5YAECOXABAjmAAQI5kAECOaABAjnAAQI54AECOfABAjoAAQI6IAECOjABAkHgAQJCAAECQiABAkJAAQJCcAECQoABAkKQAQJCoAECQrABAkLQAQJC8AECQwABAkMQAQJDMAECQ0ABAkrwAQJLEAECSzABAktQAQJLgAECS5ABAkugAQJLsAECS8ABAkvgAQJMAAECTBABAkwgAQJMQAECTFABAk1gAQJNcAECTZABAlXAAQJYAAECWkABAlxwAQJe4AECYOABAmNQAQJlwAECZ8ABAmoAAQJsQAECbGABAmyQAQJssAECbNABAmzwAQJtIAECbVABAm1wAQJtkAECbcABAm3gAQJuAAECbjABAm5gAQJucAECbsABAnBQAQJwoAECcMABAnEQAQJxQAECcWABAnXwAQJ4MAECeqABAnzgAQJ9EAECfTABAn1QAQJ9cAECfZABAn2wAQJ9wAECffABAn+AAQKB0AECgfABAoIQAQKCMAECglABAoJwAQKCkAECgrABAoLQAQKC8AEChUABAoVwAQKFoAEChdABAoYAAQKGMAEChmABAoaQAQKGwAEChvABAocQAQKOwAECjuABAo8QAQKPMAECj2ABAo9wAQKPgAECj5ABAo+gAQKPwAECj+ABAo/wAQKQAAECkCABApAwAQKRQAECkVABApFwAQKZIAECmUABAplgAQKZgAECmbABApnAAQKZ0AECmeABApnwAQKaEAECmjABAppAAQKaUAECmnABApqAAQKiMAEColABAqKAAQKioAECotABAqLgAQKi8AECowABAqMQAQKjMAECo1ABAqNgAQKjcAECo5ABAqOgAQKksAECpQABAqUwAQKlUAECpmABAqbwAQKnIAECp1ABAqdwAQKpMAECqlABArIAAQKyIAECskABArJgAQKykAECsqABArKwAQKywAECstABArLwAQKzEAECsyABArMwAQKzUAECs2ABArsQAQK7MAECu2ABAruAAQK7sAECu8ABArvQAQK74AECu/ABArwQAQK8MAECvEABArxQAQK8cAECvIABAr2QAQK9oAECvcABAsVwAQLFkAECxbABAsXQAQLGAAECxhABAsYgAQLGMAECxkABAsZgAQLGgAECxpABAsagAQLGwAECxtABAs6AAQLOoAECztABAs7wAQLPIAECzzABAs9AAQLPUAECz2ABAs+AAQLPoAECz7ABAs/AAQLP4AECz/ABAtGAAQLRkAEC0aABAtHAAQLZcAEC2ZABAtmwAQLZ0AEC2gABAtoQAQLaIAEC2jABAtpAAQLaYAEC2oABAtqQAQLaoAEC2sABAtrQAQLigAEC4qABAuLQAQLi8AEC4yABAuMwAQLjQAEC41ABAuNgAQLjgAEC46ABAuOwAQLjwAEC4+ABAuPwAQLlkAEC5yABAuewAQLn4AEC6BABAuigAQLo0AEC6QABAukgAQLqQAEC7AABAvUwAQL3YAEC+WABAvtgAQL7gAEC+6ABAvvAAQL74AEC/BABAvwgAQL8MAEC/GABAvxwAQL8kAEC/KABAvzAAQL88AEC/QABAv0QAQL9QAEC/VABAv2gAQL/MAEC/8ABAv/gAQMAAAEDAJABAwDAAQMA8AEDARABAwWgAQMH4AEDClABAwyQAQMMwAEDDOABAw0AAQMNIAEDDUABAw1gAQMNcAEDDaABAw8wAQMRQAEDEWABAxGAAQMRoAEDEcABAxHgAQMSAAEDEiABAxJAAQMUUAEDFIABAxSwAQMU4AEDFRABAxVAAQMVcAEDFaABAxXQAQMV8AEDHaABAx3AAQMd4AEDHgABAx4wAQMeQAEDHlABAx5gAQMecAEDHpABAx6wAQMewAEDHtABAx7wAQMfAAEDJrABAybQAQMm8AEDJxABAydAAQMnUAEDJ2ABAydwAQMngAEDJ6ABAyfAAQMn0AEDJ+ABAygAAQMoEAEDL8ABAy/gAQMwEAEDMDABAzBgAQMwcAEDMIABAzCQAQMwoAEDMMABAzDgAQMw8AEDMQABAzEgAQMxMAEDMsABAzLQAQMy4AEDMwABAzqwAQM60AEDOvABAzsQAQM7QAEDO1ABAztgAQM7cAEDO4ABAzugAQM7wAEDO9ABAzvgAQM8AAEDPBABA0PAAQND4AEDRAABA0QgAQNEUAEDRGABA0RwAQNEgAEDRJABA0SwAQNE0AEDROABA0TwAQNFEAEDRSABA0zQAQNM8AEDTRABA00wAQNNYAEDTXABA02AAQNNkAEDTaABA03AAQNN4AEDTfABA04AAQNOIAEDTjABA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P5wAQT+kAEE/qABBQAwAQUAQAEFAFABBQBwAQUIIAEFCEABBQhgAQUIgAEFCLABBQjAAQUI0AEFCOABBQjwAQUJEAEFCTABBQlAAQUJUAEFCXABBQmAAQURMAEFEVABBRFwAQURkAEFEcABBRHQAQUR4AEFEfABBRIAAQUSIAEFEkABBRJQAQUSYAEFEoABBRKQAQUUIAEFFjABBRZgAQUWkAEFFsABBRbwAQUXIAEFF1ABBReAAQUXsAEFGcABBRnwAQUaIAEFGlABBRqAAQUasAEFGuABBRsQAQUbQAEFG2ABBRzAAQUdkAEFHxABBSAwAQUg0AEFIhABBSKwAQUr4AEFLhABBTAQAQUyEAEFMjABBTJQAQUycAEFMpABBTLAAQUy0AEFMuABBTMQAQUzIAEFM0ABBTNQAQUzcAEFM6ABBTOwAQUzwAEFM/ABBTQAAQU0UAEFNeABBTZwAQU2kAEFNrABBTdAAQU3cAEFN6ABBTfAAQU8UAEFPpABBUEAAQVDQAEFQ3ABBUOQAQVDsAEFQ9ABBUPwAQVEEAEFRCABBURQAQVF4AEFR/ABBUgQAQVIMAEFSFABBUhwAQVIkAEFSLABBUjQAQVI8AEFSwABBUswAQVLYAEFS5ABBUvAAQVL8AEFTCABBUxQAQVMgAEFTKABBVRQAQVUcAEFVJABBVSwAQVU4AEFVPABBVUAAQVVEAEFVSABBVVAAQVVYAEFVXABBVWAAQVVoAEFVbABBV1gAQVdgAEFXaABBV3AAQVd8AEFXgABBV4QAQVeIAEFXjABBV5QAQVecAEFXoABBV6QAQVesAEFXsABBWZwAQVmkAEFZsABBWbgAQVnEAEFZyABBWcwAQVnQAEFZ1ABBWdwAQVnkAEFZ6ABBWewAQVn0AEFZ+ABBWlwAQVpgAEFaZABBWmwAQVxYAEFcYABBXGgAQVxwAEFcfABBXIAAQVyEAEFciABBXIwAQVyUAEFcnABBXKAAQVykAEFcrABBXLAAQV6cAEFepABBXqwAQV60AEFewABBXsQAQV7IAEFezABBXtAAQV7YAEFe4ABBXuQAQV7oAEFe8ABBXvQAQWDgAEFg6ABBYPAAQWD4AEFhBABBYQgAQWEMAEFhEABBYRQAQWEcAEFhJABBYSgAQWEsAEFhNABBYTgAQWMkAEFjLABBYzQAQWM8AEFjSABBY0wAQWNQAEFjVABBY1gAQWNgAEFjaABBY2wAQWNwAEFjeABBY3wAQWVoAEFlcABBZXgAQWWAAEFljABBZZAAQWWUAEFlmABBZZwAQWWkAEFlrABBZbAAQWW0AEFlvABBZcAAQWbkAEFndABBaBAAQWigAEForABBaLQAQWi8AEFoxABBaMwAQWjUAEFo2ABBaOQAQWlIAEFpvABBacQAQWnMAEFp1ABBadwAQWnkAEFp7ABBafQAQWpoAEFqdABBaoAAQWqMAEFqmABBaqQAQWqwAEFqvABBasQAQWywAEFsuABBbMAAQWzIAEFs1ABBbNgAQWzcAEFs4ABBbOQAQWzsAEFs9ABBbPgAQWz8AEFtBABBbQgAQW70AEFu/ABBbwQAQW8MAEFvGABBbxwAQW8gAEFvJABBbygAQW8wAEFvOABBbzwAQW9AAEFvSABBb0wAQXE4AEFxQABBcUgAQXFQAEFxXABBcWAAQXFkAEFxaABBcWwAQXF0AEFxfABBcYAAQXGEAEFxjABBcZAAQXN8AEFzhABBc5AAQXOYAEFzpABBc6gAQXOsAEFzsABBc7QAQXO8AEFzxABBc8gAQXPMAEFz1ABBc9gAQXXEAEF1zABBddQAQXXcAEF16ABBdewAQXXwAEF19ABBdfgAQXYAAEF2CABBdgwAQXYQAEF2GABBdhwAQXgIAEF4EABBeBgAQXggAEF4LABBeDAAQXg0AEF4OABBeDwAQXhEAEF4TABBeFAAQXhUAEF4XABBeGAAQXpMAEF6VABBelwAQXpkAEF6cABBenQAQXp4AEF6fABBeoAAQXqIAEF6kABBepQAQXqYAEF6oABBeqQAQXzwAEF9fABBffwAQX58AEF+hABBfowAQX6UAEF+nABBfqgAQX6sAEF+sABBfrwAQX7AAEF+yABBfswAQX7YAEF+5ABBfugAQX7sAEF++ABBfvwAQX8QAEF/dABBf5gAQX+gAEF/rABBf9AAQX/cAEF/6ABBf/AAQYEUAEGBpABBgkAAQYLQAEGC3ABBguQAQYLsAEGC9ABBgvwAQYMEAEGDCABBgxQAQYN4AEGD/ABBhAQAQYQMAEGEFABBhBwAQYQkAEGELABBhDQAQYQ8AEGEwABBhMwAQYTYAEGE5ABBhPAAQYT8AEGFCABBhRQAQYUgAEGFKABBhxQAQYccAEGHJABBhywAQYc4AEGHPABBh0AAQYdEAEGHSABBh1AAQYdYAEGHXABBh2AAQYdoAEGHbABBiVgAQYlgAEGJaABBiXAAQYl8AEGJgABBiYQAQYmIAEGJjABBiZQAQYmcAEGJoABBiaQAQYmsAEGJsABBi5wAQYukAEGLsABBi7gAQYvEAEGLyABBi8wAQYvQAEGL1ABBi9wAQYvkAEGL6ABBi+wAQYv0AEGL+ABBjFwAQYxgAEGMZABBjGwAQY5YAEGOYABBjmgAQY5wAEGOfABBjoAAQY6EAEGOiABBjowAQY6UAEGOnABBjqAAQY6kAEGOrABBjrAAQZCcAEGQpABBkKwAQZC0AEGQwABBkMQAQZDIAEGQzABBkNAAQZDYAEGQ4ABBkOQAQZDoAEGQ8ABBkPQAQZLgAEGS6ABBkvAAQZL4AEGTBABBkwgAQZMMAEGTEABBkxQAQZMcAEGTJABBkygAQZMsAEGTNABBkzgAQZUkAEGVLABBlTQAQZU8AEGVSABBlUwAQZVQAEGVVABBlVgAQZVgAEGVaABBlWwAQZVwAEGVeABBlXwAQZdoAEGXcABBl3gAQZeAAEGXjABBl5AAQZeUAEGXmABBl5wAQZekAEGXrABBl7AAQZe0AEGXvABBl8AAQZjkAEGZdABBmhAAQZqgAEGarABBmrgAQZrAAEGayABBmtAAQZrYAEGa3ABBmugAQZtMAEGbwABBm8wAQZvYAEGb5ABBm/AAQZv8AEGcCABBnBQAQZyIAEGclABBnKAAQZysAEGcuABBnMQAQZzQAEGc3ABBnOQAQZ7QAEGe2ABBnuQAQZ7sAEGe+ABBnvwAQZ8AAEGfBABBnwgAQZ8QAEGfHABBnyAAQZ8kAEGfLABBnzAAQaEcAEGhJABBoTAAQaE4AEGhRABBoUgAQaFMAEGhUABBoVQAQaFcAEGhaABBoWwAQaFwAEGheABBoXwAQaNoAEGjcABBo3wAQaOEAEGjkABBo5QAQaOYAEGjnABBo6AAQaOoAEGjtABBo7gAQaO8AEGjxABBo8gAQaW0AEGlvABBpcgAQaXQAEGl3ABBpeAAQaXkAEGl6ABBpewAQaX0AEGmAABBpgQAQaYIAEGmEABBphQAQaggAEGosABBqUAAQanMAEGqaABBqugAQauEAEGsIABBrKAAQa0wAEGtwABBrcgAQa3UAEGt3ABBreQAQa3sAEGt+ABBrgQAQa4MAEGuFABBriAAQa4oAEGuMABBrjwAQa5IAEGuTABBrmAAQa7EAEGu2ABBruAAQa70AEGvAABBrwgAQbAsAEGwvABBsVgAQbHoAEGx9ABBsfwAQbIEAEGyDABBshQAQbIcAEGyIABBsiwAQbKQAEGzJABBsywAQbM0AEGzPABBs0QAQbNMAEGzVABBs1wAQbNkAEGzbABBtAAAQbQMAEG0GABBtCQAQbQwAEG0PABBtEgAQbRUAEG0YABBtGwAQbR0AEG2YABBtmgAQbZ0AEG2fABBtogAQbaMAEG2kABBtpQAQbaYAEG2oABBtqgAQbasAEG2sABBtrgAQba8AEG3AABBtwQAQbcMAEG4+ABBuQAAQbkIAEG5EABBuRwAQbkgAEG5JABBuSgAQbksAEG5NABBuTwAQblAAEG5RABBuUwAQblQAEG7PABBu0QAQbtQAEG7WABBu2QAQbtoAEG7bABBu3AAQbt0AEG7fABBu4QAQbuIAEG7jABBu5QAQbuYAEG73ABBu/AAQbv8AEG8BABBvEgAQbxcAEG8aABBvHAAQbyMAEG+eABBvoAAQb6IAEG+kABBvpwAQb6gAEG+pABBvqgAQb6sAEG+tABBvrwAQb7AAEG+xABBvswAQb7QAEHAvABBwMQAQcDQAEHA2ABBwOQAQcDoAEHA7ABBwPAAQcD0AEHA/ABBwQQAQcEIAEHBDABBwRQAQcEYAEHBXABBwWAAQcFoAEHDVABBw1wAQcNkAEHDbABBw3gAQcN8AEHDgABBw4QAQcOIAEHDkABBw5gAQcOcAEHDoABBw6gAQcOsAEHFmABBxaAAQcWsAEHFtABBxcAAQcXEAEHFyABBxcwAQcXQAEHF2ABBxeAAQcXkAEHF6ABBxfAAQcX0AEHGWABBxlwAQcZgAEHGaABByFQAQchcAEHIZABByGwAQch4AEHIfABByIAAQciEAEHIiABByJAAQciYAEHInABByKAAQcioAEHIrABBypgAQcqgAEHKqABByrAAQcq8AEHKwABBysQAQcrIAEHKzABBytQAQcrcAEHK4ABByuQAQcrsAEHK8ABBy1QAQcvYAEHL5ABBy/AAQcv8AEHMCABBzBQAQcwgAEHMLABBzDgAQcy8AEHMyABBzNQAQczgAEHM7ABBzPgAQc0EAEHNEABBzRwAQc0kAEHNuABBzhwAQc6AAEHOqABBzyAAQc/EAEHP5ABB0jAAQdK8AEHTPABB07wAQdPEAEHTzABB09QAQdPcAEHT6ABB0+wAQdPwAEHT/ABB1AAAQdQIAEHUDABB1BQAQdQgAEHUJABB1CgAQdQ0AEHUOABB1EwAQdSwAEHU1ABB1NwAQdTkAEHVCABB1RQAQdUgAEHVKABB1kwAQdbcAEHXeABB2AgAQdgUAEHYHABB2CQAQdgsAEHYNABB2DwAQdhAAEHYTABB2LAAQdk0AEHZPABB2UQAQdlMAEHZVABB2VwAQdlkAEHZbABB2XQAQdn4AEHaBABB2hAAQdocAEHaKABB2jQAQdpAAEHaTABB2lgAQdpgAEHcTABB3FQAQdxcAEHcZABB3HAAQdx0AEHceABB3HwAQdyAAEHciABB3JAAQdyUAEHcmABB3KAAQdykAEHekABB3pgAQd6gAEHeqABB3rQAQd64AEHevABB3sAAQd7EAEHezABB3tQAQd7YAEHe3ABB3uQAQd7oAEHg1ABB4NwAQeDoAEHg8ABB4PwAQeEAAEHhBABB4QgAQeEMAEHhFABB4RwAQeEgAEHhJABB4SwAQeEwAEHhlABB4ZgAQeGcAEHhpABB45AAQeOYAEHjoABB46gAQeO0AEHjuABB47wAQePAAEHjxABB48wAQePUAEHj2ABB49wAQePkAEHj6ABB5dQAQeXcAEHl5ABB5ewAQeX4AEHl/ABB5gAAQeYEAEHmCABB5hAAQeYYAEHmHABB5iAAQeYoAEHmLABB6BgAQeggAEHoKABB6DAAQeg8AEHoQABB6EQAQehIAEHoTABB6FQAQehcAEHoYABB6GQAQehsAEHocABB6lwAQepkAEHqbABB6nQAQeqAAEHqhABB6ogAQeqMAEHqkABB6pgAQeqgAEHqpABB6qgAQeqwAEHqtABB7KAAQeyoAEHssABB7LgAQezEAEHsyABB7MwAQezQAEHs1ABB7NwAQezkAEHs6ABB7OwAQez0AEHs+ABB7hwAQe6sAEHvSABB79gAQe/kAEHv7ABB7/QAQe/8AEHwBABB8AwAQfAQAEHwHABB8IAAQfD0AEHw/ABB8QQAQfEMAEHxFABB8RwAQfEkAEHxLABB8aAAQfGsAEHxuABB8cQAQfHQAEHx3ABB8egAQfH0AEHx/ABB8+gAQfPwAEHz+ABB9AAAQfQMAEH0EABB9BQAQfQYAEH0HABB9CQAQfQsAEH0MABB9DQAQfQ8AEH0QABB9iwAQfY0AEH2PABB9kQAQfZQAEH2VABB9lgAQfZcAEH2YABB9mgAQfZwAEH2dABB9ngAQfaAAEH2hABB+HAAQfh4AEH4gABB+IgAQfiUAEH4mABB+JwAQfigAEH4pABB+KwAQfi0AEH4uABB+LwAQfjEAEH4yABB+rQAQfq8AEH6yABB+tAAQfrcAEH64ABB+uQAQfroAEH67ABB+vQAQfr8AEH7AABB+wQAQfsMAEH7EABB/PwAQf0EAEH9DABB/RQAQf0gAEH9JABB/SgAQf0sAEH9MABB/TgAQf1AAEH9RABB/UgAQf1QAEH9VABB/0AAQf9IAEH/UABB/1gAQf9kAEH/aABB/2wAQf9wAEH/dABB/3wAQf+EAEH/iABB/4wAQf+UAEH/mABCAYQAQgGMAEIBlABCAZwAQgGoAEIBrABCAbAAQgG0AEIBuABCAcAAQgHIAEIBzABCAdAAQgHYAEIB3ABCBCgAQgS0AEIFNABCBbQAQgW8AEIFxABCBcwAQgXUAEIF4ABCBeQAQgXoAEIF9ABCBfgAQgYAAEIGBABCBgwAQgYYAEIGHABCBiAAQgYsAEIGMABCBkQAQgaoAEIGzABCBtQAQgbcAEIHAABCBwwAQgcYAEIHIABCCEQAQgjUAEIJcABCCgAAQgoMAEIKFABCChwAQgokAEIKLABCCjQAQgo4AEIKRABCCqgAQgssAEILNABCCzwAQgtEAEILTABCC1QAQgtcAEILZABCC2wAQgvwAEIL/ABCDAgAQgwUAEIMIABCDCwAQgw4AEIMRABCDFAAQgxYAEIORABCDkwAQg5UAEIOXABCDmgAQg5sAEIOcABCDnQAQg54AEIOgABCDogAQg6MAEIOkABCDpgAQg6cAEIQiABCEJAAQhCYAEIQoABCEKwAQhCwAEIQtABCELgAQhC8AEIQxABCEMwAQhDQAEIQ1ABCENwAQhDgAEISzABCEtQAQhLgAEIS6ABCEvQAQhL4AEIS/ABCEwAAQhMEAEITDABCExQAQhMYAEITHABCEyQAQhMoAEITjABCE5AAQhOUAEITnABCFYgAQhWQAEIVmABCFaAAQhWsAEIVsABCFbQAQhW4AEIVvABCFcQAQhXMAEIV0ABCFdQAQhXcAEIV4ABCF8wAQhfUAEIX3ABCF+QAQhfwAEIX9ABCF/gAQhf8AEIYAABCGAgAQhgQAEIYFABCGBgAQhggAEIYJABCGhAAQhoYAEIaIABCGigAQho0AEIaOABCGjwAQhpAAEIaRABCGkwAQhpUAEIaWABCGlwAQhpkAEIaaABCHFQAQhxcAEIcZABCHGwAQhx4AEIcfABCHIAAQhyEAEIciABCHJAAQhyYAEIcnABCHKAAQhyoAEIcrABCHpgAQh6gAEIeqABCHrAAQh68AEIewABCHsQAQh7IAEIezABCHtQAQh7cAEIe4ABCHuQAQh7sAEIe8ABCIBQAQiCkAEIhQABCIdAAQiHcAEIh5ABCIewAQiH0AEIh/ABCIgQAQiIIAEIiFABCIngAQiLsAEIi9ABCIvwAQiMEAEIjDABCIxQAQiMcAEIjJABCI5gAQiOkAEIjsABCI7wAQiPIAEIj1ABCI+AAQiPsAEIj9ABCJeAAQiXoAEIl8ABCJfgAQiYEAEImCABCJgwAQiYQAEImFABCJhwAQiYkAEImKABCJiwAQiY0AEImOABCKCQAQigsAEIoNABCKDwAQihIAEIoTABCKFAAQihUAEIoWABCKGAAQihoAEIobABCKHAAQih4AEIofABCKmgAQipwAEIqeABCKoAAQiqMAEIqkABCKpQAQiqYAEIqnABCKqQAQiqsAEIqsABCKrQAQiq8AEIqwABCLKwAQiy0AEIswABCLMgAQizUAEIs2ABCLNwAQizgAEIs5ABCLOwAQiz0AEIs+ABCLPwAQi0EAEItCABCLvQAQi78AEIvBABCLwwAQi8YAEIvHABCLyAAQi8kAEIvKABCLzAAQi84AEIvPABCL0AAQi9IAEIvTABCMTgAQjFAAEIxSABCMVAAQjFcAEIxYABCMWQAQjFoAEIxbABCMXQAQjF8AEIxgABCMYQAQjGMAEIxkABCM3wAQjOEAEIzjABCM5QAQjOgAEIzpABCM6gAQjOsAEIzsABCM7gAQjPAAEIzxABCM8gAQjPQAEIz1ABCNiAAQjasAEI3LABCN6wAQje0AEI3vABCN8QAQjfMAEI32ABCN9wAQjfgAEI37ABCN/AAQjf4AEI3/ABCOAQAQjgQAEI4FABCOBgAQjgkAEI4KABCODwAQjigAEI4xABCOMwAQjjUAEI4+ABCOQQAQjkQAEI5GABCOjwAQjrMAEI7aABCO/gAQjwEAEI8DABCPBQAQjwcAEI8JABCPCwAQjwwAEI8PABCPKAAQj0kAEI9LABCPTQAQj08AEI9RABCPUwAQj1UAEI9XABCPWQAQj3oAEI99ABCPgAAQj4MAEI+GABCPiQAQj4wAEI+PABCPkgAQj5QAEJAPABCQEQAQkBMAEJAVABCQGAAQkBkAEJAaABCQGwAQkBwAEJAeABCQIAAQkCEAEJAiABCQJAAQkCUAEJCgABCQogAQkKQAEJCmABCQqQAQkKoAEJCrABCQrAAQkK0AEJCvABCQsQAQkLIAEJCzABCQtQAQkLYAEJExABCRMwAQkTYAEJE4ABCROwAQkTwAEJE9ABCRPgAQkT8AEJFBABCRQwAQkUQAEJFFABCRRwAQkUgAEJFhABCRYgAQkWMAEJFlABCR4AAQkeIAEJHkABCR5gAQkekAEJHqABCR6wAQkewAEJHtABCR7wAQkfEAEJHyABCR8wAQkfUAEJH2ABCScQAQknMAEJJ1ABCSdwAQknoAEJJ7ABCSfAAQkn0AEJJ+ABCSgAAQkoIAEJKDABCShAAQkoYAEJKHABCTAgAQkwQAEJMGABCTCAAQkwsAEJMMABCTDQAQkw4AEJMPABCTEQAQkxMAEJMUABCTFQAQkxcAEJMYABCTkwAQk5UAEJOXABCTmQAQk5wAEJOdABCTngAQk58AEJOgABCTogAQk6QAEJOlABCTpgAQk6gAEJOpABCUJAAQlCYAEJQoABCUKgAQlC0AEJQuABCULwAQlDAAEJQxABCUMwAQlDUAEJQ2ABCUNwAQlDkAEJQ6ABCUgwAQlKcAEJTOABCU8gAQlPUAEJT3ABCU+QAQlPsAEJT9ABCU/wAQlQAAEJUDABCVHAAQlTkAEJU7ABCVPQAQlT8AEJVBABCVQwAQlUUAEJVHABCVZAAQlWcAEJVqABCVbQAQlXAAEJVzABCVdgAQlXkAEJV7ABCV9gAQlfgAEJX6ABCV/AAQlf8AEJYAABCWAQAQlgIAEJYDABCWBQAQlgcAEJYIABCWCQAQlgsAEJYMABCWhwAQlokAEJaLABCWjQAQlpAAEJaRABCWkgAQlpMAEJaUABCWlgAQlpgAEJaZABCWmgAQlpwAEJadABCXGAAQlxoAEJccABCXHgAQlyEAEJciABCXIwAQlyQAEJclABCXJwAQlykAEJcqABCXKwAQly0AEJcuABCXqQAQl6sAEJeuABCXsAAQl7MAEJe0ABCXtQAQl7YAEJe3ABCXuQAQl7sAEJe8ABCXvQAQl78AEJfAABCYOwAQmD0AEJg/ABCYQQAQmEQAEJhFABCYRgAQmEcAEJhIABCYSgAQmEwAEJhNABCYTgAQmFAAEJhRABCYzAAQmM4AEJjQABCY0gAQmNUAEJjWABCY1wAQmNgAEJjZABCY2wAQmN0AEJjeABCY3wAQmOEAEJjiABCZXQAQmV8AEJlhABCZYwAQmWYAEJlnABCZaAAQmWkAEJlqABCZbAAQmW4AEJlvABCZcAAQmXIAEJlzABCaBgAQmikAEJpJABCaaQAQmmsAEJptABCabwAQmnEAEJp0ABCadQAQmnYAEJp5ABCaegAQmnwAEJp9ABCafwAQmoIAEJqDABCahAAQmocAEJqIABCajQAQmqYAEJqvABCasQAQmrMAEJq8ABCavwAQmsIAEJrEABCbDQAQmzEAEJtYABCbfAAQm38AEJuBABCbgwAQm4UAEJuHABCbiQAQm4oAEJuNABCbpgAQm8cAEJvJABCbywAQm80AEJvPABCb0QAQm9MAEJvVABCb1wAQm/gAEJv7ABCb/gAQnAEAEJwEABCcBwAQnAoAEJwNABCcEAAQnBIAEJyNABCcjwAQnJEAEJyTABCclgAQnJcAEJyYABCcmQAQnJoAEJycABCcngAQnJ8AEJygABCcogAQnKMAEJ0eABCdIAAQnSIAEJ0kABCdJwAQnSgAEJ0pABCdKgAQnSsAEJ0tABCdLwAQnTAAEJ0xABCdMwAQnTQAEJ2vABCdsQAQnbQAEJ22ABCduQAQnboAEJ27ABCdvAAQnb0AEJ2/ABCdwQAQncIAEJ3DABCdxQAQncYAEJ3fABCd4AAQneEAEJ3jABCeXgAQnmAAEJ5iABCeZAAQnmcAEJ5oABCeaQAQnmoAEJ5rABCebQAQnm8AEJ5wABCecQAQnnMAEJ50ABCe7wAQnvEAEJ7zABCe9QAQnvgAEJ75ABCe+gAQnvsAEJ78ABCe/gAQnwAAEJ8BABCfAgAQnwQAEJ8FABCfgAAQn4IAEJ+EABCfhgAQn4kAEJ+KABCfiwAQn4wAEJ+NABCfjwAQn5EAEJ+SABCfkwAQn5UAEJ+WABCgEQAQoBMAEKAVABCgFwAQoBoAEKAbABCgHAAQoB0AEKAeABCgIAAQoCIAEKAjABCgJAAQoCYAEKAnABCgogAQoKQAEKCmABCgqAAQoKsAEKCsABCgrQAQoK4AEKCvABCgsQAQoLMAEKC0ABCgtQAQoLcAEKC4ABChAQAQoSUAEKFMABChcAAQoXMAEKF1ABChdwAQoXkAEKF7ABChfQAQoX4AEKGBABChmgAQobcAEKG5ABChuwAQob0AEKG/ABChwQAQocMAEKHFABCh4gAQoeUAEKHoABCh6wAQoe4AEKHxABCh9AAQofcAEKH5ABCidAAQonYAEKJ4ABCiegAQon0AEKJ+ABCifwAQooAAEKKBABCigwAQooUAEKKGABCihwAQookAEKKKABCjBQAQowcAEKMJABCjCwAQow4AEKMPABCjEAAQoxEAEKMSABCjFAAQoxYAEKMXABCjGAAQoxoAEKMbABCjlgAQo5gAEKOaABCjnAAQo58AEKOgABCjoQAQo6IAEKOjABCjpQAQo6cAEKOoABCjqQAQo6sAEKOsABCkJwAQpCkAEKQsABCkLgAQpDEAEKQyABCkMwAQpDQAEKQ1ABCkNwAQpDkAEKQ6ABCkOwAQpD0AEKQ+ABCkuQAQpLsAEKS9ABCkvwAQpMIAEKTDABCkxAAQpMUAEKTGABCkyAAQpMoAEKTLABCkzAAQpM4AEKTPABClSgAQpUwAEKVOABClUAAQpVMAEKVUABClVQAQpVYAEKVXABClWQAQpVsAEKVcABClXQAQpV8AEKVgABCl2wAQpd0AEKXfABCl4QAQpeQAEKXlABCl5gAQpecAEKXoABCl6gAQpewAEKXtABCl7gAQpfAAEKXxABCmhAAQpqcAEKbHABCm5wAQpukAEKbrABCm7QAQpu8AEKbyABCm8wAQpvQAEKb3ABCm+AAQpvoAEKb7ABCm/QAQpwAAEKcBABCnAgAQpwUAEKcGABCnCwAQpyQAEKctABCnLwAQpzEAEKc6ABCnPQAQp0AAEKdCABCniwAQp68AEKfWABCn+gAQp/0AEKf/ABCoAQAQqAMAEKgFABCoBwAQqAgAEKgLABCoJAAQqEUAEKhHABCoSQAQqEsAEKhNABCoTwAQqFEAEKhTABCoVQAQqHYAEKh5ABCofAAQqH8AEKiCABCohQAQqIgAEKiLABCojgAQqJAAEKkLABCpDQAQqQ8AEKkRABCpFAAQqRUAEKkWABCpFwAQqRgAEKkaABCpHAAQqR0AEKkeABCpIAAQqSEAEKmcABCpngAQqaAAEKmiABCppQAQqaYAEKmnABCpqAAQqakAEKmrABCprQAQqa4AEKmvABCpsQAQqbIAEKotABCqLwAQqjIAEKo0ABCqNwAQqjgAEKo5ABCqOgAQqjsAEKo9ABCqPwAQqkAAEKpBABCqQwAQqkQAEKpdABCqXgAQql8AEKphABCq3AAQqt4AEKrgABCq4gAQquUAEKrmABCq5wAQqugAEKrpABCq6wAQqu0AEKruABCq7wAQqvEAEKryABCrbQAQq28AEKtxABCrcwAQq3YAEKt3ABCreAAQq3kAEKt6ABCrfAAQq34AEKt/ABCrgAAQq4IAEKuDABCr/gAQrAAAEKwCABCsBAAQrAcAEKwIABCsCQAQrAoAEKwLABCsDQAQrA8AEKwQABCsEQAQrBMAEKwUABCsjwAQrJEAEKyTABCslQAQrJgAEKyZABCsmgAQrJsAEKycABCsngAQrKAAEKyhABCsogAQrKQAEKylABCtIAAQrSIAEK0kABCtJgAQrSkAEK0qABCtKwAQrSwAEK0tABCtLwAQrTEAEK0yABCtMwAQrTUAEK02ABCtfwAQraMAEK3KABCt7gAQrfEAEK3zABCt9QAQrfcAEK35ABCt+wAQrfwAEK3/ABCuGAAQrjUAEK43ABCuOQAQrjsAEK49ABCuPwAQrkEAEK5DABCuYAAQrmMAEK5mABCuaQAQrmwAEK5vABCucgAQrnUAEK53ABCu8gAQrvQAEK72ABCu+AAQrvsAEK78ABCu/QAQrv4AEK7/ABCvAQAQrwMAEK8EABCvBQAQrwcAEK8IABCvgwAQr4UAEK+HABCviQAQr4wAEK+NABCvjgAQr48AEK+QABCvkgAQr5QAEK+VABCvlgAQr5gAEK+ZABCwFAAQsBYAELAYABCwGgAQsB0AELAeABCwHwAQsCAAELAhABCwIwAQsCUAELAmABCwJwAQsCkAELAqABCwpQAQsKcAELCqABCwrAAQsK8AELCwABCwsQAQsLIAELCzABCwtQAQsLcAELC4ABCwuQAQsLsAELC8ABCxNwAQsTkAELE7ABCxPQAQsUAAELFBABCxQgAQsUMAELFEABCxRgAQsUgAELFJABCxSgAQsUwAELFNABCxyAAQscoAELHMABCxzgAQsdEAELHSABCx0wAQsdQAELHVABCx1wAQsdkAELHaABCx2wAQsd0AELHeABCyWQAQslsAELJdABCyXwAQsmIAELJjABCyZAAQsmUAELJmABCyaAAQsmoAELJrABCybAAQsm4AELJvABCzAgAQsyUAELNFABCzZQAQs2cAELNpABCzawAQs20AELNwABCzcQAQs3IAELN1ABCzdgAQs3gAELN5ABCzewAQs34AELN/ABCzgAAQs4MAELOEABCziQAQs6IAELOrABCzrQAQs68AELO4ABCzuwAQs74AELPAABC0CQAQtC0AELRUABC0eAAQtHsAELR9ABC0fwAQtIEAELSDABC0hQAQtIYAELSJABC0ogAQtMMAELTFABC0xwAQtMkAELTLABC0zQAQtM8AELTRABC00wAQtPQAELT3ABC0+gAQtP0AELUAABC1AwAQtQYAELUJABC1DAAQtQ4AELWJABC1iwAQtY0AELWPABC1kgAQtZMAELWUABC1lQAQtZYAELWYABC1mgAQtZsAELWcABC1ngAQtZ8AELYaABC2HAAQth4AELYgABC2IwAQtiQAELYlABC2JgAQticAELYpABC2KwAQtiwAELYtABC2LwAQtjAAELarABC2rQAQtrAAELayABC2tQAQtrYAELa3ABC2uAAQtrkAELa7ABC2vQAQtr4AELa/ABC2wQAQtsIAELbbABC23AAQtt0AELbfABC3WgAQt1wAELdeABC3YAAQt2MAELdkABC3ZQAQt2YAELdnABC3aQAQt2sAELdsABC3bQAQt28AELdwABC36wAQt+0AELfvABC38QAQt/QAELf1ABC39gAQt/cAELf4ABC3+gAQt/wAELf9ABC3/gAQuAAAELgBABC4fAAQuH4AELiAABC4ggAQuIUAELiGABC4hwAQuIgAELiJABC4iwAQuI0AELiOABC4jwAQuJEAELiSABC5DQAQuQ8AELkRABC5EwAQuRYAELkXABC5GAAQuRkAELkaABC5HAAQuR4AELkfABC5IAAQuSIAELkjABC5ngAQuaAAELmiABC5pAAQuacAELmoABC5qQAQuaoAELmrABC5rQAQua8AELmwABC5sQAQubMAELm0ABC5/QAQuiEAELpIABC6bAAQum8AELpxABC6cwAQunUAELp3ABC6eQAQunoAELp9ABC6lgAQurMAELq1ABC6twAQurkAELq7ABC6vQAQur8AELrBABC63gAQuuEAELrkABC65wAQuuoAELrtABC68AAQuvMAELr1ABC7cAAQu3IAELt0ABC7dgAQu3kAELt6ABC7ewAQu3wAELt9ABC7fwAQu4EAELuCABC7gwAQu4UAELuGABC8AQAQvAMAELwFABC8BwAQvAoAELwLABC8DAAQvA0AELwOABC8EAAQvBIAELwTABC8FAAQvBYAELwXABC8kgAQvJQAELyWABC8mAAQvJsAELycABC8nQAQvJ4AELyfABC8oQAQvKMAELykABC8pQAQvKcAELyoABC9IwAQvSUAEL0nABC9KQAQvSwAEL0tABC9LgAQvS8AEL0wABC9MgAQvTQAEL01ABC9NgAQvTgAEL05ABC9tAAQvbYAEL24ABC9ugAQvb0AEL2+ABC9vwAQvcAAEL3BABC9wwAQvcUAEL3GABC9xwAQvckAEL3KABC+RQAQvkcAEL5JABC+SwAQvk4AEL5PABC+UAAQvlEAEL5SABC+VAAQvlYAEL5XABC+WAAQvloAEL5bABC+1gAQvtgAEL7aABC+3AAQvt8AEL7gABC+4QAQvuIAEL7jABC+5QAQvucAEL7oABC+6QAQvusAEL7sABC/fwAQv6IAEL/CABC/4gAQv+QAEL/mABC/6AAQv+oAEL/tABC/7gAQv+8AEL/yABC/8wAQv/UAEL/2ABC/+AAQv/sAEL/8ABC//QAQwAAAEMABABDABgAQwB8AEMAoABDAKgAQwCwAEMA1ABDAOAAQwDsAEMA9ABDAhgAQwKoAEMDRABDA9QAQwPgAEMD6ABDA/AAQwP4AEMEAABDBAgAQwQMAEMEGABDBHwAQwUAAEMFCABDBRAAQwUYAEMFIABDBSgAQwUwAEMFOABDBUAAQwXEAEMF0ABDBdwAQwXoAEMF9ABDBgAAQwYMAEMGGABDBiQAQwYsAEMIGABDCCAAQwgoAEMIMABDCDwAQwhAAEMIRABDCEgAQwhMAEMIVABDCFwAQwhgAEMIZABDCGwAQwhwAEMKXABDCmQAQwpsAEMKdABDCoAAQwqEAEMKiABDCowAQwqQAEMKmABDCqAAQwqkAEMKqABDCrAAQwq0AEMMoABDDKgAQwy0AEMMvABDDMgAQwzMAEMM0ABDDNQAQwzYAEMM4ABDDOgAQwzsAEMM8ABDDPgAQwz8AEMNYABDDWQAQw1oAEMNcABDD1wAQw9kAEMPbABDD3QAQw+AAEMPhABDD4gAQw+MAEMPkABDD5gAQw+gAEMPpABDD6gAQw+wAEMPtABDEaAAQxGoAEMRsABDEbgAQxHEAEMRyABDEcwAQxHQAEMR1ABDEdwAQxHkAEMR6ABDEewAQxH0AEMR+ABDE+QAQxPsAEMT9ABDE/wAQxQIAEMUDABDFBAAQxQUAEMUGABDFCAAQxQoAEMULABDFDAAQxQ4AEMUPABDFigAQxYwAEMWOABDFkAAQxZMAEMWUABDFlQAQxZYAEMWXABDFmQAQxZsAEMWcABDFnQAQxZ8AEMWgABDGGwAQxh0AEMYfABDGIQAQxiQAEMYlABDGJgAQxicAEMYoABDGKgAQxiwAEMYtABDGLgAQxjAAEMYxABDGegAQxp4AEMbFABDG6QAQxuwAEMbuABDG8AAQxvIAEMb0ABDG9gAQxvcAEMb6ABDHEwAQxzAAEMcyABDHNAAQxzYAEMc4ABDHOgAQxzwAEMc+ABDHWwAQx14AEMdhABDHZAAQx2cAEMdqABDHbQAQx3AAEMdyABDH7QAQx+8AEMfxABDH8wAQx/YAEMf3ABDH+AAQx/kAEMf6ABDH/AAQx/4AEMf/ABDIAAAQyAIAEMgDABDIfgAQyIAAEMiCABDIhAAQyIcAEMiIABDIiQAQyIoAEMiLABDIjQAQyI8AEMiQABDIkQAQyJMAEMiUABDJDwAQyREAEMkTABDJFQAQyRgAEMkZABDJGgAQyRsAEMkcABDJHgAQySAAEMkhABDJIgAQySQAEMklABDJoAAQyaIAEMmlABDJpwAQyaoAEMmrABDJrAAQya0AEMmuABDJsAAQybIAEMmzABDJtAAQybYAEMm3ABDKMgAQyjQAEMo2ABDKOAAQyjsAEMo8ABDKPQAQyj4AEMo/ABDKQQAQykMAEMpEABDKRQAQykcAEMpIABDKwwAQysUAEMrHABDKyQAQyswAEMrNABDKzgAQys8AEMrQABDK0gAQytQAEMrVABDK1gAQytgAEMrZABDLVAAQy1YAEMtYABDLWgAQy10AEMteABDLXwAQy2AAEMthABDLYwAQy2UAEMtmABDLZwAQy2kAEMtqABDL/QAQzCAAEMxAABDMYAAQzGIAEMxkABDMZgAQzGgAEMxrABDMbAAQzG0AEMxwABDMcQAQzHMAEMx0ABDMdwAQzHoAEMx7ABDMfAAQzH8AEMyAABDMhQAQzJ4AEMynABDMqQAQzKwAEMy1ABDMuAAQzLsAEMy9ABDNBgAQzSoAEM1RABDNdQAQzXgAEM16ABDNfAAQzX4AEM2AABDNggAQzYMAEM2GABDNnwAQzcAAEM3CABDNxAAQzcYAEM3IABDNygAQzcwAEM3OABDN0AAQzfEAEM30ABDN9wAQzfoAEM39ABDOAAAQzgMAEM4GABDOCQAQzgsAEM6GABDOiAAQzooAEM6MABDOjwAQzpAAEM6RABDOkgAQzpMAEM6VABDOlwAQzpgAEM6ZABDOmwAQzpwAEM8XABDPGQAQzxsAEM8dABDPIAAQzyEAEM8iABDPIwAQzyQAEM8mABDPKAAQzykAEM8qABDPLAAQzy0AEM+oABDPqgAQz60AEM+vABDPsgAQz7MAEM+0ABDPtQAQz7YAEM+4ABDPugAQz7sAEM+8ABDPvgAQz78AEM/YABDP2QAQz9oAEM/cABDQVwAQ0FkAENBbABDQXQAQ0GAAENBhABDQYgAQ0GMAENBkABDQZgAQ0GgAENBpABDQagAQ0GwAENBtABDQ6AAQ0OoAENDsABDQ7gAQ0PEAENDyABDQ8wAQ0PQAEND1ABDQ9wAQ0PkAEND6ABDQ+wAQ0P0AEND+ABDReQAQ0XsAENF9ABDRfwAQ0YIAENGDABDRhAAQ0YUAENGGABDRiAAQ0YoAENGLABDRjAAQ0Y4AENGPABDSCgAQ0gwAENIOABDSEAAQ0hMAENIUABDSFQAQ0hYAENIXABDSGQAQ0hsAENIcABDSHQAQ0h8AENIgABDSmwAQ0p0AENKfABDSoQAQ0qQAENKlABDSpgAQ0qcAENKoABDSqgAQ0qwAENKtABDSrgAQ0rAAENKxABDS+gAQ0x4AENNFABDTaQAQ02wAENNvABDTcQAQ03MAENN1ABDTdwAQ03gAENN7ABDTlAAQ07EAENO0ABDTtwAQ07oAENO9ABDTwAAQ08MAENPGABDT4wAQ0+YAENPpABDT7AAQ0+8AENPyABDT9QAQ0/gAENP6ABDUdQAQ1HcAENR6ABDUfAAQ1H8AENSAABDUgQAQ1IIAENSDABDUhQAQ1IgAENSJABDUigAQ1IwAENSNABDVCAAQ1QoAENUNABDVDwAQ1RIAENUTABDVFAAQ1RUAENUWABDVGAAQ1RsAENUcABDVHQAQ1R8AENUgABDVmwAQ1Z0AENWgABDVogAQ1aUAENWmABDVpwAQ1agAENWpABDVqwAQ1a4AENWvABDVsAAQ1bIAENWzABDWLgAQ1jAAENYzABDWNQAQ1jgAENY5ABDWOgAQ1jsAENY8ABDWPgAQ1kEAENZCABDWQwAQ1kUAENZGABDWwQAQ1sMAENbFABDWxwAQ1soAENbLABDWzAAQ1s0AENbOABDW0AAQ1tMAENbUABDW1QAQ1tcAENbYABDXUwAQ11UAENdXABDXWQAQ11wAENddABDXXgAQ118AENdgABDXYgAQ12UAENdmABDXZwAQ12kAENdqABDX5QAQ1+cAENfqABDX7AAQ1+8AENfwABDX8QAQ1/IAENfzABDX9QAQ1/gAENf5ABDX+gAQ1/wAENf9ABDYDgAQ2A8AENgRABDYjAAQ2I4AENiQABDYkgAQ2JUAENiWABDYlwAQ2JgAENiZABDYmwAQ2J4AENifABDYoAAQ2KIAENijABDZHgAQ2SAAENkiABDZJAAQ2ScAENkoABDZKQAQ2SoAENkrABDZLQAQ2TAAENkxABDZMgAQ2TQAENk1ABDZsAAQ2bIAENm1ABDZtwAQ2boAENm7ABDZvAAQ2b0AENm+ABDZwAAQ2cMAENnEABDZxQAQ2ccAENnIABDaWwAQ2n4AENqeABDavgAQ2sAAENrCABDaxAAQ2sYAENrJABDaygAQ2ssAENrOABDazwAQ2tEAENrSABDa1AAQ2tcAENrYABDa2QAQ2twAENrdABDa5gAQ2v8AENsIABDbCgAQ2wwAENsVABDbGAAQ2xsAENsdABDbZgAQ24oAENuxABDb1QAQ29gAENvaABDb3AAQ294AENvgABDb4gAQ2+MAENvmABDb/wAQ3CAAENwiABDcJAAQ3CYAENwoABDcKgAQ3CwAENwuABDcMAAQ3FEAENxUABDcVwAQ3FoAENxdABDcYAAQ3GMAENxmABDcaQAQ3GsAENzmABDc6AAQ3OoAENzsABDc7wAQ3PAAENzxABDc8gAQ3PMAENz1ABDc9wAQ3PgAENz5ABDc+wAQ3PwAEN13ABDdeQAQ3XsAEN19ABDdgAAQ3YEAEN2CABDdgwAQ3YQAEN2GABDdiAAQ3YkAEN2KABDdjAAQ3Y0AEN4IABDeCgAQ3g0AEN4PABDeEgAQ3hMAEN4UABDeFQAQ3hYAEN4YABDeGgAQ3hsAEN4cABDeHgAQ3h8AEN44ABDeOQAQ3joAEN48ABDetwAQ3rkAEN67ABDevQAQ3sAAEN7BABDewgAQ3sMAEN7EABDexgAQ3sgAEN7JABDeygAQ3swAEN7NABDfSAAQ30oAEN9MABDfTgAQ31EAEN9SABDfUwAQ31QAEN9VABDfVwAQ31kAEN9aABDfWwAQ310AEN9eABDf2QAQ39sAEN/dABDf3wAQ3+IAEN/jABDf5AAQ3+UAEN/mABDf6AAQ3+oAEN/rABDf7AAQ3+4AEN/vABDgagAQ4GwAEOBuABDgcAAQ4HMAEOB0ABDgdQAQ4HYAEOB3ABDgeQAQ4HsAEOB8ABDgfQAQ4H8AEOCAABDg+wAQ4P0AEOD/ABDhAQAQ4QQAEOEFABDhBgAQ4QcAEOEIABDhCgAQ4QwAEOENABDhDgAQ4RAAEOERABDhWgAQ4X4AEOGlABDhyQAQ4cwAEOHOABDh0AAQ4dIAEOHUABDh1gAQ4dcAEOHaABDh8wAQ4hAAEOISABDiFAAQ4hYAEOIYABDiGgAQ4hwAEOIeABDiOwAQ4j4AEOJBABDiRAAQ4kcAEOJKABDiTQAQ4lAAEOJSABDizQAQ4s8AEOLRABDi0wAQ4tYAEOLXABDi2AAQ4tkAEOLaABDi3AAQ4t4AEOLfABDi4AAQ4uIAEOLjABDjXgAQ42AAEONiABDjZAAQ42cAEONoABDjaQAQ42oAEONrABDjbQAQ428AEONwABDjcQAQ43MAEON0ABDj7wAQ4/EAEOPzABDj9QAQ4/gAEOP5ABDj+gAQ4/sAEOP8ABDj/gAQ5AAAEOQBABDkAgAQ5AQAEOQFABDkgAAQ5IIAEOSFABDkhwAQ5IoAEOSLABDkjAAQ5I0AEOSOABDkkAAQ5JIAEOSTABDklAAQ5JYAEOSXABDlEgAQ5RQAEOUWABDlGAAQ5RsAEOUcABDlHQAQ5R4AEOUfABDlIQAQ5SMAEOUkABDlJQAQ5ScAEOUoABDlowAQ5aUAEOWnABDlqQAQ5awAEOWtABDlrgAQ5a8AEOWwABDlsgAQ5bQAEOW1ABDltgAQ5bgAEOW5ABDmNAAQ5jYAEOY4ABDmOgAQ5j0AEOY+ABDmPwAQ5kAAEOZBABDmQwAQ5kUAEOZGABDmRwAQ5kkAEOZKABDm3QAQ5wAAEOcgABDnQAAQ50IAEOdEABDnRgAQ50gAEOdLABDnTAAQ500AEOdQABDnUQAQ51MAEOdUABDnVgAQ51kAEOdaABDnWwAQ514AEOdfABDnZAAQ530AEOeGABDniAAQ54oAEOeTABDnlgAQ55kAEOebABDn5AAQ6AgAEOgvABDoUwAQ6FYAEOhYABDoWgAQ6FwAEOheABDoYAAQ6GEAEOhkABDofQAQ6J4AEOigABDoogAQ6KQAEOimABDoqAAQ6KoAEOisABDorgAQ6M8AEOjSABDo1QAQ6NgAEOjbABDo3gAQ6OEAEOjkABDo5wAQ6OkAEOlkABDpZgAQ6WgAEOlqABDpbQAQ6W4AEOlvABDpcAAQ6XEAEOlzABDpdQAQ6XYAEOl3ABDpeQAQ6XoAEOn1ABDp9wAQ6fkAEOn7ABDp/gAQ6f8AEOoAABDqAQAQ6gIAEOoEABDqBgAQ6gcAEOoIABDqCgAQ6gsAEOqGABDqiAAQ6osAEOqNABDqkAAQ6pEAEOqSABDqkwAQ6pQAEOqWABDqmAAQ6pkAEOqaABDqnAAQ6p0AEOq2ABDqtwAQ6rgAEOq6ABDrNQAQ6zcAEOs5ABDrOwAQ6z4AEOs/ABDrQAAQ60EAEOtCABDrRAAQ60YAEOtHABDrSAAQ60oAEOtLABDrxgAQ68gAEOvKABDrzAAQ688AEOvQABDr0QAQ69IAEOvTABDr1QAQ69cAEOvYABDr2QAQ69sAEOvcABDsVwAQ7FkAEOxbABDsXQAQ7GAAEOxhABDsYgAQ7GMAEOxkABDsZgAQ7GgAEOxpABDsagAQ7GwAEOxtABDs6AAQ7OoAEOzsABDs7gAQ7PEAEOzyABDs8wAQ7PQAEOz1ABDs9wAQ7PkAEOz6ABDs+wAQ7P0AEOz+ABDteQAQ7XsAEO19ABDtfwAQ7YIAEO2DABDthAAQ7YUAEO2GABDtiAAQ7YoAEO2LABDtjAAQ7Y4AEO2PABDt2AAQ7fwAEO4jABDuRwAQ7koAEO5MABDuTgAQ7lAAEO5SABDuVAAQ7lUAEO5YABDucQAQ7o4AEO6QABDukgAQ7pQAEO6WABDumAAQ7poAEO6cABDuuQAQ7rwAEO6/ABDuwgAQ7sUAEO7IABDuywAQ7s4AEO7QABDvSwAQ700AEO9PABDvUQAQ71QAEO9VABDvVgAQ71cAEO9YABDvWgAQ71wAEO9dABDvXgAQ72AAEO9hABDv3AAQ794AEO/gABDv4gAQ7+UAEO/mABDv5wAQ7+gAEO/pABDv6wAQ7+0AEO/uABDv7wAQ7/EAEO/yABDwbQAQ8G8AEPBxABDwcwAQ8HYAEPB3ABDweAAQ8HkAEPB6ABDwfAAQ8H4AEPB/ABDwgAAQ8IIAEPCDABDw/gAQ8QAAEPEDABDxBQAQ8QgAEPEJABDxCgAQ8QsAEPEMABDxDgAQ8RAAEPERABDxEgAQ8RQAEPEVABDxkAAQ8ZIAEPGUABDxlgAQ8ZkAEPGaABDxmwAQ8ZwAEPGdABDxnwAQ8aEAEPGiABDxowAQ8aUAEPGmABDyIQAQ8iMAEPIlABDyJwAQ8ioAEPIrABDyLAAQ8i0AEPIuABDyMAAQ8jIAEPIzABDyNAAQ8jYAEPI3ABDysgAQ8rQAEPK2ABDyuAAQ8rsAEPK8ABDyvQAQ8r4AEPK/ABDywQAQ8sMAEPLEABDyxQAQ8scAEPLIABDzWwAQ834AEPOeABDzvgAQ88AAEPPCABDzxAAQ88YAEPPJABDzygAQ88sAEPPOABDzzwAQ89EAEPPSABDz1AAQ89cAEPPYABDz2QAQ89wAEPPdABDz4gAQ8/sAEPQEABD0BgAQ9AgAEPQRABD0FAAQ9BcAEPQZABD0YgAQ9IYAEPStABD00QAQ9NQAEPTWABD02AAQ9NoAEPTcABD03gAQ9N8AEPTiABD0+wAQ9RwAEPUeABD1IAAQ9SIAEPUkABD1JgAQ9SgAEPUqABD1LAAQ9U0AEPVQABD1UwAQ9VYAEPVZABD1XAAQ9V8AEPViABD1ZQAQ9WcAEPXiABD15AAQ9eYAEPXoABD16wAQ9ewAEPXtABD17gAQ9e8AEPXxABD18wAQ9fQAEPX1ABD19wAQ9fgAEPZzABD2dQAQ9ncAEPZ5ABD2fAAQ9n0AEPZ+ABD2fwAQ9oAAEPaCABD2hAAQ9oUAEPaGABD2iAAQ9okAEPcEABD3BgAQ9wkAEPcLABD3DgAQ9w8AEPcQABD3EQAQ9xIAEPcUABD3FgAQ9xcAEPcYABD3GgAQ9xsAEPc0ABD3NQAQ9zYAEPc4ABD3swAQ97UAEPe3ABD3uQAQ97wAEPe9ABD3vgAQ978AEPfAABD3wgAQ98QAEPfFABD3xgAQ98gAEPfJABD4RAAQ+EYAEPhIABD4SgAQ+E0AEPhOABD4TwAQ+FAAEPhRABD4UwAQ+FUAEPhWABD4VwAQ+FkAEPhaABD41QAQ+NcAEPjZABD42wAQ+N4AEPjfABD44AAQ+OEAEPjiABD45AAQ+OYAEPjnABD46AAQ+OoAEPjrABD5ZgAQ+WgAEPlqABD5bAAQ+W8AEPlwABD5cQAQ+XIAEPlzABD5dQAQ+XcAEPl4ABD5eQAQ+XsAEPl8ABD59wAQ+fkAEPn7ABD5/QAQ+gAAEPoBABD6AgAQ+gMAEPoEABD6BgAQ+ggAEPoJABD6CgAQ+gwAEPoNABD6VgAQ+noAEPqhABD6xQAQ+sgAEPrKABD6zAAQ+s4AEPrQABD60gAQ+tMAEPrWABD67wAQ+wwAEPsOABD7EAAQ+xIAEPsUABD7FgAQ+xgAEPsaABD7NwAQ+zoAEPs9ABD7QAAQ+0MAEPtGABD7SQAQ+0wAEPtOABD7yQAQ+8sAEPvNABD7zwAQ+9IAEPvTABD71AAQ+9UAEPvWABD72AAQ+9oAEPvbABD73AAQ+94AEPvfABD8WgAQ/FwAEPxeABD8YAAQ/GMAEPxkABD8ZQAQ/GYAEPxnABD8aQAQ/GsAEPxsABD8bQAQ/G8AEPxwABD86wAQ/O0AEPzvABD88QAQ/PQAEPz1ABD89gAQ/PcAEPz4ABD8+gAQ/PwAEPz9ABD8/gAQ/QAAEP0BABD9fAAQ/X4AEP2AABD9ggAQ/YUAEP2GABD9hwAQ/YgAEP2JABD9iwAQ/Y0AEP2OABD9jwAQ/ZEAEP2SABD+DQAQ/g8AEP4RABD+EwAQ/hYAEP4XABD+GAAQ/hkAEP4aABD+HAAQ/h4AEP4fABD+IAAQ/iIAEP4jABD+ngAQ/qAAEP6iABD+pAAQ/qcAEP6oABD+qQAQ/qoAEP6rABD+rQAQ/q8AEP6wABD+sQAQ/rMAEP60ABD/LwAQ/zEAEP8zABD/NQAQ/zgAEP85ABD/OgAQ/zsAEP88ABD/PgAQ/0AAEP9BABD/QgAQ/0QAEP9FABD/2AAQ//sAEQAbABEAOwARAD0AEQA/ABEAQQARAEMAEQBGABEARwARAEgAEQBLABEATAARAE4AEQBPABEAUQARAFQAEQBVABEAVgARAFkAEQBaABEAYwARAHwAEQCFABEAhwARAIkAEQCSABEAlQARAJgAEQCaABEA4wARAQcAEQEuABEBUgARAVUAEQFXABEBWQARAVsAEQFdABEBXwARAWAAEQFjABEBfAARAZ0AEQGfABEBoQARAaMAEQGlABEBpwARAakAEQGrABEBrQARAc4AEQHRABEB1AARAdcAEQHaABEB3QARAeAAEQHjABEB5gARAegAEQJjABECZQARAmcAEQJpABECbAARAm0AEQJuABECbwARAnAAEQJyABECdAARAnUAEQJ2ABECeAARAnkAEQL0ABEC9gARAvgAEQL6ABEC/QARAv4AEQL/ABEDAAARAwEAEQMDABEDBQARAwYAEQMHABEDCQARAwoAEQOFABEDhwARA4oAEQOMABEDjwARA5AAEQORABEDkgARA5MAEQOVABEDlwARA5gAEQOZABEDmwARA5wAEQO1ABEDtgARA7cAEQO5ABEENAARBDYAEQQ4ABEEOgARBD0AEQQ+ABEEPwARBEAAEQRBABEEQwARBEUAEQRGABEERwARBEkAEQRKABEExQARBMcAEQTJABEEywARBM4AEQTPABEE0AARBNEAEQTSABEE1AARBNYAEQTXABEE2AARBNoAEQTbABEFVgARBVgAEQVaABEFXAARBV8AEQVgABEFYQARBWIAEQVjABEFZQARBWcAEQVoABEFaQARBWsAEQVsABEF5wARBekAEQXrABEF7QARBfAAEQXxABEF8gARBfMAEQX0ABEF9gARBfgAEQX5ABEF+gARBfwAEQX9ABEGeAARBnoAEQZ8ABEGfgARBoEAEQaCABEGgwARBoQAEQaFABEGhwARBokAEQaKABEGiwARBo0AEQaOABEG1wARBvsAEQciABEHRgARB0kAEQdLABEHTQARB08AEQdRABEHUwARB1QAEQdXABEHcAARB40AEQePABEHkQARB5MAEQeVABEHlwARB5kAEQebABEHuAARB7sAEQe+ABEHwQARB8QAEQfHABEHygARB80AEQfPABEISgARCEwAEQhOABEIUAARCFMAEQhUABEIVQARCFYAEQhXABEIWQARCFsAEQhcABEIXQARCF8AEQhgABEI2wARCN0AEQjfABEI4QARCOQAEQjlABEI5gARCOcAEQjoABEI6gARCOwAEQjtABEI7gARCPAAEQjxABEJbAARCW4AEQlwABEJcgARCXUAEQl2ABEJdwARCXgAEQl5ABEJewARCX0AEQl+ABEJfwARCYEAEQmCABEJ/QARCf8AEQoCABEKBAARCgcAEQoIABEKCQARCgoAEQoLABEKDQARCg8AEQoQABEKEQARChMAEQoUABEKjwARCpEAEQqTABEKlQARCpgAEQqZABEKmgARCpsAEQqcABEKngARCqAAEQqhABEKogARCqQAEQqlABELIAARCyIAEQskABELJgARCykAEQsqABELKwARCywAEQstABELLwARCzEAEQsyABELMwARCzUAEQs2ABELsQARC7MAEQu1ABELtwARC7oAEQu7ABELvAARC70AEQu+ABELwAARC8IAEQvDABELxAARC8YAEQvHABEMWgARDH0AEQydABEMvQARDL8AEQzBABEMwwARDMUAEQzIABEMyQARDMoAEQzNABEMzgARDNAAEQzRABEM0wARDNYAEQzXABEM2AARDNsAEQzcABEM4QARDPoAEQ0DABENBQARDQcAEQ0QABENEwARDRYAEQ0YABENYQARDYUAEQ2sABEN0AARDdMAEQ3VABEN1wARDdkAEQ3bABEN3QARDd4AEQ3hABEN+gARDhsAEQ4dABEOHwARDiEAEQ4jABEOJQARDicAEQ4pABEOKwARDkwAEQ5PABEOUgARDlUAEQ5YABEOWwARDl4AEQ5hABEOZAARDmYAEQ7hABEO4wARDuUAEQ7nABEO6gARDusAEQ7sABEO7QARDu4AEQ7wABEO8gARDvMAEQ70ABEO9gARDvcAEQ9yABEPdAARD3YAEQ94ABEPewARD3wAEQ99ABEPfgARD38AEQ+BABEPgwARD4QAEQ+FABEPhwARD4gAERADABEQBQAREAgAERAKABEQDQAREA4AERAPABEQEAAREBEAERATABEQFQAREBYAERAXABEQGQAREBoAERAzABEQNAAREDUAERA3ABEQsgARELQAERC2ABEQuAARELsAERC8ABEQvQAREL4AERC/ABEQwQAREMMAERDEABEQxQAREMcAERDIABERQwAREUUAERFHABERSQAREUwAERFNABERTgAREU8AERFQABERUgAREVQAERFVABERVgAREVgAERFZABER1AAREdYAERHYABER2gAREd0AERHeABER3wAREeAAERHhABER4wAREeUAERHmABER5wAREekAERHqABESZQAREmcAERJpABESawAREm4AERJvABEScAAREnEAERJyABESdAAREnYAERJ3ABESeAAREnoAERJ7ABES9gAREvgAERL6ABES/AAREv8AERMAABETAQAREwIAERMDABETBQAREwcAERMIABETCQAREwsAERMMABETVQARE3kAEROgABETxAARE8cAERPJABETywARE80AERPPABET0QARE9IAERPVABET7gARFAsAERQNABEUDwARFBEAERQTABEUFQARFBcAERQZABEUNgARFDkAERQ8ABEUPwARFEIAERRFABEUSAARFEsAERRNABEUyAARFMoAERTMABEUzgARFNEAERTSABEU0wARFNQAERTVABEU1wARFNkAERTaABEU2wARFN0AERTeABEVWQARFVsAERVdABEVXwARFWIAERVjABEVZAARFWUAERVmABEVaAARFWoAERVrABEVbAARFW4AERVvABEV6gARFewAERXuABEV8AARFfMAERX0ABEV9QARFfYAERX3ABEV+QARFfsAERX8ABEV/QARFf8AERYAABEWewARFn0AERZ/ABEWgQARFoQAERaFABEWhgARFocAERaIABEWigARFowAERaNABEWjgARFpAAERaRABEXDAARFw4AERcQABEXEgARFxUAERcWABEXFwARFxgAERcZABEXGwARFx0AERceABEXHwARFyEAERciABEXnQARF58AERehABEXowARF6YAERenABEXqAARF6kAEReqABEXrAARF64AERevABEXsAARF7IAERezABEYLgARGDAAERgyABEYNAARGDcAERg4ABEYOQARGDoAERg7ABEYPQARGD8AERhAABEYQQARGEMAERhEABEY1wARGPoAERkaABEZOgARGTwAERk+ABEZQAARGUIAERlFABEZRgARGUcAERlKABEZSwARGU0AERlOABEZUAARGVMAERlUABEZVQARGVgAERlZABEZXgARGXcAERmAABEZggARGYQAERmNABEZkAARGZMAERmVABEZ3gARGgIAERopABEaTQARGlAAERpSABEaVAARGlYAERpYABEaWgARGlsAERpeABEadwARGpgAERqaABEanAARGp4AERqgABEaogARGqQAERqmABEaqAARGskAERrMABEazwARGtIAERrVABEa2AARGtsAERreABEa4QARGuMAERteABEbYAARG2IAERtkABEbZwARG2gAERtpABEbagARG2sAERttABEbbwARG3AAERtxABEbcwARG3QAERvvABEb8QARG/MAERv1ABEb+AARG/kAERv6ABEb+wARG/wAERv+ABEcAAARHAEAERwCABEcBAARHAUAERyAABEcggARHIUAERyHABEcigARHIsAERyMABEcjQARHI4AERyQABEckgARHJMAERyUABEclgARHJcAERywABEcsQARHLIAERy0ABEdLwARHTEAER0zABEdNQARHTgAER05ABEdOgARHTsAER08ABEdPgARHUAAER1BABEdQgARHUQAER1FABEdwAARHcIAER3EABEdxgARHckAER3KABEdywARHcwAER3NABEdzwARHdEAER3SABEd0wARHdUAER3WABEeUQARHlMAER5VABEeVwARHloAER5bABEeXAARHl0AER5eABEeYAARHmIAER5jABEeZAARHmYAER5nABEe4gARHuQAER7mABEe6AARHusAER7sABEe7QARHu4AER7vABEe8QARHvMAER70ABEe9QARHvcAER74ABEfcwARH3UAER93ABEfeQARH3wAER99ABEffgARH38AER+AABEfggARH4QAER+FABEfhgARH4gAER+JABEf0gARH/YAESAdABEgQQARIEQAESBGABEgSAARIEoAESBMABEgTgARIE8AESBSABEgawARIIgAESCKABEgjAARII4AESCQABEgkgARIJQAESCWABEgswARILYAESC5ABEgvAARIL8AESDCABEgxQARIMgAESDKABEhRQARIUcAESFJABEhSwARIU4AESFPABEhUAARIVEAESFSABEhVAARIVYAESFXABEhWAARIVoAESFbABEh1gARIdgAESHaABEh3AARId8AESHgABEh4QARIeIAESHjABEh5QARIecAESHoABEh6QARIesAESHsABEiZwARImkAESJrABEibQARInAAESJxABEicgARInMAESJ0ABEidgARIngAESJ5ABEiegARInwAESJ9ABEi+AARIvoAESL8ABEi/gARIwEAESMCABEjAwARIwQAESMFABEjBwARIwkAESMKABEjCwARIw0AESMOABEjiQARI4sAESONABEjjwARI5IAESOTABEjlAARI5UAESOWABEjmAARI5oAESObABEjnAARI54AESOfABEkGgARJBwAESQeABEkIAARJCMAESQkABEkJQARJCYAESQnABEkKQARJCsAESQsABEkLQARJC8AESQwABEkqwARJK0AESSvABEksQARJLQAESS1ABEktgARJLcAESS4ABEkugARJLwAESS9ABEkvgARJMAAESTBABEk0gARJNMAESTVABElWAARJXwAESWgABElwwARJeoAESYKABEmMQARJlgAESZ4ABEmnAARJsAAESbCABEmxQARJscAESbJABEmywARJs4AESbRABEm0wARJtUAESbYABEm2gARJtwAESbfABEm4gARJuMAESbsABEnBQARJwoAEScMABEnEQARJxQAEScWABEnXwARJ4MAESeqABEnzgARJ9EAESfTABEn1QARJ9cAESfZABEn2wARJ9wAESffABEn+AARKB0AESgfABEoIQARKCMAESglABEoJwARKCkAESgrABEoLQARKC8AEShUABEoVwARKFoAEShdABEoYAARKGMAEShmABEoaQARKGwAEShvABEocQARKOwAESjuABEo8QARKPMAESj2ABEo9wARKPgAESj5ABEo+gARKPwAESj+ABEo/wARKQAAESkCABEpAwARKRQAESkVABEpFwARKZIAESmUABEplgARKZgAESmbABEpnAARKZ0AESmeABEpnwARKaEAESmjABEppAARKaUAESmnABEpqAARKiMAESolABEqKAARKioAESotABEqLgARKi8AESowABEqMQARKjMAESo1ABEqNgARKjcAESo5ABEqOgARKksAESpQABEqUwARKlUAESpmABEqbwARKnIAESp1ABEqdwARKooAESqVABErEAARKxIAESsUABErFgARKxkAESsaABErGwARKxwAESsdABErHwARKyEAESsiABErIwARKyUAESsmABEroQARK6MAESumABErqAARK6sAESusABErrQARK64AESuvABErsQARK7MAESu0ABErtQARK7cAESu4ABEryQARK8oAESvMABEsRwARLEkAESxLABEsTQARLFAAESxRABEsUgARLFMAESxUABEsVgARLFgAESxZABEsWgARLFwAESxdABEs2AARLNoAESzdABEs3wARLOIAESzjABEs5AARLOUAESzmABEs6AARLOoAESzrABEs7AARLO4AESzvABEtCAARLQkAES0KABEtDAARLYcAES2JABEtiwARLY0AES2QABEtkQARLZIAES2TABEtlAARLZYAES2YABEtmQARLZoAES2cABEtnQARLhgAES4aABEuHQARLh8AES4iABEuIwARLiQAES4lABEuJgARLigAES4qABEuKwARLiwAES4uABEuLwARLlYAES5vABEueAARLnsAES5+ABEuhwARLooAES6NABEujwARLqIAES81ABEvWAARL3gAES+YABEvmgARL5wAES+eABEvoAARL6MAES+kABEvpQARL6gAES+pABEvqwARL6wAES+uABEvsQARL7IAES+zABEvtgARL7cAES+8ABEv1QARL94AES/gABEv4gARL+sAES/uABEv8QARL/MAETA8ABEwYAARMIcAETCrABEwrgARMLAAETCyABEwtAARMLYAETC4ABEwuQARMLwAETDVABEw9gARMPgAETD6ABEw/AARMP4AETEAABExAgARMQQAETEGABExJwARMSoAETEtABExMAARMTMAETE2ABExOQARMTwAETE/ABExQQARMbwAETG+ABExwAARMcIAETHFABExxgARMccAETHIABExyQARMcsAETHNABExzgARMc8AETHRABEx0gARMk0AETJPABEyUQARMlMAETJWABEyVwARMlgAETJZABEyWgARMlwAETJeABEyXwARMmAAETJiABEyYwARMt4AETLgABEy4wARMuUAETLoABEy6QARMuoAETLrABEy7AARMu4AETLwABEy8QARMvIAETL0ABEy9QARMw4AETMPABEzEAARMxIAETONABEzjwARM5EAETOTABEzlgARM5cAETOYABEzmQARM5oAETOcABEzngARM58AETOgABEzogARM6MAETQeABE0IAARNCIAETQkABE0JwARNCgAETQpABE0KgARNCsAETQtABE0LwARNDAAETQxABE0MwARNDQAETSvABE0sQARNLMAETS1ABE0uAARNLkAETS6ABE0uwARNLwAETS+ABE0wAARNMEAETTCABE0xAARNMUAETVAABE1QgARNUQAETVGABE1SQARNUoAETVLABE1TAARNU0AETVPABE1UQARNVIAETVTABE1VQARNVYAETXRABE10wARNdUAETXXABE12gARNdsAETXcABE13QARNd4AETXgABE14gARNeMAETXkABE15gARNecAETYwABE2VAARNnsAETafABE2ogARNqQAETamABE2qAARNqoAETasABE2rQARNrAAETbJABE25gARNugAETbqABE27AARNu4AETbwABE28gARNvQAETcRABE3FAARNxcAETcaABE3HQARNyAAETcjABE3JgARNygAETejABE3pQARN6cAETepABE3rAARN60AETeuABE3rwARN7AAETeyABE3tAARN7UAETe2ABE3uAARN7kAETg0ABE4NgARODgAETg6ABE4PQAROD4AETg/ABE4QAAROEEAEThDABE4RQAROEYAEThHABE4SQAROEoAETjFABE4xwAROMkAETjLABE4zgAROM8AETjQABE40QARONIAETjUABE41gARONcAETjYABE42gARONsAETlWABE5WAAROVsAETldABE5YAAROWEAETliABE5YwAROWQAETlmABE5aAAROWkAETlqABE5bAAROW0AETnoABE56gAROewAETnuABE58QAROfIAETnzABE59AAROfUAETn3ABE5+QAROfoAETn7ABE5/QAROf4AETp5ABE6ewAROn0AETp/ABE6ggAROoMAETqEABE6hQAROoYAETqIABE6igAROosAETqMABE6jgAROo8AETsKABE7DAAROw4AETsQABE7EwAROxQAETsVABE7FgAROxcAETsZABE7GwAROxwAETsdABE7HwAROyAAETuzABE71gARO/YAETwWABE8GAARPBoAETwcABE8HgARPCEAETwiABE8IwARPCYAETwnABE8KQARPCoAETwsABE8LwARPDAAETwxABE8NAARPDUAETw6ABE8UwARPFwAETxeABE8YAARPGkAETxsABE8bwARPHEAETy6ABE83gARPQUAET0pABE9LAARPS4AET0wABE9MgARPTQAET02ABE9NwARPToAET1TABE9dAARPXYAET14ABE9egARPXwAET1+ABE9gAARPYIAET2EABE9pQARPagAET2rABE9rgARPbEAET20ABE9twARPboAET29ABE9vwARPjoAET48ABE+PgARPkAAET5DABE+RAARPkUAET5GABE+RwARPkkAET5LABE+TAARPk0AET5PABE+UAARPssAET7NABE+zwARPtEAET7UABE+1QARPtYAET7XABE+2AARPtoAET7cABE+3QARPt4AET7gABE+4QARP1wAET9eABE/YQARP2MAET9mABE/ZwARP2gAET9pABE/agARP2wAET9uABE/bwARP3AAET9yABE/cwARP4wAET+NABE/jgARP5AAEUALABFADQARQA8AEUARABFAFAARQBUAEUAWABFAFwARQBgAEUAaABFAHAARQB0AEUAeABFAIAARQCEAEUCcABFAngARQKAAEUCiABFApQARQKYAEUCnABFAqAARQKkAEUCrABFArQARQK4AEUCvABFAsQARQLIAEUEtABFBLwARQTEAEUEzABFBNgARQTcAEUE4ABFBOQARQToAEUE8ABFBPgARQT8AEUFAABFBQgARQUMAEUG+ABFBwAARQcIAEUHEABFBxwARQcgAEUHJABFBygARQcsAEUHNABFBzwARQdAAEUHRABFB0wARQdQAEUJPABFCUQARQlMAEUJVABFCWAARQlkAEUJaABFCWwARQlwAEUJeABFCYAARQmEAEUJiABFCZAARQmUAEUKuABFC0gARQvkAEUMdABFDIAARQyIAEUMkABFDJgARQygAEUMqABFDKwARQy4AEUNHABFDZAARQ2YAEUNoABFDagARQ2wAEUNuABFDcAARQ3IAEUOPABFDkgARQ5UAEUOYABFDmwARQ54AEUOhABFDpAARQ6YAEUQhABFEIwARRCUAEUQnABFEKgARRCsAEUQsABFELQARRC4AEUQwABFEMgARRDMAEUQ0ABFENgARRDcAEUSyABFEtAARRLYAEUS4ABFEuwARRLwAEUS9ABFEvgARRL8AEUTBABFEwwARRMQAEUTFABFExwARRMgAEUVDABFFRQARRUcAEUVJABFFTAARRU0AEUVOABFFTwARRVAAEUVSABFFVAARRVUAEUVWABFFWAARRVkAEUXUABFF1gARRdkAEUXbABFF3gARRd8AEUXgABFF4QARReIAEUXkABFF5gARRecAEUXoABFF6gARResAEUZmABFGaAARRmoAEUZsABFGbwARRnAAEUZxABFGcgARRnMAEUZ1ABFGdwARRngAEUZ5ABFGewARRnwAEUb3ABFG+QARRvsAEUb9ABFHAAARRwEAEUcCABFHAwARRwQAEUcGABFHCAARRwkAEUcKABFHDAARRw0AEUeIABFHigARR4wAEUeOABFHkQARR5IAEUeTABFHlAARR5UAEUeXABFHmQARR5oAEUebABFHnQARR54AEUevABFHsAARR7IAEUg1ABFIWQARSH0AEUigABFIxwARSOcAEUkOABFJNQARSVUAEUl5ABFJnQARSZ8AEUmiABFJpAARSaYAEUmoABFJqwARSa4AEUmwABFJsgARSbUAEUm3ABFJuQARSbwAEUm/ABFJwAARSckAEUniABFJ5wARSekAEUnuABFJ8QARSfMAEUo8ABFKYAARSocAEUqrABFKrgARSrAAEUqyABFKtAARSrYAEUq4ABFKuQARSrwAEUrVABFK+gARSvwAEUr+ABFLAAARSwIAEUsEABFLBgARSwgAEUsKABFLDAARSzEAEUs0ABFLNwARSzoAEUs9ABFLQAARS0MAEUtGABFLSQARS0wAEUtOABFLyQARS8sAEUvOABFL0AARS9MAEUvUABFL1QARS9YAEUvXABFL2QARS9sAEUvcABFL3QARS98AEUvgABFL8QARS/IAEUv0ABFMbwARTHEAEUxzABFMdQARTHgAEUx5ABFMegARTHsAEUx8ABFMfgARTIAAEUyBABFMggARTIQAEUyFABFNAAARTQIAEU0FABFNBwARTQoAEU0LABFNDAARTQ0AEU0OABFNEAARTRIAEU0TABFNFAARTRYAEU0XABFNKAARTS0AEU0wABFNMgARTUMAEU1MABFNTwARTVIAEU1UABFNcAARTYIAEU39ABFN/wARTgEAEU4DABFOBgARTgcAEU4IABFOCQARTgoAEU4MABFODgARTg8AEU4QABFOEgARThMAEU6OABFOkAARTpMAEU6VABFOmAARTpkAEU6aABFOmwARTpwAEU6eABFOoAARTqEAEU6iABFOpAARTqUAEU62ABFOtwARTrkAEU80ABFPNgARTzgAEU86ABFPPQARTz4AEU8/ABFPQAART0EAEU9DABFPRQART0YAEU9HABFPSQART0oAEU/FABFPxwART8oAEU/MABFPzwART9AAEU/RABFP0gART9MAEU/VABFP1wART9gAEU/ZABFP2wART9wAEU/1ABFP9gART/cAEU/5ABFQdAARUHYAEVB4ABFQegARUH0AEVB+ABFQfwARUIAAEVCBABFQgwARUIUAEVCGABFQhwARUIkAEVCKABFRBQARUQcAEVEKABFRDAARUQ8AEVEQABFREQARURIAEVETABFRFQARURcAEVEYABFRGQARURsAEVEcABFRMwARUUwAEVFdABFRYAARUWMAEVFmABFRaQARUXoAEVF9ABFRgAARUYMAEVGGABFRiAARUZ4AEVG6ABFRzAARUdoAEVJtABFSkAARUrAAEVLQABFS0gARUtQAEVLWABFS2AARUtsAEVLcABFS3QARUuAAEVLhABFS4wARUuQAEVLmABFS6QARUuoAEVLrABFS7gARUu8AEVL0ABFTDQARUxYAEVMYABFTGgARUyMAEVMmABFTKQARUysAEVN0ABFTmAARU78AEVPjABFT5gARU+gAEVPqABFT7AARU+4AEVPwABFT8QARU/QAEVQNABFULgARVDAAEVQyABFUNAARVDYAEVQ4ABFUOgARVDwAEVQ+ABFUXwARVGIAEVRlABFUaAARVGsAEVRuABFUcQARVHQAEVR3ABFUeQARVPQAEVT2ABFU+AARVPoAEVT9ABFU/gARVP8AEVUAABFVAQARVQMAEVUFABFVBgARVQcAEVUJABFVCgARVYUAEVWHABFViQARVYsAEVWOABFVjwARVZAAEVWRABFVkgARVZQAEVWWABFVlwARVZgAEVWaABFVmwARVhYAEVYYABFWGwARVh0AEVYgABFWIQARViIAEVYjABFWJAARViYAEVYoABFWKQARVioAEVYsABFWLQARVkYAEVZHABFWSAARVkoAEVbFABFWxwARVskAEVbLABFWzgARVs8AEVbQABFW0QARVtIAEVbUABFW1gARVtcAEVbYABFW2gARVtsAEVdWABFXWAARV1oAEVdcABFXXwARV2AAEVdhABFXYgARV2MAEVdlABFXZwARV2gAEVdpABFXawARV2wAEVfnABFX6QARV+sAEVftABFX8AARV/EAEVfyABFX8wARV/QAEVf2ABFX+AARV/kAEVf6ABFX/AARV/0AEVh4ABFYegARWHwAEVh+ABFYgQARWIIAEViDABFYhAARWIUAEViHABFYiQARWIoAEViLABFYjQARWI4AEVkJABFZCwARWQ0AEVkPABFZEgARWRMAEVkUABFZFQARWRYAEVkYABFZGgARWRsAEVkcABFZHgARWR8AEVloABFZjAARWbMAEVnXABFZ2gARWdwAEVneABFZ4AARWeIAEVnkABFZ5QARWegAEVoBABFaHgARWiAAEVoiABFaJAARWiYAEVooABFaKgARWiwAEVpJABFaTAARWk8AEVpSABFaVQARWlgAEVpbABFaXgARWmAAEVrbABFa3QARWt8AEVrhABFa5AARWuUAEVrmABFa5wARWugAEVrqABFa7AARWu0AEVruABFa8AARWvEAEVtsABFbbgARW3AAEVtyABFbdQARW3YAEVt3ABFbeAARW3kAEVt7ABFbfQARW34AEVt/ABFbgQARW4IAEVv9ABFb/wARXAEAEVwDABFcBgARXAcAEVwIABFcCQARXAoAEVwMABFcDgARXA8AEVwQABFcEgARXBMAEVyOABFckAARXJMAEVyVABFcmAARXJkAEVyaABFcmwARXJwAEVyeABFcoAARXKEAEVyiABFcpAARXKUAEV0gABFdIgARXSQAEV0mABFdKQARXSoAEV0rABFdLAARXS0AEV0vABFdMQARXTIAEV0zABFdNQARXTYAEV2xABFdswARXbUAEV23ABFdugARXbsAEV28ABFdvQARXb4AEV3AABFdwgARXcMAEV3EABFdxgARXccAEV5CABFeRAARXkYAEV5IABFeSwARXkwAEV5NABFeTgARXk8AEV5RABFeUwARXlQAEV5VABFeVwARXlgAEV7rABFfDgARXy4AEV9OABFfUAARX1IAEV9UABFfVgARX1kAEV9aABFfWwARX14AEV9fABFfYQARX2IAEV9kABFfZwARX2gAEV9pABFfbAARX20AEV92ABFfjwARX5gAEV+aABFfnAARX6UAEV+oABFfqwARX60AEV/2ABFgGgARYEEAEWBlABFgaAARYGoAEWBsABFgbgARYHAAEWByABFgcwARYHYAEWCPABFgsAARYLIAEWC0ABFgtgARYLgAEWC6ABFgvAARYL4AEWDAABFg4QARYOQAEWDnABFg6gARYO0AEWDwABFg8wARYPYAEWD5ABFg+wARYXYAEWF4ABFhegARYXwAEWF/ABFhgAARYYEAEWGCABFhgwARYYUAEWGHABFhiAARYYkAEWGLABFhjAARYgcAEWIJABFiCwARYg0AEWIQABFiEQARYhIAEWITABFiFAARYhYAEWIYABFiGQARYhoAEWIcABFiHQARYpgAEWKaABFinQARYp8AEWKiABFiowARYqQAEWKlABFipgARYqgAEWKqABFiqwARYqwAEWKuABFirwARYsgAEWLJABFiygARYswAEWNHABFjSQARY0sAEWNNABFjUAARY1EAEWNSABFjUwARY1QAEWNWABFjWAARY1kAEWNaABFjXAARY10AEWPYABFj2gARY9wAEWPeABFj4QARY+IAEWPjABFj5AARY+UAEWPnABFj6QARY+oAEWPrABFj7QARY+4AEWRpABFkawARZG0AEWRvABFkcgARZHMAEWR0ABFkdQARZHYAEWR4ABFkegARZHsAEWR8ABFkfgARZH8AEWT6ABFk/AARZP4AEWUAABFlAwARZQQAEWUFABFlBgARZQcAEWUJABFlCwARZQwAEWUNABFlDwARZRAAEWWLABFljQARZY8AEWWRABFllAARZZUAEWWWABFllwARZZgAEWWaABFlnAARZZ0AEWWeABFloAARZaEAEWXqABFmDgARZjUAEWZZABFmXAARZl4AEWZgABFmYgARZmQAEWZmABFmZwARZmoAEWaDABFmoAARZqIAEWakABFmpgARZqgAEWaqABFmrAARZq4AEWbLABFmzgARZtEAEWbUABFm1wARZtoAEWbdABFm4AARZuIAEWddABFnXwARZ2EAEWdjABFnZgARZ2cAEWdoABFnaQARZ2oAEWdsABFnbgARZ28AEWdwABFncgARZ3MAEWfuABFn8AARZ/IAEWf0ABFn9wARZ/gAEWf5ABFn+gARZ/sAEWf9ABFn/wARaAAAEWgBABFoAwARaAQAEWh/ABFogQARaIMAEWiFABFoiAARaIkAEWiKABFoiwARaIwAEWiOABFokAARaJEAEWiSABFolAARaJUAEWkQABFpEgARaRUAEWkXABFpGgARaRsAEWkcABFpHQARaR4AEWkgABFpIgARaSMAEWkkABFpJgARaScAEWmiABFppAARaaYAEWmoABFpqwARaawAEWmtABFprgARaa8AEWmxABFpswARabQAEWm1ABFptwARabgAEWozABFqNQARajcAEWo5ABFqPAARaj0AEWo+ABFqPwARakAAEWpCABFqRAARakUAEWpGABFqSAARakkAEWrEABFqxgARasgAEWrKABFqzQARas4AEWrPABFq0AARatEAEWrTABFq1QARatYAEWrXABFq2QARatoAEWttABFrkAARa7AAEWvQABFr0gARa9QAEWvWABFr2AARa9sAEWvcABFr3QARa+AAEWvhABFr4wARa+QAEWvmABFr6QARa+oAEWvrABFr7gARa+8AEWv4ABFsEQARbBoAEWwcABFsHgARbCcAEWwqABFsLQARbC8AEWx4ABFsnAARbMMAEWznABFs6gARbOwAEWzuABFs8AARbPIAEWz0ABFs9QARbPgAEW0RABFtMgARbTQAEW02ABFtOAARbToAEW08ABFtPgARbUAAEW1CABFtYwARbWYAEW1pABFtbAARbW8AEW1yABFtdQARbXgAEW17ABFtfQARbfgAEW36ABFt/AARbf4AEW4BABFuAgARbgMAEW4EABFuBQARbgcAEW4JABFuCgARbgsAEW4NABFuDgARbokAEW6LABFujQARbo8AEW6SABFukwARbpQAEW6VABFulgARbpgAEW6aABFumwARbpwAEW6eABFunwARbxoAEW8cABFvHwARbyEAEW8kABFvJQARbyYAEW8nABFvKAARbyoAEW8sABFvLQARby4AEW8wABFvMQARb0oAEW9LABFvTAARb04AEW/JABFvywARb80AEW/PABFv0gARb9MAEW/UABFv1QARb9YAEW/YABFv2gARb9sAEW/cABFv3gARb98AEXBaABFwXAARcF4AEXBgABFwYwARcGQAEXBlABFwZgARcGcAEXBpABFwawARcGwAEXBtABFwbwARcHAAEXDrABFw7QARcO8AEXDxABFw9AARcPUAEXD2ABFw9wARcPgAEXD6ABFw/AARcP0AEXD+ABFxAAARcQEAEXF8ABFxfgARcYAAEXGCABFxhQARcYYAEXGHABFxiAARcYkAEXGLABFxjQARcY4AEXGPABFxkQARcZIAEXINABFyDwARchEAEXITABFyFgARchcAEXIYABFyGQARchoAEXIcABFyHgARch8AEXIgABFyIgARciMAEXJsABFykAARcrcAEXLbABFy3gARcuAAEXLiABFy5AARcuYAEXLoABFy6QARcuwAEXMFABFzIgARcyQAEXMmABFzKAARcyoAEXMsABFzLgARczAAEXNNABFzUAARc1MAEXNWABFzWQARc1wAEXNfABFzYgARc2QAEXPfABFz4QARc+MAEXPlABFz6AARc+kAEXPqABFz6wARc+wAEXPuABFz8AARc/EAEXPyABFz9AARc/UAEXRwABF0cgARdHQAEXR2ABF0eQARdHoAEXR7ABF0fAARdH0AEXR/ABF0gQARdIIAEXSDABF0hQARdIYAEXUBABF1AwARdQUAEXUHABF1CgARdQsAEXUMABF1DQARdQ4AEXUQABF1EgARdRMAEXUUABF1FgARdRcAEXWSABF1lAARdZcAEXWZABF1nAARdZ0AEXWeABF1nwARdaAAEXWiABF1pAARdaUAEXWmABF1qAARdakAEXYkABF2JgARdigAEXYqABF2LQARdi4AEXYvABF2MAARdjEAEXYzABF2NQARdjYAEXY3ABF2OQARdjoAEXa1ABF2twARdrkAEXa7ABF2vgARdr8AEXbAABF2wQARdsIAEXbEABF2xgARdscAEXbIABF2ygARdssAEXdGABF3SAARd0oAEXdMABF3TwARd1AAEXdRABF3UgARd1MAEXdVABF3VwARd1gAEXdZABF3WwARd1wAEXfvABF4EgAReDIAEXhSABF4VAAReFYAEXhYABF4WgAReF0AEXheABF4XwAReGIAEXhjABF4ZQAReGYAEXhoABF4awAReGwAEXhtABF4cAAReHEAEXh2ABF4jwAReJgAEXiaABF4nAAReKUAEXioABF4qwAReK0AEXj2ABF5GgAReUEAEXllABF5aAAReWoAEXlsABF5bgAReXAAEXlyABF5cwAReXYAEXmPABF5sAARebIAEXm0ABF5tgARebgAEXm6ABF5vAAReb4AEXnAABF54QAReeQAEXnnABF56gARee0AEXnwABF58wARefYAEXn5ABF5+wARenYAEXp4ABF6egARenwAEXp/ABF6gAAReoEAEXqCABF6gwAReoUAEXqHABF6iAAReokAEXqLABF6jAARewcAEXsJABF7CwARew0AEXsQABF7EQARexIAEXsTABF7FAARexYAEXsYABF7GQARexoAEXscABF7HQARe5gAEXuaABF7nQARe58AEXuiABF7owARe6QAEXulABF7pgARe6gAEXuqABF7qwARe6wAEXuuABF7rwARe8gAEXvJABF7ygARe8wAEXxHABF8SQARfEsAEXxNABF8UAARfFEAEXxSABF8UwARfFQAEXxWABF8WAARfFkAEXxaABF8XAARfF0AEXzYABF82gARfNwAEXzeABF84QARfOIAEXzjABF85AARfOUAEXznABF86QARfOoAEXzrABF87QARfO4AEX1pABF9awARfW0AEX1vABF9cgARfXMAEX10ABF9dQARfXYAEX14ABF9egARfXsAEX18ABF9fgARfX8AEX36ABF9/AARff4AEX4AABF+AwARfgQAEX4FABF+BgARfgcAEX4JABF+CwARfgwAEX4NABF+DwARfhAAEX6LABF+jQARfo8AEX6RABF+lAARfpUAEX6WABF+lwARfpgAEX6aABF+nAARfp0AEX6eABF+oAARfqEAEX7qABF/DgARfzUAEX9ZABF/XAARf14AEX9gABF/YgARf2QAEX9mABF/ZwARf2oAEX+DABF/oAARf6IAEX+kABF/pgARf6gAEX+qABF/rAARf64AEX/LABF/zgARf9EAEX/UABF/1wARf9oAEX/dABF/4AARf+IAEYBdABGAXwARgGEAEYBjABGAZgARgGcAEYBoABGAaQARgGoAEYBsABGAbgARgG8AEYBwABGAcgARgHMAEYDuABGA8AARgPIAEYD0ABGA9wARgPgAEYD5ABGA+gARgPsAEYD9ABGA/wARgQAAEYEBABGBAwARgQQAEYF/ABGBgQARgYMAEYGFABGBiAARgYkAEYGKABGBiwARgYwAEYGOABGBkAARgZEAEYGSABGBlAARgZUAEYIQABGCEgARghUAEYIXABGCGgARghsAEYIcABGCHQARgh4AEYIgABGCIgARgiMAEYIkABGCJgARgicAEYKiABGCpAARgqYAEYKoABGCqwARgqwAEYKtABGCrgARgq8AEYKxABGCswARgrQAEYK1ABGCtwARgrgAEYMzABGDNQARgzcAEYM5ABGDPAARgz0AEYM+ABGDPwARg0AAEYNCABGDRAARg0UAEYNGABGDSAARg0kAEYPEABGDxgARg8gAEYPKABGDzQARg84AEYPPABGD0AARg9EAEYPTABGD1QARg9YAEYPXABGD2QARg9oAEYPrABGD7AARg+4AEYRxABGElQARhLkAEYTcABGFAwARhSMAEYVKABGFcQARhZEAEYW1ABGF2QARhdsAEYXeABGF4AARheIAEYXkABGF5wARheoAEYXsABGF7gARhfEAEYXzABGF9QARhfgAEYX7ABGF/AARhgEAEYYaABGGHwARhiEAEYYmABGGKQARhisAEYZ0ABGGmAARhr8AEYbjABGG5gARhugAEYbqABGG7AARhu4AEYbwABGG8QARhvQAEYcNABGHMgARhzQAEYc2ABGHOAARhzoAEYc8ABGHPgARh0AAEYdCABGHRAARh2kAEYdsABGHbwARh3IAEYd1ABGHeAARh3sAEYd+ABGHgQARh4QAEYeGABGIAQARiAMAEYgGABGICAARiAsAEYgMABGIDQARiA4AEYgPABGIEQARiBMAEYgUABGIFQARiBcAEYgYABGIKQARiCoAEYgsABGIpwARiKkAEYirABGIrQARiLAAEYixABGIsgARiLMAEYi0ABGItgARiLgAEYi5ABGIugARiLwAEYi9ABGJOAARiToAEYk9ABGJPwARiUIAEYlDABGJRAARiUUAEYlGABGJSAARiUoAEYlLABGJTAARiU4AEYlPABGJYAARiWEAEYljABGJ3gARieAAEYniABGJ5AARiecAEYnoABGJ6QARieoAEYnrABGJ7QARie8AEYnwABGJ8QARifMAEYn0ABGKbwARinEAEYp0ABGKdgARinkAEYp6ABGKewARinwAEYp9ABGKfwARioEAEYqCABGKgwARioUAEYqGABGKlwARipgAEYqaABGLFQARixcAEYsZABGLGwARix4AEYsfABGLIAARiyEAEYsiABGLJAARiyYAEYsnABGLKAARiyoAEYsrABGLpgARi6gAEYurABGLrQARi7AAEYuxABGLsgARi7MAEYu0ABGLtgARi7gAEYu5ABGLugARi7wAEYu9ABGL1gARi9cAEYvYABGL2gARjFUAEYxXABGMWQARjFsAEYxeABGMXwARjGAAEYxhABGMYgARjGQAEYxmABGMZwARjGgAEYxqABGMawARjOYAEYzoABGM6wARjO0AEYzwABGM8QARjPIAEYzzABGM9AARjPYAEYz4ABGM+QARjPoAEYz8ABGM/QARjS0AEY1GABGNTwARjVIAEY1VABGNXgARjWEAEY1kABGNZgARjXkAEY2DABGOFgARjjkAEY5ZABGOeQARjnsAEY59ABGOfwARjoEAEY6EABGOhQARjoYAEY6JABGOigARjowAEY6NABGOjwARjpIAEY6TABGOlAARjpcAEY6YABGOoQARjroAEY7DABGOxQARjscAEY7QABGO0wARjtYAEY7YABGPIQARj0UAEY9sABGPkAARj5MAEY+VABGPlwARj5kAEY+bABGPnQARj54AEY+hABGPugARj9sAEY/dABGP3wARj+EAEY/jABGP5QARj+cAEY/pABGP6wARkAwAEZAPABGQEgARkBUAEZAYABGQGwARkB4AEZAhABGQJAARkCYAEZChABGQowARkKUAEZCnABGQqgARkKsAEZCsABGQrQARkK4AEZCwABGQsgARkLMAEZC0ABGQtgARkLcAEZEyABGRNAARkTYAEZE4ABGROwARkTwAEZE9ABGRPgARkT8AEZFBABGRQwARkUQAEZFFABGRRwARkUgAEZHDABGRxQARkcgAEZHKABGRzQARkc4AEZHPABGR0AARkdEAEZHTABGR1QARkdYAEZHXABGR2QARkdoAEZHzABGR9AARkfUAEZH3ABGScgARknQAEZJ2ABGSeAARknsAEZJ8ABGSfQARkn4AEZJ/ABGSgQARkoMAEZKEABGShQARkocAEZKIABGTAwARkwUAEZMHABGTCQARkwwAEZMNABGTDgARkw8AEZMQABGTEgARkxQAEZMVABGTFgARkxgAEZMZABGTlAARk5YAEZOYABGTmgARk50AEZOeABGTnwARk6AAEZOhABGTowARk6UAEZOmABGTpwARk6kAEZOqABGUJQARlCcAEZQpABGUKwARlC4AEZQvABGUMAARlDEAEZQyABGUNAARlDYAEZQ3ABGUOAARlDoAEZQ7ABGUtgARlLgAEZS6ABGUvAARlL8AEZTAABGUwQARlMIAEZTDABGUxQARlMcAEZTIABGUyQARlMsAEZTMABGVFQARlTkAEZVgABGVhAARlYcAEZWJABGViwARlY0AEZWPABGVkQARlZIAEZWVABGVrgARlcsAEZXNABGVzwARldEAEZXTABGV1QARldcAEZXZABGV9gARlfkAEZX8ABGV/wARlgIAEZYFABGWCAARlgsAEZYNABGWiAARlooAEZaMABGWjgARlpEAEZaSABGWkwARlpQAEZaVABGWlwARlpkAEZaaABGWmwARlp0AEZaeABGXGQARlxsAEZcdABGXHwARlyIAEZcjABGXJAARlyUAEZcmABGXKAARlyoAEZcrABGXLAARly4AEZcvABGXqgARl6wAEZeuABGXsAARl7MAEZe0ABGXtQARl7YAEZe3ABGXuQARl7sAEZe8ABGXvQARl78AEZfAABGYOwARmD0AEZhAABGYQgARmEUAEZhGABGYRwARmEgAEZhJABGYSwARmE0AEZhOABGYTwARmFEAEZhSABGYzQARmM8AEZjRABGY0wARmNYAEZjXABGY2AARmNkAEZjaABGY3AARmN4AEZjfABGY4AARmOIAEZjjABGZXgARmWAAEZliABGZZAARmWcAEZloABGZaQARmWoAEZlrABGZbQARmW8AEZlwABGZcQARmXMAEZl0ABGZ7wARmfEAEZnzABGZ9QARmfgAEZn5ABGZ+gARmfsAEZn8ABGZ/gARmgAAEZoBABGaAgARmgQAEZoFABGamAARmrsAEZrbABGa+wARmv0AEZr/ABGbAQARmwMAEZsGABGbBwARmwgAEZsLABGbDAARmw4AEZsPABGbEQARmxQAEZsVABGbFgARmxkAEZsaABGbIwARmzwAEZtFABGbRwARm0kAEZtSABGbVQARm1gAEZtaABGbowARm8cAEZvuABGcEgARnBUAEZwXABGcGQARnBsAEZwdABGcHwARnCAAEZwjABGcPAARnF0AEZxfABGcYQARnGMAEZxlABGcZwARnGkAEZxrABGcbQARnI4AEZyRABGclAARnJcAEZyaABGcnQARnKAAEZyjABGcpgARnKgAEZ0jABGdJQARnScAEZ0pABGdLAARnS0AEZ0uABGdLwARnTAAEZ0yABGdNAARnTUAEZ02ABGdOAARnTkAEZ20ABGdtgARnbgAEZ26ABGdvQARnb4AEZ2/ABGdwAARncEAEZ3DABGdxQARncYAEZ3HABGdyQARncoAEZ5FABGeRwARnkoAEZ5MABGeTwARnlAAEZ5RABGeUgARnlMAEZ5VABGeVwARnlgAEZ5ZABGeWwARnlwAEZ51ABGedgARnncAEZ55ABGe9AARnvYAEZ74ABGe+gARnv0AEZ7+ABGe/wARnwAAEZ8BABGfAwARnwUAEZ8GABGfBwARnwkAEZ8KABGfhQARn4cAEZ+JABGfiwARn44AEZ+PABGfkAARn5EAEZ+SABGflAARn5YAEZ+XABGfmAARn5oAEZ+bABGgFgARoBgAEaAaABGgHAARoB8AEaAgABGgIQARoCIAEaAjABGgJQARoCcAEaAoABGgKQARoCsAEaAsABGgpwARoKkAEaCrABGgrQARoLAAEaCxABGgsgARoLMAEaC0ABGgtgARoLgAEaC5ABGgugARoLwAEaC9ABGhOAARoToAEaE8ABGhPgARoUEAEaFCABGhQwARoUQAEaFFABGhRwARoUkAEaFKABGhSwARoU0AEaFOABGhlwARobsAEaHiABGiBgARogkAEaILABGiDQARog8AEaIRABGiEwARohQAEaIXABGiMAARok0AEaJPABGiUQARolMAEaJVABGiVwARolkAEaJbABGieAARonsAEaJ+ABGigQARooQAEaKHABGiigARoo0AEaKPABGjCgARowwAEaMOABGjEAARoxMAEaMUABGjFQARoxYAEaMXABGjGQARoxsAEaMcABGjHQARox8AEaMgABGjmwARo50AEaOfABGjoQARo6QAEaOlABGjpgARo6cAEaOoABGjqgARo6wAEaOtABGjrgARo7AAEaOxABGkLAARpC4AEaQwABGkMgARpDUAEaQ2ABGkNwARpDgAEaQ5ABGkOwARpD0AEaQ+ABGkPwARpEEAEaRCABGkvQARpL8AEaTCABGkxAARpMcAEaTIABGkyQARpMoAEaTLABGkzQARpM8AEaTQABGk0QARpNMAEaTUABGlTwARpVEAEaVTABGlVQARpVgAEaVZABGlWgARpVsAEaVcABGlXgARpWAAEaVhABGlYgARpWQAEaVlABGl4AARpeIAEaXkABGl5gARpekAEaXqABGl6wARpewAEaXtABGl7wARpfEAEaXyABGl8wARpfUAEaX2ABGmcQARpnMAEaZ1ABGmdwARpnoAEaZ7ABGmfAARpn0AEaZ+ABGmgAARpoIAEaaDABGmhAARpoYAEaaHABGmmAARppkAEaabABGnHgARp0IAEadmABGniQARp7AAEafQABGn9wARqB4AEag+ABGoYgARqIYAEaiIABGoiwARqI0AEaiPABGokQARqJQAEaiXABGomQARqJsAEaieABGooAARqKIAEailABGoqAARqKkAEaiuABGoxwARqMwAEajOABGo0wARqNYAEajYABGpIQARqUUAEalsABGpkAARqZMAEamVABGplwARqZkAEambABGpnQARqZ4AEamhABGpugARqd8AEanhABGp4wARqeUAEannABGp6QARqesAEantABGp7wARqfEAEaoWABGqGQARqhwAEaofABGqIgARqiUAEaooABGqKwARqi4AEaoxABGqMwARqq4AEaqwABGqswARqrUAEaq4ABGquQARqroAEaq7ABGqvAARqr4AEarAABGqwQARqsIAEarEABGqxQARqtYAEarXABGq2QARq1QAEatWABGrWAARq1oAEatdABGrXgARq18AEatgABGrYQARq2MAEatlABGrZgARq2cAEatpABGragARq+UAEavnABGr6gARq+wAEavvABGr8AARq/EAEavyABGr8wARq/UAEav3ABGr+AARq/kAEav7ABGr/AARrA0AEawOABGsEAARrIsAEayNABGsjwARrJEAEayUABGslQARrJYAEayXABGsmAARrJoAEaycABGsnQARrJ4AEaygABGsoQARrRwAEa0eABGtIQARrSMAEa0mABGtJwARrSgAEa0pABGtKgARrSwAEa0uABGtLwARrTAAEa0yABGtMwARrUQAEa1FABGtRwARrcIAEa3EABGtxgARrcgAEa3LABGtzAARrc0AEa3OABGtzwARrdEAEa3TABGt1AARrdUAEa3XABGt2AARrlMAEa5VABGuWAARrloAEa5dABGuXgARrl8AEa5gABGuYQARrmMAEa5lABGuZgARrmcAEa5pABGuagARroMAEa6EABGuhQARrocAEa8CABGvBAARrwYAEa8IABGvCwARrwwAEa8NABGvDgARrw8AEa8RABGvEwARrxQAEa8VABGvFwARrxgAEa+TABGvlQARr5gAEa+aABGvnQARr54AEa+fABGvoAARr6EAEa+jABGvpQARr6YAEa+nABGvqQARr6oAEa/FABGv3gARr+cAEa/qABGv7QARr/YAEa/5ABGv/AARr/4AEbARABGwpAARsMcAEbDnABGxBwARsQkAEbELABGxDQARsQ8AEbESABGxEwARsRQAEbEXABGxGAARsRoAEbEbABGxHQARsSAAEbEhABGxIgARsSUAEbEmABGxKwARsUQAEbFNABGxTwARsVEAEbFaABGxXQARsWAAEbFiABGxqwARsc8AEbH2ABGyGgARsh0AEbIfABGyIQARsiMAEbIlABGyJwARsigAEbIrABGyRAARsmUAEbJnABGyaQARsmsAEbJtABGybwARsnEAEbJzABGydQARspYAEbKZABGynAARsp8AEbKiABGypQARsqgAEbKrABGyrgARsrAAEbMrABGzLQARsy8AEbMxABGzNAARszUAEbM2ABGzNwARszgAEbM6ABGzPAARsz0AEbM+ABGzQAARs0EAEbO8ABGzvgARs8AAEbPCABGzxQARs8YAEbPHABGzyAARs8kAEbPLABGzzQARs84AEbPPABGz0QARs9IAEbRNABG0TwARtFIAEbRUABG0VwARtFgAEbRZABG0WgARtFsAEbRdABG0XwARtGAAEbRhABG0YwARtGQAEbR9ABG0fgARtH8AEbSBABG0/AARtP4AEbUAABG1AgARtQUAEbUGABG1BwARtQgAEbUJABG1CwARtQ0AEbUOABG1DwARtREAEbUSABG1jQARtY8AEbWRABG1kwARtZYAEbWXABG1mAARtZkAEbWaABG1nAARtZ4AEbWfABG1oAARtaIAEbWjABG2HgARtiAAEbYiABG2JAARticAEbYoABG2KQARtioAEbYrABG2LQARti8AEbYwABG2MQARtjMAEbY0ABG2rwARtrEAEbazABG2tQARtrgAEba5ABG2ugARtrsAEba8ABG2vgARtsAAEbbBABG2wgARtsQAEbbFABG3QAARt0IAEbdEABG3RgARt0kAEbdKABG3SwARt0wAEbdNABG3TwARt1EAEbdSABG3UwARt1UAEbdWABG3nwARt8MAEbfqABG4DgARuBEAEbgTABG4FQARuBcAEbgZABG4GwARuBwAEbgfABG4OAARuFUAEbhXABG4WQARuFsAEbhdABG4XwARuGEAEbhjABG4gAARuIMAEbiGABG4iQARuIwAEbiPABG4kgARuJUAEbiXABG5EgARuRQAEbkWABG5GAARuRsAEbkcABG5HQARuR4AEbkfABG5IQARuSMAEbkkABG5JQARuScAEbkoABG5owARuaUAEbmnABG5qQARuawAEbmtABG5rgARua8AEbmwABG5sgARubQAEbm1ABG5tgARubgAEbm5ABG6NAARujYAEbo4ABG6OgARuj0AEbo+ABG6PwARukAAEbpBABG6QwARukUAEbpGABG6RwARukkAEbpKABG6xQARuscAEbrKABG6zAARus8AEbrQABG60QARutIAEbrTABG61QARutcAEbrYABG62QARutsAEbrcABG7VwARu1kAEbtbABG7XQARu2AAEbthABG7YgARu2MAEbtkABG7ZgARu2gAEbtpABG7agARu2wAEbttABG76AARu+oAEbvsABG77gARu/EAEbvyABG78wARu/QAEbv1ABG79wARu/kAEbv6ABG7+wARu/0AEbv+ABG8eQARvHsAEbx9ABG8fwARvIIAEbyDABG8hAARvIUAEbyGABG8iAARvIoAEbyLABG8jAARvI4AEbyPABG9IgARvUUAEb1lABG9hQARvYcAEb2JABG9iwARvY0AEb2QABG9kQARvZIAEb2VABG9lgARvZgAEb2ZABG9mwARvZ4AEb2fABG9oAARvaMAEb2kABG9qQARvcIAEb3LABG9zQARvc8AEb3YABG92wARvd4AEb3gABG+KQARvk0AEb50ABG+mAARvpsAEb6dABG+nwARvqEAEb6jABG+pQARvqYAEb6pABG+wgARvuMAEb7lABG+5wARvukAEb7rABG+7QARvu8AEb7xABG+8wARvxQAEb8XABG/GgARvx0AEb8gABG/IwARvyYAEb8pABG/LAARvy4AEb+pABG/qwARv60AEb+vABG/sgARv7MAEb+0ABG/tQARv7YAEb+4ABG/ugARv7sAEb+8ABG/vgARv78AEcA6ABHAPAARwD4AEcBAABHAQwARwEQAEcBFABHARgARwEcAEcBJABHASwARwEwAEcBNABHATwARwFAAEcDLABHAzQARwNAAEcDSABHA1QARwNYAEcDXABHA2AARwNkAEcDbABHA3QARwN4AEcDfABHA4QARwOIAEcD7ABHA/AARwP0AEcD/ABHBegARwXwAEcF+ABHBgAARwYMAEcGEABHBhQARwYYAEcGHABHBiQARwYsAEcGMABHBjQARwY8AEcGQABHCCwARwg0AEcIPABHCEQARwhQAEcIVABHCFgARwhcAEcIYABHCGgARwhwAEcIdABHCHgARwiAAEcIhABHCnAARwp4AEcKgABHCogARwqUAEcKmABHCpwARwqgAEcKpABHCqwARwq0AEcKuABHCrwARwrEAEcKyABHDLQARwy8AEcMxABHDMwARwzYAEcM3ABHDOAARwzkAEcM6ABHDPAARwz4AEcM/ABHDQAARw0IAEcNDABHDvgARw8AAEcPCABHDxAARw8cAEcPIABHDyQARw8oAEcPLABHDzQARw88AEcPQABHD0QARw9MAEcPUABHEHQARxEEAEcRoABHEjAARxI8AEcSRABHEkwARxJUAEcSXABHEmQARxJoAEcSdABHEtgARxNMAEcTVABHE1wARxNkAEcTbABHE3QARxN8AEcThABHE/gARxQEAEcUEABHFBwARxQoAEcUNABHFEAARxRMAEcUVABHFkAARxZIAEcWUABHFlgARxZkAEcWaABHFmwARxZwAEcWdABHFnwARxaEAEcWiABHFowARxaUAEcWmABHGIQARxiMAEcYlABHGJwARxioAEcYrABHGLAARxi0AEcYuABHGMAARxjIAEcYzABHGNAARxjYAEcY3ABHGsgARxrQAEca2ABHGuAARxrsAEca8ABHGvQARxr4AEca/ABHGwQARxsMAEcbEABHGxQARxscAEcbIABHHQwARx0UAEcdIABHHSgARx00AEcdOABHHTwARx1AAEcdRABHHUwARx1UAEcdWABHHVwARx1kAEcdaABHH1QARx9cAEcfZABHH2wARx94AEcffABHH4AARx+EAEcfiABHH5AARx+YAEcfnABHH6AARx+oAEcfrABHIZgARyGgAEchqABHIbAARyG8AEchwABHIcQARyHIAEchzABHIdQARyHcAEch4ABHIeQARyHsAEch8ABHI9wARyPkAEcj7ABHI/QARyQAAEckBABHJAgARyQMAEckEABHJBgARyQgAEckJABHJCgARyQwAEckNABHJHgARyR8AEckhABHJpAARycgAEcnsABHKDwARyjYAEcpWABHKfQARyqQAEcrEABHK6AARywwAEcsOABHLEQARyxMAEcsVABHLFwARyxoAEcsdABHLHwARyyEAEcskABHLJgARyygAEcsrABHLLgARyy8AEcs0ABHLTQARy1IAEctUABHLWQARy1wAEcteABHLpwARy8sAEcvyABHMFgARzBkAEcwbABHMHQARzB8AEcwhABHMIwARzCQAEcwnABHMQAARzGUAEcxnABHMaQARzGsAEcxtABHMbwARzHEAEcxzABHMdQARzHcAEcycABHMnwARzKIAEcylABHMqAARzKsAEcyuABHMsQARzLQAEcy3ABHMuQARzTQAEc02ABHNOQARzTsAEc0+ABHNPwARzUAAEc1BABHNQgARzUQAEc1GABHNRwARzUgAEc1KABHNSwARzVwAEc1dABHNXwARzdoAEc3cABHN3gARzeAAEc3jABHN5AARzeUAEc3mABHN5wARzekAEc3rABHN7AARze0AEc3vABHN8AARzmsAEc5tABHOcAARznIAEc51ABHOdgARzncAEc54ABHOeQARznsAEc59ABHOfgARzn8AEc6BABHOggARzpMAEc6UABHOlgARzxEAEc8TABHPFQARzxcAEc8aABHPGwARzxwAEc8dABHPHgARzyAAEc8iABHPIwARzyQAEc8mABHPJwARz6IAEc+kABHPpwARz6kAEc+sABHPrQARz64AEc+vABHPsAARz7IAEc+0ABHPtQARz7YAEc+4ABHPuQARz8oAEc/LABHPzQAR0EgAEdBKABHQTAAR0E4AEdBRABHQUgAR0FMAEdBUABHQVQAR0FcAEdBZABHQWgAR0FsAEdBdABHQXgAR0NkAEdDbABHQ3gAR0OAAEdDjABHQ5AAR0OUAEdDmABHQ5wAR0OkAEdDrABHQ7AAR0O0AEdDvABHQ8AAR0QkAEdEKABHRCwAR0Q0AEdGIABHRigAR0YwAEdGOABHRkQAR0ZIAEdGTABHRlAAR0ZUAEdGXABHRmQAR0ZoAEdGbABHRnQAR0Z4AEdIZABHSGwAR0h4AEdIgABHSIwAR0iQAEdIlABHSJgAR0icAEdIpABHSKwAR0iwAEdItABHSLwAR0jAAEdJFABHSXgAR0m8AEdJyABHSdQAR0ngAEdJ7ABHSjAAR0o8AEdKSABHSlQAR0pgAEdKaABHSsAAR0r4AEdLRABHS4wAR03YAEdOZABHTuQAR09kAEdPbABHT3QAR098AEdPhABHT5AAR0+UAEdPmABHT6QAR0+oAEdPsABHT7QAR0+8AEdPyABHT8wAR0/QAEdP3ABHT+AAR0/0AEdQWABHUHwAR1CEAEdQjABHULAAR1C8AEdQyABHUNAAR1H0AEdShABHUyAAR1OwAEdTvABHU8QAR1PMAEdT1ABHU9wAR1PkAEdT6ABHU/QAR1RYAEdU3ABHVOQAR1TsAEdU9ABHVPwAR1UEAEdVDABHVRQAR1UcAEdVoABHVawAR1W4AEdVxABHVdAAR1XcAEdV6ABHVfQAR1YAAEdWCABHV/QAR1f8AEdYBABHWAwAR1gYAEdYHABHWCAAR1gkAEdYKABHWDAAR1g4AEdYPABHWEAAR1hIAEdYTABHWjgAR1pAAEdaSABHWlAAR1pcAEdaYABHWmQAR1poAEdabABHWnQAR1p8AEdagABHWoQAR1qMAEdakABHXHwAR1yEAEdckABHXJgAR1ykAEdcqABHXKwAR1ywAEdctABHXLwAR1zEAEdcyABHXMwAR1zUAEdc2ABHXTwAR11AAEddRABHXUwAR184AEdfQABHX0gAR19QAEdfXABHX2AAR19kAEdfaABHX2wAR190AEdffABHX4AAR1+EAEdfjABHX5AAR2F8AEdhhABHYYwAR2GUAEdhoABHYaQAR2GoAEdhrABHYbAAR2G4AEdhwABHYcQAR2HIAEdh0ABHYdQAR2PAAEdjyABHY9AAR2PYAEdj5ABHY+gAR2PsAEdj8ABHY/QAR2P8AEdkBABHZAgAR2QMAEdkFABHZBgAR2YEAEdmDABHZhQAR2YcAEdmKABHZiwAR2YwAEdmNABHZjgAR2ZAAEdmSABHZkwAR2ZQAEdmWABHZlwAR2hIAEdoUABHaFgAR2hgAEdobABHaHAAR2h0AEdoeABHaHwAR2iEAEdojABHaJAAR2iUAEdonABHaKAAR2nEAEdqVABHavAAR2uAAEdrjABHa5QAR2ucAEdrpABHa6wAR2u0AEdruABHa8QAR2woAEdsnABHbKQAR2ysAEdstABHbLwAR2zEAEdszABHbNQAR21IAEdtVABHbWAAR21sAEdteABHbYQAR22QAEdtnABHbaQAR2+QAEdvmABHb6AAR2+oAEdvtABHb7gAR2+8AEdvwABHb8QAR2/MAEdv1ABHb9gAR2/cAEdv5ABHb+gAR3HUAEdx3ABHceQAR3HsAEdx+ABHcfwAR3IAAEdyBABHcggAR3IQAEdyGABHchwAR3IgAEdyKABHciwAR3QYAEd0IABHdCgAR3QwAEd0PABHdEAAR3REAEd0SABHdEwAR3RUAEd0XABHdGAAR3RkAEd0bABHdHAAR3ZcAEd2ZABHdnAAR3Z4AEd2hABHdogAR3aMAEd2kABHdpQAR3acAEd2pABHdqgAR3asAEd2tABHdrgAR3ikAEd4rABHeLQAR3i8AEd4yABHeMwAR3jQAEd41ABHeNgAR3jgAEd46ABHeOwAR3jwAEd4+ABHePwAR3roAEd68ABHevgAR3sAAEd7DABHexAAR3sUAEd7GABHexwAR3skAEd7LABHezAAR3s0AEd7PABHe0AAR30sAEd9NABHfTwAR31EAEd9UABHfVQAR31YAEd9XABHfWAAR31oAEd9cABHfXQAR314AEd9gABHfYQAR3/QAEeAXABHgNwAR4FcAEeBZABHgWwAR4F0AEeBfABHgYgAR4GMAEeBkABHgZwAR4GgAEeBqABHgawAR4G0AEeBwABHgcQAR4HIAEeB1ABHgdgAR4H8AEeCYABHgoQAR4KMAEeClABHgrgAR4LEAEeC0ABHgtgAR4P8AEeEjABHhSgAR4W4AEeFxABHhcwAR4XUAEeF3ABHheQAR4XsAEeF8ABHhfwAR4ZgAEeG5ABHhuwAR4b0AEeG/ABHhwQAR4cMAEeHFABHhxwAR4ckAEeHqABHh7QAR4fAAEeHzABHh9gAR4fkAEeH8ABHh/wAR4gIAEeIEABHifwAR4oEAEeKDABHihQAR4ogAEeKJABHiigAR4osAEeKMABHijgAR4pAAEeKRABHikgAR4pQAEeKVABHjEAAR4xIAEeMUABHjFgAR4xkAEeMaABHjGwAR4xwAEeMdABHjHwAR4yEAEeMiABHjIwAR4yUAEeMmABHjoQAR46MAEeOmABHjqAAR46sAEeOsABHjrQAR464AEeOvABHjsQAR47MAEeO0ABHjtQAR47cAEeO4ABHj0QAR49IAEePTABHj1QAR5FAAEeRSABHkVAAR5FYAEeRZABHkWgAR5FsAEeRcABHkXQAR5F8AEeRhABHkYgAR5GMAEeRlABHkZgAR5OEAEeTjABHk5QAR5OcAEeTqABHk6wAR5OwAEeTtABHk7gAR5PAAEeTyABHk8wAR5PQAEeT2ABHk9wAR5XIAEeV0ABHldgAR5XgAEeV7ABHlfAAR5X0AEeV+ABHlfwAR5YEAEeWDABHlhAAR5YUAEeWHABHliAAR5gMAEeYFABHmBwAR5gkAEeYMABHmDQAR5g4AEeYPABHmEAAR5hIAEeYUABHmFQAR5hYAEeYYABHmGQAR5pQAEeaWABHmmAAR5poAEeadABHmngAR5p8AEeagABHmoQAR5qMAEealABHmpgAR5qcAEeapABHmqgAR5vMAEecXABHnPgAR52IAEedlABHnZwAR52kAEedrABHnbQAR528AEedwABHncwAR54wAEeepABHnqwAR560AEeevABHnsQAR57MAEee1ABHntwAR59QAEefXABHn2gAR590AEefgABHn4wAR5+YAEefpABHn6wAR6GYAEehoABHoagAR6GwAEehvABHocAAR6HEAEehyABHocwAR6HUAEeh3ABHoeAAR6HkAEeh7ABHofAAR6PcAEej5ABHo+wAR6P0AEekAABHpAQAR6QIAEekDABHpBAAR6QYAEekIABHpCQAR6QoAEekMABHpDQAR6YgAEemKABHpjAAR6Y4AEemRABHpkgAR6ZMAEemUABHplQAR6ZcAEemZABHpmgAR6ZsAEemdABHpngAR6hkAEeobABHqHQAR6h8AEeoiABHqIwAR6iQAEeolABHqJgAR6igAEeoqABHqKwAR6iwAEeouABHqLwAR6qoAEeqsABHqrgAR6rAAEeqzABHqtAAR6rUAEeq2ABHqtwAR6rkAEeq7ABHqvAAR6r0AEeq/ABHqwAAR6zsAEes9ABHrQAAR60IAEetFABHrRgAR60cAEetIABHrSQAR60sAEetNABHrTgAR608AEetRABHrUgAR63EAEevsABHr7gAR6/AAEevyABHr9QAR6/YAEev3ABHr+AAR6/kAEev7ABHr/QAR6/4AEev/ABHsAQAR7AIAEeyVABHsuAAR7NgAEez4ABHs+gAR7PwAEez+ABHtAAAR7QMAEe0EABHtBQAR7QgAEe0JABHtCwAR7QwAEe0OABHtEQAR7RIAEe0TABHtFgAR7RcAEe0cABHtNQAR7T4AEe1AABHtQgAR7UsAEe1OABHtUQAR7VMAEe2cABHtwAAR7ecAEe4LABHuDgAR7hAAEe4SABHuFAAR7hYAEe4YABHuGQAR7hwAEe41ABHuVgAR7lgAEe5aABHuXAAR7l4AEe5gABHuYgAR7mQAEe5mABHuhwAR7ooAEe6NABHukAAR7pMAEe6WABHumQAR7pwAEe6fABHuoQAR7xwAEe8eABHvIAAR7yIAEe8lABHvJgAR7ycAEe8oABHvKQAR7ysAEe8tABHvLgAR7y8AEe8xABHvMgAR760AEe+vABHvsQAR77MAEe+2ABHvtwAR77gAEe+5ABHvugAR77wAEe++ABHvvwAR78AAEe/CABHvwwAR8D4AEfBAABHwQwAR8EUAEfBIABHwSQAR8EoAEfBLABH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BlgASAZcAEgISABICFAASAhYAEgIYABICGwASAhwAEgIdABICHgASAh8AEgIhABICIwASAiQAEgIlABICJwASAigAEgKjABICpQASAqcAEgKpABICrAASAq0AEgKuABICrwASArAAEgKyABICtAASArUAEgK2ABICuAASArkAEgM0ABIDNgASAzkAEgM7ABIDPgASAz8AEgNAABIDQQASA0IAEgNEABIDRgASA0cAEgNIABIDSgASA0sAEgPGABIDyAASA8oAEgPMABIDzwASA9AAEgPRABID0gASA9MAEgPVABID1wASA9gAEgPZABID2wASA9wAEgRXABIEWQASBFsAEgRdABIEYAASBGEAEgRiABIEYwASBGQAEgRmABIEaAASBGkAEgRqABIEbAASBG0AEgToABIE6gASBOwAEgTuABIE8QASBPIAEgTzABIE9AASBPUAEgT3ABIE+QASBPoAEgT7ABIE/QASBP4AEgUPABIFEAASBRIAEgWVABIFuQASBd0AEgYAABIGJwASBkcAEgZuABIGlQASBrUAEgbZABIG/QASBv8AEgcCABIHBAASBwYAEgcIABIHCwASBw4AEgcQABIHEgASBxUAEgcXABIHGQASBxwAEgcfABIHIAASByUAEgc+ABIHQwASB0UAEgdKABIHTQASB08AEgeYABIHvAASB+MAEggHABIICgASCAwAEggOABIIEAASCBIAEggUABIIFQASCBgAEggxABIIVgASCFgAEghaABIIXAASCF4AEghgABIIYgASCGQAEghmABIIaAASCI0AEgiQABIIkwASCJYAEgiZABIInAASCJ8AEgiiABIIpQASCKgAEgiqABIJJQASCScAEgkqABIJLAASCS8AEgkwABIJMQASCTIAEgkzABIJNQASCTcAEgk4ABIJOQASCTsAEgk8ABIJTQASCU4AEglQABIJywASCc0AEgnPABIJ0QASCdQAEgnVABIJ1gASCdcAEgnYABIJ2gASCdwAEgndABIJ3gASCeAAEgnhABIKXAASCl4AEgphABIKYwASCmYAEgpnABIKaAASCmkAEgpqABIKbAASCm4AEgpvABIKcAASCnIAEgpzABIKhAASCokAEgqMABIKjgASCp8AEgqkABIKpwASCqkAEgskABILJgASCygAEgsqABILLQASCy4AEgsvABILMAASCzEAEgszABILNQASCzYAEgs3ABILOQASCzoAEgu1ABILtwASC7oAEgu8ABILvwASC8AAEgvBABILwgASC8MAEgvFABILxwASC8gAEgvJABILywASC8wAEgvdABIL3gASC+AAEgxbABIMXQASDF8AEgxhABIMZAASDGUAEgxmABIMZwASDGgAEgxqABIMbAASDG0AEgxuABIMcAASDHEAEgzsABIM7gASDPEAEgzzABIM9gASDPcAEgz4ABIM+QASDPoAEgz8ABIM/gASDP8AEg0AABINAgASDQMAEg0cABINHQASDR4AEg0gABINmwASDZ0AEg2fABINoQASDaQAEg2lABINpgASDacAEg2oABINqgASDawAEg2tABINrgASDbAAEg2xABIOLAASDi4AEg4xABIOMwASDjYAEg43ABIOOAASDjkAEg46ABIOPAASDj4AEg4/ABIOQAASDkIAEg5DABIOVQASDm4AEg57ABIOfgASDoEAEg6EABIOkQASDpQAEg6XABIOmgASDpwAEg6wABIOvgASD1EAEg90ABIPlAASD7QAEg+2ABIPuAASD7oAEg+8ABIPvwASD8AAEg/BABIPxAASD8UAEg/HABIPyAASD8oAEg/NABIPzgASD88AEg/SABIP0wASD9gAEg/xABIP+gASD/wAEg/+ABIQBwASEAoAEhANABIQDwASEFgAEhB8ABIQowASEMcAEhDKABIQzAASEM4AEhDQABIQ0gASENQAEhDVABIQ2AASEPEAEhESABIRFAASERYAEhEYABIRGgASERwAEhEeABIRIAASESIAEhFDABIRRgASEUkAEhFMABIRTwASEVIAEhFVABIRWAASEVsAEhFdABIR2AASEdoAEhHcABIR3gASEeEAEhHiABIR4wASEeQAEhHlABIR5wASEekAEhHqABIR6wASEe0AEhHuABISaQASEmsAEhJtABISbwASEnIAEhJzABISdAASEnUAEhJ2ABISeAASEnoAEhJ7ABISfAASEn4AEhJ/ABIS+gASEvwAEhL/ABITAQASEwQAEhMFABITBgASEwcAEhMIABITCgASEwwAEhMNABITDgASExAAEhMRABITKgASEysAEhMsABITLgASE6kAEhOrABITrQASE68AEhOyABITswASE7QAEhO1ABITtgASE7gAEhO6ABITuwASE7wAEhO+ABITvwASFDoAEhQ8ABIUPgASFEAAEhRDABIURAASFEUAEhRGABIURwASFEkAEhRLABIUTAASFE0AEhRPABIUUAASFMsAEhTNABIUzwASFNEAEhTUABIU1QASFNYAEhTXABIU2AASFNoAEhTcABIU3QASFN4AEhTgABIU4QASFVwAEhVeABIVYAASFWIAEhVlABIVZgASFWcAEhVoABIVaQASFWsAEhVtABIVbgASFW8AEhVxABIVcgASFe0AEhXvABIV8QASFfMAEhX2ABIV9wASFfgAEhX5ABIV+gASFfwAEhX+ABIV/wASFgAAEhYCABIWAwASFkwAEhZwABIWlwASFrsAEha+ABIWwAASFsIAEhbEABIWxgASFsgAEhbJABIWzAASFuUAEhcCABIXBAASFwYAEhcIABIXCgASFwwAEhcOABIXEAASFy0AEhcwABIXMwASFzYAEhc5ABIXPAASFz8AEhdCABIXRAASF78AEhfBABIXwwASF8UAEhfIABIXyQASF8oAEhfLABIXzAASF84AEhfQABIX0QASF9IAEhfUABIX1QASGFAAEhhSABIYVAASGFYAEhhZABIYWgASGFsAEhhcABIYXQASGF8AEhhhABIYYgASGGMAEhhlABIYZgASGOEAEhjjABIY5QASGOcAEhjqABIY6wASGOwAEhjtABIY7gASGPAAEhjyABIY8wASGPQAEhj2ABIY9wASGXIAEhl0ABIZdwASGXkAEhl8ABIZfQASGX4AEhl/ABIZgAASGYIAEhmEABIZhQASGYYAEhmIABIZiQASGgQAEhoGABIaCAASGgoAEhoNABIaDgASGg8AEhoQABIaEQASGhMAEhoVABIaFgASGhcAEhoZABIaGgASGpUAEhqXABIamQASGpsAEhqeABIanwASGqAAEhqhABIaogASGqQAEhqmABIapwASGqgAEhqqABIaqwASGyYAEhsoABIbKgASGywAEhsvABIbMAASGzEAEhsyABIbMwASGzUAEhs3ABIbOAASGzkAEhs7ABIbPAASG88AEhvyABIcEgASHDIAEhw0ABIcNgASHDgAEhw6ABIcPQASHD4AEhw/ABIcQgASHEMAEhxFABIcRgASHEgAEhxLABIcTAASHE0AEhxQABIcUQASHFoAEhxzABIcfAASHH4AEhyAABIciQASHIwAEhyPABIckQASHNoAEhz+ABIdJQASHUkAEh1MABIdTgASHVAAEh1SABIdVAASHVYAEh1XABIdWgASHXMAEh2UABIdlgASHZgAEh2aABIdnAASHZ4AEh2gABIdogASHaQAEh3FABIdyAASHcsAEh3OABId0QASHdQAEh3XABId2gASHd0AEh3fABIeWgASHlwAEh5eABIeYAASHmMAEh5kABIeZQASHmYAEh5nABIeaQASHmsAEh5sABIebQASHm8AEh5wABIe6wASHu0AEh7vABIe8QASHvQAEh71ABIe9gASHvcAEh74ABIe+gASHvwAEh79ABIe/gASHwAAEh8BABIffAASH34AEh+BABIfgwASH4YAEh+HABIfiAASH4kAEh+KABIfjAASH44AEh+PABIfkAASH5IAEh+TABIfrAASH60AEh+uABIfsAASICsAEiAtABIgLwASIDEAEiA0ABIgNQASIDYAEiA3ABIgOAASIDoAEiA8ABIgPQASID4AEiBAABIgQQASILwAEiC+ABIgwAASIMIAEiDFABIgxgASIMcAEiDIABIgyQASIMsAEiDNABIgzgASIM8AEiDRABIg0gASIU0AEiFPABIhUQASIVMAEiFWABIhVwASIVgAEiFZABIhWgASIVwAEiFeABIhXwASIWAAEiFiABIhYwASId4AEiHgABIh4gASIeQAEiHnABIh6AASIekAEiHqABIh6wASIe0AEiHvABIh8AASIfEAEiHzABIh9AASIm8AEiJxABIicwASInUAEiJ4ABIieQASInoAEiJ7ABIifAASIn4AEiKAABIigQASIoIAEiKEABIihQASIs4AEiLyABIjGQASIz0AEiNAABIjQgASI0QAEiNGABIjSAASI0oAEiNLABIjTgASI2cAEiOEABIjhgASI4gAEiOKABIjjAASI44AEiOQABIjkgASI68AEiOyABIjtQASI7gAEiO7ABIjvgASI8EAEiPEABIjxgASJEEAEiRDABIkRQASJEcAEiRKABIkSwASJEwAEiRNABIkTgASJFAAEiRSABIkUwASJFQAEiRWABIkVwASJNIAEiTUABIk1gASJNgAEiTbABIk3AASJN0AEiTeABIk3wASJOEAEiTjABIk5AASJOUAEiTnABIk6AASJWMAEiVlABIlZwASJWkAEiVsABIlbQASJW4AEiVvABIlcAASJXIAEiV0ABIldQASJXYAEiV4ABIleQASJfQAEiX2ABIl+QASJfsAEiX+ABIl/wASJgAAEiYBABImAgASJgQAEiYGABImBwASJggAEiYKABImCwASJoYAEiaIABImigASJowAEiaPABImkAASJpEAEiaSABImkwASJpUAEiaXABImmAASJpkAEiabABImnAASJxcAEicZABInGwASJx0AEicgABInIQASJyIAEicjABInJAASJyYAEicoABInKQASJyoAEicsABInLQASJ6gAEieqABInrAASJ64AEiexABInsgASJ7MAEie0ABIntQASJ7cAEie5ABInugASJ7sAEie9ABInvgASKFEAEih0ABIolAASKLQAEii2ABIouAASKLoAEii8ABIovwASKMAAEijBABIoxAASKMUAEijHABIoyAASKMoAEijNABIozgASKM8AEijSABIo0wASKNgAEijxABIo+gASKPwAEij+ABIpBwASKQoAEikNABIpDwASKVgAEil8ABIpowASKccAEinKABIpzAASKc4AEinQABIp0gASKdQAEinVABIp2AASKfEAEioSABIqFAASKhYAEioYABIqGgASKhwAEioeABIqIAASKiIAEipDABIqRgASKkkAEipMABIqTwASKlIAEipVABIqWAASKlsAEipdABIq2AASKtoAEircABIq3gASKuEAEiriABIq4wASKuQAEirlABIq5wASKukAEirqABIq6wASKu0AEiruABIraQASK2sAEittABIrbwASK3IAEitzABIrdAASK3UAEit2ABIreAASK3oAEit7ABIrfAASK34AEit/ABIr+gASK/wAEiv/ABIsAQASLAQAEiwFABIsBgASLAcAEiwIABIsCgASLAwAEiwNABIsDgASLBAAEiwRABIsKgASLCsAEiwsABIsLgASLKkAEiyrABIsrQASLK8AEiyyABIsswASLLQAEiy1ABIstgASLLgAEiy6ABIsuwASLLwAEiy+ABIsvwASLToAEi08ABItPgASLUAAEi1DABItRAASLUUAEi1GABItRwASLUkAEi1LABItTAASLU0AEi1PABItUAASLcsAEi3NABItzwASLdEAEi3UABIt1QASLdYAEi3XABIt2AASLdoAEi3cABIt3QASLd4AEi3gABIt4QASLlwAEi5eABIuYAASLmIAEi5lABIuZgASLmcAEi5oABIuaQASLmsAEi5tABIubgASLm8AEi5xABIucgASLu0AEi7vABIu8QASLvMAEi72ABIu9wASLvgAEi75ABIu+gASLvwAEi7+ABIu/wASLwAAEi8CABIvAwASL0wAEi9wABIvlwASL7sAEi++ABIvwAASL8IAEi/EABIvxgASL8gAEi/JABIvzAASL+UAEjACABIwBAASMAYAEjAIABIwCgASMAwAEjAOABIwEAASMC0AEjAwABIwMwASMDYAEjA5ABIwPAASMD8AEjBCABIwRAASML8AEjDBABIwwwASMMUAEjDIABIwyQASMMoAEjDLABIwzAASMM4AEjDQABIw0QASMNIAEjDUABIw1QASMVAAEjFSABIxVAASMVYAEjFZABIxWgASMVsAEjFcABIxXQASMV8AEjFhABIxYgASMWMAEjFlABIxZgASMeEAEjHjABIx5QASMecAEjHqABIx6wASMewAEjHtABIx7gASMfAAEjHyABIx8wASMfQAEjH2ABIx9wASMnIAEjJ0ABIydwASMnkAEjJ8ABIyfQASMn4AEjJ/ABIygAASMoIAEjKEABIyhQASMoYAEjKIABIyiQASMwQAEjMGABIzCAASMwoAEjMNABIzDgASMw8AEjMQABIzEQASMxMAEjMVABIzFgASMxcAEjMZABIzGgASM5UAEjOXABIzmQASM5sAEjOeABIznwASM6AAEjOhABIzogASM6QAEjOmABIzpwASM6gAEjOqABIzqwASNCYAEjQoABI0KgASNCwAEjQvABI0MAASNDEAEjQyABI0MwASNDUAEjQ3ABI0OAASNDkAEjQ7ABI0PAASNE0AEjROABI0UAASNNMAEjT3ABI1GwASNT4AEjVlABI1hQASNawAEjXTABI18wASNhcAEjY7ABI2PQASNkAAEjZCABI2RAASNkYAEjZJABI2TAASNk4AEjZQABI2UwASNlUAEjZXABI2WgASNl0AEjZeABI2YwASNnwAEjaBABI2gwASNogAEjaLABI2jQASNtYAEjb6ABI3IQASN0UAEjdIABI3SgASN0wAEjdOABI3UAASN1IAEjdTABI3VgASN28AEjeUABI3lgASN5gAEjeaABI3nAASN54AEjegABI3ogASN6QAEjemABI3ywASN84AEjfRABI31AASN9cAEjfaABI33QASN+AAEjfjABI35gASN+gAEjhjABI4ZQASOGgAEjhqABI4bQASOG4AEjhvABI4cAASOHEAEjhzABI4dQASOHYAEjh3ABI4eQASOHoAEjiLABI4jAASOI4AEjkJABI5CwASOQ0AEjkPABI5EgASORMAEjkUABI5FQASORYAEjkYABI5GgASORsAEjkcABI5HgASOR8AEjmaABI5nAASOZ8AEjmhABI5pAASOaUAEjmmABI5pwASOagAEjmqABI5rAASOa0AEjmuABI5sAASObEAEjnCABI5xwASOcoAEjnMABI53QASOeIAEjnlABI55wASOewAEjpnABI6aQASOmsAEjptABI6cAASOnEAEjpyABI6cwASOnQAEjp2ABI6eAASOnkAEjp6ABI6fAASOn0AEjr4ABI6+gASOv0AEjr/ABI7AgASOwMAEjsEABI7BQASOwYAEjsIABI7CgASOwsAEjsMABI7DgASOw8AEjsgABI7IQASOyMAEjueABI7oAASO6IAEjukABI7pwASO6gAEjupABI7qgASO6sAEjutABI7rwASO7AAEjuxABI7swASO7QAEjwvABI8MQASPDQAEjw2ABI8OQASPDoAEjw7ABI8PAASPD0AEjw/ABI8QQASPEIAEjxDABI8RQASPEYAEjxfABI8YAASPGEAEjxjABI83gASPOAAEjziABI85AASPOcAEjzoABI86QASPOoAEjzrABI87QASPO8AEjzwABI88QASPPMAEjz0ABI9bwASPXEAEj10ABI9dgASPXkAEj16ABI9ewASPXwAEj19ABI9fwASPYEAEj2CABI9gwASPYUAEj2GABI9ngASPbcAEj3AABI9wwASPcYAEj3PABI90gASPdUAEj3XABI96gASPn0AEj6gABI+wAASPuAAEj7iABI+5AASPuYAEj7oABI+6wASPuwAEj7tABI+8AASPvEAEj7zABI+9AASPvYAEj75ABI++gASPvsAEj7+ABI+/wASPwQAEj8dABI/JgASPygAEj8qABI/MwASPzYAEj85ABI/OwASP4QAEj+oABI/zwASP/MAEj/2ABI/+AASP/oAEj/8ABI//gASQAAAEkABABJABAASQB0AEkA+ABJAQAASQEIAEkBEABJARgASQEgAEkBKABJATAASQE4AEkBvABJAcgASQHUAEkB4ABJAewASQH4AEkCBABJAhAASQIcAEkCJABJBBAASQQYAEkEIABJBCgASQQ0AEkEOABJBDwASQRAAEkERABJBEwASQRUAEkEWABJBFwASQRkAEkEaABJBlQASQZcAEkGZABJBmwASQZ4AEkGfABJBoAASQaEAEkGiABJBpAASQaYAEkGnABJBqAASQaoAEkGrABJCJgASQigAEkIrABJCLQASQjAAEkIxABJCMgASQjMAEkI0ABJCNgASQjgAEkI5ABJCOgASQjwAEkI9ABJCVgASQlcAEkJYABJCWgASQtUAEkLXABJC2QASQtsAEkLeABJC3wASQuAAEkLhABJC4gASQuQAEkLmABJC5wASQugAEkLqABJC6wASQ2YAEkNoABJDagASQ2wAEkNvABJDcAASQ3EAEkNyABJDcwASQ3UAEkN3ABJDeAASQ3kAEkN7ABJDfAASQ/cAEkP5ABJD+wASQ/0AEkQAABJEAQASRAIAEkQDABJEBAASRAYAEkQIABJECQASRAoAEkQMABJEDQASRIgAEkSKABJEjAASRI4AEkSRABJEkgASRJMAEkSUABJElQASRJcAEkSZABJEmgASRJsAEkSdABJEngASRRkAEkUbABJFHQASRR8AEkUiABJFIwASRSQAEkUlABJFJgASRSgAEkUqABJFKwASRSwAEkUuABJFLwASRXgAEkWcABJFwwASRecAEkXqABJF7AASRe4AEkXwABJF8gASRfQAEkX1ABJF+AASRhEAEkYuABJGMAASRjIAEkY0ABJGNgASRjgAEkY6ABJGPAASRlkAEkZcABJGXwASRmIAEkZlABJGaAASRmsAEkZuABJGcAASRusAEkbtABJG7wASRvEAEkb0ABJG9QASRvYAEkb3ABJG+AASRvoAEkb8ABJG/QASRv4AEkcAABJHAQASR3wAEkd+ABJHgAASR4IAEkeFABJHhgASR4cAEkeIABJHiQASR4sAEkeNABJHjgASR48AEkeRABJHkgASSA0AEkgPABJIEQASSBMAEkgWABJIFwASSBgAEkgZABJIGgASSBwAEkgeABJIHwASSCAAEkgiABJIIwASSJ4AEkigABJIogASSKQAEkinABJIqAASSKkAEkiqABJIqwASSK0AEkivABJIsAASSLEAEkizABJItAASSS8AEkkxABJJMwASSTUAEkk4ABJJOQASSToAEkk7ABJJPAASST4AEklAABJJQQASSUIAEklEABJJRQASScAAEknCABJJxQASSccAEknKABJJywASScwAEknNABJJzgASSdAAEknSABJJ0wASSdQAEknWABJJ1wASSe8AEkpqABJKbAASSm4AEkpwABJKcwASSnQAEkp1ABJKdgASSncAEkp5ABJKewASSnwAEkp9ABJKfwASSoAAEksTABJLNgASS1YAEkt2ABJLeAASS3oAEkt8ABJLfgASS4EAEkuCABJLgwASS4YAEkuHABJLiQASS4oAEkuMABJLjwASS5AAEkuRABJLlAASS5UAEkuaABJLswASS7wAEku+ABJLwAASS8kAEkvMABJLzwASS9EAEkwaABJMPgASTGUAEkyJABJMjAASTI4AEkyQABJMkgASTJQAEkyWABJMlwASTJoAEkyzABJM1AASTNYAEkzYABJM2gASTNwAEkzeABJM4AASTOIAEkzkABJNBQASTQgAEk0LABJNDgASTREAEk0UABJNFwASTRoAEk0dABJNHwASTZoAEk2cABJNngASTaAAEk2jABJNpAASTaUAEk2mABJNpwASTakAEk2rABJNrAASTa0AEk2vABJNsAASTisAEk4tABJOLwASTjEAEk40ABJONQASTjYAEk43ABJOOAASTjoAEk48ABJOPQASTj4AEk5AABJOQQASTrwAEk6+ABJOwQASTsMAEk7GABJOxwASTsgAEk7JABJOygASTswAEk7OABJOzwASTtAAEk7SABJO0wASTuwAEk7tABJO7gASTvAAEk9rABJPbQAST28AEk9xABJPdAAST3UAEk92ABJPdwAST3gAEk96ABJPfAAST30AEk9+ABJPgAAST4EAEk/8ABJP/gASUAAAElACABJQBQASUAYAElAHABJQCAASUAkAElALABJQDQASUA4AElAPABJQEQASUBIAElCNABJQjwASUJEAElCTABJQlgASUJcAElCYABJQmQASUJoAElCcABJQngASUJ8AElCgABJQogASUKMAElEeABJRIAASUSIAElEkABJRJwASUSgAElEpABJRKgASUSsAElEtABJRLwASUTAAElExABJRMwASUTQAElGvABJRsQASUbMAElG1ABJRuAASUbkAElG6ABJRuwASUbwAElG+ABJRwAASUcEAElHCABJRxAASUcUAElIOABJSMgASUlkAElJ9ABJSgAASUoIAElKEABJShgASUogAElKKABJSiwASUo4AElKnABJSxAASUsYAElLIABJSygASUswAElLOABJS0AASUtIAElLvABJS8gASUvUAElL4ABJS+wASUv4AElMBABJTBAASUwYAElOBABJTgwASU4UAElOHABJTigASU4sAElOMABJTjQASU44AElOQABJTkgASU5MAElOUABJTlgASU5cAElQSABJUFAASVBYAElQYABJUGwASVBwAElQdABJUHgASVB8AElQhABJUIwASVCQAElQlABJUJwASVCgAElSjABJUpQASVKcAElSpABJUrAASVK0AElSuABJUrwASVLAAElSyABJUtAASVLUAElS2ABJUuAASVLkAElU0ABJVNgASVTkAElU7ABJVPgASVT8AElVAABJVQQASVUIAElVEABJVRgASVUcAElVIABJVSgASVUsAElXGABJVyAASVcoAElXMABJVzwASVdAAElXRABJV0gASVdMAElXVABJV1wASVdgAElXZABJV2wASVdwAElZXABJWWQASVlsAElZdABJWYAASVmEAElZiABJWYwASVmQAElZmABJWaAASVmkAElZqABJWbAASVm0AElboABJW6gASVuwAElbuABJW8QASVvIAElbzABJW9AASVvUAElb3ABJW+QASVvoAElb7ABJW/QASVv4AElcPABJXEAASVxIAEleVABJXuQASV90AElgAABJYJwASWEcAElhuABJYlQASWLUAEljZABJY/QASWP8AElkCABJZBAASWQYAElkIABJZCwASWQ4AElkQABJZEgASWRUAElkXABJZGQASWRwAElkfABJZIAASWSUAElk+ABJZQwASWUUAEllKABJZTQASWU8AElmYABJZvAASWeMAEloHABJaCgASWgwAEloOABJaEAASWhIAEloUABJaFQASWhgAEloxABJaVgASWlgAElpaABJaXAASWl4AElpgABJaYgASWmQAElpmABJaaAASWo0AElqQABJakwASWpYAElqZABJanAASWp8AElqiABJapQASWqgAElqqABJbJQASWycAElsqABJbLAASWy8AElswABJbMQASWzIAElszABJbNQASWzcAEls4ABJbOQASWzsAEls8ABJbTQASW04AEltQABJbywASW80AElvPABJb0QASW9QAElvVABJb1gASW9cAElvYABJb2gASW9wAElvdABJb3gASW+AAElvhABJcXAASXF4AElxhABJcYwASXGYAElxnABJcaAASXGkAElxqABJcbAASXG4AElxvABJccAASXHIAElxzABJchAASXIUAElyHABJdAgASXQQAEl0GABJdCAASXQsAEl0MABJdDQASXQ4AEl0PABJdEQASXRMAEl0UABJdFQASXRcAEl0YABJdkwASXZUAEl2YABJdmgASXZ0AEl2eABJdnwASXaAAEl2hABJdowASXaUAEl2mABJdpwASXakAEl2qABJduwASXbwAEl2+ABJeOQASXjsAEl49ABJePwASXkIAEl5DABJeRAASXkUAEl5GABJeSAASXkoAEl5LABJeTAASXk4AEl5PABJeygASXswAEl7PABJe0QASXtQAEl7VABJe1gASXtcAEl7YABJe2gASXtwAEl7dABJe3gASXuAAEl7hABJe+gASXvsAEl78ABJe/gASX3kAEl97ABJffQASX38AEl+CABJfgwASX4QAEl+FABJfhgASX4gAEl+KABJfiwASX4wAEl+OABJfjwASYAoAEmAMABJgDwASYBEAEmAUABJgFQASYBYAEmAXABJgGAASYBoAEmAcABJgHQASYB4AEmAgABJgIQASYC8AEmBIABJgXQASYGAAEmBjABJgZgASYGkAEmBsABJggQASYIQAEmCHABJgigASYI0AEmCQABJgkgASYJgAEmCrABJgvwASYNEAEmDrABJhfgASYaEAEmHBABJh4QASYeMAEmHlABJh5wASYekAEmHsABJh7QASYe4AEmHxABJh8gASYfQAEmH1ABJh9wASYfoAEmH7ABJh/AASYf8AEmIAABJiBQASYh4AEmInABJiKQASYisAEmI0ABJiNwASYjoAEmI8ABJihQASYqkAEmLQABJi9AASYvcAEmL5ABJi+wASYv0AEmL/ABJjAQASYwIAEmMFABJjHgASYz8AEmNBABJjQwASY0UAEmNHABJjSQASY0sAEmNNABJjTwASY3AAEmNzABJjdgASY3kAEmN8ABJjfwASY4IAEmOFABJjiAASY4oAEmQFABJkBwASZAkAEmQLABJkDgASZA8AEmQQABJkEQASZBIAEmQUABJkFgASZBcAEmQYABJkGgASZBsAEmSWABJkmAASZJoAEmScABJknwASZKAAEmShABJkogASZKMAEmSlABJkpwASZKgAEmSpABJkqwASZKwAEmUnABJlKQASZSwAEmUuABJlMQASZTIAEmUzABJlNAASZTUAEmU3ABJlOQASZToAEmU7ABJlPQASZT4AEmVXABJlWAASZVkAEmVbABJl1gASZdgAEmXaABJl3AASZd8AEmXgABJl4QASZeIAEmXjABJl5QASZecAEmXoABJl6QASZesAEmXsABJmZwASZmkAEmZrABJmbQASZnAAEmZxABJmcgASZnMAEmZ0ABJmdgASZngAEmZ5ABJmegASZnwAEmZ9ABJm+AASZvoAEmb8ABJm/gASZwEAEmcCABJnAwASZwQAEmcFABJnBwASZwkAEmcKABJnCwASZw0AEmcOABJniQASZ4sAEmeNABJnjwASZ5IAEmeTABJnlAASZ5UAEmeWABJnmAASZ5oAEmebABJnnAASZ54AEmefABJoGgASaBwAEmgeABJoIAASaCMAEmgkABJoJQASaCYAEmgnABJoKQASaCsAEmgsABJoLQASaC8AEmgwABJoeQASaJ0AEmjEABJo6AASaOsAEmjtABJo7wASaPEAEmjzABJo9QASaPYAEmj5ABJpEgASaS8AEmkxABJpMwASaTUAEmk3ABJpOQASaTsAEmk9ABJpWgASaV0AEmlgABJpYwASaWYAEmlpABJpbAASaW8AEmlxABJp7AASae4AEmnwABJp8gASafUAEmn2ABJp9wASafgAEmn5ABJp+wASaf0AEmn+ABJp/wASagEAEmoCABJqfQASan8AEmqBABJqgwASaoYAEmqHABJqiAASaokAEmqKABJqjAASao4AEmqPABJqkAASapIAEmqTABJrDgASaxAAEmsSABJrFAASaxcAEmsYABJrGQASaxoAEmsbABJrHQASax8AEmsgABJrIQASayMAEmskABJrnwASa6EAEmukABJrpgASa6kAEmuqABJrqwASa6wAEmutABJrrwASa7EAEmuyABJrswASa7UAEmu2ABJsMQASbDMAEmw1ABJsNwASbDoAEmw7ABJsPAASbD0AEmw+ABJsQAASbEIAEmxDABJsRAASbEYAEmxHABJswgASbMQAEmzGABJsyAASbMsAEmzMABJszQASbM4AEmzPABJs0QASbNMAEmzUABJs1QASbNcAEmzYABJtUwASbVUAEm1XABJtWQASbVwAEm1dABJtXgASbV8AEm1gABJtYgASbWQAEm1lABJtZgASbWgAEm1pABJt/AASbh8AEm4/ABJuXwASbmEAEm5jABJuZQASbmcAEm5qABJuawASbmwAEm5vABJucAASbnIAEm5zABJudQASbngAEm55ABJuegASbn0AEm5+ABJugwASbpwAEm6lABJupwASbqkAEm6yABJutQASbrgAEm66ABJvAwASbycAEm9OABJvcgASb3UAEm93ABJveQASb3sAEm99ABJvfwASb4AAEm+DABJvnAASb70AEm+/ABJvwQASb8MAEm/FABJvxwASb8kAEm/LABJvzQASb+4AEm/xABJv9AASb/cAEm/6ABJv/QAScAAAEnADABJwBgAScAgAEnCDABJwhQAScIcAEnCJABJwjAAScI0AEnCOABJwjwAScJAAEnCSABJwlAAScJUAEnCWABJwmAAScJkAEnEUABJxFgAScRgAEnEaABJxHQAScR4AEnEfABJxIAAScSEAEnEjABJxJQAScSYAEnEnABJxKQAScSoAEnGlABJxpwAScaoAEnGsABJxrwAScbAAEnGxABJxsgAScbMAEnG1ABJxtwAScbgAEnG5ABJxuwAScbwAEnHVABJx1gAScdcAEnHZABJyVAASclYAEnJYABJyWgAScl0AEnJeABJyXwAScmAAEnJhABJyYwAScmUAEnJmABJyZwAScmkAEnJqABJy5QAScucAEnLpABJy6wAScu4AEnLvABJy8AAScvEAEnLyABJy9AAScvYAEnL3ABJy+AAScvoAEnL7ABJzdgASc3gAEnN6ABJzfAASc38AEnOAABJzgQASc4IAEnODABJzhQASc4cAEnOIABJziQASc4sAEnOMABJ0BwASdAkAEnQLABJ0DQASdBAAEnQRABJ0EgASdBMAEnQUABJ0FgASdBgAEnQZABJ0GgASdBwAEnQdABJ0mAASdJoAEnScABJ0ngASdKEAEnSiABJ0owASdKQAEnSlABJ0pwASdKkAEnSqABJ0qwASdK0AEnSuABJ09wASdRsAEnVCABJ1ZgASdWkAEnVrABJ1bQASdW8AEnVxABJ1cwASdXQAEnV3ABJ1kAASda0AEnWvABJ1sQASdbMAEnW1ABJ1twASdbkAEnW7ABJ12AASddsAEnXeABJ14QASdeQAEnXnABJ16gASde0AEnXvABJ2agASdmwAEnZuABJ2cAASdnMAEnZ0ABJ2dQASdnYAEnZ3ABJ2eQASdnsAEnZ8ABJ2fQASdn8AEnaAABJ2+wASdv0AEnb/ABJ3AQASdwQAEncFABJ3BgASdwcAEncIABJ3CgASdwwAEncNABJ3DgASdxAAEncRABJ3jAASd44AEneQABJ3kgASd5UAEneWABJ3lwASd5gAEneZABJ3mwASd50AEneeABJ3nwASd6EAEneiABJ4HQASeB8AEngiABJ4JAASeCcAEngoABJ4KQASeCoAEngrABJ4LQASeC8AEngwABJ4MQASeDMAEng0ABJ4rwASeLEAEnizABJ4tQASeLgAEni5ABJ4ugASeLsAEni8ABJ4vgASeMAAEnjBABJ4wgASeMQAEnjFABJ5QAASeUIAEnlFABJ5RwASeUoAEnlLABJ5TAASeU0AEnlOABJ5UAASeVIAEnlTABJ5VAASeVYAEnlXABJ5dgASefEAEnnzABJ59QASefcAEnn6ABJ5+wASefwAEnn9ABJ5/gASegAAEnoCABJ6AwASegQAEnoGABJ6BwASepoAEnq9ABJ63QASev0AEnr/ABJ7AQASewMAEnsFABJ7CAASewkAEnsKABJ7DQASew4AEnsQABJ7EQASexMAEnsWABJ7FwASexgAEnsbABJ7HAASeyEAEns6ABJ7QwASe0UAEntHABJ7UAASe1MAEntWABJ7WAASe6EAEnvFABJ77AASfBAAEnwTABJ8FQASfBcAEnwZABJ8GwASfB0AEnweABJ8IQASfDoAEnxbABJ8XQASfF8AEnxhABJ8YwASfGUAEnxnABJ8aQASfGsAEnyMABJ8jwASfJIAEnyVABJ8mAASfJsAEnyeABJ8oQASfKQAEnymABJ9IQASfSMAEn0lABJ9JwASfSoAEn0rABJ9LAASfS0AEn0uABJ9MAASfTIAEn0zABJ9NAASfTYAEn03ABJ9sgASfbQAEn22ABJ9uAASfbsAEn28ABJ9vQASfb4AEn2/ABJ9wQASfcMAEn3EABJ9xQASfccAEn3IABJ+QwASfkUAEn5IABJ+SgASfk0AEn5OABJ+TwASflAAEn5RABJ+UwASflUAEn5WABJ+VwASflkAEn5aABJ+cwASfnQAEn51ABJ+dwASfvIAEn70ABJ+9gASfvgAEn77ABJ+/AASfv0AEn7+ABJ+/wASfwEAEn8DABJ/BAASfwUAEn8HABJ/CAASf4MAEn+FABJ/hwASf4kAEn+MABJ/jQASf44AEn+PABJ/kAASf5IAEn+UABJ/lQASf5YAEn+YABJ/mQASgBQAEoAWABKAGAASgBoAEoAdABKAHgASgB8AEoAgABKAIQASgCMAEoAlABKAJgASgCcAEoApABKAKgASgKUAEoCnABKAqQASgKsAEoCuABKArwASgLAAEoCxABKAsgASgLQAEoC2ABKAtwASgLgAEoC6ABKAuwASgTYAEoE4ABKBOgASgTwAEoE/ABKBQAASgUEAEoFCABKBQwASgUUAEoFHABKBSAASgUkAEoFLABKBTAASgZUAEoG5ABKB4AASggQAEoIHABKCCQASggsAEoINABKCDwASghEAEoISABKCFQASgi4AEoJLABKCTQASgk8AEoJRABKCUwASglUAEoJXABKCWQASgnYAEoJ5ABKCfAASgn8AEoKCABKChQASgogAEoKLABKCjQASgwgAEoMKABKDDAASgw4AEoMRABKDEgASgxMAEoMUABKDFQASgxcAEoMZABKDGgASgxsAEoMdABKDHgASg5kAEoObABKDnQASg58AEoOiABKDowASg6QAEoOlABKDpgASg6gAEoOqABKDqwASg6wAEoOuABKDrwAShCoAEoQsABKELgAShDAAEoQzABKENAAShDUAEoQ2ABKENwAShDkAEoQ7ABKEPAAShD0AEoQ/ABKEQAAShLsAEoS9ABKEvwAShMEAEoTEABKExQAShMYAEoTHABKEyAAShMoAEoTMABKEzQAShM4AEoTQABKE0QAShUwAEoVOABKFUAAShVIAEoVVABKFVgAShVcAEoVYABKFWQAShVsAEoVdABKFXgAShV8AEoVhABKFYgAShd0AEoXfABKF4QASheMAEoXmABKF5wAShegAEoXpABKF6gAShewAEoXuABKF7wAShfAAEoXyABKF8wAShm4AEoZwABKGcgAShnQAEoZ3ABKGeAAShnkAEoZ6ABKGewAShn0AEoZ/ABKGgAAShoEAEoaDABKGhAAShxcAEoc6ABKHWgASh3oAEod8ABKHfgASh4AAEoeCABKHhQASh4YAEoeHABKHigASh4sAEoeNABKHjgASh5AAEoeTABKHlAASh5UAEoeYABKHmQASh54AEoe3ABKHwAASh8IAEofEABKHzQASh9AAEofTABKH1QASiB4AEohCABKIaQASiI0AEoiQABKIkgASiJQAEoiWABKImAASiJoAEoibABKIngASiLcAEojYABKI2gASiNwAEojeABKI4AASiOIAEojkABKI5gASiOgAEokJABKJDAASiQ8AEokSABKJFQASiRgAEokbABKJHgASiSEAEokjABKJngASiaAAEomiABKJpAASiacAEomoABKJqQASiaoAEomrABKJrQASia8AEomwABKJsQASibMAEom0ABKKLwASijEAEoozABKKNQASijgAEoo5ABKKOgASijsAEoo8ABKKPgASikAAEopBABKKQgASikQAEopFABKKwAASisIAEorFABKKxwASisoAEorLABKKzAASis0AEorOABKK0AASitIAEorTABKK1AASitYAEorXABKK8AASivEAEoryABKK9AASi28AEotxABKLcwASi3UAEot4ABKLeQASi3oAEot7ABKLfAASi34AEouAABKLgQASi4IAEouEABKLhQASjAAAEowCABKMBAASjAYAEowJABKMCgASjAsAEowMABKMDQASjA8AEowRABKMEgASjBMAEowVABKMFgASjJEAEoyTABKMlQASjJcAEoyaABKMmwASjJwAEoydABKMngASjKAAEoyiABKMowASjKQAEoymABKMpwASjSIAEo0kABKNJgASjSgAEo0rABKNLAASjS0AEo0uABKNLwASjTEAEo0zABKNNAASjTUAEo03ABKNOAASjbMAEo21ABKNtwASjbkAEo28ABKNvQASjb4AEo2/ABKNwAASjcIAEo3EABKNxQASjcYAEo3IABKNyQASjhIAEo42ABKOXQASjoEAEo6EABKOhgASjogAEo6KABKOjAASjo4AEo6PABKOkgASjqsAEo7IABKOygASjswAEo7OABKO0AASjtIAEo7UABKO1gASjvMAEo72ABKO+QASjvwAEo7/ABKPAgASjwUAEo8IABKPCgASj4UAEo+HABKPiQASj4sAEo+OABKPjwASj5AAEo+RABKPkgASj5QAEo+WABKPlwASj5gAEo+aABKPmwASkBYAEpAYABKQGgASkBwAEpAfABKQIAASkCEAEpAiABKQIwASkCUAEpAnABKQKAASkCkAEpArABKQLAASkKcAEpCpABKQqwASkK0AEpCwABKQsQASkLIAEpCzABKQtAASkLYAEpC4ABKQuQASkLoAEpC8ABKQvQASkTgAEpE6ABKRPAASkT4AEpFBABKRQgASkUMAEpFEABKRRQASkUcAEpFJABKRSgASkUsAEpFNABKRTgASkckAEpHLABKRzQASkc8AEpHSABKR0wASkdQAEpHVABKR1gASkdgAEpHaABKR2wASkdwAEpHeABKR3wASkloAEpJcABKSXgASkmAAEpJjABKSZAASkmUAEpJmABKSZwASkmkAEpJrABKSbAASkm0AEpJvABKScAASkusAEpLtABKS7wASkvEAEpL0ABKS9QASkvYAEpL3ABKS+AASkvoAEpL8ABKS/QASkv4AEpMAABKTAQASk5QAEpO3ABKT1wASk/cAEpP5ABKT+wASk/0AEpP/ABKUAgASlAMAEpQEABKUBwASlAgAEpQKABKUCwASlA0AEpQQABKUEQASlBIAEpQVABKUFgASlB8AEpQ4ABKUQQASlEMAEpRFABKUTgASlFEAEpRUABKUVgASlJ8AEpTDABKU6gASlQ4AEpURABKVEwASlRUAEpUXABKVGQASlRsAEpUcABKVHwASlTgAEpVZABKVWwASlV0AEpVfABKVYQASlWMAEpVlABKVZwASlWkAEpWKABKVjQASlZAAEpWTABKVlgASlZkAEpWcABKVnwASlaIAEpWkABKWHwASliEAEpYjABKWJQASligAEpYpABKWKgASlisAEpYsABKWLgASljAAEpYxABKWMgASljQAEpY1ABKWsAASlrIAEpa0ABKWtgASlrkAEpa6ABKWuwASlrwAEpa9ABKWvwASlsEAEpbCABKWwwASlsUAEpbGABKXQQASl0MAEpdGABKXSAASl0sAEpdMABKXTQASl04AEpdPABKXUQASl1MAEpdUABKXVQASl1cAEpdYABKXcQASl3IAEpdzABKXdQASl/AAEpfyABKX9AASl/YAEpf5ABKX+gASl/sAEpf8ABKX/QASl/8AEpgBABKYAgASmAMAEpgFABKYBgASmIEAEpiDABKYhQASmIcAEpiKABKYiwASmIwAEpiNABKYjgASmJAAEpiSABKYkwASmJQAEpiWABKYlwASmRIAEpkUABKZFgASmRgAEpkbABKZHAASmR0AEpkeABKZHwASmSEAEpkjABKZJAASmSUAEpknABKZKAASmaMAEpmlABKZpwASmakAEpmsABKZrQASma4AEpmvABKZsAASmbIAEpm0ABKZtQASmbYAEpm4ABKZuQASmjQAEpo2ABKaOAASmjoAEpo9ABKaPgASmj8AEppAABKaQQASmkMAEppFABKaRgASmkcAEppJABKaSgASmpMAEpq3ABKa3gASmwIAEpsFABKbBwASmwkAEpsLABKbDQASmw8AEpsQABKbEwASmywAEptJABKbSwASm00AEptPABKbUQASm1MAEptVABKbVwASm3QAEpt3ABKbegASm30AEpuAABKbgwASm4YAEpuJABKbiwASnAYAEpwIABKcCgASnAwAEpwPABKcEAASnBEAEpwSABKcEwASnBUAEpwXABKcGAASnBkAEpwbABKcHAASnJcAEpyZABKcmwASnJ0AEpygABKcoQASnKIAEpyjABKcpAASnKYAEpyoABKcqQASnKoAEpysABKcrQASnSgAEp0qABKdLAASnS4AEp0xABKdMgASnTMAEp00ABKdNQASnTcAEp05ABKdOgASnTsAEp09ABKdPgASnbkAEp27ABKdvgASncAAEp3DABKdxAASncUAEp3GABKdxwASnckAEp3LABKdzAASnc0AEp3PABKd0AASnksAEp5NABKeTwASnlEAEp5UABKeVQASnlYAEp5XABKeWAASnloAEp5cABKeXQASnl4AEp5gABKeYQASntwAEp7eABKe4AASnuIAEp7lABKe5gASnucAEp7oABKe6QASnusAEp7tABKe7gASnu8AEp7xABKe8gASn20AEp9vABKfcQASn3MAEp92ABKfdwASn3gAEp95ABKfegASn3wAEp9+ABKffwASn4AAEp+CABKfgwASn5QAEp+VABKflwASoBoAEqA+ABKgYgASoIUAEqCsABKgzAASoPMAEqEaABKhOgASoV4AEqGCABKhhAASoYcAEqGJABKhiwASoY0AEqGQABKhkwASoZUAEqGXABKhmgASoZwAEqGeABKhoQASoaQAEqGlABKhqgASocMAEqHIABKhygASoc8AEqHSABKh1AASoh0AEqJBABKiaAASoowAEqKPABKikQASopMAEqKVABKilwASopkAEqKaABKinQASorYAEqLbABKi3QASot8AEqLhABKi4wASouUAEqLnABKi6QASousAEqLtABKjEgASoxUAEqMYABKjGwASox4AEqMhABKjJAASoycAEqMqABKjLQASoy8AEqOqABKjrAASo68AEqOxABKjtAASo7UAEqO2ABKjtwASo7gAEqO6ABKjvAASo70AEqO+ABKjwAASo8EAEqPSABKj0wASo9UAEqRQABKkUgASpFQAEqRWABKkWQASpFoAEqRbABKkXAASpF0AEqRfABKkYQASpGIAEqRjABKkZQASpGYAEqThABKk4wASpOYAEqToABKk6wASpOwAEqTtABKk7gASpO8AEqTxABKk8wASpPQAEqT1ABKk9wASpPgAEqUJABKlDgASpREAEqUTABKlJAASpS0AEqUwABKlMwASpTUAEqVIABKlwwASpcUAEqXHABKlyQASpcwAEqXNABKlzgASpc8AEqXQABKl0gASpdQAEqXVABKl1gASpdgAEqXZABKmVAASplYAEqZZABKmWwASpl4AEqZfABKmYAASpmEAEqZiABKmZAASpmYAEqZnABKmaAASpmoAEqZrABKmfAASpn0AEqZ/ABKm+gASpvwAEqb+ABKnAAASpwMAEqcEABKnBQASpwYAEqcHABKnCQASpwsAEqcMABKnDQASpw8AEqcQABKniwASp40AEqeQABKnkgASp5UAEqeWABKnlwASp5gAEqeZABKnmwASp50AEqeeABKnnwASp6EAEqeiABKnuwASp7wAEqe9ABKnvwASqDoAEqg8ABKoPgASqEAAEqhDABKoRAASqEUAEqhGABKoRwASqEkAEqhLABKoTAASqE0AEqhPABKoUAASqMsAEqjNABKo0AASqNIAEqjVABKo1gASqNcAEqjYABKo2QASqNsAEqjdABKo3gASqN8AEqjhABKo4gASqQAAEqkZABKpIgASqSUAEqkoABKpMQASqTQAEqk3ABKpOQASqUwAEqnfABKqAgASqiIAEqpCABKqRAASqkYAEqpIABKqSgASqk0AEqpOABKqTwASqlIAEqpTABKqVQASqlYAEqpYABKqWwASqlwAEqpdABKqYAASqmEAEqpmABKqfwASqogAEqqKABKqjAASqpUAEqqYABKqmwASqp0AEqrmABKrCgASqzEAEqtVABKrWAASq1oAEqtcABKrXgASq2AAEqtiABKrYwASq2YAEqt/ABKroAASq6IAEqukABKrpgASq6gAEquqABKrrAASq64AEquwABKr0QASq9QAEqvXABKr2gASq90AEqvgABKr4wASq+YAEqvpABKr6wASrGYAEqxoABKsagASrGwAEqxvABKscAASrHEAEqxyABKscwASrHUAEqx3ABKseAASrHkAEqx7ABKsfAASrPcAEqz5ABKs+wASrP0AEq0AABKtAQASrQIAEq0DABKtBAASrQYAEq0IABKtCQASrQoAEq0MABKtDQASrYgAEq2KABKtjQASrY8AEq2SABKtkwASrZQAEq2VABKtlgASrZgAEq2aABKtmwASrZwAEq2eABKtnwASrbgAEq25ABKtugASrbwAEq43ABKuOQASrjsAEq49ABKuQAASrkEAEq5CABKuQwASrkQAEq5GABKuSAASrkkAEq5KABKuTAASrk0AEq7IABKuygASrswAEq7OABKu0QASrtIAEq7TABKu1AASrtUAEq7XABKu2QASrtoAEq7bABKu3QASrt4AEq9ZABKvWwASr10AEq9fABKvYgASr2MAEq9kABKvZQASr2YAEq9oABKvagASr2sAEq9sABKvbgASr28AEq/qABKv7AASr+4AEq/wABKv8wASr/QAEq/1ABKv9gASr/cAEq/5ABKv+wASr/wAEq/9ABKv/wASsAAAErB7ABKwfQASsH8AErCBABKwhAASsIUAErCGABKwhwASsIgAErCKABKwjAASsI0AErCOABKwkAASsJEAErDaABKw/gASsSUAErFJABKxTAASsU4AErFQABKxUgASsVQAErFWABKxVwASsVoAErFzABKxkAASsZIAErGUABKxlgASsZgAErGaABKxnAASsZ4AErG7ABKxvgASscEAErHEABKxxwASscoAErHNABKx0AASsdIAErJNABKyTwASslEAErJTABKyVgASslcAErJYABKyWQASsloAErJcABKyXgASsl8AErJgABKyYgASsmMAErLeABKy4AASsuIAErLkABKy5wASsugAErLpABKy6gASsusAErLtABKy7wASsvAAErLxABKy8wASsvQAErNvABKzcQASs3MAErN1ABKzeAASs3kAErN6ABKzewASs3wAErN+ABKzgAASs4EAErOCABKzhAASs4UAErQAABK0AgAStAUAErQHABK0CgAStAsAErQMABK0DQAStA4AErQQABK0EgAStBMAErQUABK0FgAStBcAErSSABK0lAAStJYAErSYABK0mwAStJwAErSdABK0ngAStJ8AErShABK0owAStKQAErSlABK0pwAStKgAErUjABK1JQAStScAErUpABK1LAAStS0AErUuABK1LwAStTAAErUyABK1NAAStTUAErU2ABK1OAAStTkAErW0ABK1tgAStbgAErW6ABK1vQAStb4AErW/ABK1wAAStcEAErXDABK1xQAStcYAErXHABK1yQAStcoAErZdABK2gAAStqAAErbAABK2wgAStsQAErbGABK2yAAStssAErbMABK2zQASttAAErbRABK20wASttQAErbWABK22QASttoAErbbABK23gAStt8AErbkABK2/QAStwYAErcIABK3CgAStxMAErcWABK3GQAStxsAErdkABK3iAASt68AErfTABK31gASt9gAErfaABK33AASt94AErfgABK34QASt+QAErf9ABK4HgASuCAAErgiABK4JAASuCYAErgoABK4KgASuCwAErguABK4TwASuFIAErhVABK4WAASuFsAErheABK4YQASuGQAErhnABK4aQASuOQAErjmABK46AASuOoAErjtABK47gASuO8AErjwABK48QASuPMAErj1ABK49gASuPcAErj5ABK4+gASuXUAErl3ABK5eQASuXsAErl+ABK5fwASuYAAErmBABK5ggASuYQAErmGABK5hwASuYgAErmKABK5iwASugYAEroIABK6CwASug0AEroQABK6EQASuhIAEroTABK6FAASuhYAEroYABK6GQASuhoAErocABK6HQASujYAEro3ABK6OAASujoAErq1ABK6twASurkAErq7ABK6vgASur8AErrAABK6wQASusIAErrEABK6xgASuscAErrIABK6ygASussAErtGABK7SAASu0oAErtMABK7TwASu1AAErtRABK7UgASu1MAErtVABK7VwASu1gAErtZABK7WwASu1wAErvXABK72QASu9sAErvdABK74AASu+EAErviABK74wASu+QAErvmABK76AASu+kAErvqABK77AASu+0AErxoABK8agASvGwAErxuABK8cQASvHIAErxzABK8dAASvHUAErx3ABK8eQASvHoAErx7ABK8fQASvH4AErz5ABK8+wASvP0AErz/ABK9AgASvQMAEr0EABK9BQASvQYAEr0IABK9CgASvQsAEr0MABK9DgASvQ8AEr1YABK9fAASvaMAEr3HABK9ygASvcwAEr3OABK90AASvdIAEr3UABK91QASvdgAEr3xABK+DgASvhAAEr4SABK+FAASvhYAEr4YABK+GgASvhwAEr45ABK+PAASvj8AEr5CABK+RQASvkgAEr5LABK+TgASvlAAEr7LABK+zQASvs8AEr7RABK+1AASvtUAEr7WABK+1wASvtgAEr7aABK+3AASvt0AEr7eABK+4AASvuEAEr9cABK/XgASv2AAEr9iABK/ZQASv2YAEr9nABK/aAASv2kAEr9rABK/bQASv24AEr9vABK/cQASv3IAEr/tABK/7wASv/EAEr/zABK/9gASv/cAEr/4ABK/+QASv/oAEr/8ABK//gASv/8AEsAAABLAAgASwAMAEsB+ABLAgAASwIMAEsCFABLAiAASwIkAEsCKABLAiwASwIwAEsCOABLAkAASwJEAEsCSABLAlAASwJUAEsEQABLBEgASwRQAEsEWABLBGQASwRoAEsEbABLBHAASwR0AEsEfABLBIQASwSIAEsEjABLBJQASwSYAEsGhABLBowASwaUAEsGnABLBqgASwasAEsGsABLBrQASwa4AEsGwABLBsgASwbMAEsG0ABLBtgASwbcAEsIyABLCNAASwjYAEsI4ABLCOwASwjwAEsI9ABLCPgASwj8AEsJBABLCQwASwkQAEsJFABLCRwASwkgAEsJZABLCWgASwlwAEsLfABLDAwASwycAEsNKABLDcQASw5EAEsO4ABLD3wASw/8AEsQjABLERwASxEkAEsRMABLETgASxFAAEsRSABLEVQASxFgAEsRaABLEXAASxF8AEsRhABLEYwASxGYAEsRpABLEagASxG8AEsSIABLEjQASxI8AEsSUABLElwASxJkAEsTiABLFBgASxS0AEsVRABLFVAASxVYAEsVYABLFWgASxVwAEsVeABLFXwASxWIAEsV7ABLFoAASxaIAEsWkABLFpgASxagAEsWqABLFrAASxa4AEsWwABLFsgASxdcAEsXaABLF3QASxeAAEsXjABLF5gASxekAEsXsABLF7wASxfIAEsX0ABLGbwASxnEAEsZ0ABLGdgASxnkAEsZ6ABLGewASxnwAEsZ9ABLGfwASxoEAEsaCABLGgwASxoUAEsaGABLGlwASxpgAEsaaABLHFQASxxcAEscZABLHGwASxx4AEscfABLHIAASxyEAEsciABLHJAASxyYAEscnABLHKAASxyoAEscrABLHpgASx6gAEserABLHrQASx7AAEsexABLHsgASx7MAEse0ABLHtgASx7gAEse5ABLHugASx7wAEse9ABLHzgASx9MAEsfWABLH2AASx+kAEsfyABLH9QASx/gAEsf6ABLIFgASyCgAEsijABLIpQASyKcAEsipABLIrAASyK0AEsiuABLIrwASyLAAEsiyABLItAASyLUAEsi2ABLIuAASyLkAEsk0ABLJNgASyTkAEsk7ABLJPgASyT8AEslAABLJQQASyUIAEslEABLJRgASyUcAEslIABLJSgASyUsAEslcABLJXQASyV8AEsnaABLJ3AASyd4AEsngABLJ4wASyeQAEsnlABLJ5gASyecAEsnpABLJ6wASyewAEsntABLJ7wASyfAAEsprABLKbQASynAAEspyABLKdQASynYAEsp3ABLKeAASynkAEsp7ABLKfQASyn4AEsp/ABLKgQASyoIAEsqbABLKnAASyp0AEsqfABLLGgASyxwAEsseABLLIAASyyMAEsskABLLJQASyyYAEssnABLLKQASyysAEsssABLLLQASyy8AEsswABLLqwASy60AEsuwABLLsgASy7UAEsu2ABLLtwASy7gAEsu5ABLLuwASy70AEsu+ABLLvwASy8EAEsvCABLL1AASy+0AEswWABLMGQASzBwAEswfABLMIgASzCUAEswoABLMKwASzC4AEswxABLMNAASzF0AEsxgABLMYwASzGYAEsxpABLMbAASzG8AEsxyABLMdQASzHgAEsx7ABLMfQASzIwAEsyoABLMvgASzNUAEszsABLNAwASzREAEs0tABLNPwASzdIAEs31ABLOFQASzjUAEs43ABLOOQASzjsAEs49ABLOQAASzkEAEs5CABLORQASzkYAEs5IABLOSQASzksAEs5OABLOTwASzlAAEs5TABLOVAASzlkAEs5yABLOewASzn0AEs5/ABLOiAASzosAEs6OABLOkAASztkAEs79ABLPJAASz0gAEs9LABLPTQASz08AEs9RABLPUwASz1UAEs9WABLPWQASz3IAEs+TABLPlQASz5cAEs+ZABLPmwASz50AEs+fABLPoQASz6MAEs/EABLPxwASz8oAEs/NABLP0AASz9MAEs/WABLP2QASz9wAEs/eABLQWQAS0FsAEtBdABLQXwAS0GIAEtBjABLQZAAS0GUAEtBmABLQaAAS0GoAEtBrABLQbAAS0G4AEtBvABLQ6gAS0OwAEtDuABLQ8AAS0PMAEtD0ABLQ9QAS0PYAEtD3ABLQ+QAS0PsAEtD8ABLQ/QAS0P8AEtEAABLRewAS0X0AEtGAABLRggAS0YUAEtGGABLRhwAS0YgAEtGJABLRiwAS0Y0AEtGOABLRjwAS0ZEAEtGSABLRqwAS0awAEtGtABLRrwAS0ioAEtIsABLSLgAS0jAAEtIzABLSNAAS0jUAEtI2ABLSNwAS0jkAEtI7ABLSPAAS0j0AEtI/ABLSQAAS0rsAEtK9ABLSvwAS0sEAEtLEABLSxQAS0sYAEtLHABLSyAAS0soAEtLMABLSzQAS0s4AEtLQABLS0QAS00wAEtNOABLTUAAS01IAEtNVABLTVgAS01cAEtNYABLTWQAS01sAEtNdABLTXgAS018AEtNhABLTYgAS090AEtPfABLT4QAS0+MAEtPmABLT5wAS0+gAEtPpABLT6gAS0+wAEtPuABLT7wAS0/AAEtPyABLT8wAS1G4AEtRwABLUcgAS1HQAEtR3ABLUeAAS1HkAEtR6ABLUewAS1H0AEtR/ABLUgAAS1IEAEtSDABLUhAAS1M0AEtTxABLVGAAS1TwAEtU/ABLVQQAS1UMAEtVFABLVRwAS1UkAEtVKABLVTQAS1WYAEtWDABLVhQAS1YcAEtWJABLViwAS1Y0AEtWPABLVkQAS1a4AEtWxABLVtAAS1bcAEtW6ABLVvQAS1cAAEtXDABLVxQAS1kAAEtZCABLWRAAS1kYAEtZJABLWSgAS1ksAEtZMABLWTQAS1k8AEtZRABLWUgAS1lMAEtZVABLWVgAS1tEAEtbTABLW1QAS1tcAEtbaABLW2wAS1twAEtbdABLW3gAS1uAAEtbiABLW4wAS1uQAEtbmABLW5wAS12IAEtdkABLXZgAS12gAEtdrABLXbAAS120AEtduABLXbwAS13EAEtdzABLXdAAS13UAEtd3ABLXeAAS1/MAEtf1ABLX+AAS1/oAEtf9ABLX/gAS1/8AEtgAABLYAQAS2AMAEtgFABLYBgAS2AcAEtgJABLYCgAS2IUAEtiHABLYiQAS2IsAEtiOABLYjwAS2JAAEtiRABLYkgAS2JQAEtiWABLYlwAS2JgAEtiaABLYmwAS2RYAEtkYABLZGgAS2RwAEtkfABLZIAAS2SEAEtkiABLZIwAS2SUAEtknABLZKAAS2SkAEtkrABLZLAAS2acAEtmpABLZqwAS2a0AEtmwABLZsQAS2bIAEtmzABLZtAAS2bYAEtm4ABLZuQAS2boAEtm8ABLZvQAS2lAAEtpzABLakwAS2rMAEtq1ABLatwAS2rkAEtq7ABLavgAS2r8AEtrAABLawwAS2sQAEtrGABLaxwAS2skAEtrMABLazQAS2s4AEtrRABLa0gAS2tcAEtrwABLa+QAS2vsAEtr9ABLbBgAS2wkAEtsMABLbDgAS21cAEtt7ABLbogAS28YAEtvJABLbywAS280AEtvPABLb0QAS29MAEtvUABLb1wAS2/AAEtwRABLcEwAS3BUAEtwXABLcGQAS3BsAEtwdABLcHwAS3CEAEtxCABLcRQAS3EgAEtxLABLcTgAS3FEAEtxUABLcVwAS3FoAEtxcABLc1wAS3NkAEtzbABLc3QAS3OAAEtzhABLc4gAS3OMAEtzkABLc5gAS3OgAEtzpABLc6gAS3OwAEtztABLdaAAS3WoAEt1sABLdbgAS3XEAEt1yABLdcwAS3XQAEt11ABLddwAS3XkAEt16ABLdewAS3X0AEt1+ABLd+QAS3fsAEt3+ABLeAAAS3gMAEt4EABLeBQAS3gYAEt4HABLeCQAS3gsAEt4MABLeDQAS3g8AEt4QABLeKQAS3ioAEt4rABLeLQAS3qgAEt6qABLerAAS3q4AEt6xABLesgAS3rMAEt60ABLetQAS3rcAEt65ABLeugAS3rsAEt69ABLevgAS3zkAEt87ABLfPQAS3z8AEt9CABLfQwAS30QAEt9FABLfRgAS30gAEt9KABLfSwAS30wAEt9OABLfTwAS38oAEt/MABLfzgAS39AAEt/TABLf1AAS39UAEt/WABLf1wAS39kAEt/bABLf3AAS390AEt/fABLf4AAS4FsAEuBdABLgXwAS4GEAEuBkABLgZQAS4GYAEuBnABLgaAAS4GoAEuBsABLgbQAS4G4AEuBwABLgcQAS4OwAEuDuABLg8AAS4PIAEuD1ABLg9gAS4PcAEuD4ABLg+QAS4PsAEuD9ABLg/gAS4P8AEuEBABLhAgAS4UsAEuFvABLhlgAS4boAEuG9ABLhvwAS4cEAEuHDABLhxQAS4ccAEuHIABLhywAS4eQAEuIBABLiAwAS4gUAEuIHABLiCQAS4gsAEuINABLiDwAS4iwAEuIvABLiMgAS4jUAEuI4ABLiOwAS4j4AEuJBABLiQwAS4r4AEuLAABLiwgAS4sQAEuLHABLiyAAS4skAEuLKABLiywAS4s0AEuLPABLi0AAS4tEAEuLTABLi1AAS408AEuNRABLjUwAS41UAEuNYABLjWQAS41oAEuNbABLjXAAS414AEuNgABLjYQAS42IAEuNkABLjZQAS4+AAEuPiABLj5AAS4+YAEuPpABLj6gAS4+sAEuPsABLj7QAS4+8AEuPxABLj8gAS4/MAEuP1ABLj9gAS5HEAEuRzABLkdQAS5HcAEuR6ABLkewAS5HwAEuR9ABLkfgAS5IAAEuSCABLkgwAS5IQAEuSGABLkhwAS5QIAEuUEABLlBgAS5QgAEuULABLlDAAS5Q0AEuUOABLlDwAS5REAEuUTABLlFAAS5RUAEuUXABLlGAAS5ZMAEuWVABLlmAAS5ZoAEuWdABLlngAS5Z8AEuWgABLloQAS5aMAEuWlABLlpgAS5acAEuWpABLlqgAS5cIAEuY9ABLmPwAS5kEAEuZDABLmRgAS5kcAEuZIABLmSQAS5koAEuZMABLmTgAS5k8AEuZQABLmUgAS5lMAEubmABLnCQAS5ykAEudJABLnSwAS500AEudPABLnUQAS51QAEudVABLnVgAS51kAEudaABLnXAAS510AEudfABLnYgAS52MAEudkABLnZwAS52gAEudxABLnigAS55MAEueVABLnlwAS56AAEuejABLnpgAS56gAEufxABLoFQAS6DwAEuhgABLoYwAS6GUAEuhnABLoaQAS6GsAEuhtABLobgAS6HEAEuiKABLoqwAS6K0AEuivABLosQAS6LMAEui1ABLotwAS6LkAEui7ABLo3AAS6N8AEujiABLo5QAS6OgAEujrABLo7gAS6PEAEuj0ABLo9gAS6XEAEulzABLpdQAS6XcAEul6ABLpewAS6XwAEul9ABLpfgAS6YAAEumCABLpgwAS6YQAEumGABLphwAS6gIAEuoEABLqBgAS6ggAEuoLABLqDAAS6g0AEuoOABLqDwAS6hEAEuoTABLqFAAS6hUAEuoXABLqGAAS6pMAEuqVABLqmAAS6poAEuqdABLqngAS6p8AEuqgABLqoQAS6qMAEuqlABLqpgAS6qcAEuqpABLqqgAS6sMAEurEABLqxQAS6scAEutCABLrRAAS60YAEutIABLrSwAS60wAEutNABLrTgAS608AEutRABLrUwAS61QAEutVABLrVwAS61gAEuvTABLr1QAS69cAEuvZABLr3AAS690AEuveABLr3wAS6+AAEuviABLr5AAS6+UAEuvmABLr6AAS6+kAEuxkABLsZgAS7GgAEuxqABLsbQAS7G4AEuxvABLscAAS7HEAEuxzABLsdQAS7HYAEux3ABLseQAS7HoAEuz1ABLs9wAS7PkAEuz7ABLs/gAS7P8AEu0AABLtAQAS7QIAEu0EABLtBgAS7QcAEu0IABLtCgAS7QsAEu2GABLtiAAS7YoAEu2MABLtjwAS7ZAAEu2RABLtkgAS7ZMAEu2VABLtlwAS7ZgAEu2ZABLtmwAS7ZwAEu3lABLuCQAS7jAAEu5UABLuVwAS7lkAEu5bABLuXQAS7l8AEu5hABLuYgAS7mUAEu5+ABLumwAS7p0AEu6fABLuoQAS7qMAEu6lABLupwAS7qkAEu7GABLuyQAS7swAEu7PABLu0gAS7tUAEu7YABLu2wAS7t0AEu9YABLvWgAS71wAEu9eABLvYQAS72IAEu9jABLvZAAS72UAEu9nABLvaQAS72oAEu9rABLvbQAS724AEu/pABLv6wAS7+0AEu/vABLv8gAS7/MAEu/0ABLv9QAS7/YAEu/4ABLv+gAS7/sAEu/8ABLv/gAS7/8AEvB6ABLwfAAS8H4AEvCAABLwgwAS8IQAEvCFABLwhgAS8IcAEvCJABLwiwAS8IwAEvCNABLwjwAS8JAAEvELABLxDQAS8Q8AEvERABLxFAAS8RUAEvEWABLxFwAS8RgAEvEaABLxHAAS8R0AEvEeABLxIAAS8SEAEvGcABLxngAS8aAAEvGiABLxpQAS8aYAEvGnABLxqAAS8akAEvGrABLxrQAS8a4AEvGvABLxsQAS8bIAEvItABLyLwAS8jIAEvI0ABLyNwAS8jgAEvI5ABLyOgAS8jsAEvI9ABLyPwAS8kAAEvJBABLyQwAS8kQAEvJTABLyzgAS8tAAEvLSABLy1AAS8tcAEvLYABLy2QAS8toAEvLbABLy3QAS8t8AEvLgABLy4QAS8uMAEvLkABLzdwAS85oAEvO6ABLz2gAS89wAEvPeABLz4AAS8+IAEvPlABLz5gAS8+cAEvPqABLz6wAS8+0AEvPuABLz8AAS8/MAEvP0ABLz9QAS8/gAEvP5ABLz/gAS9BcAEvQgABL0IgAS9CQAEvQtABL0MAAS9DMAEvQ1ABL0fgAS9KIAEvTJABL07QAS9PAAEvTyABL09AAS9PYAEvT4ABL0+gAS9PsAEvT+ABL1FwAS9TgAEvU6ABL1PAAS9T4AEvVAABL1QgAS9UQAEvVGABL1SAAS9WkAEvVsABL1bwAS9XIAEvV1ABL1eAAS9XsAEvV+ABL1gQAS9YMAEvX+ABL2AAAS9gIAEvYEABL2BwAS9ggAEvYJABL2CgAS9gsAEvYNABL2DwAS9hAAEvYRABL2EwAS9hQAEvaPABL2kQAS9pMAEvaVABL2mAAS9pkAEvaaABL2mwAS9pwAEvaeABL2oAAS9qEAEvaiABL2pAAS9qUAEvcgABL3IgAS9yUAEvcnABL3KgAS9ysAEvcsABL3LQAS9y4AEvcwABL3MgAS9zMAEvc0ABL3NgAS9zcAEvdQABL3UQAS91IAEvdUABL3zwAS99EAEvfTABL31QAS99gAEvfZABL32gAS99sAEvfcABL33gAS9+AAEvfhABL34gAS9+QAEvflABL4YAAS+GIAEvhkABL4ZgAS+GkAEvhqABL4awAS+GwAEvhtABL4bwAS+HEAEvhyABL4cwAS+HUAEvh2ABL48QAS+PMAEvj1ABL49wAS+PoAEvj7ABL4/AAS+P0AEvj+ABL5AAAS+QIAEvkDABL5BAAS+QYAEvkHABL5ggAS+YQAEvmGABL5iAAS+YsAEvmMABL5jQAS+Y4AEvmPABL5kQAS+ZMAEvmUABL5lQAS+ZcAEvmYABL6EwAS+hUAEvoXABL6GQAS+hwAEvodABL6HgAS+h8AEvogABL6IgAS+iQAEvolABL6JgAS+igAEvopABL6cgAS+pYAEvq9ABL64QAS+uQAEvrmABL66AAS+uoAEvrsABL67gAS+u8AEvryABL7CwAS+ygAEvsqABL7LAAS+y4AEvswABL7MgAS+zQAEvs2ABL7UwAS+1YAEvtZABL7XAAS+18AEvtiABL7ZQAS+2gAEvtqABL75QAS++cAEvvpABL76wAS++4AEvvvABL78AAS+/EAEvvyABL79AAS+/YAEvv3ABL7+AAS+/oAEvv7ABL8dgAS/HgAEvx6ABL8fAAS/H8AEvyAABL8gQAS/IIAEvyDABL8hQAS/IcAEvyIABL8iQAS/IsAEvyMABL9BwAS/QkAEv0LABL9DQAS/RAAEv0RABL9EgAS/RMAEv0UABL9FgAS/RgAEv0ZABL9GgAS/RwAEv0dABL9mAAS/ZoAEv2dABL9nwAS/aIAEv2jABL9pAAS/aUAEv2mABL9qAAS/aoAEv2rABL9rAAS/a4AEv2vABL+KgAS/iwAEv4uABL+MAAS/jMAEv40ABL+NQAS/jYAEv43ABL+OQAS/jsAEv48ABL+PQAS/j8AEv5AABL+uwAS/r0AEv6/ABL+wQAS/sQAEv7FABL+xgAS/scAEv7IABL+ygAS/swAEv7NABL+zgAS/tAAEv7RABL/TAAS/04AEv9QABL/UgAS/1UAEv9WABL/VwAS/1gAEv9ZABL/WwAS/10AEv9eABL/XwAS/2EAEv9iABL/9QATABgAEwA4ABMAWAATAFoAEwBcABMAXgATAGAAEwBjABMAZAATAGUAEwBoABMAaQATAGsAEwBsABMAbgATAHEAEwByABMAcwATAHYAEwB3ABMAfAATAJUAEwCeABMAoAATAKIAEwCrABMArgATALEAEwCzABMA/AATASAAEwFHABMBawATAW4AEwFwABMBcgATAXQAEwF2ABMBeAATAXkAEwF8ABMBlQATAbYAEwG4ABMBugATAbwAEwG+ABMBwAATAcIAEwHEABMBxgATAecAEwHqABMB7QATAfAAEwHzABMB9gATAfkAEwH8ABMB/wATAgEAEwJ8ABMCfgATAoAAEwKCABMChQATAoYAEwKHABMCiAATAokAEwKLABMCjQATAo4AEwKPABMCkQATApIAEwMNABMDDwATAxEAEwMTABMDFgATAxcAEwMYABMDGQATAxoAEwMcABMDHgATAx8AEwMgABMDIgATAyMAEwOeABMDoAATA6MAEwOlABMDqAATA6kAEwOqABMDqwATA6wAEwOuABMDsAATA7EAEwOyABMDtAATA7UAEwPOABMDzwATA9AAEwPSABMETQATBE8AEwRRABMEUwATBFYAEwRXABMEWAATBFkAEwRaABMEXAATBF4AEwRfABMEYAATBGIAEwRjABME3gATBOAAEwTiABME5AATBOcAEwToABME6QATBOoAEwTrABME7QATBO8AEwTwABME8QATBPMAEwT0ABMFbwATBXEAEwVzABMFdQATBXgAEwV5ABMFegATBXsAEwV8ABMFfgATBYAAEwWBABMFggATBYQAEwWFABMGAAATBgIAEwYEABMGBgATBgkAEwYKABMGCwATBgwAEwYNABMGDwATBhEAEwYSABMGEwATBhUAEwYWABMGkQATBpMAEwaVABMGlwATBpoAEwabABMGnAATBp0AEwaeABMGoAATBqIAEwajABMGpAATBqYAEwanABMG8AATBxQAEwc7ABMHXwATB2IAEwdkABMHZgATB2gAEwdqABMHbAATB20AEwdwABMHiQATB6YAEweoABMHqgATB6wAEweuABMHsAATB7IAEwe0ABMH0QATB9QAEwfXABMH2gATB90AEwfgABMH4wATB+YAEwfoABMIYwATCGUAEwhnABMIaQATCGwAEwhtABMIbgATCG8AEwhwABMIcgATCHQAEwh1ABMIdgATCHgAEwh5ABMI9AATCPYAEwj4ABMI+gATCP0AEwj+ABMI/wATCQAAEwkBABMJAwATCQUAEwkGABMJBwATCQkAEwkKABMJhQATCYcAEwmJABMJiwATCY4AEwmPABMJkAATCZEAEwmSABMJlAATCZYAEwmXABMJmAATCZoAEwmbABMKFgATChgAEwoaABMKHAATCh8AEwogABMKIQATCiIAEwojABMKJQATCicAEwooABMKKQATCisAEwosABMKpwATCqkAEwqrABMKrQATCrAAEwqxABMKsgATCrMAEwq0ABMKtgATCrgAEwq5ABMKugATCrwAEwq9ABMLOAATCzoAEws9ABMLPwATC0IAEwtDABMLRAATC0UAEwtGABMLSAATC0oAEwtLABMLTAATC04AEwtPABMLZwATC+IAEwvkABML5gATC+gAEwvrABML7AATC+0AEwvuABML7wATC/EAEwvzABML9AATC/UAEwv3ABML+AATDIsAEwyuABMMzgATDO4AEwzwABMM8gATDPQAEwz2ABMM+QATDPoAEwz7ABMM/gATDP8AEw0BABMNAgATDQQAEw0HABMNCAATDQkAEw0MABMNDQATDRIAEw0rABMNNAATDTYAEw04ABMNQQATDUQAEw1HABMNSQATDZIAEw22ABMN3QATDgEAEw4EABMOBgATDggAEw4KABMODAATDg4AEw4PABMOEgATDisAEw5MABMOTgATDlAAEw5SABMOVAATDlYAEw5YABMOWgATDlwAEw59ABMOgAATDoMAEw6GABMOiQATDowAEw6PABMOkgATDpUAEw6XABMPEgATDxQAEw8WABMPGAATDxsAEw8cABMPHQATDx4AEw8fABMPIQATDyMAEw8kABMPJQATDycAEw8oABMPowATD6UAEw+nABMPqQATD6wAEw+tABMPrgATD68AEw+wABMPsgATD7QAEw+1ABMPtgATD7gAEw+5ABMQNAATEDYAExA5ABMQOwATED4AExA/ABMQQAATEEEAExBCABMQRAATEEYAExBHABMQSAATEEoAExBLABMQZAATEGUAExBmABMQaAATEOMAExDlABMQ5wATEOkAExDsABMQ7QATEO4AExDvABMQ8AATEPIAExD0ABMQ9QATEPYAExD4ABMQ+QATEXQAExF2ABMReAATEXoAExF9ABMRfgATEX8AExGAABMRgQATEYMAExGFABMRhgATEYcAExGJABMRigATEgUAExIHABMSCQATEgsAExIOABMSDwATEhAAExIRABMSEgATEhQAExIWABMSFwATEhgAExIaABMSGwATEpYAExKYABMSmgATEpwAExKfABMSoAATEqEAExKiABMSowATEqUAExKnABMSqAATEqkAExKrABMSrAATEycAExMpABMTKwATEy0AExMwABMTMQATEzIAExMzABMTNAATEzYAExM4ABMTOQATEzoAExM8ABMTPQATE4YAExOqABMT0QATE/UAExP4ABMT+gATE/wAExP+ABMUAAATFAIAExQDABMUBgATFB8AExQ8ABMUPgATFEAAExRCABMURAATFEYAExRIABMUSgATFGcAExRqABMUbQATFHAAExRzABMUdgATFHkAExR8ABMUfgATFPkAExT7ABMU/QATFP8AExUCABMVAwATFQQAExUFABMVBgATFQgAExUKABMVCwATFQwAExUOABMVDwATFYoAExWMABMVjgATFZAAExWTABMVlAATFZUAExWWABMVlwATFZkAExWbABMVnAATFZ0AExWfABMVoAATFhsAExYdABMWHwATFiEAExYkABMWJQATFiYAExYnABMWKAATFioAExYsABMWLQATFi4AExYwABMWMQATFqwAExauABMWsAATFrIAExa1ABMWtgATFrcAExa4ABMWuQATFrsAExa9ABMWvgATFr8AExbBABMWwgATFz0AExc/ABMXQQATF0MAExdGABMXRwATF0gAExdJABMXSgATF0wAExdOABMXTwATF1AAExdSABMXUwATF84AExfQABMX0gATF9QAExfXABMX2AATF9kAExfaABMX2wATF90AExffABMX4AATF+EAExfjABMX5AATGF8AExhhABMYYwATGGUAExhoABMYaQATGGoAExhrABMYbAATGG4AExhwABMYcQATGHIAExh0ABMYdQATGQgAExkrABMZSwATGWsAExltABMZbwATGXEAExlzABMZdgATGXcAExl4ABMZewATGXwAExl+ABMZfwATGYEAExmEABMZhQATGYYAExmJABMZigATGY8AExmoABMZsQATGbMAExm1ABMZvgATGcEAExnEABMZxgATGg8AExozABMaWgATGn4AExqBABMagwATGoUAExqHABMaiQATGosAExqMABMajwATGqgAExrJABMaywATGs0AExrPABMa0QATGtMAExrVABMa1wATGtkAExr6ABMa/QATGwAAExsDABMbBgATGwkAExsMABMbDwATGxIAExsUABMbjwATG5EAExuTABMblQATG5gAExuZABMbmgATG5sAExucABMbngATG6AAExuhABMbogATG6QAExulABMcIAATHCIAExwkABMcJgATHCkAExwqABMcKwATHCwAExwtABMcLwATHDEAExwyABMcMwATHDUAExw2ABMcsQATHLMAExy2ABMcuAATHLsAExy8ABMcvQATHL4AExy/ABMcwQATHMMAExzEABMcxQATHMcAExzIABMc4QATHOIAExzjABMc5QATHWAAEx1iABMdZAATHWYAEx1pABMdagATHWsAEx1sABMdbQATHW8AEx1xABMdcgATHXMAEx11ABMddgATHfEAEx3zABMd9QATHfcAEx36ABMd+wATHfwAEx39ABMd/gATHgAAEx4CABMeAwATHgQAEx4GABMeBwATHoIAEx6EABMehgATHogAEx6LABMejAATHo0AEx6OABMejwATHpEAEx6TABMelAATHpUAEx6XABMemAATHxMAEx8VABMfFwATHxkAEx8cABMfHQATHx4AEx8fABMfIAATHyIAEx8kABMfJQATHyYAEx8oABMfKQATH6QAEx+mABMfqAATH6oAEx+tABMfrgATH68AEx+wABMfsQATH7MAEx+1ABMftgATH7cAEx+5ABMfugATIAMAEyAnABMgTgATIHIAEyB1ABMgdwATIHkAEyB7ABMgfQATIH8AEyCAABMggwATIJwAEyC5ABMguwATIL0AEyC/ABMgwQATIMMAEyDFABMgxwATIOQAEyDnABMg6gATIO0AEyDwABMg8wATIPYAEyD5ABMg+wATIXYAEyF4ABMhegATIXwAEyF/ABMhgAATIYEAEyGCABMhgwATIYUAEyGHABMhiAATIYkAEyGLABMhjAATIgcAEyIJABMiCwATIg0AEyIQABMiEQATIhIAEyITABMiFAATIhYAEyIYABMiGQATIhoAEyIcABMiHQATIpgAEyKaABMinAATIp4AEyKhABMiogATIqMAEyKkABMipQATIqcAEyKpABMiqgATIqsAEyKtABMirgATIykAEyMrABMjLQATIy8AEyMyABMjMwATIzQAEyM1ABMjNgATIzgAEyM6ABMjOwATIzwAEyM+ABMjPwATI7oAEyO8ABMjvgATI8AAEyPDABMjxAATI8UAEyPGABMjxwATI8kAEyPLABMjzAATI80AEyPPABMj0AATJEsAEyRNABMkTwATJFEAEyRUABMkVQATJFYAEyRXABMkWAATJFoAEyRcABMkXQATJF4AEyRgABMkYQATJNwAEyTeABMk4AATJOIAEyTlABMk5gATJOcAEyToABMk6QATJOsAEyTtABMk7gATJO8AEyTxABMk8gATJYUAEyWoABMlyAATJegAEyXqABMl7AATJe4AEyXwABMl8wATJfQAEyX1ABMl+AATJfkAEyX7ABMl/AATJf4AEyYBABMmAgATJgMAEyYGABMmBwATJgwAEyYlABMmLgATJjAAEyYyABMmOwATJj4AEyZBABMmQwATJowAEyawABMm1wATJvsAEyb+ABMnAAATJwIAEycEABMnBgATJwgAEycJABMnDAATJyUAEydGABMnSAATJ0oAEydMABMnTgATJ1AAEydSABMnVAATJ1YAEyd3ABMnegATJ30AEyeAABMngwATJ4YAEyeJABMnjAATJ48AEyeRABMoDAATKA4AEygQABMoEgATKBUAEygWABMoFwATKBgAEygZABMoGwATKB0AEygeABMoHwATKCEAEygiABMonQATKJ8AEyihABMoowATKKYAEyinABMoqAATKKkAEyiqABMorAATKK4AEyivABMosAATKLIAEyizABMpLgATKTAAEykzABMpNQATKTgAEyk5ABMpOgATKTsAEyk8ABMpPgATKUAAEylBABMpQgATKUQAEylFABMpXgATKV8AEylgABMpYgATKd0AEynfABMp4QATKeMAEynmABMp5wATKegAEynpABMp6gATKewAEynuABMp7wATKfAAEynyABMp8wATKm4AEypwABMqcgATKnQAEyp3ABMqeAATKnkAEyp6ABMqewATKn0AEyp/ABMqgAATKoEAEyqDABMqhAATKv8AEysBABMrAwATKwUAEysIABMrCQATKwoAEysLABMrDAATKw4AEysQABMrEQATKxIAEysUABMrFQATK5AAEyuSABMrlAATK5YAEyuZABMrmgATK5sAEyucABMrnQATK58AEyuhABMrogATK6MAEyulABMrpgATLCEAEywjABMsJQATLCcAEywqABMsKwATLCwAEywtABMsLgATLDAAEywyABMsMwATLDQAEyw2ABMsNwATLIAAEyykABMsywATLO8AEyzyABMs9AATLPYAEyz4ABMs+gATLPwAEyz9ABMtAAATLRkAEy02ABMtOAATLToAEy08ABMtPgATLUAAEy1CABMtRAATLWEAEy1kABMtZwATLWoAEy1tABMtcAATLXMAEy12ABMteAATLfMAEy31ABMt9wATLfkAEy38ABMt/QATLf4AEy3/ABMuAAATLgIAEy4EABMuBQATLgYAEy4IABMuCQATLoQAEy6GABMuiAATLooAEy6NABMujgATLo8AEy6QABMukQATLpMAEy6VABMulgATLpcAEy6ZABMumgATLxUAEy8XABMvGQATLxsAEy8eABMvHwATLyAAEy8hABMvIgATLyQAEy8mABMvJwATLygAEy8qABMvKwATL6YAEy+oABMvqwATL60AEy+wABMvsQATL7IAEy+zABMvtAATL7YAEy+4ABMvuQATL7oAEy+8ABMvvQATMDgAEzA6ABMwPAATMD4AEzBBABMwQgATMEMAEzBEABMwRQATMEcAEzBJABMwSgATMEsAEzBNABMwTgATMMkAEzDLABMwzQATMM8AEzDSABMw0wATMNQAEzDVABMw1gATMNgAEzDaABMw2wATMNwAEzDeABMw3wATMVoAEzFcABMxXgATMWAAEzFjABMxZAATMWUAEzFmABMxZwATMWkAEzFrABMxbAATMW0AEzFvABMxcAATMgMAEzImABMyRgATMmYAEzJoABMyagATMmwAEzJuABMycQATMnIAEzJzABMydgATMncAEzJ5ABMyegATMnwAEzJ/ABMygAATMoEAEzKEABMyhQATMooAEzKjABMyrAATMq4AEzKwABMyuQATMrwAEzK/ABMywQATMwoAEzMuABMzVQATM3kAEzN8ABMzfgATM4AAEzOCABMzhAATM4YAEzOHABMzigATM6MAEzPEABMzxgATM8gAEzPKABMzzAATM84AEzPQABMz0gATM9QAEzP1ABMz+AATM/sAEzP+ABM0AQATNAQAEzQHABM0CgATNA0AEzQPABM0igATNIwAEzSOABM0kAATNJMAEzSUABM0lQATNJYAEzSXABM0mQATNJsAEzScABM0nQATNJ8AEzSgABM1GwATNR0AEzUfABM1IQATNSQAEzUlABM1JgATNScAEzUoABM1KgATNSwAEzUtABM1LgATNTAAEzUxABM1rAATNa4AEzWxABM1swATNbYAEzW3ABM1uAATNbkAEzW6ABM1vAATNb4AEzW/ABM1wAATNcIAEzXDABM13AATNd0AEzXeABM14AATNlsAEzZdABM2XwATNmEAEzZkABM2ZQATNmYAEzZnABM2aAATNmoAEzZsABM2bQATNm4AEzZwABM2cQATNuwAEzbuABM28AATNvIAEzb1ABM29gATNvcAEzb4ABM2+QATNvsAEzb9ABM2/gATNv8AEzcBABM3AgATN30AEzd/ABM3gQATN4MAEzeGABM3hwATN4gAEzeJABM3igATN4wAEzeOABM3jwATN5AAEzeSABM3kwATOA4AEzgQABM4EgATOBQAEzgXABM4GAATOBkAEzgaABM4GwATOB0AEzgfABM4IAATOCEAEzgjABM4JAATOJ8AEzihABM4owATOKUAEzioABM4qQATOKoAEzirABM4rAATOK4AEziwABM4sQATOLIAEzi0ABM4tQATOP4AEzkiABM5SQATOW0AEzlwABM5cgATOXQAEzl2ABM5eAATOXoAEzl7ABM5fgATOZcAEzm0ABM5tgATObgAEzm6ABM5vAATOb4AEznAABM5wgATOd8AEzniABM55QATOegAEznrABM57gATOfEAEzn0ABM59gATOnEAEzpzABM6dQATOncAEzp6ABM6ewATOnwAEzp9ABM6fgATOoAAEzqCABM6gwATOoQAEzqGABM6hwATOwIAEzsEABM7BgATOwgAEzsLABM7DAATOw0AEzsOABM7DwATOxEAEzsTABM7FAATOxUAEzsXABM7GAATO5MAEzuVABM7lwATO5kAEzucABM7nQATO54AEzufABM7oAATO6IAEzukABM7pQATO6YAEzuoABM7qQATPCQAEzwmABM8KQATPCsAEzwuABM8LwATPDAAEzwxABM8MgATPDQAEzw2ABM8NwATPDgAEzw6ABM8OwATPLYAEzy4ABM8ugATPLwAEzy/ABM8wAATPMEAEzzCABM8wwATPMUAEzzHABM8yAATPMkAEzzLABM8zAATPUcAEz1JABM9SwATPU0AEz1QABM9UQATPVIAEz1TABM9VAATPVYAEz1YABM9WQATPVoAEz1cABM9XQATPdgAEz3aABM93AATPd4AEz3hABM94gATPeMAEz3kABM95QATPecAEz3pABM96gATPesAEz3tABM97gATPoEAEz6kABM+xAATPuQAEz7mABM+6AATPuoAEz7sABM+7wATPvAAEz7xABM+9AATPvUAEz73ABM++AATPvoAEz79ABM+/gATPv8AEz8CABM/AwATPwgAEz8hABM/KgATPywAEz8uABM/NwATPzoAEz89ABM/PwATP4gAEz+sABM/0wATP/cAEz/6ABM//AATP/4AE0AAABNAAgATQAQAE0AFABNACAATQCEAE0BCABNARAATQEYAE0BIABNASgATQEwAE0BOABNAUAATQFIAE0BzABNAdgATQHkAE0B8ABNAfwATQIIAE0CFABNAiAATQIsAE0CNABNBCAATQQoAE0EMABNBDgATQREAE0ESABNBEwATQRQAE0EVABNBFwATQRkAE0EaABNBGwATQR0AE0EeABNBmQATQZsAE0GdABNBnwATQaIAE0GjABNBpAATQaUAE0GmABNBqAATQaoAE0GrABNBrAATQa4AE0GvABNCKgATQiwAE0IvABNCMQATQjQAE0I1ABNCNgATQjcAE0I4ABNCOgATQjwAE0I9ABNCPgATQkAAE0JBABNCWgATQlsAE0JcABNCXgATQtkAE0LbABNC3QATQt8AE0LiABNC4wATQuQAE0LlABNC5gATQugAE0LqABNC6wATQuwAE0LuABNC7wATQ2oAE0NsABNDbgATQ3AAE0NzABNDdAATQ3UAE0N2ABNDdwATQ3kAE0N7ABNDfAATQ30AE0N/ABNDgAATQ/sAE0P9ABND/wATRAEAE0QEABNEBQATRAYAE0QHABNECAATRAoAE0QMABNEDQATRA4AE0QQABNEEQATRIwAE0SOABNEkAATRJIAE0SVABNElgATRJcAE0SYABNEmQATRJsAE0SdABNEngATRJ8AE0ShABNEogATRR0AE0UfABNFIQATRSMAE0UmABNFJwATRSgAE0UpABNFKgATRSwAE0UuABNFLwATRTAAE0UyABNFMwATRXwAE0WgABNFxwATResAE0XuABNF8AATRfIAE0X0ABNF9gATRfgAE0X5ABNF/AATRhUAE0YyABNGNAATRjYAE0Y4ABNGOgATRjwAE0Y+ABNGQAATRl0AE0ZgABNGYwATRmYAE0ZpABNGbAATRm8AE0ZyABNGdAATRu8AE0bxABNG8wATRvUAE0b4ABNG+QATRvoAE0b7ABNG/AATRv4AE0cAABNHAQATRwIAE0cEABNHBQATR4AAE0eCABNHhAATR4YAE0eJABNHigATR4sAE0eMABNHjQATR48AE0eRABNHkgATR5MAE0eVABNHlgATSBEAE0gTABNIFQATSBcAE0gaABNIGwATSBwAE0gdABNIHgATSCAAE0giABNIIwATSCQAE0gmABNIJwATSKIAE0ikABNIpwATSKkAE0isABNIrQATSK4AE0ivABNIsAATSLIAE0i0ABNItQATSLYAE0i4ABNIuQATSTQAE0k2ABNJOAATSToAE0k9ABNJPgATST8AE0lAABNJQQATSUMAE0lFABNJRgATSUcAE0lJABNJSgATScUAE0nHABNJyQATScsAE0nOABNJzwATSdAAE0nRABNJ0gATSdQAE0nWABNJ1wATSdgAE0naABNJ2wATSlYAE0pYABNKWgATSlwAE0pfABNKYAATSmEAE0piABNKYwATSmUAE0pnABNKaAATSmkAE0prABNKbAATSn0AE0p+ABNKgAATSwMAE0snABNLSwATS24AE0uVABNLtQATS9wAE0wDABNMIwATTEcAE0xrABNMbQATTHAAE0xyABNMdAATTHYAE0x5ABNMfAATTH4AE0yAABNMgwATTIUAE0yHABNMigATTI0AE0yOABNMkwATTKwAE0yxABNMswATTLgAE0y7ABNMvQATTQYAE00qABNNUQATTXUAE014ABNNegATTXwAE01+ABNNgAATTYIAE02DABNNhgATTZ8AE03EABNNxgATTcgAE03KABNNzAATTc4AE03QABNN0gATTdQAE03WABNN+wATTf4AE04BABNOBAATTgcAE04KABNODQATThAAE04TABNOFgATThgAE06TABNOlQATTpgAE06aABNOnQATTp4AE06fABNOoAATTqEAE06jABNOpQATTqYAE06nABNOqQATTqoAE067ABNOvAATTr4AE085ABNPOwATTz0AE08/ABNPQgATT0MAE09EABNPRQATT0YAE09IABNPSgATT0sAE09MABNPTgATT08AE0/KABNPzAATT88AE0/RABNP1AATT9UAE0/WABNP1wATT9gAE0/aABNP3AATT90AE0/eABNP4AATT+EAE0/yABNP9wATT/oAE0/8ABNQDQATUBYAE1AZABNQHAATUB4AE1AxABNQrAATUK4AE1CwABNQsgATULUAE1C2ABNQtwATULgAE1C5ABNQuwATUL0AE1C+ABNQvwATUMEAE1DCABNRPQATUT8AE1FCABNRRAATUUcAE1FIABNRSQATUUoAE1FLABNRTQATUU8AE1FQABNRUQATUVMAE1FUABNRZQATUWYAE1FoABNR4wATUeUAE1HnABNR6QATUewAE1HtABNR7gATUe8AE1HwABNR8gATUfQAE1H1ABNR9gATUfgAE1H5ABNSdAATUnYAE1J5ABNSewATUn4AE1J/ABNSgAATUoEAE1KCABNShAATUoYAE1KHABNSiAATUooAE1KLABNSpAATUqUAE1KmABNSqAATUyMAE1MlABNTJwATUykAE1MsABNTLQATUy4AE1MvABNTMAATUzIAE1M0ABNTNQATUzYAE1M4ABNTOQATU7QAE1O2ABNTuQATU7sAE1O+ABNTvwATU8AAE1PBABNTwgATU8QAE1PGABNTxwATU8gAE1PKABNTywATU/IAE1QLABNUFAATVBcAE1QaABNUIwATVCYAE1QpABNUKwATVD4AE1TRABNU9AATVRQAE1U0ABNVNgATVTgAE1U6ABNVPAATVT8AE1VAABNVQQATVUQAE1VFABNVRwATVUgAE1VKABNVTQATVU4AE1VPABNVUgATVVMAE1VYABNVcQATVXoAE1V8ABNVfgATVYcAE1WKABNVjQATVY8AE1XYABNV/AATViMAE1ZHABNWSgATVkwAE1ZOABNWUAATVlIAE1ZUABNWVQATVlgAE1ZxABNWkgATVpQAE1aWABNWmAATVpoAE1acABNWngATVqAAE1aiABNWwwATVsYAE1bJABNWzAATVs8AE1bSABNW1QATVtgAE1bbABNW3QATV1gAE1daABNXXAATV14AE1dhABNXYgATV2MAE1dkABNXZQATV2cAE1dpABNXagATV2sAE1dtABNXbgATV+kAE1frABNX7QATV+8AE1fyABNX8wATV/QAE1f1ABNX9gATV/gAE1f6ABNX+wATV/wAE1f+ABNX/wATWHoAE1h8ABNYfwATWIEAE1iEABNYhQATWIYAE1iHABNYiAATWIoAE1iMABNYjQATWI4AE1iQABNYkQATWKoAE1irABNYrAATWK4AE1kpABNZKwATWS0AE1kvABNZMgATWTMAE1k0ABNZNQATWTYAE1k4ABNZOgATWTsAE1k8ABNZPgATWT8AE1m6ABNZvAATWb4AE1nAABNZwwATWcQAE1nFABNZxgATWccAE1nJABNZywATWcwAE1nNABNZzwATWdAAE1pLABNaTQATWk8AE1pRABNaVAATWlUAE1pWABNaVwATWlgAE1paABNaXAATWl0AE1peABNaYAATWmEAE1rcABNa3gATWuAAE1riABNa5QATWuYAE1rnABNa6AATWukAE1rrABNa7QATWu4AE1rvABNa8QATWvIAE1ttABNbbwATW3EAE1tzABNbdgATW3cAE1t4ABNbeQATW3oAE1t8ABNbfgATW38AE1uAABNbggATW4MAE1vMABNb8AATXBcAE1w7ABNcPgATXEAAE1xCABNcRAATXEYAE1xIABNcSQATXEwAE1xlABNcggATXIQAE1yGABNciAATXIoAE1yMABNcjgATXJAAE1ytABNcsAATXLMAE1y2ABNcuQATXLwAE1y/ABNcwgATXMQAE10/ABNdQQATXUMAE11FABNdSAATXUkAE11KABNdSwATXUwAE11OABNdUAATXVEAE11SABNdVAATXVUAE13QABNd0gATXdQAE13WABNd2QATXdoAE13bABNd3AATXd0AE13fABNd4QATXeIAE13jABNd5QATXeYAE15hABNeYwATXmUAE15nABNeagATXmsAE15sABNebQATXm4AE15wABNecgATXnMAE150ABNedgATXncAE17yABNe9AATXvcAE175ABNe/AATXv0AE17+ABNe/wATXwAAE18CABNfBAATXwUAE18GABNfCAATXwkAE1+EABNfhgATX4gAE1+KABNfjQATX44AE1+PABNfkAATX5EAE1+TABNflQATX5YAE1+XABNfmQATX5oAE2AVABNgFwATYBkAE2AbABNgHgATYB8AE2AgABNgIQATYCIAE2AkABNgJgATYCcAE2AoABNgKgATYCsAE2CmABNgqAATYKoAE2CsABNgrwATYLAAE2CxABNgsgATYLMAE2C1ABNgtwATYLgAE2C5ABNguwATYLwAE2FPABNhcgATYZIAE2GyABNhtAATYbYAE2G4ABNhugATYb0AE2G+ABNhvwATYcIAE2HDABNhxQATYcYAE2HIABNhywATYcwAE2HNABNh0AATYdEAE2HWABNh7wATYfgAE2H6ABNh/AATYgUAE2IIABNiCwATYg0AE2JWABNiegATYqEAE2LFABNiyAATYsoAE2LMABNizgATYtAAE2LSABNi0wATYtYAE2LvABNjEAATYxIAE2MUABNjFgATYxgAE2MaABNjHAATYx4AE2MgABNjQQATY0QAE2NHABNjSgATY00AE2NQABNjUwATY1YAE2NZABNjWwATY9YAE2PYABNj2gATY9wAE2PfABNj4AATY+EAE2PiABNj4wATY+UAE2PnABNj6AATY+kAE2PrABNj7AATZGcAE2RpABNkawATZG0AE2RwABNkcQATZHIAE2RzABNkdAATZHYAE2R4ABNkeQATZHoAE2R8ABNkfQATZPgAE2T6ABNk/QATZP8AE2UCABNlAwATZQQAE2UFABNlBgATZQgAE2UKABNlCwATZQwAE2UOABNlDwATZSgAE2UpABNlKgATZSwAE2WnABNlqQATZasAE2WtABNlsAATZbEAE2WyABNlswATZbQAE2W2ABNluAATZbkAE2W6ABNlvAATZb0AE2Y4ABNmOgATZjwAE2Y+ABNmQQATZkIAE2ZDABNmRAATZkUAE2ZHABNmSQATZkoAE2ZLABNmTQATZk4AE2bJABNmywATZs0AE2bPABNm0gATZtMAE2bUABNm1QATZtYAE2bYABNm2gATZtsAE2bcABNm3gATZt8AE2daABNnXAATZ14AE2dgABNnYwATZ2QAE2dlABNnZgATZ2cAE2dpABNnawATZ2wAE2dtABNnbwATZ3AAE2frABNn7QATZ+8AE2fxABNn9AATZ/UAE2f2ABNn9wATZ/gAE2f6ABNn/AATZ/0AE2f+ABNoAAATaAEAE2hKABNobgATaJUAE2i5ABNovAATaL4AE2jAABNowgATaMQAE2jGABNoxwATaMoAE2jjABNpAAATaQIAE2kEABNpBgATaQgAE2kKABNpDAATaQ4AE2krABNpLgATaTEAE2k0ABNpNwATaToAE2k9ABNpQAATaUIAE2m9ABNpvwATacEAE2nDABNpxgATaccAE2nIABNpyQATacoAE2nMABNpzgATac8AE2nQABNp0gATadMAE2pOABNqUAATalIAE2pUABNqVwATalgAE2pZABNqWgATalsAE2pdABNqXwATamAAE2phABNqYwATamQAE2rfABNq4QATauMAE2rlABNq6AATaukAE2rqABNq6wATauwAE2ruABNq8AATavEAE2ryABNq9AATavUAE2twABNrcgATa3UAE2t3ABNregATa3sAE2t8ABNrfQATa34AE2uAABNrggATa4MAE2uEABNrhgATa4cAE2wCABNsBAATbAYAE2wIABNsCwATbAwAE2wNABNsDgATbA8AE2wRABNsEwATbBQAE2wVABNsFwATbBgAE2yTABNslQATbJcAE2yZABNsnAATbJ0AE2yeABNsnwATbKAAE2yiABNspAATbKUAE2ymABNsqAATbKkAE20kABNtJgATbSgAE20qABNtLQATbS4AE20vABNtMAATbTEAE20zABNtNQATbTYAE203ABNtOQATbToAE21LABNtTAATbU4AE21nABNtaAATbWkAE21rABNthAATbYUAE22GABNtiAATbaEAE22iABNtowATbaUAE222ABNtxQATbd4AE23tABNt/wATbhMAE24qABNuPAATbk0AE25OABNuUAATbmkAE25qABNuawATbm0AE26CABNukwATbp0AE26qAAAAAAAABAQAAAAAAAHeWAAAAAAAAAAAAAAAAAATbrI= + + + + + rawLastModificationTimestamp + + + + rawGroupUid + + + + serializedIdentityCoreDetails + + + + LinkBetweenProtocolInstances + Undefined + 40 + LinkBetweenProtocolInstances + 1 + + + + + + InboxAttachmentChunk + Undefined + 25 + InboxAttachmentChunk + 1 + + + + + + encodedCurrentState + + + + 1 + maskingUID + + + + 1 + devices + + + + isVoipMessage + + + + rawPhotoServerIdentity + + + + remoteDeviceUid + + + + initialByteCountToDownload + + + + receptionChannelInfo + + + + contactIdentity + + + + rawMessageIdOwnedIdentity + + + + rawOwnedIdentity + + + + attachmentNumber + + + + InboxMessage + Undefined + 24 + InboxMessage + 1 + + + + + + MessageHeader + Undefined + 8 + MessageHeader + 1 + + + + + + statusRaw + + + + ownedCryptoIdentity + + + + name + + + + isForcefullyTrustedByUser + + + + maskingUID + + + + rawMessageIdUid + + + + insertionDate + + + + ownAPIKey + + + + hasEncryptedExtendedMessagePayload + + + + declined + + + + ContactIdentityDetailsTrusted + Undefined + 42 + ContactIdentityDetailsTrusted + 1 + + + + + + backupJsonVersion + + + + photoServerKeyEncoded + + + + photoServerKeyEncoded + + + + cryptoIdentity + + + + rawAppType + + + + 1 + receiveKeys + + + + groupUid + + + + expectedChildStateRawId + + + + rawOwnedIdentityIdentity + + + + nextRefreshTimestamp + + + + version + + + + rawMessageIdOwnedIdentity + + + + ContactGroupDetailsPublished + Undefined + 29 + ContactGroupDetailsPublished + 1 + + + + + + OutboxAttachmentSession + Undefined + 11 + OutboxAttachmentSession + 1 + + + + + + ownedCryptoIdentity + + + + nonceFromServer + + + + rawPhotoServerKeyEncoded + + + + seedForNextSendKey + + + + metadata + + + + timestamp + + + + 1 + protocolInstance + + + + photoFilename + + + + rawMessageIdUid + + + + signature + + + + chunkNumber + + + + ContactDevice + Undefined + 10 + ContactDevice + 1 + + + + + + PersistedEngineDialog + Undefined + 45 + PersistedEngineDialog + 1 + + + + + + version + + + + 1 + contactGroups + + + + 1 + groupMembers + + + + rawCapabilities + + + + isOneToOne + + + + aFullRatchetOfTheSendSeedIsInProgress + + + + 1 + ownedIdentity + + + + signedURL + + + + rawMessageIdOwnedIdentity + + + + rawAuthState + + + + 1 + rawPublishedDetails + + + + localDownloadTimestamp + + + + rawOwnedIdentity + + + + GroupV2SignatureReceived + Undefined + 31 + GroupV2SignatureReceived + 1 + + + + + + encryptedContentRaw + + + + rawPhotoServerLabel + + + + rawPhotoServerLabel + + + + groupInvitationNonce + + + + uuid + + + + groupInvitationNonce + + + + rawIdentifier + + + + 1 + latestDetails + + + + messageToSendRawId + + + + rawOwnPermissions + + + + rawLabel + + + + 1 + contactIdentity + + + + rawMessageIdUid + + + + ContactGroupOwned + Undefined + 16 + ContactGroupOwned + 1 + + + + + + OwnedIdentityDetailsPublished + Undefined + 48 + OwnedIdentityDetailsPublished + 1 + + + + + + uid + + + + 1 + otherDevices + + + + rawEncryptedExtendedMessagePayload + + + + 1 + groupMemberships + + + + rawPhotoServerLabel + + + + timestampOfLastFullRatchet + + + + rawMessageIdOwnedIdentity + + + + userDialogUuid + + + + photoServerKeyEncoded + + + + nextRefreshTimestamp + + + + 1 + chunks + + + + ciphertextChunkLength + + + + IdentityServerUserData + Undefined + 47 + IdentityServerUserData + 1 + + + + + + ContactGroupV2Member + Undefined + 33 + ContactGroupV2Member + 1 + + + + + + isRevokedAsCompromised + + + + uid + + + + cryptoSuiteVersion + + + + 1 + attachment + + + + rawMessageIdUid + + + + rawJwks + + + + markedForDeletion + + + + PendingServerQuery + Undefined + 19 + PendingServerQuery + 1 + + + + + + forExport + + + + serializedCoreDetails + + + + serializedCoreDetails + + + + rawIdentity + + + + rawPermissions + + + + timestamp + + + + acknowledgedTimeStamp + + + + 1 + parentProtocolInstance + + + + rawPushTopic + + + + encodedObvDialog + + + + encryptionPublicKeyRaw + + + + ContactGroupJoined + Undefined + 5 + ContactGroupJoined + 1 + + + + + + ReceivedMessage + Undefined + 38 + ReceivedMessage + 1 + + + + + + 1 + channelCreationProtocolInstanceInWaitingState + + + + rawMessageIdOwnedIdentity + + + + serializedCoreDetails + + + + timestampOfLastFullRatchetSentMessage + + + + rawMessageIdUid + + + + identityServer + + + + frozen + + + + rawPhotoServerLabel + + + + rawLabel + + + + cleartextChunkWasWrittenToAttachmentFile + + + + OutboxAttachmentChunk + Undefined + 37 + OutboxAttachmentChunk + 1 + + + + + + OutboxAttachment + Undefined + 22 + OutboxAttachment + 1 + + + + + + 1 + rawBackupKey + + + + Undefined + 24 + ChannelCreationWithOwnedDeviceProtocolInstance + 1 + + + + + + 1 + ownedIdentity + + + + 1 + contactGroupsV2 + + + + ownedIdentityIdentity + + + + 1 + currentDeviceIdentity + + + + deviceUid + + + + currentDeviceUid + + + + rawIdentity + + + + timestampFromServer + + + + rawOwnedIdentity + + + + 1 + rawTrustedDetails + + + + messagePayload + + + + InboxAttachmentSession + Undefined + 7 + InboxAttachmentSession + 1 + + + + + + version + + + + version + + + + rawPermissions + + + + 1 + rawContactGroup + + + + 1 + attachment + + + + attachmentNumber + + + + 1 + groupMembers + + + + rawServerURL + + + + rawOwnedIdentityIdentity + + + + keyGenerationTimestamp + + + + TrustEstablishmentCommitmentReceived + Undefined + 41 + TrustEstablishmentCommitmentReceived + 1 + + + + + + BackupKey + Undefined + 27 + BackupKey + 1 + + + + + + 1 + publishedIdentityDetails + + + + 1 + ownedIdentity + + + + rawMessageIdUid + + + + 1 + contactGroupInCaseTheDetailsArePublished + + + + 1 + provisions + + + + rawStatus + + + + mediatorOrGroupOwnerCryptoIdentity + + + + groupVersion + + + + serializedIdentityCoreDetails + + + + 1 + message + + + + rawOwnedIdentity + + + + downloadedTimeStamp + + + + PendingDeleteFromServer + Undefined + 26 + PendingDeleteFromServer + 1 + + + + + + ContactGroupV2Details + Undefined + 9 + ContactGroupV2Details + 1 + + + + + + rawDateOfLastBootstrappedContactDeviceDiscovery + + + + rawMessageIdOwnedIdentity + + + + fullRatchetingCountOfLastProvision + + + + rawRevocationType + + + + encodedEncodedInputs + + + + rawOwnedIdentity + + + + rawPushTopics + + + + messageUploadTimestampFromServer + + + + CachedWellKnown + Undefined + 43 + CachedWellKnown + 1 + + + + + + 1 + contactGroupOwned + + + + serializedIdentityCoreDetails + + + + 1 + contactGroupJoined + + + + chunkNumber + + + + commitment + + + + rawVerifiedAdministratorsChain + + + + rawRemoteDeviceUid + + + + lastKeyVerificationPromptTimestamp + + + + OwnedIdentityMaskingUID + Undefined + 13 + OwnedIdentityMaskingUID + 1 + + + + + + rawCategory + + + + 1 + channelCreationWithRemoteOwnedDeviceInWaitingState + + + + rawMessageUidFromServer + + + + 1 + chunks + + + + mediatorOrGroupOwnerTrustLevelMajor + + + + ownGroupInvitationNonce + + + + version + + + + photoFilename + + + + encryptedChunkURL + + + + KeyMaterial + Undefined + 12 + KeyMaterial + 1 + + + + + + ServerSession + Undefined + 47 + ServerSession + 1 + + + + + + rawOwnedIdentity + + + + 1 + pendingGroupMembers + + + + 1 + contactIdentities + + + + rawIdentity + + + + 1 + remoteDeviceIdentity + + + + rawMessageIdUid + + + + isConfirmed + + + + revocationTimestamp + + + + encodedUserDialogResponse + + + + signature + + + + rawServerSignatureKey + + + + attachmentLength + + + + rawExtendedMessagePayloadKey + + + + OwnedDevice + Undefined + 51 + OwnedDevice + 1 + + + + + + serializedIdentityCoreDetails + + + + 1 + rawContactGroup + + + + 1 + rawContactIdentity + + + + cryptoKeyId + + + + ciphertextChunkLength + + + + 1 + ownedIdentity + + + + rawOwnedIdentity + + + + serializedSharedSettings + + + + 1 + protocolInstance + + + + lastSuccessfulKeyVerificationTimestamp + + + + DeletedOutboxMessage + Undefined + 17 + DeletedOutboxMessage + 1 + + + + + + ChannelCreationPingSignatureReceived + Undefined + 2 + ChannelCreationPingSignatureReceived + 1 + + + + + + rawGroupUID + + + + photoFilename + + + + 1 + persistedTrustOrigins + + + + serverURL + + + + 1 + contactGroupInCaseTheDetailsAreTrusted + + + + cryptoSuiteVersion + + + + rawObvGroupV2Identifier + + + + rawBlobMainSeed + + + + 1 + contactIdentity + + + + 1 + session + + + + photoServerKeyEncoded + + + + rawCleartextChunkLength + + + + Backup + Undefined + 1 + Backup + 1 + + + + + + ProtocolInstanceWaitingForContactUpgradeToOneToOne + Undefined + 34 + ProtocolInstanceWaitingForContactUpgradeToOneToOne + 1 + + + + + + signature + + + + trustLevelRaw + + + + toCryptoIdentity + + + + numberOfDecryptedMessagesSinceLastFullRatchetSentMessage + + + + 1 + keycloakServer + + + + protocolInstanceUid + + + + encodedElements + + + + selfRevocationTestNonce + + + + rawAPIKeyExpirationDate + + + + attachmentNumber + + + + rawMessageIdOwnedIdentity + + + + ChannelCreationWithContactDeviceProtocolInstance + Undefined + 20 + ChannelCreationWithContactDeviceProtocolInstance + 1 + + + + + + 1 + contactGroup + + + + groupMembersVersion + + + + rawIdentifier + + + + encodedKey + + + + cleartextChunkLength + + + + clientId + + + + 1 + rawOtherMembers + + + + macKeyRaw + + + + ProtocolInstance + Undefined + 53 + ProtocolInstance + 1 + + + + + + rawServerURL + + + + 1 + linkBetweenProtocolInstance + + + + photoServerKeyEncoded + + + + timestampFromServer + + + + fullRatchetingCount + + + + 1 + message + + + + timestamp + + + + rawBlobVersionSeed + + + + rawPhotoServerLabel + + + + rawMessageIdOwnedIdentity + + + + PersistedTrustOrigin + Undefined + 39 + PersistedTrustOrigin + 1 + + + + + + ContactIdentityDetailsPublished + Undefined + 23 + ContactIdentityDetailsPublished + 1 + + + + + + 1 + currentDevice + + + + 1 + publishedDetails + + + + cancelExternallyRequested + + + + 1 + contactGroups + + + + wrappedKey + + + + numberOfEncryptedMessages + + + + protocolMessageRawId + + + + encodedQueryType + + + + serverURL + + + + rawAPIKeyStatus + + + + cancelExternallyRequested + + + + rawMessageIdUid + + + + ContactIdentityToContactIdentityMigrationPolicyV48ToV49 + ContactIdentity + Undefined + 49 + ContactIdentity + 1 + + + + + + groupUid + + + + timestamp + + + + rawOwnedIdentity + + + + contactCryptoIdentity + + + + expirationTimestamp + + + + dummyVariableForMigration + + + + 1 + pendingGroupMembers + + + + clientSecret + + + + downloadTimestampFromServer + + + + successfulVerificationCount + + + + KeycloakServerToKeycloakServerMigrationPolicyV48ToV49 + KeycloakServer + Undefined + 50 + KeycloakServer + 1 + + + + + + OwnedIdentity + Undefined + 52 + OwnedIdentity + 1 + + + + + + nextRefreshTimestamp + + + + rawPhotoServerLabel + + + + uploaded + + + + 1 + publishedIdentityDetails + + + + rawCapabilities + + + + seedForNextProvisionedReceiveKey + + + + trustTypeRaw + + + + rawCategory + + + + downloadTimestamp + + + + serializedIdentityCoreDetails + + + + photoFilename + + + + rawMessageIdUid + + + + PendingGroupMember + Undefined + 28 + PendingGroupMember + 1 + + + + + + creationDate + + + + 1 + message + + + + numberOfEncryptedMessagesAtTheTimeOfTheLastFullRatchet + + + + attachmentNumber + + + + protocolRawId + + + + encodedResponseType + + + + 1 + managedOwnedIdentity + + + + deleteAfterSend + + + + rawAPIPermissions + + + + wrappedKey + + + + GroupServerUserData + Undefined + 44 + GroupServerUserData + 1 + + + + + + 1 + groupOwner + + + + cryptoIdentity + + + + 1 + attachment + + + + signature + + + + messageToSendRawId + + + + selfRatchetingCount + + + + encryptedChunkURL + + + + keycloakUserId + + + + 1 + rawOwnedIdentity + + + + encryptedContent + + + + uidRaw + + + + ContactGroupV2PendingMember + Undefined + 30 + ContactGroupV2PendingMember + 1 + + + + + + InboxAttachment + Undefined + 15 + InboxAttachment + 1 + + + + + + rawLabel + + + + serializedCoreDetails + + + + 1 + waitingForTrustLevelIncrease + + + + 1 + headers + + + + uid + + + + selfRatchetingCount + + + + 1 + session + + + + 1 + contact + + + + rawGroupAdminServerAuthenticationPrivateKey + + + + serverURL + + + + photoServerKeyEncoded + + + + version + + + + signedURL + + + + KeycloakRevokedIdentity + Undefined + 14 + KeycloakRevokedIdentity + 1 + + + + + + MutualScanSignatureReceived + Undefined + 46 + MutualScanSignatureReceived + 1 + + + + + + cryptoProtocolRawId + + + + 1 + keycloakServer + + + + 1 + contactGroupsOwned + + + + encryptedContent + + + + numberOfEncryptedMessagesSinceLastFullRatchetSentMessage + + + + encodedAuthenticatedDecryptionKey + + + + rawMessageIdOwnedIdentity + + + + ownedIdentity + + + + encodedAuthenticatedEncryptionKey + + + + rawOwnedCryptoId + + + + 1 + dbAttachments + + + \ No newline at end of file diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationPolicies/ContactIdentityToContactIdentityMigrationPolicyV48ToV49.swift b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationPolicies/ContactIdentityToContactIdentityMigrationPolicyV48ToV49.swift new file mode 100644 index 00000000..f8702f0a --- /dev/null +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationPolicies/ContactIdentityToContactIdentityMigrationPolicyV48ToV49.swift @@ -0,0 +1,99 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import OlvidUtils +import ObvCrypto + + +final class ContactIdentityToContactIdentityMigrationPolicyV48ToV49: NSEntityMigrationPolicy, ObvErrorMaker { + + static let errorDomain = "ContactIdentity" + static let debugPrintPrefix = "[\(errorDomain)][ContactIdentityToContactIdentityMigrationPolicyV48ToV49]" + + // Tested + override func createDestinationInstances(forSource sInstance: NSManagedObject, in mapping: NSEntityMapping, manager: NSMigrationManager) throws { + + do { + + debugPrint("\(Self.debugPrintPrefix) createDestinationInstances starts") + defer { + debugPrint("\(Self.debugPrintPrefix) createDestinationInstances ends") + } + + let dInstance = try initializeDestinationInstance(forEntityName: "ContactIdentity", + forSource: sInstance, + in: mapping, + manager: manager, + errorDomain: Self.errorDomain) + defer { + manager.associate(sourceInstance: sInstance, withDestinationInstance: dInstance, for: mapping) + } + + // Move the old `cryptoIdentity` to the new `rawIdentity` attribute. + // Doing this allows to remove the usage of the ObvCryptoIdentityTransformer (ValueTransformer). + + ValueTransformer.setValueTransformer(ObvCryptoIdentityTransformerForMigration(), forName: .obvCryptoIdentityTransformerName) + + guard let cryptoIdentity = sInstance.value(forKey: "cryptoIdentity") as? ObvCryptoIdentity else { + throw ObvError.couldNotGetCryptoIdentity + } + + dInstance.setValue(cryptoIdentity.getIdentity(), forKey: "rawIdentity") + + } catch { + assertionFailure() + throw error + } + + } + + enum ObvError: Error { + case couldNotGetCryptoIdentity + } + +} + + +private final class ObvCryptoIdentityTransformerForMigration: ValueTransformer { + + override public class func transformedValueClass() -> AnyClass { + return ObvCryptoIdentity.self + } + + override public class func allowsReverseTransformation() -> Bool { + return true + } + + /// Transform an ObvIdentity into an instance of Data + override public func transformedValue(_ value: Any?) -> Any? { + guard let obvCryptoIdentity = value as? ObvCryptoIdentity else { return nil } + return obvCryptoIdentity.getIdentity() + } + + override public func reverseTransformedValue(_ value: Any?) -> Any? { + guard let data = value as? Data else { return nil } + return ObvCryptoIdentity(from: data) + } +} + +private extension NSValueTransformerName { + static let obvCryptoIdentityTransformerName = NSValueTransformerName(rawValue: "ObvCryptoIdentityTransformer") +} diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationPolicies/KeycloakServerToKeycloakServerMigrationPolicyV48ToV49.swift b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationPolicies/KeycloakServerToKeycloakServerMigrationPolicyV48ToV49.swift new file mode 100644 index 00000000..9c649eed --- /dev/null +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v48_to_v49/MigrationPolicies/KeycloakServerToKeycloakServerMigrationPolicyV48ToV49.swift @@ -0,0 +1,139 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import OlvidUtils +import ObvCrypto + +/// This policy allows to migrate the API keys found in each ``OwnedIdentity`` entity to its (optional) associated `KeycloakServer` entity. +/// ``OwnedIdentity`` without keycloak server will "loose" their API key, as they are not needed anymore. +final class KeycloakServerToKeycloakServerMigrationPolicyV48ToV49: NSEntityMigrationPolicy, ObvErrorMaker { + + static let errorDomain = "KeycloakServer" + static let debugPrintPrefix = "[\(errorDomain)][KeycloakServerToKeycloakServerMigrationPolicyV48ToV49]" + + private static let apiKeyForOwnedIdentityKey = "KeycloakServerToKeycloakServerMigrationPolicyV48ToV49.apiKeyForOwnedIdentityKey" + + // Tested + override func begin(_ mapping: NSEntityMapping, with manager: NSMigrationManager) throws { + + do { + + // This method is called once for this entity, before all relationships of all entities have been re-created. + + // We look for all owned identities to get their (optional) `apiKey` value (UUID). Since we want to store these values in the KeycloakServer corresponding to this owned identity, we store the value in the manager's userInfo dictionary. + + let fetchRequest = NSFetchRequest(entityName: "OwnedIdentity") + let ownedIdentityObjects = try manager.sourceContext.fetch(fetchRequest) + + var apiKeyForOwnedIdentity = [Data: UUID]() + + for ownedIdentityObject in ownedIdentityObjects { + guard let ownedIdentity = ownedIdentityObject.value(forKey: "cryptoIdentity") as? ObvCryptoIdentity else { + throw ObvError.couldNotGetCryptoIdentity + } + if let apiKey = ownedIdentityObject.value(forKey: "apiKey") as? UUID { + apiKeyForOwnedIdentity[ownedIdentity.getIdentity()] = apiKey + } + } + + var userInfo = manager.userInfo ?? [AnyHashable: Any]() + userInfo[Self.apiKeyForOwnedIdentityKey] = apiKeyForOwnedIdentity + manager.userInfo = userInfo + + } catch { + assertionFailure() + throw error + } + + } + + + // Tested + override func end(_ mapping: NSEntityMapping, manager: NSMigrationManager) throws { + + do { + + // This method is called once for this entity, after all relationships of all entities have been re-created. + + debugPrint("\(Self.debugPrintPrefix) end(_ mapping: NSEntityMapping, manager: NSMigrationManager) starts") + defer { + debugPrint("\(Self.debugPrintPrefix) end(_ mapping: NSEntityMapping, manager: NSMigrationManager) ends") + } + + guard let apiKeyForOwnedIdentity = manager.userInfo?[Self.apiKeyForOwnedIdentityKey] as? [Data: UUID] else { + throw ObvError.couldNotRecoverApiKeyForOwnedIdentityDictFromManagersUserInfo + } + + let fetchRequest = NSFetchRequest(entityName: "KeycloakServer") + let keycloakServerObjects = try manager.destinationContext.fetch(fetchRequest) + + for keycloakServerObject in keycloakServerObjects { + guard let rawOwnedIdentity = keycloakServerObject.value(forKey: "rawOwnedIdentity") as? Data else { + throw ObvError.couldNotGetCryptoIdentity + } + if let apiKey = apiKeyForOwnedIdentity[rawOwnedIdentity] { + keycloakServerObject.setValue(apiKey, forKey: "ownAPIKey") + } else { + assertionFailure("We expect a keycloak managed owned identity to have an API key") + } + } + + } catch { + assertionFailure() + throw error + } + + } + + + enum ObvError: Error { + case couldNotGetCryptoIdentity + case couldNotRecoverApiKeyForOwnedIdentityDictFromManagersUserInfo + } + +} + + +private final class ObvCryptoIdentityTransformerForMigration: ValueTransformer { + + override public class func transformedValueClass() -> AnyClass { + return ObvCryptoIdentity.self + } + + override public class func allowsReverseTransformation() -> Bool { + return true + } + + /// Transform an ObvIdentity into an instance of Data + override public func transformedValue(_ value: Any?) -> Any? { + guard let obvCryptoIdentity = value as? ObvCryptoIdentity else { return nil } + return obvCryptoIdentity.getIdentity() + } + + override public func reverseTransformedValue(_ value: Any?) -> Any? { + guard let data = value as? Data else { return nil } + return ObvCryptoIdentity(from: data) + } +} + +private extension NSValueTransformerName { + static let obvCryptoIdentityTransformerName = NSValueTransformerName(rawValue: "ObvCryptoIdentityTransformer") +} diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v49_to_v50/MigrationEngineDatabase_v49_to_v50.md b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v49_to_v50/MigrationEngineDatabase_v49_to_v50.md new file mode 100644 index 00000000..5467dcb3 --- /dev/null +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v49_to_v50/MigrationEngineDatabase_v49_to_v50.md @@ -0,0 +1,36 @@ +# Engine database migration from v49 to v50 + +## PendingServerQuery: many modifications + +The model was changed from this: + + + + + + + + +to this: + + + + + + + + + +- The `isWebSocket` attribute is new but has a default value which is ok for old server queries. This does not prevent migration. + +- The `encodedElements` attribute is now called `rawEncodedElements`. The `elementID` allows to perform a lightweight migration. + +- The `encodedQueryType` attribute is now called `rawEncodedQueryType`. The `elementID` allows to perform a lightweight migration. + +- The `encodedResponseType` attribute is now called `rawEncodedResponseType`. The `elementID` allows to perform a lightweight migration. + +- The `ownedIdentity` attribute is now called `rawOwnedIdentity` and its type changed from OwnedCryptoId (that used a Core Data transformer) to Binary. This requires a heavyweight migration. + +## Conclusion + +A heavyweight migration is required. diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v49_to_v50/MigrationEngineDatabase_v49_to_v50.xcmappingmodel/xcmapping.xml b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v49_to_v50/MigrationEngineDatabase_v49_to_v50.xcmappingmodel/xcmapping.xml new file mode 100644 index 00000000..357bc299 --- /dev/null +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v49_to_v50/MigrationEngineDatabase_v49_to_v50.xcmappingmodel/xcmapping.xml @@ -0,0 +1,2154 @@ + + + + + + 134481920 + 6E900BA2-0629-49C7-B625-AA6AFE6F0D6C + 520 + + + + NSPersistenceFrameworkVersion + 1327 + NSStoreModelVersionChecksumKey + bMpud663vz0bXQE24C6Rh4MvJ5jVnzsD2sI3njZkKbc= + NSStoreModelVersionHashes + + XDDevAttributeMapping + + 0plcXXRN7XHKl5CcF+fwriFmUpON3ZtcI/AfK748aWc= + + XDDevEntityMapping + + qeN1Ym3TkWN1G6dU9RfX6Kd2ccEvcDVWHpd3LpLgboI= + + XDDevMappingModel + + EqtMzvRnVZWkXwBHu4VeVGy8UyoOe+bi67KC79kphlQ= + + XDDevPropertyMapping + + XN33V44TTGY4JETlMoOB5yyTKxB+u4slvDIinv0rtGA= + + XDDevRelationshipMapping + + akYY9LhehVA/mCb4ATLWuI9XGLcjpm14wWL1oEBtIcs= + + + NSStoreModelVersionHashesDigest + +Hmc2uYZK6og+Pvx5GUJ7oW75UG4V/ksQanTjfTKUnxyGWJRMtB5tIRgVwGsrd7lz/QR57++wbvWsr6nxwyS0A== + NSStoreModelVersionHashesVersion + 3 + NSStoreModelVersionIdentifiers + + + + + + + + + timestamp + + + + Backup + Undefined + 47 + Backup + 1 + + + + + + photoFilename + + + + rawGroupUID + + + + rawIdentifier + + + + metadata + + + + signature + + + + rawDateOfLastBootstrappedContactDeviceDiscovery + + + + numberOfEncryptedMessages + + + + revocationTimestamp + + + + clientSecret + + + + ciphertextChunkLength + + + + cancelExternallyRequested + + + + contactCryptoIdentity + + + + trustTypeRaw + + + + rawPhotoServerLabel + + + + signedURL + + + + timestampFromServer + + + + ContactGroupJoined + Undefined + 11 + ContactGroupJoined + 1 + + + + + + 1 + rawTrustedDetails + + + + 1 + dbAttachments + + + + photoServerKeyEncoded + + + + encodedObvDialog + + + + 1 + groupOwner + + + + signature + + + + 1 + pendingGroupMembers + + + + groupInvitationNonce + + + + encodedUserDialogResponse + + + + cancelExternallyRequested + + + + OutboxAttachment + Undefined + 41 + OutboxAttachment + 1 + + + + + + frozen + + + + ContactGroupV2PendingMember + Undefined + 32 + ContactGroupV2PendingMember + 1 + + + + + + extendedMessagePayload + + + + OwnedIdentityMaskingUID + Undefined + 15 + OwnedIdentityMaskingUID + 1 + + + + + + 1 + linkBetweenProtocolInstance + + + + PersistedTrustOrigin + Undefined + 52 + PersistedTrustOrigin + 1 + + + + + + 1 + attachment + + + + cryptoIdentity + + + + timestamp + + + + GroupServerUserData + Undefined + 35 + GroupServerUserData + 1 + + + + + + rawServerURL + + + + 1 + remoteDeviceIdentity + + + + OutboxMessage + Undefined + 20 + OutboxMessage + 1 + + + + + + rawMessageIdOwnedIdentity + + + + photoServerKeyEncoded + + + + 1 + managedOwnedIdentity + + + + rawIdentity + + + + DeletedOutboxMessage + Undefined + 17 + DeletedOutboxMessage + 1 + + + + + + 1 + keycloakServer + + + + numberOfEncryptedMessagesAtTheTimeOfTheLastFullRatchet + + + + keycloakUserId + + + + cleartextChunkWasWrittenToAttachmentFile + + + + deleteAfterSend + + + + 1 + currentDevice + + + + photoFilename + + + + backupJsonVersion + + + + messageToSendRawId + + + + TrustEstablishmentCommitmentReceived + Undefined + 19 + TrustEstablishmentCommitmentReceived + 1 + + + + + + 1 + contact + + + + serializedCoreDetails + + + + 1 + attachment + + + + uploaded + + + + ContactGroupV2Details + Undefined + 12 + ContactGroupV2Details + 1 + + + + + + rawPhotoServerLabel + + + + uuid + + + + deviceUid + + + + rawCapabilities + + + + rawPermissions + + + + protocolInstanceUid + + + + creationDate + + + + 1 + persistedTrustOrigins + + + + fromCryptoIdentity + + + + ChannelCreationPingSignatureReceived + Undefined + 54 + ChannelCreationPingSignatureReceived + 1 + + + + + + declined + + + + 1 + attachment + + + + rawPhotoServerLabel + + + + nextRefreshTimestamp + + + + rawMessageIdUid + + + + trustLevelRaw + + + + ProtocolInstanceWaitingForContactUpgradeToOneToOne + Undefined + 36 + ProtocolInstanceWaitingForContactUpgradeToOneToOne + 1 + + + + + + numberOfEncryptedMessagesSinceLastFullRatchetSentMessage + + + + downloadedTimeStamp + + + + latestGroupUpdateTimestamp + + + + encodedAuthenticatedEncryptionKey + + + + KeycloakServer + Undefined + 8 + KeycloakServer + 1 + + + + + + rawPhotoServerIdentity + + + + encryptedContentRaw + + + + ownedCryptoIdentity + + + + version + + + + 1 + headers + + + + ServerSession + Undefined + 49 + ServerSession + 1 + + + + + + photoFilename + + + + photoFilename + + + + serializedCoreDetails + + + + cryptoIdentity + + + + 1 + trustedDetails + + + + rawMessageIdOwnedIdentity + + + + 1 + publishedDetails + + + + uid + + + + 1 + rawContactGroup + + + + encryptedChunkURL + + + + protocolMessageRawId + + + + encryptedContent + + + + rawGroupAdminServerAuthenticationPrivateKey + + + + acknowledgedTimeStamp + + + + 1 + waitingForTrustLevelIncrease + + + + hasEncryptedExtendedMessagePayload + + + + 1 + revokedIdentities + + + + encryptionPublicKeyRaw + + + + serializedIdentityCoreDetails + + + + serializedIdentityCoreDetails + + + + rawLabel + + + + cryptoSuiteVersion + + + + rawStatus + + + + 1 + contactGroups + + + + remoteCryptoIdentity + + + + ContactIdentityDetailsPublished + Undefined + 25 + ContactIdentityDetailsPublished + 1 + + + + + + cryptoProtocolRawId + + + + PendingDeleteFromServer + Undefined + 10 + PendingDeleteFromServer + 1 + + + + + + encryptedChunkURL + + + + fileURL + + + + 1 + keycloakServer + + + + latestRevocationListTimetamp + + + + forExport + + + + 1 + protocolInstance + + + + rawPhotoServerKeyEncoded + + + + insertionDate + + + + photoFilename + + + + 1 + contactGroup + + + + rawVerifiedAdministratorsChain + + + + photoServerKeyEncoded + + + + LinkBetweenProtocolInstances + Undefined + 43 + LinkBetweenProtocolInstances + 1 + + + + + + photoServerKeyEncoded + + + + version + + + + isActive + + + + rawMessageIdUid + + + + 1 + contactIdentity + + + + protocolRawId + + + + isAppMessageWithUserContent + + + + 1 + publishedIdentityDetails + + + + OwnedIdentity + Undefined + 30 + OwnedIdentity + 1 + + + + + + localDownloadTimestamp + + + + keyGenerationTimestamp + + + + 1 + contactGroup + + + + version + + + + groupMembersVersion + + + + rawOwnedIdentity + + + + fullRatchetingCount + + + + 1 + chunks + + + + remoteDeviceUid + + + + currentStateRawId + + + + rawCleartextChunkLength + + + + ownAPIKey + + + + rawMessageIdOwnedIdentity + + + + rawPhotoServerLabel + + + + rawBackupKeyUid + + + + isWebSocket + + + + rawMessageIdOwnedIdentity + + + + photoServerKeyEncoded + + + + 1 + unsortedAttachments + + + + rawLastModificationTimestamp + + + + GroupV2ServerUserData + Undefined + 48 + GroupV2ServerUserData + 1 + + + + + + rawPhotoServerLabel + + + + 1 + contactGroupJoined + + + + ContactDevice + Undefined + 33 + ContactDevice + 1 + + + + + + rawPhotoServerLabel + + + + 1 + groupMembers + + + + isDeletionInProgress + + + + toCryptoIdentity + + + + maskingUID + + + + 1 + rawContactIdentity + + + + rawMessageIdOwnedIdentity + + + + isVoipMessage + + + + markedForDeletion + + + + InboxAttachment + Undefined + 18 + InboxAttachment + 1 + + + + + + cryptoKeyId + + + + ContactGroupV2 + Undefined + 1 + ContactGroupV2 + 1 + + + + + + lastKeyVerificationPromptTimestamp + + + + ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v49.xcdatamodel + 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WAAAc2gAAHOkAABz4AAAc+QAAHQcAAB0IAAAdCQAAHQoAAB0LAAAdDAAAHSEAAB0iAAAdKgAAHTYAAB1KAAAdWQAAHWgAAB13AAAdewAAHYoAAB2ZAAAdqAAAHbcAAB3GAAAd0gAAHeQAAB3zAAAeAgAAHhEAAB4gAAAeLwAAHj4AAB5NAAAeYgAAHmMAAB5rAAAedwAAHosAAB6aAAAeqQAAHrgAAB68AAAeywAAHtoAAB7pAAAe+AAAHwcAAB8TAAAfJQAAHzQAAB9DAAAfUgAAH2EAAB9iAAAfcQAAH4AAAB+PAAAfpAAAH6UAAB+tAAAfuQAAH80AAB/cAAAf6wAAH/oAAB/+AAAgDQAAIBwAACArAAAgOgAAIEkAACBVAAAgZwAAIHYAACCFAAAglAAAIKMAACCyAAAgwQAAINAAACDlAAAg5gAAIO4AACD6AAAhDgAAIR0AACEsAAAhOwAAIT8AACFOAAAhXQAAIWwAACF7AAAhigAAIZYAACGoAAAhtwAAIcYAACHVAAAh5AAAIfMAACICAAAiEQAAIiYAACInAAAiLwAAIjsAACJPAAAiXgAAIm0AACJ8AAAigAAAIo8AACKeAAAirQAAIrwAACLLAAAi1wAAIukAACL4AAAjBwAAIxYAACMlAAAjNAAAI0MAACNSAAAjUwAAI1YAACNfAAAjbgAAI30AACOMAAAjoQAAI6IAACOqAAAjtgAAI8oAACPZAAAj6AAAI/cAACP7AAAkCgAAJBkAACQoAAAkNwAAJEYAACRSAAAkZAAAJHMAACSCAAAkkQAAJKAAACSvAAAkvgAAJM0AACTQAAAk3wAAJO4AACT9AAAlAAAAJRoAACUbAAAlIQAAJS0AACVDAAAlUgAAJVUAACVkAAAlcwAAJXcAACV8AAAlfQAAJX4AACWNAAAlnAAAJZ8AACWuAAAlvQAAJcEAACXQAAAl3wAAJeAAACYAAAAmAQAAJgIAACYDAAAmBAAAJgUAACYGAAAmBwAAJggAACYJAAAmCgAAJgsAACYMAAAmDQAAJg4AACYjAAAmJAAAJiwAACY4AAAmTAAAJlsAACZqAAAmeQAAJn0AACaMAAAmmwAAJqoAACa5AAAmyAAAJtQAACbmAAAm9QAAJwQAACcTAAAnIgAAJzEAACdAAAAnQQAAJ1AAACdlAAAnZgAAJ24AACd6AAAnjgAAJ50AACesAAAnuwAAJ78AACfOAAAn3QAAJ+wAACf7AAAoCgAAKBYAACgoAAAoNwAAKEYAAChVAAAoZAAAKH4AACh/AAAohQAAKJEAACinAAAotgAAKLkAACjIAAAo1wAAKNsAACjhAAAo4gAAKOMAACjkAAAo8wAAKQIAACkFAAApFAAAKSMAACknAAApNgAAKUUAAClGAAApYAAAKWEAACliAAApYwAAKWQAACllAAApZgAAKWcAACloAAApaQAAKWoAAClrAAApgAAAKYEAACmJAAAplQAAKakAACm4AAApxwAAKdYAACnaAAAp6QAAKfgAACoHAAAqFgAAKiUAACoxAAAqQwAAKlIAACphAAAqcAAAKn8AACqOAAAqnQAAKqwAACrBAAAqwgAAKsoAACrWAAAq6gAAKvkAACsIAAArFwAAKxsAACsqAAArOQAAK0gAACtXAAArZgAAK3IAACuEAAArkwAAK6IAACuxAAArwAAAK88AACveAAAr7QAALAIAACwDAAAsCwAALBcAACwrAAAsOgAALEkAACxYAAAsXAAALGsAACx6AAAsiQAALJgAACynAAAsswAALMUAACzUAAAs4wAALPIAAC0BAAAtEAAALR8AAC0uAAAtQwAALUQAAC1MAAAtWAAALWwAAC17AAAtigAALZkAAC2dAAAtrAAALbsAAC3KAAAt2QAALegAAC30AAAuBgAALhUAAC4kAAAuMwAALkIAAC5cAAAuXQAALmMAAC5vAAAuhQAALpQAAC6XAAAupgAALrUAAC65AAAuwAAALsEAAC7CAAAuwwAALsQAAC7TAAAu4gAALuUAAC70AAAvAwAALwcAAC8WAAAvJQAALyYAAC9AAAAvQQAAL0IAAC9DAAAvRAAAL0UAAC9GAAAvRwAAL0gAAC9JAAAvSgAAL0sAAC9gAAAvYQAAL2kAAC91AAAviQAAL5gAAC+nAAAvtgAAL7oAAC/JAAAv2AAAL+cAAC/2AAAwBQAAMBEAADAjAAAwMgAAMEEAADBQAAAwXwAAMG4AADB9AAAwjAAAMKEAADCiAAAwqgAAMLYAADDKAAAw2QAAMOgAADD3AAAw+wAAMQoAADEZAAAxKAAAMTcAADFGAAAxUgAAMWQAADFzAAAxggAAMZEAADGgAAAxrwAAMb4AADHNAAAx4gAAMeMAADHrAAAx9wAAMgsAADIaAAAyKQAAMjgAADI8AAAySwAAMloAADJpAAAyeAAAMocAADKTAAAypQAAMrQAADLDAAAy0gAAMuEAADLiAAAy8QAAMwAAADMPAAAzJAAAMyUAADMtAAAzOQAAM00AADNcAAAzawAAM3oAADN+AAAzjQAAM5wAADOrAAAzugAAM8kAADPVAAAz5wAAM/YAADQFAAA0FAAANCMAADQyAAA0QQAANFAAADRlAAA0ZgAANG4AADR6AAA0jgAANJ0AADSsAAA0uwAANL8AADTOAAA03QAANOwAADT7AAA1CgAANRYAADUoAAA1NwAANUYAADVVAAA1ZAAANXMAADWCAAA1kQAANaYAADWnAAA1rwAANbsAADXPAAA13gAANe0AADX8AAA2AAAANg8AADYeAAA2LQAANjwAADZLAAA2VwAANmkAADZ4AAA2hwAANpYAADalAAA2tAAANsMAADbSAAA25wAANugAADbwAAA2/AAANxAAADcfAAA3LgAANz0AADdBAAA3UAAAN18AADduAAA3fQAAN4wAADeYAAA3qgAAN7kAADfIAAA31wAAN+YAADf1AAA4BAAAOBMAADgoAAA4KQAAODEAADg9AAA4UQAAOGAAADhvAAA4fgAAOIIAADiRAAA4oAAAOK8AADi+AAA4zQAAONkAADjrAAA4+gAAOQkAADkYAAA5JwAAOTYAADlFAAA5VAAAOWkAADlqAAA5cgAAOX4AADmSAAA5oQAAObAAADm/AAA5wwAAOdIAADnhAAA58AAAOf8AADoOAAA6GgAAOiwAADo7AAA6SgAAOlkAADpoAAA6dwAAOoYAADqVAAA6qgAAOqsAADqzAAA6vwAAOtMAADriAAA68QAAOwAAADsEAAA7EwAAOyIAADsxAAA7QAAAO08AADtbAAA7bQAAO3wAADuLAAA7mgAAO6kAADu4AAA7xwAAO9YAADvrAAA77AAAO/QAADwAAAA8FAAAPCMAADwyAAA8QQAAPEUAADxUAAA8YwAAPHIAADyBAAA8kAAAPJwAADyuAAA8vQAAPMwAADzbAAA86gAAPPkAAD0IAAA9FwAAPRoAAD0pAAA9OAAAPUcAAD1cAAA9XQAAPWUAAD1xAAA9hQAAPZQAAD2jAAA9sgAAPbYAAD3FAAA91AAAPeMAAD3yAAA+AQAAPg0AAD4fAAA+LgAAPj0AAD5MAAA+WwAAPmoAAD55AAA+iAAAPp0AAD6eAAA+pgAAPrIAAD7GAAA+1QAAPuQAAD7zAAA+9wAAPwYAAD8VAAA/JAAAPzMAAD9CAAA/TgAAP2AAAD9vAAA/fgAAP40AAD+cAAA/qwAAP7oAAD/JAAA/3gAAP98AAD/nAAA/8wAAQAcAAEAWAABAJQAAQDQAAEA4AABARwAAQFYAAEBlAABAdAAAQIMAAECPAABAoQAAQLAAAEC/AABAzgAAQN0AAED3AABA+AAAQP4AAEEKAABBIAAAQS8AAEEyAABBQQAAQVAAAEFUAABBWAAAQVkAAEFoAABBdwAAQXoAAEGJAABBmAAAQZwAAEGrAABBugAAQbsAAEHFAABBxgAAQccAAEHcAABB3QAAQeUAAEHxAABCBQAAQhQAAEIjAABCMgAAQjYAAEJFAABCVAAAQmMAAEJyAABCgQAAQo0AAEKfAABCrgAAQr0AAELMAABC2wAAQuoAAEL5AABDCAAAQx0AAEMeAABDJgAAQzIAAENGAABDVQAAQ2QAAENzAABDdwAAQ4YAAEOVAABDpAAAQ7MAAEPCAABDzgAAQ+AAAEPvAABD/gAARA0AAEQcAABEHQAARCwAAEQ7AABESgAARF8AAERgAABEaAAARHQAAESIAABElwAARKYAAES1AABEuQAARMgAAETXAABE5gAARPUAAEUEAABFEAAARSIAAEUxAABFQAAARU8AAEVeAABFbQAARXwAAEWLAABFjgAARZ0AAEWsAABFuwAARdAAAEXRAABF2QAAReUAAEX5AABGCAAARhcAAEYmAABGKgAARjkAAEZIAABGVwAARmYAAEZ1AABGgQAARpMAAEaiAABGsQAARsAAAEbPAABG3gAARu0AAEb8AABHEQAARxIAAEcaAABHJgAARzoAAEdJAABHWAAAR2cAAEdrAABHegAAR4kAAEeYAABHpwAAR7YAAEfCAABH1AAAR+MAAEfyAABIAQAASBAAAEgfAABILgAASD0AAEhSAABIUwAASFsAAEhnAABIewAASIoAAEiZAABIqAAASKwAAEi7AABIygAASNkAAEjoAABI9wAASQMAAEkVAABJJAAASTMAAElCAABJUQAASWAAAElvAABJfgAASZMAAEmUAABJnAAASagAAEm8AABJywAASdoAAEnpAABJ7QAASfwAAEoLAABKGgAASikAAEo4AABKRAAASlYAAEplAABKdAAASoMAAEqSAABKoQAASrAAAEq/AABKwgAAStEAAErgAABK7wAASwQAAEsFAABLDQAASxkAAEstAABLPAAAS0sAAEtaAABLXgAAS20AAEt8AABLiwAAS5oAAEupAABLtQAAS8cAAEvWAABL5QAAS/QAAEwDAABMEgAATCEAAEwwAABMRQAATEYAAExOAABMWgAATG4AAEx9AABMjAAATJsAAEyfAABMrgAATL0AAEzMAABM2wAATOoAAEz2AABNCAAATRcAAE0mAABNNQAATUQAAE1TAABNYgAATXEAAE2GAABNhwAATY8AAE2bAABNrwAATb4AAE3NAABN3AAATeAAAE3vAABN/gAATg0AAE4cAABOKwAATjcAAE5JAABOWAAATmcAAE52AABOhQAATpQAAE6jAABOsgAATscAAE7IAABO0AAATtwAAE7wAABO/wAATw4AAE8dAABPIQAATzAAAE8/AABPTgAAT10AAE9sAABPeAAAT4oAAE+ZAABPqAAAT7cAAE/GAABP1QAAT+QAAE/zAABQCAAAUAkAAFARAABQHQAAUDEAAFBAAABQTwAAUF4AAFBiAABQcQAAUIAAAFCPAABQngAAUK0AAFC5AABQywAAUNoAAFDpAABQ+AAAUQcAAFEWAABRJQAAUSYAAFE1AABRSgAAUUsAAFFTAABRXwAAUXMAAFGCAABRkQAAUaAAAFGkAABRswAAUcIAAFHRAABR4AAAUe8AAFH7AABSDQAAUhwAAFIrAABSOgAAUkkAAFJYAABSZwAAUmgAAFJ3AABSjAAAUo0AAFKVAABSoQAAUrUAAFLEAABS0wAAUuIAAFLmAABS9QAAUwQAAFMTAABTIgAAUzEAAFM9AABTTwAAU14AAFNtAABTfAAAU4sAAFOaAABTqQAAU7gAAFPNAABTzgAAU9YAAFPiAABT9gAAVAUAAFQUAABUIwAAVCcAAFQ2AABURQAAVFQAAFRjAABUcgAAVH4AAFSQAABUnwAAVK4AAFS9AABUzAAAVNsAAFTqAABU6wAAVPoAAFUPAABVEAAAVRgAAFUkAABVOAAAVUcAAFVWAABVZQAAVWkAAFV4AABVhwAAVZYAAFWlAABVtAAAVcAAAFXSAABV4QAAVfAAAFX/AABWDgAAVh0AAFYsAABWOwAAVlAAAFZRAABWWQAAVmUAAFZ5AABWiAAAVpcAAFamAABWqgAAVrkAAFbIAABW1wAAVuYAAFb1AABXAQAAVxMAAFciAABXMQAAV0AAAFdPAABXXgAAV20AAFd8AABXkQAAV5IAAFeaAABXpgAAV7oAAFfJAABX2AAAV+cAAFfrAABX+gAAWAkAAFgYAABYJwAAWDYAAFhCAABYVAAAWGMAAFhyAABYgQAAWJAAAFifAABYrgAAWK8AAFi+AABY0wAAWNQAAFjcAABY6AAAWPwAAFkLAABZGgAAWSkAAFktAABZPAAAWUsAAFlaAABZaQAAWXgAAFmEAABZlgAAWaUAAFm0AABZwwAAWdIAAFnhAABZ8AAAWf8AAFoCAABaHAAAWh0AAFojAABaLwAAWkUAAFpUAABaVwAAWmYAAFp1AABaeAAAWocAAFqWAABamQAAWqgAAFq3AABauwAAWsoAAFrZAABa2gAAWuQAAFrlAABa5gAAWucAAFr8AABa/QAAWwUAAFsRAABbJQAAWzQAAFtDAABbUgAAW1YAAFtlAABbdAAAW4MAAFuSAABboQAAW60AAFu/AABbzgAAW90AAFvsAABb+wAAXAoAAFwZAABcGgAAXCkAAFw+AABcPwAAXEcAAFxTAABcZwAAXHYAAFyFAABclAAAXJgAAFynAABctgAAXMUAAFzUAABc4wAAXO8AAF0BAABdEAAAXR8AAF0uAABdPQAAXVcAAF1YAABdXgAAXWoAAF2AAABdjwAAXZIAAF2hAABdsAAAXbMAAF3CAABd0QAAXdQAAF3jAABd8gAAXfYAAF4FAABeFAAAXhUAAF45AABeOgAAXjsAAF48AABePQAAXj4AAF4/AABeQAAAXkEAAF5CAABeQwAAXkQAAF5FAABeRgAAXkcAAF5IAABeSQAAXl4AAF5fAABeZwAAXnMAAF6HAABelgAAXqUAAF60AABeuAAAXscAAF7WAABe5QAAXvQAAF8DAABfDwAAXyEAAF8wAABfPwAAX04AAF9dAABfbAAAX3sAAF+KAABfnwAAX6AAAF+oAABftAAAX8gAAF/XAABf5gAAX/UAAF/5AABgCAAAYBcAAGAmAABgNQAAYEQAAGBQAABgYgAAYHEAAGCAAABgjwAAYJ4AAGCtAABgvAAAYMsAAGDgAABg4QAAYOkAAGD1AABhCQAAYRgAAGEnAABhNgAAYToAAGFJAABhWAAAYWcAAGF2AABhhQAAYZEAAGGjAABhsgAAYcEAAGHQAABh3wAAYe4AAGH9AABiDAAAYiEAAGIiAABiKgAAYjYAAGJKAABiWQAAYmgAAGJ3AABiewAAYooAAGKZAABiqAAAYrcAAGLGAABi0gAAYuQAAGLzAABjAgAAYxEAAGMgAABjIQAAYzAAAGM/AABjTgAAY2MAAGNkAABjbAAAY3gAAGOMAABjmwAAY6oAAGO5AABjvQAAY8wAAGPbAABj6gAAY/kAAGQIAABkFAAAZCYAAGQ1AABkRAAAZFMAAGRiAABkcQAAZIAAAGSPAABkpAAAZKUAAGStAABkuQAAZM0AAGTcAABk6wAAZPoAAGT+AABlDQAAZRwAAGUrAABlOgAAZUkAAGVVAABlZwAAZXYAAGWFAABllAAAZaMAAGW9AABlvgAAZcQAAGXQAABl5gAAZfUAAGX4AABmBwAAZhYAAGYZAABmKAAAZjcAAGY6AABmSQAAZlgAAGZcAABmawAAZnoAAGZ7AABmhwAAZogAAGaJAABmigAAZosAAGagAABmoQAAZqkAAGa1AABmyQAAZtgAAGbnAABm9gAAZvoAAGcJAABnGAAAZycAAGc2AABnRQAAZ1EAAGdjAABncgAAZ4EAAGeQAABnnwAAZ7kAAGe6AABnwAAAZ8wAAGfiAABn8QAAZ/QAAGgDAABoEgAAaBYAAGgdAABoHgAAaB8AAGggAABoIQAAaDAAAGg/AABoQgAAaFEAAGhgAABoZAAAaHMAAGiCAABogwAAaK8AAGiwAABosQAAaLIAAGizAABotAAAaLUAAGi2AABotwAAaLgAAGi5AABougAAaLsAAGi8AABovQAAaL4AAGi/AABowAAAaMEAAGjCAABowwAAaNgAAGjZAABo4QAAaO0AAGkBAABpEAAAaR8AAGkuAABpMgAAaUEAAGlQAABpXwAAaW4AAGl9AABpiQAAaZsAAGmqAABpuQAAacgAAGnXAABp5gAAafUAAGoEAABqGQAAahoAAGoiAABqLgAAakIAAGpRAABqYAAAam8AAGpzAABqggAAapEAAGqgAABqrwAAar4AAGrKAABq3AAAausAAGr6AABrCQAAaxgAAGsnAABrNgAAa0UAAGtaAABrWwAAa2MAAGtvAABrgwAAa5IAAGuhAABrsAAAa7QAAGvDAABr0gAAa+EAAGvwAABr/wAAbAsAAGwdAABsLAAAbC0AAGw8AABsSwAAbFoAAGxpAABseAAAbIcAAGycAABsnQAAbKUAAGyxAABsxQAAbNQAAGzjAABs8gAAbPYAAG0FAABtFAAAbSMAAG0yAABtQQAAbU0AAG1fAABtbgAAbX0AAG2MAABtmwAAbbUAAG22AABtvAAAbcgAAG3eAABt7QAAbfAAAG3/AABuDgAAbhEAAG4gAABuLwAAbjIAAG5BAABuUAAAblQAAG5jAABucgAAbnMAAG6FAABuhgAAbocAAG6IAABuiQAAbooAAG6LAABujAAAbqEAAG6iAABuqgAAbrYAAG7KAABu2QAAbugAAG73AABu+wAAbwoAAG8ZAABvKAAAbzcAAG9GAABvUgAAb2QAAG9zAABvggAAb5EAAG+gAABvrwAAb74AAG/NAABv4gAAb+MAAG/rAABv9wAAcAsAAHAaAABwKQAAcDgAAHA8AABwSwAAcFoAAHBpAABweAAAcIcAAHCTAABwpQAAcLQAAHDDAABw0gAAcOEAAHDwAABw/wAAcQ4AAHEjAABxJAAAcSwAAHE4AABxTAAAcVsAAHFqAABxeQAAcX0AAHGMAABxmwAAcaoAAHG5AABxyAAAcdQAAHHmAABx9QAAcgQAAHITAAByIgAAcjEAAHJAAAByTwAAcmQAAHJlAABybQAAcnkAAHKNAABynAAAcqsAAHK6AAByvgAAcs0AAHLcAABy6wAAcvoAAHMJAABzFQAAcycAAHM2AABzRQAAc1QAAHNjAABzcgAAc4EAAHOQAABzpQAAc6YAAHOuAABzugAAc84AAHPdAABz7AAAc/sAAHP/AAB0DgAAdB0AAHQsAAB0OwAAdEoAAHRWAAB0aAAAdHcAAHSGAAB0lQAAdKQAAHSzAAB0wgAAdNEAAHTmAAB05wAAdO8AAHT7AAB1DwAAdR4AAHUtAAB1PAAAdUAAAHVPAAB1XgAAdW0AAHV8AAB1iwAAdZcAAHWpAAB1uAAAdccAAHXWAAB15QAAdfQAAHYDAAB2EgAAdicAAHYoAAB2MAAAdjwAAHZQAAB2XwAAdm4AAHZ9AAB2gQAAdpAAAHafAAB2rgAAdr0AAHbMAAB22AAAduoAAHb5AAB3CAAAdxcAAHcmAAB3NQAAd0QAAHdTAAB3aAAAd2kAAHdxAAB3fQAAd5EAAHegAAB3rwAAd74AAHfCAAB30QAAd+AAAHfvAAB3/gAAeA0AAHgZAAB4KwAAeDoAAHhJAAB4WAAAeGcAAHh2AAB4hQAAeJQAAHiXAAB4pgAAeLUAAHjEAAB42QAAeNoAAHjiAAB47gAAeQIAAHkRAAB5IAAAeS8AAHkzAAB5QgAAeVEAAHlgAAB5bwAAeX4AAHmKAAB5nAAAeasAAHm6AAB5yQAAedgAAHnnAAB59gAAegUAAHoaAAB6GwAAeiMAAHovAAB6QwAAelIAAHphAAB6cAAAenQAAHqDAAB6kgAAeqEAAHqwAAB6vwAAessAAHrdAAB67AAAevsAAHsKAAB7GQAAeygAAHs3AAB7RgAAe1sAAHtcAAB7ZAAAe3AAAHuEAAB7kwAAe6IAAHuxAAB7tQAAe8QAAHvTAAB74gAAe/EAAHwAAAB8DAAAfB4AAHwtAAB8PAAAfEsAAHxaAAB8dAAAfHUAAHx7AAB8hwAAfJ0AAHysAAB8rwAAfL4AAHzNAAB80AAAfN8AAHzuAAB88QAAfQAAAH0PAAB9EwAAfSIAAH0xAAB9MgAAfUAAAH1BAAB9QgAAfUMAAH1EAAB9RQAAfVoAAH1bAAB9YwAAfW8AAH2DAAB9kgAAfaEAAH2wAAB9tAAAfcMAAH3SAAB94QAAffAAAH3/AAB+CwAAfh0AAH4sAAB+OwAAfkoAAH5ZAAB+aAAAfncAAH6GAAB+mwAAfpwAAH6kAAB+sAAAfsQAAH7TAAB+4gAAfvEAAH71AAB/BAAAfxMAAH8iAAB/MQAAf0AAAH9MAAB/XgAAf20AAH98AAB/iwAAf5oAAH+pAAB/uAAAf8cAAH/cAAB/3QAAf+UAAH/xAACABQAAgBQAAIAjAACAMgAAgDYAAIBFAACAVAAAgGMAAIByAACAgQAAgI0AAICfAACArgAAgL0AAIDMAACA2wAAgOoAAID5AACBCAAAgR0AAIEeAACBJgAAgTIAAIFGAACBVQAAgWQAAIFzAACBdwAAgYYAAIGVAACBpAAAgbMAAIHCAACBzgAAgeAAAIHvAACB/gAAgg0AAIIcAACCKwAAgjoAAIJJAACCXgAAgl8AAIJnAACCcwAAgocAAIKWAACCpQAAgrQAAIK4AACCxwAAgtYAAILlAACC9AAAgwMAAIMPAACDIQAAgzAAAIM/AACDTgAAg10AAINsAACDewAAg4oAAIONAACDnAAAg6sAAIO6AACDzwAAg9AAAIPYAACD5AAAg/gAAIQHAACEFgAAhCUAAIQpAACEOAAAhEcAAIRWAACEZQAAhHQAAISAAACEkgAAhKEAAISwAACEvwAAhM4AAITdAACE7AAAhPsAAIUQAACFEQAAhRkAAIUlAACFOQAAhUgAAIVXAACFZgAAhWoAAIV5AACFiAAAhZcAAIWmAACFtQAAhcEAAIXTAACF4gAAhfEAAIYAAACGDwAAhh4AAIYtAACGPAAAhlEAAIZSAACGWgAAhmYAAIZ6AACGiQAAhpgAAIanAACGqwAAhroAAIbJAACG2AAAhucAAIb2AACHAgAAhxQAAIcjAACHMgAAh0EAAIdQAACHXwAAh24AAId9AACHkgAAh5MAAIebAACHpwAAh7sAAIfKAACH2QAAh+gAAIfsAACH+wAAiAoAAIgZAACIKAAAiDcAAIhDAACIVQAAiGQAAIhzAACIggAAiJEAAIigAACIrwAAiL4AAIjTAACI1AAAiNwAAIjoAACI/AAAiQsAAIkaAACJKQAAiS0AAIk8AACJSwAAiVoAAIlpAACJeAAAiYQAAImWAACJpQAAibQAAInDAACJ0gAAieEAAInwAACJ/wAAihQAAIoVAACKHQAAiikAAIo9AACKTAAAilsAAIpqAACKbgAAin0AAIqMAACKmwAAiqoAAIq5AACKxQAAitcAAIrmAACK9QAAiwQAAIsTAACLIgAAizEAAItAAACLVQAAi1YAAIteAACLagAAi34AAIuNAACLnAAAi6sAAIuvAACLvgAAi80AAIvcAACL6wAAi/oAAIwGAACMGAAAjCcAAIw2AACMRQAAjFQAAIxjAACMcgAAjIEAAIyWAACMlwAAjJ8AAIyrAACMvwAAjM4AAIzdAACM7AAAjPAAAIz/AACNDgAAjR0AAI0sAACNOwAAjUcAAI1ZAACNaAAAjXcAAI2GAACNlQAAjaQAAI2zAACNwgAAjdcAAI3YAACN4AAAjewAAI4AAACODwAAjh4AAI4tAACOMQAAjkAAAI5PAACOXgAAjm0AAI58AACOiAAAjpoAAI6pAACOuAAAjscAAI7WAACO5QAAjvQAAI8DAACPGAAAjxkAAI8hAACPLQAAj0EAAI9QAACPXwAAj24AAI9yAACPgQAAj5AAAI+fAACPrgAAj70AAI/JAACP2wAAj+oAAI/5AACQCAAAkBcAAJAxAACQMgAAkDgAAJBEAACQWgAAkGkAAJBsAACQewAAkIoAAJCNAACQnAAAkKsAAJCuAACQvQAAkMwAAJDQAACQ3wAAkO4AAJDvAACRCwAAkQwAAJENAACRDgAAkQ8AAJEQAACREQAAkRIAAJETAACRFAAAkRUAAJEWAACRFwAAkSwAAJEtAACRNQAAkUEAAJFVAACRZAAAkXMAAJGCAACRhgAAkZUAAJGkAACRswAAkcIAAJHRAACR3QAAke8AAJH+AACSDQAAkhwAAJIrAACSTQAAkk4AAJJUAACSYAAAknYAAJKFAACSiAAAkpcAAJKmAACSqQAAkrgAAJLHAACSygAAktkAAJLoAACS7AAAkvsAAJMKAACTCwAAkxsAAJMcAACTHQAAkx4AAJMfAACTIAAAkyEAAJM2AACTNwAAkz8AAJNLAACTXwAAk24AAJN9AACTjAAAk5AAAJOfAACTrgAAk70AAJPMAACT2wAAk+cAAJP5AACUCAAAlBcAAJQmAACUNQAAlEQAAJRTAACUYgAAlHcAAJR4AACUgAAAlIwAAJSgAACUrwAAlL4AAJTNAACU0QAAlOAAAJTvAACU/gAAlQ0AAJUcAACVKAAAlToAAJVJAACVWAAAlWcAAJV2AACVhQAAlZQAAJWjAACVuAAAlbkAAJXBAACVzQAAleEAAJXwAACV/wAAlg4AAJYSAACWIQAAljAAAJY/AACWTgAAll0AAJZpAACWewAAlooAAJaZAACWqAAAlrcAAJbGAACW1QAAltYAAJblAACW+gAAlvsAAJcDAACXDwAAlyMAAJcyAACXQQAAl1AAAJdUAACXYwAAl3IAAJeBAACXkAAAl58AAJerAACXvQAAl8wAAJfbAACX6gAAl/kAAJgIAACYFwAAmCYAAJg7AACYPAAAmEQAAJhQAACYZAAAmHMAAJiCAACYkQAAmJUAAJikAACYswAAmMIAAJjRAACY4AAAmOwAAJj+AACZDQAAmRwAAJkrAACZOgAAmUkAAJlYAACZZwAAmXwAAJl9AACZhQAAmZEAAJmlAACZtAAAmcMAAJnSAACZ1gAAmeUAAJn0AACaAwAAmhIAAJohAACaLQAAmj8AAJpOAACaXQAAmmwAAJp7AACalQAAmpYAAJqcAACaqAAAmr4AAJrNAACa0AAAmt8AAJruAACa8QAAmwAAAJsPAACbEgAAmyEAAJswAACbNAAAm0MAAJtSAACbUwAAm18AAJtgAACbYQAAm2IAAJtjAACbeAAAm3kAAJuBAACbjQAAm6EAAJuwAACbvwAAm84AAJvSAACb4QAAm/AAAJv/AACcDgAAnB0AAJwpAACcOwAAnEoAAJxZAACcaAAAnHcAAJyGAACclQAAnKQAAJy5AACcugAAnMIAAJzOAACc4gAAnPEAAJ0AAACdDwAAnRMAAJ0iAACdMQAAnUAAAJ1PAACdXgAAnWoAAJ18AACdiwAAnZoAAJ2pAACduAAAnccAAJ3WAACd5QAAnfoAAJ37AACeAwAAng8AAJ4jAACeMgAAnkEAAJ5QAACeVAAAnmMAAJ5yAACegQAAnpAAAJ6fAACeqwAAnr0AAJ7MAACe2wAAnuoAAJ75AACfCAAAnxcAAJ8YAACfJwAAnzwAAJ89AACfRQAAn1EAAJ9lAACfdAAAn4MAAJ+SAACflgAAn6UAAJ+0AACfwwAAn9IAAJ/hAACf7QAAn/8AAKAOAACgHQAAoCwAAKA7AACgSgAAoFkAAKBoAACgawAAoHoAAKCJAACgmAAAoK0AAKCuAACgtgAAoMIAAKDWAACg5QAAoPQAAKEDAAChBwAAoRYAAKElAAChNAAAoUMAAKFSAAChXgAAoXAAAKF/AAChjgAAoZ0AAKGsAAChxgAAoccAAKHNAACh2QAAoe8AAKH+AACiAQAAohAAAKIfAACiIgAAojEAAKJAAACiQwAAolIAAKJhAACiZQAAonQAAKKDAACihAAAoooAAKKLAACioAAAoqEAAKKpAACitQAAoskAAKLYAACi5wAAovYAAKL6AACjCQAAoxgAAKMnAACjNgAAo0UAAKNRAACjYwAAo3IAAKOBAACjkAAAo58AAKOuAACjvQAAo8wAAKPQAACj2QAAo9oAAKP8AACj/QAApAMAAKQPAACkJQAApDQAAKQ3AACkRgAApFUAAKRYAACkZwAApHYAAKR5AACkiAAApJcAAKSbAACkqgAApLkAAKS6AACkyAAApMkAAKTKAACkywAApMwAAKTNAACk4gAApOMAAKTrAACk9wAApQsAAKUaAAClKQAApTgAAKU8AAClSwAApVoAAKVpAACleAAApYcAAKWTAAClpQAApbQAAKXDAACl0gAApeEAAKXwAACl/wAApg4AAKYjAACmJAAApiwAAKY4AACmTAAAplsAAKZqAACmeQAApn0AAKaMAACmmwAApqoAAKa5AACmyAAAptQAAKbmAACm9QAApwQAAKcTAACnIgAApzEAAKdAAACnTwAAp2QAAKdlAACnbQAAp3kAAKeNAACnnAAAp6sAAKe6AACnvgAAp80AAKfcAACn6wAAp/oAAKgJAACoFQAAqCcAAKg2AACoRQAAqFQAAKhjAACocgAAqIEAAKiQAACopQAAqKYAAKiuAACougAAqM4AAKjdAACo7AAAqPsAAKj/AACpDgAAqR0AAKksAACpOwAAqUoAAKlWAACpaAAAqXcAAKmGAACplQAAqaQAAKmzAACpwgAAqdEAAKnmAACp5wAAqe8AAKn7AACqDwAAqh4AAKotAACqPAAAqkAAAKpPAACqXgAAqm0AAKp8AACqiwAAqpcAAKqpAACquAAAqscAAKrWAACq1wAAquYAAKr1AACrBAAAqxMAAKsWAACrHAAAqyMAAKs9AACrPgAAq0QAAKtQAACrZgAAq3UAAKt4AACrhwAAq5YAAKuZAACrqAAAq7cAAKu6AACryQAAq9gAAKvcAACr6wAAq/oAAKv7AACsAQAArAIAAKwXAACsGAAArCAAAKwsAACsQAAArE8AAKxeAACsbQAArHEAAKyAAACsjwAArJ4AAKytAACsvAAArMgAAKzaAACs6QAArPgAAK0HAACtFgAArTAAAK0xAACtNwAArUMAAK1ZAACtaAAArWsAAK16AACtiQAArYwAAK2bAACtqgAAra0AAK28AACtywAArc8AAK3eAACt7QAAre4AAK30AACt9QAArgoAAK4LAACuEwAArh8AAK4zAACuQgAArlEAAK5gAACuZAAArnMAAK6CAACukQAArqAAAK6vAACuuwAArs0AAK7cAACu6wAArvoAAK8JAACvGAAArycAAK82AACvOgAAr0EAAK9CAACvSAAAr1cAAK9mAACvdQAAr3kAAK96AACvgQAAr5sAAK+cAACvogAAr64AAK/EAACv0wAAr9YAAK/lAACv9AAAr/cAALAGAACwFQAAsBgAALAnAACwNgAAsDoAALBJAACwWAAAsFkAALBfAACwYAAAsHUAALB2AACwfgAAsIoAALCeAACwrQAAsLwAALDLAACwzwAAsN4AALDtAACw/AAAsQsAALEaAACxJgAAsTgAALFHAACxVgAAsWUAALF0AACxjgAAsY8AALGVAACxoQAAsbcAALHGAACxyQAAsdgAALHnAACx6gAAsfkAALIIAACyCwAAshoAALIpAACyLQAAsjwAALJLAACyTAAAslQAALJVAACyVgAAsmsAALJsAACydAAAsoAAALKUAACyowAAsrIAALLBAACyxQAAstQAALLjAACy8gAAswEAALMQAACzHAAAsy4AALM9AACzTAAAs1sAALNqAACzeQAAs4gAALOXAACzrAAAs60AALO1AACzwQAAs9UAALPkAACz8wAAtAIAALQGAAC0FQAAtCQAALQzAAC0QgAAtFEAALRdAAC0bwAAtH4AALSNAAC0jgAAtJ0AALSsAAC0uwAAtMoAALTZAAC07gAAtO8AALT3AAC1AwAAtRcAALUmAAC1NQAAtUQAALVIAAC1VwAAtWYAALV1AAC1hAAAtZMAALWfAAC1sQAAtcAAALXPAAC13gAAte0AALX8AAC2CwAAthoAALYeAAC2JQAAtiYAALY1AAC2RAAAtlMAALZXAAC2WAAAtmcAALZ2AAC2hQAAtogAALaNAAC2nAAAtqsAALa6AAC2zwAAttAAALbYAAC25AAAtvgAALcHAAC3FgAAtyUAALcpAAC3OAAAt0cAALdWAAC3ZQAAt3QAALeAAAC3kgAAt6EAALewAAC3vwAAt84AALfoAAC36QAAt+8AALf7AAC4EQAAuCAAALgjAAC4MgAAuEEAALhEAAC4UwAAuGIAALhlAAC4dAAAuIMAALiHAAC4lgAAuKUAALimAAC4tgAAuLcAALi4AAC4uQAAuLoAALi7AAC40AAAuNEAALjZAAC45QAAuPkAALkIAAC5FwAAuSYAALkqAAC5OQAAuUgAALlXAAC5ZgAAuXUAALmBAAC5kwAAuaIAALmxAAC5wAAAuc8AALneAAC57QAAufwAALoRAAC6EgAAuhoAALomAAC6OgAAukkAALpYAAC6ZwAAumsAALp6AAC6iQAAupgAALqnAAC6tgAAusIAALrUAAC64wAAuvIAALsBAAC7EAAAux8AALsuAAC7PQAAu1IAALtTAAC7WwAAu2cAALt7AAC7igAAu5kAALuoAAC7rAAAu7sAALvKAAC72QAAu+gAALv3AAC8AwAAvBUAALwkAAC8MwAAvEIAALxRAAC8YAAAvG8AALx+AAC8kwAAvJQAALycAAC8qAAAvLwAALzLAAC82gAAvOkAALztAAC8/AAAvQsAAL0aAAC9KQAAvTgAAL1EAAC9VgAAvWUAAL10AAC9gwAAvZIAAL2hAAC9sAAAvb8AAL3UAAC91QAAvd0AAL3pAAC9/QAAvgwAAL4bAAC+KgAAvi4AAL49AAC+TAAAvlsAAL5qAAC+eQAAvoUAAL6XAAC+pgAAvrUAAL7EAAC+0wAAvuIAAL7xAAC/AAAAvxUAAL8WAAC/HgAAvyoAAL8+AAC/TQAAv1wAAL9rAAC/bwAAv34AAL+NAAC/nAAAv6sAAL+6AAC/xgAAv9gAAL/nAAC/9gAAwAUAAMAUAADAIwAAwDIAAMBBAADARAAAwFMAAMBiAADAcQAAwIYAAMCHAADAjwAAwJsAAMCvAADAvgAAwM0AAMDcAADA4AAAwO8AAMD+AADBDQAAwRwAAMErAADBNwAAwUkAAMFYAADBZwAAwXYAAMGFAADBlAAAwaMAAMGyAADBxwAAwcgAAMHQAADB3AAAwfAAAMH/AADCDgAAwh0AAMIhAADCMAAAwj8AAMJOAADCXQAAwmwAAMJ4AADCigAAwpkAAMKoAADCtwAAwsYAAMLVAADC5AAAwvMAAMMIAADDCQAAwxEAAMMdAADDMQAAw0AAAMNPAADDXgAAw2IAAMNxAADDgAAAw48AAMOeAADDrQAAw7kAAMPLAADD2gAAw+kAAMP4AADEBwAAxBYAAMQlAADEJgAAxDUAAMRKAADESwAAxFMAAMRfAADEcwAAxIIAAMSRAADEoAAAxKQAAMSzAADEwgAAxNEAAMTgAADE7wAAxPsAAMUNAADFHAAAxSsAAMU6AADFSQAAxWMAAMVkAADFagAAxXYAAMWMAADFmwAAxZ4AAMWtAADFvAAAxb8AAMXOAADF3QAAxeAAAMXvAADF/gAAxgIAAMYRAADGIAAAxiEAAMYzAADGNAAAxjUAAMY2AADGNwAAxjgAAMY5AADGTgAAxk8AAMZXAADGYwAAxncAAMaGAADGlQAAxqQAAMaoAADGtwAAxsYAAMbVAADG5AAAxvMAAMb/AADHEQAAxyAAAMcvAADHPgAAx00AAMdcAADHawAAx3oAAMePAADHkAAAx5gAAMekAADHuAAAx8cAAMfWAADH5QAAx+kAAMf4AADIBwAAyBYAAMglAADINAAAyEAAAMhSAADIYQAAyHAAAMh/AADIjgAAyJ0AAMisAADIrQAAyLwAAMjRAADI0gAAyNoAAMjmAADI+gAAyQkAAMkYAADJJwAAySsAAMk6AADJSQAAyVgAAMlnAADJdgAAyYIAAMmUAADJowAAybIAAMnBAADJ0AAAyd8AAMnuAADJ/QAAyhIAAMoTAADKGwAAyicAAMo7AADKSgAAylkAAMpoAADKbAAAynsAAMqKAADKmQAAyqgAAMq3AADKwwAAytUAAMrkAADK8wAAywIAAMsRAADLIAAAyy8AAMs+AADLUwAAy1QAAMtcAADLaAAAy3wAAMuLAADLmgAAy6kAAMutAADLvAAAy8sAAMvaAADL6QAAy/gAAMwEAADMFgAAzCUAAMw0AADMQwAAzFIAAMxhAADMcAAAzH8AAMyUAADMlQAAzJ0AAMypAADMvQAAzMwAAMzbAADM6gAAzO4AAMz9AADNDAAAzRsAAM0qAADNOQAAzUUAAM1XAADNZgAAzXUAAM2EAADNkwAAzaIAAM2xAADNwAAAzdUAAM3WAADN3gAAzeoAAM3+AADODQAAzhwAAM4rAADOLwAAzj4AAM5NAADOXAAAzmsAAM56AADOhgAAzpgAAM6nAADOtgAAzsUAAM7UAADO4wAAzvIAAM8BAADPFgAAzxcAAM8fAADPKwAAzz8AAM9OAADPXQAAz2wAAM9wAADPfwAAz44AAM+dAADPrAAAz7sAAM/HAADP2QAAz+gAAM/3AADQBgAA0BUAANAkAADQMwAA0EIAANBFAADQVAAA0GMAANByAADQhwAA0IgAANCQAADQnAAA0LAAANC/AADQzgAA0N0AANDhAADQ8AAA0P8AANEOAADRHQAA0SwAANE4AADRSgAA0VkAANFoAADRdwAA0YYAANGVAADRpAAA0aUAANG0AADRyQAA0coAANHSAADR3gAA0fIAANIBAADSEAAA0h8AANIjAADSMgAA0kEAANJQAADSXwAA0m4AANJ6AADSjAAA0psAANKqAADSuQAA0sgAANLXAADS5gAA0vUAANMKAADTCwAA0xMAANMfAADTMwAA00IAANNRAADTYAAA02QAANNzAADTggAA05EAANOgAADTrwAA07sAANPNAADT3AAA0+sAANP6AADUCQAA1BgAANQnAADUNgAA1EsAANRMAADUVAAA1GAAANR0AADUgwAA1JIAANShAADUpQAA1LQAANTDAADU0gAA1OEAANTwAADU/AAA1Q4AANUdAADVLAAA1TsAANVKAADVZAAA1WUAANVrAADVdwAA1Y0AANWcAADVnwAA1a4AANW9AADVwAAA1c8AANXeAADV4QAA1fAAANX/AADWAwAA1hIAANYhAADWIgAA1ioAANYrAADWLAAA1kEAANZCAADWSgAA1lYAANZqAADWeQAA1ogAANaXAADWmwAA1qoAANa5AADWyAAA1tcAANbmAADW8gAA1wQAANcTAADXIgAA1zEAANdAAADXTwAA114AANdfAADXbgAA14MAANeEAADXjAAA15gAANesAADXuwAA18oAANfZAADX3QAA1+wAANf7AADYCgAA2BkAANgoAADYNAAA2EYAANhVAADYZAAA2HMAANiCAADYkQAA2KAAANivAADYsgAA2MEAANjQAADY3wAA2PQAANj1AADY/QAA2QkAANkdAADZLAAA2TsAANlKAADZTgAA2V0AANlsAADZewAA2YoAANmZAADZpQAA2bcAANnGAADZ1QAA2eQAANnzAADaDQAA2g4AANoUAADaIAAA2jYAANpFAADaSAAA2lcAANpmAADaagAA2m8AANpwAADacQAA2oAAANqPAADakgAA2qEAANqwAADatAAA2sMAANrSAADa0wAA2vUAANr2AADa9wAA2vgAANr5AADa+gAA2vsAANr8AADa/QAA2v4AANr/AADbAAAA2wEAANsCAADbAwAA2xgAANsZAADbIQAA2y0AANtBAADbUAAA218AANtuAADbcgAA24EAANuQAADbnwAA264AANu9AADbyQAA29sAANvqAADb+QAA3AgAANwXAADcJgAA3DUAANxEAADcWQAA3FoAANxiAADcbgAA3IIAANyRAADcoAAA3K8AANyzAADcwgAA3NEAANzgAADc7wAA3P4AAN0KAADdHAAA3SsAAN06AADdSQAA3VgAAN1nAADddgAA3YUAAN2aAADdmwAA3aMAAN2vAADdwwAA3dIAAN3hAADd8AAA3fQAAN4DAADeEgAA3iEAAN4wAADePwAA3ksAAN5dAADebAAA3nsAAN6KAADemQAA3qgAAN63AADexgAA3tsAAN7cAADe5AAA3vAAAN8EAADfEwAA3yIAAN8xAADfNQAA30QAAN9TAADfYgAA33EAAN+AAADfjAAA354AAN+tAADfvAAA38sAAN/aAADf6QAA3/gAAOAHAADgHAAA4B0AAOAlAADgMQAA4EUAAOBUAADgYwAA4HIAAOB2AADghQAA4JQAAOCjAADgsgAA4MEAAODNAADg3wAA4O4AAOD9AADhDAAA4RsAAOEqAADhOQAA4UgAAOFdAADhXgAA4WYAAOFyAADhhgAA4ZUAAOGkAADhswAA4bcAAOHGAADh1QAA4eQAAOHzAADiAgAA4g4AAOIgAADiLwAA4j4AAOJNAADiXAAA4msAAOJ6AADiiQAA4p4AAOKfAADipwAA4rMAAOLHAADi1gAA4uUAAOL0AADi+AAA4wcAAOMWAADjJQAA4zQAAONDAADjTwAA42EAAONwAADjfwAA444AAOOdAADjrAAA47sAAOPKAADj3wAA4+AAAOPoAADj9AAA5AgAAOQXAADkJgAA5DUAAOQ5AADkSAAA5FcAAORmAADkdQAA5IQAAOSQAADkogAA5LEAAOTAAADkzwAA5N4AAOTtAADk/AAA5QsAAOUgAADlIQAA5SkAAOU1AADlSQAA5VgAAOVnAADldgAA5XoAAOWJAADlmAAA5acAAOW2AADlxQAA5dEAAOXjAADl8gAA5gEAAOYQAADmHwAA5i4AAOY9AADmTAAA5mEAAOZiAADmagAA5nYAAOaKAADmmQAA5qgAAOa3AADmuwAA5soAAObZAADm6AAA5vcAAOcGAADnEgAA5yQAAOczAADnQgAA51EAAOdgAADnbwAA534AAOeNAADnogAA56MAAOerAADntwAA58sAAOfaAADn6QAA5/gAAOf8AADoCwAA6BoAAOgpAADoOAAA6EcAAOhTAADoZQAA6HQAAOiDAADokgAA6KEAAOi7AADovAAA6MIAAOjOAADo5AAA6PMAAOj2AADpBQAA6RQAAOkXAADpJgAA6TUAAOk4AADpRwAA6VYAAOlaAADpaQAA6XgAAOl5AADphQAA6YYAAOmHAADpiAAA6YkAAOmeAADpnwAA6acAAOm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iAAEMsQABDMAAAQzPAAEM3gABDOoAAQz8AAENCwABDRoAAQ0pAAENOAABDUcAAQ1WAAENZQABDXoAAQ17AAENgwABDY8AAQ2jAAENsgABDcEAAQ3QAAEN1AABDeMAAQ3yAAEOAQABDhAAAQ4fAAEOKwABDj0AAQ5MAAEOWwABDmoAAQ55AAEOiAABDpcAAQ6mAAEOuwABDrwAAQ7EAAEO0AABDuQAAQ7zAAEPAgABDxEAAQ8VAAEPJAABDzMAAQ9CAAEPUQABD2AAAQ9sAAEPfgABD40AAQ+cAAEPqwABD7oAAQ/JAAEP2AABD+cAAQ/8AAEP/QABEAUAARARAAEQJQABEDQAARBDAAEQUgABEFYAARBlAAEQdAABEIMAARCSAAEQoQABEK0AARC/AAEQzgABEN0AARDsAAEQ+wABEQoAAREZAAERKAABET0AARE+AAERRgABEVIAARFmAAERdQABEYQAARGTAAERlwABEaYAARG1AAERxAABEdMAARHiAAER7gABEgAAARIPAAESHgABEi0AARI8AAESSwABEloAARJpAAESfgABEn8AARKHAAESkwABEqcAARK2AAESxQABEtQAARLYAAES5wABEvYAARMFAAETFAABEyMAARMvAAETQQABE1AAARNfAAETbgABE30AAROMAAETmwABE6oAARO/AAETwAABE8gAARPUAAET6AABE/cAARQGAAEUFQABFBkAARQoAAEUNwABFEYAARRVAAEUZAABFHAAARSCAAEUkQABFKAAARSvAAEUvgABFM0AARTcAAEU3QABFOwAARTvAAEU/gABFQ0AARUcAAEVMQABFTIAARU6AAEVRgABFVoAARVpAAEVeAABFYcAARWLAAEVmgABFakAARW4AAEVxwABFdYAARXiAAEV9AABFgMAARYSAAEWIQABFjAAARY/AAEWTgABFl0AARZyAAEWcwABFnsAARaHAAEWmwABFqoAARa5AAEWyAABFswAARbbAAEW6gABFvkAARcIAAEXFwABFyMAARc1AAEXRAABF1MAARdiAAEXcQABF4AAARePAAEXngABF7MAARe0AAEXvAABF8gAARfcAAEX6wABF/oAARgJAAEYDQABGBwAARgrAAEYOgABGEkAARhYAAEYZAABGHYAARiFAAEYlAABGKMAARiyAAEYwQABGNAAARjfAAEY9AABGPUAARj9AAEZCQABGR0AARksAAEZOwABGUoAARlOAAEZXQABGWwAARl7AAEZigABGZkAARmlAAEZtwABGcYAARnVAAEZ5AABGfMAARoCAAEaEQABGiAAARojAAEaMgABGkEAARpQAAEaZQABGmYAARpuAAEaegABGo4AARqdAAEarAABGrsAARq/AAEazgABGt0AARrsAAEa+wABGwoAARsWAAEbKAABGzcAARtGAAEbVQABG2QAARtzAAEbggABG5EAARuUAAEbrgABG68AARu1AAEbwQABG9cAARvmAAEb6QABG/gAARwHAAEcCwABHBAAARwRAAEcEgABHCEAARwwAAEcMwABHEIAARxRAAEcVQABHGQAARxzAAEcdAABHH4AARx/AAEcgAABHIEAARyWAAEclwABHJ8AARyrAAEcvwABHM4AARzdAAEc7AABHPAAARz/AAEdDgABHR0AAR0sAAEdOwABHUcAAR1ZAAEdaAABHXcAAR2GAAEdlQABHaQAAR2zAAEdwgABHdcAAR3YAAEd4AABHewAAR4AAAEeDwABHh4AAR4tAAEeMQABHkAAAR5PAAEeXgABHm0AAR58AAEeiAABHpoAAR6pAAEeuAABHscAAR7WAAEe5QABHvQAAR8DAAEfGAABHxkAAR8hAAEfLQABH0EAAR9QAAEfXwABH24AAR9yAAEfgQABH5AAAR+fAAEfrgABH70AAR/JAAEf2wABH+oAAR/5AAEgCAABIBcAASAxAAEgMgABIDgAASBEAAEgWgABIGkAASBsAAEgewABIIoAASCNAAEgnAABIKsAASCuAAEgvQABIMwAASDQAAEg3wABIO4AASDvAAEhBQABIQYAASEHAAEhCAABIQkAASEKAAEhCwABIQwAASENAAEhIgABISMAASErAAEhNwABIUsAASFaAAEhaQABIXgAASF8AAEhiwABIZoAASGpAAEhuAABIccAASHTAAEh5QABIfQAASIDAAEiEgABIiEAASIwAAEiPwABIk4AASJjAAEiZAABImwAASJ4AAEijAABIpsAASKqAAEiuQABIr0AASLMAAEi2wABIuoAASL5AAEjCAABIxQAASMmAAEjNQABI0QAASNTAAEjYgABI3EAASOAAAEjgQABI5AAASOlAAEjpgABI64AASO6AAEjzgABI90AASPsAAEj+wABI/8AASQOAAEkHQABJCwAASQ7AAEkSgABJFYAASRoAAEkdwABJIYAASSVAAEkpAABJLMAASTCAAEk0QABJOYAASTnAAEk7wABJPsAASUPAAElHgABJS0AASU8AAElQAABJU8AASVeAAElbQABJXwAASWLAAEllwABJakAASW4AAElxwABJdYAASXlAAEl9AABJgMAASYEAAEmEwABJigAASYpAAEmMQABJj0AASZRAAEmYAABJm8AASZ+AAEmggABJpEAASagAAEmrwABJr4AASbNAAEm2QABJusAASb6AAEnCQABJxgAAScnAAEnQQABJ0IAASdIAAEnVAABJ2oAASd5AAEnfAABJ4sAASeaAAEnnQABJ6wAASe7AAEnvgABJ80AASfcAAEn4AABJ+8AASf+AAEn/wABKAkAASgKAAEoCwABKAwAASghAAEoIgABKCoAASg2AAEoSgABKFkAAShoAAEodwABKHsAASiKAAEomQABKKgAASi3AAEoxgABKNIAASjkAAEo8wABKQIAASkRAAEpIAABKS8AASk+AAEpPwABKU4AASljAAEpZAABKWwAASl4AAEpjAABKZsAASmqAAEpuQABKb0AASnMAAEp2wABKeoAASn5AAEqCAABKhQAASomAAEqNQABKkQAASpTAAEqYgABKnEAASqAAAEqgQABKpAAASqlAAEqpgABKq4AASq6AAEqzgABKt0AASrsAAEq+wABKv8AASsOAAErHQABKywAASs7AAErSgABK1YAAStoAAErdwABK4YAASuVAAErpAABK7MAASvCAAEr0QABK9QAASvjAAEr8gABLAEAASwWAAEsFwABLB8AASwrAAEsPwABLE4AASxdAAEsbAABLHAAASx/AAEsjgABLJ0AASysAAEsuwABLMcAASzZAAEs6AABLPcAAS0GAAEtFQABLS8AAS0wAAEtNgABLUIAAS1YAAEtZwABLWoAAS15AAEtegABLYkAAS2MAAEtmwABLaoAAS2tAAEtvAABLcsAAS3PAAEt3gABLe0AAS3uAAEt+gABLfsAAS38AAEt/QABLf4AAS4TAAEuFAABLhwAAS4oAAEuPAABLksAAS5aAAEuaQABLm0AAS58AAEuiwABLpoAAS6pAAEuuAABLsQAAS7WAAEu5QABLvQAAS8DAAEvEgABLyEAAS8wAAEvMQABL0AAAS9VAAEvVgABL14AAS9qAAEvfgABL40AAS+cAAEvqwABL68AAS++AAEvzQABL9wAAS/rAAEv+gABMAYAATAYAAEwJwABMDYAATBFAAEwVAABMGMAATByAAEwcwABMIIAATCXAAEwmAABMKAAATCsAAEwwAABMM8AATDeAAEw7QABMPEAATEAAAExDwABMR4AATEtAAExPAABMUgAATFaAAExaQABMXgAATGHAAExlgABMaUAATG0AAExtQABMcQAATHZAAEx2gABMeIAATHuAAEyAgABMhEAATIgAAEyLwABMjMAATJCAAEyUQABMmAAATJvAAEyfgABMooAATKcAAEyqwABMroAATLJAAEy2AABMucAATL2AAEzBQABMwgAATMXAAEzJgABMzUAATNKAAEzSwABM1MAATNfAAEzcwABM4IAATORAAEzoAABM6QAATOzAAEzwgABM9EAATPgAAEz7wABM/sAATQNAAE0HAABNCsAATQ6AAE0SQABNFgAATRnAAE0dgABNIsAATSMAAE0lAABNKAAATS0AAE0wwABNNIAATThAAE05QABNPQAATUDAAE1EgABNSEAATUwAAE1PAABNU4AATVdAAE1bAABNXsAATWKAAE1pAABNaUAATWrAAE1twABNc0AATXcAAE13wABNe4AATX9AAE2AAABNg8AATYeAAE2IQABNjAAATY/AAE2QwABNlIAATZhAAE2YgABNm4AATZvAAE2cAABNnEAATZyAAE2hwABNogAATaQAAE2nAABNrAAATa/AAE2zgABNt0AATbhAAE28AABNv8AATcOAAE3HQABNywAATc4AAE3SgABN1kAATdoAAE3dwABN4YAATeVAAE3pAABN7MAATfIAAE3yQABN9EAATfdAAE38QABOAAAATgPAAE4HgABOCIAATgxAAE4QAABOE8AATheAAE4bQABOHkAATiLAAE4mgABOKkAATi4AAE4xwABONYAATjlAAE49AABOQkAATkKAAE5EgABOR4AATkyAAE5QQABOVAAATlfAAE5YwABOXIAATmBAAE5kAABOZ8AATmuAAE5ugABOcwAATnbAAE56gABOfkAAToIAAE6FwABOiYAATonAAE6NgABOksAATpMAAE6VAABOmAAATp0AAE6gwABOpIAATqhAAE6pQABOrQAATr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2AAFcOgABXEkAAVxYAAFcZwABXHYAAVyFAAFckQABXKMAAVyyAAFcwQABXNAAAVzfAAFc+QABXPoAAV0AAAFdDAABXSIAAV0xAAFdNAABXUMAAV1SAAFdVgABXVoAAV1bAAFdagABXXkAAV18AAFdiwABXZoAAV2eAAFdrQABXbwAAV29AAFdyQABXcoAAV3LAAFd4AABXeEAAV3pAAFd9QABXgkAAV4YAAFeJwABXjYAAV46AAFeSQABXlgAAV5nAAFedgABXoUAAV6RAAFeowABXrIAAV7BAAFe0AABXt8AAV7uAAFe/QABXwwAAV8hAAFfIgABXyoAAV82AAFfSgABX1kAAV9oAAFfdwABX3sAAV+KAAFfmQABX6gAAV+3AAFfxgABX9IAAV/kAAFf8wABYAIAAWARAAFgIAABYC8AAWA+AAFgTQABYGIAAWBjAAFgawABYHcAAWCLAAFgmgABYKkAAWC4AAFgvAABYMsAAWDaAAFg6QABYPgAAWEHAAFhEwABYSUAAWE0AAFhQwABYVIAAWFhAAFhcAABYX8AAWGOAAFhowABYaQAAWGsAAFhuAABYcwAAWHbAAFh6gABYfkAAWH9AAFiDAABYhsAAWIqAAFiOQABYkgAAWJUAAFiZgABYnUAAWKEAAFikwABYqIAAWKxAAFiwAABYs8AAWLSAAFi4QABYvAAAWL/AAFjFAABYxUAAWMdAAFjKQABYz0AAWNMAAFjWwABY2oAAWNuAAFjfQABY4wAAWObAAFjqgABY7kAAWPFAAFj1wABY+YAAWP1AAFkBAABZBMAAWQtAAFkLgABZDQAAWRAAAFkVgABZGUAAWRoAAFkdwABZIYAAWSKAAFkjwABZJAAAWSRAAFkoAABZK8AAWSyAAFkwQABZNAAAWTUAAFk4wABZPIAAWTzAAFlFQABZRYAAWUXAAFlGAABZRkAAWUaAAFlGwABZRwAAWUdAAFlHgABZR8AAWUgAAFlIQABZSIAAWUjAAFlOAABZTkAAWVBAAFlTQABZWEAAWVwAAFlfwABZY4AAWWSAAFloQABZbAAAWW/AAFlzgABZd0AAWXpAAFl+wABZgoAAWYZAAFmKAABZjcAAWZGAAFmVQABZmQAAWZ5AAFmegABZoIAAWaOAAFmogABZrEAAWbAAAFmzwABZtMAAWbiAAFm8QABZwAAAWc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pAAGVeAABlYcAAZWLAAGVmgABlakAAZW4AAGVxwABldYAAZXiAAGV9AABlgMAAZYSAAGWIQABljAAAZY/AAGWTgABll0AAZZyAAGWcwABlnsAAZaHAAGWmwABlqoAAZa5AAGWyAABlswAAZbbAAGW6gABlvkAAZcIAAGXFwABlyMAAZc1AAGXRAABl1MAAZdiAAGXcQABl4AAAZePAAGXngABl7MAAZe0AAGXvAABl8gAAZfcAAGX6wABl/oAAZgJAAGYDQABmBwAAZgrAAGYOgABmEkAAZhYAAGYZAABmHYAAZiFAAGYlAABmKMAAZiyAAGYwQABmNAAAZjfAAGY9AABmPUAAZj9AAGZCQABmR0AAZksAAGZOwABmUoAAZlOAAGZXQABmWwAAZl7AAGZigABmZkAAZmlAAGZtwABmcYAAZnVAAGZ5AABmfMAAZoCAAGaEQABmiAAAZo1AAGaNgABmj4AAZpKAAGaXgABmm0AAZp8AAGaiwABmo8AAZqeAAGarQABmrwAAZrLAAGa2gABmuYAAZr4AAGbBwABmxYAAZslAAGbNAABm0MAAZtSAAGbYQABm3YAAZt3AAGbfwABm4sAAZufAAGbrgABm70AAZvMAAGb0AABm98AAZvuAAGb/QABnAwAAZwbAAGcJwABnDkAAZxIAAGcVwABnGYAAZx1AAGchAABnJMAAZyiAAGcpQABnLQAAZzDAAGc0gABnOcAAZzoAAGc8AABnPwAAZ0QAAGdHwABnS4AAZ09AAGdQQABnVAAAZ1fAAGdbgABnX0AAZ2MAAGdmAABnaoAAZ25AAGdyAABndcAAZ3mAAGd9QABngQAAZ4TAAGeKAABnikAAZ4xAAGePQABnlEAAZ5gAAGebwABnn4AAZ6CAAGekQABnqAAAZ6vAAGevgABns0AAZ7ZAAGe6wABnvoAAZ8JAAGfGAABnycAAZ82AAGfRQABn1QAAZ9pAAGfagABn3IAAZ9+AAGfkgABn6EAAZ+wAAGfvwABn8MAAZ/SAAGf4QABn/AAAZ//AAGgDgABoBoAAaAsAAGgOwABoEoAAaBZAAGgaAABoHcAAaCGAAGglQABoKoAAaCrAAGgswABoL8AAaDTAAGg4gABoPEAAaEAAAGhBAABoRMAAaEiAAGhMQABoUAAAaFPAAGhWwABoW0AAaF8AAGhiwABoZoAAaGpAAGhuAABoccAAaHWAAGh6wABoewAAaH0AAGiAAABohQAAaIjAAGiMgABokEAAaJFAAGiVAABomMAAaJyAAGigQABopAAAaKcAAGirgABor0AAaLMAAGi2wABouoAAaL5AAGjCAABoxcAAaMsAAGjLQABozUAAaNBAAGjVQABo2QAAaNzAAGjggABo4YAAaOVAAGjpAABo7MAAaPCAAGj0QABo90AAaPvAAGj/gABpA0AAaQcAAGkKwABpDoAAaRJAAGkWAABpFsAAaR1AAGkdgABpHwAAaSIAAGkngABpK0AAaSwAAGkvwABpM4AAaTSAAGk1wABpNgAAaTZAAGk6AABpPcAAaT6AAGlCQABpRgAAaUcAAGlKwABpToAAaU7AAGlQwABpUQAAaVZAAGlWgABpWIAAaVuAAGlggABpZEAAaWgAAGlrwABpbMAAaXCAAGl0QABpeAAAaXvAAGl/gABpgoAAaYcAAGmKwABpjoAAaZJAAGmWAABpmcAAaZ2AAGmhQABppoAAaabAAGmowABpq8AAabDAAGm0gABpuEAAabwAAGm9AABpwMAAacSAAGnIQABpzAAAac/AAGnSwABp10AAadsAAGnewABp4oAAaeZAAGnqAABp7cAAafGAAGnyQABp+MAAafkAAGn6gABp/YAAagMAAGoGwABqB4AAagtAAGoPAABqEAAAahFAAGoRgABqEcAAahWAAGoZQABqGgAAah3AAGohgABqIoAAaiZAAGoqAABqKkAAai1AAGotgABqLcAAai4AAGouQABqM4AAajPAAGo1wABqOMAAaj3AAGpBgABqRUAAakkAAGpKAABqTcAAalGAAGpVQABqWQAAalzAAGpfwABqZEAAamgAAGprwABqb4AAanNAAGp3AABqesAAan6AAGqDwABqhAAAaoYAAGqJAABqjgAAapHAAGqVgABqmUAAappAAGqeAABqocAAaqWAAGqpQABqrQAAarAAAGq0gABquEAAarwAAGq/wABqw4AAasdAAGrLAABqzsAAatQAAGrUQABq1kAAatlAAGreQABq4gAAauXAAGrpgABq6oAAau5AAGryAABq9cAAavmAAGr9QABrAEAAawTAAGsIgABrDEAAaxAAAGsTwABrF4AAaxtAAGsfAABrJEAAaySAAGsmgABrKYAAay6AAGsyQABrNgAAaz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OAAHDUgABw2EAAcNwAAHDcQABw38AAcOAAAHDgQABw4IAAcODAAHDhAABw5kAAcOaAAHDogABw64AAcPCAAHD0QABw+AAAcPvAAHD8wABxAIAAcQRAAHEIAABxC8AAcQ+AAHESgABxFwAAcRrAAHEegABxIkAAcSYAAHEpwABxLYAAcTFAAHE2gABxNsAAcTjAAHE7wABxQMAAcUSAAHFIQABxTAAAcU0AAHFQwABxVIAAcVhAAHFcAABxX8AAcWLAAHFnQABxawAAcW7AAHFygABxdkAAcXoAAHF9wABxfgAAcYHAAHGHAABxh0AAcYlAAHGMQABxkUAAcZUAAHGYwABxnIAAcZ2AAHGhQABxpQAAcajAAHGsgABxsEAAcbNAAHG3wABxu4AAcb9AAHHDAABxxsAAccqAAHHOQABx0gAAcddAAHHXgABx2YAAcdyAAHHhgABx5UAAcekAAHHswABx7cAAcfGAAHH1QABx+QAAcfzAAHIAgAByA4AAcggAAHILwAByD4AAchNAAHIXAAByGsAAch6AAHIiQAByJ4AAcifAAHIpwAByLMAAcjHAAHI1gAByOUAAcj0AAHI+AAByQcAAckWAAHJJQAByTQAAclDAAHJTwAByWEAAclwAAHJfwAByY4AAcmdAAHJrAABybsAAcnKAAHJzQAByecAAcnoAAHJ7gAByfoAAcoQAAHKHwAByiIAAcoxAAHKQAABykQAAcpJAAHKSgABylkAAcpoAAHKawABynoAAcqJAAHKjQABypwAAcqrAAHKrAAByrQAAcq1AAHKygAByssAAcrTAAHK3wAByvMAAcsCAAHLEQAByyAAAcskAAHLMwABy0IAActRAAHLYAABy28AAct7AAHLjQABy5wAAcurAAHLugABy8kAAcvYAAHL5wABy/YAAcwLAAHMDAABzBQAAcwgAAHMNAABzEMAAcxSAAHMYQABzGUAAcx0AAHMgwABzJIAAcyhAAHMsAABzLwAAczOAAHM3QABzOwAAcz7AAHNCgABzRkAAc0oAAHNNwABzToAAc1UAAHNVQABzVsAAc1nAAHNfQABzYwAAc2PAAHNngABza0AAc2xAAHNtgABzbcAAc24AAHNxwABzdYAAc3ZAAHN6AABzfcAAc37AAHOCgABzhkAAc4aAAHOMgABzjMAAc40AAHONQABzjYAAc4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BAfiBBACBGzuBE/qBDpuBI92BDQOBH0SBEM2BJOeBC3GBA4SBDZOAY18QE09idk9ibGl2aW91c0NoYW5uZWxcSW5ib3hNZXNzYWdlXUNvbnRhY3REZXZpY2VfEC5DaGFubmVsQ3JlYXRpb25XaXRoT3duZWREZXZpY2VQcm90b2NvbEluc3RhbmNlXxAWSWRlbnRpdHlTZXJ2ZXJVc2VyRGF0YV8QFU91dGJveEF0dGFjaG1lbnRDaHVua18QF1BlbmRpbmdEZWxldGVGcm9tU2VydmVyW0tleU1hdGVyaWFsVkJhY2t1cF8QFFBlcnNpc3RlZFRydXN0T3JpZ2luXxASUGVuZGluZ0dyb3VwTWVtYmVyXxAXS2V5Y2xvYWtSZXZva2VkSWRlbnRpdHlfEBxMaW5rQmV0d2VlblByb3RvY29sSW5zdGFuY2VzXxAVR3JvdXBWMlNlcnZlclVzZXJEYXRhXxAcQ29udGFjdEdyb3VwRGV0YWlsc1B1Ymxpc2hlZF8QEUNvbnRhY3RHcm91cE93bmVkXxASQ29udGFjdEdyb3VwSm9pbmVkXxAkVHJ1c3RFc3RhYmxpc2htZW50Q29tbWl0bWVudFJlY2VpdmVkXxAURGVsZXRlZE91dGJveE1lc3NhZ2VfEBBQcm90b2NvbEluc3RhbmNlXktleWNsb2FrU2VydmVyXxAbQ29udGFjdEdyb3VwVjJQZW5kaW5nTWVtYmVyXxAtQ29udGFjdE93bmVkSWRlbnRpdHlEZWxldGlvblNpZ25hdHVyZVJlY2VpdmVkXxAaQ29udGFjdEdyb3VwRGV0YWlsc1RydXN0ZWRfEB1Db250YWN0SWRlbnRpdHlEZXRhaWxzVHJ1c3RlZF8QGEdyb3VwVjJTaWduYXR1cmVSZWNlaXZlZF8QElBlbmRpbmdTZXJ2ZXJRdWVyeV8QFkluYm94QXR0YWNobWVudFNlc3Npb25fEA9DYWNoZWRXZWxsS25vd25bT3duZWREZXZpY2VeU2VydmVyVXNlckRhdGFfEDBDaGFubmVsQ3JlYXRpb25XaXRoQ29udGFjdERldmljZVByb3RvY29sSW5zdGFuY2VfEA9Db250YWN0SWRlbnRpdHlfEBNHcm91cFNlcnZlclVzZXJEYXRhXENvbnRhY3RHcm91cF1PdXRib3hNZXNzYWdlXkNvbnRhY3RHcm91cFYyXU1lc3NhZ2VIZWFkZXJfEBVQZXJzaXN0ZWRFbmdpbmVEaWFsb2dfEBRDb250YWN0R3JvdXBWMk1lbWJlcl8QEE91dGJveEF0dGFjaG1lbnRfEBVDb250YWN0R3JvdXBWMkRldGFpbHNdU2VydmVyU2Vzc2lvbl8QMlByb3RvY29sSW5zdGFuY2VXYWl0aW5nRm9yQ29udGFjdFVwZ3JhZGVUb09uZVRvT25lXxAfQ29udGFjdElkZW50aXR5RGV0YWlsc1B1Ymxpc2hlZF8QG011dHVhbFNjYW5TaWduYXR1cmVSZWNlaXZlZFlQcm92aXNpb25fEBRJbmJveEF0dGFjaG1lbnRDaHVua18QF091dGJveEF0dGFjaG1lbnRTZXNzaW9uXxAWQ29udGFjdElkZW50aXR5RGV0YWlsc18QHU93bmVkSWRlbnRpdHlEZXRhaWxzUHVibGlzaGVkXxAPUmVjZWl2ZWRNZXNzYWdlXxATQ29udGFjdEdyb3VwRGV0YWlsc1lCYWNrdXBLZXlfEBdPd25lZElkZW50aXR5TWFza2luZ1VJRF8QJENoYW5uZWxDcmVhdGlvblBpbmdTaWduYXR1cmVSZWNlaXZlZF1Pd25lZElkZW50aXR5XxAPSW5ib3hBdHRhY2htZW50XxAZQ29udGFjdEdyb3VwRGV0YWlsc0xhdGVzdN8QEAAAAPEAAADyAAAA8wAAAPQAAAAhAAAA9QAAAPYAAAAjAAAA9wAAAPgAAAAOAAAAJQAAAPkAAAD6AAAAKAAAAPsAAAD8AAAA/QAAACkAAAApAAAAFAAAAQEAAAECAAAAMQAAACkAAAD8AAABBQAAAD0AAAD8AAABCAAAAQkAAAEKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gEOAa4AEgASAAoBEgQMRgASAQ4EDE4AGgEOBAzKAQggS+EA4gVdvcmRlcmVk0wAAADoAAAA7AAAADgAAAQ4AAAEQAAAAtKEAAAEPgEWhAAABEYBGgGNeWERfUFN0ZXJlb3R5cGXZAAAAIQAAACUAAAEVAAAADgAAACgAAAEWAAAAIwAAAPsAAAEXAAAAeQAAAQ8AAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAAEfXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgEGARYBDgGqAAIAECIBH0wAAADoAAAA7AAAADgAAASEAAAErAAAAtKkAAAEiAAABIwAAASQAAAElAAABJgAAAScAAAEoAAABKQAAASqASIBJgEqAS4BMgE2AToBPgFCpAAABLAAAAS0AAAEuAAABLwAAATAAAAExAAABMgAAATMAAAE0gFGAVYBWgFyAXYBfgGGAZIBogGNfEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGVhEUE1VbmlxdWVuZXNzQ29uc3RyYWludHNfEBpYRF9QU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QGVhEX1BTS19mZXRjaFJlcXVlc3RzQXJyYXlfEBFYRF9QU0tfaXNBYnN0cmFjdF8QD1hEX1BTS191c2VySW5mb18QE1hEX1BTS19jbGFzc01hcHBpbmdfEBZYRF9QU0tfZW50aXR5Q2xhc3NOYW1l3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAUsAAAAXAAABEQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASIAAAEKAAABCgAAABcAAAEKVV90eXBlWF9kZWZhdWx0XF9hc3NvY2lhdGlvbltfaXNSZWFkT25seVlfaXNTdGF0aWNZX2lzVW5pcXVlWl9pc0Rlcml2ZWRaX2lzT3JkZXJlZFxfaXNDb21wb3NpdGVXX2lzTGVhZoAAgFKAAIBGCAgICIBUgEgICIAACNIAAAA7AAAADgAAAVkAAAFaoIBT0gAAAVwAAAFdAAABXgAAAV9aJGNsYXNzbmFtZVgkY2xhc3Nlc15OU011dGFibGVBcnJheaMAAAFeAAABYAAAAWFXTlNBcnJheVhOU09iamVjdNIAAAFcAAABXQAAAWMAAAFkXxAQWERVTUxQcm9wZXJ0eUltcKQAAAFlAAABZgAAAWcAAAFhXxAQWERVTUxQcm9wZXJ0eUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAABEQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASMAAAEKAAABCgAAABcAAAEKgACAAIAAgEYICAgIgFSASQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAXkAAAAXAAABEQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAASQAAAEKAAABCgAAABcAAAEKgACAV4AAgEYICAgIgFSASggIgAAI0gAAADsAAAAOAAABhwAAAVqhAAABiIBYgFPSAAAAOwAAAA4AAAGLAAABWqMAAAGMAAABjQAAAY6AWYBagFuAU18QEGN1cnJlbnREZXZpY2VVaWRfEBRyZW1vdGVDcnlwdG9JZGVudGl0eV8QD3JlbW90ZURldmljZVVpZN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAAREAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAElAAABCgAAAQoAAAAXAAABCoAAgACAAIBGCAgICIBUgEsICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAGkAAAAFwAAAREAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEmAAABCgAAAQoAAAAXAAABCoAAgF6AAIBGCAgICIBUgEwICIAACNIAAAA7AAAADgAAAbIAAAFaoIBT3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAABEQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAScAAAEKAAABCgAAABcAAAEKgACAYIAAgEYICAgIgFSATQgIgAAICN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAHGAAAAFwAAAREAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEoAAABCgAAAQoAAAAXAAABCoAAgGKAAIBGCAgICIBUgE4ICIAACNMAAAA6AAAAOwAAAA4AAAHUAAAB1QAAALSgoIBj0gAAAVwAAAFdAAAB2AAAAdlfEBNOU011dGFibGVEaWN0aW9uYXJ5owAAAdgAAAHaAAABYVxOU0RpY3Rpb25hcnnfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAB3QAAABcAAAERAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAABKQAAAQoAAAEKAAAAFwAAAQqAAIBlgACARggICAiAVIBPCAiAAAjWAAAAJQAAAA4AAAAoAAAA+wAAACEAAAAjAAAB6wAAAewAAAAXAAABCgAAABcAAAAxgGaAZ4AACIAAXxAUWERHZW5lcmljUmVjb3JkQ2xhc3PSAAABXAAAAV0AAAHyAAAB811YRFVNTENsYXNzSW1wpgAAAfQAAAH1AAAB9gAAAfcAAAH4AAABYV1YRFVNTENsYXNzSW1wXxASWERVTUxDbGFzc2lmaWVySW1wXxARWERVTUxOYW1lc3BhY2VJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAH7AAAAFwAAAREAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAEqAAABCgAAAQoAAAAXAAABCoAAgGmAAIBGCAgICIBUgFAICIAACF8QE09idk9ibGl2aW91c0NoYW5uZWzSAAABXAAAAV0AAAIKAAACC18QElhEVU1MU3RlcmVvdHlwZUltcKcAAAIMAAACDQAAAg4AAAIPAAACEAAAAhEAAAFhXxASWERVTUxTdGVyZW90eXBlSW1wXVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w0wAAADoAAAA7AAAADgAAAhMAAAIjAAAAtK8QDwAAAhQAAAIVAAACFgAAAhcAAAIYAAACGQAAAhoAAAIbAAACHAAAAh0AAAIeAAACHwAAAiAAAAIhAAACIoBsgG2AboBvgHCAcYBygHOAdIB1gHaAd4B4gHmAeq8QDwAAAiQAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLAAAAi0AAAIuAAACLwAAAjAAAAIxAAACMoB7gKaAv4DYgO+BAQiBASCBATiBAVCBAWeBAX6BAZWBAayBAcOBAdqAY18QD3JlbW90ZURldmljZVVpZF8QEnNlZWRGb3JOZXh0U2VuZEtleV8QOG51bWJlck9mRGVjcnlwdGVkTWVzc2FnZXNTaW5jZUxhc3RGdWxsUmF0Y2hldFNlbnRNZXNzYWdlXxA2bnVtYmVyT2ZFbmNyeXB0ZWRNZXNzYWdlc0F0VGhlVGltZU9mVGhlTGFzdEZ1bGxSYXRjaGV0XxAlYUZ1bGxSYXRjaGV0T2ZUaGVTZW5kU2VlZElzSW5Qcm9ncmVzc18QJXRpbWVzdGFtcE9mTGFzdEZ1bGxSYXRjaGV0U2VudE1lc3NhZ2VfEBRyZW1vdGVDcnlwdG9JZGVudGl0eV8QEGN1cnJlbnREZXZpY2VVaWRfEBJjcnlwdG9TdWl0ZVZlcnNpb25fECJmdWxsUmF0Y2hldGluZ0NvdW50T2ZMYXN0UHJvdmlzaW9uXxAadGltZXN0YW1wT2ZMYXN0RnVsbFJhdGNoZXRbaXNDb25maXJtZWRfEBludW1iZXJPZkVuY3J5cHRlZE1lc3NhZ2VzXxA4bnVtYmVyT2ZFbmNyeXB0ZWRNZXNzYWdlc1NpbmNlTGFzdEZ1bGxSYXRjaGV0U2VudE1lc3NhZ2VacHJvdmlzaW9uc98QEgAAAUAAAAFBAAABQgAAAkQAAAAhAAABRAAAAUUAAAJFAAAAIwAAAUMAAAJGAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAAB5AAABCgAAAQoAAAJOAAAAMQAAAQoAAAD8AAABCgAAAlIAAAIUAAABCgAAAQoAAAJWAAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgEEICIB9CIBDCIClgGwICIB8CBJFQ6YF0wAAADoAAAA7AAAADgAAAloAAAJdAAAAtKIAAAJbAAACXIB+gH+iAAACXgAAAl+AgICTgGNfEBJYRF9QUHJvcFN0ZXJlb3R5cGVfEBJYRF9QQXR0X1N0ZXJlb3R5cGXZAAAAIQAAACUAAAJkAAAADgAAACgAAAJlAAAAIwAAAPsAAAJmAAACJAAAAlsAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAAJuXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgHuAfoBDgGqAAIAECICB0wAAADoAAAA7AAAADgAAAnAAAAJ5AAAAtKgAAAJxAAACcgAAAnMAAAJ0AAACdQAAAnYAAAJ3AAACeICCgIOAhICFgIaAh4CIgImoAAACegAAAnsAAAJ8AAACfQAAAn4AAAJ/AAACgAAAAoGAioCLgIyAjoCPgJCAkYCSgGNfEBtYRF9QUFNLX2lzU3RvcmVkSW5UcnV0aEZpbGVfEBtYRF9QUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBBYRF9QUFNLX3VzZXJJbmZvXxARWERfUFBTS19pc0luZGV4ZWRfEBJYRF9QUFNLX2lzT3B0aW9uYWxfEBpYRF9QUFNLX2lzU3BvdGxpZ2h0SW5kZXhlZF8QEVhEX1BQU0tfZWxlbWVudElEXxATWERfUFBTS19pc1RyYW5zaWVudN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAAl4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJxAAABCgAAAQoAAAAXAAABCoAAgGCAAICACAgICIBUgIIICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAAl4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJyAAABCgAAAQoAAAAXAAABCoAAgACAAICACAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAKrAAAAFwAAAl4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgI2AAICACAgICIBUgIQICIAACNMAAAA6AAAAOwAAAA4AAAK5AAACugAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAACXgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnQAAAEKAAABCgAAABcAAAEKgACAYIAAgIAICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAACXgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAYIAAgIAICAgIgFSAhggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAACXgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnYAAAEKAAABCgAAABcAAAEKgACAYIAAgIAICAgIgFSAhwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAACXgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAncAAAEKAAABCgAAABcAAAEKgACAAIAAgIAICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAACXgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgIAICAgIgFSAiQgIgAAI2QAAACEAAAAlAAADCAAAAA4AAAAoAAADCQAAACMAAAD7AAADCgAAAiQAAAJcAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAAADEl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYB7gH+AQ4BqgACABAiAlNMAAAA6AAAAOwAAAA4AAAMUAAADHAAAALSnAAADFQAAAxYAAAMXAAADGAAAAxkAAAMaAAADG4CVgJaAl4CYgJmAmoCbpwAAAx0AAAMeAAADHwAAAyAAAAMhAAADIgAAAyOAnICdgJ6An4ChgKKApIBjXxAdWERfUEF0dEtfZGVmYXVsdFZhbHVlQXNTdHJpbmdfEChYRF9QQXR0S19hbGxvd3NFeHRlcm5hbEJpbmFyeURhdGFTdG9yYWdlXxAXWERfUEF0dEtfbWluVmFsdWVTdHJpbmdfEBZYRF9QQXR0S19hdHRyaWJ1dGVUeXBlXxAXWERfUEF0dEtfbWF4VmFsdWVTdHJpbmdfEB1YRF9QQXR0S192YWx1ZVRyYW5zZm9ybWVyTmFtZV8QIFhEX1BBdHRLX3JlZ3VsYXJFeHByZXNzaW9uU3RyaW5n3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAACXwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxUAAAEKAAABCgAAABcAAAEKgACAAIAAgJMICAgIgFSAlQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAACXwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxYAAAEKAAABCgAAABcAAAEKgACAYIAAgJMICAgIgFSAlggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAACXwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxcAAAEKAAABCgAAABcAAAEKgACAAIAAgJMICAgIgFSAlwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAA1sAAAAXAAACXwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxgAAAEKAAABCgAAABcAAAEKgACAoIAAgJMICAgIgFSAmAgIgAAIEQcI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAACXwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxkAAAEKAAABCgAAABcAAAEKgACAAIAAgJMICAgIgFSAmQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAA3oAAAAXAAACXwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxoAAAEKAAABCgAAABcAAAEKgACAo4AAgJMICAgIgFSAmggIgAAIXlVJRFRyYW5zZm9ybWVy3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAACXwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxsAAAEKAAABCgAAABcAAAEKgACAAIAAgJMICAgIgFSAmwgIgAAI0gAAAVwAAAFdAAADmAAAA5ldWERQTUF0dHJpYnV0ZaYAAAOaAAADmwAAA5wAAAOdAAADngAAAWFdWERQTUF0dHJpYnV0ZVxYRFBNUHJvcGVydHlfEBBYRFVNTFByb3BlcnR5SW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEBIAAAFAAAABQQAAAUIAAAOgAAAAIQAAAUQAAAFFAAADoQAAACMAAAFDAAADogAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAApAAAAeQAAAQoAAAEKAAADqgAAADEAAAEKAAAA/AAAAQoAAAJSAAACFQAAAQoAAAEKAAADsgAAAQpfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBBCAiAqAiAQwiApYBtCAiApwgSf3xJ09MAAAA6AAAAOwAAAA4AAAO2AAADuQAAALSiAAACWwAAAlyAfoB/ogAAA7oAAAO7gKmAtYBj2QAAACEAAAAlAAADvgAAAA4AAAAoAAADvwAAACMAAAD7AAADwAAAAiUAAAJbAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAAADyF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYCmgH6AQ4BqgACABAiAqtMAAAA6AAAAOwAAAA4AAAPKAAAD0wAAALSoAAACcQAAAnIAAAJzAAACdAAAAnUAAAJ2AAACdwAAAniAgoCDgISAhYCGgIeAiICJqAAAA9QAAAPVAAAD1gAAA9cAAAPYAAAD2QAAA9oAAAPbgKuArICtgK+AsICygLOAtIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAADugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnEAAAEKAAABCgAAABcAAAEKgACAYIAAgKkICAgIgFSAgggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAADugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnIAAAEKAAABCgAAABcAAAEKgACAAIAAgKkICAgIgFSAgwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAA/0AAAAXAAADugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnMAAAEKAAABCgAAABcAAAEKgACAroAAgKkICAgIgFSAhAgIgAAI0wAAADoAAAA7AAAADgAABAsAAAQMAAAAtKCggGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAAO6AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdAAAAQoAAAEKAAAAFwAAAQqAAIBggACAqQgICAiAVICFCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAEHwAAABcAAAO6AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACdQAAAQoAAAEKAAAAFwAAAQqAAICxgACAqQgICAiAVICGCAiAAAgJ3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAADugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnYAAAEKAAABCgAAABcAAAEKgACAYIAAgKkICAgIgFSAhwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAADugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAncAAAEKAAABCgAAABcAAAEKgACAAIAAgKkICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAADugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgKkICAgIgFSAiQgIgAAI2QAAACEAAAAlAAAEWwAAAA4AAAAoAAAEXAAAACMAAAD7AAAEXQAAAiUAAAJcAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAAAEZV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYCmgH+AQ4BqgACABAiAttMAAAA6AAAAOwAAAA4AAARnAAAEbwAAALSnAAADFQAAAxYAAAMXAAADGAAAAxkAAAMaAAADG4CVgJaAl4CYgJmAmoCbpwAABHAAAARxAAAEcgAABHMAAAR0AAAEdQAABHaAt4C4gLmAuoC7gLyAvoBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAADuwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxUAAAEKAAABCgAAABcAAAEKgACAAIAAgLUICAgIgFSAlQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAADuwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxYAAAEKAAABCgAAABcAAAEKgACAYIAAgLUICAgIgFSAlggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAADuwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxcAAAEKAAABCgAAABcAAAEKgACAAIAAgLUICAgIgFSAlwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAA1sAAAAXAAADuwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxgAAAEKAAABCgAAABcAAAEKgACAoIAAgLUICAgIgFSAmAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAADuwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxkAAAEKAAABCgAAABcAAAEKgACAAIAAgLUICAgIgFSAmQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABMUAAAAXAAADuwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxoAAAEKAAABCgAAABcAAAEKgACAvYAAgLUICAgIgFSAmggIgAAIXxAPU2VlZFRyYW5zZm9ybWVy3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAADuwAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxsAAAEKAAABCgAAABcAAAEKgACAAIAAgLUICAgIgFSAmwgIgAAI3xASAAABQAAAAUEAAAFCAAAE4wAAACEAAAFEAAABRQAABOQAAAAjAAABQwAABOUAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAAKQAAAHkAAAEKAAABCgAABO0AAAAxAAABCgAAAPwAAAEKAAACUgAAAhYAAAEKAAABCgAABPUAAAEKXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAQQgIgMEIgEMIgKWAbggIgMAIEjTRpBHTAAAAOgAAADsAAAAOAAAE+QAABPwAAAC0ogAAAlsAAAJcgH6Af6IAAAT9AAAE/oDCgM2AY9kAAAAhAAAAJQAABQEAAAAOAAAAKAAABQIAAAAjAAAA+wAABQMAAAImAAACWwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAABQtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAv4B+gEOAaoAAgAQIgMPTAAAAOgAAADsAAAAOAAAFDQAABRYAAAC0qAAAAnEAAAJyAAACcwAAAnQAAAJ1AAACdgAAAncAAAJ4gIKAg4CEgIWAhoCHgIiAiagAAAUXAAAFGAAABRkAAAUaAAAFGwAABRwAAAUdAAAFHoDEgMWAxoDIgMmAyoDLgMyAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAABP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJxAAABCgAAAQoAAAAXAAABCoAAgGCAAIDCCAgICIBUgIIICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAABP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJyAAABCgAAAQoAAAAXAAABCoAAgACAAIDCCAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAVAAAAAFwAABP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgMeAAIDCCAgICIBUgIQICIAACNMAAAA6AAAAOwAAAA4AAAVOAAAFTwAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAE/QAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnQAAAEKAAABCgAAABcAAAEKgACAYIAAgMIICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAE/QAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAYIAAgMIICAgIgFSAhggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAE/QAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnYAAAEKAAABCgAAABcAAAEKgACAYIAAgMIICAgIgFSAhwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAE/QAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAncAAAEKAAABCgAAABcAAAEKgACAAIAAgMIICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAE/QAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgMIICAgIgFSAiQgIgAAI2QAAACEAAAAlAAAFnQAAAA4AAAAoAAAFngAAACMAAAD7AAAFnwAAAiYAAAJcAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAAAFp18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYC/gH+AQ4BqgACABAiAztMAAAA6AAAAOwAAAA4AAAWpAAAFsQAAALSnAAADFQAAAxYAAAMXAAADGAAAAxkAAAMaAAADG4CVgJaAl4CYgJmAmoCbpwAABbIAAAWzAAAFtAAABbUAAAW2AAAFtwAABbiAz4DRgNKA04DVgNaA14Bj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABbwAAAAXAAAE/gAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxUAAAEKAAABCgAAABcAAAEKgACA0IAAgM0ICAgIgFSAlQgIgAAIUTDfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAAT+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADFgAAAQoAAAEKAAAAFwAAAQqAAIBggACAzQgICAiAVICWCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAFvAAAABcAAAT+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADFwAAAQoAAAEKAAAAFwAAAQqAAIDQgACAzQgICAiAVICXCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAF6gAAABcAAAT+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGAAAAQoAAAEKAAAAFwAAAQqAAIDUgACAzQgICAiAVICYCAiAAAgRASzfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAT+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGQAAAQoAAAEKAAAAFwAAAQqAAIAAgACAzQgICAiAVICZCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAT+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGgAAAQoAAAEKAAAAFwAAAQqAAIAAgACAzQgICAiAVICaCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAT+AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAADGwAAAQoAAAEKAAAAFwAAAQqAAIAAgACAzQgICAiAVICbCAiAAAjfEBIAAAFAAAABQQAAAUIAAAYmAAAAIQAAAUQAAAFFAAAGJwAAACMAAAFDAAAGKAAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAApAAAAeQAAAQoAAAEKAAAGMAAAADEAAAEKAAAA/AAAAQoAAAJSAAACFwAAAQoAAAEKAAAGOAAAAQpfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBBCAiA2giAQwiApYBvCAiA2QgTAAAAAQ4OlsXTAAAAOgAAADsAAAAOAAAGPAAABj8AAAC0ogAAAlsAAAJcgH6Af6IAAAZAAAAGQYDbgOaAY9kAAAAhAAAAJQAABkQAAAAOAAAAKAAABkUAAAAjAAAA+wAABkYAAAInAAACWwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAABk5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WA2IB+gEOAaoAAgAQIgNzTAAAAOgAAADsAAAAOAAAGUAAABlkAAAC0qAAAAnEAAAJyAAACcwAAAnQAAAJ1AAACdgAAAncAAAJ4gIKAg4CEgIWAhoCHgIiAiagAAAZaAAAGWwAABlwAAAZdAAAGXgAABl8AAAZgAAAGYYDdgN6A34DhgOKA44DkgOWAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAABkAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJxAAABCgAAAQoAAAAXAAABCoAAgGCAAIDbCAgICIBUgIIICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAABkAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJyAAABCgAAAQoAAAAXAAABCoAAgACAAIDbCAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAaDAAAAFwAABkAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgOCAAIDbCAgICIBUgIQICIAACNMAAAA6AAAAOwAAAA4AAAaRAAAGkgAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnQAAAEKAAABCgAAABcAAAEKgACAYIAAgNsICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAYIAAgNsICAgIgFSAhggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnYAAAEKAAABCgAAABcAAAEKgACAYIAAgNsICAgIgFSAhwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAncAAAEKAAABCgAAABcAAAEKgACAAIAAgNsICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgNsICAgIgFSAiQgIgAAI2QAAACEAAAAlAAAG4AAAAA4AAAAoAAAG4QAAACMAAAD7AAAG4gAAAicAAAJcAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAAAG6l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYDYgH+AQ4BqgACABAiA59MAAAA6AAAAOwAAAA4AAAbsAAAG9AAAALSnAAADFQAAAxYAAAMXAAADGAAAAxkAAAMaAAADG4CVgJaAl4CYgJmAmoCbpwAABvUAAAb2AAAG9wAABvgAAAb5AAAG+gAABvuA6IDpgOqA64DsgO2A7oBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABbwAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxUAAAEKAAABCgAAABcAAAEKgACA0IAAgOYICAgIgFSAlQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxYAAAEKAAABCgAAABcAAAEKgACAYIAAgOYICAgIgFSAlggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABbwAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxcAAAEKAAABCgAAABcAAAEKgACA0IAAgOYICAgIgFSAlwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABeoAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxgAAAEKAAABCgAAABcAAAEKgACA1IAAgOYICAgIgFSAmAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxkAAAEKAAABCgAAABcAAAEKgACAAIAAgOYICAgIgFSAmQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxoAAAEKAAABCgAAABcAAAEKgACAAIAAgOYICAgIgFSAmggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxsAAAEKAAABCgAAABcAAAEKgACAAIAAgOYICAgIgFSAmwgIgAAI3xASAAABQAAAAUEAAAFCAAAHZwAAACEAAAFEAAABRQAAB2gAAAAjAAABQwAAB2kAAAFGAAA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AJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAmwAAABcAAJEzAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwQAAAQoAAAEKAAAAFwAAAQqAAIELpYAAgQufCAgICIBUgQHuCAiAAAjfEBQAAAD7AACSLAAAki0AAJIuAACSLwAAkjAAAJIxAAAAIQAAAA4AAJIyAAAAJQAAkjMAAAAoAACSNAAAkjUAAJI2AACSNwAAkjgAAJI5AAAAIwAABCwAAAD8AAAA/AAAkj0AAAApAAABAgAAAPwAAAAUAAABBQAAACkAAABfAACSRQAAkkYAAAApAAAAKQAAAPwAAJJKAACSSwAAAQIAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYBDgEOBC6eABIEDEYBDgAKBAxOABIAogQ6CgQumgASABIBDgQu4gQ6DgQMREpVlnIfTAAAAOgAAADsAAAAOAACSTwAAklEAAAC0oQAAAQ+ARaEAAJJSgQuogGPZAAAAIQAAACUAAJJVAAAADgAAACgAAJJWAAAAIwAAAPs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AAAjSAAAAOwAAAA4AAKPNAAABWqEAAKPOgQ0BgFPXAAAADgAAACUAAKPRAAAAIQAAACgAAKPSAAAAIwAAo9MAAAAXAAAAhwAAAIcAAKPXAAAArQAAADFZX3NwZWNpZmljWF9nZW5lcmFsgQ3rgACBDNSBDNSBDQKBDQMSX0HHT98QFAAAAPsAAKPbAACj3AAAo90AAKPeAACj3wAAo+AAAAAhAAAADgAAo+EAAAAlAACj4gAAACgAAKPjAACj5AAAo+UAAKPmAACj5wAAo+gAAAAjAAAELAAAAPwAAAD8AACj7AAAACkAAAECAAAA/AAAABQAAAEFAAAAKQAAAHEAAKP0AACj9QAAACkAAAApAAAA/AAAo/kAAKP6AAABAgAAADFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgEOAQ4ENBYAEgQMRgEOAAoEDE4AEgDqBDZCBDQSABIAEgEOBDRaBDZGBAxESldXOaNMAAAA6AAAAOwAAAA4AAKP+AACkAAAAALShAAABD4BFoQAApAGBDQaAY9kAAAAhAAA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lAACj0QAAACEAAAAoAACj0gAAACMAAKPTAAAAFwAAAKUAAAClAAD/RAAAAKoAAAAxgQ3rgACBE8uBE8uBE/mBE/oSwX4I5t8QFAAAAPsAAP9IAAD/SQAA/0oAAP9LAAD/TAAA/00AAAAhAAAADgAA/04AAAAlAAD/TwAAACgAAP9QAAD/UQAA/1IAAP9TAAD/VAAA/1UAAAAjAAAELAAAAPwAAAD8AAD/WQAAACkAAAECAAAA/AAAABQAAAEFAAAAKQAAAG4AAP9hAAD/YgAAACkAAAApAAAA/AAA/2YAAP9nAAABAgAAADFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgEOAQ4ET/IAEgQMRgEOAAoEDE4AEgDeBFIWBE/uABIAEgEOBFA2BFIaBAxEShr+w5tMAAAA6AAAAOwAAAA4AAP9rAAD/bQAAALShAAABD4BFoQAA/26BE/2AY9kAAAAhAAAAJQAA/3EAAAAOAAAAKAAA/3IAAAAjAAAA+wAA/3MAAACqAAABDwAAAPwAAAEbAAAAFwAAACkAAAA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hVQAAoXgAAKGfAAChvwAAoeYAAKINAACiLQAAolEAAKJ1AACigQAAooMAAKKFAACihwAAookAAKKLAACijQAAopAAAKKSAACilAAAopcAAKKZAACimwAAop4AAKKgAACioQAAoqYAAKKuAACixwAAoswAAKLOAACi0wAAotUAAKLXAACi5gAAoy8AAKNTAACjegAAo54AAKOgAACjogAAo6QAAKOmAACjqAAAo6oAAKOrAACjrQAAo8YAAKPrAACj7QAAo+8AAKPxAACj8wAAo/UAAKP3AACj+QAAo/sAAKP9AACkIgAApCQAAKQmAACkKAAApCoAAKQsAACkLgAApDAAAKQyAACkNAAApDYAAKRMAACkXwAApHsAAKSYAACktAAApMgAAKTaAACk8AAApQkAAKWEAACligAApZMAAKWgAAClrAAApbYAAKXAAAClywAApdYAAKXjAACl6wAApe0AAKXvAACl8QAApfMAAKX0AACl9QAApfYAAKX3AACl+QAApfsAAKX8AACl/QAApf8AAKYAAACmEQAAphIAAKYUAACmJQAApjAAAKY5AACmSAAAplUAAKZdAACmZgAApncAAKaKAACmmwAApq4AAKbFAACm1wAAp1IAAKdUAACnVgAAp1gAAKdaAACnWwAAp1wAAKddAACnXgAAp2AAAKdiAACnYwAAp2QAAKdmAACnZwAAp+IAAKfkAACn5gAAp+gAAKfqAACn6wAAp+wAAKftAACn7gAAp/AAAKfyAACn8wAAp/QAAKf2AACn9wAAqAgAAKgNAACoDwAAqBEAAKgiAACoLwAAqDEAAKgzAACoNQAAqDcAAKhKAACoYQAAqHMAAKjuAACo8AAAqPIAAKj0AACo9gAAqPcAAKj4AACo+QAAqPoAAKj8AACo/gAAqP8AAKkAAACpAgAAqQMAAKl+AACpgAAAqYIAAKmEAACphgAAqYcAAKmIAACpiQAAqYoAAKmMAACpjgAAqY8AAKmQAACpkgAAqZMAAKmkAACppQAAqacAAKoiAACqJAAAqiYAAKooAACqKgAAqisAAKosAACqLQAAqi4AAKowAACqMgAAqjMAAKo0AACqNgAAqjcAAKo4AACqswAAqrUAAKq3AACquQAAqrsAAKq8AACqvQAAqr4AAKq/AACqwQAAqsMAAKrEAACqxQAAqscAAKrIAACq4QAAquIAAKrjAACq5QAAqvYAAKsMAACrGQAAqyYAAKuhAACrowAAq6UAAKunAACrqQAAq6oAAKurAACrrAAAq60AAKuvAACrsQAAq7IAAKuzAACrtQAAq7YAAKvnAACr6QAAq+sAAKvtAACr7gAAq/AAAKwHAACsGAAArCYAAKw/AACsTQAArGIAAKx2AACsjQAArJ8AAK0aAACtHAAArR4AAK0gAACtIgAArSMAAK0kAACtJQAArSYAAK0oAACtKgAArSsAAK0sAACtLgAArS8AAK1FAACtVgAArWsAAK2IAACtnQAArasAAK3AAACt1AAAresAAK39AACuFgAArlUAAK5XAACuWQAArlsAAK5dAACuXwAArmEAAK5jAACuZQAArmcAAK5pAACuawAArm0AAK5vAACucQAArnMAAK6yAACutAAArrYAAK64AACuugAArrwAAK6/AACuwgAArsUAAK7IAACuywAArs4AAK7RAACu1AAArtcAAK7aAACu3AAAru4AAK8DAACvPgAAr3cAAK+fAACvxwAAr94AAK/xAACwBgAAsCsAALBIAACwVAAAsHAAALCrAACwtgAAsUkAALFsAACxjAAAsawAALGuAACxsAAAsbIAALG0AACxtgAAsbcAALG4AACxugAAsbsAALG9AACxvgAAscAAALHCAACxwwAAscQAALHGAACxxwAAscwAALHlAACx7gAAsfAAALHyAACx+wAAsf0AALH/AACyAQAAshYAALIrAACydAAAspgAALK/AACy4wAAsuUAALLnAACy6QAAsusAALLtAACy7wAAsvAAALLyAACzCwAAsywAALMuAACzMAAAszIAALM0AACzNgAAszgAALM6AACzPAAAs10AALNfAACzYQAAs2MAALNlAACzZwAAs2kAALNrAACzbQAAs28AALONAACzqwAAs74AALPSAACz5wAAtAQAALQYAAC0LgAAtKkAALSrAAC0rQAAtK8AALSxAAC0sgAAtLMAALS0AAC0tQAAtLcAALS5AAC0ugAAtLsAALS9AAC0vgAAtTkAALU7AAC1PQAAtT8AALVBAAC1QgAAtUMAALVEAAC1RQAAtUcAALVJAAC1SgAAtUsAALVNAAC1TgAAtckAALXLAAC1zQAAtc8AALXRAAC10gAAtdMAALXUAAC11QAAtdcAALXZAAC12gAAtdsAALXdAAC13gAAtfcAALX4AAC1+QAAtfsAALZ2AAC2eAAAtnoAALZ8AAC2fgAAtn8AALaAAAC2gQAAtoIAALaEAAC2hgAAtocAALaIAAC2igAAtosAALcGAAC3CAAAtwoAALcMAAC3DgAAtw8AALcQAAC3EQAAtxIAALcUAAC3FgAAtxcAALcYAAC3GgAAtxsAALeWAAC3mAAAt5oAALecAAC3ngAAt58AALegAAC3oQAAt6IAALekAAC3pgAAt6cAALeoAAC3qgAAt6sAALgmAAC4KAAAuCoAALgsAAC4LgAAuC8AALgwAAC4MQAAuDIAALg0AAC4NgAAuDcAALg4AAC4OgAAuDsAALi2AAC4uAAAuLoAALi8AAC4vgAAuL8AALjAAAC4wQAAuMIAALjEAAC4xgAAuMcAALjIAAC4ygAAuMsAALkUAAC5OAAAuV8AALmDAAC5hQAAuYcAALmJAAC5iwAAuY0AALmPAAC5kAAAuZIAALmrAAC5yAAAucoAALnMAAC5zgAAudAAALnSAAC51AAAudYAALnzAAC59QAAufcAALn5AAC5+wAAuf0AALn/AAC6AQAAugMAALojAAC6TgAAumgAALqBAAC6mwAAursAALreAAC7WQAAu1sAALtdAAC7XwAAu2EAALtiAAC7YwAAu2QAALtlAAC7ZwAAu2kAALtqAAC7awAAu20AALtuAAC76QAAu+sAALvtAAC77wAAu/EAALvyAAC78wAAu/QAALv1AAC79wAAu/kAALv6AAC7+wAAu/0AALv+AAC8eQAAvHsAALx9AAC8fwAAvIEAALyCAAC8gwAAvIQAALyFAAC8hwAAvIkAALyKAAC8iwAAvI0AALyOAAC9CQAAvQsAAL0NAAC9DwAAvREAAL0SAAC9EwAAvRQAAL0VAAC9FwAAvRkAAL0aAAC9GwAAvR0AAL0eAAC9IQAAvZwAAL2eAAC9oAAAvaIAAL2kAAC9pQAAvaYAAL2nAAC9qAAAvaoAAL2sAAC9rQAAva4AAL2wAAC9sQAAviwAAL4uAAC+MAAAvjIAAL40AAC+NQAAvjYAAL43AAC+OAAAvjoAAL48AAC+PQAAvj4AAL5AAAC+QQAAvlAAAL7LAAC+zQAAvs8AAL7RAAC+0wAAvtQAAL7VAAC+1gAAvtcAAL7ZAAC+2wAAvtwAAL7dAAC+3wAAvuAAAL7xAAC+/wAAvxgAAL8mAAC/MwAAv0YAAL9dAAC/bwAAwAIAAMAlAADARQAAwGUAAMBnAADAaQAAwGsAAMBtAADAbwAAwHAAAMBxAADAcwAAwHQAAMB2AADAdwAAwHkAAMB7AADAfAAAwH0AAMB/AADAgAAAwIUAAMCeAADApwAAwKkAAMCrAADAtAAAwLYAAMC4AADAugAAwQMAAMEnAADBTgAAwXIAAMF0AADBdgAAwXgAAMF6AADBfAAAwX4AAMF/AADBgQAAwZoAAMG7AADBvQAAwb8AAMHBAADBwwAAwcUAAMHHAADByQAAwcsAAMHsAADB7gAAwfAAAMHyAADB9AAAwfYAAMH4AADB+gAAwfwAAMH+AADCeQAAwnsAAMJ9AADCfwAAwoEAAMKCAADCgwAAwoQAAMKFAADChwAAwokAAMKKAADCiwAAwo0AAMKOAADDCQAAwwsAAMMNAADDDwAAwxEAAMMSAADDEwAAwxQAAMMVAADDFwAAwxkAAMMaAADDGwAAwx0AAMMeAADDmQAAw5sAAMOdAADDnwAAw6EAAMOiAADDowAAw6QAAMOlAADDpwAAw6kAAMOqAADDqwAAw60AAMOuAADDxwAAw8gAAMPJAADDywAAxEYAAMRIAADESgAAxEwAAMROAADETwAAxFAAAMRRAADEUgAAxFQAAMRWAADEVwAAxFgAAMRaAADEWwAAxNYAAMTYAADE2gAAxNwAAMTeAADE3wAAxOAAAMThAADE4gAAxOQAAMTmAADE5wAAxOgAAMTqAADE6wAAxOwAAMVnAADFaQAAxWsAAMVtAADFbwAAxXAAAMVxAADFcgAAxXMAAMV1AADFdwAAxXgAAMV5AADFewAAxXwAAMX3AADF+QAAxfsAAMX9AADF/wAAxgAAAMYBAADGAgAAxgMAAMYFAADGBwAAxggAAMYJAADGCwAAxgwAAMaHAADGiQAAxosAAMaNAADGjwAAxpAAAMaRAADGkgAAxpMAAMaVAADGlwAAxpgAAMaZAADGmwAAxpwAAMblAADHCQAAxzAAAMdUAADHVgAAx1gAAMdaAADHXAAAx14AAMdgAADHYQAAx2MAAMd8AADHmQAAx5sAAMedAADHnwAAx6EAAMejAADHpQAAx6cAAMfEAADHxgAAx8gAAMfKAADHzAAAx84AAMfQAADH0gAAx9QAAMhPAADIUQAAyFMAAMhVAADIVwAAyFgAAMhZAADIWgAAyFsAAMhdAADIXwAAyGAAAMhhAADIYwAAyGQAAMjfAADI4QAAyOMAAMjlAADI5wAAyOgAAMjpAADI6gAAyOsAAMjtAADI7wAAyPAAAMjxAADI8wAAyPQAAMlvAADJcQAAyXMAAMl1AADJdwAAyXgAAMl5AADJegAAyXsAAMl9AADJfwAAyYAAAMmBAADJgwAAyYQAAMn/AADKAQAAygMAAMoFAADKBwAAyggAAMoJAADKCgAAygsAAMoNAADKDwAAyhAAAMoRAADKEwAAyhQAAMqPAADKkQAAypMAAMqVAADKlwAAypgAAMqZAADKmgAAypsAAMqdAADKnwAAyqAAAMqhAADKowAAyqQAAMsfAADLIQAAyyMAAMslAADLJwAAyygAAMspAADLKgAAyysAAMstAADLLwAAyzAAAMsxAADLMwAAyzQAAMtGAADLwQAAy8MAAMvFAADLxwAAy8kAAMvKAADLywAAy8wAAMvNAADLzwAAy9EAAMvSAADL0wAAy9UAAMvWAADMaQAAzIwAAMysAADMzAAAzM4AAMzQAADM0gAAzNQAAMzWAADM1wAAzNgAAMzaAADM2wAAzN0AAMzeAADM4AAAzOIAAMzjAADM5AAAzOYAAMznAADM7AAAzQUAAM0OAADNEAAAzRIAAM0bAADNHQAAzR8AAM0hAADNagAAzY4AAM21AADN2QAAzdsAAM3dAADN3wAAzeEAAM3jAADN5QAAzeYAAM3oAADOAQAAziIAAM4kAADOJgAAzigAAM4qAADOLAAAzi4AAM4wAADOMgAAzlMAAM5VAADOVwAAzlkAAM5bAADOXQAAzl8AAM5hAADOYwAAzmUAAM7gAADO4gAAzuQAAM7mAADO6AAAzukAAM7qAADO6wAAzuwAAM7uAADO8AAAzvEAAM7yAADO9AAAzvUAAM9wAADPcgAAz3QAAM92AADPeAAAz3kAAM96AADPewAAz3wAAM9+AADPgAAAz4EAAM+CAADPhAAAz4UAANAAAADQAgAA0AQAANAGAADQCAAA0AkAANAKAADQCwAA0AwAANAOAADQEAAA0BEAANASAADQFAAA0BUAANAuAADQLwAA0DAAANAyAADQrQAA0K8AANCxAADQswAA0LUAANC2AADQtwAA0LgAANC5AADQuwAA0L0AANC+AADQvwAA0MEAANDCAADRPQAA0T8AANFBAADRQwAA0UUAANFGAADRRwAA0UgAANFJAADRSwAA0U0AANFOAADRTwAA0VEAANFSAADRzQAA0c8AANHRAADR0wAA0dUAANHWAADR1wAA0dgAANHZAADR2wAA0d0AANHeAADR3wAA0eEAANHiAADSXQAA0l8AANJhAADSYwAA0mUAANJmAADSZwAA0mgAANJpAADSawAA0m0AANJuAADSbwAA0nEAANJyAADS7QAA0u8AANLxAADS8wAA0vUAANL2AADS9wAA0vgAANL5AADS+wAA0v0AANL+AADS/wAA0wEAANMCAADTSwAA028AANOWAADTugAA07wAANO+AADTwAAA08IAANPEAADTxgAA08cAANPJAADT4gAA0/8AANQBAADUAwAA1AUAANQHAADUCQAA1AsAANQNAADUKgAA1CwAANQuAADUMAAA1DIAANQ0AADUNgAA1DgAANQ6AADUtQAA1LcAANS5AADUuwAA1L0AANS+AADUvwAA1MAAANTBAADUwwAA1MUAANTGAADUxwAA1MkAANTKAADUzAAA1UcAANVJAADVSwAA1U0AANVPAADVUAAA1VEAANVSAADVUwAA1VUAANVXAADVWAAA1VkAANVbAADVXAAA1dcAANXZAADV2wAA1d0AANXfAADV4AAA1eEAANXiAADV4wAA1eUAANXnAADV6AAA1ekAANXrAADV7AAA1mcAANZpAADWawAA1m0AANZvAADWcAAA1nEAANZyAADWcwAA1nUAANZ3AADWeAAA1nkAANZ7AADWfAAA1n8AANb6AADW/AAA1v4AANcAAADXAgAA1wMAANcEAADXBQAA1wYAANcIAADXCgAA1wsAANcMAADXDgAA1w8AANeKAADXjAAA144AANeQAADXkgAA15MAANeUAADXlQAA15YAANeYAADXmgAA15sAANecAADXngAA158AANgaAADYHAAA2B4AANggAADYIgAA2CMAANgkAADYJQAA2CYAANgoAADYKgAA2CsAANgsAADYLgAA2C8AANjCAADY5QAA2QUAANklAADZJwAA2SkAANkrAADZLQAA2S8AANkwAADZMQAA2TMAANk0AADZNgAA2TcAANk5AADZOwAA2TwAANk9AADZPwAA2UAAANlJAADZYgAA2WsAANltAADZbwAA2XgAANl6AADZfAAA2X4AANnHAADZ6wAA2hIAANo2AADaOAAA2joAANo8AADaPgAA2kAAANpCAADaQwAA2kUAANpeAADafwAA2oEAANqDAADahQAA2ocAANqJAADaiwAA2o0AANqPAADasAAA2rIAANq0AADatgAA2rgAANq6AADavAAA2r4AANrAAADawgAA2z0AANs/AADbQQAA20MAANtFAADbRgAA20cAANtIAADbSQAA20sAANtNAADbTgAA208AANtRAADbUgAA280AANvPAADb0QAA29MAANvVAADb1gAA29cAANvYAADb2QAA29sAANvdAADb3gAA298AANvhAADb4gAA3F0AANxfAADcYQAA3GMAANxlAADcZgAA3GcAANxoAADcaQAA3GsAANxtAADcbgAA3G8AANxxAADccgAA3IsAANyMAADcjQAA3I8AAN0KAADdDAAA3Q4AAN0QAADdEgAA3RMAAN0UAADdFQAA3RYAAN0YAADdGgAA3RsAAN0cAADdHgAA3R8AAN2aAADdnAAA3Z4AAN2gAADdogAA3aMAAN2kAADdpQAA3aYAAN2oAADdqgAA3asAAN2sAADdrgAA3a8AAN4qAADeLAAA3i4AAN4wAADeMgAA3jMAAN40AADeNQAA3jYAAN44AADeOgAA3jsAAN48AADePgAA3j8AAN66AADevAAA3r4AAN7AAADewgAA3sMAAN7EAADexQAA3sYAAN7IAADeygAA3ssAAN7MAADezgAA3s8AAN9KAADfTAAA304AAN9QAADfUgAA31MAAN9UAADfVQAA31YAAN9YAADfWgAA31sAAN9cAADfXgAA318AAN+oAADfzAAA3/MAAOAXAADgGQAA4BsAAOAdAADgHwAA4CEAAOAjAADgJAAA4CYAAOA/AADgXAAA4F4AAOBgAADgYgAA4GQAAOBmAADgaAAA4GoAAOCHAADgiQAA4IsAAOCNAADgjwAA4JEAAOCTAADglQAA4JcAAOESAADhFAAA4RYAAOEYAADhGgAA4RsAAOEcAADhHQAA4R4AAOEgAADhIgAA4SMAAOEkAADhJgAA4ScAAOGiAADhpAAA4aYAAOGoAADhqgAA4asAAOGsAADhrQAA4a4AAOGwAADhsgAA4bMAAOG0AADhtgAA4bcAAOIyAADiNAAA4jYAAOI4AADiOgAA4jsAAOI8AADiPQAA4j4AAOJAAADiQgAA4kMAAOJEAADiRgAA4kcAAOLCAADixAAA4sYAAOLIAADiygAA4ssAAOLMAADizQAA4s4AAOLQAADi0gAA4tMAAOLUAADi1gAA4tcAAONSAADjVAAA41YAAONYAADjWgAA41sAAONcAADjXQAA414AAONgAADjYgAA42MAAONkAADjZgAA42cAAOPiAADj5AAA4+YAAOPoAADj6gAA4+sAAOPsAADj7QAA4+4AAOPwAADj8gAA4/MAAOP0AADj9gAA4/cAAORyAADkdAAA5HYAAOR4AADkegAA5HsAAOR8AADkfQAA5H4AAOSAAADkggAA5IMAAOSEAADkhgAA5IcAAOUaAADlPQAA5V0AAOV9AADlfwAA5YEAAOWDAADlhQAA5YcAAOWIAADliQAA5YsAAOWMAADljgAA5Y8AAOWRAADlkwAA5ZQAAOWVAADllwAA5ZgAAOWdAADltgAA5b8AAOXBAADlwwAA5cwAAOXOAADl0AAA5dIAAOYbAADmPwAA5mYAAOaKAADmjAAA5o4AAOaQAADmkgAA5pQAAOaWAADmlwAA5pkAAOayAADm0wAA5tUAAObXAADm2QAA5tsAAObdAADm3wAA5uEAAObjAADnBAAA5wYAAOcIAADnCgAA5wwAAOcOAADnEAAA5xIAAOcUAADnFgAA55EAAOeTAADnlQAA55cAAOeZAADnmgAA55sAAOecAADnnQAA558AAOehAADnogAA56MAAOelAADnpgAA6CEAAOgjAADoJQAA6CcAAOgpAADoKgAA6CsAAOgsAADoLQAA6C8AAOgxAADoMgAA6DMAAOg1AADoNgAA6LEAAOizAADotQAA6LcAAOi5AADougAA6LsAAOi8AADovQAA6L8AAOjBAADowgAA6MMAAOjFAADoxgAA6N8AAOjgAADo4QAA6OMAAOleAADpYAAA6WIAAOlkAADpZgAA6WcAAOloAADpaQAA6WoAAOlsAADpbgAA6W8AAOlwAADpcgAA6XMAAOnuAADp8AAA6fIAAOn0AADp9gAA6fcAAOn4AADp+QAA6foAAOn8AADp/gAA6f8AAOoAAADqAgAA6gMAAOp+AADqgAAA6oIAAOqEAADqhgAA6ocAAOqIAAD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EoQABBKIAAQSkAAEEpgABBKcAAQSoAAEEqgABBKsAAQT0AAEFGAABBT8AAQVjAAEFZgABBWgAAQVqAAEFbAABBW4AAQVwAAEFcQABBXQAAQWNAAEFqgABBawAAQWuAAEFsAABBbIAAQW0AAEFtgABBbgAAQXVAAEF2AABBdsAAQXeAAEF4QABBeQAAQXnAAEF6gABBewAAQZnAAEGaQABBmsAAQZtAAEGcAABBnEAAQZyAAEGcwABBnQAAQZ2AAEGeAABBnkAAQZ6AAEGfAABBn0AAQb4AAEG+gABBvwAAQb+AAEHAQABBwIAAQcDAAEHBAABBwUAAQcHAAEHCQABBwoAAQcLAAEHDQABBw4AAQeJAAEHiwABB40AAQePAAEHkgABB5MAAQeUAAEHlQABB5YAAQeYAAEHmgABB5sAAQecAAEHngABB58AAQgaAAEIHAABCB4AAQggAAEIIwABCCQAAQglAAEIJgABCCcAAQgpAAEIKwABCCwAAQgtAAEILwABCDAAAQirAAEIrQABCK8AAQixAAEItAABCLUAAQi2AAEItwABCLgAAQi6AAEIvAABCL0AAQi+AAEIwAABCMEAAQk8AAEJPgABCUEAAQlDAAEJRgABCUcAAQlIAAEJSQABCUoAAQlMAAEJTgABCU8AAQlQAAEJUgABCVMAAQlyAAEJ7QABCe8AAQnxAAEJ8wABCfYAAQn3AAEJ+AABCfkAAQn6AAEJ/AABCf4AAQn/AAEKAAABCgIAAQoDAAEKlgABCrkAAQrZAAEK+QABCvsAAQr9AAEK/wABCwEAAQsDAAELBAABCwUAAQsIAAELCQABCwsAAQsMAAELDgABCxAAAQsRAAELEgABCxUAAQsWAAELGwABCzQAAQs9AAELPwABC0EAAQtKAAELTQABC1AAAQtSAAELmwABC78AAQvmAAEMCgABDA0AAQwPAAEMEQABDBMAAQwVAAEMFwABDBgAAQwbAAEMNAABDFUAAQxXAAEMWQABDFsAAQxdAAEMXwABDGEAAQxjAAEMZQABDIYAAQyJAAEMjAABDI8AAQySAAEMlQABDJgAAQybAAEMngABDKAAAQ0bAAENHQABDR8AAQ0hAAENJAABDSUAAQ0mAAENJwABDSgAAQ0qAAENLAABDS0AAQ0uAAENMAABDTEAAQ2sAAENrgABDbAAAQ2yAAENtQABDbYAAQ23AAENuAABDbkAAQ27AAENvQABDb4AAQ2/AAENwQABDcIAAQ49AAEOPwABDkIAAQ5EAAEORwABDkgAAQ5JAAEOSgABDksAAQ5NAAEOTwABDlAAAQ5RAAEOUwABDlQAAQ5tAAEObgABDm8AAQ5xAAEO7AABDu4AAQ7wAAEO8gABDvUAAQ72AAEO9wABDvgAAQ75AAEO+wABDv0AAQ7+AAEO/wABDwEAAQ8CAAEPfQABD38AAQ+BAAEPgwABD4YAAQ+HAAEPiAABD4kAAQ+KAAEPjAABD44AAQ+PAAEPkAABD5IAAQ+TAAEQDgABEBAAARASAAEQFAABEBcAARAYAAEQGQABEBoAARAbAAEQHQABEB8AARAgAAEQIQABECMAARAkAAEQnwABEKEAARCjAAEQpQABEKgAARCpAAEQqgABEKsAARCsAAEQrgABELAAARCxAAEQsgABELQAARC1AAERMAABETIAARE0AAERNgABETkAARE6AAEROwABETwAARE9AAERPwABEUEAARFCAAERQwABEUUAARFGAAERjwABEbMAARHaAAER/gABEgEAARIDAAESBQABEgcAARIJAAESCwABEgwAARIPAAESKAABEkUAARJHAAESSQABEksAARJNAAESTwABElEAARJTAAEScAABEnMAARJ2AAESeQABEnwAARJ/AAESggABEoUAARKHAAETAgABEwQAARMGAAETCAABEwsAARMMAAETDQABEw4AARMPAAETEQABExMAARMUAAETFQABExcAARMYAAETkwABE5UAAROXAAETmQABE5wAAROdAAETngABE58AAROgAAETogABE6QAAROlAAETpgABE6gAAROpAAEUJAABFCYAARQoAAEUKgABFC0AARQuAAEULwABFDAAARQxAAEUMwABFDUAARQ2AAEUNwABFDkAARQ6AAEUtQABFLcAARS5AAEUuwABFL4AARS/AAEUwAABFMEAARTCAAEUxAABFMYAARTHAAEUyAABFMoAARTLAAEVRgABFUgAARVKAAEVTAABFU8AARVQAAEVUQABFVIAARVTAAEVVQABFVcAARVYAAEVWQABFVsAARVcAAEV1wABFdkAARXcAAEV3gABFeEAARXiAAEV4wABFeQAARXlAAEV5wABFekAARXqAAEV6wABFe0AARXuAAEV/QABFngAARZ6AAEWfAABFn4AARaBAAEWggABFoMAARaEAAEWhQABFocAARaJAAEWigABFosAARaNAAEWjgABFyEAARdEAAEXZAABF4QAAReGAAEXiAABF4oAAReMAAEXjgABF48AAReQAAEXkwABF5QAAReWAAEXlwABF5kAARebAAEXnAABF50AARegAAEXoQABF6YAARe/AAEXyAABF8oAARfMAAEX1QABF9gAARfbAAEX3QABGCYAARhKAAEYcQABGJUAARiYAAEYmgABGJwAARieAAEYoAABGKIAARijAAEYpgABGL8AARjgAAEY4gABGOQAARjmAAEY6AABGOoAARjsAAEY7gABGPAAARkRAAEZFAABGRcAARkaAAEZHQABGSAAARkjAAEZJgABGSkAARkrAAEZpgABGagAARmqAAEZrAABGa8AARmwAAEZsQABGbIAARmzAAEZtQABGbcAARm4AAEZuQABGbsAARm8AAEaNwABGjkAARo7AAEaPQABGkAAARpBAAEaQgABGkMAARpEAAEaRgABGkgAARpJAAEaSgABGkwAARpNAAEayAABGsoAARrNAAEazwABGtIAARrTAAEa1AABGtUAARrWAAEa2AABGtoAARrbAAEa3AABGt4AARrfAAEa+AABGvkAARr6AAEa/AABG3cAARt5AAEbewABG30AARuAAAEbgQABG4IAARuDAAEbhAABG4YAARuIAAEbiQABG4oAARuMAAEbjQABHAgAARwKAAEcDAABHA4AARwRAAEcEgABHBMAARwUAAEcFQABHBcAARwZAAEcGgABHBsAARwdAAEcHgABHJkAARybAAEcnQABHJ8AARyiAAEcowABHKQAARylAAEcpgABHKgAARyqAAEcqwABHKwAARyuAAEcrwABHSoAAR0sAAEdLgABHTAAAR0zAAEdNAABHTUAAR02AAEdNwABHTkAAR07AAEdPAABHT0AAR0/AAEdQAABHbsAAR29AAEdvwABHcEAAR3EAAEdxQABHcYAAR3HAAEdyAABHcoAAR3MAAEdzQABHc4AAR3QAAEd0QABHhoAAR4+AAEeZQABHokAAR6MAAEejgABHpAAAR6SAAEelAABHpYAAR6XAAEemgABHrMAAR7QAAEe0gABHtQAAR7WAAEe2AABHtoAAR7cAAEe3gABHvsAAR7+AAEfAQABHwQAAR8HAAEfCgABHw0AAR8QAAEfEgABH40AAR+PAAEfkQABH5MAAR+WAAEflwABH5gAAR+ZAAEfmgABH5wAAR+eAAEfnwABH6AAAR+iAAEfowABIB4AASAgAAEgIgABICQAASAnAAEgKAABICkAASAqAAEgKwABIC0AASAvAAEgMAABIDEAASAzAAEgNAABIK8AASCxAAEgswABILUAASC4AAEguQABILoAASC7AAEgvAABIL4AASDAAAEgwQABIMIAASDEAAEgxQABIUAAASFCAAEhRAABIUYAASFJAAEhSgABIUsAASFMAAEhTQABIU8AASFRAAEhUgABIVMAASFVAAEhVgABIdEAASHTAAEh1QABIdcAASHaAAEh2wABIdwAASHdAAEh3gABIeAAASHiAAEh4wABIeQAASHmAAEh5wABImIAASJkAAEiZgABImgAASJrAAEibAABIm0AASJuAAEibwABInEAASJzAAEidAABInUAASJ3AAEieAABIvMAASL1AAEi9wABIvkAASL8AAEi/QABIv4AASL/AAEjAAABIwIAASMEAAEjBQABIwYAASMIAAEjCQABI5wAASO/AAEj3wABI/8AASQBAAEkAwABJAUAASQHAAEkCQABJAoAASQLAAEkDgABJA8AASQRAAEkEgABJBQAASQWAAEkFwABJBgAASQbAAEkHAABJCEAASQ6AAEkQwABJEUAASRHAAEkUAABJFMAASRWAAEkWAABJKEAASTFAAEk7AABJRAAASUTAAElFQABJRcAASUZAAElGwABJR0AASUeAAElIQABJToAASVbAAElXQABJV8AASVhAAElYwABJWUAASVnAAElaQABJWsAASWMAAEljwABJZIAASWVAAElmAABJZsAASWeAAEloQABJaQAASWmAAEmIQABJiMAASYlAAEmJwABJioAASYrAAEmLAABJi0AASYuAAEmMAABJjIAASYzAAEmNAABJjYAASY3AAEmsgABJrQAASa2AAEmuAABJrsAASa8AAEmvQABJr4AASa/AAEmwQABJsMAASbEAAEmxQABJscAASbIAAEnQwABJ0UAASdIAAEnSgABJ00AASdOAAEnTwABJ1AAASdRAAEnUwABJ1UAASdWAAEnVwABJ1kAASdaAAEncwABJ3QAASd1AAEndwABJ/IAASf0AAEn9gABJ/gAASf7AAEn/AABJ/0AASf+AAEn/wABKAEAASgDAAEoBAABKAUAASgHAAEoCAABKIMAASiFAAEohwABKIkAASiMAAEojQABKI4AASiPAAEokAABKJIAASiUAAEolQABKJYAASiYAAEomQABKRQAASkWAAEpGAABKRoAASkdAAEpHgABKR8AASkgAAEpIQABKSMAASklAAEpJgABKScAASkpAAEpKgABKaUAASmnAAEpqQABKasAASmuAAEprwABKbAAASmxAAEpsgABKbQAASm2AAEptwABKbgAASm6AAEpuwABKjYAASo4AAEqOgABKjwAASo/AAEqQAABKkEAASpCAAEqQwABKkUAASpHAAEqSAABKkkAASpLAAEqTAABKpUAASq5AAEq4AABKwQAASsHAAErCQABKwsAASsNAAErDwABKxEAASsSAAErFQABKy4AAStLAAErTQABK08AAStRAAErUwABK1UAAStXAAErWQABK3YAASt5AAErfAABK38AASuCAAErhQABK4gAASuLAAErjQABLAgAASwKAAEsDAABLA4AASwRAAEsEgABLBMAASwUAAEsFQABLBcAASwZAAEsGgABLBsAASwdAAEsHgABLJkAASybAAEsnQABLJ8AASyiAAEsowABLKQAASylAAEspgABLKgAASyqAAEsqwABLKwAASyuAAEsrwABLSoAAS0sAAEtLgABLTAAAS0zAAEtNAABLTUAAS02AAEtNwABLTkAAS07AAEtPAABLT0AAS0/AAEtQAABLbsAAS29AAEtvwABLcEAAS3EAAEtxQABLcYAAS3HAAEtyAABLcoAAS3MAAEtzQABLc4AAS3QAAEt0QABLkwAAS5OAAEuUAABLlIAAS5VAAEuVgABLlcAAS5YAAEuWQABLlsAAS5dAAEuXgABLl8AAS5hAAEuYgABLt0AAS7fAAEu4QABLuMAAS7mAAEu5wABLugAAS7pAAEu6gABLuwAAS7uAAEu7wABLvAAAS7yAAEu8wABL24AAS9wAAEvcgABL3QAAS93AAEveAABL3kAAS96AAEvewABL30AAS9/AAEvgAABL4EAAS+DAAEvhAABMBcAATA6AAEwWgABMHoAATB8AAEwfgABMIAAATCCAAEwhAABMIUAATCGAAEwiQABMIoAATCMAAEwjQABMI8AATCRAAEwkgABMJMAATCWAAEwlwABMJwAATC1AAEwvgABMMAAATDCAAEwywABMM4AATDRAAEw0wABMRwAATFAAAExZwABMYsAATGOAAExkAABMZIAATGUAAExlgABMZgAATGZAAExnAABMbUAATHWAAEx2AABMdoAATHcAAEx3gABMeAAATHiAAEx5AABMeYAATIHAAEyCgABMg0AATIQAAEyEwABMhYAATIZAAEyHAABMh8AATIhAAEynAABMp4AATKgAAEyogABMqUAATKmAAEypwABMqgAATKpAAEyqwABMq0AATKuAAEyrwABMrEAATKyAAEzLQABMy8AATMxAAEzMwABMzYAATM3AAEzOAABMzkAATM6AAEzPAABMz4AATM/AAEzQAABM0IAATNDAAEzvgABM8AAATPDAAEzxQABM8gAATPJAAEzygABM8sAATPMAAEzzgABM9AAATPRAAEz0gABM9QAATPVAAEz7gABM+8AATPwAAEz8gABNG0AATRvAAE0cQABNHMAATR2AAE0dwABNHgAATR5AAE0egABNHwAATR+AAE0fwABNIAAATSCAAE0gwABNP4AATUAAAE1AgABNQQAATUHAAE1CAABNQkAATUKAAE1CwABNQ0AATUPAAE1EAABNREAATUTAAE1FAABNY8AATWRAAE1kwABNZUAATWYAAE1mQABNZoAATWbAAE1nAABNZ4AATWgAAE1oQABNaIAATWkAAE1pQABNiAAATYiAAE2JAABNiYAATYpAAE2KgABNisAATYsAAE2LQABNi8AATYxAAE2MgABNjMAATY1AAE2NgABNrEAATazAAE2tQABNrcAATa6AAE2uwABNrwAATa9AAE2vgABNsAAATbCAAE2wwABNsQAATbGAAE2xwABNxAAATc0AAE3WwABN38AATeCAAE3hAABN4YAATeIAAE3igABN4wAATeNAAE3kAABN6kAATfGAAE3yAABN8oAATfMAAE3zgABN9AAATfSAAE31AABN/EAATf0AAE39wABN/oAATf9AAE4AAABOAMAATgGAAE4CAABOIMAATiFAAE4hwABOIkAATiMAAE4jQABOI4AATiPAAE4kAABOJIAATiUAAE4lQABOJYAATiYAAE4mQABORQAATkWAAE5GAABORoAATkdAAE5HgABOR8AATkgAAE5IQABOSMAATklAAE5JgABOScAATkpAAE5KgABOaUAATmnAAE5qQABOasAATmuAAE5rwABObAAATmxAAE5sgABObQAATm2AAE5twABObgAATm6AAE5uwABOjYAATo4AAE6OwABOj0AATpAAAE6QQABOkIAATpDAAE6RAABOkYAATpIAAE6SQABOkoAATpMAAE6TQABOsgAATrKAAE6zAABOs4AATrRAAE60gABOtMAATrUAAE61QABOtcAATrZAAE62gABOtsAATrdAAE63gABO1kAATtbAAE7XQABO18AATtiAAE7YwABO2QAATtlAAE7ZgABO2gAATtqAAE7awABO2wAATtuAAE7bwABO+oAATvsAAE77gABO/AAATvzAAE79AABO/UAATv2AAE79wABO/kAATv7AAE7/AABO/0AATv/AAE8AAABPJMAATy2AAE81gABPPYAATz4AAE8+gABPPwAATz+AAE9AAABPQEAAT0CAAE9BQABPQYAAT0IAAE9CQABPQsAAT0NAAE9DgABPQ8AAT0SAAE9EwABPRwAAT01AAE9PgABPUAAAT1CAAE9SwABPU4AAT1RAAE9UwABPZwAAT3AAAE95wABPgsAAT4OAAE+EAABPhIAAT4UAAE+FgABPhgAAT4ZAAE+HAABPjUAAT5WAAE+WAABPloAAT5cAAE+XgABPmAAAT5iAAE+ZAABPmYAAT6HAAE+igABPo0AAT6QAAE+kwABPpYAAT6ZAAE+nAABPp8AAT6hAAE/HAABPx4AAT8gAAE/IgABPyUAAT8mAAE/JwABPygAAT8pAAE/KwABPy0AAT8uAAE/LwABPzEAAT8yAAE/rQABP68AAT+xAAE/swABP7YAAT+3AAE/uAABP7kAAT+6AAE/vAABP74AAT+/AAE/wAABP8IAAT/DAAFAPgABQEAAAUBDAAFARQABQEgAAUBJAAFASgABQEsAAUBMAAFATgABQFAAAUBRAAFAUgABQFQAAUBVAAFAbgABQG8AAUBwAAFAcgABQO0AAUDvAAFA8QABQPMAAUD2AAFA9wABQPgAAUD5AAFA+gABQPwAAUD+AAFA/wABQQAAAUECAAFBAwABQX4AAUGAAAFBggABQYQAAUGHAAFBiAABQYkAAUGKAAFBiwABQY0AAUGPAAFBkAABQZEAAUGTAAFBlAABQg8AAUIRAAFCEwABQhUAAUIYAAF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TSQABU8QAAVPGAAFTyAABU8oAAVPNAAFTzgABU88AAVPQAAFT0QABU9MAAVPVAAFT1gABU9cAAVPZAAFT2gABVFUAAVRXAAFUWQABVFsAAVReAAFUXwABVGAAAVRhAAFUYgABVGQAAVRmAAFUZwABVGgAAVRqAAFUawABVOYAAVToAAFU6gABVOwAAVTvAAFU8AABVPEAAVTyAAFU8wABVPUAAVT3AAFU+AABVPkAAVT7AAFU/AABVY8AAVWyAAFV0gABVfIAAVX0AAFV9gABVfgAAVX6AAFV/AABVf0AAVX+AAFWAQABVgIAAVYEAAFWBQABVgcAAVYJAAFWCgABVgsAAVYOAAFWDwABVhQAAVYtAAFWNgABVjgAAVY6AAFWQwABVkYAAVZJAAFWSwABVpQAAVa4AAFW3wABVwMAAVcGAAFXCAABVwoAAVcMAAFXDgABVxAAAVcRAAFXFAABVy0AAVdOAAFXUAABV1IAAVdUAAFXVgABV1gAAVdaAAFXXAABV14AAVd/AAFXggABV4UAAVeIAAFXiwABV44AAVeRAAFXlAABV5cAAVeZAAFYFAABWBYAAVgYAAFYGgABWB0AAVgeAAFYHwABWCAAAVghAAFYIwABWCUAAVgmAAFYJwABWCkAAVgqAAFYpQABWKcAAVipAAFYqwABWK4AAVivAAFYsAABWLEAAViyAAFYtAABWLYAAVi3AAFYuAABWLoAAVi7AAFZNgABWTgAAVk7AAFZPQABWUAAAVlBAAFZQgABWUMAAVlEAAFZRgABWUgAAVlJAAFZSgABWUwAAVlNAAFZZgABWWcAAVloAAFZagABWeUAAVnnAAFZ6QABWesAAVnuAAFZ7wABWfAAAVnxAAFZ8gABWfQAAVn2AAFZ9wABWfgAAVn6AAFZ+wABWnYAAVp4AAFaegABWnwAAVp/AAFagAABWoEAAVqCAAFagwABWoUAAVqHAAFaiAABWokAAVqLAAFajAABWwcAAVsJAAFbCwABWw0AAVsQAAFbEQABWxIAAVsTAAFbFAABWxYAAVsYAAFbGQABWxoAAVscAAFbHQABW5gAAVuaAAFbnAABW54AAVuhAAFbogABW6MAAVukAAFbpQABW6cAAVupAAFbqgABW6sAAVutAAFbrgABXCkAAVwrAAFcLQABXC8AAVwyAAFcMwABXDQAAVw1AAFcNgABXDgAAVw6AAFcOwABXDwAAVw+AAFcPwABXIgAAVysAAFc0wABXPcAAVz6AAFc/AABXP4AAV0AAAFdAgABXQQAAV0FAAFdCAABXSEAAV0+AAFdQAABXUIAAV1EAAFdRgABXUgAAV1KAAFdTAABXWkAAV1sAAFdbwABXXIAAV11AAFdeAABXXsAAV1+AAFdgAABXfsAAV39AAFd/wABXgEAAV4EAAFeBQABXgYAAV4HAAFeCAABXgoAAV4MAAFeDQABXg4AAV4QAAFeEQABXowAAV6OAAFekAABXpIAAV6VAAFelgABXpcAAV6YAAFemQABXpsAAV6dAAFengABXp8AAV6hAAFeogABXx0AAV8fAAFfIQABXyMAAV8mAAFfJwABXygAAV8pAAFfKgABXywAAV8uAAFfLwABXzAAAV8yAAFfMwABX64AAV+wAAFfsgABX7QAAV+3AAFfuAABX7kAAV+6AAFfuwABX70AAV+/AAFfwAABX8EAAV/DAAFfxAABYD8AAWBBAAFgQwABYEUAAWBIAAFgSQABYEoAAWBLAAFgTAABYE4AAWBQAAFgUQABYFIAAWBUAAFgVQABYNAAAWDSAAFg1AABYNYAAWDZAAFg2gABYNsAAWDcAAFg3QABYN8AAWDhAAFg4gABYOMAAWDlAAFg5gABYWEAAWFjAAFhZQABYWcAAWFqAAFhawABYWwAAWFtAAFhbgABYXAAAWFyAAFhcwABYXQAAWF2AAFhdwABYgoAAWItAAFiTQABYm0AAWJvAAFicQABYnMAAWJ1AAFidwABYngAAWJ5AAFifAABYn0AAWJ/AAFigAABYoMAAWKFAAFihgABYocAAWKKAAFiiwABYpQAAWKtAAFitgABYrgAAWK7AAFixAABYscAAWLKAAFizAABYt8AAWMoAAFjTAABY3MAAWOXAAFjmgABY5wAAWOeAAFjoAABY6IAAWOkAAFjpQABY6gAAWPBAAFj4gABY+QAAWPmAAFj6AABY+oAAWPsAAFj7gABY/AAAWPyAAFkEwABZBYAAWQZAAFkHAABZB8AAWQiAAFkJQABZCgAAWQrAAFkLQABZKgAAWSqAAFkrAABZK4AAWSxAAFksgABZLMAAWS0AAFktQABZLcAAWS5AAFkugABZLsAAWS9AAFkvgABZTkAAWU7AAFlPQABZT8AAWVCAAFlQwABZUQAAWVFAAFlRgABZUgAAWVKAAFlSwABZUwAAWVOAAFlTwABZcoAAWXMAAFlzwABZdEAAWXUAAFl1QABZdYAAWXXAAFl2AABZdoAAWXcAAFl3QABZd4AAWXgAAFl4QABZfoAAWX7AAFl/AABZf4AAWZ5AAFmewABZn0AAWZ/AAFmggABZoMAAWaEAAFmhQABZoYAAWaIAAFmigABZosAAWaMAAFmjgABZo8AAWcKAAFnDAABZw4AAWcQAAFnEwABZxQAAWcVAAFnFgABZxcAAWcZAAFnGwABZxwAAWcdAAFnHwABZyAAAWebAAFnnQABZ58AAWehAAFnpAABZ6UAAWemAAFnpwABZ6gAAWeqAAFnrAABZ60AAWeuAAFnsAABZ7EAAWgsAAFoLgABaDAAAWgyAAFoNQABaDYAAWg3AAFoOAABaDkAAWg7AAFoPQABaD4AAWg/AAFoQQABaEIAAWi9AAFovwABaMEAAWjDAAFoxgABaMcAAWjIAAFoyQABaMoAAWjMAAFozgABaM8AAWjQAAFo0gABaNMAAWkcAAFpQAABaWcAAWmLAAFpjgABaZEAAWmTAAFplQABaZcAAWmZAAFpmgABaZ0AAWm2AAFp0wABadYAAWnZAAFp3AABad8AAWniAAFp5QABaegAAWoFAAFqCAABagsAAWoOAAFqEQABahQAAWoXAAFqGgABahwAAWouAAFqQgABalQAAWppAAFqewABaooAAWqnAAFrIgABayQAAWsnAAFrKQABaywAAWstAAFrLgABay8AAWswAAFrMgABazUAAWs2AAFrNwABazkAAWs6AAFrtQABa7cAAWu6AAFrvAABa78AAWvAAAFrwQABa8IAAWvDAAFrxQABa8gAAWvJAAFrygABa8wAAWvNAAFrzwABbEoAAWxMAAFsTwABbFEAAWxUAAFsVQABbFYAAWxXAAFsWAABbFoAAWxdAAFsXgABbF8AAWxhAAFsYgABbN0AAWzfAAFs4gABbOQAAWznAAFs6AABbOkAAWzqAAFs6wABbO0AAWzwAAFs8QABbPIAAWz0AAFs9QABbXgAAW2cAAFtwAABbeMAAW4KAAFuKgABblEAAW54AAFumAABbrwAAW7gAAFu4gABbuUAAW7nAAFu6QABbusAAW7uAAFu8QABbvMAAW71AAFu+AABbvoAAW78AAFu/wABbwIAAW8DAAFvCAABbyEAAW8mAAFvKAABby0AAW8wAAFvMgABb3sAAW+fAAFvxgABb+oAAW/tAAFv7wABb/EAAW/zAAFv9QABb/cAAW/4AAFv+wABcBQAAXA5AAFwOwABcD0AAXA/AAFwQQABcEMAAXBFAAFwRwABcEkAAXBLAAFwcAABcHMAAXB2AAFweQABcHwAAXB/AAFwggABcIUAAXCIAAFwiwABcI0AAXEIAAFxCgABcQ0AAXEPAAFxEgABcRMAAXEUAAFxFQABcRYAAXEYAAFxGgABcRsAAXEcAAFxHgABcR8AAXEwAAFxMQABcTMAAXGuAAFxsAABcbIAAXG0AAFxtwABcbgAAXG5AAFxugABcbsAAXG9AAFxvwABccAAAXHBAAFxwwABccQAAXI/AAFyQQABckQAAXJGAAFySQABckoAAXJLAAFyTAABck0AAXJPAAFyUQABclIAAXJTAAFyVQABclYAAXJnAAFyaAABcmoAAXLlAAFy5wABcukAAXLrAAFy7gABcu8AAXLwAAFy8QABcvIAAXL0AAFy9gABcvcAAXL4AAFy+gABcvsAAXN2AAFzeAABc3sAAXN9AAFzgAABc4EAAXOCAAFzgwABc4QAAXOGAAFziAABc4kAAXOKAAFzjAABc40AAXOeAAFznwABc6EAAXQcAAF0HgABdCAAAXQiAAF0JQABdCYAAXQnAAF0KAABdCkAAXQrAAF0LQABdC4AAXQvAAF0MQABdDIAAXStAAF0rwABdLIAAXS0AAF0twABdLgAAXS5AAF0ugABdLsAAXS9AAF0vwABdMAAAXTBAAF0wwABdMQAAXTdAAF03gABdN8AAXThAAF1XAABdV4AAXVgAAF1YgABdWUAAXVmAAF1ZwABdWgAAXVpAAF1awABdW0AAXVuAAF1bwABdXEAAXVyAAF17QABde8AAXXxAAF18wABdfYAAXX3AAF1+AABdfkAAXX6AAF1/AABdf4AAXX/AAF2AAABdgIAAXYDAAF2HAABdjUAAXY4AAF2OwABdj4AAXZBAAF2RAABdkcAAXZgAAF2YwABdmYAAXZpAAF2bAABdm8AAXZyAAF2dAABdokAAXasAAF2wgABdtUAAXbhAAF29wABd4oAAXetAAF3zQABd+0AAXfvAAF38QABd/MAAXf1AAF3+AABd/kAAXf6AAF3/QABd/4AAXgAAAF4AQABeAMAAXgGAAF4BwABeAgAAXgLAAF4DAABeBEAAXgqAAF4MwABeDUAAXg3AAF4QAABeEMAAXhGAAF4SAABeJEAAXi1AAF43AABeQAAAXkDAAF5BQABeQcAAXkJAAF5CwABeQ0AAXkOAAF5EQABeSoAAXlLAAF5TQABeU8AAXlRAAF5UwABeVUAAXlXAAF5WQABeVsAAXl8AAF5fwABeYIAAXmFAAF5iAABeYsAAXmOAAF5kQABeZQAAXmWAAF6EQABehMAAXoVAAF6FwABehoAAXobAAF6HAABeh0AAXoeAAF6IAABeiIAAXojAAF6JAABeiYAAXonAAF6ogABeqQAAXqmAAF6qAABeqsAAXqsAAF6rQABeq4AAXqvAAF6sQABerMAAXq0AAF6tQABercAAXq4AAF7MwABezUAAXs4AAF7OgABez0AAXs+AAF7PwABe0AAAXtBAAF7QwABe0UAAXtGAAF7RwABe0kAAXtKAAF7YwABe2QAAXtlAAF7ZwABe+IAAXvkAAF75gABe+gAAXvrAAF77AABe+0AAXvuAAF77wABe/EAAXvzAAF79AABe/UAAXv3AAF7+AABfHMAAXx1AAF8dwABfHkAAXx8AAF8fQABfH4AAXx/AAF8gAABfIIAAXyEAAF8hQABfIYAAXyIAAF8iQABfQQAAX0GAAF9CAABfQoAAX0NAAF9DgABfQ8AAX0QAAF9EQABfRMAAX0VAAF9FgABfRcAAX0ZAAF9GgABfZUAAX2XAAF9mQABfZsAAX2eAAF9nwABfaAAAX2hAAF9ogABfaQAAX2mAAF9pwABfagAAX2qAAF9qwABfiYAAX4oAAF+KgABfiwAAX4vAAF+MAABfjEAAX4yAAF+MwABfjUAAX43AAF+OAABfjkAAX47AAF+PAABfoUAAX6pAAF+0AABfvQAAX73AAF++QABfvsAAX79AAF+/wABfwEAAX8CAAF/BQABfx4AAX87AAF/PQABfz8AAX9BAAF/QwABf0UAAX9HAAF/SQABf2YAAX9pAAF/bAABf28AAX9yAAF/dQABf3gAAX97AAF/fQABf/gAAX/6AAF//AABf/4AAYABAAGAAgABgAMAAYAEAAGABQABgAcAAYAJAAGACgABgAsAAYANAAGADgABgIkAAYCLAAGAjQABgI8AAYCSAAGAkwABgJQAAYCVAAGAlgABgJgAAYCaAAGAmwABgJwAAYCeAAGAnwABgRoAAYEcAAGBHgABgSAAAYEjAAGBJAABgSUAAYEmAAGBJwABgSkAAYErAAGBLAABgS0AAYEvAAGBMAABgasAAYGtAAGBrwABgbEAAYG0AAGBtQABgbYAAYG3AAGBuAABgboAAYG8AAGBvQABgb4AAYHAAAGBwQABgjwAAYI+AAGCQAABgkIAAYJFAAGCRgABgkcAAYJIAAGCSQABgksAAYJNAAGCTgABgk8AAYJRAAGCUgABgs0AAYLPAAGC0QABgtMAAYLWAAGC1wABgtgAAYLZAAGC2gABgtwAAYLeAAGC3wABguAAAYLiAAGC4wABg14AAYNgAAGDYgABg2QAAYNnAAGDaAABg2kAAYNqAAGDawABg20AAYNvAAGDcAABg3EAAYNzAAGDdAABhAcAAYQqAAGESgABhGoAAYRsAAGEbgABhHAAAYRyAAGEdQABhHYAAYR3AAGEegABhHsAAYR9AAGEfgABhIAAAYSDAAGEhAABhIUAAYSIAAGEiQABhJIAAYSrAAGEtAABhLYAAYS4AAGEwQABhMQAAYTHAAGEyQABhRIAAYU2AAGFXQABhYEAAYWEAAGFhgABhYgAAYWKAAGFjAABhY4AAYWPAAGFkgABhasAAYXMAAGFzgABhdAAAYXSAAGF1AABhdYAAYXYAAGF2gABhdwAAYX9AAGGAAABhgMAAYYGAAGGCQABhgwAAYYPAAGGEgABhhUAAYYXAAGGkgABhpQAAYaWAAGGmAABhpsAAYacAAGGnQABhp4AAYafAAGGoQABhqMAAYakAAGGpQABhqcAAYaoAAGHIwABhyUAAYcnAAGHKQABhywAAYctAAGHLgABhy8AAYcwAAGHMgABhzQAAYc1AAGHNgABhzgAAYc5AAGHtAABh7YAAYe5AAGHuwABh74AAYe/AAGHwAABh8EAAYfCAAGHxAABh8YAAYfHAAGHyAABh8oAAYfLAAGH5AABh+UAAYfmAAGH6AABiGMAAYhlAAGIZwABiGkAAYhsAAGIbQABiG4AAYhvAAGIcAABiHIAAYh0AAGIdQABiHYAAYh4AAGIeQABiPQAAYj2AAGI+AABiPoAAYj9AAGI/gABiP8AAYkAAAGJAQABiQMAAYkFAAGJBgABiQcAAYkJAAGJCgABiYUAAYmHAAGJiQABiYsAAYmOAAGJjwABiZAAAYmRAAGJkgABiZQAAYmWAAGJlwABiZgAAYmaAAGJmwABihYAAYoYAAGKGgABihwAAYofAAGKIAABiiEAAYoiAAGKIwABiiUAAYonAAGKKAABiikAAYorAAGKLAABiqcAAYqpAAGKqwABiq0AAYqwAAGKsQABirIAAYqzAAGKtAABirYAAYq4AAGKuQABiroAAYq8AAGKvQABiwYAAYsqAAGLUQABi3UAAYt4AAGLegABi3wAAYt+AAGLgAABi4IAAYuDAAGLhgABi58AAYu8AAGLvgABi8AAAYvCAAGLxAABi8YAAYvIAAGLygABi+cAAYvqAAGL7QABi/AAAYvzAAGL9gABi/kAAYv8AAGL/gABjHkAAYx7AAGMfQABjH8AAYyCAAGMgwABjIQAAYyFAAGMhgABjIgAAYyKAAGMiwABjIwAAYyOAAGMjwABjQoAAY0MAAGNDgABjRAAAY0TAAGNFAABjRUAAY0WAAGNFwABjRkAAY0bAAGNHAABjR0AAY0fAAGNIAABjZsAAY2dAAGNnwABjaEAAY2kAAGNpQABjaYAAY2nAAGNqAABjaoAAY2sAAGNrQABja4AAY2wAAGNsQABjiwAAY4uAAGOMAABjjIAAY41AAGONgABjjcAAY44AAGOOQABjjsAAY49AAGOPgABjj8AAY5BAAGOQgABjr0AAY6/AAGOwQABjsMAAY7GAAGOxwABjsgAAY7JAAGOygABjswAAY7OAAGOzwABjtAAAY7SAAGO0wABj04AAY9QAAGPUwABj1UAAY9YAAGPWQABj1oAAY9bAAGPXAABj14AAY9gAAGPYQABj2IAAY9kAAGPZQABj3cAAY/yAAGP9AABj/YAAY/4AAGP+wABj/wAAY/9AAGP/gABj/8AAZABAAGQAwABkAQAAZAFAAGQBwABkAgAAZCbAAGQvgABkN4AAZD+AAGRAAABkQIAAZEEAAGRBgABkQkAAZEKAAGRCwABkQ4AAZEPAAGREQABkRIAAZEUAAGRFwABkRgAAZEZAAGRHAABkR0AAZEiAAGROwABkUQAAZFGAAGRSAABkVEAAZFUAAGRVwABkVkAAZGiAAGRxgABke0AAZIRAAGSFAABkhYAAZIYAAGSGgABkhwAAZIeAAGSHwABkiIAAZI7AAGSXAABkl4AAZJgAAGSYgABkmQAAZJmAAGSaAABkmoAAZJsAAGSjQABkpAAAZKTAAGSlgABkpkAAZKcAAGSnwABkqIAAZKlAAGSpwABkyIAAZMkAAGTJgABkygAAZMrAAGTLAABky0AAZMuAAGTLwABkzEAAZMzAAGTNAABkzUAAZM3AAGTOAABk7MAAZO1AAGTtwABk7kAAZO8AAGTvQABk74AAZO/AAGTwAABk8IAAZPEAAGTxQABk8YAAZPIAAGTyQABlEQAAZRGAAGUSQABlEsAAZROAAGUTwABlFAAAZRRAAGUUgABlFQAAZRWAAGUVwABlFgAAZRaAAGUWwABlHQAAZR1AAGUdgABlHgAAZTzAAGU9QABlPcAAZT5AAGU/AABlP0AAZT+AAGU/wABlQAAAZUCAAGVBAABlQUAAZUGAAGVCAABlQkAAZWEAAGVhgABlYgAAZWKAAGVjQABlY4AAZWPAAGVkAABlZEAAZWTAAGVlQABlZYAAZWXAAGVmQABlZoAAZYVAAGWFwABlhkAAZYbAAGWHgABlh8AAZYgAAGWIQABliIAAZYkAAGWJgABlicAAZYoAAGWKgABlisAAZamAAGWqAABlqoAAZasAAGWrwABlrAAAZaxAAGWsgABlrMAAZa1AAGWtwABlrgAAZa5AAGWuwABlrwAAZc3AAGXOQABlzsAAZc9AAGXQAABl0EAAZdCAAGXQwABl0QAAZdGAAGXSAABl0kAAZdKAAGXTAABl00AAZeWAAGXugABl+EAAZgFAAGYCAABmAoAAZgMAAGYDgABmBAAAZgSAAGYEwABmBYAAZgvAAGYTAABmE4AAZhQAAGYUgABmFQAAZhWAAGYWAABmFoAAZh3AAGYegABmH0AAZiAAAGYgwABmIYAAZiJAAGYjAABmI4AAZkJAAGZCwABmQ0AAZkPAAGZEgABmRMAAZkUAAGZFQABmRYAAZkYAAGZGgABmRsAAZkcAAGZHgABmR8AAZmaAAGZnAABmZ4AAZmgAAGZowABmaQAAZmlAAGZpgABmacAAZmpAAGZqwABmawAAZmtAAGZrwABmbAAAZorAAGaLQABmi8AAZoxAAGaNAABmjUAAZo2AAGaNwABmjgAAZo6AAGaPAABmj0AAZo+AAGaQAABmkEAAZq8AAGavgABmsAAAZrCAAGaxQABmsYAAZrHAAGayAABmskAAZrLAAGazQABms4AAZrPAAGa0QABmtIAAZtNAAGbTwABm1EAAZtTAAGbVgABm1cAAZtYAAGbWQABm1oAAZtcAAGbXgABm18AAZtgAAGbYgABm2MAAZveAAGb4AABm+IAAZvkAAGb5wABm+gAAZvpAAGb6gABm+sAAZvtAAGb7wABm/AAAZvxAAGb8wABm/QAAZxvAAGccQABnHMAAZx1AAGceAABnHkAAZx6AAGcewABnHwAAZx+AAGcgAABnIEAAZyCAAGchAABnIUAAZ0YAAGdOwABnVsAAZ17AAGdfQABnX8AAZ2BAAGdgwABnYYAAZ2HAAGdiAABnYsAAZ2MAAGdjgABnY8AAZ2SAAGdlQABnZYAAZ2XAAGdmgABnZsAAZ2gAAGduQABncIAAZ3EAAGdxwABndAAAZ3TAAGd1gABndgAAZ4hAAGeRQABnmwAAZ6QAAGekwABnpUAAZ6XAAGemQABnpsAAZ6dAAGengABnqEAAZ66AAGe2wABnt0AAZ7fAAGe4QABnuMAAZ7lAAGe5wABnukAAZ7rAAGfDAABnw8AAZ8SAAGfFQABnxgAAZ8bAAGfHgABnyEAAZ8kAAGfJgABn6EAAZ+jAAGfpQABn6cAAZ+qAAGfqwABn6wAAZ+tAAGfrgABn7AAAZ+yAAGfswABn7QAAZ+2AAGftwABoDIAAaA0AAGgNgABoDgAAaA7AAGgPAABoD0AAaA+AAGgPwABoEEAAaBDAAGgRAABoEUAAaBHAAGgSAABoMMAAaDFAAGgyAABoMoAAaDNAAGgzgABoM8AAaDQAAGg0QABoNMAAaDVAAGg1gABoNcAAaDZAAGg2gABoPMAAaD0AAGg9QABoPcAAaFyAAGhdAABoXYAAaF4AAGhewABoXwAAaF9AAGhfgABoX8AAaGBAAGhgwABoYQAAaGFAAGhhwABoYgAAaIDAAGiBQABogcAAaIJAAGiDAABog0AAaIOAAGiDwABohAAAaISAAGiFAABohUAAaIWAAGiGAABohkAAaKUAAGilgABopgAAaKaAAGinQABop4AAaKfAAGioAABoqEAAaKjAAGipQABoqYAAaKnAAGiqQABoqoAAaMlAAGjJwABoykAAaMrAAGjLgABoy8AAaMwAAGjMQABozIAAaM0AAGjNgABozcAAaM4AAGjOgABozsAAaO2AAGjuAABo7oAAaO8AAGjvwABo8AAAaPBAAGjwgABo8MAAaPFAAGjxwABo8gAAaPJAAGjywABo8wAAaQVAAGkOQABpGAAAaSEAAGkhwABpIoAAaSMAAGkjgABpJAAAaSSAAGkkwABpJYAAaSvAAGkzAABpM8AAaTSAAGk1QABpNgAAaTbAAGk3gABpOEAAaT+AAGlAQABpQQAAaUHAAGlCgABpQ0AAaUQAAGlEwABpRUAAaWQAAGlkgABpZUAAaWXAAGlmgABpZsAAaWcAAGlnQABpZ4AAaWgAAGlowABpaQAAaWlAAGlpwABpagAAaYjAAGmJQABpigAAaYqAAGmLQABpi4AAaYvAAGmMAABpjEAAaYzAAGmNgABpjcAAaY4AAGmOgABpjsAAaY9AAGmuAABproAAaa9AAGmvwABpsIAAabDAAGmxAABpsUAAabGAAGmyAABpssAAabMAAGmzQABps8AAabQAAGnSwABp00AAadPAAGnUQABp1QAAadVAAGnVgABp1cAAadYAAGnWgABp10AAadeAAGnXwABp2EAAadiAAGn3QABp98AAafhAAGn4wABp+YAAafnAAGn6AABp+kAAafqAAGn7AABp+8AAafwAAGn8QABp/MAAaf0AAGobwABqHEAAahzAAGodQABqHgAAah5AAGoegABqHsAAah8AAGofgABqIEAAaiCAAGogwABqIUAAaiGAAGpAQABqQMAAakGAAGpCAABqQsAAakMAAGpDQABqQ4AAakPAAGpEQABqRQAAakVAAGpFgABqRgAAakZAAGpKgABqT0AAalWAAGpaQABqXYAAamJAAGpoAABqbIAAapFAAGqaAABqogAAaqoAAGqqgABqqwAAaquAAGqsAABqrMAAaq0AAGqtQABqrgAAaq5AAGquwABqrwAAaq/AAGqwgABqsMAAarEAAGqxwABqsgAAarNAAGq5gABqu8AAarxAAGq9AABqv0AAasAAAGrAwABqwUAAatOAAGrcgABq5kAAau9AAGrwAABq8IAAavEAAGrxgABq8gAAavKAAGrywABq84AAavnAAGsCAABrAoAAawMAAGsDgABrBAAAawSAAGsFAABrBYAAawYAAGsOQABrDwAAaw/AAGsQgABrEUAAaxIAAGsSwABrE4AAaxRAAGsUwABrM4AAazQAAGs0gABrNQAAazXAAGs2AABrNkAAazaAAGs2wABrN0AAazfAAGs4AABrOEAAazjAAGs5AABrV8AAa1hAAGtYwABrWUAAa1oAAGtaQABrWoAAa1rAAGtbAABrW4AAa1wAAGtcQABrXIAAa10AAGtdQABrfAAAa3yAAGt9QABrfcAAa36AAGt+wABrfwAAa39AAGt/gABrgAAAa4CAAGuAwABrgQAAa4GAAGuBwABriAAAa4hAAGuIgABriQAAa6fAAGuoQABrqMAAa6lAAGuqAABrqkAAa6qAAGuqwABrqwAAa6uAAGusAABrrEAAa6yAAGutAABrrUAAa8wAAGvMgABrzQAAa82AAGvOQABrzoAAa87AAGvPAABrz0AAa8/AAGvQQABr0IAAa9DAAGvRQABr0YAAa/BAAGvwwABr8UAAa/HAAGvygABr8sAAa/MAAGvzQABr84AAa/QAAGv0gABr9MAAa/UAAGv1gABr9cAAbBSAAGwVAABsFYAAbBYAAGwWwABsFwAAbBdAAGwXgABsF8AAbBhAAGwYwABsGQAAbBlAAGwZwABsGgAAbDjAAGw5QABsOcAAbDpAAGw7AABsO0AAbDuAAGw7wABsPAAAbDyAAGw9AABsPUAAbD2AAGw+AABsPkAAbFCAAGxZgABsY0AAbGxAAGxtAABsbcAAbG5AAGxuwABsb0AAbG/AAGxwAABscMAAbHcAAGx+QABsfwAAbH/AAGyAgABsgUAAbIIAAGyCwABsg4AAbIrAAGyLgABsjEAAbI0AAGyNwABsjoAAbI9AAGyQAABskIAAbK9AAGyvwABssIAAbLEAAGyxwABssgAAbLJAAGyygABsssAAbLNAAGy0AABstEAAbLSAAGy1AABstUAAbNQAAGzUgABs1UAAbNXAAGzWgABs1sAAbNcAAGzXQABs14AAbNgAAGzYwABs2QAAbNlAAGzZwABs2gAAbPjAAGz5QABs+gAAbPqAAGz7QABs+4AAbPvAAGz8AABs/EAAbPzAAGz9gABs/cAAbP4AAGz+gABs/sAAbR2AAG0eAABtHsAAbR9AAG0gAABtIEAAbSCAAG0gwABtIQAAbSGAAG0iQABtIoAAbSLAAG0jQABtI4AAbURAAG1NQABtVkAAbV8AAG1owABtcMAAbXqAAG2EQABtjEAAbZVAAG2eQABtnsAAbZ+AAG2gAABtoIAAbaEAAG2hwABtooAAbaMAAG2jgABtpEAAbaTAAG2lQABtpgAAbabAAG2nAABtqUAAba+AAG2wwABtsUAAbbKAAG2zQABts8AAbcYAAG3PAABt2MAAbeHAAG3igABt4wAAbeOAAG3kAABt5IAAbeUAAG3lQABt5gAAbexAAG31gABt9gAAbfaAAG33AABt94AAbfgAAG34gABt+QAAbfmAAG36AABuA0AAbgQAAG4EwABuBYAAbgZAAG4HAABuB8AAbgiAAG4JQABuCgAAbgqAAG4pQABuKcAAbiqAAG4rAABuK8AAbiwAAG4sQABuLIAAbizAAG4tQABuLcAAbi4AAG4uQABuLsAAbi8AAG4zQABuM4AAbjQAAG5SwABuU0AAblPAAG5UQABuVQAAblVAAG5VgABuVcAAblYAAG5WgABuVwAAbldAAG5XgABuWAAAblhAAG53AABud4AAbnhAAG54wABueYAAbnnAAG56AABuekAAbnqAAG57AABue4AAbnvAAG58AABufIAAbnzAAG6BAABugUAAboHAAG6ggABuoQAAbqGAAG6iAABuosAAbqMAAG6jQABuo4AAbqPAAG6kQABupMAAbqUAAG6lQABupcAAbqYAAG7EwABuxUAAbsYAAG7GgABux0AAbseAAG7HwABuyAAAbshAAG7IwABuyUAAbsmAAG7JwABuykAAbsqAAG7OwABuzwAAbs+AAG7uQABu7sAAbu9AAG7vwABu8IAAbvDAAG7xAABu8UAAbvGAAG7yAABu8oAAbvLAAG7zAABu84AAbvPAAG8SgABvEwAAbxPAAG8UQABvFQAAbxVAAG8VgABvFcAAbxYAAG8WgABvFwAAbxdAAG8XgABvGAAAbxhAAG8egABvHsAAbx8AAG8fgABvPkAAbz7AAG8/QABvP8AAb0CAAG9AwABvQQAAb0FAAG9BgABvQgAAb0KAAG9CwABvQwAAb0OAAG9DwABvYoAAb2MAAG9jwABvZEAAb2UAAG9lQABvZYAAb2XAAG9mAABvZoAAb2cAAG9nQABvZ4AAb2gAAG9oQABva0AAb3GAAG92wABvd4AAb3hAAG95AABvecAAb3qAAG9/wABvgIAAb4FAAG+CAABvgsAAb4OAAG+EAABviYAAb4xAAG+PQABvlMAAb5dAAG+8AABvxMAAb8zAAG/UwABv1UAAb9XAAG/WQABv1sAAb9eAAG/XwABv2AAAb9jAAG/ZAABv2YAAb9nAAG/aQABv2wAAb9tAAG/bgABv3EAAb9yAAG/dwABv5AAAb+ZAAG/mwABv50AAb+mAAG/qQABv6wAAb+uAAG/9wABwBsAAcBCAAHAZgABwGkAAcBrAAHAbQABwG8AAcBxAAHAcwABwHQAAcB3AAHAkAABwLEAAcCzAAHAtQABwLcAAcC5AAHAuwABwL0AAcC/AAHAwQABwOIAAcDlAAHA6AABwOsAAcDuAAHA8QABwPQAAcD3AAHA+gABwPwAAcF3AAHBeQABwXsAAcF9AAHBgAABwYEAAcGCAAHBgwABwYQAAcGGAAHBiAABwYkAAcGKAAHBjAABwY0AAcIIAAHCCgABwgwAAcIOAAHCEQABwhIAAcITAAHCFAABwhUAAcIXAAHCGQABwhoAAcIbAAHCHQABwh4AAcKZAAHCmwABwp4AAcKgAAHCowABwqQAAcKlAAHCpgABwqcAAcKpAAHCqwABwqwAAcKtAAHCrwABwrAAAcLJAAHCygABwssAAcLNAAHDSAABw0oAAcNMAAHDTgABw1EAAcNSAAHDUwABw1QAAcNVAAHDVwABw1kAAcNaAAHDWwABw10AAcNeAAHD2QABw9sAAcPdAAHD3wABw+IAAcPjAAHD5AABw+UAAcPmAAHD6AABw+oAAcPrAAHD7AABw+4AAcPvAAHEagABxGwAAcRuAAHEcAABxHMAAcR0AAHEdQABxHYAAcR3AAHEeQABxHsAAcR8AAHEfQABxH8AAcSAAAHE+wABxP0AAcT/AAHFAQABxQQAAcUFAAHFBgABxQcAAcUIAAHFCgABxQwAAcUNAAHFDgABxRAAAcURAAHFjAABxY4AAcWQAAHFkgABxZUAAcWWAAHFlwABxZgAAcWZAAHFmwABxZ0AAcWeAAHFnwABxaEAAcWiAAHF6wABxg8AAcY2AAHGWgABxl0AAcZfAAHGYQABxmMAAcZlAAHGZwABxmgAAcZrAAHGhAABxqEAAcajAAHGpQABxqcAAcapAAHGqwABxq0AAcavAAHGzAABxs8AAcbSAAHG1QABxtgAAcbbAAHG3gABxuEAAcbjAAHHXgABx2AAAcdiAAHHZAABx2cAAcdoAAHHaQABx2oAAcdrAAHHbQABx28AAcdwAAHHcQABx3MAAcd0AAHH7wABx/EAAcfzAAHH9QABx/gAAcf5AAHH+gABx/sAAcf8AAHH/gAByAAAAcgBAAHIAgAByAQAAcgFAAHIgAAByIIAAciEAAHIhgAByIkAAciKAAHIiwAByIwAAciNAAHIjwAByJEAAciSAAHIkwAByJUAAciWAAHJEQAByRMAAckWAAHJGAAByRsAAckcAAHJHQAByR4AAckfAAHJIQABySMAAckkAAHJJQAByScAAckoAAHJowAByaUAAcmnAAHJqQAByawAAcmtAAHJrgABya8AAcmwAAHJsgABybQAAcm1AAHJtgABybgAAcm5AAHKNAAByjYAAco4AAHKOgAByj0AAco+AAHKPwABykAAAcpBAAHKQwABykUAAcpGAAHKRwABykkAAcpKAAHKxQAByscAAcrJAAHKywABys4AAcrPAAHK0AABytEAAcrSAAHK1AABytYAAcrXAAHK2AABytoAAcrbAAHLbgABy5EAAcuxAAHL0QABy9MAAcvVAAHL1wABy9kAAcvcAAHL3QABy94AAcvhAAHL4gABy+QAAcvlAAHL5wABy+oAAcvrAAHL7AABy+8AAcvwAAHL9QABzA4AAcwXAAHMGQABzBsAAcwkAAHMJwABzCoAAcwsAAHMdQABzJkAAczAAAHM5AABzOcAAczpAAHM6wABzO0AAczvAAHM8QABzPIAAcz1AAHNDgABzS8AAc0xAAHNMwABzTUAAc03AAHNOQABzTsAAc09AAHNPwABzWAAAc1jAAHNZgABzWkAAc1sAAHNbwABzXIAAc11AAHNeAABzXoAAc31AAHN9wABzfkAAc37AAHN/gABzf8AAc4AAAHOAQABzgIAAc4EAAHOBgABzgcAAc4IAAHOCgABzgsAAc6GAAHOiAABzooAAc6MAAHOjwABzpAAAc6RAAHOkgABzpMAAc6VAAHOlwABzpgAAc6ZAAHOmwABzpwAAc8XAAHPGQABzxwAAc8eAAHPIQABzyIAAc8jAAHPJAABzyUAAc8nAAHPKQABzyoAAc8rAAHPLQABzy4AAc9HAAHPSAABz0kAAc9LAAHPxgABz8gAAc/KAAHPzAABz88AAc/QAAHP0QABz9IAAc/TAAHP1QABz9cAAc/YAAHP2QABz9sAAc/cAAHQVwAB0FkAAdBbAAHQXQAB0GAAAdBhAAHQYgAB0GMAAdBkAAH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FcwACBXUAAgV3AAIFegACBXsAAgV8AAIFfQACBX4AAgWAAAIFggACBYMAAgWEAAIFhgACBYcAAgYCAAIGBAACBgYAAgYIAAIGCwACBgwAAgYNAAIGDgACBg8AAgYRAAIGEwACBhQAAgYVAAIGFwACBhgAAgaTAAIGlQACBpcAAgaZAAIGnAACBp0AAgaeAAIGnwACBqAAAgaiAAIGpAACBqUAAgamAAIGqAACBqkAAgbyAAIHFgACBz0AAgdhAAIHZAACB2YAAgdoAAIHagACB2wAAgduAAIHbwACB3IAAgeLAAIHqAACB6oAAgesAAIHrgACB7AAAgeyAAIHtAACB7YAAgfTAAIH1gACB9kAAgfcAAIH3wACB+IAAgflAAIH6AACB+oAAghlAAIIZwACCGkAAghrAAIIbgACCG8AAghwAAIIcQACCHIAAgh0AAIIdgACCHcAAgh4AAIIegACCHsAAgj2AAII+AACCPoAAgj8AAII/wACCQAAAgkBAAIJAgACCQMAAgkFAAIJBwACCQgAAgkJAAIJCwACCQwAAgmHAAIJiQACCYsAAgmNAAIJkAACCZEAAgmSAAIJkwACCZQAAgmWAAIJmAACCZkAAgmaAAIJnAACCZ0AAgoYAAIKGgACChwAAgoeAAIKIQACCiIAAgojAAIKJAACCiUAAgonAAIKKQACCioAAgorAAIKLQACCi4AAgqpAAIKqwACCq0AAgqvAAIKsgACCrMAAgq0AAIKtQACCrYAAgq4AAIKugACCrsAAgq8AAIKvgACCr8AAgs6AAILPAACCz4AAgtAAAILQwACC0QAAgtFAAILRgACC0cAAgtJAAILSwACC0wAAgtNAAILTwACC1AAAgvLAAILzQACC88AAgvRAAIL1AACC9UAAgvWAAIL1wACC9gAAgvaAAIL3AACC90AAgveAAIL4AACC+EAAgvyAAIL8wACC/UAAgxwAAIMcgACDHQAAgx2AAIMeQACDHoAAgx7AAIMfAACDH0AAgx/AAIMggACDIMAAgyEAAIMhgACDIcAAg0CAAINBAACDQYAAg0IAAINCwACDQwAAg0NAAINDgACDQ8AAg0RAAINFAACDRUAAg0WAAINGAACDRkAAg2UAAINlgACDZkAAg2bAAINngACDZ8AAg2gAAINoQACDaIAAg2kAAINpwACDagAAg2pAAINqwACDawAAg29AAINvgACDcAAAg5DAAIOZwACDosAAg6uAAIO1QACDvUAAg8cAAIPQwACD2MAAg+HAAIPqwACD60AAg+wAAIPsgACD7QAAg+2AAIPuQACD7wAAg++AAIPwAACD8MAAg/FAAIPxwACD8oAAg/NAAIPzgACD9cAAg/wAAIP9QACD/cAAg/8AAIP/wACEAEAAhBKAAIQbgACEJUAAhC5AAIQvAACEL4AAhDAAAIQwgACEMQAAhDGAAIQxwACEMoAAhDjAAIRCAACEQoAAhEMAAIRDgACERAAAhESAAIRFAACERYAAhEYAAIRGgACET8AAhFCAAIRRQACEUgAAhFLAAIRTgACEVEAAhFUAAIRVwACEVoAAhFcAAIR1wACEdkAAhHcAAIR3gACEeEAAhHiAAIR4wACEeQAAhHlAAIR5wACEekAAhHqAAIR6wACEe0AAhHuAAIR/wACEgAAAhICAAISfQACEn8AAhKBAAISgwACEoYAAhKHAAISiAACEokAAhKKAAISjAACEo4AAhKPAAISkAACEpIAAhKTAAITDgACExAAAhMTAAITFQACExgAAhMZAAITGgACExsAAhMcAAITHgACEyAAAhMhAAITIgACEyQAAhMlAAITNgACEzsAAhM+AAITQAACE1EAAhNaAAITXQACE2AAAhNiAAITfgACE5AAAhQLAAIUDQACFA8AAhQRAAIUFAACFBUAAhQWAAIUFwACFBgAAhQaAAIUHAACFB0AAhQeAAIUIAACFCEAAhScAAIUngACFKEAAhSjAAIUpgACFKcAAhSoAAIUqQACFKoAAhSsAAIUrgACFK8AAhSwAAIUsgACFLMAAhTEAAIUxQACFMcAAhVCAAIVRAACFUYAAhVIAAIVSwACFUwAAhVNAAIVTgACFU8AAhVRAAIVUwACFVQAAhVVAAIVVwACFVgAAhXTAAIV1QACFdgAAhXaAAIV3QACFd4AAhXfAAIV4AACFeEAAhXjAAIV5QACFeYAAhXnAAIV6QACFeoAAhYDAAIWBAACFgUAAhYHAAIWggACFoQAAhaGAAIWiAACFosAAhaMAAIWjQACFo4AAhaPAAIWkQACFpMAAhaUAAIWlQACFpcAAhaYAAIXEwACFxUAAhcYAAIXGgACFx0AAhceAAIXHwACFyAAAhchAAIXIwACFyUAAhcmAAIXJwACFykAAhcqAAIXNwACF1AAAheJAAIXjAACF48AAheSAAIXlQACF5gAAhebAAIXngACF6EAAhekAAIXpwACF6oAAhetAAIXsAACF7MAAhfsAAIX7wACF/IAAhf1AAIX+AACF/sAAhf+AAIYAQACGAQAAhgHAAIYCgACGA0AAhgQAAIYEwACGBYAAhgYAAIYNAACGEIAAhhbAAIYagACGI0AAhihAAIYtgACGMEAAhjaAAIY7QACGRIAAhkwAAIZQgACGWEAAhn0AAIaFwACGjcAAhpXAAIaWQACGlsAAhpdAAIaXwACGmIAAhpjAAIaZAACGmcAAhpoAAIaagACGmsAAhptAAIacAACGnEAAhpyAAIadQACGnYAAhp7AAIalAACGp0AAhqfAAIaoQACGqoAAhqtAAIasAACGrIAAhr7AAIbHwACG0YAAhtqAAIbbQACG28AAhtxAAIbcwACG3UAAht3AAIbeAACG3sAAhuUAAIbtQACG7cAAhu5AAIbuwACG70AAhu/AAIbwQACG8MAAhvFAAIb5gACG+kAAhvsAAIb7wACG/IAAhv1AAIb+AACG/sAAhv+AAIcAAACHHsAAhx9AAIcfwACHIEAAhyEAAIchQACHIYAAhyHAAIciAACHIoAAhyMAAIcjQACHI4AAhyQAAIckQACHQwAAh0OAAIdEAACHRIAAh0VAAIdFgACHRcAAh0YAAIdGQACHRsAAh0dAAIdHgACHR8AAh0hAAIdIgACHZ0AAh2fAAIdogACHaQAAh2nAAIdqAACHakAAh2qAAIdqwACHa0AAh2vAAIdsAACHbEAAh2zAAIdtAACHc0AAh3OAAIdzwACHdEAAh5MAAIeTgACHlAAAh5SAAIeVQACHlYAAh5XAAIeWAACHlkAAh5bAAIeXQACHl4AAh5fAAIeYQACHmIAAh7dAAIe3wACHuEAAh7jAAIe5gACHucAAh7oAAIe6QACHuoAAh7sAAIe7gACHu8AAh7wAAIe8gACHvMAAh9uAAIfcAACH3IAAh90AAIfdwACH3gAAh95AAIfegACH3sAAh99AAIffwACH4AAAh+BAAIfgwACH4QAAh//AAIgAQACIAMAAiAFAAIgCAACIAkAAiAKAAIgCwACIAwAAiAOAAIgEAACIBEAAiASAAIgFAACIBUAAiCQAAIgkgACIJQAAiCWAAIgmQACIJoAAiCbAAIgnAACIJ0AAiCfAAIgoQACIKIAAiCjAAIgpQACIKYAAiDvAAIhEwACIToAAiFeAAIhYQACIWMAAiFlAAIhZwACIWkAAiFrAAIhbAACIW8AAiGIAAIhpQACIacAAiGpAAIhqwACIa0AAiGvAAIhsQACIbMAAiHQAAIh0wACIdYAAiHZAAIh3AACId8AAiHiAAIh5QACIecAAiJiAAIiZAACImYAAiJoAAIiawACImwAAiJtAAIibgACIm8AAiJxAAIicwACInQAAiJ1AAIidwACIngAAiLzAAIi9QACIvcAAiL5AAIi/AACIv0AAiL+AAIi/wACIwAAAiMCAAIjBAACIwUAAiMGAAIjCAACIwkAAiOEAAIjhgACI4gAAiOKAAIjjQACI44AAiOPAAIjkAACI5EAAiOTAAIjlQACI5YAAiOXAAIjmQACI5oAAiQVAAIkFwACJBoAAiQcAAIkHwACJCAAAiQhAAIkIgACJCMAAiQlAAIkJwACJCgAAiQpAAIkKwACJCwAAiSnAAIkqQACJKsAAiStAAIksAACJLEAAiSyAAIkswACJLQAAiS2AAIkuAACJLkAAiS6AAIkvAACJL0AAiU4AAIlOgACJT0AAiU/AAIlQgACJUMAAiVEAAIlRQACJUYAAiVIAAIlSgACJUsAAiVMAAIlTgACJU8AAiVeAAIl2QACJdsAAiXdAAIl3wACJeIAAiXjAAIl5AACJeUAAiXmAAIl6AACJeoAAiXrAAIl7AACJe4AAiXvAAImggACJqUAAibFAAIm5QACJucAAibpAAIm6wACJu0AAibwAAIm8QACJvIAAib1AAIm9gACJvgAAib5AAIm/AACJv8AAicAAAInAQACJwQAAicFAAInCgACJyMAAicsAAInLgACJzEAAic6AAInPQACJ0AAAidCAAIniwACJ68AAifWAAIn+gACJ/0AAif/AAIoAQACKAMAAigFAAIoBwACKAgAAigLAAIoJAACKEUAAihHAAIoSQACKEsAAihNAAIoTwACKFEAAihTAAIoVQACKHYAAih5AAIofAACKH8AAiiCAAIohQACKIgAAiiLAAIojgACKJAAAikLAAIpDQACKQ8AAikRAAIpFAACKRUAAikWAAIpFwACKRgAAikaAAIpHAACKR0AAikeAAIpIAACKSEAAimcAAIpngACKaAAAimiAAIppQACKaYAAimnAAIpqAACKakAAimrAAIprQACKa4AAimvAAIpsQACKbIAAiotAAIqLwACKjIAAio0AAIqNwACKjgAAio5AAIqOgACKjsAAio9AAIqPwACKkAAAipBAAIqQwACKkQAAipdAAIqXgACKl8AAiphAAIq3AACKt4AAirgAAIq4gACKuUAAirmAAIq5wACKugAAirpAAIq6wACKu0AAiruAAIq7wACKvEAAiryAAIrbQACK28AAitxAAIrcwACK3YAAit3AAIreAACK3kAAit6AAIrfAACK34AAit/AAIrgAACK4IAAiuDAAIr/gACLAAAAiwCAAIsBAACLAcAAiwIAAIsCQACLAoAAiwLAAIsDQACLA8AAiwQAAIsEQACLBMAAiwUAAIsjwACLJEAAiyTAAIslQACLJgAAiyZAAIsmgACLJsAAiycAAIsngACLKAAAiyhAAIsogACLKQAAiylAAItIAACLSIAAi0kAAItJgACLSkAAi0qAAItKwACLSwAAi0tAAItLwACLTEAAi0yAAItMwACLTUAAi02AAItfwACLaMAAi3KAAIt7gACLfEAAi30AAIt9gACLfgAAi36AAIt/AACLf0AAi4AAAIuGQACLjYAAi45AAIuPAACLj8AAi5CAAIuRQACLkgAAi5LAAIuaAACLmsAAi5uAAIucQACLnQAAi53AAIuegACLn0AAi5/AAIu+gACLvwAAi7/AAIvAQACLwQAAi8FAAIvBgACLwcAAi8IAAIvCgACLw0AAi8OAAIvDwACLxEAAi8SAAIvjQACL48AAi+SAAIvlAACL5cAAi+YAAIvmQACL5oAAi+bAAIvnQACL6AAAi+hAAIvogACL6QAAi+lAAIwIAACMCIAAjAlAAIwJwACMCoAAjArAAIwLAACMC0AAjAuAAIwMAACMDMAAjA0AAIwNQACMDcAAjA4AAIwswACMLUAAjC4AAIwugACML0AAjC+AAIwvwACMMAAAjDBAAIwwwACMMYAAjDHAAIwyAACMMoAAjDLAAIxTgACMXIAAjGWAAIxuQACMeAAAjIAAAIyJwACMk4AAjJuAAIykgACMrYAAjK4AAIyuwACMr0AAjK/AAIywQACMsQAAjLHAAIyyQACMssAAjLOAAIy0AACMtIAAjLVAAIy2AACMtkAAjLiAAI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EXgACRGAAAkTbAAJE3QACRN8AAkThAAJE5AACROUAAkTmAAJE5wACROgAAkTqAAJE7AACRO0AAkTuAAJE8AACRPEAAkVsAAJFbgACRXAAAkVyAAJFdQACRXYAAkV3AAJFeAACRXkAAkV7AAJFfQACRX4AAkV/AAJFgQACRYIAAkX9AAJF/wACRgEAAkYDAAJGBgACRgcAAkYIAAJGCQACRgoAAkYMAAJGDgACRg8AAkYQAAJGEgACRhMAAkaOAAJGkAACRpMAAkaVAAJGmAACRpkAAkaaAAJGmwACRpwAAkaeAAJGoAACRqEAAkaiAAJGpAACRqUAAkcgAAJHIgACRyQAAkcmAAJHKQACRyoAAkcrAAJHLAACRy0AAkcvAAJHMQACRzIAAkczAAJHNQACRzYAAkexAAJHswACR7UAAke3AAJHugACR7sAAke8AAJHvQACR74AAkfAAAJHwgACR8MAAkfEAAJHxgACR8cAAkhCAAJIRAACSEYAAkhIAAJISwACSEwAAkhNAAJITgACSE8AAkhRAAJIUwACSFQAAkhVAAJIVwACSFgAAkjrAAJJDgACSS4AAklOAAJJUAACSVIAAklUAAJJVgACSVkAAklaAAJJWwACSV4AAklfAAJJYQACSWIAAklkAAJJZwACSWgAAklpAAJJbAACSW0AAklyAAJJiwACSZQAAkmWAAJJmAACSaEAAkmkAAJJpwACSakAAknyAAJKFgACSj0AAkphAAJKZAACSmYAAkpoAAJKagACSmwAAkpuAAJKbwACSnIAAkqLAAJKrAACSq4AAkqwAAJKsgACSrQAAkq2AAJKuAACSroAAkq8AAJK3QACSuAAAkrjAAJK5gACSukAAkrsAAJK7wACSvIAAkr1AAJK9wACS3IAAkt0AAJLdgACS3gAAkt7AAJLfAACS30AAkt+AAJLfwACS4EAAkuDAAJLhAACS4UAAkuHAAJLiAACTAMAAkwFAAJMBwACTAkAAkwMAAJMDQACTA4AAkwPAAJMEAACTBIAAkwUAAJMFQACTBYAAkwYAAJMGQACTJQAAkyWAAJMmQACTJsAAkyeAAJMnwACTKAAAkyhAAJMogACTKQAAkymAAJMpwACTKgAAkyqAAJMqwACTMQAAkzFAAJMxgACTMgAAk1DAAJNRQACTUcAAk1JAAJNTAACTU0AAk1OAAJNTwACTVAAAk1SAAJNVAACTVUAAk1WAAJNWAACTVkAAk3UAAJN1gACTdgAAk3aAAJN3QACTd4AAk3fAAJN4AACTeEAAk3jAAJN5QACTeYAAk3nAAJN6QACTeoAAk5lAAJOZwACTmkAAk5rAAJObgACTm8AAk5wAAJOcQACTnIAAk50AAJOdgACTncAAk54AAJOegACTnsAAk72AAJO+AACTvoAAk78AAJO/wACTwAAAk8BAAJPAgACTwMAAk8FAAJPBwACTwgAAk8JAAJPCwACTwwAAk+HAAJPiQACT4sAAk+NAAJPkAACT5EAAk+SAAJPkwACT5QAAk+WAAJPmAACT5kAAk+aAAJPnAACT50AAk/mAAJQCgACUDEAAlBVAAJQWAACUFoAAlBcAAJQXgACUGAAAlBiAAJQYwACUGYAAlB/AAJQnAACUJ4AAlCgAAJQogACUKQAAlCmAAJQqAACUKoAAlDHAAJQygACUM0AAlDQAAJQ0wACUNYAAlDZAAJQ3AACUN4AAlFZAAJRWwACUV0AAlFfAAJRYgACUWMAAlFkAAJRZQACUWYAAlFoAAJRagACUWsAAlFsAAJRbgACUW8AAlHqAAJR7AACUe4AAlHwAAJR8wACUfQAAlH1AAJR9gACUfcAAlH5AAJR+wACUfwAAlH9AAJR/wACUgAAAlJ7AAJSfQACUn8AAlKBAAJShAACUoUAAlKGAAJShwACUogAAlKKAAJSjAACUo0AAlKOAAJSkAACUpEAAlMMAAJTDgACUxEAAlMTAAJTFgACUxcAAlMYAAJTGQACUxoAAlMcAAJTHgACUx8AAlMgAAJTIgACUyMAAlOeAAJToAACU6IAAlOkAAJTpwACU6gAAlOpAAJTqgACU6sAAlOtAAJTrwACU7AAAlOxAAJTswACU7QAAlQvAAJUMQACVDMAAlQ1AAJUOAACVDkAAlQ6AAJUOwACVDwAAlQ+AAJUQAACVEEAAlRCAAJURAACVEUAAlTAAAJUwgACVMQAAlTGAAJUyQACVMoAAlTLAAJUzAACVM0AAlTPAAJU0QACVNIAAlTTAAJU1QACVNYAAlVpAAJVjAACVawAAlXMAAJVzgACVdAAAlXSAAJV1AACVdcAAlXYAAJV2QACVdwAAlXdAAJV3wACVeAAAlXiAAJV5QACVeYAAlXnAAJV6gACVesAAlXwAAJWCQACVhIAAlYUAAJWFgACVh8AAlYiAAJWJQACVicAAlZwAAJWlAACVrsAAlbfAAJW4gACVuQAAlbmAAJW6AACVuoAAlbsAAJW7QACVvAAAlcJAAJXKgACVywAAlcuAAJXMAACVzIAAlc0AAJXNgACVzgAAlc6AAJXWwACV14AAldhAAJXZAACV2cAAldqAAJXbQACV3AAAldzAAJXdQACV/AAAlfyAAJX9AACV/YAAlf5AAJX+gACV/sAAlf8AAJX/QACV/8AAlgBAAJYAgACWAMAAlgFAAJYBgACWIEAAliDAAJYhQACWIcAAliKAAJYiwACWIwAAliNAAJYjgACWJAAAliSAAJYkwACWJQAAliWAAJYlwACWRIAAlkUAAJZFwACWRkAAlkcAAJZHQACWR4AAlkfAAJZIAACWSIAAlkkAAJZJQACWSYAAlkoAAJZKQACWUIAAllDAAJZRAACWUYAAlnBAAJZwwACWcUAAlnHAAJZygACWcsAAlnMAAJZzQACWc4AAlnQAAJZ0gACWdMAAlnUAAJZ1gACWdcAAlpSAAJaVAACWlYAAlpYAAJaWwACWlwAAlpdAAJaXgACWl8AAlphAAJaYwACWmQAAlplAAJaZwACWmgAAlrjAAJa5QACWucAAlrpAAJa7AACWu0AAlruAAJa7wACWvAAAlryAAJa9AACWvUAAlr2AAJa+AACWvkAAlt0AAJbdgACW3gAAlt6AAJbfQACW34AAlt/AAJbgAACW4EAAluDAAJbhQACW4YAAluHAAJbiQACW4oAAlwFAAJcBwACXAkAAlwLAAJcDgACXA8AAlwQAAJcEQACXBIAAlwUAAJcFgACXBcAAlwYAAJcGgACXBsAAlxkAAJciAACXK8AAlzTAAJc1gACXNgAAlzaAAJc3AACXN4AAlzgAAJc4QACXOQAAlz9AAJdGgACXRwAAl0eAAJdIAACXSIAAl0kAAJdJgACXSgAAl1FAAJdSAACXUsAAl1OAAJdUQACXVQAAl1XAAJdWgACXVwAAl3XAAJd2QACXdsAAl3dAAJd4AACXeEAAl3iAAJd4wACXeQAAl3mAAJd6AACXekAAl3qAAJd7AACXe0AAl5oAAJeagACXmwAAl5uAAJecQACXnIAAl5zAAJedAACXnUAAl53AAJeeQACXnoAAl57AAJefQACXn4AAl75AAJe+wACXv0AAl7/AAJfAgACXwMAAl8EAAJfBQACXwYAAl8IAAJfCgACXwsAAl8MAAJfDgACXw8AAl+KAAJfjAACX44AAl+QAAJfkwACX5QAAl+VAAJflgACX5cAAl+ZAAJfmwACX5wAAl+dAAJfnwACX6AAAmAbAAJgHQACYB8AAmAhAAJgJAACYCUAAmAmAAJgJwACYCgAAmAqAAJgLAACYC0AAmAuAAJgMAACYDEAAmCsAAJgrgACYLAAAmCyAAJgtQACYLYAAmC3AAJguAACYLkAAmC7AAJgvQACYL4AAmC/AAJgwQACYMIAAmE9AAJhPwACYUEAAmFDAAJhRgACYUcAAmFIAAJhSQACYUoAAmFMAAJhTgACYU8AAmFQAAJhUgACYVMAAmHmAAJiCQACYikAAmJJAAJiSwACYk0AAmJPAAJiUQACYlQAAmJVAAJiVgACYlkAAmJaAAJiXAACYl0AAmJgAAJiYwACYmQAAmJlAAJiaAACYmkAAmJuAAJihwACYpAAAmKSAAJilQACYp4AAmKhAAJipAACYqYAAmLvAAJjEwACYzoAAmNeAAJjYQACY2MAAmNlAAJjZwACY2kAAmNrAAJjbAACY28AAmOIAAJjqQACY6sAAmOtAAJjrwACY7EAAmOzAAJjtQACY7cAAmO5AAJj2gACY90AAmPgAAJj4wACY+YAAmPpAAJj7AACY+8AAmPyAAJj9AACZG8AAmRxAAJkcwACZHUAAmR4AAJkeQACZHoAAmR7AAJkfAACZH4AAmSAAAJkgQACZIIAAmSEAAJkhQACZQAAAmUCAAJlBAACZQYAAmUJAAJlCgACZQsAAmUMAAJlDQACZQ8AAmURAAJlEgACZRMAAmUVAAJlFgACZZEAAmWTAAJllgACZZgAAmWbAAJlnAACZZ0AAmWeAAJlnwACZaEAAmWjAAJlpAACZaUAAmWnAAJlqAACZcEAAmXCAAJlwwACZcUAAmZAAAJmQgACZkQAAmZGAAJmSQACZkoAAmZLAAJmTAACZk0AAmZPAAJmUQACZlIAAmZTAAJmVQACZlYAAmbRAAJm0wACZtUAAmbXAAJm2gACZtsAAmbcAAJm3QACZt4AAmbgAAJm4gACZuMAAmbkAAJm5gACZucAAmdiAAJnZAACZ2YAAmdoAAJnawACZ2wAAmdtAAJnbgACZ28AAmdxAAJncwACZ3QAAmd1AAJndwACZ3gAAmfzAAJn9QACZ/cAAmf5AAJn/AACZ/0AAmf+AAJn/wACaAAAAmgCAAJoBAACaAUAAmgGAAJoCAACaAkAAmiEAAJohgACaIgAAmiKAAJojQACaI4AAmiPAAJokAACaJEAAmiTAAJolQACaJYAAmiXAAJomQACaJoAAmjjAAJpBwACaS4AAmlSAAJpVQACaVgAAmlaAAJpXAACaV4AAmlgAAJpYQACaWQAAml9AAJpmgACaZ0AAmmgAAJpowACaaYAAmmpAAJprAACaa8AAmnMAAJpzwACadIAAmnVAAJp2AACadsAAmneAAJp4QACaeMAAmpeAAJqYAACamMAAmplAAJqaAACamkAAmpqAAJqawACamwAAmpuAAJqcQACanIAAmpzAAJqdQACanYAAmrxAAJq8wACavYAAmr4AAJq+wACavwAAmr9AAJq/gACav8AAmsBAAJrBAACawUAAmsGAAJrCAACawkAAmuEAAJrhgACa4kAAmuLAAJrjgACa48AAmuQAAJrkQACa5IAAmuUAAJrlwACa5gAAmuZAAJrmwACa5wAAmwXAAJsGQACbBwAAmweAAJsIQACbCIAAmwjAAJsJAACbCUAAmwnAAJsKgACbCsAAmwsAAJsLgACbC8AAmyyAAJs1gACbPoAAm0dAAJtRAACbWQAAm2LAAJtsgACbdIAAm32AAJuGgACbhwAAm4fAAJuIQACbiMAAm4lAAJuKAACbisAAm4tAAJuLwACbjIAAm40AAJuNgACbjkAAm48AAJuPQACbkIAAm5bAAJuYAACbmIAAm5nAAJuagACbmwAAm61AAJu2QACbwAAAm8kAAJvJwACbykAAm8rAAJvLQACby8AAm8xAAJvMgACbzUAAm9OAAJvcwACb3UAAm93AAJveQACb3sAAm99AAJvfwACb4EAAm+DAAJvhQACb6oAAm+tAAJvsAACb7MAAm+2AAJvuQACb7wAAm+/AAJvwgACb8UAAm/HAAJwQgACcEQAAnBHAAJwSQACcEwAAnBNAAJwTgACcE8AAnBQAAJwUgACcFQAAnBVAAJwVgACcFgAAnBZAAJwagACcGsAAnBtAAJw6AACcOoAAnDsAAJw7gACcPEAAnDyAAJw8wACcPQAAnD1AAJw9wACcPkAAnD6AAJw+wACcP0AAnD+AAJxeQACcXsAAnF+AAJxgAACcYMAAnGEAAJxhQACcYYAAnGHAAJxiQACcYsAAnGMAAJxjQACcY8AAnGQAAJxoQACcaYAAnGpAAJxqwACcbwAAnHNAAJx0AACcdMAAnHWAAJx2QACcdsAAnH3AAJyCQACchwAAnIoAAJyowACcqUAAnKnAAJyqQACcqwAAnKtAAJyrgACcq8AAnKwAAJysgACcrQAAnK1AAJytgACcrgAAnK5AAJzNAACczYAAnM5AAJzOwACcz4AAnM/AAJzQAACc0EAAnNCAAJzRAACc0YAAnNHAAJzSAACc0oAAnNLAAJzXAACc10AAnNfAAJz2gACc9wAAnPeAAJz4AACc+MAAnPkAAJz5QACc+YAAnPnAAJz6QACc+sAAnPsAAJz7QACc+8AAnPwAAJ0awACdG0AAnRwAAJ0cgACdHUAAnR2AAJ0dwACdHgAAnR5AAJ0ewACdH0AAnR+AAJ0fwACdIEAAnSCAAJ0mwACdJwAAnSdAAJ0nwACdRoAAnUcAAJ1HgACdSAAAnUjAAJ1JAACdSUAAnUmAAJ1JwACdSkAAnUrAAJ1LAACdS0AAnUvAAJ1MAACdasAAnWtAAJ1sAACdbIAAnW1AAJ1tgACdbcAAnW4AAJ1uQACdbsAAnW9AAJ1vgACdb8AAnXBAAJ1wgACddkAAnXyAAJ2HwACdiIAAnYlAAJ2KAACdisAAnYuAAJ2MQACdjQAAnY3AAJ2OgACdj0AAnZAAAJ2bQACdnAAAnZzAAJ2dgACdnkAAnZ8AAJ2fwACdoIAAnaFAAJ2iAACdosAAnaOAAJ2kAACdqIAAna6AAJ2zgACdvkAAncFAAJ3HwACdzUAAnc/AAJ3SgACd2YAAnd5AAJ4DAACeC8AAnhPAAJ4bwACeHEAAnhzAAJ4dQACeHcAAnh6AAJ4ewACeHwAAnh/AAJ4gAACeIIAAniDAAJ4hQACeIgAAniJAAJ4igACeI0AAniOAAJ4kwACeKwAAni1AAJ4twACeLkAAnjCAAJ4xQACeMgAAnjKAAJ5EwACeTcAAnleAAJ5ggACeYUAAnmHAAJ5iQACeYsAAnmNAAJ5jwACeZAAAnmTAAJ5rAACec0AAnnPAAJ50QACedMAAnnVAAJ51wACedkAAnnbAAJ53QACef4AAnoBAAJ6BAACegcAAnoKAAJ6DQACehAAAnoTAAJ6FgACehgAAnqTAAJ6lQACepcAAnqZAAJ6nAACep0AAnqeAAJ6nwACeqAAAnqiAAJ6pAACeqUAAnqmAAJ6qAACeqkAAnskAAJ7JgACeygAAnsqAAJ7LQACey4AAnsvAAJ7MAACezEAAnszAAJ7NQACezYAAns3AAJ7OQACezoAAnu1AAJ7twACe7oAAnu8AAJ7vwACe8AAAnvBAAJ7wgACe8MAAnvFAAJ7xwACe8gAAnvJAAJ7ywACe8wAAnvlAAJ75gACe+cAAnvpAAJ8ZAACfGYAAnxoAAJ8agACfG0AAnxuAAJ8bwACfHAAAnxxAAJ8cwACfHUAAnx2AAJ8dwACfHkAAnx6AAJ89QACfPcAAnz5AAJ8+wACfP4AAnz/AAJ9AAACfQEAAn0CAAJ9BAACfQYAAn0HAAJ9CAACfQoAAn0LAAJ9hgACfYgAAn2KAAJ9jAACfY8AAn2QAAJ9kQACfZIAAn2TAAJ9lQACfZcAAn2YAAJ9mQACfZsAAn2cAAJ+FwACfhkAAn4bAAJ+HQACfiAAAn4hAAJ+IgACfiMAAn4kAAJ+JgACfigAAn4pAAJ+KgACfiwAAn4tAAJ+qAACfqoAAn6sAAJ+rgACfrEAAn6yAAJ+swACfrQAAn61AAJ+twACfrkAAn66AAJ+uwACfr0AAn6+AAJ/BwACfysAAn9SAAJ/dgACf3kAAn97AAJ/fQACf38AAn+BAAJ/gwACf4QAAn+HAAJ/oAACf70AAn+/AAJ/wQACf8MAAn/FAAJ/xwACf8kAAn/LAAJ/6AACf+sAAn/uAAJ/8QACf/QAAn/3AAJ/+gACf/0AAn//AAKAegACgHwAAoB+AAKAgAACgIMAAoCEAAKAhQACgIYAAoCHAAKAiQACgIsAAoCMAAKAjQACgI8AAoCQAAKBCwACgQ0AAoEPAAKBEQACgRQAAoEVAAKBFgACgRcAAoEYAAKBGgACgRwAAoEdAAKBHgACgSAAAoEhAAKBnAACgZ4AAoGgAAKBogACgaUAAoGmAAKBpwACgagAAoGpAAKBqwACga0AAoGuAAKBrwACgbEAAoGyAAKCLQACgi8AAoIyAAKCNAACgjcAAoI4AAKCOQACgjoAAoI7AAKCPQACgj8AAoJAAAKCQQACgkMAAoJEAAKCvwACgsEAAoLDAAKCxQACgsgAAoLJAAKCygACgssAAoLMAAKCzgACgtAAAoLRAAKC0gACgtQAAoLVAAKDUAACg1IAAoNUAAKDVgACg1kAAoNaAAKDWwACg1wAAoNdAAKDXwACg2EAAoNiAAKDYwACg2UAAoNmAAKD4QACg+MAAoPlAAKD5wACg+oAAoPrAAKD7AACg+0AAoPuAAKD8AACg/IAAoPzAAKD9AACg/YAAoP3AAKEigAChK0AAoTNAAKE7QAChO8AAoTxAAKE8wAChPUAAoT4AAKE+QAChPoAAoT9AAKE/gAChQAAAoUBAAKFAwAChQYAAoUHAAKFCAAChQsAAoUMAAKFEQAChSoAAoUzAAKFNQAChTcAAoVAAAKFQwAChUYAAoVIAAKFkQAChbUAAoXcAAKGAAAChgMAAoYFAAKGBwAChgkAAoYLAAKGDQAChg4AAoYRAAKGKgAChksAAoZNAAKGTwAChlEAAoZTAAKGVQAChlcAAoZZAAKGWwAChnwAAoZ/AAKGggAChoUAAoaIAAKGiwACho4AAoaRAAKGlAAChpYAAocRAAKHEwAChxUAAocXAAKHGgAChxsAAoccAAKHHQAChx4AAocgAAKHIgAChyMAAockAAKHJgAChycAAoeiAAKHpAACh6YAAoeoAAKHqwACh6wAAoetAAKHrgACh68AAoexAAKHswACh7QAAoe1AAKHtwACh7gAAogzAAKINQACiDgAAog6AAKIPQACiD4AAog/AAKIQAACiEEAAohDAAKIRQACiEYAAohHAAKISQACiEoAAohjAAKIZAACiGUAAohnAAKI4gACiOQAAojmAAKI6AACiOsAAojsAAKI7QACiO4AAojvAAKI8QACiPMAAoj0AAKI9QACiPcAAoj4AAKJcwACiXUAAol3AAKJeQACiXwAAol9AAKJfgACiX8AAomAAAKJggACiYQAAomFAAKJhgACiYgAAomJAAKKBAACigYAAooIAAKKCgACig0AAooOAAKKDwACihAAAooRAAKKEwACihUAAooWAAKKFwACihkAAooaAAKKlQACipcAAoqZAAKKmwACip4AAoqfAAKKoAACiqEAAoqiAAKKpAACiqYAAoqnAAKKqAACiqoAAoqrAAKLJgACiygAAosqAAKLLAACiy8AAoswAAKLMQACizIAAoszAAKLNQACizcAAos4AAKLOQACizsAAos8AAKLhQACi6kAAovQAAKL9AACi/cAAov5AAKL+wACi/0AAov/AAKMAQACjAIAAowFAAKMHgACjDsAAow9AAKMPwACjEEAAoxDAAKMRQACjEcAAoxJAAKMZgACjGkAAoxsAAKMbwACjHIAAox1AAKMeAACjHsAAox9AAKM+AACjPoAAoz8AAKM/gACjQEAAo0CAAKNAwACjQQAAo0FAAKNBwACjQkAAo0KAAKNCwACjQ0AAo0OAAKNiQACjYsAAo2NAAKNjwACjZIAAo2TAAKNlAACjZUAAo2WAAKNmAACjZoAAo2bAAKNnAACjZ4AAo2fAAKOGgACjhwAAo4eAAKOIAACjiMAAo4kAAKOJQACjiYAAo4nAAKOKQACjisAAo4sAAKOLQACji8AAo4wAAKOqwACjq0AAo6vAAKOsQACjrQAAo61AAKOtgACjrcAAo64AAKOugACjrwAAo69AAKOvgACjsAAAo7BAAKPPAACjz4AAo9AAAKPQgACj0UAAo9GAAKPRwACj0gAAo9JAAKPSwACj00AAo9OAAKPTwACj1EAAo9SAAKPzQACj88AAo/RAAKP0wACj9YAAo/XAAKP2AACj9kAAo/aAAKP3AACj94AAo/fAAKP4AACj+IAAo/jAAKQXgACkGAAApBiAAKQZAACkGcAApBoAAKQaQACkGoAApBrAAKQbQACkG8AApBwAAKQcQACkHMAApB0AAKRBwACkSoAApFKAAKRagACkWwAApFuAAKRcAACkXIAApF1AAKRdgACkXcAApF6AAKRewACkX0AApF+AAKRgAACkYMAApGEAAKRhQACkYgAApGJAAKRkgACkasAApG0AAKRtgACkbgAApHBAAKRxAACkccAApHJAAKSEgACkjYAApJdAAKSgQACkoQAApKGAAKSiAACkooAApKMAAKSjgACko8AApKSAAKSqwACkswAApLOAAKS0AACktIAApLUAAKS1gACktgAApLaAAKS3AACkv0AApMAAAKTAwACkwYAApMJAAKTDAACkw8AApMSAAKTFQACkxcAApOSAAKTlAACk5YAApOYAAKTmwACk5wAApOdAAKTngACk58AApOhAAKTowACk6QAApOlAAKTpwACk6gAApQjAAKUJQAClCcAApQpAAKULAAClC0AApQuAAKULwAClDAAApQyAAKUNAAClDUAApQ2AAKUOAAClDkAApS0AAKUtgAClLkAApS7AAKUvgAClL8AApTAAAKUwQAClMIAApTEAAKUxgAClMcAApTIAAKUygAClMsAApTkAAKU5QAClOYAApToAAKVYwAClWUAApVnAAKVaQAClWwAApVtAAKVbgAClW8AApVwAAKVcgAClXQAApV1AAKVdgAClXgAApV5AAKV9AAClfYAApX4AAKV+gAClf0AApX+AAKV/wAClgAAApYBAAKWAwAClgUAApYGAAKWBwAClgkAApYKAAKWhQAClocAApaJAAKWiwAClo4AApaPAAKWkAAClpEAApaSAAKWlAAClpYAApaXAAKWmAAClpoAApabAAKXFgAClxgAApcaAAKXHAAClx8AApcgAAKXIQAClyIAApcjAAKXJQAClycAApcoAAKXKQAClysAApcsAAKXpwACl6kAAperAAKXrQACl7AAApexAAKXsgACl7MAApe0AAKXtgACl7gAApe5AAKXugACl7wAApe9AAKYBgACmCoAAphRAAKYdQACmHgAAph6AAKYfAACmH4AApiAAAKYggACmIMAApiGAAKYnwACmLwAApi+AAKYwAACmMIAApjEAAKYxgACmMgAApjKAAKY5wACmOoAApjtAAKY8AACmPMAApj2AAKY+QACmPwAApj+AAKZeQACmXsAApl9AAKZfwACmYIAApmDAAKZhAACmYUAApmGAAKZiAACmYoAApmLAAKZjAACmY4AApmPAAKaCgACmgwAApoOAAKaEAACmhMAApoUAAKaFQACmhYAApoXAAKaGQACmhsAApocAAKaHQACmh8AApogAAKamwACmp0AApqfAAKaoQACmqQAApqlAAKapgACmqcAApqoAAKaqgACmqwAApqtAAKargACmrAAApqxAAKbLAACmy4AApsxAAKbMwACmzYAAps3AAKbOAACmzkAAps6AAKbPAACmz4AAps/AAKbQAACm0IAAptDAAKbRgACm8EAApvDAAKbxQACm8cAApvKAAKbywACm8wAApvNAAKbzgACm9AAApvSAAKb0wACm9QAApvWAAKb1wACnFIAApxUAAKcVgACnFgAApxbAAKcXAACnF0AApxeAAKcXwACnGEAApxjAAKcZAACnGUAApxnAAKcaAACnOMAApzlAAKc5wACnOkAApzsAAKc7QACnO4AApzvAAKc8AACnPIAApz0AAKc9QACnPYAApz4AAKc+QACnYwAAp2vAAKdzwACne8AAp3xAAKd8wACnfUAAp33AAKd+gACnfsAAp38AAKd/wACngAAAp4CAAKeAwACngUAAp4IAAKeCQACngoAAp4NAAKeDgACnhMAAp4sAAKeNQACnjcAAp45AAKeQgACnkUAAp5IAAKeSgACnpMAAp63AAKe3gACnwIAAp8FAAKfBwACnwkAAp8LAAKfDQACnw8AAp8QAAKfEwACnywAAp9NAAKfTwACn1EAAp9TAAKfVQACn1cAAp9ZAAKfWwACn10AAp9+AAKfgQACn4QAAp+HAAKfigACn40AAp+QAAKfkwACn5YAAp+YAAKgEwACoBUAAqAXAAKgGQACoBwAAqAdAAKgHgACoB8AAqAgAAKgIgACoCQAAqAlAAKgJgACoCgAAqApAAKgpAACoKYAAqCoAAKgqgACoK0AAqCuAAKgrwACoLAAAqCxAAKgswACoLUAAqC2AAKgtwACoLkAAqC6AAKhNQACoTcAAqE6AAKhPAACoT8AAqFAAAKhQQACoUIAAqFDAAKhRQACoUcAAqFIAAKhSQACoUsAAqFMAAKhZQACoWYAAqFnAAKhaQACoeQAAqHmAAKh6AACoeoAAqHtAAKh7gACoe8AAqHwAAKh8QACofMAAqH1AAKh9gACofcAAqH5AAKh+gAConUAAqJ3AAKieQAConsAAqJ+AAKifwACooAAAqKBAAKiggACooQAAqKGAAKihwACoogAAqKKAAKiiwACowYAAqMIAAKjCgACowwAAqMPAAKjEAACoxEAAqMSAAKjEwACoxUAAqMXAAKjGAACoxkAAqMbAAKjHAACo5cAAqOZAAKjmwACo50AAqOgAAKjoQACo6IAAqOjAAKjpAACo6YAAqOoAAKjqQACo6oAAqOsAAKjrQACpCgAAqQqAAKkLAACpC4AAqQxAAKkMgACpDMAAqQ0AAKkNQACpDcAAqQ5AAKkOgACpDsAAqQ9AAKkPgACpIcAAqSrAAKk0gACpPYAAqT5AAKk+wACpP0AAqT/AAKlAQACpQMAAqUEAAKlBwACpSAAAqU9AAKlPwACpUEAAqVDAAKlRQACpUcAAqVJAAKlSwACpWgAAqVrAAKlbgACpXEAAqV0AAKldwACpXoAAqV9AAKlfwACpfoAAqX8AAKl/wACpgEAAqYEAAKmBQACpgYAAqYHAAKmCAACpgoAAqYMAAKmDQACpg4AAqYQAAKmEQACpowAAqaOAAKmkAACppIAAqaVAAKmlgACppcAAqaYAAKmmQACppsAAqadAAKmngACpp8AAqahAAKmogACpx0AAqcfAAKnIQACpyMAAqcmAAKnJwACpygAAqcpAAKnKgACpywAAqcuAAKnLwACpzAAAqcyAAKnMwACp64AAqewAAKnswACp7UAAqe4AAKnuQACp7oAAqe7AAKnvAACp74AAqfAAAKnwQACp8IAAqfEAAKnxQACqEAAAqhCAAKoRAACqEYAAqhJAAKoSgACqEsAAqhMAAKoTQACqE8AAqhRAAKoUgACqFMAAqhVAAKoVgACqNEAAqjTAAKo1QACqNcAAqjaAAKo2wACqNwAAqjdAAKo3gACqOAAAqjiAAKo4wACqOQAAqjmAAKo5wACqWIAAqlkAAKpZgACqWgAAqlrAAKpbAACqW0AAqluAAKpbwACqXEAAqlzAAKpdAACqXUAAql3AAKpeAACqgsAAqouAAKqTgACqm4AAqpwAAKqcgACqnQAAqp2AAKqeQACqnoAAqp7AAKqfgACqn8AAqqBAAKqggACqoQAAqqHAAKqiAACqokAAqqMAAKqjQACqpIAAqqrAAKqtAACqrYAAqq4AAKqwQACqsQAAqrHAAKqyQACqxIAAqs2AAKrXQACq4EAAquEAAKrhgACq4gAAquKAAKrjAACq44AAquPAAKrkgACq6sAAqvMAAKrzgACq9AAAqvSAAKr1AACq9YAAqvYAAKr2gACq9wAAqv9AAKsAAACrAMAAqwGAAKsCQACrAwAAqwPAAKsEgACrBUAAqwXAAKskgACrJQAAqyWAAKsmAACrJsAAqycAAKsnQACrJ4AAqyfAAKsoQACrKMAAqykAAKspQACrKcAAqyoAAKtIwACrSUAAq0nAAKtKQACrSwAAq0tAAKtLgACrS8AAq0wAAKtMgACrTQAAq01AAKtNgACrTgAAq05AAKttAACrbYAAq25AAKtuwACrb4AAq2/AAKtwAACrcEAAq3CAAKtxAACrcYAAq3HAAKtyAACrcoAAq3LAAKt5AACreUAAq3mAAKt6AACrmMAAq5lAAKuZwACrmkAAq5sAAKubQACrm4AAq5vAAKucAACrnIAAq50AAKudQACrnYAAq54AAKueQACrvQAAq72AAKu+AACrvoAAq79AAKu/gACrv8AAq8AAAKvAQACrwMAAq8FAAKvBgACrwcAAq8JAAKvCgACr4UAAq+HAAKviQACr4sAAq+OAAKvjwACr5AAAq+RAAKvkgACr5QAAq+WAAKvlwACr5gAAq+aAAKvmwACsBYAArAYAAKwGgACsBwAArAfAAKwIAACsCEAArAiAAKwIwACsCUAArAnAAKwKAACsCkAArArAAKwLAACsKcAArCpAAKwqwACsK0AArCwAAKwsQACsLIAArCzAAKwtAACsLYAArC4AAKwuQACsLoAArC8AAKwvQACsQYAArEqAAKxUQACsXUAArF4AAKxegACsXwAArF+AAKxgAACsYIAArGDAAKxhgACsZ8AArG8AAKxvgACscAAArHCAAKxxAACscYAArHIAAKxygACsecAArHqAAKx7QACsfAAArHzAAKx9gACsfkAArH8AAKx/gACsnkAArJ7AAKyfQACsn8AArKCAAKygwACsoQAArKFAAKyhgACsogAArKKAAKyiwACsowAArKOAAKyjwACswoAArMMAAKzDgACsxAAArMTAAKzFAACsxUAArMWAAKzFwACsxkAArMbAAKzHAACsx0AArMfAAKzIAACs5sAArOdAAKznwACs6EAArOkAAKzpQACs6YAArOnAAKzqAACs6oAArOsAAKzrQACs64AArOwAAKzsQACtCwAArQuAAK0MAACtDIAArQ1AAK0NgACtDcAArQ4AAK0OQACtDsAArQ9AAK0PgACtD8AArRBAAK0QgACtL0AArS/AAK0wQACtMMAArTGAAK0xwACtMgAArTJAAK0ygACtMwAArTOAAK0zwACtNAAArTSAAK00wACtU4AArVQAAK1UgACtVQAArVXAAK1WAACtVkAArVaAAK1WwACtV0AArVfAAK1YAACtWEAArVjAAK1ZAACtd8AArXhAAK14wACteUAArXoAAK16QACteoAArXrAAK17AACte4AArXwAAK18QACtfIAArX0AAK19QACtogAArarAAK2ywACtusAArbtAAK27wACtvEAArbzAAK29gACtvcAArb4AAK2+wACtvwAArb+AAK2/wACtwEAArcEAAK3BQACtwYAArcJAAK3CgACtw8AArcoAAK3MQACtzMAArc1AAK3PgACt0EAArdEAAK3RgACt48AArezAAK32gACt/4AArgBAAK4AwACuAUAArgHAAK4CQACuAsAArgMAAK4DwACuCgAArhJAAK4SwACuE0AArhPAAK4UQACuFMAArhVAAK4VwACuFkAArh6AAK4fQACuIAAAriDAAK4hgACuIkAAriMAAK4jwACuJIAAriUAAK5DwACuREAArkTAAK5FQACuRgAArkZAAK5GgACuRsAArkcAAK5HgACuSAAArkhAAK5IgACuSQAArklAAK5oAACuaIAArmkAAK5pgACuakAArmqAAK5qwACuawAArmtAAK5rwACubEAArmyAAK5swACubUAArm2AAK6MQACujMAAro2AAK6OAACujsAAro8AAK6PQACuj4AAro/AAK6QQACukMAArpEAAK6RQACukcAArpIAAK6YQACumIAArpjAAK6ZQACuuAAArriAAK65AACuuYAArrpAAK66gACuusAArrsAAK67QACuu8AArrxAAK68gACuvMAArr1AAK69gACu3EAArtzAAK7dQACu3cAArt6AAK7ewACu3wAArt9AAK7fgACu4AAAruCAAK7gwACu4QAAruGAAK7hwACvAIAArwEAAK8BgACvAgAArwLAAK8DAACvA0AArwOAAK8DwACvBEAArwTAAK8FAACvBUAArwXAAK8GAACvJMAAryVAAK8lwACvJkAArycAAK8nQACvJ4AAryfAAK8oAACvKIAArykAAK8pQACvKYAAryoAAK8qQACvSQAAr0mAAK9KAACvSoAAr0tAAK9LgACvS8AAr0wAAK9MQACvTMAAr01AAK9NgACvTcAAr05AAK9OgACvYMAAr2nAAK9zgACvfIAAr31AAK99wACvfkAAr37AAK9/QACvf8AAr4AAAK+AwACvhwAAr45AAK+OwACvj0AAr4/AAK+QQACvkMAAr5FAAK+RwACvmQAAr5nAAK+agACvm0AAr5wAAK+cwACvnYAAr55AAK+ewACvvYAAr74AAK++gACvvwAAr7/AAK/AAACvwEAAr8CAAK/AwACvwUAAr8HAAK/CAACvwkAAr8LAAK/DAACv4cAAr+JAAK/iwACv40AAr+QAAK/kQACv5IAAr+TAAK/lAACv5YAAr+YAAK/mQACv5oAAr+cAAK/nQACwBgAAsAaAALAHAACwB4AAsAhAALAIgACwCMAAsAkAALAJQACwCcAAsApAALAKgACwCsAAsAtAALALgACwKkAAsCrAALArQACwK8AAsCyAALAswACwLQAAsC1AALAtgACwLgAAsC6AALAuwACwLwAAsC+AALAvwACwToAAsE8AALBPgACwUAAAsFDAALBRAACwUUAAsFGAALBRwACwUkAAsFLAALBTAACwU0AAsFPAALBUAACwcsAAsHNAALBzwACwdEAAsHUAALB1QACwdYAAsHXAALB2AACwdoAAsHcAALB3QACwd4AAsHgAALB4QACwlwAAsJeAALCYAACwmIAAsJlAALCZgACwmcAAsJoAALCaQACwmsAAsJtAALCbgACwm8AAsJxAALCcgACwwUAAsMoAALDSAACw2gAAsNqAALDbAACw24AAsNwAALDcwACw3QAAsN1AALDeAACw3kAAsN7AALDfAACw34AAsOBAALDggACw4MAAsOGAALDhwACw4wAAsOlAALDrgACw7AAAsOyAALDuwACw74AAsPBAALDwwACxAwAAsQwAALEVwACxHsAAsR+AALEgAACxIIAAsSEAALEhgACxIgAAsSJAALEjAACxKUAAsTGAALEyAACxMoAAsTMAALEzgACxNAAAsTSAALE1AACxNYAAsT3AALE+gACxP0AAsUAAALFAwACxQYAAsUJAALFDAACxQ8AAsURAALFjAACxY4AAsWQAALFkgACxZUAAsWWAALFlwACxZgAAsWZAALFmwACxZ0AAsWeAALFnwACxaEAAsWiAALGHQACxh8AAsYhAALGIwACxiYAAsYnAALGKAACxikAAsYqAALGLAACxi4AAsYvAALGMAACxjIAAsYzAALGrgACxrAAAsazAALGtQACxrgAAsa5AALGugACxrsAAsa8AALGvgACxsAAAsbBAALGwgACxsQAAsbFAALG3gACxt8AAsbgAALG4gACx10AAsdfAALHYQACx2MAAsdmAALHZwACx2gAAsdpAALHagACx2wAAsduAALHbwACx3AAAsdyAALHcwACx+4AAsfwAALH8gACx/QAAsf3AALH+AACx/kAAsf6AALH+wACx/0AAsf/AALIAAACyAEAAsgDAALIBAACyH8AAsiBAALIgwACyIUAAsiIAALIiQACyIoAAsiLAALIjAACyI4AAsiQAALIkQACyJIAAsiUAALIlQACyRAAAskSAALJFAACyRYAAskZAALJGgACyRsAAskcAALJHQACyR8AAskhAALJIgACySMAAsklAALJJgACyaEAAsmjAALJpQACyacAAsmqAALJqwACyawAAsmtAALJrgACybAAAsmyAALJswACybQAAsm2AALJtwACygAAAsokAALKSwACym8AAspyAALKdAACynYAAsp4AALKegACynwAAsp9AALKgAACypkAAsq2AALKuAACyroAAsq8AALKvgACysAAAsrCAALKxAACyuEAAsrkAALK5wACyuoAAsrtAALK8AACyvMAAsr2AALK+AACy3MAAst1AALLdwACy3kAAst8AALLfQACy34AAst/AALLgAACy4IAAsuEAALLhQACy4YAAsuIAALLiQACzAQAAswGAALMCAACzAoAAswNAALMDgACzA8AAswQAALMEQACzBMAAswVAALMFgACzBcAAswZAALMGgACzJUAAsyXAALMmQACzJsAAsyeAALMnwACzKAAAsyhAALMogACzKQAAsymAALMpwACzKgAAsyqAALMqwACzSYAAs0oAALNKwACzS0AAs0wAALNMQACzTIAAs0zAALNNAACzTYAAs04AALNOQACzToAAs08AALNPQACzbgAAs26AALNvAACzb4AAs3BAALNwgACzcMAAs3EAALNxQACzccAAs3JAALNygACzcsAAs3NAALNzgACzkkAAs5LAALOTQACzk8AAs5SAALOUwACzlQAAs5VAALOVgACzlgAAs5aAALOWwACzlwAAs5eAALOXwACztoAAs7cAALO3gACzuAAAs7jAALO5AACzuUAAs7mAALO5wACzukAAs7rAALO7AACzu0AAs7vAALO8AACz4MAAs+mAALPxgACz+YAAs/oAALP6gACz+wAAs/uAALP8QACz/IAAs/zAALP9gACz/cAAs/5AALP+gACz/wAAs//AALQAAAC0AEAAtAEAALQBQAC0AoAAtAjAALQLAAC0C4AAtAwAALQOQAC0DwAAtA/AALQQQAC0IoAAtCuAALQ1QAC0PkAAtD8AALQ/gAC0QAAAtECAALRBAAC0QYAAtEHAALRCgAC0SMAAtFEAALRRgAC0UgAAtFKAALRTAAC0U4AAtFQAALRUgAC0VQAAtF1AALReAAC0XsAAtF+AALRgQAC0YQAAtGHAALRigAC0Y0AAtGPAALSCgAC0gwAAtIOAALSEAAC0hMAAtIUAALSFQAC0hYAAtIXAALSGQAC0hsAAtIcAALSHQAC0h8AAtIgAALSmwAC0p0AAtKfAALSoQAC0qQAAtKlAALSpgAC0qcAAtKoAALSqgAC0qwAAtKtAALSrgAC0rAAAtKxAALTLAAC0y4AAtMxAALTMwAC0zYAAtM3AALTOAAC0zkAAtM6AALTPAAC0z4AAtM/AALTQAAC00IAAtNDAALTXAAC010AAtNeAALTYAAC09sAAtPdAALT3wAC0+EAAtPkAALT5QAC0+YAAtPnAALT6AAC0+oAAtPsAALT7QAC0+4AAtPwAALT8QAC1GwAAtRuAALUcAAC1HIAAtR1AALUdgAC1HcAAtR4AALUeQAC1HsAAtR9AALUfgAC1H8AAtSBAALUggAC1P0AAtT/AALVAQAC1QMAAtUGAALVBwAC1QgAAtUJAALVCgAC1QwAAtUOAALVDwAC1RAAAtUSAALVEwAC1Y4AAtWQAALVkgAC1ZQAAtWXAALVmAAC1ZkAAtWaAALVmwAC1Z0AAtWfAALVoAAC1aEAAtWjAALVpAAC1h8AAtYhAALWIwAC1iUAAtYoAALWKQAC1ioAAtYrAALWLAAC1i4AAtYwAALWMQAC1jIAAtY0AALWNQAC1n4AAtaiAALWyQAC1u0AAtbwAALW8gAC1vQAAtb2AALW+AAC1voAAtb7AALW/gAC1xcAAtc0AALXNgAC1zgAAtc6AALXPAAC1z4AAtdAAALXQgAC118AAtdiAALXZQAC12gAAtdrAALXbgAC13EAAtd0AALXdgAC1/EAAtfzAALX9QAC1/cAAtf6AALX+wAC1/wAAtf9AALX/gAC2AAAAtgCAALYAwAC2AQAAtgGAALYBwAC2IIAAtiEAALYhgAC2IgAAtiLAALYjAAC2I0AAtiOAALYjwAC2JEAAtiTAALYlAAC2JUAAtiXAALYmAAC2RMAAtkVAALZFwAC2RkAAtkcAALZHQAC2R4AAtkfAALZIAAC2SIAAtkkAALZJQAC2SYAAtkoAALZKQAC2aQAAtmmAALZqQAC2asAAtmuAALZrwAC2bAAAtmxAALZsgAC2bQAAtm2AALZtwAC2bgAAtm6AALZuwAC2jYAAto4AALaOgAC2jwAAto/AALaQAAC2kEAAtpCAALaQwAC2kUAAtpHAALaSAAC2kkAAtpLAALaTAAC2scAAtrJAALaywAC2s0AAtrQAALa0QAC2tIAAtrTAALa1AAC2tYAAtrYAALa2QAC2toAAtrcAALa3QAC21gAAttaAALbXAAC214AAtthAALbYgAC22MAAttkAALbZQAC22cAAttpAALbagAC22sAAtttAALbbgAC3AEAAtwkAALcRAAC3GQAAtxmAALcaAAC3GoAAtxsAALcbwAC3HAAAtxxAALcdAAC3HUAAtx3AALceAAC3HsAAtx+AALcfwAC3IAAAtyDAALchAAC3IkAAtyiAALcqwAC3K0AAtywAALcuQAC3LwAAty/AALcwQAC3QoAAt0uAALdVQAC3XkAAt18AALdfgAC3YAAAt2CAALdhAAC3YYAAt2HAALdigAC3aMAAt3EAALdxgAC3cgAAt3KAALdzAAC3c4AAt3QAALd0gAC3dQAAt31AALd+AAC3fsAAt3+AALeAQAC3gQAAt4HAALeCgAC3g0AAt4PAALeigAC3owAAt6OAALekAAC3pMAAt6UAALelQAC3pYAAt6XAALemQAC3psAAt6cAALenQAC3p8AAt6gAALfGwAC3x0AAt8fAALfIQAC3yQAAt8lAALfJgAC3ycAAt8oAALfKgAC3ywAAt8tAALfLgAC3zAAAt8xAALfrAAC364AAt+xAALfswAC37YAAt+3AALfuAAC37kAAt+6AALfvAAC374AAt+/AALfwAAC38IAAt/DAALf3AAC390AAt/eAALf4AAC4FsAAuBdAALgXwAC4GEAAuBkAALgZQAC4GYAAuBnAALgaAAC4GoAAuBsAALgbQAC4G4AAuBwAALgcQAC4OwAAuDuAALg8AAC4PIAAuD1AALg9gAC4PcAAuD4AALg+QAC4PsAAuD9AALg/gAC4P8AAuEBAALhAgAC4X0AAuF/AALhgQAC4YMAAuGGAALhhwAC4YgAAuGJAALhigAC4YwAAuGOAALhjwAC4ZAAAuGSAALhkwAC4g4AAuIQAALiEgAC4hQAAuIXAALiGAAC4hkAAuIaAALiGwAC4h0AAuIfAALiIAAC4iEAAuIjAALiJAAC4p8AAuKhAALiowAC4qUAAuKoAALiqQAC4qoAAuKrAALirAAC4q4AAuKwAALisQAC4rIAAuK0AALitQAC4v4AAuMiAALjSQAC420AAuNwAALjcwAC43UAAuN3AALjeQAC43sAAuN8AALjfwAC45gAAuO1AALjuAAC47sAAuO+AALjwQAC48QAAuPHAALjygAC4+cAAuPqAALj7QAC4/AAAuPzAALj9gAC4/kAAuP8AALj/gAC5HkAAuR7AALkfgAC5IAAAuSDAALkhAAC5IUAAuSGAALkhwAC5IkAAuSMAALkjQAC5I4AAuSQAALkkQAC5QwAAuUOAALlEQAC5RMAAuUWAALlFwAC5RgAAuUZAALlGgAC5RwAAuUfAALlIAAC5SEAAuUjAALlJAAC5Z8AAuWhAALlpAAC5aYAAuWpAALlqgAC5asAAuWsAALlrQAC5a8AAuWyAALlswAC5bQAAuW2AALltwAC5jIAAuY0AALmNwAC5jkAAuY8AALmPQAC5j4AAuY/AALmQAAC5kIAAuZFAALmRgAC5kcAAuZJAALmSgAC5sUAAubHAALmyQAC5ssAAubOAALmzwAC5tAAAubRAALm0gAC5tQAAubXAALm2AAC5tkAAubbAALm3AAC51cAAudZAALnWwAC510AAudgAALnYQAC52IAAudjAALnZAAC52YAAudpAALnagAC52sAAudtAALnbgAC5+kAAufrAALn7gAC5/AAAufzAALn9AAC5/UAAuf2AALn9wAC5/kAAuf8AALn/QAC5/4AAugAAALoAQAC6JQAAui3AALo1wAC6PcAAuj5AALo+wAC6P0AAuj/AALpAgAC6QMAAukEAALpBwAC6QgAAukKAALpCwAC6Q0AAukQAALpEQAC6RIAAukVAALpFgAC6RsAAuk0AALpPQAC6T8AAulBAALpSgAC6U0AAulQAALpUgAC6ZsAAum/AALp5gAC6goAAuoNAALqDwAC6hEAAuoTAALqFQAC6hcAAuoYAALqGwAC6jQAAupVAALqVwAC6lkAAupbAALqXQAC6l8AAuphAALqYwAC6mUAAuqGAALqiQAC6owAAuqPAALqkgAC6pUAAuqYAALqmwAC6p4AAuqgAALrGwAC6x0AAusfAALrIQAC6yQAAuslAALrJgAC6ycAAusoAALrKgAC6ywAAustAALrLgAC6zAAAusxAALrrAAC664AAuuwAALrsgAC67UAAuu2AALrtwAC67gAAuu5AALruwAC670AAuu+AALrvwAC68EAAuvCAALsPQAC7D8AAuxCAALsRAAC7EcAAuxIAALsSQAC7EoAAuxLAALsTQAC7E8AAuxQAALsUQAC7FMAAuxUAALsbQAC7G4AAuxvAALscQAC7OwAAuzuAALs8AAC7PIAAuz1AALs9gAC7PcAAuz4AALs+QAC7PsAAuz9AALs/gAC7P8AAu0BAALtAgAC7X0AAu1/AALtgQAC7YMAAu2GAALthwAC7YgAAu2JAALtigAC7YwAAu2OAALtjwAC7ZAAAu2SAALtkwAC7g4AAu4QAALuEgAC7hQAAu4XAALuGAAC7hkAAu4aAALuGwAC7h0AAu4fAALuIAAC7iEAAu4jAALuJAAC7p8AAu6hAALuowAC7qUAAu6oAALuqQAC7qoAAu6rAALurAAC7q4AAu6wAALusQAC7rIAAu60AALutQAC7zAAAu8yAALvNAAC7zYAAu85AALvOgAC7zsAAu88AALvPQAC7z8AAu9BAALvQgAC70MAAu9FAALvRgAC748AAu+zAALv2gAC7/4AAvABAALwAwAC8AUAAvAHAALwCQAC8AsAAvAMAALwDwAC8CgAAvBFAALwRwAC8EkAAvBLAALwTQAC8E8AAvBRAALwUwAC8HAAAvBzAALwdgAC8HkAAvB8AALwfwAC8IIAAvCFAALwhwAC8QIAAvEEAALxBgAC8QgAAvELAALxDAAC8Q0AAvEOAALxDwAC8REAAvETAALxFAAC8RUAAvEXAALxGAAC8ZMAAvGVAALxlwAC8ZkAAvGcAALxnQAC8Z4AAvGfAALxoAAC8aIAAvGkAALxpQAC8aYAAvGoAALxqQAC8iQAAvImAALyKAAC8ioAAvItAALyLgAC8i8AAvIwAALyMQAC8jMAAvI1AALyNgAC8jcAAvI5AALyOgAC8rUAAvK3AALyugAC8rwAAvK/AALywAAC8sEAAvLCAALywwAC8sUAAvLHAALyyAAC8skAAvLLAALyzAAC80cAAvNJAALzSwAC800AAvNQAALzUQAC81IAAvNTAALzVAAC81YAAvNYAALzWQAC81oAAvNcAALzXQAC89gAAvPaAALz3AAC894AAvPhAALz4gAC8+MAAvPkAALz5QAC8+cAAvPpAALz6gAC8+sAAvPtAALz7gAC9GkAAvRrAAL0bQAC9G8AAvRyAAL0cwAC9HQAAvR1AAL0dgAC9HgAAvR6AAL0ewAC9HwAAvR+AAL0fwAC9RIAAvU1AAL1VQAC9XUAAvV3AAL1eQAC9XsAAvV9AAL1gAAC9YEAAvWCAAL1hQAC9YYAAvWIAAL1iQAC9YsAAvWOAAL1jwAC9ZAAAvWTAAL1lAAC9ZkAAvWyAAL1uwAC9b0AAvW/AAL1yAAC9csAAvXOAAL10AAC9hkAAvY9AAL2ZAAC9ogAAvaLAAL2jQAC9o8AAvaRAAL2kwAC9pUAAvaWAAL2mQAC9rIAAvbTAAL21QAC9tcAAvbZAAL22wAC9t0AAvbfAAL24QAC9uMAAvcEAAL3BwAC9woAAvcNAAL3EAAC9xMAAvcWAAL3GQAC9xwAAvceAAL3mQAC95sAAvedAAL3nwAC96IAAvejAAL3pAAC96UAAvemAAL3qAAC96oAAverAAL3rAAC964AAvevAAL4KgAC+CwAAvguAAL4MAAC+DMAAvg0AAL4NQAC+DYAAvg3AAL4OQAC+DsAAvg8AAL4PQAC+D8AAvhAAAL4uwAC+L0AAvjAAAL4wgAC+MUAAvjGAAL4xwAC+MgAAvjJAAL4ywAC+M0AAvjOAAL4zwAC+NEAAvjSAAL46wAC+OwAAvjtAAL47wAC+WoAAvlsAAL5bgAC+XAAAvlzAAL5dAAC+XUAAvl2AAL5dwAC+XkAAvl7AAL5fAAC+X0AAvl/AAL5gAAC+fsAAvn9AAL5/wAC+gEAAvoEAAL6BQAC+gYAAvoHAAL6CAAC+goAAvoMAAL6DQAC+g4AAvoQAAL6EQAC+owAAvqOAAL6kAAC+pIAAvqVAAL6lgAC+pcAAvqYAAL6mQAC+psAAvqdAAL6ngAC+p8AAvqhAAL6ogAC+x0AAvsfAAL7IQAC+yMAAvsmAAL7JwAC+ygAAvspAAL7KgAC+ywAAvsuAAL7LwAC+zAAAvsyAAL7MwAC+64AAvuwAAL7sgAC+7QAAvu3AAL7uAAC+7kAAvu6AAL7uwAC+70AAvu/AAL7wAAC+8EAAvvDAAL7xAAC/A0AAvwxAAL8WAAC/HwAAvx/AAL8gQAC/IMAAvyFAAL8hwAC/IkAAvyKAAL8jQAC/KYAAvzDAAL8xQAC/McAAvzJAAL8ywAC/M0AAvzPAAL80QAC/O4AAvzxAAL89AAC/PcAAvz6AAL8/QAC/QAAAv0DAAL9BQAC/YAAAv2CAAL9hAAC/YYAAv2JAAL9igAC/YsAAv2MAAL9jQAC/Y8AAv2RAAL9kgAC/ZMAAv2VAAL9lgAC/hEAAv4TAAL+FQAC/hcAAv4aAAL+GwAC/hwAAv4dAAL+HgAC/iAAAv4iAAL+IwAC/iQAAv4mAAL+JwAC/qIAAv6kAAL+pgAC/qgAAv6rAAL+rAAC/q0AAv6uAAL+rwAC/rEAAv6zAAL+tAAC/rUAAv63AAL+uAAC/zMAAv81AAL/NwAC/zkAAv88AAL/PQAC/z4AAv8/AAL/QAAC/0IAAv9EAAL/RQAC/0YAAv9IAAL/SQAC/8QAAv/GAAL/yAAC/8oAAv/NAAL/zgAC/88AAv/QAAL/0QAC/9MAAv/VAAL/1gAC/9cAAv/ZAAL/2gADAFUAAwBXAAMAWQADAFsAAwBeAAMAXwADAGAAAwBhAAMAYgADAGQAAwBmAAMAZwADAGgAAwBqAAMAawADAOYAAwDoAAMA6gADAOwAAwDvAAMA8AADAPEAAwDyAAMA8wADAPUAAwD3AAMA+AADAPkAAwD7AAMA/AADAQ0AAwEOAAMBEAADAYsAAwGNAAMBjwADAZEAAwGUAAMBlQADAZYAAwGXAAMBmAADAZoAAwGdAAMBngADAZ8AAwGhAAMBogADAh0AAwIfAAMCIQADAiMAAwImAAMCJwADAigAAwIpAAMCKgADAiwAAwIvAAMCMAADAjEAAwIzAAMCNAADAq8AAwKxAAMCtAADArYAAwK5AAMCugADArsAAwK8AAMCvQADAr8AAwLCAAMCwwADAsQAAwLGAAMCxwADA1oAAwN9AAMDnQADA70AAwO/AAMDwQADA8MAAwPFAAMDyAADA8kAAwPKAAMDzQADA84AAwPQAAMD0QADA9QAAwPXAAMD2AADA9kAAwPcAAMD3QADA+YAAwP/AAMECAADBAoAAwQNAAMEFgADBBkAAwQcAAMEHgADBGcAAwSLAAMEsgADBNYAAwTZAAME2wADBN0AAwTfAAME4QADBOMAAwTkAAME5wADBQAAAwUhAAMFIwADBSUAAwUnAAMFKQADBSsAAwUtAAMFLwADBTEAAwVSAAMFVQADBVgAAwVbAAMFXgADBWEAAwVkAAMFZwADBWoAAwVsAAMF5wADBekAAwXrAAMF7QADBfAAAwXxAAMF8gADBfMAAwX0AAMF9gADBfgAAwX5AAMF+gADBfwAAwX9AAMGeAADBnoAAwZ8AAMGfgADBoEAAwaCAAMGgwADBoQAAwaFAAMGhwADBokAAwaKAAMGiwADBo0AAwaOAAMHCQADBwsAAwcOAAMHEAADBxMAAwcUAAMHFQADBxYAAwcXAAMHGQADBxsAAwccAAMHHQADBx8AAwcgAAMHOQADBzoAAwc7AAMHPQADB7gAAwe6AAMHvAADB74AAwfBAAMHwgADB8MAAwfEAAMHxQADB8cAAwfJAAMHygADB8sAAwfNAAMHzgADCEkAAwhLAAMITQADCE8AAwhSAAMIUwADCFQAAwhVAAMIVgADCFgAAwhaAAMIWwADCFwAAwheAAMIXwADCNoAAwjcAAMI3gADCOAAAwjjAAMI5AADCOUAAwjmAAMI5wADCOkAAwjrAAMI7AADCO0AAwjvAAMI8AADCWsAAwltAAMJbwADCXEAAwl0AAMJdQADCXYAAwl3AAMJeAADCXoAAwl8AAMJfQADCX4AAwmAAAMJgQADCfwAAwn+AAMKAAADCgIAAwoFAAMKBgADCgcAAwoIAAMKCQADCgsAAwoNAAMKDgADCg8AAwoRAAMKEgADClsAAwp/AAMKpgADCsoAAwrNAAMK0AADCtIAAwrUAAMK1gADCtgAAwrZAAMK3AADCvUAAwsSAAMLFQADCxgAAwsbAAMLHgADCyEAAwskAAMLJwADC0QAAwtHAAMLSgADC00AAwtQAAMLUwADC1YAAwtZAAMLWwADC9YAAwvYAAML2wADC90AAwvgAAML4QADC+IAAwvjAAML5AADC+YAAwvpAAML6gADC+sAAwvtAAML7gADDGkAAwxrAAMMbgADDHAAAwxzAAMMdAADDHUAAwx2AAMMdwADDHkAAwx8AAMMfQADDH4AAwyAAAMMgQADDPwAAwz+AAMNAQADDQMAAw0GAAMNBwADDQgAAw0JAAMNCgADDQwAAw0PAAMNEAADDREAAw0TAAMNFAADDY8AAw2RAAMNlAADDZYAAw2ZAAMNmgADDZsAAw2cAAMNnQADDZ8AAw2iAAMNowADDaQAAw2mAAMNpwADDiIAAw4kAAMOJgADDigAAw4rAAMOLAADDi0AAw4uAAMOLwADDjEAAw40AAMONQADDjYAAw44AAMOOQADDrQAAw62AAMOuAADDroAAw69AAMOvgADDr8AAw7AAAMOwQADDsMAAw7GAAMOxwADDsgAAw7KAAM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7ygADO8wAAzvPAAM70AADO9EAAzvSAAM70wADO9UAAzvYAAM72QADO9oAAzvcAAM73QADPFgAAzxaAAM8XAADPF4AAzxhAAM8YgADPGMAAzxkAAM8ZQADPGcAAzxqAAM8awADPGwAAzxuAAM8bwADPOoAAzzsAAM87wADPPEAAzz0AAM89QADPPYAAzz3AAM8+AADPPoAAzz9AAM8/gADPP8AAz0BAAM9AgADPZUAAz24AAM92AADPfgAAz36AAM9/AADPf4AAz4AAAM+AwADPgQAAz4FAAM+CAADPgkAAz4LAAM+DAADPg4AAz4RAAM+EgADPhMAAz4WAAM+FwADPhwAAz41AAM+PgADPkAAAz5CAAM+SwADPk4AAz5RAAM+UwADPpwAAz7AAAM+5wADPwsAAz8OAAM/EAADPxIAAz8UAAM/FgADPxgAAz8ZAAM/HAADPzUAAz9WAAM/WAADP1oAAz9cAAM/XgADP2AAAz9iAAM/ZAADP2YAAz+HAAM/igADP40AAz+QAAM/kwADP5YAAz+ZAAM/nAADP58AAz+hAANAHAADQB4AA0AgAANAIgADQCUAA0AmAANAJwADQCgAA0ApAANAKwADQC0AA0AuAANALwADQDEAA0AyAANArQADQK8AA0CxAANAswADQLYAA0C3AANAuAADQLkAA0C6AANAvAADQL4AA0C/AANAwAADQMIAA0DDAANBPgADQUAAA0FDAANBRQADQUgAA0FJAANBSgADQUsAA0FMAANBTgADQVAAA0FRAANBUgADQVQAA0FVAANBbgADQW8AA0FwAANBcgADQe0AA0HvAANB8QADQfMAA0H2AANB9wADQfgAA0H5AANB+gADQfwAA0H+AANB/wADQgAAA0ICAANCAwADQn4AA0KAAANCggADQoQAA0KHAANCiAADQokAA0KKAANCiwADQo0AA0KPAANCkAADQpEAA0KTAANClAADQw8AA0MRAANDEwADQxUAA0MYAANDGQADQxoAA0MbAANDHAADQx4AA0MgAANDIQADQyIAA0MkAANDJQADQ6AAA0OiAANDpAADQ6YAA0OpAANDqgADQ6sAA0OsAANDrQADQ68AA0OxAANDsgADQ7MAA0O1AANDtgADRDEAA0QzAANENQADRDcAA0Q6AANEOwADRDwAA0Q9AANEPgADREAAA0RCAANEQwADREQAA0RGAANERwADRJAAA0S0AANE2wADRP8AA0UCAANFBAADRQYAA0UIAANFCgADRQwAA0UNAANFEAADRSkAA0VGAANFSAADRUoAA0VMAANFTgADRVAAA0VSAANFVAADRXEAA0V0AANFdwADRXoAA0V9AANFgAADRYMAA0WGAANFiAADRgMAA0YFAANGBwADRgkAA0YMAANGDQADRg4AA0YPAANGEAADRhIAA0YUAANGFQADRhYAA0YYAANGGQADRpQAA0aWAANGmAADRpoAA0adAANGngADRp8AA0agAANGoQADRqMAA0alAANGpgADRqcAA0apAANGqgADRyUAA0cnAANHKQADRysAA0cuAANHLwADRzAAA0cxAANHMgADRzQAA0c2AANHNwADRzgAA0c6AANHOwADR7YAA0e4AANHuwADR70AA0fAAANHwQADR8IAA0fDAANHxAADR8YAA0fIAANHyQADR8oAA0fMAANHzQADR9AAA0hLAANITQADSE8AA0hRAANIVAADSFUAA0hWAANIVwADSFgAA0haAANIXAADSF0AA0heAANIYAADSGEAA0jcAANI3gADSOAAA0jiAANI5QADSOYAA0jnAANI6AADSOkAA0jrAANI7QADSO4AA0jvAANI8QADSPIAA0ltAANJbwADSXEAA0lzAANJdgADSXcAA0l4AANJeQADSXoAA0l8AANJfgADSX8AA0mAAANJggADSYMAA0oWAANKOQADSlkAA0p5AANKewADSn0AA0p/AANKgQADSoQAA0qFAANKhgADSokAA0qKAANKjAADSo0AA0qPAANKkgADSpMAA0qUAANKlwADSpgAA0qdAANKtgADSr8AA0rBAANKwwADSswAA0rPAANK0gADStQAA0sdAANLQQADS2gAA0uMAANLjwADS5EAA0uTAANLlQADS5cAA0uZAANLmgADS50AA0u2AANL1wADS9kAA0vbAANL3QADS98AA0vhAANL4wADS+UAA0vnAANMCAADTAsAA0wOAANMEQADTBQAA0wXAANMGgADTB0AA0wgAANMIgADTJ0AA0yfAANMoQADTKMAA0ymAANMpwADTKgAA0ypAANMqgADTKwAA0yuAANMrwADTLAAA0yyAANMswADTS4AA00wAANNMgADTTQAA003AANNOAADTTkAA006AANNOwADTT0AA00/AANNQAADTUEAA01DAANNRAADTb8AA03BAANNxAADTcYAA03JAANNygADTcsAA03MAANNzQADTc8AA03RAANN0gADTdMAA03VAANN1gADTe8AA03wAANN8QADTfMAA05uAANOcAADTnIAA050AANOdwADTngAA055AANOegADTnsAA059AANOfwADToAAA06BAANOgwADToQAA07/AANPAQADTwMAA08FAANPCAADTwkAA08KAANPCwADTwwAA08OAANPEAADTxEAA08SAANPFAADTxUAA0+QAANPkgADT5QAA0+WAANPmQADT5oAA0+bAANPnAADT50AA0+fAANPoQADT6IAA0+jAANPpQADT6YAA1AhAANQIwADUCUAA1AnAANQKgADUCsAA1AsAANQLQADUC4AA1AwAANQMgADUDMAA1A0AANQNgADUDcAA1CyAANQtAADULYAA1C4AANQuwADULwAA1C9AANQvgADUL8AA1DBAANQwwADUMQAA1DFAANQxwADUMgAA1ERAANRNQADUVwAA1GAAANRgwADUYUAA1GHAANRiQADUYsAA1GNAANRjgADUZEAA1GqAANRxwADUckAA1HLAANRzQADUc8AA1HRAANR0wADUdUAA1HyAANR9QADUfgAA1H7AANR/gADUgEAA1IEAANSBwADUgkAA1KEAANShgADUogAA1KKAANSjQADUo4AA1KPAANSkAADUpEAA1KTAANSlQADUpYAA1KXAANSmQADUpoAA1MVAANTFwADUxkAA1MbAANTHgADUx8AA1MgAANTIQADUyIAA1MkAANTJgADUycAA1MoAANTKgADUysAA1OmAANTqAADU6oAA1OsAANTrwADU7AAA1OxAANTsgADU7MAA1O1AANTtwADU7gAA1O5AANTuwADU7wAA1Q3AANUOQADVDwAA1Q+AANUQQADVEIAA1RDAANURAADVEUAA1RHAANUSQADVEoAA1RLAANUTQADVE4AA1TJAANUywADVM0AA1TPAANU0gADVNMAA1TUAANU1QADVNYAA1TYAANU2gADVNsAA1TcAANU3gADVN8AA1VaAANVXAADVV4AA1VgAANVYwADVWQAA1VlAANVZgADVWcAA1VpAANVawADVWwAA1VtAANVbwADVXAAA1XrAANV7QADVe8AA1XxAANV9AADVfUAA1X2AANV9wADVfgAA1X6AANV/AADVf0AA1X+AANWAAADVgEAA1YSAANWEwADVhUAA1aQAANWkgADVpQAA1aWAANWmQADVpoAA1abAANWnAADVp0AA1afAANWogADVqMAA1akAANWpgADVqcAA1ciAANXJAADVyYAA1coAANXKwADVywAA1ctAANXLgADVy8AA1cxAANXNAADVzUAA1c2AANXOAADVzkAA1e0AANXtgADV7kAA1e7AANXvgADV78AA1fAAANXwQADV8IAA1fEAANXxwADV8gAA1fJAANXywADV8wAA1hfAANYggADWKIAA1jCAANYxAADWMYAA1jIAANYygADWM0AA1jOAANYzwADWNIAA1jTAANY1QADWNYAA1jYAANY2wADWNwAA1jdAANY4AADWOEAA1jmAANY/wADWQgAA1kKAANZDAADWRUAA1kYAANZGwADWR0AA1lmAANZigADWbEAA1nVAANZ2AADWdoAA1ncAANZ3gADWeAAA1niAANZ4wADWeYAA1n/AANaIAADWiIAA1okAANaJgADWigAA1oqAANaLAADWi4AA1owAANaUQADWlQAA1pXAANaWgADWl0AA1pgAANaYwADWmYAA1ppAANaawADWuYAA1roAANa6gADWuwAA1rvAANa8AADWvEAA1ryAANa8wADWvUAA1r3AANa+AADWvkAA1r7AANa/AADW3cAA1t5AANbewADW30AA1uAAANbgQADW4IAA1uDAANbhAADW4YAA1uIAANbiQADW4oAA1uMAANbjQADXAgAA1wKAANcDQADXA8AA1wSAANcEwADXBQAA1wVAANcFgADXBgAA1waAANcGwADXBwAA1weAANcHwADXDgAA1w5AANcOgADXDwAA1y3AANcuQADXLsAA1y9AANcwAADXMEAA1zCAANcwwADXMQAA1zGAANcyAADXMkAA1zKAANczAADXM0AA11IAANdSgADXUwAA11OAANdUQADXVIAA11TAANdVAADXVUAA11XAANdWQADXVoAA11bAANdXQADXV4AA13ZAANd2wADXd0AA13fAANd4gADXeMAA13kAANd5QADXeYAA13oAANd6gADXesAA13sAANd7gADXe8AA15qAANebAADXm4AA15wAANecwADXnQAA151AANedgADXncAA155AANeewADXnwAA159AANefwADXoAAA177AANe/QADXv8AA18BAANfBAADXwUAA18GAANfBwADXwgAA18KAANfDAADXw0AA18OAANfEAADXxEAA19aAANffgADX6UAA1/JAANfzAADX84AA1/QAANf0gADX9QAA1/WAANf1wADX9oAA1/zAANgEAADYBIAA2AUAANgFgADYBgAA2AaAANgHAADYB4AA2A7AANgPgADYEEAA2BEAANgRwADYEoAA2BNAANgUAADYFIAA2DNAANgzwADYNEAA2DTAANg1gADYNcAA2DYAANg2QADYNoAA2DcAANg3gADYN8AA2DgAANg4gADYOMAA2FeAANhYAADYWIAA2FkAANhZwADYWgAA2FpAANhagADYWsAA2FtAANhbwADYXAAA2FxAANhcwADYXQAA2HvAANh8QADYfMAA2H1AANh+AADYfkAA2H6AANh+wADYfwAA2H+AANiAAADYgEAA2ICAANiBAADYgUAA2KAAANiggADYoQAA2KGAANiiQADYooAA2KLAANijAADYo0AA2KPAANikQADYpIAA2KTAANilQADYpYAA2MRAANjEwADYxUAA2MXAANjGgADYxsAA2McAANjHQADYx4AA2MgAANjIgADYyMAA2MkAANjJgADYycAA2OiAANjpAADY6YAA2OoAANjqwADY6wAA2OtAANjrgADY68AA2OxAANjswADY7QAA2O1AANjtwADY7gAA2QzAANkNQADZDcAA2Q5AANkPAADZD0AA2Q+AANkPwADZEAAA2RCAANkRAADZEUAA2RGAANkSAADZEkAA2TcAANk/wADZR8AA2U/AANlQQADZUMAA2VFAANlRwADZUoAA2VLAANlTAADZU8AA2VQAANlUgADZVMAA2VVAANlWAADZVkAA2VaAANlXQADZV4AA2VjAANlfAADZYUAA2WHAANliQADZZIAA2WVAANlmAADZZoAA2XjAANmBwADZi4AA2ZSAANmVQADZlcAA2ZZAANmWwADZl0AA2ZfAANmYAADZmMAA2Z8AANmnQADZp8AA2ahAANmowADZqUAA2anAANmqQADZqsAA2atAANmzgADZtEAA2bUAANm1wADZtoAA2bdAANm4AADZuMAA2bmAANm6AADZ2MAA2dlAANnZwADZ2kAA2dsAANnbQADZ24AA2dvAANncAADZ3IAA2d0AANndQADZ3YAA2d4AANneQADZ/QAA2f2AANn+AADZ/oAA2f9AANn/gADZ/8AA2gAAANoAQADaAMAA2gFAANoBgADaAcAA2gJAANoCgADaIUAA2iHAANoigADaIwAA2iPAANokAADaJEAA2iSAANokwADaJUAA2iXAANomAADaJkAA2ibAANonAADaLUAA2i2AANotwADaLkAA2k0AANpNgADaTgAA2k6AANpPQADaT4AA2k/AANpQAADaUEAA2lDAANpRQADaUYAA2lHAANpSQADaUoAA2nFAANpxwADackAA2nLAANpzgADac8AA2nQAANp0QADadIAA2nUAANp1gADadcAA2nYAANp2gADadsAA2pWAANqWAADaloAA2pcAANqXwADamAAA2phAANqYgADamMAA2plAANqZwADamgAA2ppAANqawADamwAA2rnAANq6QADausAA2rtAANq8AADavEAA2ryAANq8wADavQAA2r2AANq+AADavkAA2r6AANq/AADav0AA2t4AANregADa3wAA2t+AANrgQADa4IAA2uDAANrhAADa4UAA2uHAANriQADa4oAA2uLAANrjQADa44AA2vXAANr+wADbCIAA2xGAANsSQADbEsAA2xNAANsTwADbFEAA2xTAANsVAADbFcAA2xwAANsjQADbI8AA2yRAANskwADbJUAA2yXAANsmQADbJsAA2y4AANsuwADbL4AA2zBAANsxAADbMcAA2zKAANszQADbM8AA21KAANtTAADbU4AA21QAANtUwADbVQAA21VAANtVgADbVcAA21ZAANtWwADbVwAA21dAANtXwADbWAAA23bAANt3QADbd8AA23hAANt5AADbeUAA23mAANt5wADbegAA23qAANt7AADbe0AA23uAANt8AADbfEAA25sAANubgADbnAAA25yAANudQADbnYAA253AANueAADbnkAA257AANufQADbn4AA25/AANugQADboIAA279AANu/wADbwEAA28DAANvBgADbwcAA28IAANvCQADbwoAA28MAANvDgADbw8AA28QAANvEgADbxMAA2+OAANvkAADb5IAA2+UAANvlwADb5gAA2+ZAANvmgADb5sAA2+dAANvnwADb6AAA2+hAANvowADb6QAA3AfAANwIQADcCMAA3AlAANwKAADcCkAA3AqAANwKwADcCwAA3AuAANwMAADcDEAA3AyAANwNAADcDUAA3CwAANwsgADcLQAA3C2AANwuQADcLoAA3C7AANwvAADcL0AA3C/AANwwQADcMIAA3DDAANwxQADcMYAA3FZAANxfAADcZwAA3G8AANxvgADccAAA3HCAANxxAADcccAA3HIAANxyQADccwAA3HNAANxzwADcdAAA3HSAANx1QADcdYAA3HXAANx2gADcdsAA3HgAANx+QADcgIAA3IEAANyBgADcg8AA3ISAANyFQADchcAA3JgAANyhAADcqsAA3LPAANy0gADctQAA3LWAANy2AADctoAA3LcAANy3QADcuAAA3L5AANzGgADcxwAA3MeAANzIAADcyIAA3MkAANzJgADcygAA3MqAANzSwADc04AA3NRAANzVAADc1cAA3NaAANzXQADc2AAA3NjAANzZQADc+AAA3PiAANz5AADc+YAA3PpAANz6gADc+sAA3PsAANz7QADc+8AA3PxAANz8gADc/MAA3P1AANz9gADdHEAA3RzAAN0dQADdHcAA3R6AAN0ewADdHwAA3R9AAN0fgADdIAAA3SCAAN0gwADdIQAA3SGAAN0hwADdQIAA3UEAAN1BwADdQkAA3UMAAN1DQADdQ4AA3UPAAN1EAADdRIAA3UUAAN1FQADdRYAA3UYAAN1GQADdTIAA3UzAAN1NAADdTYAA3WxAAN1swADdbUAA3W3AAN1ugADdbsAA3W8AAN1vQADdb4AA3XAAAN1wgADdcMAA3XEAAN1xgADdccAA3ZCAAN2RAADdkYAA3ZIAAN2SwADdkwAA3ZNAAN2TgADdk8AA3ZRAAN2UwADdlQAA3ZVAAN2VwADdlgAA3bTAAN21QADdtcAA3bZAAN23AADdt0AA3beAAN23wADduAAA3biAAN25AADduUAA3bmAAN26AADdukAA3dkAAN3ZgADd2gAA3dqAAN3bQADd24AA3dvAAN3cAADd3EAA3dzAAN3dQADd3YAA3d3AAN3eQADd3oAA3f1AAN39wADd/kAA3f7AAN3/gADd/8AA3gAAAN4AQADeAIAA3gEAAN4BgADeAcAA3gIAAN4CgADeAsAA3hUAAN4eAADeJ8AA3jDAAN4xgADeMgAA3jKAAN4zAADeM4AA3jQAAN40QADeNQAA3jtAAN5CgADeQwAA3kOAAN5EAADeRIAA3kUAAN5FgADeRgAA3k1AAN5OAADeTsAA3k+AAN5QQADeUQAA3lHAAN5SgADeUwAA3nHAAN5yQADecsAA3nNAAN50AADedEAA3nSAAN50wADedQAA3nWAAN52AADedkAA3naAAN53AADed0AA3pYAAN6WgADelwAA3peAAN6YQADemIAA3pjAAN6ZAADemUAA3pnAAN6aQADemoAA3prAAN6bQADem4AA3rpAAN66wADeu0AA3rvAAN68gADevMAA3r0AAN69QADevYAA3r4AAN6+gADevsAA3r8AAN6/gADev8AA3t6AAN7fAADe38AA3uBAAN7hAADe4UAA3uGAAN7hwADe4gAA3uKAAN7jAADe40AA3uOAAN7kAADe5EAA3wMAAN8DgADfBAAA3wSAAN8FQADfBYAA3wXAAN8GAADfBkAA3wbAAN8HQADfB4AA3wfAAN8IQADfCIAA3ydAAN8nwADfKEAA3yjAAN8pgADfKcAA3yoAAN8qQADfKoAA3ysAAN8rgADfK8AA3ywAAN8sgADfLMAA30uAAN9MAADfTIAA300AAN9NwADfTgAA305AAN9OgADfTsAA309AAN9PwADfUAAA31BAAN9QwADfUQAA33XAAN9+gADfhoAA346AAN+PAADfj4AA35AAAN+QgADfkUAA35GAAN+RwADfkoAA35LAAN+TQADfk4AA35QAAN+UwADflQAA35VAAN+WAADflkAA35eAAN+dwADfoAAA36CAAN+hAADfo0AA36QAAN+kwADfpUAA37eAAN/AgADfykAA39NAAN/UAADf1IAA39UAAN/VgADf1gAA39aAAN/WwADf14AA393AAN/mAADf5oAA3+cAAN/ngADf6AAA3+iAAN/pAADf6YAA3+oAAN/yQADf8wAA3/PAAN/0gADf9UAA3/YAAN/2wADf94AA3/hAAN/4wADgF4AA4BgAAOAYgADgGQAA4BnAAOAaAADgGkAA4BqAAOAawADgG0AA4BvAAOAcAADgHEAA4BzAAOAdAADgO8AA4DxAAOA8wADgPUAA4D4AAOA+QADgPoAA4D7AAOA/AADgP4AA4EAAAOBAQADgQIAA4EEAAOBBQADgYAAA4GCAAOBhQADgYcAA4GKAAOBiwADgYwAA4GNAAOBjgADgZAAA4GSAAOBkwADgZQAA4GWAAOBlwADgbAAA4GxAAOBsgADgbQAA4IvAAOCMQADgjMAA4I1AAOCOAADgjkAA4I6AAOCOwADgjwAA4I+AAOCQAADgkEAA4JCAAOCRAADgkUAA4LAAAOCwgADgsQAA4LGAAOCyQADgsoAA4LLAAOCzAADgs0AA4LPAAOC0QADgtIAA4LTAAOC1QADgtYAA4NRAAODUwADg1UAA4NXAAODWgADg1sAA4NcAAODXQADg14AA4NgAAODYgADg2MAA4NkAAODZgADg2cAA4PiAAOD5AADg+YAA4PoAAOD6wADg+wAA4PtAAOD7gADg+8AA4PxAAOD8wADg/QAA4P1AAOD9wADg/gAA4RzAAOEdQADhHcAA4R5AAOEfAADhH0AA4R+AAOEfwADhIAAA4SCAAOEhAADhIUAA4SGAAOEiAADhIkAA4TSAAOE9gADhR0AA4VBAAOFRAADhUYAA4VIAAOFSgADhUwAA4VOAAOFTwADhVIAA4VrAAOFiAADhYoAA4WMAAOFjgADhZAAA4WSAAOFlAADhZYAA4WzAAOFtgADhbkAA4W8AAOFvwADhcIAA4XFAAOFyAADhcoAA4ZFAAOGRwADhkkAA4ZLAAOGTgADhk8AA4ZQAAOGUQADhlIAA4ZUAAOGVgADhlcAA4ZYAAOGWgADhlsAA4bWAAOG2AADhtoAA4bcAAOG3wADhuAAA4bhAAOG4gADhuMAA4blAAOG5wADhugAA4bpAAOG6wADhuwAA4dnAAOHaQADh2sAA4dtAAOHcAADh3EAA4dyAAOHcwADh3QAA4d2AAOHeAADh3kAA4d6AAOHfAADh30AA4f4AAOH+gADh/wAA4f+AAOIAQADiAIAA4gDAAOIBAADiAUAA4gHAAOICQADiAoAA4gLAAOIDQADiA4AA4iJAAOIiwADiI0AA4iPAAOIkgADiJMAA4iUAAOIlQADiJYAA4iYAAOImgADiJsAA4icAAOIngADiJ8AA4kaAAOJHAADiR4AA4kgAAOJIwADiSQAA4klAAOJJgADiScAA4kpAAOJKwADiSwAA4ktAAOJLwADiTAAA4mrAAOJrQADia8AA4mxAAOJtAADibUAA4m2AAOJtwADibgAA4m6AAOJvAADib0AA4m+AAOJwAADicEAA4nSAAOJ0wADidUAA4pQAAOKUgADilQAA4pWAAOKWQADiloAA4pbAAOKXAADil0AA4pfAAOKYgADimMAA4pkAAOKZgADimcAA4riAAOK5AADiuYAA4roAAOK6wADiuwAA4rtAAOK7gADiu8AA4rxAAOK9AADivUAA4r2AAOK+AADivkAA4t0AAOLdgADi3kAA4t7AAOLfgADi38AA4uAAAOLgQADi4IAA4uEAAOLhwADi4gAA4uJAAOLiwADi4wAA4wfAAOMQgADjGIAA4yCAAOMhAADjIYAA4yIAAOMigADjI0AA4yOAAOMjwADjJIAA4yTAAOMlQADjJYAA4yYAAOMmwADjJwAA4ydAAOMoAADjKEAA4yqAAOMwwADjMwAA4zOAAOM0AADjNkAA4zcAAOM3wADjOEAA40qAAONTgADjXUAA42ZAAONnAADjZ4AA42gAAONogADjaQAA42mAAONpwADjaoAA43DAAON5AADjeYAA43oAAON6gADjewAA43uAAON8AADjfIAA430AAOOFQADjhgAA44bAAOOHgADjiEAA44kAAOOJwADjioAA44tAAOOLwADjqoAA46sAAOOrgADjrAAA46zAAOOtAADjrUAA462AAOOtwADjrkAA467AAOOvAADjr0AA46/AAOOwAADjzsAA489AAOPPwADj0EAA49EAAOPRQADj0YAA49HAAOPSAADj0oAA49MAAOPTQADj04AA49QAAOPUQADj8wAA4/OAAOP0QADj9MAA4/WAAOP1wADj9gAA4/ZAAOP2gADj9wAA4/eAAOP3wADj+AAA4/iAAOP4wADj/wAA4/9AAOP/gADkAAAA5B7AAOQfQADkH8AA5CBAAOQhAADkIUAA5CGAAOQhwADkIgAA5CKAAOQjAADkI0AA5COAAOQkAADkJEAA5EMAAORDgADkRAAA5ESAAORFQADkRYAA5EXAAORGAADkRkAA5EbAAORHQADkR4AA5EfAAORIQADkSIAA5GdAAORnwADkaEAA5GjAAORpgADkacAA5GoAAORqQADkaoAA5GsAAORrgADka8AA5GwAAORsgADkbMAA5IuAAOSMAADkjIAA5I0AAOSNwADkjgAA5I5AAOSOgADkjsAA5I9AAOSPwADkkAAA5JBAAOSQwADkkQAA5K/AAOSwQADksMAA5LFAAOSyAADkskAA5LKAAOSywADkswAA5LOAAOS0AADktEAA5LSAAOS1AADktUAA5MeAAOTQgADk2kAA5ONAAOTkAADk5IAA5OUAAOTlgADk5gAA5OaAAOTmwADk54AA5O3AAOT1AADk9YAA5PYAAOT2gADk9wAA5PeAAOT4AADk+IAA5P/AAOUAgADlAUAA5QIAAOUCwADlA4AA5QRAAOUFAADlBYAA5SRAAOUkwADlJUAA5SXAAOUmgADlJsAA5ScAAOUnQADlJ4AA5SgAAOUogADlKMAA5SkAAOUpgADlKcAA5UiAAOVJAADlSYAA5UoAAOVKwADlSwAA5UtAAOVLgADlS8AA5UxAAOVMwADlTQAA5U1AAOVNwADlTgAA5WzAAOVtQADlbcAA5W5AAOVvAADlb0AA5W+AAOVvwADlcAAA5XCAAOVxAADlcUAA5XGAAOVyAADlckAA5ZEAAOWRgADlkkAA5ZLAAOWTgADlk8AA5ZQAAOWUQADllIAA5ZUAAOWVgADllcAA5ZYAAOWWgADllsAA5bWAAOW2AADltoAA5bcAAOW3wADluAAA5bhAAOW4gADluMAA5blAAOW5wADlugAA5bpAAOW6wADluwAA5dnAAOXaQADl2sAA5dtAAOXcAADl3EAA5dyAAOXcwADl3QAA5d2AAOXeAADl3kAA5d6AAOXfAADl30AA5f4AAOX+gADl/wAA5f+AAOYAQADmAIAA5gDAAOYBAADmAUAA5gHAAOYCQADmAoAA5gLAAOYDQADmA4AA5ihAAOYxAADmOQAA5kEAAOZBgADmQgAA5kKAAOZDAADmQ8AA5kQAAOZEQADmRQAA5kVAAOZFwADmRgAA5kaAAOZHQADmR4AA5kfAAOZIgADmSMAA5koAAOZQQADmUoAA5lMAAOZTgADmVcAA5laAAOZXQADmV8AA5moAAOZzAADmfMAA5oXAAOaGgADmhwAA5oeAAOaIAADmiIAA5okAAOaJQADmigAA5pBAAOaYgADmmQAA5pmAAOaaAADmmoAA5psAAOabgADmnAAA5pyAAOakwADmpYAA5qZAAOanAADmp8AA5qiAAOapQADmqgAA5qrAAOarQADmygAA5sqAAObLAADmy4AA5sxAAObMgADmzMAA5s0AAObNQADmzcAA5s5AAObOgADmzsAA5s9AAObPgADm7kAA5u7AAObvQADm78AA5vCAAObwwADm8QAA5vFAAObxgADm8gAA5vKAAObywADm8wAA5vOAAObzwADnEoAA5xMAAOcTwADnFEAA5xUAAOcVQADnFYAA5xXAAOcWAADnFoAA5xcAAOcXQADnF4AA5xgAAOcYQADnHoAA5x7AAOcfAADnH4AA5z5AAOc+wADnP0AA5z/AAOdAgADnQMAA50EAAOdBQADnQYAA50IAAOdCgADnQsAA50MAAOdDgADnQ8AA52KAAOdjAADnY4AA52QAAOdkwADnZQAA52VAAOdlgADnZcAA52ZAAOdmwADnZwAA52dAAOdnwADnaAAA54bAAOeHQADnh8AA54hAAOeJAADniUAA54mAAOeJwADnigAA54qAAOeLAADni0AA54uAAOeMAADnjEAA56sAAOergADnrAAA56yAAOetQADnrYAA563AAOeuAADnrkAA567AAOevQADnr4AA56/AAOewQADnsIAA589AAOfPwADn0EAA59DAAOfRgADn0cAA59IAAOfSQADn0oAA59MAAOfTgADn08AA59QAAOfUgADn1MAA5+cAAOfwAADn+cAA6ALAAOgDgADoBAAA6ASAAOgFAADoBYAA6AYAAOgGQADoBwAA6A1AAOgUgADoFQAA6BWAAOgWAADoFoAA6BcAAOgXgADoGAAA6B9AAOggAADoIMAA6CGAAOgiQADoIwAA6CPAAOgkgADoJQAA6EPAAOhEQADoRMAA6EVAAOhGAADoRkAA6EaAAOhGwADoRwAA6EeAAOhIAADoSEAA6EiAAOhJAADoSUAA6GgAAOhogADoaQAA6GmAAOhqQADoaoAA6GrAAOhrAADoa0AA6GvAAOhsQADobIAA6GzAAOhtQADobYAA6IxAAOiMwADojUAA6I3AAOiOgADojsAA6I8AAOiPQADoj4AA6JAAAOiQgADokMAA6JEAAOiRgADokcAA6LCAAOixAADoscAA6LJAAOizAADos0AA6LOAAOizwADotAAA6LSAAOi1AADotUAA6LWAAOi2AADotkAA6NUAAOjVgADo1gAA6NaAAOjXQADo14AA6NfAAOjYAADo2EAA6NjAAOjZQADo2YAA6NnAAOjaQADo2oAA6PlAAOj5wADo+kAA6PrAAOj7gADo+8AA6PwAAOj8QADo/IAA6P0AAOj9gADo/cAA6P4AAOj+gADo/sAA6R2AAOkeAADpHoAA6R8AAOkfwADpIAAA6SBAAOkggADpIMAA6SFAAOkhwADpIgAA6SJAAOkiwADpIwAA6UfAAOlQgADpWIAA6WCAAOlhAADpYYAA6WIAAOligADpY0AA6WOAAOljwADpZIAA6WTAAOllQADpZYAA6WYAAOlmwADpZwAA6WdAAOloAADpaEAA6WmAAOlvwADpcgAA6XKAAOlzAADpdUAA6XYAAOl2wADpd0AA6YmAAOmSgADpnEAA6aVAAOmmAADppoAA6acAAOmngADpqAAA6aiAAOmowADpqYAA6a/AAOm4AADpuIAA6bkAAOm5gADpugAA6bqAAOm7AADpu4AA6bwAAOnEQADpxQAA6cXAAOnGgADpx0AA6cgAAOnIwADpyYAA6cpAAOnKwADp6YAA6eoAAOnqgADp6wAA6evAAOnsAADp7EAA6eyAAOnswADp7UAA6e3AAOnuAADp7kAA6e7AAOnvAADqDcAA6g5AAOoOwADqD0AA6hAAAOoQQADqEIAA6hDAAOoRAADqEYAA6hIAAOoSQADqEoAA6hMAAOoTQADqMgAA6jKAAOozQADqM8AA6jSAAOo0wADqNQAA6jVAAOo1gADqNgAA6jaAAOo2wADqNwAA6jeAAOo3wADqPgAA6j5AAOo+gADqPwAA6l3AAOpeQADqXsAA6l9AAOpgAADqYEAA6mCAAOpgwADqYQAA6mGAAOpiAADqYkAA6mKAAOpjAADqY0AA6oIAAOqCgADqgwAA6oOAAOqEQADqhIAA6oTAAOqFAADqhUAA6oXAAOqGQADqhoAA6obAAOqHQADqh4AA6qZAAOqmwADqp0AA6qfAAOqogADqqMAA6qkAAOqpQADqqYAA6qoAAOqqgADqqsAA6qsAAOqrgADqq8AA6sqAAOrLAADqy4AA6swAAOrMwADqzQAA6s1AAOrNgADqzcAA6s5AAOrOwADqzwAA6s9AAOrPwADq0AAA6u7AAOrvQADq78AA6vBAAOrxAADq8UAA6vGAAOrxwADq8gAA6vKAAOrzAADq80AA6vOAAOr0AADq9EAA6waAAOsPgADrGUAA6yJAAOsjAADrI4AA6yQAAOskgADrJQAA6yWAAOslwADrJoAA6yzAAOs0AADrNIAA6zUAAOs1gADrNgAA6zaAAOs3AADrN4AA6z7AAOs/gADrQEAA60EAAOtBwADrQoAA60NAAOtEAADrRIAA62NAAOtjwADrZEAA62TAAOtlgADrZcAA62YAAOtmQADrZoAA62cAAOtngADrZ8AA62gAAOtogADraMAA64eAAOuIAADriIAA64kAAOuJwADrigAA64pAAOuKgADrisAA64tAAOuLwADrjAAA64xAAOuMwADrjQAA66vAAOusQADrrMAA661AAOuuAADrrkAA666AAOuuwADrrwAA66+AAOuwAADrsEAA67CAAOuxAADrsUAA69AAAOvQgADr0UAA69HAAOvSgADr0sAA69MAAOvTQADr04AA69QAAOvUgADr1MAA69UAAOvVgADr1cAA6/SAAOv1AADr9YAA6/YAAOv2wADr9wAA6/dAAOv3gADr98AA6/hAAOv4wADr+QAA6/lAAOv5wADr+gAA7BjAAOwZQADsGcAA7BpAAOwbAADsG0AA7BuAAOwbwADsHAAA7ByAAOwdAADsHUAA7B2AAOweAADsHkAA7D0AAOw9gADsPgAA7D6AAOw/QADsP4AA7D/AAOxAAADsQEAA7EDAAOxBQADsQYAA7EHAAOxCQADsQoAA7GdAAOxwAADseAAA7IAAAOyAgADsgQAA7IGAAOyCAADsgsAA7IMAAOyDQADshAAA7IRAAOyEwADshQAA7IWAAOyGQADshoAA7IbAAOyHgADsh8AA7IoAAOyQQADskoAA7JMAAOyTgADslcAA7JaAAOyXQADsl8AA7KoAAOyzAADsvMAA7MXAAOzGgADsxwAA7MeAAOzIAADsyIAA7MkAAOzJQADsygAA7NBAAOzYgADs2QAA7NmAAOzaAADs2oAA7NsAAOzbgADs3AAA7NyAAOzkwADs5YAA7OZAAOznAADs58AA7OiAAOzpQADs6gAA7OrAAOzrQADtCgAA7QqAAO0LAADtC4AA7QxAAO0MgADtDMAA7Q0AAO0NQADtDcAA7Q5AAO0OgADtDsAA7Q9AAO0PgADtLkAA7S7AAO0vQADtL8AA7TCAAO0wwADtMQAA7TFAAO0xgADtMgAA7TKAAO0ywADtMwAA7TOAAO0zwADtUoAA7VMAAO1TwADtVEAA7VUAAO1VQADtVYAA7VXAAO1WAADtVoAA7VcAAO1XQADtV4AA7VgAAO1YQADtXoAA7V7AAO1fAADtX4AA7X5AAO1+wADtf0AA7X/AAO2AgADtgMAA7YEAAO2BQADtgYAA7YIAAO2CgADtgsAA7YMAAO2DgADtg8AA7aKAAO2jAADto4AA7aQAAO2kwADtpQAA7aVAAO2lgADtpcAA7aZAAO2mwADtpwAA7adAAO2nwADtqAAA7cbAAO3HQADtx8AA7chAAO3JAADtyUAA7cmAAO3JwADtygAA7cqAAO3LAADty0AA7cuAAO3MAADtzEAA7esAAO3rgADt7AAA7eyAAO3tQADt7YAA7e3AAO3uAADt7kAA7e7AAO3vQADt74AA7e/AAO3wQADt8IAA7g9AAO4PwADuEEAA7hDAAO4RgADuEcAA7hIAAO4SQADuEoAA7hMAAO4TgADuE8AA7hQAAO4UgADuFMAA7icAAO4wAADuOcAA7kLAAO5DgADuRAAA7kSAAO5FAADuRYAA7kYAAO5GQADuRwAA7k1AAO5UgADuVQAA7lWAAO5WAADuVoAA7lcAAO5XgADuWAAA7l9AAO5gAADuYMAA7mGAAO5iQADuYwAA7mPAAO5kgADuZQAA7oPAAO6EQADuhQAA7oWAAO6GQADuhoAA7obAAO6HAADuh0AA7ofAAO6IQADuiIAA7ojAAO6JQADuiYAA7qhAAO6owADuqUAA7qnAAO6qgADuqsAA7qsAAO6rQADuq4AA7qwAAO6sgADurMAA7q0AAO6tgADurcAA7syAAO7NAADuzYAA7s4AAO7OwADuzwAA7s9AAO7PgADuz8AA7tBAAO7QwADu0QAA7tFAAO7RwADu0gAA7vDAAO7xQADu8gAA7vKAAO7zQADu84AA7vPAAO70AADu9EAA7vTAAO71QADu9YAA7vXAAO72QADu9oAA7xVAAO8VwADvFkAA7xbAAO8XgADvF8AA7xgAAO8YQADvGIAA7xkAAO8ZgADvGcAA7xoAAO8agADvGsAA7zmAAO86AADvOoAA7zsAAO87wADvPAAA7zxAAO88gADvPMAA7z1AAO89wADvPgAA7z5AAO8+wADvPwAA713AAO9eQADvXsAA719AAO9gAADvYEAA72CAAO9gwADvYQAA72GAAO9iAADvYkAA72KAAO9jAADvY0AA74gAAO+QwADvmMAA76DAAO+hQADvocAA76JAAO+iwADvo4AA76PAAO+kAADvpMAA76UAAO+lgADvpcAA76ZAAO+nAADvp0AA76eAAO+oQADvqIAA76rAAO+xAADvs0AA77PAAO+0QADvtoAA77dAAO+4AADvuIAA78rAAO/TwADv3YAA7+aAAO/nQADv58AA7+hAAO/owADv6UAA7+nAAO/qAADv6sAA7/EAAO/5QADv+cAA7/pAAO/6wADv+0AA7/vAAO/8QADv/MAA7/1AAPAFgADwBkAA8AcAAPAHwADwCIAA8AlAAPAKAADwCsAA8AuAAPAMAADwKsAA8CtAAPArwADwLEAA8C0AAPAtQADwLYAA8C3AAPAuAADwLoAA8C8AAPAvQADwL4AA8DAAAPAwQADwTwAA8E+AAPBQAADwUIAA8FFAAPBRgADwUcAA8FIAAPBSQADwUsAA8FNAAPBTgADwU8AA8FRAAPBUgADwc0AA8HPAAPB0gADwdQAA8HXAAPB2AADwdkAA8HaAAPB2wADwd0AA8HfAAPB4AADweEAA8HjAAPB5AADwf0AA8H+AAPB/wADwgEAA8J8AAPCfgADwoAAA8KCAAPChQADwoYAA8KHAAPCiAADwokAA8KLAAPCjQADwo4AA8KPAAPCkQADwpIAA8MNAAPDDwADwxEAA8MTAAPDFgADwxcAA8MYAAPDGQADwxoAA8McAAPDHgADwx8AA8MgAAPDIgADwyMAA8OeAAPDoAADw6IAA8OkAAPDpwADw6gAA8OpAAPDqgADw6sAA8OtAAPDrwADw7AAA8OxAAPDswADw7QAA8QvAAPEMQADxDMAA8Q1AAPEOAADxDkAA8Q6AAPEOwADxDwAA8Q+AAPEQAADxEEAA8RCAAPERAADxEUAA8TAAAPEwgADxMQAA8TGAAPEyQADxMoAA8TLAAPEzAADxM0AA8TPAAPE0QADxNIAA8TTAAPE1QADxNYAA8UfAAPFQwADxWoAA8WOAAPFkQADxZMAA8WVAAPFlwADxZkAA8WbAAPFnAADxZ8AA8W4AAPF1QADxdcAA8XZAAPF2wADxd0AA8XfAAPF4QADxeMAA8YAAAPGAwADxgYAA8YJAAPGDAADxg8AA8YSAAPGFQADxhcAA8aSAAPGlAADxpYAA8aYAAPGmwADxpwAA8adAAPGngADxp8AA8ahAAPGowADxqQAA8alAAPGpwADxqgAA8cjAAPHJQADxycAA8cpAAPHLAADxy0AA8cuAAPHLwADxzAAA8cyAAPHNAADxzUAA8c2AAPHOAADxzkAA8e0AAPHtgADx7gAA8e6AAPHvQADx74AA8e/AAPHwAADx8EAA8fDAAPHxQADx8YAA8fHAAPHyQADx8oAA8hFAAPIRwADyEkAA8hLAAPITgADyE8AA8hQAAPIUQADyFIAA8hUAAPIVgADyFcAA8hYAAPIWgADyFsAA8jWAAPI2AADyNoAA8jcAAPI3wADyOAAA8jhAAPI4gADyOMAA8jlAAPI5wADyOgAA8jpAAPI6wADyOwAA8lnAAPJaQADyWwAA8luAAPJcQADyXIAA8lzAAPJdAADyXUAA8l3AAPJeQADyXoAA8l7AAPJfQADyX4AA8mdAAPKGAADyhoAA8ocAAPKHgADyiEAA8oiAAPKIwADyiQAA8olAAPKJwADyikAA8oqAAPKKwADyi0AA8ouAAPKwQADyuQAA8sEAAPLJAADyyYAA8soAAPLKgADyywAA8svAAPLMAADyzEAA8s0AAPLNQADyzcAA8s4AAPLOgADyz0AA8s+AAPLPwADy0IAA8tDAAPLSAADy2EAA8tqAAPLbAADy24AA8t3AAPLegADy30AA8t/AAPLyAADy+wAA8wTAAPMNwADzDoAA8w8AAPMPgADzEAAA8xCAAPMRAADzEUAA8xIAAPMYQADzIIAA8yEAAPMhgADzIgAA8yKAAPMjAADzI4AA8yQAAPMkgADzLMAA8y2AAPMuQADzLwAA8y/AAPMwgADzMUAA8zIAAPMywADzM0AA81IAAPNSgADzUwAA81OAAPNUQADzVIAA81TAAPNVAADzVUAA81XAAPNWQADzVoAA81bAAPNXQADzV4AA83ZAAPN2wADzd0AA83fAAPN4gADzeMAA83kAAPN5QADzeYAA83oAAPN6gADzesAA83sAAPN7gADze8AA85qAAPObAADzm8AA85xAAPOdAADznUAA852AAPOdwADzngAA856AAPOfAADzn0AA85+AAPOgAADzoEAA86aAAPOmwADzpwAA86eAAPPGQADzxsAA88dAAPPHwADzyIAA88jAAPPJAADzyUAA88mAAPPKAADzyoAA88rAAPPLAADzy4AA88vAAPPqgADz6wAA8+uAAPPsAADz7MAA8+0AAPPtQADz7YAA8+3AAPPuQADz7sAA8+8AAPPvQADz78AA8/AAAPQOwAD0D0AA9A/AAPQQQAD0EQAA9BFAAPQRgAD0EcAA9BIAAPQSgAD0EwAA9BNAAP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FZAAEBWYABAVoAAQFawAEBWwABAVtAAQFbgAEBW8ABAVxAAQFcwAEBXQABAV1AAQFdwAEBXgABAXzAAQF9QAEBfcABAX5AAQF/AAEBf0ABAX+AAQF/wAEBgAABAYCAAQGBAAEBgUABAYGAAQGCAAEBgkABAaEAAQGhgAEBogABAaKAAQGjQAEBo4ABAaPAAQGkAAEBpEABAaTAAQGlQAEBpYABAaXAAQGmQAEBpoABAcVAAQHFwAEBxoABAccAAQHHwAEByAABAchAAQHIgAEByMABAclAAQHJwAEBygABAcpAAQHKwAEBywABAenAAQHqQAEB6sABAetAAQHsAAEB7EABAeyAAQHswAEB7QABAe2AAQHuAAEB7kABAe6AAQHvAAEB70ABAg4AAQIOgAECDwABAg+AAQIQQAECEIABAhDAAQIRAAECEUABAhHAAQISQAECEoABAhLAAQITQAECE4ABAjJAAQIywAECM0ABAjPAAQI0gAECNMABAjUAAQI1QAECNYABAjYAAQI2gAECNsABAjcAAQI3gAECN8ABAlyAAQJlQAECbUABAnVAAQJ1wAECdkABAnbAAQJ3QAECeAABAnhAAQJ4gAECeUABAnmAAQJ6AAECekABAnrAAQJ7gAECe8ABAnwAAQJ8wAECfQABAn5AAQKEgAEChsABAodAAQKHwAECigABAorAAQKLgAECjAABAp5AAQKnQAECsQABAroAAQK6wAECu0ABArvAAQK8QAECvMABAr1AAQK9gAECvkABAsSAAQLMwAECzUABAs3AAQLOQAECzsABAs9AAQLPwAEC0EABAtDAAQLZAAEC2cABAtqAAQLbQAEC3AABAtzAAQLdgAEC3kABAt8AAQLfgAEC/kABAv7AAQL/QAEC/8ABAwCAAQMAwAEDAQABAwFAAQMBgAEDAgABAwKAAQMCwAEDAwABAwOAAQMDwAEDIoABAyMAAQMjgAEDJAABAyTAAQMlAAEDJUABAyWAAQMlwAEDJkABAybAAQMnAAEDJ0ABAyfAAQMoAAEDRsABA0dAAQNIAAEDSIABA0lAAQNJgAEDScABA0oAAQNKQAEDSsABA0tAAQNLgAEDS8ABA0xAAQNMgAEDUsABA1MAAQNTQAEDU8ABA3KAAQNzAAEDc4ABA3QAAQN0wAEDdQABA3VAAQN1gAEDdcABA3ZAAQ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ouwAEKTYABCk4AAQpOgAEKTwABCk/AAQpQAAEKUEABClCAAQpQwAEKUUABClHAAQpSAAEKUkABClLAAQpTAAEKccABCnJAAQpzAAEKc4ABCnRAAQp0gAEKdMABCnUAAQp1QAEKdcABCnZAAQp2gAEKdsABCndAAQp3gAEKfcABCn4AAQp+QAEKfsABCp2AAQqeAAEKnoABCp8AAQqfwAEKoAABCqBAAQqggAEKoMABCqFAAQqhwAEKogABCqJAAQqiwAEKowABCsHAAQrCQAEKwwABCsOAAQrEQAEKxIABCsTAAQrFAAEKxUABCsXAAQrGQAEKxoABCsbAAQrHQAEKx4ABCssAAQrRQAEK1IABCtVAAQrWAAEK1sABCtoAAQrawAEK24ABCtxAAQrcwAEK3cABCuJAAQrmwAELC4ABCxRAAQscQAELJEABCyTAAQslQAELJcABCyZAAQsnAAELJ0ABCyeAAQsoQAELKIABCykAAQspQAELKcABCyqAAQsqwAELKwABCyvAAQssAAELLUABCzOAAQs1wAELNkABCzbAAQs5AAELOcABCzqAAQs7AAELTUABC1ZAAQtgAAELaQABC2nAAQtqQAELasABC2tAAQtrwAELbEABC2yAAQttQAELc4ABC3vAAQt8QAELfMABC31AAQt9wAELfkABC37AAQt/QAELf8ABC4gAAQuIwAELiYABC4pAAQuLAAELi8ABC4yAAQuNQAELjgABC46AAQutQAELrcABC65AAQuuwAELr4ABC6/AAQuwAAELsEABC7CAAQuxAAELsYABC7HAAQuyAAELsoABC7LAAQvRgAEL0gABC9KAAQvTAAEL08ABC9QAAQvUQAEL1IABC9TAAQvVQAEL1cABC9YAAQvWQAEL1sABC9cAAQv1wAEL9kABC/cAAQv3gAEL+EABC/iAAQv4wAEL+QABC/lAAQv5wAEL+kABC/qAAQv6wAEL+0ABC/uAAQwBwAEMAgABDAJAAQwCwAEMIYABDCIAAQwigAEMIwABDCPAAQwkAAEMJEABDCSAAQwkwAEMJUABDCXAAQwmAAEMJkABDCbAAQwnAAEMRcABDEZAAQxGwAEMR0ABDEgAAQxIQAEMSIABDEjAAQxJAAEMSYABDEoAAQxKQAEMSoABDEsAAQxLQAEMagABDGqAAQxrAAEMa4ABDGxAAQ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DAwAEQwQABEOHAARDqwAEQ88ABEPyAAREGQAERDkABERgAAREhwAERKcABETLAARE7wAERPEABET0AARE9gAERPgABET6AARE/QAERQAABEUCAARFBAAERQcABEUJAARFCwAERQ4ABEURAARFEgAERRcABEUwAARFNQAERTcABEU8AARFPwAERUEABEWKAARFrgAERdUABEX5AARF/AAERf4ABEYAAARGAgAERgQABEYGAARGBwAERgoABEYjAARGSAAERkoABEZMAARGTgAERlAABEZSAARGVAAERlYABEZYAARGWgAERn8ABEaCAARGhQAERogABEaLAARGjgAERpEABEaUAARGlwAERpoABEacAARHFwAERxkABEccAARHHgAERyEABEciAARHIwAERyQABEclAARHJwAERykABEcqAARHKwAERy0ABEcuAARHPwAER0AABEdCAARHvQAER78ABEfBAARHwwAER8YABEfHAARHyAAER8kABEfKAARHzAAER84ABEfPAARH0AAER9IABEfTAARITgAESFAABEhTAARIVQAESFgABEhZAARIWgAESFsABEhcAARIXgAESGAABEhhAARIYgAESGQABEhlAARIdgAESHcABEh5AARI9AAESPYABEj4AARI+gAESP0ABEj+AARI/wAESQAABEkBAARJAwAESQUABEkGAARJBwAESQkABEkKAARJhQAESYcABEmKAARJjAAESY8ABEmQAARJkQAESZIABEmTAARJlQAESZcABEmYAARJmQAESZsABEmcAARJrQAESa4ABEmwAARKKwAESi0ABEovAARKMQAESjQABEo1AARKNgAESjcABEo4AARKOgAESjwABEo9AARKPgAESkAABEpBAARKvAAESr4ABErBAARKwwAESsYABErHAARKyAAESskABErKAARKzAAESs4ABErPAARK0AAEStIABErTAARK7AAESu0ABEruAARK8AAES2sABEttAARLbwAES3EABEt0AARLdQAES3YABEt3AARLeAAES3oABEt8AARLfQAES34ABEuAAARLgQAES/wABEv+AARMAQAETAMABEwGAARMBwAETAgABEwJAARMCgAETAwABEwOAARMDwAETBAABEwSAARMEwAETCUABEw+AARMgQAETIQABEyHAARMigAETI0ABEyQAARMkwAETJYABEyZAARMnAAETJ8ABEyiAARMpQAETKgABEyrAARMrgAETLEABEz0AARM9wAETPoABEz9AARNAAAETQMABE0GAARNCQAETQwABE0PAARNEgAETRUABE0YAARNGwAETR4ABE0hAARNJAAETSYABE1YAARNdAAETYwABE2aAARNogAETbUABE3DAARN3gAETfYABE4BAAROHAAETjEABE5KAAROVgAETm8ABE59AARPEAAETzMABE9TAARPcwAET3UABE93AARPeQAET3sABE9+AARPfwAET4AABE+DAARPhAAET4YABE+HAARPiQAET4wABE+NAARPjgAET5EABE+SAARPlwAET7AABE+5AARPuwAET70ABE/GAARPyQAET8wABE/OAARQFwAEUDsABFBiAARQhgAEUIkABFCLAARQjQAEUI8ABFCRAARQkwAEUJQABFCXAARQsAAEUNEABFDTAARQ1QAEUNcABFDZAARQ2wAEUN0ABFDfAARQ4QAEUQIABFEFAARRCAAEUQsABFEOAARREQAEURQABFEXAARRGgAEURwABFGXAARRmQAEUZsABFGdAARRoAAEUaEABFGiAARRowAEUaQABFGmAARRqAAEUakABFGqAARRrAAEUa0ABFIoAARSKgAEUiwABFIuAARSMQAEUjIABFIzAARSNAAEUjUABFI3AARSOQAEUjoABFI7AARSPQAEUj4ABFK5AARSuwAEUr4ABFLAAARSwwAEUsQABFLFAARSxgAEUscABFLJAARSywAEUswABFLNAARSzwAEUtAABFLpAARS6gAEUusABFLtAARTaAAEU2oABFNsAARTbgAEU3EABFNyAARTcwAEU3QABFN1AARTdwAEU3kABFN6AARTewAEU30ABFN+AART+QAEU/sABFP9AART/wAEVAIABFQDAARUBAAEVAUABFQGAARUCAAEVAoABFQLAARUDAAEVA4ABFQPAARUigAEVIwABFSOAARUkAAEVJMABFSUAARUlQAEVJYABFSXAARUmQAEVJsABFScAARUnQAEVJ8ABFSgAARVGwAEVR0ABFUfAARVIQAEVSQABFUlAARVJgAEVScABFUoAARVKgAEVSwABFUtAARVLgAEVTAABFUxAARVrAAEVa4ABFWwAARVsgAEVbUABFW2AARVtwAEVbgABFW5AARVuwAEVb0ABFW+AARVvwAEVcEABFXCAARWCwAEVi8ABFZWAARWegAEVn0ABFZ/AARWgQAEVoMABFaFAARWhwAEVogABFaLAARWpAAEVsEABFbDAARWxQAEVscABFbJAARWywAEVs0ABFbPAARW7AAEVu8ABFbyAARW9QAEVvgABFb7AARW/gAEVwEABFcDAARXfgAEV4AABFeCAARXhAAEV4cABFeIAARXiQAEV4oABFeLAARXjQAEV48ABFeQAARXkQAEV5MABFeUAARYDwAEWBEABFgTAARYFQAEWBgABFgZAARYGgAEWBsABFgcAARYHgAEWCAABFghAARYIgAEWCQABFglAARYoAAEWKIABFikAARYpgAEWKkABFiqAARYqwAEWKwABFitAARYrwAEWLEABFiyAARYswAEWLUABFi2AARZMQAEWTMABFk2AARZOAAEWTsABFk8AARZPQAEWT4ABFk/AARZQQAEWUMABFlEAARZRQAEWUcABFlIAARZwwAEWcUABFnHAARZyQAEWcwABFnNAARZzgAEWc8ABFnQAARZ0gAEWdQABFnVAARZ1gAEWdgABFnZAARaVAAEWlYABFpYAARaWgAEWl0ABFpeAARaXwAEWmAABFphAARaYwAEWmUABFpmAARaZwAEWmkABFpqAARa5QAEWucABFrpAARa6wAEWu4ABFrvAARa8AAEWvEABFryAARa9AAEWvYABFr3AARa+AAEWvoABFr7AARbjgAEW7EABFvRAARb8QAEW/MABFv1AARb9wAEW/kABFv8AARb/QAEW/4ABFwBAARcAgAEXAQABFwFAARcBwAEXAoABFwLAARcDAAEXA8ABFwQAARcFQAEXC4ABFw3AARcOQAEXDsABFxEAARcRwAEXEoABFxMAARclQAEXLkABFzgAARdBAAEXQcABF0JAARdCwAEXQ0ABF0PAARdEQAEXRIABF0VAARdLgAEXU8ABF1RAARdUwAEXVUABF1XAARdWQAEXVsABF1dAARdXwAEXYAABF2DAARdhgAEXYkABF2MAARdjwAEXZIABF2VAARdmAAEXZoABF4VAAReFwAEXhkABF4bAAReHgAEXh8ABF4gAAReIQAEXiIABF4kAAReJgAEXicABF4oAAReKgAEXisABF6mAAReqAAEXqoABF6sAARerwAEXrAABF6xAAResgAEXrMABF61AARetwAEXrgABF65AAReuwAEXrwABF83AARfOQAEXzwABF8+AARfQQAEX0IABF9DAARfRAAEX0UABF9HAARfSQAEX0oABF9LAARfTQAEX04ABF9nAARfaAAEX2kABF9rAARf5gAEX+gABF/qAARf7AAEX+8ABF/wAARf8QAEX/IABF/zAARf9QAEX/cABF/4AARf+QAEX/sABF/8AARgdwAEYHkABGB7AARgfQAEYIAABGCBAARgggAEYIMABGCEAARghgAEYIgABGCJAARgigAEYIwABGCNAARhCAAEYQoABGEMAARhDgAEYREABGESAARhEwAEYRQABGEVAARhFwAEYRkABGEaAARhGwAEYR0ABGEeAARhmQAEYZsABGGdAARhnwAEYaIABGGjAARhpAAEYaUABGGmAARhqAAEYaoABGGrAARhrAAEYa4ABGGvAARiKgAEYiwABGIuAARiMAAEYjMABGI0AARiNQAEYjYABGI3AARiOQAEYjsABGI8AARiPQAEYj8ABGJAAARiiQAEYq0ABGLUAARi+AAEYvsABGL9AARi/wAEYwEABGMDAARjBQAEYwYABGMJAARjIgAEYz8ABGNBAARjQwAEY0UABGNHAARjSQAEY0sABGNNAARjagAEY20ABGNwAARjcwAEY3YABGN5AARjfAAEY38ABGOBAARj/AAEY/4ABGQBAARkAwAEZAYABGQHAARkCAAEZAkABGQKAARkDAAEZA4ABGQPAARkEAAEZBIABGQTAARkjgAEZJAABGSSAARklAAEZJcABGSYAARkmQAEZJoABGSbAARknQAEZJ8ABGSgAARkoQAEZKMABGSkAARlHwAEZSEABGUjAARlJQAEZSgABGUpAARlKgAEZSsABGUsAARlLgAEZTAABGUxAARlMgAEZTQABGU1AARlsAAEZbIABGW1AARltwAEZboABGW7AARlvAAEZb0ABGW+AARlwAAEZcIABGXDAARlxAAEZcYABGXHAARmQgAEZkQABGZGAARmSAAEZksABGZMAARmTQAEZk4ABGZPAARmUQAEZlMABGZUAARmVQAEZlcABGZYAARm0wAEZtUABGbXAARm2QAEZtwABGbdAARm3gAEZt8ABGbgAARm4gAEZuQABGblAARm5gAEZugABGbpAARnZAAEZ2YABGdoAARnagAEZ20ABGduAARnbwAEZ3AABGdxAARncwAEZ3UABGd2AARndwAEZ3kABGd6AARoDQAEaDAABGhQAARocAAEaHIABGh0AARodgAEaHgABGh7AARofAAEaH0ABGiAAARogQAEaIMABGiEAARohgAEaIkABGiKAARoiwAEaI4ABGiPAARolAAEaK0ABGi2AARouAAEaLoABGjDAARoxgAEaMkABGjLAARpFAAEaTgABGlfAARpgwAEaYYABGmIAARpigAEaYwABGmOAARpkAAEaZEABGmUAARprQAEac4ABGnQAARp0gAEadQABGnWAARp2AAEadoABGncAARp3gAEaf8ABGoCAARqBQAEaggABGoLAARqDgAEahEABGoUAARqFwAEahkABGqUAARqlgAEapgABGqaAARqnQAEap4ABGqfAARqoAAEaqEABGqjAARqpQAEaqYABGqnAARqqQAEaqoABGslAARrJwAEaykABGsrAARrLgAEay8ABGswAARrMQAEazIABGs0AARrNgAEazcABGs4AARrOgAEazsABGu2AARruAAEa7sABGu9AARrwAAEa8EABGvCAARrwwAEa8QABGvGAARryAAEa8kABGvKAARrzAAEa80ABGvmAARr5wAEa+gABGvqAARsZQAEbGcABGxpAARsawAEbG4ABGxvAARscAAEbHEABGxyAARsdAAEbHYABGx3AARseAAEbHoABGx7AARs9gAEbPgABGz6AARs/AAEbP8ABG0AAARtAQAEbQIABG0DAARtBQAEbQcABG0IAARtCQAEbQsABG0MAARthwAEbYkABG2LAARtjQAEbZAABG2RAARtkgAEbZMABG2UAARtlgAEbZgABG2ZAARtmgAEbZwABG2dAARuGAAEbhoABG4cAARuHgAEbiEABG4iAARuIwAEbiQABG4lAARuJwAEbikABG4qAARuKwAEbi0ABG4uAARuqQAEbqsABG6tAARurwAEbrIABG6zAARutAAEbrUABG62AARuuAAEbroABG67AARuvAAEbr4ABG6/AARvCAAEbywABG9TAARvdwAEb3oABG98AARvfgAEb4AABG+CAARvhAAEb4UABG+IAARvoQAEb74ABG/AAARvwgAEb8QABG/GAARvyAAEb8oABG/MAARv6QAEb+wABG/vAARv8gAEb/UABG/4AARv+wAEb/4ABHAAAARwewAEcH0ABHB/AARwgQAEcIQABHCFAARwhgAEcIcABHCIAARwigAEcIwABHCNAARwjgAEcJAABHCRAARxDAAEcQ4ABHEQAARxEgAEcRUABHEWAARxFwAEcRgABHEZAARxGwAEcR0ABHEeAARxHwAEcSEABHEiAARxnQAEcZ8ABHGhAARxowAEcaYABHGnAARxqAAEcakABHGqAARxrAAEca4ABHGvAARxsAAEcbIABHGzAARyLgAEcjAABHIzAARyNQAEcjgABHI5AARyOgAEcjsABHI8AARyPgAEckAABHJBAARyQgAEckQABHJFAARywAAEcsIABHLEAARyxgAEcskABHLKAARyywAEcswABHLNAARyzwAEctEABHLSAARy0wAEctUABHLWAARzUQAEc1MABHNVAARzVwAEc1oABHNbAARzXAAEc10ABHNeAARzYAAEc2IABHNjAARzZAAEc2YABHNnAARz4gAEc+QABHPmAARz6AAEc+sABHPsAARz7QAEc+4ABHPvAARz8QAEc/MABHP0AARz9QAEc/cABHP4AAR0iwAEdK4ABHTOAAR07gAEdPAABHTyAAR09AAEdPYABHT5AAR0+gAEdPsABHT+AAR0/wAEdQEABHUCAAR1BAAEdQcABHUIAAR1CQAEdQwABHUNAAR1EgAEdSsABHU0AAR1NgAEdTgABHVBAAR1RAAEdUcABHVJAAR1kgAEdbYABHXdAAR2AQAEdgQABHYGAAR2CAAEdgoABHYMAAR2DgAEdg8ABHYSAAR2KwAEdkwABHZOAAR2UAAEdlIABHZUAAR2VgAEdlgABHZaAAR2XAAEdn0ABHaAAAR2gwAEdoYABHaJAAR2jAAEdo8ABHaSAAR2lQAEdpcABHcSAAR3FAAEdxYABHcYAAR3GwAEdxwABHcdAAR3HgAEdx8ABHchAAR3IwAEdyQABHclAAR3JwAEdygABHejAAR3pQAEd6cABHepAAR3rAAEd60ABHeuAAR3rwAEd7AABHeyAAR3tAAEd7UABHe2AAR3uAAEd7kABHg0AAR4NgAEeDkABHg7AAR4PgAEeD8ABHhAAAR4QQAEeEIABHhEAAR4RgAEeEcABHhIAAR4SgAEeEsABHhkAAR4ZQAEeGYABHhoAAR44wAEeOUABHjnAAR46QAEeOwABHjtAAR47gAEeO8ABHjwAAR48gAEePQABHj1AAR49gAEePgABHj5AAR5dAAEeXYABHl4AAR5egAEeX0ABHl+AAR5fwAEeYAABHmBAAR5gwAEeYUABHmGAAR5hwAEeYkABHmKAAR6BQAEegcABHoJAAR6CwAEeg4ABHoPAAR6EAAEehEABHoSAAR6FAAEehYABHoXAAR6GAAEehoABHobAAR6lgAEepgABHqaAAR6nAAEep8ABHqgAAR6oQAEeqIABHqjAAR6pQAEeqcABHqoAAR6qQAEeqsABHqsAAR7JwAEeykABHsrAAR7LQAEezAABHsxAAR7MgAEezMABHs0AAR7NgAEezgABHs5AAR7OgAEezwABHs9AAR7hgAEe6oABHvRAAR79QAEe/gABHv6AAR7/AAEe/4ABHwAAAR8AgAEfAMABHwGAAR8HwAEfDwABHw+AAR8QAAEfEIABHxEAAR8RgAEfEgABHxKAAR8ZwAEfGoABHxtAAR8cAAEfHMABHx2AAR8eQAEfHwABHx+AAR8+QAEfPsABHz9AAR8/wAEfQIABH0DAAR9BAAEfQUABH0GAAR9CAAEfQoABH0LAAR9DAAEfQ4ABH0PAAR9igAEfYwABH2OAAR9kAAEfZMABH2UAAR9lQAEfZYABH2XAAR9mQAEfZsABH2cAAR9nQAEfZ8ABH2gAAR+GwAEfh0ABH4fAAR+IQAEfiQABH4lAAR+JgAEficABH4oAAR+KgAEfiwABH4tAAR+LgAEfjAABH4xAAR+rAAEfq4ABH6xAAR+swAEfrYABH63AAR+uAAEfrkABH66AAR+vAAEfr4ABH6/AAR+wAAEfsIABH7DAAR+xgAEf0EABH9DAAR/RQAEf0cABH9KAAR/SwAEf0wABH9NAAR/TgAEf1AABH9SAAR/UwAEf1QABH9WAAR/VwAEf9IABH/UAAR/1gAEf9gABH/bAAR/3AAEf90ABH/eAAR/3wAEf+EABH/jAAR/5AAEf+UABH/nAAR/6AAEgGMABIBlAASAZwAEgGkABIBsAASAbQAEgG4ABIBvAASAcAAEgHIABIB0AASAdQAEgHYABIB4AASAeQAEgQwABIEvAASBTwAEgW8ABIFxAASBcwAEgXUABIF3AASBegAEgXsABIF8AASBfwAEgYAABIGCAASBgwAEgYYABIGJAASBigAEgYsABIGOAASBjwAEgZQABIGtAASBtgAEgbgABIG7AASBxAAEgccABIHKAASBzAAEghUABII5AASCYAAEgoQABIKHAASCiQAEgosABIKNAASCjwAEgpEABIKSAASClQAEgq4ABILPAASC0QAEgtMABILVAASC1wAEgtkABILbAASC3QAEgt8ABIMAAASDAwAEgwYABIMJAASDDAAEgw8ABIMSAASDFQAEgxgABIMaAASDlQAEg5cABIOZAASDmwAEg54ABIOfAASDoAAEg6EABIOiAASDpAAEg6YABIOnAASDqAAEg6oABIOrAASEJgAEhCgABIQqAASELAAEhC8ABIQwAASEMQAEhDIABIQzAASENQAEhDcABIQ4AASEOQAEhDsABIQ8AASEtwAEhLkABIS8AASEvgAEhMEABITCAASEwwAEhMQABITFAASExwAEhMkABITKAASEywAEhM0ABITOAASE5wAEhOgABITpAASE6wAEhWYABIVoAASFagAEhWwABIVvAASFcAAEhXEABIVyAASFcwAEhXUABIV3AASFeAAEhXkABIV7AASFfAAEhfcABIX5AASF+wAEhf0ABIYAAASGAQAEhgIABIYDAASGBAAEhgYABIYIAASGCQAEhgoABIYMAASGDQAEhogABIaKAASGjAAEho4ABIaRAASGkgAEhpMABIaUAASGlQAEhpcABIaZAASGmgAEhpsABIadAASGngAEhxkABIcbAASHHQAEhx8ABIciAASHIwAEhyQABIclAASHJgAEhygABIcqAASHKwAEhywABIcuAASHLwAEh6oABIesAASHrgAEh7AABIezAASHtAAEh7UABIe2AASHtwAEh7kABIe7AASHvAAEh70ABIe/AASHwAAEiAkABIgtAASIVAAEiHgABIh7AASIfgAEiIAABIiCAASIhAAEiIYABIiHAASIigAEiKMABIjAAASIwwAEiMYABIjJAASIzAAEiM8ABIjSAASI1QAEiPIABIj1AASI+AAEiPsABIj+AASJAQAEiQQABIkHAASJCQAEiYQABImGAASJiQAEiYsABImOAASJjwAEiZAABImRAASJkgAEiZQABImXAASJmAAEiZkABImbAASJnAAEihcABIoZAASKHAAEih4ABIohAASKIgAEiiMABIokAASKJQAEiicABIoqAASKKwAEiiwABIouAASKLwAEiqoABIqsAASKrwAEirEABIq0AASKtQAEirYABIq3AASKuAAEiroABIq9AASKvgAEir8ABIrBAASKwgAEiz0ABIs/AASLQgAEi0QABItHAASLSAAEi0kABItKAASLSwAEi00ABItQAASLUQAEi1IABItUAASLVQAEi9AABIvSAASL1AAEi9YABIvZAASL2gAEi9sABIvcAASL3QAEi98ABIviAASL4wAEi+QABIvmAASL5wAEjGIABIxkAASMZgAEjGgABIxrAASMbAAEjG0ABIxuAASMbwAEjHEABIx0AASMdQAEjHYABIx4AASMeQAEjPQABIz2AASM+QAEjPsABIz+AASM/wAEjQAABI0BAASNAgAEjQQABI0HAASNCAAEjQkABI0LAASNDAAEjZ8ABI3CAASN4gAEjgIABI4EAASOBgAEjggABI4KAASODQAEjg4ABI4PAASOEgAEjhMABI4VAASOFgAEjhkABI4cAASOHQAEjh4ABI4hAASOIgAEjicABI5AAASOSQAEjksABI5OAASOVwAEjloABI5dAASOXwAEjqgABI7MAASO8wAEjxcABI8aAASPHAAEjx4ABI8gAASPIgAEjyQABI8lAASPKAAEj0EABI9iAASPZAAEj2YABI9oAASPagAEj2wABI9uAASPcAAEj3IABI+TAASPlgAEj5kABI+cAASPnwAEj6IABI+lAASPqAAEj6sABI+tAASQKAAEkCoABJAsAASQLgAEkDEABJAyAASQMwAEkDQABJA1AASQNwAEkDkABJA6AASQOwAEkD0ABJA+AASQuQAEkLsABJC9AASQvwAEkMIABJDDAASQxAAEkMUABJDGAASQyAAEkMoABJDLAASQzAAEkM4ABJDPAASRSgAEkUwABJFPAASRUQAEkVQABJFVAASRVgAEkVcABJFYAASRWgAEkVwABJFdAASRXgAEkWAABJFhAASRegAEkXsABJF8AASRfgAEkfkABJH7AASR/QAEkf8ABJICAASSAwAEkgQABJIFAASSBgAEkggABJIKAASSCwAEkgwABJIOAASSDwAEkooABJKMAASSjgAEkpAABJKTAASSlAAEkpUABJKWAASSlwAEkpkABJKbAASSnAAEkp0ABJKfAASSoAAEkxsABJMdAASTHwAEkyEABJMkAASTJQAEkyYABJMnAASTKAAEkyoABJMsAASTLQAEky4ABJMwAASTMQAEk6wABJOuAASTsAAEk7IABJO1AASTtgAEk7cABJO4AASTuQAEk7sABJO9AASTvgAEk78ABJPBAASTwgAElD0ABJQ/AASUQQAElEMABJRGAASURwAElEgABJRJAASUSgAElEwABJROAASUTwAElFAABJRSAASUUwAElJwABJTAAASU5wAElQsABJUOAASVEQAElRMABJUVAASVFwAElRkABJUaAASVHQAElTYABJVTAASVVgAElVkABJVcAASVXwAElWIABJVlAASVaAAElYUABJWIAASViwAElY4ABJWRAASVlAAElZcABJWaAASVnAAElhcABJYZAASWHAAElh4ABJYhAASWIgAEliMABJYkAASWJQAElicABJYqAASWKwAEliwABJYuAASWLwAElqoABJasAASWrwAElrEABJa0AASWtQAElrYABJa3AASWuAAElroABJa9AASWvgAElr8ABJbBAASWwgAElz0ABJc/AASXQgAEl0QABJdHAASXSAAEl0kABJdKAASXSwAEl00ABJdQAASXUQAEl1IABJdUAASXVQAEl9AABJfSAASX1QAEl9cABJfaAASX2wAEl9wABJfdAASX3gAEl+AABJfjAASX5AAEl+UABJfnAASX6AAEmGsABJiPAASYswAEmNYABJj9AASZHQAEmUQABJlrAASZiwAEma8ABJnTAASZ1QAEmdgABJnaAASZ3AAEmd4ABJnhAASZ5AAEmeYABJnoAASZ6wAEme0ABJnvAASZ8gAEmfUABJn2AASZ+wAEmhQABJoZAASaGwAEmiAABJojAASaJQAEmm4ABJqSAASauQAEmt0ABJrgAASa4gAEmuQABJrmAASa6AAEmuoABJrrAASa7gAEmwcABJssAASbLgAEmzAABJsyAASbNAAEmzYABJs4AASbOgAEmzwABJs+AASbYwAEm2YABJtpAASbbAAEm28ABJtyAASbdQAEm3gABJt7AASbfgAEm4AABJv7AASb/QAEnAAABJwCAAScBQAEnAYABJwHAAScCAAEnAkABJwLAAScDQAEnA4ABJwPAAScEQAEnBIABJwjAAScJAAEnCYABJyhAAScowAEnKUABJynAAScqgAEnKsABJysAAScrQAEnK4ABJywAAScsgAEnLMABJy0AASctgAEnLcABJ0yAASdNAAEnTcABJ05AASdPAAEnT0ABJ0+AASdPwAEnUAABJ1CAASdRAAEnUUABJ1GAASdSAAEnUkABJ1aAASdWwAEnV0ABJ3YAASd2gAEndwABJ3eAASd4QAEneIABJ3jAASd5AAEneUABJ3nAASd6QAEneoABJ3rAASd7QAEne4ABJ5pAASeawAEnm4ABJ5wAASecwAEnnQABJ51AASedgAEnncABJ55AASeewAEnnwABJ59AASefwAEnoAABJ6RAASekgAEnpQABJ8PAASfEQAEnxMABJ8VAASfGAAEnxkABJ8aAASfGwAEnxwABJ8eAASfIAAEnyEABJ8iAASfJAAEnyUABJ+gAASfogAEn6UABJ+nAASfqgAEn6sABJ+sAASfrQAEn64ABJ+wAASfsgAEn7MABJ+0AASftgAEn7cABJ/QAASf0QAEn9IABJ/UAASgTwAEoFEABKBTAASgVQAEoFgABKBZAASgWgAEoFsABKBcAASgXgAEoGAABKBhAASgYgAEoGQABKBlAASg4AAEoOIABKDlAASg5wAEoOoABKDrAASg7AAEoO0ABKDuAASg8AAEoPIABKDzAASg9AAEoPYABKD3AAShDgAEoScABKE4AAShOwAEoT4ABKFBAAShRAAEoVUABKFYAAShWwAEoV4ABKFhAAShYwAEoXUABKGEAAShmQAEobAABKJDAASiZgAEooYABKKmAASiqAAEoqoABKKsAASirgAEorEABKKyAASiswAEorYABKK3AASiuQAEoroABKK9AASiwAAEosEABKLCAASixQAEosYABKLLAASi5AAEou0ABKLvAASi8gAEovsABKL+AASjAQAEowMABKNMAASjcAAEo5cABKO7AASjvgAEo8AABKPCAASjxAAEo8YABKPIAASjyQAEo8wABKPlAASkBgAEpAgABKQKAASkDAAEpA4ABKQQAASkEgAEpBQABKQWAASkNwAEpDoABKQ9AASkQAAEpEMABKRGAASkSQAEpEwABKRPAASkUQAEpMwABKTOAASk0AAEpNIABKTVAASk1gAEpNcABKTYAASk2QAEpNsABKTdAASk3gAEpN8ABKThAASk4gAEpV0ABKVfAASlYQAEpWMABKVmAASlZwAEpWgABKVpAASlagAEpWwABKVuAASlbwAEpXAABKVyAASlcwAEpe4ABKXwAASl8wAEpfUABKX4AASl+QAEpfoABKX7AASl/AAEpf4ABKYAAASmAQAEpgIABKYEAASmBQAEph4ABKYfAASmIAAEpiIABKadAASmnwAEpqEABKajAASmpgAEpqcABKaoAASmqQAEpqoABKasAASmrgAEpq8ABKawAASmsgAEprMABKcuAASnMAAEpzIABKc0AASnNwAEpzgABKc5AASnOgAEpzsABKc9AASnPwAEp0AABKdBAASnQwAEp0QABKe/AASnwQAEp8MABKfFAASnyAAEp8kABKfKAASnywAEp8wABKfOAASn0AAEp9EABKfSAASn1AAEp9UABKhQAASoUgAEqFQABKhWAASoWQAEqFoABKhbAASoXAAEqF0ABKhfAASoYQAEqGIABKhjAASoZQAEqGYABKjhAASo4wAEqOUABKjnAASo6gAEqOsABKjsAASo7QAEqO4ABKjwAASo8gAEqPMABKj0AASo9gAEqPcABKlAAASpZAAEqYsABKmvAASpsgAEqbUABKm3AASpuQAEqbsABKm9AASpvgAEqcEABKnaAASp9wAEqfoABKn9AASqAAAEqgMABKoGAASqCQAEqgwABKopAASqLAAEqi8ABKoyAASqNQAEqjgABKo7AASqPgAEqkAABKq7AASqvQAEqsAABKrCAASqxQAEqsYABKrHAASqyAAEqskABKrLAASqzgAEqs8ABKrQAASq0gAEqtMABKtOAASrUAAEq1MABKtVAASrWAAEq1kABKtaAASrWwAEq1wABKteAASrYQAEq2IABKtjAASrZQAEq2YABKvhAASr4wAEq+YABKvoAASr6wAEq+wABKvtAASr7gAEq+8ABKvxAASr9AAEq/UABKv2AASr+AAEq/kABKx0AASsdgAErHkABKx7AASsfgAErH8ABKyAAASsgQAErIIABKyEAASshwAErIgABKyJAASsiwAErIwABK0PAAStMwAErVcABK16AAStoQAErcEABK3oAASuDwAEri8ABK5TAASudwAErnkABK58AASufgAEroAABK6CAASuhQAErogABK6KAASujAAEro8ABK6RAASukwAErpYABK6ZAASumgAErp8ABK64AASuvQAErr8ABK7EAASuxwAErskABK8SAASvNgAEr10ABK+BAASvhAAEr4YABK+IAASvigAEr4wABK+OAASvjwAEr5IABK+rAASv0AAEr9IABK/UAASv1gAEr9gABK/aAASv3AAEr94ABK/gAASv4gAEsAcABLAKAASwDQAEsBAABLATAASwFgAEsBkABLAcAASwHwAEsCIABLAkAASwnwAEsKEABLCkAASwpgAEsKkABLCqAASwqwAEsKwABLCtAASwrwAEsLEABLCyAASwswAEsLUABLC2AASwxwAEsMgABLDKAASxRQAEsUcABLFJAASxSwAEsU4ABLFPAASxUAAEsVEABLFSAASxVAAEsVYABLFXAASxWAAEsVoABLFbAASx1gAEsdgABLHbAASx3QAEseAABLHhAASx4gAEseMABLHkAASx5gAEsegABLHpAASx6gAEsewABLHtAASx/gAEsgMABLIGAASyCAAEshkABLIqAASyLQAEsjAABLIzAASyNgAEsjgABLJTAASyXwAEsmsABLJ4AASy8wAEsvUABLL3AASy+QAEsvwABLL9AASy/gAEsv8ABLMAAASzAgAEswQABLMFAASzBgAEswgABLMJAASzhAAEs4YABLOJAASziwAEs44ABLOPAASzkAAEs5EABLOSAASzlAAEs5YABLOXAASzmAAEs5oABLObAASzrAAEs60ABLOvAAS0KgAEtCwABLQuAAS0MAAEtDMABLQ0AAS0NQAEtDYABLQ3AAS0OQAEtDsABLQ8AAS0PQAEtD8ABLRAAAS0uwAEtL0ABLTAAAS0wgAEtMUABLTGAAS0xwAEtMgABLTJAAS0ywAEtM0ABLTOAAS0zwAEtNEABLTSAAS06wAEtOwABLTtAAS07wAEtWoABLVsAAS1bgAEtXAABLVzAAS1dAAEtXUABLV2AAS1dwAEtXkABLV7AAS1fAAEtX0ABLV/AAS1gAAEtfsABLX9AAS2AAAEtgIABLYFAAS2BgAEtgcABLYIAAS2CQAEtgsABLYNAAS2DgAEtg8ABLYRAAS2EgAEtiEABLY6AAS2jQAEtpAABLaTAAS2lgAEtpkABLacAAS2nwAEtqIABLalAAS2qAAEtqsABLauAAS2sQAEtrQABLa3AAS2ugAEtr0ABLbAAAS2wwAEtsYABLbJAAS3HAAEtx8ABLciAAS3JQAEtygABLcrAAS3LgAEtzEABLc0AAS3NwAEtzoABLc9AAS3QAAEt0MABLdGAAS3SQAEt0wABLdPAAS3UgAEt1UABLdYAAS3WgAEt2wABLeBAAS3iAAEt5wABLe9AAS30QAEt+UABLgEAAS4EQAEuCMABLgvAAS4XQAEuGoABLiFAAS4oAAEuK0ABLjAAAS4zAAEuOIABLj8AAS5jwAEubIABLnSAAS58gAEufQABLn2AAS5+AAEufoABLn9AAS5/gAEuf8ABLoCAAS6AwAEugUABLoGAAS6CQAEugwABLoNAAS6DgAEuhEABLoSAAS6FwAEujAABLo5AAS6OwAEuj4ABLpHAAS6SgAEuk0ABLpPAAS6mAAEurwABLrjAAS7BwAEuwoABLsMAAS7DgAEuxAABLsSAAS7FAAEuxUABLsYAAS7MQAEu1IABLtUAAS7VgAEu1gABLtaAAS7XAAEu14ABLtgAAS7YgAEu4MABLuGAAS7iQAEu4wABLuPAAS7kgAEu5UABLuYAAS7mwAEu50ABLwYAAS8GgAEvBwABLweAAS8IQAEvCIABLwjAAS8JAAEvCUABLwnAAS8KQAEvCoABLwrAAS8LQAEvC4ABLypAAS8qwAEvK0ABLyvAAS8sgAEvLMABLy0AAS8tQAEvLYABLy4AAS8ugAEvLsABLy8AAS8vgAEvL8ABL06AAS9PAAEvT8ABL1BAAS9RAAEvUUABL1GAAS9RwAEvUgABL1KAAS9TAAEvU0ABL1OAAS9UAAEvVEABL1qAAS9awAEvWwABL1uAAS96QAEvesABL3tAAS97wAEvfIABL3zAAS99AAEvfUABL32AAS9+AAEvfoABL37AAS9/AAEvf4ABL3/AAS+egAEvnwABL5+AAS+gAAEvoMABL6EAAS+hQAEvoYABL6HAAS+iQAEvosABL6MAAS+jQAEvo8ABL6QAAS/CwAEvw0ABL8PAAS/EQAEvxQABL8VAAS/FgAEvxcABL8YAAS/GgAEvxwABL8dAAS/HgAEvyAABL8hAAS/nAAEv54ABL+gAAS/ogAEv6UABL+mAAS/pwAEv6gABL+pAAS/qwAEv60ABL+uAAS/rwAEv7EABL+yAATALQAEwC8ABMAxAATAMwAEwDYABMA3AATAOAAEwDkABMA6AATAPAAEwD4ABMA/AATAQAAEwEIABMBDAATAjAAEwLAABMDXAATA+wAEwP4ABMEBAATBAwAEwQUABMEHAATBCQAEwQoABMENAATBJgAEwUMABMFGAATBSQAEwUwABMFPAATBUgAEwVUABMFYAATBdQAEwXgABMF7AATBfgAEwYEABMGEAATBhwAEwYoABMGMAATCBwAEwgkABMIMAATCDgAEwhEABMISAATCEwAEwhQABMIVAATCFwAEwhoABMIbAATCHAAEwh4ABMIfAATCmgAEwpwABMKfAATCoQAEwqQABMKlAATCpgAEwqcABMKoAATCqgAEwq0ABMKuAATCrwAEwrEABMKyAATDLQAEwy8ABMMyAATDNAAEwzcABMM4AATDOQAEwzoABMM7AATDPQAEw0AABMNBAATDQgAEw0QABMNFAATDwAAEw8IABMPFAATDxwAEw8oABMPLAATDzAAEw80ABMPOAATD0AAEw9MABMPUAATD1QAEw9cABMPYAATEUwAExFUABMRXAATEWQAExFwABMRdAATEXgAExF8ABMRgAATEYgAExGUABMRmAATEZwAExGkABMRqAATE5QAExOcABMTpAATE6wAExO4ABMTvAATE8AAExPEABMTyAATE9AAExPcABMT4AATE+QAExPsABMT8AATFdwAExXkABMV8AATFfgAExYEABMWCAATFgwAExYQABMWFAATFhwAExYoABMWLAATFjAAExY4ABMWPAATGIgAExkUABMZlAATGhQAExocABMaJAATGiwAExo0ABMaQAATGkQAExpIABMaVAATGlgAExpgABMaZAATGmwAExp4ABMafAATGoAAExqMABMakAATGqQAExsIABMbLAATGzQAExs8ABMbYAATG2wAExt4ABMbgAATHKQAEx00ABMd0AATHmAAEx5sABMedAATHnwAEx6EABMejAATHpQAEx6YABMepAATHwgAEx+MABMflAATH5wAEx+kABMfrAATH7QAEx+8ABMfxAATH8wAEyBQABMgXAATIGgAEyB0ABMggAATIIwAEyCYABMgpAATILAAEyC4ABMipAATIqwAEyK0ABMivAATIsgAEyLMABMi0AATItQAEyLYABMi4AATIugAEyLsABMi8AATIvgAEyL8ABMk6AATJPAAEyT4ABMlAAATJQwAEyUQABMlFAATJRgAEyUcABMlJAATJSwAEyUwABMlNAATJTwAEyVAABMnLAATJzQAEydAABMnSAATJ1QAEydYABMnXAATJ2AAEydkABMnbAATJ3QAEyd4ABMnfAATJ4QAEyeIABMn7AATJ/AAEyf0ABMn/AATKegAEynwABMp+AATKgAAEyoMABMqEAATKhQAEyoYABMqHAATKiQAEyosABMqMAATKjQAEyo8ABMqQAATLCwAEyw0ABMsPAATLEQAEyxQABMsVAATLFgAEyxcABMsYAATLGgAEyxwABMsdAATLHgAEyyAABMshAATLnAAEy54ABMugAATLogAEy6UABMumAATLpwAEy6gABMupAATLqwAEy60ABMuuAATLrwAEy7EABMuyAATMLQAEzC8ABMwxAATMMwAEzDYABMw3AATMOAAEzDkABMw6AATMPAAEzD4ABMw/AATMQAAEzEIABMxDAATMvgAEzMAABMzCAATMxAAEzMcABMzIAATMyQAEzMoABMzLAATMzQAEzM8ABMzQAATM0QAEzNMABMzUAATNHQAEzUEABM1oAATNjAAEzY8ABM2RAATNkwAEzZUABM2XAATNmQAEzZoABM2dAATNtgAEzdMABM3VAATN1wAEzdkABM3bAATN3QAEzd8ABM3hAATN/gAEzgEABM4EAATOBwAEzgoABM4NAATOEAAEzhMABM4VAATOkAAEzpIABM6UAATOlgAEzpkABM6aAATOmwAEzpwABM6dAATOnwAEzqEABM6iAATOowAEzqUABM6mAATPIQAEzyMABM8lAATPJwAEzyoABM8rAATPLAAEzy0ABM8uAATPMAAEzzIABM8zAATPNAAEzzYABM83AATPsgAEz7QABM+2AATPuAAEz7sABM+8AATPvQAEz74ABM+/AATPwQAEz8MABM/EAATPxQAEz8cABM/IAATQQwAE0EUABNBIAATQSgAE0E0ABNBOAATQTwAE0FAABNBRAATQUwAE0FUABNBWAATQVwAE0FkABNBaAATQ1QAE0NcABNDZAATQ2wAE0N4ABNDfAATQ4AAE0OEABNDiAATQ5AAE0OYABNDnAATQ6AAE0OoABNDrAATRZgAE0WgABNFqAATRbAAE0W8ABNFwAATRcQAE0XIABNFzAATRdQAE0XcABNF4AATReQAE0XsABNF8AATR9wAE0fkABNH7AATR/QAE0gAABNIBAATSAgAE0gMABNIEAATSBgAE0ggABNIJAATSCgAE0gwABNINAATSoAAE0sMABNLjAATTAwAE0wUABNMHAATTCQAE0wsABNMOAATTDwAE0xAABNMTAATTFAAE0xYABNMXAATTGQAE0xwABNMdAATTHgAE0yEABNMiAATTJwAE00AABNNJAATTSwAE000ABNNWAATTWQAE01wABNNeAATTpwAE08sABNPyAATUFgAE1BkABNQbAATUHQAE1B8ABNQhAATUIwAE1CQABNQnAATUQAAE1GEABNRjAATUZQAE1GcABNRpAATUawAE1G0ABNRvAATUcQAE1JIABNSVAATUmAAE1JsABNSeAATUoQAE1KQABNSnAATUqgAE1KwABNUnAATVKQAE1SsABNUtAATVMAAE1TEABNUyAATVMwAE1TQABNU2AATVOAAE1TkABNU6AATVPAAE1T0ABNW4AATVugAE1bwABNW+AATVwQAE1cIABNXDAATVxAAE1cUABNXHAATVyQAE1coABNXLAATVzQAE1c4ABNZJAATWSwAE1k4ABNZQAATWUwAE1lQABNZVAATWVgAE1lcABNZZAATWWwAE1lwABNZdAATWXwAE1mAABNZ5AATWegAE1nsABNZ9AATW+AAE1voABNb8AATW/gAE1wEABNcCAATXAwAE1wQABNcFAATXBwAE1wkABNcKAATXCwAE1w0ABNcOAATXiQAE14sABNeNAATXjwAE15IABNeTAATXlAAE15UABNeWAATXmAAE15oABNebAATXnAAE154ABNefAATYGgAE2BwABNgeAATYIAAE2CMABNgkAATYJQAE2CYABNgnAATYKQAE2CsABNgsAATYLQAE2C8ABNgwAATYqwAE2K0ABNivAATYsQAE2LQABNi1AATYtgAE2LcABNi4AATYugAE2LwABNi9AATYvgAE2MAABNjBAATZPAAE2T4ABNlAAATZQgAE2UUABNlGAATZRwAE2UgABNlJAATZSwAE2U0ABNlOAATZTwAE2VEABNlSAATZmwAE2b8ABNnmAATaCgAE2g0ABNoPAATaEQAE2hMABNoVAATaFwAE2hgABNobAATaNAAE2lEABNpTAATaVQAE2lcABNpZAATaWwAE2l0ABNpfAATafAAE2n8ABNqCAATahQAE2ogABNqLAATajgAE2pEABNqTAATbDgAE2xAABNsTAATbFQAE2xgABNsZAATbGgAE2xsABNscAATbHgAE2yAABNshAATbIgAE2yQABNslAATbKQAE26QABNumAATbqAAE26oABNutAATbrgAE268ABNuwAATbsQAE27MABNu1AATbtgAE27cABNu5AATbugAE3DUABNw3AATcOQAE3DsABNw+AATcPwAE3EAABNxBAATcQgAE3EQABNxGAATcRwAE3EgABNxKAATcSwAE3MYABNzIAATcywAE3M0ABNzQAATc0QAE3NIABNzTAATc1AAE3NYABNzYAATc2QAE3NoABNzcAATc3QAE3VgABN1aAATdXAAE3V4ABN1hAATdYgAE3WMABN1kAATdZQAE3WcABN1pAATdagAE3WsABN1tAATdbgAE3ekABN3rAATd7QAE3e8ABN3yAATd8wAE3fQABN31AATd9gAE3fgABN36AATd+wAE3fwABN3+AATd/wAE3noABN58AATefgAE3oAABN6DAATehAAE3oUABN6GAATehwAE3okABN6LAATejAAE3o0ABN6PAATekAAE3yMABN9GAATfZgAE34YABN+IAATfigAE34wABN+OAATfkQAE35IABN+TAATflgAE35cABN+ZAATfmgAE350ABN+gAATfoQAE36IABN+lAATfpgAE36sABN/EAATfzQAE388ABN/SAATf2wAE394ABN/hAATf4wAE4CwABOBQAATgdwAE4JsABOCeAATgoAAE4KIABOCkAATgpgAE4KgABOCpAATgrAAE4MUABODmAATg6AAE4OoABODsAATg7gAE4PAABODyAATg9AAE4PYABOEXAAThGgAE4R0ABOEgAAThIwAE4SYABOEpAAThLAAE4S8ABOExAAThrAAE4a4ABOGwAAThsgAE4bUABOG2AAThtwAE4bgABOG5AAThuwAE4b0ABOG+AAThvwAE4cEABOHCAATiPQAE4j8ABOJBAATiQwAE4kYABOJHAATiSAAE4kkABOJKAATiTAAE4k4ABOJPAATiUAAE4lIABOJTAATizgAE4tAABOLTAATi1QAE4tgABOLZAATi2gAE4tsABOLcAATi3gAE4uAABOLhAATi4gAE4uQABOLlAATi/gAE4v8ABOMAAATjAgAE430ABON/AATjgQAE44MABOOGAATjhwAE44gABOOJAATjigAE44wABOOOAATjjwAE45AABOOSAATjkwAE5A4ABOQQAATkEgAE5BQABOQXAATkGAAE5BkABOQaAATkGwAE5B0ABOQfAATkIAAE5CEABOQjAATkJAAE5J8ABOShAATkowAE5KUABOSoAATkqQAE5KoABOSrAATkrAAE5K4ABOSwAATksQAE5LIABOS0AATktQAE5TAABOUyAATlNAAE5TYABOU5AATlOgAE5TsABOU8AATlPQAE5T8ABOVBAATlQgAE5UMABOVFAATlRgAE5cEABOXDAATlxQAE5ccABOXKAATlywAE5cwABOXNAATlzgAE5dAABOXSAATl0wAE5dQABOXWAATl1wAE5iAABOZEAATmawAE5o8ABOaSAATmlQAE5pcABOaZAATmmwAE5p0ABOaeAATmoQAE5roABObXAATm2gAE5t0ABObgAATm4wAE5uYABObpAATm7AAE5wkABOcMAATnDwAE5xIABOcVAATnGAAE5xsABOceAATnIAAE55sABOedAATnoAAE56IABOelAATnpgAE56cABOeoAATnqQAE56sABOeuAATnrwAE57AABOeyAATnswAE6C4ABOgwAAToMwAE6DUABOg4AAToOQAE6DoABOg7AAToPAAE6D4ABOhBAAToQgAE6EMABOhFAAToRgAE6MEABOjDAAToxgAE6MgABOjLAATozAAE6M0ABOjOAATozwAE6NEABOjUAATo1QAE6NYABOjYAATo2QAE6VQABOlWAATpWQAE6VsABOleAATpXwAE6WAABOlhAATpYgAE6WQABOlnAATpaAAE6WkABOlrAATpbAAE6e8ABOoTAATqNwAE6loABOqBAATqoQAE6sgABOrvAATrDwAE6zMABOtXAATrWQAE61wABOteAATrYAAE62IABOtlAATraAAE62oABOtsAATrbwAE63EABOtzAATrdgAE63kABOt6AATrfwAE65gABOudAATrnwAE66QABOunAATrqQAE6/IABOwWAATsPQAE7GEABOxkAATsZgAE7GgABOxqAATsbAAE7G4ABOxvAATscgAE7IsABOywAATssgAE7LQABOy2AATsuAAE7LoABOy8AATsvgAE7MAABOzCAATs5wAE7OoABOztAATs8AAE7PMABOz2AATs+QAE7PwABOz/AATtAgAE7QQABO1/AATtgQAE7YQABO2GAATtiQAE7YoABO2LAATtjAAE7Y0ABO2PAATtkQAE7ZIABO2TAATtlQAE7ZYABO2nAATtqAAE7aoABO4lAATuJwAE7ikABO4rAATuLgAE7i8ABO4wAATuMQAE7jIABO40AATuNgAE7jcABO44AATuOgAE7jsABO62AATuuAAE7rsABO69AATuwAAE7sEABO7CAATuwwAE7sQABO7GAATuyAAE7skABO7KAATuzAAE7s0ABO7eAATu3wAE7uEABO9cAATvXgAE72AABO9iAATvZQAE72YABO9nAATvaAAE72kABO9rAATvbQAE724ABO9vAATvcQAE73IABO/tAATv7wAE7/IABO/0AATv9wAE7/gABO/5AATv+gAE7/sABO/9AATv/wAE8AAABPABAATwAwAE8AQABPAVAATwFgAE8BgABPCTAATwlQAE8JcABPCZAATwnAAE8J0ABPCeAATwnwAE8KAABPCiAATwpAAE8KUABPCmAATwqAAE8KkABPEkAATxJgAE8SkABPErAATxLgAE8S8ABPEwAATxMQAE8TIABPE0AATxNgAE8TcABPE4AATxOgAE8TsABPFUAATxVQAE8VYABPFYAATx0wAE8dUABPHXAATx2QAE8dwABPHdAATx3gAE8d8ABPHgAATx4gAE8eQABPHlAATx5gAE8egABPHpAATyZAAE8mYABPJpAATyawAE8m4ABPJvAATycAAE8nEABPJyAATydAAE8nYABPJ3AATyeAAE8noABPJ7AATykwAE8qwABPLJAATyzAAE8s8ABPLSAATy1QAE8tgABPLbAATy3gAE8vsABPL+AATzAQAE8wQABPMHAATzCgAE8w0ABPMQAATzEgAE8y0ABPNYAATzbgAE84cABPOwAATzyAAE89YABPRpAAT0jAAE9KwABPTMAAT0zgAE9NAABPTSAAT01AAE9NcABPTYAAT02QAE9NwABPTdAAT03wAE9OAABPTiAAT05QAE9OYABPTnAAT06gAE9OsABPTwAAT1CQAE9RIABPUUAAT1FgAE9R8ABPUiAAT1JQAE9ScABPVwAAT1lAAE9bsABPXfAAT14gAE9eQABPXmAAT16AAE9eoABPXsAAT17QAE9fAABPYJAAT2KgAE9iwABPYuAAT2MAAE9jIABPY0AAT2NgAE9jgABPY6AAT2WwAE9l4ABPZhAAT2ZAAE9mcABPZqAAT2bQAE9nAABPZzAAT2dQAE9vAABPbyAAT29AAE9vYABPb5AAT2+gAE9vsABPb8AAT2/QAE9v8ABPcBAAT3AgAE9wMABPcFAAT3BgAE94EABPeDAAT3hQAE94cABPeKAAT3iwAE94wABPeNAAT3jgAE95AABPeSAAT3kwAE95QABPeWAAT3lwAE+BIABPgUAAT4FwAE+BkABPgcAAT4HQAE+B4ABPgfAAT4IAAE+CIABPgkAAT4JQAE+CYABPgoAAT4KQAE+EIABPhDAAT4RAAE+EYABPjBAAT4wwAE+MUABPjHAAT4ygAE+MsABPjMAAT4zQAE+M4ABPjQAAT40gAE+NMABPjUAAT41gAE+NcABPlSAAT5VAAE+VYABPlYAAT5WwAE+VwABPldAAT5XgAE+V8ABPlhAAT5YwAE+WQABPllAAT5ZwAE+WgABPnjAAT55QAE+ecABPnpAAT57AAE+e0ABPnuAAT57wAE+fAABPnyAAT59AAE+fUABPn2AAT5+AAE+fkABPp0AAT6dgAE+ngABPp6AAT6fQAE+n4ABPp/AAT6gAAE+oEABPqDAAT6hQAE+oYABPqHAAT6iQAE+ooABPsFAAT7BwAE+wkABPsLAAT7DgAE+w8ABPsQAAT7EQAE+xIABPsUAAT7FgAE+xcABPsYAAT7GgAE+xsABPtkAAT7iAAE+68ABPvTAAT71gAE+9gABPvaAAT73AAE+94ABPvgAAT74QAE++QABPv9AAT8GgAE/BwABPweAAT8IAAE/CIABPwkAAT8JgAE/CgABPxFAAT8SAAE/EsABPxOAAT8UQAE/FQABPxXAAT8WgAE/FwABPzXAAT82QAE/NsABPzdAAT84AAE/OEABPziAAT84wAE/OQABPzmAAT86AAE/OkABPzqAAT87AAE/O0ABP1oAAT9agAE/WwABP1uAAT9cQAE/XIABP1zAAT9dAAE/XUABP13AAT9eQAE/XoABP17AAT9fQAE/X4ABP35AAT9+wAE/f0ABP3/AAT+AgAE/gMABP4EAAT+BQAE/gYABP4IAAT+CgAE/gsABP4MAAT+DgAE/g8ABP6KAAT+jAAE/o8ABP6RAAT+lAAE/pUABP6WAAT+lwAE/pgABP6aAAT+nAAE/p0ABP6eAAT+oAAE/qEABP8cAAT/HgAE/yAABP8iAAT/JQAE/yYABP8nAAT/KAAE/ykABP8rAAT/LQAE/y4ABP8vAAT/MQAE/zIABP+tAAT/rwAE/7EABP+zAAT/tgAE/7cABP+4AAT/uQAE/7oABP+8AAT/vgAE/78ABP/AAAT/wgAE/8MABQA+AAUAQAAFAEIABQBEAAUARwAFAEgABQBJAAUASgAFAEsABQBNAAUATwAFAFAABQBRAAUAUwAFAFQABQDnAAUBCgAFASoABQFKAAUBTAAFAU4ABQFQAAUBUgAFAVUABQFWAAUBVwAFAVoABQFbAAUBXQAFAV4ABQFhAAUBZAAFAWUABQFmAAUBaQAFAWoABQFzAAUBjAAFAZUABQGXAAUBmgAFAaMABQGmAAUBqQAFAasABQH0AAUCGAAFAj8ABQJjAAUCZgAFAmgABQJqAAUCbAAFAm4ABQJwAAUCcQAFAnQABQKNAAUCrgAFArAABQKyAAUCtAAFArYABQK4AAUCugAFArwABQK+AAUC3wAFAuIABQLlAAUC6AAFAusABQLuAAUC8QAFAvQABQL3AAUC+QAFA3QABQN2AAUDeAAFA3oABQN9AAUDfgAFA38ABQOAAAUDgQAFA4MABQOFAAUDhgAFA4cABQOJAAUDigAFBAUABQQHAAUECQAFBAsABQQOAAUEDwAFBBAABQQRAAUEEgAFBBQABQQWAAUEFwAFBBgABQQaAAUEGwAFBJYABQSYAAUEmwAFBJ0ABQSgAAUEoQAFBKIABQSjAAUEpAAFBKYABQSoAAUEqQAFBKoABQSsAAUErQAFBMYABQTHAAUEyAAFBMoABQVFAAUFRwAFBUkABQVLAAUFTgAFBU8ABQVQAAUFUQAFBVIABQVUAAUFVgAFBVcABQVYAAUFWgAFBVsABQXWAAUF2AAFBdoABQXcAAUF3wAFBeAABQXhAAUF4gAFBeMABQXlAAUF5wAFBegABQXpAAUF6wAFBewABQZnAAUGaQAFBmsABQZtAAUGcAAFBnEABQZyAAUGcwAFBnQABQZ2AAUGeAAFBnkABQZ6AAUGfAAFBn0ABQb4AAUG+gAFBvwABQb+AAUHAQAFBwIABQcDAAUHBAAFBwUABQcHAAUHCQAFBwoABQcLAAUHDQAFBw4ABQeJAAUHiwAFB40ABQePAAUHkgAFB5MABQeUAAUHlQAFB5YABQeYAAUHmgAFB5sABQecAAUHngAFB58ABQfoAAUIDAAFCDMABQhXAAUIWgAFCF0ABQhfAAUIYQAFCGMABQhlAAU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0jgAFNJAABTSSAAU0kwAFNJYABTSvAAU00AAFNNIABTTUAAU01gAFNNgABTTaAAU03AAFNN4ABTTgAAU1AQAFNQQABTUHAAU1CgAFNQ0ABTUQAAU1EwAFNRYABTUZAAU1GwAFNZYABTWYAAU1mgAFNZwABTWfAAU1oAAFNaEABTWiAAU1owAFNaUABTWnAAU1qAAFNakABTWrAAU1rAAFNicABTYpAAU2KwAFNi0ABTYwAAU2MQAFNjIABTYzAAU2NAAFNjYABTY4AAU2OQAFNjoABTY8AAU2PQAFNrgABTa6AAU2vQAFNr8ABTbCAAU2wwAFNsQABTbFAAU2xgAFNsgABTbKAAU2ywAFNswABTbOAAU2zwAFNugABTbpAAU26gAFNuwABTdnAAU3aQAFN2sABTdtAAU3cAAFN3EABTdyAAU3cwAFN3QABTd2AAU3eAAFN3kABTd6AAU3fAAFN30ABTf4AAU3+gAFN/wABTf+AAU4AQAFOAIABTgDAAU4BAAFOAUABTgHAAU4CQAFOAoABTgLAAU4DQAFOA4ABTiJAAU4iwAFOI0ABTiPAAU4kgAFOJMABTiUAAU4lQAFOJYABTiYAAU4mgAFOJsABTicAAU4ngAFOJ8ABTkaAAU5HAAFOR4ABTkgAAU5IwAFOSQABTklAAU5JgAFOScABTkpAAU5KwAFOSwABTktAAU5LwAFOTAABTmrAAU5rQAFOa8ABTmxAAU5tAAFObUABTm2AAU5twAFObgABTm6AAU5vAAFOb0ABTm+AAU5wAAFOcEABToKAAU6LgAFOlUABTp5AAU6fAAFOn8ABTqBAAU6gwAFOoUABTqHAAU6iAAFOosABTqkAAU6wQAFOsQABTrHAAU6ygAFOs0ABTrQAAU60wAFOtYABTrzAAU69gAFOvkABTr8AAU6/wAFOwIABTsFAAU7CAAFOwoABTuFAAU7hwAFO4oABTuMAAU7jwAFO5AABTuRAAU7kgAFO5MABTuVAAU7mAAFO5kABTuaAAU7nAAFO50ABTwYAAU8GgAFPB0ABTwfAAU8IgAFPCMABTwkAAU8JQAFPCYABTwoAAU8KwAFPCwABTwtAAU8LwAFPDAABTyrAAU8rQAFPLAABTyyAAU8tQAFPLYABTy3AAU8uAAFPLkABTy7AAU8vgAFPL8ABTzAAAU8wgAFPMMABT0+AAU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OsgAFTrQABU62AAVOtwAFTrgABU66AAVOuwAFTzYABU84AAVPOgAFTzwABU8/AAVPQAAFT0EABU9CAAVPQwAFT0UABU9HAAVPSAAFT0kABU9LAAVPTAAFT8cABU/JAAVPzAAFT84ABU/RAAVP0gAFT9MABU/UAAVP1QAFT9cABU/ZAAVP2gAFT9sABU/dAAVP3gAFT/cABU/4AAVP+QAFT/sABVB2AAVQeAAFUHoABVB8AAVQfwAFUIAABVCBAAVQggAFUIMABVCFAAVQhwAFUIgABVCJAAVQiwAFUIwABVEHAAVRCQAFUQsABVENAAVREAAFUREABVESAAVREwAFURQABVEWAAVRGAAFURkABVEaAAVRHAAFUR0ABVGYAAVRmgAFUZwABVGeAAVRoQAFUaIABVGjAAVRpAAFUaUABVGnAAVRqQAFUaoABVGrAAVRrQAFUa4ABVIpAAVSKwAFUi0ABVIvAAVSMgAFUjMABVI0AAVSNQAFUjYABVI4AAVSOgAFUjsABVI8AAVSPgAFUj8ABVK6AAVSvAAFUr4ABVLAAAVSwwAFUsQABVLFAAVSxgAFUscABVLJAAVSywAFUswABVLNAAVSzwAFUtAABVMZAAVTPQAFU2QABVOIAAVTiwAFU40ABVOPAAVTkQAFU5MABVOVAAVTlgAFU5kABVOyAAVTzwAFU9EABVPTAAVT1QAFU9cABVPZAAVT2wAFU90ABVP6AAVT/QAFVAAABVQDAAVUBgAFVAkABVQMAAVUDwAFVBEABVSMAAVUjgAFVJAABVSSAAVUlQAFVJYABVSXAAVUmAAFVJkABVSbAAVUnQAFVJ4ABVSfAAVUoQAFVKIABVUdAAVVHwAFVSEABVUjAAVVJgAFVScABVUoAAVVKQAFVSoABVUsAAVVLgAFVS8ABVUwAAVVMgAFVTMABVWuAAVVsAAFVbIABVW0AAVVtwAFVbgABVW5AAVVugAFVbsABVW9AAVVvwAFVcAABVXBAAVVwwAFVcQABVY/AAVWQQAFVkQABVZGAAVWSQAFVkoABVZLAAVWTAAFVk0ABVZPAAVWUQAFVlIABVZTAAVWVQAFVlYABVbRAAVW0wAFVtUABVbXAAVW2gAFVtsABVbcAAVW3QAFVt4ABVbgAAVW4gAFVuMABVbkAAVW5gAFVucABVdiAAVXZAAFV2YABVdoAAVXawAFV2wABVdtAAVXbgAFV28ABVdxAAVXcwAFV3QABVd1AAVXdwAFV3gABVfzAAVX9QAFV/cABVf5AAVX/AAFV/0ABVf+AAVX/wAFWAAABVgCAAVYBAAFWAUABVgGAAVYCAAFWAkABVgaAAVYGwAFWB0ABViYAAVYmgAFWJwABVieAAVYoQAFWKIABVijAAVYpAAFWKUABVinAAVYqgAFWKsABVisAAVYrgAFWK8ABVkqAAVZLAAFWS4ABVkwAAVZMwAFWTQABVk1AAVZNgAFWTcABVk5AAVZPAAFWT0ABVk+AAVZQAAFWUEABVm8AAVZvgAFWcEABVnDAAVZxgAFWccABVnIAAVZyQAFWcoABVnMAAVZzwAFWdAABVnRAAVZ0wAFWdQABVpnAAVaigAFWqoABVrKAAVazAAFWs4ABVrQAAVa0gAFWtUABVrWAAVa1wAFWtoABVrbAAVa3QAFWt4ABVrgAAVa4wAFWuQABVrlAAVa6AAFWukABVruAAVbBwAFWxAABVsSAAVbFAAFWx0ABVsgAAVbIwAFWyUABVtuAAVbkgAFW7kABVvdAAVb4AAFW+IABVvkAAVb5gAFW+gABVvqAAVb6wAFW+4ABVwHAAVcKAAFXCoABVwsAAVcLgAFXDAABVwyAAVcNAAFXDYABVw4AAVcWQAFXFwABVxfAAVcYgAFXGUABVxoAAVcawAFXG4ABVxxAAVccwAFXO4ABVzwAAVc8gAFXPQABVz3AAVc+AAFXPkABVz6AAVc+wAFXP0ABVz/AAVdAAAFXQEABV0DAAVdBAAFXX8ABV2BAAVdgwAFXYUABV2IAAVdiQAFXYoABV2LAAVdjAAFXY4ABV2QAAVdkQAFXZIABV2UAAVdlQAFXhAABV4SAAVeFQAFXhcABV4aAAVeGwAFXhwABV4dAAVeHgAFXiAABV4iAAVeIwAFXiQABV4mAAVeJwAFXkAABV5BAAVeQgAFXkQABV6/AAVewQAFXsMABV7FAAVeyAAFXskABV7KAAVeywAFXswABV7OAAVe0AAFXtEABV7SAAVe1AAFXtUABV9QAAVfUgAFX1QABV9WAAVfWQAFX1oABV9bAAVfXAAFX10ABV9fAAVfYQAFX2IABV9jAAVfZQAFX2YABV/hAAVf4wAFX+UABV/nAAVf6gAFX+sABV/sAAVf7QAFX+4ABV/wAAVf8gAFX/MABV/0AAVf9gAFX/cABWByAAVgdAAFYHYABWB4AAVgewAFYHwABWB9AAVgfgAFYH8ABWCBAAVggwAFYIQABWCFAAVghwAFYIgABWEDAAVhBQAFYQcABWEJAAVhDAAFYQ0ABWEOAAVhDwAFYRAABWESAAVhFAAFYRUABWEWAAVhGAAFYRkABWFiAAVhhgAFYa0ABWHRAAVh1AAFYdYABWHYAAVh2gAFYdwABWHeAAVh3wAFYeIABWH7AAViGAAFYhoABWIcAAViHgAFYiAABWIiAAViJAAFYiYABWJDAAViRgAFYkkABWJMAAViTwAFYlIABWJVAAViWAAFYloABWLVAAVi1wAFYtkABWLbAAVi3gAFYt8ABWLgAAVi4QAFYuIABWLkAAVi5gAFYucABWLoAAVi6gAFYusABWNmAAVjaAAFY2oABWNsAAVjbwAFY3AABWNxAAVjcgAFY3MABWN1AAVjdwAFY3gABWN5AAVjewAFY3wABWP3AAVj+QAFY/sABWP9AAVkAAAFZAEABWQCAAVkAwAFZAQABWQGAAVkCAAFZAkABWQKAAVkDAAFZA0ABWSIAAVkigAFZI0ABWSPAAVkkgAFZJMABWSUAAVklQAFZJYABWSYAAVkmgAFZJsABWScAAVkngAFZJ8ABWUaAAVlHAAFZR4ABWUgAAVlIwAFZSQABWUlAAVlJgAFZScABWUpAAVlKwAFZSwABWUtAAVlLwAFZTAABWWrAAVlrQAFZa8ABWWxAAVltAAFZbUABWW2AAVltwAFZbgABWW6AAVlvAAFZb0ABWW+AAVlwAAFZcEABWY8AAVmPgAFZkAABWZCAAVmRQAFZkYABWZHAAVmSAAFZkkABWZLAAVmTQAFZk4ABWZPAAVmUQAFZlIABWblAAVnCAAFZygABWdIAAVnSgAFZ0wABWdOAAVnUAAFZ1MABWdUAAVnVQAFZ1gABWdZAAVnWwAFZ1wABWdeAAVnYQAFZ2IABWdjAAVnZgAFZ2cABWdsAAVnhQAFZ44ABWeQAAVnkgAFZ5sABWeeAAVnoQAFZ6MABWfsAAVoEAAFaDcABWhbAAVoXgAFaGAABWhiAAVoZAAFaGYABWhoAAVoaQAFaGwABWiFAAVopgAFaKgABWiqAAVorAAFaK4ABWiwAAVosgAFaLQABWi2AAVo1wAFaNoABWjdAAVo4AAFaOMABWjmAAVo6QAFaOwABWjvAAVo8QAFaWwABWluAAVpcAAFaXIABWl1AAVpdgAFaXcABWl4AAVpeQAFaXsABWl9AAVpfgAFaX8ABWmBAAVpggAFaf0ABWn/AAVqAQAFagMABWoGAAVqBwAFaggABWoJAAVqCgAFagwABWoOAAVqDwAFahAABWoSAAVqEwAFao4ABWqQAAVqkwAFapUABWqYAAVqmQAFapoABWqbAAVqnAAFap4ABWqgAAVqoQAFaqIABWqkAAVqpQAFar4ABWq/AAVqwAAFasIABWs9AAVrPwAFa0EABWtDAAVrRgAFa0cABWtIAAVrSQAFa0oABWtMAAVrTgAFa08ABWtQAAVrUgAFa1MABWvOAAVr0AAFa9IABWvUAAVr1wAFa9gABWvZAAVr2gAFa9sABWvdAAVr3wAFa+AABWvhAAVr4wAFa+QABWxfAAVsYQAFbGMABWxlAAVsaAAFbGkABWxqAAVsawAFbGwABWxuAAVscAAFbHEABWxyAAVsdAAFbHUABWzwAAVs8gAFbPQABWz2AAVs+QAFbPoABWz7AAVs/AAFbP0ABWz/AAVtAQAFbQIABW0DAAVtBQAFbQYABW2BAAVtgwAFbYUABW2HAAVtigAFbYsABW2MAAVtjQAFbY4ABW2QAAVtkgAFbZMABW2UAAVtlgAFbZcABW3gAAVuBAAFbisABW5PAAVuUgAFblQABW5WAAVuWAAFbloABW5cAAVuXQAFbmAABW55AAVulgAFbpgABW6aAAVunAAFbp4ABW6gAAVuogAFbqQABW7BAAVuxAAFbscABW7KAAVuzQAFbtAABW7TAAVu1gAFbtgABW9TAAVvVQAFb1cABW9ZAAVvXAAFb10ABW9eAAVvXwAFb2AABW9iAAVvZAAFb2UABW9mAAVvaAAFb2kABW/kAAVv5gAFb+gABW/qAAVv7QAFb+4ABW/vAAVv8AAFb/EABW/zAAVv9QAFb/YABW/3AAVv+QAFb/oABXB1AAVwdwAFcHkABXB7AAVwfgAFcH8ABXCAAAVwgQAFcIIABXCEAAVwhgAFcIcABXCIAAVwigAFcIsABXEGAAVxCAAFcQsABXENAAVxEAAFcREABXESAAVxEwAFcRQABXEWAAVxGAAFcRkABXEaAAVxHAAFcR0ABXGYAAVxmgAFcZwABXGeAAVxoQAFcaIABXGjAAVxpAAFcaUABXGnAAVxqQAFcaoABXGrAAVxrQAFca4ABXIpAAVyKwAFci0ABXIvAAVyMgAFcjMABXI0AAVyNQAFcjYABXI4AAVyOgAFcjsABXI8AAVyPgAFcj8ABXK6AAVyvAAFcr4ABXLAAAVywwAFcsQABXLFAAVyxgAFcscABXLJAAVyywAFcswABXLNAAVyzwAFctAABXNjAAVzhgAFc6YABXPGAAVzyAAFc8oABXPMAAVzzgAFc9EABXPSAAVz0wAFc9YABXPXAAVz2QAFc9oABXPdAAVz4AAFc+EABXPiAAVz5QAFc+YABXPrAAV0BAAFdA0ABXQPAAV0EgAFdBsABXQeAAV0IQAFdCMABXRsAAV0kAAFdLcABXTbAAV03gAFdOAABXTiAAV05AAFdOYABXToAAV06QAFdOwABXUFAAV1JgAFdSgABXUqAAV1LAAFdS4ABXUwAAV1MgAFdTQABXU2AAV1VwAFdVoABXVdAAV1YAAFdWMABXVmAAV1aQAFdWwABXVvAAV1cQAFdewABXXuAAV18AAFdfIABXX1AAV19gAFdfcABXX4AAV1+QAFdfsABXX9AAV1/gAFdf8ABXYBAAV2AgAFdn0ABXZ/AAV2gQAFdoMABXaGAAV2hwAFdogABXaJAAV2igAFdowABXaOAAV2jwAFdpAABXaSAAV2kwAFdw4ABXcQAAV3EwAFdxUABXcYAAV3GQAFdxoABXcbAAV3HAAFdx4ABXcgAAV3IQAFdyIABXckAAV3JQAFdz4ABXc/AAV3QAAFd0IABXe9AAV3vwAFd8EABXfDAAV3xgAFd8cABXfIAAV3yQAFd8oABXfMAAV3zgAFd88ABXfQAAV30gAFd9MABXhOAAV4UAAFeFIABXhUAAV4VwAFeFgABXhZAAV4WgAFeFsABXhdAAV4XwAFeGAABXhhAAV4YwAFeGQABXjfAAV44QAFeOMABXjlAAV46AAFeOkABXjqAAV46wAFeOwABXjuAAV48AAFePEABXjyAAV49AAFePUABXlwAAV5cgAFeXQABXl2AAV5eQAFeXoABXl7AAV5fAAFeX0ABXl/AAV5gQAFeYIABXmDAAV5hQAFeYYABXoBAAV6AwAFegUABXoHAAV6CgAFegsABXoMAAV6DQAFeg4ABXoQAAV6EgAFehMABXoUAAV6FgAFehcABXpgAAV6hAAFeqsABXrPAAV60gAFetUABXrXAAV62QAFetsABXrdAAV63gAFeuEABXr6AAV7FwAFexoABXsdAAV7IAAFeyMABXsmAAV7KQAFeywABXtJAAV7TAAFe08ABXtSAAV7VQAFe1gABXtbAAV7XgAFe2AABXvbAAV73QAFe+AABXviAAV75QAFe+YABXvnAAV76AAFe+kABXvrAAV77gAFe+8ABXvwAAV78gAFe/MABXxuAAV8cAAFfHMABXx1AAV8eAAFfHkABXx6AAV8ewAFfHwABXx+AAV8gQAFfIIABXyDAAV8hQAFfIYABX0BAAV9AwAFfQYABX0IAAV9CwAFfQwABX0NAAV9DgAFfQ8ABX0RAAV9FAAFfRUABX0WAAV9GAAFfRkABX2UAAV9lgAFfZkABX2bAAV9ngAFfZ8ABX2gAAV9oQAFfaIABX2kAAV9pwAFfagABX2pAAV9qwAFfawABX4vAAV+UwAFfncABX6aAAV+wQAFfuEABX8IAAV/LwAFf08ABX9zAAV/lwAFf5kABX+cAAV/ngAFf6AABX+iAAV/pQAFf6gABX+qAAV/rAAFf68ABX+xAAV/swAFf7YABX+5AAV/ugAFf8MABX/cAAV/4QAFf+MABX/oAAV/6wAFf+0ABYA2AAWAWgAFgIEABYClAAWAqAAFgKoABYCsAAWArgAFgLAABYCyAAWAswAFgLYABYDPAAWA9AAFgPYABYD4AAWA+gAFgPwABYD+AAWBAAAFgQIABYEEAAWBBgAFgSsABYEuAAWBMQAFgTQABYE3AAWBOgAFgT0ABYFAAAWBQwAFgUYABYFIAAWBwwAFgcUABYHIAAWBygAFgc0ABYHOAAWBzwAFgdAABYHRAAWB0wAFgdUABYHWAAWB1wAFgdkABYHaAAWB6wAFgewABYHuAAWCaQAFgmsABYJtAAWCbwAFgnIABYJzAAWCdAAFgnUABYJ2AAWCeAAFgnoABYJ7AAWCfAAFgn4ABYJ/AAWC+gAFgvwABYL/AAWDAQAFgwQABYMFAAWDBgAFgwcABYMIAAWDCgAFgwwABYMNAAWDDgAFgxAABYMRAAWDIgAFgyMABYMlAAWDoAAFg6IABYOkAAWDpgAFg6kABYOqAAWDqwAFg6wABYOtAAWDrwAFg7EABYOyAAWDswAFg7UABYO2AAWEMQAFhDMABYQ2AAWEOAAFhDsABYQ8AAWEPQAFhD4ABYQ/AAWEQQAFhEMABYREAAWERQAFhEcABYRIAAWEWQAFhFoABYRcAAWE1wAFhNkABYTbAAWE3QAFhOAABYThAAWE4gAFhOMABYTkAAWE5gAFhOgABYTpAAWE6gAFhOwABYTtAAWFaAAFhWoABYVtAAWFbwAFhXIABYVzAAWFdAAFhXUABYV2AAWFeAAFhXoABYV7AAWFfAAFhX4ABYV/AAWFmAAFhZkABYWaAAWFnAAFhhcABYYZAAWGGwAFhh0ABYYgAAWGIQAFhiIABYYjAAWGJAAFhiYABYYoAAWGKQAFhioABYYsAAWGLQAFhqgABYaqAAWGrQAFhq8ABYayAAWGswAFhrQABYa1AAWGtgAFhrgABYa6AAWGuwAFhrwABYa+AAWGvwAFht0ABYb2AAWHCwAFhw4ABYcRAAWHFAAFhxcABYcaAAWHLwAFhzIABYc1AAWHOAAFhzsABYc+AAWHQAAFh2AABYdvAAWHgQAFh40ABYekAAWINwAFiFoABYh6AAWImgAFiJwABYieAAWIoAAFiKIABYilAAWIpgAFiKcABYiqAAWIqwAFiK0ABYiuAAWIsAAFiLMABYi0AAWItQAFiLgABYi5AAWIvgAFiNcABYjgAAWI4gAFiOQABYjtAAWI8AAFiPMABYj1AAWJPgAFiWIABYmJAAWJrQAFibAABYmyAAWJtAAFibYABYm4AAWJugAFibsABYm+AAWJ1wAFifgABYn6AAWJ/AAFif4ABYoAAAWKAgAFigQABYoGAAWKCAAFiikABYosAAWKLwAFijIABYo1AAWKOAAFijsABYo+AAWKQQAFikMABYq+AAWKwAAFisIABYrEAAWKxwAFisgABYrJAAWKygAFissABYrNAAWKzwAFitAABYrRAAWK0wAFitQABYtPAAWLUQAFi1MABYtVAAWLWAAFi1kABYtaAAWLWwAFi1wABYteAAWLYAAFi2EABYtiAAWLZAAFi2UABYvgAAWL4gAFi+UABYvnAAWL6gAFi+sABYvsAAWL7QAFi+4ABYvwAAWL8gAFi/MABYv0AAWL9gAFi/cABYwQAAWMEQAFjBIABYwUAAWMjwAFjJEABYyTAAWMlQAFjJgABYyZAAWMmgAFjJsABYycAAWMngAFjKAABYyhAAWMogAFjKQABYylAAWNIAAFjSIABY0kAAWNJgAFjSkABY0qAAWNKwAFjSwABY0tAAWNLwAFjTEABY0yAAWNMwAFjTUABY02AAWNsQAFjbMABY21AAWNtwAFjboABY27AAWNvAAFjb0ABY2+AAWNwAAFjcIABY3DAAWNxAAFjcYABY3HAAWOQgAFjkQABY5GAAWOSAAFjksABY5MAAWOTQAFjk4ABY5PAAWOUQAFjlMABY5UAAWOVQAFjlcABY5YAAWO0wAFjtUABY7XAAWO2QAFjtwABY7dAAWO3gAFjt8ABY7gAAWO4gAFjuQABY7lAAWO5gAFjugABY7pAAWPMgAFj1YABY99AAWPoQAFj6QABY+mAAWPqAAFj6oABY+sAAWPrgAFj68ABY+yAAWPywAFj+gABY/qAAWP7AAFj+4ABY/wAAWP8gAFj/QABY/2AAWQEwAFkBYABZAZAAWQHAAFkB8ABZAiAAWQJQAFkCgABZAqAAWQpQAFkKcABZCpAAWQqwAFkK4ABZCvAAWQsAAFkLEABZCyAAWQtAAFkLYABZC3AAWQuAAFkLoABZC7AAWRNgAFkTgABZE6AAWRPAAFkT8ABZFAAAWRQQAFkUIABZFDAAWRRQAFkUcABZFIAAWRSQAFkUsABZFMAAWRxwAFkckABZHLAAWRzQAFkdAABZHRAAWR0gAFkdMABZHUAAWR1gAFkdgABZHZAAWR2gAFkdwABZHdAAWSWAAFkloABZJdAAWSXwAFkmIABZJjAAWSZAAFkmUABZJmAAWSaAAFkmoABZJrAAWSbAAFkm4ABZJvAAWS6gAFkuwABZLuAAWS8AAFkvMABZL0AAWS9QAFkvYABZL3AAWS+QAFkvsABZL8AAWS/QAFkv8ABZMAAAWTewAFk30ABZN/AAWTgQAFk4QABZOFAAWThgAFk4cABZOIAAWTigAFk4wABZONAAWTjgAFk5AABZORAAWUDAAFlA4ABZQQAAWUEgAFlBUABZQWAAWUFwAFlBgABZQZAAWUGwAFlB0ABZQeAAWUHwAFlCEABZQiAAWUtQAFlNgABZT4AAWVGAAFlRoABZUcAAWVHgAFlSAABZUjAAWVJAAFlSUABZUoAAWVKQAFlSsABZUsAAWVLgAFlTEABZUyAAWVMwAFlTYABZU3AAWVPAAFlVUABZVeAAWVYAAFlWIABZVrAAWVbgAFlXEABZVzAAWVvAAFleAABZYHAAWWKwAFli4ABZYwAAWWMgAFljQABZY2AAWWOAAFljkABZY8AAWWVQAFlnYABZZ4AAWWegAFlnwABZZ+AAWWgAAFloIABZaEAAWWhgAFlqcABZaqAAWWrQAFlrAABZazAAWWtgAFlrkABZa8AAWWvwAFlsEABZc8AAWXPgAFl0AABZdCAAWXRQAFl0YABZdHAAWXSAAFl0kABZdLAAWXTQAFl04ABZdPAAWXUQAFl1IABZfNAAWXzwAFl9EABZfTAAWX1gAFl9cABZfYAAWX2QAFl9oABZfcAAWX3gAFl98ABZfgAAWX4gAFl+MABZheAAWYYAAFmGMABZhlAAWYaAAFmGkABZhqAAWYawAFmGwABZhuAAWYcAAFmHEABZhyAAWYdAAFmHUABZiOAAWYjwAFmJAABZiSAAWZDQAFmQ8ABZkRAAWZEwAFmRYABZkXAAWZGAAFmRkABZkaAAWZHAAFmR4ABZkfAAWZIAAFmSIABZkjAAWZngAFmaAABZmiAAWZpAAFmacABZmoAAWZqQAFmaoABZmrAAWZrQAFma8ABZmwAAWZsQAFmbMABZm0AAWaLwAFmjEABZozAAWaNQAFmjgABZo5AAWaOgAFmjsABZo8AAWaPgAFmkAABZpBAAWaQgAFmkQABZpFAAWawAAFmsIABZrEAAWaxgAFmskABZrKAAWaywAFmswABZrNAAWazwAFmtEABZrSAAWa0wAFmtUABZrWAAWbUQAFm1MABZtVAAWbVwAFm1oABZtbAAWbXAAFm10ABZteAAWbYAAFm2IABZtjAAWbZAAFm2YABZtnAAWbsAAFm9QABZv7AAWcHwAFnCIABZwkAAWcJgAFnCgABZwqAAWcLAAFnC0ABZwwAAWcSQAFnGYABZxoAAWcagAFnGwABZxuAAWccAAFnHIABZx0AAWckQAFnJQABZyXAAWcmgAFnJ0ABZygAAWcowAFnKYABZyoAAWdIwAFnSUABZ0nAAWdKQAFnSwABZ0tAAWdLgAFnS8ABZ0wAAWdMgAFnTQABZ01AAWdNgAFnTgABZ05AAWdtAAFnbYABZ24AAWdugAFnb0ABZ2+AAWdvwAFncAABZ3BAAWdwwAFncUABZ3GAAWdxwAFnckABZ3KAAWeRQAFnkcABZ5JAAWeSwAFnk4ABZ5PAAWeUAAFnlEABZ5SAAWeVAAFnlYABZ5XAAWeWAAFnloABZ5bAAWe1gAFntgABZ7bAAWe3QAFnuAABZ7hAAWe4gAFnuMABZ7kAAWe5gAFnugABZ7pAAWe6gAFnuwABZ7tAAWfaAAFn2oABZ9sAAWfbgAFn3EABZ9yAAWfcwAFn3QABZ91AAWfdwAFn3kABZ96AAWfewAFn30ABZ9+AAWf+QAFn/sABZ/9AAWf/wAFoAIABaADAAWgBAAFoAUABaAGAAWgCAAFoAoABaALAAWgDAAFoA4ABaAPAAWgigAFoIwABaCOAAWgkAAFoJMABaCUAAWglQAFoJYABaCXAAWgmQAFoJsABaCcAAWgnQAFoJ8ABaCgAAWhMwAFoVYABaF2AAWhlgAFoZgABaGaAAWhnAAFoZ4ABaGhAAWhogAFoaMABaGmAAWhpwAFoakABaGqAAWhrQAFobAABaGxAAWhsgAFobUABaG2AAWhuwAFodQABaHdAAWh3wAFoeIABaHrAAWh7gAFofEABaHzAAWiPAAFomAABaKHAAWiqwAFoq4ABaKwAAWisgAForQABaK2AAWiuAAForkABaK8AAWi1QAFovYABaL4AAWi+gAFovwABaL+AAWjAAAFowIABaMEAAWjBgAFoycABaMqAAWjLQAFozAABaMzAAWjNgAFozkABaM8AAWjPwAFo0EABaO8AAWjvgAFo8AABaPCAAWjxQAFo8YABaPHAAWjyAAFo8kABaPLAAWjzQAFo84ABaPPAAWj0QAFo9IABaRNAAWkTwAFpFEABaRTAAWkVgAFpFcABaRYAAWkWQAFpFoABaRcAAWkXgAFpF8ABaRgAAWkYgAFpGMABaTeAAWk4AAFpOMABaTlAAWk6AAFpOkABaTqAAWk6wAFpOwABaTuAAWk8AAFpPEABaTyAAWk9AAFpPUABaUOAAWlDwAFpRAABaUSAAWljQAFpY8ABaWRAAWlkwAFpZYABaWXAAWlmAAFpZkABaWaAAWlnAAFpZ4ABaWfAAWloAAFpaIABaWjAAWmHgAFpiAABaYiAAWmJAAFpicABaYoAAWmKQAFpioABaYrAAWmLQAFpi8ABaYwAAWmMQAFpjMABaY0AAWmrwAFprEABaazAAWmtQAFprgABaa5AAWmugAFprsABaa8AAWmvgAFpsAABabBAAWmwgAFpsQABabFAAWnQAAFp0IABadEAAWnRgAFp0kABadKAAWnSwAFp0wABadNAAWnTwAFp1EABadSAAWnUwAFp1UABadWAAWn0QAFp9MABafVAAWn1wAFp9oABafbAAWn3AAFp90ABafeAAWn4AAFp+IABafjAAWn5AAFp+YABafnAAWoMAAFqFQABah7AAWonwAFqKIABailAAWopwAFqKkABairAAWorQAFqK4ABaixAAWoygAFqOcABajqAAWo7QAFqPAABajzAAWo9gAFqPkABaj8AAWpGQAFqRwABakfAAWpIgAFqSUABakoAAWpKwAFqS4ABakwAAWpqwAFqa0ABamwAAWpsgAFqbUABam2AAWptwAFqbgABam5AAWpuwAFqb4ABam/AAWpwAAFqcIABanDAAWqPgAFqkAABapDAAWqRQAFqkgABapJAAWqSgAFqksABapMAAWqTgAFqlEABapSAAWqUwAFqlUABapWAAWq0QAFqtMABarWAAWq2AAFqtsABarcAAWq3QAFqt4ABarfAAWq4QAFquQABarlAAWq5gAFqugABarpAAWrZAAFq2YABatpAAWrawAFq24ABatvAAWrcAAFq3EABatyAAWrdAAFq3cABat4AAWreQAFq3sABat8AAWr9wAFq/kABav7AAWr/QAFrAAABawBAAWsAgAFrAMABawEAAWsBgAFrAkABawKAAWsCwAFrA0ABawOAAWsiQAFrIsABayNAAWsjwAFrJIABayTAAWslAAFrJUABayWAAWsmAAFrJsABaycAAWsnQAFrJ8ABaygAAWtGwAFrR0ABa0gAAWtIgAFrSUABa0mAAWtJwAFrSgABa0pAAWtKwAFrS4ABa0vAAWtMAAFrTIABa0zAAWtxgAFrekABa4JAAWuKQAFrisABa4tAAWuLwAFrjEABa40AAWuNQAFrjYABa45AAWuOgAFrjwABa49AAWuPwAFrkIABa5DAAWuRAAFrkcABa5IAAWuTQAFrmYABa5vAAWucQAFrnMABa58AAWufwAFroIABa6EAAWuzQAFrvEABa8YAAWvPAAFrz8ABa9BAAWvQwAFr0UABa9HAAWvSQAFr0oABa9NAAWvZgAFr4cABa+JAAWviwAFr40ABa+PAAWvkQAFr5MABa+VAAWvlwAFr7gABa+7AAWvvgAFr8EABa/EAAWvxwAFr8oABa/NAAWv0AAFr9IABbBNAAWwTwAFsFEABbBTAAWwVgAFsFcABbBYAAWwWQAFsFoABbBcAAWwXgAFsF8ABbBgAAWwYgAFsGMABbDeAAWw4AAFsOIABbDkAAWw5wAFsOgABbDpAAWw6gAFsOsABbDtAAWw7wAFsPAABbDxAAWw8wAFsPQABbFvAAWxcQAFsXQABbF2AAWxeQAFsXoABbF7AAWxfAAFsX0ABbF/AAWxgQAFsYIABbGDAAWxhQAFsYYABbGfAAWxoAAFsaEABbGjAAWyHgAFsiAABbIiAAWyJAAFsicABbIoAAWyKQAFsioABbIrAAWyLQAFsi8ABbIwAAWyMQAFsjMABbI0AAWyrwAFsrEABbKzAAWytQAFsrgABbK5AAWyugAFsrsABbK8AAWyvgAFssAABbLBAAWywgAFssQABbLFAAWzQAAFs0IABbNEAAWzRgAFs0kABbNKAAWzSwAFs0wABbNNAAWzTwAFs1EABbNSAAWzUwAFs1UABbNWAAWz0QAFs9MABbPVAAWz1wAFs9oABbPbAAWz3AAFs90ABbPeAAWz4AAFs+IABbPjAAWz5AAFs+YABbPnAAW0YgAFtGQABbRmAAW0aAAFtGsABbRsAAW0bQAFtG4ABbRvAAW0cQAFtHMABbR0AAW0dQAFtHcABbR4AAW0wQAFtOUABbUMAAW1MAAFtTMABbU1AAW1NwAFtTkABbU7AAW1PQAFtT4ABbVBAAW1WgAFtXcABbV5AAW1ewAFtX0ABbV/AAW1gQAFtYMABbWFAAW1ogAFtaUABbWoAAW1qwAFta4ABbWxAAW1tAAFtbcABbW5AAW2NAAFtjYABbY4AAW2OgAFtj0ABbY+AAW2PwAFtkAABbZBAAW2QwAFtkUABbZGAAW2RwAFtkkABbZKAAW2xQAFtscABbbJAAW2ywAFts4ABbbPAAW20AAFttEABbbSAAW21AAFttYABbbXAAW22AAFttoABbbbAAW3VgAFt1gABbdaAAW3XAAFt18ABbdgAAW3YQAFt2IABbdjAAW3ZQAFt2cABbdoAAW3aQAFt2sABbdsAAW35wAFt+kABbfsAAW37gAFt/EABbfyAAW38wAFt/QABbf1AAW39wAFt/kABbf6AAW3+wAFt/0ABbf+AAW4eQAFuHsABbh9AAW4fwAFuIIABbiDAAW4hAAFuIUABbiGAAW4iAAFuIoABbiLAAW4jAAFuI4ABbiPAAW5CgAFuQwABbkOAAW5EAAFuRMABbkUAAW5FQAFuRYABbkXAAW5GQAFuRsABbkcAAW5HQAFuR8ABbkgAAW5mwAFuZ0ABbmfAAW5oQAFuaQABbmlAAW5pgAFuacABbmoAAW5qgAFuawABbmtAAW5rgAFubAABbmxAAW6RAAFumcABbqHAAW6pwAFuqkABbqrAAW6rQAFuq8ABbqyAAW6swAFurQABbq3AAW6uAAFuroABbq7AAW6vQAFusAABbrBAAW6wgAFusUABbrGAAW6ywAFuuQABbrtAAW67wAFuvEABbr6AAW6/QAFuwAABbsCAAW7SwAFu28ABbuWAAW7ugAFu70ABbu/AAW7wQAFu8MABbvFAAW7xwAFu8gABbvLAAW75AAFvAUABbwHAAW8CQAFvAsABbwNAAW8DwAFvBEABbwTAAW8FQAFvDYABbw5AAW8PAAFvD8ABbxCAAW8RQAFvEgABbxLAAW8TgAFvFAABbzLAAW8zQAFvM8ABbzRAAW81AAFvNUABbzWAAW81wAFvNgABbzaAAW83AAFvN0ABbzeAAW84AAFvOEABb1cAAW9XgAFvWAABb1iAAW9ZQAFvWYABb1nAAW9aAAFvWkABb1rAAW9bQAFvW4ABb1vAAW9cQAFvXIABb3tAAW97wAFvfIABb30AAW99wAFvfgABb35AAW9+gAFvfsABb39AAW9/wAFvgAABb4BAAW+AwAFvgQABb4dAAW+HgAFvh8ABb4hAAW+nAAFvp4ABb6gAAW+ogAFvqUABb6mAAW+pwAFvqgABb6pAAW+qwAFvq0ABb6uAAW+rwAFvrEABb6yAAW/LQAFvy8ABb8xAAW/MwAFvzYABb83AAW/OAAFvzkABb86AAW/PAAFvz4ABb8/AAW/QAAFv0IABb9DAAW/vgAFv8AABb/CAAW/xAAFv8cABb/IAAW/yQAFv8oABb/LAAW/zQAFv88ABb/QAAW/0QAFv9MABb/UAAXATwAFwFEABcBTAAXAVQAFwFgABcBZAAXAWgAFwFsABcBcAAXAXgAFwGAABcBhAAXAYgAFwGQABcBlAAXA4AAFwOIABcDkAAXA5gAFwOkABcDqAAXA6wAFwOwABcDtAAXA7wAFwPEABcDyAAXA8wAFwPUABcD2AAXBPwAFwWMABcGKAAXBrgAFwbEABcGzAAXBtQAFwbcABcG5AAXBuwAFwbwABcG/AAXB2AAFwfUABcH3AAXB+QAFwfsABcH9AAXB/wAFwgEABcIDAAXCIAAFwiMABcImAAXCKQAFwiwABcIvAAXCMgAFwjUABcI3AAXCsgAFwrQABcK2AAXCuAAFwrsABcK8AAXCvQAFwr4ABcK/AAXCwQAFwsMABcLEAAXCxQAFwscABcLIAAXDQwAFw0UABcNHAAXDSQAFw0wABcNNAAXDTgAFw08ABcNQAAXDUgAFw1QABcNVAAXDVgAFw1gABcNZAAXD1AAFw9YABcPYAAXD2gAFw90ABcPeAAXD3wAFw+AABcPhAAXD4wAFw+UABcPmAAXD5wAFw+kABcPqAAXEZQAFxGcABcRqAAXEbAAFxG8ABcRwAAXEcQAFxHIABcRzAAXEdQAFxHcABcR4AAXEeQAFxHsABcR8AAXE9wAFxPkABcT7AAXE/QAFxQAABcUBAAXFAgAFxQMABcUEAAXFBgAFxQgABcUJAAXFCgAFxQwABcUNAAXFiAAFxYoABcWMAAXFjgAFxZEABcWSAAXFkwAFxZQABcWVAAXFlwAFxZkABcWaAAXFmwAFxZ0ABcWeAAXGGQAFxhsABcYdAAXGHwAFxiIABcYjAAXGJAAFxiUABcYmAAXGKAAFxioABcYrAAXGLAAFxi4ABcYvAAXGQAAFxkEABcZDAAXGvgAFxsAABcbCAAXGxAAFxscABcbIAAXGyQAFxsoABcbLAAXGzQAFxtAABcbRAAXG0gAFxtQABcbVAAXHUAAFx1IABcdUAAXHVgAFx1kABcdaAAXHWwAFx1wABcddAAXHXwAFx2IABcdjAAXHZAAFx2YABcdnAAXH4gAFx+QABcfnAAXH6QAFx+wABcftAAXH7gAFx+8ABcfwAAXH8gAFx/UABcf2AAXH9wAFx/kABcf6AAXIjQAFyLAABcjQAAXI8AAFyPIABcj0AAXI9gAFyPgABcj7AAXI/AAFyP0ABckAAAXJAQAFyQMABckEAAXJBgAFyQkABckKAAXJCwAFyQ4ABckPAAXJGAAFyTEABck6AAXJPAAFyT4ABclHAAXJSgAFyU0ABclPAAXJmAAFybwABcnjAAXKBwAFygoABcoMAAXKDgAFyhAABcoSAAXKFAAFyhUABcoYAAXKMQAFylIABcpUAAXKVgAFylgABcpaAAXKXAAFyl4ABcpgAAXKYgAFyoMABcqGAAXKiQAFyowABcqPAAXKkgAFypUABcqYAAXKmwAFyp0ABcsYAAXLGgAFyxwABcseAAXLIQAFyyIABcsjAAXLJAAFyyUABcsnAAXLKQAFyyoABcsrAAXLLQAFyy4ABcupAAXLqwAFy60ABcuvAAXLsgAFy7MABcu0AAXLtQAFy7YABcu4AAXLugAFy7sABcu8AAXLvgAFy78ABcw6AAXMPAAFzD8ABcxBAAXMRAAFzEUABcxGAAXMRwAFzEgABcxKAAXMTAAFzE0ABcxOAAXMUAAFzFEABcxqAAXMawAFzGwABcxuAAXM6QAFzOsABcztAAXM7wAFzPIABczzAAXM9AAFzPUABcz2AAXM+AAFzPoABcz7AAXM/AAFzP4ABcz/AAXNegAFzXwABc1+AAXNgAAFzYMABc2EAAXNhQAFzYYABc2HAAXNiQAFzYsABc2MAAXNjQAFzY8ABc2QAAXOCwAFzg0ABc4PAAXOEQAFzhQABc4VAAXOFgAFzhcABc4YAAXOGgAFzhwABc4dAAXOHgAFziAABc4hAAXOnAAFzp4ABc6gAAXOogAFzqUABc6mAAXOpwAFzqgABc6pAAXOqwAFzq0ABc6uAAXOrwAFzrEABc6yAAXPLQAFzy8ABc8xAAXPMwAFzzYABc83AAXPOAAFzzkABc86AAXPPAAFzz4ABc8/AAXPQAAFz0IABc9DAAXPjAAFz7AABc/XAAXP+wAFz/4ABdAAAAXQAgAF0AQABdAGAAXQCAAF0AkABdAMAAXQJQAF0EIABdBEAAXQRgAF0EgABdBKAAXQTAAF0E4ABdBQAAXQbQAF0HAABdBzAAXQdgAF0HkABdB8AAXQfwAF0IIABdCEAAXQ/wAF0QEABdEDAAXRBQAF0QgABdEJAAXRCgAF0QsABdEMAAXRDgAF0RAABdERAAXREgAF0RQABdEVAAXRkAAF0ZIABdGUAAXRlgAF0ZkABdGaAAXRmwAF0ZwABdGdAAXRnwAF0aEABdGiAAXRowAF0aUABdGmAAXSIQAF0iMABdIlAAXSJwAF0ioABdIrAAXSLAAF0i0ABdIuAAXSMAAF0jIABdIzAAXSNAAF0jYABdI3AAXSsgAF0rQABdK3AAXSuQAF0rwABdK9AAXSvgAF0r8ABdLAAAX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kpgAF5KgABeSqAAXkrQAF5K4ABeSvAAXksAAF5LEABeSzAAXktQAF5LYABeS3AAXkuQAF5LoABeU1AAXlNwAF5ToABeU8AAXlPwAF5UAABeVBAAXlQgAF5UMABeVFAAXlRwAF5UgABeVJAAXlSwAF5UwABeVlAAXlZgAF5WcABeVpAAXl5AAF5eYABeXoAAXl6gAF5e0ABeXuAAXl7wAF5fAABeXxAAXl8wAF5fUABeX2AAXl9wAF5fkABeX6AAXmdQAF5ncABeZ5AAXmewAF5n4ABeZ/AAXmgAAF5oEABeaCAAXmhAAF5oYABeaHAAXmiAAF5ooABeaLAAXnBgAF5wgABecKAAXnDAAF5w8ABecQAAXnEQAF5xIABecTAAXnFQAF5xcABecYAAXnGQAF5xsABeccAAXnlwAF55kABeebAAXnnQAF56AABeehAAXnogAF56MABeekAAXnpgAF56gABeepAAXnqgAF56wABeetAAXoKAAF6CoABegsAAXoLgAF6DEABegyAAXoMwAF6DQABeg1AAXoNwAF6DkABeg6AAXoOwAF6D0ABeg+AAXohwAF6KsABejSAAXo9gAF6PkABej7AAXo/QAF6P8ABekBAAXpAwAF6QQABekHAAXpIAAF6T0ABek/AAXpQQAF6UMABelFAAXpRwAF6UkABelLAAXpaAAF6WsABeluAAXpcQAF6XQABel3AAXpegAF6X0ABel/AAXp+gAF6fwABen+AAXqAAAF6gMABeoEAAXqBQAF6gYABeoHAAXqCQAF6gsABeoMAAXqDQAF6g8ABeoQAAXqiwAF6o0ABeqPAAXqkQAF6pQABeqVAAXqlgAF6pcABeqYAAXqmgAF6pwABeqdAAXqngAF6qAABeqhAAXrHAAF6x4ABesgAAXrIgAF6yUABesmAAXrJwAF6ygABespAAXrKwAF6y0ABesuAAXrLwAF6zEABesyAAXrrQAF668ABeuyAAXrtAAF67cABeu4AAXruQAF67oABeu7AAXrvQAF678ABevAAAXrwQAF68MABevEAAXsPwAF7EEABexDAAXsRQAF7EgABexJAAXsSgAF7EsABexMAAXsTgAF7FAABexRAAXsUgAF7FQABexVAAXs0AAF7NIABezUAAXs1gAF7NkABezaAAXs2wAF7NwABezdAAXs3wAF7OEABeziAAXs4wAF7OUABezmAAXtYQAF7WMABe1lAAXtZwAF7WoABe1rAAXtbAAF7W0ABe1uAAXtcAAF7XIABe1zAAXtdAAF7XYABe13AAXuCgAF7i0ABe5NAAXubQAF7m8ABe5xAAXucwAF7nUABe54AAXueQAF7noABe59AAXufgAF7oAABe6BAAXugwAF7oYABe6HAAXuiAAF7osABe6MAAXulQAF7q4ABe63AAXuuQAF7rsABe7EAAXuxwAF7soABe7MAAXvFQAF7zkABe9gAAXvhAAF74cABe+JAAXviwAF740ABe+PAAXvkQAF75IABe+VAAXvrgAF788ABe/RAAXv0wAF79UABe/XAAXv2QAF79sABe/dAAXv3wAF8AAABfADAAXwBgAF8AkABfAMAAXwDwAF8BIABfAVAAXwGAAF8BoABfCVAAXwlwAF8JkABfCbAAXwngAF8J8ABfCgAAXwoQAF8KIABfCkAAXwpgAF8KcABfCoAAXwqgAF8KsABfEmAAXxKAAF8SoABfEsAAXxLwAF8TAABfExAAXxMgAF8TMABfE1AAXxNwAF8TgABfE5AAXxOwAF8TwABfG3AAXxuQAF8bwABfG+AAXxwQAF8cIABfHDAAXxxAAF8cUABfHHAAXxyQAF8coABfHLAAXxzQAF8c4ABfHnAAXx6AAF8ekABfHrAAXyZgAF8mgABfJqAAXybAAF8m8ABfJwAAXycQAF8nIABfJzAAXydQAF8ncABfJ4AAXyeQAF8nsABfJ8AAXy9wAF8vkABfL7AAXy/QAF8wAABfMBAAXzAgAF8wMABfMEAAXzBgAF8wgABfMJAAXzCgAF8wwABfMNAAXziAAF84oABfOMAAXzjgAF85EABfOSAAXzkwAF85QABfOVAAXzlwAF85kABfOaAAXzmwAF850ABfOeAAX0GQAF9BsABfQdAAX0HwAF9CIABfQjAAX0JAAF9CUABfQmAAX0KAAF9CoABfQrAAX0LAAF9C4ABfQvAAX0qgAF9KwABfSuAAX0sAAF9LMABfS0AAX0tQAF9LYABfS3AAX0uQAF9LsABfS8AAX0vQAF9L8ABfTAAAX1CQAF9S0ABfVUAAX1eAAF9XsABfV9AAX1fwAF9YEABfWDAAX1hQAF9YYABfWJAAX1ogAF9b8ABfXBAAX1wwAF9cUABfXHAAX1yQAF9csABfXNAAX16gAF9e0ABfXwAAX18wAF9fYABfX5AAX1/AAF9f8ABfYBAAX2fAAF9n4ABfaAAAX2ggAF9oUABfaGAAX2hwAF9ogABfaJAAX2iwAF9o0ABfaOAAX2jwAF9pEABfaSAAX3DQAF9w8ABfcRAAX3EwAF9xYABfcXAAX3GAAF9xkABfcaAAX3HAAF9x4ABfcfAAX3IAAF9yIABfcjAAX3ngAF96AABfeiAAX3pAAF96cABfeoAAX3qQAF96oABferAAX3rQAF968ABfewAAX3sQAF97MABfe0AAX4LwAF+DEABfg0AAX4NgAF+DkABfg6AAX4OwAF+DwABfg9AAX4PwAF+EEABfhCAAX4QwAF+EUABfhGAAX4wQAF+MMABfjFAAX4xwAF+MoABfjLAAX4zAAF+M0ABfjOAAX40AAF+NIABfjTAAX41AAF+NYABfjXAAX5UgAF+VQABflWAAX5WAAF+VsABflcAAX5XQAF+V4ABflfAAX5YQAF+WMABflkAAX5ZQAF+WcABfloAAX54wAF+eUABfnnAAX56QAF+ewABfntAAX57gAF+e8ABfnwAAX58gAF+fQABfn1AAX59gAF+fgABfn5AAX6jAAF+q8ABfrPAAX67wAF+vEABfrzAAX69QAF+vcABfr6AAX6+wAF+vwABfr/AAX7AAAF+wIABfsDAAX7BQAF+wgABfsJAAX7CgAF+w0ABfsOAAX7EwAF+ywABfs1AAX7NwAF+zkABftCAAX7RQAF+0gABftKAAX7kwAF+7cABfveAAX8AgAF/AUABfwHAAX8CQAF/AsABfwNAAX8DwAF/BAABfwTAAX8LAAF/E0ABfxPAAX8UQAF/FMABfxVAAX8VwAF/FkABfxbAAX8XQAF/H4ABfyBAAX8hAAF/IcABfyKAAX8jQAF/JAABfyTAAX8lgAF/JgABf0TAAX9FQAF/RcABf0ZAAX9HAAF/R0ABf0eAAX9HwAF/SAABf0iAAX9JAAF/SUABf0mAAX9KAAF/SkABf2kAAX9pgAF/agABf2qAAX9rQAF/a4ABf2vAAX9sAAF/bEABf2zAAX9tQAF/bYABf23AAX9uQAF/boABf41AAX+NwAF/joABf48AAX+PwAF/kAABf5BAAX+QgAF/kMABf5FAAX+RwAF/kgABf5JAAX+SwAF/kwABf5lAAX+ZgAF/mcABf5pAAX+5AAF/uYABf7oAAX+6gAF/u0ABf7uAAX+7wAF/vAABf7xAAX+8wAF/vUABf72AAX+9wAF/vkABf76AAX/dQAF/3cABf95AAX/ewAF/34ABf9/AAX/gAAF/4EABf+CAAX/hAAF/4YABf+HAAX/iAAF/4oABf+LAAYABgAGAAgABgAKAAYADAAGAA8ABgAQAAYAEQAGABIABgATAAYAFQAGABcABgAYAAYAGQAGABsABgAcAAYAlwAGAJkABgCbAAYAnQAGAKAABgChAAYAogAGAKMABgCkAAYApgAGAKgABgCpAAYAqgAGAKwABgCtAAYBKAAGASoABgEsAAYBLgAGATEABgEyAAYBMwAGATQABgE1AAYBNwAGATkABgE6AAYBOwAGAT0ABgE+AAYBhwAGAasABgHSAAYB9gAGAfkABgH7AAYB/QAGAf8ABgIBAAYCAwAGAgQABgIHAAYCIAAGAj0ABgI/AAYCQQAGAkMABgJFAAYCRwAGAkkABgJLAAYCaAAGAmsABgJuAAYCcQAGAnQABgJ3AAYCegAGAn0ABgJ/AAYC+gAGAvwABgL+AAYDAAAGAwMABgMEAAYDBQAGAwYABgMHAAYDCQAGAwsABgMMAAYDDQAGAw8ABgMQAAYDiwAGA40ABgOPAAYDkQAGA5QABgOVAAYDlgAGA5cABgOYAAYDmgAGA5wABgOdAAYDngAGA6AABgOhAAYEHAAGBB4ABgQgAAYEIgAGBCUABgQmAAYEJwAGBCgABgQpAAYEKwAGBC0ABgQuAAYELwAGBDEABgQyAAYErQAGBK8ABgSyAAYEtAAGBLcABgS4AAYEuQAGBLoABgS7AAYEvQAGBL8ABgTAAAYEwQAGBMMABgTEAAYFPwAGBUEABgVDAAYFRQAGBUgABgVJAAYFSgAGBUsABgVMAAYFTgAGBVAABgVRAAYFUgAGBVQABgVVAAYF0AAGBdIABgXUAAYF1gAGBdkABgXaAAYF2wAGBdwABgXdAAYF3wAGBeEABgXiAAYF4wAGBeUABgXmAAYGYQAGBmMABgZlAAYGZwAGBmoABgZrAAYGbAAGBm0ABgZuAAYGcAAGBnIABgZzAAYGdAAGBnYABgZ3AAYHCgAGBy0ABgdNAAYHbQAGB28ABgdxAAYHcwAGB3UABgd4AAYHeQAGB3oABgd9AAYHfgAGB4AABgeBAAYHgwAGB4YABgeHAAYHiAAGB4sABgeMAAYHkQAGB6oABgezAAYHtQAGB7cABgfAAAYHwwAGB8YABgfIAAYIEQAGCDUABghcAAYIgAAGCIMABgiFAAYIhwAGCIkABgiLAAYIjQAGCI4ABgiRAAYIqgAGCMsABgjNAAYIzwAGCNEABgjTAAYI1QAGCNcABgjZAAYI2wAGCPwABgj/AAYJAgAGCQUABgkIAAYJCwAGCQ4ABgkRAAYJFAAGCRYABgmRAAYJkwAGCZUABgmXAAYJmgAGCZsABgmcAAYJnQAGCZ4ABgmgAAYJogAGCaMABgmkAAYJpgAGCacABgoiAAYKJAAGCiYABgooAAYKKwAGCiwABgotAAYKLgAGCi8ABgoxAAYKMwAGCjQABgo1AAYKNwAGCjgABgqzAAYKtQAGCrgABgq6AAYKvQAGCr4ABgq/AAYKwAAGCsEABgrDAAYKxQAGCsYABgrHAAYKyQAGCsoABgrjAAYK5AAGCuUABgrnAAYLYgAGC2QABgtmAAYLaAAGC2sABgtsAAYLbQAGC24ABgtvAAYLcQAGC3MABgt0AAYLdQAGC3cABgt4AAYL8wAGC/UABgv3AAYL+QAGC/wABgv9AAYL/gAGC/8ABgwAAAYMAgAGDAQABgwFAAYMBgAGDAgABgwJAAYMhAAGDIYABgyIAAYMigAGDI0ABgyOAAYMjwAGDJAABgyRAAYMkwAGDJUABgyWAAYMlwAGDJkABgyaAAYNFQAGDRcABg0ZAAYNGwAGDR4ABg0fAAYNIAAGDSEABg0iAAYNJAAGDSYABg0nAAYNKAAGDSoABg0rAAYNpgAGDagABg2qAAYNrAAGDa8ABg2wAAYNsQAGDbIABg2zAAYNtQAGDbcABg24AAYNuQAGDbsABg28AAYOBQAGDikABg5QAAYOdAAGDncABg55AAYOewAGDn0ABg5/AAYOgQAGDoIABg6FAAYOngAGDrsABg69AAYOvwAGDsEABg7DAAYOxQAGDscABg7JAAYO5gAGDukABg7sAAYO7wAGDvIABg71AAYO+AAGDvsABg79AAYPeAAGD3oABg98AAYPfgAGD4EABg+CAAYPgwAGD4QABg+FAAYPhwAGD4kABg+KAAYPiwAGD40ABg+OAAYQCQAGEAsABhANAAYQDwAGEBIABhATAAYQFAAGEBUABhAWAAY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h0QAGIdMABiHVAAYh1wAGIfgABiH7AAYh/gAGIgEABiIEAAYiBwAGIgoABiINAAYiEAAGIhIABiKNAAYijwAGIpEABiKTAAYilgAGIpcABiKYAAYimQAGIpoABiKcAAYingAGIp8ABiKgAAYiogAGIqMABiMeAAYjIAAGIyIABiMkAAYjJwAGIygABiMpAAYjKgAGIysABiMtAAYjLwAGIzAABiMxAAYjMwAGIzQABiOvAAYjsQAGI7QABiO2AAYjuQAGI7oABiO7AAYjvAAGI70ABiO/AAYjwQAGI8IABiPDAAYjxQAGI8YABiPfAAYj4AAGI+EABiPjAAYkXgAGJGAABiRiAAYkZAAGJGcABiRoAAYkaQAGJGoABiRrAAYkbQAGJG8ABiRwAAYkcQAGJHMABiR0AAYk7wAGJPEABiTzAAYk9QAGJPgABiT5AAYk+gAGJPsABiT8AAYk/gAGJQAABiUBAAYlAgAGJQQABiUFAAYlgAAGJYIABiWEAAYlhgAGJYkABiWKAAYliwAGJYwABiWNAAYljwAGJZEABiWSAAYlkwAGJZUABiWWAAYmEQAGJhMABiYVAAYmFwAGJhoABiYbAAYmHAAGJh0ABiYeAAYmIAAGJiIABiYjAAYmJAAGJiYABiYnAAYmogAGJqQABiamAAYmqAAGJqsABiasAAYmrQAGJq4ABiavAAYmsQAGJrMABia0AAYmtQAGJrcABia4AAYnAQAGJyUABidMAAYncAAGJ3MABid1AAYndwAGJ3kABid7AAYnfQAGJ34ABieBAAYnmgAGJ7cABie5AAYnuwAGJ70ABie/AAYnwQAGJ8MABifFAAYn4gAGJ+UABifoAAYn6wAGJ+4ABifxAAYn9AAGJ/cABif5AAYodAAGKHYABih4AAYoegAGKH0ABih+AAYofwAGKIAABiiBAAYogwAGKIUABiiGAAYohwAGKIkABiiKAAYpBQAGKQcABikJAAYpCwAGKQ4ABikPAAYpEAAGKREABikSAAYpFAAGKRYABikXAAYpGAAGKRoABikbAAYplgAGKZgABimaAAYpnAAGKZ8ABimgAAYpoQAGKaIABimjAAYppQAGKacABimoAAYpqQAGKasABimsAAYqJwAGKikABiosAAYqLgAGKjEABioyAAYqMwAGKjQABio1AAYqNwAGKjkABio6AAY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FhwAGRYoABkWMAAZF1QAGRfkABkYgAAZGRAAGRkcABkZJAAZGSwAGRk0ABkZPAAZGUQAGRlIABkZVAAZGbgAGRpMABkaVAAZGlwAGRpkABkabAAZGnQAGRp8ABkahAAZGowAGRqUABkbKAAZGzQAGRtAABkbTAAZG1gAGRtkABkbcAAZG3wAGRuIABkblAAZG5wAGR2IABkdkAAZHZwAGR2kABkdsAAZHbQAGR24ABkdvAAZHcAAGR3IABkd0AAZHdQAGR3YABkd4AAZHeQAGR4oABkeLAAZHjQAGSAgABkgKAAZIDAAGSA4ABkgRAAZIEgAGSBMABkgUAAZIFQAGSBcABkgZAAZIGgAGSBsABkgdAAZIHgAGSJkABkibAAZIngAGSKAABkijAAZIpAAGSKUABkimAAZIpwAGSKkABkirAAZIrAAGSK0ABkivAAZIsAAGSMEABkjCAAZIxAAGST8ABklBAAZJQwAGSUUABklIAAZJSQAGSUoABklLAAZJTAAGSU4ABklQAAZJUQAGSVIABklUAAZJVQAGSdAABknSAAZJ1QAGSdcABknaAAZJ2wAGSdwABkndAAZJ3gAGSeAABkniAAZJ4wAGSeQABknmAAZJ5wAGSfgABkn5AAZJ+wAGSnYABkp4AAZKegAGSnwABkp/AAZKgAAGSoEABkqCAAZKgwAGSoUABkqHAAZKiAAGSokABkqLAAZKjAAGSwcABksJAAZLDAAGSw4ABksRAAZLEgAGSxMABksUAAZLFQAGSxcABksZAAZLGgAGSxsABksdAAZLHgAGSzcABks4AAZLOQAGSzsABku2AAZLuAAGS7oABku8AAZLvwAGS8AABkvBAAZLwgAGS8MABkvFAAZLxwAGS8gABkvJAAZLywAGS8wABkxHAAZMSQAGTEwABkxOAAZMUQAGTFIABkxTAAZMVAAGTFUABkxXAAZMWQAGTFoABkxbAAZMXQAGTF4ABkxsAAZMhQAGTLYABky5AAZMvAAGTL8ABkzCAAZMxQAGTMgABkzLAAZMzgAGTNEABkzUAAZM1wAGTNoABk0LAAZNDgAGTREABk0UAAZNFwAGTRoABk0dAAZNIAAGTSMABk0mAAZNKQAGTSwABk0vAAZNMQAGTT8ABk1aAAZNbAAGTYMABk2ZAAZNpwAGTbYABk3KAAZN1QAGTeIABk3xAAZN+gAGTo0ABk6wAAZO0AAGTvAABk7yAAZO9AAGTvYABk74AAZO+wAGTvwABk79AAZPAAAGTwEABk8DAAZPBAAGTwcABk8KAAZPCwAGTwwABk8PAAZPEAAGTxUABk8uAAZPNwAGTzkABk88AAZPRQAGT0gABk9LAAZPTQAGT5YABk+6AAZP4QAGUAUABlAIAAZQCgAGUAwABlAOAAZQEAAGUBIABlATAAZQFgAGUC8ABlBQAAZQUgAGUFQABlBWAAZQWAAGUFoABlBcAAZQXgAGUGAABlCBAAZQhAAGUIcABlCKAAZQjQAGUJAABlCTAAZQlgAGUJkABlCbAAZRFgAGURgABlEaAAZRHAAGUR8ABlEgAAZRIQAGUSIABlEjAAZRJQAGUScABlEoAAZRKQAGUSsABlEsAAZRpwAGUakABlGrAAZRrQAGUbAABlGxAAZRsgAGUbMABlG0AAZRtgAGUbgABlG5AAZRugAGUbwABlG9AAZSOAAGUjoABlI9AAZSPwAGUkIABlJDAAZSRAAGUkUABlJGAAZSSAAGUkoABlJLAAZSTAAGUk4ABlJPAAZSaAAGUmkABlJqAAZSbAAGUucABlLpAAZS6wAGUu0ABlLwAAZS8QAGUvIABlLzAAZS9AAGUvYABlL4AAZS+QAGUvoABlL8AAZS/QAGU3gABlN6AAZTfAAGU34ABlOBAAZTggAGU4MABlOEAAZThQAGU4cABlOJAAZTigAGU4sABlONAAZTjgAGVAkABlQLAAZUDQAGVA8ABlQSAAZUEwAGVBQABlQVAAZUFgAGVBgABlQaAAZUGwAGVBwABlQeAAZUHwAGVJoABlScAAZUngAGVKAABlSjAAZUpAAGVKUABlSmAAZUpwAGVKkABlSrAAZUrAAGVK0ABlSvAAZUsAAGVSsABlUtAAZVLwAGVTEABlU0AAZVNQAGVTYABlU3AAZVOAAGVToABlU8AAZVPQAGVT4ABlVAAAZVQQAGVYoABlWuAAZV1QAGVfkABlX8AAZV/wAGVgEABlYDAAZWBQAGVgcABlYIAAZWCwAGViQABlZBAAZWRAAGVkcABlZKAAZWTQAGVlAABlZTAAZWVgAGVnMABlZ2AAZWeQAGVnwABlZ/AAZWggAGVoUABlaIAAZWigAGVwUABlcHAAZXCgAGVwwABlcPAAZXEAAGVxEABlcSAAZXEwAGVxUABlcYAAZXGQAGVxoABlccAAZXHQAGV5gABleaAAZXnQAGV58ABleiAAZXowAGV6QABlelAAZXpgAGV6gABlerAAZXrAAGV60ABlevAAZXsAAGWCsABlgtAAZYMAAGWDIABlg1AAZYNgAGWDcABlg4AAZYOQAGWDsABlg+AAZYPwAGWEAABlhCAAZYQwAGWL4ABljAAAZYwwAGWMUABljIAAZYyQAGWMoABljLAAZYzAAGWM4ABljRAAZY0gAGWNMABljVAAZY1gAGWXkABlmdAAZZwQAGWeEABloIAAZaLwAGWk8ABlp2AAZamgAGWr0ABlrkAAZbCAAGWywABltQAAZbdwAGW3gABlt6AAZbfAAGW38ABluBAAZbhAAGW4YABluIAAZbiwAGW40ABluPAAZbkgAGW5UABluXAAZbmQAGW5sABlueAAZboQAGW6QABlupAAZbwgAGW8cABlvJAAZbzgAGW9EABlvTAAZcHAAGXEAABlxnAAZciwAGXI4ABlyQAAZckgAGXJQABlyWAAZcmAAGXJkABlycAAZctQAGXNoABlzcAAZc3gAGXOAABlziAAZc5AAGXOYABlzoAAZc6gAGXOwABl0RAAZdFAAGXRcABl0aAAZdHQAGXSAABl0jAAZdJgAGXSkABl0sAAZdLgAGXakABl2rAAZdrgAGXbAABl2zAAZdtAAGXbUABl22AAZdtwAGXbkABl27AAZdvAAGXb0ABl2/AAZdwAAGXdEABl3SAAZd1AAGXk8ABl5RAAZeUwAGXlUABl5YAAZeWQAGXloABl5bAAZeXAAGXl4ABl5gAAZeYQAGXmIABl5kAAZeZQAGXuAABl7iAAZe5QAGXucABl7qAAZe6wAGXuwABl7tAAZe7gAGXvAABl7yAAZe8wAGXvQABl72AAZe9wAGXwgABl8JAAZfCwAGX4YABl+IAAZfigAGX4wABl+PAAZfkAAGX5EABl+SAAZfkwAGX5UABl+XAAZfmAAGX5kABl+bAAZfnAAGYBcABmAZAAZgHAAGYB4ABmAhAAZgIgAGYCMABmAkAAZgJQAGYCcABmApAAZgKgAGYCsABmAtAAZgLgAGYD8ABmBAAAZgQgAGYL0ABmC/AAZgwQAGYMMABmDGAAZgxwAGYMgABmDJAAZgygAGYMwABmDOAAZgzwAGYNAABmDSAAZg0wAGYU4ABmFQAAZhUwAGYVUABmFYAAZhWQAGYVoABmFbAAZhXAAGYV4ABmFgAAZhYQAGYWIABmFkAAZhZQAGYX4ABmF/AAZhgAAGYYIABmH9AAZh/wAGYgEABmIDAAZiBgAGYgcABmIIAAZiCQAGYgoABmIMAAZiDgAGYg8ABmIQAAZiEgAGYhMABmKOAAZikAAGYpMABmKVAAZimAAGYpkABmKaAAZimwAGYpwABmKeAAZioAAGYqEABmKiAAZipAAGYqUABmKyAAZiywAGYuQABmLnAAZi6gAGYu0ABmLwAAZi8wAGYvYABmMPAAZjEgAGYxUABmMYAAZjGwAGYx4ABmMhAAZjIwAGYzEABmNHAAZjUAAGY10ABmNzAAZjhgAGZBkABmQ8AAZkXAAGZHwABmR+AAZkgAAGZIIABmSEAAZkhwAGZIgABmSJAAZkjAAGZI0ABmSPAAZkkAAGZJMABmSWAAZklwAGZJgABmSbAAZknAAGZKEABmS6AAZkwwAGZMUABmTIAAZk0QAGZNQABmTXAAZk2QAGZSIABmVGAAZlbQAGZZEABmWUAAZllgAGZZgABmWaAAZlnAAGZZ4ABmWfAAZlogAGZbsABmXcAAZl3gAGZeAABmXiAAZl5AAGZeYABmXoAAZl6gAGZewABmYNAAZmEAAGZhMABmYWAAZmGQAGZhwABmYfAAZmIgAGZiUABmYnAAZmogAGZqQABmamAAZmqAAGZqsABmasAAZmrQAGZq4ABmavAAZmsQAGZrMABma0AAZmtQAGZrcABma4AAZnMwAGZzUABmc3AAZnOQAGZzwABmc9AAZnPgAGZz8ABmdAAAZnQgAGZ0QABmdFAAZnRgAGZ0gABmdJAAZnxAAGZ8YABmfJAAZnywAGZ84ABmfPAAZn0AAGZ9EABmfSAAZn1AAGZ9YABmfXAAZn2AAGZ9oABmfbAAZn9AAGZ/UABmf2AAZn+AAGaHMABmh1AAZodwAGaHkABmh8AAZofQAGaH4ABmh/AAZogAAGaIIABmiEAAZohQAGaIYABmiIAAZoiQAGaQQABmkGAAZpCAAGaQoABmkNAAZpDgAGaQ8ABmkQAAZpEQAGaRMABmkVAAZpFgAGaRcABmkZAAZpGgAGaZUABmmXAAZpmQAGaZsABmmeAAZpnwAGaaAABmmhAAZpogAGaaQABmmmAAZppwAGaagABmmqAAZpqwAGaiYABmooAAZqKgAGaiwABmovAAZqMAAGajEABmoyAAZqMwAGajUABmo3AAZqOAAGajkABmo7AAZqPAAGarcABmq5AAZquwAGar0ABmrAAAZqwQAGasIABmrDAAZqxAAGasYABmrIAAZqyQAGasoABmrMAAZqzQAGaxYABms6AAZrYQAGa4UABmuIAAZriwAGa40ABmuPAAZrkQAGa5MABmuUAAZrlwAGa7AABmvNAAZr0AAGa9MABmvWAAZr2QAGa9wABmvfAAZr4gAGa/8ABmwCAAZsBQAGbAgABmwLAAZsDgAGbBEABmwUAAZsFgAGbJEABmyTAAZslgAGbJgABmybAAZsnAAGbJ0ABmyeAAZsnwAGbKEABmykAAZspQAGbKYABmyoAAZsqQAGbSQABm0mAAZtKQAGbSsABm0uAAZtLwAGbTAABm0xAAZtMgAGbTQABm03AAZtOAAGbTkABm07AAZtPAAGbbcABm25AAZtvAAGbb4ABm3BAAZtwgAGbcMABm3EAAZtxQAGbccABm3KAAZtywAGbcwABm3OAAZtzwAGbkoABm5MAAZuTwAGblEABm5UAAZuVQAGblYABm5XAAZuWAAGbloABm5dAAZuXgAGbl8ABm5hAAZuYgAGbt0ABm7fAAZu4QAGbuMABm7mAAZu5wAGbugABm7pAAZu6gAGbuwABm7vAAZu8AAGbvEABm7zAAZu9AAGb28ABm9xAAZvcwAGb3UABm94AAZveQAGb3oABm97AAZvfAAGb34ABm+BAAZvggAGb4MABm+FAAZvhgAGcAEABnADAAZwBgAGcAgABnALAAZwDAAGcA0ABnAOAAZwDwAGcBEABnAUAAZwFQAGcBYABnAYAAZwGQAGcKwABnDPAAZw7wAGcQ8ABnERAAZxEwAGcRUABnEXAAZxGgAGcRsABnEcAAZxHwAGcSAABnEiAAZxIwAGcSUABnEoAAZxKQAGcSoABnEtAAZxLgAGcTMABnFMAAZxVQAGcVcABnFZAAZxYgAGcWUABnFoAAZxagAGcbMABnHXAAZx/gAGciIABnIlAAZyJwAGcikABnIrAAZyLQAGci8ABnIwAAZyMwAGckwABnJtAAZybwAGcnEABnJzAAZydQAGcncABnJ5AAZyewAGcn0ABnKeAAZyoQAGcqQABnKnAAZyqgAGcq0ABnKwAAZyswAGcrYABnK4AAZzMwAGczUABnM3AAZzOQAGczwABnM9AAZzPgAGcz8ABnNAAAZzQgAGc0QABnNFAAZzRgAGc0gABnNJAAZzxAAGc8YABnPIAAZzygAGc80ABnPOAAZzzwAGc9AABnPRAAZz0wAGc9UABnPWAAZz1wAGc9kABnPaAAZ0VQAGdFcABnRaAAZ0XAAGdF8ABnRgAAZ0YQAGdGIABnRjAAZ0ZQAGdGcABnRoAAZ0aQAGdGsABnRsAAZ0hQAGdIYABnSHAAZ0iQAGdQQABnUGAAZ1CAAGdQoABnUNAAZ1DgAGdQ8ABnUQAAZ1EQAGdRMABnUVAAZ1FgAGdRcABnUZAAZ1GgAGdZUABnWXAAZ1mQAGdZsABnWeAAZ1nwAGdaAABnWhAAZ1ogAGdaQABnWmAAZ1pwAGdagABnWqAAZ1qwAGdiYABnYoAAZ2KgAGdiwABnYvAAZ2MAAGdjEABnYyAAZ2MwAGdjUABnY3AAZ2OAAGdjkABnY7AAZ2PAAGdrcABna5AAZ2uwAGdr0ABnbAAAZ2wQAGdsIABnbDAAZ2xAAGdsYABnbIAAZ2yQAGdsoABnbMAAZ2zQAGd0gABndKAAZ3TAAGd04ABndRAAZ3UgAGd1MABndUAAZ3VQAGd1cABndZAAZ3WgAGd1sABnddAAZ3XgAGd6cABnfLAAZ38gAGeBYABngZAAZ4GwAGeB0ABngfAAZ4IQAGeCMABngkAAZ4JwAGeEAABnhdAAZ4XwAGeGEABnhjAAZ4ZQAGeGcABnhpAAZ4awAGeIgABniLAAZ4jgAGeJEABniUAAZ4lwAGeJoABnidAAZ4nwAGeRoABnkcAAZ5HgAGeSAABnkjAAZ5JAAGeSUABnkmAAZ5JwAGeSkABnkrAAZ5LAAGeS0ABnkvAAZ5MAAGeasABnmtAAZ5rwAGebEABnm0AAZ5tQAGebYABnm3AAZ5uAAGeboABnm8AAZ5vQAGeb4ABnnAAAZ5wQAGejwABno+AAZ6QAAGekIABnpFAAZ6RgAGekcABnpIAAZ6SQAGeksABnpNAAZ6TgAGek8ABnpRAAZ6UgAGes0ABnrPAAZ60QAGetMABnrWAAZ61wAGetgABnrZAAZ62gAGetwABnreAAZ63wAGeuAABnriAAZ64wAGe14ABntgAAZ7YgAGe2QABntnAAZ7aAAGe2kABntqAAZ7awAGe20ABntvAAZ7cAAGe3EABntzAAZ7dAAGe+8ABnvxAAZ78wAGe/UABnv4AAZ7+QAGe/oABnv7AAZ7/AAGe/4ABnwAAAZ8AQAGfAIABnwEAAZ8BQAGfIAABnyCAAZ8hAAGfIYABnyJAAZ8igAGfIsABnyMAAZ8jQAGfI8ABnyRAAZ8kgAGfJMABnyVAAZ8lgAGfSkABn1MAAZ9bAAGfYwABn2OAAZ9kAAGfZIABn2UAAZ9lwAGfZgABn2ZAAZ9nAAGfZ0ABn2fAAZ9oAAGfaIABn2lAAZ9pgAGfacABn2qAAZ9qwAGfbAABn3JAAZ90gAGfdQABn3WAAZ93wAGfeIABn3lAAZ95wAGfjAABn5UAAZ+ewAGfp8ABn6iAAZ+pAAGfqYABn6oAAZ+qgAGfqwABn6tAAZ+sAAGfskABn7qAAZ+7AAGfu4ABn7wAAZ+8gAGfvQABn72AAZ++AAGfvoABn8bAAZ/HgAGfyEABn8kAAZ/JwAGfyoABn8tAAZ/MAAGfzMABn81AAZ/sAAGf7IABn+0AAZ/tgAGf7kABn+6AAZ/uwAGf7wABn+9AAZ/vwAGf8EABn/CAAZ/wwAGf8UABn/GAAaAQQAGgEMABoBFAAaARwAGgEoABoBLAAaATAAGgE0ABoBOAAaAUAAGgFIABoBTAAaAVAAGgFYABoBXAAaA0gAGgNQABoDXAAaA2QAGgNwABoDdAAaA3gAGgN8ABoDgAAaA4gAGgOQABoDlAAaA5gAGgOgABoDpAAaBAgAGgQMABoEEAAaBBgAGgYEABoGDAAaBhQAGgYcABoGKAAaBiwAGgYwABoGNAAaBjgAGgZAABoGSAAaBkwAGgZQABoGWAAaBlwAGghIABoIUAAaCFgAGghgABoIbAAaCHAAGgh0ABoIeAAaCHwAGgiEABoIjAAaCJAAGgiUABoInAAaCKAAGgqMABoKlAAaCpwAGgqkABoKsAAaCrQAGgq4ABoKvAAaCsAAGgrIABoK0AAaCtQAGgrYABoK4AAaCuQAGgzQABoM2AAaDOAAGgzoABoM9AAaDPgAGgz8ABoNAAAaDQQAGg0MABoNFAAaDRgAGg0cABoNJAAaDSgAGg8UABoPHAAaDyQAGg8sABoPOAAaDzwAGg9AABoPRAAaD0gAGg9QABoPWAAaD1wAGg9gABoPaAAaD2wAGhCQABoRIAAaEbwAGhJMABoSWAAaEmAAGhJoABoScAAaEngAGhKAABoShAAaEpAAGhL0ABoTaAAaE3AAGhN4ABoTgAAaE4gAGhOQABoTmAAaE6AAGhQUABoUIAAaFCwAGhQ4ABoURAAaFFAAGhRcABoUaAAaFHAAGhZcABoWZAAaFmwAGhZ0ABoWgAAaFoQAGhaIABoWjAAaFpAAGhaYABoWoAAaFqQAGhaoABoWsAAaFrQAGhigABoYqAAaGLAAGhi4ABoYxAAaGMgAGhjMABoY0AAaGNQAGhjcABoY5AAaGOgAGhjsABoY9AAaGPgAGhrkABoa7AAaGvQAGhr8ABobCAAaGwwAGhsQABobFAAaGxgAGhsgABobKAAaGywAGhswABobOAAaGzwAGh0oABodMAAaHTgAGh1AABodTAAaHVAAGh1UABodWAAaHVwAGh1kABodbAAaHXAAGh10ABodfAAaHYAAGh9sABofdAAaH3wAGh+EABofkAAaH5QAGh+YABofnAAaH6AAGh+oABofsAAaH7QAGh+4ABofwAAaH8QAGiGwABohuAAaIcQAGiHMABoh2AAaIdwAGiHgABoh5AAaIegAGiHwABoh+AAaIfwAGiIAABoiCAAaIgwAGiJIABokNAAaJDwAGiREABokTAAaJFgAGiRcABokYAAaJGQAGiRoABokcAAaJHgAGiR8ABokgAAaJIgAGiSMABom2AAaJ2QAGifkABooZAAaKGwAGih0ABoofAAaKIQAGiiQABoolAAaKJgAGiikABooqAAaKLAAGii0ABoowAAaKMwAGijQABoo1AAaKOAAGijkABoo+AAaKVwAGimAABopiAAaKZQAGim4ABopxAAaKdAAGinYABoq/AAaK4wAGiwoABosuAAaLMQAGizMABos1AAaLNwAGizkABos7AAaLPAAGiz8ABotYAAaLeQAGi3sABot9AAaLfwAGi4EABouDAAaLhQAGi4cABouJAAaLqgAGi60ABouwAAaLswAGi7YABou5AAaLvAAGi78ABovCAAaLxAAGjD8ABoxBAAaMQwAGjEUABoxIAAaMSQAGjEoABoxLAAaMTAAGjE4ABoxQAAaMUQAGjFIABoxUAAaMVQAGjNAABozSAAaM1AAGjNYABozZAAaM2gAGjNsABozcAAaM3QAGjN8ABozhAAaM4gAGjOMABozlAAaM5gAGjWEABo1jAAaNZgAGjWgABo1rAAaNbAAGjW0ABo1uAAaNbwAGjXEABo1zAAaNdAAGjXUABo13AAaNeAAGjZEABo2SAAaNkwAGjZUABo4QAAaOEgAGjhQABo4WAAaOGQAGjhoABo4bAAaOHAAGjh0ABo4fAAaOIQAGjiIABo4jAAaOJQAGjiYABo6hAAaOowAGjqUABo6nAAaOqgAGjqsABo6sAAaOrQAGjq4ABo6wAAaOsgAGjrMABo60AAaOtgAGjrcABo8yAAaPNAAGjzYABo84AAaPOwAGjzwABo89AAaPPgAGjz8ABo9BAAaPQwAGj0QABo9FAAaPRwAGj0gABo/DAAaPxQAGj8cABo/JAAaPzAAGj80ABo/OAAaPzwAGj9AABo/SAAaP1AAGj9UABo/WAAaP2AAGj9kABpBUAAaQVgAGkFgABpBaAAaQXQAGkF4ABpBfAAaQYAAGkGEABpBjAAaQZQAGkGYABpBnAAaQaQAGkGoABpCzAAaQ1wAGkP4ABpEiAAaRJQAGkSgABpEqAAaRLAAGkS4ABpEwAAaRMQAGkTQABpFNAAaRagAGkW0ABpFwAAaRcwAGkXYABpF5AAaRfAAGkX8ABpGcAAaRnwAGkaIABpGlAAaRqAAGkasABpGuAAaRsQAGkbMABpIuAAaSMAAGkjMABpI1AAaSOAAGkjkABpI6AAaSOwAGkjwABpI+AAaSQQAGkkIABpJDAAaSRQAGkkYABpLBAAaSwwAGksYABpLIAAaSywAGkswABpLNAAaSzgAGks8ABpLRAAaS1AAGktUABpLWAAaS2AAGktkABpNUAAaTVgAGk1kABpNbAAaTXgAGk18ABpNgAAaTYQAGk2IABpNkAAaTZwAGk2gABpNpAAaTawAGk2wABpPnAAaT6QAGk+wABpPuAAaT8QAGk/IABpPzAAaT9AAGk/UABpP3AAaT+gAGk/sABpP8AAaT/gAGk/8ABpR6AAaUfAAGlH4ABpSAAAaUgwAGlIQABpSFAAaUhgAGlIcABpSJAAaUjAAGlI0ABpSOAAaUkAAGlJEABpUMAAaVDgAGlRAABpUSAAaVFQAGlRYABpUXAAaVGAAGlRkABpUbAAaVHgAGlR8ABpUgAAaVIgAGlSMABpWeAAaVoAAGlaMABpWlAAaVqAAGlakABpWqAAaVqwAGlawABpWuAAaVsQAGlbIABpWzAAaVtQAGlbYABpZJAAaWbAAGlowABpasAAaWrgAGlrAABpayAAaWtAAGlrcABpa4AAaWuQAGlrwABpa9AAaWvwAGlsAABpbDAAaWxgAGlscABpbIAAaWywAGlswABpbRAAaW6gAGlvMABpb1AAaW+AAGlwEABpcEAAaXBwAGlwkABpdSAAaXdgAGl50ABpfBAAaXxAAGl8YABpfIAAaXygAGl8wABpfOAAaXzwAGl9IABpfrAAaYDAAGmA4ABpgQAAaYEgAGmBQABpgWAAaYGAAGmBoABpgcAAaYPQAGmEAABphDAAaYRgAGmEkABphMAAaYTwAGmFIABphVAAaYVwAGmNIABpjUAAaY1gAGmNgABpjbAAaY3AAGmN0ABpjeAAaY3wAGmOEABpjjAAaY5AAGmOUABpjnAAaY6AAGmWMABpllAAaZZwAGmWkABplsAAaZbQAGmW4ABplvAAaZcAAGmXIABpl0AAaZdQAGmXYABpl4AAaZeQAGmfQABpn2AAaZ+QAGmfsABpn+AAaZ/wAGmgAABpoBAAaaAgAGmgQABpoGAAaaBwAGmggABpoKAAaaCwAGmiQABpolAAaaJgAGmigABpqjAAaapQAGmqcABpqpAAaarAAGmq0ABpquAAaarwAGmrAABpqyAAaatAAGmrUABpq2AAaauAAGmrkABps0AAabNgAGmzgABps6AAabPQAGmz4ABps/AAabQAAGm0EABptDAAabRQAGm0YABptHAAabSQAGm0oABpvFAAabxwAGm8kABpvLAAabzgAGm88ABpvQAAab0QAGm9IABpvUAAab1gAGm9cABpvYAAab2gAGm9sABpxWAAacWAAGnFoABpxcAAacXwAGnGAABpxhAAacYgAGnGMABpxlAAacZwAGnGgABpxpAAacawAGnGwABpznAAac6QAGnOsABpztAAac8AAGnPEABpzyAAac8wAGnPQABpz2AAac+AAGnPkABpz6AAac/AAGnP0ABp1GAAadagAGnZEABp21AAaduAAGnbsABp29AAadvwAGncEABp3DAAadxAAGnccABp3gAAad/QAGngAABp4DAAaeBgAGngkABp4MAAaeDwAGnhIABp4vAAaeMgAGnjUABp44AAaeOwAGnj4ABp5BAAaeRAAGnkYABp7BAAaewwAGnsYABp7IAAaeywAGnswABp7NAAaezgAGns8ABp7RAAae1AAGntUABp7WAAae2AAGntkABp9UAAafVgAGn1kABp9bAAafXgAGn18ABp9gAAafYQAGn2IABp9kAAafZwAGn2gABp9pAAafawAGn2wABp/nAAaf6QAGn+wABp/uAAaf8QAGn/IABp/zAAaf9AAGn/UABp/3AAaf+gAGn/sABp/8AAaf/gAGn/8ABqB6AAagfAAGoH8ABqCBAAaghAAGoIUABqCGAAaghwAGoIgABqCKAAagjQAGoI4ABqCPAAagkQAGoJIABqENAAahDwAGoREABqETAAahFgAGoRcABqEYAAahGQAGoRoABqEcAAahHwAGoSAABqEhAAahIwAGoSQABqGfAAahoQAGoaMABqGlAAahqAAGoakABqGqAAahqwAGoawABqGuAAahsQAGobIABqGzAAahtQAGobYABqIxAAaiMwAGojYABqI4AAaiOwAGojwABqI9AAaiPgAGoj8ABqJBAAaiRAAGokUABqJGAAaiSAAGokkABqLcAAai/wAGox8ABqM/AAajQQAGo0MABqNFAAajRwAGo0oABqNLAAajTAAGo08ABqNQAAajUgAGo1MABqNWAAajWQAGo1oABqNbAAajXgAGo18ABqNoAAajgQAGo4oABqOMAAajjwAGo5gABqObAAajngAGo6AABqPpAAakDQAGpDQABqRYAAakWwAGpF0ABqRfAAakYQAGpGMABqRlAAakZgAGpGkABqSCAAakowAGpKUABqSnAAakqQAGpKsABqStAAakrwAGpLEABqSzAAak1AAGpNcABqTaAAak3QAGpOAABqTjAAak5gAGpOkABqTsAAak7gAGpWkABqVrAAalbQAGpW8ABqVyAAalcwAGpXQABqV1AAaldgAGpXgABqV6AAalewAGpXwABqV+AAalfwAGpfoABqX8AAal/gAGpgAABqYDAAamBAAGpgUABqYGAAamBwAGpgkABqYLAAamDAAGpg0ABqYPAAamEAAGposABqaNAAamkAAGppIABqaVAAamlgAGppcABqaYAAammQAGppsABqadAAamngAGpp8ABqahAAamogAGprsABqa8AAamvQAGpr8ABqc6AAanPAAGpz4ABqdAAAanQwAGp0QABqdFAAanRgAGp0cABqdJAAanSwAGp0wABqdNAAanTwAGp1AABqfLAAanzQAGp88ABqfRAAan1AAGp9UABqfWAAan1wAGp9gABqfaAAan3AAGp90ABqfeAAan4AAGp+EABqhcAAaoXgAGqGAABqhiAAaoZQAGqGYABqhnAAaoaAAGqGkABqhrAAaobQAGqG4ABqhvAAaocQAGqHIABqjtAAao7wAGqPEABqjzAAao9gAGqPcABqj4AAao+QAGqPoABqj8AAao/gAGqP8ABqkAAAapAgAGqQMABql+AAapgAAGqYIABqmEAAaphwAGqYgABqmJAAapigAGqYsABqmNAAapjwAGqZAABqmRAAapkwAGqZQABqndAAaqAQAGqigABqpMAAaqTwAGqlIABqpUAAaqVgAGqlgABqpaAAaqWwAGql4ABqp3AAaqlAAGqpcABqqaAAaqnQAGqqAABqqjAAaqpgAGqqkABqrGAAaqyQAGqswABqrPAAaq0gAGqtUABqrYAAaq2wAGqt0ABqtYAAarWgAGq10ABqtfAAarYgAGq2MABqtkAAarZQAGq2YABqtoAAarawAGq2wABqttAAarbwAGq3AABqvrAAar7QAGq/AABqvyAAar9QAGq/YABqv3AAar+AAGq/kABqv7AAar/gAGq/8ABqwAAAasAgAGrAMABqx+AAasgAAGrIMABqyFAAasiAAGrIkABqyKAAasiwAGrIwABqyOAAaskQAGrJIABqyTAAaslQAGrJYABq0RAAatEwAGrRYABq0YAAatGwAGrRwABq0dAAatHgAGrR8ABq0hAAatJAAGrSUABq0mAAatKAAGrSkABq2sAAat0AAGrfQABq4XAAauPgAGrl4ABq6FAAaurAAGrswABq7wAAavFAAGrxYABq8ZAAavGwAGrx0ABq8fAAavIgAGryUABq8nAAavKQAGrywABq8uAAavMAAGrzMABq82AAavNwAGrzwABq9VAAavWgAGr1wABq9hAAavZAAGr2YABq+vAAav0wAGr/oABrAeAAawIQAGsCMABrAlAAawJwAGsCkABrArAAawLAAGsC8ABrBIAAawbQAGsG8ABrBxAAawcwAGsHUABrB3AAaweQAGsHsABrB9AAawfwAGsKQABrCnAAawqgAGsK0ABrCwAAawswAGsLYABrC5AAawvAAGsL8ABrDBAAaxPAAGsT4ABrFBAAaxQwAGsUYABrFHAAaxSAAGsUkABrFKAAaxTAAGsU4ABrFPAAaxUAAGsVIABrFTAAaxZAAGsWUABrFnAAax4gAGseQABrHmAAax6AAGsesABrHsAAax7QAGse4ABrHvAAax8QAGsfMABrH0AAax9QAGsfcABrH4AAaycwAGsnUABrJ4AAayegAGsn0ABrJ+AAayfwAGsoAABrKBAAaygwAGsoUABrKGAAayhwAGsokABrKKAAaymwAGspwABrKeAAazGQAGsxsABrMdAAazHwAGsyIABrMjAAazJAAGsyUABrMmAAazKAAGsyoABrMrAAazLAAGsy4ABrMvAAazqgAGs6wABrOvAAazsQAGs7QABrO1AAaztgAGs7cABrO4AAazugAGs7wABrO9AAazvgAGs8AABrPBAAaz0gAGs9MABrPVAAa0UAAGtFIABrRUAAa0VgAGtFkABrRaAAa0WwAGtFwABrRdAAa0XwAGtGEABrRiAAa0YwAGtGUABrRmAAa04QAGtOMABrTmAAa06AAGtOsABrTsAAa07QAGtO4ABrTvAAa08QAGtPMABrT0AAa09QAGtPcABrT4AAa1EQAGtRIABrUTAAa1FQAGtZAABrWSAAa1lAAGtZYABrWZAAa1mgAGtZsABrWcAAa1nQAGtZ8ABrWhAAa1ogAGtaMABrWlAAa1pgAGtiEABrYjAAa2JgAGtigABrYrAAa2LAAGti0ABrYuAAa2LwAGtjEABrYzAAa2NAAGtjUABrY3AAa2OAAGtk0ABrZmAAa2dwAGtnoABrZ9AAa2gAAGtoMABraUAAa2lwAGtpoABradAAa2oAAGtqIABrarAAa2uAAGtscABrbnAAa3egAGt50ABre9AAa33QAGt98ABrfhAAa34wAGt+UABrfoAAa36QAGt+oABrftAAa37gAGt/AABrfxAAa38wAGt/YABrf3AAa3+AAGt/sABrf8AAa4BQAGuB4ABrgnAAa4KQAGuCsABrg0AAa4NwAGuDoABrg8AAa4hQAGuKkABrjQAAa49AAGuPcABrj5AAa4+wAGuP0ABrj/AAa5AQAGuQIABrkFAAa5HgAGuT8ABrlBAAa5QwAGuUUABrlHAAa5SQAGuUsABrlNAAa5TwAGuXAABrlzAAa5dgAGuXkABrl8AAa5fwAGuYIABrmFAAa5iAAGuYoABroFAAa6BwAGugkABroLAAa6DgAGug8ABroQAAa6EQAGuhIABroUAAa6FgAGuhcABroYAAa6GgAGuhsABrqWAAa6mAAGupoABrqcAAa6nwAGuqAABrqhAAa6ogAGuqMABrqlAAa6pwAGuqgABrqpAAa6qwAGuqwABrsnAAa7KQAGuywABrsuAAa7MQAGuzIABrszAAa7NAAGuzUABrs3AAa7OQAGuzoABrs7AAa7PQAGuz4ABrtXAAa7WAAGu1kABrtbAAa71gAGu9gABrvaAAa73AAGu98ABrvgAAa74QAGu+IABrvjAAa75QAGu+cABrvoAAa76QAGu+sABrvsAAa8ZwAGvGkABrxrAAa8bQAGvHAABrxxAAa8cgAGvHMABrx0AAa8dgAGvHgABrx5AAa8egAGvHwABrx9AAa8+AAGvPoABrz8AAa8/gAGvQEABr0CAAa9AwAGvQQABr0FAAa9BwAGvQkABr0KAAa9CwAGvQ0ABr0OAAa9iQAGvYsABr2NAAa9jwAGvZIABr2TAAa9lAAGvZUABr2WAAa9mAAGvZoABr2bAAa9nAAGvZ4ABr2fAAa+GgAGvhwABr4eAAa+IAAGviMABr4kAAa+JQAGviYABr4nAAa+KQAGvisABr4sAAa+LQAGvi8ABr4wAAa+eQAGvp0ABr7EAAa+6AAGvusABr7tAAa+7wAGvvEABr7zAAa+9QAGvvYABr75AAa/EgAGvy8ABr8xAAa/MwAGvzUABr83AAa/OQAGvzsABr89AAa/WgAGv10ABr9gAAa/YwAGv2YABr9pAAa/bAAGv28ABr9xAAa/7AAGv+4ABr/wAAa/8gAGv/UABr/2AAa/9wAGv/gABr/5AAa/+wAGv/0ABr/+AAa//wAGwAEABsACAAbAfQAGwH8ABsCBAAbAgwAGwIYABsCHAAbAiAAGwIkABsCKAAbAjAAGwI4ABsCPAAbAkAAGwJIABsCTAAbBDgAGwRAABsESAAbBFAAGwRcABsEYAAbBGQAGwRoABsEbAAbBHQAGwR8ABsEgAAbBIQAGwSMABsEkAAbBnwAGwaEABsGkAAbBpgAGwakABsGqAAbBqwAGwawABsGtAAbBrwAGwbEABsGyAAbBswAGwbUABsG2AAbCMQAGwjMABsI1AAbCNwAGwjoABsI7AAbCPAAGwj0ABsI+AAbCQAAGwkIABsJDAAbCRAAGwkYABsJHAAbCwgAGwsQABsLGAAbCyAAGwssABsLMAAbCzQAGws4ABsLPAAbC0QAGwtMABsLUAAbC1QAGwtcABsLYAAbDUwAGw1UABsNXAAbDWQAGw1wABsNdAAbDXgAGw18ABsNgAAbDYgAGw2QABsNlAAbDZgAGw2gABsNpAAbD/AAGxB8ABsQ/AAbEXwAGxGEABsRjAAbEZQAGxGcABsRqAAbEawAGxGwABsRvAAbEcAAGxHIABsRzAAbEdgAGxHkABsR6AAbEewAGxH4ABsR/AAbEhAAGxJ0ABsSmAAbEqAAGxKsABsS0AAbEtwAGxLoABsS8AAbFBQAGxSkABsVQAAbFdAAGxXcABsV5AAbFewAGxX0ABsV/AAbFgQAGxYIABsWFAAbFngAGxb8ABsXBAAbFwwAGxcUABsXHAAbFyQAGxcsABsXNAAbFzwAGxfAABsXzAAbF9gAGxfkABsX8AAbF/wAGxgIABsYFAAbGCAAGxgoABsaFAAbGhwAGxokABsaLAAbGjgAGxo8ABsaQAAbGkQAGxpIABsaUAAbGlgAGxpcABsaYAAbGmgAGxpsABscWAAbHGAAGxxoABsccAAbHHwAGxyAABschAAbHIgAGxyMABsclAAbHJwAGxygABscpAAbHKwAGxywABsenAAbHqQAGx6wABseuAAbHsQAGx7IABsezAAbHtAAGx7UABse3AAbHuQAGx7oABse7AAbHvQAGx74ABsfXAAbH2AAGx9kABsfbAAbIVgAGyFgABshaAAbIXAAGyF8ABshgAAbIYQAGyGIABshjAAbIZQAGyGcABshoAAbIaQAGyGsABshsAAbI5wAGyOkABsjrAAbI7QAGyPAABsjxAAbI8gAGyPMABsj0AAbI9gAGyPgABsj5AAbI+gAGyPwABsj9AAbJeAAGyXoABsl8AAbJfgAGyYEABsmCAAbJgwAGyYQABsmFAAbJhwAGyYkABsmKAAbJiwAGyY0ABsmOAAbKCQAGygsABsoNAAbKDwAGyhIABsoTAAbKFAAGyhUABsoWAAbKGAAGyhoABsobAAbKHAAGyh4ABsofAAbKmgAGypwABsqeAAbKoAAGyqMABsqkAAbKpQAGyqYABsqnAAbKqQAGyqsABsqsAAbKrQAGyq8ABsqwAAbK+QAGyx0ABstEAAbLaAAGy2sABstuAAbLcAAGy3IABst0AAbLdgAGy3cABst6AAbLkwAGy7AABsuzAAbLtgAGy7kABsu8AAbLvwAGy8IABsvFAAbL4gAGy+UABsvoAAbL6wAGy+4ABsvxAAbL9AAGy/cABsv5AAbMdAAGzHYABsx5AAbMewAGzH4ABsx/AAbMgAAGzIEABsyCAAbMhAAGzIcABsyIAAbMiQAGzIsABsyMAAbNBwAGzQkABs0MAAbNDgAGzREABs0SAAbNEwAGzRQABs0VAAbNFwAGzRoABs0bAAbNHAAGzR4ABs0fAAbNmgAGzZwABs2fAAbNoQAGzaQABs2lAAbNpgAGzacABs2oAAbNqgAGza0ABs2uAAbNrwAGzbEABs2yAAbOLQAGzi8ABs4yAAbONAAGzjcABs44AAbOOQAGzjoABs47AAbOPQAGzkAABs5BAAbOQgAGzkQABs5FAAbOwAAGzsIABs7EAAbOxgAGzskABs7KAAbOywAGzswABs7NAAbOzwAGztIABs7TAAbO1AAGztYABs7XAAbPUgAGz1QABs9WAAbPWAAGz1sABs9cAAbPXQAGz14ABs9fAAbPYQAGz2QABs9lAAbPZgAGz2gABs9pAAbP5AAGz+YABs/pAAbP6wAGz+4ABs/vAAbP8AAGz/EABs/yAAbP9AAGz/cABs/4AAbP+QAGz/sABs/8AAbQjwAG0LIABtDSAAbQ8gAG0PQABtD2AAbQ+AAG0PoABtD9AAbQ/gAG0P8ABtECAAbRAwAG0QUABtEGAAbRCAAG0QsABtEMAAbRDQAG0RAABtERAAbRGgAG0TMABtE8AAbRPgAG0UAABtFJAAbRTAAG0U8ABtFRAAbRmgAG0b4ABtHlAAbSCQAG0gwABtIOAAbSEAAG0hIABtIUAAbSFgAG0hcABtIaAAbSMwAG0lQABtJWAAbSWAAG0loABtJcAAbSXgAG0mAABtJiAAbSZAAG0oUABtKIAAbSiwAG0o4ABtKRAAbSlAAG0pcABtKaAAbSnQAG0p8ABtMaAAbTHAAG0x4ABtMgAAbTIwAG0yQABtMlAAbTJgAG0ycABtMpAAbTKwAG0ywABtMtAAbTLwAG0zAABtOrAAbTrQAG068ABtOxAAbTtAAG07UABtO2AAbTtwAG07gABtO6AAbTvAAG070ABtO+AAbTwAAG08EABtQ8AAbUPgAG1EEABtRDAAbURgAG1EcABtRIAAbUSQAG1EoABtRMAAbUTgAG1E8ABtRQAAbUUgAG1FMABtRsAAbUbQAG1G4ABtRwAAbU6wAG1O0ABtTvAAbU8QAG1PQABtT1AAbU9gAG1PcABtT4AAbU+gAG1PwABtT9AAbU/gAG1QAABtUBAAbVfAAG1X4ABtWAAAbVggAG1YUABtWGAAbVhwAG1YgABtWJAAbViwAG1Y0ABtWOAAbVjwAG1ZEABtWSAAbWDQAG1g8ABtYRAAbWEwAG1hYABtYXAAbWGAAG1hkABtYaAAbWHAAG1h4ABtYfAAbWIAAG1iIABtYjAAbWngAG1qAABtaiAAbWpAAG1qcABtaoAAbWqQAG1qoABtarAAbWrQAG1q8ABtawAAbWsQAG1rMABta0AAbXLwAG1zEABtczAAbXNQAG1zgABtc5AAbXOgAG1zsABtc8AAbXPgAG10AABtdBAAbXQgAG10QABtdFAAbXjgAG17IABtfZAAbX/QAG2AAABtgCAAbYBAAG2AYABtgIAAbYCgAG2AsABtgOAAbYJwAG2EQABthGAAbYSAAG2EoABthMAAbYTgAG2FAABthSAAbYbwAG2HIABth1AAbYeAAG2HsABth+AAbYgQAG2IQABtiGAAbZAQAG2QMABtkFAAbZBwAG2QoABtkLAAbZDAAG2Q0ABtkOAAbZEAAG2RIABtkTAAbZFAAG2RYABtkXAAbZkgAG2ZQABtmWAAbZmAAG2ZsABtmcAAbZnQAG2Z4ABtmfAAbZoQAG2aMABtmkAAbZpQAG2acABtmoAAbaIwAG2iUABtonAAbaKQAG2iwABtotAAbaLgAG2i8ABtowAAbaMgAG2jQABto1AAbaNgAG2jgABto5AAbatAAG2rYABtq4AAbaugAG2r0ABtq+AAbavwAG2sAABtrBAAbawwAG2sUABtrGAAbaxwAG2skABtrKAAbbRQAG20cABttJAAbbSwAG204ABttPAAbbUAAG21EABttSAAbbVAAG21YABttXAAbbWAAG21oABttbAAbb1gAG29gABtvbAAbb3QAG2+AABtvhAAbb4gAG2+MABtvkAAbb5gAG2+gABtvpAAbb6gAG2+wABtvtAAbcDAAG3IcABtyJAAbciwAG3I0ABtyQAAbckQAG3JIABtyTAAbclAAG3JYABtyYAAbcmQAG3JoABtycAAbcnQAG3TAABt1TAAbdcwAG3ZMABt2VAAbdlwAG3ZkABt2bAAbdngAG3Z8ABt2gAAbdowAG3aQABt2mAAbdpwAG3akABt2sAAbdrQAG3a4ABt2xAAbdsgAG3bcABt3QAAbd2QAG3dsABt3dAAbd5gAG3ekABt3sAAbd7gAG3jcABt5bAAbeggAG3qYABt6pAAbeqwAG3q0ABt6vAAbesQAG3rMABt60AAbetwAG3tAABt7xAAbe8wAG3vUABt73AAbe+QAG3vsABt79AAbe/wAG3wEABt8iAAbfJQAG3ygABt8rAAbfLgAG3zEABt80AAbfNwAG3zoABt88AAbftwAG37kABt+7AAbfvQAG38AABt/BAAbfwgAG38MABt/EAAbfxgAG38gABt/JAAbfygAG38wABt/NAAbgSAAG4EoABuBMAAbgTgAG4FEABuBSAAbgUwAG4FQABuBVAAbgVwAG4FkABuBaAAbgWwAG4F0ABuBeAAbg2QAG4NsABuDeAAbg4AAG4OMABuDkAAbg5QAG4OYABuDnAAbg6QAG4OsABuDsAAbg7QAG4O8ABuDwAAbhCQAG4QoABuELAAbhDQAG4YgABuGKAAbhjAAG4Y4ABuGRAAbhkgAG4ZMABuGUAAbhlQAG4ZcABuGZAAbhmgAG4ZsABuGdAAbhngAG4hkABuIbAAbiHQAG4h8ABuIiAAbiIwAG4iQABuIlAAbiJgAG4igABuIqAAbiKwAG4iwABuIuAAbiLwAG4qoABuKsAAbirgAG4rAABuKzAAbitAAG4rUABuK2AAbitwAG4rkABuK7AAbivAAG4r0ABuK/AAbiwAAG4zsABuM9AAbjPwAG40EABuNEAAbjRQAG40YABuNHAAbjSAAG40oABuNMAAbjTQAG404ABuNQAAbjUQAG48wABuPOAAbj0AAG49IABuPVAAbj1gAG49cABuPYAAbj2QAG49sABuPdAAbj3gAG498ABuPhAAbj4gAG5CsABuRPAAbkdgAG5JoABuSdAAbknwAG5KEABuSjAAbkpQAG5KcABuSoAAbkqwAG5MQABuThAAbk4wAG5OUABuTnAAbk6QAG5OsABuTtAAbk7wAG5QwABuUPAAblEgAG5RUABuUYAAblGwAG5R4ABuUhAAblIwAG5Z4ABuWgAAblogAG5aQABuWnAAblqAAG5akABuWqAAblqwAG5a0ABuWvAAblsAAG5bEABuWzAAbltAAG5i8ABuYxAAbmMwAG5jUABuY4AAbmOQAG5joABuY7AAbmPAAG5j4ABuZAAAbmQQAG5kIABuZEAAbmRQAG5sAABubCAAbmxAAG5sYABubJAAbmygAG5ssABubMAAbmzQAG5s8ABubRAAbm0gAG5tMABubVAAbm1gAG51EABudTAAbnVgAG51gABudbAAbnXAAG510ABudeAAbnXwAG52EABudjAAbnZAAG52UABudnAAbnaAAG5+MABuflAAbn5wAG5+kABufsAAbn7QAG5+4ABufvAAbn8AAG5/IABuf0AAbn9QAG5/YABuf4AAbn+QAG6HQABuh2AAboeAAG6HoABuh9AAbofgAG6H8ABuiAAAbogQAG6IMABuiFAAbohgAG6IcABuiJAAboigAG6QUABukHAAbpCQAG6QsABukOAAbpDwAG6RAABukRAAbpEgAG6RQABukWAAbpFwAG6RgABukaAAbpGwAG6SwABuktAAbpLwAG6aoABumsAAbprgAG6bAABumzAAbptAAG6bUABum2AAbptwAG6bkABum8AAbpvQAG6b4ABunAAAbpwQAG6jwABuo+AAbqQAAG6kIABupFAAbqRgAG6kcABupIAAbqSQAG6ksABupOAAbqTwAG6lAABupSAAbqUwAG6s4ABurQAAbq0wAG6tUABurYAAbq2QAG6toABurbAAbq3AAG6t4ABurhAAbq4gAG6uMABurlAAbq5gAG63kABuucAAbrvAAG69wABuveAAbr4AAG6+IABuvkAAbr5wAG6+gABuvpAAbr7AAG6+0ABuvvAAbr8AAG6/MABuv2AAbr9wAG6/gABuv7AAbr/AAG7AEABuwaAAbsIwAG7CUABuwoAAbsMQAG7DQABuw3AAbsOQAG7IIABuymAAbszQAG7PEABuz0AAbs9gAG7PgABuz6AAbs/AAG7P4ABuz/AAbtAgAG7RsABu08AAbtPgAG7UAABu1CAAbtRAAG7UYABu1IAAbtSgAG7UwABu1tAAbtcAAG7XMABu12AAbteQAG7XwABu1/AAbtggAG7YUABu2HAAbuAgAG7gQABu4GAAbuCAAG7gsABu4MAAbuDQAG7g4ABu4PAAbuEQAG7hMABu4UAAbuFQAG7hcABu4YAAbukwAG7pUABu6XAAb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A7AAHARMABwE3AAcBOgAHATwABwE+AAcBQAAHAUIABwFEAAcBRQAHAUgABwFhAAcBggAHAYQABwGGAAcBiAAHAYoABwGMAAcBjgAHAZAABwGSAAcBswAHAbYABwG5AAcBvAAHAb8ABwHCAAcBxQAHAcgABwHLAAcBzQAHAkgABwJKAAcCTAAHAk4ABwJRAAcCUgAHAlMABwJUAAcCVQAHAlcABwJZAAcCWgAHAlsABwJdAAcCXgAHAtkABwLbAAcC3QAHAt8ABwLiAAcC4wAHAuQABwLlAAcC5gAHAugABwLqAAcC6wAHAuwABwLuAAcC7wAHA2oABwNsAAcDbwAHA3EABwN0AAcDdQAHA3YABwN3AAcDeAAHA3oABwN8AAcDfQAHA34ABwOAAAcDgQAHA5oABwObAAcDnAAHA54ABwQZAAcEGwAHBB0ABwQfAAcEIgAHBCMABwQkAAcEJQAHBCYABwQoAAcEKgAHBCsABwQsAAcELgAHBC8ABwSqAAcErAAHBK4ABwSwAAcEswAHBLQABwS1AAcEtgAHBLcABwS5AAcEuwAHBLwABwS9AAcEvwAHBMAABwU7AAcFPQAHBT8ABwVBAAcFRAAHBUUABwVGAAcFRwAHBUgABwVKAAcFTAAHBU0ABwVOAAcFUAAHBVEABwXMAAcFzgAHBdAABwXSAAcF1QAHBdYABwXXAAcF2AAHBdkABwXbAAcF3QAHBd4ABwXfAAcF4QAHBeIABwZdAAcGXwAHBmEABwZjAAcGZgAHBmcABwZoAAcGaQAHBmoABwZsAAcGbgAHBm8ABwZwAAcGcgAHBnMABwa8AAcG4AAHBwcABwcrAAcHLgAHBzEABwczAAcHNQAHBzcABwc5AAcHOgAHBz0ABwdWAAcHcwAHB3YABwd5AAcHfAAHB38ABweCAAcHhQAHB4gABwelAAcHqAAHB6sABweuAAcHsQAHB7QABwe3AAcHugAHB7wABwg3AAcIOQAHCDwABwg+AAcIQQAHCEIABwhDAAcIRAAHCEUABwhHAAcISgAHCEsABwhMAAcITgAHCE8ABwjKAAcIzAAHCM8ABwjRAAcI1AAHCNUABwjWAAcI1wAHCNgABwjaAAcI3QAHCN4ABwjfAAcI4QAHCOIABwldAAcJXwAHCWIABwlkAAcJZwAHCWgABwlpAAcJagAHCWsABwltAAc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cYAAHHGIABxxlAAccZgAHHGcABxxoAAccaQAHHGsABxxtAAccbgAHHG8ABxxxAAcccgAHHO0ABxzvAAcc8QAHHPMABxz2AAcc9wAHHPgABxz5AAcc+gAHHPwABxz+AAcc/wAHHQAABx0CAAcdAwAHHX4ABx2AAAcdggAHHYQABx2HAAcdiAAHHYkABx2KAAcdiwAHHY0ABx2PAAcdkAAHHZEABx2TAAcdlAAHHg8ABx4RAAceEwAHHhUABx4YAAceGQAHHhoABx4bAAceHAAHHh4ABx4gAAceIQAHHiIABx4kAAceJQAHHm4ABx6SAAceuQAHHt0ABx7gAAce4gAHHuQABx7mAAce6AAHHuoABx7rAAce7gAHHwcABx8kAAcfJgAHHygABx8qAAcfLAAHHy4ABx8wAAcfMgAHH08ABx9SAAcfVQAHH1gABx9bAAcfXgAHH2EABx9kAAcfZgAHH+EABx/jAAcf5QAHH+cABx/qAAcf6wAHH+wABx/tAAcf7gAHH/AABx/yAAcf8wAHH/QABx/2AAcf9wAHIHIAByB0AAcgdgAHIHgAByB7AAcgfAAHIH0AByB+AAcgfwAHIIEAByCDAAcghAAHIIUAByCHAAcgiAAHIQMAByEFAAchBwAHIQkAByEMAAchDQAHIQ4AByEPAAchEAAHIRIAByEUAAchFQAHIRYAByEYAAchGQAHIZQAByGWAAchmQAHIZsAByGeAAchnwAHIaAAByGhAAchogAHIaQAByGmAAchpwAHIagAByGqAAchqwAHIiYAByIoAAciKgAHIiwAByIvAAciMAAHIjEAByIyAAciMwAHIjUAByI3AAciOAAHIjkAByI7AAciPAAHIrcAByK5AAciuwAHIr0AByLAAAciwQAHIsIAByLDAAcixAAHIsYAByLIAAciyQAHIsoAByLMAAcizQAHI0gAByNKAAcjTAAHI04AByNRAAcjUgAHI1MAByNUAAcjVQAHI1cAByNZAAcjWgAHI1sAByNdAAcjXgAHI/EAByQUAAckNAAHJFQAByRWAAckWAAHJFoAByRcAAckXwAHJGAAByRhAAckZAAHJGUAByRnAAckaAAHJGoAByRtAAckbgAHJG8AByRyAAckcwAHJHgABySRAAckmgAHJJwABySeAAckpwAHJKoAByStAAckrwAHJPgAByUcAAclQwAHJWcAByVqAAclbAAHJW4AByVwAAclcgAHJXQAByV1AAcleAAHJZEAByWyAAcltAAHJbYAByW4AAclugAHJbwAByW+AAclwAAHJcIAByXjAAcl5gAHJekAByXsAAcl7wAHJfIAByX1AAcl+AAHJfsAByX9AAcmeAAHJnoAByZ8AAcmfgAHJoEAByaCAAcmgwAHJoQAByaFAAcmhwAHJokAByaKAAcmiwAHJo0AByaOAAcnCQAHJwsABycNAAcnDwAHJxIABycTAAcnFAAHJxUABycWAAcnGAAHJxoABycbAAcnHAAHJx4ABycfAAcnmgAHJ5wAByefAAcnoQAHJ6QAByelAAcnpgAHJ6cAByeoAAcnqgAHJ6wAByetAAcnrgAHJ7AAByexAAcnygAHJ8sAByfMAAcnzgAHKEkAByhLAAcoTQAHKE8AByhSAAcoUwAHKFQAByhVAAcoVgAHKFgAByhaAAcoWwAHKFwAByheAAcoXwAHKNoAByjcAAco3gAHKOAAByjjAAco5AAHKOUAByjmAAco5wAHKOkAByjrAAco7AAHKO0AByjvAAco8AAHKWsAByltAAcpbwAHKXEAByl0AAcpdQAHKXYAByl3AAcpeAAHKXoAByl8AAcpfQAHKX4ABymAAAcpgQAHKfwAByn+AAcqAAAHKgIAByoFAAcqBgAHKgcAByoIAAcqCQAHKgsAByoNAAcqDgAHKg8AByoRAAcqEgAHKo0AByqPAAcqkQAHKpMAByqWAAcqlwAHKpgAByqZAAcqmgAHKpwAByqeAAcqnwAHKqAAByqiAAcqowAHKuwABysQAAcrNwAHK1sAByteAAcrYAAHK2IABytkAAcrZgAHK2gABytpAAcrbAAHK4UAByuiAAcrpAAHK6YAByuoAAcrqgAHK6wAByuuAAcrsAAHK80AByvQAAcr0wAHK9YAByvZAAcr3AAHK98AByviAAcr5AAHLF8AByxhAAcsYwAHLGUAByxoAAcsaQAHLGoAByxrAAcsbAAHLG4AByxwAAcscQAHLHIAByx0AAcsdQAHLPAAByzyAAcs9AAHLPYAByz5AAcs+gAHLPsAByz8AAcs/QAHLP8ABy0BAActAgAHLQMABy0FAActBgAHLYEABy2DAActhQAHLYcABy2KAActiwAHLYwABy2NAActjgAHLZAABy2SAActkwAHLZQABy2WAActlwAHLhIABy4UAAcuFwAHLhkABy4cAAcuHQAHLh4ABy4fAAcuIAAHLiIABy4kAAcuJQAHLiYABy4oAAcuKQAHLqQABy6mAAcuqAAHLqoABy6tAAcurgAHLq8ABy6wAAcusQAHLrMABy61AAcutgAHLrcABy65AAcuugAHLzUABy83AAcvOQAHLzsABy8+AAcvPwAHL0AABy9BAAcvQgAHL0QABy9GAAcvRwAHL0gABy9KAAcvSwAHL8YABy/IAAcvygAHL8wABy/PAAcv0AAHL9EABy/SAAcv0wAHL9UABy/XAAcv2AAHL9kABy/bAAcv3AAHMG8ABzCSAAcwsgAHMNIABzDUAAcw1gAHMNgABzDaAAcw3QAHMN4ABzDfAAcw4gAHMOMABzDlAAcw5gAHMOgABzDrAAcw7AAHMO0ABzDwAAcw8QAHMPYABzEPAAcxGAAHMRoABzEcAAcxJQAHMSgABzErAAcxLQAHMXYABzGaAAcxwQAHMeUABzHoAAcx6gAHMewABzHuAAcx8AAHMfIABzHzAAcx9gAHMg8ABzIwAAcyMgAHMjQABzI2AAcyOAAHMjoABzI8AAcyPgAHMkAABzJhAAcyZAAHMmcABzJqAAcybQAHMnAABzJzAAcydgAHMnkABzJ7AAcy9gAHMvgABzL6AAcy/AAHMv8ABzMAAAczAQAHMwIABzMDAAczBQAHMwcABzMIAAczCQAHMwsABzMMAAczhwAHM4kABzOLAAczjQAHM5AABzORAAczkgAHM5MABzOUAAczlgAHM5gABzOZAAczmgAHM5wABzOdAAc0GAAHNBoABzQdAAc0HwAHNCIABzQjAAc0JAAHNCUABzQmAAc0KAAHNCoABzQrAAc0LAAHNC4ABzQvAAc0SAAHNEkABzRKAAc0TAAHNMcABzTJAAc0ywAHNM0ABzTQAAc00QAHNNIABzTTAAc01AAHNNYABzTYAAc02QAHNNoABzTcAAc03QAHNVgABzVaAAc1XAAHNV4ABzVhAAc1YgAHNWMABzVkAAc1ZQAHNWcABzVpAAc1agAHNWsABzVtAAc1bgAHNekABzXrAAc17QAHNe8ABzXyAAc18wAHNfQABzX1AAc19gAHNfgABzX6AAc1+wAHNfwABzX+AAc1/wAHNnoABzZ8AAc2fgAHNoAABzaDAAc2hAAHNoUABzaGAAc2hwAHNokABzaLAAc2jAAHNo0ABzaPAAc2kAAHNwsABzcNAAc3DwAHNxEABzcUAAc3FQAHNxYABzcXAAc3GAAHNxoABzccAAc3HQAHNx4ABzcgAAc3IQAHN2oABzeOAAc3tQAHN9kABzfcAAc33gAHN+AABzfiAAc35AAHN+YABzfnAAc36gAHOAMABzggAAc4IgAHOCQABzgmAAc4KAAHOCoABzgsAAc4LgAHOEsABzhOAAc4UQAHOFQABzhXAAc4WgAHOF0ABzhgAAc4YgAHON0ABzjfAAc44QAHOOMABzjmAAc45wAHOOgABzjpAAc46gAHOOwABzjuAAc47wAHOPAABzjyAAc48wAHOW4ABzlwAAc5cgAHOXQABzl3AAc5eAAHOXkABzl6AAc5ewAHOX0ABzl/AAc5gAAHOYEABzmDAAc5hAAHOf8ABzoBAAc6AwAHOgUABzoIAAc6CQAHOgoABzoLAAc6DAAHOg4ABzoQAAc6EQAHOhIABzoUAAc6FQAHOpAABzqSAAc6lQAHOpcABzqaAAc6mwAHOpwABzqdAAc6ngAHOqAABzqiAAc6owAHOqQABzqmAAc6pwAHOyIABzskAAc7JgAHOygABzsrAAc7LAAHOy0ABzsuAAc7LwAHOzEABzszAAc7NAAHOzUABzs3AAc7OAAHO7MABzu1AAc7twAHO7kABzu8AAc7vQAHO74ABzu/AAc7wAAHO8IABzvEAAc7xQAHO8YABzvIAAc7yQAHPEQABzxGAAc8SAAHPEoABzxNAAc8TgAHPE8ABzxQAAc8UQAHPFMABzxVAAc8VgAHPFcABzxZAAc8WgAHPO0ABz0QAAc9MAAHPVAABz1SAAc9VAAHPVYABz1YAAc9WwAHPVwABz1dAAc9YAAHPWEABz1jAAc9ZAAHPWYABz1pAAc9agAHPWsABz1uAAc9bwAHPXQABz2NAAc9lgAHPZgABz2aAAc9owAHPaYABz2pAAc9qwAHPfQABz4YAAc+PwAHPmMABz5mAAc+aAAHPmoABz5sAAc+bgAHPnAABz5xAAc+dAAHPo0ABz6uAAc+sAAHPrIABz60AAc+tgAHPrgABz66AAc+vAAHPr4ABz7fAAc+4gAHPuUABz7oAAc+6wAHPu4ABz7xAAc+9AAHPvcABz75AAc/dAAHP3YABz94AAc/egAHP30ABz9+AAc/fwAHP4AABz+BAAc/gwAHP4UABz+GAAc/hwAHP4kABz+KAAdABQAHQAcAB0AJAAdACwAHQA4AB0APAAdAEAAHQBEAB0ASAAdAFAAHQBYAB0AXAAdAGAAHQBoAB0AbAAdAlgAHQJgAB0CbAAdAnQAHQKAAB0ChAAdAogAHQKMAB0CkAAdApgAHQKgAB0CpAAdAqgAHQKwAB0CtAAdAxgAHQMcAB0DIAAdAygAHQUUAB0FHAAdBSQAHQUsAB0FOAAdBTwAHQVAAB0FRAAdBUgAHQVQAB0FWAAdBVwAHQVgAB0FaAAdBWwAHQdYAB0HYAAdB2gAHQdwAB0HfAAdB4AAHQeEAB0HiAAdB4wAHQeUAB0HnAAdB6AAHQekAB0HrAAdB7AAHQmcAB0JpAAdCawAHQm0AB0JwAAdCcQAHQnIAB0JzAAdCdAAHQnYAB0J4AAdCeQAHQnoAB0J8AAdCfQAHQvgAB0L6AAdC/AAHQv4AB0MBAAdDAgAHQwMAB0MEAAdDBQAHQwcAB0MJAAdDCgAHQwsAB0MNAAdDDgAHQ4kAB0OLAAdDjQAHQ48AB0OSAAdDkwAHQ5QAB0OVAAdDlgAHQ5gAB0OaAAdDmwAHQ5wAB0OeAAdDnwAHQ+gAB0QMAAdEMwAHRFcAB0RaAAdEXAAHRF4AB0RgAAdEYgAHRGQAB0RlAAdEaAAHRIEAB0SeAAdEoAAHRKIAB0SkAAdEpgAHRKgAB0SqAAdErAAHRMkAB0TMAAdEzwAHRNIAB0TVAAdE2AAHRNsAB0TeAAdE4AAHRVsAB0VdAAdFXwAHRWEAB0VkAAdFZQAHRWYAB0VnAAdFaAAHRWoAB0VsAAdFbQAHRW4AB0VwAAdFcQAHRewAB0XuAAdF8AAHRfIAB0X1AAdF9gAHRfcAB0X4AAdF+QAHRfsAB0X9AAdF/gAHRf8AB0YBAAdGAgAHRn0AB0Z/AAdGgQAHRoMAB0aGAAdGhwAHRogAB0aJAAdGigAHRowAB0aOAAdGjwAHRpAAB0aSAAdGkwAHRw4AB0cQAAdHEwAHRxUAB0cYAAdHGQAHRxoAB0cbAAdHHAAHRx4AB0cgAAdHIQAHRyIAB0ckAAdHJQAHR6AAB0eiAAdHpAAHR6YAB0epAAdHqgAHR6sAB0esAAdHrQAHR68AB0exAAdHsgAHR7MAB0e1AAdHtgAHSDEAB0gzAAdINQAHSDcAB0g6AAdIOwAHSDwAB0g9AAdIPgAHSEAAB0hCAAdIQwAHSEQAB0hGAAdIRwAHSMIAB0jEAAdIxgAHSMgAB0jLAAdIzAAHSM0AB0jOAAdIzwAHSNEAB0jTAAdI1AAHSNUAB0jXAAdI2AAHSWsAB0mOAAdJrgAHSc4AB0nQAAdJ0gAHSdQAB0nWAAdJ2QAHSdoAB0nbAAdJ3gAHSd8AB0nhAAdJ4gAHSeQAB0nnAAdJ6AAHSekAB0nsAAdJ7QAHSfIAB0oLAAdKFAAHShYAB0oYAAdKIQAHSiQAB0onAAdKKQAHSnIAB0qWAAdKvQAHSuEAB0rkAAdK5gAHSugAB0rqAAdK7AAHSu4AB0rvAAdK8gAHSwsAB0ssAAdLLgAHSzAAB0syAAdLNAAHSzYAB0s4AAdLOgAHSzwAB0tdAAdLYAAHS2MAB0tmAAdLaQAHS2wAB0tvAAdLcgAHS3UAB0t3AAdL8gAHS/QAB0v2AAdL+AAHS/sAB0v8AAdL/QAHS/4AB0v/AAdMAQAHTAMAB0wEAAdMBQAHTAcAB0wIAAdMgwAHTIUAB0yHAAdMiQAHTIwAB0yNAAdMjgAHTI8AB0yQAAdMkgAHTJQAB0yVAAdMlgAHTJgAB0yZAAdNFAAHTRYAB00ZAAdNGwAHTR4AB00fAAdNIAAHTSEAB00iAAdNJAAHTSYAB00nAAdNKAAHTSoAB00rAAdNRAAHTUUAB01GAAdNSAAHTcMAB03FAAdNxwAHTckAB03MAAdNzQAHTc4AB03PAAdN0AAHTdIAB03UAAdN1QAHTdYAB03YAAdN2QAHTlQAB05WAAdOWAAHTloAB05dAAdOXgAHTl8AB05gAAdOYQAHTmMAB05lAAdOZgAHTmcAB05pAAdOagAHTuUAB07nAAdO6QAHTusAB07uAAdO7wAHTvAAB07xAAdO8gAHTvQAB072AAdO9wAHTvgAB076AAdO+wAHT3YAB094AAdPegAHT3wAB09/AAdPgAAHT4EAB0+CAAdPgwAHT4UAB0+HAAdPiAAHT4kAB0+LAAdPjAAHUAcAB1AJAAdQCwAHUA0AB1AQAAdQEQAHUBIAB1ATAAdQFAAHUBYAB1AYAAdQGQAHUBoAB1AcAAdQHQAHUGYAB1CKAAdQsQAHUNUAB1DYAAdQ2gAHUNwAB1DeAAdQ4AAHUOIAB1DjAAdQ5gAHUP8AB1EcAAdRHgAHUSAAB1EiAAdRJAAHUSYAB1EoAAdRKgAHUUcAB1FKAAdRTQAHUVAAB1FTAAdRVgAHUVkAB1FcAAdRXgAHUdkAB1HbAAdR3QAHUd8AB1HiAAdR4wAHUeQAB1HlAAdR5gAHUegAB1HqAAdR6wAHUewAB1HuAAdR7wAHUmoAB1JsAAdSbgAHUnAAB1JzAAdSdAAHUnUAB1J2AAdSdwAHUnkAB1J7AAdSfAAHUn0AB1J/AAdSgAAHUvsAB1L9AAdTAAAHUwIAB1MFAAdTBgAHUwcAB1MIAAdTCQAHUwsAB1MNAAdTDgAHUw8AB1MRAAdTEgAHUxUAB1OQAAdTkgAHU5QAB1OWAAdTmQAHU5oAB1ObAAdTnAAHU50AB1OfAAdToQAHU6IAB1OjAAdTpQAHU6YAB1QhAAdUIwAHVCUAB1QnAAdUKgAHVCsAB1QsAAdULQAHVC4AB1QwAAdUMgAHVDMAB1Q0AAdUNgAHVDcAB1SyAAdUtAAHVLYAB1S4AAdUuwAHVLwAB1S9AAdUvgAHVL8AB1TBAAdUwwAHVMQAB1TFAAdUxwAHVMgAB1VDAAdVRQAHVUcAB1VJAAdVTAAHVU0AB1VOAAdVTwAHVVAAB1VSAAdVVAAHVVUAB1VWAAdVWAAHVVkAB1VqAAdVawAHVW0AB1V+AAdViwAHVY4AB1WRAAdVlAAHVZYAB1XPAAdV0gAHVdQAB1XXAAdV2gAHVd0AB1XgAAdWYwAHVocAB1arAAdWzgAHVvUAB1cVAAdXPAAHV2MAB1eDAAdXpwAHV8sAB1fNAAdX0AAHV9IAB1fUAAdX1gAHV9kAB1fcAAdX3gAHV+AAB1fjAAdX5QAHV+cAB1fqAAdX7QAHV+4AB1fzAAdYDAAHWBEAB1gTAAdYGAAHWBsAB1gdAAdYZgAHWIoAB1ixAAdY1QAHWNgAB1jaAAdY3AAHWN4AB1jgAAdY4gAHWOMAB1jmAAdY/wAHWSQAB1kmAAdZKAAHWSoAB1ksAAdZLgAHWTAAB1kyAAdZNAAHWTYAB1lbAAdZXgAHWWEAB1lkAAdZZwAHWWoAB1ltAAdZcAAHWXMAB1l2AAdZeAAHWfMAB1n1AAdZ+AAHWfoAB1n9AAdZ/gAHWf8AB1oAAAdaAQAHWgMAB1oFAAdaBgAHWgcAB1oJAAdaCgAHWhsAB1ocAAdaHgAHWpkAB1qbAAdanQAHWp8AB1qiAAdaowAHWqQAB1qlAAdapgAHWqgAB1qqAAdaqwAHWqwAB1quAAdarwAHWyoAB1ssAAdbLwAHWzEAB1s0AAdbNQAHWzYAB1s3AAdbOAAHWzoAB1s8AAdbPQAHWz4AB1tAAAdbQQAHW1IAB1tTAAdbVQAHW9AAB1vSAAdb1AAHW9YAB1vZAAdb2gAHW9sAB1vcAAdb3QAHW98AB1vhAAdb4gAHW+MAB1vlAAdb5gAHXGEAB1xjAAdcZgAHXGgAB1xrAAdcbAAHXG0AB1xuAAdcbwAHXHEAB1xzAAdcdAAHXHUAB1x3AAdceAAHXIkAB1yKAAdcjAAHXQcAB10JAAddCwAHXQ0AB10QAAddEQAHXRIAB10TAAddFAAHXRYAB10YAAddGQAHXRoAB10cAAddHQAHXZgAB12aAAddnQAHXZ8AB12iAAddowAHXaQAB12lAAddpgAHXagAB12qAAddqwAHXawAB12uAAddrwAHXcgAB13JAAddygAHXcwAB15HAAdeSQAHXksAB15NAAdeUAAHXlEAB15SAAdeUwAHXlQAB15WAAdeWAAHXlkAB15aAAdeXAAHXl0AB17YAAde2gAHXt0AB17fAAde4gAHXuMAB17kAAde5QAHXuYAB17oAAde6gAHXusAB17sAAde7gAHXu8AB18LAAdfJAAHXykAB18sAAdfMQAHXzQAB182AAdfSgAHX90AB2AAAAdgIAAHYEAAB2BCAAdgRAAHYEYAB2BIAAdgSwAHYEwAB2BNAAdgUAAHYFEAB2BTAAdgVAAHYFcAB2BaAAdgWwAHYFwAB2BfAAdgYAAHYGUAB2B+AAdghwAHYIkAB2CMAAdglQAHYJgAB2CbAAdgnQAHYOYAB2EKAAdhMQAHYVUAB2FYAAdhWgAHYVwAB2FeAAdhYAAHYWIAB2FjAAdhZgAHYX8AB2GgAAdhogAHYaQAB2GmAAdhqAAHYaoAB2GsAAdhrgAHYbAAB2HRAAdh1AAHYdcAB2HaAAdh3QAHYeAAB2HjAAdh5gAHYekAB2HrAAdiZgAHYmgAB2JqAAdibAAHYm8AB2JwAAdicQAHYnIAB2JzAAdidQAHYncAB2J4AAdieQAHYnsAB2J8AAdi9wAHYvkAB2L7AAdi/QAHYwAAB2MBAAdjAgAHYwMAB2MEAAdjBgAHYwgAB2MJAAdjCgAHYwwAB2MNAAdjiAAHY4oAB2ONAAdjjwAHY5IAB2OTAAdjlAAHY5UAB2OWAAdjmAAHY5oAB2ObAAdjnAAHY54AB2OfAAdjuAAHY7kAB2O6AAdjvAAHZDcAB2Q5AAdkOwAHZD0AB2RAAAdkQQAHZEIAB2RDAAdkRAAHZEYAB2RIAAdkSQAHZEoAB2RMAAdkTQAHZMgAB2TKAAdkzAAHZM4AB2TRAAdk0gAHZNMAB2TUAAdk1QAHZNcAB2TZAAdk2gAHZNsAB2TdAAdk3gAHZVkAB2VbAAdlXQAHZV8AB2ViAAdlYwAHZWQAB2VlAAdlZgAHZWgAB2VqAAdlawAHZWwAB2VuAAdlbwAHZeoAB2XsAAdl7gAHZfAAB2XzAAdl9AAHZfUAB2X2AAdl9wAHZfkAB2X7AAdl/AAHZf0AB2X/AAdmAAAHZnsAB2Z9AAdmfwAHZoEAB2aEAAdmhQAHZoYAB2aHAAdmiAAHZooAB2aMAAdmjQAHZo4AB2aQAAdmkQAHZtoAB2b+AAdnJQAHZ0kAB2dMAAdnTwAHZ1EAB2dTAAdnVQAHZ1cAB2dYAAdnWwAHZ3QAB2eRAAdnlAAHZ5cAB2eaAAdnnQAHZ6AAB2ejAAdnpgAHZ8MAB2fGAAdnyQAHZ8wAB2fPAAdn0gAHZ9UAB2fYAAdn2gAHaFUAB2hXAAdoWgAHaFwAB2hfAAdoYAAHaGEAB2hiAAdoYwAHaGUAB2hoAAdoaQAHaGoAB2hsAAdobQAHaOgAB2jqAAdo7QAHaO8AB2jyAAdo8wAHaPQAB2j1AAdo9gAHaPgAB2j7AAdo/AAHaP0AB2j/AAdpAAAHaXsAB2l9AAdpgAAHaYIAB2mFAAdphgAHaYcAB2mIAAdpiQAHaYsAB2mOAAdpjwAHaZAAB2mSAAdpkwAHag4AB2oQAAdqEwAHahUAB2oYAAdqGQAHahoAB2obAAdqHAAHah4AB2ohAAdqIgAHaiMAB2olAAdqJgAHaqkAB2rNAAdq8QAHaxQAB2s7AAdrWwAHa4IAB2upAAdryQAHa+0AB2wRAAdsEwAHbBYAB2wYAAdsGgAHbBwAB2wfAAdsIgAHbCQAB2wmAAdsKQAHbCsAB2wtAAdsMAAHbDMAB2w0AAdsOQAHbFIAB2xXAAdsWQAHbF4AB2xhAAdsYwAHbKwAB2zQAAds9wAHbRsAB20eAAdtIAAHbSIAB20kAAdtJgAHbSgAB20pAAdtLAAHbUUAB21qAAdtbAAHbW4AB21wAAdtcgAHbXQAB212AAdteAAHbXoAB218AAdtoQAHbaQAB22nAAdtqgAHba0AB22wAAdtswAHbbYAB225AAdtvAAHbb4AB245AAduOwAHbj4AB25AAAduQwAHbkQAB25FAAduRgAHbkcAB25JAAduSwAHbkwAB25NAAduTwAHblAAB25hAAduYgAHbmQAB27fAAdu4QAHbuMAB27lAAdu6AAHbukAB27qAAdu6wAHbuwAB27uAAdu8AAHbvEAB27yAAdu9AAHbvUAB29wAAdvcgAHb3UAB293AAdvegAHb3sAB298AAdvfQAHb34AB2+AAAdvggAHb4MAB2+EAAdvhgAHb4cAB2+YAAdvmQAHb5sAB3AWAAdwGAAHcBoAB3AcAAdwHwAHcCAAB3AhAAdwIgAHcCMAB3AlAAdwJwAHcCgAB3ApAAdwKwAHcCwAB3CnAAdwqQAHcKwAB3CuAAdwsQAHcLIAB3CzAAdwtAAHcLUAB3C3AAdwuQAHcLoAB3C7AAdwvQAHcL4AB3DPAAdw0AAHcNIAB3FNAAdxTwAHcVEAB3FTAAdxVgAHcVcAB3FYAAdxWQAHcVoAB3FcAAdxXgAHcV8AB3FgAAdxYgAHcWMAB3HeAAdx4AAHceMAB3HlAAdx6AAHcekAB3HqAAdx6wAHcewAB3HuAAdx8AAHcfEAB3HyAAdx9AAHcfUAB3IOAAdyDwAHchAAB3ISAAdyjQAHco8AB3KRAAdykwAHcpYAB3KXAAdymAAHcpkAB3KaAAdynAAHcp4AB3KfAAdyoAAHcqIAB3KjAAdzHgAHcyAAB3MjAAdzJQAHcygAB3MpAAdzKgAHcysAB3MsAAdzLgAHczAAB3MxAAdzMgAHczQAB3M1AAdzSQAHc2IAB3NnAAdzagAHc28AB3NyAAdzdAAHc4IAB3QVAAd0OAAHdFgAB3R4AAd0egAHdHwAB3R+AAd0gAAHdIMAB3SEAAd0hQAHdIgAB3SJAAd0iwAHdIwAB3SPAAd0kgAHdJMAB3SUAAd0lwAHdJgAB3ShAAd0ugAHdMMAB3TFAAd0yAAHdNEAB3TUAAd01wAHdNkAB3UiAAd1RgAHdW0AB3WRAAd1lAAHdZYAB3WYAAd1mgAHdZwAB3WeAAd1nwAHdaIAB3W7AAd13AAHdd4AB3XgAAd14gAHdeQAB3XmAAd16AAHdeoAB3XsAAd2DQAHdhAAB3YTAAd2FgAHdhkAB3YcAAd2HwAHdiIAB3YlAAd2JwAHdqIAB3akAAd2pgAHdqgAB3arAAd2rAAHdq0AB3auAAd2rwAHdrEAB3azAAd2tAAHdrUAB3a3AAd2uAAHdzMAB3c1AAd3NwAHdzkAB3c8AAd3PQAHdz4AB3c/AAd3QAAHd0IAB3dEAAd3RQAHd0YAB3dIAAd3SQAHd8QAB3fGAAd3yQAHd8sAB3fOAAd3zwAHd9AAB3fRAAd30gAHd9QAB3fWAAd31wAHd9gAB3faAAd32wAHd/QAB3f1AAd39gAHd/gAB3hzAAd4dQAHeHcAB3h5AAd4fAAHeH0AB3h+AAd4fwAHeIAAB3iCAAd4hAAHeIUAB3iGAAd4iAAHeIkAB3kEAAd5BgAHeQgAB3kKAAd5DQAHeQ4AB3kPAAd5EAAHeREAB3kTAAd5FQAHeRYAB3kXAAd5GQAHeRoAB3mVAAd5lwAHeZkAB3mbAAd5ngAHeZ8AB3mgAAd5oQAHeaIAB3mkAAd5pgAHeacAB3moAAd5qgAHeasAB3omAAd6KAAHeioAB3osAAd6LwAHejAAB3oxAAd6MgAHejMAB3o1AAd6NwAHejgAB3o5AAd6OwAHejwAB3q3AAd6uQAHersAB3q9AAd6wAAHesEAB3rCAAd6wwAHesQAB3rGAAd6yAAHeskAB3rKAAd6zAAHes0AB3sWAAd7OgAHe2EAB3uFAAd7iAAHe4sAB3uNAAd7jwAHe5EAB3uTAAd7lAAHe5cAB3uwAAd7zQAHe9AAB3vTAAd71gAHe9kAB3vcAAd73wAHe+IAB3v/AAd8AgAHfAUAB3wIAAd8CwAHfA4AB3wRAAd8FAAHfBYAB3yRAAd8kwAHfJYAB3yYAAd8mwAHfJwAB3ydAAd8ngAHfJ8AB3yhAAd8pAAHfKUAB3ymAAd8qAAHfKkAB30kAAd9JgAHfSkAB30rAAd9LgAHfS8AB30wAAd9MQAHfTIAB300AAd9NwAHfTgAB305AAd9OwAHfTwAB323AAd9uQAHfbwAB32+AAd9wQAHfcIAB33DAAd9xAAHfcUAB33HAAd9ygAHfcsAB33MAAd9zgAHfc8AB35KAAd+TAAHfk8AB35RAAd+VAAHflUAB35WAAd+VwAHflgAB35aAAd+XQAHfl4AB35fAAd+YQAHfmIAB37dAAd+3wAHfuEAB37jAAd+5gAHfucAB37oAAd+6QAHfuoAB37sAAd+7wAHfvAAB37xAAd+8wAHfvQAB39vAAd/cQAHf3MAB391AAd/eAAHf3kAB396AAd/ewAHf3wAB39+AAd/gQAHf4IAB3+DAAd/hQAHf4YAB4ABAAeAAwAHgAYAB4AIAAeACwAHgAwAB4ANAAeADgAHgA8AB4ARAAeAFAAHgBUAB4AWAAeAGAAHgBkAB4AqAAeALwAHgDIAB4A0AAeAbQAHgHAAB4ByAAeAdQAHgHgAB4B7AAeAfgAHgIMAB4CUAAeArQAHgL4AB4DXAAeA7gAHgQAAB4F7AAeBfQAHgX8AB4GBAAeBhAAHgYUAB4GGAAeBhwAHgYgAB4GKAAeBjQAHgY4AB4GPAAeBkQAHgZIAB4INAAeCDwAHghEAB4ITAAeCFgAHghcAB4IYAAeCGQAHghoAB4IcAAeCHwAHgiAAB4IhAAeCIwAHgiQAB4KfAAeCoQAHgqQAB4KmAAeCqQAHgqoAB4KrAAeCrAAHgq0AB4KvAAeCsgAHgrMAB4K0AAeCtgAHgrcAB4LIAAeCzQAHgtAAB4LSAAeC1wAHgxAAB4MTAAeDFQAHgxgAB4MbAAeDHgAHgyEAB4OkAAeDyAAHg+wAB4QPAAeENgAHhFYAB4R9AAeEpAAHhMQAB4ToAAeFDAAHhQ4AB4URAAeFEwAHhRUAB4UXAAeFGgAHhR0AB4UfAAeFIQAHhSQAB4UmAAeFKAAHhSsAB4UuAAeFLwAHhTQAB4VNAAeFUgAHhVQAB4VZAAeFXAAHhV4AB4WnAAeFywAHhfIAB4YWAAeGGQAHhhsAB4YdAAeGHwAHhiEAB4YjAAeGJAAHhicAB4ZAAAeGZQAHhmcAB4ZpAAeGawAHhm0AB4ZvAAeGcQAHhnMAB4Z1AAeGdwAHhpwAB4afAAeGogAHhqUAB4aoAAeGqwAHhq4AB4axAAeGtAAHhrcAB4a5AAeHNAAHhzYAB4c5AAeHOwAHhz4AB4c/AAeHQAAHh0EAB4dCAAeHRAAHh0YAB4dHAAeHSAAHh0oAB4dLAAeHXAAHh10AB4dfAAeH2gAHh9wAB4feAAeH4AAHh+MAB4fkAAeH5QAHh+YAB4fnAAeH6QAHh+sAB4fsAAeH7QAHh+8AB4fwAAeIawAHiG0AB4hwAAeIcgAHiHUAB4h2AAeIdwAHiHgAB4h5AAeIewAHiH0AB4h+AAeIfwAHiIEAB4iCAAeIkwAHiJQAB4iWAAeJEQAHiRMAB4kVAAeJFwAHiRoAB4kbAAeJHAAHiR0AB4keAAeJIAAHiSIAB4kjAAeJJAAHiSYAB4knAAeJogAHiaQAB4mnAAeJqQAHiawAB4mtAAeJrgAHia8AB4mwAAeJsgAHibQAB4m1AAeJtgAHibgAB4m5AAeJygAHicsAB4nNAAeKSAAHikoAB4pMAAeKTgAHilEAB4pSAAeKUwAHilQAB4pVAAeKVwAHilkAB4paAAeKWwAHil0AB4peAAeK2QAHitsAB4reAAeK4AAHiuMAB4rkAAeK5QAHiuYAB4rnAAeK6QAHiusAB4rsAAeK7QAHiu8AB4rwAAeLCQAHiwoAB4sLAAeLDQAHi4gAB4uKAAeLjAAHi44AB4uRAAeLkgAHi5MAB4uUAAeLlQAHi5cAB4uZAAeLmgAHi5sAB4udAAeLngAHjBkAB4wbAAeMHgAHjCAAB4wjAAeMJAAHjCUAB4wmAAeMJwAHjCkAB4wrAAeMLAAHjC0AB4wvAAeMMAAHjE0AB4xmAAeMawAHjG4AB4xzAAeMdgAHjHgAB4yNAAeNIAAHjUMAB41jAAeNgwAHjYUAB42HAAeNiQAHjYsAB42OAAeNjwAHjZAAB42TAAeNlAAHjZYAB42XAAeNmgAHjZ0AB42eAAeNnwAHjaIAB42jAAeNqAAHjcEAB43KAAeNzAAHjc8AB43YAAeN2wAHjd4AB43gAAeOKQAHjk0AB450AAeOmAAHjpsAB46dAAeOnwAHjqEAB46jAAeOpQAHjqYAB46pAAeOwgAHjuMAB47lAAeO5wAHjukAB47rAAeO7QAHju8AB47xAAeO8wAHjxQAB48XAAePGgAHjx0AB48gAAePIwAHjyYAB48pAAePLAAHjy4AB4+pAAePqwAHj60AB4+vAAePsgAHj7MAB4+0AAePtQAHj7YAB4+4AAePugAHj7sAB4+8AAePvgAHj78AB5A6AAeQPAAHkD4AB5BAAAeQQwAHkEQAB5BFAAeQRgAHkEcAB5BJAAeQSwAHkEwAB5BNAAeQTwAHkFAAB5DLAAeQzQAHkNAAB5DSAAeQ1QAHkNYAB5DXAAeQ2AAHkNkAB5DbAAeQ3QAHkN4AB5DfAAeQ4QAHkOIAB5D7AAeQ/AAHkP0AB5D/AAeRegAHkXwAB5F+AAeRgAAHkYMAB5GEAAeRhQAHkYYAB5GHAAeRiQAHkYsAB5GMAAeRjQAHkY8AB5GQAAeSCwAHkg0AB5IPAAeSEQAHkhQAB5IVAAeSFgAHkhcAB5IYAAeSGgAHkhwAB5IdAAeSHgAHkiAAB5IhAAeSnAAHkp4AB5KgAAeSogAHkqUAB5KmAAeSpwAHkqgAB5KpAAeSqwAHkq0AB5KuAAeSrwAHkrEAB5KyAAeTLQAHky8AB5MxAAeTMwAHkzYAB5M3AAeTOAAHkzkAB5M6AAeTPAAHkz4AB5M/AAeTQAAHk0IAB5NDAAeTvgAHk8AAB5PCAAeTxAAHk8cAB5PIAAeTyQAHk8oAB5PLAAeTzQAHk88AB5PQAAeT0QAHk9MAB5PUAAeUHQAHlEEAB5RoAAeUjAAHlI8AB5SSAAeUlAAHlJYAB5SYAAeUmgAHlJsAB5SeAAeUtwAHlNQAB5TXAAeU2gAHlN0AB5TgAAeU4wAHlOYAB5TpAAeVBgAHlQkAB5UMAAeVDwAHlRIAB5UVAAeVGAAHlRsAB5UdAAeVmAAHlZoAB5WdAAeVnwAHlaIAB5WjAAeVpAAHlaUAB5WmAAeVqAAHlasAB5WsAAeVrQAHla8AB5WwAAeWKwAHli0AB5YwAAeWMgAHljUAB5Y2AAeWNwAHljgAB5Y5AAeWOwAHlj4AB5Y/AAeWQAAHlkIAB5ZDAAeWvgAHlsAAB5bDAAeWxQAHlsgAB5bJAAeWygAHlssAB5bMAAeWzgAHltEAB5bSAAeW0wAHltUAB5bWAAeXUQAHl1MAB5dWAAeXWAAHl1sAB5dcAAeXXQAHl14AB5dfAAeXYQAHl2QAB5dlAAeXZgAHl2gAB5dpAAeX7AAHmBAAB5g0AAeYVwAHmH4AB5ieAAeYxQAHmOwAB5kMAAeZMAAHmVQAB5lWAAeZWQAHmVsAB5ldAAeZXwAHmWIAB5llAAeZZwAHmWkAB5lsAAeZbgAHmXAAB5lzAAeZdgAHmXcAB5l8AAeZlQAHmZoAB5mcAAeZoQAHmaQAB5mmAAeZ7wAHmhMAB5o6AAeaXgAHmmEAB5pjAAe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rqQAHq6sAB6uuAAerrwAHq7AAB6uxAAersgAHq7QAB6u3AAeruAAHq7kAB6u7AAervAAHrDcAB6w5AAesOwAHrD0AB6xAAAesQQAHrEIAB6xDAAesRAAHrEYAB6xJAAesSgAHrEsAB6xNAAesTgAHrMkAB6zLAAeszQAHrM8AB6zSAAes0wAHrNQAB6zVAAes1gAHrNgAB6zbAAes3AAHrN0AB6zfAAes4AAHrVsAB61dAAetYAAHrWIAB61lAAetZgAHrWcAB61oAAetaQAHrWsAB61uAAetbwAHrXAAB61yAAetcwAHrgYAB64pAAeuSQAHrmkAB65rAAeubQAHrm8AB65xAAeudAAHrnUAB652AAeueQAHrnoAB658AAeufQAHroAAB66DAAeuhAAHroUAB66IAAeuiQAHro4AB66nAAeusAAHrrIAB661AAeuvgAHrsEAB67EAAeuxgAHrw8AB68zAAevWgAHr34AB6+BAAevgwAHr4UAB6+HAAeviQAHr4sAB6+MAAevjwAHr6gAB6/JAAevywAHr80AB6/PAAev0QAHr9MAB6/VAAev1wAHr9kAB6/6AAev/QAHsAAAB7ADAAewBgAHsAkAB7AMAAewDwAHsBIAB7AUAAewjwAHsJEAB7CTAAewlQAHsJgAB7CZAAewmgAHsJsAB7CcAAewngAHsKAAB7ChAAewogAHsKQAB7ClAAexIAAHsSIAB7EkAAexJgAHsSkAB7EqAAexKwAHsSwAB7EtAAexLwAHsTEAB7EyAAexMwAHsTUAB7E2AAexsQAHsbMAB7G2AAexuAAHsbsAB7G8AAexvQAHsb4AB7G/AAexwQAHscMAB7HEAAexxQAHsccAB7HIAAex4QAHseIAB7HjAAex5QAHsmAAB7JiAAeyZAAHsmYAB7JpAAeyagAHsmsAB7JsAAeybQAHsm8AB7JxAAeycgAHsnMAB7J1AAeydgAHsvEAB7LzAAey9QAHsvcAB7L6AAey+wAHsvwAB7L9AAey/gAHswAAB7MCAAezAwAHswQAB7MGAAezBwAHs4IAB7OEAAezhgAHs4gAB7OLAAezjAAHs40AB7OOAAezjwAHs5EAB7OTAAezlAAHs5UAB7OXAAezmAAHtBMAB7QVAAe0FwAHtBkAB7QcAAe0HQAHtB4AB7QfAAe0IAAHtCIAB7QkAAe0JQAHtCYAB7QoAAe0KQAHtKQAB7SmAAe0qAAHtKoAB7StAAe0rgAHtK8AB7SwAAe0sQAHtLMAB7S1AAe0tgAHtLcAB7S5AAe0ugAHtQMAB7UnAAe1TgAHtXIAB7V1AAe1eAAHtXoAB7V8AAe1fgAHtYAAB7WBAAe1hAAHtZ0AB7W6AAe1vQAHtcAAB7XDAAe1xgAHtckAB7XMAAe1zwAHtewAB7XvAAe18gAHtfUAB7X4AAe1+wAHtf4AB7YBAAe2AwAHtn4AB7aAAAe2gwAHtoUAB7aIAAe2iQAHtooAB7aLAAe2jAAHto4AB7aRAAe2kgAHtpMAB7aVAAe2lgAHtxEAB7cTAAe3FgAHtxgAB7cbAAe3HAAHtx0AB7ceAAe3HwAHtyEAB7ckAAe3JQAHtyYAB7coAAe3KQAHtysAB7emAAe3qAAHt6sAB7etAAe3sAAHt7EAB7eyAAe3swAHt7QAB7e2AAe3uQAHt7oAB7e7AAe3vQAHt74AB7g5AAe4OwAHuD4AB7hAAAe4QwAHuEQAB7hFAAe4RgAHuEcAB7hJAAe4TAAHuE0AB7hOAAe4UAAHuFEAB7jMAAe4zgAHuNAAB7jSAAe41QAHuNYAB7jXAAe42AAHuNkAB7jbAAe43gAHuN8AB7jgAAe44gAHuOMAB7leAAe5YAAHuWIAB7lkAAe5ZwAHuWgAB7lpAAe5agAHuWsAB7ltAAe5cAAHuXEAB7lyAAe5dAAHuXUAB7nwAAe58gAHufUAB7n3AAe5+gAHufsAB7n8AAe5/QAHuf4AB7oAAAe6AwAHugQAB7oFAAe6BwAHuggAB7qbAAe6vgAHut4AB7r+AAe7AAAHuwIAB7sEAAe7BgAHuwkAB7sKAAe7CwAHuw4AB7sPAAe7EQAHuxIAB7sVAAe7GAAHuxkAB7saAAe7HQAHux4AB7sjAAe7PAAHu0UAB7tHAAe7SgAHu1MAB7tWAAe7WQAHu1sAB7ukAAe7yAAHu+8AB7wTAAe8FgAHvBgAB7waAAe8HAAHvB4AB7wgAAe8IQAHvCQAB7w9AAe8XgAHvGAAB7xiAAe8ZAAHvGYAB7xoAAe8agAHvGwAB7xuAAe8jwAHvJIAB7yVAAe8mAAHvJsAB7yeAAe8oQAHvKQAB7ynAAe8qQAHvSQAB70mAAe9KAAHvSoAB70tAAe9LgAHvS8AB70wAAe9MQAHvTMAB701AAe9NgAHvTcAB705AAe9OgAHvbUAB723AAe9uQAHvbsAB72+AAe9vwAHvcAAB73BAAe9wgAHvcQAB73GAAe9xwAHvcgAB73KAAe9ywAHvkYAB75IAAe+SwAHvk0AB75QAAe+UQAHvlIAB75TAAe+VAAHvlYAB75YAAe+WQAHvloAB75cAAe+XQAHvnYAB753AAe+eAAHvnoAB771AAe+9wAHvvkAB777AAe+/gAHvv8AB78AAAe/AQAHvwIAB78EAAe/BgAHvwcAB78IAAe/CgAHvwsAB7+GAAe/iAAHv4oAB7+MAAe/jwAHv5AAB7+RAAe/kgAHv5MAB7+VAAe/lwAHv5gAB7+ZAAe/mwAHv5wAB8AXAAfAGQAHwBsAB8AdAAfAIAAHwCEAB8AiAAfAIwAHwCQAB8AmAAfAKAAHwCkAB8AqAAfALAAHwC0AB8CoAAfAqgAHwKwAB8CuAAfAsQAHwLIAB8CzAAfAtAAHwLUAB8C3AAfAuQAHwLoAB8C7AAfAvQAHwL4AB8E5AAfBOwAHwT0AB8E/AAfBQgAHwUMAB8FEAAfBRQAHwUYAB8FIAAfBSgAHwUsAB8FMAAfBTgAHwU8AB8GYAAfBvAAHweMAB8IHAAfCCgAHwg0AB8IPAAfCEQAHwhMAB8IVAAfCFgAHwhkAB8IyAAfCTwAHwlIAB8JVAAfCWAAHwlsAB8JeAAfCYQAHwmQAB8KBAAfChAAHwocAB8KKAAfCjQAHwpAAB8KTAAfClgAHwpgAB8MTAAfDFQAHwxgAB8MaAAfDHQAHwx4AB8MfAAfDIAAHwyEAB8MjAAfDJgAHwycAB8MoAAfDKgAHwysAB8OmAAfDqAAHw6sAB8OtAAfDsAAHw7EAB8OyAAfDswAHw7QAB8O2AAfDuQAHw7oAB8O7AAfDvQAHw74AB8Q5AAfEOwAHxD4AB8RAAAfEQwAHxEQAB8RFAAfERgAHxEcAB8RJAAfETAAHxE0AB8ROAAfEUAAHxFEAB8TMAAfEzgAHxNEAB8TTAAfE1gAHxNcAB8TYAAfE2QAHxNoAB8TcAAfE3wAHxOAAB8ThAAfE4wAHxOQAB8VfAAfFYQAHxWMAB8VlAAfFaAAHxWkAB8VqAAfFawAHxWwAB8VuAAfFcQAHxXIAB8VzAAfFdQAHxXYAB8XxAAfF8wAHxfUAB8X3AAfF+gAHxfsAB8X8AAfF/QAHxf4AB8YAAAfGAwAHxgQAB8YFAAfGBwAHxggAB8aDAAfGhQAHxogAB8aKAAfGjQAHxo4AB8aPAAfGkAAHxpEAB8aTAAfGlgAHxpcAB8aYAAfGmgAHxpsAB8asAAfGsQAHxrQAB8a2AAfG7wAHxvIAB8b0AAfG9wAHxvoAB8b9AAfHAAAHxwUAB8eAAAfHggAHx4QAB8eGAAfHiQAHx4oAB8eLAAfHjAAHx40AB8ePAAfHkgAHx5MAB8eUAAfHlgAHx5cAB8gSAAfIFAAHyBYAB8gYAAfIGwAHyBwAB8gdAAfIHgAHyB8AB8ghAAfIJAAHyCUAB8gmAAfIKAAHyCkAB8ikAAfIpgAHyKkAB8irAAfIrgAHyK8AB8iwAAfIsQAHyLIAB8i0AAfItwAHyLgAB8i5AAfIuwAHyLwAB8jNAAfI0gAHyNUAB8jXAAfI3AAHyVcAB8lZAAfJWwAHyV0AB8lgAAfJYQAHyWIAB8ljAAfJZAAHyWYAB8lpAAfJagAHyWsAB8ltAAfJbgAHyekAB8nrAAfJ7QAHye8AB8nyAAfJ8wAHyfQAB8n1AAfJ9gAHyfgAB8n7AAfJ/AAHyf0AB8n/AAfKAAAHynsAB8p9AAfKgAAHyoIAB8qFAAfKhgAHyocAB8qIAAfKiQAHyosAB8qOAAfKjwAHypAAB8qSAAfKkwAHyqQAB8qlAAfKpwAHyrgAB8rBAAfKxAAHyscAB8rJAAfLRAAHy0YAB8tIAAfLSgAHy00AB8tOAAfLTwAHy1AAB8tRAAfLUwAHy1YAB8tXAAfLWAAHy1oAB8tbAAfL1gAHy9gAB8vaAAfL3AAHy98AB8vgAAfL4QAHy+IAB8vjAAfL5QAHy+gAB8vpAAfL6gAHy+wAB8vtAAfMaAAHzGoAB8xtAAfMbwAHzHIAB8xzAAfMdAAHzHUAB8x2AAfMeAAHzHsAB8x8AAfMfQAHzH8AB8yAAAfNEwAHzTYAB81WAAfNdgAHzXgAB816AAfNfAAHzX4AB82BAAfNggAHzYMAB82GAAfNhwAHzYkAB82KAAfNjQAHzZAAB82RAAfNkgAHzZUAB82WAAfNnwAHzbgAB83BAAfNwwAHzcYAB83PAAfN0gAHzdUAB83XAAfOIAAHzkQAB85rAAfOjwAHzpIAB86UAAfOlgAHzpgAB86aAAfOnAAHzp0AB86gAAfOuQAHztoAB87cAAfO3gAHzuAAB87iAAfO5AAHzuYAB87oAAfO6gAHzwsAB88OAAfPEQAHzxQAB88XAAfPGgAHzx0AB88gAAfPIwAHzyUAB8+gAAfPogAHz6QAB8+mAAfPqQAHz6oAB8+rAAfPrAAHz60AB8+vAAfPsQAHz7IAB8+zAAfPtQAHz7YAB9AxAAfQMwAH0DUAB9A3AAfQOgAH0DsAB9A8AAfQPQAH0D4AB9BAAAfQQgAH0EMAB9BEAAfQRgAH0EcAB9DCAAfQxAAH0McAB9DJAAfQzAAH0M0AB9DOAAfQzwAH0NAAB9DSAAfQ1AAH0NUAB9DWAAfQ2AAH0NkAB9DyAAfQ8wAH0PQAB9D2AAfRcQAH0XMAB9F1AAfRdwAH0XoAB9F7AAfRfAAH0X0AB9F+AAfRgAAH0YIAB9GDAAfRhAAH0YYAB9GHAAfSAgAH0gQAB9IGAAfSCAAH0gsAB9IMAAfSDQAH0g4AB9IPAAfSEQAH0hMAB9IUAAfSFQAH0hcAB9IYAAfSkwAH0pUAB9KXAAfSmQAH0pwAB9KdAAfSngAH0p8AB9KgAAfSogAH0qQAB9KlAAfSpgAH0qgAB9KpAAfTJAAH0yYAB9MoAAfTKgAH0y0AB9MuAAfTLwAH0zAAB9MxAAfTMwAH0zUAB9M2AAfTNwAH0zkAB9M6AAfTtQAH07cAB9O5AAfTuwAH074AB9O/AAfTwAAH08EAB9PCAAfTxAAH08YAB9PHAAfTyAAH08oAB9PLAAfUFAAH1DgAB9RfAAfUgwAH1IYAB9SJAAfUiwAH1I0AB9SPAAfUkQAH1JIAB9SVAAfUrgAH1MsAB9TOAAfU0QAH1NQAB9TXAAfU2gAH1N0AB9TgAAfU/QAH1QAAB9UDAAfVBgAH1QkAB9UMAAfVDwAH1RIAB9UUAAfVjwAH1ZEAB9WUAAfVlgAH1ZkAB9WaAAfVmwAH1ZwAB9WdAAfVnwAH1aIAB9WjAAfVpAAH1aYAB9WnAAfWIgAH1iQAB9YnAAfWKQAH1iwAB9YtAAfWLgAH1i8AB9YwAAfWMgAH1jUAB9Y2AAfWNwAH1jkAB9Y6AAfWtQAH1rcAB9a6AAfWvAAH1r8AB9bAAAfWwQAH1sIAB9bDAAfWxQAH1sgAB9bJAAfWygAH1swAB9bNAAfXSAAH10oAB9dNAAf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EEgAIBBUACAQWAAgEFwAIBBgACAQZAAgEGwAIBB0ACAQeAAgEHwAIBCEACAQiAAgEnQAIBJ8ACAShAAgEowAIBKYACASnAAgEqAAIBKkACASqAAgErAAIBK4ACASvAAgEsAAIBLIACASzAAgFLgAIBTAACAUzAAgFNQAIBTgACAU5AAgFOgAIBTsACAU8AAgFPgAIBUAACAVBAAgFQgAIBUQACAVFAAgFwAAIBcIACAXEAAgFxgAIBckACAXKAAgFywAIBcwACAXNAAgFzwAIBdEACAXSAAgF0wAIBdUACAXWAAgGUQAIBlMACAZVAAgGVwAIBloACAZbAAgGXAAIBl0ACAZeAAgGYAAIBmIACAZjAAgGZAAIBmYACAZnAAgG4gAIBuQACAbmAAgG6AAIBusACAbsAAgG7QAIBu4ACAbvAAgG8QAIBvMACAb0AAgG9QAIBvcACAb4AAgHiwAIB64ACAfOAAgH7gAIB/AACAfyAAgH9AAIB/YACAf5AAgH+gAIB/sACAf+AAgH/wAICAEACAgCAAgIBAAICAcACAgIAAgICQAICAwACAgNAAgIEgAICCsACAg0AAgINgAICDgACAhBAAgIRAAICEcACAhJAAgIkgAICLYACAjdAAgJAQAICQQACAkGAAgJCAAICQoACAkMAAgJDgAICQ8ACAkSAAgJKwAICUwACAlOAAgJUAAICVIACAlUAAgJVgAICVgACAlaAAgJXAAICX0ACAmAAAgJgwAICYYACAmJAAgJjAAICY8ACAmSAAgJlQAICZcACAoSAAgKFAAIChYACAoYAAgKGwAIChwACAodAAgKHgAICh8ACAohAAgKIwAICiQACAolAAgKJwAICigACAqjAAgKpQAICqcACAqpAAgKrAAICq0ACAquAAgKrwAICrAACAqyAAgKtAAICrUACAq2AAgKuAAICrkACAs0AAgLNgAICzkACAs7AAgLPgAICz8ACAtAAAgLQQAIC0IACAtEAAgLRgAIC0cACAtIAAgLSgAIC0sACAtkAAgLZQAIC2YACAtoAAgL4wAIC+UACAvnAAgL6QAIC+wACAvtAAgL7gAIC+8ACAvwAAgL8gAIC/QACAv1AAgL9gAIC/gACAv5AAgMdAAIDHYACAx4AAgMegAIDH0ACAx+AAgMfwAIDIAACAyBAAgMgwAIDIUACAyGAAgMhwAIDIkACAyKAAgNBQAIDQcACA0JAAgNCwAIDQ4ACA0PAAgNEAAIDREACA0SAAgNFAAIDRYACA0XAAgNGAAIDRoACA0bAAgNlgAIDZgACA2aAAgNnAAIDZ8ACA2gAAgNoQAIDaIACA2jAAgNpQAIDacACA2oAAgNqQAIDasACA2sAAgOJwAIDikACA4rAAgOLQAIDjAACA4xAAgOMgAIDjMACA40AAgONgAIDjgACA45AAgOOgAIDjwACA49AAgOhgAIDqoACA7RAAgO9QAIDvgACA76AAgO/AAIDv4ACA8AAAgPAgAIDwMACA8GAAgPHwAIDzwACA8+AAgPQAAID0IACA9EAAgPRgAID0gACA9KAAgPZwAID2oACA9tAAgPcAAID3MACA92AAgPeQAID3wACA9+AAgP+QAID/sACA/9AAgP/wAIEAIACBADAAgQBAAIEAUACBAGAAgQCAAIEAoACBALAAgQDAAIEA4ACBAPAAgQigAIEIwACBCOAAgQkAAIEJMACBCUAAgQlQAIEJYACBCXAAgQmQAIEJsACBCcAAgQnQAIEJ8ACBCgAAgRGwAIER0ACBEfAAgRIQAIESQACBElAAgRJgAIEScACBEoAAgRKgAIESwACBEtAAgRLgAIETAACBExAAgRrAAIEa4ACBGxAAgRswAIEbYACBG3AAgRuAAIEbkACBG6AAgRvAAIEb4ACBG/AAgRwAAIEcIACBHDAAgSPgAIEkAACBJCAAgSRAAIEkcACBJIAAgSSQAIEkoACBJLAAgSTQAIEk8ACBJQAAgSUQAIElMACBJUAAgSzwAIEtEACBLTAAgS1QAIEtgACBLZAAgS2gAIEtsACBLcAAgS3gAIEuAACBLhAAgS4gAIEuQACBLlAAgTYAAIE2IACBNkAAgTZgAIE2kACBNqAAgTawAIE2wACBNtAAgTbwAIE3EACBNyAAgTcwAIE3UACBN2AAgUCQAIFCwACBRMAAgUbAAIFG4ACBRwAAgUcgAIFHQACBR3AAgUeAAIFHkACBR8AAgUfQAIFH8ACBSAAAgUggAIFIUACBSGAAgUhwAIFIoACBSLAAgUkAAIFKkACBSyAAgUtAAIFLYACBS/AAgUwgAIFMUACBTHAAgVEAAIFTQACBVbAAgVfwAIFYIACBWEAAgVhgAIFYgACBWKAAgVjAAIFY0ACBWQAAgVqQAIFcoACBXMAAgVzgAIFdAACBXSAAgV1AAIFdYACBXYAAgV2gAIFfsACBX+AAgWAQAIFgQACBYHAAgWCgAIFg0ACBYQAAgWEwAIFhUACBaQAAgWkgAIFpQACBaWAAgWmQAIFpoACBabAAgWnAAIFp0ACBafAAgWoQAIFqIACBajAAgWpQAIFqYACBchAAgXIwAIFyUACBcnAAgXKgAIFysACBcsAAgXLQAIFy4ACBcwAAgXMgAIFzMACBc0AAgXNgAIFzcACBeyAAgXtAAIF7cACBe5AAgXvAAIF70ACBe+AAgXvwAIF8AACBfCAAgXxAAIF8UACBfGAAgXyAAIF8kACBfiAAgX4wAIF+QACBfmAAgYYQAIGGMACBhlAAgYZwAIGGoACBhrAAgYbAAIGG0ACBhuAAgYcAAIGHIACBhzAAgYdAAIGHYACBh3AAgY8gAIGPQACBj2AAgY+AAIGPsACBj8AAgY/QAIGP4ACBj/AAgZAQAIGQMACBkEAAgZBQAIGQcACBkIAAgZgwAIGYUACBmHAAgZiQAIGYwACBmNAAgZjgAIGY8ACBmQAAgZkgAIGZQACBmVAAgZlgAIGZgACBmZAAgaFAAIGhYACBoYAAgaGgAIGh0ACBoeAAgaHwAIGiAACBohAAgaIwAIGiUACBomAAgaJwAIGikACBoqAAgapQAIGqcACBqpAAgaqwAIGq4ACBqvAAgasAAIGrEACBqyAAgatAAIGrYACBq3AAgauAAIGroACBq7AAgbBAAIGygACBtPAAgbcwAIG3YACBt4AAgbegAIG3wACBt+AAgbgAAIG4EACBuEAAgbnQAIG7oACBu8AAgbvgAIG8AACBvCAAgbxAAIG8YACBvIAAgb5QAIG+gACBvrAAgb7gAIG/EACBv0AAgb9wAIG/oACBv8AAgcdwAIHHkACBx7AAgcfQAIHIAACByBAAgcggAIHIMACByEAAgchgAIHIgACByJAAgcigAIHIwACByNAAgdCAAIHQoACB0MAAgdDgAIHREACB0SAAgdEwAIHRQACB0VAAgdFwAIHRkACB0aAAgdGwAIHR0ACB0eAAgdmQAIHZsACB2dAAgdnwAIHaIACB2jAAgdpAAIHaUACB2mAAgdqAAIHaoACB2rAAgdrAAIHa4ACB2vAAgeKgAIHiwACB4vAAgeMQAIHjQACB41AAgeNgAIHjcACB44AAgeOgAIHjwACB49AAgePgAIHkAACB5BAAgevAAIHr4ACB7AAAgewgAIHsUACB7GAAgexwAIHsgACB7JAAgeywAIHs0ACB7OAAgezwAIHtEACB7SAAgfTQAIH08ACB9RAAgfUwAIH1YACB9XAAgfWAAIH1kACB9aAAgfXAAIH14ACB9fAAgfYAAIH2IACB9jAAgf3gAIH+AACB/iAAgf5AAIH+cACB/oAAgf6QAIH+oACB/rAAgf7QAIH+8ACB/wAAgf8QAIH/MACB/0AAgghwAIIKoACCDKAAgg6gAIIOwACCDuAAgg8AAIIPIACCD1AAgg9gAIIPcACCD6AAgg+wAIIP0ACCD+AAghAAAIIQMACCEEAAghBQAIIQgACCEJAAghDgAIIScACCEwAAghMgAIITQACCE9AAghQAAIIUMACCFFAAghjgAIIbIACCHZAAgh/QAIIgAACCICAAgiBAAIIgYACCIIAAgiCgAIIgsACCIOAAgiJwAIIkgACCJKAAgiTAAIIk4ACCJQAAgiUgAIIlQACCJWAAgiWAAIInkACCJ8AAgifwAIIoIACCKFAAgiiAAIIosACCKOAAgikQAIIpMACCMOAAgjEAAIIxIACCMUAAgjFwAIIxgACCMZAAgjGgAIIxsACCMdAAgjHwAIIyAACCMhAAgjIwAIIyQACCOfAAgjoQAII6MACCOlAAgjqAAII6kACCOqAAgjqwAII6wACCOuAAgjsAAII7EACCOyAAgjtAAII7UACCQwAAgkMgAIJDUACCQ3AAgkOgAIJDsACCQ8AAgkPQAIJD4ACCRAAAgkQgAIJEMACCREAAgkRgAIJEcACCRgAAgkYQAIJGIACCRkAAgk3wAIJOEACCTjAAgk5QAIJOgACCTpAAgk6gAIJOsACCTsAAgk7gAIJPAACCTxAAgk8gAIJPQACCT1AAglcAAIJXIACCV0AAgldgAIJXkACCV6AAglewAIJXwACCV9AAglfwAIJYEACCWCAAglgwAIJYUACCWGAAgmAQAIJgMACCYFAAgmBwAIJgoACCYLAAgmDAAIJg0ACCYOAAgmEAAIJhIACCYTAAgmFAAIJhYACCYXAAgmkgAIJpQACCaWAAgmmAAIJpsACCacAAgmnQAIJp4ACCafAAgmoQAIJqMACCakAAgmpQAIJqcACCaoAAgnIwAIJyUACCcnAAgnKQAIJywACCctAAgnLgAIJy8ACCcwAAgnMgAIJzQACCc1AAgnNgAIJzgACCc5AAgnggAIJ6YACCfNAAgn8QAIJ/QACCf2AAgn+AAIJ/oACCf8AAgn/gAIJ/8ACCgCAAgoGwAIKDgACCg6AAgoPAAIKD4ACChAAAgoQgAIKEQACChGAAgoYwAIKGYACChpAAgobAAIKG8ACChyAAgodQAIKHgACCh6AAgo9QAIKPcACCj5AAgo+wAIKP4ACCj/AAgpAAAIKQEACCkCAAgpBAAIKQYACCkHAAgpCAAIKQoACCkLAAgphgAIKYgACCmKAAgpjAAIKY8ACCmQAAgpkQAIKZIACCmTAAgplQAIKZcACCmYAAgpmQAIKZsACCmcAAgqFwAIKhkACCobAAgqHQAIKiAACCohAAgqIgAIKiMACCokAAgqJgAIKigACCopAAgqKgAIKiwACCotAAgqqAAIKqoACCqtAAgqrwAIKrIACCqzAAgqtAAIKrUACCq2AAgquAAIKroACCq7AAgqvAAIKr4ACCq/AAgrOgAIKzwACCs+AAgrQAAIK0MACCtEAAgrRQAIK0YACCtHAAgrSQAIK0sACCtMAAgrTQAIK08ACCtQAAgrywAIK80ACCvPAAgr0QAIK9QACCvVAAgr1gAIK9cACCvYAAgr2gAIK9wACCvdAAgr3gAIK+AACCvhAAgsXAAILF4ACCxgAAgsYgAILGUACCxmAAgsZwAILGgACCxpAAgsawAILG0ACCxuAAgsbwAILHEACCxyAAgsgwAILIQACCyGAAgtAQAILQMACC0FAAgtBwAILQoACC0LAAgtDAAILQ0ACC0OAAgtEAAILRMACC0UAAgtFQAILRcACC0YAAgtkwAILZUACC2XAAgtmQAILZwACC2dAAgtngAILZ8ACC2gAAgtogAILaUACC2mAAgtpwAILakACC2qAAguJQAILicACC4qAAguLAAILi8ACC4wAAguMQAILjIACC4zAAguNQAILjgACC45AAguOgAILjwACC49AAgu0AAILvMACC8TAAgvMwAILzUACC83AAgvOQAILzsACC8+AAgvPwAIL0AACC9DAAgvRAAIL0YACC9HAAgvSgAIL00ACC9OAAgvTwAIL1IACC9TAAgvWAAIL3EACC96AAgvfAAIL38ACC+IAAg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SowAIUqUACFKmAAhSpwAIUqkACFKqAAhTJQAIUycACFMqAAhTLAAIUy8ACFMwAAhTMQAIUzIACFMzAAhTNQAIUzcACFM4AAhTOQAIUzsACFM8AAhTYAAIU9sACFPdAAhT3wAIU+EACFPkAAhT5QAIU+YACFPnAAhT6AAIU+oACFPsAAhT7QAIU+4ACFPwAAhT8QAIVIQACFSnAAhUxwAIVOcACFTpAAhU6wAIVO0ACFTvAAhU8gAIVPMACFT0AAhU9wAIVPgACFT6AAhU+wAIVP4ACFUBAAhVAgAIVQMACFUGAAhVBwAIVQwACFUlAAhVLgAIVTAACFUzAAhVPAAIVT8ACFVCAAhVRAAIVY0ACFWxAAhV2AAIVfwACFX/AAhWAQAIVgMACFYFAAhWBwAIVgkACFYKAAhWDQAIViYACFZHAAhWSQAIVksACFZNAAhWTwAIVlEACFZTAAhWVQAIVlcACFZ4AAhWewAIVn4ACFaBAAhWhAAIVocACFaKAAhWjQAIVpAACFaSAAhXDQAIVw8ACFcRAAhXEwAIVxYACFcXAAhXGAAIVxkACFcaAAhXHAAIVx4ACFcfAAhXIAAIVyIACFcjAAhXngAIV6AACFeiAAhXpAAIV6cACFeoAAhXqQAIV6oACFerAAhXrQAIV68ACFewAAhXsQAIV7MACFe0AAhYLwAIWDEACFg0AAhYNgAIWDkACFg6AAhYOwAIWDwACFg9AAhYPwAIWEEACFhCAAhYQwAIWEUACFhGAAhYXwAIWGAACFhhAAhYYwAIWN4ACFjgAAhY4gAIWOQACFjnAAhY6AAIWOkACFjqAAhY6wAIWO0ACFjvAAhY8AAIWPEACFjzAAhY9AAIWW8ACFlxAAhZcwAIWXUACFl4AAhZeQAIWXoACFl7AAhZfAAIWX4ACFmAAAhZgQAIWYIACFmEAAhZhQAIWgAACFoCAAhaBAAIWgYACFoJAAhaCgAIWgsACFoMAAhaDQAIWg8ACFoRAAhaEgAIWhMACFoVAAhaFgAIWpEACFqTAAhalQAIWpcACFqaAAhamwAIWpwACFqdAAhangAIWqAACFqiAAhaowAIWqQACFqmAAhapwAIWyIACFskAAhbJgAIWygACFsrAAhbLAAIWy0ACFsuAAhbLwAIWzEACFszAAhbNAAIWzUACFs3AAhbOAAIW4EACFulAAhbzAAIW/AACFvzAAhb9gAIW/gACFv6AAhb/AAIW/4ACFv/AAhcAgAIXBsACFw4AAhcOwAIXD4ACFxBAAhcRAAIXEcACFxKAAhcTQAIXGoACFxtAAhccAAIXHMACFx2AAhceQAIXHwACFx/AAhcgQAIXPwACFz+AAhdAQAIXQMACF0GAAhdBwAIXQgACF0JAAhdCgAIXQwACF0PAAhdEAAIXREACF0TAAhdFAAIXY8ACF2RAAhdlAAIXZYACF2ZAAhdmgAIXZsACF2cAAhdnQAIXZ8ACF2iAAhdowAIXaQACF2mAAhdpwAIXiIACF4kAAheJwAIXikACF4sAAheLQAIXi4ACF4vAAheMAAIXjIACF41AAheNgAIXjcACF45AAheOgAIXrUACF63AAheugAIXrwACF6/AAhewAAIXsEACF7CAAhewwAIXsUACF7IAAheyQAIXsoACF7MAAhezQAIX1AACF90AAhfmAAIX7sACF/iAAhgAgAIYCkACGBQAAhgcAAIYJQACGC4AAhgugAIYL0ACGC/AAhgwQAIYMMACGDGAAhgyQAIYMsACGDNAAhg0AAIYNIACGDUAAhg1wAIYNoACGDbAAhg4AAIYPkACGD+AAhhAAAIYQUACGEIAAhhCgAIYVMACGF3AAhhngAIYcIACGHFAAhhxwAIYckACGHLAAhhzQAIYc8ACGHQAAhh0wAIYewACGIRAAhiEwAIYhUACGIXAAhiGQAIYhsACGIdAAhiHwAIYiEACGIjAAhiSAAIYksACGJOAAhiUQAIYlQACGJXAAhiWgAIYl0ACGJgAAhiYwAIYmUACGLgAAhi4gAIYuUACGLnAAhi6gAIYusACGLsAAhi7QAIYu4ACGLwAAhi8gAIYvMACGL0AAhi9gAIYvcACGMIAAhjCQAIYwsACGOGAAhjiAAIY4oACGOMAAhjjwAIY5AACGORAAhjkgAIY5MACGOVAAhjlwAIY5gACGOZAAhjmwAIY5wACGQXAAhkGQAIZBwACGQeAAhkIQAIZCIACGQjAAhkJAAIZCUACGQnAAhkKQAIZCoACGQrAAhkLQAIZC4ACGQ/AAhkQAAIZEIACGS9AAhkvwAIZMEACGTDAAhkxgAIZMcACGTIAAhkyQAIZMoACGTMAAhkzgAIZM8ACGTQAAhk0gAIZNMACGVOAAhlUAAIZVMACGVVAAhlWAAIZVkACGVaAAhlWwAIZVwACGVeAAhlYAAIZWEACGViAAhlZAAIZWUACGV2AAhldwAIZXkACGX0AAhl9gAIZfgACGX6AAhl/QAIZf4ACGX/AAhmAAAIZgEACGYDAAhmBQAIZgYACGYHAAhmCQAIZgoACGaFAAhmhwAIZooACGaMAAhmjwAIZpAACGaRAAhmkgAIZpMACGaVAAhmlwAIZpgACGaZAAhmmwAIZpwACGa1AAhmtgAIZrcACGa5AAhnNAAIZzYACGc4AAhnOgAIZz0ACGc+AAhnPwAIZ0AACGdBAAhnQwAIZ0UACGdGAAhnRwAIZ0kACGdKAAhnxQAIZ8cACGfKAAhnzAAIZ88ACGfQAAhn0QAIZ9IACGfTAAhn1QAIZ9cACGfYAAhn2QAIZ9sACGfcAAhn6AAIaAEACGgeAAhoIQAIaCQACGgnAAhoKgAIaC0ACGgwAAhoMwAIaFAACGhTAAhoVgAIaFkACGhcAAhoXwAIaGIACGhlAAhoZwAIaHYACGiIAAhooAAIaLcACGjQAAho1QAIaWgACGmLAAhpqwAIacsACGnNAAhpzwAIadEACGnTAAhp1gAIadcACGnYAAhp2wAIadwACGneAAhp3wAIaeEACGnkAAhp5QAIaeYACGnpAAhp6gAIae8ACGoIAAhqEQAIahMACGoVAAhqHgAIaiEACGokAAhqJgAIam8ACGqTAAhqugAIat4ACGrhAAhq4wAIauUACGrnAAhq6QAIausACGrsAAhq7wAIawgACGspAAhrKwAIay0ACGsvAAhrMQAIazMACGs1AAhrNwAIazkACGtaAAhrXQAIa2AACGtjAAhrZgAIa2kACGtsAAhrbwAIa3IACGt0AAhr7wAIa/EACGvzAAhr9QAIa/gACGv5AAhr+gAIa/sACGv8AAhr/gAIbAAACGwBAAhsAgAIbAQACGwFAAhsgAAIbIIACGyEAAhshgAIbIkACGyKAAhsiwAIbIwACGyNAAhsjwAIbJEACGySAAhskwAIbJUACGyWAAhtEQAIbRMACG0WAAhtGAAIbRsACG0cAAhtHQAIbR4ACG0fAAhtIQAIbSMACG0kAAhtJQAIbScACG0oAAhtQQAIbUIACG1DAAhtRQAIbcAACG3CAAhtxAAIbcYACG3JAAhtygAIbcsACG3MAAhtzQAIbc8ACG3RAAht0gAIbdMACG3VAAht1gAIblEACG5TAAhuVQAIblcACG5aAAhuWwAIblwACG5dAAhuXgAIbmAACG5iAAhuYwAIbmQACG5mAAhuZwAIbuIACG7kAAhu5gAIbugACG7rAAhu7AAIbu0ACG7uAAhu7wAIbvEACG7zAAhu9AAIbvUACG73AAhu+AAIb3MACG91AAhvdwAIb3kACG98AAhvfQAIb34ACG9/AAhvgAAIb4IACG+EAAhvhQAIb4YACG+IAAhviQAIcAQACHAGAAhwCAAIcAoACHANAAhwDgAIcA8ACHAQAAhwEQAIcBMACHAVAAhwFgAIcBcACHAZAAhwGgAIcGMACHCHAAhwrgAIcNIACHDVAAhw1wAIcNkACHDbAAhw3QAIcN8ACHDgAAhw4wAIcPwACHEZAAhxGwAIcR0ACHEfAAhxIQAIcSMACHElAAhxJwAIcUQACHFHAAhxSgAIcU0ACHFQAAhxUwAIcVYACHFZAAhxWwAIcdYACHHYAAhx2gAIcdwACHHfAAhx4AAIceEACHHiAAhx4wAIceUACHHnAAhx6AAIcekACHHrAAhx7AAIcmcACHJpAAhyawAIcm0ACHJwAAhycQAIcnIACHJzAAhydAAIcnYACHJ4AAhyeQAIcnoACHJ8AAhyfQAIcvgACHL6AAhy/AAIcv4ACHMBAAhzAgAIcwMACHMEAAhzBQAIcwcACHMJAAhzCgAIcwsACHMNAAhzDgAIc4kACHOLAAhzjgAIc5AACHOTAAhzlAAIc5UACHOWAAhzlwAIc5kACHObAAhznAAIc50ACHOfAAhzoAAIdBsACHQdAAh0HwAIdCEACHQkAAh0JQAIdCYACHQnAAh0KAAIdCoACHQsAAh0LQAIdC4ACHQwAAh0MQAIdKwACHSuAAh0sAAIdLIACHS1AAh0tgAIdLcACHS4AAh0uQAIdLsACHS9AAh0vgAIdL8ACHTBAAh0wgAIdT0ACHU/AAh1QQAIdUMACHVGAAh1RwAIdUgACHVJAAh1SgAIdUwACHVOAAh1TwAIdVAACHVSAAh1UwAIdeYACHYJAAh2KQAIdkkACHZLAAh2TQAIdk8ACHZRAAh2VAAIdlUACHZWAAh2WQAIdloACHZcAAh2XQAIdl8ACHZiAAh2YwAIdmQACHZnAAh2aAAIdm0ACHaGAAh2jwAIdpEACHaTAAh2nAAIdp8ACHaiAAh2pAAIdu0ACHcRAAh3OAAId1wACHdfAAh3YQAId2MACHdlAAh3ZwAId2kACHdqAAh3bQAId4YACHenAAh3qQAId6sACHetAAh3rwAId7EACHezAAh3tQAId7cACHfYAAh32wAId94ACHfhAAh35AAId+cACHfqAAh37QAId/AACHfyAAh4bQAIeG8ACHhxAAh4cwAIeHYACHh3AAh4eAAIeHkACHh6AAh4fAAIeH4ACHh/AAh4gAAIeIIACHiDAAh4/gAIeQAACHkCAAh5BAAIeQcACHkIAAh5CQAIeQoACHkLAAh5DQAIeQ8ACHkQAAh5EQAIeRMACHkUAAh5jwAIeZEACHmUAAh5lgAIeZkACHmaAAh5mwAIeZwACHmdAAh5nwAIeaEACHmiAAh5owAIeaUACHmmAAh5vwAIecAACHnBAAh5wwAIej4ACHpAAAh6QgAIekQACHpHAAh6SAAIekkACHpKAAh6SwAIek0ACHpPAAh6UAAIelEACHpTAAh6VAAIes8ACHrRAAh60wAIetUACHrYAAh62QAIetoACHrbAAh63AAIet4ACHrgAAh64QAIeuIACHrkAAh65QAIe2AACHtiAAh7ZAAIe2YACHtpAAh7agAIe2sACHtsAAh7bQAIe28ACHtxAAh7cgAIe3MACHt1AAh7dgAIe/EACHvzAAh79QAIe/cACHv6AAh7+wAIe/wACHv9AAh7/gAIfAAACHwCAAh8AwAIfAQACHwGAAh8BwAIfIIACHyEAAh8hgAIfIgACHyLAAh8jAAIfI0ACHyOAAh8jwAIfJEACHyTAAh8lAAIfJUACHyXAAh8mAAIfOEACH0FAAh9LAAIfVAACH1TAAh9VQAIfVcACH1ZAAh9WwAIfV0ACH1eAAh9YQAIfXoACH2XAAh9mQAIfZsACH2dAAh9nwAIfaEACH2jAAh9pQAIfcIACH3FAAh9yAAIfcsACH3OAAh90QAIfdQACH3XAAh92QAIflQACH5WAAh+WAAIfloACH5dAAh+XgAIfl8ACH5gAAh+YQAIfmMACH5lAAh+ZgAIfmcACH5pAAh+agAIfuUACH7nAAh+6QAIfusACH7uAAh+7wAIfvAACH7xAAh+8gAIfvQACH72AAh+9wAIfvgACH76AAh++wAIf3YACH94AAh/egAIf3wACH9/AAh/gAAIf4EACH+CAAh/gwAIf4UACH+HAAh/iAAIf4kACH+LAAh/jAAIgAcACIAJAAiACwAIgA0ACIAQAAiAEQAIgBIACIATAAiAFAAIgBYACIAYAAiAGQAIgBoACIAcAAiAHQAIgJgACICaAAiAnAAIgJ4ACIChAAiAogAIgKMACICkAAiApQAIgKcACICpAAiAqgAIgKsACICtAAiArgAIgSkACIErAAiBLgAIgTAACIEzAAiBNAAIgTUACIE2AAiBNwAIgTkACIE7AAiBPAAIgT0ACIE/AAiBQAAIgU8ACIHKAAiBzAAIgc4ACIHQAAiB0wAIgdQACIHVAAiB1gAIgdcACIHZAAiB2wAIgdwACIHdAAiB3wAIgeAACIJzAAiClgAIgrYACILWAAiC2AAIgtoACILcAAiC3gAIguEACILiAAiC4wAIguYACILnAAiC6QAIguoACILsAAiC7wAIgvAACILxAAiC9AAIgvUACIL6AAiDEwAIgxwACIMeAAiDIAAIgykACIMsAAiDLwAIgzEACIN6AAiDngAIg8UACIPpAAiD7AAIg+4ACIPwAAiD8gAIg/QACIP2AAiD9wAIg/oACIQTAAiENAAIhDYACIQ4AAiEOgAIhDwACIQ+AAiEQAAIhEIACIREAAiEZQAIhGgACIRrAAiEbgAIhHEACIR0AAiEdwAIhHoACIR9AAiEfwAIhPoACIT8AAiE/gAIhQAACIUDAAiFBAAIhQUACIUGAAiFBwAIhQkACIULAAiFDAAIhQ0ACIUPAAiFEAAIhYsACIWNAAiFjwAIhZEACIWUAAiFlQAIhZYACIWXAAiFmAAIhZoACIWcAAiFnQAIhZ4ACIWgAAiFoQAIhhwACIYeAAiGIQAIhiMACIYmAAiGJwAIhigACIYpAAiGKgAIhiwACIYuAAiGLwAIhjAACIYyAAiGMwAIhkwACIZNAAiGTgAIhlAACIbLAAiGzQAIhs8ACIbRAAiG1AAIhtUACIbWAAiG1wAIhtgACIbaAAiG3AAIht0ACIbeAAiG4AAIhuEACIdcAAiHXgAIh2AACIdiAAiHZQAIh2YACIdnAAiHaAAIh2kACIdrAAiHbQAIh24ACIdvAAiHcQAIh3IACIftAAiH7wAIh/EACIfzAAiH9gAIh/cACIf4AAiH+QAIh/oACIf8AAiH/gAIh/8ACIgAAAiIAgAIiAMACIh+AAiIgAAIiIIACIiEAAiIhwAIiIgACIiJAAiIigAIiIsACIiNAAiIjwAIiJAACIiRAAiIkwAIiJQACIkPAAiJEQAIiRMACIkVAAiJGAAIiRkACIkaAAiJGwAIiRwACIkeAAiJIAAIiSEACIkiAAiJJAAIiSUACIluAAiJkgAIibkACIndAAiJ4AAIieIACInkAAiJ5gAIiegACInqAAiJ6wAIie4ACIoHAAiKJAAIiiYACIooAAiKKgAIiiwACIouAAiKMAAIijIACIpPAAiKUgAIilUACIpYAAiKWwAIil4ACIphAAiKZAAIimYACIrhAAiK4wAIiuUACIrnAAiK6gAIiusACIrsAAiK7QAIiu4ACIrwAAiK8gAIivMACIr0AAiK9gAIivcACItyAAiLdAAIi3YACIt4AAiLewAIi3wACIt9AAiLfgAIi38ACIuBAAiLgwAIi4QACIuFAAiLhwAIi4gACIwDAAiMBQAIjAcACIwJAAiMDAAIjA0ACIwOAAiMDwAIjBAACIwSAAiMFAAIjBUACIwWAAiMGAAIjBkACIyUAAiMlgAIjJkACIybAAiMngAIjJ8ACIygAAiMoQAIjKIACIykAAiMpgAIjKcACIyoAAiMqgAIjKsACI0mAAiNKAAIjSoACI0sAAiNLwAIjTAACI0xAAiNMgAIjTMACI01AAiNNwAIjTgACI05AAiNOwAIjTwACI23AAiNuQAIjbsACI29AAiNwAAIjcEACI3CAAiNwwAIjcQACI3GAAiNyAAIjckACI3KAAiNzAAIjc0ACI5IAAiOSgAIjkwACI5OAAiOUQAIjlIACI5TAAiOVAAIjlUACI5XAAiOWQAIjloACI5bAAiOXQAIjl4ACI7xAAiPFAAIjzQACI9UAAiPVgAIj1gACI9aAAiPXAAIj18ACI9gAAiPYQAIj2QACI9lAAiPZwAIj2gACI9rAAiPbgAIj28ACI9wAAiPcwAIj3QACI95AAiPkgAIj5sACI+dAAiPoAAIj6kACI+sAAiPrwAIj7EACI/6AAiQHgAIkEUACJBpAAiQbAAIkG4ACJBwAAiQcgAIkHQACJB2AAiQdwAIkHoACJCTAAiQtAAIkLYACJC4AAiQugAIkLwACJC+AAiQwAAIkMIACJDEAAiQ5QAIkOgACJDrAAiQ7gAIkPEACJD0AAiQ9wAIkPoACJD9AAiQ/wAIkXoACJF8AAiRfgAIkYAACJGDAAiRhAAIkYUACJGGAAiRhwAIkYkACJGLAAiRjAAIkY0ACJGPAAiRkAAIkgsACJINAAiSDwAIkhEACJIUAAiSFQAIkhYACJIXAAiSGAAIkhoACJIcAAiSHQAIkh4ACJIgAAiSIQAIkpwACJKeAAiSoQAIkqMACJKmAAiSpwAIkqgACJKpAAiSqgAIkqwACJKuAAiSrwAIkrAACJKyAAiSswAIkswACJLNAAiSzgAIktAACJNLAAiTTQAIk08ACJNRAAiTVAAIk1UACJNWAAiTVwAIk1gACJNaAAiTXAAIk10ACJNeAAiTYAAIk2EACJPcAAiT3gAIk+AACJPiAAiT5QAIk+YACJPnAAiT6AAIk+kACJPrAAiT7QAIk+4ACJPvAAiT8QAIk/IACJRtAAiUbwAIlHEACJRzAAiUdgAIlHcACJR4AAiUeQAIlHoACJR8AAiUfgAIlH8ACJSAAAiUggAIlIMACJT+AAiVAAAIlQIACJUEAAiVBwAIlQgACJUJAAiVCgAIlQsACJUNAAiVDwAIlRAACJURAAiVEwAIlRQACJWPAAiVkQAIlZMACJWVAAiVmAAIlZkACJWaAAiVmwAIlZwACJWeAAiVoAAIlaEACJWiAAiVpAAIlaUACJXuAAiWEgAIljkACJZdAAiWYAAIlmMACJZlAAiWZwAIlmkACJZrAAiWbAAIlm8ACJaIAAiWpQAIlqgACJarAAiWrgAIlrEACJa0AAiWtwAIlroACJbXAAiW2gAIlt0ACJbgAAiW4wAIluYACJbpAAiW7AAIlu4ACJdpAAiXawAIl24ACJdwAAiXcwAIl3QACJd1AAiXdgAIl3cACJd5AAiXfAAIl30ACJd+AAiXgAAIl4EACJf8AAiX/gAImAEACJgDAAiYBgAImAcACJgIAAiYCQAImAoACJgMAAiYDwAImBAACJgRAAiYEwAImBQACJiPAAiYkQAImJQACJiWAAiYmQAImJoACJibAAiYnAAImJ0ACJifAAiYogAImKMACJikAAiYpgAImKcACJkiAAiZJAAImScACJkpAAiZLAAImS0ACJkuAAiZLwAImTAACJkyAAiZNQAImTYACJk3AAiZOQAImToACJm1AAiZtwAImbkACJm7AAiZvgAImb8ACJnAAAiZwQAImcIACJnEAAiZxwAImcgACJnJAAiZywAImcwACJpHAAiaSQAImksACJpNAAiaUAAImlEACJpSAAiaUwAImlQACJpWAAiaWQAImloACJpbAAiaXQAIml4ACJrZAAia2wAImt4ACJrgAAia4wAImuQACJrlAAia5gAImucACJrpAAia7AAImu0ACJruAAia8AAImvEACJuEAAibpwAIm8cACJvnAAib6QAIm+sACJvtAAib7wAIm/IACJvzAAib9AAIm/cACJv4AAib+gAIm/sACJv+AAicAQAInAIACJwDAAicBgAInAcACJwMAAicJQAInC4ACJwwAAicMwAInDwACJw/AAicQgAInEQACJyNAAicsQAInNgACJz8AAic/wAInQEACJ0DAAidBQAInQcACJ0JAAidCgAInQ0ACJ0mAAidRwAInUkACJ1LAAidTQAInU8ACJ1RAAidUwAInVUACJ1XAAideAAInXsACJ1+AAidgQAInYQACJ2HAAidigAInY0ACJ2QAAidkgAIng0ACJ4PAAieEQAInhMACJ4WAAieFwAInhgACJ4ZAAieGgAInhwACJ4eAAieHwAIniAACJ4iAAieIwAInp4ACJ6gAAieogAInqQACJ6nAAieqAAInqkACJ6qAAieqwAInq0ACJ6vAAiesAAInrEACJ6zAAietAAIny8ACJ8xAAifNAAInzYACJ85AAifOgAInzsACJ88AAifPQAInz8ACJ9BAAifQgAIn0MACJ9FAAifRgAIn18ACJ9gAAifYQAIn2MACJ/eAAif4AAIn+IACJ/kAAif5wAIn+gACJ/pAAif6gAIn+sACJ/tAAif7wAIn/AACJ/xAAif8wAIn/QACKBvAAigcQAIoHMACKB1AAigeAAIoHkACKB6AAigewAIoHwACKB+AAiggAAIoIEACKCCAAighAAIoIUACKEAAAihAgAIoQQACKEGAAihCQAIoQoACKELAAihDAAIoQ0ACKEPAAihEQAIoRIACKETAAihFQAIoRYACKGRAAihkwAIoZUACKGXAAihmgAIoZsACKGcAAihnQAIoZ4ACKGgAAihogAIoaMACKGkAAihpgAIoacACKIiAAiiJAAIoiYACKIoAAiiKwAIoiwACKItAAiiLgAIoi8ACKIxAAiiMwAIojQACKI1AAiiNwAIojgACKKBAAiipQAIoswACKLwAAii8wAIovYACKL4AAii+gAIovwACKL+AAii/wAIowIACKMbAAijOAAIozsACKM+AAijQQAIo0QACKNHAAijSgAIo00ACKNqAAijbQAIo3AACKNzAAijdgAIo3kACKN8AAijfwAIo4EACKP8AAij/gAIpAEACKQDAAikBgAIpAcACKQIAAikCQAIpAoACKQMAAikDwAIpBAACKQRAAikEwAIpBQACKSPAAikkQAIpJQACKSWAAikmQAIpJoACKSbAAiknAAIpJ0ACKSfAAikogAIpKMACKSkAAikpgAIpKcACKUiAAilJAAIpScACKUpAAilLAAIpS0ACKUuAAilLwAIpTAACKUyAAilNQAIpTYACKU3AAilOQAIpToACKW1AAiltwAIpboACKW8AAilvwAIpcAACKXBAAilwgAIpcMACKXFAAilyAAIpckACKXKAAilzAAIpc0ACKZIAAimSgAIpkwACKZOAAimUQAIplIACKZTAAimVAAIplUACKZXAAimWgAIplsACKZcAAimXgAIpl8ACKbaAAim3AAIpt4ACKbgAAim4wAIpuQACKblAAim5gAIpucACKbpAAim7AAIpu0ACKbuAAim8AAIpvEACKdsAAinbgAIp3EACKdzAAindgAIp3cACKd4AAineQAIp3oACKd8AAinfwAIp4AACKeBAAingwAIp4QACKgXAAioOgAIqFoACKh6AAiofAAIqH4ACKiAAAioggAIqIUACKiGAAiohwAIqIoACKiLAAiojQAIqI4ACKiRAAiolAAIqJUACKiWAAiomQAIqJoACKifAAiouAAIqMEACKjDAAioxgAIqM8ACKjSAAio1QAIqNcACKkgAAipRAAIqWsACKmPAAipkgAIqZQACKmWAAipmAAIqZoACKmcAAipnQAIqaAACKm5AAip2gAIqdwACKneAAip4AAIqeIACKnkAAip5gAIqegACKnqAAiqCwAIqg4ACKoRAAiqFAAIqhcACKoaAAiqHQAIqiAACKojAAiqJQAIqqAACKqiAAiqpAAIqqYACKqpAAiqqgAIqqsACKqsAAiqrQAIqq8ACKqxAAiqsgAIqrMACKq1AAiqtgAIqzEACKszAAirNQAIqzcACKs6AAirOwAIqzwACKs9AAirPgAIq0AACKtCAAirQwAIq0QACKtGAAirRwAIq8IACKvEAAirxwAIq8kACKvMAAirzQAIq84ACKvPAAir0AAIq9IACKvUAAir1QAIq9YACKvYAAir2QAIq/IACKvzAAir9AAIq/YACKxxAAiscwAIrHUACKx3AAisegAIrHsACKx8AAisfQAIrH4ACKyAAAisggAIrIMACKyEAAishgAIrIcACK0CAAitBAAIrQYACK0IAAitCwAIrQwACK0NAAitDgAIrQ8ACK0RAAitEwAIrRQACK0VAAitFwAIrRgACK2TAAitlQAIrZcACK2ZAAitnAAIrZ0ACK2eAAitnwAIraAACK2iAAitpAAIraUACK2mAAitqAAIrakACK4kAAiuJgAIrigACK4qAAiuLQAIri4ACK4vAAiuMAAIrjEACK4zAAiuNQAIrjYACK43AAiuOQAIrjoACK61AAiutwAIrrkACK67AAiuvgAIrr8ACK7AAAiuwQAIrsIACK7EAAiuxgAIrscACK7IAAiuygAIrssACK8UAAivOAAIr18ACK+DAAivhgAIr4kACK+LAAivjQAIr48ACK+RAAivkgAIr5UACK+uAAivywAIr84ACK/RAAiv1AAIr9cACK/aAAiv3QAIr+AACK/9AAiwAAAIsAMACLAGAAiwCQAIsAwACLAPAAiwEgAIsBQACLCPAAiwkQAIsJQACLCWAAiwmQAIsJoACLCbAAiwnAAIsJ0ACLCfAAiwogAIsKMACLCkAAiwpgAIsKcACLEiAAixJAAIsScACLEpAAixLAAIsS0ACLEuAAixLwAIsTAACLEyAAixNQAIsTYACLE3AAixOQAIsToACLG1AAixtwAIsboACLG8AAixvwAIscAACLHBAAixwgAIscMACLHFAAixyAAIsckACLHKAAixzAAIsc0ACLJIAAiySgAIsk0ACLJPAAiyUgAIslMACLJUAAiyVQAIslYACLJYAAiyWwAIslwACLJdAAiyXwAIsmAACLLbAAiy3QAIst8ACLLhAAiy5AAIsuUACLLmAAiy5wAIsugACLLqAAiy7QAIsu4ACLLvAAiy8QAIsvIACLNtAAizbwAIs3EACLNzAAizdgAIs3cACLN4AAizeQAIs3oACLN8AAizfwAIs4AACLOBAAizgwAIs4QACLP/AAi0AQAItAQACLQGAAi0CQAItAoACLQLAAi0DAAItA0ACLQPAAi0EgAItBMACLQUAAi0FgAItBcACLSqAAi0zQAItO0ACLUNAAi1DwAItREACLUTAAi1FQAItRgACLUZAAi1GgAItR0ACLUeAAi1IAAItSEACLUjAAi1JgAItScACLUoAAi1KwAItSwACLUxAAi1SgAItVMACLVVAAi1VwAItWAACLVjAAi1ZgAItWgACLWxAAi11QAItfwACLYgAAi2IwAItiUACLYnAAi2KQAItisACLYtAAi2LgAItjEACLZKAAi2awAItm0ACLZvAAi2cQAItnMACLZ1AAi2dwAItnkACLZ7AAi2nAAItp8ACLaiAAi2pQAItqgACLarAAi2rgAItrEACLa0AAi2tgAItzEACLczAAi3NQAItzcACLc6AAi3OwAItzwACLc9AAi3PgAIt0AACLdCAAi3QwAIt0QACLdGAAi3RwAIt8IACLfEAAi3xgAIt8gACLfLAAi3zAAIt80ACLfOAAi3zwAIt9EACLfTAAi31AAIt9UACLfXAAi32AAIuFMACLhVAAi4WAAIuFoACLhdAAi4XgAIuF8ACLhgAAi4YQAIuGMACLhlAAi4ZgAIuGcACLhpAAi4agAIuIMACLiEAAi4hQAIuIcACLkCAAi5BAAIuQYACLkIAAi5CwAIuQwACLkNAAi5DgAIuQ8ACLkRAAi5EwAIuRQACLkVAAi5FwAIuRgACLmTAAi5lQAIuZcACLmZAAi5nAAIuZ0ACLmeAAi5nwAIuaAACLmiAAi5pAAIuaUACLmmAAi5qAAIuakACLokAAi6JgAIuigACLoqAAi6LQAIui4ACLovAAi6MAAIujEACLozAAi6NQAIujYACLo3AAi6OQAIujoACLq1AAi6twAIurkACLq7AAi6vgAIur8ACLrAAAi6wQAIusIACLrEAAi6xgAIuscACLrIAAi6ygAIussACLtGAAi7SAAIu0oACLtMAAi7TwAIu1AACLtRAAi7UgAIu1MACLtVAAi7VwAIu1gACLtZAAi7WwAIu1wACLulAAi7yQAIu/AACLwUAAi8FwAIvBkACLwbAAi8HQAIvB8ACLwhAAi8IgAIvCUACLw+AAi8WwAIvF0ACLxfAAi8YQAIvGMACLxlAAi8ZwAIvGkACLyGAAi8iQAIvIwACLyPAAi8kgAIvJUACLyYAAi8mwAIvJ0ACL0YAAi9GgAIvRwACL0eAAi9IQAIvSIACL0jAAi9JAAIvSUACL0nAAi9KQAIvSoACL0rAAi9LQAIvS4ACL2pAAi9qwAIva0ACL2vAAi9sgAIvbMACL20AAi9tQAIvbYACL24AAi9ugAIvbsACL28AAi9vgAIvb8ACL46AAi+PAAIvj4ACL5AAAi+QwAIvkQACL5FAAi+RgAIvkcACL5JAAi+SwAIvkwACL5NAAi+TwAIvlAACL7LAAi+zQAIvtAACL7SAAi+1QAIvtYACL7XAAi+2AAIvtkACL7bAAi+3QAIvt4ACL7fAAi+4QAIvuIACL9dAAi/XwAIv2EACL9jAAi/ZgAIv2cACL9oAAi/aQAIv2oACL9sAAi/bgAIv28ACL9wAAi/cgAIv3MACL/uAAi/8AAIv/IACL/0AAi/9wAIv/gACL/5AAi/+gAIv/sACL/9AAi//wAIwAAACMABAAjAAwAIwAQACMB/AAjAgQAIwIMACMCFAAjAiAAIwIkACMCKAAjAiwAIwIwACMCOAAjAkAAIwJEACMCSAAjAlAAIwJUACMEoAAjBSwAIwWsACMGLAAjBjQAIwY8ACMGRAAjBkwAIwZYACMGXAAjBmAAIwZsACMGcAAjBngAIwZ8ACMGhAAjBpAAIwaUACMGmAAjBqQAIwaoACMGvAAjByAAIwdEACMHTAAjB1QAIwd4ACMHhAAjB5AAIweYACMIvAAjCUwAIwnoACMKeAAjCoQAIwqMACMKlAAjCpwAIwqkACMKrAAjCrAAIwq8ACMLIAAjC6QAIwusACMLtAAjC7wAIwvEACMLzAAjC9QAIwvcACML5AAjDGgAIwx0ACMMgAAjDIwAIwyYACMMpAAjDLAAIwy8ACMMyAAjDNAAIw68ACMOxAAjDswAIw7UACMO4AAjDuQAIw7oACMO7AAjDvAAIw74ACMPAAAjDwQAIw8IACMPEAAjDxQAIxEAACMRCAAjERAAIxEYACMRJAAjESgAIxEsACMRMAAjETQAIxE8ACMRRAAjEUgAIxFMACMRVAAjEVgAIxNEACMTTAAjE1gAIxNgACMTbAAjE3AAIxN0ACMTeAAjE3wAIxOEACMTjAAjE5AAIxOUACMTnAAjE6AAIxQEACMUCAAjFAwAIxQUACMWAAAjFggAIxYQACMWGAAjFiQAIxYoACMWLAAjFjAAIxY0ACMWPAAjFkQAIxZIACMWTAAjFlQAIxZYACMYRAAjGEwAIxhUACMYXAAjGGgAIxhsACMYcAAjGHQAIxh4ACMYgAAjGIgAIxiMACMYkAAjGJgAIxicACMaiAAjGpAAIxqYACMaoAAjGqwAIxqwACMatAAjGrgAIxq8ACMaxAAjGswAIxrQACMa1AAjGtwAIxrgACMczAAjHNQAIxzcACMc5AAjHPAAIxz0ACMc+AAjHPwAIx0AACMdCAAjHRAAIx0UACMdGAAjHSAAIx0kACMfEAAjHxgAIx8gACMfKAAjHzQAIx84ACMfPAAjH0AAIx9EACMfTAAjH1QAIx9YACMfXAAjH2QAIx9oACMgjAAjIRwAIyG4ACMiSAAjIlQAIyJcACMiZAAjImwAIyJ0ACMifAAjIoAAIyKMACMi8AAjI2QAIyNsACMjdAAjI3wAIyOEACMjjAAjI5QAIyOcACMkEAAjJBwAIyQoACMkNAAjJEAAIyRMACMkWAAjJGQAIyRsACMmWAAjJmAAIyZoACMmcAAjJnwAIyaAACMmhAAjJogAIyaMACMmlAAjJpwAIyagACMmpAAjJqwAIyawACMonAAjKKQAIyisACMotAAjKMAAIyjEACMoyAAjKMwAIyjQACMo2AAjKOAAIyjkACMo6AAjKPAAIyj0ACMq4AAjKugAIyrwACMq+AAjKwQAIysIACMrDAAjKxAAIysUACMrHAAjKyQAIysoACMrLAAjKzQAIys4ACMtJAAjLSwAIy04ACMtQAAjLUwAIy1QACMtVAAjLVgAIy1cACMtZAAjLWwAIy1wACMtdAAjLXwAIy2AACMvbAAjL3QAIy98ACMvhAAjL5AAIy+UACMvmAAjL5wAIy+gACMvqAAjL7AAIy+0ACMvuAAjL8AAIy/EACMxsAAjMbgAIzHAACMxyAAjMdQAIzHYACMx3AAjMeAAIzHkACMx7AAjMfQAIzH4ACMx/AAjMgQAIzIIACMz9AAjM/wAIzQEACM0DAAjNBgAIzQcACM0IAAjNCQAIzQoACM0MAAjNDgAIzQ8ACM0QAAjNEgAIzRMACM0kAAjNJQAIzScACM2iAAjNpAAIzaYACM2oAAjNqwAIzawACM2tAAjNrgAIza8ACM2xAAjNtAAIzbUACM22AAjNuAAIzbkACM40AAjONgAIzjgACM46AAjOPQAIzj4ACM4/AAjOQAAIzkEACM5DAAjORgAIzkcACM5IAAjOSgAIzksACM7GAAjOyAAIzssACM7NAAjO0AAIztEACM7SAAjO0wAIztQACM7WAAjO2QAIztoACM7bAAjO3QAIzt4ACM9xAAjPlAAIz7QACM/UAAjP1gAIz9gACM/aAAjP3AAIz98ACM/gAAjP4QAIz+QACM/lAAjP5wAIz+gACM/qAAjP7QAIz+4ACM/vAAjP8gAIz/MACM/8AAjQFQAI0B4ACNAgAAjQIgAI0CsACNAuAAjQMQAI0DMACNB8AAjQoAAI0McACNDrAAjQ7gAI0PAACNDyAAjQ9AAI0PYACND4AAjQ+QAI0PwACNEVAAjRNgAI0TgACNE6AAjRPAAI0T4ACNFAAAjRQgAI0UQACNFGAAjRZwAI0WoACNFtAAjRcAAI0XMACNF2AAjReQAI0XwACNF/AAjRgQAI0fwACNH+AAjSAAAI0gIACNIFAAjSBgAI0gcACNIIAAjSCQAI0gsACNINAAjSDgAI0g8ACNIRAAjSEgAI0o0ACNKPAAjSkQAI0pMACNKWAAjSlwAI0pgACNKZAAjSmgAI0pwACNKeAAjSnwAI0qAACNKiAAjSowAI0x4ACNMgAAjTIwAI0yUACNMoAAjTKQAI0yoACNMrAAjTLAAI0y4ACNMwAAjTMQAI0zIACNM0AAjTNQAI004ACNNPAAjTUAAI01IACNPNAAjTzwAI09EACNPTAAjT1gAI09cACNPYAAjT2QAI09oACNPcAAjT3gAI098ACNPgAAjT4gAI0+MACNReAAjUYAAI1GIACNRkAAjUZwAI1GgACNRpAAjUagAI1GsACNRtAAjUbwAI1HAACNRxAAjUcwAI1HQACNTvAAjU8QAI1PMACNT1AAjU+AAI1PkACNT6AAjU+wAI1PwACNT+AAjVAAAI1QEACNUCAAjVBAAI1QUACNWAAAjVggAI1YQACNWGAAjViQAI1YoACNWLAAjVjAAI1Y0ACNWPAAjVkQAI1ZIACNWTAAjVlQAI1ZYACNYRAAjWEwAI1hUACNYXAAjWGgAI1hsACNYcAAjWHQAI1h4ACNYgAAjWIgAI1iMACNYkAAjWJgAI1icACNZwAAjWlAAI1rsACNbfAAjW4gAI1uQACNbmAAjW6AAI1uoACNbsAAjW7QAI1vAACNcJAAjXJgAI1ygACNcqAAjXLAAI1y4ACNcwAAjXMgAI1zQACNdRAAjXVAAI11cACNdaAAjXXQAI12AACNdjAAjXZgAI12gACNfjAAjX5QAI1+cACNfpAAjX7AAI1+0ACNfuAAjX7wAI1/AACNfyAAjX9AAI1/UACNf2AAjX+AAI1/kACNh0AAjYdgAI2HgACNh6AAjYfQAI2H4ACNh/AAjYgAAI2IEACNiDAAjYhQAI2IYACNiHAAjYiQAI2IoACNkFAAjZBwAI2QkACNkLAAjZDgAI2Q8ACNkQAAjZEQAI2RIACNkUAAjZFgAI2RcACNkYAAjZGgAI2RsACNmWAAjZmAAI2ZoACNmcAAjZnwAI2aAACNmhAAjZogAI2aMACNmlAAjZpwAI2agACNmpAAjZqwAI2awACNonAAjaKQAI2isACNotAAjaMAAI2jEACNoyAAjaMwAI2jQACNo2AAjaOAAI2jkACNo6AAjaPAAI2j0ACNq4AAjaugAI2r0ACNq/AAjawgAI2sMACNrEAAjaxQAI2sYACNrIAAjaygAI2ssACNrMAAjazgAI2s8ACNruAAjbaQAI22sACNttAAjbbwAI23IACNtzAAjbdAAI23UACNt2AAjbeAAI23oACNt7AAjbfAAI234ACNt/AAjcEgAI3DUACNxVAAjcdQAI3HcACNx5AAjcewAI3H0ACNyAAAjcgQAI3IIACNyFAAjchgAI3IgACNyJAAjcjAAI3I8ACNyQAAjckQAI3JQACNyVAAjcmgAI3LMACNy8AAjcvgAI3MEACNzKAAjczQAI3NAACNzSAAjdGwAI3T8ACN1mAAjdigAI3Y0ACN2PAAjdkQAI3ZMACN2VAAjdlwAI3ZgACN2bAAjdtAAI3dUACN3XAAjd2QAI3dsACN3dAAjd3wAI3eEACN3jAAjd5QAI3gYACN4JAAjeDAAI3g8ACN4SAAjeFQAI3hgACN4bAAjeHgAI3iAACN6bAAjenQAI3p8ACN6hAAjepAAI3qUACN6mAAjepwAI3qgACN6qAAjerAAI3q0ACN6uAAjesAAI3rEACN8sAAjfLgAI3zAACN8yAAjfNQAI3zYACN83AAjfOAAI3zkACN87AAjfPQAI3z4ACN8/AAjfQQAI30IACN+9AAjfvwAI38IACN/EAAjfxwAI38gACN/JAAjfygAI38sACN/NAAjfzwAI39AACN/RAAjf0wAI39QACN/tAAjf7gAI3+8ACN/xAAjgbAAI4G4ACOBwAAjgcgAI4HUACOB2AAjgdwAI4HgACOB5AAjgewAI4H0ACOB+AAjgfwAI4IEACOCCAAjg/QAI4P8ACOEBAAjhAwAI4QYACOEHAAjhCAAI4QkACOEKAAjhDAAI4Q4ACOEPAAjhEAAI4RIACOETAAjhjgAI4ZAACOGSAAjhlAAI4ZcACOGYAAjhmQAI4ZoACOGbAAjhnQAI4Z8ACOGgAAjhoQAI4aMACOGkAAjiHwAI4iEACOIjAAjiJQAI4igACOIpAAjiKgAI4isACOIsAAjiLgAI4jAACOIxAAjiMgAI4jQACOI1AAjisAAI4rIACOK0AAjitgAI4rkACOK6AAjiuwAI4rwACOK9AAjivwAI4sEACOLCAAjiwwAI4sUACOLGAAjjDwAI4zMACONaAAjjfgAI44EACOOEAAjjhgAI44gACOOKAAjjjAAI440ACOOQAAjjqQAI48YACOPJAAjjzAAI488ACOPSAAjj1QAI49gACOPbAAjj+AAI4/sACOP+AAjkAQAI5AQACOQHAAjkCgAI5A0ACOQPAAjkigAI5IwACOSPAAjkkQAI5JQACOSVAAjklgAI5JcACOSYAAjkmgAI5J0ACOSeAAjknwAI5KEACOSiAAjlHQAI5R8ACOUiAAjlJAAI5ScACOUoAAjlKQAI5SoACOUrAAjlLQAI5TAACOUxAAjlMgAI5TQACOU1AAjlsAAI5bIACOW1AAjltwAI5boACOW7AAjlvAAI5b0ACOW+AAjlwAAI5cMACOXEAAjlxQAI5ccACOXIAAjmQwAI5kUACOZIAAjmSgAI5k0ACOZOAAjmTwAI5lAACOZRAAjmUwAI5lYACOZXAAjmWAAI5loACOZbAAjm1gAI5tgACObaAAjm3AAI5t8ACObgAAjm4QAI5uIACObjAAjm5QAI5ugACObpAAjm6gAI5uwACObtAAjnaAAI52oACOdsAAjnbgAI53EACOdyAAjncwAI53QACOd1AAjndwAI53oACOd7AAjnfAAI534ACOd/AAjn+gAI5/wACOf/AAjoAQAI6AQACOgFAAjoBgAI6AcACOgIAAjoCgAI6A0ACOgOAAjoDwAI6BEACOgSAAjopQAI6MgACOjoAAjpCAAI6QoACOkMAAjpDgAI6RAACOkTAAjpFAAI6RUACOkYAAj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ESAAJBEkACQRKAAkESwAJBE0ACQRPAAkEUAAJBFEACQRTAAkEVAAJBM8ACQTRAAkE1AAJBNYACQTZAAkE2gAJBNsACQTcAAkE3QAJBN8ACQThAAkE4gAJBOMACQTlAAkE5gAJBPcACQT4AAkE+gAJBXUACQV3AAkFeQAJBXsACQV+AAkFfwAJBYAACQWBAAkFggAJBYQACQWGAAkFhwAJBYgACQWKAAkFiwAJBgYACQYIAAkGCwAJBg0ACQYQAAkGEQAJBhIACQYTAAkGFAAJBhYACQYYAAkGGQAJBhoACQYcAAkGHQAJBi4ACQYvAAkGMQAJBqwACQauAAkGsAAJBrIACQa1AAkGtgAJBrcACQa4AAkGuQAJBrsACQa9AAkGvgAJBr8ACQbBAAkGwgAJBz0ACQc/AAkHQgAJB0QACQdHAAkHSAAJB0kACQdKAAkHSwAJB00ACQdPAAkHUAAJB1EACQdTAAkHVAAJB20ACQduAAkHbwAJB3EACQfsAAkH7gAJB/AACQfyAAkH9QAJB/YACQf3AAkH+AAJB/kACQf7AAkH/QAJB/4ACQf/AAkIAQAJCAIACQh9AAkIfwAJCIIACQiEAAkIhwAJCIgACQiJAAkIigAJCIsACQiNAAkIjwAJCJAACQiRAAkIkwAJCJQACQiuAAkIxwAJCNAACQjTAAkI1gAJCN8ACQjiAAkI5QAJCOcACQjyAAkJAAAJCZMACQm2AAkJ1gAJCfYACQn4AAkJ+gAJCfwACQn+AAkKAQAJCgIACQoDAAkKBgAJCgcACQoJAAkKCgAJCgwACQoPAAkKEAAJChEACQoUAAkKFQAJChoACQozAAkKPAAJCj4ACQpAAAkKSQAJCkwACQpPAAkKUQAJCpoACQq+AAkK5QAJCwkACQsMAAkLDgAJCxAACQsSAAkLFAAJCxYACQsXAAkLGgAJCzMACQtUAAkLVgAJC1gACQtaAAkLXAAJC14ACQtgAAkLYgAJC2QACQuFAAkLiAAJC4sACQuOAAkLkQAJC5QACQuXAAkLmgAJC50ACQufAAkMGgAJDBwACQweAAkMIAAJDCMACQwkAAkMJQAJDCYACQwnAAkMKQAJDCsACQwsAAkMLQAJDC8ACQwwAAkMqwAJDK0ACQyvAAkMsQAJDLQACQy1AAkMtgAJDLcACQy4AAkMugAJDLwACQy9AAkMvgAJDMAACQzBAAkNPAAJDT4ACQ1BAAkNQwAJDUYACQ1HAAkNSAAJDUkACQ1KAAkNTAAJDU4ACQ1PAAkNUAAJDVIACQ1TAAkNbAAJDW0ACQ1uAAkNcAAJDesACQ3tAAkN7wAJDfEACQ30AAkN9QAJDfYACQ33AAkN+AAJDfoACQ38AAkN/QAJDf4ACQ4AAAkOAQAJDnwACQ5+AAkOgAAJDoIACQ6FAAkOhgAJDocACQ6IAAkOiQAJDosACQ6NAAkOjgAJDo8ACQ6RAAkOkgAJDw0ACQ8PAAkPEQAJDxMACQ8WAAkPFwAJDxgACQ8ZAAkPGgAJDxwACQ8eAAkPHwAJDyAACQ8iAAkPIwAJD54ACQ+gAAkPogAJD6QACQ+nAAkPqAAJD6kACQ+qAAkPqwAJD60ACQ+vAAkPsAAJD7EACQ+zAAkPtAAJEC8ACRAxAAkQMwAJEDUACRA4AAkQOQAJEDoACRA7AAkQPAAJED4ACRBAAAkQQQAJEEIACRBEAAkQRQAJEI4ACRCyAAkQ2QAJEP0ACREAAAkRAgAJEQQACREGAAkRCAAJEQoACRELAAkRDgAJEScACRFEAAkRRgAJEUgACRFKAAkRTAAJEU4ACRFQAAkRUgAJEW8ACRFyAAkRdQAJEXgACRF7AAkRfgAJEYEACRGEAAkRhgAJEgEACRIDAAkSBQAJEgcACRIKAAkSCwAJEgwACRINAAkSDgAJEhAACRISAAkSEwAJEhQACRIWAAkSFwAJEpIACRKUAAkSlgAJEpgACRKbAAkSnAAJEp0ACRKeAAkSnwAJEqEACRKjAAkSpAAJEqUACRKnAAkSqAAJEyMACRMlAAkTJwAJEykACRMsAAkTLQAJEy4ACRMvAAkTMAAJEzIACRM0AAkTNQAJEzYACRM4AAkTOQAJE7QACRO2AAkTuAAJE7oACRO9AAkTvgAJE78ACRPAAAkTwQAJE8MACRPFAAkTxgAJE8cACRPJAAkTygAJFEUACRRHAAkUSQAJFEsACRROAAkUTwAJFFAACRRRAAkUUgAJFFQACRRWAAkUVwAJFFgACRRaAAkUWwAJFNYACRTYAAkU2wAJFN0ACRTgAAkU4QAJFOIACRTjAAkU5AAJFOYACRToAAkU6QAJFOoACRTsAAkU7QAJFPwACRV3AAkVeQAJFXsACRV9AAkVgAAJFYEACRWCAAkVgwAJFYQACRWGAAkViAAJFYkACRWKAAkVjAAJFY0ACRYgAAkWQwAJFmMACRaDAAkWhQAJFocACRaJAAkWiwAJFo4ACRaPAAkWkAAJFpMACRaUAAkWlgAJFpcACRaaAAkWnQAJFp4ACRafAAkWogAJFqMACRaoAAkWwQAJFsoACRbMAAkWzwAJFtgACRbbAAkW3gAJFuAACRcpAAkXTQAJF3QACReYAAkXmwAJF50ACRefAAkXoQAJF6MACRelAAkXpgAJF6kACRfCAAkX4wAJF+UACRfnAAkX6QAJF+sACRftAAkX7wAJF/EACRfzAAkYFAAJGBcACRgaAAkYHQAJGCAACRgjAAkYJgAJGCkACRgsAAkYLgAJGKkACRirAAkYrQAJGK8ACRiyAAkYswAJGLQACRi1AAkYtgAJGLgACRi6AAkYuwAJGLwACRi+AAkYvwAJGToACRk8AAkZPgAJGUAACRlDAAkZRAAJGUUACRlGAAkZRwAJGUkACRlLAAkZTAAJGU0ACRlPAAkZUAAJGcsACRnNAAkZ0AAJGdIACRnVAAkZ1gAJGdcACRnYAAkZ2QAJGdsACRndAAkZ3gAJGd8ACRnhAAkZ4gAJGfsACRn8AAkZ/QAJGf8ACRp6AAkafAAJGn4ACRqAAAkagwAJGoQACRqFAAkahgAJGocACRqJAAkaiwAJGowACRqNAAkajwAJGpAACRsLAAkbDQAJGw8ACRsRAAkbFAAJGxUACRsWAAkbFwAJGxgACRsaAAkbHAAJGx0ACRseAAkbIAAJGyEACRucAAkbngAJG6AACRuiAAkbpQAJG6YACRunAAkbqAAJG6kACRurAAkbrQAJG64ACRuvAAkbsQAJG7IACRwtAAkcLwAJHDEACRwzAAkcNgAJHDcACRw4AAkcOQAJHDoACRw8AAkcPgAJHD8ACRxAAAkcQgAJHEMACRy+AAkcwAAJHMIACRzEAAkcxwAJHMgACRzJAAkcygAJHMsACRzNAAkczwAJHNAACRzRAAkc0wAJHNQACR0dAAkdQQAJHWgACR2MAAkdjwAJHZIACR2UAAkdlgAJHZgACR2aAAkdmwAJHZ4ACR23AAkd1AAJHdcACR3aAAkd3QAJHeAACR3jAAkd5gAJHekACR4GAAkeCQAJHgwACR4PAAkeEgAJHhUACR4YAAkeGwAJHh0ACR6YAAkemgAJHp0ACR6fAAkeogAJHqMACR6kAAkepQAJHqYACR6oAAkeqwAJHqwACR6tAAkerwAJHrAACR8rAAkfLQAJHzAACR8yAAkfNQAJHzYACR83AAkfOAAJHzkACR87AAkfPgAJHz8ACR9AAAkfQgAJH0MACR++AAkfwAAJH8MACR/FAAkfyAAJH8kACR/KAAkfywAJH8wACR/OAAkf0QAJH9IACR/TAAkf1QAJH9YACSBRAAkgUwAJIFYACSBYAAkgWwAJIFwACSBdAAkgXgAJIF8ACSBhAAkgZAAJIGUACSBmAAkgaAAJIGkACSDkAAkg5gAJIOgACSDqAAkg7QAJIO4ACSDvAAkg8AAJIPEACSDzAAkg9gAJIPcACSD4AAkg+gAJIPsACSF2AAkheAAJIXoACSF8AAkhfwAJIYAACSGBAAkhggAJIYMACSGFAAkhiAAJIYkACSGKAAkhjAAJIY0ACSIIAAkiCgAJIg0ACSIPAAkiEgAJIhMACSIUAAkiFQAJIhYACSIYAAkiGwAJIhwACSIdAAkiHwAJIiAACSIxAAkiMgAJIjQACSKvAAkisQAJIrMACSK1AAkiuAAJIrkACSK6AAkiuwAJIrwACSK+AAkiwQAJIsIACSLDAAkixQAJIsYACSNBAAkjQwAJI0UACSNHAAkjSgAJI0sACSNMAAkjTQAJI04ACSNQAAkjUwAJI1QACSNVAAkjVwAJI1gACSPTAAkj1QAJI9gACSPaAAkj3QAJI94ACSPfAAkj4AAJI+EACSPjAAkj5gAJI+cACSPoAAkj6gAJI+sACSR+AAkkoQAJJMEACSThAAkk4wAJJOUACSTnAAkk6QAJJOwACSTtAAkk7gAJJPEACSTyAAkk9AAJJPUACST4AAkk+wAJJPwACST9AAklAAAJJQEACSUGAAklHwAJJSgACSUqAAklLQAJJTYACSU5AAklPAAJJT4ACSWHAAklqwAJJdIACSX2AAkl+QAJJfsACSX9AAkl/wAJJgEACSYDAAkmBAAJJgcACSYgAAkmQQAJJkMACSZFAAkmRwAJJkkACSZLAAkmTQAJJk8ACSZRAAkmcgAJJnUACSZ4AAkmewAJJn4ACSaBAAkmhAAJJocACSaKAAkmjAAJJwcACScJAAknCwAJJw0ACScQAAknEQAJJxIACScTAAknFAAJJxYACScYAAk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UIQAJVCIACVQjAAlUJgAJVCcACVQpAAlUKgAJVCwACVQvAAlUMAAJVDEACVQ0AAlUNQAJVDoACVRTAAlUXAAJVF4ACVRgAAlUaQAJVGwACVRvAAlUcQAJVLoACVTeAAlVBQAJVSkACVUsAAlVLgAJVTAACVUyAAlVNAAJVTYACVU3AAlVOgAJVVMACVV0AAlVdgAJVXgACVV6AAlVfAAJVX4ACVWAAAlVggAJVYQACVWlAAlVqAAJVasACVWuAAlVsQAJVbQACVW3AAlVugAJVb0ACVW/AAlWOgAJVjwACVY+AAlWQAAJVkMACVZEAAlWRQAJVkYACVZHAAlWSQAJVksACVZMAAlWTQAJVk8ACVZQAAlWywAJVs0ACVbPAAlW0QAJVtQACVbVAAlW1gAJVtcACVbYAAlW2gAJVtwACVbdAAlW3gAJVuAACVbhAAlXXAAJV14ACVdhAAlXYwAJV2YACVdnAAlXaAAJV2kACVdqAAlXbAAJV24ACVdvAAlXcAAJV3IACVdzAAlXjAAJV40ACVeOAAlXkAAJWAsACVgNAAlYDwAJWBEACVgUAAlYFQAJWBYACVgXAAlYGAAJWBoACVgcAAlYHQAJWB4ACVggAAlYIQAJWJwACVieAAlYoAAJWKIACVilAAlYpgAJWKcACVioAAlYqQAJWKsACVitAAlYrgAJWK8ACVixAAlYsgAJWS0ACVkvAAlZMQAJWTMACVk2AAlZNwAJWTgACVk5AAlZOgAJWTwACVk+AAlZPwAJWUAACVlCAAlZQwAJWb4ACVnAAAlZwgAJWcQACVnHAAlZyAAJWckACVnKAAlZywAJWc0ACVnPAAlZ0AAJWdEACVnTAAlZ1AAJWk8ACVpRAAlaUwAJWlUACVpYAAlaWQAJWloACVpbAAlaXAAJWl4ACVpgAAlaYQAJWmIACVpkAAlaZQAJWq4ACVrSAAla+QAJWx0ACVsgAAlbIgAJWyQACVsmAAlbKAAJWyoACVsrAAlbLgAJW0cACVtkAAlbZgAJW2gACVtqAAlbbAAJW24ACVtwAAlbcgAJW48ACVuSAAlblQAJW5gACVubAAlbngAJW6EACVukAAlbpgAJXCEACVwjAAlcJQAJXCcACVwqAAlcKwAJXCwACVwtAAlcLgAJXDAACVwyAAlcMwAJXDQACVw2AAlcNwAJXLIACVy0AAlctgAJXLgACVy7AAlcvAAJXL0ACVy+AAlcvwAJXMEACVzDAAlcxAAJXMUACVzHAAlcyAAJXUMACV1FAAldRwAJXUkACV1MAAldTQAJXU4ACV1PAAldUAAJXVIACV1UAAldVQAJXVYACV1YAAldWQAJXdQACV3WAAld2QAJXdsACV3eAAld3wAJXeAACV3hAAld4gAJXeQACV3mAAld5wAJXegACV3qAAld6wAJXmYACV5oAAleagAJXmwACV5vAAlecAAJXnEACV5yAAlecwAJXnUACV53AAleeAAJXnkACV57AAlefAAJXvcACV75AAle+wAJXv0ACV8AAAlfAQAJXwIACV8DAAlfBAAJXwYACV8IAAlfCQAJXwoACV8MAAlfDQAJX4gACV+KAAlfjAAJX44ACV+RAAlfkgAJX5MACV+UAAlflQAJX5cACV+ZAAlfmgAJX5sACV+dAAlfngAJYDEACWBUAAlgdAAJYJQACWCWAAlgmAAJYJoACWCcAAlgnwAJYKAACWChAAlgpAAJYKUACWCnAAlgqAAJYKoACWCtAAlgrgAJYK8ACWCyAAlgswAJYLgACWDRAAlg2gAJYNwACWDeAAlg5wAJYOoACWDtAAlg7wAJYTgACWFcAAlhgwAJYacACWGqAAlhrAAJYa4ACWGwAAlhsgAJYbQACWG1AAlhuAAJYdEACWHyAAlh9AAJYfYACWH4AAlh+gAJYfwACWH+AAliAAAJYgIACWIjAAliJgAJYikACWIsAAliLwAJYjIACWI1AAliOAAJYjsACWI9AAliuAAJYroACWK8AAlivgAJYsEACWLCAAliwwAJYsQACWLFAAlixwAJYskACWLKAAliywAJYs0ACWLOAAljSQAJY0sACWNNAAljTwAJY1IACWNTAAljVAAJY1UACWNWAAljWAAJY1oACWNbAAljXAAJY14ACWNfAAlj2gAJY9wACWPfAAlj4QAJY+QACWPlAAlj5gAJY+cACWPoAAlj6gAJY+wACWPtAAlj7gAJY/AACWPxAAlkCgAJZAsACWQMAAlkDgAJZIkACWSLAAlkjQAJZI8ACWSSAAlkkwAJZJQACWSVAAlklgAJZJgACWSaAAlkmwAJZJwACWSeAAlknwAJZRoACWUcAAllHgAJZSAACWUjAAllJAAJZSUACWUmAAllJwAJZSkACWUrAAllLAAJZS0ACWUvAAllMAAJZasACWWtAAllrwAJZbEACWW0AAlltQAJZbYACWW3AAlluAAJZboACWW8AAllvQAJZb4ACWXAAAllwQAJZjwACWY+AAlmQAAJZkIACWZFAAlmRgAJZkcACWZIAAlmSQAJZksACWZNAAlmTgAJZk8ACWZRAAlmUgAJZs0ACWbPAAlm0QAJZtMACWbWAAlm1wAJZtgACWbZAAlm2gAJZtwACWbeAAlm3wAJZuAACWbiAAlm4wAJZywACWdQAAlndwAJZ5sACWeeAAlnoAAJZ6IACWekAAlnpgAJZ6gACWepAAlnrAAJZ8UACWfiAAln5AAJZ+YACWfoAAln6gAJZ+wACWfuAAln8AAJaA0ACWgQAAloEwAJaBYACWgZAAloHAAJaB8ACWgiAAloJAAJaJ8ACWihAAloowAJaKUACWioAAloqQAJaKoACWirAAlorAAJaK4ACWiwAAlosQAJaLIACWi0AAlotQAJaTAACWkyAAlpNAAJaTYACWk5AAlpOgAJaTsACWk8AAlpPQAJaT8ACWlBAAlpQgAJaUMACWlFAAlpRgAJacEACWnDAAlpxQAJaccACWnKAAlpywAJacwACWnNAAlpzgAJadAACWnSAAlp0wAJadQACWnWAAlp1wAJalIACWpUAAlqVwAJalkACWpcAAlqXQAJal4ACWpfAAlqYAAJamIACWpkAAlqZQAJamYACWpoAAlqaQAJauQACWrmAAlq6AAJauoACWrtAAlq7gAJau8ACWrwAAlq8QAJavMACWr1AAlq9gAJavcACWr5AAlq+gAJa3UACWt3AAlreQAJa3sACWt+AAlrfwAJa4AACWuBAAlrggAJa4QACWuGAAlrhwAJa4gACWuKAAlriwAJbAYACWwIAAlsCgAJbAwACWwPAAlsEAAJbBEACWwSAAlsEwAJbBUACWwXAAlsGAAJbBkACWwbAAlsHAAJbK8ACWzSAAls8gAJbRIACW0UAAltFgAJbRgACW0aAAltHQAJbR4ACW0fAAltIgAJbSMACW0lAAltJgAJbSgACW0rAAltLAAJbS0ACW0wAAltMQAJbTYACW1PAAltWAAJbVoACW1cAAltZQAJbWgACW1rAAltbQAJbbYACW3aAAluAQAJbiUACW4oAAluKgAJbiwACW4uAAluMAAJbjIACW4zAAluNgAJbk8ACW5wAAlucgAJbnQACW52AAlueAAJbnoACW58AAlufgAJboAACW6hAAlupAAJbqcACW6qAAlurQAJbrAACW6zAAlutgAJbrkACW67AAlvNgAJbzgACW86AAlvPAAJbz8ACW9AAAlvQQAJb0IACW9DAAlvRQAJb0cACW9IAAlvSQAJb0sACW9MAAlvxwAJb8kACW/LAAlvzQAJb9AACW/RAAlv0gAJb9MACW/UAAlv1gAJb9gACW/ZAAlv2gAJb9wACW/dAAlwWAAJcFoACXBdAAlwXwAJcGIACXBjAAlwZAAJcGUACXBmAAlwaAAJcGoACXBrAAlwbAAJcG4ACXBvAAlwiAAJcIkACXCKAAlwjAAJcQcACXEJAAlxCwAJcQ0ACXEQAAlxEQAJcRIACXETAAlxFAAJcRYACXEYAAlxGQAJcRoACXEcAAlxHQAJcZgACXGaAAlxnAAJcZ4ACXGhAAlxogAJcaMACXGkAAlxpQAJcacACXGpAAlxqgAJcasACXGtAAlxrgAJcikACXIrAAlyLQAJci8ACXIyAAlyMwAJcjQACXI1AAlyNgAJcjgACXI6AAlyOwAJcjwACXI+AAlyPwAJcroACXK8AAlyvgAJcsAACXLDAAlyxAAJcsUACXLGAAlyxwAJcskACXLLAAlyzAAJcs0ACXLPAAly0AAJc0sACXNNAAlzTwAJc1EACXNUAAlzVQAJc1YACXNXAAlzWAAJc1oACXNcAAlzXQAJc14ACXNgAAlzYQAJc6oACXPOAAlz9QAJdBkACXQcAAl0HgAJdCAACXQiAAl0JAAJdCYACXQnAAl0KgAJdEMACXRgAAl0YgAJdGQACXRmAAl0aAAJdGoACXRsAAl0bgAJdIsACXSOAAl0kQAJdJQACXSXAAl0mgAJdJ0ACXSgAAl0ogAJdR0ACXUfAAl1IQAJdSMACXUmAAl1JwAJdSgACXUpAAl1KgAJdSwACXUuAAl1LwAJdTAACXUyAAl1MwAJda4ACXWwAAl1sgAJdbQACXW3AAl1uAAJdbkACXW6AAl1uwAJdb0ACXW/AAl1wAAJdcEACXXDAAl1xAAJdj8ACXZBAAl2QwAJdkUACXZIAAl2SQAJdkoACXZLAAl2TAAJdk4ACXZQAAl2UQAJdlIACXZUAAl2VQAJdtAACXbSAAl21QAJdtcACXbaAAl22wAJdtwACXbdAAl23gAJduAACXbiAAl24wAJduQACXbmAAl25wAJd2IACXdkAAl3ZgAJd2gACXdrAAl3bAAJd20ACXduAAl3bwAJd3EACXdzAAl3dAAJd3UACXd3AAl3eAAJd/MACXf1AAl39wAJd/kACXf8AAl3/QAJd/4ACXf/AAl4AAAJeAIACXgEAAl4BQAJeAYACXgIAAl4CQAJeIQACXiGAAl4iAAJeIoACXiNAAl4jgAJeI8ACXiQAAl4kQAJeJMACXiVAAl4lgAJeJcACXiZAAl4mgAJeS0ACXlQAAl5cAAJeZAACXmSAAl5lAAJeZYACXmYAAl5mwAJeZwACXmdAAl5oAAJeaEACXmjAAl5pAAJeaYACXmpAAl5qgAJeasACXmuAAl5rwAJebQACXnNAAl51gAJedgACXnaAAl54wAJeeYACXnpAAl56wAJejQACXpYAAl6fwAJeqMACXqmAAl6qAAJeqoACXqsAAl6rgAJerAACXqxAAl6tAAJes0ACXruAAl68AAJevIACXr0AAl69gAJevgACXr6AAl6/AAJev4ACXsfAAl7IgAJeyUACXsoAAl7KwAJey4ACXsxAAl7NAAJezcACXs5AAl7tAAJe7YACXu4AAl7ugAJe70ACXu+AAl7vwAJe8AACXvBAAl7wwAJe8UACXvGAAl7xwAJe8kACXvKAAl8RQAJfEcACXxJAAl8SwAJfE4ACXxPAAl8UAAJfFEACXxSAAl8VAAJfFYACXxXAAl8WAAJfFoACXxbAAl81gAJfNgACXzbAAl83QAJfOAACXzhAAl84gAJfOMACXzkAAl85gAJfOgACXzpAAl86gAJfOwACXztAAl9BgAJfQcACX0IAAl9CgAJfYUACX2HAAl9iQAJfYsACX2OAAl9jwAJfZAACX2RAAl9kgAJfZQACX2WAAl9lwAJfZgACX2aAAl9mwAJfhYACX4YAAl+GgAJfhwACX4fAAl+IAAJfiEACX4iAAl+IwAJfiUACX4nAAl+KAAJfikACX4rAAl+LAAJfqcACX6pAAl+qwAJfq0ACX6wAAl+sQAJfrIACX6zAAl+tAAJfrYACX64AAl+uQAJfroACX68AAl+vQAJfzgACX86AAl/PAAJfz4ACX9BAAl/QgAJf0MACX9EAAl/RQAJf0cACX9JAAl/SgAJf0sACX9NAAl/TgAJf8kACX/LAAl/zQAJf88ACX/SAAl/0wAJf9QACX/VAAl/1gAJf9gACX/aAAl/2wAJf9wACX/eAAl/3wAJgCgACYBMAAmAcwAJgJcACYCaAAmAnAAJgJ4ACYCgAAmAogAJgKQACYClAAmAqAAJgMEACYDeAAmA4AAJgOIACYDkAAmA5gAJgOgACYDqAAmA7AAJgQkACYEMAAmBDwAJgRIACYEVAAmBGAAJgRsACYEeAAmBIAAJgZsACYGdAAmBnwAJgaEACYGkAAmBpQAJgaYACYGnAAmBqAAJgaoACYGsAAmBrQAJga4ACYGwAAmBsQAJgiwACYIuAAmCMAAJgjIACYI1AAmCNgAJgjcACYI4AAmCOQAJgjsACYI9AAmCPgAJgj8ACYJBAAmCQgAJgr0ACYK/AAmCwQAJgsMACYLGAAmCxwAJgsgACYLJAAmCygAJgswACYLOAAmCzwAJgtAACYLSAAmC0wAJg04ACYNQAAmDUwAJg1UACYNYAAmDWQAJg1oACYNbAAmDXAAJg14ACYNgAAmDYQAJg2IACYNkAAmDZQAJg+AACYPiAAmD5AAJg+YACYPpAAmD6gAJg+sACYPsAAmD7QAJg+8ACYPxAAmD8gAJg/MACYP1AAmD9gAJhHEACYRzAAmEdQAJhHcACYR6AAmEewAJhHwACYR9AAmEfgAJhIAACYSCAAmEgwAJhIQACYSGAAmEhwAJhQIACYUEAAmFBgAJhQgACYULAAmFDAAJhQ0ACYUOAAmFDwAJhREACYUTAAmFFAAJhRUACYUXAAmFGAAJhasACYXOAAmF7gAJhg4ACYYQAAmGEgAJhhQACYYWAAmGGQAJhhoACYYbAAmGHgAJhh8ACYYhAAmGIgAJhiQACYYnAAmGKAAJhikACYYsAAmGLQAJhjIACYZLAAmGVAAJhlYACYZYAAmGYQAJhmQACYZnAAmGaQAJhrIACYbWAAmG/QAJhyEACYckAAmHJgAJhygACYcqAAmHLAAJhy4ACYcvAAmHMgAJh0sACYdsAAmHbgAJh3AACYdyAAmHdAAJh3YACYd4AAmHegAJh3wACYedAAmHoAAJh6MACYemAAmHqQAJh6wACYevAAmHsgAJh7UACYe3AAmIMgAJiDQACYg2AAmIOAAJiDsACYg8AAmIPQAJiD4ACYg/AAmIQQAJiEMACYhEAAmIRQAJiEcACYhIAAmIwwAJiMUACYjHAAmIyQAJiMwACYjNAAmIzgAJiM8ACYjQAAmI0gAJiNQACYjVAAmI1gAJiNgACYjZAAmJVAAJiVYACYlZAAmJWwAJiV4ACYlfAAmJYAAJiWEACYliAAmJZAAJiWYACYlnAAmJaAAJiWoACYlrAAmJhAAJiYUACYmGAAmJiAAJigMACYoFAAmKBwAJigkACYoMAAmKDQAJig4ACYoPAAmKEAAJihIACYoUAAmKFQAJihYACYoYAAmKGQAJipQACYqWAAmKmAAJipoACYqdAAmKngAJip8ACYqgAAmKoQAJiqMACYqlAAmKpgAJiqcACYqpAAmKqgAJiyUACYsnAAmLKQAJiysACYsuAAmLLwAJizAACYsxAAmLMgAJizQACYs2AAmLNwAJizgACYs6AAmLOwAJi7YACYu4AAmLugAJi7wACYu/AAmLwAAJi8EACYvCAAmLwwAJi8UACYvHAAmLyAAJi8kACYvLAAmLzAAJjEcACYxJAAmMSwAJjE0ACYxQAAmMUQAJjFIACYxTAAmMVAAJjFYACYxYAAmMWQAJjFoACYxcAAmMXQAJjKYACYzKAAmM8QAJjRUACY0YAAmNGgAJjRwACY0eAAmNIAAJjSIACY0jAAmNJgAJjT8ACY1cAAmNXgAJjWAACY1iAAmNZAAJjWYACY1oAAmNagAJjYcACY2KAAmNjQAJjZAACY2TAAmNlgAJjZkACY2cAAmNngAJjhkACY4bAAmOHQAJjh8ACY4iAAmOIwAJjiQACY4lAAmOJgAJjigACY4qAAmOKwAJjiwACY4uAAmOLwAJjqoACY6sAAmOrgAJjrAACY6zAAmOtAAJjrUACY62AAmOtwAJjrkACY67AAmOvAAJjr0ACY6/AAmOwAAJjzsACY89AAmPPwAJj0EACY9EAAmPRQAJj0YACY9HAAmPSAAJj0oACY9MAAmPTQAJj04ACY9QAAmPUQAJj8wACY/OAAmP0QAJj9MACY/WAAmP1wAJj9gACY/ZAAmP2gAJj9wACY/eAAmP3wAJj+AACY/iAAmP4wAJkF4ACZBgAAmQYgAJkGQACZBnAAmQaAAJkGkACZBqAAmQawAJkG0ACZBvAAmQcAAJkHEACZBzAAmQdAAJkO8ACZDxAAmQ8wAJkPUACZD4AAmQ+QAJkPoACZD7AAmQ/AAJkP4ACZEAAAmRAQAJkQIACZEEAAmRBQAJkYAACZGCAAmRhAAJkYYACZGJAAmRigAJkYsACZGMAAmRjQAJkY8ACZGRAAmRkgAJkZMACZGVAAmRlgAJkikACZJMAAmSbAAJkowACZKOAAmSkAAJkpIACZKUAAmSlwAJkpgACZKZAAmSnAAJkp0ACZKfAAmSoAAJkqIACZKlAAmSpgAJkqcACZKqAAmSqwAJkrAACZLJAAmS0gAJktQACZLWAAmS3wAJkuIACZLlAAmS5wAJkzAACZNUAAmTewAJk58ACZOiAAmTpAAJk6YACZOoAAmTqgAJk6wACZOtAAmTsAAJk8kACZPqAAmT7AAJk+4ACZPwAAmT8gAJk/QACZP2AAmT+AAJk/oACZQbAAmUHgAJlCEACZQkAAmUJwAJlCoACZQtAAmUMAAJlDMACZQ1AAmUsAAJlLIACZS0AAmUtgAJlLkACZS6AAmUuwAJlLwACZS9AAmUvwAJlMEACZTCAAmUwwAJlMUACZTGAAmVQQAJlUMACZVFAAmVRwAJlUoACZVLAAmVTAAJlU0ACZVOAAmVUAAJlVIACZVTAAmVVAAJlVYACZVXAAmV0gAJldQACZXXAAmV2QAJldwACZXdAAmV3gAJld8ACZXgAAmV4gAJleQACZXlAAmV5gAJlegACZXpAAmWAgAJlgMACZYEAAmWBgAJloEACZaDAAmWhQAJlocACZaKAAmWiwAJlowACZaNAAmWjgAJlpAACZaSAAmWkwAJlpQACZaWAAmWlwAJlxIACZcUAAmXFgAJlxgACZcbAAmXHAAJlx0ACZceAAmXHwAJlyEACZcjAAmXJAAJlyUACZcnAAmXKAAJl6MACZelAAmXpwAJl6kACZesAAmXrQAJl64ACZevAAmXsAAJl7IACZe0AAmXtQAJl7YACZe4AAmXuQAJmDQACZg2AAmYOAAJmDoACZg9AAmYPgAJmD8ACZhAAAmYQQAJmEMACZhFAAmYRgAJmEcACZhJAAmYSgAJmMUACZjHAAmYyQAJmMsACZjOAAmYzwAJmNAACZjRAAmY0gAJmNQACZjWAAmY1wAJmNgACZjaAAmY2wAJmSQACZlIAAmZbwAJmZMACZmWAAmZmAAJmZoACZmcAAmZngAJmaAACZmhAAmZpAAJmb0ACZnaAAmZ3AAJmd4ACZngAAmZ4gAJmeQACZnmAAmZ6AAJmgUACZoIAAmaCwAJmg4ACZoRAAmaFAAJmhcACZoaAAmaHAAJmpcACZqZAAmamwAJmp0ACZqgAAmaoQAJmqIACZqjAAmapAAJmqYACZqoAAmaqQAJmqoACZqsAAmarQAJmygACZsqAAmbLAAJmy4ACZsxAAmbMgAJmzMACZs0AAmbNQAJmzcACZs5AAmbOgAJmzsACZs9AAmbPgAJm7kACZu7AAmbvQAJm78ACZvCAAmbwwAJm8QACZvFAAmbxgAJm8gACZvKAAmbywAJm8wACZvOAAmbzwAJnEoACZxMAAmcTwAJnFEACZxUAAmcVQAJnFYACZxXAAmcWAAJnFoACZxcAAmcXQAJnF4ACZxgAAmcYQAJnNwACZzeAAmc4AAJnOIACZzlAAmc5gAJnOcACZzoAAmc6QAJnOsACZztAAmc7gAJnO8ACZzxAAmc8gAJnW0ACZ1vAAmdcQAJnXMACZ12AAmddwAJnXgACZ15AAmdegAJnXwACZ1+AAmdfwAJnYAACZ2CAAmdgwAJnf4ACZ4AAAmeAgAJngQACZ4HAAmeCAAJngkACZ4KAAmeCwAJng0ACZ4PAAmeEAAJnhEACZ4TAAmeFAAJnqcACZ7KAAme6gAJnwoACZ8MAAmfDgAJnxAACZ8SAAmfFQAJnxYACZ8XAAmfGgAJnxsACZ8dAAmfHgAJnyAACZ8jAAmfJAAJnyUACZ8oAAmfKQAJny4ACZ9HAAmfUAAJn1IACZ9UAAmfXQAJn2AACZ9jAAmfZQAJn64ACZ/SAAmf+QAJoB0ACaAgAAmgIgAJoCQACaAmAAmgKAAJoCoACaArAAmgLgAJoEcACaBoAAmgagAJoGwACaBuAAmgcAAJoHIACaB0AAmgdgAJoHgACaCZAAmgnAAJoJ8ACaCiAAmgpQAJoKgACaCrAAmgrgAJoLEACaCzAAmhLgAJoTAACaEyAAmhNAAJoTcACaE4AAmhOQAJoToACaE7AAmhPQAJoT8ACaFAAAmhQQAJoUMACaFEAAmhvwAJocEACaHDAAmhxQAJocgACaHJAAmhygAJocsACaHMAAmhzgAJodAACaHRAAmh0gAJodQACaHVAAmiUAAJolIACaJVAAmiVwAJoloACaJbAAmiXAAJol0ACaJeAAmiYAAJomIACaJjAAmiZAAJomYACaJnAAmigAAJooEACaKCAAmihAAJov8ACaMBAAmjAwAJowUACaMIAAmjCQAJowoACaMLAAmjDAAJow4ACaMQAAmjEQAJoxIACaMUAAmjFQAJo5AACaOSAAmjlAAJo5YACaOZAAmjmgAJo5sACaOcAAmjnQAJo58ACaOhAAmjogAJo6MACaOlAAmjpgAJpCEACaQjAAmkJQAJpCcACaQqAAmkKwAJpCwACaQtAAmkLgAJpDAACaQyAAmkMwAJpDQACaQ2AAmkNwAJpLIACaS0AAmktgAJpLgACaS7AAmkvAAJpL0ACaS+AAmkvwAJpMEACaTDAAmkxAAJpMUACaTHAAmkyAAJpUMACaVFAAmlRwAJpUkACaVMAAmlTQAJpU4ACaVPAAmlUAAJpVIACaVUAAmlVQAJpVYACaVYAAmlWQAJpaIACaXGAAml7QAJphEACaYUAAmmFgAJphgACaYaAAmmHAAJph4ACaYfAAmmIgAJpjsACaZYAAmmWgAJplwACaZeAAmmYAAJpmIACaZkAAmmZgAJpoMACaaGAAmmiQAJpowACaaPAAmmkgAJppUACaaYAAmmmgAJpxUACacXAAmnGQAJpxsACaceAAmnHwAJpyAACachAAmnIgAJpyQACacmAAmnJwAJpygACacqAAmnKwAJp6YACaeoAAmnqgAJp6wACaevAAmnsAAJp7EACaeyAAmnswAJp7UACae3AAmnuAAJp7kACae7AAmnvAAJqDcACag5AAmoOwAJqD0ACahAAAmoQQAJqEIACahDAAmoRAAJqEYACahIAAmoSQAJqEoACahMAAmoTQAJqMgACajKAAmozQAJqM8ACajSAAmo0wAJqNQACajVAAmo1gAJqNgACajaAAmo2wAJqNwACajeAAmo3wAJqVoACalcAAmpXgAJqWAACaljAAmpZAAJqWUACalmAAmpZwAJqWkACalrAAmpbAAJqW0ACalvAAmpcAAJqesACantAAmp7wAJqfEACan0AAmp9QAJqfYACan3AAmp+AAJqfoACan8AAmp/QAJqf4ACaoAAAmqAQAJqnwACap+AAmqgAAJqoIACaqFAAmqhgAJqocACaqIAAmqiQAJqosACaqNAAmqjgAJqo8ACaqRAAmqkgAJqyUACatIAAmraAAJq4gACauKAAmrjAAJq44ACauQAAmrkwAJq5QACauVAAmrmAAJq5kACaubAAmrnAAJq54ACauhAAmrogAJq6MACaumAAmrpwAJq7AACavJAAmr0gAJq9QACavWAAmr3wAJq+IACavlAAmr5wAJrDAACaxUAAmsewAJrJ8ACayiAAmspAAJrKYACayoAAmsqgAJrKwACaytAAmssAAJrMkACazqAAms7AAJrO4ACazwAAms8gAJrPQACaz2AAms+AAJrPoACa0bAAmtHgAJrSEACa0kAAmtJwAJrSoACa0tAAmtMAAJrTMACa01AAmtsAAJrbIACa20AAmttgAJrbkACa26AAmtuwAJrbwACa29AAmtvwAJrcEACa3CAAmtwwAJrcUACa3GAAmuQQAJrkMACa5FAAmuRwAJrkoACa5LAAmuTAAJrk0ACa5OAAmuUAAJrlIACa5TAAmuVAAJrlYACa5XAAmu0gAJrtQACa7XAAmu2QAJrtwACa7dAAmu3gAJrt8ACa7gAAmu4gAJruQACa7lAAmu5gAJrugACa7pAAmvAgAJrwMACa8EAAmvBgAJr4EACa+DAAmvhQAJr4cACa+KAAmviwAJr4wACa+NAAmvjgAJr5AACa+SAAmvkwAJr5QACa+WAAmvlwAJsBIACbAUAAmwFgAJsBgACbAbAAmwHAAJsB0ACbAeAAmwHwAJsCEACbAjAAmwJAAJsCUACbAnAAmwKAAJsKMACbClAAmwpwAJsKkACbCsAAmwrQAJsK4ACbCvAAmwsAAJsLIACbC0AAmwtQAJsLYACbC4AAmwuQAJsTQACbE2AAmxOAAJsToACbE9AAmxPgAJsT8ACbFAAAmxQQAJsUMACbFFAAmxRgAJsUcACbFJAAmxSgAJscUACbHHAAmxyQAJscsACbHOAAmxzwAJsdAACbHRAAmx0gAJsdQACbHWAAmx1wAJsdgACbHaAAmx2wAJsiQACbJIAAmybwAJspMACbKWAAmymAAJspoACbKcAAmyngAJsqAACbKhAAmypAAJsr0ACbLaAAmy3AAJst4ACbLgAAmy4gAJsuQACbLmAAmy6AAJswUACbMIAAmzCwAJsw4ACbMRAAmzFAAJsxcACbMaAAmzHAAJs5cACbOZAAmzmwAJs50ACbOgAAmzoQAJs6IACbOjAAmzpAAJs6YACbOoAAmzqQAJs6oACbOsAAmzrQAJtCgACbQqAAm0LAAJtC4ACbQxAAm0MgAJtDMACbQ0AAm0NQAJtDcACbQ5AAm0OgAJtDsACbQ9AAm0PgAJtLkACbS7AAm0vQAJtL8ACbTCAAm0wwAJtMQACbTFAAm0xgAJtMgACbTKAAm0ywAJtMwACbTOAAm0zwAJtUoACbVMAAm1TwAJtVEACbVUAAm1VQAJtVYACbVXAAm1WAAJtVoACbVcAAm1XQAJtV4ACbVgAAm1YQAJtdwACbXeAAm14AAJteIACbXlAAm15gAJtecACbXoAAm16QAJtesACbXtAAm17gAJte8ACbXxAAm18gAJtm0ACbZvAAm2cQAJtnMACbZ2AAm2dwAJtngACbZ5AAm2egAJtnwACbZ+AAm2fwAJtoAACbaCAAm2gwAJtv4ACbcAAAm3AgAJtwQACbcHAAm3CAAJtwkACbcKAAm3CwAJtw0ACbcPAAm3EAAJtxEACbcTAAm3FAAJt6cACbfKAAm36gAJuAoACbgMAAm4DgAJuBAACbgSAAm4FQAJuBYACbgXAAm4GgAJuBsACbgdAAm4HgAJuCEACbgkAAm4JQAJuCYACbgpAAm4KgAJuC8ACbhIAAm4UQAJuFMACbhWAAm4XwAJuGIACbhlAAm4ZwAJuLAACbjUAAm4+wAJuR8ACbkiAAm5JAAJuSYACbkoAAm5KgAJuSwACbktAAm5MAAJuUkACblqAAm5bAAJuW4ACblwAAm5cgAJuXQACbl2AAm5eAAJuXoACbmbAAm5ngAJuaEACbmkAAm5pwAJuaoACbmtAAm5sAAJubMACbm1AAm6MAAJujIACbo0AAm6NgAJujkACbo6AAm6OwAJujwACbo9AAm6PwAJukEACbpCAAm6QwAJukUACbpGAAm6wQAJusMACbrFAAm6xwAJusoACbrLAAm6zAAJus0ACbrOAAm60AAJutIACbrTAAm61AAJutYACbrXAAm7UgAJu1QACbtXAAm7WQAJu1wACbtdAAm7XgAJu18ACbtgAAm7YgAJu2QACbtlAAm7ZgAJu2gACbtpAAm7ggAJu4MACbuEAAm7hgAJvAEACbwDAAm8BQAJvAcACbwKAAm8CwAJvAwACbwNAAm8DgAJvBAACbwSAAm8EwAJvBQACbwWAAm8FwAJvJIACbyUAAm8lgAJvJgACbybAAm8nAAJvJ0ACbyeAAm8nwAJvKEACbyjAAm8pAAJvKUACbynAAm8qAAJvSMACb0lAAm9JwAJvSkACb0sAAm9LQAJvS4ACb0vAAm9MAAJvTIACb00AAm9NQAJvTYACb04AAm9OQAJvbQACb22AAm9uAAJvboACb29AAm9vgAJvb8ACb3AAAm9wQAJvcMACb3FAAm9xgAJvccACb3JAAm9ygAJvkUACb5HAAm+SQAJvksACb5OAAm+TwAJvlAACb5RAAm+UgAJvlQACb5WAAm+VwAJvlgACb5aAAm+WwAJvqQACb7IAAm+7wAJvxMACb8WAAm/GQAJvxsACb8dAAm/HwAJvyEACb8iAAm/JQAJvz4ACb9bAAm/XgAJv2EACb9kAAm/ZwAJv2oACb9tAAm/cAAJv40ACb+QAAm/kwAJv5YACb+ZAAm/nAAJv58ACb+iAAm/pAAJwB8ACcAhAAnAJAAJwCYACcApAAnAKgAJwCsACcAsAAnALQAJwC8ACcAyAAnAMwAJwDQACcA2AAnANwAJwLIACcC0AAnAtwAJwLkACcC8AAnAvQAJwL4ACcC/AAnAwAAJwMIACcDFAAnAxgAJwMcACcDJAAnAygAJwUUACcFHAAnBSgAJwUwACcFPAAnBUAAJwVEACcFSAAnBUwAJwVUACcFYAAnBWQAJwVoACcFcAAnBXQAJwdgACcHaAAnB3QAJwd8ACcHiAAnB4wAJweQACcHlAAnB5gAJwegACcHrAAnB7AAJwe0ACcHvAAnB8AAJwnMACcKXAAnCuwAJwt4ACcMFAAnDJQAJw0wACcNzAAnDkwAJw7cACcPbAAnD3QAJw+AACcPiAAnD5AAJw+YACcPpAAnD7AAJw+4ACcPwAAnD8wAJw/UACcP3AAnD+gAJw/0ACcP+AAnEAwAJxBwACcQhAAnEIwAJxCgACcQrAAnELQAJxHYACcSaAAnEwQAJxOUACcToAAnE6gAJxOwACcTuAAnE8AAJxPIACcTzAAnE9gAJxQ8ACcU0AAnFNgAJxTgACcU6AAnFPAAJxT4ACcVAAAnFQgAJxUQACcVGAAnFawAJxW4ACcVxAAnFdAAJxXcACcV6AAnFfQAJxYAACcWDAAnFhgAJxYgACcYDAAnGBQAJxggACcYKAAnGDQAJxg4ACcYPAAnGEAAJxhEACcYTAAnGFQAJxhYACcYXAAnGGQAJxhoACcYrAAnGLAAJxi4ACcapAAnGqwAJxq0ACcavAAnGsgAJxrMACca0AAnGtQAJxrYACca4AAnGugAJxrsACca8AAnGvgAJxr8ACcc6AAnHPAAJxz8ACcdBAAnHRAAJx0UACcdGAAnHRwAJx0gACcdKAAnHTAAJx00ACcdOAAnHUAAJx1EACcdiAAnHYwAJx2UACcfgAAnH4gAJx+QACcfmAAnH6QAJx+oACcfrAAnH7AAJx+0ACcfvAAnH8QAJx/IACcfzAAnH9QAJx/YACchxAAnIcwAJyHYACch4AAnIewAJyHwACch9AAnIfgAJyH8ACciBAAnIgwAJyIQACciFAAnIhwAJyIgACciZAAnImgAJyJwACckXAAnJGQAJyRsACckdAAnJIAAJySEACckiAAnJIwAJySQACckmAAnJKAAJySkACckqAAnJLAAJyS0ACcmoAAnJqgAJya0ACcmvAAnJsgAJybMACcm0AAnJtQAJybYACcm4AAnJugAJybsACcm8AAnJvgAJyb8ACcnYAAnJ2QAJydoACcncAAnKVwAJylkACcpbAAnKXQAJymAACcphAAnKYgAJymMACcpkAAnKZgAJymgACcppAAnKagAJymwACcptAAnK6AAJyuoACcrtAAnK7wAJyvIACcrzAAnK9AAJyvUACcr2AAnK+AAJyvoACcr7AAnK/AAJyv4ACcr/AAnLGQAJyzIACctDAAnLRgAJy0kACctMAAnLTwAJy2AACctjAAnLZgAJy2kACctsAAnLbgAJy30ACcuRAAnLnQAJy7MACcxGAAnMaQAJzIkACcypAAnMqwAJzK0ACcyvAAnMsQAJzLQACcy1AAnMtgAJzLkACcy6AAnMvAAJzL0ACczAAAnMwwAJzMQACczFAAnMyAAJzMkACczOAAnM5wAJzPAACczyAAnM9QAJzP4ACc0BAAnNBAAJzQYACc1PAAnNcwAJzZoACc2+AAnNwQAJzcMACc3FAAnNxwAJzckACc3LAAnNzAAJzc8ACc3oAAnOCQAJzgsACc4NAAnODwAJzhEACc4TAAnOFQAJzhcACc4ZAAnOOgAJzj0ACc5AAAnOQwAJzkYACc5JAAnOTAAJzk8ACc5SAAnOVAAJzs8ACc7RAAnO0wAJztUACc7YAAnO2QAJztoACc7bAAnO3AAJzt4ACc7gAAnO4QAJzuIACc7kAAnO5QAJz2AACc9iAAnPZAAJz2YACc9pAAnPagAJz2sACc9sAAnPbQAJz28ACc9xAAnPcgAJz3MACc91AAnPdgAJz/EACc/zAAnP9gAJz/gACc/7AAnP/AAJz/0ACc/+AAnP/wAJ0AEACdADAAnQBAAJ0AUACdAHAAnQCAAJ0CEACdAiAAnQIwAJ0CUACdCgAAnQogAJ0KQACdCmAAnQqQAJ0KoACdCrAAnQrAAJ0K0ACdCvAAnQsQAJ0LIACdCzAAnQtQAJ0LYACdExAAnRMwAJ0TUACdE3AAnROgAJ0TsACdE8AAnRPQAJ0T4ACdFAAAnRQgAJ0UMACdFEAAnRRgAJ0UcACdHCAAnRxAAJ0cYACdHIAAnRywAJ0cwACdHNAAnRzgAJ0c8ACdHRAAnR0wAJ0dQACdHVAAnR1wAJ0dgACdJTAAnSVQAJ0lcACdJZAAnSXAAJ0l0ACdJeAAnSXwAJ0mAACdJiAAnSZAAJ0mUACdJmAAnSaAAJ0mkACdLkAAnS5gAJ0ugACdLqAAnS7QAJ0u4ACdLvAAnS8AAJ0vEACdLzAAnS9QAJ0vYACdL3AAnS+QAJ0voACdNDAAnTZwAJ044ACdOyAAnTtQAJ07gACdO6AAnTvAAJ074ACdPAAAnTwQAJ08QACdPdAAnT+gAJ0/0ACdQAAAnUAwAJ1AYACdQJAAnUDAAJ1A8ACdQsAAnULwAJ1DIACdQ1AAnUOAAJ1DsACdQ+AAnUQQAJ1EMACdS+AAnUwAAJ1MMACdTFAAnUyAAJ1MkACdTKAAnUywAJ1MwACdTOAAnU0QAJ1NIACdTTAAnU1QAJ1NYACdVRAAnVUwAJ1VYACdVYAAnVWwAJ1VwACdVdAAnVXgAJ1V8ACdVhAAnVZAAJ1WUACdVmAAnVaAAJ1WkACdXkAAnV5gAJ1ekACdXrAAnV7gAJ1e8ACdXwAAnV8QAJ1fIACdX0AAnV9wAJ1fgACdX5AAnV+wAJ1fwACdZ3AAnWeQAJ1nwACdZ+AAnWgQAJ1oIACdaDAAnWhAAJ1oUACdaHAAnWigAJ1osACdaMAAnWjgAJ1o8ACdcKAAnXDAAJ1w4ACdcQAAnXEwAJ1xQACdcVAAnXFgAJ1xcACdcZAAnXHAAJ1x0ACdceAAnXIAAJ1yEACdecAAnXngAJ16AACdeiAAnXpQAJ16YACdenAAnXqAAJ16kACderAAnXrgAJ168ACdewAAnXsgAJ17MACdguAAnYMAAJ2DMACdg1AAnYOAAJ2DkACdg6AAnYOwAJ2DwACdg+AAnYQQAJ2EIACdhDAAnYRQAJ2EYACdjZAAnY/AAJ2RwACdk8AAnZPgAJ2UAACdlCAAnZRAAJ2UcACdlIAAnZSQAJ2UwACdlNAAnZTwAJ2VAACdlSAAnZVQAJ2VYACdlXAAnZWgAJ2VsACdlgAAnZeQAJ2YIACdmEAAnZhgAJ2Y8ACdmSAAnZlQAJ2ZcACdngAAnaBAAJ2isACdpPAAnaUgAJ2lQACdpWAAnaWAAJ2loACdpcAAnaXQAJ2mAACdp5AAnamgAJ2pwACdqeAAnaoAAJ2qIACdqkAAnapgAJ2qgACdqqAAnaywAJ2s4ACdrRAAna1AAJ2tcACdraAAna3QAJ2uAACdrjAAna5QAJ22AACdtiAAnbZAAJ22YACdtpAAnbagAJ22sACdtsAAnbbQAJ228ACdtxAAnbcgAJ23MACdt1AAnbdgAJ2/EACdvzAAnb9QAJ2/cACdv6AAnb+wAJ2/wACdv9AAnb/gAJ3AAACdwCAAncAwAJ3AQACdwGAAncBwAJ3IIACdyEAAnchwAJ3IkACdyMAAncjQAJ3I4ACdyPAAnckAAJ3JIACdyUAAnclQAJ3JYACdyYAAncmQAJ3LIACdyzAAnctAAJ3LYACd0xAAndMwAJ3TUACd03AAndOgAJ3TsACd08AAndPQAJ3T4ACd1AAAndQgAJ3UMACd1EAAndRgAJ3UcACd3CAAndxAAJ3cYACd3IAAndywAJ3cwACd3NAAndzgAJ3c8ACd3RAAnd0wAJ3dQACd3VAAnd1wAJ3dgACd5TAAneVQAJ3lcACd5ZAAneXAAJ3l0ACd5eAAneXwAJ3mAACd5iAAneZAAJ3mUACd5mAAneaAAJ3mkACd7kAAne5gAJ3ugACd7qAAne7QAJ3u4ACd7vAAne8AAJ3vEACd7zAAne9QAJ3vYACd73AAne+QAJ3voACd91AAnfdwAJ33kACd97AAnffgAJ338ACd+AAAnfgQAJ34IACd+EAAnfhgAJ34cACd+IAAnfigAJ34sACd/UAAnf+AAJ4B8ACeBDAAngRgAJ4EgACeBKAAngTAAJ4E4ACeBQAAngUQAJ4FQACeBtAAngigAJ4IwACeCOAAngkAAJ4JIACeCUAAnglgAJ4JgACeC1AAnguAAJ4LsACeC+AAngwQAJ4MQACeDHAAngygAJ4MwACeFHAAnhSQAJ4UsACeFNAAnhUAAJ4VEACeFSAAnhUwAJ4VQACeFWAAnhWAAJ4VkACeFaAAnhXAAJ4V0ACeHYAAnh2gAJ4dwACeHeAAnh4QAJ4eIACeHjAAnh5AAJ4eUACeHnAAnh6QAJ4eoACeHrAAnh7QAJ4e4ACeJpAAniawAJ4m0ACeJvAAnicgAJ4nMACeJ0AAnidQAJ4nYACeJ4AAniegAJ4nsACeJ8AAnifgAJ4n8ACeL6AAni/AAJ4v4ACeMAAAnjAwAJ4wQACeMFAAnjBgAJ4wcACeMJAAnjCwAJ4wwACeMNAAnjDwAJ4xAACeOLAAnjjQAJ448ACeORAAnjlAAJ45UACeOWAAnjlwAJ45gACeOaAAnjnAAJ450ACeOeAAnjoAAJ46EACeQcAAnkHgAJ5CAACeQiAAnkJQAJ5CYACeQnAAnkKAAJ5CkACeQrAAnkLQAJ5C4ACeQvAAnkMQAJ5DIACeStAAnkrwAJ5LEACeSzAAnktgAJ5LcACeS4AAnkuQAJ5LoACeS8AAnkvgAJ5L8ACeTAAAnkwgAJ5MMACeVWAAnleQAJ5ZkACeW5AAnluwAJ5b0ACeW/AAnlwQAJ5cQACeXFAAnlxgAJ5ckACeXKAAnlzAAJ5c0ACeXPAAnl0gAJ5dMACeXUAAnl1wAJ5dgACeXdAAnl9gAJ5f8ACeYBAAnmAwAJ5gwACeYPAAnmEgAJ5hQACeZdAAnmgQAJ5qgACebMAAnmzwAJ5tEACebTAAnm1QAJ5tcACebZAAnm2gAJ5t0ACeb2AAnnFwAJ5xkACecbAAnnHQAJ5x8ACechAAnnIwAJ5yUACecnAAnnSAAJ50sACedOAAnnUQAJ51QACedXAAnnWgAJ510ACedgAAnnYgAJ590ACeffAAnn4QAJ5+MACefmAAnn5wAJ5+gACefpAAnn6gAJ5+wACefuAAnn7wAJ5/AACefyAAnn8wAJ6G4ACehwAAnocgAJ6HQACeh3AAnoeAAJ6HkACeh6AAnoewAJ6H0ACeh/AAnogAAJ6IEACeiDAAnohAAJ6P8ACekBAAnpBAAJ6QYACekJAAnpCgAJ6QsACekMAAnpDQAJ6Q8ACekRAAnpEgAJ6RMACekVAAnpFgAJ6S8ACekwAAnpMQAJ6TMACemuAAnpsAAJ6bIACem0AAnptwAJ6bgACem5AAnpugAJ6bsACem9AAnpvwAJ6cAACenBAAnpwwAJ6cQACeo/AAnqQQAJ6kMACepFAAnqSAAJ6kkACepKAAnqSwAJ6kwACepOAAnqUAAJ6lEACepSAAnqVAAJ6lUACerQAAnq0gAJ6tQACerWAAnq2QAJ6toACerbAAnq3AAJ6t0ACerfAAnq4QAJ6uIACerjAAnq5QAJ6uYACethAAnrYwAJ62UACetnAAnragAJ62sACetsAAnrbQAJ624ACetwAAnrcgAJ63MACet0AAnrdgAJ63cACevyAAnr9AAJ6/YACev4AAnr+wAJ6/wACev9AAnr/gAJ6/8ACewBAAnsAwAJ7AQACewFAAnsBwAJ7AgACexRAAnsdQAJ7JwACezAAAnswwAJ7MUACezHAAnsyQAJ7MsACezNAAnszgAJ7NEACezqAAntBwAJ7QkACe0LAAntDQAJ7Q8ACe0RAAntEwAJ7RUACe0yAAntNQAJ7TgACe07AAntPgAJ7UEACe1EAAntRwAJ7UkACe3EAAntxgAJ7cgACe3KAAntzQAJ7c4ACe3PAAnt0AAJ7dEACe3TAAnt1QAJ7dYACe3XAAnt2QAJ7doACe5VAAnuVwAJ7lkACe5bAAnuXgAJ7l8ACe5gAAnuYQAJ7mIACe5kAAnuZgAJ7mcACe5oAAnuagAJ7msACe7mAAnu6AAJ7uoACe7sAAnu7wAJ7vAACe7xAAnu8gAJ7vMACe71AAnu9wAJ7vgACe75AAnu+wAJ7vwACe93AAnveQAJ73wACe9+AAnvgQAJ74IACe+DAAnvhAAJ74UACe+HAAnviQAJ74oACe+LAAnvjQAJ744ACfAJAAnwCwAJ8A0ACfAPAAnwEgAJ8BMACfAUAAnwFQAJ8BYACfAYAAnwGgAJ8BsACfAcAAnwHgAJ8B8ACfCaAAnwnAAJ8J4ACfCgAAnwowAJ8KQACfClAAnwpgAJ8KcACfCpAAnwqwAJ8KwACfCtAAnwrwAJ8LAACfErAAnxLQAJ8S8ACfExAAnxNAAJ8TUACfE2AAnxNwAJ8TgACfE6AAnxPAAJ8T0ACfE+AAnxQAAJ8UEACfHUAAnx9wAJ8hcACfI3AAnyOQAJ8jsACfI9AAnyPwAJ8kIACfJDAAnyRAAJ8kcACfJIAAnySgAJ8ksACfJNAAnyUAAJ8lEACfJSAAn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D1AAKA9YACgPYAAoD2QAKA9oACgPcAAoD3QAKA/YACgP3AAoD+AAKA/oACgR1AAoEdwAKBHkACgR7AAoEfgAKBH8ACgSAAAoEgQAKBIIACgSEAAoEhgAKBIcACgSIAAoEigAKBIsACgUGAAoFCAAKBQoACgUMAAoFDwAKBRAACgURAAoFEgAKBRMACgUVAAoFFwAKBRgACgUZAAoFGwAKBRwACgWXAAoFmQAKBZsACgWdAAoFoAAKBaEACgWiAAoFowAKBaQACgWmAAoFqAAKBakACgWqAAoFrAAKBa0ACgYoAAoGKgAKBiwACgYuAAoGMQAKBjIACgYzAAoGNAAKBjUACgY3AAoGOQAKBjoACgY7AAoGPQAKBj4ACga5AAoGuwAKBr0ACga/AAoGwgAKBsMACgbEAAoGxQAKBsYACgbIAAoGygAKBssACgbMAAoGzgAKBs8ACgcYAAoHPAAKB2MACgeHAAoHigAKB4wACgeOAAoHkAAKB5IACgeUAAoHlQAKB5gACgexAAoHzgAKB9AACgfSAAoH1AAKB9YACgfYAAoH2gAKB9wACgf5AAoH/AAKB/8ACggCAAoIBQAKCAgACggLAAoIDgAKCBAACgiLAAoIjQAKCI8ACgiRAAoIlAAKCJUACgiWAAoIlwAKCJgACgiaAAoInAAKCJ0ACgieAAoIoAAKCKEACgkcAAoJHgAKCSAACgkiAAoJJQAKCSYACgknAAoJKAAKCSkACgkrAAoJLQAKCS4ACgkvAAoJMQAKCTIACgmtAAoJrwAKCbEACgmzAAoJtgAKCbcACgm4AAoJuQAKCboACgm8AAoJvgAKCb8ACgnAAAoJwgAKCcMACgo+AAoKQAAKCkMACgpFAAoKSAAKCkkACgpKAAoKSwAKCkwACgpOAAoKUAAKClEACgpSAAoKVAAKClUACgrQAAoK0gAKCtQACgrWAAoK2QAKCtoACgrbAAoK3AAKCt0ACgrfAAoK4QAKCuIACgrjAAoK5QAKCuYACgthAAoLYwAKC2UACgtnAAoLagAKC2sACgtsAAoLbQAKC24ACgtwAAoLcgAKC3MACgt0AAoLdgAKC3cACgvyAAoL9AAKC/YACgv4AAoL+wAKC/wACgv9AAoL/gAKC/8ACgwBAAoMAwAKDAQACgwFAAoMBwAKDAgACgybAAoMvgAKDN4ACgz+AAoNAAAKDQIACg0EAAoNBgAKDQkACg0KAAoNCwAKDQ4ACg0PAAoNEQAKDRIACg0UAAoNFwAKDRgACg0ZAAoNHAAKDR0ACg0iAAoNOwAKDUQACg1GAAoNSAAKDVEACg1UAAoNVwAKDVkACg2iAAoNxgAKDe0ACg4RAAoOFAAKDhYACg4YAAoOGgAKDhwACg4eAAoOHwAKDiIACg47AAoOXAAKDl4ACg5gAAoOYgAKDmQACg5mAAoOaAAKDmoACg5sAAoOjQAKDpAACg6TAAoOlgAKDpkACg6cAAoOnwAKDqIACg6lAAoOpwAKDyIACg8kAAoPJgAKDygACg8rAAoPLAAKDy0ACg8uAAoPLwAKDzEACg8zAAoPNAAKDzUACg83AAoPOAAKD7MACg+1AAoPtwAKD7kACg+8AAoPvQAKD74ACg+/AAoPwAAKD8IACg/EAAoPxQAKD8YACg/IAAoPyQAKEEQAChBGAAoQSQAKEEsAChBOAAoQTwAKEFAAChBRAAoQUgAKEFQAChBWAAoQVwAKEFgAChBaAAoQWwAKEHQAChB1AAoQdgAKEHgAChDzAAoQ9QAKEPcAChD5AAoQ/AAKEP0AChD+AAoQ/wAKEQAAChECAAoRBAAKEQUAChEGAAoRCAAKEQkAChGEAAoRhgAKEYgAChGKAAoRjQAKEY4AChGPAAoRkAAKEZEAChGTAAoRlQAKEZYAChGXAAoRmQAKEZoAChIVAAoSFwAKEhkAChIbAAoSHgAKEh8AChIgAAoSIQAKEiIAChIkAAoSJgAKEicAChIoAAoSKgAKEisAChKmAAoSqAAKEqoAChKsAAoSrwAKErAAChKxAAoSsgAKErMAChK1AAoStwAKErgAChK5AAoSuwAKErwAChM3AAoTOQAKEzsAChM9AAoTQAAKE0EAChNCAAoTQwAKE0QAChNGAAoTSAAKE0kAChNKAAoTTAAKE00AChOWAAoTugAKE+EAChQFAAoUCAAKFAoAChQMAAoUDgAKFBAAChQSAAoUEwAKFBYAChQvAAoUTAAKFE4AChRQAAoUUgAKFFQAChRWAAoUWAAKFFoAChR3AAoUegAKFH0AChSAAAoUgwAKFIYAChSJAAoUjAAKFI4AChUJAAoVCwAKFQ0AChUPAAoVEgAKFRMAChUUAAoVFQAKFRYAChUYAAoVGgAKFRsAChUcAAoVHgAKFR8AChWaAAoVnAAKFZ4AChWgAAoVowAKFaQAChWlAAoVpgAKFacAChWpAAoVqwAKFawAChWtAAoVrwAKFbAAChYrAAoWLQAKFi8AChYxAAoWNAAKFjUAChY2AAoWNwAKFjgAChY6AAoWPAAKFj0AChY+AAoWQAAKFkEACha8AAoWvgAKFsEAChbDAAoWxgAKFscAChbIAAoWyQAKFsoAChbMAAoWzgAKFs8AChbQAAoW0gAKFtMAChdOAAoXUAAKF1IAChdUAAoXVwAKF1gAChdZAAoXWgAKF1sAChddAAoXXwAKF2AAChdhAAoXYwAKF2QAChffAAoX4QAKF+MAChflAAoX6AAKF+kAChfqAAoX6wAKF+wAChfuAAoX8AAKF/EAChfyAAoX9AAKF/UAChhwAAoYcgAKGHQAChh2AAoYeQAKGHoAChh7AAoYfAAKGH0AChh/AAoYgQAKGIIAChiDAAoYhQAKGIYAChkZAAoZPAAKGVwAChl8AAoZfgAKGYAAChmCAAoZhAAKGYcAChmIAAoZiQAKGYwAChmNAAoZjwAKGZAAChmSAAoZlQAKGZYAChmXAAoZmgAKGZsAChmgAAoZuQAKGcIAChnEAAoZxgAKGc8AChnSAAoZ1QAKGdcAChogAAoaRAAKGmsAChqPAAoakgAKGpQAChqWAAoamAAKGpoAChqcAAoanQAKGqAAChq5AAoa2gAKGtwAChreAAoa4AAKGuIAChrkAAoa5gAKGugAChrqAAobCwAKGw4AChsRAAobFAAKGxcAChsaAAobHQAKGyAAChsjAAobJQAKG6AAChuiAAobpAAKG6YAChupAAobqgAKG6sAChusAAobrQAKG68AChuxAAobsgAKG7MAChu1AAobtgAKHDEAChwzAAocNQAKHDcAChw6AAocOwAKHDwAChw9AAocPgAKHEAAChxCAAocQwAKHEQAChxGAAocRwAKHMIAChzEAAocxwAKHMkAChzMAAoczQAKHM4AChzPAAoc0AAKHNIAChzUAAoc1QAKHNYAChzYAAoc2QAKHPIAChzzAAoc9AAKHPYACh1xAAodcwAKHXUACh13AAodegAKHXsACh18AAodfQAKHX4ACh2AAAodggAKHYMACh2EAAodhgAKHYcACh4CAAoeBAAKHgYACh4IAAoeCwAKHgwACh4NAAoeDgAKHg8ACh4RAAoeEwAKHhQACh4VAAoeFwAKHhgACh6TAAoelQAKHpcACh6ZAAoenAAKHp0ACh6eAAoenwAKHqAACh6iAAoepAAKHqUACh6mAAoeqAAKHqkACh8kAAofJgAKHygACh8qAAofLQAKHy4ACh8vAAofMAAKHzEACh8zAAofNQAKHzYACh83AAofOQAKHzoACh+1AAoftwAKH7kACh+7AAofvgAKH78ACh/AAAofwQAKH8IACh/EAAofxgAKH8cACh/IAAofygAKH8sACiAUAAogOAAKIF8ACiCDAAoghgAKIIgACiCKAAogjAAKII4ACiCQAAogkQAKIJQACiCtAAogygAKIMwACiDOAAog0AAKINIACiDUAAog1gAKINgACiD1AAog+AAKIPsACiD+AAohAQAKIQQACiEHAAohCgAKIQwACiGHAAohiQAKIYsACiGNAAohkAAKIZEACiGSAAohkwAKIZQACiGWAAohmAAKIZkACiGaAAohnAAKIZ0ACiIYAAoiGgAKIhwACiIeAAoiIQAKIiIACiIjAAoiJAAKIiUACiInAAoiKQAKIioACiIrAAoiLQAKIi4ACiKpAAoiqwAKIq0ACiKvAAoisgAKIrMACiK0AAoitQAKIrYACiK4AAoiugAKIrsACiK8AAoivgAKIr8ACiM6AAojPAAKIz8ACiNBAAojRAAKI0UACiNGAAojRwAKI0gACiNKAAojTAAKI00ACiNOAAojUAAKI1EACiPMAAojzgAKI9AACiPSAAoj1QAKI9YACiPXAAoj2AAKI9kACiPbAAoj3QAKI94ACiPfAAoj4QAKI+IACiRdAAokXwAKJGEACiRjAAokZgAKJGcACiRoAAokaQAKJGoACiRsAAokbgAKJG8ACiRwAAokcgAKJHMACiTuAAok8AAKJPIACiT0AAok9wAKJPgACiT5AAok+gAKJPsACiT9AAok/wAKJQAACiUBAAolAwAKJQQACiWXAAolugAKJdoACiX6AAol/AAKJf4ACiYAAAomAgAKJgUACiYGAAomBwAKJgoACiYLAAomDQAKJg4ACiYRAAomFAAKJhUACiYWAAomGQAKJhoACiYfAAomOAAKJkEACiZDAAomRgAKJk8ACiZSAAomVQAKJlcACiagAAomxAAKJusACicPAAonEgAKJxQACicWAAonGAAKJxoACiccAAonHQAKJyAACic5AAonWgAKJ1wACideAAonYAAKJ2IACidkAAonZgAKJ2gACidqAAoniwAKJ44ACieRAAonlAAKJ5cACieaAAonnQAKJ6AACiejAAonpQAKKCAACigiAAooJAAKKCYACigpAAooKgAKKCsACigsAAooLQAKKC8ACigxAAooMgAKKDMACig1AAooNgAKKLEACiizAAootQAKKLcACii6AAoouwAKKLwACii9AAoovgAKKMAACijCAAoowwAKKMQACijGAAooxwAKKUIACilEAAopRwAKKUkACilMAAopTQAKKU4ACilPAAopUAAKKVIACilUAAopVQAKKVYACilYAAopWQAKKXIACilzAAopdAAKKXYACinxAAop8wAKKfUACin3AAop+gAKKfsACin8AAop/QAKKf4ACioAAAoqAgAKKgMACioEAAoqBgAKKgcACiqCAAoqhAAKKoYACiqIAAoqiwAKKowACiqNAAoqjgAKKo8ACiqRAAoqkwAKKpQACiqVAAoqlwAKKpgACisTAAorFQAKKxcACisZAAorHAAKKx0ACiseAAorHwAKKyAACisiAAorJAAKKyUACismAAorKAAKKykACiukAAorpgAKK6gACiuqAAorrQAKK64ACiuvAAorsAAKK7EACiuzAAortQAKK7YACiu3AAoruQAKK7oACiw1AAosNwAKLDkACiw7AAosPgAKLD8ACixAAAosQQAKLEIACixEAAosRgAKLEcACixIAAosSgAKLEsACiyUAAosuAAKLN8ACi0DAAotBgAKLQkACi0LAAotDQAKLQ8ACi0RAAotEgAKLRUACi0uAAotSwAKLU4ACi1RAAotVAAKLVcACi1aAAotXQAKLWAACi19AAotgAAKLYMACi2GAAotiQAKLYwACi2PAAotkgAKLZQACi4PAAouEQAKLhQACi4WAAouGQAKLhoACi4bAAouHAAKLh0ACi4fAAouIgAKLiMACi4kAAouJgAKLicACi6iAAoupAAKLqcACi6pAAourAAKLq0ACi6uAAourwAKLrAACi6yAAoutQAKLrYACi63AAouuQAKLroACi81AAovNwAKLzoACi88AAovPwAKL0AACi9BAAovQgAKL0MACi9FAAovSAAKL0kACi9KAAovTAAKL00ACi/IAAo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BCwAKQQwACkENAApBDgAKQQ8ACkERAApBFAAKQRUACkEWAApBGAAKQRkACkGUAApBlgAKQZkACkGbAApBngAKQZ8ACkGgAApBoQAKQaIACkGkAApBpwAKQagACkGpAApBqwAKQawACkI/AApCYgAKQoIACkKiAApCpAAKQqYACkKoAApCqgAKQq0ACkKuAApCrwAKQrIACkKzAApCtQAKQrYACkK4AApCuwAKQrwACkK9AApCwAAKQsEACkLGAApC3wAKQugACkLqAApC7AAKQvUACkL4AApC+wAKQv0ACkNGAApDagAKQ5EACkO1AApDuAAKQ7oACkO8AApDvgAKQ8AACkPCAApDwwAKQ8YACkPfAApEAAAKRAIACkQEAApEBgAKRAgACkQKAApEDAAKRA4ACkQQAApEMQAKRDQACkQ3AApEOgAKRD0ACkRAAApEQwAKREYACkRJAApESwAKRMYACkTIAApEygAKRMwACkTPAApE0AAKRNEACkTSAApE0wAKRNUACkTXAApE2AAKRNkACkTbAApE3AAKRVcACkVZAApFWwAKRV0ACkVgAApFYQAKRWIACkVjAApFZAAKRWYACkVoAApFaQAKRWoACkVsAApFbQAKRegACkXqAApF7QAKRe8ACkXyAApF8wAKRfQACkX1AApF9gAKRfgACkX6AApF+wAKRfwACkX+AApF/wAKRhgACkYZAApGGgAKRhwACkaXAApGmQAKRpsACkadAApGoAAKRqEACkaiAApGowAKRqQACkamAApGqAAKRqkACkaqAApGrAAKRq0ACkcoAApHKgAKRywACkcuAApHMQAKRzIACkczAApHNAAKRzUACkc3AApHOQAKRzoACkc7AApHPQAKRz4ACke5AApHuwAKR70ACke/AApHwgAKR8MACkfEAApHxQAKR8YACkfIAApHygAKR8sACkfMAApHzgAKR88ACkhKAApITAAKSE4ACkhQAApIUwAKSFQACkhVAApIVgAKSFcACkhZAApIWwAKSFwACkhdAApIXwAKSGAACkjbAApI3QAKSN8ACkjhAApI5AAKSOUACkjmAApI5wAKSOgACkjqAApI7AAKSO0ACkjuAApI8AAKSPEACkk6AApJXgAKSYUACkmpAApJrAAKSa4ACkmwAApJsgAKSbQACkm2AApJtwAKSboACknTAApJ8AAKSfIACkn0AApJ9gAKSfgACkn6AApJ/AAKSf4ACkobAApKHgAKSiEACkokAApKJwAKSioACkotAApKMAAKSjIACkqtAApKrwAKSrEACkqzAApKtgAKSrcACkq4AApKuQAKSroACkq8AApKvgAKSr8ACkrAAApKwgAKSsMACks+AApLQAAKS0IACktEAApLRwAKS0gACktJAApLSgAKS0sACktNAApLTwAKS1AACktRAApLUwAKS1QACkvPAApL0QAKS9MACkvVAApL2AAKS9kACkvaAApL2wAKS9wACkveAApL4AAKS+EACkviAApL5AAKS+UACkxgAApMYgAKTGQACkxmAApMaQAKTGoACkxrAApMbAAKTG0ACkxvAApMcQAKTHIACkxzAApMdQAKTHYACkzxAApM8wAKTPUACkz3AApM+gAKTPsACkz8AApM/QAKTP4ACk0AAApNAgAKTQMACk0EAApNBgAKTQcACk2CAApNhAAKTYYACk2IAApNiwAKTYwACk2NAApNjgAKTY8ACk2RAApNkwAKTZQACk2VAApNlwAKTZgACk4TAApOFQAKThcACk4ZAApOHAAKTh0ACk4eAApOHwAKTiAACk4iAApOJAAKTiUACk4mAApOKAAKTikACk68AApO3wAKTv8ACk8fAApPIQAKTyMACk8lAApPJwAKTyoACk8rAApPLAAKTy8ACk8wAApPMgAKTzMACk81AApPOAAKTzkACk86AApPPQAKTz4ACk9DAApPXAAKT2UACk9nAApPaQAKT3IACk91AApPeAAKT3oACk/DAApP5wAKUA4AClAyAApQNQAKUDcAClA5AApQOwAKUD0AClA/AApQQAAKUEMAClBcAApQfQAKUH8AClCBAApQgwAKUIUAClCHAApQiQAKUIsAClCNAApQrgAKULEAClC0AApQtwAKULoAClC9AApQwAAKUMMAClDGAApQyAAKUUMAClFFAApRRwAKUUkAClFMAApRTQAKUU4AClFPAApRUAAKUVIAClFUAApRVQAKUVYAClFYAApRWQAKUdQAClHWAApR2AAKUdoAClHdAApR3gAKUd8AClHgAApR4QAKUeMAClHlAApR5gAKUecAClHpAApR6gAKUmUAClJnAApSagAKUmwAClJvAApScAAKUnEAClJyAApScwAKUnUAClJ3AApSeAAKUnkAClJ7AApSfAAKUpUAClKWAApSlwAKUpkAClMUAApTFgAKUxgAClMaAApTHQAKUx4AClMfAApTIAAKUyEAClMjAApTJQAKUyYAClMnAApTKQAKUyoAClOlAApTpwAKU6kAClOrAApTrgAKU68AClOwAApTsQAKU7IAClO0AApTtgAKU7cAClO4AApTugAKU7sAClQ2AApUOAAKVDoAClQ8AApUPwAKVEAAClRBAApUQgAKVEMAClRFAApURwAKVEgAClRJAApUSwAKVEwAClTHAApUyQAKVMsAClTNAApU0AAKVNEAClTSAApU0wAKVNQAClTWAApU2AAKVNkAClTaAApU3AAKVN0AClVYAApVWgAKVVwAClVeAApVYQAKVWIAClVjAApVZAAKVWUAClVnAApVaQAKVWoAClVrAApVbQAKVW4AClW3AApV2wAKVgIAClYmAApWKQAKVisAClYtAApWLwAKVjEAClYzAApWNAAKVjcAClZQAApWbQAKVm8AClZxAApWcwAKVnUAClZ3AApWeQAKVnsAClaYAApWmwAKVp4AClahAApWpAAKVqcAClaqAApWrQAKVq8AClcqAApXLAAKVy4AClcwAApXMwAKVzQAClc1AApXNgAKVzcAClc5AApXOwAKVzwAClc9AApXPwAKV0AACle7AApXvQAKV78AClfBAApXxAAKV8UAClfGAApXxwAKV8gAClfKAApXzAAKV80AClfOAApX0AAKV9EAClhMAApYTgAKWFAAClhSAApYVQAKWFYAClhXAApYWAAKWFkAClhbAApYXQAKWF4AClhfAApYYQAKWGIACljdAApY3wAKWOIACljkAApY5wAKWOgACljpAApY6gAKWOsACljtAApY7wAKWPAACljxAApY8wAKWPQACllvAApZcQAKWXMACll1AApZeAAKWXkACll6AApZewAKWXwACll+AApZgAAKWYEAClmCAApZhAAKWYUACloAAApaAgAKWgQACloGAApaCQAKWgoACloLAApaDAAKWg0ACloPAApaEQAKWhIACloTAApaFQAKWhYAClqRAApakwAKWpUAClqXAApamgAKWpsAClqcAApanQAKWp4AClqgAApaogAKWqMAClqkAApapgAKWqcAClq4AApauQAKWrsACls2AApbOAAKWzoACls8AApbPwAKW0AACltBAApbQgAKW0MACltFAApbSAAKW0kACltKAApbTAAKW00AClvIAApbygAKW8wAClvOAApb0QAKW9IAClvTAApb1AAKW9UAClvXAApb2gAKW9sAClvcAApb3gAKW98AClxaAApcXAAKXF8AClxhAApcZAAKXGUAClxmAApcZwAKXGgAClxqAApcbQAKXG4AClxvAApccQAKXHIACl0FAApdKAAKXUgACl1oAApdagAKXWwACl1uAApdcAAKXXMACl10AApddQAKXXgACl15AApdewAKXXwACl1+AApdgQAKXYIACl2DAApdhgAKXYcACl2MAApdpQAKXa4ACl2wAApdsgAKXbsACl2+AApdwQAKXcMACl4MAApeMAAKXlcACl57AApefgAKXoAACl6CAApehAAKXoYACl6IAApeiQAKXowACl6lAApexgAKXsgACl7KAApezAAKXs4ACl7QAApe0gAKXtQACl7WAApe9wAKXvoACl79AApfAAAKXwMACl8GAApfCQAKXwwACl8PAApfEQAKX4wACl+OAApfkAAKX5IACl+VAApflgAKX5cACl+YAApfmQAKX5sACl+dAApfngAKX58ACl+hAApfogAKYB0ACmAfAApgIQAKYCMACmAmAApgJwAKYCgACmApAApgKgAKYCwACmAuAApgLwAKYDAACmAyAApgMwAKYK4ACmCwAApgswAKYLUACmC4AApguQAKYLoACmC7AApgvAAKYL4ACmDAAApgwQAKYMIACmDEAApgxQAKYN4ACmDfAApg4AAKYOIACmFdAAphXwAKYWEACmFjAAphZgAKYWcACmFoAAphaQAKYWoACmFsAAphbgAKYW8ACmFwAAphcgAKYXMACmHuAAph8AAKYfIACmH0AAph9wAKYfgACmH5AAph+gAKYfsACmH9AAph/wAKYgAACmIBAApiAwAKYgQACmJ/AApigQAKYoMACmKFAApiiAAKYokACmKKAApiiwAKYowACmKOAApikAAKYpEACmKSAApilAAKYpUACmMQAApjEgAKYxQACmMWAApjGQAKYxoACmMbAApjHAAKYx0ACmMfAApjIQAKYyIACmMjAApjJQAKYyYACmOhAApjowAKY6UACmOnAApjqgAKY6sACmOsAApjrQAKY64ACmOwAApjsgAKY7MACmO0AApjtgAKY7cACmQAAApkJAAKZEsACmRvAApkcgAKZHQACmR2AApkeAAKZHoACmR8AApkfQAKZIAACmSZAApktgAKZLgACmS6AApkvAAKZL4ACmTAAApkwgAKZMQACmThAApk5AAKZOcACmTqAApk7QAKZPAACmTzAApk9gAKZPgACmVzAApldQAKZXcACmV5AAplfAAKZX0ACmV+AAplfwAKZYAACmWCAAplhAAKZYUACmWGAApliAAKZYkACmYEAApmBgAKZggACmYKAApmDQAKZg4ACmYPAApmEAAKZhEACmYTAApmFQAKZhYACmYXAApmGQAKZhoACmaVAApmlwAKZpkACmabAApmngAKZp8ACmagAApmoQAKZqIACmakAApmpgAKZqcACmaoAApmqgAKZqsACmcmAApnKAAKZysACmctAApnMAAKZzEACmcyAApnMwAKZzQACmc2AApnOAAKZzkACmc6AApnPAAKZz0ACme4AApnugAKZ7wACme+AApnwQAKZ8IACmfDAApnxAAKZ8UACmfHAApnyQAKZ8oACmfLAApnzQAKZ84ACmhJAApoSwAKaE0ACmhPAApoUgAKaFMACmhUAApoVQAKaFYACmhYAApoWgAKaFsACmhcAApoXgAKaF8ACmjaAApo3AAKaN4ACmjgAApo4wAKaOQACmjlAApo5gAKaOcACmjpAApo6wAKaOwACmjtAApo7wAKaPAACmmDAApppgAKacYACmnmAApp6AAKaeoACmnsAApp7gAKafEACmnyAApp8wAKafYACmn3AApp+QAKafoACmn9AApqAAAKagEACmoCAApqBQAKagYACmoPAApqKAAKajEACmozAApqNgAKaj8ACmpCAApqRQAKakcACmqQAApqtAAKatsACmr/AAprAgAKawQACmsGAAprCAAKawoACmsMAAprDQAKaxAACmspAAprSgAKa0wACmtOAAprUAAKa1IACmtUAAprVgAKa1gACmtaAAprewAKa34ACmuBAAprhAAKa4cACmuKAAprjQAKa5AACmuTAAprlQAKbBAACmwSAApsFAAKbBYACmwZAApsGgAKbBsACmwcAApsHQAKbB8ACmwhAApsIgAKbCMACmwlAApsJgAKbKEACmyjAApspQAKbKcACmyqAApsqwAKbKwACmytAApsrgAKbLAACmyyAApsswAKbLQACmy2AApstwAKbTIACm00AAptNwAKbTkACm08AAptPQAKbT4ACm0/AAptQAAKbUIACm1EAAptRQAKbUYACm1IAAptSQAKbWIACm1jAAptZAAKbWYACm3hAApt4wAKbeUACm3nAApt6gAKbesACm3sAApt7QAKbe4ACm3wAApt8gAKbfMACm30AApt9gAKbfcACm5yAApudAAKbnYACm54AApuewAKbnwACm59AApufgAKbn8ACm6BAApugwAKboQACm6FAApuhwAKbogACm8DAApvBQAKbwcACm8JAApvDAAKbw0ACm8OAApvDwAKbxAACm8SAApvFAAKbxUACm8WAApvGAAKbxkACm+UAApvlgAKb5gACm+aAApvnQAKb54ACm+fAApvoAAKb6EACm+jAApvpQAKb6YACm+nAApvqQAKb6oACnAlAApwJwAKcCkACnArAApwLgAKcC8ACnAwAApwMQAKcDIACnA0AApwNgAKcDcACnA4AApwOgAKcDsACnCEAApwqAAKcM8ACnDzAApw9gAKcPkACnD7AApw/QAKcP8ACnEBAApxAgAKcQUACnEeAApxOwAKcT4ACnFBAApxRAAKcUcACnFKAApxTQAKcVAACnFtAApxcAAKcXMACnF2AApxeQAKcXwACnF/AApxggAKcYQACnH/AApyAQAKcgQACnIGAApyCQAKcgoACnILAApyDAAKcg0ACnIPAApyEgAKchMACnIUAApyFgAKchcACnKSAApylAAKcpcACnKZAApynAAKcp0ACnKeAApynwAKcqAACnKiAApypQAKcqYACnKnAApyqQAKcqoACnMlAApzJwAKcyoACnMsAApzLwAKczAACnMxAApzMgAKczMACnM1AApzOAAKczkACnM6AApzPAAKcz0ACnO4AApzugAKc70ACnO/AApzwgAKc8MACnPEAApzxQAKc8YACnPIAApzywAKc8wACnPNAApzzwAKc9AACnRLAAp0TQAKdE8ACnRRAAp0VAAKdFUACnRWAAp0VwAKdFgACnRaAAp0XQAKdF4ACnRfAAp0YQAKdGIACnTdAAp03wAKdOEACnTjAAp05gAKdOcACnToAAp06QAKdOoACnTsAAp07wAKdPAACnTxAAp08wAKdPQACnVvAAp1cQAKdXQACnV2AAp1eQAKdXoACnV7AAp1fAAKdX0ACnV/AAp1ggAKdYMACnWEAAp1hgAKdYcACnYaAAp2PQAKdl0ACnZ9AAp2fwAKdoEACnaDAAp2hQAKdogACnaJAAp2igAKdo0ACnaOAAp2kAAKdpEACnaTAAp2lgAKdpcACnaYAAp2mwAKdpwACnahAAp2ugAKdsMACnbFAAp2xwAKdtAACnbTAAp21gAKdtgACnchAAp3RQAKd2wACneQAAp3kwAKd5UACneXAAp3mQAKd5sACnedAAp3ngAKd6EACne6AAp32wAKd90ACnffAAp34QAKd+MACnflAAp35wAKd+kACnfrAAp4DAAKeA8ACngSAAp4FQAKeBgACngbAAp4HgAKeCEACngkAAp4JgAKeKEACnijAAp4pQAKeKcACniqAAp4qwAKeKwACnitAAp4rgAKeLAACniyAAp4swAKeLQACni2AAp4twAKeTIACnk0AAp5NgAKeTgACnk7AAp5PAAKeT0ACnk+AAp5PwAKeUEACnlDAAp5RAAKeUUACnlHAAp5SAAKecMACnnFAAp5yAAKecoACnnNAAp5zgAKec8ACnnQAAp50QAKedMACnnVAAp51gAKedcACnnZAAp52gAKefMACnn0AAp59QAKefcACnpyAAp6dAAKenYACnp4AAp6ewAKenwACnp9AAp6fgAKen8ACnqBAAp6gwAKeoQACnqFAAp6hwAKeogACnsDAAp7BQAKewcACnsJAAp7DAAKew0ACnsOAAp7DwAKexAACnsSAAp7FAAKexUACnsWAAp7GAAKexkACnuUAAp7lgAKe5gACnuaAAp7nQAKe54ACnufAAp7oAAKe6EACnujAAp7pQAKe6YACnunAAp7qQAKe6oACnwlAAp8JwAKfCkACnwrAAp8LgAKfC8ACnwwAAp8MQAKfDIACnw0AAp8NgAKfDcACnw4AAp8OgAKfDsACny2AAp8uAAKfLoACny8AAp8vwAKfMAACnzBAAp8wgAKfMMACnzFAAp8xwAKfMgACnzJAAp8ywAKfMwACn0VAAp9OQAKfWAACn2EAAp9hwAKfYkACn2LAAp9jQAKfY8ACn2RAAp9kgAKfZUACn2uAAp9ywAKfc0ACn3PAAp90QAKfdMACn3VAAp91wAKfdkACn32AAp9+QAKffwACn3/AAp+AgAKfgUACn4IAAp+CwAKfg0ACn6IAAp+igAKfowACn6OAAp+kQAKfpIACn6TAAp+lAAKfpUACn6XAAp+mQAKfpoACn6bAAp+nQAKfp4ACn8ZAAp/GwAKfx0ACn8fAAp/IgAKfyMACn8kAAp/JQAKfyYACn8oAAp/KgAKfysACn8sAAp/LgAKfy8ACn+qAAp/rAAKf64ACn+wAAp/swAKf7QACn+1AAp/tgAKf7cACn+5AAp/uwAKf7wACn+9AAp/vwAKf8AACoA7AAqAPQAKgEAACoBCAAqARQAKgEYACoBHAAqASAAKgEkACoBLAAqATQAKgE4ACoBPAAqAUQAKgFIACoDNAAqAzwAKgNEACoDTAAqA1gAKgNcACoDYAAqA2QAKgNoACoDcAAqA3gAKgN8ACoDgAAqA4gAKgOMACoFeAAqBYAAKgWIACoFkAAqBZwAKgWgACoFpAAqBagAKgWsACoFtAAqBbwAKgXAACoFxAAqBcwAKgXQACoHvAAqB8QAKgfMACoH1AAqB+AAKgfkACoH6AAqB+wAKgfwACoH+AAqCAAAKggEACoICAAqCBAAKggUACoIWAAqCFwAKghkACoKUAAqClgAKgpgACoKaAAqCnQAKgp4ACoKfAAqCoAAKgqEACoKjAAqCpgAKgqcACoKoAAqCqgAKgqsACoMmAAqDKAAKgyoACoMsAAqDLwAKgzAACoMxAAqDMgAKgzMACoM1AAqDOAAKgzkACoM6AAqDPAAKgz0ACoO4AAqDugAKg70ACoO/AAqDwgAKg8MACoPEAAqDxQAKg8YACoPIAAqDywAKg8wACoPNAAqDzwAKg9AACoRjAAqEhgAKhKYACoTGAAqEyAAKhMoACoTMAAqEzgAKhNEACoTSAAqE0wAKhNYACoTXAAqE2QAKhNoACoTdAAqE4AAKhOEACoTiAAqE5QAKhOYACoTrAAqFBAAKhQ0ACoUPAAqFEgAKhRsACoUeAAqFIQAKhSMACoVsAAqFkAAKhbcACoXbAAqF3gAKheAACoXiAAqF5AAKheYACoXoAAqF6QAKhewACoYFAAqGJgAKhigACoYqAAqGLAAKhi4ACoYwAAqGMgAKhjQACoY2AAqGVwAKhloACoZdAAqGYAAKhmMACoZmAAqGaQAKhmwACoZvAAqGcQAKhuwACobuAAqG8AAKhvIACob1AAqG9gAKhvcACob4AAqG+QAKhvsACob9AAqG/gAKhv8ACocBAAqHAgAKh30ACod/AAqHgQAKh4MACoeGAAqHhwAKh4gACoeJAAqHigAKh4wACoeOAAqHjwAKh5AACoeSAAqHkwAKiA4ACogQAAqIEwAKiBUACogYAAqIGQAKiBoACogbAAqIHAAKiB4ACoggAAqIIQAKiCIACogkAAqIJQAKiD4ACog/AAqIQAAKiEIACoi9AAqIvwAKiMEACojDAAqIxgAKiMcACojIAAqIyQAKiMoACojMAAqIzgAKiM8ACojQAAqI0gAKiNMAColOAAqJUAAKiVIAColUAAqJVwAKiVgAColZAAqJWgAKiVsAColdAAqJXwAKiWAAColhAAqJYwAKiWQAConfAAqJ4QAKieMAConlAAqJ6AAKiekAConqAAqJ6wAKiewAConuAAqJ8AAKifEAConyAAqJ9AAKifUACopwAAqKcgAKinQACop2AAqKeQAKinoACop7AAqKfAAKin0ACop/AAqKgQAKioIACoqDAAqKhQAKioYACosBAAqLAwAKiwUACosHAAqLCgAKiwsACosMAAqLDQAKiw4ACosQAAqLEgAKixMACosUAAqLFgAKixcACotgAAqLhAAKi6sACovPAAqL0gAKi9UACovXAAqL2QAKi9sACovdAAqL3gAKi+EACov6AAqMFwAKjBoACowdAAqMIAAKjCMACowmAAqMKQAKjCwACoxJAAqMTAAKjE8ACoxSAAqMVQAKjFgACoxbAAqMXgAKjGAACozbAAqM3QAKjOAACoziAAqM5QAKjOYACoznAAqM6AAKjOkACozrAAqM7gAKjO8ACozwAAqM8gAKjPMACo1uAAqNcAAKjXMACo11AAqNeAAKjXkACo16AAqNewAKjXwACo1+AAqNgQAKjYIACo2DAAqNhQAKjYYACo4BAAqOAwAKjgYACo4IAAqOCwAKjgwACo4NAAqODgAKjg8ACo4RAAqOFAAKjhUACo4WAAqOGAAKjhkACo6UAAqOlgAKjpkACo6bAAqOngAKjp8ACo6gAAqOoQAKjqIACo6kAAqOpwAKjqgACo6pAAqOqwAKjqwACo8vAAqPUwAKj3cACo+aAAqPwQAKj+EACpAIAAqQLwAKkE8ACpBzAAqQlwAKkJkACpCcAAqQngAKkKAACpCiAAqQpQAKkKgACpCqAAqQrAAKkK8ACpCxAAqQswAKkLYACpC5AAqQugAKkL8ACpDYAAqQ3QAKkN8ACpDkAAqQ5wAKkOkACpEyAAqRVgAKkX0ACpGhAAqRpAAKkaYACpGoAAqRqgAKkawACpGuAAqRrwAKkbIACpHLAAqR8AAKkfIACpH0AAqR9gAKkfgACpH6AAqR/AAKkf4ACpIAAAqSAgAKkicACpIqAAqSLQAKkjAACpIzAAqSNgAKkjkACpI8AAqSPwAKkkIACpJEAAqSvwAKksEACpLEAAqSxgAKkskACpLKAAqSywAKkswACpLNAAqSzwAKktEACpLSAAqS0wAKktUACpLWAAqS5wAKkugACpLqAAqTZQAKk2cACpNpAAqTawAKk24ACpNvAAqTcAAKk3EACpNyAAqTdAAKk3YACpN3AAqTeAAKk3oACpN7AAqT9gAKk/gACpP7AAqT/QAKlAAACpQBAAqUAgAKlAMACpQEAAqUBgAKlAgACpQJAAqUCgAKlAwACpQNAAqUHgAKlB8ACpQhAAqUnAAKlJ4ACpSgAAqUogAKlKUACpSmAAqUpwAKlKgACpSpAAqUqwAKlK0ACpSuAAqUrwAKlLEACpSyAAqVLQAKlS8ACpUyAAqVNAAKlTcACpU4AAqVOQAKlToACpU7AAqVPQAKlT8ACpVAAAqVQQAKlUMACpVEAAqVVQAKlVYACpVYAAqV0wAKldUACpXXAAqV2QAKldwACpXdAAqV3gAKld8ACpXgAAqV4gAKleQACpXlAAqV5gAKlegACpXpAAqWZAAKlmYACpZpAAqWawAKlm4ACpZvAAqWcAAKlnEACpZyAAqWdAAKlnYACpZ3AAqWeAAKlnoACpZ7AAqWlAAKlpUACpaWAAqWmAAKlxMACpcVAAqXFwAKlxkACpccAAqXHQAKlx4ACpcfAAqXIAAKlyIACpckAAqXJQAKlyYACpcoAAqXKQAKl6QACpemAAqXqQAKl6sACpeuAAqXrwAKl7AACpexAAqXsgAKl7QACpe2AAqXtwAKl7gACpe6AAqXuwAKl90ACpf2AAqX+wAKl/4ACpgDAAqYBgAKmAgACpgaAAqYrQAKmNAACpjwAAqZEAAKmRIACpkUAAqZFgAKmRgACpkbAAqZHAAKmR0ACpkgAAqZIQAKmSMACpkkAAqZJwAKmSoACpkrAAqZLAAKmS8ACpkwAAqZOQAKmVIACplbAAqZXQAKmWAACplpAAqZbAAKmW8ACplxAAqZugAKmd4ACpoFAAqaKQAKmiwACpouAAqaMAAKmjIACpo0AAqaNgAKmjcACpo6AAqaUwAKmnQACpp2AAqaeAAKmnoACpp8AAqafgAKmoAACpqCAAqahAAKmqUACpqoAAqaqwAKmq4ACpqxAAqatAAKmrcACpq6AAqavQAKmr8ACps6AAqbPAAKmz4ACptAAAqbQwAKm0QACptFAAqbRgAKm0cACptJAAqbSwAKm0wACptNAAqbTwAKm1AACpvLAAqbzQAKm88ACpvRAAqb1AAKm9UACpvWAAqb1wAKm9gACpvaAAqb3AAKm90ACpveAAqb4AAKm+EACpxcAAqcXgAKnGEACpxjAAqcZgAKnGcACpxoAAqcaQAKnGoACpxsAAqcbgAKnG8ACpxwAAqccgAKnHMACpyMAAqcjQAKnI4ACpyQAAqdCwAKnQ0ACp0PAAqdEQAKnRQACp0VAAqdFgAKnRcACp0YAAqdGgAKnRwACp0dAAqdHgAKnSAACp0hAAqdnAAKnZ4ACp2gAAqdogAKnaUACp2mAAqdpwAKnagACp2pAAqdqwAKna0ACp2uAAqdrwAKnbEACp2yAAqeLQAKni8ACp4xAAqeMwAKnjYACp43AAqeOAAKnjkACp46AAqePAAKnj4ACp4/AAqeQAAKnkIACp5DAAqevgAKnsAACp7CAAqexAAKnscACp7IAAqeyQAKnsoACp7LAAqezQAKns8ACp7QAAqe0QAKntMACp7UAAqfTwAKn1EACp9TAAqfVQAKn1gACp9ZAAqfWgAKn1sACp9cAAqfXgAKn2AACp9hAAqfYgAKn2QACp9lAAqfrgAKn9IACp/5AAqgHQAKoCAACqAjAAqgJQAKoCcACqApAAqgKwAKoCwACqAvAAqgSAAKoGUACqBoAAqgawAKoG4ACqBxAAqgdAAKoHcACqB6AAqglwAKoJoACqCdAAqgoAAKoKMACqCmAAqgqQAKoKwACqCuAAqhKQAKoSsACqEuAAqhMAAKoTMACqE0AAqhNQAKoTYACqE3AAqhOQAKoTwACqE9AAqhPgAKoUAACqFBAAqhvAAKob4ACqHBAAqhwwAKocYACqHHAAqhyAAKockACqHKAAqhzAAKoc8ACqHQAAqh0QAKodMACqHUAAqiTwAKolEACqJUAAqiVgAKolkACqJaAAqiWwAKolwACqJdAAqiXwAKomIACqJjAAqiZAAKomYACqJnAAqi4gAKouQACqLnAAqi6QAKouwACqLtAAqi7gAKou8ACqLwAAqi8gAKovUACqL2AAqi9wAKovkACqL6AAqjdQAKo3cACqN5AAqjewAKo34ACqN/AAqjgAAKo4EACqOCAAqjhAAKo4cACqOIAAqjiQAKo4sACqOMAAqkBwAKpAkACqQLAAqkDQAKpBAACqQRAAqkEgAKpBMACqQUAAqkFgAKpBkACqQaAAqkGwAKpB0ACqQeAAqkmQAKpJsACqSeAAqkoAAKpKMACqSkAAqkpQAKpKYACqSnAAqkqQAKpKwACqStAAqkrgAKpLAACqSxAAqkwgAKpMcACqTKAAqkzAAKpQUACqUIAAqlCgAKpQ0ACqUQAAqlEwAKpRYACqUbAAqlvgAKpeIACqYGAAqmJgAKpk0ACqZ0AAqmlAAKprsACqbfAAqnAgAKpykACqdNAAqncQAKp5UACqe8AAqnvQAKp78ACqfBAAqnxAAKp8YACqfJAAqnywAKp80ACqfQAAqn0gAKp9QACqfXAAqn2gAKp9wACqfeAAqn4AAKp+MACqfmAAqn6QAKp+4ACqgHAAqoDAAKqA4ACqgTAAqoFgAKqBgACqhhAAqohQAKqKwACqjQAAqo0wAKqNUACqjXAAqo2QAKqNsACqjdAAqo3gAKqOEACqj6AAqpHwAKqSEACqkjAAqpJQAKqScACqkpAAqpKwAKqS0ACqkvAAqpMQAKqVYACqlZAAqpXAAKqV8ACqliAAqpZQAKqWgACqlrAAqpbgAKqXEACqlzAAqp7gAKqfAACqnzAAqp9QAKqfgACqn5AAqp+gAKqfsACqn8AAqp/gAKqgAACqoBAAqqAgAKqgQACqoFAAqqFgAKqhcACqoZAAqqlAAKqpYACqqYAAqqmgAKqp0ACqqeAAqqnwAKqqAACqqhAAqqowAKqqUACqqmAAqqpwAKqqkACqqqAAqrJQAKqycACqsqAAqrLAAKqy8ACqswAAqrMQAKqzIACqszAAqrNQAKqzcACqs4AAqrOQAKqzsACqs8AAqrTQAKq04ACqtQAAqrywAKq80ACqvPAAqr0QAKq9QACqvVAAqr1gAKq9cACqvYAAqr2gAKq9wACqvdAAqr3gAKq+AACqvhAAqsXAAKrF4ACqxhAAqsYwAKrGYACqxnAAqsaAAKrGkACqxqAAqsbAAKrG4ACqxvAAqscAAKrHIACqxzAAqshAAKrIUACqyHAAqtAgAKrQQACq0GAAqtCAAKrQsACq0MAAqtDQAKrQ4ACq0PAAqtEQAKrRMACq0UAAqtFQAKrRcACq0YAAqtkwAKrZUACq2YAAqtmgAKrZ0ACq2eAAqtnwAKraAACq2hAAqtowAKraUACq2mAAqtpwAKrakACq2qAAqtwwAKrcQACq3FAAqtxwAKrkIACq5EAAquRgAKrkgACq5LAAquTAAKrk0ACq5OAAquTwAKrlEACq5TAAquVAAKrlUACq5XAAquWAAKrtMACq7VAAqu2AAKrtoACq7dAAqu3gAKrt8ACq7gAAqu4QAKruMACq7lAAqu5gAKrucACq7pAAqu6gAKrwMACq8cAAqvMQAKrzQACq83AAqvOgAKrz0ACq9AAAqvVQAKr1gACq9bAAqvXgAKr2EACq9kAAqvZgAKr3QACq+MAAqvogAKr8IACrBVAAqweAAKsJgACrC4AAqwugAKsLwACrC+AAqwwAAKsMMACrDEAAqwxQAKsMgACrDJAAqwywAKsMwACrDOAAqw0QAKsNIACrDTAAqw1gAKsNcACrDgAAqw+QAKsQIACrEEAAqxBgAKsQ8ACrESAAqxFQAKsRcACrFgAAqxhAAKsasACrHPAAqx0gAKsdQACrHWAAqx2AAKsdoACrHcAAqx3QAKseAACrH5AAqyGgAKshwACrIeAAqyIAAKsiIACrIkAAqyJgAKsigACrIqAAqySwAKsk4ACrJRAAqyVAAKslcACrJaAAqyXQAKsmAACrJjAAqyZQAKsuAACrLiAAqy5AAKsuYACrLpAAqy6gAKsusACrLsAAqy7QAKsu8ACrLxAAqy8gAKsvMACrL1AAqy9gAKs3EACrNzAAqzdQAKs3cACrN6AAqzewAKs3wACrN9AAqzfgAKs4AACrOCAAqzgwAKs4QACrOGAAqzhwAKtAIACrQEAAq0BwAKtAkACrQMAAq0DQAKtA4ACrQPAAq0EAAKtBIACrQUAAq0FQAKtBYACrQYAAq0GQAKtDIACrQzAAq0NAAKtDYACrSxAAq0swAKtLUACrS3AAq0ugAKtLsACrS8AAq0vQAKtL4ACrTAAAq0wgAKtMMACrTEAAq0xgAKtMcACrVCAAq1RAAKtUYACrVIAAq1SwAKtUwACrVNAAq1TgAKtU8ACrVRAAq1UwAKtVQACrVVAAq1VwAKtVgACrXTAAq11QAKtdcACrXZAAq13AAKtd0ACrXeAAq13wAKteAACrXiAAq15AAKteUACrXmAAq16AAKtekACrZkAAq2ZgAKtmgACrZqAAq2bQAKtm4ACrZvAAq2cAAKtnEACrZzAAq2dQAKtnYACrZ3AAq2eQAKtnoACrb1AAq29wAKtvkACrb7AAq2/gAKtv8ACrcAAAq3AQAKtwIACrcEAAq3BgAKtwcACrcIAAq3CgAKtwsACrdUAAq3eAAKt58ACrfDAAq3xgAKt8gACrfKAAq3zAAKt84ACrfQAAq30QAKt9QACrftAAq4CgAKuAwACrgOAAq4EAAKuBIACrgUAAq4FgAKuBgACrg1AAq4OAAKuDsACrg+AAq4QQAKuEQACrhHAAq4SgAKuEwACrjHAAq4yQAKuMsACrjNAAq40AAKuNEACrjSAAq40wAKuNQACrjWAAq42AAKuNkACrjaAAq43AAKuN0ACrlYAAq5WgAKuVwACrleAAq5YQAKuWIACrljAAq5ZAAKuWUACrlnAAq5aQAKuWoACrlrAAq5bQAKuW4ACrnpAAq56wAKue0ACrnvAAq58gAKufMACrn0AAq59QAKufYACrn4AAq5+gAKufsACrn8AAq5/gAKuf8ACrp6AAq6fAAKun4ACrqAAAq6gwAKuoQACrqFAAq6hgAKuocACrqJAAq6iwAKuowACrqNAAq6jwAKupAACrsLAAq7DQAKuw8ACrsRAAq7FAAKuxUACrsWAAq7FwAKuxgACrsaAAq7HAAKux0ACrseAAq7IAAKuyEACrucAAq7ngAKu6AACruiAAq7pQAKu6YACrunAAq7qAAKu6kACrurAAq7rQAKu64ACruvAAq7sQAKu7IACrwtAAq8LwAKvDEACrwzAAq8NgAKvDcACrw4AAq8OQAKvDoACrw8AAq8PgAKvD8ACrxAAAq8QgAKvEMACrzWAAq8+QAKvRkACr05AAq9OwAKvT0ACr0/AAq9QQAKvUQACr1FAAq9RgAKvUkACr1KAAq9TAAKvU0ACr1PAAq9UgAKvVMACr1UAAq9VwAKvVgACr1dAAq9dgAKvX8ACr2BAAq9gwAKvYwACr2PAAq9kgAKvZQACr3dAAq+AQAKvigACr5MAAq+TwAKvlEACr5TAAq+VQAKvlcACr5ZAAq+WgAKvl0ACr52AAq+lwAKvpkACr6bAAq+nQAKvp8ACr6hAAq+owAKvqUACr6nAAq+yAAKvssACr7OAAq+0QAKvtQACr7XAAq+2gAKvt0ACr7gAAq+4gAKv10ACr9fAAq/YQAKv2MACr9mAAq/ZwAKv2gACr9pAAq/agAKv2wACr9uAAq/bwAKv3AACr9yAAq/cwAKv+4ACr/wAAq/8gAKv/QACr/3AAq/+AAKv/kACr/6AAq/+wAKv/0ACr//AArAAAAKwAEACsADAArABAAKwH8ACsCBAArAhAAKwIYACsCJAArAigAKwIsACsCMAArAjQAKwI8ACsCRAArAkgAKwJMACsCVAArAlgAKwK8ACsCwAArAsQAKwLMACsEuAArBMAAKwTIACsE0AArBNwAKwTgACsE5AArBOgAKwTsACsE9AArBPwAKwUAACsFBAArBQwAKwUQACsG/AArBwQAKwcMACsHFAArByAAKwckACsHKAArBywAKwcwACsHOAArB0AAKwdEACsHSAArB1AAKwdUACsJQAArCUgAKwlQACsJWAArCWQAKwloACsJbAArCXAAKwl0ACsJfAArCYQAKwmIACsJjAArCZQAKwmYACsLhAArC4wAKwuUACsLnAArC6gAKwusACsLsAArC7QAKwu4ACsLwAArC8gAKwvMACsL0AArC9gAKwvcACsNyAArDdAAKw3YACsN4AArDewAKw3wACsN9AArDfgAKw38ACsOBAArDgwAKw4QACsOFAArDhwAKw4gACsPRAArD9QAKxBwACsRAAArEQwAKxEUACsRHAArESQAKxEsACsRNAArETgAKxFEACsRqAArEhwAKxIkACsSLAArEjQAKxI8ACsSRAArEkwAKxJUACsSyAArEtQAKxLgACsS7AArEvgAKxMEACsTEAArExwAKxMkACsVEAArFRgAKxUgACsVKAArFTQAKxU4ACsVPAArFUAAKxVEACsVTAArFVQAKxVYACsVXAArFWQAKxVoACsXVAArF1wAKxdkACsXbAArF3gAKxd8ACsXgAArF4QAKxeIACsXkAArF5gAKxecACsXoAArF6gAKxesACsZmAArGaAAKxmoACsZsAArGbwAKxnAACsZxAArGcgAKxnMACsZ1AArGdwAKxngACsZ5AArGewAKxnwACsb3AArG+QAKxvwACsb+AArHAQAKxwIACscDAArHBAAKxwUACscHAArHCQAKxwoACscLAArHDQAKxw4ACseJAArHiwAKx40ACsePAArHkgAKx5MACseUAArHlQAKx5YACseYAArHmgAKx5sACsecAArHngAKx58ACsgaAArIHAAKyB4ACsggAArIIwAKyCQACsglAArIJgAKyCcACsgpAArIKwAKyCwACsgtAArILwAKyDAACsirAArIrQAKyK8ACsixAArItAAKyLUACsi2AArItwAKyLgACsi6AArIvAAKyL0ACsi+AArIwAAKyMEACslUAArJdwAKyZcACsm3AArJuQAKybsACsm9AArJvwAKycIACsnDAArJxAAKyccACsnIAArJygAKycsACsnNAArJ0AAKydEACsnSAArJ1QAKydYACsnbAArJ9AAKyf0ACsn/AArKAQAKygoACsoNAArKEAAKyhIACspbAArKfwAKyqYACsrKAArKzQAKys8ACsrRAArK0wAKytUACsrXAArK2AAKytsACsr0AArLFQAKyxcACssZAArLGwAKyx0ACssfAArLIQAKyyMACsslAArLRgAKy0kACstMAArLTwAKy1IACstVAArLWAAKy1sACsteAArLYAAKy9sACsvdAArL3wAKy+EACsvkAArL5QAKy+YACsvnAArL6AAKy+oACsvsAArL7QAKy+4ACsvwAArL8QAKzGwACsxuAArMcAAKzHIACsx1AArMdgAKzHcACsx4AArMeQAKzHsACsx9AArMfgAKzH8ACsyBAArMggAKzP0ACsz/AArNAgAKzQQACs0HAArNCAAKzQkACs0KAArNCwAKzQ0ACs0PAArNEAAKzREACs0TAArNFAAKzS0ACs0uAArNLwAKzTEACs2sAArNrgAKzbAACs2yAArNtQAKzbYACs23AArNuAAKzbkACs27AArNvQAKzb4ACs2/AArNwQAKzcIACs49AArOPwAKzkEACs5DAArORgAKzkcACs5IAArOSQAKzkoACs5MAArOTgAKzk8ACs5QAArOUgAKzlMACs7OAArO0AAKztIACs7UAArO1wAKztgACs7ZAArO2gAKztsACs7dAArO3wAKzuAACs7hAArO4wAKzuQACs9fAArPYQAKz2MACs9lAArPaAAKz2kACs9qAArPawAKz2wACs9uAArPcAAKz3EACs9yAArPdAAKz3UACs/wAArP8gAKz/QACs/2AArP+QAKz/oACs/7AArP/AAKz/0ACs//AArQAQAK0AIACtADAArQBQAK0AYACtBPAArQcwAK0JoACtC+AArQwQAK0MMACtDFAArQxwAK0MkACtDLAArQzAAK0M8ACtDoAArRBQAK0QcACtEJAArRCwAK0Q0ACtEPAArREQAK0RMACtEwAArRMwAK0TYACtE5AArRPAAK0T8ACtFCAArRRQAK0UcACtHCAArRxAAK0cYACtHIAArRywAK0cwACtHNAArRzgAK0c8ACtHRAArR0wAK0dQACtHVAArR1wAK0dgACtJTAArSVQAK0lcACtJZAArSXAAK0l0ACtJeAArSXwAK0mAACtJiAArSZAAK0mUACtJmAArSaAAK0mkACtLkAArS5gAK0ugACtLqAArS7QAK0u4ACtLvAArS8AAK0vEACtLzAArS9QAK0vYACtL3AArS+QAK0voACtN1AArTdwAK03oACtN8AArTfwAK04AACtOBAArTggAK04MACtOFAArThwAK04gACtOJAArTiwAK04wACtQHAArUCQAK1AsACtQNAArUEAAK1BEACtQSAArUEwAK1BQACtQWAArUGAAK1BkACtQaAArUHAAK1B0ACtSYAArUmgAK1JwACtSeAArUoQAK1KIACtSjAArUpAAK1KUACtSnAArUqQAK1KoACtSrAArUrQAK1K4ACtUpAArVKwAK1S0ACtUvAArVMgAK1TMACtU0AArVNQAK1TYACtU4AArVOgAK1TsACtU8AArVPgAK1T8ACtXSAArV9QAK1hUACtY1AArWNwAK1jkACtY7AArWPQAK1kAACtZBAArWQgAK1kUACtZGAArWSAAK1kkACtZLAArWTgAK1k8ACtZQAArWUwAK1lQACtZZAArWcgAK1nsACtZ9AArWfwAK1ogACtaLAArWjgAK1pAACtbZAArW/QAK1yQACtdIAArXSwAK100ACtdPAArXUQAK11MACtdVAArXVgAK11kACtdyAArXkwAK15UACteXAArXmQAK15sACtedAArXnwAK16EACtejAArXxAAK18cACtfKAArXzQAK19AACtfTAArX1gAK19kACtfcAArX3gAK2FkACthbAArYXQAK2F8ACthiAArYYwAK2GQACthlAArYZgAK2GgACthqAArYawAK2GwACthuAArYbwAK2OoACtjsAArY7gAK2PAACtjzAArY9AAK2PUACtj2AArY9wAK2PkACtj7AArY/AAK2P0ACtj/AArZAAAK2XsACtl9AArZgAAK2YIACtmFAArZhgAK2YcACtmIAArZiQAK2YsACtmNAArZjgAK2Y8ACtmRAArZkgAK2asACtmsAArZrQAK2a8ACtoqAAraLAAK2i4ACtowAAraMwAK2jQACto1AAraNgAK2jcACto5AAraOwAK2jwACto9AAraPwAK2kAACtq7AAravQAK2r8ACtrBAAraxAAK2sUACtrGAAraxwAK2sgACtrKAArazAAK2s0ACtrOAAra0AAK2tEACttMAArbTgAK21AACttSAArbVQAK21YACttXAArbWAAK21kACttbAArbXQAK214ACttfAArbYQAK22IACtvdAArb3wAK2+EACtvjAArb5gAK2+cACtvoAArb6QAK2+oACtvsAArb7gAK2+8ACtvwAArb8gAK2/MACtxuAArccAAK3HIACtx0AArcdwAK3HgACtx5AArcegAK3HsACtx9AArcfwAK3IAACtyBAArcgwAK3IQACtzNAArc8QAK3RgACt08AArdPwAK3UEACt1DAArdRQAK3UcACt1JAArdSgAK3U0ACt1mAArdgwAK3YUACt2HAArdiQAK3YsACt2NAArdjwAK3ZEACt2uAArdsQAK3bQACt23AArdugAK3b0ACt3AAArdwwAK3cUACt5AAAreQgAK3kQACt5GAAreSQAK3koACt5LAAreTAAK3k0ACt5PAAreUQAK3lIACt5TAAreVQAK3lYACt7RAAre0wAK3tUACt7XAAre2gAK3tsACt7cAAre3QAK3t4ACt7gAAre4gAK3uMACt7kAAre5gAK3ucACt9iAArfZAAK32YACt9oAArfawAK32wACt9tAArfbgAK328ACt9xAArfcwAK33QACt91AArfdwAK33gACt/zAArf9QAK3/gACt/6AArf/QAK3/4ACt//AArgAAAK4AEACuADAArgBQAK4AYACuAHAArgCQAK4AoACuCFAArghwAK4IkACuCLAArgjgAK4I8ACuCQAArgkQAK4JIACuCUAArglgAK4JcACuCYAArgmgAK4JsACuEWAArhGAAK4RoACuEcAArhHwAK4SAACuEhAArhIgAK4SMACuElAArhJwAK4SgACuEpAArhKwAK4SwACuGnAArhqQAK4asACuGtAArhsAAK4bEACuGyAArhswAK4bQACuG2AArhuAAK4bkACuG6AArhvAAK4b0ACuJQAAricwAK4pMACuKzAAritQAK4rcACuK5AAriuwAK4r4ACuK/AAriwAAK4sMACuLEAArixgAK4scACuLJAArizAAK4s0ACuLOAAri0QAK4tIACuLXAAri8AAK4vkACuL7AAri/QAK4wYACuMJAArjDAAK4w4ACuNXAArjewAK46IACuPGAArjyQAK48sACuPNAArjzwAK49EACuPTAArj1AAK49cACuPwAArkEQAK5BMACuQVAArkFwAK5BkACuQbAArkHQAK5B8ACuQhAArkQgAK5EUACuRIAArkSwAK5E4ACuRRAArkVAAK5FcACuRaAArkXAAK5NcACuTZAArk2wAK5N0ACuTgAArk4QAK5OIACuTjAArk5AAK5OYACuToAArk6QAK5OoACuTsAArk7QAK5WgACuVqAArlbAAK5W4ACuVxAArlcgAK5XMACuV0AArldQAK5XcACuV5AArlegAK5XsACuV9AArlfgAK5fkACuX7AArl/gAK5gAACuYDAArmBAAK5gUACuYGAArmBwAK5gkACuYLAArmDAAK5g0ACuYPAArmEAAK5ikACuYqAArmKwAK5i0ACuaoAArmqgAK5qwACuauAArmsQAK5rIACuazAArmtAAK5rUACua3AArmuQAK5roACua7AArmvQAK5r4ACuc5AArnOwAK5z0ACuc/AArnQgAK50MACudEAArnRQAK50YACudIAArnSgAK50sACudMAArnTgAK508ACufKAArnzAAK584ACufQAArn0wAK59QACufVAArn1gAK59cACufZAArn2wAK59wACufdAArn3wAK5+AACuhbAAroXQAK6F8ACuhhAAroZAAK6GUACuhmAAroZwAK6GgACuhqAArobAAK6G0ACuhuAArocAAK6HEACujsAAro7gAK6PAACujyAAro9QAK6PYACuj3AAro+AAK6PkACuj7AAro/QAK6P4ACuj/AArpAQAK6QIACulLAArpbwAK6ZYACum6AArpvQAK6b8ACunBAArpwwAK6cUACunHAArpyAAK6csACunkAArqAQAK6gMACuoFAArqBwAK6gkACuoLAArqDQAK6g8ACuosAArqLwAK6jIACuo1AArqOAAK6jsACuo+AArqQQAK6kMACuq+AArqwAAK6sIACurEAArqxwAK6sgACurJAArqygAK6ssACurNAArqzwAK6tAACurRAArq0wAK6tQACutPAArrUQAK61MACutVAArrWAAK61kACutaAArrWwAK61wACuteAArrYAAK62EACutiAArrZAAK62UACuvgAArr4gAK6+QACuvmAArr6QAK6+oACuvrAArr7AAK6+0ACuvvAArr8QAK6/IACuvzAArr9QAK6/YACuxxAArscwAK7HYACux4AArsewAK7HwACux9AArsfgAK7H8ACuyBAArsgwAK7IQACuyFAArshwAK7IgACu0DAArtBQAK7QcACu0JAArtDAAK7Q0ACu0OAArtDwAK7RAACu0SAArtFAAK7RUACu0WAArtGAAK7RkACu2UAArtlgAK7ZgACu2aAArtnQAK7Z4ACu2fAArtoAAK7aEACu2jAArtpQAK7aYACu2nAArtqQAK7aoACu4lAAruJwAK7ikACu4rAAruLgAK7i8ACu4wAAruMQAK7jIACu40AAruNgAK7jcACu44AAruOgAK7jsACu5MAAruTQAK7k8ACu5gAAruaQAK7mwACu5vAArucQAK7qoACu6tAArurwAK7rIACu61AAruuAAK7rsACu8+AArvYgAK74YACu+pAArv0AAK7/AACvAXAArwPgAK8F4ACvCCAArwpgAK8KgACvCrAArwrQAK8K8ACvCxAArwtAAK8LcACvC5AArwuwAK8L4ACvDAAArwwgAK8MUACvDIAArwyQAK8M4ACvDnAArw7AAK8O4ACvDzAArw9gAK8PgACvFBAArxZQAK8YwACvGwAArxswAK8bUACvG3AArxuQAK8bsACvG9AArxvgAK8cEACvHaAArx/wAK8gEACvIDAAryBQAK8gcACvIJAAryCwAK8g0ACvIPAAryEQAK8jYACvI5AAryPAAK8j8ACvJCAAryRQAK8kgACvJLAAryTgAK8lEACvJTAAryzgAK8tAACvLTAAry1QAK8tgACvLZAAry2gAK8tsACvLcAAry3gAK8uAACvLhAAry4gAK8uQACvLlAAry9gAK8vcACvL5AArzdAAK83YACvN4AArzegAK830ACvN+AArzfwAK84AACvOBAArzgwAK84UACvOGAArzhwAK84kACvOKAAr0BQAK9AcACvQKAAr0DAAK9A8ACvQQAAr0EQAK9BIACvQTAAr0FQAK9BcACvQYAAr0GQAK9BsACvQcAAr0LQAK9C4ACvQwAAr0qwAK9K0ACvSvAAr0sQAK9LQACvS1AAr0tgAK9LcACvS4AAr0ugAK9LwACvS9AAr0vgAK9MAACvTBAAr1PAAK9T4ACvVBAAr1QwAK9UYACvVHAAr1SAAK9UkACvVKAAr1TAAK9U4ACvVPAAr1UAAK9VIACvVTAAr1ZAAK9WUACvVnAAr14gAK9eQACvXmAAr16AAK9esACvXsAAr17QAK9e4ACvXvAAr18QAK9fMACvX0AAr19QAK9fcACvX4AAr2cwAK9nUACvZ4AAr2egAK9n0ACvZ+AAr2fwAK9oAACvaBAAr2gwAK9oUACvaGAAr2hwAK9okACvaKAAr2owAK9qQACvalAAr2pwAK9yIACvckAAr3JgAK9ygACvcrAAr3LAAK9y0ACvcuAAr3LwAK9zEACvczAAr3NAAK9zUACvc3AAr3OAAK97MACve1AAr3uAAK97oACve9AAr3vgAK978ACvfAAAr3wQAK98MACvfFAAr3xgAK98cACvfJAAr3ygAK9+oACvgDAAr4CAAK+AsACvgQAAr4EwAK+BUACvgnAAr4ugAK+N0ACvj9AAr5HQAK+R8ACvkhAAr5IwAK+SUACvkoAAr5KQAK+SoACvktAAr5LgAK+TAACvkxAAr5NAAK+TcACvk4AAr5OQAK+TwACvk9AAr5RgAK+V8ACvloAAr5agAK+W0ACvl2AAr5eQAK+XwACvl+AAr5xwAK+esACvoSAAr6NgAK+jkACvo7AAr6PQAK+j8ACvpBAAr6QwAK+kQACvpHAAr6YAAK+oEACvqDAAr6hQAK+ocACvqJAAr6iwAK+o0ACvqPAAr6kQAK+rIACvq1AAr6uAAK+rsACvq+AAr6wQAK+sQACvrHAAr6ygAK+swACvtHAAr7SQAK+0sACvtNAAr7UAAK+1EACvtSAAr7UwAK+1QACvtWAAr7WAAK+1kACvtaAAr7XAAK+10ACvvYAAr72gAK+9wACvveAAr74QAK++IACvvjAAr75AAK++UACvvnAAr76QAK++oACvvrAAr77QAK++4ACvxpAAr8awAK/G4ACvxwAAr8cwAK/HQACvx1AAr8dgAK/HcACvx5AAr8ewAK/HwACvx9AAr8fwAK/IAACvyZAAr8mgAK/JsACvydAAr9GAAK/RoACv0cAAr9HgAK/SEACv0iAAr9IwAK/SQACv0lAAr9JwAK/SkACv0qAAr9KwAK/S0ACv0uAAr9qQAK/asACv2tAAr9rwAK/bIACv2zAAr9tAAK/bUACv22AAr9uAAK/boACv27AAr9vAAK/b4ACv2/AAr+OgAK/jwACv4+AAr+QAAK/kMACv5EAAr+RQAK/kYACv5HAAr+SQAK/ksACv5MAAr+TQAK/k8ACv5QAAr+ywAK/s0ACv7PAAr+0QAK/tQACv7VAAr+1gAK/tcACv7YAAr+2gAK/twACv7dAAr+3gAK/uAACv7hAAr/XAAK/14ACv9gAAr/YgAK/2UACv9mAAr/ZwAK/2gACv9pAAr/awAK/20ACv9uAAr/bwAK/3EACv9yAAr/uwAK/98ACwAGAAsAKgALAC0ACwAwAAsAMgALADQACwA2AAsAOAALADkACwA8AAsAVQALAHIACwB1AAsAeAALAHsACwB+AAsAgQALAIQACwCHAAsApAALAKcACwCqAAsArQALALAACwCzAAsAtgALALkACwC7AAsBNgALATgACwE7AAsBPQALAUAACwFBAAsBQgALAUMACwFEAAsBRgALAUkACwFKAAsBSwALAU0ACwFOAAsByQALAcsACwHOAAsB0AALAdMACwHUAAsB1QALAdYACwHXAAsB2QALAdwACwHdAAsB3gALAeAACwHhAAsCXAALAl4ACwJhAAsCYwALAmYACwJnAAsCaAALAmkACwJqAAsCbAALAm8ACwJwAAsCcQALAnMACwJ0AAsC7wALAvEACwL0AAsC9gALAvkACwL6AAsC+wALAvwACwL9AAsC/wALAwIACwMDAAsDBAALAwYACwMHAAsDggALA4QACwOGAAsDiAALA4sACwOMAAsDjQALA44ACwOPAAsDkQALA5QACwOVAAsDlgALA5gACwOZAAsEFAALBBYACwQYAAsEGgALBB0ACwQeAAsEHwALBCAACwQhAAsEIwALBCYACwQnAAsEKAALBCoACwQrAAsEpgALBKgACwSrAAsErQALBLAACwSxAAsEsgALBLMACwS0AAsEtgALBLkACwS6AAsEuwALBL0ACwS+AAsFUQALBXQACwWUAAsFtAALBbYACwW4AAsFugALBbwACwW/AAsFwAALBcEACwXEAAsFxQALBccACwXIAAsFywALBc4ACwXPAAsF0AALBdMACwXUAAsF3QALBfYACwX/AAsGAQALBgQACwYNAAsGEAALBhMACwYVAAsGXgALBoIACwapAAsGzQALBtAACwbSAAsG1AALBtYACwbYAAsG2gALBtsACwbeAAsG9wALBxgACwcaAAsHHAALBx4ACwcgAAsHIgALByQACwcmAAsHKAALB0kACwdMAAsHTwALB1IACwdVAAsHWAALB1sACwdeAAsHYQALB2MACwfeAAsH4AALB+IACwfkAAsH5wALB+gACwfpAAsH6gALB+sACwftAAsH7wALB/AACwfxAAsH8wALB/QACwhvAAsIcQALCHMACwh1AAsIeAALCHkACwh6AAsIewALCHwACwh+AAsIgAALCIEACwiCAAsIhAALCIUACwkAAAsJAgALCQUACwkHAAsJCgALCQsACwkMAAsJDQALCQ4ACwkQAAsJEgALCRMACwkUAAsJFgALCRcACwkwAAsJMQALCTIACwk0AAsJrwALCbEACwmzAAsJtQALCbgACwm5AAsJugALCbsACwm8AAsJvgALCcAACwnBAAsJwgALCcQACwnFAAsKQAALCkIACwpEAAsKRgALCkkACwpKAAsKSwALCkwACwpNAAsKTwALClEACwpSAAsKUwALClUACwpWAAsK0QALCtMACwrVAAsK1wALCtoACwrbAAsK3AALCt0ACwreAAsK4AALCuIACwrjAAsK5AALCuYACwrnAAsLYgALC2QACwtmAAsLaAALC2sACwtsAAsLbQALC24ACwtvAAsLcQALC3MACwt0AAsLdQALC3cACwt4AAsL8wALC/UACwv3AAsL+QALC/wACwv9AAsL/gALC/8ACwwAAAsMAgALDAQACwwFAAsMBgALDAgACwwJAAsMUgALDHYACwydAAsMwQALDMQACwzHAAsMyQALDMsACwzNAAsMzwALDNAACwzTAAsM7AALDQkACw0MAAsNDwALDRIACw0VAAsNGAALDRsACw0eAAsNOwALDT4ACw1BAAsNRAALDUcACw1KAAsNTQALDVAACw1SAAsNzQALDc8ACw3SAAsN1AALDdcACw3YAAsN2QALDdoACw3bAAsN3QALDeAACw3hAAsN4gALDeQACw3lAAsOYAALDmIACw5lAAsOZwALDmoACw5rAAsObAALDm0ACw5uAAsOcAALDnMACw50AAsOdQALDncACw54AAsO8wALDvUACw74AAsO+gALDv0ACw7+AAsO/wALDwAACw8BAAsPAwALDwYACw8HAAsPCAALDwoACw8LAAsPhgALD4gACw+LAAsPjQALD5AACw+RAAsPkgALD5MACw+UAAsPlgALD5kACw+aAAsPmwALD50ACw+eAAsQGQALEBsACxAdAAsQHwALECIACxAjAAsQJAALECUACxAmAAsQKAALECsACxAsAAsQLQALEC8ACxAwAAsQqwALEK0ACxCvAAsQsQALELQACxC1AAsQtgALELcACxC4AAsQugALEL0ACxC+AAsQvwALEMEACxDCAAsRPQALET8ACxFCAAsRRAALEUcACxFIAAsRSQALEUoACxFLAAsRTQALEVAACxFRAAsRUgALEVQACxFVAAsRZgALEWsACxFuAAsRcAALEXUACxHwAAsR8gALEfQACxH2AAsR+QALEfoACxH7AAsR/AALEf0ACxH/AAsSAgALEgMACxIEAAsSBgALEgcACxKCAAsShAALEoYACxKIAAsSiwALEowACxKNAAsSjgALEo8ACxKRAAsSlAALEpUACxKWAAsSmAALEpkACxMUAAsTFgALExkACxMbAAsTHgALEx8ACxMgAAsTIQALEyIACxMkAAsTJwALEygACxMpAAsTKwALEywACxO/AAsT4gALFAIACxQiAAsUJAALFCYACxQoAAsUKgALFC0ACxQuAAsULwALFDIACxQzAAsUNQALFDYACxQ5AAsUPAALFD0ACxQ+AAsUQQALFEIACxRHAAsUYAALFGkACxRrAAsUbgALFHcACxR6AAsUfQALFH8ACxTIAAsU7AALFRMACxU3AAsVOgALFTwACxU+AAsVQAALFUIACxVEAAsVRQALFUgACxVhAAsVggALFYQACxWGAAsViAALFYoACxWMAAsVjgALFZAACxWSAAsVswALFbYACxW5AAsVvAALFb8ACxXCAAsVxQALFcgACxXLAAsVzQALFkgACxZKAAsWTAALFk4ACxZRAAsWUgALFlMACxZUAAsWVQALFlcACxZZAAsWWgALFlsACxZdAAsWXgALFtkACxbbAAsW3QALFt8ACxbiAAsW4wALFuQACxblAAsW5gALFugACxbqAAsW6wALFuwACxbuAAsW7wALF2oACxdsAAsXbwALF3EACxd0AAsXdQALF3YACxd3AAsXeAALF3oACxd8AAsXfQALF34ACxeAAAsXgQALF5oACxebAAsXnAALF54ACxgZAAsYGwALGB0ACxgfAAsYIgALGCMACxgkAAsYJQALGCYACxgoAAsYKgALGCsACxgsAAsYLgALGC8ACxiqAAsYrAALGK4ACxiwAAsYswALGLQACxi1AAsYtgALGLcACxi5AAsYuwALGLwACxi9AAsYvwALGMAACxk7AAsZPQALGT8ACxlBAAsZRAALGUUACxlGAAsZRwALGUgACxlKAAsZTAALGU0ACxlOAAsZUAALGVEACxnMAAsZzgALGdAACxnSAAsZ1QALGdYACxnXAAsZ2AALGdkACxnbAAsZ3QALGd4ACxnfAAsZ4QALGeIACxpdAAsaXwALGmEACxpjAAsaZgALGmcACxpoAAsaaQALGmoACxpsAAsabgALGm8ACxpwAAsacgALGnMACxq8AAsa4AALGwcACxsrAAsbLgALGzEACxszAAsbNQALGzcACxs5AAsbOgALGz0ACxtWAAsbcwALG3YACxt5AAsbfAALG38ACxuCAAsbhQALG4gACxulAAsbqAALG6sACxuuAAsbsQALG7QACxu3AAsbugALG7wACxw3AAscOQALHDwACxw+AAscQQALHEIACxxDAAscRAALHEUACxxHAAscSgALHEsACxxMAAscTgALHE8ACxzKAAsczAALHM8ACxzRAAsc1AALHNUACxzWAAsc1wALHNgACxzaAAsc3QALHN4ACxzfAAsc4QALHOIACx1dAAsdXwALHWIACx1kAAsdZwALHWgACx1pAAsdagALHWsACx1tAAsdcAALHXEACx1yAAsddAALHXUACx3wAAsd8gALHfUACx33AAsd+gALHfsACx38AAsd/QALHf4ACx4AAAseAwALHgQACx4FAAseBwALHggACx6LAAserwALHtMACx72AAsfHQALHz0ACx9kAAsfiwALH6sACx/PAAsf8wALH/UACx/4AAsf+gALH/wACx/+AAsgAQALIAQACyAGAAsgCAALIAsACyANAAsgDwALIBIACyAVAAsgFgALIBsACyA0AAsgOQALIDsACyBAAAsgQwALIEUACyCOAAsgsgALINkACyD9AAshAAALIQIACyEEAAshBgALIQgACyEKAAshCwALIQ4ACyEnAAshTAALIU4ACyFQAAshUgALIVQACyFWAAshWAALIVoACyFcAAshXgALIYMACyGGAAshiQALIYwACyGPAAshkgALIZUACyGYAAshmwALIZ4ACyGgAAsiGwALIh0ACyIgAAsiIgALIiUACyImAAsiJwALIigACyIpAAsiKwALIi0ACyIuAAsiLwALIjEACyIyAAsiQwALIkQACyJGAAsiwQALIsMACyLFAAsixwALIsoACyLLAAsizAALIs0ACyLOAAsi0AALItIACyLTAAsi1AALItYACyLXAAsjUgALI1QACyNXAAsjWQALI1wACyNdAAsjXgALI18ACyNgAAsjYgALI2QACyNlAAsjZgALI2gACyNpAAsjegALI3sACyN9AAsj+AALI/oACyP8AAsj/gALJAEACyQCAAskAwALJAQACyQFAAskBwALJAkACyQKAAskCwALJA0ACyQOAAskiQALJIsACySOAAskkAALJJMACySUAAsklQALJJYACySXAAskmQALJJsACyScAAsknQALJJ8ACySgAAsksQALJLIACyS0AAslLwALJTEACyUzAAslNQALJTgACyU5AAslOgALJTsACyU8AAslPgALJUAACyVBAAslQgALJUQACyVFAAslwAALJcIACyXFAAslxwALJcoACyXLAAslzAALJc0ACyXOAAsl0AALJdIACyXTAAsl1AALJdYACyXXAAsl8AALJfEACyXyAAsl9AALJm8ACyZxAAsmcwALJnUACyZ4AAsmeQALJnoACyZ7AAsmfAALJn4ACyaAAAsmgQALJoIACyaEAAsmhQALJwAACycCAAsnBQALJwcACycKAAsnCwALJwwACycNAAsnDgALJxAACycSAAsnEwALJxQACycWAAsnFwALJy4ACydHAAsnZAALJ2cACydqAAsnbQALJ3AACydzAAsndgALJ3kACyeWAAsnmQALJ5wACyefAAsnogALJ6UACyeoAAsnqwALJ60ACye6AAsn1AALJ9wACyfrAAsoEQALKDYACyjJAAso7AALKQwACyksAAspLgALKTAACykyAAspNAALKTcACyk4AAspOQALKTwACyk9AAspPwALKUAACylCAAspRQALKUYACylHAAspSgALKUsACylQAAspaQALKXIACyl0AAspdgALKX8ACymCAAsphQALKYcACynQAAsp9AALKhsACyo/AAsqQgALKkQACypGAAsqSAALKkoACypMAAsqTQALKlAACyppAAsqigALKowACyqOAAsqkAALKpIACyqUAAsqlgALKpgACyqaAAsquwALKr4ACyrBAAsqxAALKscACyrKAAsqzQALKtAACyrTAAsq1QALK1AACytSAAsrVAALK1YACytZAAsrWgALK1sACytcAAsrXQALK18ACythAAsrYgALK2MACytlAAsrZgALK+EACyvjAAsr5QALK+cACyvqAAsr6wALK+wACyvtAAsr7gALK/AACyvyAAsr8wALK/QACyv2AAsr9wALLHIACyx0AAssdwALLHkACyx8AAssfQALLH4ACyx/AAssgAALLIIACyyEAAsshQALLIYACyyIAAssiQALLKIACyyjAAsspAALLKYACy0hAAstIwALLSUACy0nAAstKgALLSsACy0sAAstLQALLS4ACy0wAAstMgALLTMACy00AAstNgALLTcACy2yAAsttAALLbYACy24AAstuwALLbwACy29AAstvgALLb8ACy3BAAstwwALLcQACy3FAAstxwALLcgACy5DAAsuRQALLkcACy5JAAsuTAALLk0ACy5OAAsuTwALLlAACy5SAAsuVAALLlUACy5WAAsuWAALLlkACy7UAAsu1gALLtgACy7aAAsu3QALLt4ACy7fAAsu4AALLuEACy7jAAsu5QALLuYACy7nAAsu6QALLuoACy9lAAsvZwALL2kACy9rAAsvbgALL28ACy9wAAsvcQALL3IACy90AAsvdgALL3cACy94AAsvegALL3sACy/EAAsv6AALMA8ACzAzAAswNgALMDgACzA6AAswPAALMD4ACzBAAAswQQALMEQACzBdAAswegALMHwACzB+AAswgAALMIIACzCEAAswhgALMIgACzClAAswqAALMKsACzCuAAswsQALMLQACzC3AAswugALMLwACzE3AAsxOQALMTsACzE9AAsxQAALMUEACzFCAAsxQwALMUQACzFGAAsxSAALMUkACzFKAAsxTAALMU0ACzHIAAsxygALMcwACzHOAAsx0QALMdIACzHTAAsx1AALMdUACzHXAAsx2QALMdoACzHbAAsx3QALMd4ACzJZAAsyWwALMl0ACzJfAAsyYgALMmMACzJkAAsyZQALMmYACzJoAAsyagALMmsACzJsAAsybgALMm8ACzLqAAsy7AALMu4ACzLwAAsy8wALMvQACzL1AAsy9gALMvcACzL5AAsy+wALMvwACzL9AAsy/wALMwAACzN7AAszfQALM38ACzOBAAszhAALM4UACzOGAAszhwALM4gACzOKAAszjAALM40ACzOOAAszkAALM5EACzQMAAs0DgALNBAACzQSAAs0FQALNBYACzQXAAs0GAALNBkACzQbAAs0HQALNB4ACzQfAAs0IQALNCIACzSdAAs0nwALNKEACzSjAAs0pgALNKcACzSoAAs0qQALNKoACzSsAAs0rgALNK8ACzSwAAs0sgALNLMACzVGAAs1aQALNYkACzWpAAs1qwALNa0ACzWvAAs1sQALNbQACzW1AAs1tgALNbkACzW6AAs1vAALNb0ACzW/AAs1wgALNcMACzXEAAs1xwALNcgACzXNAAs15gALNe8ACzXxAAs18wALNfwACzX/AAs2AgALNgQACzZNAAs2cQALNpgACza8AAs2vwALNsEACzbDAAs2xQALNscACzbJAAs2ygALNs0ACzbmAAs3BwALNwkACzcLAAs3DQALNw8ACzcRAAs3EwALNxUACzcXAAs3OAALNzsACzc+AAs3QQALN0QACzdHAAs3SgALN00ACzdQAAs3UgALN80ACzfPAAs30QALN9MACzfWAAs31wALN9gACzfZAAs32gALN9wACzfeAAs33wALN+AACzfiAAs34wALOF4ACzhgAAs4YgALOGQACzhnAAs4aAALOGkACzhqAAs4awALOG0ACzhvAAs4cAALOHEACzhzAAs4dAALOO8ACzjxAAs49AALOPYACzj5AAs4+gALOPsACzj8AAs4/QALOP8ACzkBAAs5AgALOQMACzkFAAs5BgALOR8ACzkgAAs5IQALOSMACzmeAAs5oAALOaIACzmkAAs5pwALOagACzmpAAs5qgALOasACzmtAAs5rwALObAACzmxAAs5swALObQACzovAAs6MQALOjMACzo1AAs6OAALOjkACzo6AAs6OwALOjwACzo+AAs6QAALOkEACzpCAAs6RAALOkUACzrAAAs6wgALOsQACzrGAAs6yQALOsoACzrLAAs6zAALOs0ACzrPAAs60QALOtIACzrTAAs61QALOtYACztRAAs7UwALO1UACztXAAs7WgALO1sACztcAAs7XQALO14ACztgAAs7YgALO2MACztkAAs7ZgALO2cACzviAAs75AALO+YACzvoAAs76wALO+wACzvtAAs77gALO+8ACzvxAAs78wALO/QACzv1AAs79wALO/gACzxBAAs8ZQALPIwACzywAAs8swALPLUACzy3AAs8uQALPLsACzy9AAs8vgALPMEACzzaAAs89wALPPkACzz7AAs8/QALPP8ACz0BAAs9AwALPQUACz0iAAs9JQALPSgACz0rAAs9LgALPTEACz00AAs9NwALPTkACz20AAs9tgALPbgACz26AAs9vQALPb4ACz2/AAs9wAALPcEACz3DAAs9xQALPcYACz3HAAs9yQALPcoACz5FAAs+RwALPkkACz5LAAs+TgALPk8ACz5QAAs+UQALPlIACz5UAAs+VgALPlcACz5YAAs+WgALPlsACz7WAAs+2AALPtoACz7cAAs+3wALPuAACz7hAAs+4gALPuMACz7lAAs+5wALPugACz7pAAs+6wALPuwACz9nAAs/aQALP2wACz9uAAs/cQALP3IACz9zAAs/dAALP3UACz93AAs/eQALP3oACz97AAs/fQALP34ACz/5AAs/+wALP/0ACz//AAtAAgALQAMAC0AEAAtABQALQAYAC0AIAAtACgALQAsAC0AMAAtADgALQA8AC0CKAAtAjAALQI4AC0CQAAtAkwALQJQAC0CVAAtAlgALQJcAC0CZAAtAmwALQJwAC0CdAAtAnwALQKAAC0EbAAtBHQALQR8AC0EhAAtBJAALQSUAC0EmAAtBJwALQSgAC0EqAAtBLAALQS0AC0EuAAtBMAALQTEAC0HEAAtB5wALQgcAC0InAAtCKQALQisAC0ItAAtCLwALQjIAC0IzAAtCNAALQjcAC0I4AAtCOgALQjsAC0I+AAtCQQALQkIAC0JDAAtCRgALQkcAC0JMAAtCZQALQm4AC0JwAAtCcwALQnwAC0J/AAtCggALQoQAC0LNAAtC8QALQxgAC0M8AAtDPwALQ0EAC0NDAAtDRQALQ0cAC0NJAAtDSgALQ00AC0NmAAtDhwALQ4kAC0OLAAtDjQALQ48AC0ORAAtDkwALQ5UAC0OXAAtDuAALQ7sAC0O+AAtDwQALQ8QAC0PHAAtDygALQ80AC0PQAAtD0gALRE0AC0RPAAtEUQALRFMAC0RWAAtEVwALRFgAC0RZAAtEWgALRFwAC0ReAAtEXwALRGAAC0RiAAtEYwALRN4AC0TgAAtE4gALROQAC0TnAAtE6AALROkAC0TqAAtE6wALRO0AC0TvAAtE8AALRPEAC0TzAAtE9AALRW8AC0VxAAtFdAALRXYAC0V5AAtFegALRXsAC0V8AAtFfQALRX8AC0WBAAtFggALRYMAC0WFAAtFhgALRZ8AC0WgAAtFoQALRaMAC0YeAAtGIAALRiIAC0YkAAtGJwALRigAC0YpAAtGKgALRisAC0YtAAtGLwALRjAAC0YxAAtGMwALRjQAC0avAAtGsQALRrMAC0a1AAtGuAALRrkAC0a6AAtGuwALRrwAC0a+AAtGwAALRsEAC0bCAAtGxAALRsUAC0dAAAtHQgALR0QAC0dGAAtHSQALR0oAC0dLAAtHTAALR00AC0dPAAtHUQALR1IAC0dTAAtHVQALR1YAC0fRAAtH0wALR9UAC0fXAAtH2gALR9sAC0fcAAtH3QALR94AC0fgAAtH4gALR+MAC0fkAAtH5gALR+cAC0hiAAtIZAALSGYAC0hoAAtIawALSGwAC0htAAtIbgALSG8AC0hxAAtIcwALSHQAC0h1AAtIdwALSHgAC0jBAAtI5QALSQwAC0kwAAtJMwALSTYAC0k4AAtJOgALSTwAC0k+AAtJPwALSUIAC0lbAAtJeAALSXsAC0l+AAtJgQALSYQAC0mHAAtJigALSY0AC0mqAAtJrQALSbAAC0mzAAtJtgALSbkAC0m8AAtJvwALScEAC0o8AAtKPgALSkEAC0pDAAtKRgALSkcAC0pIAAtKSQALSkoAC0pMAAtKTwALSlAAC0pRAAtKUwALSlQAC0rPAAtK0QALStQAC0rWAAtK2QALStoAC0rbAAtK3AALSt0AC0rfAAtK4gALSuMAC0rkAAtK5gALSucAC0tiAAtLZAALS2cAC0tpAAtLbAALS20AC0tuAAtLbwALS3AAC0tyAAtLdQALS3YAC0t3AAtLeQALS3oAC0v1AAtL9wALS/oAC0v8AAtL/wALTAAAC0wBAAtMAgALTAMAC0wFAAtMCAALTAkAC0wKAAtMDAALTA0AC0yIAAtMigALTIwAC0yOAAtMkQALTJIAC0yTAAtMlAALTJUAC0yXAAtMmgALTJsAC0ycAAtMngALTJ8AC00aAAtNHAALTR4AC00gAAtNIwALTSQAC00lAAtNJgALTScAC00pAAtNLAALTS0AC00uAAtNMAALTTEAC02sAAtNrgALTbEAC02zAAtNtgALTbcAC024AAtNuQALTboAC028AAtNvwALTcAAC03BAAtNwwALTcQAC05XAAtOegALTpoAC066AAtOvAALTr4AC07AAAtOwgALTsUAC07GAAtOxwALTsoAC07LAAtOzQALTs4AC07QAAtO0wALTtQAC07VAAtO2AALTtkAC07eAAtO9wALTwAAC08CAAtPBAALTw0AC08QAAtPEwALTxUAC09eAAtPggALT6kAC0/NAAtP0AALT9IAC0/UAAtP1gALT9gAC0/aAAtP2wALT94AC0/3AAtQGAALUBoAC1AcAAtQHgALUCAAC1AiAAtQJAALUCYAC1AoAAtQSQALUEwAC1BPAAtQUgALUFUAC1BYAAtQWwALUF4AC1BhAAtQYwALUN4AC1DgAAtQ4gALUOQAC1DnAAtQ6AALUOkAC1DqAAtQ6wALUO0AC1DvAAtQ8AALUPEAC1DzAAtQ9AALUW8AC1FxAAtRcwALUXUAC1F4AAtReQALUXoAC1F7AAtRfAALUX4AC1GAAAtRgQALUYIAC1GEAAtRhQALUgAAC1ICAAtSBQALUgcAC1IKAAtSCwALUgwAC1INAAtSDgALUhAAC1ISAAtSEwALUhQAC1IWAAtSFwALUjAAC1IxAAtSMgALUjQAC1KvAAtSsQALUrMAC1K1AAtSuAALUrkAC1K6AAtSuwALUrwAC1K+AAtSwAALUsEAC1LCAAtSxAALUsUAC1NAAAtTQgALU0QAC1NGAAtTSQALU0oAC1NLAAtTTAALU00AC1NPAAtTUQALU1IAC1NTAAtTVQALU1YAC1PRAAtT0wALU9UAC1PXAAtT2gALU9sAC1PcAAtT3QALU94AC1PgAAtT4gALU+MAC1PkAAtT5gALU+cAC1RiAAtUZAALVGYAC1RoAAtUawALVGwAC1RtAAtUbgALVG8AC1RxAAtUcwALVHQAC1R1AAtUdwALVHgAC1TzAAtU9QALVPcAC1T5AAtU/AALVP0AC1T+AAtU/wALVQAAC1UCAAtVBAALVQUAC1UGAAtVCAALVQkAC1VSAAtVdgALVZ0AC1XBAAtVxAALVcYAC1XIAAtVygALVcwAC1XOAAtVzwALVdIAC1XrAAtWCAALVgoAC1YMAAtWDgALVhAAC1YSAAtWFAALVhYAC1YzAAtWNgALVjkAC1Y8AAtWPwALVkIAC1ZFAAtWSAALVkoAC1bFAAtWxwALVskAC1bLAAtWzgALVs8AC1bQAAtW0QALVtIAC1bUAAtW1gALVtcAC1bYAAtW2gALVtsAC1dWAAtXWAALV1oAC1dcAAtXXwALV2AAC1dhAAtXYgALV2MAC1dlAAtXZwALV2gAC1dpAAtXawALV2wAC1fnAAtX6QALV+sAC1ftAAtX8AALV/EAC1fyAAtX8wALV/QAC1f2AAtX+AALV/kAC1f6AAtX/AALV/0AC1h4AAtYegALWH0AC1h/AAtYggALWIMAC1iEAAtYhQALWIYAC1iIAAtYigALWIsAC1iMAAtYjgALWI8AC1kKAAtZDAALWQ4AC1kQAAtZEwALWRQAC1kVAAtZFgALWRcAC1kZAAtZGwALWRwAC1kdAAtZHwALWSAAC1mbAAtZnQALWZ8AC1mhAAtZpAALWaUAC1mmAAtZpwALWagAC1mqAAtZrAALWa0AC1muAAtZsAALWbEAC1osAAtaLgALWjAAC1oyAAtaNQALWjYAC1o3AAtaOAALWjkAC1o7AAtaPQALWj4AC1o/AAtaQQALWkIAC1rVAAta+AALWxgAC1s4AAtbOgALWzwAC1s+AAtbQAALW0MAC1tEAAtbRQALW0gAC1tJAAtbSwALW0wAC1tOAAtbUQALW1IAC1tTAAtbVgALW1cAC1tcAAtbdQALW34AC1uAAAtbggALW4sAC1uOAAtbkQALW5MAC1vcAAtcAAALXCcAC1xLAAtcTgALXFAAC1xSAAtcVAALXFYAC1xYAAtcWQALXFwAC1x1AAtclgALXJgAC1yaAAtcnAALXJ4AC1ygAAtcogALXKQAC1ymAAtcxwALXMoAC1zNAAtc0AALXNMAC1zWAAtc2QALXNwAC1zfAAtc4QALXVwAC11eAAtdYAALXWIAC11lAAtdZgALXWcAC11oAAtdaQALXWsAC11tAAtdbgALXW8AC11xAAtdcgALXe0AC13vAAtd8QALXfMAC132AAtd9wALXfgAC135AAtd+gALXfwAC13+AAtd/wALXgAAC14CAAteAwALXn4AC16AAAtegwALXoUAC16IAAteiQALXooAC16LAAtejAALXo4AC16QAAtekQALXpIAC16UAAtelQALXq4AC16vAAtesAALXrIAC18tAAtfLwALXzEAC18zAAtfNgALXzcAC184AAtfOQALXzoAC188AAtfPgALXz8AC19AAAtfQgALX0MAC1++AAtfwAALX8IAC1/EAAtfxwALX8gAC1/JAAtfygALX8sAC1/NAAtfzwALX9AAC1/RAAtf0wALX9QAC2BPAAtgUQALYFMAC2BVAAtgWAALYFkAC2BaAAtgWwALYFwAC2BeAAtgYAALYGEAC2BiAAtgZAALYGUAC2DgAAtg4gALYOQAC2DmAAtg6QALYOoAC2DrAAtg7AALYO0AC2DvAAtg8QALYPIAC2DzAAtg9QALYPYAC2FxAAthcwALYXUAC2F3AAthegALYXsAC2F8AAthfQALYX4AC2GAAAthggALYYMAC2GEAAthhgALYYcAC2HQAAth9AALYhsAC2I/AAtiQgALYkQAC2JGAAtiSAALYkoAC2JMAAtiTQALYlAAC2JpAAtihgALYogAC2KKAAtijAALYo4AC2KQAAtikgALYpQAC2KxAAtitAALYrcAC2K6AAtivQALYsAAC2LDAAtixgALYsgAC2NDAAtjRQALY0cAC2NJAAtjTAALY00AC2NOAAtjTwALY1AAC2NSAAtjVAALY1UAC2NWAAtjWAALY1kAC2PUAAtj1gALY9gAC2PaAAtj3QALY94AC2PfAAtj4AALY+EAC2PjAAtj5QALY+YAC2PnAAtj6QALY+oAC2RlAAtkZwALZGkAC2RrAAtkbgALZG8AC2RwAAtkcQALZHIAC2R0AAtkdgALZHcAC2R4AAtkegALZHsAC2T2AAtk+AALZPoAC2T8AAtk/wALZQAAC2UBAAtlAgALZQMAC2UFAAtlBwALZQgAC2UJAAtlCwALZQwAC2WHAAtliQALZYsAC2WNAAtlkAALZZEAC2WSAAtlkwALZZQAC2WWAAtlmAALZZkAC2WaAAtlnAALZZ0AC2YYAAtmGgALZhwAC2YeAAtmIQALZiIAC2YjAAtmJAALZiUAC2YnAAtmKQALZioAC2YrAAtmLQALZi4AC2apAAtmqwALZq0AC2avAAtmsgALZrMAC2a0AAtmtQALZrYAC2a4AAtmugALZrsAC2a8AAtmvgALZr8AC2dSAAtndQALZ5UAC2e1AAtntwALZ7kAC2e7AAtnvQALZ8AAC2fBAAtnwgALZ8UAC2fGAAtnyAALZ8kAC2fLAAtnzgALZ88AC2fQAAtn0wALZ9QAC2fZAAtn8gALZ/sAC2f9AAtn/wALaAgAC2gLAAtoDgALaBAAC2hZAAtofQALaKQAC2jIAAtoywALaM0AC2jPAAto0QALaNMAC2jVAAto1gALaNkAC2jyAAtpEwALaRUAC2kXAAtpGQALaRsAC2kdAAtpHwALaSEAC2kjAAtpRAALaUcAC2lKAAtpTQALaVAAC2lTAAtpVgALaVkAC2lcAAtpXgALadkAC2nbAAtp3QALad8AC2niAAtp4wALaeQAC2nlAAtp5gALaegAC2nqAAtp6wALaewAC2nuAAtp7wALamoAC2psAAtqbgALanAAC2pzAAtqdAALanUAC2p2AAtqdwALankAC2p7AAtqfAALan0AC2p/AAtqgAALavsAC2r9AAtrAAALawIAC2sFAAtrBgALawcAC2sIAAtrCQALawsAC2sNAAtrDgALaw8AC2sRAAtrEgALaysAC2ssAAtrLQALay8AC2uqAAtrrAALa64AC2uwAAtrswALa7QAC2u1AAtrtgALa7cAC2u5AAtruwALa7wAC2u9AAtrvwALa8AAC2w7AAtsPQALbD8AC2xBAAtsRAALbEUAC2xGAAtsRwALbEgAC2xKAAtsTAALbE0AC2xOAAtsUAALbFEAC2zMAAtszgALbNAAC2zSAAts1QALbNYAC2zXAAts2AALbNkAC2zbAAts3QALbN4AC2zfAAts4QALbOIAC21dAAttXwALbWEAC21jAAttZgALbWcAC21oAAttaQALbWoAC21sAAttbgALbW8AC21wAAttcgALbXMAC23uAAtt8AALbfIAC230AAtt9wALbfgAC235AAtt+gALbfsAC239AAtt/wALbgAAC24BAAtuAwALbgQAC25NAAtucQALbpgAC268AAtuvwALbsEAC27DAAtuxQALbscAC27JAAtuygALbs0AC27mAAtvAwALbwUAC28HAAtvCQALbwsAC28NAAtvDwALbxEAC28uAAtvMQALbzQAC283AAtvOgALbz0AC29AAAtvQwALb0UAC2/AAAtvwgALb8QAC2/GAAtvyQALb8oAC2/LAAtvzAALb80AC2/PAAtv0QALb9IAC2/TAAtv1QALb9YAC3BRAAtwUwALcFUAC3BXAAtwWgALcFsAC3BcAAtwXQALcF4AC3BgAAtwYgALcGMAC3BkAAtwZgALcGcAC3DiAAtw5AALcOYAC3DoAAtw6wALcOwAC3DtAAtw7gALcO8AC3DxAAtw8wALcPQAC3D1AAtw9wALcPgAC3FzAAtxdQALcXgAC3F6AAtxfQALcX4AC3F/AAtxgAALcYEAC3GDAAtxhQALcYYAC3GHAAtxiQALcYoAC3IFAAtyBwALcgkAC3ILAAtyDgALcg8AC3IQAAtyEQALchIAC3IUAAtyFgALchcAC3IYAAtyGgALchsAC3KWAAtymAALcpoAC3KcAAtynwALcqAAC3KhAAtyogALcqMAC3KlAAtypwALcqgAC3KpAAtyqwALcqwAC3MnAAtzKQALcysAC3MtAAtzMAALczEAC3MyAAtzMwALczQAC3M2AAtzOAALczkAC3M6AAtzPAALcz0AC3PQAAtz8wALdBMAC3QzAAt0NQALdDcAC3Q5AAt0OwALdD4AC3Q/AAt0QAALdEMAC3REAAt0RgALdEcAC3RJAAt0TAALdE0AC3ROAAt0UQALdFIAC3RXAAt0cAALdHkAC3R7AAt0fQALdIYAC3SJAAt0jAALdI4AC3TXAAt0+wALdSIAC3VGAAt1SQALdUsAC3VNAAt1TwALdVEAC3VTAAt1VAALdVcAC3VwAAt1kQALdZMAC3WVAAt1lwALdZkAC3WbAAt1nQALdZ8AC3WhAAt1wgALdcUAC3XIAAt1ywALdc4AC3XRAAt11AALddcAC3XaAAt13AALdlcAC3ZZAAt2WwALdl0AC3ZgAAt2YQALdmIAC3ZjAAt2ZAALdmYAC3ZoAAt2aQALdmoAC3ZsAAt2bQALdugAC3bqAAt27AALdu4AC3bxAAt28gALdvMAC3b0AAt29QALdvcAC3b5AAt2+gALdvsAC3b9AAt2/gALd3kAC3d7AAt3fgALd4AAC3eDAAt3hAALd4UAC3eGAAt3hwALd4kAC3eLAAt3jAALd40AC3ePAAt3kAALd6kAC3eqAAt3qwALd60AC3goAAt4KgALeCwAC3guAAt4MQALeDIAC3gzAAt4NAALeDUAC3g3AAt4OQALeDoAC3g7AAt4PQALeD4AC3i5AAt4uwALeL0AC3i/AAt4wgALeMMAC3jEAAt4xQALeMYAC3jIAAt4ygALeMsAC3jMAAt4zgALeM8AC3lKAAt5TAALeU4AC3lQAAt5UwALeVQAC3lVAAt5VgALeVcAC3lZAAt5WwALeVwAC3ldAAt5XwALeWAAC3nbAAt53QALed8AC3nhAAt55AALeeUAC3nmAAt55wALeegAC3nqAAt57AALee0AC3nuAAt58AALefEAC3psAAt6bgALenAAC3pyAAt6dQALenYAC3p3AAt6eAALenkAC3p7AAt6fQALen4AC3p/AAt6gQALeoIAC3rLAAt67wALexYAC3s6AAt7PQALez8AC3tBAAt7QwALe0UAC3tHAAt7SAALe0sAC3tkAAt7gQALe4MAC3uFAAt7hwALe4kAC3uLAAt7jQALe48AC3usAAt7rwALe7IAC3u1AAt7uAALe7sAC3u+AAt7wQALe8MAC3w+AAt8QAALfEIAC3xEAAt8RwALfEgAC3xJAAt8SgALfEsAC3xNAAt8TwALfFAAC3xRAAt8UwALfFQAC3zPAAt80QALfNMAC3zVAAt82AALfNkAC3zaAAt82wALfNwAC3zeAAt84AALfOEAC3ziAAt85AALfOUAC31gAAt9YgALfWQAC31mAAt9aQALfWoAC31rAAt9bAALfW0AC31vAAt9cQALfXIAC31zAAt9dQALfXYAC33xAAt98wALffUAC333AAt9+gALffsAC338AAt9/QALff4AC34AAAt+AgALfgMAC34EAAt+BgALfgcAC36CAAt+hAALfoYAC36IAAt+iwALfowAC36NAAt+jgALfo8AC36RAAt+kwALfpQAC36VAAt+lwALfpgAC38TAAt/FQALfxgAC38aAAt/HQALfx4AC38fAAt/IAALfyEAC38jAAt/JQALfyYAC38nAAt/KQALfyoAC39JAAt/xAALf8YAC3/IAAt/ygALf80AC3/OAAt/zwALf9AAC3/RAAt/0wALf9UAC3/WAAt/1wALf9kAC3/aAAt/6wALf+wAC3/uAAuAaQALgGsAC4BtAAuAbwALgHIAC4BzAAuAdAALgHUAC4B2AAuAeAALgHsAC4B8AAuAfQALgH8AC4CAAAuA+wALgP0AC4D/AAuBAQALgQQAC4EFAAuBBgALgQcAC4EIAAuBCgALgQ0AC4EOAAuBDwALgREAC4ESAAuBjQALgY8AC4GSAAuBlAALgZcAC4GYAAuBmQALgZoAC4GbAAuBnQALgaAAC4GhAAuBogALgaQAC4GlAAuCOAALglsAC4J7AAuCmwALgp0AC4KfAAuCoQALgqMAC4KmAAuCpwALgqgAC4KrAAuCrAALgq4AC4KvAAuCsQALgrQAC4K1AAuCtgALgrkAC4K6AAuCwwALgtwAC4LlAAuC5wALgukAC4LyAAuC9QALgvgAC4L6AAuDQwALg2cAC4OOAAuDsgALg7UAC4O3AAuDuQALg7sAC4O9AAuDvwALg8AAC4PDAAuD3AALg/0AC4P/AAuEAQALhAMAC4QFAAuEBwALhAkAC4QLAAuEDQALhC4AC4QxAAuENAALhDcAC4Q6AAuEPQALhEAAC4RDAAuERgALhEgAC4TDAAuExQALhMcAC4TJAAuEzAALhM0AC4TOAAuEzwALhNAAC4TSAAuE1AALhNUAC4TWAAuE2AALhNkAC4VUAAuFVgALhVgAC4VaAAuFXQALhV4AC4VfAAuFYAALhWEAC4VjAAuFZQALhWYAC4VnAAuFaQALhWoAC4XlAAuF5wALheoAC4XsAAuF7wALhfAAC4XxAAuF8gALhfMAC4X1AAuF9wALhfgAC4X5AAuF+wALhfwAC4YVAAuGFgALhhcAC4YZAAuGlAALhpYAC4aYAAuGmgALhp0AC4aeAAuGnwALhqAAC4ahAAuGowALhqUAC4amAAuGpwALhqkAC4aqAAuHJQALhycAC4cpAAuHKwALhy4AC4cvAAuHMAALhzEAC4cyAAuHNAALhzYAC4c3AAuHOAALhzoAC4c7AAuHtgALh7gAC4e6AAuHvAALh78AC4fAAAuHwQALh8IAC4fDAAuHxQALh8cAC4fIAAuHyQALh8sAC4fMAAuIRwALiEkAC4hLAAuITQALiFAAC4hRAAuIUgALiFMAC4hUAAuIVgALiFgAC4hZAAuIWgALiFwAC4hdAAuI2AALiNoAC4jcAAuI3gALiOEAC4jiAAuI4wALiOQAC4jlAAuI5wALiOkAC4jqAAuI6wALiO0AC4juAAuJNwALiVsAC4mCAAuJpgALiakAC4mrAAuJrQALia8AC4mxAAuJswALibQAC4m3AAuJ0AALie0AC4nvAAuJ8QALifMAC4n1AAuJ9wALifkAC4n7AAuKGAALihsAC4oeAAuKIQALiiQAC4onAAuKKgALii0AC4ovAAuKqgALiqwAC4qvAAuKsQALirQAC4q1AAuKtgALircAC4q4AAuKugALirwAC4q9AAuKvgALisAAC4rBAAuLPAALiz4AC4tAAAuLQgALi0UAC4tGAAuLRwALi0gAC4tJAAuLSwALi00AC4tOAAuLTwALi1EAC4tSAAuLzQALi88AC4vRAAuL0wALi9YAC4vXAAuL2AALi9kAC4vaAAuL3AALi94AC4vfAAuL4AALi+IAC4vjAAuMXgALjGAAC4xjAAuMZQALjGgAC4xpAAuMagALjGsAC4xsAAuMbgALjHAAC4xxAAuMcgALjHQAC4x1AAuM8AALjPIAC4z0AAuM9gALjPkAC4z6AAuM+wALjPwAC4z9AAuM/wALjQEAC40CAAuNAwALjQUAC40GAAuNgQALjYMAC42FAAuNhwALjYoAC42LAAuNjAALjY0AC42OAAuNkAALjZIAC42TAAuNlAALjZYAC42XAAuOEgALjhQAC44WAAuOGAALjhsAC44cAAuOHQALjh4AC44fAAuOIQALjiMAC44kAAuOJQALjicAC44oAAuOuwALjt4AC47+AAuPHgALjyAAC48iAAuPJAALjyYAC48pAAuPKgALjysAC48uAAuPLwALjzEAC48yAAuPNAALjzcAC484AAuPOQALjzwAC489AAuPQgALj1sAC49kAAuPZgALj2gAC49xAAuPdAALj3cAC495AAuPwgALj+YAC5ANAAuQMQALkDQAC5A2AAuQOAALkDoAC5A8AAuQPgALkD8AC5BCAAuQWwALkHwAC5B+AAuQgAALkIIAC5CEAAuQhgALkIgAC5CKAAuQjAALkK0AC5CwAAuQswALkLYAC5C5AAuQvAALkL8AC5DCAAuQxQALkMcAC5FCAAuRRAALkUYAC5FIAAuRSwALkUwAC5FNAAuRTgALkU8AC5FRAAuRUwALkVQAC5FVAAuRVwALkVgAC5HTAAuR1QALkdcAC5HZAAuR3AALkd0AC5HeAAuR3wALkeAAC5HiAAuR5AALkeUAC5HmAAuR6AALkekAC5JkAAuSZgALkmkAC5JrAAuSbgALkm8AC5JwAAuScQALknIAC5J0AAuSdgALkncAC5J4AAuSegALknsAC5KUAAuSlQALkpYAC5KYAAuTEwALkxUAC5MXAAuTGQALkxwAC5MdAAuTHgALkx8AC5MgAAuTIgALkyQAC5MlAAuTJgALkygAC5MpAAuTpAALk6YAC5OoAAuTqgALk60AC5OuAAuTrwALk7AAC5OxAAuTswALk7UAC5O2AAuTtwALk7kAC5O6AAuUNQALlDcAC5Q5AAuUOwALlD4AC5Q/AAuUQAALlEEAC5RCAAuURAALlEYAC5RHAAuUSAALlEoAC5RLAAuUxgALlMgAC5TKAAuUzAALlM8AC5TQAAuU0QALlNIAC5TTAAuU1QALlNcAC5TYAAuU2QALlNsAC5TcAAuVVwALlVkAC5VbAAuVXQALlWAAC5VhAAuVYgALlWMAC5VkAAuVZgALlWgAC5VpAAuVagALlWwAC5VtAAuVtgALldoAC5YBAAuWJQALligAC5YqAAuWLAALli4AC5YwAAuWMgALljMAC5Y2AAuWTwALlmwAC5ZuAAuWcAALlnIAC5Z0AAuWdgALlngAC5Z6AAuWlwALlpoAC5adAAuWoAALlqMAC5amAAuWqQALlqwAC5auAAuXKQALlysAC5cuAAuXMAALlzMAC5c0AAuXNQALlzYAC5c3AAuXOQALlzsAC5c8AAuXPQALlz8AC5dAAAuXuwALl70AC5e/AAuXwQALl8QAC5fFAAuXxgALl8cAC5fIAAuXygALl8wAC5fNAAuXzgALl9AAC5fRAAuYTAALmE4AC5hQAAuYUgALmFUAC5hWAAuYVwALmFgAC5hZAAuYWwALmF0AC5heAAuYXwALmGEAC5hiAAuY3QALmN8AC5jiAAuY5AALmOcAC5joAAuY6QALmOoAC5jrAAuY7QALmO8AC5jwAAuY8QALmPMAC5j0AAuZbwALmXEAC5lzAAuZdQALmXgAC5l5AAuZegALmXsAC5l8AAuZfgALmYAAC5mBAAuZggALmYQAC5mFAAuaAAALmgIAC5oEAAuaBgALmgkAC5oKAAuaCwALmgwAC5oNAAuaDwALmhEAC5oSAAuaEwALmhUAC5oWAAuakQALmpMAC5qVAAualwALmpoAC5qbAAuanAALmp0AC5qeAAuaoAALmqIAC5qjAAuapAALmqYAC5qnAAubOgALm10AC5t9AAubnQALm58AC5uhAAubowALm6UAC5uoAAubqQALm6oAC5utAAubrgALm7AAC5uxAAubswALm7YAC5u3AAubuAALm7sAC5u8AAubwQALm9oAC5vjAAub5QALm+cAC5vwAAub8wALm/YAC5v4AAucQQALnGUAC5yMAAucsAALnLMAC5y1AAuctwALnLkAC5y7AAucvQALnL4AC5zBAAuc2gALnPsAC5z9AAuc/wALnQEAC50DAAudBQALnQcAC50JAAudCwALnSwAC50vAAudMgALnTUAC504AAudOwALnT4AC51BAAudRAALnUYAC53BAAudwwALncUAC53HAAudygALncsAC53MAAudzQALnc4AC53QAAud0gALndMAC53UAAud1gALndcAC55SAAueVAALnlYAC55YAAueWwALnlwAC55dAAueXgALnl8AC55hAAueYwALnmQAC55lAAueZwALnmgAC57jAAue5QALnugAC57qAAue7QALnu4AC57vAAue8AALnvEAC57zAAue9QALnvYAC573AAue+QALnvoAC58TAAufFAALnxUAC58XAAufkgALn5QAC5+WAAufmAALn5sAC5+cAAufnQALn54AC5+fAAufoQALn6MAC5+kAAufpQALn6cAC5+oAAugIwALoCUAC6AnAAugKQALoCwAC6AtAAugLgALoC8AC6AwAAugMgALoDQAC6A1AAugNgALoDgAC6A5AAugtAALoLYAC6C4AAugugALoL0AC6C+AAugvwALoMAAC6DBAAugwwALoMUAC6DGAAugxwALoMkAC6DKAAuhRQALoUcAC6FJAAuhSwALoU4AC6FPAAuhUAALoVEAC6FSAAuhVAALoVYAC6FXAAuhWAALoVoAC6FbAAuh1gALodgAC6HaAAuh3AALod8AC6HgAAuh4QALoeIAC6HjAAuh5QALoecAC6HoAAuh6QALoesAC6HsAAuiNQALolkAC6KAAAuipAALoqcAC6KpAAuiqwALoq0AC6KvAAuisQALorIAC6K1AAuizgALousAC6LtAAui7wALovEAC6LzAAui9QALovcAC6L5AAujFgALoxkAC6McAAujHwALoyIAC6MlAAujKAALoysAC6MtAAujqAALo6oAC6OsAAujrgALo7EAC6OyAAujswALo7QAC6O1AAujtwALo7kAC6O6AAujuwALo70AC6O+AAukOQALpDsAC6Q9AAukPwALpEIAC6RDAAukRAALpEUAC6RGAAukSAALpEoAC6RLAAukTAALpE4AC6RPAAukygALpMwAC6TOAAuk0AALpNMAC6TUAAuk1QALpNYAC6TXAAuk2QALpNsAC6TcAAuk3QALpN8AC6TgAAulWwALpV0AC6VgAAulYgALpWUAC6VmAAulZwALpWgAC6VpAAulawALpW0AC6VuAAulbwALpXEAC6VyAAul7QALpe8AC6XxAAul8wALpfYAC6X3AAul+AALpfkAC6X6AAul/AALpf4AC6X/AAumAAALpgIAC6YDAAumfgALpoAAC6aCAAumhAALpocAC6aIAAumiQALpooAC6aLAAumjQALpo8AC6aQAAumkQALppMAC6aUAAunDwALpxEAC6cTAAunFQALpxgAC6cZAAunGgALpxsAC6ccAAunHgALpyAAC6chAAunIgALpyQAC6clAAunuAALp9sAC6f7AAuoGwALqB0AC6gfAAuoIQALqCMAC6gmAAuoJwALqCgAC6grAAuoLAALqC4AC6gvAAuoMQALqDQAC6g1AAuoNgALqDkAC6g6AAuoQwALqFwAC6hlAAuoZwALqGkAC6hyAAuodQALqHgAC6h6AAuowwALqOcAC6kOAAupMgALqTUAC6k3AAupOQALqTsAC6k9AAupPwALqUAAC6lDAAupXAALqX0AC6l/AAupgQALqYMAC6mFAAuphwALqYkAC6mLAAupjQALqa4AC6mxAAuptAALqbcAC6m6AAupvQALqcAAC6nDAAupxgALqcgAC6pDAAuqRQALqkcAC6pJAAuqTAALqk0AC6pOAAuqTwALqlAAC6pSAAuqVAALqlUAC6pWAAuqWAALqlkAC6rUAAuq1gALqtgAC6raAAuq3QALqt4AC6rfAAuq4AALquEAC6rjAAuq5QALquYAC6rnAAuq6QALquoAC6tlAAurZwALq2oAC6tsAAurbwALq3AAC6txAAurcgALq3MAC6t1AAurdwALq3gAC6t5AAurewALq3wAC6uVAAurlgALq5cAC6uZAAusFAALrBYAC6wYAAusGgALrB0AC6weAAusHwALrCAAC6whAAusIwALrCUAC6wmAAusJwALrCkAC6wqAAuspQALrKcAC6ypAAusqwALrK4AC6yvAAussAALrLEAC6yyAAustAALrLYAC6y3AAusuAALrLoAC6y7AAutNgALrTgAC606AAutPAALrT8AC61AAAutQQALrUIAC61DAAutRQALrUcAC61IAAutSQALrUsAC61MAAutxwALrckAC63LAAutzQALrdAAC63RAAut0gALrdMAC63UAAut1gALrdgAC63ZAAut2gALrdwAC63dAAuuWAALrloAC65cAAuuXgALrmEAC65iAAuuYwALrmQAC65lAAuuZwALrmkAC65qAAuuawALrm0AC65uAAuutwALrtsAC68CAAuvJgALrykAC68rAAuvLQALry8AC68xAAuvMwALrzQAC683AAuvUAALr20AC69vAAuvcQALr3MAC691AAuvdwALr3kAC697AAuvmAALr5sAC6+eAAuvoQALr6QAC6+nAAuvqgALr60AC6+vAAuwKgALsCwAC7AvAAuwMQALsDQAC7A1AAuwNgALsDcAC7A4AAuwOgALsDwAC7A9AAuwPgALsEAAC7BBAAuwvAALsL4AC7DAAAuwwgALsMUAC7DGAAuwxwALsMgAC7DJAAuwywALsM0AC7DOAAuwzwALsNEAC7DSAAuxTQALsU8AC7FRAAuxUwALsVYAC7FXAAuxWAALsVkAC7FaAAuxXAALsV4AC7FfAAuxYAALsWIAC7FjAAux3gALseAAC7HjAAux5QALsegAC7HpAAux6gALsesAC7HsAAux7gALsfAAC7HxAAux8gALsfQAC7H1AAuycAALsnIAC7J0AAuydgALsnkAC7J6AAuyewALsnwAC7J9AAuyfwALsoEAC7KCAAuygwALsoUAC7KGAAuzAQALswMAC7MFAAuzBwALswoAC7MLAAuzDAALsw0AC7MOAAuzEAALsxIAC7MTAAuzFAALsxYAC7MXAAuzkgALs5QAC7OWAAuzmAALs5sAC7OcAAuznQALs54AC7OfAAuzoQALs6MAC7OkAAuzpQALs6cAC7OoAAuzuQALs7oAC7O8AAu0NwALtDkAC7Q7AAu0PQALtEAAC7RBAAu0QgALtEMAC7REAAu0RgALtEkAC7RKAAu0SwALtE0AC7ROAAu0yQALtMsAC7TNAAu0zwALtNIAC7TTAAu01AALtNUAC7TWAAu02AALtNsAC7TcAAu03QALtN8AC7TgAAu1WwALtV0AC7VgAAu1YgALtWUAC7VmAAu1ZwALtWgAC7VpAAu1awALtW4AC7VvAAu1cAALtXIAC7VzAAu2BgALtikAC7ZJAAu2aQALtmsAC7ZtAAu2bwALtnEAC7Z0AAu2dQALtnYAC7Z5AAu2egALtnwAC7Z9AAu2fwALtoIAC7aDAAu2hAALtocAC7aIAAu2jQALtqYAC7avAAu2sQALtrMAC7a8AAu2vwALtsIAC7bEAAu3DQALtzEAC7dYAAu3fAALt38AC7eBAAu3gwALt4UAC7eHAAu3iQALt4oAC7eNAAu3pgALt8cAC7fJAAu3ywALt80AC7fPAAu30QALt9MAC7fVAAu31wALt/gAC7f7AAu3/gALuAEAC7gEAAu4BwALuAoAC7gNAAu4EAALuBIAC7iNAAu4jwALuJEAC7iTAAu4lgALuJcAC7iYAAu4mQALuJoAC7icAAu4ngALuJ8AC7igAAu4ogALuKMAC7keAAu5IAALuSIAC7kkAAu5JwALuSgAC7kpAAu5KgALuSsAC7ktAAu5LwALuTAAC7kxAAu5MwALuTQAC7mvAAu5sQALubQAC7m2AAu5uQALuboAC7m7AAu5vAALub0AC7m/AAu5wQALucIAC7nDAAu5xQALucYAC7nfAAu54AALueEAC7njAAu6XgALumAAC7piAAu6ZAALumcAC7poAAu6aQALumoAC7prAAu6bQALum8AC7pwAAu6cQALunMAC7p0AAu67wALuvEAC7rzAAu69QALuvgAC7r5AAu6+gALuvsAC7r8AAu6/gALuwAAC7sBAAu7AgALuwQAC7sFAAu7gAALu4IAC7uEAAu7hgALu4kAC7uKAAu7iwALu4wAC7uNAAu7jwALu5EAC7uSAAu7kwALu5UAC7uWAAu8EQALvBMAC7wVAAu8FwALvBoAC7wbAAu8HAALvB0AC7weAAu8IAALvCIAC7wjAAu8JAALvCYAC7wnAAu8ogALvKQAC7ymAAu8qAALvKsAC7ysAAu8rQALvK4AC7yvAAu8sQALvLMAC7y0AAu8tQALvLcAC7y4AAu9AQALvSUAC71MAAu9cAALvXMAC711AAu9dwALvXkAC717AAu9fQALvX4AC72BAAu9mgALvbcAC725AAu9uwALvb0AC72/AAu9wQALvcMAC73FAAu94gALveUAC73oAAu96wALve4AC73xAAu99AALvfcAC735AAu+dAALvnYAC754AAu+egALvn0AC75+AAu+fwALvoAAC76BAAu+gwALvoUAC76GAAu+hwALvokAC76KAAu/BQALvwcAC78JAAu/CwALvw4AC78PAAu/EAALvxEAC78SAAu/FAALvxYAC78XAAu/GAALvxoAC78bAAu/lgALv5gAC7+aAAu/nAALv58AC7+gAAu/oQALv6IAC7+jAAu/pQALv6cAC7+oAAu/qQALv6sAC7+sAAvAJwALwCkAC8AsAAvALgALwDEAC8AyAAvAMwALwDQAC8A1AAvANwALwDkAC8A6AAvAOwALwD0AC8A+AAvAuQALwLsAC8C9AAvAvwALwMIAC8DDAAvAxAALwMUAC8DGAAvAyAALwMoAC8DLAAvAzAALwM4AC8DPAAvBSgALwUwAC8FOAAvBUAALwVMAC8FUAAvBVQALwVYAC8FXAAvBWQALwVsAC8FcAAvBXQALwV8AC8FgAAvB2wALwd0AC8HfAAvB4QALweQAC8HlAAvB5gALwecAC8HoAAvB6gALwewAC8HtAAvB7gALwfAAC8HxAAvCAgALwgMAC8IFAAvCiAALwqwAC8LQAAvC8wALwxoAC8M6AAvDYQALw4gAC8OoAAvDzAALw/AAC8PyAAvD9QALw/cAC8P5AAvD+wALw/4AC8QBAAvEAwALxAUAC8QIAAvECgALxAwAC8QPAAvEEgALxBMAC8QYAAvEMQALxDYAC8Q4AAvEPQALxEAAC8RCAAvEiwALxK8AC8TWAAvE+gALxP0AC8T/AAvFAQALxQMAC8UFAAvFBwALxQgAC8ULAAvFJAALxUkAC8VLAAvFTQALxU8AC8VRAAvFUwALxVUAC8VXAAvFWQALxVsAC8WAAAvFgwALxYYAC8WJAAvFjAALxY8AC8WSAAvFlQALxZgAC8WbAAvFnQALxhgAC8YaAAvGHQALxh8AC8YiAAvGIwALxiQAC8YlAAvGJgALxigAC8YqAAvGKwALxiwAC8YuAAvGLwALxkAAC8ZBAAvGQwALxr4AC8bAAAvGwgALxsQAC8bHAAvGyAALxskAC8bKAAvGywALxs0AC8bPAAvG0AALxtEAC8bTAAvG1AALx08AC8dRAAvHVAALx1YAC8dZAAvHWgALx1sAC8dcAAvHXQALx18AC8dhAAvHYgALx2MAC8dlAAvHZgALx3cAC8d8AAvHfwALx4EAC8eSAAvHmwALx54AC8ehAAvHowALx74AC8fTAAvITgALyFAAC8hSAAvIVAALyFcAC8hYAAvIWQALyFoAC8hbAAvIXQALyF8AC8hgAAvIYQALyGMAC8hkAAvI3wALyOEAC8jkAAvI5gALyOkAC8jqAAvI6wALyOwAC8jtAAvI7wALyPEAC8jyAAvI8wALyPUAC8j2AAvJBwALyQgAC8kKAAvJhQALyYcAC8mJAAvJiwALyY4AC8mPAAvJkAALyZEAC8mSAAvJlAALyZYAC8mXAAvJmAALyZoAC8mbAAvKFgALyhgAC8obAAvKHQALyiAAC8ohAAvKIgALyiMAC8okAAvKJgALyigAC8opAAvKKgALyiwAC8otAAvKRgALykcAC8pIAAvKSgALysUAC8rHAAvKyQALyssAC8rOAAvKzwALytAAC8rRAAvK0gALytQAC8rWAAvK1wALytgAC8raAAvK2wALy1YAC8tYAAvLWwALy10AC8tgAAvLYQALy2IAC8tjAAvLZAALy2YAC8toAAvLaQALy2oAC8tsAAvLbQALy54AC8u3AAvLxAALy8cAC8vKAAvLzQALy9oAC8vdAAvL4AALy+MAC8vlAAvMAAALzBUAC8woAAvMuwALzN4AC8z+AAvNHgALzSAAC80iAAvNJAALzSYAC80pAAvNKgALzSsAC80uAAvNLwALzTEAC80yAAvNNAALzTcAC804AAvNOQALzTwAC809AAvNQgALzVsAC81kAAvNZgALzWgAC81xAAvNdAALzXcAC815AAvNwgALzeYAC84NAAvOMQALzjQAC842AAvOOAALzjoAC848AAvOPgALzj8AC85CAAvOWwALznwAC85+AAvOgAALzoIAC86EAAvOhgALzogAC86KAAvOjAALzq0AC86wAAvOswALzrYAC865AAvOvAALzr8AC87CAAvOxQALzscAC89CAAvPRAALz0YAC89IAAvPSwALz0wAC89NAAvPTgALz08AC89RAAvPUwALz1QAC89VAAvPVwALz1gAC8/TAAvP1QALz9cAC8/ZAAvP3AALz90AC8/eAAvP3wALz+AAC8/iAAvP5AALz+UAC8/mAAvP6AALz+kAC9BkAAvQZgAL0GkAC9BrAAvQbgAL0G8AC9BwAAvQcQAL0HIAC9B0AAvQdgAL0HcAC9B4AAvQegAL0HsAC9CUAAvQlQAL0JYAC9CYAAvREwAL0RUAC9EXAAvRGQAL0RwAC9EdAAvRHgAL0R8AC9EgAAvRIgAL0SQAC9ElAAvRJgAL0SgAC9EpAAvRpAAL0aYAC9GoAAvRqgAL0a0AC9GuAAvRrwAL0bAAC9GxAAvRswAL0bUAC9G2AAvRtwAL0bkAC9G6AAvSNQAL0jcAC9I5AAvSOwAL0j4AC9I/AAvSQAAL0kEAC9JCAAvSRAAL0kYAC9JHAAvSSAAL0koAC9JLAAvSxgAL0sgAC9LKAAvSzAAL0s8AC9LQAAvS0QAL0tIAC9LTAAvS1QAL0tcAC9LYAAvS2QAL0tsAC9LcAAvTVwAL01kAC9NbAAvTXQAL02AAC9NhAAvTYgAL02MAC9NkAAvTZgAL02gAC9NpAAvTagAL02wAC9NtAAvTtgAL09oAC9QBAAvUJQAL1CgAC9QqAAvULAAL1C4AC9QwAAvUMgAL1DMAC9Q2AAvUTwAL1GwAC9RuAAvUcAAL1HIAC9R0AAvUdgAL1HgAC9R6AAvUlwAL1JoAC9SdAAvUoAAL1KMAC9SmAAvUqQAL1KwAC9SuAAvVKQAL1SsAC9UtAAvVLwAL1TIAC9UzAAvVNAAL1TUAC9U2AAvVOAAL1ToAC9U7AAvVPAAL1T4AC9U/AAvVugAL1bwAC9W+AAvVwAAL1cMAC9XEAAvVxQAL1cYAC9XHAAvVyQAL1csAC9XMAAvVzQAL1c8AC9XQAAvWSwAL1k0AC9ZPAAvWUQAL1lQAC9ZVAAvWVgAL1lcAC9ZYAAvWWgAL1lwAC9ZdAAvWXgAL1mAAC9ZhAAvW3AAL1t4AC9bhAAvW4wAL1uYAC9bnAAvW6AAL1ukAC9bqAAvW7AAL1u4AC9bvAAvW8AAL1vIAC9bzAAvXbgAL13AAC9dyAAvXdAAL13cAC9d4AAvXeQAL13oAC9d7AAvXfQAL138AC9eAAAvXgQAL14MAC9eEAAvX/wAL2AEAC9gDAAvYBQAL2AgAC9gJAAvYCgAL2AsAC9gMAAvYDgAL2BAAC9gRAAvYEgAL2BQAC9gVAAvYkAAL2JIAC9iUAAvYlgAL2JkAC9iaAAvYmwAL2JwAC9idAAvYnwAL2KEAC9iiAAvYowAL2KUAC9imAAvZOQAL2VwAC9l8AAvZnAAL2Z4AC9mgAAvZogAL2aQAC9mnAAvZqAAL2akAC9msAAvZrQAL2a8AC9mwAAvZsgAL2bUAC9m2AAvZtwAL2boAC9m7AAvZwAAL2dkAC9niAAvZ5AAL2eYAC9nvAAvZ8gAL2fUAC9n3AAvaQAAL2mQAC9qLAAvarwAL2rIAC9q0AAvatgAL2rgAC9q6AAvavAAL2r0AC9rAAAva2QAL2voAC9r8AAva/gAL2wAAC9sCAAvbBAAL2wYAC9sIAAvbCgAL2ysAC9suAAvbMQAL2zQAC9s3AAvbOgAL2z0AC9tAAAvbQwAL20UAC9vAAAvbwgAL28QAC9vGAAvbyQAL28oAC9vLAAvbzAAL280AC9vPAAvb0QAL29IAC9vTAAvb1QAL29YAC9xRAAvcUwAL3FUAC9xXAAvcWgAL3FsAC9xcAAvcXQAL3F4AC9xgAAvcYgAL3GMAC9xkAAvcZgAL3GcAC9ziAAvc5AAL3OcAC9zpAAvc7AAL3O0AC9zuAAvc7wAL3PAAC9zyAAvc9AAL3PUAC9z2AAvc+AAL3PkAC90SAAvdEwAL3RQAC90WAAvdkQAL3ZMAC92VAAvdlwAL3ZoAC92bAAvdnAAL3Z0AC92eAAvdoAAL3aIAC92jAAvdpAAL3aYAC92nAAveIgAL3iQAC94mAAveKAAL3isAC94sAAveLQAL3i4AC94vAAveMQAL3jMAC940AAveNQAL3jcAC944AAveswAL3rUAC963AAveuQAL3rwAC969AAvevgAL3r8AC97AAAvewgAL3sQAC97FAAvexgAL3sgAC97JAAvfRAAL30YAC99IAAvfSgAL300AC99OAAvfTwAL31AAC99RAAvfUwAL31UAC99WAAvfVwAL31kAC99aAAvf1QAL39cAC9/ZAAvf2wAL394AC9/fAAvf4AAL3+EAC9/iAAvf5AAL3+YAC9/nAAvf6AAL3+oAC9/rAAvgNAAL4FgAC+B/AAvgowAL4KYAC+CoAAvgqgAL4KwAC+CuAAvgsAAL4LEAC+C0AAvgzQAL4OoAC+DsAAvg7gAL4PAAC+DyAAvg9AAL4PYAC+D4AAvhFQAL4RgAC+EbAAvhHgAL4SEAC+EkAAvhJwAL4SoAC+EsAAvhpwAL4akAC+GrAAvhrQAL4bAAC+GxAAvhsgAL4bMAC+G0AAvhtgAL4bgAC+G5AAvhugAL4bwAC+G9AAviOAAL4joAC+I8AAviPgAL4kEAC+JCAAviQwAL4kQAC+JFAAviRwAL4kkAC+JKAAviSwAL4k0AC+JOAAviyQAL4ssAC+LNAAvizwAL4tIAC+LTAAvi1AAL4tUAC+LWAAvi2AAL4toAC+LbAAvi3AAL4t4AC+LfAAvjWgAL41wAC+NfAAvjYQAL42QAC+NlAAvjZgAL42cAC+NoAAvjagAL42wAC+NtAAvjbgAL43AAC+NxAAvj7AAL4+4AC+PwAAvj8gAL4/UAC+P2AAvj9wAL4/gAC+P5AAvj+wAL4/0AC+P+AAvj/wAL5AEAC+QCAAvkfQAL5H8AC+SBAAvkgwAL5IYAC+SHAAvkiAAL5IkAC+SKAAvkjAAL5I4AC+SPAAvkkAAL5JIAC+STAAvlDgAL5RAAC+USAAvlFAAL5RcAC+UYAAvlGQAL5RoAC+UbAAvlHQAL5R8AC+UgAAvlIQAL5SMAC+UkAAvltwAL5doAC+X6AAvmGgAL5hwAC+YeAAvmIAAL5iIAC+YlAAvmJgAL5icAC+YqAAvmKwAL5i0AC+YuAAvmMQAL5jQAC+Y1AAvmNgAL5jkAC+Y6AAvmPwAL5lgAC+ZhAAvmYwAL5mYAC+ZvAAvmcgAL5nUAC+Z3AAvmwAAL5uQAC+cLAAvnLwAL5zIAC+c0AAvnNgAL5zgAC+c6AAvnPAAL5z0AC+dAAAvnWQAL53oAC+d8AAvnfgAL54AAC+eCAAvnhAAL54YAC+eIAAvnigAL56sAC+euAAvnsQAL57QAC+e3AAvnugAL570AC+fAAAvnwwAL58UAC+hAAAvoQgAL6EQAC+hGAAvoSQAL6EoAC+hLAAvoTAAL6E0AC+hPAAvoUQAL6FIAC+hTAAvoVQAL6FYAC+jRAAvo0wAL6NUAC+jXAAvo2gAL6NsAC+jcAAvo3QAL6N4AC+jgAAvo4gAL6OMAC+jkAAvo5gAL6OcAC+liAAvpZAAL6WcAC+lpAAvpbAAL6W0AC+luAAvpbwAL6XAAC+lyAAvpdAAL6XUAC+l2AAvpeAAL6XkAC+mSAAvpkwAL6ZQAC+mWAAvqEQAL6hMAC+oVAAvqFwAL6hoAC+obAAvqHAAL6h0AC+oeAAvqIAAL6iIAC+ojAAvqJAAL6iYAC+onAAvqogAL6qQAC+qmAAvqqAAL6qsAC+qsAAvqrQAL6q4AC+qvAAvqsQAL6rMAC+q0AAvqtQAL6rcAC+q4AAvrMwAL6zUAC+s3AAvrOQAL6zwAC+s9AAvrPgAL6z8AC+tAAAvrQgAL60QAC+tFAAvrRgAL60gAC+tJAAvrxAAL68YAC+vIAAvrygAL680AC+vOAAvrzwAL69AAC+vRAAvr0wAL69UAC+vWAAvr1wAL69kAC+vaAAvsVQAL7FcAC+xZAAvsWwAL7F4AC+xfAAvsYAAL7GEAC+xiAAvsZAAL7GYAC+xnAAvsaAAL7GoAC+xrAAvstAAL7NgAC+z/AAvtIwAL7SYAC+0pAAvtKwAL7S0AC+0vAAvtMQAL7TIAC+01AAvtTgAL7WsAC+1uAAvtcQAL7XQAC+13AAvtegAL7X0AC+2AAAvtnQAL7aAAC+2jAAvtpgAL7akAC+2sAAvtrwAL7bIAC+20AAvuLwAL7jEAC+40AAvuNgAL7jkAC+46AAvuOwAL7jwAC+49AAvuPwAL7kIAC+5DAAvuRAAL7kYAC+5HAAvuwgAL7sQAC+7HAAvuyQAL7swAC+7NAAvuzgAL7s8AC+7QAAvu0gAL7tUAC+7WAAvu1wAL7tkAC+7aAAvvVQAL71cAC+9aAAvvXAAL718AC+9gAAvvYQAL72IAC+9jAAvvZQAL72gAC+9pAAvvagAL72wAC+9tAAvv6AAL7+oAC+/tAAvv7wAL7/IAC+/zAAvv9AAL7/UAC+/2AAvv+AAL7/sAC+/8AAvv/QAL7/8AC/AAAAvwgwAL8KcAC/DLAAvw7gAL8RUAC/E1AAvxXAAL8YMAC/GjAAvxxwAL8esAC/HtAAvx8AAL8fIAC/H0AAvx9gAL8fkAC/H8AAvx/gAL8gAAC/IDAAvyBQAL8gcAC/IKAAvyDQAL8g4AC/ITAAvyLAAL8jEAC/IzAAvyOAAL8jsAC/I9AAvyhgAL8qoAC/LRAAvy9QAL8vgAC/L6AAvy/AAL8v4AC/MAAAvzAgAL8wMAC/MGAAvzHwAL80QAC/NGAAvzSAAL80oAC/NMAAvzTgAL81AAC/NSAAvzVAAL81YAC/N7AAvzfgAL84EAC/OEAAvzhwAL84oAC/ONAAvzkAAL85MAC/OWAAvzmAAL9BMAC/QVAAv0GAAL9BoAC/QdAAv0HgAL9B8AC/QgAAv0IQAL9CMAC/QlAAv0JgAL9CcAC/QpAAv0KgAL9DsAC/Q8AAv0PgAL9LkAC/S7AAv0vQAL9L8AC/TCAAv0wwAL9MQAC/TFAAv0xgAL9MgAC/TKAAv0ywAL9MwAC/TOAAv0zwAL9UoAC/VMAAv1TwAL9VEAC/VUAAv1VQAL9VYAC/VXAAv1WAAL9VoAC/VcAAv1XQAL9V4AC/VgAAv1YQAL9XIAC/VzAAv1dQAL9fAAC/XyAAv19AAL9fYAC/X5AAv1+gAL9fsAC/X8AAv1/QAL9f8AC/YBAAv2AgAL9gMAC/YFAAv2BgAL9oEAC/aDAAv2hgAL9ogAC/aLAAv2jAAL9o0AC/aOAAv2jwAL9pEAC/aTAAv2lAAL9pUAC/aXAAv2mAAL9qkAC/aqAAv2rAAL9ycAC/cpAAv3KwAL9y0AC/cwAAv3MQAL9zIAC/czAAv3NAAL9zYAC/c4AAv3OQAL9zoAC/c8AAv3PQAL97gAC/e6AAv3vQAL978AC/fCAAv3wwAL98QAC/fFAAv3xgAL98gAC/fKAAv3ywAL98wAC/fOAAv3zwAL9+gAC/fpAAv36gAL9+wAC/hnAAv4aQAL+GsAC/htAAv4cAAL+HEAC/hyAAv4cwAL+HQAC/h2AAv4eAAL+HkAC/h6AAv4fAAL+H0AC/j4AAv4+gAL+P0AC/j/AAv5AgAL+QMAC/kEAAv5BQAL+QYAC/kIAAv5CgAL+QsAC/kMAAv5DgAL+Q8AC/kiAAv5OwAL+WAAC/ljAAv5ZgAL+WkAC/lsAAv5bwAL+XIAC/l1AAv5eAAL+XsAC/mgAAv5owAL+aYAC/mpAAv5rAAL+a8AC/myAAv5tQAL+bgAC/m7AAv5vQAL+dMAC/oIAAv6HgAL+k4AC/ptAAv6gQAL+p8AC/q1AAv7SAAL+2sAC/uLAAv7qwAL+60AC/uvAAv7sQAL+7MAC/u2AAv7twAL+7gAC/u7AAv7vAAL+74AC/u/AAv7wQAL+8QAC/vFAAv7xgAL+8kAC/vKAAv7zwAL++gAC/vxAAv78wAL+/UAC/v+AAv8AQAL/AQAC/wGAAv8TwAL/HMAC/yaAAv8vgAL/MEAC/zDAAv8xQAL/McAC/zJAAv8ywAL/MwAC/zPAAv86AAL/QkAC/0LAAv9DQAL/Q8AC/0RAAv9EwAL/RUAC/0XAAv9GQAL/ToAC/09AAv9QAAL/UMAC/1GAAv9SQAL/UwAC/1PAAv9UgAL/VQAC/3PAAv90QAL/dMAC/3VAAv92AAL/dkAC/3aAAv92wAL/dwAC/3eAAv94AAL/eEAC/3iAAv95AAL/eUAC/5gAAv+YgAL/mQAC/5mAAv+aQAL/moAC/5rAAv+bAAL/m0AC/5vAAv+cQAL/nIAC/5zAAv+dQAL/nYAC/7xAAv+8wAL/vYAC/74AAv++wAL/vwAC/79AAv+/gAL/v8AC/8BAAv/AwAL/wQAC/8FAAv/BwAL/wgAC/8hAAv/IgAL/yMAC/8lAAv/oAAL/6IAC/+kAAv/pgAL/6kAC/+qAAv/qwAL/6wAC/+tAAv/rwAL/7EAC/+yAAv/swAL/7UAC/+2AAwAMQAMADMADAA1AAwANwAMADoADAA7AAwAPAAMAD0ADAA+AAwAQAAMAEIADABDAAwARAAMAEYADABHAAwAwgAMAMQADADGAAwAyAAMAMsADADMAAwAzQAMAM4ADADPAAwA0QAMANMADADUAAwA1QAMANcADADYAAwBUwAMAVUADAFXAAwBWQAMAVwADAFdAAwBXgAMAV8ADAFgAAwBYgAMAWQADAFlAAwBZgAMAWgADAFpAAwB5AAMAeYADAHoAAwB6gAMAe0ADAHuAAwB7wAMAfAADAHxAAwB8wAMAfUADAH2AAwB9wAMAfkADAH6AAwCQwAMAmcADAKOAAwCsgAMArUADAK3AAwCuQAMArsADAK9AAwCvwAMAsAADALDAAwC3AAMAvkADAL7AAwC/QAMAv8ADAMBAAwDAwAMAwUADAMHAAwDJAAMAycADAMqAAwDLQAMAzAADAMzAAwDNgAMAzkADAM7AAwDtgAMA7gADAO6AAwDvAAMA78ADAPAAAwDwQAMA8IADAPDAAwDxQAMA8cADAPIAAwDyQAMA8sADAPMAAwERwAMBEkADARLAAwETQAMBFAADARRAAwEUgAMBFMADARUAAwEVgAMBFgADARZAAwEWgAMBFwADARdAAwE2AAMBNoADATcAAwE3gAMBOEADATiAAwE4wAMBOQADATlAAwE5wAMBOkADATqAAwE6wAMBO0ADATuAAwFaQAMBWsADAVtAAwFbwAMBXIADAVzAAwFdAAMBXUADAV2AAwFeAAMBXoADAV7AAwFfAAMBX4ADAV/AAwF+gAMBfwADAX+AAwGAAAMBgMADAYEAAwGBQAMBgYADAYHAAwGCQAMBgsADAYMAAwGDQAMBg8ADAYQAAwGiwAMBo0ADAaPAAwGkQAMBpQADAaVAAwGlgAMBpcADAaYAAwGmgAMBpwADAadAAwGngAMBqAADAahAAwHHAAMBx4ADAcgAAwHIgAMByUADAcmAAwHJwAMBygADAcpAAwHKwAMBy0ADAcuAAwHLwAMBzEADAcyAAwHxQAMB+gADAgIAAwIKAAMCCoADAgsAAwILgAMCDAADAgzAAwINAAMCDUADAg4AAwIOQAMCDsADAg8AAwIPgAMCEEADAhCAAwIQwAMCEYADAhHAAwIUAAMCGkADAhyAAwIdAAMCHYADAh/AAwIggAMCIUADAiHAAwI0AAMCPQADAkbAAwJPwAMCUIADAlEAAwJRgAMCUgADAlKAAwJTAAMCU0ADAlQAAwJaQAMCYoADAmMAAwJjgAMCZAADAmSAAwJlAAMCZYADAmYAAwJmgAMCbsADAm+AAwJwQAMCcQADAnHAAwJygAMCc0ADAnQAAwJ0wAMCdUADApQAAwKUgAMClQADApWAAwKWQAMCloADApbAAwKXAAMCl0ADApfAAwKYQAMCmIADApjAAwKZQAMCmYADArhAAwK4wAMCuUADArnAAwK6gAMCusADArsAAwK7QAMCu4ADArwAAwK8gAMCvMADAr0AAwK9gAMCvcADAtyAAwLdAAMC3cADAt5AAwLfAAMC30ADAt+AAwLfwAMC4AADAuCAAwLhAAMC4UADAuGAAwLiAAMC4kADAuiAAwLowAMC6QADAumAAwMIQAMDCMADAwlAAwMJwAMDCoADAwrAAwMLAAMDC0ADAwuAAwMMAAMDDIADAwzAAwMNAAMDDYADAw3AAwMsgAMDLQADAy2AAwMuAAMDLsADAy8AAwMvQAMDL4ADAy/AAwMwQAMDMMADAzEAAwMxQAMDMcADAzIAAwNQwAMDUUADA1HAAwNSQAMDUwADA1NAAwNTgAMDU8ADA1QAAwNUgAMDVQADA1VAAwNVgAMDVgADA1ZAAwN1AAMDdYADA3YAAwN2gAMDd0ADA3eAAwN3wAMDeAADA3hAAwN4wAMDeUADA3mAAwN5wAMDekADA3qAAwOZQAMDmcADA5pAAwOawAMDm4ADA5vAAwOcAAMDnEADA5yAAwOdAAMDnYADA53AAwOeAAMDnoADA57AAwOxAAMDugADA8PAAwPMwAMDzYADA84AAwPOgAMDzwADA8+AAwPQAAMD0EADA9EAAwPXQAMD3oADA98AAwPfgAMD4AADA+CAAwPhAAMD4YADA+IAAwPpQAMD6gADA+rAAwPrgAMD7EADA+0AAwPtwAMD7oADA+8AAwQNwAMEDkADBA7AAwQPQAMEEAADBBBAAwQQgAMEEMADBBEAAwQRgAMEEgADBBJAAwQSgAMEEwADBBNAAwQyAAMEMoADBDMAAwQzgAMENEADBDSAAwQ0wAMENQADBDVAAwQ1wAMENkADBDaAAwQ2wAMEN0ADBDeAAwRWQAMEVsADBFdAAwRXwAMEWIADBFjAAwRZAAMEWUADBFmAAwRaAAMEWoADBFrAAwRbAAMEW4ADBFvAAwR6gAMEewADBHuAAwR8AAMEfMADBH0AAwR9QAMEfYADBH3AAwR+QAMEfsADBH8AAwR/QAMEf8ADBIAAAwSewAMEn0ADBJ/AAwSgQAMEoQADBKFAAwShgAMEocADBKIAAwSigAMEowADBKNAAwSjgAMEpAADBKRAAwTDAAMEw4ADBMRAAwTEwAMExYADBMXAAwTGAAMExkADBMaAAwTHAAMEx4ADBMfAAwTIAAMEyIADBMjAAwTMgAME60ADBOvAAwTsQAME7MADBO2AAwTtwAME7gADBO5AAwTugAME7wADBO+AAwTvwAME8AADBPCAAwTwwAMFFYADBR5AAwUmQAMFLkADBS7AAwUvQAMFL8ADBTBAAwUxAAMFMUADBTGAAwUyQAMFMoADBTMAAwUzQAMFNAADBTTAAwU1AAMFNUADBTYAAwU2QAMFN4ADBT3AAwVAAAMFQIADBUFAAwVDgAMFREADBUUAAwVFgAMFV8ADBWDAAwVqgAMFc4ADBXRAAwV0wAMFdUADBXXAAwV2QAMFdsADBXcAAwV3wAMFfgADBYZAAwWGwAMFh0ADBYfAAwWIQAMFiMADBYlAAwWJwAMFikADBZKAAwWTQAMFlAADBZTAAwWVgAMFlkADBZcAAwWXwAMFmIADBZkAAwW3wAMFuEADBbjAAwW5QAMFugADBbpAAwW6gAMFusADBbsAAwW7gAMFvAADBbxAAwW8gAMFvQADBb1AAwXcAAMF3IADBd0AAwXdgAMF3kADBd6AAwXewAMF3wADBd9AAwXfwAMF4EADBeCAAwXgwAMF4UADBeGAAwYAQAMGAMADBgGAAwYCAAMGAsADBgMAAwYDQAMGA4ADBgPAAwYEQAMGBMADBgUAAwYFQAMGBcADBgYAAwYMQAMGDIADBgzAAwYNQAMGLAADBiyAAwYtAAMGLYADBi5AAwYugAMGLsADBi8AAwYvQAMGL8ADBjBAAwYwgAMGMMADBjFAAwYxgAMGUEADBlDAAwZRQAMGUcADBlKAAwZSwAMGUwADBlNAAwZTgAMGVAADBlSAAwZUwAMGVQADBlWAAwZVwAMGdIADBnUAAwZ1gAMGdgADBnbAAwZ3AAMGd0ADBneAAwZ3wAMGeEADBnjAAwZ5AAMGeUADBnnAAwZ6AAMGmMADBplAAwaZwAMGmkADBpsAAwabQAMGm4ADBpvAAwacAAMGnIADBp0AAwadQAMGnYADBp4AAwaeQAMGvQADBr2AAwa+AAMGvoADBr9AAwa/gAMGv8ADBsAAAwbAQAMGwMADBsFAAwbBgAMGwcADBsJAAwbCgAMG1MADBt3AAwbngAMG8IADBvFAAwbyAAMG8oADBvMAAwbzgAMG9AADBvRAAwb1AAMG+0ADBwKAAwcDQAMHBAADBwTAAwcFgAMHBkADBwcAAwcHwAMHDwADBw/AAwcQgAMHEUADBxIAAwcSwAMHE4ADBxRAAwcUwAMHM4ADBzQAAwc0wAMHNUADBzYAAwc2QAMHNoADBzbAAwc3AAMHN4ADBzhAAwc4gAMHOMADBzlAAwc5gAMHWEADB1jAAwdZgAMHWgADB1rAAwdbAAMHW0ADB1uAAwdbwAMHXEADB10AAwddQAMHXYADB14AAwdeQAMHfQADB32AAwd+QAMHfsADB3+AAwd/wAMHgAADB4BAAweAgAMHgQADB4HAAweCAAMHgkADB4LAAweDAAMHocADB6JAAwejAAMHo4ADB6RAAwekgAMHpMADB6UAAwelQAMHpcADB6aAAwemwAMHpwADB6eAAwenwAMHxoADB8cAAwfHgAMHyAADB8jAAwfJAAMHyUADB8mAAwfJwAMHykADB8sAAwfLQAMHy4ADB8wAAwfMQAMH6wADB+uAAwfsAAMH7IADB+1AAwftgAMH7cADB+4AAwfuQAMH7sADB++AAwfvwAMH8AADB/CAAwfwwAMID4ADCBAAAwgQwAMIEUADCBIAAwgSQAMIEoADCBLAAwgTAAMIE4ADCBRAAwgUgAMIFMADCBVAAwgVgAMIOkADCEMAAwhLAAMIUwADCFOAAwhUAAMIVIADCFUAAwhVwAMIVgADCFZAAwhXAAMIV0ADCFfAAwhYAAMIWIADCFlAAwhZgAMIWcADCFqAAwhawAMIXQADCGNAAwhlgAMIZgADCGaAAwhowAMIaYADCGpAAwhqwAMIfQADCIYAAwiPwAMImMADCJmAAwiaAAMImoADCJsAAwibgAMInAADCJxAAwidAAMIo0ADCKuAAwisAAMIrIADCK0AAwitgAMIrgADCK6AAwivAAMIr4ADCLfAAwi4gAMIuUADCLoAAwi6wAMIu4ADCLxAAwi9AAMIvcADCL5AAwjdAAMI3YADCN4AAwjegAMI30ADCN+AAwjfwAMI4AADCOBAAwjgwAMI4UADCOGAAwjhwAMI4kADCOKAAwkBQAMJAcADCQJAAwkCwAMJA4ADCQPAAwkEAAMJBEADCQSAAwkFAAMJBYADCQXAAwkGAAMJBoADCQbAAwklgAMJJgADCSbAAwknQAMJKAADCShAAwkogAMJKMADCSkAAwkpgAMJKgADCSpAAwkqgAMJKwADCStAAwkxgAMJMcADCTIAAwkygAMJUUADCVHAAwlSQAMJUsADCVOAAwlTwAMJVAADCVRAAwlUgAMJVQADCVWAAwlVwAMJVgADCVaAAwlWwAMJdYADCXYAAwl2gAMJdwADCXfAAwl4AAMJeEADCXiAAwl4wAMJeUADCXnAAwl6AAMJekADCXrAAwl7AAMJmcADCZpAAwmawAMJm0ADCZwAAwmcQAMJnIADCZzAAwmdAAMJnYADCZ4AAwmeQAMJnoADCZ8AAwmfQAMJvgADCb6AAwm/AAMJv4ADCcBAAwnAgAMJwMADCcEAAwnBQAMJwcADCcJAAwnCgAMJwsADCcNAAwnDgAMJ4kADCeLAAwnjQAMJ48ADCeSAAwnkwAMJ5QADCeVAAwnlgAMJ5gADCeaAAwnmwAMJ5wADCeeAAwnnwAMJ+gADCgMAAwoMwAMKFcADChaAAwoXAAMKF4ADChgAAwoYgAMKGQADChlAAwoaAAMKIEADCieAAwooAAMKKIADCikAAwopgAMKKgADCiqAAw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VWwAMVVwADFVeAAxVXwAMVagADFXMAAxV8wAMVhcADFYaAAxWHAAMVh4ADFYgAAxWIgAMViQADFYlAAxWKAAMVkEADFZeAAxWYAAMVmIADFZkAAxWZgAMVmgADFZqAAxWbAAMVokADFaMAAxWjwAMVpIADFaVAAxWmAAMVpsADFaeAAxWoAAMVxsADFcdAAxXHwAMVyEADFckAAxXJQAMVyYADFcnAAxXKAAMVyoADFcsAAxXLQAMVy4ADFcwAAxXMQAMV6wADFeuAAxXsAAMV7IADFe1AAxXtgAMV7cADFe4AAxXuQAMV7sADFe9AAxXvgAMV78ADFfBAAxXwgAMWD0ADFg/AAxYQQAMWEMADFhGAAxYRwAMWEgADFhJAAxYSgAMWEwADFhOAAxYTwAMWFAADFhSAAxYUwAMWM4ADFjQAAxY0gAMWNQADFjXAAxY2AAMWNkADFjaAAxY2wAMWN0ADFjfAAxY4AAMWOEADFjjAAxY5AAMWV8ADFlhAAxZYwAMWWUADFloAAxZaQAMWWoADFlrAAxZbAAMWW4ADFlwAAxZcQAMWXIADFl0AAxZdQAMWfAADFnyAAxZ9QAMWfcADFn6AAxZ+wAMWfwADFn9AAxZ/gAMWgAADFoCAAxaAwAMWgQADFoGAAxaBwAMWiYADFqhAAxaowAMWqUADFqnAAxaqgAMWqsADFqsAAxarQAMWq4ADFqwAAxasgAMWrMADFq0AAxatgAMWrcADFtKAAxbbQAMW40ADFutAAxbrwAMW7EADFuzAAxbtQAMW7gADFu5AAxbugAMW70ADFu+AAxbwAAMW8EADFvEAAxbxwAMW8gADFvJAAxbzAAMW80ADFvSAAxb6wAMW/QADFv2AAxb+QAMXAIADFwFAAxcCAAMXAoADFxTAAxcdwAMXJ4ADFzCAAxcxQAMXMcADFzJAAxcywAMXM0ADFzPAAxc0AAMXNMADFzsAAxdDQAMXQ8ADF0RAAxdEwAMXRUADF0XAAxdGQAMXRsADF0dAAxdPgAMXUEADF1EAAxdRwAMXUoADF1NAAxdUAAMXVMADF1WAAxdWAAMXdMADF3VAAxd1wAMXdkADF3cAAxd3QAMXd4ADF3fAAxd4AAMXeIADF3kAAxd5QAMXeYADF3oAAxd6QAMXmQADF5mAAxeaAAMXmoADF5tAAxebgAMXm8ADF5wAAxecQAMXnMADF51AAxedgAMXncADF55AAxeegAMXvUADF73AAxe+gAMXvwADF7/AAxfAAAMXwEADF8CAAxfAwAMXwUADF8HAAxfCAAMXwkADF8LAAxfDAAMXyUADF8mAAxfJwAMXykADF+kAAxfpgAMX6gADF+qAAxfrQAMX64ADF+vAAxfsAAMX7EADF+zAAxftQAMX7YADF+3AAxfuQAMX7oADGA1AAxgNwAMYDkADGA7AAxgPgAMYD8ADGBAAAxgQQAMYEIADGBEAAxgRgAMYEcADGBIAAxgSgAMYEsADGDGAAxgyAAMYMoADGDMAAxgzwAMYNAADGDRAAxg0gAMYNMADGDVAAxg1wAMYNgADGDZAAxg2wAMYNwADGFXAAxhWQAMYVsADGFdAAxhYAAMYWEADGFiAAxhYwAMYWQADGFmAAxhaAAMYWkADGFqAAxhbAAMYW0ADGHoAAxh6gAMYewADGHuAAxh8QAMYfIADGHzAAxh9AAMYfUADGH3AAxh+QAMYfoADGH7AAxh/QAMYf4ADGJHAAxiawAMYpIADGK2AAxiuQAMYrwADGK+AAxiwAAMYsIADGLEAAxixQAMYsgADGLhAAxi/gAMYwEADGMEAAxjBwAMYwoADGMNAAxjEAAMYxMADGMwAAxjMwAMYzYADGM5AAxjPAAMYz8ADGNCAAxjRQAMY0cADGPCAAxjxAAMY8cADGPJAAxjzAAMY80ADGPOAAxjzwAMY9AADGPSAAxj1QAMY9YADGPXAAxj2QAMY9oADGRVAAxkVwAMZFoADGRcAAxkXwAMZGAADGRhAAxkYgAMZGMADGRlAAxkaAAMZGkADGRqAAxkbAAMZG0ADGToAAxk6gAMZO0ADGTvAAxk8gAMZPMADGT0AAxk9QAMZPYADGT4AAxk+wAMZPwADGT9AAxk/wAMZQAADGV7AAxlfQAMZYAADGWCAAxlhQAMZYYADGWHAAxliAAMZYkADGWLAAxljgAMZY8ADGWQAAxlkgAMZZMADGYOAAxmEAAMZhIADGYUAAxmFwAMZhgADGYZAAxmGgAMZhsADGYdAAxmIAAMZiEADGYiAAxmJAAMZiUADGagAAxmogAMZqQADGamAAxmqQAMZqoADGarAAxmrAAMZq0ADGavAAxmsgAMZrMADGa0AAxmtgAMZrcADGcyAAxnNAAMZzcADGc5AAxnPAAMZz0ADGc+AAxnPwAMZ0AADGdCAAxnRQAMZ0YADGdHAAxnSQAMZ0oADGdbAAxnXAAMZ14ADGfZAAxn2wAMZ90ADGffAAxn4gAMZ+MADGfkAAxn5QAMZ+YADGfoAAxn6wAMZ+wADGftAAxn7wAMZ/AADGhrAAxobQAMaG8ADGhxAAxodAAMaHUADGh2AAxodwAMaHgADGh6AAxofQAMaH4ADGh/AAxogQAMaIIADGj9AAxo/wAMaQIADGkEAAxpBwAMaQgADGkJAAxpCgAMaQsADGkNAAxpEAAMaREADGkSAAxpFAAMaRUADGmoAAxpywAMaesADGoLAAxqDQAMag8ADGoRAAxqEwAMahYADGoXAAxqGAAMahsADGocAAxqHgAMah8ADGoiAAxqJQAMaiYADGonAAxqKgAMaisADGo0AAxqTQAMalYADGpYAAxqWwAMamQADGpnAAxqagAMamwADGq1AAxq2QAMawAADGskAAxrJwAMaykADGsrAAxrLQAMay8ADGsxAAxrMgAMazUADGtOAAxrbwAMa3EADGtzAAxrdQAMa3cADGt5AAxrewAMa30ADGt/AAxroAAMa6MADGumAAxrqQAMa6wADGuvAAxrsgAMa7UADGu4AAxrugAMbDUADGw3AAxsOQAMbDsADGw+AAxsPwAMbEAADGxBAAxsQgAMbEQADGxGAAxsRwAMbEgADGxKAAxsSwAMbMYADGzIAAxsygAMbMwADGzPAAxs0AAMbNEADGzSAAxs0wAMbNUADGzXAAxs2AAMbNkADGzbAAxs3AAMbVcADG1ZAAxtXAAMbV4ADG1hAAxtYgAMbWMADG1kAAxtZQAMbWcADG1pAAxtagAMbWsADG1tAAxtbgAMbYcADG2IAAxtiQAMbYsADG4GAAxuCAAMbgoADG4MAAxuDwAMbhAADG4RAAxuEgAMbhMADG4VAAxuFwAMbhgADG4ZAAxuGwAMbhwADG6XAAxumQAMbpsADG6dAAxuoAAMbqEADG6iAAxuowAMbqQADG6mAAxuqAAMbqkADG6qAAxurAAMbq0ADG8oAAxvKgAMbywADG8uAAxvMQAMbzIADG8zAAxvNAAMbzUADG83AAxvOQAMbzoADG87AAxvPQAMbz4ADG+5AAxvuwAMb70ADG+/AAxvwgAMb8MADG/EAAxvxQAMb8YADG/IAAxvygAMb8sADG/MAAxvzgAMb88ADHBKAAxwTAAMcE4ADHBQAAxwUwAMcFQADHBVAAxwVgAMcFcADHBZAAxwWwAMcFwADHBdAAxwXwAMcGAADHCpAAxwzQAMcPQADHEYAAxxGwAMcR4ADHEgAAxxIgAMcSQADHEmAAxxJwAMcSoADHFDAAxxYAAMcWMADHFmAAxxaQAMcWwADHFvAAxxcgAMcXUADHGSAAxxlQAMcZgADHGbAAxxngAMcaEADHGkAAxxpwAMcakADHIkAAxyJgAMcikADHIrAAxyLgAMci8ADHIwAAxyMQAMcjIADHI0AAxyNwAMcjgADHI5AAxyOwAMcjwADHK3AAxyuQAMcrwADHK+AAxywQAMcsIADHLDAAxyxAAMcsUADHLHAAxyygAMcssADHLMAAxyzgAMcs8ADHNKAAxzTAAMc08ADHNRAAxzVAAMc1UADHNWAAxzVwAMc1gADHNaAAxzXQAMc14ADHNfAAxzYQAMc2IADHPdAAxz3wAMc+IADHPkAAxz5wAMc+gADHPpAAxz6gAMc+sADHPtAAxz8AAMc/EADHPyAAxz9AAMc/UADHR4AAx0nAAMdMAADHTjAAx1CgAMdSoADHVRAAx1eAAMdZgADHW8AAx14AAMdeIADHXlAAx15wAMdekADHXrAAx17gAMdfEADHXzAAx19QAMdfgADHX6AAx1/AAMdf8ADHYCAAx2AwAMdggADHYhAAx2JgAMdigADHYtAAx2MAAMdjIADHZ7AAx2nwAMdsYADHbqAAx27QAMdu8ADHbxAAx28wAMdvUADHb3AAx2+AAMdvsADHcUAAx3OQAMdzsADHc9AAx3PwAMd0EADHdDAAx3RQAMd0cADHdJAAx3SwAMd3AADHdzAAx3dgAMd3kADHd8AAx3fwAMd4IADHeFAAx3iAAMd4sADHeNAAx4CAAMeAoADHgNAAx4DwAMeBIADHgTAAx4FAAMeBUADHgWAAx4GAAMeBoADHgbAAx4HAAMeB4ADHgfAAx4MAAMeDEADHgzAAx4rgAMeLAADHizAAx4tQAMeLgADHi5AAx4ugAMeLsADHi8AAx4vgAMeMAADHjBAAx4wgAMeMQADHjFAAx49AAMeW8ADHlxAAx5dAAMeXYADHl5AAx5egAMeXsADHl8AAx5fQAMeX8ADHmBAAx5ggAMeYMADHmFAAx5hgAMeZcADHmYAAx5mgAMehUADHoXAAx6GQAMehsADHoeAAx6HwAMeiAADHohAAx6IgAMeiQADHomAAx6JwAMeigADHoqAAx6KwAMeqYADHqoAAx6qwAMeq0ADHqwAAx6sQAMerIADHqzAAx6tAAMerYADHq4AAx6uQAMeroADHq8AAx6vQAMes4ADHrPAAx60QAMe0wADHtOAAx7UAAMe1IADHtVAAx7VgAMe1cADHtYAAx7WQAMe1sADHtdAAx7XgAMe18ADHthAAx7YgAMe90ADHvfAAx74gAMe+QADHvnAAx76AAMe+kADHvqAAx76wAMe+0ADHvvAAx78AAMe/EADHvzAAx79AAMfA0ADHwOAAx8DwAMfBEADHyMAAx8jgAMfJAADHySAAx8lQAMfJYADHyXAAx8mAAMfJkADHybAAx8nQAMfJ4ADHyfAAx8oQAMfKIADH0dAAx9HwAMfSIADH0kAAx9JwAMfSgADH0pAAx9KgAMfSsADH0tAAx9LwAMfTAADH0xAAx9MwAMfTQADH1pAAx9ggAMfZMADH2WAAx9mQAMfZwADH2fAAx9sAAMfbMADH22AAx9uQAMfbwADH2+AAx90wAMfesADH4BAAx+FAAMfqcADH7KAAx+6gAMfwoADH8MAAx/DgAMfxAADH8SAAx/FQAMfxYADH8XAAx/GgAMfxsADH8dAAx/HgAMfyAADH8jAAx/JAAMfyUADH8oAAx/KQAMfy4ADH9HAAx/UAAMf1IADH9UAAx/XQAMf2AADH9jAAx/ZQAMf64ADH/SAAx/+QAMgB0ADIAgAAyAIgAMgCQADIAmAAyAKAAMgCoADIArAAyALgAMgEcADIBoAAyAagAMgGwADIBuAAyAcAAMgHIADIB0AAyAdgAMgHgADICZAAyAnAAMgJ8ADICiAAyApQAMgKgADICrAAyArgAMgLEADICzAAyBLgAMgTAADIEyAAyBNAAMgTcADIE4AAyBOQAMgToADIE7AAyBPQAMgT8ADIFAAAyBQQAMgUMADIFEAAyBvwAMgcEADIHDAAyBxQAMgcgADIHJAAyBygAMgcsADIHMAAyBzgAMgdAADIHRAAyB0gAMgdQADIHVAAyCUAAMglIADIJVAAyCVwAMgloADIJbAAyCXAAMgl0ADIJeAAyCYAAMgmIADIJjAAyCZAAMgmYADIJnAAyCgAAMgoEADIKCAAyChAAMgv8ADIMBAAyDAwAMgwUADIMIAAyDCQAMgwoADIMLAAyDDAAMgw4ADIMQAAyDEQAMgxIADIMUAAyDFQAMg5AADIOSAAyDlAAMg5YADIOZAAyDmgAMg5sADIOcAAyDnQAMg58ADIOhAAyDogAMg6MADIOlAAyDpgAMhCEADIQjAAyEJQAMhCcADIQqAAyEKwAMhCwADIQtAAyELgAMhDAADIQyAAyEMwAMhDQADIQ2AAyENwAMhLIADIS0AAyEtgAMhLgADIS7AAyEvAAMhL0ADIS+AAyEvwAMhMEADITDAAyExAAMhMUADITHAAyEyAAMhUMADIVFAAyFRwAMhUkADIVMAAyFTQAMhU4ADIVPAAyFUAAMhVIADIVUAAyFVQAMhVYADIVYAAyFWQAMhaIADIXGAAyF7QAMhhEADIYUAAyGFgAMhhgADIYaAAyGHAAMhh4ADIYfAAyGIgAMhjsADIZYAAyGWgAMhlwADIZeAAyGYAAMhmIADIZkAAyGZgAMhoMADIaGAAyGiQAMhowADIaPAAyGkgAMhpUADIaYAAyGmgAMhxUADIcXAAyHGQAMhxsADIceAAyHHwAMhyAADIchAAyHIgAMhyQADIcmAAyHJwAMhygADIcqAAyHKwAMh6YADIeoAAyHqgAMh6wADIevAAyHsAAMh7EADIeyAAyHswAMh7UADIe3AAyHuAAMh7kADIe7AAyHvAAMiDcADIg5AAyIOwAMiD0ADIhAAAyIQQAMiEIADIhDAAyIRAAMiEYADIhIAAyISQAMiEoADIhMAAyITQAMiMgADIjKAAyIzAAMiM4ADIjRAAyI0gAMiNMADIjUAAyI1QAMiNcADIjZAAyI2gAMiNsADIjdAAyI3gAMiVkADIlbAAyJXQAMiV8ADIliAAyJYwAMiWQADIllAAyJZgAMiWgADIlqAAyJawAMiWwADIluAAyJbwAMieoADInsAAyJ7wAMifEADIn0AAyJ9QAMifYADIn3AAyJ+AAMifoADIn8AAyJ/QAMif4ADIoAAAyKAQAMihAADIqLAAyKjQAMio8ADIqRAAyKlAAMipUADIqWAAyKlwAMipgADIqaAAyKnAAMip0ADIqeAAyKoAAMiqEADIs0AAyLVwAMi3cADIuXAAyLmQAMi5sADIudAAyLnwAMi6IADIujAAyLpAAMi6cADIuoAAyLqgAMi6sADIutAAyLsAAMi7EADIuyAAyLtQAMi7YADIu7AAyL1AAMi90ADIvfAAyL4QAMi+oADIvtAAyL8AAMi/IADIw7AAyMXwAMjIYADIyqAAyMrQAMjK8ADIyxAAyMswAMjLUADIy3AAyMuAAMjLsADIzUAAyM9QAMjPcADIz5AAyM+wAMjP0ADIz/AAyNAQAMjQMADI0FAAyNJgAMjSkADI0sAAyNLwAMjTIADI01AAyNOAAMjTsADI0+AAyNQAAMjbsADI29AAyNvwAMjcEADI3EAAyNxQAMjcYADI3HAAyNyAAMjcoADI3MAAyNzQAMjc4ADI3QAAyN0QAMjkwADI5OAAyOUAAMjlIADI5VAAyOVgAMjlcADI5YAAyOWQAMjlsADI5dAAyOXgAMjl8ADI5hAAyOYgAMjt0ADI7fAAyO4gAMjuQADI7nAAyO6AAMjukADI7qAAyO6wAMju0ADI7vAAyO8AAMjvEADI7zAAyO9AAMjw0ADI8OAAyPDwAMjxEADI+MAAyPjgAMj5AADI+SAAyPlQAMj5YADI+XAAyPmAAMj5kADI+bAAyPnQAMj54ADI+fAAyPoQAMj6IADJAdAAyQHwAMkCEADJAjAAyQJgAMkCcADJAoAAyQKQAMkCoADJAsAAyQLgAMkC8ADJAwAAyQMgAMkDMADJCuAAyQsAAMkLIADJC0AAyQtwAMkLgADJC5AAyQugAMkLsADJC9AAyQvwAMkMAADJDBAAyQwwAMkMQADJE/AAyRQQAMkUMADJFFAAyRSAAMkUkADJFKAAyRSwAMkUwADJFOAAyRUAAMkVEADJFSAAyRVAAMkVUADJHQAAyR0gAMkdQADJHWAAyR2QAMkdoADJHbAAyR3AAMkd0ADJHfAAyR4QAMkeIADJHjAAyR5QAMkeYADJIvAAySUwAMknoADJKeAAySoQAMkqMADJKlAAySpwAMkqkADJKrAAySrAAMkq8ADJLIAAyS5QAMkucADJLpAAyS6wAMku0ADJLvAAyS8QAMkvMADJMQAAyTEwAMkxYADJMZAAyTHAAMkx8ADJMiAAyTJQAMkycADJOiAAyTpAAMk6YADJOoAAyTqwAMk6wADJOtAAyTrgAMk68ADJOxAAyTswAMk7QADJO1AAyTtwAMk7gADJQzAAyUNQAMlDcADJQ5AAyUPAAMlD0ADJQ+AAyUPwAMlEAADJRCAAyURAAMlEUADJRGAAyUSAAMlEkADJTEAAyUxgAMlMgADJTKAAyUzQAMlM4ADJTPAAyU0AAMlNEADJTTAAyU1QAMlNYADJTXAAyU2QAMlNoADJVVAAyVVwAMlVkADJVbAAyVXgAMlV8ADJVgAAyVYQAMlWIADJVkAAyVZgAMlWcADJVoAAyVagAMlWsADJXmAAyV6AAMleoADJXsAAyV7wAMlfAADJXxAAyV8gAMlfMADJX1AAyV9wAMlfgADJX5AAyV+wAMlfwADJZ3AAyWeQAMlnwADJZ+AAyWgQAMloIADJaDAAyWhAAMloUADJaHAAyWiQAMlooADJaLAAyWjQAMlo4ADJatAAyXKAAMlyoADJcsAAyXLgAMlzEADJcyAAyXMwAMlzQADJc1AAyXNwAMlzkADJc6AAyXOwAMlz0ADJc+AAyX0QAMl/QADJgUAAyYNAAMmDYADJg4AAyYOgAMmDwADJg/AAyYQAAMmEEADJhEAAyYRQAMmEcADJhIAAyYSgAMmE0ADJhOAAyYTwAMmFIADJhTAAyYWAAMmHEADJh6AAyYfAAMmH4ADJiHAAyYigAMmI0ADJiPAAyY2AAMmPwADJkjAAyZRwAMmUoADJlMAAyZTgAMmVAADJlSAAyZVAAMmVUADJlYAAyZcQAMmZIADJmUAAyZlgAMmZgADJmaAAyZnAAMmZ4ADJmgAAyZogAMmcMADJnGAAyZyQAMmcwADJnPAAyZ0gAMmdUADJnYAAyZ2wAMmd0ADJpYAAyaWgAMmlwADJpeAAyaYQAMmmIADJpjAAyaZAAMmmUADJpnAAyaaQAMmmoADJprAAyabQAMmm4ADJrpAAya6wAMmu0ADJrvAAya8gAMmvMADJr0AAya9QAMmvYADJr4AAya+gAMmvsADJr8AAya/gAMmv8ADJt6AAybfAAMm38ADJuBAAybhAAMm4UADJuGAAybhwAMm4gADJuKAAybjAAMm40ADJuOAAybkAAMm5EADJuqAAybqwAMm6wADJuuAAycKQAMnCsADJwtAAycLwAMnDIADJwzAAycNAAMnDUADJw2AAycOAAMnDoADJw7AAycPAAMnD4ADJw/AAycugAMnLwADJy+AAycwAAMnMMADJzEAAycxQAMnMYADJzHAAycyQAMnMsADJzMAAyczQAMnM8ADJzQAAydSwAMnU0ADJ1PAAydUQAMnVQADJ1VAAydVgAMnVcADJ1YAAydWgAMnVwADJ1dAAydXgAMnWAADJ1hAAyd3AAMnd4ADJ3gAAyd4gAMneUADJ3mAAyd5wAMnegADJ3pAAyd6wAMne0ADJ3uAAyd7wAMnfEADJ3yAAyebQAMnm8ADJ5xAAyecwAMnnYADJ53AAyeeAAMnnkADJ56AAyefAAMnn4ADJ5/AAyegAAMnoIADJ6DAAyezAAMnvAADJ8XAAyfOwAMnz4ADJ9AAAyfQgAMn0QADJ9GAAyfSAAMn0kADJ9MAAyfZQAMn4IADJ+EAAyfhgAMn4gADJ+KAAyfjAAMn44ADJ+QAAyfrQAMn7AADJ+zAAyftgAMn7kADJ+8AAyfvwAMn8IADJ/EAAygPwAMoEEADKBDAAygRQAMoEgADKBJAAygSgAMoEsADKBMAAygTgAMoFAADKBRAAygUgAMoFQADKBVAAyg0AAMoNIADKDUAAyg1gAMoNkADKDaAAyg2wAMoNwADKDdAAyg3wAMoOEADKDiAAyg4wAMoOUADKDmAAyhYQAMoWMADKFlAAyhZwAMoWoADKFrAAyhbAAMoW0ADKFuAAyhcAAMoXIADKFzAAyhdAAMoXYADKF3AAyh8gAMofQADKH2AAyh+AAMofsADKH8AAyh/QAMof4ADKH/AAyiAQAMogMADKIEAAyiBQAMogcADKIIAAyigwAMooUADKKHAAyiiQAMoowADKKNAAyijgAMoo8ADKKQAAyikgAMopQADKKVAAyilgAMopgADKKZAAyjFAAMoxYADKMZAAyjGwAMox4ADKMfAAyjIAAMoyEADKMiAAyjJAAMoyYADKMnAAyjKAAMoyoADKMrAAyjSgAMo8UADKPHAAyjyQAMo8sADKPOAAyjzwAMo9AADKPRAAyj0gAMo9QADKPWAAyj1wAMo9gADKPaAAyj2wAMpG4ADKSRAAyksQAMpNEADKTTAAyk1QAMpNcADKTZAAyk3AAMpN0ADKTeAAyk4QAMpOIADKTkAAyk5QAMpOgADKTrAAyk7AAMpO0ADKTwAAyk8QAMpPoADKUTAAylHAAMpR4ADKUhAAylKgAMpS0ADKUwAAylMgAMpXsADKWfAAylxgAMpeoADKXtAAyl7wAMpfEADKXzAAyl9QAMpfcADKX4AAyl+wAMphQADKY1AAymNwAMpjkADKY7AAymPQAMpj8ADKZBAAymQwAMpkUADKZmAAymaQAMpmwADKZvAAymcgAMpnUADKZ4AAymewAMpn4ADKaAAAym+wAMpv0ADKb/AAynAQAMpwQADKcFAAynBgAMpwcADKcIAAynCgAMpwwADKcNAAynDgAMpxAADKcRAAynjAAMp44ADKeQAAynkgAMp5UADKeWAAynlwAMp5gADKeZAAynmwAMp50ADKeeAAynnwAMp6EADKeiAAyoHQAMqB8ADKgiAAyoJAAMqCcADKgoAAyoKQAMqCoADKgrAAyoLQAMqC8ADKgwAAyoMQAMqDMADKg0AAyoTQAMqE4ADKhPAAyoUQAMqMwADKjOAAyo0AAMqNIADKjVAAyo1gAMqNcADKjYAAyo2QAMqNsADKjdAAyo3gAMqN8ADKjhAAyo4gAMqV0ADKlfAAypYQAMqWMADKlmAAypZwAMqWgADKlpAAypagAMqWwADKluAAypbwAMqXAADKlyAAypcwAMqe4ADKnwAAyp8gAMqfQADKn3AAyp+AAMqfkADKn6AAyp+wAMqf0ADKn/AAyqAAAMqgEADKoDAAyqBAAMqn8ADKqBAAyqgwAMqoUADKqIAAyqiQAMqooADKqLAAyqjAAMqo4ADKqQAAyqkQAMqpIADKqUAAyqlQAMqxAADKsSAAyrFAAMqxYADKsZAAyrGgAMqxsADKscAAyrHQAMqx8ADKshAAyrIgAMqyMADKslAAyrJgAMq28ADKuTAAyrugAMq94ADKvhAAyr5AAMq+YADKvoAAyr6gAMq+wADKvtAAyr8AAMrAkADKwmAAysKQAMrCwADKwvAAysMgAMrDUADKw4AAysOwAMrFgADKxbAAysXgAMrGEADKxkAAysZwAMrGoADKxtAAysbwAMrOoADKzsAAys7wAMrPEADKz0AAys9QAMrPYADKz3AAys+AAMrPoADKz9AAys/gAMrP8ADK0BAAytAgAMrX0ADK1/AAytggAMrYQADK2HAAytiAAMrYkADK2KAAytiwAMrY0ADK2QAAytkQAMrZIADK2UAAytlQAMrhAADK4SAAyuFQAMrhcADK4aAAyuGwAMrhwADK4dAAyuHgAMriAADK4jAAyuJAAMriUADK4nAAyuKAAMrqMADK6lAAyuqAAMrqoADK6tAAyurgAMrq8ADK6wAAyusQAMrrMADK62AAyutwAMrrgADK66AAyuuwAMrzYADK84AAyvOgAMrzwADK8/AAyvQAAMr0EADK9CAAyvQwAMr0UADK9IAAyvSQAMr0oADK9MAAyvTQAMr8gADK/KAAyvzAAMr84ADK/RAAyv0gAMr9MADK/UAAyv1QAMr9cADK/aAAyv2wAMr9wADK/eAAyv3wAMsFoADLBcAAywXwAMsGEADLBkAAywZQAMsGYADLBnAAywaAAMsGoADLBtAAywbgAMsG8ADLBxAAywcgAMsIMADLCEAAywhgAMsQEADLEDAAyxBQAMsQcADLEKAAyxCwAMsQwADLENAAyxDgAMsRAADLETAAyxFAAMsRUADLEXAAyxGAAMsZMADLGVAAyxlwAMsZkADLGcAAyxnQAMsZ4ADLGfAAyxoAAMsaIADLGlAAyxpgAMsacADLGpAAyxqgAMsiUADLInAAyyKgAMsiwADLIvAAyyMAAMsjEADLIyAAyyMwAMsjUADLI4AAyyOQAMsjoADLI8AAyyPQAMstAADLLzAAyzEwAMszMADLM1AAyzNwAMszkADLM7AAyzPgAMsz8ADLNAAAyzQwAMs0QADLNGAAyzRwAMs0kADLNMAAyzTQAMs04ADLNRAAyzUgAMs1sADLN0AAyzfQAMs38ADLOBAAyzigAMs40ADLOQAAyzkgAMs9sADLP/AAy0JgAMtEoADLRNAAy0TwAMtFEADLRTAAy0VQAMtFcADLRYAAy0WwAMtHQADLSVAAy0lwAMtJkADLSbAAy0nQAMtJ8ADLShAAy0owAMtKUADLTGAAy0yQAMtMwADLTPAAy00gAMtNUADLTYAAy02wAMtN4ADLTgAAy1WwAMtV0ADLVfAAy1YQAMtWQADLVlAAy1ZgAMtWcADLVoAAy1agAMtWwADLVtAAy1bgAMtXAADLVxAAy17AAMte4ADLXwAAy18gAMtfUADLX2AAy19wAMtfgADLX5AAy1+wAMtf0ADLX+AAy1/wAMtgEADLYCAAy2fQAMtn8ADLaCAAy2hAAMtocADLaIAAy2iQAMtooADLaLAAy2jQAMto8ADLaQAAy2kQAMtpMADLaUAAy2rQAMtq4ADLavAAy2sQAMtywADLcuAAy3MAAMtzIADLc1AAy3NgAMtzcADLc4AAy3OQAMtzsADLc9AAy3PgAMtz8ADLdBAAy3QgAMt70ADLe/AAy3wQAMt8MADLfGAAy3xwAMt8gADLfJAAy3ygAMt8wADLfOAAy3zwAMt9AADLfSAAy30wAMuE4ADLhQAAy4UgAMuFQADLhXAAy4WAAMuFkADLhaAAy4WwAMuF0ADLhfAAy4YAAMuGEADLhjAAy4ZAAMuN8ADLjhAAy44wAMuOUADLjoAAy46QAMuOoADLjrAAy47AAMuO4ADLjwAAy48QAMuPIADLj0AAy49QAMuXAADLlyAAy5dAAMuXYADLl5AAy5egAMuXsADLl8AAy5fQAMuX8ADLmBAAy5ggAMuYMADLmFAAy5hgAMuc8ADLnzAAy6GgAMuj4ADLpBAAy6QwAMukUADLpHAAy6SQAMuksADLpMAAy6TwAMumgADLqFAAy6hwAMuokADLqLAAy6jQAMuo8ADLqRAAy6kwAMurAADLqzAAy6tgAMurkADLq8AAy6vwAMusIADLrFAAy6xwAMu0IADLtEAAy7RgAMu0gADLtLAAy7TAAMu00ADLtOAAy7TwAMu1EADLtTAAy7VAAMu1UADLtXAAy7WAAMu9MADLvVAAy71wAMu9kADLvcAAy73QAMu94ADLvfAAy74AAMu+IADLvkAAy75QAMu+YADLvoAAy76QAMvGQADLxmAAy8aAAMvGoADLxtAAy8bgAMvG8ADLxwAAy8cQAMvHMADLx1AAy8dgAMvHcADLx5AAy8egAMvPUADLz3AAy8+QAMvPsADLz+AAy8/wAMvQAADL0BAAy9AgAMvQQADL0GAAy9BwAMvQgADL0KAAy9CwAMvYYADL2IAAy9igAMvYwADL2PAAy9kAAMvZEADL2SAAy9kwAMvZUADL2XAAy9mAAMvZkADL2bAAy9nAAMvhcADL4ZAAy+GwAMvh0ADL4gAAy+IQAMviIADL4jAAy+JAAMviYADL4oAAy+KQAMvioADL4sAAy+LQAMvqgADL6qAAy+rAAMvq4ADL6xAAy+sgAMvrMADL60AAy+tQAMvrcADL65AAy+ugAMvrsADL69AAy+vgAMv1EADL90AAy/lAAMv7QADL+2AAy/uAAMv7oADL+8AAy/vwAMv8AADL/BAAy/xAAMv8UADL/HAAy/yAAMv8sADL/OAAy/zwAMv9AADL/TAAy/1AAMv9kADL/yAAy/+wAMv/0ADMAAAAzACQAMwAwADMAPAAzAEQAMwFoADMB+AAzApQAMwMkADMDMAAzAzgAMwNAADMDSAAzA1AAMwNYADMDXAAzA2gAMwPMADMEUAAzBFgAMwRgADMEaAAzBHAAMwR4ADMEgAAzBIgAMwSQADMFFAAzBSAAMwUsADMFOAAzBUQAMwVQADMFXAAzBWgAMwV0ADMFfAAzB2gAMwdwADMHeAAzB4AAMweMADMHkAAzB5QAMweYADMHnAAzB6QAMwesADMHsAAzB7QAMwe8ADMHwAAzCawAMwm0ADMJvAAzCcQAMwnQADMJ1AAzCdgAMwncADMJ4AAzCegAMwnwADMJ9AAzCfgAMwoAADMKBAAzC/AAMwv4ADMMBAAzDAwAMwwYADMMHAAzDCAAMwwkADMMKAAzDDAAMww4ADMMPAAzDEAAMwxIADMMTAAzDLAAMwy0ADMMuAAzDMAAMw6sADMOtAAzDrwAMw7EADMO0AAzDtQAMw7YADMO3AAzDuAAMw7oADMO8AAzDvQAMw74ADMPAAAzDwQAMxDwADMQ+AAzEQAAMxEIADMRFAAzERgAMxEcADMRIAAzESQAMxEsADMRNAAzETgAMxE8ADMRRAAzEUgAMxM0ADMTPAAzE0QAMxNMADMTWAAzE1wAMxNgADMTZAAzE2gAMxNwADMTeAAzE3wAMxOAADMTiAAzE4wAMxV4ADMVgAAzFYgAMxWQADMVnAAzFaAAMxWkADMVqAAzFawAMxW0ADMVvAAzFcAAMxXEADMVzAAzFdAAMxe8ADMXxAAzF8wAMxfUADMX4AAzF+QAMxfoADMX7AAzF/AAMxf4ADMYAAAzGAQAMxgIADMYEAAzGBQAMxk4ADMZyAAzGmQAMxr0ADMbAAAzGwwAMxsUADMbHAAzGyQAMxssADMbMAAzGzwAMxugADMcFAAzHCAAMxwsADMcOAAzHEQAMxxQADMcXAAzHGgAMxzcADMc6AAzHPQAMx0AADMdDAAzHRgAMx0kADMdMAAzHTgAMx8kADMfLAAzHzgAMx9AADMfTAAzH1AAMx9UADMfWAAzH1wAMx9kADMfcAAzH3QAMx94ADMfgAAzH4QAMyFwADMheAAzIYQAMyGMADMhmAAzIZwAMyGgADMhpAAzIagAMyGwADMhvAAzIcAAMyHEADMhzAAzIdAAMyO8ADMjxAAzI9AAMyPYADMj5AAzI+gAMyPsADMj8AAzI/QAMyP8ADMkCAAzJAwAMyQQADMkGAAzJBwAMyYIADMmEAAzJhwAMyYkADMmMAAzJjQAMyY4ADMmPAAzJkAAMyZIADMmVAAzJlgAMyZcADMmZAAzJmgAMyh0ADMpBAAzKZQAMyogADMqvAAzKzwAMyvYADMsdAAzLPQAMy2EADMuFAAzLhwAMy4oADMuMAAzLjgAMy5AADMuTAAzLlgAMy5gADMuaAAzLnQAMy58ADMuhAAzLpAAMy6cADMuoAAzLrQAMy8YADMvLAAzLzQAMy9IADMvVAAzL1wAMzCAADMxEAAzMawAMzI8ADMySAAzMlAAMzJYADMyYAAzMmgAMzJwADMydAAzMoAAMzLkADMzeAAzM4AAMzOIADMzkAAzM5gAMzOgADMzqAAzM7AAMzO4ADMzwAAzNFQAMzRgADM0bAAzNHgAMzSEADM0kAAzNJwAMzSoADM0tAAzNMAAMzTIADM2tAAzNrwAMzbIADM20AAzNtwAMzbgADM25AAzNugAMzbsADM29AAzNvwAMzcAADM3BAAzNwwAMzcQADM3VAAzN1gAMzdgADM5TAAzOVQAMzlcADM5ZAAzOXAAMzl0ADM5eAAzOXwAMzmAADM5iAAzOZAAMzmUADM5mAAzOaAAMzmkADM7kAAzO5gAMzukADM7rAAzO7gAMzu8ADM7wAAzO8QAMzvIADM70AAzO9gAMzvcADM74AAzO+gAMzvsADM8MAAzPDQAMzw8ADM+KAAzPjAAMz44ADM+QAAzPkwAMz5QADM+VAAzPlgAMz5cADM+ZAAzPmwAMz5wADM+dAAzPnwAMz6AADNAbAAzQHQAM0CAADNAiAAzQJQAM0CYADNAnAAzQKAAM0CkADNArAAzQLQAM0C4ADNAvAAzQMQAM0DIADNBDAAzQRAAM0EYADNDBAAzQwwAM0MUADNDHAAzQygAM0MsADNDMAAzQzQAM0M4ADNDQAAzQ0gAM0NMADNDUAAzQ1gAM0NcADNFSAAzRVAAM0VcADNFZAAzRXAAM0V0ADNFeAAzRXwAM0WAADNFiAAzRZAAM0WUADNFmAAzRaAAM0WkADNGCAAzRgwAM0YQADNGGAAzSAQAM0gMADNIFAAzSBwAM0goADNILAAzSDAAM0g0ADNIOAAzSEAAM0hIADNITAAzSFAAM0hYADNIXAAzSkgAM0pQADNKXAAzSmQAM0pwADNKdAAzSngAM0p8ADNKgAAzSogAM0qQADNKlAAzSpgAM0qgADNKpAAzSyAAM0uEADNLyAAzS9QAM0vgADNL7AAzS/gAM0w8ADNMSAAzTFQAM0xgADNMbAAzTHQAM0zIADNNMAAzTZwAM04AADNQTAAzUNgAM1FYADNR2AAzUeAAM1HoADNR8AAzUfgAM1IEADNSCAAzUgwAM1IYADNSHAAzUiQAM1IoADNSMAAzUjwAM1JAADNSRAAzUlAAM1JUADNSeAAzUtwAM1MAADNTCAAzUxAAM1M0ADNTQAAzU0wAM1NUADNUeAAzVQgAM1WkADNWNAAzVkAAM1ZIADNWUAAzVlgAM1ZgADNWaAAzVmwAM1Z4ADNW3AAzV2AAM1doADNXcAAzV3gAM1eAADNXiAAzV5AAM1eYADNXoAAzWCQAM1gwADNYPAAzWEgAM1hUADNYYAAzWGwAM1h4ADNYhAAzWIwAM1p4ADNagAAzWogAM1qQADNanAAzWqAAM1qkADNaqAAzWqwAM1q0ADNavAAzWsAAM1rEADNazAAzWtAAM1y8ADNcxAAzXMwAM1zUADNc4AAzXOQAM1zoADNc7AAzXPAAM1z4ADNdAAAzXQQAM10IADNdEAAzXRQAM18AADNfCAAzXxQAM18cADNfKAAzXywAM18wADNfNAAzXzgAM19AADNfSAAzX0wAM19QADNfWAAzX1wAM1/AADNfxAAzX8gAM1/QADNhvAAzYcQAM2HMADNh1AAzYeAAM2HkADNh6AAzYewAM2HwADNh+AAzYgAAM2IEADNiCAAzYhAAM2IUADNkAAAzZAgAM2QQADNkGAAzZCQAM2QoADNkLAAzZDAAM2Q0ADNkPAAzZEQAM2RIADNkTAAzZFQAM2RYADNmRAAzZkwAM2ZUADNmXAAzZmgAM2ZsADNmcAAzZnQAM2Z4ADNmgAAzZogAM2aMADNmkAAzZpgAM2acADNoiAAzaJAAM2iYADNooAAzaKwAM2iwADNotAAzaLgAM2i8ADNoxAAzaMwAM2jQADNo1AAzaNwAM2jgADNqzAAzatQAM2rcADNq5AAzavAAM2r0ADNq+AAzavwAM2sAADNrCAAzaxAAM2sUADNrGAAzayAAM2skADNsSAAzbNgAM210ADNuBAAzbhAAM24YADNuIAAzbigAM24wADNuOAAzbjwAM25IADNurAAzbyAAM28oADNvMAAzbzgAM29AADNvSAAzb1AAM29YADNvzAAzb9gAM2/kADNv8AAzb/wAM3AIADNwFAAzcCAAM3AoADNyFAAzchwAM3IkADNyLAAzcjgAM3I8ADNyQAAzckQAM3JIADNyUAAzclgAM3JcADNyYAAzcmgAM3JsADN0WAAzdGAAM3RoADN0cAAzdHwAM3SAADN0hAAzdIgAM3SMADN0lAAzdJwAM3SgADN0pAAzdKwAM3SwADN2nAAzdqQAM3asADN2tAAzdsAAM3bEADN2yAAzdswAM3bQADN22AAzduAAM3bkADN26AAzdvAAM3b0ADN44AAzeOgAM3jwADN4+AAzeQQAM3kIADN5DAAzeRAAM3kUADN5HAAzeSQAM3koADN5LAAzeTQAM3k4ADN7JAAzeywAM3s0ADN7PAAze0gAM3tMADN7UAAze1QAM3tYADN7YAAze2gAM3tsADN7cAAze3gAM3t8ADN9aAAzfXAAM314ADN9gAAzfYwAM32QADN9lAAzfZgAM32cADN9pAAzfawAM32wADN9tAAzfbwAM33AADN/rAAzf7QAM3+8ADN/xAAzf9AAM3/UADN/2AAzf9wAM3/gADN/6AAzf/AAM3/0ADN/+AAzgAAAM4AEADOCUAAzgtwAM4NcADOD3AAzg+QAM4PsADOD9AAzg/wAM4QIADOEDAAzhBAAM4QcADOEIAAzhCgAM4QsADOENAAzhEAAM4READOESAAzhFQAM4RYADOEbAAzhNAAM4T0ADOE/AAzhQQAM4UoADOFNAAzhUAAM4VIADOGbAAzhvwAM4eYADOIKAAziDQAM4g8ADOIRAAziEwAM4hUADOIXAAziGAAM4hsADOI0AAziVQAM4lcADOJZAAziWwAM4l0ADOJfAAziYQAM4mMADOJlAAzihgAM4okADOKMAAzijwAM4pIADOKVAAzimAAM4psADOKeAAzioAAM4xsADOMdAAzjHwAM4yEADOMkAAzjJQAM4yYADOMnAAzjKAAM4yoADOMsAAzjLQAM4y4ADOMwAAzjMQAM46wADOOuAAzjsAAM47IADOO1AAzjtgAM47cADOO4AAzjuQAM47sADOO9AAzjvgAM478ADOPBAAzjwgAM5D0ADOQ/AAzkQgAM5EQADORHAAzkSAAM5EkADORKAAzkSwAM5E0ADORPAAzkUAAM5FEADORTAAzkVAAM5G0ADORuAAzkbwAM5HEADOTsAAzk7gAM5PAADOTyAAzk9QAM5PYADOT3AAzk+AAM5PkADOT7AAzk/QAM5P4ADOT/AAzlAQAM5QIADOV9AAzlfwAM5YEADOWDAAzlhgAM5YcADOWIAAzliQAM5YoADOWMAAzljgAM5Y8ADOWQAAzlkgAM5ZMADOYOAAzmEAAM5hIADOYUAAzmFwAM5hgADOYZAAzmGgAM5hsADOYdAAzmHwAM5iAADOYhAAzmIwAM5iQADOafAAzmoQAM5qMADOalAAzmqAAM5qkADOaqAAzmqwAM5qwADOauAAzmsAAM5rEADOayAAzmtAAM5rUADOcwAAznMgAM5zQADOc2AAznOQAM5zoADOc7AAznPAAM5z0ADOc/AAznQQAM50IADOdDAAznRQAM50YADOePAAznswAM59oADOf+AAzoAQAM6AMADOgFAAzoBwAM6AkADOgLAAzoDAAM6A8ADOgoAAzoRQAM6EcADOhJAAzoSwAM6E0ADOhPAAzoUQAM6FMADOhwAAzocwAM6HYADOh5AAzofAAM6H8ADOiCAAzohQAM6IcADOkCAAzpBAAM6QYADOkIAAzpCwAM6QwADOkNAAzpDgAM6Q8ADOkRAAzpEwAM6RQADOkVAAzpFwAM6RgADOmTAAzplQAM6ZcADOmZAAzpnAAM6Z0ADOmeAAzpnwAM6aAADOmiAAzppAAM6aUADOmmAAzpqAAM6akADOokAAzqJgAM6igADOoqAAzqLQAM6i4ADOovAAzqMAAM6jEADOozAAzqNQAM6jYADOo3AAzqOQAM6joADOq1AAzqtwAM6rkADOq7AAzqvgAM6r8ADOrAAAzqwQAM6sIADOrEAAzqxgAM6scADOrIAAzqygAM6ssADOtGAAzrSAAM60oADOtMAAzrTwAM61AADOtRAAzrUgAM61MADOtVAAzrVwAM61gADOtZAAzrWwAM61wADOvXAAzr2QAM69sADOvdAAzr4AAM6+EADOviAAzr4wAM6+QADOvmAAzr6AAM6+kADOvqAAzr7AAM6+0ADOxoAAzsagAM7GwADOxuAAzscQAM7HIADOxzAAzsdAAM7HUADOx3AAzseQAM7HoADOx7AAzsfQAM7H4ADO0RAAztNAAM7VQADO10AAztdgAM7XgADO16AAztfAAM7X8ADO2AAAztgQAM7YQADO2FAAzthwAM7YgADO2KAAztjQAM7Y4ADO2PAAztkgAM7ZMADO2YAAztsQAM7boADO28AAztvgAM7ccADO3KAAztzQAM7c8ADO4YAAzuPAAM7mMADO6HAAzuigAM7owADO6OAAzukAAM7pIADO6UAAzulQAM7pgADO6xAAzu0gAM7tQADO7WAAzu2AAM7toADO7cAAzu3gAM7uAADO7iAAzvAwAM7wYADO8JAAzvDAAM7w8ADO8SAAzvFQAM7xgADO8bAAzvHQAM75gADO+aAAzvnAAM754ADO+hAAzvogAM76MADO+kAAzvpQAM76cADO+pAAzvqgAM76sADO+tAAzvrgAM8CkADPArAAzwLQAM8C8ADPAyAAzwMwAM8DQADPA1AAzwNgAM8DgADPA6AAzwOwAM8DwADPA+AAzwPwAM8LoADPC8AAzwvwAM8MEADPDEAAzwxQAM8MYADPDHAAzwyAAM8MoADPDMAAzwzQAM8M4ADPDQAAzw0QAM8OoADPDrAAzw7AAM8O4ADPFpAAzxawAM8W0ADPFvAAzxcgAM8XMADPF0AAzxdQAM8XYADPF4AAzxegAM8XsADPF8AAzxfgAM8X8ADPH6AAzx/AAM8f4ADPIAAAzyAwAM8gQADPIFAAzyBgAM8gcADPIJAAzyCwAM8gwADPINAAzyDwAM8hAADPKLAAzyjQAM8o8ADPKRAAzylAAM8pUADPKWAAzylwAM8pgADPKaAAzynAAM8p0ADPKeAAzyoAAM8qEADPMcAAzzHgAM8yAADPMiAAzzJQAM8yYADPMnAAzzKAAM8ykADPMrAAzzLQAM8y4ADPMvAAzzMQAM8zIADPOtAAzzrwAM87EADPOzAAzztgAM87cADPO4AAzzuQAM87oADPO8AAzzvgAM878ADPPAAAzzwgAM88MADPQMAAz0MAAM9FcADPR7AAz0fgAM9IAADPSCAAz0hAAM9IYADPSIAAz0iQAM9IwADPSlAAz0wgAM9MQADPTGAAz0yAAM9MoADPTMAAz0zgAM9NAADPTtAAz08AAM9PMADPT2AAz0+QAM9PwADPT/AAz1AgAM9QQADPV/AAz1gQAM9YMADPWFAAz1iAAM9YkADPWKAAz1iwAM9YwADPWOAAz1kAAM9ZEADPWSAAz1lAAM9ZUADPYQAAz2EgAM9hQADPYWAAz2GQAM9hoADPYbAAz2HAAM9h0ADPYfAAz2IQAM9iIADPYjAAz2JQAM9iYADPahAAz2owAM9qUADPanAAz2qgAM9qsADPasAAz2rQAM9q4ADPawAAz2sgAM9rMADPa0AAz2tgAM9rcADPcyAAz3NAAM9zYADPc4AAz3OwAM9zwADPc9AAz3PgAM9z8ADPdBAAz3QwAM90QADPdFAAz3RwAM90gADPfDAAz3xQAM98cADPfJAAz3zAAM980ADPfOAAz3zwAM99AADPfSAAz31AAM99UADPfWAAz32AAM99kADPhUAAz4VgAM+FkADPhbAAz4XgAM+F8ADPhgAAz4YQAM+GIADPhkAAz4ZgAM+GcADPhoAAz4agAM+GsADPh6AAz49QAM+PcADPj5AAz4+wAM+P4ADPj/AAz5AAAM+QEADPkCAAz5BAAM+QYADPkHAAz5CAAM+QoADPkLAAz5ngAM+cEADPnhAAz6AQAM+gMADPoFAAz6BwAM+gkADPoMAAz6DQAM+g4ADPoRAAz6EgAM+hQADPoVAAz6GAAM+hsADPocAAz6HQAM+iAADPohAAz6JgAM+j8ADPpIAAz6SgAM+k0ADPpWAAz6WQAM+lwADPpeAAz6pwAM+ssADPryAAz7FgAM+xkADPsbAAz7HQAM+x8ADPshAAz7IwAM+yQADPsnAAz7QAAM+2EADPtjAAz7ZQAM+2cADPtpAAz7awAM+20ADPtvAAz7cQAM+5IADPuVAAz7mAAM+5sADPueAAz7oQAM+6QADPunAAz7qgAM+6wADPwnAAz8KQAM/CsADPwtAAz8MAAM/DEADPwyAAz8MwAM/DQADPw2AAz8OAAM/DkADPw6AAz8PAAM/D0ADPy4AAz8ugAM/LwADPy+AAz8wQAM/MIADPzDAAz8xAAM/MUADPzHAAz8yQAM/MoADPzLAAz8zQAM/M4ADP1JAAz9SwAM/U4ADP1QAAz9UwAM/VQADP1VAAz9VgAM/VcADP1ZAAz9WwAM/VwADP1dAAz9XwAM/WAADP15AAz9egAM/XsADP19AAz9+AAM/foADP38AAz9/gAM/gEADP4CAAz+AwAM/gQADP4FAAz+BwAM/gkADP4KAAz+CwAM/g0ADP4OAAz+iQAM/osADP6NAAz+jwAM/pIADP6TAAz+lAAM/pUADP6WAAz+mAAM/poADP6bAAz+nAAM/p4ADP6fAAz/GgAM/xwADP8eAAz/IAAM/yMADP8kAAz/JQAM/yYADP8nAAz/KQAM/ysADP8sAAz/LQAM/y8ADP8wAAz/qwAM/60ADP+vAAz/sQAM/7QADP+1AAz/tgAM/7cADP+4AAz/ugAM/7wADP+9AAz/vgAM/8AADP/BAA0APAANAD4ADQBAAA0AQgANAEUADQBGAA0ARwANAEgADQBJAA0ASwANAE0ADQBOAA0ATwANAFEADQBSAA0AmwANAL8ADQDmAA0BCgANAQ0ADQEQAA0BEgANARQADQEWAA0BGAANARkADQEcAA0BNQANAVIADQFVAA0BWAANAVsADQFeAA0BYQANAWQADQFnAA0BhAANAYcADQGKAA0BjQANAZAADQGTAA0BlgANAZkADQGbAA0CFgANAhgADQIbAA0CHQANAiAADQIhAA0CIgANAiMADQIkAA0CJgANAikADQIqAA0CKwANAi0ADQIuAA0CqQANAqsADQKuAA0CsAANArMADQK0AA0CtQANArYADQK3AA0CuQANArwADQK9AA0CvgANAsAADQLBAA0DPAANAz4ADQNBAA0DQwANA0YADQNHAA0DSAANA0kADQNKAA0DTAANA08ADQNQAA0DUQANA1MADQNUAA0DzwANA9EADQPUAA0D1gANA9kADQPaAA0D2wANA9wADQPdAA0D3wANA+IADQPjAA0D5AANA+YADQPnAA0EYgANBGQADQRmAA0EaAANBGsADQRsAA0EbQANBG4ADQRvAA0EcQANBHQADQR1AA0EdgANBHgADQR5AA0E9AANBPYADQT4AA0E+gANBP0ADQT+AA0E/wANBQAADQUBAA0FAwANBQYADQUHAA0FCAANBQoADQULAA0FhgANBYgADQWLAA0FjQANBZAADQWRAA0FkgANBZMADQWUAA0FlgANBZkADQWaAA0FmwANBZ0ADQWeAA0FrwANBbAADQWyAA0GLQANBi8ADQYxAA0GMwANBjYADQY3AA0GOAANBjkADQY6AA0GPAANBj8ADQZAAA0GQQANBkMADQZEAA0GvwANBsEADQbDAA0GxQANBsgADQbJAA0GygANBssADQbMAA0GzgANBtEADQbSAA0G0wANBtUADQbWAA0HUQANB1MADQdWAA0HWAANB1sADQdcAA0HXQANB14ADQdfAA0HYQANB2QADQdlAA0HZgANB2gADQdpAA0H/AANCB8ADQg/AA0IXwANCGEADQhjAA0IZQANCGcADQhqAA0IawANCGwADQhvAA0IcAANCHIADQhzAA0IdQANCHgADQh5AA0IegANCH0ADQh+AA0IhwANCKAADQipAA0IqwANCK0ADQi2AA0IuQANCLwADQi+AA0JBwANCSsADQlSAA0JdgANCXkADQl7AA0JfQANCX8ADQmBAA0JgwANCYQADQmHAA0JoAANCcEADQnDAA0JxQANCccADQnJAA0JywANCc0ADQnPAA0J0QANCfIADQn1AA0J+AANCfsADQn+AA0KAQANCgQADQoHAA0KCgANCgwADQqHAA0KiQANCosADQqNAA0KkAANCpEADQqSAA0KkwANCpQADQqWAA0KmAANCpkADQqaAA0KnAANCp0ADQsYAA0LGgANCxwADQseAA0LIQANCyIADQsjAA0LJAANCyUADQsnAA0LKQANCyoADQsrAA0LLQANCy4ADQupAA0LqwANC64ADQuwAA0LswANC7QADQu1AA0LtgANC7cADQu5AA0LuwANC7wADQu9AA0LvwANC8AADQvZAA0L2gANC9sADQvdAA0MWAANDFoADQxcAA0MXgANDGEADQxiAA0MYwANDGQADQxlAA0MZwANDGkADQxqAA0MawANDG0ADQxuAA0M6QANDOsADQztAA0M7wANDPIADQzzAA0M9AANDPUADQz2AA0M+AANDPoADQz7AA0M/AANDP4ADQz/AA0NegANDXwADQ1+AA0NgAANDYMADQ2EAA0NhQANDYYADQ2HAA0NiQANDYsADQ2MAA0NjQANDY8ADQ2QAA0OCwANDg0ADQ4PAA0OEQANDhQADQ4VAA0OFgANDhcADQ4YAA0OGgANDhwADQ4dAA0OHgANDiAADQ4hAA0OnAANDp4ADQ6gAA0OogANDqUADQ6mAA0OpwANDqgADQ6pAA0OqwANDq0ADQ6uAA0OrwANDrEADQ6yAA0O+wANDx8ADQ9GAA0PagAND20ADQ9vAA0PcQAND3MADQ91AA0PdwAND3gADQ97AA0PlAAND7EADQ+zAA0PtQAND7cADQ+5AA0PuwAND70ADQ+/AA0P3AAND98ADQ/iAA0P5QAND+gADQ/rAA0P7gAND/EADQ/zAA0QbgANEHAADRByAA0QdAANEHcADRB4AA0QeQANEHoADRB7AA0QfQANEH8ADRCAAA0QgQANEIMADRCEAA0Q/wANEQEADREDAA0RBQANEQgADREJAA0RCgANEQsADREMAA0RDgANERAADRERAA0REgANERQADREVAA0RkAANEZIADRGUAA0RlgANEZkADRGaAA0RmwANEZwADRGdAA0RnwANEaEADRGiAA0RowANEaUADRGmAA0SIQANEiMADRIlAA0SJwANEioADRIrAA0SLAANEi0ADRIuAA0SMAANEjIADRIzAA0SNAANEjYADRI3AA0SsgANErQADRK2AA0SuAANErsADRK8AA0SvQANEr4ADRK/AA0SwQANEsMADRLEAA0SxQANEscADRLIAA0TQwANE0UADRNIAA0TSgANE00ADRNOAA0TTwANE1AADRNRAA0TUwANE1UADRNWAA0TVwANE1kADRNaAA0TeQANE/QADRP2AA0T+AANE/oADRP9AA0T/gANE/8ADRQAAA0UAQANFAMADRQFAA0UBgANFAcADRQJAA0UCgANFBsADRQcAA0UHgANFJkADRSbAA0UnQANFJ8ADRSiAA0UowANFKQADRSlAA0UpgANFKgADRSrAA0UrAANFK0ADRSvAA0UsAANFSsADRUtAA0VLwANFTEADRU0AA0VNQANFTYADRU3AA0VOAANFToADRU9AA0VPgANFT8ADRVBAA0VQgANFb0ADRW/AA0VwgANFcQADRXHAA0VyAANFckADRXKAA0VywANFc0ADRXQAA0V0QANFdIADRXUAA0V1QANFeYADRXnAA0V6QANFmwADRaQAA0WtAANFtcADRb+AA0XHgANF0UADRdsAA0XjAANF7AADRfUAA0X1gANF9kADRfbAA0X3QANF98ADRfiAA0X5QANF+cADRfpAA0X7AANF+4ADRfwAA0X8wANF/YADRf3AA0X/AANGBUADRgaAA0YHAANGCEADRgkAA0YJgANGG8ADRiTAA0YugANGN4ADRjhAA0Y4wANGOUADRjnAA0Y6QANGOsADRjsAA0Y7wANGQgADRktAA0ZLwANGTEADRkzAA0ZNQANGTcADRk5AA0ZOwANGT0ADRk/AA0ZZAANGWcADRlqAA0ZbQANGXAADRlzAA0ZdgANGXkADRl8AA0ZfwANGYEADRn8AA0Z/gANGgEADRoDAA0aBgANGgcADRoIAA0aCQANGgoADRoMAA0aDgANGg8ADRoQAA0aEgANGhMADRokAA0aJQANGicADRqiAA0apAANGqYADRqoAA0aqwANGqwADRqtAA0argANGq8ADRqxAA0aswANGrQADRq1AA0atwANGrgADRszAA0bNQANGzgADRs6AA0bPQANGz4ADRs/AA0bQAANG0EADRtDAA0bRQANG0YADRtHAA0bSQANG0oADRtbAA0bXAANG14ADRvZAA0b2wANG90ADRvfAA0b4gANG+MADRvkAA0b5QANG+YADRvoAA0b6gANG+sADRvsAA0b7gANG+8ADRxqAA0cbAANHG8ADRxxAA0cdAANHHUADRx2AA0cdwANHHgADRx6AA0cfAANHH0ADRx+AA0cgAANHIEADRySAA0ckwANHJUADR0QAA0dEgANHRQADR0WAA0dGQANHRoADR0bAA0dHAANHR0ADR0fAA0dIQANHSIADR0jAA0dJQANHSYADR2hAA0dowANHaYADR2oAA0dqwANHawADR2tAA0drgANHa8ADR2xAA0dswANHbQADR21AA0dtwANHbgADR3RAA0d0gANHdMADR3VAA0eUAANHlIADR5UAA0eVgANHlkADR5aAA0eWwANHlwADR5dAA0eXwANHmEADR5iAA0eYwANHmUADR5mAA0e4QANHuMADR7mAA0e6AANHusADR7sAA0e7QANHu4ADR7vAA0e8QANHvMADR70AA0e9QANHvcADR74AA0fEQANHyoADR8rAA0fLAANHy4ADR8/AA0fRAANH0cADR9JAA0fggANH4UADR+HAA0figANH40ADR+QAA0fkwANH5wADSA/AA0gYwANIIcADSCnAA0gzgANIPUADSEVAA0hPAANIWAADSGDAA0hqgANIc4ADSHyAA0iFgANIj0ADSI+AA0iQAANIkIADSJFAA0iRwANIkoADSJMAA0iTgANIlEADSJTAA0iVQANIlgADSJbAA0iXQANIl8ADSJhAA0iZAANImcADSJqAA0ibwANIogADSKNAA0ijwANIpQADSKXAA0imQANIuIADSMGAA0jLQANI1EADSNUAA0jVgANI1gADSNaAA0jXAANI14ADSNfAA0jYgANI3sADSOgAA0jogANI6QADSOmAA0jqAANI6oADSOsAA0jrgANI7AADSOyAA0j1wANI9oADSPdAA0j4AANI+MADSPmAA0j6QANI+wADSPvAA0j8gANI/QADSRvAA0kcQANJHQADSR2AA0keQANJHoADSR7AA0kfAANJH0ADSR/AA0kgQANJIIADSSDAA0khQANJIYADSSXAA0kmAANJJoADSUVAA0lFwANJRkADSUbAA0lHgANJR8ADSUgAA0lIQANJSIADSUkAA0lJgANJScADSUoAA0lKgANJSsADSWmAA0lqAANJasADSWtAA0lsAANJbEADSWyAA0lswANJbQADSW2AA0luAANJbkADSW6AA0lvAANJb0ADSXOAA0lzwANJdEADSZMAA0mTgANJlAADSZSAA0mVQANJlYADSZXAA0mWAANJlkADSZbAA0mXQANJl4ADSZfAA0mYQANJmIADSbdAA0m3wANJuIADSbkAA0m5wANJugADSbpAA0m6gANJusADSbtAA0m7wANJvAADSbxAA0m8wANJvQADScFAA0nBgANJwgADSeDAA0nhQANJ4cADSeJAA0njAANJ40ADSeOAA0njwANJ5AADSeSAA0nlAANJ5UADSeWAA0nmAANJ5kADSgUAA0oFgANKBkADSgbAA0oHgANKB8ADSggAA0oIQANKCIADSgkAA0oJgANKCcADSgoAA0oKgANKCsADShEAA0oRQANKEYADShIAA0owwANKMUADSjHAA0oyQANKMwADSjNAA0ozgANKM8ADSjQAA0o0gANKNQADSjVAA0o1gANKNgADSjZAA0pVAANKVYADSlZAA0pWwANKV4ADSlfAA0pYAANKWEADSliAA0pZAANKWYADSlnAA0paAANKWoADSlrAA0pegANKZMADSmgAA0powANKaYADSmpAA0ptgANKbkADSm8AA0pvwANKcEADSnYAA0p6wANKfQADSqHAA0qqgANKsoADSrqAA0q7AANKu4ADSrwAA0q8gANKvUADSr2AA0q9wANKvoADSr7AA0q/QANKv4ADSsAAA0rAwANKwQADSsFAA0rCAANKwkADSsOAA0rJwANKzAADSsyAA0rNAANKz0ADStAAA0rQwANK0UADSuOAA0rsgANK9kADSv9AA0sAAANLAIADSwEAA0sBgANLAgADSwKAA0sCwANLA4ADSwnAA0sSAANLEoADSxMAA0sTgANLFAADSxSAA0sVAANLFYADSxYAA0seQANLHwADSx/AA0sggANLIUADSyIAA0siwANLI4ADSyRAA0skwANLQ4ADS0QAA0tEgANLRQADS0XAA0tGAANLRkADS0aAA0tGwANLR0ADS0fAA0tIAANLSEADS0jAA0tJAANLZ8ADS2hAA0towANLaUADS2oAA0tqQANLaoADS2rAA0trAANLa4ADS2wAA0tsQANLbIADS20AA0ttQANLjAADS4yAA0uNQANLjcADS46AA0uOwANLjwADS49AA0uPgANLkAADS5CAA0uQwANLkQADS5GAA0uRwANLmAADS5hAA0uYgANLmQADS7fAA0u4QANLuMADS7lAA0u6AANLukADS7qAA0u6wANLuwADS7uAA0u8AANLvEADS7yAA0u9AANLvUADS9wAA0vcgANL3QADS92AA0veQANL3oADS97AA0vfAANL30ADS9/AA0vgQANL4IADS+DAA0vhQANL4YADTABAA0wAwANMAUADTAHAA0wCgANMAsADTAMAA0wDQANMA4ADTAQAA0wEgANMBMADTAUAA0wFgANMBcADTCSAA0wlAANMJYADTCYAA0wmwANMJwADTCdAA0wngANMJ8ADTChAA0wowANMKQADTClAA0wpwANMKgADTEjAA0xJQANMScADTEpAA0xLAANMS0ADTEuAA0xLwANMTAADTEyAA0xNAANMTUADTE2AA0xOAANMTkADTGCAA0xpgANMc0ADTHxAA0x9AANMfYADTH4AA0x+gANMfwADTH+AA0x/wANMgIADTIbAA0yOAANMjoADTI8AA0yPgANMkAADTJCAA0yRAANMkYADTJjAA0yZgANMmkADTJsAA0ybwANMnIADTJ1AA0yeAANMnoADTL1AA0y9wANMvkADTL7AA0y/gANMv8ADTMAAA0zAQANMwIADTMEAA0zBgANMwcADTMIAA0zCgANMwsADTOGAA0ziAANM4oADTOMAA0zjwANM5AADTORAA0zkgANM5MADTOVAA0zlwANM5gADTOZAA0zmwANM5wADTQXAA00GQANNBsADTQdAA00IAANNCEADTQiAA00IwANNCQADTQmAA00KAANNCkADTQqAA00LAANNC0ADTSoAA00qgANNK0ADTSvAA00sgANNLMADTS0AA00tQANNLYADTS4AA00ugANNLsADTS8AA00vgANNL8ADTU6AA01PAANNT4ADTVAAA01QwANNUQADTVFAA01RgANNUcADTVJAA01SwANNUwADTVNAA01TwANNVAADTXLAA01zQANNc8ADTXRAA011AANNdUADTXWAA011wANNdgADTXaAA013AANNd0ADTXeAA014AANNeEADTZcAA02XgANNmAADTZiAA02ZQANNmYADTZnAA02aAANNmkADTZrAA02bQANNm4ADTZvAA02cQANNnIADTcFAA03KAANN0gADTdoAA03agANN2wADTduAA03cAANN3MADTd0AA03dQANN3gADTd5AA03ewANN3wADTd+AA03gQANN4IADTeDAA03hgANN4cADTeQAA03qQANN7IADTe0AA03tgANN78ADTfCAA03xQANN8cADTgQAA04NAANOFsADTh/AA04ggANOIQADTiGAA04iAANOIoADTiMAA04jQANOJAADTipAA04ygANOMwADTjOAA040AANONIADTjUAA041gANONgADTjaAA04+wANOP4ADTkBAA05BAANOQcADTkKAA05DQANORAADTkTAA05FQANOZAADTmSAA05lAANOZYADTmZAA05mgANOZsADTmcAA05nQANOZ8ADTmhAA05ogANOaMADTmlAA05pgANOiEADTojAA06JQANOicADToqAA06KwANOiwADTotAA06LgANOjAADToyAA06MwANOjQADTo2AA06NwANOrIADTq0AA06twANOrkADTq8AA06vQANOr4ADTq/AA06wAANOsIADTrEAA06xQANOsYADTrIAA06yQANOuIADTrjAA065AANOuYADTthAA07YwANO2UADTtnAA07agANO2sADTtsAA07bQANO24ADTtwAA07cgANO3MADTt0AA07dgANO3cADTvyAA079AANO/YADTv4AA07+wANO/wADTv9AA07/gANO/8ADTwBAA08AwANPAQADTwFAA08BwANPAgADTyDAA08hQANPIcADTyJAA08jAANPI0ADTyOAA08jwANPJAADTySAA08lAANPJUADTyWAA08mAANPJkADT0UAA09FgANPRgADT0aAA09HQANPR4ADT0fAA09IAANPSEADT0jAA09JQANPSYADT0nAA09KQANPSoADT2lAA09pwANPakADT2rAA09rgANPa8ADT2wAA09sQANPbIADT20AA09tgANPbcADT24AA09ugANPbsADT4EAA0+KAANPk8ADT5zAA0+dgANPngADT56AA0+fAANPn4ADT6AAA0+gQANPoQADT6dAA0+ugANPrwADT6+AA0+wAANPsIADT7EAA0+xgANPsgADT7lAA0+6AANPusADT7uAA0+8QANPvQADT73AA0++gANPvwADT93AA0/eQANP3sADT99AA0/gAANP4EADT+CAA0/gwANP4QADT+GAA0/iAANP4kADT+KAA0/jAANP40ADUAIAA1ACgANQAwADUAOAA1AEQANQBIADUATAA1AFAANQBUADUAXAA1AGQANQBoADUAbAA1AHQANQB4ADUCZAA1AmwANQJ0ADUCfAA1AogANQKMADUCkAA1ApQANQKYADUCoAA1AqgANQKsADUCsAA1ArgANQK8ADUEqAA1BLAANQS8ADUExAA1BNAANQTUADUE2AA1BNwANQTgADUE6AA1BPAANQT0ADUE+AA1BQAANQUEADUG8AA1BvgANQcAADUHCAA1BxQANQcYADUHHAA1ByAANQckADUHLAA1BzQANQc4ADUHPAA1B0QANQdIADUJNAA1CTwANQlEADUJTAA1CVgANQlcADUJYAA1CWQANQloADUJcAA1CXgANQl8ADUJgAA1CYgANQmMADULeAA1C4AANQuIADULkAA1C5wANQugADULpAA1C6gANQusADULtAA1C7wANQvAADULxAA1C8wANQvQADUOHAA1DqgANQ8oADUPqAA1D7AANQ+4ADUPwAA1D8gANQ/UADUP2AA1D9wANQ/oADUP7AA1D/QANQ/4ADUQAAA1EAwANRAQADUQFAA1ECAANRAkADUQOAA1EJwANRDAADUQyAA1ENAANRD0ADURAAA1EQwANREUADUSOAA1EsgANRNkADUT9AA1FAAANRQIADUUEAA1FBgANRQgADUUKAA1FCwANRQ4ADUUnAA1FSAANRUoADUVMAA1FTgANRVAADUVSAA1FVAANRVYADUVYAA1FeQANRXwADUV/AA1FggANRYUADUWIAA1FiwANRY4ADUWRAA1FkwANRg4ADUYQAA1GEgANRhQADUYXAA1GGAANRhkADUYaAA1GGwANRh0ADUYfAA1GIAANRiEADUYjAA1GJAANRp8ADUahAA1GowANRqUADUaoAA1GqQANRqoADUarAA1GrAANRq4ADUawAA1GsQANRrIADUa0AA1GtQANRzAADUcyAA1HNQANRzcADUc6AA1HOwANRzwADUc9AA1HPgANR0AADUdCAA1HQwANR0QADUdGAA1HRwANR2AADUdhAA1HYgANR2QADUffAA1H4QANR+MADUflAA1H6AANR+kADUfqAA1H6wANR+wADUfuAA1H8AANR/EADUfyAA1H9AANR/UADUhwAA1IcgANSHQADUh2AA1IeQANSHoADUh7AA1IfAANSH0ADUh/AA1IgQANSIIADUiDAA1IhQANSIYADUkBAA1JAwANSQUADUkHAA1JCgANSQsADUkMAA1JDQANSQ4ADUkQAA1JEgANSRMADUkUAA1JFgANSRcADUmSAA1JlAANSZYADUmYAA1JmwANSZwADUmdAA1JngANSZ8ADUmhAA1JowANSaQADUmlAA1JpwANSagADUojAA1KJQANSicADUopAA1KLAANSi0ADUouAA1KLwANSjAADUoyAA1KNAANSjUADUo2AA1KOAANSjkADUqCAA1KpgANSs0ADUrxAA1K9AANSvYADUr4AA1K+gANSvwADUr+AA1K/wANSwIADUsbAA1LOAANSzoADUs8AA1LPgANS0AADUtCAA1LRAANS0YADUtjAA1LZgANS2kADUtsAA1LbwANS3IADUt1AA1LeAANS3oADUv1AA1L9wANS/kADUv7AA1L/gANS/8ADUwAAA1MAQANTAIADUwEAA1MBgANTAcADUwIAA1MCgANTAsADUyGAA1MiAANTIoADUyMAA1MjwANTJAADUyRAA1MkgANTJMADUyVAA1MlwANTJgADUyZAA1MmwANTJwADU0XAA1NGQANTRsADU0dAA1NIAANTSEADU0iAA1NIwANTSQADU0mAA1NKAANTSkADU0qAA1NLAANTS0ADU2oAA1NqgANTa0ADU2vAA1NsgANTbMADU20AA1NtQANTbYADU24AA1NugANTbsADU28AA1NvgANTb8ADU46AA1OPAANTj4ADU5AAA1OQwANTkQADU5FAA1ORgANTkcADU5JAA1OSwANTkwADU5NAA1OTwANTlAADU7LAA1OzQANTs8ADU7RAA1O1AANTtUADU7WAA1O1wANTtgADU7aAA1O3AANTt0ADU7eAA1O4AANTuEADU9cAA1PXgANT2AADU9iAA1PZQANT2YADU9nAA1PaAANT2kADU9rAA1PbQANT24ADU9vAA1PcQANT3IADU+DAA1PhAANT4YADU+XAA1PpAANT6cADU+qAA1PrQANT68ADU/oAA1P6wANT+0ADU/wAA1P8wANT/YADU/5AA1QfAANUKAADVDEAA1Q5wANUQ4ADVEuAA1RVQANUXwADVGcAA1RwAANUeQADVHmAA1R6QANUesADVHtAA1R7wANUfIADVH1AA1R9wANUfkADVH8AA1R/gANUgAADVIDAA1SBgANUgcADVIQAA1SKQANUi4ADVIwAA1SNQANUjgADVI6AA1SgwANUqcADVLOAA1S8gANUvUADVL3AA1S+QANUvsADVL9AA1S/wANUwAADVMDAA1THAANU0EADVNDAA1TRQANU0cADVNJAA1TSwANU00ADVNPAA1TUQANU1MADVN4AA1TewANU34ADVOBAA1ThAANU4cADVOKAA1TjQANU5AADVOTAA1TlQANVBAADVQSAA1UFQANVBcADVQaAA1UGwANVBwADVQdAA1UHgANVCAADVQiAA1UIwANVCQADVQmAA1UJwANVDgADVQ5AA1UOwANVLYADVS4AA1UugANVLwADVS/AA1UwAANVMEADVTCAA1UwwANVMUADVTHAA1UyAANVMkADVTLAA1UzAANVUcADVVJAA1VTAANVU4ADVVRAA1VUgANVVMADVVUAA1VVQANVVcADVVZAA1VWgANVVsADVVdAA1VXgANVW8ADVVwAA1VcgANVe0ADVXvAA1V8QANVfMADVX2AA1V9wANVfgADVX5AA1V+gANVfwADVX+AA1V/wANVgAADVYCAA1WAwANVn4ADVaAAA1WgwANVoUADVaIAA1WiQANVooADVaLAA1WjAANVo4ADVaQAA1WkQANVpIADVaUAA1WlQANVqYADVanAA1WqQANVyQADVcmAA1XKAANVyoADVctAA1XLgANVy8ADVcwAA1XMQANVzMADVc1AA1XNgANVzcADVc5AA1XOgANV7UADVe3AA1XugANV7wADVe/AA1XwAANV8EADVfCAA1XwwANV8UADVfHAA1XyAANV8kADVfLAA1XzAANV+UADVfmAA1X5wANV+kADVhkAA1YZgANWGgADVhqAA1YbQANWG4ADVhvAA1YcAANWHEADVhzAA1YdQANWHYADVh3AA1YeQANWHoADVj1AA1Y9wANWPoADVj8AA1Y/wANWQAADVkBAA1ZAgANWQMADVkFAA1ZBwANWQgADVkJAA1ZCwANWQwADVkiAA1ZOwANWUAADVlDAA1ZSAANWUsADVlNAA1ZWQANWewADVoPAA1aLwANWk8ADVpRAA1aUwANWlUADVpXAA1aWgANWlsADVpcAA1aXwANWmAADVpiAA1aYwANWmUADVpoAA1aaQANWmoADVptAA1abgANWncADVqQAA1amQANWpsADVqdAA1apgANWqkADVqsAA1argANWvcADVsbAA1bQgANW2YADVtpAA1bawANW20ADVtvAA1bcQANW3MADVt0AA1bdwANW5AADVuxAA1bswANW7UADVu3AA1buQANW7sADVu9AA1bvwANW8EADVviAA1b5QANW+gADVvrAA1b7gANW/EADVv0AA1b9wANW/oADVv8AA1cdwANXHkADVx7AA1cfQANXIAADVyBAA1cggANXIMADVyEAA1chgANXIgADVyJAA1cigANXIwADVyNAA1dCAANXQoADV0MAA1dDgANXREADV0SAA1dEwANXRQADV0VAA1dFwANXRkADV0aAA1dGwANXR0ADV0eAA1dmQANXZsADV2eAA1doAANXaMADV2kAA1dpQANXaYADV2nAA1dqQANXasADV2sAA1drQANXa8ADV2wAA1dyQANXcoADV3LAA1dzQANXkgADV5KAA1eTAANXk4ADV5RAA1eUgANXlMADV5UAA1eVQANXlcADV5ZAA1eWgANXlsADV5dAA1eXgANXtkADV7bAA1e3QANXt8ADV7iAA1e4wANXuQADV7lAA1e5gANXugADV7qAA1e6wANXuwADV7uAA1e7wANX2oADV9sAA1fbgANX3AADV9zAA1fdAANX3UADV92AA1fdwANX3kADV97AA1ffAANX30ADV9/AA1fgAANX/sADV/9AA1f/wANYAEADWAEAA1gBQANYAYADWAHAA1gCAANYAoADWAMAA1gDQANYA4ADWAQAA1gEQANYIwADWCOAA1gkAANYJIADWCVAA1glgANYJcADWCYAA1gmQANYJsADWCdAA1gngANYJ8ADWChAA1gogANYOsADWEPAA1hNgANYVoADWFdAA1hXwANYWEADWFjAA1hZQANYWcADWFoAA1hawANYYQADWGhAA1howANYaUADWGnAA1hqQANYasADWGtAA1hrwANYcwADWHPAA1h0gANYdUADWHYAA1h2wANYd4ADWHhAA1h4wANYl4ADWJgAA1iYgANYmQADWJnAA1iaAANYmkADWJqAA1iawANYm0ADWJvAA1icAANYnEADWJzAA1idAANYu8ADWLxAA1i8wANYvUADWL4AA1i+QANYvoADWL7AA1i/AANYv4ADWMAAA1jAQANYwIADWMEAA1jBQANY4AADWOCAA1jhAANY4YADWOJAA1jigANY4sADWOMAA1jjQANY48ADWORAA1jkgANY5MADWOVAA1jlgANZBEADWQTAA1kFgANZBgADWQbAA1kHAANZB0ADWQeAA1kHwANZCEADWQjAA1kJAANZCUADWQnAA1kKAANZKMADWSlAA1kpwANZKkADWSsAA1krQANZK4ADWSvAA1ksAANZLIADWS0AA1ktQANZLYADWS4AA1kuQANZTQADWU2AA1lOAANZToADWU9AA1lPgANZT8ADWVAAA1lQQANZUMADWVFAA1lRgANZUcADWVJAA1lSgANZcUADWXHAA1lyQANZcsADWXOAA1lzwANZdAADWXRAA1l0gANZdQADWXWAA1l1wANZdgADWXaAA1l2wANZewADWXxAA1l9AANZfYADWX7AA1mNAANZjcADWY5AA1mPAANZj8ADWZCAA1mRQANZsgADWbsAA1nEAANZzMADWdaAA1negANZ6EADWfIAA1n6AANaAwADWgwAA1oMgANaDUADWg3AA1oOQANaDsADWg+AA1oQQANaEMADWhFAA1oSAANaEoADWhMAA1oTwANaFIADWhTAA1oWAANaHEADWh2AA1oeAANaH0ADWiAAA1oggANaMsADWjvAA1pFgANaToADWk9AA1pPwANaUEADWlDAA1pRQANaUcADWlIAA1pSwANaWQADWmJAA1piwANaY0ADWmPAA1pkQANaZMADWmVAA1plwANaZkADWmbAA1pwAANacMADWnGAA1pyQANacwADWnPAA1p0gANadUADWnYAA1p2wANad0ADWpYAA1qWgANal0ADWpfAA1qYgANamMADWpkAA1qZQANamYADWpoAA1qagANamsADWpsAA1qbgANam8ADWqAAA1qgQANaoMADWr+AA1rAAANawIADWsEAA1rBwANawgADWsJAA1rCgANawsADWsNAA1rDwANaxAADWsRAA1rEwANaxQADWuPAA1rkQANa5QADWuWAA1rmQANa5oADWubAA1rnAANa50ADWufAA1roQANa6IADWujAA1rpQANa6YADWu3AA1ruAANa7oADWw1AA1sNwANbDkADWw7AA1sPgANbD8ADWxAAA1sQQANbEIADWxEAA1sRgANbEcADWxIAA1sSgANbEsADWzGAA1syAANbMsADWzNAA1s0AANbNEADWzSAA1s0wANbNQADWzWAA1s2AANbNkADWzaAA1s3AANbN0ADWzuAA1s7wANbPEADW1sAA1tbgANbXAADW1yAA1tdQANbXYADW13AA1teAANbXkADW17AA1tfQANbX4ADW1/AA1tgQANbYIADW39AA1t/wANbgIADW4EAA1uBwANbggADW4JAA1uCgANbgsADW4NAA1uDwANbhAADW4RAA1uEwANbhQADW4tAA1uLgANbi8ADW4xAA1urAANbq4ADW6wAA1usgANbrUADW62AA1utwANbrgADW65AA1uuwANbr0ADW6+AA1uvwANbsEADW7CAA1vPQANbz8ADW9CAA1vRAANb0cADW9IAA1vSQANb0oADW9LAA1vTQANb08ADW9QAA1vUQANb1MADW9UAA1vbAANb4UADW+SAA1vlQANb5gADW+bAA1vqAANb6sADW+uAA1vsQANb7MADW+/AA1vywANb9gADXBrAA1wjgANcK4ADXDOAA1w0AANcNIADXDUAA1w1gANcNkADXDaAA1w2wANcN4ADXDfAA1w4QANcOIADXDkAA1w5wANcOgADXDpAA1w7AANcO0ADXDyAA1xCwANcRQADXEWAA1xGAANcSEADXEkAA1xJwANcSkADXFyAA1xlgANcb0ADXHhAA1x5AANceYADXHoAA1x6gANcewADXHuAA1x7wANcfIADXILAA1yLAANci4ADXIwAA1yMgANcjQADXI2AA1yOAANcjoADXI8AA1yXQANcmAADXJjAA1yZgANcmkADXJsAA1ybwANcnIADXJ1AA1ydwANcvIADXL0AA1y9gANcvgADXL7AA1y/AANcv0ADXL+AA1y/wANcwEADXMDAA1zBAANcwUADXMHAA1zCAANc4MADXOFAA1zhwANc4kADXOMAA1zjQANc44ADXOPAA1zkAANc5IADXOUAA1zlQANc5YADXOYAA1zmQANdBQADXQWAA10GQANdBsADXQeAA10HwANdCAADXQhAA10IgANdCQADXQmAA10JwANdCgADXQqAA10KwANdEQADXRFAA10RgANdEgADXTDAA10xQANdMcADXTJAA10zAANdM0ADXTOAA10zwANdNAADXTSAA101AANdNUADXTWAA102AANdNkADXVUAA11VgANdVgADXVaAA11XQANdV4ADXVfAA11YAANdWEADXVjAA11ZQANdWYADXVnAA11aQANdWoADXXlAA115wANdekADXXrAA117gANde8ADXXwAA118QANdfIADXX0AA119gANdfcADXX4AA11+gANdfsADXZ2AA12eAANdnoADXZ8AA12fwANdoAADXaBAA12ggANdoMADXaFAA12hwANdogADXaJAA12iwANdowADXcHAA13CQANdwsADXcNAA13EAANdxEADXcSAA13EwANdxQADXcWAA13GAANdxkADXcaAA13HAANdx0ADXdmAA13igANd7EADXfVAA132AANd9oADXfcAA133gANd+AADXfiAA134wANd+YADXf/AA14HAANeB4ADXggAA14IgANeCQADXgmAA14KAANeCoADXhHAA14SgANeE0ADXhQAA14UwANeFYADXhZAA14XAANeF4ADXjZAA142wANeN0ADXjfAA144gANeOMADXjkAA145QANeOYADXjoAA146gANeOsADXjsAA147gANeO8ADXlqAA15bAANeW4ADXlwAA15cwANeXQADXl1AA15dgANeXcADXl5AA15ewANeXwADXl9AA15fwANeYAADXn7AA15/QANef8ADXoBAA16BAANegUADXoGAA16BwANeggADXoKAA16DAANeg0ADXoOAA16EAANehEADXqMAA16jgANepEADXqTAA16lgANepcADXqYAA16mQANepoADXqcAA16ngANep8ADXqgAA16ogANeqMADXseAA17IAANeyIADXskAA17JwANeygADXspAA17KgANeysADXstAA17LwANezAADXsxAA17MwANezQADXuvAA17sQANe7MADXu1AA17uAANe7kADXu6AA17uwANe7wADXu+AA17wAANe8EADXvCAA17xAANe8UADXxAAA18QgANfEQADXxGAA18SQANfEoADXxLAA18TAANfE0ADXxPAA18UQANfFIADXxTAA18VQANfFYADXzpAA19DAANfSwADX1MAA19TgANfVAADX1SAA19VAANfVcADX1YAA19WQANfVwADX1dAA19XwANfWAADX1iAA19ZQANfWYADX1nAA19agANfWsADX1wAA19iQANfZIADX2UAA19lgANfZ8ADX2iAA19pQANfacADX3wAA1+FAANfjsADX5fAA1+YgANfmQADX5mAA1+aAANfmoADX5sAA1+bQANfnAADX6JAA1+qgANfqwADX6uAA1+sAANfrIADX60AA1+tgANfrgADX66AA1+2wANft4ADX7hAA1+5AANfucADX7qAA1+7QANfvAADX7zAA1+9QANf3AADX9yAA1/dAANf3YADX95AA1/egANf3sADX98AA1/fQANf38ADX+BAA1/ggANf4MADX+FAA1/hgANgAEADYADAA2ABQANgAcADYAKAA2ACwANgAwADYANAA2ADgANgBAADYASAA2AEwANgBQADYAWAA2AFwANgJIADYCUAA2AlwANgJkADYCcAA2AnQANgJ4ADYCfAA2AoAANgKIADYCkAA2ApQANgKYADYCoAA2AqQANgMIADYDDAA2AxAANgMYADYFBAA2BQwANgUUADYFHAA2BSgANgUsADYFMAA2BTQANgU4ADYFQAA2BUgANgVMADYFUAA2BVgANgVcADYHSAA2B1AANgdYADYHYAA2B2wANgdwADYHdAA2B3gANgd8ADYHhAA2B4wANgeQADYHlAA2B5wANgegADYJjAA2CZQANgmcADYJpAA2CbAANgm0ADYJuAA2CbwANgnAADYJyAA2CdAANgnUADYJ2AA2CeAANgnkADYL0AA2C9gANgvgADYL6AA2C/QANgv4ADYL/AA2DAAANgwEADYMDAA2DBQANgwYADYMHAA2DCQANgwoADYOFAA2DhwANg4kADYOLAA2DjgANg48ADYOQAA2DkQANg5IADYOUAA2DlgANg5cADYOYAA2DmgANg5sADYPkAA2ECAANhC8ADYRTAA2EVgANhFgADYRaAA2EXAANhF4ADYRgAA2EYQANhGQADYR9AA2EmgANhJwADYSeAA2EoAANhKIADYSkAA2EpgANhKgADYTFAA2EyAANhMsADYTOAA2E0QANhNQADYTXAA2E2gANhNwADYVXAA2FWQANhVsADYVdAA2FYAANhWEADYViAA2FYwANhWQADYVmAA2FaAANhWkADYVqAA2FbAANhW0ADYXoAA2F6gANhewADYXuAA2F8QANhfIADYXzAA2F9AANhfUADYX3AA2F+QANhfoADYX7AA2F/QANhf4ADYZ5AA2GewANhn0ADYZ/AA2GggANhoMADYaEAA2GhQANhoYADYaIAA2GigANhosADYaMAA2GjgANho8ADYcKAA2HDAANhw4ADYcQAA2HEwANhxQADYcVAA2HFgANhxcADYcZAA2HGwANhxwADYcdAA2HHwANhyAADYebAA2HnQANh58ADYehAA2HpAANh6UADYemAA2HpwANh6gADYeqAA2HrAANh60ADYeuAA2HsAANh7EADYgsAA2ILgANiDAADYgyAA2INQANiDYADYg3AA2IOAANiDkADYg7AA2IPQANiD4ADYg/AA2IQQANiEIADYi9AA2IvwANiMEADYjDAA2IxgANiMcADYjIAA2IyQANiMoADYjMAA2IzgANiM8ADYjQAA2I0gANiNMADYlmAA2JiQANiakADYnJAA2JywANic0ADYnPAA2J0QANidQADYnVAA2J1gANidkADYnaAA2J3AANid0ADYnfAA2J4gANieMADYnkAA2J5wANiegADYntAA2KBgANig8ADYoRAA2KEwANihwADYofAA2KIgANiiQADYptAA2KkQANirgADYrcAA2K3wANiuEADYrjAA2K5QANiucADYrpAA2K6gANiu0ADYsGAA2LJwANiykADYsrAA2LLQANiy8ADYsxAA2LMwANizUADYs3AA2LWAANi1sADYteAA2LYQANi2QADYtnAA2LagANi20ADYtwAA2LcgANi+0ADYvvAA2L8QANi/MADYv2AA2L9wANi/gADYv5AA2L+gANi/wADYv+AA2L/wANjAAADYwCAA2MAwANjH4ADYyAAA2MggANjIQADYyHAA2MiAANjIkADYyKAA2MiwANjI0ADYyPAA2MkAANjJEADYyTAA2MlAANjQ8ADY0RAA2NFAANjRYADY0ZAA2NGgANjRsADY0cAA2NHQANjR8ADY0hAA2NIgANjSMADY0lAA2NJgANjT8ADY1AAA2NQQANjUMADY2+AA2NwAANjcIADY3EAA2NxwANjcgADY3JAA2NygANjcsADY3NAA2NzwANjdAADY3RAA2N0wANjdQADY5PAA2OUQANjlMADY5VAA2OWAANjlkADY5aAA2OWwANjlwADY5eAA2OYAANjmEADY5iAA2OZAANjmUADY7gAA2O4gANjuQADY7mAA2O6QANjuoADY7rAA2O7AANju0ADY7vAA2O8QANjvIADY7zAA2O9QANjvYADY9xAA2PcwANj3UADY93AA2PegANj3sADY98AA2PfQANj34ADY+AAA2PggANj4MADY+EAA2PhgANj4cADZACAA2QBAANkAYADZAIAA2QCwANkAwADZANAA2QDgANkA8ADZARAA2QEwANkBQADZAVAA2QFwANkBgADZBhAA2QhQANkKwADZDQAA2Q0wANkNUADZDXAA2Q2QANkNsADZDdAA2Q3gANkOEADZD6AA2RFwANkRkADZEbAA2RHQANkR8ADZEhAA2RIwANkSUADZFCAA2RRQANkUgADZFLAA2RTgANkVEADZFUAA2RVwANkVkADZHUAA2R1gANkdgADZHaAA2R3QANkd4ADZHfAA2R4AANkeEADZHjAA2R5QANkeYADZHnAA2R6QANkeoADZJlAA2SZwANkmkADZJrAA2SbgANkm8ADZJwAA2ScQANknIADZJ0AA2SdgANkncADZJ4AA2SegANknsADZL2AA2S+AANkvoADZL8AA2S/wANkwAADZMBAA2TAgANkwMADZMFAA2TBwANkwgADZMJAA2TCwANkwwADZOHAA2TiQANk4wADZOOAA2TkQANk5IADZOTAA2TlAANk5UADZOXAA2TmQANk5oADZObAA2TnQANk54ADZQZAA2UGwANlB0ADZQfAA2UIgANlCMADZQkAA2UJQANlCYADZQoAA2UKgANlCsADZQsAA2ULgANlC8ADZSqAA2UrAANlK4ADZSwAA2UswANlLQADZS1AA2UtgANlLcADZS5AA2UuwANlLwADZS9AA2UvwANlMAADZU7AA2VPQANlT8ADZVBAA2VRAANlUUADZVGAA2VRwANlUgADZVKAA2VTAANlU0ADZVOAA2VUAANlVEADZViAA2VZwANlWoADZVsAA2VcQANlfQADZYYAA2WPAANll8ADZaGAA2WpgANls0ADZb0AA2XFAANlzgADZdcAA2XXgANl2EADZdjAA2XZQANl2cADZdqAA2XbQANl28ADZdxAA2XdAANl3YADZd4AA2XewANl34ADZd/AA2XhAANl50ADZeiAA2XpAANl6kADZesAA2XrgANl/cADZgbAA2YQgANmGYADZhpAA2YawANmG0ADZhvAA2YcQANmHMADZh0AA2YdwANmJAADZi1AA2YtwANmLkADZi7AA2YvQANmL8ADZjBAA2YwwANmMUADZjHAA2Y7AANmO8ADZjyAA2Y9QANmPgADZj7AA2Y/gANmQEADZkEAA2ZBwANmQkADZmEAA2ZhgANmYkADZmLAA2ZjgANmY8ADZmQAA2ZkQANmZIADZmUAA2ZlgANmZcADZmYAA2ZmgANmZsADZmsAA2ZrQANma8ADZoqAA2aLAANmi4ADZowAA2aMwANmjQADZo1AA2aNgANmjcADZo5AA2aOwANmjwADZo9AA2aPwANmkAADZq7AA2avQANmsAADZrCAA2axQANmsYADZrHAA2ayAANmskADZrLAA2azQANms4ADZrPAA2a0QANmtIADZrjAA2a6AANmusADZrtAA2a/gANmw8ADZsSAA2bFQANmxgADZsbAA2bHQANmzkADZtLAA2bXgANm2oADZvlAA2b5wANm+kADZvrAA2b7gANm+8ADZvwAA2b8QANm/IADZv0AA2b9gANm/cADZv4AA2b+gANm/sADZx2AA2ceAANnHsADZx9AA2cgAANnIEADZyCAA2cgwANnIQADZyGAA2ciAANnIkADZyKAA2cjAANnI0ADZyeAA2cnwANnKEADZ0cAA2dHgANnSAADZ0iAA2dJQANnSYADZ0nAA2dKAANnSkADZ0rAA2dLQANnS4ADZ0vAA2dMQANnTIADZ2tAA2drwANnbIADZ20AA2dtwANnbgADZ25AA2dugANnbsADZ29AA2dvwANncAADZ3BAA2dwwANncQADZ3dAA2d3gANnd8ADZ3hAA2eXAANnl4ADZ5gAA2eYgANnmUADZ5mAA2eZwANnmgADZ5pAA2eawANnm0ADZ5uAA2ebwANnnEADZ5yAA2e7QANnu8ADZ7yAA2e9AANnvcADZ74AA2e+QANnvoADZ77AA2e/QANnv8ADZ8AAA2fAQANnwMADZ8EAA2fHAANnzUADZ9mAA2faQANn2wADZ9vAA2fcgANn3UADZ94AA2fewANn34ADZ+BAA2fhAANn4cADZ+KAA2fuwANn74ADZ/BAA2fxAANn8cADZ/KAA2fzQANn9AADZ/TAA2f1gANn9kADZ/cAA2f3wANn+EADZ/9AA2gEQANoCoADaBBAA2gVAANoGwADaCEAA2goAANoLIADaC+AA2hUQANoXQADaGUAA2htAANobYADaG4AA2hugANobwADaG/AA2hwAANocEADaHEAA2hxQANoccADaHIAA2hygANoc0ADaHOAA2hzwANodIADaHTAA2h2AANofEADaH6AA2h/AANof4ADaIHAA2iCgANog0ADaIPAA2iWAANonwADaKjAA2ixwANosoADaLMAA2izgANotAADaLSAA2i1AANotUADaLYAA2i8QANoxIADaMUAA2jFgANoxgADaMaAA2jHAANox4ADaMgAA2jIgANo0MADaNGAA2jSQANo0wADaNPAA2jUgANo1UADaNYAA2jWwANo10ADaPYAA2j2gANo9wADaPeAA2j4QANo+IADaPjAA2j5AANo+UADaPnAA2j6QANo+oADaPrAA2j7QANo+4ADaRpAA2kawANpG0ADaRvAA2kcgANpHMADaR0AA2kdQANpHYADaR4AA2kegANpHsADaR8AA2kfgANpH8ADaT6AA2k/AANpP8ADaUBAA2lBAANpQUADaUGAA2lBwANpQgADaUKAA2lDAANpQ0ADaUOAA2lEAANpREADaUqAA2lKwANpSwADaUuAA2lqQANpasADaWtAA2lrwANpbIADaWzAA2ltAANpbUADaW2AA2luAANpboADaW7AA2lvAANpb4ADaW/AA2mOgANpjwADaY+AA2mQAANpkMADaZEAA2mRQANpkYADaZHAA2mSQANpksADaZMAA2mTQANpk8ADaZQAA2mywANps0ADabPAA2m0QANptQADabVAA2m1gANptcADabYAA2m2gANptwADabdAA2m3gANpuAADabhAA2nXAANp14ADadgAA2nYgANp2UADadmAA2nZwANp2gADadpAA2nawANp20ADaduAA2nbwANp3EADadyAA2n7QANp+8ADafxAA2n8wANp/YADaf3AA2n+AANp/kADaf6AA2n/AANp/4ADaf/AA2oAAANqAIADagDAA2oTAANqHAADaiXAA2ouwANqL4ADajAAA2owgANqMQADajGAA2oyAANqMkADajMAA2o5QANqQIADakEAA2pBgANqQgADakKAA2pDAANqQ4ADakQAA2pLQANqTAADakzAA2pNgANqTkADak8AA2pPwANqUIADalEAA2pvwANqcEADanDAA2pxQANqcgADanJAA2pygANqcsADanMAA2pzgANqdAADanRAA2p0gANqdQADanVAA2qUAANqlIADapUAA2qVgANqlkADapaAA2qWwANqlwADapdAA2qXwANqmEADapiAA2qYwANqmUADapmAA2q4QANquMADarlAA2q5wANquoADarrAA2q7AANqu0ADaruAA2q8AANqvIADarzAA2q9AANqvYADar3AA2rcgANq3QADat3AA2reQANq3wADat9AA2rfgANq38ADauAAA2rggANq4QADauFAA2rhgANq4gADauJAA2sBAANrAYADawIAA2sCgANrA0ADawOAA2sDwANrBAADawRAA2sEwANrBUADawWAA2sFwANrBkADawaAA2slQANrJcADayZAA2smwANrJ4ADayfAA2soAANrKEADayiAA2spAANrKYADaynAA2sqAANrKoADayrAA2tJgANrSgADa0qAA2tLAANrS8ADa0wAA2tMQANrTIADa0zAA2tNQANrTcADa04AA2tOQANrTsADa08AA2tzwANrfIADa4SAA2uMgANrjQADa42AA2uOAANrjoADa49AA2uPgANrj8ADa5CAA2uQwANrkUADa5GAA2uSAANrksADa5MAA2uTQANrlAADa5RAA2uVgANrm8ADa54AA2uegANrnwADa6FAA2uiAANrosADa6NAA2u1gANrvoADa8hAA2vRQANr0gADa9KAA2vTAANr04ADa9QAA2vUgANr1MADa9WAA2vbwANr5AADa+SAA2vlAANr5YADa+YAA2vmgANr5wADa+eAA2voAANr8EADa/EAA2vxwANr8oADa/NAA2v0AANr9MADa/WAA2v2QANr9sADbBWAA2wWAANsFoADbBcAA2wXwANsGAADbBhAA2wYgANsGMADbBlAA2wZwANsGgADbBpAA2wawANsGwADbDnAA2w6QANsOsADbDtAA2w8AANsPEADbDyAA2w8wANsPQADbD2AA2w+AANsPkADbD6AA2w/AANsP0ADbF4AA2xegANsX0ADbF/AA2xggANsYMADbGEAA2xhQANsYYADbGIAA2xigANsYsADbGMAA2xjgANsY8ADbGoAA2xqQANsaoADbGsAA2yJwANsikADbIrAA2yLQANsjAADbIxAA2yMgANsjMADbI0AA2yNgANsjgADbI5AA2yOgANsjwADbI9AA2yuAANsroADbK8AA2yvgANssEADbLCAA2ywwANssQADbLFAA2yxwANsskADbLKAA2yywANss0ADbLOAA2zSQANs0sADbNNAA2zTwANs1IADbNTAA2zVAANs1UADbNWAA2zWAANs1oADbNbAA2zXAANs14ADbNfAA2z2gANs9wADbPeAA2z4AANs+MADbPkAA2z5QANs+YADbPnAA2z6QANs+sADbPsAA2z7QANs+8ADbPwAA20awANtG0ADbRvAA20cQANtHQADbR1AA20dgANtHcADbR4AA20egANtHwADbR9AA20fgANtIAADbSBAA20ygANtO4ADbUVAA21OQANtTwADbU+AA21QAANtUIADbVEAA21RgANtUcADbVKAA21YwANtYAADbWCAA21hAANtYYADbWIAA21igANtYwADbWOAA21qwANta4ADbWxAA21tAANtbcADbW6AA21vQANtcAADbXCAA22PQANtj8ADbZBAA22QwANtkYADbZHAA22SAANtkkADbZKAA22TAANtk4ADbZPAA22UAANtlIADbZTAA22zgANttAADbbSAA221AANttcADbbYAA222QANttoADbbbAA223QANtt8ADbbgAA224QANtuMADbbkAA23XwANt2EADbdjAA23ZQANt2gADbdpAA23agANt2sADbdsAA23bgANt3AADbdxAA23cgANt3QADbd1AA238AANt/IADbf1AA239wANt/oADbf7AA23/AANt/0ADbf+AA24AAANuAIADbgDAA24BAANuAYADbgHAA24ggANuIQADbiGAA24iAANuIsADbiMAA24jQANuI4ADbiPAA24kQANuJMADbiUAA24lQANuJcADbiYAA25EwANuRUADbkXAA25GQANuRwADbkdAA25HgANuR8ADbkgAA25IgANuSQADbklAA25JgANuSgADbkpAA25pAANuaYADbmoAA25qgANua0ADbmuAA25rwANubAADbmxAA25swANubUADbm2AA25twANubkADbm6AA26TQANunAADbqQAA26sAANurIADbq0AA26tgANurgADbq7AA26vAANur0ADbrAAA26wQANusMADbrEAA26xgANuskADbrKAA26ywANus4ADbrPAA261AANuu0ADbr2AA26+AANuvoADbsDAA27BgANuwkADbsLAA27VAANu3gADbufAA27wwANu8YADbvIAA27ygANu8wADbvOAA270AANu9EADbvUAA277QANvA4ADbwQAA28EgANvBQADbwWAA28GAANvBoADbwcAA28HgANvD8ADbxCAA28RQANvEgADbxLAA28TgANvFEADbxUAA28VwANvFkADbzUAA281gANvNgADbzaAA283QANvN4ADbzfAA284AANvOEADbzjAA285QANvOYADbznAA286QANvOoADb1lAA29ZwANvWkADb1rAA29bgANvW8ADb1wAA29cQANvXIADb10AA29dgANvXcADb14AA29egANvXsADb32AA29+AANvfsADb39AA2+AAANvgEADb4CAA2+AwANvgQADb4GAA2+CAANvgkADb4KAA2+DAANvg0ADb4mAA2+JwANvigADb4qAA2+pQANvqcADb6pAA2+qwANvq4ADb6vAA2+sAANvrEADb6yAA2+tAANvrYADb63AA2+uAANvroADb67AA2/NgANvzgADb86AA2/PAANvz8ADb9AAA2/QQANv0IADb9DAA2/RQANv0cADb9IAA2/SQANv0sADb9MAA2/xwANv8kADb/LAA2/zQANv9AADb/RAA2/0gANv9MADb/UAA2/1gANv9gADb/ZAA2/2gANv9wADb/dAA3AWAANwFoADcBcAA3AXgANwGEADcBiAA3AYwANwGQADcBlAA3AZwANwGkADcBqAA3AawANwG0ADcBuAA3A6QANwOsADcDtAA3A7wANwPIADcDzAA3A9AANwPUADcD2AA3A+AANwPoADcD7AA3A/AANwP4ADcD/AA3BSAANwWwADcGTAA3BtwANwboADcG8AA3BvgANwcAADcHCAA3BxAANwcUADcHIAA3B4QANwf4ADcIAAA3CAgANwgQADcIGAA3CCAANwgoADcIMAA3CKQANwiwADcIvAA3CMgANwjUADcI4AA3COwANwj4ADcJAAA3CuwANwr0ADcK/AA3CwQANwsQADcLFAA3CxgANwscADcLIAA3CygANwswADcLNAA3CzgANwtAADcLRAA3DTAANw04ADcNQAA3DUgANw1UADcNWAA3DVwANw1gADcNZAA3DWwANw10ADcNeAA3DXwANw2EADcNiAA3D3QANw98ADcPhAA3D4wANw+YADcPnAA3D6AANw+kADcPqAA3D7AANw+4ADcPvAA3D8AANw/IADcPzAA3EbgANxHAADcRyAA3EdAANxHcADcR4AA3EeQANxHoADcR7AA3EfQANxH8ADcSAAA3EgQANxIMADcSEAA3E/wANxQEADcUDAA3FBQANxQgADcUJAA3FCgANxQsADcUMAA3FDgANxRAADcURAA3FEgANxRQADcUVAA3FkAANxZIADcWUAA3FlgANxZkADcWaAA3FmwANxZwADcWdAA3FnwANxaEADcWiAA3FowANxaUADcWmAA3GIQANxiMADcYlAA3GJwANxioADcYrAA3GLAANxi0ADcYuAA3GMAANxjIADcYzAA3GNAANxjYADcY3AA3GygANxu0ADccNAA3HLQANxy8ADccxAA3HMwANxzUADcc4AA3HOQANxzoADcc9AA3HPgANx0AADcdBAA3HQwANx0YADcdHAA3HSAANx0sADcdMAA3HUQANx2oADcdzAA3HdQANx3cADceAAA3HgwANx4YADceIAA3H0QANx/UADcgcAA3IQAANyEMADchFAA3IRwANyEkADchLAA3ITQANyE4ADchRAA3IagANyIsADciNAA3IjwANyJEADciTAA3IlQANyJcADciZAA3ImwANyLwADci/AA3IwgANyMUADcjIAA3IywANyM4ADcjRAA3I1AANyNYADclRAA3JUwANyVUADclXAA3JWgANyVsADclcAA3JXQANyV4ADclgAA3JYgANyWMADclkAA3JZgANyWcADcniAA3J5AANyeYADcnoAA3J6wANyewADcntAA3J7gANye8ADcnxAA3J8wANyfQADcn1AA3J9wANyfgADcpzAA3KdQANyngADcp6AA3KfQANyn4ADcp/AA3KgAANyoEADcqDAA3KhQANyoYADcqHAA3KiQANyooADcqjAA3KpAANyqUADcqnAA3LIgANyyQADcsmAA3LKAANyysADcssAA3LLQANyy4ADcsvAA3LMQANyzMADcs0AA3LNQANyzcADcs4AA3LswANy7UADcu3AA3LuQANy7wADcu9AA3LvgANy78ADcvAAA3LwgANy8QADcvFAA3LxgANy8gADcvJAA3MRAANzEYADcxIAA3MSgANzE0ADcxOAA3MTwANzFAADcxRAA3MUwANzFUADcxWAA3MVwANzFkADcxaAA3M1QANzNcADczZAA3M2wANzN4ADczfAA3M4AANzOEADcziAA3M5AANzOYADcznAA3M6AANzOoADczrAA3NZgANzWgADc1qAA3NbAANzW8ADc1wAA3NcQANzXIADc1zAA3NdQANzXcADc14AA3NeQANzXsADc18AA3NxQANzekADc4QAA3ONAANzjcADc45AA3OOwANzj0ADc4/AA3OQQANzkIADc5FAA3OXgANznsADc59AA3OfwANzoEADc6DAA3OhQANzocADc6JAA3OpgANzqkADc6sAA3OrwANzrIADc61AA3OuAANzrsADc69AA3POAANzzoADc88AA3PPgANz0EADc9CAA3PQwANz0QADc9FAA3PRwANz0kADc9KAA3PSwANz00ADc9OAA3PyQANz8sADc/NAA3PzwANz9IADc/TAA3P1AANz9UADc/WAA3P2AANz9oADc/bAA3P3AANz94ADc/fAA3QWgAN0FwADdBeAA3QYAAN0GMADdBkAA3QZQAN0GYADdBnAA3QaQAN0GsADdBsAA3QbQAN0G8ADdBwAA3Q6wAN0O0ADdDwAA3Q8gAN0PUADdD2AA3Q9wAN0PgADdD5AA3Q+wAN0P0ADdD+AA3Q/wAN0QEADdECAA3RfQAN0X8ADdGBAA3RgwAN0YYADdGHAA3RiAAN0YkADdGKAA3RjAAN0Y4ADdGPAA3RkAAN0ZIADdGTAA3SDgAN0hAADdISAA3SFAAN0hcADdIYAA3SGQAN0hoADdIbAA3SHQAN0h8ADdIgAA3SIQAN0iMADdIkAA3SnwAN0qEADdKjAA3SpQAN0qgADdKpAA3SqgAN0qsADdKsAA3SrgAN0rAADdKxAA3SsgAN0rQADdK1AA3TSAAN02sADdOLAA3TqwAN060ADdOvAA3TsQAN07MADdO2AA3TtwAN07gADdO7AA3TvAAN074ADdO/AA3TwQAN08QADdPFAA3TxgAN08kADdPKAA3T0wAN0+wADdP1AA3T9wAN0/kADdQCAA3UBQAN1AgADdQKAA3UUwAN1HcADdSeAA3UwgAN1MUADdTHAA3UyQAN1MsADdTNAA3UzwAN1NAADdTTAA3U7AAN1Q0ADdUPAA3VEQAN1RMADdUVAA3VFwAN1RkADdUbAA3VHQAN1T4ADdVBAA3VRAAN1UcADdVKAA3VTQAN1VAADdVTAA3VVgAN1VgADdXTAA3V1QAN1dcADdXZAA3V3AAN1d0ADdXeAA3V3wAN1eAADdXiAA3V5AAN1eUADdXmAA3V6AAN1ekADdZkAA3WZgAN1mgADdZqAA3WbQAN1m4ADdZvAA3WcAAN1nEADdZzAA3WdQAN1nYADdZ3AA3WeQAN1noADdb1AA3W9wAN1voADdb8AA3W/wAN1wAADdcBAA3XAgAN1wMADdcFAA3XBwAN1wgADdcJAA3XCwAN1wwADdclAA3XJgAN1ycADdcpAA3XpAAN16YADdeoAA3XqgAN160ADdeuAA3XrwAN17AADdexAA3XswAN17UADde2AA3XtwAN17kADde6AA3YNQAN2DcADdg5AA3YOwAN2D4ADdg/AA3YQAAN2EEADdhCAA3YRAAN2EYADdhHAA3YSAAN2EoADdhLAA3YxgAN2MgADdjKAA3YzAAN2M8ADdjQAA3Y0QAN2NIADdjTAA3Y1QAN2NcADdjYAA3Y2QAN2NsADdjcAA3ZVwAN2VkADdlbAA3ZXQAN2WAADdlhAA3ZYgAN2WMADdlkAA3ZZgAN2WgADdlpAA3ZagAN2WwADdltAA3Z6AAN2eoADdnsAA3Z7gAN2fEADdnyAA3Z8wAN2fQADdn1AA3Z9wAN2fkADdn6AA3Z+wAN2f0ADdn+AA3aRwAN2msADdqSAA3atgAN2rkADdq7AA3avQAN2r8ADdrBAA3awwAN2sQADdrHAA3a4AAN2v0ADdr/AA3bAQAN2wMADdsFAA3bBwAN2wkADdsLAA3bKAAN2ysADdsuAA3bMQAN2zQADds3AA3bOgAN2z0ADds/AA3bugAN27wADdu+AA3bwAAN28MADdvEAA3bxQAN28YADdvHAA3byQAN28sADdvMAA3bzQAN288ADdvQAA3cSwAN3E0ADdxPAA3cUQAN3FQADdxVAA3cVgAN3FcADdxYAA3cWgAN3FwADdxdAA3cXgAN3GAADdxhAA3c3AAN3N4ADdzgAA3c4gAN3OUADdzmAA3c5wAN3OgADdzpAA3c6wAN3O0ADdzuAA3c7wAN3PEADdzyAA3dbQAN3W8ADd1xAA3dcwAN3XYADd13AA3deAAN3XkADd16AA3dfAAN3X4ADd1/AA3dgAAN3YIADd2DAA3d/gAN3gAADd4CAA3eBAAN3gcADd4IAA3eCQAN3goADd4LAA3eDQAN3g8ADd4QAA3eEQAN3hMADd4UAA3ejwAN3pEADd6TAA3elQAN3pgADd6ZAA3emgAN3psADd6cAA3engAN3qAADd6hAA3eogAN3qQADd6lAA3fIAAN3yIADd8kAA3fJgAN3ykADd8qAA3fKwAN3ywADd8tAA3fLwAN3zEADd8yAA3fMwAN3zUADd82AA3fyQAN3+wADeAMAA3gLAAN4C4ADeAwAA3gMgAN4DQADeA3AA3gOAAN4DkADeA8AA3gPQAN4D8ADeBAAA3gQgAN4EUADeBGAA3gRwAN4EoADeBLAA3gUAAN4GkADeByAA3gdAAN4HYADeB/AA3gggAN4IUADeCHAA3g0AAN4PQADeEbAA3hPwAN4UIADeFEAA3hRgAN4UgADeFKAA3hTAAN4U0ADeFQAA3haQAN4YoADeGMAA3hjgAN4ZAADeGSAA3hlAAN4ZYADeGYAA3hmgAN4bsADeG+AA3hwQAN4cQADeHHAA3hygAN4c0ADeHQAA3h0wAN4dUADeJQAA3iUgAN4lQADeJWAA3iWQAN4loADeJbAA3iXAAN4l0ADeJfAA3iYQAN4mIADeJjAA3iZQAN4mYADeLhAA3i4wAN4uUADeLnAA3i6gAN4usADeLsAA3i7QAN4u4ADeLwAA3i8gAN4vMADeL0AA3i9gAN4vcADeNyAA3jdAAN43cADeN5AA3jfAAN430ADeN+AA3jfwAN44AADeOCAA3jhAAN44UADeOGAA3jiAAN44kADeOiAA3jowAN46QADeOmAA3kIQAN5CMADeQlAA3kJwAN5CoADeQrAA3kLAAN5C0ADeQuAA3kMAAN5DIADeQzAA3kNAAN5DYADeQ3AA3ksgAN5LQADeS2AA3kuAAN5LsADeS8AA3kvQAN5L4ADeS/AA3kwQAN5MMADeTEAA3kxQAN5McADeTIAA3lQwAN5UUADeVHAA3lSQAN5UwADeVNAA3lTgAN5U8ADeVQAA3lUgAN5VQADeVVAA3lVgAN5VgADeVZAA3l1AAN5dYADeXYAA3l2gAN5d0ADeXeAA3l3wAN5eAADeXhAA3l4wAN5eUADeXmAA3l5wAN5ekADeXqAA3mZQAN5mcADeZpAA3mawAN5m4ADeZvAA3mcAAN5nEADeZyAA3mdAAN5nYADeZ3AA3meAAN5noADeZ7AA3mxAAN5ugADecPAA3nMwAN5zYADec4AA3nOgAN5zwADec+AA3nQAAN50EADedEAA3nXQAN53oADed8AA3nfgAN54AADeeCAA3nhAAN54YADeeIAA3npQAN56gADeerAA3nrgAN57EADee0AA3ntwAN57oADee8AA3oNwAN6DkADeg7AA3oPQAN6EAADehBAA3oQgAN6EMADehEAA3oRgAN6EgADehJAA3oSgAN6EwADehNAA3oyAAN6MoADejMAA3ozgAN6NEADejSAA3o0wAN6NQADejVAA3o1wAN6NkADejaAA3o2wAN6N0ADejeAA3pWQAN6VsADeldAA3pXwAN6WIADeljAA3pZAAN6WUADelmAA3paAAN6WoADelrAA3pbAAN6W4ADelvAA3p6gAN6ewADenuAA3p8AAN6fMADen0AA3p9QAN6fYADen3AA3p+QAN6fsADen8AA3p/QAN6f8ADeoAAA3qewAN6n0ADep/AA3qgQAN6oQADeqFAA3qhgAN6ocADeqIAA3qigAN6owADeqNAA3qjgAN6pAADeqRAA3rDAAN6w4ADesQAA3rEgAN6xUADesWAA3rFwAN6xgADesZAA3rGwAN6x0ADeseAA3rHwAN6yEADesiAA3rnQAN658ADeuhAA3rowAN66YADeunAA3rqAAN66kADeuqAA3rrAAN664ADeuvAA3rsAAN67IADeuzAA3sRgAN7GkADeyJAA3sqQAN7KsADeytAA3srwAN7LEADey0AA3stQAN7LYADey5AA3sugAN7LwADey9AA3svwAN7MIADezDAA3sxAAN7McADezIAA3szQAN7OYADezvAA3s8QAN7PMADez8AA3s/wAN7QIADe0EAA3tTQAN7XEADe2YAA3tvAAN7b8ADe3BAA3twwAN7cUADe3HAA3tyQAN7coADe3NAA3t5gAN7gcADe4JAA3uCwAN7g0ADe4PAA3uEQAN7hMADe4VAA3uFwAN7jgADe47AA3uPgAN7kEADe5EAA3uRwAN7koADe5NAA3uUAAN7lIADe7NAA3uzwAN7tEADe7TAA3u1gAN7tcADe7YAA3u2QAN7toADe7cAA3u3gAN7t8ADe7gAA3u4gAN7uMADe9eAA3vYAAN72IADe9kAA3vZwAN72gADe9pAA3vagAN72sADe9tAA3vbwAN73AADe9xAA3vcwAN73QADe/vAA3v8QAN7/QADe/2AA3v+QAN7/oADe/7AA3v/AAN7/0ADe//AA3wAQAN8AIADfADAA3wBQAN8AYADfAfAA3wIAAN8CEADfAjAA3wngAN8KAADfCiAA3wpAAN8KcADfCoAA3wqQAN8KoADfCrAA3wrQAN8K8ADfCwAA3wsQAN8LMADfC0AA3xLwAN8TEADfEzAA3xNQAN8TgADfE5AA3xOgAN8TsADfE8AA3xPgAN8UAADfFBAA3xQgAN8UQADfFFAA3xwAAN8cIADfHEAA3xxgAN8ckADfHKAA3xywAN8cwADfHNAA3xzwAN8dEADfHSAA3x0wAN8dUADfHWAA3yUQAN8lMADfJVAA3yVwAN8loADfJbAA3yXAAN8l0ADfJeAA3yYAAN8mIADfJjAA3yZAAN8mYADfJnAA3y4gAN8uQADfLmAA3y6AAN8usADfLsAA3y7QAN8u4ADfLvAA3y8QAN8vMADfL0AA3y9QAN8vcADfL4AA3zQQAN82UADfOMAA3zsAAN87MADfO1AA3ztwAN87kADfO7AA3zvQAN874ADfPBAA3z2gAN8/cADfP5AA3z+wAN8/0ADfP/AA30AQAN9AMADfQFAA30IgAN9CUADfQoAA30KwAN9C4ADfQxAA30NAAN9DcADfQ5AA30tAAN9LYADfS4AA30ugAN9L0ADfS+AA30vwAN9MAADfTBAA30wwAN9MUADfTGAA30xwAN9MkADfTKAA31RQAN9UcADfVJAA31SwAN9U4ADfVPAA31UAAN9VEADfVSAA31VAAN9VYADfVXAA31WAAN9VoADfVbAA311gAN9dgADfXaAA313AAN9d8ADfXgAA314QAN9eIADfXjAA315QAN9ecADfXoAA316QAN9esADfXsAA32ZwAN9mkADfZrAA32bQAN9nAADfZxAA32cgAN9nMADfZ0AA32dgAN9ngADfZ5AA32egAN9nwADfZ9AA32+AAN9voADfb8AA32/gAN9wEADfcCAA33AwAN9wQADfcFAA33BwAN9wkADfcKAA33CwAN9w0ADfcOAA33iQAN94sADfeNAA33jwAN95IADfeTAA33lAAN95UADfeWAA33mAAN95oADfebAA33nAAN954ADfefAA34GgAN+BwADfgeAA34IAAN+CMADfgkAA34JQAN+CYADfgnAA34KQAN+CsADfgsAA34LQAN+C8ADfgwAA34wwAN+OYADfkGAA35JgAN+SgADfkqAA35LAAN+S4ADfkxAA35MgAN+TMADfk2AA35NwAN+TkADfk6AA35PAAN+T8ADflAAA35QQAN+UQADflFAA35SgAN+WMADflsAA35bgAN+XAADfl5AA35fAAN+X8ADfmBAA35ygAN+e4ADfoVAA36OQAN+jwADfo+AA36QAAN+kIADfpEAA36RgAN+kcADfpKAA36YwAN+oQADfqGAA36iAAN+ooADfqMAA36jgAN+pAADfqSAA36lAAN+rUADfq4AA36uwAN+r4ADfrBAA36xAAN+scADfrKAA36zQAN+s8ADftKAA37TAAN+04ADftQAA37UwAN+1QADftVAA37VgAN+1cADftZAA37WwAN+1wADftdAA37XwAN+2AADfvbAA373QAN+98ADfvhAA375AAN++UADfvmAA375wAN++gADfvqAA377AAN++0ADfvuAA378AAN+/EADfxsAA38bgAN/HEADfxzAA38dgAN/HcADfx4AA38eQAN/HoADfx8AA38fgAN/H8ADfyAAA38ggAN/IMADfycAA38nQAN/J4ADfygAA39GwAN/R0ADf0fAA39IQAN/SQADf0lAA39JgAN/ScADf0oAA39KgAN/SwADf0tAA39LgAN/TAADf0xAA39rAAN/a4ADf2wAA39sgAN/bUADf22AA39twAN/bgADf25AA39uwAN/b0ADf2+AA39vwAN/cEADf3CAA3+PQAN/j8ADf5BAA3+QwAN/kYADf5HAA3+SAAN/kkADf5KAA3+TAAN/k4ADf5PAA3+UAAN/lIADf5TAA3+zgAN/tAADf7SAA3+1AAN/tcADf7YAA3+2QAN/toADf7bAA3+3QAN/t8ADf7gAA3+4QAN/uMADf7kAA3/XwAN/2EADf9jAA3/ZQAN/2gADf9pAA3/agAN/2sADf9sAA3/bgAN/3AADf9xAA3/cgAN/3QADf91AA3/vgAN/+IADgAJAA4ALQAOADAADgAyAA4ANAAOADYADgA4AA4AOgAOADsADgA+AA4AVwAOAHQADgB2AA4AeAAOAHoADgB8AA4AfgAOAIAADgCCAA4AnwAOAKIADgClAA4AqAAOAKsADgCuAA4AsQAOALQADgC2AA4BMQAOATMADgE1AA4BNwAOAToADgE7AA4BPAAOAT0ADgE+AA4BQAAOAUIADgFDAA4BRAAOAUYADgFHAA4BwgAOAcQADgHGAA4ByAAOAcsADgHMAA4BzQAOAc4ADgHPAA4B0QAOAdMADgHUAA4B1QAOAdcADgHYAA4CUwAOAlUADgJXAA4CWQAOAlwADgJdAA4CXgAOAl8ADgJgAA4CYgAOAmQADgJlAA4CZgAOAmgADgJpAA4C5AAOAuYADgLpAA4C6wAOAu4ADgLvAA4C8AAOAvEADgLyAA4C9AAOAvYADgL3AA4C+AAOAvoADgL7AA4DdgAOA3gADgN6AA4DfAAOA38ADgOAAA4DgQAOA4IADgODAA4DhQAOA4cADgOIAA4DiQAOA4sADgOMAA4EBwAOBAkADgQLAA4EDQAOBBAADgQRAA4EEgAOBBMADgQUAA4EFgAOBBgADgQZAA4EGgAOBBwADgQdAA4EmAAOBJoADgScAA4EngAOBKEADgSiAA4EowAOBKQADgSlAA4EpwAOBKkADgSqAA4EqwAOBK0ADgSuAA4FQQAOBWQADgWEAA4FpAAOBaYADgWoAA4FqgAOBawADgWvAA4FsAAOBbEADgW0AA4FtQAOBbcADgW4AA4FuwAOBb4ADgW/AA4FwAAOBcMADgXEAA4FyQAOBeIADgXrAA4F7QAOBfAADgX5AA4F/AAOBf8ADgYBAA4GSgAOBm4ADgaVAA4GuQAOBrwADga+AA4GwAAOBsIADgbEAA4GxgAOBscADgbKAA4G4wAOBwQADgcGAA4HCAAOBwoADgcMAA4HDgAOBxAADgcSAA4HFAAOBzUADgc4AA4HOwAOBz4ADgdBAA4HRAAOB0cADgdKAA4HTQAOB08ADgfKAA4HzAAOB84ADgfQAA4H0wAOB9QADgfVAA4H1gAOB9cADgfZAA4H2wAOB9wADgfdAA4H3wAOB+AADghbAA4IXQAOCF8ADghhAA4IZAAOCGUADghmAA4IZwAOCGgADghqAA4IbAAOCG0ADghuAA4IcAAOCHEADgjsAA4I7gAOCPEADgjzAA4I9gAOCPcADgj4AA4I+QAOCPoADgj8AA4I/gAOCP8ADgkAAA4JAgAOCQMADgkcAA4JHQAOCR4ADgkgAA4JmwAOCZ0ADgmfAA4JoQAOCaQADgmlAA4JpgAOCacADgmoAA4JqgAOCawADgmtAA4JrgAOCbAADgmxAA4KLAAOCi4ADgowAA4KMgAOCjUADgo2AA4KNwAOCjgADgo5AA4KOwAOCj0ADgo+AA4KPwAOCkEADgpCAA4KvQAOCr8ADgrBAA4KwwAOCsYADgrHAA4KyAAOCskADgrKAA4KzAAOCs4ADgrPAA4K0AAOCtIADgrTAA4LTgAOC1AADgtSAA4LVAAOC1cADgtYAA4LWQAOC1oADgtbAA4LXQAOC18ADgtgAA4LYQAOC2MADgtkAA4L3wAOC+EADgvjAA4L5QAOC+gADgvpAA4L6gAOC+sADgvsAA4L7gAOC/AADgvxAA4L8gAOC/QADgv1AA4MPgAODGIADgyJAA4MrQAODLAADgyzAA4MtQAODLcADgy5AA4MuwAODLwADgy/AA4M2AAODPUADgz4AA4M+wAODP4ADg0BAA4NBAAODQcADg0KAA4NJwAODSoADg0tAA4NMAAODTMADg02AA4NOQAODTwADg0+AA4NuQAODbsADg2+AA4NwAAODcMADg3EAA4NxQAODcYADg3HAA4NyQAODcwADg3NAA4NzgAODdAADg3RAA4OTAAODk4ADg5RAA4OUwAODlYADg5XAA4OWAAODlkADg5aAA4OXAAODl8ADg5gAA4OYQAODmMADg5kAA4O3wAODuEADg7kAA4O5gAODukADg7qAA4O6wAODuwADg7tAA4O7wAODvIADg7zAA4O9AAODvYADg73AA4PcgAOD3QADg93AA4PeQAOD3wADg99AA4PfgAOD38ADg+AAA4PggAOD4UADg+GAA4PhwAOD4kADg+KAA4QDQAOEDEADhBVAA4QeAAOEJ8ADhC/AA4Q5gAOEQ0ADhEtAA4RUQAOEXUADhF3AA4RegAOEXwADhF+AA4RgAAOEYMADhGGAA4RiAAOEYoADhGNAA4RjwAOEZEADhGUAA4RlwAOEZgADhGdAA4RtgAOEbsADhG9AA4RwgAOEcUADhHHAA4SEAAOEjQADhJbAA4SfwAOEoIADhKEAA4ShgAOEogADhKKAA4SjAAOEo0ADhKQAA4SqQAOEs4ADhLQAA4S0gAOEtQADhLWAA4S2AAOEtoADhLcAA4S3gAOEuAADhMFAA4TCAAOEwsADhMOAA4TEQAOExQADhMXAA4TGgAOEx0ADhMgAA4TIgAOE50ADhOfAA4TogAOE6QADhOnAA4TqAAOE6kADhOqAA4TqwAOE60ADhOvAA4TsAAOE7EADhOzAA4TtAAOE8UADhPGAA4TyAAOFEMADhRFAA4URwAOFEkADhRMAA4UTQAOFE4ADhRPAA4UUAAOFFIADhRUAA4UVQAOFFYADhRYAA4UWQAOFNQADhTWAA4U2QAOFNsADhTeAA4U3wAOFOAADhThAA4U4gAOFOQADhTmAA4U5wAOFOgADhTqAA4U6wAOFPwADhUBAA4VBAAOFQYADhUXAA4VJAAOFScADhUqAA4VLQAOFS8ADhVLAA4VXQAOFXAADhXrAA4V7QAOFe8ADhXxAA4V9AAOFfUADhX2AA4V9wAOFfgADhX6AA4V/AAOFf0ADhX+AA4WAAAOFgEADhZ8AA4WfgAOFoEADhaDAA4WhgAOFocADhaIAA4WiQAOFooADhaMAA4WjgAOFo8ADhaQAA4WkgAOFpMADhakAA4WpQAOFqcADhciAA4XJAAOFyYADhcoAA4XKwAOFywADhctAA4XLgAOFy8ADhcxAA4XMwAOFzQADhc1AA4XNwAOFzgADhezAA4XtQAOF7gADhe6AA4XvQAOF74ADhe/AA4XwAAOF8EADhfDAA4XxQAOF8YADhfHAA4XyQAOF8oADhfjAA4X5AAOF+UADhfnAA4YYgAOGGQADhhmAA4YaAAOGGsADhhsAA4YbQAOGG4ADhhvAA4YcQAOGHMADhh0AA4YdQAOGHcADhh4AA4Y8wAOGPUADhj4AA4Y+gAOGP0ADhj+AA4Y/wAOGQAADhkBAA4ZAwAOGQUADhkGAA4ZBwAOGQkADhkKAA4ZHQAOGTYADhljAA4ZZgAOGWkADhlsAA4ZbwAOGXIADhl1AA4ZeAAOGXsADhl+AA4ZgQAOGYQADhmxAA4ZtAAOGbcADhm6AA4ZvQAOGcAADhnDAA4ZxgAOGckADhnMAA4ZzwAOGdIADhnUAA4Z8AAOGgMADhoVAA4aJwAOGi8ADhpTAA4abwAOGoIADhsVAA4bOAAOG1gADht4AA4begAOG3wADht+AA4bgAAOG4MADhuEAA4bhQAOG4gADhuJAA4biwAOG4wADhuOAA4bkQAOG5IADhuTAA4blgAOG5cADhucAA4btQAOG74ADhvAAA4bwgAOG8sADhvOAA4b0QAOG9MADhwcAA4cQAAOHGcADhyLAA4cjgAOHJAADhySAA4clAAOHJYADhyYAA4cmQAOHJwADhy1AA4c1gAOHNgADhzaAA4c3AAOHN4ADhzgAA4c4gAOHOQADhzmAA4dBwAOHQoADh0NAA4dEAAOHRMADh0WAA4dGQAOHRwADh0fAA4dIQAOHZwADh2eAA4doAAOHaIADh2lAA4dpgAOHacADh2oAA4dqQAOHasADh2tAA4drgAOHa8ADh2xAA4dsgAOHi0ADh4vAA4eMQAOHjMADh42AA4eNwAOHjgADh45AA4eOgAOHjwADh4+AA4ePwAOHkAADh5CAA4eQwAOHr4ADh7AAA4ewwAOHsUADh7IAA4eyQAOHsoADh7LAA4ezAAOHs4ADh7QAA4e0QAOHtIADh7UAA4e1QAOHu4ADh7vAA4e8AAOHvIADh9tAA4fbwAOH3EADh9zAA4fdgAOH3cADh94AA4feQAOH3oADh98AA4ffgAOH38ADh+AAA4fggAOH4MADh/+AA4gAAAOIAIADiAEAA4gBwAOIAgADiAJAA4gCgAOIAsADiANAA4gDwAOIBAADiARAA4gEwAOIBQADiCPAA4gkQAOIJMADiCVAA4gmAAOIJkADiCaAA4gmwAOIJwADiCeAA4goAAOIKEADiCiAA4gpAAOIKUADiEgAA4hIgAOISQADiEmAA4hKQAOISoADiErAA4hLAAOIS0ADiEvAA4hMQAOITIADiEzAA4hNQAOITYADiGxAA4hswAOIbUADiG3AA4hugAOIbsADiG8AA4hvQAOIb4ADiHAAA4hwgAOIcMADiHEAA4hxgAOIccADiIQAA4iNAAOIlsADiJ/AA4iggAOIoQADiKGAA4iiAAOIooADiKMAA4ijQAOIpAADiKpAA4ixgAOIsgADiLKAA4izAAOIs4ADiLQAA4i0gAOItQADiLxAA4i9AAOIvcADiL6AA4i/QAOIwAADiMDAA4jBgAOIwgADiODAA4jhQAOI4gADiOKAA4jjQAOI44ADiOPAA4jkAAOI5EADiOTAA4jlQAOI5YADiOXAA4jmQAOI5oADiQVAA4kFwAOJBkADiQbAA4kHgAOJB8ADiQgAA4kIQAOJCIADiQkAA4kJgAOJCcADiQoAA4kKgAOJCsADiSmAA4kqAAOJKoADiSsAA4krwAOJLAADiSxAA4ksgAOJLMADiS1AA4ktwAOJLgADiS5AA4kuwAOJLwADiU3AA4lOQAOJTwADiU+AA4lQQAOJUIADiVDAA4lRAAOJUUADiVHAA4lSQAOJUoADiVLAA4lTQAOJU4ADiXJAA4lywAOJc0ADiXPAA4l0gAOJdMADiXUAA4l1QAOJdYADiXYAA4l2gAOJdsADiXcAA4l3gAOJd8ADiZaAA4mXAAOJl4ADiZgAA4mYwAOJmQADiZlAA4mZgAOJmcADiZpAA4mawAOJmwADiZtAA4mbwAOJnAADibrAA4m7QAOJu8ADibxAA4m9AAOJvUADib2AA4m9wAOJvgADib6AA4m/AAOJv0ADib+AA4nAAAOJwEADieUAA4ntwAOJ9cADif3AA4n+QAOJ/sADif9AA4n/wAOKAIADigDAA4oBAAOKAcADigIAA4oCgAOKAsADigNAA4oEAAOKBEADigSAA4oFQAOKBYADigbAA4oNAAOKD0ADig/AA4oQQAOKEoADihNAA4oUAAOKFIADiibAA4ovwAOKOYADikKAA4pDQAOKQ8ADikRAA4pEwAOKRUADikXAA4pGAAOKRsADik0AA4pVQAOKVcADilZAA4pWwAOKV0ADilfAA4pYQAOKWMADillAA4phgAOKYkADimMAA4pjwAOKZIADimVAA4pmAAOKZsADimeAA4poAAOKhsADiodAA4qHwAOKiEADiokAA4qJQAOKiYADionAA4qKAAOKioADiosAA4qLQAOKi4ADiowAA4qMQAOKqwADiquAA4qsAAOKrIADiq1AA4qtgAOKrcADiq4AA4quQAOKrsADiq9AA4qvgAOKr8ADirBAA4qwgAOKz0ADis/AA4rQgAOK0QADitHAA4rSAAOK0kADitKAA4rSwAOK00ADitPAA4rUAAOK1EADitTAA4rVAAOK20ADituAA4rbwAOK3EADivsAA4r7gAOK/AADivyAA4r9QAOK/YADiv3AA4r+AAOK/kADiv7AA4r/QAOK/4ADiv/AA4sAQAOLAIADix9AA4sfwAOLIEADiyDAA4shgAOLIcADiyIAA4siQAOLIoADiyMAA4sjgAOLI8ADiyQAA4skgAOLJMADi0OAA4tEAAOLRIADi0UAA4tFwAOLRgADi0ZAA4tGgAOLRsADi0dAA4tHwAOLSAADi0hAA4tIwAOLSQADi2fAA4toQAOLaMADi2lAA4tqAAOLakADi2qAA4tqwAOLawADi2uAA4tsAAOLbEADi2yAA4ttAAOLbUADi4wAA4uMgAOLjQADi42AA4uOQAOLjoADi47AA4uPAAOLj0ADi4/AA4uQQAOLkIADi5DAA4uRQAOLkYADi6PAA4uswAOLtoADi7+AA4vAQAOLwMADi8FAA4vBwAOLwkADi8LAA4vDAAOLw8ADi8oAA4vRQAOL0cADi9JAA4vSwAOL00ADi9PAA4vUQAOL1MADi9wAA4vcwAOL3YADi95AA4vfAAOL38ADi+CAA4vhQAOL4cADjACAA4wBAAOMAYADjAIAA4wCwAOMAwADjANAA4wDgAOMA8ADjARAA4wEwAOMBQADjAVAA4wFwAOMBgADjCTAA4wlQAOMJcADjCZAA4wnAAOMJ0ADjCeAA4wnwAOMKAADjCiAA4wpAAOMKUADjCmAA4wqAAOMKkADjEkAA4xJgAOMSgADjEqAA4xLQAOMS4ADjEvAA4xMAAOMTEADjEzAA4xNQAOMTYADjE3AA4xOQAOMToADjG1AA4xtwAOMbkADjG7AA4xvgAOMb8ADjHAAA4xwQAOMcIADjHEAA4xxgAOMccADjHIAA4xygAOMcsADjJGAA4ySAAOMkoADjJMAA4yTwAOMlAADjJRAA4yUgAOMlMADjJVAA4yVwAOMlgADjJZAA4yWwAOMlwADjLXAA4y2QAOMtsADjLdAA4y4AAOMuEADjLiAA4y4wAOMuQADjLmAA4y6AAOMukADjLqAA4y7AAOMu0ADjNoAA4zagAOM2wADjNuAA4zcQAOM3IADjNzAA4zdAAOM3UADjN3AA4zeQAOM3oADjN7AA4zfQAOM34ADjQRAA40NAAONFQADjR0AA40dgAONHgADjR6AA40fAAONH8ADjSAAA40gQAONIQADjSFAA40hwAONIgADjSKAA40jQAONI4ADjSPAA40kgAONJMADjSYAA40sQAONLoADjS8AA40vgAONMcADjTKAA40zQAONM8ADjUYAA41PAAONWMADjWHAA41igAONYwADjWOAA41kAAONZIADjWUAA41lQAONZgADjWxAA410gAONdQADjXWAA412AAONdoADjXcAA413gAONeAADjXiAA42AwAONgYADjYJAA42DAAONg8ADjYSAA42FQAONhgADjYbAA42HQAONpgADjaaAA42nAAONp4ADjahAA42ogAONqMADjakAA42pQAONqcADjapAA42qgAONqsADjatAA42rgAONykADjcrAA43LQAONy8ADjcyAA43MwAONzQADjc1AA43NgAONzgADjc6AA43OwAONzwADjc+AA43PwAON7oADje8AA43vwAON8EADjfEAA43xQAON8YADjfHAA43yAAON8oADjfMAA43zQAON84ADjfQAA430QAON+oADjfrAA437AAON+4ADjhpAA44awAOOG0ADjhvAA44cgAOOHMADjh0AA44dQAOOHYADjh4AA44egAOOHsADjh8AA44fgAOOH8ADjj6AA44/AAOOP4ADjkAAA45AwAOOQQADjkFAA45BgAOOQcADjkJAA45CwAOOQwADjkNAA45DwAOORAADjmLAA45jQAOOY8ADjmRAA45lAAOOZUADjmWAA45lwAOOZgADjmaAA45nAAOOZ0ADjmeAA45oAAOOaEADjocAA46HgAOOiAADjoiAA46JQAOOiYADjonAA46KAAOOikADjorAA46LQAOOi4ADjovAA46MQAOOjIADjqtAA46rwAOOrEADjqzAA46tgAOOrcADjq4AA46uQAOOroADjq8AA46vgAOOr8ADjrAAA46wgAOOsMADjsMAA47MAAOO1cADjt7AA47fgAOO4AADjuCAA47hAAOO4YADjuIAA47iQAOO4wADjulAA47wgAOO8QADjvGAA47yAAOO8oADjvMAA47zgAOO9AADjvtAA478AAOO/MADjv2AA47+QAOO/wADjv/AA48AgAOPAQADjx/AA48gQAOPIMADjyFAA48iAAOPIkADjyKAA48iwAOPIwADjyOAA48kAAOPJEADjySAA48lAAOPJUADj0QAA49EgAOPRQADj0WAA49GQAOPRoADj0bAA49HAAOPR0ADj0fAA49IQAOPSIADj0jAA49JQAOPSYADj2hAA49owAOPaUADj2nAA49qgAOPasADj2sAA49rQAOPa4ADj2wAA49sgAOPbMADj20AA49tgAOPbcADj4yAA4+NAAOPjcADj45AA4+PAAOPj0ADj4+AA4+PwAOPkAADj5CAA4+RAAOPkUADj5GAA4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QRgAOUEcADlBIAA5QSQAOUEsADlBNAA5QTgAOUE8ADlBRAA5QUgAOUM0ADlDPAA5Q0gAOUNQADlDXAA5Q2AAOUNkADlDaAA5Q2wAOUN0ADlDfAA5Q4AAOUOEADlDjAA5Q5AAOUP0ADlD+AA5Q/wAOUQEADlF8AA5RfgAOUYAADlGCAA5RhQAOUYYADlGHAA5RiAAOUYkADlGLAA5RjQAOUY4ADlGPAA5RkQAOUZIADlINAA5SDwAOUhEADlITAA5SFgAOUhcADlIYAA5SGQAOUhoADlIcAA5SHgAOUh8ADlIgAA5SIgAOUiMADlKeAA5SoAAOUqIADlKkAA5SpwAOUqgADlKpAA5SqgAOUqsADlKtAA5SrwAOUrAADlKxAA5SswAOUrQADlMvAA5TMQAOUzMADlM1AA5TOAAOUzkADlM6AA5TOwAOUzwADlM+AA5TQAAOU0EADlNCAA5TRAAOU0UADlPAAA5TwgAOU8QADlPGAA5TyQAOU8oADlPLAA5TzAAOU80ADlPPAA5T0QAOU9IADlPTAA5T1QAOU9YADlQfAA5UQwAOVGoADlSOAA5UkQAOVJQADlSWAA5UmAAOVJoADlScAA5UnQAOVKAADlS5AA5U1gAOVNkADlTcAA5U3wAOVOIADlTlAA5U6AAOVOsADlUIAA5VCwAOVQ4ADlURAA5VFAAOVRcADlUaAA5VHQAOVR8ADlWaAA5VnAAOVZ8ADlWhAA5VpAAOVaUADlWmAA5VpwAOVagADlWqAA5VrQAOVa4ADlWvAA5VsQAOVbIADlYtAA5WLwAOVjIADlY0AA5WNwAOVjgADlY5AA5WOgAOVjsADlY9AA5WQAAOVkEADlZCAA5WRAAOVkUADlbAAA5WwgAOVsUADlbHAA5WygAOVssADlbMAA5WzQAOVs4ADlbQAA5W0wAOVtQADlbVAA5W1wAOVtgADldTAA5XVQAOV1gADldaAA5XXQAOV14ADldfAA5XYAAOV2EADldjAA5XZgAOV2cADldoAA5XagAOV2sADlfuAA5YEgAOWDYADlhZAA5YgAAOWKAADljHAA5Y7gAOWQ4ADlkyAA5ZVgAOWVgADllbAA5ZXQAOWV8ADllhAA5ZZAAOWWcADllpAA5ZawAOWW4ADllwAA5ZcgAOWXUADll4AA5ZeQAOWX4ADlmXAA5ZnAAOWZ4ADlmjAA5ZpgAOWagADlnxAA5aFQAOWjwADlpgAA5aYwAOWmUADlpnAA5aaQAOWmsADlptAA5abgAOWnEADlqKAA5arwAOWrEADlqzAA5atQAOWrcADlq5AA5auwAOWr0ADlq/AA5awQAOWuYADlrpAA5a7AAOWu8ADlryAA5a9QAOWvgADlr7AA5a/gAOWwEADlsDAA5bfgAOW4AADluDAA5bhQAOW4gADluJAA5bigAOW4sADluMAA5bjgAOW5AADluRAA5bkgAOW5QADluVAA5bpgAOW6cADlupAA5cJAAOXCYADlwoAA5cKgAOXC0ADlwuAA5cLwAOXDAADlwxAA5cMwAOXDUADlw2AA5cNwAOXDkADlw6AA5ctQAOXLcADly6AA5cvAAOXL8ADlzAAA5cwQAOXMIADlzDAA5cxQAOXMcADlzIAA5cyQAOXMsADlzMAA5c3QAOXOIADlzlAA5c5wAOXPgADlz9AA5dAAAOXQIADl0QAA5diwAOXY0ADl2PAA5dkQAOXZQADl2VAA5dlgAOXZcADl2YAA5dmgAOXZwADl2dAA5dngAOXaAADl2hAA5eHAAOXh4ADl4hAA5eIwAOXiYADl4nAA5eKAAOXikADl4qAA5eLAAOXi4ADl4vAA5eMAAOXjIADl4zAA5eRAAOXkUADl5HAA5ewgAOXsQADl7GAA5eyAAOXssADl7MAA5ezQAOXs4ADl7PAA5e0QAOXtMADl7UAA5e1QAOXtcADl7YAA5fUwAOX1UADl9YAA5fWgAOX10ADl9eAA5fXwAOX2AADl9hAA5fYwAOX2UADl9mAA5fZwAOX2kADl9qAA5fgwAOX4QADl+FAA5fhwAOYAIADmAEAA5gBgAOYAgADmALAA5gDAAOYA0ADmAOAA5gDwAOYBEADmATAA5gFAAOYBUADmAXAA5gGAAOYJMADmCVAA5gmAAOYJoADmCdAA5gngAOYJ8ADmCgAA5goQAOYKMADmClAA5gpgAOYKcADmCpAA5gqgAOYMQADmDdAA5g7gAOYPEADmD0AA5g9wAOYPoADmELAA5hDgAOYREADmEUAA5hFwAOYRkADmEkAA5hMgAOYcUADmHoAA5iCAAOYigADmIqAA5iLAAOYi4ADmIwAA5iMwAOYjQADmI1AA5iOAAOYjkADmI7AA5iPAAOYj8ADmJCAA5iQwAOYkQADmJHAA5iSAAOYk0ADmJmAA5ibwAOYnEADmJ0AA5ifQAOYoAADmKDAA5ihQAOYs4ADmLyAA5jGQAOYz0ADmNAAA5jQgAOY0QADmNGAA5jSAAOY0oADmNLAA5jTgAOY2cADmOIAA5jigAOY4wADmOOAA5jkAAOY5IADmOUAA5jlgAOY5gADmO5AA5jvAAOY78ADmPCAA5jxQAOY8gADmPLAA5jzgAOY9EADmPTAA5kTgAOZFAADmRSAA5kVAAOZFcADmRYAA5kWQAOZFoADmRbAA5kXQAOZF8ADmRgAA5kYQAOZGMADmRkAA5k3wAOZOEADmTjAA5k5QAOZOgADmTpAA5k6gAOZOsADmTsAA5k7gAOZPAADmTxAA5k8gAOZPQADmT1AA5lcAAOZXIADmV1AA5ldwAOZXoADmV7AA5lfAAOZX0ADmV+AA5lgAAOZYIADmWDAA5lhAAOZYYADmWHAA5loAAOZaEADmWiAA5lpAAOZh8ADmYhAA5mIwAOZiUADmYoAA5mKQAOZioADmYrAA5mLAAOZi4ADmYwAA5mMQAOZjIADmY0AA5mNQAOZrAADmayAA5mtAAOZrYADma5AA5mugAOZrsADma8AA5mvQAOZr8ADmbBAA5mwgAOZsMADmbFAA5mxgAOZ0EADmdDAA5nRQAOZ0cADmdKAA5nSwAOZ0wADmdNAA5nTgAOZ1AADmdSAA5nUwAOZ1QADmdWAA5nVwAOZ9IADmfUAA5n1gAOZ9gADmfbAA5n3AAOZ90ADmfeAA5n3wAOZ+EADmfjAA5n5AAOZ+UADmfnAA5n6AAOaGMADmhlAA5oZwAOaGkADmhsAA5obQAOaG4ADmhvAA5ocAAOaHIADmh0AA5odQAOaHYADmh4AA5oeQAOaMIADmjmAA5pDQAOaTEADmk0AA5pNwAOaTkADmk7AA5pPQAOaT8ADmlAAA5pQwAOaVwADml5AA5pfAAOaX8ADmmCAA5phQAOaYgADmmLAA5pjgAOaasADmmuAA5psQAOabQADmm3AA5pugAOab0ADmnAAA5pwgAOaj0ADmo/AA5qQgAOakQADmpHAA5qSAAOakkADmpKAA5qSwAOak0ADmpQAA5qUQAOalIADmpUAA5qVQAOatAADmrSAA5q1QAOatcADmraAA5q2wAOatwADmrdAA5q3gAOauAADmrjAA5q5AAOauUADmrnAA5q6AAOa2MADmtlAA5raAAOa2oADmttAA5rbgAOa28ADmtwAA5rcQAOa3MADmt2AA5rdwAOa3gADmt6AA5rewAOa/YADmv4AA5r+wAOa/0ADmwAAA5sAQAObAIADmwDAA5sBAAObAYADmwJAA5sCgAObAsADmwNAA5sDgAObIkADmyLAA5sjQAObI8ADmySAA5skwAObJQADmyVAA5slgAObJgADmybAA5snAAObJ0ADmyfAA5soAAObRsADm0dAA5tHwAObSEADm0kAA5tJQAObSYADm0nAA5tKAAObSoADm0tAA5tLgAObS8ADm0xAA5tMgAOba0ADm2vAA5tsgAObbQADm23AA5tuAAObbkADm26AA5tuwAObb0ADm3AAA5twQAObcIADm3EAA5txQAOblgADm57AA5umwAObrsADm69AA5uvwAObsEADm7DAA5uxgAObscADm7IAA5uywAObswADm7OAA5uzwAObtEADm7UAA5u1QAObtYADm7ZAA5u2gAObt8ADm74AA5vAQAObwMADm8FAA5vDgAObxEADm8UAA5vFgAOb18ADm+DAA5vqgAOb84ADm/RAA5v0wAOb9UADm/XAA5v2QAOb9sADm/cAA5v3wAOb/gADnAZAA5wGwAOcB0ADnAfAA5wIQAOcCMADnAlAA5wJwAOcCkADnBKAA5wTQAOcFAADnBTAA5wVgAOcFkADnBcAA5wXwAOcGIADnBkAA5w3wAOcOEADnDjAA5w5QAOcOgADnDpAA5w6gAOcOsADnDsAA5w7gAOcPAADnDxAA5w8gAOcPQADnD1AA5xcAAOcXIADnF0AA5xdgAOcXkADnF6AA5xewAOcXwADnF9AA5xfwAOcYEADnGCAA5xgwAOcYUADnGGAA5yAQAOcgMADnIGAA5yCAAOcgsADnIMAA5yDQAOcg4ADnIPAA5yEQAOchMADnIUAA5yFQAOchcADnIYAA5yMQAOcjIADnIzAA5yNQAOcrAADnKyAA5ytAAOcrYADnK5AA5yugAOcrsADnK8AA5yvQAOcr8ADnLBAA5ywgAOcsMADnLFAA5yxgAOc0EADnNDAA5zRQAOc0cADnNKAA5zSwAOc0wADnNNAA5zTgAOc1AADnNSAA5zUwAOc1QADnNWAA5zVwAOc9IADnPUAA5z1gAOc9gADnPbAA5z3AAOc90ADnPeAA5z3wAOc+EADnPjAA5z5AAOc+UADnPnAA5z6AAOdGMADnRlAA50ZwAOdGkADnRsAA50bQAOdG4ADnRvAA50cAAOdHIADnR0AA50dQAOdHYADnR4AA50eQAOdPQADnT2AA50+AAOdPoADnT9AA50/gAOdP8ADnUAAA51AQAOdQMADnUFAA51BgAOdQcADnUJAA51CgAOdVMADnV3AA51ngAOdcIADnXFAA51xwAOdckADnXLAA51zQAOdc8ADnXQAA510wAOdewADnYJAA52CwAOdg0ADnYPAA52EQAOdhMADnYVAA52FwAOdjQADnY3AA52OgAOdj0ADnZAAA52QwAOdkYADnZJAA52SwAOdsYADnbIAA52ygAOdswADnbPAA520AAOdtEADnbSAA520wAOdtUADnbXAA522AAOdtkADnbbAA523AAOd1cADndZAA53WwAOd10ADndgAA53YQAOd2IADndjAA53ZAAOd2YADndoAA53aQAOd2oADndsAA53bQAOd+gADnfqAA537AAOd+4ADnfxAA538gAOd/MADnf0AA539QAOd/cADnf5AA53+gAOd/sADnf9AA53/gAOeHkADnh7AA54fgAOeIAADniDAA54hAAOeIUADniGAA54hwAOeIkADniLAA54jAAOeI0ADniPAA54kAAOeQsADnkNAA55DwAOeREADnkUAA55FQAOeRYADnkXAA55GAAOeRoADnkcAA55HQAOeR4ADnkgAA55IQAOeZwADnmeAA55oAAOeaIADnmlAA55pgAOeacADnmoAA55qQAOeasADnmtAA55rgAOea8ADnmxAA55sgAOei0ADnovAA56MQAOejMADno2AA56NwAOejgADno5AA56OgAOejwADno+AA56PwAOekAADnpCAA56QwAOetYADnr5AA57GQAOezkADns7AA57PQAOez8ADntBAA57RAAOe0UADntGAA57SQAOe0oADntMAA57TQAOe08ADntSAA57UwAOe1QADntXAA57WAAOe10ADnt2AA57fwAOe4EADnuDAA57jAAOe48ADnuSAA57lAAOe90ADnwBAA58KAAOfEwADnxPAA58UQAOfFMADnxVAA58VwAOfFkADnxaAA58XQAOfHYADnyXAA58mQAOfJsADnydAA58nwAOfKEADnyjAA58pQAOfKcADnzIAA58ywAOfM4ADnzRAA581AAOfNcADnzaAA583QAOfOAADnziAA59XQAOfV8ADn1hAA59YwAOfWYADn1nAA59aAAOfWkADn1qAA59bAAOfW4ADn1vAA59cAAOfXIADn1zAA597gAOffAADn3yAA599AAOffcADn34AA59+QAOffoADn37AA59/QAOff8ADn4AAA5+AQAOfgMADn4EAA5+fwAOfoEADn6EAA5+hgAOfokADn6KAA5+iwAOfowADn6NAA5+jwAOfpEADn6SAA5+kwAOfpUADn6WAA5+rwAOfrAADn6xAA5+swAOfy4ADn8wAA5/MgAOfzQADn83AA5/OAAOfzkADn86AA5/OwAOfz0ADn8/AA5/QAAOf0EADn9DAA5/RAAOf78ADn/BAA5/wwAOf8UADn/IAA5/yQAOf8oADn/LAA5/zAAOf84ADn/QAA5/0QAOf9IADn/UAA5/1QAOgFAADoBSAA6AVAAOgFYADoBZAA6AWgAOgFsADoBcAA6AXQAOgF8ADoBhAA6AYgAOgGMADoBlAA6AZgAOgOEADoDjAA6A5QAOgOcADoDqAA6A6wAOgOwADoDtAA6A7gAOgPAADoDyAA6A8wAOgPQADoD2AA6A9wAOgXIADoF0AA6BdgAOgXgADoF7AA6BfAAOgX0ADoF+AA6BfwAOgYEADoGDAA6BhAAOgYUADoGHAA6BiAAOgdEADoH1AA6CHAAOgkAADoJDAA6CRQAOgkcADoJJAA6CSwAOgk0ADoJOAA6CUQAOgmoADoKHAA6CiQAOgosADoKNAA6CjwAOgpEADoKTAA6ClQAOgrIADoK1AA6CuAAOgrsADoK+AA6CwQAOgsQADoLHAA6CyQAOg0QADoNGAA6DSAAOg0oADoNNAA6DTgAOg08ADoNQAA6DUQAOg1MADoNVAA6DVgAOg1cADoNZAA6DWgAOg9UADoPXAA6D2QAOg9sADoPeAA6D3wAOg+AADoPhAA6D4gAOg+QADoPmAA6D5wAOg+gADoPqAA6D6wAOhGYADoRoAA6EagAOhGwADoRvAA6EcAAOhHEADoRyAA6EcwAOhHUADoR3AA6EeAAOhHkADoR7AA6EfAAOhPcADoT5AA6E+wAOhP0ADoUAAA6FAQAOhQIADoUDAA6FBAAOhQYADoUIAA6FCQAOhQoADoUMAA6FDQAOhYgADoWKAA6FjAAOhY4ADoWRAA6FkgAOhZMADoWUAA6FlQAOhZcADoWZAA6FmgAOhZsADoWdAA6FngAOhhkADoYbAA6GHQAOhh8ADoYiAA6GIwAOhiQADoYlAA6GJgAOhigADoYqAA6GKwAOhiwADoYuAA6GLwAOhqoADoasAA6GrgAOhrAADoazAA6GtAAOhrUADoa2AA6GtwAOhrkADoa7AA6GvAAOhr0ADoa/AA6GwAAOh1MADod2AA6HlgAOh7YADoe4AA6HugAOh7wADoe+AA6HwQAOh8IADofDAA6HxgAOh8cADofJAA6HygAOh8wADofPAA6H0AAOh9EADofUAA6H1QAOh9oADofzAA6H/AAOh/4ADogAAA6ICQAOiAwADogPAA6IEQAOiFoADoh+AA6IpQAOiMkADojMAA6IzgAOiNAADojSAA6I1AAOiNYADojXAA6I2gAOiPMADokUAA6JFgAOiRgADokaAA6JHAAOiR4ADokgAA6JIgAOiSQADolFAA6JSAAOiUsADolOAA6JUQAOiVQADolXAA6JWgAOiV0ADolfAA6J2gAOidwADoneAA6J4AAOieMADonkAA6J5QAOieYADonnAA6J6QAOiesADonsAA6J7QAOie8ADonwAA6KawAOim0ADopvAA6KcQAOinQADop1AA6KdgAOincADop4AA6KegAOinwADop9AA6KfgAOioAADoqBAA6K/AAOiv4ADosBAA6LAwAOiwYADosHAA6LCAAOiwkADosKAA6LDAAOiw4ADosPAA6LEAAOixIADosTAA6LLAAOiy0ADosuAA6LMAAOi6sADoutAA6LrwAOi7EADou0AA6LtQAOi7YADou3AA6LuAAOi7oADou8AA6LvQAOi74ADovAAA6LwQAOjDwADow+AA6MQAAOjEIADoxFAA6MRgAOjEcADoxIAA6MSQAOjEsADoxNAA6MTgAOjE8ADoxRAA6MUgAOjM0ADozPAA6M0QAOjNMADozWAA6M1wAOjNgADozZAA6M2gAOjNwADozeAA6M3wAOjOAADoziAA6M4wAOjV4ADo1gAA6NYgAOjWQADo1nAA6NaAAOjWkADo1qAA6NawAOjW0ADo1vAA6NcAAOjXEADo1zAA6NdAAOje8ADo3xAA6N8wAOjfUADo34AA6N+QAOjfoADo37AA6N/AAOjf4ADo4AAA6OAQAOjgIADo4EAA6OBQAOjk4ADo5yAA6OmQAOjr0ADo7AAA6OwgAOjsQADo7GAA6OyAAOjsoADo7LAA6OzgAOjucADo8EAA6PBgAOjwgADo8KAA6PDAAOjw4ADo8QAA6PEgAOjy8ADo8yAA6PNQAOjzgADo87AA6PPgAOj0EADo9EAA6PRgAOj8EADo/DAA6PxQAOj8cADo/KAA6PywAOj8wADo/NAA6PzgAOj9AADo/SAA6P0wAOj9QADo/WAA6P1wAOkFIADpBUAA6QVgAOkFgADpBbAA6QXAAOkF0ADpBeAA6QXwAOkGEADpBjAA6QZAAOkGUADpBnAA6QaAAOkOMADpDlAA6Q5wAOkOkADpDsAA6Q7QAOkO4ADpDvAA6Q8AAOkPIADpD0AA6Q9QAOkPYADpD4AA6Q+QAOkXQADpF2AA6ReQAOkXsADpF+AA6RfwAOkYAADpGBAA6RggAOkYQADpGGAA6RhwAOkYgADpGKAA6RiwAOkgYADpIIAA6SCgAOkgwADpIPAA6SEAAOkhEADpISAA6SEwAOkhUADpIXAA6SGAAOkhkADpIbAA6SHAAOkpcADpKZAA6SmwAOkp0ADpKgAA6SoQAOkqIADpKjAA6SpAAOkqYADpKoAA6SqQAOkqoADpKsAA6SrQAOkygADpMqAA6TLAAOky4ADpMxAA6TMgAOkzMADpM0AA6TNQAOkzcADpM5AA6TOgAOkzsADpM9AA6TPgAOk08ADpNQAA6TUgAOk80ADpPPAA6T0QAOk9MADpPWAA6T1wAOk9gADpPZAA6T2gAOk9wADpPfAA6T4AAOk+EADpPjAA6T5AAOlF8ADpRhAA6UYwAOlGUADpRoAA6UaQAOlGoADpRrAA6UbAAOlG4ADpRxAA6UcgAOlHMADpR1AA6UdgAOlPEADpTzAA6U9gAOlPgADpT7AA6U/AAOlP0ADpT+AA6U/wAOlQEADpUEAA6VBQAOlQYADpUIAA6VCQAOlZwADpW/AA6V3wAOlf8ADpYBAA6WAwAOlgUADpYHAA6WCgAOlgsADpYMAA6WDwAOlhAADpYSAA6WEwAOlhYADpYZAA6WGgAOlhsADpYeAA6WHwAOligADpZBAA6WSgAOlkwADpZPAA6WWAAOllsADpZeAA6WYAAOlqkADpbNAA6W9AAOlxgADpcbAA6XHQAOlx8ADpchAA6XIwAOlyUADpcmAA6XKQAOl0IADpdjAA6XZQAOl2cADpdpAA6XawAOl20ADpdvAA6XcQAOl3MADpeUAA6XlwAOl5oADpedAA6XoAAOl6MADpemAA6XqQAOl6wADpeuAA6YKQAOmCsADpgtAA6YLwAOmDIADpgzAA6YNAAOmDUADpg2AA6YOAAOmDoADpg7AA6YPAAOmD4ADpg/AA6YugAOmLwADpi+AA6YwAAOmMMADpjEAA6YxQAOmMYADpjHAA6YyQAOmMsADpjMAA6YzQAOmM8ADpjQAA6ZSwAOmU0ADplQAA6ZUgAOmVUADplWAA6ZVwAOmVgADplZAA6ZWwAOmV0ADpleAA6ZXwAOmWEADpliAA6ZewAOmXwADpl9AA6ZfwAOmfoADpn8AA6Z/gAOmgAADpoDAA6aBAAOmgUADpoGAA6aBwAOmgkADpoLAA6aDAAOmg0ADpoPAA6aEAAOmosADpqNAA6ajwAOmpEADpqUAA6alQAOmpYADpqXAA6amAAOmpoADpqcAA6anQAOmp4ADpqgAA6aoQAOmxwADpseAA6bIAAOmyIADpslAA6bJgAOmycADpsoAA6bKQAOmysADpstAA6bLgAOmy8ADpsxAA6bMgAOm60ADpuvAA6bsQAOm7MADpu2AA6btwAOm7gADpu5AA6bugAOm7wADpu+AA6bvwAOm8AADpvCAA6bwwAOnD4ADpxAAA6cQgAOnEQADpxHAA6cSAAOnEkADpxKAA6cSwAOnE0ADpxPAA6cUAAOnFEADpxTAA6cVAAOnJ0ADpzBAA6c6AAOnQwADp0PAA6dEgAOnRQADp0WAA6dGAAOnRoADp0bAA6dHgAOnTcADp1UAA6dVwAOnVoADp1dAA6dYAAOnWMADp1mAA6daQAOnYYADp2JAA6djAAOnY8ADp2SAA6dlQAOnZgADp2bAA6dnQAOnhgADp4aAA6eHQAOnh8ADp4iAA6eIwAOniQADp4lAA6eJgAOnigADp4rAA6eLAAOni0ADp4vAA6eMAAOnqsADp6tAA6esAAOnrIADp61AA6etgAOnrcADp64AA6euQAOnrsADp6+AA6evwAOnsAADp7CAA6ewwAOnz4ADp9AAA6fQwAOn0UADp9IAA6fSQAOn0oADp9LAA6fTAAOn04ADp9RAA6fUgAOn1MADp9VAA6fVgAOn9EADp/TAA6f1gAOn9gADp/bAA6f3AAOn90ADp/eAA6f3wAOn+EADp/kAA6f5QAOn+YADp/oAA6f6QAOoGwADqCQAA6gtAAOoNcADqD+AA6hHgAOoUUADqFsAA6hjAAOobAADqHUAA6h1gAOodkADqHbAA6h3QAOod8ADqHiAA6h5QAOoecADqHpAA6h7AAOoe4ADqHwAA6h8wAOofYADqH3AA6h/AAOohUADqIaAA6iHAAOoiEADqIkAA6iJgAOom8ADqKTAA6iugAOot4ADqLhAA6i4wAOouUADqLnAA6i6QAOousADqLsAA6i7wAOowgADqMtAA6jLwAOozEADqMzAA6jNQAOozcADqM5AA6jOwAOoz0ADqM/AA6jZAAOo2cADqNqAA6jbQAOo3AADqNzAA6jdgAOo3kADqN8AA6jfwAOo4EADqP8AA6j/gAOpAEADqQDAA6kBgAOpAcADqQIAA6kCQAOpAoADqQMAA6kDgAOpA8ADqQQAA6kEgAOpBMADqQkAA6kJQAOpCcADqSiAA6kpAAOpKYADqSoAA6kqwAOpKwADqStAA6krgAOpK8ADqSxAA6kswAOpLQADqS1AA6ktwAOpLgADqUzAA6lNQAOpTgADqU6AA6lPQAOpT4ADqU/AA6lQAAOpUEADqVDAA6lRQAOpUYADqVHAA6lSQAOpUoADqVbAA6lYAAOpWMADqVlAA6ldgAOpX8ADqWCAA6lhQAOpYcADqWjAA6ltQAOpjAADqYyAA6mNAAOpjYADqY5AA6mOgAOpjsADqY8AA6mPQAOpj8ADqZBAA6mQgAOpkMADqZFAA6mRgAOpsEADqbDAA6mxgAOpsgADqbLAA6mzAAOps0ADqbOAA6mzwAOptEADqbTAA6m1AAOptUADqbXAA6m2AAOpukADqbqAA6m7AAOp2cADqdpAA6nawAOp20ADqdwAA6ncQAOp3IADqdzAA6ndAAOp3YADqd4AA6neQAOp3oADqd8AA6nfQAOp/gADqf6AA6n/QAOp/8ADqgCAA6oAwAOqAQADqgFAA6oBgAOqAgADqgKAA6oCwAOqAwADqgOAA6oDwAOqCgADqgpAA6oKgAOqCwADqinAA6oqQAOqKsADqitAA6osAAOqLEADqiyAA6oswAOqLQADqi2AA6ouAAOqLkADqi6AA6ovAAOqL0ADqk4AA6pOgAOqT0ADqk/AA6pQgAOqUMADqlEAA6pRQAOqUYADqlIAA6pSgAOqUsADqlMAA6pTgAOqU8ADqldAA6pdgAOqbUADqm4AA6puwAOqb4ADqnBAA6pxAAOqccADqnKAA6pzQAOqdAADqnTAA6p1gAOqdkADqncAA6p3wAOqeIADqohAA6qJAAOqicADqoqAA6qLQAOqjAADqozAA6qNgAOqjkADqo8AA6qPwAOqkIADqpFAA6qSAAOqksADqpOAA6qUAAOqmYADqqCAA6qoAAOqroADqrfAA6q5wAOqvkADqsMAA6rIgAOqysADqtHAA6rWQAOq2YADqt0AA6sBwAOrCoADqxKAA6sagAOrGwADqxuAA6scAAOrHIADqx1AA6sdgAOrHcADqx6AA6sewAOrH0ADqx+AA6sgAAOrIMADqyEAA6shQAOrIgADqyJAA6sjgAOrKcADqywAA6ssgAOrLQADqy9AA6swAAOrMMADqzFAA6tDgAOrTIADq1ZAA6tfQAOrYAADq2CAA6thAAOrYYADq2IAA6tigAOrYsADq2OAA6tpwAOrcgADq3KAA6tzAAOrc4ADq3QAA6t0gAOrdQADq3WAA6t2AAOrfkADq38AA6t/wAOrgIADq4FAA6uCAAOrgsADq4OAA6uEQAOrhMADq6OAA6ukAAOrpIADq6UAA6ulwAOrpgADq6ZAA6umgAOrpsADq6dAA6unwAOrqAADq6hAA6uowAOrqQADq8fAA6vIQAOryMADq8lAA6vKAAOrykADq8qAA6vKwAOrywADq8uAA6vMAAOrzEADq8yAA6vNAAOrzUADq+wAA6vsgAOr7UADq+3AA6vugAOr7sADq+8AA6vvQAOr74ADq/AAA6vwgAOr8MADq/EAA6vxgAOr8cADq/gAA6v4QAOr+IADq/kAA6wXwAOsGEADrBjAA6wZQAOsGgADrBpAA6wagAOsGsADrBsAA6wbgAOsHAADrBxAA6wcgAOsHQADrB1AA6w8AAOsPIADrD0AA6w9gAOsPkADrD6AA6w+wAOsPwADrD9AA6w/wAOsQEADrECAA6xAwAOsQUADrEGAA6xgQAOsYMADrGFAA6xhwAOsYoADrGLAA6xjAAOsY0ADrGOAA6xkAAOsZIADrGTAA6xlAAOsZYADrGXAA6yEgAOshQADrIWAA6yGAAOshsADrIcAA6yHQAOsh4ADrIfAA6yIQAOsiMADrIkAA6yJQAOsicADrIoAA6yowAOsqUADrKnAA6yqQAOsqwADrKtAA6yrgAOsq8ADrKwAA6ysgAOsrQADrK1AA6ytgAOsrgADrK5AA6zAgAOsyYADrNNAA6zcQAOs3QADrN2AA6zeAAOs3oADrN8AA6zfgAOs38ADrOCAA6zmwAOs7gADrO6AA6zvAAOs74ADrPAAA6zwgAOs8QADrPGAA6z4wAOs+YADrPpAA6z7AAOs+8ADrPyAA6z9QAOs/gADrP6AA60dQAOtHcADrR5AA60ewAOtH4ADrR/AA60gAAOtIEADrSCAA60hAAOtIYADrSHAA60iAAOtIoADrSLAA61BgAOtQgADrUKAA61DAAOtQ8ADrUQAA61EQAOtRIADrUTAA61FQAOtRcADrUYAA61GQAOtRsADrUcAA61lwAOtZkADrWbAA61nQAOtaAADrWhAA61ogAOtaMADrWkAA61pgAOtagADrWpAA61qgAOtawADrWtAA62KAAOtioADrYtAA62LwAOtjIADrYzAA62NAAOtjUADrY2AA62OAAOtjoADrY7AA62PAAOtj4ADrY/AA62ugAOtrwADra+AA62wAAOtsMADrbEAA62xQAOtsYADrbHAA62yQAOtssADrbMAA62zQAOts8ADrbQAA63SwAOt00ADrdPAA63UQAOt1QADrdVAA63VgAOt1cADrdYAA63WgAOt1wADrddAA63XgAOt2AADrdhAA633AAOt94ADrfgAA634gAOt+UADrfmAA635wAOt+gADrfpAA636wAOt+0ADrfuAA637wAOt/EADrfyAA64hQAOuKgADrjIAA646AAOuOoADrjsAA647gAOuPAADrjzAA649AAOuPUADrj4AA64+QAOuPsADrj8AA64/gAOuQEADrkCAA65AwAOuQYADrkHAA65EAAOuSkADrkyAA65NAAOuTYADrk/AA65QgAOuUUADrlHAA65kAAOubQADrnbAA65/wAOugIADroEAA66BgAOuggADroKAA66DAAOug0ADroQAA66KQAOukoADrpMAA66TgAOulAADrpSAA66VAAOulYADrpYAA66WgAOunsADrp+AA66gQAOuoQADrqHAA66igAOuo0ADrqQAA66kwAOupUADrsQAA67EgAOuxQADrsWAA67GQAOuxoADrsbAA67HAAOux0ADrsfAA67IQAOuyIADrsjAA67JQAOuyYADruhAA67owAOu6UADrunAA67qgAOu6sADrusAA67rQAOu64ADruwAA67sgAOu7MADru0AA67tgAOu7cADrwyAA68NAAOvDcADrw5AA68PAAOvD0ADrw+AA68PwAOvEAADrxCAA68RAAOvEUADrxGAA68SAAOvEkADrxiAA68YwAOvGQADrxmAA684QAOvOMADrzlAA685wAOvOoADrzrAA687AAOvO0ADrzuAA688AAOvPIADrzzAA689AAOvPYADrz3AA69cgAOvXQADr12AA69eAAOvXsADr18AA69fQAOvX4ADr1/AA69gQAOvYMADr2EAA69hQAOvYcADr2IAA6+AwAOvgUADr4HAA6+CQAOvgwADr4NAA6+DgAOvg8ADr4QAA6+EgAOvhQADr4VAA6+FgAOvhgADr4ZAA6+lAAOvpYADr6YAA6+mgAOvp0ADr6eAA6+nwAOvqAADr6hAA6+owAOvqUADr6mAA6+pwAOvqkADr6qAA6/JQAOvycADr8pAA6/KwAOvy4ADr8vAA6/MAAOvzEADr8yAA6/NAAOvzYADr83AA6/OAAOvzoADr87AA6/hAAOv6gADr/PAA6/8wAOv/YADr/4AA6/+gAOv/wADr/+AA7AAAAOwAEADsAEAA7AHQAOwDoADsA8AA7APgAOwEAADsBCAA7ARAAOwEYADsBIAA7AZQAOwGgADsBrAA7AbgAOwHEADsB0AA7AdwAOwHoADsB8AA7A9wAOwPkADsD7AA7A/QAOwQAADsEBAA7BAgAOwQMADsEEAA7BBgAOwQgADsEJAA7BCgAOwQwADsENAA7BiAAOwYoADsGMAA7BjgAOwZEADsGSAA7BkwAOwZQADsGVAA7BlwAOwZkADsGaAA7BmwAOwZ0ADsGeAA7CGQAOwhsADsIdAA7CHwAOwiIADsIjAA7CJAAOwiUADsImAA7CKAAOwioADsIrAA7CLAAOwi4ADsIvAA7CqgAOwqwADsKvAA7CsQAOwrQADsK1AA7CtgAOwrcADsK4AA7CugAOwrwADsK9AA7CvgAOwsAADsLBAA7DPAAOwz4ADsNAAA7DQgAOw0UADsNGAA7DRwAOw0gADsNJAA7DSwAOw00ADsNOAA7DTwAOw1EADsNSAA7DzQAOw88ADsPSAA7D1AAOw9cADsPYAA7D2QAOw9oADsPbAA7D3QAOw98ADsPgAA7D4QAOw+MADsPkAA7D8wAOxG4ADsRwAA7EcgAOxHQADsR3AA7EeAAOxHkADsR6AA7EewAOxH0ADsR/AA7EgAAOxIEADsSDAA7EhAAOxRcADsU6AA7FWgAOxXoADsV8AA7FfgAOxYAADsWCAA7FhQAOxYYADsWHAA7FigAOxYsADsWNAA7FjgAOxZAADsWTAA7FlAAOxZUADsWYAA7FmQAOxZ4ADsW3AA7FwAAOxcIADsXEAA7FzQAOxdAADsXTAA7F1QAOxh4ADsZCAA7GaQAOxo0ADsaQAA7GkgAOxpQADsaWAA7GmAAOxpoADsabAA7GngAOxrcADsbYAA7G2gAOxtwADsbeAA7G4AAOxuIADsbkAA7G5gAOxugADscJAA7HDAAOxw8ADscSAA7HFQAOxxgADscbAA7HHgAOxyEADscjAA7HngAOx6AADseiAA7HpAAOx6cADseoAA7HqQAOx6oADserAA7HrQAOx68ADsewAA7HsQAOx7MADse0AA7ILwAOyDEADsgzAA7INQAOyDgADsg5AA7IOgAOyDsADsg8AA7IPgAOyEAADshBAA7IQgAOyEQADshFAA7IwAAOyMIADsjFAA7IxwAOyMoADsjLAA7IzAAOyM0ADsjOAA7I0AAOyNIADsjTAA7I1AAOyNYADsjXAA7I8AAOyPEADsjyAA7I9AAOyW8ADslxAA7JcwAOyXUADsl4AA7JeQAOyXoADsl7AA7JfAAOyX4ADsmAAA7JgQAOyYIADsmEAA7JhQAOygAADsoCAA7KBAAOygYADsoJAA7KCgAOygsADsoMAA7KDQAOyg8ADsoRAA7KEgAOyhMADsoVAA7KFgAOypEADsqTAA7KlQAOypcADsqaAA7KmwAOypwADsqdAA7KngAOyqAADsqiAA7KowAOyqQADsqmAA7KpwAOyyIADsskAA7LJgAOyygADssrAA7LLAAOyy0ADssuAA7LLwAOyzEADsszAA7LNAAOyzUADss3AA7LOAAOy7MADsu1AA7LtwAOy7kADsu8AA7LvQAOy74ADsu/AA7LwAAOy8IADsvEAA7LxQAOy8YADsvIAA7LyQAOzBIADsw2AA7MXQAOzIEADsyEAA7MhgAOzIgADsyKAA7MjAAOzI4ADsyPAA7MkgAOzKsADszIAA7MygAOzMwADszOAA7M0AAOzNIADszUAA7M1gAOzPMADsz2AA7M+QAOzPwADsz/AA7NAgAOzQUADs0IAA7NCgAOzYUADs2HAA7NiQAOzYsADs2OAA7NjwAOzZAADs2RAA7NkgAOzZQADs2WAA7NlwAOzZgADs2aAA7NmwAOzhYADs4YAA7OGgAOzhwADs4fAA7OIAAOziEADs4iAA7OIwAOziUADs4nAA7OKAAOzikADs4rAA7OLAAOzqcADs6pAA7OqwAOzq0ADs6wAA7OsQAOzrIADs6zAA7OtAAOzrYADs64AA7OuQAOzroADs68AA7OvQAOzzgADs86AA7PPQAOzz8ADs9CAA7PQwAOz0QADs9FAA7PRgAOz0gADs9KAA7PSwAOz0wADs9OAA7PTwAOz8oADs/MAA7PzgAOz9AADs/TAA7P1AAOz9UADs/WAA7P1wAOz9kADs/bAA7P3AAOz90ADs/fAA7P4AAO0FsADtBdAA7QXwAO0GEADtBkAA7QZQAO0GYADtBnAA7QaAAO0GoADtBsAA7QbQAO0G4ADtBwAA7QcQAO0OwADtDuAA7Q8AAO0PIADtD1AA7Q9gAO0PcADtD4AA7Q+QAO0PsADtD9AA7Q/gAO0P8ADtEBAA7RAgAO0ZUADtG4AA7R2AAO0fgADtH6AA7R/AAO0f4ADtIAAA7SAwAO0gQADtIFAA7SCAAO0gkADtILAA7SDAAO0g4ADtIRAA7SEgAO0hMADtIWAA7SFwAO0iAADtI5AA7SQgAO0kQADtJGAA7STwAO0lIADtJVAA7SVwAO0qAADtLEAA7S6wAO0w8ADtMSAA7TFAAO0xYADtMYAA7TGgAO0xwADtMdAA7TIAAO0zkADtNaAA7TXAAO014ADtNgAA7TYgAO02QADtNmAA7TaAAO02oADtOLAA7TjgAO05EADtOUAA7TlwAO05oADtOdAA7ToAAO06MADtOlAA7UIAAO1CIADtQkAA7UJgAO1CkADtQqAA7UKwAO1CwADtQtAA7ULwAO1DEADtQyAA7UMwAO1DUADtQ2AA7UsQAO1LMADtS1AA7UtwAO1LoADtS7AA7UvAAO1L0ADtS+AA7UwAAO1MIADtTDAA7UxAAO1MYADtTHAA7VQgAO1UQADtVHAA7VSQAO1UwADtVNAA7VTgAO1U8ADtVQAA7VUgAO1VQADtVVAA7VVgAO1VgADtVZAA7VcgAO1XMADtV0AA7VdgAO1fEADtXzAA7V9QAO1fcADtX6AA7V+wAO1fwADtX9AA7V/gAO1gAADtYCAA7WAwAO1gQADtYGAA7WBwAO1oIADtaEAA7WhgAO1ogADtaLAA7WjAAO1o0ADtaOAA7WjwAO1pEADtaTAA7WlAAO1pUADtaXAA7WmAAO1xMADtcVAA7XFwAO1xkADtccAA7XHQAO1x4ADtcfAA7XIAAO1yIADtckAA7XJQAO1yYADtcoAA7XKQAO16QADtemAA7XqAAO16oADtetAA7XrgAO168ADtewAA7XsQAO17MADte1AA7XtgAO17cADte5AA7XugAO2DUADtg3AA7YOQAO2DsADtg+AA7YPwAO2EAADthBAA7YQgAO2EQADthGAA7YRwAO2EgADthKAA7YSwAO2JQADti4AA7Y3wAO2QMADtkGAA7ZCAAO2QoADtkMAA7ZDgAO2RAADtkRAA7ZFAAO2S0ADtlKAA7ZTAAO2U4ADtlQAA7ZUgAO2VQADtlWAA7ZWAAO2XUADtl4AA7ZewAO2X4ADtmBAA7ZhAAO2YcADtmKAA7ZjAAO2gcADtoJAA7aCwAO2g0ADtoQAA7aEQAO2hIADtoTAA7aFAAO2hYADtoYAA7aGQAO2hoADtocAA7aHQAO2pgADtqaAA7anAAO2p4ADtqhAA7aogAO2qMADtqkAA7apQAO2qcADtqpAA7aqgAO2qsADtqtAA7argAO2ykADtsrAA7bLQAO2y8ADtsyAA7bMwAO2zQADts1AA7bNgAO2zgADts6AA7bOwAO2zwADts+AA7bPwAO27oADtu8AA7bvwAO28EADtvEAA7bxQAO28YADtvHAA7byAAO28oADtvMAA7bzQAO284ADtvQAA7b0QAO3EwADtxOAA7cUAAO3FIADtxVAA7cVgAO3FcADtxYAA7cWQAO3FsADtxdAA7cXgAO3F8ADtxhAA7cYgAO3N0ADtzfAA7c4gAO3OQADtznAA7c6AAO3OkADtzqAA7c6wAO3O0ADtzvAA7c8AAO3PEADtzzAA7c9AAO3QMADt1+AA7dgAAO3YIADt2EAA7dhwAO3YgADt2JAA7digAO3YsADt2NAA7djwAO3ZAADt2RAA7dkwAO3ZQADt4nAA7eSgAO3moADt6KAA7ejAAO3o4ADt6QAA7ekgAO3pUADt6WAA7elwAO3poADt6bAA7enQAO3p4ADt6gAA7eowAO3qQADt6lAA7eqAAO3qkADt6uAA7exwAO3tAADt7SAA7e1AAO3t0ADt7gAA7e4wAO3uUADt8uAA7fUgAO33kADt+dAA7foAAO36IADt+kAA7fpgAO36gADt+qAA7fqwAO364ADt/HAA7f6AAO3+oADt/sAA7f7gAO3/AADt/yAA7f9AAO3/YADt/4AA7gGQAO4BwADuAfAA7gIgAO4CUADuAoAA7gKwAO4C4ADuAxAA7gMwAO4K4ADuCwAA7gsgAO4LQADuC3AA7guAAO4LkADuC6AA7guwAO4L0ADuC/AA7gwAAO4MEADuDDAA7gxAAO4T8ADuFBAA7hQwAO4UUADuFIAA7hSQAO4UoADuFLAA7hTAAO4U4ADuFQAA7hUQAO4VIADuFUAA7hVQAO4dAADuHSAA7h1QAO4dcADuHaAA7h2wAO4dwADuHdAA7h3gAO4eAADuHiAA7h4wAO4eQADuHmAA7h5wAO4gAADuIBAA7iAgAO4gQADuJ/AA7igQAO4oMADuKFAA7iiAAO4okADuKKAA7iiwAO4owADuKOAA7ikAAO4pEADuKSAA7ilAAO4pUADuMQAA7jEgAO4xQADuMWAA7jGQAO4xoADuMbAA7jHAAO4x0ADuMfAA7jIQAO4yIADuMjAA7jJQAO4yYADuOhAA7jowAO46UADuOnAA7jqgAO46sADuOsAA7jrQAO464ADuOwAA7jsgAO47MADuO0AA7jtgAO47cADuQyAA7kNAAO5DYADuQ4AA7kOwAO5DwADuQ9AA7kPgAO5D8ADuRBAA7kQwAO5EQADuRFAA7kRwAO5EgADuTDAA7kxQAO5McADuTJAA7kzAAO5M0ADuTOAA7kzwAO5NAADuTSAA7k1AAO5NUADuTWAA7k2AAO5NkADuUiAA7lRgAO5W0ADuWRAA7llAAO5ZYADuWYAA7lmgAO5ZwADuWeAA7lnwAO5aIADuW7AA7l2AAO5doADuXcAA7l3gAO5eAADuXiAA7l5AAO5eYADuYDAA7mBgAO5gkADuYMAA7mDwAO5hIADuYVAA7mGAAO5hoADuaVAA7mlwAO5pkADuabAA7mngAO5p8ADuagAA7moQAO5qIADuakAA7mpgAO5qcADuaoAA7mqgAO5qsADucmAA7nKAAO5yoADucsAA7nLwAO5zAADucxAA7nMgAO5zMADuc1AA7nNwAO5zgADuc5AA7nOwAO5zwADue3AA7nuQAO57sADue9AA7nwAAO58EADufCAA7nwwAO58QADufGAA7nyAAO58kADufKAA7nzAAO580ADuhIAA7oSgAO6E0ADuhPAA7oUgAO6FMADuhUAA7oVQAO6FYADuhYAA7oWgAO6FsADuhcAA7oXgAO6F8ADujaAA7o3AAO6N4ADujgAA7o4wAO6OQADujlAA7o5gAO6OcADujpAA7o6wAO6OwADujtAA7o7wAO6PAADulrAA7pbQAO6W8ADulxAA7pdAAO6XUADul2AA7pdwAO6XgADul6AA7pfAAO6X0ADul+AA7pgAAO6YEADun8AA7p/gAO6gAADuoCAA7qBQAO6gYADuoHAA7qCAAO6gkADuoLAA7qDQAO6g4ADuoPAA7qEQAO6hIADuqlAA7qyAAO6ugADusIAA7rCgAO6wwADusOAA7rEAAO6xMADusUAA7rFQAO6xgADusZAA7rGwAO6xwADusfAA7rIgAO6yMADuskAA7rJwAO6ygADustAA7rRgAO608ADutRAA7rVAAO610ADutgAA7rYwAO62UADuuuAA7r0gAO6/kADuwdAA7sIAAO7CIADuwkAA7sJgAO7CgADuwqAA7sKwAO7C4ADuxHAA7saAAO7GoADuxsAA7sbgAO7HAADuxyAA7sdAAO7HYADux4AA7smQAO7JwADuyfAA7sogAO7KUADuyoAA7sqwAO7K4ADuyxAA7sswAO7S4ADu0wAA7tMgAO7TQADu03AA7tOAAO7TkADu06AA7tOwAO7T0ADu0/AA7tQAAO7UEADu1DAA7tRAAO7b8ADu3BAA7twwAO7cUADu3IAA7tyQAO7coADu3LAA7tzAAO7c4ADu3QAA7t0QAO7dIADu3UAA7t1QAO7lAADu5SAA7uVQAO7lcADu5aAA7uWwAO7lwADu5dAA7uXgAO7mAADu5iAA7uYwAO7mQADu5mAA7uZwAO7oAADu6BAA7uggAO7oQADu7/AA7vAQAO7wMADu8FAA7vCAAO7wkADu8KAA7vCwAO7wwADu8OAA7vEAAO7xEADu8SAA7vFAAO7xUADu+QAA7vkgAO75QADu+WAA7vmQAO75oADu+bAA7vnAAO750ADu+fAA7voQAO76IADu+jAA7vpQAO76YADvAhAA7wIwAO8CUADvAnAA7wKgAO8CsADvAsAA7wLQAO8C4ADvAwAA7wMgAO8DMADvA0AA7wNgAO8DcADvCyAA7wtAAO8LYADvC4AA7wuwAO8LwADvC9AA7wvgAO8L8ADvDBAA7wwwAO8MQADvDFAA7wxwAO8MgADvFDAA7xRQAO8UcADvFJAA7xTAAO8U0ADvFOAA7xTwAO8VAADvFSAA7xVAAO8VUADvFWAA7xWAAO8VkADvGiAA7xxgAO8e0ADvIRAA7yFAAO8hcADvIZAA7yGwAO8h0ADvIfAA7yIAAO8iMADvI8AA7yWQAO8lwADvJfAA7yYgAO8mUADvJoAA7yawAO8m4ADvKLAA7yjgAO8pEADvKUAA7ylwAO8poADvKdAA7yoAAO8qIADvMdAA7zHwAO8yIADvMkAA7zJwAO8ygADvMpAA7zKgAO8ysADvMtAA7zMAAO8zEADvMyAA7zNAAO8zUADvOwAA7zsgAO87UADvO3AA7zugAO87sADvO8AA7zvQAO874ADvPAAA7zwwAO88QADvPFAA7zxwAO88gADvRDAA70RQAO9EgADvRKAA70TQAO9E4ADvRPAA70UAAO9FEADvRTAA70VgAO9FcADvRYAA70WgAO9FsADvTWAA702AAO9NsADvTdAA704AAO9OEADvTiAA704wAO9OQADvTmAA706QAO9OoADvTrAA707QAO9O4ADvVxAA71lQAO9bkADvXcAA72AwAO9iMADvZKAA72cQAO9pEADva1AA722QAO9tsADvbeAA724AAO9uIADvbkAA725wAO9uoADvbsAA727gAO9vEADvbzAA729QAO9vgADvb7AA72/AAO9wEADvcaAA73HwAO9yEADvcmAA73KQAO9ysADvd0AA73mAAO978ADvfjAA735gAO9+gADvfqAA737AAO9+4ADvfwAA738QAO9/QADvgNAA74MgAO+DQADvg2AA74OAAO+DoADvg8AA74PgAO+EAADvhCAA74RAAO+GkADvhsAA74bwAO+HIADvh1AA74eAAO+HsADvh+AA74gQAO+IQADviGAA75AQAO+QMADvkGAA75CAAO+QsADvkMAA75DQAO+Q4ADvkPAA75EQAO+RMADvkUAA75FQAO+RcADvkYAA75KQAO+SoADvksAA75pwAO+akADvmrAA75rQAO+bAADvmxAA75sgAO+bMADvm0AA75tgAO+bgADvm5AA75ugAO+bwADvm9AA76OAAO+joADvo9AA76PwAO+kIADvpDAA76RAAO+kUADvpGAA76SAAO+koADvpLAA76TAAO+k4ADvpPAA76YAAO+mUADvpoAA76agAO+nsADvqMAA76jwAO+pIADvqVAA76mAAO+poADvq2AA76yAAO+tIADvrlAA77YAAO+2IADvtkAA77ZgAO+2kADvtqAA77awAO+2wADvttAA77bwAO+3EADvtyAA77cwAO+3UADvt2AA778QAO+/MADvv2AA77+AAO+/sADvv8AA77/QAO+/4ADvv/AA78AQAO/AMADvwEAA78BQAO/AcADvwIAA78GQAO/BoADvwcAA78lwAO/JkADvybAA78nQAO/KAADvyhAA78ogAO/KMADvykAA78pgAO/KgADvypAA78qgAO/KwADvytAA79KAAO/SoADv0tAA79LwAO/TIADv0zAA79NAAO/TUADv02AA79OAAO/ToADv07AA79PAAO/T4ADv0/AA79WAAO/VkADv1aAA79XAAO/dcADv3ZAA792wAO/d0ADv3gAA794QAO/eIADv3jAA795AAO/eYADv3oAA796QAO/eoADv3sAA797QAO/mgADv5qAA7+bQAO/m8ADv5yAA7+cwAO/nQADv51AA7+dgAO/ngADv56AA7+ewAO/nwADv5+AA7+fwAO/o0ADv6mAA7+vwAO/sIADv7FAA7+yAAO/ssADv7OAA7+0QAO/uoADv7tAA7+8AAO/vMADv72AA7++QAO/vwADv7+AA7/GgAO/ywADv8/AA7/SgAO/90ADwAAAA8AIAAPAEAADwBCAA8ARAAPAEYADwBIAA8ASwAPAEwADwBNAA8AUAAPAFEADwBTAA8AVAAPAFYADwBZAA8AWgAPAFsADwBeAA8AXwAPAGQADwB9AA8AhgAPAIgADwCKAA8AkwAPAJYADwCZAA8AmwAPAOQADwEIAA8BLwAPAVMADwFWAA8BWAAPAVoADwFcAA8BXgAPAWAADwFhAA8BZAAPAX0ADwGeAA8BoAAPAaIADwGkAA8BpgAPAagADwGqAA8BrAAPAa4ADwHPAA8B0gAPAdUADwHYAA8B2wAPAd4ADwHhAA8B5AAPAecADwHpAA8CZAAPAmYADwJoAA8CagAPAm0ADwJuAA8CbwAPAnAADwJxAA8CcwAPAnUADwJ2AA8CdwAPAnkADwJ6AA8C9QAPAvcADwL5AA8C+wAPAv4ADwL/AA8DAAAPAwEADwMCAA8DBAAPAwYADwMHAA8DCAAPAwoADwMLAA8DhgAPA4gADwOLAA8DjQAPA5AADwORAA8DkgAPA5MADwOUAA8DlgAPA5gADwOZAA8DmgAPA5wADwOdAA8DtgAPA7cADwO4AA8DugAPBDUADwQ3AA8EOQAPBDsADwQ+AA8EPwAPBEAADwRBAA8EQgAPBEQADwRGAA8ERwAPBEgADwRKAA8ESwAPBMYADwTIAA8EygAPBMwADwTPAA8E0AAPBNEADwTSAA8E0wAPBNUADwTXAA8E2AAPBNkADwTbAA8E3AAPBVcADwVZAA8FWwAPBV0ADwVgAA8FYQAPBWIADwVjAA8FZAAPBWYADwVoAA8FaQAPBWoADwVsAA8FbQAPBegADwXqAA8F7AAPBe4ADwXxAA8F8gAPBfMADwX0AA8F9QAPBfcADwX5AA8F+gAPBfsADwX9AA8F/gAPBnkADwZ7AA8GfQAPBn8ADwaCAA8GgwAPBoQADwaFAA8GhgAPBogADwaKAA8GiwAPBowADwaOAA8GjwAPBtgADwb8AA8HIwAPB0cADwdKAA8HTAAPB04ADwdQAA8HUgAPB1QADwdVAA8HWAAPB3EADweOAA8HkAAPB5IADweUAA8HlgAPB5gADweaAA8HnAAPB7kADwe8AA8HvwAPB8IADwfFAA8HyAAPB8sADwfOAA8H0AAPCEsADwhNAA8ITwAPCFEADwhUAA8IVQAPCFYADwhXAA8IWAAPCFoADwhcAA8IXQAPCF4ADwhgAA8IYQAPCNwADwjeAA8I4AAPCOIADwjlAA8I5gAPCOcADwjoAA8I6QAPCOsADwjtAA8I7gAPCO8ADwjxAA8I8gAPCW0ADwlvAA8JcQAPCXMADwl2AA8JdwAPCXgADwl5AA8JegAPCXwADwl+AA8JfwAPCYAADwmCAA8JgwAPCf4ADwoAAA8KAgAPCgQADwoHAA8KCAAPCgkADwoKAA8KCwAPCg0ADwoPAA8KEAAPChEADwoTAA8KFAAPCo8ADwqRAA8KkwAPCpUADwqYAA8KmQAPCpoADwqbAA8KnAAPCp4ADwqgAA8KoQAPCqIADwqkAA8KpQAPCyAADwsiAA8LJQAPCycADwsqAA8LKwAPCywADwstAA8LLgAPCzAADwsyAA8LMwAPCzQADws2AA8LNwAPC0YADwvBAA8LwwAPC8UADwvHAA8LygAPC8sADwvMAA8LzQAPC84ADwvQAA8L0gAPC9MADwvUAA8L1gAPC9cADwxqAA8MjQAPDK0ADwzNAA8MzwAPDNEADwzTAA8M1QAPDNgADwzZAA8M2gAPDN0ADwzeAA8M4AAPDOEADwzkAA8M5wAPDOgADwzpAA8M7AAPDO0ADwzyAA8NCwAPDRQADw0WAA8NGQAPDSIADw0lAA8NKAAPDSoADw1zAA8NlwAPDb4ADw3iAA8N5QAPDecADw3pAA8N6wAPDe0ADw3vAA8N8AAPDfMADw4MAA8OLQAPDi8ADw4xAA8OMwAPDjUADw43AA8OOQAPDjsADw49AA8OXgAPDmEADw5kAA8OZwAPDmoADw5tAA8OcAAPDnMADw52AA8OeAAPDvMADw71AA8O9wAPDvkADw78AA8O/QAPDv4ADw7/AA8PAAAPDwIADw8EAA8PBQAPDwYADw8IAA8PCQAPD4QADw+GAA8PiAAPD4oADw+NAA8PjgAPD48ADw+QAA8PkQAPD5MADw+VAA8PlgAPD5cADw+ZAA8PmgAPEBUADxAXAA8QGgAPEBwADxAfAA8QIAAPECEADxAiAA8QIwAPECUADxAnAA8QKAAPECkADxArAA8QLAAPEEUADxBGAA8QRwAPEEkADxDEAA8QxgAPEMgADxDKAA8QzQAPEM4ADxDPAA8Q0AAPENEADxDTAA8Q1QAPENYADxDXAA8Q2QAPENoADxFVAA8RVwAPEVkADxFbAA8RXgAPEV8ADxFgAA8RYQAPEWIADxFkAA8RZgAPEWcADxFoAA8RagAPEWsADxHmAA8R6AAPEeoADxHsAA8R7wAPEfAADxHxAA8R8gAPEfMADxH1AA8R9wAPEfgADxH5AA8R+wAPEfwADxJ3AA8SeQAPEnsADxJ9AA8SgAAPEoEADxKCAA8SgwAPEoQADxKGAA8SiAAPEokADxKKAA8SjAAPEo0ADxMIAA8TCgAPEwwADxMOAA8TEQAPExIADxMTAA8TFAAPExUADxMXAA8TGQAPExoADxMbAA8THQAPEx4ADxNnAA8TiwAPE7IADxPWAA8T2QAPE9wADxPeAA8T4AAPE+IADxPkAA8T5QAPE+gADxQBAA8UHgAPFCEADxQkAA8UJwAPFCoADxQtAA8UMAAPFDMADxRQAA8UUwAPFFYADxRZAA8UXAAPFF8ADxRiAA8UZQAPFGcADxTiAA8U5AAPFOcADxTpAA8U7AAPFO0ADxTuAA8U7wAPFPAADxTyAA8U9QAPFPYADxT3AA8U+QAPFPoADxV1AA8VdwAPFXoADxV8AA8VfwAPFYAADxWBAA8VggAPFYMADxWFAA8ViAAPFYkADxWKAA8VjAAPFY0ADxYIAA8WCgAPFg0ADxYPAA8WEgAPFhMADxYUAA8WFQAPFhYADxYYAA8WGwAPFhwADxYdAA8WHwAPFiAADxabAA8WnQAPFqAADxaiAA8WpQAPFqYADxanAA8WqAAPFqkADxarAA8WrgAPFq8ADxawAA8WsgAPFrMADxcuAA8XMAAPFzIADxc0AA8XNwAPFzgADxc5AA8XOgAPFzsADxc9AA8XQAAPF0EADxdCAA8XRAAPF0UADxfAAA8XwgAPF8QADxfGAA8XyQAPF8oADxfLAA8XzAAPF80ADxfPAA8X0gAPF9MADxfUAA8X1gAPF9cADxhSAA8YVAAPGFcADxhZAA8YXAAPGF0ADxheAA8YXwAPGGAADxhiAA8YZQAPGGYADxhnAA8YaQAPGGoADxj9AA8ZIAAPGUAADxlgAA8ZYgAPGWQADxlmAA8ZaAAPGWsADxlsAA8ZbQAPGXAADxlxAA8ZcwAPGXQADxl2AA8ZeQAPGXoADxl7AA8ZfgAPGX8ADxmEAA8ZnQAPGaYADxmoAA8ZqgAPGbMADxm2AA8ZuQAPGbsADxoEAA8aKAAPGk8ADxpzAA8adgAPGngADxp6AA8afAAPGn4ADxqAAA8agQAPGoQADxqdAA8avgAPGsAADxrCAA8axAAPGsYADxrIAA8aygAPGswADxrOAA8a7wAPGvIADxr1AA8a+AAPGvsADxr+AA8bAQAPGwQADxsHAA8bCQAPG4QADxuGAA8biAAPG4oADxuNAA8bjgAPG48ADxuQAA8bkQAPG5MADxuVAA8blgAPG5cADxuZAA8bmgAPHBUADxwXAA8cGQAPHBsADxweAA8cHwAPHCAADxwhAA8cIgAPHCQADxwmAA8cJwAPHCgADxwqAA8cKwAPHKYADxyoAA8cqwAPHK0ADxywAA8csQAPHLIADxyzAA8ctAAPHLYADxy4AA8cuQAPHLoADxy8AA8cvQAPHNYADxzXAA8c2AAPHNoADx1VAA8dVwAPHVkADx1bAA8dXgAPHV8ADx1gAA8dYQAPHWIADx1kAA8dZgAPHWcADx1oAA8dagAPHWsADx3mAA8d6AAPHeoADx3sAA8d7wAPHfAADx3xAA8d8gAPHfMADx31AA8d9wAPHfgADx35AA8d+wAPHfwADx53AA8eeQAPHnsADx59AA8egAAPHoEADx6CAA8egwAPHoQADx6GAA8eiAAPHokADx6KAA8ejAAPHo0ADx8IAA8fCgAPHwwADx8OAA8fEQAPHxIADx8TAA8fFAAPHxUADx8XAA8fGQAPHxoADx8bAA8fHQAPHx4ADx+ZAA8fmwAPH50ADx+fAA8fogAPH6MADx+kAA8fpQAPH6YADx+oAA8fqgAPH6sADx+sAA8frgAPH68ADx/4AA8gHAAPIEMADyBnAA8gagAPIGwADyBuAA8gcAAPIHIADyB0AA8gdQAPIHgADyCRAA8grgAPILAADyCyAA8gtAAPILYADyC4AA8gugAPILwADyDZAA8g3AAPIN8ADyDiAA8g5QAPIOgADyDrAA8g7gAPIPAADyFrAA8hbQAPIW8ADyFxAA8hdAAPIXUADyF2AA8hdwAPIXgADyF6AA8hfAAPIX0ADyF+AA8hgAAPIYEADyH8AA8h/gAPIgAADyICAA8iBQAPIgYADyIHAA8iCAAPIgkADyILAA8iDQAPIg4ADyIPAA8iEQAPIhIADyKNAA8ijwAPIpEADyKTAA8ilgAPIpcADyKYAA8imQAPIpoADyKcAA8ingAPIp8ADyKgAA8iogAPIqMADyMeAA8jIAAPIyMADyMlAA8jKAAPIykADyMqAA8jKwAPIywADyMuAA8jMAAPIzEADyMyAA8jNAAPIzUADyOwAA8jsgAPI7QADyO2AA8juQAPI7oADyO7AA8jvAAPI70ADyO/AA8jwQAPI8IADyPDAA8jxQAPI8YADyRBAA8kQwAPJEUADyRHAA8kSgAPJEsADyRMAA8kTQAPJE4ADyRQAA8kUgAPJFMADyRUAA8kVgAPJFcADyTSAA8k1AAPJNYADyTYAA8k2wAPJNwADyTdAA8k3gAPJN8ADyThAA8k4wAPJOQADyTlAA8k5wAPJOgADyV7AA8lngAPJb4ADyXeAA8l4AAPJeIADyXkAA8l5gAPJekADyXqAA8l6wAPJe4ADyXvAA8l8QAPJfIADyX0AA8l9wAPJfgADyX5AA8l/AAPJf0ADyYCAA8mGwAPJiQADyYmAA8mKAAPJjEADyY0AA8mNwAPJjkADyaCAA8mpgAPJs0ADybxAA8m9AAPJvYADyb4AA8m+gAPJvwADyb+AA8m/wAPJwIADycbAA8nPAAPJz4ADydAAA8nQgAPJ0QADydGAA8nSAAPJ0oADydMAA8nbQAPJ3AADydzAA8ndgAPJ3kADyd8AA8nfwAPJ4IADyeFAA8nhwAPKAIADygEAA8oBgAPKAgADygLAA8oDAAPKA0ADygOAA8oDwAPKBEADygTAA8oFAAPKBUADygXAA8oGAAPKJMADyiVAA8olwAPKJkADyicAA8onQAPKJ4ADyifAA8ooAAPKKIADyikAA8opQAPKKYADyioAA8oqQAPKSQADykmAA8pKQAPKSsADykuAA8pLwAPKTAADykxAA8pMgAPKTQADyk2AA8pNwAPKTgADyk6AA8pOwAPKVQADylVAA8pVgAPKVgADynTAA8p1QAPKdcADynZAA8p3AAPKd0ADyneAA8p3wAPKeAADyniAA8p5AAPKeUADynmAA8p6AAPKekADypkAA8qZgAPKmgADypqAA8qbQAPKm4ADypvAA8qcAAPKnEADypzAA8qdQAPKnYADyp3AA8qeQAPKnoADyr1AA8q9wAPKvkADyr7AA8q/gAPKv8ADysAAA8rAQAPKwIADysEAA8rBgAPKwcADysIAA8rCgAPKwsADyuGAA8riAAPK4oADyuMAA8rjwAPK5AADyuRAA8rkgAPK5MADyuVAA8rlwAPK5gADyuZAA8rmwAPK5wADywXAA8sGQAPLBsADywdAA8sIAAPLCEADywiAA8sIwAPLCQADywmAA8sKAAPLCkADywqAA8sLAAPLC0ADyx2AA8smgAPLMEADyzlAA8s6AAPLOoADyzsAA8s7gAPLPAADyzyAA8s8wAPLPYADy0PAA8tLAAPLS4ADy0wAA8tMgAPLTQADy02AA8tOAAPLToADy1XAA8tWgAPLV0ADy1gAA8tYwAPLWYADy1pAA8tbAAPLW4ADy3pAA8t6wAPLe0ADy3vAA8t8gAPLfMADy30AA8t9QAPLfYADy34AA8t+gAPLfsADy38AA8t/gAPLf8ADy56AA8ufAAPLn4ADy6AAA8ugwAPLoQADy6FAA8uhgAPLocADy6JAA8uiwAPLowADy6NAA8ujwAPLpAADy8LAA8vDQAPLw8ADy8RAA8vFAAPLxUADy8WAA8vFwAPLxgADy8aAA8vHAAPLx0ADy8eAA8vIAAPLyEADy+cAA8vngAPL6EADy+jAA8vpgAPL6cADy+oAA8vqQAPL6oADy+sAA8vrgAPL68ADy+wAA8vsgAPL7MADzAuAA8wMAAPMDIADzA0AA8wNwAPMDgADzA5AA8wOgAPMDsADzA9AA8wPwAPMEAADzBBAA8wQwAPMEQADzC/AA8wwQAPMMMADzDFAA8wyAAPMMkADzDKAA8wywAPMMwADzDOAA8w0AAPMNEADzDSAA8w1AAPMNUADzFQAA8xUgAPMVQADzFWAA8xWQAPMVoADzFbAA8xXAAPMV0ADzFfAA8xYQAPMWIADzFjAA8xZQAPMWYADzH5AA8yHAAPMjwADzJcAA8yXgAPMmAADzJiAA8yZAAPMmcADzJoAA8yaQAPMmwADzJtAA8ybwAPMnAADzJyAA8ydQAPMnYADzJ3AA8yegAPMnsADzKAAA8ymQAPMqIADzKkAA8ypgAPMq8ADzKyAA8ytQAPMrcADzMAAA8zJAAPM0sADzNvAA8zcgAPM3QADzN2AA8zeAAPM3oADzN8AA8zfQAPM4AADzOZAA8zugAPM7wADzO+AA8zwAAPM8IADzPEAA8zxgAPM8gADzPKAA8z6wAPM+4ADzPxAA8z9AAPM/cADzP6AA8z/QAPNAAADzQDAA80BQAPNIAADzSCAA80hAAPNIYADzSJAA80igAPNIsADzSMAA80jQAPNI8ADzSRAA80kgAPNJMADzSVAA80lgAPNREADzUTAA81FQAPNRcADzUaAA81GwAPNRwADzUdAA81HgAPNSAADzUiAA81IwAPNSQADzUmAA81JwAPNaIADzWkAA81pwAPNakADzWsAA81rQAPNa4ADzWvAA81sAAPNbIADzW0AA81tQAPNbYADzW4AA81uQAPNdIADzXTAA811AAPNdYADzZRAA82UwAPNlUADzZXAA82WgAPNlsADzZcAA82XQAPNl4ADzZgAA82YgAPNmMADzZkAA82ZgAPNmcADzbiAA825AAPNuYADzboAA826wAPNuwADzbtAA827gAPNu8ADzbxAA828wAPNvQADzb1AA829wAPNvgADzdzAA83dQAPN3cADzd5AA83fAAPN30ADzd+AA83fwAPN4AADzeCAA83hAAPN4UADzeGAA83iAAPN4kADzgEAA84BgAPOAgADzgKAA84DQAPOA4ADzgPAA84EAAPOBEADzgTAA84FQAPOBYADzgXAA84GQAPOBoADziVAA84lwAPOJkADzibAA84ngAPOJ8ADzigAA84oQAPOKIADzikAA84pgAPOKcADzioAA84qgAPOKsADzj0AA85GAAPOT8ADzljAA85ZgAPOWgADzlqAA85bAAPOW4ADzlwAA85cQAPOXQADzmNAA85qgAPOawADzmuAA85sAAPObIADzm0AA85tgAPObgADznVAA852AAPOdsADzneAA854QAPOeQADznnAA856gAPOewADzpnAA86aQAPOmsADzptAA86cAAPOnEADzpyAA86cwAPOnQADzp2AA86eAAPOnkADzp6AA86fAAPOn0ADzr4AA86+gAPOvwADzr+AA87AQAPOwIADzsDAA87BAAPOwUADzsHAA87CQAPOwoADzsLAA87DQAPOw4ADzuJAA87iwAPO40ADzuPAA87kgAPO5MADzuUAA87lQAPO5YADzuYAA87mgAPO5sADzucAA87ngAPO58ADzwaAA88HAAPPB4ADzwgAA88IwAPPCQADzwlAA88JgAPPCcADzwpAA88KwAPPCwADzwtAA88LwAPPDAADzyrAA88rQAPPK8ADzyxAA88tAAPPLUADzy2AA88twAPPLgADzy6AA88vAAPPL0ADzy+AA88wAAPPMEADz08AA89PgAPPUEADz1DAA89RgAPPUcADz1IAA89SQAPPUoADz1MAA89TgAPPU8ADz1QAA89UgAPPVMADz1yAA897QAPPe8ADz3xAA898wAPPfYADz33AA89+AAPPfkADz36AA89/AAPPf4ADz3/AA8+AAAPPgIADz4DAA8+lgAPPrkADz7ZAA8++QAPPvsADz79AA8+/wAPPwEADz8EAA8/BQAPPwYADz8JAA8/CgAPPwwADz8NAA8/DwAPPxIADz8TAA8/FAAPPxcADz8YAA8/IQAPPzoADz9DAA8/RQAPP0cADz9QAA8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Q1wAPUNgAD1DZAA9Q2wAPUVYAD1FYAA9RWgAPUVwAD1FfAA9RYAAPUWEAD1FiAA9RYwAPUWUAD1FnAA9RaAAPUWkAD1FrAA9RbAAPUecAD1HpAA9R6wAPUe0AD1HwAA9R8QAPUfIAD1HzAA9R9AAPUfYAD1H4AA9R+QAPUfoAD1H8AA9R/QAPUngAD1J6AA9SfAAPUn4AD1KBAA9SggAPUoMAD1KEAA9ShQAPUocAD1KJAA9SigAPUosAD1KNAA9SjgAPUwkAD1MLAA9TDQAPUw8AD1MSAA9TEwAPUxQAD1MVAA9TFgAPUxgAD1MaAA9TGwAPUxwAD1MeAA9THwAPU5oAD1OcAA9TngAPU6AAD1OjAA9TpAAPU6UAD1OmAA9TpwAPU6kAD1OrAA9TrAAPU60AD1OvAA9TsAAPU/kAD1QdAA9URAAPVGgAD1RrAA9UbQAPVG8AD1RxAA9UcwAPVHUAD1R2AA9UeQAPVJIAD1SvAA9UsQAPVLMAD1S1AA9UtwAPVLkAD1S7AA9UvQAPVNoAD1TdAA9U4AAPVOMAD1TmAA9U6QAPVOwAD1TvAA9U8QAPVWwAD1VuAA9VcAAPVXIAD1V1AA9VdgAPVXcAD1V4AA9VeQAPVXsAD1V9AA9VfgAPVX8AD1WBAA9VggAPVf0AD1X/AA9WAQAPVgMAD1YGAA9WBwAPVggAD1YJAA9WCgAPVgwAD1YOAA9WDwAPVhAAD1YSAA9WEwAPVo4AD1aQAA9WkgAPVpQAD1aXAA9WmAAPVpkAD1aaAA9WmwAPVp0AD1afAA9WoAAPVqEAD1ajAA9WpAAPVx8AD1chAA9XJAAPVyYAD1cpAA9XKgAPVysAD1csAA9XLQAPVy8AD1cxAA9XMgAPVzMAD1c1AA9XNgAPV7EAD1ezAA9XtQAPV7cAD1e6AA9XuwAPV7wAD1e9AA9XvgAPV8AAD1fCAA9XwwAPV8QAD1fGAA9XxwAPWEIAD1hEAA9YRgAPWEgAD1hLAA9YTAAPWE0AD1hOAA9YTwAPWFEAD1hTAA9YVAAPWFUAD1hXAA9YWAAPWNMAD1jVAA9Y1wAPWNkAD1jcAA9Y3QAPWN4AD1jfAA9Y4AAPWOIAD1jkAA9Y5QAPWOYAD1joAA9Y6QAPWXwAD1mfAA9ZvwAPWd8AD1nhAA9Z4wAPWeUAD1nnAA9Z6gAPWesAD1nsAA9Z7wAPWfAAD1nyAA9Z8wAPWfUAD1n4AA9Z+QAPWfoAD1n9AA9Z/gAPWgMAD1ocAA9aJQAPWicAD1opAA9aMgAPWjUAD1o4AA9aOgAPWoMAD1qnAA9azgAPWvIAD1r1AA9a9wAPWvkAD1r7AA9a/QAPWv8AD1sAAA9bAwAPWxwAD1s9AA9bPwAPW0EAD1tDAA9bRQAPW0cAD1tJAA9bSwAPW00AD1tuAA9bcQAPW3QAD1t3AA9begAPW30AD1uAAA9bgwAPW4YAD1uIAA9cAwAPXAUAD1wHAA9cCQAPXAwAD1wNAA9cDgAPXA8AD1wQAA9cEgAPXBQAD1wVAA9cFgAPXBgAD1wZAA9clAAPXJYAD1yYAA9cmgAPXJ0AD1yeAA9cnwAPXKAAD1yhAA9cowAPXKUAD1ymAA9cpwAPXKkAD1yqAA9dJQAPXScAD10qAA9dLAAPXS8AD10wAA9dMQAPXTIAD10zAA9dNQAPXTcAD104AA9dOQAPXTsAD108AA9dVQAPXVYAD11XAA9dWQAPXdQAD13WAA9d2AAPXdoAD13dAA9d3gAPXd8AD13gAA9d4QAPXeMAD13lAA9d5gAPXecAD13pAA9d6gAPXmUAD15nAA9eaQAPXmsAD15uAA9ebwAPXnAAD15xAA9ecgAPXnQAD152AA9edwAPXngAD156AA9eewAPXvYAD174AA9e+gAPXvwAD17/AA9fAAAPXwEAD18CAA9fAwAPXwUAD18HAA9fCAAPXwkAD18LAA9fDAAPX4cAD1+JAA9fiwAPX40AD1+QAA9fkQAPX5IAD1+TAA9flAAPX5YAD1+YAA9fmQAPX5oAD1+cAA9fnQAPYBgAD2AaAA9gHAAPYB4AD2AhAA9gIgAPYCMAD2AkAA9gJQAPYCcAD2ApAA9gKgAPYCsAD2AtAA9gLgAPYHcAD2CbAA9gwgAPYOYAD2DpAA9g6wAPYO0AD2DvAA9g8QAPYPMAD2D0AA9g9wAPYRAAD2EtAA9hLwAPYTEAD2EzAA9hNQAPYTcAD2E5AA9hOwAPYVgAD2FbAA9hXgAPYWEAD2FkAA9hZwAPYWoAD2FtAA9hbwAPYeoAD2HsAA9h7gAPYfAAD2HzAA9h9AAPYfUAD2H2AA9h9wAPYfkAD2H7AA9h/AAPYf0AD2H/AA9iAAAPYnsAD2J9AA9ifwAPYoEAD2KEAA9ihQAPYoYAD2KHAA9iiAAPYooAD2KMAA9ijQAPYo4AD2KQAA9ikQAPYwwAD2MOAA9jEAAPYxIAD2MVAA9jFgAPYxcAD2MYAA9jGQAPYxsAD2MdAA9jHgAPYx8AD2MhAA9jIgAPY50AD2OfAA9jogAPY6QAD2OnAA9jqAAPY6kAD2OqAA9jqwAPY60AD2OvAA9jsAAPY7EAD2OzAA9jtAAPZC8AD2QxAA9kMwAPZDUAD2Q4AA9kOQAPZDoAD2Q7AA9kPAAPZD4AD2RAAA9kQQAPZEIAD2REAA9kRQAPZMAAD2TCAA9kxAAPZMYAD2TJAA9kygAPZMsAD2TMAA9kzQAPZM8AD2TRAA9k0gAPZNMAD2TVAA9k1gAPZVEAD2VTAA9lVQAPZVcAD2VaAA9lWwAPZVwAD2VdAA9lXgAPZWAAD2ViAA9lYwAPZWQAD2VmAA9lZwAPZfoAD2YdAA9mPQAPZl0AD2ZfAA9mYQAPZmMAD2ZlAA9maAAPZmkAD2ZqAA9mbQAPZm4AD2ZwAA9mcQAPZnMAD2Z2AA9mdwAPZngAD2Z7AA9mfAAPZoUAD2aeAA9mpwAPZqkAD2arAA9mtAAPZrcAD2a6AA9mvAAPZwUAD2cpAA9nUAAPZ3QAD2d3AA9neQAPZ3sAD2d9AA9nfwAPZ4EAD2eCAA9nhQAPZ54AD2e/AA9nwQAPZ8MAD2fFAA9nxwAPZ8kAD2fLAA9nzQAPZ88AD2fwAA9n8wAPZ/YAD2f5AA9n/AAPZ/8AD2gCAA9oBQAPaAgAD2gKAA9ohQAPaIcAD2iJAA9oiwAPaI4AD2iPAA9okAAPaJEAD2iSAA9olAAPaJYAD2iXAA9omAAPaJoAD2ibAA9pFgAPaRgAD2kaAA9pHAAPaR8AD2kgAA9pIQAPaSIAD2kjAA9pJQAPaScAD2koAA9pKQAPaSsAD2ksAA9ppwAPaakAD2msAA9prgAPabEAD2myAA9pswAPabQAD2m1AA9ptwAPabkAD2m6AA9puwAPab0AD2m+AA9p1wAPadgAD2nZAA9p2wAPalYAD2pYAA9qWgAPalwAD2pfAA9qYAAPamEAD2piAA9qYwAPamUAD2pnAA9qaAAPamkAD2prAA9qbAAPaucAD2rpAA9q6wAPau0AD2rwAA9q8QAPavIAD2rzAA9q9AAPavYAD2r4AA9q+QAPavoAD2r8AA9q/QAPa3gAD2t6AA9rfAAPa34AD2uBAA9rggAPa4MAD2uEAA9rhQAPa4cAD2uJAA9rigAPa4sAD2uNAA9rjgAPbAkAD2wLAA9sDQAPbA8AD2wSAA9sEwAPbBQAD2wVAA9sFgAPbBgAD2waAA9sGwAPbBwAD2weAA9sHwAPbJoAD2ycAA9sngAPbKAAD2yjAA9spAAPbKUAD2ymAA9spwAPbKkAD2yrAA9srAAPbK0AD2yvAA9ssAAPbPkAD20dAA9tRAAPbWgAD21rAA9tbQAPbW8AD21xAA9tcwAPbXUAD212AA9teQAPbZIAD22vAA9tsQAPbbMAD221AA9ttwAPbbkAD227AA9tvQAPbdoAD23dAA9t4AAPbeMAD23mAA9t6QAPbewAD23vAA9t8QAPbmwAD25uAA9ucAAPbnIAD251AA9udgAPbncAD254AA9ueQAPbnsAD259AA9ufgAPbn8AD26BAA9uggAPbv0AD27/AA9vAQAPbwMAD28GAA9vBwAPbwgAD28JAA9vCgAPbwwAD28OAA9vDwAPbxAAD28SAA9vEwAPb44AD2+QAA9vkgAPb5QAD2+XAA9vmAAPb5kAD2+aAA9vmwAPb50AD2+fAA9voAAPb6EAD2+jAA9vpAAPcB8AD3AhAA9wIwAPcCUAD3AoAA9wKQAPcCoAD3ArAA9wLAAPcC4AD3AwAA9wMQAPcDIAD3A0AA9wNQAPcLAAD3CyAA9wtAAPcLYAD3C5AA9wugAPcLsAD3C8AA9wvQAPcL8AD3DBAA9wwgAPcMMAD3DFAA9wxgAPcUEAD3FDAA9xRgAPcUgAD3FLAA9xTAAPcU0AD3FOAA9xTwAPcVEAD3FTAA9xVAAPcVUAD3FXAA9xWAAPcXMAD3HuAA9x8AAPcfIAD3H0AA9x9wAPcfgAD3H5AA9x+gAPcfsAD3H9AA9x/wAPcgAAD3IBAA9yAwAPcgQAD3KXAA9yugAPctoAD3L6AA9y/AAPcv4AD3MAAA9zAgAPcwUAD3MGAA9zBwAPcwoAD3MLAA9zDQAPcw4AD3MRAA9zFAAPcxUAD3MWAA9zGQAPcxoAD3MfAA9zOAAPc0EAD3NDAA9zRgAPc08AD3NSAA9zVQAPc1cAD3OgAA9zxAAPc+sAD3QPAA90EgAPdBQAD3QWAA90GAAPdBoAD3QcAA90HQAPdCAAD3Q5AA90WgAPdFwAD3ReAA90YAAPdGIAD3RkAA90ZgAPdGgAD3RqAA90iwAPdI4AD3SRAA90lAAPdJcAD3SaAA90nQAPdKAAD3SjAA90pQAPdSAAD3UiAA91JAAPdSYAD3UpAA91KgAPdSsAD3UsAA91LQAPdS8AD3UxAA91MgAPdTMAD3U1AA91NgAPdbEAD3WzAA91tQAPdbcAD3W6AA91uwAPdbwAD3W9AA91vgAPdcAAD3XCAA91wwAPdcQAD3XGAA91xwAPdkIAD3ZEAA92RwAPdkkAD3ZMAA92TQAPdk4AD3ZPAA92UAAPdlIAD3ZUAA92VQAPdlYAD3ZYAA92WQAPdnIAD3ZzAA92dAAPdnYAD3bxAA928wAPdvUAD3b3AA92+gAPdvsAD3b8AA92/QAPdv4AD3cAAA93AgAPdwMAD3cEAA93BgAPdwcAD3eCAA93hAAPd4YAD3eIAA93iwAPd4wAD3eNAA93jgAPd48AD3eRAA93kwAPd5QAD3eVAA93lwAPd5gAD3gTAA94FQAPeBcAD3gZAA94HAAPeB0AD3geAA94HwAPeCAAD3giAA94JAAPeCUAD3gmAA94KAAPeCkAD3ikAA94pgAPeKgAD3iqAA94rQAPeK4AD3ivAA94sAAPeLEAD3izAA94tQAPeLYAD3i3AA94uQAPeLoAD3k1AA95NwAPeTkAD3k7AA95PgAPeT8AD3lAAA95QQAPeUIAD3lEAA95RgAPeUcAD3lIAA95SgAPeUsAD3mUAA95uAAPed8AD3oDAA96BgAPegkAD3oLAA96DQAPeg8AD3oRAA96EgAPehUAD3ouAA96SwAPek4AD3pRAA96VAAPelcAD3paAA96XQAPemAAD3p9AA96gAAPeoMAD3qGAA96iQAPeowAD3qPAA96kgAPepQAD3sPAA97EQAPexQAD3sWAA97GQAPexoAD3sbAA97HAAPex0AD3sfAA97IgAPeyMAD3skAA97JgAPeycAD3uiAA97pAAPe6cAD3upAA97rAAPe60AD3uuAA97rwAPe7AAD3uyAA97tQAPe7YAD3u3AA97uQAPe7oAD3w1AA98NwAPfDoAD3w8AA98PwAPfEAAD3xBAA98QgAPfEMAD3xFAA98SAAPfEkAD3xKAA98TAAPfE0AD3zIAA98ygAPfM0AD3zPAA980gAPfNMAD3zUAA981QAPfNYAD3zYAA982wAPfNwAD3zdAA983wAPfOAAD31bAA99XQAPfV8AD31hAA99ZAAPfWUAD31mAA99ZwAPfWgAD31qAA99bQAPfW4AD31vAA99cQAPfXIAD33tAA997wAPffEAD33zAA999gAPffcAD334AA99+QAPffoAD338AA99/wAPfgAAD34BAA9+AwAPfgQAD35/AA9+gQAPfoQAD36GAA9+iQAPfooAD36LAA9+jAAPfo0AD36PAA9+kgAPfpMAD36UAA9+lgAPfpcAD38qAA9/TQAPf20AD3+NAA9/jwAPf5EAD3+TAA9/lQAPf5gAD3+ZAA9/mgAPf50AD3+eAA9/oAAPf6EAD3+jAA9/pgAPf6cAD3+oAA9/qwAPf6wAD3+xAA9/ygAPf9MAD3/VAA9/1wAPf+AAD3/jAA9/5gAPf+gAD4AxAA+AVQAPgHwAD4CgAA+AowAPgKUAD4CnAA+AqQAPgKsAD4CtAA+ArgAPgLEAD4DKAA+A6wAPgO0AD4DvAA+A8QAPgPMAD4D1AA+A9wAPgPkAD4D7AA+BHAAPgR8AD4EiAA+BJQAPgSgAD4ErAA+BLgAPgTEAD4E0AA+BNgAPgbEAD4GzAA+BtQAPgbcAD4G6AA+BuwAPgbwAD4G9AA+BvgAPgcAAD4HCAA+BwwAPgcQAD4HGAA+BxwAPgkIAD4JEAA+CRgAPgkgAD4JLAA+CTAAPgk0AD4JOAA+CTwAPglEAD4JTAA+CVAAPglUAD4JXAA+CWAAPgtMAD4LVAA+C2AAPgtoAD4LdAA+C3gAPgt8AD4LgAA+C4QAPguMAD4LlAA+C5gAPgucAD4LpAA+C6gAPgwMAD4MEAA+DBQAPgwcAD4OCAA+DhAAPg4YAD4OIAA+DiwAPg4wAD4ONAA+DjgAPg48AD4ORAA+DkwAPg5QAD4OVAA+DlwAPg5gAD4QTAA+EFQAPhBcAD4QZAA+EHAAPhB0AD4QeAA+EHwAPhCAAD4QiAA+EJAAPhCUAD4QmAA+EKAAPhCkAD4SkAA+EpgAPhKgAD4SqAA+ErQAPhK4AD4SvAA+EsAAPhLEAD4SzAA+EtQAPhLYAD4S3AA+EuQAPhLoAD4U1AA+FNwAPhTkAD4U7AA+FPgAPhT8AD4VAAA+FQQAPhUIAD4VEAA+FRgAPhUcAD4VIAA+FSgAPhUsAD4XGAA+FyAAPhcoAD4XMAA+FzwAPhdAAD4XRAA+F0gAPhdMAD4XVAA+F1wAPhdgAD4XZAA+F2wAPhdwAD4YlAA+GSQAPhnAAD4aUAA+GlwAPhpkAD4abAA+GnQAPhp8AD4ahAA+GogAPhqUAD4a+AA+G2wAPht0AD4bfAA+G4QAPhuMAD4blAA+G5wAPhukAD4cGAA+HCQAPhwwAD4cPAA+HEgAPhxUAD4cYAA+HGwAPhx0AD4eYAA+HmgAPh50AD4efAA+HogAPh6MAD4ekAA+HpQAPh6YAD4eoAA+HqgAPh6sAD4esAA+HrgAPh68AD4gqAA+ILAAPiC4AD4gwAA+IMwAPiDQAD4g1AA+INgAPiDcAD4g5AA+IOwAPiDwAD4g9AA+IPwAPiEAAD4i7AA+IvQAPiL8AD4jBAA+IxAAPiMUAD4jGAA+IxwAPiMgAD4jKAA+IzAAPiM0AD4jOAA+I0AAPiNEAD4lMAA+JTgAPiVEAD4lTAA+JVgAPiVcAD4lYAA+JWQAPiVoAD4lcAA+JXgAPiV8AD4lgAA+JYgAPiWMAD4neAA+J4AAPieIAD4nkAA+J5wAPiegAD4npAA+J6gAPiesAD4ntAA+J7wAPifAAD4nxAA+J8wAPifQAD4pvAA+KcQAPinMAD4p1AA+KeAAPinkAD4p6AA+KewAPinwAD4p+AA+KgAAPioEAD4qCAA+KhAAPioUAD4sAAA+LAgAPiwQAD4sGAA+LCQAPiwoAD4sLAA+LDAAPiw0AD4sPAA+LEQAPixIAD4sTAA+LFQAPixYAD4upAA+LzAAPi+wAD4wMAA+MDgAPjBAAD4wSAA+MFAAPjBcAD4wYAA+MGQAPjBwAD4wdAA+MHwAPjCAAD4wiAA+MJQAPjCYAD4wnAA+MKgAPjCsAD4w0AA+MTQAPjFYAD4xYAA+MWgAPjGMAD4xmAA+MaQAPjGsAD4y0AA+M2AAPjP8AD40jAA+NJgAPjSgAD40qAA+NLAAPjS4AD40wAA+NMQAPjTQAD41NAA+NbgAPjXAAD41yAA+NdAAPjXYAD414AA+NegAPjXwAD41+AA+NnwAPjaIAD42lAA+NqAAPjasAD42uAA+NsQAPjbQAD423AA+NuQAPjjQAD442AA+OOAAPjjoAD449AA+OPgAPjj8AD45AAA+OQQAPjkMAD45FAA+ORgAPjkcAD45JAA+OSgAPjsUAD47HAA+OyQAPjssAD47OAA+OzwAPjtAAD47RAA+O0gAPjtQAD47WAA+O1wAPjtgAD47aAA+O2wAPj1YAD49YAA+PWwAPj10AD49gAA+PYQAPj2IAD49jAA+PZAAPj2YAD49oAA+PaQAPj2oAD49sAA+PbQAPj4YAD4+HAA+PiAAPj4oAD5AFAA+QBwAPkAkAD5ALAA+QDgAPkA8AD5AQAA+QEQAPkBIAD5AUAA+QFgAPkBcAD5AYAA+QGgAPkBsAD5CWAA+QmAAPkJoAD5CcAA+QnwAPkKAAD5ChAA+QogAPkKMAD5ClAA+QpwAPkKgAD5CpAA+QqwAPkKwAD5EnAA+RKQAPkSsAD5EtAA+RMAAPkTEAD5EyAA+RMwAPkTQAD5E2AA+ROAAPkTkAD5E6AA+RPAAPkT0AD5G4AA+RugAPkbwAD5G+AA+RwQAPkcIAD5HDAA+RxAAPkcUAD5HHAA+RyQAPkcoAD5HLAA+RzQAPkc4AD5JJAA+SSwAPkk0AD5JPAA+SUgAPklMAD5JUAA+SVQAPklYAD5JYAA+SWgAPklsAD5JcAA+SXgAPkl8AD5KoAA+SzAAPkvMAD5MXAA+TGgAPkxwAD5MeAA+TIAAPkyIAD5MkAA+TJQAPkygAD5NBAA+TXgAPk2AAD5NiAA+TZAAPk2YAD5NoAA+TagAPk2wAD5OJAA+TjAAPk48AD5OSAA+TlQAPk5gAD5ObAA+TngAPk6AAD5QbAA+UHQAPlCAAD5QiAA+UJQAPlCYAD5QnAA+UKAAPlCkAD5QrAA+ULQAPlC4AD5QvAA+UMQAPlDIAD5StAA+UrwAPlLEAD5SzAA+UtgAPlLcAD5S4AA+UuQAPlLoAD5S8AA+UvgAPlL8AD5TAAA+UwgAPlMMAD5U+AA+VQAAPlUIAD5VEAA+VRwAPlUgAD5VJAA+VSgAPlUsAD5VNAA+VTwAPlVAAD5VRAA+VUwAPlVQAD5XPAA+V0QAPldQAD5XWAA+V2QAPldoAD5XbAA+V3AAPld0AD5XfAA+V4QAPleIAD5XjAA+V5QAPleYAD5ZhAA+WYwAPlmUAD5ZnAA+WagAPlmsAD5ZsAA+WbQAPlm4AD5ZwAA+WcgAPlnMAD5Z0AA+WdgAPlncAD5byAA+W9AAPlvYAD5b4AA+W+wAPlvwAD5b9AA+W/gAPlv8AD5cBAA+XAwAPlwQAD5cFAA+XBwAPlwgAD5eDAA+XhQAPl4cAD5eJAA+XjAAPl40AD5eOAA+XjwAPl5AAD5eSAA+XlAAPl5UAD5eWAA+XmAAPl5kAD5gsAA+YTwAPmG8AD5iPAA+YkQAPmJMAD5iVAA+YlwAPmJoAD5ibAA+YnAAPmJ8AD5igAA+YogAPmKMAD5ilAA+YqAAPmKkAD5iqAA+YrQAPmK4AD5izAA+YzAAPmNUAD5jXAA+Y2QAPmOIAD5jlAA+Y6AAPmOoAD5kzAA+ZVwAPmX4AD5miAA+ZpQAPmacAD5mpAA+ZqwAPma0AD5mvAA+ZsAAPmbMAD5nMAA+Z7QAPme8AD5nxAA+Z8wAPmfUAD5n3AA+Z+QAPmfsAD5n9AA+aHgAPmiEAD5okAA+aJwAPmioAD5otAA+aMAAPmjMAD5o2AA+aOAAPmrMAD5q1AA+atwAPmrkAD5q8AA+avQAPmr4AD5q/AA+awAAPmsIAD5rEAA+axQAPmsYAD5rIAA+ayQAPm0QAD5tGAA+bSAAPm0oAD5tNAA+bTgAPm08AD5tQAA+bUQAPm1MAD5tVAA+bVgAPm1cAD5tZAA+bWgAPm9UAD5vXAA+b2gAPm9wAD5vfAA+b4AAPm+EAD5viAA+b4wAPm+UAD5vnAA+b6AAPm+kAD5vrAA+b7AAPnAUAD5wGAA+cBwAPnAkAD5yEAA+chgAPnIgAD5yKAA+cjQAPnI4AD5yPAA+ckAAPnJEAD5yTAA+clQAPnJYAD5yXAA+cmQAPnJoAD50VAA+dFwAPnRkAD50bAA+dHgAPnR8AD50gAA+dIQAPnSIAD50kAA+dJgAPnScAD50oAA+dKgAPnSsAD52mAA+dqAAPnaoAD52sAA+drwAPnbAAD52xAA+dsgAPnbMAD521AA+dtwAPnbgAD525AA+duwAPnbwAD543AA+eOQAPnjsAD549AA+eQAAPnkEAD55CAA+eQwAPnkQAD55GAA+eSAAPnkkAD55KAA+eTAAPnk0AD57IAA+eygAPnswAD57OAA+e0QAPntIAD57TAA+e1AAPntUAD57XAA+e2QAPntoAD57bAA+e3QAPnt4AD58nAA+fSwAPn3IAD5+WAA+fmQAPn5sAD5+dAA+fnwAPn6EAD5+jAA+fpAAPn6cAD5/AAA+f3QAPn98AD5/hAA+f4wAPn+UAD5/nAA+f6QAPn+sAD6AIAA+gCwAPoA4AD6ARAA+gFAAPoBcAD6AaAA+gHQAPoB8AD6CaAA+gnAAPoJ4AD6CgAA+gowAPoKQAD6ClAA+gpgAPoKcAD6CpAA+gqwAPoKwAD6CtAA+grwAPoLAAD6ErAA+hLQAPoS8AD6ExAA+hNAAPoTUAD6E2AA+hNwAPoTgAD6E6AA+hPAAPoT0AD6E+AA+hQAAPoUEAD6G8AA+hvgAPocAAD6HCAA+hxQAPocYAD6HHAA+hyAAPockAD6HLAA+hzQAPoc4AD6HPAA+h0QAPodIAD6JNAA+iTwAPolIAD6JUAA+iVwAPolgAD6JZAA+iWgAPolsAD6JdAA+iXwAPomAAD6JhAA+iYwAPomQAD6LfAA+i4QAPouMAD6LlAA+i6AAPoukAD6LqAA+i6wAPouwAD6LuAA+i8AAPovEAD6LyAA+i9AAPovUAD6NwAA+jcgAPo3QAD6N2AA+jeQAPo3oAD6N7AA+jfAAPo30AD6N/AA+jgQAPo4IAD6ODAA+jhQAPo4YAD6QBAA+kAwAPpAUAD6QHAA+kCgAPpAsAD6QMAA+kDQAPpA4AD6QQAA+kEgAPpBMAD6QUAA+kFgAPpBcAD6SqAA+kzQAPpO0AD6UNAA+lDwAPpREAD6UTAA+lFQAPpRgAD6UZAA+lGgAPpR0AD6UeAA+lIAAPpSEAD6UjAA+lJgAPpScAD6UoAA+lKwAPpSwAD6UxAA+lSgAPpVMAD6VVAA+lVwAPpWAAD6VjAA+lZgAPpWgAD6WxAA+l1QAPpfwAD6YgAA+mIwAPpiUAD6YnAA+mKQAPpisAD6YtAA+mLgAPpjEAD6ZKAA+mawAPpm0AD6ZvAA+mcQAPpnMAD6Z1AA+mdwAPpnkAD6Z7AA+mnAAPpp8AD6aiAA+mpQAPpqgAD6arAA+mrgAPprEAD6a0AA+mtgAPpzEAD6czAA+nNQAPpzcAD6c6AA+nOwAPpzwAD6c9AA+nPgAPp0AAD6dCAA+nQwAPp0QAD6dGAA+nRwAPp8IAD6fEAA+nxgAPp8gAD6fLAA+nzAAPp80AD6fOAA+nzwAPp9EAD6fTAA+n1AAPp9UAD6fXAA+n2AAPqFMAD6hVAA+oWAAPqFoAD6hdAA+oXgAPqF8AD6hgAA+oYQAPqGMAD6hlAA+oZgAPqGcAD6hpAA+oagAPqIMAD6iEAA+ohQAPqIcAD6kCAA+pBAAPqQYAD6kIAA+pCwAPqQwAD6kNAA+pDgAPqQ8AD6kRAA+pEwAPqRQAD6kVAA+pFwAPqRgAD6mTAA+plQAPqZcAD6mZAA+pnAAPqZ0AD6meAA+pnwAPqaAAD6miAA+ppAAPqaUAD6mmAA+pqAAPqakAD6okAA+qJgAPqigAD6oqAA+qLQAPqi4AD6ovAA+qMAAPqjEAD6ozAA+qNQAPqjYAD6o3AA+qOQAPqjoAD6q1AA+qtwAPqrkAD6q7AA+qvgAPqr8AD6rAAA+qwQAPqsIAD6rEAA+qxgAPqscAD6rIAA+qygAPqssAD6tGAA+rSAAPq0oAD6tMAA+rTwAPq1AAD6tRAA+rUgAPq1MAD6tVAA+rVwAPq1gAD6tZAA+rWwAPq1wAD6ulAA+ryQAPq/AAD6wUAA+sFwAPrBkAD6wbAA+sHQAPrB8AD6whAA+sIgAPrCUAD6w+AA+sWwAPrF0AD6xfAA+sYQAPrGMAD6xlAA+sZwAPrGkAD6yGAA+siQAPrIwAD6yPAA+skgAPrJUAD6yYAA+smwAPrJ0AD60YAA+tGgAPrRwAD60eAA+tIQAPrSIAD60jAA+tJAAPrSUAD60nAA+tKQAPrSoAD60rAA+tLQAPrS4AD62pAA+tqwAPra0AD62vAA+tsgAPrbMAD620AA+ttQAPrbYAD624AA+tugAPrbsAD628AA+tvgAPrb8AD646AA+uPAAPrj4AD65AAA+uQwAPrkQAD65FAA+uRgAPrkcAD65JAA+uSwAPrkwAD65NAA+uTwAPrlAAD67LAA+uzQAPrtAAD67SAA+u1QAPrtYAD67XAA+u2AAPrtkAD67bAA+u3QAPrt4AD67fAA+u4QAPruIAD69dAA+vXwAPr2EAD69jAA+vZgAPr2cAD69oAA+vaQAPr2oAD69sAA+vbgAPr28AD69wAA+vcgAPr3MAD6/uAA+v8AAPr/IAD6/0AA+v9wAPr/gAD6/5AA+v+gAPr/sAD6/9AA+v/wAPsAAAD7ABAA+wAwAPsAQAD7B/AA+wgQAPsIMAD7CFAA+wiAAPsIkAD7CKAA+wiwAPsIwAD7COAA+wkAAPsJEAD7CSAA+wlAAPsJUAD7EoAA+xSwAPsWsAD7GLAA+xjQAPsY8AD7GRAA+xkwAPsZYAD7GXAA+xmAAPsZsAD7GcAA+xngAPsZ8AD7GhAA+xpAAPsaUAD7GmAA+xqQAPsaoAD7GvAA+xyAAPsdEAD7HTAA+x1QAPsd4AD7HhAA+x5AAPseYAD7IvAA+yUwAPsnoAD7KeAA+yoQAPsqMAD7KlAA+ypwAPsqkAD7KrAA+yrAAPsq8AD7LIAA+y6QAPsusAD7LtAA+y7wAPsvEAD7LzAA+y9QAPsvcAD7L5AA+zGgAPsx0AD7MgAA+zIwAPsyYAD7MpAA+zLAAPsy8AD7MyAA+zNAAPs68AD7OxAA+zswAPs7UAD7O4AA+zuQAPs7oAD7O7AA+zvAAPs74AD7PAAA+zwQAPs8IAD7PEAA+zxQAPtEAAD7RCAA+0RAAPtEYAD7RJAA+0SgAPtEsAD7RMAA+0TQAPtE8AD7RRAA+0UgAPtFMAD7RVAA+0VgAPtNEAD7TTAA+01gAPtNgAD7TbAA+03AAPtN0AD7TeAA+03wAPtOEAD7TjAA+05AAPtOUAD7TnAA+06AAPtQEAD7UCAA+1AwAPtQUAD7WAAA+1ggAPtYQAD7WGAA+1iQAPtYoAD7WLAA+1jAAPtY0AD7WPAA+1kQAPtZIAD7WTAA+1lQAPtZYAD7YRAA+2EwAPthUAD7YXAA+2GgAPthsAD7YcAA+2HQAPth4AD7YgAA+2IgAPtiMAD7YkAA+2JgAPticAD7aiAA+2pAAPtqYAD7aoAA+2qwAPtqwAD7atAA+2rgAPtq8AD7axAA+2swAPtrQAD7a1AA+2twAPtrgAD7czAA+3NQAPtzcAD7c5AA+3PAAPtz0AD7c+AA+3PwAPt0AAD7dCAA+3RAAPt0UAD7dGAA+3SAAPt0kAD7fEAA+3xgAPt8gAD7fKAA+3zQAPt84AD7fPAA+30AAPt9EAD7fTAA+31QAPt9YAD7fXAA+32QAPt9oAD7gjAA+4RwAPuG4AD7iSAA+4lQAPuJcAD7iZAA+4mwAPuJ0AD7ifAA+4oAAPuKMAD7i8AA+42QAPuNsAD7jdAA+43wAPuOEAD7jjAA+45QAPuOcAD7kEAA+5BwAPuQoAD7kNAA+5EAAPuRMAD7kWAA+5GQAPuRsAD7mWAA+5mAAPuZsAD7mdAA+5oAAPuaEAD7miAA+5owAPuaQAD7mmAA+5qAAPuakAD7mqAA+5rAAPua0AD7ooAA+6KgAPuiwAD7ouAA+6MQAPujIAD7ozAA+6NAAPujUAD7o3AA+6OQAPujoAD7o7AA+6PQAPuj4AD7q5AA+6uwAPur0AD7q/AA+6wgAPusMAD7rEAA+6xQAPusYAD7rIAA+6ygAPussAD7rMAA+6zgAPus8AD7tKAA+7TAAPu08AD7tRAA+7VAAPu1UAD7tWAA+7VwAPu1gAD7taAA+7XAAPu10AD7teAA+7YAAPu2EAD7vcAA+73gAPu+AAD7viAA+75QAPu+YAD7vnAA+76AAPu+kAD7vrAA+77QAPu+4AD7vvAA+78QAPu/IAD7xtAA+8bwAPvHEAD7xzAA+8dgAPvHcAD7x4AA+8eQAPvHoAD7x8AA+8fgAPvH8AD7yAAA+8ggAPvIMAD7z+AA+9AAAPvQIAD70EAA+9BwAPvQgAD70JAA+9CgAPvQsAD70NAA+9DwAPvRAAD70RAA+9EwAPvRQAD70lAA+9JgAPvSgAD72jAA+9pQAPvacAD72pAA+9rAAPva0AD72uAA+9rwAPvbAAD72yAA+9tQAPvbYAD723AA+9uQAPvboAD741AA++NwAPvjkAD747AA++PgAPvj8AD75AAA++QQAPvkIAD75EAA++RwAPvkgAD75JAA++SwAPvkwAD77HAA++yQAPvswAD77OAA++0QAPvtIAD77TAA++1AAPvtUAD77XAA++2gAPvtsAD77cAA++3gAPvt8AD79yAA+/lQAPv7UAD7/VAA+/1wAPv9kAD7/bAA+/3QAPv+AAD7/hAA+/4gAPv+UAD7/mAA+/6AAPv+kAD7/rAA+/7gAPv+8AD7/wAA+/8wAPv/QAD7/9AA/AFgAPwB8AD8AhAA/AIwAPwCwAD8AvAA/AMgAPwDQAD8B9AA/AoQAPwMgAD8DsAA/A7wAPwPEAD8DzAA/A9QAPwPcAD8D5AA/A+gAPwP0AD8EWAA/BNwAPwTkAD8E7AA/BPQAPwT8AD8FBAA/BQwAPwUUAD8FHAA/BaAAPwWsAD8FuAA/BcQAPwXQAD8F3AA/BegAPwX0AD8GAAA/BggAPwf0AD8H/AA/CAQAPwgMAD8IGAA/CBwAPwggAD8IJAA/CCgAPwgwAD8IOAA/CDwAPwhAAD8ISAA/CEwAPwo4AD8KQAA/CkgAPwpQAD8KXAA/CmAAPwpkAD8KaAA/CmwAPwp0AD8KfAA/CoAAPwqEAD8KjAA/CpAAPwx8AD8MhAA/DJAAPwyYAD8MpAA/DKgAPwysAD8MsAA/DLQAPwy8AD8MxAA/DMgAPwzMAD8M1AA/DNgAPw08AD8NQAA/DUQAPw1MAD8POAA/D0AAPw9IAD8PUAA/D1wAPw9gAD8PZAA/D2gAPw9sAD8PdAA/D3wAPw+AAD8PhAA/D4wAPw+QAD8RfAA/EYQAPxGMAD8RlAA/EaAAPxGkAD8RqAA/EawAPxGwAD8RuAA/EcAAPxHEAD8RyAA/EdAAPxHUAD8TwAA/E8gAPxPQAD8T2AA/E+QAPxPoAD8T7AA/E/AAPxP0AD8T/AA/FAQAPxQIAD8UDAA/FBQAPxQYAD8WBAA/FgwAPxYUAD8WHAA/FigAPxYsAD8WMAA/FjQAPxY4AD8WQAA/FkgAPxZMAD8WUAA/FlgAPxZcAD8YSAA/GFAAPxhYAD8YYAA/GGwAPxhwAD8YdAA/GHgAPxh8AD8YhAA/GIwAPxiQAD8YlAA/GJwAPxigAD8ZxAA/GlQAPxrwAD8bgAA/G4wAPxuUAD8bnAA/G6QAPxusAD8btAA/G7gAPxvEAD8cKAA/HJwAPxykAD8crAA/HLQAPxy8AD8cxAA/HMwAPxzUAD8dSAA/HVQAPx1gAD8dbAA/HXgAPx2EAD8dkAA/HZwAPx2kAD8fkAA/H5gAPx+gAD8fqAA/H7QAPx+4AD8fvAA/H8AAPx/EAD8fzAA/H9QAPx/YAD8f3AA/H+QAPx/oAD8h1AA/IdwAPyHkAD8h7AA/IfgAPyH8AD8iAAA/IgQAPyIIAD8iEAA/IhgAPyIcAD8iIAA/IigAPyIsAD8kGAA/JCAAPyQoAD8kMAA/JDwAPyRAAD8kRAA/JEgAPyRMAD8kVAA/JFwAPyRgAD8kZAA/JGwAPyRwAD8mXAA/JmQAPyZwAD8meAA/JoQAPyaIAD8mjAA/JpAAPyaUAD8mnAA/JqQAPyaoAD8mrAA/JrQAPya4AD8opAA/KKwAPyi0AD8ovAA/KMgAPyjMAD8o0AA/KNQAPyjYAD8o4AA/KOgAPyjsAD8o8AA/KPgAPyj8AD8q6AA/KvAAPyr4AD8rAAA/KwwAPysQAD8rFAA/KxgAPyscAD8rJAA/KywAPyswAD8rNAA/KzwAPytAAD8tLAA/LTQAPy08AD8tRAA/LVAAPy1UAD8tWAA/LVwAPy1gAD8taAA/LXAAPy10AD8teAA/LYAAPy2EAD8v0AA/MFwAPzDcAD8xXAA/MWQAPzFsAD8xdAA/MXwAPzGIAD8xjAA/MZAAPzGcAD8xoAA/MagAPzGsAD8xtAA/McAAPzHEAD8xyAA/MdQAPzHYAD8x7AA/MlAAPzJ0AD8yfAA/MoQAPzKoAD8ytAA/MsAAPzLIAD8z7AA/NHwAPzUYAD81qAA/NbQAPzW8AD81xAA/NcwAPzXUAD813AA/NeAAPzXsAD82UAA/NtQAPzbcAD825AA/NuwAPzb0AD82/AA/NwQAPzcMAD83FAA/N5gAPzekAD83sAA/N7wAPzfIAD831AA/N+AAPzfsAD83+AA/OAAAPznsAD859AA/OfwAPzoEAD86EAA/OhQAPzoYAD86HAA/OiAAPzooAD86MAA/OjQAPzo4AD86QAA/OkQAPzwwAD88OAA/PEAAPzxIAD88VAA/PFgAPzxcAD88YAA/PGQAPzxsAD88dAA/PHgAPzx8AD88hAA/PIgAPz50AD8+fAA/PogAPz6QAD8+nAA/PqAAPz6kAD8+qAA/PqwAPz60AD8+vAA/PsAAPz7EAD8+zAA/PtAAPz80AD8/OAA/PzwAPz9EAD9BMAA/QTgAP0FAAD9BSAA/QVQAP0FYAD9BXAA/QWAAP0FkAD9BbAA/QXQAP0F4AD9BfAA/QYQAP0GIAD9DdAA/Q3wAP0OEAD9DjAA/Q5gAP0OcAD9DoAA/Q6QAP0OoAD9DsAA/Q7gAP0O8AD9DwAA/Q8gAP0PMAD9FuAA/RcAAP0XIAD9F0AA/RdwAP0XgAD9F5AA/RegAP0XsAD9F9AA/RfwAP0YAAD9GBAA/RgwAP0YQAD9H/AA/SAQAP0gMAD9IFAA/SCAAP0gkAD9IKAA/SCwAP0gwAD9IOAA/SEAAP0hEAD9ISAA/SFAAP0hUAD9KQAA/SkgAP0pQAD9KWAA/SmQAP0poAD9KbAA/SnAAP0p0AD9KfAA/SoQAP0qIAD9KjAA/SpQAP0qYAD9LvAA/TEwAP0zoAD9NeAA/TYQAP02MAD9NlAA/TZwAP02kAD9NrAA/TbAAP028AD9OIAA/TpQAP06cAD9OpAA/TqwAP060AD9OvAA/TsQAP07MAD9PQAA/T0wAP09YAD9PZAA/T3AAP098AD9PiAA/T5QAP0+cAD9RiAA/UZAAP1GYAD9RoAA/UawAP1GwAD9RtAA/UbgAP1G8AD9RxAA/UcwAP1HQAD9R1AA/UdwAP1HgAD9TzAA/U9QAP1PcAD9T5AA/U/AAP1P0AD9T+AA/U/wAP1QAAD9UCAA/VBAAP1QUAD9UGAA/VCAAP1QkAD9WEAA/VhgAP1YgAD9WKAA/VjQAP1Y4AD9WPAA/VkAAP1ZEAD9WTAA/VlQAP1ZYAD9WXAA/VmQAP1ZoAD9YVAA/WFwAP1hoAD9YcAA/WHwAP1iAAD9YhAA/WIgAP1iMAD9YlAA/WJwAP1igAD9YpAA/WKwAP1iwAD9anAA/WqQAP1qsAD9atAA/WsAAP1rEAD9ayAA/WswAP1rQAD9a2AA/WuAAP1rkAD9a6AA/WvAAP1r0AD9c4AA/XOgAP1zwAD9c+AA/XQQAP10IAD9dDAA/XRAAP10UAD9dHAA/XSQAP10oAD9dLAA/XTQAP104AD9fJAA/XywAP180AD9fPAA/X0gAP19MAD9fUAA/X1QAP19YAD9fYAA/X2gAP19sAD9fcAA/X3gAP198AD9hyAA/YlQAP2LUAD9jVAA/Y1wAP2NkAD9jbAA/Y3QAP2OAAD9jhAA/Y4gAP2OUAD9jmAA/Y6AAP2OkAD9jrAA/Y7gAP2O8AD9jwAA/Y8wAP2PQAD9j5AA/ZEgAP2RsAD9kdAA/ZHwAP2SgAD9krAA/ZLgAP2TAAD9l5AA/ZnQAP2cQAD9noAA/Z6wAP2e0AD9nvAA/Z8QAP2fMAD9n1AA/Z9gAP2fkAD9oSAA/aMwAP2jUAD9o3AA/aOQAP2jsAD9o9AA/aPwAP2kEAD9pDAA/aZAAP2mcAD9pqAA/abQAP2nAAD9pzAA/adgAP2nkAD9p8AA/afgAP2vkAD9r7AA/a/QAP2v8AD9sCAA/bAwAP2wQAD9sFAA/bBgAP2wgAD9sKAA/bCwAP2wwAD9sOAA/bDwAP24oAD9uMAA/bjgAP25AAD9uTAA/blAAP25UAD9uWAA/blwAP25kAD9ubAA/bnAAP250AD9ufAA/boAAP3BsAD9wdAA/cIAAP3CIAD9wlAA/cJgAP3CcAD9woAA/cKQAP3CsAD9wtAA/cLgAP3C8AD9wxAA/cMgAP3EsAD9xMAA/cTQAP3E8AD9zKAA/czAAP3M4AD9zQAA/c0wAP3NQAD9zVAA/c1gAP3NcAD9zZAA/c2wAP3NwAD9zdAA/c3wAP3OAAD91bAA/dXQAP3V8AD91hAA/dZAAP3WUAD91mAA/dZwAP3WgAD91qAA/dbAAP3W0AD91uAA/dcAAP3XEAD93sAA/d7gAP3fAAD93yAA/d9QAP3fYAD933AA/d+AAP3fkAD937AA/d/QAP3f4AD93/AA/eAQAP3gIAD959AA/efwAP3oEAD96DAA/ehgAP3ocAD96IAA/eiQAP3ooAD96MAA/ejgAP3o8AD96QAA/ekgAP3pMAD98OAA/fEAAP3xIAD98UAA/fFwAP3xgAD98ZAA/fGgAP3xsAD98dAA/fHwAP3yAAD98hAA/fIwAP3yQAD99tAA/fkQAP37gAD9/cAA/f3wAP3+EAD9/jAA/f5QAP3+cAD9/pAA/f6gAP3+0AD+AGAA/gIwAP4CUAD+AnAA/gKQAP4CsAD+AtAA/gLwAP4DEAD+BOAA/gUQAP4FQAD+BXAA/gWgAP4F0AD+BgAA/gYwAP4GUAD+DgAA/g4gAP4OQAD+DmAA/g6QAP4OoAD+DrAA/g7AAP4O0AD+DvAA/g8QAP4PIAD+DzAA/g9QAP4PYAD+FxAA/hcwAP4XUAD+F3AA/hegAP4XsAD+F8AA/hfQAP4X4AD+GAAA/hggAP4YMAD+GEAA/hhgAP4YcAD+ICAA/iBAAP4gYAD+IIAA/iCwAP4gwAD+INAA/iDgAP4g8AD+IRAA/iEwAP4hQAD+IVAA/iFwAP4hgAD+KTAA/ilQAP4pgAD+KaAA/inQAP4p4AD+KfAA/ioAAP4qEAD+KjAA/ipQAP4qYAD+KnAA/iqQAP4qoAD+MlAA/jJwAP4ykAD+MrAA/jLgAP4y8AD+MwAA/jMQAP4zIAD+M0AA/jNgAP4zcAD+M4AA/jOgAP4zsAD+O2AA/juAAP47oAD+O8AA/jvwAP48AAD+PBAA/jwgAP48MAD+PFAA/jxwAP48gAD+PJAA/jywAP48wAD+RHAA/kSQAP5EsAD+RNAA/kUAAP5FEAD+RSAA/kUwAP5FQAD+RWAA/kWAAP5FkAD+RaAA/kXAAP5F0AD+TwAA/lEwAP5TMAD+VTAA/lVQAP5VcAD+VZAA/lWwAP5V4AD+VfAA/lYAAP5WMAD+VkAA/lZgAP5WcAD+VpAA/lbAAP5W0AD+VuAA/lcQAP5XIAD+V3AA/lkAAP5ZkAD+WbAA/lnQAP5aYAD+WpAA/lrAAP5a4AD+X3AA/mGwAP5kIAD+ZmAA/maQAP5msAD+ZtAA/mbwAP5nEAD+ZzAA/mdAAP5ncAD+aQAA/msQAP5rMAD+a1AA/mtwAP5rkAD+a7AA/mvQAP5r8AD+bBAA/m4gAP5uUAD+boAA/m6wAP5u4AD+bxAA/m9AAP5vcAD+b6AA/m/AAP53cAD+d5AA/newAP530AD+eAAA/ngQAP54IAD+eDAA/nhAAP54YAD+eIAA/niQAP54oAD+eMAA/njQAP6AgAD+gKAA/oDAAP6A4AD+gRAA/oEgAP6BMAD+gUAA/oFQAP6BcAD+gZAA/oGgAP6BsAD+gdAA/oHgAP6JkAD+ibAA/ongAP6KAAD+ijAA/opAAP6KUAD+imAA/opwAP6KkAD+irAA/orAAP6K0AD+ivAA/osAAP6MkAD+jKAA/oywAP6M0AD+lIAA/pSgAP6UwAD+lOAA/pUQAP6VIAD+lTAA/pVAAP6VUAD+lXAA/pWQAP6VoAD+lbAA/pXQAP6V4AD+nZAA/p2wAP6d0AD+nfAA/p4gAP6eMAD+nkAA/p5QAP6eYAD+noAA/p6gAP6esAD+nsAA/p7gAP6e8AD+pqAA/qbAAP6m4AD+pwAA/qcwAP6nQAD+p1AA/qdgAP6ncAD+p5AA/qewAP6nwAD+p9AA/qfwAP6oAAD+r7AA/q/QAP6v8AD+sBAA/rBAAP6wUAD+sGAA/rBwAP6wgAD+sKAA/rDAAP6w0AD+sOAA/rEAAP6xEAD+uMAA/rjgAP65AAD+uSAA/rlQAP65YAD+uXAA/rmAAP65kAD+ubAA/rnQAP654AD+ufAA/roQAP66IAD+vrAA/sDwAP7DYAD+xaAA/sXQAP7F8AD+xhAA/sYwAP7GUAD+xnAA/saAAP7GsAD+yEAA/soQAP7KMAD+ylAA/spwAP7KkAD+yrAA/srQAP7K8AD+zMAA/szwAP7NIAD+zVAA/s2AAP7NsAD+zeAA/s4QAP7OMAD+1eAA/tYAAP7WIAD+1kAA/tZwAP7WgAD+1pAA/tagAP7WsAD+1tAA/tbwAP7XAAD+1xAA/tcwAP7XQAD+3vAA/t8QAP7fMAD+31AA/t+AAP7fkAD+36AA/t+wAP7fwAD+3+AA/uAAAP7gEAD+4CAA/uBAAP7gUAD+6AAA/uggAP7oQAD+6GAA/uiQAP7ooAD+6LAA/ujAAP7o0AD+6PAA/ukQAP7pIAD+6TAA/ulQAP7pYAD+8RAA/vEwAP7xYAD+8YAA/vGwAP7xwAD+8dAA/vHgAP7x8AD+8hAA/vIwAP7yQAD+8lAA/vJwAP7ygAD++jAA/vpQAP76cAD++pAA/vrAAP760AD++uAA/vrwAP77AAD++yAA/vtAAP77UAD++2AA/vuAAP77kAD/A0AA/wNgAP8DgAD/A6AA/wPQAP8D4AD/A/AA/wQAAP8EEAD/BDAA/wRQAP8EYAD/BHAA/wSQAP8EoAD/DFAA/wxwAP8MkAD/DLAA/wzgAP8M8AD/DQAA/w0QAP8NIAD/DUAA/w1gAP8NcAD/DYAA/w2gAP8NsAD/FuAA/xkQAP8bEAD/HRAA/x0wAP8dUAD/HXAA/x2QAP8dwAD/HdAA/x3gAP8eEAD/HiAA/x5AAP8eUAD/HnAA/x6gAP8esAD/HsAA/x7wAP8fAAD/H1AA/yDgAP8hcAD/IZAA/yGwAP8iQAD/InAA/yKgAP8iwAD/J1AA/ymQAP8sAAD/LkAA/y5wAP8ukAD/LrAA/y7QAP8u8AD/LxAA/y8gAP8vUAD/MOAA/zLwAP8zEAD/MzAA/zNQAP8zcAD/M5AA/zOwAP8z0AD/M/AA/zYAAP82MAD/NmAA/zaQAP82wAD/NvAA/zcgAP83UAD/N4AA/zegAP8/UAD/P3AA/z+QAP8/sAD/P+AA/z/wAP9AAAD/QBAA/0AgAP9AQAD/QGAA/0BwAP9AgAD/QKAA/0CwAP9IYAD/SIAA/0igAP9IwAD/SPAA/0kAAP9JEAD/SSAA/0kwAP9JUAD/SXAA/0mAAP9JkAD/SbAA/0nAAP9RcAD/UZAA/1HAAP9R4AD/UhAA/1IgAP9SMAD/UkAA/1JQAP9ScAD/UpAA/1KgAP9SsAD/UtAA/1LgAP9UcAD/VIAA/1SQAP9UsAD/XGAA/1yAAP9coAD/XMAA/1zwAP9dAAD/XRAA/10gAP9dMAD/XVAA/11wAP9dgAD/XZAA/12wAP9dwAD/ZXAA/2WQAP9lsAD/ZdAA/2YAAP9mEAD/ZiAA/2YwAP9mQAD/ZmAA/2aAAP9mkAD/ZqAA/2bAAP9m0AD/boAA/26gAP9uwAD/buAA/28QAP9vIAD/bzAA/29AAP9vUAD/b3AA/2+QAP9voAD/b7AA/2/QAP9v4AD/d5AA/3ewAP930AD/d/AA/3ggAP94MAD/eEAA/3hQAP94YAD/eIAA/3igAP94sAD/eMAA/3jgAP948AD/gKAA/4DAAP+A4AD/gQAA/4EwAP+BQAD/gVAA/4FgAP+BcAD/gZAA/4GwAP+BwAD/gdAA/4HwAP+CAAD/hpAA/4jQAP+LQAD/jYAA/42wAP+N0AD/jfAA/44QAP+OMAD/jlAA/45gAP+OkAD/kCAA/5HwAP+SEAD/kjAA/5JQAP+ScAD/kpAA/5KwAP+S0AD/lKAA/5TQAP+VAAD/lTAA/5VgAP+VkAD/lcAA/5XwAP+WEAD/ncAA/53gAP+eAAD/niAA/55QAP+eYAD/nnAA/56AAP+ekAD/nrAA/57QAP+e4AD/nvAA/58QAP+fIAD/ptAA/6bwAP+nEAD/pzAA/6dgAP+ncAD/p4AA/6eQAP+noAD/p8AA/6fgAP+n8AD/qAAA/6ggAP+oMAD/r+AA/7AAAP+wIAD/sEAA/7BwAP+wgAD/sJAA/7CgAP+wsAD/sNAA/7DwAP+xAAD/sRAA/7EwAP+xQAD/uPAA/7kQAP+5MAD/uVAA/7mAAP+5kAD/uaAA/7mwAP+5wAD/ueAA/7oAAP+6EAD/uiAA/7pAAP+6UAD/wgAA/8IgAP/CQAD/wmAA/8KQAP/CoAD/wrAA/8LAAP/C0AD/wvAA/8MQAP/DIAD/wzAA/8NQAP/DYAD/yxAA/8swAP/LUAD/y3AA/8ugAP/LsAD/y8AA/8vQAP/L4AD/zAAA/8wgAP/MMAD/zEAA/8xgAP/McAD/1CAA/9RAAP/UYAD/1IAA/9SwAP/UwAD/1NAA/9TgAP/U8AD/1RAA/9UwAP/VQAD/1VAA/9VwAP/VgAD/1pAA/9agAP/WwAD/3nAA/96QAP/esAD/3tAA/98AAP/fEAD/3yAA/98wAP/fQAD/32AA/9+QAP/foAD/37AA/9/QAP/f4AD/55AA/+ewAP/n0AD/5/AA/+ggAP/oMAD/6EAA/+hQAP/oYAD/6IAA/+iwAP/owAD/6NAA/+jwAP/pAAD/8LAA//DQAP/xAAD/8SAA//FQAP/xYAD/8XAA//GAAP/xkAD/8bAA//HgAP/x8AD/8gAA//IgAP/yMAD/+2AA//2QAP//kAEAAZABAAGwAQAB0AEAAfABAAIQAQACQAEAAlABAAJgAQACkAEAAqABAALAAQAC0AEAAvABAAMgAQADMAEAA0ABAANwAQADgAEABBABAAWgAQAGMAEABlABAAZwAQAHAAEABzABAAdgAQAHgAEADBABAA5QAQAQwAEAEwABABMwAQATUAEAE3ABABOQAQATsAEAE9ABABPgAQAUEAEAFaABABewAQAX0AEAF/ABABgQAQAYMAEAGFABABhwAQAYkAEAGLABABrAAQAa8AEAGyABABtQAQAbgAEAG7ABABvgAQAcEAEAHEABABxgAQAkEAEAJDABACRQAQAkcAEAJKABACSwAQAkwAEAJNABACTgAQAlAAEAJSABACUwAQAlQAEAJWABACVwAQAtIAEALUABAC1gAQAtgAEALbABAC3AAQAt0AEALeABAC3wAQAuEAEALjABAC5AAQAuUAEALnABAC6AAQA2MAEANlABADaAAQA2oAEANtABADbgAQA28AEANwABADcQAQA3MAEAN1ABADdgAQA3cAEAN5ABADegAQA5MAEAOUABADlQAQA5cAEAQSABAEFAAQBBYAEAQYABAEGwAQBBwAEAQdABAEHgAQBB8AEAQhABAEIwAQBCQAEAQlABAEJwAQBCgAEASjABAEpQAQBKcAEASpABAErAAQBK0AEASuABAErwAQBLAAEASyABAEtAAQBLUAEAS2ABAEuAAQBLkAEAU0ABAFNgAQBTgAEAU6ABAFPQAQBT4AEAU/ABAFQAAQBUEAEAVDABAFRQAQBUYAEAVHABAFSQAQBUoAEAXFABAFxwAQBckAEAXLABAFzgAQBc8AEAXQABAF0QAQBdIAEAXUABAF1gAQBdcAEAXYABAF2gAQBdsAEAZWABAGWAAQBloAEAZcABAGXwAQBmAAEAZhABAGYgAQBmMAEAZlABAGZwAQBmgAEAZpABAGawAQBmwAEAa1ABAG2QAQBwAAEAckABAHJwAQBykAEAcrABAHLQAQBy8AEAcxABAHMgAQBzUAEAdOABAHawAQB20AEAdvABAHcQAQB3MAEAd1ABAHdwAQB3kAEAeWABAHmQAQB5wAEAefABAHogAQB6UAEAeoABAHqwAQB60AEAgoABAIKgAQCC0AEAgvABAIMgAQCDMAEAg0ABAINQAQCDYAEAg4ABAIOgAQCDsAEAg8ABAIPgAQCD8AEAi6ABAIvAAQCL4AEAjAABAIwwAQCMQAEAjFABAIxgAQCMcAEAjJABAIywAQCMwAEAjNABAIzwAQCNAAEAlLABAJTQAQCU8AEAlRABAJVAAQCVUAEAlWABAJVwAQCVgAEAlaABAJXAAQCV0AEAleABAJYAAQCWEAEAncABAJ3gAQCeEAEAnjABAJ5gAQCecAEAnoABAJ6QAQCeoAEAnsABAJ7gAQCe8AEAnwABAJ8gAQCfMAEApuABAKcAAQCnIAEAp0ABAKdwAQCngAEAp5ABAKegAQCnsAEAp9ABAKfwAQCoAAEAqBABAKgwAQCoQAEAr/ABALAQAQCwMAEAsFABALCAAQCwkAEAsKABALCwAQCwwAEAsOABALEAAQCxEAEAsSABALFAAQCxUAEAuQABALkgAQC5QAEAuWABALmQAQC5oAEAubABALnAAQC50AEAufABALoQAQC6IAEAujABALpQAQC6YAEAw5ABAMXAAQDHwAEAycABAMngAQDKAAEAyiABAMpAAQDKcAEAyoABAMqQAQDKwAEAytABAMrwAQDLAAEAyyABAMtQAQDLYAEAy3ABAMugAQDLsAEAzAABAM2QAQDOIAEAzkABAM5gAQDO8AEAzyABAM9QAQDPcAEA1AABANZAAQDYsAEA2vABANsgAQDbQAEA22ABANuAAQDboAEA28ABANvQAQDcAAEA3ZABAN+gAQDfwAEA3+ABAOAAAQDgIAEA4EABAOBgAQDggAEA4KABAOKwAQDi4AEA4xABAONAAQDjcAEA46ABAOPQAQDkAAEA5DABAORQAQDsAAEA7CABAOxAAQDsYAEA7JABAOygAQDssAEA7MABAOzQAQDs8AEA7RABAO0gAQDtMAEA7VABAO1gAQD1EAEA9TABAPVQAQD1cAEA9aABAPWwAQD1wAEA9dABAPXgAQD2AAEA9iABAPYwAQD2QAEA9mABAPZwAQD+IAEA/kABAP5wAQD+kAEA/sABAP7QAQD+4AEA/vABAP8AAQD/IAEA/0ABAP9QAQD/YAEA/4ABAP+QAQEBIAEBATABAQFAAQEBYAEBCRABAQkwAQEJUAEBCXABAQmgAQEJsAEBCcABAQnQAQEJ4AEBCgABAQogAQEKMAEBCkABAQpgAQEKcAEBEiABARJAAQESYAEBEoABARKwAQESwAEBEtABARLgAQES8AEBExABARMwAQETQAEBE1ABARNwAQETgAEBGzABARtQAQEbcAEBG5ABARvAAQEb0AEBG+ABARvwAQEcAAEBHCABARxAAQEcUAEBHGABARyAAQEckAEBJEABASRgAQEkgAEBJKABASTQAQEk4AEBJPABASUAAQElEAEBJTABASVQAQElYAEBJXABASWQAQEloAEBLVABAS1wAQEtkAEBLbABAS3gAQEt8AEBLgABAS4QAQEuIAEBLkABAS5gAQEucAEBLoABAS6gAQEusAEBM0ABATWAAQE38AEBOjABATpgAQE6gAEBOqABATrAAQE64AEBOwABATsQAQE7QAEBPNABAT6gAQE+wAEBPuABAT8AAQE/IAEBP0ABAT9gAQE/gAEBQVABAUGAAQFBsAEBQeABAUIQAQFCQAEBQnABAUKgAQFCwAEBSnABAUqQAQFKsAEBStABAUsAAQFLEAEBSyABAUswAQFLQAEBS2ABAUuAAQFLkAEBS6ABAUvAAQFL0AEBU4ABAVOgAQFTwAEBU+ABAVQQAQFUIAEBVDABAVRAAQFUUAEBVHABAVSQAQFUoAEBVLABAVTQAQFU4AEBXJABAVywAQFc0AEBXPABAV0gAQFdMAEBXUABAV1QAQFdYAEBXYABAV2gAQFdsAEBXcABAV3gAQFd8AEBZaABAWXAAQFl8AEBZhABAWZAAQFmUAEBZmABAWZwAQFmgAEBZqABAWbAAQFm0AEBZuABAWcAAQFnEAEBbsABAW7gAQFvAAEBbyABAW9QAQFvYAEBb3ABAW+AAQFvkAEBb7ABAW/QAQFv4AEBb/ABAXAQAQFwIAEBd9ABAXfwAQF4EAEBeDABAXhgAQF4cAEBeIABAXiQAQF4oAEBeMABAXjgAQF48AEBeQABAXkgAQF5MAEBgOABAYEAAQGBIAEBgUABAYFwAQGBgAEBgZABAYGgAQGBsAEBgdABAYHwAQGCAAEBghABAYIwAQGCQAEBi3ABAY2gAQGPoAEBkaABAZHAAQGR4AEBkgABAZIgAQGSUAEBkmABAZJwAQGSoAEBkrABAZLQAQGS4AEBkwABAZMwAQGTQAEBk1ABAZOAAQGTkAEBk+ABAZVwAQGWAAEBliABAZZAAQGW0AEBlwABAZcwAQGXUAEBm+ABAZ4gAQGgkAEBotABAaMAAQGjIAEBo0ABAaNgAQGjgAEBo6ABAaOwAQGj4AEBpXABAaeAAQGnoAEBp8ABAafgAQGoAAEBqCABAahAAQGoYAEBqIABAaqQAQGqwAEBqvABAasgAQGrUAEBq4ABAauwAQGr4AEBrBABAawwAQGz4AEBtAABAbQgAQG0QAEBtHABAbSAAQG0kAEBtKABAbSwAQG00AEBtPABAbUAAQG1EAEBtTABAbVAAQG88AEBvRABAb0wAQG9UAEBvYABAb2QAQG9oAEBvbABAb3AAQG94AEBvgABAb4QAQG+IAEBvkABAb5QAQHGAAEBxiABAcZQAQHGcAEBxqABAcawAQHGwAEBxtABAcbgAQHHAAEBxyABAccwAQHHQAEBx2ABAcdwAQHJAAEByRABAckgAQHJQAEB0PABAdEQAQHRMAEB0VABAdGAAQHRkAEB0aABAdGwAQHRwAEB0eABAdIAAQHSEAEB0iABAdJAAQHSUAEB2gABAdogAQHaQAEB2mABAdqQAQHaoAEB2rABAdrAAQHa0AEB2vABAdsQAQHbIAEB2zABAdtQAQHbYAEB4xABAeMwAQHjUAEB43ABAeOgAQHjsAEB48ABAePQAQHj4AEB5AABAeQgAQHkMAEB5EABAeRgAQHkcAEB7CABAexAAQHsYAEB7IABAeywAQHswAEB7NABAezgAQHs8AEB7RABAe0wAQHtQAEB7VABAe1wAQHtgAEB9TABAfVQAQH1cAEB9ZABAfXAAQH10AEB9eABAfXwAQH2AAEB9iABAfZAAQH2UAEB9mABAfaAAQH2kAEB+yABAf1gAQH/0AECAhABAgJAAQICYAECAoABAgKgAQICwAECAuABAgLwAQIDIAECBLABAgaAAQIGoAECBsABAgbgAQIHAAECByABAgdAAQIHYAECCTABAglgAQIJkAECCcABAgnwAQIKIAECClABAgqAAQIKoAECElABAhJwAQISkAECErABAhLgAQIS8AECEwABAhMQAQITIAECE0ABAhNgAQITcAECE4ABAhOgAQITsAECG2ABAhuAAQIboAECG8ABAhvwAQIcAAECHBABAhwgAQIcMAECHFABAhxwAQIcgAECHJABAhywAQIcwAECJHABAiSQAQIksAECJNABAiUAAQIlEAECJSABAiUwAQIlQAECJWABAiWAAQIlkAECJaABAiXAAQIl0AECLYABAi2gAQItwAECLeABAi4QAQIuIAECLjABAi5AAQIuUAECLnABAi6QAQIuoAECLrABAi7QAQIu4AECNpABAjawAQI20AECNvABAjcgAQI3MAECN0ABAjdQAQI3YAECN4ABAjegAQI3sAECN8ABAjfgAQI38AECP6ABAj/AAQI/4AECQAABAkAwAQJAQAECQFABAkBgAQJAcAECQJABAkCwAQJAwAECQNABAkDwAQJBAAECSLABAkjQAQJI8AECSRABAklAAQJJUAECSWABAklwAQJJgAECSaABAknAAQJJ0AECSeABAkoAAQJKEAECSyABAkswAQJLUAECU4ABAlXAAQJYAAECWjABAlygAQJeoAECYRABAmOAAQJlgAECZ8ABAmoAAQJqIAECalABAmpwAQJqkAECarABAmrgAQJrEAECazABAmtQAQJrgAECa6ABAmvAAQJr8AECbCABAmwwAQJsgAECbhABAm5gAQJugAECbtABAm8AAQJvIAECc7ABAnXwAQJ4YAECeqABAnrQAQJ68AECexABAnswAQJ7UAECe3ABAnuAAQJ7sAECfUABAn+QAQJ/sAECf9ABAn/wAQKAEAECgDABAoBQAQKAcAECgJABAoCwAQKDAAECgzABAoNgAQKDkAECg8ABAoPwAQKEIAEChFABAoSAAQKEsAEChNABAoyAAQKMoAECjNABAozwAQKNIAECjTABAo1AAQKNUAECjWABAo2AAQKNoAECjbABAo3AAQKN4AECjfABAo8AAQKPEAECjzABApbgAQKXAAEClyABApdAAQKXcAECl4ABApeQAQKXoAECl7ABApfQAQKX8AECmAABApgQAQKYMAECmEABAp/wAQKgEAECoEABAqBgAQKgkAECoKABAqCwAQKgwAECoNABAqDwAQKhEAECoSABAqEwAQKhUAECoWABAqJwAQKiwAECovABAqMQAQKkIAECpLABAqTgAQKlEAECpTABAqbwAQKoEAECr8ABAq/gAQKwAAECsCABArBQAQKwYAECsHABArCAAQKwkAECsLABArDQAQKw4AECsPABArEQAQKxIAECuNABArjwAQK5IAECuUABArlwAQK5gAECuZABArmgAQK5sAECudABArnwAQK6AAECuhABArowAQK6QAECu1ABArtgAQK7gAECwzABAsNQAQLDcAECw5ABAsPAAQLD0AECw+ABAsPwAQLEAAECxCABAsRAAQLEUAECxGABAsSAAQLEkAECzEABAsxgAQLMkAECzLABAszgAQLM8AECzQABAs0QAQLNIAECzUABAs1gAQLNcAECzYABAs2gAQLNsAECz0ABAs9QAQLPYAECz4ABAtcwAQLXUAEC13ABAteQAQLXwAEC19ABAtfgAQLX8AEC2AABAtggAQLYQAEC2FABAthgAQLYgAEC2JABAuBAAQLgYAEC4JABAuCwAQLg4AEC4PABAuEAAQLhEAEC4SABAuFAAQLhYAEC4XABAuGAAQLhoAEC4bABAuNQAQLk4AEC5XABAuWgAQLl0AEC5mABAuaQAQLmwAEC5uABAugAAQLpwAEC8vABAvUgAQL3IAEC+SABAvlAAQL5YAEC+YABAvmgAQL50AEC+eABAvnwAQL6IAEC+jABAvpQAQL6YAEC+oABAvqwAQL6wAEC+tABAvsAAQL7EAEC+2ABAvzwAQL9gAEC/aABAv3AAQL+UAEC/oABAv6wAQL+0AEDA2ABAwWgAQMIEAEDClABAwqAAQMKoAEDCsABAwrgAQMLAAEDCyABAwswAQMLYAEDDPABAw8AAQMPIAEDD0ABAw9gAQMPgAEDD6ABAw/AAQMP4AEDEAABAxIQAQMSQAEDEnABAxKgAQMS0AEDEwABAxMwAQMTYAEDE5ABAxOwAQMbYAEDG4ABAxugAQMbwAEDG/ABAxwAAQMcEAEDHCABAxwwAQMcUAEDHHABAxyAAQMckAEDHLABAxzAAQMkcAEDJJABAySwAQMk0AEDJQABAyUQAQMlIAEDJTABAyVAAQMlYAEDJYABAyWQAQMloAEDJcABAyXQAQMtgAEDLaABAy3QAQMt8AEDLiABAy4wAQMuQAEDLlABAy5gAQMugAEDLqABAy6wAQMuwAEDLuABAy7wAQMwgAEDMJABAzCgAQMwwAEDOHABAziQAQM4sAEDONABAzkAAQM5EAEDOSABAzkwAQM5QAEDOWABAzmAAQM5kAEDOaABAznAAQM50AEDQYABA0GgAQNBwAEDQeABA0IQAQNCIAEDQjABA0JAAQNCUAEDQnABA0KQAQNCoAEDQrABA0LQAQNC4AEDSpABA0qwAQNK0AEDSvABA0sgAQNLMAEDS0ABA0tQAQNLYAEDS4ABA0ugAQNLsAEDS8ABA0vgAQNL8AEDU6ABA1PAAQNT4AEDVAABA1QwAQNUQAEDVFABA1RgAQNUcAEDVJABA1SwAQNUwAEDVNABA1TwAQNVAAEDXLABA1zQAQNc8AEDXRABA11AAQNdUAEDXWABA11wAQNdgAEDXaABA13AAQNd0AEDXeABA14AAQNeEAEDYqABA2TgAQNnUAEDaZABA2nAAQNp4AEDagABA2ogAQNqQAEDamABA2pwAQNqoAEDbDABA24AAQNuIAEDbkABA25gAQNugAEDbqABA27AAQNu4AEDcLABA3DgAQNxEAEDcUABA3FwAQNxoAEDcdABA3IAAQNyIAEDedABA3nwAQN6EAEDejABA3pgAQN6cAEDeoABA3qQAQN6oAEDesABA3rgAQN68AEDewABA3sgAQN7MAEDguABA4MAAQODIAEDg0ABA4NwAQODgAEDg5ABA4OgAQODsAEDg9ABA4PwAQOEAAEDhBABA4QwAQOEQAEDi/ABA4wQAQOMMAEDjFABA4yAAQOMkAEDjKABA4ywAQOMwAEDjOABA40AAQONEAEDjSABA41AAQONUAEDlQABA5UgAQOVUAEDlXABA5WgAQOVsAEDlcABA5XQAQOV4AEDlgABA5YgAQOWMAEDlkABA5ZgAQOWcAEDniABA55AAQOeYAEDnoABA56wAQOewAEDntABA57gAQOe8AEDnxABA58wAQOfQAEDn1ABA59wAQOfgAEDpzABA6dQAQOngAEDp6ABA6fQAQOn4AEDp/ABA6gAAQOoEAEDqDABA6hQAQOoYAEDqHABA6iQAQOooAEDqZABA7FAAQOxYAEDsYABA7GgAQOx0AEDseABA7HwAQOyAAEDshABA7IwAQOyUAEDsmABA7JwAQOykAEDsqABA7vQAQO+AAEDwAABA8IAAQPCIAEDwkABA8JgAQPCgAEDwrABA8LAAQPC0AEDwwABA8MQAQPDMAEDw0ABA8NgAQPDkAEDw6ABA8OwAQPD4AEDw/ABA8RAAQPF0AEDxmABA8aAAQPGoAEDxzABA8dgAQPHkAEDx7ABA8xAAQPOgAED0PABA9MwAQPTYAED04ABA9OgAQPTwAED0+ABA9QAAQPUEAED1EABA9XQAQPX4AED2AABA9ggAQPYQAED2GABA9iAAQPYoAED2MABA9jgAQPa8AED2yABA9tQAQPbgAED27ABA9vgAQPcEAED3EABA9xwAQPckAED5EABA+RgAQPkgAED5KABA+TQAQPk4AED5PABA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QZAAQUGcAEFBoABBQaQAQUGoAEFBrABBQbQAQUG8AEFBwABBQcQAQUHMAEFB0ABBQ7wAQUPEAEFDzABBQ9QAQUPgAEFD5ABBQ+gAQUPsAEFD8ABBQ/gAQUQAAEFEBABBRAgAQUQQAEFEFABBRHgAQUT8AEFFCABBRRQAQUUgAEFFLABBRTgAQUVEAEFFUABBRVwAQUXgAEFF7ABBRfgAQUYEAEFGEABBRhwAQUYoAEFGNABBRkAAQUZIAEFGoABBRtQAQUc0AEFHfABBR6QAQUf0AEFIHABBSmgAQUr0AEFLdABBS/QAQUv8AEFMBABBTAwAQUwUAEFMIABBTCQAQUwoAEFMNABBTDgAQUxAAEFMRABBTEwAQUxYAEFMXABBTGAAQUxsAEFMcABBTIQAQUzoAEFNDABBTRQAQU0cAEFNQABBTUwAQU1YAEFNYABBToQAQU8UAEFPsABBUEAAQVBMAEFQVABBUFwAQVBkAEFQbABBUHQAQVB4AEFQhABBUOgAQVFsAEFRdABBUXwAQVGEAEFRjABBUZQAQVGcAEFRpABBUawAQVIwAEFSPABBUkgAQVJUAEFSYABBUmwAQVJ4AEFShABBUpAAQVKYAEFUhABBVIwAQVSUAEFUnABBVKgAQVSsAEFUsABBVLQAQVS4AEFUwABBVMgAQVTMAEFU0ABBVNgAQVTcAEFWyABBVtAAQVbYAEFW4ABBVuwAQVbwAEFW9ABBVvgAQVb8AEFXBABBVwwAQVcQAEFXFABBVxwAQVcgAEFZDABBWRQAQVkgAEFZKABBWTQAQVk4AEFZPABBWUAAQVlEAEFZTABBWVQAQVlYAEFZXABBWWQAQVloAEFZzABBWdAAQVnUAEFZ3ABBW8gAQVvQAEFb2ABBW+AAQVvsAEFb8ABBW/QAQVv4AEFb/ABBXAQAQVwMAEFcEABBXBQAQVwcAEFcIABBXgwAQV4UAEFeHABBXiQAQV4wAEFeNABBXjgAQV48AEFeQABBXkgAQV5QAEFeVABBXlgAQV5gAEFeZABBYFAAQWBYAEFgYABBYGgAQWB0AEFgeABBYHwAQWCAAEFghABBYIwAQWCUAEFgmABBYJwAQWCkAEFgqABBYpQAQWKcAEFipABBYqwAQWK4AEFivABBYsAAQWLEAEFiyABBYtAAQWLYAEFi3ABBYuAAQWLoAEFi7ABBZNgAQWTgAEFk6ABBZPAAQWT8AEFlAABBZQQAQWUIAEFlDABBZRQAQWUcAEFlIABBZSQAQWUsAEFlMABBZlQAQWbkAEFngABBaBAAQWgcAEFoJABBaCwAQWg0AEFoPABBaEQAQWhIAEFoVABBaLgAQWksAEFpNABBaTwAQWlEAEFpTABBaVQAQWlcAEFpZABBadgAQWnkAEFp8ABBafwAQWoIAEFqFABBaiAAQWosAEFqNABBbCAAQWwoAEFsMABBbDgAQWxEAEFsSABBbEwAQWxQAEFsVABBbFwAQWxkAEFsaABBbGwAQWx0AEFseABBbmQAQW5sAEFudABBbnwAQW6IAEFujABBbpAAQW6UAEFumABBbqAAQW6oAEFurABBbrAAQW64AEFuvABBcKgAQXCwAEFwuABBcMAAQXDMAEFw0ABBcNQAQXDYAEFw3ABBcOQAQXDsAEFw8ABBcPQAQXD8AEFxAABBcuwAQXL0AEFzAABBcwgAQXMUAEFzGABBcxwAQXMgAEFzJABBcywAQXM0AEFzOABBczwAQXNEAEFzSABBdTQAQXU8AEF1RABBdUwAQXVYAEF1XABBdWAAQXVkAEF1aABBdXAAQXV4AEF1fABBdYAAQXWIAEF1jABBd3gAQXeAAEF3iABBd5AAQXecAEF3oABBd6QAQXeoAEF3rABBd7QAQXe8AEF3wABBd8QAQXfMAEF30ABBebwAQXnEAEF5zABBedQAQXngAEF55ABBeegAQXnsAEF58ABBefgAQXoAAEF6BABBeggAQXoQAEF6FABBfGAAQXzsAEF9bABBfewAQX30AEF9/ABBfgQAQX4MAEF+GABBfhwAQX4gAEF+LABBfjAAQX44AEF+PABBfkgAQX5UAEF+WABBflwAQX5oAEF+bABBfoAAQX7kAEF/CABBfxAAQX8cAEF/QABBf0wAQX9YAEF/YABBgIQAQYEUAEGBsABBgkAAQYJMAEGCVABBglwAQYJkAEGCbABBgnQAQYJ4AEGChABBgugAQYNsAEGDdABBg3wAQYOEAEGDjABBg5QAQYOcAEGDpABBg6wAQYQwAEGEPABBhEgAQYRUAEGEYABBhGwAQYR4AEGEhABBhJAAQYSYAEGGhABBhowAQYaUAEGGnABBhqgAQYasAEGGsABBhrQAQYa4AEGGwABBhsgAQYbMAEGG0ABBhtgAQYbcAEGIyABBiNAAQYjYAEGI4ABBiOwAQYjwAEGI9ABBiPgAQYj8AEGJBABBiQwAQYkQAEGJFABBiRwAQYkgAEGLDABBixQAQYsgAEGLKABBizQAQYs4AEGLPABBi0AAQYtEAEGLTABBi1QAQYtYAEGLXABBi2QAQYtoAEGLzABBi9AAQYvUAEGL3ABBjcgAQY3QAEGN2ABBjeAAQY3sAEGN8ABBjfQAQY34AEGN/ABBjgQAQY4MAEGOEABBjhQAQY4cAEGOIABBkAwAQZAUAEGQHABBkCQAQZAwAEGQNABBkDgAQZA8AEGQQABBkEgAQZBQAEGQVABBkFgAQZBgAEGQZABBklAAQZJYAEGSYABBkmgAQZJ0AEGSeABBknwAQZKAAEGShABBkowAQZKUAEGSmABBkpwAQZKkAEGSqABBlJQAQZScAEGUpABBlKwAQZS4AEGUvABBlMAAQZTEAEGUyABBlNAAQZTYAEGU3ABBlOAAQZToAEGU7ABBltgAQZbgAEGW6ABBlvAAQZb8AEGXAABBlwQAQZcIAEGXDABBlxQAQZccAEGXIABBlyQAQZcsAEGXMABBmFQAQZjkAEGZgABBmhAAQZocAEGaKABBmjAAQZo4AEGaQABBmkgAQZpMAEGaWABBmrwAQZswAEGbPABBm0gAQZtUAEGbYABBm2wAQZt4AEGbhABBm/gAQZwEAEGcEABBnBwAQZwoAEGcNABBnEAAQZxMAEGcVABBnkAAQZ5IAEGeVABBnlwAQZ5oAEGebABBnnAAQZ50AEGeeABBnoAAQZ6MAEGekABBnpQAQZ6cAEGeoABBoIwAQaCUAEGgoABBoKgAQaC0AEGguABBoLwAQaDAAEGgxABBoMwAQaDYAEGg3ABBoOAAQaDoAEGg7ABBotgAQaLgAEGi7ABBovQAQaMAAEGjBABBowgAQaMMAEGjEABBoxgAQaMkAEGjKABBoywAQaM0AEGjOABBpSQAQaUsAEGlOABBpUAAQaVMAEGlUABBpVQAQaVYAEGlXABBpWQAQaVwAEGldABBpXgAQaWAAEGlhABBp5AAQaggAEGosABBqTwAQanYAEGqWABBqvQAQauQAEGsEABBrKAAQa0wAEGtOABBrUQAQa1MAEGtVABBrVwAQa1oAEGtdABBrXwAQa2EAEGtkABBrZgAQa2gAEGtrABBrbgAQa28AEGt4ABBrkQAQa5YAEGuYABBrnQAQa6AAEGuiABBr6wAQbA8AEGw2ABBsWgAQbF0AEGxfABBsYQAQbGMAEGxlABBsZwAQbGgAEGxrABBshAAQbKkAEGyrABBsrQAQbK8AEGyxABBsswAQbLUAEGy3ABBsuQAQbLsAEGzgABBs4wAQbOYAEGzpABBs7AAQbO8AEGzyABBs9QAQbPgAEGz7ABBs/QAQbXgAEG16ABBtfQAQbX8AEG2CABBtgwAQbYQAEG2FABBthgAQbYgAEG2KABBtiwAQbYwAEG2OABBtjwAQbaAAEG2hABBtowAQbh4AEG4gABBuIgAQbiQAEG4nABBuKAAQbikAEG4qABBuKwAQbi0AEG4vABBuMAAQbjEAEG4zABBuNAAQbq8AEG6xABButAAQbrYAEG65ABBuugAQbrsAEG68ABBuvQAQbr8AEG7BABBuwgAQbsMAEG7FABBuxgAQbtcAEG7cABBu3wAQbuEAEG7yABBu9wAQbvoAEG78ABBvAwAQb34AEG+AABBvggAQb4QAEG+HABBviAAQb4kAEG+KABBviwAQb40AEG+PABBvkAAQb5EAEG+TABBvlAAQcA8AEHARABBwFAAQcBYAEHAZABBwGgAQcBsAEHAcABBwHQAQcB8AEHAhABBwIgAQcCMAEHAlABBwJgAQcDcAEHA4ABBwOgAQcLUAEHC3ABBwuQAQcLsAEHC+ABBwvwAQcMAAEHDBABBwwgAQcMQAEHDGABBwxwAQcMgAEHDKABBwywAQcUYAEHFIABBxSwAQcU0AEHFQABBxUQAQcVIAEHFTABBxVAAQcVYAEHFYABBxWQAQcVoAEHFcABBxXQAQcXYAEHF3ABBxeAAQcXoAEHH1ABBx9wAQcfkAEHH7ABBx/gAQcf8AEHIAABByAQAQcgIAEHIEABByBgAQcgcAEHIIABByCgAQcgsAEHKGABByiAAQcooAEHKMABByjwAQcpAAEHKRABBykgAQcpMAEHKVABBylwAQcpgAEHKZABBymwAQcpwAEHK1ABBy1gAQctkAEHLcABBy3wAQcuIAEHLlABBy6AAQcusAEHLuABBzDwAQcxIAEHMVABBzGAAQcxsAEHMeABBzIQAQcyQAEHMnABBzKQAQc04AEHNnABBzgAAQc4oAEHOoABBz0QAQc9kAEHRsABB0jwAQdK8AEHTPABB00QAQdNMAEHTVABB01wAQdNoAEHTbABB03AAQdN8AEHTgABB04gAQdOMAEHTlABB06AAQdOkAEHTqABB07QAQdO4AEHTzABB1DAAQdRUAEHUXABB1GQAQdSIAEHUlABB1KAAQdSoAEHVzABB1lwAQdb4AEHXiABB15QAQdecAEHXpABB16wAQde0AEHXvABB18AAQdfMAEHYMABB2LQAQdi8AEHYxABB2MwAQdjUAEHY3ABB2OQAQdjsAEHY9ABB2XgAQdmEAEHZkABB2ZwAQdmoAEHZtABB2cAAQdnMAEHZ2ABB2eAAQdvMAEHb1ABB29wAQdvkAEHb8ABB2/QAQdv4AEHb/ABB3AAAQdwIAEHcEABB3BQAQdwYAEHcIABB3CQAQd4QAEHeGABB3iAAQd4oAEHeNABB3jgAQd48AEHeQABB3kQAQd5MAEHeVABB3lgAQd5cAEHeZABB3mgAQeBUAEHgXABB4GgAQeBwAEHgfABB4IAAQeCEAEHgiABB4IwAQeCUAEHgnABB4KAAQeCkAEHgrABB4LAAQeEUAEHhGABB4RwAQeEkAEHjEABB4xgAQeMgAEHjKABB4zQAQeM4AEHjPABB40AAQeNEAEHjTABB41QAQeNYAEHjXABB42QAQeNoAEHlVABB5VwAQeVkAEHlbABB5XgAQeV8AEHlgABB5YQAQeWIAEHlkABB5ZgAQeWcAEHloABB5agAQeWsAEHnmABB56AAQeeoAEHnsABB57wAQefAAEHnxABB58gAQefMAEHn1ABB59wAQefgAEHn5ABB5+wAQefwAEHp3ABB6eQAQensAEHp9ABB6gAAQeoEAEHqCABB6gwAQeoQAEHqGABB6iAAQeokAEHqKABB6jAAQeo0AEHsIABB7CgAQewwAEHsOABB7EQAQexIAEHsTABB7FAAQexUAEHsXABB7GQAQexoAEHsbABB7HQAQex4AEHtnABB7iwAQe7IAEHvWABB72QAQe9sAEHvdABB73wAQe+EAEHvjABB75AAQe+cAEHwAABB8HQAQfB8AEHwhABB8IwAQfCUAEHwnABB8KQAQfCsAEHxIABB8SwAQfE4AEHxRABB8VAAQfFcAEHxaABB8XQAQfF8AEHzaABB83AAQfN4AEHzgABB84wAQfOQAEHzlABB85gAQfOcAEHzpABB86wAQfOwAEHztABB87wAQfPAAEH1rABB9bQAQfW8AEH1xABB9dAAQfXUAEH12ABB9dwAQfXgAEH16ABB9fAAQfX0AEH1+ABB9gAAQfYEAEH38ABB9/gAQfgAAEH4CABB+BQAQfgYAEH4HABB+CAAQfgkAEH4LABB+DQAQfg4AEH4PABB+EQAQfhIAEH6NABB+jwAQfpIAEH6UABB+lwAQfpgAEH6ZABB+mgAQfpsAEH6dABB+nwAQfqAAEH6hABB+owAQfqQAEH8fABB/IQAQfyMAEH8lABB/KAAQfykAEH8qABB/KwAQfywAEH8uABB/MAAQfzEAEH8yABB/NAAQfzUAEH+wABB/sgAQf7QAEH+2ABB/uQAQf7oAEH+7ABB/vAAQf70AEH+/ABB/wQAQf8IAEH/DABB/xQAQf8YAEIBBABCAQwAQgEUAEIBHABCASgAQgEsAEIBMABCATQAQgE4AEIBQABCAUgAQgFMAEIBUABCAVgAQgFcAEIDqABCBDQAQgS0AEIFNABCBTwAQgVEAEIFTABCBVQAQgVgAEIFZABCBWgAQgV0AEIFeABCBYAAQgWEAEIFjABCBZgAQgWcAEIFoABCBawAQgWwAEIF1ABCBjgAQgZcAEIGZABCBmwAQgaQAEIGnABCBqgAQgawAEIH1ABCCGQAQgkAAEIJkABCCZwAQgmkAEIJrABCCbQAQgm8AEIJxABCCcgAQgnUAEIKOABCCrwAQgrEAEIKzABCCtQAQgrcAEIK5ABCCuwAQgr0AEIK/ABCC4AAQguMAEILmABCC6QAQguwAEILvABCC8gAQgvUAEIL4ABCC+gAQg3UAEIN3ABCDeQAQg3sAEIN+ABCDfwAQg4AAEIOBABCDggAQg4QAEIOGABCDhwAQg4gAEIOKABCDiwAQhAYAEIQIABCECgAQhAwAEIQPABCEEAAQhBEAEIQSABCEEwAQhBUAEIQXABCEGAAQhBkAEIQbABCEHAAQhJcAEISZABCEnAAQhJ4AEIShABCEogAQhKMAEISkABCEpQAQhKcAEISpABCEqgAQhKsAEIStABCErgAQhMcAEITIABCEyQAQhMsAEIVGABCFSAAQhUoAEIVMABCFTwAQhVAAEIVRABCFUgAQhVMAEIVVABCFVwAQhVgAEIVZABCFWwAQhVwAEIXXABCF2QAQhdsAEIXdABCF4AAQheEAEIXiABCF4wAQheQAEIXmABCF6AAQhekAEIXqABCF7AAQhe0AEIZoABCGagAQhmwAEIZuABCGcQAQhnIAEIZzABCGdAAQhnUAEIZ3ABCGeQAQhnoAEIZ7ABCGfQAQhn4AEIb5ABCG+wAQhv0AEIb/ABCHAgAQhwMAEIcEABCHBQAQhwYAEIcIABCHCgAQhwsAEIcMABCHDgAQhw8AEIeKABCHjAAQh44AEIeQABCHkwAQh5QAEIeVABCHlgAQh5cAEIeZABCHmwAQh5wAEIedABCHnwAQh6AAEIfpABCIDQAQiDQAEIhYABCIWwAQiF0AEIhfABCIYQAQiGMAEIhlABCIZgAQiGkAEIiCABCInwAQiKEAEIijABCIpQAQiKcAEIipABCIqwAQiK0AEIjKABCIzQAQiNAAEIjTABCI1gAQiNkAEIjcABCI3wAQiOEAEIlcABCJXgAQiWAAEIliABCJZQAQiWYAEIlnABCJaAAQiWkAEIlrABCJbQAQiW4AEIlvABCJcQAQiXIAEIntABCJ7wAQifEAEInzABCJ9gAQifcAEIn4ABCJ+QAQifoAEIn8ABCJ/gAQif8AEIoAABCKAgAQigMAEIp+ABCKgAAQioIAEIqEABCKhwAQiogAEIqJABCKigAQiosAEIqNABCKjwAQipAAEIqRABCKkwAQipQAEIsPABCLEQAQixQAEIsWABCLGQAQixoAEIsbABCLHAAQix0AEIsfABCLIQAQiyIAEIsjABCLJQAQiyYAEIuhABCLowAQi6UAEIunABCLqgAQi6sAEIusABCLrQAQi64AEIuwABCLsgAQi7MAEIu0ABCLtgAQi7cAEIwyABCMNAAQjDYAEIw4ABCMOwAQjDwAEIw9ABCMPgAQjD8AEIxBABCMQwAQjEQAEIxFABCMRwAQjEgAEIzDABCMxQAQjMcAEIzJABCMzAAQjM0AEIzOABCMzwAQjNAAEIzSABCM1AAQjNUAEIzWABCM2AAQjNkAEI1sABCNjwAQja8AEI3PABCN0QAQjdMAEI3VABCN1wAQjdoAEI3bABCN3AAQjd8AEI3gABCN4gAQjeMAEI3lABCN6AAQjekAEI3qABCN7QAQje4AEI3zABCODAAQjhUAEI4XABCOGQAQjiIAEI4lABCOKAAQjioAEI5zABCOlwAQjr4AEI7iABCO5QAQjucAEI7pABCO6wAQju0AEI7vABCO8AAQjvMAEI8MABCPLQAQjy8AEI8xABCPMwAQjzUAEI83ABCPOQAQjzsAEI89ABCPXgAQj2EAEI9kABCPZwAQj2oAEI9tABCPcAAQj3MAEI92ABCPeAAQj/MAEI/1ABCP9wAQj/kAEI/8ABCP/QAQj/4AEI//ABCQAAAQkAIAEJAEABCQBQAQkAYAEJAIABCQCQAQkIQAEJCGABCQiAAQkIoAEJCNABCQjgAQkI8AEJCQABCQkQAQkJMAEJCVABCQlgAQkJcAEJCZABCQmgAQkRUAEJEXABCRGgAQkRwAEJEfABCRIAAQkSEAEJEiABCRIwAQkSUAEJEnABCRKAAQkSkAEJErABCRLAAQkUUAEJFGABCRRwAQkUkAEJHEABCRxgAQkcgAEJHKABCRzQAQkc4AEJHPABCR0AAQkdEAEJHTABCR1QAQkdYAEJHXABCR2QAQkdoAEJJVABCSVwAQklkAEJJbABCSXgAQkl8AEJJgABCSYQAQkmIAEJJkABCSZgAQkmcAEJJoABCSagAQkmsAEJLmABCS6AAQkuoAEJLsABCS7wAQkvAAEJLxABCS8gAQkvMAEJL1ABCS9wAQkvgAEJL5ABCS+wAQkvwAEJN3ABCTeQAQk3sAEJN9ABCTgAAQk4EAEJOCABCTgwAQk4QAEJOGABCTiAAQk4kAEJOKABCTjAAQk40AEJQIABCUCgAQlAwAEJQOABCUEQAQlBIAEJQTABCUFAAQlBUAEJQXABCUGQAQlBoAEJQbABCUHQAQlB4AEJRnABCUiwAQlLIAEJTWABCU2QAQlNsAEJTdABCU3wAQlOEAEJTjABCU5AAQlOcAEJUAABCVHQAQlR8AEJUhABCVIwAQlSUAEJUnABCVKQAQlSsAEJVIABCVSwAQlU4AEJVRABCVVAAQlVcAEJVaABCVXQAQlV8AEJXaABCV3AAQld4AEJXgABCV4wAQleQAEJXlABCV5gAQlecAEJXpABCV6wAQlewAEJXtABCV7wAQlfAAEJZrABCWbQAQlm8AEJZxABCWdAAQlnUAEJZ2ABCWdwAQlngAEJZ6ABCWfAAQln0AEJZ+ABCWgAAQloEAEJb8ABCW/gAQlwAAEJcCABCXBQAQlwYAEJcHABCXCAAQlwkAEJcLABCXDQAQlw4AEJcPABCXEQAQlxIAEJeNABCXjwAQl5IAEJeUABCXlwAQl5gAEJeZABCXmgAQl5sAEJedABCXnwAQl6AAEJehABCXowAQl6QAEJgfABCYIQAQmCMAEJglABCYKAAQmCkAEJgqABCYKwAQmCwAEJguABCYMAAQmDEAEJgyABCYNAAQmDUAEJiwABCYsgAQmLQAEJi2ABCYuQAQmLoAEJi7ABCYvAAQmL0AEJi/ABCYwQAQmMIAEJjDABCYxQAQmMYAEJlBABCZQwAQmUUAEJlHABCZSgAQmUsAEJlMABCZTQAQmU4AEJlQABCZUgAQmVMAEJlUABCZVgAQmVcAEJnqABCaDQAQmi0AEJpNABCaTwAQmlEAEJpTABCaVQAQmlgAEJpZABCaWgAQml0AEJpeABCaYAAQmmEAEJpjABCaZgAQmmcAEJpoABCaawAQmmwAEJpxABCaigAQmpMAEJqVABCalwAQmqAAEJqjABCapgAQmqgAEJrxABCbFQAQmzwAEJtgABCbYwAQm2UAEJtnABCbaQAQm2sAEJttABCbbgAQm3EAEJuKABCbqwAQm60AEJuvABCbsQAQm7MAEJu1ABCbtwAQm7kAEJu7ABCb3AAQm98AEJviABCb5QAQm+gAEJvrABCb7gAQm/EAEJv0ABCb9gAQnHEAEJxzABCcdQAQnHcAEJx6ABCcewAQnHwAEJx9ABCcfgAQnIAAEJyCABCcgwAQnIQAEJyGABCchwAQnQIAEJ0EABCdBgAQnQgAEJ0LABCdDAAQnQ0AEJ0OABCdDwAQnREAEJ0TABCdFAAQnRUAEJ0XABCdGAAQnZMAEJ2VABCdmAAQnZoAEJ2dABCdngAQnZ8AEJ2gABCdoQAQnaMAEJ2lABCdpgAQnacAEJ2pABCdqgAQncMAEJ3EABCdxQAQnccAEJ5CABCeRAAQnkYAEJ5IABCeSwAQnkwAEJ5NABCeTgAQnk8AEJ5RABCeUwAQnlQAEJ5VABCeVwAQnlgAEJ7TABCe1QAQntcAEJ7ZABCe3AAQnt0AEJ7eABCe3wAQnuAAEJ7iABCe5AAQnuUAEJ7mABCe6AAQnukAEJ9kABCfZgAQn2gAEJ9qABCfbQAQn24AEJ9vABCfcAAQn3EAEJ9zABCfdQAQn3YAEJ93ABCfeQAQn3oAEJ/1ABCf9wAQn/kAEJ/7ABCf/gAQn/8AEKAAABCgAQAQoAIAEKAEABCgBgAQoAcAEKAIABCgCgAQoAsAEKCGABCgiAAQoIoAEKCMABCgjwAQoJAAEKCRABCgkgAQoJMAEKCVABCglwAQoJgAEKCZABCgmwAQoJwAEKDlABChCQAQoTAAEKFUABChVwAQoVkAEKFbABChXQAQoV8AEKFhABChYgAQoWUAEKF+ABChmwAQoZ0AEKGfABChoQAQoaMAEKGlABChpwAQoakAEKHGABChyQAQocwAEKHPABCh0gAQodUAEKHYABCh2wAQod0AEKJYABCiWgAQolwAEKJeABCiYQAQomIAEKJjABCiZAAQomUAEKJnABCiaQAQomoAEKJrABCibQAQom4AEKLpABCi6wAQou0AEKLvABCi8gAQovMAEKL0ABCi9QAQovYAEKL4ABCi+gAQovsAEKL8ABCi/gAQov8AEKN6ABCjfAAQo34AEKOAABCjgwAQo4QAEKOFABCjhgAQo4cAEKOJABCjiwAQo4wAEKONABCjjwAQo5AAEKQLABCkDQAQpBAAEKQSABCkFQAQpBYAEKQXABCkGAAQpBkAEKQbABCkHQAQpB4AEKQfABCkIQAQpCIAEKSdABCknwAQpKEAEKSjABCkpgAQpKcAEKSoABCkqQAQpKoAEKSsABCkrgAQpK8AEKSwABCksgAQpLMAEKUuABClMAAQpTIAEKU0ABClNwAQpTgAEKU5ABClOgAQpTsAEKU9ABClPwAQpUAAEKVBABClQwAQpUQAEKW/ABClwQAQpcMAEKXFABClyAAQpckAEKXKABClywAQpcwAEKXOABCl0AAQpdEAEKXSABCl1AAQpdUAEKZoABCmiwAQpqsAEKbLABCmzQAQps8AEKbRABCm0wAQptYAEKbXABCm2AAQptsAEKbcABCm3gAQpt8AEKbhABCm5AAQpuUAEKbmABCm6QAQpuoAEKbvABCnCAAQpxEAEKcTABCnFQAQpx4AEKchABCnJAAQpyYAEKdvABCnkwAQp7oAEKfeABCn4QAQp+MAEKflABCn5wAQp+kAEKfrABCn7AAQp+8AEKgIABCoKQAQqCsAEKgtABCoLwAQqDEAEKgzABCoNQAQqDcAEKg5ABCoWgAQqF0AEKhgABCoYwAQqGYAEKhpABCobAAQqG8AEKhyABCodAAQqO8AEKjxABCo8wAQqPUAEKj4ABCo+QAQqPoAEKj7ABCo/AAQqP4AEKkAABCpAQAQqQIAEKkEABCpBQAQqYAAEKmCABCphAAQqYYAEKmJABCpigAQqYsAEKmMABCpjQAQqY8AEKmRABCpkgAQqZMAEKmVABCplgAQqhEAEKoTABCqFgAQqhgAEKobABCqHAAQqh0AEKoeABCqHwAQqiEAEKojABCqJAAQqiUAEKonABCqKAAQqkEAEKpCABCqQwAQqkUAEKrAABCqwgAQqsQAEKrGABCqyQAQqsoAEKrLABCqzAAQqs0AEKrPABCq0QAQqtIAEKrTABCq1QAQqtYAEKtRABCrUwAQq1UAEKtXABCrWgAQq1sAEKtcABCrXQAQq14AEKtgABCrYgAQq2MAEKtkABCrZgAQq2cAEKviABCr5AAQq+YAEKvoABCr6wAQq+wAEKvtABCr7gAQq+8AEKvxABCr8wAQq/QAEKv1ABCr9wAQq/gAEKxzABCsdQAQrHcAEKx5ABCsfAAQrH0AEKx+ABCsfwAQrIAAEKyCABCshAAQrIUAEKyGABCsiAAQrIkAEK0EABCtBgAQrQgAEK0KABCtDQAQrQ4AEK0PABCtEAAQrREAEK0TABCtFQAQrRYAEK0XABCtGQAQrRoAEK1jABCthwAQra4AEK3SABCt1QAQrdcAEK3ZABCt2wAQrd0AEK3fABCt4AAQreMAEK38ABCuGQAQrhsAEK4dABCuHwAQriEAEK4jABCuJQAQricAEK5EABCuRwAQrkoAEK5NABCuUAAQrlMAEK5WABCuWQAQrlsAEK7WABCu2AAQrtoAEK7cABCu3wAQruAAEK7hABCu4gAQruMAEK7lABCu5wAQrugAEK7pABCu6wAQruwAEK9nABCvaQAQr2sAEK9tABCvcAAQr3EAEK9yABCvcwAQr3QAEK92ABCveAAQr3kAEK96ABCvfAAQr30AEK/4ABCv+gAQr/wAEK/+ABCwAQAQsAIAELADABCwBAAQsAUAELAHABCwCQAQsAoAELALABCwDQAQsA4AELCJABCwiwAQsI4AELCQABCwkwAQsJQAELCVABCwlgAQsJcAELCZABCwmwAQsJwAELCdABCwnwAQsKAAELEbABCxHQAQsR8AELEhABCxJAAQsSUAELEmABCxJwAQsSgAELEqABCxLAAQsS0AELEuABCxMAAQsTEAELGsABCxrgAQsbAAELGyABCxtQAQsbYAELG3ABCxuAAQsbkAELG7ABCxvQAQsb4AELG/ABCxwQAQscIAELI9ABCyPwAQskEAELJDABCyRgAQskcAELJIABCySQAQskoAELJMABCyTgAQsk8AELJQABCyUgAQslMAELLmABCzCQAQsykAELNJABCzSwAQs00AELNPABCzUQAQs1QAELNVABCzVgAQs1kAELNaABCzXAAQs10AELNfABCzYgAQs2MAELNkABCzZwAQs2gAELNtABCzhgAQs48AELORABCzkwAQs5wAELOfABCzogAQs6QAELPtABC0EQAQtDgAELRcABC0XwAQtGEAELRjABC0ZQAQtGcAELRpABC0agAQtG0AELSGABC0pwAQtKkAELSrABC0rQAQtK8AELSxABC0swAQtLUAELS3ABC02AAQtNsAELTeABC04QAQtOQAELTnABC06gAQtO0AELTwABC08gAQtW0AELVvABC1cQAQtXMAELV2ABC1dwAQtXgAELV5ABC1egAQtXwAELV+ABC1fwAQtYAAELWCABC1gwAQtf4AELYAABC2AgAQtgQAELYHABC2CAAQtgkAELYKABC2CwAQtg0AELYPABC2EAAQthEAELYTABC2FAAQto8AELaRABC2lAAQtpYAELaZABC2mgAQtpsAELacABC2nQAQtp8AELahABC2ogAQtqMAELalABC2pgAQtr8AELbAABC2wQAQtsMAELc+ABC3QAAQt0IAELdEABC3RwAQt0gAELdJABC3SgAQt0sAELdNABC3TwAQt1AAELdRABC3UwAQt1QAELfPABC30QAQt9MAELfVABC32AAQt9kAELfaABC32wAQt9wAELfeABC34AAQt+EAELfiABC35AAQt+UAELhgABC4YgAQuGQAELhmABC4aQAQuGoAELhrABC4bAAQuG0AELhvABC4cQAQuHIAELhzABC4dQAQuHYAELjxABC48wAQuPUAELj3ABC4+gAQuPsAELj8ABC4/QAQuP4AELkAABC5AgAQuQMAELkEABC5BgAQuQcAELmCABC5hAAQuYYAELmIABC5iwAQuYwAELmNABC5jgAQuY8AELmRABC5kwAQuZQAELmVABC5lwAQuZgAELnhABC6BQAQuiwAELpQABC6UwAQulUAELpXABC6WQAQulsAELpdABC6XgAQumEAELp6ABC6lwAQupkAELqbABC6nQAQup8AELqhABC6owAQuqUAELrCABC6xQAQusgAELrLABC6zgAQutEAELrUABC61wAQutkAELtUABC7VgAQu1gAELtaABC7XQAQu14AELtfABC7YAAQu2EAELtjABC7ZQAQu2YAELtnABC7aQAQu2oAELvlABC75wAQu+kAELvrABC77gAQu+8AELvwABC78QAQu/IAELv0ABC79gAQu/cAELv4ABC7+gAQu/sAELx2ABC8eAAQvHoAELx8ABC8fwAQvIAAELyBABC8ggAQvIMAELyFABC8hwAQvIgAELyJABC8iwAQvIwAEL0HABC9CQAQvQsAEL0NABC9EAAQvREAEL0SABC9EwAQvRQAEL0WABC9GAAQvRkAEL0aABC9HAAQvR0AEL2YABC9mgAQvZwAEL2eABC9oQAQvaIAEL2jABC9pAAQvaUAEL2nABC9qQAQvaoAEL2rABC9rQAQva4AEL4pABC+KwAQvi0AEL4vABC+MgAQvjMAEL40ABC+NQAQvjYAEL44ABC+OgAQvjsAEL48ABC+PgAQvj8AEL66ABC+vAAQvr4AEL7AABC+wwAQvsQAEL7FABC+xgAQvscAEL7JABC+ywAQvswAEL7NABC+zwAQvtAAEL9jABC/hgAQv6YAEL/GABC/yAAQv8oAEL/MABC/zgAQv9EAEL/SABC/0wAQv9YAEL/XABC/2QAQv9oAEL/cABC/3wAQv+AAEL/hABC/5AAQv+UAEL/qABDAAwAQwAwAEMAOABDAEAAQwBkAEMAcABDAHwAQwCEAEMBqABDAjgAQwLUAEMDZABDA3AAQwN4AEMDgABDA4gAQwOQAEMDmABDA5wAQwOoAEMEDABDBJAAQwSYAEMEoABDBKgAQwSwAEMEuABDBMAAQwTIAEME0ABDBVQAQwVgAEMFbABDBXgAQwWEAEMFkABDBZwAQwWoAEMFtABDBbwAQweoAEMHsABDB7gAQwfAAEMHzABDB9AAQwfUAEMH2ABDB9wAQwfkAEMH7ABDB/AAQwf0AEMH/ABDCAAAQwnsAEMJ9ABDCfwAQwoEAEMKEABDChQAQwoYAEMKHABDCiAAQwooAEMKMABDCjQAQwo4AEMKQABDCkQAQwwwAEMMOABDDEQAQwxMAEMMWABDDFwAQwxgAEMMZABDDGgAQwxwAEMMeABDDHwAQwyAAEMMiABDDIwAQwzwAEMM9ABDDPgAQw0AAEMO7ABDDvQAQw78AEMPBABDDxAAQw8UAEMPGABDDxwAQw8gAEMPKABDDzAAQw80AEMPOABDD0AAQw9EAEMRMABDETgAQxFAAEMRSABDEVQAQxFYAEMRXABDEWAAQxFkAEMRbABDEXQAQxF4AEMRfABDEYQAQxGIAEMTdABDE3wAQxOEAEMTjABDE5gAQxOcAEMToABDE6QAQxOoAEMTsABDE7gAQxO8AEMTwABDE8gAQxPMAEMVuABDFcAAQxXIAEMV0ABDFdwAQxXgAEMV5ABDFegAQxXsAEMV9ABDFfwAQxYAAEMWBABDFgwAQxYQAEMX/ABDGAQAQxgMAEMYFABDGCAAQxgkAEMYKABDGCwAQxgwAEMYOABDGEAAQxhEAEMYSABDGFAAQxhUAEMZeABDGggAQxqkAEMbNABDG0AAQxtIAEMbUABDG1gAQxtgAEMbaABDG2wAQxt4AEMb3ABDHFAAQxxYAEMcYABDHGgAQxxwAEMceABDHIAAQxyIAEMc/ABDHQgAQx0UAEMdIABDHSwAQx04AEMdRABDHVAAQx1YAEMfRABDH0wAQx9UAEMfXABDH2gAQx9sAEMfcABDH3QAQx94AEMfgABDH4gAQx+MAEMfkABDH5gAQx+cAEMhiABDIZAAQyGYAEMhoABDIawAQyGwAEMhtABDIbgAQyG8AEMhxABDIcwAQyHQAEMh1ABDIdwAQyHgAEMjzABDI9QAQyPcAEMj5ABDI/AAQyP0AEMj+ABDI/wAQyQAAEMkCABDJBAAQyQUAEMkGABDJCAAQyQkAEMmEABDJhgAQyYkAEMmLABDJjgAQyY8AEMmQABDJkQAQyZIAEMmUABDJlgAQyZcAEMmYABDJmgAQyZsAEMoWABDKGAAQyhoAEMocABDKHwAQyiAAEMohABDKIgAQyiMAEMolABDKJwAQyigAEMopABDKKwAQyiwAEMqnABDKqQAQyqsAEMqtABDKsAAQyrEAEMqyABDKswAQyrQAEMq2ABDKuAAQyrkAEMq6ABDKvAAQyr0AEMs4ABDLOgAQyzwAEMs+ABDLQQAQy0IAEMtDABDLRAAQy0UAEMtHABDLSQAQy0oAEMtLABDLTQAQy04AEMvhABDMBAAQzCQAEMxEABDMRgAQzEgAEMxKABDMTAAQzE8AEMxQABDMUQAQzFQAEMxVABDMVwAQzFgAEMxbABDMXgAQzF8AEMxgABDMYwAQzGQAEMxpABDMggAQzIsAEMyNABDMkAAQzJkAEMycABDMnwAQzKEAEMzqABDNDgAQzTUAEM1ZABDNXAAQzV4AEM1gABDNYgAQzWQAEM1mABDNZwAQzWoAEM2DABDNpAAQzaYAEM2oABDNqgAQzawAEM2uABDNsAAQzbIAEM20ABDN1QAQzdgAEM3bABDN3gAQzeEAEM3kABDN5wAQzeoAEM3tABDN7wAQzmoAEM5sABDObgAQznAAEM5zABDOdAAQznUAEM52ABDOdwAQznkAEM57ABDOfAAQzn0AEM5/ABDOgAAQzvsAEM79ABDO/wAQzwEAEM8EABDPBQAQzwYAEM8HABDPCAAQzwoAEM8MABDPDQAQzw4AEM8QABDPEQAQz4wAEM+OABDPkQAQz5MAEM+WABDPlwAQz5gAEM+ZABDPmgAQz5wAEM+eABDPnwAQz6AAEM+iABDPowAQz7wAEM+9ABDPvgAQz8AAENA7ABDQPQAQ0D8AENBBABDQRAAQ0EUAENBGABDQRwAQ0EgAENBKABDQTAAQ0E0AENBOABDQUAAQ0FEAENDMABDQzgAQ0NAAENDSABDQ1QAQ0NYAENDXABDQ2AAQ0NkAENDbABDQ3QAQ0N4AENDfABDQ4QAQ0OIAENFdABDRXwAQ0WEAENFjABDRZgAQ0WcAENFoABDRaQAQ0WoAENFsABDRbgAQ0W8AENFwABDRcgAQ0XMAENHuABDR8AAQ0fIAENH0ABDR9wAQ0fgAENH5ABDR+gAQ0fsAENH9ABDR/wAQ0gAAENIBABDSAwAQ0gQAENJ/ABDSgQAQ0oMAENKFABDSiAAQ0okAENKKABDSiwAQ0owAENKOABDSkAAQ0pEAENKSABDSlAAQ0pUAENLeABDTAgAQ0ykAENNNABDTUAAQ01MAENNVABDTVwAQ01kAENNbABDTXAAQ018AENN4ABDTlQAQ05gAENObABDTngAQ06EAENOkABDTpwAQ06oAENPHABDTygAQ080AENPQABDT0wAQ09YAENPZABDT3AAQ094AENRZABDUWwAQ1F4AENRgABDUYwAQ1GQAENRlABDUZgAQ1GcAENRpABDUbAAQ1G0AENRuABDUcAAQ1HEAENTsABDU7gAQ1PEAENTzABDU9gAQ1PcAENT4ABDU+QAQ1PoAENT8ABDU/wAQ1QAAENUBABDVAwAQ1QQAENV/ABDVgQAQ1YQAENWGABDViQAQ1YoAENWLABDVjAAQ1Y0AENWPABDVkgAQ1ZMAENWUABDVlgAQ1ZcAENYSABDWFAAQ1hcAENYZABDWHAAQ1h0AENYeABDWHwAQ1iAAENYiABDWJQAQ1iYAENYnABDWKQAQ1ioAENalABDWpwAQ1qkAENarABDWrgAQ1q8AENawABDWsQAQ1rIAENa0ABDWtwAQ1rgAENa5ABDWuwAQ1rwAENc3ABDXOQAQ1zsAENc9ABDXQAAQ10EAENdCABDXQwAQ10QAENdGABDXSQAQ10oAENdLABDXTQAQ104AENfJABDXywAQ184AENfQABDX0wAQ19QAENfVABDX1gAQ19cAENfZABDX3AAQ190AENfeABDX4AAQ1+EAENfyABDX8wAQ1/UAENhwABDYcgAQ2HQAENh2ABDYeQAQ2HoAENh7ABDYfAAQ2H0AENh/ABDYggAQ2IMAENiEABDYhgAQ2IcAENkCABDZBAAQ2QYAENkIABDZCwAQ2QwAENkNABDZDgAQ2Q8AENkRABDZFAAQ2RUAENkWABDZGAAQ2RkAENmUABDZlgAQ2ZkAENmbABDZngAQ2Z8AENmgABDZoQAQ2aIAENmkABDZpwAQ2agAENmpABDZqwAQ2awAENo/ABDaYgAQ2oIAENqiABDapAAQ2qYAENqoABDaqgAQ2q0AENquABDarwAQ2rIAENqzABDatQAQ2rYAENq4ABDauwAQ2rwAENq9ABDawAAQ2sEAENrGABDa3wAQ2ugAENrqABDa7AAQ2vUAENr4ABDa+wAQ2v0AENtGABDbagAQ25EAENu1ABDbuAAQ27oAENu8ABDbvgAQ28AAENvCABDbwwAQ28YAENvfABDcAAAQ3AIAENwEABDcBgAQ3AgAENwKABDcDAAQ3A4AENwQABDcMQAQ3DQAENw3ABDcOgAQ3D0AENxAABDcQwAQ3EYAENxJABDcSwAQ3MYAENzIABDcygAQ3MwAENzPABDc0AAQ3NEAENzSABDc0wAQ3NUAENzXABDc2AAQ3NkAENzbABDc3AAQ3VcAEN1ZABDdWwAQ3V0AEN1gABDdYQAQ3WIAEN1jABDdZAAQ3WYAEN1oABDdaQAQ3WoAEN1sABDdbQAQ3egAEN3qABDd7QAQ3e8AEN3yABDd8wAQ3fQAEN31ABDd9gAQ3fgAEN36ABDd+wAQ3fwAEN3+ABDd/wAQ3hgAEN4ZABDeGgAQ3hwAEN6XABDemQAQ3psAEN6dABDeoAAQ3qEAEN6iABDeowAQ3qQAEN6mABDeqAAQ3qkAEN6qABDerAAQ3q0AEN8oABDfKgAQ3ywAEN8uABDfMQAQ3zIAEN8zABDfNAAQ3zUAEN83ABDfOQAQ3zoAEN87ABDfPQAQ3z4AEN+5ABDfuwAQ370AEN+/ABDfwgAQ38MAEN/EABDfxQAQ38YAEN/IABDfygAQ38sAEN/MABDfzgAQ388AEOBKABDgTAAQ4E4AEOBQABDgUwAQ4FQAEOBVABDgVgAQ4FcAEOBZABDgWwAQ4FwAEOBdABDgXwAQ4GAAEODbABDg3QAQ4N8AEODhABDg5AAQ4OUAEODmABDg5wAQ4OgAEODqABDg7AAQ4O0AEODuABDg8AAQ4PEAEOE6ABDhXgAQ4YUAEOGpABDhrAAQ4a4AEOGwABDhsgAQ4bQAEOG2ABDhtwAQ4boAEOHTABDh8AAQ4fIAEOH0ABDh9gAQ4fgAEOH6ABDh/AAQ4f4AEOIbABDiHgAQ4iEAEOIkABDiJwAQ4ioAEOItABDiMAAQ4jIAEOKtABDirwAQ4rEAEOKzABDitgAQ4rcAEOK4ABDiuQAQ4roAEOK8ABDivgAQ4r8AEOLAABDiwgAQ4sMAEOM+ABDjQAAQ40IAEONEABDjRwAQ40gAEONJABDjSgAQ40sAEONNABDjTwAQ41AAEONRABDjUwAQ41QAEOPPABDj0QAQ49MAEOPVABDj2AAQ49kAEOPaABDj2wAQ49wAEOPeABDj4AAQ4+EAEOPiABDj5AAQ4+UAEORgABDkYgAQ5GUAEORnABDkagAQ5GsAEORsABDkbQAQ5G4AEORwABDkcgAQ5HMAEOR0ABDkdgAQ5HcAEOTyABDk9AAQ5PYAEOT4ABDk+wAQ5PwAEOT9ABDk/gAQ5P8AEOUBABDlAwAQ5QQAEOUFABDlBwAQ5QgAEOWDABDlhQAQ5YcAEOWJABDljAAQ5Y0AEOWOABDljwAQ5ZAAEOWSABDllAAQ5ZUAEOWWABDlmAAQ5ZkAEOYUABDmFgAQ5hgAEOYaABDmHQAQ5h4AEOYfABDmIAAQ5iEAEOYjABDmJQAQ5iYAEOYnABDmKQAQ5ioAEOa9ABDm4AAQ5wAAEOcgABDnIgAQ5yQAEOcmABDnKAAQ5ysAEOcsABDnLQAQ5zAAEOcxABDnMwAQ5zQAEOc2ABDnOQAQ5zoAEOc7ABDnPgAQ5z8AEOdEABDnXQAQ52YAEOdoABDnagAQ53MAEOd2ABDneQAQ53sAEOfEABDn6AAQ6A8AEOgzABDoNgAQ6DgAEOg6ABDoPAAQ6D4AEOhAABDoQQAQ6EQAEOhdABDofgAQ6IAAEOiCABDohAAQ6IYAEOiIABDoigAQ6IwAEOiOABDorwAQ6LIAEOi1ABDouAAQ6LsAEOi+ABDowQAQ6MQAEOjHABDoyQAQ6UQAEOlGABDpSAAQ6UoAEOlNABDpTgAQ6U8AEOlQABDpUQAQ6VMAEOlVABDpVgAQ6VcAEOlZABDpWgAQ6dUAEOnXABDp2QAQ6dsAEOneABDp3wAQ6eAAEOnhABDp4gAQ6eQAEOnmABDp5wAQ6egAEOnqABDp6wAQ6mYAEOpoABDqawAQ6m0AEOpwABDqcQAQ6nIAEOpzABDqdAAQ6nYAEOp4ABDqeQAQ6noAEOp8ABDqfQAQ6pYAEOqXABDqmAAQ6poAEOsVABDrFwAQ6xkAEOsbABDrHgAQ6x8AEOsgABDrIQAQ6yIAEOskABDrJgAQ6ycAEOsoABDrKgAQ6ysAEOumABDrqAAQ66oAEOusABDrrwAQ67AAEOuxABDrsgAQ67MAEOu1ABDrtwAQ67gAEOu5ABDruwAQ67wAEOw3ABDsOQAQ7DsAEOw9ABDsQAAQ7EEAEOxCABDsQwAQ7EQAEOxGABDsSAAQ7EkAEOxKABDsTAAQ7E0AEOzIABDsygAQ7MwAEOzOABDs0QAQ7NIAEOzTABDs1AAQ7NUAEOzXABDs2QAQ7NoAEOzbABDs3QAQ7N4AEO1ZABDtWwAQ7V0AEO1fABDtYgAQ7WMAEO1kABDtZQAQ7WYAEO1oABDtagAQ7WsAEO1sABDtbgAQ7W8AEO24ABDt3AAQ7gMAEO4nABDuKgAQ7iwAEO4uABDuMAAQ7jIAEO40ABDuNQAQ7jgAEO5RABDubgAQ7nAAEO5yABDudAAQ7nYAEO54ABDuegAQ7nwAEO6ZABDunAAQ7p8AEO6iABDupQAQ7qgAEO6rABDurgAQ7rAAEO8rABDvLQAQ7y8AEO8xABDvNAAQ7zUAEO82ABDvNwAQ7zgAEO86ABDvPAAQ7z0AEO8+ABDvQAAQ70EAEO+8ABDvvgAQ78AAEO/CABDvxQAQ78YAEO/HABDvyAAQ78kAEO/LABDvzQAQ784AEO/PABDv0QAQ79IAEPBNABDwTwAQ8FEAEPBTABDwVgAQ8FcAEPBYABDwWQAQ8FoAEPBcABDwXgAQ8F8AEPBgABDwYgAQ8GMAEPDeABDw4AAQ8OMAEPDlABDw6AAQ8OkAEPDqABDw6wAQ8OwAEPDuABDw8AAQ8PEAEPDyABDw9AAQ8PUAEPFwABDxcgAQ8XQAEPF2ABDxeQAQ8XoAEPF7ABDxfAAQ8X0AEPF/ABDxgQAQ8YIAEPGDABDxhQAQ8YYAEPIBABDyAwAQ8gUAEPIHABDyCgAQ8gsAEPIMABDyDQAQ8g4AEPIQABDyEgAQ8hMAEPIUABDyFgAQ8hcAEPKSABDylAAQ8pYAEPKYABDymwAQ8pwAEPKdABDyngAQ8p8AEPKhABDyowAQ8qQAEPKlABDypwAQ8qgAEPM7ABDzXgAQ834AEPOeABDzoAAQ86IAEPOkABDzpgAQ86kAEPOqABDzqwAQ864AEPOvABDzsQAQ87IAEPO0ABDztwAQ87gAEPO5ABDzvAAQ870AEPPCABDz2wAQ8+QAEPPmABDz6AAQ8/EAEPP0ABDz9wAQ8/kAEPRCABD0ZgAQ9I0AEPSxABD0tAAQ9LYAEPS4ABD0ugAQ9LwAEPS+ABD0vwAQ9MIAEPTbABD0/AAQ9P4AEPUAABD1AgAQ9QQAEPUGABD1CAAQ9QoAEPUMABD1LQAQ9TAAEPUzABD1NgAQ9TkAEPU8ABD1PwAQ9UIAEPVFABD1RwAQ9cIAEPXEABD1xgAQ9cgAEPXLABD1zAAQ9c0AEPXOABD1zwAQ9dEAEPXTABD11AAQ9dUAEPXXABD12AAQ9lMAEPZVABD2VwAQ9lkAEPZcABD2XQAQ9l4AEPZfABD2YAAQ9mIAEPZkABD2ZQAQ9mYAEPZoABD2aQAQ9uQAEPbmABD26QAQ9usAEPbuABD27wAQ9vAAEPbxABD28gAQ9vQAEPb2ABD29wAQ9vgAEPb6ABD2+wAQ9xQAEPcVABD3FgAQ9xgAEPeTABD3lQAQ95cAEPeZABD3nAAQ950AEPeeABD3nwAQ96AAEPeiABD3pAAQ96UAEPemABD3qAAQ96kAEPgkABD4JgAQ+CgAEPgqABD4LQAQ+C4AEPgvABD4MAAQ+DEAEPgzABD4NQAQ+DYAEPg3ABD4OQAQ+DoAEPi1ABD4twAQ+LkAEPi7ABD4vgAQ+L8AEPjAABD4wQAQ+MIAEPjEABD4xgAQ+McAEPjIABD4ygAQ+MsAEPlGABD5SAAQ+UoAEPlMABD5TwAQ+VAAEPlRABD5UgAQ+VMAEPlVABD5VwAQ+VgAEPlZABD5WwAQ+VwAEPnXABD52QAQ+dsAEPndABD54AAQ+eEAEPniABD54wAQ+eQAEPnmABD56AAQ+ekAEPnqABD57AAQ+e0AEPo2ABD6WgAQ+oEAEPqlABD6qAAQ+qoAEPqsABD6rgAQ+rAAEPqyABD6swAQ+rYAEPrPABD67AAQ+u4AEPrwABD68gAQ+vQAEPr2ABD6+AAQ+voAEPsXABD7GgAQ+x0AEPsgABD7IwAQ+yYAEPspABD7LAAQ+y4AEPupABD7qwAQ+60AEPuvABD7sgAQ+7MAEPu0ABD7tQAQ+7YAEPu4ABD7ugAQ+7sAEPu8ABD7vgAQ+78AEPw6ABD8PAAQ/D4AEPxAABD8QwAQ/EQAEPxFABD8RgAQ/EcAEPxJABD8SwAQ/EwAEPxNABD8TwAQ/FAAEPzLABD8zQAQ/M8AEPzRABD81AAQ/NUAEPzWABD81wAQ/NgAEPzaABD83AAQ/N0AEPzeABD84AAQ/OEAEP1cABD9XgAQ/WAAEP1iABD9ZQAQ/WYAEP1nABD9aAAQ/WkAEP1rABD9bQAQ/W4AEP1vABD9cQAQ/XIAEP3tABD97wAQ/fEAEP3zABD99gAQ/fcAEP34ABD9+QAQ/foAEP38ABD9/gAQ/f8AEP4AABD+AgAQ/gMAEP5+ABD+gAAQ/oIAEP6EABD+hwAQ/ogAEP6JABD+igAQ/osAEP6NABD+jwAQ/pAAEP6RABD+kwAQ/pQAEP8PABD/EQAQ/xMAEP8VABD/GAAQ/xkAEP8aABD/GwAQ/xwAEP8eABD/IAAQ/yEAEP8iABD/JAAQ/yUAEP+4ABD/2wAQ//sAEQAbABEAHQARAB8AEQAhABEAIwARACYAEQAnABEAKAARACsAEQAsABEALgARAC8AEQAxABEANAARADUAEQA2ABEAOQARADoAEQA/ABEAWAARAGEAEQBjABEAZQARAG4AEQBxABEAdAARAHYAEQC/ABEA4wARAQoAEQEuABEBMQARATMAEQE1ABEBNwARATkAEQE7ABEBPAARAT8AEQFYABEBeQARAXsAEQF9ABEBfwARAYEAEQGDABEBhQARAYcAEQGJABEBqgARAa0AEQGwABEBswARAbYAEQG5ABEBvAARAb8AEQHCABEBxAARAj8AEQJBABECQwARAkUAEQJIABECSQARAkoAEQJLABECTAARAk4AEQJQABECUQARAlIAEQJUABECVQARAtAAEQLSABEC1AARAtYAEQLZABEC2gARAtsAEQLcABEC3QARAt8AEQLhABEC4gARAuMAEQLlABEC5gARA2EAEQNjABEDZgARA2gAEQNrABEDbAARA20AEQNuABEDbwARA3EAEQNzABEDdAARA3UAEQN3ABEDeAARA5EAEQOSABEDkwARA5UAEQQQABEEEgARBBQAEQQWABEEGQARBBoAEQQbABEEHAARBB0AEQQfABEEIQARBCIAEQQjABEEJQARBCYAEQShABEEowARBKUAEQSnABEEqgARBKsAEQSsABEErQARBK4AEQSwABEEsgARBLMAEQS0ABEEtgARBLcAEQUyABEFNAARBTYAEQU4ABEFOwARBTwAEQU9ABEFPgARBT8AEQVBABEFQwARBUQAEQVFABEFRwARBUgAEQXDABEFxQARBccAEQXJABEFzAARBc0AEQXOABEFzwARBdAAEQXSABEF1AARBdUAEQXWABEF2AARBdkAEQZUABEGVgARBlgAEQZaABEGXQARBl4AEQZfABEGYAARBmEAEQZjABEGZQARBmYAEQZnABEGaQARBmoAEQazABEG1wARBv4AEQciABEHJQARBycAEQcpABEHKwARBy0AEQcvABEHMAARBzMAEQdMABEHaQARB2sAEQdtABEHbwARB3EAEQdzABEHdQARB3cAEQeUABEHlwARB5oAEQedABEHoAARB6MAEQemABEHqQARB6sAEQgmABEIKAARCCoAEQgsABEILwARCDAAEQgxABEIMgARCDMAEQg1ABEINwARCDgAEQg5ABEIOwARCDwAEQi3ABEIuQARCLsAEQi9ABEIwAARCMEAEQjCABEIwwARCMQAEQjGABEIyAARCMkAEQjKABEIzAARCM0AEQlIABEJSgARCUwAEQlOABEJUQARCVIAEQlTABEJVAARCVUAEQlXABEJWQARCVoAEQlbABEJXQARCV4AEQnZABEJ2wARCd4AEQngABEJ4wARCeQAEQnlABEJ5gARCecAEQnpABEJ6wARCewAEQntABEJ7wARCfAAEQprABEKbQARCm8AEQpxABEKdAARCnUAEQp2ABEKdwARCngAEQp6ABEKfAARCn0AEQp+ABEKgAARCoEAEQr8ABEK/gARCwAAEQsCABELBQARCwYAEQsHABELCAARCwkAEQsLABELDQARCw4AEQsPABELEQARCxIAEQuNABELjwARC5EAEQuTABELlgARC5cAEQuYABELmQARC5oAEQucABELngARC58AEQugABELogARC6MAEQw2ABEMWQARDHkAEQyZABEMmwARDJ0AEQyfABEMoQARDKQAEQylABEMpgARDKkAEQyqABEMrAARDK0AEQyvABEMsgARDLMAEQy0ABEMtwARDLgAEQy9ABEM1gARDN8AEQzhABEM4wARDOwAEQzvABEM8gARDPQAEQ09ABENYQARDYgAEQ2sABENrwARDbEAEQ2zABENtQARDbcAEQ25ABENugARDb0AEQ3WABEN9wARDfkAEQ37ABEN/QARDf8AEQ4BABEOAwARDgUAEQ4HABEOKAARDisAEQ4uABEOMQARDjQAEQ43ABEOOgARDj0AEQ5AABEOQgARDr0AEQ6/ABEOwQARDsMAEQ7GABEOxwARDsgAEQ7JABEOygARDswAEQ7OABEOzwARDtAAEQ7SABEO0wARD04AEQ9QABEPUgARD1QAEQ9XABEPWAARD1kAEQ9aABEPWwARD10AEQ9fABEPYAARD2EAEQ9jABEPZAARD98AEQ/hABEP5AARD+YAEQ/pABEP6gARD+sAEQ/sABEP7QARD+8AEQ/xABEP8gARD/MAEQ/1ABEP9gAREA8AERAQABEQEQAREBMAERCOABEQkAAREJIAERCUABEQlwAREJgAERCZABEQmgAREJsAERCdABEQnwAREKAAERChABEQowAREKQAEREfABERIQARESMAERElABERKAARESkAEREqABERKwARESwAEREuABERMAARETEAEREyABERNAARETUAERGwABERsgAREbQAERG2ABERuQAREboAERG7ABERvAAREb0AERG/ABERwQAREcIAERHDABERxQAREcYAERJBABESQwAREkUAERJHABESSgAREksAERJMABESTQAREk4AERJQABESUgARElMAERJUABESVgARElcAERLSABES1AAREtYAERLYABES2wAREtwAERLdABES3gAREt8AERLhABES4wAREuQAERLlABES5wAREugAERMxABETVQARE3wAEROgABETowARE6UAEROnABETqQARE6sAEROtABETrgARE7EAERPKABET5wARE+kAERPrABET7QARE+8AERPxABET8wARE/UAERQSABEUFQARFBgAERQbABEUHgARFCEAERQkABEUJwARFCkAERSkABEUpgARFKgAERSqABEUrQARFK4AERSvABEUsAARFLEAERSzABEUtQARFLYAERS3ABEUuQARFLoAERU1ABEVNwARFTkAERU7ABEVPgARFT8AERVAABEVQQARFUIAERVEABEVRgARFUcAERVIABEVSgARFUsAERXGABEVyAARFcoAERXMABEVzwARFdAAERXRABEV0gARFdMAERXVABEV1wARFdgAERXZABEV2wARFdwAERZXABEWWQARFlsAERZdABEWYAARFmEAERZiABEWYwARFmQAERZmABEWaAARFmkAERZqABEWbAARFm0AERboABEW6gARFuwAERbuABEW8QARFvIAERbzABEW9AARFvUAERb3ABEW+QARFvoAERb7ABEW/QARFv4AERd5ABEXewARF30AERd/ABEXggARF4MAEReEABEXhQARF4YAEReIABEXigARF4sAEReMABEXjgARF48AERgKABEYDAARGA4AERgQABEYEwARGBQAERgVABEYFgARGBcAERgZABEYGwARGBwAERgdABEYHwARGCAAERizABEY1gARGPYAERkWABEZGAARGRoAERkcABEZHgARGSEAERkiABEZIwARGSYAERknABEZKQARGSoAERksABEZLwARGTAAERkxABEZNAARGTUAERk6ABEZUwARGVwAERleABEZYAARGWkAERlsABEZbwARGXEAERm6ABEZ3gARGgUAERopABEaLAARGi4AERowABEaMgARGjQAERo2ABEaNwARGjoAERpTABEadAARGnYAERp4ABEaegARGnwAERp+ABEagAARGoIAERqEABEapQARGqgAERqrABEargARGrEAERq0ABEatwARGroAERq9ABEavwARGzoAERs8ABEbPgARG0AAERtDABEbRAARG0UAERtGABEbRwARG0kAERtLABEbTAARG00AERtPABEbUAARG8sAERvNABEbzwARG9EAERvUABEb1QARG9YAERvXABEb2AARG9oAERvcABEb3QARG94AERvgABEb4QARHFwAERxeABEcYQARHGMAERxmABEcZwARHGgAERxpABEcagARHGwAERxuABEcbwARHHAAERxyABEccwARHIwAERyNABEcjgARHJAAER0LABEdDQARHQ8AER0RABEdFAARHRUAER0WABEdFwARHRgAER0aABEdHAARHR0AER0eABEdIAARHSEAER2cABEdngARHaAAER2iABEdpQARHaYAER2nABEdqAARHakAER2rABEdrQARHa4AER2vABEdsQARHbIAER4tABEeLwARHjEAER4zABEeNgARHjcAER44ABEeOQARHjoAER48ABEePgARHj8AER5AABEeQgARHkMAER6+ABEewAARHsIAER7EABEexwARHsgAER7JABEeygARHssAER7NABEezwARHtAAER7RABEe0wARHtQAER9PABEfUQARH1MAER9VABEfWAARH1kAER9aABEfWwARH1wAER9eABEfYAARH2EAER9iABEfZAARH2UAER+uABEf0gARH/kAESAdABEgIAARICIAESAkABEgJgARICgAESAqABEgKwARIC4AESBHABEgZAARIGYAESBoABEgagARIGwAESBuABEgcAARIHIAESCPABEgkgARIJUAESCYABEgmwARIJ4AESChABEgpAARIKYAESEhABEhIwARISUAESEnABEhKgARISsAESEsABEhLQARIS4AESEwABEhMgARITMAESE0ABEhNgARITcAESGyABEhtAARIbYAESG4ABEhuwARIbwAESG9ABEhvgARIb8AESHBABEhwwARIcQAESHFABEhxwARIcgAESJDABEiRQARIkcAESJJABEiTAARIk0AESJOABEiTwARIlAAESJSABEiVAARIlUAESJWABEiWAARIlkAESLUABEi1gARItgAESLaABEi3QARIt4AESLfABEi4AARIuEAESLjABEi5QARIuYAESLnABEi6QARIuoAESNlABEjZwARI2kAESNrABEjbgARI28AESNwABEjcQARI3IAESN0ABEjdgARI3cAESN4ABEjegARI3sAESP2ABEj+AARI/oAESP8ABEj/wARJAAAESQBABEkAgARJAMAESQFABEkBwARJAgAESQJABEkCwARJAwAESSHABEkiQARJIsAESSNABEkkAARJJEAESSSABEkkwARJJQAESSWABEkmAARJJkAESSaABEknAARJJ0AESSuABEkrwARJLEAESU0ABElWAARJXwAESWfABElxgARJeYAESYNABEmNAARJlQAESZ4ABEmnAARJp4AESahABEmowARJqUAESanABEmqgARJq0AESavABEmsQARJrQAESa2ABEmuAARJrsAESa+ABEmvwARJsQAESbdABEm4gARJuQAESbpABEm7AARJu4AESc3ABEnWwARJ4IAESemABEnqQARJ6sAESetABEnrwARJ7EAESezABEntAARJ7cAESfQABEn9QARJ/cAESf5ABEn+wARJ/0AESf/ABEoAQARKAMAESgFABEoBwARKCwAESgvABEoMgARKDUAESg4ABEoOwARKD4AEShBABEoRAARKEcAEShJABEoxAARKMYAESjJABEoywARKM4AESjPABEo0AARKNEAESjSABEo1AARKNYAESjXABEo2AARKNoAESjbABEo7AARKO0AESjvABEpagARKWwAESluABEpcAARKXMAESl0ABEpdQARKXYAESl3ABEpeQARKXsAESl8ABEpfQARKX8AESmAABEp+wARKf0AESoAABEqAgARKgUAESoGABEqBwARKggAESoJABEqCwARKg0AESoOABEqDwARKhEAESoSABEqIwARKigAESorABEqLQARKj4AESpHABEqSgARKk0AESpPABEqYgARKm0AESroABEq6gARKuwAESruABEq8QARKvIAESrzABEq9AARKvUAESr3ABEq+QARKvoAESr7ABEq/QARKv4AESt5ABErewARK34AESuAABErgwARK4QAESuFABErhgARK4cAESuJABEriwARK4wAESuNABErjwARK5AAESuhABErogARK6QAESwfABEsIQARLCMAESwlABEsKAARLCkAESwqABEsKwARLCwAESwuABEsMAARLDEAESwyABEsNAARLDUAESywABEssgARLLUAESy3ABEsugARLLsAESy8ABEsvQARLL4AESzAABEswgARLMMAESzEABEsxgARLMcAESzgABEs4QARLOIAESzkABEtXwARLWEAES1jABEtZQARLWgAES1pABEtagARLWsAES1sABEtbgARLXAAES1xABEtcgARLXQAES11ABEt8AARLfIAES31ABEt9wARLfoAES37ABEt/AARLf0AES3+ABEuAAARLgIAES4DABEuBAARLgYAES4HABEuLgARLkcAES5QABEuUwARLlYAES5fABEuYgARLmUAES5nABEuegARLw0AES8wABEvUAARL3AAES9yABEvdAARL3YAES94ABEvewARL3wAES99ABEvgAARL4EAES+DABEvhAARL4YAES+JABEvigARL4sAES+OABEvjwARL5QAES+tABEvtgARL7gAES+6ABEvwwARL8YAES/JABEvywARMBQAETA4ABEwXwARMIMAETCGABEwiAARMIoAETCMABEwjgARMJAAETCRABEwlAARMK0AETDOABEw0AARMNIAETDUABEw1gARMNgAETDaABEw3AARMN4AETD/ABExAgARMQUAETEIABExCwARMQ4AETERABExFAARMRcAETEZABExlAARMZYAETGYABExmgARMZ0AETGeABExnwARMaAAETGhABExowARMaUAETGmABExpwARMakAETGqABEyJQARMicAETIpABEyKwARMi4AETIvABEyMAARMjEAETIyABEyNAARMjYAETI3ABEyOAARMjoAETI7ABEytgARMrgAETK7ABEyvQARMsAAETLBABEywgARMsMAETLEABEyxgARMsgAETLJABEyygARMswAETLNABEy5gARMucAETLoABEy6gARM2UAETNnABEzaQARM2sAETNuABEzbwARM3AAETNxABEzcgARM3QAETN2ABEzdwARM3gAETN6ABEzewARM/YAETP4ABEz+gARM/wAETP/ABE0AAARNAEAETQCABE0AwARNAUAETQHABE0CAARNAkAETQLABE0DAARNIcAETSJABE0iwARNI0AETSQABE0kQARNJIAETSTABE0lAARNJYAETSYABE0mQARNJoAETScABE0nQARNRgAETUaABE1HAARNR4AETUhABE1IgARNSMAETUkABE1JQARNScAETUpABE1KgARNSsAETUtABE1LgARNakAETWrABE1rQARNa8AETWyABE1swARNbQAETW1ABE1tgARNbgAETW6ABE1uwARNbwAETW+ABE1vwARNggAETYsABE2UwARNncAETZ6ABE2fAARNn4AETaAABE2ggARNoQAETaFABE2iAARNqEAETa+ABE2wAARNsIAETbEABE2xgARNsgAETbKABE2zAARNukAETbsABE27wARNvIAETb1ABE2+AARNvsAETb+ABE3AAARN3sAETd9ABE3fwARN4EAETeEABE3hQARN4YAETeHABE3iAARN4oAETeMABE3jQARN44AETeQABE3kQAROAwAETgOABE4EAAROBIAETgVABE4FgAROBcAETgYABE4GQAROBsAETgdABE4HgAROB8AETghABE4IgAROJ0AETifABE4oQAROKMAETimABE4pwAROKgAETipABE4qgAROKwAETiuABE4rwAROLAAETiyABE4swAROS4AETkwABE5MwAROTUAETk4ABE5OQAROToAETk7ABE5PAAROT4AETlAABE5QQAROUIAETlEABE5RQAROcAAETnCABE5xAAROcYAETnJABE5ygAROcsAETnMABE5zQAROc8AETnRABE50gAROdMAETnVABE51gAROlEAETpTABE6VQAROlcAETpaABE6WwAROlwAETpdABE6XgAROmAAETpiABE6YwAROmQAETpmABE6ZwAROuIAETrkABE65gAROugAETrrABE67AAROu0AETruABE67wAROvEAETrzABE69AAROvUAETr3ABE6+AARO4sAETuuABE7zgARO+4AETvwABE78gARO/QAETv2ABE7+QARO/oAETv7ABE7/gARO/8AETwBABE8AgARPAQAETwHABE8CAARPAkAETwMABE8DQARPBIAETwrABE8NAARPDYAETw4ABE8QQARPEQAETxHABE8SQARPJIAETy2ABE83QARPQEAET0EABE9BgARPQgAET0KABE9DAARPQ4AET0PABE9EgARPSsAET1MABE9TgARPVAAET1SABE9VAARPVYAET1YABE9WgARPVwAET19ABE9gAARPYMAET2GABE9iQARPYwAET2PABE9kgARPZUAET2XABE+EgARPhQAET4WABE+GAARPhsAET4cABE+HQARPh4AET4fABE+IQARPiMAET4kABE+JQARPicAET4oABE+owARPqUAET6nABE+qQARPqwAET6tABE+rgARPq8AET6wABE+sgARPrQAET61ABE+tgARPrgAET65ABE/NAARPzYAET85ABE/OwARPz4AET8/ABE/QAARP0EAET9CABE/RAARP0YAET9HABE/SAARP0oAET9LABE/ZAARP2UAET9mABE/aAARP+MAET/lABE/5wARP+kAET/sABE/7QARP+4AET/vABE/8AARP/IAET/0ABE/9QARP/YAET/4ABE/+QARQHQAEUB2ABFAeAARQHoAEUB9ABFAfgARQH8AEUCAABFAgQARQIMAEUCFABFAhgARQIcAEUCJABFAigARQQUAEUEHABFBCQARQQsAEUEOABFBDwARQRAAEUERABFBEgARQRQAEUEWABFBFwARQRgAEUEaABFBGwARQZYAEUGYABFBmgARQZwAEUGfABFBoAARQaEAEUGiABFBowARQaUAEUGnABFBqAARQakAEUGrABFBrAARQicAEUIpABFCKwARQi0AEUIwABFCMQARQjIAEUIzABFCNAARQjYAEUI4ABFCOQARQjoAEUI8ABFCPQARQoYAEUKqABFC0QARQvUAEUL4ABFC+gARQvwAEUL+ABFDAAARQwIAEUMDABFDBgARQx8AEUM8ABFDPgARQ0AAEUNCABFDRAARQ0YAEUNIABFDSgARQ2cAEUNqABFDbQARQ3AAEUNzABFDdgARQ3kAEUN8ABFDfgARQ/kAEUP7ABFD/QARQ/8AEUQCABFEAwARRAQAEUQFABFEBgARRAgAEUQKABFECwARRAwAEUQOABFEDwARRIoAEUSMABFEjgARRJAAEUSTABFElAARRJUAEUSWABFElwARRJkAEUSbABFEnAARRJ0AEUSfABFEoAARRRsAEUUdABFFHwARRSEAEUUkABFFJQARRSYAEUUnABFFKAARRSoAEUUsABFFLQARRS4AEUUwABFFMQARRawAEUWuABFFsQARRbMAEUW2ABFFtwARRbgAEUW5ABFFugARRbwAEUW+ABFFvwARRcAAEUXCABFFwwARRj4AEUZAABFGQgARRkQAEUZHABFGSAARRkkAEUZKABFGSwARRk0AEUZPABFGUAARRlEAEUZTABFGVAARRs8AEUbRABFG0wARRtUAEUbYABFG2QARRtoAEUbbABFG3AARRt4AEUbgABFG4QARRuIAEUbkABFG5QARR2AAEUdiABFHZAARR2YAEUdpABFHagARR2sAEUdsABFHbQARR28AEUdxABFHcgARR3MAEUd1ABFHdgARR4cAEUeIABFHigARSA0AEUgxABFIVQARSHgAEUifABFIvwARSOYAEUkNABFJLQARSVEAEUl1ABFJdwARSXoAEUl8ABFJfgARSYAAEUmDABFJhgARSYgAEUmKABFJjQARSY8AEUmRABFJlAARSZcAEUmYABFJnQARSbYAEUm7ABFJvQARScIAEUnFABFJxwARShAAEUo0ABFKWwARSn8AEUqCABFKhAARSoYAEUqIABFKigARSowAEUqNABFKkAARSqkAEUrOABFK0AARStIAEUrUABFK1gARStgAEUraABFK3AARSt4AEUrgABFLBQARSwgAEUsLABFLDgARSxEAEUsUABFLFwARSxoAEUsdABFLIAARSyIAEUudABFLnwARS6IAEUukABFLpwARS6gAEUupABFLqgARS6sAEUutABFLrwARS7AAEUuxABFLswARS7QAEUvFABFLxgARS8gAEUxDABFMRQARTEcAEUxJABFMTAARTE0AEUxOABFMTwARTFAAEUxSABFMVAARTFUAEUxWABFMWAARTFkAEUzUABFM1gARTNkAEUzbABFM3gARTN8AEUzgABFM4QARTOIAEUzkABFM5gARTOcAEUzoABFM6gARTOsAEUz8ABFNAQARTQQAEU0GABFNFwARTSAAEU0jABFNJgARTSgAEU1EABFNVgARTdEAEU3TABFN1QARTdcAEU3aABFN2wARTdwAEU3dABFN3gARTeAAEU3iABFN4wARTeQAEU3mABFN5wARTmIAEU5kABFOZwARTmkAEU5sABFObQARTm4AEU5vABFOcAARTnIAEU50ABFOdQARTnYAEU54ABFOeQARTooAEU6LABFOjQARTwgAEU8KABFPDAARTw4AEU8RABFPEgARTxMAEU8UABFPFQARTxcAEU8ZABFPGgARTxsAEU8dABFPHgART5kAEU+bABFPngART6AAEU+jABFPpAART6UAEU+mABFPpwART6kAEU+rABFPrAART60AEU+vABFPsAART8kAEU/KABFPywART80AEVBIABFQSgARUEwAEVBOABFQUQARUFIAEVBTABFQVAARUFUAEVBXABFQWQARUFoAEVBbABFQXQARUF4AEVDZABFQ2wARUN4AEVDgABFQ4wARUOQAEVDlABFQ5gARUOcAEVDpABFQ6wARUOwAEVDtABFQ7wARUPAAEVEHABFRIAARUTEAEVE0ABFRNwARUToAEVE9ABFRTgARUVEAEVFUABFRVwARUVoAEVFcABFRcgARUY4AEVGgABFRrgARUkEAEVJkABFShAARUqQAEVKmABFSqAARUqoAEVKsABFSrwARUrAAEVKxABFStAARUrUAEVK3ABFSuAARUroAEVK9ABFSvgARUr8AEVLCABFSwwARUsgAEVLhABFS6gARUuwAEVLuABFS9wARUvoAEVL9ABFS/wARU0gAEVNsABFTkwARU7cAEVO6ABFTvAARU74AEVPAABFTwgARU8QAEVPFABFTyAARU+EAEVQCABFUBAARVAYAEVQIABFUCgARVAwAEVQOABFUEAARVBIAEVQzABFUNgARVDkAEVQ8ABFUPwARVEIAEVRFABFUSAARVEsAEVRNABFUyAARVMoAEVTMABFUzgARVNEAEVTSABFU0wARVNQAEVTVABFU1wARVNkAEVTaABFU2wARVN0AEVTeABFVWQARVVsAEVVdABFVXwARVWIAEVVjABFVZAARVWUAEVVmABFVaAARVWoAEVVrABFVbAARVW4AEVVvABFV6gARVewAEVXvABFV8QARVfQAEVX1ABFV9gARVfcAEVX4ABFV+gARVfwAEVX9ABFV/gARVgAAEVYBABFWGgARVhsAEVYcABFWHgARVpkAEVabABFWnQARVp8AEVaiABFWowARVqQAEValABFWpgARVqgAEVaqABFWqwARVqwAEVauABFWrwARVyoAEVcsABFXLgARVzAAEVczABFXNAARVzUAEVc2ABFXNwARVzkAEVc7ABFXPAARVz0AEVc/ABFXQAARV7sAEVe9ABFXvwARV8EAEVfEABFXxQARV8YAEVfHABFXyAARV8oAEVfMABFXzQARV84AEVfQABFX0QARWEwAEVhOABFYUAARWFIAEVhVABFYVgARWFcAEVhYABFYWQARWFsAEVhdABFYXgARWF8AEVhhABFYYgARWN0AEVjfABFY4QARWOMAEVjmABFY5wARWOgAEVjpABFY6gARWOwAEVjuABFY7wARWPAAEVjyABFY8wARWTwAEVlgABFZhwARWasAEVmuABFZsAARWbIAEVm0ABFZtgARWbgAEVm5ABFZvAARWdUAEVnyABFZ9AARWfYAEVn4ABFZ+gARWfwAEVn+ABFaAAARWh0AEVogABFaIwARWiYAEVopABFaLAARWi8AEVoyABFaNAARWq8AEVqxABFaswARWrUAEVq4ABFauQARWroAEVq7ABFavAARWr4AEVrAABFawQARWsIAEVrEABFaxQARW0AAEVtCABFbRAARW0YAEVtJABFbSgARW0sAEVtMABFbTQARW08AEVtRABFbUgARW1MAEVtVABFbVgARW9EAEVvTABFb1QARW9cAEVvaABFb2wARW9wAEVvdABFb3gARW+AAEVviABFb4wARW+QAEVvmABFb5wARXGIAEVxkABFcZwARXGkAEVxsABFcbQARXG4AEVxvABFccAARXHIAEVx0ABFcdQARXHYAEVx4ABFceQARXPQAEVz2ABFc+AARXPoAEVz9ABFc/gARXP8AEV0AABFdAQARXQMAEV0FABFdBgARXQcAEV0JABFdCgARXYUAEV2HABFdiQARXYsAEV2OABFdjwARXZAAEV2RABFdkgARXZQAEV2WABFdlwARXZgAEV2aABFdmwARXhYAEV4YABFeGgARXhwAEV4fABFeIAARXiEAEV4iABFeIwARXiUAEV4nABFeKAARXikAEV4rABFeLAARXr8AEV7iABFfAgARXyIAEV8kABFfJgARXygAEV8qABFfLQARXy4AEV8vABFfMgARXzMAEV81ABFfNgARXzgAEV87ABFfPAARXz0AEV9AABFfQQARX0YAEV9fABFfaAARX2oAEV9sABFfdQARX3gAEV97ABFffQARX8YAEV/qABFgEQARYDUAEWA4ABFgOgARYDwAEWA+ABFgQAARYEIAEWBDABFgRgARYF8AEWCAABFgggARYIQAEWCGABFgiAARYIoAEWCMABFgjgARYJAAEWCxABFgtAARYLcAEWC6ABFgvQARYMAAEWDDABFgxgARYMkAEWDLABFhRgARYUgAEWFKABFhTAARYU8AEWFQABFhUQARYVIAEWFTABFhVQARYVcAEWFYABFhWQARYVsAEWFcABFh1wARYdkAEWHbABFh3QARYeAAEWHhABFh4gARYeMAEWHkABFh5gARYegAEWHpABFh6gARYewAEWHtABFiaAARYmoAEWJtABFibwARYnIAEWJzABFidAARYnUAEWJ2ABFieAARYnoAEWJ7ABFifAARYn4AEWJ/ABFimAARYpkAEWKaABFinAARYxcAEWMZABFjGwARYx0AEWMgABFjIQARYyIAEWMjABFjJAARYyYAEWMoABFjKQARYyoAEWMsABFjLQARY6gAEWOqABFjrAARY64AEWOxABFjsgARY7MAEWO0ABFjtQARY7cAEWO5ABFjugARY7sAEWO9ABFjvgARZDkAEWQ7ABFkPQARZD8AEWRCABFkQwARZEQAEWRFABFkRgARZEgAEWRKABFkSwARZEwAEWROABFkTwARZMoAEWTMABFkzgARZNAAEWTTABFk1AARZNUAEWTWABFk1wARZNkAEWTbABFk3AARZN0AEWTfABFk4AARZVsAEWVdABFlXwARZWEAEWVkABFlZQARZWYAEWVnABFlaAARZWoAEWVsABFlbQARZW4AEWVwABFlcQARZboAEWXeABFmBQARZikAEWYsABFmLgARZjAAEWYyABFmNAARZjYAEWY3ABFmOgARZlMAEWZwABFmcgARZnQAEWZ2ABFmeAARZnoAEWZ8ABFmfgARZpsAEWaeABFmoQARZqQAEWanABFmqgARZq0AEWawABFmsgARZy0AEWcvABFnMQARZzMAEWc2ABFnNwARZzgAEWc5ABFnOgARZzwAEWc+ABFnPwARZ0AAEWdCABFnQwARZ74AEWfAABFnwgARZ8QAEWfHABFnyAARZ8kAEWfKABFnywARZ80AEWfPABFn0AARZ9EAEWfTABFn1AARaE8AEWhRABFoUwARaFUAEWhYABFoWQARaFoAEWhbABFoXAARaF4AEWhgABFoYQARaGIAEWhkABFoZQARaOAAEWjiABFo5QARaOcAEWjqABFo6wARaOwAEWjtABFo7gARaPAAEWjyABFo8wARaPQAEWj2ABFo9wARaXIAEWl0ABFpdgARaXgAEWl7ABFpfAARaX0AEWl+ABFpfwARaYEAEWmDABFphAARaYUAEWmHABFpiAARagMAEWoFABFqBwARagkAEWoMABFqDQARag4AEWoPABFqEAARahIAEWoUABFqFQARahYAEWoYABFqGQARapQAEWqWABFqmAARapoAEWqdABFqngARap8AEWqgABFqoQARaqMAEWqlABFqpgARaqcAEWqpABFqqgARaz0AEWtgABFrgAARa6AAEWuiABFrpAARa6YAEWuoABFrqwARa6wAEWutABFrsAARa7EAEWuzABFrtAARa7YAEWu5ABFrugARa7sAEWu+ABFrvwARa8QAEWvdABFr5gARa+gAEWvqABFr8wARa/YAEWv5ABFr+wARbEQAEWxoABFsjwARbLMAEWy2ABFsuAARbLoAEWy8ABFsvgARbMAAEWzBABFsxAARbN0AEWz+ABFtAAARbQIAEW0EABFtBgARbQgAEW0KABFtDAARbQ4AEW0vABFtMgARbTUAEW04ABFtOwARbT4AEW1BABFtRAARbUcAEW1JABFtxAARbcYAEW3IABFtygARbc0AEW3OABFtzwARbdAAEW3RABFt0wARbdUAEW3WABFt1wARbdkAEW3aABFuVQARblcAEW5ZABFuWwARbl4AEW5fABFuYAARbmEAEW5iABFuZAARbmYAEW5nABFuaAARbmoAEW5rABFu5gARbugAEW7rABFu7QARbvAAEW7xABFu8gARbvMAEW70ABFu9gARbvgAEW75ABFu+gARbvwAEW79ABFvFgARbxcAEW8YABFvGgARb5UAEW+XABFvmQARb5sAEW+eABFvnwARb6AAEW+hABFvogARb6QAEW+mABFvpwARb6gAEW+qABFvqwARcCYAEXAoABFwKgARcCwAEXAvABFwMAARcDEAEXAyABFwMwARcDUAEXA3ABFwOAARcDkAEXA7ABFwPAARcLcAEXC5ABFwuwARcL0AEXDAABFwwQARcMIAEXDDABFwxAARcMYAEXDIABFwyQARcMoAEXDMABFwzQARcUgAEXFKABFxTAARcU4AEXFRABFxUgARcVMAEXFUABFxVQARcVcAEXFZABFxWgARcVsAEXFdABFxXgARcdkAEXHbABFx3QARcd8AEXHiABFx4wARceQAEXHlABFx5gARcegAEXHqABFx6wARcewAEXHuABFx7wARcjgAEXJcABFygwARcqcAEXKqABFyrAARcq4AEXKwABFysgARcrQAEXK1ABFyuAARctEAEXLuABFy8AARcvIAEXL0ABFy9gARcvgAEXL6ABFy/AARcxkAEXMcABFzHwARcyIAEXMlABFzKAARcysAEXMuABFzMAARc6sAEXOtABFzrwARc7EAEXO0ABFztQARc7YAEXO3ABFzuAARc7oAEXO8ABFzvQARc74AEXPAABFzwQARdDwAEXQ+ABF0QAARdEIAEXRFABF0RgARdEcAEXRIABF0SQARdEsAEXRNABF0TgARdE8AEXRRABF0UgARdM0AEXTPABF00QARdNMAEXTWABF01wARdNgAEXTZABF02gARdNwAEXTeABF03wARdOAAEXTiABF04wARdV4AEXVgABF1YwARdWUAEXVoABF1aQARdWoAEXVrABF1bAARdW4AEXVwABF1cQARdXIAEXV0ABF1dQARdfAAEXXyABF19AARdfYAEXX5ABF1+gARdfsAEXX8ABF1/QARdf8AEXYBABF2AgARdgMAEXYFABF2BgARdoEAEXaDABF2hQARdocAEXaKABF2iwARdowAEXaNABF2jgARdpAAEXaSABF2kwARdpQAEXaWABF2lwARdxIAEXcUABF3FgARdxgAEXcbABF3HAARdx0AEXceABF3HwARdyEAEXcjABF3JAARdyUAEXcnABF3KAARd7sAEXfeABF3/gAReB4AEXggABF4IgAReCQAEXgmABF4KQAReCoAEXgrABF4LgAReC8AEXgxABF4MgAReDQAEXg3ABF4OAAReDkAEXg8ABF4PQAReEIAEXhbABF4ZAAReGYAEXhoABF4cQAReHQAEXh3ABF4eQAReMIAEXjmABF5DQAReTEAEXk0ABF5NgAReTgAEXk6ABF5PAAReT4AEXk/ABF5QgAReVsAEXl8ABF5fgAReYAAEXmCABF5hAAReYYAEXmIABF5igAReYwAEXmtABF5sAARebMAEXm2ABF5uQARebwAEXm/ABF5wgARecUAEXnHABF6QgARekQAEXpGABF6SAAReksAEXpMABF6TQARek4AEXpPABF6UQARelMAEXpUABF6VQARelcAEXpYABF60wARetUAEXrXABF62QARetwAEXrdABF63gARet8AEXrgABF64gAReuQAEXrlABF65gAReugAEXrpABF7ZAARe2YAEXtpABF7awARe24AEXtvABF7cAARe3EAEXtyABF7dAARe3YAEXt3ABF7eAARe3oAEXt7ABF7lAARe5UAEXuWABF7mAARfBMAEXwVABF8FwARfBkAEXwcABF8HQARfB4AEXwfABF8IAARfCIAEXwkABF8JQARfCYAEXwoABF8KQARfKQAEXymABF8qAARfKoAEXytABF8rgARfK8AEXywABF8sQARfLMAEXy1ABF8tgARfLcAEXy5ABF8ugARfTUAEX03ABF9OQARfTsAEX0+ABF9PwARfUAAEX1BABF9QgARfUQAEX1GABF9RwARfUgAEX1KABF9SwARfcYAEX3IABF9ygARfcwAEX3PABF90AARfdEAEX3SABF90wARfdUAEX3XABF92AARfdkAEX3bABF93AARflcAEX5ZABF+WwARfl0AEX5gABF+YQARfmIAEX5jABF+ZAARfmYAEX5oABF+aQARfmoAEX5sABF+bQARfrYAEX7aABF/AQARfyUAEX8oABF/KgARfywAEX8uABF/MAARfzIAEX8zABF/NgARf08AEX9sABF/bgARf3AAEX9yABF/dAARf3YAEX94ABF/egARf5cAEX+aABF/nQARf6AAEX+jABF/pgARf6kAEX+sABF/rgARgCkAEYArABGALQARgC8AEYAyABGAMwARgDQAEYA1ABGANgARgDgAEYA6ABGAOwARgDwAEYA+ABGAPwARgLoAEYC8ABGAvgARgMAAEYDDABGAxAARgMUAEYDGABGAxwARgMkAEYDLABGAzAARgM0AEYDPABGA0AARgUsAEYFNABGBTwARgVEAEYFUABGBVQARgVYAEYFXABGBWAARgVoAEYFcABGBXQARgV4AEYFgABGBYQARgdwAEYHeABGB4QARgeMAEYHmABGB5wARgegAEYHpABGB6gARgewAEYHuABGB7wARgfAAEYHyABGB8wARgm4AEYJwABGCcgARgnQAEYJ3ABGCeAARgnkAEYJ6ABGCewARgn0AEYJ/ABGCgAARgoEAEYKDABGChAARgv8AEYMBABGDAwARgwUAEYMIABGDCQARgwoAEYMLABGDDAARgw4AEYMQABGDEQARgxIAEYMUABGDFQARg5AAEYOSABGDlAARg5YAEYOZABGDmgARg5sAEYOcABGDnQARg58AEYOhABGDogARg6MAEYOlABGDpgARg7cAEYO4ABGDugARhD0AEYRhABGEhQARhKgAEYTPABGE7wARhRYAEYU9ABGFXQARhYEAEYWlABGFpwARhaoAEYWsABGFrgARhbAAEYWzABGFtgARhbgAEYW6ABGFvQARhb8AEYXBABGFxAARhccAEYXIABGF0QARheoAEYXvABGF8QARhfYAEYX5ABGF+wARhkQAEYZoABGGjwARhrMAEYa2ABGGuAARhroAEYa8ABGGvgARhsAAEYbBABGGxAARht0AEYcCABGHBAARhwYAEYcIABGHCgARhwwAEYcOABGHEAARhxIAEYcUABGHOQARhzwAEYc/ABGHQgARh0UAEYdIABGHSwARh04AEYdRABGHVAARh1YAEYfRABGH0wARh9YAEYfYABGH2wARh9wAEYfdABGH3gARh98AEYfhABGH4wARh+QAEYflABGH5wARh+gAEYf5ABGH+gARh/wAEYh3ABGIeQARiHsAEYh9ABGIgAARiIEAEYiCABGIgwARiIQAEYiGABGIiAARiIkAEYiKABGIjAARiI0AEYkIABGJCgARiQ0AEYkPABGJEgARiRMAEYkUABGJFQARiRYAEYkYABGJGgARiRsAEYkcABGJHgARiR8AEYkwABGJMQARiTMAEYmuABGJsAARibIAEYm0ABGJtwARibgAEYm5ABGJugARibsAEYm9ABGJvwARicAAEYnBABGJwwARicQAEYo/ABGKQQARikQAEYpGABGKSQARikoAEYpLABGKTAARik0AEYpPABGKUQARilIAEYpTABGKVQARilYAEYpnABGKaAARimoAEYrlABGK5wARiukAEYrrABGK7gARiu8AEYrwABGK8QARivIAEYr0ABGK9gARivcAEYr4ABGK+gARivsAEYt2ABGLeAARi3sAEYt9ABGLgAARi4EAEYuCABGLgwARi4QAEYuGABGLiAARi4kAEYuKABGLjAARi40AEYumABGLpwARi6gAEYuqABGMJQARjCcAEYwpABGMKwARjC4AEYwvABGMMAARjDEAEYwyABGMNAARjDYAEYw3ABGMOAARjDoAEYw7ABGMtgARjLgAEYy7ABGMvQARjMAAEYzBABGMwgARjMMAEYzEABGMxgARjMgAEYzJABGMygARjMwAEYzNABGM/QARjRYAEY0fABGNIgARjSUAEY0uABGNMQARjTQAEY02ABGNSQARjVMAEY3mABGOCQARjikAEY5JABGOSwARjk0AEY5PABGOUQARjlQAEY5VABGOVgARjlkAEY5aABGOXAARjl0AEY5fABGOYgARjmMAEY5kABGOZwARjmgAEY5xABGOigARjpMAEY6VABGOlwARjqAAEY6jABGOpgARjqgAEY7xABGPFQARjzwAEY9gABGPYwARj2UAEY9nABGPaQARj2sAEY9tABGPbgARj3EAEY+KABGPqwARj60AEY+vABGPsQARj7MAEY+1ABGPtwARj7kAEY+7ABGP3AARj98AEY/iABGP5QARj+gAEY/rABGP7gARj/EAEY/0ABGP9gARkHEAEZBzABGQdQARkHcAEZB6ABGQewARkHwAEZB9ABGQfgARkIAAEZCCABGQgwARkIQAEZCGABGQhwARkQIAEZEEABGRBgARkQgAEZELABGRDAARkQ0AEZEOABGRDwARkREAEZETABGRFAARkRUAEZEXABGRGAARkZMAEZGVABGRmAARkZoAEZGdABGRngARkZ8AEZGgABGRoQARkaMAEZGlABGRpgARkacAEZGpABGRqgARkcMAEZHEABGRxQARkccAEZJCABGSRAARkkYAEZJIABGSSwARkkwAEZJNABGSTgARkk8AEZJRABGSUwARklQAEZJVABGSVwARklgAEZLTABGS1QARktcAEZLZABGS3AARkt0AEZLeABGS3wARkuAAEZLiABGS5AARkuUAEZLmABGS6AARkukAEZNkABGTZgARk2gAEZNqABGTbQARk24AEZNvABGTcAARk3EAEZNzABGTdQARk3YAEZN3ABGTeQARk3oAEZP1ABGT9wARk/kAEZP7ABGT/gARk/8AEZQAABGUAQARlAIAEZQEABGUBgARlAcAEZQIABGUCgARlAsAEZSGABGUiAARlIoAEZSMABGUjwARlJAAEZSRABGUkgARlJMAEZSVABGUlwARlJgAEZSZABGUmwARlJwAEZTlABGVCQARlTAAEZVUABGVVwARlVkAEZVbABGVXQARlV8AEZVhABGVYgARlWUAEZV+ABGVmwARlZ0AEZWfABGVoQARlaMAEZWlABGVpwARlakAEZXGABGVyQARlcwAEZXPABGV0gARldUAEZXYABGV2wARld0AEZZYABGWWgARllwAEZZeABGWYQARlmIAEZZjABGWZAARlmUAEZZnABGWaQARlmoAEZZrABGWbQARlm4AEZbpABGW6wARlu0AEZbvABGW8gARlvMAEZb0ABGW9QARlvYAEZb4ABGW+gARlvsAEZb8ABGW/gARlv8AEZd6ABGXfAARl34AEZeAABGXgwARl4QAEZeFABGXhgARl4cAEZeJABGXiwARl4wAEZeNABGXjwARl5AAEZgLABGYDQARmBAAEZgSABGYFQARmBYAEZgXABGYGAARmBkAEZgbABGYHQARmB4AEZgfABGYIQARmCIAEZidABGYnwARmKEAEZijABGYpgARmKcAEZioABGYqQARmKoAEZisABGYrgARmK8AEZiwABGYsgARmLMAEZkuABGZMAARmTIAEZk0ABGZNwARmTgAEZk5ABGZOgARmTsAEZk9ABGZPwARmUAAEZlBABGZQwARmUQAEZm/ABGZwQARmcMAEZnFABGZyAARmckAEZnKABGZywARmcwAEZnOABGZ0AARmdEAEZnSABGZ1AARmdUAEZpoABGaiwARmqsAEZrLABGazQARms8AEZrRABGa0wARmtYAEZrXABGa2AARmtsAEZrcABGa3gARmt8AEZrhABGa5AARmuUAEZrmABGa6QARmuoAEZrvABGbCAARmxEAEZsTABGbFQARmx4AEZshABGbJAARmyYAEZtvABGbkwARm7oAEZveABGb4QARm+MAEZvlABGb5wARm+kAEZvrABGb7AARm+8AEZwIABGcKQARnCsAEZwtABGcLwARnDEAEZwzABGcNQARnDcAEZw5ABGcWgARnF0AEZxgABGcYwARnGYAEZxpABGcbAARnG8AEZxyABGcdAARnO8AEZzxABGc8wARnPUAEZz4ABGc+QARnPoAEZz7ABGc/AARnP4AEZ0AABGdAQARnQIAEZ0EABGdBQARnYAAEZ2CABGdhAARnYYAEZ2JABGdigARnYsAEZ2MABGdjQARnY8AEZ2RABGdkgARnZMAEZ2VABGdlgARnhEAEZ4TABGeFgARnhgAEZ4bABGeHAARnh0AEZ4eABGeHwARniEAEZ4jABGeJAARniUAEZ4nABGeKAARnkEAEZ5CABGeQwARnkUAEZ7AABGewgARnsQAEZ7GABGeyQARnsoAEZ7LABGezAARns0AEZ7PABGe0QARntIAEZ7TABGe1QARntYAEZ9RABGfUwARn1UAEZ9XABGfWgARn1sAEZ9cABGfXQARn14AEZ9gABGfYgARn2MAEZ9kABGfZgARn2cAEZ/iABGf5AARn+YAEZ/oABGf6wARn+wAEZ/tABGf7gARn+8AEZ/xABGf8wARn/QAEZ/1ABGf9wARn/gAEaBzABGgdQARoHcAEaB5ABGgfAARoH0AEaB+ABGgfwARoIAAEaCCABGghAARoIUAEaCGABGgiAARoIkAEaEEABGhBgARoQgAEaEKABGhDQARoQ4AEaEPABGhEAARoREAEaETABGhFQARoRYAEaEXABGhGQARoRoAEaFjABGhhwARoa4AEaHSABGh1QARodcAEaHZABGh2wARod0AEaHfABGh4AARoeMAEaH8ABGiGQARohsAEaIdABGiHwARoiEAEaIjABGiJQARoicAEaJEABGiRwARokoAEaJNABGiUAARolMAEaJWABGiWQARolsAEaLWABGi2AARotoAEaLcABGi3wARouAAEaLhABGi4gARouMAEaLlABGi5wARougAEaLpABGi6wARouwAEaNnABGjaQARo2sAEaNtABGjcAARo3EAEaNyABGjcwARo3QAEaN2ABGjeAARo3kAEaN6ABGjfAARo30AEaP4ABGj+gARo/wAEaP+ABGkAQARpAIAEaQDABGkBAARpAUAEaQHABGkCQARpAoAEaQLABGkDQARpA4AEaSJABGkiwARpI4AEaSQABGkkwARpJQAEaSVABGklgARpJcAEaSZABGkmwARpJwAEaSdABGknwARpKAAEaUbABGlHQARpR8AEaUhABGlJAARpSUAEaUmABGlJwARpSgAEaUqABGlLAARpS0AEaUuABGlMAARpTEAEaWsABGlrgARpbAAEaWyABGltQARpbYAEaW3ABGluAARpbkAEaW7ABGlvQARpb4AEaW/ABGlwQARpcIAEaY9ABGmPwARpkEAEaZDABGmRgARpkcAEaZIABGmSQARpkoAEaZMABGmTgARpk8AEaZQABGmUgARplMAEaZkABGmZQARpmcAEabqABGnDgARpzIAEadVABGnfAARp5wAEafDABGn6gARqAoAEaguABGoUgARqFQAEahXABGoWQARqFsAEahdABGoYAARqGMAEahlABGoZwARqGoAEahsABGobgARqHEAEah0ABGodQARqHoAEaiTABGomAARqJoAEaifABGoogARqKQAEajtABGpEQARqTgAEalcABGpXwARqWEAEaljABGpZQARqWcAEalpABGpagARqW0AEamGABGpqwARqa0AEamvABGpsQARqbMAEam1ABGptwARqbkAEam7ABGpvQARqeIAEanlABGp6AARqesAEanuABGp8QARqfQAEan3ABGp+gARqf0AEan/ABGqegARqnwAEap/ABGqgQARqoQAEaqFABGqhgARqocAEaqIABGqigARqowAEaqNABGqjgARqpAAEaqRABGqogARqqMAEaqlABGrIAARqyIAEaskABGrJgARqykAEasqABGrKwARqywAEastABGrLwARqzEAEasyABGrMwARqzUAEas2ABGrsQARq7MAEau2ABGruAARq7sAEau8ABGrvQARq74AEau/ABGrwQARq8MAEavEABGrxQARq8cAEavIABGr2QARq9oAEavcABGsVwARrFkAEaxbABGsXQARrGAAEaxhABGsYgARrGMAEaxkABGsZgARrGgAEaxpABGsagARrGwAEaxtABGs6AARrOoAEaztABGs7wARrPIAEazzABGs9AARrPUAEaz2ABGs+AARrPoAEaz7ABGs/AARrP4AEaz/ABGtEAARrREAEa0TABGtjgARrZAAEa2SABGtlAARrZcAEa2YABGtmQARrZoAEa2bABGtnQARrZ8AEa2gABGtoQARraMAEa2kABGuHwARriEAEa4kABGuJgARrikAEa4qABGuKwARriwAEa4tABGuLwARrjEAEa4yABGuMwARrjUAEa42ABGuTwARrlAAEa5RABGuUwARrs4AEa7QABGu0gARrtQAEa7XABGu2AARrtkAEa7aABGu2wARrt0AEa7fABGu4AARruEAEa7jABGu5AARr18AEa9hABGvZAARr2YAEa9pABGvagARr2sAEa9sABGvbQARr28AEa9xABGvcgARr3MAEa91ABGvdgARr5EAEa+qABGvswARr7YAEa+5ABGvwgARr8UAEa/IABGvygARr90AEbBwABGwkwARsLMAEbDTABGw1QARsNcAEbDZABGw2wARsN4AEbDfABGw4AARsOMAEbDkABGw5gARsOcAEbDpABGw7AARsO0AEbDuABGw8QARsPIAEbD3ABGxEAARsRkAEbEbABGxHQARsSYAEbEpABGxLAARsS4AEbF3ABGxmwARscIAEbHmABGx6QARsesAEbHtABGx7wARsfEAEbHzABGx9AARsfcAEbIQABGyMQARsjMAEbI1ABGyNwARsjkAEbI7ABGyPQARsj8AEbJBABGyYgARsmUAEbJoABGyawARsm4AEbJxABGydAARsncAEbJ6ABGyfAARsvcAEbL5ABGy+wARsv0AEbMAABGzAQARswIAEbMDABGzBAARswYAEbMIABGzCQARswoAEbMMABGzDQARs4gAEbOKABGzjAARs44AEbORABGzkgARs5MAEbOUABGzlQARs5cAEbOZABGzmgARs5sAEbOdABGzngARtBkAEbQbABG0HgARtCAAEbQjABG0JAARtCUAEbQmABG0JwARtCkAEbQrABG0LAARtC0AEbQvABG0MAARtEkAEbRKABG0SwARtE0AEbTIABG0ygARtMwAEbTOABG00QARtNIAEbTTABG01AARtNUAEbTXABG02QARtNoAEbTbABG03QARtN4AEbVZABG1WwARtV0AEbVfABG1YgARtWMAEbVkABG1ZQARtWYAEbVoABG1agARtWsAEbVsABG1bgARtW8AEbXqABG17AARte4AEbXwABG18wARtfQAEbX1ABG19gARtfcAEbX5ABG1+wARtfwAEbX9ABG1/wARtgAAEbZ7ABG2fQARtn8AEbaBABG2hAARtoUAEbaGABG2hwARtogAEbaKABG2jAARto0AEbaOABG2kAARtpEAEbcMABG3DgARtxAAEbcSABG3FQARtxYAEbcXABG3GAARtxkAEbcbABG3HQARtx4AEbcfABG3IQARtyIAEbdrABG3jwARt7YAEbfaABG33QARt98AEbfhABG34wARt+UAEbfnABG36AARt+sAEbgEABG4IQARuCMAEbglABG4JwARuCkAEbgrABG4LQARuC8AEbhMABG4TwARuFIAEbhVABG4WAARuFsAEbheABG4YQARuGMAEbjeABG44AARuOIAEbjkABG45wARuOgAEbjpABG46gARuOsAEbjtABG47wARuPAAEbjxABG48wARuPQAEblvABG5cQARuXMAEbl1ABG5eAARuXkAEbl6ABG5ewARuXwAEbl+ABG5gAARuYEAEbmCABG5hAARuYUAEboAABG6AgARugQAEboGABG6CQARugoAEboLABG6DAARug0AEboPABG6EQARuhIAEboTABG6FQARuhYAEbqRABG6kwARupYAEbqYABG6mwARupwAEbqdABG6ngARup8AEbqhABG6owARuqQAEbqlABG6pwARuqgAEbsjABG7JQARuycAEbspABG7LAARuy0AEbsuABG7LwARuzAAEbsyABG7NAARuzUAEbs2ABG7OAARuzkAEbu0ABG7tgARu7gAEbu6ABG7vQARu74AEbu/ABG7wAARu8EAEbvDABG7xQARu8YAEbvHABG7yQARu8oAEbxFABG8RwARvEkAEbxLABG8TgARvE8AEbxQABG8UQARvFIAEbxUABG8VgARvFcAEbxYABG8WgARvFsAEbzuABG9EQARvTEAEb1RABG9UwARvVUAEb1XABG9WQARvVwAEb1dABG9XgARvWEAEb1iABG9ZAARvWUAEb1nABG9agARvWsAEb1sABG9bwARvXAAEb11ABG9jgARvZcAEb2ZABG9mwARvaQAEb2nABG9qgARvawAEb31ABG+GQARvkAAEb5kABG+ZwARvmkAEb5rABG+bQARvm8AEb5xABG+cgARvnUAEb6OABG+rwARvrEAEb6zABG+tQARvrcAEb65ABG+uwARvr0AEb6/ABG+4AARvuMAEb7mABG+6QARvuwAEb7vABG+8gARvvUAEb74ABG++gARv3UAEb93ABG/eQARv3sAEb9+ABG/fwARv4AAEb+BABG/ggARv4QAEb+GABG/hwARv4gAEb+KABG/iwARwAYAEcAIABHACgARwAwAEcAPABHAEAARwBEAEcASABHAEwARwBUAEcAXABHAGAARwBkAEcAbABHAHAARwJcAEcCZABHAnAARwJ4AEcChABHAogARwKMAEcCkABHApQARwKcAEcCpABHAqgARwKsAEcCtABHArgARwMcAEcDIABHAyQARwMsAEcFGABHBSAARwUoAEcFMABHBTwARwVAAEcFRABHBUgARwVMAEcFVABHBVwARwVgAEcFZABHBWwARwVwAEcHXABHB2QARwdsAEcHdABHB4AARweEAEcHiABHB4wARweQAEcHmABHB6AARwekAEcHqABHB7AARwe0AEcJoABHCagARwmwAEcJuABHCcQARwnIAEcJzABHCdAARwnUAEcJ3ABHCeQARwnoAEcJ7ABHCfQARwn4AEcL5ABHC+wARwv0AEcL/ABHDAgARwwMAEcMEABHDBQARwwYAEcMIABHDCgARwwsAEcMMABHDDgARww8AEcOKABHDjAARw44AEcOQABHDkwARw5QAEcOVABHDlgARw5cAEcOZABHDmwARw5wAEcOdABHDnwARw6AAEcPpABHEDQARxDQAEcRYABHEWwARxF0AEcRfABHEYQARxGMAEcRlABHEZgARxGkAEcSCABHEnwARxKEAEcSjABHEpQARxKcAEcSpABHEqwARxK0AEcTKABHEzQARxNAAEcTTABHE1gARxNkAEcTcABHE3wARxOEAEcVcABHFXgARxWAAEcViABHFZQARxWYAEcVnABHFaAARxWkAEcVrABHFbQARxW4AEcVvABHFcQARxXIAEcXtABHF7wARxfEAEcXzABHF9gARxfcAEcX4ABHF+QARxfoAEcX8ABHF/gARxf8AEcYAABHGAgARxgMAEcZ+ABHGgAARxoIAEcaEABHGhwARxogAEcaJABHGigARxosAEcaNABHGjwARxpAAEcaRABHGkwARxpQAEccPABHHEQARxxQAEccWABHHGQARxxoAEccbABHHHAARxx0AEccfABHHIQARxyIAEccjABHHJQARxyYAEcehABHHowARx6UAEcenABHHqgARx6sAEcesABHHrQARx64AEcewABHHsgARx7MAEce0ABHHtgARx7cAEcgyABHINAARyDYAEcg4ABHIOwARyDwAEcg9ABHIPgARyD8AEchBABHIQwARyEQAEchFABHIRwARyEgAEcjDABHIxQARyMcAEcjJABHIzAARyM0AEcjOABHIzwARyNAAEcjSABHI1AARyNUAEcjWABHI2AARyNkAEcjqABHI6wARyO0AEclwABHJlAARybgAEcnbABHKAgARyiIAEcpJABHKcAARypAAEcq0ABHK2AARytoAEcrdABHK3wARyuEAEcrjABHK5gARyukAEcrrABHK7QARyvAAEcryABHK9AARyvcAEcr6ABHK+wARywQAEcsdABHLIgARyyQAEcspABHLLAARyy4AEct3ABHLmwARy8IAEcvmABHL6QARy+sAEcvtABHL7wARy/EAEcvzABHL9AARy/cAEcwQABHMNQARzDcAEcw5ABHMOwARzD0AEcw/ABHMQQARzEMAEcxFABHMRwARzGwAEcxvABHMcgARzHUAEcx4ABHMewARzH4AEcyBABHMhAARzIcAEcyJABHNBAARzQYAEc0JABHNCwARzQ4AEc0PABHNEAARzREAEc0SABHNFAARzRYAEc0XABHNGAARzRoAEc0bABHNLAARzS0AEc0vABHNqgARzawAEc2uABHNsAARzbMAEc20ABHNtQARzbYAEc23ABHNuQARzbsAEc28ABHNvQARzb8AEc3AABHOOwARzj0AEc5AABHOQgARzkUAEc5GABHORwARzkgAEc5JABHOSwARzk0AEc5OABHOTwARzlEAEc5SABHOYwARzmQAEc5mABHO4QARzuMAEc7lABHO5wARzuoAEc7rABHO7AARzu0AEc7uABHO8AARzvIAEc7zABHO9AARzvYAEc73ABHPcgARz3QAEc93ABHPeQARz3wAEc99ABHPfgARz38AEc+AABHPggARz4QAEc+FABHPhgARz4gAEc+JABHPmgARz5sAEc+dABHQGAAR0BoAEdAcABHQHgAR0CEAEdAiABHQIwAR0CQAEdAlABHQJwAR0CkAEdAqABHQKwAR0C0AEdAuABHQqQAR0KsAEdCuABHQsAAR0LMAEdC0ABHQtQAR0LYAEdC3ABHQuQAR0LsAEdC8ABHQvQAR0L8AEdDAABHQ2QAR0NoAEdDbABHQ3QAR0VgAEdFaABHRXAAR0V4AEdFhABHRYgAR0WMAEdFkABHRZQAR0WcAEdFpABHRagAR0WsAEdFtABHRbgAR0ekAEdHrABHR7gAR0fAAEdHzABHR9AAR0fUAEdH2ABHR9wAR0fkAEdH7ABHR/AAR0f0AEdH/ABHSAAAR0hUAEdIuABHSPwAR0kIAEdJFABHSSAAR0ksAEdJcABHSXwAR0mIAEdJlABHSaAAR0moAEdKAABHSjgAR0qEAEdKzABHTRgAR02kAEdOJABHTqQAR06sAEdOtABHTrwAR07EAEdO0ABHTtQAR07YAEdO5ABHTugAR07wAEdO9ABHTvwAR08IAEdPDABHTxAAR08cAEdPIABHTzQAR0+YAEdPvABHT8QAR0/MAEdP8ABHT/wAR1AIAEdQEABHUTQAR1HEAEdSYABHUvAAR1L8AEdTBABHUwwAR1MUAEdTHABHUyQAR1MoAEdTNABHU5gAR1QcAEdUJABHVCwAR1Q0AEdUPABHVEQAR1RMAEdUVABHVFwAR1TgAEdU7ABHVPgAR1UEAEdVEABHVRwAR1UoAEdVNABHVUAAR1VIAEdXNABHVzwAR1dEAEdXTABHV1gAR1dcAEdXYABHV2QAR1doAEdXcABHV3gAR1d8AEdXgABHV4gAR1eMAEdZeABHWYAAR1mIAEdZkABHWZwAR1mgAEdZpABHWagAR1msAEdZtABHWbwAR1nAAEdZxABHWcwAR1nQAEdbvABHW8QAR1vQAEdb2ABHW+QAR1voAEdb7ABHW/AAR1v0AEdb/ABHXAQAR1wIAEdcDABHXBQAR1wYAEdcfABHXIAAR1yEAEdcjABHXngAR16AAEdeiABHXpAAR16cAEdeoABHXqQAR16oAEderABHXrQAR168AEdewABHXsQAR17MAEde0ABHYLwAR2DEAEdgzABHYNQAR2DgAEdg5ABHYOgAR2DsAEdg8ABHYPgAR2EAAEdhBABHYQgAR2EQAEdhFABHYwAAR2MIAEdjEABHYxgAR2MkAEdjKABHYywAR2MwAEdjNABHYzwAR2NEAEdjSABHY0wAR2NUAEdjWABHZUQAR2VMAEdlVABHZVwAR2VoAEdlbABHZXAAR2V0AEdleABHZYAAR2WIAEdljABHZZAAR2WYAEdlnABHZ4gAR2eQAEdnmABHZ6AAR2esAEdnsABHZ7QAR2e4AEdnvABHZ8QAR2fMAEdn0ABHZ9QAR2fcAEdn4ABHaQQAR2mUAEdqMABHasAAR2rMAEdq1ABHatwAR2rkAEdq7ABHavQAR2r4AEdrBABHa2gAR2vcAEdr5ABHa+wAR2v0AEdr/ABHbAQAR2wMAEdsFABHbIgAR2yUAEdsoABHbKwAR2y4AEdsxABHbNAAR2zcAEds5ABHbtAAR27YAEdu4ABHbugAR270AEdu+ABHbvwAR28AAEdvBABHbwwAR28UAEdvGABHbxwAR28kAEdvKABHcRQAR3EcAEdxJABHcSwAR3E4AEdxPABHcUAAR3FEAEdxSABHcVAAR3FYAEdxXABHcWAAR3FoAEdxbABHc1gAR3NgAEdzaABHc3AAR3N8AEdzgABHc4QAR3OIAEdzjABHc5QAR3OcAEdzoABHc6QAR3OsAEdzsABHdZwAR3WkAEd1sABHdbgAR3XEAEd1yABHdcwAR3XQAEd11ABHddwAR3XkAEd16ABHdewAR3X0AEd1+ABHd+QAR3fsAEd39ABHd/wAR3gIAEd4DABHeBAAR3gUAEd4GABHeCAAR3goAEd4LABHeDAAR3g4AEd4PABHeigAR3owAEd6OABHekAAR3pMAEd6UABHelQAR3pYAEd6XABHemQAR3psAEd6cABHenQAR3p8AEd6gABHfGwAR3x0AEd8fABHfIQAR3yQAEd8lABHfJgAR3ycAEd8oABHfKgAR3ywAEd8tABHfLgAR3zAAEd8xABHfxAAR3+cAEeAHABHgJwAR4CkAEeArABHgLQAR4C8AEeAyABHgMwAR4DQAEeA3ABHgOAAR4DoAEeA7ABHgPQAR4EAAEeBBABHgQgAR4EUAEeBGABHgSwAR4GQAEeBtABHgbwAR4HEAEeB6ABHgfQAR4IAAEeCCABHgywAR4O8AEeEWABHhOgAR4T0AEeE/ABHhQQAR4UMAEeFFABHhRwAR4UgAEeFLABHhZAAR4YUAEeGHABHhiQAR4YsAEeGNABHhjwAR4ZEAEeGTABHhlQAR4bYAEeG5ABHhvAAR4b8AEeHCABHhxQAR4cgAEeHLABHhzgAR4dAAEeJLABHiTQAR4k8AEeJRABHiVAAR4lUAEeJWABHiVwAR4lgAEeJaABHiXAAR4l0AEeJeABHiYAAR4mEAEeLcABHi3gAR4uAAEeLiABHi5QAR4uYAEeLnABHi6AAR4ukAEeLrABHi7QAR4u4AEeLvABHi8QAR4vIAEeNtABHjbwAR43IAEeN0ABHjdwAR43gAEeN5ABHjegAR43sAEeN9ABHjfwAR44AAEeOBABHjgwAR44QAEeOdABHjngAR458AEeOhABHkHAAR5B4AEeQgABHkIgAR5CUAEeQmABHkJwAR5CgAEeQpABHkKwAR5C0AEeQuABHkLwAR5DEAEeQyABHkrQAR5K8AEeSxABHkswAR5LYAEeS3ABHkuAAR5LkAEeS6ABHkvAAR5L4AEeS/ABHkwAAR5MIAEeTDABHlPgAR5UAAEeVCABHlRAAR5UcAEeVIABHlSQAR5UoAEeVLABHlTQAR5U8AEeVQABHlUQAR5VMAEeVUABHlzwAR5dEAEeXTABHl1QAR5dgAEeXZABHl2gAR5dsAEeXcABHl3gAR5eAAEeXhABHl4gAR5eQAEeXlABHmYAAR5mIAEeZkABHmZgAR5mkAEeZqABHmawAR5mwAEeZtABHmbwAR5nEAEeZyABHmcwAR5nUAEeZ2ABHmvwAR5uMAEecKABHnLgAR5zEAEeczABHnNQAR5zcAEec5ABHnOwAR5zwAEec/ABHnWAAR53UAEed3ABHneQAR53sAEed9ABHnfwAR54EAEeeDABHnoAAR56MAEeemABHnqQAR56wAEeevABHnsgAR57UAEee3ABHoMgAR6DQAEeg2ABHoOAAR6DsAEeg8ABHoPQAR6D4AEeg/ABHoQQAR6EMAEehEABHoRQAR6EcAEehIABHowwAR6MUAEejHABHoyQAR6MwAEejNABHozgAR6M8AEejQABHo0gAR6NQAEejVABHo1gAR6NgAEejZABHpVAAR6VYAEelYABHpWgAR6V0AEeleABHpXwAR6WAAEelhABHpYwAR6WUAEelmABHpZwAR6WkAEelqABHp5QAR6ecAEenpABHp6wAR6e4AEenvABHp8AAR6fEAEenyABHp9AAR6fYAEen3ABHp+AAR6foAEen7ABHqdgAR6ngAEep6ABHqfAAR6n8AEeqAABHqgQAR6oIAEeqDABHqhQAR6ocAEeqIABHqiQAR6osAEeqMABHrBwAR6wkAEesMABHrDgAR6xEAEesSABHrEwAR6xQAEesVABHrFwAR6xkAEesaABHrGwAR6x0AEeseABHrPQAR67gAEeu6ABHrvAAR674AEevBABHrwgAR68MAEevEABHrxQAR68cAEevJABHrygAR68sAEevNABHrzgAR7GEAEeyEABHspAAR7MQAEezGABHsyAAR7MoAEezMABHszwAR7NAAEezRABHs1AAR7NUAEezXABHs2AAR7NoAEezdABHs3gAR7N8AEeziABHs4wAR7OgAEe0BABHtCgAR7QwAEe0OABHtFwAR7RoAEe0dABHtHwAR7WgAEe2MABHtswAR7dcAEe3aABHt3AAR7d4AEe3gABHt4gAR7eQAEe3lABHt6AAR7gEAEe4iABHuJAAR7iYAEe4oABHuKgAR7iwAEe4uABHuMAAR7jIAEe5TABHuVgAR7lkAEe5cABHuXwAR7mIAEe5lABHuaAAR7msAEe5tABHu6AAR7uoAEe7sABHu7gAR7vEAEe7yABHu8wAR7vQAEe71ABHu9wAR7vkAEe76ABHu+wAR7v0AEe7+ABHveQAR73sAEe99ABHvfwAR74IAEe+DABHvhAAR74UAEe+GABHviAAR74oAEe+LABHvjAAR744AEe+PABHwCgAR8AwAEfAPABHwEQAR8BQAEfAVABHwFgAR8BcAEfAYABHwGgAR8BwAEfAdABHwHgAR8CAAEfAhABHwOgAR8DsAEfA8ABH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B6wASAe0AEgHvABIB8AASAfEAEgHzABIB9AASAm8AEgJxABICcwASAnUAEgJ4ABICeQASAnoAEgJ7ABICfAASAn4AEgKAABICgQASAoIAEgKEABIChQASAwAAEgMCABIDBQASAwcAEgMKABIDCwASAwwAEgMNABIDDgASAxAAEgMSABIDEwASAxQAEgMWABIDFwASA5IAEgOUABIDlgASA5gAEgObABIDnAASA50AEgOeABIDnwASA6EAEgOjABIDpAASA6UAEgOnABIDqAASBCMAEgQlABIEJwASBCkAEgQsABIELQASBC4AEgQvABIEMAASBDIAEgQ0ABIENQASBDYAEgQ4ABIEOQASBLQAEgS2ABIEuAASBLoAEgS9ABIEvgASBL8AEgTAABIEwQASBMMAEgTFABIExgASBMcAEgTJABIEygASBNsAEgTcABIE3gASBWEAEgWFABIFqQASBcwAEgXzABIGEwASBjoAEgZhABIGgQASBqUAEgbJABIGywASBs4AEgbQABIG0gASBtQAEgbXABIG2gASBtwAEgbeABIG4QASBuMAEgblABIG6AASBusAEgbsABIG8QASBwoAEgcPABIHEQASBxYAEgcZABIHGwASB2QAEgeIABIHrwASB9MAEgfWABIH2AASB9oAEgfcABIH3gASB+AAEgfhABIH5AASB/0AEggiABIIJAASCCYAEggoABIIKgASCCwAEgguABIIMAASCDIAEgg0ABIIWQASCFwAEghfABIIYgASCGUAEghoABIIawASCG4AEghxABIIdAASCHYAEgjxABII8wASCPYAEgj4ABII+wASCPwAEgj9ABII/gASCP8AEgkBABIJAwASCQQAEgkFABIJBwASCQgAEgkZABIJGgASCRwAEgmXABIJmQASCZsAEgmdABIJoAASCaEAEgmiABIJowASCaQAEgmmABIJqAASCakAEgmqABIJrAASCa0AEgooABIKKgASCi0AEgovABIKMgASCjMAEgo0ABIKNQASCjYAEgo4ABIKOgASCjsAEgo8ABIKPgASCj8AEgpQABIKVQASClgAEgpaABIKawASCnAAEgpzABIKdQASCvAAEgryABIK9AASCvYAEgr5ABIK+gASCvsAEgr8ABIK/QASCv8AEgsBABILAgASCwMAEgsFABILBgASC4EAEguDABILhgASC4gAEguLABILjAASC40AEguOABILjwASC5EAEguTABILlAASC5UAEguXABILmAASC6kAEguqABILrAASDCcAEgwpABIMKwASDC0AEgwwABIMMQASDDIAEgwzABIMNAASDDYAEgw4ABIMOQASDDoAEgw8ABIMPQASDLgAEgy6ABIMvQASDL8AEgzCABIMwwASDMQAEgzFABIMxgASDMgAEgzKABIMywASDMwAEgzOABIMzwASDOgAEgzpABIM6gASDOwAEg1nABINaQASDWsAEg1tABINcAASDXEAEg1yABINcwASDXQAEg12ABINeAASDXkAEg16ABINfAASDX0AEg34ABIN+gASDf0AEg3/ABIOAgASDgMAEg4EABIOBQASDgYAEg4IABIOCgASDgsAEg4MABIODgASDg8AEg4hABIOOgASDkcAEg5KABIOTQASDlAAEg5dABIOYAASDmMAEg5mABIOaAASDnwAEg6KABIPHQASD0AAEg9gABIPgAASD4IAEg+EABIPhgASD4gAEg+LABIPjAASD40AEg+QABIPkQASD5MAEg+UABIPlgASD5kAEg+aABIPmwASD54AEg+fABIPpAASD70AEg/GABIPyAASD8oAEg/TABIP1gASD9kAEg/bABIQJAASEEgAEhBvABIQkwASEJYAEhCYABIQmgASEJwAEhCeABIQoAASEKEAEhCkABIQvQASEN4AEhDgABIQ4gASEOQAEhDmABIQ6AASEOoAEhDsABIQ7gASEQ8AEhESABIRFQASERgAEhEbABIRHgASESEAEhEkABIRJwASESkAEhGkABIRpgASEagAEhGqABIRrQASEa4AEhGvABIRsAASEbEAEhGzABIRtQASEbYAEhG3ABIRuQASEboAEhI1ABISNwASEjkAEhI7ABISPgASEj8AEhJAABISQQASEkIAEhJEABISRgASEkcAEhJIABISSgASEksAEhLGABISyAASEssAEhLNABIS0AASEtEAEhLSABIS0wASEtQAEhLWABIS2AASEtkAEhLaABIS3AASEt0AEhL2ABIS9wASEvgAEhL6ABITdQASE3cAEhN5ABITewASE34AEhN/ABITgAASE4EAEhOCABIThAASE4YAEhOHABITiAASE4oAEhOLABIUBgASFAgAEhQKABIUDAASFA8AEhQQABIUEQASFBIAEhQTABIUFQASFBcAEhQYABIUGQASFBsAEhQcABIUlwASFJkAEhSbABIUnQASFKAAEhShABIUogASFKMAEhSkABIUpgASFKgAEhSpABIUqgASFKwAEhStABIVKAASFSoAEhUsABIVLgASFTEAEhUyABIVMwASFTQAEhU1ABIVNwASFTkAEhU6ABIVOwASFT0AEhU+ABIVuQASFbsAEhW9ABIVvwASFcIAEhXDABIVxAASFcUAEhXGABIVyAASFcoAEhXLABIVzAASFc4AEhXPABIWGAASFjwAEhZjABIWhwASFooAEhaMABIWjgASFpAAEhaSABIWlAASFpUAEhaYABIWsQASFs4AEhbQABIW0gASFtQAEhbWABIW2AASFtoAEhbcABIW+QASFvwAEhb/ABIXAgASFwUAEhcIABIXCwASFw4AEhcQABIXiwASF40AEhePABIXkQASF5QAEheVABIXlgASF5cAEheYABIXmgASF5wAEhedABIXngASF6AAEhehABIYHAASGB4AEhggABIYIgASGCUAEhgmABIYJwASGCgAEhgpABIYKwASGC0AEhguABIYLwASGDEAEhgyABIYrQASGK8AEhixABIYswASGLYAEhi3ABIYuAASGLkAEhi6ABIYvAASGL4AEhi/ABIYwAASGMIAEhjDABIZPgASGUAAEhlDABIZRQASGUgAEhlJABIZSgASGUsAEhlMABIZTgASGVAAEhlRABIZUgASGVQAEhlVABIZ0AASGdIAEhnUABIZ1gASGdkAEhnaABIZ2wASGdwAEhndABIZ3wASGeEAEhniABIZ4wASGeUAEhnmABIaYQASGmMAEhplABIaZwASGmoAEhprABIabAASGm0AEhpuABIacAASGnIAEhpzABIadAASGnYAEhp3ABIa8gASGvQAEhr2ABIa+AASGvsAEhr8ABIa/QASGv4AEhr/ABIbAQASGwMAEhsEABIbBQASGwcAEhsIABIbmwASG74AEhveABIb/gASHAAAEhwCABIcBAASHAYAEhwJABIcCgASHAsAEhwOABIcDwASHBEAEhwSABIcFAASHBcAEhwYABIcGQASHBwAEhwdABIcIgASHDsAEhxEABIcRgASHEgAEhxRABIcVAASHFcAEhxZABIcogASHMYAEhztABIdEQASHRQAEh0WABIdGAASHRoAEh0cABIdHgASHR8AEh0iABIdOwASHVwAEh1eABIdYAASHWIAEh1kABIdZgASHWgAEh1qABIdbAASHY0AEh2QABIdkwASHZYAEh2ZABIdnAASHZ8AEh2iABIdpQASHacAEh4iABIeJAASHiYAEh4oABIeKwASHiwAEh4tABIeLgASHi8AEh4xABIeMwASHjQAEh41ABIeNwASHjgAEh6zABIetQASHrcAEh65ABIevAASHr0AEh6+ABIevwASHsAAEh7CABIexAASHsUAEh7GABIeyAASHskAEh9EABIfRgASH0kAEh9LABIfTgASH08AEh9QABIfUQASH1IAEh9UABIfVgASH1cAEh9YABIfWgASH1sAEh90ABIfdQASH3YAEh94ABIf8wASH/UAEh/3ABIf+QASH/wAEh/9ABIf/gASH/8AEiAAABIgAgASIAQAEiAFABIgBgASIAgAEiAJABIghAASIIYAEiCIABIgigASII0AEiCOABIgjwASIJAAEiCRABIgkwASIJUAEiCWABIglwASIJkAEiCaABIhFQASIRcAEiEZABIhGwASIR4AEiEfABIhIAASISEAEiEiABIhJAASISYAEiEnABIhKAASISoAEiErABIhpgASIagAEiGqABIhrAASIa8AEiGwABIhsQASIbIAEiGzABIhtQASIbcAEiG4ABIhuQASIbsAEiG8ABIiNwASIjkAEiI7ABIiPQASIkAAEiJBABIiQgASIkMAEiJEABIiRgASIkgAEiJJABIiSgASIkwAEiJNABIilgASIroAEiLhABIjBQASIwgAEiMKABIjDAASIw4AEiMQABIjEgASIxMAEiMWABIjLwASI0wAEiNOABIjUAASI1IAEiNUABIjVgASI1gAEiNaABIjdwASI3oAEiN9ABIjgAASI4MAEiOGABIjiQASI4wAEiOOABIkCQASJAsAEiQNABIkDwASJBIAEiQTABIkFAASJBUAEiQWABIkGAASJBoAEiQbABIkHAASJB4AEiQfABIkmgASJJwAEiSeABIkoAASJKMAEiSkABIkpQASJKYAEiSnABIkqQASJKsAEiSsABIkrQASJK8AEiSwABIlKwASJS0AEiUvABIlMQASJTQAEiU1ABIlNgASJTcAEiU4ABIlOgASJTwAEiU9ABIlPgASJUAAEiVBABIlvAASJb4AEiXBABIlwwASJcYAEiXHABIlyAASJckAEiXKABIlzAASJc4AEiXPABIl0AASJdIAEiXTABImTgASJlAAEiZSABImVAASJlcAEiZYABImWQASJloAEiZbABImXQASJl8AEiZgABImYQASJmMAEiZkABIm3wASJuEAEibjABIm5QASJugAEibpABIm6gASJusAEibsABIm7gASJvAAEibxABIm8gASJvQAEib1ABIncAASJ3IAEid0ABIndgASJ3kAEid6ABInewASJ3wAEid9ABInfwASJ4EAEieCABIngwASJ4UAEieGABIoGQASKDwAEihcABIofAASKH4AEiiAABIoggASKIQAEiiHABIoiAASKIkAEiiMABIojQASKI8AEiiQABIokgASKJUAEiiWABIolwASKJoAEiibABIooAASKLkAEijCABIoxAASKMYAEijPABIo0gASKNUAEijXABIpIAASKUQAEilrABIpjwASKZIAEimUABIplgASKZgAEimaABIpnAASKZ0AEimgABIpuQASKdoAEincABIp3gASKeAAEiniABIp5AASKeYAEinoABIp6gASKgsAEioOABIqEQASKhQAEioXABIqGgASKh0AEiogABIqIwASKiUAEiqgABIqogASKqQAEiqmABIqqQASKqoAEiqrABIqrAASKq0AEiqvABIqsQASKrIAEiqzABIqtQASKrYAEisxABIrMwASKzUAEis3ABIrOgASKzsAEis8ABIrPQASKz4AEitAABIrQgASK0MAEitEABIrRgASK0cAEivCABIrxAASK8cAEivJABIrzAASK80AEivOABIrzwASK9AAEivSABIr1AASK9UAEivWABIr2AASK9kAEivyABIr8wASK/QAEiv2ABIscQASLHMAEix1ABIsdwASLHoAEix7ABIsfAASLH0AEix+ABIsgAASLIIAEiyDABIshAASLIYAEiyHABItAgASLQQAEi0GABItCAASLQsAEi0MABItDQASLQ4AEi0PABItEQASLRMAEi0UABItFQASLRcAEi0YABItkwASLZUAEi2XABItmQASLZwAEi2dABItngASLZ8AEi2gABItogASLaQAEi2lABItpgASLagAEi2pABIuJAASLiYAEi4oABIuKgASLi0AEi4uABIuLwASLjAAEi4xABIuMwASLjUAEi42ABIuNwASLjkAEi46ABIutQASLrcAEi65ABIuuwASLr4AEi6/ABIuwAASLsEAEi7CABIuxAASLsYAEi7HABIuyAASLsoAEi7LABIvFAASLzgAEi9fABIvgwASL4YAEi+IABIvigASL4wAEi+OABIvkAASL5EAEi+UABIvrQASL8oAEi/MABIvzgASL9AAEi/SABIv1AASL9YAEi/YABIv9QASL/gAEi/7ABIv/gASMAEAEjAEABIwBwASMAoAEjAMABIwhwASMIkAEjCLABIwjQASMJAAEjCRABIwkgASMJMAEjCUABIwlgASMJgAEjCZABIwmgASMJwAEjCdABIxGAASMRoAEjEcABIxHgASMSEAEjEiABIxIwASMSQAEjElABIxJwASMSkAEjEqABIxKwASMS0AEjEuABIxqQASMasAEjGtABIxrwASMbIAEjGzABIxtAASMbUAEjG2ABIxuAASMboAEjG7ABIxvAASMb4AEjG/ABIyOgASMjwAEjI/ABIyQQASMkQAEjJFABIyRgASMkcAEjJIABIySgASMkwAEjJNABIyTgASMlAAEjJRABIyzAASMs4AEjLQABIy0gASMtUAEjLWABIy1wASMtgAEjLZABIy2wASMt0AEjLeABIy3wASMuEAEjLiABIzXQASM18AEjNhABIzYwASM2YAEjNnABIzaAASM2kAEjNqABIzbAASM24AEjNvABIzcAASM3IAEjNzABIz7gASM/AAEjPyABIz9AASM/cAEjP4ABIz+QASM/oAEjP7ABIz/QASM/8AEjQAABI0AQASNAMAEjQEABI0FQASNBYAEjQYABI0mwASNL8AEjTjABI1BgASNS0AEjVNABI1dAASNZsAEjW7ABI13wASNgMAEjYFABI2CAASNgoAEjYMABI2DgASNhEAEjYUABI2FgASNhgAEjYbABI2HQASNh8AEjYiABI2JQASNiYAEjYvABI2SAASNk0AEjZPABI2VAASNlcAEjZZABI2ogASNsYAEjbtABI3EQASNxQAEjcWABI3GAASNxoAEjccABI3HgASNx8AEjciABI3OwASN2AAEjdiABI3ZAASN2YAEjdoABI3agASN2wAEjduABI3cAASN3IAEjeXABI3mgASN50AEjegABI3owASN6YAEjepABI3rAASN68AEjeyABI3tAASOC8AEjgxABI4NAASODYAEjg5ABI4OgASODsAEjg8ABI4PQASOD8AEjhBABI4QgASOEMAEjhFABI4RgASOFcAEjhYABI4WgASONUAEjjXABI42QASONsAEjjeABI43wASOOAAEjjhABI44gASOOQAEjjmABI45wASOOgAEjjqABI46wASOWYAEjloABI5awASOW0AEjlwABI5cQASOXIAEjlzABI5dAASOXYAEjl4ABI5eQASOXoAEjl8ABI5fQASOY4AEjmTABI5lgASOZgAEjmpABI5rgASObEAEjmzABI5uAASOjMAEjo1ABI6NwASOjkAEjo8ABI6PQASOj4AEjo/ABI6QAASOkIAEjpEABI6RQASOkYAEjpIABI6SQASOsQAEjrGABI6yQASOssAEjrOABI6zwASOtAAEjrRABI60gASOtQAEjrWABI61wASOtgAEjraABI62wASOuwAEjrtABI67wASO2oAEjtsABI7bgASO3AAEjtzABI7dAASO3UAEjt2ABI7dwASO3kAEjt7ABI7fAASO30AEjt/ABI7gAASO/sAEjv9ABI8AAASPAIAEjwFABI8BgASPAcAEjwIABI8CQASPAsAEjwNABI8DgASPA8AEjwRABI8EgASPCsAEjwsABI8LQASPC8AEjyqABI8rAASPK4AEjywABI8swASPLQAEjy1ABI8tgASPLcAEjy5ABI8uwASPLwAEjy9ABI8vwASPMAAEj07ABI9PQASPUAAEj1CABI9RQASPUYAEj1HABI9SAASPUkAEj1LABI9TQASPU4AEj1PABI9UQASPVIAEj1qABI9gwASPYwAEj2PABI9kgASPZsAEj2eABI9oQASPaMAEj22ABI+SQASPmwAEj6MABI+rAASPq4AEj6wABI+sgASPrQAEj63ABI+uAASPrkAEj68ABI+vQASPr8AEj7AABI+wgASPsUAEj7GABI+xwASPsoAEj7LABI+0AASPukAEj7yABI+9AASPvYAEj7/ABI/AgASPwUAEj8HABI/UAASP3QAEj+bABI/vwASP8IAEj/EABI/xgASP8gAEj/KABI/zAASP80AEj/QABI/6QASQAoAEkAMABJADgASQBAAEkASABJAFAASQBYAEkAYABJAGgASQDsAEkA+ABJAQQASQEQAEkBHABJASgASQE0AEkBQABJAUwASQFUAEkDQABJA0gASQNQAEkDWABJA2QASQNoAEkDbABJA3AASQN0AEkDfABJA4QASQOIAEkDjABJA5QASQOYAEkFhABJBYwASQWUAEkFnABJBagASQWsAEkFsABJBbQASQW4AEkFwABJBcgASQXMAEkF0ABJBdgASQXcAEkHyABJB9AASQfcAEkH5ABJB/AASQf0AEkH+ABJB/wASQgAAEkICABJCBAASQgUAEkIGABJCCAASQgkAEkIiABJCIwASQiQAEkImABJCoQASQqMAEkKlABJCpwASQqoAEkKrABJCrAASQq0AEkKuABJCsAASQrIAEkKzABJCtAASQrYAEkK3ABJDMgASQzQAEkM2ABJDOAASQzsAEkM8ABJDPQASQz4AEkM/ABJDQQASQ0MAEkNEABJDRQASQ0cAEkNIABJDwwASQ8UAEkPHABJDyQASQ8wAEkPNABJDzgASQ88AEkPQABJD0gASQ9QAEkPVABJD1gASQ9gAEkPZABJEVAASRFYAEkRYABJEWgASRF0AEkReABJEXwASRGAAEkRhABJEYwASRGUAEkRmABJEZwASRGkAEkRqABJE5QASROcAEkTpABJE6wASRO4AEkTvABJE8AASRPEAEkTyABJE9AASRPYAEkT3ABJE+AASRPoAEkT7ABJFRAASRWgAEkWPABJFswASRbYAEkW4ABJFugASRbwAEkW+ABJFwAASRcEAEkXEABJF3QASRfoAEkX8ABJF/gASRgAAEkYCABJGBAASRgYAEkYIABJGJQASRigAEkYrABJGLgASRjEAEkY0ABJGNwASRjoAEkY8ABJGtwASRrkAEka7ABJGvQASRsAAEkbBABJGwgASRsMAEkbEABJGxgASRsgAEkbJABJGygASRswAEkbNABJHSAASR0oAEkdMABJHTgASR1EAEkdSABJHUwASR1QAEkdVABJHVwASR1kAEkdaABJHWwASR10AEkdeABJH2QASR9sAEkfdABJH3wASR+IAEkfjABJH5AASR+UAEkfmABJH6AASR+oAEkfrABJH7AASR+4AEkfvABJIagASSGwAEkhuABJIcAASSHMAEkh0ABJIdQASSHYAEkh3ABJIeQASSHsAEkh8ABJIfQASSH8AEkiAABJI+wASSP0AEkj/ABJJAQASSQQAEkkFABJJBgASSQcAEkkIABJJCgASSQwAEkkNABJJDgASSRAAEkkRABJJjAASSY4AEkmRABJJkwASSZYAEkmXABJJmAASSZkAEkmaABJJnAASSZ4AEkmfABJJoAASSaIAEkmjABJJuwASSjYAEko4ABJKOgASSjwAEko/ABJKQAASSkEAEkpCABJKQwASSkUAEkpHABJKSAASSkkAEkpLABJKTAASSt8AEksCABJLIgASS0IAEktEABJLRgASS0gAEktKABJLTQASS04AEktPABJLUgASS1MAEktVABJLVgASS1gAEktbABJLXAASS10AEktgABJLYQASS2YAEkt/ABJLiAASS4oAEkuMABJLlQASS5gAEkubABJLnQASS+YAEkwKABJMMQASTFUAEkxYABJMWgASTFwAEkxeABJMYAASTGIAEkxjABJMZgASTH8AEkygABJMogASTKQAEkymABJMqAASTKoAEkysABJMrgASTLAAEkzRABJM1AASTNcAEkzaABJM3QASTOAAEkzjABJM5gASTOkAEkzrABJNZgASTWgAEk1qABJNbAASTW8AEk1wABJNcQASTXIAEk1zABJNdQASTXcAEk14ABJNeQASTXsAEk18ABJN9wASTfkAEk37ABJN/QASTgAAEk4BABJOAgASTgMAEk4EABJOBgASTggAEk4JABJOCgASTgwAEk4NABJOiAASTooAEk6NABJOjwASTpIAEk6TABJOlAASTpUAEk6WABJOmAASTpoAEk6bABJOnAASTp4AEk6fABJOuAASTrkAEk66ABJOvAASTzcAEk85ABJPOwASTz0AEk9AABJPQQAST0IAEk9DABJPRAAST0YAEk9IABJPSQAST0oAEk9MABJPTQAST8gAEk/KABJPzAAST84AEk/RABJP0gAST9MAEk/UABJP1QAST9cAEk/ZABJP2gAST9sAEk/dABJP3gASUFkAElBbABJQXQASUF8AElBiABJQYwASUGQAElBlABJQZgASUGgAElBqABJQawASUGwAElBuABJQbwASUOoAElDsABJQ7gASUPAAElDzABJQ9AASUPUAElD2ABJQ9wASUPkAElD7ABJQ/AASUP0AElD/ABJRAAASUXsAElF9ABJRfwASUYEAElGEABJRhQASUYYAElGHABJRiAASUYoAElGMABJRjQASUY4AElGQABJRkQASUdoAElH+ABJSJQASUkkAElJMABJSTgASUlAAElJSABJSVAASUlYAElJXABJSWgASUnMAElKQABJSkgASUpQAElKWABJSmAASUpoAElKcABJSngASUrsAElK+ABJSwQASUsQAElLHABJSygASUs0AElLQABJS0gASU00AElNPABJTUQASU1MAElNWABJTVwASU1gAElNZABJTWgASU1wAElNeABJTXwASU2AAElNiABJTYwASU94AElPgABJT4gASU+QAElPnABJT6AASU+kAElPqABJT6wASU+0AElPvABJT8AASU/EAElPzABJT9AASVG8AElRxABJUcwASVHUAElR4ABJUeQASVHoAElR7ABJUfAASVH4AElSAABJUgQASVIIAElSEABJUhQASVQAAElUCABJVBQASVQcAElUKABJVCwASVQwAElUNABJVDgASVRAAElUSABJVEwASVRQAElUWABJVFwASVZIAElWUABJVlgASVZgAElWbABJVnAASVZ0AElWeABJVnwASVaEAElWjABJVpAASVaUAElWnABJVqAASViMAElYlABJWJwASVikAElYsABJWLQASVi4AElYvABJWMAASVjIAElY0ABJWNQASVjYAElY4ABJWOQASVrQAEla2ABJWuAASVroAEla9ABJWvgASVr8AElbAABJWwQASVsMAElbFABJWxgASVscAElbJABJWygASVtsAElbcABJW3gASV2EAEleFABJXqQASV8wAElfzABJYEwASWDoAElhhABJYgQASWKUAEljJABJYywASWM4AEljQABJY0gASWNQAEljXABJY2gASWNwAEljeABJY4QASWOMAEljlABJY6AASWOsAEljsABJY9QASWQ4AElkTABJZFQASWRoAElkdABJZHwASWWgAElmMABJZswASWdcAElnaABJZ3AASWd4AElngABJZ4gASWeQAElnlABJZ6AASWgEAElomABJaKAASWioAElosABJaLgASWjAAEloyABJaNAASWjYAElo4ABJaXQASWmAAElpjABJaZgASWmkAElpsABJabwASWnIAElp1ABJaeAASWnoAElr1ABJa9wASWvoAElr8ABJa/wASWwAAElsBABJbAgASWwMAElsFABJbBwASWwgAElsJABJbCwASWwwAElsdABJbHgASWyAAElubABJbnQASW58AEluhABJbpAASW6UAElumABJbpwASW6gAEluqABJbrAASW60AEluuABJbsAASW7EAElwsABJcLgASXDEAElwzABJcNgASXDcAElw4ABJcOQASXDoAElw8ABJcPgASXD8AElxAABJcQgASXEMAElxUABJcVQASXFcAElzSABJc1AASXNYAElzYABJc2wASXNwAElzdABJc3gASXN8AElzhABJc4wASXOQAElzlABJc5wASXOgAEl1jABJdZQASXWgAEl1qABJdbQASXW4AEl1vABJdcAASXXEAEl1zABJddQASXXYAEl13ABJdeQASXXoAEl2LABJdjAASXY4AEl4JABJeCwASXg0AEl4PABJeEgASXhMAEl4UABJeFQASXhYAEl4YABJeGgASXhsAEl4cABJeHgASXh8AEl6aABJenAASXp8AEl6hABJepAASXqUAEl6mABJepwASXqgAEl6qABJerAASXq0AEl6uABJesAASXrEAEl7KABJeywASXswAEl7OABJfSQASX0sAEl9NABJfTwASX1IAEl9TABJfVAASX1UAEl9WABJfWAASX1oAEl9bABJfXAASX14AEl9fABJf2gASX9wAEl/fABJf4QASX+QAEl/lABJf5gASX+cAEl/oABJf6gASX+wAEl/tABJf7gASX/AAEl/xABJf/wASYBgAEmAtABJgMAASYDMAEmA2ABJgOQASYDwAEmBRABJgVAASYFcAEmBaABJgXQASYGAAEmBiABJgaAASYHsAEmCPABJgoQASYLsAEmFOABJhcQASYZEAEmGxABJhswASYbUAEmG3ABJhuQASYbwAEmG9ABJhvgASYcEAEmHCABJhxAASYcUAEmHHABJhygASYcsAEmHMABJhzwASYdAAEmHZABJh8gASYfsAEmH9ABJh/wASYggAEmILABJiDgASYhAAEmJZABJifQASYqQAEmLIABJiywASYs0AEmLPABJi0QASYtMAEmLVABJi1gASYtkAEmLyABJjEwASYxUAEmMXABJjGQASYxsAEmMdABJjHwASYyEAEmMjABJjRAASY0cAEmNKABJjTQASY1AAEmNTABJjVgASY1kAEmNcABJjXgASY9kAEmPbABJj3QASY98AEmPiABJj4wASY+QAEmPlABJj5gASY+gAEmPqABJj6wASY+wAEmPuABJj7wASZGoAEmRsABJkbgASZHAAEmRzABJkdAASZHUAEmR2ABJkdwASZHkAEmR7ABJkfAASZH0AEmR/ABJkgAASZPsAEmT9ABJlAAASZQIAEmUFABJlBgASZQcAEmUIABJlCQASZQsAEmUNABJlDgASZQ8AEmURABJlEgASZSsAEmUsABJlLQASZS8AEmWqABJlrAASZa4AEmWwABJlswASZbQAEmW1ABJltgASZbcAEmW5ABJluwASZbwAEmW9ABJlvwASZcAAEmY7ABJmPQASZj8AEmZBABJmRAASZkUAEmZGABJmRwASZkgAEmZKABJmTAASZk0AEmZOABJmUAASZlEAEmbMABJmzgASZtAAEmbSABJm1QASZtYAEmbXABJm2AASZtkAEmbbABJm3QASZt4AEmbfABJm4QASZuIAEmddABJnXwASZ2EAEmdjABJnZgASZ2cAEmdoABJnaQASZ2oAEmdsABJnbgASZ28AEmdwABJncgASZ3MAEmfuABJn8AASZ/IAEmf0ABJn9wASZ/gAEmf5ABJn+gASZ/sAEmf9ABJn/wASaAAAEmgBABJoAwASaAQAEmhNABJocQASaJgAEmi8ABJovwASaMEAEmjDABJoxQASaMcAEmjJABJoygASaM0AEmjmABJpAwASaQUAEmkHABJpCQASaQsAEmkNABJpDwASaREAEmkuABJpMQASaTQAEmk3ABJpOgASaT0AEmlAABJpQwASaUUAEmnAABJpwgASacQAEmnGABJpyQASacoAEmnLABJpzAASac0AEmnPABJp0QASadIAEmnTABJp1QASadYAEmpRABJqUwASalUAEmpXABJqWgASalsAEmpcABJqXQASal4AEmpgABJqYgASamMAEmpkABJqZgASamcAEmriABJq5AASauYAEmroABJq6wASauwAEmrtABJq7gASau8AEmrxABJq8wASavQAEmr1ABJq9wASavgAEmtzABJrdQASa3gAEmt6ABJrfQASa34AEmt/ABJrgAASa4EAEmuDABJrhQASa4YAEmuHABJriQASa4oAEmwFABJsBwASbAkAEmwLABJsDgASbA8AEmwQABJsEQASbBIAEmwUABJsFgASbBcAEmwYABJsGgASbBsAEmyWABJsmAASbJoAEmycABJsnwASbKAAEmyhABJsogASbKMAEmylABJspwASbKgAEmypABJsqwASbKwAEm0nABJtKQASbSsAEm0tABJtMAASbTEAEm0yABJtMwASbTQAEm02ABJtOAASbTkAEm06ABJtPAASbT0AEm3QABJt8wASbhMAEm4zABJuNQASbjcAEm45ABJuOwASbj4AEm4/ABJuQAASbkMAEm5EABJuRgASbkcAEm5JABJuTAASbk0AEm5OABJuUQASblIAEm5XABJucAASbnkAEm57ABJufQASboYAEm6JABJujAASbo4AEm7XABJu+wASbyIAEm9GABJvSQASb0sAEm9NABJvTwASb1EAEm9TABJvVAASb1cAEm9wABJvkQASb5MAEm+VABJvlwASb5kAEm+bABJvnQASb58AEm+hABJvwgASb8UAEm/IABJvywASb84AEm/RABJv1AASb9cAEm/aABJv3AAScFcAEnBZABJwWwAScF0AEnBgABJwYQAScGIAEnBjABJwZAAScGYAEnBoABJwaQAScGoAEnBsABJwbQAScOgAEnDqABJw7AAScO4AEnDxABJw8gAScPMAEnD0ABJw9QAScPcAEnD5ABJw+gAScPsAEnD9ABJw/gAScXkAEnF7ABJxfgAScYAAEnGDABJxhAAScYUAEnGGABJxhwAScYkAEnGLABJxjAAScY0AEnGPABJxkAAScakAEnGqABJxqwASca0AEnIoABJyKgASciwAEnIuABJyMQAScjIAEnIzABJyNAAScjUAEnI3ABJyOQAScjoAEnI7ABJyPQAScj4AEnK5ABJyuwAScr0AEnK/ABJywgAScsMAEnLEABJyxQAScsYAEnLIABJyygAScssAEnLMABJyzgAScs8AEnNKABJzTAASc04AEnNQABJzUwASc1QAEnNVABJzVgASc1cAEnNZABJzWwASc1wAEnNdABJzXwASc2AAEnPbABJz3QASc98AEnPhABJz5AASc+UAEnPmABJz5wASc+gAEnPqABJz7AASc+0AEnPuABJz8AASc/EAEnRsABJ0bgASdHAAEnRyABJ0dQASdHYAEnR3ABJ0eAASdHkAEnR7ABJ0fQASdH4AEnR/ABJ0gQASdIIAEnTLABJ07wASdRYAEnU6ABJ1PQASdT8AEnVBABJ1QwASdUUAEnVHABJ1SAASdUsAEnVkABJ1gQASdYMAEnWFABJ1hwASdYkAEnWLABJ1jQASdY8AEnWsABJ1rwASdbIAEnW1ABJ1uAASdbsAEnW+ABJ1wQASdcMAEnY+ABJ2QAASdkIAEnZEABJ2RwASdkgAEnZJABJ2SgASdksAEnZNABJ2TwASdlAAEnZRABJ2UwASdlQAEnbPABJ20QASdtMAEnbVABJ22AASdtkAEnbaABJ22wASdtwAEnbeABJ24AASduEAEnbiABJ25AASduUAEndgABJ3YgASd2QAEndmABJ3aQASd2oAEndrABJ3bAASd20AEndvABJ3cQASd3IAEndzABJ3dQASd3YAEnfxABJ38wASd/YAEnf4ABJ3+wASd/wAEnf9ABJ3/gASd/8AEngBABJ4AwASeAQAEngFABJ4BwASeAgAEniDABJ4hQASeIcAEniJABJ4jAASeI0AEniOABJ4jwASeJAAEniSABJ4lAASeJUAEniWABJ4mAASeJkAEnkUABJ5FgASeRkAEnkbABJ5HgASeR8AEnkgABJ5IQASeSIAEnkkABJ5JgASeScAEnkoABJ5KgASeSsAEnlKABJ5xQASeccAEnnJABJ5ywASec4AEnnPABJ50AASedEAEnnSABJ51AASedYAEnnXABJ52AASedoAEnnbABJ6bgASepEAEnqxABJ60QASetMAEnrVABJ61wASetkAEnrcABJ63QASet4AEnrhABJ64gASeuQAEnrlABJ65wASeuoAEnrrABJ67AASeu8AEnrwABJ6+QASexIAEnsbABJ7HQASex8AEnsoABJ7KwASey4AEnswABJ7eQASe50AEnvEABJ76AASe+sAEnvtABJ77wASe/EAEnvzABJ79QASe/YAEnv5ABJ8EgASfDMAEnw1ABJ8NwASfDkAEnw7ABJ8PQASfD8AEnxBABJ8QwASfGQAEnxnABJ8agASfG0AEnxwABJ8cwASfHYAEnx5ABJ8fAASfH4AEnz5ABJ8+wASfP0AEnz/ABJ9AgASfQMAEn0EABJ9BQASfQYAEn0IABJ9CgASfQsAEn0MABJ9DgASfQ8AEn2KABJ9jAASfY4AEn2QABJ9kwASfZQAEn2VABJ9lgASfZcAEn2ZABJ9mwASfZwAEn2dABJ9nwASfaAAEn4bABJ+HQASfiAAEn4iABJ+JQASfiYAEn4nABJ+KAASfikAEn4rABJ+LQASfi4AEn4vABJ+MQASfjIAEn5LABJ+TAASfk0AEn5PABJ+ygASfswAEn7OABJ+0AASftMAEn7UABJ+1QASftYAEn7XABJ+2QASftsAEn7cABJ+3QASft8AEn7gABJ/WwASf10AEn9fABJ/YQASf2QAEn9lABJ/ZgASf2cAEn9oABJ/agASf2wAEn9tABJ/bgASf3AAEn9xABJ/7AASf+4AEn/wABJ/8gASf/UAEn/2ABJ/9wASf/gAEn/5ABJ/+wASf/0AEn/+ABJ//wASgAEAEoACABKAfQASgH8AEoCBABKAgwASgIYAEoCHABKAiAASgIkAEoCKABKAjAASgI4AEoCPABKAkAASgJIAEoCTABKBDgASgRAAEoESABKBFAASgRcAEoEYABKBGQASgRoAEoEbABKBHQASgR8AEoEgABKBIQASgSMAEoEkABKBbQASgZEAEoG4ABKB3AASgd8AEoHhABKB4wASgeUAEoHnABKB6QASgeoAEoHtABKCBgASgiMAEoIlABKCJwASgikAEoIrABKCLQASgi8AEoIxABKCTgASglEAEoJUABKCVwASgloAEoJdABKCYAASgmMAEoJlABKC4AASguIAEoLkABKC5gASgukAEoLqABKC6wASguwAEoLtABKC7wASgvEAEoLyABKC8wASgvUAEoL2ABKDcQASg3MAEoN1ABKDdwASg3oAEoN7ABKDfAASg30AEoN+ABKDgAASg4IAEoODABKDhAASg4YAEoOHABKEAgAShAQAEoQGABKECAAShAsAEoQMABKEDQAShA4AEoQPABKEEQAShBMAEoQUABKEFQAShBcAEoQYABKEkwAShJUAEoSXABKEmQAShJwAEoSdABKEngAShJ8AEoSgABKEogAShKQAEoSlABKEpgAShKgAEoSpABKFJAAShSYAEoUoABKFKgAShS0AEoUuABKFLwAShTAAEoUxABKFMwAShTUAEoU2ABKFNwAShTkAEoU6ABKFtQAShbcAEoW5ABKFuwAShb4AEoW/ABKFwAAShcEAEoXCABKFxAAShcYAEoXHABKFyAAShcoAEoXLABKGRgAShkgAEoZKABKGTAAShk8AEoZQABKGUQAShlIAEoZTABKGVQAShlcAEoZYABKGWQAShlsAEoZcABKG7wAShxIAEocyABKHUgASh1QAEodWABKHWAASh1oAEoddABKHXgASh18AEodiABKHYwASh2UAEodmABKHaAASh2sAEodsABKHbQASh3AAEodxABKHdgASh48AEoeYABKHmgASh5wAEoelABKHqAASh6sAEoetABKH9gASiBoAEohBABKIZQASiGgAEohqABKIbAASiG4AEohwABKIcgASiHMAEoh2ABKIjwASiLAAEoiyABKItAASiLYAEoi4ABKIugASiLwAEoi+ABKIwAASiOEAEojkABKI5wASiOoAEojtABKI8AASiPMAEoj2ABKI+QASiPsAEol2ABKJeAASiXoAEol8ABKJfwASiYAAEomBABKJggASiYMAEomFABKJhwASiYgAEomJABKJiwASiYwAEooHABKKCQASigsAEooNABKKEAASihEAEooSABKKEwASihQAEooWABKKGAASihkAEooaABKKHAASih0AEoqYABKKmgASip0AEoqfABKKogASiqMAEoqkABKKpQASiqYAEoqoABKKqgASiqsAEoqsABKKrgASiq8AEorIABKKyQASisoAEorMABKLRwASi0kAEotLABKLTQASi1AAEotRABKLUgASi1MAEotUABKLVgASi1gAEotZABKLWgASi1wAEotdABKL2AASi9oAEovcABKL3gASi+EAEoviABKL4wASi+QAEovlABKL5wASi+kAEovqABKL6wASi+0AEovuABKMaQASjGsAEoxtABKMbwASjHIAEoxzABKMdAASjHUAEox2ABKMeAASjHoAEox7ABKMfAASjH4AEox/ABKM+gASjPwAEoz+ABKNAAASjQMAEo0EABKNBQASjQYAEo0HABKNCQASjQsAEo0MABKNDQASjQ8AEo0QABKNiwASjY0AEo2PABKNkQASjZQAEo2VABKNlgASjZcAEo2YABKNmgASjZwAEo2dABKNngASjaAAEo2hABKN6gASjg4AEo41ABKOWQASjlwAEo5eABKOYAASjmIAEo5kABKOZgASjmcAEo5qABKOgwASjqAAEo6iABKOpAASjqYAEo6oABKOqgASjqwAEo6uABKOywASjs4AEo7RABKO1AASjtcAEo7aABKO3QASjuAAEo7iABKPXQASj18AEo9hABKPYwASj2YAEo9nABKPaAASj2kAEo9qABKPbAASj24AEo9vABKPcAASj3IAEo9zABKP7gASj/AAEo/yABKP9AASj/cAEo/4ABKP+QASj/oAEo/7ABKP/QASj/8AEpAAABKQAQASkAMAEpAEABKQfwASkIEAEpCDABKQhQASkIgAEpCJABKQigASkIsAEpCMABKQjgASkJAAEpCRABKQkgASkJQAEpCVABKREAASkRIAEpEUABKRFgASkRkAEpEaABKRGwASkRwAEpEdABKRHwASkSEAEpEiABKRIwASkSUAEpEmABKRoQASkaMAEpGlABKRpwASkaoAEpGrABKRrAASka0AEpGuABKRsAASkbIAEpGzABKRtAASkbYAEpG3ABKSMgASkjQAEpI2ABKSOAASkjsAEpI8ABKSPQASkj4AEpI/ABKSQQASkkMAEpJEABKSRQASkkcAEpJIABKSwwASksUAEpLHABKSyQASkswAEpLNABKSzgASks8AEpLQABKS0gASktQAEpLVABKS1gASktgAEpLZABKTbAASk48AEpOvABKTzwASk9EAEpPTABKT1QASk9cAEpPaABKT2wASk9wAEpPfABKT4AASk+IAEpPjABKT5QASk+gAEpPpABKT6gASk+0AEpPuABKT8wASlAwAEpQVABKUFwASlBkAEpQiABKUJQASlCgAEpQqABKUcwASlJcAEpS+ABKU4gASlOUAEpTnABKU6QASlOsAEpTtABKU7wASlPAAEpTzABKVDAASlS0AEpUvABKVMQASlTMAEpU1ABKVNwASlTkAEpU7ABKVPQASlV4AEpVhABKVZAASlWcAEpVqABKVbQASlXAAEpVzABKVdgASlXgAEpXzABKV9QASlfcAEpX5ABKV/AASlf0AEpX+ABKV/wASlgAAEpYCABKWBAASlgUAEpYGABKWCAASlgkAEpaEABKWhgASlogAEpaKABKWjQASlo4AEpaPABKWkAASlpEAEpaTABKWlQASlpYAEpaXABKWmQASlpoAEpcVABKXFwASlxoAEpccABKXHwASlyAAEpchABKXIgASlyMAEpclABKXJwASlygAEpcpABKXKwASlywAEpdFABKXRgASl0cAEpdJABKXxAASl8YAEpfIABKXygASl80AEpfOABKXzwASl9AAEpfRABKX0wASl9UAEpfWABKX1wASl9kAEpfaABKYVQASmFcAEphZABKYWwASmF4AEphfABKYYAASmGEAEphiABKYZAASmGYAEphnABKYaAASmGoAEphrABKY5gASmOgAEpjqABKY7AASmO8AEpjwABKY8QASmPIAEpjzABKY9QASmPcAEpj4ABKY+QASmPsAEpj8ABKZdwASmXkAEpl7ABKZfQASmYAAEpmBABKZggASmYMAEpmEABKZhgASmYgAEpmJABKZigASmYwAEpmNABKaCAASmgoAEpoMABKaDgASmhEAEpoSABKaEwASmhQAEpoVABKaFwASmhkAEpoaABKaGwASmh0AEpoeABKaZwASmosAEpqyABKa1gASmtkAEprbABKa3QASmt8AEprhABKa4wASmuQAEprnABKbAAASmx0AEpsfABKbIQASmyMAEpslABKbJwASmykAEpsrABKbSAASm0sAEptOABKbUQASm1QAEptXABKbWgASm10AEptfABKb2gASm9wAEpveABKb4AASm+MAEpvkABKb5QASm+YAEpvnABKb6QASm+sAEpvsABKb7QASm+8AEpvwABKcawASnG0AEpxvABKccQASnHQAEpx1ABKcdgASnHcAEpx4ABKcegASnHwAEpx9ABKcfgASnIAAEpyBABKc/AASnP4AEp0AABKdAgASnQUAEp0GABKdBwASnQgAEp0JABKdCwASnQ0AEp0OABKdDwASnREAEp0SABKdjQASnY8AEp2SABKdlAASnZcAEp2YABKdmQASnZoAEp2bABKdnQASnZ8AEp2gABKdoQASnaMAEp2kABKeHwASniEAEp4jABKeJQASnigAEp4pABKeKgASnisAEp4sABKeLgASnjAAEp4xABKeMgASnjQAEp41ABKesAASnrIAEp60ABKetgASnrkAEp66ABKeuwASnrwAEp69ABKevwASnsEAEp7CABKewwASnsUAEp7GABKfQQASn0MAEp9FABKfRwASn0oAEp9LABKfTAASn00AEp9OABKfUAASn1IAEp9TABKfVAASn1YAEp9XABKfaAASn2kAEp9rABKf7gASoBIAEqA2ABKgWQASoIAAEqCgABKgxwASoO4AEqEOABKhMgASoVYAEqFYABKhWwASoV0AEqFfABKhYQASoWQAEqFnABKhaQASoWsAEqFuABKhcAASoXIAEqF1ABKheAASoXkAEqF+ABKhlwASoZwAEqGeABKhowASoaYAEqGoABKh8QASohUAEqI8ABKiYAASomMAEqJlABKiZwASomkAEqJrABKibQASom4AEqJxABKiigASoq8AEqKxABKiswASorUAEqK3ABKiuQASorsAEqK9ABKivwASosEAEqLmABKi6QASouwAEqLvABKi8gASovUAEqL4ABKi+wASov4AEqMBABKjAwASo34AEqOAABKjgwASo4UAEqOIABKjiQASo4oAEqOLABKjjAASo44AEqOQABKjkQASo5IAEqOUABKjlQASo6YAEqOnABKjqQASpCQAEqQmABKkKAASpCoAEqQtABKkLgASpC8AEqQwABKkMQASpDMAEqQ1ABKkNgASpDcAEqQ5ABKkOgASpLUAEqS3ABKkugASpLwAEqS/ABKkwAASpMEAEqTCABKkwwASpMUAEqTHABKkyAASpMkAEqTLABKkzAASpN0AEqTiABKk5QASpOcAEqT4ABKlAQASpQQAEqUHABKlCQASpRwAEqWXABKlmQASpZsAEqWdABKloAASpaEAEqWiABKlowASpaQAEqWmABKlqAASpakAEqWqABKlrAASpa0AEqYoABKmKgASpi0AEqYvABKmMgASpjMAEqY0ABKmNQASpjYAEqY4ABKmOgASpjsAEqY8ABKmPgASpj8AEqZQABKmUQASplMAEqbOABKm0AASptIAEqbUABKm1wASptgAEqbZABKm2gASptsAEqbdABKm3wASpuAAEqbhABKm4wASpuQAEqdfABKnYQASp2QAEqdmABKnaQASp2oAEqdrABKnbAASp20AEqdvABKncQASp3IAEqdzABKndQASp3YAEqePABKnkAASp5EAEqeTABKoDgASqBAAEqgSABKoFAASqBcAEqgYABKoGQASqBoAEqgbABKoHQASqB8AEqggABKoIQASqCMAEqgkABKonwASqKEAEqikABKopgASqKkAEqiqABKoqwASqKwAEqitABKorwASqLEAEqiyABKoswASqLUAEqi2ABKo1AASqO0AEqj2ABKo+QASqPwAEqkFABKpCAASqQsAEqkNABKpIAASqbMAEqnWABKp9gASqhYAEqoYABKqGgASqhwAEqoeABKqIQASqiIAEqojABKqJgASqicAEqopABKqKgASqiwAEqovABKqMAASqjEAEqo0ABKqNQASqjoAEqpTABKqXAASql4AEqpgABKqaQASqmwAEqpvABKqcQASqroAEqreABKrBQASqykAEqssABKrLgASqzAAEqsyABKrNAASqzYAEqs3ABKrOgASq1MAEqt0ABKrdgASq3gAEqt6ABKrfAASq34AEquAABKrggASq4QAEqulABKrqAASq6sAEquuABKrsQASq7QAEqu3ABKrugASq70AEqu/ABKsOgASrDwAEqw+ABKsQAASrEMAEqxEABKsRQASrEYAEqxHABKsSQASrEsAEqxMABKsTQASrE8AEqxQABKsywASrM0AEqzPABKs0QASrNQAEqzVABKs1gASrNcAEqzYABKs2gASrNwAEqzdABKs3gASrOAAEqzhABKtXAASrV4AEq1hABKtYwASrWYAEq1nABKtaAASrWkAEq1qABKtbAASrW4AEq1vABKtcAASrXIAEq1zABKtjAASrY0AEq2OABKtkAASrgsAEq4NABKuDwASrhEAEq4UABKuFQASrhYAEq4XABKuGAASrhoAEq4cABKuHQASrh4AEq4gABKuIQASrpwAEq6eABKuoAASrqIAEq6lABKupgASrqcAEq6oABKuqQASrqsAEq6tABKurgASrq8AEq6xABKusgASry0AEq8vABKvMQASrzMAEq82ABKvNwASrzgAEq85ABKvOgASrzwAEq8+ABKvPwASr0AAEq9CABKvQwASr74AEq/AABKvwgASr8QAEq/HABKvyAASr8kAEq/KABKvywASr80AEq/PABKv0AASr9EAEq/TABKv1AASsE8AErBRABKwUwASsFUAErBYABKwWQASsFoAErBbABKwXAASsF4AErBgABKwYQASsGIAErBkABKwZQASsK4AErDSABKw+QASsR0AErEgABKxIgASsSQAErEmABKxKAASsSoAErErABKxLgASsUcAErFkABKxZgASsWgAErFqABKxbAASsW4AErFwABKxcgASsY8AErGSABKxlQASsZgAErGbABKxngASsaEAErGkABKxpgASsiEAErIjABKyJQASsicAErIqABKyKwASsiwAErItABKyLgASsjAAErIyABKyMwASsjQAErI2ABKyNwASsrIAErK0ABKytgASsrgAErK7ABKyvAASsr0AErK+ABKyvwASssEAErLDABKyxAASssUAErLHABKyyAASs0MAErNFABKzRwASs0kAErNMABKzTQASs04AErNPABKzUAASs1IAErNUABKzVQASs1YAErNYABKzWQASs9QAErPWABKz2QASs9sAErPeABKz3wASs+AAErPhABKz4gASs+QAErPmABKz5wASs+gAErPqABKz6wAStGYAErRoABK0agAStGwAErRvABK0cAAStHEAErRyABK0cwAStHUAErR3ABK0eAAStHkAErR7ABK0fAAStPcAErT5ABK0+wAStP0AErUAABK1AQAStQIAErUDABK1BAAStQYAErUIABK1CQAStQoAErUMABK1DQAStYgAErWKABK1jAAStY4AErWRABK1kgAStZMAErWUABK1lQAStZcAErWZABK1mgAStZsAErWdABK1ngAStjEAErZUABK2dAAStpQAEraWABK2mAAStpoAEracABK2nwAStqAAErahABK2pAAStqUAEranABK2qAAStqoAEratABK2rgAStq8AErayABK2swAStrgAErbRABK22gASttwAErbeABK25wAStuoAErbtABK27wAStzgAErdcABK3gwASt6cAEreqABK3rAASt64AErewABK3sgASt7QAEre1ABK3uAASt9EAErfyABK39AASt/YAErf4ABK3+gASt/wAErf+ABK4AAASuAIAErgjABK4JgASuCkAErgsABK4LwASuDIAErg1ABK4OAASuDsAErg9ABK4uAASuLoAEri8ABK4vgASuMEAErjCABK4wwASuMQAErjFABK4xwASuMkAErjKABK4ywASuM0AErjOABK5SQASuUsAErlNABK5TwASuVIAErlTABK5VAASuVUAErlWABK5WAASuVoAErlbABK5XAASuV4AErlfABK52gASudwAErnfABK54QASueQAErnlABK55gASuecAErnoABK56gASuewAErntABK57gASufAAErnxABK6CgASugsAEroMABK6DgASuokAErqLABK6jQASuo8AErqSABK6kwASupQAErqVABK6lgASupgAErqaABK6mwASupwAErqeABK6nwASuxoAErscABK7HgASuyAAErsjABK7JAASuyUAErsmABK7JwASuykAErsrABK7LAASuy0AErsvABK7MAASu6sAErutABK7rwASu7EAEru0ABK7tQASu7YAEru3ABK7uAASu7oAEru8ABK7vQASu74AErvAABK7wQASvDwAErw+ABK8QAASvEIAErxFABK8RgASvEcAErxIABK8SQASvEsAErxNABK8TgASvE8AErxRABK8UgASvM0AErzPABK80QASvNMAErzWABK81wASvNgAErzZABK82gASvNwAErzeABK83wASvOAAErziABK84wASvSwAEr1QABK9dwASvZsAEr2eABK9oAASvaIAEr2kABK9pgASvagAEr2pABK9rAASvcUAEr3iABK95AASveYAEr3oABK96gASvewAEr3uABK98AASvg0AEr4QABK+EwASvhYAEr4ZABK+HAASvh8AEr4iABK+JAASvp8AEr6hABK+owASvqUAEr6oABK+qQASvqoAEr6rABK+rAASvq4AEr6wABK+sQASvrIAEr60ABK+tQASvzAAEr8yABK/NAASvzYAEr85ABK/OgASvzsAEr88ABK/PQASvz8AEr9BABK/QgASv0MAEr9FABK/RgASv8EAEr/DABK/xQASv8cAEr/KABK/ywASv8wAEr/NABK/zgASv9AAEr/SABK/0wASv9QAEr/WABK/1wASwFIAEsBUABLAVwASwFkAEsBcABLAXQASwF4AEsBfABLAYAASwGIAEsBkABLAZQASwGYAEsBoABLAaQASwOQAEsDmABLA6AASwOoAEsDtABLA7gASwO8AEsDwABLA8QASwPMAEsD1ABLA9gASwPcAEsD5ABLA+gASwXUAEsF3ABLBeQASwXsAEsF+ABLBfwASwYAAEsGBABLBggASwYQAEsGGABLBhwASwYgAEsGKABLBiwASwgYAEsIIABLCCgASwgwAEsIPABLCEAASwhEAEsISABLCEwASwhUAEsIXABLCGAASwhkAEsIbABLCHAASwi0AEsIuABLCMAASwrMAEsLXABLC+wASwx4AEsNFABLDZQASw4wAEsOzABLD0wASw/cAEsQbABLEHQASxCAAEsQiABLEJAASxCYAEsQpABLELAASxC4AEsQwABLEMwASxDUAEsQ3ABLEOgASxD0AEsQ+ABLEQwASxFwAEsRhABLEYwASxGgAEsRrABLEbQASxLYAEsTaABLFAQASxSUAEsUoABLFKgASxSwAEsUuABLFMAASxTIAEsUzABLFNgASxU8AEsV0ABLFdgASxXgAEsV6ABLFfAASxX4AEsWAABLFggASxYQAEsWGABLFqwASxa4AEsWxABLFtAASxbcAEsW6ABLFvQASxcAAEsXDABLFxgASxcgAEsZDABLGRQASxkgAEsZKABLGTQASxk4AEsZPABLGUAASxlEAEsZTABLGVQASxlYAEsZXABLGWQASxloAEsZrABLGbAASxm4AEsbpABLG6wASxu0AEsbvABLG8gASxvMAEsb0ABLG9QASxvYAEsb4ABLG+gASxvsAEsb8ABLG/gASxv8AEsd6ABLHfAASx38AEseBABLHhAASx4UAEseGABLHhwASx4gAEseKABLHjAASx40AEseOABLHkAASx5EAEseiABLHpwASx6oAEsesABLHvQASx8YAEsfJABLHzAASx84AEsfqABLH/AASyHcAEsh5ABLIewASyH0AEsiAABLIgQASyIIAEsiDABLIhAASyIYAEsiIABLIiQASyIoAEsiMABLIjQASyQgAEskKABLJDQASyQ8AEskSABLJEwASyRQAEskVABLJFgASyRgAEskaABLJGwASyRwAEskeABLJHwASyTAAEskxABLJMwASya4AEsmwABLJsgASybQAEsm3ABLJuAASybkAEsm6ABLJuwASyb0AEsm/ABLJwAASycEAEsnDABLJxAASyj8AEspBABLKRAASykYAEspJABLKSgASyksAEspMABLKTQASyk8AEspRABLKUgASylMAEspVABLKVgASym8AEspwABLKcQASynMAEsruABLK8AASyvIAEsr0ABLK9wASyvgAEsr5ABLK+gASyvsAEsr9ABLK/wASywAAEssBABLLAwASywQAEst/ABLLgQASy4QAEsuGABLLiQASy4oAEsuLABLLjAASy40AEsuPABLLkQASy5IAEsuTABLLlQASy5YAEsuoABLLwQASy+oAEsvtABLL8AASy/MAEsv2ABLL+QASy/wAEsv/ABLMAgASzAUAEswIABLMMQASzDQAEsw3ABLMOgASzD0AEsxAABLMQwASzEYAEsxJABLMTAASzE8AEsxRABLMYAASzHwAEsySABLMqQASzMAAEszXABLM5QASzQEAEs0TABLNpgASzckAEs3pABLOCQASzgsAEs4NABLODwASzhEAEs4UABLOFQASzhYAEs4ZABLOGgASzhwAEs4dABLOHwASziIAEs4jABLOJAASzicAEs4oABLOLQASzkYAEs5PABLOUQASzlMAEs5cABLOXwASzmIAEs5kABLOrQASztEAEs74ABLPHAASzx8AEs8hABLPIwASzyUAEs8nABLPKQASzyoAEs8tABLPRgASz2cAEs9pABLPawASz20AEs9vABLPcQASz3MAEs91ABLPdwASz5gAEs+bABLPngASz6EAEs+kABLPpwASz6oAEs+tABLPsAASz7IAEtAtABLQLwAS0DEAEtAzABLQNgAS0DcAEtA4ABLQOQAS0DoAEtA8ABLQPgAS0D8AEtBAABLQQgAS0EMAEtC+ABLQwAAS0MIAEtDEABLQxwAS0MgAEtDJABLQygAS0MsAEtDNABLQzwAS0NAAEtDRABLQ0wAS0NQAEtFPABLRUQAS0VQAEtFWABLRWQAS0VoAEtFbABLRXAAS0V0AEtFfABLRYQAS0WIAEtFjABLRZQAS0WYAEtF/ABLRgAAS0YEAEtGDABLR/gAS0gAAEtICABLSBAAS0gcAEtIIABLSCQAS0goAEtILABLSDQAS0g8AEtIQABLSEQAS0hMAEtIUABLSjwAS0pEAEtKTABLSlQAS0pgAEtKZABLSmgAS0psAEtKcABLSngAS0qAAEtKhABLSogAS0qQAEtKlABLTIAAS0yIAEtMkABLTJgAS0ykAEtMqABLTKwAS0ywAEtMtABLTLwAS0zEAEtMyABLTMwAS0zUAEtM2ABLTsQAS07MAEtO1ABLTtwAS07oAEtO7ABLTvAAS070AEtO+ABLTwAAS08IAEtPDABLTxAAS08YAEtPHABLUQgAS1EQAEtRGABLUSAAS1EsAEtRMABLUTQAS1E4AEtRPABLUUQAS1FMAEtRUABLUVQAS1FcAEtRYABLUoQAS1MUAEtTsABLVEAAS1RMAEtUVABLVFwAS1RkAEtUbABLVHQAS1R4AEtUhABLVOgAS1VcAEtVZABLVWwAS1V0AEtVfABLVYQAS1WMAEtVlABLVggAS1YUAEtWIABLViwAS1Y4AEtWRABLVlAAS1ZcAEtWZABLWFAAS1hYAEtYYABLWGgAS1h0AEtYeABLWHwAS1iAAEtYhABLWIwAS1iUAEtYmABLWJwAS1ikAEtYqABLWpQAS1qcAEtapABLWqwAS1q4AEtavABLWsAAS1rEAEtayABLWtAAS1rYAEta3ABLWuAAS1roAEta7ABLXNgAS1zgAEtc6ABLXPAAS1z8AEtdAABLXQQAS10IAEtdDABLXRQAS10cAEtdIABLXSQAS10sAEtdMABLXxwAS18kAEtfMABLXzgAS19EAEtfSABLX0wAS19QAEtfVABLX1wAS19kAEtfaABLX2wAS190AEtfeABLYWQAS2FsAEthdABLYXwAS2GIAEthjABLYZAAS2GUAEthmABLYaAAS2GoAEthrABLYbAAS2G4AEthvABLY6gAS2OwAEtjuABLY8AAS2PMAEtj0ABLY9QAS2PYAEtj3ABLY+QAS2PsAEtj8ABLY/QAS2P8AEtkAABLZewAS2X0AEtl/ABLZgQAS2YQAEtmFABLZhgAS2YcAEtmIABLZigAS2YwAEtmNABLZjgAS2ZAAEtmRABLaJAAS2kcAEtpnABLahwAS2okAEtqLABLajQAS2o8AEtqSABLakwAS2pQAEtqXABLamAAS2poAEtqbABLanQAS2qAAEtqhABLaogAS2qUAEtqmABLarwAS2sgAEtrRABLa0wAS2tUAEtreABLa4QAS2uQAEtrmABLbLwAS21MAEtt6ABLbngAS26EAEtujABLbpQAS26cAEtupABLbqwAS26wAEtuvABLbyAAS2+kAEtvrABLb7QAS2+8AEtvxABLb8wAS2/UAEtv3ABLb+QAS3BoAEtwdABLcIAAS3CMAEtwmABLcKQAS3CwAEtwvABLcMgAS3DQAEtyvABLcsQAS3LMAEty1ABLcuAAS3LkAEty6ABLcuwAS3LwAEty+ABLcwAAS3MEAEtzCABLcxAAS3MUAEt1AABLdQgAS3UQAEt1GABLdSQAS3UoAEt1LABLdTAAS3U0AEt1PABLdUQAS3VIAEt1TABLdVQAS3VYAEt3RABLd0wAS3dYAEt3YABLd2wAS3dwAEt3dABLd3gAS3d8AEt3hABLd4wAS3eQAEt3lABLd5wAS3egAEt4BABLeAgAS3gMAEt4FABLegAAS3oIAEt6EABLehgAS3okAEt6KABLeiwAS3owAEt6NABLejwAS3pEAEt6SABLekwAS3pUAEt6WABLfEQAS3xMAEt8VABLfFwAS3xoAEt8bABLfHAAS3x0AEt8eABLfIAAS3yIAEt8jABLfJAAS3yYAEt8nABLfogAS36QAEt+mABLfqAAS36sAEt+sABLfrQAS364AEt+vABLfsQAS37MAEt+0ABLftQAS37cAEt+4ABLgMwAS4DUAEuA3ABLgOQAS4DwAEuA9ABLgPgAS4D8AEuBAABLgQgAS4EQAEuBFABLgRgAS4EgAEuBJABLgxAAS4MYAEuDIABLgygAS4M0AEuDOABLgzwAS4NAAEuDRABLg0wAS4NUAEuDWABLg1wAS4NkAEuDaABLhIwAS4UcAEuFuABLhkgAS4ZUAEuGXABLhmQAS4ZsAEuGdABLhnwAS4aAAEuGjABLhvAAS4dkAEuHbABLh3QAS4d8AEuHhABLh4wAS4eUAEuHnABLiBAAS4gcAEuIKABLiDQAS4hAAEuITABLiFgAS4hkAEuIbABLilgAS4pgAEuKaABLinAAS4p8AEuKgABLioQAS4qIAEuKjABLipQAS4qcAEuKoABLiqQAS4qsAEuKsABLjJwAS4ykAEuMrABLjLQAS4zAAEuMxABLjMgAS4zMAEuM0ABLjNgAS4zgAEuM5ABLjOgAS4zwAEuM9ABLjuAAS47oAEuO8ABLjvgAS48EAEuPCABLjwwAS48QAEuPFABLjxwAS48kAEuPKABLjywAS480AEuPOABLkSQAS5EsAEuRNABLkTwAS5FIAEuRTABLkVAAS5FUAEuRWABLkWAAS5FoAEuRbABLkXAAS5F4AEuRfABLk2gAS5NwAEuTeABLk4AAS5OMAEuTkABLk5QAS5OYAEuTnABLk6QAS5OsAEuTsABLk7QAS5O8AEuTwABLlawAS5W0AEuVwABLlcgAS5XUAEuV2ABLldwAS5XgAEuV5ABLlewAS5X0AEuV+ABLlfwAS5YEAEuWCABLlmgAS5hUAEuYXABLmGQAS5hsAEuYeABLmHwAS5iAAEuYhABLmIgAS5iQAEuYmABLmJwAS5igAEuYqABLmKwAS5r4AEubhABLnAQAS5yEAEucjABLnJQAS5ycAEucpABLnLAAS5y0AEucuABLnMQAS5zIAEuc0ABLnNQAS5zcAEuc6ABLnOwAS5zwAEuc/ABLnQAAS50UAEudeABLnZwAS52kAEudrABLndAAS53cAEud6ABLnfAAS58UAEufpABLoEAAS6DQAEug3ABLoOQAS6DsAEug9ABLoPwAS6EEAEuhCABLoRQAS6F4AEuh/ABLogQAS6IMAEuiFABLohwAS6IkAEuiLABLojQAS6I8AEuiwABLoswAS6LYAEui5ABLovAAS6L8AEujCABLoxQAS6MgAEujKABLpRQAS6UcAEulJABLpSwAS6U4AEulPABLpUAAS6VEAEulSABLpVAAS6VYAEulXABLpWAAS6VoAEulbABLp1gAS6dgAEunaABLp3AAS6d8AEungABLp4QAS6eIAEunjABLp5QAS6ecAEunoABLp6QAS6esAEunsABLqZwAS6mkAEupsABLqbgAS6nEAEupyABLqcwAS6nQAEup1ABLqdwAS6nkAEup6ABLqewAS6n0AEup+ABLqlwAS6pgAEuqZABLqmwAS6xYAEusYABLrGgAS6xwAEusfABLrIAAS6yEAEusiABLrIwAS6yUAEusnABLrKAAS6ykAEusrABLrLAAS66cAEuupABLrqwAS660AEuuwABLrsQAS67IAEuuzABLrtAAS67YAEuu4ABLruQAS67oAEuu8ABLrvQAS7DgAEuw6ABLsPAAS7D4AEuxBABLsQgAS7EMAEuxEABLsRQAS7EcAEuxJABLsSgAS7EsAEuxNABLsTgAS7MkAEuzLABLszQAS7M8AEuzSABLs0wAS7NQAEuzVABLs1gAS7NgAEuzaABLs2wAS7NwAEuzeABLs3wAS7VoAEu1cABLtXgAS7WAAEu1jABLtZAAS7WUAEu1mABLtZwAS7WkAEu1rABLtbAAS7W0AEu1vABLtcAAS7bkAEu3dABLuBAAS7igAEu4rABLuLQAS7i8AEu4xABLuMwAS7jUAEu42ABLuOQAS7lIAEu5vABLucQAS7nMAEu51ABLudwAS7nkAEu57ABLufQAS7poAEu6dABLuoAAS7qMAEu6mABLuqQAS7qwAEu6vABLusQAS7ywAEu8uABLvMAAS7zIAEu81ABLvNgAS7zcAEu84ABLvOQAS7zsAEu89ABLvPgAS7z8AEu9BABLvQgAS770AEu+/ABLvwQAS78MAEu/GABLvxwAS78gAEu/JABLvygAS78wAEu/OABLvzwAS79AAEu/SABLv0wAS8E4AEvBQABLwUgAS8FQAEvBXABLwWAAS8FkAEvBaABLwWwAS8F0AEvBfABLwYAAS8GEAEvBjABLwZAAS8N8AEvDhABLw4wAS8OUAEvDoABLw6QAS8OoAEvDrABLw7AAS8O4AEvDwABLw8QAS8PIAEvD0ABLw9QAS8XAAEvFyABLxdAAS8XYAEvF5ABLxegAS8XsAEvF8ABLxfQAS8X8AEvGBABLxggAS8YMAEvGFABLxhgAS8gEAEvIDABLyBgAS8ggAEvILABLyDAAS8g0AEvIOABLyDwAS8hEAEvITABLyFAAS8hUAEvIXABLyGAAS8icAEvKiABLypAAS8qYAEvKoABLyqwAS8qwAEvKtABLyrgAS8q8AEvKxABLyswAS8rQAEvK1ABLytwAS8rgAEvNLABLzbgAS844AEvOuABLzsAAS87IAEvO0ABLztgAS87kAEvO6ABLzuwAS874AEvO/ABLzwQAS88IAEvPEABLzxwAS88gAEvPJABLzzAAS880AEvPWABLz7wAS8/gAEvP6ABLz/AAS9AUAEvQIABL0CwAS9A0AEvRWABL0egAS9KEAEvTFABL0yAAS9MoAEvTMABL0zgAS9NAAEvTSABL00wAS9NYAEvTvABL1EAAS9RIAEvUUABL1FgAS9RgAEvUaABL1HAAS9R4AEvUgABL1QQAS9UQAEvVHABL1SgAS9U0AEvVQABL1UwAS9VYAEvVZABL1WwAS9dYAEvXYABL12gAS9dwAEvXfABL14AAS9eEAEvXiABL14wAS9eUAEvXnABL16AAS9ekAEvXrABL17AAS9mcAEvZpABL2awAS9m0AEvZwABL2cQAS9nIAEvZzABL2dAAS9nYAEvZ4ABL2eQAS9noAEvZ8ABL2fQAS9vgAEvb6ABL2/QAS9v8AEvcCABL3AwAS9wQAEvcFABL3BgAS9wgAEvcKABL3CwAS9wwAEvcOABL3DwAS9ygAEvcpABL3KgAS9ywAEvenABL3qQAS96sAEvetABL3sAAS97EAEveyABL3swAS97QAEve2ABL3uAAS97kAEve6ABL3vAAS970AEvg4ABL4OgAS+DwAEvg+ABL4QQAS+EIAEvhDABL4RAAS+EUAEvhHABL4SQAS+EoAEvhLABL4TQAS+E4AEvjJABL4ywAS+M0AEvjPABL40gAS+NMAEvjUABL41QAS+NYAEvjYABL42gAS+NsAEvjcABL43gAS+N8AEvlaABL5XAAS+V4AEvlgABL5YwAS+WQAEvllABL5ZgAS+WcAEvlpABL5awAS+WwAEvltABL5bwAS+XAAEvnrABL57QAS+e8AEvnxABL59AAS+fUAEvn2ABL59wAS+fgAEvn6ABL5/AAS+f0AEvn+ABL6AAAS+gEAEvpKABL6bgAS+pUAEvq5ABL6vAAS+r4AEvrAABL6wgAS+sQAEvrGABL6xwAS+soAEvrjABL7AAAS+wIAEvsEABL7BgAS+wgAEvsKABL7DAAS+w4AEvsrABL7LgAS+zEAEvs0ABL7NwAS+zoAEvs9ABL7QAAS+0IAEvu9ABL7vwAS+8EAEvvDABL7xgAS+8cAEvvIABL7yQAS+8oAEvvMABL7zgAS+88AEvvQABL70gAS+9MAEvxOABL8UAAS/FIAEvxUABL8VwAS/FgAEvxZABL8WgAS/FsAEvxdABL8XwAS/GAAEvxhABL8YwAS/GQAEvzfABL84QAS/OMAEvzlABL86AAS/OkAEvzqABL86wAS/OwAEvzuABL88AAS/PEAEvzyABL89AAS/PUAEv1wABL9cgAS/XUAEv13ABL9egAS/XsAEv18ABL9fQAS/X4AEv2AABL9ggAS/YMAEv2EABL9hgAS/YcAEv4CABL+BAAS/gYAEv4IABL+CwAS/gwAEv4NABL+DgAS/g8AEv4RABL+EwAS/hQAEv4VABL+FwAS/hgAEv6TABL+lQAS/pcAEv6ZABL+nAAS/p0AEv6eABL+nwAS/qAAEv6iABL+pAAS/qUAEv6mABL+qAAS/qkAEv8kABL/JgAS/ygAEv8qABL/LQAS/y4AEv8vABL/MAAS/zEAEv8zABL/NQAS/zYAEv83ABL/OQAS/zoAEv/NABL/8AATABAAEwAwABMAMgATADQAEwA2ABMAOAATADsAEwA8ABMAPQATAEAAEwBBABMAQwATAEQAEwBGABMASQATAEoAEwBLABMATgATAE8AEwBUABMAbQATAHYAEwB4ABMAegATAIMAEwCGABMAiQATAIsAEwDUABMA+AATAR8AEwFDABMBRgATAUgAEwFKABMBTAATAU4AEwFQABMBUQATAVQAEwFtABMBjgATAZAAEwGSABMBlAATAZYAEwGYABMBmgATAZwAEwGeABMBvwATAcIAEwHFABMByAATAcsAEwHOABMB0QATAdQAEwHXABMB2QATAlQAEwJWABMCWAATAloAEwJdABMCXgATAl8AEwJgABMCYQATAmMAEwJlABMCZgATAmcAEwJpABMCagATAuUAEwLnABMC6QATAusAEwLuABMC7wATAvAAEwLxABMC8gATAvQAEwL2ABMC9wATAvgAEwL6ABMC+wATA3YAEwN4ABMDewATA30AEwOAABMDgQATA4IAEwODABMDhAATA4YAEwOIABMDiQATA4oAEwOMABMDjQATA6YAEwOnABMDqAATA6oAEwQlABMEJwATBCkAEwQrABMELgATBC8AEwQwABMEMQATBDIAEwQ0ABMENgATBDcAEwQ4ABMEOgATBDsAEwS2ABMEuAATBLoAEwS8ABMEvwATBMAAEwTBABMEwgATBMMAEwTFABMExwATBMgAEwTJABMEywATBMwAEwVHABMFSQATBUsAEwVNABMFUAATBVEAEwVSABMFUwATBVQAEwVWABMFWAATBVkAEwVaABMFXAATBV0AEwXYABMF2gATBdwAEwXeABMF4QATBeIAEwXjABMF5AATBeUAEwXnABMF6QATBeoAEwXrABMF7QATBe4AEwZpABMGawATBm0AEwZvABMGcgATBnMAEwZ0ABMGdQATBnYAEwZ4ABMGegATBnsAEwZ8ABMGfgATBn8AEwbIABMG7AATBxMAEwc3ABMHOgATBzwAEwc+ABMHQAATB0IAEwdEABMHRQATB0gAEwdhABMHfgATB4AAEweCABMHhAATB4YAEweIABMHigATB4wAEwepABMHrAATB68AEweyABMHtQATB7gAEwe7ABMHvgATB8AAEwg7ABMIPQATCD8AEwhBABMIRAATCEUAEwhGABMIRwATCEgAEwhKABMITAATCE0AEwhOABMIUAATCFEAEwjMABMIzgATCNAAEwjSABMI1QATCNYAEwjXABMI2AATCNkAEwjbABMI3QATCN4AEwjfABMI4QATCOIAEwldABMJXwATCWEAEwljABMJZgATCWcAEwloABMJaQATCWoAEwlsABMJbgATCW8AEwlwABMJcgATCXMAEwnuABMJ8AATCfIAEwn0ABMJ9wATCfgAEwn5ABMJ+gATCfsAEwn9ABMJ/wATCgAAEwoBABMKAwATCgQAEwp/ABMKgQATCoMAEwqFABMKiAATCokAEwqKABMKiwATCowAEwqOABMKkAATCpEAEwqSABMKlAATCpUAEwsQABMLEgATCxUAEwsXABMLGgATCxsAEwscABMLHQATCx4AEwsgABMLIgATCyMAEwskABMLJgATCycAEws/ABMLugATC7wAEwu+ABMLwAATC8MAEwvEABMLxQATC8YAEwvHABMLyQATC8sAEwvMABMLzQATC88AEwvQABMMYwATDIYAEwymABMMxgATDMgAEwzKABMMzAATDM4AEwzRABMM0gATDNMAEwzWABMM1wATDNkAEwzaABMM3AATDN8AEwzgABMM4QATDOQAEwzlABMM6gATDQMAEw0MABMNDgATDRAAEw0ZABMNHAATDR8AEw0hABMNagATDY4AEw21ABMN2QATDdwAEw3eABMN4AATDeIAEw3kABMN5gATDecAEw3qABMOAwATDiQAEw4mABMOKAATDioAEw4sABMOLgATDjAAEw4yABMONAATDlUAEw5YABMOWwATDl4AEw5hABMOZAATDmcAEw5qABMObQATDm8AEw7qABMO7AATDu4AEw7wABMO8wATDvQAEw71ABMO9gATDvcAEw75ABMO+wATDvwAEw79ABMO/wATDwAAEw97ABMPfQATD38AEw+BABMPhAATD4UAEw+GABMPhwATD4gAEw+KABMPjAATD40AEw+OABMPkAATD5EAExAMABMQDgATEBEAExATABMQFgATEBcAExAYABMQGQATEBoAExAcABMQHgATEB8AExAgABMQIgATECMAExA8ABMQPQATED4AExBAABMQuwATEL0AExC/ABMQwQATEMQAExDFABMQxgATEMcAExDIABMQygATEMwAExDNABMQzgATENAAExDRABMRTAATEU4AExFQABMRUgATEVUAExFWABMRVwATEVgAExFZABMRWwATEV0AExFeABMRXwATEWEAExFiABMR3QATEd8AExHhABMR4wATEeYAExHnABMR6AATEekAExHqABMR7AATEe4AExHvABMR8AATEfIAExHzABMSbgATEnAAExJyABMSdAATEncAExJ4ABMSeQATEnoAExJ7ABMSfQATEn8AExKAABMSgQATEoMAExKEABMS/wATEwEAExMDABMTBQATEwgAExMJABMTCgATEwsAExMMABMTDgATExAAExMRABMTEgATExQAExMVABMTXgATE4IAExOpABMTzQATE9AAExPSABMT1AATE9YAExPYABMT2gATE9sAExPeABMT9wATFBQAExQWABMUGAATFBoAExQcABMUHgATFCAAExQiABMUPwATFEIAExRFABMUSAATFEsAExROABMUUQATFFQAExRWABMU0QATFNMAExTVABMU1wATFNoAExTbABMU3AATFN0AExTeABMU4AATFOIAExTjABMU5AATFOYAExTnABMVYgATFWQAExVmABMVaAATFWsAExVsABMVbQATFW4AExVvABMVcQATFXMAExV0ABMVdQATFXcAExV4ABMV8wATFfUAExX3ABMV+QATFfwAExX9ABMV/gATFf8AExYAABMWAgATFgQAExYFABMWBgATFggAExYJABMWhAATFoYAExaIABMWigATFo0AExaOABMWjwATFpAAExaRABMWkwATFpUAExaWABMWlwATFpkAExaaABMXFQATFxcAExcZABMXGwATFx4AExcfABMXIAATFyEAExciABMXJAATFyYAExcnABMXKAATFyoAExcrABMXpgATF6gAExeqABMXrAATF68AExewABMXsQATF7IAExezABMXtQATF7cAExe4ABMXuQATF7sAExe8ABMYNwATGDkAExg7ABMYPQATGEAAExhBABMYQgATGEMAExhEABMYRgATGEgAExhJABMYSgATGEwAExhNABMY4AATGQMAExkjABMZQwATGUUAExlHABMZSQATGUsAExlOABMZTwATGVAAExlTABMZVAATGVYAExlXABMZWQATGVwAExldABMZXgATGWEAExliABMZZwATGYAAExmJABMZiwATGY0AExmWABMZmQATGZwAExmeABMZ5wATGgsAExoyABMaVgATGlkAExpbABMaXQATGl8AExphABMaYwATGmQAExpnABMagAATGqEAExqjABMapQATGqcAExqpABMaqwATGq0AExqvABMasQATGtIAExrVABMa2AATGtsAExreABMa4QATGuQAExrnABMa6gATGuwAExtnABMbaQATG2sAExttABMbcAATG3EAExtyABMbcwATG3QAExt2ABMbeAATG3kAExt6ABMbfAATG30AExv4ABMb+gATG/wAExv+ABMcAQATHAIAExwDABMcBAATHAUAExwHABMcCQATHAoAExwLABMcDQATHA4AExyJABMciwATHI4AExyQABMckwATHJQAExyVABMclgATHJcAExyZABMcmwATHJwAExydABMcnwATHKAAExy5ABMcugATHLsAExy9ABMdOAATHToAEx08ABMdPgATHUEAEx1CABMdQwATHUQAEx1FABMdRwATHUkAEx1KABMdSwATHU0AEx1OABMdyQATHcsAEx3NABMdzwATHdIAEx3TABMd1AATHdUAEx3WABMd2AATHdoAEx3bABMd3AATHd4AEx3fABMeWgATHlwAEx5eABMeYAATHmMAEx5kABMeZQATHmYAEx5nABMeaQATHmsAEx5sABMebQATHm8AEx5wABMe6wATHu0AEx7vABMe8QATHvQAEx71ABMe9gATHvcAEx74ABMe+gATHvwAEx79ABMe/gATHwAAEx8BABMffAATH34AEx+AABMfggATH4UAEx+GABMfhwATH4gAEx+JABMfiwATH40AEx+OABMfjwATH5EAEx+SABMf2wATH/8AEyAmABMgSgATIE0AEyBPABMgUQATIFMAEyBVABMgVwATIFgAEyBbABMgdAATIJEAEyCTABMglQATIJcAEyCZABMgmwATIJ0AEyCfABMgvAATIL8AEyDCABMgxQATIMgAEyDLABMgzgATINEAEyDTABMhTgATIVAAEyFSABMhVAATIVcAEyFYABMhWQATIVoAEyFbABMhXQATIV8AEyFgABMhYQATIWMAEyFkABMh3wATIeEAEyHjABMh5QATIegAEyHpABMh6gATIesAEyHsABMh7gATIfAAEyHxABMh8gATIfQAEyH1ABMicAATInIAEyJ0ABMidgATInkAEyJ6ABMiewATInwAEyJ9ABMifwATIoEAEyKCABMigwATIoUAEyKGABMjAQATIwMAEyMFABMjBwATIwoAEyMLABMjDAATIw0AEyMOABMjEAATIxIAEyMTABMjFAATIxYAEyMXABMjkgATI5QAEyOWABMjmAATI5sAEyOcABMjnQATI54AEyOfABMjoQATI6MAEyOkABMjpQATI6cAEyOoABMkIwATJCUAEyQnABMkKQATJCwAEyQtABMkLgATJC8AEyQwABMkMgATJDQAEyQ1ABMkNgATJDgAEyQ5ABMktAATJLYAEyS4ABMkugATJL0AEyS+ABMkvwATJMAAEyTBABMkwwATJMUAEyTGABMkxwATJMkAEyTKABMlXQATJYAAEyWgABMlwAATJcIAEyXEABMlxgATJcgAEyXLABMlzAATJc0AEyXQABMl0QATJdMAEyXUABMl1gATJdkAEyXaABMl2wATJd4AEyXfABMl5AATJf0AEyYGABMmCAATJgoAEyYTABMmFgATJhkAEyYbABMmZAATJogAEyavABMm0wATJtYAEybYABMm2gATJtwAEybeABMm4AATJuEAEybkABMm/QATJx4AEycgABMnIgATJyQAEycmABMnKAATJyoAEycsABMnLgATJ08AEydSABMnVQATJ1gAEydbABMnXgATJ2EAEydkABMnZwATJ2kAEyfkABMn5gATJ+gAEyfqABMn7QATJ+4AEyfvABMn8AATJ/EAEyfzABMn9QATJ/YAEyf3ABMn+QATJ/oAEyh1ABModwATKHkAEyh7ABMofgATKH8AEyiAABMogQATKIIAEyiEABMohgATKIcAEyiIABMoigATKIsAEykGABMpCAATKQsAEykNABMpEAATKREAEykSABMpEwATKRQAEykWABMpGAATKRkAEykaABMpHAATKR0AEyk2ABMpNwATKTgAEyk6ABMptQATKbcAEym5ABMpuwATKb4AEym/ABMpwAATKcEAEynCABMpxAATKcYAEynHABMpyAATKcoAEynLABMqRgATKkgAEypKABMqTAATKk8AEypQABMqUQATKlIAEypTABMqVQATKlcAEypYABMqWQATKlsAEypcABMq1wATKtkAEyrbABMq3QATKuAAEyrhABMq4gATKuMAEyrkABMq5gATKugAEyrpABMq6gATKuwAEyrtABMraAATK2oAEytsABMrbgATK3EAEytyABMrcwATK3QAEyt1ABMrdwATK3kAEyt6ABMrewATK30AEyt+ABMr+QATK/sAEyv9ABMr/wATLAIAEywDABMsBAATLAUAEywGABMsCAATLAoAEywLABMsDAATLA4AEywPABMsWAATLHwAEyyjABMsxwATLMoAEyzMABMszgATLNAAEyzSABMs1AATLNUAEyzYABMs8QATLQ4AEy0QABMtEgATLRQAEy0WABMtGAATLRoAEy0cABMtOQATLTwAEy0/ABMtQgATLUUAEy1IABMtSwATLU4AEy1QABMtywATLc0AEy3PABMt0QATLdQAEy3VABMt1gATLdcAEy3YABMt2gATLdwAEy3dABMt3gATLeAAEy3hABMuXAATLl4AEy5gABMuYgATLmUAEy5mABMuZwATLmgAEy5pABMuawATLm0AEy5uABMubwATLnEAEy5yABMu7QATLu8AEy7xABMu8wATLvYAEy73ABMu+AATLvkAEy76ABMu/AATLv4AEy7/ABMvAAATLwIAEy8DABMvfgATL4AAEy+DABMvhQATL4gAEy+JABMvigATL4sAEy+MABMvjgATL5AAEy+RABMvkgATL5QAEy+VABMwEAATMBIAEzAUABMwFgATMBkAEzAaABMwGwATMBwAEzAdABMwHwATMCEAEzAiABMwIwATMCUAEzAmABMwoQATMKMAEzClABMwpwATMKoAEzCrABMwrAATMK0AEzCuABMwsAATMLIAEzCzABMwtAATMLYAEzC3ABMxMgATMTQAEzE2ABMxOAATMTsAEzE8ABMxPQATMT4AEzE/ABMxQQATMUMAEzFEABMxRQATMUcAEzFIABMx2wATMf4AEzIeABMyPgATMkAAEzJCABMyRAATMkYAEzJJABMySgATMksAEzJOABMyTwATMlEAEzJSABMyVAATMlcAEzJYABMyWQATMlwAEzJdABMyYgATMnsAEzKEABMyhgATMogAEzKRABMylAATMpcAEzKZABMy4gATMwYAEzMtABMzUQATM1QAEzNWABMzWAATM1oAEzNcABMzXgATM18AEzNiABMzewATM5wAEzOeABMzoAATM6IAEzOkABMzpgATM6gAEzOqABMzrAATM80AEzPQABMz0wATM9YAEzPZABMz3AATM98AEzPiABMz5QATM+cAEzRiABM0ZAATNGYAEzRoABM0awATNGwAEzRtABM0bgATNG8AEzRxABM0cwATNHQAEzR1ABM0dwATNHgAEzTzABM09QATNPcAEzT5ABM0/AATNP0AEzT+ABM0/wATNQAAEzUCABM1BAATNQUAEzUGABM1CAATNQkAEzWEABM1hgATNYkAEzWLABM1jgATNY8AEzWQABM1kQATNZIAEzWUABM1lgATNZcAEzWYABM1mgATNZsAEzW0ABM1tQATNbYAEzW4ABM2MwATNjUAEzY3ABM2OQATNjwAEzY9ABM2PgATNj8AEzZAABM2QgATNkQAEzZFABM2RgATNkgAEzZJABM2xAATNsYAEzbIABM2ygATNs0AEzbOABM2zwATNtAAEzbRABM20wATNtUAEzbWABM21wATNtkAEzbaABM3VQATN1cAEzdZABM3WwATN14AEzdfABM3YAATN2EAEzdiABM3ZAATN2YAEzdnABM3aAATN2oAEzdrABM35gATN+gAEzfqABM37AATN+8AEzfwABM38QATN/IAEzfzABM39QATN/cAEzf4ABM3+QATN/sAEzf8ABM4dwATOHkAEzh7ABM4fQATOIAAEziBABM4ggATOIMAEziEABM4hgATOIgAEziJABM4igATOIwAEziNABM41gATOPoAEzkhABM5RQATOUgAEzlKABM5TAATOU4AEzlQABM5UgATOVMAEzlWABM5bwATOYwAEzmOABM5kAATOZIAEzmUABM5lgATOZgAEzmaABM5twATOboAEzm9ABM5wAATOcMAEznGABM5yQATOcwAEznOABM6SQATOksAEzpNABM6TwATOlIAEzpTABM6VAATOlUAEzpWABM6WAATOloAEzpbABM6XAATOl4AEzpfABM62gATOtwAEzreABM64AATOuMAEzrkABM65QATOuYAEzrnABM66QATOusAEzrsABM67QATOu8AEzrwABM7awATO20AEztvABM7cQATO3QAEzt1ABM7dgATO3cAEzt4ABM7egATO3wAEzt9ABM7fgATO4AAEzuBABM7/AATO/4AEzwBABM8AwATPAYAEzwHABM8CAATPAkAEzwKABM8DAATPA4AEzwPABM8EAATPBIAEzwTABM8jgATPJAAEzySABM8lAATPJcAEzyYABM8mQATPJoAEzybABM8nQATPJ8AEzygABM8oQATPKMAEzykABM9HwATPSEAEz0jABM9JQATPSgAEz0pABM9KgATPSsAEz0sABM9LgATPTAAEz0xABM9MgATPTQAEz01ABM9sAATPbIAEz20ABM9tgATPbkAEz26ABM9uwATPbwAEz29ABM9vwATPcEAEz3CABM9wwATPcUAEz3GABM+WQATPnwAEz6cABM+vAATPr4AEz7AABM+wgATPsQAEz7HABM+yAATPskAEz7MABM+zQATPs8AEz7QABM+0gATPtUAEz7WABM+1wATPtoAEz7bABM+4AATPvkAEz8CABM/BAATPwYAEz8PABM/EgATPxUAEz8XABM/YAATP4QAEz+rABM/zwATP9IAEz/UABM/1gATP9gAEz/aABM/3AATP90AEz/gABM/+QATQBoAE0AcABNAHgATQCAAE0AiABNAJAATQCYAE0AoABNAKgATQEsAE0BOABNAUQATQFQAE0BXABNAWgATQF0AE0BgABNAYwATQGUAE0DgABNA4gATQOQAE0DmABNA6QATQOoAE0DrABNA7AATQO0AE0DvABNA8QATQPIAE0DzABNA9QATQPYAE0FxABNBcwATQXUAE0F3ABNBegATQXsAE0F8ABNBfQATQX4AE0GAABNBggATQYMAE0GEABNBhgATQYcAE0ICABNCBAATQgcAE0IJABNCDAATQg0AE0IOABNCDwATQhAAE0ISABNCFAATQhUAE0IWABNCGAATQhkAE0IyABNCMwATQjQAE0I2ABNCsQATQrMAE0K1ABNCtwATQroAE0K7ABNCvAATQr0AE0K+ABNCwAATQsIAE0LDABNCxAATQsYAE0LHABNDQgATQ0QAE0NGABNDSAATQ0sAE0NMABNDTQATQ04AE0NPABNDUQATQ1MAE0NUABNDVQATQ1cAE0NYABND0wATQ9UAE0PXABND2QATQ9wAE0PdABND3gATQ98AE0PgABND4gATQ+QAE0PlABND5gATQ+gAE0PpABNEZAATRGYAE0RoABNEagATRG0AE0RuABNEbwATRHAAE0RxABNEcwATRHUAE0R2ABNEdwATRHkAE0R6ABNE9QATRPcAE0T5ABNE+wATRP4AE0T/ABNFAAATRQEAE0UCABNFBAATRQYAE0UHABNFCAATRQoAE0ULABNFVAATRXgAE0WfABNFwwATRcYAE0XIABNFygATRcwAE0XOABNF0AATRdEAE0XUABNF7QATRgoAE0YMABNGDgATRhAAE0YSABNGFAATRhYAE0YYABNGNQATRjgAE0Y7ABNGPgATRkEAE0ZEABNGRwATRkoAE0ZMABNGxwATRskAE0bLABNGzQATRtAAE0bRABNG0gATRtMAE0bUABNG1gATRtgAE0bZABNG2gATRtwAE0bdABNHWAATR1oAE0dcABNHXgATR2EAE0diABNHYwATR2QAE0dlABNHZwATR2kAE0dqABNHawATR20AE0duABNH6QATR+sAE0ftABNH7wATR/IAE0fzABNH9AATR/UAE0f2ABNH+AATR/oAE0f7ABNH/AATR/4AE0f/ABNIegATSHwAE0h/ABNIgQATSIQAE0iFABNIhgATSIcAE0iIABNIigATSIwAE0iNABNIjgATSJAAE0iRABNJDAATSQ4AE0kQABNJEgATSRUAE0kWABNJFwATSRgAE0kZABNJGwATSR0AE0keABNJHwATSSEAE0kiABNJnQATSZ8AE0mhABNJowATSaYAE0mnABNJqAATSakAE0mqABNJrAATSa4AE0mvABNJsAATSbIAE0mzABNKLgATSjAAE0oyABNKNAATSjcAE0o4ABNKOQATSjoAE0o7ABNKPQATSj8AE0pAABNKQQATSkMAE0pEABNKVQATSlYAE0pYABNK2wATSv8AE0sjABNLRgATS20AE0uNABNLtAATS9sAE0v7ABNMHwATTEMAE0xFABNMSAATTEoAE0xMABNMTgATTFEAE0xUABNMVgATTFgAE0xbABNMXQATTF8AE0xiABNMZQATTGYAE0xrABNMhAATTIkAE0yLABNMkAATTJMAE0yVABNM3gATTQIAE00pABNNTQATTVAAE01SABNNVAATTVYAE01YABNNWgATTVsAE01eABNNdwATTZwAE02eABNNoAATTaIAE02kABNNpgATTagAE02qABNNrAATTa4AE03TABNN1gATTdkAE03cABNN3wATTeIAE03lABNN6AATTesAE03uABNN8AATTmsAE05tABNOcAATTnIAE051ABNOdgATTncAE054ABNOeQATTnsAE059ABNOfgATTn8AE06BABNOggATTpMAE06UABNOlgATTxEAE08TABNPFQATTxcAE08aABNPGwATTxwAE08dABNPHgATTyAAE08iABNPIwATTyQAE08mABNPJwATT6IAE0+kABNPpwATT6kAE0+sABNPrQATT64AE0+vABNPsAATT7IAE0+0ABNPtQATT7YAE0+4ABNPuQATT8oAE0/PABNP0gATT9QAE0/lABNP7gATT/EAE0/0ABNP9gATUAkAE1CEABNQhgATUIgAE1CKABNQjQATUI4AE1CPABNQkAATUJEAE1CTABNQlQATUJYAE1CXABNQmQATUJoAE1EVABNRFwATURoAE1EcABNRHwATUSAAE1EhABNRIgATUSMAE1ElABNRJwATUSgAE1EpABNRKwATUSwAE1E9ABNRPgATUUAAE1G7ABNRvQATUb8AE1HBABNRxAATUcUAE1HGABNRxwATUcgAE1HKABNRzAATUc0AE1HOABNR0AATUdEAE1JMABNSTgATUlEAE1JTABNSVgATUlcAE1JYABNSWQATUloAE1JcABNSXgATUl8AE1JgABNSYgATUmMAE1J8ABNSfQATUn4AE1KAABNS+wATUv0AE1L/ABNTAQATUwQAE1MFABNTBgATUwcAE1MIABNTCgATUwwAE1MNABNTDgATUxAAE1MRABNTjAATU44AE1ORABNTkwATU5YAE1OXABNTmAATU5kAE1OaABNTnAATU54AE1OfABNToAATU6IAE1OjABNTygATU+MAE1PsABNT7wATU/IAE1P7ABNT/gATVAEAE1QDABNUFgATVKkAE1TMABNU7AATVQwAE1UOABNVEAATVRIAE1UUABNVFwATVRgAE1UZABNVHAATVR0AE1UfABNVIAATVSIAE1UlABNVJgATVScAE1UqABNVKwATVTAAE1VJABNVUgATVVQAE1VWABNVXwATVWIAE1VlABNVZwATVbAAE1XUABNV+wATVh8AE1YiABNWJAATViYAE1YoABNWKgATViwAE1YtABNWMAATVkkAE1ZqABNWbAATVm4AE1ZwABNWcgATVnQAE1Z2ABNWeAATVnoAE1abABNWngATVqEAE1akABNWpwATVqoAE1atABNWsAATVrMAE1a1ABNXMAATVzIAE1c0ABNXNgATVzkAE1c6ABNXOwATVzwAE1c9ABNXPwATV0EAE1dCABNXQwATV0UAE1dGABNXwQATV8MAE1fFABNXxwATV8oAE1fLABNXzAATV80AE1fOABNX0AATV9IAE1fTABNX1AATV9YAE1fXABNYUgATWFQAE1hXABNYWQATWFwAE1hdABNYXgATWF8AE1hgABNYYgATWGQAE1hlABNYZgATWGgAE1hpABNYggATWIMAE1iEABNYhgATWQEAE1kDABNZBQATWQcAE1kKABNZCwATWQwAE1kNABNZDgATWRAAE1kSABNZEwATWRQAE1kWABNZFwATWZIAE1mUABNZlgATWZgAE1mbABNZnAATWZ0AE1meABNZnwATWaEAE1mjABNZpAATWaUAE1mnABNZqAATWiMAE1olABNaJwATWikAE1osABNaLQATWi4AE1ovABNaMAATWjIAE1o0ABNaNQATWjYAE1o4ABNaOQATWrQAE1q2ABNauAATWroAE1q9ABNavgATWr8AE1rAABNawQATWsMAE1rFABNaxgATWscAE1rJABNaygATW0UAE1tHABNbSQATW0sAE1tOABNbTwATW1AAE1tRABNbUgATW1QAE1tWABNbVwATW1gAE1taABNbWwATW6QAE1vIABNb7wATXBMAE1wWABNcGAATXBoAE1wcABNcHgATXCAAE1whABNcJAATXD0AE1xaABNcXAATXF4AE1xgABNcYgATXGQAE1xmABNcaAATXIUAE1yIABNciwATXI4AE1yRABNclAATXJcAE1yaABNcnAATXRcAE10ZABNdGwATXR0AE10gABNdIQATXSIAE10jABNdJAATXSYAE10oABNdKQATXSoAE10sABNdLQATXagAE12qABNdrAATXa4AE12xABNdsgATXbMAE120ABNdtQATXbcAE125ABNdugATXbsAE129ABNdvgATXjkAE147ABNePQATXj8AE15CABNeQwATXkQAE15FABNeRgATXkgAE15KABNeSwATXkwAE15OABNeTwATXsoAE17MABNezwATXtEAE17UABNe1QATXtYAE17XABNe2AATXtoAE17cABNe3QATXt4AE17gABNe4QATX1wAE19eABNfYAATX2IAE19lABNfZgATX2cAE19oABNfaQATX2sAE19tABNfbgATX28AE19xABNfcgATX+0AE1/vABNf8QATX/MAE1/2ABNf9wATX/gAE1/5ABNf+gATX/wAE1/+ABNf/wATYAAAE2ACABNgAwATYH4AE2CAABNgggATYIQAE2CHABNgiAATYIkAE2CKABNgiwATYI0AE2CPABNgkAATYJEAE2CTABNglAATYScAE2FKABNhagATYYoAE2GMABNhjgATYZAAE2GSABNhlQATYZYAE2GXABNhmgATYZsAE2GdABNhngATYaAAE2GjABNhpAATYaUAE2GoABNhqQATYa4AE2HHABNh0AATYdIAE2HUABNh3QATYeAAE2HjABNh5QATYi4AE2JSABNieQATYp0AE2KgABNiogATYqQAE2KmABNiqAATYqoAE2KrABNirgATYscAE2LoABNi6gATYuwAE2LuABNi8AATYvIAE2L0ABNi9gATYvgAE2MZABNjHAATYx8AE2MiABNjJQATYygAE2MrABNjLgATYzEAE2MzABNjrgATY7AAE2OyABNjtAATY7cAE2O4ABNjuQATY7oAE2O7ABNjvQATY78AE2PAABNjwQATY8MAE2PEABNkPwATZEEAE2RDABNkRQATZEgAE2RJABNkSgATZEsAE2RMABNkTgATZFAAE2RRABNkUgATZFQAE2RVABNk0AATZNIAE2TVABNk1wATZNoAE2TbABNk3AATZN0AE2TeABNk4AATZOIAE2TjABNk5AATZOYAE2TnABNlAAATZQEAE2UCABNlBAATZX8AE2WBABNlgwATZYUAE2WIABNliQATZYoAE2WLABNljAATZY4AE2WQABNlkQATZZIAE2WUABNllQATZhAAE2YSABNmFAATZhYAE2YZABNmGgATZhsAE2YcABNmHQATZh8AE2YhABNmIgATZiMAE2YlABNmJgATZqEAE2ajABNmpQATZqcAE2aqABNmqwATZqwAE2atABNmrgATZrAAE2ayABNmswATZrQAE2a2ABNmtwATZzIAE2c0ABNnNgATZzgAE2c7ABNnPAATZz0AE2c+ABNnPwATZ0EAE2dDABNnRAATZ0UAE2dHABNnSAATZ8MAE2fFABNnxwATZ8kAE2fMABNnzQATZ84AE2fPABNn0AATZ9IAE2fUABNn1QATZ9YAE2fYABNn2QATaCIAE2hGABNobQATaJEAE2iUABNolgATaJgAE2iaABNonAATaJ4AE2ifABNoogATaLsAE2jYABNo2gATaNwAE2jeABNo4AATaOIAE2jkABNo5gATaQMAE2kGABNpCQATaQwAE2kPABNpEgATaRUAE2kYABNpGgATaZUAE2mXABNpmQATaZsAE2meABNpnwATaaAAE2mhABNpogATaaQAE2mmABNppwATaagAE2mqABNpqwATaiYAE2ooABNqKgATaiwAE2ovABNqMAATajEAE2oyABNqMwATajUAE2o3ABNqOAATajkAE2o7ABNqPAATarcAE2q5ABNquwATar0AE2rAABNqwQATasIAE2rDABNqxAATasYAE2rIABNqyQATasoAE2rMABNqzQATa0gAE2tKABNrTQATa08AE2tSABNrUwATa1QAE2tVABNrVgATa1gAE2taABNrWwATa1wAE2teABNrXwATa9oAE2vcABNr3gATa+AAE2vjABNr5AATa+UAE2vmABNr5wATa+kAE2vrABNr7AATa+0AE2vvABNr8AATbGsAE2xtABNsbwATbHEAE2x0ABNsdQATbHYAE2x3ABNseAATbHoAE2x8ABNsfQATbH4AE2yAABNsgQATbPwAE2z+ABNtAAATbQIAE20FABNtBgATbQcAE20IABNtCQATbQsAE20NABNtDgATbQ8AE20RABNtEgATbSMAE20kABNtJgATbT8AE21AABNtQQATbUMAE21cABNtXQATbV4AE21gABNteQATbXoAE217ABNtfQATbY4AE22dABNttgATbcUAE23XABNt6wATbgIAE24UABNuJQATbiYAE24oABNuQQATbkIAE25DABNuRQATbloAE25rABNudQATboIAAAAAAAAEBAAAAAAAAd5YAAAAAAAAAAAAAAAAABNuig== + + ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v50.xcdatamodel + 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WAAAc2gAAHOkAABz4AAAc+QAAHQcAAB0IAAAdCQAAHQoAAB0LAAAdDAAAHSEAAB0iAAAdKgAAHTYAAB1KAAAdWQAAHWgAAB13AAAdewAAHYoAAB2ZAAAdqAAAHbcAAB3GAAAd0gAAHeQAAB3zAAAeAgAAHhEAAB4gAAAeLwAAHj4AAB5NAAAeYgAAHmMAAB5rAAAedwAAHosAAB6aAAAeqQAAHrgAAB68AAAeywAAHtoAAB7pAAAe+AAAHwcAAB8TAAAfJQAAHzQAAB9DAAAfUgAAH2EAAB9iAAAfcQAAH4AAAB+PAAAfpAAAH6UAAB+tAAAfuQAAH80AAB/cAAAf6wAAH/oAAB/+AAAgDQAAIBwAACArAAAgOgAAIEkAACBVAAAgZwAAIHYAACCFAAAglAAAIKMAACCyAAAgwQAAINAAACDlAAAg5gAAIO4AACD6AAAhDgAAIR0AACEsAAAhOwAAIT8AACFOAAAhXQAAIWwAACF7AAAhigAAIZYAACGoAAAhtwAAIcYAACHVAAAh5AAAIfMAACICAAAiEQAAIiYAACInAAAiLwAAIjsAACJPAAAiXgAAIm0AACJ8AAAigAAAIo8AACKeAAAirQAAIrwAACLLAAAi1wAAIukAACL4AAAjBwAAIxYAACMlAAAjNAAAI0MAACNSAAAjUwAAI1YAACNfAAAjbgAAI30AACOMAAAjoQAAI6IAACOqAAAjtgAAI8oAACPZAAAj6AAAI/cAACP7AAAkCgAAJBkAACQoAAAkNwAAJEYAACRSAAAkZAAAJHMAACSCAAAkkQAAJKAAACSvAAAkvgAAJM0AACTQAAAk3wAAJO4AACT9AAAlAAAAJRoAACUbAAAlIQAAJS0AACVDAAAlUgAAJVUAACVkAAAlcwAAJXcAACV8AAAlfQAAJX4AACWNAAAlnAAAJZ8AACWuAAAlvQAAJcEAACXQAAAl3wAAJeAAACYAAAAmAQAAJgIAACYDAAAmBAAAJgUAACYGAAAmBwAAJggAACYJAAAmCgAAJgsAACYMAAAmDQAAJg4AACYjAAAmJAAAJiwAACY4AAAmTAAAJlsAACZqAAAmeQAAJn0AACaMAAAmmwAAJqoAACa5AAAmyAAAJtQAACbmAAAm9QAAJwQAACcTAAAnIgAAJzEAACdAAAAnQQAAJ1AAACdlAAAnZgAAJ24AACd6AAAnjgAAJ50AACesAAAnuwAAJ78AACfOAAAn3QAAJ+wAACf7AAAoCgAAKBYAACgoAAAoNwAAKEYAAChVAAAoZAAAKH4AACh/AAAohQAAKJEAACinAAAotgAAKLkAACjIAAAo1wAAKNsAACjhAAAo4gAAKOMAACjkAAAo8wAAKQIAACkFAAApFAAAKSMAACknAAApNgAAKUUAAClGAAApYAAAKWEAACliAAApYwAAKWQAACllAAApZgAAKWcAACloAAApaQAAKWoAAClrAAApgAAAKYEAACmJAAAplQAAKakAACm4AAApxwAAKdYAACnaAAAp6QAAKfgAACoHAAAqFgAAKiUAACoxAAAqQwAAKlIAACphAAAqcAAAKn8AACqOAAAqnQAAKqwAACrBAAAqwgAAKsoAACrWAAAq6gAAKvkAACsIAAArFwAAKxsAACsqAAArOQAAK0gAACtXAAArZgAAK3IAACuEAAArkwAAK6IAACuxAAArwAAAK88AACveAAAr7QAALAIAACwDAAAsCwAALBcAACwrAAAsOgAALEkAACxYAAAsXAAALGsAACx6AAAsiQAALJgAACynAAAsswAALMUAACzUAAAs4wAALPIAAC0BAAAtEAAALR8AAC0uAAAtQwAALUQAAC1MAAAtWAAALWwAAC17AAAtigAALZkAAC2dAAAtrAAALbsAAC3KAAAt2QAALegAAC30AAAuBgAALhUAAC4kAAAuMwAALkIAAC5cAAAuXQAALmMAAC5vAAAuhQAALpQAAC6XAAAupgAALrUAAC65AAAuwAAALsEAAC7CAAAuwwAALsQAAC7TAAAu4gAALuUAAC70AAAvAwAALwcAAC8WAAAvJQAALyYAAC9AAAAvQQAAL0IAAC9DAAAvRAAAL0UAAC9GAAAvRwAAL0gAAC9JAAAvSgAAL0sAAC9gAAAvYQAAL2kAAC91AAAviQAAL5gAAC+nAAAvtgAAL7oAAC/JAAAv2AAAL+cAAC/2AAAwBQAAMBEAADAjAAAwMgAAMEEAADBQAAAwXwAAMG4AADB9AAAwjAAAMKEAADCiAAAwqgAAMLYAADDKAAAw2QAAMOgAADD3AAAw+wAAMQoAADEZAAAxKAAAMTcAADFGAAAxUgAAMWQAADFzAAAxggAAMZEAADGgAAAxrwAAMb4AADHNAAAx4gAAMeMAADHrAAAx9wAAMgsAADIaAAAyKQAAMjgAADI8AAAySwAAMloAADJpAAAyeAAAMocAADKTAAAypQAAMrQAADLDAAAy0gAAMuEAADLiAAAy8QAAMwAAADMPAAAzJAAAMyUAADMtAAAzOQAAM00AADNcAAAzawAAM3oAADN+AAAzjQAAM5wAADOrAAAzugAAM8kAADPVAAAz5wAAM/YAADQFAAA0FAAANCMAADQyAAA0QQAANFAAADRlAAA0ZgAANG4AADR6AAA0jgAANJ0AADSsAAA0uwAANL8AADTOAAA03QAANOwAADT7AAA1CgAANRYAADUoAAA1NwAANUYAADVVAAA1ZAAANXMAADWCAAA1kQAANaYAADWnAAA1rwAANbsAADXPAAA13gAANe0AADX8AAA2AAAANg8AADYeAAA2LQAANjwAADZLAAA2VwAANmkAADZ4AAA2hwAANpYAADalAAA2tAAANsMAADbSAAA25wAANugAADbwAAA2/AAANxAAADcfAAA3LgAANz0AADdBAAA3UAAAN18AADduAAA3fQAAN4wAADeYAAA3qgAAN7kAADfIAAA31wAAN+YAADf1AAA4BAAAOBMAADgoAAA4KQAAODEAADg9AAA4UQAAOGAAADhvAAA4fgAAOIIAADiRAAA4oAAAOK8AADi+AAA4zQAAONkAADjrAAA4+gAAOQkAADkYAAA5JwAAOTYAADlFAAA5VAAAOWkAADlqAAA5cgAAOX4AADmSAAA5oQAAObAAADm/AAA5wwAAOdIAADnhAAA58AAAOf8AADoOAAA6GgAAOiwAADo7AAA6SgAAOlkAADpoAAA6dwAAOoYAADqVAAA6qgAAOqsAADqzAAA6vwAAOtMAADriAAA68QAAOwAAADsEAAA7EwAAOyIAADsxAAA7QAAAO08AADtbAAA7bQAAO3wAADuLAAA7mgAAO6kAADu4AAA7xwAAO9YAADvrAAA77AAAO/QAADwAAAA8FAAAPCMAADwyAAA8QQAAPEUAADxUAAA8YwAAPHIAADyBAAA8kAAAPJwAADyuAAA8vQAAPMwAADzbAAA86gAAPPkAAD0IAAA9FwAAPRoAAD0pAAA9OAAAPUcAAD1cAAA9XQAAPWUAAD1xAAA9hQAAPZQAAD2jAAA9sgAAPbYAAD3FAAA91AAAPeMAAD3yAAA+AQAAPg0AAD4fAAA+LgAAPj0AAD5MAAA+WwAAPmoAAD55AAA+iAAAPp0AAD6eAAA+pgAAPrIAAD7GAAA+1QAAPuQAAD7zAAA+9wAAPwYAAD8VAAA/JAAAPzMAAD9CAAA/TgAAP2AAAD9vAAA/fgAAP40AAD+cAAA/qwAAP7oAAD/JAAA/3gAAP98AAD/nAAA/8wAAQAcAAEAWAABAJQAAQDQAAEA4AABARwAAQFYAAEBlAABAdAAAQIMAAECPAABAoQAAQLAAAEC/AABAzgAAQN0AAED3AABA+AAAQP4AAEEKAABBIAAAQS8AAEEyAABBQQAAQVAAAEFUAABBWAAAQVkAAEFoAABBdwAAQXoAAEGJAABBmAAAQZwAAEGrAABBugAAQbsAAEHFAABBxgAAQccAAEHcAABB3QAAQeUAAEHxAABCBQAAQhQAAEIjAABCMgAAQjYAAEJFAABCVAAAQmMAAEJyAABCgQAAQo0AAEKfAABCrgAAQr0AAELMAABC2wAAQuoAAEL5AABDCAAAQx0AAEMeAABDJgAAQzIAAENGAABDVQAAQ2QAAENzAABDdwAAQ4YAAEOVAABDpAAAQ7MAAEPCAABDzgAAQ+AAAEPvAABD/gAARA0AAEQcAABEHQAARCwAAEQ7AABESgAARF8AAERgAABEaAAARHQAAESIAABElwAARKYAAES1AABEuQAARMgAAETXAABE5gAARPUAAEUEAABFEAAARSIAAEUxAABFQAAARU8AAEVeAABFbQAARXwAAEWLAABFjgAARZ0AAEWsAABFuwAARdAAAEXRAABF2QAAReUAAEX5AABGCAAARhcAAEYmAABGKgAARjkAAEZIAABGVwAARmYAAEZ1AABGgQAARpMAAEaiAABGsQAARsAAAEbPAABG3gAARu0AAEb8AABHEQAARxIAAEcaAABHJgAARzoAAEdJAABHWAAAR2cAAEdrAABHegAAR4kAAEeYAABHpwAAR7YAAEfCAABH1AAAR+MAAEfyAABIAQAASBAAAEgfAABILgAASD0AAEhSAABIUwAASFsAAEhnAABIewAASIoAAEiZAABIqAAASKwAAEi7AABIygAASNkAAEjoAABI9wAASQMAAEkVAABJJAAASTMAAElCAABJUQAASWAAAElvAABJfgAASZMAAEmUAABJnAAASagAAEm8AABJywAASdoAAEnpAABJ7QAASfwAAEoLAABKGgAASikAAEo4AABKRAAASlYAAEplAABKdAAASoMAAEqSAABKoQAASrAAAEq/AABKwgAAStEAAErgAABK7wAASwQAAEsFAABLDQAASxkAAEstAABLPAAAS0sAAEtaAABLXgAAS20AAEt8AABLiwAAS5oAAEupAABLtQAAS8cAAEvWAABL5QAAS/QAAEwDAABMEgAATCEAAEwwAABMRQAATEYAAExOAABMWgAATG4AAEx9AABMjAAATJsAAEyfAABMrgAATL0AAEzMAABM2wAATOoAAEz2AABNCAAATRcAAE0mAABNNQAATUQAAE1TAABNYgAATXEAAE2GAABNhwAATY8AAE2bAABNrwAATb4AAE3NAABN3AAATeAAAE3vAABN/gAATg0AAE4cAABOKwAATjcAAE5JAABOWAAATmcAAE52AABOhQAATpQAAE6jAABOsgAATscAAE7IAABO0AAATtwAAE7wAABO/wAATw4AAE8dAABPIQAATzAAAE8/AABPTgAAT10AAE9sAABPeAAAT4oAAE+ZAABPqAAAT7cAAE/GAABP1QAAT+QAAE/zAABQCAAAUAkAAFARAABQHQAAUDEAAFBAAABQTwAAUF4AAFBiAABQcQAAUIAAAFCPAABQngAAUK0AAFC5AABQywAAUNoAAFDpAABQ+AAAUQcAAFEWAABRJQAAUSYAAFE1AABRSgAAUUsAAFFTAABRXwAAUXMAAFGCAABRkQAAUaAAAFGkAABRswAAUcIAAFHRAABR4AAAUe8AAFH7AABSDQAAUhwAAFIrAABSOgAAUkkAAFJYAABSZwAAUmgAAFJ3AABSjAAAUo0AAFKVAABSoQAAUrUAAFLEAABS0wAAUuIAAFLmAABS9QAAUwQAAFMTAABTIgAAUzEAAFM9AABTTwAAU14AAFNtAABTfAAAU4sAAFOaAABTqQAAU7gAAFPNAABTzgAAU9YAAFPiAABT9gAAVAUAAFQUAABUIwAAVCcAAFQ2AABURQAAVFQAAFRjAABUcgAAVH4AAFSQAABUnwAAVK4AAFS9AABUzAAAVNsAAFTqAABU6wAAVPoAAFUPAABVEAAAVRgAAFUkAABVOAAAVUcAAFVWAABVZQAAVWkAAFV4AABVhwAAVZYAAFWlAABVtAAAVcAAAFXSAABV4QAAVfAAAFX/AABWDgAAVh0AAFYsAABWOwAAVlAAAFZRAABWWQAAVmUAAFZ5AABWiAAAVpcAAFamAABWqgAAVrkAAFbIAABW1wAAVuYAAFb1AABXAQAAVxMAAFciAABXMQAAV0AAAFdPAABXXgAAV20AAFd8AABXkQAAV5IAAFeaAABXpgAAV7oAAFfJAABX2AAAV+cAAFfrAABX+gAAWAkAAFgYAABYJwAAWDYAAFhCAABYVAAAWGMAAFhyAABYgQAAWJAAAFifAABYrgAAWK8AAFi+AABY0wAAWNQAAFjcAABY6AAAWPwAAFkLAABZGgAAWSkAAFktAABZPAAAWUsAAFlaAABZaQAAWXgAAFmEAABZlgAAWaUAAFm0AABZwwAAWdIAAFnhAABZ8AAAWf8AAFoCAABaHAAAWh0AAFojAABaLwAAWkUAAFpUAABaVwAAWmYAAFp1AABaeAAAWocAAFqWAABamQAAWqgAAFq3AABauwAAWsoAAFrZAABa2gAAWuQAAFrlAABa5gAAWucAAFr8AABa/QAAWwUAAFsRAABbJQAAWzQAAFtDAABbUgAAW1YAAFtlAABbdAAAW4MAAFuSAABboQAAW60AAFu/AABbzgAAW90AAFvsAABb+wAAXAoAAFwZAABcGgAAXCkAAFw+AABcPwAAXEcAAFxTAABcZwAAXHYAAFyFAABclAAAXJgAAFynAABctgAAXMUAAFzUAABc4wAAXO8AAF0BAABdEAAAXR8AAF0uAABdPQAAXVcAAF1YAABdXgAAXWoAAF2AAABdjwAAXZIAAF2hAABdsAAAXbMAAF3CAABd0QAAXdQAAF3jAABd8gAAXfYAAF4FAABeFAAAXhUAAF45AABeOgAAXjsAAF48AABePQAAXj4AAF4/AABeQAAAXkEAAF5CAABeQwAAXkQAAF5FAABeRgAAXkcAAF5IAABeSQAAXl4AAF5fAABeZwAAXnMAAF6HAABelgAAXqUAAF60AABeuAAAXscAAF7WAABe5QAAXvQAAF8DAABfDwAAXyEAAF8wAABfPwAAX04AAF9dAABfbAAAX3sAAF+KAABfnwAAX6AAAF+oAABftAAAX8gAAF/XAABf5gAAX/UAAF/5AABgCAAAYBcAAGAmAABgNQAAYEQAAGBQAABgYgAAYHEAAGCAAABgjwAAYJ4AAGCtAABgvAAAYMsAAGDgAABg4QAAYOkAAGD1AABhCQAAYRgAAGEnAABhNgAAYToAAGFJAABhWAAAYWcAAGF2AABhhQAAYZEAAGGjAABhsgAAYcEAAGHQAABh3wAAYe4AAGH9AABiDAAAYiEAAGIiAABiKgAAYjYAAGJKAABiWQAAYmgAAGJ3AABiewAAYooAAGKZAABiqAAAYrcAAGLGAABi0gAAYuQAAGLzAABjAgAAYxEAAGMgAABjIQAAYzAAAGM/AABjTgAAY2MAAGNkAABjbAAAY3gAAGOMAABjmwAAY6oAAGO5AABjvQAAY8wAAGPbAABj6gAAY/kAAGQIAABkFAAAZCYAAGQ1AABkRAAAZFMAAGRiAABkcQAAZIAAAGSPAABkpAAAZKUAAGStAABkuQAAZM0AAGTcAABk6wAAZPoAAGT+AABlDQAAZRwAAGUrAABlOgAAZUkAAGVVAABlZwAAZXYAAGWFAABllAAAZaMAAGW9AABlvgAAZcQAAGXQAABl5gAAZfUAAGX4AABmBwAAZhYAAGYZAABmKAAAZjcAAGY6AABmSQAAZlgAAGZcAABmawAAZnoAAGZ7AABmhwAAZogAAGaJAABmigAAZosAAGagAABmoQAAZqkAAGa1AABmyQAAZtgAAGbnAABm9gAAZvoAAGcJAABnGAAAZycAAGc2AABnRQAAZ1EAAGdjAABncgAAZ4EAAGeQAABnnwAAZ7kAAGe6AABnwAAAZ8wAAGfiAABn8QAAZ/QAAGgDAABoEgAAaBYAAGgdAABoHgAAaB8AAGggAABoIQAAaDAAAGg/AABoQgAAaFEAAGhgAABoZAAAaHMAAGiCAABogwAAaK8AAGiwAABosQAAaLIAAGizAABotAAAaLUAAGi2AABotwAAaLgAAGi5AABougAAaLsAAGi8AABovQAAaL4AAGi/AABowAAAaMEAAGjCAABowwAAaNgAAGjZAABo4QAAaO0AAGkBAABpEAAAaR8AAGkuAABpMgAAaUEAAGlQAABpXwAAaW4AAGl9AABpiQAAaZsAAGmqAABpuQAAacgAAGnXAABp5gAAafUAAGoEAABqGQAAahoAAGoiAABqLgAAakIAAGpRAABqYAAAam8AAGpzAABqggAAapEAAGqgAABqrwAAar4AAGrKAABq3AAAausAAGr6AABrCQAAaxgAAGsnAABrNgAAa0UAAGtaAABrWwAAa2MAAGtvAABrgwAAa5IAAGuhAABrsAAAa7QAAGvDAABr0gAAa+EAAGvwAABr/wAAbAsAAGwdAABsLAAAbC0AAGw8AABsSwAAbFoAAGxpAABseAAAbIcAAGycAABsnQAAbKUAAGyxAABsxQAAbNQAAGzjAABs8gAAbPYAAG0FAABtFAAAbSMAAG0yAABtQQAAbU0AAG1fAABtbgAAbX0AAG2MAABtmwAAbbUAAG22AABtvAAAbcgAAG3eAABt7QAAbfAAAG3/AABuDgAAbhEAAG4gAABuLwAAbjIAAG5BAABuUAAAblQAAG5jAABucgAAbnMAAG6FAABuhgAAbocAAG6IAABuiQAAbooAAG6LAABujAAAbqEAAG6iAABuqgAAbrYAAG7KAABu2QAAbugAAG73AABu+wAAbwoAAG8ZAABvKAAAbzcAAG9GAABvUgAAb2QAAG9zAABvggAAb5EAAG+gAABvrwAAb74AAG/NAABv4gAAb+MAAG/rAABv9wAAcAsAAHAaAABwKQAAcDgAAHA8AABwSwAAcFoAAHBpAABweAAAcIcAAHCTAABwpQAAcLQAAHDDAABw0gAAcOEAAHDwAABw/wAAcQ4AAHEjAABxJAAAcSwAAHE4AABxTAAAcVsAAHFqAABxeQAAcX0AAHGMAABxmwAAcaoAAHG5AABxyAAAcdQAAHHmAABx9QAAcgQAAHITAAByIgAAcjEAAHJAAAByTwAAcmQAAHJlAABybQAAcnkAAHKNAABynAAAcqsAAHK6AAByvgAAcs0AAHLcAABy6wAAcvoAAHMJAABzFQAAcycAAHM2AABzRQAAc1QAAHNjAABzcgAAc4EAAHOQAABzpQAAc6YAAHOuAABzugAAc84AAHPdAABz7AAAc/sAAHP/AAB0DgAAdB0AAHQsAAB0OwAAdEoAAHRWAAB0aAAAdHcAAHSGAAB0lQAAdKQAAHSzAAB0wgAAdNEAAHTmAAB05wAAdO8AAHT7AAB1DwAAdR4AAHUtAAB1PAAAdUAAAHVPAAB1XgAAdW0AAHV8AAB1iwAAdZcAAHWpAAB1uAAAdccAAHXWAAB15QAAdfQAAHYDAAB2EgAAdicAAHYoAAB2MAAAdjwAAHZQAAB2XwAAdm4AAHZ9AAB2gQAAdpAAAHafAAB2rgAAdr0AAHbMAAB22AAAduoAAHb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0AACaAwAAmhIAAJohAACaLQAAmj8AAJpOAACaXQAAmmwAAJp7AACalQAAmpYAAJqcAACaqAAAmr4AAJrNAACa0AAAmt8AAJruAACa8QAAmwAAAJsPAACbEgAAmyEAAJswAACbNAAAm0MAAJtSAACbUwAAm18AAJtgAACbYQAAm2IAAJtjAACbeAAAm3kAAJuBAACbjQAAm6EAAJuwAACbvwAAm84AAJvSAACb4QAAm/AAAJv/AACcDgAAnB0AAJwpAACcOwAAnEoAAJxZAACcaAAAnHcAAJyGAACclQAAnKQAAJy5AACcugAAnMIAAJzOAACc4gAAnPEAAJ0AAACdDwAAnRMAAJ0iAACdMQAAnUAAAJ1PAACdXgAAnWoAAJ18AACdiwAAnZoAAJ2pAACduAAAnccAAJ3WAACd5QAAnfoAAJ37AACeAwAAng8AAJ4jAACeMgAAnkEAAJ5QAACeVAAAnmMAAJ5yAACegQAAnpAAAJ6fAACeqwAAnr0AAJ7MAACe2wAAnuoAAJ75AACfCAAAnxcAAJ8YAACfJwAAnzwAAJ89AACfRQAAn1EAAJ9lAACfdAAAn4MAAJ+SAACflgAAn6UAAJ+0AACfwwAAn9IAAJ/hAACf7QAAn/8AAKAOAACgHQAAoCwAAKA7AACgSgAAoFkAAKBoAACgawAAoHoAAKCJAACgmAAAoK0AAKCuAACgtgAAoMIAAKDWAACg5QAAoPQAAKEDAAChBwAAoRYAAKElAAChNAAAoUMAAKFSAAChXgAAoXAAAKF/AAChjgAAoZ0AAKGsAAChxgAAoccAAKHNAACh2QAAoe8AAKH+AACiAQAAohAAAKIfAACiIgAAojEAAKJAAACiQwAAolIAAKJhAACiZQAAonQAAKKDAACihAAAoooAAKKLAACioAAAoqEAAKKpAACitQAAoskAAKLYAACi5wAAovYAAKL6AACjCQAAoxgAAKMnAACjNgAAo0UAAKNRAACjYwAAo3IAAKOBAACjkAAAo58AAKOuAACjvQAAo8wAAKPQAACj2QAAo9oAAKP8AACj/QAApAMAAKQPAACkJQAApDQAAKQ3AACkRgAApFUAAKRYAACkZwAApHYAAKR5AACkiAAApJcAAKSbAACkqgAApLkAAKS6AACkyAAApMkAAKTKAACkywAApMwAAKTNAACk4gAApOMAAKTrAACk9wAApQsAAKUaAAClKQAApTgAAKU8AAClSwAApVoAAKVpAACleAAApYcAAKWTAAClpQAApbQAAKXDAACl0gAApeEAAKXwAACl/wAApg4AAKYjAACmJAAApiwAAKY4AACmTAAAplsAAKZqAACmeQAApn0AAKaMAACmmwAApqoAAKa5AACmyAAAptQAAKbmAACm9QAApwQAAKcTAACnIgAApzEAAKdAAACnTwAAp2QAAKdlAACnbQAAp3kAAKeNAACnnAAAp6sAAKe6AACnvgAAp80AAKfcAACn6wAAp/oAAKgJAACoFQAAqCcAAKg2AACoRQAAqFQAAKhjAACocgAAqIEAAKiQAACopQAAqKYAAKiuAACougAAqM4AAKjdAACo7AAAqPsAAKj/AACpDgAAqR0AAKksAACpOwAAqUoAAKlWAACpaAAAqXcAAKmGAACplQAAqaQAAKmzAACpwgAAqdEAAKnmAACp5wAAqe8AAKn7AACqDwAAqh4AAKotAACqPAAAqkAAAKpPAACqXgAAqm0AAKp8AACqiwAAqpcAAKqpAACquAAAqscAAKrWAACq1wAAquYAAKr1AACrBAAAqxMAAKsWAACrHAAAqyMAAKs9AACrPgAAq0QAAKtQAACrZgAAq3UAAKt4AACrhwAAq5YAAKuZAACrqAAAq7cAAKu6AACryQAAq9gAAKvcAACr6wAAq/oAAKv7AACsAQAArAIAAKwXAACsGAAArCAAAKwsAACsQAAArE8AAKxeAACsbQAArHEAAKyAAACsjwAArJ4AAKytAACsvAAArMgAAKzaAACs6QAArPgAAK0HAACtFgAArTAAAK0xAACtNwAArUMAAK1ZAACtaAAArWsAAK16AACtiQAArYwAAK2bAACtqgAAra0AAK28AACtywAArc8AAK3eAACt7QAAre4AAK30AACt9QAArgoAAK4LAACuEwAArh8AAK4zAACuQgAArlEAAK5gAACuZAAArnMAAK6CAACukQAArqAAAK6vAACuuwAArs0AAK7cAACu6wAArvoAAK8JAACvGAAArycAAK82AACvOgAAr0EAAK9CAACvSAAAr1cAAK9mAACvdQAAr3kAAK96AACvgQAAr5sAAK+cAACvogAAr64AAK/EAACv0wAAr9YAAK/lAACv9AAAr/cAALAGAACwFQAAsBgAALAnAACwNgAAsDoAALBJAACwWAAAsFkAALBfAACwYAAAsHUAALB2AACwfgAAsIoAALCeAACwrQAAsLwAALDLAACwzwAAsN4AALDtAACw/AAAsQsAALEaAACxJgAAsTgAALFHAACxVgAAsWUAALF0AACxjgAAsY8AALGVAACxoQAAsbcAALHGAACxyQAAsdgAALHnAACx6gAAsfkAALIIAACyCwAAshoAALIpAACyLQAAsjwAALJLAACyTAAAslQAALJVAACyVgAAsmsAALJsAACydAAAsoAAALKUAACyowAAsrIAALLBAACyxQAAstQAALLjAACy8gAAswEAALMQAACzHAAAsy4AALM9AACzTAAAs1sAALNqAACzeQAAs4gAALOXAACzrAAAs60AALO1AACzwQAAs9UAALPkAACz8wAAtAIAALQGAAC0FQAAtCQAALQzAAC0QgAAtFEAALRdAAC0bwAAtH4AALSNAAC0jgAAtJ0AALSsAAC0uwAAtMoAALTZAAC07gAAtO8AALT3AAC1AwAAtRcAALUmAAC1NQAAtUQAALVIAAC1VwAAtWYAALV1AAC1hAAAtZMAALWfAAC1sQAAtcAAALXPAAC13gAAte0AALX8AAC2CwAAthoAALYeAAC2JQAAtiYAALY1AAC2RAAAtlMAALZXAAC2WAAAtmcAALZ2AAC2hQAAtogAALaNAAC2nAAAtqsAALa6AAC2zwAAttAAALbYAAC25AAAtvgAALcHAAC3FgAAtyUAALcpAAC3OAAAt0cAALdWAAC3ZQAAt3QAALeAAAC3kgAAt6EAALewAAC3vwAAt84AALfoAAC36QAAt+8AALf7AAC4EQAAuCAAALgjAAC4MgAAuEEAALhEAAC4UwAAuGIAALhlAAC4dAAAuIMAALiHAAC4lgAAuKUAALimAAC4tgAAuLcAALi4AAC4uQAAuLoAALi7AAC40AAAuNEAALjZAAC45QAAuPkAALkIAAC5FwAAuSYAALkqAAC5OQAAuUgAALlXAAC5ZgAAuXUAALmBAAC5kwAAuaIAALmxAAC5wAAAuc8AALneAAC57QAAufwAALoRAAC6EgAAuhoAALomAAC6OgAAukkAALpYAAC6ZwAAumsAALp6AAC6iQAAupgAALqnAAC6tgAAusIAALrUAAC64wAAuvIAALsBAAC7EAAAux8AALsuAAC7PQAAu1IAALtTAAC7WwAAu2cAALt7AAC7igAAu5kAALuoAAC7rAAAu7sAALvKAAC72QAAu+gAALv3AAC8AwAAvBUAALwkAAC8MwAAvEIAALxRAAC8YAAAvG8AALx+AAC8kwAAvJQAALycAAC8qAAAvLwAALzLAAC82gAAvOkAALztAAC8/AAAvQsAAL0aAAC9KQAAvTgAAL1EAAC9VgAAvWUAAL10AAC9gwAAvZIAAL2hAAC9sAAAvb8AAL3UAAC91QAAvd0AAL3pAAC9/QAAvgwAAL4bAAC+KgAAvi4AAL49AAC+TAAAvlsAAL5qAAC+eQAAvoUAAL6XAAC+pgAAvrUAAL7EAAC+0wAAvuIAAL7xAAC/AAAAvxUAAL8WAAC/HgAAvyoAAL8+AAC/TQAAv1wAAL9rAAC/bwAAv34AAL+NAAC/nAAAv6sAAL+6AAC/xgAAv9gAAL/nAAC/9gAAwAUAAMAUAADAIwAAwDIAAMBBAADARAAAwFMAAMBiAADAcQAAwIYAAMCHAADAjwAAwJsAAMCvAADAvgAAwM0AAMDcAADA4AAAwO8AAMD+AADBDQAAwRwAAMErAADBNwAAwUkAAMFYAADBZwAAwXYAAMGFAADBlAAAwaMAAMGyAADBxwAAwcgAAMHQAADB3AAAwfAAAMH/AADCDgAAwh0AAMIhAADCMAAAwj8AAMJOAADCXQAAwmwAAMJ4AADCigAAwpkAAMKoAADCtwAAwsYAAMLVAADC5AAAwvMAAMMIAADDCQAAwxEAAMMdAADDMQAAw0AAAMNPAADDXgAAw2IAAMNxAADDgAAAw48AAMOeAADDrQAAw7kAAMPLAADD2gAAw+kAAMP4AADEBwAAxBYAAMQlAADEJgAAxDUAAMRKAADESwAAxFMAAMRfAADEcwAAxIIAAMSRAADEoAAAxKQAAMSzAADEwgAAxNEAAMTgAADE7wAAxPsAAMUNAADFHAAAxSsAAMU6AADFSQAAxWMAAMVkAADFagAAxXYAAMWMAADFmwAAxZ4AAMWtAADFvAAAxb8AAMXOAADF3QAAxeAAAMXvAADF/gAAxgIAAMYRAADGIAAAxiEAAMYzAADGNAAAxjUAAMY2AADGNwAAxjgAAMY5AADGTgAAxk8AAMZXAADGYwAAxncAAMaGAADGlQAAxqQAAMaoAADGtwAAxsYAAMbVAADG5AAAxvMAAMb/AADHEQAAxyAAAMcvAADHPgAAx00AAMdcAADHawAAx3oAAMePAADHkAAAx5gAAMekAADHuAAAx8cAAMfWAADH5QAAx+kAAMf4AADIBwAAyBYAAMglAADINAAAyEAAAMhSAADIYQAAyHAAAMh/AADIjgAAyJ0AAMisAADIrQAAyLwAAMjRAADI0gAAyNoAAMjmAADI+gAAyQkAAMkYAADJJwAAySsAAMk6AADJSQAAyVgAAMlnAADJdgAAyYIAAMmUAADJowAAybIAAMnBAADJ0AAAyd8AAMnuAADJ/QAAyhIAAMoTAADKGwAAyicAAMo7AADKSgAAylkAAMpoAADKbAAAynsAAMqKAADKmQAAyqgAAMq3AADKwwAAytUAAMrkAADK8wAAywIAAMsRAADLIAAAyy8AAMs+AADLUwAAy1QAAMtcAADLaAAAy3wAAMuLAADLmgAAy6kAAMutAADLvAAAy8sAAMvaAADL6QAAy/gAAMwEAADMFgAAzCUAAMw0AADMQwAAzFIAAMxhAADMcAAAzH8AAMyUAADMlQAAzJ0AAMypAADMvQAAzMwAAMzbAADM6gAAzO4AAMz9AADNDAAAzRsAAM0qAADNOQAAzUUAAM1XAADNZgAAzXUAAM2EAADNkwAAzaIAAM2xAADNwAAAzdUAAM3WAADN3gAAzeoAAM3+AADODQAAzhwAAM4rAADOLwAAzj4AAM5NAADOXAAAzmsAAM56AADOhgAAzpgAAM6nAADOtgAAzsUAAM7UAADO4wAAzvIAAM8BAADPFgAAzxcAAM8fAADPKwAAzz8AAM9OAADPXQAAz2wAAM9wAADPfwAAz44AAM+dAADPrAAAz7sAAM/HAADP2QAAz+gAAM/3AADQBgAA0BUAANAkAADQMwAA0EIAANBFAADQVAAA0GMAANByAADQhwAA0IgAANCQAADQnAAA0LAAANC/AADQzgAA0N0AANDhAADQ8AAA0P8AANEOAADRHQAA0SwAANE4AADRSgAA0VkAANFoAADRdwAA0YYAANGVAADRpAAA0aUAANG0AADRyQAA0coAANHSAADR3gAA0fIAANIBAADSEAAA0h8AANIjAADSMgAA0kEAANJQAADSXwAA0m4AANJ6AADSjAAA0psAANKqAADSuQAA0sgAANLXAADS5gAA0vUAANMKAADTCwAA0xMAANMfAADTMwAA00IAANNRAADTYAAA02QAANNzAADTggAA05EAANOgAADTrwAA07sAANPNAADT3AAA0+sAANP6AADUCQAA1BgAANQnAADUNgAA1EsAANRMAADUVAAA1GAAANR0AADUgwAA1JIAANShAADUpQAA1LQAANTDAADU0gAA1OEAANTwAADU/AAA1Q4AANUdAADVLAAA1TsAANVKAADVZAAA1WUAANVrAADVdwAA1Y0AANWcAADVnwAA1a4AANW9AADVwAAA1c8AANXeAADV4QAA1fAAANX/AADWAwAA1hIAANYhAADWIgAA1ioAANYrAADWLAAA1kEAANZCAADWSgAA1lYAANZqAADWeQAA1ogAANaXAADWmwAA1qoAANa5AADWyAAA1tcAANbmAADW8gAA1wQAANcTAADXIgAA1zEAANdAAADXTwAA114AANdfAADXbgAA14MAANeEAADXjAAA15gAANesAADXuwAA18oAANfZAADX3QAA1+wAANf7AADYCgAA2BkAANgoAADYNAAA2EYAANhVAADYZAAA2HMAANiCAADYkQAA2KAAANivAADYsgAA2MEAANjQAADY3wAA2PQAANj1AADY/QAA2QkAANkdAADZLAAA2TsAANlKAADZTgAA2V0AANlsAADZewAA2YoAANmZAADZpQAA2bcAANnGAADZ1QAA2eQAANnzAADaDQAA2g4AANoUAADaIAAA2jYAANpFAADaSAAA2lcAANpmAADaagAA2m8AANpwAADacQAA2oAAANqPAADakgAA2qEAANqwAADatAAA2sMAANrSAADa0wAA2vUAANr2AADa9wAA2vgAANr5AADa+gAA2vsAANr8AADa/QAA2v4AANr/AADbAAAA2wEAANsCAADbAwAA2xgAANsZAADbIQAA2y0AANtBAADbUAAA218AANtuAADbcgAA24EAANuQAADbnwAA264AANu9AADbyQAA29sAANvqAADb+QAA3AgAANwXAADcJgAA3DUAANxEAADcWQAA3FoAANxiAADcbgAA3IIAANyRAADcoAAA3K8AANyzAADcwgAA3NEAANzgAADc7wAA3P4AAN0KAADdHAAA3SsAAN06AADdSQAA3VgAAN1nAADddgAA3YUAAN2aAADdmwAA3aMAAN2vAADdwwAA3dIAAN3hAADd8AAA3fQAAN4DAADeEgAA3iEAAN4wAADePwAA3ksAAN5dAADebAAA3nsAAN6KAADemQAA3qgAAN63AADexgAA3tsAAN7cAADe5AAA3vAAAN8EAADfEwAA3yIAAN8xAADfNQAA30QAAN9TAADfYgAA33EAAN+AAADfjAAA354AAN+tAADfvAAA38sAAN/aAADf6QAA3/gAAOAHAADgHAAA4B0AAOAlAADgMQAA4EUAAOBUAADgYwAA4HIAAOB2AADghQAA4JQAAOCjAADgsgAA4MEAAODNAADg3wAA4O4AAOD9AADhDAAA4RsAAOEqAADhOQAA4UgAAOFdAADhXgAA4WYAAOFyAADhhgAA4ZUAAOGkAADhswAA4bcAAOHGAADh1QAA4eQAAOHzAADiAgAA4g4AAOIgAADiLwAA4j4AAOJNAADiXAAA4msAAOJ6AADiiQAA4p4AAOKfAADipwAA4rMAAOLHAADi1gAA4uUAAOL0AADi+AAA4wcAAOMWAADjJQAA4zQAAONDAADjTwAA42EAAONwAADjfwAA444AAOOdAADjrAAA47sAAOPKAADj3wAA4+AAAOPoAADj9AAA5AgAAOQXAADkJgAA5DUAAOQ5AADkSAAA5FcAAORmAADkdQAA5IQAAOSQAADkogAA5LEAAOTAAADkzwAA5N4AAOTtAADk/AAA5QsAAOUgAADlIQAA5SkAAOU1AADlSQAA5VgAAOVnAADldgAA5XoAAOWJAADlmAAA5acAAOW2AADlxQAA5dEAAOXjAADl8gAA5gEAAOYQAADmHwAA5i4AAOY9AADmTAAA5mEAAOZiAADmagAA5nYAAOaKAADmmQAA5qgAAOa3AADmuwAA5soAAObZAADm6AAA5vcAAOcGAADnEgAA5yQAAOczAADnQgAA51EAAOdgAADnbwAA534AAOeNAADnogAA56MAAOerAADntwAA58sAAOfaAADn6QAA5/gAAOf8AADoCwAA6BoAAOgpAADoOAAA6EcAAOhTAADoZQAA6HQAAOiDAADokgAA6KEAAOi7AADovAAA6MIAAOjOAADo5AAA6PMAAOj2AADpBQAA6RQAAOkXAADpJgAA6TUAAOk4AADpRwAA6VYAAOlaAADpaQAA6XgAAOl5AADphQAA6YYAAOmHAADpiAAA6YkAAOmeAADpnwAA6acAAOm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iAAEMsQABDMAAAQzPAAEM3gABDOoAAQz8AAENCwABDRoAAQ0pAAENOAABDUcAAQ1WAAENZQABDXoAAQ17AAENgwABDY8AAQ2jAAENsgABDcEAAQ3QAAEN1AABDeMAAQ3yAAEOAQABDhAAAQ4fAAEOKwABDj0AAQ5MAAEOWwABDmoAAQ55AAEOiAABDpcAAQ6mAAEOuwABDrwAAQ7EAAEO0AABDuQAAQ7zAAEPAgABDxEAAQ8VAAEPJAABDzMAAQ9CAAEPUQABD2AAAQ9sAAEPfgABD40AAQ+cAAEPqwABD7oAAQ/JAAEP2AABD+cAAQ/8AAEP/QABEAUAARARAAEQJQABEDQAARBDAAEQUgABEFYAARBlAAEQdAABEIMAARCSAAEQoQABEK0AARC/AAEQzgABEN0AARDsAAEQ+wABEQoAAREZAAERKAABET0AARE+AAERRgABEVIAARFmAAERdQABEYQAARGTAAERlwABEaYAARG1AAERxAABEdMAARHiAAER7gABEgAAARIPAAESHgABEi0AARI8AAESSwABEloAARJpAAESfgABEn8AARKHAAESkwABEqcAARK2AAESxQABEtQAARLYAAES5wABEvYAARMFAAETFAABEyMAARMvAAETQQABE1AAARNfAAETbgABE30AAROMAAETmwABE6oAARO/AAETwAABE8gAARPUAAET6AABE/cAARQGAAEUFQABFBkAARQoAAEUNwABFEYAARRVAAEUZAABFHAAARSCAAEUkQABFKAAARSvAAEUvgABFM0AARTcAAEU3QABFOwAARTvAAEU/gABFQ0AARUcAAEVMQABFTIAARU6AAEVRgABFVoAARVpAAEVeAABFYcAARWLAAEVmgABFakAARW4AAEVxwABFdYAARXiAAEV9AABFgMAARYSAAEWIQABFjAAARY/AAEWTgABFl0AARZyAAEWcwABFnsAARaHAAEWmwABFqoAARa5AAEWyAABFswAARbbAAEW6gABFvkAARcIAAEXFwABFyMAARc1AAEXRAABF1MAARdiAAEXcQABF4AAARePAAEXngABF7MAARe0AAEXvAABF8gAARfcAAEX6wABF/oAARgJAAEYDQABGBwAARgrAAEYOgABGEkAARhYAAEYZAABGHYAARiFAAEYlAABGKMAARiyAAEYwQABGNAAARjfAAEY9AABGPUAARj9AAEZCQABGR0AARksAAEZOwABGUoAARlOAAEZXQABGWwAARl7AAEZigABGZkAARmlAAEZtwABGcYAARnVAAEZ5AABGfMAARoCAAEaEQABGiAAARojAAEaMgABGkEAARpQAAEaZQABGmYAARpuAAEaegABGo4AARqdAAEarAABGrsAARq/AAEazgABGt0AARrsAAEa+wABGwoAARsWAAEbKAABGzcAARtGAAEbVQABG2QAARtzAAEbggABG5EAARuUAAEbrgABG68AARu1AAEbwQABG9cAARvmAAEb6QABG/gAARwHAAEcCwABHBAAARwRAAEcEgABHCEAARwwAAEcMwABHEIAARxRAAEcVQABHGQAARxzAAEcdAABHH4AARx/AAEcgAABHIEAARyWAAEclwABHJ8AARyrAAEcvwABHM4AARzdAAEc7AABHPAAARz/AAEdDgABHR0AAR0sAAEdOwABHUcAAR1ZAAEdaAABHXcAAR2GAAEdlQABHaQAAR2zAAEdwgABHdcAAR3YAAEd4AABHewAAR4AAAEeDwABHh4AAR4tAAEeMQABHkAAAR5PAAEeXgABHm0AAR58AAEeiAABHpoAAR6pAAEeuAABHscAAR7WAAEe5QABHvQAAR8DAAEfGAABHxkAAR8hAAEfLQABH0EAAR9QAAEfXwABH24AAR9yAAEfgQABH5AAAR+fAAEfrgABH70AAR/JAAEf2wABH+oAAR/5AAEgCAABIBcAASAxAAEgMgABIDgAASBEAAEgWgABIGkAASBsAAEgewABIIoAASCNAAEgnAABIKsAASCuAAEgvQABIMwAASDQAAEg3wABIO4AASDvAAEhBQABIQYAASEHAAEhCAABIQkAASEKAAEhCwABIQwAASENAAEhIgABISMAASErAAEhNwABIUsAASFaAAEhaQABIXgAASF8AAEhiwABIZoAASGpAAEhuAABIccAASHTAAEh5QABIfQAASIDAAEiEgABIiEAASIwAAEiPwABIk4AASJjAAEiZAABImwAASJ4AAEijAABIpsAASKqAAEiuQABIr0AASLMAAEi2wABIuoAASL5AAEjCAABIxQAASMmAAEjNQABI0QAASNTAAEjYgABI3EAASOAAAEjgQABI5AAASOlAAEjpgABI64AASO6AAEjzgABI90AASPsAAEj+wABI/8AASQOAAEkHQABJCwAASQ7AAEkSgABJFYAASRoAAEkdwABJIYAASSVAAEkpAABJLMAASTCAAEk0QABJOYAASTnAAEk7wABJPsAASUPAAElHgABJS0AASU8AAElQAABJU8AASVeAAElbQABJXwAASWLAAEllwABJakAASW4AAElxwABJdYAASXlAAEl9AABJgMAASYEAAEmEwABJigAASYpAAEmMQABJj0AASZRAAEmYAABJm8AASZ+AAEmggABJpEAASagAAEmrwABJr4AASbNAAEm2QABJusAASb6AAEnCQABJxgAAScnAAEnQQABJ0IAASdIAAEnVAABJ2oAASd5AAEnfAABJ4sAASeaAAEnnQABJ6wAASe7AAEnvgABJ80AASfcAAEn4AABJ+8AASf+AAEn/wABKAkAASgKAAEoCwABKAwAASghAAEoIgABKCoAASg2AAEoSgABKFkAAShoAAEodwABKHsAASiKAAEomQABKKgAASi3AAEoxgABKNIAASjkAAEo8wABKQIAASkRAAEpIAABKS8AASk+AAEpPwABKU4AASljAAEpZAABKWwAASl4AAEpjAABKZsAASmqAAEpuQABKb0AASnMAAEp2wABKeoAASn5AAEqCAABKhQAASomAAEqNQABKkQAASpTAAEqYgABKnEAASqAAAEqgQABKpAAASqlAAEqpgABKq4AASq6AAEqzgABKt0AASrsAAEq+wABKv8AASsOAAErHQABKywAASs7AAErSgABK1YAAStoAAErdwABK4YAASuVAAErpAABK7MAASvCAAEr0QABK9QAASvjAAEr8gABLAEAASwWAAEsFwABLB8AASwrAAEsPwABLE4AASxdAAEsbAABLHAAASx/AAEsjgABLJ0AASysAAEsuwABLMcAASzZAAEs6AABLPcAAS0GAAEtFQABLS8AAS0wAAEtNgABLUIAAS1YAAEtZwABLWoAAS15AAEtegABLYkAAS2MAAEtmwABLaoAAS2tAAEtvAABLcsAAS3PAAEt3gABLe0AAS3uAAEt+gABLfsAAS38AAEt/QABLf4AAS4TAAEuFAABLhwAAS4oAAEuPAABLksAAS5aAAEuaQABLm0AAS58AAEuiwABLpoAAS6pAAEuuAABLsQAAS7WAAEu5QABLvQAAS8DAAEvEgABLyEAAS8wAAEvMQABL0AAAS9VAAEvVgABL14AAS9qAAEvfgABL40AAS+cAAEvqwABL68AAS++AAEvzQABL9wAAS/rAAEv+gABMAYAATAYAAEwJwABMDYAATBFAAEwVAABMGMAATByAAEwcwABMIIAATCXAAEwmAABMKAAATCsAAEwwAABMM8AATDeAAEw7QABMPEAATEAAAExDwABMR4AATEtAAExPAABMUgAATFaAAExaQABMXgAATGHAAExlgABMaUAATG0AAExtQABMcQAATHZAAEx2gABMeIAATHuAAEyAgABMhEAATIgAAEyLwABMjMAATJCAAEyUQABMmAAATJvAAEyfgABMooAATKcAAEyqwABMroAATLJAAEy2AABMucAATL2AAEzBQABMwgAATMXAAEzJgABMzUAATNKAAEzSwABM1MAATNfAAEzcwABM4IAATORAAEzoAABM6QAATOzAAEzwgABM9EAATPgAAEz7wABM/sAATQNAAE0HAABNCsAATQ6AAE0SQABNFgAATRnAAE0dgABNIsAATSMAAE0lAABNKAAATS0AAE0wwABNNIAATThAAE05QABNPQAATUDAAE1EgABNSEAATUwAAE1PAABNU4AATVdAAE1bAABNXsAATWKAAE1pAABNaUAATWrAAE1twABNc0AATXcAAE13wABNe4AATX9AAE2AAABNg8AATYeAAE2IQABNjAAATY/AAE2QwABNlIAATZhAAE2YgABNm4AATZvAAE2cAABNnEAATZyAAE2hwABNogAATaQAAE2nAABNrAAATa/AAE2zgABNt0AATbhAAE28AABNv8AATcOAAE3HQABNywAATc4AAE3SgABN1kAATdoAAE3dwABN4YAATeVAAE3pAABN7MAATfIAAE3yQABN9EAATfdAAE38QABOAAAATgPAAE4HgABOCIAATgxAAE4QAABOE8AATheAAE4bQABOHkAATiLAAE4mgABOKkAATi4AAE4xwABONYAATjlAAE49AABOQkAATkKAAE5EgABOR4AATkyAAE5QQABOVAAATlfAAE5YwABOXIAATmBAAE5kAABOZ8AATmuAAE5ugABOcwAATnbAAE56gABOfkAAToIAAE6FwABOiYAATonAAE6NgABOksAATpMAAE6VAABOmAAATp0AAE6gwABOpIAATqhAAE6pQABOrQAATr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2AAFcOgABXEkAAVxYAAFcZwABXHYAAVyFAAFckQABXKMAAVyyAAFcwQABXNAAAVzfAAFc+QABXPoAAV0AAAFdDAABXSIAAV0xAAFdNAABXUMAAV1SAAFdVgABXVoAAV1bAAFdagABXXkAAV18AAFdiwABXZoAAV2eAAFdrQABXbwAAV29AAFdyQABXcoAAV3LAAFd4AABXeEAAV3pAAFd9QABXgkAAV4YAAFeJwABXjYAAV46AAFeSQABXlgAAV5nAAFedgABXoUAAV6RAAFeowABXrIAAV7BAAFe0AABXt8AAV7uAAFe/QABXwwAAV8hAAFfIgABXyoAAV82AAFfSgABX1kAAV9oAAFfdwABX3sAAV+KAAFfmQABX6gAAV+3AAFfxgABX9IAAV/kAAFf8wABYAIAAWARAAFgIAABYC8AAWA+AAFgTQABYGIAAWBjAAFgawABYHcAAWCLAAFgmgABYKkAAWC4AAFgvAABYMsAAWDaAAFg6QABYPgAAWEHAAFhEwABYSUAAWE0AAFhQwABYVIAAWFhAAFhcAABYX8AAWGOAAFhowABYaQAAWGsAAFhuAABYcwAAWHbAAFh6gABYfkAAWH9AAFiDAABYhsAAWIqAAFiOQABYkgAAWJUAAFiZgABYnUAAWKEAAFikwABYqIAAWKxAAFiwAABYs8AAWLSAAFi4QABYvAAAWL/AAFjFAABYxUAAWMdAAFjKQABYz0AAWNMAAFjWwABY2oAAWNuAAFjfQABY4wAAWObAAFjqgABY7kAAWPFAAFj1wABY+YAAWP1AAFkBAABZBMAAWQtAAFkLgABZDQAAWRAAAFkVgABZGUAAWRoAAFkdwABZIYAAWSKAAFkjwABZJAAAWSRAAFkoAABZK8AAWSyAAFkwQABZNAAAWTUAAFk4wABZPIAAWTzAAFlFQABZRYAAWUXAAFlGAABZRkAAWUaAAFlGwABZRwAAWUdAAFlHgABZR8AAWUgAAFlIQABZSIAAWUjAAFlOAABZTkAAWVBAAFlTQABZWEAAWVwAAFlfwABZY4AAWWSAAFloQABZbAAAWW/AAFlzgABZd0AAWXpAAFl+wABZgoAAWYZAAFmKAABZjcAAWZGAAFmVQABZmQAAWZ5AAFmegABZoIAAWaOAAFmogABZrEAAWbAAAFmzwABZtMAAWbiAAFm8QABZwAAAWc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pAAGVeAABlYcAAZWLAAGVmgABlakAAZW4AAGVxwABldYAAZXiAAGV9AABlgMAAZYSAAGWIQABljAAAZY/AAGWTgABll0AAZZyAAGWcwABlnsAAZaHAAGWmwABlqoAAZa5AAGWyAABlswAAZbbAAGW6gABlvkAAZcIAAGXFwABlyMAAZc1AAGXRAABl1MAAZdiAAGXcQABl4AAAZePAAGXngABl7MAAZe0AAGXvAABl8gAAZfcAAGX6wABl/oAAZgJAAGYDQABmBwAAZgrAAGYOgABmEkAAZhYAAGYZAABmHYAAZiFAAGYlAABmKMAAZiyAAGYwQABmNAAAZjfAAGY9AABmPUAAZj9AAGZCQABmR0AAZksAAGZOwABmUoAAZlOAAGZXQABmWwAAZl7AAGZigABmZkAAZmlAAGZtwABmcYAAZnVAAGZ5AABmfMAAZoCAAGaEQABmiAAAZo1AAGaNgABmj4AAZpKAAGaXgABmm0AAZp8AAGaiwABmo8AAZqeAAGarQABmrwAAZrLAAGa2gABmuYAAZr4AAGbBwABmxYAAZslAAGbNAABm0MAAZtSAAGbYQABm3YAAZt3AAGbfwABm4sAAZufAAGbrgABm70AAZvMAAGb0AABm98AAZvuAAGb/QABnAwAAZwbAAGcJwABnDkAAZxIAAGcVwABnGYAAZx1AAGchAABnJMAAZyiAAGcpQABnLQAAZzDAAGc0gABnOcAAZzoAAGc8AABnPwAAZ0QAAGdHwABnS4AAZ09AAGdQQABnVAAAZ1fAAGdbgABnX0AAZ2MAAGdmAABnaoAAZ25AAGdyAABndcAAZ3mAAGd9QABngQAAZ4TAAGeKAABnikAAZ4xAAGePQABnlEAAZ5gAAGebwABnn4AAZ6CAAGekQABnqAAAZ6vAAGevgABns0AAZ7ZAAGe6wABnvoAAZ8JAAGfGAABnycAAZ82AAGfRQABn1QAAZ9pAAGfagABn3IAAZ9+AAGfkgABn6EAAZ+wAAGfvwABn8MAAZ/SAAGf4QABn/AAAZ//AAGgDgABoBoAAaAsAAGgOwABoEoAAaBZAAGgaAABoHcAAaCGAAGglQABoKoAAaCrAAGgswABoL8AAaDTAAGg4gABoPEAAaEAAAGhBAABoRMAAaEiAAGhMQABoUAAAaFPAAGhWwABoW0AAaF8AAGhiwABoZoAAaGpAAGhuAABoccAAaHWAAGh6wABoewAAaH0AAGiAAABohQAAaIjAAGiMgABokEAAaJFAAGiVAABomMAAaJyAAGigQABopAAAaKcAAGirgABor0AAaLMAAGi2wABouoAAaL5AAGjCAABoxcAAaMsAAGjLQABozUAAaNBAAGjVQABo2QAAaNzAAGjggABo4YAAaOVAAGjpAABo7MAAaPCAAGj0QABo90AAaPvAAGj/gABpA0AAaQcAAGkKwABpDoAAaRJAAGkWAABpFsAAaR1AAGkdgABpHwAAaSIAAGkngABpK0AAaSwAAGkvwABpM4AAaTSAAGk1wABpNgAAaTZAAGk6AABpPcAAaT6AAGlCQABpRgAAaUcAAGlKwABpToAAaU7AAGlQwABpUQAAaVZAAGlWgABpWIAAaVuAAGlggABpZEAAaWgAAGlrwABpbMAAaXCAAGl0QABpeAAAaXvAAGl/gABpgoAAaYcAAGmKwABpjoAAaZJAAGmWAABpmcAAaZ2AAGmhQABppoAAaabAAGmowABpq8AAabDAAGm0gABpuEAAabwAAGm9AABpwMAAacSAAGnIQABpzAAAac/AAGnSwABp10AAadsAAGnewABp4oAAaeZAAGnqAABp7cAAafGAAGnyQABp+MAAafkAAGn6gABp/YAAagMAAGoGwABqB4AAagtAAGoPAABqEAAAahFAAGoRgABqEcAAahWAAGoZQABqGgAAah3AAGohgABqIoAAaiZAAGoqAABqKkAAai1AAGotgABqLcAAai4AAGouQABqM4AAajPAAGo1wABqOMAAaj3AAGpBgABqRUAAakkAAGpKAABqTcAAalGAAGpVQABqWQAAalzAAGpfwABqZEAAamgAAGprwABqb4AAanNAAGp3AABqesAAan6AAGqDwABqhAAAaoYAAGqJAABqjgAAapHAAGqVgABqmUAAappAAGqeAABqocAAaqWAAGqpQABqrQAAarAAAGq0gABquEAAarwAAGq/wABqw4AAasdAAGrLAABqzsAAatQAAGrUQABq1kAAatlAAGreQABq4gAAauXAAGrpgABq6oAAau5AAGryAABq9cAAavmAAGr9QABrAEAAawTAAGsIgABrDEAAaxAAAGsTwABrF4AAaxtAAGsfAABrJEAAaySAAGsmgABrKYAAay6AAGsyQABrNgAAaz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BDEeBEkmBGCOBGV6BDNSBDbyBDhuBIKeBIO6BFniBESqBCf6BIWaBDfKBFIiBIauBIe+BBWiBIoCBD5yBGNCBFwaBB4aBGS+BC6WBG8eBCF6BHHWBIt2BCDKBGquBCOWBIySBF3yBE8uBI7KBAfiBBACBGzuBE/qBDpuBI/iBDQOBH0SBEM2BJQKBC3GBA4SBDZOAY18QE09idk9ibGl2aW91c0NoYW5uZWxcSW5ib3hNZXNzYWdlXUNvbnRhY3REZXZpY2VfEC5DaGFubmVsQ3JlYXRpb25XaXRoT3duZWREZXZpY2VQcm90b2NvbEluc3RhbmNlXxAWSWRlbnRpdHlTZXJ2ZXJVc2VyRGF0YV8QFU91dGJveEF0dGFjaG1lbnRDaHVua18QF1BlbmRpbmdEZWxldGVGcm9tU2VydmVyW0tleU1hdGVyaWFsVkJhY2t1cF8QFFBlcnNpc3RlZFRydXN0T3JpZ2luXxASUGVuZGluZ0dyb3VwTWVtYmVyXxAXS2V5Y2xvYWtSZXZva2VkSWRlbnRpdHlfEBxMaW5rQmV0d2VlblByb3RvY29sSW5zdGFuY2VzXxAVR3JvdXBWMlNlcnZlclVzZXJEYXRhXxAcQ29udGFjdEdyb3VwRGV0YWlsc1B1Ymxpc2hlZF8QEUNvbnRhY3RHcm91cE93bmVkXxASQ29udGFjdEdyb3VwSm9pbmVkXxAkVHJ1c3RFc3RhYmxpc2htZW50Q29tbWl0bWVudFJlY2VpdmVkXxAURGVsZXRlZE91dGJveE1lc3NhZ2VfEBBQcm90b2NvbEluc3RhbmNlXktleWNsb2FrU2VydmVyXxAbQ29udGFjdEdyb3VwVjJQZW5kaW5nTWVtYmVyXxAtQ29udGFjdE93bmVkSWRlbnRpdHlEZWxldGlvblNpZ25hdHVyZVJlY2VpdmVkXxAaQ29udGFjdEdyb3VwRGV0YWlsc1RydXN0ZWRfEB1Db250YWN0SWRlbnRpdHlEZXRhaWxzVHJ1c3RlZF8QGEdyb3VwVjJTaWduYXR1cmVSZWNlaXZlZF8QElBlbmRpbmdTZXJ2ZXJRdWVyeV8QFkluYm94QXR0YWNobWVudFNlc3Npb25fEA9DYWNoZWRXZWxsS25vd25bT3duZWREZXZpY2VeU2VydmVyVXNlckRhdGFfEDBDaGFubmVsQ3JlYXRpb25XaXRoQ29udGFjdERldmljZVByb3RvY29sSW5zdGFuY2VfEA9Db250YWN0SWRlbnRpdHlfEBNHcm91cFNlcnZlclVzZXJEYXRhXENvbnRhY3RHcm91cF1PdXRib3hNZXNzYWdlXkNvbnRhY3RHcm91cFYyXU1lc3NhZ2VIZWFkZXJfEBVQZXJzaXN0ZWRFbmdpbmVEaWFsb2dfEBRDb250YWN0R3JvdXBWMk1lbWJlcl8QEE91dGJveEF0dGFjaG1lbnRfEBVDb250YWN0R3JvdXBWMkRldGFpbHNdU2VydmVyU2Vzc2lvbl8QMlByb3RvY29sSW5zdGFuY2VXYWl0aW5nRm9yQ29udGFjdFVwZ3JhZGVUb09uZVRvT25lXxAfQ29udGFjdElkZW50aXR5RGV0YWlsc1B1Ymxpc2hlZF8QG011dHVhbFNjYW5TaWduYXR1cmVSZWNlaXZlZFlQcm92aXNpb25fEBRJbmJveEF0dGFjaG1lbnRDaHVua18QF091dGJveEF0dGFjaG1lbnRTZXNzaW9uXxAWQ29udGFjdElkZW50aXR5RGV0YWlsc18QHU93bmVkSWRlbnRpdHlEZXRhaWxzUHVibGlzaGVkXxAPUmVjZWl2ZWRNZXNzYWdlXxATQ29udGFjdEdyb3VwRGV0YWlsc1lCYWNrdXBLZXlfEBdPd25lZElkZW50aXR5TWFza2luZ1VJRF8QJENoYW5uZWxDcmVhdGlvblBpbmdTaWduYXR1cmVSZWNlaXZlZF1Pd25lZElkZW50aXR5XxAPSW5ib3hBdHRhY2htZW50XxAZQ29udGFjdEdyb3VwRGV0YWlsc0xhdGVzdN8QEAAAAPEAAADyAAAA8wAAAPQAAAAhAAAA9QAAAPYAAAAjAAAA9wAAAPgAAAAOAAAAJQAAAPkAAAD6AAAAKAAAAPsAAAD8AAAA/QAAACkAAAApAAAAFAAAAQEAAAECAAAAMQAAACkAAAD8AAABBQAAAD0AAAD8AAABCAAAAQkAAAEKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gEOAa4AEgASAAoBEgQMRgASAQ4EDE4AGgEOBAzKAQggTAAAAAQePbTVXb3JkZXJlZNMAAAA6AAAAOwAAAA4AAAEOAAABEAAAALShAAABD4BFoQAAARGARoBjXlhEX1BTdGVyZW90eXBl2QAAACEAAAAlAAABFQAAAA4AAAAoAAABFgAAACMAAAD7AAABFwAAAHkAAAEPAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAAABH18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYBBgEWAQ4BqgACABAiAR9MAAAA6AAAAOwAAAA4AAAEhAAABKwAAALSpAAABIgAAASMAAAEkAAABJQAAASYAAAEnAAABKAAAASkAAAEqgEiASYBKgEuATIBNgE6AT4BQqQAAASwAAAEtAAABLgAAAS8AAAEwAAABMQAAATIAAAEzAAABNIBRgFWAVoBcgF2AX4BhgGSAaIBjXxATWERQTUNvbXBvdW5kSW5kZXhlc18QEFhEX1BTS19lbGVtZW50SURfEBlYRFBNVW5pcXVlbmVzc0NvbnN0cmFpbnRzXxAaWERfUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBlYRF9QU0tfZmV0Y2hSZXF1ZXN0c0FycmF5XxARWERfUFNLX2lzQWJzdHJhY3RfEA9YRF9QU0tfdXNlckluZm9fEBNYRF9QU0tfY2xhc3NNYXBwaW5nXxAWWERfUFNLX2VudGl0eUNsYXN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lZWRJc0luUHJvZ3Jlc3NfECV0aW1lc3RhbXBPZkxhc3RGdWxsUmF0Y2hldFNlbnRNZXNzYWdlXxAUcmVtb3RlQ3J5cHRvSWRlbnRpdHlfEBBjdXJyZW50RGV2aWNlVWlkXxASY3J5cHRvU3VpdGVWZXJzaW9uXxAiZnVsbFJhdGNoZXRpbmdDb3VudE9mTGFzdFByb3Zpc2lvbl8QGnRpbWVzdGFtcE9mTGFzdEZ1bGxSYXRjaGV0W2lzQ29uZmlybWVkXxAZbnVtYmVyT2ZFbmNyeXB0ZWRNZXNzYWdlc18QOG51bWJlck9mRW5jcnlwdGVkTWVzc2FnZXNTaW5jZUxhc3RGdWxsUmF0Y2hldFNlbnRNZXNzYWdlWnByb3Zpc2lvbnPfEBIAAAFAAAABQQAAAUIAAAJEAAAAIQAAAUQAAAFFAAACRQAAACMAAAFDAAACRgAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAApAAAAeQAAAQoAAAEKAAACTgAAADEAAAEKAAAA/AAAAQoAAAJSAAACFAAAAQoAAAEKAAACVgAAAQpfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBBCAiAfQiAQwiApYBsCAiAfAgS6imUldMAAAA6AAAAOwAAAA4AAAJaAAACXQAAALSiAAACWwAAAlyAfoB/ogAAAl4AAAJfgICAk4BjXxASWERfUFByb3BTdGVyZW90eXBlXxASWERfUEF0dF9TdGVyZW90eXBl2QAAACEAAAAlAAACZAAAAA4AAAAoAAACZQAAACMAAAD7AAACZgAAAiQAAAJbAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAAACbl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYB7gH6AQ4BqgACABAiAgdMAAAA6AAAAOwAAAA4AAAJwAAACeQAAALSoAAACcQAAAnIAAAJzAAACdAAAAnUAAAJ2AAACdwAAAniAgoCDgISAhYCGgIeAiICJqAAAAnoAAAJ7AAACfAAAAn0AAAJ+AAACfwAAAoAAAAKBgIqAi4CMgI6Aj4CQgJGAkoBjXxAbWERfUFBTS19pc1N0b3JlZEluVHJ1dGhGaWxlXxAbWERfUFBTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAQWERfUFBTS191c2VySW5mb18QEVhEX1BQU0tfaXNJbmRleGVkXxASWERfUFBTS19pc09wdGlvbmFsXxAaWERfUFBTS19pc1Nwb3RsaWdodEluZGV4ZWRfEBFYRF9QUFNLX2VsZW1lbnRJRF8QE1hEX1BQU0tfaXNUcmFuc2llbnTfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAAJeAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcQAAAQoAAAEKAAAAFwAAAQqAAIBggACAgAgICAiAVICCCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAJeAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcgAAAQoAAAEKAAAAFwAAAQqAAIAAgACAgAgICAiAVICDCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAACqwAAABcAAAJeAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcwAAAQoAAAEKAAAAFwAAAQqAAICNgACAgAgICAiAVICECAiAAAjTAAAAOgAAADsAAAAOAAACuQAAAroAAAC0oKCAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAAl4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ0AAABCgAAAQoAAAAXAAABCoAAgGCAAICACAgICIBUgIUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAAl4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ1AAABCgAAAQoAAAAXAAABCoAAgGCAAICACAgICIBUgIYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAAl4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ2AAABCgAAAQoAAAAXAAABCoAAgGCAAICACAgICIBUgIcICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAAl4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ3AAABCgAAAQoAAAAXAAABCoAAgACAAICACAgICIBUgIgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAAl4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ4AAABCgAAAQoAAAAXAAABCoAAgGCAAICACAgICIBUgIkICIAACNkAAAAhAAAAJQAAAwgAAAAOAAAAKAAAAwkAAAAjAAAA+wAAAwoAAAIkAAACXAAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAAxJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAe4B/gEOAaoAAgAQIgJTTAAAAOgAAADsAAAAOAAADFAAAAxwAAAC0pwAAAxUAAAMWAAADFwAAAxgAAAMZAAADGgAAAxuAlYCWgJeAmICZgJqAm6cAAAMdAAADHgAAAx8AAAMgAAADIQAAAyIAAAMjgJyAnYCegJ+AoYCigKSAY18QHVhEX1BBdHRLX2RlZmF1bHRWYWx1ZUFzU3RyaW5nXxAoWERfUEF0dEtfYWxsb3dzRXh0ZXJuYWxCaW5hcnlEYXRhU3RvcmFnZV8QF1hEX1BBdHRLX21pblZhbHVlU3RyaW5nXxAWWERfUEF0dEtfYXR0cmlidXRlVHlwZV8QF1hEX1BBdHRLX21heFZhbHVlU3RyaW5nXxAdWERfUEF0dEtfdmFsdWVUcmFuc2Zvcm1lck5hbWVfECBYRF9QQXR0S19yZWd1bGFyRXhwcmVzc2lvblN0cmluZ98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAAl8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMVAAABCgAAAQoAAAAXAAABCoAAgACAAICTCAgICIBUgJUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAAl8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMWAAABCgAAAQoAAAAXAAABCoAAgGCAAICTCAgICIBUgJYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAAl8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMXAAABCgAAAQoAAAAXAAABCoAAgACAAICTCAgICIBUgJcICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAANbAAAAFwAAAl8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMYAAABCgAAAQoAAAAXAAABCoAAgKCAAICTCAgICIBUgJgICIAACBEHCN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAAl8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMZAAABCgAAAQoAAAAXAAABCoAAgACAAICTCAgICIBUgJkICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAN6AAAAFwAAAl8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMaAAABCgAAAQoAAAAXAAABCoAAgKOAAICTCAgICIBUgJoICIAACF5VSURUcmFuc2Zvcm1lct8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAAl8AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMbAAABCgAAAQoAAAAXAAABCoAAgACAAICTCAgICIBUgJsICIAACNIAAAFcAAABXQAAA5gAAAOZXVhEUE1BdHRyaWJ1dGWmAAADmgAAA5sAAAOcAAADnQAAA54AAAFhXVhEUE1BdHRyaWJ1dGVcWERQTVByb3BlcnR5XxAQWERVTUxQcm9wZXJ0eUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xASAAABQAAAAUEAAAFCAAADoAAAACEAAAFEAAABRQAAA6EAAAAjAAABQwAAA6IAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAAKQAAAHkAAAEKAAABCgAAA6oAAAAxAAABCgAAAPwAAAEKAAACUgAAAhUAAAEKAAABCgAAA7IAAAEKXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAQQgIgKgIgEMIgKWAbQgIgKcIEnKcSzPTAAAAOgAAADsAAAAOAAADtgAAA7kAAAC0ogAAAlsAAAJcgH6Af6IAAAO6AAADu4CpgLWAY9kAAAAhAAAAJQAAA74AAAAOAAAAKAAAA78AAAAjAAAA+wAAA8AAAAIlAAACWwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAAA8hfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WApoB+gEOAaoAAgAQIgKrTAAAAOgAAADsAAAAOAAADygAAA9MAAAC0qAAAAnEAAAJyAAACcwAAAnQAAAJ1AAACdgAAAncAAAJ4gIKAg4CEgIWAhoCHgIiAiagAAAPUAAAD1QAAA9YAAAPXAAAD2AAAA9kAAAPaAAAD24CrgKyArYCvgLCAsoCzgLSAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAA7oAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJxAAABCgAAAQoAAAAXAAABCoAAgGCAAICpCAgICIBUgIIICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAA7oAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJyAAABCgAAAQoAAAAXAAABCoAAgACAAICpCAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAP9AAAAFwAAA7oAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgK6AAICpCAgICIBUgIQICIAACNMAAAA6AAAAOwAAAA4AAAQLAAAEDAAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAADugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnQAAAEKAAABCgAAABcAAAEKgACAYIAAgKkICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABB8AAAAXAAADugAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAsYAAgKkICAgIgFSAhggIgAAICd8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAA7oAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ2AAABCgAAAQoAAAAXAAABCoAAgGCAAICpCAgICIBUgIcICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAA7oAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ3AAABCgAAAQoAAAAXAAABCoAAgACAAICpCAgICIBUgIgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAA7oAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ4AAABCgAAAQoAAAAXAAABCoAAgGCAAICpCAgICIBUgIkICIAACNkAAAAhAAAAJQAABFsAAAAOAAAAKAAABFwAAAAjAAAA+wAABF0AAAIlAAACXAAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAABGVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WApoB/gEOAaoAAgAQIgLbTAAAAOgAAADsAAAAOAAAEZwAABG8AAAC0pwAAAxUAAAMWAAADFwAAAxgAAAMZAAADGgAAAxuAlYCWgJeAmICZgJqAm6cAAARwAAAEcQAABHIAAARzAAAEdAAABHUAAAR2gLeAuIC5gLqAu4C8gL6AY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAA7sAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMVAAABCgAAAQoAAAAXAAABCoAAgACAAIC1CAgICIBUgJUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAAA7sAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMWAAABCgAAAQoAAAAXAAABCoAAgGCAAIC1CAgICIBUgJYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAA7sAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMXAAABCgAAAQoAAAAXAAABCoAAgACAAIC1CAgICIBUgJcICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAANbAAAAFwAAA7sAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMYAAABCgAAAQoAAAAXAAABCoAAgKCAAIC1CAgICIBUgJgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAA7sAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMZAAABCgAAAQoAAAAXAAABCoAAgACAAIC1CAgICIBUgJkICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAATFAAAAFwAAA7sAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMaAAABCgAAAQoAAAAXAAABCoAAgL2AAIC1CAgICIBUgJoICIAACF8QD1NlZWRUcmFuc2Zvcm1lct8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAA7sAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMbAAABCgAAAQoAAAAXAAABCoAAgACAAIC1CAgICIBUgJsICIAACN8QEgAAAUAAAAFBAAABQgAABOMAAAAhAAABRAAAAUUAAATkAAAAIwAAAUMAAATlAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAAACkAAAB5AAABCgAAAQoAAATtAAAAMQAAAQoAAAD8AAABCgAAAlIAAAIWAAABCgAAAQoAAAT1AAABCl8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgEEICIDBCIBDCIClgG4ICIDACBJ+b9Dq0wAAADoAAAA7AAAADgAABPkAAAT8AAAAtKIAAAJbAAACXIB+gH+iAAAE/QAABP6AwoDNgGPZAAAAIQAAACUAAAUBAAAADgAAACgAAAUCAAAAIwAAAPsAAAUDAAACJgAAAlsAAAD8AAABGwAAABcAAAApAAAAMQAAAQoAAAULXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgL+AfoBDgGqAAIAECIDD0wAAADoAAAA7AAAADgAABQ0AAAUWAAAAtKgAAAJxAAACcgAAAnMAAAJ0AAACdQAAAnYAAAJ3AAACeICCgIOAhICFgIaAh4CIgImoAAAFFwAABRgAAAUZAAAFGgAABRsAAAUcAAAFHQAABR6AxIDFgMaAyIDJgMqAy4DMgGPfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAABtgAAABcAAAT9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcQAAAQoAAAEKAAAAFwAAAQqAAIBggACAwggICAiAVICCCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAFwAAABcAAAT9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcgAAAQoAAAEKAAAAFwAAAQqAAIAAgACAwggICAiAVICDCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAFQAAAABcAAAT9AAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAACcwAAAQoAAAEKAAAAFwAAAQqAAIDHgACAwggICAiAVICECAiAAAjTAAAAOgAAADsAAAAOAAAFTgAABU8AAAC0oKCAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAABP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ0AAABCgAAAQoAAAAXAAABCoAAgGCAAIDCCAgICIBUgIUICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAABP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ1AAABCgAAAQoAAAAXAAABCoAAgGCAAIDCCAgICIBUgIYICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAABP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ2AAABCgAAAQoAAAAXAAABCoAAgGCAAIDCCAgICIBUgIcICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAABP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ3AAABCgAAAQoAAAAXAAABCoAAgACAAIDCCAgICIBUgIgICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAABP0AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJ4AAABCgAAAQoAAAAXAAABCoAAgGCAAIDCCAgICIBUgIkICIAACNkAAAAhAAAAJQAABZ0AAAAOAAAAKAAABZ4AAAAjAAAA+wAABZ8AAAImAAACXAAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAABadfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAv4B/gEOAaoAAgAQIgM7TAAAAOgAAADsAAAAOAAAFqQAABbEAAAC0pwAAAxUAAAMWAAADFwAAAxgAAAMZAAADGgAAAxuAlYCWgJeAmICZgJqAm6cAAAWyAAAFswAABbQAAAW1AAAFtgAABbcAAAW4gM+A0YDSgNOA1YDWgNeAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAW8AAAAFwAABP4AAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAMVAAABCgAAAQoAAAAXAAABCoAAgNCAAIDNCAgICIBUgJUICIAACFEw3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAE/gAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxYAAAEKAAABCgAAABcAAAEKgACAYIAAgM0ICAgIgFSAlggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABbwAAAAXAAAE/gAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxcAAAEKAAABCgAAABcAAAEKgACA0IAAgM0ICAgIgFSAlwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABeoAAAAXAAAE/gAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxgAAAEKAAABCgAAABcAAAEKgACA1IAAgM0ICAgIgFSAmAgIgAAIEQEs3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAE/gAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxkAAAEKAAABCgAAABcAAAEKgACAAIAAgM0ICAgIgFSAmQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAE/gAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxoAAAEKAAABCgAAABcAAAEKgACAAIAAgM0ICAgIgFSAmggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAE/gAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxsAAAEKAAABCgAAABcAAAEKgACAAIAAgM0ICAgIgFSAmwgIgAAI3xASAAABQAAAAUEAAAFCAAAGJgAAACEAAAFEAAABRQAABicAAAAjAAABQwAABigAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAAKQAAAHkAAAEKAAABCgAABjAAAAAxAAABCgAAAPwAAAEKAAACUgAAAhcAAAEKAAABCgAABjgAAAEKXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAQQgIgNoIgEMIgKWAbwgIgNkIEm8sVpLTAAAAOgAAADsAAAAOAAAGPAAABj8AAAC0ogAAAlsAAAJcgH6Af6IAAAZAAAAGQYDbgOaAY9kAAAAhAAAAJQAABkQAAAAOAAAAKAAABkUAAAAjAAAA+wAABkYAAAInAAACWwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgAABk5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WA2IB+gEOAaoAAgAQIgNzTAAAAOgAAADsAAAAOAAAGUAAABlkAAAC0qAAAAnEAAAJyAAACcwAAAnQAAAJ1AAACdgAAAncAAAJ4gIKAg4CEgIWAhoCHgIiAiagAAAZaAAAGWwAABlwAAAZdAAAGXgAABl8AAAZgAAAGYYDdgN6A34DhgOKA44DkgOWAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAABkAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJxAAABCgAAAQoAAAAXAAABCoAAgGCAAIDbCAgICIBUgIIICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAAXAAAAFwAABkAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJyAAABCgAAAQoAAAAXAAABCoAAgACAAIDbCAgICIBUgIMICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAaDAAAAFwAABkAAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAAAJzAAABCgAAAQoAAAAXAAABCoAAgOCAAIDbCAgICIBUgIQICIAACNMAAAA6AAAAOwAAAA4AAAaRAAAGkgAAALSgoIBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnQAAAEKAAABCgAAABcAAAEKgACAYIAAgNsICAgIgFSAhQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnUAAAEKAAABCgAAABcAAAEKgACAYIAAgNsICAgIgFSAhggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAnYAAAEKAAABCgAAABcAAAEKgACAYIAAgNsICAgIgFSAhwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAncAAAEKAAABCgAAABcAAAEKgACAAIAAgNsICAgIgFSAiAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQAAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAngAAAEKAAABCgAAABcAAAEKgACAYIAAgNsICAgIgFSAiQgIgAAI2QAAACEAAAAlAAAG4AAAAA4AAAAoAAAG4QAAACMAAAD7AAAG4gAAAicAAAJcAAAA/AAAARsAAAAXAAAAKQAAADEAAAEKAAAG6l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYDYgH+AQ4BqgACABAiA59MAAAA6AAAAOwAAAA4AAAbsAAAG9AAAALSnAAADFQAAAxYAAAMXAAADGAAAAxkAAAMaAAADG4CVgJaAl4CYgJmAmoCbpwAABvUAAAb2AAAG9wAABvgAAAb5AAAG+gAABvuA6IDpgOqA64DsgO2A7oBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABbwAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxUAAAEKAAABCgAAABcAAAEKgACA0IAAgOYICAgIgFSAlQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxYAAAEKAAABCgAAABcAAAEKgACAYIAAgOYICAgIgFSAlggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABbwAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxcAAAEKAAABCgAAABcAAAEKgACA0IAAgOYICAgIgFSAlwgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAABeoAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxgAAAEKAAABCgAAABcAAAEKgACA1IAAgOYICAgIgFSAmAgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxkAAAEKAAABCgAAABcAAAEKgACAAIAAgOYICAgIgFSAmQgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAAxoAAAEKAAABCgAAABcAAAEKgACAAIAAgOYICAgIgFSAmggIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAABcAAAAXAAAGQQAAAQoAAAEKAAA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AAQoAAAEKAAAAFwAAAQqAAIEB84AAgQufCAgICIBUgQHtCAiAAAjfEA8AAAFAAAABQQAAAUIAAAAhAAABQwAAAUQAAAFFAAAAIwAAAUYAAAAOAAAAJQAAAUcAAAFIAAAAKAAAAUkAAAAXAAAAmwAAABcAAJEzAAABCgAAAQoAAAEKAAAAMQAAAQoAAAFSAAAUwQAAAQoAAAEKAAAAFwAAAQqAAIELpYAAgQufCAgICIBUgQHuCAiAAAjfEBQAAAD7AACSLAAAki0AAJIuAACSLwAAkjAAAJIxAAAAIQAAAA4AAJIyAAAAJQAAkjMAAAAoAACSNAAAkjUAAJI2AACSNwAAkjgAAJI5AAAAIwAABCwAAAD8AAAA/AAAkj0AAAApAAABAgAAAPwAAAAUAAABBQAAACkAAABfAACSRQAAkkYAAAApAAAAKQAAAPwAAJJKAACSSwAAAQIAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYBDgEOBC6eABIEDEYBDgAKBAxOABIAogQ6CgQumgASABIBDgQu4gQ6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AABcAAJMZAAAAFwAAoqcAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTEAAABCgAAAQoAAAAXAAABCoAAgQzAgACBDPcICAgIgFSBAfEICIAACNIAAAA7AAAADgAAo80AAAFaoQAAo86BDQGAU9cAAAAOAAAAJQAAo9EAAAAhAAAAKAAAo9IAAAAjAACj0wAAABcAAACHAAAAhwAAo9cAAACtAAAAMVlfc3BlY2lmaWNYX2dlbmVyYWyBDeuAAIEM1IEM1IENAoENAxMAAAABKiDez98QFAAAAPsAAKPbAACj3AAAo90AAKPeAACj3wAAo+AAAAAhAAAADgAAo+EAAAAlAACj4gAAACgAAKPjAACj5AAAo+UAAKPmAACj5wAAo+gAAAAjAAAELAAAAPwAAAD8AACj7AAAACkAAAECAAAA/AAAABQAAAEFAAAAKQAAAHEAAKP0AACj9QAAACkAAAApAAAA/AAAo/kAAKP6AAABAgAAADFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgEOAQ4ENBYAEgQMRgEO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A08UAANPGAADTxwAA08gAANPJAADTygAA08uBELKBELOBELSBELWBELaBELeBELiAY98QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAABTXAAAAFwAA0xEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABS+AAABCgAAAQoAAAAXAAABCoAAgQHzgACBELAICAgIgFSBAesICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAABqsAAAAFwAA0xEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABS/AAABCgAAAQoAAAAXAAABCoAAgQJpgACBELAICAgIgFSBAewICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAABqsAAAAFwAA0xEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTAAAABCgAAAQoAAAAXAAABCoAAgQJpgACBELAICAgIgFSBAe0ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAACxAAAAFwAA0xEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTBAAABCgAAAQoAAAAXAAABCoAAgQtxgACBELAICAgIgFSBAe4ICIAACN8QDwAAAUAAAAFBAAABQgAAACEAAAFDAAABRAAAAUUAAAAjAAABRgAAAA4AAAAlAAABRwAAAUgAAAAoAAABSQAAABcAAAG2AAAAFwAA0xEAAAEKAAABCgAAAQoAAAAxAAABCgAAAVIAABTCAAABCgAAAQoAAAAXAAABCoAAgGCAAIEQsAgICAiAVIEB7wgIgAAI3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwAAAbYAAAAXAADTEQAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMMAAAEKAAABCgA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JAAAAFwAAXi8AAAAXAAD+FgAAAQoAAAEKAAABCgAAADEAAAEKAAABUgAAFMQAAAEKAAABCgAAABcAAAEKgACBE7eAAIET7ggICAiAVIEB8QgIgAAI0gAAADsAAAAOAAD/PAAAAVqhAAD/PYET+IBT1wAAAA4AAAAlAACj0QAAACEAAAAoAACj0gAAACMAAKPTAAAAFwAAAKUAAAClAAD/RAAAAKoAAAAxgQ3rgACBE8uBE8uBE/mBE/oTAAAAASUVJj3fEBQAAAD7AAD/SAAA/0kAAP9KAAD/SwAA/0wAAP9NAAAAIQAAAA4AAP9OAAAAJQAA/08AAAAoAAD/UAAA/1EAAP9SAAD/UwAA/1QAAP9VAAAAIwAABCwAAAD8AAAA/AAA/1kAAAApAAABAgAAAPwAAAAUAAABBQAAACkAAABuAAD/YQAA/2IAAAApAAAAKQAAAPwAAP9mAAD/ZwAAAQIAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYBDgEOBE/yABIEDEYBDgAKBAxOABIA3gRSFgRP7gAS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lZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgEOAQ4EY0oAEgQMRgEOAAoEDE4AEgCSBGSyBGNGABIAEgEOBGOOBGS2BAxES10yMtdMAAAA6AAAAOwAAAA4AAT4oAAE+KgAAALShAAABD4BFoQABPiuBGNOAY9kAAAAhAAAAJQABPi4AAAAOAAAAKAABPi8AAAAjAAAA+wABPjAAAACXAAABDwAAAPwAAAEbAAAAFwAAACkAAAAxAAABCgABPjhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGNCARYBDgGqAAIAECIEY1NMAAAA6AAAAOwAAAA4AAT46AAE+RAAAALSpAAABIgAAASMAAAEkAAABJQAAASYAAAEnAAABKAAAASkAAAEqgEiASYBKgEuATIBNgE6AT4BQqQABPkUAAT5GAAE+RwABPkgAAT5JAAE+SgABPksAAT5MAAE+TYEY1YEY14EY2IEY2oEY24EY3YEY3oEY4IEY4YBj3xAPAAABQAAAAUEAAAFCAAAAIQAAAUMAAAFEAAABRQAAACMAAAFGAAAADgAAACUAAAFHAAABSAAAACgAAAFJAAAAFwABPlEAAAAXAAE+KwAAAQoAAAEKAAABCgA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AAKRrAACkbQAApJIAAKSUAACklgAApJgAAKSaAACknAAApJ4AAKSgAACkogAApKQAAKSmAACkvAAApM8AAKTrAAClCAAApSQAAKU4AAClSgAApWAAAKV5AACl9AAApfoAAKYDAACmEAAAphwAAKYmAACmMAAApjsAAKZGAACmUwAAplsAAKZdAACmXwAApmEAAKZjAACmZAAApmUAAKZmAACmZwAApmkAAKZrAACmbAAApm0AAKZvAACmcAAApoEAAKaCAACmhAAAppUAAKagAACmqQAAprgAAKbFAACmzQAAptYAAKbnAACm+gAApwsAAKceAACnNQAAp0cAAKfCAACnxAAAp8YAAKfIAACnygAAp8sAAKfMAACnzQAAp84AAKfQAACn0gAAp9MAAKfUAACn1gAAp9cAAKhSAACoVAAAqFYAAKhYAACoWgAAqFsAAKhcAACoXQAAqF4AAKhgAACoYgAAqGMAAKhkAACoZgAAqGcAAKh4AACofQAAqH8AAKiBAACokgAAqJ8AAKihAACoowAAqKUAAKinAACougAAqNEAAKjjAACpXgAAqWAAAKliAACpZAAAqWYAAKlnAACpaAAAqWkAAKlqAACpbAAAqW4AAKlvAACpcAAAqXIAAKlzAACp7gAAqfAAAKnyAACp9AAAqfYAAKn3AACp+AAAqfkAAKn6AACp/AAAqf4AAKn/AACqAAAAqgIAAKoDAACqFAAAqhUAAKoXAACqkgAAqpQAAKqWAACqmAAAqpoAAKqbAACqnAAAqp0AAKqeAACqoAAAqqIAAKqjAACqpAAAqqYAAKqnAACqqAAAqyMAAKslAACrJwAAqykAAKsrAACrLAAAqy0AAKsuAACrLwAAqzEAAKszAACrNAAAqzUAAKs3AACrOAAAq1EAAKtSAACrUwAAq1UAAKtmAACrfAAAq4kAAKuWAACsEQAArBMAAKwVAACsFwAArBkAAKwaAACsGwAArBwAAKwdAACsHwAArCEAAKwiAACsIwAArCUAAKwmAACsVwAArFkAAKxbAACsXQAArF4AAKxgAACsdwAArIgAAKyWAACsrwAArL0AAKzSAACs5gAArP0AAK0PAACtigAArYwAAK2OAACtkAAArZIAAK2TAACtlAAArZUAAK2WAACtmAAArZoAAK2bAACtnAAArZ4AAK2fAACttQAArcYAAK3bAACt+AAArg0AAK4bAACuMAAArkQAAK5bAACubQAAroYAAK7FAACuxwAArskAAK7LAACuzQAArs8AAK7RAACu0wAArtUAAK7XAACu2QAArtsAAK7dAACu3wAAruEAAK7jAACvIgAAryQAAK8mAACvKAAAryoAAK8sAACvLwAArzIAAK81AACvOAAArzsAAK8+AACvQQAAr0QAAK9HAACvSgAAr0wAAK9eAACvcwAAr64AAK/nAACwDwAAsDcAALBOAACwYQAAsHYAALCbAACwuAAAsMQAALDgAACxGwAAsSYAALG5AACx3AAAsfwAALIcAACyHgAAsiAAALIiAACyJAAAsiYAALInAACyKAAAsioAALIrAACyLQAAsi4AALIwAACyMgAAsjMAALI0AACyNgAAsjcAALI8AACyVQAAsl4AALJgAACyYgAAsmsAALJtAACybwAAsnEAALKGAACymwAAsuQAALMIAACzLwAAs1MAALNVAACzVwAAs1kAALNbAACzXQAAs18AALNgAACzYgAAs3sAALOcAACzngAAs6AAALOiAACzpAAAs6YAALOoAACzqgAAs6wAALPNAACzzwAAs9EAALPTAACz1QAAs9cAALPZAACz2wAAs90AALPfAACz/QAAtBsAALQuAAC0QgAAtFcAALR0AAC0iAAAtJ4AALUZAAC1GwAAtR0AALUfAAC1IQAAtSIAALUjAAC1JAAAtSUAALUnAAC1KQAAtSoAALUrAAC1LQAAtS4AALWpAAC1qwAAta0AALWvAAC1sQAAtbIAALWzAAC1tAAAtbUAALW3AAC1uQAAtboAALW7AAC1vQAAtb4AALY5AAC2OwAAtj0AALY/AAC2QQAAtkIAALZDAAC2RAAAtkUAALZHAAC2SQAAtkoAALZLAAC2TQAAtk4AALZnAAC2aAAAtmkAALZrAAC25gAAtugAALbqAAC27AAAtu4AALbvAAC28AAAtvEAALbyAAC29AAAtvYAALb3AAC2+AAAtvoAALb7AAC3dgAAt3gAALd6AAC3fAAAt34AALd/AAC3gAAAt4EAALeCAAC3hAAAt4YAALeHAAC3iAAAt4oAALeLAAC4BgAAuAgAALgKAAC4DAAAuA4AALgPAAC4EAAAuBEAALgSAAC4FAAAuBYAALgXAAC4GAAAuBoAALgbAAC4lgAAuJgAALiaAAC4nAAAuJ4AALifAAC4oAAAuKEAALiiAAC4pAAAuKYAALinAAC4qAAAuKoAALirAAC5JgAAuSgAALkqAAC5LAAAuS4AALkvAAC5MAAAuTEAALkyAAC5NAAAuTYAALk3AAC5OAAAuToAALk7AAC5hAAAuagAALnPAAC58wAAufUAALn3AAC5+QAAufsAALn9AAC5/wAAugAAALoCAAC6GwAAujgAALo6AAC6PAAAuj4AALpAAAC6QgAAukQAALpGAAC6YwAAumUAALpnAAC6aQAAumsAALptAAC6bwAAunEAALpzAAC6kwAAur4AALrYAAC68QAAuwsAALsrAAC7TgAAu8kAALvLAAC7zQAAu88AALvRAAC70gAAu9MAALvUAAC71QAAu9cAALvZAAC72gAAu9sAALvdAAC73gAAvFkAALxbAAC8XQAAvF8AALxhAAC8YgAAvGMAALxkAAC8ZQAAvGcAALxpAAC8agAAvGsAALxtAAC8bgAAvOkAALzrAAC87QAAvO8AALzxAAC88gAAvPMAALz0AAC89QAAvPcAALz5AAC8+gAAvPsAALz9AAC8/gAAvXkAAL17AAC9fQAAvX8AAL2BAAC9ggAAvYMAAL2EAAC9hQAAvYcAAL2JAAC9igAAvYsAAL2NAAC9jgAAvZEAAL4MAAC+DgAAvhAAAL4SAAC+FAAAvhUAAL4WAAC+FwAAvhgAAL4aAAC+HAAAvh0AAL4eAAC+IAAAviEAAL6cAAC+ngAAvqAAAL6iAAC+pAAAvqUAAL6mAAC+pwAAvqgAAL6qAAC+rAAAvq0AAL6uAAC+sAAAvrEAAL7AAAC/OwAAvz0AAL8/AAC/QQAAv0MAAL9EAAC/RQAAv0YAAL9HAAC/SQAAv0sAAL9MAAC/TQAAv08AAL9QAAC/YQAAv28AAL+IAAC/lgAAv6MAAL+2AAC/zQAAv98AAMByAADAlQAAwLUAAMDVAADA1wAAwNkAAMDbAADA3QAAwN8AAMDgAADA4QAAwOMAAMDkAADA5gAAwOcAAMDpAADA6wAAwOwAAMDtAADA7wAAwPAAAMD1AADBDgAAwRcAAMEZAADBGwAAwSQAAMEmAADBKAAAwSoAAMFzAADBlwAAwb4AAMHiAADB5AAAweYAAMHoAADB6gAAwewAAMHuAADB7wAAwfEAAMIKAADCKwAAwi0AAMIvAADCMQAAwjMAAMI1AADCNwAAwjkAAMI7AADCXAAAwl4AAMJgAADCYgAAwmQAAMJmAADCaAAAwmoAAMJsAADCbgAAwukAAMLrAADC7QAAwu8AAMLxAADC8gAAwvMAAML0AADC9QAAwvcAAML5AADC+gAAwvsAAML9AADC/gAAw3kAAMN7AADDfQAAw38AAMOBAADDggAAw4MAAMOEAADDhQAAw4cAAMOJAADDigAAw4sAAMONAADDjgAAxAkAAMQLAADEDQAAxA8AAMQRAADEEgAAxBMAAMQUAADEFQAAxBcAAMQZAADEGgAAxBsAAMQdAADEHgAAxDcAAMQ4AADEOQAAxDsAAMS2AADEuAAAxLoAAMS8AADEvgAAxL8AAMTAAADEwQAAxMIAAMTEAADExgAAxMcAAMTIAADEygAAxMsAAMVGAADFSAAAxUoAAMVMAADFTgAAxU8AAMVQAADFUQAAxVIAAMVUAADFVgAAxVcAAMVYAADFWgAAxVsAAMVcAADF1wAAxdkAAMXbAADF3QAAxd8AAMXgAADF4QAAxeIAAMXjAADF5QAAxecAAMXoAADF6QAAxesAAMXsAADGZwAAxmkAAMZrAADGbQAAxm8AAMZwAADGcQAAxnIAAMZzAADGdQAAxncAAMZ4AADGeQAAxnsAAMZ8AADG9wAAxvkAAMb7AADG/QAAxv8AAMcAAADHAQAAxwIAAMcDAADHBQAAxwcAAMcIAADHCQAAxwsAAMcMAADHVQAAx3kAAMegAADHxAAAx8YAAMfIAADHygAAx8wAAMfOAADH0AAAx9EAAMfTAADH7AAAyAkAAMgLAADIDQAAyA8AAMgRAADIEwAAyBUAAMgXAADINAAAyDYAAMg4AADIOgAAyDwAAMg+AADIQAAAyEIAAMhEAADIvwAAyMEAAMjDAADIxQAAyMcAAMjIAADIyQAAyMoAAMjLAADIzQAAyM8AAMjQAADI0QAAyNMAAMjUAADJTwAAyVEAAMlTAADJVQAAyVcAAMlYAADJWQAAyVoAAMlbAADJXQAAyV8AAMlgAADJYQAAyWMAAMlkAADJ3wAAyeEAAMnjAADJ5QAAyecAAMnoAADJ6QAAyeoAAMnrAADJ7QAAye8AAMnwAADJ8QAAyfMAAMn0AADKbwAAynEAAMpzAADKdQAAyncAAMp4AADKeQAAynoAAMp7AADKfQAAyn8AAMqAAADKgQAAyoMAAMqEAADK/wAAywEAAMsDAADLBQAAywcAAMsIAADLCQAAywoAAMsLAADLDQAAyw8AAMsQAADLEQAAyxMAAMsUAADLjwAAy5EAAMuTAADLlQAAy5cAAMuYAADLmQAAy5oAAMubAADLnQAAy58AAMugAADLoQAAy6MAAMukAADLtgAAzDEAAMwzAADMNQAAzDcAAMw5AADMOgAAzDsAAMw8AADMPQAAzD8AAMxBAADMQgAAzEMAAMxFAADMRgAAzNkAAMz8AADNHAAAzTwAAM0+AADNQAAAzUIAAM1EAADNRgAAzUcAAM1IAADNSgAAzUsAAM1NAADNTgAAzVAAAM1SAADNUwAAzVQAAM1WAADNVwAAzVwAAM11AADNfgAAzYAAAM2CAADNiwAAzY0AAM2PAADNkQAAzdoAAM3+AADOJQAAzkkAAM5LAADOTQAAzk8AAM5RAADOUwAAzlUAAM5WAADOWAAAznEAAM6SAADOlAAAzpYAAM6YAADOmgAAzpwAAM6eAADOoAAAzqIAAM7DAADOxQAAzscAAM7JAADOywAAzs0AAM7PAADO0QAAztMAAM7VAADPUAAAz1IAAM9UAADPVgAAz1gAAM9ZAADPWgAAz1sAAM9cAADPXgAAz2AAAM9hAADPYgAAz2QAAM9lAADP4AAAz+IAAM/kAADP5gAAz+gAAM/pAADP6gAAz+sAAM/sAADP7gAAz/AAAM/xAADP8gAAz/QAAM/1AADQcAAA0HIAANB0AADQdgAA0HgAANB5AADQegAA0HsAANB8AADQfgAA0IAAANCBAADQggAA0IQAANCFAADQngAA0J8AANCgAADQogAA0R0AANEfAADRIQAA0SMAANElAADRJgAA0ScAANEoAADRKQAA0SsAANEtAADRLgAA0S8AANExAADRMgAA0a0AANGvAADRsQAA0bMAANG1AADRtgAA0bcAANG4AADRuQAA0bsAANG9AADRvgAA0b8AANHBAADRwgAA0j0AANI/AADSQQAA0kMAANJFAADSRgAA0kcAANJIAADSSQAA0ksAANJNAADSTgAA0k8AANJRAADSUgAA0s0AANLPAADS0QAA0tMAANLVAADS1gAA0tcAANLYAADS2QAA0tsAANLdAADS3gAA0t8AANLhAADS4gAA010AANNfAADTYQAA02MAANNlAADTZgAA02cAANNoAADTaQAA02sAANNtAADTbgAA028AANNxAADTcgAA07sAANPfAADUBgAA1CoAANQsAADULgAA1DAAANQyAADUNAAA1DYAANQ3AADUOQAA1FIAANRvAADUcQAA1HMAANR1AADUdwAA1HkAANR7AADUfQAA1JoAANScAADUngAA1KAAANSiAADUpAAA1KYAANSoAADUqgAA1SUAANUnAADVKQAA1SsAANUtAADVLgAA1S8AANUwAADVMQAA1TMAANU1AADVNgAA1TcAANU5AADVOgAA1TwAANW3AADVuQAA1bsAANW9AADVvwAA1cAAANXBAADVwgAA1cMAANXFAADVxwAA1cgAANXJAADVywAA1cwAANZHAADWSQAA1ksAANZNAADWTwAA1lAAANZRAADWUgAA1lMAANZVAADWVwAA1lgAANZZAADWWwAA1lwAANbXAADW2QAA1tsAANbdAADW3wAA1uAAANbhAADW4gAA1uMAANblAADW5wAA1ugAANbpAADW6wAA1uwAANbvAADXagAA12wAANduAADXcAAA13IAANdzAADXdAAA13UAANd2AADXeAAA13oAANd7AADXfAAA134AANd/AADX+gAA1/wAANf+AADYAAAA2AIAANgDAADYBAAA2AUAANgGAADYCAAA2AoAANgLAADYDAAA2A4AANgPAADYigAA2IwAANiOAADYkAAA2JIAANiTAADYlAAA2JUAANiWAADYmAAA2JoAANibAADYnAAA2J4AANifAADZMgAA2VUAANl1AADZlQAA2ZcAANmZAADZmwAA2Z0AANmfAADZoAAA2aEAANmjAADZpAAA2aYAANmnAADZqQAA2asAANmsAADZrQAA2a8AANmwAADZtQAA2c4AANnXAADZ2QAA2dsAANnkAADZ5gAA2egAANnqAADaMwAA2lcAANp+AADaogAA2qQAANqmAADaqAAA2qoAANqsAADargAA2q8AANqxAADaygAA2usAANrtAADa7wAA2vEAANrzAADa9QAA2vcAANr5AADa+wAA2xwAANseAADbIAAA2yIAANskAADbJgAA2ygAANsqAADbLAAA2y4AANupAADbqwAA260AANuvAADbsQAA27IAANuzAADbtAAA27UAANu3AADbuQAA27oAANu7AADbvQAA274AANw5AADcOwAA3D0AANw/AADcQQAA3EIAANxDAADcRAAA3EUAANxHAADcSQAA3EoAANxLAADcTQAA3E4AANzJAADcywAA3M0AANzPAADc0QAA3NIAANzTAADc1AAA3NUAANzXAADc2QAA3NoAANzbAADc3QAA3N4AANz3AADc+AAA3PkAANz7AADddgAA3XgAAN16AADdfAAA3X4AAN1/AADdgAAA3YEAAN2CAADdhAAA3YYAAN2HAADdiAAA3YoAAN2LAADeBgAA3ggAAN4KAADeDAAA3g4AAN4PAADeEAAA3hEAAN4SAADeFAAA3hYAAN4XAADeGAAA3hoAAN4bAADelgAA3pgAAN6aAADenAAA3p4AAN6fAADeoAAA3qEAAN6iAADepAAA3qYAAN6nAADeqAAA3qoAAN6rAADfJgAA3ygAAN8qAADfLAAA3y4AAN8vAADfMAAA3zEAAN8yAADfNAAA3zYAAN83AADfOAAA3zoAAN87AADftgAA37gAAN+6AADfvAAA374AAN+/AADfwAAA38EAAN/CAADfxAAA38YAAN/HAADfyAAA38oAAN/LAADgFAAA4DgAAOBfAADggwAA4IUAAOCHAADgiQAA4IsAAOCNAADgjwAA4JAAAOCSAADgqwAA4MgAAODKAADgzAAA4M4AAODQAADg0gAA4NQAAODWAADg8wAA4PUAAOD3AADg+QAA4PsAAOD9AADg/wAA4QEAAOEDAADhfgAA4YAAAOGCAADhhAAA4YYAAOGHAADhiAAA4YkAAOGKAADhjAAA4Y4AAOGPAADhkAAA4ZIAAOGTAADiDgAA4hAAAOISAADiFAAA4hYAAOIXAADiGAAA4hkAAOIaAADiHAAA4h4AAOIfAADiIAAA4iIAAOIjAADingAA4qAAAOKiAADipAAA4qYAAOKnAADiqAAA4qkAAOKqAADirAAA4q4AAOKvAADisAAA4rIAAOKzAADjLgAA4zAAAOMyAADjNAAA4zYAAOM3AADjOAAA4zkAAOM6AADjPAAA4z4AAOM/AADjQAAA40IAAONDAADjvgAA48AAAOPCAADjxAAA48YAAOPHAADjyAAA48kAAOPKAADjzAAA484AAOPPAADj0AAA49IAAOPTAADkTgAA5FAAAORSAADkVAAA5FYAAORXAADkWAAA5FkAAORaAADkXAAA5F4AAORfAADkYAAA5GIAAORjAADk3gAA5OAAAOTiAADk5AAA5OYAAOTnAADk6AAA5OkAAOTqAADk7AAA5O4AAOTvAADk8AAA5PIAAOTzAADlhgAA5akAAOXJAADl6QAA5esAAOXtAADl7wAA5fEAAOXzAADl9AAA5fUAAOX3AADl+AAA5foAAOX7AADl/QAA5f8AAOYAAADmAQAA5gMAAOYEAADmCQAA5iIAAOYrAADmLQAA5i8AAOY4AADmOgAA5jwAAOY+AADmhwAA5qsAAObSAADm9gAA5vgAAOb6AADm/AAA5v4AAOcAAADnAgAA5wMAAOcFAADnHgAA5z8AAOdBAADnQwAA50UAAOdHAADnSQAA50sAAOdNAADnTwAA53AAAOdyAADndAAA53YAAOd4AADnegAA53wAAOd+AADngAAA54IAAOf9AADn/wAA6AEAAOgDAADoBQAA6AYAAOgHAADoCAAA6AkAAOgLAADoDQAA6A4AAOgPAADoEQAA6BIAAOiNAADojwAA6JEAAOiTAADolQAA6JYAAOiXAADomAAA6JkAAOibAADonQAA6J4AAOifAADooQAA6KIAAOkdAADpHwAA6SEAAOkjAADpJQAA6SYAAOknAADpKAAA6SkAAOkrAADpLQAA6S4AAOkvAADpMQAA6TIAAOlLAADpTAAA6U0AAOlPAADpygAA6cwAAOnOAADp0AAA6dIAAOnTAADp1AAA6dUAAOnWAADp2AAA6doAAOnbAADp3AAA6d4AAOnfAADqWgAA6lwAAOpeAADqYAAA6mIAAOpjAADqZAAA6mUAAOpmAADqaAAA6moAAOprAADqbAAA6m4AAOpvAADq6gAA6uwAAOruAADq8AAA6vIAAOrzAADq9AAA6vUAAOr2AADq+AAA6voAAOr7AADq/AAA6v4AAOr/AADregAA63wAAOt+AADrgAAA64IAAOuDAADrhAAA64UAAOuGAADriAAA64oAAOuLAADrjAAA644AAOuPAADsCgAA7AwAAOwOAADsEAAA7BIAAOwTAADsFAAA7BUAAOwWAADsGAAA7BoAAOwbAADsHAAA7B4AAOwfAADsaAAA7IwAAOyzAADs1wAA7NkAAOzbAADs3QAA7N8AAOzhAADs4wAA7OQAAOzmAADs/wAA7RwAAO0eAADtIAAA7SI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AAQdoAAEHagABB20AAQduAAEHbwABB3AAAQdxAAEHcwABB3UAAQd2AAEHdwABB3kAAQd6AAEH9QABB/cAAQf5AAEH+wABB/4AAQf/AAEIAAABCAEAAQgCAAEIBAABCAYAAQgHAAEICAABCAoAAQgLAAEIhgABCIgAAQiKAAEIjAABCI8AAQiQAAEIkQABCJIAAQiTAAEIlQABCJcAAQiYAAEImQABCJsAAQicAAEJFwABCRkAAQkbAAEJHQABCSAAAQkhAAEJIgABCSMAAQkkAAEJJgABCSgAAQkpAAEJKgABCSwAAQktAAEJqAABCaoAAQmtAAEJrwABCbIAAQmzAAEJtAABCbUAAQm2AAEJuAABCboAAQm7AAEJvAABCb4AAQm/AAEJ3gABClkAAQpbAAEKXQABCl8AAQpiAAEKYwABCmQAAQplAAEKZgABCmgAAQpqAAEKawABCmwAAQpuAAEKbwABCwIAAQslAAELRQABC2UAAQtnAAELaQABC2sAAQttAAELbwABC3AAAQtxAAELdAABC3UAAQt3AAELeAABC3oAAQt8AAELfQABC34AAQuBAAELggABC4cAAQugAAELqQABC6sAAQutAAELtgABC7kAAQu8AAELvgABDAcAAQwrAAEMUgABDHYAAQx5AAEMewABDH0AAQx/AAEMgQABDIMAAQyEAAEMhwABDKAAAQzBAAEMwwABDMUAAQzHAAEMyQABDMsAAQzNAAEMzwABDNEAAQzyAAEM9QABDPgAAQz7AAEM/gABDQEAAQ0EAAENBwABDQoAAQ0MAAENhwABDYkAAQ2LAAENjQABDZAAAQ2RAAENkgABDZMAAQ2UAAENlgABDZgAAQ2ZAAENmgABDZwAAQ2dAAEOGAABDhoAAQ4cAAEOHgABDiEAAQ4iAAEOIwABDiQAAQ4lAAEOJwABDikAAQ4qAAEOKwABDi0AAQ4uAAEOqQABDqsAAQ6uAAEOsAABDrMAAQ60AAEOtQABDrYAAQ63AAEOuQABDrsAAQ68AAEOvQABDr8AAQ7AAAEO2QABDtoAAQ7bAAEO3QABD1gAAQ9aAAEPXAABD14AAQ9hAAEPYgABD2MAAQ9kAAEPZQABD2cAAQ9pAAEPagABD2sAAQ9tAAEPbgABD+kAAQ/rAAEP7QABD+8AAQ/yAAEP8wABD/QAAQ/1AAEP9gABD/gAAQ/6AAEP+wABD/wAAQ/+AAEP/wABEHoAARB8AAEQfgABEIAAARCDAAEQhAABEIUAARCGAAEQhwABEIkAARCLAAEQjAABEI0AARCPAAEQkAABEQsAARENAAERDwABEREAAREUAAERFQABERYAAREXAAERGAABERoAAREcAAERHQABER4AAREgAAERIQABEZwAARGeAAERoAABEaIAARGlAAERpgABEacAARGoAAERqQABEasAARGtAAERrgABEa8AARGxAAERsgABEfsAARIfAAESRgABEmoAARJtAAESbwABEnEAARJzAAESdQABEncAARJ4AAESewABEpQAARKxAAESswABErUAARK3AAESuQABErsAARK9AAESvwABEtwAARLfAAES4gABEuUAARLoAAES6wABEu4AARLxAAES8wABE24AARNwAAETcgABE3QAARN3AAETeAABE3kAARN6AAETewABE30AARN/AAETgAABE4EAARODAAEThAABE/8AARQBAAEUAwABFAUAARQIAAEUCQABFAoAARQLAAEUDAABFA4AARQQAAEUEQABFBIAARQUAAEUFQABFJAAARSSAAEUlAABFJYAARSZAAEUmgABFJsAARScAAEUnQABFJ8AARShAAEUogABFKMAARSlAAEUpgABFSEAARUjAAEVJQABFScAARUqAAEVKwABFSwAARUtAAEVLgABFTAAARUyAAEVMwABFTQAARU2AAEVNwABFbIAARW0AAEVtgABFbgAARW7AAEVvAABFb0AARW+AAEVvwABFcEAARXDAAEVxAABFcUAARXHAAEVyAABFkMAARZFAAEWSAABFkoAARZNAAEWTgABFk8AARZQAAEWUQABFlMAARZVAAEWVgABFlcAARZZAAEWWgABFmkAARbkAAEW5gABFugAARbqAAEW7QABFu4AARbvAAEW8AABFvEAARbzAAEW9QABFvYAARb3AAEW+QABFvoAAReNAAEXsAABF9AAARfwAAEX8gABF/QAARf2AAEX+AABF/oAARf7AAEX/AABF/8AARgAAAEYAgABGAMAARgFAAEYBwABGAgAARgJAAEYDAABGA0AARgSAAEYKwABGDQAARg2AAEYOAABGEEAARhEAAEYRwABGEkAARiSAAEYtgABGN0AARkBAAEZBAABGQYAARkIAAEZCgABGQwAARkOAAEZDwABGRIAARkrAAEZTAABGU4AARlQAAEZUgABGVQAARlWAAEZWAABGVoAARlcAAEZfQABGYAAARmDAAEZhgABGYkAARmMAAEZjwABGZIAARmVAAEZlwABGhIAARoUAAEaFgABGhgAARobAAEaHAABGh0AARoeAAEaHwABGiEAARojAAEaJAABGiUAARonAAEaKAABGqMAARqlAAEapwABGqkAARqsAAEarQABGq4AARqvAAEasAABGrIAARq0AAEatQABGrYAARq4AAEauQABGzQAARs2AAEbOQABGzsAARs+AAEbPwABG0AAARtBAAEbQgABG0QAARtGAAEbRwABG0gAARtKAAEbSwABG2QAARtlAAEbZgABG2gAARvjAAEb5QABG+cAARvpAAEb7AABG+0AARvuAAEb7wABG/AAARvyAAEb9AABG/UAARv2AAEb+AABG/kAARx0AAEcdgABHHgAARx6AAEcfQABHH4AARx/AAEcgAABHIEAARyDAAEchQABHIYAARyHAAEciQABHIoAAR0FAAEdBwABHQkAAR0LAAEdDgABHQ8AAR0QAAEdEQABHRIAAR0UAAEdFgABHRcAAR0YAAEdGgABHRsAAR2WAAEdmAABHZoAAR2cAAEdnwABHaAAAR2hAAEdogABHaMAAR2lAAEdpwABHagAAR2pAAEdqwABHawAAR4nAAEeKQABHisAAR4tAAEeMAABHjEAAR4yAAEeMwABHjQAAR42AAEeOAABHjkAAR46AAEePAABHj0AAR6GAAEeqgABHtEAAR71AAEe+AABHvoAAR78AAEe/gABHwAAAR8CAAEfAwABHwYAAR8fAAEfPAABHz4AAR9AAAEfQgABH0QAAR9GAAEfSAABH0oAAR9nAAEfagABH20AAR9wAAEfcwABH3YAAR95AAEffAABH34AAR/5AAEf+wABH/0AAR//AAEgAgABIAMAASAEAAEgBQABIAYAASAIAAEgCgABIAsAASAMAAEgDgABIA8AASCKAAEgjAABII4AASCQAAEgkwABIJQAASCVAAEglgABIJcAASCZAAEgmwABIJwAASCdAAEgnwABIKAAASEbAAEhHQABIR8AASEhAAEhJAABISUAASEmAAEhJwABISgAASEqAAEhLAABIS0AASEuAAEhMAABITEAASGsAAEhrgABIbAAASGyAAEhtQABIbYAASG3AAEhuAABIbkAASG7AAEhvQABIb4AASG/AAEhwQABIcIAASI9AAEiPwABIkEAASJDAAEiRgABIkcAASJIAAEiSQABIkoAASJMAAEiTgABIk8AASJQAAEiUgABIlMAASLOAAEi0AABItIAASLUAAEi1wABItgAASLZAAEi2gABItsAASLdAAEi3wABIuAAASLhAAEi4wABIuQAASNfAAEjYQABI2MAASNlAAEjaAABI2kAASNqAAEjawABI2wAASNuAAEjcAABI3EAASNyAAEjdAABI3UAASQIAAEkKwABJEsAASRrAAEkbQABJG8AASRxAAEkcwABJHUAASR2AAEkdwABJHoAASR7AAEkfQABJH4AASSAAAEkggABJIMAASSEAAEkhwABJIgAASSNAAEkpgABJK8AASSxAAEkswABJLwAASS/AAEkwgABJMQAASUNAAElMQABJVgAASV8AAElfwABJYEAASWDAAElhQABJYcAASWJAAEligABJY0AASWmAAElxwABJckAASXLAAElzQABJc8AASXRAAEl0wABJdUAASXXAAEl+AABJfsAASX+AAEmAQABJgQAASYHAAEmCgABJg0AASYQAAEmEgABJo0AASaPAAEmkQABJpMAASaWAAEmlwABJpgAASaZAAEmmgABJpwAASaeAAEmnwABJqAAASaiAAEmowABJx4AAScgAAEnIgABJyQAAScnAAEnKAABJykAAScqAAEnKwABJy0AAScvAAEnMAABJzEAASczAAEnNAABJ68AASexAAEntAABJ7YAASe5AAEnugABJ7sAASe8AAEnvQABJ78AASfBAAEnwgABJ8MAASfFAAEnxgABJ98AASfgAAEn4QABJ+MAASheAAEoYAABKGIAAShkAAEoZwABKGgAAShpAAEoagABKGsAAShtAAEobwABKHAAAShxAAEocwABKHQAASjvAAEo8QABKPMAASj1AAEo+AABKPkAASj6AAEo+wABKPwAASj+AAEpAAABKQEAASkCAAEpBAABKQUAASmAAAEpggABKYQAASmGAAEpiQABKYoAASmLAAEpjAABKY0AASmPAAEpkQABKZIAASmTAAEplQABKZYAASoRAAEqEwABKhUAASoXAAEqGgABKhsAASocAAEqHQABKh4AASogAAEqIgABKiMAASokAAEqJgABKicAASqiAAEqpAABKqYAASqoAAEqqwABKqwAASqtAAEqrgABKq8AASqxAAEqswABKrQAASq1AAEqtwABKrgAASsBAAErJQABK0wAAStwAAErcwABK3UAASt3AAEreQABK3sAASt9AAErfgABK4EAASuaAAErtwABK7kAASu7AAErvQABK78AASvBAAErwwABK8UAASviAAEr5QABK+gAASvrAAEr7gABK/EAASv0AAEr9wABK/kAASx0AAEsdgABLHgAASx6AAEsfQABLH4AASx/AAEsgAABLIEAASyDAAEshQABLIYAASyHAAEsiQABLIoAAS0FAAEtBwABLQkAAS0LAAEtDgABLQ8AAS0QAAEtEQABLRIAAS0UAAEtFgABLRcAAS0YAAEtGgABLRsAAS2WAAEtmAABLZoAAS2cAAEtnwABLaAAAS2hAAEtogABLaMAAS2lAAEtpwABLagAAS2pAAEtqwABLawAAS4nAAEuKQABLisAAS4tAAEuMAABLjEAAS4yAAEuMwABLjQAAS42AAEuOAABLjkAAS46AAEuPAABLj0AAS64AAEuugABLrwAAS6+AAEuwQABLsIAAS7DAAEuxAABLsUAAS7HAAEuyQABLsoAAS7LAAEuzQABLs4AAS9JAAEvSwABL00AAS9PAAEvUgABL1MAAS9UAAEvVQABL1YAAS9YAAEvWgABL1sAAS9cAAEvXgABL18AAS/aAAEv3AABL94AAS/gAAEv4wABL+QAAS/lAAEv5gABL+cAAS/pAAEv6wABL+wAAS/tAAEv7wABL/AAATCDAAEwpgABMMYAATDmAAEw6AABMOoAATDsAAEw7gABMPAAATDxAAEw8gABMPUAATD2AAEw+AABMPkAATD7AAEw/QABMP4AATD/AAExAgABMQMAATEIAAExIQABMSoAATEsAAExLgABMTcAATE6AAExPQABMT8AATGIAAExrAABMdMAATH3AAEx+gABMfwAATH+AAEyAAABMgIAATIEAAEyBQABMggAATIhAAEyQgABMkQAATJGAAEySAABMkoAATJMAAEyTgABMlAAATJSAAEycwABMnYAATJ5AAEyfAABMn8AATKCAAEyhQABMogAATKLAAEyjQABMwgAATMKAAEzDAABMw4AATMRAAEzEgABMxMAATMUAAEzFQABMxcAATMZAAEzGgABMxsAATMdAAEzHgABM5kAATObAAEznQABM58AATOiAAEzowABM6QAATOlAAEzpgABM6gAATOqAAEzqwABM6wAATOuAAEzrwABNCoAATQsAAE0LwABNDEAATQ0AAE0NQABNDYAATQ3AAE0OAABNDoAATQ8AAE0PQABND4AATRAAAE0QQABNFoAATRbAAE0XAABNF4AATTZAAE02wABNN0AATTfAAE04gABNOMAATTkAAE05QABNOYAATToAAE06gABNOsAATTsAAE07gABNO8AATVqAAE1bAABNW4AATVwAAE1cwABNXQAATV1AAE1dgABNXcAATV5AAE1ewABNXwAATV9AAE1fwABNYAAATX7AAE1/QABNf8AATYBAAE2BAABNgUAATYGAAE2BwABNggAATYKAAE2DAABNg0AATYOAAE2EAABNhEAATaMAAE2jgABNpAAATaSAAE2lQABNpYAATaXAAE2mAABNpkAATabAAE2nQABNp4AATafAAE2oQABNqIAATcdAAE3HwABNyEAATcjAAE3JgABNycAATcoAAE3KQABNyoAATcsAAE3LgABNy8AATcwAAE3MgABNzMAATd8AAE3oAABN8cAATfrAAE37gABN/AAATfyAAE39AABN/YAATf4AAE3+QABN/wAATgVAAE4MgABODQAATg2AAE4OAABODoAATg8AAE4PgABOEAAAThdAAE4YAABOGMAAThmAAE4aQABOGwAAThvAAE4cgABOHQAATjvAAE48QABOPMAATj1AAE4+AABOPkAATj6AAE4+wABOPwAATj+AAE5AAABOQEAATkCAAE5BAABOQUAATmAAAE5ggABOYQAATmGAAE5iQABOYoAATmLAAE5jAABOY0AATmPAAE5kQABOZIAATmTAAE5lQABOZYAAToRAAE6EwABOhUAAToXAAE6GgABOhsAATocAAE6HQABOh4AATogAAE6IgABOiMAATokAAE6JgABOicAATqiAAE6pAABOqcAATqpAAE6rAABOq0AATquAAE6rwABOrAAATqyAAE6tAABOrUAATq2AAE6uAABOrkAATs0AAE7NgABOzgAATs6AAE7PQABOz4AATs/AAE7QAABO0EAATtDAAE7RQABO0YAATtHAAE7SQABO0oAATvFAAE7xwABO8kAATvLAAE7zgABO88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AAVZpAAFWagABVm0AAVZuAAFWcAABVnEAAVZzAAFWdQABVnYAAVZ3AAFWegABVnsAAVaAAAFWmQABVqIAAVakAAFWpgABVq8AAVayAAFWtQABVrcAAVcAAAFXJAABV0sAAVdvAAFXcgABV3QAAVd2AAFXeAABV3oAAVd8AAFXfQABV4AAAVeZAAFXugABV7wAAVe+AAFXwAABV8IAAVfEAAFXxgABV8gAAVfKAAFX6wABV+4AAVfxAAFX9AABV/cAAVf6AAFX/QABWAAAAVgDAAFYBQABWIAAAViCAAFYhAABWIYAAViJAAFYigABWIsAAViMAAFYjQABWI8AAViRAAFYkgABWJMAAViVAAFYlgABWREAAVkTAAFZFQABWRcAAVkaAAFZGwABWRwAAVkdAAFZHgABWSAAAVkiAAFZIwABWSQAAVkmAAFZJwABWaIAAVmkAAFZpwABWakAAVmsAAFZrQABWa4AAVmvAAFZsAABWbIAAVm0AAFZtQABWbYAAVm4AAFZuQABWdIAAVnTAAFZ1AABWdYAAVpRAAFaUwABWlUAAVpXAAFaWgABWlsAAVpcAAFaXQABWl4AAVpgAAFaYgABWmMAAVpkAAFaZgABWmcAAVriAAFa5AABWuYAAVroAAFa6wABWuwAAVrtAAFa7gABWu8AAVrxAAFa8wABWvQAAVr1AAFa9wABWvgAAVtzAAFbdQABW3cAAVt5AAFbfAABW30AAVt+AAFbfwABW4AAAVuCAAFbhAABW4UAAVuGAAFbiAABW4kAAVwEAAFcBgABXAgAAVwKAAFcDQABXA4AAVwPAAFcEAABXBEAAVwTAAFcFQABXBYAAVwXAAFcGQABXBoAAVyVAAFclwABXJkAAVybAAFcngABXJ8AAVygAAFcoQABXKIAAVykAAFcpgABXKcAAVyoAAFcqgABXKsAAVz0AAFdGAABXT8AAV1jAAFdZgABXWgAAV1qAAFdbAABXW4AAV1wAAFdcQABXXQAAV2NAAFdqgABXawAAV2uAAFdsAABXbIAAV20AAFdtgABXbgAAV3VAAFd2AABXdsAAV3eAAFd4QABXeQAAV3nAAFd6gABXewAAV5nAAFeaQABXmsAAV5tAAFecAABXnEAAV5yAAFecwABXnQAAV52AAFeeAABXnkAAV56AAFefAABXn0AAV74AAFe+gABXvwAAV7+AAFfAQABXwIAAV8DAAFfBAABXwUAAV8HAAFfCQABXwoAAV8LAAFfDQABXw4AAV+JAAFfiwABX40AAV+PAAFfkgABX5MAAV+UAAFflQABX5YAAV+YAAFfmgABX5sAAV+cAAFfngABX58AAWAaAAFgHAABYB4AAWAgAAFgIwABYCQAAWAlAAFgJgABYCcAAWApAAFgKwABYCwAAWAtAAFgLwABYDAAAWCrAAFgrQABYK8AAWCxAAFgtAABYLUAAWC2AAFgtwABYLgAAWC6AAFgvAABYL0AAWC+AAFgwAABYMEAAWE8AAFhPgABYUAAAWFCAAFhRQABYUYAAWFHAAFhSAABYUkAAWFLAAFhTQABYU4AAWFPAAFhUQABYVIAAWHNAAFhzwABYdEAAWHTAAFh1gABYdcAAWHYAAFh2QABYdoAAWHcAAFh3gABYd8AAWHgAAFh4gABYeMAAWJ2AAFimQABYrkAAWLZAAFi2wABYt0AAWLfAAFi4QABYuMAAWLkAAFi5QABYugAAWLpAAFi6wABYuwAAWLvAAFi8QABYvIAAWLzAAFi9gABYvcAAWL8AAFjFQABYx4AAWMgAAFjIwABYywAAWMvAAFjMgABYzQAAWNHAAFjkAABY7QAAWPbAAFj/wABZAIAAWQEAAFkBgABZAgAAWQKAAFkDAABZA0AAWQQAAFkKQABZEoAAWRMAAFkTgABZFAAAWRSAAFkVAABZFYAAWRYAAFkWgABZHsAAWR+AAFkgQABZIQAAWSHAAFkigABZI0AAWSQAAFkkwABZJUAAWUQAAFlEgABZRQAAWUWAAFlGQABZRoAAWUbAAFlHAABZR0AAWUfAAFlIQABZSIAAWUjAAFlJQABZSYAAWWhAAFlowABZaUAAWWnAAFlqgABZasAAWWsAAFlrQABZa4AAWWwAAFlsgABZbMAAWW0AAFltgABZbcAAWYyAAFmNAABZjcAAWY5AAFmPAABZj0AAWY+AAFmPwABZkAAAWZCAAFmRAABZkUAAWZGAAFmSAABZkkAAWZiAAFmYwABZmQAAWZmAAFm4QABZuMAAWblAAFm5wABZuoAAWbrAAFm7AABZu0AAWbuAAFm8AABZvIAAWbzAAFm9AABZvYAAWb3AAFncgABZ3QAAWd2AAFneAABZ3sAAWd8AAFnfQABZ34AAWd/AAFngQABZ4MAAWeEAAFnhQABZ4cAAWeIAAFoAwABaAUAAWgHAAFoCQABaAwAAWgNAAFoDgABaA8AAWgQAAFoEgABaBQAAWgVAAFoFgABaBgAAWgZAAFolAABaJYAAWiYAAFomgABaJ0AAWieAAFonwABaKAAAWihAAFoowABaKUAAWimAAFopwABaKkAAWiqAAFpJQABaScAAWkpAAFpKwABaS4AAWkvAAFpMAABaTEAAWkyAAFpNAABaTYAAWk3AAFpOAABaToAAWk7AAFphAABaagAAWnPAAFp8wABafYAAWn5AAFp+wABaf0AAWn/AAFqAQABagIAAWoFAAFqHgABajsAAWo+AAFqQQABakQAAWpHAAFqSgABak0AAWpQAAFqbQABanAAAWpzAAFqdgABankAAWp8AAFqfwABaoIAAWqEAAFqlgABaqoAAWq8AAFq0QABauMAAWryAAFrDwABa4oAAWuMAAFrjwABa5EAAWuUAAFrlQABa5YAAWuXAAFrmAABa5oAAWudAAFrngABa58AAWuhAAFrogABbB0AAWwfAAFsIgABbCQAAWwnAAFsKAABbCkAAWwqAAFsKwABbC0AAWwwAAFsMQABbDIAAWw0AAFsNQABbDcAAWyyAAFstAABbLcAAWy5AAFsvAABbL0AAWy+AAFsvwABbMAAAWzCAAFsxQABbMYAAWzHAAFsyQABbMoAAW1FAAFtRwABbUoAAW1MAAFtTwABbVAAAW1RAAFtUgABbVMAAW1VAAFtWAABbVkAAW1aAAFtXAABbV0AAW3gAAFuBAABbigAAW5LAAFucgABbpIAAW65AAFu4AABbwAAAW8kAAFvSAABb0oAAW9NAAFvTwABb1EAAW9TAAFvVgABb1kAAW9bAAFvXQABb2AAAW9iAAFvZAABb2cAAW9qAAFvawABb3AAAW+JAAFvjgABb5AAAW+VAAFvmAABb5oAAW/jAAFwBwABcC4AAXBSAAFwVQABcFcAAXBZAAFwWwABcF0AAXBfAAFwYAABcGMAAXB8AAFwoQABcKMAAXClAAFwpwABcKkAAXCrAAFwrQABcK8AAXCxAAFwswABcNgAAXDbAAFw3gABcOEAAXDkAAFw5wABcOoAAXDtAAFw8AABcPMAAXD1AAFxcAABcXIAAXF1AAFxdwABcXoAAXF7AAFxfAABcX0AAXF+AAFxgAABcYIAAXGDAAFxhAABcYYAAXGHAAFxmAABcZkAAXGbAAFyFgABchgAAXIaAAFyHAABch8AAXIgAAFyIQABciIAAXIjAAFyJQABcicAAXIoAAFyKQABcisAAXIsAAFypwABcqkAAXKsAAFyrgABcrEAAXKyAAFyswABcrQAAXK1AAFytwABcrkAAXK6AAFyuwABcr0AAXK+AAFyzwABctAAAXLSAAFzTQABc08AAXNRAAFzUwABc1YAAXNXAAFzWAABc1kAAXNaAAFzXAABc14AAXNfAAFzYAABc2IAAXNjAAFz3gABc+AAAXPjAAFz5QABc+gAAXPpAAFz6gABc+sAAXPsAAFz7gABc/AAAXPxAAFz8gABc/QAAXP1AAF0BgABdAcAAXQJAAF0hAABdIYAAXSIAAF0igABdI0AAXSOAAF0jwABdJAAAXSRAAF0kwABdJUAAXSWAAF0lwABdJkAAXSaAAF1FQABdRcAAXUaAAF1HAABdR8AAXUgAAF1IQABdSIAAXUjAAF1JQABdScAAXUoAAF1KQABdSsAAXUsAAF1RQABdUYAAXVHAAF1SQABdcQAAXXGAAF1yAABdcoAAXXNAAF1zgABdc8AAXXQAAF10QABddMAAXXVAAF11gABddcAAXXZAAF12gABdlUAAXZXAAF2WQABdlsAAXZeAAF2XwABdmAAAXZhAAF2YgABdmQAAXZmAAF2ZwABdmgAAXZqAAF2awABdoQAAXadAAF2oAABdqMAAXamAAF2qQABdqwAAXavAAF2yAABdssAAXbOAAF20QABdtQAAXbXAAF22gABdtwAAXbxAAF3FAABdyoAAXc9AAF3SQABd18AAXfyAAF4FQABeDUAAXhVAAF4VwABeFkAAXhbAAF4XQABeGAAAXhhAAF4YgABeGUAAXhmAAF4aAABeGkAAXhrAAF4bgABeG8AAXhwAAF4cwABeHQAAXh5AAF4kgABeJsAAXidAAF4nwABeKgAAXirAAF4rgABeLAAAXj5AAF5HQABeUQAAXloAAF5awABeW0AAXlvAAF5cQABeXMAAXl1AAF5dgABeXkAAXmSAAF5swABebUAAXm3AAF5uQABebsAAXm9AAF5vwABecEAAXnDAAF55AABeecAAXnqAAF57QABefAAAXnzAAF59gABefkAAXn8AAF5/gABenkAAXp7AAF6fQABen8AAXqCAAF6gwABeoQAAXqFAAF6hgABeogAAXqKAAF6iwABeowAAXqOAAF6jwABewoAAXsMAAF7DgABexAAAXsTAAF7FAABexUAAXsWAAF7FwABexkAAXsbAAF7HAABex0AAXsfAAF7IAABe5sAAXudAAF7oAABe6IAAXulAAF7pgABe6cAAXuoAAF7qQABe6sAAXutAAF7rgABe68AAXuxAAF7sgABe8sAAXvMAAF7zQABe88AAXxKAAF8TAABfE4AAXxQAAF8UwABfFQAAXxVAAF8VgABfFcAAXxZAAF8WwABfFwAAXxdAAF8XwABfGAAAXzbAAF83QABfN8AAXzhAAF85AABfOUAAXzmAAF85wABfOgAAXzqAAF87AABfO0AAXzuAAF88AABfPEAAX1sAAF9bgABfXAAAX1yAAF9dQABfXYAAX13AAF9eAABfXkAAX17AAF9fQABfX4AAX1/AAF9gQABfYIAAX39AAF9/wABfgEAAX4DAAF+BgABfgcAAX4IAAF+CQABfgoAAX4MAAF+DgABfg8AAX4QAAF+EgABfhMAAX6OAAF+kAABfpIAAX6UAAF+lwABfpgAAX6ZAAF+mgABfpsAAX6dAAF+nwABfqAAAX6hAAF+owABfqQAAX7tAAF/EQABfzgAAX9cAAF/XwABf2EAAX9jAAF/ZQABf2cAAX9pAAF/agABf20AAX+GAAF/owABf6UAAX+nAAF/qQABf6sAAX+tAAF/rwABf7EAAX/OAAF/0QABf9QAAX/XAAF/2gABf90AAX/gAAF/4wABf+UAAYBgAAGAYgABgGQAAYBmAAGAaQABgGoAAYBrAAGAbAABgG0AAYBvAAGAcQABgHIAAYBzAAGAdQABgHYAAYDxAAGA8wABgPUAAYD3AAGA+gABgPsAAYD8AAGA/QABgP4AAYEAAAGBAgABgQMAAYEEAAGBBgABgQcAAYGCAAGBhAABgYYAAYGIAAGBiwABgYwAAYGNAAGBjgABgY8AAYGRAAGBkwABgZQAAYGVAAGBlwABgZgAAYITAAGCFQABghcAAYIZAAGCHAABgh0AAYIeAAGCHwABgiAAAYIiAAGCJAABgiUAAYImAAGCKAABgikAAYKkAAGCpgABgqgAAYKqAAGCrQABgq4AAYKvAAGCsAABgrEAAYKzAAGCtQABgrYAAYK3AAGCuQABgroAAYM1AAGDNwABgzkAAYM7AAGDPgABgz8AAYNAAAGDQQABg0IAAYNEAAGDRgABg0cAAYNIAAGDSgABg0sAAYPGAAGDyAABg8oAAYPMAAGDzwABg9AAAYPRAAGD0gABg9MAAYPVAAGD1wABg9gAAYPZAAGD2wABg9wAAYRvAAGEkgABhLIAAYTSAAGE1AABhNYAAYTYAAGE2gABhN0AAYTeAAGE3wABhOIAAYTjAAGE5QABhOYAAYToAAGE6wABhOwAAYTtAAGE8AABhPEAAYT2AAGFDwABhRgAAYUaAAGFHAABhSUAAYUoAAGFKwABhS0AAYV2AAGFmgABhcEAAYXlAAGF6AABheoAAYXsAAGF7gABhfAAAYXyAAGF8wABhfYAAYYPAAGGMAABhjIAAYY0AAGGNgABhjgAAYY6AAGGPAABhj4AAYZAAAGGYQABhmQAAYZnAAGGagABhm0AAYZwAAGGcwABhnYAAYZ5AAGGewABhvYAAYb4AAGG+gABhvwAAYb/AAGHAAABhwEAAYcCAAGHAwABhwUAAYcHAAGHCAABhwkAAYcLAAGHDAABh4cAAYeJAAGHiwABh40AAYeQAAGHkQABh5IAAYeTAAGHlAABh5YAAYeYAAGHmQABh5oAAYecAAGHnQABiBgAAYgaAAGIHQABiB8AAYgiAAGIIwABiCQAAYglAAGIJgABiCgAAYgqAAGIKwABiCwAAYguAAGILwABiEgAAYhJAAGISgABiEwAAYjHAAGIyQABiMsAAYjNAAGI0AABiNEAAYjSAAGI0wABiNQAAYjWAAGI2AABiNkAAYjaAAGI3AABiN0AAYlYAAGJWgABiVwAAYleAAGJYQABiWIAAYljAAGJZAABiWUAAYlnAAGJaQABiWoAAYlrAAGJbQABiW4AAYnpAAGJ6wABie0AAYnvAAGJ8gABifMAAYn0AAGJ9QABifYAAYn4AAGJ+gABifsAAYn8AAGJ/gABif8AAYp6AAGKfAABin4AAYqAAAGKgwABioQAAYqFAAGKhgABiocAAYqJAAGKiwABiowAAYqNAAGKjwABipAAAYsLAAGLDQABiw8AAYsRAAGLFAABixUAAYsWAAGLFwABixgAAYsaAAGLHAABix0AAYseAAGLIAABiyEAAYtqAAGLjgABi7UAAYvZAAGL3AABi94AAYvgAAGL4gABi+QAAYvmAAGL5wABi+oAAYwDAAGMIAABjCIAAYwkAAGMJgABjCgAAYwqAAGMLAABjC4AAYxLAAGMTgABjFEAAYxUAAGMVwABjFoAAYxdAAGMYAABjGIAAYzdAAGM3wABjOEAAYzjAAGM5gABjOcAAYzoAAGM6QABjOoAAYzsAAGM7gABjO8AAYzwAAGM8gABjPMAAY1uAAGNcAABjXIAAY10AAGNdwABjXgAAY15AAGNegABjXsAAY19AAGNfwABjYAAAY2BAAGNgwABjYQAAY3/AAGOAQABjgMAAY4FAAGOCAABjgkAAY4KAAGOCwABjgwAAY4OAAGOEAABjhEAAY4SAAGOFAABjhUAAY6QAAGOkgABjpQAAY6WAAGOmQABjpoAAY6bAAGOnAABjp0AAY6fAAGOoQABjqIAAY6jAAGOpQABjqYAAY8hAAGPIwABjyUAAY8nAAGPKgABjysAAY8sAAGPLQABjy4AAY8wAAGPMgABjzMAAY80AAGPNgABjzcAAY+yAAGPtAABj7cAAY+5AAGPvAABj70AAY++AAGPvwABj8AAAY/CAAGPxAABj8UAAY/GAAGPyAABj8kAAY/bAAGQVgABkFgAAZBaAAGQXAABkF8AAZBgAAGQYQABkGIAAZBjAAGQZQABkGcAAZBoAAGQaQABkGsAAZBsAAGQ/wABkSIAAZFCAAGRYgABkWQAAZFmAAGRaAABkWoAAZFtAAGRbgABkW8AAZFyAAGRcwABkXUAAZF2AAGReAABkXsAAZF8AAGRfQABkYAAAZGBAAGRhgABkZ8AAZGoAAGRqgABkawAAZG1AAGRuAABkbsAAZG9AAGSBgABkioAAZJRAAGSdQABkngAAZJ6AAGSfAABkn4AAZKAAAGSggABkoMAAZKGAAGSnwABksAAAZLCAAGSxAABksYAAZLIAAGSygABkswAAZLOAAGS0AABkvEAAZL0AAGS9wABkvoAAZL9AAGTAAABkwMAAZMGAAGTCQABkwsAAZOGAAGTiAABk4oAAZOMAAGTjwABk5AAAZORAAGTkgABk5MAAZOVAAGTlwABk5gAAZOZAAGTmwABk5wAAZQXAAGUGQABlBsAAZQdAAGUIAABlCEAAZQiAAGUIwABlCQAAZQmAAGUKAABlCkAAZQqAAGULAABlC0AAZSoAAGUqgABlK0AAZSvAAGUsgABlLMAAZS0AAGUtQABlLYAAZS4AAGUugABlLsAAZS8AAGUvgABlL8AAZTYAAGU2QABlNoAAZTcAAGVVwABlVkAAZVbAAGVXQABlWAAAZVhAAGVYgABlWMAAZVkAAGVZgABlWgAAZVpAAGVagABlWwAAZVtAAGV6AABleoAAZXsAAGV7gABlfEAAZXyAAGV8wABlfQAAZX1AAGV9wABlfkAAZX6AAGV+wABlf0AAZX+AAGWeQABlnsAAZZ9AAGWfwABloIAAZaDAAGWhAABloUAAZaGAAGWiAABlooAAZaLAAGWjAABlo4AAZaPAAGXCgABlwwAAZcOAAGXEAABlxMAAZcUAAGXFQABlxYAAZcXAAGXGQABlxsAAZccAAGXHQABlx8AAZcgAAGXmwABl50AAZefAAGXoQABl6QAAZelAAGXpgABl6cAAZeoAAGXqgABl6wAAZetAAGXrgABl7AAAZexAAGX+gABmB4AAZhFAAGYaQABmGwAAZhuAAGYcAABmHIAAZh0AAGYdgABmHcAAZh6AAGYkwABmLAAAZiyAAGYtAABmLYAAZi4AAGYugABmLwAAZi+AAGY2wABmN4AAZjhAAGY5AABmOcAAZjqAAGY7QABmPAAAZjyAAGZbQABmW8AAZlxAAGZcwABmXYAAZl3AAGZeAABmXkAAZl6AAGZfAABmX4AAZl/AAGZgAABmYIAAZmDAAGZ/gABmgAAAZoCAAGaBAABmgcAAZoIAAGaCQABmgoAAZoLAAGaDQABmg8AAZoQAAGaEQABmhMAAZoUAAGajwABmpEAAZqTAAGalQABmpgAAZqZAAGamgABmpsAAZqcAAGangABmqAAAZqhAAGaogABmqQAAZqlAAGbIAABmyIAAZskAAGbJgABmykAAZsqAAGbKwABmywAAZstAAGbLwABmzEAAZsyAAGbMwABmzUAAZs2AAGbsQABm7MAAZu1AAGbtwABm7oAAZu7AAGbvAABm70AAZu+AAGbwAABm8IAAZvDAAGbxAABm8YAAZvHAAGcQgABnEQAAZxGAAGcSAABnEsAAZxMAAGcTQABnE4AAZxPAAGcUQABnFMAAZxUAAGcVQABnFcAAZxYAAGc0wABnNUAAZzXAAGc2QABnNwAAZzdAAGc3gABnN8AAZzgAAGc4gABnOQAAZzlAAGc5gABnOgAAZzpAAGdfAABnZ8AAZ2/AAGd3wABneEAAZ3jAAGd5QABnecAAZ3qAAGd6wABnewAAZ3vAAGd8AABnfIAAZ3zAAGd9gABnfkAAZ36AAGd+wABnf4AAZ3/AAGeBAABnh0AAZ4mAAGeKAABnisAAZ40AAGeNwABnjoAAZ48AAGehQABnqkAAZ7QAAGe9AABnvcAAZ75AAGe+wABnv0AAZ7/AAGfAQABnwIAAZ8FAAGfHgABnz8AAZ9BAAGfQwABn0UAAZ9HAAGfSQABn0sAAZ9NAAGfTwABn3AAAZ9zAAGfdgABn3kAAZ98AAGffwABn4IAAZ+FAAGfiAABn4oAAaAFAAGgBwABoAkAAaALAAGgDgABoA8AAaAQAAGgEQABoBIAAaAUAAGgFgABoBcAAaAYAAGgGgABoBsAAaCWAAGgmAABoJoAAaCcAAGgnwABoKAAAaChAAGgogABoKMAAaClAAGgpwABoKgAAaCpAAGgqwABoKwAAaEnAAGhKQABoSwAAaEuAAGhMQABoTIAAaEzAAGhNAABoTUAAaE3AAGhOQABoToAAaE7AAGhPQABoT4AAaFXAAGhWAABoVkAAaFbAAGh1gABodgAAaHaAAGh3AABod8AAaHgAAGh4QABoeIAAaHjAAGh5QABoecAAaHoAAGh6QABoesAAaHsAAGiZwABomkAAaJrAAGibQABonAAAaJxAAGicgABonMAAaJ0AAGidgABongAAaJ5AAGiegABonwAAaJ9AAGi+AABovoAAaL8AAGi/gABowEAAaMCAAGjAwABowQAAaMFAAGjBwABowkAAaMKAAGjCwABow0AAaMOAAGjiQABo4sAAaONAAGjjwABo5IAAaOTAAGjlAABo5UAAaOWAAGjmAABo5oAAaObAAGjnAABo54AAaOfAAGkGgABpBwAAaQeAAGkIAABpCMAAaQkAAGkJQABpCYAAaQnAAGkKQABpCsAAaQsAAGkLQABpC8AAaQwAAGkeQABpJ0AAaTEAAGk6AABpOsAAaTuAAGk8AABpPIAAaT0AAGk9gABpPcAAaT6AAGlEwABpTAAAaUzAAGlNgABpTkAAaU8AAGlPwABpUIAAaVFAAGlYgABpWUAAaVoAAGlawABpW4AAaVxAAGldAABpXcAAaV5AAGl9AABpfYAAaX5AAGl+wABpf4AAaX/AAGmAAABpgEAAaYCAAGmBAABpgcAAaYIAAGmCQABpgsAAaYMAAGmhwABpokAAaaMAAGmjgABppEAAaaSAAGmkwABppQAAaaVAAGmlwABppoAAaabAAGmnAABpp4AAaafAAGmoQABpxwAAaceAAGnIQABpyMAAacmAAGnJwABpygAAacpAAGnKgABpywAAacvAAGnMAABpzEAAaczAAGnNAABp68AAaexAAGnswABp7UAAae4AAGnuQABp7oAAae7AAGnvAABp74AAafBAAGnwgABp8MAAafFAAGnxgABqEEAAahDAAGoRQABqEcAAahKAAGoSwABqEwAAahNAAGoTgABqFAAAahTAAGoVAABqFUAAahXAAGoWAABqNMAAajVAAGo1wABqNkAAajcAAGo3QABqN4AAajfAAGo4AABqOIAAajlAAGo5gABqOcAAajpAAGo6gABqWUAAalnAAGpagABqWwAAalvAAGpcAABqXEAAalyAAGpcwABqXUAAal4AAGpeQABqXoAAal8AAGpfQABqY4AAamhAAGpugABqc0AAanaAAGp7QABqgQAAaoWAAGqqQABqswAAarsAAGrDAABqw4AAasQAAGrEgABqxQAAasXAAGrGAABqxkAAascAAGrHQABqx8AAasgAAGrIwABqyYAAasnAAGrKAABqysAAassAAGrMQABq0oAAatTAAGrVQABq1gAAathAAGrZAABq2cAAatpAAGrsgABq9YAAav9AAGsIQABrCQAAawmAAGsKAABrCoAAawsAAGsLgABrC8AAawyAAGsSwABrGwAAaxuAAGscAABrHIAAax0AAGsdgABrHgAAax6AAGsfAABrJ0AAaygAAGsowABrKYAAaypAAGsrAABrK8AAayyAAGstQABrLcAAa0yAAGtNAABrTYAAa04AAGtOwABrTwAAa09AAGtPgABrT8AAa1BAAGtQwABrUQAAa1FAAGtRwABrUgAAa3DAAGtxQABrccAAa3JAAGtzAABrc0AAa3OAAGtzwABrdAAAa3SAAGt1AABrdUAAa3WAAGt2AABrdkAAa5UAAGuVgABrlkAAa5bAAGuXgABrl8AAa5gAAGuYQABrmIAAa5kAAGuZgABrmcAAa5oAAGuagABrmsAAa6EAAGuhQABroYAAa6IAAGvAwABrwUAAa8HAAGvCQABrwwAAa8NAAGvDgABrw8AAa8QAAGvEgABrxQAAa8VAAGvFgABrxgAAa8ZAAGvlAABr5YAAa+YAAGvmgABr50AAa+eAAGvnwABr6AAAa+hAAGvowABr6UAAa+mAAGvpwABr6kAAa+qAAGwJQABsCcAAbApAAGwKwABsC4AAbAvAAGwMAABsDEAAbAyAAGwNAABsDYAAbA3AAGwOAABsDoAAbA7AAGwtgABsLgAAbC6AAGwvAABsL8AAbDAAAGwwQABsMIAAbDDAAGwxQABsMcAAbDIAAGwyQABsMsAAbDMAAGxRwABsUkAAbFLAAGxTQABsVAAAbFRAAGxUgABsVMAAbFUAAGxVgABsVgAAbFZAAGxWgABsVwAAbFdAAGxpgABscoAAbHxAAGyFQABshgAAbIbAAGyHQABsh8AAbIhAAGyIwABsiQAAbInAAGyQAABsl0AAbJgAAGyYwABsmYAAbJpAAGybAABsm8AAbJyAAGyjwABspIAAbKVAAGymAABspsAAbKeAAGyoQABsqQAAbKmAAGzIQABsyMAAbMmAAGzKAABsysAAbMsAAGzLQABsy4AAbMvAAGzMQABszQAAbM1AAGzNgABszgAAbM5AAGztAABs7YAAbO5AAGzuwABs74AAbO/AAGzwAABs8EAAbPCAAGzxAABs8cAAbPIAAGzyQABs8sAAbPMAAG0RwABtEkAAbRMAAG0TgABtFEAAbRSAAG0UwABtFQAAbRVAAG0VwABtFoAAbRbAAG0XAABtF4AAbRfAAG02gABtNwAAbTfAAG04QABtOQAAbTlAAG05gABtOcAAbToAAG06gABtO0AAbTuAAG07wABtPEAAbTyAAG1dQABtZkAAbW9AAG14AABtgcAAbYnAAG2TgABtnUAAbaVAAG2uQABtt0AAbbfAAG24gABtuQAAbbmAAG26AABtusAAbbuAAG28AABtvIAAbb1AAG29wABtvkAAbb8AAG2/wABtwAAAbcJAAG3IgABtycAAbcpAAG3LgABtzEAAbczAAG3fAABt6AAAbfHAAG36wABt+4AAbfwAAG38gABt/QAAbf2AAG3+AABt/kAAbf8AAG4FQABuDoAAbg8AAG4PgABuEAAAbhCAAG4RAABuEYAAbhIAAG4SgABuEwAAbhxAAG4dAABuHcAAbh6AAG4fQABuIAAAbiDAAG4hgABuIkAAbiMAAG4jgABuQkAAbkLAAG5DgABuRAAAbkTAAG5FAABuRUAAbkWAAG5FwABuRkAAbkbAAG5HAABuR0AAbkfAAG5IAABuTEAAbkyAAG5NAABua8AAbmxAAG5swABubUAAbm4AAG5uQABuboAAbm7AAG5vAABub4AAbnAAAG5wQABucIAAbnEAAG5xQABukAAAbpCAAG6RQABukcAAbpKAAG6SwABukwAAbpNAAG6TgABulAAAbpSAAG6UwABulQAAbpWAAG6VwABumgAAbppAAG6awABuuYAAbroAAG66gABuuwAAbrvAAG68AABuvEAAbryAAG68wABuvUAAbr3AAG6+AABuvkAAbr7AAG6/AABu3cAAbt5AAG7fAABu34AAbuBAAG7ggABu4MAAbuEAAG7hQABu4cAAbuJAAG7igABu4sAAbuNAAG7jgABu58AAbugAAG7ogABvB0AAbwfAAG8IQABvCMAAbwmAAG8JwABvCgAAbwpAAG8KgABvCwAAbwuAAG8LwABvDAAAbwyAAG8MwABvK4AAbywAAG8swABvLUAAby4AAG8uQABvLoAAby7AAG8vAABvL4AAbzAAAG8wQABvMIAAbzEAAG8xQABvN4AAbzfAAG84AABvOIAAb1dAAG9XwABvWEAAb1jAAG9ZgABvWcAAb1oAAG9aQABvWoAAb1sAAG9bgABvW8AAb1wAAG9cgABvXMAAb3uAAG98AABvfMAAb31AAG9+AABvfkAAb36AAG9+wABvfwAAb3+AAG+AAABvgEAAb4CAAG+BAABvgUAAb4RAAG+KgABvj8AAb5CAAG+RQABvkgAAb5LAAG+TgABvmMAAb5mAAG+aQABvmwAAb5vAAG+cgABvnQAAb6KAAG+lQABvqEAAb63AAG+wQABv1QAAb93AAG/lwABv7cAAb+5AAG/uwABv70AAb+/AAG/wgABv8MAAb/EAAG/xwABv8gAAb/KAAG/ywABv80AAb/QAAG/0QABv9IAAb/VAAG/1gABv9sAAb/0AAG//QABv/8AAcABAAHACgABwA0AAcAQAAHAEgABwFsAAcB/AAHApgABwMoAAcDNAAHAzwABwNEAAcDTAAHA1QABwNcAAcDYAAHA2wABwPQAAcEVAAHBFwABwRkAAcEbAAHBHQABwR8AAcEhAAHBIwABwSUAAcFGAAHBSQABwUwAAcFPAAHBUgABwVUAAcFYAAHBWwABwV4AAcFgAAHB2wABwd0AAcHfAAHB4QABweQAAcHlAAHB5gABwecAAcHoAAHB6gABwewAAcHtAAHB7gABwfAAAcHxAAHCbAABwm4AAcJwAAHCcgABwnUAAcJ2AAHCdwABwngAAcJ5AAHCewABwn0AAcJ+AAHCfwABwoEAAcKCAAHC/QABwv8AAcMCAAHDBAABwwcAAcMIAAHDCQABwwoAAcMLAAHDDQABww8AAcMQAAHDEQABwxMAAcMUAAHDLQABwy4AAcMvAAHDMQABw6wAAcOuAAHDsAABw7IAAcO1AAHDtgABw7cAAcO4AAHDuQABw7sAAcO9AAHDvgABw78AAcPBAAHDwgABxD0AAcQ/AAHEQQABxEMAAcRGAAHERwABxEgAAcRJAAHESgABxEwAAcROAAHETwABxFAAAcRSAAHEUwABxM4AAcTQAAHE0gABxNQAAcTXAAHE2AABxNkAAcTaAAHE2wABxN0AAcTfAAHE4AABxOEAAcTjAAHE5AABxV8AAcVhAAHFYwABxWUAAcVoAAHFaQABxWoAAcVrAAHFbAABxW4AAcVwAAHFcQABxXIAAcV0AAHFdQABxfAAAcXyAAHF9AABxfYAAcX5AAHF+gABxfsAAcX8AAHF/QABxf8AAcYBAAHGAgABxgMAAcYFAAHGBgABxk8AAcZzAAHGmgABxr4AAcbBAAHGwwABxsUAAcbHAAHGyQABxssAAcbMAAHGzwABxugAAccFAAHHBwABxwkAAccLAAHHDQABxw8AAccRAAHHEwABxzAAAcczAAHHNgABxzkAAcc8AAHHPwABx0IAAcdFAAHHRwABx8IAAcfEAAHHxgABx8gAAcfLAAHHzAABx80AAcfOAAHHzwABx9EAAcfTAAHH1AABx9UAAcfXAAHH2AAByFMAAchVAAHIVwAByFkAAchcAAHIXQAByF4AAchfAAHIYAAByGIAAchkAAHIZQAByGYAAchoAAHIaQAByOQAAcjmAAHI6AAByOoAAcjtAAHI7gAByO8AAcjwAAHI8QAByPMAAcj1AAHI9gAByPcAAcj5AAHI+gAByXUAAcl3AAHJegAByXwAAcl/AAHJgAAByYEAAcmCAAHJgwAByYUAAcmHAAHJiAAByYkAAcmLAAHJjAABygcAAcoJAAHKCwAByg0AAcoQAAHKEQAByhIAAcoTAAHKFAAByhYAAcoYAAHKGQAByhoAAcocAAHKHQABypgAAcqaAAHKnAAByp4AAcqhAAHKogAByqMAAcqkAAHKpQAByqcAAcqpAAHKqgAByqsAAcqtAAHKrgAByykAAcsrAAHLLQAByy8AAcsyAAHLMwAByzQAAcs1AAHLNgAByzgAAcs6AAHLOwAByzwAAcs+AAHLPwABy9IAAcv1AAHMFQABzDUAAcw3AAHMOQABzDsAAcw9AAHMQAABzEEAAcxCAAHMRQABzEYAAcxIAAHMSQABzEsAAcxOAAHMTwABzFAAAcxTAAHMVAABzFkAAcxyAAHMewABzH0AAcx/AAHMiAABzIsAAcyOAAHMkAABzNkAAcz9AAHNJAABzUgAAc1LAAHNTQABzU8AAc1RAAHNUwABzVUAAc1WAAHNWQABzXIAAc2TAAHNlQABzZcAAc2ZAAHNmwABzZ0AAc2fAAHNoQABzaMAAc3EAAHNxwABzcoAAc3NAAHN0AABzdMAAc3WAAHN2QABzdwAAc3eAAHOWQABzlsAAc5dAAHOXwABzmIAAc5jAAHOZAABzmUAAc5mAAHOaAABzmoAAc5rAAHObAABzm4AAc5vAAHO6gABzuwAAc7uAAHO8AABzvMAAc70AAHO9QABzvYAAc73AAHO+QABzvsAAc78AAHO/QABzv8AAc8AAAHPewABz30AAc+AAAHPggABz4UAAc+GAAHPhwABz4gAAc+JAAHPiwABz40AAc+OAAHPjwABz5EAAc+SAAHPqwABz6wAAc+tAAHPrwAB0CoAAdAsAAHQLgAB0DAAAdAzAAHQNAAB0DUAAdA2AAHQNwAB0DkAAdA7AAHQPAAB0D0AAdA/AAHQQAAB0LsAAdC9AAHQvwAB0MEAAdDEAAHQxQAB0MYAAdDHAAHQyAAB0MoAAdDMAAHQzQAB0M4AAdDQAAHQ0QAB0UwAAdFOAAHRUAAB0VIAAdFVAAHRVgAB0VcAAdFYAAHRWQAB0VsAAdFdAAHRXgAB0V8AAdFhAAHRYgAB0d0AAdHfAAHR4QAB0eMAAdHmAAHR5wAB0egAAdHpAAHR6gAB0ewAAdHuAAHR7wAB0fAAAdHyAAHR8wAB0m4AAdJwAAHScgAB0nQAAdJ3AAHSeAAB0nkAAdJ6AAHSewAB0n0AAdJ/AAHSgAAB0oEAAdKDAAHShAAB0s0AAdLxAAHTGAAB0zw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AAgfeAAIH9wACCBQAAggWAAIIGAACCBoAAggcAAIIHgACCCAAAggiAAIIPwACCEIAAghFAAIISAACCEsAAghOAAIIUQACCFQAAghWAAII0QACCNMAAgjVAAII1wACCNoAAgjbAAII3AACCN0AAgjeAAII4AACCOIAAgjjAAII5AACCOYAAgjnAAIJYgACCWQAAglmAAIJaAACCWsAAglsAAIJbQACCW4AAglvAAIJcQACCXMAAgl0AAIJdQACCXcAAgl4AAIJ8wACCfUAAgn3AAIJ+QACCfwAAgn9AAIJ/gACCf8AAgoAAAIKAgACCgQAAgoFAAIKBgACCggAAgoJAAIKhAACCoYAAgqIAAIKigACCo0AAgqOAAIKjwACCpAAAgqRAAIKkwACCpUAAgqWAAIKlwACCpkAAgqaAAILFQACCxcAAgsZAAILGwACCx4AAgsfAAILIAACCyEAAgsiAAILJAACCyYAAgsnAAILKAACCyoAAgsrAAILpgACC6gAAguqAAILrAACC68AAguwAAILsQACC7IAAguzAAILtQACC7cAAgu4AAILuQACC7sAAgu8AAIMNwACDDkAAgw7AAIMPQACDEAAAgxBAAIMQgACDEMAAgxEAAIMRgACDEgAAgxJAAIMSgACDEwAAgxNAAIMXgACDF8AAgxhAAIM3AACDN4AAgzgAAIM4gACDOUAAgzmAAIM5wACDOgAAgzpAAIM6wACDO4AAgzvAAIM8AACDPIAAgzzAAINbgACDXAAAg1yAAINdAACDXcAAg14AAINeQACDXoAAg17AAINfQACDYAAAg2BAAINggACDYQAAg2FAAIOAAACDgIAAg4FAAIOBwACDgoAAg4LAAIODAACDg0AAg4OAAIOEAACDhMAAg4UAAIOFQACDhcAAg4YAAIOKQACDioAAg4sAAIOrwACDtMAAg73AAIPGgACD0EAAg9hAAIPiAACD68AAg/PAAIP8wACEBcAAhAZAAIQHAACEB4AAhAgAAIQIgACECUAAhAoAAIQKgACECwAAhAvAAIQMQACEDMAAhA2AAIQOQACEDoAAhA/AAIQWAACEF0AAhBfAAIQZAACEGcAAhBpAAIQsgACENYAAhD9AAIRIQACESQAAhEmAAIRKAACESoAAhEsAAIRLgACES8AAhEyAAIRSwACEXAAAhFyAAIRdAACEXYAAhF4AAIRegACEXwAAhF+AAIRgAACEYIAAhGnAAIRqgACEa0AAhGwAAIRswACEbYAAhG5AAIRvAACEb8AAhHCAAIRxAACEj8AAhJBAAISRAACEkYAAhJJAAISSgACEksAAhJMAAISTQACEk8AAhJRAAISUgACElMAAhJVAAISVgACEmcAAhJoAAISagACEuUAAhLnAAIS6QACEusAAhLuAAIS7wACEvAAAhLxAAIS8gACEvQAAhL2AAIS9wACEvgAAhL6AAIS+wACE3YAAhN4AAITewACE30AAhOAAAITgQACE4IAAhODAAIThAACE4YAAhOIAAITiQACE4oAAhOMAAITjQACE54AAhOjAAITpgACE6gAAhO5AAITwgACE8UAAhPIAAITygACE+YAAhP4AAIUcwACFHUAAhR3AAIUeQACFHwAAhR9AAIUfgACFH8AAhSAAAIUggACFIQAAhSFAAIUhgACFIgAAhSJAAIVBAACFQYAAhUJAAIVCwACFQ4AAhUPAAIVEAACFREAAhUSAAIVFAACFRYAAhUXAAIVGAACFRoAAhUbAAIVLAACFS0AAhUvAAIVqgACFawAAhWuAAIVsAACFbMAAhW0AAIVtQACFbYAAhW3AAIVuQACFbsAAhW8AAIVvQACFb8AAhXAAAIWOwACFj0AAhZAAAIWQgACFkUAAhZGAAIWRwACFkgAAhZJAAIWSwACFk0AAhZOAAIWTwACFlEAAhZSAAIWawACFmwAAhZtAAIWbwACFuoAAhbsAAIW7gACFvAAAhbzAAIW9AACFvUAAhb2AAIW9wACFvkAAhb7AAIW/AACFv0AAhb/AAIXAAACF3sAAhd9AAIXgAACF4IAAheFAAIXhgACF4cAAheIAAIXiQACF4sAAheNAAIXjgACF48AAheRAAIXkgACF58AAhe4AAIX8QACF/QAAhf3AAIX+gACF/0AAhgAAAIYAwACGAYAAhgJAAIYDAACGA8AAhgSAAIYFQACGBgAAhgbAAIYVAACGFcAAhhaAAIYXQACGGAAAhhjAAIYZgACGGkAAhhsAAIYbwACGHIAAhh1AAIYeAACGHsAAhh+AAIYgAACGJwAAhiqAAIYwwACGNIAAhj1AAIZCQACGR4AAhkpAAIZQgACGVUAAhl6AAIZmAACGaoAAhnJAAIaXAACGn8AAhqfAAIavwACGsEAAhrDAAIaxQACGscAAhrKAAIaywACGswAAhrPAAIa0AACGtIAAhrTAAIa1QACGtgAAhrZAAIa2gACGt0AAhreAAIa5wACGwAAAhsJAAIbCwACGw0AAhsWAAIbGQACGxwAAhseAAIbZwACG4sAAhuyAAIb1gACG9kAAhvbAAIb3QACG98AAhvhAAIb4wACG+QAAhvnAAIcAAACHCEAAhwjAAIcJQACHCcAAhwpAAIcKwACHC0AAhwvAAIcMQACHFIAAhxVAAIcWAACHFsAAhxeAAIcYQACHGQAAhxnAAIcagACHGwAAhznAAIc6QACHOsAAhztAAIc8AACHPEAAhzyAAIc8wACHPQAAhz2AAIc+AACHPkAAhz6AAIc/AACHP0AAh14AAIdegACHXwAAh1+AAIdgQACHYIAAh2DAAIdhAACHYUAAh2HAAIdiQACHYoAAh2LAAIdjQACHY4AAh4JAAIeCwACHg4AAh4QAAIeEwACHhQAAh4VAAIeFgACHhcAAh4ZAAIeGwACHhwAAh4dAAIeHwACHiAAAh45AAIeOgACHjsAAh49AAIeuAACHroAAh68AAIevgACHsEAAh7CAAIewwACHsQAAh7FAAIexwACHskAAh7KAAIeywACHs0AAh7OAAIfSQACH0sAAh9NAAIfTwACH1IAAh9TAAIfVAACH1UAAh9WAAIfWAACH1oAAh9bAAIfXAACH14AAh9fAAIf2gACH9wAAh/eAAIf4AACH+MAAh/kAAIf5QACH+YAAh/nAAIf6QACH+sAAh/sAAIf7QACH+8AAh/wAAIgawACIG0AAiBvAAIgcQACIHQAAiB1AAIgdgACIHcAAiB4AAIgegACIHwAAiB9AAIgfgACIIAAAiCBAAIg/AACIP4AAiEAAAIhAgACIQUAAiEGAAIhBwACIQgAAiEJAAIhCwACIQ0AAiEOAAIhDwACIREAAiESAAIhWwACIX8AAiGmAAIhygACIc0AAiHPAAIh0QACIdMAAiHVAAIh1wACIdgAAiHbAAIh9AACIhEAAiITAAIiFQACIhcAAiIZAAIiGwACIh0AAiIfAAIiPAACIj8AAiJCAAIiRQACIkgAAiJLAAIiTgACIlEAAiJTAAIizgACItAAAiLSAAIi1AACItcAAiLYAAIi2QACItoAAiLbAAIi3QACIt8AAiLgAAIi4QACIuMAAiLkAAIjXwACI2EAAiNjAAIjZQACI2gAAiNpAAIjagACI2sAAiNsAAIjbgACI3AAAiNxAAIjcgACI3QAAiN1AAIj8AACI/IAAiP0AAIj9gACI/kAAiP6AAIj+wACI/wAAiP9AAIj/wACJAEAAiQCAAIkAwACJAUAAiQGAAIkgQACJIMAAiSGAAIkiAACJIsAAiSMAAIkjQACJI4AAiSPAAIkkQACJJMAAiSUAAIklQACJJcAAiSYAAIlEwACJRUAAiUXAAIlGQACJRwAAiUdAAIlHgACJR8AAiUgAAIlIgACJSQAAiUlAAIlJgACJSgAAiUpAAIlpAACJaYAAiWpAAIlqwACJa4AAiWvAAIlsAACJbEAAiWyAAIltAACJbYAAiW3AAIluAACJboAAiW7AAIlygACJkUAAiZHAAImSQACJksAAiZOAAImTwACJlAAAiZRAAImUgACJlQAAiZWAAImVwACJlgAAiZaAAImWwACJu4AAicRAAInMQACJ1EAAidTAAInVQACJ1cAAidZAAInXAACJ10AAideAAInYQACJ2IAAidkAAInZQACJ2gAAidrAAInbAACJ20AAidwAAIncQACJ3YAAiePAAInmAACJ5oAAiedAAInpgACJ6kAAiesAAInrgACJ/cAAigbAAIoQgACKGYAAihpAAIoawACKG0AAihvAAIocQACKHMAAih0AAIodwACKJAAAiixAAIoswACKLUAAii3AAIouQACKLsAAii9AAIovwACKMEAAijiAAIo5QACKOgAAijrAAIo7gACKPEAAij0AAIo9wACKPoAAij8AAIpdwACKXkAAil7AAIpfQACKYAAAimBAAIpggACKYMAAimEAAIphgACKYgAAimJAAIpigACKYwAAimNAAIqCAACKgoAAioMAAIqDgACKhEAAioSAAIqEwACKhQAAioVAAIqFwACKhkAAioaAAIqGwACKh0AAioeAAIqmQACKpsAAiqeAAIqoAACKqMAAiqkAAIqpQACKqYAAiqnAAIqqQACKqsAAiqsAAIqrQACKq8AAiqwAAIqyQACKsoAAirLAAIqzQACK0gAAitKAAIrTAACK04AAitRAAIrUgACK1MAAitUAAIrVQACK1cAAitZAAIrWgACK1sAAitdAAIrXgACK9kAAivbAAIr3QACK98AAiviAAIr4wACK+QAAivlAAIr5gACK+gAAivqAAIr6wACK+wAAivuAAIr7wACLGoAAixsAAIsbgACLHAAAixzAAIsdAACLHUAAix2AAIsdwACLHkAAix7AAIsfAACLH0AAix/AAIsgAACLPsAAiz9AAIs/wACLQEAAi0EAAItBQACLQYAAi0HAAItCAACLQoAAi0MAAItDQACLQ4AAi0QAAItEQACLYwAAi2OAAItkAACLZIAAi2VAAItlgACLZcAAi2YAAItmQACLZsAAi2dAAItngACLZ8AAi2hAAItogACLesAAi4PAAIuNgACLloAAi5dAAIuYAACLmIAAi5kAAIuZgACLmgAAi5pAAIubAACLoUAAi6iAAIupQACLqgAAi6rAAIurgACLrEAAi60AAIutwACLtQAAi7XAAIu2gACLt0AAi7gAAIu4wACLuYAAi7pAAIu6wACL2YAAi9oAAIvawACL20AAi9wAAIvcQACL3IAAi9zAAIvdAACL3YAAi95AAIvegACL3sAAi99AAIvfgACL/kAAi/7AAIv/gACMAAAAjADAAIwBAACMAUAAjAGAAIwBwACMAkAAjAMAAIwDQACMA4AAjAQAAIwEQACMIwAAjCOAAIwkQACMJMAAjCWAAIwlwACMJgAAjCZAAIwmgACMJwAAjCfAAIwoAACMKEAAjCjAAIwpAACMR8AAjEhAAIxJAACMSYAAjEpAAIxKgACMSsAAjEsAAIxLQACMS8AAjEyAAIxMwACMTQAAjE2AAIxNwACMboAAjHeAAIyAgACMiUAAjJMAAIybAACMpMAAjK6AAIy2gACMv4AAjMiAAIzJAACMycAAjMpAAIzKwACMy0AAjMwAAIzMwACMzUAAjM3AAIzOgACMzwAAjM+AAIzQQACM0QAAjNFAAIzSgACM2MAAjNoAAIzagACM28AAjNyAAIzdAACM70AAjPhAAI0CAACNCwAAjQvAAI0MQACNDMAAjQ1AAI0NwACNDkAAjQ6AAI0PQACNFYAAjR7AAI0fQACNH8AAjSBAAI0gwACNIUAAjSHAAI0iQACNIsAAjSNAAI0sgACNLUAAjS4AAI0uwACNL4AAjTBAAI0xAACNMcAAjTKAAI0zQACNM8AAjVKAAI1TAACNU8AAjVRAAI1VAACNVUAAjVWAAI1VwACNVgAAjVaAAI1XAACNV0AAjVeAAI1YAACNWEAAjVyAAI1cwACNXUAAjXwAAI18gACNfQAAjX2AAI1+QACNfoAAjX7AAI1/AACNf0AAjX/AAI2AQACNgIAAjYDAAI2BQACNgYAAjaBAAI2gwACNoYAAjaIAAI2iwACNowAAjaNAAI2jgACNo8AAjaRAAI2kwACNpQAAjaVAAI2lwACNpgAAjapAAI2rgACNrEAAjazAAI2xAACNtEAAjbUAAI21wACNtoAAjbcAAI2+AACNwoAAjcdAAI3mAACN5oAAjecAAI3ngACN6EAAjeiAAI3owACN6QAAjelAAI3pwACN6kAAjeqAAI3qwACN60AAjeuAAI4KQACOCsAAjguAAI4MAACODMAAjg0AAI4NQACODYAAjg3AAI4OQACODsAAjg8AAI4PQACOD8AAjhAAAI4UQACOFIAAjhUAAI4zwACONEAAjjTAAI41QACONgAAjjZAAI42gACONsAAjjcAAI43gACOOAAAjjhAAI44gACOOQAAjjlAAI5YAACOWIAAjllAAI5ZwACOWoAAjlrAAI5bAACOW0AAjluAAI5cAACOXIAAjlzAAI5dAACOXYAAjl3AAI5kAACOZEAAjmSAAI5lAACOg8AAjoRAAI6EwACOhUAAjoYAAI6GQACOhoAAjobAAI6HAACOh4AAjogAAI6IQACOiIAAjokAAI6JQACOqAAAjqiAAI6pQACOqcAAjqqAAI6qwACOqwAAjqtAAI6rgACOrAAAjqyAAI6swACOrQAAjq2AAI6twACOskAAjriAAI7DwACOxIAAjsVAAI7GAACOxsAAjseAAI7IQACOyQAAjsnAAI7KgACOy0AAjswAAI7XQACO2AAAjtjAAI7ZgACO2kAAjtsAAI7bwACO3IAAjt1AAI7eAACO3sAAjt+AAI7gAACO5wAAjuuAAI7uAACO78AAjvHAAI76wACO/MAAjwJAAI8JgACPC8AAjxCAAI81QACPPgAAj0YAAI9OAACPToAAj08AAI9PgACPUAAAj1DAAI9RAACPUUAAj1IAAI9SQACPUsAAj1MAAI9TgACPVEAAj1SAAI9UwACPVYAAj1XAAI9XAACPXUAAj1+AAI9gAACPYIAAj2LAAI9jgACPZEAAj2TAAI93AACPgAAAj4nAAI+SwACPk4AAj5QAAI+UgACPlQAAj5WAAI+WAACPlkAAj5cAAI+dQACPpY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AAk/zAAJP9QACT/gAAk/5AAJP+gACT/sAAk/8AAJP/gACUAAAAlABAAJQAgACUAQAAlAFAAJQTgACUHIAAlCZAAJQvQACUMAAAlDCAAJQxAACUMYAAlDIAAJQygACUMsAAlDOAAJQ5wACUQQAAlEGAAJRCAACUQoAAlEMAAJRDgACURAAAlESAAJRLwACUTIAAlE1AAJROAACUTsAAlE+AAJRQQACUUQAAlFGAAJRwQACUcMAAlHFAAJRxwACUcoAAlHLAAJRzAACUc0AAlHOAAJR0AACUdIAAlHTAAJR1AACUdYAAlHXAAJSUgACUlQAAlJWAAJSWAACUlsAAlJcAAJSXQACUl4AAlJfAAJSYQACUmMAAlJkAAJSZQACUmcAAlJoAAJS4wACUuUAAlLnAAJS6QACUuwAAlLtAAJS7gACUu8AAlLwAAJS8gACUvQAAlL1AAJS9gACUvgAAlL5AAJTdAACU3YAAlN5AAJTewACU34AAlN/AAJTgAACU4EAAlOCAAJThAACU4YAAlOHAAJTiAACU4oAAlOLAAJUBgACVAgAAlQKAAJUDAACVA8AAlQQAAJUEQACVBIAAlQTAAJUFQACVBcAAlQYAAJUGQACVBsAAlQcAAJUlwACVJkAAlSbAAJUnQACVKAAAlShAAJUogACVKMAAlSkAAJUpgACVKgAAlSpAAJUqgACVKwAAlStAAJVKAACVSoAAlUsAAJVLgACVTEAAlUyAAJVMwACVTQAAlU1AAJVNwACVTkAAlU6AAJVOwACVT0AAlU+AAJV0QACVfQAAlYUAAJWNAACVjYAAlY4AAJWOgACVjwAAlY/AAJWQAACVkEAAlZEAAJWRQACVkcAAlZIAAJWSgACVk0AAlZOAAJWTwACVlIAAlZTAAJWWAACVnEAAlZ6AAJWfAACVn4AAlaHAAJWigACVo0AAlaPAAJW2AACVvwAAlcjAAJXRwACV0oAAldMAAJXTgACV1AAAldSAAJXVAACV1UAAldYAAJXcQACV5IAAleUAAJXlgACV5gAAleaAAJXnAACV54AAlegAAJXogACV8MAAlfGAAJXyQACV8wAAlfPAAJX0gACV9UAAlfYAAJX2wACV90AAlhYAAJYWgACWFwAAlheAAJYYQACWGIAAlhjAAJYZAACWGUAAlhnAAJYaQACWGoAAlhrAAJYbQACWG4AAljpAAJY6wACWO0AAljvAAJY8gACWPMAAlj0AAJY9QACWPYAAlj4AAJY+gACWPsAAlj8AAJY/gACWP8AAll6AAJZfAACWX8AAlmBAAJZhAACWYUAAlmGAAJZhwACWYgAAlmKAAJZjAACWY0AAlmOAAJZkAACWZEAAlmqAAJZqwACWawAAlmuAAJaKQACWisAAlotAAJaLwACWjIAAlozAAJaNAACWjUAAlo2AAJaOAACWjoAAlo7AAJaPAACWj4AAlo/AAJaugACWrwAAlq+AAJawAACWsMAAlrEAAJaxQACWsYAAlrHAAJayQACWssAAlrMAAJazQACWs8AAlrQAAJbSwACW00AAltPAAJbUQACW1QAAltVAAJbVgACW1cAAltYAAJbWgACW1wAAltdAAJbXgACW2AAAlthAAJb3AACW94AAlvgAAJb4gACW+UAAlvmAAJb5wACW+gAAlvpAAJb6wACW+0AAlvuAAJb7wACW/EAAlvyAAJcbQACXG8AAlxxAAJccwACXHYAAlx3AAJceAACXHkAAlx6AAJcfAACXH4AAlx/AAJcgAACXIIAAlyDAAJczAACXPAAAl0XAAJdOwACXT4AAl1AAAJdQgACXUQAAl1GAAJdSAACXUkAAl1MAAJdZQACXYIAAl2EAAJdhgACXYgAAl2KAAJdjAACXY4AAl2QAAJdrQACXbAAAl2zAAJdtgACXbkAAl28AAJdvwACXcIAAl3EAAJePwACXkEAAl5DAAJeRQACXkgAAl5JAAJeSgACXksAAl5MAAJeTgACXlAAAl5RAAJeUgACXlQAAl5VAAJe0AACXtIAAl7UAAJe1gACXtkAAl7aAAJe2wACXtwAAl7dAAJe3wACXuEAAl7iAAJe4wACXuUAAl7mAAJfYQACX2MAAl9lAAJfZwACX2oAAl9rAAJfbAACX20AAl9uAAJfcAACX3IAAl9zAAJfdAACX3YAAl93AAJf8gACX/QAAl/2AAJf+AACX/sAAl/8AAJf/QACX/4AAl//AAJgAQACYAMAAmAEAAJgBQACYAcAAmAIAAJggwACYIUAAmCHAAJgiQACYIwAAmCNAAJgjgACYI8AAmCQAAJgkgACYJQAAmCVAAJglgACYJgAAmCZAAJhFAACYRYAAmEYAAJhGgACYR0AAmEeAAJhHwACYSAAAmEhAAJhIwACYSUAAmEmAAJhJwACYSkAAmEqAAJhpQACYacAAmGpAAJhqwACYa4AAmGvAAJhsAACYbEAAmGyAAJhtAACYbYAAmG3AAJhuAACYboAAmG7AAJiTgACYnEAAmKRAAJisQACYrMAAmK1AAJitwACYrkAAmK8AAJivQACYr4AAmLBAAJiwgACYsQAAmLFAAJiyAACYssAAmLMAAJizQACYtAAAmLRAAJi2gACYvMAAmL8AAJi/gACYwEAAmMKAAJjDQACYxAAAmMSAAJjWwACY38AAmOmAAJjygACY80AAmPPAAJj0QACY9MAAmPVAAJj1wACY9gAAmPbAAJj9AACZBUAAmQXAAJkGQACZBsAAmQdAAJkHwACZCEAAmQjAAJkJQACZEYAAmRJAAJkTAACZE8AAmRSAAJkVQACZFgAAmRbAAJkXgACZGAAAmTbAAJk3QACZN8AAmThAAJk5AACZOUAAmTmAAJk5wACZOgAAmTqAAJk7AACZO0AAmTuAAJk8AACZPEAAmVsAAJlbgACZXAAAmVyAAJldQACZXYAAmV3AAJleAACZXkAAmV7AAJlfQACZX4AAmV/AAJlgQACZYIAAmX9AAJl/wACZgIAAmYEAAJmBwACZggAAmYJAAJmCgACZgsAAmYNAAJmDwACZhAAAmYRAAJmEwACZhQAAmYtAAJmLgACZi8AAmYxAAJmrAACZq4AAmawAAJmsgACZrUAAma2AAJmtwACZrgAAma5AAJmuwACZr0AAma+AAJmvwACZsEAAmbCAAJnPQACZz8AAmdBAAJnQwACZ0YAAmdHAAJnSAACZ0kAAmdKAAJnTAACZ04AAmdPAAJnUAACZ1IAAmdTAAJnzgACZ9AAAmfSAAJn1AACZ9cAAmfYAAJn2QACZ9oAAmfbAAJn3QACZ98AAmfgAAJn4QACZ+MAAmfkAAJoXwACaGEAAmhjAAJoZQACaGgAAmhpAAJoagACaGsAAmhsAAJobgACaHAAAmhxAAJocgACaHQAAmh1AAJo8AACaPIAAmj0AAJo9gACaPkAAmj6AAJo+wACaPwAAmj9AAJo/wACaQEAAmkCAAJpAwACaQUAAmkGAAJpTwACaXMAAmmaAAJpvgACacEAAmnEAAJpxgACacgAAmnKAAJpzAACac0AAmnQAAJp6QACagYAAmoJAAJqDAACag8AAmoSAAJqFQACahgAAmobAAJqOAACajsAAmo+AAJqQQACakQAAmpHAAJqSgACak0AAmpPAAJqygACaswAAmrPAAJq0QACatQAAmrVAAJq1gACatcAAmrYAAJq2gACat0AAmreAAJq3wACauEAAmriAAJrXQACa18AAmtiAAJrZAACa2cAAmtoAAJraQACa2oAAmtrAAJrbQACa3AAAmtxAAJrcgACa3QAAmt1AAJr8AACa/IAAmv1AAJr9wACa/oAAmv7AAJr/AACa/0AAmv+AAJsAAACbAMAAmwEAAJsBQACbAcAAmwIAAJsgwACbIUAAmyIAAJsigACbI0AAmyOAAJsjwACbJAAAmyRAAJskwACbJYAAmyXAAJsmAACbJoAAmybAAJtHgACbUIAAm1mAAJtiQACbbAAAm3QAAJt9wACbh4AAm4+AAJuYgACboYAAm6IAAJuiwACbo0AAm6PAAJukQACbpQAAm6XAAJumQACbpsAAm6eAAJuoAACbqIAAm6lAAJuqAACbqkAAm6uAAJuxwACbswAAm7OAAJu0wACbtYAAm7YAAJvIQACb0UAAm9sAAJvkAACb5MAAm+VAAJvlwACb5kAAm+bAAJvnQACb54AAm+hAAJvugACb98AAm/hAAJv4wACb+UAAm/nAAJv6QACb+sAAm/tAAJv7wACb/EAAnAWAAJwGQACcBwAAnAfAAJwIgACcCUAAnAoAAJwKwACcC4AAnAxAAJwMwACcK4AAnCwAAJwswACcLUAAnC4AAJwuQACcLoAAnC7AAJwvAACcL4AAnDAAAJwwQACcMIAAnDEAAJwxQACcNYAAnDXAAJw2QACcVQAAnFWAAJxWAACcVoAAnFdAAJxXgACcV8AAnFgAAJxYQACcWMAAnFlAAJxZgACcWcAAnFpAAJxagACceUAAnHnAAJx6gACcewAAnHvAAJx8AACcfEAAnHyAAJx8wACcfUAAnH3AAJx+AACcfkAAnH7AAJx/AACcg0AAnISAAJyFQACchcAAnIoAAJyOQACcjwAAnI/AAJyQgACckUAAnJHAAJyYwACcnUAAnKIAAJylAACcw8AAnMRAAJzEwACcxUAAnMYAAJzGQACcxoAAnMbAAJzHAACcx4AAnMgAAJzIQACcyIAAnMkAAJzJQACc6AAAnOiAAJzpQACc6cAAnOqAAJzqwACc6wAAnOtAAJzrgACc7AAAnOyAAJzswACc7QAAnO2AAJztwACc8gAAnPJAAJzywACdEYAAnRIAAJ0SgACdEwAAnRPAAJ0UAACdFEAAnRSAAJ0UwACdFUAAnRXAAJ0WAACdFkAAnRbAAJ0XAACdNcAAnTZAAJ03AACdN4AAnThAAJ04gACdOMAAnTkAAJ05QACdOcAAnTpAAJ06gACdOsAAnTtAAJ07gACdQcAAnUIAAJ1CQACdQsAAnWGAAJ1iAACdYoAAnWMAAJ1jwACdZAAAnWRAAJ1kgACdZMAAnWVAAJ1lwACdZgAAnWZAAJ1mwACdZwAAnYXAAJ2GQACdhwAAnYeAAJ2IQACdiIAAnYjAAJ2JAACdiUAAnYnAAJ2KQACdioAAnYrAAJ2LQACdi4AAnZFAAJ2XgACdosAAnaOAAJ2kQACdpQAAnaXAAJ2mgACdp0AAnagAAJ2owACdqYAAnapAAJ2rAACdtkAAnbcAAJ23wACduIAAnblAAJ26AACdusAAnbuAAJ28QACdvQAAnb3AAJ2+gACdvwAAncOAAJ3JgACdzoAAndlAAJ3cQACd4sAAnehAAJ3qwACd7YAAnfSAAJ35QACeHgAAnibAAJ4uwACeNsAAnjdAAJ43wACeOEAAnjjAAJ45gACeOcAAnjoAAJ46wACeOwAAnjuAAJ47wACePEAAnj0AAJ49QACePYAAnj5AAJ4+gACeP8AAnkYAAJ5IQACeSMAAnklAAJ5LgACeTEAAnk0AAJ5NgACeX8AAnmjAAJ5ygACee4AAnnxAAJ58wACefUAAnn3AAJ5+QACefsAAnn8AAJ5/wACehgAAno5AAJ6OwACej0AAno/AAJ6QQACekMAAnpFAAJ6RwACekkAAnpqAAJ6bQACenAAAnpzAAJ6dgACenkAAnp8AAJ6fwACeoIAAnqEAAJ6/wACewEAAnsDAAJ7BQACewgAAnsJAAJ7CgACewsAAnsMAAJ7DgACexAAAnsRAAJ7EgACexQAAnsVAAJ7kAACe5IAAnuUAAJ7lgACe5kAAnuaAAJ7mwACe5wAAnudAAJ7nwACe6EAAnuiAAJ7owACe6UAAnumAAJ8IQACfCMAAnwmAAJ8KAACfCsAAnwsAAJ8LQACfC4AAnwvAAJ8MQACfDMAAnw0AAJ8NQACfDcAAnw4AAJ8UQACfFIAAnxTAAJ8VQACfNAAAnzSAAJ81AACfNYAAnzZAAJ82gACfNsAAnzcAAJ83QACfN8AAnzhAAJ84gACfOMAAnzlAAJ85gACfWEAAn1jAAJ9ZQACfWcAAn1qAAJ9awACfWwAAn1tAAJ9bgACfXAAAn1yAAJ9cwACfXQAAn12AAJ9dwACffIAAn30AAJ99gACffgAAn37AAJ9/AACff0AAn3+AAJ9/wACfgEAAn4DAAJ+BAACfgUAAn4HAAJ+CAACfoMAAn6FAAJ+hwACfokAAn6MAAJ+jQACfo4AAn6PAAJ+kAACfpIAAn6UAAJ+lQACfpYAAn6YAAJ+mQACfxQAAn8WAAJ/GAACfxoAAn8dAAJ/HgACfx8AAn8gAAJ/IQACfyMAAn8lAAJ/JgACfycAAn8pAAJ/KgACf3MAAn+XAAJ/vgACf+IAAn/lAAJ/5wACf+kAAn/rAAJ/7QACf+8AAn/wAAJ/8wACgAwAAoApAAKAKwACgC0AAoAvAAKAMQACgDMAAoA1AAKANwACgFQAAoBXAAKAWgACgF0AAoBgAAKAYwACgGYAAoBpAAKAawACgOYAAoDoAAKA6gACgOwAAoDvAAKA8AACgPEAAoDyAAKA8wACgPUAAoD3AAKA+AACgPkAAoD7AAKA/AACgXcAAoF5AAKBewACgX0AAoGAAAKBgQACgYIAAoGDAAKBhAACgYYAAoGIAAKBiQACgYoAAoGMAAKBjQACgggAAoIKAAKCDAACgg4AAoIRAAKCEgACghMAAoIUAAKCFQACghcAAoIZAAKCGgACghsAAoIdAAKCHgACgpkAAoKbAAKCngACgqAAAoKjAAKCpAACgqUAAoKmAAKCpwACgqkAAoKrAAKCrAACgq0AAoKvAAKCsAACgysAAoMtAAKDLwACgzEAAoM0AAKDNQACgzYAAoM3AAKDOAACgzoAAoM8AAKDPQACgz4AAoNAAAKDQQACg7wAAoO+AAKDwAACg8IAAoPFAAKDxgACg8cAAoPIAAKDyQACg8sAAoPNAAKDzgACg88AAoPRAAKD0gAChE0AAoRPAAKEUQAChFMAAoRWAAKEVwAChFgAAoRZAAKEWgAChFwAAoReAAKEXwAChGAAAoRiAAKEYwAChPYAAoUZAAKFOQAChVkAAoVbAAKFXQAChV8AAoVhAAKFZAAChWUAAoVmAAKFaQAChWoAAoVsAAKFbQAChW8AAoVyAAKFcwAChXQAAoV3AAKFeAAChX0AAoWWAAKFnwAChaEAAoWjAAKFrAACha8AAoWyAAKFtAAChf0AAoYhAAKGSAAChmwAAoZvAAKGcQAChnMAAoZ1AAKGdwAChnkAAoZ6AAKGfQAChpYAAoa3AAKGuQAChrsAAoa9AAKGvwAChsEAAobDAAKGxQAChscAAoboAAKG6wAChu4AAobxAAKG9AAChvcAAob6AAKG/QAChwAAAocCAAKHfQACh38AAoeBAAKHgwACh4YAAoeHAAKHiAACh4kAAoeKAAKHjAACh44AAoePAAKHkAACh5IAAoeTAAKIDgACiBAAAogSAAKIFAACiBcAAogYAAKIGQACiBoAAogbAAKIHQACiB8AAoggAAKIIQACiCMAAogkAAKInwACiKEAAoikAAKIpgACiKkAAoiqAAKIqwACiKwAAoitAAKIrwACiLEAAoiyAAKIswACiLUAAoi2AAKIzwACiNAAAojRAAKI0wACiU4AAolQAAKJUgACiVQAAolXAAKJWAACiVkAAolaAAKJWwACiV0AAolfAAKJYAACiWEAAoljAAKJZAACid8AAonhAAKJ4wACieUAAonoAAKJ6QACieoAAonrAAKJ7AACie4AAonwAAKJ8QACifIAAon0AAKJ9QACinAAAopyAAKKdAACinYAAop5AAKKegACinsAAop8AAKKfQACin8AAoqBAAKKggACioMAAoqFAAKKhgACiwEAAosDAAKLBQACiwcAAosKAAKLCwACiwwAAosNAAKLDgACixAAAosSAAKLEwACixQAAosWAAKLFwACi5IAAouUAAKLlgACi5gAAoubAAKLnAACi50AAoueAAKLnwACi6EAAoujAAKLpAACi6UAAounAAKLqAACi/EAAowVAAKMPAACjGAAAoxjAAKMZQACjGcAAoxpAAKMawACjG0AAoxuAAKMcQACjIoAAoynAAKMqQACjKsAAoytAAKMrwACjLEAAoyzAAKMtQACjNIAAozVAAKM2AACjNsAAozeAAKM4QACjOQAAoznAAKM6QACjWQAAo1mAAKNaAACjWoAAo1tAAKNbgACjW8AAo1wAAKNcQACjXMAAo11AAKNdgACjXcAAo15AAKNegACjfUAAo33AAKN+QACjfsAAo3+AAKN/wACjgAAAo4BAAKOAgACjgQAAo4GAAKOBwACjggAAo4KAAKOCwACjoYAAo6IAAKOigACjowAAo6PAAKOkAACjpEAAo6SAAKOkwACjpUAAo6XAAKOmAACjpkAAo6bAAKOnAACjxcAAo8ZAAKPGwACjx0AAo8gAAKPIQACjyIAAo8jAAKPJAACjyYAAo8oAAKPKQACjyoAAo8sAAKPLQACj6gAAo+qAAKPrAACj64AAo+xAAKPsgACj7MAAo+0AAKPtQACj7cAAo+5AAKPugACj7sAAo+9AAKPvgACkDkAApA7AAKQPQACkD8AApBCAAKQQwACkEQAApBFAAKQRgACkEgAApBKAAKQSwACkEwAApBOAAKQTwACkMoAApDMAAKQzgACkNAAApDTAAKQ1AACkNUAApDWAAKQ1wACkNkAApDbAAKQ3AACkN0AApDfAAKQ4AACkXMAApGWAAKRtgACkdYAApHYAAKR2gACkdwAApHeAAKR4QACkeIAApHjAAKR5gACkecAApHpAAKR6gACkewAApHvAAKR8AACkfEAApH0AAKR9QACkfoAApITAAKSHAACkh4AApIgAAKSKQACkiwAApIvAAKSMQACknoAApKeAAKSxQACkukAApLsAAKS7gACkvAAApLyAAKS9AACkvYAApL3AAKS+gACkxMAApM0AAKTNgACkzgAApM6AAKTPAACkz4AApNAAAKTQgACk0QAApNlAAKTaAACk2sAApNuAAKTcQACk3QAApN3AAKTegACk30AApN/AAKT+gACk/wAApP+AAKUAAAClAMAApQEAAKUBQAClAYAApQHAAKUCQAClAsAApQMAAKUDQAClA8AApQQAAKUiwAClI0AApSPAAKUkQAClJQAApSVAAKUlgAClJcAApSYAAKUmgAClJwAApSdAAKUngAClKAAApShAAKVHAAClR4AApUhAAKVIwAClSYAApUnAAKVKAAClSkAApUqAAKVLAAClS4AApUvAAKVMAAClTIAApUzAAKVTAAClU0AApVOAAKVUAAClcsAApXNAAKVzwACldEAApXUAAKV1QACldYAApXXAAKV2AACldoAApXcAAKV3QACld4AApXgAAKV4QACllwAApZeAAKWYAAClmIAApZlAAKWZgAClmcAApZoAAKWaQAClmsAApZtAAKWbgAClm8AApZxAAKWcgAClu0AApbvAAKW8QAClvMAApb2AAKW9wAClvgAApb5AAKW+gAClvwAApb+AAKW/wAClwAAApcCAAKXAwACl34AApeAAAKXggACl4QAApeHAAKXiAACl4kAApeKAAKXiwACl40AApePAAKXkAACl5EAApeTAAKXlAACmA8AApgRAAKYEwACmBUAApgYAAKYGQACmBoAApgbAAKYHAACmB4AApggAAKYIQACmCIAApgkAAKYJQACmG4AApiSAAKYuQACmN0AApjgAAKY4gACmOQAApjmAAKY6AACmOoAApjrAAKY7gACmQcAApkkAAKZJgACmSgAApkqAAKZLAACmS4AApkwAAKZMgACmU8AAplSAAKZVQACmVgAAplbAAKZXgACmWEAAplkAAKZZgACmeEAApnjAAKZ5QACmecAApnqAAKZ6wACmewAApntAAKZ7gACmfAAApnyAAKZ8wACmfQAApn2AAKZ9wACmnIAApp0AAKadgACmngAApp7AAKafAACmn0AApp+AAKafwACmoEAApqDAAKahAACmoUAApqHAAKaiAACmwMAApsFAAKbBwACmwkAApsMAAKbDQACmw4AApsPAAKbEAACmxIAApsUAAKbFQACmxYAApsYAAKbGQACm5QAApuWAAKbmQACm5sAApueAAKbnwACm6AAApuhAAKbogACm6QAApumAAKbpwACm6gAApuqAAKbqwACm64AApwpAAKcKwACnC0AApwvAAKcMgACnDMAApw0AAKcNQACnDYAApw4AAKcOgACnDsAApw8AAKcPgACnD8AApy6AAKcvAACnL4AApzAAAKcwwACnMQAApzFAAKcxgACnMcAApzJAAKcywACnMwAApzNAAKczwACnNAAAp1LAAKdTQACnU8AAp1RAAKdVAACnVUAAp1WAAKdVwACnVgAAp1aAAKdXAACnV0AAp1eAAKdYAACnWEAAp30AAKeFwACnjcAAp5XAAKeWQACnlsAAp5dAAKeXwACnmIAAp5jAAKeZAACnmcAAp5oAAKeagACnmsAAp5tAAKecAACnnEAAp5yAAKedQACnnYAAp57AAKelAACnp0AAp6fAAKeoQACnqoAAp6tAAKesAACnrIAAp77AAKfHwACn0YAAp9qAAKfbQACn28AAp9xAAKfcwACn3UAAp93AAKfeAACn3sAAp+UAAKftQACn7cAAp+5AAKfuwACn70AAp+/AAKfwQACn8MAAp/FAAKf5gACn+kAAp/sAAKf7wACn/IAAp/1AAKf+AACn/sAAp/+AAKgAAACoHsAAqB9AAKgfwACoIEAAqCEAAKghQACoIYAAqCHAAKgiAACoIoAAqCMAAKgjQACoI4AAqCQAAKgkQACoQwAAqEOAAKhEAACoRIAAqEVAAKhFgACoRcAAqEYAAKhGQACoRsAAqEdAAKhHgACoR8AAqEhAAKhIgACoZ0AAqGfAAKhogACoaQAAqGnAAKhqAACoakAAqGqAAKhqwACoa0AAqGvAAKhsAACobEAAqGzAAKhtAACoc0AAqHOAAKhzwACodEAAqJMAAKiTgAColAAAqJSAAKiVQAColYAAqJXAAKiWAAColkAAqJbAAKiXQACol4AAqJfAAKiYQAComIAAqLdAAKi3wACouEAAqLjAAKi5gACoucAAqLoAAKi6QACouoAAqLsAAKi7gACou8AAqLwAAKi8gACovMAAqNuAAKjcAACo3IAAqN0AAKjdwACo3gAAqN5AAKjegACo3sAAqN9AAKjfwACo4AAAqOBAAKjgwACo4QAAqP/AAKkAQACpAMAAqQFAAKkCAACpAkAAqQKAAKkCwACpAwAAqQOAAKkEAACpBEAAqQSAAKkFAACpBUAAqSQAAKkkgACpJQAAqSWAAKkmQACpJoAAqSbAAKknAACpJ0AAqSfAAKkoQACpKIAAqSjAAKkpQACpKYAAqTvAAKlEwACpToAAqVeAAKlYQACpWMAAqVlAAKlZwACpWkAAqVrAAKlbAACpW8AAqWIAAKlpQACpacAAqWpAAKlqwACpa0AAqWvAAKlsQACpbMAAqXQAAKl0wACpdYAAqXZAAKl3AACpd8AAqXiAAKl5QACpecAAqZiAAKmZAACpmcAAqZpAAKmbAACpm0AAqZuAAKmbwACpnAAAqZyAAKmdAACpnUAAqZ2AAKmeAACpnkAAqb0AAKm9gACpvgAAqb6AAKm/QACpv4AAqb/AAKnAAACpwEAAqcDAAKnBQACpwYAAqcHAAKnCQACpwoAAqeFAAKnhwACp4kAAqeLAAKnjgACp48AAqeQAAKnkQACp5IAAqeUAAKnlgACp5cAAqeYAAKnmgACp5sAAqgWAAKoGAACqBsAAqgdAAKoIAACqCEAAqgiAAKoIwACqCQAAqgmAAKoKAACqCkAAqgqAAKoLAACqC0AAqioAAKoqgACqKwAAqiuAAKosQACqLIAAqizAAKotAACqLUAAqi3AAKouQACqLoAAqi7AAKovQACqL4AAqk5AAKpOwACqT0AAqk/AAKpQgACqUMAAqlEAAKpRQACqUYAAqlIAAKpSgACqUsAAqlMAAKpTgACqU8AAqnKAAKpzAACqc4AAqnQAAKp0wACqdQAAqnVAAKp1gACqdcAAqnZAAKp2wACqdwAAqndAAKp3wACqeAAAqpzAAKqlgACqrYAAqrWAAKq2AACqtoAAqrcAAKq3gACquEAAqriAAKq4wACquYAAqrnAAKq6QACquoAAqrsAAKq7wACqvAAAqrxAAKq9AACqvUAAqr+AAKrFwACqyAAAqsiAAKrJAACqy0AAqswAAKrMwACqzUAAqt+AAKrogACq8kAAqvtAAKr8AACq/IAAqv0AAKr9gACq/gAAqv6AAKr+wACq/4AAqwXAAKsOAACrDoAAqw8AAKsPgACrEAAAqxCAAKsRAACrEYAAqxIAAKsaQACrGwAAqxvAAKscgACrHUAAqx4AAKsewACrH4AAqyBAAKsgwACrP4AAq0AAAKtAgACrQQAAq0HAAKtCAACrQkAAq0KAAKtCwACrQ0AAq0PAAKtEAACrREAAq0TAAKtFAACrY8AAq2RAAKtkwACrZUAAq2YAAKtmQACrZoAAq2bAAKtnAACrZ4AAq2gAAKtoQACraIAAq2kAAKtpQACriAAAq4iAAKuJQACricAAq4qAAKuKwACriwAAq4tAAKuLgACrjAAAq4yAAKuMwACrjQAAq42AAKuNwACrlAAAq5RAAKuUgACrlQAAq7PAAKu0QACrtMAAq7VAAKu2AACrtkAAq7aAAKu2wACrtwAAq7eAAKu4AACruEAAq7iAAKu5AACruUAAq9gAAKvYgACr2QAAq9mAAKvaQACr2oAAq9rAAKvbAACr20AAq9vAAKvcQACr3IAAq9zAAKvdQACr3YAAq/xAAKv8wACr/UAAq/3AAKv+gACr/sAAq/8AAKv/QACr/4AArAAAAKwAgACsAMAArAEAAKwBgACsAcAArCCAAKwhAACsIYAArCIAAKwiwACsIwAArCNAAKwjgACsI8AArCRAAKwkwACsJQAArCVAAKwlwACsJgAArETAAKxFQACsRcAArEZAAKxHAACsR0AArEeAAKxHwACsSAAArEiAAKxJAACsSUAArEmAAKxKAACsSkAArFyAAKxlgACsb0AArHhAAKx5AACseYAArHoAAKx6gACsewAArHuAAKx7wACsfIAArILAAKyKAACsioAArIsAAKyLgACsjAAArIyAAKyNAACsjYAArJTAAKyVgACslkAArJcAAKyXwACsmIAArJlAAKyaAACsmoAArLlAAKy5wACsukAArLrAAKy7gACsu8AArLwAAKy8QACsvIAArL0AAKy9gACsvcAArL4AAKy+gACsvsAArN2AAKzeAACs3oAArN8AAKzfwACs4AAArOBAAKzggACs4MAArOFAAKzhwACs4gAArOJAAKziwACs4wAArQHAAK0CQACtAsAArQNAAK0EAACtBEAArQSAAK0EwACtBQAArQWAAK0GAACtBkAArQaAAK0HAACtB0AArSYAAK0mgACtJwAArSeAAK0oQACtKIAArSjAAK0pAACtKUAArSnAAK0qQACtKoAArSrAAK0rQACtK4AArUpAAK1KwACtS0AArUvAAK1MgACtTMAArU0AAK1NQACtTYAArU4AAK1OgACtTsAArU8AAK1PgACtT8AArW6AAK1vAACtb4AArXAAAK1wwACtcQAArXFAAK1xgACtccAArXJAAK1ywACtcwAArXNAAK1zwACtdAAArZLAAK2TQACtk8AArZRAAK2VAACtlUAArZWAAK2VwACtlgAArZaAAK2XAACtl0AArZeAAK2YAACtmEAArb0AAK3FwACtzcAArdXAAK3WQACt1sAArddAAK3XwACt2IAArdjAAK3ZAACt2cAArdoAAK3agACt2sAArdtAAK3cAACt3EAArdyAAK3dQACt3YAArd7AAK3lAACt50AArefAAK3oQACt6oAAretAAK3sAACt7IAArf7AAK4HwACuEYAArhqAAK4bQACuG8AArhxAAK4cwACuHUAArh3AAK4eAACuHsAAriUAAK4tQACuLcAAri5AAK4uwACuL0AAri/AAK4wQACuMMAArjFAAK45gACuOkAArjsAAK47wACuPIAArj1AAK4+AACuPsAArj+AAK5AAACuXsAArl9AAK5fwACuYEAArmEAAK5hQACuYYAArmHAAK5iAACuYoAArmMAAK5jQACuY4AArmQAAK5kQACugwAAroOAAK6EAACuhIAAroVAAK6FgACuhcAAroYAAK6GQACuhsAArodAAK6HgACuh8AArohAAK6IgACup0AArqfAAK6ogACuqQAArqnAAK6qAACuqkAArqqAAK6qwACuq0AArqvAAK6sAACurEAArqzAAK6tAACus0AArrOAAK6zwACutEAArtMAAK7TgACu1AAArtSAAK7VQACu1YAArtXAAK7WAACu1kAArtbAAK7XQACu14AArtfAAK7YQACu2IAArvdAAK73wACu+EAArvjAAK75gACu+cAArvoAAK76QACu+oAArvsAAK77gACu+8AArvwAAK78gACu/MAArxuAAK8cAACvHIAArx0AAK8dwACvHgAArx5AAK8egACvHsAArx9AAK8fwACvIAAAryBAAK8gwACvIQAArz/AAK9AQACvQMAAr0FAAK9CAACvQkAAr0KAAK9CwACvQwAAr0OAAK9EAACvREAAr0SAAK9FAACvRUAAr2QAAK9kgACvZQAAr2WAAK9mQACvZoAAr2bAAK9nAACvZ0AAr2fAAK9oQACvaIAAr2jAAK9pQACvaYAAr3vAAK+EwACvjoAAr5eAAK+YQACvmMAAr5lAAK+ZwACvmkAAr5rAAK+bAACvm8AAr6IAAK+pQACvqcAAr6pAAK+qwACvq0AAr6vAAK+sQACvrMAAr7QAAK+0wACvtYAAr7ZAAK+3AACvt8AAr7iAAK+5QACvucAAr9iAAK/ZAACv2YAAr9oAAK/awACv2wAAr9tAAK/bgACv28AAr9xAAK/cwACv3QAAr91AAK/dwACv3gAAr/zAAK/9QACv/cAAr/5AAK//AACv/0AAr/+AAK//wACwAAAAsACAALABAACwAUAAsAGAALACAACwAkAAsCEAALAhgACwIgAAsCKAALAjQACwI4AAsCPAALAkAACwJEAAsCTAALAlQACwJYAAsCXAALAmQACwJoAAsEVAALBFwACwRkAAsEbAALBHgACwR8AAsEgAALBIQACwSIAAsEkAALBJgACwScAAsEoAALBKgACwSsAAsGmAALBqAACwaoAAsGsAALBrwACwbAAAsGxAALBsgACwbMAAsG1AALBtwACwbgAAsG5AALBuwACwbwAAsI3AALCOQACwjsAAsI9AALCQAACwkEAAsJCAALCQwACwkQAAsJGAALCSAACwkkAAsJKAALCTAACwk0AAsLIAALCygACwswAAsLOAALC0QACwtIAAsLTAALC1AACwtUAAsLXAALC2QACwtoAAsLbAALC3QACwt4AAsNxAALDlAACw7QAAsPUAALD1gACw9gAAsPaAALD3AACw98AAsPgAALD4QACw+QAAsPlAALD5wACw+gAAsPqAALD7QACw+4AAsPvAALD8gACw/MAAsP4AALEEQACxBoAAsQcAALEHgACxCcAAsQqAALELQACxC8AAsR4AALEnAACxMMAAsTnAALE6gACxOwAAsTuAALE8AACxPIAAsT0AALE9QACxPgAAsURAALFMgACxTQAAsU2AALFOAACxToAAsU8AALFPgACxUAAAsVCAALFYwACxWYAAsVpAALFbAACxW8AAsVyAALFdQACxXgAAsV7AALFfQACxfgAAsX6AALF/AACxf4AAsYBAALGAgACxgMAAsYEAALGBQACxgcAAsYJAALGCgACxgsAAsYNAALGDgACxokAAsaLAALGjQACxo8AAsaSAALGkwACxpQAAsaVAALGlgACxpgAAsaaAALGmwACxpwAAsaeAALGnwACxxoAAsccAALHHwACxyEAAsckAALHJQACxyYAAscnAALHKAACxyoAAscsAALHLQACxy4AAscwAALHMQACx0oAAsdLAALHTAACx04AAsfJAALHywACx80AAsfPAALH0gACx9MAAsfUAALH1QACx9YAAsfYAALH2gACx9sAAsfcAALH3gACx98AAshaAALIXAACyF4AAshgAALIYwACyGQAAshlAALIZgACyGcAAshpAALIawACyGwAAshtAALIbwACyHAAAsjrAALI7QACyO8AAsjxAALI9AACyPUAAsj2AALI9wACyPgAAsj6AALI/AACyP0AAsj+AALJAAACyQEAAsl8AALJfgACyYAAAsmCAALJhQACyYYAAsmHAALJiAACyYkAAsmLAALJjQACyY4AAsmPAALJkQACyZIAAsoNAALKDwACyhEAAsoTAALKFgACyhcAAsoYAALKGQACyhoAAsocAALKHgACyh8AAsogAALKIgACyiMAAspsAALKkAACyrcAAsrbAALK3gACyuAAAsriAALK5AACyuYAAsroAALK6QACyuwAAssFAALLIgACyyQAAssmAALLKAACyyoAAsssAALLLgACyzAAAstNAALLUAACy1MAAstWAALLWQACy1wAAstfAALLYgACy2QAAsvfAALL4QACy+MAAsvlAALL6AACy+kAAsvqAALL6wACy+wAAsvuAALL8AACy/EAAsvyAALL9AACy/UAAsxwAALMcgACzHQAAsx2AALMeQACzHoAAsx7AALMfAACzH0AAsx/AALMgQACzIIAAsyDAALMhQACzIYAAs0BAALNAwACzQUAAs0HAALNCgACzQsAAs0MAALNDQACzQ4AAs0QAALNEgACzRMAAs0UAALNFgACzRcAAs2SAALNlAACzZcAAs2ZAALNnAACzZ0AAs2eAALNnwACzaAAAs2iAALNpAACzaUAAs2mAALNqAACzakAAs4kAALOJgACzigAAs4qAALOLQACzi4AAs4vAALOMAACzjEAAs4zAALONQACzjYAAs43AALOOQACzjoAAs61AALOtwACzrkAAs67AALOvgACzr8AAs7AAALOwQACzsIAAs7EAALOxgACzscAAs7IAALOygACzssAAs9GAALPSAACz0oAAs9MAALPTwACz1AAAs9RAALPUgACz1MAAs9VAALPVwACz1gAAs9ZAALPWwACz1wAAs/vAALQEgAC0DIAAtBSAALQVAAC0FYAAtBYAALQWgAC0F0AAtBeAALQXwAC0GIAAtBjAALQZQAC0GYAAtBoAALQawAC0GwAAtBtAALQcAAC0HEAAtB2AALQjwAC0JgAAtCaAALQnAAC0KUAAtCoAALQqwAC0K0AAtD2AALRGgAC0UEAAtFlAALRaAAC0WoAAtFsAALRbgAC0XAAAtFyAALRcwAC0XYAAtGPAALRsAAC0bIAAtG0AALRtgAC0bgAAtG6AALRvAAC0b4AAtHAAALR4QAC0eQAAtHnAALR6gAC0e0AAtHwAALR8wAC0fYAAtH5AALR+wAC0nYAAtJ4AALSegAC0nwAAtJ/AALSgAAC0oEAAtKCAALSgwAC0oUAAtKHAALSiAAC0okAAtKLAALSjAAC0wcAAtMJAALTCwAC0w0AAtMQAALTEQAC0xIAAtMTAALTFAAC0xYAAtMYAALTGQAC0xoAAtMcAALTHQAC05gAAtOaAALTnQAC058AAtOiAALTowAC06QAAtOlAALTpgAC06gAAtOqAALTqwAC06wAAtOuAALTrwAC08gAAtPJAALTygAC08wAAtRHAALUSQAC1EsAAtRNAALUUAAC1FEAAtRSAALUUwAC1FQAAtRWAALUWAAC1FkAAtRaAALUXAAC1F0AAtTYAALU2gAC1NwAAtTeAALU4QAC1OIAAtTjAALU5AAC1OUAAtTnAALU6QAC1OoAAtTrAALU7QAC1O4AAtVpAALVawAC1W0AAtVvAALVcgAC1XMAAtV0AALVdQAC1XYAAtV4AALVegAC1XsAAtV8AALVfgAC1X8AAtX6AALV/AAC1f4AAtYAAALWAwAC1gQAAtYFAALWBgAC1gcAAtYJAALWCwAC1gwAAtYNAALWDwAC1hAAAtaLAALWjQAC1o8AAtaRAALWlAAC1pUAAtaWAALWlwAC1pgAAtaaAALWnAAC1p0AAtaeAALWoAAC1qEAAtbqAALXDgAC1zUAAtdZAALXXAAC114AAtdgAALXYgAC12QAAtdmAALXZwAC12oAAteDAALXoAAC16IAAtekAALXpgAC16gAAteqAALXrAAC164AAtfLAALXzgAC19EAAtfUAALX1wAC19oAAtfdAALX4AAC1+IAAthdAALYXwAC2GEAAthjAALYZgAC2GcAAthoAALYaQAC2GoAAthsAALYbgAC2G8AAthwAALYcgAC2HMAAtjuAALY8AAC2PIAAtj0AALY9wAC2PgAAtj5AALY+gAC2PsAAtj9AALY/wAC2QAAAtkBAALZAwAC2QQAAtl/AALZgQAC2YMAAtmFAALZiAAC2YkAAtmKAALZiwAC2YwAAtmOAALZkAAC2ZEAAtmSAALZlAAC2ZUAAtoQAALaEgAC2hUAAtoXAALaGgAC2hsAAtocAALaHQAC2h4AAtogAALaIgAC2iMAAtokAALaJgAC2icAAtqiAALapAAC2qYAAtqoAALaqwAC2qwAAtqtAALargAC2q8AAtqxAALaswAC2rQAAtq1AALatwAC2rgAAtszAALbNQAC2zcAAts5AALbPAAC2z0AAts+AALbPwAC20AAAttCAALbRAAC20UAAttGAALbSAAC20kAAtvEAALbxgAC28gAAtvKAALbzQAC284AAtvPAALb0AAC29EAAtvTAALb1QAC29YAAtvXAALb2QAC29oAAtxtAALckAAC3LAAAtzQAALc0gAC3NQAAtzWAALc2AAC3NsAAtzcAALc3QAC3OAAAtzhAALc4wAC3OQAAtznAALc6gAC3OsAAtzsAALc7wAC3PAAAtz1AALdDgAC3RcAAt0ZAALdHAAC3SUAAt0oAALdKwAC3S0AAt12AALdmgAC3cEAAt3lAALd6AAC3eoAAt3sAALd7gAC3fAAAt3yAALd8wAC3fYAAt4PAALeMAAC3jIAAt40AALeNgAC3jgAAt46AALePAAC3j4AAt5AAALeYQAC3mQAAt5nAALeagAC3m0AAt5wAALecwAC3nYAAt55AALeewAC3vYAAt74AALe+gAC3vwAAt7/AALfAAAC3wEAAt8CAALfAwAC3wUAAt8HAALfCAAC3wkAAt8LAALfDAAC34cAAt+JAALfiwAC340AAt+QAALfkQAC35IAAt+TAALflAAC35YAAt+YAALfmQAC35oAAt+cAALfnQAC4BgAAuAaAALgHQAC4B8AAuAiAALgIwAC4CQAAuAlAALgJgAC4CgAAuAqAALgKwAC4CwAAuAuAALgLwAC4EgAAuBJAALgSgAC4EwAAuDHAALgyQAC4MsAAuDNAALg0AAC4NEAAuDSAALg0wAC4NQAAuDWAALg2AAC4NkAAuDaAALg3AAC4N0AAuFYAALhWgAC4VwAAuFeAALhYQAC4WIAAuFjAALhZAAC4WUAAuFnAALhaQAC4WoAAuFrAALhbQAC4W4AAuHpAALh6wAC4e0AAuHvAALh8gAC4fMAAuH0AALh9QAC4fYAAuH4AALh+gAC4fsAAuH8AALh/gAC4f8AAuJ6AALifAAC4n4AAuKAAALigwAC4oQAAuKFAALihgAC4ocAAuKJAALiiwAC4owAAuKNAALijwAC4pAAAuMLAALjDQAC4w8AAuMRAALjFAAC4xUAAuMWAALjFwAC4xgAAuMaAALjHAAC4x0AAuMeAALjIAAC4yEAAuNqAALjjgAC47UAAuPZAALj3AAC498AAuPhAALj4wAC4+UAAuPnAALj6AAC4+sAAuQEAALkIQAC5CQAAuQnAALkKgAC5C0AAuQwAALkMwAC5DYAAuRTAALkVgAC5FkAAuRcAALkXwAC5GIAAuRlAALkaAAC5GoAAuTlAALk5wAC5OoAAuTsAALk7wAC5PAAAuTxAALk8gAC5PMAAuT1AALk+AAC5PkAAuT6AALk/AAC5P0AAuV4AALlegAC5X0AAuV/AALlggAC5YMAAuWEAALlhQAC5YYAAuWIAALliwAC5YwAAuWNAALljwAC5ZAAAuYLAALmDQAC5hAAAuYSAALmFQAC5hYAAuYXAALmGAAC5hkAAuYbAALmHgAC5h8AAuYgAALmIgAC5iMAAuaeAALmoAAC5qMAAualAALmqAAC5qkAAuaqAALmqwAC5qwAAuauAALmsQAC5rIAAuazAALmtQAC5rYAAucxAALnMwAC5zUAAuc3AALnOgAC5zsAAuc8AALnPQAC5z4AAudAAALnQwAC50QAAudFAALnRwAC50gAAufDAALnxQAC58cAAufJAALnzAAC580AAufOAALnzwAC59AAAufSAALn1QAC59YAAufXAALn2QAC59oAAuhVAALoVwAC6FoAAuhcAALoXwAC6GAAAuhhAALoYgAC6GMAAuhlAALoaAAC6GkAAuhqAALobAAC6G0AAukAAALpIwAC6UMAAuljAALpZQAC6WcAAulpAALpawAC6W4AAulvAALpcAAC6XMAAul0AALpdgAC6XcAAul5AALpfAAC6X0AAul+AALpgQAC6YIAAumHAALpoAAC6akAAumrAALprQAC6bYAAum5AALpvAAC6b4AAuoHAALqKwAC6lIAAup2AALqeQAC6nsAAup9AALqfwAC6oEAAuqDAALqhAAC6ocAAuqgAALqwQAC6sMAAurFAALqxwAC6skAAurLAALqzQAC6s8AAurRAALq8gAC6vUAAur4AALq+wAC6v4AAusBAALrBAAC6wcAAusKAALrDAAC64cAAuuJAALriwAC640AAuuQAALrkQAC65IAAuuTAALrlAAC65YAAuuYAALrmQAC65oAAuucAALrnQAC7BgAAuwaAALsHAAC7B4AAuwhAALsIgAC7CMAAuwkAALsJQAC7CcAAuwpAALsKgAC7CsAAuwtAALsLgAC7KkAAuyrAALsrgAC7LAAAuyzAALstAAC7LUAAuy2AALstwAC7LkAAuy7AALsvAAC7L0AAuy/AALswAAC7NkAAuzaAALs2wAC7N0AAu1YAALtWgAC7VwAAu1eAALtYQAC7WIAAu1jAALtZAAC7WUAAu1nAALtaQAC7WoAAu1rAALtbQAC7W4AAu3pAALt6wAC7e0AAu3vAALt8gAC7fMAAu30AALt9QAC7fYAAu34AALt+gAC7fsAAu38AALt/gAC7f8AAu56AALufAAC7n4AAu6AAALugwAC7oQAAu6FAALuhgAC7ocAAu6JAALuiwAC7owAAu6NAALujwAC7pAAAu8LAALvDQAC7w8AAu8RAALvFAAC7xUAAu8WAALvFwAC7xgAAu8aAALvHAAC7x0AAu8eAALvIAAC7yEAAu+cAALvngAC76AAAu+iAALvpQAC76YAAu+nAALvqAAC76kAAu+rAALvrQAC764AAu+vAALvsQAC77IAAu/7AALwHwAC8EYAAvBqAALwbQAC8G8AAvBxAALwcwAC8HUAAvB3AALweAAC8HsAAvCUAALwsQAC8LMAAvC1AALwtwAC8LkAAvC7AALwvQAC8L8AAvDcAALw3wAC8OIAAvDlAALw6AAC8OsAAvDuAALw8QAC8PMAAvFuAALxcAAC8XIAAvF0AALxdwAC8XgAAvF5AALxegAC8XsAAvF9AALxfwAC8YAAAvGBAALxgwAC8YQAAvH/AALyAQAC8gMAAvIFAALyCAAC8gkAAvIKAALyCwAC8gwAAvIOAALyEAAC8hEAAvISAALyFAAC8hUAAvKQAALykgAC8pQAAvKWAALymQAC8poAAvKbAALynAAC8p0AAvKfAALyoQAC8qIAAvKjAALypQAC8qYAAvMhAALzIwAC8yYAAvMoAALzKwAC8ywAAvMtAALzLgAC8y8AAvMxAALzMwAC8zQAAvM1AALzNwAC8zgAAvOzAALztQAC87cAAvO5AALzvAAC870AAvO+AALzvwAC88AAAvPCAALzxAAC88UAAvPGAALzyAAC88kAAvREAAL0RgAC9EgAAvRKAAL0TQAC9E4AAvRPAAL0UAAC9FEAAvRTAAL0VQAC9FYAAvRXAAL0WQAC9FoAAvTVAAL01wAC9NkAAvTbAAL03gAC9N8AAvTgAAL04QAC9OIAAvTkAAL05gAC9OcAAvToAAL06gAC9OsAAvV+AAL1oQAC9cEAAvXhAAL14wAC9eUAAvXnAAL16QAC9ewAAvXtAAL17gAC9fEAAvXyAAL19AAC9fUAAvX3AAL1+gAC9fsAAvX8AAL1/wAC9gAAAvYFAAL2HgAC9icAAvYpAAL2KwAC9jQAAvY3AAL2OgAC9jwAAvaFAAL2qQAC9tAAAvb0AAL29wAC9vkAAvb7AAL2/QAC9v8AAvcBAAL3AgAC9wUAAvceAAL3PwAC90EAAvdDAAL3RQAC90cAAvdJAAL3SwAC900AAvdPAAL3cAAC93MAAvd2AAL3eQAC93wAAvd/AAL3ggAC94UAAveIAAL3igAC+AUAAvgHAAL4CQAC+AsAAvgOAAL4DwAC+BAAAvgRAAL4EgAC+BQAAvgWAAL4FwAC+BgAAvgaAAL4GwAC+JYAAviYAAL4mgAC+JwAAvifAAL4oAAC+KEAAviiAAL4owAC+KUAAvinAAL4qAAC+KkAAvirAAL4rAAC+ScAAvkpAAL5LAAC+S4AAvkxAAL5MgAC+TMAAvk0AAL5NQAC+TcAAvk5AAL5OgAC+TsAAvk9AAL5PgAC+VcAAvlYAAL5WQAC+VsAAvnWAAL52AAC+doAAvncAAL53wAC+eAAAvnhAAL54gAC+eMAAvnlAAL55wAC+egAAvnpAAL56wAC+ewAAvpnAAL6aQAC+msAAvptAAL6cAAC+nEAAvpyAAL6cwAC+nQAAvp2AAL6eAAC+nkAAvp6AAL6fAAC+n0AAvr4AAL6+gAC+vwAAvr+AAL7AQAC+wIAAvsDAAL7BAAC+wUAAvsHAAL7CQAC+woAAvsLAAL7DQAC+w4AAvuJAAL7iwAC+40AAvuPAAL7kgAC+5MAAvuUAAL7lQAC+5YAAvuYAAL7mgAC+5sAAvucAAL7ngAC+58AAvwaAAL8HAAC/B4AAvwgAAL8IwAC/CQAAvwlAAL8JgAC/CcAAvwpAAL8KwAC/CwAAvwtAAL8LwAC/DAAAvx5AAL8nQAC/MQAAvzoAAL86wAC/O0AAvzvAAL88QAC/PMAAvz1AAL89gAC/PkAAv0SAAL9LwAC/TEAAv0zAAL9NQAC/TcAAv05AAL9OwAC/T0AAv1aAAL9XQAC/WAAAv1jAAL9ZgAC/WkAAv1sAAL9bwAC/XEAAv3sAAL97gAC/fAAAv3yAAL99QAC/fYAAv33AAL9+AAC/fkAAv37AAL9/QAC/f4AAv3/AAL+AQAC/gIAAv59AAL+fwAC/oEAAv6DAAL+hgAC/ocAAv6IAAL+iQAC/ooAAv6MAAL+jgAC/o8AAv6QAAL+kgAC/pMAAv8OAAL/EAAC/xIAAv8UAAL/FwAC/xgAAv8ZAAL/GgAC/xsAAv8dAAL/HwAC/yAAAv8hAAL/IwAC/yQAAv+fAAL/oQAC/6MAAv+lAAL/qAAC/6kAAv+qAAL/qwAC/6wAAv+uAAL/sAAC/7EAAv+yAAL/tAAC/7UAAwAwAAMAMgADADQAAwA2AAMAOQADADoAAwA7AAMAPAADAD0AAwA/AAMAQQADAEIAAwBDAAMARQADAEYAAwDBAAMAwwADAMUAAwDHAAMAygADAMsAAwDMAAMAzQADAM4AAwDQAAMA0gADANMAAwDUAAMA1gADANcAAwFSAAMBVAADAVYAAwFYAAMBWwADAVwAAwFdAAMBXgADAV8AAwFhAAMBYwADAWQAAwFlAAMBZwADAWgAAwF5AAMBegADAXwAAwH3AAMB+QADAfsAAwH9AAMCAAADAgEAAwICAAMCAwADAgQAAwIGAAMCCQADAgoAAwILAAMCDQADAg4AAwKJAAMCiwADAo0AAwKPAAMCkgADApMAAwKUAAMClQADApYAAwKYAAMCmwADApwAAwKdAAMCnwADAqAAAwMbAAMDHQADAyAAAwMiAAMDJQADAyYAAwMnAAMDKAADAykAAwMrAAMDLgADAy8AAwMwAAMDMgADAzMAAwPGAAMD6QADBAkAAwQpAAMEKwADBC0AAwQvAAMEMQADBDQAAwQ1AAMENgADBDkAAwQ6AAMEPAADBD0AAwRAAAMEQwADBEQAAwRFAAMESAADBEkAAwROAAMEZwADBHAAAwRyAAMEdQADBH4AAwSBAAMEhAADBIYAAwTPAAME8wADBRoAAwU+AAMFQQADBUMAAwVFAAMFRwADBUkAAwVLAAMFTAADBU8AAwVoAAMFiQADBYsAAwWNAAMFjwADBZEAAwWTAAMFlQADBZcAAwWZAAMFugADBb0AAwXAAAMFwwADBcYAAwXJAAMFzAADBc8AAwXSAAMF1AADBk8AAwZRAAMGUwADBlUAAwZYAAMGWQADBloAAwZbAAMGXAADBl4AAwZgAAMGYQADBmIAAwZkAAMGZQADBuAAAwbiAAMG5AADBuYAAwbpAAMG6gADBusAAwbsAAMG7QADBu8AAwbxAAMG8gADBvMAAwb1AAMG9gADB3EAAwdzAAMHdgADB3gAAwd7AAMHfAADB30AAwd+AAMHfwADB4EAAweDAAMHhAADB4UAAweHAAMHiAADB6EAAweiAAMHowADB6UAAwggAAMIIgADCCQAAwgmAAMIKQADCCoAAwgrAAMILAADCC0AAwgvAAMIMQADCDIAAwgzAAMINQADCDYAAwixAAMIswADCLUAAwi3AAMIugADCLsAAwi8AAMIvQADCL4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AAyL7AAMi/QADIv4AAyN5AAMjewADI30AAyN/AAMjggADI4MAAyOEAAMjhQADI4YAAyOIAAMjigADI4sAAyOMAAMjjgADI48AAyPYAAMj/AADJCMAAyRHAAMkSgADJE0AAyRPAAMkUQADJFMAAyRVAAMkVgADJFkAAyRyAAMkjwADJJIAAySVAAMkmAADJJsAAySeAAMkoQADJKQAAyTBAAMkxAADJMcAAyTKAAMkzQADJNAAAyTTAAMk1gADJNgAAyVTAAMlVQADJVgAAyVaAAMlXQADJV4AAyVfAAMlYAADJWEAAyVjAAMlZgADJWcAAyVoAAMlagADJWsAAyXmAAMl6AADJesAAyXtAAMl8AADJfEAAyXyAAMl8wADJfQAAyX2AAMl+QADJfoAAyX7AAMl/QADJf4AAyZ5AAMmewADJn4AAyaAAAMmgwADJoQAAyaFAAMmhgADJocAAyaJAAMmjAADJo0AAyaOAAMmkAADJpEAAycMAAMnDgADJxEAAycTAAMnFgADJxcAAycYAAMnGQADJxoAAyccAAMnHwADJyAAAychAAMnIwADJyQAAyenAAMnywADJ+8AAygSAAMoOQADKFkAAyiAAAMopwADKMcAAyjrAAMpDwADKREAAykUAAMpFgADKRgAAykaAAMpHQADKSAAAykiAAMpJAADKScAAykpAAMpKwADKS4AAykxAAMpMgADKTcAAylQAAMpVQADKVcAAylcAAMpXwADKWEAAymqAAMpzgADKfUAAyoZAAMqHAADKh4AAyogAAMqIgADKiQAAyomAAMqJwADKioAAypDAAMqaAADKmoAAypsAAMqbgADKnAAAypyAAMqdAADKnYAAyp4AAMqegADKp8AAyqiAAMqpQADKqgAAyqrAAMqrgADKrEAAyq0AAMqtwADKroAAyq8AAMrNwADKzkAAys8AAMrPgADK0EAAytCAAMrQwADK0QAAytFAAMrRwADK0kAAytKAAMrSwADK00AAytOAAMrXwADK2AAAytiAAMr3QADK98AAyvhAAMr4wADK+YAAyvnAAMr6AADK+kAAyvqAAMr7AADK+4AAyvvAAMr8AADK/IAAyvzAAMsbgADLHAAAyxzAAMsdQADLHgAAyx5AAMsegADLHsAAyx8AAMsfgADLIAAAyyBAAMsggADLIQAAyyFAAMslgADLJsAAyyeAAMsoAADLLEAAyy2AAMsuQADLLsAAyzJAAMtRAADLUYAAy1IAAMtSgADLU0AAy1OAAMtTwADLVAAAy1RAAMtUwADLVUAAy1WAAMtVwADLVkAAy1aAAMt1QADLdcAAy3aAAMt3AADLd8AAy3gAAMt4QADLeIAAy3jAAMt5QADLecAAy3oAAMt6QADLesAAy3sAAMt/QADLf4AAy4AAAMuewADLn0AAy5/AAMugQADLoQAAy6FAAMuhgADLocAAy6IAAMuigADLowAAy6NAAMujgADLpAAAy6RAAMvDAADLw4AAy8RAAMvEwADLxYAAy8XAAMvGAADLxkAAy8aAAMvHAADLx4AAy8fAAMvIAADLyIAAy8jAAMvPAADLz0AAy8+AAMvQAADL7sAAy+9AAMvvwADL8EAAy/EAAMvxQADL8YAAy/HAAMvyAADL8oAAy/MAAMvzQADL84AAy/QAAMv0QADMEwAAzBOAAMwUQADMFMAAzBWAAMwVwADMFgAAzBZAAMwWgADMFwAAzBeAAMwXwADMGAAAzBiAAMwYwADMHwAAzCVAAMwogADMKUAAzCoAAMwqwADMLgAAzC7AAMwvgADMMEAAzDDAAMw0QADMNsAAzFuAAMxkQADMbEAAzHRAAMx0wADMdUAAzHXAAMx2QADMdwAAzHdAAMx3gADMeEAAzHiAAMx5AADMeUAAzHoAAMx6wADMewAAzHtAAMx8AADMfEAAzH2AAMyDwADMhgAAzIaAAMyHQADMiYAAzIpAAMyLAADMi4AAzJ3AAMymwADMsIAAzLmAAMy6QADMusAAzLtAAMy7wADMvEAAzLzAAMy9AADMvcAAzMQAAMzMQADMzMAAzM1AAMzNwADMzkAAzM7AAMzPQADMz8AAzNBAAMzYgADM2UAAzNoAAMzawADM24AAzNxAAMzdAADM3cAAzN6AAMzfAADM/cAAzP5AAMz+wADM/0AAzQAAAM0AQADNAIAAzQDAAM0BAADNAYAAzQIAAM0CQADNAoAAzQMAAM0DQADNIgAAzSKAAM0jAADNI4AAzSRAAM0kgADNJMAAzSUAAM0lQADNJcAAzSZAAM0mgADNJsAAzSdAAM0ngADNRkAAzUbAAM1HgADNSAAAzUjAAM1JAADNSUAAzUmAAM1JwADNSkAAzUrAAM1LAADNS0AAzUvAAM1MAADNUkAAzVKAAM1SwADNU0AAzXIAAM1ygADNcwAAzXOAAM10QADNdIAAzXTAAM11AADNdUAAzXXAAM12QADNdoAAzXbAAM13QADNd4AAzZZAAM2WwADNl0AAzZfAAM2YgADNmMAAzZkAAM2ZQADNmYAAzZoAAM2agADNmsAAzZsAAM2bgADNm8AAzbqAAM27AADNu4AAzbwAAM28wADNvQAAzb1AAM29gADNvcAAzb5AAM2+wADNvwAAzb9AAM2/wADNwAAAzd7AAM3fQADN38AAzeBAAM3hAADN4UAAzeGAAM3hwADN4gAAzeKAAM3jAADN40AAzeOAAM3kAADN5EAAzgMAAM4DgADOBAAAzgSAAM4FQADOBYAAzgXAAM4GAADOBkAAzgbAAM4HQADOB4AAzgfAAM4IQADOCIAAzhrAAM4jwADOLYAAzjaAAM43QADOOAAAzjiAAM45AADOOYAAzjoAAM46QADOOwAAzkFAAM5IgADOSUAAzkoAAM5KwADOS4AAzkxAAM5NAADOTcAAzlUAAM5VwADOVoAAzldAAM5YAADOWMAAzlmAAM5aQADOWsAAznmAAM56AADOesAAzntAAM58AADOfEAAznyAAM58wADOfQAAzn2AAM5+QADOfoAAzn7AAM5/QADOf4AAzp5AAM6ewADOn4AAzqAAAM6gwADOoQAAzqFAAM6hgADOocAAzqJAAM6jAADOo0AAzqOAAM6kAADOpEAAzsMAAM7DgADOxEAAzsTAAM7FgADOxcAAzsYAAM7GQADOxoAAzscAAM7HwADOyAAAzshAAM7IwADOyQAAzufAAM7oQADO6QAAzumAAM7qQADO6oAAzurAAM7rAADO60AAzuvAAM7sgADO7MAAzu0AAM7tgADO7cAAzwyAAM8NAADPDYAAzw4AAM8OwADPDwAAzw9AAM8PgADPD8AAzxBAAM8RAADPEUAAzxGAAM8SAADPEkAAzzEAAM8xgADPMgAAzzKAAM8zQADPM4AAzzPAAM80AADPNEAAzzTAAM81gADPNcAAzzYAAM82gADPNsAAz1WAAM9WAADPVsAAz1dAAM9YAADPWEAAz1iAAM9YwADPWQAAz1mAAM9aQADPWoAAz1rAAM9bQADPW4AAz4BAAM+JAADPkQAAz5kAAM+ZgADPmgAAz5qAAM+bAADPm8AAz5wAAM+cQADPnQAAz51AAM+dwADPngAAz56AAM+fQADPn4AAz5/AAM+ggADPoMAAz6IAAM+oQADPqoAAz6sAAM+rgADPrcAAz66AAM+vQADPr8AAz8IAAM/LAADP1MAAz93AAM/egADP3wAAz9+AAM/gAADP4IAAz+EAAM/hQADP4gAAz+hAAM/wgADP8QAAz/GAAM/yAADP8oAAz/MAAM/zgADP9AAAz/SAAM/8wADP/YAAz/5AAM//AADP/8AA0ACAANABQADQAgAA0ALAANADQADQIgAA0CKAANAjAADQI4AA0CRAANAkgADQJMAA0CUAANAlQADQJcAA0CZAANAmgADQJsAA0CdAANAngADQRkAA0EbAANBHQADQR8AA0EiAANBIwADQSQAA0ElAANBJgADQSgAA0EqAANBKwADQSwAA0EuAANBLwADQaoAA0GsAANBrwADQbEAA0G0AANBtQADQbYAA0G3AANBuAADQboAA0G8AANBvQADQb4AA0HAAANBwQADQdoAA0HbAANB3AADQd4AA0JZAANCWwADQl0AA0JfAANCYgADQmMAA0JkAANCZQADQmYAA0JoAANCagADQmsAA0JsAANCbgADQm8AA0LqAANC7AADQu4AA0LwAANC8wADQvQAA0L1AANC9gADQvcAA0L5AANC+wADQvwAA0L9AANC/wADQwAAA0N7AANDfQADQ38AA0OBAANDhAADQ4UAA0OGAANDhwADQ4gAA0OKAANDjAADQ40AA0OOAANDkAADQ5EAA0QMAANEDgADRBAAA0QSAANEFQADRBYAA0QXAANEGAADRBkAA0QbAANEHQADRB4AA0QfAANEIQADRCIAA0SdAANEnwADRKEAA0SjAANEpgADRKcAA0SoAANEqQADRKoAA0SsAANErgADRK8AA0SwAANEsgADRLMAA0T8AANFIAADRUcAA0VrAANFbgADRXAAA0VyAANFdAADRXYAA0V4AANFeQADRXwAA0WVAANFsgADRbQAA0W2AANFuAADRboAA0W8AANFvgADRcAAA0XdAANF4AADReMAA0XmAANF6QADRewAA0XvAANF8gADRfQAA0ZvAANGcQADRnMAA0Z1AANGeAADRnkAA0Z6AANGewADRnwAA0Z+AANGgAADRoEAA0aCAANGhAADRoUAA0cAAANHAgADRwQAA0cGAANHCQADRwoAA0cLAANHDAADRw0AA0cPAANHEQADRxIAA0cTAANHFQADRxYAA0eRAANHkwADR5UAA0eXAANHmgADR5sAA0ecAANHnQADR54AA0egAANHogADR6MAA0ekAANHpgADR6cAA0giAANIJAADSCcAA0gpAANILAADSC0AA0guAANILwADSDAAA0gyAANINAADSDUAA0g2AANIOAADSDkAA0g8AANItwADSLkAA0i7AANIvQADSMAAA0jBAANIwgADSMMAA0jEAANIxgADSMgAA0jJAANIygADSMwAA0jNAANJSAADSUoAA0lMAANJTgADSVEAA0lSAANJUwADSVQAA0lVAANJVwADSVkAA0laAANJWwADSV0AA0leAANJ2QADSdsAA0ndAANJ3wADSeIAA0njAANJ5AADSeUAA0nmAANJ6AADSeoAA0nrAANJ7AADSe4AA0nvAANKggADSqUAA0rFAANK5QADSucAA0rpAANK6wADSu0AA0rwAANK8QADSvIAA0r1AANK9gADSvgAA0r5AANK+wADSv4AA0r/AANLAAADSwMAA0sEAANLCQADSyIAA0srAANLLQADSy8AA0s4AANLOwADSz4AA0tAAANLiQADS60AA0vUAANL+AADS/sAA0v9AANL/wADTAEAA0wDAANMBQADTAYAA0wJAANMIgADTEMAA0xFAANMRwADTEkAA0xLAANMTQADTE8AA0xRAANMUwADTHQAA0x3AANMegADTH0AA0yAAANMgwADTIYAA0yJAANMjAADTI4AA00JAANNCwADTQ0AA00PAANNEgADTRMAA00UAANNFQADTRYAA00YAANNGgADTRsAA00cAANNHgADTR8AA02aAANNnAADTZ4AA02gAANNowADTaQAA02lAANNpgADTacAA02pAANNqwADTawAA02tAANNrwADTbAAA04rAANOLQADTjAAA04yAANONQADTjYAA043AANOOAADTjkAA047AANOPQADTj4AA04/AANOQQADTkIAA05bAANOXAADTl0AA05fAANO2gADTtwAA07eAANO4AADTuMAA07kAANO5QADTuYAA07nAANO6QADTusAA07sAANO7QADTu8AA07wAANPawADT20AA09vAANPcQADT3QAA091AANPdgADT3cAA094AANPegADT3wAA099AANPfgADT4AAA0+BAANP/AADT/4AA1AAAANQAgADUAUAA1AGAANQBwADUAgAA1AJAANQCwADUA0AA1AOAANQDwADUBEAA1ASAANQjQADUI8AA1CRAANQkwADUJYAA1CXAANQmAADUJkAA1CaAANQnAADUJ4AA1CfAANQoAADUKIAA1CjAANRHgADUSAAA1EiAANRJAADUScAA1EoAANRKQADUSoAA1ErAANRLQADUS8AA1EwAANRMQADUTMAA1E0AANRfQADUaEAA1HIAANR7AADUe8AA1HxAANR8wADUfUAA1H3AANR+QADUfoAA1H9AANSFgADUjMAA1I1AANSNwADUjkAA1I7AANSPQADUj8AA1JBAANSXgADUmEAA1JkAANSZwADUmoAA1JtAANScAADUnMAA1J1AANS8AADUvIAA1L0AANS9gADUvkAA1L6AANS+wADUvwAA1L9AANS/wADUwEAA1MCAANTAwADUwUAA1MGAANTgQADU4MAA1OFAANThwADU4oAA1OLAANTjAADU40AA1OOAANTkAADU5IAA1OTAANTlAADU5YAA1OXAANUEgADVBQAA1QWAANUGAADVBsAA1QcAANUHQADVB4AA1QfAANUIQADVCMAA1QkAANUJQADVCcAA1QoAANUowADVKUAA1SoAANUqgADVK0AA1SuAANUrwADVLAAA1SxAANUswADVLUAA1S2AANUtwADVLkAA1S6AANVNQADVTcAA1U5AANVOwADVT4AA1U/AANVQAADVUEAA1VCAANVRAADVUYAA1VHAANVSAADVUoAA1VLAANVxgADVcgAA1XKAANVzAADVc8AA1XQAANV0QADVdIAA1XTAANV1QADVdcAA1XYAANV2QADVdsAA1XcAANWVwADVlkAA1ZbAANWXQADVmAAA1ZhAANWYgADVmMAA1ZkAANWZgADVmgAA1ZpAANWagADVmwAA1ZtAANWfgADVn8AA1aBAANW/AADVv4AA1cAAANXAgADVwUAA1cGAANXBwADVwgAA1cJAANXCwADVw4AA1cPAANXEAADVxIAA1cTAANXjgADV5AAA1eSAANXlAADV5cAA1eYAANXmQADV5oAA1ebAANXnQADV6AAA1ehAANXogADV6QAA1elAANYIAADWCIAA1glAANYJwADWCoAA1grAANYLAADWC0AA1guAANYMAADWDMAA1g0AANYNQADWDcAA1g4AANYywADWO4AA1kOAANZLgADWTAAA1kyAANZNAADWTYAA1k5AANZOgADWTsAA1k+AANZPwADWUEAA1lCAANZRAADWUcAA1lIAANZSQADWUwAA1lNAANZUgADWWsAA1l0AANZdgADWXgAA1mBAANZhAADWYcAA1mJAANZ0gADWfYAA1odAANaQQADWkQAA1pGAANaSAADWkoAA1pMAANaTgADWk8AA1pSAANaawADWowAA1qOAANakAADWpIAA1qUAANalgADWpgAA1qaAANanAADWr0AA1rAAANawwADWsYAA1rJAANazAADWs8AA1rSAANa1QADWtcAA1tSAANbVAADW1YAA1tYAANbWwADW1wAA1tdAANbXgADW18AA1thAANbYwADW2QAA1tlAANbZwADW2gAA1vjAANb5QADW+cAA1vpAANb7AADW+0AA1vuAANb7wADW/AAA1vyAANb9AADW/UAA1v2AANb+AADW/kAA1x0AANcdgADXHkAA1x7AANcfgADXH8AA1yAAANcgQADXIIAA1yEAANchgADXIcAA1yIAANcigADXIsAA1ykAANcpQADXKYAA1yoAANdIwADXSUAA10nAANdKQADXSwAA10tAANdLgADXS8AA10wAANdMgADXTQAA101AANdNgADXTgAA105AANdtAADXbYAA124AANdugADXb0AA12+AANdvwADXcAAA13BAANdwwADXcUAA13GAANdxwADXckAA13KAANeRQADXkcAA15JAANeSwADXk4AA15PAANeUAADXlEAA15SAANeVAADXlYAA15XAANeWAADXloAA15bAANe1gADXtgAA17aAANe3AADXt8AA17gAANe4QADXuIAA17jAANe5QADXucAA17oAANe6QADXusAA17sAANfZwADX2kAA19rAANfbQADX3AAA19xAANfcgADX3MAA190AANfdgADX3gAA195AANfegADX3wAA199AANfxgADX+oAA2ARAANgNQADYDgAA2A6AANgPAADYD4AA2BAAANgQgADYEMAA2BGAANgXwADYHwAA2B+AANggAADYIIAA2CEAANghgADYIgAA2CKAANgpwADYKoAA2CtAANgsAADYLMAA2C2AANguQADYLwAA2C+AANhOQADYTsAA2E9AANhPwADYUIAA2FDAANhRAADYUUAA2FGAANhSAADYUoAA2FLAANhTAADYU4AA2FPAANhygADYcwAA2HOAANh0AADYdMAA2HUAANh1QADYdYAA2HXAANh2QADYdsAA2HcAANh3QADYd8AA2HgAANiWwADYl0AA2JfAANiYQADYmQAA2JlAANiZgADYmcAA2JoAANiagADYmwAA2JtAANibgADYnAAA2JxAANi7AADYu4AA2LwAANi8gADYvUAA2L2AANi9wADYvgAA2L5AANi+wADYv0AA2L+AANi/wADYwEAA2MCAANjfQADY38AA2OBAANjgwADY4YAA2OHAANjiAADY4kAA2OKAANjjAADY44AA2OPAANjkAADY5IAA2OTAANkDgADZBAAA2QSAANkFAADZBcAA2QYAANkGQADZBoAA2QbAANkHQADZB8AA2QgAANkIQADZCMAA2QkAANknwADZKEAA2SjAANkpQADZKgAA2SpAANkqgADZKsAA2SsAANkrgADZLAAA2SxAANksgADZLQAA2S1AANlSAADZWsAA2WLAANlqwADZa0AA2WvAANlsQADZbMAA2W2AANltwADZbgAA2W7AANlvAADZb4AA2W/AANlwQADZcQAA2XFAANlxgADZckAA2XKAANlzwADZegAA2XxAANl8wADZfUAA2X+AANmAQADZgQAA2YGAANmTwADZnMAA2aaAANmvgADZsEAA2bDAANmxQADZscAA2bJAANmywADZswAA2bPAANm6AADZwkAA2cLAANnDQADZw8AA2cRAANnEwADZxUAA2cXAANnGQADZzoAA2c9AANnQAADZ0MAA2dGAANnSQADZ0wAA2dPAANnUgADZ1QAA2fPAANn0QADZ9MAA2fVAANn2AADZ9kAA2faAANn2wADZ9wAA2feAANn4AADZ+EAA2fiAANn5AADZ+UAA2hgAANoYgADaGQAA2hmAANoaQADaGoAA2hrAANobAADaG0AA2hvAANocQADaHIAA2hzAANodQADaHYAA2jxAANo8wADaPYAA2j4AANo+wADaPwAA2j9AANo/gADaP8AA2kBAANpAwADaQQAA2kFAANpBwADaQgAA2khAANpIgADaSMAA2klAANpoAADaaIAA2mkAANppgADaakAA2mqAANpqwADaawAA2mtAANprwADabEAA2myAANpswADabUAA2m2AANqMQADajMAA2o1AANqNwADajoAA2o7AANqPAADaj0AA2o+AANqQAADakIAA2pDAANqRAADakYAA2pHAANqwgADasQAA2rGAANqyAADassAA2rMAANqzQADas4AA2rPAANq0QADatMAA2rUAANq1QADatcAA2rYAANrUwADa1UAA2tXAANrWQADa1wAA2tdAANrXgADa18AA2tgAANrYgADa2QAA2tlAANrZgADa2gAA2tpAANr5AADa+YAA2voAANr6gADa+0AA2vuAANr7wADa/AAA2vxAANr8wADa/UAA2v2AANr9wADa/kAA2v6AANsQwADbGcAA2yOAANssgADbLUAA2y3AANsuQADbLsAA2y9AANsvwADbMAAA2zDAANs3AADbPkAA2z7AANs/QADbP8AA20BAANtAwADbQUAA20HAANtJAADbScAA20qAANtLQADbTAAA20zAANtNgADbTkAA207AANttgADbbgAA226AANtvAADbb8AA23AAANtwQADbcIAA23DAANtxQADbccAA23IAANtyQADbcsAA23MAANuRwADbkkAA25LAANuTQADblAAA25RAANuUgADblMAA25UAANuVgADblgAA25ZAANuWgADblwAA25dAANu2AADbtoAA27cAANu3gADbuEAA27iAANu4wADbuQAA27lAANu5wADbukAA27qAANu6wADbu0AA27uAANvaQADb2sAA29tAANvbwADb3IAA29zAANvdAADb3UAA292AANveAADb3oAA297AANvfAADb34AA29/AANv+gADb/wAA2/+AANwAAADcAMAA3AEAANwBQADcAYAA3AHAANwCQADcAsAA3AMAANwDQADcA8AA3AQAANwiwADcI0AA3CPAANwkQADcJQAA3CVAANwlgADcJcAA3CYAANwmgADcJwAA3CdAANwngADcKAAA3ChAANxHAADcR4AA3EgAANxIgADcSUAA3EmAANxJwADcSgAA3EpAANxKwADcS0AA3EuAANxLwADcTEAA3EyAANxxQADcegAA3IIAANyKAADcioAA3IsAANyLgADcjAAA3IzAANyNAADcjUAA3I4AANyOQADcjsAA3I8AANyPgADckEAA3JCAANyQwADckYAA3JHAANyTAADcmUAA3JuAANycAADcnIAA3J7AANyfgADcoEAA3KDAANyzAADcvAAA3MXAANzOwADcz4AA3NAAANzQgADc0QAA3NGAANzSAADc0kAA3NMAANzZQADc4YAA3OIAANzigADc4wAA3OOAANzkAADc5IAA3OUAANzlgADc7cAA3O6AANzvQADc8AAA3PDAANzxgADc8kAA3PMAANzzwADc9EAA3RMAAN0TgADdFAAA3RSAAN0VQADdFYAA3RXAAN0WAADdFkAA3RbAAN0XQADdF4AA3RfAAN0YQADdGIAA3TdAAN03wADdOEAA3TjAAN05gADdOcAA3ToAAN06QADdOoAA3TsAAN07gADdO8AA3TwAAN08gADdPMAA3VuAAN1cAADdXMAA3V1AAN1eAADdXkAA3V6AAN1ewADdXwAA3V+AAN1gAADdYEAA3WCAAN1hAADdYUAA3WeAAN1nwADdaAAA3WiAAN2HQADdh8AA3YhAAN2IwADdiYAA3YnAAN2KAADdikAA3YqAAN2LAADdi4AA3YvAAN2MAADdjIAA3YzAAN2rgADdrAAA3ayAAN2tAADdrcAA3a4AAN2uQADdroAA3a7AAN2vQADdr8AA3bAAAN2wQADdsMAA3bEAAN3PwADd0EAA3dDAAN3RQADd0gAA3dJAAN3SgADd0sAA3dMAAN3TgADd1AAA3dRAAN3UgADd1QAA3dVAAN30AADd9IAA3fUAAN31gADd9kAA3faAAN32wADd9wAA3fdAAN33wADd+EAA3fiAAN34wADd+UAA3fmAAN4YQADeGMAA3hlAAN4ZwADeGoAA3hrAAN4bAADeG0AA3huAAN4cAADeHIAA3hzAAN4dAADeHYAA3h3AAN4wAADeOQAA3kLAAN5LwADeTIAA3k0AAN5NgADeTgAA3k6AAN5PAADeT0AA3lAAAN5WQADeXYAA3l4AAN5egADeXwAA3l+AAN5gAADeYIAA3mEAAN5oQADeaQAA3mnAAN5qgADea0AA3mwAAN5swADebYAA3m4AAN6MwADejUAA3o3AAN6OQADejwAA3o9AAN6PgADej8AA3pAAAN6QgADekQAA3pFAAN6RgADekgAA3pJAAN6xAADesYAA3rIAAN6ygADes0AA3rOAAN6zwADetAAA3rRAAN60wADetUAA3rWAAN61wADetkAA3raAAN7VQADe1cAA3tZAAN7WwADe14AA3tfAAN7YAADe2EAA3tiAAN7ZAADe2YAA3tnAAN7aAADe2oAA3trAAN75gADe+gAA3vrAAN77QADe/AAA3vxAAN78gADe/MAA3v0AAN79gADe/gAA3v5AAN7+gADe/wAA3v9AAN8eAADfHoAA3x8AAN8fgADfIEAA3yCAAN8gwADfIQAA3yFAAN8hwADfIkAA3yKAAN8iwADfI0AA3yOAAN9CQADfQsAA30NAAN9DwADfRIAA30TAAN9FAADfRUAA30WAAN9GAADfRoAA30bAAN9HAADfR4AA30fAAN9mgADfZwAA32eAAN9oAADfaMAA32kAAN9pQADfaYAA32nAAN9qQADfasAA32sAAN9rQADfa8AA32wAAN+QwADfmYAA36GAAN+pgADfqgAA36qAAN+rAADfq4AA36xAAN+sgADfrMAA362AAN+twADfrkAA366AAN+vAADfr8AA37AAAN+wQADfsQAA37FAAN+ygADfuMAA37sAAN+7gADfvAAA375AAN+/AADfv8AA38BAAN/SgADf24AA3+VAAN/uQADf7wAA3++AAN/wAADf8IAA3/EAAN/xgADf8cAA3/KAAN/4wADgAQAA4AGAAOACAADgAoAA4AMAAOADgADgBAAA4ASAAOAFAADgDUAA4A4AAOAOwADgD4AA4BBAAOARAADgEcAA4BKAAOATQADgE8AA4DKAAOAzAADgM4AA4DQAAOA0wADgNQAA4DVAAOA1gADgNcAA4DZAAOA2wADgNwAA4DdAAOA3wADgOAAA4FbAAOBXQADgV8AA4FhAAOBZAADgWUAA4FmAAOBZwADgWgAA4FqAAOBbAADgW0AA4FuAAOBcAADgXEAA4HsAAOB7gADgfEAA4HzAAOB9gADgfcAA4H4AAOB+QADgfoAA4H8AAOB/gADgf8AA4IAAAOCAgADggMAA4IcAAOCHQADgh4AA4IgAAOCmwADgp0AA4KfAAOCoQADgqQAA4KlAAOCpgADgqcAA4KoAAOCqgADgqwAA4KtAAOCrgADgrAAA4KxAAODLAADgy4AA4MwAAODMgADgzUAA4M2AAODNwADgzgAA4M5AAODOwADgz0AA4M+AAODPwADg0EAA4NCAAODvQADg78AA4PBAAODwwADg8YAA4PHAAODyAADg8kAA4PKAAODzAADg84AA4PPAAOD0AADg9IAA4PTAAOETgADhFAAA4RSAAOEVAADhFcAA4RYAAOEWQADhFoAA4RbAAOEXQADhF8AA4RgAAOEYQADhGMAA4RkAAOE3wADhOEAA4TjAAOE5QADhOgAA4TpAAOE6gADhOsAA4TsAAOE7gADhPAAA4TxAAOE8gADhPQAA4T1AAOFPgADhWIAA4WJAAOFrQADhbAAA4WyAAOFtAADhbYAA4W4AAOFugADhbsAA4W+AAOF1wADhfQAA4X2AAOF+AADhfoAA4X8AAOF/gADhgAAA4YCAAOGHwADhiIAA4YlAAOGKAADhisAA4YuAAOGMQADhjQAA4Y2AAOGsQADhrMAA4a1AAOGtwADhroAA4a7AAOGvAADhr0AA4a+AAOGwAADhsIAA4bDAAOGxAADhsYAA4bHAAOHQgADh0QAA4dGAAOHSAADh0sAA4dMAAOHTQADh04AA4dPAAOHUQADh1MAA4dUAAOHVQADh1cAA4dYAAOH0wADh9UAA4fXAAOH2QADh9wAA4fdAAOH3gADh98AA4fgAAOH4gADh+QAA4flAAOH5gADh+gAA4fpAAOIZAADiGYAA4hoAAOIagADiG0AA4huAAOIbwADiHAAA4hxAAOIcwADiHUAA4h2AAOIdwADiHkAA4h6AAOI9QADiPcAA4j5AAOI+wADiP4AA4j/AAOJAAADiQEAA4kCAAOJBAADiQYAA4kHAAOJCAADiQoAA4kLAAOJhgADiYgAA4mKAAOJjAADiY8AA4mQAAOJkQADiZIAA4mTAAOJlQADiZcAA4mYAAOJmQADiZsAA4mcAAOKFwADihkAA4obAAOKHQADiiAAA4ohAAOKIgADiiMAA4okAAOKJgADiigAA4opAAOKKgADiiwAA4otAAOKPgADij8AA4pBAAOKvAADir4AA4rAAAOKwgADisUAA4rGAAOKxwADisgAA4rJAAOKywADis4AA4rPAAOK0AADitIAA4rTAAOLTgADi1AAA4tSAAOLVAADi1cAA4tYAAOLWQADi1oAA4tbAAOLXQADi2AAA4thAAOLYgADi2QAA4tlAAOL4AADi+IAA4vlAAOL5wADi+oAA4vrAAOL7AADi+0AA4vuAAOL8AADi/MAA4v0AAOL9QADi/cAA4v4AAOMiwADjK4AA4zOAAOM7gADjPAAA4zyAAOM9AADjPYAA4z5AAOM+gADjPsAA4z+AAOM/wADjQEAA40CAAONBAADjQcAA40IAAONCQADjQwAA40NAAONEgADjSsAA400AAONNgADjTgAA41BAAONRAADjUcAA41JAAONkgADjbYAA43dAAOOAQADjgQAA44GAAOOCAADjgoAA44MAAOODgADjg8AA44SAAOOKwADjkwAA45OAAOOUAADjlIAA45UAAOOVgADjlgAA45aAAOOXAADjn0AA46AAAOOgwADjoYAA46JAAOOjAADjo8AA46SAAOOlQADjpcAA48SAAOPFAADjxYAA48YAAOPGwADjxwAA48dAAOPHgADjx8AA48hAAOPIwADjyQAA48lAAOPJwADjygAA4+jAAOPpQADj6cAA4+pAAOPrAADj60AA4+uAAOPrwADj7AAA4+yAAOPtAADj7UAA4+2AAOPuAADj7kAA5A0AAOQNgADkDkAA5A7AAOQPgADkD8AA5BAAAOQQQADkEIAA5BEAAOQRgADkEcAA5BIAAOQSgADkEsAA5BkAAOQZQADkGYAA5BoAAOQ4wADkOUAA5DnAAOQ6QADkOwAA5DtAAOQ7gADkO8AA5DwAAOQ8gADkPQAA5D1AAOQ9gADkPgAA5D5AAORdAADkXYAA5F4AAORegADkX0AA5F+AAORfwADkYAAA5GBAAORgwADkYUAA5GGAAORhwADkYkAA5GKAAOSBQADkgcAA5IJAAOSCwADkg4AA5IPAAOSEAADkhEAA5ISAAOSFAADkhYAA5IXAAOSGAADkhoAA5IbAAOSlgADkpgAA5KaAAOSnAADkp8AA5KgAAOSoQADkqIAA5KjAAOSpQADkqcAA5KoAAOSqQADkqsAA5KsAAOTJwADkykAA5MrAAOTLQADkzAAA5MxAAOTMgADkzMAA5M0AAOTNgADkzgAA5M5AAOTOgADkzwAA5M9AAOThgADk6oAA5PRAAOT9QADk/gAA5P6AAOT/AADk/4AA5QAAAOUAgADlAMAA5QGAAOUHwADlDwAA5Q+AAOUQAADlEIAA5REAAOURgADlEgAA5RKAAOUZwADlGoAA5RtAAOUcAADlHMAA5R2AAOUeQADlHwAA5R+AAOU+QADlPsAA5T9AAOU/wADlQIAA5UDAAOVBAADlQUAA5UGAAOVCAADlQoAA5ULAAOVDAADlQ4AA5UPAAOVigADlYwAA5WOAAOVkAADlZMAA5WUAAOVlQADlZYAA5WXAAOVmQADlZsAA5WcAAOVnQADlZ8AA5WgAAOWGwADlh0AA5YfAAOWIQADliQAA5YlAAOWJgADlicAA5YoAAOWKgADliwAA5YtAAOWLgADljAAA5YxAAOWrAADlq4AA5axAAOWswADlrYAA5a3AAOWuAADlrkAA5a6AAOWvAADlr4AA5a/AAOWwAADlsIAA5bDAAOXPgADl0AAA5dCAAOXRAADl0cAA5dIAAOXSQADl0oAA5dLAAOXTQADl08AA5dQAAOXUQADl1MAA5dUAAOXzwADl9EAA5fTAAOX1QADl9gAA5fZAAOX2gADl9sAA5fcAAOX3gADl+AAA5fhAAOX4gADl+QAA5flAAOYYAADmGIAA5hkAAOYZgADmGkAA5hqAAOYawADmGwAA5htAAOYbwADmHEAA5hyAAOYcwADmHUAA5h2AAOZCQADmSwAA5lMAAOZbAADmW4AA5lwAAOZcgADmXQAA5l3AAOZeAADmXkAA5l8AAOZfQADmX8AA5mAAAOZggADmYUAA5mGAAOZhwADmYoAA5mLAAOZkAADmakAA5myAAOZtAADmbYAA5m/AAOZwgADmcUAA5nHAAOaEAADmjQAA5pbAAOafwADmoIAA5qEAAOahgADmogAA5qKAAOajAADmo0AA5qQAAOaqQADmsoAA5rMAAOazgADmtAAA5rSAAOa1AADmtYAA5rYAAOa2gADmvsAA5r+AAObAQADmwQAA5sHAAObCgADmw0AA5sQAAObEwADmxUAA5uQAAObkgADm5QAA5uWAAObmQADm5oAA5ubAAObnAADm50AA5ufAAOboQADm6IAA5ujAAObpQADm6YAA5whAAOcIwADnCUAA5wnAAOcKgADnCsAA5wsAAOcLQADnC4AA5wwAAOcMgADnDMAA5w0AAOcNgADnDcAA5yyAAOctAADnLcAA5y5AAOcvAADnL0AA5y+AAOcvwADnMAAA5zCAAOcxAADnMUAA5zGAAOcyAADnMkAA5ziAAOc4wADnOQAA5zmAAOdYQADnWMAA51lAAOdZwADnWoAA51rAAOdbAADnW0AA51uAAOdcAADnXIAA51zAAOddAADnXYAA513AAOd8gADnfQAA532AAOd+AADnfsAA538AAOd/QADnf4AA53/AAOeAQADngMAA54EAAOeBQADngcAA54IAAOegwADnoUAA56HAAOeiQADnowAA56NAAOejgADno8AA56QAAOekgADnpQAA56VAAOelgADnpgAA56ZAAOfFAADnxYAA58YAAOfGgADnx0AA58eAAOfHwADnyAAA58hAAOfIwADnyUAA58mAAOfJwADnykAA58qAAOfpQADn6cAA5+pAAOfqwADn64AA5+vAAOfsAADn7EAA5+yAAOftAADn7YAA5+3AAOfuAADn7oAA5+7AAOgBAADoCgAA6BPAAOgcwADoHYAA6B4AAOgegADoHwAA6B+AAOggAADoIEAA6CEAAOgnQADoLoAA6C8AAOgvgADoMAAA6DCAAOgxAADoMYAA6DIAAOg5QADoOgAA6DrAAOg7gADoPEAA6D0AAOg9wADoPoAA6D8AAOhdwADoXkAA6F7AAOhfQADoYAAA6GBAAOhggADoYMAA6GEAAOhhgADoYgAA6GJAAOhigADoYwAA6GNAAOiCAADogoAA6IMAAOiDgADohEAA6ISAAOiEwADohQAA6IVAAOiFwADohkAA6IaAAOiGwADoh0AA6IeAAOimQADopsAA6KdAAOinwADoqIAA6KjAAOipAADoqUAA6KmAAOiqAADoqoAA6KrAAOirAADoq4AA6KvAAOjKgADoywAA6MvAAOjMQADozQAA6M1AAOjNgADozcAA6M4AAOjOgADozwAA6M9AAOjPgADo0AAA6NBAAOjvAADo74AA6PAAAOjwgADo8UAA6PGAAOjxwADo8gAA6PJAAOjywADo80AA6POAAOjzwADo9EAA6PSAAOkTQADpE8AA6RRAAOkUwADpFYAA6RXAAOkWAADpFkAA6RaAAOkXAADpF4AA6RfAAOkYAADpGIAA6RjAAOk3gADpOAAA6TiAAOk5AADpOcAA6ToAAOk6QADpOoAA6TrAAOk7QADpO8AA6TwAAOk8QADpPMAA6T0AAOlhwADpaoAA6XKAAOl6gADpewAA6XuAAOl8AADpfIAA6X1AAOl9gADpfcAA6X6AAOl+wADpf0AA6X+AAOmAAADpgMAA6YEAAOmBQADpggAA6YJAAOmDgADpicAA6YwAAOmMgADpjQAA6Y9AAOmQAADpkMAA6ZFAAOmjgADprIAA6bZAAOm/QADpwAAA6cCAAOnBAADpwYAA6cIAAOnCgADpwsAA6cOAAOnJwADp0gAA6dKAAOnTAADp04AA6dQAAOnUgADp1QAA6dWAAOnWAADp3kAA6d8AAOnfwADp4IAA6eFAAOniAADp4sAA6eOAAOnkQADp5MAA6gOAAOoEAADqBIAA6gUAAOoFwADqBgAA6gZAAOoGgADqBsAA6gdAAOoHwADqCAAA6ghAAOoIwADqCQAA6ifAAOooQADqKMAA6ilAAOoqAADqKkAA6iqAAOoqwADqKwAA6iuAAOosAADqLEAA6iyAAOotAADqLUAA6kwAAOpMgADqTUAA6k3AAOpOgADqTsAA6k8AAOpPQADqT4AA6lAAAOpQgADqUMAA6lEAAOpRgADqUcAA6lgAAOpYQADqWIAA6lkAAOp3wADqeEAA6njAAOp5QADqegAA6npAAOp6gADqesAA6nsAAOp7gADqfAAA6nxAAOp8gADqfQAA6n1AAOqcAADqnIAA6p0AAOqdgADqnkAA6p6AAOqewADqnwAA6p9AAOqfwADqoEAA6qCAAOqgwADqoUAA6qGAAOrAQADqwMAA6sFAAOrBwADqwoAA6sLAAOrDAADqw0AA6sOAAOrEAADqxIAA6sTAAOrFAADqxYAA6sXAAOrkgADq5QAA6uWAAOrmAADq5sAA6ucAAOrnQADq54AA6ufAAOroQADq6MAA6ukAAOrpQADq6cAA6uoAAOsIwADrCUAA6wnAAOsKQADrCwAA6wtAAOsLgADrC8AA6wwAAOsMgADrDQAA6w1AAOsNgADrDgAA6w5AAOsggADrKYAA6zNAAOs8QADrPQAA6z2AAOs+AADrPoAA6z8AAOs/gADrP8AA60CAAOtGwADrTgAA606AAOtPAADrT4AA61AAAOtQgADrUQAA61GAAOtYwADrWYAA61pAAOtbAADrW8AA61yAAOtdQADrXgAA616AAOt9QADrfcAA635AAOt+wADrf4AA63/AAOuAAADrgEAA64CAAOuBAADrgYAA64HAAOuCAADrgoAA64LAAOuhgADrogAA66KAAOujAADro8AA66QAAOukQADrpIAA66TAAOulQADrpcAA66YAAOumQADrpsAA66cAAOvFwADrxkAA68bAAOvHQADryAAA68hAAOvIgADryMAA68kAAOvJgADrygAA68pAAOvKgADrywAA68tAAOvqAADr6oAA6+tAAOvrwADr7IAA6+zAAOvtAADr7UAA6+2AAOvuAADr7oAA6+7AAOvvAADr74AA6+/AAOwOgADsDwAA7A+AAOwQAADsEMAA7BEAAOwRQADsEYAA7BHAAOwSQADsEsAA7BMAAOwTQADsE8AA7BQAAOwywADsM0AA7DPAAOw0QADsNQAA7DVAAOw1gADsNcAA7DYAAOw2gADsNwAA7DdAAOw3gADsOAAA7DhAAOxXAADsV4AA7FgAAOxYgADsWUAA7FmAAOxZwADsWgAA7FpAAOxawADsW0AA7FuAAOxbwADsXEAA7FyAAOyBQADsigAA7JIAAOyaAADsmoAA7JsAAOybgADsnAAA7JzAAOydAADsnUAA7J4AAOyeQADsnsAA7J8AAOyfgADsoEAA7KCAAOygwADsoYAA7KHAAOyjAADsqUAA7KuAAOysAADsrIAA7K7AAOyvgADssEAA7LDAAOzDAADszAAA7NXAAOzewADs34AA7OAAAOzggADs4QAA7OGAAOziAADs4kAA7OMAAOzpQADs8YAA7PIAAOzygADs8wAA7POAAOz0AADs9IAA7PUAAOz1gADs/cAA7P6AAOz/QADtAAAA7QDAAO0BgADtAkAA7QMAAO0DwADtBEAA7SMAAO0jgADtJAAA7SSAAO0lQADtJYAA7SXAAO0mAADtJkAA7SbAAO0nQADtJ4AA7SfAAO0oQADtKIAA7UdAAO1HwADtSEAA7UjAAO1JgADtScAA7UoAAO1KQADtSoAA7UsAAO1LgADtS8AA7UwAAO1MgADtTMAA7WuAAO1sAADtbMAA7W1AAO1uAADtbkAA7W6AAO1uwADtbwAA7W+AAO1wAADtcEAA7XCAAO1xAADtcUAA7XeAAO13wADteAAA7XiAAO2XQADtl8AA7ZhAAO2YwADtmYAA7ZnAAO2aAADtmkAA7ZqAAO2bAADtm4AA7ZvAAO2cAADtnIAA7ZzAAO27gADtvAAA7byAAO29AADtvcAA7b4AAO2+QADtvoAA7b7AAO2/QADtv8AA7cAAAO3AQADtwMAA7cEAAO3fwADt4EAA7eDAAO3hQADt4gAA7eJAAO3igADt4sAA7eMAAO3jgADt5AAA7eRAAO3kgADt5QAA7eVAAO4EAADuBIAA7gUAAO4FgADuBkAA7gaAAO4GwADuBwAA7gdAAO4HwADuCEAA7giAAO4IwADuCUAA7gmAAO4oQADuKMAA7ilAAO4pwADuKoAA7irAAO4rAADuK0AA7iuAAO4sAADuLIAA7izAAO4tAADuLYAA7i3AAO5AAADuSQAA7lLAAO5bwADuXIAA7l0AAO5dgADuXgAA7l6AAO5fAADuX0AA7mAAAO5mQADubYAA7m4AAO5ugADubwAA7m+AAO5wAADucIAA7nEAAO54QADueQAA7nnAAO56gADue0AA7nwAAO58wADufYAA7n4AAO6cwADunUAA7p4AAO6egADun0AA7p+AAO6fwADuoAAA7qBAAO6gwADuoUAA7qGAAO6hwADuokAA7qKAAO7BQADuwcAA7sJAAO7CwADuw4AA7sPAAO7EAADuxEAA7sSAAO7FAADuxYAA7sXAAO7GAADuxoAA7sbAAO7lgADu5gAA7uaAAO7nAADu58AA7ugAAO7oQADu6IAA7ujAAO7pQADu6cAA7uoAAO7qQADu6sAA7usAAO8JwADvCkAA7wsAAO8LgADvDEAA7wyAAO8MwADvDQAA7w1AAO8NwADvDkAA7w6AAO8OwADvD0AA7w+AAO8uQADvLsAA7y9AAO8vwADvMIAA7zDAAO8xAADvMUAA7zGAAO8yAADvMoAA7zLAAO8zAADvM4AA7zPAAO9SgADvUwAA71OAAO9UAADvVMAA71UAAO9VQADvVYAA71XAAO9WQADvVsAA71cAAO9XQADvV8AA71gAAO92wADvd0AA73fAAO94QADveQAA73lAAO95gADvecAA73oAAO96gADvewAA73tAAO97gADvfAAA73xAAO+hAADvqcAA77HAAO+5wADvukAA77rAAO+7QADvu8AA77yAAO+8wADvvQAA773AAO++AADvvoAA777AAO+/QADvwAAA78BAAO/AgADvwUAA78GAAO/CwADvyQAA78tAAO/LwADvzEAA786AAO/PQADv0AAA79CAAO/iwADv68AA7/WAAO/+gADv/0AA7//AAPAAQADwAMAA8AFAAPABwADwAgAA8ALAAPAJAADwEUAA8BHAAPASQADwEsAA8BNAAPATwADwFEAA8BTAAPAVQADwHYAA8B5AAPAfAADwH8AA8CCAAPAhQADwIgAA8CLAAPAjgADwJAAA8ELAAPBDQADwQ8AA8ERAAPBFAADwRUAA8EWAAPBFwADwRgAA8EaAAPBHAADwR0AA8EeAAPBIAADwSEAA8GcAAPBngADwaAAA8GiAAPBpQADwaYAA8GnAAPBqAADwakAA8GrAAPBrQADwa4AA8GvAAPBsQADwbIAA8ItAAPCLwADwjIAA8I0AAPCNwADwjgAA8I5AAPCOgADwjsAA8I9AAPCPwADwkAAA8JBAAPCQwADwkQAA8JdAAPCXgADwl8AA8JhAAPC3AADwt4AA8LgAAPC4gADwuUAA8LmAAPC5wADwugAA8LpAAPC6wADwu0AA8LuAAPC7wADwvEAA8LyAAPDbQADw28AA8NxAAPDcwADw3YAA8N3AAPDeAADw3kAA8N6AAPDfAADw34AA8N/AAPDgAADw4IAA8ODAAPD/gADxAAAA8QCAAPEBAADxAcAA8QIAAPECQADxAoAA8QLAAPEDQADxA8AA8QQAAPEEQADxBMAA8QUAAPEjwADxJEAA8STAAPElQADxJgAA8SZAAPEmgADxJsAA8ScAAPEngADxKAAA8ShAAPEogADxKQAA8SlAAPFIAADxSIAA8UkAAPFJgADxSkAA8UqAAPFKwADxSwAA8UtAAPFLwADxTEAA8UyAAPFMwADxTUAA8U2AAPFfwADxaMAA8XKAAPF7gADxfEAA8XzAAPF9QADxfcAA8X5AAPF+wADxfwAA8X/AAPGGAADxjUAA8Y3AAPGOQADxjsAA8Y9AAPGPwADxkEAA8ZDAAPGYAADxmMAA8ZmAAPGaQADxmwAA8ZvAAPGcgADxnUAA8Z3AAPG8gADxvQAA8b2AAPG+AADxvsAA8b8AAPG/QADxv4AA8b/AAPHAQADxwMAA8cEAAPHBQADxwcAA8cIAAPHgwADx4UAA8eHAAPHiQADx4wAA8eNAAPHjgADx48AA8eQAAPHkgADx5QAA8eVAAPHlgADx5gAA8eZAAPIFAADyBYAA8gYAAPIGgADyB0AA8geAAPIHwADyCAAA8ghAAPIIwADyCUAA8gmAAPIJwADyCkAA8gqAAPIpQADyKcAA8ipAAPIqwADyK4AA8ivAAPIsAADyLEAA8iyAAPItAADyLYAA8i3AAPIuAADyLoAA8i7AAPJNgADyTgAA8k6AAPJPAADyT8AA8lAAAPJQQADyUIAA8lDAAPJRQADyUcAA8lIAAPJSQADyUsAA8lMAAPJxwADyckAA8nMAAPJzgADydEAA8nSAAPJ0wADydQAA8nVAAPJ1wADydkAA8naAAPJ2wADyd0AA8neAAPJ/QADyngAA8p6AAPKfAADyn4AA8qBAAPKggADyoMAA8qEAAPKhQADyocAA8qJAAPKigADyosAA8qNAAPKjgADyyEAA8tEAAPLZAADy4QAA8uGAAPLiAADy4oAA8uMAAPLjwADy5AAA8uRAAPLlAADy5UAA8uXAAPLmAADy5oAA8udAAPLngADy58AA8uiAAPLowADy6gAA8vBAAPLygADy8wAA8vOAAPL1wADy9oAA8vdAAPL3wADzCgAA8xMAAPMcwADzJcAA8yaAAPMnAADzJ4AA8ygAAPMogADzKQAA8ylAAPMqAADzMEAA8ziAAPM5AADzOYAA8zoAAPM6gADzOwAA8zuAAPM8AADzPIAA80TAAPNFgADzRkAA80cAAPNHwADzSIAA80lAAPNKAADzSsAA80tAAPNqAADzaoAA82sAAPNrgADzbEAA82yAAPNswADzbQAA821AAPNtwADzbkAA826AAPNuwADzb0AA82+AAPOOQADzjsAA849AAPOPwADzkIAA85DAAPORAADzkUAA85GAAPOSAADzkoAA85LAAPOTAADzk4AA85PAAPOygADzswAA87PAAPO0QADztQAA87VAAPO1gADztcAA87YAAPO2gADztwAA87dAAPO3gADzuAAA87hAAPO+gADzvsAA878AAPO/gADz3kAA897AAPPfQADz38AA8+CAAPPgwADz4QAA8+FAAPPhgADz4gAA8+KAAPPiwADz4wAA8+OAAPPjwAD0AoAA9AMAAPQDgAD0BAAA9ATAAPQFAAD0BUAA9AWAAPQFwAD0BkAA9AbAAPQHAAD0B0AA9AfAAPQIAAD0JsAA9CdAAPQnwAD0KEAA9CkAAPQpQAD0KYAA9CnAAPQqAAD0KoAA9CsAAPQrQAD0K4AA9CwAAPQsQAD0SwAA9EuAAPRMAAD0TIAA9E1AAPRNgAD0TcAA9E4AAPROQAD0TsAA9E9AAPRPgAD0T8AA9FBAAPRQgAD0b0AA9G/AAPRwQAD0cMAA9HGAAPRxwAD0cgAA9HJAAPRygAD0cwAA9HOAAPRzwAD0dAAA9HSAAPR0wAD0hwAA9JAAAPSZwAD0osAA9KOAAPSkAAD0pIAA9KUAAPSlgAD0pgAA9KZAAPSnAAD0rUAA9LSAAPS1AAD0tYAA9LYAAPS2gAD0twAA9LeAAPS4AAD0v0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AA+SxAAPktAAD5LUAA+S2AAPkuQAD5LoAA+S/AAPk2AAD5OEAA+TjAAPk5QAD5O4AA+TxAAPk9AAD5PYAA+U/AAPlYwAD5YoAA+WuAAPlsQAD5bMAA+W1AAPltwAD5bkAA+W7AAPlvAAD5b8AA+XYAAPl+QAD5fsAA+X9AAPl/wAD5gEAA+YDAAPmBQAD5gcAA+YJAAPmKgAD5i0AA+YwAAPmMwAD5jYAA+Y5AAPmPAAD5j8AA+ZCAAPmRAAD5r8AA+bBAAPmwwAD5sUAA+bIAAPmyQAD5soAA+bLAAPmzAAD5s4AA+bQAAPm0QAD5tIAA+bUAAPm1QAD51AAA+dSAAPnVAAD51YAA+dZAAPnWgAD51sAA+dcAAPnXQAD518AA+dhAAPnYgAD52MAA+dlAAPnZgAD5+EAA+fjAAPn5gAD5+gAA+frAAPn7AAD5+0AA+fuAAPn7wAD5/EAA+fzAAPn9AAD5/UAA+f3AAPn+AAD6BEAA+gSAAPoEwAD6BUAA+iQAAPokgAD6JQAA+iWAAPomQAD6JoAA+ibAAPonAAD6J0AA+ifAAPooQAD6KIAA+ijAAPopQAD6KYAA+khAAPpIwAD6SUAA+knAAPpKgAD6SsAA+ksAAPpLQAD6S4AA+kwAAPpMgAD6TMAA+k0AAPpNgAD6TcAA+myAAPptAAD6bYAA+m4AAPpuwAD6bwAA+m9AAPpvgAD6b8AA+nBAAPpwwAD6cQAA+nFAAPpxwAD6cgAA+pDAAPqRQAD6kcAA+pJAAPqTAAD6k0AA+pOAAPqTwAD6lAAA+pSAAPqVAAD6lUAA+pWAAPqWAAD6lkAA+rUAAPq1gAD6tgAA+raAAPq3QAD6t4AA+rfAAPq4AAD6uEAA+rjAAPq5QAD6uYAA+rnAAPq6QAD6uoAA+szAAPrVwAD634AA+uiAAPrpQAD66cAA+upAAPrqwAD660AA+uvAAPrsAAD67MAA+vMAAPr6QAD6+sAA+vtAAPr7wAD6/EAA+vzAAPr9QAD6/cAA+wUAAPsFwAD7BoAA+wdAAPsIAAD7CMAA+wmAAPsKQAD7CsAA+ymAAPsqAAD7KoAA+ysAAPsrwAD7LAAA+yxAAPssgAD7LMAA+y1AAPstwAD7LgAA+y5AAPsuwAD7LwAA+03AAPtOQAD7TsAA+09AAPtQAAD7UEAA+1CAAPtQwAD7UQ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AA/8dAAP/HwAD/yEAA/8jAAP/JQAD/0YAA/9JAAP/TAAD/08AA/9SAAP/VQAD/1gAA/9bAAP/XgAD/2AAA//bAAP/3QAD/98AA//hAAP/5AAD/+UAA//mAAP/5wAD/+gAA//qAAP/7AAD/+0AA//uAAP/8AAD//EABABsAAQAbgAEAHAABAByAAQAdQAEAHYABAB3AAQAeAAEAHkABAB7AAQAfQAEAH4ABAB/AAQAgQAEAIIABAD9AAQA/wAEAQIABAEEAAQBBwAEAQgABAEJAAQBCgAEAQsABAENAAQBDwAEARAABAERAAQBEwAEARQABAEtAAQBLgAEAS8ABAExAAQBrAAEAa4ABAGwAAQBsgAEAbUABAG2AAQBtwAEAbgABAG5AAQBuwAEAb0ABAG+AAQBvwAEAcEABAHCAAQCPQAEAj8ABAJBAAQCQwAEAkYABAJHAAQCSAAEAkkABAJKAAQCTAAEAk4ABAJPAAQCUAAEAlIABAJTAAQCzgAEAtAABALSAAQC1AAEAtcABALYAAQC2QAEAtoABALbAAQC3QAEAt8ABALgAAQC4QAEAuMABALkAAQDXwAEA2EABANjAAQDZQAEA2gABANpAAQDagAEA2sABANsAAQDbgAEA3AABANxAAQDcgAEA3QABAN1AAQD8AAEA/IABAP0AAQD9gAEA/kABAP6AAQD+wAEA/wABAP9AAQD/wAEBAEABAQCAAQEAwAEBAUABAQGAAQETwAEBHMABASaAAQEvgAEBMEABATDAAQExQAEBMcABATJAAQEywAEBMwABATPAAQE6AAEBQUABAUHAAQFCQAEBQsABAUNAAQFDwAEBREABAUTAAQFMAAEBTMABAU2AAQFOQAEBTwABAU/AAQFQgAEBUUABAVHAAQFwgAEBcQABAXGAAQFyAAEBcsABAXMAAQFzQAEBc4ABAXPAAQF0QAEBdMABAXUAAQF1QAEBdcABAXYAAQGUwAEBlUABAZXAAQGWQAEBlwABAZdAAQGXgAEBl8ABAZgAAQGYgAEBmQABAZlAAQGZgAEBmgABAZpAAQG5AAEBuYABAboAAQG6gAEBu0ABAbuAAQG7wAEBvAABAbxAAQG8wAEBvUABAb2AAQG9wAEBvkABAb6AAQHdQAEB3cABAd6AAQHfAAEB38ABAeAAAQHgQAEB4IABAeDAAQHhQAEB4cABAeIAAQHiQAEB4sABAeMAAQIBwAECAkABAgLAAQIDQAECBAABAgRAAQIEgAECBMABAgUAAQIFgAECBgABAgZAAQIGgAECBwABAgdAAQImAAECJoABAicAAQIngAECKEABAiiAAQIowAECKQABAilAAQIpwAECKkABAiqAAQIqwAECK0ABAiuAAQJKQAECSsABAktAAQJLwAECTIABAkzAAQJNAAECTUABAk2AAQJOAAECToABAk7AAQJPAAECT4ABAk/AAQJ0gAECfUABAoVAAQKNQAECjcABAo5AAQKOwAECj0ABApAAAQKQQAECkIABApFAAQKRgAECkgABApJAAQKSwAECk4ABApPAAQKUAAEClMABApUAAQKWQAECnIABAp7AAQKfQAECn8ABAqIAAQKiwAECo4ABAqQAAQK2QAECv0ABAskAAQLSAAEC0sABAtNAAQLTwAEC1EABAtTAAQLVQAEC1YABAtZAAQLcgAEC5MABAuVAAQLlwAEC5kABAubAAQLnQAEC58ABAuhAAQLowAEC8QABAvHAAQLygAEC80ABAvQAAQL0wAEC9YABAvZAAQL3AAEC94ABAxZAAQMWwAEDF0ABAxfAAQMYgAEDGMABAxkAAQMZQAEDGYABAxoAAQMagAEDGsABAxsAAQMbgAEDG8ABAzqAAQM7AAEDO4ABAzwAAQM8wAEDPQABAz1AAQM9gAEDPcABAz5AAQM+wAEDPwABAz9AAQM/wAEDQAABA17AAQNfQAEDYAABA2CAAQNhQAEDYYABA2HAAQNiAAEDYkABA2LAAQNjQAEDY4ABA2PAAQNkQAEDZIABA2rAAQNrAAEDa0ABA2vAAQOKgAEDiwABA4uAAQOMAAEDjMABA40AAQONQAEDjYABA43AAQOOQAEDjsABA48AAQOPQAEDj8ABA5AAAQOuwAEDr0ABA6/AAQOwQAEDsQABA7FAAQOxgAEDscABA7IAAQOygAEDswABA7NAAQOzgAEDtAABA7RAAQPTAAED04ABA9QAAQPUgAED1UABA9WAAQPVwAED1gABA9ZAAQPWwAED10ABA9eAAQPXwAED2EABA9iAAQP3QAED98ABA/hAAQP4wAED+YABA/nAAQP6AAED+kABA/qAAQP7AAED+4ABA/vAAQP8AAED/IABA/zAAQQbgAEEHAABBByAAQQdAAEEHc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ABDRDAAQ0RQAENEcABDRJAAQ0SwAENE0ABDRqAAQ0bQAENHAABDRzAAQ0dgAENHkABDR8AAQ0fwAENIEABDT8AAQ0/gAENQAABDUCAAQ1BQAENQYABDUHAAQ1CAAENQkABDULAAQ1DQAENQ4ABDUPAAQ1EQAENRIABDWNAAQ1jwAENZEABDWTAAQ1lgAENZcABDWYAAQ1mQAENZoABDWcAAQ1ngAENZ8ABDWgAAQ1ogAENaMABDYeAAQ2IAAENiIABDYkAAQ2JwAENigABDYpAAQ2KgAENisABDYtAAQ2LwAENjAABDYxAAQ2MwAENjQABDavAAQ2sQAENrMABDa1AAQ2uAAENrkABDa6AAQ2uwAENrwABDa+AAQ2wAAENsEABDbCAAQ2xAAENsUABDdAAAQ3QgAEN0QABDdGAAQ3SQAEN0oABDdLAAQ3TAAEN00ABDdPAAQ3UQAEN1IABDdTAAQ3VQAEN1YABDfRAAQ30wAEN9YABDfYAAQ32wAEN9wABDfdAAQ33gAEN98ABDfhAAQ34wAEN+QABDflAAQ35wAEN+gABDf3AAQ4cgAEOHQABDh2AAQ4eAAEOHsABDh8AAQ4fQAEOH4ABDh/AAQ4gQAEOIMABDiEAAQ4hQAEOIcABDiIAAQ5GwAEOT4ABDleAAQ5fgAEOYAABDmCAAQ5hAAEOYYABDmJAAQ5igAEOYsABDmOAAQ5jwAEOZEABDmSAAQ5lQAEOZgABDmZAAQ5mgAEOZ0ABDmeAAQ5owAEObwABDnFAAQ5xwAEOcoABDnTAAQ51gAEOdkABDnbAAQ6JAAEOkgABDpvAAQ6kwAEOpYABDqYAAQ6mgAEOpwABDqeAAQ6oAAEOqEABDqkAAQ6vQAEOt4ABDrgAAQ64gAEOuQABDrmAAQ66AAEOuoABDrsAAQ67gAEOw8ABDsSAAQ7FQAEOxgABDsbAAQ7HgAEOyEABDskAAQ7JwAEOykABDukAAQ7pgAEO6gABDuqAAQ7rQAEO64ABDuvAAQ7sAAEO7EABDuzAAQ7tQAEO7YABDu3AAQ7uQAEO7oABDw1AAQ8NwAEPDkABDw7AAQ8PgAEPD8ABDxAAAQ8QQAEPEIABDxEAAQ8RgAEPEcABDxIAAQ8SgAEPEsABDzGAAQ8yAAEPMsABDzNAAQ80AAEPNEABDzSAAQ80wAEPNQABDzWAAQ82AAEPNkABDzaAAQ83AAEPN0ABDz2AAQ89wAEPPgABDz6AAQ9dQAEPXcABD15AAQ9ewAEPX4ABD1/AAQ9gAAEPYEABD2CAAQ9hAAEPYYABD2HAAQ9iAAEPYoABD2LAAQ+BgAEPggABD4KAAQ+DAAEPg8ABD4QAAQ+EQAEPhIABD4TAAQ+FQAEPhcABD4YAAQ+GQAEPhsABD4cAAQ+lwAEPpkABD6bAAQ+nQAEPqAABD6hAAQ+ogAEPqMABD6kAAQ+pgAEPqgABD6pAAQ+qgAEPqwABD6tAAQ/KAAEPyoABD8sAAQ/LgAEPzEABD8yAAQ/MwAEPzQABD81AAQ/NwAEPzkABD86AAQ/OwAEPz0ABD8+AAQ/uQAEP7sABD+9AAQ/vwAEP8IABD/DAAQ/xAAEP8UABD/GAAQ/yAAEP8oABD/LAAQ/zAAEP84ABD/PAARAGAAEQDwABEBjAARAhwAEQIoABECNAARAjwAEQJEABECTAARAlQAEQJYABECZAARAsgAEQM8ABEDSAARA1QAEQNgABEDbAARA3gAEQOEABEDkAARBAQAEQQQABEEHAARBCgAEQQ0ABEEQAARBEwAEQRYABEEYAARBkwAEQZUABEGYAARBmgAEQZ0ABEGeAARBnwAEQaAABEGhAARBowAEQaYABEGnAARBqAAEQaoABEGrAARCJgAEQigABEIrAARCLQAEQjAABEIxAARCMgAEQjMABEI0AARCNgAEQjkABEI6AARCOwAEQj0ABEI+AARCuQAEQrsABEK+AARCwAAEQsMABELEAARCxQAEQsYABELHAARCyQAEQswABELNAARCzgAEQtAABELRAARDTAAEQ04ABENRAARDUwAEQ1YABENXAARDWAAEQ1kABENaAARDXAAEQ18ABENgAARDYQAEQ2MABENkAARD5wAERAsABEQvAAREUgAERHkABESZAAREwAAEROcABEUHAARFKwAERU8ABEVRAARFVAAERVYABEVYAARFWgAERV0ABEVgAARFYgAERWQABEVnAARFaQAERWsABEVuAARFcQAERXIABEV3AARFkAAERZUABEWXAARFnAAERZ8ABEWhAARF6gAERg4ABEY1AARGWQAERlwABEZeAARGYAAERmIABEZkAARGZgAERmcABEZqAARGgwAERqgABEaqAARGrAAERq4ABEawAARGsgAERrQABEa2AARGuAAERroABEbfAARG4gAERuUABEboAARG6wAERu4ABEbxAARG9AAERvcABEb6AARG/AAER3cABEd5AARHfAAER34ABEeBAARHggAER4MABEeEAARHhQAER4cABEeJAARHigAER4sABEeNAARHjgAER58ABEegAARHogAESB0ABEgfAARIIQAESCMABEgmAARIJwAESCgABEgpAARIKgAESCwABEguAARILwAESDAABEgyAARIMwAESK4ABEiwAARIswAESLUABEi4AARIuQAESLoABEi7AARIvAAESL4ABEjAAARIwQAESMIABEjEAARIxQAESNYABEjXAARI2QAESVQABElWAARJWAAESVoABEldAARJXgAESV8ABElgAARJYQAESWMABEllAARJZgAESWcABElpAARJagAESeUABEnnAARJ6gAESewABEnvAARJ8AAESfEABEnyAARJ8wAESfUABEn3AARJ+AAESfkABEn7AARJ/AAESg0ABEoOAARKEAAESosABEqNAARKjwAESpEABEqUAARKlQAESpYABEqXAARKmAAESpoABEqcAARKnQAESp4ABEqgAARKoQAESxwABEseAARLIQAESyMABEsmAARLJwAESygABEspAARLKgAESywABEsuAARLLwAESzAABEsyAARLMwAES0wABEtNAARLTgAES1AABEvLAARLzQAES88ABEvRAARL1AAES9UABEvWAARL1wAES9gABEvaAARL3AAES90ABEveAARL4AAES+EABExcAARMXgAETGEABExjAARMZgAETGcABExoAARMaQAETGoABExsAARMbgAETG8ABExwAARMcgAETHMABEyFAARMngAETOEABEzkAARM5wAETOoABEztAARM8AAETPMABEz2AARM+QAETPwABEz/AARNAgAETQUABE0IAARNCwAETQ4ABE0RAARNVAAETVcABE1aAARNXQAETWAABE1jAARNZgAETWkABE1sAARNbwAETXIABE11AARNeAAETXsABE1+AARNgQAETYQABE2GAARNuAAETdQABE3sAARN+gAETgIABE4VAAROIwAETj4ABE5WAAROYQAETnwABE6RAAROqgAETrYABE7PAARO3QAET3AABE+TAARPswAET9MABE/VAARP1wAET9kABE/bAARP3gAET98ABE/gAARP4wAET+QABE/mAARP5wAET+kABE/sAARP7QAET+4ABE/xAARP8gAET/cABFAQAARQGQAEUBsABFAdAARQJgAEUCkABFAsAARQLgAEUHcABFCbAARQwgAEUOYABFDpAARQ6wAEUO0ABFDvAARQ8QAEUPMABFD0AARQ9wAEURAABFExAARRMwAEUTUABFE3AARROQAEUTsABFE9AARRPwAEUUEABFFiAARRZQAEUWgABFFrAARRbgAEUXEABFF0AARRdwAEUXoABFF8AARR9wAEUfkABFH7AARR/QAEUgAABFIBAARSAgAEUgMABFIEAARSBgAEUggABFIJAARSCgAEUgwABFINAARSiAAEUooABFKMAARSjgAEUpEABFKSAARSkwAEUpQABFKVAARSlwAEUpkABFKaAARSmwAEUp0ABFKeAARTGQAEUxsABFMeAARTIAAEUyMABFMkAARTJQAEUyYABFMnAARTKQAEUysABFMsAARTLQAEUy8ABFMwAARTSQAEU0oABFNLAARTTQAEU8gABFPKAARTzAAEU84ABFPRAART0gAEU9MABFPUAART1QAEU9cABFPZAART2gAEU9sABFPdAART3gAEVFkABFRbAARUXQAEVF8ABFRiAARUYwAEVGQABFRlAARUZgAEVGgABFRqAARUawAEVGwABFRuAARUbwAEVOoABFTsAARU7gAEVPAABFTzAARU9AAEVPUABFT2AARU9wAEVPkABFT7AARU/AAEVP0ABFT/AARVAAAEVXsABFV9AARVfwAEVYEABFWEAARVhQAEVYYABFWHAARViAAEVYoABFWMAARVjQAEVY4ABFWQAARVkQAEVgwABFYOAARWEAAEVhIABFYVAARWFgAEVhcABFYYAARWGQAEVhsABFYdAARWHgAEVh8ABFYhAARWIgAEVmsABFaPAARWtgAEVtoABFbdAARW3wAEVuEABFbjAARW5QAEVucABFboAARW6wAEVwQABFchAARXIwAEVyUABFcnAARXKQAEVysABFctAARXLwAEV0wABFdPAARXUgAEV1UABFdYAARXWwAEV14ABFdhAARXYwAEV94ABFfgAARX4gAEV+QABFfnAARX6AAEV+kABFfqAARX6wAEV+0ABFfvAARX8AAEV/EABFfzAARX9AAEWG8ABFhxAARYcwAEWHUABFh4AARYeQAEWHoABFh7AARYfAAEWH4ABFiAAARYgQAEWIIABFiEAARYhQAEWQAABFkCAARZBAAEWQYABFkJAARZCgAEWQsABFkMAARZDQAEWQ8ABFkRAARZEgAEWRMABFkVAARZFgAEWZEABFmTAARZlgAEWZgABFmbAARZnAAEWZ0ABFmeAARZnwAEWaEABFmjAARZpAAEWaUABFmnAARZqAAEWiMABFolAARaJwAEWikABFosAARaLQAEWi4ABFovAARaMAAEWjIABFo0AARaNQAEWjYABFo4AARaOQAEWrQABFq2AARauAAEWroABFq9AARavgAEWr8ABFrAAARawQAEWsMABFrFAARaxgAEWscABFrJAARaygAEW0UABFtHAARbSQAEW0sABFtOAARbTwAEW1AABFtRAARbUgAEW1QABFtWAARbVwAEW1gABFtaAARbWwAEW+4ABFwRAARcMQAEXFEABFxTAARcVQAEXFcABFxZAARcXAAEXF0ABFxeAARcYQAEXGIABFxkAARcZQAEXGcABFxqAARcawAEXGwABFxvAARccAAEXHUABFyOAARclwAEXJkABFybAARcpAAEXKcABFyqAARcrAAEXPUABF0ZAARdQAAEXWQABF1nAARdaQAEXWsABF1tAARdbwAEXXEABF1yAARddQAEXY4ABF2vAARdsQAEXbMABF21AARdtwAEXbkABF27AARdvQAEXb8ABF3gAARd4wAEXeYABF3pAARd7AAEXe8ABF3yAARd9QAEXfgABF36AARedQAEXncABF55AAReewAEXn4ABF5/AARegAAEXoEABF6CAARehAAEXoYABF6HAAReiAAEXooABF6LAARfBgAEXwgABF8KAARfDAAEXw8ABF8QAARfEQAEXxIABF8TAARfFQAEXxcABF8YAARfGQAEXxsABF8cAARflwAEX5kABF+cAARfngAEX6EABF+iAARfowAEX6QABF+lAARfpwAEX6kABF+qAARfqwAEX60ABF+uAARfxwAEX8gABF/JAARfywAEYEYABGBIAARgSgAEYEwABGBPAARgUAAEYFEABGBSAARgUwAEYFUABGBXAARgWAAEYFkABGBbAARgXAAEYNcABGDZAARg2wAEYN0ABGDgAARg4QAEYOIABGDjAARg5AAEYOYABGDoAARg6QAEYOoABGDsAARg7QAEYWgABGFqAARhbAAEYW4ABGFxAARhcgAEYXMABGF0AARhdQAEYXcABGF5AARhegAEYXsABGF9AARhfgAEYfkABGH7AARh/QAEYf8ABGICAARiAwAEYgQABGIFAARiBgAEYggABGIKAARiCwAEYgwABGIOAARiDwAEYooABGKMAARijgAEYpAABGKTAARilAAEYpUABGKWAARilwAEYpkABGKbAARinAAEYp0ABGKfAARioAAEYukABGMNAARjNAAEY1gABGNbAARjXQAEY18ABGNhAARjYwAEY2UABGNmAARjaQAEY4IABGOfAARjoQAEY6MABGOlAARjpwAEY6kABGOrAARjrQAEY8oABGPNAARj0AAEY9MABGPWAARj2QAEY9wABGPfAARj4QAEZFwABGReAARkYQAEZGMABGRmAARkZwAEZGgABGRpAARkagAEZGwABGRuAARkbwAEZHAABGRyAARkcwAEZO4ABGTwAARk8gAEZPQABGT3AARk+AAEZPkABGT6AARk+wAEZP0ABGT/AARlAAAEZQEABGUDAARlBAAEZX8ABGWBAARlgwAEZYUABGWIAARliQAEZYoABGWLAARljAAEZY4ABGWQAARlkQAEZZIABGWUAARllQAEZhAABGYSAARmFQAEZhcABGYaAARmGwAEZhwABGYdAARmHgAEZiAABGYiAARmIwAEZiQABGYmAARmJwAEZqIABGakAARmpgAEZqgABGarAARmrAAEZq0ABGauAARmrwAEZrEABGazAARmtAAEZrUABGa3AARmuAAEZzMABGc1AARnNwAEZzkABGc8AARnPQAEZz4ABGc/AARnQAAEZ0IABGdEAARnRQAEZ0YABGdIAARnSQAEZ8QABGfGAARnyAAEZ8oABGfNAARnzgAEZ88ABGfQAARn0QAEZ9MABGfVAARn1gAEZ9cABGfZAARn2gAEaG0ABGiQAARosAAEaNAABGjSAARo1AAEaNYABGjYAARo2wAEaNwABGjdAARo4AAEaOEABGjjAARo5AAEaOYABGjpAARo6gAEaOsABGjuAARo7wAEaPQABGkNAARpFgAEaRgABGkaAARpIwAEaSYABGkpAARpKwAEaXQABGmYAARpvwAEaeMABGnmAARp6AAEaeoABGnsAARp7gAEafAABGnxAARp9AAEag0ABGouAARqMAAEajIABGo0AARqNgAEajgABGo6AARqPAAEaj4ABGpfAARqYgAEamUABGpoAARqawAEam4ABGpxAARqdAAEancABGp5AARq9AAEavYABGr4AARq+gAEav0ABGr+AARq/wAEawAABGsBAARrAwAEawUABGsGAARrBwAEawkABGsKAARrhQAEa4cABGuJAARriwAEa44ABGuPAARrkAAEa5EABGuSAARrlAAEa5YABGuXAARrmAAEa5oABGubAARsFgAEbBgABGwbAARsHQAEbCAABGwhAARsIgAEbCMABGwkAARsJgAEbCgABGwpAARsKgAEbCwABGwtAARsRgAEbEcABGxIAARsSgAEbMUABGzHAARsyQAEbMsABGzOAARszwAEbNAABGzRAARs0gAEbNQABGzWAARs1wAEbNgABGzaAARs2wAEbVYABG1YAARtWgAEbVwABG1fAARtYAAEbWEABG1iAARtYwAEbWUABG1nAARtaAAEbWkABG1rAARtbAAEbecABG3pAARt6wAEbe0ABG3wAARt8QAEbfIABG3zAARt9AAEbfYABG34AARt+QAEbfoABG38AARt/QAEbngABG56AARufAAEbn4ABG6BAARuggAEboMABG6EAARuhQAEbocABG6JAARuigAEbosABG6NAARujgAEbwkABG8LAARvDQAEbw8ABG8SAARvEwAEbxQABG8VAARvFgAEbxgABG8aAARvGwAEbxwABG8eAARvHwAEb2gABG+MAARvswAEb9cABG/aAARv3AAEb94ABG/gAARv4gAEb+QABG/lAARv6AAEcAEABHAeAARwIAAEcCIABHAkAARwJgAEcCgABHAqAARwLAAEcEkABHBMAARwTwAEcFIABHBVAARwWAAEcFsABHBeAARwYAAEcNsABHDdAARw3wAEcOEABHDkAARw5QAEcOYABHDnAARw6AAEcOoABHDsAARw7QAEcO4ABHDwAARw8QAEcWwABHFuAARxcAAEcXIABHF1AARxdgAEcXcABHF4AARxeQAEcXsABHF9AARxfgAEcX8ABHGBAARxggAEcf0ABHH/AARyAQAEcgMABHIGAARyBwAEcggABHIJAARyCgAEcgwABHIOAARyDwAEchAABHISAARyEwAEco4ABHKQAARykwAEcpUABHKYAARymQAEcpoABHKbAARynAAEcp4ABHKgAARyoQAEcqIABHKkAARypQAEcyAABHMiAARzJAAEcyYABHMpAARzKgAEcysABHMsAARzLQAEcy8ABHMxAARzMgAEczMABHM1AARzNgAEc7EABHOzAARztQAEc7cABHO6AARzuwAEc7wABHO9AARzvgAEc8AABHPCAARzwwAEc8QABHPGAARzxwAEdEIABHREAAR0RgAEdEgABHRLAAR0TAAEdE0ABHROAAR0TwAEdFEABHRTAAR0VAAEdFUABHRXAAR0WAAEdOsABHUOAAR1LgAEdU4ABHVQAAR1UgAEdVQABHVWAAR1WQAEdVoABHVbAAR1XgAEdV8ABHVhAAR1YgAEdWQABHVnAAR1aAAEdWkABHVsAAR1bQAEdXIABHWLAAR1lAAEdZYABHWYAAR1oQAEdaQABHWnAAR1qQAEdfIABHYWAAR2PQAEdmEABHZkAAR2ZgAEdmgABHZqAAR2bAAEdm4ABHZvAAR2cgAEdosABHasAAR2rgAEdrAABHayAAR2tAAEdrYABHa4AAR2ugAEdrwABHbdAAR24AAEduMABHbmAAR26QAEduwABHbvAAR28gAEdvUABHb3AAR3cgAEd3QABHd2AAR3eAAEd3sABHd8AAR3fQAEd34ABHd/AAR3gQAEd4MABHeEAAR3hQAEd4cABHeIAAR4AwAEeAUABHgHAAR4CQAEeAwABHgNAAR4DgAEeA8ABHgQAAR4EgAEeBQABHgVAAR4FgAEeBgABHgZAAR4lAAEeJYABHiZAAR4mwAEeJ4ABHifAAR4oAAEeKEABHiiAAR4pAAEeKYABHinAAR4qAAEeKoABHirAAR4xAAEeMUABHjGAAR4yAAEeUMABHlFAAR5RwAEeUkABHlMAAR5TQAEeU4ABHlPAAR5UAAEeVIABHlUAAR5VQAEeVYABHlYAAR5WQAEedQABHnWAAR52AAEedoABHndAAR53gAEed8ABHngAAR54QAEeeMABHnlAAR55gAEeecABHnpAAR56gAEemUABHpnAAR6aQAEemsABHpuAAR6bwAEenAABHpxAAR6cgAEenQABHp2AAR6dwAEengABHp6AAR6ewAEevYABHr4AAR6+gAEevwABHr/AAR7AAAEewEABHsCAAR7AwAEewUABHsHAAR7CAAEewkABHsLAAR7DAAEe4cABHuJAAR7iwAEe40ABHuQAAR7kQAEe5IABHuTAAR7lAAEe5YABHuYAAR7mQAEe5oABHucAAR7nQAEe+YABHwKAAR8MQAEfFUABHxYAAR8WgAEfFwABHxeAAR8YAAEfGIABHxjAAR8ZgAEfH8ABHycAAR8ngAEfKAABHyiAAR8pAAEfKYABHyoAAR8qgAEfMcABHzKAAR8zQAEfNAABHzTAAR81gAEfNkABHzcAAR83gAEfVkABH1bAAR9XQAEfV8ABH1iAAR9YwAEfWQABH1lAAR9ZgAEfWgABH1qAAR9awAEfWwABH1uAAR9bwAEfeoABH3sAAR97gAEffAABH3zAAR99AAEffUABH32AAR99wAEffkABH37AAR9/AAEff0ABH3/AAR+AAAEfnsABH59AAR+fwAEfoEABH6EAAR+hQAEfoYABH6HAAR+iAAEfooABH6MAAR+jQAEfo4ABH6QAAR+kQAEfwwABH8OAAR/EQAEfxMABH8WAAR/FwAEfxgABH8ZAAR/GgAEfxwABH8eAAR/HwAEfyAABH8iAAR/IwAEfyYABH+hAAR/owAEf6UABH+nAAR/qgAEf6sABH+sAAR/rQAEf64ABH+wAAR/sgAEf7MABH+0AAR/tgAEf7cABIAyAASANAAEgDYABIA4AASAOwAEgDwABIA9AASAPgAEgD8ABIBBAASAQwAEgEQABIBFAASARwAEgEgABIDDAASAxQAEgMcABIDJAASAzAAEgM0ABIDOAASAzwAEgNAABIDSAASA1AAEgNUABIDWAASA2AAEgNkABIFsAASBjwAEga8ABIHPAASB0QAEgdMABIHVAASB1wAEgdoABIHbAASB3AAEgd8ABIHgAASB4gAEgeMABIHmAASB6QAEgeoABIHrAASB7gAEge8ABIH0AASCDQAEghYABIIYAASCGwAEgiQABIInAASCKgAEgiwABIJ1AASCmQAEgsAABILkAASC5wAEgukABILrAASC7QAEgu8ABILxAASC8gAEgvUABIMOAASDLwAEgzEABIMzAASDNQAEgzcABIM5AASDOwAEgz0ABIM/AASDYAAEg2MABINmAASDaQAEg2wABINvAASDcgAEg3UABIN4AASDegAEg/UABIP3AASD+QAEg/sABIP+AASD/wAEhAAABIQBAASEAgAEhAQABIQGAASEBwAEhAgABIQKAASECwAEhIYABISIAASEigAEhIwABISPAASEkAAEhJEABISSAASEkwAEhJUABISXAASEmAAEhJkABISbAASEnAAEhRcABIUZAASFHAAEhR4ABIUhAASFIgAEhSMABIUkAASFJQAEhScABIUpAASFKgAEhSsABIUtAASFLgAEhUcABIVIAASFSQAEhUsABIXGAASFyAAEhcoABIXMAASFzwAEhdAABIXRAASF0gAEhdMABIXVAASF1wAEhdgABIXZAASF2wAEhdwABIZXAASGWQAEhlsABIZdAASGYAAEhmEABIZiAASGYwAEhmQABIZmAASGaAAEhmkABIZqAASGbAAEhm0ABIboAASG6gAEhuwABIbuAASG8QAEhvIABIbzAASG9AAEhvUABIb3AASG+QAEhvoABIb7AASG/QAEhv4ABId5AASHewAEh30ABId/AASHggAEh4MABIeEAASHhQAEh4YABIeIAASHigAEh4sABIeMAASHjgAEh48ABIgKAASIDAAEiA4ABIgQAASIEwAEiBQABIgVAASIFgAEiBcABIgZAASIGwAEiBwABIgdAASIHwAEiCAABIhpAASIjQAEiLQABIjYAASI2wAEiN4ABIjgAASI4gAEiOQABIjmAASI5wAEiOoABIkDAASJIAAEiSMABIkmAASJKQAEiSwABIkvAASJMgAEiTUABIlSAASJVQAEiVgABIlbAASJXgAEiWEABIlkAASJZwAEiWkABInkAASJ5gAEiekABInrAASJ7gAEie8ABInwAASJ8QAEifIABIn0AASJ9wAEifgABIn5AASJ+wAEifwABIp3AASKeQAEinwABIp+AASKgQAEioIABIqDAASKhAAEioUABIqHAASKigAEiosABIqMAASKjgAEio8ABIsKAASLDAAEiw8ABIsRAASLFAAEixUABIsWAASLFwAEixgABIsaAASLHQAEix4ABIsfAASLIQAEiyIABIudAASLnwAEi6IABIukAASLpwAEi6gABIupAASLqgAEi6sABIutAASLsAAEi7EABIuyAASLtAAEi7UABIwwAASMMgAEjDQABIw2AASMOQAEjDoABIw7AASMPAAEjD0ABIw/AASMQgAEjEMABIxEAASMRgAEjEcABIzCAASMxAAEjMYABIzIAASMywAEjMwABIzNAASMzgAEjM8ABIzRAASM1AAEjNUABIzWAASM2AAEjNkABI1UAASNVgAEjVkABI1bAASNXgAEjV8ABI1gAASNYQAEjWIABI1kAASNZwAEjWgABI1pAASNawAEjWwABI3/AASOIgAEjkIABI5iAASOZAAEjmYABI5oAASOagAEjm0ABI5uAASObwAEjnIABI5zAASOdQAEjnYABI55AASOfAAEjn0ABI5+AASOgQAEjoIABI6HAASOoAAEjqkABI6rAASOrgAEjrcABI66AASOvQAEjr8ABI8IAASPLAAEj1MABI93AASPegAEj3wABI9+AASPgAAEj4IABI+EAASPhQAEj4gABI+hAASPwgAEj8QABI/GAASPyAAEj8oABI/MAASPzgAEj9AABI/SAASP8wAEj/YABI/5AASP/AAEj/8ABJACAASQBQAEkAgABJALAASQDQAEkIgABJCKAASQjAAEkI4ABJCRAASQkgAEkJMABJCUAASQlQAEkJcABJCZAASQmgAEkJsABJCdAASQngAEkRkABJEbAASRHQAEkR8ABJEiAASRIwAEkSQABJElAASRJgAEkSgABJEqAASRKwAEkSwABJEuAASRLwAEkaoABJGsAASRrwAEkbEABJG0AASRtQAEkbYABJG3AASRuAAEkboABJG8AASRvQAEkb4ABJHAAASRwQAEkdoABJHbAASR3AAEkd4ABJJZAASSWwAEkl0ABJJfAASSYgAEkmMABJJkAASSZQAEkmYABJJoAASSagAEkmsABJJsAASSbgAEkm8ABJLqAASS7AAEku4ABJLwAASS8wAEkvQABJL1AASS9gAEkvcABJL5AASS+wAEkvwABJL9AASS/wAEkwAABJN7AASTfQAEk38ABJOBAASThAAEk4UABJOGAASThwAEk4gABJOKAASTjAAEk40ABJOOAASTkAAEk5EABJQMAASUDgAElBAABJQSAASUFQAElBYABJQXAASUGAAElBkABJQbAASUHQAElB4ABJQfAASUIQAElCIABJSdAASUnwAElKEABJSjAASUpgAElKcABJSoAASUqQAElKoABJSsAASUrgAElK8ABJSwAASUsgAElLMABJT8AASVIAAElUcABJVrAASVbgAElXEABJVzAASVdQAElXcABJV5AASVegAElX0ABJWWAASVswAElbYABJW5AASVvAAElb8ABJXCAASVxQAElcgABJXlAASV6AAElesABJXuAASV8QAElfQABJX3AASV+gAElfwABJZ3AASWeQAElnwABJZ+AASWgQAEloIABJaDAASWhAAEloUABJaHAASWigAElosABJaMAASWjgAElo8ABJcKAASXDAAElw8ABJcRAASXFAAElxUABJcWAASXFwAElxgABJcaAASXHQAElx4ABJcfAASXIQAElyIABJedAASXnwAEl6IABJekAASXpwAEl6gABJepAASXqgAEl6sABJetAASXsAAEl7EABJeyAASXtAAEl7UABJgwAASYMgAEmDUABJg3AASYOgAEmDsABJg8AASYPQAEmD4ABJhAAASYQwAEmEQABJhFAASYRwAEmEgABJjLAASY7wAEmRMABJk2AASZXQAEmX0ABJmkAASZywAEmesABJoPAASaMwAEmjUABJo4AASaOgAEmjwABJo+AASaQQAEmkQABJpGAASaSAAEmksABJpNAASaTwAEmlIABJpVAASaVgAEmlsABJp0AASaeQAEmnsABJqAAASagwAEmoUABJrOAASa8gAEmxkABJs9AASbQAAEm0IABJtEAASbRgAEm0gABJtKAASbSwAEm04ABJtnAASbjAAEm44ABJuQAASbkgAEm5QABJuWAASbmAAEm5oABJucAASbngAEm8MABJvGAASbyQAEm8wABJvPAASb0gAEm9UABJvYAASb2wAEm94ABJvgAAScWwAEnF0ABJxgAAScYgAEnGUABJxmAAScZwAEnGgABJxpAAScawAEnG0ABJxuAAScbwAEnHEABJxyAAScgwAEnIQABJyGAASdAQAEnQMABJ0FAASdBwAEnQoABJ0LAASdDAAEnQ0ABJ0OAASdEAAEnRIABJ0TAASdFAAEnRYABJ0XAASdkgAEnZQABJ2XAASdmQAEnZwABJ2dAASdngAEnZ8ABJ2gAASdogAEnaQABJ2lAASdpgAEnagABJ2pAASdugAEnbsABJ29AASeOAAEnjoABJ48AASePgAEnkEABJ5CAASeQwAEnkQABJ5FAASeRwAEnkkABJ5KAASeSwAEnk0ABJ5OAASeyQAEnssABJ7OAASe0AAEntMABJ7UAASe1QAEntYABJ7XAASe2QAEntsABJ7cAASe3QAEnt8ABJ7gAASe8QAEnvIABJ70AASfbwAEn3EABJ9zAASfdQAEn3gABJ95AASfegAEn3sABJ98AASffgAEn4AABJ+BAASfggAEn4QABJ+FAASgAAAEoAIABKAFAASgBwAEoAoABKALAASgDAAEoA0ABKAOAASgEAAEoBIABKATAASgFAAEoBYABKAXAASgMAAEoDEABKAyAASgNAAEoK8ABKCxAASgswAEoLUABKC4AASguQAEoLoABKC7AASgvAAEoL4ABKDAAASgwQAEoMIABKDEAASgxQAEoUAABKFCAAShRQAEoUcABKFKAAShSwAEoUwABKFNAAShTgAEoVAABKFSAAShUwAEoVQABKFWAAShVwAEoW4ABKGHAAShmAAEoZsABKGeAAShoQAEoaQABKG1AAShuAAEobsABKG+AAShwQAEocMABKHVAASh5AAEofkABKIQAASiowAEosYABKLmAASjBgAEowgABKMKAASjDAAEow4ABKMRAASjEgAEoxMABKMWAASjFwAEoxkABKMaAASjHQAEoyAABKMhAASjIgAEoyUABKMmAASjLwAEo0gABKNRAASjUwAEo1YABKNfAASjYgAEo2UABKNnAASjsAAEo9QABKP7AASkHwAEpCIABKQkAASkJgAEpCgABKQqAASkLAAEpC0ABKQwAASkSQAEpGoABKRsAASkbgAEpHAABKRyAASkdAAEpHYABKR4AASkegAEpJsABKSeAASkoQAEpKQABKSnAASkqgAEpK0ABKSwAASkswAEpLUABKUwAASlMgAEpTQABKU2AASlOQAEpToABKU7AASlPAAEpT0ABKU/AASlQQAEpUIABKVDAASlRQAEpUYABKXBAASlwwAEpcUABKXHAASlygAEpcsABKXMAASlzQAEpc4ABKXQAASl0gAEpdMABKXUAASl1gAEpdcABKZSAASmVAAEplcABKZZAASmXAAEpl0ABKZeAASmXwAEpmAABKZiAASmZAAEpmUABKZmAASmaAAEpmkABKaCAASmgwAEpoQABKaGAASnAQAEpwMABKcFAASnBwAEpwoABKcLAASnDAAEpw0ABKcOAASnEAAEpxIABKcTAASnFAAEpxYABKcXAASnkgAEp5QABKeWAASnmAAEp5sABKecAASnnQAEp54ABKefAASnoQAEp6MABKekAASnpQAEp6cABKeoAASoIwAEqCUABKgnAASoKQAEqCwABKgtAASoLgAEqC8ABKgwAASoMgAEqDQABKg1AASoNgAEqDgABKg5AASotAAEqLYABKi4AASougAEqL0ABKi+AASovwAEqMAABKjBAASowwAEqMUABKjGAASoxwAEqMkABKjKAASpRQAEqUcABKlJAASpSwAEqU4ABKlPAASpUAAEqVEABKlSAASpVAAEqVYABKlXAASpWAAEqVoABKlbAASppAAEqcgABKnvAASqEwAEqhYABKoZAASqGwAEqh0ABKofAASqIQAEqiIABKolAASqPgAEqlsABKpeAASqYQAEqmQABKpnAASqagAEqm0ABKpwAASqjQAEqpAABKqTAASqlgAEqpkABKqcAASqnwAEqqIABKqkAASrHwAEqyEABKskAASrJgAEqykABKsqAASrKwAEqywABKstAASrLwAEqzIABKszAASrNAAEqzYABKs3AASrsgAEq7QABKu3AASruQAEq7wABKu9AASrvgAEq78ABKvAAASrwgAEq8UABKvGAASrxwAEq8kABKvKAASsRQAErEcABKxKAASsTAAErE8ABKxQAASsUQAErFIABKxTAASsVQAErFgABKxZAASsWgAErFwABKxdAASs2AAErNoABKzdAASs3wAErOIABKzjAASs5AAErOUABKzmAASs6AAErOsABKzsAASs7QAErO8ABKzwAAStcwAErZcABK27AASt3gAErgUABK4lAASuTAAErnMABK6TAASutwAErtsABK7dAASu4AAEruIABK7kAASu5gAErukABK7sAASu7gAErvAABK7zAASu9QAErvcABK76AASu/QAErv4ABK8DAASvHAAEryEABK8jAASvKAAErysABK8tAASvdgAEr5oABK/BAASv5QAEr+gABK/qAASv7AAEr+4ABK/wAASv8gAEr/MABK/2AASwDwAEsDQABLA2AASwOAAEsDoABLA8AASwPgAEsEAABLBCAASwRAAEsEYABLBrAASwbgAEsHEABLB0AASwdwAEsHoABLB9AASwgAAEsIMABLCGAASwiAAEsQMABLEFAASxCAAEsQoABLENAASxDgAEsQ8ABLEQAASxEQAEsRMABLEVAASxFgAEsRcABLEZAASxGgAEsSsABLEsAASxLgAEsakABLGrAASxrQAEsa8ABLGyAASxswAEsbQABLG1AASxtgAEsbgABLG6AASxuwAEsbwABLG+AASxvwAEsjoABLI8AASyPwAEskEABLJEAASyRQAEskYABLJHAASySAAEskoABLJMAASyTQAEsk4ABLJQAASyUQAEsmIABLJnAASyagAEsmwABLJ9AASyjgAEspEABLKUAASylwAEspoABLKcAASytwAEssMABLLPAASy3AAEs1cABLNZAASzWwAEs10ABLNgAASzYQAEs2IABLNjAASzZAAEs2YABLNoAASzaQAEs2oABLNsAASzbQAEs+gABLPqAASz7QAEs+8ABLPyAASz8wAEs/QABLP1AASz9gAEs/gABLP6AASz+wAEs/wABLP+AASz/wAEtBAABLQRAAS0EwAEtI4ABLSQAAS0kgAEtJQABLSXAAS0mAAEtJkABLSaAAS0mwAEtJ0ABLSfAAS0oAAEtKEABLSjAAS0pAAEtR8ABLUhAAS1JAAEtSYABLUpAAS1KgAEtSsABLUsAAS1LQAEtS8ABLUxAAS1MgAEtTMABLU1AAS1NgAEtU8ABLVQAAS1UQAEtVMABLXOAAS10AAEtdIABLXUAAS11wAEtdgABLXZAAS12gAEtdsABLXdAAS13wAEteAABLXhAAS14wAEteQABLZfAAS2YQAEtmQABLZmAAS2aQAEtmoABLZrAAS2bAAEtm0ABLZvAAS2cQAEtnIABLZzAAS2dQAEtnYABLaFAAS2ngAEtvEABLb0AAS29wAEtvoABLb9AAS3AAAEtwMABLcGAAS3CQAEtwwABLcPAAS3EgAEtxUABLcYAAS3GwAEtx4ABLchAAS3JAAEtycABLcqAAS3LQAEt4AABLeDAAS3hgAEt4kABLeMAAS3jwAEt5IABLeVAAS3mAAEt5sABLeeAAS3oQAEt6QABLenAAS3qgAEt60ABLewAAS3swAEt7YABLe5AAS3vAAEt74ABLfQAAS35QAEt+wABLgAAAS4IQAEuDUABLhJAAS4aAAEuHUABLiHAAS4kwAEuMEABLjOAAS46QAEuQQABLkRAAS5JAAEuTAABLlGAAS5YAAEufMABLoWAAS6NgAEulYABLpYAAS6WgAEulwABLpeAAS6YQAEumIABLpjAAS6ZgAEumcABLppAAS6agAEum0ABLpwAAS6cQAEunIABLp1AAS6dgAEunsABLqUAAS6nQAEup8ABLqiAAS6qwAEuq4ABLqxAAS6swAEuvwABLsgAAS7RwAEu2sABLtuAAS7cAAEu3IABLt0AAS7dgAEu3gABLt5AAS7fAAEu5UABLu2AAS7uAAEu7oABLu8AAS7vgAEu8AABLvCAAS7xAAEu8YABLvnAAS76gAEu+0ABLvwAAS78wAEu/YABLv5AAS7/AAEu/8ABLwBAAS8fAAEvH4ABLyAAAS8ggAEvIUABLyGAAS8hwAEvIgABLyJAAS8iwAEvI0ABLyOAAS8jwAEvJEABLySAAS9DQAEvQ8ABL0RAAS9EwAEvRYABL0XAAS9GAAEvRkABL0aAAS9HAAEvR4ABL0fAAS9IAAEvSIABL0jAAS9ngAEvaAABL2jAAS9pQAEvagABL2pAAS9qgAEvasABL2sAAS9rgAEvbAABL2xAAS9sgAEvbQABL21AAS9zgAEvc8ABL3QAAS90gAEvk0ABL5PAAS+UQAEvlMABL5WAAS+VwAEvlgABL5ZAAS+WgAEvlwABL5eAAS+XwAEvmAABL5iAAS+YwAEvt4ABL7gAAS+4gAEvuQABL7nAAS+6AAEvukABL7qAAS+6wAEvu0ABL7vAAS+8AAEvvEABL7zAAS+9AAEv28ABL9xAAS/cwAEv3UABL94AAS/eQAEv3oABL97AAS/fAAEv34ABL+AAAS/gQAEv4IABL+EAAS/hQAEwAAABMACAATABAAEwAYABMAJAATACgAEwAsABMAMAATADQAEwA8ABMARAATAEgAEwBMABMAVAATAFgAEwJEABMCTAATAlQAEwJcABMCaAATAmwAEwJwABMCdAATAngAEwKAABMCiAATAowAEwKQABMCmAATApwAEwPAABMEUAATBOwAEwV8ABMFiAATBZQAEwWcABMFpAATBawAEwW0ABMFuAATBcQAEwYoABMGnAATBqgAEwa0ABMGwAATBswAEwbYABMG5AATBvAAEwdkABMHcAATB3wAEweIABMHlAATB6AAEwesABMHuAATB8AAEwmsABMJtAATCcAAEwnIABMJ1AATCdgAEwncABMJ4AATCeQAEwnsABMJ+AATCfwAEwoAABMKCAATCgwAEwv4ABMMAAATDAwAEwwUABMMIAATDCQAEwwoABMMLAATDDAAEww4ABMMRAATDEgAEwxMABMMVAATDFgAEw5EABMOTAATDlgAEw5gABMObAATDnAAEw50ABMOeAATDnwAEw6EABMOkAATDpQAEw6YABMOoAATDqQAExCQABMQmAATEKQAExCsABMQuAATELwAExDAABMQxAATEMgAExDQABMQ3AATEOAAExDkABMQ7AATEPAAExLcABMS5AATEuwAExL0ABMTAAATEwQAExMIABMTDAATExAAExMYABMTJAATEygAExMsABMTNAATEzgAExUkABMVLAATFTQAExU8ABMVSAATFUwAExVQABMVVAATFVgAExVgABMVbAATFXAAExV0ABMVfAATFYAAExdsABMXdAATF4AAExeIABMXlAATF5gAExecABMXoAATF6QAExesABMXuAATF7wAExfAABMXyAATF8wAExoYABMapAATGyQAExukABMbrAATG7QAExu8ABMbxAATG9AAExvUABMb2AATG+QAExvoABMb8AATG/QAExv8ABMcCAATHAwAExwQABMcHAATHCAAExw0ABMcmAATHLwAExzEABMczAATHPAAExz8ABMdCAATHRAAEx40ABMexAATH2AAEx/wABMf/AATIAQAEyAMABMgFAATIBwAEyAkABMgKAATIDQAEyCYABMhHAATISQAEyEsABMhNAATITwAEyFEABMhTAATIVQAEyFcABMh4AATIewAEyH4ABMiBAATIhAAEyIcABMiKAATIjQAEyJAABMiSAATJDQAEyQ8ABMkRAATJEwAEyRYABMkXAATJGAAEyRkABMkaAATJHAAEyR4ABMkfAATJIAAEySIABMkjAATJngAEyaAABMmiAATJpAAEyacABMmoAATJqQAEyaoABMmrAATJrQAEya8ABMmwAATJsQAEybMABMm0AATKLwAEyjEABMo0AATKNgAEyjkABMo6AATKOwAEyjwABMo9AATKPwAEykEABMpCAATKQwAEykUABMpGAATKXwAEymAABMphAATKYwAEyt4ABMrgAATK4gAEyuQABMrnAATK6AAEyukABMrqAATK6wAEyu0ABMrvAATK8AAEyvEABMrzAATK9AAEy28ABMtxAATLcwAEy3UABMt4AATLeQAEy3oABMt7AATLfAAEy34ABMuAAATLgQAEy4IABMuEAATLhQAEzAAABMwCAATMBAAEzAYABMwJAATMCgAEzAsABMwMAATMDQAEzA8ABMwRAATMEgAEzBMABMwVAATMFgAEzJEABMyTAATMlQAEzJcABMyaAATMmwAEzJwABMydAATMngAEzKAABMyiAATMowAEzKQABMymAATMpwAEzSIABM0kAATNJgAEzSgABM0rAATNLAAEzS0ABM0uAATNLwAEzTEABM0zAATNNAAEzTUABM03AATNOAAEzYEABM2lAATNzAAEzfAABM3zAATN9QAEzfcABM35AATN+wAEzf0ABM3+AATOAQAEzhoABM43AATOOQAEzjsABM49AATOPwAEzkEABM5DAATORQAEzmIABM5lAATOaAAEzmsABM5uAATOcQAEznQABM53AATOeQAEzvQABM72AATO+AAEzvoABM79AATO/gAEzv8ABM8AAATPAQAEzwMABM8FAATPBgAEzwcABM8JAATPCgAEz4UABM+HAATPiQAEz4sABM+OAATPjwAEz5AABM+RAATPkgAEz5QABM+WAATPlwAEz5gABM+aAATPmwAE0BYABNAYAATQGgAE0BwABNAfAATQIAAE0CEABNAiAATQIwAE0CUABNAnAATQKAAE0CkABNArAATQLAAE0KcABNCpAATQrAAE0K4ABNCxAATQsgAE0LMABNC0AATQtQAE0LcABNC5AATQugAE0LsABNC9AATQvgAE0TkABNE7AATRPQAE0T8ABNFCAATRQwAE0UQABNFFAATRRgAE0UgABNFKAATRSwAE0UwABNFOAATRTwAE0coABNHMAATRzgAE0dAABNHTAATR1AAE0dUABNHWAATR1wAE0dkABNHbAATR3AAE0d0ABNHfAATR4AAE0lsABNJdAATSXwAE0mEABNJkAATSZQAE0mYABNJnAATSaAAE0moABNJsAATSbQAE0m4ABNJwAATScQAE0wQABNMnAATTRwAE02cABNNpAATTawAE020ABNNvAATTcgAE03MABNN0AATTdwAE03gABNN6AATTewAE030ABNOAAATTgQAE04IABNOFAATThgAE04sABNOkAATTrQAE068ABNOxAATTugAE070ABNPAAATTwgAE1AsABNQvAATUVgAE1HoABNR9AATUfwAE1IEABNSDAATUhQAE1IcABNSIAATUiwAE1KQABNTFAATUxwAE1MkABNTLAATUzQAE1M8ABNTRAATU0wAE1NUABNT2AATU+QAE1PwABNT/AATVAgAE1QUABNUIAATVCwAE1Q4ABNUQAATViwAE1Y0ABNWPAATVkQAE1ZQABNWVAATVlgAE1ZcABNWYAATVmgAE1ZwABNWdAATVngAE1aAABNWhAATWHAAE1h4ABNYgAATWIgAE1iUABNYmAATWJwAE1igABNYpAATWKwAE1i0ABNYuAATWLwAE1jEABNYyAATWrQAE1q8ABNayAATWtAAE1rcABNa4AATWuQAE1roABNa7AATWvQAE1r8ABNbAAATWwQAE1sMABNbEAATW3QAE1t4ABNbfAATW4QAE11wABNdeAATXYAAE12IABNdlAATXZgAE12cABNdoAATXaQAE12sABNdtAATXbgAE128ABNdxAATXcgAE1+0ABNfvAATX8QAE1/MABNf2AATX9wAE1/gABNf5AATX+gAE1/wABNf+AATX/wAE2AAABNgCAATYAwAE2H4ABNiAAATYggAE2IQABNiHAATYiAAE2IkABNiKAATYiwAE2I0ABNiPAATYkAAE2JEABNiTAATYlAAE2Q8ABNkRAATZEwAE2RUABNkYAATZGQAE2RoABNkbAATZHAAE2R4ABNkgAATZIQAE2SIABNkkAATZJQAE2aAABNmiAATZpAAE2aYABNmpAATZqgAE2asABNmsAATZrQAE2a8ABNmxAATZsgAE2bMABNm1AATZtgAE2f8ABNojAATaSgAE2m4ABNpxAATacwAE2nUABNp3AATaeQAE2nsABNp8AATafwAE2pgABNq1AATatwAE2rkABNq7AATavQAE2r8ABNrBAATawwAE2uAABNrjAATa5gAE2ukABNrsAATa7wAE2vIABNr1AATa9wAE23IABNt0AATbdwAE23kABNt8AATbfQAE234ABNt/AATbgAAE24IABNuEAATbhQAE24YABNuIAATbiQAE240ABNwIAATcCgAE3AwABNwOAATcEQAE3BIABNwTAATcFAAE3BUABNwXAATcGQAE3BoABNwbAATcHQAE3B4ABNyZAATcmwAE3J0ABNyfAATcogAE3KMABNykAATcpQAE3KYABNyoAATcqgAE3KsABNysAATcrgAE3K8ABN0qAATdLAAE3S8ABN0xAATdNAAE3TUABN02AATdNwAE3TgABN06AATdPAAE3T0ABN0+AATdQAAE3UEABN28AATdvgAE3cAABN3CAATdxQAE3cYABN3HAATdyAAE3ckABN3LAATdzQAE3c4ABN3PAATd0QAE3dIABN5NAATeTwAE3lEABN5TAATeVgAE3lcABN5YAATeWQAE3loABN5cAATeXgAE3l8ABN5gAATeYgAE3mMABN7eAATe4AAE3uIABN7kAATe5wAE3ugABN7pAATe6gAE3usABN7tAATe7wAE3vAABN7xAATe8wAE3vQABN+HAATfqgAE38oABN/qAATf7AAE3+4ABN/wAATf8gAE3/UABN/2AATf9wAE3/oABN/7AATf/QAE3/4ABOABAATgBAAE4AUABOAGAATgCQAE4AoABOAPAATgKAAE4DEABOAzAATgNgAE4D8ABOBCAATgRQAE4EcABOCQAATgtAAE4NsABOD/AAThAgAE4QQABOEGAAThCAAE4QoABOEMAAThDQAE4RAABOEpAAThSgAE4UwABOFOAAThUAAE4VIABOFUAAThVgAE4VgABOFaAAThewAE4X4ABOGBAAThhAAE4YcABOGKAAThjQAE4ZAABOGTAAThlQAE4hAABOISAATiFAAE4hYABOIZAATiGgAE4hsABOIcAATiHQAE4h8ABOIhAATiIgAE4iMABOIlAATiJgAE4qEABOKjAATipQAE4qcABOKqAATiqwAE4qwABOKtAATirgAE4rAABOKyAATiswAE4rQABOK2AATitwAE4zIABOM0AATjNwAE4zkABOM8AATjPQAE4z4ABOM/AATjQAAE40IABONEAATjRQAE40YABONIAATjSQAE42IABONjAATjZAAE42YABOPhAATj4wAE4+UABOPnAATj6gAE4+sABOPsAATj7QAE4+4ABOPwAATj8gAE4/MABOP0AATj9gAE4/cABORyAATkdAAE5HYABOR4AATkewAE5HwABOR9AATkfgAE5H8ABOSBAATkgwAE5IQABOSFAATkhwAE5IgABOUDAATlBQAE5QcABOUJAATlDAAE5Q0ABOUOAATlDwAE5RAABOUSAATlFAAE5RUABOUWAATlGAAE5RkABOWUAATllgAE5ZgABOWaAATlnQAE5Z4ABOWfAATloAAE5aEABOWjAATlpQAE5aYABOWnAATlqQAE5aoABOYlAATmJwAE5ikABOYrAATmLgAE5i8ABOYwAATmMQAE5jIABOY0AATmNgAE5jcABOY4AATmOgAE5jsABOaEAATmqAAE5s8ABObzAATm9gAE5vkABOb7AATm/QAE5v8ABOcBAATnAgAE5wUABOceAATnOwAE5z4ABOdBAATnRAAE50cABOdKAATnTQAE51AABOdtAATncAAE53MABOd2AATneQAE53wABOd/AATnggAE54QABOf/AAToAQAE6AQABOgGAAToCQAE6AoABOgLAAToDAAE6A0ABOgPAAToEgAE6BMABOgUAAToFgAE6BcABOiSAATolAAE6JcABOiZAATonAAE6J0ABOieAATonwAE6KAABOiiAATopQAE6KYABOinAAToqQAE6KoABOklAATpJwAE6SoABOksAATpLwAE6TAABOkxAATpMgAE6TMABOk1AATpOAAE6TkABOk6AATpPAAE6T0ABOm4AATpugAE6b0ABOm/AATpwgAE6cMABOnEAATpxQAE6cYABOnIAATpywAE6cwABOnNAATpzwAE6dAABOpTAATqdwAE6psABOq+AATq5QAE6wUABOssAATrUwAE63MABOuXAATruwAE670ABOvAAATrwgAE68QABOvGAATryQAE68wABOvOAATr0AAE69MABOvVAATr1wAE69oABOvdAATr3gAE6+MABOv8AATsAQAE7AMABOwIAATsCwAE7A0ABOxWAATsegAE7KEABOzFAATsyAAE7MoABOzMAATszgAE7NAABOzSAATs0wAE7NYABOzvAATtFAAE7RYABO0YAATtGgAE7RwABO0eAATtIAAE7SIABO0kAATtJgAE7UsABO1OAATtUQAE7VQABO1XAATtWgAE7V0ABO1gAATtYwAE7WYABO1oAATt4wAE7eUABO3oAATt6gAE7e0ABO3uAATt7wAE7fAABO3xAATt8wAE7fUABO32AATt9wAE7fkABO36AATuCwAE7gwABO4OAATuiQAE7osABO6NAATujwAE7pIABO6TAATulAAE7pUABO6WAATumAAE7poABO6bAATunAAE7p4ABO6fAATvGgAE7xwABO8fAATvIQAE7yQABO8lAATvJgAE7ycABO8oAATvKgAE7ywABO8tAATvLgAE7zAABO8xAATvQgAE70MABO9FAATvwAAE78IABO/EAATvxgAE78kABO/KAATvywAE78wABO/NAATvzwAE79EABO/SAATv0wAE79UABO/WAATwUQAE8FMABPBWAATwWAAE8FsABPBcAATwXQAE8F4ABPBfAATwYQAE8GMABPBkAATwZQAE8GcABPBoAATweQAE8HoABPB8AATw9wAE8PkABPD7AATw/QAE8QAABPEBAATxAgAE8QMABPEEAATxBgAE8QgABPEJAATxCgAE8QwABPENAATxiAAE8YoABPGNAATxjwAE8ZIABPGTAATxlAAE8ZUABPGWAATxmAAE8ZoABPGbAATxnAAE8Z4ABPGfAATxuAAE8bkABPG6AATxvAAE8jcABPI5AATyOwAE8j0ABPJAAATyQQAE8kIABPJDAATyRAAE8kYABPJIAATySQAE8koABPJMAATyTQAE8sgABPLKAATyzQAE8s8ABPLSAATy0wAE8tQABPLVAATy1gAE8tgABPLaAATy2wAE8twABPLeAATy3wAE8vcABPMQAATzLQAE8zAABPMzAATzNgAE8zkABPM8AATzPwAE80IABPNfAATzYgAE82UABPNoAATzawAE824ABPNxAATzdAAE83YABPORAATzvAAE89IABPPrAAT0FAAE9CwABPQ6AAT0zQAE9PAABPUQAAT1MAAE9TIABPU0AAT1NgAE9TgABPU7AAT1PAAE9T0ABPVAAAT1QQAE9UMABPVEAAT1RgAE9UkABPVKAAT1SwAE9U4ABPVPAAT1VAAE9W0ABPV2AAT1eAAE9XoABPWDAAT1hgAE9YkABPWLAAT11AAE9fgABPYfAAT2QwAE9kYABPZIAAT2SgAE9kwABPZOAAT2UAAE9lEABPZUAAT2bQAE9o4ABPaQAAT2kgAE9pQABPaWAAT2mAAE9poABPacAAT2ngAE9r8ABPbCAAT2xQAE9sgABPbLAAT2zgAE9tEABPbUAAT21wAE9tkABPdUAAT3VgAE91gABPdaAAT3XQAE914ABPdfAAT3YAAE92EABPdjAAT3ZQAE92YABPdnAAT3aQAE92oABPflAAT35wAE9+kABPfrAAT37gAE9+8ABPfwAAT38QAE9/IABPf0AAT39gAE9/cABPf4AAT3+gAE9/sABPh2AAT4eAAE+HsABPh9AAT4gAAE+IEABPiCAAT4gwAE+IQABPiGAAT4iAAE+IkABPiKAAT4jAAE+I0ABPimAAT4pwAE+KgABPiqAAT5JQAE+ScABPkpAAT5KwAE+S4ABPkvAAT5MAAE+TEABPkyAAT5NAAE+TYABPk3AAT5OAAE+ToABPk7AAT5tgAE+bgABPm6AAT5vAAE+b8ABPnAAAT5wQAE+cIABPnDAAT5xQAE+ccABPnIAAT5yQAE+csABPnMAAT6RwAE+kkABPpLAAT6TQAE+lAABPpRAAT6UgAE+lMABPpUAAT6VgAE+lgABPpZAAT6WgAE+lwABPpdAAT62AAE+toABPrcAAT63gAE+uEABPriAAT64wAE+uQABPrlAAT65wAE+ukABPrqAAT66wAE+u0ABPruAAT7aQAE+2sABPttAAT7bwAE+3IABPtzAAT7dAAE+3UABPt2AAT7eAAE+3oABPt7AAT7fAAE+34ABPt/AAT7yAAE++wABPwTAAT8NwAE/DoABPw8AAT8PgAE/EAABPxCAAT8RAAE/EUABPxIAAT8YQAE/H4ABPyAAAT8ggAE/IQABPyGAAT8iAAE/IoABPyMAAT8qQAE/KwABPyvAAT8sgAE/LUABPy4AAT8uwAE/L4ABPzAAAT9OwAE/T0ABP0/AAT9QQAE/UQABP1FAAT9RgAE/UcABP1IAAT9SgAE/UwABP1NAAT9TgAE/VAABP1RAAT9zAAE/c4ABP3QAAT90gAE/dUABP3WAAT91wAE/dgABP3ZAAT92wAE/d0ABP3eAAT93wAE/eEABP3iAAT+XQAE/l8ABP5hAAT+YwAE/mYABP5nAAT+aAAE/mkABP5qAAT+bAAE/m4ABP5vAAT+cAAE/nIABP5zAAT+7gAE/vAABP7zAAT+9QAE/vgABP75AAT++gAE/vsABP78AAT+/gAE/wAABP8BAAT/AgAE/wQABP8FAAT/gAAE/4IABP+EAAT/hgAE/4kABP+KAAT/iwAE/4wABP+NAAT/jwAE/5EABP+SAAT/kwAE/5UABP+WAAUAEQAFABMABQAVAAUAFwAFABoABQAbAAUAHAAFAB0ABQAeAAUAIAAFACIABQAjAAUAJAAFACYABQAnAAUAogAFAKQABQCmAAUAqAAFAKsABQCsAAUArQAFAK4ABQCvAAUAsQAFALMABQC0AAUAtQAFALcABQC4AAUBSwAFAW4ABQGOAAUBrgAFAbAABQGyAAUBtAAFAbYABQG5AAUBugAFAbsABQG+AAUBvwAFAcEABQHCAAUBxQAFAcgABQHJAAUBygAFAc0ABQHOAAUB0wAFAewABQH1AAUB9wAFAfoABQIDAAUCBgAFAgkABQILAAUCVAAFAngABQKfAAUCwwAFAsYABQLIAAUCygAFAswABQLOAAUC0AAFAtEABQLUAAUC7QAFAw4ABQMQAAUDEgAFAxQABQMWAAUDGAAFAxoABQMcAAUDHgAFAz8ABQNCAAUDRQAFA0gABQNLAAUDTgAFA1EABQNUAAUDVwAFA1kABQPUAAUD1gAFA9gABQPaAAUD3QAFA94ABQPfAAUD4AAFA+EABQPjAAUD5QAFA+YABQPnAAUD6QAFA+oABQRlAAUEZwAFBGkABQRrAAUEbgAFBG8ABQRwAAUEcQAFBHIABQR0AAUEdgAFBHcABQR4AAUEegAFBHsABQT2AAUE+AAFBPsABQT9AAUFAAAFBQEABQUCAAUFAwAFBQQABQUGAAUFCAAFBQkABQUKAAUFDAAFBQ0ABQUmAAUFJwAFBSgABQUqAAUFpQAFBacABQWpAAUFqwAFBa4ABQWvAAUFsAAFBbEABQWyAAUFtAAFBbYABQW3AAUFuAAFBboABQW7AAUGNgAFBjgABQY6AAUGPAAFBj8ABQZAAAUGQQAFBkIABQZDAAUGRQAFBkcABQZIAAUGSQAFBksABQZMAAUGxwAFBskABQbLAAUGzQAFBtAABQbRAAUG0gAFBtMABQbUAAUG1gAFBtgABQbZAAUG2gAFBtwABQbdAAUHWAAFB1oABQdcAAUHXgAFB2EABQdiAAUHYwAFB2QABQdlAAUHZwAFB2kABQdqAAUHawAFB20ABQduAAUH6QAFB+sABQftAAUH7wAFB/IABQfzAAUH9AAFB/UABQf2AAUH+AAFB/oABQf7AAUH/AAFB/4ABQf/AAUISAAFCGwABQiTAAUItwAFCLoABQi9AAUIvwAFCMEABQjDAAUIxQAFCMYABQjJAAUI4gAFCP8ABQkCAAUJBQAFCQgABQkLAAUJDgAFCREABQkUAAUJMQAFCTQABQk3AAUJOgAFCT0ABQlAAAUJQwAFCUYABQlIAAUJwwAFCcUABQnIAAUJygAFCc0ABQnOAAUJzwAFCdAABQnRAAUJ0wAFCdYABQnXAAUJ2AAFCdoABQnbAAUKVgAFClgABQpbAAUKXQAFCmAABQphAAUKYgAFCmMABQpkAAUKZgAFCmkABQpqAAUKawAFCm0ABQpuAAUK6QAFCusABQruAAUK8AAFCvMABQr0AAUK9QAFCvYABQr3AAUK+QAFCvwABQr9AAUK/gAFCwAABQsBAAULfAAFC34ABQuBAAULgwAFC4YABQuHAAULiAAFC4kABQuKAAULjAAFC48ABQuQAAULkQAFC5MABQuUAAUMDwAFDBEABQwTAAUMFQAFDBgABQwZAAUMGgAFDBsABQwcAAUMHgAFDCEABQwiAAUMIwAFDCUABQwmAAUMoQAFDKMABQylAAUMpwAFDKoABQyrAAUMrAAFDK0ABQyuAAUMsAAFDLMABQy0AAUMtQAFDLcABQy4AAUNMwAFDTUABQ04AAUNOgAFDT0ABQ0+AAUNPwAFDUAABQ1BAAUNQwAFDUYABQ1HAAUNSAAFDUoABQ1LAAUN3gAFDgEABQ4hAAUOQQAFDkMABQ5FAAUORwAFDkkABQ5MAAUOTQAFDk4ABQ5RAAUOUgAFDlQABQ5VAAUOWAAFDlsABQ5cAAUOXQAFDmAABQ5hAAUOZgAFDn8ABQ6IAAUOigAFDo0ABQ6WAAUOmQAFDpwABQ6eAAUO5wAFDwsABQ8yAAUPVgAFD1kABQ9bAAUPXQAFD18ABQ9hAAUPYwAFD2QABQ9nAAUPgAAFD6EABQ+jAAUPpQAFD6cABQ+pAAUPqwAFD60ABQ+vAAUPsQAFD9IABQ/VAAUP2AAFD9sABQ/eAAUP4QAFD+QABQ/nAAUP6gAFD+wABRBnAAUQaQAFEGsABRBtAAUQcAAFEHEABRByAAUQcwAFEHQABRB2AAUQeAAFEHkABRB6AAUQfAAFEH0ABRD4AAUQ+gAFEPwABRD+AAURAQAFEQIABREDAAURBAAFEQUABREHAAURCQAFEQoABRELAAURDQAFEQ4ABRGJAAURiwAFEY4ABRGQAAURkwAFEZQABRGVAAURlgAFEZcABRGZAAURmwAFEZwABRGdAAURnwAFEaAABRG5AAURugAFEbsABRG9AAUSOAAFEjoABRI8AAUSPgAFEkEABRJCAAUSQwAFEkQABRJFAAUSRwAFEkkABRJKAAUSSwAFEk0ABRJOAAUSyQAFEssABRLNAAUSzwAFEtIABRLTAAUS1AAFEtUABRLWAAUS2AAFEtoABRLbAAUS3AAFEt4ABRLfAAUTWgAFE1wABRNeAAUTYAAFE2MABRNkAAUTZQAFE2YABRNnAAUTaQAFE2sABRNsAAUTbQAFE28ABRNwAAUT6wAFE+0ABRPvAAUT8QAFE/QABRP1AAUT9gAFE/cABRP4AAUT+gAFE/wABRP9AAUT/gAFFAAABRQBAAUUfAAFFH4ABRSAAAUUggAFFIUABRSGAAUUhwAFFIgABRSJAAUUiwAFFI0ABRSOAAUUjwAFFJEABRSSAAUU2wAFFP8ABRUmAAUVSgAFFU0ABRVQAAUVUgAFFVQABRVWAAUVWAAFFVkABRVcAAUVdQAFFZIABRWVAAUVmAAFFZsABRWeAAUVoQAFFaQABRWnAAUVxAAFFccABRXKAAUVzQAFFdAABRXTAAUV1gAFFdkABRXbAAUWVgAFFlgABRZbAAUWXQAFFmAABRZhAAUWYgAFFmMABRZkAAUWZgAFFmkABRZqAAUWawAFFm0ABRZuAAUW6QAFFusABRbuAAUW8AAFFvMABRb0AAUW9QAFFvYABRb3AAUW+QAFFvwABRb9AAUW/gAFFwAABRcBAAUXfAAFF34ABReBAAUXgwAFF4YABReHAAUXiAAFF4kABReKAAUXjAAFF48ABReQAAUXkQAFF5MABReUAAUYDwAFGBEABRgUAAUYFgAFGBkABRgaAAUYGwAFGBwABRgdAAUYHwAFGCIABRgjAAUYJAAFGCYABRgnAAUYogAFGKQABRimAAUYqAAFGKsABRisAAUYrQAFGK4ABRivAAUYsQAFGLQABRi1AAUYtgAFGLgABRi5AAUZNAAFGTYABRk4AAUZOgAFGT0ABRk+AAUZPwAFGUAABRlBAAUZQwAFGUYABRlHAAUZSAAFGUoABRlLAAUZxgAFGcgABRnLAAUZzQAFGdAABRnRAAUZ0gAFGdMABRnUAAUZ1gAFGdkABRnaAAUZ2wAFGd0ABRneAAUacQAFGpQABRq0AAUa1AAFGtYABRrYAAUa2gAFGtwABRrfAAUa4AAFGuEABRrkAAUa5QAFGucABRroAAUa6gAFGu0ABRruAAUa7wAFGvIABRrzAAUa+AAFGxEABRsaAAUbHAAFGx4ABRsnAAUbKgAFGy0ABRsvAAUbeAAFG5wABRvDAAUb5wAFG+oABRvsAAUb7gAFG/AABRvyAAUb9AAFG/UABRv4AAUcEQAFHDIABRw0AAUcNgAFHDgABRw6AAUcPAAFHD4ABRxAAAUcQgAFHGMABRxmAAUcaQAFHGwABRxvAAUccgAFHHU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ABVDsAAVRZwAFUWkABVFrAAVRbQAFUXAABVFxAAVRcgAFUXMABVF0AAVRdgAFUXgABVF5AAVRegAFUXwABVF9AAVR+AAFUfoABVH8AAVR/gAFUgEABVICAAVSAwAFUgQABVIFAAVSBwAFUgkABVIKAAVSCwAFUg0ABVIOAAVSiQAFUosABVKNAAVSjwAFUpIABVKTAAVSlAAFUpUABVKWAAVSmAAFUpoABVKbAAVSnAAFUp4ABVKfAAVTGgAFUxwABVMeAAVTIAAFUyMABVMkAAVTJQAFUyYABVMnAAVTKQAFUysABVMsAAVTLQAFUy8ABVMwAAVTeQAFU50ABVPEAAVT6AAFU+sABVPtAAVT7wAFU/EABVPzAAVT9QAFU/YABVP5AAVUEgAFVC8ABVQxAAVUMwAFVDUABVQ3AAVUOQAFVDsABVQ9AAVUWgAFVF0ABVRgAAVUYwAFVGYABVRpAAVUbAAFVG8ABVRxAAVU7AAFVO4ABVTwAAVU8gAFVPUABVT2AAVU9wAFVPgABVT5AAVU+wAFVP0ABVT+AAVU/wAFVQEABVUCAAVVfQAFVX8ABVWBAAVVgwAFVYYABVWHAAVViAAFVYkABVWKAAVVjAAFVY4ABVWPAAVVkAAFVZIABVWTAAVWDgAFVhAABVYSAAVWFAAFVhcABVYYAAVWGQAFVhoABVYbAAVWHQAFVh8ABVYgAAVWIQAFViMABVYkAAVWnwAFVqEABVakAAVWpgAFVqkABVaqAAVWqwAFVqwABVatAAVWrwAFVrEABVayAAVWswAFVrUABVa2AAVXMQAFVzMABVc1AAVXNwAFVzoABVc7AAVXPAAFVz0ABVc+AAVXQAAFV0IABVdDAAVXRAAFV0YABVdHAAVXwgAFV8QABVfGAAVXyAAFV8sABVfMAAVXzQAFV84ABVfPAAVX0QAFV9MABVfUAAVX1QAFV9cABVfYAAVYUwAFWFUABVhXAAVYWQAFWFwABVhdAAVYXgAFWF8ABVhgAAVYYgAFWGQABVhlAAVYZgAFWGgABVhpAAVYegAFWHsABVh9AAVY+AAFWPoABVj8AAVY/gAFWQEABVkCAAVZAwAFWQQABVkFAAVZBwAFWQoABVkLAAVZDAAFWQ4ABVkPAAVZigAFWYwABVmOAAVZkAAFWZMABVmUAAVZlQAFWZYABVmXAAVZmQAFWZwABVmdAAVZngAFWaAABVmhAAVaHAAFWh4ABVohAAVaIwAFWiYABVonAAVaKAAFWikABVoqAAVaLAAFWi8ABVowAAVaMQAFWjMABVo0AAVaxwAFWuoABVsKAAVbKgAFWywABVsuAAVbMAAFWzIABVs1AAVbNgAFWzcABVs6AAVbOwAFWz0ABVs+AAVbQAAFW0MABVtEAAVbRQAFW0gABVtJAAVbTgAFW2cABVtwAAVbcgAFW3QABVt9AAVbgAAFW4MABVuFAAVbzgAFW/IABVwZAAVcPQAFXEAABVxCAAVcRAAFXEYABVxIAAVcSgAFXEsABVxOAAVcZwAFXIgABVyKAAVcjAAFXI4ABVyQAAVckgAFXJQABVyWAAVcmAAFXLkABVy8AAVcvwAFXMIABVzFAAVcyAAFXMsABVzOAAVc0QAFXNMABV1OAAVdUAAFXVIABV1UAAVdVwAFXVgABV1ZAAVdWgAFXVsABV1dAAVdXwAFXWAABV1hAAVdYwAFXWQABV3fAAVd4QAFXeMABV3lAAVd6AAFXekABV3qAAVd6wAFXewABV3uAAVd8AAFXfEABV3yAAVd9AAFXfUABV5wAAVecgAFXnUABV53AAVeegAFXnsABV58AAVefQAFXn4ABV6AAAVeggAFXoMABV6EAAVehgAFXocABV6gAAVeoQAFXqIABV6kAAVfHwAFXyEABV8jAAVfJQAFXygABV8pAAVfKgAFXysABV8sAAVfLgAFXzAABV8xAAVfMgAFXzQABV81AAVfsAAFX7IABV+0AAVftgAFX7kABV+6AAVfuwAFX7wABV+9AAVfvwAFX8EABV/CAAVfwwAFX8UABV/GAAVgQQAFYEMABWBFAAVgRwAFYEoABWBLAAVgTAAFYE0ABWBOAAVgUAAFYFIABWBTAAVgVAAFYFYABWBXAAVg0gAFYNQABWDWAAVg2AAFYNsABWDcAAVg3QAFYN4ABWDfAAVg4QAFYOMABWDkAAVg5QAFYOcABWDoAAVhYwAFYWUABWFnAAVhaQAFYWwABWFtAAVhbgAFYW8ABWFwAAVhcgAFYXQABWF1AAVhdgAFYXgABWF5AAVhwgAFYeYABWINAAViMQAFYjQABWI2AAViOAAFYjoABWI8AAViPgAFYj8ABWJCAAViWwAFYngABWJ6AAVifAAFYn4ABWKAAAViggAFYoQABWKGAAViowAFYqYABWKpAAVirAAFYq8ABWKyAAVitQAFYrgABWK6AAVjNQAFYzcABWM5AAVjOwAFYz4ABWM/AAVjQAAFY0EABWNCAAVjRAAFY0YABWNHAAVjSAAFY0oABWNLAAVjxgAFY8gABWPKAAVjzAAFY88ABWPQAAVj0QAFY9IABWPTAAVj1QAFY9cABWPYAAVj2QAFY9sABWPcAAVkVwAFZFkABWRbAAVkXQAFZGAABWRhAAVkYgAFZGMABWRkAAVkZgAFZGgABWRpAAVkagAFZGwABWRtAAVk6AAFZOoABWTtAAVk7wAFZPIABWTzAAVk9AAFZPUABWT2AAVk+AAFZPoABWT7AAVk/AAFZP4ABWT/AAVlegAFZXwABWV+AAVlgAAFZYMABWWEAAVlhQAFZYYABWWHAAVliQAFZYsABWWMAAVljQAFZY8ABWWQAAVmCwAFZg0ABWYPAAVmEQAFZhQABWYVAAVmFgAFZhcABWYYAAVmGgAFZhwABWYdAAVmHgAFZiAABWYhAAVmnAAFZp4ABWagAAVmogAFZqUABWamAAVmpwAFZqgABWapAAVmqwAFZq0ABWauAAVmrwAFZrEABWayAAVnRQAFZ2gABWeIAAVnqAAFZ6oABWesAAVnrgAFZ7AABWezAAVntAAFZ7UABWe4AAVnuQAFZ7sABWe8AAVnvgAFZ8EABWfCAAVnwwAFZ8YABWfHAAVnzAAFZ+UABWfuAAVn8AAFZ/IABWf7AAVn/gAFaAEABWgDAAVoTAAFaHAABWiXAAVouwAFaL4ABWjAAAVowgAFaMQABWjGAAVoyAAFaMkABWjMAAVo5QAFaQYABWkIAAVpCgAFaQwABWkOAAVpEAAFaRIABWkUAAVpFgAFaTcABWk6AAVpPQAFaUAABWlDAAVpRgAFaUkABWlMAAVpTwAFaVEABWnMAAVpzgAFadAABWnSAAVp1QAFadYABWnXAAVp2AAFadkABWnbAAVp3QAFad4ABWnfAAVp4QAFaeIABWpdAAVqXwAFamEABWpjAAVqZgAFamcABWpoAAVqaQAFamoABWpsAAVqbgAFam8ABWpwAAVqcgAFanMABWruAAVq8AAFavMABWr1AAVq+AAFavkABWr6AAVq+wAFavwABWr+AAVrAAAFawEABWsCAAVrBAAFawUABWseAAVrHwAFayAABWsiAAVrnQAFa58ABWuhAAVrowAFa6YABWunAAVrqAAFa6kABWuqAAVrrAAFa64ABWuvAAVrsAAFa7IABWuzAAVsLgAFbDAABWwyAAVsNAAFbDcABWw4AAVsOQAFbDoABWw7AAVsPQAFbD8ABWxAAAVsQQAFbEMABWxEAAVsvwAFbMEABWzDAAVsxQAFbMgABWzJAAVsygAFbMsABWzMAAVszgAFbNAABWzRAAVs0gAFbNQABWzVAAVtUAAFbVIABW1UAAVtVgAFbVkABW1aAAVtWwAFbVwABW1dAAVtXwAFbWEABW1iAAVtYwAFbWUABW1mAAVt4QAFbeMABW3lAAVt5wAFbeoABW3rAAVt7AAFbe0ABW3uAAVt8AAFbfIABW3zAAVt9AAFbfYABW33AAVuQAAFbmQABW6LAAVurwAFbrIABW60AAVutgAFbrgABW66AAVuvAAFbr0ABW7AAAVu2QAFbvYABW74AAVu+gAFbvwABW7+AAVvAAAFbwIABW8EAAVvIQAFbyQABW8nAAVvKgAFby0ABW8wAAVvMwAFbzYABW84AAVvswAFb7UABW+3AAVvuQAFb7wABW+9AAVvvgAFb78ABW/AAAVvwgAFb8QABW/FAAVvxgAFb8gABW/JAAVwRAAFcEYABXBIAAVwSgAFcE0ABXBOAAVwTwAFcFAABXBRAAVwUwAFcFUABXBWAAVwVwAFcFkABXBaAAVw1QAFcNcABXDZAAVw2wAFcN4ABXDfAAVw4AAFcOEABXDiAAVw5AAFcOYABXDnAAVw6AAFcOoABXDrAAVxZgAFcWgABXFrAAVxbQAFcXAABXFxAAVxcgAFcXMABXF0AAVxdgAFcXgABXF5AAVxegAFcXwABXF9AAVx+AAFcfoABXH8AAVx/gAFcgEABXICAAVyAwAFcgQABXIFAAVyBwAFcgkABXIKAAVyCwAFcg0ABXIOAAVyiQAFcosABXKNAAVyjwAFcpIABXKTAAVylAAFcpUABXKWAAVymAAFcpoABXKbAAVynAAFcp4ABXKfAAVzGgAFcxwABXMeAAVzIAAFcyMABXMkAAVzJQAFcyYABXMnAAVzKQAFcysABXMsAAVzLQAFcy8ABXMwAAVzwwAFc+YABXQGAAV0JgAFdCgABXQqAAV0LAAFdC4ABXQxAAV0MgAFdDMABXQ2AAV0NwAFdDkABXQ6AAV0PQAFdEAABXRBAAV0QgAFdEUABXRGAAV0SwAFdGQABXRtAAV0bwAFdHIABXR7AAV0fgAFdIEABXSDAAV0zAAFdPAABXUXAAV1OwAFdT4ABXVAAAV1QgAFdUQABXVGAAV1SAAFdUkABXVMAAV1ZQAFdYYABXWIAAV1igAFdYwABXWOAAV1kAAFdZIABXWUAAV1lgAFdbcABXW6AAV1vQAFdcAABXXDAAV1xgAFdckABXXMAAV1zwAFddEABXZMAAV2TgAFdlAABXZSAAV2VQAFdlYABXZXAAV2WAAFdlkABXZbAAV2XQAFdl4ABXZfAAV2YQAFdmIABXbdAAV23wAFduEABXbjAAV25gAFducABXboAAV26QAFduoABXbsAAV27gAFdu8ABXbwAAV28gAFdvMABXduAAV3cAAFd3MABXd1AAV3eAAFd3kABXd6AAV3ewAFd3wABXd+AAV3gAAFd4EABXeCAAV3hAAFd4UABXeeAAV3nwAFd6AABXeiAAV4HQAFeB8ABXghAAV4IwAFeCYABXgnAAV4KAAFeCkABXgqAAV4LAAFeC4ABXgvAAV4MAAFeDIABXgzAAV4rgAFeLAABXiyAAV4tAAFeLcABXi4AAV4uQAFeLoABXi7AAV4vQAFeL8ABXjAAAV4wQAFeMMABXjEAAV5PwAFeUEABXlDAAV5RQAFeUgABXlJAAV5SgAFeUsABXlMAAV5TgAFeVAABXlRAAV5UgAFeVQABXlVAAV50AAFedIABXnUAAV51gAFedkABXnaAAV52wAFedwABXndAAV53wAFeeEABXniAAV54wAFeeUABXnmAAV6YQAFemMABXplAAV6ZwAFemoABXprAAV6bAAFem0ABXpuAAV6cAAFenIABXpzAAV6dAAFenYABXp3AAV6wAAFeuQABXsLAAV7LwAFezIABXs1AAV7NwAFezkABXs7AAV7PQAFez4ABXtBAAV7WgAFe3cABXt6AAV7fQAFe4AABXuDAAV7hgAFe4kABXuMAAV7qQAFe6wABXuvAAV7sgAFe7UABXu4AAV7uwAFe74ABXvAAAV8OwAFfD0ABXxAAAV8QgAFfEUABXxGAAV8RwAFfEgABXxJAAV8SwAFfE4ABXxPAAV8UAAFfFIABXxTAAV8zgAFfNAABXzTAAV81QAFfNgABXzZAAV82gAFfNsABXzcAAV83gAFfOEABXziAAV84wAFfOUABXzmAAV9YQAFfWMABX1mAAV9aAAFfWsABX1sAAV9bQAFfW4ABX1vAAV9cQAFfXQABX11AAV9dgAFfXgABX15AAV99AAFffYABX35AAV9+wAFff4ABX3/AAV+AAAFfgEABX4CAAV+BAAFfgcABX4IAAV+CQAFfgsABX4MAAV+jwAFfrMABX7XAAV++gAFfyEABX9BAAV/aAAFf48ABX+vAAV/0wAFf/cABX/5AAV//AAFf/4ABYAAAAWAAgAFgAUABYAIAAWACgAFgAwABYAPAAWAEQAFgBMABYAWAAWAGQAFgBoABYAfAAWAOAAFgD0ABYA/AAWARAAFgEcABYBJAAWAkgAFgLYABYDdAAWBAQAFgQQABYEGAAWBCAAFgQoABYEMAAWBDgAFgQ8ABYESAAWBKwAFgVAABYFSAAWBVAAFgVYABYFYAAWBWgAFgVwABYFeAAWBYAAFgWIABYGHAAWBigAFgY0ABYGQAAWBkwAFgZYABYGZAAWBnAAFgZ8ABYGiAAWBpAAFgh8ABYIhAAWCJAAFgiYABYIpAAWCKgAFgisABYIsAAWCLQAFgi8ABYIxAAWCMgAFgjMABYI1AAWCNgAFgkcABYJIAAWCSgAFgsUABYLHAAWCyQAFgssABYLOAAWCzwAFgtAABYLRAAWC0gAFgtQABYLWAAWC1wAFgtgABYLaAAWC2wAFg1YABYNYAAWDWwAFg10ABYNgAAWDYQAFg2IABYNjAAWDZAAFg2YABYNoAAWDaQAFg2oABYNsAAWDbQAFg34ABYN/AAWDgQAFg/wABYP+AAWEAAAFhAIABYQFAAWEBgAFhAcABYQIAAWECQAFhAsABYQNAAWEDgAFhA8ABYQRAAWEEgAFhI0ABYSPAAWEkgAFhJQABYSXAAWEmAAFhJkABYSaAAWEmwAFhJ0ABYSfAAWEoAAFhKEABYSjAAWEpAAFhLUABYS2AAWEuAAFhTMABYU1AAWFNwAFhTkABYU8AAWFPQAFhT4ABYU/AAWFQAAFhUIABYVEAAWFRQAFhUYABYVIAAWFSQAFhcQABYXGAAWFyQAFhcsABYXOAAWFzwAFhdAABYXRAAWF0gAFhdQABYXWAAWF1wAFhdgABYXaAAWF2wAFhfQABYX1AAWF9gAFhfgABYZzAAWGdQAFhncABYZ5AAWGfAAFhn0ABYZ+AAWGfwAFhoAABYaCAAWGhAAFhoUABYaGAAWGiAAFhokABYcEAAWHBgAFhwkABYcLAAWHDgAFhw8ABYcQAAWHEQAFhxIABYcUAAWHFgAFhxcABYcYAAWHGgAFhxsABYc5AAWHUgAFh2cABYdqAAWHbQAFh3AABYdzAAWHdgAFh4sABYeOAAWHkQAFh5QABYeXAAWHmgAFh5wABYe8AAWHywAFh90ABYfpAAWIAAAFiJMABYi2AAWI1gAFiPYABYj4AAWI+gAFiPwABYj+AAWJAQAFiQIABYkDAAWJBgAFiQcABYkJAAWJCgAFiQwABYkPAAWJEAAFiREABYkUAAWJFQAFiRoABYkzAAWJPAAFiT4ABYlAAAWJSQAFiUwABYlPAAWJUQAFiZoABYm+AAWJ5QAFigkABYoMAAWKDgAFihAABYoSAAWKFAAFihYABYoXAAWKGgAFijMABYpUAAWKVgAFilgABYpaAAWKXAAFil4ABYpgAAWKYgAFimQABYqFAAWKiAAFiosABYqOAAWKkQAFipQABYqXAAWKmgAFip0ABYqfAAWLGgAFixwABYseAAWLIAAFiyMABYskAAWLJQAFiyYABYsnAAWLKQAFiysABYssAAWLLQAFiy8ABYswAAWLqwAFi60ABYuvAAWLsQAFi7QABYu1AAWLtgAFi7cABYu4AAWLugAFi7wABYu9AAWLvgAFi8AABYvBAAWMPAAFjD4ABYxBAAWMQwAFjEYABYxHAAWMSAAFjEkABYxKAAWMTAAFjE4ABYxPAAWMUAAFjFIABYxTAAWMbAAFjG0ABYxuAAWMcAAFjOsABYztAAWM7wAFjPEABYz0AAWM9QAFjPYABYz3AAWM+AAFjPoABYz8AAWM/QAFjP4ABY0AAAWNAQAFjXwABY1+AAWNgAAFjYIABY2FAAWNhgAFjYcABY2IAAWNiQAFjYsABY2NAAWNjgAFjY8ABY2RAAWNkgAFjg0ABY4PAAWOEQAFjhMABY4WAAWOFwAFjhgABY4ZAAWOGgAFjhwABY4eAAWOHwAFjiAABY4iAAWOIwAFjp4ABY6gAAWOogAFjqQABY6nAAWOqAAFjqkABY6qAAWOqwAFjq0ABY6vAAWOsAAFjrEABY6zAAWOtAAFjy8ABY8xAAWPMwAFjzUABY84AAWPOQAFjzoABY87AAWPPAAFjz4ABY9AAAWPQQAFj0IABY9EAAWPRQAFj44ABY+yAAWP2QAFj/0ABZAAAAWQAgAFkAQABZAGAAWQCAAFkAoABZALAAWQDgAFkCcABZBEAAWQRgAFkEgABZBKAAWQTAAFkE4ABZBQAAWQUgAFkG8ABZByAAWQdQAFkHgABZB7AAWQfgAFkIEABZCEAAWQhgAFkQEABZEDAAWRBQAFkQcABZEKAAWRCwAFkQwABZENAAWRDgAFkRAABZESAAWREwAFkRQABZEWAAWRFwAFkZIABZGUAAWRlgAFkZgABZGbAAWRnAAFkZ0ABZGeAAWRnwAFkaEABZGjAAWRpAAFkaUABZGnAAWRqAAFkiMABZIlAAWSJwAFkikABZIsAAWSLQAFki4ABZIvAAWSMAAFkjIABZI0AAWSNQAFkjYABZI4AAWSOQAFkrQABZK2AAWSuQAFkrsABZK+AAWSvwAFksAABZLBAAWSwgAFksQABZLGAAWSxwAFksgABZLKAAWSywAFk0YABZNIAAWTSgAFk0wABZNPAAWTUAAFk1EABZNSAAWTUwAFk1UABZNXAAWTWAAFk1kABZNbAAWTXAAFk9cABZPZAAWT2wAFk90ABZPgAAWT4QAFk+IABZPjAAWT5AAFk+YABZPoAAWT6QAFk+oABZPsAAWT7QAFlGgABZRqAAWUbAAFlG4ABZRxAAWUcgAFlHMABZR0AAWUdQAFlHcABZR5AAWUegAFlHsABZR9AAWUfgAFlREABZU0AAWVVAAFlXQABZV2AAWVeAAFlXoABZV8AAWVfwAFlYAABZWBAAWVhAAFlYUABZWHAAWViAAFlYoABZWNAAWVjgAFlY8ABZWSAAWVkwAFlZgABZWxAAWVugAFlbwABZW+AAWVxwAFlcoABZXNAAWVzwAFlhgABZY8AAWWYwAFlocABZaKAAWWjAAFlo4ABZaQAAWWkgAFlpQABZaVAAWWmAAFlrEABZbSAAWW1AAFltYABZbYAAWW2gAFltwABZbeAAWW4AAFluIABZcDAAWXBgAFlwkABZcMAAWXDwAFlxIABZcVAAWXGAAFlxsABZcdAAWXmAAFl5oABZecAAWXngAFl6EABZeiAAWXowAFl6QABZelAAWXpwAFl6kABZeqAAWXqwAFl60ABZeuAAWYKQAFmCsABZgtAAWYLwAFmDIABZgzAAWYNAAFmDUABZg2AAWYOAAFmDoABZg7AAWYPAAFmD4ABZg/AAWYugAFmLwABZi/AAWYwQAFmMQABZjFAAWYxgAFmMcABZjIAAWYygAFmMwABZjNAAWYzgAFmNAABZjRAAWY6gAFmOsABZjsAAWY7gAFmWkABZlrAAWZbQAFmW8ABZlyAAWZcwAFmXQABZl1AAWZdgAFmXgABZl6AAWZewAFmXwABZl+AAWZfwAFmfoABZn8AAWZ/gAFmgAABZoDAAWaBAAFmgUABZoGAAWaBwAFmgkABZoLAAWaDAAFmg0ABZoPAAWaEAAFmosABZqNAAWajwAFmpEABZqUAAWalQAFmpYABZqXAAWamAAFmpoABZqcAAWanQAFmp4ABZqgAAWaoQAFmxwABZseAAWbIAAFmyIABZslAAWbJgAFmycABZsoAAWbKQAFmysABZstAAWbLgAFmy8ABZsxAAWbMgAFm60ABZuvAAWbsQAFm7MABZu2AAWbtwAFm7gABZu5AAWbugAFm7wABZu+AAWbvwAFm8AABZvCAAWbwwAFnAwABZwwAAWcVwAFnHsABZx+AAWcgAAFnIIABZyEAAWchgAFnIgABZyJAAWcjAAFnKUABZzCAAWcxAAFnMYABZzIAAWcygAFnMwABZzOAAWc0AAFnO0ABZzwAAWc8wAFnPYABZz5AAWc/AAFnP8ABZ0CAAWdBAAFnX8ABZ2BAAWdgwAFnYUABZ2IAAWdiQAFnYoABZ2LAAWdjAAFnY4ABZ2QAAWdkQAFnZIABZ2UAAWdlQAFnhAABZ4SAAWeFAAFnhYABZ4ZAAWeGgAFnhsABZ4cAAWeHQAFnh8ABZ4hAAWeIgAFniMABZ4lAAWeJgAFnqEABZ6jAAWepQAFnqcABZ6qAAWeqwAFnqwABZ6tAAWergAFnrAABZ6yAAWeswAFnrQABZ62AAWetwAFnzIABZ80AAWfNwAFnzkABZ88AAWfPQAFnz4ABZ8/AAWfQAAFn0IABZ9EAAWfRQAFn0YABZ9IAAWfSQAFn8QABZ/GAAWfyAAFn8oABZ/NAAWfzgAFn88ABZ/QAAWf0QAFn9MABZ/VAAWf1gAFn9cABZ/ZAAWf2gAFoFUABaBXAAWgWQAFoFsABaBeAAWgXwAFoGAABaBhAAWgYgAFoGQABaBmAAWgZwAFoGgABaBqAAWgawAFoOYABaDoAAWg6gAFoOwABaDvAAWg8AAFoPEABaDyAAWg8wAFoPUABaD3AAWg+AAFoPkABaD7AAWg/AAFoY8ABaGyAAWh0gAFofIABaH0AAWh9gAFofgABaH6AAWh/QAFof4ABaH/AAWiAgAFogMABaIFAAWiBgAFogkABaIMAAWiDQAFog4ABaIRAAWiEgAFohcABaIwAAWiOQAFojsABaI+AAWiRwAFokoABaJNAAWiTwAFopgABaK8AAWi4wAFowcABaMKAAWjDAAFow4ABaMQAAWjEgAFoxQABaMVAAWjGAAFozEABaNSAAWjVAAFo1YABaNYAAWjWgAFo1wABaNeAAWjYAAFo2IABaODAAWjhgAFo4kABaOMAAWjjwAFo5IABaOVAAWjmAAFo5sABaOdAAWkGAAFpBoABaQcAAWkHgAFpCEABaQiAAWkIwAFpCQABaQlAAWkJwAFpCkABaQqAAWkKwAFpC0ABaQuAAWkqQAFpKsABaStAAWkrwAFpLIABaSzAAWktAAFpLUABaS2AAWkuAAFpLoABaS7AAWkvAAFpL4ABaS/AAWlOgAFpTwABaU/AAWlQQAFpUQABaVFAAWlRgAFpUcABaVIAAWlSgAFpUwABaVNAAWlTgAFpVAABaVRAAWlagAFpWsABaVsAAWlbgAFpekABaXrAAWl7QAFpe8ABaXyAAWl8wAFpfQABaX1AAWl9gAFpfgABaX6AAWl+wAFpfwABaX+AAWl/wAFpnoABaZ8AAWmfgAFpoAABaaDAAWmhAAFpoUABaaGAAWmhwAFpokABaaLAAWmjAAFpo0ABaaPAAWmkAAFpwsABacNAAWnDwAFpxEABacUAAWnFQAFpxYABacXAAWnGAAFpxoABaccAAWnHQAFpx4ABacgAAWnIQAFp5wABaeeAAWnoAAFp6IABaelAAWnpgAFp6cABaeoAAWnqQAFp6sABaetAAWnrgAFp68ABaexAAWnsgAFqC0ABagvAAWoMQAFqDMABag2AAWoNwAFqDgABag5AAWoOgAFqDwABag+AAWoPwAFqEAABahCAAWoQwAFqIwABaiwAAWo1wAFqPsABaj+AAWpAQAFqQMABakFAAWpBwAFqQkABakKAAWpDQAFqSYABalDAAWpRgAFqUkABalMAAWpTwAFqVIABalVAAWpWAAFqXUABal4AAWpewAFqX4ABamBAAWphAAFqYcABamKAAWpjAAFqgcABaoJAAWqDAAFqg4ABaoRAAWqEgAFqhMABaoUAAWqFQAFqhcABaoaAAWqGwAFqhwABaoeAAWqHwAFqpoABaqcAAWqnwAFqqEABaqkAAWqpQAFqqYABaqnAAWqqAAFqqoABaqtAAWqrgAFqq8ABaqxAAWqsgAFqy0ABasvAAWrMgAFqzQABas3AAWrOAAFqzkABas6AAWrOwAFqz0ABatAAAWrQQAFq0IABatEAAWrRQAFq8AABavCAAWrxQAFq8cABavKAAWrywAFq8wABavNAAWrzgAFq9AABavTAAWr1AAFq9UABavXAAWr2AAFrFMABaxVAAWsVwAFrFkABaxcAAWsXQAFrF4ABaxfAAWsYAAFrGIABaxlAAWsZgAFrGcABaxpAAWsagAFrOUABaznAAWs6QAFrOsABazuAAWs7wAFrPAABazxAAWs8gAFrPQABaz3AAWs+AAFrPkABaz7AAWs/AAFrXcABa15AAWtfAAFrX4ABa2BAAWtggAFrYMABa2EAAWthQAFrYcABa2KAAWtiwAFrYwABa2OAAWtjwAFriIABa5FAAWuZQAFroUABa6HAAWuiQAFrosABa6NAAWukAAFrpEABa6SAAWulQAFrpYABa6YAAWumQAFrpsABa6eAAWunwAFrqAABa6jAAWupAAFrqkABa7CAAWuywAFrs0ABa7PAAWu2AAFrtsABa7eAAWu4AAFrykABa9NAAWvdAAFr5gABa+bAAWvnQAFr58ABa+hAAWvowAFr6UABa+mAAWvqQAFr8IABa/jAAWv5QAFr+cABa/pAAWv6wAFr+0ABa/vAAWv8QAFr/MABbAUAAWwFwAFsBoABbAdAAWwIAAFsCMABbAmAAWwKQAFsCwABbAuAAWwqQAFsKsABbCtAAWwrwAFsLIABbCzAAWwtAAFsLUABbC2AAWwuAAFsLoABbC7AAWwvAAFsL4ABbC/AAWxOgAFsTwABbE+AAWxQAAFsUMABbFEAAWxRQAFsUYABbFHAAWxSQAFsUsABbFMAAWxTQAFsU8ABbFQAAWxywAFsc0ABbHQAAWx0gAFsdUABbHWAAWx1wAFsdgABbHZAAWx2wAFsd0ABbHeAAWx3wAFseEABbHiAAWx+wAFsfwABbH9AAWx/wAFsnoABbJ8AAWyfgAFsoAABbKDAAWyhAAFsoUABbKGAAWyhwAFsokABbKLAAWyjAAFso0ABbKPAAWykAAFswsABbMNAAWzDwAFsxEABbMUAAWzFQAFsxYABbMXAAWzGAAFsxoABbMcAAWzHQAFsx4ABbMgAAWzIQAFs5wABbOeAAWzoAAFs6IABbOlAAWzpgAFs6cABbOoAAWzqQAFs6sABbOtAAWzrgAFs68ABbOxAAWzsgAFtC0ABbQvAAW0MQAFtDMABbQ2AAW0NwAFtDgABbQ5AAW0OgAFtDwABbQ+AAW0PwAFtEAABbRCAAW0QwAFtL4ABbTAAAW0wgAFtMQABbTHAAW0yAAFtMkABbTKAAW0ywAFtM0ABbTPAAW00AAFtNEABbTTAAW01AAFtR0ABbVBAAW1aAAFtYwABbWPAAW1kQAFtZMABbWVAAW1lwAFtZkABbWaAAW1nQAFtbYABbXTAAW11QAFtdcABbXZAAW12wAFtd0ABbXfAAW14QAFtf4ABbYBAAW2BAAFtgcABbYKAAW2DQAFthAABbYTAAW2FQAFtpAABbaSAAW2lAAFtpYABbaZAAW2mgAFtpsABbacAAW2nQAFtp8ABbahAAW2ogAFtqMABbalAAW2pgAFtyEABbcjAAW3JQAFtycABbcqAAW3KwAFtywABbctAAW3LgAFtzAABbcyAAW3MwAFtzQABbc2AAW3NwAFt7IABbe0AAW3tgAFt7gABbe7AAW3vAAFt70ABbe+AAW3vwAFt8EABbfDAAW3xAAFt8UABbfHAAW3yAAFuEMABbhFAAW4SAAFuEoABbhNAAW4TgAFuE8ABbhQAAW4UQAFuFMABbhVAAW4VgAFuFcABbhZAAW4WgAFuNUABbjXAAW42QAFuNsABbjeAAW43wAFuOAABbjhAAW44gAFuOQABbjmAAW45wAFuOgABbjqAAW46wAFuWYABbloAAW5agAFuWwABblvAAW5cAAFuXEABblyAAW5cwAFuXUABbl3AAW5eAAFuXkABbl7AAW5fAAFufcABbn5AAW5+wAFuf0ABboAAAW6AQAFugIABboDAAW6BAAFugYABboIAAW6CQAFugoABboMAAW6DQAFuqAABbrDAAW64wAFuwMABbsFAAW7BwAFuwkABbsLAAW7DgAFuw8ABbsQAAW7EwAFuxQABbsWAAW7FwAFuxkABbscAAW7HQAFux4ABbshAAW7IgAFuycABbtAAAW7SQAFu0sABbtNAAW7VgAFu1kABbtcAAW7XgAFu6cABbvLAAW78gAFvBYABbwZAAW8GwAFvB0ABbwfAAW8IQAFvCMABbwkAAW8JwAFvEAABbxhAAW8YwAFvGUABbxnAAW8aQAFvGsABbxtAAW8bwAFvHEABbySAAW8lQAFvJgABbybAAW8ngAFvKEABbykAAW8pwAFvKoABbysAAW9JwAFvSkABb0rAAW9LQAFvTAABb0xAAW9MgAFvTMABb00AAW9NgAFvTgABb05AAW9OgAFvTwABb09AAW9uAAFvboABb28AAW9vgAFvcEABb3CAAW9wwAFvcQABb3FAAW9xwAFvckABb3KAAW9ywAFvc0ABb3OAAW+SQAFvksABb5OAAW+UAAFvlMABb5UAAW+VQAFvlYABb5XAAW+WQAFvlsABb5cAAW+XQAFvl8ABb5gAAW+eQAFvnoABb57AAW+fQAFvvgABb76AAW+/AAFvv4ABb8BAAW/AgAFvwMABb8EAAW/BQAFvwcABb8JAAW/CgAFvwsABb8NAAW/DgAFv4kABb+LAAW/jQAFv48ABb+SAAW/kwAFv5QABb+VAAW/lgAFv5gABb+aAAW/mwAFv5wABb+eAAW/nwAFwBoABcAcAAXAHgAFwCAABcAjAAXAJAAFwCUABcAmAAXAJwAFwCkABcArAAXALAAFwC0ABcAvAAXAMAAFwKsABcCtAAXArwAFwLEABcC0AAXAtQAFwLYABcC3AAXAuAAFwLoABcC8AAXAvQAFwL4ABcDAAAXAwQAFwTwABcE+AAXBQAAFwUIABcFFAAXBRgAFwUcABcFIAAXBSQAFwUsABcFNAAXBTgAFwU8ABcFRAAXBUgAFwZsABcG/AAXB5gAFwgoABcINAAXCDwAFwhEABcITAAXCFQAFwhcABcIYAAXCGwAFwjQABcJRAAXCUwAFwlUABcJXAAXCWQAFwlsABcJdAAXCXwAFwnwABcJ/AAXCggAFwoUABcKIAAXCiwAFwo4ABcKRAAXCkwAFww4ABcMQAAXDEgAFwxQABcMXAAXDGAAFwxkABcMaAAXDGwAFwx0ABcMfAAXDIAAFwyEABcMjAAXDJAAFw58ABcOhAAXDowAFw6UABcOoAAXDqQAFw6oABcOrAAXDrAAFw64ABcOwAAXDsQAFw7IABcO0AAXDtQAFxDAABcQyAAXENAAFxDYABcQ5AAXEOgAFxDsABcQ8AAXEPQAFxD8ABcRBAAXEQgAFxEMABcRFAAXERgAFxMEABcTDAAXExgAFxMgABcTLAAXEzAAFxM0ABcTOAAXEzwAFxNEABcTTAAXE1AAFxNUABcTXAAXE2AAFxVMABcVVAAXFVwAFxVkABcVcAAXFXQAFxV4ABcVfAAXFYAAFxWIABcVkAAXFZQAFxWYABcVoAAXFaQAFxeQABcXmAAXF6AAFxeoABcXtAAXF7gAFxe8ABcXwAAXF8QAFxfMABcX1AAXF9gAFxfcABcX5AAXF+gAFxnUABcZ3AAXGeQAFxnsABcZ+AAXGfwAFxoAABcaBAAXGggAFxoQABcaGAAXGhwAFxogABcaKAAXGiwAFxpwABcadAAXGnwAFxxoABcccAAXHHgAFxyAABccjAAXHJAAFxyUABccmAAXHJwAFxykABccsAAXHLQAFxy4ABccwAAXHMQAFx6wABceuAAXHsAAFx7IABce1AAXHtgAFx7cABce4AAXHuQAFx7sABce+AAXHvwAFx8AABcfCAAXHwwAFyD4ABchAAAXIQwAFyEUABchIAAXISQAFyEoABchLAAXITAAFyE4ABchRAAXIUgAFyFMABchVAAXIVgAFyOkABckMAAXJLAAFyUwABclOAAXJUAAFyVIABclUAAXJVwAFyVgABclZAAXJXAAFyV0ABclfAAXJYAAFyWIABcllAAXJZgAFyWcABclqAAXJawAFyXAABcmJAAXJkgAFyZQABcmWAAXJnwAFyaIABcmlAAXJpwAFyfAABcoUAAXKOwAFyl8ABcpiAAXKZAAFymYABcpoAAXKagAFymwABcptAAXKcAAFyokABcqqAAXKrAAFyq4ABcqwAAXKsgAFyrQABcq2AAXKuAAFyroABcrbAAXK3gAFyuEABcrkAAXK5wAFyuoABcrtAAXK8AAFyvMABcr1AAXLcAAFy3IABct0AAXLdgAFy3kABct6AAXLewAFy3wABct9AAXLfwAFy4EABcuCAAXLgwAFy4UABcuGAAXMAQAFzAMABcwFAAXMBwAFzAoABcwLAAXMDAAFzA0ABcwOAAXMEAAFzBIABcwTAAXMFAAFzBYABcwXAAXMkgAFzJQABcyXAAXMmQAFzJwABcydAAXMngAFzJ8ABcygAAXMogAFzKQABcylAAXMpgAFzKgABcypAAXMwgAFzMMABczEAAXMxgAFzUEABc1DAAXNRQAFzUcABc1KAAXNSwAFzUwABc1NAAXNTgAFzVAABc1SAAXNUwAFzVQABc1WAAXNVwAFzdIABc3UAAXN1gAFzdgABc3bAAXN3AAFzd0ABc3eAAXN3wAFzeEABc3jAAXN5AAFzeUABc3nAAXN6AAFzmMABc5lAAXOZwAFzmkABc5sAAXObQAFzm4ABc5vAAXOcAAFznIABc50AAXOdQAFznYABc54AAXOeQAFzvQABc72AAXO+AAFzvoABc79AAXO/gAFzv8ABc8AAAXPAQAFzwMABc8FAAXPBgAFzwcABc8JAAXPCgAFz4UABc+HAAXPiQAFz4sABc+OAAXPjwAFz5AABc+RAAXPkgAFz5QABc+WAAXPlwAFz5gABc+aAAXPmwAFz+QABdAIAAXQLwAF0FMABdBWAAXQWAAF0FoABdBcAAXQXgAF0GAABdBhAAXQZAAF0H0ABdCaAAXQnAAF0J4ABdCgAAXQogAF0KQABdCmAAXQqAAF0MUABdDIAAXQywAF0M4ABdDRAAXQ1AAF0NcABdDaAAXQ3AAF0VcABdFZAAXRWwAF0V0ABdFgAAXRYQAF0WIABdFjAAXRZAAF0WYABdFoAAXRaQAF0WoABdFsAAXRbQAF0egABdHqAAXR7AAF0e4ABdHxAAXR8gAF0fMABdH0AAXR9QAF0fcABdH5AAXR+gAF0fsABdH9AAXR/gAF0nkABdJ7AAXSfQAF0n8ABdKCAAXSgwAF0oQABdKFAAXShgAF0ogABdKKAAXSiwAF0owABdKOAAXSjwAF0woABdMMAAXTDwAF0xEABdMUAAXTFQAF0xYABdMXAAXTGAAF0xoABdMcAAXTHQAF0x4ABdMgAAXTIQAF05wABdOeAAXToAAF06IABdOlAAXTpgAF06cABdOoAAXTqQAF06sABdOtAAXTrgAF068ABdOxAAXTsgAF1C0ABdQvAAXUMQAF1DMABdQ2AAXUNwAF1DgABdQ5AAXUOgAF1DwABdQ+AAXUPwAF1EAABdRCAAXUQwAF1L4ABdTAAAXUwgAF1MQABdTHAAXUyAAF1MkABdTKAAXUywAF1M0ABdTPAAXU0AAF1NEABdTTAAXU1AAF1WcABdWKAAXVqgAF1coABdXMAAXVzgAF1dAABdXSAAXV1QAF1dYABdXXAAXV2gAF1dsABdXdAAXV3gAF1eAABdXjAAXV5AAF1eUABdXoAAXV6QAF1e4ABdYHAAXWEAAF1hIABdYUAAXWHQAF1iAABdYjAAXWJQAF1m4ABdaSAAXWuQAF1t0ABdbgAAXW4gAF1uQABdbmAAXW6AAF1uoABdbrAAXW7gAF1wcABdcoAAXXKgAF1ywABdcuAAXXMAAF1zIABdc0AAXXNgAF1zgABddZAAXXXAAF118ABddiAAXXZQAF12gABddrAAXXbgAF13EABddzAAXX7gAF1/AABdfyAAXX9AAF1/cABdf4AAXX+QAF1/oABdf7AAXX/QAF1/8ABdgAAAXYAQAF2AMABdgEAAXYfwAF2IEABdiDAAXYhQAF2IgABdiJAAXYigAF2IsABdiMAAXYjgAF2JAABdiRAAXYkgAF2JQABdiVAAXZEAAF2RIABdkVAAXZFwAF2RoABdkbAAXZHAAF2R0ABdkeAAXZIAAF2SIABdkjAAXZJAAF2SYABdknAAXZQAAF2UEABdlCAAXZRAAF2b8ABdnBAAXZwwAF2cUABdnIAAXZyQAF2coABdnLAAXZzAAF2c4ABdnQAAXZ0QAF2dIABdnUAAXZ1QAF2lAABdpSAAXaVAAF2lYABdpZAAXaWgAF2lsABdpcAAXaXQAF2l8ABdphAAXaYgAF2mMABdplAAXaZgAF2uEABdrjAAXa5QAF2ucABdrqAAXa6wAF2uwABdrtAAXa7gAF2vAABdryAAXa8wAF2vQABdr2AAXa9wAF23IABdt0AAXbdgAF23gABdt7AAXbfAAF230ABdt+AAXbfwAF24EABduDAAXbhAAF24UABduHAAXbiAAF3AMABdwFAAXcBwAF3AkABdwMAAXcDQAF3A4ABdwPAAXcEAAF3BIABdwUAAXcFQAF3BYABdwYAAXcGQAF3GIABdyGAAXcrQAF3NEABdzUAAXc1gAF3NgABdzaAAXc3AAF3N4ABdzfAAXc4gAF3PsABd0YAAXdGgAF3RwABd0eAAXdIAAF3SIABd0kAAXdJgAF3UMABd1GAAXdSQAF3UwABd1PAAXdUgAF3VUABd1YAAXdWgAF3dUABd3XAAXd2QAF3dsABd3eAAXd3wAF3eAABd3hAAXd4gAF3eQABd3mAAXd5wAF3egABd3qAAXd6wAF3mYABd5oAAXeagAF3mwABd5vAAXecAAF3nEABd5yAAXecwAF3nUABd53AAXeeAAF3nkABd57AAXefAAF3vcABd75AAXe+wAF3v0ABd8AAAXfAQAF3wIABd8DAAXfBAAF3wYABd8IAAXfCQAF3woABd8MAAXfDQAF34gABd+KAAXfjAAF344ABd+RAAXfkgAF35MABd+UAAXflQAF35cABd+ZAAXfmgAF35sABd+dAAXfngAF4BkABeAbAAXgHQAF4B8ABeAiAAXgIwAF4CQABeAlAAXgJgAF4CgABeAqAAXgKwAF4CwABeAuAAXgLwAF4KoABeCsAAXgrgAF4LAABeCzAAXgtAAF4LUABeC2AAXgtwAF4LkABeC7AAXgvAAF4L0ABeC/AAXgwAAF4TsABeE9AAXhPwAF4UEABeFEAAXhRQAF4UYABeFHAAXhSAAF4UoABeFMAAXhTQAF4U4ABeFQAAXhUQAF4eQABeIHAAXiJwAF4kcABeJJAAXiSwAF4k0ABeJPAAXiUgAF4lMABeJUAAXiVwAF4lgABeJaAAXiWwAF4l0ABeJgAAXiYQAF4mIABeJlAAXiZgAF4msABeKEAAXijQAF4o8ABeKRAAXimgAF4p0ABeKgAAXiogAF4usABeMPAAXjNgAF41oABeNdAAXjXwAF42EABeNjAAXjZQAF42cABeNoAAXjawAF44QABeOlAAXjpwAF46kABeOrAAXjrQAF468ABeOxAAXjswAF47UABePWAAXj2QAF49wABePfAAXj4gAF4+UABePoAAXj6wAF4+4ABePwAAXkawAF5G0ABeRvAAXkcQAF5HQABeR1AAXkdgAF5HcABeR4AAXkegAF5HwABeR9AAXkfgAF5IAABeSBAAXk/AAF5P4ABeUAAAXlAgAF5QUABeUGAAXlBwAF5QgABeUJAAXlCwAF5Q0ABeUOAAXlDwAF5REABeUSAAXljQAF5Y8ABeWSAAXllAAF5ZcABeWYAAXlmQAF5ZoABeWbAAXlnQAF5Z8ABeWgAAXloQAF5aMABeWkAAXlvQAF5b4ABeW/AAXlwQAF5jwABeY+AAXmQAAF5kIABeZFAAXmRgAF5kcABeZIAAXmSQAF5ksABeZNAAXmTgAF5k8ABeZRAAXmUgAF5s0ABebPAAXm0QAF5tMABebWAAXm1wAF5tgABebZAAXm2gAF5twABebeAAXm3wAF5uAABebiAAXm4wAF514ABedgAAXnYgAF52QABednAAXnaAAF52kABedqAAXnawAF520ABedvAAXncAAF53EABedzAAXndAAF5+8ABefxAAXn8wAF5/UABef4AAXn+QAF5/oABef7AAXn/AAF5/4ABegAAAXoAQAF6AIABegEAAXoBQAF6IAABeiCAAXohAAF6IYABeiJAAXoigAF6IsABeiMAAXojQAF6I8ABeiRAAXokgAF6JMABeiVAAXolgAF6N8ABekDAAXpKgAF6U4ABelRAAXpUwAF6VUABelXAAXpWQAF6VsABelcAAXpXwAF6XgABemVAAXplwAF6ZkABembAAXpnQAF6Z8ABemhAAXpowAF6cAABenDAAXpxgAF6ckABenMAAXpzwAF6dIABenVAAXp1wAF6lIABepUAAXqVgAF6lgABepbAAXqXAAF6l0ABepeAAXqXwAF6mEABepjAAXqZAAF6mUABepnAAXqaAAF6uMABerlAAXq5wAF6ukABersAAXq7QAF6u4ABervAAXq8AAF6vIABer0AAXq9QAF6vYABer4AAXq+QAF63QABet2AAXreAAF63oABet9AAXrfgAF638ABeuAAAXrgQAF64MABeuFAAXrhgAF64cABeuJAAXrigAF7AUABewHAAXsCgAF7AwABewPAAXsEAAF7BEABewSAAXsEwAF7BUABewXAAXsGAAF7BkABewbAAXsHAAF7JcABeyZAAXsmwAF7J0ABeygAAXsoQAF7KIABeyjAAXspAAF7KYABeyoAAXsqQAF7KoABeysAAXsrQAF7SgABe0qAAXtLAAF7S4ABe0xAAXtMgAF7TMABe00AAXtNQAF7TcABe05AAXtOgAF7TsABe09AAXtPgAF7bkABe27AAXtvQAF7b8ABe3CAAXtwwAF7cQABe3FAAXtxgAF7cgABe3KAAXtywAF7cwABe3OAAXtzwAF7mIABe6FAAXupQAF7sUABe7HAAXuyQAF7ssABe7NAAXu0AAF7tEABe7SAAXu1QAF7tYABe7YAAXu2QAF7tsABe7eAAXu3wAF7uAABe7jAAXu5AAF7ukABe8CAAXvCwAF7w0ABe8PAAXvGAAF7xsABe8eAAXvIAAF72kABe+NAAXvtAAF79gABe/bAAXv3QAF798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ABgD8AAYA/QAGAP4ABgEAAAYBAQAGAXwABgF+AAYBgAAGAYIABgGFAAYBhgAGAYcABgGIAAYBiQAGAYsABgGNAAYBjgAGAY8ABgGRAAYBkgAGAdsABgH/AAYCJgAGAkoABgJNAAYCTwAGAlEABgJTAAYCVQAGAlcABgJYAAYCWwAGAnQABgKRAAYCkwAGApUABgKXAAYCmQAGApsABgKdAAYCnwAGArwABgK/AAYCwgAGAsUABgLIAAYCywAGAs4ABgLRAAYC0wAGA04ABgNQAAYDUgAGA1QABgNXAAYDWAAGA1kABgNaAAYDWwAGA10ABgNfAAYDYAAGA2EABgNjAAYDZAAGA98ABgPhAAYD4wAGA+UABgPoAAYD6QAGA+oABgPrAAYD7AAGA+4ABgPwAAYD8QAGA/IABgP0AAYD9QAGBHAABgRyAAYEdAAGBHYABgR5AAYEegAGBHsABgR8AAYEfQAGBH8ABgSBAAYEggAGBIMABgSFAAYEhgAGBQEABgUDAAYFBgAGBQgABgULAAYFDAAGBQ0ABgUOAAYFDwAGBREABgUTAAYFFAAGBRUABgUXAAYFGAAGBZMABgWVAAYFlwAGBZkABgWcAAYFnQAGBZ4ABgWfAAYFoAAGBaIABgWkAAYFpQAGBaYABgWoAAYFqQAGBiQABgYmAAYGKAAGBioABgYtAAYGLgAGBi8ABgYwAAYGMQAGBjMABgY1AAYGNgAGBjcABgY5AAYGOgAGBrUABga3AAYGuQAGBrsABga+AAYGvwAGBsAABgbBAAYGwgAGBsQABgbGAAYGxwAGBsgABgbKAAYGywAGB14ABgeBAAYHoQAGB8EABgfDAAYHxQAGB8cABgfJAAYHzAAGB80ABgfOAAYH0QAGB9IABgfUAAYH1QAGB9cABgfaAAYH2wAGB9wABgffAAYH4AAGB+UABgf+AAYIBwAGCAkABggLAAYIFAAGCBcABggaAAYIHAAGCGUABgiJAAYIsAAGCNQABgjXAAYI2QAGCNsABgjdAAYI3wAGCOEABgjiAAYI5QAGCP4ABgkfAAYJIQAGCSMABgklAAYJJwAGCSkABgkrAAYJLQAGCS8ABglQAAYJUwAGCVYABglZAAYJXAAGCV8ABgliAAYJZQAGCWgABglqAAYJ5QAGCecABgnpAAYJ6wAGCe4ABgnvAAYJ8AAGCfE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ABiQWAAYkFwAGJBkABiQaAAYkMwAGJDQABiQ1AAYkNwAGJLIABiS0AAYktgAGJLgABiS7AAYkvAAGJL0ABiS+AAYkvwAGJMEABiTDAAYkxAAGJMUABiTHAAYkyAAGJUMABiVFAAYlRwAGJUkABiVMAAYlTQAGJU4ABiVPAAYlUAAGJVIABiVUAAYlVQAGJVYABiVYAAYlWQAGJdQABiXWAAYl2AAGJdoABiXdAAYl3gAGJd8ABiXgAAYl4QAGJeMABiXlAAYl5gAGJecABiXpAAYl6gAGJmUABiZnAAYmaQAGJmsABiZuAAYmbwAGJnAABiZxAAYmcgAGJnQABiZ2AAYmdwAGJngABiZ6AAYmewAGJvYABib4AAYm+gAGJvwABib/AAYnAAAGJwEABicCAAYnAwAGJwUABicHAAYnCAAGJwkABicLAAYnDAAGJ1UABid5AAYnoAAGJ8QABifHAAYnyQAGJ8sABifNAAYnzwAGJ9EABifSAAYn1QAGJ+4ABigLAAYoDQAGKA8ABigRAAYoEwAGKBUABigXAAYoGQAGKDYABig5AAYoPAAGKD8ABihCAAYoRQAGKEgABihLAAYoTQAGKMgABijKAAYozAAGKM4ABijRAAYo0gAGKNMABijUAAYo1QAGKNcABijZAAYo2gAGKNsABijdAAYo3gAGKVkABilbAAYpXQAGKV8ABiliAAYpYwAGKWQABillAAYpZgAGKWgABilqAAYpawAGKWwABiluAAYpbwAGKeoABinsAAYp7gAGKfAABinzAAYp9AAGKfUABin2AAYp9wAGKfkABin7AAYp/AAGKf0ABin/AAYqAAAGKnsABip9AAYqgAAGKoIABiqFAAYqhgAGKocABiqIAAYqiQAGKosABiqNAAYqjgAGKo8ABiqRAAYqkgAGKw0ABisPAAYrEQAGKxMABisWAAYrFwAGKxgABisZAAYrGgAGKxwABiseAAYrHwAGKyAABisiAAYrIwAGK54ABiugAAYrogAGK6QABiunAAYrqAAGK6kABiuqAAYrqwAGK60ABiuvAAYrsAAGK7EABiuzAAYrtAAGLC8ABiwxAAYsMwAGLDUABiw4AAYsOQAGLDoABiw7AAYsPAAGLD4ABixAAAYsQQAGLEIABixEAAYsRQAGLNgABiz7AAYtGwAGLTsABi09AAYtPwAGLUEABi1DAAYtRgAGLUcABi1IAAYtSwAGLUwABi1OAAYtTwAGLVEABi1UAAYtVQAGLVYABi1ZAAYtWgAGLV8ABi14AAYtgQAGLYMABi2FAAYtjgAGLZEABi2UAAYtlgAGLd8ABi4DAAYuKgAGLk4ABi5RAAYuUwAGLlUABi5XAAYuWQAGLlsABi5cAAYuXwAGLngABi6ZAAYumwAGLp0ABi6fAAYuoQAGLqMABi6lAAYupwAGLqkABi7KAAYuzQAGLtAABi7TAAYu1gAGLtkABi7cAAYu3wAGLuIABi7kAAYvXwAGL2EABi9jAAYvZQAGL2gABi9pAAYvagAGL2sABi9sAAYvbgAGL3AABi9xAAYvcgAGL3QABi91AAYv8AAGL/IABi/0AAYv9gAGL/kABi/6AAYv+wAGL/wABi/9AAYv/wAGMAEABjACAAYwAwAGMAUABjAGAAYwgQAGMIMABjCGAAYwiAAGMIsABjCMAAYwjQAGMI4ABjCPAAYwkQAGMJMABjCUAAYwlQAGMJcABjCYAAYwsQAGMLIABjCzAAYwtQAGMTAABjEyAAYxNAAGMTYABjE5AAYxOgAGMTsABjE8AAYxPQAGMT8ABjFBAAYxQgAGMUMABjFFAAYxRgAGMcEABjHDAAYxxQAGMccABjHKAAYxywAGMcwABjHNAAYxzgAGMdAABjHSAAYx0wAGMdQABjHWAAYx1wAGMlIABjJUAAYyVgAGMlgABjJbAAYyXAAGMl0ABjJeAAYyXwAGMmEABjJjAAYyZAAGMmUABjJnAAYyaAAGMuMABjLlAAYy5wAGMukABjLsAAYy7QAGMu4ABjLvAAYy8AAGMvIABjL0AAYy9QAGMvYABjL4AAYy+QAGM3QABjN2AAYzeAAGM3oABjN9AAYzfgAGM38ABjOAAAYzgQAGM4MABjOFAAYzhgAGM4cABjOJAAYzigAGM9MABjP3AAY0HgAGNEIABjRFAAY0RwAGNEkABjRLAAY0TQAGNE8ABjRQAAY0UwAGNGwABjSJAAY0iwAGNI0ABjSPAAY0kQAGNJMABjSVAAY0lwAGNLQABjS3AAY0ugAGNL0ABjTAAAY0wwAGNMYABjTJAAY0ywAGNUYABjVIAAY1SgAGNUwABjVPAAY1UAAGNVEABjVSAAY1UwAGNVUABjVXAAY1WAAGNVkABjVbAAY1XAAGNdcABjXZAAY12wAGNd0ABjXgAAY14QAGNeIABjXjAAY15AAGNeYABjXoAAY16QAGNeoABjXsAAY17QAGNmgABjZqAAY2bAAGNm4ABjZxAAY2cgAGNnMABjZ0AAY2dQAGNncABjZ5AAY2egAGNnsABjZ9AAY2fgAGNvkABjb7AAY2/gAGNwAABjcDAAY3BAAGNwUABjcGAAY3BwAGNwkABjcLAAY3DAAGNw0ABjcPAAY3EAAGN4sABjeNAAY3jwAGN5EABjeUAAY3lQAGN5YABjeXAAY3mAAGN5oABjecAAY3nQAGN54ABjegAAY3oQAGOBwABjgeAAY4IAAGOCIABjglAAY4JgAGOCcABjgoAAY4KQAGOCsABjgtAAY4LgAGOC8ABjgxAAY4MgAGOK0ABjivAAY4sQAGOLMABji2AAY4twAGOLgABji5AAY4ugAGOLwABji+AAY4vwAGOMAABjjCAAY4wwAGOVYABjl5AAY5mQAGObkABjm7AAY5vQAGOb8ABjnBAAY5xAAGOcUABjnGAAY5yQAGOcoABjnMAAY5zQAGOdAABjnTAAY51AAGOdUABjnYAAY52QAGOd4ABjn3AAY6AAAGOgIABjoFAAY6DgAGOhEABjoUAAY6FgAGOl8ABjqDAAY6qgAGOs4ABjrRAAY60wAGOtUABjrXAAY62QAGOtsABjrcAAY63wAGOvgABjsZAAY7GwAGOx0ABjsfAAY7IQAGOyMABjslAAY7JwAGOykABjtKAAY7TQAGO1AABjtTAAY7VgAGO1kABjtcAAY7XwAGO2IABjtkAAY73wAGO+EABjvjAAY75QAGO+gABjvpAAY76gAGO+sABjvsAAY77gAGO/AABjvxAAY78gAGO/QABjv1AAY8cAAGPHIABjx0AAY8dgAGPHkABjx6AAY8ewAGPHwABjx9AAY8fwAGPIEABjyCAAY8gwAGPIUABjyGAAY9AQAGPQMABj0GAAY9CAAGPQsABj0MAAY9DQAGPQ4ABj0PAAY9EQAGPRMABj0UAAY9FQAGPRcABj0YAAY9MQAGPTIABj0zAAY9NQAGPbAABj2yAAY9tAAGPbYABj25AAY9ugAGPbsABj28AAY9vQAGPb8ABj3BAAY9wgAGPcMABj3FAAY9xgAGPkEABj5DAAY+RQAGPkcABj5KAAY+SwAGPkwABj5NAAY+TgAGPlA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ABlDbAAZQ3gAGUOEABlDkAAZQ5wAGUOoABlDtAAZQ7wAGUWoABlFsAAZRbgAGUXAABlFzAAZRdAAGUXUABlF2AAZRdwAGUXkABlF7AAZRfAAGUX0ABlF/AAZRgAAGUfsABlH9AAZR/wAGUgEABlIEAAZSBQAGUgYABlIHAAZSCAAGUgoABlIMAAZSDQAGUg4ABlIQAAZSEQAGUowABlKOAAZSkQAGUpMABlKWAAZSlwAGUpgABlKZAAZSmgAGUpwABlKeAAZSnwAGUqAABlKiAAZSowAGUrwABlK9AAZSvgAGUsAABlM7AAZTPQAGUz8ABlNBAAZTRAAGU0UABlNGAAZTRwAGU0gABlNKAAZTTAAGU00ABlNOAAZTUAAGU1EABlPMAAZTzgAGU9AABlPSAAZT1QAGU9YABlPXAAZT2AAGU9kABlPbAAZT3QAGU94ABlPfAAZT4QAGU+IABlRdAAZUXwAGVGEABlRjAAZUZgAGVGcABlRoAAZUaQAGVGoABlRsAAZUbgAGVG8ABlRwAAZUcgAGVHMABlTuAAZU8AAGVPIABlT0AAZU9wAGVPgABlT5AAZU+gAGVPsABlT9AAZU/wAGVQAABlUBAAZVAwAGVQQABlV/AAZVgQAGVYMABlWFAAZViAAGVYkABlWKAAZViwAGVYwABlWOAAZVkAAGVZEABlWSAAZVlAAGVZUABlXeAAZWAgAGVikABlZNAAZWUAAGVlMABlZVAAZWVwAGVlkABlZbAAZWXAAGVl8ABlZ4AAZWlQAGVpgABlabAAZWngAGVqEABlakAAZWpwAGVqoABlbHAAZWygAGVs0ABlbQAAZW0wAGVtYABlbZAAZW3AAGVt4ABldZAAZXWwAGV14ABldgAAZXYwAGV2QABldlAAZXZgAGV2cABldpAAZXbAAGV20ABlduAAZXcAAGV3EABlfsAAZX7gAGV/EABlfzAAZX9gAGV/cABlf4AAZX+QAGV/oABlf8AAZX/wAGWAAABlgBAAZYAwAGWAQABlh/AAZYgQAGWIQABliGAAZYiQAGWIoABliLAAZYjAAGWI0ABliPAAZYkgAGWJMABliUAAZYlgAGWJcABlkSAAZZFAAGWRcABlkZAAZZHAAGWR0ABlkeAAZZHwAGWSAABlkiAAZZJQAGWSYABlknAAZZKQAGWSoABlnNAAZZ8QAGWhUABlo1AAZaXAAGWoMABlqjAAZaygAGWu4ABlsRAAZbOAAGW1wABluAAAZbpAAGW8sABlvMAAZbzgAGW9AABlvTAAZb1QAGW9gABlvaAAZb3AAGW98ABlvhAAZb4wAGW+YABlvpAAZb6wAGW+0ABlvvAAZb8gAGW/UABlv4AAZb/QAGXBYABlwbAAZcHQAGXCIABlwlAAZcJwAGXHAABlyUAAZcuwAGXN8ABlziAAZc5AAGXOYABlzoAAZc6gAGXOwABlztAAZc8AAGXQkABl0uAAZdMAAGXTIABl00AAZdNgAGXTgABl06AAZdPAAGXT4ABl1AAAZdZQAGXWgABl1rAAZdbgAGXXEABl10AAZddwAGXXoABl19AAZdgAAGXYIABl39AAZd/wAGXgIABl4EAAZeBwAGXggABl4JAAZeCgAGXgsABl4NAAZeDwAGXhAABl4RAAZeEwAGXhQABl4lAAZeJgAGXigABl6jAAZepQAGXqcABl6pAAZerAAGXq0ABl6uAAZerwAGXrAABl6yAAZetAAGXrUABl62AAZeuAAGXrkABl80AAZfNgAGXzkABl87AAZfPgAGXz8ABl9AAAZfQQAGX0IABl9EAAZfRgAGX0cABl9IAAZfSgAGX0sABl9cAAZfXQAGX18ABl/aAAZf3AAGX94ABl/gAAZf4wAGX+QABl/lAAZf5gAGX+cABl/pAAZf6wAGX+wABl/tAAZf7wAGX/AABmBrAAZgbQAGYHAABmByAAZgdQAGYHYABmB3AAZgeAAGYHkABmB7AAZgfQAGYH4ABmB/AAZggQAGYIIABmCTAAZglAAGYJYABmERAAZhEwAGYRUABmEXAAZhGgAGYRsABmEcAAZhHQAGYR4ABmEgAAZhIgAGYSMABmEkAAZhJgAGYScABmGiAAZhpAAGYacABmGpAAZhrAAGYa0ABmGuAAZhrwAGYbAABmGyAAZhtAAGYbUABmG2AAZhuAAGYbkABmHSAAZh0wAGYdQABmHWAAZiUQAGYlMABmJVAAZiVwAGYloABmJbAAZiXAAGYl0ABmJeAAZiYAAGYmIABmJjAAZiZAAGYmYABmJnAAZi4gAGYuQABmLnAAZi6QAGYuwABmLtAAZi7gAGYu8ABmLwAAZi8gAGYvQABmL1AAZi9gAGYvgABmL5AAZjBgAGYx8ABmM4AAZjOwAGYz4ABmNBAAZjRAAGY0cABmNKAAZjYwAGY2YABmNpAAZjbAAGY28ABmNyAAZjdQAGY3cABmOFAAZjmwAGY6QABmOxAAZjxwAGY9oABmRtAAZkkAAGZLAABmTQAAZk0gAGZNQABmTWAAZk2AAGZNsABmTcAAZk3QAGZOAABmThAAZk4wAGZOQABmTnAAZk6gAGZOsABmTsAAZk7wAGZPAABmT1AAZlDgAGZRcABmUZAAZlHAAGZSUABmUoAAZlKwAGZS0ABmV2AAZlmgAGZcEABmXlAAZl6AAGZeoABmXsAAZl7gAGZfAABmXyAAZl8wAGZfYABmYPAAZmMAAGZjIABmY0AAZmNgAGZjgABmY6AAZmPAAGZj4ABmZAAAZmYQAGZmQABmZnAAZmagAGZm0ABmZwAAZmcwAGZnYABmZ5AAZmewAGZvYABmb4AAZm+gAGZvwABmb/AAZnAAAGZwEABmcCAAZnAwAGZwUABmcHAAZnCAAGZwkABmcLAAZnDAAGZ4cABmeJAAZniwAGZ40ABmeQAAZnkQAGZ5IABmeTAAZnlAAGZ5YABmeYAAZnmQAGZ5oABmecAAZnnQAGaBgABmgaAAZoHQAGaB8ABmgiAAZoIwAGaCQABmglAAZoJgAGaCgABmgqAAZoKwAGaCwABmguAAZoLwAGaEgABmhJAAZoSgAGaEwABmjHAAZoyQAGaMsABmjNAAZo0AAGaNEABmjSAAZo0wAGaNQABmjWAAZo2AAGaNkABmjaAAZo3AAGaN0ABmlYAAZpWgAGaVwABmleAAZpYQAGaWIABmljAAZpZAAGaWUABmlnAAZpaQAGaWoABmlrAAZpbQAGaW4ABmnpAAZp6wAGae0ABmnvAAZp8gAGafMABmn0AAZp9QAGafYABmn4AAZp+gAGafsABmn8AAZp/gAGaf8ABmp6AAZqfAAGan4ABmqAAAZqgwAGaoQABmqFAAZqhgAGaocABmqJAAZqiwAGaowABmqNAAZqjwAGapAABmsLAAZrDQAGaw8ABmsRAAZrFAAGaxUABmsWAAZrFwAGaxgABmsaAAZrHAAGax0ABmseAAZrIAAGayEABmtqAAZrjgAGa7UABmvZAAZr3AAGa98ABmvhAAZr4wAGa+UABmvnAAZr6AAGa+sABmwEAAZsIQAGbCQABmwnAAZsKgAGbC0ABmwwAAZsMwAGbDYABmxTAAZsVgAGbFkABmxcAAZsXwAGbGIABmxlAAZsaAAGbGoABmzlAAZs5wAGbOoABmzsAAZs7wAGbPAABmzxAAZs8gAGbPMABmz1AAZs+AAGbPkABmz6AAZs/AAGbP0ABm14AAZtegAGbX0ABm1/AAZtggAGbYMABm2EAAZthQAGbYYABm2IAAZtiwAGbYwABm2NAAZtjwAGbZAABm4LAAZuDQAGbhAABm4SAAZuFQAGbhYABm4XAAZuGAAGbhkABm4bAAZuHgAGbh8ABm4gAAZuIgAGbiMABm6eAAZuoAAGbqMABm6lAAZuqAAGbqkABm6qAAZuqwAGbqwABm6uAAZusQAGbrIABm6zAAZutQAGbrYABm8xAAZvMwAGbzUABm83AAZvOgAGbzsABm88AAZvPQAGbz4ABm9AAAZvQwAGb0QABm9FAAZvRwAGb0gABm/DAAZvxQAGb8cABm/JAAZvzAAGb80ABm/OAAZvzwAGb9AABm/SAAZv1QAGb9YABm/XAAZv2QAGb9oABnBVAAZwVwAGcFoABnBcAAZwXwAGcGAABnBhAAZwYgAGcGMABnBlAAZwaAAGcGkABnBqAAZwbAAGcG0ABnEAAAZxIwAGcUMABnFjAAZxZQAGcWcABnFpAAZxawAGcW4ABnFvAAZxcAAGcXMABnF0AAZxdgAGcXcABnF5AAZxfAAGcX0ABnF+AAZxgQAGcYIABnGHAAZxoAAGcakABnGrAAZxrQAGcbYABnG5AAZxvAAGcb4ABnIHAAZyKwAGclIABnJ2AAZyeQAGcnsABnJ9AAZyfwAGcoEABnKDAAZyhAAGcocABnKgAAZywQAGcsMABnLFAAZyxwAGcskABnLLAAZyzQAGcs8ABnLRAAZy8gAGcvUABnL4AAZy+wAGcv4ABnMBAAZzBAAGcwcABnMKAAZzDAAGc4cABnOJAAZziwAGc40ABnOQAAZzkQAGc5IABnOTAAZzlAAGc5YABnOYAAZzmQAGc5oABnOcAAZznQAGdBgABnQaAAZ0HAAGdB4ABnQhAAZ0IgAGdCMABnQkAAZ0JQAGdCcABnQpAAZ0KgAGdCsABnQtAAZ0LgAGdKkABnSrAAZ0rgAGdLAABnSzAAZ0tAAGdLUABnS2AAZ0twAGdLkABnS7AAZ0vAAGdL0ABnS/AAZ0wAAGdNkABnTaAAZ02wAGdN0ABnVYAAZ1WgAGdVwABnVeAAZ1YQAGdWIABnVjAAZ1ZAAGdWUABnVnAAZ1aQAGdWoABnVrAAZ1bQAGdW4ABnXpAAZ16wAGde0ABnXvAAZ18gAGdfMABnX0AAZ19QAGdfYABnX4AAZ1+gAGdfsABnX8AAZ1/gAGdf8ABnZ6AAZ2fAAGdn4ABnaAAAZ2gwAGdoQABnaFAAZ2hgAGdocABnaJAAZ2iwAGdowABnaNAAZ2jwAGdpAABncLAAZ3DQAGdw8ABncRAAZ3FAAGdxUABncWAAZ3FwAGdxgABncaAAZ3HAAGdx0ABnceAAZ3IAAGdyEABnecAAZ3ngAGd6AABneiAAZ3pQAGd6YABnenAAZ3qAAGd6kABnerAAZ3rQAGd64ABnevAAZ3sQAGd7IABnf7AAZ4HwAGeEYABnhqAAZ4bQAGeG8ABnhxAAZ4cwAGeHUABnh3AAZ4eAAGeHsABniUAAZ4sQAGeLMABni1AAZ4twAGeLkABni7AAZ4vQAGeL8ABnjcAAZ43wAGeOIABnjlAAZ46AAGeOsABnjuAAZ48QAGePMABnluAAZ5cAAGeXIABnl0AAZ5dwAGeXgABnl5AAZ5egAGeXsABnl9AAZ5fwAGeYAABnmBAAZ5gwAGeYQABnn/AAZ6AQAGegMABnoFAAZ6CAAGegkABnoKAAZ6CwAGegwABnoOAAZ6EAAGehEABnoSAAZ6FAAGehUABnqQAAZ6kgAGepQABnqWAAZ6mQAGepoABnqbAAZ6nAAGep0ABnqfAAZ6oQAGeqIABnqjAAZ6pQAGeqYABnshAAZ7IwAGeyUABnsnAAZ7KgAGeysABnssAAZ7LQAGey4ABnswAAZ7MgAGezMABns0AAZ7NgAGezcABnuyAAZ7tAAGe7YABnu4AAZ7uwAGe7wABnu9AAZ7vgAGe78ABnvBAAZ7wwAGe8QABnvFAAZ7xwAGe8gABnxDAAZ8RQAGfEcABnxJAAZ8TAAGfE0ABnxOAAZ8TwAGfFAABnxSAAZ8VAAGfFUABnxWAAZ8WAAGfFkABnzUAAZ81gAGfNgABnzaAAZ83QAGfN4ABnzfAAZ84AAGfOEABnzjAAZ85QAGfOYABnznAAZ86QAGfOoABn19AAZ9oAAGfcAABn3gAAZ94gAGfeQABn3mAAZ96AAGfesABn3sAAZ97QAGffAABn3xAAZ98wAGffQABn32AAZ9+QAGffoABn37AAZ9/gAGff8ABn4IAAZ+IQAGfioABn4sAAZ+LgAGfjcABn46AAZ+PQAGfj8ABn6IAAZ+rAAGftMABn73AAZ++gAGfvwABn7+AAZ/AAAGfwIABn8EAAZ/BQAGfwgABn8hAAZ/QgAGf0QABn9GAAZ/SAAGf0oABn9MAAZ/TgAGf1AABn9SAAZ/cwAGf3YABn95AAZ/fAAGf38ABn+CAAZ/hQAGf4gABn+LAAZ/jQAGgAgABoAKAAaADAAGgA4ABoARAAaAEgAGgBMABoAUAAaAFQAGgBcABoAZAAaAGgAGgBsABoAdAAaAHgAGgJkABoCbAAaAnQAGgJ8ABoCiAAaAowAGgKQABoClAAaApgAGgKgABoCqAAaAqwAGgKwABoCuAAaArwAGgSoABoEsAAaBLwAGgTEABoE0AAaBNQAGgTYABoE3AAaBOAAGgToABoE8AAaBPQAGgT4ABoFAAAaBQQAGgVoABoFbAAaBXAAGgV4ABoHZAAaB2wAGgd0ABoHfAAaB4gAGgeMABoHkAAaB5QAGgeYABoHoAAaB6gAGgesABoHsAAaB7gAGge8ABoJqAAaCbAAGgm4ABoJwAAaCcwAGgnQABoJ1AAaCdgAGgncABoJ5AAaCewAGgnwABoJ9AAaCfwAGgoAABoL7AAaC/QAGgv8ABoMBAAaDBAAGgwUABoMGAAaDBwAGgwgABoMKAAaDDAAGgw0ABoMOAAaDEAAGgxEABoOMAAaDjgAGg5AABoOSAAaDlQAGg5YABoOXAAaDmAAGg5kABoObAAaDnQAGg54ABoOfAAaDoQAGg6IABoQdAAaEHwAGhCEABoQjAAaEJgAGhCcABoQoAAaEKQAGhCoABoQsAAaELgAGhC8ABoQwAAaEMgAGhDMABoR8AAaEoAAGhMcABoTrAAaE7gAGhPAABoTyAAaE9AAGhPYABoT4AAaE+QAGhPwABoUVAAaFMgAGhTQABoU2AAaFOAAGhToABoU8AAaFPgAGhUAABoVdAAaFYAAGhWMABoVmAAaFaQAGhWwABoVvAAaFcgAGhXQABoXvAAaF8QAGhfMABoX1AAaF+AAGhfkABoX6AAaF+wAGhfwABoX+AAaGAAAGhgEABoYCAAaGBAAGhgUABoaAAAaGggAGhoQABoaGAAaGiQAGhooABoaLAAaGjAAGho0ABoaPAAaGkQAGhpIABoaTAAaGlQAGhpYABocRAAaHEwAGhxUABocXAAaHGgAGhxsABoccAAaHHQAGhx4ABocgAAaHIgAGhyMABockAAaHJgAGhycABoeiAAaHpAAGh6YABoeoAAaHqwAGh6wABoetAAaHrgAGh68ABoexAAaHswAGh7QABoe1AAaHtwAGh7gABogzAAaINQAGiDcABog5AAaIPAAGiD0ABog+AAaIPwAGiEAABohCAAaIRAAGiEUABohGAAaISAAGiEkABojEAAaIxgAGiMkABojLAAaIzgAGiM8ABojQAAaI0QAGiNIABojUAAaI1gAGiNcABojYAAaI2gAGiNsABojqAAaJZQAGiWcABolpAAaJawAGiW4ABolvAAaJcAAGiXEABolyAAaJdAAGiXYABol3AAaJeAAGiXoABol7AAaKDgAGijEABopRAAaKcQAGinMABop1AAaKdwAGinkABop8AAaKfQAGin4ABoqBAAaKggAGioQABoqFAAaKiAAGiosABoqMAAaKjQAGipAABoqRAAaKlgAGiq8ABoq4AAaKugAGir0ABorGAAaKyQAGiswABorOAAaLFwAGizsABotiAAaLhgAGi4kABouLAAaLjQAGi48ABouRAAaLkwAGi5QABouXAAaLsAAGi9EABovTAAaL1QAGi9cABovZAAaL2wAGi90ABovfAAaL4QAGjAIABowFAAaMCAAGjAsABowOAAaMEQAGjBQABowXAAaMGgAGjBwABoyXAAaMmQAGjJsABoydAAaMoAAGjKEABoyiAAaMowAGjKQABoymAAaMqAAGjKkABoyqAAaMrAAGjK0ABo0oAAaNKgAGjSwABo0uAAaNMQAGjTIABo0zAAaNNAAGjTUABo03AAaNOQAGjToABo07AAaNPQAGjT4ABo25AAaNuwAGjb4ABo3AAAaNwwAGjcQABo3FAAaNxgAGjccABo3JAAaNywAGjcwABo3NAAaNzwAGjdAABo3pAAaN6gAGjesABo3tAAaOaAAGjmoABo5sAAaObgAGjnEABo5yAAaOcwAGjnQABo51AAaOdwAGjnkABo56AAaOewAGjn0ABo5+AAaO+QAGjvsABo79AAaO/wAGjwIABo8DAAaPBAAGjwUABo8GAAaPCAAGjwoABo8LAAaPDAAGjw4ABo8PAAaPigAGj4wABo+OAAaPkAAGj5MABo+UAAaPlQAGj5YABo+XAAaPmQAGj5sABo+cAAaPnQAGj58ABo+gAAaQGwAGkB0ABpAfAAaQIQAGkCQABpAlAAaQJgAGkCcABpAoAAaQKgAGkCwABpAtAAaQLgAGkDAABpAxAAaQrAAGkK4ABpCwAAaQsgAGkLUABpC2AAaQtwAGkLgABpC5AAaQuwAGkL0ABpC+AAaQvwAGkMEABpDCAAaRCwAGkS8ABpFWAAaRegAGkX0ABpGAAAaRggAGkYQABpGGAAaRiAAGkYkABpGMAAaRpQAGkcIABpHFAAaRyAAGkcsABpHOAAaR0QAGkdQABpHXAAaR9AAGkfcABpH6AAaR/QAGkgAABpIDAAaSBgAGkgkABpILAAaShgAGkogABpKLAAaSjQAGkpAABpKRAAaSkgAGkpMABpKUAAaSlgAGkpkABpKaAAaSmwAGkp0ABpKeAAaTGQAGkxsABpMeAAaTIAAGkyMABpMkAAaTJQAGkyYABpMnAAaTKQAGkywABpMtAAaTLgAGkzAABpMxAAaTrAAGk64ABpOxAAaTswAGk7YABpO3AAaTuAAGk7kABpO6AAaTvAAGk78ABpPAAAaTwQAGk8MABpPEAAaUPwAGlEEABpREAAaURgAGlEkABpRKAAaUSwAGlEwABpRNAAaUTwAGlFIABpRTAAaUVAAGlFYABpRXAAaU0gAGlNQABpTWAAaU2AAGlNsABpTcAAaU3QAGlN4ABpTfAAaU4QAGlOQABpTlAAaU5gAGlOgABpTpAAaVZAAGlWYABpVoAAaVagAGlW0ABpVuAAaVbwAGlXAABpVxAAaVcwAGlXYABpV3AAaVeAAGlXoABpV7AAaV9gAGlfgABpX7AAaV/QAGlgAABpYBAAaWAgAGlgMABpYEAAaWBgAGlgkABpYKAAaWCwAGlg0ABpYOAAaWoQAGlsQABpbkAAaXBAAGlwYABpcIAAaXCgAGlwwABpcPAAaXEAAGlxEABpcUAAaXFQAGlxcABpcYAAaXGwAGlx4ABpcfAAaXIAAGlyMABpckAAaXLQAGl0YABpdPAAaXUQAGl1QABpddAAaXYAAGl2MABpdlAAaXrgAGl9IABpf5AAaYHQAGmCAABpgiAAaYJAAGmCYABpgoAAaYKgAGmCsABpguAAaYRwAGmGgABphqAAaYbAAGmG4ABphwAAaYcgAGmHQABph2AAaYeAAGmJkABpicAAaYnwAGmKIABpilAAaYqAAGmKsABpiuAAaYsQAGmLMABpkuAAaZMAAGmTIABpk0AAaZNwAGmTgABpk5AAaZOgAGmTsABpk9AAaZPwAGmUAABplBAAaZQwAGmUQABpm/AAaZwQAGmcMABpnFAAaZyAAGmckABpnKAAaZywAGmcwABpnOAAaZ0AAGmdEABpnSAAaZ1AAGmdUABppQAAaaUgAGmlUABppXAAaaWgAGmlsABppcAAaaXQAGml4ABppgAAaaYgAGmmMABppkAAaaZgAGmmcABpqAAAaagQAGmoIABpqEAAaa/wAGmwEABpsDAAabBQAGmwgABpsJAAabCgAGmwsABpsMAAabDgAGmxAABpsRAAabEgAGmxQABpsVAAabkAAGm5IABpuUAAablgAGm5kABpuaAAabmwAGm5wABpudAAabnwAGm6EABpuiAAabowAGm6UABpumAAacIQAGnCMABpwlAAacJwAGnCoABpwrAAacLAAGnC0ABpwuAAacMAAGnDIABpwzAAacNAAGnDYABpw3AAacsgAGnLQABpy2AAacuAAGnLsABpy8AAacvQAGnL4ABpy/AAacwQAGnMMABpzEAAacxQAGnMcABpzIAAadQwAGnUUABp1HAAadSQAGnUwABp1NAAadTgAGnU8ABp1QAAadUgAGnVQABp1VAAadVgAGnVgABp1ZAAadogAGncYABp3tAAaeEQAGnhQABp4XAAaeGQAGnhsABp4dAAaeHwAGniAABp4jAAaePAAGnlkABp5cAAaeXwAGnmIABp5lAAaeaAAGnmsABp5uAAaeiwAGno4ABp6RAAaelAAGnpcABp6aAAaenQAGnqAABp6iAAafHQAGnx8ABp8iAAafJAAGnycABp8oAAafKQAGnyoABp8rAAafLQAGnzAABp8xAAafMgAGnzQABp81AAafsAAGn7IABp+1AAaftwAGn7oABp+7AAafvAAGn70ABp++AAafwAAGn8MABp/EAAafxQAGn8cABp/IAAagQwAGoEUABqBIAAagSgAGoE0ABqBOAAagTwAGoFAABqBRAAagUwAGoFYABqBXAAagWAAGoFoABqBbAAag1gAGoNgABqDbAAag3QAGoOAABqDhAAag4gAGoOMABqDkAAag5gAGoOkABqDqAAag6wAGoO0ABqDuAAahaQAGoWsABqFtAAahbwAGoXIABqFzAAahdAAGoXUABqF2AAaheAAGoXsABqF8AAahfQAGoX8ABqGAAAah+wAGof0ABqH/AAaiAQAGogQABqIFAAaiBgAGogcABqIIAAaiCgAGog0ABqIOAAaiDwAGohEABqISAAaijQAGoo8ABqKSAAailAAGopcABqKYAAaimQAGopoABqKbAAainQAGoqAABqKhAAaiogAGoqQABqKlAAajOAAGo1sABqN7AAajmwAGo50ABqOfAAajoQAGo6MABqOmAAajpwAGo6gABqOrAAajrAAGo64ABqOvAAajsgAGo7UABqO2AAajtwAGo7oABqO7AAajwAAGo9kABqPiAAaj5AAGo+cABqPwAAaj8wAGo/YABqP4AAakQQAGpGUABqSMAAaksAAGpLMABqS1AAaktwAGpLkABqS7AAakvQAGpL4ABqTBAAak2gAGpPsABqT9AAak/wAGpQEABqUDAAalBQAGpQcABqUJAAalCwAGpSwABqUvAAalMgAGpTUABqU4AAalOwAGpT4ABqVBAAalRAAGpUYABqXBAAalwwAGpcUABqXHAAalygAGpcsABqXMAAalzQAGpc4ABqXQAAal0gAGpdMABqXUAAal1gAGpdcABqZSAAamVAAGplYABqZYAAamWwAGplwABqZdAAamXgAGpl8ABqZhAAamYwAGpmQABqZlAAamZwAGpmgABqbjAAam5QAGpugABqbqAAam7QAGpu4ABqbvAAam8AAGpvEABqbzAAam9QAGpvYABqb3AAam+QAGpvoABqcTAAanFAAGpxUABqcXAAankgAGp5QABqeWAAanmAAGp5sABqecAAannQAGp54ABqefAAanoQAGp6MABqekAAanpQAGp6cABqeoAAaoIwAGqCUABqgnAAaoKQAGqCwABqgtAAaoLgAGqC8ABqgwAAaoMgAGqDQABqg1AAaoNgAGqDgABqg5AAaotAAGqLYABqi4AAaougAGqL0ABqi+AAaovwAGqMAABqjBAAaowwAGqMUABqjGAAaoxwAGqMkABqjKAAapRQAGqUcABqlJAAapSwAGqU4ABqlPAAapUAAGqVEABqlSAAapVAAGqVYABqlXAAapWAAGqVoABqlbAAap1gAGqdgABqnaAAap3AAGqd8ABqngAAap4QAGqeIABqnjAAap5QAGqecABqnoAAap6QAGqesABqnsAAaqNQAGqlkABqqAAAaqpAAGqqcABqqqAAaqrAAGqq4ABqqwAAaqsgAGqrMABqq2AAaqzwAGquwABqrvAAaq8gAGqvUABqr4AAaq+wAGqv4ABqsBAAarHgAGqyEABqskAAarJwAGqyoABqstAAarMAAGqzMABqs1AAarsAAGq7IABqu1AAartwAGq7oABqu7AAarvAAGq70ABqu+AAarwAAGq8MABqvEAAarxQAGq8cABqvIAAasQwAGrEUABqxIAAasSgAGrE0ABqxOAAasTwAGrFAABqxRAAasUwAGrFYABqxXAAasWAAGrFoABqxbAAas1gAGrNgABqzbAAas3QAGrOAABqzhAAas4gAGrOMABqzkAAas5gAGrOkABqzqAAas6wAGrO0ABqzuAAataQAGrWsABq1uAAatcAAGrXMABq10AAatdQAGrXYABq13AAateQAGrXwABq19AAatfgAGrYAABq2BAAauBAAGrigABq5MAAaubwAGrpYABq62AAau3QAGrwQABq8kAAavSAAGr2wABq9uAAavcQAGr3MABq91AAavdwAGr3oABq99AAavfwAGr4EABq+EAAavhgAGr4gABq+LAAavjgAGr48ABq+UAAavrQAGr7IABq+0AAavuQAGr7wABq++AAawBwAGsCsABrBSAAawdgAGsHkABrB7AAawfQAGsH8ABrCBAAawgwAGsIQABrCHAAawoAAGsMUABrDHAAawyQAGsMsABrDNAAawzwAGsNEABrDTAAaw1QAGsNcABrD8AAaw/wAGsQIABrEFAAaxCAAGsQsABrEOAAaxEQAGsRQABrEXAAaxGQAGsZQABrGWAAaxmQAGsZsABrGeAAaxnwAGsaAABrGhAAaxogAGsaQABrGmAAaxpwAGsagABrGqAAaxqwAGsbwABrG9AAaxvwAGsjoABrI8AAayPgAGskAABrJDAAayRAAGskUABrJGAAayRwAGskkABrJLAAayTAAGsk0ABrJPAAayUAAGsssABrLNAAay0AAGstIABrLVAAay1gAGstcABrLYAAay2QAGstsABrLdAAay3gAGst8ABrLhAAay4gAGsvMABrL0AAay9gAGs3EABrNzAAazdQAGs3cABrN6AAazewAGs3wABrN9AAazfgAGs4AABrOCAAazgwAGs4QABrOGAAazhwAGtAIABrQEAAa0BwAGtAkABrQMAAa0DQAGtA4ABrQPAAa0EAAGtBIABrQUAAa0FQAGtBYABrQYAAa0GQAGtCoABrQrAAa0LQAGtKgABrSqAAa0rAAGtK4ABrSxAAa0sgAGtLMABrS0AAa0tQAGtLcABrS5AAa0ugAGtLsABrS9AAa0vgAGtTkABrU7AAa1PgAGtUAABrVDAAa1RAAGtUUABrVGAAa1RwAGtUkABrVLAAa1TAAGtU0ABrVPAAa1UAAGtWkABrVqAAa1awAGtW0ABrXoAAa16gAGtewABrXuAAa18QAGtfIABrXzAAa19AAGtfUABrX3AAa1+QAGtfoABrX7AAa1/QAGtf4ABrZ5AAa2ewAGtn4ABraAAAa2gwAGtoQABraFAAa2hgAGtocABraJAAa2iwAGtowABraNAAa2jwAGtpAABralAAa2vgAGts8ABrbSAAa21QAGttgABrbbAAa27AAGtu8ABrbyAAa29QAGtvgABrb6AAa3AwAGtxAABrcfAAa3PwAGt9IABrf1AAa4FQAGuDUABrg3AAa4OQAGuDsABrg9AAa4QAAGuEEABrhCAAa4RQAGuEYABrhIAAa4SQAGuEsABrhOAAa4TwAGuFAABrhTAAa4VAAGuF0ABrh2AAa4fwAGuIEABriDAAa4jAAGuI8ABriSAAa4lAAGuN0ABrkBAAa5KAAGuUwABrlPAAa5UQAGuVMABrlVAAa5VwAGuVkABrlaAAa5XQAGuXYABrmXAAa5mQAGuZsABrmdAAa5nwAGuaEABrmjAAa5pQAGuacABrnIAAa5ywAGuc4ABrnRAAa51AAGudcABrnaAAa53QAGueAABrniAAa6XQAGul8ABrphAAa6YwAGumYABrpnAAa6aAAGumkABrpqAAa6bAAGum4ABrpvAAa6cAAGunIABrpzAAa67gAGuvAABrryAAa69AAGuvcABrr4AAa6+QAGuvoABrr7AAa6/QAGuv8ABrsAAAa7AQAGuwMABrsEAAa7fwAGu4EABruEAAa7hgAGu4kABruKAAa7iwAGu4wABruNAAa7jwAGu5EABruSAAa7kwAGu5UABruWAAa7rwAGu7AABruxAAa7swAGvC4ABrwwAAa8MgAGvDQABrw3AAa8OAAGvDkABrw6AAa8OwAGvD0ABrw/AAa8QAAGvEEABrxDAAa8RAAGvL8ABrzBAAa8wwAGvMUABrzIAAa8yQAGvMoABrzLAAa8zAAGvM4ABrzQAAa80QAGvNIABrzUAAa81QAGvVAABr1SAAa9VAAGvVYABr1ZAAa9WgAGvVsABr1cAAa9XQAGvV8ABr1hAAa9YgAGvWMABr1lAAa9ZgAGveEABr3jAAa95QAGvecABr3qAAa96wAGvewABr3tAAa97gAGvfAABr3yAAa98wAGvfQABr32AAa99wAGvnIABr50AAa+dgAGvngABr57AAa+fAAGvn0ABr5+AAa+fwAGvoEABr6DAAa+hAAGvoUABr6HAAa+iAAGvtEABr71AAa/HAAGv0AABr9DAAa/RQAGv0cABr9JAAa/SwAGv00ABr9OAAa/UQAGv2oABr+HAAa/iQAGv4sABr+NAAa/jwAGv5EABr+TAAa/lQAGv7IABr+1AAa/uAAGv7sABr++AAa/wQAGv8QABr/HAAa/yQAGwEQABsBGAAbASAAGwEoABsBNAAbATgAGwE8ABsBQAAbAUQAGwFMABsBVAAbAVgAGwFcABsBZAAbAWgAGwNUABsDXAAbA2QAGwNsABsDeAAbA3wAGwOAABsDhAAbA4gAGwOQABsDmAAbA5wAGwOgABsDqAAbA6wAGwWYABsFoAAbBagAGwWwABsFvAAbBcAAGwXEABsFyAAbBcwAGwXUABsF3AAbBeAAGwXkABsF7AAbBfAAGwfcABsH5AAbB/AAGwf4ABsIBAAbCAgAGwgMABsIEAAbCBQAGwgcABsIJAAbCCgAGwgsABsINAAbCDgAGwokABsKLAAbCjQAGwo8ABsKSAAbCkwAGwpQABsKVAAbClgAGwpgABsKaAAbCmwAGwpwABsKeAAbCnwAGwxoABsMcAAbDHgAGwyAABsMjAAbDJAAGwyUABsMmAAbDJwAGwykABsMrAAbDLAAGwy0ABsMvAAbDMAAGw6sABsOtAAbDrwAGw7EABsO0AAbDtQAGw7YABsO3AAbDuAAGw7oABsO8AAbDvQAGw74ABsPAAAbDwQAGxFQABsR3AAbElwAGxLcABsS5AAbEuwAGxL0ABsS/AAbEwgAGxMMABsTEAAbExwAGxMgABsTKAAbEywAGxM4ABsTRAAbE0gAGxNMABsTWAAbE1wAGxNwABsT1AAbE/gAGxQAABsUDAAbFDAAGxQ8ABsUSAAbFFAAGxV0ABsWBAAbFqAAGxcwABsXPAAbF0QAGxdMABsXVAAbF1wAGxdkABsXaAAbF3QAGxfYABsYXAAbGGQAGxhsABsYdAAbGHwAGxiEABsYjAAbGJQAGxicABsZIAAbGSwAGxk4ABsZRAAbGVAAGxlcABsZaAAbGXQAGxmAABsZiAAbG3QAGxt8ABsbhAAbG4wAGxuYABsbnAAbG6AAGxukABsbqAAbG7AAGxu4ABsbvAAbG8AAGxvIABsbzAAbHbgAGx3AABsdyAAbHdAAGx3cABsd4AAbHeQAGx3oABsd7AAbHfQAGx38ABseAAAbHgQAGx4MABseEAAbH/wAGyAEABsgEAAbIBgAGyAkABsgKAAbICwAGyAwABsgNAAbIDwAGyBEABsgSAAbIEwAGyBUABsgWAAbILwAGyDAABsgxAAbIMwAGyK4ABsiwAAbIsgAGyLQABsi3AAbIuAAGyLkABsi6AAbIuwAGyL0ABsi/AAbIwAAGyMEABsjDAAbIxAAGyT8ABslBAAbJQwAGyUUABslIAAbJSQAGyUoABslLAAbJTAAGyU4ABslQAAbJUQAGyVIABslUAAbJVQAGydAABsnSAAbJ1AAGydYABsnZAAbJ2gAGydsABsncAAbJ3QAGyd8ABsnhAAbJ4gAGyeMABsnlAAbJ5gAGymEABspjAAbKZQAGymcABspqAAbKawAGymwABsptAAbKbgAGynAABspyAAbKcwAGynQABsp2AAbKdwAGyvIABsr0AAbK9gAGyvgABsr7AAbK/AAGyv0ABsr+AAbK/wAGywEABssDAAbLBAAGywUABssHAAbLCAAGy1EABst1AAbLnAAGy8AABsvDAAbLxgAGy8gABsvKAAbLzAAGy84ABsvPAAbL0gAGy+sABswIAAbMCwAGzA4ABswRAAbMFAAGzBcABswaAAbMHQAGzDoABsw9AAbMQAAGzEMABsxGAAbMSQAGzEwABsxPAAbMUQAGzMwABszOAAbM0QAGzNMABszWAAbM1wAGzNgABszZAAbM2gAGzNwABszfAAbM4AAGzOEABszjAAbM5AAGzV8ABs1hAAbNZAAGzWYABs1pAAbNagAGzWsABs1sAAbNbQAGzW8ABs1yAAbNcwAGzXQABs12AAbNdwAGzfIABs30AAbN9wAGzfkABs38AAbN/QAGzf4ABs3/AAbOAAAGzgIABs4FAAbOBgAGzgcABs4JAAbOCgAGzoUABs6HAAbOigAGzowABs6PAAbOkAAGzpEABs6SAAbOkwAGzpUABs6YAAbOmQAGzpoABs6cAAbOnQAGzxgABs8aAAbPHAAGzx4ABs8hAAbPIgAGzyMABs8kAAbPJQAGzycABs8qAAbPKwAGzywABs8uAAbPLwAGz6oABs+sAAbPrgAGz7AABs+zAAbPtAAGz7UABs+2AAbPtwAGz7kABs+8AAbPvQAGz74ABs/AAAbPwQAG0DwABtA+AAbQQQAG0EMABtBGAAbQRwAG0EgABtBJAAbQSgAG0EwABtBPAAbQUAAG0FEABtBTAAbQVAAG0OcABtEKAAbRKgAG0UoABtFMAAbRTgAG0VAABtFSAAbRVQAG0VYABtFXAAbRWgAG0VsABtFdAAbRXgAG0WAABtFjAAbRZAAG0WUABtFoAAbRaQAG0W4ABtGHAAbRkAAG0ZIABtGUAAbRnQAG0aAABtGjAAbRpQAG0e4ABtISAAbSOQAG0l0ABtJgAAbSYgAG0mQABtJmAAbSaAAG0moABtJrAAbSbgAG0ocABtKoAAbSqgAG0qwABtKuAAbSsAAG0rIABtK0AAbStgAG0rgABtLZAAbS3AAG0t8ABtLiAAbS5QAG0ugABtLrAAbS7gAG0vEABtLzAAbTbgAG03AABtNyAAbTdAAG03cABtN4AAbTeQAG03oABtN7AAbTfQAG038ABtOAAAbTgQAG04MABtOEAAbT/wAG1AEABtQDAAbUBQAG1AgABtQJAAbUCgAG1AsABtQMAAbUDgAG1BAABtQRAAbUEgAG1BQABtQVAAbUkAAG1JIABtSVAAbUlwAG1JoABtSbAAbUnAAG1J0ABtSeAAbUoAAG1KIABtSjAAbUpAAG1KYABtSnAAbUwAAG1MEABtTCAAbUxAAG1T8ABtVBAAbVQwAG1UUABtVIAAbVSQAG1UoABtVLAAbVTAAG1U4ABtVQAAbVUQAG1VIABtVUAAbVVQAG1dAABtXSAAbV1AAG1dYABtXZAAbV2gAG1dsABtXcAAbV3QAG1d8ABtXhAAbV4gAG1eMABtXlAAbV5gAG1mEABtZjAAbWZQAG1mcABtZqAAbWawAG1mwABtZtAAbWbgAG1nA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ABwM4AAcDOgAHAzsABwM8AAcDPgAHAz8ABwO6AAcDvAAHA78ABwPBAAcDxAAHA8UABwPGAAcDxwAHA8gABwPKAAcDzAAHA80ABwPOAAcD0AAHA9EABwPqAAcD6wAHA+wABwPuAAcEaQAHBGsABwRtAAcEbwAHBHIABwRzAAcEdAAHBHUABwR2AAcEeAAHBHoABwR7AAcEfAAHBH4ABwR/AAcE+gAHBPwABwT+AAcFAAAHBQMABwUEAAcFBQAHBQYABwUHAAcFCQAHBQsABwUMAAcFDQAHBQ8ABwUQAAcFiwAHBY0ABwWPAAcFkQAHBZQABwWVAAcFlgAHBZcABwWYAAcFmgAHBZwABwWdAAcFngAHBaAABwWhAAcGHAAHBh4ABwYgAAcGIgAHBiUABwYmAAcGJwAHBigABwYpAAcGKwAHBi0ABwYuAAcGLwAHBjEABwYyAAcGrQAHBq8ABwaxAAcGswAHBrYABwa3AAcGuAAHBrkABwa6AAcGvAAHBr4ABwa/AAcGwAAHBsIABwbDAAcHDAAHBzAABwdXAAcHewAHB34ABweBAAcHgwAHB4UABweHAAcHiQAHB4oABweNAAcHpgAHB8MABwfGAAcHyQAHB8wABwfPAAcH0gAHB9UABwfYAAcH9QAHB/gABwf7AAcH/gAHCAEABwgEAAcIBwAHCAoABwgMAAcIhwAHCIkABwiMAAcIjgAHCJEABwiSAAcIkwAHCJQABwiVAAcIlwAHCJoABwibAAcInAAHCJ4ABwifAAcJGgAHCRwABwkfAAcJIQAHCSQABwklAAcJJgAHCScABwkoAAcJKgAHCS0ABwkuAAcJLwAHCTEABwkyAAcJrQAHCa8ABwmyAAcJtAAHCbcABwm4AAcJuQAHCboABwm7AAcJvQAHCcAABwnBAAcJwgAHCcQABwnFAAcKQAAHCkIABwpFAAcKRwAHCkoABwpLAAcKTAAHCk0ABwpOAAcKUAAHClMABwpUAAcKVQAHClcABwpYAAcK0wAHCtUABwrXAAcK2QAHCtwABwrdAAcK3gAHCt8ABwrgAAcK4gAHCuUABwrmAAcK5wAHCukABwrqAAcLZQAHC2cABwtpAAcLawAHC24ABwtvAAcLcAAHC3EABwtyAAcLdAAHC3cABwt4AAcLeQAHC3sABwt8AAcL9wAHC/kABwv8AAcL/gAHDAEABwwCAAcMAwAHDAQABwwFAAcMBwAHDAoABwwLAAcMDAAHDA4ABwwPAAcMIAAHDCUABwwoAAcMKgAHDGMABwxtAAcMdgAHDHkABwx7AAcMfgAHDIEABwyEAAcMhwAHDJAABw0zAAcNVwAHDXsABw2bAAcNwgAHDekABw4JAAcOMAAHDlQABw53AAcOngAHDsIABw7mAAcPCgAHDzEABw8yAAcPNAAHDzYABw85AAcPOwAHDz4ABw9AAAcPQgAHD0UABw9HAAcPSQAHD0wABw9PAAcPUQAHD1MABw9VAAcPWAAHD1sABw9eAAcPZwAHD4AABw+FAAcPhwAHD4wABw+PAAcPkQAHD9oABw/+AAcQJQAHEEkABxBMAAcQTgAHEFAABxBSAAcQVAAHEFYABxBXAAcQWgAHEHMABxCYAAcQmgAHEJwABxCeAAcQoAAHEKIABxCkAAcQpgAHEKgABxCqAAcQzwAHENIABxDVAAcQ2AAHENsABxDeAAcQ4QAHEOQABxDnAAcQ6gAHEOwABxFnAAcRaQAHEWwABxFuAAcRcQAHEXIABxFzAAcRdAAHEXUABxF3AAcReQAHEXoABxF7AAcRfQAHEX4ABxGPAAcRkAAHEZIABxINAAcSDwAHEhEABxITAAcSFgAHEhcABxIYAAcSGQAHEhoABxIcAAcSHgAHEh8ABxIgAAcSIgAHEiMABxKeAAcSoAAHEqMABxKlAAcSqAAHEqkABxKqAAcSqwAHEqwABxKuAAcSsAAHErEABxKyAAcStAAHErUABxLGAAcSxwAHEskABxNEAAcTRgAHE0gABxNKAAcTTQAHE04ABxNPAAcTUAAHE1EABxNTAAcTVQAHE1YABxNXAAcTWQAHE1oABxPVAAcT1wAHE9oABxPcAAcT3wAHE+AABxPhAAcT4gAHE+MABxPlAAcT5wAHE+gABxPpAAcT6wAHE+wABxP9AAcT/gAHFAAABxR7AAcUfQAHFH8ABxSBAAcUhAAHFIUABxSGAAcUhwAHFIgABxSKAAcUjAAHFI0ABxSOAAcUkAAHFJEABxUMAAcVDgAHFREABxUTAAcVFgAHFRcABxUYAAcVGQAHFRoABxUcAAcVHgAHFR8ABxUgAAcVIgAHFSMABxU8AAcVPQAHFT4ABxVAAAcVuwAHFb0ABxW/AAcVwQAHFcQABxXFAAcVxgAHFccABxXIAAcVygAHFcwABxXNAAcVzgAHFdAABxXRAAcWTAAHFk4ABxZRAAcWUwAHFlYABxZXAAcWWAAHFlkABxZaAAcWXAAHFl4ABxZfAAcWYAAHFmIABxZjAAcWeQAHFpIABxanAAcWqgAHFq0ABxawAAcWswAHFrYABxbLAAcWzgAHFtEABxbUAAcW1wAHFtoABxbcAAcW9AAHFwIABxcaAAcXMAAHFzgABxfLAAcX7gAHGA4ABxguAAcYMAAHGDIABxg0AAcYNgAHGDkABxg6AAcYOwAHGD4ABxg/AAcYQQAHGEIABxhEAAcYRwAHGEgABxhJAAcYTAAHGE0ABxhSAAcYawAHGHQABxh2AAcYeAAHGIEABxiEAAcYhwAHGIkABxjSAAcY9gAHGR0ABxlBAAcZRAAHGUYABxlIAAcZSgAHGUwABxlOAAcZTwAHGVIABxlrAAcZjAAHGY4ABxmQAAcZkgAHGZQABxmWAAcZmAAHGZoABxmcAAcZvQAHGcAABxnDAAcZxgAHGckABxnMAAcZzwAHGdIABxnVAAcZ1wAHGlIABxpUAAcaVgAHGlgABxpbAAcaXAAHGl0ABxpeAAcaXwAHGmEABxpjAAcaZAAHGmUABxpnAAcaaAAHGuMABxrlAAca5wAHGukABxrsAAca7QAHGu4ABxrvAAca8AAHGvIABxr0AAca9QAHGvYABxr4AAca+QAHG3QABxt2AAcbeQAHG3sABxt+AAcbfwAHG4AABxuBAAcbggAHG4QABxuGAAcbhwAHG4gABxuKAAcbiwAHG6QABxulAAcbpgAHG6gABxwjAAccJQAHHCcABxwpAAccLAAHHC0ABxwuAAccLwAHHDAABxwyAAccNAAHHDUABxw2AAccOAAHHDkABxy0AAcctgAHHLgABxy6AAccvQAHHL4ABxy/AAccwAAHHMEABxzDAAccxQAHHMYABxzHAAccyQAHHMoABx1FAAcdRwAHHUkABx1LAAcdTgAHHU8ABx1QAAcdUQAHHVIABx1UAAcdVgAHHVcABx1YAAcdWgAHHVsABx3WAAcd2AAHHdoABx3cAAcd3wAHHeAABx3hAAcd4gAHHeMABx3lAAcd5wAHHegABx3pAAcd6wAHHewABx5nAAceaQAHHmsABx5tAAcecAAHHnEABx5yAAcecwAHHnQABx52AAceeAAHHnkABx56AAcefAAHHn0ABx7GAAce6gAHHxEABx81AAcfOAAHHzoABx88AAcfPgAHH0AABx9CAAcfQwAHH0YABx9fAAcffAAHH34ABx+AAAcfggAHH4QABx+GAAcfiAAHH4oABx+nAAcfqgAHH60ABx+wAAcfswAHH7YABx+5AAcfvAAHH74AByA5AAcgOwAHID0AByA/AAcgQgAHIEMAByBEAAcgRQAHIEYAByBIAAcgSgAHIEsAByBMAAcgTgAHIE8AByDKAAcgzAAHIM4AByDQAAcg0wAHINQAByDVAAcg1gAHINcAByDZAAcg2wAHINwAByDdAAcg3wAHIOAAByFbAAchXQAHIV8AByFhAAchZAAHIWUAByFmAAchZwAHIWgAByFqAAchbAAHIW0AByFuAAchcAAHIXEAByHsAAch7gAHIfEAByHzAAch9gAHIfcAByH4AAch+QAHIfoAByH8AAch/gAHIf8AByIAAAciAgAHIgMAByJ+AAcigAAHIoIAByKEAAcihwAHIogAByKJAAciigAHIosAByKNAAcijwAHIpAAByKRAAcikwAHIpQAByMPAAcjEQAHIxMAByMVAAcjGAAHIxkAByMaAAcjGwAHIxwAByMeAAcjIAAHIyEAByMiAAcjJAAHIyUAByOgAAcjogAHI6QAByOmAAcjqQAHI6oAByOrAAcjrAAHI60AByOvAAcjsQAHI7IAByOzAAcjtQAHI7YAByRJAAckbAAHJIwABySsAAckrgAHJLAABySyAAcktAAHJLcAByS4AAckuQAHJLwAByS9AAckvwAHJMAAByTCAAckxQAHJMYAByTHAAckygAHJMsAByTQAAck6QAHJPIAByT0AAck9gAHJP8AByUCAAclBQAHJQcAByVQAAcldAAHJZsAByW/AAclwgAHJcQAByXGAAclyAAHJcoAByXMAAclzQAHJdAAByXpAAcmCgAHJgwAByYOAAcmEAAHJhIAByYUAAcmFgAHJhgAByYaAAcmOwAHJj4AByZBAAcmRAAHJkcAByZKAAcmTQAHJlAAByZTAAcmVQAHJtAABybSAAcm1AAHJtYABybZAAcm2gAHJtsABybcAAcm3QAHJt8ABybhAAcm4gAHJuMAByblAAcm5gAHJ2EABydjAAcnZQAHJ2cABydqAAcnawAHJ2wABydtAAcnbgAHJ3AABydyAAcncwAHJ3QAByd2AAcndwAHJ/IAByf0AAcn9wAHJ/kAByf8AAcn/QAHJ/4AByf/AAcoAAAHKAIABygEAAcoBQAHKAYABygIAAcoCQAHKCIABygjAAcoJAAHKCYAByihAAcoowAHKKUAByinAAcoqgAHKKsAByisAAcorQAHKK4AByiwAAcosgAHKLMAByi0AAcotgAHKLcABykyAAcpNAAHKTYAByk4AAcpOwAHKTwAByk9AAcpPgAHKT8ABylBAAcpQwAHKUQABylFAAcpRwAHKUgABynDAAcpxQAHKccABynJAAcpzAAHKc0ABynOAAcpzwAHKdAABynSAAcp1AAHKdUABynWAAcp2AAHKdkABypUAAcqVgAHKlgABypaAAcqXQAHKl4ABypfAAcqYAAHKmEABypjAAcqZQAHKmYABypnAAcqaQAHKmoAByrlAAcq5wAHKukAByrrAAcq7gAHKu8AByrwAAcq8QAHKvIAByr0AAcq9gAHKvcAByr4AAcq+gAHKvsABytEAAcraAAHK48AByuzAAcrtgAHK7gAByu6AAcrvAAHK74AByvAAAcrwQAHK8QAByvdAAcr+gAHK/wAByv+AAcsAAAHLAIABywEAAcsBgAHLAgABywlAAcsKAAHLCsABywuAAcsMQAHLDQAByw3AAcsOgAHLDwAByy3AAcsuQAHLLsAByy9AAcswAAHLMEAByzCAAcswwAHLMQAByzGAAcsyAAHLMkAByzKAAcszAAHLM0ABy1IAActSgAHLUwABy1OAActUQAHLVIABy1TAActVAAHLVUABy1XAActWQAHLVoABy1bAActXQAHLV4ABy3ZAAct2wAHLd0ABy3fAAct4gAHLeMABy3kAAct5QAHLeYABy3oAAct6gAHLesABy3sAAct7gAHLe8ABy5qAAcubAAHLm8ABy5xAAcudAAHLnUABy52AAcudwAHLngABy56AAcufAAHLn0ABy5+AAcugAAHLoEABy78AAcu/gAHLwAABy8CAAcvBQAHLwYABy8HAAcvCAAHLwkABy8LAAcvDQAHLw4ABy8PAAcvEQAHLxIABy+NAAcvjwAHL5EABy+TAAcvlgAHL5cABy+YAAcvmQAHL5oABy+cAAcvngAHL58ABy+gAAcvogAHL6MABzAeAAcwIAAHMCIABzAkAAcwJwAHMCgABzApAAcwKgAHMCsABzAtAAcwLwAHMDAABzAxAAcwMwAHMDQABzDHAAcw6gAHMQoABzEqAAcxLAAHMS4ABzEwAAcxMgAHMTUABzE2AAcxNwAHMToABzE7AAcxPQAHMT4ABzFAAAcxQwAHMUQABzFFAAcxSAAHMUkABzFOAAcxZwAHMXAABzFyAAcxdAAHMX0ABzGAAAcxgwAHMYUABzHOAAcx8gAHMhkABzI9AAcyQAAHMkIABzJEAAcyRgAHMkgABzJKAAcySwAHMk4ABzJnAAcyiAAHMooABzKMAAcyjgAHMpAABzKSAAcylAAHMpYABzKYAAcyuQAHMrwABzK/AAcywgAHMsUABzLIAAcyywAHMs4ABzLRAAcy0wAHM04ABzNQAAczUgAHM1QABzNXAAczWAAHM1kABzNaAAczWwAHM10ABzNfAAczYAAHM2EABzNjAAczZAAHM98ABzPhAAcz4wAHM+UABzPoAAcz6QAHM+oABzPrAAcz7AAHM+4ABzPwAAcz8QAHM/IABzP0AAcz9QAHNHAABzRyAAc0dQAHNHcABzR6AAc0ewAHNHwABzR9AAc0fgAHNIAABzSCAAc0gwAHNIQABzSGAAc0hwAHNKAABzShAAc0ogAHNKQABzUfAAc1IQAHNSMABzUlAAc1KAAHNSkABzUqAAc1KwAHNSwABzUuAAc1MAAHNTEABzUyAAc1NAAHNTUABzWwAAc1sgAHNbQABzW2AAc1uQAHNboABzW7AAc1vAAHNb0ABzW/AAc1wQAHNcIABzXDAAc1xQAHNcYABzZBAAc2QwAHNkUABzZHAAc2SgAHNksABzZMAAc2TQAHNk4ABzZQAAc2UgAHNlMABzZUAAc2VgAHNlcABzbSAAc21AAHNtYABzbYAAc22wAHNtwABzbdAAc23gAHNt8ABzbhAAc24wAHNuQABzblAAc25wAHNugABzdjAAc3ZQAHN2cABzdpAAc3bAAHN20ABzduAAc3bwAHN3AABzdyAAc3dAAHN3UABzd2AAc3eAAHN3kABzfCAAc35gAHOA0ABzgxAAc4NAAHODYABzg4AAc4OgAHODwABzg+AAc4PwAHOEIABzhbAAc4eAAHOHoABzh8AAc4fgAHOIAABziCAAc4hAAHOIYABzijAAc4pgAHOKkABzisAAc4rwAHOLIABzi1AAc4uAAHOLoABzk1AAc5NwAHOTkABzk7AAc5PgAHOT8ABzlAAAc5QQAHOUIABzlEAAc5RgAHOUcABzlIAAc5SgAHOUsABznGAAc5yAAHOcoABznMAAc5zwAHOdAABznRAAc50gAHOdMABznVAAc51wAHOdgABznZAAc52wAHOdwABzpXAAc6WQAHOlsABzpdAAc6YAAHOmEABzpiAAc6YwAHOmQABzpmAAc6aAAHOmkABzpqAAc6bAAHOm0ABzroAAc66gAHOu0ABzrvAAc68gAHOvMABzr0AAc69QAHOvYABzr4AAc6+gAHOvsABzr8AAc6/gAHOv8ABzt6AAc7fAAHO34ABzuAAAc7gwAHO4QABzuFAAc7hgAHO4cABzuJAAc7iwAHO4wABzuNAAc7jwAHO5AABzwLAAc8DQAHPA8ABzwRAAc8FAAHPBUABzwWAAc8FwAHPBgABzwaAAc8HAAHPB0ABzweAAc8IAAHPCEABzycAAc8ngAHPKAABzyiAAc8pQAHPKYABzynAAc8qAAHPKkABzyrAAc8rQAHPK4ABzyvAAc8sQAHPLIABz1FAAc9aAAHPYgABz2oAAc9qgAHPawABz2uAAc9sAAHPbMABz20AAc9tQAHPbgABz25AAc9uwAHPbwABz2+AAc9wQAHPcIABz3DAAc9xgAHPccABz3MAAc95QAHPe4ABz3wAAc98gAHPfsABz3+AAc+AQAHPgMABz5MAAc+cAAHPpcABz67AAc+vgAHPsAABz7CAAc+xAAHPsYABz7IAAc+yQAHPswABz7lAAc/BgAHPwgABz8KAAc/DAAHPw4ABz8QAAc/EgAHPxQABz8WAAc/NwAHPzoABz89AAc/QAAHP0MABz9GAAc/SQAHP0wABz9PAAc/UQAHP8wABz/OAAc/0AAHP9IABz/VAAc/1gAHP9cABz/YAAc/2QAHP9sABz/dAAc/3gAHP98ABz/hAAc/4gAHQF0AB0BfAAdAYQAHQGMAB0BmAAdAZwAHQGgAB0BpAAdAagAHQGwAB0BuAAdAbwAHQHAAB0ByAAdAcwAHQO4AB0DwAAdA8wAHQPUAB0D4AAdA+QAHQPoAB0D7AAdA/AAHQP4AB0EAAAdBAQAHQQIAB0EEAAdBBQAHQR4AB0EfAAdBIAAHQSIAB0GdAAdBnwAHQaEAB0GjAAdBpgAHQacAB0GoAAdBqQAHQaoAB0GsAAdBrgAHQa8AB0GwAAdBsgAHQbMAB0IuAAdCMAAHQjIAB0I0AAdCNwAHQjgAB0I5AAdCOgAHQjsAB0I9AAdCPwAHQkAAB0JBAAdCQwAHQkQAB0K/AAdCwQAHQsMAB0LFAAdCyAAHQskAB0LKAAdCywAHQswAB0LOAAdC0AAHQtEAB0LSAAdC1AAHQtUAB0NQAAdDUgAHQ1QAB0NWAAdDWQAHQ1oAB0NbAAdDXAAHQ10AB0NfAAdDYQAHQ2IAB0NjAAdDZQAHQ2YAB0PhAAdD4wAHQ+UAB0PnAAdD6gAHQ+sAB0PsAAdD7QAHQ+4AB0PwAAdD8gAHQ/MAB0P0AAdD9gAHQ/cAB0RAAAdEZAAHRIsAB0SvAAdEsgAHRLQAB0S2AAdEuAAHRLoAB0S8AAdEvQAHRMAAB0TZAAdE9gAHRPgAB0T6AAdE/AAHRP4AB0UAAAdFAgAHRQQAB0UhAAdFJAAHRScAB0UqAAdFLQAHRTAAB0UzAAdFNgAHRTgAB0WzAAdFtQAHRbcAB0W5AAdFvAAHRb0AB0W+AAdFvwAHRcAAB0XCAAdFxAAHRcUAB0XGAAdFyAAHRckAB0ZEAAdGRgAHRkgAB0ZKAAdGTQAHRk4AB0ZPAAdGUAAHRlEAB0ZTAAdGVQAHRlYAB0ZXAAdGWQAHRloAB0bVAAdG1wAHRtkAB0bbAAdG3gAHRt8AB0bgAAdG4QAHRuIAB0bkAAdG5gAHRucAB0boAAdG6gAHRusAB0dmAAdHaAAHR2sAB0dtAAdHcAAHR3EAB0dyAAdHcwAHR3QAB0d2AAdHeAAHR3kAB0d6AAdHfAAHR30AB0f4AAdH+gAHR/wAB0f+AAdIAQAHSAIAB0gDAAdIBAAHSAUAB0gHAAdICQAHSAoAB0gLAAdIDQAHSA4AB0iJAAdIiwAHSI0AB0iPAAdIkgAHSJMAB0iUAAdIlQAHSJYAB0iYAAdImgAHSJsAB0icAAdIngAHSJ8AB0kaAAdJHAAHSR4AB0kgAAdJIwAHSSQAB0klAAdJJgAHSScAB0kpAAdJKwAHSSwAB0ktAAdJLwAHSTAAB0nDAAdJ5gAHSgYAB0omAAdKKAAHSioAB0osAAdKLgAHSjEAB0oyAAdKMwAHSjYAB0o3AAdKOQAHSjoAB0o8AAdKPwAHSkAAB0pBAAdKRAAHSkUAB0pKAAdKYwAHSmwAB0puAAdKcAAHSnkAB0p8AAdKfwAHSoEAB0rKAAdK7gAHSxUAB0s5AAdLPAAHSz4AB0tAAAdLQgAHS0QAB0tGAAdLRwAHS0oAB0tjAAdLhAAHS4YAB0uIAAdLigAHS4wAB0uOAAdLkAAHS5IAB0uUAAdLtQAHS7gAB0u7AAdLvgAHS8EAB0vEAAdLxwAHS8oAB0vNAAdLzwAHTEoAB0xMAAdMTgAHTFAAB0xTAAdMVAAHTFUAB0xWAAdMVwAHTFkAB0xbAAdMXAAHTF0AB0xfAAdMYAAHTNsAB0zdAAdM3wAHTOEAB0zkAAdM5QAHTOYAB0znAAdM6AAHTOoAB0zsAAdM7QAHTO4AB0zwAAdM8QAHTWwAB01uAAdNcQAHTXMAB012AAdNdwAHTXgAB015AAdNegAHTXwAB01+AAdNfwAHTYAAB02CAAdNgwAHTZwAB02dAAdNngAHTaAAB04bAAdOHQAHTh8AB04hAAdOJAAHTiUAB04mAAdOJwAHTigAB04qAAdOLAAHTi0AB04uAAdOMAAHTjEAB06sAAdOrgAHTrAAB06yAAdOtQAHTrYAB063AAdOuAAHTrkAB067AAdOvQAHTr4AB06/AAdOwQAHTsIAB089AAdPPwAHT0EAB09DAAdPRgAHT0cAB09IAAdPSQAHT0oAB09MAAdPTgAHT08AB09QAAdPUgAHT1MAB0/OAAdP0AAHT9IAB0/UAAdP1wAHT9gAB0/ZAAdP2gAHT9sAB0/dAAdP3wAHT+AAB0/hAAdP4wAHT+QAB1BfAAdQYQAHUGMAB1BlAAdQaAAHUGkAB1BqAAdQawAHUGwAB1BuAAdQcAAHUHEAB1ByAAdQdAAHUHUAB1C+AAdQ4gAHUQkAB1EtAAdRMAAHUTIAB1E0AAdRNgAHUTgAB1E6AAdROwAHUT4AB1FXAAdRdAAHUXYAB1F4AAdRegAHUXwAB1F+AAdRgAAHUYIAB1GfAAdRogAHUaUAB1GoAAdRqwAHUa4AB1GxAAdRtAAHUbYAB1IxAAdSMwAHUjUAB1I3AAdSOgAHUjsAB1I8AAdSPQAHUj4AB1JAAAdSQgAHUkMAB1JEAAdSRgAHUkcAB1LCAAdSxAAHUsYAB1LIAAdSywAHUswAB1LNAAdSzgAHUs8AB1LRAAdS0wAHUtQAB1LVAAdS1wAHUtgAB1NTAAdTVQAHU1gAB1NaAAdTXQAHU14AB1NfAAdTYAAHU2EAB1NjAAdTZQAHU2YAB1NnAAdTaQAHU2oAB1NtAAdT6AAHU+oAB1PsAAdT7gAHU/EAB1PyAAdT8wAHU/QAB1P1AAdT9wAHU/kAB1P6AAdT+wAHU/0AB1P+AAdUeQAHVHsAB1R9AAdUfwAHVIIAB1SDAAdUhAAHVIUAB1SGAAdUiAAHVIoAB1SLAAdUjAAHVI4AB1SPAAdVCgAHVQwAB1UOAAdVEAAHVRMAB1UUAAdVFQAHVRYAB1UXAAdVGQAHVRsAB1UcAAdVHQAHVR8AB1UgAAdVmwAHVZ0AB1WfAAdVoQAHVaQAB1WlAAdVpgAHVacAB1WoAAdVqgAHVawAB1WtAAdVrgAHVbAAB1WxAAdVwgAHVcMAB1XFAAdV1gAHVeMAB1XmAAdV6QAHVewAB1XuAAdWJwAHVioAB1YsAAdWLwAHVjIAB1Y1AAdWOAAHVrsAB1bfAAdXAwAHVyYAB1dNAAdXbQAHV5QAB1e7AAdX2wAHV/8AB1gjAAdYJQAHWCgAB1gqAAdYLAAHWC4AB1gxAAdYNAAHWDYAB1g4AAdYOwAHWD0AB1g/AAdYQgAHWEUAB1hGAAdYTwAHWGgAB1htAAdYbwAHWHQAB1h3AAdYeQAHWMIAB1jmAAdZDQAHWTEAB1k0AAdZNgAHWTgAB1k6AAdZPAAHWT4AB1k/AAdZQgAHWVsAB1mAAAdZggAHWYQAB1mGAAdZiAAHWYoAB1mMAAdZjgAHWZAAB1mSAAdZtwAHWboAB1m9AAdZwAAHWcMAB1nGAAdZyQAHWcwAB1nPAAdZ0gAHWdQAB1pPAAdaUQAHWlQAB1pWAAdaWQAHWloAB1pbAAdaXAAHWl0AB1pfAAdaYQAHWmIAB1pjAAdaZQAHWmYAB1p3AAdaeAAHWnoAB1r1AAda9wAHWvkAB1r7AAda/gAHWv8AB1sAAAdbAQAHWwIAB1sEAAdbBgAHWwcAB1sIAAdbCgAHWwsAB1uGAAdbiAAHW4sAB1uNAAdbkAAHW5EAB1uSAAdbkwAHW5QAB1uWAAdbmAAHW5kAB1uaAAdbnAAHW50AB1uuAAdbrwAHW7EAB1wsAAdcLgAHXDAAB1wyAAdcNQAHXDYAB1w3AAdcOAAHXDkAB1w7AAdcPQAHXD4AB1w/AAdcQQAHXEIAB1y9AAdcvwAHXMIAB1zEAAdcxwAHXMgAB1zJAAdcygAHXMsAB1zNAAdczwAHXNAAB1zRAAdc0wAHXNQAB1zlAAdc5gAHXOgAB11jAAddZQAHXWcAB11pAAddbAAHXW0AB11uAAddbwAHXXAAB11yAAdddAAHXXUAB112AAddeAAHXXkAB130AAdd9gAHXfkAB137AAdd/gAHXf8AB14AAAdeAQAHXgIAB14EAAdeBgAHXgcAB14IAAdeCgAHXgsAB14kAAdeJQAHXiYAB14oAAdeowAHXqUAB16nAAdeqQAHXqwAB16tAAdergAHXq8AB16wAAdesgAHXrQAB161AAdetgAHXrgAB165AAdfNAAHXzYAB185AAdfOwAHXz4AB18/AAdfQAAHX0EAB19CAAdfRAAHX0YAB19HAAdfSAAHX0oAB19LAAdfZwAHX4AAB1+FAAdfiAAHX40AB1+QAAdfkgAHX6YAB2A5AAdgXAAHYHwAB2CcAAdgngAHYKAAB2CiAAdgpAAHYKcAB2CoAAdgqQAHYKwAB2CtAAdgrwAHYLAAB2CzAAdgtgAHYLcAB2C4AAdguwAHYLwAB2DBAAdg2gAHYOMAB2DlAAdg6AAHYPEAB2D0AAdg9wAHYPkAB2FCAAdhZgAHYY0AB2GxAAdhtAAHYbYAB2G4AAdhugAHYbwAB2G+AAdhvwAHYcIAB2HbAAdh/AAHYf4AB2IAAAdiAgAHYgQAB2IGAAdiCAAHYgoAB2IMAAdiLQAHYjAAB2IzAAdiNgAHYjkAB2I8AAdiPwAHYkIAB2JFAAdiRwAHYsIAB2LEAAdixgAHYsgAB2LLAAdizAAHYs0AB2LOAAdizwAHYtEAB2LTAAdi1AAHYtUAB2LXAAdi2AAHY1MAB2NVAAdjVwAHY1kAB2NcAAdjXQAHY14AB2NfAAdjYAAHY2IAB2NkAAdjZQAHY2YAB2NoAAdjaQAHY+QAB2PmAAdj6QAHY+sAB2PuAAdj7wAHY/AAB2PxAAdj8gAHY/QAB2P2AAdj9wAHY/gAB2P6AAdj+wAHZBQAB2QVAAdkFgAHZBgAB2STAAdklQAHZJcAB2SZAAdknAAHZJ0AB2SeAAdknwAHZKAAB2SiAAdkpAAHZKUAB2SmAAdkqAAHZKkAB2UkAAdlJgAHZSgAB2UqAAdlLQAHZS4AB2UvAAdlMAAHZTEAB2UzAAdlNQAHZTYAB2U3AAdlOQAHZToAB2W1AAdltwAHZbkAB2W7AAdlvgAHZb8AB2XAAAdlwQAHZcIAB2XEAAdlxgAHZccAB2XIAAdlygAHZcsAB2ZGAAdmSAAHZkoAB2ZMAAdmTwAHZlAAB2ZRAAdmUgAHZlMAB2ZVAAdmVwAHZlgAB2ZZAAdmWwAHZlwAB2bXAAdm2QAHZtsAB2bdAAdm4AAHZuEAB2biAAdm4wAHZuQAB2bmAAdm6AAHZukAB2bqAAdm7AAHZu0AB2c2AAdnWgAHZ4EAB2elAAdnqAAHZ6sAB2etAAdnrwAHZ7EAB2ezAAdntAAHZ7cAB2fQAAdn7QAHZ/AAB2fzAAdn9gAHZ/kAB2f8AAdn/wAHaAIAB2gfAAdoIgAHaCUAB2goAAdoKwAHaC4AB2gxAAdoNAAHaDYAB2ixAAdoswAHaLYAB2i4AAdouwAHaLwAB2i9AAdovgAHaL8AB2jBAAdoxAAHaMUAB2jGAAdoyAAHaMkAB2lEAAdpRgAHaUkAB2lLAAdpTgAHaU8AB2lQAAdpUQAHaVIAB2lUAAdpVwAHaVgAB2lZAAdpWwAHaVwAB2nXAAdp2QAHadwAB2neAAdp4QAHaeIAB2njAAdp5AAHaeUAB2nnAAdp6gAHaesAB2nsAAdp7gAHae8AB2pqAAdqbAAHam8AB2pxAAdqdAAHanUAB2p2AAdqdwAHangAB2p6AAdqfQAHan4AB2p/AAdqgQAHaoIAB2sFAAdrKQAHa00AB2twAAdrlwAHa7cAB2veAAdsBQAHbCUAB2xJAAdsbQAHbG8AB2xyAAdsdAAHbHYAB2x4AAdsewAHbH4AB2yAAAdsggAHbIUAB2yHAAdsiQAHbIwAB2yPAAdskAAHbJkAB2yyAAdstwAHbLkAB2y+AAdswQAHbMMAB20MAAdtMAAHbVcAB217AAdtfgAHbYAAB22CAAdthAAHbYYAB22IAAdtiQAHbYwAB22lAAdtygAHbcwAB23OAAdt0AAHbdIAB23UAAdt1gAHbdgAB23aAAdt3AAHbgEAB24EAAduBwAHbgoAB24NAAduEAAHbhMAB24WAAduGQAHbhwAB24eAAdumQAHbpsAB26eAAduoAAHbqMAB26kAAdupQAHbqYAB26nAAduqQAHbqsAB26sAAdurQAHbq8AB26wAAduwQAHbsIAB27EAAdvPwAHb0EAB29DAAdvRQAHb0gAB29JAAdvSgAHb0sAB29MAAdvTgAHb1AAB29RAAdvUgAHb1QAB29VAAdv0AAHb9IAB2/VAAdv1wAHb9oAB2/bAAdv3AAHb90AB2/eAAdv4AAHb+IAB2/jAAdv5AAHb+YAB2/nAAdv+AAHb/kAB2/7AAdwdgAHcHgAB3B6AAdwfAAHcH8AB3CAAAdwgQAHcIIAB3CDAAdwhQAHcIcAB3CIAAdwiQAHcIsAB3CMAAdxBwAHcQkAB3EMAAdxDgAHcREAB3ESAAdxEwAHcRQAB3EVAAdxFwAHcRkAB3EaAAdxGwAHcR0AB3EeAAdxLwAHcTAAB3EyAAdxrQAHca8AB3GxAAdxswAHcbYAB3G3AAdxuAAHcbkAB3G6AAdxvAAHcb4AB3G/AAdxwAAHccIAB3HDAAdyPgAHckAAB3JDAAdyRQAHckgAB3JJAAdySgAHcksAB3JMAAdyTgAHclAAB3JRAAdyUgAHclQAB3JVAAdybgAHcm8AB3JwAAdycgAHcu0AB3LvAAdy8QAHcvMAB3L2AAdy9wAHcvgAB3L5AAdy+gAHcvwAB3L+AAdy/wAHcwAAB3MCAAdzAwAHc34AB3OAAAdzgwAHc4UAB3OIAAdziQAHc4oAB3OLAAdzjAAHc44AB3OQAAdzkQAHc5IAB3OUAAdzlQAHc6kAB3PCAAdzxwAHc8oAB3PPAAdz0gAHc9QAB3PiAAd0dQAHdJgAB3S4AAd02AAHdNoAB3TcAAd03gAHdOAAB3TjAAd05AAHdOUAB3ToAAd06QAHdOsAB3TsAAd07wAHdPIAB3TzAAd09AAHdPcAB3T4AAd0/QAHdRYAB3UfAAd1IQAHdSQAB3UtAAd1MAAHdTMAB3U1AAd1fgAHdaIAB3XJAAd17QAHdfAAB3XyAAd19AAHdfYAB3X4AAd1+gAHdfsAB3X+AAd2FwAHdjgAB3Y6AAd2PAAHdj4AB3ZAAAd2QgAHdkQAB3ZGAAd2SAAHdmkAB3ZsAAd2bwAHdnIAB3Z1AAd2eAAHdnsAB3Z+AAd2gQAHdoMAB3b+AAd3AAAHdwIAB3cEAAd3BwAHdwgAB3cJAAd3CgAHdwsAB3cNAAd3DwAHdxAAB3cRAAd3EwAHdxQAB3ePAAd3kQAHd5MAB3eVAAd3mAAHd5kAB3eaAAd3mwAHd5wAB3eeAAd3oAAHd6EAB3eiAAd3pAAHd6UAB3ggAAd4IgAHeCUAB3gnAAd4KgAHeCsAB3gsAAd4LQAHeC4AB3gwAAd4MgAHeDMAB3g0AAd4NgAHeDcAB3hQAAd4UQAHeFIAB3hUAAd4zwAHeNEAB3jTAAd41QAHeNgAB3jZAAd42gAHeNsAB3jcAAd43gAHeOAAB3jhAAd44gAHeOQAB3jlAAd5YAAHeWIAB3lkAAd5ZgAHeWkAB3lqAAd5awAHeWwAB3ltAAd5bwAHeXEAB3lyAAd5cwAHeXUAB3l2AAd58QAHefMAB3n1AAd59wAHefoAB3n7AAd5/AAHef0AB3n+AAd6AAAHegIAB3oDAAd6BAAHegYAB3oHAAd6ggAHeoQAB3qGAAd6iAAHeosAB3qMAAd6jQAHeo4AB3qPAAd6kQAHepMAB3qUAAd6lQAHepcAB3qYAAd7EwAHexUAB3sXAAd7GQAHexwAB3sdAAd7HgAHex8AB3sgAAd7IgAHeyQAB3slAAd7JgAHeygAB3spAAd7cgAHe5YAB3u9AAd74QAHe+QAB3vnAAd76QAHe+sAB3vtAAd77wAHe/AAB3vzAAd8DAAHfCkAB3wsAAd8LwAHfDIAB3w1AAd8OAAHfDsAB3w+AAd8WwAHfF4AB3xhAAd8ZAAHfGcAB3xqAAd8bQAHfHAAB3xyAAd87QAHfO8AB3zyAAd89AAHfPcAB3z4AAd8+QAHfPoAB3z7AAd8/QAHfQAAB30BAAd9AgAHfQQAB30FAAd9gAAHfYIAB32FAAd9hwAHfYoAB32LAAd9jAAHfY0AB32OAAd9kAAHfZMAB32UAAd9lQAHfZcAB32YAAd+EwAHfhUAB34YAAd+GgAHfh0AB34eAAd+HwAHfiAAB34hAAd+IwAHfiYAB34nAAd+KAAHfioAB34rAAd+pgAHfqgAB36rAAd+rQAHfrAAB36xAAd+sgAHfrMAB360AAd+tgAHfrkAB366AAd+uwAHfr0AB36+AAd/OQAHfzsAB389AAd/PwAHf0IAB39DAAd/RAAHf0UAB39GAAd/SAAHf0sAB39MAAd/TQAHf08AB39QAAd/ywAHf80AB3/PAAd/0QAHf9QAB3/VAAd/1gAHf9cAB3/YAAd/2gAHf90AB3/eAAd/3wAHf+EAB3/iAAeAXQAHgF8AB4BiAAeAZAAHgGcAB4BoAAeAaQAHgGoAB4BrAAeAbQAHgHAAB4BxAAeAcgAHgHQAB4B1AAeAhgAHgIsAB4COAAeAkAAHgMkAB4DMAAeAzgAHgNEAB4DUAAeA1wAHgNoAB4DfAAeA8AAHgQkAB4EaAAeBMwAHgUoAB4FcAAeB1wAHgdkAB4HbAAeB3QAHgeAAB4HhAAeB4gAHgeMAB4HkAAeB5gAHgekAB4HqAAeB6wAHge0AB4HuAAeCaQAHgmsAB4JtAAeCbwAHgnIAB4JzAAeCdAAHgnUAB4J2AAeCeAAHgnsAB4J8AAeCfQAHgn8AB4KAAAeC+wAHgv0AB4MAAAeDAgAHgwUAB4MGAAeDBwAHgwgAB4MJAAeDCwAHgw4AB4MPAAeDEAAHgxIAB4MTAAeDJAAHgykAB4MsAAeDLgAHgzMAB4NsAAeDbwAHg3EAB4N0AAeDdwAHg3oAB4N9AAeEAAAHhCQAB4RIAAeEawAHhJIAB4SyAAeE2QAHhQAAB4UgAAeFRAAHhWgAB4VqAAeFbQAHhW8AB4VxAAeFcwAHhXYAB4V5AAeFewAHhX0AB4WAAAeFggAHhYQAB4WHAAeFigAHhYsAB4WQAAeFqQAHha4AB4WwAAeFtQAHhbgAB4W6AAeGAwAHhicAB4ZOAAeGcgAHhnUAB4Z3AAeGeQAHhnsAB4Z9AAeGfwAHhoAAB4aDAAeGnAAHhsEAB4bDAAeGxQAHhscAB4bJAAeGywAHhs0AB4bPAAeG0QAHhtMAB4b4AAeG+wAHhv4AB4cBAAeHBAAHhwcAB4cKAAeHDQAHhxAAB4cTAAeHFQAHh5AAB4eSAAeHlQAHh5cAB4eaAAeHmwAHh5wAB4edAAeHngAHh6AAB4eiAAeHowAHh6QAB4emAAeHpwAHh7gAB4e5AAeHuwAHiDYAB4g4AAeIOgAHiDwAB4g/AAeIQAAHiEEAB4hCAAeIQwAHiEUAB4hHAAeISAAHiEkAB4hLAAeITAAHiMcAB4jJAAeIzAAHiM4AB4jRAAeI0gAHiNMAB4jUAAeI1QAHiNcAB4jZAAeI2gAHiNsAB4jdAAeI3gAHiO8AB4jwAAeI8gAHiW0AB4lvAAeJcQAHiXMAB4l2AAeJdwAHiXgAB4l5AAeJegAHiXwAB4l+AAeJfwAHiYAAB4mCAAeJgwAHif4AB4oAAAeKAwAHigUAB4oIAAeKCQAHigoAB4oLAAeKDAAHig4AB4oQAAeKEQAHihIAB4oUAAeKFQAHiiYAB4onAAeKKQAHiqQAB4qmAAeKqAAHiqoAB4qtAAeKrgAHiq8AB4qwAAeKsQAHirMAB4q1AAeKtgAHircAB4q5AAeKugAHizUAB4s3AAeLOgAHizwAB4s/AAeLQAAHi0EAB4tCAAeLQwAHi0UAB4tHAAeLSAAHi0kAB4tLAAeLTAAHi2UAB4tmAAeLZwAHi2kAB4vkAAeL5gAHi+gAB4vqAAeL7QAHi+4AB4vvAAeL8AAHi/EAB4vzAAeL9QAHi/YAB4v3AAeL+QAHi/oAB4x1AAeMdwAHjHoAB4x8AAeMfwAHjIAAB4yBAAeMggAHjIMAB4yFAAeMhwAHjIgAB4yJAAeMiwAHjIwAB4ypAAeMwgAHjMcAB4zKAAeMzwAHjNIAB4zUAAeM6QAHjXwAB42fAAeNvwAHjd8AB43hAAeN4wAHjeUAB43nAAeN6gAHjesAB43sAAeN7wAHjfAAB43yAAeN8wAHjfYAB435AAeN+gAHjfsAB43+AAeN/wAHjgQAB44dAAeOJgAHjigAB44rAAeONAAHjjcAB446AAeOPAAHjoUAB46pAAeO0AAHjvQAB473AAeO+QAHjvsAB479AAeO/wAHjwEAB48CAAePBQAHjx4AB48/AAePQQAHj0MAB49FAAePRwAHj0kAB49LAAePTQAHj08AB49wAAePcwAHj3YAB495AAePfAAHj38AB4+CAAePhQAHj4gAB4+KAAeQBQAHkAcAB5AJAAeQCwAHkA4AB5APAAeQEAAHkBEAB5ASAAeQFAAHkBYAB5AXAAeQGAAHkBoAB5AbAAeQlgAHkJgAB5CaAAeQnAAHkJ8AB5CgAAeQoQAHkKIAB5CjAAeQpQAHkKcAB5CoAAeQqQAHkKsAB5CsAAeRJwAHkSkAB5EsAAeRLgAHkTEAB5EyAAeRMwAHkTQAB5E1AAeRNwAHkTkAB5E6AAeROwAHkT0AB5E+AAeRVwAHkVgAB5FZAAeRWwAHkdYAB5HYAAeR2gAHkdwAB5HfAAeR4AAHkeEAB5HiAAeR4wAHkeUAB5HnAAeR6AAHkekAB5HrAAeR7AAHkmcAB5JpAAeSawAHkm0AB5JwAAeScQAHknIAB5JzAAeSdAAHknYAB5J4AAeSeQAHknoAB5J8AAeSfQAHkvgAB5L6AAeS/AAHkv4AB5MBAAeTAgAHkwMAB5MEAAeTBQAHkwcAB5MJAAeTCgAHkwsAB5MNAAeTDgAHk4kAB5OLAAeTjQAHk48AB5OSAAeTkwAHk5QAB5OVAAeTlgAHk5gAB5OaAAeTmwAHk5wAB5OeAAeTnwAHlBoAB5QcAAeUHgAHlCAAB5QjAAeUJAAHlCUAB5QmAAeUJwAHlCkAB5QrAAeULAAHlC0AB5QvAAeUMAAHlHkAB5SdAAeUxAAHlOgAB5TrAAeU7gAHlPAAB5TyAAeU9AAHlPYAB5T3AAeU+gAHlRMAB5UwAAeVMwAHlTYAB5U5AAeVPAAHlT8AB5VCAAeVRQAHlWIAB5VlAAeVaAAHlWsAB5VuAAeVcQAHlXQAB5V3AAeVeQAHlfQAB5X2AAeV+QAHlfsAB5X+AAeV/wAHlgAAB5YBAAeWAgAHlgQAB5YHAAeWCAAHlgkAB5YLAAeWDAAHlocAB5aJAAeWjAAHlo4AB5aRAAeWkgAHlpMAB5aUAAeWlQAHlpcAB5aaAAeWmwAHlpwAB5aeAAeWnwAHlxoAB5ccAAeXHwAHlyEAB5ckAAeXJQAHlyYAB5cnAAeXKAAHlyoAB5ctAAeXLgAHly8AB5cxAAeXMgAHl60AB5evAAeXsgAHl7QAB5e3AAeXuAAHl7kAB5e6AAeXuwAHl70AB5fAAAeXwQAHl8IAB5fEAAeXxQAHmEgAB5hsAAeYkAAHmLMAB5jaAAeY+gAHmSEAB5lIAAeZaAAHmYwAB5mwAAeZsgAHmbUAB5m3AAeZuQAHmbsAB5m+AAeZwQAHmcMAB5nFAAeZyAAHmcoAB5nMAAeZzwAHmdIAB5nTAAeZ3AAHmfUAB5n6AAeZ/AAHmgEAB5oEAAeaBgAHmk8AB5pzAAeamgAHmr4AB5rBAAeawwAHmsUAB5rHAAeayQAHmssAB5rMAAeazwAHmugAB5sNAAebDwAHmxEAB5sTAAebFQAHmxcAB5sZAAebGwAHmx0AB5sfAAebRAAHm0cAB5tKAAebTQAHm1AAB5tTAAebVgAHm1kAB5tcAAebXwAHm2EAB5vcAAeb3gAHm+EAB5vjAAeb5gAHm+cAB5voAAeb6QAHm+oAB5vsAAeb7gAHm+8AB5vwAAeb8gAHm/MAB5wEAAecBQAHnAcAB5yCAAechAAHnIYAB5yIAAeciwAHnIwAB5yNAAecjgAHnI8AB5yRAAeckwAHnJQAB5yVAAeclwAHnJgAB50TAAedFQAHnRgAB50aAAedHQAHnR4AB50fAAedIAAHnSEAB50jAAedJQAHnSYAB50nAAedKQAHnSoAB507AAedPAAHnT4AB525AAeduwAHnb0AB52/AAedwgAHncMAB53EAAedxQAHncYAB53IAAedygAHncsAB53MAAedzgAHnc8AB55KAAeeTAAHnk8AB55RAAeeVAAHnlUAB55WAAeeVwAHnlgAB55aAAeeXAAHnl0AB55eAAeeYAAHnmEAB55yAAeecwAHnnUAB57wAAee8gAHnvQAB572AAee+QAHnvoAB577AAee/AAHnv0AB57/AAefAQAHnwIAB58DAAefBQAHnwYAB5+BAAefgwAHn4YAB5+IAAefiwAHn4wAB5+NAAefjgAHn48AB5+RAAefkwAHn5QAB5+VAAeflwAHn5gAB5+xAAefsgAHn7MAB5+1AAegMAAHoDIAB6A0AAegNgAHoDkAB6A6AAegOwAHoDwAB6A9AAegPwAHoEEAB6BCAAegQwAHoEUAB6BGAAegwQAHoMMAB6DGAAegyAAHoMsAB6DMAAegzQAHoM4AB6DPAAeg0QAHoNMAB6DUAAeg1QAHoNcAB6DYAAeg7QAHoQYAB6EPAAehEgAHoRUAB6EeAAehIQAHoSQAB6EmAAehMQAHoUAAB6HTAAeh9gAHohYAB6I2AAeiOAAHojoAB6I8AAeiPgAHokEAB6JCAAeiQwAHokYAB6JHAAeiSQAHokoAB6JNAAeiUAAHolEAB6JSAAeiVQAHolYAB6JfAAeieAAHooEAB6KDAAeihgAHoo8AB6KSAAeilQAHopcAB6LgAAejBAAHoysAB6NPAAejUgAHo1QAB6NWAAejWAAHo1oAB6NcAAejXQAHo2AAB6N5AAejmgAHo5wAB6OeAAejoAAHo6IAB6OkAAejpgAHo6gAB6OqAAejywAHo84AB6PRAAej1AAHo9cAB6PaAAej3QAHo+AAB6PjAAej5QAHpGAAB6RiAAekZAAHpGYAB6RpAAekagAHpGsAB6RsAAekbQAHpG8AB6RxAAekcgAHpHMAB6R1AAekdgAHpPEAB6TzAAek9QAHpPcAB6T6AAek+wAHpPwAB6T9AAek/gAHpQAAB6UCAAelAwAHpQQAB6UGAAelBwAHpYIAB6WEAAelhwAHpYkAB6WMAAeljQAHpY4AB6WPAAelkAAHpZIAB6WUAAellQAHpZYAB6WYAAelmQAHpbIAB6WzAAeltAAHpbYAB6YxAAemMwAHpjUAB6Y3AAemOgAHpjsAB6Y8AAemPQAHpj4AB6ZAAAemQgAHpkMAB6ZEAAemRgAHpkcAB6bCAAemxAAHpsYAB6bIAAemywAHpswAB6bNAAemzgAHps8AB6bRAAem0wAHptQAB6bVAAem1wAHptgAB6dTAAenVQAHp1cAB6dZAAenXAAHp10AB6deAAenXwAHp2AAB6diAAenZAAHp2UAB6dmAAenaAAHp2kAB6fkAAen5gAHp+gAB6fqAAen7QAHp+4AB6fvAAen8AAHp/EAB6fzAAen9QAHp/YAB6f3AAen+QAHp/oAB6h1AAeodwAHqHkAB6h7AAeofgAHqH8AB6iAAAeogQAHqIIAB6iEAAeohgAHqIcAB6iIAAeoigAHqIsAB6jUAAeo+AAHqR8AB6lDAAepRgAHqUkAB6lLAAepTQAHqU8AB6lRAAepUgAHqVUAB6luAAepiwAHqY4AB6mRAAeplAAHqZcAB6maAAepnQAHqaAAB6m9AAepwAAHqcMAB6nGAAepyQAHqcwAB6nPAAep0gAHqdQAB6pPAAeqUQAHqlQAB6pWAAeqWQAHqloAB6pbAAeqXAAHql0AB6pfAAeqYgAHqmMAB6pkAAeqZgAHqmcAB6riAAeq5AAHqucAB6rpAAeq7AAHqu0AB6ruAAeq7wAHqvAAB6ryAAeq9QAHqvYAB6r3AAeq+QAHqvoAB6t1AAerdwAHq3oAB6t8AAerfwAHq4AAB6uBAAerggAHq4MAB6uFAAeriAAHq4kAB6uKAAerjAAHq40AB6wIAAesCgAHrA0AB6wPAAesEgAHrBMAB6wUAAesFQAHrBYAB6wYAAesGwAHrBwAB6wdAAesHwAHrCAAB6ybAAesnQAHrJ8AB6yhAAespAAHrKUAB6ymAAespwAHrKgAB6yqAAesrQAHrK4AB6yvAAessQAHrLIAB60tAAetLwAHrTEAB60zAAetNgAHrTcAB604AAetOQAHrToAB608AAetPwAHrUAAB61BAAetQwAHrUQAB62/AAetwQAHrcQAB63GAAetyQAHrcoAB63LAAetzAAHrc0AB63PAAet0gAHrdMAB63UAAet1gAHrdcAB65qAAeujQAHrq0AB67NAAeuzwAHrtEAB67TAAeu1QAHrtgAB67ZAAeu2gAHrt0AB67eAAeu4AAHruEAB67kAAeu5wAHrugAB67pAAeu7AAHru0AB67yAAevCwAHrxQAB68WAAevGQAHryIAB68lAAevKAAHryoAB69zAAevlwAHr74AB6/iAAev5QAHr+cAB6/pAAev6wAHr+0AB6/vAAev8AAHr/MAB7AMAAewLQAHsC8AB7AxAAewMwAHsDUAB7A3AAewOQAHsDsAB7A9AAewXgAHsGEAB7BkAAewZwAHsGoAB7BtAAewcAAHsHMAB7B2AAeweAAHsPMAB7D1AAew9wAHsPkAB7D8AAew/QAHsP4AB7D/AAexAAAHsQIAB7EEAAexBQAHsQYAB7EIAAexCQAHsYQAB7GGAAexiAAHsYoAB7GNAAexjgAHsY8AB7GQAAexkQAHsZMAB7GVAAexlgAHsZcAB7GZAAexmgAHshUAB7IXAAeyGgAHshwAB7IfAAeyIAAHsiEAB7IiAAeyIwAHsiUAB7InAAeyKAAHsikAB7IrAAeyLAAHskUAB7JGAAeyRwAHskkAB7LEAAeyxgAHssgAB7LKAAeyzQAHss4AB7LPAAey0AAHstEAB7LTAAey1QAHstYAB7LXAAey2QAHstoAB7NVAAezVwAHs1kAB7NbAAezXgAHs18AB7NgAAezYQAHs2IAB7NkAAezZgAHs2cAB7NoAAezagAHs2sAB7PmAAez6AAHs+oAB7PsAAez7wAHs/AAB7PxAAez8gAHs/MAB7P1AAez9wAHs/gAB7P5AAez+wAHs/wAB7R3AAe0eQAHtHsAB7R9AAe0gAAHtIEAB7SCAAe0gwAHtIQAB7SGAAe0iAAHtIkAB7SKAAe0jAAHtI0AB7UIAAe1CgAHtQwAB7UOAAe1EQAHtRIAB7UTAAe1FAAHtRUAB7UXAAe1GQAHtRoAB7UbAAe1HQAHtR4AB7VnAAe1iwAHtbIAB7XWAAe12QAHtdwAB7XeAAe14AAHteIAB7XkAAe15QAHtegAB7YBAAe2HgAHtiEAB7YkAAe2JwAHtioAB7YtAAe2MAAHtjMAB7ZQAAe2UwAHtlYAB7ZZAAe2XAAHtl8AB7ZiAAe2ZQAHtmcAB7biAAe25AAHtucAB7bpAAe27AAHtu0AB7buAAe27wAHtvAAB7byAAe29QAHtvYAB7b3AAe2+QAHtvoAB7d1AAe3dwAHt3oAB7d8AAe3fwAHt4AAB7eBAAe3ggAHt4MAB7eFAAe3iAAHt4kAB7eKAAe3jAAHt40AB7ePAAe4CgAHuAwAB7gPAAe4EQAHuBQAB7gVAAe4FgAHuBcAB7gYAAe4GgAHuB0AB7geAAe4HwAHuCEAB7giAAe4nQAHuJ8AB7iiAAe4pAAHuKcAB7ioAAe4qQAHuKoAB7irAAe4rQAHuLAAB7ixAAe4sgAHuLQAB7i1AAe5MAAHuTIAB7k0AAe5NgAHuTkAB7k6AAe5OwAHuTwAB7k9AAe5PwAHuUIAB7lDAAe5RAAHuUYAB7lHAAe5wgAHucQAB7nGAAe5yAAHucsAB7nMAAe5zQAHuc4AB7nPAAe50QAHudQAB7nVAAe51gAHudgAB7nZAAe6VAAHulYAB7pZAAe6WwAHul4AB7pfAAe6YAAHumEAB7piAAe6ZAAHumcAB7poAAe6aQAHumsAB7psAAe6/wAHuyIAB7tCAAe7YgAHu2QAB7tmAAe7aAAHu2oAB7ttAAe7bgAHu28AB7tyAAe7cwAHu3UAB7t2AAe7eQAHu3wAB7t9AAe7fgAHu4EAB7uCAAe7hwAHu6AAB7upAAe7qwAHu64AB7u3AAe7ugAHu70AB7u/AAe8CAAHvCwAB7xTAAe8dwAHvHoAB7x8AAe8fgAHvIAAB7yCAAe8hAAHvIUAB7yIAAe8oQAHvMIAB7zEAAe8xgAHvMgAB7zKAAe8zAAHvM4AB7zQAAe80gAHvPMAB7z2AAe8+QAHvPwAB7z/AAe9AgAHvQUAB70IAAe9CwAHvQ0AB72IAAe9igAHvYwAB72OAAe9kQAHvZIAB72TAAe9lAAHvZUAB72XAAe9mQAHvZoAB72bAAe9nQAHvZ4AB74ZAAe+GwAHvh0AB74fAAe+IgAHviMAB74kAAe+JQAHviYAB74oAAe+KgAHvisAB74sAAe+LgAHvi8AB76qAAe+rAAHvq8AB76xAAe+tAAHvrUAB762AAe+twAHvrgAB766AAe+vAAHvr0AB76+AAe+wAAHvsEAB77aAAe+2wAHvtwAB77eAAe/WQAHv1sAB79dAAe/XwAHv2IAB79jAAe/ZAAHv2UAB79mAAe/aAAHv2oAB79rAAe/bAAHv24AB79vAAe/6gAHv+wAB7/uAAe/8AAHv/MAB7/0AAe/9QAHv/YAB7/3AAe/+QAHv/sAB7/8AAe//QAHv/8AB8AAAAfAewAHwH0AB8B/AAfAgQAHwIQAB8CFAAfAhgAHwIcAB8CIAAfAigAHwIwAB8CNAAfAjgAHwJAAB8CRAAfBDAAHwQ4AB8EQAAfBEgAHwRUAB8EWAAfBFwAHwRgAB8EZAAfBGwAHwR0AB8EeAAfBHwAHwSEAB8EiAAfBnQAHwZ8AB8GhAAfBowAHwaYAB8GnAAfBqAAHwakAB8GqAAfBrAAHwa4AB8GvAAfBsAAHwbIAB8GzAAfB/AAHwiAAB8JHAAfCawAHwm4AB8JxAAfCcwAHwnUAB8J3AAfCeQAHwnoAB8J9AAfClgAHwrMAB8K2AAfCuQAHwrwAB8K/AAfCwgAHwsUAB8LIAAfC5QAHwugAB8LrAAfC7gAHwvEAB8L0AAfC9wAHwvoAB8L8AAfDdwAHw3kAB8N8AAfDfgAHw4EAB8OCAAfDgwAHw4QAB8OFAAfDhwAHw4oAB8OLAAfDjAAHw44AB8OPAAfECgAHxAwAB8QPAAfEEQAHxBQAB8QVAAfEFgAHxBcAB8QYAAfEGgAHxB0AB8QeAAfEHwAHxCEAB8QiAAfEnQAHxJ8AB8SiAAfEpAAHxKcAB8SoAAfEqQAHxKoAB8SrAAfErQAHxLAAB8SxAAfEsgAHxLQAB8S1AAfFMAAHxTIAB8U1AAfFNwAHxToAB8U7AAfFPAAHxT0AB8U+AAfFQAAHxUMAB8VEAAfFRQAHxUcAB8VIAAfFwwAHxcUAB8XHAAfFyQAHxcwAB8XNAAfFzgAHxc8AB8XQAAfF0gAHxdUAB8XWAAfF1wAHxdkAB8XaAAfGVQAHxlcAB8ZZAAfGWwAHxl4AB8ZfAAfGYAAHxmEAB8ZiAAfGZAAHxmcAB8ZoAAfGaQAHxmsAB8ZsAAfG5wAHxukAB8bsAAfG7gAHxvEAB8byAAfG8wAHxvQAB8b1AAfG9wAHxvoAB8b7AAfG/AAHxv4AB8b/AAfHEAAHxxUAB8cYAAfHGgAHx1MAB8dWAAfHWAAHx1sAB8deAAfHYQAHx2QAB8dpAAfH5AAHx+YAB8foAAfH6gAHx+0AB8fuAAfH7wAHx/AAB8fxAAfH8wAHx/YAB8f3AAfH+AAHx/oAB8f7AAfIdgAHyHgAB8h6AAfIfAAHyH8AB8iAAAfIgQAHyIIAB8iDAAfIhQAHyIgAB8iJAAfIigAHyIwAB8iNAAfJCAAHyQoAB8kNAAfJDwAHyRIAB8kTAAfJFAAHyRUAB8kWAAfJGAAHyRsAB8kcAAfJHQAHyR8AB8kgAAfJMQAHyTYAB8k5AAfJOwAHyUQAB8m/AAfJwQAHycMAB8nFAAfJyAAHyckAB8nKAAfJywAHycwAB8nOAAfJ0QAHydIAB8nTAAfJ1QAHydYAB8pRAAfKUwAHylUAB8pXAAfKWgAHylsAB8pcAAfKXQAHyl4AB8pgAAfKYwAHymQAB8plAAfKZwAHymgAB8rjAAfK5QAHyugAB8rqAAfK7QAHyu4AB8rvAAfK8AAHyvEAB8rzAAfK9gAHyvcAB8r4AAfK+gAHyvsAB8sMAAfLDQAHyw8AB8sgAAfLKQAHyywAB8svAAfLMQAHy6wAB8uuAAfLsAAHy7IAB8u1AAfLtgAHy7cAB8u4AAfLuQAHy7sAB8u+AAfLvwAHy8AAB8vCAAfLwwAHzD4AB8xAAAfMQgAHzEQAB8xHAAfMSAAHzEkAB8xKAAfMSwAHzE0AB8xQAAfMUQAHzFIAB8xUAAfMVQAHzNAAB8zSAAfM1QAHzNcAB8zaAAfM2wAHzNwAB8zdAAfM3gAHzOAAB8zjAAfM5AAHzOUAB8znAAfM6AAHzXsAB82eAAfNvgAHzd4AB83gAAfN4gAHzeQAB83mAAfN6QAHzeoAB83rAAfN7gAHze8AB83xAAfN8gAHzfUAB834AAfN+QAHzfoAB839AAfN/gAHzgcAB84gAAfOKQAHzisAB84uAAfONwAHzjoAB849AAfOPwAHzogAB86sAAfO0wAHzvcAB876AAfO/AAHzv4AB88AAAfPAgAHzwQAB88FAAfPCAAHzyEAB89CAAfPRAAHz0YAB89IAAfPSgAHz0wAB89OAAfPUAAHz1IAB89zAAfPdgAHz3kAB898AAfPfwAHz4IAB8+FAAfPiAAHz4sAB8+NAAfQCAAH0AoAB9AMAAfQDgAH0BEAB9ASAAfQEwAH0BQAB9AVAAfQFwAH0BkAB9AaAAfQGwAH0B0AB9AeAAfQmQAH0JsAB9CdAAfQnwAH0KIAB9CjAAfQpAAH0KUAB9CmAAfQqAAH0KoAB9CrAAfQrAAH0K4AB9CvAAfRKgAH0SwAB9EvAAfRMQAH0TQAB9E1AAfRNgAH0TcAB9E4AAfROgAH0TwAB9E9AAfRPgAH0UAAB9FBAAfRWgAH0VsAB9FcAAfRXgAH0dkAB9HbAAfR3QAH0d8AB9HiAAfR4wAH0eQAB9HlAAfR5gAH0egAB9HqAAfR6wAH0ewAB9HuAAfR7wAH0moAB9JsAAfSbgAH0nAAB9JzAAfSdAAH0nUAB9J2AAfSdwAH0nkAB9J7AAfSfAAH0n0AB9J/AAfSgAAH0vsAB9L9AAfS/wAH0wEAB9MEAAfTBQAH0wYAB9MHAAfTCAAH0woAB9MMAAfTDQAH0w4AB9MQAAfTEQAH04wAB9OOAAfTkAAH05IAB9OVAAfTlgAH05cAB9OYAAfTmQAH05sAB9OdAAfTngAH058AB9OhAAfTogAH1B0AB9QfAAfUIQAH1CMAB9QmAAfUJwAH1CgAB9QpAAfUKgAH1CwAB9QuAAfULwAH1DAAB9QyAAfUMwAH1HwAB9SgAAfUxwAH1OsAB9TuAAfU8QAH1PMAB9T1AAfU9wAH1PkAB9T6AAfU/QAH1RYAB9UzAAfVNgAH1TkAB9U8AAfVPwAH1UIAB9VFAAfVSAAH1WUAB9VoAAfVawAH1W4AB9VxAAfVdAAH1XcAB9V6AAfVfAAH1fcAB9X5AAfV/AAH1f4AB9YBAAfWAgAH1gMAB9YEAAfWBQAH1gcAB9YKAAfWCwAH1gwAB9YOAAfWDwAH1ooAB9aMAAfWjwAH1pEAB9aUAAfWlQAH1pYAB9aXAAfWmAAH1poAB9adAAfWngAH1p8AB9ahAAfWogAH1x0AB9cfAAfXIgAH1yQAB9cnAAfXKAAH1ykAB9cqAAfXKwAH1y0AB9cwAAfXMQAH1zIAB9c0AAfXNQAH17AAB9eyAAfXtQAH17cAB9e6AAfXuwAH17wAB9e9AAfXvgAH18AAB9fDAAfXxAAH18UAB9fHAAfXyAAH2EsAB9hvAAfYkwAH2LYAB9jdAAfY/QAH2SQAB9lLAAfZawAH2Y8AB9mzAAfZtQAH2bgAB9m6AAfZvAAH2b4AB9nBAAfZxAAH2cYAB9nIAAfZywAH2c0AB9nPAAfZ0gAH2dUAB9nWAAfZ2wAH2fQAB9n5AAfZ+wAH2gAAB9oDAAfaBQAH2k4AB9pyAAfamQAH2r0AB9rAAAfawgAH2sQAB9rGAAfayAAH2soAB9rLAAfazgAH2ucAB9sMAAfbDgAH2xAAB9sSAAfbFAAH2xYAB9sYAAfbGgAH2xwAB9seAAfbQwAH20YAB9tJAAfbTAAH208AB9tSAAfbVQAH21gAB9tbAAfbXgAH22AAB9vbAAfb3QAH2+AAB9viAAfb5QAH2+YAB9vnAAfb6AAH2+kAB9vrAAfb7QAH2+4AB9vvAAfb8QAH2/IAB9wDAAfcBAAH3AYAB9yBAAfcgwAH3IUAB9yHAAfcigAH3IsAB9yMAAfcjQAH3I4AB9yQAAfckgAH3JMAB9yUAAfclgAH3JcAB90SAAfdFAAH3RcAB90ZAAfdHAAH3R0AB90eAAfdHwAH3SAAB90iAAfdJAAH3SUAB90mAAfdKAAH3SkAB906AAfdOwAH3T0AB924AAfdugAH3bwAB92+AAfdwQAH3cIAB93DAAfdxAAH3cUAB93HAAfdyQAH3coAB93LAAfdzQAH3c4AB95JAAfeSwAH3k4AB95QAAfeUwAH3lQAB95VAAfeVgAH3lcAB95ZAAfeWwAH3lwAB95dAAfeXwAH3mAAB95xAAfecgAH3nQAB97vAAfe8QAH3vMAB971AAfe+AAH3vkAB976AAfe+wAH3vwAB97+AAffAAAH3wEAB98CAAffBAAH3wUAB9+AAAffggAH34UAB9+HAAffigAH34sAB9+MAAffjQAH344AB9+QAAffkgAH35MAB9+UAAfflgAH35cAB9+wAAffsQAH37IAB9+0AAfgLwAH4DEAB+AzAAfgNQAH4DgAB+A5AAfgOgAH4DsAB+A8AAfgPgAH4EAAB+BBAAfgQgAH4EQAB+BFAAfgwAAH4MIAB+DFAAfgxwAH4MoAB+DLAAfgzAAH4M0AB+DOAAfg0AAH4NIAB+DTAAfg1AAH4NYAB+DXAAfg9wAH4RAAB+EpAAfhLAAH4S8AB+EyAAfhNQAH4TgAB+E7AAfhVAAH4VcAB+FaAAfhXQAH4WAAB+FjAAfhZgAH4WgAB+F2AAfhhAAH4ZwAB+GyAAfh0gAH4mUAB+KIAAfiqAAH4sgAB+LKAAfizAAH4s4AB+LQAAfi0wAH4tQAB+LVAAfi2AAH4tkAB+LbAAfi3AAH4t4AB+LhAAfi4gAH4uMAB+LmAAfi5wAH4uwAB+MFAAfjDgAH4xAAB+MSAAfjGwAH4x4AB+MhAAfjIwAH42wAB+OQAAfjtwAH49sAB+PeAAfj4AAH4+IAB+PkAAfj5gAH4+gAB+PpAAfj7AAH5AUAB+QmAAfkKAAH5CoAB+QsAAfkLgAH5DAAB+QyAAfkNAAH5DYAB+RXAAfkWgAH5F0AB+RgAAfkYwAH5GYAB+RpAAfkbAAH5G8AB+RxAAfk7AAH5O4AB+TwAAfk8gAH5PUAB+T2AAfk9wAH5PgAB+T5AAfk+wAH5P0AB+T+AAfk/wAH5QEAB+UCAAflfQAH5X8AB+WBAAflgwAH5YYAB+WHAAfliAAH5YkAB+WKAAfljAAH5Y4AB+WPAAflkAAH5ZIAB+WTAAfmDgAH5hAAB+YTAAfmFQAH5hgAB+YZAAfmGgAH5hsAB+YcAAfmHgAH5iAAB+YhAAfmIgAH5iQAB+YlAAfmPgAH5j8AB+ZAAAfmQgAH5r0AB+a/AAfmwQAH5sMAB+bGAAfmxwAH5sgAB+bJAAfmygAH5swAB+bOAAfmzwAH5tAAB+bSAAfm0wAH504AB+dQAAfnUgAH51QAB+dXAAfnWAAH51kAB+daAAfnWwAH510AB+dfAAfnYAAH52EAB+djAAfnZAAH598AB+fhAAfn4wAH5+UAB+foAAfn6QAH5+oAB+frAAfn7AAH5+4AB+fwAAfn8QAH5/IAB+f0AAfn9QAH6HAAB+hyAAfodAAH6HYAB+h5AAfoegAH6HsAB+h8AAfofQAH6H8AB+iBAAfoggAH6IMAB+iFAAfohgAH6QEAB+kDAAfpBQAH6QcAB+kKAAfpCwAH6QwAB+kNAAfpDgAH6RAAB+kSAAfpEwAH6RQAB+kWAAfpFwAH6WAAB+mEAAfpqwAH6c8AB+nSAAfp1AAH6dYAB+nYAAfp2gAH6dwAB+ndAAfp4AAH6fkAB+oWAAfqGAAH6hoAB+ocAAfqHgAH6iAAB+oiAAfqJAAH6kEAB+pEAAfqRwAH6koAB+pNAAfqUAAH6lMAB+pWAAfqWAAH6tMAB+rVAAfq1wAH6tkAB+rcAAfq3QAH6t4AB+rfAAfq4AAH6uIAB+rkAAfq5QAH6uYAB+roAAfq6QAH62QAB+tmAAfraAAH62oAB+ttAAfrbgAH628AB+twAAfrcQAH63MAB+t1AAfrdgAH63cAB+t5AAfregAH6/UAB+v3AAfr+QAH6/sAB+v+AAfr/wAH7AAAB+wBAAfsAgAH7AQAB+wGAAfsBwAH7AgAB+wKAAfsCwAH7IYAB+yIAAfsigAH7IwAB+yPAAfskAAH7JEAB+ySAAfskwAH7JUAB+yXAAfsmAAH7JkAB+ybAAfsnAAH7RcAB+0ZAAftGwAH7R0AB+0gAAftIQAH7SIAB+0jAAftJAAH7SYAB+0oAAftKQAH7SoAB+0sAAftLQAH7agAB+2qAAftrAAH7a4AB+2xAAftsgAH7bMAB+20AAfttQAH7bcAB+25AAftugAH7bsAB+29AAftvgAH7jkAB+47AAfuPQAH7j8AB+5CAAfuQwAH7kQAB+5FAAfuRgAH7kgAB+5KAAfuSwAH7kwAB+5OAAfuTwAH7uIAB+8FAAfvJQAH70UAB+9HAAfvSQAH70sAB+9NAAfvUAAH71EAB+9SAAfvVQAH71YAB+9YAAfvWQAH71wAB+9fAAfvYAAH72EAB+9kAAfvZQAH72oAB++DAAfvjAAH744AB++RAAfvmgAH750AB++gAAfvogAH7+sAB/APAAfwNgAH8FoAB/BdAAfwXwAH8GEAB/BjAAfwZQAH8GcAB/BoAAfwawAH8IQAB/ClAAfwpwAH8KkAB/CrAAfwrQAH8K8AB/CxAAfwswAH8LUAB/DWAAfw2QAH8NwAB/DfAAfw4gAH8OUAB/DoAAfw6wAH8O4AB/DwAAfxawAH8W0AB/FvAAfxcQAH8XQAB/F1AAfxdgAH8XcAB/F4AAfxegAH8XwAB/F9AAfxfgAH8YAAB/GBAAfx/AAH8f4AB/IAAAfyAgAH8gUAB/IGAAfyBwAH8ggAB/IJAAfyCwAH8g0AB/IOAAfyDwAH8hEAB/ISAAfyjQAH8o8AB/KSAAfylAAH8pcAB/KYAAfymQAH8poAB/KbAAfynQAH8p8AB/KgAAfyoQAH8qMAB/KkAAfyvQAH8r4AB/K/AAfywQAH8zwAB/M+AAfzQAAH80IAB/NFAAfzRgAH80cAB/NIAAfzSQAH80sAB/NNAAfzTgAH808AB/NRAAfzUgAH880AB/PPAAfz0QAH89MAB/PWAAfz1wAH89gAB/PZAAfz2gAH89wAB/PeAAfz3wAH8+AAB/PiAAfz4wAH9F4AB/RgAAf0YgAH9GQAB/RnAAf0aAAH9GkAB/RqAAf0awAH9G0AB/RvAAf0cAAH9HEAB/RzAAf0dAAH9O8AB/TxAAf08wAH9PUAB/T4AAf0+QAH9PoAB/T7AAf0/AAH9P4AB/UAAAf1AQAH9QIAB/UEAAf1BQAH9YAAB/WCAAf1hAAH9YYAB/WJAAf1igAH9YsAB/WMAAf1jQAH9Y8AB/WRAAf1kgAH9ZMAB/WVAAf1lgAH9d8AB/YDAAf2KgAH9k4AB/ZRAAf2VAAH9lYAB/ZYAAf2WgAH9lwAB/ZdAAf2YAAH9nkAB/aWAAf2mQAH9pwAB/afAAf2ogAH9qUAB/aoAAf2qwAH9sgAB/bLAAf2zgAH9tEAB/bUAAf21wAH9toAB/bdAAf23wAH91oAB/dcAAf3XwAH92EAB/dkAAf3ZQAH92YAB/dnAAf3aAAH92oAB/dtAAf3bgAH928AB/dxAAf3cgAH9+0AB/fvAAf38gAH9/QAB/f3AAf3+AAH9/kAB/f6AAf3+wAH9/0AB/gAAAf4AQAH+AIAB/gEAAf4BQAH+IAAB/iCAAf4hQAH+IcAB/iKAAf4iwAH+IwAB/iNAAf4jgAH+JAAB/iTAAf4lAAH+JUAB/iXAAf4mAAH+RMAB/kVAAf5GAAH+RoAB/kdAAf5HgAH+R8AB/kgAAf5IQAH+SMAB/kmAAf5JwAH+SgAB/kqAAf5KwAH+aYAB/moAAf5qgAH+awAB/mvAAf5sAAH+bEAB/myAAf5swAH+bUAB/m4AAf5uQAH+boAB/m8AAf5vQAH+jgAB/o6AAf6PAAH+j4AB/pBAAf6QgAH+kMAB/pEAAf6RQAH+kcAB/pKAAf6SwAH+kwAB/pOAAf6TwAH+soAB/rMAAf6zwAH+tEAB/rUAAf61QAH+tYAB/rXAAf62AAH+toAB/rdAAf63gAH+t8AB/rhAAf64gAH+3UAB/uYAAf7uAAH+9gAB/vaAAf73AAH+94AB/vgAAf74wAH++QAB/vlAAf76AAH++kAB/vrAAf77AAH++4AB/vxAAf78gAH+/MAB/v2AAf79wAH+/wAB/wVAAf8HgAH/CAAB/wiAAf8KwAH/C4AB/wxAAf8MwAH/HwAB/ygAAf8xwAH/OsAB/zuAAf88AAH/PIAB/z0AAf89gAH/PgAB/z5AAf8/AAH/RUAB/02AAf9OAAH/ToAB/08AAf9PgAH/UAAB/1CAAf9RAAH/UYAB/1nAAf9agAH/W0AB/1wAAf9cwAH/XYAB/15AAf9fAAH/X8AB/2BAAf9/AAH/f4AB/4AAAf+AgAH/gUAB/4GAAf+BwAH/ggAB/4JAAf+CwAH/g0AB/4OAAf+DwAH/hEAB/4SAAf+jQAH/o8AB/6RAAf+kwAH/pYAB/6XAAf+mAAH/pkAB/6aAAf+nAAH/p4AB/6fAAf+oAAH/qIAB/6jAAf/HgAH/yAAB/8jAAf/JQAH/ygAB/8pAAf/KgAH/ysAB/8sAAf/LgAH/zAAB/8xAAf/MgAH/zQAB/81AAf/TgAH/08AB/9QAAf/UgAH/80AB//PAAf/0QAH/9MAB//WAAf/1wAH/9gAB//ZAAf/2gAH/9wAB//eAAf/3wAH/+AAB//iAAf/4wAIAF4ACABgAAgAYgAIAGQACABnAAgAaAAIAGkACABqAAgAawAIAG0ACABvAAgAcAAIAHEACABzAAgAdAAIAO8ACADxAAgA8wAIAPUACAD4AAgA+QAIAPoACAD7AAgA/AAIAP4ACAEAAAgBAQAIAQIACAEEAAgBBQAIAYAACAGCAAgBhAAIAYYACAGJAAgBigAIAYsACAGMAAgBjQAIAY8ACAGRAAgBkgAIAZMACAGVAAgBlgAIAhEACAITAAgCFQAIAhcACAIaAAgCGwAIAhwACAIdAAgCHgAIAiAACAIiAAgCIwAIAiQACAImAAgCJwAIAnAACAKUAAgCuwAIAt8ACALiAAgC5AAIAuYACALoAAgC6gAIAuwACALtAAgC8AAIAwkACAMmAAgDKAAIAyoACAMsAAgDLgAIAzAACAMyAAgDNAAIA1EACANUAAgDVwAIA1oACANdAAgDYAAIA2MACANmAAgDaAAIA+MACAPlAAgD5wAIA+kACAPsAAgD7QAIA+4ACAPvAAgD8AAIA/IACAP0AAgD9QAIA/YACAP4AAgD+QAIBHQACAR2AAgEeAAIBHoACAR9AAgEfgAIBH8ACASAAAgEgQAIBIMACASFAAgEhgAIBIcACASJAAgEigAIBQUACAUHAAgFCQAIBQsACAUOAAgFDwAIBRAACAURAAgFEgAIBRQACAUWAAgFFwAIBRgACAUaAAgFGwAIBZYACAWYAAgFmwAIBZ0ACAWgAAgFoQAIBaIACAWjAAgFpAAIBaYACAWoAAgFqQAIBaoACAWsAAgFrQAIBigACAYqAAgGLAAIBi4ACAYxAAgGMgAIBjMACAY0AAgGNQAIBjcACAY5AAgGOgAIBjsACAY9AAgGPgAIBrkACAa7AAgGvQAIBr8ACAbCAAgGwwAIBsQACAbFAAgGxgAIBsgACAbKAAgGywAIBswACAbOAAgGzwAIB0oACAdMAAgHTgAIB1AACAdTAAgHVAAIB1UACAdWAAgHVwAIB1kACAdbAAgHXAAIB10ACAdfAAgHYAAIB/MACAgWAAgINgAICFYACAhYAAgIWgAICFwACAheAAgIYQAICGIACAhjAAgIZgAICGcACAhpAAgIagAICGwACAhvAAgIcAAICHEACAh0AAgIdQAICH4ACAiXAAgIoAAICKIACAikAAgIrQAICLAACAizAAgItQAICP4ACAkiAAgJSQAICW0ACAlwAAgJcgAICXQACAl2AAgJeAAICXoACAl7AAgJfgAICZcACAm4AAgJugAICbwACAm+AAgJwAAICcIACAnEAAgJxgAICcgACAnpAAgJ7AAICe8ACAnyAAgJ9QAICfgACAn7AAgJ/gAICgEACAoDAAgKfgAICoAACAqCAAgKhAAICocACAqIAAgKiQAICooACAqLAAgKjQAICo8ACAqQAAgKkQAICpMACAqUAAgLDwAICxEACAsTAAgLFQAICxgACAsZAAgLGgAICxsACAscAAgLHgAICyAACAshAAgLIgAICyQACAslAAgLoAAIC6IACAulAAgLpwAIC6oACAurAAgLrAAIC60ACAuuAAgLsAAIC7IACAuzAAgLtAAIC7YACAu3AAgL0AAIC9EACAvSAAgL1AAIDE8ACAxRAAgMUwAIDFUACAxYAAgMWQAIDFoACAxbAAgMXAAIDF4ACAxgAAgMYQAIDGIACAxkAAgMZQAIDOAACAziAAgM5AAIDOYACAzpAAgM6gAIDOsACAzsAAgM7QAIDO8ACAzxAAgM8gAIDPMACAz1AAgM9gAIDXEACA1zAAgNdQAIDXcACA16AAgNewAIDXwACA19AAgNfgAIDYAACA2CAAgNgwAIDYQACA2GAAgNhwAIDgIACA4EAAgOBgAIDggACA4LAAgODAAIDg0ACA4OAAgODwAIDhEACA4TAAgOFAAIDhUACA4XAAgOGAAIDpMACA6VAAgOlwAIDpkACA6cAAgOnQAIDp4ACA6fAAgOoAAIDqIACA6kAAgOpQAIDqYACA6oAAgOqQAIDvIACA8WAAgPPQAID2EACA9kAAgPZgAID2gACA9qAAgPbAAID24ACA9vAAgPcgAID4sACA+oAAgPqgAID6wACA+uAAgPsAAID7IACA+0AAgPtgAID9MACA/WAAgP2QAID9wACA/fAAgP4gAID+UACA/oAAgP6gAIEGUACBBnAAgQaQAIEGsACBBuAAgQbwAIEHAACBBxAAgQcgAIEHQACBB2AAgQdwAIEHgACBB6AAgQewAIEPYACBD4AAgQ+gAIEPwACBD/AAgRAAAIEQEACBECAAgRAwAIEQUACBEHAAgRCAAIEQkACBELAAgRDAAIEYcACBGJAAgRiwAIEY0ACBGQAAgRkQAIEZIACBGTAAgRlAAIEZYACBGYAAgRmQAIEZoACBGcAAgRnQAIEhgACBIaAAgSHQAIEh8ACBIiAAgSIwAIEiQACBIlAAgSJgAIEigACBIqAAgSKwAIEiwACBIuAAgSLwAIEqoACBKsAAgSrgAIErAACBKzAAgStAAIErUACBK2AAgStwAIErkACBK7AAgSvAAIEr0ACBK/AAgSwAAIEzsACBM9AAgTPwAIE0EACBNEAAgTRQAIE0YACBNHAAgTSAAIE0oACBNMAAgTTQAIE04ACBNQAAgTUQAIE8wACBPOAAgT0AAIE9IACBPVAAgT1gAIE9cACBPYAAgT2QAIE9sACBPdAAgT3gAIE98ACBPhAAgT4gAIFHUACBSYAAgUuAAIFNgACBTaAAgU3AAIFN4ACBTgAAgU4wAIFOQACBTlAAgU6AAIFOkACBTrAAgU7AAIFO4ACBTxAAgU8gAIFPMACBT2AAgU9wAIFQAACBUZAAgVIgAIFSQACBUmAAgVLwAIFTIACBU1AAgVNwAIFYAACBWkAAgVywAIFe8ACBXyAAgV9AAIFfYACBX4AAgV+gAIFfwACBX9AAgWAAAIFhkACBY6AAgWPAAIFj4ACBZAAAgWQgAIFkQACBZGAAgWSAAIFkoACBZrAAgWbgAIFnEACBZ0AAgWdwAIFnoACBZ9AAgWgAAIFoMACBaFAAgXAAAIFwIACBcEAAgXBgAIFwkACBcKAAgXCwAIFwwACBcNAAgXDwAIFxEACBcSAAgXEwAIFxUACBcWAAgXkQAIF5MACBeVAAgXlwAIF5oACBebAAgXnAAIF50ACBeeAAgXoAAIF6IACBejAAgXpAAIF6YACBenAAgYIgAIGCQACBgnAAgYKQAIGCwACBgtAAgYLgAIGC8ACBgwAAgYMgAIGDQACBg1AAgYNgAIGDgACBg5AAgYUgAIGFMACBhUAAgYVgAIGNEACBjTAAgY1QAIGNcACBjaAAgY2wAIGNwACBjdAAgY3gAIGOAACBjiAAgY4wAIGOQACBjmAAgY5wAIGWIACBlkAAgZZgAIGWgACBlrAAgZbAAIGW0ACBluAAgZbwAIGXEACBlzAAgZdAAIGXUACBl3AAgZeAAIGfMACBn1AAgZ9wAIGfkACBn8AAgZ/QAIGf4ACBn/AAgaAAAIGgIACBoEAAgaBQAIGgYACBoIAAgaCQAIGoQACBqGAAgaiAAIGooACBqNAAgajgAIGo8ACBqQAAgakQAIGpMACBqVAAgalgAIGpcACBqZAAgamgAIGxUACBsXAAgbGQAIGxsACBseAAgbHwAIGyAACBshAAgbIgAIGyQACBsmAAgbJwAIGygACBsqAAgbKwAIG3QACBuYAAgbvwAIG+MACBvmAAgb6AAIG+oACBvsAAgb7gAIG/AACBvxAAgb9AAIHA0ACBwqAAgcLAAIHC4ACBwwAAgcMgAIHDQACBw2AAgcOAAIHFUACBxYAAgcWwAIHF4ACBxhAAgcZAAIHGcACBxqAAgcbAAIHOcACBzpAAgc6wAIHO0ACBzwAAgc8QAIHPIACBzzAAgc9AAIHPYACBz4AAgc+QAIHPoACBz8AAgc/QAIHXgACB16AAgdfAAIHX4ACB2BAAgdggAIHYMACB2EAAgdhQAIHYcACB2JAAgdigAIHYsACB2NAAgdjgAIHgkACB4LAAgeDQAIHg8ACB4SAAgeEwAIHhQACB4VAAgeFgAIHhgACB4aAAgeGwAIHhwACB4eAAgeHwAIHpoACB6cAAgenwAIHqEACB6kAAgepQAIHqYACB6nAAgeqAAIHqoACB6sAAgerQAIHq4ACB6wAAgesQAIHywACB8uAAgfMAAIHzIACB81AAgfNgAIHzcACB84AAgfOQAIHzsACB89AAgfPgAIHz8ACB9BAAgfQgAIH70ACB+/AAgfwQAIH8MACB/GAAgfxwAIH8gACB/JAAgfygAIH8wACB/OAAgfzwAIH9AACB/SAAgf0wAIIE4ACCBQAAggUgAIIFQACCBXAAggWAAIIFkACCBaAAggWwAIIF0ACCBfAAggYAAIIGEACCBjAAggZAAIIPcACCEaAAghOgAIIVoACCFcAAghXgAIIWAACCFiAAghZQAIIWYACCFnAAghagAIIWsACCFtAAghbgAIIXAACCFzAAghdAAIIXUACCF4AAgheQAIIX4ACCGXAAghoAAIIaIACCGkAAghrQAIIbAACCGzAAghtQAIIf4ACCIiAAgiSQAIIm0ACCJwAAgicgAIInQACCJ2AAgieAAIInoACCJ7AAgifgAIIpcACCK4AAgiugAIIrwACCK+AAgiwAAIIsIACCLEAAgixgAIIsgACCLpAAgi7AAIIu8ACCLyAAgi9QAIIvgACCL7AAgi/gAIIwEACCMDAAgjfgAII4AACCOCAAgjhAAII4cACCOIAAgjiQAII4oACCOLAAgjjQAII48ACCOQAAgjkQAII5MACCOUAAgkDwAIJBEACCQTAAgkFQAIJBgACCQZAAgkGgAIJBsACCQcAAgkHgAIJCAACCQhAAgkIgAIJCQACCQlAAgkoAAIJKIACCSlAAgkpwAIJKoACCSrAAgkrAAIJK0ACCSuAAgksAAIJLIACCSzAAgktAAIJLYACCS3AAgk0AAIJNEACCTSAAgk1AAIJU8ACCVRAAglUwAIJVUACCVYAAglWQAIJVoACCVbAAglXAAIJV4ACCVgAAglYQAIJWIACCVkAAglZQAIJeAACCXiAAgl5AAIJeYACCXpAAgl6gAIJesACCXsAAgl7QAIJe8ACCXxAAgl8gAIJfMACCX1AAgl9gAIJnEACCZzAAgmdQAIJncACCZ6AAgmewAIJnwACCZ9AAgmfgAIJoAACCaCAAgmgwAIJoQACCaGAAgmhwAIJwIACCcEAAgnBgAIJwgACCcLAAgnDAAIJw0ACCcOAAgnDwAIJxEACCcTAAgnFAAIJxUACCcXAAgnGAAIJ5MACCeVAAgnlwAIJ5kACCecAAgnnQAIJ54ACCefAAgnoAAIJ6IACCekAAgnpQAIJ6YACCeoAAgnqQAIJ/IACCgWAAgoPQAIKGEACChkAAgoZgAIKGgACChqAAgobAAIKG4ACChvAAgocgAIKIsACCioAAgoqgAIKKwACCiuAAgosAAIKLIACCi0AAgotgAIKNMACCjWAAgo2QAIKNwACCjfAAgo4gAIKOUACCjoAAgo6gAIKWUACClnAAgpaQAIKWsACCluAAgpbwAIKXAACClxAAgpcgAIKXQACCl2AAgpdwAIKXgACCl6AAgpewAIKfYACCn4AAgp+gAIKfwACCn/AAgqAAAIKgEACCoCAAgqAwAIKgUACCoHAAgqCAAIKgkACCoLAAgqDAAIKocACCqJAAgqiwAIKo0ACCqQAAgqkQAIKpIACCqTAAgqlAAIKpYACCqYAAgqmQAIKpoACCqcAAgqnQAIKxgACCsaAAgrHQAIKx8ACCsiAAgrIwAIKyQACCslAAgrJgAIKygACCsqAAgrKwAIKywACCsuAAgrLwAIK6oACCusAAgrrgAIK7AACCuzAAgrtAAIK7UACCu2AAgrtwAIK7kACCu7AAgrvAAIK70ACCu/AAgrwAAILDsACCw9AAgsPwAILEEACCxEAAgsRQAILEYACCxHAAgsSAAILEoACCxMAAgsTQAILE4ACCxQAAgsUQAILMwACCzOAAgs0AAILNIACCzVAAgs1gAILNcACCzYAAgs2QAILNsACCzdAAgs3gAILN8ACCzhAAgs4gAILPMACCz0AAgs9gAILXEACC1zAAgtdQAILXcACC16AAgtewAILXwACC19AAgtfgAILYAACC2DAAgthAAILYUACC2HAAgtiAAILgMACC4FAAguBwAILgkACC4MAAguDQAILg4ACC4PAAguEAAILhIACC4VAAguFgAILhcACC4ZAAguGgAILpUACC6XAAgumgAILpwACC6fAAguoAAILqEACC6iAAguowAILqUACC6oAAguqQAILqoACC6sAAgurQAIL0AACC9jAAgvgwAIL6MACC+lAAgvpwAIL6kACC+rAAgvrgAIL68ACC+wAAgvswAIL7QACC+2AAgvtwAIL7oACC+9AAgvvgAIL78ACC/CAAgvwwAIL8gACC/hAAgv6gAIL+wACC/vAAgv+AAIL/sACC/+AAgwAAAIMEkACDBtAAgwlAAIMLgACDC7AAgwvQAIML8ACDDBAAgwwwAIMMUACDDGAAgwyQAIMOIACDEDAAgxBQAIMQcACDEJAAgxCwAIMQ0ACDEPAAgxEQAIMRMACDE0AAgxNwAIMToACDE9AAgxQAAIMUMACDFGAAgxSQAIMUwACDFOAAgxyQAIMcsACDHNAAgxzwAIMdIACDHTAAgx1AAIMdUACDHWAAgx2AAIMdoACDHbAAgx3AAIMd4ACDHfAAgyWgAIMlwACDJeAAgyYAAIMmMACDJkAAgyZQAIMmYACDJnAAgyaQAIMmsACDJsAAgybQAIMm8ACDJwAAgy6wAIMu0ACDLwAAgy8gAIMvUACDL2AAgy9wAIMvgACDL5AAgy+wAIMv0ACDL+AAgy/wAIMwEACDMCAAgzGwAIMxwACDMdAAgzHwAIM5oACDOcAAgzngAIM6AACDOjAAgzpAAIM6UACDOmAAgzpwAIM6kACDOrAAgzrAAIM60ACDOvAAgzsAAINCsACDQtAAg0LwAINDEACDQ0AAg0NQAINDYACDQ3AAg0OAAINDoACDQ8AAg0PQAIND4ACDRAAAg0QQAINLwACDS+AAg0wAAINMIACDTFAAg0xgAINMcACDTIAAg0yQAINMsACDTNAAg0zgAINM8ACDTRAAg00gAINU0ACDVPAAg1UQAINVMACDVWAAg1VwAINVgACDVZAAg1WgAINVwACDVeAAg1XwAINWAACDViAAg1YwAINd4ACDXgAAg14gAINeQACDXnAAg16AAINekACDXqAAg16wAINe0ACDXvAAg18AAINfEACDXzAAg19AAINj0ACDZhAAg2iAAINqwACDavAAg2sgAINrQACDa2AAg2uAAINroACDa7AAg2vgAINtcACDb0AAg29wAINvoACDb9AAg3AAAINwMACDcGAAg3CQAINyYACDcpAAg3LAAINy8ACDcyAAg3NQAINzgACDc7AAg3PQAIN7gACDe6AAg3vQAIN78ACDfCAAg3wwAIN8QACDfFAAg3xgAIN8gACDfLAAg3zAAIN80ACDfPAAg30AAIOEsACDhNAAg4UAAIOFIACDhVAAg4VgAIOFcACDhYAAg4WQAIOFsACDheAAg4XwAIOGAACDhiAAg4YwAION4ACDjgAAg44wAIOOUACDjoAAg46QAIOOoACDjrAAg47AAIOO4ACDjxAAg48gAIOPMACDj1AAg49gAIOXEACDlzAAg5dgAIOXgACDl7AAg5fAAIOX0ACDl+AAg5fwAIOYEACDmEAAg5hQAIOYYACDmIAAg5iQAIOgQACDoGAAg6CAAIOgoACDoNAAg6DgAIOg8ACDoQAAg6EQAIOhMACDoWAAg6FwAIOhgACDoaAAg6GwAIOpYACDqYAAg6mgAIOpwACDqfAAg6oAAIOqEACDqiAAg6owAIOqUACDqoAAg6qQAIOqoACDqsAAg6rQAIOygACDsqAAg7LQAIOy8ACDsyAAg7MwAIOzQACDs1AAg7NgAIOzgACDs7AAg7PAAIOz0ACDs/AAg7QAAIO9MACDv2AAg8FgAIPDYACDw4AAg8OgAIPDwACDw+AAg8QQAIPEIACDxDAAg8RgAIPEcACDxJAAg8SgAIPEwACDxPAAg8UAAIPFEACDxUAAg8VQAIPF4ACDx3AAg8gAAIPIIACDyEAAg8jQAIPJAACDyTAAg8lQAIPN4ACD0CAAg9KQAIPU0ACD1QAAg9UgAIPVQACD1WAAg9WAAIPVoACD1bAAg9XgAIPXcACD2YAAg9mgAIPZwACD2eAAg9oAAIPaIACD2kAAg9pgAIPagACD3JAAg9zAAIPc8ACD3SAAg91QAIPdgACD3bAAg93gAIPeEACD3jAAg+XgAIPmAACD5iAAg+ZAAIPmcACD5oAAg+aQAIPmoACD5rAAg+bQAIPm8ACD5wAAg+cQAIPnMACD50AAg+7wAIPvEACD7zAAg+9QAIPvgACD75AAg++gAIPvsACD78AAg+/gAIPwAACD8BAAg/AgAIPwQACD8FAAg/gAAIP4IACD+FAAg/hwAIP4oACD+LAAg/jAAIP40ACD+OAAg/kAAIP5IACD+TAAg/lAAIP5YACD+XAAg/sAAIP7EACD+yAAg/tAAIQC8ACEAxAAhAMwAIQDUACEA4AAhAOQAIQDoACEA7AAhAPAAIQD4ACEBAAAhAQQAIQEIACEBEAAhARQAIQMAACEDCAAhAxAAIQMYACEDJAAhAygAIQMsACEDMAAhAzQAIQM8ACEDRAAhA0gAIQNMACEDVAAhA1gAIQVEACEFTAAhBVQAIQVcACEFaAAhBWwAIQVwACEFdAAhBXgAIQWAACEFiAAhBYwAIQWQACEFmAAhBZwAIQeIACEHkAAhB5gAIQegACEHrAAhB7AAIQe0ACEHuAAhB7wAIQfEACEHzAAhB9AAIQfUACEH3AAhB+AAIQnMACEJ1AAhCdwAIQnkACEJ8AAhCfQAIQn4ACEJ/AAhCgAAIQoIACEKEAAhChQAIQoYACEKIAAhCiQAIQtIACEL2AAhDHQAIQ0EACENEAAhDRgAIQ0gACENKAAhDTAAIQ04ACENPAAhDUgAIQ2sACEOIAAhDigAIQ4wACEOOAAhDkAAIQ5IACEOUAAhDlgAIQ7MACEO2AAhDuQAIQ7wACEO/AAhDwgAIQ8UACEPIAAhDygAIREUACERHAAhESgAIREwACERPAAhEUAAIRFEACERSAAhEUwAIRFUACERXAAhEWAAIRFkACERbAAhEXAAIRNcACETZAAhE2wAIRN0ACETgAAhE4QAIROIACETjAAhE5AAIROYACEToAAhE6QAIROoACETsAAhE7QAIRWgACEVqAAhFbAAIRW4ACEVxAAhFcgAIRXMACEV0AAhFdQAIRXcACEV5AAhFegAIRXsACEV9AAhFfgAIRfkACEX7AAhF/gAIRgAACEYDAAhGBAAIRgUACEYGAAhGBwAIRgkACEYLAAhGDAAIRg0ACEYPAAhGEAAIRosACEaNAAhGjwAIRpEACEaUAAhGlQAIRpYACEaXAAhGmAAIRpoACEacAAhGnQAIRp4ACEagAAhGoQAIRxwACEceAAhHIAAIRyIACEclAAhHJgAIRycACEcoAAhHKQAIRysACEctAAhHLgAIRy8ACEcxAAhHMgAIR60ACEevAAhHsQAIR7MACEe2AAhHtwAIR7gACEe5AAhHugAIR7wACEe+AAhHvwAIR8AACEfCAAhHwwAISFYACEh5AAhImQAISLkACEi7AAhIvQAISL8ACEjBAAhIxAAISMUACEjGAAhIyQAISMoACEjMAAhIzQAISM8ACEjSAAhI0wAISNQACEjXAAhI2AAISN0ACEj2AAhI/wAISQEACEkDAAhJDAAISQ8ACEkSAAhJFAAISV0ACEmBAAhJqAAIScwACEnPAAhJ0QAISdMACEnVAAhJ1wAISdkACEnaAAhJ3QAISfYACEoXAAhKGQAIShsACEodAAhKHwAISiEACEojAAhKJQAISicACEpIAAhKSwAISk4ACEpRAAhKVAAISlcACEpaAAhKXQAISmAACEpiAAhK3QAISt8ACErhAAhK4wAISuYACErnAAhK6AAISukACErqAAhK7AAISu4ACErvAAhK8AAISvIACErzAAhLbgAIS3AACEtyAAhLdAAIS3cACEt4AAhLeQAIS3oACEt7AAhLfQAIS38ACEuAAAhLgQAIS4MACEuEAAhL/wAITAEACEwEAAhMBgAITAkACEwKAAhMCwAITAwACEwNAAhMDwAITBEACEwSAAhMEwAITBUACEwWAAhMLwAITDAACEwxAAhMMwAITK4ACEywAAhMsgAITLQACEy3AAhMuAAITLkACEy6AAhMuwAITL0ACEy/AAhMwAAITMEACEzDAAhMxAAITT8ACE1BAAhNQwAITUUACE1IAAhNSQAITUoACE1LAAhNTAAITU4ACE1QAAhNUQAITVIACE1UAAhNVQAITdAACE3SAAhN1AAITdYACE3ZAAhN2gAITdsACE3cAAhN3QAITd8ACE3hAAhN4gAITeMACE3lAAhN5gAITmEACE5jAAhOZQAITmcACE5qAAhOawAITmwACE5tAAhObgAITnAACE5yAAhOcwAITnQACE52AAhOdwAITvIACE70AAhO9gAITvgACE77AAhO/AAITv0ACE7+AAhO/wAITwEACE8DAAhPBAAITwUACE8HAAhPCAAIT1EACE91AAhPnAAIT8AACE/DAAhPxQAIT8cACE/JAAhPywAIT80ACE/OAAhP0QAIT+oACFAHAAhQCQAIUAsACFANAAhQDwAIUBEACFATAAhQFQAIUDIACFA1AAhQOAAIUDsACFA+AAhQQQAIUEQACFBHAAhQSQAIUMQACFDGAAhQyAAIUMoACFDNAAhQzgAIUM8ACFDQAAhQ0QAIUNMACFDVAAhQ1gAIUNcACFDZAAhQ2gAIUVUACFFXAAhRWQAIUVsACFFeAAhRXwAIUWAACFFhAAhRYgAIUWQACFFmAAhRZwAIUWgACFFqAAhRawAIUeYACFHoAAhR6gAIUewACFHvAAhR8AAIUfEACFHyAAhR8wAIUfUACFH3AAhR+AAIUfkACFH7AAhR/AAIUncACFJ5AAhSewAIUn0ACFKAAAhSgQAIUoIACFKDAAhShAAIUoYACFKIAAhSiQAIUooACFKMAAhSjQAIUwgACFMKAAhTDAAIUw4ACFMRAAhTEgAIUxMACFMUAAhTFQAIUxcACFMZAAhTGgAIUxsACFMdAAhTHgAIU5kACFObAAhTngAIU6AACFOjAAhTpAAIU6UACFOmAAhTpwAIU6kACFOrAAhTrAAIU60ACFOvAAhTsAAIU9QACFRPAAhUUQAIVFMACFRVAAhUWAAIVFkACFRaAAhUWwAIVFwACFReAAhUYAAIVGEACFRiAAhUZAAIVGUACFT4AAhVGwAIVTsACFVbAAhVXQAIVV8ACFVhAAhVYwAIVWYACFVnAAhVaAAIVWsACFVsAAhVbgAIVW8ACFVyAAhVdQAIVXYACFV3AAhVegAIVXsACFWAAAhVmQAIVaIACFWkAAhVpwAIVbAACFWzAAhVtgAIVbgACFYBAAhWJQAIVkwACFZwAAhWcwAIVnUACFZ3AAhWeQAIVnsACFZ9AAhWfgAIVoEACFaaAAhWuwAIVr0ACFa/AAhWwQAIVsMACFbFAAhWxwAIVskACFbLAAhW7AAIVu8ACFbyAAhW9QAIVvgACFb7AAhW/gAIVwEACFcEAAhXBgAIV4EACFeDAAhXhQAIV4cACFeKAAhXiwAIV4wACFeNAAhXjgAIV5AACFeSAAhXkwAIV5QACFeWAAhXlwAIWBIACFgUAAhYFgAIWBgACFgbAAhYHAAIWB0ACFgeAAhYHwAIWCEACFgjAAhYJAAIWCUACFgnAAhYKAAIWKMACFilAAhYqAAIWKoACFitAAhYrgAIWK8ACFiwAAhYsQAIWLMACFi1AAhYtgAIWLcACFi5AAhYugAIWNMACFjUAAhY1QAIWNcACFlSAAhZVAAIWVYACFlYAAhZWwAIWVwACFldAAhZXgAIWV8ACFlhAAhZYwAIWWQACFllAAhZZwAIWWgACFnjAAhZ5QAIWecACFnpAAhZ7AAIWe0ACFnuAAhZ7wAIWfAACFnyAAhZ9AAIWfUACFn2AAhZ+AAIWfkACFp0AAhadgAIWngACFp6AAhafQAIWn4ACFp/AAhagAAIWoEACFqDAAhahQAIWoYACFqHAAhaiQAIWooACFsFAAhbBwAIWwkACFsLAAhbDgAIWw8ACFsQAAhbEQAIWxIACFsUAAhbFgAIWxcACFsYAAhbGgAIWxsACFuWAAhbmAAIW5oACFucAAhbnwAIW6AACFuhAAhbogAIW6MACFulAAhbpwAIW6gACFupAAhbqwAIW6wACFv1AAhcGQAIXEAACFxkAAhcZwAIXGoACFxsAAhcbgAIXHAACFxyAAhccwAIXHYACFyPAAhcrAAIXK8ACFyyAAhctQAIXLgACFy7AAhcvgAIXMEACFzeAAhc4QAIXOQACFznAAhc6gAIXO0ACFzwAAhc8wAIXPUACF1wAAhdcgAIXXUACF13AAhdegAIXXsACF18AAhdfQAIXX4ACF2AAAhdgwAIXYQACF2FAAhdhwAIXYgACF4DAAheBQAIXggACF4KAAheDQAIXg4ACF4PAAheEAAIXhEACF4TAAheFgAIXhcACF4YAAheGgAIXhsACF6WAAhemAAIXpsACF6dAAheoAAIXqEACF6iAAheowAIXqQACF6mAAheqQAIXqoACF6rAAherQAIXq4ACF8pAAhfKwAIXy4ACF8wAAhfMwAIXzQACF81AAhfNgAIXzcACF85AAhfPAAIXz0ACF8+AAhfQAAIX0EACF/EAAhf6AAIYAwACGAvAAhgVgAIYHYACGCdAAhgxAAIYOQACGEIAAhhLAAIYS4ACGExAAhhMwAIYTUACGE3AAhhOgAIYT0ACGE/AAhhQQAIYUQACGFGAAhhSAAIYUsACGFOAAhhTwAIYVQACGFtAAhhcgAIYXQACGF5AAhhfAAIYX4ACGHHAAhh6wAIYhIACGI2AAhiOQAIYjsACGI9AAhiPwAIYkEACGJDAAhiRAAIYkcACGJgAAhihQAIYocACGKJAAhiiwAIYo0ACGKPAAhikQAIYpMACGKVAAhilwAIYrwACGK/AAhiwgAIYsUACGLIAAhiywAIYs4ACGLRAAhi1AAIYtcACGLZAAhjVAAIY1YACGNZAAhjWwAIY14ACGNfAAhjYAAIY2EACGNiAAhjZAAIY2YACGNnAAhjaAAIY2oACGNrAAhjfAAIY30ACGN/AAhj+gAIY/wACGP+AAhkAAAIZAMACGQEAAhkBQAIZAYACGQHAAhkCQAIZAsACGQMAAhkDQAIZA8ACGQQAAhkiwAIZI0ACGSQAAhkkgAIZJUACGSWAAhklwAIZJgACGSZAAhkmwAIZJ0ACGSeAAhknwAIZKEACGSiAAhkswAIZLQACGS2AAhlMQAIZTMACGU1AAhlNwAIZToACGU7AAhlPAAIZT0ACGU+AAhlQAAIZUIACGVDAAhlRAAIZUYACGVHAAhlwgAIZcQACGXHAAhlyQAIZcwACGXNAAhlzgAIZc8ACGXQAAhl0gAIZdQACGXVAAhl1gAIZdgACGXZAAhl6gAIZesACGXtAAhmaAAIZmoACGZsAAhmbgAIZnEACGZyAAhmcwAIZnQACGZ1AAhmdwAIZnkACGZ6AAhmewAIZn0ACGZ+AAhm+QAIZvsACGb+AAhnAAAIZwMACGcEAAhnBQAIZwYACGcHAAhnCQAIZwsACGcMAAhnDQAIZw8ACGcQAAhnKQAIZyoACGcrAAhnLQAIZ6gACGeqAAhnrAAIZ64ACGexAAhnsgAIZ7MACGe0AAhntQAIZ7cACGe5AAhnugAIZ7sACGe9AAhnvgAIaDkACGg7AAhoPgAIaEAACGhDAAhoRAAIaEUACGhGAAhoRwAIaEkACGhLAAhoTAAIaE0ACGhPAAhoUAAIaFwACGh1AAhokgAIaJUACGiYAAhomwAIaJ4ACGihAAhopAAIaKcACGjEAAhoxwAIaMoACGjNAAho0AAIaNMACGjWAAho2QAIaNsACGjqAAho/AAIaRQACGkrAAhpRAAIaUkACGncAAhp/wAIah8ACGo/AAhqQQAIakMACGpFAAhqRwAIakoACGpLAAhqTAAIak8ACGpQAAhqUgAIalMACGpVAAhqWAAIalkACGpaAAhqXQAIal4ACGpnAAhqgAAIaokACGqLAAhqjQAIapYACGqZAAhqnAAIap4ACGrnAAhrCwAIazIACGtWAAhrWQAIa1sACGtdAAhrXwAIa2EACGtjAAhrZAAIa2cACGuAAAhroQAIa6MACGulAAhrpwAIa6kACGurAAhrrQAIa68ACGuxAAhr0gAIa9UACGvYAAhr2wAIa94ACGvhAAhr5AAIa+cACGvqAAhr7AAIbGcACGxpAAhsawAIbG0ACGxwAAhscQAIbHIACGxzAAhsdAAIbHYACGx4AAhseQAIbHoACGx8AAhsfQAIbPgACGz6AAhs/AAIbP4ACG0BAAhtAgAIbQMACG0EAAhtBQAIbQcACG0JAAhtCgAIbQsACG0NAAhtDgAIbYkACG2LAAhtjgAIbZAACG2TAAhtlAAIbZUACG2WAAhtlwAIbZkACG2bAAhtnAAIbZ0ACG2fAAhtoAAIbbkACG26AAhtuwAIbb0ACG44AAhuOgAIbjwACG4+AAhuQQAIbkIACG5DAAhuRAAIbkUACG5HAAhuSQAIbkoACG5LAAhuTQAIbk4ACG7JAAhuywAIbs0ACG7PAAhu0gAIbtMACG7UAAhu1QAIbtYACG7YAAhu2gAIbtsACG7cAAhu3gAIbt8ACG9aAAhvXAAIb14ACG9gAAhvYwAIb2QACG9lAAhvZgAIb2cACG9pAAhvawAIb2wACG9tAAhvbwAIb3AACG/rAAhv7QAIb+8ACG/xAAhv9AAIb/UACG/2AAhv9wAIb/gACG/6AAhv/AAIb/0ACG/+AAhwAAAIcAEACHB8AAhwfgAIcIAACHCCAAhwhQAIcIYACHCHAAhwiAAIcIkACHCLAAhwjQAIcI4ACHCPAAhwkQAIcJIACHDbAAhw/wAIcSYACHFKAAhxTQAIcU8ACHFRAAhxUwAIcVUACHFXAAhxWAAIcVsACHF0AAhxkQAIcZMACHGVAAhxlwAIcZkACHGbAAhxnQAIcZ8ACHG8AAhxvwAIccIACHHFAAhxyAAIccsACHHOAAhx0QAIcdMACHJOAAhyUAAIclIACHJUAAhyVwAIclgACHJZAAhyWgAIclsACHJdAAhyXwAIcmAACHJhAAhyYwAIcmQACHLfAAhy4QAIcuMACHLlAAhy6AAIcukACHLqAAhy6wAIcuwACHLuAAhy8AAIcvEACHLyAAhy9AAIcvUACHNwAAhzcgAIc3QACHN2AAhzeQAIc3oACHN7AAhzfAAIc30ACHN/AAhzgQAIc4IACHODAAhzhQAIc4YACHQBAAh0AwAIdAYACHQIAAh0CwAIdAwACHQNAAh0DgAIdA8ACHQRAAh0EwAIdBQACHQVAAh0FwAIdBgACHSTAAh0lQAIdJcACHSZAAh0nAAIdJ0ACHSeAAh0nwAIdKAACHSiAAh0pAAIdKUACHSmAAh0qAAIdKkACHUkAAh1JgAIdSgACHUqAAh1LQAIdS4ACHUvAAh1MAAIdTEACHUzAAh1NQAIdTYACHU3AAh1OQAIdToACHW1AAh1twAIdbkACHW7AAh1vgAIdb8ACHXAAAh1wQAIdcIACHXEAAh1xgAIdccACHXIAAh1ygAIdcsACHZeAAh2gQAIdqEACHbBAAh2wwAIdsUACHbHAAh2yQAIdswACHbNAAh2zgAIdtEACHbSAAh21AAIdtUACHbXAAh22gAIdtsACHbcAAh23wAIduAACHblAAh2/gAIdwcACHcJAAh3CwAIdxQACHcXAAh3GgAIdxwACHdlAAh3iQAId7AACHfUAAh31wAId9kACHfbAAh33QAId98ACHfhAAh34gAId+UACHf+AAh4HwAIeCEACHgjAAh4JQAIeCcACHgpAAh4KwAIeC0ACHgvAAh4UAAIeFMACHhWAAh4WQAIeFwACHhfAAh4YgAIeGUACHhoAAh4agAIeOUACHjnAAh46QAIeOsACHjuAAh47wAIePAACHjxAAh48gAIePQACHj2AAh49wAIePgACHj6AAh4+wAIeXYACHl4AAh5egAIeXwACHl/AAh5gAAIeYEACHmCAAh5gwAIeYUACHmHAAh5iAAIeYkACHmLAAh5jAAIegcACHoJAAh6DAAIeg4ACHoRAAh6EgAIehMACHoUAAh6FQAIehcACHoZAAh6GgAIehsACHodAAh6HgAIejcACHo4AAh6OQAIejsACHq2AAh6uAAIeroACHq8AAh6vwAIesAACHrBAAh6wgAIesMACHrFAAh6xwAIesgACHrJAAh6ywAIeswACHtHAAh7SQAIe0sACHtNAAh7UAAIe1EACHtSAAh7UwAIe1QACHtWAAh7WAAIe1kACHtaAAh7XAAIe10ACHvYAAh72gAIe9wACHveAAh74QAIe+IACHvjAAh75AAIe+UACHvnAAh76QAIe+oACHvrAAh77QAIe+4ACHxpAAh8awAIfG0ACHxvAAh8cgAIfHMACHx0AAh8dQAIfHYACHx4AAh8egAIfHsACHx8AAh8fgAIfH8ACHz6AAh8/AAIfP4ACH0AAAh9AwAIfQQACH0FAAh9BgAIfQcACH0JAAh9CwAIfQwACH0NAAh9DwAIfRAACH1ZAAh9fQAIfaQACH3IAAh9ywAIfc0ACH3PAAh90QAIfdMACH3VAAh91gAIfdkACH3yAAh+DwAIfhEACH4TAAh+FQAIfhcACH4ZAAh+GwAIfh0ACH46AAh+PQAIfkAACH5DAAh+RgAIfkkACH5MAAh+TwAIflEACH7MAAh+zgAIftAACH7SAAh+1QAIftYACH7XAAh+2AAIftkACH7bAAh+3QAIft4ACH7fAAh+4QAIfuIACH9dAAh/XwAIf2EACH9jAAh/ZgAIf2cACH9oAAh/aQAIf2oACH9sAAh/bgAIf28ACH9wAAh/cgAIf3MACH/uAAh/8AAIf/IACH/0AAh/9wAIf/gACH/5AAh/+gAIf/sACH/9AAh//wAIgAAACIABAAiAAwAIgAQACIB/AAiAgQAIgIMACICFAAiAiAAIgIkACICKAAiAiwAIgIwACICOAAiAkAAIgJEACICSAAiAlAAIgJUACIEQAAiBEgAIgRQACIEWAAiBGQAIgRoACIEbAAiBHAAIgR0ACIEfAAiBIQAIgSIACIEjAAiBJQAIgSYACIGhAAiBowAIgaYACIGoAAiBqwAIgawACIGtAAiBrgAIga8ACIGxAAiBswAIgbQACIG1AAiBtwAIgbgACIHHAAiCQgAIgkQACIJGAAiCSAAIgksACIJMAAiCTQAIgk4ACIJPAAiCUQAIglMACIJUAAiCVQAIglcACIJYAAiC6wAIgw4ACIMuAAiDTgAIg1AACINSAAiDVAAIg1YACINZAAiDWgAIg1sACINeAAiDXwAIg2EACINiAAiDZAAIg2cACINoAAiDaQAIg2wACINtAAiDcgAIg4sACIOUAAiDlgAIg5gACIOhAAiDpAAIg6cACIOpAAiD8gAIhBYACIQ9AAiEYQAIhGQACIRmAAiEaAAIhGoACIRsAAiEbgAIhG8ACIRyAAiEiwAIhKwACISuAAiEsAAIhLIACIS0AAiEtgAIhLgACIS6AAiEvAAIhN0ACITgAAiE4wAIhOYACITpAAiE7AAIhO8ACITyAAiE9QAIhPcACIVyAAiFdAAIhXYACIV4AAiFewAIhXwACIV9AAiFfgAIhX8ACIWBAAiFgwAIhYQACIWFAAiFhwAIhYgACIYDAAiGBQAIhgcACIYJAAiGDAAIhg0ACIYOAAiGDwAIhhAACIYSAAiGFAAIhhUACIYWAAiGGAAIhhkACIaUAAiGlgAIhpkACIabAAiGngAIhp8ACIagAAiGoQAIhqIACIakAAiGpgAIhqcACIaoAAiGqgAIhqsACIbEAAiGxQAIhsYACIbIAAiHQwAIh0UACIdHAAiHSQAIh0wACIdNAAiHTgAIh08ACIdQAAiHUgAIh1QACIdVAAiHVgAIh1gACIdZAAiH1AAIh9YACIfYAAiH2gAIh90ACIfeAAiH3wAIh+AACIfhAAiH4wAIh+UACIfmAAiH5wAIh+kACIfqAAiIZQAIiGcACIhpAAiIawAIiG4ACIhvAAiIcAAIiHEACIhyAAiIdAAIiHYACIh3AAiIeAAIiHoACIh7AAiI9gAIiPgACIj6AAiI/AAIiP8ACIkAAAiJAQAIiQIACIkDAAiJBQAIiQcACIkIAAiJCQAIiQsACIkMAAiJhwAIiYkACImLAAiJjQAIiZAACImRAAiJkgAIiZMACImUAAiJlgAIiZgACImZAAiJmgAIiZwACImdAAiJ5gAIigoACIoxAAiKVQAIilgACIpaAAiKXAAIil4ACIpgAAiKYgAIimMACIpmAAiKfwAIipwACIqeAAiKoAAIiqIACIqkAAiKpgAIiqgACIqqAAiKxwAIisoACIrNAAiK0AAIitMACIrWAAiK2QAIitwACIreAAiLWQAIi1sACItdAAiLXwAIi2IACItjAAiLZAAIi2UACItmAAiLaAAIi2oACItrAAiLbAAIi24ACItvAAiL6gAIi+wACIvuAAiL8AAIi/MACIv0AAiL9QAIi/YACIv3AAiL+QAIi/sACIv8AAiL/QAIi/8ACIwAAAiMewAIjH0ACIx/AAiMgQAIjIQACIyFAAiMhgAIjIcACIyIAAiMigAIjIwACIyNAAiMjgAIjJAACIyRAAiNDAAIjQ4ACI0RAAiNEwAIjRYACI0XAAiNGAAIjRkACI0aAAiNHAAIjR4ACI0fAAiNIAAIjSIACI0jAAiNngAIjaAACI2iAAiNpAAIjacACI2oAAiNqQAIjaoACI2rAAiNrQAIja8ACI2wAAiNsQAIjbMACI20AAiOLwAIjjEACI4zAAiONQAIjjgACI45AAiOOgAIjjsACI48AAiOPgAIjkAACI5BAAiOQgAIjkQACI5FAAiOwAAIjsIACI7EAAiOxgAIjskACI7KAAiOywAIjswACI7NAAiOzwAIjtEACI7SAAiO0wAIjtUACI7WAAiPaQAIj4wACI+sAAiPzAAIj84ACI/QAAiP0gAIj9QACI/XAAiP2AAIj9kACI/cAAiP3QAIj98ACI/gAAiP4wAIj+YACI/nAAiP6AAIj+sACI/sAAiP8QAIkAoACJATAAiQFQAIkBgACJAhAAiQJAAIkCcACJApAAiQcgAIkJYACJC9AAiQ4QAIkOQACJDmAAiQ6AAIkOoACJDsAAiQ7gAIkO8ACJDyAAiRCwAIkSwACJEuAAiRMAAIkTIACJE0AAiRNgAIkTgACJE6AAiRPAAIkV0ACJFgAAiRYwAIkWYACJFpAAiRbAAIkW8ACJFyAAiRdQAIkXcACJHyAAiR9AAIkfYACJH4AAiR+wAIkfwACJH9AAiR/gAIkf8ACJIBAAiSAwAIkgQACJIFAAiSBwAIkggACJKDAAiShQAIkocACJKJAAiSjAAIko0ACJKOAAiSjwAIkpAACJKSAAiSlAAIkpUACJKWAAiSmAAIkpkACJMUAAiTFgAIkxkACJMbAAiTHgAIkx8ACJMgAAiTIQAIkyIACJMkAAiTJgAIkycACJMoAAiTKgAIkysACJNEAAiTRQAIk0YACJNIAAiTwwAIk8UACJPHAAiTyQAIk8wACJPNAAiTzgAIk88ACJPQAAiT0gAIk9QACJPVAAiT1gAIk9gACJPZAAiUVAAIlFYACJRYAAiUWgAIlF0ACJReAAiUXwAIlGAACJRhAAiUYwAIlGUACJRmAAiUZwAIlGkACJRqAAiU5QAIlOcACJTpAAiU6wAIlO4ACJTvAAiU8AAIlPEACJTyAAiU9AAIlPYACJT3AAiU+AAIlPoACJT7AAiVdgAIlXgACJV6AAiVfAAIlX8ACJWAAAiVgQAIlYIACJWDAAiVhQAIlYcACJWIAAiViQAIlYsACJWMAAiWBwAIlgkACJYLAAiWDQAIlhAACJYRAAiWEgAIlhMACJYUAAiWFgAIlhgACJYZAAiWGgAIlhwACJYdAAiWZgAIlooACJaxAAiW1QAIltgACJbbAAiW3QAIlt8ACJbhAAiW4wAIluQACJbnAAiXAAAIlx0ACJcgAAiXIwAIlyYACJcpAAiXLAAIly8ACJcyAAiXTwAIl1IACJdVAAiXWAAIl1sACJdeAAiXYQAIl2QACJdmAAiX4QAIl+MACJfmAAiX6AAIl+sACJfsAAiX7QAIl+4ACJfvAAiX8QAIl/QACJf1AAiX9gAIl/gACJf5AAiYdAAImHYACJh5AAiYewAImH4ACJh/AAiYgAAImIEACJiCAAiYhAAImIcACJiIAAiYiQAImIsACJiMAAiZBwAImQkACJkMAAiZDgAImREACJkSAAiZEwAImRQACJkVAAiZFwAImRoACJkbAAiZHAAImR4ACJkfAAiZmgAImZwACJmfAAiZoQAImaQACJmlAAiZpgAImacACJmoAAiZqgAIma0ACJmuAAiZrwAImbEACJmyAAiaLQAImi8ACJoxAAiaMwAImjYACJo3AAiaOAAImjkACJo6AAiaPAAImj8ACJpAAAiaQQAImkMACJpEAAiavwAImsEACJrDAAiaxQAImsgACJrJAAiaygAImssACJrMAAiazgAImtEACJrSAAia0wAImtUACJrWAAibUQAIm1MACJtWAAibWAAIm1sACJtcAAibXQAIm14ACJtfAAibYQAIm2QACJtlAAibZgAIm2gACJtpAAib/AAInB8ACJw/AAicXwAInGEACJxjAAicZQAInGcACJxqAAicawAInGwACJxvAAiccAAInHIACJxzAAicdgAInHkACJx6AAicewAInH4ACJx/AAichAAInJ0ACJymAAicqAAInKsACJy0AAictwAInLoACJy8AAidBQAInSkACJ1QAAiddAAInXcACJ15AAidewAInX0ACJ1/AAidgQAInYIACJ2FAAidngAInb8ACJ3BAAidwwAIncUACJ3HAAidyQAIncsACJ3NAAidzwAInfAACJ3zAAid9gAInfkACJ38AAid/wAIngIACJ4FAAieCAAIngoACJ6FAAiehwAInokACJ6LAAiejgAIno8ACJ6QAAiekQAInpIACJ6UAAielgAInpcACJ6YAAiemgAInpsACJ8WAAifGAAInxoACJ8cAAifHwAInyAACJ8hAAifIgAInyMACJ8lAAifJwAInygACJ8pAAifKwAInywACJ+nAAifqQAIn6wACJ+uAAifsQAIn7IACJ+zAAiftAAIn7UACJ+3AAifuQAIn7oACJ+7AAifvQAIn74ACJ/XAAif2AAIn9kACJ/bAAigVgAIoFgACKBaAAigXAAIoF8ACKBgAAigYQAIoGIACKBjAAigZQAIoGcACKBoAAigaQAIoGsACKBsAAig5wAIoOkACKDrAAig7QAIoPAACKDxAAig8gAIoPMACKD0AAig9gAIoPgACKD5AAig+gAIoPwACKD9AAiheAAIoXoACKF8AAihfgAIoYEACKGCAAihgwAIoYQACKGFAAihhwAIoYkACKGKAAihiwAIoY0ACKGOAAiiCQAIogsACKINAAiiDwAIohIACKITAAiiFAAIohUACKIWAAiiGAAIohoACKIbAAiiHAAIoh4ACKIfAAiimgAIopwACKKeAAiioAAIoqMACKKkAAiipQAIoqYACKKnAAiiqQAIoqsACKKsAAiirQAIoq8ACKKwAAii+QAIox0ACKNEAAijaAAIo2sACKNuAAijcAAIo3IACKN0AAijdgAIo3cACKN6AAijkwAIo7AACKOzAAijtgAIo7kACKO8AAijvwAIo8IACKPFAAij4gAIo+UACKPoAAij6wAIo+4ACKPxAAij9AAIo/cACKP5AAikdAAIpHYACKR5AAikewAIpH4ACKR/AAikgAAIpIEACKSCAAikhAAIpIcACKSIAAikiQAIpIsACKSMAAilBwAIpQkACKUMAAilDgAIpREACKUSAAilEwAIpRQACKUVAAilFwAIpRoACKUbAAilHAAIpR4ACKUfAAilmgAIpZwACKWfAAiloQAIpaQACKWlAAilpgAIpacACKWoAAilqgAIpa0ACKWuAAilrwAIpbEACKWyAAimLQAIpi8ACKYyAAimNAAIpjcACKY4AAimOQAIpjoACKY7AAimPQAIpkAACKZBAAimQgAIpkQACKZFAAimwAAIpsIACKbEAAimxgAIpskACKbKAAimywAIpswACKbNAAimzwAIptIACKbTAAim1AAIptYACKbXAAinUgAIp1QACKdWAAinWAAIp1sACKdcAAinXQAIp14ACKdfAAinYQAIp2QACKdlAAinZgAIp2gACKdpAAin5AAIp+YACKfpAAin6wAIp+4ACKfvAAin8AAIp/EACKfyAAin9AAIp/cACKf4AAin+QAIp/sACKf8AAiojwAIqLIACKjSAAio8gAIqPQACKj2AAio+AAIqPoACKj9AAio/gAIqP8ACKkCAAipAwAIqQUACKkGAAipCQAIqQwACKkNAAipDgAIqREACKkSAAipFwAIqTAACKk5AAipOwAIqT4ACKlHAAipSgAIqU0ACKlPAAipmAAIqbwACKnjAAiqBwAIqgoACKoMAAiqDgAIqhAACKoSAAiqFAAIqhUACKoYAAiqMQAIqlIACKpUAAiqVgAIqlgACKpaAAiqXAAIql4ACKpgAAiqYgAIqoMACKqGAAiqiQAIqowACKqPAAiqkgAIqpUACKqYAAiqmwAIqp0ACKsYAAirGgAIqxwACKseAAirIQAIqyIACKsjAAirJAAIqyUACKsnAAirKQAIqyoACKsrAAirLQAIqy4ACKupAAirqwAIq60ACKuvAAirsgAIq7MACKu0AAirtQAIq7YACKu4AAirugAIq7sACKu8AAirvgAIq78ACKw6AAisPAAIrD8ACKxBAAisRAAIrEUACKxGAAisRwAIrEgACKxKAAisTAAIrE0ACKxOAAisUAAIrFEACKxqAAisawAIrGwACKxuAAis6QAIrOsACKztAAis7wAIrPIACKzzAAis9AAIrPUACKz2AAis+AAIrPoACKz7AAis/AAIrP4ACKz/AAitegAIrXwACK1+AAitgAAIrYMACK2EAAithQAIrYYACK2HAAitiQAIrYsACK2MAAitjQAIrY8ACK2QAAiuCwAIrg0ACK4PAAiuEQAIrhQACK4VAAiuFgAIrhcACK4YAAiuGgAIrhwACK4dAAiuHgAIriAACK4hAAiunAAIrp4ACK6gAAiuogAIrqUACK6mAAiupwAIrqgACK6pAAiuqwAIrq0ACK6uAAiurwAIrrEACK6yAAivLQAIry8ACK8xAAivMwAIrzYACK83AAivOAAIrzkACK86AAivPAAIrz4ACK8/AAivQAAIr0IACK9DAAivjAAIr7AACK/XAAiv+wAIr/4ACLABAAiwAwAIsAUACLAHAAiwCQAIsAoACLANAAiwJgAIsEMACLBGAAiwSQAIsEwACLBPAAiwUgAIsFUACLBYAAiwdQAIsHgACLB7AAiwfgAIsIEACLCEAAiwhwAIsIoACLCMAAixBwAIsQkACLEMAAixDgAIsREACLESAAixEwAIsRQACLEVAAixFwAIsRoACLEbAAixHAAIsR4ACLEfAAixmgAIsZwACLGfAAixoQAIsaQACLGlAAixpgAIsacACLGoAAixqgAIsa0ACLGuAAixrwAIsbEACLGyAAiyLQAIsi8ACLIyAAiyNAAIsjcACLI4AAiyOQAIsjoACLI7AAiyPQAIskAACLJBAAiyQgAIskQACLJFAAiywAAIssIACLLFAAiyxwAIssoACLLLAAiyzAAIss0ACLLOAAiy0AAIstMACLLUAAiy1QAIstcACLLYAAizUwAIs1UACLNXAAizWQAIs1wACLNdAAizXgAIs18ACLNgAAizYgAIs2UACLNmAAizZwAIs2kACLNqAAiz5QAIs+cACLPpAAiz6wAIs+4ACLPvAAiz8AAIs/EACLPyAAiz9AAIs/cACLP4AAiz+QAIs/sACLP8AAi0dwAItHkACLR8AAi0fgAItIEACLSCAAi0gwAItIQACLSFAAi0hwAItIoACLSLAAi0jAAItI4ACLSPAAi1IgAItUUACLVlAAi1hQAItYcACLWJAAi1iwAItY0ACLWQAAi1kQAItZIACLWVAAi1lgAItZgACLWZAAi1mwAItZ4ACLWfAAi1oAAItaMACLWkAAi1qQAItcIACLXLAAi1zQAItc8ACLXYAAi12wAItd4ACLXgAAi2KQAItk0ACLZ0AAi2mAAItpsACLadAAi2nwAItqEACLajAAi2pQAItqYACLapAAi2wgAItuMACLblAAi25wAItukACLbrAAi27QAItu8ACLbxAAi28wAItxQACLcXAAi3GgAItx0ACLcgAAi3IwAItyYACLcpAAi3LAAIty4ACLepAAi3qwAIt60ACLevAAi3sgAIt7MACLe0AAi3tQAIt7YACLe4AAi3ugAIt7sACLe8AAi3vgAIt78ACLg6AAi4PAAIuD4ACLhAAAi4QwAIuEQACLhFAAi4RgAIuEcACLhJAAi4SwAIuEwACLhNAAi4TwAIuFAACLjLAAi4zQAIuNAACLjSAAi41QAIuNYACLjXAAi42AAIuNkACLjbAAi43QAIuN4ACLjfAAi44QAIuOIACLj7AAi4/AAIuP0ACLj/AAi5egAIuXwACLl+AAi5gAAIuYMACLmEAAi5hQAIuYYACLmHAAi5iQAIuYsACLmMAAi5jQAIuY8ACLmQAAi6CwAIug0ACLoPAAi6EQAIuhQACLoVAAi6FgAIuhcACLoYAAi6GgAIuhwACLodAAi6HgAIuiAACLohAAi6nAAIup4ACLqgAAi6ogAIuqUACLqmAAi6pwAIuqgACLqpAAi6qwAIuq0ACLquAAi6rwAIurEACLqyAAi7LQAIuy8ACLsxAAi7MwAIuzYACLs3AAi7OAAIuzkACLs6AAi7PAAIuz4ACLs/AAi7QAAIu0IACLtDAAi7vgAIu8AACLvCAAi7xAAIu8cACLvIAAi7yQAIu8oACLvLAAi7zQAIu88ACLvQAAi70QAIu9MACLvUAAi8HQAIvEEACLxoAAi8jAAIvI8ACLyRAAi8kwAIvJUACLyXAAi8mQAIvJoACLydAAi8tgAIvNMACLzVAAi81wAIvNkACLzbAAi83QAIvN8ACLzhAAi8/gAIvQEACL0EAAi9BwAIvQoACL0NAAi9EAAIvRMACL0VAAi9kAAIvZIACL2UAAi9lgAIvZkACL2aAAi9mwAIvZwACL2dAAi9nwAIvaEACL2iAAi9owAIvaUACL2mAAi+IQAIviMACL4lAAi+JwAIvioACL4rAAi+LAAIvi0ACL4uAAi+MAAIvjIACL4zAAi+NAAIvjYACL43AAi+sgAIvrQACL62AAi+uAAIvrsACL68AAi+vQAIvr4ACL6/AAi+wQAIvsMACL7EAAi+xQAIvscACL7IAAi/QwAIv0UACL9IAAi/SgAIv00ACL9OAAi/TwAIv1AACL9RAAi/UwAIv1UACL9WAAi/VwAIv1kACL9aAAi/1QAIv9cACL/ZAAi/2wAIv94ACL/fAAi/4AAIv+EACL/iAAi/5AAIv+YACL/nAAi/6AAIv+oACL/rAAjAZgAIwGgACMBqAAjAbAAIwG8ACMBwAAjAcQAIwHIACMBzAAjAdQAIwHcACMB4AAjAeQAIwHsACMB8AAjA9wAIwPkACMD7AAjA/QAIwQAACMEBAAjBAgAIwQMACMEEAAjBBgAIwQgACMEJAAjBCgAIwQwACMENAAjBoAAIwcMACMHjAAjCAwAIwgUACMIHAAjCCQAIwgsACMIOAAjCDwAIwhAACMITAAjCFAAIwhYACMIXAAjCGQAIwhwACMIdAAjCHgAIwiEACMIiAAjCJwAIwkAACMJJAAjCSwAIwk0ACMJWAAjCWQAIwlwACMJeAAjCpwAIwssACMLyAAjDFgAIwxkACMMbAAjDHQAIwx8ACMMhAAjDIwAIwyQACMMnAAjDQAAIw2EACMNjAAjDZQAIw2cACMNpAAjDawAIw20ACMNvAAjDcQAIw5IACMOVAAjDmAAIw5sACMOeAAjDoQAIw6QACMOnAAjDqgAIw6wACMQnAAjEKQAIxCsACMQtAAjEMAAIxDEACMQyAAjEMwAIxDQACMQ2AAjEOAAIxDkACMQ6AAjEPAAIxD0ACMS4AAjEugAIxLwACMS+AAjEwQAIxMIACMTDAAjExAAIxMUACMTHAAjEyQAIxMoACMTLAAjEzQAIxM4ACMVJAAjFSwAIxU4ACMVQAAjFUwAIxVQACMVVAAjFVgAIxVcACMVZAAjFWwAIxVwACMVdAAjFXwAIxWAACMV5AAjFegAIxXsACMV9AAjF+AAIxfoACMX8AAjF/gAIxgEACMYCAAjGAwAIxgQACMYFAAjGBwAIxgkACMYKAAjGCwAIxg0ACMYOAAjGiQAIxosACMaNAAjGjwAIxpIACMaTAAjGlAAIxpUACMaWAAjGmAAIxpoACMabAAjGnAAIxp4ACMafAAjHGgAIxxwACMceAAjHIAAIxyMACMckAAjHJQAIxyYACMcnAAjHKQAIxysACMcsAAjHLQAIxy8ACMcwAAjHqwAIx60ACMevAAjHsQAIx7QACMe1AAjHtgAIx7cACMe4AAjHugAIx7wACMe9AAjHvgAIx8AACMfBAAjIPAAIyD4ACMhAAAjIQgAIyEUACMhGAAjIRwAIyEgACMhJAAjISwAIyE0ACMhOAAjITwAIyFEACMhSAAjImwAIyL8ACMjmAAjJCgAIyQ0ACMkPAAjJEQAIyRMACMkVAAjJFwAIyRgACMkbAAjJNAAIyVEACMlTAAjJVQAIyVcACMlZAAjJWwAIyV0ACMlfAAjJfAAIyX8ACMmCAAjJhQAIyYgACMmLAAjJjgAIyZEACMmTAAjKDgAIyhAACMoSAAjKFAAIyhcACMoYAAjKGQAIyhoACMobAAjKHQAIyh8ACMogAAjKIQAIyiMACMokAAjKnwAIyqEACMqjAAjKpQAIyqgACMqpAAjKqgAIyqsACMqsAAjKrgAIyrAACMqxAAjKsgAIyrQACMq1AAjLMAAIyzIACMs0AAjLNgAIyzkACMs6AAjLOwAIyzwACMs9AAjLPwAIy0EACMtCAAjLQwAIy0UACMtGAAjLwQAIy8MACMvGAAjLyAAIy8sACMvMAAjLzQAIy84ACMvPAAjL0QAIy9MACMvUAAjL1QAIy9cACMvYAAjMUwAIzFUACMxXAAjMWQAIzFwACMxdAAjMXgAIzF8ACMxgAAjMYgAIzGQACMxlAAjMZgAIzGgACMxpAAjM5AAIzOYACMzoAAjM6gAIzO0ACMzuAAjM7wAIzPAACMzxAAjM8wAIzPUACMz2AAjM9wAIzPkACMz6AAjNdQAIzXcACM15AAjNewAIzX4ACM1/AAjNgAAIzYEACM2CAAjNhAAIzYYACM2HAAjNiAAIzYoACM2LAAjNnAAIzZ0ACM2fAAjOGgAIzhwACM4eAAjOIAAIziMACM4kAAjOJQAIziYACM4nAAjOKQAIziwACM4tAAjOLgAIzjAACM4xAAjOrAAIzq4ACM6wAAjOsgAIzrUACM62AAjOtwAIzrgACM65AAjOuwAIzr4ACM6/AAjOwAAIzsIACM7DAAjPPgAIz0AACM9DAAjPRQAIz0gACM9JAAjPSgAIz0sACM9MAAjPTgAIz1EACM9SAAjPUwAIz1UACM9WAAjP6QAI0AwACNAsAAjQTAAI0E4ACNBQAAjQUgAI0FQACNBXAAjQWAAI0FkACNBcAAjQXQAI0F8ACNBgAAjQYgAI0GUACNBmAAjQZwAI0GoACNBrAAjQcAAI0IkACNCSAAjQlAAI0JYACNCfAAjQogAI0KUACNCnAAjQ8AAI0RQACNE7AAjRXwAI0WIACNFkAAjRZgAI0WgACNFqAAjRbAAI0W0ACNFwAAjRiQAI0aoACNGsAAjRrgAI0bAACNGyAAjRtAAI0bYACNG4AAjRugAI0dsACNHeAAjR4QAI0eQACNHnAAjR6gAI0e0ACNHwAAjR8wAI0fUACNJwAAjScgAI0nQACNJ2AAjSeQAI0noACNJ7AAjSfAAI0n0ACNJ/AAjSgQAI0oIACNKDAAjShQAI0oYACNMBAAjTAwAI0wUACNMHAAjTCgAI0wsACNMMAAjTDQAI0w4ACNMQAAjTEgAI0xMACNMUAAjTFgAI0xcACNOSAAjTlAAI05cACNOZAAjTnAAI050ACNOeAAjTnwAI06AACNOiAAjTpAAI06UACNOmAAjTqAAI06kACNPCAAjTwwAI08QACNPGAAjUQQAI1EMACNRFAAjURwAI1EoACNRLAAjUTAAI1E0ACNROAAjUUAAI1FIACNRTAAjUVAAI1FYACNRXAAjU0gAI1NQACNTWAAjU2AAI1NsACNTcAAjU3QAI1N4ACNTfAAjU4QAI1OMACNTkAAjU5QAI1OcACNToAAjVYwAI1WUACNVnAAjVaQAI1WwACNVtAAjVbgAI1W8ACNVwAAjVcgAI1XQACNV1AAjVdgAI1XgACNV5AAjV9AAI1fYACNX4AAjV+gAI1f0ACNX+AAjV/wAI1gAACNYBAAjWAwAI1gUACNYGAAjWBwAI1gkACNYKAAjWhQAI1ocACNaJAAjWiwAI1o4ACNaPAAjWkAAI1pEACNaSAAjWlAAI1pYACNaXAAjWmAAI1poACNabAAjW5AAI1wgACNcvAAjXUwAI11YACNdYAAjXWgAI11wACNdeAAjXYAAI12EACNdkAAjXfQAI15oACNecAAjXngAI16AACNeiAAjXpAAI16YACNeoAAjXxQAI18gACNfLAAjXzgAI19EACNfUAAjX1wAI19oACNfcAAjYVwAI2FkACNhbAAjYXQAI2GAACNhhAAjYYgAI2GMACNhkAAjYZgAI2GgACNhpAAjYagAI2GwACNhtAAjY6AAI2OoACNjsAAjY7gAI2PEACNjyAAjY8wAI2PQACNj1AAjY9wAI2PkACNj6AAjY+wAI2P0ACNj+AAjZeQAI2XsACNl9AAjZfwAI2YIACNmDAAjZhAAI2YUACNmGAAjZiAAI2YoACNmLAAjZjAAI2Y4ACNmPAAjaCgAI2gwACNoOAAjaEAAI2hMACNoUAAjaFQAI2hYACNoXAAjaGQAI2hsACNocAAjaHQAI2h8ACNogAAjamwAI2p0ACNqfAAjaoQAI2qQACNqlAAjapgAI2qcACNqoAAjaqgAI2qwACNqtAAjargAI2rAACNqxAAjbLAAI2y4ACNsxAAjbMwAI2zYACNs3AAjbOAAI2zkACNs6AAjbPAAI2z4ACNs/AAjbQAAI20IACNtDAAjbYgAI290ACNvfAAjb4QAI2+MACNvmAAjb5wAI2+gACNvpAAjb6gAI2+wACNvuAAjb7wAI2/AACNvyAAjb8wAI3IYACNypAAjcyQAI3OkACNzrAAjc7QAI3O8ACNzxAAjc9AAI3PUACNz2AAjc+QAI3PoACNz8AAjc/QAI3QAACN0DAAjdBAAI3QUACN0IAAjdCQAI3Q4ACN0nAAjdMAAI3TIACN01AAjdPgAI3UEACN1EAAjdRgAI3Y8ACN2zAAjd2gAI3f4ACN4BAAjeAwAI3gUACN4HAAjeCQAI3gsACN4MAAjeDwAI3igACN5JAAjeSwAI3k0ACN5PAAjeUQAI3lMACN5VAAjeVwAI3lkACN56AAjefQAI3oAACN6DAAjehgAI3okACN6MAAjejwAI3pIACN6UAAjfDwAI3xEACN8TAAjfFQAI3xgACN8ZAAjfGgAI3xsACN8cAAjfHgAI3yAACN8hAAjfIgAI3yQACN8lAAjfoAAI36IACN+kAAjfpgAI36kACN+qAAjfqwAI36wACN+tAAjfrwAI37EACN+yAAjfswAI37UACN+2AAjgMQAI4DMACOA2AAjgOAAI4DsACOA8AAjgPQAI4D4ACOA/AAjgQQAI4EMACOBEAAjgRQAI4EcACOBIAAjgYQAI4GIACOBjAAjgZQAI4OAACODiAAjg5AAI4OYACODpAAjg6gAI4OsACODsAAjg7QAI4O8ACODxAAjg8gAI4PMACOD1AAjg9gAI4XEACOFzAAjhdQAI4XcACOF6AAjhewAI4XwACOF9AAjhfgAI4YAACOGCAAjhgwAI4YQACOGGAAjhhwAI4gIACOIEAAjiBgAI4ggACOILAAjiDAAI4g0ACOIOAAjiDwAI4hEACOITAAjiFAAI4hUACOIXAAjiGAAI4pMACOKVAAjilwAI4pkACOKcAAjinQAI4p4ACOKfAAjioAAI4qIACOKkAAjipQAI4qYACOKoAAjiqQAI4yQACOMmAAjjKAAI4yoACOMtAAjjLgAI4y8ACOMwAAjjMQAI4zMACOM1AAjjNgAI4zcACOM5AAjjOgAI44MACOOnAAjjzgAI4/IACOP1AAjj+AAI4/oACOP8AAjj/gAI5AAACOQBAAjkBAAI5B0ACOQ6AAjkPQAI5EAACORDAAjkRgAI5EkACORMAAjkTwAI5GwACORvAAjkcgAI5HUACOR4AAjkewAI5H4ACOSBAAjkgwAI5P4ACOUAAAjlAwAI5QUACOUIAAjlCQAI5QoACOULAAjlDAAI5Q4ACOURAAjlEgAI5RMACOUVAAjlFgAI5ZEACOWTAAjllgAI5ZgACOWbAAjlnAAI5Z0ACOWeAAjlnwAI5aEACOWkAAjlpQAI5aYACOWoAAjlqQAI5iQACOYmAAjmKQAI5isACOYuAAjmLwAI5jAACOYxAAjmMgAI5jQACOY3AAjmOAAI5jkACOY7AAjmPAAI5rcACOa5AAjmvAAI5r4ACObBAAjmwgAI5sMACObEAAjmxQAI5scACObKAAjmywAI5swACObOAAjmzwAI50oACOdMAAjnTgAI51AACOdTAAjnVAAI51UACOdWAAjnVwAI51kACOdcAAjnXQAI514ACOdgAAjnYQAI59wACOfeAAjn4AAI5+IACOflAAjn5gAI5+cACOfoAAjn6QAI5+sACOfuAAjn7wAI5/AACOfyAAjn8wAI6G4ACOhwAAjocwAI6HUACOh4AAjoeQAI6HoACOh7AAjofAAI6H4ACOiBAAjoggAI6IMACOiFAAjohgAI6RkACOk8AAjpXAAI6XwACOl+AAjpgAAI6YIACOmEAAjphwAI6YgACOmJAAjpjAAI6Y0ACOmPAAjpkAAI6ZMACOmWAAjplwAI6ZgACOmbAAjpnAAI6aEACOm6AAjpwwAI6cUACOnIAAjp0QAI6dQACOnXAAjp2QAI6iIACOpGAAjqbQAI6pEACOqUAAjqlgAI6pgACOqaAAjqnAAI6p4ACOqfAAjqogAI6rsACOrcAAjq3gAI6uAACOriAAjq5AAI6uYACOroAAjq6gAI6uwACOsNAAjrEAAI6xMACOsWAAjrGQAI6xwACOsfAAjrIgAI6yUACOsnAAjrogAI66QACOumAAjrqAAI66sACOusAAjrrQAI664ACOuvAAjrsQAI67MACOu0AAjrtQAI67cACOu4AAjsMwAI7DUACOw3AAjsOQAI7DwACOw9AAjsPgAI7D8ACOxAAAjsQgAI7EQACOxFAAjsRgAI7EgACOxJAAjsxAAI7MYACOzJAAjsywAI7M4ACOzPAAjs0AAI7NEACOzSAAjs1AAI7NYACOzXAAjs2AAI7NoACOzbAAjs9AAI7PUACOz2AAjs+AAI7XMACO11AAjtdwAI7XkACO18AAjtfQAI7X4ACO1/AAjtgAAI7YIACO2EAAjthQAI7YYACO2IAAjtiQAI7gQACO4GAAjuCAAI7goACO4NAAjuDgAI7g8ACO4QAAjuEQAI7hMACO4VAAjuFgAI7hcACO4ZAAjuGgAI7pUACO6XAAjumQAI7psACO6eAAjunwAI7qAACO6hAAjuogAI7qQACO6mAAjupwAI7qgACO6qAAjuqwAI7yYACO8oAAjvKgAI7ywACO8vAAjvMAAI7zEACO8yAAjvMwAI7zUACO83AAjvOAAI7zkACO87AAjvPAAI77cACO+5AAjvuwAI770ACO/AAAjvwQAI78IACO/DAAjvxAAI78YACO/IAAjvyQAI78oACO/MAAjvzQAI8BYACPA6AAjwYQAI8IUACPCIAAjwiwAI8I0ACPCPAAjwkQAI8JMACPCUAAjwlwAI8LAACPDNAAjw0AAI8NMACPDWAAjw2QAI8NwACPDfAAjw4gAI8P8ACPECAAjxBQAI8QgACPELAAjxDgAI8REACPEUAAjxFgAI8ZEACPGTAAjxlgAI8ZgACPGbAAjxnAAI8Z0ACPGeAAjxnwAI8aEACPGkAAjxpQAI8aYACPGoAAjxqQAI8iQACPImAAjyKQAI8isACPIuAAjyLwAI8jAACPIxAAjyMgAI8jQACPI3AAjyOAAI8jkACPI7AAjyPAAI8rcACPK5AAjyvAAI8r4ACPLBAAjywgAI8sMACPLEAAjyxQAI8scACPLKAAjyywAI8swACPLOAAjyzwAI80oACPNMAAjzTwAI81EACPNUAAjzVQAI81YACPNXAAjzWAAI81oACPNdAAjzXgAI818ACPNhAAjzYgAI890ACPPfAAjz4QAI8+MACPPmAAjz5wAI8+gACPPpAAjz6gAI8+wACPPvAAjz8AAI8/EACPPzAAjz9AAI9G8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ACQaKAAkGjAAJBo0ACQaeAAkGnwAJBqEACQccAAkHHgAJByAACQciAAkHJQAJByYACQcnAAkHKAAJBykACQcrAAkHLQAJBy4ACQcvAAkHMQAJBzIACQetAAkHrwAJB7IACQe0AAkHtwAJB7gACQe5AAkHugAJB7sACQe9AAkHvwAJB8AACQfBAAkHwwAJB8QACQfdAAkH3gAJB98ACQfhAAkIXAAJCF4ACQhgAAkIYgAJCGUACQhmAAkIZwAJCGgACQhpAAkIawAJCG0ACQhuAAkIbwAJCHEACQhyAAkI7QAJCO8ACQjyAAkI9AAJCPcACQj4AAkI+QAJCPoACQj7AAkI/QAJCP8ACQkAAAkJAQAJCQMACQkEAAkJHgAJCTcACQlAAAkJQwAJCUYACQlPAAkJUgAJCVUACQlXAAkJYgAJCXAACQoDAAkKJgAJCkYACQpmAAkKaAAJCmoACQpsAAkKbgAJCnEACQpyAAkKcwAJCnYACQp3AAkKeQAJCnoACQp8AAkKfwAJCoAACQqBAAkKhAAJCoUACQqKAAkKowAJCqwACQquAAkKsAAJCrkACQq8AAkKvwAJCsEACQsKAAkLLgAJC1UACQt5AAkLfAAJC34ACQuAAAkLggAJC4QACQuGAAkLhwAJC4oACQujAAkLxAAJC8YACQvIAAkLygAJC8wACQvOAAkL0AAJC9IACQvUAAkL9QAJC/gACQv7AAkL/gAJDAEACQwEAAkMBwAJDAoACQwNAAkMDwAJDIoACQyMAAkMjgAJDJAACQyTAAkMlAAJDJUACQyWAAkMlwAJDJkACQybAAkMnAAJDJ0ACQyfAAkMoAAJDRsACQ0dAAkNHwAJDSEACQ0kAAkNJQAJDSYACQ0nAAkNKAAJDSoACQ0sAAkNLQAJDS4ACQ0wAAkNMQAJDawACQ2uAAkNsQAJDbMACQ22AAkNtwAJDbgACQ25AAkNugAJDbwACQ2+AAkNvwAJDcAACQ3CAAkNwwAJDdwACQ3dAAkN3gAJDeAACQ5bAAkOXQAJDl8ACQ5hAAkOZAAJDmUACQ5mAAkOZwAJDmgACQ5qAAkObAAJDm0ACQ5uAAkOcAAJDnEACQ7sAAkO7gAJDvAACQ7yAAkO9QAJDvYACQ73AAkO+AAJDvkACQ77AAkO/QAJDv4ACQ7/AAkPAQAJDwIACQ99AAkPfwAJD4EACQ+DAAkPhgAJD4cACQ+IAAkPiQAJD4oACQ+MAAkPjgAJD48ACQ+QAAkPkgAJD5MACRAOAAkQEAAJEBIACRAUAAkQFwAJEBgACRAZAAkQGgAJEBsACRAdAAkQHwAJECAACRAhAAkQIwAJECQACRCfAAkQoQAJEKMACRClAAkQqAAJEKkACRCqAAkQqwAJEKwACRCuAAkQsAAJELEACRCyAAkQtAAJELUACRD+AAkRIgAJEUkACRFtAAkRcAAJEXIACRF0AAkRdgAJEXgACRF6AAkRewAJEX4ACRGXAAkRtAAJEbYACRG4AAkRugAJEbwACRG+AAkRwAAJEcIACRHfAAkR4gAJEeUACRHoAAkR6wAJEe4ACRHxAAkR9AAJEfYACRJxAAkScwAJEnUACRJ3AAkSegAJEnsACRJ8AAkSfQAJEn4ACRKAAAkSggAJEoMACRKEAAkShgAJEocACRMCAAkTBAAJEwYACRMIAAkTCwAJEwwACRMNAAkTDgAJEw8ACRMRAAkTEwAJExQACRMVAAkTFwAJExgACROTAAkTlQAJE5cACROZAAkTnAAJE50ACROeAAkTnwAJE6AACROiAAkTpAAJE6UACROmAAkTqAAJE6kACRQkAAkUJgAJFCgACRQqAAkULQAJFC4ACRQvAAkUMAAJFDEACRQzAAkUNQAJFDYACRQ3AAkUOQAJFDoACRS1AAkUtwAJFLkACRS7AAkUvgAJFL8ACRTAAAkUwQAJFMIACRTEAAkUxgAJFMcACRTIAAkUygAJFMsACRVGAAkVSAAJFUsACRVNAAkVUAAJFVEACRVSAAkVUwAJFVQACRVWAAkVWAAJFVkACRVaAAkVXAAJFV0ACRVsAAkV5wAJFekACRXrAAkV7QAJFfAACRXxAAkV8gAJFfMACRX0AAkV9gAJFfgACRX5AAkV+gAJFfwACRX9AAkWkAAJFrMACRbTAAkW8wAJFvUACRb3AAkW+QAJFvsACRb+AAkW/wAJFwAACRcDAAkXBAAJFwYACRcHAAkXCgAJFw0ACRcOAAkXDwAJFxIACRcTAAkXGAAJFzEACRc6AAkXPAAJFz8ACRdIAAkXSwAJF04ACRdQAAkXmQAJF70ACRfkAAkYCAAJGAsACRgNAAkYDwAJGBEACRgTAAkYFQAJGBYACRgZAAkYMgAJGFMACRhVAAkYVwAJGFkACRhbAAkYXQAJGF8ACRhhAAkYYwAJGIQACRiHAAkYigAJGI0ACRiQAAkYkwAJGJYACRiZAAkYnAAJGJ4ACRkZAAkZGwAJGR0ACRkfAAkZIgAJGSMACRkkAAkZJQAJGSYACRkoAAkZKgAJGSsACRksAAkZLgAJGS8ACRmqAAkZrAAJGa4ACRmwAAkZswAJGbQACRm1AAkZtgAJGbcACRm5AAkZuwAJGbwACRm9AAkZvwAJGcAACRo7AAkaPQAJGkAACRpCAAkaRQAJGkYACRpHAAkaSAAJGkkACRpLAAkaTQAJGk4ACRpPAAkaUQAJGlIACRprAAkabAAJGm0ACRpvAAka6gAJGuwACRruAAka8AAJGvMACRr0AAka9QAJGvYACRr3AAka+QAJGvsACRr8AAka/QAJGv8ACRsAAAkbewAJG30ACRt/AAkbgQAJG4QACRuFAAkbhgAJG4cACRuIAAkbigAJG4wACRuNAAkbjgAJG5AACRuRAAkcDAAJHA4ACRwQAAkcEgAJHBUACRwWAAkcFwAJHBgACRwZAAkcGwAJHB0ACRweAAkcHwAJHCEACRwiAAkcnQAJHJ8ACRyhAAkcowAJHKYACRynAAkcqAAJHKkACRyqAAkcrAAJHK4ACRyvAAkcsAAJHLIACRyzAAkdLgAJHTAACR0yAAkdNAAJHTcACR04AAkdOQAJHToACR07AAkdPQAJHT8ACR1AAAkdQQAJHUMACR1EAAkdjQAJHbEACR3YAAkd/AAJHf8ACR4CAAkeBAAJHgYACR4IAAkeCgAJHgsACR4OAAkeJwAJHkQACR5HAAkeSgAJHk0ACR5QAAkeUwAJHlYACR5ZAAkedgAJHnkACR58AAkefwAJHoIACR6FAAkeiAAJHosACR6NAAkfCAAJHwoACR8NAAkfDwAJHxIACR8TAAkfFAAJHxUACR8WAAkfGAAJHxsACR8cAAkfHQAJHx8ACR8gAAkfmwAJH50ACR+gAAkfogAJH6UACR+mAAkfpwAJH6gACR+pAAkfqwAJH64ACR+vAAkfsAAJH7IACR+zAAkgLgAJIDAACSAzAAkgNQAJIDgACSA5AAkgOgAJIDsACSA8AAkgPgAJIEEACSBCAAkgQwAJIEUACSBGAAkgwQAJIMMACSDGAAkgyAAJIMsACSDMAAkgzQAJIM4ACSDPAAkg0QAJINQACSDVAAkg1gAJINgACSDZAAkhVAAJIVYACSFYAAkhWgAJIV0ACSFeAAkhXwAJIWAACSFhAAkhYwAJIWYACSFnAAkhaAAJIWoACSFrAAkh5gAJIegACSHqAAkh7AAJIe8ACSHwAAkh8QAJIfIACSHzAAkh9QAJIfgACSH5AAkh+gAJIfwACSH9AAkieAAJInoACSJ9AAkifwAJIoIACSKDAAkihAAJIoUACSKGAAkiiAAJIosACSKMAAkijQAJIo8ACSKQAAkioQAJIqIACSKkAAkjHwAJIyEACSMjAAkjJQAJIygACSMpAAkjKgAJIysACSMsAAkjLgAJIzEACSMyAAkjMwAJIzUACSM2AAkjsQAJI7MACSO1AAkjtwAJI7oACSO7AAkjvAAJI70ACSO+AAkjwAAJI8MACSPEAAkjxQAJI8cACSPIAAkkQwAJJEUACSRIAAkkSgAJJE0ACSROAAkkTwAJJFAACSRRAAkkUwAJJFYACSRXAAkkWAAJJFoACSRbAAkk7gAJJREACSUxAAklUQAJJVMACSVVAAklVwAJJVkACSVcAAklXQAJJV4ACSVhAAklYgAJJWQACSVlAAklaAAJJWsACSVsAAklbQAJJXAACSVxAAkldgAJJY8ACSWYAAklmgAJJZ0ACSWmAAklqQAJJawACSWuAAkl9wAJJhsACSZCAAkmZgAJJmkACSZrAAkmbQAJJm8ACSZxAAkmcwAJJnQACSZ3AAkmkAAJJrEACSazAAkmtQAJJrcACSa5AAkmuwAJJr0ACSa/AAkmwQAJJuIACSblAAkm6AAJJusACSbuAAkm8QAJJvQACSb3AAkm+gAJJvwACSd3AAkneQAJJ3sACSd9AAkngAAJJ4EACSeCAAkngwAJJ4QACSeGAAkniAAJJ4kACSeKAAknjAAJJ40ACSgIAAkoCgAJKAwACSgOAAkoEQAJKBIACSgTAAkoFAAJKBUACSgXAAkoGQAJKBoACSgbAAkoHQAJKB4ACSiZAAkomwAJKJ4ACSigAAkoowAJKKQACSilAAkopgAJKKcACSipAAkoqwAJKKwACSitAAkorwAJKLAACSjJAAkoygAJKMsACSjNAAkpSAAJKUoACSlMAAkpTgAJKVEACSlSAAkpUwAJKVQACSlVAAkpVwAJKVkACSlaAAkpWwAJKV0ACSleAAkp2QAJKdsACSndAAkp3wAJKeIACSnjAAkp5AAJKeUACSnmAAkp6AAJKeoACSnrAAkp7AAJKe4ACSnvAAkqagAJKmwACSpuAAkqcAAJKnMACSp0AAkqdQAJKnYACSp3AAkqeQAJKnsACSp8AAkqfQAJKn8ACSqAAAkq+wAJKv0ACSr/AAkrAQAJKwQACSsFAAkrBgAJKwcACSsIAAkrCgAJKwwACSsNAAkrDgAJKxAACSsRAAkrjAAJK44ACSuQAAkrkgAJK5UACSuWAAkrlwAJK5gACSuZAAkrmwAJK50ACSueAAkrnwAJK6EACSuiAAkr6wAJLA8ACSw2AAksWgAJLF0ACSxgAAksYgAJLGQACSxmAAksaAAJLGkACSxsAAkshQAJLKIACSylAAksqAAJLKsACSyuAAkssQAJLLQACSy3AAks1AAJLNcACSzaAAks3QAJLOAACSzjAAks5gAJLOkACSzrAAktZgAJLWgACS1rAAktbQAJLXAACS1xAAktcgAJLXMACS10AAktdgAJLXkACS16AAktewAJLX0ACS1+AAkt+QAJLfsACS3+AAkuAAAJLgMACS4EAAkuBQAJLgYACS4HAAkuCQAJLgwACS4NAAkuDgAJLhAACS4RAAkujAAJLo4ACS6RAAkukwAJLpYACS6XAAkumAAJLpkACS6aAAkunAAJLp8ACS6gAAkuoQAJLqMACS6kAAkvHwAJLyEACS8kAAkvJgAJLykACS8qAAkvKwAJLywACS8tAAkvLwAJLzIACS8zAAkvNAAJLzYACS83AAkvugAJL94ACTACAAkwJQAJMEwACTBsAAkwkwAJMLoACTDaAAkw/gAJMSIACTEkAAkxJwAJMSkACTErAAkxLQAJMTAACTEzAAkxNQAJMTcACTE6AAkxPAAJMT4ACTFBAAkxRAAJMUUACTFKAAkxYwAJMWgACTFqAAkxbwAJMXIACTF0AAkxvQAJMeEACTIIAAkyLAAJMi8ACTIxAAkyMwAJMjUACTI3AAkyOQAJMjoACTI9AAkyVgAJMnsACTJ9AAkyfwAJMoEACTKDAAkyhQAJMocACTKJAAkyiwAJMo0ACTKyAAkytQAJMrgACTK7AAkyvgAJMsEACTLEAAkyxwAJMsoACTLNAAkyzwAJM0oACTNMAAkzTwAJM1EACTNUAAkzVQAJM1YACTNXAAkzWAAJM1o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ACUS+AAlEwAAJRMEACUTCAAlExAAJRMUACUVAAAlFQgAJRUUACUVHAAlFSgAJRUsACUVMAAlFTQAJRU4ACUVQAAlFUgAJRVMACUVUAAlFVgAJRVcACUXSAAlF1AAJRdYACUXYAAlF2wAJRdwACUXdAAlF3gAJRd8ACUXhAAlF4wAJReQACUXlAAlF5wAJRegACUZjAAlGZQAJRmcACUZpAAlGbAAJRm0ACUZuAAlGbwAJRnAACUZyAAlGdAAJRnUACUZ2AAlGeAAJRnkACUb0AAlG9gAJRvgACUb6AAlG/QAJRv4ACUb/AAlHAAAJRwEACUcDAAlHBQAJRwYACUcHAAlHCQAJRwoACUedAAlHwAAJR+AACUgAAAlIAgAJSAQACUgGAAlICAAJSAsACUgMAAlIDQAJSBAACUgRAAlIEwAJSBQACUgWAAlIGQAJSBoACUgbAAlIHgAJSB8ACUgkAAlIPQAJSEYACUhIAAlISgAJSFMACUhWAAlIWQAJSFsACUikAAlIyAAJSO8ACUkTAAlJFgAJSRgACUkaAAlJHAAJSR4ACUkgAAlJIQAJSSQACUk9AAlJXgAJSWAACUliAAlJZAAJSWYACUloAAlJagAJSWwACUluAAlJjwAJSZIACUmVAAlJmAAJSZsACUmeAAlJoQAJSaQACUmnAAlJqQAJSiQACUomAAlKKAAJSioACUotAAlKLgAJSi8ACUowAAlKMQAJSjMACUo1AAlKNgAJSjcACUo5AAlKOgAJSrUACUq3AAlKuQAJSrsACUq+AAlKvwAJSsAACUrBAAlKwgAJSsQACUrGAAlKxwAJSsgACUrKAAlKywAJS0YACUtIAAlLSwAJS00ACUtQAAlLUQAJS1IACUtTAAlLVAAJS1YACUtYAAlLWQAJS1oACUtcAAlLXQAJS3YACUt3AAlLeAAJS3oACUv1AAlL9wAJS/kACUv7AAlL/gAJS/8ACUwAAAlMAQAJTAIACUwEAAlMBgAJTAcACUwIAAlMCgAJTAsACUyGAAlMiAAJTIoACUyMAAlMjwAJTJAACUyRAAlMkgAJTJMACUyVAAlMlwAJTJgACUyZAAlMmwAJTJwACU0XAAlNGQAJTRsACU0dAAlNIAAJTSEACU0iAAlNIwAJTSQACU0mAAlNKAAJTSkACU0qAAlNLAAJTS0ACU2oAAlNqgAJTawACU2uAAlNsQAJTbIACU2zAAlNtAAJTbUACU23AAlNuQAJTboACU27AAlNvQAJTb4ACU45AAlOOwAJTj0ACU4/AAlOQgAJTkMACU5EAAlORQAJTkYACU5IAAlOSgAJTksACU5MAAlOTgAJTk8ACU6YAAlOvAAJTuMACU8HAAlPCgAJTwwACU8OAAlPEAAJTxIACU8UAAlPFQAJTxgACU8xAAlPTgAJT1AACU9SAAlPVAAJT1YACU9YAAlPWgAJT1wACU95AAlPfAAJT38ACU+CAAlPhQAJT4gACU+LAAlPjgAJT5AACVALAAlQDQAJUA8ACVARAAlQFAAJUBUACVAWAAlQFwAJUBgACVAaAAlQHAAJUB0ACVAeAAlQIAAJUCEACVCcAAlQngAJUKAACVCiAAlQpQAJUKYACVCnAAlQqAAJUKkACVCrAAlQrQAJUK4ACVCvAAlQsQAJULIACVEtAAlRLwAJUTEACVEzAAlRNgAJUTcACVE4AAlROQAJUToACVE8AAlRPgAJUT8ACVFAAAlRQgAJUUMACVG+AAlRwAAJUcMACVHFAAlRyAAJUckACVHKAAlRywAJUcwACVHOAAlR0AAJUdEACVHSAAlR1AAJUdUACVJQAAlSUgAJUlQACVJWAAlSWQAJUloACVJbAAlSXAAJUl0ACVJfAAlSYQAJUmIACVJjAAlSZQAJUmYACVLhAAlS4wAJUuUACVLnAAlS6gAJUusACVLsAAlS7QAJUu4ACVLwAAlS8gAJUvMACVL0AAlS9gAJUvcACVNyAAlTdAAJU3YACVN4AAlTewAJU3wACVN9AAlTfgAJU38ACVOBAAlTgwAJU4QACVOFAAlThwAJU4gACVQbAAlUPgAJVF4ACVR+AAlUgAAJVIIACVSEAAlUhgAJVIkACVSKAAlUiwAJVI4ACVSPAAlUkQAJVJIACVSUAAlUlwAJVJgACVSZAAlUnAAJVJ0ACVSiAAlUuwAJVMQACVTGAAlUyAAJVNEACVTUAAlU1wAJVNkACVUiAAlVRgAJVW0ACVWRAAlVlAAJVZYACVWYAAlVmgAJVZwACVWeAAlVnwAJVaIACVW7AAlV3AAJVd4ACVXgAAlV4gAJVeQACVXmAAlV6AAJVeoACVXsAAlWDQAJVhAACVYTAAlWFgAJVhkACVYcAAlWHwAJViIACVYlAAlWJwAJVqIACVakAAlWpgAJVqgACVarAAlWrAAJVq0ACVauAAlWrwAJVrEACVazAAlWtAAJVrUACVa3AAlWuAAJVzMACVc1AAlXNwAJVzkACVc8AAlXPQAJVz4ACVc/AAlXQAAJV0IACVdEAAlXRQAJV0YACVdIAAlXSQAJV8QACVfGAAlXyQAJV8sACVfOAAlXzwAJV9AACVfRAAlX0gAJV9QACVfWAAlX1wAJV9gACVfaAAlX2wAJV/QACVf1AAlX9gAJV/gACVhzAAlYdQAJWHcACVh5AAlYfAAJWH0ACVh+AAlYfwAJWIAACViCAAlYhAAJWIUACViGAAlYiAAJWIkACVkEAAlZBgAJWQgACVkKAAlZDQAJWQ4ACVkPAAlZEAAJWREACVkTAAlZFQAJWRYACVkXAAlZGQAJWRoACVmVAAlZlwAJWZkACVmbAAlZngAJWZ8ACVmgAAlZoQAJWaIACVmkAAlZpgAJWacACVmoAAlZqgAJWasACVomAAlaKAAJWioACVosAAlaLwAJWjAACVoxAAlaMgAJWjMACVo1AAlaNwAJWjgACVo5AAlaOwAJWjwACVq3AAlauQAJWrsACVq9AAlawAAJWsEACVrCAAlawwAJWsQACVrGAAlayAAJWskACVrKAAlazAAJWs0ACVsWAAlbOgAJW2EACVuFAAlbiAAJW4oACVuMAAlbjgAJW5AACVuSAAlbkwAJW5YACVuvAAlbzAAJW84ACVvQAAlb0gAJW9QACVvWAAlb2AAJW9oACVv3AAlb+gAJW/0ACVwAAAlcAwAJXAYACVwJAAlcDAAJXA4ACVyJAAlciwAJXI0ACVyPAAlckgAJXJMACVyUAAlclQAJXJYACVyYAAlcmgAJXJsACVycAAlcngAJXJ8ACV0aAAldHAAJXR4ACV0gAAldIwAJXSQACV0lAAldJgAJXScACV0pAAldKwAJXSwACV0tAAldLwAJXTAACV2rAAldrQAJXa8ACV2xAAldtAAJXbUACV22AAldtwAJXbgACV26AAldvAAJXb0ACV2+AAldwAAJXcEACV48AAlePgAJXkEACV5DAAleRgAJXkcACV5IAAleSQAJXkoACV5MAAleTgAJXk8ACV5QAAleUgAJXlMACV7OAAle0AAJXtIACV7UAAle1wAJXtgACV7ZAAle2gAJXtsACV7dAAle3wAJXuAACV7hAAle4wAJXuQACV9fAAlfYQAJX2MACV9lAAlfaAAJX2kACV9qAAlfawAJX2wACV9uAAlfcAAJX3EACV9yAAlfdAAJX3UACV/wAAlf8gAJX/QACV/2AAlf+QAJX/oACV/7AAlf/AAJX/0ACV//AAlgAQAJYAIACWADAAlgBQAJYAYACWCZAAlgvAAJYNwACWD8AAlg/gAJYQAACWECAAlhBAAJYQcACWEIAAlhCQAJYQwACWENAAlhDwAJYRAACWESAAlhFQAJYRYACWEXAAlhGgAJYRsACWEkAAlhPQAJYUYACWFIAAlhSgAJYVMACWFWAAlhWQAJYVsACWGkAAlhyAAJYe8ACWITAAliFgAJYhgACWIaAAliHAAJYh4ACWIgAAliIQAJYiQACWI9AAliXgAJYmAACWJiAAliZAAJYmYACWJoAAliagAJYmwACWJuAAlijwAJYpIACWKVAAlimAAJYpsACWKeAAlioQAJYqQACWKnAAliqQAJYyQACWMmAAljKAAJYyoACWMtAAljLgAJYy8ACWMwAAljMQAJYzMACWM1AAljNgAJYzcACWM5AAljOgAJY7UACWO3AAljuQAJY7sACWO+AAljvwAJY8AACWPBAAljwgAJY8QACWPGAAljxwAJY8gACWPKAAljywAJZEYACWRIAAlkSwAJZE0ACWRQAAlkUQAJZFIACWRTAAlkVAAJZFYACWRYAAlkWQAJZFoACWRcAAlkXQAJZHYACWR3AAlkeAAJZHoACWT1AAlk9wAJZPkACWT7AAlk/gAJZP8ACWUAAAllAQAJZQIACWUEAAllBgAJZQcACWUIAAllCgAJZQsACWWGAAlliAAJZYoACWWMAAlljwAJZZAACWWRAAllkgAJZZMACWWVAAlllwAJZZgACWWZAAllmwAJZZwACWYXAAlmGQAJZhsACWYdAAlmIAAJZiEACWYiAAlmIwAJZiQACWYmAAlmKAAJZikACWYqAAlmLAAJZi0ACWaoAAlmqgAJZqwACWauAAlmsQAJZrIACWazAAlmtAAJZrUACWa3AAlmuQAJZroACWa7AAlmvQAJZr4ACWc5AAlnOwAJZz0ACWc/AAlnQgAJZ0MACWdEAAlnRQAJZ0YACWdIAAlnSgAJZ0sACWdMAAlnTgAJZ08ACWeYAAlnvAAJZ+MACWgHAAloCgAJaAwACWgOAAloEAAJaBIACWgUAAloFQAJaBgACWgxAAloTgAJaFAACWhSAAloVAAJaFYACWhYAAloWgAJaFwACWh5AAlofAAJaH8ACWiCAAlohQAJaIgACWiLAAlojgAJaJAACWkLAAlpDQAJaQ8ACWkRAAlpFAAJaRUACWkWAAlpFwAJaRgACWkaAAlpHAAJaR0ACWkeAAlpIAAJaSEACWmcAAlpngAJaaAACWmiAAlppQAJaaYACWmnAAlpqAAJaakACWmrAAlprQAJaa4ACWmvAAlpsQAJabIACWotAAlqLwAJajEACWozAAlqNgAJajcACWo4AAlqOQAJajoACWo8AAlqPgAJaj8ACWpAAAlqQgAJakMACWq+AAlqwAAJasMACWrFAAlqyAAJaskACWrKAAlqywAJaswACWrOAAlq0AAJatEACWrSAAlq1AAJatUACWtQAAlrUgAJa1QACWtWAAlrWQAJa1oACWtbAAlrXAAJa10ACWtfAAlrYQAJa2IACWtjAAlrZQAJa2YACWvhAAlr4wAJa+UACWvnAAlr6gAJa+sACWvsAAlr7QAJa+4ACWvwAAlr8gAJa/MACWv0AAlr9gAJa/cACWxyAAlsdAAJbHYACWx4AAlsewAJbHwACWx9AAlsfgAJbH8ACWyBAAlsgwAJbIQACWyFAAlshwAJbIgACW0bAAltPgAJbV4ACW1+AAltgAAJbYIACW2EAAlthgAJbYkACW2KAAltiwAJbY4ACW2PAAltkQAJbZIACW2UAAltlwAJbZgACW2ZAAltnAAJbZ0ACW2iAAltuwAJbcQACW3GAAltyAAJbdEACW3UAAlt1wAJbdkACW4iAAluRgAJbm0ACW6RAAlulAAJbpYACW6YAAlumgAJbpwACW6eAAlunwAJbqIACW67AAlu3AAJbt4ACW7gAAlu4gAJbuQACW7mAAlu6AAJbuoACW7sAAlvDQAJbxAACW8TAAlvFgAJbxkACW8cAAlvHwAJbyIACW8lAAlvJwAJb6IACW+kAAlvpgAJb6gACW+rAAlvrAAJb60ACW+uAAlvrwAJb7EACW+zAAlvtAAJb7UACW+3AAlvuAAJcDMACXA1AAlwNwAJcDkACXA8AAlwPQAJcD4ACXA/AAlwQAAJcEIACXBEAAlwRQAJcEYACXBIAAlwSQAJcMQACXDGAAlwyQAJcMsACXDOAAlwzwAJcNAACXDRAAlw0gAJcNQACXDWAAlw1wAJcNgACXDaAAlw2wAJcPQACXD1AAlw9gAJcPgACXFzAAlxdQAJcXcACXF5AAlxfAAJcX0ACXF+AAlxfwAJcYAACXGCAAlxhAAJcYUACXGGAAlxiAAJcYkACXIEAAlyBgAJcggACXIKAAlyDQAJcg4ACXIPAAlyEAAJchEACXITAAlyFQAJchYACXIXAAlyGQAJchoACXKVAAlylwAJcpkACXKbAAlyngAJcp8ACXKgAAlyoQAJcqIACXKkAAlypgAJcqcACXKoAAlyqgAJcqsACXMmAAlzKAAJcyoACXMsAAlzLwAJczAACXMxAAlzMgAJczMACXM1AAlzNwAJczgACXM5AAlzOwAJczwACXO3AAlzuQAJc7sACXO9AAlzwAAJc8EACXPCAAlzwwAJc8QACXPGAAlzyAAJc8kACXPKAAlzzAAJc80ACXQWAAl0OgAJdGEACXSFAAl0iAAJdIoACXSMAAl0jgAJdJAACXSSAAl0kwAJdJYACXSvAAl0zAAJdM4ACXTQAAl00gAJdNQACXTWAAl02AAJdNoACXT3AAl0+gAJdP0ACXUAAAl1AwAJdQYACXUJAAl1DAAJdQ4ACXWJAAl1iwAJdY0ACXWPAAl1kgAJdZMACXWUAAl1lQAJdZYACXWYAAl1mgAJdZsACXWcAAl1ngAJdZ8ACXYaAAl2HAAJdh4ACXYgAAl2IwAJdiQACXYlAAl2JgAJdicACXYpAAl2KwAJdiwACXYtAAl2LwAJdjAACXarAAl2rQAJdq8ACXaxAAl2tAAJdrUACXa2AAl2twAJdrgACXa6AAl2vAAJdr0ACXa+AAl2wAAJdsEACXc8AAl3PgAJd0EACXdDAAl3RgAJd0cACXdIAAl3SQAJd0oACXdMAAl3TgAJd08ACXdQAAl3UgAJd1MACXfOAAl30AAJd9IACXfUAAl31wAJd9gACXfZAAl32gAJd9sACXfdAAl33wAJd+AACXfhAAl34wAJd+QACXhfAAl4YQAJeGMACXhlAAl4aAAJeGkACXhqAAl4awAJeGwACXhuAAl4cAAJeHEACXhyAAl4dAAJeHUACXjwAAl48gAJePQACXj2AAl4+QAJePoACXj7AAl4/AAJeP0ACXj/AAl5AQAJeQIACXkDAAl5BQAJeQYACXmZAAl5vAAJedwACXn8AAl5/gAJegAACXoCAAl6BAAJegcACXoIAAl6CQAJegwACXoNAAl6DwAJehAACXoSAAl6FQAJehYACXoXAAl6GgAJehsACXogAAl6OQAJekIACXpEAAl6RgAJek8ACXpSAAl6VQAJelcACXqgAAl6xAAJeusACXsPAAl7EgAJexQACXsWAAl7GAAJexoACXscAAl7HQAJeyAACXs5AAl7WgAJe1wACXteAAl7YAAJe2IACXtkAAl7ZgAJe2gACXtqAAl7iwAJe44ACXuRAAl7lAAJe5cACXuaAAl7nQAJe6AACXujAAl7pQAJfCAACXwiAAl8JAAJfCYACXwpAAl8KgAJfCsACXwsAAl8LQAJfC8ACXwxAAl8MgAJfDMACXw1AAl8NgAJfLEACXyzAAl8tQAJfLcACXy6AAl8uwAJfLwACXy9AAl8vgAJfMAACXzCAAl8wwAJfMQACXzGAAl8xwAJfUIACX1EAAl9RwAJfUkACX1MAAl9TQAJfU4ACX1PAAl9UAAJfVIACX1UAAl9VQAJfVYACX1YAAl9WQAJfXIACX1zAAl9dAAJfXYACX3xAAl98wAJffUACX33AAl9+gAJffsACX38AAl9/QAJff4ACX4AAAl+AgAJfgMACX4EAAl+BgAJfgcACX6CAAl+hAAJfoYACX6IAAl+iwAJfowACX6NAAl+jgAJfo8ACX6RAAl+kwAJfpQACX6VAAl+lwAJfpgACX8TAAl/FQAJfxcACX8ZAAl/HAAJfx0ACX8eAAl/HwAJfyAACX8iAAl/JAAJfyUACX8mAAl/KAAJfykACX+kAAl/pgAJf6gACX+qAAl/rQAJf64ACX+vAAl/sAAJf7EACX+zAAl/tQAJf7YACX+3AAl/uQAJf7oACYA1AAmANwAJgDkACYA7AAmAPgAJgD8ACYBAAAmAQQAJgEIACYBEAAmARgAJgEcACYBIAAmASgAJgEsACYCUAAmAuAAJgN8ACYEDAAmBBgAJgQgACYEKAAmBDAAJgQ4ACYEQAAmBEQAJgRQACYEtAAmBSgAJgUwACYFOAAmBUAAJgVIACYFUAAmBVgAJgVgACYF1AAmBeAAJgXsACYF+AAmBgQAJgYQACYGHAAmBigAJgYwACYIHAAmCCQAJggsACYINAAmCEAAJghEACYISAAmCEwAJghQACYIWAAmCGAAJghkACYIaAAmCHAAJgh0ACYKYAAmCmgAJgpwACYKeAAmCoQAJgqIACYKjAAmCpAAJgqUACYKnAAmCqQAJgqoACYKrAAmCrQAJgq4ACYMpAAmDKwAJgy0ACYMvAAmDMgAJgzMACYM0AAmDNQAJgzYACYM4AAmDOgAJgzsACYM8AAmDPgAJgz8ACYO6AAmDvAAJg78ACYPBAAmDxAAJg8UACYPGAAmDxwAJg8gACYPKAAmDzAAJg80ACYPOAAmD0AAJg9EACYRMAAmETgAJhFAACYRSAAmEVQAJhFYACYRXAAmEWAAJhFkACYRbAAmEXQAJhF4ACYRfAAmEYQAJhGIACYTdAAmE3wAJhOEACYTjAAmE5gAJhOcACYToAAmE6QAJhOoACYTsAAmE7gAJhO8ACYTwAAmE8gAJhPMACYVuAAmFcAAJhXIACYV0AAmFdwAJhXgACYV5AAmFegAJhXsACYV9AAmFfwAJhYAACYWBAAmFgwAJhYQACYYXAAmGOgAJhloACYZ6AAmGfAAJhn4ACYaAAAmGggAJhoUACYaGAAmGhwAJhooACYaLAAmGjQAJho4ACYaQAAmGkwAJhpQACYaVAAmGmAAJhpkACYaeAAmGtwAJhsAACYbCAAmGxAAJhs0ACYbQAAmG0wAJhtUACYceAAmHQgAJh2kACYeNAAmHkAAJh5IACYeUAAmHlgAJh5gACYeaAAmHmwAJh54ACYe3AAmH2AAJh9oACYfcAAmH3gAJh+AACYfiAAmH5AAJh+YACYfoAAmICQAJiAwACYgPAAmIEgAJiBUACYgYAAmIGwAJiB4ACYghAAmIIwAJiJ4ACYigAAmIogAJiKQACYinAAmIqAAJiKkACYiqAAmIqwAJiK0ACYivAAmIsAAJiLEACYizAAmItAAJiS8ACYkxAAmJMwAJiTUACYk4AAmJOQAJiToACYk7AAmJPAAJiT4ACYlAAAmJQQAJiUIACYlEAAmJRQAJicAACYnCAAmJxQAJiccACYnKAAmJywAJicwACYnNAAmJzgAJidAACYnSAAmJ0wAJidQACYnWAAmJ1wAJifAACYnxAAmJ8gAJifQACYpvAAmKcQAJinMACYp1AAmKeAAJinkACYp6AAmKewAJinwACYp+AAmKgAAJioEACYqCAAmKhAAJioUACYsAAAmLAgAJiwQACYsGAAmLCQAJiwoACYsLAAmLDAAJiw0ACYsPAAmLEQAJixIACYsTAAmLFQAJixYACYuRAAmLkwAJi5UACYuXAAmLmgAJi5sACYucAAmLnQAJi54ACYugAAmLogAJi6MACYukAAmLpgAJi6cACYwiAAmMJAAJjCYACYwoAAmMKwAJjCwACYwtAAmMLgAJjC8ACYwxAAmMMwAJjDQACYw1AAmMNwAJjDgACYyzAAmMtQAJjLcACYy5AAmMvAAJjL0ACYy+AAmMvwAJjMAACYzCAAmMxAAJjMUACYzGAAmMyAAJjMkACY0SAAmNNgAJjV0ACY2BAAmNhAAJjYYACY2IAAmNigAJjYwACY2OAAmNjwAJjZIACY2rAAmNyAAJjcoACY3MAAmNzgAJjdAACY3SAAmN1AAJjdYACY3zAAmN9gAJjfkACY38AAmN/wAJjgIACY4FAAmOCAAJjgoACY6FAAmOhwAJjokACY6LAAmOjgAJjo8ACY6QAAmOkQAJjpIACY6UAAmOlgAJjpcACY6YAAmOmgAJjpsACY8WAAmPGAAJjxoACY8cAAmPHwAJjyAACY8hAAmPIgAJjyMACY8lAAmPJwAJjygACY8pAAmPKwAJjywACY+nAAmPqQAJj6sACY+tAAmPsAAJj7EACY+yAAmPswAJj7QACY+2AAmPuAAJj7kACY+6AAmPvAAJj70ACZA4AAmQOgAJkD0ACZA/AAmQQgAJkEMACZBEAAmQRQAJkEYACZBIAAmQSgAJkEsACZBMAAmQTgAJkE8ACZDKAAmQzAAJkM4ACZDQAAmQ0wAJkNQACZDVAAmQ1gAJkNcACZDZAAmQ2wAJkNwACZDdAAmQ3wAJkOAACZFbAAmRXQAJkV8ACZFhAAmRZAAJkWUACZFmAAmRZwAJkWgACZFqAAmRbAAJkW0ACZFuAAmRcAAJkXEACZHsAAmR7gAJkfAACZHyAAmR9QAJkfYACZH3AAmR+AAJkfkACZH7AAmR/QAJkf4ACZH/AAmSAQAJkgIACZKVAAmSuAAJktgACZL4AAmS+gAJkvwACZL+AAmTAAAJkwMACZMEAAmTBQAJkwgACZMJAAmTCwAJkwwACZMOAAmTEQAJkxIACZMTAAmTFgAJkxcACZMcAAmTNQAJkz4ACZNAAAmTQgAJk0sACZNOAAmTUQAJk1MACZOcAAmTwAAJk+cACZQLAAmUDgAJlBAACZQSAAmUFAAJlBYACZQYAAmUGQAJlBwACZQ1AAmUVgAJlFgACZRaAAmUXAAJlF4ACZRgAAmUYgAJlGQACZRmAAmUhwAJlIoACZSNAAmUkAAJlJMACZSWAAmUmQAJlJwACZSfAAmUoQAJlRwACZUeAAmVIAAJlSIACZUlAAmVJgAJlScACZUoAAmVKQAJlSsACZUtAAmVLgAJlS8ACZUxAAmVMgAJla0ACZWvAAmVsQAJlbMACZW2AAmVtwAJlbgACZW5AAmVugAJlbwACZW+AAmVvwAJlcAACZXCAAmVwwAJlj4ACZZAAAmWQwAJlkUACZZIAAmWSQAJlkoACZZLAAmWTAAJlk4ACZZQAAmWUQAJllIACZZUAAmWVQAJlm4ACZZvAAmWcAAJlnIACZbtAAmW7wAJlvEACZbzAAmW9gAJlvcACZb4AAmW+QAJlvoACZb8AAmW/gAJlv8ACZcAAAmXAgAJlwMACZd+AAmXgAAJl4IACZeEAAmXhwAJl4gACZeJAAmXigAJl4sACZeNAAmXjwAJl5AACZeRAAmXkwAJl5QACZgPAAmYEQAJmBMACZgVAAmYGAAJmBkACZgaAAmYGwAJmBwACZgeAAmYIAAJmCEACZgiAAmYJAAJmCUACZigAAmYogAJmKQACZimAAmYqQAJmKoACZirAAmYrAAJmK0ACZivAAmYsQAJmLIACZizAAmYtQAJmLYACZkxAAmZMwAJmTUACZk3AAmZOgAJmTsACZk8AAmZPQAJmT4ACZlAAAmZQgAJmUMACZlEAAmZRgAJmUcACZmQAAmZtAAJmdsACZn/AAmaAgAJmgQACZoGAAmaCAAJmgoACZoMAAmaDQAJmhAACZopAAmaRgAJmkgACZpKAAmaTAAJmk4ACZpQAAmaUgAJmlQACZpxAAmadAAJmncACZp6AAmafQAJmoAACZqDAAmahgAJmogACZsDAAmbBQAJmwcACZsJAAmbDAAJmw0ACZsOAAmbDwAJmxAACZsSAAmbFAAJmxUACZsWAAmbGAAJmxkACZuUAAmblgAJm5gACZuaAAmbnQAJm54ACZufAAmboAAJm6EACZujAAmbpQAJm6YACZunAAmbqQAJm6oACZwlAAmcJwAJnCkACZwrAAmcLgAJnC8ACZwwAAmcMQAJnDIACZw0AAmcNgAJnDcACZw4AAmcOgAJnDsACZy2AAmcuAAJnLsACZy9AAmcwAAJnMEACZzCAAmcwwAJnMQACZzGAAmcyAAJnMkACZzKAAmczAAJnM0ACZ1IAAmdSgAJnUwACZ1OAAmdUQAJnVIACZ1TAAmdVAAJnVUACZ1XAAmdWQAJnVoACZ1bAAmdXQAJnV4ACZ3ZAAmd2wAJnd0ACZ3fAAmd4gAJneMACZ3kAAmd5QAJneYACZ3oAAmd6gAJnesACZ3sAAmd7gAJne8ACZ5qAAmebAAJnm4ACZ5wAAmecwAJnnQACZ51AAmedgAJnncACZ55AAmeewAJnnwACZ59AAmefwAJnoAACZ8TAAmfNgAJn1YACZ92AAmfeAAJn3oACZ98AAmffgAJn4EACZ+CAAmfgwAJn4YACZ+HAAmfiQAJn4oACZ+MAAmfjwAJn5AACZ+RAAmflAAJn5UACZ+eAAmftwAJn8AACZ/CAAmfxAAJn80ACZ/QAAmf0wAJn9UACaAeAAmgQgAJoGkACaCNAAmgkAAJoJIACaCUAAmglgAJoJgACaCaAAmgmwAJoJ4ACaC3AAmg2AAJoNoACaDcAAmg3gAJoOAACaDiAAmg5AAJoOYACaDoAAmhCQAJoQwACaEPAAmhEgAJoRUACaEYAAmhGwAJoR4ACaEhAAmhIwAJoZ4ACaGgAAmhogAJoaQACaGnAAmhqAAJoakACaGqAAmhqwAJoa0ACaGvAAmhsAAJobEACaGzAAmhtAAJoi8ACaIxAAmiMwAJojUACaI4AAmiOQAJojoACaI7AAmiPAAJoj4ACaJAAAmiQQAJokIACaJEAAmiRQAJosAACaLCAAmixQAJoscACaLKAAmiywAJoswACaLNAAmizgAJotAACaLSAAmi0wAJotQACaLWAAmi1wAJovAACaLxAAmi8gAJovQACaNvAAmjcQAJo3MACaN1AAmjeAAJo3kACaN6AAmjewAJo3wACaN+AAmjgAAJo4EACaOCAAmjhAAJo4UACaQAAAmkAgAJpAQACaQGAAmkCQAJpAoACaQLAAmkDAAJpA0ACaQPAAmkEQAJpBIACaQTAAmkFQAJpBYACaSRAAmkkwAJpJUACaSXAAmkmgAJpJsACaScAAmknQAJpJ4ACaSgAAmkogAJpKMACaSkAAmkpgAJpKcACaUiAAmlJAAJpSYACaUoAAmlKwAJpSwACaUtAAmlLgAJpS8ACaUxAAmlMwAJpTQACaU1AAmlNwAJpTgACaWzAAmltQAJpbcACaW5AAmlvAAJpb0ACaW+AAmlvwAJpcAACaXCAAmlxAAJpcUACaXGAAmlyAAJpckACaYSAAmmNgAJpl0ACaaBAAmmhAAJpoYACaaIAAmmigAJpowACaaOAAmmjwAJppIACaarAAmmyAAJpsoACabMAAmmzgAJptAACabSAAmm1AAJptYACabzAAmm9gAJpvkACab8AAmm/wAJpwIACacFAAmnCAAJpwoACaeFAAmnhwAJp4kACaeLAAmnjgAJp48ACaeQAAmnkQAJp5IACaeUAAmnlgAJp5cACaeYAAmnmgAJp5sACagWAAmoGAAJqBoACagcAAmoHwAJqCAACaghAAmoIgAJqCMACaglAAmoJwAJqCgACagpAAmoKwAJqCwACainAAmoqQAJqKsACaitAAmosAAJqLEACaiyAAmoswAJqLQACai2AAmouAAJqLkACai6AAmovAAJqL0ACak4AAmpOgAJqT0ACak/AAmpQgAJqUMACalEAAmpRQAJqUYACalIAAmpSgAJqUsACalMAAmpTgAJqU8ACanKAAmpzAAJqc4ACanQAAmp0wAJqdQACanVAAmp1gAJqdcACanZAAmp2wAJqdwACandAAmp3wAJqeAACapbAAmqXQAJql8ACaphAAmqZAAJqmUACapmAAmqZwAJqmgACapqAAmqbAAJqm0ACapuAAmqcAAJqnEACarsAAmq7gAJqvAACaryAAmq9QAJqvYACar3AAmq+AAJqvkACar7AAmq/QAJqv4ACar/AAmrAQAJqwIACauVAAmruAAJq9gACav4AAmr+gAJq/wACav+AAmsAAAJrAMACawEAAmsBQAJrAgACawJAAmsCwAJrAwACawOAAmsEQAJrBIACawTAAmsFgAJrBcACawcAAmsNQAJrD4ACaxAAAmsQgAJrEsACaxOAAmsUQAJrFMACaycAAmswAAJrOcACa0LAAmtDgAJrRAACa0SAAmtFAAJrRYACa0YAAmtGQAJrRwACa01AAmtVgAJrVgACa1aAAmtXAAJrV4ACa1gAAmtYgAJrWQACa1mAAmthwAJrYoACa2NAAmtkAAJrZMACa2WAAmtmQAJrZwACa2fAAmtoQAJrhwACa4eAAmuIAAJriIACa4lAAmuJgAJricACa4oAAmuKQAJrisACa4tAAmuLgAJri8ACa4xAAmuMgAJrq0ACa6vAAmusQAJrrMACa62AAmutwAJrrgACa65AAmuugAJrrwACa6+AAmuvwAJrsAACa7CAAmuwwAJrz4ACa9AAAmvQwAJr0UACa9IAAmvSQAJr0oACa9LAAmvTAAJr04ACa9QAAmvUQAJr1IACa9UAAmvVQAJr24ACa9vAAmvcAAJr3IACa/tAAmv7wAJr/EACa/zAAmv9gAJr/cACa/4AAmv+QAJr/oACa/8AAmv/gAJr/8ACbAAAAmwAgAJsAMACbB+AAmwgAAJsIIACbCEAAmwhwAJsIgACbCJAAmwigAJsIsACbCNAAmwjwAJsJAACbCRAAmwkwAJsJQACbEPAAmxEQAJsRMACbEVAAmxGAAJsRkACbEaAAmxGwAJsRwACbEeAAmxIAAJsSEACbEiAAmxJAAJsSUACbGgAAmxogAJsaQACbGmAAmxqQAJsaoACbGrAAmxrAAJsa0ACbGvAAmxsQAJsbIACbGzAAmxtQAJsbYACbIxAAmyMwAJsjUACbI3AAmyOgAJsjsACbI8AAmyPQAJsj4ACbJAAAmyQgAJskMACbJEAAmyRgAJskcACbKQAAmytAAJstsACbL/AAmzAgAJswQACbMGAAmzCAAJswoACbMMAAmzDQAJsxAACbMpAAmzRgAJs0gACbNKAAmzTAAJs04ACbNQAAmzUgAJs1QACbNxAAmzdAAJs3cACbN6AAmzfQAJs4AACbODAAmzhgAJs4gACbQDAAm0BQAJtAcACbQJAAm0DAAJtA0ACbQOAAm0DwAJtBAACbQSAAm0FAAJtBUACbQWAAm0GAAJtBkACbSUAAm0lgAJtJgACbSaAAm0nQAJtJ4ACbSfAAm0oAAJtKEACbSjAAm0pQAJtKYACbSnAAm0qQAJtKoACbUlAAm1JwAJtSkACbUrAAm1LgAJtS8ACbUwAAm1MQAJtTIACbU0AAm1NgAJtTcACbU4AAm1OgAJtTsACbW2AAm1uAAJtbsACbW9AAm1wAAJtcEACbXCAAm1wwAJtcQACbXGAAm1yAAJtckACbXKAAm1zAAJtc0ACbZIAAm2SgAJtkwACbZOAAm2UQAJtlIACbZTAAm2VAAJtlUACbZXAAm2WQAJtloACbZbAAm2XQAJtl4ACbbZAAm22wAJtt0ACbbfAAm24gAJtuMACbbkAAm25QAJtuYACbboAAm26gAJtusACbbsAAm27gAJtu8ACbdqAAm3bAAJt24ACbdwAAm3cwAJt3QACbd1AAm3dgAJt3cACbd5AAm3ewAJt3wACbd9AAm3fwAJt4AACbgTAAm4NgAJuFYACbh2AAm4eAAJuHoACbh8AAm4fgAJuIEACbiCAAm4gwAJuIYACbiHAAm4iQAJuIoACbiNAAm4kAAJuJEACbiSAAm4lQAJuJYACbibAAm4tAAJuL0ACbi/AAm4wgAJuMsACbjOAAm40QAJuNMACbkcAAm5QAAJuWcACbmLAAm5jgAJuZAACbmSAAm5lAAJuZYACbmYAAm5mQAJuZwACbm1AAm51gAJudgACbnaAAm53AAJud4ACbngAAm54gAJueQACbnmAAm6BwAJugoACboNAAm6EAAJuhMACboWAAm6GQAJuhwACbofAAm6IQAJupwACbqeAAm6oAAJuqIACbqlAAm6pgAJuqcACbqoAAm6qQAJuqsACbqtAAm6rgAJuq8ACbqxAAm6sgAJuy0ACbsvAAm7MQAJuzMACbs2AAm7NwAJuzgACbs5AAm7OgAJuzwACbs+AAm7PwAJu0AACbtCAAm7QwAJu74ACbvAAAm7wwAJu8UACbvIAAm7yQAJu8oACbvLAAm7zAAJu84ACbvQAAm70QAJu9IACbvUAAm71QAJu+4ACbvvAAm78AAJu/IACbxtAAm8bwAJvHEACbxzAAm8dgAJvHcACbx4AAm8eQAJvHoACbx8AAm8fgAJvH8ACbyAAAm8ggAJvIMACbz+AAm9AAAJvQIACb0EAAm9BwAJvQgACb0JAAm9CgAJvQsACb0NAAm9DwAJvRAACb0RAAm9EwAJvRQACb2PAAm9kQAJvZMACb2VAAm9mAAJvZkACb2aAAm9mwAJvZwACb2eAAm9oAAJvaEACb2iAAm9pAAJvaUACb4gAAm+IgAJviQACb4mAAm+KQAJvioACb4rAAm+LAAJvi0ACb4vAAm+MQAJvjIACb4zAAm+NQAJvjYACb6xAAm+swAJvrUACb63AAm+ugAJvrsACb68AAm+vQAJvr4ACb7AAAm+wgAJvsMACb7EAAm+xgAJvscACb8QAAm/NAAJv1sACb9/AAm/ggAJv4UACb+HAAm/iQAJv4sACb+NAAm/jgAJv5EACb+qAAm/xwAJv8oACb/NAAm/0AAJv9MACb/WAAm/2QAJv9wACb/5AAm//AAJv/8ACcACAAnABQAJwAgACcALAAnADgAJwBAACcCLAAnAjQAJwJAACcCSAAnAlQAJwJYACcCXAAnAmAAJwJkACcCbAAnAngAJwJ8ACcCgAAnAogAJwKMACcEeAAnBIAAJwSMACcElAAnBKAAJwSkACcEqAAnBKwAJwSwACcEuAAnBMQAJwTIACcEzAAnBNQAJwTYACcGxAAnBswAJwbYACcG4AAnBuwAJwbwACcG9AAnBvgAJwb8ACcHBAAnBxAAJwcUACcHGAAnByAAJwckACcJEAAnCRgAJwkkACcJLAAnCTgAJwk8ACcJQAAnCUQAJwlIACcJUAAnCVwAJwlgACcJZAAnCWwAJwlwACcLfAAnDAwAJwycACcNKAAnDcQAJw5EACcO4AAnD3wAJw/8ACcQjAAnERwAJxEkACcRMAAnETgAJxFAACcRSAAnEVQAJxFgACcRaAAnEXAAJxF8ACcRhAAnEYwAJxGYACcRpAAnEagAJxG8ACcSIAAnEjQAJxI8ACcSUAAnElwAJxJkACcTiAAnFBgAJxS0ACcVRAAnFVAAJxVYACcVYAAnFWgAJxVwACcVeAAnFXwAJxWIACcV7AAnFoAAJxaIACcWkAAnFpgAJxagACcWqAAnFrAAJxa4ACcWwAAnFsgAJxdcACcXaAAnF3QAJxeAACcXjAAnF5gAJxekACcXsAAnF7wAJxfIACcX0AAnGbwAJxnEACcZ0AAnGdgAJxnkACcZ6AAnGewAJxnwACcZ9AAnGfwAJxoEACcaCAAnGgwAJxoUACcaGAAnGlwAJxpgACcaaAAnHFQAJxxcACccZAAnHGwAJxx4ACccfAAnHIAAJxyEACcciAAnHJAAJxyYACccnAAnHKAAJxyoACccrAAnHpgAJx6gACcerAAnHrQAJx7AACcexAAnHsgAJx7MACce0AAnHtgAJx7gACce5AAnHugAJx7wACce9AAnHzgAJx88ACcfRAAnITAAJyE4ACchQAAnIUgAJyFUACchWAAnIVwAJyFgACchZAAnIWwAJyF0ACcheAAnIXwAJyGEACchiAAnI3QAJyN8ACcjiAAnI5AAJyOcACcjoAAnI6QAJyOoACcjrAAnI7QAJyO8ACcjwAAnI8QAJyPMACcj0AAnJBQAJyQYACckIAAnJgwAJyYUACcmHAAnJiQAJyYwACcmNAAnJjgAJyY8ACcmQAAnJkgAJyZQACcmVAAnJlgAJyZgACcmZAAnKFAAJyhYACcoZAAnKGwAJyh4ACcofAAnKIAAJyiEACcoiAAnKJAAJyiYACconAAnKKAAJyioACcorAAnKRAAJykUACcpGAAnKSAAJysMACcrFAAnKxwAJyskACcrMAAnKzQAJys4ACcrPAAnK0AAJytIACcrUAAnK1QAJytYACcrYAAnK2QAJy1QACctWAAnLWQAJy1sACcteAAnLXwAJy2AACcthAAnLYgAJy2QACctmAAnLZwAJy2gACctqAAnLawAJy4UACcueAAnLrwAJy7IACcu1AAnLuAAJy7sACcvMAAnLzwAJy9IACcvVAAnL2AAJy9oACcvpAAnL/QAJzAkACcwfAAnMsgAJzNUACcz1AAnNFQAJzRcACc0ZAAnNGwAJzR0ACc0gAAnNIQAJzSIACc0lAAnNJgAJzSgACc0pAAnNLAAJzS8ACc0wAAnNMQAJzTQACc01AAnNOgAJzVMACc1cAAnNXgAJzWEACc1qAAnNbQAJzXAACc1yAAnNuwAJzd8ACc4GAAnOKgAJzi0ACc4vAAnOMQAJzjMACc41AAnONwAJzjgACc47AAnOVAAJznUACc53AAnOeQAJznsACc59AAnOfwAJzoEACc6DAAnOhQAJzqYACc6pAAnOrAAJzq8ACc6yAAnOtQAJzrgACc67AAnOvgAJzsAACc87AAnPPQAJzz8ACc9BAAnPRAAJz0UACc9GAAnPRwAJz0gACc9KAAnPTAAJz00ACc9OAAnPUAAJz1EACc/MAAnPzgAJz9AACc/SAAnP1QAJz9YACc/XAAnP2AAJz9kACc/bAAnP3QAJz94ACc/fAAnP4QAJz+IACdBdAAnQXwAJ0GIACdBkAAnQZwAJ0GgACdBpAAnQagAJ0GsACdBtAAnQbwAJ0HAACdBxAAnQcwAJ0HQACdCNAAnQjgAJ0I8ACdCRAAnRDAAJ0Q4ACdEQAAnREgAJ0RUACdEWAAnRFwAJ0RgACdEZAAnRGwAJ0R0ACdEeAAnRHwAJ0SEACdEiAAnRnQAJ0Z8ACdGhAAnRowAJ0aYACdGnAAnRqAAJ0akACdGqAAnRrAAJ0a4ACdGvAAnRsAAJ0bIACdGzAAnSLgAJ0jAACdIyAAnSNAAJ0jcACdI4AAnSOQAJ0joACdI7AAnSPQAJ0j8ACdJAAAnSQQAJ0kMACdJEAAnSvwAJ0sEACdLDAAnSxQAJ0sgACdLJAAnSygAJ0ssACdLMAAnSzgAJ0tAACdLRAAnS0gAJ0tQACdLVAAnTUAAJ01IACdNUAAnTVgAJ01kACdNaAAnTWwAJ01wACdNdAAnTXwAJ02EACdNiAAnTYwAJ02UACdNmAAnTrwAJ09MACdP6AAnUHgAJ1CEACdQkAAnUJgAJ1CgACdQqAAnULAAJ1C0ACdQwAAnUSQAJ1GYACdRpAAnUbAAJ1G8ACdRyAAnUdQAJ1HgACdR7AAnUmAAJ1JsACdSeAAnUoQAJ1KQACdSnAAnUqgAJ1K0ACdSvAAnVKgAJ1SwACdUvAAnVMQAJ1TQACdU1AAnVNgAJ1TcACdU4AAnVOgAJ1T0ACdU+AAnVPwAJ1UEACdVCAAnVvQAJ1b8ACdXCAAnVxAAJ1ccACdXIAAnVyQAJ1coACdXLAAnVzQAJ1dAACdXRAAnV0gAJ1dQACdXVAAnWUAAJ1lIACdZVAAnWVwAJ1loACdZbAAnWXAAJ1l0ACdZeAAnWYAAJ1mMACdZkAAnWZQAJ1mcACdZoAAnW4wAJ1uUACdboAAnW6gAJ1u0ACdbuAAnW7wAJ1vAACdbxAAnW8wAJ1vYACdb3AAnW+AAJ1voACdb7AAnXdgAJ13gACdd6AAnXfAAJ138ACdeAAAnXgQAJ14IACdeDAAnXhQAJ14gACdeJAAnXigAJ14wACdeNAAnYCAAJ2AoACdgMAAnYDgAJ2BEACdgSAAnYEwAJ2BQACdgVAAnYFwAJ2BoACdgbAAnYHAAJ2B4ACdgfAAnYmgAJ2JwACdifAAnYoQAJ2KQACdilAAnYpgAJ2KcACdioAAnYqgAJ2K0ACdiuAAnYrwAJ2LEACdiyAAnZRQAJ2WgACdmIAAnZqAAJ2aoACdmsAAnZrgAJ2bAACdmzAAnZtAAJ2bUACdm4AAnZuQAJ2bsACdm8AAnZvgAJ2cEACdnCAAnZwwAJ2cYACdnHAAnZ0AAJ2ekACdnyAAnZ9AAJ2fYACdn/AAnaAgAJ2gUACdoHAAnaUAAJ2nQACdqbAAnavwAJ2sIACdrEAAnaxgAJ2sgACdrKAAnazAAJ2s0ACdrQAAna6QAJ2woACdsMAAnbDgAJ2xAACdsSAAnbFAAJ2xYACdsYAAnbGgAJ2zsACds+AAnbQQAJ20QACdtHAAnbSgAJ200ACdtQAAnbUwAJ21UACdvQAAnb0gAJ29QACdvWAAnb2QAJ29oACdvbAAnb3AAJ290ACdvfAAnb4QAJ2+IACdvjAAnb5QAJ2+YACdxhAAncYwAJ3GUACdxnAAncagAJ3GsACdxsAAncbQAJ3G4ACdxwAAnccgAJ3HMACdx0AAncdgAJ3HcACdzyAAnc9AAJ3PcACdz5AAnc/AAJ3P0ACdz+AAnc/wAJ3QAACd0CAAndBAAJ3QUACd0GAAndCAAJ3QkACd0iAAndIwAJ3SQACd0mAAndoQAJ3aMACd2lAAndpwAJ3aoACd2rAAndrAAJ3a0ACd2uAAndsAAJ3bIACd2zAAndtAAJ3bYACd23AAneMgAJ3jQACd42AAneOAAJ3jsACd48AAnePQAJ3j4ACd4/AAneQQAJ3kMACd5EAAneRQAJ3kcACd5IAAnewwAJ3sUACd7HAAneyQAJ3swACd7NAAnezgAJ3s8ACd7QAAne0gAJ3tQACd7VAAne1gAJ3tgACd7ZAAnfVAAJ31YACd9YAAnfWgAJ310ACd9eAAnfXwAJ32AACd9hAAnfYwAJ32UACd9mAAnfZwAJ32kACd9qAAnf5QAJ3+cACd/pAAnf6wAJ3+4ACd/vAAnf8AAJ3/EACd/yAAnf9AAJ3/YACd/3AAnf+AAJ3/oACd/7AAngRAAJ4GgACeCPAAngswAJ4LYACeC4AAngugAJ4LwACeC+AAngwAAJ4MEACeDEAAng3QAJ4PoACeD8AAng/gAJ4QAACeECAAnhBAAJ4QYACeEIAAnhJQAJ4SgACeErAAnhLgAJ4TEACeE0AAnhNwAJ4ToACeE8AAnhtwAJ4bkACeG7AAnhvQAJ4cAACeHBAAnhwgAJ4cMACeHEAAnhxgAJ4cgACeHJAAnhygAJ4cwACeHNAAniSAAJ4koACeJMAAniTgAJ4lEACeJSAAniUwAJ4lQACeJVAAniVwAJ4lkACeJaAAniWwAJ4l0ACeJeAAni2QAJ4tsACeLdAAni3wAJ4uIACeLjAAni5AAJ4uUACeLmAAni6AAJ4uoACeLrAAni7AAJ4u4ACeLvAAnjagAJ42wACeNuAAnjcAAJ43MACeN0AAnjdQAJ43YACeN3AAnjeQAJ43sACeN8AAnjfQAJ438ACeOAAAnj+wAJ4/0ACeP/AAnkAQAJ5AQACeQFAAnkBgAJ5AcACeQIAAnkCgAJ5AwACeQNAAnkDgAJ5BAACeQRAAnkjAAJ5I4ACeSQAAnkkgAJ5JUACeSWAAnklwAJ5JgACeSZAAnkmwAJ5J0ACeSeAAnknwAJ5KEACeSiAAnlHQAJ5R8ACeUhAAnlIwAJ5SYACeUnAAnlKAAJ5SkACeUqAAnlLAAJ5S4ACeUvAAnlMAAJ5TIACeUzAAnlxgAJ5ekACeYJAAnmKQAJ5isACeYtAAnmLwAJ5jEACeY0AAnmNQAJ5jYACeY5AAnmOgAJ5jwACeY9AAnmPwAJ5kIACeZDAAnmRAAJ5kcACeZIAAnmTQAJ5mYACeZvAAnmcQAJ5nMACeZ8AAnmfwAJ5oIACeaEAAnmzQAJ5vEACecYAAnnPAAJ5z8ACedBAAnnQwAJ50UACedHAAnnSQAJ50oACedNAAnnZgAJ54cACeeJAAnniwAJ540ACeePAAnnkQAJ55MACeeVAAnnlwAJ57gACee7AAnnvgAJ58EACefEAAnnxwAJ58oACefNAAnn0AAJ59IACehNAAnoTwAJ6FEACehTAAnoVgAJ6FcACehYAAnoWQAJ6FoACehcAAnoXgAJ6F8ACehgAAnoYgAJ6GMACejeAAno4AAJ6OIACejkAAno5wAJ6OgACejpAAno6gAJ6OsACejtAAno7wAJ6PAACejxAAno8wAJ6PQACelvAAnpcQAJ6XQACel2AAnpeQAJ6XoACel7AAnpfAAJ6X0ACel/AAnpgQAJ6YIACemDAAnphQAJ6YYACemfAAnpoAAJ6aEACemjAAnqHgAJ6iAACeoiAAnqJAAJ6icACeooAAnqKQAJ6ioACeorAAnqLQAJ6i8ACeowAAnqMQAJ6jMACeo0AAnqrwAJ6rEACeqzAAnqtQAJ6rgACeq5AAnqugAJ6rsACeq8AAnqvgAJ6sAACerBAAnqwgAJ6sQACerFAAnrQAAJ60IACetEAAnrRgAJ60kACetKAAnrSwAJ60wACetNAAnrTwAJ61EACetSAAnrUwAJ61UACetWAAnr0QAJ69MACevVAAnr1wAJ69oACevbAAnr3AAJ690ACeveAAnr4AAJ6+IACevjAAnr5AAJ6+YACevnAAnsYgAJ7GQACexmAAnsaAAJ7GsACexsAAnsbQAJ7G4ACexvAAnscQAJ7HMACex0AAnsdQAJ7HcACex4AAnswQAJ7OUACe0MAAntMAAJ7TMACe01AAntNwAJ7TkACe07AAntPQAJ7T4ACe1BAAntWgAJ7XcACe15AAntewAJ7X0ACe1/AAntgQAJ7YMACe2FAAntogAJ7aUACe2oAAntqwAJ7a4ACe2xAAnttAAJ7bcACe25AAnuNAAJ7jYACe44AAnuOgAJ7j0ACe4+AAnuPwAJ7kAACe5BAAnuQwAJ7kUACe5GAAnuRwAJ7kkACe5KAAnuxQAJ7scACe7JAAnuywAJ7s4ACe7PAAnu0AAJ7tEACe7SAAnu1AAJ7tYACe7XAAnu2AAJ7toACe7bAAnvVgAJ71gACe9aAAnvXAAJ718ACe9gAAnvYQAJ72IACe9jAAnvZQAJ72cACe9oAAnvaQAJ72sACe9sAAnv5wAJ7+kACe/sAAnv7gAJ7/EACe/yAAnv8wAJ7/QACe/1AAnv9wAJ7/kACe/6AAnv+wAJ7/0ACe/+AAnweQAJ8HsACfB9AAnwfwAJ8IIACfCDAAnwhAAJ8IUACfCGAAnwiAAJ8IoACfCLAAnwjAAJ8I4ACfCPAAnxCgAJ8QwACfEOAAnxEAAJ8RMACfEUAAnxFQAJ8RYACfEXAAnxGQAJ8RsACfEcAAnxHQAJ8R8ACfEgAAnxmwAJ8Z0ACfGfAAnxoQAJ8aQACfGlAAnxpgAJ8acACfGoAAnxqgAJ8awACfGtAAnxrgAJ8bAACfGxAAnyRAAJ8mcACfKHAAnypwAJ8qkACfKrAAnyrQAJ8q8ACfKyAAnyswAJ8rQACfK3AAnyuAAJ8roACfK7AAnyvQAJ8sAACfLBAAnywgAJ8sUACfLGAAnyywAJ8uQACfLtAAny7wAJ8vEACfL6AAny/QAJ8wAACfMCAAnzSwAJ828ACfOWAAnzugAJ870ACfO/AAnzwQAJ88MACfPFAAnzxwAJ88gACfPLAAnz5AAJ9AUACfQHAAn0CQAJ9AsACfQNAAn0DwAJ9BEACfQTAAn0FQAJ9DYACfQ5AAn0PAAJ9D8ACfRCAAn0RQAJ9EgACfRLAAn0TgAJ9FAACfTLAAn0zQAJ9M8ACfTRAAn01AAJ9NUACfTWAAn01wAJ9NgACfTaAAn03AAJ9N0ACfTeAAn04AAJ9OEACfVcAAn1XgAJ9WAACfViAAn1ZQAJ9WYACfVnAAn1aAAJ9WkACfVrAAn1bQAJ9W4ACfVvAAn1cQAJ9XIACfXtAAn17wAJ9fIACfX0AAn19wAJ9fgACfX5AAn1+gAJ9fsACfX9AAn1/wAJ9gAACfYBAAn2AwAJ9gQACfYdAAn2HgAJ9h8ACfYhAAn2nAAJ9p4ACfagAAn2ogAJ9qUACfamAAn2pwAJ9qgACfapAAn2qwAJ9q0ACfauAAn2rwAJ9rEACfayAAn3LQAJ9y8ACfcxAAn3MwAJ9zYACfc3AAn3OAAJ9zkACfc6AAn3PAAJ9z4ACfc/AAn3QAAJ90IACfdDAAn3vgAJ98AACffCAAn3xAAJ98cACffIAAn3yQAJ98oACffLAAn3zQAJ988ACffQAAn30QAJ99MACffUAAn4TwAJ+FEACfhTAAn4VQAJ+FgACfhZAAn4WgAJ+FsACfhcAAn4XgAJ+GAACfhhAAn4YgAJ+GQACfhlAAn44AAJ+OIACfjkAAn45gAJ+OkACfjqAAn46wAJ+OwACfjtAAn47wAJ+PEACfjyAAn48wAJ+PUACfj2AAn5PwAJ+WMACfmKAAn5rgAJ+bEACfmzAAn5tQAJ+bcACfm5AAn5uwAJ+bwACfm/AAn52AAJ+fUACfn3AAn5+QAJ+fsACfn9AAn5/wAJ+gEACfoDAAn6IAAJ+iMACfomAAn6KQAJ+iwACfovAAn6MgAJ+jUACfo3AAn6sgAJ+rQACfq2AAn6uAAJ+rsACfq8AAn6vQAJ+r4ACfq/AAn6wQAJ+sMACfrEAAn6xQAJ+scACfrIAAn7QwAJ+0UACftHAAn7SQAJ+0wACftNAAn7TgAJ+08ACftQAAn7UgAJ+1QACftVAAn7VgAJ+1gACftZAAn71AAJ+9YACfvYAAn72gAJ+90ACfveAAn73wAJ++AACfvhAAn74wAJ++UACfvmAAn75wAJ++kACfvqAAn8ZQAJ/GcACfxqAAn8bAAJ/G8ACfxwAAn8cQAJ/HIACfxzAAn8dQAJ/HcACfx4AAn8eQAJ/HsACfx8AAn89wAJ/PkACfz7AAn8/QAJ/QAACf0BAAn9AgAJ/QMACf0EAAn9BgAJ/QgACf0JAAn9CgAJ/QwACf0NAAn9iAAJ/YoACf2MAAn9jgAJ/ZEACf2SAAn9kwAJ/ZQACf2VAAn9lwAJ/ZkACf2aAAn9mwAJ/Z0ACf2eAAn+GQAJ/hsACf4dAAn+HwAJ/iIACf4jAAn+JAAJ/iUACf4mAAn+KAAJ/ioACf4rAAn+LAAJ/i4ACf4vAAn+QAAJ/kEACf5DAAn+vgAJ/sAACf7CAAn+xAAJ/scACf7IAAn+yQAJ/soACf7LAAn+zQAJ/tAACf7RAAn+0gAJ/tQACf7VAAn/UAAJ/1IACf9UAAn/VgAJ/1kACf9aAAn/WwAJ/1wACf9dAAn/XwAJ/2IACf9jAAn/ZAAJ/2YACf9nAAn/4gAJ/+QACf/nAAn/6QAJ/+wACf/tAAn/7gAJ/+8ACf/wAAn/8gAJ//UACf/2AAn/9wAJ//kACf/6AAoAjQAKALAACgDQAAoA8AAKAPIACgD0AAoA9gAKAPgACgD7AAoA/AAKAP0ACgEAAAoBAQAKAQMACgEEAAoBBgAKAQkACgEKAAoBCwAKAQ4ACgEPAAoBFAAKAS0ACgE2AAoBOAAKAToACgFDAAoBRgAKAUkACgFLAAoBlAAKAbgACgHfAAoCAwAKAgYACgIIAAoCCgAKAgwACgIOAAoCEAAKAhEACgIUAAoCLQAKAk4ACgJQAAoCUgAKAlQACgJWAAoCWAAKAloACgJcAAoCXgAKAn8ACgKCAAoChQAKAogACgKLAAoCjgAKApEACgKUAAoClwAKApkACgMUAAoDFgAKAxgACgMaAAoDHQAKAx4ACgMfAAoDIAAKAyEACgMjAAoDJQAKAyYACgMnAAoDKQAKAyoACgOlAAoDpwAKA6kACgOrAAoDrgAKA68ACgOwAAoDsQAKA7IACgO0AAoDtgAKA7cACgO4AAoDugAKA7sACgQ2AAoEOAAKBDsACgQ9AAoEQAAKBEEACgRCAAoEQwAKBEQACgRGAAoESAAKBEkACgRKAAoETAAKBE0ACgRmAAoEZwAKBGgACgRqAAoE5QAKBOcACgTpAAoE6wAKBO4ACgTvAAoE8AAKBPEACgTyAAoE9AAKBPYACgT3AAoE+AAKBPoACgT7AAoFdgAKBXgACgV6AAoFfAAKBX8ACgWAAAoFgQAKBYIACgWDAAoFhQAKBYcACgWIAAoFiQAKBYsACgWMAAoGBwAKBgkACgYLAAoGDQAKBhAACgYRAAoGEgAKBhMACgYUAAoGFgAKBhgACgYZAAoGGgAKBhwACgYdAAoGmAAKBpoACgacAAoGngAKBqEACgaiAAoGowAKBqQACgalAAoGpwAKBqkACgaqAAoGqwAKBq0ACgauAAoHKQAKBysACgctAAoHLwAKBzIACgczAAoHNAAKBzUACgc2AAoHOAAKBzoACgc7AAoHPAAKBz4ACgc/AAoHiAAKB6wACgfTAAoH9wAKB/oACgf8AAoH/gAKCAAACggCAAoIBAAKCAUACggIAAoIIQAKCD4ACghAAAoIQgAKCEQACghGAAoISAAKCEoACghMAAoIaQAKCGwACghvAAoIcgAKCHUACgh4AAoIewAKCH4ACgiAAAoI+wAKCP0ACgj/AAoJAQAKCQQACgkFAAoJBgAKCQcACgkIAAoJCgAKCQwACgkNAAoJDgAKCRAACgkRAAoJjAAKCY4ACgmQAAoJkgAKCZUACgmWAAoJlwAKCZgACgmZAAoJmwAKCZ0ACgmeAAoJnwAKCaEACgmiAAoKHQAKCh8ACgohAAoKIwAKCiYACgonAAoKKAAKCikACgoqAAoKLAAKCi4ACgovAAoKMAAKCjIACgozAAoKrgAKCrAACgqzAAoKtQAKCrgACgq5AAoKugAKCrsACgq8AAoKvgAKCsAACgrBAAoKwgAKCsQACgrFAAoLQAAKC0IACgtEAAoLRgAKC0kACgtKAAoLSwAKC0wACgtNAAoLTwAKC1EACgtSAAoLUwAKC1UACgtWAAoL0QAKC9MACgvVAAoL1wAKC9oACgvbAAoL3AAKC90ACgveAAoL4AAKC+IACgvjAAoL5AAKC+YACgvnAAoMYgAKDGQACgxmAAoMaAAKDGsACgxsAAoMbQAKDG4ACgxvAAoMcQAKDHMACgx0AAoMdQAKDHcACgx4AAoNCwAKDS4ACg1OAAoNbgAKDXAACg1yAAoNdAAKDXYACg15AAoNegAKDXsACg1+AAoNfwAKDYEACg2CAAoNhAAKDYcACg2IAAoNiQAKDYwACg2NAAoNkgAKDasACg20AAoNtgAKDbgACg3BAAoNxAAKDccACg3JAAoOEgAKDjYACg5dAAoOgQAKDoQACg6GAAoOiAAKDooACg6MAAoOjgAKDo8ACg6SAAoOqwAKDswACg7OAAoO0AAKDtIACg7UAAoO1gAKDtgACg7aAAoO3AAKDv0ACg8AAAoPAwAKDwYACg8JAAoPDAAKDw8ACg8SAAoPFQAKDxcACg+SAAoPlAAKD5YACg+YAAoPmwAKD5wACg+dAAoPngAKD58ACg+hAAoPowAKD6QACg+lAAoPpwAKD6gAChAjAAoQJQAKECcAChApAAoQLAAKEC0AChAuAAoQLwAKEDAAChAyAAoQNAAKEDUAChA2AAoQOAAKEDkAChC0AAoQtgAKELkAChC7AAoQvgAKEL8AChDAAAoQwQAKEMIAChDEAAoQxgAKEMcAChDIAAoQygAKEMsAChDkAAoQ5QAKEOYAChDoAAoRYwAKEWUAChFnAAoRaQAKEWwAChFtAAoRbgAKEW8AChFwAAoRcgAKEXQAChF1AAoRdgAKEXgAChF5AAoR9AAKEfYAChH4AAoR+gAKEf0AChH+AAoR/wAKEgAAChIBAAoSAwAKEgUAChIGAAoSBwAKEgkAChIKAAoShQAKEocAChKJAAoSiwAKEo4AChKPAAoSkAAKEpEAChKSAAoSlAAKEpYAChKXAAoSmAAKEpoAChKbAAoTFgAKExgAChMaAAoTHAAKEx8AChMgAAoTIQAKEyIAChMjAAoTJQAKEycAChMoAAoTKQAKEysAChMsAAoTpwAKE6kAChOrAAoTrQAKE7AAChOxAAoTsgAKE7MAChO0AAoTtgAKE7gAChO5AAoTugAKE7wAChO9AAoUBgAKFCoAChRRAAoUdQAKFHgAChR6AAoUfAAKFH4AChSAAAoUggAKFIMAChSGAAoUnwAKFLwAChS+AAoUwAAKFMIAChTEAAoUxgAKFMgAChTKAAoU5wAKFOoAChTtAAoU8AAKFPMAChT2AAoU+QAKFPwAChT+AAoVeQAKFXsAChV9AAoVfwAKFYIAChWDAAoVhAAKFYUAChWGAAoViAAKFYoAChWLAAoVjAAKFY4AChWPAAoWCgAKFgwAChYOAAoWEAAKFhMAChYUAAoWFQAKFhYAChYXAAoWGQAKFhsAChYcAAoWHQAKFh8AChYgAAoWmwAKFp0AChafAAoWoQAKFqQAChalAAoWpgAKFqcAChaoAAoWqgAKFqwAChatAAoWrgAKFrAAChaxAAoXLAAKFy4AChcxAAoXMwAKFzYAChc3AAoXOAAKFzkAChc6AAoXPAAKFz4AChc/AAoXQAAKF0IAChdDAAoXvgAKF8AAChfCAAoXxAAKF8cAChfIAAoXyQAKF8oAChfLAAoXzQAKF88AChfQAAoX0QAKF9MAChfUAAoYTwAKGFEAChhTAAoYVQAKGFgAChhZAAoYWgAKGFsAChhcAAoYXgAKGGAAChhhAAoYYgAKGGQAChhlAAoY4AAKGOIAChjkAAoY5gAKGOkAChjqAAoY6wAKGOwAChjtAAoY7wAKGPEAChjyAAoY8wAKGPUAChj2AAoZiQAKGawAChnMAAoZ7AAKGe4AChnwAAoZ8gAKGfQAChn3AAoZ+AAKGfkAChn8AAoZ/QAKGf8AChoAAAoaAgAKGgUAChoGAAoaBwAKGgoAChoLAAoaFAAKGi0ACho2AAoaOAAKGjoAChpDAAoaRgAKGkkAChpLAAoalAAKGrgAChrfAAobAwAKGwYAChsIAAobCgAKGwwAChsOAAobEAAKGxEAChsUAAobLQAKG04AChtQAAobUgAKG1QAChtWAAobWAAKG1oAChtcAAobXgAKG38AChuCAAobhQAKG4gAChuLAAobjgAKG5EAChuUAAoblwAKG5kAChwUAAocFgAKHBgAChwaAAocHQAKHB4AChwfAAocIAAKHCEAChwjAAocJQAKHCYAChwnAAocKQAKHCoAChylAAocpwAKHKkAChyrAAocrgAKHK8AChywAAocsQAKHLIAChy0AAoctgAKHLcAChy4AAocugAKHLsACh02AAodOAAKHTsACh09AAodQAAKHUEACh1CAAodQwAKHUQACh1GAAodSAAKHUkACh1KAAodTAAKHU0ACh1mAAodZwAKHWgACh1qAAod5QAKHecACh3pAAod6wAKHe4ACh3vAAod8AAKHfEACh3yAAod9AAKHfYACh33AAod+AAKHfoACh37AAoedgAKHngACh56AAoefAAKHn8ACh6AAAoegQAKHoIACh6DAAoehQAKHocACh6IAAoeiQAKHosACh6MAAofBwAKHwkACh8LAAofDQAKHxAACh8RAAofEgAKHxMACh8UAAofFgAKHxgACh8ZAAofGgAKHxwACh8dAAofmAAKH5oACh+cAAofngAKH6EACh+iAAofowAKH6QACh+lAAofpwAKH6kACh+qAAofqwAKH60ACh+uAAogKQAKICsACiAtAAogLwAKIDIACiAzAAogNAAKIDUACiA2AAogOAAKIDoACiA7AAogPAAKID4ACiA/AAogiAAKIKwACiDTAAog9wAKIPoACiD8AAog/gAKIQAACiECAAohBAAKIQUACiEIAAohIQAKIT4ACiFAAAohQgAKIUQACiFGAAohSAAKIUoACiFMAAohaQAKIWwACiFvAAohcgAKIXUACiF4AAohewAKIX4ACiGAAAoh+wAKIf0ACiH/AAoiAQAKIgQACiIFAAoiBgAKIgcACiIIAAoiCgAKIgwACiINAAoiDgAKIhAACiIRAAoijAAKIo4ACiKQAAoikgAKIpUACiKWAAoilwAKIpgACiKZAAoimwAKIp0ACiKeAAoinwAKIqEACiKiAAojHQAKIx8ACiMhAAojIwAKIyYACiMnAAojKAAKIykACiMqAAojLAAKIy4ACiMvAAojMAAKIzIACiMzAAojrgAKI7AACiOzAAojtQAKI7gACiO5AAojugAKI7sACiO8AAojvgAKI8AACiPBAAojwgAKI8QACiPFAAokQAAKJEIACiREAAokRgAKJEkACiRKAAokSwAKJEwACiRNAAokTwAKJFEACiRSAAokUwAKJFUACiRWAAok0QAKJNMACiTVAAok1wAKJNoACiTbAAok3AAKJN0ACiTeAAok4AAKJOIACiTjAAok5AAKJOYACiTnAAolYgAKJWQACiVmAAolaAAKJWsACiVsAAolbQAKJW4ACiVvAAolcQAKJXMACiV0AAoldQAKJXcACiV4AAomCwAKJi4ACiZOAAombgAKJnAACiZyAAomdAAKJnYACiZ5AAomegAKJnsACiZ+AAomfwAKJoEACiaCAAomhQAKJogACiaJAAomigAKJo0ACiaOAAomkwAKJqwACia1AAomtwAKJroACibDAAomxgAKJskACibLAAonFAAKJzgACidfAAongwAKJ4YACieIAAonigAKJ4wACieOAAonkAAKJ5EACieUAAonrQAKJ84ACifQAAon0gAKJ9QACifWAAon2AAKJ9oACifcAAon3gAKJ/8ACigCAAooBQAKKAgACigLAAooDgAKKBEACigUAAooFwAKKBkACiiUAAoolgAKKJgACiiaAAoonQAKKJ4ACiifAAoooAAKKKEACiijAAoopQAKKKYACiinAAooqQAKKKoACiklAAopJwAKKSkACikrAAopLgAKKS8ACikwAAopMQAKKTIACik0AAopNgAKKTcACik4AAopOgAKKTsACim2AAopuAAKKbsACim9AAopwAAKKcEACinCAAopwwAKKcQACinGAAopyAAKKckACinKAAopzAAKKc0ACinmAAop5wAKKegACinqAAoqZQAKKmcACippAAoqawAKKm4ACipvAAoqcAAKKnEACipyAAoqdAAKKnYACip3AAoqeAAKKnoACip7AAoq9gAKKvgACir6AAoq/AAKKv8ACisAAAorAQAKKwIACisDAAorBQAKKwcACisIAAorCQAKKwsACisMAAorhwAKK4kACiuLAAorjQAKK5AACiuRAAorkgAKK5MACiuUAAorlgAKK5gACiuZAAormgAKK5wACiudAAosGAAKLBoACiwcAAosHgAKLCEACiwiAAosIwAKLCQACiwlAAosJwAKLCkACiwqAAosKwAKLC0ACiwuAAosqQAKLKsACiytAAosrwAKLLIACiyzAAostAAKLLUACiy2AAosuAAKLLoACiy7AAosvAAKLL4ACiy/AAotCAAKLSwACi1TAAotdwAKLXoACi19AAotfwAKLYEACi2DAAothQAKLYYACi2JAAotogAKLb8ACi3CAAotxQAKLcgACi3LAAotzgAKLdEACi3UAAot8QAKLfQACi33AAot+gAKLf0ACi4AAAouAwAKLgYACi4IAAougwAKLoUACi6IAAouigAKLo0ACi6OAAoujwAKLpAACi6RAAoukwAKLpYACi6XAAoumAAKLpoACi6bAAovFgAKLxgACi8bAAovHQAKLyAACi8hAAovIgAKLyMACi8kAAovJgAKLykACi8qAAovKwAKLy0ACi8uAAovqQAKL6sACi+uAAovsAAKL7MACi+0AAovtQAKL7YACi+3AAovuQAKL7wACi+9AAovvgAKL8AACi/BAAowPAAKMD4ACjBBAAowQwAKMEYACjBHAAowSAAKMEkACjBKAAowTAAKME8ACjBQAAowUQAKMFMACjBUAAowzwAKMNEACjDTAAow1QAKMNgACjDZAAow2gAKMNsACjDcAAow3gAKMOEACjDiAAow4wAKMOUACjDmAAoxYQAKMWMACjFlAAoxZwAKMWoACjFrAAoxbAAKMW0ACjFuAAoxcAAKMXMACjF0AAoxdQAKMXcACjF4AAox8wAKMfUACjH4AAox+gAKMf0ACjH+AAox/wAKMgAACjIBAAoyAwAKMgY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ACkNxAApDugAKQ94ACkQFAApEKQAKRCwACkQuAApEMAAKRDIACkQ0AApENgAKRDcACkQ6AApEUwAKRHQACkR2AApEeAAKRHoACkR8AApEfgAKRIAACkSCAApEhAAKRKUACkSoAApEqwAKRK4ACkSxAApEtAAKRLcACkS6AApEvQAKRL8ACkU6AApFPAAKRT4ACkVAAApFQwAKRUQACkVFAApFRgAKRUcACkVJAApFSwAKRUwACkVNAApFTwAKRVAACkXLAApFzQAKRc8ACkXRAApF1AAKRdUACkXWAApF1wAKRdgACkXaAApF3AAKRd0ACkXeAApF4AAKReEACkZcAApGXgAKRmEACkZjAApGZgAKRmcACkZoAApGaQAKRmoACkZsAApGbgAKRm8ACkZwAApGcgAKRnMACkaMAApGjQAKRo4ACkaQAApHCwAKRw0ACkcPAApHEQAKRxQACkcVAApHFgAKRxcACkcYAApHGgAKRxwACkcdAApHHgAKRyAACkchAApHnAAKR54ACkegAApHogAKR6UACkemAApHpwAKR6gACkepAApHqwAKR60ACkeuAApHrwAKR7EACkeyAApILQAKSC8ACkgxAApIMwAKSDYACkg3AApIOAAKSDkACkg6AApIPAAKSD4ACkg/AApIQAAKSEIACkhDAApIvgAKSMAACkjCAApIxAAKSMcACkjIAApIyQAKSMoACkjLAApIzQAKSM8ACkjQAApI0QAKSNMACkjUAApJTwAKSVEACklTAApJVQAKSVgACklZAApJWgAKSVsACklcAApJXgAKSWAACklhAApJYgAKSWQACkllAApJrgAKSdIACkn5AApKHQAKSiAACkoiAApKJAAKSiYACkooAApKKgAKSisACkouAApKRwAKSmQACkpmAApKaAAKSmoACkpsAApKbgAKSnAACkpyAApKjwAKSpIACkqVAApKmAAKSpsACkqeAApKoQAKSqQACkqmAApLIQAKSyMACkslAApLJwAKSyoACksrAApLLAAKSy0ACksuAApLMAAKSzIACkszAApLNAAKSzYACks3AApLsgAKS7QACku2AApLuAAKS7sACku8AApLvQAKS74ACku/AApLwQAKS8MACkvEAApLxQAKS8cACkvIAApMQwAKTEUACkxHAApMSQAKTEwACkxNAApMTgAKTE8ACkxQAApMUgAKTFQACkxVAApMVgAKTFgACkxZAApM1AAKTNYACkzYAApM2gAKTN0ACkzeAApM3wAKTOAACkzhAApM4wAKTOUACkzmAApM5wAKTOkACkzqAApNZQAKTWcACk1pAApNawAKTW4ACk1vAApNcAAKTXEACk1yAApNdAAKTXYACk13AApNeAAKTXoACk17AApN9gAKTfgACk36AApN/AAKTf8ACk4AAApOAQAKTgIACk4DAApOBQAKTgcACk4IAApOCQAKTgsACk4MAApOhwAKTokACk6LAApOjQAKTpAACk6RAApOkgAKTpMACk6UAApOlgAKTpgACk6ZAApOmgAKTpwACk6dAApPMAAKT1MACk9zAApPkwAKT5UACk+XAApPmQAKT5sACk+eAApPnwAKT6AACk+jAApPpAAKT6YACk+nAApPqQAKT6wACk+tAApPrgAKT7EACk+yAApPtwAKT9AACk/ZAApP2wAKT90ACk/mAApP6QAKT+wACk/uAApQNwAKUFsAClCCAApQpgAKUKkAClCrAApQrQAKUK8AClCxAApQswAKULQAClC3AApQ0AAKUPEAClDzAApQ9QAKUPcAClD5AApQ+wAKUP0AClD/AApRAQAKUSIAClElAApRKAAKUSsAClEuAApRMQAKUTQAClE3AApROgAKUTwAClG3AApRuQAKUbsAClG9AApRwAAKUcEAClHCAApRwwAKUcQAClHGAApRyAAKUckAClHKAApRzAAKUc0AClJIAApSSgAKUkwAClJOAApSUQAKUlIAClJTAApSVAAKUlUAClJXAApSWQAKUloAClJbAApSXQAKUl4AClLZAApS2wAKUt4AClLgAApS4wAKUuQAClLlAApS5gAKUucAClLpAApS6wAKUuwAClLtAApS7wAKUvAAClMJAApTCgAKUwsAClMNAApTiAAKU4oAClOMAApTjgAKU5EAClOSAApTkwAKU5QAClOVAApTlwAKU5kAClOaAApTmwAKU50AClOeAApUGQAKVBsAClQdAApUHwAKVCIAClQjAApUJAAKVCUAClQmAApUKAAKVCoAClQrAApULAAKVC4AClQvAApUqgAKVKwAClSuAApUsAAKVLMAClS0AApUtQAKVLYAClS3AApUuQAKVLsAClS8AApUvQAKVL8AClTAAApVOwAKVT0AClU/AApVQQAKVUQAClVFAApVRgAKVUcAClVIAApVSgAKVUwAClVNAApVTgAKVVAAClVRAApVzAAKVc4AClXQAApV0gAKVdUAClXWAApV1wAKVdgAClXZAApV2wAKVd0AClXeAApV3wAKVeEAClXiAApWKwAKVk8AClZ2AApWmgAKVp0AClafAApWoQAKVqMAClalAApWpwAKVqgAClarAApWxAAKVuEAClbjAApW5QAKVucAClbpAApW6wAKVu0AClbvAApXDAAKVw8AClcSAApXFQAKVxgAClcbAApXHgAKVyEAClcjAApXngAKV6AACleiAApXpAAKV6cACleoAApXqQAKV6oAClerAApXrQAKV68AClewAApXsQAKV7MACle0AApYLwAKWDEAClgzAApYNQAKWDgAClg5AApYOgAKWDsAClg8AApYPgAKWEAAClhBAApYQgAKWEQAClhFAApYwAAKWMIACljEAApYxgAKWMkACljKAApYywAKWMwACljNAApYzwAKWNEACljSAApY0wAKWNUACljWAApZUQAKWVMACllWAApZWAAKWVsACllcAApZXQAKWV4ACllfAApZYQAKWWMACllkAApZZQAKWWcAClloAApZ4wAKWeUAClnnAApZ6QAKWewAClntAApZ7gAKWe8AClnwAApZ8gAKWfQACln1AApZ9gAKWfgACln5AApadAAKWnYAClp4AApaegAKWn0AClp+AApafwAKWoAAClqBAApagwAKWoUAClqGAApahwAKWokAClqKAApbBQAKWwcAClsJAApbCwAKWw4AClsPAApbEAAKWxEAClsSAApbFAAKWxYAClsXAApbGAAKWxoAClsbAApbLAAKWy0AClsvAApbqgAKW6wACluuAApbsAAKW7MAClu0AApbtQAKW7YAClu3AApbuQAKW7wAClu9AApbvgAKW8AAClvBAApcPAAKXD4AClxAAApcQgAKXEUAClxGAApcRwAKXEgAClxJAApcSwAKXE4AClxPAApcUAAKXFIAClxTAApczgAKXNAAClzTAApc1QAKXNgAClzZAApc2gAKXNsAClzcAApc3gAKXOEAClziAApc4wAKXOUAClzmAApdeQAKXZwACl28AApd3AAKXd4ACl3gAApd4gAKXeQACl3nAApd6AAKXekACl3sAApd7QAKXe8ACl3wAApd8gAKXfUACl32AApd9wAKXfoACl37AApeAAAKXhkACl4iAApeJAAKXiYACl4vAApeMgAKXjUACl43AApegAAKXqQACl7LAApe7wAKXvIACl70AApe9gAKXvgACl76AApe/AAKXv0ACl8AAApfGQAKXzoACl88AApfPgAKX0AACl9CAApfRAAKX0YACl9IAApfSgAKX2sACl9uAApfcQAKX3QACl93AApfegAKX30ACl+AAApfgwAKX4UACmAAAApgAgAKYAQACmAGAApgCQAKYAoACmALAApgDAAKYA0ACmAPAApgEQAKYBIACmATAApgFQAKYBYACmCRAApgkwAKYJUACmCXAApgmgAKYJsACmCcAApgnQAKYJ4ACmCgAApgogAKYKMACmCkAApgpgAKYKcACmEiAAphJAAKYScACmEpAAphLAAKYS0ACmEuAAphLwAKYTAACmEyAAphNAAKYTUACmE2AAphOAAKYTkACmFSAAphUwAKYVQACmFWAAph0QAKYdMACmHVAAph1wAKYdoACmHbAAph3AAKYd0ACmHeAAph4AAKYeIACmHjAAph5AAKYeYACmHnAApiYgAKYmQACmJmAApiaAAKYmsACmJsAApibQAKYm4ACmJvAApicQAKYnMACmJ0AApidQAKYncACmJ4AApi8wAKYvUACmL3AApi+QAKYvwACmL9AApi/gAKYv8ACmMAAApjAgAKYwQACmMFAApjBgAKYwgACmMJAApjhAAKY4YACmOIAApjigAKY40ACmOOAApjjwAKY5AACmORAApjkwAKY5UACmOWAApjlwAKY5kACmOaAApkFQAKZBcACmQZAApkGwAKZB4ACmQfAApkIAAKZCEACmQiAApkJAAKZCYACmQnAApkKAAKZCoACmQrAApkdAAKZJgACmS/AApk4wAKZOYACmToAApk6gAKZOwACmTuAApk8AAKZPEACmT0AAplDQAKZSoACmUsAAplLgAKZTAACmUyAAplNAAKZTYACmU4AAplVQAKZVgACmVbAAplXgAKZWEACmVkAAplZwAKZWoACmVsAApl5wAKZekACmXrAApl7QAKZfAACmXxAApl8gAKZfMACmX0AApl9gAKZfgACmX5AApl+gAKZfwACmX9AApmeAAKZnoACmZ8AApmfgAKZoEACmaCAApmgwAKZoQACmaFAApmhwAKZokACmaKAApmiwAKZo0ACmaOAApnCQAKZwsACmcNAApnDwAKZxIACmcTAApnFAAKZxUACmcWAApnGAAKZxoACmcbAApnHAAKZx4ACmcfAApnmgAKZ5wACmefAApnoQAKZ6QACmelAApnpgAKZ6cACmeoAApnqgAKZ6wACmetAApnrgAKZ7AACmexAApoLAAKaC4ACmgwAApoMgAKaDUACmg2AApoNwAKaDgACmg5AApoOwAKaD0ACmg+AApoPwAKaEEACmhCAApovQAKaL8ACmjBAApowwAKaMYACmjHAApoyAAKaMkACmjKAApozAAKaM4ACmjPAApo0AAKaNIACmjTAAppTgAKaVAACmlSAAppVAAKaVcACmlYAAppWQAKaVoACmlbAAppXQAKaV8ACmlgAAppYQAKaWMACmlkAApp9wAKahoACmo6AApqWgAKalwACmpeAApqYAAKamIACmplAApqZgAKamcACmpqAApqawAKam0ACmpuAApqcQAKanQACmp1AApqdgAKankACmp6AApqgwAKapwACmqlAApqpwAKaqoACmqzAApqtgAKarkACmq7AAprBAAKaygACmtPAAprcwAKa3YACmt4AApregAKa3wACmt+AAprgAAKa4EACmuEAAprnQAKa74ACmvAAAprwgAKa8QACmvGAApryAAKa8oACmvMAAprzgAKa+8ACmvyAApr9QAKa/gACmv7AApr/gAKbAEACmwEAApsBwAKbAkACmyEAApshgAKbIgACmyKAApsjQAKbI4ACmyPAApskAAKbJEACmyTAApslQAKbJYACmyXAApsmQAKbJoACm0VAAptFwAKbRkACm0bAAptHgAKbR8ACm0gAAptIQAKbSIACm0kAAptJgAKbScACm0oAAptKgAKbSsACm2mAAptqAAKbasACm2tAAptsAAKbbEACm2yAAptswAKbbQACm22AAptuAAKbbkACm26AAptvAAKbb0ACm3WAApt1wAKbdgACm3aAApuVQAKblcACm5ZAApuWwAKbl4ACm5fAApuYAAKbmEACm5iAApuZAAKbmYACm5nAApuaAAKbmoACm5rAApu5gAKbugACm7qAApu7AAKbu8ACm7wAApu8QAKbvIACm7zAApu9QAKbvcACm74AApu+QAKbvsACm78AApvdwAKb3kACm97AApvfQAKb4AACm+BAApvggAKb4MACm+EAApvhgAKb4gACm+JAApvigAKb4wACm+NAApwCAAKcAoACnAMAApwDgAKcBEACnASAApwEwAKcBQACnAVAApwFwAKcBkACnAaAApwGwAKcB0ACnAeAApwmQAKcJsACnCdAApwnwAKcKIACnCjAApwpAAKcKUACnCmAApwqAAKcKoACnCrAApwrAAKcK4ACnCvAApw+AAKcRwACnFDAApxZwAKcWoACnFtAApxbwAKcXEACnFzAApxdQAKcXYACnF5AApxkgAKca8ACnGyAApxtQAKcbgACnG7AApxvgAKccEACnHEAApx4QAKceQACnHnAApx6gAKce0ACnHwAApx8wAKcfYACnH4AApycwAKcnUACnJ4AApyegAKcn0ACnJ+AApyfwAKcoAACnKBAApygwAKcoYACnKHAApyiAAKcooACnKLAApzBgAKcwgACnMLAApzDQAKcxAACnMRAApzEgAKcxMACnMUAApzFgAKcxkACnMaAApzGwAKcx0ACnMeAApzmQAKc5sACnOeAApzoAAKc6MACnOkAApzpQAKc6YACnOnAApzqQAKc6wACnOtAApzrgAKc7AACnOxAAp0LAAKdC4ACnQxAAp0MwAKdDYACnQ3AAp0OAAKdDkACnQ6AAp0PAAKdD8ACnRAAAp0QQAKdEMACnREAAp0vwAKdMEACnTDAAp0xQAKdMgACnTJAAp0ygAKdMsACnTMAAp0zgAKdNEACnTSAAp00wAKdNUACnTWAAp1UQAKdVMACnVVAAp1VwAKdVoACnVbAAp1XAAKdV0ACnVeAAp1YAAKdWMACnVkAAp1ZQAKdWcACnVoAAp14wAKdeUACnXoAAp16gAKde0ACnXuAAp17wAKdfAACnXxAAp18wAKdfYACnX3AAp1+AAKdfoACnX7AAp2jgAKdrEACnbRAAp28QAKdvMACnb1AAp29wAKdvkACnb8AAp2/QAKdv4ACncBAAp3AgAKdwQACncFAAp3BwAKdwoACncLAAp3DAAKdw8ACncQAAp3FQAKdy4ACnc3AAp3OQAKdzsACndEAAp3RwAKd0oACndMAAp3lQAKd7kACnfgAAp4BAAKeAcACngJAAp4CwAKeA0ACngPAAp4EQAKeBIACngVAAp4LgAKeE8ACnhRAAp4UwAKeFUACnhXAAp4WQAKeFsACnhdAAp4XwAKeIAACniDAAp4hgAKeIkACniMAAp4jwAKeJIACniVAAp4mAAKeJoACnkVAAp5FwAKeRkACnkbAAp5HgAKeR8ACnkgAAp5IQAKeSIACnkkAAp5JgAKeScACnkoAAp5KgAKeSsACnmmAAp5qAAKeaoACnmsAAp5rwAKebAACnmxAAp5sgAKebMACnm1AAp5twAKebgACnm5AAp5uwAKebwACno3AAp6OQAKejwACno+AAp6QQAKekIACnpDAAp6RAAKekUACnpHAAp6SQAKekoACnpLAAp6TQAKek4ACnpnAAp6aAAKemkACnprAAp65gAKeugACnrqAAp67AAKeu8ACnrwAAp68QAKevIACnrzAAp69QAKevcACnr4AAp6+QAKevsACnr8AAp7dwAKe3kACnt7AAp7fQAKe4AACnuBAAp7ggAKe4MACnuEAAp7hgAKe4gACnuJAAp7igAKe4wACnuNAAp8CAAKfAoACnwMAAp8DgAKfBEACnwSAAp8EwAKfBQACnwVAAp8FwAKfBkACnwaAAp8GwAKfB0ACnweAAp8mQAKfJsACnydAAp8nwAKfKIACnyjAAp8pAAKfKUACnymAAp8qAAKfKoACnyrAAp8rAAKfK4ACnyvAAp9KgAKfSwACn0uAAp9MAAKfTMACn00AAp9NQAKfTYACn03AAp9OQAKfTsACn08AAp9PQAKfT8ACn1AAAp9iQAKfa0ACn3UAAp9+AAKffsACn39AAp9/wAKfgEACn4DAAp+BQAKfgYACn4JAAp+IgAKfj8ACn5BAAp+QwAKfkUACn5HAAp+SQAKfksACn5NAAp+agAKfm0ACn5wAAp+cwAKfnYACn55AAp+fAAKfn8ACn6BAAp+/AAKfv4ACn8AAAp/AgAKfwUACn8GAAp/BwAKfwgACn8JAAp/CwAKfw0ACn8OAAp/DwAKfxEACn8SAAp/jQAKf48ACn+RAAp/kwAKf5YACn+XAAp/mAAKf5kACn+aAAp/nAAKf54ACn+fAAp/oAAKf6IACn+jAAqAHgAKgCAACoAiAAqAJAAKgCcACoAoAAqAKQAKgCoACoArAAqALQAKgC8ACoAwAAqAMQAKgDMACoA0AAqArwAKgLEACoC0AAqAtgAKgLkACoC6AAqAuwAKgLwACoC9AAqAvwAKgMEACoDCAAqAwwAKgMUACoDGAAqBQQAKgUMACoFFAAqBRwAKgUoACoFLAAqBTAAKgU0ACoFOAAqBUAAKgVIACoFTAAqBVAAKgVYACoFXAAqB0gAKgdQACoHWAAqB2AAKgdsACoHcAAqB3QAKgd4ACoHfAAqB4QAKgeMACoHkAAqB5QAKgecACoHoAAqCYwAKgmUACoJnAAqCaQAKgmwACoJtAAqCbgAKgm8ACoJwAAqCcgAKgnQACoJ1AAqCdgAKgngACoJ5AAqCigAKgosACoKNAAqDCAAKgwoACoMMAAqDDgAKgxEACoMSAAqDEwAKgxQACoMVAAqDFwAKgxoACoMbAAqDHAAKgx4ACoMfAAqDmgAKg5wACoOeAAqDoAAKg6MACoOkAAqDpQAKg6YACoOnAAqDqQAKg6wACoOtAAqDrgAKg7AACoOxAAqELAAKhC4ACoQxAAqEMwAKhDYACoQ3AAqEOAAKhDkACoQ6AAqEPAAKhD8ACoRAAAqEQQAKhEMACoREAAqE1wAKhPoACoUaAAqFOgAKhTwACoU+AAqFQAAKhUIACoVFAAqFRgAKhUcACoVKAAqFSwAKhU0ACoVOAAqFUQAKhVQACoVVAAqFVgAKhVkACoVaAAqFXwAKhXgACoWBAAqFgwAKhYYACoWPAAqFkgAKhZUACoWXAAqF4AAKhgQACoYrAAqGTwAKhlIACoZUAAqGVgAKhlgACoZaAAqGXAAKhl0ACoZgAAqGeQAKhpoACoacAAqGngAKhqAACoaiAAqGpAAKhqYACoaoAAqGqgAKhssACobOAAqG0QAKhtQACobXAAqG2gAKht0ACobgAAqG4wAKhuUACodgAAqHYgAKh2QACodmAAqHaQAKh2oACodrAAqHbAAKh20ACodvAAqHcQAKh3IACodzAAqHdQAKh3YACofxAAqH8wAKh/UACof3AAqH+gAKh/sACof8AAqH/QAKh/4ACogAAAqIAgAKiAMACogEAAqIBgAKiAcACoiCAAqIhAAKiIcACoiJAAqIjAAKiI0ACoiOAAqIjwAKiJAACoiSAAqIlAAKiJUACoiWAAqImAAKiJkACoiyAAqIswAKiLQACoi2AAqJMQAKiTMACok1AAqJNwAKiToACok7AAqJPAAKiT0ACok+AAqJQAAKiUIAColDAAqJRAAKiUYAColHAAqJwgAKicQAConGAAqJyAAKicsAConMAAqJzQAKic4AConPAAqJ0QAKidMAConUAAqJ1QAKidcAConYAAqKUwAKilUACopXAAqKWQAKilwACopdAAqKXgAKil8ACopgAAqKYgAKimQACoplAAqKZgAKimgACoppAAqK5AAKiuYACoroAAqK6gAKiu0ACoruAAqK7wAKivAACorxAAqK8wAKivUACor2AAqK9wAKivkACor6AAqLdQAKi3cACot5AAqLewAKi34ACot/AAqLgAAKi4EACouCAAqLhAAKi4YACouHAAqLiAAKi4oACouLAAqL1AAKi/gACowfAAqMQwAKjEYACoxJAAqMSwAKjE0ACoxPAAqMUQAKjFIACoxVAAqMbgAKjIsACoyOAAqMkQAKjJQACoyXAAqMmgAKjJ0ACoygAAqMvQAKjMAACozDAAqMxgAKjMkACozMAAqMzwAKjNIACozUAAqNTwAKjVEACo1UAAqNVgAKjVkACo1aAAqNWwAKjVwACo1dAAqNXwAKjWIACo1jAAqNZAAKjWYACo1nAAqN4gAKjeQACo3nAAqN6QAKjewACo3tAAqN7gAKje8ACo3wAAqN8gAKjfUACo32AAqN9wAKjfkACo36AAqOdQAKjncACo56AAqOfAAKjn8ACo6AAAqOgQAKjoIACo6DAAqOhQAKjogACo6JAAqOigAKjowACo6NAAqPCAAKjwoACo8NAAqPDwAKjxIACo8TAAqPFAAKjxUACo8WAAqPGAAKjxsACo8cAAqPHQAKjx8ACo8gAAqPowAKj8cACo/rAAqQDgAKkDUACpBVAAqQfAAKkKMACpDDAAqQ5wAKkQsACpENAAqREAAKkRIACpEUAAqRFgAKkRkACpEcAAqRHgAKkSAACpEjAAqRJQAKkScACpEqAAqRLQAKkS4ACpE3AAqRUAAKkVUACpFXAAqRXAAKkV8ACpFhAAqRqgAKkc4ACpH1AAqSGQAKkhwACpIeAAqSIAAKkiIACpIkAAqSJgAKkicACpIqAAqSQwAKkmgACpJqAAqSbAAKkm4ACpJwAAqScgAKknQACpJ2AAqSeAAKknoACpKfAAqSogAKkqUACpKoAAqSqwAKkq4ACpKxAAqStAAKkrcACpK6AAqSvAAKkzcACpM5AAqTPAAKkz4ACpNBAAqTQgAKk0MACpNEAAqTRQAKk0cACpNJAAqTSgAKk0sACpNNAAqTTgAKk18ACpNgAAqTYgAKk90ACpPfAAqT4QAKk+MACpPmAAqT5wAKk+gACpPpAAqT6gAKk+wACpPuAAqT7wAKk/AACpPyAAqT8wAKlG4ACpRwAAqUcwAKlHUACpR4AAqUeQAKlHoACpR7AAqUfAAKlH4ACpSAAAqUgQAKlIIACpSEAAqUhQAKlJYACpSXAAqUmQAKlRQACpUWAAqVGAAKlRoACpUdAAqVHgAKlR8ACpUgAAqVIQAKlSMACpUlAAqVJgAKlScACpUpAAqVKgAKlaUACpWnAAqVqgAKlawACpWvAAqVsAAKlbEACpWyAAqVswAKlbUACpW3AAqVuAAKlbkACpW7AAqVvAAKlc0ACpXOAAqV0AAKlksACpZNAAqWTwAKllEACpZUAAqWVQAKllYACpZXAAqWWAAKlloACpZcAAqWXQAKll4ACpZgAAqWYQAKltwACpbeAAqW4QAKluMACpbmAAqW5wAKlugACpbpAAqW6gAKluwACpbuAAqW7wAKlvAACpbyAAqW8wAKlwwACpcNAAqXDgAKlxAACpeLAAqXjQAKl48ACpeRAAqXlAAKl5UACpeWAAqXlwAKl5gACpeaAAqXnAAKl50ACpeeAAqXoAAKl6EACpgcAAqYHgAKmCEACpgjAAqYJgAKmCcACpgoAAqYKQAKmCoACpgsAAqYLgAKmC8ACpgwAAqYMgAKmDMACphVAAqYbgAKmHMACph2AAqYewAKmH4ACpiAAAqYkgAKmSUACplIAAqZaAAKmYgACpmKAAqZjAAKmY4ACpmQAAqZkwAKmZQACpmVAAqZmAAKmZkACpmbAAqZnAAKmZ8ACpmiAAqZowAKmaQACpmnAAqZqAAKmbEACpnKAAqZ0wAKmdUACpnYAAqZ4QAKmeQACpnnAAqZ6QAKmjIACppWAAqafQAKmqEACpqkAAqapgAKmqgACpqqAAqarAAKmq4ACpqvAAqasgAKmssACprsAAqa7gAKmvAACpryAAqa9AAKmvYACpr4AAqa+gAKmvwACpsdAAqbIAAKmyMACpsmAAqbKQAKmywACpsvAAqbMgAKmzUACps3AAqbsgAKm7QACpu2AAqbuAAKm7sACpu8AAqbvQAKm74ACpu/AAqbwQAKm8MACpvEAAqbxQAKm8cACpvIAAqcQwAKnEUACpxHAAqcSQAKnEwACpxNAAqcTgAKnE8ACpxQAAqcUgAKnFQACpxVAAqcVgAKnFgACpxZAAqc1AAKnNYACpzZAAqc2wAKnN4ACpzfAAqc4AAKnOEACpziAAqc5AAKnOYACpznAAqc6AAKnOoACpzrAAqdBAAKnQUACp0GAAqdCAAKnYMACp2FAAqdhwAKnYkACp2MAAqdjQAKnY4ACp2PAAqdkAAKnZIACp2UAAqdlQAKnZYACp2YAAqdmQAKnhQACp4WAAqeGAAKnhoACp4dAAqeHgAKnh8ACp4gAAqeIQAKniMACp4lAAqeJgAKnicACp4pAAqeKgAKnqUACp6nAAqeqQAKnqsACp6uAAqerwAKnrAACp6xAAqesgAKnrQACp62AAqetwAKnrgACp66AAqeuwAKnzYACp84AAqfOgAKnzwACp8/AAqfQAAKn0EACp9CAAqfQwAKn0UACp9HAAqfSAAKn0kACp9LAAqfTAAKn8cACp/JAAqfywAKn80ACp/QAAqf0QAKn9IACp/TAAqf1AAKn9YACp/YAAqf2QAKn9oACp/cAAqf3QAKoCYACqBKAAqgcQAKoJUACqCYAAqgmwAKoJ0ACqCfAAqgoQAKoKMACqCkAAqgpwAKoMAACqDdAAqg4AAKoOMACqDmAAqg6QAKoOwACqDvAAqg8gAKoQ8ACqESAAqhFQAKoRgACqEbAAqhHgAKoSEACqEkAAqhJgAKoaEACqGjAAqhpgAKoagACqGrAAqhrAAKoa0ACqGuAAqhrwAKobEACqG0AAqhtQAKobYACqG4AAqhuQAKojQACqI2AAqiOQAKojsACqI+AAqiPwAKokAACqJBAAqiQgAKokQACqJHAAqiSAAKokkACqJLAAqiTAAKoscACqLJAAqizAAKos4ACqLRAAqi0gAKotMACqLUAAqi1QAKotcACqLaAAqi2wAKotwACqLeAAqi3wAKo1oACqNcAAqjXwAKo2EACqNkAAqjZQAKo2YACqNnAAqjaAAKo2oACqNtAAqjbgAKo28ACqNxAAqjcgAKo+0ACqPvAAqj8QAKo/MACqP2AAqj9wAKo/gACqP5AAqj+gAKo/wACqP/AAqkAAAKpAEACqQDAAqkBAAKpH8ACqSBAAqkgwAKpIUACqSIAAqkiQAKpIoACqSLAAqkjAAKpI4ACqSRAAqkkgAKpJMACqSVAAqklgAKpREACqUTAAqlFgAKpRgACqUbAAqlHAAKpR0ACqUeAAqlHwAKpSEACqUkAAqlJQAKpSYACqUoAAqlKQAKpToACqU/AAqlQgAKpUQACqV9AAqlgAAKpYIACqWFAAqliAAKpYsACqWOAAqllwAKpjoACqZeAAqmggAKpqIACqbJAAqm8AAKpxAACqc3AAqnWwAKp34ACqelAAqnyQAKp+0ACqgRAAqoOAAKqDkACqg7AAqoPQAKqEAACqhCAAqoRQAKqEcACqhJAAqoTAAKqE4ACqhQAAqoUwAKqFYACqhYAAqoWgAKqFwACqhfAAqoYgAKqGUACqhqAAqogwAKqIgACqiKAAqojwAKqJIACqiUAAqo3QAKqQEACqkoAAqpTAAKqU8ACqlRAAqpUwAKqVUACqlXAAqpWQAKqVoACqldAAqpdgAKqZsACqmdAAqpnwAKqaEACqmjAAqppQAKqacACqmpAAqpqwAKqa0ACqnSAAqp1QAKqdgACqnbAAqp3gAKqeEACqnkAAqp5wAKqeoACqntAAqp7wAKqmoACqpsAAqqbwAKqnEACqp0AAqqdQAKqnYACqp3AAqqeAAKqnoACqp8AAqqfQAKqn4ACqqAAAqqgQAKqpIACqqTAAqqlQAKqxAACqsSAAqrFAAKqxYACqsZAAqrGgAKqxsACqscAAqrHQAKqx8ACqshAAqrIgAKqyMACqslAAqrJgAKq6EACqujAAqrpgAKq6gACqurAAqrrAAKq60ACquuAAqrrwAKq7EACquzAAqrtAAKq7UACqu3AAqruAAKq8kACqvKAAqrzAAKrEcACqxJAAqsSwAKrE0ACqxQAAqsUQAKrFIACqxTAAqsVAAKrFYACqxYAAqsWQAKrFoACqxcAAqsXQAKrNgACqzaAAqs3QAKrN8ACqziAAqs4wAKrOQACqzlAAqs5gAKrOgACqzqAAqs6wAKrOwACqzuAAqs7wAKrQAACq0BAAqtAwAKrX4ACq2AAAqtggAKrYQACq2HAAqtiAAKrYkACq2KAAqtiwAKrY0ACq2PAAqtkAAKrZEACq2TAAqtlAAKrg8ACq4RAAquFAAKrhYACq4ZAAquGgAKrhsACq4cAAquHQAKrh8ACq4hAAquIgAKriMACq4lAAquJgAKrj8ACq5AAAquQQAKrkMACq6+AAquwAAKrsIACq7EAAquxwAKrsgACq7JAAquygAKrssACq7NAAquzwAKrtAACq7RAAqu0wAKrtQACq9PAAqvUQAKr1QACq9WAAqvWQAKr1oACq9bAAqvXAAKr10ACq9fAAqvYQAKr2IACq9jAAqvZQAKr2YACq9/AAqvmAAKr60ACq+wAAqvswAKr7YACq+5AAqvvAAKr9EACq/UAAqv1wAKr9oACq/dAAqv4AAKr+IACq/wAAqwCAAKsB4ACrA+AAqw0QAKsPQACrEUAAqxNAAKsTYACrE4AAqxOgAKsTwACrE/AAqxQAAKsUEACrFEAAqxRQAKsUcACrFIAAqxSgAKsU0ACrFOAAqxTwAKsVIACrFTAAqxWAAKsXEACrF6AAqxfAAKsX4ACrGHAAqxigAKsY0ACrGPAAqx2AAKsfwACrIjAAqyRwAKskoACrJMAAqyTgAKslAACrJSAAqyVAAKslUACrJYAAqycQAKspIACrKUAAqylgAKspgACrKaAAqynAAKsp4ACrKgAAqyogAKssMACrLGAAqyyQAKsswACrLPAAqy0gAKstUACrLYAAqy2wAKst0ACrNYAAqzWgAKs1wACrNeAAqzYQAKs2IACrNjAAqzZAAKs2UACrNnAAqzaQAKs2oACrNrAAqzbQAKs24ACrPpAAqz6wAKs+0ACrPvAAqz8gAKs/MACrP0AAqz9QAKs/YACrP4AAqz+gAKs/sACrP8AAqz/gAKs/8ACrR6AAq0fAAKtH8ACrSBAAq0hAAKtIUACrSGAAq0hwAKtIgACrSKAAq0jAAKtI0ACrSOAAq0kAAKtJEACrSqAAq0qwAKtKwACrSuAAq1KQAKtSsACrUtAAq1LwAKtTIACrUzAAq1NAAKtTUACrU2AAq1OAAKtToACrU7AAq1PAAKtT4ACrU/AAq1ugAKtbwACrW+AAq1wAAKtcMACrXEAAq1xQAKtcYACrXHAAq1yQAKtcsACrXMAAq1zQAKtc8ACrXQAAq2SwAKtk0ACrZPAAq2UQAKtlQACrZVAAq2VgAKtlcACrZYAAq2WgAKtlwACrZdAAq2XgAKtmAACrZhAAq23AAKtt4ACrbgAAq24gAKtuUACrbmAAq25wAKtugACrbpAAq26wAKtu0ACrbuAAq27wAKtvEACrbyAAq3bQAKt28ACrdxAAq3cwAKt3YACrd3AAq3eAAKt3kACrd6AAq3fAAKt34ACrd/AAq3gAAKt4IACreDAAq3zAAKt/AACrgXAAq4OwAKuD4ACrhAAAq4QgAKuEQACrhGAAq4SAAKuEkACrhMAAq4ZQAKuIIACriEAAq4hgAKuIgACriKAAq4jAAKuI4ACriQAAq4rQAKuLAACrizAAq4tgAKuLkACri8AAq4vwAKuMIACrjEAAq5PwAKuUEACrlDAAq5RQAKuUgACrlJAAq5SgAKuUsACrlMAAq5TgAKuVAACrlRAAq5UgAKuVQACrlVAAq50AAKudIACrnUAAq51gAKudkACrnaAAq52wAKudwACrndAAq53wAKueEACrniAAq54wAKueUACrnmAAq6YQAKumMACrplAAq6ZwAKumoACrprAAq6bAAKum0ACrpuAAq6cAAKunIACrpzAAq6dAAKunYACrp3AAq68gAKuvQACrr2AAq6+AAKuvsACrr8AAq6/QAKuv4ACrr/AAq7AQAKuwMACrsEAAq7BQAKuwcACrsIAAq7gwAKu4UACruHAAq7iQAKu4wACruNAAq7jgAKu48ACruQAAq7kgAKu5QACruVAAq7lgAKu5gACruZAAq8FAAKvBYACrwYAAq8GgAKvB0ACrweAAq8HwAKvCAACrwhAAq8IwAKvCUACrwmAAq8JwAKvCkACrwqAAq8pQAKvKcACrypAAq8qwAKvK4ACryvAAq8sAAKvLEACryyAAq8tAAKvLYACry3AAq8uAAKvLoACry7AAq9TgAKvXEACr2RAAq9sQAKvbMACr21AAq9twAKvbkACr28AAq9vQAKvb4ACr3BAAq9wgAKvcQACr3FAAq9xwAKvcoACr3LAAq9zAAKvc8ACr3QAAq91QAKve4ACr33AAq9+QAKvfsACr4EAAq+BwAKvgoACr4MAAq+VQAKvnkACr6gAAq+xAAKvscACr7JAAq+ywAKvs0ACr7PAAq+0QAKvtIACr7VAAq+7gAKvw8ACr8RAAq/EwAKvxUACr8XAAq/GQAKvxsACr8dAAq/HwAKv0AACr9DAAq/RgAKv0kACr9MAAq/TwAKv1IACr9VAAq/WAAKv1oACr/VAAq/1wAKv9kACr/bAAq/3gAKv98ACr/gAAq/4QAKv+IACr/kAAq/5gAKv+cACr/oAAq/6gAKv+sACsBmAArAaAAKwGoACsBsAArAbwAKwHAACsBxAArAcgAKwHMACsB1AArAdwAKwHgACsB5AArAewAKwHwACsD3AArA+QAKwPwACsD+AArBAQAKwQIACsEDAArBBAAKwQUACsEHAArBCQAKwQoACsELAArBDQAKwQ4ACsEnAArBKAAKwSkACsErAArBpgAKwagACsGqAArBrAAKwa8ACsGwAArBsQAKwbIACsGzAArBtQAKwbcACsG4AArBuQAKwbsACsG8AArCNwAKwjkACsI7AArCPQAKwkAACsJBAArCQgAKwkMACsJEAArCRgAKwkgACsJJAArCSgAKwkwACsJNAArCyAAKwsoACsLMAArCzgAKwtEACsLSAArC0wAKwtQACsLVAArC1wAKwtkACsLaAArC2wAKwt0ACsLeAArDWQAKw1sACsNdAArDXwAKw2IACsNjAArDZAAKw2UACsNmAArDaAAKw2oACsNrAArDbAAKw24ACsNvAArD6gAKw+wACsPuAArD8AAKw/MACsP0AArD9QAKw/YACsP3AArD+QAKw/sACsP8AArD/QAKw/8ACsQAAArESQAKxG0ACsSUAArEuAAKxLsACsS9AArEvwAKxMEACsTDAArExQAKxMYACsTJAArE4gAKxP8ACsUBAArFAwAKxQUACsUHAArFCQAKxQsACsUNAArFKgAKxS0ACsUwAArFMwAKxTYACsU5AArFPAAKxT8ACsVBAArFvAAKxb4ACsXAAArFwgAKxcUACsXGAArFxwAKxcgACsXJAArFywAKxc0ACsXOAArFzwAKxdEACsXSAArGTQAKxk8ACsZRAArGUwAKxlYACsZXAArGWAAKxlkACsZaAArGXAAKxl4ACsZfAArGYAAKxmIACsZjAArG3gAKxuAACsbiAArG5AAKxucACsboAArG6QAKxuoACsbrAArG7QAKxu8ACsbwAArG8QAKxvMACsb0AArHbwAKx3EACsd0AArHdgAKx3kACsd6AArHewAKx3wACsd9AArHfwAKx4EACseCAArHgwAKx4UACseGAArIAQAKyAMACsgFAArIBwAKyAoACsgLAArIDAAKyA0ACsgOAArIEAAKyBIACsgTAArIFAAKyBYACsgXAArIkgAKyJQACsiWAArImAAKyJsACsicAArInQAKyJ4ACsifAArIoQAKyKMACsikAArIpQAKyKcACsioAArJIwAKySUACsknAArJKQAKySwACsktAArJLgAKyS8ACskwAArJMgAKyTQACsk1AArJNgAKyTgACsk5AArJzAAKye8ACsoPAArKLwAKyjEACsozAArKNQAKyjcACso6AArKOwAKyjwACso/AArKQAAKykIACspDAArKRQAKykgACspJAArKSgAKyk0ACspOAArKUwAKymwACsp1AArKdwAKynkACsqCAArKhQAKyogACsqKAArK0wAKyvcACsseAArLQgAKy0UACstHAArLSQAKy0sACstNAArLTwAKy1AACstTAArLbAAKy40ACsuPAArLkQAKy5MACsuVAArLlwAKy5kACsubAArLnQAKy74ACsvBAArLxAAKy8cACsvKAArLzQAKy9AACsvTAArL1gAKy9gACsxTAArMVQAKzFcACsxZAArMXAAKzF0ACsxeAArMXwAKzGAACsxiAArMZAAKzGUACsxmAArMaAAKzGkACszkAArM5gAKzOgACszqAArM7QAKzO4ACszvAArM8AAKzPEACszzAArM9QAKzPYACsz3AArM+QAKzPoACs11AArNdwAKzXoACs18AArNfwAKzYAACs2BAArNggAKzYMACs2FAArNhwAKzYgACs2JAArNiwAKzYwACs2lAArNpgAKzacACs2pAArOJAAKziYACs4oAArOKgAKzi0ACs4uAArOLwAKzjAACs4xAArOMwAKzjUACs42AArONwAKzjkACs46AArOtQAKzrcACs65AArOuwAKzr4ACs6/AArOwAAKzsEACs7CAArOxAAKzsYACs7HAArOyAAKzsoACs7LAArPRgAKz0gACs9KAArPTAAKz08ACs9QAArPUQAKz1IACs9TAArPVQAKz1cACs9YAArPWQAKz1sACs9cAArP1wAKz9kACs/bAArP3QAKz+AACs/hAArP4gAKz+MACs/kAArP5gAKz+gACs/pAArP6gAKz+wACs/tAArQaAAK0GoACtBsAArQbgAK0HEACtByAArQcwAK0HQACtB1AArQdwAK0HkACtB6AArQewAK0H0ACtB+AArQxwAK0OsACtESAArRNgAK0TkACtE7AArRPQAK0T8ACtFBAArRQwAK0UQACtFHAArRYAAK0X0ACtF/AArRgQAK0YMACtGFAArRhwAK0YkACtGLAArRqAAK0asACtGuAArRsQAK0bQACtG3AArRugAK0b0ACtG/AArSOgAK0jwACtI+AArSQAAK0kMACtJEAArSRQAK0kYACtJHAArSSQAK0ksACtJMAArSTQAK0k8ACtJQAArSywAK0s0ACtLPAArS0QAK0tQACtLVAArS1gAK0tcACtLYAArS2gAK0twACtLdAArS3gAK0uAACtLhAArTXAAK014ACtNgAArTYgAK02UACtNmAArTZwAK02gACtNpAArTawAK020ACtNuAArTbwAK03EACtNyAArT7QAK0+8ACtPyAArT9AAK0/cACtP4AArT+QAK0/oACtP7AArT/QAK0/8ACtQAAArUAQAK1AMACtQEAArUfwAK1IEACtSDAArUhQAK1IgACtSJAArUigAK1IsACtSMAArUjgAK1JAACtSRAArUkgAK1JQACtSVAArVEAAK1RIACtUUAArVFgAK1RkACtUaAArVGwAK1RwACtUdAArVHwAK1SEACtUiAArVIwAK1SUACtUmAArVoQAK1aMACtWlAArVpwAK1aoACtWrAArVrAAK1a0ACtWuAArVsAAK1bIACtWzAArVtAAK1bYACtW3AArWSgAK1m0ACtaNAArWrQAK1q8ACtaxAArWswAK1rUACta4AArWuQAK1roACta9AArWvgAK1sAACtbBAArWwwAK1sYACtbHAArWyAAK1ssACtbMAArW1QAK1u4ACtb3AArW+QAK1vsACtcEAArXBwAK1woACtcMAArXVQAK13kACtegAArXxAAK18cACtfJAArXywAK180ACtfPAArX0QAK19IACtfVAArX7gAK2A8ACtgRAArYEwAK2BUACtgXAArYGQAK2BsACtgdAArYHwAK2EAACthDAArYRgAK2EkACthMAArYTwAK2FIACthVAArYWAAK2FoACtjVAArY1wAK2NkACtjbAArY3gAK2N8ACtjgAArY4QAK2OIACtjkAArY5gAK2OcACtjoAArY6gAK2OsACtlmAArZaAAK2WoACtlsAArZbwAK2XAACtlxAArZcgAK2XMACtl1AArZdwAK2XgACtl5AArZewAK2XwACtn3AArZ+QAK2fwACtn+AAraAQAK2gIACtoDAAraBAAK2gUACtoHAAraCQAK2goACtoLAAraDQAK2g4ACtonAAraKAAK2ikACtorAArapgAK2qgACtqqAArarAAK2q8ACtqwAArasQAK2rIACtqzAAratQAK2rcACtq4AArauQAK2rsACtq8AArbNwAK2zkACts7AArbPQAK20AACttBAArbQgAK20MACttEAArbRgAK20gACttJAArbSgAK20wACttNAArbyAAK28oACtvMAArbzgAK29EACtvSAArb0wAK29QACtvVAArb1wAK29kACtvaAArb2wAK290ACtveAArcWQAK3FsACtxdAArcXwAK3GIACtxjAArcZAAK3GUACtxmAArcaAAK3GoACtxrAArcbAAK3G4ACtxvAArc6gAK3OwACtzuAArc8AAK3PMACtz0AArc9QAK3PYACtz3AArc+QAK3PsACtz8AArc/QAK3P8ACt0AAArdSQAK3W0ACt2UAArduAAK3bsACt29AArdvwAK3cEACt3DAArdxQAK3cYACt3JAArd4gAK3f8ACt4BAAreAwAK3gUACt4HAAreCQAK3gsACt4NAAreKgAK3i0ACt4wAAreMwAK3jYACt45AArePAAK3j8ACt5BAArevAAK3r4ACt7AAArewgAK3sUACt7GAArexwAK3sgACt7JAAreywAK3s0ACt7OAArezwAK3tEACt7SAArfTQAK308ACt9RAArfUwAK31YACt9XAArfWAAK31kACt9aAArfXAAK314ACt9fAArfYAAK32IACt9jAArf3gAK3+AACt/iAArf5AAK3+cACt/oAArf6QAK3+oACt/rAArf7QAK3+8ACt/wAArf8QAK3/MACt/0AArgbwAK4HEACuB0AArgdgAK4HkACuB6AArgewAK4HwACuB9AArgfwAK4IEACuCCAArggwAK4IUACuCGAArhAQAK4QMACuEFAArhBwAK4QoACuELAArhDAAK4Q0ACuEOAArhEAAK4RIACuETAArhFAAK4RYACuEXAArhkgAK4ZQACuGWAArhmAAK4ZsACuGcAArhnQAK4Z4ACuGfAArhoQAK4aMACuGkAArhpQAK4acACuGoAAriIwAK4iUACuInAAriKQAK4iwACuItAAriLgAK4i8ACuIwAAriMgAK4jQACuI1AAriNgAK4jgACuI5AArizAAK4u8ACuMPAArjLwAK4zEACuMzAArjNQAK4zcACuM6AArjOwAK4zwACuM/AArjQAAK40IACuNDAArjRQAK40gACuNJAArjSgAK400ACuNOAArjUwAK42wACuN1AArjdwAK43kACuOCAArjhQAK44gACuOKAArj0wAK4/cACuQeAArkQgAK5EUACuRHAArkSQAK5EsACuRNAArkTwAK5FAACuRTAArkbAAK5I0ACuSPAArkkQAK5JMACuSVAArklwAK5JkACuSbAArknQAK5L4ACuTBAArkxAAK5McACuTKAArkzQAK5NAACuTTAArk1gAK5NgACuVTAArlVQAK5VcACuVZAArlXAAK5V0ACuVeAArlXwAK5WAACuViAArlZAAK5WUACuVmAArlaAAK5WkACuXkAArl5gAK5egACuXqAArl7QAK5e4ACuXvAArl8AAK5fEACuXzAArl9QAK5fYACuX3AArl+QAK5foACuZ1AArmdwAK5noACuZ8AArmfwAK5oAACuaBAArmggAK5oMACuaFAArmhwAK5ogACuaJAArmiwAK5owACualAArmpgAK5qcACuapAArnJAAK5yYACucoAArnKgAK5y0ACucuAArnLwAK5zAACucxAArnMwAK5zUACuc2AArnNwAK5zkACuc6AArntQAK57cACue5AArnuwAK574ACue/AArnwAAK58EACufCAArnxAAK58YACufHAArnyAAK58oACufLAAroRgAK6EgACuhKAAroTAAK6E8ACuhQAAroUQAK6FIACuhTAAroVQAK6FcACuhYAAroWQAK6FsACuhcAAro1wAK6NkACujbAAro3QAK6OAACujhAAro4gAK6OMACujkAAro5gAK6OgACujpAAro6gAK6OwACujtAArpaAAK6WoACulsAArpbgAK6XEACulyAArpcwAK6XQACul1AArpdwAK6XkACul6AArpewAK6X0ACul+AArpxwAK6esACuoSAArqNgAK6jkACuo7AArqPQAK6j8ACupBAArqQwAK6kQACupHAArqYAAK6n0ACup/AArqgQAK6oMACuqFAArqhwAK6okACuqLAArqqAAK6qsACuquAArqsQAK6rQACuq3AArqugAK6r0ACuq/AArrOgAK6zwACus+AArrQAAK60MACutEAArrRQAK60YACutHAArrSQAK60sACutMAArrTQAK608ACutQAArrywAK680ACuvPAArr0QAK69QACuvVAArr1gAK69cACuvYAArr2gAK69wACuvdAArr3gAK6+AACuvhAArsXAAK7F4ACuxgAArsYgAK7GUACuxmAArsZwAK7GgACuxpAArsawAK7G0ACuxuAArsbwAK7HEACuxyAArs7QAK7O8ACuzyAArs9AAK7PcACuz4AArs+QAK7PoACuz7AArs/QAK7P8ACu0AAArtAQAK7QMACu0EAArtfwAK7YEACu2DAArthQAK7YgACu2JAArtigAK7YsACu2MAArtjgAK7ZAACu2RAArtkgAK7ZQACu2VAAruEAAK7hIACu4UAAruFgAK7hkACu4aAAruGwAK7hwACu4dAAruHwAK7iEACu4iAAruIwAK7iUACu4mAAruoQAK7qMACu6lAArupwAK7qoACu6rAArurAAK7q0ACu6uAArusAAK7rIACu6zAArutAAK7rYACu63AAruyAAK7skACu7LAAru3AAK7uUACu7oAAru6wAK7u0ACu8mAArvKQAK7ysACu8uAArvMQAK7zQACu83AArvugAK794ACvACAArwJQAK8EwACvBsAArwkwAK8LoACvDaAArw/gAK8SIACvEkAArxJwAK8SkACvErAArxLQAK8TAACvEzAArxNQAK8TcACvE6AArxPAAK8T4ACvFBAArxRAAK8UUACvFKAArxYwAK8WgACvFqAArxbwAK8XIACvF0AArxvQAK8eEACvIIAAryLAAK8i8ACvIxAAryMwAK8jUACvI3AAryOQAK8joACvI9AAryVgAK8nsACvJ9AAryfwAK8oEACvKDAAryhQAK8ocACvKJAAryiwAK8o0ACvKyAArytQAK8rgACvK7AAryvgAK8sEACvLEAAryxwAK8soACvLNAAryzwAK80oACvNMAArzTwAK81EACvNUAArzVQAK81YACvNXAArzWAAK81oACvNcAArzXQAK814ACvNgAArzYQAK83IACvNzAArzdQAK8/AACvPyAArz9AAK8/YACvP5AArz+gAK8/sACvP8AArz/QAK8/8ACvQBAAr0AgAK9AMACvQFAAr0BgAK9IEACvSDAAr0hgAK9IgACvSLAAr0jAAK9I0ACvSOAAr0jwAK9JEACvSTAAr0lAAK9JUACvSXAAr0mAAK9KkACvSqAAr0rAAK9ScACvUpAAr1KwAK9S0ACvUwAAr1MQAK9TIACvUzAAr1NAAK9TYACvU4AAr1OQAK9ToACvU8AAr1PQAK9bgACvW6AAr1vQAK9b8ACvXCAAr1wwAK9cQACvXFAAr1xgAK9cgACvXKAAr1ywAK9cwACvXOAAr1zwAK9eAACvXhAAr14wAK9l4ACvZgAAr2YgAK9mQACvZnAAr2aAAK9mkACvZqAAr2awAK9m0ACvZvAAr2cAAK9nEACvZzAAr2dAAK9u8ACvbxAAr29AAK9vYACvb5AAr2+gAK9vsACvb8AAr2/QAK9v8ACvcBAAr3AgAK9wMACvcFAAr3BgAK9x8ACvcgAAr3IQAK9yMACveeAAr3oAAK96IACvekAAr3pwAK96gACvepAAr3qgAK96sACvetAAr3rwAK97AACvexAAr3swAK97QACvgvAAr4MQAK+DQACvg2AAr4OQAK+DoACvg7AAr4PAAK+D0ACvg/AAr4QQAK+EIACvhDAAr4RQAK+EYACvhmAAr4fwAK+IQACviHAAr4jAAK+I8ACviRAAr4owAK+TYACvlZAAr5eQAK+ZkACvmbAAr5nQAK+Z8ACvmhAAr5pAAK+aUACvmmAAr5qQAK+aoACvmsAAr5rQAK+bAACvmzAAr5tAAK+bUACvm4AAr5uQAK+b4ACvnXAAr54AAK+eIACvnlAAr57gAK+fEACvn0AAr59gAK+j8ACvpjAAr6igAK+q4ACvqxAAr6swAK+rUACvq3AAr6uQAK+rsACvq8AAr6vwAK+tgACvr5AAr6+wAK+v0ACvr/AAr7AQAK+wMACvsFAAr7BwAK+wkACvsqAAr7LQAK+zAACvszAAr7NgAK+zkACvs8AAr7PwAK+0IACvtEAAr7vwAK+8EACvvDAAr7xQAK+8gACvvJAAr7ygAK+8sACvvMAAr7zgAK+9AACvvRAAr70gAK+9QACvvVAAr8UAAK/FIACvxUAAr8VgAK/FkACvxaAAr8WwAK/FwACvxdAAr8XwAK/GEACvxiAAr8YwAK/GUACvxmAAr84QAK/OMACvzmAAr86AAK/OsACvzsAAr87QAK/O4ACvzvAAr88QAK/PMACvz0AAr89QAK/PcACvz4AAr9EQAK/RIACv0TAAr9FQAK/ZAACv2SAAr9lAAK/ZYACv2ZAAr9mgAK/ZsACv2cAAr9nQAK/Z8ACv2hAAr9ogAK/aMACv2lAAr9pgAK/iEACv4jAAr+JQAK/icACv4qAAr+KwAK/iwACv4tAAr+LgAK/jAACv4yAAr+MwAK/jQACv42AAr+NwAK/rIACv60AAr+tgAK/rgACv67AAr+vAAK/r0ACv6+AAr+vwAK/sEACv7DAAr+xAAK/sUACv7HAAr+yAAK/0MACv9FAAr/RwAK/0kACv9MAAr/TQAK/04ACv9PAAr/UAAK/1IACv9UAAr/VQAK/1YACv9YAAr/WQAK/9QACv/WAAr/2AAK/9oACv/dAAr/3gAK/98ACv/gAAr/4QAK/+MACv/lAAr/5gAK/+cACv/pAAr/6gALADMACwBXAAsAfgALAKIACwClAAsAqAALAKoACwCsAAsArgALALAACwCxAAsAtAALAM0ACwDqAAsA7QALAPAACwDzAAsA9gALAPkACwD8AAsA/wALARwACwEfAAsBIgALASUACwEoAAsBKwALAS4ACwExAAsBMwALAa4ACwGwAAsBswALAbUACwG4AAsBuQALAboACwG7AAsBvAALAb4ACwHBAAsBwgALAcMACwHFAAsBxgALAkEACwJDAAsCRgALAkgACwJLAAsCTAALAk0ACwJOAAsCTwALAlEACwJUAAsCVQALAlYACwJYAAsCWQALAtQACwLWAAsC2QALAtsACwLeAAsC3wALAuAACwLhAAsC4gALAuQACwLnAAsC6AALAukACwLrAAsC7AALA2cACwNpAAsDbAALA24ACwNxAAsDcgALA3MACwN0AAsDdQALA3cACwN6AAsDewALA3wACwN+AAsDfwALA/oACwP8AAsD/gALBAAACwQDAAsEBAALBAUACwQGAAsEBwALBAkACwQMAAsEDQALBA4ACwQQAAsEEQALBIwACwSOAAsEkAALBJIACwSVAAsElgALBJcACwSYAAsEmQALBJsACwSeAAsEnwALBKAACwSiAAsEowALBR4ACwUgAAsFIwALBSUACwUoAAsFKQALBSoACwUrAAsFLAALBS4ACwUxAAsFMgALBTMACwU1AAsFNgALBckACwXsAAsGDAALBiwACwYuAAsGMAALBjIACwY0AAsGNwALBjgACwY5AAsGPAALBj0ACwY/AAsGQAALBkMACwZGAAsGRwALBkgACwZLAAsGTAALBlEACwZqAAsGcwALBnUACwZ4AAsGgQALBoQACwaHAAsGiQALBtIACwb2AAsHHQALB0EACwdEAAsHRgALB0gACwdKAAsHTAALB04ACwdPAAsHUgALB2sACweMAAsHjgALB5AACweSAAsHlAALB5YACweYAAsHmgALB5wACwe9AAsHwAALB8MACwfGAAsHyQALB8wACwfPAAsH0gALB9UACwfXAAsIUgALCFQACwhWAAsIWAALCFsACwhcAAsIXQALCF4ACwhfAAsIYQALCGMACwhkAAsIZQALCGcACwhoAAsI4wALCOUACwjnAAsI6QALCOwACwjtAAsI7gALCO8ACwjwAAsI8gALCPQACwj1AAsI9gALCPgACwj5AAsJdAALCXYACwl5AAsJewALCX4ACwl/AAsJgAALCYEACwmCAAsJhAALCYYACwmHAAsJiAALCYoACwmLAAsJpAALCaUACwmmAAsJqAALCiMACwolAAsKJwALCikACwosAAsKLQALCi4ACwovAAsKMAALCjIACwo0AAsKNQALCjYACwo4AAsKOQALCrQACwq2AAsKuAALCroACwq9AAsKvgALCr8ACwrAAAsKwQALCsMACwrFAAsKxgALCscACwrJAAsKygALC0UACwtHAAsLSQALC0sACwtOAAsLTwALC1AACwtRAAsLUgALC1QACwtWAAsLVwALC1gACwtaAAsLWwALC9YACwvYAAsL2gALC9wACwvfAAsL4AALC+EACwviAAsL4wALC+UACwvnAAsL6AALC+kACwvrAAsL7AALDGcACwxpAAsMawALDG0ACwxwAAsMcQALDHIACwxzAAsMdAALDHYACwx4AAsMeQALDHoACwx8AAsMfQALDMYACwzqAAsNEQALDTUACw04AAsNOwALDT0ACw0/AAsNQQALDUMACw1EAAsNRwALDWAACw19AAsNgAALDYMACw2GAAsNiQALDYwACw2PAAsNkgALDa8ACw2yAAsNtQALDbgACw27AAsNvgALDcEACw3EAAsNxgALDkEACw5DAAsORgALDkgACw5LAAsOTAALDk0ACw5OAAsOTwALDlEACw5UAAsOVQALDlYACw5YAAsOWQALDtQACw7WAAsO2QALDtsACw7eAAsO3wALDuAACw7hAAsO4gALDuQACw7nAAsO6AALDukACw7rAAsO7AALD2cACw9pAAsPbAALD24ACw9xAAsPcgALD3MACw90AAsPdQALD3cACw96AAsPewALD3wACw9+AAsPfwALD/oACw/8AAsP/wALEAEACxAEAAsQBQALEAYACxAHAAsQCAALEAoACxANAAsQDgALEA8ACxARAAsQEgALEI0ACxCPAAsQkQALEJMACxCWAAsQlwALEJgACxCZAAsQmgALEJwACxCfAAsQoAALEKEACxCjAAsQpAALER8ACxEhAAsRIwALESUACxEoAAsRKQALESoACxErAAsRLAALES4ACxExAAsRMgALETMACxE1AAsRNgALEbEACxGzAAsRtgALEbgACxG7AAsRvAALEb0ACxG+AAsRvwALEcEACxHEAAsRxQALEcYACxHIAAsRyQALEdoACxHfAAsR4gALEeQACxHpAAsSZAALEmYACxJoAAsSagALEm0ACxJuAAsSbwALEnAACxJxAAsScwALEnYACxJ3AAsSeAALEnoACxJ7AAsS9gALEvgACxL6AAsS/AALEv8ACxMAAAsTAQALEwIACxMDAAsTBQALEwgACxMJAAsTCgALEwwACxMNAAsTiAALE4oACxONAAsTjwALE5IACxOTAAsTlAALE5UACxOWAAsTmAALE5sACxOcAAsTnQALE58ACxOgAAsUMwALFFYACxR2AAsUlgALFJgACxSaAAsUnAALFJ4ACxShAAsUogALFKMACxSmAAsUpwALFKkACxSqAAsUrQALFLAACxSxAAsUsgALFLUACxS2AAsUuwALFNQACxTdAAsU3wALFOIACxTrAAsU7gALFPEACxTzAAsVPAALFWAACxWHAAsVqwALFa4ACxWwAAsVsgALFbQACxW2AAsVuAALFbkACxW8AAsV1QALFfYACxX4AAsV+gALFfwACxX+AAsWAAALFgIACxYEAAsWBgALFicACxYqAAsWLQALFjAACxYzAAsWNgALFjkACxY8AAsWPwALFkEACxa8AAsWvgALFsAACxbCAAsWxQALFsYACxbHAAsWyAALFskACxbLAAsWzQALFs4ACxbPAAsW0QALFtIACxdNAAsXTwALF1EACxdTAAsXVgALF1cACxdYAAsXWQALF1oACxdcAAsXXgALF18ACxdgAAsXYgALF2MACxfeAAsX4AALF+MACxflAAsX6AALF+kACxfqAAsX6wALF+wACxfuAAsX8AALF/EACxfyAAsX9AALF/UACxgOAAsYDwALGBAACxgSAAsYjQALGI8ACxiRAAsYkwALGJYACxiXAAsYmAALGJkACxiaAAsYnAALGJ4ACxifAAsYoAALGKIACxijAAsZHgALGSAACxkiAAsZJAALGScACxkoAAsZKQALGSoACxkrAAsZLQALGS8ACxkwAAsZMQALGTMACxk0AAsZrwALGbEACxmzAAsZtQALGbgACxm5AAsZugALGbsACxm8AAsZvgALGcAACxnBAAsZwgALGcQACxnFAAsaQAALGkIACxpEAAsaRgALGkkACxpKAAsaSwALGkwACxpNAAsaTwALGlEACxpSAAsaUwALGlUACxpWAAsa0QALGtMACxrVAAsa1wALGtoACxrbAAsa3AALGt0ACxreAAsa4AALGuIACxrjAAsa5AALGuYACxrnAAsbMAALG1QACxt7AAsbnwALG6IACxulAAsbpwALG6kACxurAAsbrQALG64ACxuxAAsbygALG+cACxvqAAsb7QALG/AACxvzAAsb9gALG/kACxv8AAscGQALHBwACxwfAAscIgALHCUACxwoAAscKwALHC4ACxwwAAscqwALHK0ACxywAAscsgALHLUACxy2AAsctwALHLgACxy5AAscuwALHL4ACxy/AAscwAALHMIACxzDAAsdPgALHUAACx1DAAsdRQALHUgACx1JAAsdSgALHUsACx1MAAsdTgALHVEACx1SAAsdUwALHVUACx1WAAsd0QALHdMACx3WAAsd2AALHdsACx3cAAsd3QALHd4ACx3fAAsd4QALHeQACx3lAAsd5gALHegACx3pAAseZAALHmYACx5pAAseawALHm4ACx5vAAsecAALHnEACx5yAAsedAALHncACx54AAseeQALHnsACx58AAse/wALHyMACx9HAAsfagALH5EACx+xAAsf2AALH/8ACyAfAAsgQwALIGcACyBpAAsgbAALIG4ACyBwAAsgcgALIHUACyB4AAsgegALIHwACyB/AAsggQALIIMACyCGAAsgiQALIIoACyCPAAsgqAALIK0ACyCvAAsgtAALILcACyC5AAshAgALISYACyFNAAshcQALIXQACyF2AAsheAALIXoACyF8AAshfgALIX8ACyGCAAshmwALIcAACyHCAAshxAALIcYACyHIAAshygALIcwACyHOAAsh0AALIdIACyH3AAsh+gALIf0ACyIAAAsiAwALIgYACyIJAAsiDAALIg8ACyISAAsiFAALIo8ACyKRAAsilAALIpYACyKZAAsimgALIpsACyKcAAsinQALIp8ACyKhAAsiogALIqMACyKlAAsipgALIrcACyK4AAsiugALIzUACyM3AAsjOQALIzsACyM+AAsjPwALI0AACyNBAAsjQgALI0QACyNGAAsjRwALI0gACyNKAAsjSwALI8YACyPIAAsjywALI80ACyPQAAsj0QALI9IACyPTAAsj1AALI9YACyPYAAsj2QALI9oACyPcAAsj3QALI+4ACyPvAAsj8QALJGwACyRuAAskcAALJHIACyR1AAskdgALJHcACyR4AAskeQALJHsACyR9AAskfgALJH8ACySBAAskggALJP0ACyT/AAslAgALJQQACyUHAAslCAALJQkACyUKAAslCwALJQ0ACyUPAAslEAALJREACyUTAAslFAALJSUACyUmAAslKAALJaMACyWlAAslpwALJakACyWsAAslrQALJa4ACyWvAAslsAALJbIACyW0AAsltQALJbYACyW4AAsluQALJjQACyY2AAsmOQALJjsACyY+AAsmPwALJkAACyZBAAsmQgALJkQACyZGAAsmRwALJkgACyZKAAsmSwALJmQACyZlAAsmZgALJmgACybjAAsm5QALJucACybpAAsm7AALJu0ACybuAAsm7wALJvAACybyAAsm9AALJvUACyb2AAsm+AALJvkACyd0AAsndgALJ3kACyd7AAsnfgALJ38ACyeAAAsngQALJ4IACyeEAAsnhgALJ4cACyeIAAsnigALJ4sACyeiAAsnuwALJ9gACyfbAAsn3gALJ+EACyfkAAsn5wALJ+oACyftAAsoCgALKA0ACygQAAsoEwALKBYACygZAAsoHAALKB8ACyghAAsoLgALKEgACyhQAAsoXwALKIUACyiqAAspPQALKWAACymAAAspoAALKaIACymkAAsppgALKagACymrAAsprAALKa0ACymwAAspsQALKbMACym0AAsptgALKbkACym6AAspuwALKb4ACym/AAspxAALKd0ACynmAAsp6AALKeoACynzAAsp9gALKfkACyn7AAsqRAALKmgACyqPAAsqswALKrYACyq4AAsqugALKrwACyq+AAsqwAALKsEACyrEAAsq3QALKv4ACysAAAsrAgALKwQACysGAAsrCAALKwoACysMAAsrDgALKy8ACysyAAsrNQALKzgACys7AAsrPgALK0EACytEAAsrRwALK0kACyvEAAsrxgALK8gACyvKAAsrzQALK84ACyvPAAsr0AALK9EACyvTAAsr1QALK9YACyvXAAsr2QALK9oACyxVAAssVwALLFkACyxbAAssXgALLF8ACyxgAAssYQALLGIACyxkAAssZgALLGcACyxoAAssagALLGsACyzmAAss6AALLOsACyztAAss8AALLPEACyzyAAss8wALLPQACyz2AAss+AALLPkACyz6AAss/AALLP0ACy0WAAstFwALLRgACy0aAAstlQALLZcACy2ZAAstmwALLZ4ACy2fAAstoAALLaEACy2iAAstpAALLaYACy2nAAstqAALLaoACy2rAAsuJgALLigACy4qAAsuLAALLi8ACy4wAAsuMQALLjIACy4zAAsuNQALLjcACy44AAsuOQALLjsACy48AAsutwALLrkACy67AAsuvQALLsAACy7BAAsuwgALLsMACy7EAAsuxgALLsgACy7JAAsuygALLswACy7NAAsvSAALL0oACy9MAAsvTgALL1EACy9SAAsvUwALL1QACy9VAAsvVwALL1kACy9aAAsvWwALL10ACy9eAAsv2QALL9sACy/dAAsv3wALL+IACy/jAAsv5AALL+UACy/mAAsv6AALL+oACy/rAAsv7AALL+4ACy/vAAswOAALMFwACzCDAAswpwALMKoACzCsAAswrgALMLAACzCyAAswtAALMLUACzC4AAsw0QALMO4ACzDwAAsw8gALMPQACzD2AAsw+AALMPoACzD8AAsxGQALMRwACzEfAAsxIgALMSUACzEoAAsxKwALMS4ACzEwAAsxqwALMa0ACzGvAAsxsQALMbQACzG1AAsxtgALMbcACzG4AAsxugALMbwACzG9AAsxvgALMcAACzHBAAsyPAALMj4ACzJAAAsyQgALMkUACzJGAAsyRwALMkgACzJJAAsySwALMk0ACzJOAAsyTwALMlEACzJSAAsyzQALMs8ACzLRAAsy0wALMtYACzLXAAsy2AALMtkACzLaAAsy3AALMt4ACzLfAAsy4AALMuIACzLjAAszXgALM2AACzNiAAszZAALM2cACzNoAAszaQALM2oACzNrAAszbQALM28ACzNwAAszcQALM3MACzN0AAsz7wALM/EACzPzAAsz9QALM/gACzP5AAsz+gALM/sACzP8AAsz/gALNAAACzQBAAs0AgALNAQACzQFAAs0gAALNIIACzSEAAs0hgALNIkACzSKAAs0iwALNIwACzSNAAs0jwALNJEACzSSAAs0kwALNJUACzSWAAs1EQALNRMACzUVAAs1FwALNRoACzUbAAs1HAALNR0ACzUeAAs1IAALNSIACzUjAAs1JAALNSYACzUnAAs1ugALNd0ACzX9AAs2HQALNh8ACzYhAAs2IwALNiUACzYoAAs2KQALNioACzYtAAs2LgALNjAACzYxAAs2MwALNjYACzY3AAs2OAALNjsACzY8AAs2RQALNl4ACzZnAAs2aQALNmsACzZ0AAs2dwALNnoACzZ8AAs2xQALNukACzcQAAs3NAALNzcACzc5AAs3OwALNz0ACzc/AAs3QQALN0IACzdFAAs3XgALN38ACzeBAAs3gwALN4UACzeHAAs3iQALN4sACzeNAAs3jwALN7AACzezAAs3tgALN7kACze8AAs3vwALN8IACzfFAAs3yAALN8oACzhFAAs4RwALOEkACzhLAAs4TgALOE8ACzhQAAs4UQALOFIACzhUAAs4VgALOFcACzhYAAs4WgALOFsACzjWAAs42AALONoACzjcAAs43wALOOAACzjhAAs44gALOOMACzjlAAs45wALOOgACzjpAAs46wALOOwACzlnAAs5aQALOWwACzluAAs5cQALOXIACzlzAAs5dAALOXUACzl3AAs5eQALOXoACzl7AAs5fQALOX4ACzmXAAs5mAALOZkACzmbAAs6FgALOhgACzoaAAs6HAALOh8ACzogAAs6IQALOiIACzojAAs6JQALOicACzooAAs6KQALOisACzosAAs6pwALOqkACzqrAAs6rQALOrAACzqxAAs6sgALOrMACzq0AAs6tgALOrgACzq5AAs6ugALOrwACzq9AAs7OAALOzoACzs8AAs7PgALO0EACztCAAs7QwALO0QACztFAAs7RwALO0kACztKAAs7SwALO00ACztOAAs7yQALO8sACzvNAAs7zwALO9IACzvTAAs71AALO9UACzvWAAs72AALO9oACzvbAAs73AALO94ACzvfAAs8WgALPFwACzxeAAs8YAALPGMACzxkAAs8ZQALPGYACzxnAAs8aQALPGsACzxsAAs8bQALPG8ACzxwAAs8uQALPN0ACz0EAAs9KAALPSsACz0tAAs9LwALPTEACz0zAAs9NQALPTYACz05AAs9UgALPW8ACz1xAAs9cwALPXUACz13AAs9eQALPXsACz19AAs9mgALPZ0ACz2gAAs9owALPaYACz2pAAs9rAALPa8ACz2xAAs+LAALPi4ACz4wAAs+MgALPjUACz42AAs+NwALPjgACz45AAs+OwALPj0ACz4+AAs+PwALPkEACz5CAAs+vQALPr8ACz7BAAs+wwALPsYACz7HAAs+yAALPskACz7KAAs+zAALPs4ACz7PAAs+0AALPtIACz7TAAs/TgALP1AACz9SAAs/VAALP1cACz9YAAs/WQALP1oACz9bAAs/XQALP18ACz9gAAs/YQALP2MACz9kAAs/3wALP+EACz/kAAs/5gALP+kACz/qAAs/6wALP+wACz/tAAs/7wALP/EACz/yAAs/8wALP/UACz/2AAtAcQALQHMAC0B1AAtAdwALQHoAC0B7AAtAfAALQH0AC0B+AAtAgAALQIIAC0CDAAtAhAALQIYAC0CHAAtBAgALQQQAC0EGAAtBCAALQQsAC0EMAAtBDQALQQ4AC0EPAAtBEQALQRMAC0EUAAtBFQALQRcAC0EYAAtBkwALQZUAC0GXAAtBmQALQZwAC0GdAAtBngALQZ8AC0GgAAtBogALQaQAC0GlAAtBpgALQagAC0GpAAtCPAALQl8AC0J/AAtCnwALQqEAC0KjAAtCpQALQqcAC0KqAAtCqwALQqwAC0KvAAtCsAALQrIAC0KzAAtCtgALQrkAC0K6AAtCuwALQr4AC0K/AAtCxAALQt0AC0LmAAtC6AALQusAC0L0AAtC9wALQvoAC0L8AAtDRQALQ2kAC0OQAAtDtAALQ7cAC0O5AAtDuwALQ70AC0O/AAtDwQALQ8IAC0PFAAtD3gALQ/8AC0QBAAtEAwALRAUAC0QHAAtECQALRAsAC0QNAAtEDwALRDAAC0QzAAtENgALRDkAC0Q8AAtEPwALREIAC0RFAAtESAALREoAC0TFAAtExwALRMkAC0TLAAtEzgALRM8AC0TQAAtE0QALRNIAC0TUAAtE1gALRNcAC0TYAAtE2gALRNsAC0VWAAtFWAALRVoAC0VcAAtFXwALRWAAC0VhAAtFYgALRWMAC0VlAAtFZwALRWgAC0VpAAtFawALRWwAC0XnAAtF6QALRewAC0XuAAtF8QALRfIAC0XzAAtF9AALRfUAC0X3AAtF+QALRfoAC0X7AAtF/QALRf4AC0YXAAtGGAALRhkAC0YbAAtGlgALRpgAC0aaAAtGnAALRp8AC0agAAtGoQALRqIAC0ajAAtGpQALRqcAC0aoAAtGqQALRqsAC0asAAtHJwALRykAC0crAAtHLQALRzAAC0cxAAtHMgALRzMAC0c0AAtHNgALRzgAC0c5AAtHOgALRzwAC0c9AAtHuAALR7oAC0e8AAtHvgALR8EAC0fCAAtHwwALR8QAC0fFAAtHxwALR8kAC0fKAAtHywALR80AC0fOAAtISQALSEsAC0hNAAtITwALSFIAC0hTAAtIVAALSFUAC0hWAAtIWAALSFoAC0hbAAtIXAALSF4AC0hfAAtI2gALSNwAC0jeAAtI4AALSOMAC0jkAAtI5QALSOYAC0jnAAtI6QALSOsAC0jsAAtI7QALSO8AC0jwAAtJOQALSV0AC0mEAAtJqAALSasAC0muAAtJsAALSbIAC0m0AAtJtgALSbcAC0m6AAtJ0wALSfAAC0nzAAtJ9gALSfkAC0n8AAtJ/wALSgIAC0oFAAtKIgALSiUAC0ooAAtKKwALSi4AC0oxAAtKNAALSjcAC0o5AAtKtAALSrYAC0q5AAtKuwALSr4AC0q/AAtKwAALSsEAC0rCAAtKxAALSscAC0rIAAtKyQALSssAC0rMAAtLRwALS0kAC0tMAAtLTgALS1EAC0tSAAtLUwALS1QAC0tVAAtLVwALS1oAC0tbAAtLXAALS14AC0tfAAtL2gALS9wAC0vfAAtL4QALS+QAC0vlAAtL5gALS+cAC0voAAtL6gALS+0AC0vuAAtL7wALS/EAC0vyAAtMbQALTG8AC0xyAAtMdAALTHcAC0x4AAtMeQALTHoAC0x7AAtMfQALTIAAC0yBAAtMggALTIQAC0yFAAtNAAALTQIAC00EAAtNBgALTQkAC00KAAtNCwALTQwAC00NAAtNDwALTRIAC00TAAtNFAALTRYAC00XAAtNkgALTZQAC02WAAtNmAALTZsAC02cAAtNnQALTZ4AC02fAAtNoQALTaQAC02lAAtNpgALTagAC02pAAtOJAALTiYAC04pAAtOKwALTi4AC04vAAtOMAALTjEAC04yAAtONAALTjcAC044AAtOOQALTjsAC048AAtOzwALTvIAC08SAAtPMgALTzQAC082AAtPOAALTzoAC089AAtPPgALTz8AC09CAAtPQwALT0UAC09GAAtPSAALT0sAC09MAAtPTQALT1AAC09RAAtPVgALT28AC094AAtPegALT3wAC0+FAAtPiAALT4sAC0+NAAtP1gALT/oAC1AhAAtQRQALUEgAC1BKAAtQTAALUE4AC1BQAAtQUgALUFMAC1BWAAtQbwALUJAAC1CSAAtQlAALUJYAC1CYAAtQmgALUJwAC1CeAAtQoAALUMEAC1DEAAtQxwALUMoAC1DNAAtQ0AALUNMAC1DWAAtQ2QALUNsAC1FWAAtRWAALUVoAC1FcAAtRXwALUWAAC1FhAAtRYgALUWMAC1FlAAtRZwALUWgAC1FpAAtRawALUWwAC1HnAAtR6QALUesAC1HtAAtR8AALUfEAC1HyAAtR8wALUfQAC1H2AAtR+AALUfkAC1H6AAtR/AALUf0AC1J4AAtSegALUn0AC1J/AAtSggALUoMAC1KEAAtShQALUoYAC1KIAAtSigALUosAC1KMAAtSjgALUo8AC1KoAAtSqQALUqoAC1KsAAtTJwALUykAC1MrAAtTLQALUzAAC1MxAAtTMgALUzMAC1M0AAtTNgALUzgAC1M5AAtTOgALUzwAC1M9AAtTuAALU7oAC1O8AAtTvgALU8EAC1PCAAtTwwALU8QAC1PFAAtTxwALU8kAC1PKAAtTywALU80AC1POAAtUSQALVEsAC1RNAAtUTwALVFIAC1RTAAtUVAALVFUAC1RWAAtUWAALVFoAC1RbAAtUXAALVF4AC1RfAAtU2gALVNwAC1TeAAtU4AALVOMAC1TkAAtU5QALVOYAC1TnAAtU6QALVOsAC1TsAAtU7QALVO8AC1TwAAtVawALVW0AC1VvAAtVcQALVXQAC1V1AAtVdgALVXcAC1V4AAtVegALVXwAC1V9AAtVfgALVYAAC1WBAAtVygALVe4AC1YVAAtWOQALVjwAC1Y+AAtWQAALVkIAC1ZEAAtWRgALVkcAC1ZKAAtWYwALVoAAC1aCAAtWhAALVoYAC1aIAAtWigALVowAC1aOAAtWqwALVq4AC1axAAtWtAALVrcAC1a6AAtWvQALVsAAC1bCAAtXPQALVz8AC1dBAAtXQwALV0YAC1dHAAtXSAALV0kAC1dKAAtXTAALV04AC1dPAAtXUAALV1IAC1dTAAtXzgALV9AAC1fSAAtX1AALV9cAC1fYAAtX2QALV9oAC1fbAAtX3QALV98AC1fgAAtX4QALV+MAC1fkAAtYXwALWGEAC1hjAAtYZQALWGgAC1hpAAtYagALWGsAC1hsAAtYbgALWHAAC1hxAAtYcgALWHQAC1h1AAtY8AALWPIAC1j1AAtY9wALWPoAC1j7AAtY/AALWP0AC1j+AAtZAAALWQIAC1kDAAtZBAALWQYAC1kHAAtZggALWYQAC1mGAAtZiAALWYsAC1mMAAtZjQALWY4AC1mPAAtZkQALWZMAC1mUAAtZlQALWZcAC1mYAAtaEwALWhUAC1oXAAtaGQALWhwAC1odAAtaHgALWh8AC1ogAAtaIgALWiQAC1olAAtaJgALWigAC1opAAtapAALWqYAC1qoAAtaqgALWq0AC1quAAtarwALWrAAC1qxAAtaswALWrUAC1q2AAtatwALWrkAC1q6AAtbTQALW3AAC1uQAAtbsAALW7IAC1u0AAtbtgALW7gAC1u7AAtbvAALW70AC1vAAAtbwQALW8MAC1vEAAtbxgALW8kAC1vKAAtbywALW84AC1vPAAtb1AALW+0AC1v2AAtb+AALW/oAC1wDAAtcBgALXAkAC1wLAAtcVAALXHgAC1yfAAtcwwALXMYAC1zIAAtcygALXMwAC1zOAAtc0AALXNEAC1zUAAtc7QALXQ4AC10QAAtdEgALXRQAC10WAAtdGAALXRoAC10cAAtdHgALXT8AC11CAAtdRQALXUgAC11LAAtdTgALXVEAC11UAAtdVwALXVkAC13UAAtd1gALXdgAC13aAAtd3QALXd4AC13fAAtd4AALXeEAC13jAAtd5QALXeYAC13nAAtd6QALXeoAC15lAAteZwALXmkAC15rAAtebgALXm8AC15wAAtecQALXnIAC150AAtedgALXncAC154AAteegALXnsAC172AAte+AALXvsAC179AAtfAAALXwEAC18CAAtfAwALXwQAC18GAAtfCAALXwkAC18KAAtfDAALXw0AC18mAAtfJwALXygAC18qAAtfpQALX6cAC1+pAAtfqwALX64AC1+vAAtfsAALX7EAC1+yAAtftAALX7YAC1+3AAtfuAALX7oAC1+7AAtgNgALYDgAC2A6AAtgPAALYD8AC2BAAAtgQQALYEIAC2BDAAtgRQALYEcAC2BIAAtgSQALYEsAC2BMAAtgxwALYMkAC2DLAAtgzQALYNAAC2DRAAtg0gALYNMAC2DUAAtg1gALYNgAC2DZAAtg2gALYNwAC2DdAAthWAALYVoAC2FcAAthXgALYWEAC2FiAAthYwALYWQAC2FlAAthZwALYWkAC2FqAAthawALYW0AC2FuAAth6QALYesAC2HtAAth7wALYfIAC2HzAAth9AALYfUAC2H2AAth+AALYfoAC2H7AAth/AALYf4AC2H/AAtiSAALYmwAC2KTAAtitwALYroAC2K8AAtivgALYsAAC2LCAAtixAALYsUAC2LIAAti4QALYv4AC2MAAAtjAgALYwQAC2MGAAtjCAALYwoAC2MMAAtjKQALYywAC2MvAAtjMgALYzUAC2M4AAtjOwALYz4AC2NAAAtjuwALY70AC2O/AAtjwQALY8QAC2PFAAtjxgALY8cAC2PIAAtjygALY8wAC2PNAAtjzgALY9AAC2PRAAtkTAALZE4AC2RQAAtkUgALZFUAC2RWAAtkVwALZFgAC2RZAAtkWwALZF0AC2ReAAtkXwALZGEAC2RiAAtk3QALZN8AC2ThAAtk4wALZOYAC2TnAAtk6AALZOkAC2TqAAtk7AALZO4AC2TvAAtk8AALZPIAC2TzAAtlbgALZXAAC2VyAAtldAALZXcAC2V4AAtleQALZXoAC2V7AAtlfQALZX8AC2WAAAtlgQALZYMAC2WEAAtl/wALZgEAC2YDAAtmBQALZggAC2YJAAtmCgALZgsAC2YMAAtmDgALZhAAC2YRAAtmEgALZhQAC2YVAAtmkAALZpIAC2aUAAtmlgALZpkAC2aaAAtmmwALZpwAC2adAAtmnwALZqEAC2aiAAtmowALZqUAC2amAAtnIQALZyMAC2clAAtnJwALZyoAC2crAAtnLAALZy0AC2cuAAtnMAALZzIAC2czAAtnNAALZzYAC2c3AAtnygALZ+0AC2gNAAtoLQALaC8AC2gxAAtoMwALaDUAC2g4AAtoOQALaDoAC2g9AAtoPgALaEAAC2hBAAtoQwALaEYAC2hHAAtoSAALaEsAC2hMAAtoVQALaG4AC2h3AAtoeQALaHsAC2iEAAtohwALaIoAC2iMAAto1QALaPkAC2kgAAtpRAALaUcAC2lJAAtpSwALaU0AC2lPAAtpUQALaVIAC2lVAAtpbgALaY8AC2mRAAtpkwALaZUAC2mXAAtpmQALaZsAC2mdAAtpnwALacAAC2nDAAtpxgALackAC2nMAAtpzwALadIAC2nVAAtp2AALadoAC2pVAAtqVwALalkAC2pbAAtqXgALal8AC2pgAAtqYQALamIAC2pkAAtqZgALamcAC2poAAtqagALamsAC2rmAAtq6AALauoAC2rsAAtq7wALavAAC2rxAAtq8gALavMAC2r1AAtq9wALavgAC2r5AAtq+wALavwAC2t3AAtreQALa3wAC2t+AAtrgQALa4IAC2uDAAtrhAALa4UAC2uHAAtriQALa4oAC2uLAAtrjQALa44AC2unAAtrqAALa6kAC2urAAtsJgALbCgAC2wqAAtsLAALbC8AC2wwAAtsMQALbDIAC2wzAAtsNQALbDcAC2w4AAtsOQALbDsAC2w8AAtstwALbLkAC2y7AAtsvQALbMAAC2zBAAtswgALbMMAC2zEAAtsxgALbMgAC2zJAAtsygALbMwAC2zNAAttSAALbUoAC21MAAttTgALbVEAC21SAAttUwALbVQAC21VAAttVwALbVkAC21aAAttWwALbV0AC21eAAtt2QALbdsAC23dAAtt3wALbeIAC23jAAtt5AALbeUAC23mAAtt6AALbeoAC23rAAtt7AALbe4AC23vAAtuagALbmwAC25uAAtucAALbnMAC250AAtudQALbnYAC253AAtueQALbnsAC258AAtufQALbn8AC26AAAtuyQALbu0AC28UAAtvOAALbzsAC289AAtvPwALb0EAC29DAAtvRQALb0YAC29JAAtvYgALb38AC2+BAAtvgwALb4UAC2+HAAtviQALb4sAC2+NAAtvqgALb60AC2+wAAtvswALb7YAC2+5AAtvvAALb78AC2/BAAtwPAALcD4AC3BAAAtwQgALcEUAC3BGAAtwRwALcEgAC3BJAAtwSwALcE0AC3BOAAtwTwALcFEAC3BSAAtwzQALcM8AC3DRAAtw0wALcNYAC3DXAAtw2AALcNkAC3DaAAtw3AALcN4AC3DfAAtw4AALcOIAC3DjAAtxXgALcWAAC3FiAAtxZAALcWcAC3FoAAtxaQALcWoAC3FrAAtxbQALcW8AC3FwAAtxcQALcXMAC3F0AAtx7wALcfEAC3H0AAtx9gALcfkAC3H6AAtx+wALcfwAC3H9AAtx/wALcgEAC3ICAAtyAwALcgUAC3IGAAtygQALcoMAC3KFAAtyhwALcooAC3KLAAtyjAALco0AC3KOAAtykAALcpIAC3KTAAtylAALcpYAC3KXAAtzEgALcxQAC3MWAAtzGAALcxsAC3McAAtzHQALcx4AC3MfAAtzIQALcyMAC3MkAAtzJQALcycAC3MoAAtzowALc6UAC3OnAAtzqQALc6wAC3OtAAtzrgALc68AC3OwAAtzsgALc7QAC3O1AAtztgALc7gAC3O5AAt0TAALdG8AC3SPAAt0rwALdLEAC3SzAAt0tQALdLcAC3S6AAt0uwALdLwAC3S/AAt0wAALdMIAC3TDAAt0xQALdMgAC3TJAAt0ygALdM0AC3TOAAt00wALdOwAC3T1AAt09wALdPkAC3UCAAt1BQALdQgAC3UKAAt1UwALdXcAC3WeAAt1wgALdcUAC3XHAAt1yQALdcsAC3XNAAt1zwALddAAC3XTAAt17AALdg0AC3YPAAt2EQALdhMAC3YVAAt2FwALdhkAC3YbAAt2HQALdj4AC3ZBAAt2RAALdkcAC3ZKAAt2TQALdlAAC3ZTAAt2VgALdlgAC3bTAAt21QALdtcAC3bZAAt23AALdt0AC3beAAt23wALduAAC3biAAt25AALduUAC3bmAAt26AALdukAC3dkAAt3ZgALd2gAC3dqAAt3bQALd24AC3dvAAt3cAALd3EAC3dzAAt3dQALd3YAC3d3AAt3eQALd3oAC3f1AAt39wALd/oAC3f8AAt3/wALeAAAC3gBAAt4AgALeAMAC3gFAAt4BwALeAgAC3gJAAt4CwALeAwAC3glAAt4JgALeCcAC3gpAAt4pAALeKYAC3ioAAt4qgALeK0AC3iuAAt4rwALeLAAC3ixAAt4swALeLUAC3i2AAt4twALeLkAC3i6AAt5NQALeTcAC3k5AAt5OwALeT4AC3k/AAt5QAALeUEAC3lCAAt5RAALeUYAC3lHAAt5SAALeUoAC3lLAAt5xgALecgAC3nKAAt5zAALec8AC3nQAAt50QALedIAC3nTAAt51QALedcAC3nYAAt52QALedsAC3ncAAt6VwALelkAC3pbAAt6XQALemAAC3phAAt6YgALemMAC3pkAAt6ZgALemgAC3ppAAt6agALemwAC3ptAAt66AALeuoAC3rsAAt67gALevEAC3ryAAt68wALevQAC3r1AAt69wALevkAC3r6AAt6+wALev0AC3r+AAt7RwALe2sAC3uSAAt7tgALe7kAC3u7AAt7vQALe78AC3vBAAt7wwALe8QAC3vHAAt74AALe/0AC3v/AAt8AQALfAMAC3wFAAt8BwALfAkAC3wLAAt8KAALfCsAC3wuAAt8MQALfDQAC3w3AAt8OgALfD0AC3w/AAt8ugALfLwAC3y+AAt8wAALfMMAC3zEAAt8xQALfMYAC3zHAAt8yQALfMsAC3zMAAt8zQALfM8AC3zQAAt9SwALfU0AC31PAAt9UQALfVQAC31VAAt9VgALfVcAC31YAAt9WgALfVwAC31dAAt9XgALfWAAC31hAAt93AALfd4AC33gAAt94gALfeUAC33mAAt95wALfegAC33pAAt96wALfe0AC33uAAt97wALffEAC33yAAt+bQALfm8AC35xAAt+cwALfnYAC353AAt+eAALfnkAC356AAt+fAALfn4AC35/AAt+gAALfoIAC36DAAt+/gALfwAAC38CAAt/BAALfwcAC38IAAt/CQALfwoAC38LAAt/DQALfw8AC38QAAt/EQALfxMAC38UAAt/jwALf5EAC3+UAAt/lgALf5kAC3+aAAt/mwALf5wAC3+dAAt/nwALf6EAC3+iAAt/owALf6UAC3+mAAt/xQALgEAAC4BCAAuARAALgEYAC4BJAAuASgALgEsAC4BMAAuATQALgE8AC4BRAAuAUgALgFMAC4BVAAuAVgALgGcAC4BoAAuAagALgOUAC4DnAAuA6QALgOsAC4DuAAuA7wALgPAAC4DxAAuA8gALgPQAC4D3AAuA+AALgPkAC4D7AAuA/AALgXcAC4F5AAuBewALgX0AC4GAAAuBgQALgYIAC4GDAAuBhAALgYYAC4GJAAuBigALgYsAC4GNAAuBjgALggkAC4ILAAuCDgALghAAC4ITAAuCFAALghUAC4IWAAuCFwALghkAC4IcAAuCHQALgh4AC4IgAAuCIQALgrQAC4LXAAuC9wALgxcAC4MZAAuDGwALgx0AC4MfAAuDIgALgyMAC4MkAAuDJwALgygAC4MqAAuDKwALgy0AC4MwAAuDMQALgzIAC4M1AAuDNgALgzsAC4NUAAuDXQALg18AC4NhAAuDagALg20AC4NwAAuDcgALg7sAC4PfAAuEBgALhCoAC4QtAAuELwALhDEAC4QzAAuENQALhDcAC4Q4AAuEOwALhFQAC4R1AAuEdwALhHkAC4R7AAuEfQALhH8AC4SBAAuEgwALhIUAC4SmAAuEqQALhKwAC4SvAAuEsgALhLUAC4S4AAuEuwALhL4AC4TAAAuFOwALhT0AC4U/AAuFQQALhUQAC4VFAAuFRgALhUcAC4VIAAuFSgALhUwAC4VNAAuFTgALhVAAC4VRAAuFzAALhc4AC4XQAAuF0gALhdUAC4XWAAuF1wALhdgAC4XZAAuF2wALhd0AC4XeAAuF3wALheEAC4XiAAuGXQALhl8AC4ZiAAuGZAALhmcAC4ZoAAuGaQALhmoAC4ZrAAuGbQALhm8AC4ZwAAuGcQALhnMAC4Z0AAuGjQALho4AC4aPAAuGkQALhwwAC4cOAAuHEAALhxIAC4cVAAuHFgALhxcAC4cYAAuHGQALhxsAC4cdAAuHHgALhx8AC4chAAuHIgALh50AC4efAAuHoQALh6MAC4emAAuHpwALh6gAC4epAAuHqgALh6wAC4euAAuHrwALh7AAC4eyAAuHswALiC4AC4gwAAuIMgALiDQAC4g3AAuIOAALiDkAC4g6AAuIOwALiD0AC4g/AAuIQAALiEEAC4hDAAuIRAALiL8AC4jBAAuIwwALiMUAC4jIAAuIyQALiMoAC4jLAAuIzAALiM4AC4jQAAuI0QALiNIAC4jUAAuI1QALiVAAC4lSAAuJVAALiVYAC4lZAAuJWgALiVsAC4lcAAuJXQALiV8AC4lhAAuJYgALiWMAC4llAAuJZgALia8AC4nTAAuJ+gALih4AC4ohAAuKIwALiiUAC4onAAuKKQALiisAC4osAAuKLwALikgAC4plAAuKZwALimkAC4prAAuKbQALim8AC4pxAAuKcwALipAAC4qTAAuKlgALipkAC4qcAAuKnwALiqIAC4qlAAuKpwALiyIAC4skAAuLJwALiykAC4ssAAuLLQALiy4AC4svAAuLMAALizIAC4s0AAuLNQALizYAC4s4AAuLOQALi7QAC4u2AAuLuAALi7oAC4u9AAuLvgALi78AC4vAAAuLwQALi8MAC4vFAAuLxgALi8cAC4vJAAuLygALjEUAC4xHAAuMSQALjEsAC4xOAAuMTwALjFAAC4xRAAuMUgALjFQAC4xWAAuMVwALjFgAC4xaAAuMWwALjNYAC4zYAAuM2wALjN0AC4zgAAuM4QALjOIAC4zjAAuM5AALjOYAC4zoAAuM6QALjOoAC4zsAAuM7QALjWgAC41qAAuNbAALjW4AC41xAAuNcgALjXMAC410AAuNdQALjXcAC415AAuNegALjXsAC419AAuNfgALjfkAC437AAuN/QALjf8AC44CAAuOAwALjgQAC44FAAuOBgALjggAC44KAAuOCwALjgwAC44OAAuODwALjooAC46MAAuOjgALjpAAC46TAAuOlAALjpUAC46WAAuOlwALjpkAC46bAAuOnAALjp0AC46fAAuOoAALjzMAC49WAAuPdgALj5YAC4+YAAuPmgALj5wAC4+eAAuPoQALj6IAC4+jAAuPpgALj6cAC4+pAAuPqgALj6wAC4+vAAuPsAALj7EAC4+0AAuPtQALj7oAC4/TAAuP3AALj94AC4/gAAuP6QALj+wAC4/vAAuP8QALkDoAC5BeAAuQhQALkKkAC5CsAAuQrgALkLAAC5CyAAuQtAALkLYAC5C3AAuQugALkNMAC5D0AAuQ9gALkPgAC5D6AAuQ/AALkP4AC5EAAAuRAgALkQQAC5ElAAuRKAALkSsAC5EuAAuRMQALkTQAC5E3AAuROgALkT0AC5E/AAuRugALkbwAC5G+AAuRwAALkcMAC5HEAAuRxQALkcYAC5HHAAuRyQALkcsAC5HMAAuRzQALkc8AC5HQAAuSSwALkk0AC5JPAAuSUQALklQAC5JVAAuSVgALklcAC5JYAAuSWgALklwAC5JdAAuSXgALkmAAC5JhAAuS3AALkt4AC5LhAAuS4wALkuYAC5LnAAuS6AALkukAC5LqAAuS7AALku4AC5LvAAuS8AALkvIAC5LzAAuTDAALkw0AC5MOAAuTEAALk4sAC5ONAAuTjwALk5EAC5OUAAuTlQALk5YAC5OXAAuTmAALk5oAC5OcAAuTnQALk54AC5OgAAuToQALlBwAC5QeAAuUIAALlCIAC5QlAAuUJgALlCcAC5QoAAuUKQALlCsAC5QtAAuULgALlC8AC5QxAAuUMgALlK0AC5SvAAuUsQALlLMAC5S2AAuUtwALlLgAC5S5AAuUugALlLwAC5S+AAuUvwALlMAAC5TCAAuUwwALlT4AC5VAAAuVQgALlUQAC5VHAAuVSAALlUkAC5VKAAuVSwALlU0AC5VPAAuVUAALlVEAC5VTAAuVVAALlc8AC5XRAAuV0wALldUAC5XYAAuV2QALldoAC5XbAAuV3AALld4AC5XgAAuV4QALleIAC5XkAAuV5QALli4AC5ZSAAuWeQALlp0AC5agAAuWogALlqQAC5amAAuWqAALlqoAC5arAAuWrgALlscAC5bkAAuW5gALlugAC5bqAAuW7AALlu4AC5bwAAuW8gALlw8AC5cSAAuXFQALlxgAC5cbAAuXHgALlyEAC5ckAAuXJgALl6EAC5ejAAuXpgALl6gAC5erAAuXrAALl60AC5euAAuXrwALl7EAC5ezAAuXtAALl7UAC5e3AAuXuAALmDMAC5g1AAuYNwALmDkAC5g8AAuYPQALmD4AC5g/AAuYQAALmEIAC5hEAAuYRQALmEYAC5hIAAuYSQALmMQAC5jGAAuYyAALmMoAC5jNAAuYzgALmM8AC5jQAAuY0QALmNMAC5jVAAuY1gALmNcAC5jZAAuY2gALmVUAC5lXAAuZWgALmVwAC5lfAAuZYAALmWEAC5liAAuZYwALmWUAC5lnAAuZaAALmWkAC5lrAAuZbAALmecAC5npAAuZ6wALme0AC5nwAAuZ8QALmfIAC5nzAAuZ9AALmfYAC5n4AAuZ+QALmfoAC5n8AAuZ/QALmngAC5p6AAuafAALmn4AC5qBAAuaggALmoMAC5qEAAuahQALmocAC5qJAAuaigALmosAC5qNAAuajgALmwkAC5sLAAubDQALmw8AC5sSAAubEwALmxQAC5sVAAubFgALmxgAC5saAAubGwALmxwAC5seAAubHwALm7IAC5vVAAub9QALnBUAC5wXAAucGQALnBsAC5wdAAucIAALnCEAC5wiAAucJQALnCYAC5woAAucKQALnCsAC5wuAAucLwALnDAAC5wzAAucNAALnDkAC5xSAAucWwALnF0AC5xfAAucaAALnGsAC5xuAAuccAALnLkAC5zdAAudBAALnSgAC50rAAudLQALnS8AC50xAAudMwALnTUAC502AAudOQALnVIAC51zAAuddQALnXcAC515AAudewALnX0AC51/AAudgQALnYMAC52kAAudpwALnaoAC52tAAudsAALnbMAC522AAuduQALnbwAC52+AAueOQALnjsAC549AAuePwALnkIAC55DAAueRAALnkUAC55GAAueSAALnkoAC55LAAueTAALnk4AC55PAAueygALnswAC57OAAue0AALntMAC57UAAue1QALntYAC57XAAue2QALntsAC57cAAue3QALnt8AC57gAAufWwALn10AC59gAAufYgALn2UAC59mAAufZwALn2gAC59pAAufawALn20AC59uAAufbwALn3EAC59yAAufiwALn4wAC5+NAAufjwALoAoAC6AMAAugDgALoBAAC6ATAAugFAALoBUAC6AWAAugFwALoBkAC6AbAAugHAALoB0AC6AfAAugIAALoJsAC6CdAAugnwALoKEAC6CkAAugpQALoKYAC6CnAAugqAALoKoAC6CsAAugrQALoK4AC6CwAAugsQALoSwAC6EuAAuhMAALoTIAC6E1AAuhNgALoTcAC6E4AAuhOQALoTsAC6E9AAuhPgALoT8AC6FBAAuhQgALob0AC6G/AAuhwQALocMAC6HGAAuhxwALocgAC6HJAAuhygALocwAC6HOAAuhzwALodAAC6HSAAuh0wALok4AC6JQAAuiUgALolQAC6JXAAuiWAALolkAC6JaAAuiWwALol0AC6JfAAuiYAALomEAC6JjAAuiZAALoq0AC6LRAAui+AALoxwAC6MfAAujIQALoyMAC6MlAAujJwALoykAC6MqAAujLQALo0YAC6NjAAujZQALo2cAC6NpAAujawALo20AC6NvAAujcQALo44AC6ORAAujlAALo5cAC6OaAAujnQALo6AAC6OjAAujpQALpCAAC6QiAAukJAALpCYAC6QpAAukKgALpCsAC6QsAAukLQALpC8AC6QxAAukMgALpDMAC6Q1AAukNgALpLEAC6SzAAuktQALpLcAC6S6AAukuwALpLwAC6S9AAukvgALpMAAC6TCAAukwwALpMQAC6TGAAukxwALpUIAC6VEAAulRgALpUgAC6VLAAulTAALpU0AC6VOAAulTwALpVEAC6VTAAulVAALpVUAC6VXAAulWAALpdMAC6XVAAul2AALpdoAC6XdAAul3gALpd8AC6XgAAul4QALpeMAC6XlAAul5gALpecAC6XpAAul6gALpmUAC6ZnAAumaQALpmsAC6ZuAAumbwALpnAAC6ZxAAumcgALpnQAC6Z2AAumdwALpngAC6Z6AAumewALpvYAC6b4AAum+gALpvwAC6b/AAunAAALpwEAC6cCAAunAwALpwUAC6cHAAunCAALpwkAC6cLAAunDAALp4cAC6eJAAuniwALp40AC6eQAAunkQALp5IAC6eTAAunlAALp5YAC6eYAAunmQALp5oAC6ecAAunnQALqDAAC6hTAAuocwALqJMAC6iVAAuolwALqJkAC6ibAAuongALqJ8AC6igAAuoowALqKQAC6imAAuopwALqKkAC6isAAuorQALqK4AC6ixAAuosgALqLcAC6jQAAuo2QALqNsAC6jdAAuo5gALqOkAC6jsAAuo7gALqTcAC6lbAAupggALqaYAC6mpAAupqwALqa0AC6mvAAupsQALqbMAC6m0AAuptwALqdAAC6nxAAup8wALqfUAC6n3AAup+QALqfsAC6n9AAup/wALqgEAC6oiAAuqJQALqigAC6orAAuqLgALqjEAC6o0AAuqNwALqjoAC6o8AAuqtwALqrkAC6q7AAuqvQALqsAAC6rBAAuqwgALqsMAC6rEAAuqxgALqsgAC6rJAAuqygALqswAC6rNAAurSAALq0oAC6tMAAurTgALq1EAC6tSAAurUwALq1QAC6tVAAurVwALq1kAC6taAAurWwALq10AC6teAAur2QALq9sAC6veAAur4AALq+MAC6vkAAur5QALq+YAC6vnAAur6QALq+sAC6vsAAur7QALq+8AC6vwAAusCQALrAoAC6wLAAusDQALrIgAC6yKAAusjAALrI4AC6yRAAuskgALrJMAC6yUAAuslQALrJcAC6yZAAusmgALrJsAC6ydAAusngALrRkAC60bAAutHQALrR8AC60iAAutIwALrSQAC60lAAutJgALrSgAC60qAAutKwALrSwAC60uAAutLwALraoAC62sAAutrgALrbAAC62zAAuttAALrbUAC622AAuttwALrbkAC627AAutvAALrb0AC62/AAutwAALrjsAC649AAuuPwALrkEAC65EAAuuRQALrkYAC65HAAuuSAALrkoAC65MAAuuTQALrk4AC65QAAuuUQALrswAC67OAAuu0AALrtIAC67VAAuu1gALrtcAC67YAAuu2QALrtsAC67dAAuu3gALrt8AC67hAAuu4gALrysAC69PAAuvdgALr5oAC6+dAAuvnwALr6EAC6+jAAuvpQALr6cAC6+oAAuvqwALr8QAC6/hAAuv4wALr+UAC6/nAAuv6QALr+sAC6/tAAuv7wALsAwAC7APAAuwEgALsBUAC7AYAAuwGwALsB4AC7AhAAuwIwALsJ4AC7CgAAuwowALsKUAC7CoAAuwqQALsKoAC7CrAAuwrAALsK4AC7CwAAuwsQALsLIAC7C0AAuwtQALsTAAC7EyAAuxNAALsTYAC7E5AAuxOgALsTsAC7E8AAuxPQALsT8AC7FBAAuxQgALsUMAC7FFAAuxRgALscEAC7HDAAuxxQALsccAC7HKAAuxywALscwAC7HNAAuxzgALsdAAC7HSAAux0wALsdQAC7HWAAux1wALslIAC7JUAAuyVwALslkAC7JcAAuyXQALsl4AC7JfAAuyYAALsmIAC7JkAAuyZQALsmYAC7JoAAuyaQALsuQAC7LmAAuy6AALsuoAC7LtAAuy7gALsu8AC7LwAAuy8QALsvMAC7L1AAuy9gALsvcAC7L5AAuy+gALs3UAC7N3AAuzeQALs3sAC7N+AAuzfwALs4AAC7OBAAuzggALs4QAC7OGAAuzhwALs4gAC7OKAAuziwALtAYAC7QIAAu0CgALtAwAC7QPAAu0EAALtBEAC7QSAAu0EwALtBUAC7QXAAu0GAALtBkAC7QbAAu0HAALtC0AC7QuAAu0MAALtKsAC7StAAu0rwALtLEAC7S0AAu0tQALtLYAC7S3AAu0uAALtLoAC7S9AAu0vgALtL8AC7TBAAu0wgALtT0AC7U/AAu1QQALtUMAC7VGAAu1RwALtUgAC7VJAAu1SgALtUwAC7VPAAu1UAALtVEAC7VTAAu1VAALtc8AC7XRAAu11AALtdYAC7XZAAu12gALtdsAC7XcAAu13QALtd8AC7XiAAu14wALteQAC7XmAAu15wALtnoAC7adAAu2vQALtt0AC7bfAAu24QALtuMAC7blAAu26AALtukAC7bqAAu27QALtu4AC7bwAAu28QALtvMAC7b2AAu29wALtvgAC7b7AAu2/AALtwUAC7ceAAu3JwALtykAC7crAAu3NAALtzcAC7c6AAu3PAALt4UAC7epAAu30AALt/QAC7f3AAu3+QALt/sAC7f9AAu3/wALuAEAC7gCAAu4BQALuB4AC7g/AAu4QQALuEMAC7hFAAu4RwALuEkAC7hLAAu4TQALuE8AC7hwAAu4cwALuHYAC7h5AAu4fAALuH8AC7iCAAu4hQALuIgAC7iKAAu5BQALuQcAC7kJAAu5CwALuQ4AC7kPAAu5EAALuREAC7kSAAu5FAALuRYAC7kXAAu5GAALuRoAC7kbAAu5lgALuZgAC7maAAu5nAALuZ8AC7mgAAu5oQALuaIAC7mjAAu5pQALuacAC7moAAu5qQALuasAC7msAAu6JwALuikAC7osAAu6LgALujEAC7oyAAu6MwALujQAC7o1AAu6NwALujkAC7o6AAu6OwALuj0AC7o+AAu6VwALulgAC7pZAAu6WwALutYAC7rYAAu62gALutwAC7rfAAu64AALuuEAC7riAAu64wALuuUAC7rnAAu66AALuukAC7rrAAu67AALu2cAC7tpAAu7awALu20AC7twAAu7cQALu3IAC7tzAAu7dAALu3YAC7t4AAu7eQALu3oAC7t8AAu7fQALu/gAC7v6AAu7/AALu/4AC7wBAAu8AgALvAMAC7wEAAu8BQALvAcAC7wJAAu8CgALvAsAC7wNAAu8DgALvIkAC7yLAAu8jQALvI8AC7ySAAu8kwALvJQAC7yVAAu8lgALvJgAC7yaAAu8mwALvJwAC7yeAAu8nwALvRoAC70cAAu9HgALvSAAC70jAAu9JAALvSUAC70mAAu9JwALvSkAC70rAAu9LAALvS0AC70vAAu9MAALvXkAC72dAAu9xAALvegAC73rAAu97QALve8AC73xAAu98wALvfUAC732AAu9+QALvhIAC74vAAu+MQALvjMAC741AAu+NwALvjkAC747AAu+PQALvloAC75dAAu+YAALvmMAC75mAAu+aQALvmwAC75vAAu+cQALvuwAC77uAAu+8AALvvIAC771AAu+9gALvvcAC774AAu++QALvvsAC779AAu+/gALvv8AC78BAAu/AgALv30AC79/AAu/gQALv4MAC7+GAAu/hwALv4gAC7+JAAu/igALv4wAC7+OAAu/jwALv5AAC7+SAAu/kwALwA4AC8AQAAvAEgALwBQAC8AXAAvAGAALwBkAC8AaAAvAGwALwB0AC8AfAAvAIAALwCEAC8AjAAvAJAALwJ8AC8ChAAvApAALwKYAC8CpAAvAqgALwKsAC8CsAAvArQALwK8AC8CxAAvAsgALwLMAC8C1AAvAtgALwTEAC8EzAAvBNQALwTcAC8E6AAvBOwALwTwAC8E9AAvBPgALwUAAC8FCAAvBQwALwUQAC8FGAAvBRwALwcIAC8HEAAvBxgALwcgAC8HLAAvBzAALwc0AC8HOAAvBzwALwdEAC8HTAAvB1AALwdUAC8HXAAvB2AALwlMAC8JVAAvCVwALwlkAC8JcAAvCXQALwl4AC8JfAAvCYAALwmIAC8JkAAvCZQALwmYAC8JoAAvCaQALwnoAC8J7AAvCfQALwwAAC8MkAAvDSAALw2sAC8OSAAvDsgALw9kAC8QAAAvEIAALxEQAC8RoAAvEagALxG0AC8RvAAvEcQALxHMAC8R2AAvEeQALxHsAC8R9AAvEgAALxIIAC8SEAAvEhwALxIoAC8SLAAvEkAALxKkAC8SuAAvEsAALxLUAC8S4AAvEugALxQMAC8UnAAvFTgALxXIAC8V1AAvFdwALxXkAC8V7AAvFfQALxX8AC8WAAAvFgwALxZwAC8XBAAvFwwALxcUAC8XHAAvFyQALxcsAC8XNAAvFzwALxdEAC8XTAAvF+AALxfsAC8X+AAvGAQALxgQAC8YHAAvGCgALxg0AC8YQAAvGEwALxhUAC8aQAAvGkgALxpUAC8aXAAvGmgALxpsAC8acAAvGnQALxp4AC8agAAvGogALxqMAC8akAAvGpgALxqcAC8a4AAvGuQALxrsAC8c2AAvHOAALxzoAC8c8AAvHPwALx0AAC8dBAAvHQgALx0MAC8dFAAvHRwALx0gAC8dJAAvHSwALx0wAC8fHAAvHyQALx8wAC8fOAAvH0QALx9IAC8fTAAvH1AALx9UAC8fXAAvH2QALx9oAC8fbAAvH3QALx94AC8fvAAvH9AALx/cAC8f5AAvICgALyBMAC8gWAAvIGQALyBsAC8g2AAvISwALyMYAC8jIAAvIygALyMwAC8jPAAvI0AALyNEAC8jSAAvI0wALyNUAC8jXAAvI2AALyNkAC8jbAAvI3AALyVcAC8lZAAvJXAALyV4AC8lhAAvJYgALyWMAC8lkAAvJZQALyWcAC8lpAAvJagALyWsAC8ltAAvJbgALyX8AC8mAAAvJggALyf0AC8n/AAvKAQALygMAC8oGAAvKBwALyggAC8oJAAvKCgALygwAC8oOAAvKDwALyhAAC8oSAAvKEwALyo4AC8qQAAvKkwALypUAC8qYAAvKmQALypoAC8qbAAvKnAALyp4AC8qgAAvKoQALyqIAC8qkAAvKpQALyr4AC8q/AAvKwAALysIAC8s9AAvLPwALy0EAC8tDAAvLRgALy0cAC8tIAAvLSQALy0oAC8tMAAvLTgALy08AC8tQAAvLUgALy1MAC8vOAAvL0AALy9MAC8vVAAvL2AALy9kAC8vaAAvL2wALy9wAC8veAAvL4AALy+EAC8viAAvL5AALy+UAC8wWAAvMLwALzDwAC8w/AAvMQgALzEUAC8xSAAvMVQALzFgAC8xbAAvMXQALzHgAC8yNAAvMoAALzTMAC81WAAvNdgALzZYAC82YAAvNmgALzZwAC82eAAvNoQALzaIAC82jAAvNpgALzacAC82pAAvNqgALzawAC82vAAvNsAALzbEAC820AAvNtQALzboAC83TAAvN3AALzd4AC83gAAvN6QALzewAC83vAAvN8QALzjoAC85eAAvOhQALzqkAC86sAAvOrgALzrAAC86yAAvOtAALzrYAC863AAvOugALztMAC870AAvO9gALzvgAC876AAvO/AALzv4AC88AAAvPAgALzwQAC88lAAvPKAALzysAC88uAAvPMQALzzQAC883AAvPOgALzz0AC88/AAvPugALz7wAC8++AAvPwAALz8MAC8/EAAvPxQALz8YAC8/HAAvPyQALz8sAC8/MAAvPzQALz88AC8/QAAvQSwAL0E0AC9BPAAvQUQAL0FQAC9BVAAvQVgAL0FcAC9BYAAvQWgAL0FwAC9BdAAvQXgAL0GAAC9BhAAvQ3AAL0N4AC9DhAAvQ4wAL0OYAC9DnAAvQ6AAL0OkAC9DqAAvQ7AAL0O4AC9DvAAvQ8AAL0PIAC9DzAAvRDAAL0Q0AC9EOAAvREAAL0YsAC9GNAAvRjwAL0ZEAC9GUAAvRlQAL0ZYAC9GXAAvRmAAL0ZoAC9GcAAvRnQAL0Z4AC9GgAAvRoQAL0hwAC9IeAAvSIAAL0iIAC9IlAAvSJgAL0icAC9IoAAvSKQAL0isAC9ItAAvSLgAL0i8AC9IxAAvSMgAL0q0AC9KvAAvSsQAL0rMAC9K2AAvStwAL0rgAC9K5AAvSugAL0rwAC9K+AAvSvwAL0sAAC9LCAAvSwwAL0z4AC9NAAAvTQgAL00QAC9NHAAvTSAAL00kAC9NKAAvTSwAL000AC9NPAAvTUAAL01EAC9NTAAvTVAAL088AC9PRAAvT0wAL09UAC9PYAAvT2QAL09oAC9PbAAvT3AAL094AC9PgAAvT4QAL0+IAC9PkAAvT5QAL1C4AC9RSAAvUeQAL1J0AC9SgAAvUogAL1KQAC9SmAAvUqAAL1KoAC9SrAAvUrgAL1McAC9TkAAvU5gAL1OgAC9TqAAvU7AAL1O4AC9TwAAvU8gAL1Q8AC9USAAvVFQAL1RgAC9UbAAvVHgAL1SEAC9UkAAvVJgAL1aEAC9WjAAvVpQAL1acAC9WqAAvVqwAL1awAC9WtAAvVrgAL1bAAC9WyAAvVswAL1bQAC9W2AAvVtwAL1jIAC9Y0AAvWNgAL1jgAC9Y7AAvWPAAL1j0AC9Y+AAvWPwAL1kEAC9ZDAAvWRAAL1kUAC9ZHAAvWSAAL1sMAC9bFAAvWxwAL1skAC9bMAAvWzQAL1s4AC9bPAAvW0AAL1tIAC9bUAAvW1QAL1tYAC9bYAAvW2QAL11QAC9dWAAvXWQAL11sAC9deAAvXXwAL12AAC9dhAAvXYgAL12QAC9dmAAvXZwAL12gAC9dqAAvXawAL1+YAC9foAAvX6gAL1+wAC9fvAAvX8AAL1/EAC9fyAAvX8wAL1/UAC9f3AAvX+AAL1/kAC9f7AAvX/AAL2HcAC9h5AAvYewAL2H0AC9iAAAvYgQAL2IIAC9iDAAvYhAAL2IYAC9iIAAvYiQAL2IoAC9iMAAvYjQAL2QgAC9kKAAvZDAAL2Q4AC9kRAAvZEgAL2RMAC9kUAAvZFQAL2RcAC9kZAAvZGgAL2RsAC9kdAAvZHgAL2bEAC9nUAAvZ9AAL2hQAC9oWAAvaGAAL2hoAC9ocAAvaHwAL2iAAC9ohAAvaJAAL2iUAC9onAAvaKAAL2ioAC9otAAvaLgAL2i8AC9oyAAvaMwAL2jgAC9pRAAvaWgAL2lwAC9peAAvaZwAL2moAC9ptAAvabwAL2rgAC9rcAAvbAwAL2ycAC9sqAAvbLAAL2y4AC9swAAvbMgAL2zQAC9s1AAvbOAAL21EAC9tyAAvbdAAL23YAC9t4AAvbegAL23wAC9t+AAvbgAAL24IAC9ujAAvbpgAL26kAC9usAAvbrwAL27IAC9u1AAvbuAAL27sAC9u9AAvcOAAL3DoAC9w8AAvcPgAL3EEAC9xCAAvcQwAL3EQAC9xFAAvcRwAL3EkAC9xKAAvcSwAL3E0AC9xOAAvcyQAL3MsAC9zNAAvczwAL3NIAC9zTAAvc1AAL3NUAC9zWAAvc2AAL3NoAC9zbAAvc3AAL3N4AC9zfAAvdWgAL3VwAC91fAAvdYQAL3WQAC91lAAvdZgAL3WcAC91oAAvdagAL3WwAC91tAAvdbgAL3XAAC91xAAvdigAL3YsAC92MAAvdjgAL3gkAC94LAAveDQAL3g8AC94SAAveEwAL3hQAC94VAAveFgAL3hgAC94aAAveGwAL3hwAC94eAAveHwAL3poAC96cAAvengAL3qAAC96jAAvepAAL3qUAC96mAAvepwAL3qkAC96rAAverAAL3q0AC96vAAvesAAL3ysAC98tAAvfLwAL3zEAC980AAvfNQAL3zYAC983AAvfOAAL3zoAC988AAvfPQAL3z4AC99AAAvfQQAL37wAC9++AAvfwAAL38IAC9/FAAvfxgAL38cAC9/IAAvfyQAL38sAC9/NAAvfzgAL388AC9/RAAvf0gAL4E0AC+BPAAvgUQAL4FMAC+BWAAvgVwAL4FgAC+BZAAvgWgAL4FwAC+BeAAvgXwAL4GAAC+BiAAvgYwAL4KwAC+DQAAvg9wAL4RsAC+EeAAvhIAAL4SIAC+EkAAvhJgAL4SgAC+EpAAvhLAAL4UUAC+FiAAvhZAAL4WYAC+FoAAvhagAL4WwAC+FuAAvhcAAL4Y0AC+GQAAvhkwAL4ZYAC+GZAAvhnAAL4Z8AC+GiAAvhpAAL4h8AC+IhAAviIwAL4iUAC+IoAAviKQAL4ioAC+IrAAviLAAL4i4AC+IwAAviMQAL4jIAC+I0AAviNQAL4rAAC+KyAAvitAAL4rYAC+K5AAviugAL4rsAC+K8AAvivQAL4r8AC+LBAAviwgAL4sMAC+LFAAvixgAL40EAC+NDAAvjRQAL40cAC+NKAAvjSwAL40wAC+NNAAvjTgAL41AAC+NSAAvjUwAL41QAC+NWAAvjVwAL49IAC+PUAAvj1wAL49kAC+PcAAvj3QAL494AC+PfAAvj4AAL4+IAC+PkAAvj5QAL4+YAC+PoAAvj6QAL5GQAC+RmAAvkaAAL5GoAC+RtAAvkbgAL5G8AC+RwAAvkcQAL5HMAC+R1AAvkdgAL5HcAC+R5AAvkegAL5PUAC+T3AAvk+QAL5PsAC+T+AAvk/wAL5QAAC+UBAAvlAgAL5QQAC+UGAAvlBwAL5QgAC+UKAAvlCwAL5YYAC+WIAAvligAL5YwAC+WPAAvlkAAL5ZEAC+WSAAvlkwAL5ZUAC+WXAAvlmAAL5ZkAC+WbAAvlnAAL5i8AC+ZSAAvmcgAL5pIAC+aUAAvmlgAL5pgAC+aaAAvmnQAL5p4AC+afAAvmogAL5qMAC+alAAvmpgAL5qkAC+asAAvmrQAL5q4AC+axAAvmsgAL5rcAC+bQAAvm2QAL5tsAC+beAAvm5wAL5uoAC+btAAvm7wAL5zgAC+dcAAvngwAL56cAC+eqAAvnrAAL564AC+ewAAvnsgAL57QAC+e1AAvnuAAL59EAC+fyAAvn9AAL5/YAC+f4AAvn+gAL5/wAC+f+AAvoAAAL6AIAC+gjAAvoJgAL6CkAC+gsAAvoLwAL6DIAC+g1AAvoOAAL6DsAC+g9AAvouAAL6LoAC+i8AAvovgAL6MEAC+jCAAvowwAL6MQAC+jFAAvoxwAL6MkAC+jKAAvoywAL6M0AC+jOAAvpSQAL6UsAC+lNAAvpTwAL6VIAC+lTAAvpVAAL6VUAC+lWAAvpWAAL6VoAC+lbAAvpXAAL6V4AC+lfAAvp2gAL6dwAC+nfAAvp4QAL6eQAC+nlAAvp5gAL6ecAC+noAAvp6gAL6ewAC+ntAAvp7gAL6fAAC+nxAAvqCgAL6gsAC+oMAAvqDgAL6okAC+qLAAvqjQAL6o8AC+qSAAvqkwAL6pQAC+qVAAvqlgAL6pgAC+qaAAvqmwAL6pwAC+qeAAvqnwAL6xoAC+scAAvrHgAL6yAAC+sjAAvrJAAL6yUAC+smAAvrJwAL6ykAC+srAAvrLAAL6y0AC+svAAvrMAAL66sAC+utAAvrrwAL67EAC+u0AAvrtQAL67YAC+u3AAvruAAL67oAC+u8AAvrvQAL674AC+vAAAvrwQAL7DwAC+w+AAvsQAAL7EIAC+xFAAvsRgAL7EcAC+xIAAvsSQAL7EsAC+xNAAvsTgAL7E8AC+xRAAvsUgAL7M0AC+zPAAvs0QAL7NMAC+zWAAvs1wAL7NgAC+zZAAvs2gAL7NwAC+zeAAvs3wAL7OAAC+ziAAvs4wAL7SwAC+1QAAvtdwAL7ZsAC+2eAAvtoQAL7aMAC+2lAAvtpwAL7akAC+2qAAvtrQAL7cYAC+3jAAvt5gAL7ekAC+3sAAvt7wAL7fIAC+31AAvt+AAL7hUAC+4YAAvuGwAL7h4AC+4hAAvuJAAL7icAC+4qAAvuLAAL7qcAC+6pAAvurAAL7q4AC+6xAAvusgAL7rMAC+60AAvutQAL7rcAC+66AAvuuwAL7rwAC+6+AAvuvwAL7zoAC+88AAvvPwAL70EAC+9EAAvvRQAL70YAC+9HAAvvSAAL70oAC+9NAAvvTgAL708AC+9RAAvvUgAL780AC+/PAAvv0gAL79QAC+/XAAvv2AAL79kAC+/aAAvv2wAL790AC+/gAAvv4QAL7+IAC+/kAAvv5QAL8GAAC/BiAAvwZQAL8GcAC/BqAAvwawAL8GwAC/BtAAvwbgAL8HAAC/BzAAvwdAAL8HUAC/B3AAvweAAL8PsAC/EfAAvxQwAL8WYAC/GNAAvxrQAL8dQAC/H7AAvyGwAL8j8AC/JjAAvyZQAL8mgAC/JqAAvybAAL8m4AC/JxAAvydAAL8nYAC/J4AAvyewAL8n0AC/J/AAvyggAL8oUAC/KGAAvyiwAL8qQAC/KpAAvyqwAL8rAAC/KzAAvytQAL8v4AC/MiAAvzSQAL820AC/NwAAvzcgAL83QAC/N2AAvzeAAL83oAC/N7AAvzfgAL85cAC/O8AAvzvgAL88AAC/PCAAvzxAAL88YAC/PIAAvzygAL88wAC/POAAvz8wAL8/YAC/P5AAvz/AAL8/8AC/QCAAv0BQAL9AgAC/QLAAv0DgAL9BAAC/SLAAv0jQAL9JAAC/SSAAv0lQAL9JYAC/SXAAv0mAAL9JkAC/SbAAv0nQAL9J4AC/SfAAv0oQAL9KIAC/SzAAv0tAAL9LYAC/UxAAv1MwAL9TUAC/U3AAv1OgAL9TsAC/U8AAv1PQAL9T4AC/VAAAv1QgAL9UMAC/VEAAv1RgAL9UcAC/XCAAv1xAAL9ccAC/XJAAv1zAAL9c0AC/XOAAv1zwAL9dAAC/XSAAv11AAL9dUAC/XWAAv12AAL9dkAC/XqAAv16wAL9e0AC/ZoAAv2agAL9mw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ADAiiAAwIpAAMCKYADAioAAwIqwAMCKwADAitAAwIsAAMCLEADAizAAwItAAMCLYADAi5AAwIugAMCLsADAi+AAwIvwAMCMQADAjdAAwI5gAMCOgADAjqAAwI8wAMCPYADAj5AAwI+wAMCUQADAloAAwJjwAMCbMADAm2AAwJuAAMCboADAm8AAwJvgAMCcAADAnBAAwJxAAMCd0ADAn+AAwKAAAMCgIADAoEAAwKBgAMCggADAoKAAwKDAAMCg4ADAovAAwKMgAMCjUADAo4AAwKOwAMCj4ADApBAAwKRAAMCkcADApJAAwKxAAMCsYADArIAAwKygAMCs0ADArOAAwKzwAMCtAADArRAAwK0wAMCtUADArWAAwK1wAMCtkADAraAAwLVQAMC1cADAtZAAwLWwAMC14ADAtfAAwLYAAMC2EADAtiAAwLZAAMC2YADAtnAAwLaAAMC2oADAtrAAwL5gAMC+gADAvrAAwL7QAMC/AADAvxAAwL8gAMC/MADAv0AAwL9gAMC/gADAv5AAwL+gAMC/wADAv9AAwMFgAMDBcADAwYAAwMGgAMDJUADAyXAAwMmQAMDJsADAyeAAwMnwAMDKAADAyhAAwMogAMDKQADAymAAwMpwAMDKgADAyqAAwMqwAMDSYADA0oAAwNKgAMDSwADA0vAAwNMAAMDTEADA0yAAwNMwAMDTUADA03AAwNOAAMDTkADA07AAwNPAAMDbcADA25AAwNuwAMDb0ADA3AAAwNwQAMDcIADA3DAAwNxAAMDcYADA3IAAwNyQAMDcoADA3MAAwNzQAMDkgADA5KAAwOTAAMDk4ADA5RAAwOUgAMDlMADA5UAAwOVQAMDlcADA5ZAAwOWgAMDlsADA5dAAwOXgAMDtkADA7bAAwO3QAMDt8ADA7iAAwO4wAMDuQADA7lAAwO5gAMDugADA7qAAwO6wAMDuwADA7uAAwO7wAMDzgADA9cAAwPgwAMD6cADA+qAAwPrAAMD64ADA+wAAwPsgAMD7QADA+1AAwPuAAMD9EADA/uAAwP8AAMD/IADA/0AAwP9gAMD/gADA/6AAwP/AAMEBkADBAcAAwQHwAMECIADBAlAAwQKAAMECsADBAuAAwQMAAMEKsADBCtAAwQrwAMELEADBC0AAwQtQAMELYADBC3AAwQuAAMELoADBC8AAwQvQAMEL4ADBDAAAwQwQAMETwADBE+AAwRQAAMEUIADBFFAAwRRgAMEUcADBFIAAwRSQAMEUsADBFNAAwRTgAMEU8ADBFRAAwRUgAMEc0ADBHPAAwR0QAMEdMADBHWAAwR1wAMEdgADBHZAAwR2gAMEdwADBHeAAwR3wAMEeAADBHiAAwR4wAMEl4ADBJgAAwSYgAMEmQADBJnAAwSaAAMEmkADBJqAAwSawAMEm0ADBJvAAwScAAMEnEADBJzAAwSdAAMEu8ADBLxAAwS8wAMEvUADBL4AAwS+QAMEvoADBL7AAwS/AAMEv4ADBMAAAwTAQAMEwIADBMEAAwTBQAME4AADBOCAAwThQAME4cADBOKAAwTiwAME4wADBONAAwTjgAME5AADBOSAAwTkwAME5QADBOWAAwTlwAME6YADBQhAAwUIwAMFCUADBQnAAwUKgAMFCsADBQsAAwULQAMFC4ADBQwAAwUMgAMFDMADBQ0AAwUNgAMFDcADBTKAAwU7QAMFQ0ADBUtAAwVLwAMFTEADBUzAAwVNQAMFTgADBU5AAwVOgAMFT0ADBU+AAwVQAAMFUEADBVEAAwVRwAMFUgADBVJAAwVTAAMFU0ADBVSAAwVawAMFXQADBV2AAwVeQAMFYIADBWFAAwViAAMFYoADBXTAAwV9wAMFh4ADBZCAAwWRQAMFkcADBZJAAwWSwAMFk0ADBZPAAwWUAAMFlMADBZsAAwWjQAMFo8ADBaRAAwWkwAMFpUADBaXAAwWmQAMFpsADBadAAwWvgAMFsEADBbEAAwWxwAMFsoADBbNAAwW0AAMFtMADBbWAAwW2AAMF1MADBdVAAwXVwAMF1kADBdcAAwXXQAMF14ADBdfAAwXYAAMF2IADBdkAAwXZQAMF2YADBdoAAwXaQAMF+QADBfmAAwX6AAMF+oADBftAAwX7gAMF+8ADBfwAAwX8QAMF/MADBf1AAwX9gAMF/cADBf5AAwX+gAMGHUADBh3AAwYegAMGHwADBh/AAwYgAAMGIEADBiCAAwYgwAMGIUADBiHAAwYiAAMGIkADBiLAAwYjAAMGKUADBimAAwYpwAMGKkADBkkAAwZJgAMGSgADBkqAAwZLQAMGS4ADBkvAAwZMAAMGTEADBkzAAwZNQAMGTYADBk3AAwZOQAMGToADBm1AAwZtwAMGbkADBm7AAwZvgAMGb8ADBnAAAwZwQAMGcIADBnEAAwZxgAMGccADBnIAAwZygAMGcsADBpGAAwaSAAMGkoADBpMAAwaTwAMGlAADBpRAAwaUgAMGlMADBpVAAwaVwAMGlgADBpZAAwaWwAMGlwADBrXAAwa2QAMGtsADBrdAAwa4AAMGuEADBriAAwa4wAMGuQADBrmAAwa6AAMGukADBrqAAwa7AAMGu0ADBtoAAwbagAMG2wADBtuAAwbcQAMG3IADBtzAAwbdAAMG3UADBt3AAwbeQAMG3oADBt7AAwbfQAMG34ADBvHAAwb6wAMHBIADBw2AAwcOQAMHDwADBw+AAwcQAAMHEIADBxEAAwcRQAMHEgADBxhAAwcfgAMHIEADByEAAwchwAMHIoADByNAAwckAAMHJMADBywAAwcswAMHLYADBy5AAwcvAAMHL8ADBzCAAwcxQAMHMcADB1CAAwdRAAMHUcADB1JAAwdTAAMHU0ADB1OAAwdTwAMHVAADB1SAAwdVQAMHVYADB1XAAwdWQAMHVoADB3VAAwd1wAMHdoADB3cAAwd3wAMHeAADB3hAAwd4gAMHeMADB3lAAwd6AAMHekADB3qAAwd7AAMHe0ADB5oAAweagAMHm0ADB5vAAwecgAMHnMADB50AAwedQAMHnYADB54AAweewAMHnwADB59AAwefwAMHoAADB77AAwe/QAMHwAADB8CAAwfBQAMHwYADB8HAAwfCAAMHwkADB8LAAwfDgAMHw8ADB8QAAwfEgAMHxMADB+OAAwfkAAMH5IADB+UAAwflwAMH5gADB+ZAAwfmgAMH5sADB+dAAwfoAAMH6EADB+iAAwfpAAMH6UADCAgAAwgIgAMICQADCAmAAwgKQAMICoADCArAAwgLAAMIC0ADCAvAAwgMgAMIDMADCA0AAwgNgAMIDcADCCyAAwgtAAMILcADCC5AAwgvAAMIL0ADCC+AAwgvwAMIMAADCDCAAwgxQAMIMYADCDHAAwgyQAMIMoADCFdAAwhgAAMIaAADCHAAAwhwgAMIcQADCHGAAwhyAAMIcsADCHMAAwhzQAMIdAADCHRAAwh0wAMIdQADCHWAAwh2QAMIdoADCHbAAwh3gAMId8ADCHkAAwh/QAMIgYADCIIAAwiCgAMIhMADCIWAAwiGQAMIhsADCJkAAwiiAAMIq8ADCLTAAwi1gAMItgADCLaAAwi3AAMIt4ADCLgAAwi4QAMIuQADCL9AAwjHgAMIyAADCMiAAwjJAAMIyYADCMoAAwjKgAMIywADCMuAAwjTwAMI1IADCNVAAwjWAAMI1sADCNeAAwjYQAMI2QADCNnAAwjaQAMI+QADCPmAAwj6AAMI+oADCPtAAwj7gAMI+8ADCPwAAwj8QAMI/MADCP1AAwj9gAMI/cADCP5AAwj+gAMJHUADCR3AAwkeQAMJHsADCR+AAwkfwAMJIAADCSBAAwkggAMJIQADCSGAAwkhwAMJIgADCSKAAwkiwAMJQYADCUIAAwlCwAMJQ0ADCUQAAwlEQAMJRIADCUTAAwlFAAMJRYADCUYAAwlGQAMJRoADCUcAAwlHQAMJTYADCU3AAwlOAAMJToADCW1AAwltwAMJbkADCW7AAwlvgAMJb8ADCXAAAwlwQAMJcIADCXEAAwlxgAMJccADCXIAAwlygAMJcsADCZGAAwmSAAMJkoADCZMAAwmTwAMJlAADCZRAAwmUgAMJlMADCZVAAwmVwAMJlgADCZZAAwmWwAMJlwADCbXAAwm2QAMJtsADCbdAAwm4AAMJuEADCbiAAwm4wAMJuQADCbmAAwm6AAMJukADCbqAAwm7AAMJu0ADCdoAAwnagAMJ2wADCduAAwncQAMJ3IADCdzAAwndAAMJ3UADCd3AAwneQAMJ3oADCd7AAwnfQAMJ34ADCf5AAwn+wAMJ/0ADCf/AAwoAgAMKAMADCgEAAwoBQAMKAYADCgIAAwoCgAMKAsADCgMAAwoDgAMKA8ADChYAAwofAAMKKMADCjHAAwoygAMKMwADCjOAAwo0AAMKNIADCjUAAwo1QAMKNgADCjxAAwpDgAMKRAADCkSAAwpFAAMKRYADCkYAAwpGgAMKRwADCk5AAwpPAAMKT8ADClCAAwpRQAMKUgADClLAAwpTgAMKVAADCnLAAwpzQAMKc8ADCnRAAwp1AAMKdUADCnWAAwp1wAMKdgADCnaAAwp3AAMKd0ADCneAAwp4AAMKeEADCpcAAwqXgAMKmAADCpiAAwqZQAMKmYADCpnAAwqaAAMKmkADCprAAwqbQAMKm4ADCpvAAwqcQAMKnIADCrtAAwq7wAMKvEADCrzAAwq9gAMKvcADCr4AAwq+QAMKvoADCr8AAwq/gAMKv8ADCsAAAwrAgAMKwMADCt+AAwrgAAMK4IADCuEAAwrhwAMK4gADCuJAAwrigAMK4sADCuNAAwrjwAMK5AADCuRAAwrkwAMK5QADCwPAAwsEQAMLBMADCwVAAwsGAAMLBkADCwaAAwsGwAMLBwADCweAAwsIAAMLCEADCwiAAwsJAAMLCUADCygAAwsogAMLKUADCynAAwsqgAMLKsADCysAAwsrQAMLK4ADCywAAwssgAMLLMADCy0AAwstgAMLLcADCzPAAwtSgAMLUwADC1OAAwtUAAMLVMADC1UAAwtVQAMLVYADC1XAAwtWQAMLVsADC1cAAwtXQAMLV8ADC1gAAwt8wAMLhYADC42AAwuVgAMLlgADC5aAAwuXAAMLl4ADC5hAAwuYgAMLmMADC5mAAwuZwAMLmkADC5qAAwubQAMLnAADC5xAAwucgAMLnUADC52AAwuewAMLpQADC6dAAwunwAMLqIADC6rAAwurgAMLrEADC6zAAwu/AAMLyAADC9HAAwvawAML24ADC9wAAwvcgAML3QADC92AAwveAAML3kADC98AAwvlQAML7YADC+4AAwvugAML7wADC++AAwvwAAML8IADC/EAAwvxgAML+cADC/qAAwv7QAML/AADC/zAAwv9gAML/kADC/8AAwv/wAMMAEADDB8AAwwfgAMMIAADDCCAAwwhQAMMIYADDCHAAwwiAAMMIkADDCLAAwwjQAMMI4ADDCPAAwwkQAMMJIADDENAAwxDwAMMREADDETAAwxFgAMMRcADDEYAAwxGQAMMRoADDEcAAwxHgAMMR8ADDEgAAwxIgAMMSMADDGeAAwxoAAMMaMADDGlAAwxqAAMMakADDGqAAwxqwAMMawADDGuAAwxsAAMMbEADDGyAAwxtAAMMbUADDHOAAwxzwAMMdAADDHSAAwyTQAMMk8ADDJRAAwyUwAMMlYADDJXAAwyWAAMMlkADDJaAAwyXAAMMl4ADDJfAAwyYAAMMmIADDJjAAwy3gAMMuAADDLiAAwy5AAMMucADDLoAAwy6QAMMuoADDLrAAwy7QAMMu8ADDLwAAwy8QAMMvMADDL0AAwzbwAMM3EADDNzAAwzdQAMM3gADDN5AAwzegAMM3sADDN8AAwzfgAMM4AADDOBAAwzggAMM4QADDOFAAw0AAAMNAIADDQEAAw0BgAMNAkADDQKAAw0CwAMNAw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ADE+RAAxPkwAMT5QADE+WAAxPmQAMT5oADE+bAAxPngAMT58ADE+kAAxPvQAMT8YADE/IAAxPygAMT9MADE/WAAxP2QAMT9sADFAkAAxQSAAMUG8ADFCTAAxQlgAMUJgADFCaAAxQnAAMUJ4ADFCgAAxQoQAMUKQADFC9AAxQ3gAMUOAADFDiAAxQ5AAMUOYADFDoAAxQ6gAMUOwADFDuAAxRDwAMURIADFEVAAxRGAAMURsADFEeAAxRIQAMUSQADFEnAAxRKQAMUaQADFGmAAxRqAAMUaoADFGtAAxRrgAMUa8ADFGwAAxRsQAMUbMADFG1AAxRtgAMUbcADFG5AAxRugAMUjUADFI3AAxSOQAMUjsADFI+AAxSPwAMUkAADFJBAAxSQgAMUkQADFJGAAxSRwAMUkgADFJKAAxSSwAMUsYADFLIAAxSywAMUs0ADFLQAAxS0QAMUtIADFLTAAxS1AAMUtYADFLYAAxS2QAMUtoADFLcAAxS3QAMUvYADFL3AAxS+AAMUvoADFN1AAxTdwAMU3kADFN7AAxTfgAMU38ADFOAAAxTgQAMU4IADFOEAAxThgAMU4cADFOIAAxTigAMU4sADFQGAAxUCAAMVAoADFQMAAxUDwAMVBAADFQRAAxUEgAMVBMADFQVAAxUFwAMVBgADFQZAAxUGwAMVBwADFSXAAxUmQAMVJsADFSdAAxUoAAMVKEADFSiAAxUowAMVKQADFSmAAxUqAAMVKkADFSqAAxUrAAMVK0ADFUoAAxVKgAMVSwADFUuAAxVMQAMVTIADFUzAAxVNAAMVTUADFU3AAxVOQAMVToADFU7AAxVPQAMVT4ADFW5AAxVuwAMVb0ADFW/AAxVwgAMVcMADFXEAAxVxQAMVcYADFXIAAxVygAMVcsADFXMAAxVzgAMVc8ADFYYAAxWPAAMVmMADFaHAAxWigAMVowADFaOAAxWkAAMVpIADFaUAAxWlQAMVpgADFaxAAxWzgAMVtAADFbSAAxW1AAMVtYADFbYAAxW2gAMVtwADFb5AAxW/AAMVv8ADFcCAAxXBQAMVwgADFcLAAxXDgAMVxAADFeLAAxXjQAMV48ADFeRAAxXlAAMV5UADFeWAAxXlwAMV5gADFeaAAxXnAAMV50ADFeeAAxXoAAMV6EADFgcAAxYHgAMWCAADFgiAAxYJQAMWCYADFgnAAxYKAAMWCkADFgrAAxYLQAMWC4ADFgvAAxYMQAMWDIADFitAAxYrwAMWLEADFizAAxYtgAMWLcADFi4AAxYuQAMWLoADFi8AAxYvgAMWL8ADFjAAAxYwgAMWMMADFk+AAxZQAAMWUIADFlEAAxZRwAMWUgADFlJAAxZSgAMWUsADFlNAAxZTwAMWVAADFlRAAxZUwAMWVQADFnPAAxZ0QAMWdMADFnVAAxZ2AAMWdkADFnaAAxZ2wAMWdwADFneAAxZ4AAMWeEADFniAAxZ5AAMWeUADFpgAAxaYgAMWmUADFpnAAxaagAMWmsADFpsAAxabQAMWm4ADFpwAAxacgAMWnMADFp0AAxadgAMWncADFqWAAxbEQAMWxMADFsVAAxbFwAMWxoADFsbAAxbHAAMWx0ADFseAAxbIAAMWyIADFsjAAxbJAAMWyYADFsnAAxbugAMW90ADFv9AAxcHQAMXB8ADFwhAAxcIwAMXCUADFwoAAxcKQAMXCoADFwtAAxcLgAMXDAADFwxAAxcNAAMXDcADFw4AAxcOQAMXDwADFw9AAxcQgAMXFsADFxkAAxcZgAMXGkADFxyAAxcdQAMXHgADFx6AAxcwwAMXOcADF0OAAxdMgAMXTUADF03AAxdOQAMXTsADF09AAxdPwAMXUAADF1DAAxdXAAMXX0ADF1/AAxdgQAMXYMADF2FAAxdhwAMXYkADF2LAAxdjQAMXa4ADF2xAAxdtAAMXbcADF26AAxdvQAMXcAADF3DAAxdxgAMXcgADF5DAAxeRQAMXkcADF5JAAxeTAAMXk0ADF5OAAxeTwAMXlAADF5SAAxeVAAMXlUADF5WAAxeWAAMXlkADF7UAAxe1gAMXtgADF7aAAxe3QAMXt4ADF7fAAxe4AAMXuEADF7jAAxe5QAMXuYADF7nAAxe6QAMXuoADF9lAAxfZwAMX2oADF9sAAxfbwAMX3AADF9xAAxfcgAMX3MADF91AAxfdwAMX3gADF95AAxfewAMX3wADF+VAAxflgAMX5cADF+ZAAxgFAAMYBYADGAYAAxgGgAMYB0ADGAeAAxgHwAMYCAADGAhAAxgIwAMYCUADGAmAAxgJwAMYCkADGAqAAxgpQAMYKcADGCpAAxgqwAMYK4ADGCvAAxgsAAMYLEADGCyAAxgtAAMYLYADGC3AAxguAAMYLoADGC7AAxhNgAMYTgADGE6AAxhPAAMYT8ADGFAAAxhQQAMYUIADGFDAAxhRQAMYUcADGFIAAxhSQAMYUsADGFMAAxhxwAMYckADGHLAAxhzQAMYdAADGHRAAxh0gAMYdMADGHUAAxh1gAMYdgADGHZAAxh2gAMYdwADGHdAAxiWAAMYloADGJcAAxiXgAMYmEADGJiAAxiYwAMYmQADGJlAAxiZwAMYmkADGJqAAxiawAMYm0ADGJuAAxitwAMYtsADGMCAAxjJgAMYykADGMsAAxjLgAMYzAADGMyAAxjNAAMYzUADGM4AAxjUQAMY24ADGNxAAxjdAAMY3cADGN6AAxjfQAMY4AADGODAAxjoAAMY6MADGOmAAxjqQAMY6wADGOvAAxjsgAMY7UADGO3AAxkMgAMZDQADGQ3AAxkOQAMZDwADGQ9AAxkPgAMZD8ADGRAAAxkQgAMZEUADGRGAAxkRwAMZEkADGRKAAxkxQAMZMcADGTKAAxkzAAMZM8ADGTQAAxk0QAMZNIADGTTAAxk1QAMZNgADGTZAAxk2gAMZNwADGTdAAxlWAAMZVoADGVdAAxlXwAMZWIADGVjAAxlZAAMZWUADGVmAAxlaAAMZWsADGVsAAxlbQAMZW8ADGVwAAxl6wAMZe0ADGXwAAxl8gAMZfUADGX2AAxl9wAMZfgADGX5AAxl+wAMZf4ADGX/AAxmAAAMZgIADGYDAAxmfgAMZoAADGaCAAxmhAAMZocADGaIAAxmiQAMZooADGaLAAxmjQAMZpAADGaRAAxmkgAMZpQADGaVAAxnEAAMZxIADGcUAAxnFgAMZxkADGcaAAxnGwAMZxwADGcdAAxnHwAMZyIADGcjAAxnJAAMZyYADGcnAAxnogAMZ6QADGenAAxnqQAMZ6wADGetAAxnrgAMZ68ADGewAAxnsgAMZ7UADGe2AAxntwAMZ7kADGe6AAxnywAMZ8wADGfOAAxoSQAMaEsADGhNAAxoTwAMaFIADGhTAAxoVAAMaFUADGhWAAxoWAAMaFsADGhcAAxoXQAMaF8ADGhgAAxo2wAMaN0ADGjfAAxo4QAMaOQADGjlAAxo5gAMaOcADGjoAAxo6gAMaO0ADGjuAAxo7wAMaPEADGjyAAxpbQAMaW8ADGlyAAxpdAAMaXcADGl4AAxpeQAMaXoADGl7AAxpfQAMaYAADGmBAAxpggAMaYQADGmFAAxqGAAMajsADGpbAAxqewAMan0ADGp/AAxqgQAMaoMADGqGAAxqhwAMaogADGqLAAxqjAAMao4ADGqPAAxqkgAMapUADGqWAAxqlwAMapoADGqbAAxqoAAMarkADGrCAAxqxAAMascADGrQAAxq0wAMatYADGrYAAxrIQAMa0UADGtsAAxrkAAMa5MADGuVAAxrlwAMa5kADGubAAxrnQAMa54ADGuhAAxrugAMa9sADGvdAAxr3wAMa+EADGvjAAxr5QAMa+cADGvpAAxr6wAMbAwADGwPAAxsEgAMbBUADGwYAAxsGwAMbB4ADGwhAAxsJAAMbCYADGyhAAxsowAMbKUADGynAAxsqgAMbKsADGysAAxsrQAMbK4ADGywAAxssgAMbLMADGy0AAxstgAMbLcADG0yAAxtNAAMbTYADG04AAxtOwAMbTwADG09AAxtPgAMbT8ADG1BAAxtQwAMbUQADG1FAAxtRwAMbUgADG3DAAxtxQAMbcgADG3KAAxtzQAMbc4ADG3PAAxt0AAMbdEADG3TAAxt1QAMbdYADG3XAAxt2QAMbdoADG3zAAxt9AAMbfUADG33AAxucgAMbnQADG52AAxueAAMbnsADG58AAxufQAMbn4ADG5/AAxugQAMboMADG6EAAxuhQAMbocADG6IAAxvAwAMbwUADG8HAAxvCQAMbwwADG8NAAxvDgAMbw8ADG8QAAxvEgAMbxQADG8VAAxvFgAMbxgADG8ZAAxvlAAMb5YADG+YAAxvmgAMb50ADG+eAAxvnwAMb6AADG+hAAxvowAMb6UADG+mAAxvpwAMb6kADG+qAAxwJQAMcCcADHApAAxwKwAMcC4ADHAvAAxwMAAMcDEADHAyAAxwNAAMcDYADHA3AAxwOAAMcDoADHA7AAxwtgAMcLgADHC6AAxwvAAMcL8ADHDAAAxwwQAMcMIADHDDAAxwxQAMcMcADHDIAAxwyQAMcMsADHDMAAxxFQAMcTkADHFgAAxxhAAMcYcADHGKAAxxjAAMcY4ADHGQAAxxkgAMcZMADHGWAAxxrwAMccwADHHPAAxx0gAMcdUADHHYAAxx2wAMcd4ADHHhAAxx/gAMcgEADHIEAAxyBwAMcgoADHINAAxyEAAMchMADHIVAAxykAAMcpIADHKVAAxylwAMcpoADHKbAAxynAAMcp0ADHKeAAxyoAAMcqMADHKkAAxypQAMcqcADHKoAAxzIwAMcyUADHMoAAxzKgAMcy0ADHMuAAxzLwAMczAADHMxAAxzMwAMczYADHM3AAxzOAAMczoADHM7AAxztgAMc7gADHO7AAxzvQAMc8AADHPBAAxzwgAMc8MADHPEAAxzxgAMc8kADHPKAAxzywAMc80ADHPOAAx0SQAMdEsADHROAAx0UAAMdFMADHRUAAx0VQAMdFYADHRXAAx0WQAMdFwADHRdAAx0XgAMdGAADHRhAAx05AAMdQgADHUsAAx1TwAMdXYADHWWAAx1vQAMdeQADHYEAAx2KAAMdkwADHZOAAx2UQAMdlMADHZVAAx2VwAMdloADHZdAAx2XwAMdmEADHZkAAx2ZgAMdmgADHZrAAx2bgAMdm8ADHZ0AAx2jQAMdpIADHaUAAx2mQAMdpwADHaeAAx25wAMdwsADHcyAAx3VgAMd1kADHdbAAx3XQAMd18ADHdhAAx3YwAMd2QADHdnAAx3gAAMd6UADHenAAx3qQAMd6sADHetAAx3rwAMd7EADHezAAx3tQAMd7cADHfcAAx33wAMd+IADHflAAx36AAMd+sADHfuAAx38QAMd/QADHf3AAx3+QAMeHQADHh2AAx4eQAMeHsADHh+AAx4fwAMeIAADHiBAAx4ggAMeIQADHiGAAx4hwAMeIgADHiKAAx4iwAMeJwADHidAAx4nwAMeRoADHkcAAx5HwAMeSEADHkkAAx5JQAMeSYADHknAAx5KAAMeSoADHksAAx5LQAMeS4ADHkwAAx5MQAMeWAADHnbAAx53QAMeeAADHniAAx55QAMeeYADHnnAAx56AAMeekADHnrAAx57QAMee4ADHnvAAx58QAMefIADHoDAAx6BAAMegYADHqBAAx6gwAMeoUADHqHAAx6igAMeosADHqMAAx6jQAMeo4ADHqQAAx6kgAMepMADHqUAAx6lgAMepcADHsSAAx7FAAMexcADHsZAAx7HAAMex0ADHseAAx7HwAMeyAADHsiAAx7JAAMeyUADHsmAAx7KAAMeykADHs6AAx7OwAMez0ADHu4AAx7ugAMe7wADHu+AAx7wQAMe8IADHvDAAx7xAAMe8UADHvHAAx7yQAMe8oADHvLAAx7zQAMe84ADHxJAAx8SwAMfE4ADHxQAAx8UwAMfFQADHxVAAx8VgAMfFcADHxZAAx8WwAMfFwADHxdAAx8XwAMfGAADHx5AAx8egAMfHsADHx9AAx8+AAMfPoADHz8AAx8/gAMfQEADH0CAAx9AwAMfQQADH0FAAx9BwAMfQkADH0KAAx9CwAMfQ0ADH0OAAx9iQAMfYsADH2OAAx9kAAMfZMADH2UAAx9lQAMfZYADH2XAAx9mQAMfZsADH2cAAx9nQAMfZ8ADH2gAAx91QAMfe4ADH3/AAx+AgAMfgUADH4IAAx+CwAMfhwADH4fAAx+IgAMfiUADH4oAAx+KgAMfj8ADH5XAAx+bQAMfoAADH8TAAx/NgAMf1YADH92AAx/eAAMf3oADH98AAx/fgAMf4EADH+CAAx/gwAMf4YADH+HAAx/iQAMf4oADH+MAAx/jwAMf5AADH+RAAx/lAAMf5UADH+eAAx/twAMf8AADH/CAAx/xAAMf80ADH/QAAx/0wAMf9UADIAeAAyAQgAMgGkADICNAAyAkAAMgJIADICUAAyAlgAMgJgADICaAAyAmwAMgJ4ADIC3AAyA2AAMgNoADIDcAAyA3gAMgOAADIDiAAyA5AAMgOYADIDoAAyBCQAMgQwADIEPAAyBEgAMgRUADIEYAAyBGwAMgR4ADIEhAAyBIwAMgZ4ADIGgAAyBogAMgaQADIGnAAyBqAAMgakADIGqAAyBqwAMga0ADIGvAAyBsAAMgbEADIGzAAyBtAAMgi8ADIIxAAyCMwAMgjUADII4AAyCOQAMgjoADII7AAyCPAAMgj4ADIJAAAyCQQAMgkIADIJEAAyCRQAMgsAADILCAAyCxQAMgscADILKAAyCywAMgswADILNAAyCzgAMgtAADILSAAyC0wAMgtQADILWAAyC1wAMgvAADILxAAyC8gAMgvQADINvAAyDcQAMg3MADIN1AAyDeAAMg3kADIN6AAyDewAMg3wADIN+AAyDgAAMg4EADIOCAAyDhAAMg4UADIQAAAyEAgAMhAQADIQGAAyECQAMhAoADIQLAAyEDAAMhA0ADIQPAAyEEQAMhBIADIQTAAyEFQAMhBYADISRAAyEkwAMhJUADISXAAyEmgAMhJsADIScAAyEnQAMhJ4ADISgAAyEogAMhKMADISkAAyEpgAMhKcADIUiAAyFJAAMhSYADIUoAAyFKwAMhSwADIUtAAyFLgAMhS8ADIUxAAyFMwAMhTQADIU1AAyFNwAMhTgADIWzAAyFtQAMhbcADIW5AAyFvAAMhb0ADIW+AAyFvwAMhcAADIXCAAyFxAAMhcUADIXGAAyFyAAMhckADIYSAAyGNgAMhl0ADIaBAAyGhAAMhoYADIaIAAyGigAMhowADIaOAAyGjwAMhpIADIarAAyGyAAMhsoADIbMAAyGzgAMhtAADIbSAAyG1AAMhtYADIbzAAyG9gAMhvkADIb8AAyG/wAMhwIADIcFAAyHCAAMhwoADIeFAAyHhwAMh4kADIeLAAyHjgAMh48ADIeQAAyHkQAMh5IADIeUAAyHlgAMh5cADIeYAAyHmgAMh5sADIgWAAyIGAAMiBoADIgcAAyIHwAMiCAADIghAAyIIgAMiCMADIglAAyIJwAMiCgADIgpAAyIKwAMiCwADIinAAyIqQAMiKsADIitAAyIsAAMiLEADIiyAAyIswAMiLQADIi2AAyIuAAMiLkADIi6AAyIvAAMiL0ADIk4AAyJOgAMiTwADIk+AAyJQQAMiUIADIlDAAyJRAAMiUUADIlHAAyJSQAMiUoADIlLAAyJTQAMiU4ADInJAAyJywAMic0ADInPAAyJ0gAMidMADInUAAyJ1QAMidYADInYAAyJ2gAMidsADIncAAyJ3gAMid8ADIpaAAyKXAAMil8ADIphAAyKZAAMimUADIpmAAyKZwAMimgADIpqAAyKbAAMim0ADIpuAAyKcAAMinEADIqAAAyK+wAMiv0ADIr/AAyLAQAMiwQADIsFAAyLBgAMiwcADIsIAAyLCgAMiwwADIsNAAyLDgAMixAADIsRAAyLpAAMi8cADIvnAAyMBwAMjAkADIwLAAyMDQAMjA8ADIwSAAyMEwAMjBQADIwXAAyMGAAMjBoADIwbAAyMHQAMjCAADIwhAAyMIgAMjCUADIwmAAyMKwAMjEQADIxNAAyMTwAMjFEADIxaAAyMXQAMjGAADIxiAAyMqwAMjM8ADIz2AAyNGgAMjR0ADI0fAAyNIQAMjSMADI0lAAyNJwAMjSgADI0rAAyNRAAMjWUADI1nAAyNaQAMjWsADI1tAAyNbwAMjXEADI1zAAyNdQAMjZYADI2ZAAyNnAAMjZ8ADI2iAAyNpQAMjagADI2rAAyNrgAMjbAADI4rAAyOLQAMji8ADI4xAAyONAAMjjUADI42AAyONwAMjjgADI46AAyOPAAMjj0ADI4+AAyOQAAMjkEADI68AAyOvgAMjsAADI7CAAyOxQAMjsYADI7HAAyOyAAMjskADI7LAAyOzQAMjs4ADI7PAAyO0QAMjtIADI9NAAyPTwAMj1IADI9UAAyPVwAMj1gADI9ZAAyPWgAMj1sADI9dAAyPXwAMj2AADI9hAAyPYwAMj2QADI99AAyPfgAMj38ADI+BAAyP/AAMj/4ADJAAAAyQAgAMkAUADJAGAAyQBwAMkAgADJAJAAyQCwAMkA0ADJAOAAyQDwAMkBEADJASAAyQjQAMkI8ADJCRAAyQkwAMkJYADJCXAAyQmAAMkJkADJCaAAyQnAAMkJ4ADJCfAAyQoAAMkKIADJCjAAyRHgAMkSAADJEiAAyRJAAMkScADJEoAAyRKQAMkSoADJErAAyRLQAMkS8ADJEwAAyRMQAMkTMADJE0AAyRrwAMkbEADJGzAAyRtQAMkbgADJG5AAyRugAMkbsADJG8AAyRvgAMkcAADJHBAAyRwgAMkcQADJHFAAySQAAMkkIADJJEAAySRgAMkkkADJJKAAySSwAMkkwADJJNAAySTwAMklEADJJSAAySUwAMklUADJJWAAySnwAMksMADJLqAAyTDgAMkxEADJMTAAyTFQAMkxcADJMZAAyTGwAMkxwADJMfAAyTOAAMk1UADJNXAAyTWQAMk1sADJNdAAyTXwAMk2EADJNjAAyTgAAMk4MADJOGAAyTiQAMk4wADJOPAAyTkgAMk5UADJOXAAyUEgAMlBQADJQWAAyUGAAMlBsADJQcAAyUHQAMlB4ADJQfAAyUIQAMlCMADJQkAAyUJQAMlCcADJQoAAyUowAMlKUADJSnAAyUqQAMlKwADJStAAyUrgAMlK8ADJSwAAyUsgAMlLQADJS1AAyUtgAMlLgADJS5AAyVNAAMlTYADJU4AAyVOgAMlT0ADJU+AAyVPwAMlUAADJVBAAyVQwAMlUUADJVGAAyVRwAMlUkADJVKAAyVxQAMlccADJXJAAyVywAMlc4ADJXPAAyV0AAMldEADJXSAAyV1AAMldYADJXXAAyV2AAMldoADJXbAAyWVgAMllgADJZaAAyWXAAMll8ADJZgAAyWYQAMlmIADJZjAAyWZQAMlmcADJZoAAyWaQAMlmsADJZsAAyW5wAMlukADJbsAAyW7gAMlvEADJbyAAyW8wAMlvQADJb1AAyW9wAMlvkADJb6AAyW+wAMlv0ADJb+AAyXHQAMl5gADJeaAAyXnAAMl54ADJehAAyXogAMl6MADJekAAyXpQAMl6cADJepAAyXqgAMl6sADJetAAyXrgAMmEEADJhkAAyYhAAMmKQADJimAAyYqAAMmKoADJisAAyYrwAMmLAADJixAAyYtAAMmLUADJi3AAyYuAAMmLoADJi9AAyYvgAMmL8ADJjCAAyYwwAMmMgADJjhAAyY6gAMmOwADJjuAAyY9wAMmPoADJj9AAyY/wAMmUgADJlsAAyZkwAMmbcADJm6AAyZvAAMmb4ADJnAAAyZwgAMmcQADJnFAAyZyAAMmeEADJoCAAyaBAAMmgYADJoIAAyaCgAMmgwADJoOAAyaEAAMmhIADJozAAyaNgAMmjkADJo8AAyaPwAMmkIADJpFAAyaSAAMmksADJpNAAyayAAMmsoADJrMAAyazgAMmtEADJrSAAya0wAMmtQADJrVAAya1wAMmtkADJraAAya2wAMmt0ADJreAAybWQAMm1sADJtdAAybXwAMm2IADJtjAAybZAAMm2UADJtmAAybaAAMm2oADJtrAAybbAAMm24ADJtvAAyb6gAMm+wADJvvAAyb8QAMm/QADJv1AAyb9gAMm/cADJv4AAyb+gAMm/wADJv9AAyb/gAMnAAADJwBAAycGgAMnBsADJwcAAycHgAMnJkADJybAAycnQAMnJ8ADJyiAAycowAMnKQADJylAAycpgAMnKgADJyqAAycqwAMnKwADJyuAAycrwAMnSoADJ0sAAydLgAMnTAADJ0zAAydNAAMnTUADJ02AAydNwAMnTkADJ07AAydPAAMnT0ADJ0/AAydQAAMnbsADJ29AAydvwAMncEADJ3EAAydxQAMncYADJ3HAAydyAAMncoADJ3MAAydzQAMnc4ADJ3QAAyd0QAMnkwADJ5OAAyeUAAMnlIADJ5VAAyeVgAMnlcADJ5YAAyeWQAMnlsADJ5dAAyeXgAMnl8ADJ5hAAyeYgAMnt0ADJ7fAAye4QAMnuMADJ7mAAye5wAMnugADJ7pAAye6gAMnuwADJ7uAAye7wAMnvAADJ7yAAye8wAMnzwADJ9gAAyfhwAMn6sADJ+uAAyfsAAMn7IADJ+0AAyftgAMn7gADJ+5AAyfvAAMn9UADJ/yAAyf9AAMn/YADJ/4AAyf+gAMn/wADJ/+AAygAAAMoB0ADKAgAAygIwAMoCYADKApAAygLAAMoC8ADKAyAAygNAAMoK8ADKCxAAygswAMoLUADKC4AAyguQAMoLoADKC7AAygvAAMoL4ADKDAAAygwQAMoMIADKDEAAygxQAMoUAADKFCAAyhRAAMoUYADKFJAAyhSgAMoUsADKFMAAyhTQAMoU8ADKFRAAyhUgAMoVMADKFVAAyhVgAModEADKHTAAyh1QAModcADKHaAAyh2wAModwADKHdAAyh3gAMoeAADKHiAAyh4wAMoeQADKHmAAyh5wAMomIADKJkAAyiZgAMomgADKJrAAyibAAMom0ADKJuAAyibwAMonEADKJzAAyidAAMonUADKJ3AAyieAAMovMADKL1AAyi9wAMovkADKL8AAyi/QAMov4ADKL/AAyjAAAMowIADKMEAAyjBQAMowYADKMIAAyjCQAMo4QADKOGAAyjiQAMo4sADKOOAAyjjwAMo5AADKORAAyjkgAMo5QADKOWAAyjlwAMo5gADKOaAAyjmwAMo7oADKQ1AAykNwAMpDkADKQ7AAykPgAMpD8ADKRAAAykQQAMpEIADKREAAykRgAMpEcADKRIAAykSgAMpEsADKTeAAylAQAMpSEADKVBAAylQwAMpUUADKVHAAylSQAMpUwADKVNAAylTgAMpVEADKVSAAylVAAMpVUADKVYAAylWwAMpVwADKVdAAylYAAMpWEADKVmAAylfwAMpYgADKWKAAyljQAMpZYADKWZAAylnAAMpZ4ADKXnAAymCwAMpjIADKZWAAymWQAMplsADKZdAAymXwAMpmEADKZjAAymZAAMpmcADKaAAAymoQAMpqMADKalAAympwAMpqkADKarAAymrQAMpq8ADKaxAAym0gAMptUADKbYAAym2wAMpt4ADKbhAAym5AAMpucADKbqAAym7AAMp2cADKdpAAynawAMp20ADKdwAAyncQAMp3IADKdzAAyndAAMp3YADKd4AAyneQAMp3oADKd8AAynfQAMp/gADKf6AAyn/AAMp/4ADKgBAAyoAgAMqAMADKgEAAyoBQAMqAcADKgJAAyoCgAMqAsADKgNAAyoDgAMqIkADKiLAAyojgAMqJAADKiTAAyolAAMqJUADKiWAAyolwAMqJkADKibAAyonAAMqJ0ADKifAAyooAAMqLkADKi6AAyouwAMqL0ADKk4AAypOgAMqTwADKk+AAypQQAMqUIADKlDAAypRAAMqUUADKlHAAypSQAMqUoADKlLAAypTQAMqU4ADKnJAAypywAMqc0ADKnPAAyp0gAMqdMADKnUAAyp1QAMqdYADKnYAAyp2gAMqdsADKncAAyp3gAMqd8ADKpaAAyqXAAMql4ADKpgAAyqYwAMqmQADKplAAyqZgAMqmcADKppAAyqawAMqmwADKptAAyqbwAMqnAADKrrAAyq7QAMqu8ADKrxAAyq9AAMqvUADKr2AAyq9wAMqvgADKr6AAyq/AAMqv0ADKr+AAyrAAAMqwEADKt8AAyrfgAMq4AADKuCAAyrhQAMq4YADKuHAAyriAAMq4kADKuLAAyrjQAMq44ADKuPAAyrkQAMq5IADKvbAAyr/wAMrCYADKxKAAysTQAMrFAADKxSAAysVAAMrFYADKxYAAysWQAMrFwADKx1AAyskgAMrJUADKyYAAysmwAMrJ4ADKyhAAyspAAMrKcADKzEAAysxwAMrMoADKzNAAys0AAMrNMADKzWAAys2QAMrNsADK1WAAytWAAMrVsADK1dAAytYAAMrWEADK1iAAytYwAMrWQADK1mAAytaQAMrWoADK1rAAytbQAMrW4ADK3pAAyt6wAMre4ADK3wAAyt8wAMrfQADK31AAyt9gAMrfcADK35AAyt/AAMrf0ADK3+AAyuAAAMrgEADK58AAyufgAMroEADK6DAAyuhgAMrocADK6IAAyuiQAMrooADK6MAAyujwAMrpAADK6RAAyukwAMrpQADK8PAAyvEQAMrxQADK8WAAyvGQAMrxoADK8bAAyvHAAMrx0ADK8fAAyvIgAMryMADK8kAAyvJgAMrycADK+iAAyvpAAMr6YADK+oAAyvqwAMr6wADK+tAAyvrgAMr68ADK+xAAyvtAAMr7UADK+2AAyvuAAMr7kADLA0AAywNgAMsDgADLA6AAywPQAMsD4ADLA/AAywQAAMsEEADLBDAAywRgAMsEcADLBIAAywSgAMsEsADLDGAAywyAAMsMsADLDNAAyw0AAMsNEADLDSAAyw0wAMsNQADLDWAAyw2QAMsNoADLDbAAyw3QAMsN4ADLDvAAyw8AAMsPIADLFtAAyxbwAMsXEADLFzAAyxdgAMsXcADLF4AAyxeQAMsXoADLF8AAyxfwAMsYAADLGBAAyxgwAMsYQADLH/AAyyAQAMsgMADLIFAAyyCAAMsgkADLIKAAyyCwAMsgwADLIOAAyyEQAMshIADLITAAyyFQAMshYADLKRAAyykwAMspYADLKYAAyymwAMspwADLKdAAyyngAMsp8ADLKhAAyypAAMsqUADLKmAAyyqAAMsqkADLM8AAyzXwAMs38ADLOfAAyzoQAMs6MADLOlAAyzpwAMs6oADLOrAAyzrAAMs68ADLOwAAyzsgAMs7MADLO1AAyzuAAMs7kADLO6AAyzvQAMs74ADLPDAAyz3AAMs+UADLPnAAyz6QAMs/IADLP1AAyz+AAMs/oADLRDAAy0ZwAMtI4ADLSyAAy0tQAMtLcADLS5AAy0uwAMtL0ADLS/AAy0wAAMtMMADLTcAAy0/QAMtP8ADLUBAAy1AwAMtQUADLUHAAy1CQAMtQsADLUNAAy1LgAMtTEADLU0AAy1NwAMtToADLU9AAy1QAAMtUMADLVGAAy1SAAMtcMADLXFAAy1xwAMtckADLXMAAy1zQAMtc4ADLXPAAy10AAMtdIADLXUAAy11QAMtdYADLXYAAy12QAMtlQADLZWAAy2WAAMtloADLZdAAy2XgAMtl8ADLZgAAy2YQAMtmMADLZlAAy2ZgAMtmcADLZpAAy2agAMtuUADLbnAAy26gAMtuwADLbvAAy28AAMtvEADLbyAAy28wAMtvUADLb3AAy2+AAMtvkADLb7AAy2/AAMtxUADLcWAAy3FwAMtxkADLeUAAy3lgAMt5gADLeaAAy3nQAMt54ADLefAAy3oAAMt6EADLejAAy3pQAMt6YADLenAAy3qQAMt6oADLglAAy4JwAMuCkADLgrAAy4LgAMuC8ADLgwAAy4MQAMuDIADLg0AAy4NgAMuDcADLg4AAy4OgAMuDsADLi2AAy4uAAMuLoADLi8AAy4vwAMuMAADLjBAAy4wgAMuMMADLjFAAy4xwAMuMgADLjJAAy4ywAMuMwADLlHAAy5SQAMuUsADLlNAAy5UAAMuVEADLlSAAy5UwAMuVQADLlWAAy5WAAMuVkADLlaAAy5XAAMuV0ADLnYAAy52gAMudwADLneAAy54QAMueIADLnjAAy55AAMueUADLnnAAy56QAMueoADLnrAAy57QAMue4ADLo3AAy6WwAMuoIADLqmAAy6qQAMuqsADLqtAAy6rwAMurEADLqzAAy6tAAMurcADLrQAAy67QAMuu8ADLrxAAy68wAMuvUADLr3AAy6+QAMuvsADLsYAAy7GwAMux4ADLshAAy7JAAMuycADLsqAAy7LQAMuy8ADLuqAAy7rAAMu64ADLuwAAy7swAMu7QADLu1AAy7tgAMu7cADLu5AAy7uwAMu7wADLu9AAy7vwAMu8AADLw7AAy8PQAMvD8ADLxBAAy8RAAMvEUADLxGAAy8RwAMvEgADLxKAAy8TAAMvE0ADLxOAAy8UAAMvFEADLzMAAy8zgAMvNAADLzSAAy81QAMvNYADLzXAAy82AAMvNkADLzbAAy83QAMvN4ADLzfAAy84QAMvOIADL1dAAy9XwAMvWEADL1jAAy9ZgAMvWcADL1oAAy9aQAMvWoADL1sAAy9bgAMvW8ADL1wAAy9cgAMvXMADL3uAAy98AAMvfIADL30AAy99wAMvfgADL35AAy9+gAMvfsADL39AAy9/wAMvgAADL4BAAy+AwAMvgQADL5/AAy+gQAMvoMADL6FAAy+iAAMvokADL6KAAy+iwAMvowADL6OAAy+kAAMvpEADL6SAAy+lAAMvpUADL8QAAy/EgAMvxQADL8WAAy/GQAMvxoADL8bAAy/HAAMvx0ADL8fAAy/IQAMvyIADL8jAAy/JQAMvyYADL+5AAy/3AAMv/wADMAcAAzAHgAMwCAADMAiAAzAJAAMwCcADMAoAAzAKQAMwCwADMAtAAzALwAMwDAADMAzAAzANgAMwDcADMA4AAzAOwAMwDwADMBBAAzAWgAMwGMADMBlAAzAaAAMwHEADMB0AAzAdwAMwHkADMDCAAzA5gAMwQ0ADMExAAzBNAAMwTYADME4AAzBOgAMwTwADME+AAzBPwAMwUIADMFbAAzBfAAMwX4ADMGAAAzBggAMwYQADMGGAAzBiAAMwYoADMGMAAzBrQAMwbAADMGzAAzBtgAMwbkADMG8AAzBvwAMwcIADMHFAAzBxwAMwkIADMJEAAzCRgAMwkgADMJLAAzCTAAMwk0ADMJOAAzCTwAMwlEADMJTAAzCVAAMwlUADMJXAAzCWAAMwtMADMLVAAzC1wAMwtkADMLcAAzC3QAMwt4ADMLfAAzC4AAMwuIADMLkAAzC5QAMwuYADMLoAAzC6QAMw2QADMNmAAzDaQAMw2sADMNuAAzDbwAMw3AADMNxAAzDcgAMw3QADMN2AAzDdwAMw3gADMN6AAzDewAMw5QADMOVAAzDlgAMw5gADMQTAAzEFQAMxBcADMQZAAzEHAAMxB0ADMQeAAzEHwAMxCAADMQiAAzEJAAMxCUADMQmAAzEKAAMxCkADMSkAAzEpgAMxKgADMSqAAzErQAMxK4ADMSvAAzEsAAMxLEADMSzAAzEtQAMxLYADMS3AAzEuQAMxLoADMU1AAzFNwAMxTkADMU7AAzFPgAMxT8ADMVAAAzFQQAMxUIADMVEAAzFRgAMxUcADMVIAAzFSgAMxUsADMXGAAzFyAAMxcoADMXMAAzFzwAMxdAADMXRAAzF0gAMxdMADMXVAAzF1wAMxdgADMXZAAzF2wAMxdwADMZXAAzGWQAMxlsADMZdAAzGYAAMxmEADMZiAAzGYwAMxmQADMZmAAzGaAAMxmkADMZqAAzGbAAMxm0ADMa2AAzG2gAMxwEADMclAAzHKAAMxysADMctAAzHLwAMxzEADMczAAzHNAAMxzcADMdQAAzHbQAMx3AADMdzAAzHdgAMx3kADMd8AAzHfwAMx4IADMefAAzHogAMx6UADMeoAAzHqwAMx64ADMexAAzHtAAMx7YADMgxAAzIMwAMyDYADMg4AAzIOwAMyDwADMg9AAzIPgAMyD8ADMhBAAzIRAAMyEUADMhGAAzISAAMyEkADMjEAAzIxgAMyMkADMjLAAzIzgAMyM8ADMjQAAzI0QAMyNIADMjUAAzI1wAMyNgADMjZAAzI2wAMyNwADMlXAAzJWQAMyVwADMleAAzJYQAMyWIADMljAAzJZAAMyWUADMlnAAzJagAMyWsADMlsAAzJbgAMyW8ADMnqAAzJ7AAMye8ADMnxAAzJ9AAMyfUADMn2AAzJ9wAMyfgADMn6AAzJ/QAMyf4ADMn/AAzKAQAMygIADMqFAAzKqQAMys0ADMrwAAzLFwAMyzcADMteAAzLhQAMy6UADMvJAAzL7QAMy+8ADMvyAAzL9AAMy/YADMv4AAzL+wAMy/4ADMwAAAzMAgAMzAUADMwHAAzMCQAMzAwADMwPAAzMEAAMzBUADMwuAAzMMwAMzDUADMw6AAzMPQAMzD8ADMyIAAzMrAAMzNMADMz3AAzM+gAMzPwADMz+AAzNAAAMzQIADM0EAAzNBQAMzQgADM0hAAzNRgAMzUgADM1KAAzNTAAMzU4ADM1QAAzNUgAMzVQADM1WAAzNWAAMzX0ADM2AAAzNgwAMzYYADM2JAAzNjAAMzY8ADM2SAAzNlQAMzZgADM2aAAzOFQAMzhcADM4aAAzOHAAMzh8ADM4gAAzOIQAMziIADM4jAAzOJQAMzicADM4oAAzOKQAMzisADM4sAAzOPQAMzj4ADM5AAAzOuwAMzr0ADM6/AAzOwQAMzsQADM7FAAzOxgAMzscADM7IAAzOygAMzswADM7NAAzOzgAMztAADM7RAAzPTAAMz04ADM9RAAzPUwAMz1YADM9XAAzPWAAMz1kADM9aAAzPXAAMz14ADM9fAAzPYAAMz2IADM9jAAzPdAAMz3UADM93AAzP8gAMz/QADM/2AAzP+AAMz/sADM/8AAzP/QAMz/4ADM//AAzQAQAM0AMADNAEAAzQBQAM0AcADNAIAAzQgwAM0IUADNCIAAzQigAM0I0ADNCOAAzQjwAM0JAADNCRAAzQkwAM0JUADNCWAAzQlwAM0JkADNCaAAzQqwAM0KwADNCuAAzRKQAM0SsADNEtAAzRLwAM0TIADNEzAAzRNAAM0TUADNE2AAzROAAM0ToADNE7AAzRPAAM0T4ADNE/AAzRugAM0bwADNG/AAzRwQAM0cQADNHFAAzRxgAM0ccADNHIAAzRygAM0cwADNHNAAzRzgAM0dAADNHRAAzR6gAM0esADNHsAAzR7gAM0mkADNJrAAzSbQAM0m8ADNJyAAzScwAM0nQADNJ1AAzSdgAM0ngADNJ6AAzSewAM0nwADNJ+AAzSfwAM0voADNL8AAzS/wAM0wEADNMEAAzTBQAM0wYADNMHAAzTCAAM0woADNMMAAzTDQAM0w4ADNMQAAzTEQAM0zAADNNJAAzTWgAM010ADNNgAAzTYwAM02YADNN3AAzTegAM030ADNOAAAzTgwAM04UADNOaAAzTtAAM088ADNPoAAzUewAM1J4ADNS+AAzU3gAM1OAADNTiAAzU5AAM1OYADNTpAAzU6gAM1OsADNTuAAzU7wAM1PEADNTyAAzU9AAM1PcADNT4AAzU+QAM1PwADNT9AAzVAgAM1RsADNUkAAzVJgAM1SgADNUxAAzVNAAM1TcADNU5AAzVggAM1aYADNXNAAzV8QAM1fQADNX2AAzV+AAM1foADNX8AAzV/gAM1f8ADNYCAAzWGwAM1jwADNY+AAzWQAAM1kIADNZEAAzWRgAM1kgADNZKAAzWTAAM1m0ADNZwAAzWcwAM1nYADNZ5AAzWfAAM1n8ADNaCAAzWhQAM1ocADNcCAAzXBAAM1wYADNcIAAzXCwAM1wwADNcNAAzXDgAM1w8ADNcRAAzXEwAM1xQADNcVAAzXFwAM1xgADNeTAAzXlQAM15cADNeZAAzXnAAM150ADNeeAAzXnwAM16AADNeiAAzXpAAM16UADNemAAzXqAAM16kADNgkAAzYJgAM2CkADNgrAAzYLgAM2C8ADNgwAAzYMQAM2DIADNg0AAzYNgAM2DcADNg4AAzYOgAM2DsADNhUAAzYVQAM2FYADNhYAAzY0wAM2NUADNjXAAzY2QAM2NwADNjdAAzY3gAM2N8ADNjgAAzY4gAM2OQADNjlAAzY5gAM2OgADNjpAAzZZAAM2WYADNloAAzZagAM2W0ADNluAAzZbwAM2XAADNlxAAzZcwAM2XUADNl2AAzZdwAM2XkADNl6AAzZ9QAM2fcADNn5AAzZ+wAM2f4ADNn/AAzaAAAM2gEADNoCAAzaBAAM2gYADNoHAAzaCAAM2goADNoLAAzahgAM2ogADNqKAAzajAAM2o8ADNqQAAzakQAM2pIADNqTAAzalQAM2pcADNqYAAzamQAM2psADNqcAAzbFwAM2xkADNsbAAzbHQAM2yAADNshAAzbIgAM2yMADNskAAzbJgAM2ygADNspAAzbKgAM2ywADNstAAzbdgAM25oADNvBAAzb5QAM2+gADNvqAAzb7AAM2+4ADNvwAAzb8gAM2/MADNv2AAzcDwAM3CwADNwuAAzcMAAM3DIADNw0AAzcNgAM3DgADNw6AAzcVwAM3FoADNxdAAzcYAAM3GMADNxmAAzcaQAM3GwADNxuAAzc6QAM3OsADNztAAzc7wAM3PIADNzzAAzc9AAM3PUADNz2AAzc+AAM3PoADNz7AAzc/AAM3P4ADNz/AAzdegAM3XwADN1+AAzdgAAM3YMADN2EAAzdhQAM3YYADN2HAAzdiQAM3YsADN2MAAzdjQAM3Y8ADN2QAAzeCwAM3g0ADN4PAAzeEQAM3hQADN4VAAzeFgAM3hcADN4YAAzeGgAM3hwADN4dAAzeHgAM3iAADN4hAAzenAAM3p4ADN6gAAzeogAM3qUADN6mAAzepwAM3qgADN6pAAzeqwAM3q0ADN6uAAzerwAM3rEADN6yAAzfLQAM3y8ADN8xAAzfMwAM3zYADN83AAzfOAAM3zkADN86AAzfPAAM3z4ADN8/AAzfQAAM30IADN9DAAzfvgAM38AADN/CAAzfxAAM38cADN/IAAzfyQAM38oADN/LAAzfzQAM388ADN/QAAzf0QAM39MADN/UAAzgTwAM4FEADOBTAAzgVQAM4FgADOBZAAzgWgAM4FsADOBcAAzgXgAM4GAADOBhAAzgYgAM4GQADOBlAAzg+AAM4RsADOE7AAzhWwAM4V0ADOFfAAzhYQAM4WMADOFmAAzhZwAM4WgADOFrAAzhbAAM4W4ADOFvAAzhcQAM4XQADOF1AAzhdgAM4XkADOF6AAzhfwAM4ZgADOGhAAzhowAM4aUADOGuAAzhsQAM4bQADOG2AAzh/wAM4iMADOJKAAzibgAM4nEADOJzAAzidQAM4ncADOJ5AAziewAM4nwADOJ/AAzimAAM4rkADOK7AAzivQAM4r8ADOLBAAziwwAM4sUADOLHAAziyQAM4uoADOLtAAzi8AAM4vMADOL2AAzi+QAM4vwADOL/AAzjAgAM4wQADON/AAzjgQAM44MADOOFAAzjiAAM44kADOOKAAzjiwAM44wADOOOAAzjkAAM45EADOOSAAzjlAAM45UADOQQAAzkEgAM5BQADOQWAAzkGQAM5BoADOQbAAzkHAAM5B0ADOQfAAzkIQAM5CIADOQjAAzkJQAM5CYADOShAAzkowAM5KYADOSoAAzkqwAM5KwADOStAAzkrgAM5K8ADOSxAAzkswAM5LQADOS1AAzktwAM5LgADOTRAAzk0gAM5NMADOTVAAzlUAAM5VIADOVUAAzlVgAM5VkADOVaAAzlWwAM5VwADOVdAAzlXwAM5WEADOViAAzlYwAM5WUADOVmAAzl4QAM5eMADOXlAAzl5wAM5eoADOXrAAzl7AAM5e0ADOXuAAzl8AAM5fIADOXzAAzl9AAM5fYADOX3AAzmcgAM5nQADOZ2AAzmeAAM5nsADOZ8AAzmfQAM5n4ADOZ/AAzmgQAM5oM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ADQC1AA0AtgANAP8ADQEjAA0BSgANAW4ADQFxAA0BdAANAXYADQF4AA0BegANAXwADQF9AA0BgAANAZkADQG2AA0BuQANAbwADQG/AA0BwgANAcUADQHIAA0BywANAegADQHrAA0B7gANAfEADQH0AA0B9wANAfoADQH9AA0B/wANAnoADQJ8AA0CfwANAoEADQKEAA0ChQANAoYADQKHAA0CiAANAooADQKNAA0CjgANAo8ADQKRAA0CkgANAw0ADQMPAA0DEgANAxQADQMXAA0DGAANAxkADQMaAA0DGwANAx0ADQMgAA0DIQANAyIADQMkAA0DJQANA6AADQOiAA0DpQANA6cADQOqAA0DqwANA6wADQOtAA0DrgANA7AADQOzAA0DtAANA7UADQO3AA0DuAANBDMADQQ1AA0EOAANBDoADQQ9AA0EPgANBD8ADQRAAA0EQQANBEMADQRGAA0ERwANBEgADQRKAA0ESwANBMYADQTIAA0EygANBMwADQTPAA0E0AANBNEADQTSAA0E0wANBNUADQTYAA0E2QANBNoADQTcAA0E3QANBVgADQVaAA0FXAANBV4ADQVhAA0FYgANBWMADQVkAA0FZQANBWcADQVqAA0FawANBWwADQVuAA0FbwANBeoADQXsAA0F7wANBfEADQX0AA0F9QANBfYADQX3AA0F+AANBfoADQX9AA0F/gANBf8ADQYBAA0GAgANBhMADQYUAA0GFgANBpEADQaTAA0GlQANBpcADQaaAA0GmwANBpwADQadAA0GngANBqAADQajAA0GpAANBqUADQanAA0GqAANByMADQclAA0HJwANBykADQcsAA0HLQANBy4ADQcvAA0HMAANBzIADQc1AA0HNgANBzcADQc5AA0HOgANB7UADQe3AA0HugANB7wADQe/AA0HwAANB8EADQfCAA0HwwANB8UADQfIAA0HyQANB8oADQfMAA0HzQANCGAADQiDAA0IowANCMMADQjFAA0IxwANCMkADQjLAA0IzgANCM8ADQjQAA0I0wANCNQADQjWAA0I1wANCNkADQjcAA0I3QANCN4ADQjhAA0I4gANCOcADQkAAA0JCQANCQsADQkNAA0JFgANCRkADQkcAA0JHgANCWcADQmLAA0JsgANCdYADQnZAA0J2wANCd0ADQnfAA0J4QANCeMADQnkAA0J5wANCgAADQohAA0KIwANCiUADQonAA0KKQANCisADQotAA0KLwANCjEADQpSAA0KVQANClgADQpbAA0KXgANCmEADQpkAA0KZwANCmoADQpsAA0K5wANCukADQrrAA0K7QANCvAADQrxAA0K8gANCvMADQr0AA0K9gANCvgADQr5AA0K+gANCvwADQr9AA0LeAANC3oADQt8AA0LfgANC4EADQuCAA0LgwANC4QADQuFAA0LhwANC4kADQuKAA0LiwANC40ADQuOAA0MCQANDAsADQwOAA0MEAANDBMADQwUAA0MFQANDBYADQwXAA0MGQANDBsADQwcAA0MHQANDB8ADQwgAA0MOQANDDoADQw7AA0MPQANDLgADQy6AA0MvAANDL4ADQzBAA0MwgANDMMADQzEAA0MxQANDMcADQzJAA0MygANDMsADQzNAA0MzgANDUkADQ1LAA0NTQANDU8ADQ1SAA0NUwANDVQADQ1VAA0NVgANDVgADQ1aAA0NWwANDVwADQ1eAA0NXwANDdoADQ3cAA0N3gANDeAADQ3jAA0N5AANDeUADQ3mAA0N5wANDekADQ3rAA0N7AANDe0ADQ3vAA0N8AANDmsADQ5tAA0ObwANDnEADQ50AA0OdQANDnYADQ53AA0OeAANDnoADQ58AA0OfQANDn4ADQ6AAA0OgQANDvwADQ7+AA0PAAANDwIADQ8FAA0PBgANDwcADQ8IAA0PCQANDwsADQ8NAA0PDgANDw8ADQ8RAA0PEgAND1sADQ9/AA0PpgAND8oADQ/NAA0PzwAND9EADQ/TAA0P1QAND9cADQ/YAA0P2wAND/QADRARAA0QEwANEBUADRAXAA0QGQANEBsADRAdAA0QHwANEDwADRA/AA0QQgANEEUADRBIAA0QSwANEE4ADRBRAA0QUwANEM4ADRDQAA0Q0gANENQADRDXAA0Q2AANENkADRDaAA0Q2wANEN0ADRDfAA0Q4AANEOEADRDjAA0Q5AANEV8ADRFhAA0RYwANEWUADRFoAA0RaQANEWoADRFrAA0RbAANEW4ADRFwAA0RcQANEXIADRF0AA0RdQANEfAADRHyAA0R9AANEfYADRH5AA0R+gANEfsADRH8AA0R/QANEf8ADRIBAA0SAgANEgMADRIFAA0SBgANEoEADRKDAA0ShQANEocADRKKAA0SiwANEowADRKNAA0SjgANEpAADRKSAA0SkwANEpQADRKWAA0SlwANExIADRMUAA0TFgANExgADRMbAA0THAANEx0ADRMeAA0THwANEyEADRMjAA0TJAANEyUADRMnAA0TKAANE6MADROlAA0TqAANE6oADROtAA0TrgANE68ADROwAA0TsQANE7MADRO1AA0TtgANE7cADRO5AA0TugANE9kADRRUAA0UVgANFFgADRRaAA0UXQANFF4ADRRfAA0UYAANFGEADRRjAA0UZQANFGYADRRnAA0UaQANFGoADRR7AA0UfAANFH4ADRT5AA0U+wANFP0ADRT/AA0VAgANFQMADRUEAA0VBQANFQYADRUIAA0VCwANFQwADRUNAA0VDwANFRAADRWLAA0VjQANFY8ADRWRAA0VlAANFZUADRWWAA0VlwANFZgADRWaAA0VnQANFZ4ADRWfAA0VoQANFaIADRYdAA0WHwANFiIADRYkAA0WJwANFigADRYpAA0WKgANFisADRYtAA0WMAANFjEADRYyAA0WNAANFjUADRZGAA0WRwANFkkADRbMAA0W8AANFxQADRc3AA0XXgANF34ADRelAA0XzAANF+wADRgQAA0YNAANGDYADRg5AA0YOwANGD0ADRg/AA0YQgANGEUADRhHAA0YSQANGEwADRhOAA0YUAANGFMADRhWAA0YVwANGFwADRh1AA0YegANGHwADRiBAA0YhAANGIYADRjPAA0Y8wANGRoADRk+AA0ZQQANGUMADRlFAA0ZRwANGUkADRlLAA0ZTAANGU8ADRloAA0ZjQANGY8ADRmRAA0ZkwANGZUADRmXAA0ZmQANGZsADRmdAA0ZnwANGcQADRnHAA0ZygANGc0ADRnQAA0Z0wANGdYADRnZAA0Z3AANGd8ADRnhAA0aXAANGl4ADRphAA0aYwANGmYADRpnAA0aaAANGmkADRpqAA0abAANGm4ADRpvAA0acAANGnIADRpzAA0ahAANGoUADRqHAA0bAgANGwQADRsGAA0bCAANGwsADRsMAA0bDQANGw4ADRsPAA0bEQANGxMADRsUAA0bFQANGxcADRsYAA0bkwANG5UADRuYAA0bmgANG50ADRueAA0bnwANG6AADRuhAA0bowANG6UADRumAA0bpwANG6kADRuqAA0buwANG7wADRu+AA0cOQANHDsADRw9AA0cPwANHEIADRxDAA0cRAANHEUADRxGAA0cSAANHEoADRxLAA0cTAANHE4ADRxPAA0cygANHMwADRzPAA0c0QANHNQADRzVAA0c1gANHNcADRzYAA0c2gANHNwADRzdAA0c3gANHOAADRzhAA0c8gANHPMADRz1AA0dcAANHXIADR10AA0ddgANHXkADR16AA0dewANHXwADR19AA0dfwANHYEADR2CAA0dgwANHYUADR2GAA0eAQANHgMADR4GAA0eCAANHgsADR4MAA0eDQANHg4ADR4PAA0eEQANHhMADR4UAA0eFQANHhcADR4YAA0eMQANHjIADR4zAA0eNQANHrAADR6yAA0etAANHrYADR65AA0eugANHrsADR68AA0evQANHr8ADR7BAA0ewgANHsMADR7FAA0exgANH0EADR9DAA0fRgANH0gADR9LAA0fTAANH00ADR9OAA0fTwANH1EADR9TAA0fVAANH1UADR9XAA0fWAANH3EADR+KAA0fiwANH4wADR+OAA0fnwANH6QADR+nAA0fqQANH+IADR/lAA0f5wANH+oADR/tAA0f8AANH/MADR/4AA0gmwANIL8ADSDjAA0hAwANISoADSFRAA0hcQANIZgADSG8AA0h3wANIgYADSIqAA0iTgANInIADSKZAA0imgANIpwADSKeAA0ioQANIqMADSKmAA0iqAANIqoADSKtAA0irwANIrEADSK0AA0itwANIrkADSK7AA0ivQANIsAADSLDAA0ixgANIssADSLkAA0i6QANIusADSLwAA0i8wANIvUADSM+AA0jYgANI4kADSOtAA0jsAANI7IADSO0AA0jtgANI7gADSO6AA0juwANI74ADSPXAA0j/AANI/4ADSQAAA0kAgANJAQADSQGAA0kCAANJAoADSQMAA0kDgANJDMADSQ2AA0kOQANJDwADSQ/AA0kQgANJEUADSRIAA0kSwANJE4ADSRQAA0kywANJM0ADSTQAA0k0gANJNUADSTWAA0k1wANJNgADSTZAA0k2wANJN0ADSTeAA0k3wANJOEADSTiAA0k8wANJPQADST2AA0lcQANJXMADSV1AA0ldwANJXoADSV7AA0lfAANJX0ADSV+AA0lgAANJYIADSWDAA0lhAANJYYADSWHAA0mAgANJgQADSYHAA0mCQANJgwADSYNAA0mDgANJg8ADSYQAA0mEgANJhQADSYVAA0mFgANJhgADSYZAA0mKgANJisADSYtAA0mqAANJqoADSasAA0mrgANJrEADSayAA0mswANJrQADSa1AA0mtwANJrkADSa6AA0muwANJr0ADSa+AA0nOQANJzsADSc+AA0nQAANJ0MADSdEAA0nRQANJ0YADSdHAA0nSQANJ0sADSdMAA0nTQANJ08ADSdQAA0nYQANJ2IADSdkAA0n3wANJ+EADSfjAA0n5QANJ+gADSfpAA0n6gANJ+sADSfsAA0n7gANJ/AADSfxAA0n8gANJ/QADSf1AA0ocAANKHIADSh1AA0odwANKHoADSh7AA0ofAANKH0ADSh+AA0ogAANKIIADSiDAA0ohAANKIYADSiHAA0ooAANKKEADSiiAA0opAANKR8ADSkhAA0pIwANKSUADSkoAA0pKQANKSoADSkrAA0pLAANKS4ADSkwAA0pMQANKTIADSk0AA0pNQANKbAADSmyAA0ptQANKbcADSm6AA0puwANKbwADSm9AA0pvgANKcAADSnCAA0pwwANKcQADSnGAA0pxwANKdYADSnvAA0p/AANKf8ADSoCAA0qBQANKhIADSoVAA0qGAANKhsADSodAA0qNAANKkcADSpQAA0q4wANKwYADSsmAA0rRgANK0gADStKAA0rTAANK04ADStRAA0rUgANK1MADStWAA0rVwANK1kADStaAA0rXAANK18ADStgAA0rYQANK2QADStlAA0ragANK4MADSuMAA0rjgANK5AADSuZAA0rnAANK58ADSuhAA0r6gANLA4ADSw1AA0sWQANLFwADSxeAA0sYAANLGIADSxkAA0sZgANLGcADSxqAA0sgwANLKQADSymAA0sqAANLKoADSysAA0srgANLLAADSyyAA0stAANLNUADSzYAA0s2wANLN4ADSzhAA0s5AANLOcADSzqAA0s7QANLO8ADS1qAA0tbAANLW4ADS1wAA0tcwANLXQADS11AA0tdgANLXcADS15AA0tewANLXwADS19AA0tfwANLYAADS37AA0t/QANLf8ADS4BAA0uBAANLgUADS4GAA0uBwANLggADS4KAA0uDAANLg0ADS4OAA0uEAANLhEADS6MAA0ujgANLpEADS6TAA0ulgANLpcADS6YAA0umQANLpoADS6cAA0ungANLp8ADS6gAA0uogANLqMADS68AA0uvQANLr4ADS7AAA0vOwANLz0ADS8/AA0vQQANL0QADS9FAA0vRgANL0cADS9IAA0vSgANL0wADS9NAA0vTgANL1AADS9RAA0vzAANL84ADS/QAA0v0gANL9UADS/WAA0v1wANL9gADS/ZAA0v2wANL90ADS/eAA0v3wANL+EADS/iAA0wXQANMF8ADTBhAA0wYwANMGYADTBnAA0waAANMGkADTBqAA0wbAANMG4ADTBvAA0wcAANMHIADTBzAA0w7gANMPAADTDyAA0w9AANMPcADTD4AA0w+QANMPoADTD7AA0w/QANMP8ADTEAAA0xAQANMQMADTEEAA0xfwANMYEADTGDAA0xhQANMYgADTGJAA0xigANMYsADTGMAA0xjgANMZAADTGRAA0xkgANMZQADTGVAA0x3gANMgIADTIpAA0yTQANMlAADTJSAA0yVAANMlYADTJYAA0yWgANMlsADTJeAA0ydwANMpQADTKWAA0ymAANMpoADTKcAA0yngANMqAADTKiAA0yvwANMsIADTLFAA0yyAANMssADTLOAA0y0QANMtQADTLWAA0zUQANM1MADTNVAA0zVwANM1oADTNbAA0zXAANM10ADTNeAA0zYAANM2IADTNjAA0zZAANM2YADTNnAA0z4gANM+QADTPmAA0z6AANM+sADTPsAA0z7QANM+4ADTPvAA0z8QANM/MADTP0AA0z9QANM/cADTP4AA00cwANNHUADTR3AA00eQANNHwADTR9AA00fgANNH8ADTSAAA00ggANNIQADTSFAA00hgANNIgADTSJAA01BAANNQYADTUJAA01CwANNQ4ADTUPAA01EAANNREADTUSAA01FAANNRYADTUXAA01GAANNRoADTUbAA01lgANNZgADTWaAA01nAANNZ8ADTWgAA01oQANNaIADTWjAA01pQANNacADTWoAA01qQANNasADTWsAA02JwANNikADTYrAA02LQANNjAADTYxAA02MgANNjMADTY0AA02NgANNjgADTY5AA02OgANNjwADTY9AA02uAANNroADTa8AA02vgANNsEADTbCAA02wwANNsQADTbFAA02xwANNskADTbKAA02ywANNs0ADTbOAA03YQANN4QADTekAA03xAANN8YADTfIAA03ygANN8wADTfPAA030AANN9EADTfUAA031QANN9cADTfYAA032gANN90ADTfeAA033wANN+IADTfjAA036AANOAEADTgKAA04DAANOA4ADTgXAA04GgANOB0ADTgfAA04aAANOIwADTizAA041wANONoADTjcAA043gANOOAADTjiAA045AANOOUADTjoAA05AQANOSIADTkkAA05JgANOSgADTkqAA05LAANOS4ADTkwAA05MgANOVMADTlWAA05WQANOVwADTlfAA05YgANOWUADTloAA05awANOW0ADTnoAA056gANOewADTnuAA058QANOfIADTnzAA059AANOfUADTn3AA05+QANOfoADTn7AA05/QANOf4ADTp5AA06ewANOn0ADTp/AA06ggANOoMADTqEAA06hQANOoYADTqIAA06igANOosADTqMAA06jgANOo8ADTsKAA07DAANOw8ADTsRAA07FAANOxUADTsWAA07FwANOxgADTsaAA07HAANOx0ADTseAA07IAANOyEADTs6AA07OwANOzwADTs+AA07uQANO7sADTu9AA07vwANO8IADTvDAA07xAANO8UADTvGAA07yAANO8oADTvLAA07zAANO84ADTvPAA08SgANPEwADTxOAA08UAANPFMADTxUAA08VQANPFYADTxXAA08WQANPFsADTxcAA08XQANPF8ADTxgAA082wANPN0ADTzfAA084QANPOQADTzlAA085gANPOcADTzoAA086gANPOwADTztAA087gANPPAADTzxAA09bAANPW4ADT1wAA09cgANPXUADT12AA09dwANPXgADT15AA09ewANPX0ADT1+AA09fwANPYEADT2CAA09/QANPf8ADT4BAA0+AwANPgYADT4HAA0+CAANPgkADT4KAA0+DAANPg4ADT4PAA0+EAANPhIADT4TAA0+XAANPoAADT6nAA0+ywANPs4ADT7QAA0+0gANPtQADT7WAA0+2AANPtkADT7cAA0+9QANPxIADT8UAA0/FgANPxgADT8aAA0/HAANPx4ADT8gAA0/PQANP0AADT9DAA0/RgANP0kADT9MAA0/TwANP1IADT9UAA0/zwANP9EADT/TAA0/1QANP9gADT/ZAA0/2gANP9sADT/cAA0/3gANP+AADT/hAA0/4gANP+QADT/lAA1AYAANQGIADUBkAA1AZgANQGkADUBqAA1AawANQGwADUBtAA1AbwANQHEADUByAA1AcwANQHUADUB2AA1A8QANQPMADUD1AA1A9wANQPoADUD7AA1A/AANQP0ADUD+AA1BAAANQQIADUEDAA1BBAANQQYADUEHAA1BggANQYQADUGHAA1BiQANQYwADUGNAA1BjgANQY8ADUGQAA1BkgANQZQADUGVAA1BlgANQZgADUGZAA1CFAANQhYADUIYAA1CGgANQh0ADUIeAA1CHwANQiAADUIhAA1CIwANQiUADUImAA1CJwANQikADUIqAA1CpQANQqcADUKpAA1CqwANQq4ADUKvAA1CsAANQrEADUKyAA1CtAANQrYADUK3AA1CuAANQroADUK7AA1DNgANQzgADUM6AA1DPAANQz8ADUNAAA1DQQANQ0IADUNDAA1DRQANQ0cADUNIAA1DSQANQ0sADUNMAA1D3wANRAIADUQiAA1EQgANREQADURGAA1ESAANREoADURNAA1ETgANRE8ADURSAA1EUwANRFUADURWAA1EWAANRFsADURcAA1EXQANRGAADURhAA1EZgANRH8ADUSIAA1EigANRIwADUSVAA1EmAANRJsADUSdAA1E5gANRQoADUUxAA1FVQANRVgADUVaAA1FXAANRV4ADUVgAA1FYgANRWMADUVmAA1FfwANRaAADUWiAA1FpAANRaYADUWoAA1FqgANRawADUWuAA1FsAANRdEADUXUAA1F1wANRdoADUXdAA1F4AANReMADUXmAA1F6QANResADUZmAA1GaAANRmoADUZsAA1GbwANRnAADUZxAA1GcgANRnMADUZ1AA1GdwANRngADUZ5AA1GewANRnwADUb3AA1G+QANRvsADUb9AA1HAAANRwEADUcCAA1HAwANRwQADUcGAA1HCAANRwkADUcKAA1HDAANRw0ADUeIAA1HigANR40ADUePAA1HkgANR5MADUeUAA1HlQANR5YADUeYAA1HmgANR5sADUecAA1HngANR58ADUe4AA1HuQANR7oADUe8AA1INwANSDkADUg7AA1IPQANSEAADUhBAA1IQgANSEMADUhEAA1IRgANSEgADUhJAA1ISgANSEwADUhNAA1IyAANSMoADUjMAA1IzgANSNEADUjSAA1I0wANSNQADUjVAA1I1wANSNkADUjaAA1I2wANSN0ADUjeAA1JWQANSVsADUldAA1JXwANSWIADUljAA1JZAANSWUADUlmAA1JaAANSWoADUlrAA1JbAANSW4ADUlvAA1J6gANSewADUnuAA1J8AANSfMADUn0AA1J9QANSfYADUn3AA1J+QANSfsADUn8AA1J/QANSf8ADUoAAA1KewANSn0ADUp/AA1KgQANSoQADUqFAA1KhgANSocADUqIAA1KigANSowADUqNAA1KjgANSpAADUqRAA1K2gANSv4ADUslAA1LSQANS0wADUtOAA1LUAANS1IADUtUAA1LVgANS1cADUtaAA1LcwANS5AADUuSAA1LlAANS5YADUuYAA1LmgANS5wADUueAA1LuwANS74ADUvBAA1LxAANS8cADUvKAA1LzQANS9AADUvSAA1MTQANTE8ADUxRAA1MUwANTFYADUxXAA1MWAANTFkADUxaAA1MXAANTF4ADUxfAA1MYAANTGIADUxjAA1M3gANTOAADUziAA1M5AANTOcADUzoAA1M6QANTOoADUzrAA1M7QANTO8ADUzwAA1M8QANTPMADUz0AA1NbwANTXEADU1zAA1NdQANTXgADU15AA1NegANTXsADU18AA1NfgANTYAADU2BAA1NggANTYQADU2FAA1OAAANTgIADU4FAA1OBwANTgoADU4LAA1ODAANTg0ADU4OAA1OEAANThIADU4TAA1OFAANThYADU4XAA1OkgANTpQADU6WAA1OmAANTpsADU6cAA1OnQANTp4ADU6fAA1OoQANTqMADU6kAA1OpQANTqcADU6oAA1PIwANTyUADU8nAA1PKQANTywADU8tAA1PLgANTy8ADU8wAA1PMgANTzQADU81AA1PNgANTzgADU85AA1PtAANT7YADU+4AA1PugANT70ADU++AA1PvwANT8AADU/BAA1PwwANT8UADU/GAA1PxwANT8kADU/KAA1P2wANT9wADU/eAA1P7wANT/wADU//AA1QAgANUAUADVAHAA1QQAANUEMADVBFAA1QSAANUEsADVBOAA1QUQANUNQADVD4AA1RHAANUT8ADVFmAA1RhgANUa0ADVHUAA1R9AANUhgADVI8AA1SPgANUkEADVJDAA1SRQANUkcADVJKAA1STQANUk8ADVJRAA1SVAANUlYADVJYAA1SWwANUl4ADVJfAA1SZAANUn0ADVKCAA1ShAANUokADVKMAA1SjgANUtcADVL7AA1TIgANU0YADVNJAA1TSwANU00ADVNPAA1TUQANU1MADVNUAA1TVwANU3AADVOVAA1TlwANU5kADVObAA1TnQANU58ADVOhAA1TowANU6UADVOnAA1TzAANU88ADVPSAA1T1QANU9gADVPbAA1T3gANU+EADVPkAA1T5wANU+kADVRkAA1UZgANVGkADVRrAA1UbgANVG8ADVRwAA1UcQANVHIADVR0AA1UdgANVHcADVR4AA1UegANVHsADVSMAA1UjQANVI8ADVUKAA1VDAANVQ4ADVUQAA1VEwANVRQADVUVAA1VFgANVRcADVUZAA1VGwANVRwADVUdAA1VHwANVSAADVWbAA1VnQANVaAADVWiAA1VpQANVaYADVWnAA1VqAANVakADVWrAA1VrQANVa4ADVWvAA1VsQANVbIADVXDAA1VxAANVcYADVZBAA1WQwANVkUADVZHAA1WSgANVksADVZMAA1WTQANVk4ADVZQAA1WUgANVlMADVZUAA1WVgANVlcADVbSAA1W1AANVtcADVbZAA1W3AANVt0ADVbeAA1W3wANVuAADVbiAA1W5AANVuUADVbmAA1W6AANVukADVb6AA1W+wANVv0ADVd4AA1XegANV3wADVd+AA1XgQANV4IADVeDAA1XhAANV4UADVeHAA1XiQANV4oADVeLAA1XjQANV44ADVgJAA1YCwANWA4ADVgQAA1YEwANWBQADVgVAA1YFgANWBcADVgZAA1YGwANWBwADVgdAA1YHwANWCAADVg5AA1YOgANWDsADVg9AA1YuAANWLoADVi8AA1YvgANWMEADVjCAA1YwwANWMQADVjFAA1YxwANWMkADVjKAA1YywANWM0ADVjOAA1ZSQANWUsADVlOAA1ZUAANWVMADVlUAA1ZVQANWVYADVlXAA1ZWQANWVsADVlcAA1ZXQANWV8ADVlgAA1ZdgANWY8ADVmUAA1ZlwANWZwADVmfAA1ZoQANWa0ADVpAAA1aYwANWoMADVqjAA1apQANWqcADVqpAA1aqwANWq4ADVqvAA1asAANWrMADVq0AA1atgANWrcADVq5AA1avAANWr0ADVq+AA1awQANWsIADVrHAA1a4AANWukADVrrAA1a7QANWvYADVr5AA1a/AANWv4ADVtHAA1bawANW5IADVu2AA1buQANW7sADVu9AA1bvwANW8EADVvDAA1bxAANW8cADVvgAA1cAQANXAMADVwFAA1cBwANXAkADVwLAA1cDQANXA8ADVwRAA1cMgANXDUADVw4AA1cOwANXD4ADVxBAA1cRAANXEcADVxKAA1cTAANXMcADVzJAA1cywANXM0ADVzQAA1c0QANXNIADVzTAA1c1AANXNYADVzYAA1c2QANXNoADVzcAA1c3QANXVgADV1aAA1dXAANXV4ADV1hAA1dYgANXWMADV1kAA1dZQANXWcADV1pAA1dagANXWsADV1tAA1dbgANXekADV3rAA1d7gANXfAADV3zAA1d9AANXfUADV32AA1d9wANXfkADV37AA1d/AANXf0ADV3/AA1eAAANXhkADV4aAA1eGwANXh0ADV6YAA1emgANXpwADV6eAA1eoQANXqIADV6jAA1epAANXqUADV6nAA1eqQANXqoADV6rAA1erQANXq4ADV8pAA1fKwANXy0ADV8vAA1fMgANXzMADV80AA1fNQANXzYADV84AA1fOgANXzsADV88AA1fPgANXz8ADV+6AA1fvAANX74ADV/AAA1fwwANX8QADV/FAA1fxgANX8cADV/JAA1fywANX8wADV/NAA1fzwANX9AADWBLAA1gTQANYE8ADWBRAA1gVAANYFUADWBWAA1gVwANYFgADWBaAA1gXAANYF0ADWBeAA1gYAANYGEADWDcAA1g3gANYOAADWDiAA1g5QANYOYADWDnAA1g6AANYOkADWDrAA1g7QANYO4ADWDvAA1g8QANYPIADWE7AA1hXwANYYYADWGqAA1hrQANYa8ADWGxAA1hswANYbUADWG3AA1huAANYbsADWHUAA1h8QANYfMADWH1AA1h9wANYfkADWH7AA1h/QANYf8ADWIcAA1iHwANYiIADWIlAA1iKAANYisADWIuAA1iMQANYjMADWKuAA1isAANYrIADWK0AA1itwANYrgADWK5AA1iugANYrsADWK9AA1ivwANYsAADWLBAA1iwwANYsQADWM/AA1jQQANY0MADWNFAA1jSAANY0kADWNKAA1jSwANY0wADWNOAA1jUAANY1EADWNSAA1jVAANY1UADWPQAA1j0gANY9QADWPWAA1j2QANY9oADWPbAA1j3AANY90ADWPfAA1j4QANY+IADWPjAA1j5QANY+YADWRhAA1kYwANZGYADWRoAA1kawANZGwADWRtAA1kbgANZG8ADWRxAA1kcwANZHQADWR1AA1kdwANZHgADWTzAA1k9QANZPcADWT5AA1k/AANZP0ADWT+AA1k/wANZQAADWUCAA1lBAANZQUADWUGAA1lCAANZQkADWWEAA1lhgANZYgADWWKAA1ljQANZY4ADWWPAA1lkAANZZEADWWTAA1llQANZZYADWWXAA1lmQANZZoADWYVAA1mFwANZhkADWYbAA1mHgANZh8ADWYgAA1mIQANZiIADWYkAA1mJgANZicADWYoAA1mKgANZisADWY8AA1mQQANZkQADWZGAA1mSwANZoQADWaHAA1miQANZowADWaPAA1mkgANZpUADWcYAA1nPAANZ2AADWeDAA1nqgANZ8oADWfxAA1oGAANaDgADWhcAA1ogAANaIIADWiFAA1ohwANaIkADWiLAA1ojgANaJEADWiTAA1olQANaJgADWiaAA1onAANaJ8ADWiiAA1oowANaKgADWjBAA1oxgANaMgADWjNAA1o0AANaNIADWkbAA1pPwANaWYADWmKAA1pjQANaY8ADWmRAA1pkwANaZUADWmXAA1pmAANaZsADWm0AA1p2QANadsADWndAA1p3wANaeEADWnjAA1p5QANaecADWnpAA1p6wANahAADWoTAA1qFgANahkADWocAA1qHwANaiIADWolAA1qKAANaisADWotAA1qqAANaqoADWqtAA1qrwANarIADWqzAA1qtAANarUADWq2AA1quAANaroADWq7AA1qvAANar4ADWq/AA1q0AANatEADWrTAA1rTgANa1AADWtSAA1rVAANa1cADWtYAA1rWQANa1oADWtbAA1rXQANa18ADWtgAA1rYQANa2MADWtkAA1r3wANa+EADWvkAA1r5gANa+kADWvqAA1r6wANa+wADWvtAA1r7wANa/EADWvyAA1r8wANa/UADWv2AA1sBwANbAgADWwKAA1shQANbIcADWyJAA1siwANbI4ADWyPAA1skAANbJEADWySAA1slAANbJYADWyXAA1smAANbJoADWybAA1tFgANbRgADW0bAA1tHQANbSAADW0hAA1tIgANbSMADW0kAA1tJgANbSgADW0pAA1tKgANbSwADW0tAA1tPgANbT8ADW1BAA1tvAANbb4ADW3AAA1twgANbcUADW3GAA1txwANbcgADW3JAA1tywANbc0ADW3OAA1tzwANbdEADW3SAA1uTQANbk8ADW5SAA1uVAANblcADW5YAA1uWQANbloADW5bAA1uXQANbl8ADW5gAA1uYQANbmMADW5kAA1ufQANbn4ADW5/AA1ugQANbvwADW7+AA1vAAANbwIADW8FAA1vBgANbwcADW8IAA1vCQANbwsADW8NAA1vDgANbw8ADW8RAA1vEgANb40ADW+PAA1vkgANb5QADW+XAA1vmAANb5kADW+aAA1vmwANb50ADW+fAA1voAANb6EADW+jAA1vpAANb7wADW/VAA1v4gANb+UADW/oAA1v6wANb/gADW/7AA1v/gANcAEADXADAA1wDwANcBsADXAoAA1wuwANcN4ADXD+AA1xHgANcSAADXEiAA1xJAANcSYADXEpAA1xKgANcSsADXEuAA1xLwANcTEADXEyAA1xNAANcTcADXE4AA1xOQANcTwADXE9AA1xRgANcV8ADXFoAA1xagANcWwADXF1AA1xeAANcXsADXF9AA1xxgANceoADXIRAA1yNQANcjgADXI6AA1yPAANcj4ADXJAAA1yQgANckMADXJGAA1yXwANcoAADXKCAA1yhAANcoYADXKIAA1yigANcowADXKOAA1ykAANcrEADXK0AA1ytwANcroADXK9AA1ywAANcsMADXLGAA1yyQANcssADXNGAA1zSAANc0oADXNMAA1zTwANc1AADXNRAA1zUgANc1MADXNVAA1zVwANc1gADXNZAA1zWwANc1wADXPXAA1z2QANc9sADXPdAA1z4AANc+EADXPiAA1z4wANc+QADXPmAA1z6AANc+kADXPqAA1z7AANc+0ADXRoAA10agANdG0ADXRvAA10cgANdHMADXR0AA10dQANdHYADXR4AA10egANdHsADXR8AA10fgANdH8ADXSYAA10mQANdJoADXScAA11FwANdRkADXUbAA11HQANdSAADXUhAA11IgANdSMADXUkAA11JgANdSgADXUpAA11KgANdSwADXUtAA11qAANdaoADXWsAA11rgANdbEADXWyAA11swANdbQADXW1AA11twANdbkADXW6AA11uwANdb0ADXW+AA12OQANdjsADXY9AA12PwANdkIADXZDAA12RAANdkUADXZGAA12SAANdkoADXZLAA12TAANdk4ADXZPAA12ygANdswADXbOAA120AANdtMADXbUAA121QANdtYADXbXAA122QANdtsADXbcAA123QANdt8ADXbgAA13WwANd10ADXdfAA13YQANd2QADXdlAA13ZgANd2cADXdoAA13agANd2wADXdtAA13bgANd3AADXdxAA13ugANd94ADXgFAA14KQANeCwADXguAA14MAANeDIADXg0AA14NgANeDcADXg6AA14UwANeHAADXhyAA14dAANeHYADXh4AA14egANeHwADXh+AA14mwANeJ4ADXihAA14pAANeKcADXiqAA14rQANeLAADXiyAA15LQANeS8ADXkxAA15MwANeTYADXk3AA15OAANeTkADXk6AA15PAANeT4ADXk/AA15QAANeUIADXlDAA15vgANecAADXnCAA15xAANeccADXnIAA15yQANecoADXnLAA15zQANec8ADXnQAA150QANedMADXnUAA16TwANelEADXpTAA16VQANelgADXpZAA16WgANelsADXpcAA16XgANemAADXphAA16YgANemQADXplAA164AANeuIADXrlAA165wANeuoADXrrAA167AANeu0ADXruAA168AANevIADXrzAA169AANevYADXr3AA17cgANe3QADXt2AA17eAANe3sADXt8AA17fQANe34ADXt/AA17gQANe4MADXuEAA17hQANe4cADXuIAA18AwANfAUADXwHAA18CQANfAwADXwNAA18DgANfA8ADXwQAA18EgANfBQADXwVAA18FgANfBgADXwZAA18lAANfJYADXyYAA18mgANfJ0ADXyeAA18nwANfKAADXyhAA18owANfKUADXymAA18pwANfKkADXyqAA19PQANfWAADX2AAA19oAANfaIADX2kAA19pgANfagADX2rAA19rAANfa0ADX2wAA19sQANfbMADX20AA19tgANfbkADX26AA19uwANfb4ADX2/AA19xAANfd0ADX3mAA196AANfeoADX3zAA199gANffkADX37AA1+RAANfmgADX6PAA1+swANfrYADX64AA1+ugANfrwADX6+AA1+wAANfsEADX7EAA1+3QANfv4ADX8AAA1/AgANfwQADX8GAA1/CAANfwoADX8MAA1/DgANfy8ADX8yAA1/NQANfzgADX87AA1/PgANf0EADX9EAA1/RwANf0kADX/EAA1/xgANf8gADX/KAA1/zQANf84ADX/PAA1/0AANf9EADX/TAA1/1QANf9YADX/XAA1/2QANf9oADYBVAA2AVwANgFkADYBbAA2AXgANgF8ADYBgAA2AYQANgGIADYBkAA2AZgANgGcADYBoAA2AagANgGsADYDmAA2A6AANgOsADYDtAA2A8AANgPEADYDyAA2A8wANgPQADYD2AA2A+AANgPkADYD6AA2A/AANgP0ADYEWAA2BFwANgRgADYEaAA2BlQANgZcADYGZAA2BmwANgZ4ADYGfAA2BoAANgaEADYGiAA2BpAANgaYADYGnAA2BqAANgaoADYGrAA2CJgANgigADYIqAA2CLAANgi8ADYIwAA2CMQANgjIADYIzAA2CNQANgjcADYI4AA2COQANgjsADYI8AA2CtwANgrkADYK7AA2CvQANgsAADYLBAA2CwgANgsMADYLEAA2CxgANgsgADYLJAA2CygANgswADYLNAA2DSAANg0oADYNMAA2DTgANg1EADYNSAA2DUwANg1QADYNVAA2DVwANg1kADYNaAA2DWwANg10ADYNeAA2D2QANg9sADYPdAA2D3wANg+IADYPjAA2D5AANg+UADYPmAA2D6AANg+oADYPrAA2D7AANg+4ADYPvAA2EOAANhFwADYSDAA2EpwANhKoADYSsAA2ErgANhLAADYSyAA2EtAANhLUADYS4AA2E0QANhO4ADYTwAA2E8gANhPQADYT2AA2E+AANhPoADYT8AA2FGQANhRwADYUfAA2FIgANhSUADYUoAA2FKwANhS4ADYUwAA2FqwANha0ADYWvAA2FsQANhbQADYW1AA2FtgANhbcADYW4AA2FugANhbwADYW9AA2FvgANhcAADYXBAA2GPAANhj4ADYZAAA2GQgANhkUADYZGAA2GRwANhkgADYZJAA2GSwANhk0ADYZOAA2GTwANhlEADYZSAA2GzQANhs8ADYbRAA2G0wANhtYADYbXAA2G2AANhtkADYbaAA2G3AANht4ADYbfAA2G4AANhuIADYbjAA2HXgANh2AADYdiAA2HZAANh2cADYdoAA2HaQANh2oADYdrAA2HbQANh28ADYdwAA2HcQANh3MADYd0AA2H7wANh/EADYfzAA2H9QANh/gADYf5AA2H+gANh/sADYf8AA2H/gANiAAADYgBAA2IAgANiAQADYgFAA2IgAANiIIADYiEAA2IhgANiIkADYiKAA2IiwANiIwADYiNAA2IjwANiJEADYiSAA2IkwANiJUADYiWAA2JEQANiRMADYkVAA2JFwANiRoADYkbAA2JHAANiR0ADYkeAA2JIAANiSIADYkjAA2JJAANiSYADYknAA2JugANid0ADYn9AA2KHQANih8ADYohAA2KIwANiiUADYooAA2KKQANiioADYotAA2KLgANijAADYoxAA2KMwANijYADYo3AA2KOAANijsADYo8AA2KRQANil4ADYpnAA2KaQANimsADYp0AA2KdwANinoADYp8AA2KxQANiukADYsQAA2LNAANizcADYs5AA2LOwANiz0ADYs/AA2LQQANi0IADYtFAA2LXgANi38ADYuBAA2LgwANi4UADYuHAA2LiQANi4sADYuNAA2LjwANi7AADYuzAA2LtgANi7kADYu8AA2LvwANi8IADYvFAA2LyAANi8oADYxFAA2MRwANjEkADYxLAA2MTgANjE8ADYxQAA2MUQANjFIADYxUAA2MVgANjFcADYxYAA2MWgANjFsADYzWAA2M2AANjNoADYzcAA2M3wANjOAADYzhAA2M4gANjOMADYzlAA2M5wANjOgADYzpAA2M6wANjOwADY1nAA2NaQANjWwADY1uAA2NcQANjXIADY1zAA2NdAANjXUADY13AA2NeQANjXoADY17AA2NfQANjX4ADY2XAA2NmAANjZkADY2bAA2OFgANjhgADY4aAA2OHAANjh8ADY4gAA2OIQANjiIADY4jAA2OJQANjicADY4oAA2OKQANjisADY4sAA2OpwANjqkADY6rAA2OrQANjrAADY6xAA2OsgANjrMADY60AA2OtgANjrgADY65AA2OugANjrwADY69AA2POAANjzoADY88AA2PPgANj0EADY9CAA2PQwANj0QADY9FAA2PRwANj0kADY9KAA2PSwANj00ADY9OAA2PyQANj8sADY/NAA2PzwANj9IADY/TAA2P1AANj9UADY/WAA2P2AANj9oADY/bAA2P3AANj94ADY/fAA2QWgANkFwADZBeAA2QYAANkGMADZBkAA2QZQANkGYADZBnAA2QaQANkGsADZBsAA2QbQANkG8ADZBwAA2QuQANkN0ADZEEAA2RKAANkSsADZEtAA2RLwANkTEADZEzAA2RNQANkTYADZE5AA2RUgANkW8ADZFxAA2RcwANkXUADZF3AA2ReQANkXsADZF9AA2RmgANkZ0ADZGgAA2RowANkaYADZGpAA2RrAANka8ADZGxAA2SLAANki4ADZIwAA2SMgANkjUADZI2AA2SNwANkjgADZI5AA2SOwANkj0ADZI+AA2SPwANkkEADZJCAA2SvQANkr8ADZLBAA2SwwANksYADZLHAA2SyAANkskADZLKAA2SzAANks4ADZLPAA2S0AANktIADZLTAA2TTgANk1AADZNSAA2TVAANk1cADZNYAA2TWQANk1oADZNbAA2TXQANk18ADZNgAA2TYQANk2MADZNkAA2T3wANk+EADZPkAA2T5gANk+kADZPqAA2T6wANk+wADZPtAA2T7wANk/EADZPyAA2T8wANk/UADZP2AA2UcQANlHMADZR1AA2UdwANlHoADZR7AA2UfAANlH0ADZR+AA2UgAANlIIADZSDAA2UhAANlIYADZSHAA2VAgANlQQADZUGAA2VCAANlQsADZUMAA2VDQANlQ4ADZUPAA2VEQANlRMADZUUAA2VFQANlRcADZUYAA2VkwANlZUADZWXAA2VmQANlZwADZWdAA2VngANlZ8ADZWgAA2VogANlaQADZWlAA2VpgANlagADZWpAA2VugANlb8ADZXCAA2VxAANlckADZZMAA2WcAANlpQADZa3AA2W3gANlv4ADZclAA2XTAANl2wADZeQAA2XtAANl7YADZe5AA2XuwANl70ADZe/AA2XwgANl8UADZfHAA2XyQANl8wADZfOAA2X0AANl9MADZfWAA2X1wANl9wADZf1AA2X+gANl/wADZgBAA2YBAANmAYADZhPAA2YcwANmJoADZi+AA2YwQANmMMADZjFAA2YxwANmMkADZjLAA2YzAANmM8ADZjoAA2ZDQANmQ8ADZkRAA2ZEwANmRUADZkXAA2ZGQANmRsADZkdAA2ZHwANmUQADZlHAA2ZSgANmU0ADZlQAA2ZUwANmVYADZlZAA2ZXAANmV8ADZlhAA2Z3AANmd4ADZnhAA2Z4wANmeYADZnnAA2Z6AANmekADZnqAA2Z7AANme4ADZnvAA2Z8AANmfIADZnzAA2aBAANmgUADZoHAA2aggANmoQADZqGAA2aiAANmosADZqMAA2ajQANmo4ADZqPAA2akQANmpMADZqUAA2alQANmpcADZqYAA2bEwANmxUADZsYAA2bGgANmx0ADZseAA2bHwANmyAADZshAA2bIwANmyUADZsmAA2bJwANmykADZsqAA2bOwANm0AADZtDAA2bRQANm1YADZtnAA2bagANm20ADZtwAA2bcwANm3UADZuRAA2bowANm7YADZvCAA2cPQANnD8ADZxBAA2cQwANnEYADZxHAA2cSAANnEkADZxKAA2cTAANnE4ADZxPAA2cUAANnFIADZxTAA2czgANnNAADZzTAA2c1QANnNgADZzZAA2c2gANnNsADZzcAA2c3gANnOAADZzhAA2c4gANnOQADZzlAA2c9gANnPcADZz5AA2ddAANnXYADZ14AA2degANnX0ADZ1+AA2dfwANnYAADZ2BAA2dgwANnYUADZ2GAA2dhwANnYkADZ2KAA2eBQANngcADZ4KAA2eDAANng8ADZ4QAA2eEQANnhIADZ4TAA2eFQANnhcADZ4YAA2eGQANnhsADZ4cAA2eNQANnjYADZ43AA2eOQANnrQADZ62AA2euAANnroADZ69AA2evgANnr8ADZ7AAA2ewQANnsMADZ7FAA2exgANnscADZ7JAA2eygANn0UADZ9HAA2fSgANn0wADZ9PAA2fUAANn1EADZ9SAA2fUwANn1UADZ9XAA2fWAANn1kADZ9bAA2fXAANn3QADZ+NAA2fvgANn8EADZ/EAA2fxwANn8oADZ/NAA2f0AANn9MADZ/WAA2f2QANn9wADZ/fAA2f4gANoBMADaAWAA2gGQANoBwADaAfAA2gIgANoCUADaAoAA2gKwANoC4ADaAxAA2gNAANoDcADaA5AA2gVQANoGkADaCCAA2gmQANoKwADaDEAA2g3AANoPgADaEKAA2hFgANoakADaHMAA2h7AANogwADaIOAA2iEAANohIADaIUAA2iFwANohgADaIZAA2iHAANoh0ADaIfAA2iIAANoiIADaIlAA2iJgANoicADaIqAA2iKwANojAADaJJAA2iUgANolQADaJWAA2iXwANomIADaJlAA2iZwANorAADaLUAA2i+wANox8ADaMiAA2jJAANoyYADaMoAA2jKgANoywADaMtAA2jMAANo0kADaNqAA2jbAANo24ADaNwAA2jcgANo3QADaN2AA2jeAANo3oADaObAA2jngANo6EADaOkAA2jpwANo6oADaOtAA2jsAANo7MADaO1AA2kMAANpDIADaQ0AA2kNgANpDkADaQ6AA2kOwANpDwADaQ9AA2kPwANpEEADaRCAA2kQwANpEUADaRGAA2kwQANpMMADaTFAA2kxwANpMoADaTLAA2kzAANpM0ADaTOAA2k0AANpNIADaTTAA2k1AANpNYADaTXAA2lUgANpVQADaVXAA2lWQANpVwADaVdAA2lXgANpV8ADaVgAA2lYgANpWQADaVlAA2lZgANpWgADaVpAA2lggANpYMADaWEAA2lhgANpgEADaYDAA2mBQANpgcADaYKAA2mCwANpgwADaYNAA2mDgANphAADaYSAA2mEwANphQADaYWAA2mFwANppIADaaUAA2mlgANppgADaabAA2mnAANpp0ADaaeAA2mnwANpqEADaajAA2mpAANpqUADaanAA2mqAANpyMADaclAA2nJwANpykADacsAA2nLQANpy4ADacvAA2nMAANpzIADac0AA2nNQANpzYADac4AA2nOQANp7QADae2AA2nuAANp7oADae9AA2nvgANp78ADafAAA2nwQANp8MADafFAA2nxgANp8cADafJAA2nygANqEUADahHAA2oSQANqEsADahOAA2oTwANqFAADahRAA2oUgANqFQADahWAA2oVwANqFgADahaAA2oWwANqKQADajIAA2o7wANqRMADakWAA2pGAANqRoADakcAA2pHgANqSAADakhAA2pJAANqT0ADalaAA2pXAANqV4ADalgAA2pYgANqWQADalmAA2paAANqYUADamIAA2piwANqY4ADamRAA2plAANqZcADamaAA2pnAANqhcADaoZAA2qGwANqh0ADaogAA2qIQANqiIADaojAA2qJAANqiYADaooAA2qKQANqioADaosAA2qLQANqqgADaqqAA2qrAANqq4ADaqxAA2qsgANqrMADaq0AA2qtQANqrcADaq5AA2qugANqrsADaq9AA2qvgANqzkADas7AA2rPQANqz8ADatCAA2rQwANq0QADatFAA2rRgANq0gADatKAA2rSwANq0wADatOAA2rTwANq8oADavMAA2rzwANq9EADavUAA2r1QANq9YADavXAA2r2AANq9oADavcAA2r3QANq94ADavgAA2r4QANrFwADaxeAA2sYAANrGIADaxlAA2sZgANrGcADaxoAA2saQANrGsADaxtAA2sbgANrG8ADaxxAA2scgANrO0ADazvAA2s8QANrPMADaz2AA2s9wANrPgADaz5AA2s+gANrPwADaz+AA2s/wANrQAADa0CAA2tAwANrX4ADa2AAA2tggANrYQADa2HAA2tiAANrYkADa2KAA2tiwANrY0ADa2PAA2tkAANrZEADa2TAA2tlAANricADa5KAA2uagANrooADa6MAA2ujgANrpAADa6SAA2ulQANrpYADa6XAA2umgANrpsADa6dAA2ungANrqAADa6jAA2upAANrqUADa6oAA2uqQANrq4ADa7HAA2u0AANrtIADa7UAA2u3QANruAADa7jAA2u5QANry4ADa9SAA2veQANr50ADa+gAA2vogANr6QADa+mAA2vqAANr6oADa+rAA2vrgANr8cADa/oAA2v6gANr+wADa/uAA2v8AANr/IADa/0AA2v9gANr/gADbAZAA2wHAANsB8ADbAiAA2wJQANsCgADbArAA2wLgANsDEADbAzAA2wrgANsLAADbCyAA2wtAANsLcADbC4AA2wuQANsLoADbC7AA2wvQANsL8ADbDAAA2wwQANsMMADbDEAA2xPwANsUEADbFDAA2xRQANsUgADbFJAA2xSgANsUsADbFMAA2xTgANsVAADbFRAA2xUgANsVQADbFVAA2x0AANsdIADbHVAA2x1wANsdoADbHbAA2x3AANsd0ADbHeAA2x4AANseIADbHjAA2x5AANseYADbHnAA2yAAANsgEADbICAA2yBAANsn8ADbKBAA2ygwANsoUADbKIAA2yiQANsooADbKLAA2yjAANso4ADbKQAA2ykQANspIADbKUAA2ylQANsxAADbMSAA2zFAANsxYADbMZAA2zGgANsxsADbMcAA2zHQANsx8ADbMhAA2zIgANsyMADbMlAA2zJgANs6EADbOjAA2zpQANs6cADbOqAA2zqwANs6wADbOtAA2zrgANs7AADbOyAA2zswANs7QADbO2AA2ztwANtDIADbQ0AA20NgANtDgADbQ7AA20PAANtD0ADbQ+AA20PwANtEEADbRDAA20RAANtEUADbRHAA20SAANtMMADbTFAA20xwANtMkADbTMAA20zQANtM4ADbTPAA200AANtNIADbTUAA201QANtNYADbTYAA202QANtSIADbVGAA21bQANtZEADbWUAA21lgANtZgADbWaAA21nAANtZ4ADbWfAA21ogANtbsADbXYAA212gANtdwADbXeAA214AANteIADbXkAA215gANtgMADbYGAA22CQANtgwADbYPAA22EgANthUADbYYAA22GgANtpUADbaXAA22mQANtpsADbaeAA22nwANtqAADbahAA22ogANtqQADbamAA22pwANtqgADbaqAA22qwANtyYADbcoAA23KgANtywADbcvAA23MAANtzEADbcyAA23MwANtzUADbc3AA23OAANtzkADbc7AA23PAANt7cADbe5AA23uwANt70ADbfAAA23wQANt8IADbfDAA23xAANt8YADbfIAA23yQANt8oADbfMAA23zQANuEgADbhKAA24TQANuE8ADbhSAA24UwANuFQADbhVAA24VgANuFgADbhaAA24WwANuFwADbheAA24XwANuNoADbjcAA243gANuOAADbjjAA245AANuOUADbjmAA245wANuOkADbjrAA247AANuO0ADbjvAA248AANuWsADbltAA25bwANuXEADbl0AA25dQANuXYADbl3AA25eAANuXoADbl8AA25fQANuX4ADbmAAA25gQANufwADbn+AA26AAANugIADboFAA26BgANugcADboIAA26CQANugsADboNAA26DgANug8ADboRAA26EgANuqUADbrIAA266AANuwgADbsKAA27DAANuw4ADbsQAA27EwANuxQADbsVAA27GAANuxkADbsbAA27HAANux4ADbshAA27IgANuyMADbsmAA27JwANuywADbtFAA27TgANu1AADbtSAA27WwANu14ADbthAA27YwANu6wADbvQAA279wANvBsADbweAA28IAANvCIADbwkAA28JgANvCgADbwpAA28LAANvEUADbxmAA28aAANvGoADbxsAA28bgANvHAADbxyAA28dAANvHYADbyXAA28mgANvJ0ADbygAA28owANvKYADbypAA28rAANvK8ADbyxAA29LAANvS4ADb0wAA29MgANvTUADb02AA29NwANvTgADb05AA29OwANvT0ADb0+AA29PwANvUEADb1CAA29vQANvb8ADb3BAA29wwANvcYADb3HAA29yAANvckADb3KAA29zAANvc4ADb3PAA290AANvdIADb3TAA2+TgANvlAADb5TAA2+VQANvlgADb5ZAA2+WgANvlsADb5cAA2+XgANvmAADb5hAA2+YgANvmQADb5lAA2+fgANvn8ADb6AAA2+ggANvv0ADb7/AA2/AQANvwMADb8GAA2/BwANvwgADb8JAA2/CgANvwwADb8OAA2/DwANvxAADb8SAA2/EwANv44ADb+QAA2/kgANv5QADb+XAA2/mAANv5kADb+aAA2/mwANv50ADb+fAA2/oAANv6EADb+jAA2/pAANwB8ADcAhAA3AIwANwCUADcAoAA3AKQANwCoADcArAA3ALAANwC4ADcAwAA3AMQANwDIADcA0AA3ANQANwLAADcCyAA3AtAANwLYADcC5AA3AugANwLsADcC8AA3AvQANwL8ADcDBAA3AwgANwMMADcDFAA3AxgANwUEADcFDAA3BRQANwUcADcFKAA3BSwANwUwADcFNAA3BTgANwVAADcFSAA3BUwANwVQADcFWAA3BVwANwaAADcHEAA3B6wANwg8ADcISAA3CFAANwhYADcIYAA3CGgANwhwADcIdAA3CIAANwjkADcJWAA3CWAANwloADcJcAA3CXgANwmAADcJiAA3CZAANwoEADcKEAA3ChwANwooADcKNAA3CkAANwpMADcKWAA3CmAANwxMADcMVAA3DFwANwxkADcMcAA3DHQANwx4ADcMfAA3DIAANwyIADcMkAA3DJQANwyYADcMoAA3DKQANw6QADcOmAA3DqAANw6oADcOtAA3DrgANw68ADcOwAA3DsQANw7MADcO1AA3DtgANw7cADcO5AA3DugANxDUADcQ3AA3EOQANxDsADcQ+AA3EPwANxEAADcRBAA3EQgANxEQADcRGAA3ERwANxEgADcRKAA3ESwANxMYADcTIAA3EygANxMwADcTPAA3E0AANxNEADcTSAA3E0wANxNUADcTXAA3E2AANxNkADcTbAA3E3AANxVcADcVZAA3FWwANxV0ADcVgAA3FYQANxWIADcVjAA3FZAANxWYADcVoAA3FaQANxWoADcVsAA3FbQANxegADcXqAA3F7AANxe4ADcXxAA3F8gANxfMADcX0AA3F9QANxfcADcX5AA3F+gANxfsADcX9AA3F/gANxnkADcZ7AA3GfQANxn8ADcaCAA3GgwANxoQADcaFAA3GhgANxogADcaKAA3GiwANxowADcaOAA3GjwANxyIADcdFAA3HZQANx4UADceHAA3HiQANx4sADceNAA3HkAANx5EADceSAA3HlQANx5YADceYAA3HmQANx5sADceeAA3HnwANx6AADcejAA3HpAANx6kADcfCAA3HywANx80ADcfPAA3H2AANx9sADcfeAA3H4AANyCkADchNAA3IdAANyJgADcibAA3InQANyJ8ADcihAA3IowANyKUADcimAA3IqQANyMIADcjjAA3I5QANyOcADcjpAA3I6wANyO0ADcjvAA3I8QANyPMADckUAA3JFwANyRoADckdAA3JIAANySMADckmAA3JKQANySwADckuAA3JqQANyasADcmtAA3JrwANybIADcmzAA3JtAANybUADcm2AA3JuAANyboADcm7AA3JvAANyb4ADcm/AA3KOgANyjwADco+AA3KQAANykMADcpEAA3KRQANykYADcpHAA3KSQANyksADcpMAA3KTQANyk8ADcpQAA3KywANys0ADcrQAA3K0gANytUADcrWAA3K1wANytgADcrZAA3K2wANyt0ADcreAA3K3wANyuEADcriAA3K+wANyvwADcr9AA3K/wANy3oADct8AA3LfgANy4AADcuDAA3LhAANy4UADcuGAA3LhwANy4kADcuLAA3LjAANy40ADcuPAA3LkAANzAsADcwNAA3MDwANzBEADcwUAA3MFQANzBYADcwXAA3MGAANzBoADcwcAA3MHQANzB4ADcwgAA3MIQANzJwADcyeAA3MoAANzKIADcylAA3MpgANzKcADcyoAA3MqQANzKsADcytAA3MrgANzK8ADcyxAA3MsgANzS0ADc0vAA3NMQANzTMADc02AA3NNwANzTgADc05AA3NOgANzTwADc0+AA3NPwANzUAADc1CAA3NQwANzb4ADc3AAA3NwgANzcQADc3HAA3NyAANzckADc3KAA3NywANzc0ADc3PAA3N0AANzdEADc3TAA3N1AANzh0ADc5BAA3OaAANzowADc6PAA3OkQANzpMADc6VAA3OlwANzpkADc6aAA3OnQANzrYADc7TAA3O1QANztcADc7ZAA3O2wANzt0ADc7fAA3O4QANzv4ADc8BAA3PBAANzwcADc8KAA3PDQANzxAADc8TAA3PFQANz5AADc+SAA3PlAANz5YADc+ZAA3PmgANz5sADc+cAA3PnQANz58ADc+hAA3PogANz6MADc+lAA3PpgAN0CEADdAjAA3QJQAN0CcADdAqAA3QKwAN0CwADdAtAA3QLgAN0DAADdAyAA3QMwAN0DQADdA2AA3QNwAN0LIADdC0AA3QtgAN0LgADdC7AA3QvAAN0L0ADdC+AA3QvwAN0MEADdDDAA3QxAAN0MUADdDHAA3QyAAN0UMADdFFAA3RSAAN0UoADdFNAA3RTgAN0U8ADdFQAA3RUQAN0VMADdFVAA3RVgAN0VcADdFZAA3RWgAN0dUADdHXAA3R2QAN0dsADdHeAA3R3wAN0eAADdHhAA3R4gAN0eQADdHmAA3R5wAN0egADdHqAA3R6wAN0mYADdJoAA3SagAN0mwADdJvAA3ScAAN0nEADdJyAA3ScwAN0nUADdJ3AA3SeAAN0nkADdJ7AA3SfAAN0vcADdL5AA3S+wAN0v0ADdMAAA3TAQAN0wIADdMDAA3TBAAN0wYADdMIAA3TCQAN0woADdMMAA3TDQAN06AADdPDAA3T4wAN1AMADdQFAA3UBwAN1AkADdQLAA3UDgAN1A8ADdQQAA3UEwAN1BQADdQWAA3UFwAN1BkADdQcAA3UHQAN1B4ADdQhAA3UIgAN1CcADdRAAA3USQAN1EsADdRNAA3UVgAN1FkADdRcAA3UXgAN1KcADdTLAA3U8gAN1RYADdUZAA3VGwAN1R0ADdUfAA3VIQAN1SMADdUkAA3VJwAN1UAADdVhAA3VYwAN1WUADdVnAA3VaQAN1WsADdVtAA3VbwAN1XEADdWSAA3VlQAN1ZgADdWbAA3VngAN1aEADdWkAA3VpwAN1aoADdWsAA3WJwAN1ikADdYrAA3WLQAN1jAADdYxAA3WMgAN1jMADdY0AA3WNgAN1jgADdY5AA3WOgAN1jwADdY9AA3WuAAN1roADda8AA3WvgAN1sEADdbCAA3WwwAN1sQADdbFAA3WxwAN1skADdbKAA3WywAN1s0ADdbOAA3XSQAN10sADddOAA3XUAAN11MADddUAA3XVQAN11YADddXAA3XWQAN11sADddcAA3XXQAN118ADddgAA3XeQAN13oADdd7AA3XfQAN1/gADdf6AA3X/AAN1/4ADdgBAA3YAgAN2AMADdgEAA3YBQAN2AcADdgJAA3YCgAN2AsADdgNAA3YDgAN2IkADdiLAA3YjQAN2I8ADdiSAA3YkwAN2JQADdiVAA3YlgAN2JgADdiaAA3YmwAN2JwADdieAA3YnwAN2RoADdkcAA3ZHgAN2SAADdkjAA3ZJAAN2SUADdkmAA3ZJwAN2SkADdkrAA3ZLAAN2S0ADdkvAA3ZMAAN2asADdmtAA3ZrwAN2bEADdm0AA3ZtQAN2bYADdm3AA3ZuAAN2boADdm8AA3ZvQAN2b4ADdnAAA3ZwQAN2jwADdo+AA3aQAAN2kIADdpFAA3aRgAN2kcADdpIAA3aSQAN2ksADdpNAA3aTgAN2k8ADdpRAA3aUgAN2psADdq/AA3a5gAN2woADdsNAA3bDwAN2xEADdsTAA3bFQAN2xcADdsYAA3bGwAN2zQADdtRAA3bUwAN21UADdtXAA3bWQAN21sADdtdAA3bXwAN23wADdt/AA3bggAN24UADduIAA3biwAN244ADduRAA3bkwAN3A4ADdwQAA3cEgAN3BQADdwXAA3cGAAN3BkADdwaAA3cGwAN3B0ADdwfAA3cIAAN3CEADdwjAA3cJAAN3J8ADdyhAA3cowAN3KUADdyoAA3cqQAN3KoADdyrAA3crAAN3K4ADdywAA3csQAN3LIADdy0AA3ctQAN3TAADd0yAA3dNAAN3TYADd05AA3dOgAN3TsADd08AA3dPQAN3T8ADd1BAA3dQgAN3UMADd1FAA3dRgAN3cEADd3DAA3dxQAN3ccADd3KAA3dywAN3cwADd3NAA3dzgAN3dAADd3SAA3d0wAN3dQADd3WAA3d1wAN3lIADd5UAA3eVgAN3lgADd5bAA3eXAAN3l0ADd5eAA3eXwAN3mEADd5jAA3eZAAN3mUADd5nAA3eaAAN3uMADd7lAA3e5wAN3ukADd7sAA3e7QAN3u4ADd7vAA3e8AAN3vIADd70AA3e9QAN3vYADd74AA3e+QAN33QADd92AA3feAAN33oADd99AA3ffgAN338ADd+AAA3fgQAN34MADd+FAA3fhgAN34cADd+JAA3figAN4B0ADeBAAA3gYAAN4IAADeCCAA3ghAAN4IYADeCIAA3giwAN4IwADeCNAA3gkAAN4JEADeCTAA3glAAN4JYADeCZAA3gmgAN4JsADeCeAA3gnwAN4KgADeDBAA3gygAN4MwADeDOAA3g1wAN4NoADeDdAA3g3wAN4SgADeFMAA3hcwAN4ZcADeGaAA3hnAAN4Z4ADeGgAA3hogAN4aQADeGlAA3hqAAN4cEADeHiAA3h5AAN4eYADeHoAA3h6gAN4ewADeHuAA3h8AAN4fIADeITAA3iFgAN4hkADeIcAA3iHwAN4iIADeIlAA3iKAAN4isADeItAA3iqAAN4qoADeKsAA3irgAN4rEADeKyAA3iswAN4rQADeK1AA3itwAN4rkADeK6AA3iuwAN4r0ADeK+AA3jOQAN4zsADeM9AA3jPwAN40IADeNDAA3jRAAN40UADeNGAA3jSAAN40oADeNLAA3jTAAN404ADeNPAA3jygAN48wADePPAA3j0QAN49QADePVAA3j1gAN49cADePYAA3j2gAN49wADePdAA3j3gAN4+AADePhAA3j+gAN4/sADeP8AA3j/gAN5HkADeR7AA3kfQAN5H8ADeSCAA3kgwAN5IQADeSFAA3khgAN5IgADeSKAA3kiwAN5IwADeSOAA3kjwAN5QoADeUMAA3lDgAN5RAADeUTAA3lFAAN5RUADeUWAA3lFwAN5RkADeUbAA3lHAAN5R0ADeUfAA3lIAAN5ZsADeWdAA3lnwAN5aEADeWkAA3lpQAN5aYADeWnAA3lqAAN5aoADeWsAA3lrQAN5a4ADeWwAA3lsQAN5iwADeYuAA3mMAAN5jIADeY1AA3mNgAN5jcADeY4AA3mOQAN5jsADeY9AA3mPgAN5j8ADeZBAA3mQgAN5r0ADea/AA3mwQAN5sMADebGAA3mxwAN5sgADebJAA3mygAN5swADebOAA3mzwAN5tAADebSAA3m0wAN5xwADedAAA3nZwAN54sADeeOAA3nkAAN55IADeeUAA3nlgAN55gADeeZAA3nnAAN57UADefSAA3n1AAN59YADefYAA3n2gAN59wADefeAA3n4AAN5/0ADegAAA3oAwAN6AYADegJAA3oDAAN6A8ADegSAA3oFAAN6I8ADeiRAA3okwAN6JUADeiYAA3omQAN6JoADeibAA3onAAN6J4ADeigAA3ooQAN6KIADeikAA3opQAN6SAADekiAA3pJAAN6SYADekpAA3pKgAN6SsADeksAA3pLQAN6S8ADekxAA3pMgAN6TMADek1AA3pNgAN6bEADemzAA3ptQAN6bcADem6AA3puwAN6bwADem9AA3pvgAN6cAADenCAA3pwwAN6cQADenGAA3pxwAN6kIADepEAA3qRgAN6kgADepLAA3qTAAN6k0ADepOAA3qTwAN6lEADepTAA3qVAAN6lUADepXAA3qWAAN6tMADerVAA3q1wAN6tkADercAA3q3QAN6t4ADerfAA3q4AAN6uIADerkAA3q5QAN6uYADeroAA3q6QAN62QADetmAA3raAAN62oADettAA3rbgAN628ADetwAA3rcQAN63MADet1AA3rdgAN63cADet5AA3regAN6/UADev3AA3r+QAN6/sADev+AA3r/wAN7AAADewBAA3sAgAN7AQADewGAA3sBwAN7AgADewKAA3sCwAN7J4ADezBAA3s4QAN7QEADe0DAA3tBQAN7QcADe0JAA3tDAAN7Q0ADe0OAA3tEQAN7RIADe0UAA3tFQAN7RcADe0aAA3tGwAN7RwADe0fAA3tIAAN7SUADe0+AA3tRwAN7UkADe1LAA3tVAAN7VcADe1aAA3tXAAN7aUADe3JAA3t8AAN7hQADe4XAA3uGQAN7hsADe4dAA3uHwAN7iEADe4iAA3uJQAN7j4ADe5fAA3uYQAN7mMADe5lAA3uZwAN7mkADe5rAA3ubQAN7m8ADe6QAA3ukwAN7pYADe6ZAA3unAAN7p8ADe6iAA3upQAN7qgADe6qAA3vJQAN7ycADe8pAA3vKwAN7y4ADe8vAA3vMAAN7zEADe8yAA3vNAAN7zYADe83AA3vOAAN7zoADe87AA3vtgAN77gADe+6AA3vvAAN778ADe/AAA3vwQAN78IADe/DAA3vxQAN78cADe/IAA3vyQAN78sADe/MAA3wRwAN8EkADfBMAA3wTgAN8FEADfBSAA3wUwAN8FQADfBVAA3wVwAN8FkADfBaAA3wWwAN8F0ADfBeAA3wdwAN8HgADfB5AA3wewAN8PYADfD4AA3w+gAN8PwADfD/AA3xAAAN8QEADfECAA3xAwAN8QUADfEHAA3xCAAN8QkADfELAA3xDAAN8YcADfGJAA3xiwAN8Y0ADfGQAA3xkQAN8ZIADfGTAA3xlAAN8ZYADfGYAA3xmQAN8ZoADfGcAA3xnQAN8hgADfIaAA3yHAAN8h4ADfIhAA3yIgAN8iMADfIkAA3yJQAN8icADfIpAA3yKgAN8isADfItAA3yLgAN8qkADfKrAA3yrQAN8q8ADfKyAA3yswAN8rQADfK1AA3ytgAN8rgADfK6AA3yuwAN8rwADfK+AA3yvwAN8zoADfM8AA3zPgAN80AADfNDAA3zRAAN80UADfNGAA3zRwAN80kADfNLAA3zTAAN800ADfNPAA3zUAAN85kADfO9AA3z5AAN9AgADfQLAA30DQAN9A8ADfQRAA30EwAN9BUADfQWAA30GQAN9DIADfRPAA30UQAN9FMADfRVAA30VwAN9FkADfRbAA30XQAN9HoADfR9AA30gAAN9IMADfSGAA30iQAN9IwADfSPAA30kQAN9QwADfUOAA31EAAN9RIADfUVAA31FgAN9RcADfUYAA31GQAN9RsADfUdAA31HgAN9R8ADfUhAA31IgAN9Z0ADfWfAA31oQAN9aMADfWmAA31pwAN9agADfWpAA31qgAN9awADfWuAA31rwAN9bAADfWyAA31swAN9i4ADfYwAA32MgAN9jQADfY3AA32OAAN9jkADfY6AA32OwAN9j0ADfY/AA32QAAN9kEADfZDAA32RAAN9r8ADfbBAA32wwAN9sUADfbIAA32yQAN9soADfbLAA32zAAN9s4ADfbQAA320QAN9tIADfbUAA321QAN91AADfdSAA33VAAN91YADfdZAA33WgAN91sADfdcAA33XQAN918ADfdhAA33YgAN92MADfdlAA33ZgAN9+EADffjAA335QAN9+cADffqAA336wAN9+wADfftAA337gAN9/AADffyAA338wAN9/QADff2AA339wAN+HIADfh0AA34dgAN+HgADfh7AA34fAAN+H0ADfh+AA34fwAN+IEADfiDAA34hAAN+IUADfiHAA34iAAN+RsADfk+AA35XgAN+X4ADfmAAA35ggAN+YQADfmGAA35iQAN+YoADfmLAA35jgAN+Y8ADfmRAA35kgAN+ZQADfmXAA35mAAN+ZkADfmcAA35nQAN+aYADfm/AA35yAAN+coADfnMAA351QAN+dgADfnbAA353QAN+iYADfpKAA36cQAN+pUADfqYAA36mgAN+pwADfqeAA36oAAN+qIADfqjAA36pgAN+r8ADfrgAA364gAN+uQADfrmAA366AAN+uoADfrsAA367gAN+vAADfsRAA37FAAN+xcADfsaAA37HQAN+yAADfsjAA37JgAN+ykADfsrAA37pgAN+6gADfuqAA37rAAN+68ADfuwAA37sQAN+7IADfuzAA37tQAN+7cADfu4AA37uQAN+7sADfu8AA38NwAN/DkADfw7AA38PQAN/EAADfxBAA38QgAN/EMADfxEAA38RgAN/EgADfxJAA38SgAN/EwADfxNAA38yAAN/MoADfzNAA38zwAN/NIADfzTAA381AAN/NUADfzWAA382AAN/NoADfzbAA383AAN/N4ADfzfAA38+AAN/PkADfz6AA38/AAN/XcADf15AA39ewAN/X0ADf2AAA39gQAN/YIADf2DAA39hAAN/YYADf2IAA39iQAN/YoADf2MAA39jQAN/ggADf4KAA3+DAAN/g4ADf4RAA3+EgAN/hMADf4UAA3+FQAN/hcADf4ZAA3+GgAN/hsADf4dAA3+HgAN/pkADf6bAA3+nQAN/p8ADf6iAA3+owAN/qQADf6lAA3+pgAN/qgADf6qAA3+qwAN/qwADf6uAA3+rwAN/yoADf8sAA3/LgAN/zAADf8zAA3/NAAN/zUADf82AA3/NwAN/zkADf87AA3/PAAN/z0ADf8/AA3/QAAN/7sADf+9AA3/vwAN/8EADf/EAA3/xQAN/8YADf/HAA3/yAAN/8oADf/MAA3/zQAN/84ADf/QAA3/0QAOABoADgA+AA4AZQAOAIkADgCMAA4AjgAOAJAADgCSAA4AlAAOAJYADgCXAA4AmgAOALMADgDQAA4A0gAOANQADgDWAA4A2AAOANoADgDcAA4A3gAOAPsADgD+AA4BAQAOAQQADgEHAA4BCgAOAQ0ADgEQAA4BEgAOAY0ADgGPAA4BkQAOAZMADgGWAA4BlwAOAZgADgGZAA4BmgAOAZwADgGeAA4BnwAOAaAADgGiAA4BowAOAh4ADgIgAA4CIgAOAiQADgInAA4CKAAOAikADgIqAA4CKwAOAi0ADgIvAA4CMAAOAjEADgIzAA4CNAAOAq8ADgKxAA4CswAOArUADgK4AA4CuQAOAroADgK7AA4CvAAOAr4ADgLAAA4CwQAOAsIADgLEAA4CxQAOA0AADgNCAA4DRQAOA0cADgNKAA4DSwAOA0wADgNNAA4DTgAOA1AADgNSAA4DUwAOA1QADgNWAA4DVwAOA9IADgPUAA4D1gAOA9gADgPbAA4D3AAOA90ADgPeAA4D3wAOA+EADgPjAA4D5AAOA+UADgPnAA4D6AAOBGMADgRlAA4EZwAOBGkADgRsAA4EbQAOBG4ADgRvAA4EcAAOBHIADgR0AA4EdQAOBHYADgR4AA4EeQAOBPQADgT2AA4E+AAOBPoADgT9AA4E/gAOBP8ADgUAAA4FAQAOBQMADgUFAA4FBgAOBQcADgUJAA4FCgAOBZ0ADgXAAA4F4AAOBgAADgYCAA4GBAAOBgYADgYIAA4GCwAOBgwADgYNAA4GEAAOBhEADgYTAA4GFAAOBhcADgYaAA4GGwAOBhwADgYfAA4GIAAOBiUADgY+AA4GRwAOBkkADgZMAA4GVQAOBlgADgZbAA4GXQAOBqYADgbKAA4G8QAOBxUADgcYAA4HGgAOBxwADgceAA4HIAAOByIADgcjAA4HJgAOBz8ADgdgAA4HYgAOB2QADgdmAA4HaAAOB2oADgdsAA4HbgAOB3AADgeRAA4HlAAOB5cADgeaAA4HnQAOB6AADgejAA4HpgAOB6kADgerAA4IJgAOCCgADggqAA4ILAAOCC8ADggwAA4IMQAOCDIADggzAA4INQAOCDcADgg4AA4IOQAOCDsADgg8AA4ItwAOCLkADgi7AA4IvQAOCMAADgjBAA4IwgAOCMMADgjEAA4IxgAOCMgADgjJAA4IygAOCMwADgjNAA4JSAAOCUoADglNAA4JTwAOCVIADglTAA4JVAAOCVUADglWAA4JWAAOCVoADglbAA4JXAAOCV4ADglfAA4JeAAOCXkADgl6AA4JfAAOCfcADgn5AA4J+wAOCf0ADgoAAA4KAQAOCgIADgoDAA4KBAAOCgYADgoIAA4KCQAOCgoADgoMAA4KDQAOCogADgqKAA4KjAAOCo4ADgqRAA4KkgAOCpMADgqUAA4KlQAOCpcADgqZAA4KmgAOCpsADgqdAA4KngAOCxkADgsbAA4LHQAOCx8ADgsiAA4LIwAOCyQADgslAA4LJgAOCygADgsqAA4LKwAOCywADgsuAA4LLwAOC6oADgusAA4LrgAOC7AADguzAA4LtAAOC7UADgu2AA4LtwAOC7kADgu7AA4LvAAOC70ADgu/AA4LwAAODDsADgw9AA4MPwAODEEADgxEAA4MRQAODEYADgxHAA4MSAAODEoADgxMAA4MTQAODE4ADgxQAA4MUQAODJoADgy+AA4M5QAODQkADg0MAA4NDwAODREADg0TAA4NFQAODRcADg0YAA4NGwAODTQADg1RAA4NVAAODVcADg1aAA4NXQAODWAADg1jAA4NZgAODYMADg2GAA4NiQAODYwADg2PAA4NkgAODZUADg2YAA4NmgAODhUADg4XAA4OGgAODhwADg4fAA4OIAAODiEADg4iAA4OIwAODiUADg4oAA4OKQAODioADg4sAA4OLQAODqgADg6qAA4OrQAODq8ADg6yAA4OswAODrQADg61AA4OtgAODrgADg67AA4OvAAODr0ADg6/AA4OwAAODzsADg89AA4PQAAOD0IADg9FAA4PRgAOD0cADg9IAA4PSQAOD0sADg9OAA4PTwAOD1AADg9SAA4PUwAOD84ADg/QAA4P0wAOD9UADg/YAA4P2QAOD9oADg/bAA4P3AAOD94ADg/hAA4P4gAOD+MADg/lAA4P5gAOEGkADhCNAA4QsQAOENQADhD7AA4RGwAOEUIADhFpAA4RiQAOEa0ADhHRAA4R0wAOEdYADhHYAA4R2gAOEdwADhHfAA4R4gAOEeQADhHmAA4R6QAOEesADhHtAA4R8AAOEfMADhH0AA4R+QAOEhIADhIXAA4SGQAOEh4ADhIhAA4SIwAOEmwADhKQAA4StwAOEtsADhLeAA4S4AAOEuIADhLkAA4S5gAOEugADhLpAA4S7AAOEwUADhMqAA4TLAAOEy4ADhMwAA4TMgAOEzQADhM2AA4TOAAOEzoADhM8AA4TYQAOE2QADhNnAA4TagAOE20ADhNwAA4TcwAOE3YADhN5AA4TfAAOE34ADhP5AA4T+wAOE/4ADhQAAA4UAwAOFAQADhQFAA4UBgAOFAcADhQJAA4UCwAOFAwADhQNAA4UDwAOFBAADhQhAA4UIgAOFCQADhSfAA4UoQAOFKMADhSlAA4UqAAOFKkADhSqAA4UqwAOFKwADhSuAA4UsAAOFLEADhSyAA4UtAAOFLUADhUwAA4VMgAOFTUADhU3AA4VOgAOFTsADhU8AA4VPQAOFT4ADhVAAA4VQgAOFUMADhVEAA4VRgAOFUcADhVYAA4VXQAOFWAADhViAA4VcwAOFYAADhWDAA4VhgAOFYkADhWLAA4VpwAOFbkADhXMAA4WRwAOFkkADhZLAA4WTQAOFlAADhZRAA4WUgAOFlMADhZUAA4WVgAOFlgADhZZAA4WWgAOFlwADhZdAA4W2AAOFtoADhbdAA4W3wAOFuIADhbjAA4W5AAOFuUADhbmAA4W6AAOFuoADhbrAA4W7AAOFu4ADhbvAA4XAAAOFwEADhcDAA4XfgAOF4AADheCAA4XhAAOF4cADheIAA4XiQAOF4oADheLAA4XjQAOF48ADheQAA4XkQAOF5MADheUAA4YDwAOGBEADhgUAA4YFgAOGBkADhgaAA4YGwAOGBwADhgdAA4YHwAOGCEADhgiAA4YIwAOGCUADhgmAA4YPwAOGEAADhhBAA4YQwAOGL4ADhjAAA4YwgAOGMQADhjHAA4YyAAOGMkADhjKAA4YywAOGM0ADhjPAA4Y0AAOGNEADhjTAA4Y1AAOGU8ADhlRAA4ZVAAOGVYADhlZAA4ZWgAOGVsADhlcAA4ZXQAOGV8ADhlhAA4ZYgAOGWMADhllAA4ZZgAOGXkADhmSAA4ZvwAOGcIADhnFAA4ZyAAOGcsADhnOAA4Z0QAOGdQADhnXAA4Z2gAOGd0ADhngAA4aDQAOGhAADhoTAA4aFgAOGhkADhocAA4aHwAOGiIADholAA4aKAAOGisADhouAA4aMAAOGkwADhpfAA4acQAOGoMADhqLAA4arwAOGssADhreAA4bcQAOG5QADhu0AA4b1AAOG9YADhvYAA4b2gAOG9wADhvfAA4b4AAOG+EADhvkAA4b5QAOG+cADhvoAA4b6gAOG+0ADhvuAA4b7wAOG/IADhvzAA4b/AAOHBUADhweAA4cIAAOHCIADhwrAA4cLgAOHDEADhwzAA4cfAAOHKAADhzHAA4c6wAOHO4ADhzwAA4c8gAOHPQADhz2AA4c+AAOHPkADhz8AA4dFQAOHTYADh04AA4dOgAOHTwADh0+AA4dQAAOHUIADh1EAA4dRgAOHWcADh1qAA4dbQAOHXAADh1zAA4ddgAOHXkADh18AA4dfwAOHYEADh38AA4d/gAOHgAADh4CAA4eBQAOHgYADh4HAA4eCAAOHgkADh4LAA4eDQAOHg4ADh4PAA4eEQAOHhIADh6NAA4ejwAOHpEADh6TAA4elgAOHpcADh6YAA4emQAOHpoADh6cAA4engAOHp8ADh6gAA4eogAOHqMADh8eAA4fIAAOHyMADh8lAA4fKAAOHykADh8qAA4fKwAOHywADh8uAA4fMAAOHzEADh8yAA4fNAAOHzUADh9OAA4fTwAOH1AADh9SAA4fzQAOH88ADh/RAA4f0wAOH9YADh/XAA4f2AAOH9kADh/aAA4f3AAOH94ADh/fAA4f4AAOH+IADh/jAA4gXgAOIGAADiBiAA4gZAAOIGcADiBoAA4gaQAOIGoADiBrAA4gbQAOIG8ADiBwAA4gcQAOIHMADiB0AA4g7wAOIPEADiDzAA4g9QAOIPgADiD5AA4g+gAOIPsADiD8AA4g/gAOIQAADiEBAA4hAgAOIQQADiEFAA4hgAAOIYIADiGEAA4hhgAOIYkADiGKAA4hiwAOIYwADiGNAA4hjwAOIZEADiGSAA4hkwAOIZUADiGWAA4iEQAOIhMADiIVAA4iFwAOIhoADiIbAA4iHAAOIh0ADiIeAA4iIAAOIiIADiIjAA4iJAAOIiYADiInAA4icAAOIpQADiK7AA4i3wAOIuIADiLkAA4i5gAOIugADiLqAA4i7AAOIu0ADiLwAA4jCQAOIyYADiMoAA4jKgAOIywADiMuAA4jMAAOIzIADiM0AA4jUQAOI1QADiNXAA4jWgAOI10ADiNgAA4jYwAOI2YADiNoAA4j4wAOI+UADiPoAA4j6gAOI+0ADiPuAA4j7wAOI/AADiPxAA4j8wAOI/UADiP2AA4j9wAOI/kADiP6AA4kdQAOJHcADiR5AA4kewAOJH4ADiR/AA4kgAAOJIEADiSCAA4khAAOJIYADiSHAA4kiAAOJIoADiSLAA4lBgAOJQgADiUKAA4lDAAOJQ8ADiUQAA4lEQAOJRIADiUTAA4lFQAOJRcADiUYAA4lGQAOJRsADiUcAA4llwAOJZkADiWcAA4lngAOJaEADiWiAA4lowAOJaQADiWlAA4lpwAOJakADiWqAA4lqwAOJa0ADiWuAA4mKQAOJisADiYtAA4mLwAOJjIADiYzAA4mNAAOJjUADiY2AA4mOAAOJjoADiY7AA4mPAAOJj4ADiY/AA4mugAOJrwADia+AA4mwAAOJsMADibEAA4mxQAOJsYADibHAA4myQAOJssADibMAA4mzQAOJs8ADibQAA4nSwAOJ00ADidPAA4nUQAOJ1QADidVAA4nVgAOJ1cADidYAA4nWgAOJ1wADiddAA4nXgAOJ2AADidhAA4n9AAOKBcADig3AA4oVwAOKFkADihbAA4oXQAOKF8ADihiAA4oYwAOKGQADihnAA4oaAAOKGoADihrAA4obQAOKHAADihxAA4ocgAOKHUADih2AA4oewAOKJQADiidAA4onwAOKKEADiiqAA4orQAOKLAADiiyAA4o+wAOKR8ADilGAA4pagAOKW0ADilvAA4pcQAOKXMADil1AA4pdwAOKXgADil7AA4plAAOKbUADim3AA4puQAOKbsADim9AA4pvwAOKcEADinDAA4pxQAOKeYADinpAA4p7AAOKe8ADinyAA4p9QAOKfgADin7AA4p/gAOKgAADip7AA4qfQAOKn8ADiqBAA4qhAAOKoUADiqGAA4qhwAOKogADiqKAA4qjAAOKo0ADiqOAA4qkAAOKpEADisMAA4rDgAOKxAADisSAA4rFQAOKxYADisXAA4rGAAOKxkADisbAA4rHQAOKx4ADisfAA4rIQAOKyIADiudAA4rnwAOK6IADiukAA4rpwAOK6gADiupAA4rqgAOK6sADiutAA4rrwAOK7AADiuxAA4rswAOK7QADivNAA4rzgAOK88ADivRAA4sTAAOLE4ADixQAA4sUgAOLFUADixWAA4sVwAOLFgADixZAA4sWwAOLF0ADixeAA4sXwAOLGEADixiAA4s3QAOLN8ADizhAA4s4wAOLOYADiznAA4s6AAOLOkADizqAA4s7AAOLO4ADizvAA4s8AAOLPIADizzAA4tbgAOLXAADi1yAA4tdAAOLXcADi14AA4teQAOLXoADi17AA4tfQAOLX8ADi2AAA4tgQAOLYMADi2EAA4t/wAOLgEADi4DAA4uBQAOLggADi4JAA4uCgAOLgsADi4MAA4uDgAOLhAADi4RAA4uEgAOLhQADi4VAA4ukAAOLpIADi6UAA4ulgAOLpkADi6aAA4umwAOLpwADi6dAA4unwAOLqEADi6iAA4uowAOLqUADi6mAA4u7wAOLxMADi86AA4vXgAOL2EADi9jAA4vZQAOL2cADi9pAA4vawAOL2wADi9vAA4viAAOL6UADi+nAA4vqQAOL6sADi+tAA4vrwAOL7EADi+zAA4v0AAOL9MADi/WAA4v2QAOL9wADi/fAA4v4gAOL+UADi/nAA4wYgAOMGQADjBmAA4waAAOMGsADjBsAA4wbQAOMG4ADjBvAA4wcQAOMHMADjB0AA4wdQAOMHcADjB4AA4w8wAOMPUADjD3AA4w+QAOMPwADjD9AA4w/gAOMP8ADjEAAA4xAgAOMQQADjEFAA4xBgAOMQgADjEJAA4xhAAOMYYADjGIAA4xigAOMY0ADjGOAA4xjwAOMZAADjGRAA4xkwAOMZUADjGWAA4xlwAOMZkADjGaAA4yFQAOMhcADjIZAA4yGwAOMh4ADjIfAA4yIAAOMiEADjIiAA4yJAAOMiYADjInAA4yKAAOMioADjIrAA4ypgAOMqgADjKqAA4yrAAOMq8ADjKwAA4ysQAOMrIADjKzAA4ytQAOMrcADjK4AA4yuQAOMrsADjK8AA4zNwAOMzkADjM7AA4zPQAOM0AADjNBAA4zQgAOM0MADjNEAA4zRgAOM0gADjNJAA4zSgAOM0wADjNNAA4zyAAOM8oADjPMAA4zzgAOM9EADjPSAA4z0wAOM9QADjPVAA4z1wAOM9kADjPaAA4z2wAOM90ADjPeAA40cQAONJQADjS0AA401AAONNYADjTYAA402gAONNwADjTfAA404AAONOEADjTkAA405QAONOcADjToAA406gAONO0ADjTuAA407wAONPIADjTzAA40+AAONREADjUaAA41HAAONR4ADjUnAA41KgAONS0ADjUvAA41eAAONZwADjXDAA415wAONeoADjXsAA417gAONfAADjXyAA419AAONfUADjX4AA42EQAONjIADjY0AA42NgAONjgADjY6AA42PAAONj4ADjZAAA42QgAONmMADjZmAA42aQAONmwADjZvAA42cgAONnUADjZ4AA42ewAONn0ADjb4AA42+gAONvwADjb+AA43AQAONwIADjcDAA43BAAONwUADjcHAA43CQAONwoADjcLAA43DQAONw4ADjeJAA43iwAON40ADjePAA43kgAON5MADjeUAA43lQAON5YADjeYAA43mgAON5sADjecAA43ngAON58ADjgaAA44HAAOOB8ADjghAA44JAAOOCUADjgmAA44JwAOOCgADjgqAA44LAAOOC0ADjguAA44MAAOODEADjhKAA44SwAOOEwADjhOAA44yQAOOMsADjjNAA44zwAOONIADjjTAA441AAOONUADjjWAA442AAOONoADjjbAA443AAOON4ADjjfAA45WgAOOVwADjleAA45YAAOOWMADjlkAA45ZQAOOWYADjlnAA45aQAOOWsADjlsAA45bQAOOW8ADjlwAA456wAOOe0ADjnvAA458QAOOfQADjn1AA459gAOOfcADjn4AA45+gAOOfwADjn9AA45/gAOOgAADjoBAA46fAAOOn4ADjqAAA46ggAOOoUADjqGAA46hwAOOogADjqJAA46iwAOOo0ADjqOAA46jwAOOpEADjqSAA47DQAOOw8ADjsRAA47EwAOOxYADjsXAA47GAAOOxkADjsaAA47HAAOOx4ADjsfAA47IAAOOyIADjsjAA47bAAOO5AADju3AA472wAOO94ADjvgAA474gAOO+QADjvmAA476AAOO+kADjvsAA48BQAOPCIADjwkAA48JgAOPCgADjwqAA48LAAOPC4ADjwwAA48TQAOPFAADjxTAA48VgAOPFkADjxcAA48XwAOPGIADjxkAA483wAOPOEADjzjAA485QAOPOgADjzpAA486gAOPOsADjzsAA487gAOPPAADjzxAA488gAOPPQADjz1AA49cAAOPXIADj10AA49dgAOPXkADj16AA49ewAOPXwADj19AA49fwAOPYEADj2CAA49gwAOPYUADj2GAA4+AQAOPgMADj4FAA4+BwAOPgoADj4LAA4+DAAOPg0ADj4OAA4+EAAOPhIADj4TAA4+FAAOPhYADj4XAA4+kgAOPpQADj6XAA4+mQAOPpwADj6dAA4+ngAOPp8ADj6gAA4+ogAOPqQADj6lAA4+pgAOPqgADj6pAA4/JAAOPyYADj8oAA4/KgAOPy0ADj8uAA4/LwAOPzAADj8xAA4/MwAOPzUADj82AA4/NwAOPzkADj86AA4/tQAOP7cADj+5AA4/uwAOP74ADj+/AA4/wAAOP8EADj/CAA4/xAAOP8YADj/HAA4/yAAOP8oADj/LAA5ARgAOQEgADkBKAA5ATAAOQE8ADkBQAA5AUQAOQFIADkBTAA5AVQAOQFcADkBYAA5AWQAOQFsADkBcAA5A7wAOQRIADkEyAA5BUgAOQVQADkFWAA5BWAAOQVo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ADlJ/AA5SgAAOUoIADlKDAA5S/gAOUwAADlMCAA5TBAAOUwcADlMIAA5TCQAOUwoADlMLAA5TDQAOUw8ADlMQAA5TEQAOUxMADlMUAA5TjwAOU5EADlOTAA5TlQAOU5gADlOZAA5TmgAOU5sADlOcAA5TngAOU6AADlOhAA5TogAOU6QADlOlAA5UIAAOVCIADlQkAA5UJgAOVCkADlQqAA5UKwAOVCwADlQtAA5ULwAOVDEADlQyAA5UMwAOVDUADlQ2AA5UfwAOVKMADlTKAA5U7gAOVPEADlT0AA5U9gAOVPgADlT6AA5U/AAOVP0ADlUAAA5VGQAOVTYADlU5AA5VPAAOVT8ADlVCAA5VRQAOVUgADlVLAA5VaAAOVWsADlVuAA5VcQAOVXQADlV3AA5VegAOVX0ADlV/AA5V+gAOVfwADlX/AA5WAQAOVgQADlYFAA5WBgAOVgcADlYIAA5WCgAOVg0ADlYOAA5WDwAOVhEADlYSAA5WjQAOVo8ADlaSAA5WlAAOVpcADlaYAA5WmQAOVpoADlabAA5WnQAOVqAADlahAA5WogAOVqQADlalAA5XIAAOVyIADlclAA5XJwAOVyoADlcrAA5XLAAOVy0ADlcuAA5XMAAOVzMADlc0AA5XNQAOVzcADlc4AA5XswAOV7UADle4AA5XugAOV70ADle+AA5XvwAOV8AADlfBAA5XwwAOV8YADlfHAA5XyAAOV8oADlfLAA5YTgAOWHIADliWAA5YuQAOWOAADlkAAA5ZJwAOWU4ADlluAA5ZkgAOWbYADlm4AA5ZuwAOWb0ADlm/AA5ZwQAOWcQADlnHAA5ZyQAOWcsADlnOAA5Z0AAOWdIADlnVAA5Z2AAOWdkADlneAA5Z9wAOWfwADln+AA5aAwAOWgYADloIAA5aUQAOWnUADlqcAA5awAAOWsMADlrFAA5axwAOWskADlrLAA5azQAOWs4ADlrRAA5a6gAOWw8ADlsRAA5bEwAOWxUADlsXAA5bGQAOWxsADlsdAA5bHwAOWyEADltGAA5bSQAOW0wADltPAA5bUgAOW1UADltYAA5bWwAOW14ADlthAA5bYwAOW94ADlvgAA5b4wAOW+UADlvoAA5b6QAOW+oADlvrAA5b7AAOW+4ADlvwAA5b8QAOW/IADlv0AA5b9QAOXAYADlwHAA5cCQAOXIQADlyGAA5ciAAOXIoADlyNAA5cjgAOXI8ADlyQAA5ckQAOXJMADlyVAA5clgAOXJcADlyZAA5cmgAOXRUADl0XAA5dGgAOXRwADl0fAA5dIAAOXSEADl0iAA5dIwAOXSUADl0nAA5dKAAOXSkADl0rAA5dLAAOXT0ADl1CAA5dRQAOXUcADl1YAA5dXQAOXWAADl1iAA5dcAAOXesADl3tAA5d7wAOXfEADl30AA5d9QAOXfYADl33AA5d+AAOXfoADl38AA5d/QAOXf4ADl4AAA5eAQAOXnwADl5+AA5egQAOXoMADl6GAA5ehwAOXogADl6JAA5eigAOXowADl6OAA5ejwAOXpAADl6SAA5ekwAOXqQADl6lAA5epwAOXyIADl8kAA5fJgAOXygADl8rAA5fLAAOXy0ADl8uAA5fLwAOXzEADl8zAA5fNAAOXzUADl83AA5fOAAOX7MADl+1AA5fuAAOX7oADl+9AA5fvgAOX78ADl/AAA5fwQAOX8MADl/FAA5fxgAOX8cADl/JAA5fygAOX+MADl/kAA5f5QAOX+cADmBiAA5gZAAOYGYADmBoAA5gawAOYGwADmBtAA5gbgAOYG8ADmBxAA5gcwAOYHQADmB1AA5gdwAOYHgADmDzAA5g9QAOYPgADmD6AA5g/QAOYP4ADmD/AA5hAAAOYQEADmEDAA5hBQAOYQYADmEHAA5hCQAOYQoADmEkAA5hPQAOYU4ADmFRAA5hVAAOYVcADmFaAA5hawAOYW4ADmFxAA5hdAAOYXcADmF5AA5hhAAOYZIADmIlAA5iSAAOYmgADmKIAA5iigAOYowADmKOAA5ikAAOYpMADmKUAA5ilQAOYpgADmKZAA5imwAOYpwADmKfAA5iogAOYqMADmKkAA5ipwAOYqgADmKtAA5ixgAOYs8ADmLRAA5i1AAOYt0ADmLgAA5i4wAOYuUADmMuAA5jUgAOY3kADmOdAA5joAAOY6IADmOkAA5jpgAOY6gADmOqAA5jqwAOY64ADmPHAA5j6AAOY+oADmPsAA5j7gAOY/AADmPyAA5j9AAOY/YADmP4AA5kGQAOZBwADmQfAA5kIgAOZCUADmQoAA5kKwAOZC4ADmQxAA5kMwAOZK4ADmSwAA5ksgAOZLQADmS3AA5kuAAOZLkADmS6AA5kuwAOZL0ADmS/AA5kwAAOZMEADmTDAA5kxAAOZT8ADmVBAA5lQwAOZUUADmVIAA5lSQAOZUoADmVLAA5lTAAOZU4ADmVQAA5lUQAOZVIADmVUAA5lVQAOZdAADmXSAA5l1QAOZdcADmXaAA5l2wAOZdwADmXdAA5l3gAOZeAADmXiAA5l4wAOZeQADmXmAA5l5wAOZgAADmYBAA5mAgAOZgQADmZ/AA5mgQAOZoMADmaFAA5miAAOZokADmaKAA5miwAOZowADmaOAA5mkAAOZpEADmaSAA5mlAAOZpUADmcQAA5nEgAOZxQADmcWAA5nGQAOZxoADmcbAA5nHAAOZx0ADmcfAA5nIQAOZyIADmcjAA5nJQAOZyYADmehAA5nowAOZ6UADmenAA5nqgAOZ6sADmesAA5nrQAOZ64ADmewAA5nsgAOZ7MADme0AA5ntgAOZ7cADmgyAA5oNAAOaDYADmg4AA5oOwAOaDwADmg9AA5oPgAOaD8ADmhBAA5oQwAOaEQADmhFAA5oRwAOaEgADmjDAA5oxQAOaMcADmjJAA5ozAAOaM0ADmjOAA5ozwAOaNAADmjSAA5o1AAOaNUADmjWAA5o2AAOaNkADmkiAA5pRgAOaW0ADmmRAA5plAAOaZcADmmZAA5pmwAOaZ0ADmmfAA5poAAOaaMADmm8AA5p2QAOadwADmnfAA5p4gAOaeUADmnoAA5p6wAOae4ADmoLAA5qDgAOahEADmoUAA5qFwAOahoADmodAA5qIAAOaiIADmqdAA5qnwAOaqIADmqkAA5qpwAOaqgADmqpAA5qqgAOaqsADmqtAA5qsAAOarEADmqyAA5qtAAOarUADmswAA5rMgAOazUADms3AA5rOgAOazsADms8AA5rPQAOaz4ADmtAAA5rQwAOa0QADmtFAA5rRwAOa0gADmvDAA5rxQAOa8gADmvKAA5rzQAOa84ADmvPAA5r0AAOa9EADmvTAA5r1gAOa9cADmvYAA5r2gAOa9sADmxWAA5sWAAObFsADmxdAA5sYAAObGEADmxiAA5sYwAObGQADmxmAA5saQAObGoADmxrAA5sbQAObG4ADmzpAA5s6wAObO0ADmzvAA5s8gAObPMADmz0AA5s9QAObPYADmz4AA5s+wAObPwADmz9AA5s/wAObQAADm17AA5tfQAObX8ADm2BAA5thAAObYUADm2GAA5thwAObYgADm2KAA5tjQAObY4ADm2PAA5tkQAObZIADm4NAA5uDwAObhIADm4UAA5uFwAObhgADm4ZAA5uGgAObhsADm4dAA5uIAAObiEADm4iAA5uJAAObiUADm64AA5u2wAObvsADm8bAA5vHQAObx8ADm8hAA5vIwAObyYADm8nAA5vKAAObysADm8sAA5vLgAOby8ADm8xAA5vNAAObzUADm82AA5vOQAObzoADm9DAA5vXAAOb2UADm9nAA5vaQAOb3IADm91AA5veAAOb3oADm/DAA5v5wAOcA4ADnAyAA5wNQAOcDcADnA5AA5wOwAOcD0ADnA/AA5wQAAOcEMADnBcAA5wfQAOcH8ADnCBAA5wgwAOcIUADnCHAA5wiQAOcIsADnCNAA5wrgAOcLEADnC0AA5wtwAOcLoADnC9AA5wwAAOcMMADnDGAA5wyAAOcUMADnFFAA5xRwAOcUkADnFMAA5xTQAOcU4ADnFPAA5xUAAOcVIADnFUAA5xVQAOcVYADnFYAA5xWQAOcdQADnHWAA5x2AAOcdoADnHdAA5x3gAOcd8ADnHgAA5x4QAOceMADnHlAA5x5gAOcecADnHpAA5x6gAOcmUADnJnAA5yagAOcmwADnJvAA5ycAAOcnEADnJyAA5ycwAOcnUADnJ3AA5yeAAOcnkADnJ7AA5yfAAOcpUADnKWAA5ylwAOcpkADnMUAA5zFgAOcxgADnMaAA5zHQAOcx4ADnMfAA5zIAAOcyEADnMjAA5zJQAOcyYADnMnAA5zKQAOcyoADnOlAA5zpwAOc6kADnOrAA5zrgAOc68ADnOwAA5zsQAOc7IADnO0AA5ztgAOc7cADnO4AA5zugAOc7sADnQ2AA50OAAOdDoADnQ8AA50PwAOdEAADnRBAA50QgAOdEMADnRFAA50RwAOdEgADnRJAA50SwAOdEwADnTHAA50yQAOdMsADnTNAA500AAOdNEADnTSAA500wAOdNQADnTWAA502AAOdNkADnTaAA503AAOdN0ADnVYAA51WgAOdVwADnVeAA51YQAOdWIADnVjAA51ZAAOdWUADnVnAA51aQAOdWoADnVrAA51bQAOdW4ADnW3AA512wAOdgIADnYmAA52KQAOdisADnYtAA52LwAOdjEADnYzAA52NAAOdjcADnZQAA52bQAOdm8ADnZxAA52cwAOdnUADnZ3AA52eQAOdnsADnaYAA52mwAOdp4ADnahAA52pAAOdqcADnaqAA52rQAOdq8ADncqAA53LAAOdy4ADncwAA53MwAOdzQADnc1AA53NgAOdzcADnc5AA53OwAOdzwADnc9AA53PwAOd0AADne7AA53vQAOd78ADnfBAA53xAAOd8UADnfGAA53xwAOd8gADnfKAA53zAAOd80ADnfOAA530AAOd9EADnhMAA54TgAOeFAADnhSAA54VQAOeFYADnhXAA54WAAOeFkADnhbAA54XQAOeF4ADnhfAA54YQAOeGIADnjdAA543wAOeOIADnjkAA545wAOeOgADnjpAA546gAOeOsADnjtAA547wAOePAADnjxAA548wAOePQADnlvAA55cQAOeXMADnl1AA55eAAOeXkADnl6AA55ewAOeXwADnl+AA55gAAOeYEADnmCAA55hAAOeYUADnoAAA56AgAOegQADnoGAA56CQAOegoADnoLAA56DAAOeg0ADnoPAA56EQAOehIADnoTAA56FQAOehYADnqRAA56kwAOepUADnqXAA56mgAOepsADnqcAA56nQAOep4ADnqgAA56ogAOeqMADnqkAA56pgAOeqcADns6AA57XQAOe30ADnudAA57nwAOe6EADnujAA57pQAOe6gADnupAA57qgAOe60ADnuuAA57sAAOe7EADnuzAA57tgAOe7cADnu4AA57uwAOe7wADnvBAA572gAOe+MADnvlAA575wAOe/AADnvzAA579gAOe/gADnxBAA58ZQAOfIwADnywAA58swAOfLUADny3AA58uQAOfLsADny9AA58vgAOfMEADnzaAA58+wAOfP0ADnz/AA59AQAOfQMADn0FAA59BwAOfQkADn0LAA59LAAOfS8ADn0yAA59NQAOfTgADn07AA59PgAOfUEADn1EAA59RgAOfcEADn3DAA59xQAOfccADn3KAA59ywAOfcwADn3NAA59zgAOfdAADn3SAA590wAOfdQADn3WAA591wAOflIADn5UAA5+VgAOflgADn5bAA5+XAAOfl0ADn5eAA5+XwAOfmEADn5jAA5+ZAAOfmUADn5nAA5+aAAOfuMADn7lAA5+6AAOfuoADn7tAA5+7gAOfu8ADn7wAA5+8QAOfvMADn71AA5+9gAOfvcADn75AA5++gAOfxMADn8UAA5/FQAOfxcADn+SAA5/lAAOf5YADn+YAA5/mwAOf5wADn+dAA5/ngAOf58ADn+hAA5/owAOf6QADn+lAA5/pwAOf6gADoAjAA6AJQAOgCcADoApAA6ALAAOgC0ADoAuAA6ALwAOgDAADoAyAA6ANAAOgDUADoA2AA6AOAAOgDkADoC0AA6AtgAOgLgADoC6AA6AvQAOgL4ADoC/AA6AwAAOgMEADoDDAA6AxQAOgMYADoDHAA6AyQAOgMoADoFFAA6BRwAOgUkADoFLAA6BTgAOgU8ADoFQAA6BUQAOgVIADoFUAA6BVgAOgVcADoFYAA6BWgAOgVsADoHWAA6B2AAOgdoADoHcAA6B3wAOgeAADoHhAA6B4gAOgeMADoHlAA6B5wAOgegADoHpAA6B6wAOgewADoI1AA6CWQAOgoAADoKkAA6CpwAOgqkADoKrAA6CrQAOgq8ADoKxAA6CsgAOgrUADoLOAA6C6wAOgu0ADoLvAA6C8QAOgvMADoL1AA6C9wAOgvkADoMWAA6DGQAOgxwADoMfAA6DIgAOgyUADoMoAA6DKwAOgy0ADoOoAA6DqgAOg6wADoOuAA6DsQAOg7IADoOzAA6DtAAOg7UADoO3AA6DuQAOg7oADoO7AA6DvQAOg74ADoQ5AA6EOwAOhD0ADoQ/AA6EQgAOhEMADoREAA6ERQAOhEYADoRIAA6ESgAOhEsADoRMAA6ETgAOhE8ADoTKAA6EzAAOhM4ADoTQAA6E0wAOhNQADoTVAA6E1gAOhNcADoTZAA6E2wAOhNwADoTdAA6E3wAOhOAADoVbAA6FXQAOhV8ADoVhAA6FZAAOhWUADoVmAA6FZwAOhWgADoVqAA6FbAAOhW0ADoVuAA6FcAAOhXEADoXsAA6F7gAOhfAADoXyAA6F9QAOhfYADoX3AA6F+AAOhfkADoX7AA6F/QAOhf4ADoX/AA6GAQAOhgIADoZ9AA6GfwAOhoEADoaDAA6GhgAOhocADoaIAA6GiQAOhooADoaMAA6GjgAOho8ADoaQAA6GkgAOhpMADocOAA6HEAAOhxIADocUAA6HFwAOhxgADocZAA6HGgAOhxsADocdAA6HHwAOhyAADochAA6HIwAOhyQADoe3AA6H2gAOh/oADogaAA6IHAAOiB4ADoggAA6IIgAOiCUADogmAA6IJwAOiCoADogrAA6ILQAOiC4ADogwAA6IMwAOiDQADog1AA6IOAAOiDkADog+AA6IVwAOiGAADohiAA6IZAAOiG0ADohwAA6IcwAOiHUADoi+AA6I4gAOiQkADoktAA6JMAAOiTIADok0AA6JNgAOiTgADok6AA6JOwAOiT4ADolXAA6JeAAOiXoADol8AA6JfgAOiYAADomCAA6JhAAOiYYADomIAA6JqQAOiawADomvAA6JsgAOibUADom4AA6JuwAOib4ADonBAA6JwwAOij4ADopAAA6KQgAOikQADopHAA6KSAAOikkADopKAA6KSwAOik0ADopPAA6KUAAOilEADopTAA6KVAAOis8ADorRAA6K0wAOitUADorYAA6K2QAOitoADorbAA6K3AAOit4ADorgAA6K4QAOiuIADorkAA6K5QAOi2AADotiAA6LZQAOi2cADotqAA6LawAOi2wADottAA6LbgAOi3AADotyAA6LcwAOi3QADot2AA6LdwAOi5AADouRAA6LkgAOi5QADowPAA6MEQAOjBMADowVAA6MGAAOjBkADowaAA6MGwAOjBwADoweAA6MIAAOjCEADowiAA6MJAAOjCUADoygAA6MogAOjKQADoymAA6MqQAOjKoADoyrAA6MrAAOjK0ADoyvAA6MsQAOjLIADoyzAA6MtQAOjLYADo0xAA6NMwAOjTUADo03AA6NOgAOjTsADo08AA6NPQAOjT4ADo1AAA6NQgAOjUMADo1EAA6NRgAOjUcADo3CAA6NxAAOjcYADo3IAA6NywAOjcwADo3NAA6NzgAOjc8ADo3RAA6N0wAOjdQADo3VAA6N1wAOjdgADo5TAA6OVQAOjlcADo5ZAA6OXAAOjl0ADo5eAA6OXwAOjmAADo5iAA6OZAAOjmUADo5mAA6OaAAOjmkADo6yAA6O1gAOjv0ADo8hAA6PJAAOjyYADo8oAA6PKgAOjywADo8uAA6PLwAOjzIADo9LAA6PaAAOj2oADo9sAA6PbgAOj3AADo9yAA6PdAAOj3YADo+TAA6PlgAOj5kADo+cAA6PnwAOj6IADo+lAA6PqAAOj6oADpAlAA6QJwAOkCkADpArAA6QLgAOkC8ADpAwAA6QMQAOkDIADpA0AA6QNgAOkDcADpA4AA6QOgAOkDsADpC2AA6QuAAOkLoADpC8AA6QvwAOkMAADpDBAA6QwgAOkMMADpDFAA6QxwAOkMgADpDJAA6QywAOkMwADpFHAA6RSQAOkUsADpFNAA6RUAAOkVEADpFSAA6RUwAOkVQADpFWAA6RWAAOkVkADpFaAA6RXAAOkV0ADpHYAA6R2gAOkd0ADpHfAA6R4gAOkeMADpHkAA6R5QAOkeYADpHoAA6R6gAOkesADpHsAA6R7gAOke8ADpJqAA6SbAAOkm4ADpJwAA6ScwAOknQADpJ1AA6SdgAOkncADpJ5AA6SewAOknwADpJ9AA6SfwAOkoAADpL7AA6S/QAOkv8ADpMBAA6TBAAOkwUADpMGAA6TBwAOkwgADpMKAA6TDAAOkw0ADpMOAA6TEAAOkxEADpOMAA6TjgAOk5AADpOSAA6TlQAOk5YADpOXAA6TmAAOk5kADpObAA6TnQAOk54ADpOfAA6ToQAOk6IADpOzAA6TtAAOk7YADpQxAA6UMwAOlDUADpQ3AA6UOgAOlDsADpQ8AA6UPQAOlD4ADpRAAA6UQwAOlEQADpRFAA6URwAOlEgADpTDAA6UxQAOlMcADpTJAA6UzAAOlM0ADpTOAA6UzwAOlNAADpTSAA6U1QAOlNYADpTXAA6U2QAOlNoADpVVAA6VVwAOlVoADpVcAA6VXwAOlWAADpVhAA6VYgAOlWMADpVlAA6VaAAOlWkADpVqAA6VbAAOlW0ADpYAAA6WIwAOlkMADpZjAA6WZQAOlmcADpZpAA6WawAOlm4ADpZvAA6WcAAOlnMADpZ0AA6WdgAOlncADpZ6AA6WfQAOln4ADpZ/AA6WggAOloMADpaIAA6WoQAOlqoADpasAA6WrwAOlrgADpa7AA6WvgAOlsAADpcJAA6XLQAOl1QADpd4AA6XewAOl30ADpd/AA6XgQAOl4MADpeFAA6XhgAOl4kADpeiAA6XwwAOl8UADpfHAA6XyQAOl8sADpfNAA6XzwAOl9EADpfTAA6X9AAOl/cADpf6AA6X/QAOmAAADpgDAA6YBgAOmAkADpgMAA6YDgAOmIkADpiLAA6YjQAOmI8ADpiSAA6YkwAOmJQADpiVAA6YlgAOmJgADpiaAA6YmwAOmJwADpieAA6YnwAOmRoADpkcAA6ZHgAOmSAADpkjAA6ZJAAOmSUADpkmAA6ZJwAOmSkADpkrAA6ZLAAOmS0ADpkvAA6ZMAAOmasADpmtAA6ZsAAOmbIADpm1AA6ZtgAOmbcADpm4AA6ZuQAOmbsADpm9AA6ZvgAOmb8ADpnBAA6ZwgAOmdsADpncAA6Z3QAOmd8ADppaAA6aXAAOml4ADppgAA6aYwAOmmQADpplAA6aZgAOmmcADpppAA6aawAOmmwADpptAA6abwAOmnAADprrAA6a7QAOmu8ADprxAA6a9AAOmvUADpr2AA6a9wAOmvgADpr6AA6a/AAOmv0ADpr+AA6bAAAOmwEADpt8AA6bfgAOm4AADpuCAA6bhQAOm4YADpuHAA6biAAOm4kADpuLAA6bjQAOm44ADpuPAA6bkQAOm5IADpwNAA6cDwAOnBEADpwTAA6cFgAOnBcADpwYAA6cGQAOnBoADpwcAA6cHgAOnB8ADpwgAA6cIgAOnCMADpyeAA6coAAOnKIADpykAA6cpwAOnKgADpypAA6cqgAOnKsADpytAA6crwAOnLAADpyxAA6cswAOnLQADpz9AA6dIQAOnUgADp1sAA6dbwAOnXIADp10AA6ddgAOnXgADp16AA6dewAOnX4ADp2XAA6dtAAOnbcADp26AA6dvQAOncAADp3DAA6dxgAOnckADp3mAA6d6QAOnewADp3vAA6d8gAOnfUADp34AA6d+wAOnf0ADp54AA6eegAOnn0ADp5/AA6eggAOnoMADp6EAA6ehQAOnoYADp6IAA6eiwAOnowADp6NAA6ejwAOnpAADp8LAA6fDQAOnxAADp8SAA6fFQAOnxYADp8XAA6fGAAOnxkADp8bAA6fHgAOnx8ADp8gAA6fIgAOnyMADp+eAA6foAAOn6MADp+lAA6fqAAOn6kADp+qAA6fqwAOn6wADp+uAA6fsQAOn7IADp+zAA6ftQAOn7YADqAxAA6gMwAOoDYADqA4AA6gOwAOoDwADqA9AA6gPgAOoD8ADqBBAA6gRAAOoEUADqBGAA6gSAAOoEkADqDMAA6g8AAOoRQADqE3AA6hXgAOoX4ADqGlAA6hzAAOoewADqIQAA6iNAAOojYADqI5AA6iOwAOoj0ADqI/AA6iQgAOokUADqJHAA6iSQAOokwADqJOAA6iUAAOolMADqJWAA6iVwAOolwADqJ1AA6iegAOonwADqKBAA6ihAAOooYADqLPAA6i8wAOoxoADqM+AA6jQQAOo0MADqNFAA6jRwAOo0kADqNLAA6jTAAOo08ADqNoAA6jjQAOo48ADqORAA6jkwAOo5UADqOXAA6jmQAOo5sADqOdAA6jnwAOo8QADqPHAA6jygAOo80ADqPQAA6j0wAOo9YADqPZAA6j3AAOo98ADqPhAA6kXAAOpF4ADqRhAA6kYwAOpGYADqRnAA6kaAAOpGkADqRqAA6kbAAOpG4ADqRvAA6kcAAOpHIADqRzAA6khAAOpIUADqSHAA6lAgAOpQQADqUGAA6lCAAOpQsADqUMAA6lDQAOpQ4ADqUPAA6lEQAOpRMADqUUAA6lFQAOpRcADqUYAA6lkwAOpZUADqWYAA6lmgAOpZ0ADqWeAA6lnwAOpaAADqWhAA6lowAOpaUADqWmAA6lpwAOpakADqWqAA6luwAOpcAADqXDAA6lxQAOpdYADqXfAA6l4gAOpeUADqXnAA6mAwAOphUADqaQAA6mkgAOppQADqaWAA6mmQAOppoADqabAA6mnAAOpp0ADqafAA6moQAOpqIADqajAA6mpQAOpqYADqchAA6nIwAOpyYADqcoAA6nKwAOpywADqctAA6nLgAOpy8ADqcxAA6nMwAOpzQADqc1AA6nNwAOpzgADqdJAA6nSgAOp0wADqfHAA6nyQAOp8sADqfNAA6n0AAOp9EADqfSAA6n0wAOp9QADqfWAA6n2AAOp9kADqfaAA6n3AAOp90ADqhYAA6oWgAOqF0ADqhfAA6oYgAOqGMADqhkAA6oZQAOqGYADqhoAA6oagAOqGsADqhsAA6obgAOqG8ADqiIAA6oiQAOqIoADqiMAA6pBwAOqQkADqkLAA6pDQAOqRAADqkRAA6pEgAOqRMADqkUAA6pFgAOqRgADqkZAA6pGgAOqRwADqkdAA6pmAAOqZoADqmdAA6pnwAOqaIADqmjAA6ppAAOqaUADqmmAA6pqAAOqaoADqmrAA6prAAOqa4ADqmvAA6pvQAOqdYADqoVAA6qGAAOqhsADqoeAA6qIQAOqiQADqonAA6qKgAOqi0ADqowAA6qMwAOqjYADqo5AA6qPAAOqj8ADqpCAA6qgQAOqoQADqqHAA6qigAOqo0ADqqQAA6qkwAOqpYADqqZAA6qnAAOqp8ADqqiAA6qpQAOqqgADqqrAA6qrgAOqrAADqrGAA6q4gAOqwAADqsaAA6rPwAOq0cADqtZAA6rbAAOq4IADquLAA6rpwAOq7kADqvGAA6r1AAOrGcADqyKAA6sqgAOrMoADqzMAA6szgAOrNAADqzSAA6s1QAOrNYADqzXAA6s2gAOrNsADqzdAA6s3gAOrOAADqzjAA6s5AAOrOUADqzoAA6s6QAOrPIADq0LAA6tFAAOrRYADq0YAA6tIQAOrSQADq0nAA6tKQAOrXIADq2WAA6tvQAOreEADq3kAA6t5gAOregADq3qAA6t7AAOre4ADq3vAA6t8gAOrgsADq4sAA6uLgAOrjAADq4yAA6uNAAOrjYADq44AA6uOgAOrjwADq5dAA6uYAAOrmMADq5mAA6uaQAOrmwADq5vAA6ucgAOrnUADq53AA6u8gAOrvQADq72AA6u+AAOrvsADq78AA6u/QAOrv4ADq7/AA6vAQAOrwMADq8EAA6vBQAOrwcADq8IAA6vgwAOr4UADq+HAA6viQAOr4wADq+NAA6vjgAOr48ADq+QAA6vkgAOr5QADq+VAA6vlgAOr5gADq+ZAA6wFAAOsBYADrAZAA6wGwAOsB4ADrAfAA6wIAAOsCEADrAiAA6wJAAOsCYADrAnAA6wKAAOsCoADrArAA6wRAAOsEUADrBGAA6wSAAOsMMADrDFAA6wxwAOsMkADrDMAA6wzQAOsM4ADrDPAA6w0AAOsNIADrDUAA6w1QAOsNYADrDYAA6w2QAOsVQADrFWAA6xWAAOsVoADrFdAA6xXgAOsV8ADrFgAA6xYQAOsWMADrFlAA6xZgAOsWcADrFpAA6xagAOseUADrHnAA6x6QAOsesADrHuAA6x7wAOsfAADrHxAA6x8gAOsfQADrH2AA6x9wAOsfgADrH6AA6x+wAOsnYADrJ4AA6yegAOsnwADrJ/AA6ygAAOsoEADrKCAA6ygwAOsoUADrKHAA6yiAAOsokADrKLAA6yjAAOswcADrMJAA6zCwAOsw0ADrMQAA6zEQAOsxIADrMTAA6zFAAOsxYADrMYAA6zGQAOsxoADrMcAA6zHQAOs2YADrOKAA6zsQAOs9UADrPYAA6z2gAOs9wADrPeAA6z4AAOs+IADrPjAA6z5gAOs/8ADrQcAA60HgAOtCAADrQiAA60JAAOtCYADrQoAA60KgAOtEcADrRKAA60TQAOtFAADrRTAA60VgAOtFkADrRcAA60XgAOtNkADrTbAA603QAOtN8ADrTiAA604wAOtOQADrTlAA605gAOtOgADrTqAA606wAOtOwADrTuAA607wAOtWoADrVsAA61bgAOtXAADrVzAA61dAAOtXUADrV2AA61dwAOtXkADrV7AA61fAAOtX0ADrV/AA61gAAOtfsADrX9AA61/wAOtgEADrYEAA62BQAOtgYADrYHAA62CAAOtgoADrYMAA62DQAOtg4ADrYQAA62EQAOtowADraOAA62kQAOtpMADraWAA62lwAOtpgADraZAA62mgAOtpwADraeAA62nwAOtqAADraiAA62owAOtx4ADrcgAA63IgAOtyQADrcnAA63KAAOtykADrcqAA63KwAOty0ADrcvAA63MAAOtzEADrczAA63NAAOt68ADrexAA63swAOt7UADre4AA63uQAOt7oADre7AA63vAAOt74ADrfAAA63wQAOt8IADrfEAA63xQAOuEAADrhCAA64RAAOuEYADrhJAA64SgAOuEsADrhMAA64TQAOuE8ADrhRAA64UgAOuFMADrhVAA64VgAOuOkADrkMAA65LAAOuUwADrlOAA65UAAOuVIADrlUAA65VwAOuVgADrlZAA65XAAOuV0ADrlfAA65YAAOuWIADrllAA65ZgAOuWcADrlqAA65awAOuXAADrmJAA65kgAOuZQADrmWAA65nwAOuaIADrmlAA65pwAOufAADroUAA66OwAOul8ADrpiAA66ZAAOumYADrpoAA66agAOumwADrptAA66cAAOuokADrqqAA66rAAOuq4ADrqwAA66sgAOurQADrq2AA66uAAOuroADrrbAA663gAOuuEADrrkAA665wAOuuoADrrtAA668AAOuvMADrr1AA67cAAOu3IADrt0AA67dgAOu3kADrt6AA67ewAOu3wADrt9AA67fwAOu4EADruCAA67gwAOu4UADruGAA68AQAOvAMADrwFAA68BwAOvAoADrwLAA68DAAOvA0ADrwOAA68EAAOvBIADrwTAA68FAAOvBYADrwXAA68kgAOvJQADryXAA68mQAOvJwADrydAA68ngAOvJ8ADrygAA68ogAOvKQADrylAA68pgAOvKgADrypAA68wgAOvMMADrzEAA68xgAOvUEADr1DAA69RQAOvUcADr1KAA69SwAOvUwADr1NAA69TgAOvVAADr1SAA69UwAOvVQADr1WAA69VwAOvdIADr3UAA691gAOvdgADr3bAA693AAOvd0ADr3eAA693wAOveEADr3jAA695AAOveUADr3nAA696AAOvmMADr5lAA6+ZwAOvmkADr5sAA6+bQAOvm4ADr5vAA6+cAAOvnIADr50AA6+dQAOvnYADr54AA6+eQAOvvQADr72AA6++AAOvvoADr79AA6+/gAOvv8ADr8AAA6/AQAOvwMADr8FAA6/BgAOvwcADr8JAA6/CgAOv4UADr+HAA6/iQAOv4sADr+OAA6/jwAOv5AADr+RAA6/kgAOv5QADr+WAA6/lwAOv5gADr+aAA6/mwAOv+QADsAIAA7ALwAOwFMADsBWAA7AWAAOwFoADsBcAA7AXgAOwGAADsBhAA7AZAAOwH0ADsCaAA7AnAAOwJ4ADsCgAA7AogAOwKQADsCmAA7AqAAOwMUADsDIAA7AywAOwM4ADsDRAA7A1AAOwNcADsDaAA7A3AAOwVcADsFZAA7BWwAOwV0ADsFgAA7BYQAOwWIADsFjAA7BZAAOwWYADsFoAA7BaQAOwWoADsFsAA7BbQAOwegADsHqAA7B7AAOwe4ADsHxAA7B8gAOwfMADsH0AA7B9QAOwfcADsH5AA7B+gAOwfsADsH9AA7B/gAOwnkADsJ7AA7CfQAOwn8ADsKCAA7CgwAOwoQADsKFAA7ChgAOwogADsKKAA7CiwAOwowADsKOAA7CjwAOwwoADsMMAA7DDwAOwxEADsMUAA7DFQAOwxYADsMXAA7DGAAOwxoADsMcAA7DHQAOwx4ADsMgAA7DIQAOw5wADsOeAA7DoAAOw6IADsOlAA7DpgAOw6cADsOoAA7DqQAOw6sADsOtAA7DrgAOw68ADsOxAA7DsgAOxC0ADsQvAA7EMgAOxDQADsQ3AA7EOAAOxDkADsQ6AA7EOwAOxD0ADsQ/AA7EQAAOxEEADsRDAA7ERAAOxFMADsTOAA7E0AAOxNIADsTUAA7E1wAOxNgADsTZAA7E2gAOxNsADsTdAA7E3wAOxOAADsThAA7E4wAOxOQADsV3AA7FmgAOxboADsXaAA7F3AAOxd4ADsXgAA7F4gAOxeUADsXmAA7F5wAOxeoADsXrAA7F7QAOxe4ADsXwAA7F8wAOxfQADsX1AA7F+AAOxfkADsX+AA7GFwAOxiAADsYiAA7GJAAOxi0ADsYwAA7GMwAOxjUADsZ+AA7GogAOxskADsbtAA7G8AAOxvIADsb0AA7G9gAOxvgADsb6AA7G+wAOxv4ADscXAA7HOAAOxzoADsc8AA7HPgAOx0AADsdCAA7HRAAOx0YADsdIAA7HaQAOx2wADsdvAA7HcgAOx3UADsd4AA7HewAOx34ADseBAA7HgwAOx/4ADsgAAA7IAgAOyAQADsgHAA7ICAAOyAkADsgKAA7ICwAOyA0ADsgPAA7IEAAOyBEADsgTAA7IFAAOyI8ADsiRAA7IkwAOyJUADsiYAA7ImQAOyJoADsibAA7InAAOyJ4ADsigAA7IoQAOyKIADsikAA7IpQAOySAADskiAA7JJQAOyScADskqAA7JKwAOySwADsktAA7JLgAOyTAADskyAA7JMwAOyTQADsk2AA7JNwAOyVAADslRAA7JUgAOyVQADsnPAA7J0QAOydMADsnVAA7J2AAOydkADsnaAA7J2wAOydwADsneAA7J4AAOyeEADsniAA7J5AAOyeUADspgAA7KYgAOymQADspmAA7KaQAOymoADsprAA7KbAAOym0ADspvAA7KcQAOynIADspzAA7KdQAOynYADsrxAA7K8wAOyvUADsr3AA7K+gAOyvsADsr8AA7K/QAOyv4ADssAAA7LAgAOywMADssEAA7LBgAOywcADsuCAA7LhAAOy4YADsuIAA7LiwAOy4wADsuNAA7LjgAOy48ADsuRAA7LkwAOy5QADsuVAA7LlwAOy5gADswTAA7MFQAOzBcADswZAA7MHAAOzB0ADsweAA7MHwAOzCAADswiAA7MJAAOzCUADswmAA7MKAAOzCkADsxyAA7MlgAOzL0ADszhAA7M5AAOzOYADszoAA7M6gAOzOwADszuAA7M7wAOzPIADs0LAA7NKAAOzSoADs0sAA7NLgAOzTAADs0yAA7NNAAOzTYADs1TAA7NVgAOzVkADs1cAA7NXwAOzWIADs1lAA7NaAAOzWoADs3lAA7N5wAOzekADs3rAA7N7gAOze8ADs3wAA7N8QAOzfIADs30AA7N9gAOzfcADs34AA7N+gAOzfsADs52AA7OeAAOznoADs58AA7OfwAOzoAADs6BAA7OggAOzoMADs6FAA7OhwAOzogADs6JAA7OiwAOzowADs8HAA7PCQAOzwsADs8NAA7PEAAOzxEADs8SAA7PEwAOzxQADs8WAA7PGAAOzxkADs8aAA7PHAAOzx0ADs+YAA7PmgAOz50ADs+fAA7PogAOz6MADs+kAA7PpQAOz6YADs+oAA7PqgAOz6sADs+sAA7PrgAOz68ADtAqAA7QLAAO0C4ADtAwAA7QMwAO0DQADtA1AA7QNgAO0DcADtA5AA7QOwAO0DwADtA9AA7QPwAO0EAADtC7AA7QvQAO0L8ADtDBAA7QxAAO0MUADtDGAA7QxwAO0MgADtDKAA7QzAAO0M0ADtDOAA7Q0AAO0NEADtFMAA7RTgAO0VAADtFSAA7RVQAO0VYADtFXAA7RWAAO0VkADtFbAA7RXQAO0V4ADtFfAA7RYQAO0WIADtH1AA7SGAAO0jgADtJYAA7SWgAO0lwADtJeAA7SYAAO0mMADtJkAA7SZQAO0mgADtJpAA7SawAO0mwADtJuAA7ScQAO0nIADtJzAA7SdgAO0ncADtJ8AA7SlQAO0p4ADtKgAA7SogAO0qsADtKuAA7SsQAO0rMADtL8AA7TIAAO00cADtNrAA7TbgAO03AADtNyAA7TdAAO03YADtN4AA7TeQAO03wADtOVAA7TtgAO07gADtO6AA7TvAAO074ADtPAAA7TwgAO08QADtPGAA7T5wAO0+oADtPtAA7T8AAO0/MADtP2AA7T+QAO0/wADtP/AA7UAQAO1HwADtR+AA7UgAAO1IIADtSFAA7UhgAO1IcADtSIAA7UiQAO1IsADtSNAA7UjgAO1I8ADtSRAA7UkgAO1Q0ADtUPAA7VEQAO1RMADtUWAA7VFwAO1RgADtUZAA7VGgAO1RwADtUeAA7VHwAO1SAADtUiAA7VIwAO1Z4ADtWgAA7VowAO1aUADtWoAA7VqQAO1aoADtWrAA7VrAAO1a4ADtWwAA7VsQAO1bIADtW0AA7VtQAO1c4ADtXPAA7V0AAO1dIADtZNAA7WTwAO1lEADtZTAA7WVgAO1lcADtZYAA7WWQAO1loADtZcAA7WXgAO1l8ADtZgAA7WYgAO1mMADtbeAA7W4AAO1uIADtbkAA7W5wAO1ugADtbpAA7W6gAO1usADtbtAA7W7wAO1vAADtbxAA7W8wAO1vQADtdvAA7XcQAO13MADtd1AA7XeAAO13kADtd6AA7XewAO13wADtd+AA7XgAAO14EADteCAA7XhAAO14UADtgAAA7YAgAO2AQADtgGAA7YCQAO2AoADtgLAA7YDAAO2A0ADtgPAA7YEQAO2BIADtgTAA7YFQAO2BYADtiRAA7YkwAO2JUADtiXAA7YmgAO2JsADticAA7YnQAO2J4ADtigAA7YogAO2KMADtikAA7YpgAO2KcADtjwAA7ZFAAO2TsADtlfAA7ZYgAO2WQADtlmAA7ZaAAO2WoADtlsAA7ZbQAO2XAADtmJAA7ZpgAO2agADtmqAA7ZrAAO2a4ADtmwAA7ZsgAO2bQADtnRAA7Z1AAO2dcADtnaAA7Z3QAO2eAADtnjAA7Z5gAO2egADtpjAA7aZQAO2mcADtppAA7abAAO2m0ADtpuAA7abwAO2nAADtpyAA7adAAO2nUADtp2AA7aeAAO2nkADtr0AA7a9gAO2vgADtr6AA7a/QAO2v4ADtr/AA7bAAAO2wEADtsDAA7bBQAO2wYADtsHAA7bCQAO2woADtuFAA7bhwAO24kADtuLAA7bjgAO248ADtuQAA7bkQAO25IADtuUAA7blgAO25cADtuYAA7bmgAO25sADtwWAA7cGAAO3BsADtwdAA7cIAAO3CEADtwiAA7cIwAO3CQADtwmAA7cKAAO3CkADtwqAA7cLAAO3C0ADtyoAA7cqgAO3KwADtyuAA7csQAO3LIADtyzAA7ctAAO3LUADty3AA7cuQAO3LoADty7AA7cvQAO3L4ADt05AA7dOwAO3T4ADt1AAA7dQwAO3UQADt1FAA7dRgAO3UcADt1JAA7dSwAO3UwADt1NAA7dTwAO3VAADt1fAA7d2gAO3dwADt3eAA7d4AAO3eMADt3kAA7d5QAO3eYADt3nAA7d6QAO3esADt3sAA7d7QAO3e8ADt3wAA7egwAO3qYADt7GAA7e5gAO3ugADt7qAA7e7AAO3u4ADt7xAA7e8gAO3vMADt72AA7e9wAO3vkADt76AA7e/AAO3v8ADt8AAA7fAQAO3wQADt8FAA7fCgAO3yMADt8sAA7fLgAO3zAADt85AA7fPAAO3z8ADt9BAA7figAO364ADt/VAA7f+QAO3/wADt/+AA7gAAAO4AIADuAEAA7gBgAO4AcADuAKAA7gIwAO4EQADuBGAA7gSAAO4EoADuBMAA7gTgAO4FAADuBSAA7gVAAO4HUADuB4AA7gewAO4H4ADuCBAA7ghAAO4IcADuCKAA7gjQAO4I8ADuEKAA7hDAAO4Q4ADuEQAA7hEwAO4RQADuEVAA7hFgAO4RcADuEZAA7hGwAO4RwADuEdAA7hHwAO4SAADuGbAA7hnQAO4Z8ADuGhAA7hpAAO4aUADuGmAA7hpwAO4agADuGqAA7hrAAO4a0ADuGuAA7hsAAO4bEADuIsAA7iLgAO4jEADuIzAA7iNgAO4jcADuI4AA7iOQAO4joADuI8AA7iPgAO4j8ADuJAAA7iQgAO4kMADuJcAA7iXQAO4l4ADuJgAA7i2wAO4t0ADuLfAA7i4QAO4uQADuLlAA7i5gAO4ucADuLoAA7i6gAO4uwADuLtAA7i7gAO4vAADuLxAA7jbAAO424ADuNwAA7jcgAO43UADuN2AA7jdwAO43gADuN5AA7jewAO430ADuN+AA7jfwAO44EADuOCAA7j/QAO4/8ADuQBAA7kAwAO5AYADuQHAA7kCAAO5AkADuQKAA7kDAAO5A4ADuQPAA7kEAAO5BIADuQTAA7kjgAO5JAADuSSAA7klAAO5JcADuSYAA7kmQAO5JoADuSbAA7knQAO5J8ADuSgAA7koQAO5KMADuSkAA7lHwAO5SEADuUjAA7lJQAO5SgADuUpAA7lKgAO5SsADuUsAA7lLgAO5TAADuUxAA7lMgAO5TQADuU1AA7lfgAO5aIADuXJAA7l7QAO5fAADuXyAA7l9AAO5fYADuX4AA7l+gAO5fsADuX+AA7mFwAO5jQADuY2AA7mOAAO5joADuY8AA7mPgAO5kAADuZCAA7mXwAO5mIADuZlAA7maAAO5msADuZuAA7mcQAO5nQADuZ2AA7m8QAO5vMADub1AA7m9wAO5voADub7AA7m/AAO5v0ADub+AA7nAAAO5wIADucDAA7nBAAO5wYADucHAA7nggAO54QADueGAA7niAAO54sADueMAA7njQAO544ADuePAA7nkQAO55MADueUAA7nlQAO55cADueYAA7oEwAO6BUADugXAA7oGQAO6BwADugdAA7oHgAO6B8ADuggAA7oIgAO6CQADuglAA7oJgAO6CgADugpAA7opAAO6KYADuipAA7oqwAO6K4ADuivAA7osAAO6LEADuiyAA7otAAO6LYADui3AA7ouAAO6LoADui7AA7pNgAO6TgADuk6AA7pPAAO6T8ADulAAA7pQQAO6UIADulDAA7pRQAO6UcADulIAA7pSQAO6UsADulMAA7pxwAO6ckADunLAA7pzQAO6dAADunRAA7p0gAO6dMADunUAA7p1gAO6dgADunZAA7p2gAO6dwADundAA7qWAAO6loADupcAA7qXgAO6mEADupiAA7qYwAO6mQADuplAA7qZwAO6mkADupqAA7qawAO6m0ADupuAA7rAQAO6yQADutEAA7rZAAO62YADutoAA7ragAO62wADutvAA7rcAAO63EADut0AA7rdQAO63cADut4AA7rewAO634ADut/AA7rgAAO64MADuuEAA7riQAO66IADuurAA7rrQAO67AADuu5AA7rvAAO678ADuvBAA7sCgAO7C4ADuxVAA7seQAO7HwADux+AA7sgAAO7IIADuyEAA7shgAO7IcADuyKAA7sowAO7MQADuzGAA7syAAO7MoADuzMAA7szgAO7NAADuzSAA7s1AAO7PUADuz4AA7s+wAO7P4ADu0BAA7tBAAO7QcADu0KAA7tDQAO7Q8ADu2KAA7tjAAO7Y4ADu2QAA7tkwAO7ZQADu2VAA7tlgAO7ZcADu2ZAA7tmwAO7ZwADu2dAA7tnwAO7aAADu4bAA7uHQAO7h8ADu4hAA7uJAAO7iUADu4mAA7uJwAO7igADu4qAA7uLAAO7i0ADu4uAA7uMAAO7jEADu6sAA7urgAO7rEADu6zAA7utgAO7rcADu64AA7uuQAO7roADu68AA7uvgAO7r8ADu7AAA7uwgAO7sMADu7cAA7u3QAO7t4ADu7gAA7vWwAO710ADu9fAA7vYQAO72QADu9lAA7vZgAO72cADu9oAA7vagAO72wADu9tAA7vbgAO73AADu9xAA7v7AAO7+4ADu/wAA7v8gAO7/UADu/2AA7v9wAO7/gADu/5AA7v+wAO7/0ADu/+AA7v/wAO8AEADvACAA7wfQAO8H8ADvCBAA7wgwAO8IYADvCHAA7wiAAO8IkADvCKAA7wjAAO8I4ADvCPAA7wkAAO8JIADvCTAA7xDgAO8RAADvESAA7xFAAO8RcADvEYAA7xGQAO8RoADvEbAA7xHQAO8R8ADvEgAA7xIQAO8SMADvEkAA7xnwAO8aEADvGjAA7xpQAO8agADvGpAA7xqgAO8asADvGsAA7xrgAO8bAADvGxAA7xsgAO8bQADvG1AA7x/gAO8iIADvJJAA7ybQAO8nAADvJzAA7ydQAO8ncADvJ5AA7yewAO8nwADvJ/AA7ymAAO8rUADvK4AA7yuwAO8r4ADvLBAA7yxAAO8scADvLKAA7y5wAO8uoADvLtAA7y8AAO8vMADvL2AA7y+QAO8vwADvL+AA7zeQAO83sADvN+AA7zgAAO84MADvOEAA7zhQAO84YADvOHAA7ziQAO84wADvONAA7zjgAO85AADvORAA70DAAO9A4ADvQRAA70EwAO9BYADvQXAA70GAAO9BkADvQaAA70HAAO9B8ADvQgAA70IQAO9CMADvQkAA70nwAO9KEADvSkAA70pgAO9KkADvSqAA70qwAO9KwADvStAA70rwAO9LIADvSzAA70tAAO9LYADvS3AA71MgAO9TQADvU3AA71OQAO9TwADvU9AA71PgAO9T8ADvVAAA71QgAO9UUADvVGAA71RwAO9UkADvVKAA71zQAO9fEADvYVAA72OAAO9l8ADvZ/AA72pgAO9s0ADvbtAA73EQAO9zUADvc3AA73OgAO9zwADvc+AA73QAAO90MADvdGAA73SAAO90oADvdNAA73TwAO91EADvdUAA73VwAO91gADvddAA73dgAO93sADvd9AA73ggAO94UADveHAA730AAO9/QADvgbAA74PwAO+EIADvhEAA74RgAO+EgADvhKAA74TAAO+E0ADvhQAA74aQAO+I4ADviQAA74kgAO+JQADviWAA74mAAO+JoADvicAA74ngAO+KAADvjFAA74yAAO+MsADvjOAA740QAO+NQADvjXAA742gAO+N0ADvjgAA744gAO+V0ADvlfAA75YgAO+WQADvlnAA75aAAO+WkADvlqAA75awAO+W0ADvlvAA75cAAO+XEADvlzAA75dAAO+YUADvmGAA75iAAO+gMADvoFAA76BwAO+gkADvoMAA76DQAO+g4ADvoPAA76EAAO+hIADvoUAA76FQAO+hYADvoYAA76GQAO+pQADvqWAA76mQAO+psADvqeAA76nwAO+qAADvqhAA76ogAO+qQADvqmAA76pwAO+qgADvqqAA76qwAO+rwADvrBAA76xAAO+sYADvrXAA766AAO+usADvruAA768QAO+vQADvr2AA77EgAO+yQADvsuAA77QQAO+7wADvu+AA77wAAO+8IADvvFAA77xgAO+8cADvvIAA77yQAO+8sADvvNAA77zgAO+88ADvvRAA770gAO/E0ADvxPAA78UgAO/FQADvxXAA78WAAO/FkADvxaAA78WwAO/F0ADvxfAA78YAAO/GEADvxjAA78ZAAO/HUADvx2AA78eAAO/PMADvz1AA789wAO/PkADvz8AA78/QAO/P4ADvz/AA79AAAO/QIADv0EAA79BQAO/QYADv0IAA79CQAO/YQADv2GAA79iQAO/YsADv2OAA79jwAO/ZAADv2RAA79kgAO/ZQADv2WAA79lwAO/ZgADv2aAA79mwAO/bQADv21AA79tgAO/bgADv4zAA7+NQAO/jcADv45AA7+PAAO/j0ADv4+AA7+PwAO/kAADv5CAA7+RAAO/kUADv5GAA7+SAAO/kkADv7EAA7+xgAO/skADv7LAA7+zgAO/s8ADv7QAA7+0QAO/tIADv7UAA7+1gAO/tcADv7YAA7+2gAO/tsADv7pAA7/AgAO/xsADv8eAA7/IQAO/yQADv8nAA7/KgAO/y0ADv9GAA7/SQAO/0wADv9PAA7/UgAO/1UADv9YAA7/WgAO/3YADv+IAA7/mwAO/6YADwA5AA8AXAAPAHwADwCcAA8AngAPAKAADwCiAA8ApAAPAKcADwCoAA8AqQAPAKwADwCtAA8ArwAPALAADwCyAA8AtQAPALYADwC3AA8AugAPALsADwDAAA8A2QAPAOIADwDkAA8A5gAPAO8ADwDyAA8A9QAPAPcADwFAAA8BZAAPAYsADwGvAA8BsgAPAbQADwG2AA8BuAAPAboADwG8AA8BvQAPAcAADwHZAA8B+gAPAfwADwH+AA8CAAAPAgIADwIEAA8CBgAPAggADwIKAA8CKwAPAi4ADwIxAA8CNAAPAjcADwI6AA8CPQAPAkAADwJDAA8CRQAPAsAADwLCAA8CxAAPAsYADwLJAA8CygAPAssADwLMAA8CzQAPAs8ADwLRAA8C0gAPAtMADwLVAA8C1gAPA1EADwNTAA8DVQAPA1cADwNaAA8DWwAPA1wADwNdAA8DXgAPA2AADwNiAA8DYwAPA2QADwNmAA8DZwAPA+IADwPkAA8D5wAPA+kADwPsAA8D7QAPA+4ADwPvAA8D8AAPA/IADwP0AA8D9QAPA/YADwP4AA8D+QAPBBIADwQTAA8EFAAPBBYADwSRAA8EkwAPBJUADwSXAA8EmgAPBJsADwScAA8EnQAPBJ4ADwSgAA8EogAPBKMADwSkAA8EpgAPBKcADwUiAA8FJAAPBSYADwUoAA8FKwAPBSwADwUtAA8FLgAPBS8ADwUxAA8FMwAPBTQADwU1AA8FNwAPBTgADwWzAA8FtQAPBbcADwW5AA8FvAAPBb0ADwW+AA8FvwAPBcAADwXCAA8FxAAPBcUADwXGAA8FyAAPBckADwZEAA8GRgAPBkgADwZKAA8GTQAPBk4ADwZPAA8GUAAPBlEADwZTAA8GVQAPBlYADwZXAA8GWQAPBloADwbVAA8G1wAPBtkADwbbAA8G3gAPBt8ADwbgAA8G4QAPBuIADwbkAA8G5gAPBucADwboAA8G6gAPBusADwc0AA8HWAAPB38ADwejAA8HpgAPB6gADweqAA8HrAAPB64ADwewAA8HsQAPB7QADwfNAA8H6gAPB+wADwfuAA8H8AAPB/IADwf0AA8H9gAPB/gADwgVAA8IGAAPCBsADwgeAA8IIQAPCCQADwgnAA8IKgAPCCwADwinAA8IqQAPCKsADwitAA8IsAAPCLEADwiyAA8IswAPCLQADwi2AA8IuAAPCLkADwi6AA8IvAAPCL0ADwk4AA8JOgAPCTwADwk+AA8JQQAPCUIADwlDAA8JRAAPCUUADwlHAA8JSQAPCUoADwlLAA8JTQAPCU4ADwnJAA8JywAPCc0ADwnPAA8J0gAPCdMADwnUAA8J1QAPCdYADwnYAA8J2gAPCdsADwncAA8J3gAPCd8ADwpaAA8KXAAPCl4ADwpgAA8KYwAPCmQADwplAA8KZgAPCmcADwppAA8KawAPCmwADwptAA8KbwAPCnAADwrrAA8K7QAPCu8ADwrxAA8K9AAPCvUADwr2AA8K9wAPCvgADwr6AA8K/AAPCv0ADwr+AA8LAAAPCwEADwt8AA8LfgAPC4EADwuDAA8LhgAPC4cADwuIAA8LiQAPC4oADwuMAA8LjgAPC48ADwuQAA8LkgAPC5MADwuiAA8MHQAPDB8ADwwhAA8MIwAPDCYADwwnAA8MKAAPDCkADwwqAA8MLAAPDC4ADwwvAA8MMAAPDDIADwwzAA8MxgAPDOkADw0JAA8NKQAPDSsADw0tAA8NLwAPDTEADw00AA8NNQAPDTYADw05AA8NOgAPDTwADw09AA8NQAAPDUMADw1EAA8NRQAPDUgADw1JAA8NUgAPDWsADw10AA8NdgAPDXkADw2CAA8NhQAPDYgADw2KAA8N0wAPDfcADw4eAA8OQgAPDkUADw5HAA8OSQAPDksADw5NAA8OTwAPDlAADw5TAA8ObAAPDo0ADw6PAA8OkQAPDpMADw6VAA8OlwAPDpkADw6bAA8OnQAPDr4ADw7BAA8OxAAPDscADw7KAA8OzQAPDtAADw7TAA8O1gAPDtgADw9TAA8PVQAPD1cADw9ZAA8PXAAPD10ADw9eAA8PXwAPD2AADw9iAA8PZAAPD2UADw9mAA8PaAAPD2kADw/kAA8P5gAPD+gADw/qAA8P7QAPD+4ADw/vAA8P8AAPD/EADw/zAA8P9QAPD/YADw/3AA8P+QAPD/oADxB1AA8QdwAPEHoADxB8AA8QfwAPEIAADxCBAA8QggAPEIMADxCFAA8QhwAPEIgADxCJAA8QiwAPEIwADxClAA8QpgAPEKcADxCpAA8RJAAPESYADxEoAA8RKgAPES0ADxEuAA8RLwAPETAADxExAA8RMwAPETUADxE2AA8RNwAPETkADxE6AA8RtQAPEbcADxG5AA8RuwAPEb4ADxG/AA8RwAAPEcEADxHCAA8RxAAPEcYADxHHAA8RyAAPEcoADxHLAA8SRgAPEkgADxJKAA8STAAPEk8ADxJQAA8SUQAPElIADxJTAA8SVQAPElcADxJYAA8SWQAPElsADxJcAA8S1wAPEtkADxLbAA8S3QAPEuAADxLhAA8S4gAPEuMADxLkAA8S5gAPEugADxLpAA8S6gAPEuwADxLtAA8TaAAPE2oADxNsAA8TbgAPE3EADxNyAA8TcwAPE3QADxN1AA8TdwAPE3kADxN6AA8TewAPE30ADxN+AA8TxwAPE+sADxQSAA8UNgAPFDkADxQ8AA8UPgAPFEAADxRCAA8URAAPFEUADxRIAA8UYQAPFH4ADxSBAA8UhAAPFIcADxSKAA8UjQAPFJAADxSTAA8UsAAPFLMADxS2AA8UuQAPFLwADxS/AA8UwgAPFMUADxTHAA8VQgAPFUQADxVHAA8VSQAPFUwADxVNAA8VTgAPFU8ADxVQAA8VUgAPFVUADxVWAA8VVwAPFVkADxVaAA8V1QAPFdcADxXaAA8V3AAPFd8ADxXgAA8V4QAPFeIADxXjAA8V5QAPFegADxXpAA8V6gAPFewADxXtAA8WaAAPFmoADxZtAA8WbwAPFnIADxZzAA8WdAAPFnUADxZ2AA8WeAAPFnsADxZ8AA8WfQAPFn8ADxaAAA8W+wAPFv0ADxcAAA8XAgAPFwUADxcGAA8XBwAPFwgADxcJAA8XCwAPFw4ADxcPAA8XEAAPFxIADxcTAA8XjgAPF5AADxeSAA8XlAAPF5cADxeYAA8XmQAPF5oADxebAA8XnQAPF6AADxehAA8XogAPF6QADxelAA8YIAAPGCIADxgkAA8YJgAPGCkADxgqAA8YKwAPGCwADxgtAA8YLwAPGDIADxgzAA8YNAAPGDYADxg3AA8YsgAPGLQADxi3AA8YuQAPGLwADxi9AA8YvgAPGL8ADxjAAA8YwgAPGMUADxjGAA8YxwAPGMkADxjKAA8ZXQAPGYAADxmgAA8ZwAAPGcIADxnEAA8ZxgAPGcgADxnLAA8ZzAAPGc0ADxnQAA8Z0QAPGdMADxnUAA8Z1gAPGdkADxnaAA8Z2wAPGd4ADxnfAA8Z5AAPGf0ADxoGAA8aCAAPGgoADxoTAA8aFgAPGhkADxobAA8aZAAPGogADxqvAA8a0wAPGtYADxrYAA8a2gAPGtwADxreAA8a4AAPGuEADxrkAA8a/QAPGx4ADxsgAA8bIgAPGyQADxsmAA8bKAAPGyoADxssAA8bLgAPG08ADxtSAA8bVQAPG1gADxtbAA8bXgAPG2EADxtkAA8bZwAPG2kADxvkAA8b5gAPG+gADxvqAA8b7QAPG+4ADxvvAA8b8AAPG/EADxvzAA8b9QAPG/YADxv3AA8b+QAPG/oADxx1AA8cdwAPHHkADxx7AA8cfgAPHH8ADxyAAA8cgQAPHIIADxyEAA8chgAPHIcADxyIAA8cigAPHIsADx0GAA8dCAAPHQsADx0NAA8dEAAPHREADx0SAA8dEwAPHRQADx0WAA8dGAAPHRkADx0aAA8dHAAPHR0ADx02AA8dNwAPHTgADx06AA8dtQAPHbcADx25AA8duwAPHb4ADx2/AA8dwAAPHcEADx3CAA8dxAAPHcYADx3HAA8dyAAPHcoADx3LAA8eRgAPHkgADx5KAA8eTAAPHk8ADx5QAA8eUQAPHlIADx5TAA8eVQAPHlcADx5YAA8eWQAPHlsADx5cAA8e1wAPHtkADx7bAA8e3QAPHuAADx7hAA8e4gAPHuMADx7kAA8e5gAPHugADx7pAA8e6gAPHuwADx7tAA8faAAPH2oADx9sAA8fbgAPH3EADx9yAA8fcwAPH3QADx91AA8fdwAPH3kADx96AA8fewAPH30ADx9+AA8f+QAPH/sADx/9AA8f/wAPIAIADyADAA8gBAAPIAUADyAGAA8gCAAPIAoADyALAA8gDAAPIA4ADyAPAA8gWAAPIHwADyCjAA8gxwAPIMoADyDMAA8gzgAPINAADyDSAA8g1AAPINUADyDYAA8g8QAPIQ4ADyEQAA8hEgAPIRQADyEWAA8hGAAPIRoADyEcAA8hOQAPITwADyE/AA8hQgAPIUUADyFIAA8hSwAPIU4ADyFQAA8hywAPIc0ADyHPAA8h0QAPIdQADyHVAA8h1gAPIdcADyHYAA8h2gAPIdwADyHdAA8h3gAPIeAADyHhAA8iXAAPIl4ADyJgAA8iYgAPImUADyJmAA8iZwAPImgADyJpAA8iawAPIm0ADyJuAA8ibwAPInEADyJyAA8i7QAPIu8ADyLxAA8i8wAPIvYADyL3AA8i+AAPIvkADyL6AA8i/AAPIv4ADyL/AA8jAAAPIwIADyMDAA8jfgAPI4AADyODAA8jhQAPI4gADyOJAA8jigAPI4sADyOMAA8jjgAPI5AADyORAA8jkgAPI5QADyOVAA8kEAAPJBIADyQUAA8kFgAPJBkADyQaAA8kGwAPJBwADyQdAA8kHwAPJCEADyQiAA8kIwAPJCUADyQmAA8koQAPJKMADySlAA8kpwAPJKoADySrAA8krAAPJK0ADySuAA8ksAAPJLIADySzAA8ktAAPJLYADyS3AA8lMgAPJTQADyU2AA8lOAAPJTsADyU8AA8lPQAPJT4ADyU/AA8lQQAPJUMADyVEAA8lRQAPJUcADyVIAA8l2wAPJf4ADyYeAA8mPgAPJkAADyZCAA8mRAAPJkYADyZJAA8mSgAPJksADyZOAA8mTwAPJlEADyZSAA8mVAAPJlcADyZYAA8mWQAPJlwADyZdAA8mYgAPJnsADyaEAA8mhgAPJogADyaRAA8mlAAPJpcADyaZAA8m4gAPJwYADyctAA8nUQAPJ1QADydWAA8nWAAPJ1oADydcAA8nXgAPJ18ADydiAA8newAPJ5wADyeeAA8noAAPJ6IADyekAA8npgAPJ6gADyeqAA8nrAAPJ80ADyfQAA8n0wAPJ9YADyfZAA8n3AAPJ98ADyfiAA8n5QAPJ+cADyhiAA8oZAAPKGYADyhoAA8oawAPKGwADyhtAA8obgAPKG8ADyhxAA8ocwAPKHQADyh1AA8odwAPKHgADyjzAA8o9QAPKPcADyj5AA8o/AAPKP0ADyj+AA8o/wAPKQAADykCAA8pBAAPKQUADykGAA8pCAAPKQkADymEAA8phgAPKYkADymLAA8pjgAPKY8ADymQAA8pkQAPKZIADymUAA8plgAPKZcADymYAA8pmgAPKZsADym0AA8ptQAPKbYADym4AA8qMwAPKjUADyo3AA8qOQAPKjwADyo9AA8qPgAPKj8ADypAAA8qQgAPKkQADypFAA8qRgAPKkgADypJAA8qxAAPKsYADyrIAA8qygAPKs0ADyrOAA8qzwAPKtAADyrRAA8q0wAPKtUADyrWAA8q1wAPKtkADyraAA8rVQAPK1cADytZAA8rWwAPK14ADytfAA8rYAAPK2EADytiAA8rZAAPK2YADytnAA8raAAPK2oADytrAA8r5gAPK+gADyvqAA8r7AAPK+8ADyvwAA8r8QAPK/IADyvzAA8r9QAPK/cADyv4AA8r+QAPK/sADyv8AA8sdwAPLHkADyx7AA8sfQAPLIAADyyBAA8sggAPLIMADyyEAA8shgAPLIgADyyJAA8sigAPLIwADyyNAA8s1gAPLPoADy0hAA8tRQAPLUgADy1KAA8tTAAPLU4ADy1QAA8tUgAPLVMADy1WAA8tbwAPLYwADy2OAA8tkAAPLZIADy2UAA8tlgAPLZgADy2aAA8ttwAPLboADy29AA8twAAPLcMADy3GAA8tyQAPLcwADy3OAA8uSQAPLksADy5NAA8uTwAPLlIADy5TAA8uVAAPLlUADy5WAA8uWAAPLloADy5bAA8uXAAPLl4ADy5fAA8u2gAPLtwADy7eAA8u4AAPLuMADy7kAA8u5QAPLuYADy7nAA8u6QAPLusADy7sAA8u7QAPLu8ADy7wAA8vawAPL20ADy9vAA8vcQAPL3QADy91AA8vdgAPL3cADy94AA8vegAPL3wADy99AA8vfgAPL4AADy+BAA8v/AAPL/4ADzABAA8wAwAPMAYADzAHAA8wCAAPMAkADzAKAA8wDAAPMA4ADzAPAA8wEAAPMBIADzATAA8wjgAPMJAADzCSAA8wlAAPMJcADzCYAA8wmQAPMJoADzCbAA8wnQAPMJ8ADzCgAA8woQAPMKMADzCkAA8xHwAPMSEADzEjAA8xJQAPMSgADzEpAA8xKgAPMSsADzEsAA8xLgAPMTAADzExAA8xMgAPMTQADzE1AA8xsAAPMbIADzG0AA8xtgAPMbkADzG6AA8xuwAPMbwADzG9AA8xvwAPMcEADzHCAA8xwwAPMcUADzHGAA8yWQAPMnwADzKcAA8yvAAPMr4ADzLAAA8ywgAPMsQADzLHAA8yyAAPMskADzLMAA8yzQAPMs8ADzLQAA8y0gAPMtUADzLWAA8y1wAPMtoADzLbAA8y4AAPMvkADzMCAA8zBAAPMwYADzMPAA8zEgAPMxUADzMXAA8zYAAPM4QADzOrAA8zzwAPM9IADzPUAA8z1gAPM9gADzPaAA8z3AAPM90ADzPgAA8z+QAPNBoADzQcAA80HgAPNCAADzQiAA80JAAPNCYADzQoAA80KgAPNEsADzROAA80UQAPNFQADzRXAA80WgAPNF0ADzRgAA80YwAPNGUADzTgAA804gAPNOQADzTmAA806QAPNOoADzTrAA807AAPNO0ADzTvAA808QAPNPIADzTzAA809QAPNPYADzVxAA81cwAPNXUADzV3AA81egAPNXsADzV8AA81fQAPNX4ADzWAAA81ggAPNYMADzWEAA81hgAPNYcADzYCAA82BAAPNgcADzYJAA82DAAPNg0ADzYOAA82DwAPNhAADzYSAA82FAAPNhUADzYWAA82GAAPNhkADzYyAA82MwAPNjQADzY2AA82sQAPNrMADza1AA82twAPNroADza7AA82vAAPNr0ADza+AA82wAAPNsIADzbDAA82xAAPNsYADzbHAA83QgAPN0QADzdGAA83SAAPN0sADzdMAA83TQAPN04ADzdPAA83UQAPN1MADzdUAA83VQAPN1cADzdYAA830wAPN9UADzfXAA832QAPN9wADzfdAA833gAPN98ADzfgAA834gAPN+QADzflAA835gAPN+gADzfpAA84ZAAPOGYADzhoAA84agAPOG0ADzhuAA84bwAPOHAADzhxAA84cwAPOHUADzh2AA84dwAPOHkADzh6AA849QAPOPcADzj5AA84+wAPOP4ADzj/AA85AAAPOQEADzkCAA85BAAPOQYADzkHAA85CAAPOQoADzkLAA85VAAPOXgADzmfAA85wwAPOcYADznIAA85ygAPOcwADznOAA850AAPOdEADznUAA857QAPOgoADzoMAA86DgAPOhAADzoSAA86FAAPOhYADzoYAA86NQAPOjgADzo7AA86PgAPOkEADzpEAA86RwAPOkoADzpMAA86xwAPOskADzrLAA86zQAPOtAADzrRAA860gAPOtMADzrUAA861gAPOtgADzrZAA862gAPOtwADzrdAA87WAAPO1oADztcAA87XgAPO2EADztiAA87YwAPO2QADztlAA87ZwAPO2kADztqAA87awAPO20ADztuAA876QAPO+sADzvtAA877wAPO/IADzvzAA879AAPO/UADzv2AA87+AAPO/oADzv7AA87/AAPO/4ADzv/AA88egAPPHwADzx+AA88gAAPPIMADzyEAA88hQAPPIYADzyHAA88iQAPPIsADzyMAA88jQAPPI8ADzyQAA89CwAPPQ0ADz0PAA89EQAPPRQADz0VAA89FgAPPRcADz0YAA89GgAPPRwADz0dAA89HgAPPSAADz0hAA89nAAPPZ4ADz2hAA89owAPPaYADz2nAA89qAAPPakADz2qAA89rAAPPa4ADz2vAA89sAAPPbIADz2zAA890gAPPk0ADz5PAA8+UQAPPlMADz5WAA8+VwAPPlgADz5ZAA8+WgAPPlwADz5eAA8+XwAPPmAADz5iAA8+YwAPPvYADz8ZAA8/OQAPP1kADz9bAA8/XQAPP18ADz9hAA8/ZAAPP2UADz9mAA8/aQAPP2oADz9sAA8/bQAPP28ADz9yAA8/cwAPP3QADz93AA8/eAAPP30ADz+WAA8/nwAPP6EADz+jAA8/rAAPP68ADz+yAA8/tAAPP/0AD0AhAA9ASAAPQGwAD0BvAA9AcQAPQHMAD0B1AA9AdwAPQHkAD0B6AA9AfQAPQJYAD0C3AA9AuQAPQLsAD0C9AA9AvwAPQMEAD0DDAA9AxQAPQMcAD0DoAA9A6wAPQO4AD0DxAA9A9AAPQPcAD0D6AA9A/QAPQQAAD0ECAA9BfQAPQX8AD0GBAA9BgwAPQYYAD0GHAA9BiAAPQYkAD0GKAA9BjAAPQY4AD0GPAA9BkAAPQZIAD0GTAA9CDgAPQhAAD0ISAA9CFAAPQhc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AD1N0AA9TdQAPU3YAD1N4AA9TegAPU3sAD1N8AA9TfgAPU38AD1P6AA9T/AAPU/4AD1QAAA9UAwAPVAQAD1QFAA9UBgAPVAcAD1QJAA9UCwAPVAwAD1QNAA9UDwAPVBAAD1RZAA9UfQAPVKQAD1TIAA9UywAPVM0AD1TPAA9U0QAPVNMAD1TVAA9U1gAPVNkAD1TyAA9VDwAPVREAD1UTAA9VFQAPVRcAD1UZAA9VGwAPVR0AD1U6AA9VPQAPVUAAD1VDAA9VRgAPVUkAD1VMAA9VTwAPVVEAD1XMAA9VzgAPVdAAD1XSAA9V1QAPVdYAD1XXAA9V2AAPVdkAD1XbAA9V3QAPVd4AD1XfAA9V4QAPVeIAD1ZdAA9WXwAPVmEAD1ZjAA9WZgAPVmcAD1ZoAA9WaQAPVmoAD1ZsAA9WbgAPVm8AD1ZwAA9WcgAPVnMAD1buAA9W8AAPVvIAD1b0AA9W9wAPVvgAD1b5AA9W+gAPVvsAD1b9AA9W/wAPVwAAD1cBAA9XAwAPVwQAD1d/AA9XgQAPV4QAD1eGAA9XiQAPV4oAD1eLAA9XjAAPV40AD1ePAA9XkQAPV5IAD1eTAA9XlQAPV5YAD1gRAA9YEwAPWBUAD1gXAA9YGgAPWBsAD1gcAA9YHQAPWB4AD1ggAA9YIgAPWCMAD1gkAA9YJgAPWCcAD1iiAA9YpAAPWKYAD1ioAA9YqwAPWKwAD1itAA9YrgAPWK8AD1ixAA9YswAPWLQAD1i1AA9YtwAPWLgAD1kzAA9ZNQAPWTcAD1k5AA9ZPAAPWT0AD1k+AA9ZPwAPWUAAD1lCAA9ZRAAPWUUAD1lGAA9ZSAAPWUkAD1ncAA9Z/wAPWh8AD1o/AA9aQQAPWkMAD1pFAA9aRwAPWkoAD1pLAA9aTAAPWk8AD1pQAA9aUgAPWlMAD1pVAA9aWAAPWlkAD1paAA9aXQAPWl4AD1pjAA9afAAPWoUAD1qHAA9aiQAPWpIAD1qVAA9amAAPWpoAD1rjAA9bBwAPWy4AD1tSAA9bVQAPW1cAD1tZAA9bWwAPW10AD1tfAA9bYAAPW2MAD1t8AA9bnQAPW58AD1uhAA9bowAPW6UAD1unAA9bqQAPW6sAD1utAA9bzgAPW9EAD1vUAA9b1wAPW9oAD1vdAA9b4AAPW+MAD1vmAA9b6AAPXGMAD1xlAA9cZwAPXGkAD1xsAA9cbQAPXG4AD1xvAA9ccAAPXHIAD1x0AA9cdQAPXHYAD1x4AA9ceQAPXPQAD1z2AA9c+AAPXPoAD1z9AA9c/gAPXP8AD10AAA9dAQAPXQMAD10FAA9dBgAPXQcAD10JAA9dCgAPXYUAD12HAA9digAPXYwAD12PAA9dkAAPXZEAD12SAA9dkwAPXZUAD12XAA9dmAAPXZkAD12bAA9dnAAPXbUAD122AA9dtwAPXbkAD140AA9eNgAPXjgAD146AA9ePQAPXj4AD14/AA9eQAAPXkEAD15DAA9eRQAPXkYAD15HAA9eSQAPXkoAD17FAA9exwAPXskAD17LAA9ezgAPXs8AD17QAA9e0QAPXtIAD17UAA9e1gAPXtcAD17YAA9e2gAPXtsAD19WAA9fWAAPX1oAD19cAA9fXwAPX2AAD19hAA9fYgAPX2MAD19lAA9fZwAPX2gAD19pAA9fawAPX2wAD1/nAA9f6QAPX+sAD1/tAA9f8AAPX/EAD1/yAA9f8wAPX/QAD1/2AA9f+AAPX/kAD1/6AA9f/AAPX/0AD2B4AA9gegAPYHwAD2B+AA9ggQAPYIIAD2CDAA9ghAAPYIUAD2CHAA9giQAPYIoAD2CLAA9gjQAPYI4AD2DXAA9g+wAPYSIAD2FGAA9hSQAPYUsAD2FNAA9hTwAPYVEAD2FTAA9hVAAPYVcAD2FwAA9hjQAPYY8AD2GRAA9hkwAPYZUAD2GXAA9hmQAPYZsAD2G4AA9huwAPYb4AD2HBAA9hxAAPYccAD2HKAA9hzQAPYc8AD2JKAA9iTAAPYk4AD2JQAA9iUwAPYlQAD2JVAA9iVgAPYlcAD2JZAA9iWwAPYlwAD2JdAA9iXwAPYmAAD2LbAA9i3QAPYt8AD2LhAA9i5AAPYuUAD2LmAA9i5wAPYugAD2LqAA9i7AAPYu0AD2LuAA9i8AAPYvEAD2NsAA9jbgAPY3AAD2NyAA9jdQAPY3YAD2N3AA9jeAAPY3kAD2N7AA9jfQAPY34AD2N/AA9jgQAPY4IAD2P9AA9j/wAPZAIAD2QEAA9kBwAPZAgAD2QJAA9kCgAPZAsAD2QNAA9kDwAPZBAAD2QRAA9kEwAPZBQAD2SPAA9kkQAPZJMAD2SVAA9kmAAPZJkAD2SaAA9kmwAPZJwAD2SeAA9koAAPZKEAD2SiAA9kpAAPZKUAD2UgAA9lIgAPZSQAD2UmAA9lKQAPZSoAD2UrAA9lLAAPZS0AD2UvAA9lMQAPZTIAD2UzAA9lNQAPZTYAD2WxAA9lswAPZbUAD2W3AA9lugAPZbsAD2W8AA9lvQAPZb4AD2XAAA9lwgAPZcMAD2XEAA9lxgAPZccAD2ZaAA9mfQAPZp0AD2a9AA9mvwAPZsEAD2bDAA9mxQAPZsgAD2bJAA9mygAPZs0AD2bOAA9m0AAPZtEAD2bTAA9m1gAPZtcAD2bYAA9m2wAPZtwAD2bhAA9m+gAPZwMAD2cFAA9nBwAPZxAAD2cTAA9nFgAPZxgAD2dhAA9nhQAPZ6wAD2fQAA9n0wAPZ9UAD2fXAA9n2QAPZ9sAD2fdAA9n3gAPZ+EAD2f6AA9oGwAPaB0AD2gfAA9oIQAPaCMAD2glAA9oJwAPaCkAD2grAA9oTAAPaE8AD2hSAA9oVQAPaFgAD2hbAA9oXgAPaGEAD2hkAA9oZgAPaOEAD2jjAA9o5QAPaOcAD2jqAA9o6wAPaOwAD2jtAA9o7gAPaPAAD2jyAA9o8wAPaPQAD2j2AA9o9wAPaXIAD2l0AA9pdgAPaXgAD2l7AA9pfAAPaX0AD2l+AA9pfwAPaYEAD2mDAA9phAAPaYUAD2mHAA9piAAPagMAD2oFAA9qCAAPagoAD2oNAA9qDgAPag8AD2oQAA9qEQAPahMAD2oVAA9qFgAPahcAD2oZAA9qGgAPajMAD2o0AA9qNQAPajcAD2qyAA9qtAAParYAD2q4AA9quwAParwAD2q9AA9qvgAPar8AD2rBAA9qwwAPasQAD2rFAA9qxwAPasgAD2tDAA9rRQAPa0cAD2tJAA9rTAAPa00AD2tOAA9rTwAPa1AAD2tSAA9rVAAPa1UAD2tWAA9rWAAPa1kAD2vUAA9r1gAPa9gAD2vaAA9r3QAPa94AD2vfAA9r4AAPa+EAD2vjAA9r5QAPa+YAD2vnAA9r6QAPa+oAD2xlAA9sZwAPbGkAD2xrAA9sbgAPbG8AD2xwAA9scQAPbHIAD2x0AA9sdgAPbHcAD2x4AA9segAPbHsAD2z2AA9s+AAPbPoAD2z8AA9s/wAPbQAAD20BAA9tAgAPbQMAD20FAA9tBwAPbQgAD20JAA9tCwAPbQwAD21VAA9teQAPbaAAD23EAA9txwAPbckAD23LAA9tzQAPbc8AD23RAA9t0gAPbdUAD23uAA9uCwAPbg0AD24PAA9uEQAPbhMAD24VAA9uFwAPbhkAD242AA9uOQAPbjwAD24/AA9uQgAPbkUAD25IAA9uSwAPbk0AD27IAA9uygAPbswAD27OAA9u0QAPbtIAD27TAA9u1AAPbtUAD27XAA9u2QAPbtoAD27bAA9u3QAPbt4AD29ZAA9vWwAPb10AD29fAA9vYgAPb2MAD29kAA9vZQAPb2YAD29oAA9vagAPb2sAD29sAA9vbgAPb28AD2/qAA9v7AAPb+4AD2/wAA9v8wAPb/QAD2/1AA9v9gAPb/cAD2/5AA9v+wAPb/wAD2/9AA9v/wAPcAAAD3B7AA9wfQAPcH8AD3CBAA9whAAPcIUAD3CGAA9whwAPcIgAD3CKAA9wjAAPcI0AD3COAA9wkAAPcJEAD3EMAA9xDgAPcRAAD3ESAA9xFQAPcRYAD3EXAA9xGAAPcRkAD3EbAA9xHQAPcR4AD3EfAA9xIQAPcSIAD3GdAA9xnwAPcaIAD3GkAA9xpwAPcagAD3GpAA9xqgAPcasAD3GtAA9xrwAPcbAAD3GxAA9xswAPcbQAD3HPAA9ySgAPckwAD3JOAA9yUAAPclMAD3JUAA9yVQAPclYAD3JXAA9yWQAPclsAD3JcAA9yXQAPcl8AD3JgAA9y8wAPcxYAD3M2AA9zVgAPc1gAD3NaAA9zXAAPc14AD3NhAA9zYgAPc2MAD3NmAA9zZwAPc2kAD3NqAA9zbQAPc3AAD3NxAA9zcgAPc3UAD3N2AA9zfwAPc5gAD3OhAA9zowAPc6YAD3OvAA9zsgAPc7UAD3O3AA90AAAPdCQAD3RLAA90bwAPdHIAD3R0AA90dgAPdHgAD3R6AA90fAAPdH0AD3SAAA90mQAPdLoAD3S8AA90vgAPdMAAD3TCAA90xAAPdMYAD3TIAA90ygAPdOsAD3TuAA908QAPdPQAD3T3AA90+gAPdP0AD3UAAA91AwAPdQUAD3WAAA91ggAPdYQAD3WGAA91iQAPdYoAD3WLAA91jAAPdY0AD3WPAA91kQAPdZIAD3WTAA91lQAPdZYAD3YRAA92EwAPdhUAD3YXAA92GgAPdhsAD3YcAA92HQAPdh4AD3YgAA92IgAPdiMAD3YkAA92JgAPdicAD3aiAA92pAAPdqcAD3apAA92rAAPdq0AD3auAA92rwAPdrAAD3ayAA92tAAPdrUAD3a2AA92uAAPdrkAD3bSAA920wAPdtQAD3bWAA93UQAPd1MAD3dVAA93VwAPd1oAD3dbAA93XAAPd10AD3deAA93YAAPd2IAD3djAA93ZAAPd2YAD3dnAA934gAPd+QAD3fmAA936AAPd+sAD3fsAA937QAPd+4AD3fvAA938QAPd/MAD3f0AA939QAPd/cAD3f4AA94cwAPeHUAD3h3AA94eQAPeHwAD3h9AA94fgAPeH8AD3iAAA94ggAPeIQAD3iFAA94hgAPeIgAD3iJAA95BAAPeQYAD3kIAA95CgAPeQ0AD3kOAA95DwAPeRAAD3kRAA95EwAPeRUAD3kWAA95FwAPeRkAD3kaAA95lQAPeZcAD3mZAA95mwAPeZ4AD3mfAA95oAAPeaEAD3miAA95pAAPeaYAD3mnAA95qAAPeaoAD3mrAA959AAPehgAD3o/AA96YwAPemYAD3ppAA96awAPem0AD3pvAA96cQAPenIAD3p1AA96jgAPeqsAD3quAA96sQAPerQAD3q3AA96ugAPer0AD3rAAA963QAPeuAAD3rjAA965gAPeukAD3rsAA967wAPevIAD3r0AA97bwAPe3EAD3t0AA97dgAPe3kAD3t6AA97ewAPe3wAD3t9AA97fwAPe4IAD3uDAA97hAAPe4YAD3uHAA98AgAPfAQAD3wHAA98CQAPfAwAD3wNAA98DgAPfA8AD3wQAA98EgAPfBUAD3wWAA98FwAPfBkAD3waAA98lQAPfJcAD3yaAA98nAAPfJ8AD3ygAA98oQAPfKIAD3yjAA98pQAPfKgAD3ypAA98qgAPfKwAD3ytAA99KAAPfSoAD30tAA99LwAPfTIAD30zAA99NAAPfTUAD302AA99OAAPfTsAD308AA99PQAPfT8AD31AAA99uwAPfb0AD32/AA99wQAPfcQAD33FAA99xgAPfccAD33IAA99ygAPfc0AD33OAA99zwAPfdEAD33SAA9+TQAPfk8AD35RAA9+UwAPflYAD35XAA9+WAAPflkAD35aAA9+XAAPfl8AD35gAA9+YQAPfmMAD35kAA9+3wAPfuEAD37kAA9+5gAPfukAD37qAA9+6wAPfuwAD37tAA9+7wAPfvIAD37zAA9+9AAPfvYAD373AA9/igAPf60AD3/NAA9/7QAPf+8AD3/xAA9/8wAPf/UAD3/4AA9/+QAPf/oAD3/9AA9//gAPgAAAD4ABAA+AAwAPgAYAD4AHAA+ACAAPgAsAD4AMAA+AEQAPgCoAD4AzAA+ANQAPgDcAD4BAAA+AQwAPgEYAD4BIAA+AkQAPgLUAD4DcAA+BAAAPgQMAD4EFAA+BBwAPgQkAD4ELAA+BDQAPgQ4AD4ERAA+BKgAPgUsAD4FNAA+BTwAPgVEAD4FTAA+BVQAPgVcAD4FZAA+BWwAPgXwAD4F/AA+BggAPgYUAD4GIAA+BiwAPgY4AD4GRAA+BlAAPgZYAD4IRAA+CEwAPghUAD4IXAA+CGgAPghsAD4IcAA+CHQAPgh4AD4IgAA+CIgAPgiMAD4IkAA+CJgAPgicAD4KiAA+CpAAPgqYAD4KoAA+CqwAPgqwAD4KtAA+CrgAPgq8AD4KxAA+CswAPgrQAD4K1AA+CtwAPgrgAD4MzAA+DNQAPgzgAD4M6AA+DPQAPgz4AD4M/AA+DQAAPg0EAD4NDAA+DRQAPg0YAD4NHAA+DSQAPg0oAD4NjAA+DZAAPg2UAD4NnAA+D4gAPg+QAD4PmAA+D6AAPg+sAD4PsAA+D7QAPg+4AD4PvAA+D8QAPg/MAD4P0AA+D9QAPg/cAD4P4AA+EcwAPhHUAD4R3AA+EeQAPhHwAD4R9AA+EfgAPhH8AD4SAAA+EggAPhIQAD4SFAA+EhgAPhIgAD4SJAA+FBAAPhQYAD4UIAA+FCgAPhQ0AD4UOAA+FDwAPhRAAD4URAA+FEwAPhRUAD4UWAA+FFwAPhRkAD4UaAA+FlQAPhZcAD4WZAA+FmwAPhZ4AD4WfAA+FoAAPhaEAD4WiAA+FpAAPhaYAD4WnAA+FqAAPhaoAD4WrAA+GJgAPhigAD4YqAA+GLAAPhi8AD4YwAA+GMQAPhjIAD4YzAA+GNQAPhjcAD4Y4AA+GOQAPhjsAD4Y8AA+GhQAPhqkAD4bQAA+G9AAPhvcAD4b5AA+G+wAPhv0AD4b/AA+HAQAPhwIAD4cFAA+HHgAPhzsAD4c9AA+HPwAPh0EAD4dDAA+HRQAPh0cAD4dJAA+HZgAPh2kAD4dsAA+HbwAPh3IAD4d1AA+HeAAPh3sAD4d9AA+H+AAPh/oAD4f9AA+H/wAPiAIAD4gDAA+IBAAPiAUAD4gGAA+ICAAPiAoAD4gLAA+IDAAPiA4AD4gPAA+IigAPiIwAD4iOAA+IkAAPiJMAD4iUAA+IlQAPiJYAD4iXAA+ImQAPiJsAD4icAA+InQAPiJ8AD4igAA+JGwAPiR0AD4kfAA+JIQAPiSQAD4klAA+JJgAPiScAD4koAA+JKgAPiSwAD4ktAA+JLgAPiTAAD4kxAA+JrAAPia4AD4mxAA+JswAPibYAD4m3AA+JuAAPibkAD4m6AA+JvAAPib4AD4m/AA+JwAAPicIAD4nDAA+KPgAPikAAD4pCAA+KRAAPikcAD4pIAA+KSQAPikoAD4pLAA+KTQAPik8AD4pQAA+KUQAPilMAD4pUAA+KzwAPitEAD4rTAA+K1QAPitgAD4rZAA+K2gAPitsAD4rcAA+K3gAPiuAAD4rhAA+K4gAPiuQAD4rlAA+LYAAPi2IAD4tkAA+LZgAPi2kAD4tqAA+LawAPi2wAD4ttAA+LbwAPi3EAD4tyAA+LcwAPi3UAD4t2AA+MCQAPjCwAD4xMAA+MbAAPjG4AD4xwAA+McgAPjHQAD4x3AA+MeAAPjHkAD4x8AA+MfQAPjH8AD4yAAA+MggAPjIUAD4yGAA+MhwAPjIoAD4yLAA+MkAAPjKkAD4yyAA+MtAAPjLYAD4y/AA+MwgAPjMUAD4zHAA+NEAAPjTQAD41bAA+NfwAPjYIAD42EAA+NhgAPjYgAD42KAA+NjAAPjY0AD42QAA+NqQAPjcoAD43MAA+NzgAPjdAAD43SAA+N1AAPjdYAD43YAA+N2gAPjfsAD43+AA+OAQAPjgQAD44HAA+OCgAPjg0AD44QAA+OEwAPjhUAD46QAA+OkgAPjpQAD46WAA+OmQAPjpoAD46bAA+OnAAPjp0AD46fAA+OoQAPjqIAD46jAA+OpQAPjqYAD48hAA+PIwAPjyUAD48nAA+PKgAPjysAD48sAA+PLQAPjy4AD48wAA+PMgAPjzMAD480AA+PNgAPjzcAD4+yAA+PtAAPj7cAD4+5AA+PvAAPj70AD4++AA+PvwAPj8AAD4/CAA+PxAAPj8UAD4/GAA+PyAAPj8kAD4/iAA+P4wAPj+QAD4/mAA+QYQAPkGMAD5BlAA+QZwAPkGoAD5BrAA+QbAAPkG0AD5BuAA+QcAAPkHIAD5BzAA+QdAAPkHYAD5B3AA+Q8gAPkPQAD5D2AA+Q+AAPkPsAD5D8AA+Q/QAPkP4AD5D/AA+RAQAPkQMAD5EEAA+RBQAPkQcAD5EIAA+RgwAPkYUAD5GHAA+RiQAPkYwAD5GNAA+RjgAPkY8AD5GQAA+RkgAPkZQAD5GVAA+RlgAPkZgAD5GZAA+SFAAPkhYAD5IYAA+SGgAPkh0AD5IeAA+SHwAPkiAAD5IhAA+SIwAPkiUAD5ImAA+SJwAPkikAD5IqAA+SpQAPkqcAD5KpAA+SqwAPkq4AD5KvAA+SsAAPkrEAD5KyAA+StAAPkrYAD5K3AA+SuAAPkroAD5K7AA+TBAAPkygAD5NPAA+TcwAPk3YAD5N4AA+TegAPk3wAD5N+AA+TgAAPk4EAD5OEAA+TnQAPk7oAD5O8AA+TvgAPk8AAD5PCAA+TxAAPk8YAD5PIAA+T5QAPk+gAD5PrAA+T7gAPk/EAD5P0AA+T9wAPk/oAD5P8AA+UdwAPlHkAD5R8AA+UfgAPlIEAD5SCAA+UgwAPlIQAD5SFAA+UhwAPlIkAD5SKAA+UiwAPlI0AD5SOAA+VCQAPlQsAD5UNAA+VDwAPlRIAD5UTAA+VFAAPlRUAD5UWAA+VGAAPlRoAD5UbAA+VHAAPlR4AD5UfAA+VmgAPlZwAD5WeAA+VoAAPlaMAD5WkAA+VpQAPlaYAD5WnAA+VqQAPlasAD5WsAA+VrQAPla8AD5WwAA+WKwAPli0AD5YwAA+WMgAPljUAD5Y2AA+WNwAPljgAD5Y5AA+WOwAPlj0AD5Y+AA+WPwAPlkEAD5ZCAA+WvQAPlr8AD5bBAA+WwwAPlsYAD5bHAA+WyAAPlskAD5bKAA+WzAAPls4AD5bPAA+W0AAPltIAD5bTAA+XTgAPl1AAD5dSAA+XVAAPl1cAD5dYAA+XWQAPl1oAD5dbAA+XXQAPl18AD5dgAA+XYQAPl2MAD5dkAA+X3wAPl+EAD5fjAA+X5QAPl+gAD5fpAA+X6gAPl+sAD5fsAA+X7gAPl/AAD5fxAA+X8gAPl/QAD5f1AA+YiAAPmKsAD5jLAA+Y6wAPmO0AD5jvAA+Y8QAPmPMAD5j2AA+Y9wAPmPgAD5j7AA+Y/AAPmP4AD5j/AA+ZAQAPmQQAD5kFAA+ZBgAPmQkAD5kKAA+ZDwAPmSgAD5kxAA+ZMwAPmTUAD5k+AA+ZQQAPmUQAD5lGAA+ZjwAPmbMAD5naAA+Z/gAPmgEAD5oDAA+aBQAPmgcAD5oJAA+aCwAPmgwAD5oPAA+aKAAPmkkAD5pLAA+aTQAPmk8AD5pRAA+aUwAPmlUAD5pXAA+aWQAPmnoAD5p9AA+agAAPmoMAD5qGAA+aiQAPmowAD5qPAA+akgAPmpQAD5sPAA+bEQAPmxMAD5sVAA+bGAAPmxkAD5saAA+bGwAPmxwAD5seAA+bIAAPmyEAD5siAA+bJAAPmyUAD5ugAA+bogAPm6QAD5umAA+bqQAPm6oAD5urAA+brAAPm60AD5uvAA+bsQAPm7IAD5uzAA+btQAPm7YAD5wxAA+cMwAPnDYAD5w4AA+cOwAPnDwAD5w9AA+cPgAPnD8AD5xBAA+cQwAPnEQAD5xFAA+cRwAPnEgAD5xhAA+cYgAPnGMAD5xlAA+c4AAPnOIAD5zkAA+c5gAPnOkAD5zqAA+c6wAPnOwAD5ztAA+c7wAPnPEAD5zyAA+c8wAPnPUAD5z2AA+dcQAPnXMAD511AA+ddwAPnXoAD517AA+dfAAPnX0AD51+AA+dgAAPnYIAD52DAA+dhAAPnYYAD52HAA+eAgAPngQAD54GAA+eCAAPngsAD54MAA+eDQAPng4AD54PAA+eEQAPnhMAD54UAA+eFQAPnhcAD54YAA+ekwAPnpUAD56XAA+emQAPnpwAD56dAA+engAPnp8AD56gAA+eogAPnqQAD56lAA+epgAPnqgAD56pAA+fJAAPnyYAD58oAA+fKgAPny0AD58uAA+fLwAPnzAAD58xAA+fMwAPnzUAD582AA+fNwAPnzkAD586AA+fgwAPn6cAD5/OAA+f8gAPn/UAD5/3AA+f+QAPn/sAD5/9AA+f/wAPoAAAD6ADAA+gHAAPoDkAD6A7AA+gPQAPoD8AD6BBAA+gQwAPoEUAD6BHAA+gZAAPoGcAD6BqAA+gbQAPoHAAD6BzAA+gdgAPoHkAD6B7AA+g9gAPoPgAD6D6AA+g/AAPoP8AD6EAAA+hAQAPoQIAD6EDAA+hBQAPoQcAD6EIAA+hCQAPoQsAD6EMAA+hhwAPoYkAD6GLAA+hjQAPoZAAD6GRAA+hkgAPoZMAD6GUAA+hlgAPoZgAD6GZAA+hmgAPoZwAD6GdAA+iGAAPohoAD6IcAA+iHgAPoiEAD6IiAA+iIwAPoiQAD6IlAA+iJwAPoikAD6IqAA+iKwAPoi0AD6IuAA+iqQAPoqsAD6KuAA+isAAPorMAD6K0AA+itQAPorYAD6K3AA+iuQAPorsAD6K8AA+ivQAPor8AD6LAAA+jOwAPoz0AD6M/AA+jQQAPo0QAD6NFAA+jRgAPo0cAD6NIAA+jSgAPo0wAD6NNAA+jTgAPo1AAD6NRAA+jzAAPo84AD6PQAA+j0gAPo9UAD6PWAA+j1wAPo9gAD6PZAA+j2wAPo90AD6PeAA+j3wAPo+EAD6PiAA+kXQAPpF8AD6RhAA+kYwAPpGYAD6RnAA+kaAAPpGkAD6RqAA+kbAAPpG4AD6RvAA+kcAAPpHIAD6RzAA+lBgAPpSkAD6VJAA+laQAPpWsAD6VtAA+lbwAPpXEAD6V0AA+ldQAPpXYAD6V5AA+legAPpXwAD6V9AA+lfwAPpYIAD6WDAA+lhAAPpYcAD6WIAA+ljQAPpaYAD6WvAA+lsQAPpbMAD6W8AA+lvwAPpcIAD6XEAA+mDQAPpjEAD6ZYAA+mfAAPpn8AD6aBAA+mgwAPpoUAD6aHAA+miQAPpooAD6aNAA+mpgAPpscAD6bJAA+mywAPps0AD6bPAA+m0QAPptMAD6bVAA+m1wAPpvgAD6b7AA+m/gAPpwEAD6cEAA+nBwAPpwoAD6cNAA+nEAAPpxIAD6eNAA+njwAPp5EAD6eTAA+nlgAPp5cAD6eYAA+nmQAPp5oAD6ecAA+nngAPp58AD6egAA+nogAPp6MAD6geAA+oIAAPqCIAD6gkAA+oJwAPqCgAD6gpAA+oKgAPqCsAD6gtAA+oLwAPqDAAD6gxAA+oMwAPqDQAD6ivAA+osQAPqLQAD6i2AA+ouQAPqLoAD6i7AA+ovAAPqL0AD6i/AA+owQAPqMIAD6jDAA+oxQAPqMYAD6jfAA+o4AAPqOEAD6jjAA+pXgAPqWAAD6liAA+pZAAPqWcAD6loAA+paQAPqWoAD6lrAA+pbQAPqW8AD6lwAA+pcQAPqXMAD6l0AA+p7wAPqfEAD6nzAA+p9QAPqfgAD6n5AA+p+gAPqfsAD6n8AA+p/gAPqgAAD6oBAA+qAgAPqgQAD6oFAA+qgAAPqoIAD6qEAA+qhgAPqokAD6qKAA+qiwAPqowAD6qNAA+qjwAPqpEAD6qSAA+qkwAPqpUAD6qWAA+rEQAPqxMAD6sVAA+rFwAPqxoAD6sbAA+rHAAPqx0AD6seAA+rIAAPqyIAD6sjAA+rJAAPqyYAD6snAA+rogAPq6QAD6umAA+rqAAPq6sAD6usAA+rrQAPq64AD6uvAA+rsQAPq7MAD6u0AA+rtQAPq7cAD6u4AA+sAQAPrCUAD6xMAA+scAAPrHMAD6x1AA+sdwAPrHkAD6x7AA+sfQAPrH4AD6yBAA+smgAPrLcAD6y5AA+suwAPrL0AD6y/AA+swQAPrMMAD6zFAA+s4gAPrOUAD6zoAA+s6wAPrO4AD6zxAA+s9AAPrPcAD6z5AA+tdAAPrXYAD614AA+tegAPrX0AD61+AA+tfwAPrYAAD62BAA+tgwAPrYUAD62GAA+thwAPrYkAD62KAA+uBQAPrgcAD64JAA+uCwAPrg4AD64PAA+uEAAPrhEAD64SAA+uFAAPrhYAD64XAA+uGAAPrhoAD64bAA+ulgAPrpgAD66aAA+unAAPrp8AD66gAA+uoQAPrqIAD66jAA+upQAPrqcAD66oAA+uqQAPrqsAD66sAA+vJwAPrykAD68sAA+vLgAPrzEAD68yAA+vMwAPrzQAD681AA+vNwAPrzkAD686AA+vOwAPrz0AD68+AA+vuQAPr7sAD6+9AA+vvwAPr8IAD6/DAA+vxAAPr8UAD6/GAA+vyAAPr8oAD6/LAA+vzAAPr84AD6/PAA+wSgAPsEwAD7BOAA+wUAAPsFMAD7BUAA+wVQAPsFYAD7BXAA+wWQAPsFsAD7BcAA+wXQAPsF8AD7BgAA+w2wAPsN0AD7DfAA+w4QAPsOQAD7DlAA+w5gAPsOcAD7DoAA+w6gAPsOwAD7DtAA+w7gAPsPAAD7DxAA+xhAAPsacAD7HHAA+x5wAPsekAD7HrAA+x7QAPse8AD7HyAA+x8wAPsfQAD7H3AA+x+AAPsfoAD7H7AA+x/QAPsgAAD7IBAA+yAgAPsgUAD7IGAA+yCwAPsiQAD7ItAA+yLwAPsjEAD7I6AA+yPQAPskAAD7JCAA+yiwAPsq8AD7LWAA+y+gAPsv0AD7L/AA+zAQAPswMAD7MFAA+zBwAPswgAD7MLAA+zJAAPs0UAD7NHAA+zSQAPs0sAD7NNAA+zTwAPs1EAD7NTAA+zVQAPs3YAD7N5AA+zfAAPs38AD7OCAA+zhQAPs4gAD7OLAA+zjgAPs5AAD7QLAA+0DQAPtA8AD7QRAA+0FAAPtBUAD7QWAA+0FwAPtBgAD7QaAA+0HAAPtB0AD7QeAA+0IAAPtCEAD7ScAA+0ngAPtKAAD7SiAA+0pQAPtKYAD7SnAA+0qAAPtKkAD7SrAA+0rQAPtK4AD7SvAA+0sQAPtLIAD7UtAA+1LwAPtTIAD7U0AA+1NwAPtTgAD7U5AA+1OgAPtTsAD7U9AA+1PwAPtUAAD7VBAA+1QwAPtUQAD7VdAA+1XgAPtV8AD7VhAA+13AAPtd4AD7XgAA+14gAPteUAD7XmAA+15wAPtegAD7XpAA+16wAPte0AD7XuAA+17wAPtfEAD7XyAA+2bQAPtm8AD7ZxAA+2cwAPtnYAD7Z3AA+2eAAPtnkAD7Z6AA+2fAAPtn4AD7Z/AA+2gAAPtoIAD7aDAA+2/gAPtwAAD7cCAA+3BAAPtwcAD7cIAA+3CQAPtwoAD7cLAA+3DQAPtw8AD7cQAA+3EQAPtxMAD7cUAA+3jwAPt5EAD7eTAA+3lQAPt5gAD7eZAA+3mgAPt5sAD7ecAA+3ngAPt6AAD7ehAA+3ogAPt6QAD7elAA+4IAAPuCIAD7gkAA+4JgAPuCkAD7gqAA+4KwAPuCwAD7gtAA+4LwAPuDEAD7gyAA+4MwAPuDUAD7g2AA+4fwAPuKMAD7jKAA+47gAPuPEAD7jzAA+49QAPuPcAD7j5AA+4+wAPuPwAD7j/AA+5GAAPuTUAD7k3AA+5OQAPuTsAD7k9AA+5PwAPuUEAD7lDAA+5YAAPuWMAD7lmAA+5aQAPuWwAD7lvAA+5cgAPuXUAD7l3AA+58gAPufQAD7n3AA+5+QAPufwAD7n9AA+5/gAPuf8AD7oAAA+6AgAPugQAD7oFAA+6BgAPuggAD7oJAA+6hAAPuoYAD7qIAA+6igAPuo0AD7qOAA+6jwAPupAAD7qRAA+6kwAPupUAD7qWAA+6lwAPupkAD7qaAA+7FQAPuxcAD7sZAA+7GwAPux4AD7sfAA+7IAAPuyEAD7siAA+7JAAPuyYAD7snAA+7KAAPuyoAD7srAA+7pgAPu6gAD7urAA+7rQAPu7AAD7uxAA+7sgAPu7MAD7u0AA+7tgAPu7gAD7u5AA+7ugAPu7wAD7u9AA+8OAAPvDoAD7w8AA+8PgAPvEEAD7xCAA+8QwAPvEQAD7xFAA+8RwAPvEkAD7xKAA+8SwAPvE0AD7xOAA+8yQAPvMsAD7zNAA+8zwAPvNIAD7zTAA+81AAPvNUAD7zWAA+82AAPvNoAD7zbAA+83AAPvN4AD7zfAA+9WgAPvVwAD71eAA+9YAAPvWMAD71kAA+9ZQAPvWYAD71nAA+9aQAPvWsAD71sAA+9bQAPvW8AD71wAA+9gQAPvYIAD72EAA+9/wAPvgEAD74DAA++BQAPvggAD74JAA++CgAPvgsAD74MAA++DgAPvhEAD74SAA++EwAPvhUAD74WAA++kQAPvpMAD76VAA++lwAPvpoAD76bAA++nAAPvp0AD76eAA++oAAPvqMAD76kAA++pQAPvqcAD76oAA+/IwAPvyUAD78oAA+/KgAPvy0AD78uAA+/LwAPvzAAD78xAA+/MwAPvzYAD783AA+/OAAPvzoAD787AA+/zgAPv/EAD8ARAA/AMQAPwDMAD8A1AA/ANwAPwDkAD8A8AA/APQAPwD4AD8BBAA/AQgAPwEQAD8BFAA/ARwAPwEoAD8BLAA/ATAAPwE8AD8BQAA/AVQAPwG4AD8B3AA/AeQAPwHsAD8CEAA/AhwAPwIoAD8CMAA/A1QAPwPkAD8EgAA/BRAAPwUcAD8FJAA/BSwAPwU0AD8FPAA/BUQAPwVIAD8FVAA/BbgAPwY8AD8GRAA/BkwAPwZUAD8GXAA/BmQAPwZsAD8GdAA/BnwAPwcAAD8HDAA/BxgAPwckAD8HMAA/BzwAPwdIAD8HVAA/B2AAPwdoAD8JVAA/CVwAPwlkAD8JbAA/CXgAPwl8AD8JgAA/CYQAPwmIAD8JkAA/CZgAPwmcAD8JoAA/CagAPwmsAD8LmAA/C6AAPwuoAD8LsAA/C7wAPwvAAD8LxAA/C8gAPwvMAD8L1AA/C9wAPwvgAD8L5AA/C+wAPwvwAD8N3AA/DeQAPw3wAD8N+AA/DgQAPw4IAD8ODAA/DhAAPw4UAD8OHAA/DiQAPw4oAD8OLAA/DjQAPw44AD8OnAA/DqAAPw6kAD8OrAA/EJgAPxCgAD8QqAA/ELAAPxC8AD8QwAA/EMQAPxDIAD8QzAA/ENQAPxDcAD8Q4AA/EOQAPxDsAD8Q8AA/EtwAPxLkAD8S7AA/EvQAPxMAAD8TBAA/EwgAPxMMAD8TEAA/ExgAPxMgAD8TJAA/EygAPxMwAD8TNAA/FSAAPxUoAD8VMAA/FTgAPxVEAD8VSAA/FUwAPxVQAD8VVAA/FVwAPxVkAD8VaAA/FWwAPxV0AD8VeAA/F2QAPxdsAD8XdAA/F3wAPxeIAD8XjAA/F5AAPxeUAD8XmAA/F6AAPxeoAD8XrAA/F7AAPxe4AD8XvAA/GagAPxmwAD8ZuAA/GcAAPxnMAD8Z0AA/GdQAPxnYAD8Z3AA/GeQAPxnsAD8Z8AA/GfQAPxn8AD8aAAA/GyQAPxu0AD8cUAA/HOAAPxzsAD8c9AA/HPwAPx0EAD8dDAA/HRQAPx0YAD8dJAA/HYgAPx38AD8eBAA/HgwAPx4UAD8eHAA/HiQAPx4sAD8eNAA/HqgAPx60AD8ewAA/HswAPx7YAD8e5AA/HvAAPx78AD8fBAA/IPAAPyD4AD8hAAA/IQgAPyEUAD8hGAA/IRwAPyEgAD8hJAA/ISwAPyE0AD8hOAA/ITwAPyFEAD8hSAA/IzQAPyM8AD8jRAA/I0wAPyNYAD8jXAA/I2AAPyNkAD8jaAA/I3AAPyN4AD8jfAA/I4AAPyOIAD8jjAA/JXgAPyWAAD8liAA/JZAAPyWcAD8loAA/JaQAPyWoAD8lrAA/JbQAPyW8AD8lwAA/JcQAPyXMAD8l0AA/J7wAPyfEAD8n0AA/J9gAPyfkAD8n6AA/J+wAPyfwAD8n9AA/J/wAPygEAD8oCAA/KAwAPygUAD8oGAA/KgQAPyoMAD8qFAA/KhwAPyooAD8qLAA/KjAAPyo0AD8qOAA/KkAAPypIAD8qTAA/KlAAPypYAD8qXAA/LEgAPyxQAD8sWAA/LGAAPyxsAD8scAA/LHQAPyx4AD8sfAA/LIQAPyyMAD8skAA/LJQAPyycAD8soAA/LowAPy6UAD8unAA/LqQAPy6wAD8utAA/LrgAPy68AD8uwAA/LsgAPy7QAD8u1AA/LtgAPy7gAD8u5AA/MTAAPzG8AD8yPAA/MrwAPzLEAD8yzAA/MtQAPzLcAD8y6AA/MuwAPzLwAD8y/AA/MwAAPzMIAD8zDAA/MxQAPzMgAD8zJAA/MygAPzM0AD8zOAA/M0wAPzOwAD8z1AA/M9wAPzPkAD80CAA/NBQAPzQgAD80KAA/NUwAPzXcAD82eAA/NwgAPzcUAD83HAA/NyQAPzcsAD83NAA/NzwAPzdAAD83TAA/N7AAPzg0AD84PAA/OEQAPzhMAD84VAA/OFwAPzhkAD84bAA/OHQAPzj4AD85BAA/ORAAPzkcAD85KAA/OTQAPzlAAD85TAA/OVgAPzlgAD87TAA/O1QAPztcAD87ZAA/O3AAPzt0AD87eAA/O3wAPzuAAD87iAA/O5AAPzuUAD87mAA/O6AAPzukAD89kAA/PZgAPz2gAD89qAA/PbQAPz24AD89vAA/PcAAPz3EAD89zAA/PdQAPz3YAD893AA/PeQAPz3oAD8/1AA/P9wAPz/oAD8/8AA/P/wAP0AAAD9ABAA/QAgAP0AMAD9AFAA/QBwAP0AgAD9AJAA/QCwAP0AwAD9AlAA/QJgAP0CcAD9ApAA/QpAAP0KYAD9CoAA/QqgAP0K0AD9CuAA/QrwAP0LAAD9CxAA/QswAP0LUAD9C2AA/QtwAP0LkAD9C6AA/RNQAP0TcAD9E5AA/ROwAP0T4AD9E/AA/RQAAP0UEAD9FCAA/RRAAP0UYAD9FHAA/RSAAP0UoAD9FLAA/RxgAP0cgAD9HKAA/RzAAP0c8AD9HQAA/R0QAP0dIAD9HTAA/R1QAP0dcAD9HYAA/R2QAP0dsAD9HcAA/SVwAP0lkAD9JbAA/SXQAP0mAAD9JhAA/SYgAP0mMAD9JkAA/SZgAP0mgAD9JpAA/SagAP0mwAD9JtAA/S6AAP0uoAD9LsAA/S7gAP0vEAD9LyAA/S8wAP0vQAD9L1AA/S9wAP0vkAD9L6AA/S+wAP0v0AD9L+AA/TRwAP02sAD9OSAA/TtgAP07kAD9O7AA/TvQAP078AD9PBAA/TwwAP08QAD9PHAA/T4AAP0/0AD9P/AA/UAQAP1AMAD9QFAA/UBwAP1AkAD9QLAA/UKAAP1CsAD9QuAA/UMQAP1DQAD9Q3AA/UOgAP1D0AD9Q/AA/UugAP1LwAD9S+AA/UwAAP1MMAD9TEAA/UxQAP1MYAD9THAA/UyQAP1MsAD9TMAA/UzQAP1M8AD9TQAA/VSwAP1U0AD9VPAA/VUQAP1VQAD9VVAA/VVgAP1VcAD9VYAA/VWgAP1VwAD9VdAA/VXgAP1WAAD9VhAA/V3AAP1d4AD9XgAA/V4gAP1eUAD9XmAA/V5wAP1egAD9XpAA/V6wAP1e0AD9XuAA/V7wAP1fEAD9XyAA/WbQAP1m8AD9ZyAA/WdAAP1ncAD9Z4AA/WeQAP1noAD9Z7AA/WfQAP1n8AD9aAAA/WgQAP1oMAD9aEAA/W/wAP1wEAD9cDAA/XBQAP1wgAD9cJAA/XCgAP1wsAD9cMAA/XDgAP1xAAD9cRAA/XEgAP1xQAD9cVAA/XkAAP15IAD9eUAA/XlgAP15kAD9eaAA/XmwAP15wAD9edAA/XnwAP16EAD9eiAA/XowAP16UAD9emAA/YIQAP2CMAD9glAA/YJwAP2CoAD9grAA/YLAAP2C0AD9guAA/YMAAP2DIAD9gzAA/YNAAP2DYAD9g3AA/YygAP2O0AD9kNAA/ZLQAP2S8AD9kxAA/ZMwAP2TUAD9k4AA/ZOQAP2ToAD9k9AA/ZPgAP2UAAD9lBAA/ZQwAP2UYAD9lHAA/ZSAAP2UsAD9lMAA/ZVQAP2W4AD9l3AA/ZeQAP2XsAD9mEAA/ZhwAP2YoAD9mMAA/Z1QAP2fkAD9ogAA/aRAAP2kcAD9pJAA/aSwAP2k0AD9pPAA/aUQAP2lIAD9pVAA/abgAP2o8AD9qRAA/akwAP2pUAD9qXAA/amQAP2psAD9qdAA/anwAP2sAAD9rDAA/axgAP2skAD9rMAA/azwAP2tIAD9rVAA/a2AAP2toAD9tVAA/bVwAP21kAD9tbAA/bXgAP218AD9tgAA/bYQAP22IAD9tkAA/bZgAP22cAD9toAA/bagAP22sAD9vmAA/b6AAP2+oAD9vsAA/b7wAP2/AAD9vxAA/b8gAP2/MAD9v1AA/b9wAP2/gAD9v5AA/b+wAP2/wAD9x3AA/ceQAP3HwAD9x+AA/cgQAP3IIAD9yDAA/chAAP3IUAD9yHAA/ciQAP3IoAD9yLAA/cjQAP3I4AD9ynAA/cqAAP3KkAD9yrAA/dJgAP3SgAD90qAA/dLAAP3S8AD90wAA/dMQAP3TIAD90zAA/dNQAP3TcAD904AA/dOQAP3TsAD908AA/dtwAP3bkAD927AA/dvQAP3cAAD93BAA/dwgAP3cMAD93EAA/dxgAP3cgAD93JAA/dygAP3cwAD93NAA/eSAAP3koAD95MAA/eTgAP3lEAD95SAA/eUwAP3lQAD95VAA/eVwAP3lkAD95aAA/eWwAP3l0AD95eAA/e2QAP3tsAD97dAA/e3wAP3uIAD97jAA/e5AAP3uUAD97mAA/e6AAP3uoAD97rAA/e7AAP3u4AD97vAA/fagAP32wAD99uAA/fcAAP33MAD990AA/fdQAP33YAD993AA/feQAP33sAD998AA/ffQAP338AD9+AAA/fyQAP3+0AD+AUAA/gOAAP4DsAD+A9AA/gPwAP4EEAD+BDAA/gRQAP4EYAD+BJAA/gYgAP4H8AD+CBAA/ggwAP4IUAD+CHAA/giQAP4IsAD+CNAA/gqgAP4K0AD+CwAA/gswAP4LYAD+C5AA/gvAAP4L8AD+DBAA/hPAAP4T4AD+FAAA/hQgAP4UUAD+FGAA/hRwAP4UgAD+FJAA/hSwAP4U0AD+FOAA/hTwAP4VEAD+FSAA/hzQAP4c8AD+HRAA/h0wAP4dYAD+HXAA/h2AAP4dkAD+HaAA/h3AAP4d4AD+HfAA/h4AAP4eIAD+HjAA/iXgAP4mAAD+JiAA/iZAAP4mcAD+JoAA/iaQAP4moAD+JrAA/ibQAP4m8AD+JwAA/icQAP4nMAD+J0AA/i7wAP4vEAD+L0AA/i9gAP4vkAD+L6AA/i+wAP4vwAD+L9AA/i/wAP4wEAD+MCAA/jAwAP4wUAD+MGAA/jgQAP44MAD+OFAA/jhwAP44oAD+OLAA/jjAAP440AD+OOAA/jkAAP45IAD+OTAA/jlAAP45YAD+OXAA/kEgAP5BQAD+QWAA/kGAAP5BsAD+QcAA/kHQAP5B4AD+QfAA/kIQAP5CMAD+QkAA/kJQAP5CcAD+QoAA/kowAP5KUAD+SnAA/kqQAP5KwAD+StAA/krgAP5K8AD+SwAA/ksgAP5LQAD+S1AA/ktgAP5LgAD+S5AA/lTAAP5W8AD+WPAA/lrwAP5bEAD+WzAA/ltQAP5bcAD+W6AA/luwAP5bwAD+W/AA/lwAAP5cIAD+XDAA/lxQAP5cgAD+XJAA/lygAP5c0AD+XOAA/l0wAP5ewAD+X1AA/l9wAP5fkAD+YCAA/mBQAP5ggAD+YKAA/mUwAP5ncAD+aeAA/mwgAP5sUAD+bHAA/myQAP5ssAD+bNAA/mzwAP5tAAD+bTAA/m7AAP5w0AD+cPAA/nEQAP5xMAD+cVAA/nFwAP5xkAD+cbAA/nHQAP5z4AD+dBAA/nRAAP50cAD+dKAA/nTQAP51AAD+dTAA/nVgAP51gAD+fTAA/n1QAP59cAD+fZAA/n3AAP590AD+feAA/n3wAP5+AAD+fiAA/n5AAP5+UAD+fmAA/n6AAP5+kAD+hkAA/oZgAP6GgAD+hqAA/obQAP6G4AD+hvAA/ocAAP6HE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AEAKoABACqgAQAqsAEAKsABACrgAQAq8AEAMqABADLAAQAy4AEAMwABADMwAQAzQAEAM1ABADNgAQAzcAEAM5ABADOwAQAzwAEAM9ABADPwAQA0AAEAO7ABADvQAQA8AAEAPCABADxQAQA8YAEAPHABADyAAQA8kAEAPLABADzQAQA84AEAPPABAD0QAQA9IAEAPrABAD7AAQA+0AEAPvABAEagAQBGwAEARuABAEcAAQBHMAEAR0ABAEdQAQBHYAEAR3ABAEeQAQBHsAEAR8ABAEfQAQBH8AEASAABAE+wAQBP0AEAT/ABAFAQAQBQQAEAUFABAFBgAQBQcAEAUIABAFCgAQBQwAEAUNABAFDgAQBRAAEAURABAFjAAQBY4AEAWQABAFkgAQBZUAEAWWABAFlwAQBZgAEAWZABAFmwAQBZ0AEAWeABAFnwAQBaEAEAWiABAGHQAQBh8AEAYhABAGIwAQBiYAEAYnABAGKAAQBikAEAYqABAGLAAQBi4AEAYvABAGMAAQBjIAEAYzABAGrgAQBrAAEAayABAGtAAQBrcAEAa4ABAGuQAQBroAEAa7ABAGvQAQBr8AEAbAABAGwQAQBsMAEAbEABAHDQAQBzEAEAdYABAHfAAQB38AEAeBABAHgwAQB4UAEAeHABAHiQAQB4oAEAeNABAHpgAQB8MAEAfFABAHxwAQB8kAEAfLABAHzQAQB88AEAfRABAH7gAQB/EAEAf0ABAH9wAQB/oAEAf9ABAIAAAQCAMAEAgFABAIgAAQCIIAEAiFABAIhwAQCIoAEAiLABAIjAAQCI0AEAiOABAIkAAQCJIAEAiTABAIlAAQCJYAEAiXABAJEgAQCRQAEAkWABAJGAAQCRsAEAkcABAJHQAQCR4AEAkfABAJIQAQCSMAEAkkABAJJQAQCScAEAkoABAJowAQCaUAEAmnABAJqQAQCawAEAmtABAJrgAQCa8AEAmwABAJsgAQCbQAEAm1ABAJtgAQCbgAEAm5ABAKNAAQCjYAEAo5ABAKOwAQCj4AEAo/ABAKQAAQCkEAEApCABAKRAAQCkYAEApHABAKSAAQCkoAEApLABAKxgAQCsgAEArKABAKzAAQCs8AEArQABAK0QAQCtIAEArTABAK1QAQCtcAEArYABAK2QAQCtsAEArcABALVwAQC1kAEAtbABALXQAQC2AAEAthABALYgAQC2MAEAtkABALZgAQC2gAEAtpABALagAQC2wAEAttABAL6AAQC+oAEAvsABAL7gAQC/EAEAvyABAL8wAQC/QAEAv1ABAL9wAQC/kAEAv6ABAL+wAQC/0AEAv+ABAMkQAQDLQAEAzUABAM9AAQDPYAEAz4ABAM+gAQDPwAEAz/ABANAAAQDQEAEA0EABANBQAQDQcAEA0IABANCgAQDQ0AEA0OABANDwAQDRIAEA0TABANGAAQDTEAEA06ABANPAAQDT4AEA1HABANSgAQDU0AEA1PABANmAAQDbwAEA3jABAOBwAQDgoAEA4MABAODgAQDhAAEA4SABAOFAAQDhUAEA4YABAOMQAQDlIAEA5UABAOVgAQDlgAEA5aABAOXAAQDl4AEA5gABAOYgAQDoMAEA6GABAOiQAQDowAEA6PABAOkgAQDpUAEA6YABAOmwAQDp0AEA8YABAPGgAQDxwAEA8eABAPIQAQDyIAEA8jABAPJAAQDyUAEA8nABAPKQAQDyoAEA8rABAPLQAQDy4AEA+pABAPqwAQD60AEA+vABAPsgAQD7MAEA+0ABAPtQAQD7YAEA+4ABAPugAQD7sAEA+8ABAPvgAQD78AEBA6ABAQPAAQED8AEBBBABAQRAAQEEUAEBBGABAQRwAQEEgAEBBKABAQTAAQEE0AEBBOABAQUAAQEFEAEBBqABAQawAQEGwAEBBuABAQ6QAQEOsAEBDtABAQ7wAQEPIAEBDzABAQ9AAQEPUAEBD2ABAQ+AAQEPoAEBD7ABAQ/AAQEP4AEBD/ABARegAQEXwAEBF+ABARgAAQEYMAEBGEABARhQAQEYYAEBGHABARiQAQEYsAEBGMABARjQAQEY8AEBGQABASCwAQEg0AEBIPABASEQAQEhQAEBIVABASFgAQEhcAEBIYABASGgAQEhwAEBIdABASHgAQEiAAEBIhABASnAAQEp4AEBKgABASogAQEqUAEBKmABASpwAQEqgAEBKpABASqwAQEq0AEBKuABASrwAQErEAEBKyABATLQAQEy8AEBMxABATMwAQEzYAEBM3ABATOAAQEzkAEBM6ABATPAAQEz4AEBM/ABATQAAQE0IAEBNDABATjAAQE7AAEBPXABAT+wAQE/4AEBQAABAUAgAQFAQAEBQGABAUCAAQFAkAEBQMABAUJQAQFEIAEBREABAURgAQFEgAEBRKABAUTAAQFE4AEBRQABAUbQAQFHAAEBRzABAUdgAQFHkAEBR8ABAUfwAQFIIAEBSEABAU/wAQFQEAEBUDABAVBQAQFQgAEBUJABAVCgAQFQsAEBUMABAVDgAQFRAAEBURABAVEgAQFRQAEBUVABAVkAAQFZIAEBWUABAVlgAQFZkAEBWaABAVmwAQFZwAEBWdABAVnwAQFaEAEBWiABAVowAQFaUAEBWmABAWIQAQFiMAEBYlABAWJwAQFioAEBYrABAWLAAQFi0AEBYuABAWMAAQFjIAEBYzABAWNAAQFjYAEBY3ABAWsgAQFrQAEBa3ABAWuQAQFrwAEBa9ABAWvgAQFr8AEBbAABAWwgAQFsQAEBbFABAWxgAQFsgAEBbJABAXRAAQF0YAEBdIABAXSgAQF00AEBdOABAXTwAQF1AAEBdRABAXUwAQF1UAEBdWABAXVwAQF1kAEBdaABAX1QAQF9cAEBfZABAX2wAQF94AEBffABAX4AAQF+EAEBfiABAX5AAQF+YAEBfnABAX6AAQF+oAEBfrABAYZgAQGGgAEBhqABAYbAAQGG8AEBhwABAYcQAQGHIAEBhzABAYdQAQGHcAEBh4ABAYeQAQGHsAEBh8ABAZDwAQGTIAEBlSABAZcgAQGXQAEBl2ABAZeAAQGXoAEBl9ABAZfgAQGX8AEBmCABAZgwAQGYUAEBmGABAZiAAQGYsAEBmMABAZjQAQGZAAEBmRABAZlgAQGa8AEBm4ABAZugAQGbwAEBnFABAZyAAQGcsAEBnNABAaFgAQGjoAEBphABAahQAQGogAEBqKABAajAAQGo4AEBqQABAakgAQGpMAEBqWABAarwAQGtAAEBrSABAa1AAQGtYAEBrYABAa2gAQGtwAEBreABAa4AAQGwEAEBsEABAbBwAQGwoAEBsNABAbEAAQGxMAEBsWABAbGQAQGxsAEBuWABAbmAAQG5oAEBucABAbnwAQG6AAEBuhABAbogAQG6MAEBulABAbpwAQG6gAEBupABAbqwAQG6wAEBwnABAcKQAQHCsAEBwtABAcMAAQHDEAEBwyABAcMwAQHDQAEBw2ABAcOAAQHDkAEBw6ABAcPAAQHD0AEBy4ABAcugAQHL0AEBy/ABAcwgAQHMMAEBzEABAcxQAQHMYAEBzIABAcygAQHMsAEBzMABAczgAQHM8AEBzoABAc6QAQHOoAEBzsABAdZwAQHWkAEB1rABAdbQAQHXAAEB1xABAdcgAQHXMAEB10ABAddgAQHXgAEB15ABAdegAQHXwAEB19ABAd+AAQHfoAEB38ABAd/gAQHgEAEB4CABAeAwAQHgQAEB4FABAeBwAQHgkAEB4KABAeCwAQHg0AEB4OABAeiQAQHosAEB6NABAejwAQHpIAEB6TABAelAAQHpUAEB6WABAemAAQHpoAEB6bABAenAAQHp4AEB6fABAfGgAQHxwAEB8eABAfIAAQHyMAEB8kABAfJQAQHyYAEB8nABAfKQAQHysAEB8sABAfLQAQHy8AEB8wABAfqwAQH60AEB+vABAfsQAQH7QAEB+1ABAftgAQH7cAEB+4ABAfugAQH7wAEB+9ABAfvgAQH8AAEB/BABAgCgAQIC4AECBVABAgeQAQIHwAECB+ABAggAAQIIIAECCEABAghgAQIIcAECCKABAgowAQIMAAECDCABAgxAAQIMYAECDIABAgygAQIMwAECDOABAg6wAQIO4AECDxABAg9AAQIPcAECD6ABAg/QAQIQAAECECABAhfQAQIX8AECGBABAhgwAQIYYAECGHABAhiAAQIYkAECGKABAhjAAQIY4AECGPABAhkAAQIZIAECGTABAiDgAQIhAAECISABAiFAAQIhcAECIYABAiGQAQIhoAECIbABAiHQAQIh8AECIgABAiIQAQIiMAECIkABAinwAQIqEAECKjABAipQAQIqgAECKpABAiqgAQIqsAECKsABAirgAQIrAAECKxABAisgAQIrQAECK1ABAjMAAQIzIAECM0ABAjNgAQIzkAECM6ABAjOwAQIzwAECM9ABAjPwAQI0EAECNCABAjQwAQI0UAECNGABAjwQAQI8MAECPFABAjxwAQI8oAECPLABAjzAAQI80AECPOABAj0AAQI9IAECPTABAj1AAQI9YAECPXABAkUgAQJFQAECRWABAkWAAQJFsAECRcABAkXQAQJF4AECRfABAkYQAQJGMAECRkABAkZQAQJGcAECRoABAk4wAQJOUAECTnABAk6QAQJOwAECTtABAk7gAQJO8AECTwABAk8gAQJPQAECT1ABAk9gAQJPgAECT5ABAlCgAQJQsAECUNABAlkAAQJbQAECXYABAl+wAQJiIAECZCABAmaQAQJpAAECawABAm1AAQJvgAECb6ABAm/QAQJv8AECcBABAnAwAQJwYAECcJABAnCwAQJw0AECcQABAnEgAQJxQAECcXABAnGgAQJxsAECcgABAnOQAQJz4AECdAABAnRQAQJ0gAECdKABAnkwAQJ7cAECfeABAoAgAQKAUAECgHABAoCQAQKAsAECgNABAoDwAQKBAAECgTABAoLAAQKFEAEChTABAoVQAQKFcAEChZABAoWwAQKF0AEChfABAoYQAQKGMAECiIABAoiwAQKI4AECiRABAolAAQKJcAECiaABAonQAQKKAAECijABAopQAQKSAAECkiABApJQAQKScAECkqABApKwAQKSwAECktABApLgAQKTAAECkyABApMwAQKTQAECk2ABApNwAQKUgAEClJABApSwAQKcYAECnIABApygAQKcwAECnPABAp0AAQKdEAECnSABAp0wAQKdUAECnXABAp2AAQKdkAECnbABAp3AAQKlcAECpZABAqXAAQKl4AECphABAqYgAQKmMAECpkABAqZQAQKmcAECppABAqagAQKmsAECptABAqbgAQKn8AECqEABAqhwAQKokAECqaABAqowAQKqYAECqpABAqqwAQKscAECrZABArVAAQK1YAECtYABArWgAQK10AECteABArXwAQK2AAECthABArYwAQK2UAECtmABArZwAQK2kAECtqABAr5QAQK+cAECvqABAr7AAQK+8AECvwABAr8QAQK/IAECvzABAr9QAQK/cAECv4ABAr+QAQK/sAECv8ABAsDQAQLA4AECwQABAsiwAQLI0AECyPABAskQAQLJQAECyVABAslgAQLJcAECyYABAsmgAQLJwAECydABAsngAQLKAAECyhABAtHAAQLR4AEC0hABAtIwAQLSYAEC0nABAtKAAQLSkAEC0qABAtLAAQLS4AEC0vABAtMAAQLTIAEC0zABAtTAAQLU0AEC1OABAtUAAQLcsAEC3NABAtzwAQLdEAEC3UABAt1QAQLdYAEC3XABAt2AAQLdoAEC3cABAt3QAQLd4AEC3gABAt4QAQLlwAEC5eABAuYQAQLmMAEC5mABAuZwAQLmgAEC5pABAuagAQLmwAEC5uABAubwAQLnAAEC5yABAucwAQLo0AEC6mABAurwAQLrIAEC61ABAuvgAQLsE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AEFMVABBTNQAQU1UAEFNXABBTWQAQU1sAEFNdABBTYAAQU2EAEFNiABBTZQAQU2YAEFNoABBTaQAQU2sAEFNuABBTbwAQU3AAEFNzABBTdAAQU3kAEFOSABBTmwAQU50AEFOfABBTqAAQU6sAEFOuABBTsAAQU/kAEFQdABBURAAQVGgAEFRrABBUbQAQVG8AEFRxABBUcwAQVHUAEFR2ABBUeQAQVJIAEFSzABBUtQAQVLcAEFS5ABBUuwAQVL0AEFS/ABBUwQAQVMMAEFTkABBU5wAQVOoAEFTtABBU8AAQVPMAEFT2ABBU+QAQVPwAEFT+ABBVeQAQVXsAEFV9ABBVfwAQVYIAEFWDABBVhAAQVYUAEFWGABBViAAQVYoAEFWLABBVjAAQVY4AEFWPABBWCgAQVgwAEFYOABBWEAAQVhMAEFYUABBWFQAQVhYAEFYXABBWGQAQVhsAEFYcABBWHQAQVh8AEFYgABBWmwAQVp0AEFagABBWogAQVqUAEFamABBWpwAQVqgAEFapABBWqwAQVq0AEFauABBWrwAQVrEAEFayABBWywAQVswAEFbNABBWzwAQV0oAEFdMABBXTgAQV1AAEFdTABBXVAAQV1UAEFdWABBXVwAQV1kAEFdbABBXXAAQV10AEFdfABBXYAAQV9sAEFfdABBX3wAQV+EAEFfkABBX5QAQV+YAEFfnABBX6AAQV+oAEFfsABBX7QAQV+4AEFfwABBX8QAQWGwAEFhuABBYcAAQWHIAEFh1ABBYdgAQWHcAEFh4ABBYeQAQWHsAEFh9ABBYfgAQWH8AEFiBABBYggAQWP0AEFj/ABBZAQAQWQMAEFkGABBZBwAQWQgAEFkJABBZCgAQWQwAEFkOABBZDwAQWRAAEFkSABBZEwAQWY4AEFmQABBZkgAQWZQAEFmXABBZmAAQWZkAEFmaABBZmwAQWZ0AEFmfABBZoAAQWaEAEFmjABBZpAAQWe0AEFoRABBaOAAQWlwAEFpfABBaYQAQWmMAEFplABBaZwAQWmkAEFpqABBabQAQWoYAEFqjABBapQAQWqcAEFqpABBaqwAQWq0AEFqvABBasQAQWs4AEFrRABBa1AAQWtcAEFraABBa3QAQWuAAEFrjABBa5QAQW2AAEFtiABBbZAAQW2YAEFtpABBbagAQW2sAEFtsABBbbQAQW28AEFtxABBbcgAQW3MAEFt1ABBbdgAQW/EAEFvzABBb9QAQW/cAEFv6ABBb+wAQW/wAEFv9ABBb/gAQXAAAEFwCABBcAwAQXAQAEFwGABBcBwAQXIIAEFyEABBchgAQXIgAEFyLABBcjAAQXI0AEFyOABBcjwAQXJEAEFyTABBclAAQXJUAEFyXABBcmAAQXRMAEF0VABBdGAAQXRoAEF0dABBdHgAQXR8AEF0gABBdIQAQXSMAEF0lABBdJgAQXScAEF0pABBdKgAQXaUAEF2nABBdqQAQXasAEF2uABBdrwAQXbAAEF2xABBdsgAQXbQAEF22ABBdtwAQXbgAEF26ABBduwAQXjYAEF44ABBeOgAQXjwAEF4/ABBeQAAQXkEAEF5CABBeQwAQXkUAEF5HABBeSAAQXkkAEF5LABBeTAAQXscAEF7JABBeywAQXs0AEF7QABBe0QAQXtIAEF7TABBe1AAQXtYAEF7YABBe2QAQXtoAEF7cABBe3QAQX3AAEF+TABBfswAQX9MAEF/VABBf1wAQX9kAEF/bABBf3gAQX98AEF/gABBf4wAQX+QAEF/mABBf5wAQX+oAEF/tABBf7gAQX+8AEF/yABBf8wAQX/gAEGARABBgGgAQYBwAEGAfABBgKAAQYCsAEGAuABBgMAAQYHkAEGCdABBgxAAQYOgAEGDrABBg7QAQYO8AEGDxABBg8wAQYPUAEGD2ABBg+QAQYRIAEGEzABBhNQAQYTcAEGE5ABBhOwAQYT0AEGE/ABBhQQAQYUMAEGFkABBhZwAQYWoAEGFtABBhcAAQYXMAEGF2ABBheQAQYXwAEGF+ABBh+QAQYfsAEGH9ABBh/wAQYgIAEGIDABBiBAAQYgUAEGIGABBiCAAQYgoAEGILABBiDAAQYg4AEGIPABBiigAQYowAEGKOABBikAAQYpMAEGKUABBilQAQYpYAEGKXABBimQAQYpsAEGKcABBinQAQYp8AEGKgABBjGwAQYx0AEGMgABBjIgAQYyUAEGMmABBjJwAQYygAEGMpABBjKwAQYy0AEGMuABBjLwAQYzEAEGMyABBjSwAQY0wAEGNNABBjTwAQY8oAEGPMABBjzgAQY9AAEGPTABBj1AAQY9UAEGPWABBj1wAQY9kAEGPbABBj3AAQY90AEGPfABBj4AAQZFsAEGRdABBkXwAQZGEAEGRkABBkZQAQZGYAEGRnABBkaAAQZGoAEGRsABBkbQAQZG4AEGRwABBkcQAQZOwAEGTuABBk8AAQZPIAEGT1ABBk9gAQZPcAEGT4ABBk+QAQZPsAEGT9ABBk/gAQZP8AEGUBABBlAgAQZX0AEGV/ABBlgQAQZYMAEGWGABBlhwAQZYgAEGWJABBligAQZYwAEGWOABBljwAQZZAAEGWSABBlkwAQZg4AEGYQABBmEgAQZhQAEGYXABBmGAAQZhkAEGYaABBmGwAQZh0AEGYfABBmIAAQZiEAEGYjABBmJAAQZm0AEGaRABBmuAAQZtwAEGbfABBm4gAQZuQAEGbmABBm6AAQZuoAEGbrABBm7gAQZwcAEGckABBnJwAQZyoAEGctABBnMAAQZzMAEGc2ABBnOQAQZ1YAEGdZABBnXAAQZ18AEGdiABBnZQAQZ2gAEGdrABBnbQAQZ+gAEGfqABBn7QAQZ+8AEGfyABBn8wAQZ/QAEGf1ABBn9gAQZ/gAEGf7ABBn/AAQZ/0AEGf/ABBoAAAQaHsAEGh9ABBogAAQaIIAEGiFABBohgAQaIcAEGiIABBoiQAQaIsAEGiOABBojwAQaJAAEGiSABBokwAQaQ4AEGkQABBpEwAQaRUAEGkYABBpGQAQaRoAEGkbABBpHAAQaR4AEGkhABBpIgAQaSMAEGklABBpJgAQaaEAEGmjABBppgAQaagAEGmrABBprAAQaa0AEGmuABBprwAQabEAEGm0ABBptQAQabYAEGm4ABBpuQAQajwAEGpgABBqhAAQaqcAEGrOABBq7gAQaxUAEGs8ABBrXAAQa4AAEGukABBrpgAQa6kAEGurABBrrQAQa68AEGuyABBrtQAQa7cAEGu5ABBrvAAQa74AEGvAABBrwwAQa8YAEGvHABBr0AAQa+kAEGvuABBr8AAQa/UAEGv4ABBr+gAQbEMAEGxnABBsjgAQbLIAEGy1ABBstwAQbLkAEGy7ABBsvQAQbL8AEGzAABBswwAQbNwAEG0BABBtAwAQbQUAEG0HABBtCQAQbQsAEG0NABBtDwAQbREAEG0TABBtOAAQbTsAEG0+ABBtQQAQbUQAEG1HABBtSgAQbU0AEG1QABBtUwAQbVUAEG3QABBt0gAQbdUAEG3XABBt2gAQbdsAEG3cABBt3QAQbd4AEG3gABBt4gAQbeMAEG3kABBt5gAQbecAEG34ABBt+QAQbfsAEG52ABBueAAQbnoAEG58ABBufwAQboAAEG6BABBuggAQboMAEG6FABBuhwAQbogAEG6JABBuiwAQbowAEG8HABBvCQAQbwwAEG8OABBvEQAQbxIAEG8TABBvFAAQbxUAEG8XABBvGQAQbxoAEG8bABBvHQAQbx4AEG8vABBvNAAQbzcAEG85ABBvSgAQb08AEG9SABBvVAAQb1sAEG/WABBv2AAQb9oAEG/cABBv3wAQb+AAEG/hABBv4gAQb+MAEG/lABBv5wAQb+gAEG/pABBv6wAQb+wAEHBnABBwaQAQcGwAEHBuABBwcQAQcHIAEHBzABBwdAAQcHUAEHB3ABBweQAQcHoAEHB7ABBwfQAQcH4AEHCPABBwkAAQcJIAEHENABBxDwAQcREAEHETABBxFgAQcRcAEHEYABBxGQAQcRoAEHEcABBxHgAQcR8AEHEgABBxIgAQcSMAEHGeABBxoAAQcaMAEHGlABBxqAAQcakAEHGqABBxqwAQcawAEHGuABBxsAAQcbEAEHGyABBxtAAQcbUAEHHOABBxzwAQcdAAEHHSABByTQAQck8AEHJRABByUwAQclYAEHJXABByWAAQclkAEHJaABByXAAQcl4AEHJfABByYAAQcmIAEHJjABBy3gAQcuAAEHLiABBy5AAQcucAEHLoABBy6QAQcuoAEHLrABBy7QAQcu8AEHLwABBy8QAQcvMAEHL0ABBzDQAQcy4AEHMxABBzNAAQczcAEHM6ABBzPQAQc0AAEHNDABBzRgAQc2cAEHNqABBzbQAQc3AAEHNzABBzdgAQc3kAEHN8ABBzfwAQc4EAEHOmABBzvwAQc9gAEHPiABB0AAAQdCkAEHQxABB0xAAQdOcAEHUHABB1JwAQdSkAEHUrABB1LQAQdS8AEHUyABB1MwAQdTQAEHU3ABB1OAAQdToAEHU7ABB1PQAQdUAAEHVBABB1QgAQdUUAEHVGABB1SwAQdWQAEHVtABB1bwAQdXEAEHV6ABB1fQAQdYAAEHWCABB1ywAQde8AEHYWABB2OgAQdj0AEHY/ABB2QQAQdkMAEHZFABB2RwAQdkgAEHZLABB2ZAAQdoUAEHaHABB2iQAQdosAEHaNABB2jwAQdpEAEHaTABB2lQAQdrYAEHa5ABB2vAAQdr8AEHbCABB2xQAQdsgAEHbLABB2zgAQdtAAEHdLABB3TQAQd08AEHdRABB3VAAQd1UAEHdWABB3VwAQd1gAEHdaABB3XAAQd10AEHdeABB3YAAQd2EAEHfcABB33gAQd+AAEHfiABB35QAQd+YAEHfnABB36AAQd+kAEHfrABB37QAQd+4AEHfvABB38QAQd/IAEHhtABB4bwAQeHIAEHh0ABB4dwAQeHgAEHh5ABB4egAQeHsAEHh9ABB4fwAQeIAAEHiBABB4gwAQeIQAEHidABB4ngAQeJ8AEHihABB5HAAQeR4AEHkgABB5IgAQeSUAEHkmABB5JwAQeSgAEHkpABB5KwAQeS0AEHkuABB5LwAQeTEAEHkyABB5rQAQea8AEHmxABB5swAQebYAEHm3ABB5uAAQebkAEHm6ABB5vAAQeb4AEHm/ABB5wAAQecIAEHnDABB6PgAQekAAEHpCABB6RAAQekcAEHpIABB6SQAQekoAEHpLABB6TQAQek8AEHpQABB6UQAQelMAEHpUABB6zwAQetEAEHrTABB61QAQetgAEHrZABB62gAQetsAEHrcABB63gAQeuAAEHrhABB64gAQeuQAEHrlABB7YAAQe2IAEHtkABB7ZgAQe2kAEHtqABB7awAQe2wAEHttABB7bwAQe3EAEHtyABB7cwAQe3UAEHt2ABB7vwAQe+MAEHwKABB8LgAQfDEAEHwzABB8NQAQfDcAEHw5ABB8OwAQfDwAEHw/ABB8WAAQfHUAEHx3ABB8eQAQfHsAEHx9ABB8fwAQfIEAEHyDABB8oAAQfKMAEHymABB8qQAQfKwAEHyvABB8sgAQfLUAEHy3ABB9MgAQfTQAEH02ABB9OAAQfTsAEH08ABB9PQAQfT4AEH0/ABB9QQAQfUMAEH1EABB9RQAQfUcAEH1IABB9wwAQfcUAEH3HABB9yQAQfcwAEH3NABB9zgAQfc8AEH3QABB90gAQfdQAEH3VABB91gAQfdgAEH3ZABB+VAAQflYAEH5YABB+WgAQfl0AEH5eABB+XwAQfmAAEH5hABB+YwAQfmUAEH5mABB+ZwAQfmkAEH5qABB+5QAQfucAEH7qABB+7AAQfu8AEH7wABB+8QAQfvIAEH7zABB+9QAQfvcAEH74ABB++QAQfvsAEH78ABB/dwAQf3kAEH97ABB/fQAQf4AAEH+BABB/ggAQf4MAEH+EABB/hgAQf4gAEH+JABB/igAQf4wAEH+NABCACAAQgAoAEIAMABCADgAQgBEAEIASABCAEwAQgBQAEIAVABCAFwAQgBkAEIAaABCAGwAQgB0AEIAeABCAmQAQgJsAEICdABCAnwAQgKIAEICjABCApAAQgKUAEICmABCAqAAQgKoAEICrABCArAAQgK4AEICvABCBQgAQgWUAEIGFABCBpQAQgacAEIGpABCBqwAQga0AEIGwABCBsQAQgbIAEIG1ABCBtgAQgbgAEIG5ABCBuwAQgb4AEIG/ABCBwAAQgcMAEIHEABCByQAQgeIAEIHrABCB7QAQge8AEIH4ABCB+wAQgf4AEIIAABCCSQAQgm0AEIKUABCCuAAQgrsAEIK9ABCCvwAQgsEAEILDABCCxQAQgsYAEILJABCC4gAQgwMAEIMFABCDBwAQgwkAEIMLABCDDQAQgw8AEIMRABCDEwAQgzQAEIM3ABCDOgAQgz0AEINAABCDQwAQg0YAEINJABCDTAAQg04AEIPJABCDywAQg80AEIPPABCD0gAQg9MAEIPUABCD1QAQg9YAEIPYABCD2gAQg9sAEIPcABCD3gAQg98AEIRaABCEXAAQhF4AEIRgABCEYwAQhGQAEIRlABCEZgAQhGcAEIRpABCEawAQhGwAEIRtABCEbwAQhHAAEITrABCE7QAQhPAAEITyABCE9QAQhPYAEIT3ABCE+AAQhPkAEIT7ABCE/QAQhP4AEIT/ABCFAQAQhQIAEIUbABCFHAAQhR0AEIUfABCFmgAQhZwAEIWeABCFoAAQhaMAEIWkABCFpQAQhaYAEIWnABCFqQAQhasAEIWsABCFrQAQha8AEIWwABCGKwAQhi0AEIYvABCGMQAQhjQAEIY1ABCGNgAQhjcAEIY4ABCGOgAQhjwAEIY9ABCGPgAQhkAAEIZBABCGvAAQhr4AEIbAABCGwgAQhsUAEIbGABCGxwAQhsgAEIbJABCGywAQhs0AEIbOABCGzwAQhtEAEIbSABCHTQAQh08AEIdRABCHUwAQh1YAEIdXABCHWAAQh1kAEIdaABCHXAAQh14AEIdfABCHYAAQh2IAEIdjABCH3gAQh+AAEIfiABCH5AAQh+cAEIfoABCH6QAQh+oAEIfrABCH7QAQh+8AEIfwABCH8QAQh/MAEIf0ABCIPQAQiGEAEIiIABCIrAAQiK8AEIixABCIswAQiLUAEIi3ABCIuQAQiLoAEIi9ABCI1gAQiPMAEIj1ABCI9wAQiPkAEIj7ABCI/QAQiP8AEIkBABCJHgAQiSEAEIkkABCJJwAQiSoAEIktABCJMAAQiTMAEIk1ABCJsAAQibIAEIm0ABCJtgAQibkAEIm6ABCJuwAQibwAEIm9ABCJvwAQicEAEInCABCJwwAQicUAEInGABCKQQAQikMAEIpFABCKRwAQikoAEIpLABCKTAAQik0AEIpOABCKUAAQilIAEIpTABCKVAAQilYAEIpXABCK0gAQitQAEIrWABCK2AAQitsAEIrcABCK3QAQit4AEIrfABCK4QAQiuMAEIrkABCK5QAQiucAEIroABCLYwAQi2UAEItoABCLagAQi20AEItuABCLbwAQi3AAEItxABCLcwAQi3UAEIt2ABCLdwAQi3kAEIt6ABCL9QAQi/cAEIv5ABCL+wAQi/4AEIv/ABCMAAAQjAEAEIwCABCMBAAQjAYAEIwHABCMCAAQjAoAEIwLABCMhgAQjIgAEIyKABCMjAAQjI8AEIyQABCMkQAQjJIAEIyTABCMlQAQjJcAEIyYABCMmQAQjJsAEIycABCNFwAQjRkAEI0bABCNHQAQjSAAEI0hABCNIgAQjSMAEI0kABCNJgAQjSgAEI0pABCNKgAQjSwAEI0tABCNwAAQjeMAEI4DABCOIwAQjiUAEI4nABCOKQAQjisAEI4uABCOLwAQjjAAEI4zABCONAAQjjYAEI43ABCOOQAQjjwAEI49ABCOPgAQjkEAEI5CABCORwAQjmAAEI5pABCOawAQjm0AEI52ABCOeQAQjnwAEI5+ABCOxwAQjusAEI8SABCPNgAQjzkAEI87ABCPPQAQjz8AEI9BABCPQwAQj0QAEI9HABCPYAAQj4EAEI+DABCPhQAQj4cAEI+JABCPiwAQj40AEI+PABCPkQAQj7IAEI+1ABCPuAAQj7sAEI++ABCPwQAQj8QAEI/HABCPygAQj8wAEJBHABCQSQAQkEsAEJBNABCQUAAQkFEAEJBSABCQUwAQkFQAEJBWABCQWAAQkFkAEJBaABCQXAAQkF0AEJDYABCQ2gAQkNwAEJDeABCQ4QAQkOIAEJDjABCQ5AAQkOUAEJDnABCQ6QAQkOoAEJDrABCQ7QAQkO4AEJFpABCRawAQkW4AEJFwABCRcwAQkXQAEJF1ABCRdgAQkXcAEJF5ABCRewAQkXwAEJF9ABCRfwAQkYAAEJGZABCRmgAQkZsAEJGdABCSGAAQkhoAEJIcABCSHgAQkiEAEJIiABCSIwAQkiQAEJIlABCSJwAQkikAEJIqABCSKwAQki0AEJIuABCSqQAQkqsAEJKtABCSrwAQkrIAEJKzABCStAAQkrUAEJK2ABCSuAAQkroAEJK7ABCSvAAQkr4AEJK/ABCTOgAQkzwAEJM+ABCTQAAQk0MAEJNEABCTRQAQk0YAEJNHABCTSQAQk0sAEJNMABCTTQAQk08AEJNQABCTywAQk80AEJPPABCT0QAQk9QAEJPVABCT1gAQk9cAEJPYABCT2gAQk9wAEJPdABCT3gAQk+AAEJPhABCUXAAQlF4AEJRgABCUYgAQlGUAEJRmABCUZwAQlGgAEJRpABCUawAQlG0AEJRuABCUbwAQlHEAEJRyABCUuwAQlN8AEJUGABCVKgAQlS0AEJUvABCVMQAQlTMAEJU1ABCVNwAQlTgAEJU7ABCVVAAQlXEAEJVzABCVdQAQlXcAEJV5ABCVewAQlX0AEJV/ABCVnAAQlZ8AEJWiABCVpQAQlagAEJWrABCVrgAQlbEAEJWzABCWLgAQljAAEJYyABCWNAAQljcAEJY4ABCWOQAQljoAEJY7ABCWPQAQlj8AEJZAABCWQQAQlkMAEJZEABCWvwAQlsEAEJbDABCWxQAQlsgAEJbJABCWygAQlssAEJbMABCWzgAQltAAEJbRABCW0gAQltQAEJbVABCXUAAQl1IAEJdUABCXVgAQl1kAEJdaABCXWwAQl1wAEJddABCXXwAQl2EAEJdiABCXYwAQl2UAEJdmABCX4QAQl+MAEJfmABCX6AAQl+sAEJfsABCX7QAQl+4AEJfvABCX8QAQl/MAEJf0ABCX9QAQl/cAEJf4ABCYcwAQmHUAEJh3ABCYeQAQmHwAEJh9ABCYfgAQmH8AEJiAABCYggAQmIQAEJiFABCYhgAQmIgAEJiJABCZBAAQmQYAEJkIABCZCgAQmQ0AEJkOABCZDwAQmRAAEJkRABCZEwAQmRUAEJkWABCZFwAQmRkAEJkaABCZlQAQmZcAEJmZABCZmwAQmZ4AEJmfABCZoAAQmaEAEJmiABCZpAAQmaYAEJmnABCZqAAQmaoAEJmrABCaPgAQmmEAEJqBABCaoQAQmqMAEJqlABCapwAQmqkAEJqsABCarQAQmq4AEJqxABCasgAQmrQAEJq1ABCatwAQmroAEJq7ABCavAAQmr8AEJrAABCaxQAQmt4AEJrnABCa6QAQmusAEJr0ABCa9wAQmvoAEJr8ABCbRQAQm2kAEJuQABCbtAAQm7cAEJu5ABCbuwAQm70AEJu/ABCbwQAQm8IAEJvFABCb3gAQm/8AEJwBABCcAwAQnAUAEJwHABCcCQAQnAsAEJwNABCcDwAQnDAAEJwzABCcNgAQnDkAEJw8ABCcPwAQnEIAEJxFABCcSAAQnEoAEJzFABCcxwAQnMkAEJzLABCczgAQnM8AEJzQABCc0QAQnNIAEJzUABCc1gAQnNcAEJzYABCc2gAQnNsAEJ1WABCdWAAQnVoAEJ1cABCdXwAQnWAAEJ1hABCdYgAQnWMAEJ1lABCdZwAQnWgAEJ1pABCdawAQnWwAEJ3nABCd6QAQnewAEJ3uABCd8QAQnfIAEJ3zABCd9AAQnfUAEJ33ABCd+QAQnfoAEJ37ABCd/QAQnf4AEJ4XABCeGAAQnhkAEJ4bABCelgAQnpgAEJ6aABCenAAQnp8AEJ6gABCeoQAQnqIAEJ6jABCepQAQnqcAEJ6oABCeqQAQnqsAEJ6sABCfJwAQnykAEJ8rABCfLQAQnzAAEJ8xABCfMgAQnzMAEJ80ABCfNgAQnzgAEJ85ABCfOgAQnzwAEJ89ABCfuAAQn7oAEJ+8ABCfvgAQn8EAEJ/CABCfwwAQn8QAEJ/FABCfxwAQn8kAEJ/KABCfywAQn80AEJ/OABCgSQAQoEsAEKBNABCgTwAQoFIAEKBTABCgVAAQoFUAEKBWABCgWAAQoFoAEKBbABCgXAAQoF4AEKBfABCg2gAQoNwAEKDeABCg4AAQoOMAEKDkABCg5QAQoOYAEKDnABCg6QAQoOsAEKDsABCg7QAQoO8AEKDwABChOQAQoV0AEKGEABChqAAQoasAEKGtABChrwAQobEAEKGzABChtQAQobYAEKG5ABCh0gAQoe8AEKHxABCh8wAQofUAEKH3ABCh+QAQofsAEKH9ABCiGgAQoh0AEKIgABCiIwAQoiYAEKIpABCiLAAQoi8AEKIxABCirAAQoq4AEKKwABCisgAQorUAEKK2ABCitwAQorgAEKK5ABCiuwAQor0AEKK+ABCivwAQosEAEKLCABCjPQAQoz8AEKNBABCjQwAQo0YAEKNHABCjSAAQo0kAEKNKABCjTAAQo04AEKNPABCjUAAQo1IAEKNTABCjzgAQo9AAEKPSABCj1AAQo9cAEKPYABCj2QAQo9oAEKPbABCj3QAQo98AEKPgABCj4QAQo+MAEKPkABCkXwAQpGEAEKRkABCkZgAQpGkAEKRqABCkawAQpGwAEKRtABCkbwAQpHEAEKRyABCkcwAQpHUAEKR2ABCk8QAQpPMAEKT1ABCk9wAQpPoAEKT7ABCk/AAQpP0AEKT+ABClAAAQpQIAEKUDABClBAAQpQYAEKUHABClggAQpYQAEKWGABCliAAQpYsAEKWMABCljQAQpY4AEKWPABClkQAQpZMAEKWUABCllQAQpZcAEKWYABCmEwAQphUAEKYXABCmGQAQphwAEKYdABCmHgAQph8AEKYgABCmIgAQpiQAEKYlABCmJgAQpigAEKYpABCmvAAQpt8AEKb/ABCnHwAQpyEAEKcjABCnJQAQpycAEKcqABCnKwAQpywAEKcvABCnMAAQpzIAEKczABCnNQAQpzgAEKc5ABCnOgAQpz0AEKc+ABCnQwAQp1wAEKdlABCnZwAQp2kAEKdyABCndQAQp3gAEKd6ABCnwwAQp+cAEKgOABCoMgAQqDUAEKg3ABCoOQAQqDsAEKg9ABCoPwAQqEAAEKhDABCoXAAQqH0AEKh/ABCogQAQqIMAEKiFABCohwAQqIkAEKiLABCojQAQqK4AEKixABCotAAQqLcAEKi6ABCovQAQqMAAEKjDABCoxgAQqMgAEKlDABCpRQAQqUcAEKlJABCpTAAQqU0AEKlOABCpTwAQqVAAEKlSABCpVAAQqVUAEKlWABCpWAAQqVkAEKnUABCp1gAQqdgAEKnaABCp3QAQqd4AEKnfABCp4AAQqeEAEKnjABCp5QAQqeYAEKnnABCp6QAQqeoAEKplABCqZwAQqmoAEKpsABCqbwAQqnAAEKpxABCqcgAQqnMAEKp1ABCqdwAQqngAEKp5ABCqewAQqnwAEKqVABCqlgAQqpcAEKqZABCrFAAQqxYAEKsYABCrGgAQqx0AEKseABCrHwAQqyAAEKshABCrIwAQqyUAEKsmABCrJwAQqykAEKsqABCrpQAQq6cAEKupABCrqwAQq64AEKuvABCrsAAQq7EAEKuyABCrtAAQq7YAEKu3ABCruAAQq7oAEKu7ABCsNgAQrDgAEKw6ABCsPAAQrD8AEKxAABCsQQAQrEIAEKxDABCsRQAQrEcAEKxIABCsSQAQrEsAEKxMABCsxwAQrMkAEKzLABCszQAQrNAAEKzRABCs0gAQrNMAEKzUABCs1gAQrNgAEKzZABCs2gAQrNwAEKzdABCtWAAQrVoAEK1cABCtXgAQrWEAEK1iABCtYwAQrWQAEK1lABCtZwAQrWkAEK1qABCtawAQrW0AEK1uABCttwAQrdsAEK4CABCuJgAQrikAEK4rABCuLQAQri8AEK4xABCuMwAQrjQAEK43ABCuUAAQrm0AEK5vABCucQAQrnMAEK51ABCudwAQrnkAEK57ABCumAAQrpsAEK6eABCuoQAQrqQAEK6nABCuqgAQrq0AEK6vABCvKgAQrywAEK8uABCvMAAQrzMAEK80ABCvNQAQrzYAEK83ABCvOQAQrzsAEK88ABCvPQAQrz8AEK9AABCvuwAQr70AEK+/ABCvwQAQr8QAEK/FABCvxgAQr8cAEK/IABCvygAQr8wAEK/NABCvzgAQr9AAEK/RABCwTAAQsE4AELBQABCwUgAQsFUAELBWABCwVwAQsFgAELBZABCwWwAQsF0AELBeABCwXwAQsGEAELBiABCw3QAQsN8AELDiABCw5AAQsOcAELDoABCw6QAQsOoAELDrABCw7QAQsO8AELDwABCw8QAQsPMAELD0ABCxbwAQsXEAELFzABCxdQAQsXgAELF5ABCxegAQsXsAELF8ABCxfgAQsYAAELGBABCxggAQsYQAELGFABCyAAAQsgIAELIEABCyBgAQsgkAELIKABCyCwAQsgwAELINABCyDwAQshEAELISABCyEwAQshUAELIWABCykQAQspMAELKVABCylwAQspoAELKbABCynAAQsp0AELKeABCyoAAQsqIAELKjABCypAAQsqYAELKnABCzOgAQs10AELN9ABCznQAQs58AELOhABCzowAQs6UAELOoABCzqQAQs6oAELOtABCzrgAQs7AAELOxABCzswAQs7YAELO3ABCzuAAQs7sAELO8ABCzwQAQs9oAELPjABCz5QAQs+cAELPwABCz8wAQs/YAELP4ABC0QQAQtGUAELSMABC0sAAQtLMAELS1ABC0twAQtLkAELS7ABC0vQAQtL4AELTBABC02gAQtPsAELT9ABC0/wAQtQEAELUDABC1BQAQtQcAELUJABC1CwAQtSwAELUvABC1MgAQtTUAELU4ABC1OwAQtT4AELVBABC1RAAQtUYAELXBABC1wwAQtcUAELXHABC1ygAQtcsAELXMABC1zQAQtc4AELXQABC10gAQtdMAELXUABC11gAQtdcAELZSABC2VAAQtlYAELZYABC2WwAQtlwAELZdABC2XgAQtl8AELZhABC2YwAQtmQAELZlABC2ZwAQtmgAELbjABC25QAQtugAELbqABC27QAQtu4AELbvABC28AAQtvEAELbzABC29QAQtvYAELb3ABC2+QAQtvoAELcTABC3FAAQtxUAELcXABC3kgAQt5QAELeWABC3mAAQt5sAELecABC3nQAQt54AELefABC3oQAQt6MAELekABC3pQAQt6cAELeoABC4IwAQuCUAELgnABC4KQAQuCwAELgtABC4LgAQuC8AELgwABC4MgAQuDQAELg1ABC4NgAQuDgAELg5ABC4tAAQuLYAELi4ABC4ugAQuL0AELi+ABC4vwAQuMAAELjBABC4wwAQuMUAELjGABC4xwAQuMkAELjKABC5RQAQuUcAELlJABC5SwAQuU4AELlPABC5UAAQuVEAELlSABC5VAAQuVYAELlXABC5WAAQuVoAELlbABC51gAQudgAELnaABC53AAQud8AELngABC54QAQueIAELnjABC55QAQuecAELnoABC56QAQuesAELnsABC6NQAQulkAELqAABC6pAAQuqcAELqpABC6qwAQuq0AELqvABC6sQAQurIAELq1ABC6zgAQuusAELrtABC67wAQuvEAELrzABC69QAQuvcAELr5ABC7FgAQuxkAELscABC7HwAQuyIAELslABC7KAAQuysAELstABC7qAAQu6oAELusABC7rgAQu7EAELuyABC7swAQu7QAELu1ABC7twAQu7kAELu6ABC7uwAQu70AELu+ABC8OQAQvDsAELw9ABC8PwAQvEIAELxDABC8RAAQvEUAELxGABC8SAAQvEoAELxLABC8TAAQvE4AELxPABC8ygAQvMwAELzOABC80AAQvNMAELzUABC81QAQvNYAELzXABC82QAQvNsAELzcABC83QAQvN8AELzgABC9WwAQvV0AEL1fABC9YQAQvWQAEL1lABC9ZgAQvWcAEL1oABC9agAQvWwAEL1tABC9bgAQvXAAEL1xABC97AAQve4AEL3wABC98gAQvfUAEL32ABC99wAQvfgAEL35ABC9+wAQvf0AEL3+ABC9/wAQvgEAEL4CABC+fQAQvn8AEL6BABC+gwAQvoYAEL6HABC+iAAQvokAEL6KABC+jAAQvo4AEL6PABC+kAAQvpIAEL6TABC/DgAQvxAAEL8SABC/FAAQvxcAEL8YABC/GQAQvxoAEL8bABC/HQAQvx8AEL8gABC/IQAQvyMAEL8kABC/twAQv9oAEL/6ABDAGgAQwBwAEMAeABDAIAAQwCIAEMAlABDAJgAQwCcAEMAqABDAKwAQwC0AEMAuABDAMAAQwDMAEMA0ABDANQAQwDgAEMA5ABDAPgAQwFcAEMBgABDAYgAQwGQAEMBtABDAcAAQwHMAEMB1ABDAvgAQwOIAEMEJABDBLQAQwTAAEMEyABDBNAAQwTYAEME4ABDBOgAQwTsAEME+ABDBVwAQwXgAEMF6ABDBfAAQwX4AEMGAABDBggAQwYQAEMGGABDBiAAQwakAEMGsABDBrwAQwbIAEMG1ABDBuAAQwbsAEMG+ABDBwQAQwcMAEMI+ABDCQAAQwkIAEMJEABDCRwAQwkgAEMJJABDCSgAQwksAEMJNABDCTwAQwlAAEMJRABDCUwAQwlQAEMLPABDC0QAQwtMAEMLVABDC2AAQwtkAEMLaABDC2wAQwtwAEMLeABDC4AAQwuEAEMLiABDC5AAQwuUAEMNgABDDYgAQw2UAEMNnABDDagAQw2sAEMNsABDDbQAQw24AEMNwABDDcgAQw3MAEMN0ABDDdgAQw3cAEMOQABDDkQAQw5IAEMOUABDEDwAQxBEAEMQTABDEFQAQxBgAEMQZABDEGgAQxBsAEMQcABDEHgAQxCAAEMQhABDEIgAQxCQAEMQlABDEoAAQxKIAEMSkABDEpgAQxKkAEMSqABDEqwAQxKwAEMStABDErwAQxLEAEMSyABDEswAQxLUAEMS2ABDFMQAQxTMAEMU1ABDFNwAQxToAEMU7ABDFPAAQxT0AEMU+ABDFQAAQxUIAEMVDABDFRAAQxUYAEMVHABDFwgAQxcQAEMXGABDFyAAQxcsAEMXMABDFzQAQxc4AEMXPABDF0QAQxdMAEMXUABDF1QAQxdcAEMXYABDGUwAQxlUAEMZXABDGWQAQxlwAEMZdABDGXgAQxl8AEMZgABDGYgAQxmQAEMZlABDGZgAQxmgAEMZpABDGsgAQxtYAEMb9ABDHIQAQxyQAEMcmABDHKAAQxyoAEMcsABDHLgAQxy8AEMcyABDHSwAQx2gAEMdqABDHbAAQx24AEMdwABDHcgAQx3QAEMd2ABDHkwAQx5YAEMeZABDHnAAQx58AEMeiABDHpQAQx6gAEMeqABDIJQAQyCcAEMgpABDIKwAQyC4AEMgvABDIMAAQyDEAEMgyABDINAAQyDYAEMg3ABDIOAAQyDoAEMg7ABDItgAQyLgAEMi6ABDIvAAQyL8AEMjAABDIwQAQyMIAEMjDABDIxQAQyMcAEMjIABDIyQAQyMsAEMjMABDJRwAQyUkAEMlLABDJTQAQyVAAEMlRABDJUgAQyVMAEMlUABDJVgAQyVgAEMlZABDJWgAQyVwAEMldABDJ2AAQydoAEMndABDJ3wAQyeIAEMnjABDJ5AAQyeUAEMnmABDJ6AAQyeoAEMnrABDJ7AAQye4AEMnvABDKagAQymwAEMpuABDKcAAQynMAEMp0ABDKdQAQynYAEMp3ABDKeQAQynsAEMp8ABDKfQAQyn8AEMqAABDK+wAQyv0AEMr/ABDLAQAQywQAEMsFABDLBgAQywcAEMsIABDLCgAQywwAEMsNABDLDgAQyxAAEMsRABDLjAAQy44AEMuQABDLkgAQy5UAEMuWABDLlwAQy5gAEMuZABDLmwAQy50AEMueABDLnwAQy6EAEMuiABDMNQAQzFgAEMx4ABDMmAAQzJoAEMycABDMngAQzKAAEMyjABDMpAAQzKUAEMyoABDMqQAQzKsAEMysABDMrwAQzLIAEMyzABDMtAAQzLcAEMy4ABDMvQAQzNYAEMzfABDM4QAQzOQAEMztABDM8AAQzPMAEMz1ABDNPgAQzWIAEM2JABDNrQAQzbAAEM2yABDNtAAQzbYAEM24ABDNugAQzbsAEM2+ABDN1wAQzfgAEM36ABDN/AAQzf4AEM4AABDOAgAQzgQAEM4GABDOCAAQzikAEM4sABDOLwAQzjIAEM41ABDOOAAQzjsAEM4+ABDOQQAQzkMAEM6+ABDOwAAQzsIAEM7EABDOxwAQzsgAEM7JABDOygAQzssAEM7NABDOzwAQztAAEM7RABDO0wAQztQAEM9PABDPUQAQz1MAEM9VABDPWAAQz1kAEM9aABDPWwAQz1wAEM9eABDPYAAQz2EAEM9iABDPZAAQz2UAEM/gABDP4gAQz+UAEM/nABDP6gAQz+sAEM/sABDP7QAQz+4AEM/wABDP8gAQz/MAEM/0ABDP9gAQz/cAENAQABDQEQAQ0BIAENAUABDQjwAQ0JEAENCTABDQlQAQ0JgAENCZABDQmgAQ0JsAENCcABDQngAQ0KAAENChABDQogAQ0KQAENClABDRIAAQ0SIAENEkABDRJgAQ0SkAENEqABDRKwAQ0SwAENEtABDRLwAQ0TEAENEyABDRMwAQ0TUAENE2ABDRsQAQ0bMAENG1ABDRtwAQ0boAENG7ABDRvAAQ0b0AENG+ABDRwAAQ0cIAENHDABDRxAAQ0cYAENHHABDSQgAQ0kQAENJGABDSSAAQ0ksAENJMABDSTQAQ0k4AENJPABDSUQAQ0lMAENJUABDSVQAQ0lcAENJYABDS0wAQ0tUAENLXABDS2QAQ0twAENLdABDS3gAQ0t8AENLgABDS4gAQ0uQAENLlABDS5gAQ0ugAENLpABDTMgAQ01YAENN9ABDToQAQ06QAENOnABDTqQAQ06sAENOtABDTrwAQ07AAENOzABDTzAAQ0+kAENPsABDT7wAQ0/IAENP1ABDT+AAQ0/sAENP+ABDUGwAQ1B4AENQhABDUJAAQ1CcAENQqABDULQAQ1DAAENQyABDUrQAQ1K8AENSyABDUtAAQ1LcAENS4ABDUuQAQ1LoAENS7ABDUvQAQ1MAAENTBABDUwgAQ1MQAENTFABDVQAAQ1UIAENVFABDVRwAQ1UoAENVLABDVTAAQ1U0AENVOABDVUAAQ1VMAENVUABDVVQAQ1VcAENVYABDV0wAQ1dUAENXYABDV2gAQ1d0AENXeABDV3wAQ1eAAENXhABDV4wAQ1eYAENXnABDV6AAQ1eoAENXrABDWZgAQ1mgAENZrABDWbQAQ1nAAENZxABDWcgAQ1nMAENZ0ABDWdgAQ1nkAENZ6ABDWewAQ1n0AENZ+ABDW+QAQ1vsAENb9ABDW/wAQ1wIAENcDABDXBAAQ1wUAENcGABDXCAAQ1wsAENcMABDXDQAQ1w8AENcQABDXiwAQ140AENePABDXkQAQ15QAENeVABDXlgAQ15cAENeYABDXmgAQ150AENeeABDXnwAQ16EAENeiABDYHQAQ2B8AENgiABDYJAAQ2CcAENgoABDYKQAQ2CoAENgrABDYLQAQ2DAAENgxABDYMgAQ2DQAENg1ABDYRgAQ2EcAENhJABDYxAAQ2MYAENjIABDYygAQ2M0AENjOABDYzwAQ2NAAENjRABDY0wAQ2NYAENjXABDY2AAQ2NoAENjbABDZVgAQ2VgAENlaABDZXAAQ2V8AENlgABDZYQAQ2WIAENljABDZZQAQ2WgAENlpABDZagAQ2WwAENltABDZ6AAQ2eoAENntABDZ7wAQ2fIAENnzABDZ9AAQ2fUAENn2ABDZ+AAQ2fsAENn8ABDZ/QAQ2f8AENoAABDakwAQ2rYAENrWABDa9gAQ2vgAENr6ABDa/AAQ2v4AENsBABDbAgAQ2wMAENsGABDbBwAQ2wkAENsKABDbDAAQ2w8AENsQABDbEQAQ2xQAENsVABDbGgAQ2zMAENs8ABDbPgAQ20AAENtJABDbTAAQ208AENtRABDbmgAQ274AENvlABDcCQAQ3AwAENwOABDcEAAQ3BIAENwUABDcFgAQ3BcAENwaABDcMwAQ3FQAENxWABDcWAAQ3FoAENxcABDcXgAQ3GAAENxiABDcZAAQ3IUAENyIABDciwAQ3I4AENyRABDclAAQ3JcAENyaABDcnQAQ3J8AEN0aABDdHAAQ3R4AEN0gABDdIwAQ3SQAEN0lABDdJgAQ3ScAEN0pABDdKwAQ3SwAEN0tABDdLwAQ3TAAEN2rABDdrQAQ3a8AEN2xABDdtAAQ3bUAEN22ABDdtwAQ3bgAEN26ABDdvAAQ3b0AEN2+ABDdwAAQ3cEAEN48ABDePgAQ3kEAEN5DABDeRgAQ3kcAEN5IABDeSQAQ3koAEN5MABDeTgAQ3k8AEN5QABDeUgAQ3lMAEN5sABDebQAQ3m4AEN5wABDe6wAQ3u0AEN7vABDe8QAQ3vQAEN71ABDe9gAQ3vcAEN74ABDe+gAQ3vwAEN79ABDe/gAQ3wAAEN8BABDffAAQ334AEN+AABDfggAQ34UAEN+GABDfhwAQ34gAEN+JABDfiwAQ340AEN+OABDfjwAQ35EAEN+SABDgDQAQ4A8AEOARABDgEwAQ4BYAEOAXABDgGAAQ4BkAEOAaABDgHAAQ4B4AEOAfABDgIAAQ4CIAEOAjABDgngAQ4KAAEOCiABDgpAAQ4KcAEOCoABDgqQAQ4KoAEOCrABDgrQAQ4K8AEOCwABDgsQAQ4LMAEOC0ABDhLwAQ4TEAEOEzABDhNQAQ4TgAEOE5ABDhOgAQ4TsAEOE8ABDhPgAQ4UAAEOFBABDhQgAQ4UQAEOFFABDhjgAQ4bIAEOHZABDh/QAQ4gAAEOICABDiBAAQ4gYAEOIIABDiCgAQ4gsAEOIOABDiJwAQ4kQAEOJGABDiSAAQ4koAEOJMABDiTgAQ4lAAEOJSABDibwAQ4nIAEOJ1ABDieAAQ4nsAEOJ+ABDigQAQ4oQAEOKGABDjAQAQ4wMAEOMFABDjBwAQ4woAEOMLABDjDAAQ4w0AEOMOABDjEAAQ4xIAEOMTABDjFAAQ4xYAEOMXABDjkgAQ45QAEOOWABDjmAAQ45sAEOOcABDjnQAQ454AEOOfABDjoQAQ46MAEOOkABDjpQAQ46cAEOOoABDkIwAQ5CUAEOQnABDkKQAQ5CwAEOQtABDkLgAQ5C8AEOQwABDkMgAQ5DQAEOQ1ABDkNgAQ5DgAEOQ5ABDktAAQ5LYAEOS5ABDkuwAQ5L4AEOS/ABDkwAAQ5MEAEOTCABDkxAAQ5MYAEOTHABDkyAAQ5MoAEOTLABDlRgAQ5UgAEOVKABDlTAAQ5U8AEOVQABDlUQAQ5VIAEOVTABDlVQAQ5VcAEOVYABDlWQAQ5VsAEOVcABDl1wAQ5dkAEOXbABDl3QAQ5eAAEOXhABDl4gAQ5eMAEOXkABDl5gAQ5egAEOXpABDl6gAQ5ewAEOXtABDmaAAQ5moAEOZsABDmbgAQ5nEAEOZyABDmcwAQ5nQAEOZ1ABDmdwAQ5nkAEOZ6ABDmewAQ5n0AEOZ+ABDnEQAQ5zQAEOdUABDndAAQ53YAEOd4ABDnegAQ53wAEOd/ABDngAAQ54EAEOeEABDnhQAQ54cAEOeIABDnigAQ540AEOeOABDnjwAQ55IAEOeTABDnmAAQ57EAEOe6ABDnvAAQ574AEOfHABDnygAQ580AEOfPABDoGAAQ6DwAEOhjABDohwAQ6IoAEOiMABDojgAQ6JAAEOiSABDolAAQ6JUAEOiYABDosQAQ6NI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AEQMkABEDJgARAygAEQMqABEDLQARAy4AEQMvABEDMAARAzEAEQMzABEDNQARAzYAEQM3ABEDOQARAzoAEQO1ABEDtwARA7oAEQO8ABEDvwARA8AAEQPBABEDwgARA8MAEQPFABEDxwARA8gAEQPJABEDywARA8wAEQPlABED5gARA+cAEQPpABEEZAARBGYAEQRoABEEagARBG0AEQRuABEEbwARBHAAEQRxABEEcwARBHUAEQR2ABEEdwARBHkAEQR6ABEE9QARBPcAEQT5ABEE+wARBP4AEQT/ABEFAAARBQEAEQUCABEFBAARBQYAEQUHABEFCAARBQoAEQULABEFhgARBYgAEQWKABEFjAARBY8AEQWQABEFkQARBZIAEQWTABEFlQARBZcAEQWYABEFmQARBZsAEQWcABEGFwARBhkAEQYbABEGHQARBiAAEQYhABEGIgARBiMAEQYkABEGJgARBigAEQYpABEGKgARBiwAEQYtABEGqAARBqoAEQasABEGrgARBrEAEQayABEGswARBrQAEQa1ABEGtwARBrkAEQa6ABEGuwARBr0AEQa+ABEHBwARBysAEQdSABEHdgARB3kAEQd7ABEHfQARB38AEQeBABEHgwARB4QAEQeHABEHoAARB70AEQe/ABEHwQARB8MAEQfFABEHxwARB8kAEQfLABEH6AARB+sAEQfuABEH8QARB/QAEQf3ABEH+gARB/0AEQf/ABEIegARCHwAEQh+ABEIgAARCIMAEQiEABEIhQARCIYAEQiHABEIiQARCIsAEQiMABEIjQARCI8AEQiQABEJCwARCQ0AEQkPABEJEQARCRQAEQkVABEJFgARCRcAEQkYABEJGgARCRwAEQkdABEJHgARCSAAEQkhABEJnAARCZ4AEQmgABEJogARCaUAEQmmABEJpwARCagAEQmpABEJqwARCa0AEQmuABEJrwARCbEAEQmyABEKLQARCi8AEQoyABEKNAARCjcAEQo4ABEKOQARCjoAEQo7ABEKPQARCj8AEQpAABEKQQARCkMAEQpEABEKvwARCsEAEQrDABEKxQARCsgAEQrJABEKygARCssAEQrMABEKzgARCtAAEQrRABEK0gARCtQAEQrVABELUAARC1IAEQtUABELVgARC1kAEQtaABELWwARC1wAEQtdABELXwARC2EAEQtiABELYwARC2UAEQtmABEL4QARC+MAEQvlABEL5wARC+oAEQvrABEL7AARC+0AEQvuABEL8AARC/IAEQvzABEL9AARC/YAEQv3ABEMigARDK0AEQzNABEM7QARDO8AEQzxABEM8wARDPUAEQz4ABEM+QARDPoAEQz9ABEM/gARDQAAEQ0BABENAwARDQYAEQ0HABENCAARDQsAEQ0MABENEQARDSoAEQ0zABENNQARDTcAEQ1AABENQwARDUYAEQ1IABENkQARDbUAEQ3cABEOAAARDgMAEQ4FABEOBwARDgkAEQ4LABEODQARDg4AEQ4RABEOKgARDksAEQ5NABEOTwARDlEAEQ5TABEOVQARDlcAEQ5ZABEOWwARDnwAEQ5/ABEOggARDoUAEQ6IABEOiwARDo4AEQ6RABEOlAARDpYAEQ8RABEPEwARDxUAEQ8XABEPGgARDxsAEQ8cABEPHQARDx4AEQ8gABEPIgARDyMAEQ8kABEPJgARDycAEQ+iABEPpAARD6YAEQ+oABEPqwARD6wAEQ+tABEPrgARD68AEQ+xABEPswARD7QAEQ+1ABEPtwARD7gAERAzABEQNQAREDgAERA6ABEQPQARED4AERA/ABEQQAAREEEAERBDABEQRQAREEYAERBHABEQSQAREEoAERBjABEQZAAREGUAERBnABEQ4gAREOQAERDmABEQ6AAREOsAERDsABEQ7QAREO4AERDvABEQ8QAREPMAERD0ABEQ9QAREPcAERD4ABERcwAREXUAERF3ABEReQAREXwAERF9ABERfgAREX8AERGAABERggAREYQAERGFABERhgAREYgAERGJABESBAAREgYAERIIABESCgAREg0AERIOABESDwAREhAAERIRABESEwAREhUAERIWABESFwAREhkAERIaABESlQAREpcAERKZABESmwAREp4AERKfABESoAAREqEAERKiABESpAAREqYAERKnABESqAAREqoAERKrABETJgAREygAERMqABETLAAREy8AERMwABETMQAREzIAERMzABETNQAREzcAERM4ABETOQAREzsAERM8ABEThQARE6kAERPQABET9AARE/cAERP5ABET+wARE/0AERP/ABEUAQARFAIAERQFABEUHgARFDsAERQ9ABEUPwARFEEAERRDABEURQARFEcAERRJABEUZgARFGkAERRsABEUbwARFHIAERR1ABEUeAARFHsAERR9ABEU+AARFPoAERT8ABEU/gARFQEAERUCABEVAwARFQQAERUFABEVBwARFQkAERUKABEVCwARFQ0AERUOABEViQARFYsAERWNABEVjwARFZIAERWTABEVlAARFZUAERWWABEVmAARFZoAERWbABEVnAARFZ4AERWfABEWGgARFhwAERYeABEWIAARFiMAERYkABEWJQARFiYAERYnABEWKQARFisAERYsABEWLQARFi8AERYwABEWqwARFq0AERavABEWsQARFrQAERa1ABEWtgARFrcAERa4ABEWugARFrwAERa9ABEWvgARFsAAERbBABEXPAARFz4AERdAABEXQgARF0UAERdGABEXRwARF0gAERdJABEXSwARF00AERdOABEXTwARF1EAERdSABEXzQARF88AERfRABEX0wARF9YAERfXABEX2AARF9kAERfaABEX3AARF94AERffABEX4AARF+IAERfjABEYXgARGGAAERhiABEYZAARGGcAERhoABEYaQARGGoAERhrABEYbQARGG8AERhwABEYcQARGHMAERh0ABEZBwARGSoAERlKABEZagARGWwAERluABEZcAARGXIAERl1ABEZdgARGXcAERl6ABEZewARGX0AERl+ABEZgAARGYMAERmEABEZhQARGYgAERmJABEZjgARGacAERmwABEZsgARGbQAERm9ABEZwAARGcMAERnFABEaDgARGjIAERpZABEafQARGoAAERqCABEahAARGoYAERqIABEaigARGosAERqOABEapwARGsgAERrKABEazAARGs4AERrQABEa0gARGtQAERrWABEa2AARGvkAERr8ABEa/wARGwIAERsFABEbCAARGwsAERsOABEbEQARGxMAERuOABEbkAARG5IAERuUABEblwARG5gAERuZABEbmgARG5sAERudABEbnwARG6AAERuhABEbowARG6QAERwfABEcIQARHCMAERwlABEcKAARHCkAERwqABEcKwARHCwAERwuABEcMAARHDEAERwyABEcNAARHDUAERywABEcsgARHLUAERy3ABEcugARHLsAERy8ABEcvQARHL4AERzAABEcwgARHMMAERzEABEcxgARHMcAERzgABEc4QARHOIAERzkABEdXwARHWEAER1jABEdZQARHWgAER1pABEdagARHWsAER1sABEdbgARHXAAER1xABEdcgARHXQAER11ABEd8AARHfIAER30ABEd9gARHfkAER36ABEd+wARHfwAER39ABEd/wARHgEAER4CABEeAwARHgUAER4GABEegQARHoMAER6FABEehwARHooAER6LABEejAARHo0AER6OABEekAARHpIAER6TABEelAARHpYAER6XABEfEgARHxQAER8WABEfGAARHxsAER8cABEfHQARHx4AER8fABEfIQARHyMAER8kABEfJQARHycAER8oABEfowARH6UAER+nABEfqQARH6wAER+tABEfrgARH68AER+wABEfsgARH7QAER+1ABEftgARH7gAER+5ABEgAgARICYAESBNABEgcQARIHQAESB2ABEgeAARIHoAESB8ABEgfgARIH8AESCCABEgmwARILgAESC6ABEgvAARIL4AESDAABEgwgARIMQAESDGABEg4wARIOYAESDpABEg7AARIO8AESDyABEg9QARIPgAESD6ABEhdQARIXcAESF5ABEhewARIX4AESF/ABEhgAARIYEAESGCABEhhAARIYYAESGHABEhiAARIYoAESGLABEiBgARIggAESIKABEiDAARIg8AESIQABEiEQARIhIAESITABEiFQARIhcAESIYABEiGQARIhsAESIcABEilwARIpkAESKbABEinQARIqAAESKhABEiogARIqMAESKkABEipgARIqgAESKpABEiqgARIqwAESKtABEjKAARIyoAESMsABEjLgARIzEAESMyABEjMwARIzQAESM1ABEjNwARIzkAESM6ABEjOwARIz0AESM+ABEjuQARI7sAESO9ABEjvwARI8IAESPDABEjxAARI8UAESPGABEjyAARI8oAESPLABEjzAARI84AESPPABEkSgARJEwAESROABEkUAARJFMAESRUABEkVQARJFYAESRXABEkWQARJFsAESRcABEkXQARJF8AESRgABEk2wARJN0AESTfABEk4QARJOQAESTlABEk5gARJOcAESToABEk6gARJOwAESTtABEk7gARJPAAESTxABElAgARJQMAESUFABEliAARJawAESXQABEl8wARJhoAESY6ABEmYQARJogAESaoABEmzAARJvAAESbyABEm9QARJvcAESb5ABEm+wARJv4AEScBABEnAwARJwUAEScIABEnCgARJwwAEScPABEnEgARJxMAEScYABEnMQARJzYAESc4ABEnPQARJ0AAESdCABEniwARJ68AESfWABEn+gARJ/0AESf/ABEoAQARKAMAESgFABEoBwARKAgAESgLABEoJAARKEkAEShLABEoTQARKE8AEShRABEoUwARKFUAEShXABEoWQARKFsAESiAABEogwARKIYAESiJABEojAARKI8AESiSABEolQARKJgAESibABEonQARKRgAESkaABEpHQARKR8AESkiABEpIwARKSQAESklABEpJgARKSgAESkqABEpKwARKSwAESkuABEpLwARKUAAESlBABEpQwARKb4AESnAABEpwgARKcQAESnHABEpyAARKckAESnKABEpywARKc0AESnPABEp0AARKdEAESnTABEp1AARKk8AESpRABEqVAARKlYAESpZABEqWgARKlsAESpcABEqXQARKl8AESphABEqYgARKmMAESplABEqZgARKncAESp8ABEqfwARKoEAESqSABEqmwARKp4AESqhABEqowARKrYAESrBABErPAARKz4AEStAABErQgARK0UAEStGABErRwARK0gAEStJABErSwARK00AEStOABErTwARK1EAEStSABErzQARK88AESvSABEr1AARK9cAESvYABEr2QARK9oAESvbABEr3QARK98AESvgABEr4QARK+MAESvkABEr9QARK/YAESv4ABEscwARLHUAESx3ABEseQARLHwAESx9ABEsfgARLH8AESyAABEsggARLIQAESyFABEshgARLIgAESyJABEtBAARLQYAES0JABEtCwARLQ4AES0PABEtEAARLREAES0SABEtFAARLRYAES0XABEtGAARLRoAES0bABEtNAARLTUAES02ABEtOAARLbMAES21ABEttwARLbkAES28ABEtvQARLb4AES2/ABEtwAARLcIAES3EABEtxQARLcYAES3IABEtyQARLkQAES5GABEuSQARLksAES5OABEuTwARLlAAES5RABEuUgARLlQAES5WABEuVwARLlgAES5aABEuWwARLoIAES6bABEupAARLqcAES6qABEuswARLrYAES65ABEuuwARLs4AES9hABEvhAARL6QAES/EABEvxgARL8gAES/KABEvzAARL88AES/QABEv0QARL9QAES/VABEv1wARL9gAES/aABEv3QARL94AES/fABEv4gARL+MAES/oABEwAQARMAoAETAMABEwDgARMBcAETAaABEwHQARMB8AETBoABEwjAARMLMAETDXABEw2gARMNwAETDeABEw4AARMOIAETDkABEw5QARMOgAETEBABExIgARMSQAETEmABExKAARMSoAETEsABExLgARMTAAETEyABExUwARMVYAETFZABExXAARMV8AETFiABExZQARMWgAETFrABExbQARMegAETHqABEx7AARMe4AETHxABEx8gARMfMAETH0ABEx9QARMfcAETH5ABEx+gARMfsAETH9ABEx/gARMnkAETJ7ABEyfQARMn8AETKCABEygwARMoQAETKFABEyhgARMogAETKKABEyiwARMowAETKOABEyjwARMwoAETMMABEzDwARMxEAETMUABEzFQARMxYAETMXABEzGAARMxoAETMcABEzHQARMx4AETMgABEzIQARMzoAETM7ABEzPAARMz4AETO5ABEzuwARM70AETO/ABEzwgARM8MAETPEABEzxQARM8YAETPIABEzygARM8sAETPMABEzzgARM88AETRKABE0TAARNE4AETRQABE0UwARNFQAETRVABE0VgARNFcAETRZABE0WwARNFwAETRdABE0XwARNGAAETTbABE03QARNN8AETThABE05AARNOUAETTmABE05wARNOgAETTqABE07AARNO0AETTuABE08AARNPEAETVsABE1bgARNXAAETVyABE1dQARNXYAETV3ABE1eAARNXkAETV7ABE1fQARNX4AETV/ABE1gQARNYIAETX9ABE1/wARNgEAETYDABE2BgARNgcAETYIABE2CQARNgoAETYMABE2DgARNg8AETYQABE2EgARNhMAETZcABE2gAARNqcAETbLABE2zgARNtAAETbSABE21AARNtYAETbYABE22QARNtwAETb1ABE3EgARNxQAETcWABE3GAARNxoAETccABE3HgARNyAAETc9ABE3QAARN0MAETdGABE3SQARN0wAETdPABE3UgARN1QAETfPABE30QARN9MAETfVABE32AARN9kAETfaABE32wARN9wAETfeABE34AARN+EAETfiABE35AARN+UAEThgABE4YgAROGQAEThmABE4aQAROGoAEThrABE4bAAROG0AEThvABE4cQAROHIAEThzABE4dQAROHYAETjxABE48wAROPUAETj3ABE4+gAROPsAETj8ABE4/QAROP4AETkAABE5AgAROQMAETkEABE5BgAROQcAETmCABE5hAAROYcAETmJABE5jAAROY0AETmOABE5jwAROZAAETmSABE5lAAROZUAETmWABE5mAAROZkAEToUABE6FgAROhgAEToaABE6HQAROh4AETofABE6IAAROiEAETojABE6JQAROiYAETonABE6KQAROioAETqlABE6pwAROqkAETqrABE6rgAROq8AETqwABE6sQAROrIAETq0ABE6tgAROrcAETq4ABE6ugAROrsAETs2ABE7OAAROzoAETs8ABE7PwARO0AAETtBABE7QgARO0MAETtFABE7RwARO0gAETtJABE7SwARO0wAETvfABE8AgARPCIAETxCABE8RAARPEYAETxIABE8SgARPE0AETxOABE8TwARPFIAETxTABE8VQARPFYAETxYABE8WwARPFwAETxdABE8YAARPGEAETxmABE8fwARPIgAETyKABE8jAARPJUAETyYABE8mwARPJ0AETzmABE9CgARPTEAET1VABE9WAARPVoAET1cABE9XgARPWAAET1iABE9YwARPWYAET1/ABE9oAARPaIAET2kABE9pgARPagAET2qABE9rAARPa4AET2wABE90QARPdQAET3XABE92gARPd0AET3gABE94wARPeYAET3pABE96wARPmYAET5oABE+agARPmwAET5vABE+cAARPnEAET5yABE+cwARPnUAET53ABE+eAARPnkAET57ABE+fAARPvcAET75ABE++wARPv0AET8AABE/AQARPwIAET8DABE/BAARPwYAET8IABE/CQARPwoAET8MABE/DQARP4gAET+KABE/jQARP48AET+SABE/kwARP5QAET+VABE/lgARP5gAET+aABE/mwARP5wAET+eABE/nwARP7gAET+5ABE/ugARP7wAEUA3ABFAOQARQDsAEUA9ABFAQAARQEEAEUBCABFAQwARQEQAEUBGABFASAARQEkAEUBKABFATAARQE0AEUDIABFAygARQMwAEUDOABFA0QARQNIAEUDTABFA1AARQNUAEUDXABFA2QARQNoAEUDbABFA3QARQN4AEUFZABFBWwARQV0AEUFfABFBYgARQWMAEUFkABFBZQARQWYAEUFoABFBagARQWsAEUFsABFBbgARQW8AEUHqABFB7AARQe4AEUHwABFB8wARQfQAEUH1ABFB9gARQfcAEUH5ABFB+wARQfwAEUH9ABFB/wARQgAAEUJ7ABFCfQARQn8AEUKBABFChAARQoUAEUKGABFChwARQogAEUKKABFCjAARQo0AEUKOABFCkAARQpEAEULaABFC/gARQyUAEUNJABFDTAARQ04AEUNQABFDUgARQ1QAEUNWABFDVwARQ1oAEUNzABFDkAARQ5IAEUOUABFDlgARQ5gAEUOaABFDnAARQ54AEUO7ABFDvgARQ8EAEUPEABFDxwARQ8oAEUPNABFD0AARQ9IAEURNABFETwARRFEAEURTABFEVgARRFcAEURYABFEWQARRFoAEURcABFEXgARRF8AEURgABFEYgARRGMAEUTeABFE4AARROIAEUTkABFE5wARROgAEUTpABFE6gARROsAEUTtABFE7wARRPAAEUTxABFE8wARRPQAEUVvABFFcQARRXMAEUV1ABFFeAARRXkAEUV6ABFFewARRXwAEUV+ABFFgAARRYEAEUWCABFFhAARRYUAEUYAABFGAgARRgUAEUYHABFGCgARRgsAEUYMABFGDQARRg4AEUYQABFGEgARRhMAEUYUABFGFgARRhcAEUaSABFGlAARRpYAEUaYABFGmwARRpwAEUadABFGngARRp8AEUahABFGowARRqQAEUalABFGpwARRqgAEUcjABFHJQARRycAEUcpABFHLAARRy0AEUcuABFHLwARRzAAEUcyABFHNAARRzUAEUc2ABFHOAARRzkAEUe0ABFHtgARR7gAEUe6ABFHvQARR74AEUe/ABFHwAARR8EAEUfDABFHxQARR8YAEUfHABFHyQARR8oAEUfbABFH3AARR94AEUhhABFIhQARSKkAEUjMABFI8wARSRMAEUk6ABFJYQARSYEAEUmlABFJyQARScsAEUnOABFJ0AARSdIAEUnUABFJ1wARSdoAEUncABFJ3gARSeEAEUnjABFJ5QARSegAEUnrABFJ7AARSfUAEUoOABFKEwARShUAEUoaABFKHQARSh8AEUpoABFKjAARSrMAEUrXABFK2gARStwAEUreABFK4AARSuIAEUrkABFK5QARSugAEUsBABFLJgARSygAEUsqABFLLAARSy4AEUswABFLMgARSzQAEUs2ABFLOAARS10AEUtgABFLYwARS2YAEUtpABFLbAARS28AEUtyABFLdQARS3gAEUt6ABFL9QARS/cAEUv6ABFL/AARS/8AEUwAABFMAQARTAIAEUwDABFMBQARTAcAEUwIABFMCQARTAsAEUwMABFMHQARTB4AEUwgABFMmwARTJ0AEUyfABFMoQARTKQAEUylABFMpgARTKcAEUyoABFMqgARTKwAEUytABFMrgARTLAAEUyxABFNLAARTS4AEU0xABFNMwARTTYAEU03ABFNOAARTTkAEU06ABFNPAARTT4AEU0/ABFNQAARTUIAEU1DABFNVAARTVkAEU1cABFNXgARTW8AEU14ABFNewARTX4AEU2AABFNnAARTa4AEU4pABFOKwARTi0AEU4vABFOMgARTjMAEU40ABFONQARTjYAEU44ABFOOgARTjsAEU48ABFOPgARTj8AEU66ABFOvAARTr8AEU7BABFOxAARTsUAEU7GABFOxwARTsgAEU7KABFOzAARTs0AEU7OABFO0AARTtEAEU7iABFO4wARTuUAEU9gABFPYgART2QAEU9mABFPaQART2oAEU9rABFPbAART20AEU9vABFPcQART3IAEU9zABFPdQART3YAEU/xABFP8wART/YAEU/4ABFP+wART/wAEU/9ABFP/gART/8AEVABABFQAwARUAQAEVAFABFQBwARUAgAEVAhABFQIgARUCMAEVAlABFQoAARUKIAEVCkABFQpgARUKkAEVCqABFQqwARUKwAEVCtABFQrwARULEAEVCyABFQswARULUAEVC2ABFRMQARUTMAEVE2ABFROAARUTsAEVE8ABFRPQARUT4AEVE/ABFRQQARUUMAEVFEABFRRQARUUcAEVFIABFRXwARUXgAEVGJABFRjAARUY8AEVGSABFRlQARUaYAEVGpABFRrAARUa8AEVGyABFRtAARUcoAEVHmABFR+AARUgYAEVKZABFSvAARUtwAEVL8ABFS/gARUwAAEVMCABFTBAARUwcAEVMIABFTCQARUwwAEVMNABFTDwARUxAAEVMSABFTFQARUxYAEVMXABFTGgARUxsAEVMgABFTOQARU0IAEVNEABFTRgARU08AEVNSABFTVQARU1cAEVOgABFTxAARU+sAEVQPABFUEgARVBQAEVQWABFUGAARVBoAEVQcABFUHQARVCAAEVQ5ABFUWgARVFwAEVReABFUYAARVGIAEVRkABFUZgARVGgAEVRqABFUiwARVI4AEVSRABFUlAARVJcAEVSaABFUnQARVKAAEVSjABFUpQARVSAAEVUiABFVJAARVSYAEVUpABFVKgARVSsAEVUsABFVLQARVS8AEVUxABFVMgARVTMAEVU1ABFVNgARVbEAEVWzABFVtQARVbcAEVW6ABFVuwARVbwAEVW9ABFVvgARVcAAEVXCABFVwwARVcQAEVXGABFVxwARVkIAEVZEABFWRwARVkkAEVZMABFWTQARVk4AEVZPABFWUAARVlIAEVZUABFWVQARVlYAEVZYABFWWQARVnIAEVZzABFWdAARVnYAEVbxABFW8wARVvUAEVb3ABFW+gARVvsAEVb8ABFW/QARVv4AEVcAABFXAgARVwMAEVcEABFXBgARVwcAEVeCABFXhAARV4YAEVeIABFXiwARV4wAEVeNABFXjgARV48AEVeRABFXkwARV5QAEVeVABFXlwARV5gAEVgTABFYFQARWBcAEVgZABFYHAARWB0AEVgeABFYHwARWCAAEVgiABFYJAARWCUAEVgmABFYKAARWCkAEVikABFYpgARWKgAEViqABFYrQARWK4AEVivABFYsAARWLEAEVizABFYtQARWLYAEVi3ABFYuQARWLoAEVk1ABFZNwARWTkAEVk7ABFZPgARWT8AEVlAABFZQQARWUIAEVlEABFZRgARWUcAEVlIABFZSgARWUsAEVmUABFZuAARWd8AEVoDABFaBgARWggAEVoKABFaDAARWg4AEVoQABFaEQARWhQAEVotABFaSgARWkwAEVpOABFaUAARWlIAEVpUABFaVgARWlgAEVp1ABFaeAARWnsAEVp+ABFagQARWoQAEVqHABFaigARWowAEVsHABFbCQARWwsAEVsNABFbEAARWxEAEVsSABFbEwARWxQAEVsWABFbGAARWxkAEVsaABFbHAARWx0AEVuYABFbmgARW5wAEVueABFboQARW6IAEVujABFbpAARW6UAEVunABFbqQARW6oAEVurABFbrQARW64AEVwpABFcKwARXC0AEVwvABFcMgARXDMAEVw0ABFcNQARXDYAEVw4ABFcOgARXDsAEVw8ABFcPgARXD8AEVy6ABFcvAARXL8AEVzBABFcxAARXMUAEVzGABFcxwARXMgAEVzKABFczAARXM0AEVzOABFc0AARXNEAEV1MABFdTgARXVAAEV1SABFdVQARXVYAEV1XABFdWAARXVkAEV1bABFdXQARXV4AEV1fABFdYQARXWIAEV3dABFd3wARXeEAEV3jABFd5gARXecAEV3oABFd6QARXeoAEV3sABFd7gARXe8AEV3wABFd8gARXfMAEV5uABFecAARXnIAEV50ABFedwARXngAEV55ABFeegARXnsAEV59ABFefwARXoAAEV6BABFegwARXoQAEV8XABFfOgARX1oAEV96ABFffAARX34AEV+AABFfggARX4UAEV+GABFfhwARX4oAEV+LABFfjQARX44AEV+QABFfkwARX5QAEV+VABFfmAARX5kAEV+eABFftwARX8AAEV/CABFfxAARX80AEV/QABFf0wARX9UAEWAeABFgQgARYGkAEWCNABFgkAARYJIAEWCUABFglgARYJgAEWCaABFgmwARYJ4AEWC3ABFg2AARYNoAEWDcABFg3gARYOAAEWDiABFg5AARYOYAEWDoABFhCQARYQwAEWEPABFhEgARYRUAEWEYABFhGwARYR4AEWEhABFhIwARYZ4AEWGgABFhogARYaQAEWGnABFhqAARYakAEWGqABFhqwARYa0AEWGvABFhsAARYbEAEWGzABFhtAARYi8AEWIxABFiMwARYjUAEWI4ABFiOQARYjoAEWI7ABFiPAARYj4AEWJAABFiQQARYkIAEWJEABFiRQARYsAAEWLCABFixQARYscAEWLKABFiywARYswAEWLNABFizgARYtAAEWLSABFi0wARYtQAEWLWABFi1wARYvAAEWLxABFi8gARYvQAEWNvABFjcQARY3MAEWN1ABFjeAARY3kAEWN6ABFjewARY3wAEWN+ABFjgAARY4EAEWOCABFjhAARY4UAEWQAABFkAgARZAQAEWQGABFkCQARZAoAEWQLABFkDAARZA0AEWQPABFkEQARZBIAEWQTABFkFQARZBYAEWSRABFkkwARZJUAEWSXABFkmgARZJsAEWScABFknQARZJ4AEWSgABFkogARZKMAEWSkABFkpgARZKcAEWUiABFlJAARZSYAEWUoABFlKwARZSwAEWUtABFlLgARZS8AEWUxABFlMwARZTQAEWU1ABFlNwARZTgAEWWzABFltQARZbcAEWW5ABFlvAARZb0AEWW+ABFlvwARZcAAEWXCABFlxAARZcUAEWXGABFlyAARZckAEWYSABFmNgARZl0AEWaBABFmhAARZoYAEWaIABFmigARZowAEWaOABFmjwARZpIAEWarABFmyAARZsoAEWbMABFmzgARZtAAEWbSABFm1AARZtYAEWbzABFm9gARZvkAEWb8ABFm/wARZwIAEWcFABFnCAARZwoAEWeFABFnhwARZ4kAEWeLABFnjgARZ48AEWeQABFnkQARZ5IAEWeUABFnlgARZ5cAEWeYABFnmgARZ5sAEWgWABFoGAARaBoAEWgcABFoHwARaCAAEWghABFoIgARaCMAEWglABFoJwARaCgAEWgpABFoKwARaCwAEWinABFoqQARaKsAEWitABFosAARaLEAEWiyABFoswARaLQAEWi2ABFouAARaLkAEWi6ABFovAARaL0AEWk4ABFpOgARaT0AEWk/ABFpQgARaUMAEWlEABFpRQARaUYAEWlIABFpSgARaUsAEWlMABFpTgARaU8AEWnKABFpzAARac4AEWnQABFp0wARadQAEWnVABFp1gARadcAEWnZABFp2wARadwAEWndABFp3wARaeAAEWpbABFqXQARal8AEWphABFqZAARamUAEWpmABFqZwARamgAEWpqABFqbAARam0AEWpuABFqcAARanEAEWrsABFq7gARavAAEWryABFq9QARavYAEWr3ABFq+AARavkAEWr7ABFq/QARav4AEWr/ABFrAQARawIAEWuVABFruAARa9gAEWv4ABFr+gARa/wAEWv+ABFsAAARbAMAEWwEABFsBQARbAgAEWwJABFsCwARbAwAEWwOABFsEQARbBIAEWwTABFsFgARbBcAEWwgABFsOQARbEIAEWxEABFsRgARbE8AEWxSABFsVQARbFcAEWygABFsxAARbOsAEW0PABFtEgARbRQAEW0WABFtGAARbRoAEW0cABFtHQARbSAAEW05ABFtWgARbVwAEW1eABFtYAARbWIAEW1kABFtZgARbWgAEW1qABFtiwARbY4AEW2RABFtlAARbZcAEW2aABFtnQARbaAAEW2jABFtpQARbiAAEW4iABFuJAARbiYAEW4pABFuKgARbisAEW4sABFuLQARbi8AEW4xABFuMgARbjMAEW41ABFuNgARbrEAEW6zABFutQARbrcAEW66ABFuuwARbrwAEW69ABFuvgARbsAAEW7CABFuwwARbsQAEW7GABFuxwARb0IAEW9EABFvRwARb0kAEW9MABFvTQARb04AEW9PABFvUAARb1IAEW9UABFvVQARb1YAEW9YABFvWQARb3IAEW9zABFvdAARb3YAEW/xABFv8wARb/UAEW/3ABFv+gARb/sAEW/8ABFv/QARb/4AEXAAABFwAgARcAMAEXAEABFwBgARcAcAEXCCABFwhAARcIYAEXCIABFwiwARcIwAEXCNABFwjgARcI8AEXCRABFwkwARcJQAEXCVABFwlwARcJgAEXETABFxFQARcRcAEXEZABFxHAARcR0AEXEeABFxHwARcSAAEXEiABFxJAARcSUAEXEmABFxKAARcSkAEXGkABFxpgARcagAEXGqABFxrQARca4AEXGvABFxsAARcbEAEXGzABFxtQARcbYAEXG3ABFxuQARcboAEXI1ABFyNwARcjkAEXI7ABFyPgARcj8AEXJAABFyQQARckIAEXJEABFyRgARckcAEXJIABFySgARcksAEXKUABFyuAARct8AEXMDABFzBgARcwgAEXMKABFzDAARcw4AEXMQABFzEQARcxQAEXMtABFzSgARc0wAEXNOABFzUAARc1IAEXNUABFzVgARc1gAEXN1ABFzeAARc3sAEXN+ABFzgQARc4QAEXOHABFzigARc4wAEXQHABF0CQARdAsAEXQNABF0EAARdBEAEXQSABF0EwARdBQAEXQWABF0GAARdBkAEXQaABF0HAARdB0AEXSYABF0mgARdJwAEXSeABF0oQARdKIAEXSjABF0pAARdKUAEXSnABF0qQARdKoAEXSrABF0rQARdK4AEXUpABF1KwARdS0AEXUvABF1MgARdTMAEXU0ABF1NQARdTYAEXU4ABF1OgARdTsAEXU8ABF1PgARdT8AEXW6ABF1vAARdb8AEXXBABF1xAARdcUAEXXGABF1xwARdcgAEXXKABF1zAARdc0AEXXOABF10AARddEAEXZMABF2TgARdlAAEXZSABF2VQARdlYAEXZXABF2WAARdlkAEXZbABF2XQARdl4AEXZfABF2YQARdmIAEXbdABF23wARduEAEXbjABF25gARducAEXboABF26QARduoAEXbsABF27gARdu8AEXbwABF28gARdvMAEXduABF3cAARd3IAEXd0ABF3dwARd3gAEXd5ABF3egARd3sAEXd9ABF3fwARd4AAEXeBABF3gwARd4QAEXgXABF4OgAReFoAEXh6ABF4fAAReH4AEXiAABF4ggAReIUAEXiGABF4hwAReIoAEXiLABF4jQAReI4AEXiQABF4kwAReJQAEXiVABF4mAAReJkAEXieABF4twAReMAAEXjCABF4xAAReM0AEXjQABF40wAReNUAEXkeABF5QgAReWkAEXmNABF5kAAReZIAEXmUABF5lgAReZgAEXmaABF5mwAReZ4AEXm3ABF52AARedoAEXncABF53gAReeAAEXniABF55AAReeYAEXnoABF6CQARegwAEXoPABF6EgARehUAEXoYABF6GwAReh4AEXohABF6IwARep4AEXqgABF6ogAReqQAEXqnABF6qAAReqkAEXqqABF6qwAReq0AEXqvABF6sAARerEAEXqzABF6tAARey8AEXsxABF7MwARezUAEXs4ABF7OQARezoAEXs7ABF7PAARez4AEXtAABF7QQARe0IAEXtEABF7RQARe8AAEXvCABF7xQARe8cAEXvKABF7ywARe8wAEXvNABF7zgARe9AAEXvSABF70wARe9QAEXvWABF71wARe/AAEXvxABF78gARe/QAEXxvABF8cQARfHMAEXx1ABF8eAARfHkAEXx6ABF8ewARfHwAEXx+ABF8gAARfIEAEXyCABF8hAARfIUAEX0AABF9AgARfQQAEX0GABF9CQARfQoAEX0LABF9DAARfQ0AEX0PABF9EQARfRIAEX0TABF9FQARfRYAEX2RABF9kwARfZUAEX2XABF9mgARfZsAEX2cABF9nQARfZ4AEX2gABF9ogARfaMAEX2kABF9pgARfacAEX4iABF+JAARfiYAEX4oABF+KwARfiwAEX4tABF+LgARfi8AEX4xABF+MwARfjQAEX41ABF+NwARfjgAEX6zABF+tQARfrcAEX65ABF+vAARfr0AEX6+ABF+vwARfsAAEX7CABF+xAARfsUAEX7GABF+yAARfskAEX8SABF/NgARf10AEX+BABF/hAARf4YAEX+IABF/igARf4wAEX+OABF/jwARf5IAEX+rABF/yAARf8oAEX/MABF/zgARf9AAEX/SABF/1AARf9YAEX/zABF/9gARf/kAEX/8ABF//wARgAIAEYAFABGACAARgAoAEYCFABGAhwARgIkAEYCLABGAjgARgI8AEYCQABGAkQARgJIAEYCUABGAlgARgJcAEYCYABGAmgARgJsAEYEWABGBGAARgRoAEYEcABGBHwARgSAAEYEhABGBIgARgSMAEYElABGBJwARgSgAEYEpABGBKwARgSwAEYGnABGBqQARgasAEYGtABGBsAARgbEAEYGyABGBswARgbQAEYG2ABGBuAARgbkAEYG6ABGBvAARgb0AEYI4ABGCOgARgj0AEYI/ABGCQgARgkMAEYJEABGCRQARgkYAEYJIABGCSgARgksAEYJMABGCTgARgk8AEYLKABGCzAARgs4AEYLQABGC0wARgtQAEYLVABGC1gARgtcAEYLZABGC2wARgtwAEYLdABGC3wARguAAEYNbABGDXQARg18AEYNhABGDZAARg2UAEYNmABGDZwARg2gAEYNqABGDbAARg20AEYNuABGDcAARg3EAEYPsABGD7gARg/AAEYPyABGD9QARg/YAEYP3ABGD+AARg/kAEYP7ABGD/QARg/4AEYP/ABGEAQARhAIAEYQTABGEFAARhBYAEYSZABGEvQARhOEAEYUEABGFKwARhUsAEYVyABGFmQARhbkAEYXdABGGAQARhgMAEYYGABGGCAARhgoAEYYMABGGDwARhhIAEYYUABGGFgARhhkAEYYbABGGHQARhiAAEYYjABGGJAARhikAEYZCABGGRwARhkkAEYZOABGGUQARhlMAEYacABGGwAARhucAEYcLABGHDgARhxAAEYcSABGHFAARhxYAEYcYABGHGQARhxwAEYc1ABGHWgARh1wAEYdeABGHYAARh2IAEYdkABGHZgARh2gAEYdqABGHbAARh5EAEYeUABGHlwARh5oAEYedABGHoAARh6MAEYemABGHqQARh6wAEYeuABGIKQARiCsAEYguABGIMAARiDMAEYg0ABGINQARiDYAEYg3ABGIOQARiDsAEYg8ABGIPQARiD8AEYhAABGIUQARiFIAEYhUABGIzwARiNEAEYjTABGI1QARiNgAEYjZABGI2gARiNsAEYjcABGI3gARiOAAEYjhABGI4gARiOQAEYjlABGJYAARiWIAEYllABGJZwARiWoAEYlrABGJbAARiW0AEYluABGJcAARiXIAEYlzABGJdAARiXYAEYl3ABGJiAARiYkAEYmLABGKBgARiggAEYoKABGKDAARig8AEYoQABGKEQARihIAEYoTABGKFQARihcAEYoYABGKGQARihsAEYocABGKlwARipkAEYqcABGKngARiqEAEYqiABGKowARiqQAEYqlABGKpwARiqkAEYqqABGKqwARiq0AEYquABGKvwARisAAEYrCABGLPQARiz8AEYtBABGLQwARi0YAEYtHABGLSAARi0kAEYtKABGLTAARi04AEYtPABGLUAARi1IAEYtTABGLzgARi9AAEYvTABGL1QARi9gAEYvZABGL2gARi9sAEYvcABGL3gARi+AAEYvhABGL4gARi+QAEYvlABGL/gARi/8AEYwAABGMAgARjH0AEYx/ABGMgQARjIMAEYyGABGMhwARjIgAEYyJABGMigARjIwAEYyOABGMjwARjJAAEYySABGMkwARjQ4AEY0QABGNEwARjRUAEY0YABGNGQARjRoAEY0bABGNHAARjR4AEY0gABGNIQARjSIAEY0kABGNJQARjVUAEY1uABGNdwARjXoAEY19ABGNhgARjYkAEY2MABGNjgARjaEAEY2rABGOPgARjmEAEY6BABGOoQARjqMAEY6lABGOpwARjqkAEY6sABGOrQARjq4AEY6xABGOsgARjrQAEY61ABGOtwARjroAEY67ABGOvAARjr8AEY7AABGOxQARjt4AEY7nABGO6QARjusAEY70ABGO9wARjvoAEY78ABGPRQARj2kAEY+QABGPtAARj7cAEY+5ABGPuwARj70AEY+/ABGPwQARj8IAEY/FABGP3gARj/8AEZABABGQAwARkAUAEZAHABGQCQARkAsAEZANABGQDwARkDAAEZAzABGQNgARkDkAEZA8ABGQPwARkEIAEZBFABGQSAARkEoAEZDFABGQxwARkMkAEZDLABGQzgARkM8AEZDQABGQ0QARkNIAEZDUABGQ1gARkNcAEZDYABGQ2gARkNsAEZFWABGRWAARkVoAEZFcABGRXwARkWAAEZFhABGRYgARkWMAEZFlABGRZwARkWgAEZFpABGRawARkWwAEZHnABGR6QARkewAEZHuABGR8QARkfIAEZHzABGR9AARkfUAEZH3ABGR+QARkfoAEZH7ABGR/QARkf4AEZIXABGSGAARkhkAEZIbABGSlgARkpgAEZKaABGSnAARkp8AEZKgABGSoQARkqIAEZKjABGSpQARkqcAEZKoABGSqQARkqsAEZKsABGTJwARkykAEZMrABGTLQARkzAAEZMxABGTMgARkzMAEZM0ABGTNgARkzgAEZM5ABGTOgARkzwAEZM9ABGTuAARk7oAEZO8ABGTvgARk8EAEZPCABGTwwARk8QAEZPFABGTxwARk8kAEZPKABGTywARk80AEZPOABGUSQARlEsAEZRNABGUTwARlFIAEZRTABGUVAARlFUAEZRWABGUWAARlFoAEZRbABGUXAARlF4AEZRfABGU2gARlNwAEZTeABGU4AARlOMAEZTkABGU5QARlOYAEZTnABGU6QARlOsAEZTsABGU7QARlO8AEZTwABGVOQARlV0AEZWEABGVqAARlasAEZWtABGVrwARlbEAEZWzABGVtQARlbYAEZW5ABGV0gARle8AEZXxABGV8wARlfUAEZX3ABGV+QARlfsAEZX9ABGWGgARlh0AEZYgABGWIwARliYAEZYpABGWLAARli8AEZYxABGWrAARlq4AEZawABGWsgARlrUAEZa2ABGWtwARlrgAEZa5ABGWuwARlr0AEZa+ABGWvwARlsEAEZbCABGXPQARlz8AEZdBABGXQwARl0YAEZdHABGXSAARl0kAEZdKABGXTAARl04AEZdPABGXUAARl1IAEZdTABGXzgARl9AAEZfSABGX1AARl9cAEZfYABGX2QARl9oAEZfbABGX3QARl98AEZfgABGX4QARl+MAEZfkABGYXwARmGEAEZhkABGYZgARmGkAEZhqABGYawARmGwAEZhtABGYbwARmHEAEZhyABGYcwARmHUAEZh2ABGY8QARmPMAEZj1ABGY9wARmPoAEZj7ABGY/AARmP0AEZj+ABGZAAARmQIAEZkDABGZBAARmQYAEZkHABGZggARmYQAEZmGABGZiAARmYsAEZmMABGZjQARmY4AEZmPABGZkQARmZMAEZmUABGZlQARmZcAEZmYABGaEwARmhUAEZoXABGaGQARmhwAEZodABGaHgARmh8AEZogABGaIgARmiQAEZolABGaJgARmigAEZopABGavAARmt8AEZr/ABGbHwARmyEAEZsjABGbJQARmycAEZsqABGbKwARmywAEZsvABGbMAARmzIAEZszABGbNQARmzgAEZs5ABGbOgARmz0AEZs+ABGbQwARm1wAEZtlABGbZwARm2kAEZtyABGbdQARm3gAEZt6ABGbwwARm+cAEZwOABGcMgARnDUAEZw3ABGcOQARnDsAEZw9ABGcPwARnEAAEZxDABGcXAARnH0AEZx/ABGcgQARnIMAEZyFABGchwARnIkAEZyLABGcjQARnK4AEZyxABGctAARnLcAEZy6ABGcvQARnMAAEZzDABGcxgARnMgAEZ1DABGdRQARnUcAEZ1JABGdTAARnU0AEZ1OABGdTwARnVAAEZ1SABGdVAARnVUAEZ1WABGdWAARnVkAEZ3UABGd1gARndgAEZ3aABGd3QARnd4AEZ3fABGd4AARneEAEZ3jABGd5QARneYAEZ3nABGd6QARneoAEZ5lABGeZwARnmoAEZ5sABGebwARnnAAEZ5xABGecgARnnMAEZ51ABGedwARnngAEZ55ABGeewARnnwAEZ6VABGelgARnpcAEZ6ZABGfFAARnxYAEZ8YABGfGgARnx0AEZ8eABGfHwARnyAAEZ8hABGfIwARnyUAEZ8mABGfJwARnykAEZ8qABGfpQARn6cAEZ+pABGfqwARn64AEZ+vABGfsAARn7EAEZ+yABGftAARn7YAEZ+3ABGfuAARn7oAEZ+7ABGgNgARoDgAEaA6ABGgPAARoD8AEaBAABGgQQARoEIAEaBDABGgRQARoEcAEaBIABGgSQARoEsAEaBMABGgxwARoMkAEaDLABGgzQARoNAAEaDRABGg0gARoNMAEaDUABGg1gARoNgAEaDZABGg2gARoNwAEaDdABGhWAARoVoAEaFcABGhXgARoWEAEaFiABGhYwARoWQAEaFlABGhZwARoWkAEaFqABGhawARoW0AEaFuABGhtwARodsAEaICABGiJgARoikAEaIrABGiLQARoi8AEaIxABGiMwARojQAEaI3ABGiUAARom0AEaJvABGicQARonMAEaJ1ABGidwARonkAEaJ7ABGimAARopsAEaKeABGioQARoqQAEaKnABGiqgARoq0AEaKvABGjKgARoywAEaMuABGjMAARozMAEaM0ABGjNQARozYAEaM3ABGjOQARozsAEaM8ABGjPQARoz8AEaNAABGjuwARo70AEaO/ABGjwQARo8QAEaPFABGjxgARo8cAEaPIABGjygARo8wAEaPNABGjzgARo9AAEaPRABGkTAARpE4AEaRQABGkUgARpFUAEaRWABGkVwARpFgAEaRZABGkWwARpF0AEaReABGkXwARpGEAEaRiABGk3QARpN8AEaTiABGk5AARpOcAEaToABGk6QARpOoAEaTrABGk7QARpO8AEaTwABGk8QARpPMAEaT0ABGlbwARpXEAEaVzABGldQARpXgAEaV5ABGlegARpXsAEaV8ABGlfgARpYAAEaWBABGlggARpYQAEaWFABGmAAARpgIAEaYEABGmBgARpgkAEaYKABGmCwARpgwAEaYNABGmDwARphEAEaYSABGmEwARphUAEaYWABGmkQARppMAEaaVABGmlwARppoAEaabABGmnAARpp0AEaaeABGmoAARpqIAEaajABGmpAARpqYAEaanABGmuAARprkAEaa7ABGnPgARp2IAEaeGABGnqQARp9AAEafwABGoFwARqD4AEaheABGoggARqKYAEaioABGoqwARqK0AEaivABGosQARqLQAEai3ABGouQARqLsAEai+ABGowAARqMIAEajFABGoyAARqMkAEajSABGo6wARqPAAEajyABGo9wARqPoAEaj8ABGpRQARqWkAEamQABGptAARqbcAEam5ABGpuwARqb0AEam/ABGpwQARqcIAEanFABGp3gARqgMAEaoFABGqBwARqgkAEaoLABGqDQARqg8AEaoRABGqEwARqhUAEao6ABGqPQARqkAAEapDABGqRgARqkkAEapMABGqTwARqlIAEapVABGqVwARqtIAEarUABGq1wARqtkAEarcABGq3QARqt4AEarfABGq4AARquIAEarkABGq5QARquYAEaroABGq6QARqvoAEar7ABGq/QARq3gAEat6ABGrfAARq34AEauBABGrggARq4MAEauEABGrhQARq4cAEauJABGrigARq4sAEauNABGrjgARrAkAEawLABGsDgARrBAAEawTABGsFAARrBUAEawWABGsFwARrBkAEawbABGsHAARrB0AEawfABGsIAARrDEAEawyABGsNAARrK8AEayxABGsswARrLUAEay4ABGsuQARrLoAEay7ABGsvAARrL4AEazAABGswQARrMIAEazEABGsxQARrUAAEa1CABGtRQARrUcAEa1KABGtSwARrUwAEa1NABGtTgARrVAAEa1SABGtUwARrVQAEa1WABGtVwARrWgAEa1pABGtawARreYAEa3oABGt6gARrewAEa3vABGt8AARrfEAEa3yABGt8wARrfUAEa33ABGt+AARrfkAEa37ABGt/AARrncAEa55ABGufAARrn4AEa6BABGuggARroMAEa6EABGuhQARrocAEa6JABGuigARrosAEa6NABGujgARrqcAEa6oABGuqQARrqsAEa8mABGvKAARryoAEa8sABGvLwARrzAAEa8xABGvMgARrzMAEa81ABGvNwARrzgAEa85ABGvOwARrzwAEa+3ABGvuQARr7wAEa++ABGvwQARr8IAEa/DABGvxAARr8UAEa/HABGvyQARr8oAEa/LABGvzQARr84AEa/pABGwAgARsAsAEbAOABGwEQARsBoAEbAdABGwIAARsCIAEbA1ABGwyAARsOsAEbELABGxKwARsS0AEbEvABGxMQARsTMAEbE2ABGxNwARsTgAEbE7ABGxPAARsT4AEbE/ABGxQQARsUQAEbFFABGxRgARsUkAEbFKABGxUwARsWwAEbF1ABGxdwARsXkAEbGCABGxhQARsYgAEbGKABGx0wARsfcAEbIeABGyQgARskUAEbJHABGySQARsksAEbJNABGyTwARslAAEbJTABGybAARso0AEbKPABGykQARspMAEbKVABGylwARspkAEbKbABGynQARsr4AEbLBABGyxAARsscAEbLKABGyzQARstAAEbLTABGy1gARstgAEbNTABGzVQARs1cAEbNZABGzXAARs10AEbNeABGzXwARs2AAEbNiABGzZAARs2UAEbNmABGzaAARs2kAEbPkABGz5gARs+gAEbPqABGz7QARs+4AEbPvABGz8AARs/EAEbPzABGz9QARs/YAEbP3ABGz+QARs/oAEbR1ABG0dwARtHoAEbR8ABG0fwARtIAAEbSBABG0ggARtIMAEbSFABG0hwARtIgAEbSJABG0iwARtIwAEbSlABG0pgARtKcAEbSpABG1JAARtSYAEbUoABG1KgARtS0AEbUuABG1LwARtTAAEbUxABG1MwARtTUAEbU2ABG1NwARtTkAEbU6ABG1tQARtbcAEbW5ABG1uwARtb4AEbW/ABG1wAARtcEAEbXCABG1xAARtcYAEbXHABG1yAARtcoAEbXLABG2RgARtkgAEbZKABG2TAARtk8AEbZQABG2UQARtlIAEbZTABG2VQARtlcAEbZYABG2WQARtlsAEbZcABG21wARttkAEbbbABG23QARtuAAEbbhABG24gARtuMAEbbkABG25gARtugAEbbpABG26gARtuwAEbbtABG3aAARt2oAEbdsABG3bgARt3EAEbdyABG3cwARt3QAEbd1ABG3dwARt3kAEbd6ABG3ewARt30AEbd+ABG3xwARt+sAEbgSABG4NgARuDkAEbg7ABG4PQARuD8AEbhBABG4QwARuEQAEbhHABG4YAARuH0AEbh/ABG4gQARuIMAEbiFABG4hwARuIkAEbiLABG4qAARuKsAEbiuABG4sQARuLQAEbi3ABG4ugARuL0AEbi/ABG5OgARuTwAEbk+ABG5QAARuUMAEblEABG5RQARuUYAEblHABG5SQARuUsAEblMABG5TQARuU8AEblQABG5ywARuc0AEbnPABG50QARudQAEbnVABG51gARudcAEbnYABG52gARudwAEbndABG53gARueAAEbnhABG6XAARul4AEbpgABG6YgARumUAEbpmABG6ZwARumgAEbppABG6awARum0AEbpuABG6bwARunEAEbpyABG67QARuu8AEbryABG69AARuvcAEbr4ABG6+QARuvoAEbr7ABG6/QARuv8AEbsAABG7AQARuwMAEbsEABG7fwARu4EAEbuDABG7hQARu4gAEbuJABG7igARu4sAEbuMABG7jgARu5AAEbuRABG7kgARu5QAEbuVABG8EAARvBIAEbwUABG8FgARvBkAEbwaABG8GwARvBwAEbwdABG8HwARvCEAEbwiABG8IwARvCUAEbwmABG8oQARvKMAEbylABG8pwARvKoAEbyrABG8rAARvK0AEbyuABG8sAARvLIAEbyzABG8tAARvLYAEby3ABG9SgARvW0AEb2NABG9rQARva8AEb2xABG9swARvbUAEb24ABG9uQARvboAEb29ABG9vgARvcAAEb3BABG9wwARvcYAEb3HABG9yAARvcsAEb3MABG90QARveoAEb3zABG99QARvfcAEb4AABG+AwARvgYAEb4IABG+UQARvnUAEb6cABG+wAARvsMAEb7FABG+xwARvskAEb7LABG+zQARvs4AEb7RABG+6gARvwsAEb8NABG/DwARvxEAEb8TABG/FQARvxcAEb8ZABG/GwARvzwAEb8/ABG/QgARv0UAEb9IABG/SwARv04AEb9RABG/VAARv1YAEb/RABG/0wARv9UAEb/XABG/2gARv9sAEb/cABG/3QARv94AEb/gABG/4gARv+MAEb/kABG/5gARv+cAEcBiABHAZAARwGYAEcBoABHAawARwGwAEcBtABHAbgARwG8AEcBxABHAcwARwHQAEcB1ABHAdwARwHgAEcDzABHA9QARwPgAEcD6ABHA/QARwP4AEcD/ABHBAAARwQEAEcEDABHBBQARwQYAEcEHABHBCQARwQoAEcEjABHBJAARwSUAEcEnABHBogARwaQAEcGmABHBqAARwasAEcGsABHBrQARwa4AEcGvABHBsQARwbMAEcG0ABHBtQARwbcAEcG4ABHCMwARwjUAEcI3ABHCOQARwjwAEcI9ABHCPgARwj8AEcJAABHCQgARwkQAEcJFABHCRgARwkgAEcJJABHCxAARwsYAEcLIABHCygARws0AEcLOABHCzwARwtAAEcLRABHC0wARwtUAEcLWABHC1wARwtkAEcLaABHDVQARw1cAEcNZABHDWwARw14AEcNfABHDYAARw2EAEcNiABHDZAARw2YAEcNnABHDaAARw2oAEcNrABHD5gARw+gAEcPqABHD7AARw+8AEcPwABHD8QARw/IAEcPzABHD9QARw/cAEcP4ABHD+QARw/sAEcP8ABHERQARxGkAEcSQABHEtAARxLcAEcS5ABHEuwARxL0AEcS/ABHEwQARxMIAEcTFABHE3gARxPsAEcT9ABHE/wARxQEAEcUDABHFBQARxQcAEcUJABHFJgARxSkAEcUsABHFLwARxTIAEcU1ABHFOAARxTsAEcU9ABHFuAARxboAEcW8ABHFvgARxcEAEcXCABHFwwARxcQAEcXFABHFxwARxckAEcXKABHFywARxc0AEcXOABHGSQARxksAEcZNABHGTwARxlIAEcZTABHGVAARxlUAEcZWABHGWAARxloAEcZbABHGXAARxl4AEcZfABHG2gARxtwAEcbeABHG4AARxuMAEcbkABHG5QARxuYAEcbnABHG6QARxusAEcbsABHG7QARxu8AEcbwABHHawARx20AEcdwABHHcgARx3UAEcd2ABHHdwARx3gAEcd5ABHHewARx30AEcd+ABHHfwARx4EAEceCABHH/QARx/8AEcgBABHIAwARyAYAEcgHABHICAARyAkAEcgKABHIDAARyA4AEcgPABHIEAARyBIAEcgTABHIjgARyJAAEciSABHIlAARyJcAEciYABHImQARyJoAEcibABHInQARyJ8AEcigABHIoQARyKMAEcikABHJHwARySEAEckjABHJJQARySgAEckpABHJKgARySsAEcksABHJLgARyTAAEckxABHJMgARyTQAEck1ABHJRgARyUcAEclJABHJzAARyfAAEcoUABHKNwARyl4AEcp+ABHKpQARyswAEcrsABHLEAARyzQAEcs2ABHLOQARyzsAEcs9ABHLPwARy0IAEctFABHLRwARy0kAEctMABHLTgARy1AAEctTABHLVgARy1cAEctcABHLdQARy3oAEct8ABHLgQARy4QAEcuGABHLzwARy/MAEcwaABHMPgARzEEAEcxDABHMRQARzEcAEcxJABHMSwARzEwAEcxPABHMaAARzI0AEcyPABHMkQARzJMAEcyVABHMlwARzJkAEcybABHMnQARzJ8AEczEABHMxwARzMoAEczNABHM0AARzNMAEczWABHM2QARzNwAEczfABHM4QARzVwAEc1eABHNYQARzWMAEc1mABHNZwARzWgAEc1pABHNagARzWwAEc1uABHNbwARzXAAEc1yABHNcwARzYQAEc2FABHNhwARzgIAEc4EABHOBgARzggAEc4LABHODAARzg0AEc4OABHODwARzhEAEc4TABHOFAARzhUAEc4XABHOGAARzpMAEc6VABHOmAARzpoAEc6dABHOngARzp8AEc6gABHOoQARzqMAEc6lABHOpgARzqcAEc6pABHOqgARzrsAEc68ABHOvgARzzkAEc87ABHPPQARzz8AEc9CABHPQwARz0QAEc9FABHPRgARz0gAEc9KABHPSwARz0wAEc9OABHPTwARz8oAEc/MABHPzwARz9EAEc/UABHP1QARz9YAEc/XABHP2AARz9oAEc/cABHP3QARz94AEc/gABHP4QARz/IAEc/zABHP9QAR0HAAEdByABHQdAAR0HYAEdB5ABHQegAR0HsAEdB8ABHQfQAR0H8AEdCBABHQggAR0IMAEdCFABHQhgAR0QEAEdEDABHRBgAR0QgAEdELABHRDAAR0Q0AEdEOABHRDwAR0REAEdETABHRFAAR0RUAEdEXABHRGAAR0TEAEdEyABHRMwAR0TUAEdGwABHRsgAR0bQAEdG2ABHRuQAR0boAEdG7ABHRvAAR0b0AEdG/ABHRwQAR0cIAEdHDABHRxQAR0cYAEdJBABHSQwAR0kYAEdJIABHSSwAR0kwAEdJNABHSTgAR0k8AEdJRABHSUwAR0lQAEdJVABHSVwAR0lgAEdJtABHShgAR0psAEdKeABHSoQAR0qQAEdKnABHSqgAR0r8AEdLCABHSxQAR0sgAEdLLABHSzgAR0tAAEdLlABHS8QAR0wcAEdMaABHTMwAR08YAEdPpABHUCQAR1CkAEdQrABHULQAR1C8AEdQxABHUNAAR1DUAEdQ2ABHUOQAR1DoAEdQ8ABHUPQAR1D8AEdRCABHUQwAR1EQAEdRHABHUSAAR1E0AEdRmABHUbwAR1HEAEdRzABHUfAAR1H8AEdSCABHUhAAR1M0AEdTxABHVGAAR1TwAEdU/ABHVQQAR1UMAEdVFABHVRwAR1UkAEdVKABHVTQAR1WYAEdWHABHViQAR1YsAEdWNABHVjwAR1ZEAEdWTABHVlQAR1ZcAEdW4ABHVuwAR1b4AEdXBABHVxAAR1ccAEdXKABHVzQAR1dAAEdXSABHWTQAR1k8AEdZRABHWUwAR1lYAEdZXABHWWAAR1lkAEdZaABHWXAAR1l4AEdZfABHWYAAR1mIAEdZjABHW3gAR1uAAEdbiABHW5AAR1ucAEdboABHW6QAR1uoAEdbrABHW7QAR1u8AEdbwABHW8QAR1vMAEdb0ABHXbwAR13EAEdd0ABHXdgAR13kAEdd6ABHXewAR13wAEdd9ABHXfwAR14EAEdeCABHXgwAR14UAEdeGABHXnwAR16AAEdehABHXowAR2B4AEdggABHYIgAR2CQAEdgnABHYKAAR2CkAEdgqABHYKwAR2C0AEdgvABHYMAAR2DEAEdgzABHYNAAR2K8AEdixABHYswAR2LUAEdi4ABHYuQAR2LoAEdi7ABHYvAAR2L4AEdjAABHYwQAR2MIAEdjEABHYxQAR2UAAEdlCABHZRAAR2UYAEdlJABHZSgAR2UsAEdlMABHZTQAR2U8AEdlRABHZUgAR2VMAEdlVABHZVgAR2dEAEdnTABHZ1gAR2dgAEdnbABHZ3AAR2d0AEdneABHZ3wAR2eEAEdnjABHZ5AAR2eUAEdnnABHZ6AAR2foAEdp1ABHadwAR2nkAEdp7ABHafgAR2n8AEdqAABHagQAR2oIAEdqEABHahgAR2ocAEdqIABHaigAR2osAEdrUABHa+AAR2x8AEdtDABHbRgAR20gAEdtKABHbTAAR204AEdtQABHbUQAR21QAEdttABHbigAR24wAEduOABHbkAAR25IAEduUABHblgAR25gAEdu1ABHbuAAR27sAEdu+ABHbwQAR28QAEdvHABHbygAR28wAEdxHABHcSQAR3EsAEdxNABHcUAAR3FEAEdxSABHcUwAR3FQAEdxWABHcWAAR3FkAEdxaABHcXAAR3F0AEdzYABHc2gAR3NwAEdzeABHc4QAR3OIAEdzjABHc5AAR3OUAEdznABHc6QAR3OoAEdzrABHc7QAR3O4AEd1pABHdawAR3W0AEd1vABHdcgAR3XMAEd10ABHddQAR3XYAEd14ABHdegAR3XsAEd18ABHdfgAR3X8AEd36ABHd/AAR3f8AEd4BABHeBAAR3gUAEd4GABHeBwAR3ggAEd4KABHeDAAR3g0AEd4OABHeEAAR3hEAEd6MABHejgAR3pAAEd6SABHelQAR3pYAEd6XABHemAAR3pkAEd6bABHenQAR3p4AEd6fABHeoQAR3qIAEd8dABHfHwAR3yEAEd8jABHfJgAR3ycAEd8oABHfKQAR3yoAEd8sABHfLgAR3y8AEd8wABHfMgAR3zMAEd+uABHfsAAR37IAEd+0ABHftwAR37gAEd+5ABHfugAR37sAEd+9ABHfvwAR38AAEd/BABHfwwAR38QAEeBXABHgegAR4JoAEeC6ABHgvAAR4L4AEeDAABHgwgAR4MUAEeDGABHgxwAR4MoAEeDLABHgzQAR4M4AEeDQABHg0wAR4NQAEeDVABHg2AAR4NkAEeDiABHg+wAR4QQAEeEGABHhCAAR4REAEeEUABHhFwAR4RkAEeFiABHhhgAR4a0AEeHRABHh1AAR4dYAEeHYABHh2gAR4dwAEeHeABHh3wAR4eIAEeH7ABHiHAAR4h4AEeIgABHiIgAR4iQAEeImABHiKAAR4ioAEeIsABHiTQAR4lAAEeJTABHiVgAR4lkAEeJcABHiXwAR4mIAEeJlABHiZwAR4uIAEeLkABHi5gAR4ugAEeLrABHi7AAR4u0AEeLuABHi7wAR4vEAEeLzABHi9AAR4vUAEeL3ABHi+AAR43MAEeN1ABHjdwAR43kAEeN8ABHjfQAR434AEeN/ABHjgAAR44IAEeOEABHjhQAR44YAEeOIABHjiQAR5AQAEeQGABHkCQAR5AsAEeQOABHkDwAR5BAAEeQRABHkEgAR5BQAEeQWABHkFwAR5BgAEeQaABHkGwAR5DQAEeQ1ABHkNgAR5DgAEeSzABHktQAR5LcAEeS5ABHkvAAR5L0AEeS+ABHkvwAR5MAAEeTCABHkxAAR5MUAEeTGABHkyAAR5MkAEeVEABHlRgAR5UgAEeVKABHlTQAR5U4AEeVPABHlUAAR5VEAEeVTABHlVQAR5VYAEeVXABHlWQAR5VoAEeXVABHl1wAR5dkAEeXbABHl3gAR5d8AEeXgABHl4QAR5eIAEeXkABHl5gAR5ecAEeXoABHl6gAR5esAEeZmABHmaAAR5moAEeZsABHmbwAR5nAAEeZxABHmcgAR5nMAEeZ1ABHmdwAR5ngAEeZ5ABHmewAR5nwAEeb3ABHm+QAR5vsAEeb9ABHnAAAR5wEAEecCABHnAwAR5wQAEecGABHnCAAR5wkAEecKABHnDAAR5w0AEedWABHnegAR56EAEefFABHnyAAR58oAEefMABHnzgAR59AAEefSABHn0wAR59YAEefvABHoDAAR6A4AEegQABHoEgAR6BQAEegWABHoGAAR6BoAEeg3ABHoOgAR6D0AEehAABHoQwAR6EYAEehJABHoTAAR6E4AEejJABHoywAR6M4AEejQABHo0wAR6NQAEejVABHo1gAR6NcAEejZABHo2wAR6NwAEejdABHo3wAR6OAAEelbABHpXQAR6V8AEelhABHpZAAR6WUAEelmABHpZwAR6WgAEelqABHpbAAR6W0AEeluABHpcAAR6XEAEensABHp7gAR6fAAEenyABHp9QAR6fYAEen3ABHp+AAR6fkAEen7ABHp/QAR6f4AEen/ABHqAQAR6gIAEep9ABHqfwAR6oIAEeqEABHqhwAR6ogAEeqJABHqigAR6osAEeqNABHqjwAR6pAAEeqRABHqkwAR6pQAEesPABHrEQAR6xMAEesVABHrGAAR6xkAEesaABHrGwAR6xwAEeseABHrIAAR6yEAEesiABHrJAAR6yUAEeugABHrogAR66QAEeumABHrqQAR66oAEeurABHrrAAR660AEeuvABHrsQAR67IAEeuzABHrtQAR67YAEewxABHsMwAR7DUAEew3ABHsOgAR7DsAEew8ABHsPQAR7D4AEexAABHsQgAR7EMAEexEABHsRgAR7EcAEezaABHs/QAR7R0AEe09ABHtPwAR7UEAEe1DABHtRQAR7UgAEe1JABHtSgAR7U0AEe1OABHtUAAR7VEAEe1TABHtVgAR7VcAEe1YABHtWwAR7VwAEe1hABHtegAR7YMAEe2FABHthwAR7ZAAEe2TABHtlgAR7ZgAEe3hABHuBQAR7iwAEe5QABHuUwAR7lUAEe5XABHuWQAR7lsAEe5dABHuXgAR7mEAEe56ABHumwAR7p0AEe6fABHuoQAR7qMAEe6lABHupwAR7qkAEe6rABHuzAAR7s8AEe7SABHu1QAR7tgAEe7bABHu3gAR7uEAEe7kABHu5gAR72EAEe9jABHvZQAR72cAEe9qABHvawAR72wAEe9tABHvbgAR73AAEe9yABHvcwAR73QAEe92ABHvdwAR7/IAEe/0ABHv9gAR7/gAEe/7ABHv/AAR7/0AEe/+ABHv/wAR8AEAEfADABHwBAAR8AUAEfAHABHwCAAR8IMAEfCFABHwiAAR8IoAEfCNABHwjgAR8I8AEfCQABHwkQAR8JMAEfCVABHwlgAR8JcAEfCZABHwmgAR8LMAEfC0ABHwtQAR8LcAEfEyABHxNAAR8TYAEfE4ABHxOwAR8TwAEfE9ABHxPgAR8T8AEfFBABHxQwAR8UQAEfFFABHxRwAR8UgAEfHDABHxxQAR8ccAEfHJABHxzAAR8c0AEfHOABHxzwAR8dAAEfHSABHx1AAR8dUAEfHWABHx2AAR8dkAEfJUABHyVgAR8lgAEfJaABHyXQAR8l4AEfJfABHyYAAR8mEAEfJjABHyZQAR8mYAEfJnABHyaQAR8moAEfLlABHy5wAR8uoAEfLsABHy7wAR8vAAEfLxABHy8gAR8vMAEfL1ABHy9wAR8vgAEfL5ABHy+wAR8vwAEfMPABHzigAR84wAEfOOABHzkAAR85MAEfOUABHzlQAR85YAEfOXABHzmQAR85sAEfOcABHznQAR858AEfOgABHz6QAR9A0AEfQ0ABH0WAAR9FsAEfRdABH0XwAR9GEAEfRjABH0ZQAR9GYAEfRpABH0ggAR9J8AEfShABH0owAR9KUAEfSnABH0qQAR9KsAEfStABH0ygAR9M0AEfTQABH00wAR9NYAEfTZABH03AAR9N8AEfThABH1XAAR9V4AEfVgABH1YgAR9WUAEfVmABH1ZwAR9WgAEfVpABH1awAR9W0AEfVuABH1bwAR9XEAEfVyABH17QAR9e8AEfXxABH18wAR9fYAEfX3ABH1+AAR9fkAEfX6ABH1/AAR9f4AEfX/ABH2AAAR9gIAEfYDABH2fgAR9oAAEfaCABH2hAAR9ocAEfaIABH2iQAR9ooAEfaLABH2jQAR9o8AEfaQABH2kQAR9pMAEfaUABH3DwAR9xEAEfcUABH3FgAR9xkAEfcaABH3GwAR9xwAEfcdABH3HwAR9yEAEfciABH3IwAR9yUAEfcmABH3oQAR96MAEfelABH3pwAR96oAEferABH3rAAR960AEfeuABH3sAAR97IAEfezABH3tAAR97YAEfe3ABH4MgAR+DQAEfg2ABH4OAAR+DsAEfg8ABH4PQAR+D4AEfg/ABH4QQAR+EMAEfhEABH4RQAR+EcAEfhIABH4wwAR+MUAEfjHABH4yQAR+MwAEfjNABH4zgAR+M8AEfjQABH40gAR+NQAEfjVABH41gAR+NgAEfjZABH5bAAR+Y8AEfmvABH5zwAR+dEAEfnTABH51QAR+dcAEfnaABH52wAR+dwAEfnfABH54AAR+eIAEfnjABH55QAR+egAEfnpABH56gAR+e0AEfnuABH58wAR+gwAEfoVABH6FwAR+hkAEfoiABH6JQAR+igAEfoqABH6cwAR+pcAEfq+ABH64gAR+uUAEfrnABH66QAR+usAEfrtABH67wAR+vAAEfrzABH7DAAR+y0AEfsvABH7MQAR+zMAEfs1ABH7NwAR+zkAEfs7ABH7PQAR+14AEfthABH7ZAAR+2cAEftqABH7bQAR+3AAEftzABH7dgAR+3gAEfvzABH79QAR+/cAEfv5ABH7/AAR+/0AEfv+ABH7/wAR/AAAEfwCABH8BAAR/AUAEfwGABH8CAAR/AkAEfyEABH8hgAR/IgAEfyKABH8jQAR/I4AEfyPABH8kAAR/JEAEfyTABH8lQAR/JYAEfyXABH8mQAR/JoAEf0VABH9FwAR/RoAEf0cABH9HwAR/SAAEf0hABH9IgAR/SMAEf0lABH9JwAR/SgAEf0pABH9KwAR/SwAEf1FABH9RgAR/UcAEf1JABH9xAAR/cYAEf3IABH9ygAR/c0AEf3OABH9zwAR/dAAEf3RABH90wAR/dUAEf3WABH91wAR/dkAEf3aABH+VQAR/lcAEf5ZABH+WwAR/l4AEf5fABH+YAAR/mEAEf5iABH+ZAAR/mYAEf5nABH+aAAR/moAEf5rABH+5gAR/ugAEf7qABH+7AAR/u8AEf7wABH+8QAR/vIAEf7zABH+9QAR/vcAEf74ABH++QAR/vsAEf78ABH/dwAR/3kAEf97ABH/fQAR/4AAEf+BABH/ggAR/4MAEf+EABH/hgAR/4gAEf+JABH/igAR/4wAEf+NABIACAASAAoAEgAMABIADgASABEAEgASABIAEwASABQAEgAVABIAFwASABkAEgAaABIAGwASAB0AEgAeABIAZwASAIsAEgCyABIA1gASANkAEgDbABIA3QASAN8AEgDhABIA4wASAOQAEgDnABIBAAASAR0AEgEfABIBIQASASMAEgElABIBJwASASkAEgErABIBSAASAUsAEgFOABIBUQASAVQAEgFXABIBWgASAV0AEgFfABIB2gASAdwAEgHeABIB4AASAeMAEgHkABIB5QASAeYAEgHnABIB6QASAesAEgHsABIB7QASAe8AEgHwABICawASAm0AEgJvABICcQASAnQAEgJ1ABICdgASAncAEgJ4ABICegASAnwAEgJ9ABICfgASAoAAEgKBABIC/AASAv4AEgMAABIDAgASAwUAEgMGABIDBwASAwgAEgMJABIDCwASAw0AEgMOABIDDwASAxEAEgMSABIDjQASA48AEgOSABIDlAASA5cAEgOYABIDmQASA5oAEgObABIDnQASA58AEgOgABIDoQASA6MAEgOkABIEHwASBCEAEgQjABIEJQASBCgAEgQpABIEKgASBCsAEgQsABIELgASBDAAEgQxABIEMgASBDQAEgQ1ABIEsAASBLIAEgS1ABIEtwASBLoAEgS7ABIEvAASBL0AEgS+ABIEwAASBMIAEgTDABIExAASBMYAEgTHABIE5gASBWEAEgVjABIFZQASBWcAEgVqABIFawASBWwAEgVtABIFbgASBXAAEgVyABIFcwASBXQAEgV2ABIFdwASBgoAEgYtABIGTQASBm0AEgZvABIGcQASBnMAEgZ1ABIGeAASBnkAEgZ6ABIGfQASBn4AEgaAABIGgQASBoMAEgaGABIGhwASBogAEgaLABIGjAASBpEAEgaqABIGswASBrUAEga3ABIGwAASBsMAEgbGABIGyAASBxEAEgc1ABIHXAASB4AAEgeDABIHhQASB4cAEgeJABIHiwASB40AEgeOABIHkQASB6oAEgfLABIHzQASB88AEgfRABIH0wASB9UAEgfXABIH2QASB9sAEgf8ABIH/wASCAIAEggFABIICAASCAsAEggOABIIEQASCBQAEggWABIIkQASCJMAEgiVABIIlwASCJoAEgibABIInAASCJ0AEgieABIIoAASCKIAEgijABIIpAASCKYAEginABIJIgASCSQAEgkmABIJKAASCSsAEgksABIJLQASCS4AEgkvABIJMQASCTMAEgk0ABIJNQASCTcAEgk4ABIJswASCbUAEgm4ABIJugASCb0AEgm+ABIJvwASCcAAEgnBABIJwwASCcUAEgnGABIJxwASCckAEgnKABIJ4wASCeQAEgnlABIJ5wASCmIAEgpkABIKZgASCmgAEgprABIKbAASCm0AEgpuABIKbwASCnEAEgpzABIKdAASCnUAEgp3ABIKeAASCvMAEgr1ABIK9wASCvkAEgr8ABIK/QASCv4AEgr/ABILAAASCwIAEgsEABILBQASCwYAEgsIABILCQASC4QAEguGABILiAASC4oAEguNABILjgASC48AEguQABILkQASC5MAEguVABILlgASC5cAEguZABILmgASDBUAEgwXABIMGgASDBwAEgwfABIMIAASDCEAEgwiABIMIwASDCUAEgwnABIMKAASDCkAEgwrABIMLAASDEIAEgy9ABIMvwASDMEAEgzDABIMxgASDMcAEgzIABIMyQASDMoAEgzMABIMzgASDM8AEgzQABIM0gASDNMAEg0cABINQAASDWcAEg2LABINjgASDZAAEg2SABINlAASDZYAEg2YABINmQASDZwAEg21ABIN0gASDdQAEg3WABIN2AASDdoAEg3cABIN3gASDeAAEg39ABIOAAASDgMAEg4GABIOCQASDgwAEg4PABIOEgASDhQAEg6PABIOkQASDpMAEg6VABIOmAASDpkAEg6aABIOmwASDpwAEg6eABIOoAASDqEAEg6iABIOpAASDqUAEg8gABIPIgASDyQAEg8mABIPKQASDyoAEg8rABIPLAASDy0AEg8vABIPMQASDzIAEg8zABIPNQASDzYAEg+xABIPswASD7UAEg+3ABIPugASD7sAEg+8ABIPvQASD74AEg/AABIPwgASD8MAEg/EABIPxgASD8cAEhBCABIQRAASEEcAEhBJABIQTAASEE0AEhBOABIQTwASEFAAEhBSABIQVAASEFUAEhBWABIQWAASEFkAEhDUABIQ1gASENgAEhDaABIQ3QASEN4AEhDfABIQ4AASEOEAEhDjABIQ5QASEOYAEhDnABIQ6QASEOoAEhFlABIRZwASEWkAEhFrABIRbgASEW8AEhFwABIRcQASEXIAEhF0ABIRdgASEXcAEhF4ABIRegASEXsAEhH2ABIR+AASEfoAEhH8ABIR/wASEgAAEhIBABISAgASEgMAEhIFABISBwASEggAEhIJABISCwASEgwAEhIdABISHgASEiAAEhKjABISxwASEusAEhMOABITNQASE1UAEhN8ABITowASE8MAEhPnABIUCwASFA0AEhQQABIUEgASFBQAEhQWABIUGQASFBwAEhQeABIUIAASFCMAEhQlABIUJwASFCoAEhQtABIULgASFDMAEhRMABIUUQASFFMAEhRYABIUWwASFF0AEhSmABIUygASFPEAEhUVABIVGAASFRoAEhUcABIVHgASFSAAEhUiABIVIwASFSYAEhU/ABIVZAASFWYAEhVoABIVagASFWwAEhVuABIVcAASFXIAEhV0ABIVdgASFZsAEhWeABIVoQASFaQAEhWnABIVqgASFa0AEhWwABIVswASFbYAEhW4ABIWMwASFjUAEhY4ABIWOgASFj0AEhY+ABIWPwASFkAAEhZBABIWQwASFkUAEhZGABIWRwASFkkAEhZKABIWWwASFlwAEhZeABIW2QASFtsAEhbdABIW3wASFuIAEhbjABIW5AASFuUAEhbmABIW6AASFuoAEhbrABIW7AASFu4AEhbvABIXagASF2wAEhdvABIXcQASF3QAEhd1ABIXdgASF3cAEhd4ABIXegASF3wAEhd9ABIXfgASF4AAEheBABIXkgASF5cAEheaABIXnAASF60AEheyABIXtQASF7cAEhgyABIYNAASGDYAEhg4ABIYOwASGDwAEhg9ABIYPgASGD8AEhhBABIYQwASGEQAEhhFABIYRwASGEgAEhjDABIYxQASGMgAEhjKABIYzQASGM4AEhjPABIY0AASGNEAEhjTABIY1QASGNYAEhjXABIY2QASGNoAEhjrABIY7AASGO4AEhlpABIZawASGW0AEhlvABIZcgASGXMAEhl0ABIZdQASGXYAEhl4ABIZegASGXsAEhl8ABIZfgASGX8AEhn6ABIZ/AASGf8AEhoBABIaBAASGgUAEhoGABIaBwASGggAEhoKABIaDAASGg0AEhoOABIaEAASGhEAEhoqABIaKwASGiwAEhouABIaqQASGqsAEhqtABIarwASGrIAEhqzABIatAASGrUAEhq2ABIauAASGroAEhq7ABIavAASGr4AEhq/ABIbOgASGzwAEhs/ABIbQQASG0QAEhtFABIbRgASG0cAEhtIABIbSgASG0wAEhtNABIbTgASG1AAEhtRABIbYwASG3wAEhuJABIbjAASG48AEhuSABIbnwASG6IAEhulABIbqAASG6oAEhu+ABIbzAASHF8AEhyCABIcogASHMIAEhzEABIcxgASHMgAEhzKABIczQASHM4AEhzPABIc0gASHNMAEhzVABIc1gASHNgAEhzbABIc3AASHN0AEhzgABIc4QASHOYAEhz/ABIdCAASHQoAEh0MABIdFQASHRgAEh0bABIdHQASHWYAEh2KABIdsQASHdUAEh3YABId2gASHdwAEh3eABId4AASHeIAEh3jABId5gASHf8AEh4gABIeIgASHiQAEh4mABIeKAASHioAEh4sABIeLgASHjAAEh5RABIeVAASHlcAEh5aABIeXQASHmAAEh5jABIeZgASHmkAEh5rABIe5gASHugAEh7qABIe7AASHu8AEh7wABIe8QASHvIAEh7zABIe9QASHvcAEh74ABIe+QASHvsAEh78ABIfdwASH3kAEh97ABIffQASH4AAEh+BABIfggASH4MAEh+EABIfhgASH4gAEh+JABIfigASH4wAEh+NABIgCAASIAoAEiANABIgDwASIBIAEiATABIgFAASIBUAEiAWABIgGAASIBoAEiAbABIgHAASIB4AEiAfABIgOAASIDkAEiA6ABIgPAASILcAEiC5ABIguwASIL0AEiDAABIgwQASIMIAEiDDABIgxAASIMYAEiDIABIgyQASIMoAEiDMABIgzQASIUgAEiFKABIhTAASIU4AEiFRABIhUgASIVMAEiFUABIhVQASIVcAEiFZABIhWgASIVsAEiFdABIhXgASIdkAEiHbABIh3QASId8AEiHiABIh4wASIeQAEiHlABIh5gASIegAEiHqABIh6wASIewAEiHuABIh7wASImoAEiJsABIibgASInAAEiJzABIidAASInUAEiJ2ABIidwASInkAEiJ7ABIifAASIn0AEiJ/ABIigAASIvsAEiL9ABIi/wASIwEAEiMEABIjBQASIwYAEiMHABIjCAASIwoAEiMMABIjDQASIw4AEiMQABIjEQASI1oAEiN+ABIjpQASI8kAEiPMABIjzgASI9AAEiPSABIj1AASI9YAEiPXABIj2gASI/MAEiQQABIkEgASJBQAEiQWABIkGAASJBoAEiQcABIkHgASJDsAEiQ+ABIkQQASJEQAEiRHABIkSgASJE0AEiRQABIkUgASJM0AEiTPABIk0QASJNMAEiTWABIk1wASJNgAEiTZABIk2gASJNwAEiTeABIk3wASJOAAEiTiABIk4wASJV4AEiVgABIlYgASJWQAEiVnABIlaAASJWkAEiVqABIlawASJW0AEiVvABIlcAASJXEAEiVzABIldAASJe8AEiXxABIl8wASJfUAEiX4ABIl+QASJfoAEiX7ABIl/AASJf4AEiYAABImAQASJgIAEiYEABImBQASJoAAEiaCABImhQASJocAEiaKABImiwASJowAEiaNABImjgASJpAAEiaSABImkwASJpQAEiaWABImlwASJxIAEicUABInFgASJxgAEicbABInHAASJx0AEiceABInHwASJyEAEicjABInJAASJyUAEicnABInKAASJ6MAEielABInpwASJ6kAEiesABInrQASJ64AEievABInsAASJ7IAEie0ABIntQASJ7YAEie4ABInuQASKDQAEig2ABIoOAASKDoAEig9ABIoPgASKD8AEihAABIoQQASKEMAEihFABIoRgASKEcAEihJABIoSgASKN0AEikAABIpIAASKUAAEilCABIpRAASKUYAEilIABIpSwASKUwAEilNABIpUAASKVEAEilTABIpVAASKVYAEilZABIpWgASKVsAEileABIpXwASKWQAEil9ABIphgASKYgAEimKABIpkwASKZYAEimZABIpmwASKeQAEioIABIqLwASKlMAEipWABIqWAASKloAEipcABIqXgASKmAAEiphABIqZAASKn0AEiqeABIqoAASKqIAEiqkABIqpgASKqgAEiqqABIqrAASKq4AEirPABIq0gASKtUAEirYABIq2wASKt4AEirhABIq5AASKucAEirpABIrZAASK2YAEitoABIragASK20AEituABIrbwASK3AAEitxABIrcwASK3UAEit2ABIrdwASK3kAEit6ABIr9QASK/cAEiv5ABIr+wASK/4AEiv/ABIsAAASLAEAEiwCABIsBAASLAYAEiwHABIsCAASLAoAEiwLABIshgASLIgAEiyLABIsjQASLJAAEiyRABIskgASLJMAEiyUABIslgASLJgAEiyZABIsmgASLJwAEiydABIstgASLLcAEiy4ABIsugASLTUAEi03ABItOQASLTsAEi0+ABItPwASLUAAEi1BABItQgASLUQAEi1GABItRwASLUgAEi1KABItSwASLcYAEi3IABItygASLcwAEi3PABIt0AASLdEAEi3SABIt0wASLdUAEi3XABIt2AASLdkAEi3bABIt3AASLlcAEi5ZABIuWwASLl0AEi5gABIuYQASLmIAEi5jABIuZAASLmYAEi5oABIuaQASLmoAEi5sABIubQASLugAEi7qABIu7AASLu4AEi7xABIu8gASLvMAEi70ABIu9QASLvcAEi75ABIu+gASLvsAEi79ABIu/gASL3kAEi97ABIvfQASL38AEi+CABIvgwASL4QAEi+FABIvhgASL4gAEi+KABIviwASL4wAEi+OABIvjwASL9gAEi/8ABIwIwASMEcAEjBKABIwTAASME4AEjBQABIwUgASMFQAEjBVABIwWAASMHEAEjCOABIwkAASMJIAEjCUABIwlgASMJgAEjCaABIwnAASMLkAEjC8ABIwvwASMMIAEjDFABIwyAASMMsAEjDOABIw0AASMUsAEjFNABIxTwASMVEAEjFUABIxVQASMVYAEjFXABIxWAASMVoAEjFcABIxXQASMV4AEjFgABIxYQASMdwAEjHeABIx4AASMeIAEjHlABIx5gASMecAEjHoABIx6QASMesAEjHtABIx7gASMe8AEjHxABIx8gASMm0AEjJvABIycQASMnMAEjJ2ABIydwASMngAEjJ5ABIyegASMnwAEjJ+ABIyfwASMoAAEjKCABIygwASMv4AEjMAABIzAwASMwUAEjMIABIzCQASMwoAEjMLABIzDAASMw4AEjMQABIzEQASMxIAEjMUABIzFQASM5AAEjOSABIzlAASM5YAEjOZABIzmgASM5sAEjOcABIznQASM58AEjOhABIzogASM6MAEjOlABIzpgASNCEAEjQjABI0JQASNCcAEjQqABI0KwASNCwAEjQtABI0LgASNDAAEjQyABI0MwASNDQAEjQ2ABI0NwASNLIAEjS0ABI0tgASNLgAEjS7ABI0vAASNL0AEjS+ABI0vwASNMEAEjTDABI0xAASNMUAEjTHABI0yAASNVsAEjV+ABI1ngASNb4AEjXAABI1wgASNcQAEjXGABI1yQASNcoAEjXLABI1zgASNc8AEjXRABI10gASNdQAEjXXABI12AASNdkAEjXcABI13QASNeIAEjX7ABI2BAASNgYAEjYIABI2EQASNhQAEjYXABI2GQASNmIAEjaGABI2rQASNtEAEjbUABI21gASNtgAEjbaABI23AASNt4AEjbfABI24gASNvsAEjccABI3HgASNyAAEjciABI3JAASNyYAEjcoABI3KgASNywAEjdNABI3UAASN1MAEjdWABI3WQASN1wAEjdfABI3YgASN2UAEjdnABI34gASN+QAEjfmABI36AASN+sAEjfsABI37QASN+4AEjfvABI38QASN/MAEjf0ABI39QASN/cAEjf4ABI4cwASOHUAEjh3ABI4eQASOHwAEjh9ABI4fgASOH8AEjiAABI4ggASOIQAEjiFABI4hgASOIgAEjiJABI5BAASOQYAEjkJABI5CwASOQ4AEjkPABI5EAASOREAEjkSABI5FAASORYAEjkXABI5GAASORoAEjkbABI5NAASOTUAEjk2ABI5OAASObMAEjm1ABI5twASObkAEjm8ABI5vQASOb4AEjm/ABI5wAASOcIAEjnEABI5xQASOcYAEjnIABI5yQASOkQAEjpGABI6SAASOkoAEjpNABI6TgASOk8AEjpQABI6UQASOlMAEjpVABI6VgASOlcAEjpZABI6WgASOtUAEjrXABI62QASOtsAEjreABI63wASOuAAEjrhABI64gASOuQAEjrmABI65wASOugAEjrqABI66wASO2YAEjtoABI7agASO2wAEjtvABI7cAASO3EAEjtyABI7cwASO3UAEjt3ABI7eAASO3kAEjt7ABI7fAASO/cAEjv5ABI7+wASO/0AEjwAABI8AQASPAIAEjwDABI8BAASPAYAEjwIABI8CQASPAoAEjwMABI8DQASPFYAEjx6ABI8oQASPMUAEjzIABI8ygASPMwAEjzOABI80AASPNIAEjzTABI81gASPO8AEj0MABI9DgASPRAAEj0SABI9FAASPRYAEj0YABI9GgASPTcAEj06ABI9PQASPUAAEj1DABI9RgASPUkAEj1MABI9TgASPckAEj3LABI9zQASPc8AEj3SABI90wASPdQAEj3VABI91gASPdgAEj3aABI92wASPdwAEj3eABI93wASPloAEj5cABI+XgASPmAAEj5jABI+ZAASPmUAEj5mABI+ZwASPmkAEj5rABI+bAASPm0AEj5vABI+cAASPusAEj7tABI+7wASPvEAEj70ABI+9QASPvYAEj73ABI++AASPvoAEj78ABI+/QASPv4AEj8AABI/AQASP3wAEj9+ABI/gQASP4MAEj+GABI/hwASP4gAEj+JABI/igASP4wAEj+OABI/jwASP5AAEj+SABI/kwASQA4AEkAQABJAEgASQBQAEkAXABJAGAASQBkAEkAaABJAGwASQB0AEkAfABJAIAASQCEAEkAjABJAJAASQJ8AEkChABJAowASQKUAEkCoABJAqQASQKoAEkCrABJArAASQK4AEkCwABJAsQASQLIAEkC0ABJAtQASQTAAEkEyABJBNAASQTYAEkE5ABJBOgASQTsAEkE8ABJBPQASQT8AEkFBABJBQgASQUMAEkFFABJBRgASQVcAEkFYABJBWgASQd0AEkIBABJCJQASQkgAEkJvABJCjwASQrYAEkLdABJC/QASQyEAEkNFABJDRwASQ0oAEkNMABJDTgASQ1AAEkNTABJDVgASQ1gAEkNaABJDXQASQ18AEkNhABJDZAASQ2cAEkNoABJDbQASQ4YAEkOLABJDjQASQ5IAEkOVABJDlwASQ+AAEkQEABJEKwASRE8AEkRSABJEVAASRFYAEkRYABJEWgASRFwAEkRdABJEYAASRHkAEkSeABJEoAASRKIAEkSkABJEpgASRKgAEkSqABJErAASRK4AEkSwABJE1QASRNgAEkTbABJE3gASROEAEkTkABJE5wASROoAEkTtABJE8AASRPIAEkVtABJFbwASRXIAEkV0ABJFdwASRXgAEkV5ABJFegASRXsAEkV9ABJFfwASRYAAEkWBABJFgwASRYQAEkWVABJFlgASRZgAEkYTABJGFQASRhcAEkYZABJGHAASRh0AEkYeABJGHwASRiAAEkYiABJGJAASRiUAEkYmABJGKAASRikAEkakABJGpgASRqkAEkarABJGrgASRq8AEkawABJGsQASRrIAEka0ABJGtgASRrcAEka4ABJGugASRrsAEkbMABJG0QASRtQAEkbWABJG5wASRuwAEkbvABJG8QASRvYAEkdxABJHcwASR3UAEkd3ABJHegASR3sAEkd8ABJHfQASR34AEkeAABJHggASR4MAEkeEABJHhgASR4cAEkgCABJIBAASSAcAEkgJABJIDAASSA0AEkgOABJIDwASSBAAEkgSABJIFAASSBUAEkgWABJIGAASSBkAEkgqABJIKwASSC0AEkioABJIqgASSKwAEkiuABJIsQASSLIAEkizABJItAASSLUAEki3ABJIuQASSLoAEki7ABJIvQASSL4AEkk5ABJJOwASST4AEklAABJJQwASSUQAEklFABJJRgASSUcAEklJABJJSwASSUwAEklNABJJTwASSVAAEklpABJJagASSWsAEkltABJJ6AASSeoAEknsABJJ7gASSfEAEknyABJJ8wASSfQAEkn1ABJJ9wASSfkAEkn6ABJJ+wASSf0AEkn+ABJKeQASSnsAEkp+ABJKgAASSoMAEkqEABJKhQASSoYAEkqHABJKiQASSosAEkqMABJKjQASSo8AEkqQABJKqAASSsEAEkrKABJKzQASStAAEkrZABJK3AASSt8AEkrhABJK9AASS4cAEkuqABJLygASS+oAEkvsABJL7gASS/AAEkvyABJL9QASS/YAEkv3ABJL+gASS/sAEkv9ABJL/gASTAAAEkwDABJMBAASTAUAEkwIABJMCQASTA4AEkwnABJMMAASTDIAEkw0ABJMPQASTEAAEkxDABJMRQASTI4AEkyyABJM2QASTP0AEk0AABJNAgASTQQAEk0GABJNCAASTQoAEk0LABJNDgASTScAEk1IABJNSgASTUwAEk1OABJNUAASTVIAEk1UABJNVgASTVgAEk15ABJNfAASTX8AEk2CABJNhQASTYgAEk2LABJNjgASTZEAEk2TABJODgASThAAEk4SABJOFAASThcAEk4YABJOGQASThoAEk4bABJOHQASTh8AEk4gABJOIQASTiMAEk4kABJOnwASTqEAEk6jABJOpQASTqgAEk6pABJOqgASTqsAEk6sABJOrgASTrAAEk6xABJOsgASTrQAEk61ABJPMAASTzIAEk81ABJPNwASTzoAEk87ABJPPAASTz0AEk8+ABJPQAAST0IAEk9DABJPRAAST0YAEk9HABJPYAAST2EAEk9iABJPZAAST98AEk/hABJP4wAST+UAEk/oABJP6QAST+oAEk/rABJP7AAST+4AEk/wABJP8QAST/IAEk/0ABJP9QASUHAAElByABJQdAASUHYAElB5ABJQegASUHsAElB8ABJQfQASUH8AElCBABJQggASUIMAElCFABJQhgASUQEAElEDABJRBQASUQcAElEKABJRCwASUQwAElENABJRDgASURAAElESABJREwASURQAElEWABJRFwASUZIAElGUABJRlgASUZgAElGbABJRnAASUZ0AElGeABJRnwASUaEAElGjABJRpAASUaUAElGnABJRqAASUiMAElIlABJSJwASUikAElIsABJSLQASUi4AElIvABJSMAASUjIAElI0ABJSNQASUjYAElI4ABJSOQASUoIAElKmABJSzQASUvEAElL0ABJS9gASUvgAElL6ABJS/AASUv4AElL/ABJTAgASUxsAElM4ABJTOgASUzwAElM+ABJTQAASU0IAElNEABJTRgASU2MAElNmABJTaQASU2wAElNvABJTcgASU3UAElN4ABJTegASU/UAElP3ABJT+QASU/sAElP+ABJT/wASVAAAElQBABJUAgASVAQAElQGABJUBwASVAgAElQKABJUCwASVIYAElSIABJUigASVIwAElSPABJUkAASVJEAElSSABJUkwASVJUAElSXABJUmAASVJkAElSbABJUnAASVRcAElUZABJVGwASVR0AElUgABJVIQASVSIAElUjABJVJAASVSYAElUoABJVKQASVSoAElUsABJVLQASVagAElWqABJVrAASVa4AElWxABJVsgASVbMAElW0ABJVtQASVbcAElW5ABJVugASVbsAElW9ABJVvgASVjkAElY7ABJWPQASVj8AElZCABJWQwASVkQAElZFABJWRgASVkgAElZKABJWSwASVkwAElZOABJWTwASVsoAElbMABJWzwASVtEAElbUABJW1QASVtYAElbXABJW2AASVtoAElbcABJW3QASVt4AElbgABJW4QASVvkAEld0ABJXdgASV3gAEld6ABJXfQASV34AEld/ABJXgAASV4EAEleDABJXhQASV4YAEleHABJXiQASV4oAElgdABJYQAASWGAAEliAABJYggASWIQAEliGABJYiAASWIsAEliMABJYjQASWJAAEliRABJYkwASWJQAEliWABJYmQASWJoAElibABJYngASWJ8AElioABJYwQASWMoAEljMABJYzgASWNcAEljaABJY3QASWN8AElkoABJZTAASWXMAElmXABJZmgASWZwAElmeABJZoAASWaIAElmkABJZpQASWagAElnBABJZ4gASWeQAElnmABJZ6AASWeoAElnsABJZ7gASWfAAElnyABJaEwASWhYAEloZABJaHAASWh8AEloiABJaJQASWigAElorABJaLQASWqgAElqqABJarAASWq4AElqxABJasgASWrMAElq0ABJatQASWrcAElq5ABJaugASWrsAElq9ABJavgASWzkAEls7ABJbPQASWz8AEltCABJbQwASW0QAEltFABJbRgASW0gAEltKABJbSwASW0wAEltOABJbTwASW8oAElvMABJbzwASW9EAElvUABJb1QASW9YAElvXABJb2AASW9oAElvcABJb3QASW94AElvgABJb4QASW/oAElv7ABJb/AASW/4AElx5ABJcewASXH0AElx/ABJcggASXIMAElyEABJchQASXIYAElyIABJcigASXIsAElyMABJcjgASXI8AEl0KABJdDAASXQ4AEl0QABJdEwASXRQAEl0VABJdFgASXRcAEl0ZABJdGwASXRwAEl0dABJdHwASXSAAEl2bABJdnQASXZ8AEl2hABJdpAASXaUAEl2mABJdpwASXagAEl2qABJdrAASXa0AEl2uABJdsAASXbEAEl4sABJeLgASXjAAEl4yABJeNQASXjYAEl43ABJeOAASXjkAEl47ABJePQASXj4AEl4/ABJeQQASXkIAEl69ABJevwASXsEAEl7DABJexgASXscAEl7IABJeyQASXsoAEl7MABJezgASXs8AEl7QABJe0gASXtMAEl8cABJfQAASX2cAEl+LABJfjgASX5AAEl+SABJflAASX5YAEl+YABJfmQASX5wAEl+1ABJf0gASX9QAEl/WABJf2AASX9oAEl/cABJf3gASX+AAEl/9ABJgAAASYAMAEmAGABJgCQASYAwAEmAPABJgEgASYBQAEmCPABJgkQASYJMAEmCVABJgmAASYJkAEmCaABJgmwASYJwAEmCeABJgoAASYKEAEmCiABJgpAASYKUAEmEgABJhIgASYSQAEmEmABJhKQASYSoAEmErABJhLAASYS0AEmEvABJhMQASYTIAEmEzABJhNQASYTYAEmGxABJhswASYbUAEmG3ABJhugASYbsAEmG8ABJhvQASYb4AEmHAABJhwgASYcMAEmHEABJhxgASYccAEmJCABJiRAASYkcAEmJJABJiTAASYk0AEmJOABJiTwASYlAAEmJSABJiVAASYlUAEmJWABJiWAASYlkAEmLUABJi1gASYtgAEmLaABJi3QASYt4AEmLfABJi4AASYuEAEmLjABJi5QASYuYAEmLnABJi6QASYuoAEmNlABJjZwASY2kAEmNrABJjbgASY28AEmNwABJjcQASY3IAEmN0ABJjdgASY3cAEmN4ABJjegASY3sAEmP2ABJj+AASY/oAEmP8ABJj/wASZAAAEmQBABJkAgASZAMAEmQFABJkBwASZAgAEmQJABJkCwASZAwAEmQdABJkHgASZCAAEmSjABJkxwASZOsAEmUOABJlNQASZVUAEmV8ABJlowASZcMAEmXnABJmCwASZg0AEmYQABJmEgASZhQAEmYWABJmGQASZhwAEmYeABJmIAASZiMAEmYlABJmJwASZioAEmYtABJmLgASZjMAEmZMABJmUQASZlMAEmZYABJmWwASZl0AEmamABJmygASZvEAEmcVABJnGAASZxoAEmccABJnHgASZyAAEmciABJnIwASZyYAEmc/ABJnZAASZ2YAEmdoABJnagASZ2wAEmduABJncAASZ3IAEmd0ABJndgASZ5sAEmeeABJnoQASZ6QAEmenABJnqgASZ60AEmewABJnswASZ7YAEme4ABJoMwASaDUAEmg4ABJoOgASaD0AEmg+ABJoPwASaEAAEmhBABJoQwASaEUAEmhGABJoRwASaEkAEmhKABJoWwASaFwAEmheABJo2QASaNsAEmjdABJo3wASaOIAEmjjABJo5AASaOUAEmjmABJo6AASaOoAEmjrABJo7AASaO4AEmjvABJpagASaWwAEmlvABJpcQASaXQAEml1ABJpdgASaXcAEml4ABJpegASaXwAEml9ABJpfgASaYAAEmmBABJpkgASaZMAEmmVABJqEAASahIAEmoUABJqFgASahkAEmoaABJqGwASahwAEmodABJqHwASaiEAEmoiABJqIwASaiUAEmomABJqoQASaqMAEmqmABJqqAASaqsAEmqsABJqrQASaq4AEmqvABJqsQASarMAEmq0ABJqtQASarcAEmq4ABJqyQASasoAEmrMABJrRwASa0kAEmtLABJrTQASa1AAEmtRABJrUgASa1MAEmtUABJrVgASa1gAEmtZABJrWgASa1wAEmtdABJr2AASa9oAEmvdABJr3wASa+IAEmvjABJr5AASa+UAEmvmABJr6AASa+oAEmvrABJr7AASa+4AEmvvABJsCAASbAkAEmwKABJsDAASbIcAEmyJABJsiwASbI0AEmyQABJskQASbJIAEmyTABJslAASbJYAEmyYABJsmQASbJoAEmycABJsnQASbRgAEm0aABJtHQASbR8AEm0iABJtIwASbSQAEm0lABJtJgASbSgAEm0qABJtKwASbSwAEm0uABJtLwASbT0AEm1WABJtawASbW4AEm1xABJtdAASbXcAEm16ABJtjwASbZIAEm2VABJtmAASbZsAEm2eABJtoAASbaYAEm25ABJtzQASbd8AEm35ABJujAASbq8AEm7PABJu7wASbvEAEm7zABJu9QASbvcAEm76ABJu+wASbvwAEm7/ABJvAAASbwIAEm8DABJvBQASbwgAEm8JABJvCgASbw0AEm8OABJvEwASbywAEm81ABJvNwASbzkAEm9CABJvRQASb0gAEm9KABJvkwASb7cAEm/eABJwAgAScAUAEnAHABJwCQAScAsAEnANABJwDwAScBAAEnATABJwLAAScE0AEnBPABJwUQAScFMAEnBVABJwVwAScFkAEnBbABJwXQAScH4AEnCBABJwhAAScIcAEnCKABJwjQAScJAAEnCTABJwlgAScJgAEnETABJxFQAScRcAEnEZABJxHAAScR0AEnEeABJxHwAScSAAEnEiABJxJAAScSUAEnEmABJxKAAScSkAEnGkABJxpgAScagAEnGqABJxrQASca4AEnGvABJxsAAScbEAEnGzABJxtQAScbYAEnG3ABJxuQAScboAEnI1ABJyNwAScjoAEnI8ABJyPwASckAAEnJBABJyQgASckMAEnJFABJyRwASckgAEnJJABJySwASckwAEnJlABJyZgAScmcAEnJpABJy5AAScuYAEnLoABJy6gAScu0AEnLuABJy7wAScvAAEnLxABJy8wAScvUAEnL2ABJy9wAScvkAEnL6ABJzdQASc3cAEnN5ABJzewASc34AEnN/ABJzgAASc4EAEnOCABJzhAASc4YAEnOHABJziAASc4oAEnOLABJ0BgASdAgAEnQKABJ0DAASdA8AEnQQABJ0EQASdBIAEnQTABJ0FQASdBcAEnQYABJ0GQASdBsAEnQcABJ0lwASdJkAEnSbABJ0nQASdKAAEnShABJ0ogASdKMAEnSkABJ0pgASdKgAEnSpABJ0qgASdKwAEnStABJ1KAASdSoAEnUsABJ1LgASdTEAEnUyABJ1MwASdTQAEnU1ABJ1NwASdTkAEnU6ABJ1OwASdT0AEnU+ABJ1hwASdasAEnXSABJ19gASdfkAEnX7ABJ1/QASdf8AEnYBABJ2AwASdgQAEnYHABJ2IAASdj0AEnY/ABJ2QQASdkMAEnZFABJ2RwASdkkAEnZLABJ2aAASdmsAEnZuABJ2cQASdnQAEnZ3ABJ2egASdn0AEnZ/ABJ2+gASdvwAEnb+ABJ3AAASdwMAEncEABJ3BQASdwYAEncHABJ3CQASdwsAEncMABJ3DQASdw8AEncQABJ3iwASd40AEnePABJ3kQASd5QAEneVABJ3lgASd5cAEneYABJ3mgASd5wAEnedABJ3ngASd6AAEnehABJ4HAASeB4AEnggABJ4IgASeCUAEngmABJ4JwASeCgAEngpABJ4KwASeC0AEnguABJ4LwASeDEAEngyABJ4rQASeK8AEniyABJ4tAASeLcAEni4ABJ4uQASeLoAEni7ABJ4vQASeL8AEnjAABJ4wQASeMMAEnjEABJ5PwASeUEAEnlDABJ5RQASeUgAEnlJABJ5SgASeUsAEnlMABJ5TgASeVAAEnlRABJ5UgASeVQAEnlVABJ50AASedIAEnnUABJ51gASedkAEnnaABJ52wASedwAEnndABJ53wASeeEAEnniABJ54wASeeUAEnnmABJ6YQASemMAEnplABJ6ZwASemoAEnprABJ6bAASem0AEnpuABJ6cAASenIAEnpzABJ6dAASenYAEnp3ABJ7CgASey0AEntNABJ7bQASe28AEntxABJ7cwASe3UAEnt4ABJ7eQASe3oAEnt9ABJ7fgASe4AAEnuBABJ7gwASe4YAEnuHABJ7iAASe4sAEnuMABJ7kQASe6oAEnuzABJ7tQASe7cAEnvAABJ7wwASe8YAEnvIABJ8EQASfDUAEnxcABJ8gAASfIMAEnyFABJ8hwASfIkAEnyLABJ8jQASfI4AEnyRABJ8qgASfMsAEnzNABJ8zwASfNEAEnzTABJ81QASfNcAEnzZABJ82wASfPwAEnz/ABJ9AgASfQUAEn0IABJ9CwASfQ4AEn0RABJ9FAASfRYAEn2RABJ9kwASfZUAEn2XABJ9mgASfZsAEn2cABJ9nQASfZ4AEn2gABJ9ogASfaMAEn2kABJ9pgASfacAEn4iABJ+JAASfiYAEn4oABJ+KwASfiwAEn4tABJ+LgASfi8AEn4xABJ+MwASfjQAEn41ABJ+NwASfjgAEn6zABJ+tQASfrgAEn66ABJ+vQASfr4AEn6/ABJ+wAASfsEAEn7DABJ+xQASfsYAEn7HABJ+yQASfsoAEn7jABJ+5AASfuUAEn7nABJ/YgASf2QAEn9mABJ/aAASf2sAEn9sABJ/bQASf24AEn9vABJ/cQASf3MAEn90ABJ/dQASf3cAEn94ABJ/8wASf/UAEn/3ABJ/+QASf/wAEn/9ABJ//gASf/8AEoAAABKAAgASgAQAEoAFABKABgASgAgAEoAJABKAhAASgIYAEoCIABKAigASgI0AEoCOABKAjwASgJAAEoCRABKAkwASgJUAEoCWABKAlwASgJkAEoCaABKBFQASgRcAEoEZABKBGwASgR4AEoEfABKBIAASgSEAEoEiABKBJAASgSYAEoEnABKBKAASgSoAEoErABKBpgASgagAEoGqABKBrAASga8AEoGwABKBsQASgbIAEoGzABKBtQASgbcAEoG4ABKBuQASgbsAEoG8ABKCBQASgikAEoJQABKCdAASgncAEoJ5ABKCewASgn0AEoJ/ABKCgQASgoIAEoKFABKCngASgrsAEoK9ABKCvwASgsEAEoLDABKCxQASgscAEoLJABKC5gASgukAEoLsABKC7wASgvIAEoL1ABKC+AASgvsAEoL9ABKDeAASg3oAEoN8ABKDfgASg4EAEoOCABKDgwASg4QAEoOFABKDhwASg4kAEoOKABKDiwASg40AEoOOABKECQAShAsAEoQNABKEDwAShBIAEoQTABKEFAAShBUAEoQWABKEGAAShBoAEoQbABKEHAAShB4AEoQfABKEmgAShJwAEoSeABKEoAAShKMAEoSkABKEpQAShKYAEoSnABKEqQAShKsAEoSsABKErQAShK8AEoSwABKFKwAShS0AEoUwABKFMgAShTUAEoU2ABKFNwAShTgAEoU5ABKFOwAShT0AEoU+ABKFPwAShUEAEoVCABKFvQAShb8AEoXBABKFwwAShcYAEoXHABKFyAAShckAEoXKABKFzAAShc4AEoXPABKF0AAShdIAEoXTABKGTgAShlAAEoZTABKGVQAShlgAEoZZABKGWgAShlsAEoZcABKGXgAShmAAEoZhABKGYgAShmQAEoZlABKGhAAShv8AEocBABKHAwAShwUAEocIABKHCQAShwoAEocLABKHDAAShw4AEocQABKHEQAShxIAEocUABKHFQASh6gAEofLABKH6wASiAsAEogNABKIDwASiBEAEogTABKIFgASiBcAEogYABKIGwASiBwAEogeABKIHwASiCEAEogkABKIJQASiCYAEogpABKIKgASiC8AEohIABKIUQASiFMAEohVABKIXgASiGEAEohkABKIZgASiK8AEojTABKI+gASiR4AEokhABKJIwASiSUAEoknABKJKQASiSsAEoksABKJLwASiUgAEolpABKJawASiW0AEolvABKJcQASiXMAEol1ABKJdwASiXkAEomaABKJnQASiaAAEomjABKJpgASiakAEomsABKJrwASibIAEom0ABKKLwASijEAEoozABKKNQASijgAEoo5ABKKOgASijsAEoo8ABKKPgASikAAEopBABKKQgASikQAEopFABKKwAASisIAEorEABKKxgASiskAEorKABKKywASiswAEorNABKKzwASitEAEorSABKK0wASitUAEorWABKLUQASi1MAEotWABKLWAASi1sAEotcABKLXQASi14AEotfABKLYQASi2MAEotkABKLZQASi2cAEotoABKLgQASi4IAEouDABKLhQASjAAAEowCABKMBAASjAYAEowJABKMCgASjAsAEowMABKMDQASjA8AEowRABKMEgASjBMAEowVABKMFgASjJEAEoyTABKMlQASjJcAEoyaABKMmwASjJwAEoydABKMngASjKAAEoyiABKMowASjKQAEoymABKMpwASjSIAEo0kABKNJgASjSgAEo0rABKNLAASjS0AEo0uABKNLwASjTEAEo0zABKNNAASjTUAEo03ABKNOAASjbMAEo21ABKNtwASjbkAEo28ABKNvQASjb4AEo2/ABKNwAASjcIAEo3EABKNxQASjcYAEo3IABKNyQASjkQAEo5GABKOSAASjkoAEo5NABKOTgASjk8AEo5QABKOUQASjlMAEo5VABKOVgASjlcAEo5ZABKOWgASjqMAEo7HABKO7gASjxIAEo8VABKPFwASjxkAEo8bABKPHQASjx8AEo8gABKPIwASjzwAEo9ZABKPWwASj10AEo9fABKPYQASj2MAEo9lABKPZwASj4QAEo+HABKPigASj40AEo+QABKPkwASj5YAEo+ZABKPmwASkBYAEpAYABKQGgASkBwAEpAfABKQIAASkCEAEpAiABKQIwASkCUAEpAnABKQKAASkCkAEpArABKQLAASkKcAEpCpABKQqwASkK0AEpCwABKQsQASkLIAEpCzABKQtAASkLYAEpC4ABKQuQASkLoAEpC8ABKQvQASkTgAEpE6ABKRPAASkT4AEpFBABKRQgASkUMAEpFEABKRRQASkUcAEpFJABKRSgASkUsAEpFNABKRTgASkckAEpHLABKRzQASkc8AEpHSABKR0wASkdQAEpHVABKR1gASkdgAEpHaABKR2wASkdwAEpHeABKR3wASkloAEpJcABKSXgASkmAAEpJjABKSZAASkmUAEpJmABKSZwASkmkAEpJrABKSbAASkm0AEpJvABKScAASkusAEpLtABKS7wASkvEAEpL0ABKS9QASkvYAEpL3ABKS+AASkvoAEpL8ABKS/QASkv4AEpMAABKTAQASk3wAEpN+ABKTgAASk4IAEpOFABKThgASk4cAEpOIABKTiQASk4sAEpONABKTjgASk48AEpORABKTkgASlCUAEpRIABKUaAASlIgAEpSKABKUjAASlI4AEpSQABKUkwASlJQAEpSVABKUmAASlJkAEpSbABKUnAASlJ4AEpShABKUogASlKMAEpSmABKUpwASlLAAEpTJABKU0gASlNQAEpTWABKU3wASlOIAEpTlABKU5wASlTAAEpVUABKVewASlZ8AEpWiABKVpAASlaYAEpWoABKVqgASlawAEpWtABKVsAASlckAEpXqABKV7AASle4AEpXwABKV8gASlfQAEpX2ABKV+AASlfoAEpYbABKWHgASliEAEpYkABKWJwASlioAEpYtABKWMAASljMAEpY1ABKWsAASlrIAEpa0ABKWtgASlrkAEpa6ABKWuwASlrwAEpa9ABKWvwASlsEAEpbCABKWwwASlsUAEpbGABKXQQASl0MAEpdFABKXRwASl0oAEpdLABKXTAASl00AEpdOABKXUAASl1IAEpdTABKXVAASl1YAEpdXABKX0gASl9QAEpfXABKX2QASl9wAEpfdABKX3gASl98AEpfgABKX4gASl+QAEpflABKX5gASl+gAEpfpABKYAgASmAMAEpgEABKYBgASmIEAEpiDABKYhQASmIcAEpiKABKYiwASmIwAEpiNABKYjgASmJAAEpiSABKYkwASmJQAEpiWABKYlwASmRIAEpkUABKZFgASmRgAEpkbABKZHAASmR0AEpkeABKZHwASmSEAEpkjABKZJAASmSUAEpknABKZKAASmaMAEpmlABKZpwASmakAEpmsABKZrQASma4AEpmvABKZsAASmbIAEpm0ABKZtQASmbYAEpm4ABKZuQASmjQAEpo2ABKaOAASmjoAEpo9ABKaPgASmj8AEppAABKaQQASmkMAEppFABKaRgASmkcAEppJABKaSgASmsUAEprHABKayQASmssAEprOABKazwASmtAAEprRABKa0gASmtQAEprWABKa1wASmtgAEpraABKa2wASmyQAEptIABKbbwASm5MAEpuWABKbmAASm5oAEpucABKbngASm6AAEpuhABKbpAASm70AEpvaABKb3AASm94AEpvgABKb4gASm+QAEpvmABKb6AASnAUAEpwIABKcCwASnA4AEpwRABKcFAASnBcAEpwaABKcHAASnJcAEpyZABKcmwASnJ0AEpygABKcoQASnKIAEpyjABKcpAASnKYAEpyoABKcqQASnKoAEpysABKcrQASnSgAEp0qABKdLAASnS4AEp0xABKdMgASnTMAEp00ABKdNQASnTcAEp05ABKdOgASnTsAEp09ABKdPgASnbkAEp27ABKdvQASnb8AEp3CABKdwwASncQAEp3FABKdxgASncgAEp3KABKdywASncwAEp3OABKdzwASnkoAEp5MABKeTgASnlAAEp5TABKeVAASnlUAEp5WABKeVwASnlkAEp5bABKeXAASnl0AEp5fABKeYAASntsAEp7dABKe3wASnuEAEp7kABKe5QASnuYAEp7nABKe6AASnuoAEp7sABKe7QASnu4AEp7wABKe8QASn2wAEp9uABKfcAASn3IAEp91ABKfdgASn3cAEp94ABKfeQASn3sAEp99ABKffgASn38AEp+BABKfggASn/0AEp//ABKgAQASoAMAEqAGABKgBwASoAgAEqAJABKgCgASoAwAEqAOABKgDwASoBAAEqASABKgEwASoKYAEqDJABKg6QASoQkAEqELABKhDQASoQ8AEqERABKhFAASoRUAEqEWABKhGQASoRoAEqEcABKhHQASoR8AEqEiABKhIwASoSQAEqEnABKhKAASoS0AEqFGABKhTwASoVEAEqFTABKhXAASoV8AEqFiABKhZAASoa0AEqHRABKh+AASohwAEqIfABKiIQASoiMAEqIlABKiJwASoikAEqIqABKiLQASokYAEqJnABKiaQASomsAEqJtABKibwASonEAEqJzABKidQASoncAEqKYABKimwASop4AEqKhABKipAASoqcAEqKqABKirQASorAAEqKyABKjLQASoy8AEqMxABKjMwASozYAEqM3ABKjOAASozkAEqM6ABKjPAASoz4AEqM/ABKjQAASo0IAEqNDABKjvgASo8AAEqPCABKjxAASo8cAEqPIABKjyQASo8oAEqPLABKjzQASo88AEqPQABKj0QASo9MAEqPUABKkTwASpFEAEqRUABKkVgASpFkAEqRaABKkWwASpFwAEqRdABKkXwASpGEAEqRiABKkYwASpGUAEqRmABKkfwASpIAAEqSBABKkgwASpP4AEqUAABKlAgASpQQAEqUHABKlCAASpQkAEqUKABKlCwASpQ0AEqUPABKlEAASpREAEqUTABKlFAASpY8AEqWRABKlkwASpZUAEqWYABKlmQASpZoAEqWbABKlnAASpZ4AEqWgABKloQASpaIAEqWkABKlpQASpiAAEqYiABKmJAASpiYAEqYpABKmKgASpisAEqYsABKmLQASpi8AEqYxABKmMgASpjMAEqY1ABKmNgASprEAEqazABKmtQASprcAEqa6ABKmuwASprwAEqa9ABKmvgASpsAAEqbCABKmwwASpsQAEqbGABKmxwASp0IAEqdEABKnRgASp0gAEqdLABKnTAASp00AEqdOABKnTwASp1EAEqdTABKnVAASp1UAEqdXABKnWAASp6EAEqfFABKn7AASqBAAEqgTABKoFQASqBcAEqgZABKoGwASqB0AEqgeABKoIQASqDoAEqhXABKoWQASqFsAEqhdABKoXwASqGEAEqhjABKoZQASqIIAEqiFABKoiAASqIsAEqiOABKokQASqJQAEqiXABKomQASqRQAEqkWABKpGAASqRoAEqkdABKpHgASqR8AEqkgABKpIQASqSMAEqklABKpJgASqScAEqkpABKpKgASqaUAEqmnABKpqQASqasAEqmuABKprwASqbAAEqmxABKpsgASqbQAEqm2ABKptwASqbgAEqm6ABKpuwASqjYAEqo4ABKqOgASqjwAEqo/ABKqQAASqkEAEqpCABKqQwASqkUAEqpHABKqSAASqkkAEqpLABKqTAASqscAEqrJABKqzAASqs4AEqrRABKq0gASqtMAEqrUABKq1QASqtcAEqrZABKq2gASqtsAEqrdABKq3gASq1kAEqtbABKrXQASq18AEqtiABKrYwASq2QAEqtlABKrZgASq2gAEqtqABKrawASq2wAEqtuABKrbwASq+oAEqvsABKr7gASq/AAEqvzABKr9AASq/UAEqv2ABKr9wASq/kAEqv7ABKr/AASq/0AEqv/ABKsAAASrHsAEqx9ABKsfwASrIEAEqyEABKshQASrIYAEqyHABKsiAASrIoAEqyMABKsjQASrI4AEqyQABKskQASrKIAEqyjABKspQASrSgAEq1MABKtcAASrZMAEq26ABKt2gASrgEAEq4oABKuSAASrmwAEq6QABKukgASrpUAEq6XABKumQASrpsAEq6eABKuoQASrqMAEq6lABKuqAASrqoAEq6sABKurwASrrIAEq6zABKuuAASrtEAEq7WABKu2AASrt0AEq7gABKu4gASrysAEq9PABKvdgASr5oAEq+dABKvnwASr6EAEq+jABKvpQASr6cAEq+oABKvqwASr8QAEq/pABKv6wASr+0AEq/vABKv8QASr/MAEq/1ABKv9wASr/kAEq/7ABKwIAASsCMAErAmABKwKQASsCwAErAvABKwMgASsDUAErA4ABKwOwASsD0AErC4ABKwugASsL0AErC/ABKwwgASsMMAErDEABKwxQASsMYAErDIABKwygASsMsAErDMABKwzgASsM8AErDgABKw4QASsOMAErFeABKxYAASsWIAErFkABKxZwASsWgAErFpABKxagASsWsAErFtABKxbwASsXAAErFxABKxcwASsXQAErHvABKx8QASsfQAErH2ABKx+QASsfoAErH7ABKx/AASsf0AErH/ABKyAQASsgIAErIDABKyBQASsgYAErIXABKyHAASsh8AErIhABKyMgASsjsAErI+ABKyQQASskMAErJWABKy0QASstMAErLVABKy1wASstoAErLbABKy3AASst0AErLeABKy4AASsuIAErLjABKy5AASsuYAErLnABKzYgASs2QAErNnABKzaQASs2wAErNtABKzbgASs28AErNwABKzcgASs3QAErN1ABKzdgASs3gAErN5ABKzigASs4sAErONABK0CAAStAoAErQMABK0DgAStBEAErQSABK0EwAStBQAErQVABK0FwAStBkAErQaABK0GwAStB0AErQeABK0mQAStJsAErSeABK0oAAStKMAErSkABK0pQAStKYAErSnABK0qQAStKsAErSsABK0rQAStK8AErSwABK0yQAStMoAErTLABK0zQAStUgAErVKABK1TAAStU4AErVRABK1UgAStVMAErVUABK1VQAStVcAErVZABK1WgAStVsAErVdABK1XgAStdkAErXbABK13gASteAAErXjABK15AASteUAErXmABK15wAStekAErXrABK17AASte0AErXvABK18AAStg4AErYnABK2MAAStjMAErY2ABK2PwAStkIAErZFABK2RwAStloAErbtABK3EAAStzAAErdQABK3UgASt1QAErdWABK3WAASt1sAErdcABK3XQASt2AAErdhABK3YwASt2QAErdmABK3aQASt2oAErdrABK3bgASt28AErd0ABK3jQASt5YAEreYABK3mgASt6MAEremABK3qQASt6sAErf0ABK4GAASuD8AErhjABK4ZgASuGgAErhqABK4bAASuG4AErhwABK4cQASuHQAEriNABK4rgASuLAAEriyABK4tAASuLYAEri4ABK4ugASuLwAEri+ABK43wASuOIAErjlABK46AASuOsAErjuABK48QASuPQAErj3ABK4+QASuXQAErl2ABK5eAASuXoAErl9ABK5fgASuX8AErmAABK5gQASuYMAErmFABK5hgASuYcAErmJABK5igASugUAEroHABK6CQASugsAEroOABK6DwASuhAAEroRABK6EgASuhQAEroWABK6FwASuhgAEroaABK6GwASupYAErqYABK6mwASup0AErqgABK6oQASuqIAErqjABK6pAASuqYAErqoABK6qQASuqoAErqsABK6rQASusYAErrHABK6yAASusoAErtFABK7RwASu0kAErtLABK7TgASu08AErtQABK7UQASu1IAErtUABK7VgASu1cAErtYABK7WgASu1sAErvWABK72AASu9oAErvcABK73wASu+AAErvhABK74gASu+MAErvlABK75wASu+gAErvpABK76wASu+wAErxnABK8aQASvGsAErxtABK8cAASvHEAErxyABK8cwASvHQAErx2ABK8eAASvHkAErx6ABK8fAASvH0AErz4ABK8+gASvPwAErz+ABK9AQASvQIAEr0DABK9BAASvQUAEr0HABK9CQASvQoAEr0LABK9DQASvQ4AEr2JABK9iwASvY0AEr2PABK9kgASvZMAEr2UABK9lQASvZYAEr2YABK9mgASvZsAEr2cABK9ngASvZ8AEr3oABK+DAASvjMAEr5XABK+WgASvlwAEr5eABK+YAASvmIAEr5kABK+ZQASvmgAEr6BABK+ngASvqAAEr6iABK+pAASvqYAEr6oABK+qgASvqwAEr7JABK+zAASvs8AEr7SABK+1QASvtgAEr7bABK+3gASvuAAEr9bABK/XQASv18AEr9hABK/ZAASv2UAEr9mABK/ZwASv2gAEr9qABK/bAASv20AEr9uABK/cAASv3EAEr/sABK/7gASv/AAEr/yABK/9QASv/YAEr/3ABK/+AASv/kAEr/7ABK//QASv/4AEr//ABLAAQASwAIAEsB9ABLAfwASwIEAEsCDABLAhgASwIcAEsCIABLAiQASwIoAEsCMABLAjgASwI8AEsCQABLAkgASwJMAEsEOABLBEAASwRMAEsEVABLBGAASwRkAEsEaABLBGwASwRwAEsEeABLBIAASwSEAEsEiABLBJAASwSUAEsGgABLBogASwaQAEsGmABLBqQASwaoAEsGrABLBrAASwa0AEsGvABLBsQASwbIAEsGzABLBtQASwbYAEsIxABLCMwASwjUAEsI3ABLCOgASwjsAEsI8ABLCPQASwj4AEsJAABLCQgASwkMAEsJEABLCRgASwkcAEsLCABLCxAASwsYAEsLIABLCywASwswAEsLNABLCzgASws8AEsLRABLC0wASwtQAEsLVABLC1wASwtgAEsNrABLDjgASw64AEsPOABLD0AASw9IAEsPUABLD1gASw9kAEsPaABLD2wASw94AEsPfABLD4QASw+IAEsPkABLD5wASw+gAEsPpABLD7AASw+0AEsPyABLECwASxBQAEsQWABLEGAASxCEAEsQkABLEJwASxCkAEsRyABLElgASxL0AEsThABLE5AASxOYAEsToABLE6gASxOwAEsTuABLE7wASxPIAEsULABLFLAASxS4AEsUwABLFMgASxTQAEsU2ABLFOAASxToAEsU8ABLFXQASxWAAEsVjABLFZgASxWkAEsVsABLFbwASxXIAEsV1ABLFdwASxfIAEsX0ABLF9gASxfgAEsX7ABLF/AASxf0AEsX+ABLF/wASxgEAEsYDABLGBAASxgUAEsYHABLGCAASxoMAEsaFABLGhwASxokAEsaMABLGjQASxo4AEsaPABLGkAASxpIAEsaUABLGlQASxpYAEsaYABLGmQASxxQAEscWABLHGQASxxsAEsceABLHHwASxyAAEschABLHIgASxyQAEscmABLHJwASxygAEscqABLHKwASx0QAEsdFABLHRgASx0gAEsfDABLHxQASx8cAEsfJABLHzAASx80AEsfOABLHzwASx9AAEsfSABLH1AASx9UAEsfWABLH2AASx9kAEshUABLIVgASyFgAEshaABLIXQASyF4AEshfABLIYAASyGEAEshjABLIZQASyGYAEshnABLIaQASyGoAEsjlABLI5wASyOkAEsjrABLI7gASyO8AEsjwABLI8QASyPIAEsj0ABLI9gASyPcAEsj4ABLI+gASyPsAEsl2ABLJeAASyXoAEsl8ABLJfwASyYAAEsmBABLJggASyYMAEsmFABLJhwASyYgAEsmJABLJiwASyYwAEsoHABLKCQASygsAEsoNABLKEAASyhEAEsoSABLKEwASyhQAEsoWABLKGAASyhkAEsoaABLKHAASyh0AEspmABLKigASyrEAEsrVABLK2AASytoAEsrcABLK3gASyuAAEsriABLK4wASyuYAEsr/ABLLHAASyx4AEssgABLLIgASyyQAEssmABLLKAASyyoAEstHABLLSgASy00AEstQABLLUwASy1YAEstZABLLXAASy14AEsvZABLL2wASy90AEsvfABLL4gASy+MAEsvkABLL5QASy+YAEsvoABLL6gASy+sAEsvsABLL7gASy+8AEsxqABLMbAASzG4AEsxwABLMcwASzHQAEsx1ABLMdgASzHcAEsx5ABLMewASzHwAEsx9ABLMfwASzIAAEsz7ABLM/QASzP8AEs0BABLNBAASzQUAEs0GABLNBwASzQgAEs0KABLNDAASzQ0AEs0OABLNEAASzREAEs2MABLNjgASzZEAEs2TABLNlgASzZcAEs2YABLNmQASzZoAEs2cABLNngASzZ8AEs2gABLNogASzaMAEs4eABLOIAASziIAEs4kABLOJwASzigAEs4pABLOKgASzisAEs4tABLOLwASzjAAEs4xABLOMwASzjQAEs6vABLOsQASzrMAEs61ABLOuAASzrkAEs66ABLOuwASzrwAEs6+ABLOwAASzsEAEs7CABLOxAASzsUAEs9AABLPQgASz0QAEs9GABLPSQASz0oAEs9LABLPTAASz00AEs9PABLPUQASz1IAEs9TABLPVQASz1YAEs9nABLPaAASz2oAEs/tABLQEQAS0DUAEtBYABLQfwAS0J8AEtDGABLQ7QAS0Q0AEtExABLRVQAS0VcAEtFaABLRXAAS0V4AEtFgABLRYwAS0WYAEtFoABLRagAS0W0AEtFvABLRcQAS0XQAEtF3ABLReAAS0X0AEtGWABLRmwAS0Z0AEtGiABLRpQAS0acAEtHwABLSFAAS0jsAEtJfABLSYgAS0mQAEtJmABLSaAAS0moAEtJsABLSbQAS0nAAEtKJABLSrgAS0rAAEtKyABLStAAS0rYAEtK4ABLSugAS0rwAEtK+ABLSwAAS0uUAEtLoABLS6wAS0u4AEtLxABLS9AAS0vcAEtL6ABLS/QAS0wAAEtMCABLTfQAS038AEtOCABLThAAS04cAEtOIABLTiQAS04oAEtOLABLTjQAS048AEtOQABLTkQAS05MAEtOUABLTpQAS06YAEtOoABLUIwAS1CUAEtQnABLUKQAS1CwAEtQtABLULgAS1C8AEtQwABLUMgAS1DQAEtQ1ABLUNgAS1DgAEtQ5ABLUtAAS1LYAEtS5ABLUuwAS1L4AEtS/ABLUwAAS1MEAEtTCABLUxAAS1MYAEtTHABLUyAAS1MoAEtTLABLU3AAS1OEAEtTkABLU5gAS1PcAEtUAABLVAwAS1QYAEtUIABLVJAAS1TYAEtWxABLVswAS1bUAEtW3ABLVugAS1bsAEtW8ABLVvQAS1b4AEtXAABLVwgAS1cMAEtXEABLVxgAS1ccAEtZCABLWRAAS1kcAEtZJABLWTAAS1k0AEtZOABLWTwAS1lAAEtZSABLWVAAS1lUAEtZWABLWWAAS1lkAEtZqABLWawAS1m0AEtboABLW6gAS1uwAEtbuABLW8QAS1vIAEtbzABLW9AAS1vUAEtb3ABLW+QAS1voAEtb7ABLW/QAS1v4AEtd5ABLXewAS134AEteAABLXgwAS14QAEteFABLXhgAS14cAEteJABLXiwAS14wAEteNABLXjwAS15AAEtepABLXqgAS16sAEtetABLYKAAS2CoAEtgsABLYLgAS2DEAEtgyABLYMwAS2DQAEtg1ABLYNwAS2DkAEtg6ABLYOwAS2D0AEtg+ABLYuQAS2LsAEti+ABLYwAAS2MMAEtjEABLYxQAS2MYAEtjHABLYyQAS2MsAEtjMABLYzQAS2M8AEtjQABLY4gAS2PsAEtkkABLZJwAS2SoAEtktABLZMAAS2TMAEtk2ABLZOQAS2TwAEtk/ABLZQgAS2WsAEtluABLZcQAS2XQAEtl3ABLZegAS2X0AEtmAABLZgwAS2YYAEtmJABLZiwAS2ZoAEtm2ABLZzAAS2eMAEtn6ABLaEQAS2h8AEto7ABLaTQAS2uAAEtsDABLbIwAS20MAEttFABLbRwAS20kAEttLABLbTgAS208AEttQABLbUwAS21QAEttWABLbVwAS21kAEttcABLbXQAS214AEtthABLbYgAS22cAEtuAABLbiQAS24sAEtuNABLblgAS25kAEtucABLbngAS2+cAEtwLABLcMgAS3FYAEtxZABLcWwAS3F0AEtxfABLcYQAS3GMAEtxkABLcZwAS3IAAEtyhABLcowAS3KUAEtynABLcqQAS3KsAEtytABLcrwAS3LEAEtzSABLc1QAS3NgAEtzbABLc3gAS3OEAEtzkABLc5wAS3OoAEtzsABLdZwAS3WkAEt1rABLdbQAS3XAAEt1xABLdcgAS3XMAEt10ABLddgAS3XgAEt15ABLdegAS3XwAEt19ABLd+AAS3foAEt38ABLd/gAS3gEAEt4CABLeAwAS3gQAEt4FABLeBwAS3gkAEt4KABLeCwAS3g0AEt4OABLeiQAS3osAEt6OABLekAAS3pMAEt6UABLelQAS3pYAEt6XABLemQAS3psAEt6cABLenQAS3p8AEt6gABLeuQAS3roAEt67ABLevQAS3zgAEt86ABLfPAAS3z4AEt9BABLfQgAS30MAEt9EABLfRQAS30cAEt9JABLfSgAS30sAEt9NABLfTgAS38kAEt/LABLfzQAS388AEt/SABLf0wAS39QAEt/VABLf1gAS39gAEt/aABLf2wAS39wAEt/eABLf3wAS4FoAEuBcABLgXgAS4GAAEuBjABLgZAAS4GUAEuBmABLgZwAS4GkAEuBrABLgbAAS4G0AEuBvABLgcAAS4OsAEuDtABLg7wAS4PEAEuD0ABLg9QAS4PYAEuD3ABLg+AAS4PoAEuD8ABLg/QAS4P4AEuEAABLhAQAS4XwAEuF+ABLhgAAS4YIAEuGFABLhhgAS4YcAEuGIABLhiQAS4YsAEuGNABLhjgAS4Y8AEuGRABLhkgAS4dsAEuH/ABLiJgAS4koAEuJNABLiTwAS4lEAEuJTABLiVQAS4lcAEuJYABLiWwAS4nQAEuKRABLikwAS4pUAEuKXABLimQAS4psAEuKdABLinwAS4rwAEuK/ABLiwgAS4sUAEuLIABLiywAS4s4AEuLRABLi0wAS404AEuNQABLjUgAS41QAEuNXABLjWAAS41kAEuNaABLjWwAS410AEuNfABLjYAAS42EAEuNjABLjZAAS498AEuPhABLj4wAS4+UAEuPoABLj6QAS4+oAEuPrABLj7AAS4+4AEuPwABLj8QAS4/IAEuP0ABLj9QAS5HAAEuRyABLkdAAS5HYAEuR5ABLkegAS5HsAEuR8ABLkfQAS5H8AEuSBABLkggAS5IMAEuSFABLkhgAS5QEAEuUDABLlBgAS5QgAEuULABLlDAAS5Q0AEuUOABLlDwAS5REAEuUTABLlFAAS5RUAEuUXABLlGAAS5ZMAEuWVABLllwAS5ZkAEuWcABLlnQAS5Z4AEuWfABLloAAS5aIAEuWkABLlpQAS5aYAEuWoABLlqQAS5iQAEuYmABLmKAAS5ioAEuYtABLmLgAS5i8AEuYwABLmMQAS5jMAEuY1ABLmNgAS5jcAEuY5ABLmOgAS5rUAEua3ABLmuQAS5rsAEua+ABLmvwAS5sAAEubBABLmwgAS5sQAEubGABLmxwAS5sgAEubKABLmywAS514AEueBABLnoQAS58EAEufDABLnxQAS58cAEufJABLnzAAS580AEufOABLn0QAS59IAEufUABLn1QAS59cAEufaABLn2wAS59wAEuffABLn4AAS5+UAEuf+ABLoBwAS6AkAEugLABLoFAAS6BcAEugaABLoHAAS6GUAEuiJABLosAAS6NQAEujXABLo2QAS6NsAEujdABLo3wAS6OEAEujiABLo5QAS6P4AEukfABLpIQAS6SMAEuklABLpJwAS6SkAEukrABLpLQAS6S8AEulQABLpUwAS6VYAEulZABLpXAAS6V8AEuliABLpZQAS6WgAEulqABLp5QAS6ecAEunpABLp6wAS6e4AEunvABLp8AAS6fEAEunyABLp9AAS6fYAEun3ABLp+AAS6foAEun7ABLqdgAS6ngAEup6ABLqfAAS6n8AEuqAABLqgQAS6oIAEuqDABLqhQAS6ocAEuqIABLqiQAS6osAEuqMABLrBwAS6wkAEusMABLrDgAS6xEAEusSABLrEwAS6xQAEusVABLrFwAS6xkAEusaABLrGwAS6x0AEuseABLrNwAS6zgAEus5ABLrOwAS67YAEuu4ABLrugAS67wAEuu/ABLrwAAS68EAEuvCABLrwwAS68UAEuvHABLryAAS68kAEuvLABLrzAAS7EcAEuxJABLsSwAS7E0AEuxQABLsUQAS7FIAEuxTABLsVAAS7FYAEuxYABLsWQAS7FoAEuxcABLsXQAS7NgAEuzaABLs3AAS7N4AEuzhABLs4gAS7OMAEuzkABLs5QAS7OcAEuzpABLs6gAS7OsAEuztABLs7gAS7WkAEu1rABLtbQAS7W8AEu1yABLtcwAS7XQAEu11ABLtdgAS7XgAEu16ABLtewAS7XwAEu1+ABLtfwAS7foAEu38ABLt/gAS7gAAEu4DABLuBAAS7gUAEu4GABLuBwAS7gkAEu4LABLuDAAS7g0AEu4PABLuEAAS7lkAEu59ABLupAAS7sgAEu7LABLuzQAS7s8AEu7RABLu0wAS7tUAEu7WABLu2QAS7vIAEu8PABLvEQAS7xMAEu8VABLvFwAS7xkAEu8bABLvHQAS7zoAEu89ABLvQAAS70MAEu9GABLvSQAS70wAEu9PABLvUQAS78wAEu/OABLv0AAS79IAEu/VABLv1gAS79cAEu/YABLv2QAS79sAEu/dABLv3gAS798AEu/hABLv4gAS8F0AEvBfABLwYQAS8GMAEvBmABLwZwAS8GgAEvBpABLwagAS8GwAEvBuABLwbwAS8HAAEvByABLwcwAS8O4AEvDwABLw8gAS8PQAEvD3ABLw+AAS8PkAEvD6ABLw+wAS8P0AEvD/ABLxAAAS8QEAEvEDABLxBAAS8X8AEvGBABLxgwAS8YUAEvGIABLxiQAS8YoAEvGLABLxjAAS8Y4AEvGQABLxkQAS8ZIAEvGUABLxlQAS8hAAEvISABLyFAAS8hYAEvIZABLyGgAS8hsAEvIcABLyHQAS8h8AEvIhABLyIgAS8iMAEvIlABLyJgAS8qEAEvKjABLypgAS8qgAEvKrABLyrAAS8q0AEvKuABLyrwAS8rEAEvKzABLytAAS8rUAEvK3ABLyuAAS8tAAEvNLABLzTQAS808AEvNRABLzVAAS81UAEvNWABLzVwAS81gAEvNaABLzXAAS810AEvNeABLzYAAS82EAEvP0ABL0FwAS9DcAEvRXABL0WQAS9FsAEvRdABL0XwAS9GIAEvRjABL0ZAAS9GcAEvRoABL0agAS9GsAEvRtABL0cAAS9HEAEvRyABL0dQAS9HYAEvR7ABL0lAAS9J0AEvSfABL0oQAS9KoAEvStABL0sAAS9LIAEvT7ABL1HwAS9UYAEvVqABL1bQAS9W8AEvVxABL1cwAS9XUAEvV3ABL1eAAS9XsAEvWUABL1tQAS9bcAEvW5ABL1uwAS9b0AEvW/ABL1wQAS9cMAEvXFABL15gAS9ekAEvXsABL17wAS9fIAEvX1ABL1+AAS9fsAEvX+ABL2AAAS9nsAEvZ9ABL2fwAS9oEAEvaEABL2hQAS9oYAEvaHABL2iAAS9ooAEvaMABL2jQAS9o4AEvaQABL2kQAS9wwAEvcOABL3EAAS9xIAEvcVABL3FgAS9xcAEvcYABL3GQAS9xsAEvcdABL3HgAS9x8AEvchABL3IgAS950AEvefABL3ogAS96QAEvenABL3qAAS96kAEveqABL3qwAS960AEvevABL3sAAS97EAEvezABL3tAAS980AEvfOABL3zwAS99EAEvhMABL4TgAS+FAAEvhSABL4VQAS+FYAEvhXABL4WAAS+FkAEvhbABL4XQAS+F4AEvhfABL4YQAS+GIAEvjdABL43wAS+OEAEvjjABL45gAS+OcAEvjoABL46QAS+OoAEvjsABL47gAS+O8AEvjwABL48gAS+PMAEvluABL5cAAS+XIAEvl0ABL5dwAS+XgAEvl5ABL5egAS+XsAEvl9ABL5fwAS+YAAEvmBABL5gwAS+YQAEvn/ABL6AQAS+gMAEvoFABL6CAAS+gkAEvoKABL6CwAS+gwAEvoOABL6EAAS+hEAEvoSABL6FAAS+hUAEvqQABL6kgAS+pQAEvqWABL6mQAS+poAEvqbABL6nAAS+p0AEvqfABL6oQAS+qIAEvqjABL6pQAS+qYAEvrvABL7EwAS+zoAEvteABL7YQAS+2MAEvtlABL7ZwAS+2kAEvtrABL7bAAS+28AEvuIABL7pQAS+6cAEvupABL7qwAS+60AEvuvABL7sQAS+7MAEvvQABL70wAS+9YAEvvZABL73AAS+98AEvviABL75QAS++cAEvxiABL8ZAAS/GYAEvxoABL8awAS/GwAEvxtABL8bgAS/G8AEvxxABL8cwAS/HQAEvx1ABL8dwAS/HgAEvzzABL89QAS/PcAEvz5ABL8/AAS/P0AEvz+ABL8/wAS/QAAEv0CABL9BAAS/QUAEv0GABL9CAAS/QkAEv2EABL9hgAS/YgAEv2KABL9jQAS/Y4AEv2PABL9kAAS/ZEAEv2TABL9lQAS/ZYAEv2XABL9mQAS/ZoAEv4VABL+FwAS/hkAEv4bABL+HgAS/h8AEv4gABL+IQAS/iIAEv4kABL+JgAS/icAEv4oABL+KgAS/isAEv6mABL+qAAS/qoAEv6sABL+rwAS/rAAEv6xABL+sgAS/rMAEv61ABL+twAS/rgAEv65ABL+uwAS/rwAEv83ABL/OQAS/zwAEv8+ABL/QQAS/0IAEv9DABL/RAAS/0UAEv9HABL/SQAS/0oAEv9LABL/TQAS/04AEv9dABL/2AAS/9oAEv/cABL/3gAS/+EAEv/iABL/4wAS/+QAEv/lABL/5wAS/+kAEv/qABL/6wAS/+0AEv/uABMAgQATAKQAEwDEABMA5AATAOYAEwDoABMA6gATAOwAEwDvABMA8AATAPEAEwD0ABMA9QATAPcAEwD4ABMA+gATAP0AEwD+ABMA/wATAQIAEwEDABMBCAATASEAEwEqABMBLAATAS4AEwE3ABMBOgATAT0AEwE/ABMBiAATAawAEwHTABMB9wATAfoAEwH8ABMB/gATAgAAEwICABMCBAATAgUAEwIIABMCIQATAkIAEwJEABMCRgATAkgAEwJKABMCTAATAk4AEwJQABMCUgATAnMAEwJ2ABMCeQATAnwAEwJ/ABMCggATAoUAEwKIABMCiwATAo0AEwMIABMDCgATAwwAEwMOABMDEQATAxIAEwMTABMDFAATAxUAEwMXABMDGQATAxoAEwMbABMDHQATAx4AEwOZABMDmwATA50AEwOfABMDogATA6MAEwOkABMDpQATA6YAEwOoABMDqgATA6sAEwOsABMDrgATA68AEwQqABMELAATBC8AEwQxABMENAATBDUAEwQ2ABMENwATBDgAEwQ6ABMEPAATBD0AEwQ+ABMEQAATBEEAEwRaABMEWwATBFwAEwReABME2QATBNsAEwTdABME3wATBOIAEwTjABME5AATBOUAEwTmABME6AATBOoAEwTrABME7AATBO4AEwTvABMFagATBWwAEwVuABMFcAATBXMAEwV0ABMFdQATBXYAEwV3ABMFeQATBXsAEwV8ABMFfQATBX8AEwWAABMF+wATBf0AEwX/ABMGAQATBgQAEwYFABMGBgATBgcAEwYIABMGCgATBgwAEwYNABMGDgATBhAAEwYRABMGjAATBo4AEwaQABMGkgATBpUAEwaWABMGlwATBpgAEwaZABMGmwATBp0AEwaeABMGnwATBqEAEwaiABMHHQATBx8AEwchABMHIwATByYAEwcnABMHKAATBykAEwcqABMHLAATBy4AEwcvABMHMAATBzIAEwczABMHfAATB6AAEwfHABMH6wATB+4AEwfwABMH8gATB/QAEwf2ABMH+AATB/kAEwf8ABMIFQATCDIAEwg0ABMINgATCDgAEwg6ABMIPAATCD4AEwhAABMIXQATCGAAEwhjABMIZgATCGkAEwhsABMIbwATCHIAEwh0ABMI7wATCPEAEwjzABMI9QATCPgAEwj5ABMI+gATCPsAEwj8ABMI/gATCQAAEwkBABMJAgATCQQAEwkFABMJgAATCYIAEwmEABMJhgATCYkAEwmKABMJiwATCYwAEwmNABMJjwATCZEAEwmSABMJkwATCZUAEwmWABMKEQATChMAEwoVABMKFwATChoAEwobABMKHAATCh0AEwoeABMKIAATCiIAEwojABMKJAATCiYAEwonABMKogATCqQAEwqnABMKqQATCqwAEwqtABMKrgATCq8AEwqwABMKsgATCrQAEwq1ABMKtgATCrgAEwq5ABMLNAATCzYAEws4ABMLOgATCz0AEws+ABMLPwATC0AAEwtBABMLQwATC0UAEwtGABMLRwATC0kAEwtKABMLxQATC8cAEwvJABMLywATC84AEwvPABML0AATC9EAEwvSABML1AATC9YAEwvXABML2AATC9oAEwvbABMMVgATDFgAEwxaABMMXAATDF8AEwxgABMMYQATDGIAEwxjABMMZQATDGcAEwxoABMMaQATDGsAEwxsABMM/wATDSIAEw1CABMNYgATDWQAEw1mABMNaAATDWoAEw1tABMNbgATDW8AEw1yABMNcwATDXUAEw12ABMNeAATDXsAEw18ABMNfQATDYAAEw2BABMNhgATDZ8AEw2oABMNqgATDawAEw21ABMNuAATDbsAEw29ABMOBgATDioAEw5RABMOdQATDngAEw56ABMOfAATDn4AEw6AABMOggATDoMAEw6GABMOnwATDsAAEw7CABMOxAATDsYAEw7IABMOygATDswAEw7OABMO0AATDvEAEw70ABMO9wATDvoAEw79ABMPAAATDwMAEw8GABMPCQATDwsAEw+GABMPiAATD4oAEw+MABMPjwATD5AAEw+RABMPkgATD5MAEw+VABMPlwATD5gAEw+ZABMPmwATD5wAExAXABMQGQATEBsAExAdABMQIAATECEAExAiABMQIwATECQAExAmABMQKAATECkAExAqABMQLAATEC0AExCoABMQqgATEK0AExCvABMQsgATELMAExC0ABMQtQATELYAExC4ABMQugATELsAExC8ABMQvgATEL8AExDYABMQ2QATENoAExDcABMRVwATEVkAExFbABMRXQATEWAAExFhABMRYgATEWMAExFkABMRZgATEWgAExFpABMRagATEWwAExFtABMR6AATEeoAExHsABMR7gATEfEAExHyABMR8wATEfQAExH1ABMR9wATEfkAExH6ABMR+wATEf0AExH+ABMSeQATEnsAExJ9ABMSfwATEoIAExKDABMShAATEoUAExKGABMSiAATEooAExKLABMSjAATEo4AExKPABMTCgATEwwAExMOABMTEAATExMAExMUABMTFQATExYAExMXABMTGQATExsAExMcABMTHQATEx8AExMgABMTmwATE50AExOfABMToQATE6QAExOlABMTpgATE6cAExOoABMTqgATE6wAExOtABMTrgATE7AAExOxABMT+gATFB4AExRFABMUaQATFGwAExRuABMUcAATFHIAExR0ABMUdgATFHcAExR6ABMUkwATFLAAExSyABMUtAATFLYAExS4ABMUugATFLwAExS+ABMU2wATFN4AExThABMU5AATFOcAExTqABMU7QATFPAAExTyABMVbQATFW8AExVxABMVcwATFXYAExV3ABMVeAATFXkAExV6ABMVfAATFX4AExV/ABMVgAATFYIAExWDABMV/gATFgAAExYCABMWBAATFgcAExYIABMWCQATFgoAExYLABMWDQATFg8AExYQABMWEQATFhMAExYUABMWjwATFpEAExaTABMWlQATFpgAExaZABMWmgATFpsAExacABMWngATFqAAExahABMWogATFqQAExalABMXIAATFyIAExckABMXJgATFykAExcqABMXKwATFywAExctABMXLwATFzEAExcyABMXMwATFzUAExc2ABMXsQATF7MAExe1ABMXtwATF7oAExe7ABMXvAATF70AExe+ABMXwAATF8IAExfDABMXxAATF8YAExfHABMYQgATGEQAExhHABMYSQATGEwAExhNABMYTgATGE8AExhQABMYUgATGFQAExhVABMYVgATGFgAExhZABMYcQATGOwAExjuABMY8AATGPIAExj1ABMY9gATGPcAExj4ABMY+QATGPsAExj9ABMY/gATGP8AExkBABMZAgATGZUAExm4ABMZ2AATGfgAExn6ABMZ/AATGf4AExoAABMaAwATGgQAExoFABMaCAATGgkAExoLABMaDAATGg4AExoRABMaEgATGhMAExoWABMaFwATGiAAExo5ABMaQgATGkQAExpGABMaTwATGlIAExpVABMaVwATGqAAExrEABMa6wATGw8AExsSABMbFAATGxYAExsYABMbGgATGxwAExsdABMbIAATGzkAExtaABMbXAATG14AExtgABMbYgATG2QAExtmABMbaAATG2oAExuLABMbjgATG5EAExuUABMblwATG5oAExudABMboAATG6MAExulABMcIAATHCIAExwkABMcJgATHCkAExwqABMcKwATHCwAExwtABMcLwATHDEAExwyABMcMwATHDUAExw2ABMcsQATHLMAExy1ABMctwATHLoAExy7ABMcvAATHL0AExy+ABMcwAATHMIAExzDABMcxAATHMYAExzHABMdQgATHUQAEx1HABMdSQATHUwAEx1NABMdTgATHU8AEx1QABMdUgATHVQAEx1VABMdVgATHVgAEx1ZABMdcgATHXMAEx10ABMddgATHfEAEx3zABMd9QATHfcAEx36ABMd+wATHfwAEx39ABMd/gATHgAAEx4CABMeAwATHgQAEx4GABMeBwATHoIAEx6EABMehgATHogAEx6LABMejAATHo0AEx6OABMejwATHpEAEx6TABMelAATHpUAEx6XABMemAATHxMAEx8VABMfFwATHxkAEx8cABMfHQATHx4AEx8fABMfIAATHyIAEx8kABMfJQATHyYAEx8oABMfKQATH6QAEx+mABMfqAATH6oAEx+tABMfrgATH68AEx+wABMfsQATH7MAEx+1ABMftgATH7cAEx+5ABMfugATIDUAEyA3ABMgOQATIDsAEyA+ABMgPwATIEAAEyBBABMgQgATIEQAEyBGABMgRwATIEgAEyBKABMgSwATIJQAEyC4ABMg3wATIQMAEyEGABMhCAATIQoAEyEMABMhDgATIRAAEyERABMhFAATIS0AEyFKABMhTAATIU4AEyFQABMhUgATIVQAEyFWABMhWAATIXUAEyF4ABMhewATIX4AEyGBABMhhAATIYcAEyGKABMhjAATIgcAEyIJABMiCwATIg0AEyIQABMiEQATIhIAEyITABMiFAATIhYAEyIYABMiGQATIhoAEyIcABMiHQATIpgAEyKaABMinAATIp4AEyKhABMiogATIqMAEyKkABMipQATIqcAEyKpABMiqgATIqsAEyKtABMirgATIykAEyMrABMjLQATIy8AEyMyABMjMwATIzQAEyM1ABMjNgATIzgAEyM6ABMjOwATIzwAEyM+ABMjPwATI7oAEyO8ABMjvgATI8AAEyPDABMjxAATI8UAEyPGABMjxwATI8kAEyPLABMjzAATI80AEyPPABMj0AATJEsAEyRNABMkTwATJFEAEyRUABMkVQATJFYAEyRXABMkWAATJFoAEyRcABMkXQATJF4AEyRgABMkYQATJNwAEyTeABMk4AATJOIAEyTlABMk5gATJOcAEyToABMk6QATJOsAEyTtABMk7gATJO8AEyTxABMk8gATJW0AEyVvABMlcQATJXMAEyV2ABMldwATJXgAEyV5ABMlegATJXwAEyV+ABMlfwATJYAAEyWCABMlgwATJhYAEyY5ABMmWQATJnkAEyZ7ABMmfQATJn8AEyaBABMmhAATJoUAEyaGABMmiQATJooAEyaMABMmjQATJo8AEyaSABMmkwATJpQAEyaXABMmmAATJp0AEya2ABMmvwATJsEAEybDABMmzAATJs8AEybSABMm1AATJx0AEydBABMnaAATJ4wAEyePABMnkQATJ5MAEyeVABMnlwATJ5kAEyeaABMnnQATJ7YAEyfXABMn2QATJ9sAEyfdABMn3wATJ+EAEyfjABMn5QATJ+cAEygIABMoCwATKA4AEygRABMoFAATKBcAEygaABMoHQATKCAAEygiABMonQATKJ8AEyihABMoowATKKYAEyinABMoqAATKKkAEyiqABMorAATKK4AEyivABMosAATKLIAEyizABMpLgATKTAAEykyABMpNAATKTcAEyk4ABMpOQATKToAEyk7ABMpPQATKT8AEylAABMpQQATKUMAEylEABMpvwATKcEAEynEABMpxgATKckAEynKABMpywATKcwAEynNABMpzwATKdEAEynSABMp0wATKdUAEynWABMp7wATKfAAEynxABMp8wATKm4AEypwABMqcgATKnQAEyp3ABMqeAATKnkAEyp6ABMqewATKn0AEyp/ABMqgAATKoEAEyqDABMqhAATKv8AEysBABMrAwATKwUAEysIABMrCQATKwoAEysLABMrDAATKw4AEysQABMrEQATKxIAEysUABMrFQATK5AAEyuSABMrlAATK5YAEyuZABMrmgATK5sAEyucABMrnQATK58AEyuhABMrogATK6MAEyulABMrpgATLCEAEywjABMsJQATLCcAEywqABMsKwATLCwAEywtABMsLgATLDAAEywyABMsMwATLDQAEyw2ABMsNwATLLIAEyy0ABMstgATLLgAEyy7ABMsvAATLL0AEyy+ABMsvwATLMEAEyzDABMsxAATLMUAEyzHABMsyAATLREAEy01ABMtXAATLYAAEy2DABMthQATLYcAEy2JABMtiwATLY0AEy2OABMtkQATLaoAEy3HABMtyQATLcsAEy3NABMtzwATLdEAEy3TABMt1QATLfIAEy31ABMt+AATLfsAEy3+ABMuAQATLgQAEy4HABMuCQATLoQAEy6GABMuiAATLooAEy6NABMujgATLo8AEy6QABMukQATLpMAEy6VABMulgATLpcAEy6ZABMumgATLxUAEy8XABMvGQATLxsAEy8eABMvHwATLyAAEy8hABMvIgATLyQAEy8mABMvJwATLygAEy8qABMvKwATL6YAEy+oABMvqgATL6wAEy+vABMvsAATL7EAEy+yABMvswATL7UAEy+3ABMvuAATL7kAEy+7ABMvvAATMDcAEzA5ABMwOwATMD0AEzBAABMwQQATMEIAEzBDABMwRAATMEYAEzBIABMwSQATMEoAEzBMABMwTQATMMgAEzDKABMwzAATMM4AEzDRABMw0gATMNMAEzDUABMw1QATMNcAEzDZABMw2gATMNsAEzDdABMw3gATMVkAEzFbABMxXQATMV8AEzFiABMxYwATMWQAEzFlABMxZgATMWgAEzFqABMxawATMWwAEzFuABMxbwATMeoAEzHsABMx7gATMfAAEzHzABMx9AATMfUAEzH2ABMx9wATMfkAEzH7ABMx/AATMf0AEzH/ABMyAAATMpMAEzK2ABMy1gATMvYAEzL4ABMy+gATMvwAEzL+ABMzAQATMwIAEzMDABMzBgATMwcAEzMJABMzCgATMwwAEzMPABMzEAATMxEAEzMUABMzFQATMxoAEzMzABMzPAATMz4AEzNAABMzSQATM0wAEzNPABMzUQATM5oAEzO+ABMz5QATNAkAEzQMABM0DgATNBAAEzQSABM0FAATNBYAEzQXABM0GgATNDMAEzRUABM0VgATNFgAEzRaABM0XAATNF4AEzRgABM0YgATNGQAEzSFABM0iAATNIsAEzSOABM0kQATNJQAEzSXABM0mgATNJ0AEzSfABM1GgATNRwAEzUeABM1IAATNSMAEzUkABM1JQATNSYAEzUnABM1KQATNSsAEzUsABM1LQATNS8AEzUwABM1qwATNa0AEzWvABM1sQATNbQAEzW1ABM1tgATNbcAEzW4ABM1ugATNbwAEzW9ABM1vgATNcAAEzXBABM2PAATNj4AEzZBABM2QwATNkYAEzZHABM2SAATNkkAEzZKABM2TAATNk4AEzZPABM2UAATNlIAEzZTABM2bAATNm0AEzZuABM2cAATNusAEzbtABM27wATNvEAEzb0ABM29QATNvYAEzb3ABM2+AATNvoAEzb8ABM2/QATNv4AEzcAABM3AQATN3wAEzd+ABM3gAATN4IAEzeFABM3hgATN4cAEzeIABM3iQATN4sAEzeNABM3jgATN48AEzeRABM3kgATOA0AEzgPABM4EQATOBMAEzgWABM4FwATOBgAEzgZABM4GgATOBwAEzgeABM4HwATOCAAEzgiABM4IwATOJ4AEzigABM4ogATOKQAEzinABM4qAATOKkAEziqABM4qwATOK0AEzivABM4sAATOLEAEzizABM4tAATOS8AEzkxABM5MwATOTUAEzk4ABM5OQATOToAEzk7ABM5PAATOT4AEzlAABM5QQATOUIAEzlEABM5RQATOY4AEzmyABM52QATOf0AEzoAABM6AgATOgQAEzoGABM6CAATOgoAEzoLABM6DgATOicAEzpEABM6RgATOkgAEzpKABM6TAATOk4AEzpQABM6UgATOm8AEzpyABM6dQATOngAEzp7ABM6fgATOoEAEzqEABM6hgATOwEAEzsDABM7BQATOwcAEzsKABM7CwATOwwAEzsNABM7DgATOxAAEzsSABM7EwATOxQAEzsWABM7FwATO5IAEzuUABM7lgATO5gAEzubABM7nAATO50AEzueABM7nwATO6EAEzujABM7pAATO6UAEzunABM7qAATPCMAEzwlABM8JwATPCkAEzwsABM8LQATPC4AEzwvABM8MAATPDIAEzw0ABM8NQATPDYAEzw4ABM8OQATPLQAEzy2ABM8uQATPLsAEzy+ABM8vwATPMAAEzzBABM8wgATPMQAEzzGABM8xwATPMgAEzzKABM8ywATPUYAEz1IABM9SgATPUwAEz1PABM9UAATPVEAEz1SABM9UwATPVUAEz1XABM9WAATPVkAEz1bABM9XAATPdcAEz3ZABM92wATPd0AEz3gABM94QATPeIAEz3jABM95AATPeYAEz3oABM96QATPeoAEz3sABM97QATPmgAEz5qABM+bAATPm4AEz5xABM+cgATPnMAEz50ABM+dQATPncAEz55ABM+egATPnsAEz59ABM+fgATPxEAEz80ABM/VAATP3QAEz92ABM/eAATP3oAEz98ABM/fwATP4AAEz+BABM/hAATP4UAEz+HABM/iAATP4oAEz+NABM/jgATP48AEz+SABM/kwATP5gAEz+xABM/ugATP7wAEz++ABM/xwATP8oAEz/NABM/zwATQBgAE0A8ABNAYwATQIcAE0CKABNAjAATQI4AE0CQABNAkgATQJQAE0CVABNAmAATQLEAE0DSABNA1AATQNYAE0DYABNA2gATQNwAE0DeABNA4AATQOIAE0EDABNBBgATQQkAE0EMABNBDwATQRIAE0EVABNBGAATQRsAE0EdABNBmAATQZoAE0GcABNBngATQaEAE0GiABNBowATQaQAE0GlABNBpwATQakAE0GqABNBqwATQa0AE0GuABNCKQATQisAE0ItABNCLwATQjIAE0IzABNCNAATQjUAE0I2ABNCOAATQjoAE0I7ABNCPAATQj4AE0I/ABNCugATQrwAE0K/ABNCwQATQsQAE0LFABNCxgATQscAE0LIABNCygATQswAE0LNABNCzgATQtAAE0LRABNC6gATQusAE0LsABNC7gATQ2kAE0NrABNDbQATQ28AE0NyABNDcwATQ3QAE0N1ABNDdgATQ3gAE0N6ABNDewATQ3wAE0N+ABNDfwATQ/oAE0P8ABND/gATRAAAE0QDABNEBAATRAUAE0QGABNEBwATRAkAE0QLABNEDAATRA0AE0QPABNEEAATRIsAE0SNABNEjwATRJEAE0SUABNElQATRJYAE0SXABNEmAATRJoAE0ScABNEnQATRJ4AE0SgABNEoQATRRwAE0UeABNFIAATRSIAE0UlABNFJgATRScAE0UoABNFKQATRSsAE0UtABNFLgATRS8AE0UxABNFMgATRa0AE0WvABNFsQATRbMAE0W2ABNFtwATRbgAE0W5ABNFugATRbwAE0W+ABNFvwATRcAAE0XCABNFwwATRgwAE0YwABNGVwATRnsAE0Z+ABNGgAATRoIAE0aEABNGhgATRogAE0aJABNGjAATRqUAE0bCABNGxAATRsYAE0bIABNGygATRswAE0bOABNG0AATRu0AE0bwABNG8wATRvYAE0b5ABNG/AATRv8AE0cCABNHBAATR38AE0eBABNHgwATR4UAE0eIABNHiQATR4oAE0eLABNHjAATR44AE0eQABNHkQATR5IAE0eUABNHlQATSBAAE0gSABNIFAATSBYAE0gZABNIGgATSBsAE0gcABNIHQATSB8AE0ghABNIIgATSCMAE0glABNIJgATSKEAE0ijABNIpQATSKcAE0iqABNIqwATSKwAE0itABNIrgATSLAAE0iyABNIswATSLQAE0i2ABNItwATSTIAE0k0ABNJNwATSTkAE0k8ABNJPQATST4AE0k/ABNJQAATSUIAE0lEABNJRQATSUYAE0lIABNJSQATScQAE0nGABNJyAATScoAE0nNABNJzgATSc8AE0nQABNJ0QATSdMAE0nVABNJ1gATSdcAE0nZABNJ2gATSlUAE0pXABNKWQATSlsAE0peABNKXwATSmAAE0phABNKYgATSmQAE0pmABNKZwATSmgAE0pqABNKawATSuYAE0roABNK6gATSuwAE0rvABNK8AATSvEAE0ryABNK8wATSvUAE0r3ABNK+AATSvkAE0r7ABNK/AATS48AE0uyABNL0gATS/IAE0v0ABNL9gATS/gAE0v6ABNL/QATS/4AE0v/ABNMAgATTAMAE0wFABNMBgATTAgAE0wLABNMDAATTA0AE0wQABNMEQATTBYAE0wvABNMOAATTDoAE0w8ABNMRQATTEgAE0xLABNMTQATTJYAE0y6ABNM4QATTQUAE00IABNNCgATTQwAE00OABNNEAATTRIAE00TABNNFgATTS8AE01QABNNUgATTVQAE01WABNNWAATTVoAE01cABNNXgATTWAAE02BABNNhAATTYcAE02KABNNjQATTZAAE02TABNNlgATTZkAE02bABNOFgATThgAE04aABNOHAATTh8AE04gABNOIQATTiIAE04jABNOJQATTicAE04oABNOKQATTisAE04sABNOpwATTqkAE06rABNOrQATTrAAE06xABNOsgATTrMAE060ABNOtgATTrgAE065ABNOugATTrwAE069ABNPOAATTzoAE089ABNPPwATT0IAE09DABNPRAATT0UAE09GABNPSAATT0oAE09LABNPTAATT04AE09PABNPaAATT2kAE09qABNPbAATT+cAE0/pABNP6wATT+0AE0/wABNP8QATT/IAE0/zABNP9AATT/YAE0/4ABNP+QATT/oAE0/8ABNP/QATUHgAE1B6ABNQfAATUH4AE1CBABNQggATUIMAE1CEABNQhQATUIcAE1CJABNQigATUIsAE1CNABNQjgATUQkAE1ELABNRDQATUQ8AE1ESABNREwATURQAE1EVABNRFgATURgAE1EaABNRGwATURwAE1EeABNRHwATUZoAE1GcABNRngATUaAAE1GjABNRpAATUaUAE1GmABNRpwATUakAE1GrABNRrAATUa0AE1GvABNRsAATUisAE1ItABNSLwATUjEAE1I0ABNSNQATUjYAE1I3ABNSOAATUjoAE1I8ABNSPQATUj4AE1JAABNSQQATUooAE1KuABNS1QATUvkAE1L8ABNS/gATUwAAE1MCABNTBAATUwYAE1MHABNTCgATUyMAE1NAABNTQgATU0QAE1NGABNTSAATU0oAE1NMABNTTgATU2sAE1NuABNTcQATU3QAE1N3ABNTegATU30AE1OAABNTggATU/0AE1P/ABNUAQATVAMAE1QGABNUBwATVAgAE1QJABNUCgATVAwAE1QOABNUDwATVBAAE1QSABNUEwATVI4AE1SQABNUkgATVJQAE1SXABNUmAATVJkAE1SaABNUmwATVJ0AE1SfABNUoAATVKEAE1SjABNUpAATVR8AE1UhABNVIwATVSUAE1UoABNVKQATVSoAE1UrABNVLAATVS4AE1UwABNVMQATVTIAE1U0ABNVNQATVbAAE1WyABNVtQATVbcAE1W6ABNVuwATVbwAE1W9ABNVvgATVcAAE1XCABNVwwATVcQAE1XGABNVxwATVkIAE1ZEABNWRgATVkgAE1ZLABNWTAATVk0AE1ZOABNWTwATVlEAE1ZTABNWVAATVlUAE1ZXABNWWAATVtMAE1bVABNW1wATVtkAE1bcABNW3QATVt4AE1bfABNW4AATVuIAE1bkABNW5QATVuYAE1boABNW6QATV2QAE1dmABNXaAATV2oAE1dtABNXbgATV28AE1dwABNXcQATV3MAE1d1ABNXdgATV3cAE1d5ABNXegATV4sAE1eMABNXjgATWBEAE1g1ABNYWQATWHwAE1ijABNYwwATWOoAE1kRABNZMQATWVUAE1l5ABNZewATWX4AE1mAABNZggATWYQAE1mHABNZigATWYwAE1mOABNZkQATWZMAE1mVABNZmAATWZsAE1mcABNZoQATWboAE1m/ABNZwQATWcYAE1nJABNZywATWhQAE1o4ABNaXwATWoMAE1qGABNaiAATWooAE1qMABNajgATWpAAE1qRABNalAATWq0AE1rSABNa1AATWtYAE1rYABNa2gATWtwAE1reABNa4AATWuIAE1rkABNbCQATWwwAE1sPABNbEgATWxUAE1sYABNbGwATWx4AE1shABNbJAATWyYAE1uhABNbowATW6YAE1uoABNbqwATW6wAE1utABNbrgATW68AE1uxABNbswATW7QAE1u1ABNbtwATW7gAE1vJABNbygATW8wAE1xHABNcSQATXEsAE1xNABNcUAATXFEAE1xSABNcUwATXFQAE1xWABNcWAATXFkAE1xaABNcXAATXF0AE1zYABNc2gATXN0AE1zfABNc4gATXOMAE1zkABNc5QATXOYAE1zoABNc6gATXOsAE1zsABNc7gATXO8AE10AABNdBQATXQgAE10KABNdGwATXSQAE10nABNdKgATXSwAE10/ABNdugATXbwAE12+ABNdwAATXcMAE13EABNdxQATXcYAE13HABNdyQATXcsAE13MABNdzQATXc8AE13QABNeSwATXk0AE15QABNeUgATXlUAE15WABNeVwATXlgAE15ZABNeWwATXl0AE15eABNeXwATXmEAE15iABNecwATXnQAE152ABNe8QATXvMAE171ABNe9wATXvoAE177ABNe/AATXv0AE17+ABNfAAATXwIAE18DABNfBAATXwYAE18HABNfggATX4QAE1+HABNfiQATX4wAE1+NABNfjgATX48AE1+QABNfkgATX5QAE1+VABNflgATX5gAE1+ZABNfsgATX7MAE1+0ABNftgATYDEAE2AzABNgNQATYDcAE2A6ABNgOwATYDwAE2A9ABNgPgATYEAAE2BCABNgQwATYEQAE2BGABNgRwATYMIAE2DEABNgxwATYMkAE2DMABNgzQATYM4AE2DPABNg0AATYNIAE2DUABNg1QATYNYAE2DYABNg2QATYQAAE2EZABNhIgATYSUAE2EoABNhMQATYTQAE2E3ABNhOQATYUwAE2HfABNiAgATYiIAE2JCABNiRAATYkYAE2JIABNiSgATYk0AE2JOABNiTwATYlIAE2JTABNiVQATYlYAE2JYABNiWwATYlwAE2JdABNiYAATYmEAE2JmABNifwATYogAE2KKABNijAATYpUAE2KYABNimwATYp0AE2LmABNjCgATYzEAE2NVABNjWAATY1oAE2NcABNjXgATY2AAE2NiABNjYwATY2YAE2N/ABNjoAATY6IAE2OkABNjpgATY6gAE2OqABNjrAATY64AE2OwABNj0QATY9QAE2PXABNj2gATY90AE2PgABNj4wATY+YAE2PpABNj6wATZGYAE2RoABNkagATZGwAE2RvABNkcAATZHEAE2RyABNkcwATZHUAE2R3ABNkeAATZHkAE2R7ABNkfAATZPcAE2T5ABNk+wATZP0AE2UAABNlAQATZQIAE2UDABNlBAATZQYAE2UIABNlCQATZQoAE2UMABNlDQATZYgAE2WKABNljQATZY8AE2WSABNlkwATZZQAE2WVABNllgATZZgAE2WaABNlmwATZZwAE2WeABNlnwATZbgAE2W5ABNlugATZbwAE2Y3ABNmOQATZjsAE2Y9ABNmQAATZkEAE2ZCABNmQwATZkQAE2ZGABNmSAATZkkAE2ZKABNmTAATZk0AE2bIABNmygATZswAE2bOABNm0QATZtIAE2bTABNm1AATZtUAE2bXABNm2QATZtoAE2bbABNm3QATZt4AE2dZABNnWwATZ10AE2dfABNnYgATZ2MAE2dkABNnZQATZ2YAE2doABNnagATZ2sAE2dsABNnbgATZ28AE2fqABNn7AATZ+4AE2fwABNn8wATZ/QAE2f1ABNn9gATZ/cAE2f5ABNn+wATZ/wAE2f9ABNn/wATaAAAE2h7ABNofQATaH8AE2iBABNohAATaIUAE2iGABNohwATaIgAE2iKABNojAATaI0AE2iOABNokAATaJEAE2jaABNo/gATaSUAE2lJABNpTAATaU4AE2lQABNpUgATaVQAE2lWABNpVwATaVoAE2lzABNpkAATaZIAE2mUABNplgATaZgAE2maABNpnAATaZ4AE2m7ABNpvgATacEAE2nEABNpxwATacoAE2nNABNp0AATadIAE2pNABNqTwATalEAE2pTABNqVgATalcAE2pYABNqWQATaloAE2pcABNqXgATal8AE2pgABNqYgATamMAE2reABNq4AATauIAE2rkABNq5wATaugAE2rpABNq6gATausAE2rtABNq7wATavAAE2rxABNq8wATavQAE2tvABNrcQATa3MAE2t1ABNreAATa3kAE2t6ABNrewATa3wAE2t+ABNrgAATa4EAE2uCABNrhAATa4UAE2wAABNsAgATbAUAE2wHABNsCgATbAsAE2wMABNsDQATbA4AE2wQABNsEgATbBMAE2wUABNsFgATbBcAE2ySABNslAATbJYAE2yYABNsmwATbJwAE2ydABNsngATbJ8AE2yhABNsowATbKQAE2ylABNspwATbKgAE20jABNtJQATbScAE20pABNtLAATbS0AE20uABNtLwATbTAAE20yABNtNAATbTUAE202ABNtOAATbTkAE220ABNttgATbbgAE226ABNtvQATbb4AE22/ABNtwAATbcEAE23DABNtxQATbcYAE23HABNtyQATbcoAE25dABNugAATbqAAE27AABNuwgATbsQAE27GABNuyAATbssAE27MABNuzQATbtAAE27RABNu0wATbtQAE27WABNu2QATbtoAE27bABNu3gATbt8AE27kABNu/QATbwYAE28IABNvCgATbxMAE28WABNvGQATbxsAE29kABNviAATb68AE2/TABNv1gATb9gAE2/aABNv3AATb94AE2/gABNv4QATb+QAE2/9ABNwHgATcCAAE3AiABNwJAATcCYAE3AoABNwKgATcCwAE3AuABNwTwATcFIAE3BVABNwWAATcFsAE3BeABNwYQATcGQAE3BnABNwaQATcOQAE3DmABNw6AATcOoAE3DtABNw7gATcO8AE3DwABNw8QATcPMAE3D1ABNw9gATcPcAE3D5ABNw+gATcXUAE3F3ABNxeQATcXsAE3F+ABNxfwATcYAAE3GBABNxggATcYQAE3GGABNxhwATcYgAE3GKABNxiwATcgYAE3IIABNyCwATcg0AE3IQABNyEQATchIAE3ITABNyFAATchYAE3IYABNyGQATchoAE3IcABNyHQATcjYAE3I3ABNyOAATcjoAE3K1ABNytwATcrkAE3K7ABNyvgATcr8AE3LAABNywQATcsIAE3LEABNyxgATcscAE3LIABNyygATcssAE3NGABNzSAATc0oAE3NMABNzTwATc1AAE3NRABNzUgATc1MAE3NVABNzVwATc1gAE3NZABNzWwATc1wAE3PXABNz2QATc9sAE3PdABNz4AATc+EAE3PiABNz4wATc+QAE3PmABNz6AATc+kAE3PqABNz7AATc+0AE3RoABN0agATdGwAE3RuABN0cQATdHIAE3RzABN0dAATdHUAE3R3ABN0eQATdHoAE3R7ABN0fQATdH4AE3T5ABN0+wATdP0AE3T/ABN1AgATdQMAE3UEABN1BQATdQYAE3UIABN1CgATdQsAE3UMABN1DgATdQ8AE3VYABN1fAATdaMAE3XHABN1ygATdcwAE3XOABN10AATddIAE3XUABN11QATddgAE3XxABN2DgATdhAAE3YSABN2FAATdhYAE3YYABN2GgATdhwAE3Y5ABN2PAATdj8AE3ZCABN2RQATdkgAE3ZLABN2TgATdlAAE3bLABN2zQATds8AE3bRABN21AATdtUAE3bWABN21wATdtgAE3baABN23AATdt0AE3beABN24AATduEAE3dcABN3XgATd2AAE3diABN3ZQATd2YAE3dnABN3aAATd2kAE3drABN3bQATd24AE3dvABN3cQATd3IAE3ftABN37wATd/EAE3fzABN39gATd/cAE3f4ABN3+QATd/oAE3f8ABN3/gATd/8AE3gAABN4AgATeAMAE3h+ABN4gAATeIMAE3iFABN4iAATeIkAE3iKABN4iwATeIwAE3iOABN4kAATeJEAE3iSABN4lAATeJUAE3kQABN5EgATeRQAE3kWABN5GQATeRoAE3kbABN5HAATeR0AE3kfABN5IQATeSIAE3kjABN5JQATeSYAE3mhABN5owATeaUAE3mnABN5qgATeasAE3msABN5rQATea4AE3mwABN5sgATebMAE3m0ABN5tgATebcAE3oyABN6NAATejYAE3o4ABN6OwATejwAE3o9ABN6PgATej8AE3pBABN6QwATekQAE3pFABN6RwATekgAE3pZABN6WgATelwAE3p1ABN6dgATencAE3p5ABN6kgATepMAE3qUABN6lgATeq8AE3qwABN6sQATerMAE3rEABN60wATeuwAE3r7ABN7DQATeyEAE3s4ABN7SgATe1sAE3tcABN7XgATe3cAE3t4ABN7eQATe3sAE3uQABN7oQATe6sAE3u4AAAAAAAABAQAAAAAAAHfnwAAAAAAAAAAAAAAAAATe8A= + + + + + 1 + contactIdentity + + + + nextRefreshTimestamp + + + + rawAPIKeyExpirationDate + + + + CachedWellKnown + Undefined + 22 + CachedWellKnown + 1 + + + + + + seedForNextProvisionedReceiveKey + + + + groupUid + + + + 1 + contactGroupsOwned + + + + rawCategory + + + + seedForNextSendKey + + + + MutualScanSignatureReceived + Undefined + 50 + MutualScanSignatureReceived + 1 + + + + + + encodedCurrentState + + + + rawMessageIdOwnedIdentity + + + + rawAuthState + + + + rawMessageIdUid + + + + serializedCoreDetails + + + + ContactIdentity + Undefined + 21 + ContactIdentity + 1 + + + + + + statusChangeTimestamp + + + + 1 + maskingUID + + + + expirationDate + + + + rawMessageIdUid + + + + rawPhotoServerLabel + + + + rawOwnPermissions + + + + serializedSharedSettings + + + + serializedCoreDetails + + + + aFullRatchetOfTheSendSeedIsInProgress + + + + serializedIdentityCoreDetails + + + + ownedCryptoIdentity + + + + wrappedKey + + + + rawOwnedIdentity + + + + 1 + ownedIdentity + + + + rawMessageIdUid + + + + attachmentNumber + + + + nonceFromServer + + + + rawPushTopic + + + + 1 + trustedIdentityDetails + + + + ciphertextChunkLength + + + + serverURL + + + + messagePayload + + + + ContactGroupDetailsLatest + Undefined + 2 + ContactGroupDetailsLatest + 1 + + + + + + encodedKey + + + + lastSuccessfulKeyVerificationTimestamp + + + + rawLabel + + + + childProtocolInstanceUid + + + + 1 + latestDetails + + + + ProtocolInstance + Undefined + 4 + ProtocolInstance + 1 + + + + + + rawAPIKeyStatus + + + + selfRatchetingCount + + + + 1 + message + + + + timestampOfLastFullRatchet + + + + Provision + Undefined + 38 + Provision + 1 + + + + + + ownedCryptoIdentity + + + + rawJwks + + + + rawMessageIdUid + + + + 1 + chunks + + + + 1 + contactGroupInCaseTheDetailsArePublished + + + + statusRaw + + + + latestRegistrationDate + + + + PendingGroupMember + Undefined + 42 + PendingGroupMember + 1 + + + + + + serializedIdentityCoreDetails + + + + timestampFromServer + + + + isCertifiedByOwnKeycloak + + + + ContactGroupV2Member + Undefined + 51 + ContactGroupV2Member + 1 + + + + + + version + + + + cryptoSuiteVersion + + + + version + + + + rawOwnedIdentityIdentity + + + + YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8Q +D05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGsCwwXGB0eJiswMTQ4VSRudWxs1Q0ODxAREhMUFRZZTlNPcGVyYW5kXk5TU2VsZWN0b3JOYW1lXxAQTlNFeHByZXNzaW9uVHlwZVtOU0FyZ3VtZW50c1YkY2xhc3OAA4ACEASABoALXxAQdmFsdWVGb3JLZXlQYXRoOtMZDxEaGxxaTlNWYXJpYWJsZYAEEAKABVZzb3VyY2XSHyAhIlokY2xhc3NuYW1lWCRjbGFzc2VzXxAUTlNWYXJpYWJsZUV4cHJlc3Npb26jIyQlXxAUTlNWYXJpYWJsZUV4cHJlc3Npb25cTlNFeHByZXNzaW9uWE5TT2JqZWN00icRKCpaTlMub2JqZWN0c6EpgAeACtMRDywtLi9ZTlNLZXlQYXRogAkQCoAIXxAQZW5jb2RlZFF1ZXJ5VHlwZdIfIDIzXxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqMyJCXSHyA1Nl5OU011dGFibGVBcnJheaM1NyVXTlNBcnJhedIfIDk6XxATTlNLZXlQYXRoRXhwcmVzc2lvbqQ5OyQlXxAUTlNGdW5jdGlvbkV4cHJlc3Npb24ACAARABoAJAApADIANwBJAEwAUQBTAGAAZgBxAHsAigCdAKkAsACyALQAtgC4ALoAzQDUAN8A4QDjAOUA7ADxAPwBBQEcASABNwFEAU0BUgFdAV8BYQFjAWoBdAF2AXgBegGNAZIBsQG1AboByQHNAdUB2gHwAfUAAAAAAAACAQAAAAAAAAA8AAAAAAAAAAAAAAAAAAACDA== + + rawEncodedQueryType + + + + 1 + contactGroups + + + + 1 + ownedIdentity + + + + 1 + message + + + + ContactIdentityDetailsTrusted + Undefined + 31 + ContactIdentityDetailsTrusted + 1 + + + + + + signature + + + + identityServer + + + + receptionChannelInfo + + + + rawEncryptedExtendedMessagePayload + + + + messageUploadTimestampFromServer + + + + expirationTimestamp + + + + macKeyRaw + + + + rawOwnedIdentity + + + + expectedChildStateRawId + + + + groupInvitationNonce + + + + rawAPIPermissions + + + + ChannelCreationWithContactDeviceProtocolInstance + Undefined + 46 + ChannelCreationWithContactDeviceProtocolInstance + 1 + + + + + + 1 + obliviousChannel + + + + 1 + devices + + + + rawBlobMainSeed + + + + 1 + rawOtherMembers + + + + PersistedEngineDialog + Undefined + 29 + PersistedEngineDialog + 1 + + + + + + timestampOfLastFullRatchetSentMessage + + + + InboxAttachmentChunk + Undefined + 26 + InboxAttachmentChunk + 1 + + + + + + rawOwnedIdentity + + + + signedURL + + + + uid + + + + 1 + otherDevices + + + + version + + + + name + + + + version + + + + attachmentNumber + + + + isForcefullyTrustedByUser + + + + currentDeviceUid + + + + 1 + contactGroupOwned + + + + 1 + contactIdentity + + + + rawRemoteDeviceUid + + + + YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8Q +D05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGsCwwXGB0eJiswMTQ4VSRudWxs1Q0ODxAREhMUFRZZTlNPcGVyYW5kXk5TU2VsZWN0b3JOYW1lXxAQTlNFeHByZXNzaW9uVHlwZVtOU0FyZ3VtZW50c1YkY2xhc3OAA4ACEASABoALXxAQdmFsdWVGb3JLZXlQYXRoOtMZDxEaGxxaTlNWYXJpYWJsZYAEEAKABVZzb3VyY2XSHyAhIlokY2xhc3NuYW1lWCRjbGFzc2VzXxAUTlNWYXJpYWJsZUV4cHJlc3Npb26jIyQlXxAUTlNWYXJpYWJsZUV4cHJlc3Npb25cTlNFeHByZXNzaW9uWE5TT2JqZWN00icRKCpaTlMub2JqZWN0c6EpgAeACtMRDywtLi9ZTlNLZXlQYXRogAkQCoAIXxATZW5jb2RlZFJlc3BvbnNlVHlwZdIfIDIzXxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqMyJCXSHyA1Nl5OU011dGFibGVBcnJheaM1NyVXTlNBcnJhedIfIDk6XxATTlNLZXlQYXRoRXhwcmVzc2lvbqQ5OyQlXxAUTlNGdW5jdGlvbkV4cHJlc3Npb24ACAARABoAJAApADIANwBJAEwAUQBTAGAAZgBxAHsAigCdAKkAsACyALQAtgC4ALoAzQDUAN8A4QDjAOUA7ADxAPwBBQEcASABNwFEAU0BUgFdAV8BYQFjAWoBdAF2AXgBegGQAZUBtAG4Ab0BzAHQAdgB3QHzAfgAAAAAAAACAQAAAAAAAAA8AAAAAAAAAAAAAAAAAAACDw== + + rawEncodedResponseType + + + + rawGroupUid + + + + dummyVariableForMigration + + + + mediatorOrGroupOwnerCryptoIdentity + + + + timestamp + + + + rawMessageIdOwnedIdentity + + + + downloadTimestamp + + + + rawGroupUID + + + + MessageHeader + Undefined + 45 + MessageHeader + 1 + + + + + + 1 + rawPendingMembers + + + + rawExtendedMessagePayloadKey + + + + selfRatchetingCount + + + + successfulVerificationCount + + + + rawMessageIdOwnedIdentity + + + + messageToSendRawId + + + + 1 + groupMembers + + + + rawIdentity + + + + rawOwnedCryptoId + + + + 1 + session + + + + rawOwnedIdentityIdentity + + + + groupVersion + + + + 1 + rawOwnedIdentity + + + + OutboxAttachmentSession + Undefined + 13 + OutboxAttachmentSession + 1 + + + + + + 1 + channelCreationProtocolInstanceInWaitingState + + + + 1 + provisions + + + + 1 + attachment + + + + rawPushTopics + + + + 1 + message + + + + 1 + contactGroupInCaseTheDetailsAreTrusted + + + + 1 + rawBackupKey + + + + rawCapabilities + + + + 1 + ownedIdentity + + + + encodedAuthenticatedDecryptionKey + + + + isOneToOne + + + + ContactGroupOwned + Undefined + 14 + ContactGroupOwned + 1 + + + + + + fullRatchetingCountOfLastProvision + + + + ContactOwnedIdentityDeletionSignatureReceived + Undefined + 34 + ContactOwnedIdentityDeletionSignatureReceived + 1 + + + + + + 1 + protocolInstance + + + + rawOwnedIdentity + + + + 1 + contactGroupsV2 + + + + 1 + pendingGroupMembers + + + + contactDeviceUid + + + + KeycloakRevokedIdentity + Undefined + 3 + KeycloakRevokedIdentity + 1 + + + + + + nextRefreshTimestamp + + + + mediatorOrGroupOwnerTrustLevelMajor + + + + chunkNumber + + + + userDialogUuid + + + + rawMessageIdUid + + + + rawAcknowledgerAppType + + + + wellKnownData + + + + rawMessageIdOwnedIdentity + + + + 1 + provision + + + + rawMessageIdUid + + + + uidRaw + + + + 1 + parentProtocolInstance + + + + rawPermissions + + + + token + + + + 1 + receiveKeys + + + + 1 + groupMemberships + + + + ownGroupInvitationNonce + + + + OwnedIdentityDetailsPublished + Undefined + 53 + OwnedIdentityDetailsPublished + 1 + + + + + + rawServerSignatureKey + + + + OwnedDevice + Undefined + 37 + OwnedDevice + 1 + + + + + + 1 + publishedIdentityDetails + + + + ChannelCreationWithOwnedDeviceProtocolInstance + Undefined + 7 + ChannelCreationWithOwnedDeviceProtocolInstance + 1 + + + + + + uid + + + + expectedChunkLength + + + + isRevokedAsCompromised + + + + isConfirmed + + + + rawIdentity + + + + attachmentNumber + + + + attachmentLength + + + + contactIdentity + + + + YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8Q +D05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGsCwwXGB0eJiswMTQ4VSRudWxs1Q0ODxAREhMUFRZZTlNPcGVyYW5kXk5TU2VsZWN0b3JOYW1lXxAQTlNFeHByZXNzaW9uVHlwZVtOU0FyZ3VtZW50c1YkY2xhc3OAA4ACEASABoALXxAQdmFsdWVGb3JLZXlQYXRoOtMZDxEaGxxaTlNWYXJpYWJsZYAEEAKABVZzb3VyY2XSHyAhIlokY2xhc3NuYW1lWCRjbGFzc2VzXxAUTlNWYXJpYWJsZUV4cHJlc3Npb26jIyQlXxAUTlNWYXJpYWJsZUV4cHJlc3Npb25cTlNFeHByZXNzaW9uWE5TT2JqZWN00icRKCpaTlMub2JqZWN0c6EpgAeACtMRDywtLi9ZTlNLZXlQYXRogAkQCoAIXxAPZW5jb2RlZEVsZW1lbnRz0h8gMjNfEBxOU0tleVBhdGhTcGVjaWZpZXJFeHByZXNzaW9uozIkJdIfIDU2Xk5TTXV0YWJsZUFycmF5ozU3JVdOU0FycmF50h8gOTpfEBNOU0tleVBhdGhFeHByZXNzaW9upDk7JCVfEBROU0Z1bmN0aW9uRXhwcmVzc2lvbgAIABEAGgAkACkAMgA3AEkATABRAFMAYABmAHEAewCKAJ0AqQCwALIAtAC2ALgAugDNANQA3wDhAOMA5QDsAPEA/AEFARwBIAE3AUQBTQFSAV0BXwFhAWMBagF0AXYBeAF6AYwBkQGwAbQBuQHIAcwB1AHZAe8B9AAAAAAAAAIBAAAAAAAAADwAAAAAAAAAAAAAAAAAAAIL + + rawEncodedElements + + + + PendingServerQueryToPendingServerQueryMigrationPolicyV49ToV50 + PendingServerQuery + Undefined + 55 + PendingServerQuery + 1 + + + + + + rawMessageIdOwnedIdentity + + + + photoFilename + + + + rawObvGroupV2Identifier + + + + rawMessageUidFromServer + + + + rawLabel + + + + 1 + rawPublishedDetails + + + + ContactGroupDetailsTrusted + Undefined + 6 + ContactGroupDetailsTrusted + 1 + + + + + + rawMessageIdUid + + + + 1 + backups + + + + groupMembersVersion + + + + ContactGroupDetailsPublished + Undefined + 40 + ContactGroupDetailsPublished + 1 + + + + + + serializedIdentityCoreDetails + + + + 1 + ownedIdentity + + + + rawOwnedIdentity + + + + commitment + + + + rawServerURL + + + + KeyMaterial + Undefined + 5 + KeyMaterial + 1 + + + + + + downloadTimestampFromServer + + + + ReceivedMessage + Undefined + 39 + ReceivedMessage + 1 + + + + + + 1 + channelCreationWithRemoteOwnedDeviceInWaitingState + + + + InboxAttachmentSession + Undefined + 27 + InboxAttachmentSession + 1 + + + + + + rawIdentifier + + + + 1 + session + + + + IdentityServerUserData + Undefined + 9 + IdentityServerUserData + 1 + + + + + + selfRevocationTestNonce + + + + rawCategory + + + + GroupV2SignatureReceived + Undefined + 44 + GroupV2SignatureReceived + 1 + + + + + + 1 + currentDeviceIdentity + + + + initialByteCountToDownload + + + + rawOwnedIdentity + + + + rawAppType + + + + ownedIdentityIdentity + + + + cleartextChunkLength + + + + numberOfDecryptedMessagesSinceLastFullRatchetSentMessage + + + + ObvObliviousChannel + Undefined + 23 + ObvObliviousChannel + 1 + + + + + + rawRevocationType + + + + chunkNumber + + + + clientId + + + + attachmentNumber + + + + 1 + publishedDetails + + + + 1 + contactIdentities + + + + 1 + protocolInstance + + + + rawOwnedIdentity + + + + rawMessageIdUid + + + + photoServerKeyEncoded + + + + timestamp + + + + serverURL + + + + rawBlobVersionSeed + + + + InboxMessage + Undefined + 24 + InboxMessage + 1 + + + + + + wrappedKey + + + + photoFilename + + + + groupUid + + + + rawOwnedIdentity + + + + OutboxAttachmentChunk + Undefined + 16 + OutboxAttachmentChunk + 1 + + + + + + 1 + rawContactGroup + + + + signature + + + + encodedEncodedInputs + + + + rawOwnedIdentity + + + + 1 + ownedIdentity + + + + encryptedContent + + + + BackupKey + Undefined + 28 + BackupKey + 1 + + + + + + serverURL + + + \ No newline at end of file diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v49_to_v50/MigrationPolicies/PendingServerQueryToPendingServerQueryMigrationPolicyV49ToV50.swift b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v49_to_v50/MigrationPolicies/PendingServerQueryToPendingServerQueryMigrationPolicyV49ToV50.swift new file mode 100644 index 00000000..9e1ec9a8 --- /dev/null +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/Migration/v49_to_v50/MigrationPolicies/PendingServerQueryToPendingServerQueryMigrationPolicyV49ToV50.swift @@ -0,0 +1,101 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import OlvidUtils +import ObvCrypto + + +final class PendingServerQueryToPendingServerQueryMigrationPolicyV49ToV50: NSEntityMigrationPolicy, ObvErrorMaker { + + static let errorDomain = "PendingServerQuery" + static let debugPrintPrefix = "[\(errorDomain)][PendingServerQueryToPendingServerQueryMigrationPolicyV49ToV50]" + + + // Tested + override func createDestinationInstances(forSource sInstance: NSManagedObject, in mapping: NSEntityMapping, manager: NSMigrationManager) throws { + + do { + + debugPrint("\(Self.debugPrintPrefix) createDestinationInstances starts") + defer { + debugPrint("\(Self.debugPrintPrefix) createDestinationInstances ends") + } + + let dInstance = try initializeDestinationInstance(forEntityName: "PendingServerQuery", + forSource: sInstance, + in: mapping, + manager: manager, + errorDomain: Self.errorDomain) + defer { + manager.associate(sourceInstance: sInstance, withDestinationInstance: dInstance, for: mapping) + } + + // Move the old `ownedIdentity` to the new `rawOwnedIdentity` attribute. + // Doing this allows to remove the usage of the ObvCryptoIdentityTransformer (ValueTransformer). + + ValueTransformer.setValueTransformer(ObvCryptoIdentityTransformerForMigration(), forName: .obvCryptoIdentityTransformerName) + + guard let cryptoIdentity = sInstance.value(forKey: "ownedIdentity") as? ObvCryptoIdentity else { + throw ObvError.couldNotGetCryptoIdentity + } + + dInstance.setValue(cryptoIdentity.getIdentity(), forKey: "rawOwnedIdentity") + + } catch { + assertionFailure() + throw error + } + + } + + enum ObvError: Error { + case couldNotGetCryptoIdentity + } + +} + + +private final class ObvCryptoIdentityTransformerForMigration: ValueTransformer { + + override public class func transformedValueClass() -> AnyClass { + return ObvCryptoIdentity.self + } + + override public class func allowsReverseTransformation() -> Bool { + return true + } + + /// Transform an ObvIdentity into an instance of Data + override public func transformedValue(_ value: Any?) -> Any? { + guard let obvCryptoIdentity = value as? ObvCryptoIdentity else { return nil } + return obvCryptoIdentity.getIdentity() + } + + override public func reverseTransformedValue(_ value: Any?) -> Any? { + guard let data = value as? Data else { return nil } + return ObvCryptoIdentity(from: data) + } +} + +private extension NSValueTransformerName { + static let obvCryptoIdentityTransformerName = NSValueTransformerName(rawValue: "ObvCryptoIdentityTransformer") +} + diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvDatabaseManager.swift b/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvDatabaseManager.swift index 5539d54a..f2a02ca1 100644 --- a/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvDatabaseManager.swift +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvDatabaseManager.swift @@ -138,6 +138,33 @@ extension ObvDatabaseManager { } + public func performBackgroundTaskAndWaitOrThrow(file: StaticString, line: Int, function: StaticString, _ block: (NSManagedObjectContext) throws -> T) throws -> T { + try coreDataStack.performBackgroundTaskAndWaitOrThrow { (context) in + context.name = "\(file) - \(function) - Line \(line)" + assert(context.transactionAuthor != nil) + return try block(context) + } + } + + + public func performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier, file: StaticString, line: Int, function: StaticString, _ block: (ObvContext) throws -> T) throws -> T { + return try coreDataStack.performBackgroundTaskAndWaitOrThrow { context in + context.name = "\(file) - \(function) - Line \(line)" + assert(context.transactionAuthor != nil) + let obvContext = ObvContext(context: context, flowId: flowId, file: file, line: line, function: function) + let returnedValue: T + do { + returnedValue = try block(obvContext) + } catch { + obvContext.performAllEndOfScopeCompletionHAndlers() + throw error + } + obvContext.performAllEndOfScopeCompletionHAndlers() + return returnedValue + } + } + + public func debugPrintCurrentBackgroundContexts() { } } diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/.xccurrentversion b/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/.xccurrentversion index da812330..7b897cc9 100644 --- a/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/.xccurrentversion +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - ObvEngine-v48.xcdatamodel + ObvEngine-v50.xcdatamodel diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v49.xcdatamodel/contents b/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v49.xcdatamodel/contents new file mode 100644 index 00000000..57801691 --- /dev/null +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v49.xcdatamodel/contents @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v50.xcdatamodel/contents b/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v50.xcdatamodel/contents new file mode 100644 index 00000000..625c3624 --- /dev/null +++ b/Engine/ObvDatabaseManager/ObvDatabaseManager/ObvEngine.xcdatamodeld/ObvEngine-v50.xcdatamodel/contents @@ -0,0 +1,600 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Engine/ObvEncoder/ObvEncoder/Type extensions/Date+ObvCodable.swift b/Engine/ObvEncoder/ObvEncoder/Type extensions/Date+ObvCodable.swift index 3fba2847..19fdb923 100644 --- a/Engine/ObvEncoder/ObvEncoder/Type extensions/Date+ObvCodable.swift +++ b/Engine/ObvEncoder/ObvEncoder/Type extensions/Date+ObvCodable.swift @@ -19,20 +19,16 @@ import Foundation -// We keep a precision up to the microsecond extension Date: ObvCodable { public func obvEncode() -> ObvEncoded { - let precision = Double(10^6) - return Int(timeIntervalSince1970 * precision).obvEncode() + return Int(timeIntervalSince1970 * 1_000).obvEncode() } public init?(_ obvEncoded: ObvEncoded) { - let precision = Double(10^6) guard let val = Int(obvEncoded) else { return nil } - let timeIntervalSince1970 = Double(val) / precision - self = Date(timeIntervalSince1970: timeIntervalSince1970) + self = Date(timeIntervalSince1970: Double(val) / 1_000) } } diff --git a/Engine/ObvEncoder/ObvEncoder/Type extensions/String+ObvCodable.swift b/Engine/ObvEncoder/ObvEncoder/Type extensions/String+ObvCodable.swift index ed079cbb..abf0051d 100644 --- a/Engine/ObvEncoder/ObvEncoder/Type extensions/String+ObvCodable.swift +++ b/Engine/ObvEncoder/ObvEncoder/Type extensions/String+ObvCodable.swift @@ -27,7 +27,7 @@ extension String: ObvCodable { public init?(_ obvEncoded: ObvEncoded) { guard let dataRepresentation = Data(obvEncoded) else { return nil } - guard let s = String.init(data: dataRepresentation, encoding: .utf8) else { return nil } + guard let s = String.init(data: dataRepresentation, encoding: .utf8) else { assertionFailure(); return nil } self = s } diff --git a/Engine/ObvEngine/ObvEngine/Constants/ObvEngineConstants.swift b/Engine/ObvEngine/ObvEngine/Constants/ObvEngineConstants.swift index 0a09f57a..5ffc3390 100644 --- a/Engine/ObvEngine/ObvEngine/Constants/ObvEngineConstants.swift +++ b/Engine/ObvEngine/ObvEngine/Constants/ObvEngineConstants.swift @@ -23,16 +23,30 @@ import Foundation /// Notification values /// /// Possible values: -/// - 0x00 means iOS silent notification, production mode -/// - 0x03 means iOS silent notification, sandbox mode +/// - 0x00 means iOS silent notification, production mode (legacy) +/// - 0x03 means iOS silent notification, sandbox mode (legacy) /// - 0x04 means iOS notification with content, sandbox mode /// - 0x05 means iOS notification with content, production mode +/// - 0x06 means macOS notification public enum ObvEngineConstants { + #if OLVID_SERVER_DEVELOPMENT && !OLVID_SERVER_PRODUCTION - public static let remoteNotificationByteIdentifierForServer = Data([0x04]) + + #if targetEnvironment(macCatalyst) + public static let remoteNotificationByteIdentifierForServer = Data([0x06]) + #else + public static let remoteNotificationByteIdentifierForServer = Data([0x04]) + #endif + #elseif !OLVID_SERVER_DEVELOPMENT && OLVID_SERVER_PRODUCTION - public static let remoteNotificationByteIdentifierForServer = Data([0x05]) + + #if targetEnvironment(macCatalyst) + public static let remoteNotificationByteIdentifierForServer = Data([0x06]) + #else + public static let remoteNotificationByteIdentifierForServer = Data([0x05]) + #endif + #else - #error("unknown configuration") + #error("unknown configuration") #endif } diff --git a/Engine/ObvEngine/ObvEngine/EngineCoordinator.swift b/Engine/ObvEngine/ObvEngine/Coordinator/EngineCoordinator.swift similarity index 54% rename from Engine/ObvEngine/ObvEngine/EngineCoordinator.swift rename to Engine/ObvEngine/ObvEngine/Coordinator/EngineCoordinator.swift index 91e376da..cbc8b8a0 100644 --- a/Engine/ObvEngine/ObvEngine/EngineCoordinator.swift +++ b/Engine/ObvEngine/ObvEngine/Coordinator/EngineCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,29 +29,25 @@ import OlvidUtils final class EngineCoordinator { private let log: OSLog + private let logSubsystem: String private let prng: PRNGService private weak var appNotificationCenter: NotificationCenter? + private let queueForComposedOperations: OperationQueue - init(logSubsystem: String, prng: PRNGService, appNotificationCenter: NotificationCenter) { + init(logSubsystem: String, prng: PRNGService, queueForComposedOperations: OperationQueue, appNotificationCenter: NotificationCenter) { self.log = OSLog(subsystem: logSubsystem, category: "EngineCoordinator") + self.logSubsystem = logSubsystem self.prng = prng self.appNotificationCenter = appNotificationCenter + self.queueForComposedOperations = queueForComposedOperations } - private let internalQueue: OperationQueue = { - let queue = OperationQueue() - queue.maxConcurrentOperationCount = 1 - queue.qualityOfService = .default - queue.name = "EngineCoordinator internal queue" - return queue - }() - private var notificationCenterTokens = [NSObjectProtocol]() weak var delegateManager: ObvMetaManager? { didSet { if delegateManager != nil { listenToEngineNotifications() - bootstrap() + Task { [weak self] in await self?.bootstrap() } } } } @@ -61,75 +57,167 @@ final class EngineCoordinator { guard let notificationDelegate = self.delegateManager?.notificationDelegate else { assertionFailure(); return } - do { - let token = ObvChannelNotification.observeNewConfirmedObliviousChannel(within: notificationDelegate) { [weak self] (currentDeviceUid, remoteCryptoIdentity, remoteDeviceUid) in - self?.processNewConfirmedObliviousChannelNotification(currentDeviceUid: currentDeviceUid, remoteCryptoIdentity: remoteCryptoIdentity, remoteDeviceUid: remoteDeviceUid) - } - notificationCenterTokens.append(token) - } - - do { - let token = ObvIdentityNotificationNew.observeOwnedIdentityWasReactivated(within: notificationDelegate, queue: internalQueue) { [weak self] (cryptoIdentity, _) in - /* - * When a new owned identity is reactivated, we start a device discovery for all her contacts. For a new owned identity, this does nothing, - * since she does not have any contact yet. But for an owned identity that was restored by means of a backup, there might by several - * contacts already. In that case, since the backup does not restore any contact device, we want to refresh those devices. - */ - self?.startDeviceDiscoveryForAllContactsOfOwnedIdentity(cryptoIdentity) - } - notificationCenterTokens.append(token) - } + // Listenging to ObvIdentityNotificationNew notificationCenterTokens.append(contentsOf: [ - ObvNetworkFetchNotificationNew.observeServerReportedThatAnotherDeviceIsAlreadyRegistered(within: notificationDelegate, queue: internalQueue) { [weak self] (ownedCryptoIdentity, flowId) in - self?.deactivateOwnedIdentity(ownedCryptoIdentity: ownedCryptoIdentity, flowId: flowId) + ObvIdentityNotificationNew.observeOwnedIdentityWasReactivated(within: notificationDelegate) { [weak self] (ownedCryptoIdentity, flowId) in + self?.processOwnedIdentityWasReactivated(ownedCryptoIdentity: ownedCryptoIdentity, flowId: flowId) // ok }, - ObvNetworkFetchNotificationNew.observeServerReportedThatThisDeviceWasSuccessfullyRegistered(within: notificationDelegate, queue: internalQueue) { [weak self] (ownedCryptoIdentity, flowId) in - self?.reactivateOwnedIdentity(ownedCryptoIdentity: ownedCryptoIdentity, flowId: flowId) + ObvIdentityNotificationNew.observeNewActiveOwnedIdentity(within: notificationDelegate) { [weak self] (ownedCryptoIdentity, flowId) in + self?.processNewActiveOwnedIdentity(ownedCryptoIdentity: ownedCryptoIdentity, flowId: flowId) // ok }, - ObvIdentityNotificationNew.observeDeletedContactDevice(within: notificationDelegate, queue: internalQueue) { [weak self] (ownedIdentity, contactIdentity, contactDeviceUid, flowId) in - self?.deleteObliviousChannelBetweenThisDeviceAndRemoteDevice(ownedIdentity: ownedIdentity, remoteDeviceUid: contactDeviceUid, remoteIdentity: contactIdentity, flowId: flowId) + ObvIdentityNotificationNew.observeDeletedContactDevice(within: notificationDelegate) { [weak self] (ownedIdentity, contactIdentity, contactDeviceUid, flowId) in + self?.deleteObliviousChannelBetweenThisDeviceAndRemoteDevice(ownedIdentity: ownedIdentity, remoteDeviceUid: contactDeviceUid, remoteIdentity: contactIdentity, flowId: flowId) // ok }, - ObvIdentityNotificationNew.observeNewContactDevice(within: notificationDelegate) { [weak self] (ownedIdentity, contactIdentity, _, flowId) in - self?.startDeviceDiscoveryProtocolForContactIdentity(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, flowId: flowId) + ObvIdentityNotificationNew.observeNewOwnedIdentityWithinIdentityManager(within: notificationDelegate) { [weak self] cryptoIdentity in + self?.processNewOwnedIdentityWithinIdentityManager(ownedCryptoIdentity: cryptoIdentity) // ok }, - ObvNetworkFetchNotificationNew.observeNewFreeTrialAPIKeyForOwnedIdentity(within: notificationDelegate) { [weak self] (ownedIdentity, apiKey, flowId) in - self?.setAPIKeyAndResetServerSession(ownedIdentity: ownedIdentity, apiKey: apiKey, transactionIdentifier: nil, flowId: flowId) + ObvIdentityNotificationNew.observeContactIsCertifiedByOwnKeycloakStatusChanged(within: notificationDelegate) { [weak self] ownedIdentity, contactIdentity, newIsCertifiedByOwnKeycloak in + Task { [weak self] in await self?.processContactIsCertifiedByOwnKeycloakStatusChanged(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, newIsCertifiedByOwnKeycloak: newIsCertifiedByOwnKeycloak) } }, - ObvNetworkFetchNotificationNew.observeAppStoreReceiptVerificationSucceededAndSubscriptionIsValid(within: notificationDelegate) { [weak self] (ownedIdentity, transactionIdentifier, apiKey, flowId) in - self?.setAPIKeyAndResetServerSession(ownedIdentity: ownedIdentity, apiKey: apiKey, transactionIdentifier: transactionIdentifier, flowId: flowId) + ObvIdentityNotificationNew.observeContactIdentityIsNowTrusted(within: notificationDelegate) { [weak self] contactIdentity, ownedIdentity, flowId in + self?.processContactIdentityIsNowTrusted(contactIdentity: contactIdentity, ownedIdentity: ownedIdentity, flowId: flowId) }, - ObvIdentityNotificationNew.observeNewOwnedIdentityWithinIdentityManager(within: notificationDelegate) { [weak self] _ in - guard let _self = self else { return } - guard let obvEngine = _self.obvEngine else { assertionFailure(); return } - do { - try obvEngine.downloadAllUserData() - } catch { - os_log("Could not download all user data after restoring backup: %{public}@", log: _self.log, type: .fault, error.localizedDescription) - assertionFailure() - } - self?.informTheNetworkFetchManagerOfTheLatestSetOfOwnedIdentities() + ObvIdentityNotificationNew.observeNewContactDevice(within: notificationDelegate) { [weak self] (ownedIdentity, contactIdentity, contactDeviceUid, createdDuringChannelCreation, flowId) in + self?.processNewContactDevice(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, createdDuringChannelCreation: createdDuringChannelCreation, flowId: flowId) }, - ObvIdentityNotificationNew.observeContactIsCertifiedByOwnKeycloakStatusChanged(within: notificationDelegate) { [weak self] ownedIdentity, contactIdentity, newIsCertifiedByOwnKeycloak in - self?.processContactIsCertifiedByOwnKeycloakStatusChanged(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, newIsCertifiedByOwnKeycloak: newIsCertifiedByOwnKeycloak) + ObvIdentityNotificationNew.observeNewRemoteOwnedDevice(within: notificationDelegate) { [weak self] ownedCryptoId, remoteDeviceUid, createdDuringChannelCreation in + Task { [weak self] in await self?.processNewRemoteOwnedDevice(ownedCryptoId: ownedCryptoId, remoteDeviceUid: remoteDeviceUid, createdDuringChannelCreation: createdDuringChannelCreation) } }, - ObvIdentityNotificationNew.observePushTopicOfKeycloakGroupWasUpdated(within: notificationDelegate) { [weak self] ownedCryptoId in - self?.processPushTopicOfKeycloakGroupWasUpdated(ownedCryptoId: ownedCryptoId) + ObvIdentityNotificationNew.observeOwnedIdentityWasDeleted(within: notificationDelegate) { [weak self] ownedCryptoId in + self?.processOwnedIdentityWasDeleted(ownedCryptoId: ownedCryptoId) + } + ]) + + // Listenging to ObvChannelNotification + + notificationCenterTokens.append(contentsOf: [ + ObvChannelNotification.observeNewConfirmedObliviousChannel(within: notificationDelegate) { [weak self] (currentDeviceUid, remoteCryptoIdentity, remoteDeviceUid) in + self?.processNewConfirmedObliviousChannelNotification(currentDeviceUid: currentDeviceUid, remoteCryptoIdentity: remoteCryptoIdentity, remoteDeviceUid: remoteDeviceUid) // ok }, ]) + + // Listenging to ObvNetworkFetchNotificationNew + notificationCenterTokens.append(contentsOf: [ + ObvNetworkFetchNotificationNew.observeOwnedDevicesMessageReceivedViaWebsocket(within: notificationDelegate) { [weak self] ownedCryptoIdentity in + self?.processOwnedDevicesMessageReceivedViaWebsocket(ownedIdentity: ownedCryptoIdentity) + }, + ]) + } } extension EngineCoordinator { - private func bootstrap() { + private func bootstrap() async { let flowId = FlowIdentifier() deleteObsoleteObliviousChannels(flowId: flowId) - startDeviceDiscoveryProtocolForContactsHavingNoDeviceOrTooManyDevices(flowId: flowId) - startChannelCreationProtocolWithContactDevicesHavingNoChannelAndNoOngoingChannelCreationProtocol(flowId: flowId) + await deleteContactDevicesWithNoChannelAndNoChannelCreationThenPerformAppropriateDeviceDiscoveries(flowId: flowId) + startDeviceDiscoveryProtocolForContactsHavingNoDevice(flowId: flowId) pruneObsoletePersistedEngineDialogs(flowId: flowId) + await sendTargetedPingMessageForKeycloakGroupV2ProtocolWhereContactIsPending(flowId: flowId) + } + + + private func sendTargetedPingMessageForKeycloakGroupV2ProtocolWhereContactIsPending(flowId: FlowIdentifier) async { + do { + + guard let delegateManager else { assertionFailure(); throw ObvError.delegateManagerIsNotSet } + guard let identityDelegate = delegateManager.identityDelegate else { assertionFailure(); throw ObvError.theIdentityDelegateIsNotSet } + guard let channelDelegate = delegateManager.channelDelegate else { assertionFailure(); return } + guard let protocolDelegate = delegateManager.protocolDelegate else { assertionFailure(); return } + + let keycloakPendingContactMembersForOwnedIdentity = try await getAllKeycloakContactsThatArePendingInSomeKeycloakGroup(flowId: flowId) + + let contactIdentifiers = Set(keycloakPendingContactMembersForOwnedIdentity.flatMap { (ownedCryptoId, pendingContactsCryptoIds) in + pendingContactsCryptoIds.map { pendingContact in + return ObvContactIdentifier(contactCryptoId: ObvCryptoId(cryptoIdentity: pendingContact), ownedCryptoId: ObvCryptoId(cryptoIdentity: ownedCryptoId)) + } + }) + + guard !contactIdentifiers.isEmpty else { return } + + let op1 = SendTargetedPingMessageForKeycloakGroupV2ProtocolWhereContactIsPendingMemberOperation( + identityDelegate: identityDelegate, + channelDelegate: channelDelegate, + protocolDelegate: protocolDelegate, + prng: prng, + contactIdentifiers: contactIdentifiers, + logSubsystem: logSubsystem) + + do { + let composedOp = try createCompositionOfOneContextualOperation(op1: op1) + try await protocolDelegate.executeOnQueueForProtocolOperations(operation: composedOp) + os_log("Successful pinged keycloak contacts in group where they are pending", log: log, type: .info) + } catch { + assertionFailure(error.localizedDescription) + os_log("Failed to ping keycloak contacts in group where they are pending: %{public}@", log: log, type: .fault, error.localizedDescription) + } + + } catch { + assertionFailure(error.localizedDescription) + } + } + + + private func getAllKeycloakContactsThatArePendingInSomeKeycloakGroup(flowId: FlowIdentifier) async throws -> [ObvCryptoIdentity: Set] { + + guard let delegateManager else { assertionFailure(); throw ObvError.delegateManagerIsNotSet } + guard let identityDelegate = delegateManager.identityDelegate else { assertionFailure(); throw ObvError.theIdentityDelegateIsNotSet } + guard let createContextDelegate = delegateManager.createContextDelegate else { assertionFailure(); throw ObvError.theCreateContextDelegateIsNotSet } + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<[ObvCryptoIdentity: Set], Error>) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + let result = try identityDelegate.getAllKeycloakContactsThatArePendingInSomeKeycloakGroup(within: obvContext) + continuation.resume(returning: result) + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + /// This operation deletes all devices found within the identity manager if they have no associated channel and no oingoing channel creation protocol with the current device. For each (owned or contact) identity corresponding to a deleted device, we start a device discovery. + private func deleteContactDevicesWithNoChannelAndNoChannelCreationThenPerformAppropriateDeviceDiscoveries(flowId: FlowIdentifier) async { + + do { + + guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } + guard let channelDelegate = delegateManager?.channelDelegate else { assertionFailure(); return } + guard let protocolDelegate = delegateManager?.protocolDelegate else { assertionFailure(); return } + + let op1 = DeleteContactDevicesWithNoChannelAndNoChannelCreationThenPerformAppropriateDeviceDiscoveriesOperation( + identityDelegate: identityDelegate, + channelDelegate: channelDelegate, + protocolDelegate: protocolDelegate, + prng: prng) + + let composedOp = try createCompositionOfOneContextualOperation(op1: op1) + + try await protocolDelegate.executeOnQueueForProtocolOperations(operation: composedOp) + + } catch { + assertionFailure(error.localizedDescription) + os_log("Failed to deactivate owned identity: %{public}@", log: log, type: .fault, error.localizedDescription) + } + + } + + + private func processNewOwnedIdentityWithinIdentityManager(ownedCryptoIdentity: ObvCryptoIdentity) { + guard let obvEngine else { assertionFailure(); return } + do { + try obvEngine.downloadAllUserData() + } catch { + os_log("Could not download all user data after restoring backup: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + } + informTheNetworkFetchManagerOfTheLatestSetOfOwnedIdentities() } @@ -161,7 +249,8 @@ extension EngineCoordinator { /// When we delete a contact device, we normaly catch a notification allowing to delete all associated oblivious channels, but this is not atomic. - /// This method scans all Olbivious channels an makes sure that there is still an associated device within the identity manager. + /// This method scans all Oblivious channels an makes sure that there is still an associated device within the identity manager. + /// If not, we delete the channel. private func deleteObsoleteObliviousChannels(flowId: FlowIdentifier) { guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } @@ -297,6 +386,8 @@ extension EngineCoordinator { // If we reach this point, we can start a channel creation protocol + os_log("🛟 [%{public}@] Since no channel exists with a device of the contact, and there is no ongoing channel creation, we start a channel creation now", log: log, type: .info, contact.debugDescription) + let msg: ObvChannelProtocolMessageToSend do { msg = try protocolDelegate.getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ownedIdentity, andTheDeviceUid: device, ofTheContactIdentity: contact) @@ -307,7 +398,7 @@ extension EngineCoordinator { } do { - _ = try channelDelegate.post(msg, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(msg, randomizedWith: prng, within: obvContext) } catch { os_log("Could not start channel creation protocol with contact device", log: log, type: .fault) assertionFailure() @@ -331,8 +422,101 @@ extension EngineCoordinator { } - /// Check whether each contact has one, and only one device. If not, perform a device discovery protocol - private func startDeviceDiscoveryProtocolForContactsHavingNoDeviceOrTooManyDevices(flowId: FlowIdentifier) { + + /// Ask for all other owned devices then check if a channel exists with that device. If not, check whether there is an ongoing channel creation protocol. If not, launch one. + private func startChannelCreationProtocolWithOtherOwnedDevicesHavingNoChannelAndNoOngoingChannelCreationProtocol(flowId: FlowIdentifier) { + + guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } + guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } + guard let protocolDelegate = delegateManager?.protocolDelegate else { assertionFailure(); return } + guard let channelDelegate = delegateManager?.channelDelegate else { assertionFailure(); return } + + createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in + + guard let ownedIdentities = try? identityDelegate.getOwnedIdentities(within: obvContext) else { + os_log("Could not get owned identities", log: log, type: .fault) + assertionFailure() + return + } + + let channelCreationProtocols: Set + do { + channelCreationProtocols = try protocolDelegate.getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithOwnedDeviceProtocolInstances(within: obvContext) + } catch { + os_log("Could not get the list of ongoing channel creations protocols", log: log, type: .fault) + assertionFailure() + return + } + + for ownedIdentity in ownedIdentities { + + let otherOwnedDevices: Set + let currentDeviceUid: UID + do { + otherOwnedDevices = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + } catch { + os_log("Could not get owned devices or current device uid", log: log, type: .fault) + assertionFailure() + continue + } + + + for otherOwnedDevice in otherOwnedDevices { + + let channelExists: Bool + do { + channelExists = try channelDelegate.anObliviousChannelExistsBetweenCurrentDeviceUid(currentDeviceUid, andRemoteDeviceUid: otherOwnedDevice, of: ownedIdentity, within: obvContext) + } catch { + os_log("Could not query de channel manager", log: log, type: .fault) + assertionFailure() + continue + } + + if channelExists { continue } + + // If we reach this point, we have no channel with the remote owned device. + // We check whether there is a channel creation protocol already handling this situation. + + let channelCreationToFind = ObliviousChannelIdentifierAlt(ownedCryptoIdentity: ownedIdentity, remoteCryptoIdentity: ownedIdentity, remoteDeviceUid: otherOwnedDevice) + if channelCreationProtocols.contains(channelCreationToFind) { continue } + + // If we reach this point, we can start a channel creation protocol + + let msg: ObvChannelProtocolMessageToSend + do { + msg = try protocolDelegate.getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ownedIdentity, remoteDeviceUid: otherOwnedDevice) + } catch { + os_log("Could not get initial message for starting a channel creation with owned device", log: log, type: .fault) + assertionFailure() + continue + } + + do { + _ = try channelDelegate.postChannelMessage(msg, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not start channel creation protocol with owned device", log: log, type: .fault) + assertionFailure() + continue + } + + } + + } + + do { + try obvContext.save(logOnFailure: log) + } catch { + os_log("Could not perform startChannelCreationProtocolWithOtherOwnedDevicesHavingNoChannelAndNoOngoingChannelCreationProtocol: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + } + + } + + } + + /// Check whether each contact has at least one device. If not, perform a device discovery protocol. + private func startDeviceDiscoveryProtocolForContactsHavingNoDevice(flowId: FlowIdentifier) { guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } @@ -349,33 +533,42 @@ extension EngineCoordinator { for ownedIdentity in ownedIdentities { - let contacts: Set + let contactsWithoutDevice: Set do { - contacts = try identityDelegate.getContactsOfOwnedIdentity(ownedIdentity, within: obvContext) + contactsWithoutDevice = try identityDelegate.getContactsWithNoDeviceOfOwnedIdentity(ownedIdentity, within: obvContext) } catch { os_log("Could not get contacts", log: log, type: .fault) assertionFailure() continue } - for contact in contacts { + for contactWithoutDevice in contactsWithoutDevice { - let contactDevices: Set + let dateOfLastBootstrappedContactDeviceDiscovery: Date do { - contactDevices = try identityDelegate.getDeviceUidsOfContactIdentity(contact, ofOwnedIdentity: ownedIdentity, within: obvContext) + dateOfLastBootstrappedContactDeviceDiscovery = try identityDelegate.getDateOfLastBootstrappedContactDeviceDiscovery(forContactCryptoId: contactWithoutDevice, ofOwnedCryptoId: ownedIdentity, within: obvContext) } catch { - os_log("Could not get contact devices", log: log, type: .fault) + os_log("Could get date of last boostrapped contact device discovery", log: log, type: .fault) assertionFailure() continue } - - if contactDevices.count == 1 { continue } - // If we reach this point, the contact has either no device, or "too many" devices - + guard abs(dateOfLastBootstrappedContactDeviceDiscovery.timeIntervalSinceNow) > TimeInterval(days: 3) else { + // We do not want to perform a bootstrapped contact discovery to often + continue + } + + do { + try identityDelegate.setDateOfLastBootstrappedContactDeviceDiscovery(forContactCryptoId: contactWithoutDevice, ofOwnedCryptoId: ownedIdentity, to: Date(), within: obvContext) + } catch { + os_log("Could not set date of last boostrapped contact device discovery", log: log, type: .fault) + assertionFailure() + // Continue anyway + } + let msg: ObvChannelProtocolMessageToSend do { - msg = try protocolDelegate.getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ownedIdentity, contactIdentity: contact) + msg = try protocolDelegate.getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ownedIdentity, contactIdentity: contactWithoutDevice) } catch { os_log("Could get message for device discovery protocol", log: log, type: .fault) assertionFailure() @@ -383,7 +576,7 @@ extension EngineCoordinator { } do { - _ = try channelDelegate.post(msg, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(msg, randomizedWith: prng, within: obvContext) } catch { os_log("Could not start device discovery protocol for a contact", log: log, type: .fault) assertionFailure() @@ -392,7 +585,6 @@ extension EngineCoordinator { } - } do { @@ -412,128 +604,179 @@ extension EngineCoordinator { extension EngineCoordinator { - + /// When the `isCertifiedByOwnKeycloak` changes from `false` to `true`, we want to send a "ping" to her - private func processContactIsCertifiedByOwnKeycloakStatusChanged(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, newIsCertifiedByOwnKeycloak: Bool) { + private func processContactIsCertifiedByOwnKeycloakStatusChanged(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, newIsCertifiedByOwnKeycloak: Bool) async { guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } - guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } guard let protocolDelegate = delegateManager?.protocolDelegate else { assertionFailure(); return } guard let channelDelegate = delegateManager?.channelDelegate else { assertionFailure(); return } guard newIsCertifiedByOwnKeycloak else { return } - let flowId = FlowIdentifier() - let prng = self.prng - createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in - - do { - let groupIdentifiers = try identityDelegate.getIdentifiersOfAllKeycloakGroupsWhereContactIsPending(ownedCryptoId: ownedIdentity, contactCryptoId: contactIdentity, within: obvContext) - - try groupIdentifiers.forEach { groupIdentifier in - let msg = try protocolDelegate.getInitiateTargetedPingMessageForKeycloakGroupV2Protocol(ownedIdentity: ownedIdentity, groupIdentifier: groupIdentifier, pendingMemberIdentity: contactIdentity, flowId: flowId) - _ = try channelDelegate.post(msg, randomizedWith: prng, within: obvContext) - } - - } catch { - assertionFailure(error.localizedDescription) - os_log("Could not ping contact in keycloak groups where she is pending", log: self.log, type: .fault) - } - + let contactIdentifier = ObvContactIdentifier(contactCryptoId: ObvCryptoId(cryptoIdentity: contactIdentity), ownedCryptoId: ObvCryptoId(cryptoIdentity: ownedIdentity)) + + let op1 = SendTargetedPingMessageForKeycloakGroupV2ProtocolWhereContactIsPendingMemberOperation( + identityDelegate: identityDelegate, + channelDelegate: channelDelegate, + protocolDelegate: protocolDelegate, + prng: prng, + contactIdentifiers: Set([contactIdentifier]), + logSubsystem: logSubsystem) + + do { + let composedOp = try createCompositionOfOneContextualOperation(op1: op1) + try await protocolDelegate.executeOnQueueForProtocolOperations(operation: composedOp) + os_log("Successful pinged keycloak contact in group where she is pending", log: log, type: .info) + } catch { + assertionFailure(error.localizedDescription) + os_log("Failed to ping keycloak contact in group where she is pending: %{public}@", log: log, type: .fault, error.localizedDescription) } + } - - /// When a the push topic of a keycloak group is created/updated, we want to re-register to push notification to make sure we inform the server we are interested by this new push topic. - private func processPushTopicOfKeycloakGroupWasUpdated(ownedCryptoId: ObvCryptoIdentity) { + + /// Almost all the owned identity deletion work is performed in the OwnedIdentityDeletionProtocol (including deleting messages from the Inbox/Outbox). + /// Here, we simply clean the PersistedEngineDialog database. + private func processOwnedIdentityWasDeleted(ownedCryptoId: ObvCryptoIdentity) { + guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } - guard let networkFetchDelegate = delegateManager?.networkFetchDelegate else { assertionFailure(); return } - guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } - let flowId = FlowIdentifier() - debugPrint("🏁 \(flowId.debugDescription.prefix(5)) processPushTopicOfKeycloakGroupWasUpdated") + guard let appNotificationCenter = self.appNotificationCenter else { return } + let log = self.log - createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in - do { - let pushTopics = try identityDelegate.getKeycloakPushTopics(ownedCryptoIdentity: ownedCryptoId, within: obvContext) - if let pushNotification = try networkFetchDelegate.getServerPushNotification(ownedCryptoId: ownedCryptoId, within: obvContext) { - let newPushNotification = pushNotification.withUpdatedKeycloakPushTopics(pushTopics) - networkFetchDelegate.registerPushNotification(newPushNotification, flowId: obvContext.flowId) - } - } catch { - assertionFailure(error.localizedDescription) - os_log("Could not register to push notifications: %{public}@", log: log, type: .fault, error.localizedDescription) + + createContextDelegate.performBackgroundTask(flowId: FlowIdentifier()) { obvContext in + + guard let obvDialogs = try? PersistedEngineDialog.getAll(appNotificationCenter: appNotificationCenter, within: obvContext) else { assertionFailure(); return } + for obvDialog in obvDialogs { + guard obvDialog.obvDialog?.ownedCryptoId == ObvCryptoId(cryptoIdentity: ownedCryptoId) else { continue } + try? obvDialog.delete() } + try? obvContext.save(logOnFailure: log) + } + } - private func informTheNetworkFetchManagerOfTheLatestSetOfOwnedIdentities() { - + + /// When a new remote owned device is inserted, we immediately try to create an oblivious channel between the current device of the owned identity and this other remote owned device, but only if the remote device was *not* inserted during an existing channel creation. + /// We also perform an owned device discovery. + /// See also ``ObvEngine.processNewRemoteOwnedDevice(ownedCryptoId:remoteDeviceUid:)`` where we notify the app. + private func processNewRemoteOwnedDevice(ownedCryptoId: ObvCryptoIdentity, remoteDeviceUid: UID, createdDuringChannelCreation: Bool) async { + guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } - guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } - guard let networkFetchDelegate = delegateManager?.networkFetchDelegate else { assertionFailure(); return } + guard let protocolDelegate = delegateManager?.protocolDelegate else { assertionFailure(); return } + guard let channelDelegate = delegateManager?.channelDelegate else { assertionFailure(); return } + + // Perform a channel creation with the new remote owned device, if appropriate - let flowId = FlowIdentifier() - var _ownedIdentities: Set? - createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { obvContext in - _ownedIdentities = try? identityDelegate.getOwnedIdentities(within: obvContext) + if !createdDuringChannelCreation { + + let msg: ObvChannelProtocolMessageToSend + do { + msg = try protocolDelegate.getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ownedCryptoId, remoteDeviceUid: remoteDeviceUid) + } catch { + os_log("Could get initial message for starting channel creation with owned device protocol", log: log, type: .fault) + assertionFailure() + return + } + + let flowId = FlowIdentifier() + let prng = self.prng + let log = self.log + + createContextDelegate.performBackgroundTask(flowId: flowId) { (obvContext) in + + do { + _ = try channelDelegate.postChannelMessage(msg, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not start channel creation with owned device protocol", log: log, type: .fault) + assertionFailure() + return + } + + do { + try obvContext.save(logOnFailure: log) + } catch { + os_log("Could not perform processNewRemoteOwnedDevice: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + } + + } + } - guard let ownedIdentities = _ownedIdentities else { - os_log("Could not get set of all owned identities", log: log, type: .fault) - assertionFailure() - return + + // Perform an owned device discovery + + do { + assert(obvEngine != nil) + try await obvEngine?.performOwnedDeviceDiscovery(ownedCryptoId: ObvCryptoId(cryptoIdentity: ownedCryptoId)) + } catch { + assertionFailure(error.localizedDescription) // In production, continue anyway } - networkFetchDelegate.updatedListOfOwnedIdentites(ownedIdentities: ownedIdentities, flowId: flowId) + } - /// This happens when the user requested, and received, a new free trial API Key, or when an AppStore receipt was successfully verified by our server. - /// In that case, we set this key within the identity manager and reset the network session. We know - /// that this will trigger the creation of a new session. This, in turn, will lead to a notification containing new API Key elements. - /// In the case we received the new API key thanks to an AppStore purchase, the transactionIdentifier will be set and we notify in case of success/failure - private func setAPIKeyAndResetServerSession(ownedIdentity: ObvCryptoIdentity, apiKey: UUID, transactionIdentifier: String?, flowId: FlowIdentifier) { + /// When a contact becomes trusted, we start a contact device discovery protocol to found out about all her devices. + private func processContactIdentityIsNowTrusted(contactIdentity: ObvCryptoIdentity, ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { + startDeviceDiscoveryProtocolForContactIdentity(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, flowId: flowId) + } + + + /// When a new contact device is inserted, we immediately try to create an oblivious channel between the current device of the owned identity and this contact device, but only if the contact device was *not* inserted during an existing channel creation. + /// We also perform an contact device discovery. + /// See also ``ObvEngine.processNewRemoteOwnedDevice(ownedCryptoId:remoteDeviceUid:)`` where we notify the app. + private func processNewContactDevice(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUid: UID, createdDuringChannelCreation: Bool, flowId: FlowIdentifier) { guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } - guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } - guard let networkFetchDelegate = delegateManager?.networkFetchDelegate else { assertionFailure(); return } - guard let appNotificationCenter = self.appNotificationCenter else { return } + guard let protocolDelegate = delegateManager?.protocolDelegate else { assertionFailure(); return } + guard let channelDelegate = delegateManager?.channelDelegate else { assertionFailure(); return } - let log = self.log + // Perform a channel creation with the new remote owned device, if appropriate - let ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedIdentity) + if !createdDuringChannelCreation { + + os_log("🛟 [%{public}@] Since the contact has a new device (not added as the result of a channel creation), we start a channel creation now", log: log, type: .info, contactIdentity.debugDescription) - let randomFlowId = FlowIdentifier() - createContextDelegate.performBackgroundTask(flowId: randomFlowId) { (obvContext) in - do { - try identityDelegate.setAPIKey(apiKey, forOwnedIdentity: ownedIdentity, keycloakServerURL: nil, within: obvContext) - try networkFetchDelegate.resetServerSession(for: ownedIdentity, within: obvContext) - } catch { - os_log("Could not set new API Key / reset user's server session: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - if let transactionIdentifier = transactionIdentifier { - ObvEngineNotificationNew.appStoreReceiptVerificationFailed(ownedIdentity: ownedCryptoId, transactionIdentifier: transactionIdentifier) - .postOnBackgroundQueue(within: appNotificationCenter) - } - return - } + let msg: ObvChannelProtocolMessageToSend do { - try obvContext.save(logOnFailure: log) + msg = try protocolDelegate.getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ownedIdentity, andTheDeviceUid: contactDeviceUid, ofTheContactIdentity: contactIdentity) } catch { - os_log("Could not set API Key: %{public}@", log: log, type: .fault, error.localizedDescription) + os_log("Could get initial message for starting channel creation with contact device protocol", log: log, type: .fault) assertionFailure() - if let transactionIdentifier = transactionIdentifier { - ObvEngineNotificationNew.appStoreReceiptVerificationFailed(ownedIdentity: ownedCryptoId, transactionIdentifier: transactionIdentifier) - .postOnBackgroundQueue(within: appNotificationCenter) - } return } - if let transactionIdentifier = transactionIdentifier { - ObvEngineNotificationNew.appStoreReceiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ownedCryptoId, transactionIdentifier: transactionIdentifier) - .postOnBackgroundQueue(within: appNotificationCenter) + let flowId = FlowIdentifier() + let prng = self.prng + let log = self.log + + createContextDelegate.performBackgroundTask(flowId: flowId) { (obvContext) in + + do { + _ = try channelDelegate.postChannelMessage(msg, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not start channel creation with contact device protocol", log: log, type: .fault) + assertionFailure() + return + } + + do { + try obvContext.save(logOnFailure: log) + } catch { + os_log("Could not perform channel creation with contact device protocol: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + } + } } + // Perform an contact device discovery + + startDeviceDiscoveryProtocolForContactIdentity(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, flowId: flowId) + } @@ -559,7 +802,7 @@ extension EngineCoordinator { let msg: ObvChannelProtocolMessageToSend do { - msg = try protocolDelegate.getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity) + msg = try protocolDelegate.getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity) } catch { os_log("Could get initial message for starting contact device discovery protocol", log: log, type: .fault) assertionFailure() @@ -567,7 +810,7 @@ extension EngineCoordinator { } do { - _ = try channelDelegate.post(msg, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(msg, randomizedWith: prng, within: obvContext) } catch { os_log("Could not start contact device discovery protocol", log: log, type: .fault) assertionFailure() @@ -584,15 +827,91 @@ extension EngineCoordinator { } } + + private func informTheNetworkFetchManagerOfTheLatestSetOfOwnedIdentities() { + + guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } + guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } + guard let networkFetchDelegate = delegateManager?.networkFetchDelegate else { assertionFailure(); return } + + let flowId = FlowIdentifier() + var _ownedIdentities: Set? + createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { obvContext in + _ownedIdentities = try? identityDelegate.getOwnedIdentities(within: obvContext) + } + guard let ownedIdentities = _ownedIdentities else { + os_log("Could not get set of all owned identities", log: log, type: .fault) + assertionFailure() + return + } + networkFetchDelegate.updatedListOfOwnedIdentites(ownedIdentities: ownedIdentities, flowId: flowId) + } + + + /// This happens when the user requested, and received, a new free trial API Key, or when an AppStore receipt was successfully verified by our server. + /// In that case, we set this key within the identity manager and reset the network session. We know + /// that this will trigger the creation of a new session. This, in turn, will lead to a notification containing new API Key elements. + /// In the case we received the new API key thanks to an AppStore purchase, the transactionIdentifier will be set and we notify in case of success/failure +// private func setAPIKeyAndResetServerSession(ownedIdentity: ObvCryptoIdentity, apiKey: UUID, transactionIdentifier: String?, flowId: FlowIdentifier) async { +// +// guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } +// guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } +// guard let networkFetchDelegate = delegateManager?.networkFetchDelegate else { assertionFailure(); return } +// guard let appNotificationCenter = self.appNotificationCenter else { assertionFailure(); return } +// guard let obvEngine else { assertionFailure(); return } +// +// let log = self.log +// let ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedIdentity) +// +// do { +// try await obvEngine.setAPIKeyWithinIdentityManager(ownedCryptoIdentity: ownedIdentity, apiKey: apiKey, keycloakServerURL: nil, flowId: flowId) +// _ = try await networkFetchDelegate.refreshAPIPermissions(of: ownedIdentity, flowId: flowId) +// } catch { +// os_log("Could not set API Key: %{public}@", log: log, type: .fault, error.localizedDescription) +// if let transactionIdentifier = transactionIdentifier { +// ObvEngineNotificationNew.appStoreReceiptVerificationFailed(ownedIdentity: ownedCryptoId, transactionIdentifier: transactionIdentifier) +// .postOnBackgroundQueue(within: appNotificationCenter) +// } +// return +// } +// +// if let transactionIdentifier = transactionIdentifier { +// ObvEngineNotificationNew.appStoreReceiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ownedCryptoId, transactionIdentifier: transactionIdentifier) +// .postOnBackgroundQueue(within: appNotificationCenter) +// } +// +// } + + + /// When receiving an `OwnedDevicesMessage` on the websocket, we perform an owned device discovery + private func processOwnedDevicesMessageReceivedViaWebsocket(ownedIdentity: ObvCryptoIdentity) { + + startOwnedDeviceDiscoveryProtocol(ownedIdentity) + + // Note that the NotificationSend sends a serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications notification, + // so that we will also re-register to push notifications. + + } + private func deleteObliviousChannelBetweenThisDeviceAndRemoteDevice(ownedIdentity: ObvCryptoIdentity, remoteDeviceUid: UID, remoteIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } guard let channelDelegate = delegateManager?.channelDelegate else { assertionFailure(); return } - + guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } + createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in + // Make sure the owned identity still exists, as this method gets called also when an owned identity was deleted + + do { + guard try identityDelegate.isOwned(ownedIdentity, within: obvContext) else { return } + } catch { + os_log("Could not check if the identity is owned. This is typically the case while deleting a owned identity.", log: log, type: .info) + return + } + do { try channelDelegate.deleteObliviousChannelBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andTheRemoteDeviceWithUid: remoteDeviceUid, ofRemoteIdentity: remoteIdentity, within: obvContext) } catch { @@ -612,57 +931,27 @@ extension EngineCoordinator { } - - private func deactivateOwnedIdentity(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - - guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } - guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } - - let log = self.log - - createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - - do { - try identityDelegate.deactivateOwnedIdentity(ownedIdentity: ownedCryptoIdentity, within: obvContext) - try obvContext.save(logOnFailure: log) - } catch let error { - os_log("Could not deactivate owned identity: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - - os_log("The owned identity %{public}@ was deactivated", log: log, type: .info, ownedCryptoIdentity.debugDescription) - - } - + + /// When a new owned identity is reactivated, we start a device discovery for all her contacts and for all her other owned devices. + /// We also start a channel creation protocol between the current device and other (contact and owned) devices, if no channel already exists, + /// and if no such protocol already exists. + /// + /// For a new owned identity, this does nothing, since she does not have any contact yet. + /// But for an owned identity that was restored by means of a backup, there might by several + /// contacts already. In that case, since the backup does not restore any contact device, we want to refresh those devices. + private func processOwnedIdentityWasReactivated(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { + startOwnedDeviceDiscoveryProtocol(ownedCryptoIdentity) + startDeviceDiscoveryForAllContactsOfOwnedIdentity(ownedCryptoIdentity) + startChannelCreationProtocolWithContactDevicesHavingNoChannelAndNoOngoingChannelCreationProtocol(flowId: flowId) + startChannelCreationProtocolWithOtherOwnedDevicesHavingNoChannelAndNoOngoingChannelCreationProtocol(flowId: flowId) } - private func reactivateOwnedIdentity(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - - guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } - guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } - - let log = self.log - - createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - - do { - // We first make sure the owned identity stil exist before trying to reactivate it - guard try identityDelegate.isOwned(ownedCryptoIdentity, within: obvContext) else { return } - try identityDelegate.reactivateOwnedIdentity(ownedIdentity: ownedCryptoIdentity, within: obvContext) - try obvContext.save(logOnFailure: log) - } catch let error { - os_log("Could not reactivate owned identity: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - - os_log("The owned identity %{public}@ was reactivated", log: log, type: .info, ownedCryptoIdentity.debugDescription) - - } - + /// When a new identity is created in an active state, we do the exact same things than when an identity is reactivated. + func processNewActiveOwnedIdentity(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { + processOwnedIdentityWasReactivated(ownedCryptoIdentity: ownedCryptoIdentity, flowId: flowId) } - + private func startDeviceDiscoveryForAllContactsOfOwnedIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity) { @@ -689,14 +978,14 @@ extension EngineCoordinator { let message: ObvChannelProtocolMessageToSend do { - message = try protocolDelegate.getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ownedCryptoIdentity, contactIdentity: contact) + message = try protocolDelegate.getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ownedCryptoIdentity, contactIdentity: contact) } catch { os_log("Could not get initial message for device discovery for contact identity protocol", log: log, type: .fault) continue } do { - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post a local protocol message allowing to start a device discovery for a contact", log: log, type: .fault) continue @@ -714,6 +1003,56 @@ extension EngineCoordinator { } + private func startOwnedDeviceDiscoveryProtocol(_ ownedCryptoIdentity: ObvCryptoIdentity) { + + guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); return } + guard let protocolDelegate = delegateManager?.protocolDelegate else { assertionFailure(); return } + guard let channelDelegate = delegateManager?.channelDelegate else { assertionFailure(); return } + guard let identityDelegate = delegateManager?.identityDelegate else { assertionFailure(); return } + + let prng = self.prng + let log = self.log + + createContextDelegate.performBackgroundTask(flowId: FlowIdentifier()) { (obvContext) in + + do { + guard try identityDelegate.isOwned(ownedCryptoIdentity, within: obvContext) else { + os_log("We do not start an owned discovery protocol for an owned identity that does not exist", log: log, type: .fault) + return + } + } catch { + assertionFailure(error.localizedDescription) + return + } + + let message: ObvChannelProtocolMessageToSend + do { + message = try protocolDelegate.getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ownedCryptoIdentity) + } catch { + os_log("Could not get initial message for owned device discovery protocol", log: log, type: .fault) + assertionFailure(error.localizedDescription) + return + } + + do { + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not post a local protocol message allowing to start an owned device discovery", log: log, type: .fault) + assertionFailure(error.localizedDescription) + return + } + + do { + try obvContext.save(logOnFailure: log) + } catch let error { + os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) + } + + } + + } + + private func processNewConfirmedObliviousChannelNotification(currentDeviceUid: UID, remoteCryptoIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) { /* When a new confirmed channel is created with a remote crypto identity, we send to her all the information we have about @@ -759,25 +1098,16 @@ extension EngineCoordinator { guard let _self = self else { return } guard let ownedCryptoIdentity = try? identityDelegate.getOwnedIdentityOfCurrentDeviceUid(currentDeviceUid, within: obvContext) else { - os_log("The device uid does not correspond to any owned identity", log: _self.log, type: .fault) + os_log("The device uid does not correspond to any owned identity (1)", log: _self.log, type: .fault) return } - guard (try? identityDelegate.isIdentity(remoteCryptoIdentity, aContactIdentityOfTheOwnedIdentity: ownedCryptoIdentity, within: obvContext)) == true else { - return - } - - guard (try? identityDelegate.isContactIdentityActive(ownedIdentity: ownedCryptoIdentity, contactIdentity: remoteCryptoIdentity, within: obvContext)) == true else { - os_log("Asking for the latest group members of groups owned by an inactive identity", log: _self.log, type: .fault) - return - } - do { let message = try protocolDelegate.getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ownedCryptoIdentity, - contactIdentity: remoteCryptoIdentity, - contactDeviceUID: remoteDeviceUid, + remoteIdentity: remoteCryptoIdentity, + remoteDeviceUID: remoteDeviceUid, flowId: flowId) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } catch { os_log("We failed to initiate a batch keys resend following a new confirmed channel with a contact: %{public}@", log: _self.log, type: .fault, error.localizedDescription) @@ -804,7 +1134,7 @@ extension EngineCoordinator { guard let _self = self else { return } guard let ownedCryptoIdentity = try? identityDelegate.getOwnedIdentityOfCurrentDeviceUid(currentDeviceUid, within: obvContext) else { - os_log("The device uid does not correspond to any owned identity", log: _self.log, type: .fault) + os_log("The device uid does not correspond to any owned identity (2)", log: _self.log, type: .fault) return } @@ -832,7 +1162,7 @@ extension EngineCoordinator { ownedIdentity: ownedCryptoIdentity, groupOwner: remoteCryptoIdentity, within: obvContext) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) } catch let error { os_log("Could not ask for the latest group members of a group we joined with the identity whith whom we just created a channel: %{public}@", log: log, type: .fault, error.localizedDescription) assertionFailure() @@ -872,7 +1202,7 @@ extension EngineCoordinator { guard let _self = self else { return } guard let ownedCryptoIdentity = try? identityDelegate.getOwnedIdentityOfCurrentDeviceUid(currentDeviceUid, within: obvContext) else { - os_log("The device uid does not correspond to any owned identity", log: _self.log, type: .fault) + os_log("The device uid does not correspond to any owned identity (3)", log: _self.log, type: .fault) return } @@ -900,7 +1230,7 @@ extension EngineCoordinator { ownedIdentity: ownedCryptoIdentity, memberIdentity: remoteCryptoIdentity, within: obvContext) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) } catch let error { os_log("Could not trigger a reinvite and update members of a group owned for a contact with whom we just created a channel: %{public}@", log: log, type: .fault, error.localizedDescription) assertionFailure() @@ -925,3 +1255,53 @@ extension EngineCoordinator { } } + + +// MARK: - Possible errors + +extension EngineCoordinator { + + enum ObvError: Error { + + case theCreateContextDelegateIsNotSet + case theChannelDelegateIsNotSet + case theIdentityDelegateIsNotSet + case theProtocolDelegateIsNotSet + case delegateManagerIsNotSet + + var localizedDescription: String { + switch self { + case .theCreateContextDelegateIsNotSet: + return "The create context delegate is not set" + case .theChannelDelegateIsNotSet: + return "The channel delegate is not set" + case .theIdentityDelegateIsNotSet: + return "The identity delegate is not set" + case .theProtocolDelegateIsNotSet: + return "The protocol delegate is not set" + case .delegateManagerIsNotSet: + return "The delegate manager is not set" + } + } + + } + +} + + +// MARK: - Helpers for operations + +extension EngineCoordinator { + + private func createCompositionOfOneContextualOperation(op1: ContextualOperationWithSpecificReasonForCancel) throws -> CompositionOfOneContextualOperation { + guard let createContextDelegate = delegateManager?.createContextDelegate else { assertionFailure(); throw ObvError.theCreateContextDelegateIsNotSet } + let log = self.log + let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: createContextDelegate, queueForComposedOperations: queueForComposedOperations, log: log, flowId: FlowIdentifier()) + composedOp.completionBlock = { [weak composedOp] in + assert(composedOp != nil) + composedOp?.logReasonIfCancelled(log: log) + } + return composedOp + } + +} diff --git a/Engine/ObvEngine/ObvEngine/Coordinator/Operations/ActivateOwnedIdentityOperation.swift b/Engine/ObvEngine/ObvEngine/Coordinator/Operations/ActivateOwnedIdentityOperation.swift new file mode 100644 index 00000000..d1dad928 --- /dev/null +++ b/Engine/ObvEngine/ObvEngine/Coordinator/Operations/ActivateOwnedIdentityOperation.swift @@ -0,0 +1,85 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import os.log +import ObvCrypto +import ObvMetaManager +import CoreData + + +/// This operation re-activates an owned identity. This shall only be performed after making sure the server considers that the current device of the owned identity is active. +/// As a consequence, if the user wants to reactivate the device, we do *not* immediately call this operation. Instead, we register the current device on the server with the `reactivateCurrentDevice` parameter set to `true`. +/// If this succeeds, the notification sent by the network manager will eventually trigger an execution of this operation. +final class ActivateOwnedIdentityOperation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoIdentity: ObvCryptoIdentity + private let identityDelegate: ObvIdentityDelegate + + init(ownedCryptoIdentity: ObvCryptoIdentity, identityDelegate: ObvIdentityDelegate) { + self.ownedCryptoIdentity = ownedCryptoIdentity + self.identityDelegate = identityDelegate + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + // We first make sure the owned identity stil exist before trying to reactivate it. + // If this is not the case, this operation does nothing + + guard try identityDelegate.isOwned(ownedCryptoIdentity, within: obvContext) else { return } + + // We reactivate the owned identity + + try identityDelegate.reactivateOwnedIdentity(ownedIdentity: ownedCryptoIdentity, within: obvContext) + + + } catch { + return cancel(withReason: .identityDelegateError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case identityDelegateError(error: Error) + + public var logType: OSLogType { + switch self { + case .identityDelegateError: + return .fault + } + } + + public var errorDescription: String? { + switch self { + case .identityDelegateError(error: let error): + return "Identity delegate error: \(error.localizedDescription)" + } + } + + + } + +} + diff --git a/Engine/ObvEngine/ObvEngine/Coordinator/Operations/DeactivateOwnedIdentityAndMore.swift b/Engine/ObvEngine/ObvEngine/Coordinator/Operations/DeactivateOwnedIdentityAndMore.swift new file mode 100644 index 00000000..a9506df2 --- /dev/null +++ b/Engine/ObvEngine/ObvEngine/Coordinator/Operations/DeactivateOwnedIdentityAndMore.swift @@ -0,0 +1,107 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import os.log +import ObvCrypto +import ObvMetaManager +import CoreData + + +/// The operations deactivates the owned identity, deletes all the devices of the contacts of this owned identity and deletes all the oblivious channels between the current device of this owned identity (including channels with other owned devices). +/// Note that we do not delete other owned devices, we only delete any oblivious we have with them. +final class DeactivateOwnedIdentityAndMore: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoIdentity: ObvCryptoIdentity + private let identityDelegate: ObvIdentityDelegate + private let channelDelegate: ObvChannelDelegate + + init(ownedCryptoIdentity: ObvCryptoIdentity, identityDelegate: ObvIdentityDelegate, channelDelegate: ObvChannelDelegate) { + self.ownedCryptoIdentity = ownedCryptoIdentity + self.identityDelegate = identityDelegate + self.channelDelegate = channelDelegate + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + // Make sure the owned identity still exists as this operation may be called during the deletion of an owned identity + do { + guard try identityDelegate.isOwned(ownedCryptoIdentity, within: obvContext) else { + return + } + } catch { + assertionFailure() + return cancel(withReason: .identityDelegateError(error: error)) + } + + let currentDeviceUid: UID + do { + currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedCryptoIdentity, within: obvContext) + try identityDelegate.deactivateOwnedIdentityAndDeleteContactDevices(ownedIdentity: ownedCryptoIdentity, within: obvContext) + } catch { + assertionFailure() + return cancel(withReason: .identityDelegateError(error: error)) + } + + do { + try channelDelegate.deleteAllObliviousChannelsWithTheCurrentDeviceUid(currentDeviceUid, within: obvContext) + } catch { + assertionFailure() + return cancel(withReason: .channelDelegate(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case identityDelegateError(error: Error) + case channelDelegate(error: Error) + case contextIsNil + + public var logType: OSLogType { + switch self { + case .coreDataError, + .channelDelegate, + .identityDelegateError, + .contextIsNil: + return .fault + } + } + + public var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .identityDelegateError(error: let error): + return "Identity delegate error: \(error.localizedDescription)" + case .channelDelegate(error: let error): + return "Channel delegate error: \(error.localizedDescription)" + } + } + + + } + +} diff --git a/Engine/ObvEngine/ObvEngine/Coordinator/Operations/DeleteContactDevicesWithNoChannelAndNoChannelCreationThenPerformAppropriateDeviceDiscoveriesOperation.swift b/Engine/ObvEngine/ObvEngine/Coordinator/Operations/DeleteContactDevicesWithNoChannelAndNoChannelCreationThenPerformAppropriateDeviceDiscoveriesOperation.swift new file mode 100644 index 00000000..18fccfa0 --- /dev/null +++ b/Engine/ObvEngine/ObvEngine/Coordinator/Operations/DeleteContactDevicesWithNoChannelAndNoChannelCreationThenPerformAppropriateDeviceDiscoveriesOperation.swift @@ -0,0 +1,189 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import os.log +import ObvCrypto +import ObvMetaManager +import CoreData + + +/// This operation deletes all devices found within the identity manager if they have no associated channel and no oingoing channel creation protocol with the current device. For each (owned or contact) identity corresponding to a deleted device, we start a device discovery. +final class DeleteContactDevicesWithNoChannelAndNoChannelCreationThenPerformAppropriateDeviceDiscoveriesOperation: ContextualOperationWithSpecificReasonForCancel { + + private let identityDelegate: ObvIdentityDelegate + private let channelDelegate: ObvChannelDelegate + private let protocolDelegate: ObvProtocolDelegate + private let prng: PRNGService + + init(identityDelegate: ObvIdentityDelegate, channelDelegate: ObvChannelDelegate, protocolDelegate: ObvProtocolDelegate, prng: PRNGService) { + self.identityDelegate = identityDelegate + self.channelDelegate = channelDelegate + self.protocolDelegate = protocolDelegate + self.prng = prng + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + // Get all existing devices within the identity manager + + let existingDevices: Set + do { + existingDevices = try identityDelegate.getAllRemoteOwnedDevicesUidsAndContactDeviceUids(within: obvContext) + } catch { + return cancel(withReason: .identityDelegateError(error: error)) + } + + // Get all existing channels + + let existingChannels: Set + do { + existingChannels = try channelDelegate.getAllRemoteDeviceUidsAssociatedToAnObliviousChannel(within: obvContext) + } catch { + return cancel(withReason: .channelDelegate(error: error)) + } + + // Find devices with no channel and no channel creation protocol + + let devicesWithNoChannel = existingDevices + .subtracting(existingChannels) + + guard !devicesWithNoChannel.isEmpty else { return } + + // At this point, we know there is at least one (owned or contact) device with no channel. + + // Find all channel creation protocols + + let channelCreationProtocols: Set + do { + let channelCreationProtocolsWithOwnedDevice = try protocolDelegate.getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithOwnedDeviceProtocolInstances(within: obvContext) + let channelCreationProtocolsWithContactDevice = try protocolDelegate.getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithContactDeviceProtocolInstances(within: obvContext) + channelCreationProtocols = channelCreationProtocolsWithOwnedDevice.union(channelCreationProtocolsWithContactDevice) + } catch { + return cancel(withReason: .protocolDelegate(error: error)) + } + + // For each device with no channel, we check whether there is a channel creation protocol already handling this situation. + // We delete all devices with no channel and no ongoing channel creation protocol, and keep track of the corresponding identities: + // we will start a device discovery for them. + + var deviceDiscoveriesToStart = Set() + + for deviceWithNoChannel in devicesWithNoChannel { + + let ownedCryptoIdentity: ObvCryptoIdentity + do { + ownedCryptoIdentity = try identityDelegate.getOwnedIdentityOfCurrentDeviceUid(deviceWithNoChannel.currentDeviceUid, within: obvContext) + } catch { + assertionFailure() + continue + } + + let channelCreationToFind = ObliviousChannelIdentifierAlt(ownedCryptoIdentity: ownedCryptoIdentity, + remoteCryptoIdentity: deviceWithNoChannel.remoteCryptoIdentity, + remoteDeviceUid: deviceWithNoChannel.remoteDeviceUid) + + if channelCreationProtocols.contains(channelCreationToFind) { continue } + + deviceDiscoveriesToStart.insert(channelCreationToFind) + + // If we reach this point, we found a device with no channel and with no ongoing channel creation protocol. + // We delete this device and add the corresponding remote identity to the set of identities for which we want to perform a device discovery. + + do { + if deviceWithNoChannel.remoteCryptoIdentity == ownedCryptoIdentity { + try identityDelegate.removeOtherDeviceForOwnedIdentity(ownedCryptoIdentity, + otherDeviceUid: deviceWithNoChannel.remoteDeviceUid, + within: obvContext) + } else { + try identityDelegate.removeDeviceForContactIdentity(deviceWithNoChannel.remoteCryptoIdentity, + withUid: deviceWithNoChannel.remoteDeviceUid, + ofOwnedIdentity: ownedCryptoIdentity, + within: obvContext) + } + } catch { + assertionFailure() + continue + } + + } + + // Finally, we start the required channel creations + + for deviceDiscoveryToStart in deviceDiscoveriesToStart { + + do { + + let message: ObvChannelProtocolMessageToSend + if deviceDiscoveryToStart.ownedCryptoIdentity == deviceDiscoveryToStart.remoteCryptoIdentity { + message = try protocolDelegate.getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: deviceDiscoveryToStart.ownedCryptoIdentity) + } else { + message = try protocolDelegate.getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: deviceDiscoveryToStart.ownedCryptoIdentity, contactIdentity: deviceDiscoveryToStart.remoteCryptoIdentity) + } + + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } catch { + assertionFailure(error.localizedDescription) + // continue + } + + } + + } + + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case identityDelegateError(error: Error) + case channelDelegate(error: Error) + case protocolDelegate(error: Error) + case contextIsNil + + public var logType: OSLogType { + switch self { + case .channelDelegate, + .protocolDelegate, + .identityDelegateError, + .contextIsNil: + return .fault + } + } + + public var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .identityDelegateError(error: let error): + return "Identity delegate error: \(error.localizedDescription)" + case .channelDelegate(error: let error): + return "Channel delegate error: \(error.localizedDescription)" + case .protocolDelegate(error: let error): + return "Protocol delegate error: \(error.localizedDescription)" + } + } + + + } + +} + diff --git a/Engine/ObvEngine/ObvEngine/Coordinator/Operations/SendTargetedPingMessageForKeycloakGroupV2ProtocolWhereContactIsPendingMemberOperation.swift b/Engine/ObvEngine/ObvEngine/Coordinator/Operations/SendTargetedPingMessageForKeycloakGroupV2ProtocolWhereContactIsPendingMemberOperation.swift new file mode 100644 index 00000000..ca3ec8c7 --- /dev/null +++ b/Engine/ObvEngine/ObvEngine/Coordinator/Operations/SendTargetedPingMessageForKeycloakGroupV2ProtocolWhereContactIsPendingMemberOperation.swift @@ -0,0 +1,75 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import CoreData +import OlvidUtils +import ObvMetaManager +import ObvCrypto +import ObvTypes + + +final class SendTargetedPingMessageForKeycloakGroupV2ProtocolWhereContactIsPendingMemberOperation: ContextualOperationWithSpecificReasonForCancel { + + private let identityDelegate: ObvIdentityDelegate + private let channelDelegate: ObvChannelDelegate + private let protocolDelegate: ObvProtocolDelegate + private let prng: PRNGService + private let contactIdentifiers: Set + private let log: OSLog + + init(identityDelegate: ObvIdentityDelegate, channelDelegate: ObvChannelDelegate, protocolDelegate: ObvProtocolDelegate, prng: PRNGService, contactIdentifiers: Set, logSubsystem: String) { + self.identityDelegate = identityDelegate + self.channelDelegate = channelDelegate + self.protocolDelegate = protocolDelegate + self.prng = prng + self.contactIdentifiers = contactIdentifiers + self.log = OSLog(subsystem: logSubsystem, category: "SendTargetedPingMessageForKeycloakGroupV2ProtocolWhereContactIsMemberOperation") + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + for contactIdentifier in contactIdentifiers { + + let ownedIdentity = contactIdentifier.ownedCryptoId.cryptoIdentity + let contactIdentity = contactIdentifier.contactCryptoId.cryptoIdentity + + do { + let groupIdentifiers = try identityDelegate.getIdentifiersOfAllKeycloakGroupsWhereContactIsPending(ownedCryptoId: ownedIdentity, contactCryptoId: contactIdentity, within: obvContext) + + groupIdentifiers.forEach { groupIdentifier in + do { + let msg = try protocolDelegate.getInitiateTargetedPingMessageForKeycloakGroupV2Protocol(ownedIdentity: ownedIdentity, groupIdentifier: groupIdentifier, pendingMemberIdentity: contactIdentity, flowId: obvContext.flowId) + _ = try channelDelegate.postChannelMessage(msg, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not ping contact in a keycloak groups where she is pending (1): %{public}@", log: self.log, type: .fault, error.localizedDescription) + } + } + + } catch { + assertionFailure(error.localizedDescription) + os_log("Could not ping contact in a keycloak groups where she is pending (2): %{public}@", log: self.log, type: .fault, error.localizedDescription) + } + + } + + } + +} diff --git a/Engine/ObvEngine/ObvEngine/NotificationSender.swift b/Engine/ObvEngine/ObvEngine/NotificationSender.swift index dd178709..1f4d65cb 100644 --- a/Engine/ObvEngine/ObvEngine/NotificationSender.swift +++ b/Engine/ObvEngine/ObvEngine/NotificationSender.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -238,15 +238,39 @@ extension ObvEngine { } do { - let token = ObvNetworkFetchNotificationNew.observeServerRequiresThisDeviceToRegisterToPushNotifications(within: notificationDelegate) { [weak self] (ownedIdentity, flowId) in - guard let appNotificationCenter = self?.appNotificationCenter else { return } - let ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedIdentity) - let notification = ObvEngineNotificationNew.serverRequiresThisDeviceToRegisterToPushNotifications(ownedIdentity: ownedCryptoId) - notification.postOnBackgroundQueue(within: appNotificationCenter) + let token = ObvNetworkFetchNotificationNew.observeServerRequiresThisDeviceToRegisterToPushNotifications(within: notificationDelegate) { [weak self] (_, flowId) in + guard let appNotificationCenter = self?.appNotificationCenter else { assertionFailure(); return } + ObvEngineNotificationNew.serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications + .postOnBackgroundQueue(within: appNotificationCenter) } notificationCenterTokens.append(token) } + + // ObvProtocolNotification + notificationCenterTokens.append(contentsOf: [ + ObvProtocolNotification.observeMutualScanContactAdded(within: notificationDelegate) { [weak self] ownedIdentity, contactIdentity, signature in + self?.processMutualScanContactAdded(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, signature: signature) + }, + ObvProtocolNotification.observeKeycloakSynchronizationRequired(within: notificationDelegate) { [weak self] ownedIdentity in + self?.processKeycloakSynchronizationRequired(ownedIdentity: ownedIdentity) + }, + ObvProtocolNotification.observeGroupV2UpdateDidFail(within: notificationDelegate) { [weak self] ownedIdentity, appGroupIdentifier, flowId in + self?.processGroupV2UpdateDidFail(ownedIdentity: ownedIdentity, appGroupIdentifier: appGroupIdentifier, flowId: flowId) + }, + ObvProtocolNotification.observeContactIntroductionInvitationSent(within: notificationDelegate) { [weak self] ownedIdentity, contactIdentityA, contactIdentityB in + self?.processContactIntroductionInvitationSent(ownedIdentity: ownedIdentity, contactIdentityA: contactIdentityA, contactIdentityB: contactIdentityB) + }, + ObvProtocolNotification.observeTheCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults(within: notificationDelegate) { [weak self] ownedCryptoIdentity in + self?.processTheCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults(ownedCryptoIdentity: ownedCryptoIdentity) + }, + ObvProtocolNotification.observeAnOwnedIdentityTransferProtocolFailed(within: notificationDelegate) { [weak self] ownedCryptoIdentity, protocolInstanceUID, error in + self?.processAnOwnedIdentityTransferProtocolFailed(ownedCryptoIdentity: ownedCryptoIdentity, protocolInstanceUID: protocolInstanceUID, error: error) + }, + ]) + + // ObvIdentityNotificationNew notifications + notificationCenterTokens.append(contentsOf: [ ObvIdentityNotificationNew.observeTrustedPhotoOfContactIdentityHasBeenUpdated(within: notificationDelegate) { [weak self] (ownedIdentity, contactIdentity) in self?.processTrustedPhotoOfContactIdentityHasBeenUpdated(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity) @@ -269,9 +293,6 @@ extension ObvEngine { ObvIdentityNotificationNew.observeLatestPhotoOfContactGroupOwnedHasBeenUpdated(within: notificationDelegate) { [weak self] (groupUid, ownedIdentity) in self?.processLatestPhotoOfContactGroupOwnedHasBeenUpdated(groupUid: groupUid, ownedIdentity: ownedIdentity) }, - ObvProtocolNotification.observeMutualScanContactAdded(within: notificationDelegate) { [weak self] ownedIdentity, contactIdentity, signature in - self?.processMutualScanContactAdded(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, signature: signature) - }, ObvIdentityNotificationNew.observeOwnedIdentityKeycloakServerChanged(within: notificationDelegate) { [weak self] ownedCryptoIdentity, flowId in self?.processOwnedIdentityKeycloakServerChanged(ownedCryptoIdentity: ownedCryptoIdentity, flowId: flowId) }, @@ -299,12 +320,24 @@ extension ObvEngine { ObvIdentityNotificationNew.observeGroupV2WasDeleted(within: notificationDelegate) { [weak self] (ownedIdentity, appGroupIdentifier) in self?.processGroupV2WasDeleted(ownedIdentity: ownedIdentity, appGroupIdentifier: appGroupIdentifier) }, - ObvProtocolNotification.observeGroupV2UpdateDidFail(within: notificationDelegate) { [weak self] ownedIdentity, appGroupIdentifier, flowId in - self?.processGroupV2UpdateDidFail(ownedIdentity: ownedIdentity, appGroupIdentifier: appGroupIdentifier, flowId: flowId) - }, - ObvIdentityNotificationNew.observeOwnedIdentityWasDeleted(within: notificationDelegate) { [weak self] in + ObvIdentityNotificationNew.observeOwnedIdentityWasDeleted(within: notificationDelegate) { [weak self] _ in self?.processOwnedIdentityWasDeleted() }, + ObvIdentityNotificationNew.observeNewRemoteOwnedDevice(within: notificationDelegate) { [weak self] ownedCryptoId, remoteDeviceUid, _ in + self?.processNewRemoteOwnedDevice(ownedCryptoId: ownedCryptoId, remoteDeviceUid: remoteDeviceUid) + }, + ObvIdentityNotificationNew.observeAnOwnedDeviceWasUpdated(within: notificationDelegate) { [weak self] ownedCryptoId in + self?.processAnOwnedDeviceWasUpdated(ownedCryptoId: ownedCryptoId) + }, + ObvIdentityNotificationNew.observeAnOwnedDeviceWasDeleted(within: notificationDelegate) { [weak self] ownedCryptoId in + self?.processAnOwnedDeviceWasDeleted(ownedCryptoId: ownedCryptoId) + }, + ObvIdentityNotificationNew.observeNewContactDevice(within: notificationDelegate) { [weak self] ownedIdentity, contactIdentity, _, _, _ in + self?.processNewContactDevice(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity) + }, + ObvIdentityNotificationNew.observePushTopicOfKeycloakGroupWasUpdated(within: notificationDelegate) { [weak self] ownedIdentity in + self?.processPushTopicOfKeycloakGroupWasUpdated(ownedIdentity: ownedIdentity) + }, ]) do { @@ -322,43 +355,9 @@ extension ObvEngine { // Notification received from the network fetch manager notificationCenterTokens.append(contentsOf: [ - ObvNetworkFetchNotificationNew.observeAppStoreReceiptVerificationSucceededButSubscriptionIsExpired(within: notificationDelegate) { [weak self] (ownedIdentity, transactionIdentifier, flowId) in - guard let _self = self else { return } - ObvEngineNotificationNew.appStoreReceiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ObvCryptoId(cryptoIdentity: ownedIdentity), transactionIdentifier: transactionIdentifier) - .postOnBackgroundQueue(within: _self.appNotificationCenter) - }, - ObvNetworkFetchNotificationNew.observeAppStoreReceiptVerificationFailed(within: notificationDelegate) { [weak self] (ownedIdentity, transactionIdentifier, flowId) in - guard let _self = self else { return } - ObvEngineNotificationNew.appStoreReceiptVerificationFailed(ownedIdentity: ObvCryptoId(cryptoIdentity: ownedIdentity), transactionIdentifier: transactionIdentifier) - .postOnBackgroundQueue(within: _self.appNotificationCenter) - }, - ObvNetworkFetchNotificationNew.observeFreeTrialIsStillAvailableForOwnedIdentity(within: notificationDelegate) { [weak self] (ownedIdentity, flowId) in - self?.processFreeTrialIsStillAvailableForOwnedIdentity(ownedIdentity: ownedIdentity, flowId: flowId) - }, - ObvNetworkFetchNotificationNew.observeNoMoreFreeTrialAPIKeyAvailableForOwnedIdentity(within: notificationDelegate) { [weak self] (ownedIdentity, flowId) in - self?.processNoMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity: ownedIdentity, flowId: flowId) - }, - ObvNetworkFetchNotificationNew.observeNewAPIKeyElementsForAPIKey(within: notificationDelegate) { [weak self] (serverURL, apiKey, apiKeyStatus, apiPermissions, apiKeyExpirationDate) in - self?.processNewAPIKeyElementsForAPIKeyNotification(serverURL: serverURL, apiKey: apiKey, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpirationDate) - }, ObvNetworkFetchNotificationNew.observeNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(within: notificationDelegate) { [weak self] (ownedIdentity, apiKeyStatus, apiPermissions, apiKeyExpirationDate) in self?.processNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentityNotification(ownedIdentity: ownedIdentity, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpirationDate) }, - ObvNetworkFetchNotificationNew.observeTurnCredentialsReceptionPermissionDenied(within: notificationDelegate) { [weak self] (ownedIdentity, callUuid, flowId) in - self?.processTurnCredentialsReceptionPermissionDeniedNotification(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) - }, - ObvNetworkFetchNotificationNew.observeTurnCredentialServerDoesNotSupportCalls(within: notificationDelegate) { [weak self] (ownedIdentity, callUuid, flowId) in - self?.processTurnCredentialServerDoesNotSupportCalls(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) - }, - ObvNetworkFetchNotificationNew.observeTurnCredentialsReceptionFailure(within: notificationDelegate) { [weak self] (ownedIdentity, callUuid, flowId) in - self?.processTurnCredentialsReceptionFailureNotification(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) - }, - ObvNetworkFetchNotificationNew.observeTurnCredentialsReceived(within: notificationDelegate) { [weak self] (ownedIdentity, callUuid, turnCredentialsWithTurnServers, flowId) in - self?.processTurnCredentialsReceivedNotification(ownedIdentity: ownedIdentity, callUuid: callUuid, turnCredentialsWithTurnServers: turnCredentialsWithTurnServers, flowId: flowId) - }, - ObvNetworkFetchNotificationNew.observeApiKeyStatusQueryFailed(within: notificationDelegate) { [weak self] (ownedIdentity, apiKey) in - self?.processApiKeyStatusQueryFailed(ownedIdentity: ownedIdentity, apiKey: apiKey) - }, ObvNetworkFetchNotificationNew.observeDownloadingMessageExtendedPayloadWasPerformed(within: notificationDelegate) { [weak self] (messageId, flowId) in self?.processDownloadingMessageExtendedPayloadWasPerformed(messageId: messageId, flowId: flowId) }, @@ -401,17 +400,15 @@ extension ObvEngine { ObvNetworkFetchNotificationNew.observeKeycloakTargetedPushNotificationReceivedViaWebsocket(within: notificationDelegate) { [weak self] ownedIdentity in self?.processKeycloakTargetedPushNotificationReceivedViaWebsocket(ownedIdentity: ownedIdentity) }, + ObvNetworkFetchNotificationNew.observeOwnedDevicesMessageReceivedViaWebsocket(within: notificationDelegate) { [weak self] ownedCryptoIdentity in + guard let appNotificationCenter = self?.appNotificationCenter else { return } + ObvEngineNotificationNew.serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications + .postOnBackgroundQueue(within: appNotificationCenter) + }, ]) } - private func processApiKeyStatusQueryFailed(ownedIdentity: ObvCryptoIdentity, apiKey: UUID) { - // We do not send the owned identity. In certain cases, we use a dummy owned identity to query the server. We should not send this dummy identity to the application. - ObvEngineNotificationNew.apiKeyStatusQueryFailed(serverURL: ownedIdentity.serverURL, apiKey: apiKey) - .postOnBackgroundQueue(within: appNotificationCenter) - } - - private func processMutualScanContactAdded(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, signature: Data) { guard let createContextDelegate = createContextDelegate else { @@ -452,8 +449,28 @@ extension ObvEngine { notificationCenterTokens.append(token) } + + /// If the protocol performing an owned device discovery reports that the current device is not part of the results returned by the server, we force a registration to push notifications. + /// If the current device was not part of the discovery because another owned device deactivated it, we will be notified by the server as a result of this re-register to push notifications. + /// In that case, the registration method will return a ``ObvNetworkFetchError.RegisterPushNotificationError.anotherDeviceIsAlreadyRegistered`` error, and this device will be deactivated. + private func processTheCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults(ownedCryptoIdentity: ObvCryptoIdentity) { + let ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedCryptoIdentity) + ObvEngineNotificationNew.engineRequiresOwnedIdentityToRegisterToPushNotifications(ownedCryptoId: ownedCryptoId) + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + } + + + + /// This is called when the protocol manager notifies that an ongoing owned identity transfer protocol did fail. In that case, it has been terminated. + /// Note that, on a target device, the owned identity indicated here is an ephemeral identity. + private func processAnOwnedIdentityTransferProtocolFailed(ownedCryptoIdentity: ObvCryptoIdentity, protocolInstanceUID: UID, error: Error) { + let ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedCryptoIdentity) + ObvEngineNotificationNew.anOwnedIdentityTransferProtocolFailed(ownedCryptoId: ownedCryptoId, protocolInstanceUID: protocolInstanceUID, error: error) + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + } - private func processDownloadingMessageExtendedPayloadWasPerformed(messageId: MessageIdentifier, flowId: FlowIdentifier) { + + private func processDownloadingMessageExtendedPayloadWasPerformed(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { os_log("We received a DownloadingMessageExtendedPayloadWasPerformed notification for the message %{public}@.", log: log, type: .debug, messageId.debugDescription) @@ -467,9 +484,9 @@ extension ObvEngine { os_log("The network fetch delegate is not set", log: log, type: .fault) return } - - guard let identityDelegate = identityDelegate else { - os_log("The network fetch delegate is not set", log: log, type: .fault) + + guard let networkReceivedMessage = networkFetchDelegate.getDecryptedMessage(messageId: messageId, flowId: flowId) else { + os_log("Could not get an ObvNetworkReceivedMessageDecrypted for message %@", log: self.log, type: .fault, messageId.debugDescription) return } @@ -477,23 +494,40 @@ extension ObvEngine { guard let _self = self else { return } - let obvMessage: ObvMessage - do { - try obvMessage = ObvMessage(messageId: messageId, networkFetchDelegate: networkFetchDelegate, identityDelegate: identityDelegate, within: obvContext) - } catch { - os_log("Could not construct an ObvMessage from the network message and its attachments", log: _self.log, type: .fault, messageId.debugDescription) - return - } + if networkReceivedMessage.fromIdentity == networkReceivedMessage.messageId.ownedCryptoIdentity { - ObvEngineNotificationNew.messageExtendedPayloadAvailable(obvMessage: obvMessage) - .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + let obvOwnedMessage: ObvOwnedMessage + do { + try obvOwnedMessage = ObvOwnedMessage(networkReceivedMessage: networkReceivedMessage, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } catch { + os_log("Could not construct an ObvOwnedMessage from the network message and its attachments (1)", log: _self.log, type: .fault, messageId.debugDescription) + return + } + + ObvEngineNotificationNew.ownedMessageExtendedPayloadAvailable(obvOwnedMessage: obvOwnedMessage) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + + } else { + + let obvMessage: ObvMessage + do { + try obvMessage = ObvMessage(networkReceivedMessage: networkReceivedMessage, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } catch { + os_log("Could not construct an ObvMessage from the network message and its attachments (1)", log: _self.log, type: .fault, messageId.debugDescription) + return + } + + ObvEngineNotificationNew.contactMessageExtendedPayloadAvailable(obvMessage: obvMessage) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + + } } } - private func processInboxAttachmentDownloadCancelledByServer(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + private func processInboxAttachmentDownloadCancelledByServer(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { os_log("We received an AttachmentDownloadCancelledByServer notification for the attachment %{public}@.", log: log, type: .debug, attachmentId.debugDescription) @@ -507,28 +541,51 @@ extension ObvEngine { return } - guard let identityDelegate = identityDelegate else { - os_log("The identity delegate is not set", log: log, type: .fault) - return - } - createContextDelegate.performBackgroundTask(flowId: flowId) { [weak self] (obvContext) in guard let _self = self else { return } - let obvAttachment: ObvAttachment - do { - try obvAttachment = ObvAttachment(attachmentId: attachmentId, networkFetchDelegate: networkFetchDelegate, identityDelegate: identityDelegate, within: obvContext) - } catch { - os_log("Could not construct an ObvAttachment of attachment %{public}@", log: _self.log, type: .fault, attachmentId.debugDescription) + guard let networkReceivedAttachment = networkFetchDelegate.getAttachment(withId: attachmentId, within: obvContext) else { + os_log("Could not get a network received attachment of message %{public}@ (4)", log: _self.log, type: .fault, attachmentId.messageId.debugDescription) return } - - // We notify the app - - ObvEngineNotificationNew.attachmentDownloadCancelledByServer(obvAttachment: obvAttachment) - .postOnBackgroundQueue(within: _self.appNotificationCenter) - + + if networkReceivedAttachment.fromCryptoIdentity == networkReceivedAttachment.attachmentId.messageId.ownedCryptoIdentity { + + let obvOwnedAttachment: ObvOwnedAttachment + do { + obvOwnedAttachment = try ObvOwnedAttachment(attachmentId: attachmentId, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } catch { + os_log("Could not construct an ObvOwnedAttachment of message %{public}@ (1)", log: _self.log, type: .fault, attachmentId.messageId.debugDescription) + return + } + + // We notify the app + + ObvEngineNotificationNew.ownedAttachmentDownloadCancelledByServer(obvOwnedAttachment: obvOwnedAttachment) + .postOnBackgroundQueue(within: _self.appNotificationCenter) + + } else { + + let contactIdentifier = ObvContactIdentifier(contactCryptoIdentity: networkReceivedAttachment.fromCryptoIdentity, + ownedCryptoIdentity: networkReceivedAttachment.attachmentId.messageId.ownedCryptoIdentity) + + let obvAttachment: ObvAttachment + do { + try obvAttachment = ObvAttachment(attachmentId: attachmentId, fromContactIdentity: contactIdentifier, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } catch { + os_log("Could not construct an ObvAttachment of message %{public}@ (4)", log: _self.log, type: .fault, attachmentId.messageId.debugDescription) + return + } + + // We notify the app + + ObvEngineNotificationNew.attachmentDownloadCancelledByServer(obvAttachment: obvAttachment) + .postOnBackgroundQueue(within: _self.appNotificationCenter) + + + } + } } @@ -537,11 +594,11 @@ extension ObvEngine { private func processDeletedConfirmedObliviousChannelNotifications(currentDeviceUid: UID, remoteCryptoIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) { os_log("We received a DeletedConfirmedObliviousChannel notification", log: log, type: .info) - guard let createContextDelegate = createContextDelegate else { + guard let createContextDelegate else { os_log("The create context delegate is not set", log: log, type: .fault) return } - guard let identityDelegate = identityDelegate else { + guard let identityDelegate else { os_log("The identity delegate is not set", log: log, type: .fault) return } @@ -557,41 +614,34 @@ extension ObvEngine { // Determine the owned identity related to the current device uid guard let ownedCryptoIdentity = try? identityDelegate.getOwnedIdentityOfCurrentDeviceUid(currentDeviceUid, within: obvContext) else { - os_log("The device uid does not correspond to any owned identity", log: _self.log, type: .fault) + os_log("The device uid does not correspond to any owned identity. This is ok during a profile deletion.", log: _self.log, type: .error) return } - + // The remote device might either be : // - an owned remote device // - a contact device // For each case, we have an appropriate notification to send - if let remoteOwnedDevice = ObvRemoteOwnedDevice(remoteOwnedDeviceUid: remoteDeviceUid, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) { + if ownedCryptoIdentity == remoteCryptoIdentity { - os_log("The deleted channel was one with had with a remote owned device %@", log: _self.log, type: .info, remoteOwnedDevice.description) - - } else if let contactDevice = ObvContactDevice(contactDeviceUid: remoteDeviceUid, contactCryptoIdentity: remoteCryptoIdentity, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) { + os_log("The deleted channel was one with had with a remote owned device %@", log: _self.log, type: .info, remoteDeviceUid.description) - os_log("The deleted channel was one we had with a contact device", log: _self.log, type: .info) - - ObvEngineNotificationNew.DeletedObliviousChannelWithContactDevice(obvContactDevice: contactDevice) + ObvEngineNotificationNew.deletedObliviousChannelWithRemoteOwnedDevice .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) } else { - os_log("We could not determine any appropriate remote device. It might have been deleted already.", log: _self.log, type: .info) + os_log("The deleted channel was one we had with a contact device %@", log: _self.log, type: .info, remoteDeviceUid.description) + + let contactIdentifier = ObvContactIdentifier(contactCryptoIdentity: remoteCryptoIdentity, ownedCryptoIdentity: ownedCryptoIdentity) + + ObvEngineNotificationNew.deletedObliviousChannelWithContactDevice(obvContactIdentifier: contactIdentifier) + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) - if let obvContactIdentity = ObvContactIdentity(contactCryptoIdentity: remoteCryptoIdentity, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) { - - let contactDevice = ObvContactDevice(identifier: remoteDeviceUid.raw, contactIdentity: obvContactIdentity) - - os_log("The deleted channel was one we had with a contact device", log: _self.log, type: .info) - - ObvEngineNotificationNew.DeletedObliviousChannelWithContactDevice(obvContactDevice: contactDevice) - .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) - - } } + + } @@ -704,24 +754,12 @@ extension ObvEngine { private func processContactWasRevokedAsCompromised(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - guard let identityDelegate = self.identityDelegate else { assertionFailure(); return } - guard let createContextDelegate = self.createContextDelegate else { assertionFailure(); return } let appNotificationCenter = self.appNotificationCenter - createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in - - guard let obvContactIdentity = ObvContactIdentity(contactCryptoIdentity: contactIdentity, - ownedCryptoIdentity: ownedIdentity, - identityDelegate: identityDelegate, within: obvContext) else { - os_log("Could not create an ObvContactIdentity structure", log: self.log, type: .fault) - assertionFailure() - return - } - - ObvEngineNotificationNew.contactWasRevokedAsCompromisedWithinEngine(obvContactIdentity: obvContactIdentity) - .postOnBackgroundQueue(within: appNotificationCenter) - - } + let obvContactIdentifier = ObvContactIdentifier(contactCryptoIdentity: contactIdentity, ownedCryptoIdentity: ownedIdentity) + + ObvEngineNotificationNew.contactWasRevokedAsCompromisedWithinEngine(obvContactIdentifier: obvContactIdentifier) + .postOnBackgroundQueue(within: appNotificationCenter) } @@ -770,6 +808,15 @@ extension ObvEngine { ObvEngineNotificationNew.groupV2UpdateDidFail(ownedIdentity: ObvCryptoId(cryptoIdentity: ownedIdentity), appGroupIdentifier: appGroupIdentifier) .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) } + + + private func processContactIntroductionInvitationSent(ownedIdentity: ObvCryptoIdentity, contactIdentityA: ObvCryptoIdentity, contactIdentityB: ObvCryptoIdentity) { + ObvEngineNotificationNew.contactIntroductionInvitationSent( + ownedIdentity: ObvCryptoId(cryptoIdentity: ownedIdentity), + contactIdentityA: ObvCryptoId(cryptoIdentity: contactIdentityA), + contactIdentityB: ObvCryptoId(cryptoIdentity: contactIdentityB)) + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + } private func processOwnedIdentityWasDeleted() { @@ -778,6 +825,47 @@ extension ObvEngine { } + /// When a new owned remote device is inserted in database, we notify the app, to make it possible to immediately see this device in the list of owned devices. + /// See also ``EngineCoordinator.processNewRemoteOwnedDevice(ownedCryptoId:remoteDeviceUid:)`` where we launch a channel creation. + private func processNewRemoteOwnedDevice(ownedCryptoId: ObvCryptoIdentity, remoteDeviceUid: UID) { + ObvEngineNotificationNew.newRemoteOwnedDevice + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + } + + + private func processAnOwnedDeviceWasUpdated(ownedCryptoId: ObvCryptoIdentity) { + ObvEngineNotificationNew.anOwnedDeviceWasUpdated(ownedCryptoId: ObvCryptoId(cryptoIdentity: ownedCryptoId)) + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + } + + + private func processAnOwnedDeviceWasDeleted(ownedCryptoId: ObvCryptoIdentity) { + ObvEngineNotificationNew.anOwnedDeviceWasDeleted(ownedCryptoId: ObvCryptoId(cryptoIdentity: ownedCryptoId)) + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + } + + + private func processNewContactDevice(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) { + let obvContactIdentifier = ObvContactIdentifier(contactCryptoIdentity: contactIdentity, ownedCryptoIdentity: ownedIdentity) + ObvEngineNotificationNew.newContactDevice(obvContactIdentifier: obvContactIdentifier) + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + } + + + /// When a the push topic of a keycloak group is created/updated, we want to re-register to push notification to make sure we inform the server we are interested by this new push topic. + private func processPushTopicOfKeycloakGroupWasUpdated(ownedIdentity: ObvCryptoIdentity) { + let ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedIdentity) + ObvEngineNotificationNew.engineRequiresOwnedIdentityToRegisterToPushNotifications(ownedCryptoId: ownedCryptoId) + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + } + + + private func processKeycloakSynchronizationRequired(ownedIdentity: ObvCryptoIdentity) { + ObvEngineNotificationNew.keycloakSynchronizationRequired(ownCryptoId: ObvCryptoId(cryptoIdentity: ownedIdentity)) + .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + } + + private func processContactObvCapabilitiesWereUpdated(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { guard let identityDelegate = self.identityDelegate else { assertionFailure(); return } @@ -856,77 +944,34 @@ extension ObvEngine { } - private func processOutboxMessagesAndAllTheirAttachmentsWereAcknowledgedNotifications(messageIdsAndTimestampsFromServer: [(messageId: MessageIdentifier, timestampFromServer: Date)], flowId: FlowIdentifier) { + private func processOutboxMessagesAndAllTheirAttachmentsWereAcknowledgedNotifications(messageIdsAndTimestampsFromServer: [(messageId: ObvMessageIdentifier, timestampFromServer: Date)], flowId: FlowIdentifier) { os_log("We received an OutboxMessagesAndAllTheirAttachmentsWereAcknowledged notification within flow %{public}@", log: log, type: .debug, flowId.debugDescription) let info = messageIdsAndTimestampsFromServer.map() { ($0.messageId.uid.raw, ObvCryptoId(cryptoIdentity: $0.messageId.ownedCryptoIdentity), $0.timestampFromServer) } ObvEngineNotificationNew.outboxMessagesAndAllTheirAttachmentsWereAcknowledged(messageIdsAndTimestampsFromServer: info) .postOnBackgroundQueue(within: appNotificationCenter) } - private func processOutboxMessageCouldNotBeSentToServer(messageId: MessageIdentifier, flowId: FlowIdentifier) { + private func processOutboxMessageCouldNotBeSentToServer(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { let messageIdentifierFromEngine = messageId.uid.raw let ownedIdentity = ObvCryptoId(cryptoIdentity: messageId.ownedCryptoIdentity) ObvEngineNotificationNew.outboxMessageCouldNotBeSentToServer(messageIdentifierFromEngine: messageIdentifierFromEngine, ownedIdentity: ownedIdentity) .postOnBackgroundQueue(within: appNotificationCenter) } - private func processTurnCredentialsReceptionPermissionDeniedNotification(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, flowId: FlowIdentifier) { - ObvEngineNotificationNew.callerTurnCredentialsReceptionPermissionDenied(ownedIdentity: ObvCryptoId(cryptoIdentity: ownedIdentity), callUuid: callUuid) - .postOnBackgroundQueue(within: appNotificationCenter) - } - - private func processTurnCredentialServerDoesNotSupportCalls(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, flowId: FlowIdentifier) { - ObvEngineNotificationNew.callerTurnCredentialsServerDoesNotSupportCalls(ownedIdentity: ObvCryptoId(cryptoIdentity: ownedIdentity), callUuid: callUuid) - .postOnBackgroundQueue(within: appNotificationCenter) - } - - private func processTurnCredentialsReceptionFailureNotification(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, flowId: FlowIdentifier) { - ObvEngineNotificationNew.callerTurnCredentialsReceptionFailure(ownedIdentity: ObvCryptoId(cryptoIdentity: ownedIdentity), callUuid: callUuid) - .postOnBackgroundQueue(within: appNotificationCenter) - } - - private func processTurnCredentialsReceivedNotification(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, turnCredentialsWithTurnServers credentials: TurnCredentialsWithTurnServers, flowId: FlowIdentifier) { - let obvTurnCredentials = ObvTurnCredentials(callerUsername: credentials.expiringUsername1, - callerPassword: credentials.password1, - recipientUsername: credentials.expiringUsername2, - recipientPassword: credentials.password2, - turnServersURL: credentials.turnServersURL) - let notification = ObvEngineNotificationNew.callerTurnCredentialsReceived(ownedIdentity: ObvCryptoId(cryptoIdentity: ownedIdentity), - callUuid: callUuid, - turnCredentials: obvTurnCredentials) - notification.postOnBackgroundQueue(within: appNotificationCenter) - } - - private func processFreeTrialIsStillAvailableForOwnedIdentity(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - let identity = ObvCryptoId(cryptoIdentity: ownedIdentity) - ObvEngineNotificationNew.freeTrialIsStillAvailableForOwnedIdentity(ownedIdentity: identity) - .postOnBackgroundQueue(within: appNotificationCenter) - } - - private func processNoMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - let identity = ObvCryptoId(cryptoIdentity: ownedIdentity) - ObvEngineNotificationNew.noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity: identity) - .postOnBackgroundQueue(within: appNotificationCenter) - } - - private func processNewAPIKeyElementsForAPIKeyNotification(serverURL: URL, apiKey: UUID, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?) { - ObvEngineNotificationNew.newAPIKeyElementsForAPIKey(serverURL: serverURL, apiKey: apiKey, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: EngineOptionalWrapper(apiKeyExpirationDate)) - .postOnBackgroundQueue(within: appNotificationCenter) - } - private func processNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentityNotification(ownedIdentity: ObvCryptoIdentity, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?) { let ownedIdentity = ObvCryptoId(cryptoIdentity: ownedIdentity) - ObvEngineNotificationNew.newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(ownedIdentity: ownedIdentity, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: EngineOptionalWrapper(apiKeyExpirationDate)) + ObvEngineNotificationNew.newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(ownedIdentity: ownedIdentity, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpirationDate) .postOnBackgroundQueue(within: appNotificationCenter) } - private func processCannotReturnAnyProgressForMessageAttachmentsNotification(messageId: MessageIdentifier, flowId: FlowIdentifier) { - ObvEngineNotificationNew.cannotReturnAnyProgressForMessageAttachments(messageIdentifierFromEngine: messageId.uid.raw) + private func processCannotReturnAnyProgressForMessageAttachmentsNotification(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { + let ownedCryptoId = ObvCryptoId(cryptoIdentity: messageId.ownedCryptoIdentity) + ObvEngineNotificationNew.cannotReturnAnyProgressForMessageAttachments(ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageId.uid.raw) .postOnBackgroundQueue(within: appNotificationCenter) } - private func processOutboxMessageWasUploadedNotification(messageId: MessageIdentifier, timestampFromServer: Date, isAppMessageWithUserContent: Bool, isVoipMessage: Bool, flowId: FlowIdentifier) { + private func processOutboxMessageWasUploadedNotification(messageId: ObvMessageIdentifier, timestampFromServer: Date, isAppMessageWithUserContent: Bool, isVoipMessage: Bool, flowId: FlowIdentifier) { os_log("We received an OutboxMessageWasUploaded notification within flow %{public}@", log: log, type: .debug, flowId.debugDescription) @@ -940,7 +985,7 @@ extension ObvEngine { } - private func processAttachmentWasAcknowledgedNotification(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + private func processAttachmentWasAcknowledgedNotification(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { os_log("We received an AttachmentWasAcknowledged notification within flow %{public}@", log: log, type: .debug, flowId.debugDescription) @@ -1503,7 +1548,7 @@ extension ObvEngine { } - private func processMessageDecryptedNotification(messageId: MessageIdentifier, flowId: FlowIdentifier) { + private func processMessageDecryptedNotification(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { let log = self.log @@ -1517,13 +1562,13 @@ extension ObvEngine { return } - guard let identityDelegate = identityDelegate else { - os_log("The network fetch delegate is not set", log: log, type: .fault) + guard let flowDelegate = flowDelegate else { + os_log("The flow delegate is not set", log: log, type: .fault) return } - guard let flowDelegate = flowDelegate else { - os_log("The flow delegate is not set", log: log, type: .fault) + guard let networkReceivedMessage = networkFetchDelegate.getDecryptedMessage(messageId: messageId, flowId: flowId) else { + os_log("Could not get an ObvNetworkReceivedMessageDecrypted for message %@", log: self.log, type: .fault, messageId.debugDescription) return } @@ -1531,75 +1576,135 @@ extension ObvEngine { guard let _self = self else { return } - let obvMessage: ObvMessage - do { - try obvMessage = ObvMessage(messageId: messageId, networkFetchDelegate: networkFetchDelegate, identityDelegate: identityDelegate, within: obvContext) - } catch { - os_log("Could not construct an ObvMessage from the network message and its attachments", log: _self.log, type: .fault, messageId.debugDescription) - return - } - - // We create a completion handler that, once called, ask to delete the message if possible. - // It also specifies all the attachments that should be downloaded as soon as possible. - // All the other attachments should not be downloaded now. - - let allAttachments = Set(obvMessage.attachments) - let completionHandler: (Set) -> Void = { attachmentsToDownloadNow in + if networkReceivedMessage.fromIdentity == networkReceivedMessage.messageId.ownedCryptoIdentity { + + let obvOwnedMessage: ObvOwnedMessage + do { + try obvOwnedMessage = ObvOwnedMessage(networkReceivedMessage: networkReceivedMessage, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } catch { + os_log("Could not construct an ObvOwnedMessage from the network message and its attachments", log: _self.log, type: .fault, messageId.debugDescription) + return + } - // Manage the attachments: download those tht should automatically downloaded. - // For all the others, inform the flow delegate that the decision not to download these attachments has been taken. - // This eventually allows to end the flow. + // We create a completion handler that, once called, ask to delete the message if possible. + // It also specifies all the attachments that should be downloaded as soon as possible. + // All the other attachments should not be downloaded now. - let attachmentsToDownload = allAttachments.intersection(attachmentsToDownloadNow) - let attachmentsNotToDownload = allAttachments.subtracting(attachmentsToDownloadNow) + let allAttachments = Set(obvOwnedMessage.attachments) + let completionHandler: (Set) -> Void = { attachmentsToDownloadNow in + + // Manage the attachments: download those tht should automatically downloaded. + // For all the others, inform the flow delegate that the decision not to download these attachments has been taken. + // This eventually allows to end the flow. + + let attachmentsToDownload = allAttachments.intersection(attachmentsToDownloadNow) + let attachmentsNotToDownload = allAttachments.subtracting(attachmentsToDownloadNow) - for attachment in attachmentsToDownload { - networkFetchDelegate.resumeDownloadOfAttachment(attachmentId: attachment.attachmentId, flowId: flowId) + for attachment in attachmentsToDownload { + networkFetchDelegate.resumeDownloadOfAttachment(attachmentId: attachment.attachmentId, forceResume: false, flowId: flowId) + } + + for attachment in attachmentsNotToDownload { + flowDelegate.attachmentDownloadDecisionHasBeenTaken(attachmentId: attachment.attachmentId, flowId: flowId) + } + + // Request the deletion of the message whenever possible + + createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in + do { + networkFetchDelegate.markMessageForDeletion(messageId: obvOwnedMessage.messageId, within: obvContext) + try obvContext.save(logOnFailure: _self.log) + } catch { + os_log("Could not call deleteMessageWhenPossible", log: _self.log, type: .error) + } + } + } + + // Before notifying the app about this new message, we start a flow allowing to wait until the return receipt is sent. + // In practice, the app will save the new message is database, create the return receipt, pass it to the engine that will send it. + // Once this is done, the engine will stop the flow. + do { + _ = try flowDelegate.startBackgroundActivityForPostingReturnReceipt(messageId: messageId, attachmentNumber: nil) + } catch { + assertionFailure() + os_log("🧾 Failed to start a flow allowing to wait for the message return receipt to be sent", log: log, type: .fault) + // In production, continue anyway } - for attachment in attachmentsNotToDownload { - flowDelegate.attachmentDownloadDecisionHasBeenTaken(attachmentId: attachment.attachmentId, flowId: flowId) + ObvEngineNotificationNew.newOwnedMessageReceived(obvOwnedMessage: obvOwnedMessage, completionHandler: completionHandler) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + + } else { + + let obvMessage: ObvMessage + do { + try obvMessage = ObvMessage(networkReceivedMessage: networkReceivedMessage, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } catch { + os_log("Could not construct an ObvMessage from the network message and its attachments (2)", log: _self.log, type: .fault, messageId.debugDescription) + return } - // Request the deletion of the message whenever possible + // We create a completion handler that, once called, ask to delete the message if possible. + // It also specifies all the attachments that should be downloaded as soon as possible. + // All the other attachments should not be downloaded now. - createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - do { - networkFetchDelegate.markMessageForDeletion(messageId: obvMessage.messageId, within: obvContext) - try obvContext.save(logOnFailure: _self.log) - } catch { - os_log("Could not call deleteMessageWhenPossible", log: _self.log, type: .error) + let allAttachments = Set(obvMessage.attachments) + let completionHandler: (Set) -> Void = { attachmentsToDownloadNow in + + // Manage the attachments: download those tht should automatically downloaded. + // For all the others, inform the flow delegate that the decision not to download these attachments has been taken. + // This eventually allows to end the flow. + + let attachmentsToDownload = allAttachments.intersection(attachmentsToDownloadNow) + let attachmentsNotToDownload = allAttachments.subtracting(attachmentsToDownloadNow) + + for attachment in attachmentsToDownload { + networkFetchDelegate.resumeDownloadOfAttachment(attachmentId: attachment.attachmentId, forceResume: false, flowId: flowId) + } + + for attachment in attachmentsNotToDownload { + flowDelegate.attachmentDownloadDecisionHasBeenTaken(attachmentId: attachment.attachmentId, flowId: flowId) + } + + // Request the deletion of the message whenever possible + + createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in + do { + networkFetchDelegate.markMessageForDeletion(messageId: obvMessage.messageId, within: obvContext) + try obvContext.save(logOnFailure: _self.log) + } catch { + os_log("Could not call deleteMessageWhenPossible", log: _self.log, type: .error) + } } } + + // Before notifying the app about this new message, we start a flow allowing to wait until the return receipt is sent. + // In practice, the app will save the new message is database, create the return receipt, pass it to the engine that will send it. + // Once this is done, the engine will stop the flow. + do { + _ = try flowDelegate.startBackgroundActivityForPostingReturnReceipt(messageId: messageId, attachmentNumber: nil) + } catch { + assertionFailure() + os_log("🧾 Failed to start a flow allowing to wait for the message return receipt to be sent", log: log, type: .fault) + // In production, continue anyway + } + + ObvEngineNotificationNew.newMessageReceived(obvMessage: obvMessage, completionHandler: completionHandler) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + } - // Before notifying the app about this new message, we start a flow allowing to wait until the return receipt is sent. - // In practice, the app will save the new message is database, create the return receipt, pass it to the engine that will send it. - // Once this is done, the engine will stop the flow. - do { - _ = try flowDelegate.startBackgroundActivityForPostingReturnReceipt(messageId: messageId, attachmentNumber: nil) - } catch { - assertionFailure() - os_log("🧾 Failed to start a flow allowing to wait for the message return receipt to be sent", log: log, type: .fault) - // In production, continue anyway - } - - ObvEngineNotificationNew.newMessageReceived(obvMessage: obvMessage, completionHandler: completionHandler) - .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) - } } - private func processAttachmentDownloadedNotification(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + private func processAttachmentDownloadedNotification(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { let log = self.log os_log("We received an AttachmentDownloaded notification for the attachment %{public}@", log: log, type: .debug, attachmentId.debugDescription) - // We first check whether all the attachments of the message have been downloaded - guard let createContextDelegate = createContextDelegate else { os_log("The create context delegate is not set", log: log, type: .fault) return @@ -1610,11 +1715,6 @@ extension ObvEngine { return } - guard let identityDelegate = identityDelegate else { - os_log("The identity delegate is not set", log: log, type: .fault) - return - } - guard let flowDelegate = flowDelegate else { os_log("The flow delegate is not set", log: log, type: .fault) return @@ -1625,46 +1725,139 @@ extension ObvEngine { guard let _self = self else { return } - let obvAttachment: ObvAttachment - do { - try obvAttachment = ObvAttachment(attachmentId: attachmentId, networkFetchDelegate: networkFetchDelegate, identityDelegate: identityDelegate, within: obvContext) - } catch { - os_log("Could not construct an ObvAttachment of message %{public}@ (4)", log: _self.log, type: .fault, attachmentId.messageId.debugDescription) + guard let networkReceivedAttachment = networkFetchDelegate.getAttachment(withId: attachmentId, within: obvContext) else { + os_log("Could not get a network received attachment of message %{public}@ (4)", log: _self.log, type: .fault, attachmentId.messageId.debugDescription) return } - - // Before notifying the app about this downloaded attachment, we start a flow allowing to wait until the return receipt for this attachment is sent. - // In practice, the app will marks this attachment as "complete" in database, create the return receipt, pass it to the engine that will send it. - // Once this is done, the engine will stop the flow. - do { - _ = try flowDelegate.startBackgroundActivityForPostingReturnReceipt(messageId: attachmentId.messageId, attachmentNumber: attachmentId.attachmentNumber) - } catch { - assertionFailure() - os_log("🧾 Failed to start a flow allowing to wait for the message return receipt to be sent", log: log, type: .fault) - // In production, continue anyway + + if networkReceivedAttachment.fromCryptoIdentity == networkReceivedAttachment.attachmentId.messageId.ownedCryptoIdentity { + + let obvOwnedAttachment: ObvOwnedAttachment + do { + obvOwnedAttachment = try ObvOwnedAttachment(attachmentId: attachmentId, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } catch { + os_log("Could not construct an ObvOwnedAttachment of message %{public}@ (4)", log: _self.log, type: .fault, attachmentId.messageId.debugDescription) + return + } + + // Before notifying the app about this downloaded attachment, we start a flow allowing to wait until the return receipt for this attachment is sent. + // In practice, the app will marks this attachment as "complete" in database, create the return receipt, pass it to the engine that will send it. + // Once this is done, the engine will stop the flow. + do { + _ = try flowDelegate.startBackgroundActivityForPostingReturnReceipt(messageId: attachmentId.messageId, attachmentNumber: attachmentId.attachmentNumber) + } catch { + assertionFailure() + os_log("🧾 Failed to start a flow allowing to wait for the message return receipt to be sent", log: log, type: .fault) + // In production, continue anyway + } + + // We notify the app + + ObvEngineNotificationNew.ownedAttachmentDownloaded(obvOwnedAttachment: obvOwnedAttachment) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + + } else { + + let contactIdentifier = ObvContactIdentifier(contactCryptoIdentity: networkReceivedAttachment.fromCryptoIdentity, + ownedCryptoIdentity: networkReceivedAttachment.attachmentId.messageId.ownedCryptoIdentity) + + let obvAttachment: ObvAttachment + do { + try obvAttachment = ObvAttachment(attachmentId: attachmentId, fromContactIdentity: contactIdentifier, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } catch { + os_log("Could not construct an ObvAttachment of message %{public}@ (4)", log: _self.log, type: .fault, attachmentId.messageId.debugDescription) + return + } + + // Before notifying the app about this downloaded attachment, we start a flow allowing to wait until the return receipt for this attachment is sent. + // In practice, the app will marks this attachment as "complete" in database, create the return receipt, pass it to the engine that will send it. + // Once this is done, the engine will stop the flow. + do { + _ = try flowDelegate.startBackgroundActivityForPostingReturnReceipt(messageId: attachmentId.messageId, attachmentNumber: attachmentId.attachmentNumber) + } catch { + assertionFailure() + os_log("🧾 Failed to start a flow allowing to wait for the message return receipt to be sent", log: log, type: .fault) + // In production, continue anyway + } + + // We notify the app + + ObvEngineNotificationNew.attachmentDownloaded(obvAttachment: obvAttachment) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + + } - - // We notify the app - - ObvEngineNotificationNew.attachmentDownloaded(obvAttachment: obvAttachment) - .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + } } - private func processInboxAttachmentDownloadWasResumed(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + private func processInboxAttachmentDownloadWasResumed(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { os_log("We received an InboxAttachmentDownloadWasResumed notification from the network fetch manager for the attachment %{public}@", log: log, type: .debug, attachmentId.debugDescription) - let ownCryptoId = ObvCryptoId(cryptoIdentity: attachmentId.messageId.ownedCryptoIdentity) - ObvEngineNotificationNew.attachmentDownloadWasResumed(ownCryptoId: ownCryptoId, messageIdentifierFromEngine: attachmentId.messageId.uid.raw, attachmentNumber: attachmentId.attachmentNumber) - .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + + guard let createContextDelegate else { assertionFailure(); return } + guard let networkFetchDelegate = networkFetchDelegate else { assertionFailure(); return } + + let randomFlowId = FlowIdentifier() + createContextDelegate.performBackgroundTask(flowId: randomFlowId) { [weak self] (obvContext) in + + guard let _self = self else { return } + + guard let networkReceivedAttachment = networkFetchDelegate.getAttachment(withId: attachmentId, within: obvContext) else { + os_log("Could not get a network received attachment of message %{public}@ (4)", log: _self.log, type: .fault, attachmentId.messageId.debugDescription) + return + } + + let ownCryptoId = ObvCryptoId(cryptoIdentity: attachmentId.messageId.ownedCryptoIdentity) + + if networkReceivedAttachment.fromCryptoIdentity == networkReceivedAttachment.attachmentId.messageId.ownedCryptoIdentity { + + ObvEngineNotificationNew.ownedAttachmentDownloadWasResumed(ownCryptoId: ownCryptoId, messageIdentifierFromEngine: attachmentId.messageId.uid.raw, attachmentNumber: attachmentId.attachmentNumber) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + + } else { + + ObvEngineNotificationNew.attachmentDownloadWasResumed(ownCryptoId: ownCryptoId, messageIdentifierFromEngine: attachmentId.messageId.uid.raw, attachmentNumber: attachmentId.attachmentNumber) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + + } + + } } - private func processInboxAttachmentDownloadWasPaused(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + private func processInboxAttachmentDownloadWasPaused(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { os_log("We received an InboxAttachmentDownloadWasPaused notification from the network fetch manager for the attachment %{public}@", log: log, type: .debug, attachmentId.debugDescription) - let ownCryptoId = ObvCryptoId(cryptoIdentity: attachmentId.messageId.ownedCryptoIdentity) - ObvEngineNotificationNew.attachmentDownloadWasPaused(ownCryptoId: ownCryptoId, messageIdentifierFromEngine: attachmentId.messageId.uid.raw, attachmentNumber: attachmentId.attachmentNumber) - .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) + + guard let createContextDelegate else { assertionFailure(); return } + guard let networkFetchDelegate = networkFetchDelegate else { assertionFailure(); return } + + let randomFlowId = FlowIdentifier() + createContextDelegate.performBackgroundTask(flowId: randomFlowId) { [weak self] (obvContext) in + + guard let _self = self else { return } + + guard let networkReceivedAttachment = networkFetchDelegate.getAttachment(withId: attachmentId, within: obvContext) else { + os_log("Could not get a network received attachment of message %{public}@ (4)", log: _self.log, type: .fault, attachmentId.messageId.debugDescription) + return + } + + let ownCryptoId = ObvCryptoId(cryptoIdentity: attachmentId.messageId.ownedCryptoIdentity) + + if networkReceivedAttachment.fromCryptoIdentity == networkReceivedAttachment.attachmentId.messageId.ownedCryptoIdentity { + + ObvEngineNotificationNew.ownedAttachmentDownloadWasPaused(ownCryptoId: ownCryptoId, messageIdentifierFromEngine: attachmentId.messageId.uid.raw, attachmentNumber: attachmentId.attachmentNumber) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + + + } else { + + ObvEngineNotificationNew.attachmentDownloadWasPaused(ownCryptoId: ownCryptoId, messageIdentifierFromEngine: attachmentId.messageId.uid.raw, attachmentNumber: attachmentId.attachmentNumber) + .postOnBackgroundQueue(_self.queueForPostingNotificationsToTheApp, within: _self.appNotificationCenter) + + } + + } } @@ -1682,17 +1875,17 @@ extension ObvEngine { .postOnBackgroundQueue(queueForPostingNotificationsToTheApp, within: appNotificationCenter) } - + /// Thanks to a internal notification within the Oblivious Engine, this method gets called when an Oblivious channel is confirmed. Within this method, we send a similar notification through the default notification center so as to let the App be notified. private func processNewConfirmedObliviousChannelNotification(currentDeviceUid: UID, remoteCryptoIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) { os_log("We received a NewConfirmedObliviousChannel notification", log: log, type: .info) - guard let createContextDelegate = createContextDelegate else { + guard let createContextDelegate else { os_log("The create context delegate is not set", log: log, type: .fault) return } - guard let identityDelegate = identityDelegate else { + guard let identityDelegate else { os_log("The identity delegate is not set", log: log, type: .fault) return } @@ -1705,7 +1898,7 @@ extension ObvEngine { // Determine the owned identity related to the current device uid guard let ownedCryptoIdentity = try? identityDelegate.getOwnedIdentityOfCurrentDeviceUid(currentDeviceUid, within: obvContext) else { - os_log("The device uid does not correspond to any owned identity", log: _self.log, type: .fault) + os_log("The device uid does not correspond to any owned identity (6)", log: _self.log, type: .fault) return } @@ -1714,23 +1907,24 @@ extension ObvEngine { // - a contact device // For each case, we have an appropriate notification to send - if let remoteOwnedDevice = ObvRemoteOwnedDevice(remoteOwnedDeviceUid: remoteDeviceUid, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) { - - os_log("The channel was created with a remote owned device %@", log: _self.log, type: .info, remoteOwnedDevice.description) - - } else if let contactDevice = ObvContactDevice(contactDeviceUid: remoteDeviceUid, contactCryptoIdentity: remoteCryptoIdentity, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) { + if ownedCryptoIdentity == remoteCryptoIdentity { - os_log("The channel was created with a contact device", log: _self.log, type: .info) - - ObvEngineNotificationNew.newObliviousChannelWithContactDevice(obvContactDevice: contactDevice) + os_log("The channel was created with a remote owned device %@", log: _self.log, type: .info, remoteDeviceUid.description) + + ObvEngineNotificationNew.newConfirmedObliviousChannelWithRemoteOwnedDevice .postOnBackgroundQueue(within: _self.appNotificationCenter) - + } else { - assertionFailure() - os_log("We could not determine any appropriate remote device", log: _self.log, type: .fault) + os_log("The channel was created with a contact device %@", log: _self.log, type: .info, remoteDeviceUid.description) + + let obvContactIdentifier = ObvContactIdentifier(contactCryptoIdentity: remoteCryptoIdentity, ownedCryptoIdentity: ownedCryptoIdentity) + ObvEngineNotificationNew.newObliviousChannelWithContactDevice(obvContactIdentifier: obvContactIdentifier) + .postOnBackgroundQueue(within: _self.appNotificationCenter) + } + } } diff --git a/Engine/ObvEngine/ObvEngine/ObvEngine.swift b/Engine/ObvEngine/ObvEngine/ObvEngine.swift index 228fd1f2..c540bf7f 100644 --- a/Engine/ObvEngine/ObvEngine/ObvEngine.swift +++ b/Engine/ObvEngine/ObvEngine/ObvEngine.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -35,6 +35,7 @@ import ObvEncoder import UserNotifications import ObvServerInterface import ObvBackupManager +import ObvSyncSnapshotManager import OlvidUtils import JWS @@ -49,6 +50,7 @@ public final class ObvEngine: ObvManager { let appNotificationCenter: NotificationCenter let returnReceiptSender: ReturnReceiptSender private let transactionsHistoryReplayer: TransactionsHistoryReplayer + private let protocolWaiter: ProtocolWaiter static let defaultLogSubsystem = "io.olvid.engine" public var logSubsystem: String = ObvEngine.defaultLogSubsystem @@ -62,6 +64,12 @@ public final class ObvEngine: ObvManager { let dispatchQueueForPushNotificationRegistration = DispatchQueue(label: "dispatchQueueForPushNotificationRegistration") + private let queueForComposedOperations = { + let queue = OperationQueue() + queue.name = "ObvEngine/EngineCoordinator queue for composed operations" + return queue + }() + // We define a special queue for posting newObvReturnReceiptToProcess notifications to fix a bug occurring when a lot of return receipts are received at once. // In that case, creating one thread per receipt can lead to a complete hang of Olvid. Using one fixed thread (together with a fix made at the App level) should prevent the bug. let queueForPostingNewObvReturnReceiptToProcessNotifications = DispatchQueue(label: "Queue for posting a newObvReturnReceiptToProcess notification") @@ -106,11 +114,18 @@ public final class ObvEngine: ObvManager { prng: prng, sharedContainerIdentifier: sharedContainerIdentifier, supportBackgroundDownloadTasks: supportBackgroundTasks, - remoteNotificationByteIdentifierForServer: ObvEngineConstants.remoteNotificationByteIdentifierForServer)) + remoteNotificationByteIdentifierForServer: ObvEngineConstants.remoteNotificationByteIdentifierForServer, + logPrefix: logPrefix)) // ObvSolveChallengeDelegate, ObvKeyWrapperForIdentityDelegate, ObvIdentityDelegate, ObvKemForIdentityDelegate - obvManagers.append(ObvIdentityManagerImplementation(sharedContainerIdentifier: sharedContainerIdentifier, prng: prng, identityPhotosDirectory: identityPhotos)) + let identityManager = ObvIdentityManagerImplementation(sharedContainerIdentifier: sharedContainerIdentifier, prng: prng, identityPhotosDirectory: identityPhotos) + obvManagers.append(identityManager) + // ObvSyncSnapshotDelegate + let obvSyncSnapshotManagerImplementation = ObvSyncSnapshotManagerImplementation() + // obvSyncSnapshotManagerImplementation.registerIdentityObvSyncSnapshotNodeMaker(identityManager) + obvManagers.append(obvSyncSnapshotManagerImplementation) + // ObvProcessDownloadedMessageDelegate, ObvChannelDelegate let channelManager = ObvChannelManagerImplementation(readOnly: false) obvManagers.append(channelManager) @@ -261,8 +276,9 @@ public final class ObvEngine: ObvManager { self.appNotificationCenter = appNotificationCenter self.returnReceiptSender = ReturnReceiptSender(prng: prng) self.transactionsHistoryReplayer = TransactionsHistoryReplayer(sharedContainerIdentifier: sharedContainerIdentifier, appType: appType) - self.engineCoordinator = EngineCoordinator(logSubsystem: logSubsystem, prng: self.prng, appNotificationCenter: appNotificationCenter) + self.engineCoordinator = EngineCoordinator(logSubsystem: logSubsystem, prng: self.prng, queueForComposedOperations: queueForComposedOperations, appNotificationCenter: appNotificationCenter) delegateManager = ObvMetaManager() + self.protocolWaiter = ProtocolWaiter(delegateManager: delegateManager, prng: prng) prependLogSubsystem(with: logPrefix) @@ -279,6 +295,7 @@ public final class ObvEngine: ObvManager { try registerToInternalNotifications() self.transactionsHistoryReplayer.createContextDelegate = self.createContextDelegate self.transactionsHistoryReplayer.networkPostDelegate = self.networkPostDelegate + } public func finalizeInitialization(flowId: FlowIdentifier, runningLog: RunningLogError) throws {} @@ -359,6 +376,7 @@ extension ObvEngine { var createContextDelegate: ObvCreateContextDelegate? { if delegateManager.createContextDelegate == nil { os_log("The create context delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.createContextDelegate } @@ -366,6 +384,7 @@ extension ObvEngine { var identityDelegate: ObvIdentityDelegate? { if delegateManager.identityDelegate == nil { os_log("The identity delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.identityDelegate } @@ -373,6 +392,7 @@ extension ObvEngine { var solveChallengeDelegate: ObvSolveChallengeDelegate? { if delegateManager.solveChallengeDelegate == nil { os_log("The solve challenge delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.solveChallengeDelegate } @@ -380,6 +400,7 @@ extension ObvEngine { var notificationDelegate: ObvNotificationDelegate? { if delegateManager.notificationDelegate == nil { os_log("The notification delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.notificationDelegate } @@ -387,6 +408,7 @@ extension ObvEngine { var channelDelegate: ObvChannelDelegate? { if delegateManager.channelDelegate == nil { os_log("The channel delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.channelDelegate } @@ -394,6 +416,7 @@ extension ObvEngine { var protocolDelegate: ObvProtocolDelegate? { if delegateManager.protocolDelegate == nil { os_log("The protocol delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.protocolDelegate } @@ -401,6 +424,7 @@ extension ObvEngine { var networkFetchDelegate: ObvNetworkFetchDelegate? { if delegateManager.networkFetchDelegate == nil { os_log("The network fetch delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.networkFetchDelegate } @@ -408,6 +432,7 @@ extension ObvEngine { var networkPostDelegate: ObvNetworkPostDelegate? { if delegateManager.networkPostDelegate == nil { os_log("The network post delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.networkPostDelegate } @@ -415,6 +440,7 @@ extension ObvEngine { var flowDelegate: ObvFlowDelegate? { if delegateManager.flowDelegate == nil { os_log("The flow delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.flowDelegate } @@ -422,9 +448,19 @@ extension ObvEngine { var backupDelegate: ObvBackupDelegate? { if delegateManager.backupDelegate == nil { os_log("The backup delegate is not set", log: log, type: .fault) + assertionFailure() } return delegateManager.backupDelegate } + + var syncSnapshotDelegate: ObvSyncSnapshotDelegate? { + if delegateManager.syncSnapshotDelegate == nil { + os_log("The sync snapshot delegate is not set", log: log, type: .fault) + assertionFailure() + } + return delegateManager.syncSnapshotDelegate + } + } // MARK: - Public API for managing the database @@ -463,7 +499,7 @@ extension ObvEngine: ObvErrorMaker { assert(!Thread.isMainThread) guard let networkPostDelegate = networkPostDelegate else { assertionFailure(); return } let flowId = FlowIdentifier() - guard let messageIdentifier = MessageIdentifier(rawOwnedCryptoIdentity: ownedIdentity.cryptoIdentity.getIdentity(), rawUid: messageIdentifierFromEngine) else { + guard let messageIdentifier = ObvMessageIdentifier(rawOwnedCryptoIdentity: ownedIdentity.cryptoIdentity.getIdentity(), rawUid: messageIdentifierFromEngine) else { assertionFailure() return } @@ -478,8 +514,8 @@ extension ObvEngine { public func getOwnedIdentity(with cryptoId: ObvCryptoId) throws -> ObvOwnedIdentity { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let randomFlowId = FlowIdentifier() var obvOwnedIdentity: ObvOwnedIdentity! @@ -495,8 +531,8 @@ extension ObvEngine { public func getOwnedIdentities() throws -> Set { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let randomFlowId = FlowIdentifier() var ownedObvIdentities: Set! @@ -526,9 +562,9 @@ extension ObvEngine { } - public func generateOwnedIdentity(withApiKey apiKey: UUID, onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, keycloakState: ObvKeycloakState?) async throws -> ObvCryptoId { + public func generateOwnedIdentity(onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, nameForCurrentDevice: String, keycloakState: ObvKeycloakState?) async throws -> ObvCryptoId { return try await withCheckedThrowingContinuation { [weak self] continuation in - self?.generateOwnedIdentity(withApiKey: apiKey, onServerURL: serverURL, with: identityDetails, keycloakState: keycloakState, completion: { result in + self?.generateOwnedIdentity(onServerURL: serverURL, with: identityDetails, nameForCurrentDevice: nameForCurrentDevice, keycloakState: keycloakState, completion: { result in switch result { case .failure(let failure): continuation.resume(throwing: failure) @@ -540,26 +576,43 @@ extension ObvEngine { } - private func generateOwnedIdentity(withApiKey apiKey: UUID, onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, keycloakState: ObvKeycloakState?, completion: @escaping (Result) -> Void) { + private func generateOwnedIdentity(onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, nameForCurrentDevice: String, keycloakState: ObvKeycloakState?, completion: @escaping (Result) -> Void) { // At this point, we should not pass signed details to the identity manager. assert(identityDetails.coreDetails.signedUserDetails == nil) - guard let createContextDelegate = createContextDelegate else { completion(.failure(makeError(message: "The context delegate is not set"))); return } - guard let identityDelegate = identityDelegate else { completion(.failure(makeError(message: "The identity delegate is not set"))); return } + guard let createContextDelegate else { completion(.failure(ObvError.createContextDelegateIsNil)); return } + guard let identityDelegate else { completion(.failure(ObvError.identityDelegateIsNil)); return } let flowId = FlowIdentifier() do { try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in - guard let ownedCryptoIdentity = identityDelegate.generateOwnedIdentity(withApiKey: apiKey, onServerURL: serverURL, with: identityDetails, keycloakState: keycloakState, using: prng, within: obvContext) else { + guard let ownedCryptoIdentity = identityDelegate.generateOwnedIdentity( + onServerURL: serverURL, + with: identityDetails, + nameForCurrentDevice: nameForCurrentDevice, + keycloakState: keycloakState, + using: prng, + within: obvContext) + else { throw makeError(message: "Could not generate owned identity") } + let publishedIdentityDetails = try identityDelegate.getPublishedIdentityDetailsOfOwnedIdentity(ownedCryptoIdentity, within: obvContext) let ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedCryptoIdentity) try startIdentityDetailsPublicationProtocol(ownedIdentity: ownedCryptoId, publishedIdentityDetailsVersion: publishedIdentityDetails.ownedIdentityDetailsElements.version, within: obvContext) + + let ownedDeviceUID = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedCryptoId.cryptoIdentity, within: obvContext) + + try startOwnedDeviceManagementProtocolForSettingOwnedDeviceName( + ownedCryptoId: ownedCryptoId, + ownedDeviceUID: ownedDeviceUID, + ownedDeviceName: nameForCurrentDevice, + within: obvContext) + try obvContext.save(logOnFailure: log) completion(.success(ObvCryptoId(cryptoIdentity: ownedCryptoIdentity))) } @@ -571,80 +624,35 @@ extension ObvEngine { } - public func deleteOwnedIdentity(with ownedCryptoId: ObvCryptoId, notifyContacts: Bool) throws { + public func deleteOwnedIdentity(with ownedCryptoId: ObvCryptoId, globalOwnedIdentityDeletion: Bool) throws { - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let networkPostDelegate = networkPostDelegate else { throw makeError(message: "The network post delegate is not set") } - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "networkFetchDelegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } let ownedCryptoIdentity = ownedCryptoId.cryptoIdentity let flowId = FlowIdentifier() - try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in - - // To delete an owned identity, we launch a protocol that will take care of everything except : - // - deleting sent/received messages - // - deleting ObvDialogs - // So we delete these items now. - - do { - let obvDialogs = try PersistedEngineDialog.getAll(appNotificationCenter: appNotificationCenter, within: obvContext) - for obvDialog in obvDialogs { - guard obvDialog.obvDialog?.ownedCryptoId == ownedCryptoId else { continue } - try? deleteDialog(with: obvDialog.uuid, within: obvContext) - } - } - - try protocolDelegate.prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ownedCryptoIdentity, within: obvContext) - try networkPostDelegate.prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ownedCryptoIdentity, within: obvContext) - try networkFetchDelegate.prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ownedCryptoIdentity, within: obvContext) - - // We can now launch the protocol taking care of the rest - + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in let message = try protocolDelegate.getInitiateOwnedIdentityDeletionMessage( ownedCryptoIdentityToDelete: ownedCryptoIdentity, - notifyContacts: notifyContacts, - flowId: flowId) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + globalOwnedIdentityDeletion: globalOwnedIdentityDeletion) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } } - public func getApiKeyForOwnedIdentity(with ownedCryptoId: ObvCryptoId) throws -> UUID { - - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - - let randomFlowId = FlowIdentifier() - var apiKey: UUID! - var error: Error? - createContextDelegate.performBackgroundTaskAndWait(flowId: randomFlowId) { (obvContext) in - do { - apiKey = try identityDelegate.getApiKeyOfOwnedIdentity(ownedCryptoId.cryptoIdentity, within: obvContext) - } catch let _error { - error = _error - } - } - guard error == nil else { - throw error! - } - return apiKey - - } - - - public func queryAPIKeyStatus(for identity: ObvCryptoId, apiKey: UUID) { + public func queryAPIKeyStatus(for identity: ObvCryptoId, apiKey: UUID) async throws -> APIKeyElements { + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } let randomFlowId = FlowIdentifier() - networkFetchDelegate?.queryAPIKeyStatus(for: identity.cryptoIdentity, apiKey: apiKey, flowId: randomFlowId) + return try await networkFetchDelegate.queryAPIKeyStatus(for: identity.cryptoIdentity, apiKey: apiKey, flowId: randomFlowId) } /// This is called during onboarding, when the user wants to check that the server and api key she entered is valid. - public func queryAPIKeyStatus(serverURL: URL, apiKey: UUID) { + public func queryAPIKeyStatus(serverURL: URL, apiKey: UUID) async throws -> APIKeyElements { do { let pkEncryptionImplemByteId = ObvCryptoSuite.sharedInstance.getDefaultPublicKeyEncryptionImplementationByteId() let authEmplemByteId = ObvCryptoSuite.sharedInstance.getDefaultAuthenticationImplementationByteId() @@ -653,219 +661,512 @@ extension ObvEngine { andPublicKeyEncryptionImplementationByteId: pkEncryptionImplemByteId, using: prng) let dummyOwnedCryptoId = ObvCryptoId(cryptoIdentity: dummyOwnedIdentity.getObvCryptoIdentity()) - queryAPIKeyStatus(for: dummyOwnedCryptoId, apiKey: apiKey) + return try await queryAPIKeyStatus(for: dummyOwnedCryptoId, apiKey: apiKey) } } - /// This method allows to set the api key of an owned identity. If the identity is managed by a keycloak server, the caller must pass the URL of this server, otherwise - /// this method fails. This protects agains setting "custom" (free trial or other) api keys for a managed owned identity. - public func setAPIKey(for identity: ObvCryptoId, apiKey: UUID, keycloakServerURL: URL? = nil) throws { + public func registerOwnedAPIKeyOnServerNow(ownedCryptoId: ObvCryptoId, apiKey: UUID) async throws -> ObvRegisterApiKeyResult { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "createContextDelegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "identityDelegate is not set") } - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "networkFetchDelegate is not set") } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } - let log = self.log + let ownedCryptoIdentity = ownedCryptoId.cryptoIdentity + let flowId = FlowIdentifier() - queueForSynchronizingCallsToManagers.async { - let randomFlowId = FlowIdentifier() - createContextDelegate.performBackgroundTask(flowId: randomFlowId) { (obvContext) in + // Make sure the owned identity is active and that it is *not* keycloak managed + + guard try identityDelegate.isOwnedIdentityActive(ownedIdentity: ownedCryptoIdentity, flowId: flowId) else { + throw ObvError.ownedIdentityIsNotActive + } + + guard try await !isOwnedIdentityKeycloakManaged(ownedIdentity: ownedCryptoIdentity, flowId: flowId) else { + throw ObvError.ownedIdentityIsKeycloakManaged + } + + let result = try await networkFetchDelegate.registerOwnedAPIKeyOnServerNow(ownedCryptoIdentity: ownedCryptoIdentity, apiKey: apiKey, flowId: flowId) + + return result + + } + + + private func isOwnedIdentityKeycloakManaged(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> Bool { + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in do { - try identityDelegate.setAPIKey(apiKey, forOwnedIdentity: identity.cryptoIdentity, keycloakServerURL: keycloakServerURL, within: obvContext) - try networkFetchDelegate.resetServerSession(for: identity.cryptoIdentity, within: obvContext) + let isKeycloakManaged = try identityDelegate.isOwnedIdentityKeycloakManaged(ownedIdentity: ownedIdentity, within: obvContext) + continuation.resume(returning: isKeycloakManaged) } catch { - os_log("Could not set new API Key / reset user's server session: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return + continuation.resume(throwing: error) } + } + } + } + + + public func registerThenSaveKeycloakAPIKey(ownedCryptoId: ObvCryptoId, apiKey: UUID) async throws { + + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } + + let ownedCryptoIdentity = ownedCryptoId.cryptoIdentity + let flowId = FlowIdentifier() + + // Make sure the owned identity is active and that it is keycloak managed + + guard try identityDelegate.isOwnedIdentityActive(ownedIdentity: ownedCryptoIdentity, flowId: flowId) else { + throw ObvError.ownedIdentityIsNotActive + } + + guard try await isOwnedIdentityKeycloakManaged(ownedIdentity: ownedCryptoIdentity, flowId: flowId) else { + throw ObvError.ownedIdentityIsNotKeycloakManaged + } + + let result = try await networkFetchDelegate.registerOwnedAPIKeyOnServerNow(ownedCryptoIdentity: ownedCryptoIdentity, apiKey: apiKey, flowId: flowId) + + switch result { + case .failed: + throw ObvError.couldNotRegisterAPIKey + case .invalidAPIKey: + throw ObvError.couldNotRegisterAPIKeyAsItIsInvalid + case .success: + break + } + + // If we reach this point, the api key registration was a success. We save it within the identity manager + + try await saveRegisteredKeycloakAPIKey(ownedCryptoIdentity: ownedCryptoIdentity, apiKey: apiKey, flowId: flowId) + + } + + + private func saveRegisteredKeycloakAPIKey(ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws { + + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + + let log = self.log + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in do { + try identityDelegate.saveRegisteredKeycloakAPIKey(ownedCryptoIdentity: ownedCryptoIdentity, apiKey: apiKey, within: obvContext) try obvContext.save(logOnFailure: log) + continuation.resume() } catch { - os_log("Could not set API Key: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return + continuation.resume(throwing: error) } } } } - /// Queries the server associated to the owned identity for a free trial API Key. - public func queryServerForFreeTrial(for identity: ObvCryptoId, retrieveAPIKey: Bool) throws { - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "networkFetchDelegate is not set") } + + public func getKeycloakAPIKey(ownedCryptoId: ObvCryptoId) async throws -> UUID? { + + let ownedCryptoIdentity = ownedCryptoId.cryptoIdentity let flowId = FlowIdentifier() - networkFetchDelegate.queryFreeTrial(for: identity.cryptoIdentity, retrieveAPIKey: retrieveAPIKey, flowId: flowId) + + return try await getRegisteredKeycloakAPIKey(ownedCryptoIdentity: ownedCryptoIdentity, flowId: flowId) + } - public func processAppStorePurchase(for ownedCryptoIds: Set, receiptData: String, transactionIdentifier: String) { - guard let networkFetchDelegate = networkFetchDelegate else { assertionFailure(); return } + private func getRegisteredKeycloakAPIKey(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> UUID? { + + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + let apiKey = try identityDelegate.getRegisteredKeycloakAPIKey(ownedCryptoIdentity: ownedCryptoIdentity, within: obvContext) + continuation.resume(returning: apiKey) + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + public func queryServerForFreeTrial(for identity: ObvCryptoId) async throws -> Bool { + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } let flowId = FlowIdentifier() - let ownedCryptoIdentities = ownedCryptoIds.map { $0.cryptoIdentity } - networkFetchDelegate.verifyReceipt(ownedCryptoIdentities: Array(ownedCryptoIdentities), receiptData: receiptData, transactionIdentifier: transactionIdentifier, flowId: flowId) + let freeTrialAvailable = try await networkFetchDelegate.queryFreeTrial(for: identity.cryptoIdentity, flowId: flowId) + return freeTrialAvailable } - public func refreshAPIPermissions(for identity: ObvCryptoId) throws { - - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "createContextDelegate is not set") } - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "networkFetchDelegate is not set") } + public func startFreeTrial(for identity: ObvCryptoId) async throws -> APIKeyElements { + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } + let flowId = FlowIdentifier() + let newAPIKeyElements = try await networkFetchDelegate.startFreeTrial(for: identity.cryptoIdentity, flowId: flowId) + return newAPIKeyElements + } - let log = self.log + + public func processAppStorePurchase(signedAppStoreTransactionAsJWS: String, transactionIdentifier: UInt64) async throws -> [ObvCryptoId: ObvAppStoreReceipt.VerificationStatus] { + + guard let networkFetchDelegate else { assertionFailure(); throw ObvError.networkFetchDelegateIsNil } - let randomFlowId = FlowIdentifier() - createContextDelegate.performBackgroundTask(flowId: randomFlowId) { (obvContext) in - do { - try networkFetchDelegate.resetServerSession(for: identity.cryptoIdentity, within: obvContext) - } catch { - os_log("Could not reset user's server session: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - do { - try obvContext.save(logOnFailure: log) - } catch { - os_log("Could not set API Key: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return - } + let flowId = FlowIdentifier() + + // The purchase must be processed for all active owned identities that are not keycloak managed + + let ownedCryptoIdentities = try await getActiveOwnedIdentitiesThatAreNotKeycloakManaged(flowId: flowId) + + guard !ownedCryptoIdentities.isEmpty else { + return [:] + } + + let appStoreReceiptElements = ObvAppStoreReceipt( + ownedCryptoIdentities: ownedCryptoIdentities, + signedAppStoreTransactionAsJWS: signedAppStoreTransactionAsJWS, + transactionIdentifier: transactionIdentifier) + + let results = try await networkFetchDelegate.verifyReceiptAndRefreshAPIPermissions(appStoreReceiptElements: appStoreReceiptElements, flowId: flowId) + return results.map({ ($0.key, $0.value) }).reduce(into: [:]) { dictToReturn, values in + dictToReturn[ObvCryptoId(cryptoIdentity: values.0)] = values.1 } } - public func registerToPushNotificationFor(deviceTokens: (pushToken: Data, voipToken: Data?)?, kickOtherDevices: Bool, useMultiDevice: Bool, completion: @escaping (Result) -> Void) throws { + public func refreshAPIPermissions(of ownedCryptoId: ObvCryptoId) async throws -> APIKeyElements { + + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "The network fetch delegate is not set") } + let flowId = FlowIdentifier() - let log = self.log + let apiKeyElements = try await networkFetchDelegate.refreshAPIPermissions(of: ownedCryptoId.cryptoIdentity, flowId: flowId) + + return apiKeyElements + + } + + + public func requestRegisterToPushNotificationsForAllActiveOwnedIdentities(deviceTokens: (pushToken: Data, voipToken: Data?)?, defaultDeviceNameForFirstRegistration: String) async throws { + + let flowId = FlowIdentifier() + + let activeOwnedIdentitiesAndCurrentDeviceNames = try await getActiveOwnedIdentitiesAndCurrentDeviceNames(flowId: flowId) - dispatchQueueForPushNotificationRegistration.async { + for (activeOwnedIdentity, currentDeviceName) in activeOwnedIdentitiesAndCurrentDeviceNames { - let flowId = FlowIdentifier() - createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in + try await requestRegisterToPushNotificationsForActiveOwnedIdentity( + ownedIdentity: activeOwnedIdentity, + deviceTokens: deviceTokens, + deviceNameForFirstRegistration: currentDeviceName ?? defaultDeviceNameForFirstRegistration, + optionalParameter: .none, + flowId: flowId) + + } - let ownedIdentities: Set + } + + + private func getActiveOwnedIdentitiesAndCurrentDeviceNames(flowId: FlowIdentifier) async throws -> [ObvCryptoIdentity: String?] { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation< [ObvCryptoIdentity: String?], Error>) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in do { - ownedIdentities = try identityDelegate.getOwnedIdentities(within: obvContext) + let values = try identityDelegate.getActiveOwnedIdentitiesAndCurrentDeviceName(within: obvContext) + continuation.resume(returning: values) } catch { - os_log("Could not register to push notifications: %{public}@", log: log, type: .fault, error.localizedDescription) - completion(.failure(error)) - return + continuation.resume(throwing: error) } + } + } + + } - guard !ownedIdentities.isEmpty else { - os_log("Could not register to push notifications: Could not find any owned identity in database", log: log, type: .fault) - completion(.failure(ObvEngine.makeError(message: "Could not register to push notifications: Could not find any owned identity in database"))) - return - } + + private func getActiveOwnedIdentitiesThatAreNotKeycloakManaged(flowId: FlowIdentifier) async throws -> Set { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } - ownedIdentities.forEach { (ownedIdentity) in - if let currentDeviceUid = try? identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext), - let maskingUID = try? identityDelegate.getFreshMaskingUIDForPushNotifications(for: ownedIdentity, within: obvContext), - let keycloakPushTopics = try? identityDelegate.getKeycloakPushTopics(ownedCryptoIdentity: ownedIdentity, within: obvContext) { - let remotePushNotification: ObvPushNotificationType - let parameters = ObvPushNotificationParameters(kickOtherDevices: kickOtherDevices, useMultiDevice: useMultiDevice, keycloakPushTopics: keycloakPushTopics) - if let tokens = deviceTokens { - remotePushNotification = ObvPushNotificationType.remote( - ownedCryptoId: ownedIdentity, - currentDeviceUID: currentDeviceUid, - pushToken: tokens.pushToken, - voipToken: tokens.voipToken, - maskingUID: maskingUID, - parameters: parameters) - } else { - remotePushNotification = ObvPushNotificationType.registerDeviceUid( - ownedCryptoId: ownedIdentity, - currentDeviceUID: currentDeviceUid, - parameters: parameters) - } - networkFetchDelegate.registerPushNotification(remotePushNotification, flowId: obvContext.flowId) - } - } - + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation< Set, Error>) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in do { - if obvContext.context.hasChanges { - try obvContext.save(logOnFailure: log) - } + let activeOwnedIdentities = try identityDelegate.getActiveOwnedIdentitiesThatAreNotKeycloakManaged(within: obvContext) + continuation.resume(returning: activeOwnedIdentities) } catch { - assertionFailure() + continuation.resume(throwing: error) } - - completion(.success(())) - } } } + - public func updatePublishedIdentityDetailsOfOwnedIdentity(with ownedCryptoId: ObvCryptoId, with newIdentityDetails: ObvIdentityDetails) throws { - - assert(!Thread.isMainThread) + public func reactivateOwnedIdentity(ownedCryptoId: ObvCryptoId, deviceTokens: (pushToken: Data, voipToken: Data?)?, deviceNameForFirstRegistration: String, replacedDeviceIdentifier: Data?) async throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } - let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() - try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in - try identityDelegate.updatePublishedIdentityDetailsOfOwnedIdentity(ownedCryptoId.cryptoIdentity, - with: newIdentityDetails, - within: obvContext) - let version = try identityDelegate.getPublishedIdentityDetailsOfOwnedIdentity(ownedCryptoId.cryptoIdentity, within: obvContext).ownedIdentityDetailsElements.version - try startIdentityDetailsPublicationProtocol(ownedIdentity: ownedCryptoId, publishedIdentityDetailsVersion: version, within: obvContext) - try obvContext.save(logOnFailure: log) + let replacedDeviceUid: UID? + if let replacedDeviceIdentifier { + replacedDeviceUid = UID(uid: replacedDeviceIdentifier) + } else { + replacedDeviceUid = nil } - } - - public func queryServerWellKnown(serverURL: URL) throws { - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "The network fetch delegate is not set") } let flowId = FlowIdentifier() - networkFetchDelegate.queryServerWellKnown(serverURL: serverURL, flowId: flowId) - } - public func getOwnedIdentityKeycloakState(with ownedCryptoId: ObvCryptoId) throws -> (obvKeycloakState: ObvKeycloakState?, signedOwnedDetails: SignedObvKeycloakUserDetails?) { + guard try !identityDelegate.isOwnedIdentityActive(ownedIdentity: ownedCryptoId.cryptoIdentity, flowId: flowId) else { + return + } - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + try await requestRegisterToPushNotificationsForActiveOwnedIdentity( + ownedIdentity: ownedCryptoId.cryptoIdentity, + deviceTokens: deviceTokens, + deviceNameForFirstRegistration: deviceNameForFirstRegistration, + optionalParameter: .reactivateCurrentDevice(replacedDeviceUid: replacedDeviceUid), + flowId: flowId) + + } + + + private func requestRegisterToPushNotificationsForActiveOwnedIdentity(ownedIdentity: ObvCryptoIdentity, deviceTokens: (pushToken: Data, voipToken: Data?)?, deviceNameForFirstRegistration: String, optionalParameter: ObvPushNotificationType.OptionalParameter, flowId: FlowIdentifier) async throws { + + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } - var keyCloakState: ObvKeycloakState? - var signedOwnedDetails: SignedObvKeycloakUserDetails? - let flowId = FlowIdentifier() - try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in - (keyCloakState, signedOwnedDetails) = try identityDelegate.getOwnedIdentityKeycloakState( - ownedIdentity: ownedCryptoId.cryptoIdentity, - within: obvContext) + let (currentDeviceUid, keycloakPushTopics) = try await getInfosForRegisteringToPushNotification(ownedIdentity: ownedIdentity, flowId: flowId) + + let commonParameters = ObvPushNotificationType.CommonParameters( + keycloakPushTopics: keycloakPushTopics, + deviceNameForFirstRegistration: deviceNameForFirstRegistration) + + let pushNotification: ObvPushNotificationType + if let deviceTokens { + let maskingUID = try await getMaskingUIDForPushNotifications(activeOwnedIdentity: ownedIdentity, pushToken: deviceTokens.pushToken, flowId: flowId, log: log) + let remoteTypeParameters = ObvPushNotificationType.RemoteTypeParameters(pushToken: deviceTokens.pushToken, voipToken: deviceTokens.voipToken, maskingUID: maskingUID) + pushNotification = .remote(ownedCryptoId: ownedIdentity, currentDeviceUID: currentDeviceUid, commonParameters: commonParameters, optionalParameter: optionalParameter, remoteTypeParameters: remoteTypeParameters) + } else { + pushNotification = .registerDeviceUid(ownedCryptoId: ownedIdentity, currentDeviceUID: currentDeviceUid, commonParameters: commonParameters, optionalParameter: optionalParameter) } - return (keyCloakState, signedOwnedDetails) + + do { + + try await networkFetchDelegate.registerPushNotification(pushNotification, flowId: flowId) + + } catch { + + if let error = error as? ObvNetworkFetchError.RegisterPushNotificationError { + switch error { + case .anotherDeviceIsAlreadyRegistered: + // If the server reports that another device is already registered, we deactivate the current device of the owned identity, + // delete all the devices of her contacts, and delete all oblivious channels from her current device (including channels with other owned devices). + // Note that we do not delete other owned devices, we only delete any oblivious we have with them. + let op1 = DeactivateOwnedIdentityAndMore(ownedCryptoIdentity: ownedIdentity, identityDelegate: identityDelegate, channelDelegate: channelDelegate) + let composedOp = try createCompositionOfOneContextualOperation(op1: op1) + try await protocolDelegate.executeOnQueueForProtocolOperations(operation: composedOp) + case .couldNotParseReturnStatusFromServer: + break + case .deviceToReplaceIsNotRegistered: + break + case .invalidServerResponse: + break + case .theDelegateManagerIsNotSet: + break + } + throw error + } else { + assertionFailure("This error should be turned into a ObvNetworkFetchError.RegisterPushNotificationError") + throw error + } + + } + + // If we reach this point, the registration was succesfull. This can only happen if the identity is active or was just reactivated. + // So we make sure this device considers that the identity is active. + + try await reactivateOwnedIdentity(ownedCryptoIdentity: ownedIdentity, flowId: flowId) + } - public func getSignedContactDetails(ownedIdentity: ObvCryptoId, contactIdentity: ObvCryptoId, completion: @escaping (Result) -> Void) throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } - let flowId = FlowIdentifier() - createContextDelegate.performBackgroundTask(flowId: flowId) { (obvContext) in - do { - let signedContactDetails = try identityDelegate.getSignedContactDetails( - ownedIdentity: ownedIdentity.cryptoIdentity, - contactIdentity: contactIdentity.cryptoIdentity, - within: obvContext) - completion(.success(signedContactDetails)) - } catch { - completion(.failure(error)) - } - } + private func reactivateOwnedIdentity(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws { + + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + + let op1 = ActivateOwnedIdentityOperation(ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate) + let composedOp = try createCompositionOfOneContextualOperation(op1: op1) + + try await protocolDelegate.executeOnQueueForProtocolOperations(operation: composedOp) + } + - public func saveKeycloakAuthState(with ownedCryptoId: ObvCryptoId, rawAuthState: Data) throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + private func getInfosForRegisteringToPushNotification(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> (currentDeviceUid: UID, keycloakPushTopics: Set) { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<(currentDeviceUid: UID, keycloakPushTopics: Set), Error>) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + let keycloakPushTopics = try identityDelegate.getKeycloakPushTopics(ownedCryptoIdentity: ownedIdentity, within: obvContext) + continuation.resume(returning: (currentDeviceUid, keycloakPushTopics)) + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + public func getCurrentDeviceIdentifier(ownedCryptoId: ObvCryptoId) async throws -> Data { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + let flowId = FlowIdentifier() + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedCryptoId.cryptoIdentity, within: obvContext) + continuation.resume(returning: currentDeviceUid.raw) + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + private func getMaskingUIDForPushNotifications(activeOwnedIdentity: ObvCryptoIdentity, pushToken: Data, flowId: FlowIdentifier, log: OSLog) async throws -> UID { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + let maskingUID = try identityDelegate.getFreshMaskingUIDForPushNotifications(for: activeOwnedIdentity, pushToken: pushToken, within: obvContext) + try obvContext.save(logOnFailure: log) + continuation.resume(returning: maskingUID) + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + public func updatePublishedIdentityDetailsOfOwnedIdentity(with ownedCryptoId: ObvCryptoId, with newIdentityDetails: ObvIdentityDetails) async throws { + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + do { + try updatePublishedIdentityDetailsOfOwnedIdentityInternal(with: ownedCryptoId, with: newIdentityDetails) + continuation.resume() + } catch { + continuation.resume(throwing: error) + } + } + + } + + + private func updatePublishedIdentityDetailsOfOwnedIdentityInternal(with ownedCryptoId: ObvCryptoId, with newIdentityDetails: ObvIdentityDetails) throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + + let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in + try identityDelegate.updatePublishedIdentityDetailsOfOwnedIdentity(ownedCryptoId.cryptoIdentity, + with: newIdentityDetails, + within: obvContext) + let version = try identityDelegate.getPublishedIdentityDetailsOfOwnedIdentity(ownedCryptoId.cryptoIdentity, within: obvContext).ownedIdentityDetailsElements.version + try startIdentityDetailsPublicationProtocol(ownedIdentity: ownedCryptoId, publishedIdentityDetailsVersion: version, within: obvContext) + try obvContext.save(logOnFailure: log) + } + + } + + + public func queryServerWellKnown(serverURL: URL) throws { + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } + let flowId = FlowIdentifier() + networkFetchDelegate.queryServerWellKnown(serverURL: serverURL, flowId: flowId) + } + + public func getOwnedIdentityKeycloakState(with ownedCryptoId: ObvCryptoId) throws -> (obvKeycloakState: ObvKeycloakState?, signedOwnedDetails: SignedObvKeycloakUserDetails?) { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + var keyCloakState: ObvKeycloakState? + var signedOwnedDetails: SignedObvKeycloakUserDetails? + let flowId = FlowIdentifier() + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in + (keyCloakState, signedOwnedDetails) = try identityDelegate.getOwnedIdentityKeycloakState( + ownedIdentity: ownedCryptoId.cryptoIdentity, + within: obvContext) + } + return (keyCloakState, signedOwnedDetails) + } + + + public func getSignedContactDetails(ownedIdentity: ObvCryptoId, contactIdentity: ObvCryptoId, completion: @escaping (Result) -> Void) throws { + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + let flowId = FlowIdentifier() + createContextDelegate.performBackgroundTask(flowId: flowId) { (obvContext) in + do { + let signedContactDetails = try identityDelegate.getSignedContactDetails( + ownedIdentity: ownedIdentity.cryptoIdentity, + contactIdentity: contactIdentity.cryptoIdentity, + within: obvContext) + completion(.success(signedContactDetails)) + } catch { + completion(.failure(error)) + } + } + } + + + public func getSignedContactDetailsAsync(ownedIdentity: ObvCryptoId, contactIdentity: ObvCryptoId) async throws -> SignedObvKeycloakUserDetails? { + return try await withCheckedThrowingContinuation { [weak self] (continuation: CheckedContinuation) in + do { + try self?.getSignedContactDetails(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity) { result in + switch result { + case .success(let signedObvKeycloakUserDetails): + continuation.resume(returning: signedObvKeycloakUserDetails) + case .failure(let error): + continuation.resume(throwing: error) + } + } + } catch { + continuation.resume(throwing: error) + } + } + } + + + public func saveKeycloakAuthState(with ownedCryptoId: ObvCryptoId, rawAuthState: Data) throws { + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } os_log("🧥 Call to saveKeycloakAuthState", log: log, type: .info) @@ -879,8 +1180,8 @@ extension ObvEngine { } public func saveKeycloakJwks(with ownedCryptoId: ObvCryptoId, jwks: ObvJWKSet) throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let flowId = FlowIdentifier() try queueForSynchronizingCallsToManagers.sync { @@ -892,8 +1193,8 @@ extension ObvEngine { } public func getOwnedIdentityKeycloakUserId(with ownedCryptoId: ObvCryptoId) throws -> String? { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var userId: String? let flowId = FlowIdentifier() @@ -904,8 +1205,8 @@ extension ObvEngine { } public func setOwnedIdentityKeycloakUserId(with ownedCryptoId: ObvCryptoId, userId: String?) throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let flowId = FlowIdentifier() try queueForSynchronizingCallsToManagers.sync { @@ -917,10 +1218,10 @@ extension ObvEngine { } public func addKeycloakContact(with ownedCryptoId: ObvCryptoId, signedContactDetails: SignedObvKeycloakUserDetails) throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw ObvEngine.makeError(message: "The protocol delegate is not set") } - guard let flowDelegate = flowDelegate else { return } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } guard let contactIdentity = signedContactDetails.identity else { throw makeError(message: "Could not determine contact identity") } guard let contactIdentityToAdd = ObvCryptoIdentity(from: contactIdentity) else { throw makeError(message: "Could not parse contact identity") } @@ -934,7 +1235,7 @@ extension ObvEngine { try queueForSynchronizingCallsToManagers.sync { try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } } @@ -942,124 +1243,84 @@ extension ObvEngine { /// This method asynchronously binds an owned identity to a keycloak server. - public func bindOwnedIdentityToKeycloak(ownedCryptoId: ObvCryptoId, keycloakState: ObvKeycloakState, keycloakUserId: String, completion: @escaping (Result) -> Void) throws { + public func bindOwnedIdentityToKeycloak(ownedCryptoId: ObvCryptoId, keycloakState: ObvKeycloakState, keycloakUserId: String) async throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } - let appNotificationCenter = self.appNotificationCenter - let log = self.log + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } - let flowId = FlowIdentifier() - createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in - let cryptoIdsOfContactsCertifiedByOwnKeycloak: Set - do { - let contactsCertifiedByOwnKeycloak = try identityDelegate.bindOwnedIdentityToKeycloak(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, keycloakUserId: keycloakUserId, keycloakState: keycloakState, within: obvContext) - cryptoIdsOfContactsCertifiedByOwnKeycloak = Set(contactsCertifiedByOwnKeycloak.map({ ObvCryptoId(cryptoIdentity: $0) })) - try obvContext.save(logOnFailure: log) - } catch { - os_log("Failed to bind owned identity to keycloak server: %{public}@", log: log, type: .fault, error.localizedDescription) - completion(.failure(error)) - return - } - completion(.success(())) - ObvEngineNotificationNew.updatedSetOfContactsCertifiedByOwnKeycloak(ownedIdentity: ownedCryptoId, contactsCertifiedByOwnKeycloak: cryptoIdsOfContactsCertifiedByOwnKeycloak) - .postOnBackgroundQueue(within: appNotificationCenter) - } + let message = try protocolDelegate.getOwnedIdentityKeycloakBindingMessage( + ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, + keycloakState: keycloakState, + keycloakUserId: keycloakUserId) + + try await protocolWaiter.waitUntilEndOfProcessingOfProtocolMessage(message, log: log) + + // If we reach this point, the protocol message was processed (i.e., deleted from database) + // It does not necessarily mean that the protocol was a success. + // So we check the identity is indeed bound to keycloak - } - - - public func unbindOwnedIdentityFromKeycloakServer(ownedCryptoId: ObvCryptoId) async throws { - try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in - do { - try unbindOwnedIdentityFromKeycloakServer(ownedCryptoId: ownedCryptoId) { result in - switch result { - case .failure(let error): - continuation.resume(throwing: error) - case .success: - continuation.resume() - } - } - } catch { - continuation.resume(throwing: error) + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier()) { obvContext in + let isKeycloakManaged = try identityDelegate.isOwnedIdentityKeycloakManaged(ownedIdentity: ownedCryptoId.cryptoIdentity, within: obvContext) + guard isKeycloakManaged else { + throw Self.makeError(message: "The call to bindOwnedIdentityToKeycloak did fail") } } + } /// This method asynchronously unbinds an owned identity from a keycloak server. During this process, new details are published for owned identity, based on the previously published details, but after removing the signed user details. /// This method eventually posts an `ownedIdentityUnbindingFromKeycloakPerformed` notification containing the result of the unbinding process. - private func unbindOwnedIdentityFromKeycloakServer(ownedCryptoId: ObvCryptoId, completion: @escaping (Result) -> Void) throws { + public func unbindOwnedIdentityFromKeycloak(ownedCryptoId: ObvCryptoId) async throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } - let appNotificationCenter = self.appNotificationCenter - let log = self.log + do { + + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } - let flowId = FlowIdentifier() - queueForSynchronizingCallsToManagers.async { - createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { [weak self] obvContext in - guard let _self = self else { - completion(.failure(ObvEngine.makeError(message: "Engine was deallocated"))) - assertionFailure() - return - } - do { - try identityDelegate.unbindOwnedIdentityFromKeycloak(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, within: obvContext) - let version = try identityDelegate.getPublishedIdentityDetailsOfOwnedIdentity(ownedCryptoId.cryptoIdentity, within: obvContext).ownedIdentityDetailsElements.version - try _self.startIdentityDetailsPublicationProtocol(ownedIdentity: ownedCryptoId, publishedIdentityDetailsVersion: version, within: obvContext) - try obvContext.save(logOnFailure: log) - } catch { - os_log("Failed to unbind owned identity from keycloak server: %{public}@", log: log, type: .fault, error.localizedDescription) - completion(.failure(error)) - ObvEngineNotificationNew.ownedIdentityUnbindingFromKeycloakPerformed(ownedIdentity: ownedCryptoId, result: .failure(error)) - .postOnBackgroundQueue(within: appNotificationCenter) - return + let message = try protocolDelegate.getOwnedIdentityKeycloakUnbindingMessage(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity) + let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() + + try await protocolWaiter.waitUntilEndOfProcessingOfProtocolMessage(message, log: log) + + // If we reach this point, the protocol message was processed (i.e., deleted from database) + // It does not necessarily mean that the protocol was a success. + // So we check the identity is indeed bound to keycloak + + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in + let isKeycloakManaged = try identityDelegate.isOwnedIdentityKeycloakManaged(ownedIdentity: ownedCryptoId.cryptoIdentity, within: obvContext) + guard !isKeycloakManaged else { + throw Self.makeError(message: "The call to unbindOwnedIdentityFromKeycloak did fail") } - completion(.success(())) - ObvEngineNotificationNew.ownedIdentityUnbindingFromKeycloakPerformed(ownedIdentity: ownedCryptoId, result: .success(())) - .postOnBackgroundQueue(within: appNotificationCenter) } - } - - } - - - /// When an owned identity is bound to a keycloak server, it receives a list of all the existing contacts that are also bound to the keycloak server. It may have missed the notification. - /// This method, typically called during bootstrap, re-send the notification containing the latest set of all the contact bound to the same keycloak server as the owned identity. - /// Of course, if the owned identity is not bound to a keycloak server, this method eventually send an empty send within the notification. - public func requestSetOfContactsCertifiedByOwnKeycloakForAllOwnedCryptoIds() throws { - - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } - let appNotificationCenter = self.appNotificationCenter - let log = self.log - - let flowId = FlowIdentifier() - createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in - guard let ownedCryptoIdentities = try? identityDelegate.getOwnedIdentities(within: obvContext) else { assertionFailure(); return } - for ownedCryptoIdentity in ownedCryptoIdentities { - let cryptoIdsOfContactsCertifiedByOwnKeycloak: Set - do { - let contactsCertifiedByOwnKeycloak = try identityDelegate.getContactsCertifiedByOwnKeycloak(ownedCryptoIdentity: ownedCryptoIdentity, within: obvContext) - cryptoIdsOfContactsCertifiedByOwnKeycloak = Set(contactsCertifiedByOwnKeycloak.map({ ObvCryptoId(cryptoIdentity: $0) })) - } catch { - os_log("Failed to obtain the contacts of the owned identity that are bound to the same keycloak: %{public}@", log: log, type: .fault, error.localizedDescription) - return - } - let ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedCryptoIdentity) - ObvEngineNotificationNew.updatedSetOfContactsCertifiedByOwnKeycloak(ownedIdentity: ownedCryptoId, contactsCertifiedByOwnKeycloak: cryptoIdsOfContactsCertifiedByOwnKeycloak) - .postOnBackgroundQueue(within: appNotificationCenter) + + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { [weak self] obvContext in + guard let _self = self else { return } + let version = try identityDelegate.getPublishedIdentityDetailsOfOwnedIdentity(ownedCryptoId.cryptoIdentity, within: obvContext).ownedIdentityDetailsElements.version + try _self.startIdentityDetailsPublicationProtocol(ownedIdentity: ownedCryptoId, publishedIdentityDetailsVersion: version, within: obvContext) + try obvContext.save(logOnFailure: _self.log) } + ObvEngineNotificationNew.ownedIdentityUnbindingFromKeycloakPerformed(ownedIdentity: ownedCryptoId, result: .success(())) + .postOnBackgroundQueue(within: appNotificationCenter) + + } catch { + + ObvEngineNotificationNew.ownedIdentityUnbindingFromKeycloakPerformed(ownedIdentity: ownedCryptoId, result: .failure(error)) + .postOnBackgroundQueue(within: appNotificationCenter) + throw error + } } - - + + public func setOwnedIdentityKeycloakSelfRevocationTestNonce(ownedCryptoId: ObvCryptoId, newSelfRevocationTestNonce: String?) throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let log = self.log let flowId = FlowIdentifier() // Synchronizing this call prevents a merge conflict with the operations made in updateKeycloakRevocationList(...) @@ -1078,7 +1339,7 @@ extension ObvEngine { public func getOwnedIdentityKeycloakSelfRevocationTestNonce(ownedCryptoId: ObvCryptoId) throws -> String? { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } let flowId = FlowIdentifier() var selfRevocationTestNonce: String? = nil try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in @@ -1089,8 +1350,8 @@ extension ObvEngine { public func setOwnedIdentityKeycloakSignatureKey(ownedCryptoId: ObvCryptoId, keycloakServersignatureVerificationKey: ObvJWK?) throws { - guard let createContextDelegate = createContextDelegate else { assertionFailure(); throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { assertionFailure(); throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let flowId = FlowIdentifier() let log = self.log try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in @@ -1107,9 +1368,9 @@ extension ObvEngine { public func updateKeycloakRevocationList(ownedCryptoId: ObvCryptoId, latestRevocationListTimestamp: Date, signedRevocations: [String]) throws { - guard let createContextDelegate = createContextDelegate else { assertionFailure(); throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { assertionFailure(); throw ObvEngine.makeError(message: "Identity Delegate is not set") } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let flowId = FlowIdentifier() let log = self.log os_log("Updating the keycloak revocation list", log: log, type: .info) @@ -1136,33 +1397,76 @@ extension ObvEngine { } - public func updateKeycloakPushTopicsIfNeeded(ownedCryptoId: ObvCryptoId, pushTopics: Set) throws { - guard let createContextDelegate = createContextDelegate else { assertionFailure(); throw makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { assertionFailure(); throw makeError(message: "Identity Delegate is not set") } - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "The network fetch delegate is not set") } + public func updateKeycloakPushTopicsIfNeeded(ownedCryptoId: ObvCryptoId, deviceTokens: (pushToken: Data, voipToken: Data?)?, deviceNameForFirstRegistration: String, pushTopics: Set) async throws { + + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + let flowId = FlowIdentifier() let log = self.log + os_log("Updating the keycloak push topics within the engine", log: log, type: .info) - try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in - let storedPushTopicsUpdated = try identityDelegate.updateKeycloakPushTopicsIfNeeded(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, pushTopics: pushTopics, within: obvContext) - if storedPushTopicsUpdated { - if let pushNotification = try networkFetchDelegate.getServerPushNotification(ownedCryptoId: ownedCryptoId.cryptoIdentity, within: obvContext) { - // Make sure we register all push topics (including those concerning keycloak groups, which are not included in the pushTopics received) - let allPushTopics = try identityDelegate.getKeycloakPushTopics(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, within: obvContext) - let newPushNotification = pushNotification.withUpdatedKeycloakPushTopics(allPushTopics) - networkFetchDelegate.registerPushNotification(newPushNotification, flowId: obvContext.flowId) + + let storedPushTopicsWereUpdated = try await updateKeycloakPushTopicsIfNeeded(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, pushTopics: pushTopics, flowId: flowId, log: log) + guard storedPushTopicsWereUpdated else { return } + + guard try identityDelegate.isOwnedIdentityActive(ownedIdentity: ownedCryptoId.cryptoIdentity, flowId: flowId) else { + assertionFailure() + return + } + + // The following call will take into account the new set of push topics + + try await requestRegisterToPushNotificationsForActiveOwnedIdentity( + ownedIdentity: ownedCryptoId.cryptoIdentity, + deviceTokens: deviceTokens, + deviceNameForFirstRegistration: deviceNameForFirstRegistration, + optionalParameter: .none, + flowId: flowId) + + } + + + private func getKeycloakPushTopics(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> Set { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation, Error>) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + let allPushTopics = try identityDelegate.getKeycloakPushTopics(ownedCryptoIdentity: ownedCryptoIdentity, within: obvContext) + continuation.resume(returning: allPushTopics) + } catch { + continuation.resume(throwing: error) } } - try obvContext.save(logOnFailure: log) } - + } + private func updateKeycloakPushTopicsIfNeeded(ownedCryptoIdentity: ObvCryptoIdentity, pushTopics: Set, flowId: FlowIdentifier, log: OSLog) async throws -> Bool { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + let storedPushTopicsUpdated = try identityDelegate.updateKeycloakPushTopicsIfNeeded(ownedCryptoIdentity: ownedCryptoIdentity, pushTopics: pushTopics, within: obvContext) + try obvContext.save(logOnFailure: log) + continuation.resume(returning: storedPushTopicsUpdated) + } catch { + continuation.resume(throwing: error) + } + } + } + } + public func getManagedOwnedIdentitiesAssociatedWithThePushTopic(_ pushTopic: String) throws -> Set { - guard let createContextDelegate = createContextDelegate else { assertionFailure(); throw makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { assertionFailure(); throw makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let flowId = FlowIdentifier() // No need to synchronize this call, its a simple query var ownedIdentities = Set() @@ -1178,8 +1482,8 @@ extension ObvEngine { public func getSignedOwnedDetails(ownedIdentity: ObvCryptoId, completion: @escaping (Result) -> Void) throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let flowId = FlowIdentifier() createContextDelegate.performBackgroundTask(flowId: flowId) { (obvContext) in do { @@ -1197,14 +1501,127 @@ extension ObvEngine { } +// MARK: - Public API for owned devices + +extension ObvEngine { + + public func getAllOwnedDevicesOfOwnedIdentity(_ ownedCryptoId: ObvCryptoId) throws -> Set { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + + let ownedCryptoIdentity = ownedCryptoId.cryptoIdentity + + var ownedDevices = Set() + + let flowId = FlowIdentifier() + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in + // Deal with the current device + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedCryptoIdentity, within: obvContext) + let infos = try identityDelegate.getInfosAboutOwnedDevice(withUid: currentDeviceUid, ownedCryptoIdentity: ownedCryptoIdentity, within: obvContext) + let currentDevice = ObvOwnedDevice( + identifier: currentDeviceUid.raw, + ownedCryptoIdentity: ownedCryptoIdentity, + secureChannelStatus: .currentDevice, + name: infos.name, + expirationDate: infos.expirationDate, + latestRegistrationDate: infos.latestRegistrationDate) + ownedDevices.insert(currentDevice) + // Deal with remote owned devices + let otherDeviceUids = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedCryptoIdentity, within: obvContext) + for otherDeviceUid in otherDeviceUids { + // Check if a channel exists between the current device and the remote owned device + let channelExists = try channelDelegate.aConfirmedObliviousChannelExistsBetweenTheCurrentDeviceOf( + ownedIdentity: ownedCryptoIdentity, + andRemoteIdentity: ownedCryptoIdentity, + withRemoteDeviceUid: otherDeviceUid, + within: obvContext) + let secureChannelStatus = channelExists ? ObvOwnedDevice.SecureChannelStatus.created : .creationInProgress + let infos = try identityDelegate.getInfosAboutOwnedDevice(withUid: otherDeviceUid, ownedCryptoIdentity: ownedCryptoIdentity, within: obvContext) + let otherOwnedDevice = ObvOwnedDevice( + identifier: otherDeviceUid.raw, + ownedCryptoIdentity: ownedCryptoIdentity, + secureChannelStatus: secureChannelStatus, + name: infos.name, + expirationDate: infos.expirationDate, + latestRegistrationDate: infos.latestRegistrationDate) + ownedDevices.insert(otherOwnedDevice) + } + } + + return ownedDevices + } + + + /// If it exists, this method first delete the channel we have with the owned device. It then relaunches the channel creation with the owned device. + public func restartChannelEstablishmentProtocolsWithOwnedDevice(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + + let log = self.log + let prng = self.prng + let ownedCryptoIdentity = ownedCryptoId.cryptoIdentity + guard let remoteOwnedDeviceUid = UID(uid: deviceIdentifier) else { + assertionFailure() + throw Self.makeError(message: "Could not turn device identifier into a device UID") + } + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + + let flowId = FlowIdentifier() + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + + do { + + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedCryptoIdentity, within: obvContext) + + guard currentDeviceUid != remoteOwnedDeviceUid else { + assertionFailure() + throw Self.makeError(message: "Trying to restart channel establishement betwen the current device and itself, which makes no sense") + } + + guard try identityDelegate.isDevice(withUid: remoteOwnedDeviceUid, aRemoteDeviceOfOwnedIdentity: ownedCryptoIdentity, within: obvContext) else { + assertionFailure() + throw Self.makeError(message: "The remote device does not appear to exist") + } + + try channelDelegate.deleteObliviousChannelBetweenCurentDeviceWithUid( + currentDeviceUid: currentDeviceUid, + andTheRemoteDeviceWithUid: remoteOwnedDeviceUid, + ofRemoteIdentity: ownedCryptoIdentity, + within: obvContext) + + let message = try protocolDelegate.getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ownedCryptoIdentity, remoteDeviceUid: remoteOwnedDeviceUid) + + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + try obvContext.save(logOnFailure: log) + + continuation.resume() + + } catch { + continuation.resume(throwing: error) + } + + } + + } + + } + +} + // MARK: - Public API for managing contact identities extension ObvEngine { public func getContactDeviceIdentifiersForWhichAChannelCreationProtocolExists(with contactCryptoId: ObvCryptoId, ofOwnedIdentityWith ownedCryptoId: ObvCryptoId) throws -> Set { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw ObvEngine.makeError(message: "Protocol Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } var channelIds: Set! @@ -1221,8 +1638,8 @@ extension ObvEngine { public func getContactDeviceIdentifiersOfContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentityWith ownedCryptoId: ObvCryptoId) throws -> Set { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var contactDeviceIdentifiers: Set! let flowId = FlowIdentifier() @@ -1239,8 +1656,8 @@ extension ObvEngine { public func getContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentityWith ownedCryptoId: ObvCryptoId) throws -> ObvContactIdentity { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var obvContactIdentity: ObvContactIdentity! @@ -1266,8 +1683,8 @@ extension ObvEngine { public func getContactsOfOwnedIdentity(with ownedCryptoId: ObvCryptoId) throws -> Set { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let contactIdentities: Set @@ -1303,11 +1720,11 @@ extension ObvEngine { public func deleteContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentyWith ownedCryptoId: ObvCryptoId) throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let flowDelegate = flowDelegate else { throw ObvEngine.makeError(message: "The flow delegate is not set") } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } // We prepare the appropriate message for starting the ObliviousChannelManagementProtocol step allowing to delete the contact @@ -1334,7 +1751,7 @@ extension ObvEngine { // If we reach this point, we know that the contact does not belong the a joined group. We can start the protocol allowing to delete this contact. do { - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } catch let _error { error = _error @@ -1348,8 +1765,8 @@ extension ObvEngine { public func getTrustOriginsOfContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentyWith ownedCryptoId: ObvCryptoId) throws -> [ObvTrustOrigin] { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var trustOrigins: [ObvTrustOrigin]! var error: Error? @@ -1368,69 +1785,90 @@ extension ObvEngine { } - /// This method returns the list of the contact's device uids for which a channel exist with the current device uid of the owned identity - public func getAllObliviousChannelsEstablishedWithContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentyWith ownedCryptoId: ObvCryptoId) throws -> Set { + public func getAllObvContactDevicesOfContact(with contactIdentifier: ObvContactIdentifier) throws -> Set { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw ObvEngine.makeError(message: "Identity Delegate is not set") } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel Delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } - var error: Error? - var contactDevices: Set! - let randomFlowId = FlowIdentifier() - createContextDelegate.performBackgroundTaskAndWait(flowId: randomFlowId) { (obvContext) in - let contactDeviceUids: [UID] - do { - contactDeviceUids = try channelDelegate.getRemoteDeviceUidsOfRemoteIdentity(contactCryptoId.cryptoIdentity, forWhichAConfirmedObliviousChannelExistsWithTheCurrentDeviceOfOwnedIdentity: ownedCryptoId.cryptoIdentity, within: obvContext) - } catch let _error { - error = _error - return - } - contactDevices = Set() - contactDeviceUids.forEach { - if let contactDevice = ObvContactDevice(contactDeviceUid: $0, - contactCryptoIdentity: contactCryptoId.cryptoIdentity, - ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, - identityDelegate: identityDelegate, - within: obvContext) { - contactDevices.insert(contactDevice) + var contactDevices = Set() + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier()) { obvContext in + + let allDeviceUids = try identityDelegate.getDeviceUidsOfContactIdentity(contactIdentifier.contactCryptoId.cryptoIdentity, ofOwnedIdentity: contactIdentifier.ownedCryptoId.cryptoIdentity, within: obvContext) + let deviceUidsWithChannel = try channelDelegate.getRemoteDeviceUidsOfRemoteIdentity( + contactIdentifier.contactCryptoId.cryptoIdentity, forWhichAConfirmedObliviousChannelExistsWithTheCurrentDeviceOfOwnedIdentity: contactIdentifier.ownedCryptoId.cryptoIdentity, within: obvContext) + + contactDevices = Set(allDeviceUids.compactMap { deviceUid in + let secureChannelStatus: ObvContactDevice.SecureChannelStatus + if deviceUidsWithChannel.contains(where: { $0 == deviceUid }) { + secureChannelStatus = .created + } else { + secureChannelStatus = .creationInProgress } - } - } - guard error == nil else { - throw error! + return ObvContactDevice(remoteDeviceUid: deviceUid, contactIdentifier: contactIdentifier, secureChannelStatus: secureChannelStatus) + }) + } + return contactDevices + } - - public func updateTrustedIdentityDetailsOfContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentityWithCryptoId ownedCryptoId: ObvCryptoId, with newTrustedIdentityDetails: ObvIdentityDetails) throws { + + public func updateTrustedIdentityDetailsOfContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentityWithCryptoId ownedCryptoId: ObvCryptoId, with newTrustedIdentityDetails: ObvIdentityDetails) async throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } - let randomFlowId = FlowIdentifier() - var error: Error? - createContextDelegate.performBackgroundTaskAndWait(flowId: randomFlowId) { (obvContext) in - do { - try identityDelegate.updateTrustedIdentityDetailsOfContactIdentity(contactCryptoId.cryptoIdentity, - ofOwnedIdentity: ownedCryptoId.cryptoIdentity, - with: newTrustedIdentityDetails, - within: obvContext) - try obvContext.save(logOnFailure: log) - } catch let _error { - error = _error + let flowId = FlowIdentifier() + let prng = self.prng + let log = self.log + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + + // Trust the details locally + + try identityDelegate.updateTrustedIdentityDetailsOfContactIdentity(contactCryptoId.cryptoIdentity, + ofOwnedIdentity: ownedCryptoId.cryptoIdentity, + with: newTrustedIdentityDetails, + within: obvContext) + + // Since we updated the trusted details with the published details, we can request a trusted details and propagate them to our other owned devices + + let contactIdentityDetailsElements = try identityDelegate.getTrustedIdentityDetailsOfContactIdentity( + contactCryptoId.cryptoIdentity, + ofOwnedIdentity: ownedCryptoId.cryptoIdentity, + within: obvContext).contactIdentityDetailsElements + let serializedIdentityDetailsElements = try contactIdentityDetailsElements.jsonEncode() + let syncAtom = ObvSyncAtom.trustContactDetails(contactCryptoId: contactCryptoId, serializedIdentityDetailsElements: serializedIdentityDetailsElements) + let message = try protocolDelegate.getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, syncAtom: syncAtom) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + // Save the context + + try obvContext.save(logOnFailure: log) + + continuation.resume() + + } catch { + continuation.resume(throwing: error) + } } } - guard error == nil else { throw error! } - + } public func unblockContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentityWithCryptoId ownedCryptoId: ObvCryptoId) throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + let contactIdentifier = ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) let randomFlowId = FlowIdentifier() try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: randomFlowId) { obvContext in @@ -1440,7 +1878,9 @@ extension ObvEngine { contactIdentity: contactCryptoId.cryptoIdentity, forcefullyTrustedByUser: true, within: obvContext) - try reCreateAllChannelEstablishmentProtocolsWithContactIdentity(with: contactCryptoId.cryptoIdentity, ofOwnedIdentyWith: ownedCryptoId.cryptoIdentity, within: obvContext) + try deleteAllContactDevicesAndChannelsThenPerformContactDeviceDiscovery( + contactIdentifier: contactIdentifier, + within: obvContext) try obvContext.save(logOnFailure: log) } catch { os_log("Could not unblock contact: %{public}@", log: log, type: .fault, error.localizedDescription) @@ -1452,9 +1892,9 @@ extension ObvEngine { public func reblockContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentityWithCryptoId ownedCryptoId: ObvCryptoId) throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let randomFlowId = FlowIdentifier() try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: randomFlowId) { obvContext in @@ -1476,17 +1916,18 @@ extension ObvEngine { } + /// Starts a ``OneToOneContactInvitationProtocol``. In practice, this is called from a single place within the app (in the `ObvFlowController`) so as to make sure we always perform a simultaneous Keycloak invitation if possible. public func sendOneToOneInvitation(ownedIdentity: ObvCryptoId, contactIdentity: ObvCryptoId) throws { - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel Delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The createContextDelegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } let message = try protocolDelegate.getInitialMessageForOneToOneContactInvitationProtocol(ownedIdentity: ownedIdentity.cryptoIdentity, contactIdentity: contactIdentity.cryptoIdentity) let flowId = FlowIdentifier() createContextDelegate.performBackgroundTask(flowId: flowId) { [weak self] (obvContext) in guard let _self = self else { return } do { - _ = try channelDelegate.post(message, randomizedWith: _self.prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: _self.prng, within: obvContext) try obvContext.save(logOnFailure: _self.log) } catch { os_log("Could not post initial message for starting OneToOne contact invitation protocol: %{public}@", log: _self.log, type: .fault, error.localizedDescription) @@ -1498,16 +1939,16 @@ extension ObvEngine { public func downgradeOneToOneContact(ownedIdentity: ObvCryptoId, contactIdentity: ObvCryptoId) throws { - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel Delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The createContextDelegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } let message = try protocolDelegate.getInitialMessageForDowngradingOneToOneContact(ownedIdentity: ownedIdentity.cryptoIdentity, contactIdentity: contactIdentity.cryptoIdentity) let flowId = FlowIdentifier() createContextDelegate.performBackgroundTask(flowId: flowId) { [weak self] (obvContext) in guard let _self = self else { return } do { - _ = try channelDelegate.post(message, randomizedWith: _self.prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: _self.prng, within: obvContext) try obvContext.save(logOnFailure: _self.log) } catch { os_log("Could not post initial message for starting OneToOne contact invitation protocol: %{public}@", log: _self.log, type: .fault, error.localizedDescription) @@ -1520,9 +1961,9 @@ extension ObvEngine { public func requestOneStatusSyncRequest(ownedIdentity: ObvCryptoId, contactsToSync: Set) async throws { - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel Delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The createContextDelegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } let contactsToSync = Set(contactsToSync.map { $0.cryptoIdentity }) @@ -1531,7 +1972,7 @@ extension ObvEngine { let flowId = FlowIdentifier() do { try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) continuation.resume() return @@ -1553,8 +1994,8 @@ extension ObvEngine { public func getCapabilitiesOfAllContactsOfOwnedIdentity(_ ownedCryptoId: ObvCryptoId) throws -> [ObvCryptoId: Set] { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var results = [ObvCryptoId: Set]() let randomFlowId = FlowIdentifier() @@ -1571,10 +2012,10 @@ extension ObvEngine { public func setCapabilitiesOfCurrentDeviceForAllOwnedIdentities(_ newObvCapabilities: Set) throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw ObvEngine.makeError(message: "Protocol Delegate is not set") } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let log = self.log let prng = self.prng @@ -1587,7 +2028,7 @@ extension ObvEngine { let message = try protocolDelegate.getInitialMessageForAddingOwnCapabilities( ownedIdentity: ownedIdentity, newOwnCapabilities: newObvCapabilities) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) } try obvContext.save(logOnFailure: log) } catch { @@ -1603,8 +2044,8 @@ extension ObvEngine { public func getCapabilitiesOfOwnedIdentity(_ ownedCryptoId: ObvCryptoId) throws -> Set? { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var capabilities: Set? = nil let randomFlowId = FlowIdentifier() @@ -1623,7 +2064,7 @@ extension ObvEngine { extension ObvEngine { public func deleteDialog(with uuid: UUID) throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } let randomFlowId = FlowIdentifier() try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: randomFlowId) { (obvContext) in try deleteDialog(with: uuid, within: obvContext) @@ -1633,8 +2074,8 @@ extension ObvEngine { public func abortProtocol(associatedTo obvDialog: ObvDialog) throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } // Like un cochon @@ -1664,7 +2105,7 @@ extension ObvEngine { /// When bootstraping the app, we want to resync the PersistedInvitations with the persisted dialogs of the engine. This methods allows to get all the dialogs. public func getAllDialogsWithinEngine() async throws -> [ObvDialog] { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } let randomFlowId = FlowIdentifier() return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<[ObvDialog], Error>) in do { @@ -1680,38 +2121,43 @@ extension ObvEngine { } - public func respondTo(_ obvDialog: ObvDialog) { + public func respondTo(_ obvDialog: ObvDialog) async throws { - assert(!Thread.isMainThread) - - guard let createContextDelegate = createContextDelegate else { assertionFailure(); return } - guard let channelDelegate = channelDelegate else { assertionFailure(); return } - guard let flowDelegate = flowDelegate else { assertionFailure(); return } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } // Responding to an ObvDialog is a critical long-running task, so we always extend the app runtime to make sure that responding to a dialog (and all the resulting network exchanges) eventually finish, even if the app moves to the background between the call to this method and the moment the data is actually sent to the server. guard let flowId = try? flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() else { return } + let log = self.log + let prng = self.prng - createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { [weak self] (obvContext) in - guard let _self = self else { return } - do { - guard let encodedResponse = obvDialog.encodedResponse else { throw Self.makeError(message: "Could not obtain encoded response") } - let timestamp = Date() - let channelDialogResponseMessageToSend = ObvChannelDialogResponseMessageToSend(uuid: obvDialog.uuid, - toOwnedIdentity: obvDialog.ownedCryptoId.cryptoIdentity, - timestamp: timestamp, - encodedUserDialogResponse: encodedResponse, - encodedElements: obvDialog.encodedElements) + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in do { - _ = try channelDelegate.post(channelDialogResponseMessageToSend, randomizedWith: _self.prng, within: obvContext) - try obvContext.save(logOnFailure: _self.log) + guard let encodedResponse = obvDialog.encodedResponse else { + let error = Self.makeError(message: "Could not obtain encoded response") + continuation.resume(throwing: error) + return + } + let timestamp = Date() + let channelDialogResponseMessageToSend = ObvChannelDialogResponseMessageToSend(uuid: obvDialog.uuid, + toOwnedIdentity: obvDialog.ownedCryptoId.cryptoIdentity, + timestamp: timestamp, + encodedUserDialogResponse: encodedResponse, + encodedElements: obvDialog.encodedElements) + _ = try channelDelegate.postChannelMessage(channelDialogResponseMessageToSend, randomizedWith: prng, within: obvContext) + try obvContext.save(logOnFailure: log) + continuation.resume() } catch { - os_log("Could not respond to obvDialog (1)", log: _self.log, type: .fault) + os_log("Could not respond to obvDialog", log: log, type: .fault) + let error = Self.makeError(message: "Could not respond to obvDialog") + continuation.resume(throwing: error) } - } catch { - os_log("Could not respond to obvDialog (2)", log: _self.log, type: .fault) } } + } } @@ -1723,11 +2169,11 @@ extension ObvEngine { public func startTrustEstablishmentProtocolOfRemoteIdentity(with remoteCryptoId: ObvCryptoId, withFullDisplayName remoteFullDisplayName: String, forOwnedIdentyWith ownedCryptoId: ObvCryptoId) throws { - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let log = self.log @@ -1758,7 +2204,7 @@ extension ObvEngine { usingProtocolInstanceUid: protocolInstanceUid) createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in do { - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } catch let _error { error = _error @@ -1774,79 +2220,38 @@ extension ObvEngine { assert(!Thread.isMainThread) - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } let log = self.log - var contact: ObvContactIdentity! - var otherContacts = Set() - var ownedIdentity: ObvOwnedIdentity! - do { - var error: Error? - let randomFlowId = FlowIdentifier() - createContextDelegate.performBackgroundTaskAndWait(flowId: randomFlowId) { (obvContext) in - guard let _contact = ObvContactIdentity(contactCryptoIdentity: remoteCryptoId.cryptoIdentity, - ownedCryptoIdentity: ownedId.cryptoIdentity, - identityDelegate: identityDelegate, within: obvContext) - else { - error = ObvEngine.makeError(message: "Could not find contact identity. We may be trying to start a ContactMutualIntroductionProtocol between two contacts of distinct owned identities.") - return - } - contact = _contact - ownedIdentity = _contact.ownedIdentity - for cryptoId in remoteCryptoIds { - guard let _otherContact = ObvContactIdentity(contactCryptoIdentity: cryptoId.cryptoIdentity, - ownedCryptoIdentity: ownedId.cryptoIdentity, - identityDelegate: identityDelegate, within: obvContext) - else { - error = ObvEngine.makeError(message: "Could not find contact identity. We may be trying to start a ContactMutualIntroductionProtocol between two contacts of distinct owned identities.") - return - } - guard _otherContact.ownedIdentity == ownedIdentity else { - error = ObvEngine.makeError(message: "All contacts should belong to the same owned identity") - return - } - otherContacts.insert(_otherContact) - } - - } - guard error == nil else { throw error! } - } - // Starting a ContactMutualIntroductionProtocol is a critical long-running task, so we always extend the app runtime to make sure that we can perform the required tasks, even if the app moves to the background between the call to this method and the moment the data is actually sent to the server. let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() var messages = [ObvChannelProtocolMessageToSend]() - for otherContact in otherContacts { + for otherRemoteCryptoId in remoteCryptoIds { let protocolInstanceUid = UID.gen(with: prng) - let message = try protocolDelegate.getInitialMessageForContactMutualIntroductionProtocol(of: contact.cryptoId.cryptoIdentity, - withContactIdentityCoreDetails: contact.currentIdentityDetails.coreDetails, - with: otherContact.cryptoId.cryptoIdentity, - withOtherContactIdentityCoreDetails: otherContact.currentIdentityDetails.coreDetails, - byOwnedIdentity: ownedIdentity.cryptoId.cryptoIdentity, + let message = try protocolDelegate.getInitialMessageForContactMutualIntroductionProtocol(of: remoteCryptoId.cryptoIdentity, + with: otherRemoteCryptoId.cryptoIdentity, + byOwnedIdentity: ownedId.cryptoIdentity, usingProtocolInstanceUid: protocolInstanceUid) messages.append(message) } - var error: Error? - createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in do { for message in messages { - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) } try obvContext.save(logOnFailure: log) - } catch let _error { - error = _error + } catch { + assertionFailure(error.localizedDescription) + throw error } } - guard error == nil else { - throw error! - } } @@ -1855,41 +2260,149 @@ extension ObvEngine { assert(!Thread.isMainThread) - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let message = try protocolDelegate.getInitialMessageForIdentityDetailsPublicationProtocol(ownedIdentity: ownedIdentity.cryptoIdentity, publishedIdentityDetailsVersion: version) guard try identityDelegate.isOwned(ownedIdentity.cryptoIdentity, within: obvContext) else { throw makeError(message: "The identity is not owned") } - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } + + + private func startOwnedDeviceManagementProtocolForSettingOwnedDeviceName(ownedCryptoId: ObvCryptoId, ownedDeviceUID: UID, ownedDeviceName: String, within obvContext: ObvContext) throws { + + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + let request = ObvOwnedDeviceManagementRequest.setOwnedDeviceName(ownedDeviceUID: ownedDeviceUID, ownedDeviceName: ownedDeviceName) + let message = try protocolDelegate.getInitiateOwnedDeviceManagementMessage(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, request: request) + + guard try identityDelegate.isOwned(ownedCryptoId.cryptoIdentity, within: obvContext) else { throw makeError(message: "The identity is not owned") } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } + + + private func startOwnedDeviceManagementProtocolForDeactivatingOtherOwnedDevice(ownedCryptoId: ObvCryptoId, ownedDeviceUID: UID, within obvContext: ObvContext) throws { + + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + let request = ObvOwnedDeviceManagementRequest.deactivateOtherOwnedDevice(ownedDeviceUID: ownedDeviceUID) + let message = try protocolDelegate.getInitiateOwnedDeviceManagementMessage(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, request: request) + + guard try identityDelegate.isOwned(ownedCryptoId.cryptoIdentity, within: obvContext) else { throw makeError(message: "The identity is not owned") } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) } + private func startOwnedDeviceManagementProtocolForSettingUnexpiringDevice(ownedCryptoId: ObvCryptoId, ownedDeviceUID: UID, within obvContext: ObvContext) throws { + + guard let channelDelegate else { assertionFailure(); throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { assertionFailure(); throw ObvError.protocolDelegateIsNil } + guard let identityDelegate else { assertionFailure(); throw ObvError.identityDelegateIsNil } + + let request = ObvOwnedDeviceManagementRequest.setUnexpiringDevice(ownedDeviceUID: ownedDeviceUID) + let message = try protocolDelegate.getInitiateOwnedDeviceManagementMessage(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, request: request) + + guard try identityDelegate.isOwned(ownedCryptoId.cryptoIdentity, within: obvContext) else { throw makeError(message: "The identity is not owned") } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } + + // This protocol is started when a group owner (an owned identity) publishes (latest) details for a (owned) contact group private func startOwnedGroupLatestDetailsPublicationProtocol(for groupStructure: GroupStructure, within obvContext: ObvContext) throws { - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } guard groupStructure.groupType == .owned else { throw Self.makeError(message: "Could not start owned group latest details publication protocol as the group type is not owned") } let message = try protocolDelegate.getOwnedGroupMembersChangedTriggerMessageForGroupManagementProtocol(groupUid: groupStructure.groupUid, ownedIdentity: groupStructure.groupOwner, within: obvContext) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + + public func requestChangeOfOwnedDeviceName(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data, ownedDeviceName: String) async throws { + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + let log = self.log + guard let ownedDeviceUID = UID(uid: deviceIdentifier) else { assertionFailure(); throw Self.makeError(message: "Could not decode device identifier") } + try await withCheckedThrowingContinuation { continuation in + do { + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier()) { obvContext in + try startOwnedDeviceManagementProtocolForSettingOwnedDeviceName( + ownedCryptoId: ownedCryptoId, + ownedDeviceUID: ownedDeviceUID, + ownedDeviceName: ownedDeviceName, + within: obvContext) + try obvContext.save(logOnFailure: log) + continuation.resume() + } + } catch { + continuation.resume(throwing: error) + } + } + } + + + public func requestDeactivationOfOtherOwnedDevice(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async throws { + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + let log = self.log + guard let ownedDeviceUID = UID(uid: deviceIdentifier) else { assertionFailure(); throw Self.makeError(message: "Could not decode device identifier") } + try await withCheckedThrowingContinuation { continuation in + do { + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier()) { obvContext in + try startOwnedDeviceManagementProtocolForDeactivatingOtherOwnedDevice( + ownedCryptoId: ownedCryptoId, + ownedDeviceUID: ownedDeviceUID, + within: obvContext) + try obvContext.save(logOnFailure: log) + continuation.resume() + } + } catch { + continuation.resume(throwing: error) + } + } } - /// This is similar to reCreateAllChannelEstablishmentProtocolsWithContactIdentity, except that we only delete the devices for which no channel is established yet. No chanell gets deleted here. + public func requestSettingUnexpiringDevice(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async throws { + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + let log = self.log + guard let ownedDeviceUID = UID(uid: deviceIdentifier) else { assertionFailure(); throw Self.makeError(message: "Could not decode device identifier") } + try await withCheckedThrowingContinuation { continuation in + do { + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier()) { obvContext in + try startOwnedDeviceManagementProtocolForSettingUnexpiringDevice( + ownedCryptoId: ownedCryptoId, + ownedDeviceUID: ownedDeviceUID, + within: obvContext) + try obvContext.save(logOnFailure: log) + continuation.resume() + } + } catch { + continuation.resume(throwing: error) + } + } + } + + + /// This is similar to ``ObvEngine.deleteAllContactDevicesAndChannelsThenPerformContactDeviceDiscovery(with:ofOwnedIdentyWith:)``, except that we only delete the devices for which no channel is established yet. No chanel gets deleted here. public func restartAllOngoingChannelEstablishmentProtocolsWithContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentyWith ownedCryptoId: ObvCryptoId) throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() @@ -1922,23 +2435,9 @@ extension ObvEngine { } // We then launch a device discovery - let message: ObvChannelProtocolMessageToSend - do { - message = try protocolDelegate.getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ownedCryptoId.cryptoIdentity, contactIdentity: contactCryptoId.cryptoIdentity) - } catch let error { - os_log("Could not get initial message for device discovery for contact identity protocol", log: log, type: .fault) - assertionFailure() - throw error - } - do { - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) - } catch let error { - os_log("Could not post a local protocol message allowing to start a device discovery for a contact", log: log, type: .fault) - assertionFailure() - throw error - } - + try performContactDeviceDiscoveryProtocol(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, contactCryptoIdentity: contactCryptoId.cryptoIdentity, within: obvContext) + do { try obvContext.save(logOnFailure: log) } catch let error { @@ -1952,19 +2451,21 @@ extension ObvEngine { } - /// This method first delete all channels and device uids with the contact identity. It then performs a device discovery. This enough, since the device discovery will eventually add devices and thus, new channels will be created. - public func reCreateAllChannelEstablishmentProtocolsWithContactIdentity(with contactCryptoId: ObvCryptoId, ofOwnedIdentyWith ownedCryptoId: ObvCryptoId) throws { + /// This method first delete all channels and device uids with the contact identity. It then performs a device discovery. This is enough, since the device discovery will eventually add devices and thus, new channels will be created. + public func deleteAllContactDevicesAndChannelsThenPerformContactDeviceDiscovery(contactIdentifier: ObvContactIdentifier) throws { assert(!Thread.isMainThread) - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in - try reCreateAllChannelEstablishmentProtocolsWithContactIdentity(with: contactCryptoId.cryptoIdentity, ofOwnedIdentyWith: ownedCryptoId.cryptoIdentity, within: obvContext) + try deleteAllContactDevicesAndChannelsThenPerformContactDeviceDiscovery( + contactIdentifier: contactIdentifier, + within: obvContext) do { try obvContext.save(logOnFailure: log) @@ -1978,15 +2479,17 @@ extension ObvEngine { } - - private func reCreateAllChannelEstablishmentProtocolsWithContactIdentity(with contactCryptoIdentity: ObvCryptoIdentity, ofOwnedIdentyWith ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + + private func deleteAllContactDevicesAndChannelsThenPerformContactDeviceDiscovery(contactIdentifier: ObvContactIdentifier, within obvContext: ObvContext) throws { assert(!Thread.isMainThread) - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + let ownedCryptoIdentity = contactIdentifier.ownedCryptoId.cryptoIdentity + let contactCryptoIdentity = contactIdentifier.contactCryptoId.cryptoIdentity + try obvContext.performAndWaitOrThrow { // We delete all oblivious channels with this contact @@ -2008,31 +2511,106 @@ extension ObvEngine { } // We then launch a device discovery - let message: ObvChannelProtocolMessageToSend + + try performContactDeviceDiscoveryProtocol(ownedCryptoIdentity: ownedCryptoIdentity, contactCryptoIdentity: contactCryptoIdentity, within: obvContext) + + } + + } + + + public func recreateChannelWithContactDevice(contactIdentifier: ObvContactIdentifier, contactDeviceIdentifier: Data) throws { + + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + + let ownedCryptoIdentity = contactIdentifier.ownedCryptoId.cryptoIdentity + let contactCryptoIdentity = contactIdentifier.contactCryptoId.cryptoIdentity + guard let contactDeviceUid = UID(uid: contactDeviceIdentifier) else { throw Self.makeError(message: "Could not decode device identifier") } + + os_log("🛟 [%{public}@] Since the app requested the re-creation of the channel with a device of the contact, we start a channel creation now", log: log, type: .info, contactCryptoIdentity.debugDescription) + + let msg: ObvChannelProtocolMessageToSend + do { + msg = try protocolDelegate.getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ownedCryptoIdentity, andTheDeviceUid: contactDeviceUid, ofTheContactIdentity: contactCryptoIdentity) + } catch { + os_log("Could get initial message for starting channel creation with contact device protocol", log: log, type: .fault) + assertionFailure() + return + } + + let flowId = FlowIdentifier() + let prng = self.prng + let log = self.log + + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in + do { - message = try protocolDelegate.getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ownedCryptoIdentity, contactIdentity: contactCryptoIdentity) - } catch let error { - os_log("Could not get initial message for device discovery for contact identity protocol", log: log, type: .fault) - assertionFailure() - throw error + _ = try channelDelegate.postChannelMessage(msg, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not start channel creation with contact device protocol", log: log, type: .fault) + throw Self.makeError(message: "Could not start channel creation with contact device protocol") } do { - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) - } catch let error { - os_log("Could not post a local protocol message allowing to start a device discovery for a contact", log: log, type: .fault) - assertionFailure() - throw error + try obvContext.save(logOnFailure: log) + } catch { + os_log("Could not perform channel creation with contact device protocol: %{public}@", log: log, type: .fault, error.localizedDescription) + throw Self.makeError(message: "Could not perform channel creation with contact device protocol: \(error.localizedDescription)") } - + + } + + } + + + public func performContactDeviceDiscovery(contactIdentifier: ObvContactIdentifier) throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + + let ownedCryptoIdentity = contactIdentifier.ownedCryptoId.cryptoIdentity + let contactCryptoIdentity = contactIdentifier.contactCryptoId.cryptoIdentity + let log = self.log + let flowId = FlowIdentifier() + + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { [weak self] obvContext in + try self?.performContactDeviceDiscoveryProtocol(ownedCryptoIdentity: ownedCryptoIdentity, contactCryptoIdentity: contactCryptoIdentity, within: obvContext) + try obvContext.save(logOnFailure: log) + } + + } + + + private func performContactDeviceDiscoveryProtocol(ownedCryptoIdentity: ObvCryptoIdentity, contactCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + + // We then launch a device discovery + let message: ObvChannelProtocolMessageToSend + do { + message = try protocolDelegate.getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ownedCryptoIdentity, contactIdentity: contactCryptoIdentity) + } catch let error { + os_log("Could not get initial message for device discovery for contact identity protocol", log: log, type: .fault) + assertionFailure() + throw error + } + + do { + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } catch let error { + os_log("Could not post a local protocol message allowing to start a device discovery for a contact", log: log, type: .fault) + assertionFailure() + throw error } - + } public func computeMutualScanUrl(remoteIdentity: Data, ownedCryptoId: ObvCryptoId) throws -> ObvMutualScanUrl { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } guard let solveChallengeDelegate = solveChallengeDelegate else { throw makeError(message: "The solve challenge delegate is not set") } guard let remoteCryptoId = ObvCryptoIdentity(from: remoteIdentity) else { @@ -2068,9 +2646,9 @@ extension ObvEngine { public func startTrustEstablishmentWithMutualScanProtocol(ownedIdentity: ObvCryptoId, mutualScanUrl: ObvMutualScanUrl) throws { - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } // We then launch a device discovery let message: ObvChannelProtocolMessageToSend @@ -2086,7 +2664,7 @@ extension ObvEngine { try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier()) { obvContext in do { - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) } catch let error { os_log("Could not post a local protocol message allowing to start a device discovery for a contact", log: log, type: .fault) assertionFailure() @@ -2115,11 +2693,11 @@ extension ObvEngine { // The photoURL typically points to a photo stored in a cache directory managed by the app. // When requesting the protocol message to the protocol manager, it creates a local copy of this photo that it will manage. - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let log = self.log @@ -2152,7 +2730,7 @@ extension ObvEngine { } } - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } @@ -2161,8 +2739,8 @@ extension ObvEngine { public func getAllObvGroupV2OfOwnedIdentity(with ownedCryptoId: ObvCryptoId) throws -> Set { - guard let createContextDelegate = self.createContextDelegate else { throw makeError(message: "The create context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var groups = Set() let randomFlowId = FlowIdentifier() try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: randomFlowId) { obvContext in @@ -2178,11 +2756,11 @@ extension ObvEngine { guard !changeset.isEmpty else { return } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } guard let encodedGroupIdentifier = ObvEncoded(withRawData: groupIdentifier), let groupIdentifier = ObvGroupV2.Identifier(encodedGroupIdentifier) else { @@ -2222,31 +2800,61 @@ extension ObvEngine { // If we reach this point, we can update the group - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } } - public func replaceTrustedDetailsByPublishedDetailsOfGroupV2(ownedCryptoId: ObvCryptoId, groupIdentifier: Data) throws { + public func replaceTrustedDetailsByPublishedDetailsOfGroupV2(ownedCryptoId: ObvCryptoId, groupIdentifier: Data) async throws { - guard let createContextDelegate = self.createContextDelegate else { throw makeError(message: "The create context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } guard let encodedGroupIdentifier = ObvEncoded(withRawData: groupIdentifier), - let groupIdentifier = ObvGroupV2.Identifier(encodedGroupIdentifier) + let obvGroupIdentifier = ObvGroupV2.Identifier(encodedGroupIdentifier) else { assertionFailure() throw Self.makeError(message: "Could not parse group identifier") } - let randomFlowId = FlowIdentifier() - try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: randomFlowId) { obvContext in - try identityDelegate.replaceTrustedDetailsByPublishedDetailsOfGroupV2(withGroupWithIdentifier: GroupV2.Identifier(obvGroupV2Identifier: groupIdentifier), - of: ownedCryptoId.cryptoIdentity, - within: obvContext) - try obvContext.save(logOnFailure: log) + let flowId = FlowIdentifier() + let log = self.log + let prng = self.prng + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + + // Trust de details locally + + try identityDelegate.replaceTrustedDetailsByPublishedDetailsOfGroupV2( + withGroupWithIdentifier: GroupV2.Identifier(obvGroupV2Identifier: obvGroupIdentifier), + of: ownedCryptoId.cryptoIdentity, + within: obvContext) + + // Propagate to our other owned devices + + let groupVersion = try identityDelegate.getVersionOfGroupV2( + withGroupWithIdentifier: GroupV2.Identifier(obvGroupV2Identifier: obvGroupIdentifier), + of: ownedCryptoId.cryptoIdentity, + within: obvContext) + let syncAtom = ObvSyncAtom.trustGroupV2Details(groupIdentifier: groupIdentifier, version: groupVersion) + let message = try protocolDelegate.getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, syncAtom: syncAtom) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + // Save the context + + try obvContext.save(logOnFailure: log) + + continuation.resume() + } catch { + continuation.resume(throwing: error) + } + } } } @@ -2254,10 +2862,10 @@ extension ObvEngine { public func leaveGroupV2(ownedCryptoId: ObvCryptoId, groupIdentifier: Data) throws { - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let log = self.log @@ -2275,7 +2883,7 @@ extension ObvEngine { flowId: flowId) try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } @@ -2284,10 +2892,10 @@ extension ObvEngine { public func performReDownloadOfGroupV2(ownedCryptoId: ObvCryptoId, groupIdentifier: Data) throws { - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let log = self.log @@ -2300,13 +2908,164 @@ extension ObvEngine { let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() - let message = try protocolDelegate.getInitiateGroupReDownloadMessageForGroupV2Protocol(ownedIdentity: ownedCryptoId.cryptoIdentity, - groupIdentifier: GroupV2.Identifier(obvGroupV2Identifier: groupIdentifier), - flowId: flowId) + let message = try protocolDelegate.getInitiateGroupReDownloadMessageForGroupV2Protocol( + ownedIdentity: ownedCryptoId.cryptoIdentity, + groupIdentifier: GroupV2.Identifier(obvGroupV2Identifier: groupIdentifier), + flowId: flowId) try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + try obvContext.save(logOnFailure: log) + } + + } + + + /// Start a owned device discovery protocol for the specified owned identity. + public func performOwnedDeviceDiscovery(ownedCryptoId: ObvCryptoId) async throws { + + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + + let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() + let log = self.log + + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { [weak self] obvContext in + try self?.performOwnedDeviceDiscovery(ownedCryptoId: ownedCryptoId.cryptoIdentity, within: obvContext) try obvContext.save(logOnFailure: log) } + + } + + + /// Start a owned device discovery protocol for the specified owned identity and return the server answer. This is used, .e.g, when reactivating the current device in order to show the list of other owned devices to the user. + public func performOwnedDeviceDiscoveryNow(ownedCryptoId: ObvCryptoId) async throws -> ObvOwnedDeviceDiscoveryResult { + + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + + let flowId = FlowIdentifier() + + let encryptedOwnedDeviceDiscoveryResult = try await networkFetchDelegate.performOwnedDeviceDiscoveryNow(ownedCryptoId: ownedCryptoId.cryptoIdentity, flowId: FlowIdentifier()) + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + let ownedDeviceDiscoveryResult = try identityDelegate.decryptEncryptedOwnedDeviceDiscoveryResult(encryptedOwnedDeviceDiscoveryResult, forOwnedCryptoId: ownedCryptoId.cryptoIdentity, within: obvContext) + let obvOwnedDeviceDiscoveryResult = ownedDeviceDiscoveryResult.obvOwnedDeviceDiscoveryResult + continuation.resume(returning: obvOwnedDeviceDiscoveryResult) + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + private func performOwnedDeviceDiscovery(ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws { + + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + + let message = try protocolDelegate.getInitiateOwnedDeviceDiscoveryMessage( + ownedCryptoIdentity: ownedCryptoId) + + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } + + + /// This method first delete all channels and other owned device. It then performs an owned device discovery. This is enough, since the owned device discovery will eventually add devices and thus, new channels will be created. + public func deleteAllOtherOwnedDevicesAndChannelsThenPerformOwnedDeviceDiscovery(ownedCryptoId: ObvCryptoId) async throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + + let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() + + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in + + try deleteAllOtherOwnedDevicesAndChannelsThenPerformOwnedDeviceDiscovery( + ownedCryptoId: ownedCryptoId.cryptoIdentity, + within: obvContext) + + do { + try obvContext.save(logOnFailure: log) + } catch let error { + os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + throw error + } + + } + + } + + + private func deleteAllOtherOwnedDevicesAndChannelsThenPerformOwnedDeviceDiscovery(ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws { + + assert(!Thread.isMainThread) + + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + try obvContext.performAndWaitOrThrow { + + let currentDeviceUID = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedCryptoId, within: obvContext) + let otherOwnedDeviceUIDs = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedCryptoId, within: obvContext) + + // We delete all oblivious channels with this contact + do { + try otherOwnedDeviceUIDs.forEach { otherOwnedDeviceUID in + try channelDelegate.deleteObliviousChannelBetweenCurentDeviceWithUid(currentDeviceUid: currentDeviceUID, andTheRemoteDeviceWithUid: otherOwnedDeviceUID, ofRemoteIdentity: ownedCryptoId, within: obvContext) + } + } catch { + os_log("Could not recreate all channels with contact. We could not delete previous channels.", log: log, type: .fault) + assertionFailure() + throw error + } + + // We then delete all previous contact devices + do { + try otherOwnedDeviceUIDs.forEach { otherOwnedDeviceUID in + try identityDelegate.removeOtherDeviceForOwnedIdentity(ownedCryptoId, otherDeviceUid: otherOwnedDeviceUID, within: obvContext) + } + } catch let error { + os_log("Could not recreate all channels with contact. We could not delete previous devices.", log: log, type: .fault) + assertionFailure() + throw error + } + + // We then launch a device discovery + + try performOwnedDeviceDiscovery(ownedCryptoId: ownedCryptoId, within: obvContext) + + } + + } + + + + + public func performOwnedDeviceDiscoveryForAllOwnedIdentities() async throws { + try await performOwnedDeviceDiscoveryForAllOwnedIdentities(flowId: FlowIdentifier()) + } + + /// Start a owned device discovery protocol for all existing owned identities. + func performOwnedDeviceDiscoveryForAllOwnedIdentities(flowId: FlowIdentifier) async throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + var allOwnedIdentities = Set() + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in + allOwnedIdentities = try identityDelegate.getOwnedIdentities(within: obvContext) + } + + for ownedIdentity in allOwnedIdentities { + try await performOwnedDeviceDiscovery(ownedCryptoId: ObvCryptoId(cryptoIdentity: ownedIdentity)) + } } @@ -2315,10 +3074,10 @@ extension ObvEngine { assert(!Thread.isMainThread) - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let log = self.log @@ -2335,7 +3094,7 @@ extension ObvEngine { groupIdentifier: GroupV2.Identifier(obvGroupV2Identifier: groupIdentifier), flowId: flowId) try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } @@ -2352,10 +3111,10 @@ extension ObvEngine { assert(!Thread.isMainThread) - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let log = self.log @@ -2373,7 +3132,7 @@ extension ObvEngine { keycloakCurrentTimestamp: keycloakCurrentTimestamp, flowId: flowId) try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } @@ -2396,11 +3155,11 @@ extension ObvEngine { guard !groupMembers.isEmpty else { return } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let log = self.log @@ -2433,7 +3192,7 @@ extension ObvEngine { var error: Error? createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in do { - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } catch let _error { error = _error @@ -2444,16 +3203,48 @@ extension ObvEngine { } } + + + public func disbandGroupV1(groupUid: UID, ownedCryptoId: ObvCryptoId) async throws { + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() + try await postDisbandGroupMessageForGroupManagementProtocol(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, groupUid: groupUid, flowId: flowId) + } + + + private func postDisbandGroupMessageForGroupManagementProtocol(ownedCryptoIdentity: ObvCryptoIdentity, groupUid: UID, flowId: FlowIdentifier) async throws { + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + let log = self.log + let prng = self.prng + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + let message = try protocolDelegate.getDisbandGroupMessageForGroupManagementProtocol( + groupUid: groupUid, + ownedIdentity: ownedCryptoIdentity, + within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + try obvContext.save(logOnFailure: log) + continuation.resume() + } catch { + assertionFailure() + continuation.resume(throwing: error) + } + } + } + } public func inviteContactsToGroupOwned(groupUid: UID, ownedCryptoId: ObvCryptoId, newGroupMembers: Set) throws { guard !newGroupMembers.isEmpty else { return } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let log = self.log @@ -2469,7 +3260,7 @@ extension ObvEngine { ownedIdentity: ownedCryptoId.cryptoIdentity, newGroupMembers: newMembersCryptoIdentities, within: obvContext) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } catch let _error { error = _error @@ -2486,11 +3277,11 @@ extension ObvEngine { let newGroupMembers = Set([pendingGroupMember]) - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let log = self.log @@ -2514,7 +3305,7 @@ extension ObvEngine { ownedIdentity: ownedCryptoId.cryptoIdentity, newGroupMembers: newMembersCryptoIdentities, within: obvContext) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } catch let _error { error = _error @@ -2532,10 +3323,10 @@ extension ObvEngine { guard !removedGroupMembers.isEmpty else { return } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() @@ -2550,7 +3341,7 @@ extension ObvEngine { ownedIdentity: ownedCryptoId.cryptoIdentity, removedGroupMembers: removedMembersCryptoIdentities, within: obvContext) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } catch let _error { error = _error @@ -2565,8 +3356,8 @@ extension ObvEngine { public func getAllContactGroupsForOwnedIdentity(with ownedCryptoId: ObvCryptoId) throws -> Set { - guard let createContextDelegate = self.createContextDelegate else { throw makeError(message: "The create context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var obvContactGroups: Set! var error: Error? @@ -2596,8 +3387,8 @@ extension ObvEngine { public func getContactGroupOwned(groupUid: UID, ownedCryptoId: ObvCryptoId) throws -> ObvContactGroup { - guard let createContextDelegate = self.createContextDelegate else { throw makeError(message: "The create context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var obvContactGroup: ObvContactGroup! var error: Error? @@ -2628,8 +3419,8 @@ extension ObvEngine { public func getContactGroupJoined(groupUid: UID, groupOwner: ObvCryptoId, ownedCryptoId: ObvCryptoId) throws -> ObvContactGroup { - guard let createContextDelegate = self.createContextDelegate else { throw makeError(message: "The create context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var obvContactGroup: ObvContactGroup! var error: Error? @@ -2660,8 +3451,8 @@ extension ObvEngine { public func updateLatestDetailsOfOwnedContactGroup(using newGroupDetails: ObvGroupDetails, ownedCryptoId: ObvCryptoId, groupUid: UID) throws { - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } let randomFlowId = FlowIdentifier() try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: randomFlowId) { (obvContext) in @@ -2698,8 +3489,8 @@ extension ObvEngine { public func discardLatestDetailsOfOwnedContactGroup(ownedCryptoId: ObvCryptoId, groupUid: UID) throws { - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } do { var error: Error? @@ -2726,9 +3517,9 @@ extension ObvEngine { public func publishLatestDetailsOfOwnedContactGroup(ownedCryptoId: ObvCryptoId, groupUid: UID) throws { - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in @@ -2747,59 +3538,66 @@ extension ObvEngine { } - public func trustPublishedDetailsOfJoinedContactGroup(ownedCryptoId: ObvCryptoId, groupUid: UID, groupOwner: ObvCryptoId) throws { + public func trustPublishedDetailsOfJoinedContactGroup(ownedCryptoId: ObvCryptoId, groupUid: UID, groupOwner: ObvCryptoId) async throws { - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } - do { - var error: Error? - let randomFlowId = FlowIdentifier() - createContextDelegate.performBackgroundTaskAndWait(flowId: randomFlowId) { (obvContext) in + let flowId = FlowIdentifier() + let log = self.log + let prng = self.prng + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in do { + + // Trust the published details locally + guard let groupStructure = try identityDelegate.getGroupJoinedStructure(ownedIdentity: ownedCryptoId.cryptoIdentity, groupUid: groupUid, groupOwner: groupOwner.cryptoIdentity, within: obvContext) else { throw Self.makeError(message: "Could not trust published details of joined contact group as we could not get the group joined structure") } + guard groupStructure.groupType == .joined else { throw Self.makeError(message: "Could not trust published details of joined contact group as the group type is not .joined") } + try identityDelegate.trustPublishedDetailsOfContactGroupJoined(ownedIdentity: ownedCryptoId.cryptoIdentity, groupUid: groupUid, groupOwner: groupOwner.cryptoIdentity, within: obvContext) + + // Propagate to other owned devices + + let groupDetailsElements = try identityDelegate.getGroupJoinedInformationAndPublishedPhoto( + ownedIdentity: ownedCryptoId.cryptoIdentity, + groupUid: groupUid, + groupOwner: groupOwner.cryptoIdentity, + within: obvContext).groupDetailsElementsWithPhoto.groupDetailsElements + let serializedGroupDetailsElements = try groupDetailsElements.jsonEncode() + let syncAtom = ObvSyncAtom.trustGroupV1Details(groupOwner: groupOwner, groupUid: groupUid, serializedGroupDetailsElements: serializedGroupDetailsElements) + let message = try protocolDelegate.getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, syncAtom: syncAtom) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + // Save the context + try obvContext.save(logOnFailure: log) - } catch let _error { - error = _error + + continuation.resume() + + } catch { + continuation.resume(throwing: error) } } - guard error == nil else { throw error! } } - - } - - - public func deleteOwnedContactGroup(ownedCryptoId: ObvCryptoId, groupUid: UID) throws { - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - let log = self.log - - let randomFlowId = FlowIdentifier() - createContextDelegate.performBackgroundTask(flowId: randomFlowId) { (obvContext) in - do { - try identityDelegate.deleteContactGroupOwned(ownedIdentity: ownedCryptoId.cryptoIdentity, groupUid: groupUid, deleteEvenIfGroupMembersStillExist: false, within: obvContext) - try obvContext.save(logOnFailure: log) - } catch { - os_log("Could not delete owned contact group: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure(error.localizedDescription) - } - } } - + // Called when the owned identity decides to leave a group she joined public func leaveContactGroupJoined(ownedCryptoId: ObvCryptoId, groupUid: UID, groupOwner: ObvCryptoId) throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let log = self.log @@ -2811,7 +3609,7 @@ extension ObvEngine { groupUid: groupUid, groupOwner: groupOwner.cryptoIdentity, within: obvContext) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } catch let _error { error = _error @@ -2824,9 +3622,9 @@ extension ObvEngine { public func refreshContactGroupJoined(ownedCryptoId: ObvCryptoId, groupUid: UID, groupOwner: ObvCryptoId) throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let log = self.log @@ -2835,7 +3633,7 @@ extension ObvEngine { createContextDelegate.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in do { let message = try protocolDelegate.getInitiateGroupMembersQueryMessageForGroupManagementProtocol(groupUid: groupUid, ownedIdentity: ownedCryptoId.cryptoIdentity, groupOwner: groupOwner.cryptoIdentity, within: obvContext) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) try obvContext.save(logOnFailure: log) } catch let _error { error = _error @@ -2852,7 +3650,7 @@ extension ObvEngine { /// This method returns the status of each register websocket. This is essentially used for debugging the websockets. public func getWebSocketState(ownedIdentity: ObvCryptoId) async throws -> (URLSessionTask.State,TimeInterval?) { - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "The network fetch delegate is not set") } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } return try await networkFetchDelegate.getWebSocketState(ownedIdentity: ownedIdentity.cryptoIdentity) } @@ -2867,15 +3665,15 @@ extension ObvEngine { os_log("🧾 Call to postReturnReceiptWithElements with nonce %{public}@ and attachmentNumber: %{public}@", log: log, type: .info, elements.nonce.hexString(), String(describing: attachmentNumber)) - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The create context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let flowDelegate = self.flowDelegate else { throw makeError(message: "The flow delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } let contactCryptoIdentity = contactCryptoId.cryptoIdentity let ownedCryptoIdentity = ownedCryptoId.cryptoIdentity guard let messageUid = UID(uid: messageIdentifierFromEngine) else { assertionFailure(); throw makeError(message: "Could not parse message identifier from engine") } - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, uid: messageUid) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, uid: messageUid) // We do not need to start a flow in order to wait for the return receipt to be posted. // It was started when receiving the notification from the network manager informing the engine that a message / attachment is fully available. @@ -2930,18 +3728,18 @@ extension ObvEngine { /// - attachmentsToSend: An array of attachments to send alongside the message. /// - contactCryptoIds: The set of contacts to whom the message shall be sent. /// - ownedCryptoId: The owned cryptoId sending the message. + /// - alsoPostToOtherOwnedDevices: Set this to `true` to send the message to the other devices of the owned identity /// - completionHandler: A completion block, executed when the post has done was is required. Hint : for now, this is only used when calling this method from the share extension, in order to dismiss the share extension on post completion. - public func post(messagePayload: Data, extendedPayload: Data?, withUserContent: Bool, isVoipMessageForStartingCall: Bool, attachmentsToSend: [ObvAttachmentToSend], toContactIdentitiesWithCryptoId contactCryptoIds: Set, ofOwnedIdentityWithCryptoId ownedCryptoId: ObvCryptoId, completionHandler: (() -> Void)? = nil) throws -> [ObvCryptoId: Data] { + public func post(messagePayload: Data, extendedPayload: Data?, withUserContent: Bool, isVoipMessageForStartingCall: Bool, attachmentsToSend: [ObvAttachmentToSend], toContactIdentitiesWithCryptoId contactCryptoIds: Set, ofOwnedIdentityWithCryptoId ownedCryptoId: ObvCryptoId, alsoPostToOtherOwnedDevices: Bool, completionHandler: (() -> Void)? = nil) throws -> [ObvCryptoId: Data] { - guard !contactCryptoIds.isEmpty else { - assertionFailure("We should not be posting to an empty set of contacts. This might be a bug.") + guard !contactCryptoIds.isEmpty || alsoPostToOtherOwnedDevices else { completionHandler?() return [:] } - guard let createContextDelegate = self.createContextDelegate else { throw makeError(message: "The create context delegate is not set") } - guard let channelDelegate = self.channelDelegate else { throw makeError(message: "The channel delegate is not set") } - guard let flowDelegate = self.flowDelegate else { throw makeError(message: "The flow delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } let attachments: [ObvChannelApplicationMessageToSend.Attachment] = attachmentsToSend.map { @@ -2957,7 +3755,8 @@ extension ObvEngine { extendedMessagePayload: extendedPayload, withUserContent: withUserContent, isVoipMessageForStartingCall: isVoipMessageForStartingCall, - attachments: attachments) + attachments: attachments, + alsoPostToOtherOwnedDevices: alsoPostToOtherOwnedDevices) let flowId = try flowDelegate.startNewFlow(completionHandler: completionHandler) @@ -2968,10 +3767,10 @@ extension ObvEngine { assert(!Thread.isMainThread) - let messageIdentifiersForToIdentities = try channelDelegate.post(message, randomizedWith: _self.prng, within: obvContext) + let messageIdentifiersForToIdentities = try channelDelegate.postChannelMessage(message, randomizedWith: _self.prng, within: obvContext) try messageIdentifiersForToIdentities.keys.forEach { messageId in - let attachmentIds = (0.. ObvAttachment { - - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "The network fetch delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - - var refreshedObvAttachment: ObvAttachment! - var error: Error? - let randomFlowId = FlowIdentifier() - createContextDelegate.performBackgroundTaskAndWait(flowId: randomFlowId) { (obvContext) in - do { - refreshedObvAttachment = try ObvAttachment(attachmentId: attachmentId, - networkFetchDelegate: networkFetchDelegate, - identityDelegate: identityDelegate, - within: obvContext) - } catch let _error { - error = _error - } - } - guard error == nil else { - throw error! - } - return refreshedObvAttachment - } - - public func downloadAllMessagesForOwnedIdentities() { - guard let createContextDelegate = createContextDelegate else { assertionFailure(); return } - guard let networkFetchDelegate = networkFetchDelegate else { assertionFailure(); return } - guard let flowDelegate = flowDelegate else { assertionFailure(); return } - guard let identityDelegate = identityDelegate else { assertionFailure(); return } + guard let createContextDelegate else { assertionFailure(); return } + guard let networkFetchDelegate else { assertionFailure(); return } + guard let flowDelegate else { assertionFailure(); return } + guard let identityDelegate else { assertionFailure(); return } let log = self.log let randomFlowId = FlowIdentifier() @@ -3129,12 +3902,12 @@ extension ObvEngine { public func cancelDownloadOfMessage(withIdentifier messageIdRaw: Data, ownedCryptoId: ObvCryptoId) throws { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "The network fetch delegate is not set") } - guard let flowDelegate = flowDelegate else { throw makeError(message: "The flow delegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } guard let uid = UID(uid: messageIdRaw) else { throw ObvEngine.makeError(message: "Could not parse message id") } - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, uid: uid) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, uid: uid) guard let flowId = flowDelegate.startBackgroundActivityForDeletingAMessage(messageId: messageId) else { throw Self.makeError(message: "Could not cancel download of message since we could not start a background activity for this") @@ -3156,27 +3929,28 @@ extension ObvEngine { } - public func resumeDownloadOfAttachment(_ attachmentNumber: Int, ofMessageWithIdentifier messageIdRaw: Data, ownedCryptoId: ObvCryptoId) throws { + /// The ``forceResume`` Boolean value is used when the engine notifies the app that an attachment was download, yet, the app detects that the downloaded file does not exist on disk. In that case, it requests a new download to the engine by calling this method while setting ``forceResume`` to `true`. + public func resumeDownloadOfAttachment(_ attachmentNumber: Int, ofMessageWithIdentifier messageIdRaw: Data, ownedCryptoId: ObvCryptoId, forceResume: Bool) throws { - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "The network fetch delegate is not set") } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } guard let uid = UID(uid: messageIdRaw) else { throw ObvEngine.makeError(message: "Could not parse message identifier") } - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, uid: uid) - let attachmentId = AttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, uid: uid) + let attachmentId = ObvAttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) let randomFlowId = FlowIdentifier() - networkFetchDelegate.resumeDownloadOfAttachment(attachmentId: attachmentId, flowId: randomFlowId) + networkFetchDelegate.resumeDownloadOfAttachment(attachmentId: attachmentId, forceResume: forceResume, flowId: randomFlowId) } public func pauseDownloadOfAttachment(_ attachmentNumber: Int, ofMessageWithIdentifier messageIdRaw: Data, ownedCryptoId: ObvCryptoId) throws { - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "The network fetch delegate is not set") } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } guard let uid = UID(uid: messageIdRaw) else { throw ObvEngine.makeError(message: "Could not parse message identifier") } - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, uid: uid) - let attachmentId = AttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, uid: uid) + let attachmentId = ObvAttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) let randomFlowId = FlowIdentifier() networkFetchDelegate.pauseDownloadOfAttachment(attachmentId: attachmentId, flowId: randomFlowId) @@ -3185,9 +3959,9 @@ extension ObvEngine { public func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int, progress: Float)] { - guard let networkFetchDelegate = networkFetchDelegate else { throw makeError(message: "The network fetch delegate is not set") } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } let progresses = try await networkFetchDelegate.requestDownloadAttachmentProgressesUpdatedSince(date: date) - let progressesToReturn = progresses.map { (attachmentId: AttachmentIdentifier, progress: Float) in + let progressesToReturn = progresses.map { (attachmentId: ObvAttachmentIdentifier, progress: Float) in (ObvCryptoId(cryptoIdentity: attachmentId.messageId.ownedCryptoIdentity), attachmentId.messageId.uid.raw, attachmentId.attachmentNumber, progress) } return progressesToReturn @@ -3197,7 +3971,7 @@ extension ObvEngine { public func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int, progress: Float)] { guard let networkPostDelegate = networkPostDelegate else { throw makeError(message: "The network post delegate is not set") } let progresses = try await networkPostDelegate.requestUploadAttachmentProgressesUpdatedSince(date: date) - let progressesToReturn = progresses.map { (attachmentId: AttachmentIdentifier, progress: Float) in + let progressesToReturn = progresses.map { (attachmentId: ObvAttachmentIdentifier, progress: Float) in (ObvCryptoId(cryptoIdentity: attachmentId.messageId.ownedCryptoIdentity), attachmentId.messageId.uid.raw, attachmentId.attachmentNumber, progress) } return progressesToReturn @@ -3215,7 +3989,7 @@ extension ObvEngine { let flowId = FlowIdentifier() guard let networkPostDelegate = networkPostDelegate else { throw Self.makeError(message: "The network post delegate is not set") } - guard let networkFetchDelegate = networkFetchDelegate else { throw Self.makeError(message: "The network fetch delegate is not set") } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } if networkPostDelegate.backgroundURLSessionIdentifierIsAppropriate(backgroundURLSessionIdentifier: backgroundURLSessionIdentifier) { os_log("🌊 The background URLSession Identifier %{public}@ is appropriate for the Network Post Delegate", log: log, type: .info, backgroundURLSessionIdentifier) @@ -3243,29 +4017,10 @@ extension ObvEngine { os_log("🌊 Call to the engine application(performFetchWithCompletionHandler:) method", log: log, type: .info) - guard let flowDelegate = flowDelegate else { - os_log("The flow delegate is not set", log: log, type: .fault) - completionHandler(.failed) - return - } - - guard let identityDelegate = delegateManager.identityDelegate else { - os_log("The identity delegate is not set", log: log, type: .fault) - completionHandler(.failed) - return - } - - guard let createContextDelegate = delegateManager.createContextDelegate else { - os_log("The create context delegate is not set", log: log, type: .fault) - completionHandler(.failed) - return - } - - guard let networkFetchDelegate = delegateManager.networkFetchDelegate else { - os_log("The network Fetch Delegate is not set", log: log, type: .fault) - completionHandler(.failed) - return - } + guard let flowDelegate else { completionHandler(.failed); return } + guard let identityDelegate else { completionHandler(.failed); return } + guard let createContextDelegate else { completionHandler(.failed); return } + guard let networkFetchDelegate else { completionHandler(.failed); return } do { @@ -3319,63 +4074,47 @@ extension ObvEngine { extension ObvEngine { - public func decrypt(encryptedPushNotification encryptedNotification: EncryptedPushNotification) throws -> ObvMessage { + public func decrypt(encryptedPushNotification encryptedNotification: ObvEncryptedPushNotification) async throws -> ObvMessage { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The context delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identity delegate is not set") } - guard let channelDelegate = channelDelegate else { throw makeError(message: "The channel delegate is not set") } - - let dummyFlowId = FlowIdentifier() - - var obvMessage: ObvMessage? - let randomFlowId = FlowIdentifier() - createContextDelegate.performBackgroundTaskAndWait(flowId: randomFlowId) { (obvContext) in - - let _ownedIdentity: ObvCryptoIdentity? - do { - _ownedIdentity = try identityDelegate.getOwnedIdentityAssociatedToMaskingUID(encryptedNotification.maskingUID, within: obvContext) - } catch { - os_log("The call to getOwnedIdentityAssociatedToMaskingUID failed: %{public}@", log: log, type: .fault, error.localizedDescription) - return - } - - guard let ownedIdentity = _ownedIdentity else { - os_log("We could not find an appropriate owned identity associated to the masking UID", log: log, type: .error) - return - } - - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: encryptedNotification.messageIdFromServer) - let encryptedMessage = ObvNetworkReceivedMessageEncrypted( - messageId: messageId, - messageUploadTimestampFromServer: encryptedNotification.messageUploadTimestampFromServer, - downloadTimestampFromServer: encryptedNotification.messageUploadTimestampFromServer, /// Encrypted notifications do no have access to a download timestamp from server - localDownloadTimestamp: encryptedNotification.localDownloadTimestamp, - encryptedContent: encryptedNotification.encryptedContent, - wrappedKey: encryptedNotification.wrappedKey, - knownAttachmentCount: nil, - availableEncryptedExtendedContent: encryptedNotification.encryptedExtendedContent) - let decryptedMessage: ObvNetworkReceivedMessageDecrypted - do { - decryptedMessage = try channelDelegate.decrypt(encryptedMessage, within: dummyFlowId) - } catch { - os_log("The channel delegate failed to decrypt the encrypted message", log: log, type: .error) - return - } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + + let log = self.log - // We pass nil for the networkFetchDelegate since it is only used to decrypt attachements that are not yet available. - do { - obvMessage = try ObvMessage(networkReceivedMessage: decryptedMessage, networkFetchDelegate: nil, identityDelegate: identityDelegate, within: obvContext) - } catch { - os_log("Could not decrypt the encrypted content", log: log, type: .fault) - return + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + let randomFlowId = FlowIdentifier() + createContextDelegate.performBackgroundTask(flowId: randomFlowId) { (obvContext) in + do { + + guard let ownedIdentity = try identityDelegate.getOwnedIdentityAssociatedToMaskingUID(encryptedNotification.maskingUID, within: obvContext) else { + os_log("We could not find an appropriate owned identity associated to the masking UID", log: log, type: .error) + throw ObvError.noAppropriateOwnedIdentityFound + } + + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: encryptedNotification.messageIdFromServer) + let encryptedMessage = ObvNetworkReceivedMessageEncrypted( + messageId: messageId, + messageUploadTimestampFromServer: encryptedNotification.messageUploadTimestampFromServer, + downloadTimestampFromServer: encryptedNotification.messageUploadTimestampFromServer, /// Encrypted notifications do no have access to a download timestamp from server + localDownloadTimestamp: encryptedNotification.localDownloadTimestamp, + encryptedContent: encryptedNotification.encryptedContent, + wrappedKey: encryptedNotification.wrappedKey, + knownAttachmentCount: nil, + availableEncryptedExtendedContent: encryptedNotification.encryptedExtendedContent) + + let decryptedMessage = try channelDelegate.decrypt(encryptedMessage, within: randomFlowId) + + // We pass nil for the networkFetchDelegate since it is only used to decrypt attachements that are not yet available. + let obvMessage = try ObvMessage(networkReceivedMessage: decryptedMessage, networkFetchDelegate: nil, within: obvContext) + + continuation.resume(returning: obvMessage) + + } catch { + continuation.resume(throwing: error) + } } } - - guard obvMessage != nil else { - os_log("Failed to return a decrypted obvMessage", log: log, type: .error) - throw makeError(message: "Cannot return a decrypted ObvMessage") - } - return obvMessage! } @@ -3399,6 +4138,13 @@ extension ObvEngine { replayTransactionsHistory() // 2022-02-24: Used to be called only if forTheFirstTime. We now want to empty the history as soon as possible. if forTheFirstTime { downloadAllMessagesForOwnedIdentities() + do { + try await performOwnedDeviceDiscoveryForAllOwnedIdentities(flowId: flowId) + // try await sendTriggerSyncSnapshotMessageToAllExistingSynchronizationProtocolInstances(flowId: flowId) + // try await initiateIfRequiredSynchronizationProtocolInstanceForEachChannelWithAnotherOwnedDevice(flowId: flowId) + } catch { + assertionFailure(error.localizedDescription) + } } } @@ -3408,9 +4154,9 @@ extension ObvEngine { assert(!Thread.isMainThread) - guard let createContextDelegate = createContextDelegate else { assertionFailure(); throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { assertionFailure(); throw makeError(message: "The identityDelegate is not set") } - guard let networkFetchDelegate = networkFetchDelegate else { assertionFailure(); throw makeError(message: "The networkFetchDelegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } let log = self.log let flowId = FlowIdentifier() @@ -3436,7 +4182,7 @@ extension ObvEngine { public func disconnectWebsockets() async throws { - guard let networkFetchDelegate = networkFetchDelegate else { assertionFailure(); throw makeError(message: "The networkFetchDelegate is not set") } + guard let networkFetchDelegate else { throw ObvError.networkFetchDelegateIsNil } let flowId = FlowIdentifier() await networkFetchDelegate.disconnectWebsockets(flowId: flowId) } @@ -3556,30 +4302,91 @@ extension ObvEngine { } - public func restoreFullBackup(backupRequestIdentifier: FlowIdentifier) async throws { + /// Returns the ObvCryptoIds of the restored owned identities. + public func restoreFullBackup(backupRequestIdentifier: FlowIdentifier, nameToGiveToCurrentDevice: String) async throws -> Set { os_log("Starting backup restore identified by %{public}@", log: log, type: .info, backupRequestIdentifier.debugDescription) - guard let backupDelegate = self.backupDelegate else { - assertionFailure() - throw makeError(message: "The backup delegate is not set") - } + guard let backupDelegate else { assertionFailure(); throw ObvError.backupDelegateIsNil } + + // Get a set of owned identities that exist before the backup restore + + let preExistingOwnedCryptoIds = try await getOwnedIdentities() + + // Restore the backup try await backupDelegate.restoreFullBackup(backupRequestIdentifier: backupRequestIdentifier) + // Get the set of restore owned identities + + let restoredOwnedIdentities = try await getOwnedIdentities().subtracting(preExistingOwnedCryptoIds) + // If we reach this point, the backup was successfully restored // We perform post-restore tasks + + // Set the current device name for all owned identities + // We only do it locally, the following request (for push notification), will inform the server + try setCurrentDeviceNameOfAllRestoredOwnedIdentitiesAfterBackupRestore(restoredOwnedIdentities: restoredOwnedIdentities, nameToGiveToCurrentDevice: nameToGiveToCurrentDevice) + // Re-register all active owned identities to push notifications + ObvEngineNotificationNew.serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications + .postOnBackgroundQueue(within: appNotificationCenter) + // Perform a re-download of all group v2 try performReDownloadOfAllGroupV2AfterBackupRestore(backupRequestIdentifier: backupRequestIdentifier) + // Since the notifications from the identity manager are not triggered during a backup restore, + // we call the appropriate method from the engine coordinator now + + for ownedCryptoIdentity in restoredOwnedIdentities { + engineCoordinator.processNewActiveOwnedIdentity(ownedCryptoIdentity: ownedCryptoIdentity, flowId: backupRequestIdentifier) + } + + return Set(restoredOwnedIdentities.map({ ObvCryptoId(cryptoIdentity: $0) })) + + } + + + /// Helper method used during a backup restore + private func getOwnedIdentities() async throws -> Set { + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + return try await withCheckedThrowingContinuation { continuation in + do { + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier()) { obvContext in + let ownedCryptoIds = try identityDelegate.getOwnedIdentities(within: obvContext) + continuation.resume(returning: ownedCryptoIds) + } + } catch { + continuation.resume(throwing: error) + } + } + } + + + private func setCurrentDeviceNameOfAllRestoredOwnedIdentitiesAfterBackupRestore(restoredOwnedIdentities: Set, nameToGiveToCurrentDevice: String) throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + + let log = self.log + try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier()) { obvContext in + + // We set the device names locally for all restored owned identities (active or not) + for restoredOwnedIdentity in restoredOwnedIdentities { + try identityDelegate.setCurrentDeviceNameOfOwnedIdentityAfterBackupRestore(ownedCryptoIdentity: restoredOwnedIdentity, nameForCurrentDevice: nameToGiveToCurrentDevice, within: obvContext) + } + + try obvContext.save(logOnFailure: log) + } + } private func performReDownloadOfAllGroupV2AfterBackupRestore(backupRequestIdentifier: FlowIdentifier) throws { - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identityDelegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var allGroupsV2 = [ObvCryptoIdentity: Set]() try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: backupRequestIdentifier) { obvContext in @@ -3605,13 +4412,24 @@ extension ObvEngine { guard let backupDelegate = self.backupDelegate else { os_log("The backup delegate is not set", log: log, type: .fault) assertionFailure() - throw ObvEngine.makeError(message: "Internal error") + throw ObvError.backupDelegateIsNil } backupDelegate.registerAppBackupableObject(appBackupableObject) } + + public func registerAppSnapshotableObject(_ appSnapshotableObject: ObvAppSnapshotable) throws { + guard let syncSnapshotDelegate else { + os_log("The backup delegate is not set", log: log, type: .fault) + assertionFailure() + throw ObvError.syncSnapshotDelegateIsNil + } + syncSnapshotDelegate.registerAppSnapshotableObject(appSnapshotableObject) + } + } + // MARK: - Public API for User Data extension ObvEngine { @@ -3619,9 +4437,9 @@ extension ObvEngine { /// This is called when restoring a backup and after the migration to the first Olvid version that supports profile pictures public func downloadAllUserData() throws { - guard let flowDelegate = flowDelegate else { throw ObvEngine.makeError(message: "The flow delegate is not set") } - guard let createContextDelegate = createContextDelegate else { throw ObvEngine.makeError(message: "Create Context Delegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identityDelegate is not set") } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() @@ -3662,20 +4480,20 @@ extension ObvEngine { public func startDownloadIdentityPhotoProtocolWithinTransaction(within obvContext: ObvContext, ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements) throws { - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel Delegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let message = try protocolDelegate.getInitialMessageForDownloadIdentityPhotoChildProtocol(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, contactIdentityDetailsElements: contactIdentityDetailsElements) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) } public func startDownloadGroupPhotoProtocolWithinTransaction(within obvContext: ObvContext, ownedIdentity: ObvCryptoIdentity, groupInformation: GroupInformation) throws { - guard let protocolDelegate = protocolDelegate else { throw makeError(message: "The protocol delegate is not set") } - guard let channelDelegate = channelDelegate else { throw ObvEngine.makeError(message: "Channel Delegate is not set") } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } let message = try protocolDelegate.getInitialMessageForDownloadGroupPhotoChildProtocol(ownedIdentity: ownedIdentity, groupInformation: groupInformation) - _ = try channelDelegate.post(message, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) } } @@ -3685,9 +4503,10 @@ extension ObvEngine { extension ObvEngine { - public func getTurnCredentials(ownedIdenty: ObvCryptoId, callUuid: UUID) { + public func getTurnCredentials(ownedCryptoId: ObvCryptoId) async throws -> ObvTurnCredentials { + guard let networkFetchDelegate else { assertionFailure(); throw ObvError.networkFetchDelegateIsNil } let flowId = FlowIdentifier() - networkFetchDelegate?.getTurnCredentials(ownedIdenty: ownedIdenty.cryptoIdentity, callUuid: callUuid, username1: "alice", username2: "bob", flowId: flowId) + return try await networkFetchDelegate.getTurnCredentials(ownedCryptoId: ownedCryptoId.cryptoIdentity, flowId: flowId) } } @@ -3703,8 +4522,8 @@ extension ObvEngine { public func computeTagForOwnedIdentity(with ownedIdentityCryptoId: ObvCryptoId, on data: Data) throws -> Data { - guard let createContextDelegate = createContextDelegate else { throw makeError(message: "The createContextDelegate is not set") } - guard let identityDelegate = identityDelegate else { throw makeError(message: "The identityDelegate is not set") } + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } var _tag: Data? try createContextDelegate.performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier()) { (obvContext) in _tag = try identityDelegate.computeTagForOwnedIdentity(ownedIdentityCryptoId.cryptoIdentity, on: data, within: obvContext) @@ -3743,9 +4562,7 @@ extension ObvEngine: ObvUserInterfaceChannelDelegate { /// This database is in charge of sending a notification to the App. public func newUserDialogToPresent(obvChannelDialogMessageToSend: ObvChannelDialogMessageToSend, within obvContext: ObvContext) throws { - guard let identityDelegate = identityDelegate else { - throw Self.makeError(message: "The identity delegate is not set") - } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } let obvDialog: ObvDialog do { @@ -3800,16 +4617,6 @@ extension ObvEngine: ObvUserInterfaceChannelDelegate { guard let obvMediatorIdentity = ObvContactIdentity(contactCryptoIdentity: mediatorIdentity, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) else { return } category = ObvDialog.Category.acceptMediatorInvite(contactIdentity: obvContactIdentity, mediatorIdentity: obvMediatorIdentity.getGenericIdentity()) - case .increaseMediatorTrustLevelRequired(contact: let contact, mediatorIdentity: let mediatorIdentity): - let obvContactIdentity = ObvGenericIdentity(cryptoIdentity: contact.cryptoIdentity, currentCoreIdentityDetails: contact.coreDetails) - guard let obvMediatorIdentity = ObvContactIdentity(contactCryptoIdentity: mediatorIdentity, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) else { return } - category = ObvDialog.Category.increaseMediatorTrustLevelRequired(contactIdentity: obvContactIdentity, mediatorIdentity: obvMediatorIdentity.getGenericIdentity()) - - case .autoconfirmedContactIntroduction(contact: let contact, mediatorIdentity: let mediatorIdentity): - let obvContactIdentity = ObvGenericIdentity(cryptoIdentity: contact.cryptoIdentity, currentCoreIdentityDetails: contact.coreDetails) - guard let obvMediatorIdentity = ObvContactIdentity(contactCryptoIdentity: mediatorIdentity, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) else { return } - category = ObvDialog.Category.autoconfirmedContactIntroduction(contactIdentity: obvContactIdentity, mediatorIdentity: obvMediatorIdentity.getGenericIdentity()) - case .mediatorInviteAccepted(contact: let contact, mediatorIdentity: let mediatorIdentity): let obvContactIdentity = ObvGenericIdentity(cryptoIdentity: contact.cryptoIdentity, currentCoreIdentityDetails: contact.coreDetails) guard let obvMediatorIdentity = ObvContactIdentity(contactCryptoIdentity: mediatorIdentity, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) else { return } @@ -3829,16 +4636,6 @@ extension ObvEngine: ObvUserInterfaceChannelDelegate { groupOwner = _groupOwner.getGenericIdentity() } category = ObvDialog.Category.acceptGroupInvite(groupMembers: obvGroupMembers, groupOwner: groupOwner) - - case .increaseGroupOwnerTrustLevel(groupInformation: let groupInformation, pendingGroupMembers: _, receivedMessageTimestamp: _): - let groupOwner: ObvGenericIdentity - if groupInformation.groupOwnerIdentity == ownedCryptoIdentity { - return // Should never happen - } else { - guard let _groupOwner = ObvContactIdentity(contactCryptoIdentity: groupInformation.groupOwnerIdentity, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) else { return } - groupOwner = _groupOwner.getGenericIdentity() - } - category = ObvDialog.Category.increaseGroupOwnerTrustLevelRequired(groupOwner: groupOwner) case .oneToOneInvitationSent(contact: let contact, ownedIdentity: let ownedIdentity): guard let obvContact = ObvContactIdentity(contactCryptoIdentity: contact, ownedCryptoIdentity: ownedIdentity, identityDelegate: identityDelegate, within: obvContext) else { @@ -3859,6 +4656,9 @@ extension ObvEngine: ObvUserInterfaceChannelDelegate { case .freezeGroupV2Invite(inviter: let inviter, group: let group): category = ObvDialog.Category.freezeGroupV2Invite(inviter: inviter, group: group) + + case .syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceUID: let otherOwnedDeviceUID, syncAtom: let syncAtom): + category = ObvDialog.Category.syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceIdentifier: otherOwnedDeviceUID.raw, syncAtom: syncAtom) case .delete: // This is a special case: we simply delete any existing realated PersistedEngineDialog and return @@ -3896,3 +4696,461 @@ extension ObvEngine: ObvUserInterfaceChannelDelegate { } } + + +// MARK: - Transfer protocol / Adding a new owned device + +extension ObvEngine { + + /// Called by the app in order to start an owned identity transfer protocol on the source device. + /// - Parameters: + /// - ownedCryptoId: The `ObvCryptoId` of the owned identity. + /// - onAvailableSessionNumber: This block will be called by the engine as soon as the session number is available, passing it as a parameter. Since getting this session number requires a network interaction with the transfer server, this block may take a "long" time before being called. + public func initiateOwnedIdentityTransferProtocolOnSourceDevice(ownedCryptoId: ObvCryptoId, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void) async throws { + + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + + let ownedCryptoIdentity = ownedCryptoId.cryptoIdentity + let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() + + try await protocolDelegate.initiateOwnedIdentityTransferProtocolOnSourceDevice( + ownedCryptoIdentity: ownedCryptoIdentity, + onAvailableSessionNumber: onAvailableSessionNumber, + onAvailableSASExpectedOnInput: onAvailableSASExpectedOnInput, + flowId: flowId) + + } + + + public func initiateOwnedIdentityTransferProtocolOnTargetDevice(currentDeviceName: String, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void) async throws { + + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + + let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() + + try await protocolDelegate.initiateOwnedIdentityTransferProtocolOnTargetDevice(currentDeviceName: currentDeviceName, transferSessionNumber: transferSessionNumber, onIncorrectTransferSessionNumber: onIncorrectTransferSessionNumber, onAvailableSas: onAvailableSas, flowId: flowId) + + } + + + public func appIsShowingSasAndExpectingEndOfProtocol(protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async { + guard let protocolDelegate else { assertionFailure(); return } + await protocolDelegate.appIsShowingSasAndExpectingEndOfProtocol( + protocolInstanceUID: protocolInstanceUID, + onSyncSnapshotReception: onSyncSnapshotReception, + onSuccessfulTransfer: onSuccessfulTransfer) + } + + + /// Called by the app during an owned identity transfer protocol on the source device, after the user entered a valid SAS. + public func userEnteredValidSASOnSourceDeviceForOwnedIdentityTransferProtocol(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws { + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + try await protocolDelegate.continueOwnedIdentityTransferProtocolOnUserEnteredSASOnSourceDevice( + enteredSAS: enteredSAS, + deviceToKeepActive: deviceToKeepActive, + ownedCryptoId: ownedCryptoId, + protocolInstanceUID: protocolInstanceUID) + } + + + public func userWantsToCancelAllOwnedIdentityTransferProtocols() async throws { + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + let flowId = FlowIdentifier() + try await protocolDelegate.cancelAllOwnedIdentityTransferProtocols(flowId: flowId) + } + +} + + +// MARK: - Sync between owned devices + +extension ObvEngine { + + + /// Called by the app when, e.g., the user performs a modification that should be transferred to other owned devices. + /// - Parameters: + /// - syncAtom: The ObvSyncAtom created by the app that the engine should transfer to all other owned devices. + /// - ownedCryptoId: The owned identity making the change. + public func requestPropagationToOtherOwnedDevices(of syncAtom: ObvSyncAtom, for ownedCryptoId: ObvCryptoId) async throws { + + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + guard let flowDelegate else { throw ObvError.flowDelegateIsNil } + + let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() + + let message = try protocolDelegate.getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, syncAtom: syncAtom) + try await postChannelMessage(message, flowId: flowId) + + } + + + private func postChannelMessage(_ message: ObvChannelProtocolMessageToSend, flowId: FlowIdentifier) async throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + + let prng = self.prng + let log = self.log + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + try obvContext.save(logOnFailure: log) + continuation.resume() + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + /// Each time we start the app, we send a trigger message to all existing synchronization protocol instances. This allows to make sure they properly resend any diff to the app, which is important as they are kept in memory. +// private func sendTriggerSyncSnapshotMessageToAllExistingSynchronizationProtocolInstances(flowId: FlowIdentifier) async throws { +// +// guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } +// guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } +// +// let log = self.log +// +// try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in +// createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in +// do { +// try protocolDelegate.sendTriggerSyncSnapshotMessageToAllExistingSynchronizationProtocolInstances(within: obvContext) +// try obvContext.save(logOnFailure: log) +// continuation.resume() +// } catch { +// continuation.resume(throwing: error) +// } +// } +// } +// +// } + + + /// Each time we start the app, we look for other owned devices and make sure there is an oingoing SynchronizationProtocol between the current device and each of these remote devices. + /// To do so, we send an InitiateSyncSnapshotMessage for each found other owned device. In case a protocol instance already exists (which is very likely), this message will simply be discarded by the protocol. +// private func initiateIfRequiredSynchronizationProtocolInstanceForEachChannelWithAnotherOwnedDevice(flowId: FlowIdentifier) async throws { +// +// guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } +// guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } +// guard let channelDelegate else { throw ObvError.channelDelegateIsNil } +// guard let identityDelegate else { throw ObvError.identityDelegateIsNil } +// +// let log = self.log +// let prng = self.prng +// +// try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in +// createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in +// do { +// let ownedIdentities = try identityDelegate.getOwnedIdentities(within: obvContext) +// for ownedIdentity in ownedIdentities { +// let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) +// let otherOwnedDeviceUids = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) +// for otherOwnedDeviceUid in otherOwnedDeviceUids { +// let message = try protocolDelegate.getInitiateSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ownedIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: otherOwnedDeviceUid) +// _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) +// } +// } +// if obvContext.context.hasChanges { +// try obvContext.save(logOnFailure: log) +// } +// continuation.resume() +// } catch { +// continuation.resume(throwing: error) +// } +// } +// } +// +// } + + +// public func appRequestsTriggerOwnedDeviceSync(ownedCryptoId: ObvCryptoId) async throws { +// +// guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } +// guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } +// guard let channelDelegate else { throw ObvError.channelDelegateIsNil } +// guard let identityDelegate else { throw ObvError.identityDelegateIsNil } +// +// let log = self.log +// let prng = self.prng +// let flowId = FlowIdentifier() +// +// try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in +// createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in +// do { +// let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedCryptoId.cryptoIdentity, within: obvContext) +// let otherOwnedDeviceUids = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedCryptoId.cryptoIdentity, within: obvContext) +// for otherOwnedDeviceUid in otherOwnedDeviceUids { +// let message = try protocolDelegate.getTriggerSyncSnapshotMessageForSynchronizationProtocol( +// ownedCryptoIdentity: ownedCryptoId.cryptoIdentity, +// currentDeviceUid: currentDeviceUid, +// otherOwnedDeviceUid: otherOwnedDeviceUid, +// forceSendSnapshot: true) +// _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) +// } +// if obvContext.context.hasChanges { +// try obvContext.save(logOnFailure: log) +// } +// continuation.resume() +// } catch { +// continuation.resume(throwing: error) +// } +// } +// } +// +// } + +} + + +// Re-downloading profile pictures + +extension ObvEngine { + + /// This method allows the user to request the (re)download of potentially missing photos for owned identities. + public func downloadMissingProfilePicturesForOwnedIdentities() async throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + + let flowId = FlowIdentifier() + let prng = self.prng + let log = self.log + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + + let infos = try identityDelegate.getInformationsAboutOwnedIdentitiesWithMissingPictureOnDisk(within: obvContext) + + for info in infos { + + let message = try protocolDelegate.getInitialMessageForDownloadIdentityPhotoChildProtocol( + ownedIdentity: info.ownedCryptoId, + contactIdentity: info.ownedCryptoId, + contactIdentityDetailsElements: info.ownedIdentityDetailsElements) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } + + try obvContext.save(logOnFailure: log) + + continuation.resume() + + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + /// This method allows the user to request the (re)download of potentially missing photos for contact groups v2. + public func downloadMissingProfilePicturesForGroupsV2() async throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + + let flowId = FlowIdentifier() + let prng = self.prng + let log = self.log + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + + let infos = try identityDelegate.getInformationsAboutGroupsV2WithMissingContactPictureOnDisk(within: obvContext) + + for info in infos { + + let message = try protocolDelegate.getInitialMessageForDownloadGroupV2PhotoProtocol( + ownedIdentity: info.ownedIdentity, + groupIdentifier: info.groupIdentifier, + serverPhotoInfo: info.serverPhotoInfo) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } + + try obvContext.save(logOnFailure: log) + + continuation.resume() + + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + /// This method allows the user to request the (re)download of potentially missing photos for contact groups v1. + public func downloadMissingProfilePicturesForGroupsV1() async throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + + let flowId = FlowIdentifier() + let prng = self.prng + let log = self.log + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + + let infos = try identityDelegate.getInformationsAboutGroupsV1WithMissingContactPictureOnDisk(within: obvContext) + + for info in infos { + + let message = try protocolDelegate.getInitialMessageForDownloadGroupPhotoChildProtocol( + ownedIdentity: info.ownedIdentity, + groupInformation: info.groupInfo) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } + + try obvContext.save(logOnFailure: log) + + continuation.resume() + + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + /// This method allows the user to request the (re)download of potentially missing photos for her contacts. + public func downloadMissingProfilePicturesForContacts() async throws { + + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + guard let identityDelegate else { throw ObvError.identityDelegateIsNil } + guard let channelDelegate else { throw ObvError.channelDelegateIsNil } + guard let protocolDelegate else { throw ObvError.protocolDelegateIsNil } + + let flowId = FlowIdentifier() + let prng = self.prng + let log = self.log + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + do { + + let infos = try identityDelegate.getInformationsAboutContactsWithMissingContactPictureOnDisk(within: obvContext) + + for info in infos { + + let message = try protocolDelegate.getInitialMessageForDownloadIdentityPhotoChildProtocol( + ownedIdentity: info.ownedCryptoId, + contactIdentity: info.contactCryptoId, + contactIdentityDetailsElements: info.contactIdentityDetailsElements) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } + + try obvContext.save(logOnFailure: log) + + continuation.resume() + + } catch { + continuation.resume(throwing: error) + } + } + } + + } + +} + + +// MARK: - Errors + +extension ObvEngine { + + enum ObvError: LocalizedError { + + case createContextDelegateIsNil + case protocolDelegateIsNil + case flowDelegateIsNil + case notificationDelegateIsNil + case channelDelegateIsNil + case identityDelegateIsNil + case backupDelegateIsNil + case syncSnapshotDelegateIsNil + case networkFetchDelegateIsNil + case ownedIdentityIsNotActive + case ownedIdentityIsKeycloakManaged + case ownedIdentityIsNotKeycloakManaged + case couldNotRegisterAPIKeyAsItIsInvalid + case couldNotRegisterAPIKey + case noAppropriateOwnedIdentityFound + + var errorDescription: String? { + switch self { + case .createContextDelegateIsNil: + return "Create context delegate is nil" + case .protocolDelegateIsNil: + return "Protocol delegate is nil" + case .flowDelegateIsNil: + return "Flow delegate is nil" + case .channelDelegateIsNil: + return "Channel delegate is nil" + case .identityDelegateIsNil: + return "Identity delegate is nil" + case .backupDelegateIsNil: + return "Backup delegate is nil" + case .networkFetchDelegateIsNil: + return "Network fetch delegate is nil" + case .ownedIdentityIsNotActive: + return "Owned identity is not active" + case .ownedIdentityIsKeycloakManaged: + return "Owned identity is keycloak managed" + case .ownedIdentityIsNotKeycloakManaged: + return "Owned identity is not keycloak managed" + case .couldNotRegisterAPIKeyAsItIsInvalid: + return "Could not register API key as it is invalid" + case .couldNotRegisterAPIKey: + return "Could not register API key" + case .syncSnapshotDelegateIsNil: + return "The sync snapshot delegate is nil" + case .notificationDelegateIsNil: + return "The notification delegate is nil" + case .noAppropriateOwnedIdentityFound: + return "No appropriate owned identity found" + } + } + + } + +} + + +// MARK: - Helpers for operations + +extension ObvEngine { + + private func createCompositionOfOneContextualOperation(op1: ContextualOperationWithSpecificReasonForCancel) throws -> CompositionOfOneContextualOperation { + guard let createContextDelegate else { throw ObvError.createContextDelegateIsNil } + let log = self.log + let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: createContextDelegate, queueForComposedOperations: queueForComposedOperations, log: log, flowId: FlowIdentifier()) + composedOp.completionBlock = { [weak composedOp] in + assert(composedOp != nil) + composedOp?.logReasonIfCancelled(log: log) + } + return composedOp + } + +} diff --git a/Engine/ObvEngine/ObvEngine/ObvEngineNotificationNew.swift b/Engine/ObvEngine/ObvEngine/ObvEngineNotificationNew.swift index 93cc9298..5d6a2f75 100644 --- a/Engine/ObvEngine/ObvEngine/ObvEngineNotificationNew.swift +++ b/Engine/ObvEngine/ObvEngine/ObvEngineNotificationNew.swift @@ -41,37 +41,29 @@ public enum ObvEngineNotificationNew { case contactGroupJoinedHasUpdatedTrustedDetails(obvContactGroup: ObvContactGroup) case contactGroupOwnedDiscardedLatestDetails(obvContactGroup: ObvContactGroup) case contactGroupOwnedHasUpdatedLatestDetails(obvContactGroup: ObvContactGroup) - case DeletedObliviousChannelWithContactDevice(obvContactDevice: ObvContactDevice) + case deletedObliviousChannelWithContactDevice(obvContactIdentifier: ObvContactIdentifier) case newTrustedContactIdentity(obvContactIdentity: ObvContactIdentity) case newBackupKeyGenerated(backupKeyString: String, obvBackupKeyInformation: ObvBackupKeyInformation) case ownedIdentityWasDeactivated(ownedIdentity: ObvCryptoId) case ownedIdentityWasReactivated(ownedIdentity: ObvCryptoId) case networkOperationFailedSinceOwnedIdentityIsNotActive(ownedIdentity: ObvCryptoId) - case serverRequiresThisDeviceToRegisterToPushNotifications(ownedIdentity: ObvCryptoId) + case serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications + case engineRequiresOwnedIdentityToRegisterToPushNotifications(ownedCryptoId: ObvCryptoId) case outboxMessagesAndAllTheirAttachmentsWereAcknowledged(messageIdsAndTimestampsFromServer: [(messageIdentifierFromEngine: Data, ownedCryptoId: ObvCryptoId, timestampFromServer: Date)]) case outboxMessageCouldNotBeSentToServer(messageIdentifierFromEngine: Data, ownedIdentity: ObvCryptoId) case callerTurnCredentialsReceived(ownedIdentity: ObvCryptoId, callUuid: UUID, turnCredentials: ObvTurnCredentials) - case callerTurnCredentialsReceptionFailure(ownedIdentity: ObvCryptoId, callUuid: UUID) - case callerTurnCredentialsReceptionPermissionDenied(ownedIdentity: ObvCryptoId, callUuid: UUID) - case callerTurnCredentialsServerDoesNotSupportCalls(ownedIdentity: ObvCryptoId, callUuid: UUID) case messageWasAcknowledged(ownedIdentity: ObvCryptoId, messageIdentifierFromEngine: Data, timestampFromServer: Date, isAppMessageWithUserContent: Bool, isVoipMessage: Bool) case newMessageReceived(obvMessage: ObvMessage, completionHandler: (Set) -> Void) case attachmentWasAcknowledgedByServer(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int) case attachmentDownloadCancelledByServer(obvAttachment: ObvAttachment) - case cannotReturnAnyProgressForMessageAttachments(messageIdentifierFromEngine: Data) + case cannotReturnAnyProgressForMessageAttachments(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data) case attachmentDownloaded(obvAttachment: ObvAttachment) case attachmentDownloadWasResumed(ownCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int) case attachmentDownloadWasPaused(ownCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int) case newObvReturnReceiptToProcess(obvReturnReceipt: ObvReturnReceipt) case contactWasDeleted(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) - case newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(ownedIdentity: ObvCryptoId, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: EngineOptionalWrapper) - case newAPIKeyElementsForAPIKey(serverURL: URL, apiKey: UUID, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: EngineOptionalWrapper) - case noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity: ObvCryptoId) - case freeTrialIsStillAvailableForOwnedIdentity(ownedIdentity: ObvCryptoId) - case appStoreReceiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ObvCryptoId, transactionIdentifier: String) - case appStoreReceiptVerificationFailed(ownedIdentity: ObvCryptoId, transactionIdentifier: String) - case appStoreReceiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ObvCryptoId, transactionIdentifier: String) - case newObliviousChannelWithContactDevice(obvContactDevice: ObvContactDevice) + case newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(ownedIdentity: ObvCryptoId, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?) + case newObliviousChannelWithContactDevice(obvContactIdentifier: ObvContactIdentifier) case latestPhotoOfContactGroupOwnedHasBeenUpdated(group: ObvContactGroup) case publishedPhotoOfContactGroupOwnedHasBeenUpdated(group: ObvContactGroup) case publishedPhotoOfContactGroupJoinedHasBeenUpdated(group: ObvContactGroup) @@ -82,15 +74,14 @@ public enum ObvEngineNotificationNew { case wellKnownDownloadedSuccess(serverURL: URL, appInfo: [String: AppInfo]) case wellKnownDownloadedFailure(serverURL: URL) case wellKnownUpdatedSuccess(serverURL: URL, appInfo: [String: AppInfo]) - case apiKeyStatusQueryFailed(serverURL: URL, apiKey: UUID) case updatedContactIdentity(obvContactIdentity: ObvContactIdentity, trustedIdentityDetailsWereUpdated: Bool, publishedIdentityDetailsWereUpdated: Bool) case ownedIdentityUnbindingFromKeycloakPerformed(ownedIdentity: ObvCryptoId, result: Result) - case updatedSetOfContactsCertifiedByOwnKeycloak(ownedIdentity: ObvCryptoId, contactsCertifiedByOwnKeycloak: Set) case updatedOwnedIdentity(obvOwnedIdentity: ObvOwnedIdentity) case mutualScanContactAdded(obvContactIdentity: ObvContactIdentity, signature: Data) - case messageExtendedPayloadAvailable(obvMessage: ObvMessage) + case contactMessageExtendedPayloadAvailable(obvMessage: ObvMessage) + case ownedMessageExtendedPayloadAvailable(obvOwnedMessage: ObvOwnedMessage) case contactIsActiveChangedWithinEngine(obvContactIdentity: ObvContactIdentity) - case contactWasRevokedAsCompromisedWithinEngine(obvContactIdentity: ObvContactIdentity) + case contactWasRevokedAsCompromisedWithinEngine(obvContactIdentifier: ObvContactIdentifier) case ContactObvCapabilitiesWereUpdated(contact: ObvContactIdentity) case OwnedIdentityCapabilitiesWereUpdated(ownedIdentity: ObvOwnedIdentity) case newUserDialogToPresent(obvDialog: ObvDialog) @@ -101,6 +92,20 @@ public enum ObvEngineNotificationNew { case aPushTopicWasReceivedViaWebsocket(pushTopic: String) case ownedIdentityWasDeleted case aKeycloakTargetedPushNotificationReceivedViaWebsocket(ownedIdentity: ObvCryptoId) + case deletedObliviousChannelWithRemoteOwnedDevice + case newConfirmedObliviousChannelWithRemoteOwnedDevice + case newOwnedMessageReceived(obvOwnedMessage: ObvOwnedMessage, completionHandler: (Set) -> Void) + case newRemoteOwnedDevice + case ownedAttachmentDownloaded(obvOwnedAttachment: ObvOwnedAttachment) + case ownedAttachmentDownloadWasResumed(ownCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int) + case ownedAttachmentDownloadWasPaused(ownCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int) + case keycloakSynchronizationRequired(ownCryptoId: ObvCryptoId) + case contactIntroductionInvitationSent(ownedIdentity: ObvCryptoId, contactIdentityA: ObvCryptoId, contactIdentityB: ObvCryptoId) + case anOwnedDeviceWasUpdated(ownedCryptoId: ObvCryptoId) + case anOwnedDeviceWasDeleted(ownedCryptoId: ObvCryptoId) + case ownedAttachmentDownloadCancelledByServer(obvOwnedAttachment: ObvOwnedAttachment) + case newContactDevice(obvContactIdentifier: ObvContactIdentifier) + case anOwnedIdentityTransferProtocolFailed(ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID, error: Error) private enum Name { case contactGroupHasUpdatedPendingMembersAndGroupMembers @@ -111,19 +116,17 @@ public enum ObvEngineNotificationNew { case contactGroupJoinedHasUpdatedTrustedDetails case contactGroupOwnedDiscardedLatestDetails case contactGroupOwnedHasUpdatedLatestDetails - case DeletedObliviousChannelWithContactDevice + case deletedObliviousChannelWithContactDevice case newTrustedContactIdentity case newBackupKeyGenerated case ownedIdentityWasDeactivated case ownedIdentityWasReactivated case networkOperationFailedSinceOwnedIdentityIsNotActive - case serverRequiresThisDeviceToRegisterToPushNotifications + case serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications + case engineRequiresOwnedIdentityToRegisterToPushNotifications case outboxMessagesAndAllTheirAttachmentsWereAcknowledged case outboxMessageCouldNotBeSentToServer case callerTurnCredentialsReceived - case callerTurnCredentialsReceptionFailure - case callerTurnCredentialsReceptionPermissionDenied - case callerTurnCredentialsServerDoesNotSupportCalls case messageWasAcknowledged case newMessageReceived case attachmentWasAcknowledgedByServer @@ -135,12 +138,6 @@ public enum ObvEngineNotificationNew { case newObvReturnReceiptToProcess case contactWasDeleted case newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity - case newAPIKeyElementsForAPIKey - case noMoreFreeTrialAPIKeyAvailableForOwnedIdentity - case freeTrialIsStillAvailableForOwnedIdentity - case appStoreReceiptVerificationSucceededAndSubscriptionIsValid - case appStoreReceiptVerificationFailed - case appStoreReceiptVerificationSucceededButSubscriptionIsExpired case newObliviousChannelWithContactDevice case latestPhotoOfContactGroupOwnedHasBeenUpdated case publishedPhotoOfContactGroupOwnedHasBeenUpdated @@ -152,13 +149,12 @@ public enum ObvEngineNotificationNew { case wellKnownDownloadedSuccess case wellKnownDownloadedFailure case wellKnownUpdatedSuccess - case apiKeyStatusQueryFailed case updatedContactIdentity case ownedIdentityUnbindingFromKeycloakPerformed - case updatedSetOfContactsCertifiedByOwnKeycloak case updatedOwnedIdentity case mutualScanContactAdded - case messageExtendedPayloadAvailable + case contactMessageExtendedPayloadAvailable + case ownedMessageExtendedPayloadAvailable case contactIsActiveChangedWithinEngine case contactWasRevokedAsCompromisedWithinEngine case ContactObvCapabilitiesWereUpdated @@ -171,6 +167,20 @@ public enum ObvEngineNotificationNew { case aPushTopicWasReceivedViaWebsocket case ownedIdentityWasDeleted case aKeycloakTargetedPushNotificationReceivedViaWebsocket + case deletedObliviousChannelWithRemoteOwnedDevice + case newConfirmedObliviousChannelWithRemoteOwnedDevice + case newOwnedMessageReceived + case newRemoteOwnedDevice + case ownedAttachmentDownloaded + case ownedAttachmentDownloadWasResumed + case ownedAttachmentDownloadWasPaused + case keycloakSynchronizationRequired + case contactIntroductionInvitationSent + case anOwnedDeviceWasUpdated + case anOwnedDeviceWasDeleted + case ownedAttachmentDownloadCancelledByServer + case newContactDevice + case anOwnedIdentityTransferProtocolFailed private var namePrefix: String { String(describing: ObvEngineNotificationNew.self) } @@ -191,19 +201,17 @@ public enum ObvEngineNotificationNew { case .contactGroupJoinedHasUpdatedTrustedDetails: return Name.contactGroupJoinedHasUpdatedTrustedDetails.name case .contactGroupOwnedDiscardedLatestDetails: return Name.contactGroupOwnedDiscardedLatestDetails.name case .contactGroupOwnedHasUpdatedLatestDetails: return Name.contactGroupOwnedHasUpdatedLatestDetails.name - case .DeletedObliviousChannelWithContactDevice: return Name.DeletedObliviousChannelWithContactDevice.name + case .deletedObliviousChannelWithContactDevice: return Name.deletedObliviousChannelWithContactDevice.name case .newTrustedContactIdentity: return Name.newTrustedContactIdentity.name case .newBackupKeyGenerated: return Name.newBackupKeyGenerated.name case .ownedIdentityWasDeactivated: return Name.ownedIdentityWasDeactivated.name case .ownedIdentityWasReactivated: return Name.ownedIdentityWasReactivated.name case .networkOperationFailedSinceOwnedIdentityIsNotActive: return Name.networkOperationFailedSinceOwnedIdentityIsNotActive.name - case .serverRequiresThisDeviceToRegisterToPushNotifications: return Name.serverRequiresThisDeviceToRegisterToPushNotifications.name + case .serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications: return Name.serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications.name + case .engineRequiresOwnedIdentityToRegisterToPushNotifications: return Name.engineRequiresOwnedIdentityToRegisterToPushNotifications.name case .outboxMessagesAndAllTheirAttachmentsWereAcknowledged: return Name.outboxMessagesAndAllTheirAttachmentsWereAcknowledged.name case .outboxMessageCouldNotBeSentToServer: return Name.outboxMessageCouldNotBeSentToServer.name case .callerTurnCredentialsReceived: return Name.callerTurnCredentialsReceived.name - case .callerTurnCredentialsReceptionFailure: return Name.callerTurnCredentialsReceptionFailure.name - case .callerTurnCredentialsReceptionPermissionDenied: return Name.callerTurnCredentialsReceptionPermissionDenied.name - case .callerTurnCredentialsServerDoesNotSupportCalls: return Name.callerTurnCredentialsServerDoesNotSupportCalls.name case .messageWasAcknowledged: return Name.messageWasAcknowledged.name case .newMessageReceived: return Name.newMessageReceived.name case .attachmentWasAcknowledgedByServer: return Name.attachmentWasAcknowledgedByServer.name @@ -215,12 +223,6 @@ public enum ObvEngineNotificationNew { case .newObvReturnReceiptToProcess: return Name.newObvReturnReceiptToProcess.name case .contactWasDeleted: return Name.contactWasDeleted.name case .newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity: return Name.newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity.name - case .newAPIKeyElementsForAPIKey: return Name.newAPIKeyElementsForAPIKey.name - case .noMoreFreeTrialAPIKeyAvailableForOwnedIdentity: return Name.noMoreFreeTrialAPIKeyAvailableForOwnedIdentity.name - case .freeTrialIsStillAvailableForOwnedIdentity: return Name.freeTrialIsStillAvailableForOwnedIdentity.name - case .appStoreReceiptVerificationSucceededAndSubscriptionIsValid: return Name.appStoreReceiptVerificationSucceededAndSubscriptionIsValid.name - case .appStoreReceiptVerificationFailed: return Name.appStoreReceiptVerificationFailed.name - case .appStoreReceiptVerificationSucceededButSubscriptionIsExpired: return Name.appStoreReceiptVerificationSucceededButSubscriptionIsExpired.name case .newObliviousChannelWithContactDevice: return Name.newObliviousChannelWithContactDevice.name case .latestPhotoOfContactGroupOwnedHasBeenUpdated: return Name.latestPhotoOfContactGroupOwnedHasBeenUpdated.name case .publishedPhotoOfContactGroupOwnedHasBeenUpdated: return Name.publishedPhotoOfContactGroupOwnedHasBeenUpdated.name @@ -232,13 +234,12 @@ public enum ObvEngineNotificationNew { case .wellKnownDownloadedSuccess: return Name.wellKnownDownloadedSuccess.name case .wellKnownDownloadedFailure: return Name.wellKnownDownloadedFailure.name case .wellKnownUpdatedSuccess: return Name.wellKnownUpdatedSuccess.name - case .apiKeyStatusQueryFailed: return Name.apiKeyStatusQueryFailed.name case .updatedContactIdentity: return Name.updatedContactIdentity.name case .ownedIdentityUnbindingFromKeycloakPerformed: return Name.ownedIdentityUnbindingFromKeycloakPerformed.name - case .updatedSetOfContactsCertifiedByOwnKeycloak: return Name.updatedSetOfContactsCertifiedByOwnKeycloak.name case .updatedOwnedIdentity: return Name.updatedOwnedIdentity.name case .mutualScanContactAdded: return Name.mutualScanContactAdded.name - case .messageExtendedPayloadAvailable: return Name.messageExtendedPayloadAvailable.name + case .contactMessageExtendedPayloadAvailable: return Name.contactMessageExtendedPayloadAvailable.name + case .ownedMessageExtendedPayloadAvailable: return Name.ownedMessageExtendedPayloadAvailable.name case .contactIsActiveChangedWithinEngine: return Name.contactIsActiveChangedWithinEngine.name case .contactWasRevokedAsCompromisedWithinEngine: return Name.contactWasRevokedAsCompromisedWithinEngine.name case .ContactObvCapabilitiesWereUpdated: return Name.ContactObvCapabilitiesWereUpdated.name @@ -251,6 +252,20 @@ public enum ObvEngineNotificationNew { case .aPushTopicWasReceivedViaWebsocket: return Name.aPushTopicWasReceivedViaWebsocket.name case .ownedIdentityWasDeleted: return Name.ownedIdentityWasDeleted.name case .aKeycloakTargetedPushNotificationReceivedViaWebsocket: return Name.aKeycloakTargetedPushNotificationReceivedViaWebsocket.name + case .deletedObliviousChannelWithRemoteOwnedDevice: return Name.deletedObliviousChannelWithRemoteOwnedDevice.name + case .newConfirmedObliviousChannelWithRemoteOwnedDevice: return Name.newConfirmedObliviousChannelWithRemoteOwnedDevice.name + case .newOwnedMessageReceived: return Name.newOwnedMessageReceived.name + case .newRemoteOwnedDevice: return Name.newRemoteOwnedDevice.name + case .ownedAttachmentDownloaded: return Name.ownedAttachmentDownloaded.name + case .ownedAttachmentDownloadWasResumed: return Name.ownedAttachmentDownloadWasResumed.name + case .ownedAttachmentDownloadWasPaused: return Name.ownedAttachmentDownloadWasPaused.name + case .keycloakSynchronizationRequired: return Name.keycloakSynchronizationRequired.name + case .contactIntroductionInvitationSent: return Name.contactIntroductionInvitationSent.name + case .anOwnedDeviceWasUpdated: return Name.anOwnedDeviceWasUpdated.name + case .anOwnedDeviceWasDeleted: return Name.anOwnedDeviceWasDeleted.name + case .ownedAttachmentDownloadCancelledByServer: return Name.ownedAttachmentDownloadCancelledByServer.name + case .newContactDevice: return Name.newContactDevice.name + case .anOwnedIdentityTransferProtocolFailed: return Name.anOwnedIdentityTransferProtocolFailed.name } } } @@ -291,9 +306,9 @@ public enum ObvEngineNotificationNew { info = [ "obvContactGroup": obvContactGroup, ] - case .DeletedObliviousChannelWithContactDevice(obvContactDevice: let obvContactDevice): + case .deletedObliviousChannelWithContactDevice(obvContactIdentifier: let obvContactIdentifier): info = [ - "obvContactDevice": obvContactDevice, + "obvContactIdentifier": obvContactIdentifier, ] case .newTrustedContactIdentity(obvContactIdentity: let obvContactIdentity): info = [ @@ -316,9 +331,11 @@ public enum ObvEngineNotificationNew { info = [ "ownedIdentity": ownedIdentity, ] - case .serverRequiresThisDeviceToRegisterToPushNotifications(ownedIdentity: let ownedIdentity): + case .serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications: + info = nil + case .engineRequiresOwnedIdentityToRegisterToPushNotifications(ownedCryptoId: let ownedCryptoId): info = [ - "ownedIdentity": ownedIdentity, + "ownedCryptoId": ownedCryptoId, ] case .outboxMessagesAndAllTheirAttachmentsWereAcknowledged(messageIdsAndTimestampsFromServer: let messageIdsAndTimestampsFromServer): info = [ @@ -335,21 +352,6 @@ public enum ObvEngineNotificationNew { "callUuid": callUuid, "turnCredentials": turnCredentials, ] - case .callerTurnCredentialsReceptionFailure(ownedIdentity: let ownedIdentity, callUuid: let callUuid): - info = [ - "ownedIdentity": ownedIdentity, - "callUuid": callUuid, - ] - case .callerTurnCredentialsReceptionPermissionDenied(ownedIdentity: let ownedIdentity, callUuid: let callUuid): - info = [ - "ownedIdentity": ownedIdentity, - "callUuid": callUuid, - ] - case .callerTurnCredentialsServerDoesNotSupportCalls(ownedIdentity: let ownedIdentity, callUuid: let callUuid): - info = [ - "ownedIdentity": ownedIdentity, - "callUuid": callUuid, - ] case .messageWasAcknowledged(ownedIdentity: let ownedIdentity, messageIdentifierFromEngine: let messageIdentifierFromEngine, timestampFromServer: let timestampFromServer, isAppMessageWithUserContent: let isAppMessageWithUserContent, isVoipMessage: let isVoipMessage): info = [ "ownedIdentity": ownedIdentity, @@ -373,8 +375,9 @@ public enum ObvEngineNotificationNew { info = [ "obvAttachment": obvAttachment, ] - case .cannotReturnAnyProgressForMessageAttachments(messageIdentifierFromEngine: let messageIdentifierFromEngine): + case .cannotReturnAnyProgressForMessageAttachments(ownedCryptoId: let ownedCryptoId, messageIdentifierFromEngine: let messageIdentifierFromEngine): info = [ + "ownedCryptoId": ownedCryptoId, "messageIdentifierFromEngine": messageIdentifierFromEngine, ] case .attachmentDownloaded(obvAttachment: let obvAttachment): @@ -407,42 +410,11 @@ public enum ObvEngineNotificationNew { "ownedIdentity": ownedIdentity, "apiKeyStatus": apiKeyStatus, "apiPermissions": apiPermissions, - "apiKeyExpirationDate": apiKeyExpirationDate, - ] - case .newAPIKeyElementsForAPIKey(serverURL: let serverURL, apiKey: let apiKey, apiKeyStatus: let apiKeyStatus, apiPermissions: let apiPermissions, apiKeyExpirationDate: let apiKeyExpirationDate): - info = [ - "serverURL": serverURL, - "apiKey": apiKey, - "apiKeyStatus": apiKeyStatus, - "apiPermissions": apiPermissions, - "apiKeyExpirationDate": apiKeyExpirationDate, - ] - case .noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity: let ownedIdentity): - info = [ - "ownedIdentity": ownedIdentity, - ] - case .freeTrialIsStillAvailableForOwnedIdentity(ownedIdentity: let ownedIdentity): - info = [ - "ownedIdentity": ownedIdentity, - ] - case .appStoreReceiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: let ownedIdentity, transactionIdentifier: let transactionIdentifier): - info = [ - "ownedIdentity": ownedIdentity, - "transactionIdentifier": transactionIdentifier, - ] - case .appStoreReceiptVerificationFailed(ownedIdentity: let ownedIdentity, transactionIdentifier: let transactionIdentifier): - info = [ - "ownedIdentity": ownedIdentity, - "transactionIdentifier": transactionIdentifier, + "apiKeyExpirationDate": OptionalWrapper(apiKeyExpirationDate), ] - case .appStoreReceiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: let ownedIdentity, transactionIdentifier: let transactionIdentifier): + case .newObliviousChannelWithContactDevice(obvContactIdentifier: let obvContactIdentifier): info = [ - "ownedIdentity": ownedIdentity, - "transactionIdentifier": transactionIdentifier, - ] - case .newObliviousChannelWithContactDevice(obvContactDevice: let obvContactDevice): - info = [ - "obvContactDevice": obvContactDevice, + "obvContactIdentifier": obvContactIdentifier, ] case .latestPhotoOfContactGroupOwnedHasBeenUpdated(group: let group): info = [ @@ -486,11 +458,6 @@ public enum ObvEngineNotificationNew { "serverURL": serverURL, "appInfo": appInfo, ] - case .apiKeyStatusQueryFailed(serverURL: let serverURL, apiKey: let apiKey): - info = [ - "serverURL": serverURL, - "apiKey": apiKey, - ] case .updatedContactIdentity(obvContactIdentity: let obvContactIdentity, trustedIdentityDetailsWereUpdated: let trustedIdentityDetailsWereUpdated, publishedIdentityDetailsWereUpdated: let publishedIdentityDetailsWereUpdated): info = [ "obvContactIdentity": obvContactIdentity, @@ -502,11 +469,6 @@ public enum ObvEngineNotificationNew { "ownedIdentity": ownedIdentity, "result": result, ] - case .updatedSetOfContactsCertifiedByOwnKeycloak(ownedIdentity: let ownedIdentity, contactsCertifiedByOwnKeycloak: let contactsCertifiedByOwnKeycloak): - info = [ - "ownedIdentity": ownedIdentity, - "contactsCertifiedByOwnKeycloak": contactsCertifiedByOwnKeycloak, - ] case .updatedOwnedIdentity(obvOwnedIdentity: let obvOwnedIdentity): info = [ "obvOwnedIdentity": obvOwnedIdentity, @@ -516,17 +478,21 @@ public enum ObvEngineNotificationNew { "obvContactIdentity": obvContactIdentity, "signature": signature, ] - case .messageExtendedPayloadAvailable(obvMessage: let obvMessage): + case .contactMessageExtendedPayloadAvailable(obvMessage: let obvMessage): info = [ "obvMessage": obvMessage, ] + case .ownedMessageExtendedPayloadAvailable(obvOwnedMessage: let obvOwnedMessage): + info = [ + "obvOwnedMessage": obvOwnedMessage, + ] case .contactIsActiveChangedWithinEngine(obvContactIdentity: let obvContactIdentity): info = [ "obvContactIdentity": obvContactIdentity, ] - case .contactWasRevokedAsCompromisedWithinEngine(obvContactIdentity: let obvContactIdentity): + case .contactWasRevokedAsCompromisedWithinEngine(obvContactIdentifier: let obvContactIdentifier): info = [ - "obvContactIdentity": obvContactIdentity, + "obvContactIdentifier": obvContactIdentifier, ] case .ContactObvCapabilitiesWereUpdated(contact: let contact): info = [ @@ -570,6 +536,65 @@ public enum ObvEngineNotificationNew { info = [ "ownedIdentity": ownedIdentity, ] + case .deletedObliviousChannelWithRemoteOwnedDevice: + info = nil + case .newConfirmedObliviousChannelWithRemoteOwnedDevice: + info = nil + case .newOwnedMessageReceived(obvOwnedMessage: let obvOwnedMessage, completionHandler: let completionHandler): + info = [ + "obvOwnedMessage": obvOwnedMessage, + "completionHandler": completionHandler, + ] + case .newRemoteOwnedDevice: + info = nil + case .ownedAttachmentDownloaded(obvOwnedAttachment: let obvOwnedAttachment): + info = [ + "obvOwnedAttachment": obvOwnedAttachment, + ] + case .ownedAttachmentDownloadWasResumed(ownCryptoId: let ownCryptoId, messageIdentifierFromEngine: let messageIdentifierFromEngine, attachmentNumber: let attachmentNumber): + info = [ + "ownCryptoId": ownCryptoId, + "messageIdentifierFromEngine": messageIdentifierFromEngine, + "attachmentNumber": attachmentNumber, + ] + case .ownedAttachmentDownloadWasPaused(ownCryptoId: let ownCryptoId, messageIdentifierFromEngine: let messageIdentifierFromEngine, attachmentNumber: let attachmentNumber): + info = [ + "ownCryptoId": ownCryptoId, + "messageIdentifierFromEngine": messageIdentifierFromEngine, + "attachmentNumber": attachmentNumber, + ] + case .keycloakSynchronizationRequired(ownCryptoId: let ownCryptoId): + info = [ + "ownCryptoId": ownCryptoId, + ] + case .contactIntroductionInvitationSent(ownedIdentity: let ownedIdentity, contactIdentityA: let contactIdentityA, contactIdentityB: let contactIdentityB): + info = [ + "ownedIdentity": ownedIdentity, + "contactIdentityA": contactIdentityA, + "contactIdentityB": contactIdentityB, + ] + case .anOwnedDeviceWasUpdated(ownedCryptoId: let ownedCryptoId): + info = [ + "ownedCryptoId": ownedCryptoId, + ] + case .anOwnedDeviceWasDeleted(ownedCryptoId: let ownedCryptoId): + info = [ + "ownedCryptoId": ownedCryptoId, + ] + case .ownedAttachmentDownloadCancelledByServer(obvOwnedAttachment: let obvOwnedAttachment): + info = [ + "obvOwnedAttachment": obvOwnedAttachment, + ] + case .newContactDevice(obvContactIdentifier: let obvContactIdentifier): + info = [ + "obvContactIdentifier": obvContactIdentifier, + ] + case .anOwnedIdentityTransferProtocolFailed(ownedCryptoId: let ownedCryptoId, protocolInstanceUID: let protocolInstanceUID, error: let error): + info = [ + "ownedCryptoId": ownedCryptoId, + "protocolInstanceUID": protocolInstanceUID, + "error": error, + ] } return info } @@ -649,11 +674,11 @@ public enum ObvEngineNotificationNew { } } - public static func observeDeletedObliviousChannelWithContactDevice(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvContactDevice) -> Void) -> NSObjectProtocol { - let name = Name.DeletedObliviousChannelWithContactDevice.name + public static func observeDeletedObliviousChannelWithContactDevice(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentifier) -> Void) -> NSObjectProtocol { + let name = Name.deletedObliviousChannelWithContactDevice.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let obvContactDevice = notification.userInfo!["obvContactDevice"] as! ObvContactDevice - block(obvContactDevice) + let obvContactIdentifier = notification.userInfo!["obvContactIdentifier"] as! ObvContactIdentifier + block(obvContactIdentifier) } } @@ -698,11 +723,18 @@ public enum ObvEngineNotificationNew { } } - public static func observeServerRequiresThisDeviceToRegisterToPushNotifications(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId) -> Void) -> NSObjectProtocol { - let name = Name.serverRequiresThisDeviceToRegisterToPushNotifications.name + public static func observeServerRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { + let name = Name.serverRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - block(ownedIdentity) + block() + } + } + + public static func observeEngineRequiresOwnedIdentityToRegisterToPushNotifications(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId) -> Void) -> NSObjectProtocol { + let name = Name.engineRequiresOwnedIdentityToRegisterToPushNotifications.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + block(ownedCryptoId) } } @@ -733,33 +765,6 @@ public enum ObvEngineNotificationNew { } } - public static func observeCallerTurnCredentialsReceptionFailure(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, UUID) -> Void) -> NSObjectProtocol { - let name = Name.callerTurnCredentialsReceptionFailure.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - let callUuid = notification.userInfo!["callUuid"] as! UUID - block(ownedIdentity, callUuid) - } - } - - public static func observeCallerTurnCredentialsReceptionPermissionDenied(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, UUID) -> Void) -> NSObjectProtocol { - let name = Name.callerTurnCredentialsReceptionPermissionDenied.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - let callUuid = notification.userInfo!["callUuid"] as! UUID - block(ownedIdentity, callUuid) - } - } - - public static func observeCallerTurnCredentialsServerDoesNotSupportCalls(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, UUID) -> Void) -> NSObjectProtocol { - let name = Name.callerTurnCredentialsServerDoesNotSupportCalls.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - let callUuid = notification.userInfo!["callUuid"] as! UUID - block(ownedIdentity, callUuid) - } - } - public static func observeMessageWasAcknowledged(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Data, Date, Bool, Bool) -> Void) -> NSObjectProtocol { let name = Name.messageWasAcknowledged.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in @@ -799,11 +804,12 @@ public enum ObvEngineNotificationNew { } } - public static func observeCannotReturnAnyProgressForMessageAttachments(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (Data) -> Void) -> NSObjectProtocol { + public static func observeCannotReturnAnyProgressForMessageAttachments(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Data) -> Void) -> NSObjectProtocol { let name = Name.cannotReturnAnyProgressForMessageAttachments.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId let messageIdentifierFromEngine = notification.userInfo!["messageIdentifierFromEngine"] as! Data - block(messageIdentifierFromEngine) + block(ownedCryptoId, messageIdentifierFromEngine) } } @@ -852,77 +858,23 @@ public enum ObvEngineNotificationNew { } } - public static func observeNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, APIKeyStatus, APIPermissions, EngineOptionalWrapper) -> Void) -> NSObjectProtocol { + public static func observeNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, APIKeyStatus, APIPermissions, Date?) -> Void) -> NSObjectProtocol { let name = Name.newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId let apiKeyStatus = notification.userInfo!["apiKeyStatus"] as! APIKeyStatus let apiPermissions = notification.userInfo!["apiPermissions"] as! APIPermissions - let apiKeyExpirationDate = notification.userInfo!["apiKeyExpirationDate"] as! EngineOptionalWrapper + let apiKeyExpirationDateWrapper = notification.userInfo!["apiKeyExpirationDate"] as! OptionalWrapper + let apiKeyExpirationDate = apiKeyExpirationDateWrapper.value block(ownedIdentity, apiKeyStatus, apiPermissions, apiKeyExpirationDate) } } - public static func observeNewAPIKeyElementsForAPIKey(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (URL, UUID, APIKeyStatus, APIPermissions, EngineOptionalWrapper) -> Void) -> NSObjectProtocol { - let name = Name.newAPIKeyElementsForAPIKey.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let serverURL = notification.userInfo!["serverURL"] as! URL - let apiKey = notification.userInfo!["apiKey"] as! UUID - let apiKeyStatus = notification.userInfo!["apiKeyStatus"] as! APIKeyStatus - let apiPermissions = notification.userInfo!["apiPermissions"] as! APIPermissions - let apiKeyExpirationDate = notification.userInfo!["apiKeyExpirationDate"] as! EngineOptionalWrapper - block(serverURL, apiKey, apiKeyStatus, apiPermissions, apiKeyExpirationDate) - } - } - - public static func observeNoMoreFreeTrialAPIKeyAvailableForOwnedIdentity(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId) -> Void) -> NSObjectProtocol { - let name = Name.noMoreFreeTrialAPIKeyAvailableForOwnedIdentity.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - block(ownedIdentity) - } - } - - public static func observeFreeTrialIsStillAvailableForOwnedIdentity(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId) -> Void) -> NSObjectProtocol { - let name = Name.freeTrialIsStillAvailableForOwnedIdentity.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - block(ownedIdentity) - } - } - - public static func observeAppStoreReceiptVerificationSucceededAndSubscriptionIsValid(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, String) -> Void) -> NSObjectProtocol { - let name = Name.appStoreReceiptVerificationSucceededAndSubscriptionIsValid.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - let transactionIdentifier = notification.userInfo!["transactionIdentifier"] as! String - block(ownedIdentity, transactionIdentifier) - } - } - - public static func observeAppStoreReceiptVerificationFailed(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, String) -> Void) -> NSObjectProtocol { - let name = Name.appStoreReceiptVerificationFailed.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - let transactionIdentifier = notification.userInfo!["transactionIdentifier"] as! String - block(ownedIdentity, transactionIdentifier) - } - } - - public static func observeAppStoreReceiptVerificationSucceededButSubscriptionIsExpired(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, String) -> Void) -> NSObjectProtocol { - let name = Name.appStoreReceiptVerificationSucceededButSubscriptionIsExpired.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - let transactionIdentifier = notification.userInfo!["transactionIdentifier"] as! String - block(ownedIdentity, transactionIdentifier) - } - } - - public static func observeNewObliviousChannelWithContactDevice(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvContactDevice) -> Void) -> NSObjectProtocol { + public static func observeNewObliviousChannelWithContactDevice(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentifier) -> Void) -> NSObjectProtocol { let name = Name.newObliviousChannelWithContactDevice.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let obvContactDevice = notification.userInfo!["obvContactDevice"] as! ObvContactDevice - block(obvContactDevice) + let obvContactIdentifier = notification.userInfo!["obvContactIdentifier"] as! ObvContactIdentifier + block(obvContactIdentifier) } } @@ -1008,15 +960,6 @@ public enum ObvEngineNotificationNew { } } - public static func observeApiKeyStatusQueryFailed(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (URL, UUID) -> Void) -> NSObjectProtocol { - let name = Name.apiKeyStatusQueryFailed.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let serverURL = notification.userInfo!["serverURL"] as! URL - let apiKey = notification.userInfo!["apiKey"] as! UUID - block(serverURL, apiKey) - } - } - public static func observeUpdatedContactIdentity(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentity, Bool, Bool) -> Void) -> NSObjectProtocol { let name = Name.updatedContactIdentity.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in @@ -1036,15 +979,6 @@ public enum ObvEngineNotificationNew { } } - public static func observeUpdatedSetOfContactsCertifiedByOwnKeycloak(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Set) -> Void) -> NSObjectProtocol { - let name = Name.updatedSetOfContactsCertifiedByOwnKeycloak.name - return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId - let contactsCertifiedByOwnKeycloak = notification.userInfo!["contactsCertifiedByOwnKeycloak"] as! Set - block(ownedIdentity, contactsCertifiedByOwnKeycloak) - } - } - public static func observeUpdatedOwnedIdentity(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvOwnedIdentity) -> Void) -> NSObjectProtocol { let name = Name.updatedOwnedIdentity.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in @@ -1062,14 +996,22 @@ public enum ObvEngineNotificationNew { } } - public static func observeMessageExtendedPayloadAvailable(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvMessage) -> Void) -> NSObjectProtocol { - let name = Name.messageExtendedPayloadAvailable.name + public static func observeContactMessageExtendedPayloadAvailable(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvMessage) -> Void) -> NSObjectProtocol { + let name = Name.contactMessageExtendedPayloadAvailable.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in let obvMessage = notification.userInfo!["obvMessage"] as! ObvMessage block(obvMessage) } } + public static func observeOwnedMessageExtendedPayloadAvailable(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvOwnedMessage) -> Void) -> NSObjectProtocol { + let name = Name.ownedMessageExtendedPayloadAvailable.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let obvOwnedMessage = notification.userInfo!["obvOwnedMessage"] as! ObvOwnedMessage + block(obvOwnedMessage) + } + } + public static func observeContactIsActiveChangedWithinEngine(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentity) -> Void) -> NSObjectProtocol { let name = Name.contactIsActiveChangedWithinEngine.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in @@ -1078,11 +1020,11 @@ public enum ObvEngineNotificationNew { } } - public static func observeContactWasRevokedAsCompromisedWithinEngine(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentity) -> Void) -> NSObjectProtocol { + public static func observeContactWasRevokedAsCompromisedWithinEngine(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentifier) -> Void) -> NSObjectProtocol { let name = Name.contactWasRevokedAsCompromisedWithinEngine.name return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in - let obvContactIdentity = notification.userInfo!["obvContactIdentity"] as! ObvContactIdentity - block(obvContactIdentity) + let obvContactIdentifier = notification.userInfo!["obvContactIdentifier"] as! ObvContactIdentifier + block(obvContactIdentifier) } } @@ -1169,4 +1111,122 @@ public enum ObvEngineNotificationNew { } } + public static func observeDeletedObliviousChannelWithRemoteOwnedDevice(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { + let name = Name.deletedObliviousChannelWithRemoteOwnedDevice.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + block() + } + } + + public static func observeNewConfirmedObliviousChannelWithRemoteOwnedDevice(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { + let name = Name.newConfirmedObliviousChannelWithRemoteOwnedDevice.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + block() + } + } + + public static func observeNewOwnedMessageReceived(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvOwnedMessage, @escaping (Set) -> Void) -> Void) -> NSObjectProtocol { + let name = Name.newOwnedMessageReceived.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let obvOwnedMessage = notification.userInfo!["obvOwnedMessage"] as! ObvOwnedMessage + let completionHandler = notification.userInfo!["completionHandler"] as! (Set) -> Void + block(obvOwnedMessage, completionHandler) + } + } + + public static func observeNewRemoteOwnedDevice(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { + let name = Name.newRemoteOwnedDevice.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + block() + } + } + + public static func observeOwnedAttachmentDownloaded(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvOwnedAttachment) -> Void) -> NSObjectProtocol { + let name = Name.ownedAttachmentDownloaded.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let obvOwnedAttachment = notification.userInfo!["obvOwnedAttachment"] as! ObvOwnedAttachment + block(obvOwnedAttachment) + } + } + + public static func observeOwnedAttachmentDownloadWasResumed(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Data, Int) -> Void) -> NSObjectProtocol { + let name = Name.ownedAttachmentDownloadWasResumed.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let ownCryptoId = notification.userInfo!["ownCryptoId"] as! ObvCryptoId + let messageIdentifierFromEngine = notification.userInfo!["messageIdentifierFromEngine"] as! Data + let attachmentNumber = notification.userInfo!["attachmentNumber"] as! Int + block(ownCryptoId, messageIdentifierFromEngine, attachmentNumber) + } + } + + public static func observeOwnedAttachmentDownloadWasPaused(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Data, Int) -> Void) -> NSObjectProtocol { + let name = Name.ownedAttachmentDownloadWasPaused.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let ownCryptoId = notification.userInfo!["ownCryptoId"] as! ObvCryptoId + let messageIdentifierFromEngine = notification.userInfo!["messageIdentifierFromEngine"] as! Data + let attachmentNumber = notification.userInfo!["attachmentNumber"] as! Int + block(ownCryptoId, messageIdentifierFromEngine, attachmentNumber) + } + } + + public static func observeKeycloakSynchronizationRequired(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId) -> Void) -> NSObjectProtocol { + let name = Name.keycloakSynchronizationRequired.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let ownCryptoId = notification.userInfo!["ownCryptoId"] as! ObvCryptoId + block(ownCryptoId) + } + } + + public static func observeContactIntroductionInvitationSent(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, ObvCryptoId, ObvCryptoId) -> Void) -> NSObjectProtocol { + let name = Name.contactIntroductionInvitationSent.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoId + let contactIdentityA = notification.userInfo!["contactIdentityA"] as! ObvCryptoId + let contactIdentityB = notification.userInfo!["contactIdentityB"] as! ObvCryptoId + block(ownedIdentity, contactIdentityA, contactIdentityB) + } + } + + public static func observeAnOwnedDeviceWasUpdated(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId) -> Void) -> NSObjectProtocol { + let name = Name.anOwnedDeviceWasUpdated.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + block(ownedCryptoId) + } + } + + public static func observeAnOwnedDeviceWasDeleted(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId) -> Void) -> NSObjectProtocol { + let name = Name.anOwnedDeviceWasDeleted.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + block(ownedCryptoId) + } + } + + public static func observeOwnedAttachmentDownloadCancelledByServer(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvOwnedAttachment) -> Void) -> NSObjectProtocol { + let name = Name.ownedAttachmentDownloadCancelledByServer.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let obvOwnedAttachment = notification.userInfo!["obvOwnedAttachment"] as! ObvOwnedAttachment + block(obvOwnedAttachment) + } + } + + public static func observeNewContactDevice(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentifier) -> Void) -> NSObjectProtocol { + let name = Name.newContactDevice.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let obvContactIdentifier = notification.userInfo!["obvContactIdentifier"] as! ObvContactIdentifier + block(obvContactIdentifier) + } + } + + public static func observeAnOwnedIdentityTransferProtocolFailed(within appNotificationCenter: NotificationCenter, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, UID, Error) -> Void) -> NSObjectProtocol { + let name = Name.anOwnedIdentityTransferProtocolFailed.name + return appNotificationCenter.addObserver(forName: name, object: nil, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let protocolInstanceUID = notification.userInfo!["protocolInstanceUID"] as! UID + let error = notification.userInfo!["error"] as! Error + block(ownedCryptoId, protocolInstanceUID, error) + } + } + } diff --git a/Engine/ObvEngine/ObvEngine/ObvEngineNotificationNew.yml b/Engine/ObvEngine/ObvEngine/ObvEngineNotificationNew.yml deleted file mode 100644 index 99510abc..00000000 --- a/Engine/ObvEngine/ObvEngine/ObvEngineNotificationNew.yml +++ /dev/null @@ -1,258 +0,0 @@ -import: - - Foundation - - ObvTypes - - OlvidUtils - - ObvCrypto -options: - - {key: post, value: postOnBackgroundQueue} - - {key: notificationCenterName, value: appNotificationCenter} - - {key: notificationCenterType, value: NotificationCenter} - - {key: visibility, value: public} - - {key: objectInObserve, value: false} - - {key: nilObjectInPost, value: true} -notifications: -- name: contactGroupHasUpdatedPendingMembersAndGroupMembers - params: - - {name: obvContactGroup, type: ObvContactGroup} -- name: newContactGroup - params: - - {name: obvContactGroup, type: ObvContactGroup} -- name: newPendingGroupMemberDeclinedStatus - params: - - {name: obvContactGroup, type: ObvContactGroup} -- name: contactGroupDeleted - params: - - {name: ownedIdentity, type: ObvOwnedIdentity} - - {name: groupOwner, type: ObvCryptoId} - - {name: groupUid, type: UID} -- name: contactGroupHasUpdatedPublishedDetails - params: - - {name: obvContactGroup, type: ObvContactGroup} -- name: contactGroupJoinedHasUpdatedTrustedDetails - params: - - {name: obvContactGroup, type: ObvContactGroup} -- name: contactGroupOwnedDiscardedLatestDetails - params: - - {name: obvContactGroup, type: ObvContactGroup} -- name: contactGroupOwnedHasUpdatedLatestDetails - params: - - {name: obvContactGroup, type: ObvContactGroup} -- name: DeletedObliviousChannelWithContactDevice - params: - - {name: obvContactDevice, type: ObvContactDevice} -- name: newTrustedContactIdentity - params: - - {name: obvContactIdentity, type: ObvContactIdentity} -- name: newBackupKeyGenerated - params: - - {name: backupKeyString, type: String} - - {name: obvBackupKeyInformation, type: ObvBackupKeyInformation} -- name: ownedIdentityWasDeactivated - params: - - {name: ownedIdentity, type: ObvCryptoId} -- name: ownedIdentityWasReactivated - params: - - {name: ownedIdentity, type: ObvCryptoId} -- name: networkOperationFailedSinceOwnedIdentityIsNotActive - params: - - {name: ownedIdentity, type: ObvCryptoId} -- name: serverRequiresThisDeviceToRegisterToPushNotifications - params: - - {name: ownedIdentity, type: ObvCryptoId} -- name: outboxMessagesAndAllTheirAttachmentsWereAcknowledged - params: - - {name: messageIdsAndTimestampsFromServer, type: "[(messageIdentifierFromEngine: Data, ownedCryptoId: ObvCryptoId, timestampFromServer: Date)]"} -- name: outboxMessageCouldNotBeSentToServer - params: - - {name: messageIdentifierFromEngine, type: Data} - - {name: ownedIdentity, type: ObvCryptoId} -- name: callerTurnCredentialsReceived - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: callUuid, type: UUID} - - {name: turnCredentials, type: ObvTurnCredentials} -- name: callerTurnCredentialsReceptionFailure - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: callUuid, type: UUID} -- name: callerTurnCredentialsReceptionPermissionDenied - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: callUuid, type: UUID} -- name: callerTurnCredentialsServerDoesNotSupportCalls - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: callUuid, type: UUID} -- name: messageWasAcknowledged - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: messageIdentifierFromEngine, type: Data} - - {name: timestampFromServer, type: Date} - - {name: isAppMessageWithUserContent, type: Bool} - - {name: isVoipMessage, type: Bool} -- name: newMessageReceived - params: - - {name: obvMessage, type: ObvMessage} - - {name: completionHandler, type: "(Set) -> Void", escaping: true} -- name: attachmentWasAcknowledgedByServer - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: messageIdentifierFromEngine, type: Data} - - {name: attachmentNumber, type: Int} -- name: attachmentDownloadCancelledByServer - params: - - {name: obvAttachment, type: ObvAttachment} -- name: cannotReturnAnyProgressForMessageAttachments - params: - - {name: messageIdentifierFromEngine, type: Data} -- name: attachmentDownloaded - params: - - {name: obvAttachment, type: ObvAttachment} -- name: attachmentDownloadWasResumed - params: - - {name: ownCryptoId, type: ObvCryptoId} - - {name: messageIdentifierFromEngine, type: Data} - - {name: attachmentNumber, type: Int} -- name: attachmentDownloadWasPaused - params: - - {name: ownCryptoId, type: ObvCryptoId} - - {name: messageIdentifierFromEngine, type: Data} - - {name: attachmentNumber, type: Int} -- name: newObvReturnReceiptToProcess - params: - - {name: obvReturnReceipt, type: ObvReturnReceipt} -- name: contactWasDeleted - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: contactCryptoId, type: ObvCryptoId} -- name: newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: apiKeyStatus, type: APIKeyStatus} - - {name: apiPermissions, type: APIPermissions} - - {name: apiKeyExpirationDate, type: "EngineOptionalWrapper"} -- name: newAPIKeyElementsForAPIKey - params: - - {name: serverURL, type: URL} - - {name: apiKey, type: UUID} - - {name: apiKeyStatus, type: APIKeyStatus} - - {name: apiPermissions, type: APIPermissions} - - {name: apiKeyExpirationDate, type: "EngineOptionalWrapper"} -- name: noMoreFreeTrialAPIKeyAvailableForOwnedIdentity - params: - - {name: ownedIdentity, type: ObvCryptoId} -- name: freeTrialIsStillAvailableForOwnedIdentity - params: - - {name: ownedIdentity, type: ObvCryptoId} -- name: appStoreReceiptVerificationSucceededAndSubscriptionIsValid - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: transactionIdentifier, type: String} -- name: appStoreReceiptVerificationFailed - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: transactionIdentifier, type: String} -- name: appStoreReceiptVerificationSucceededButSubscriptionIsExpired - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: transactionIdentifier, type: String} -- name: newObliviousChannelWithContactDevice - params: - - {name: obvContactDevice, type: ObvContactDevice} -- name: latestPhotoOfContactGroupOwnedHasBeenUpdated - params: - - {name: group, type: ObvContactGroup} -- name: publishedPhotoOfContactGroupOwnedHasBeenUpdated - params: - - {name: group, type: ObvContactGroup} -- name: publishedPhotoOfContactGroupJoinedHasBeenUpdated - params: - - {name: group, type: ObvContactGroup} -- name: trustedPhotoOfContactGroupJoinedHasBeenUpdated - params: - - {name: group, type: ObvContactGroup} -- name: publishedPhotoOfOwnedIdentityHasBeenUpdated - params: - - {name: ownedIdentity, type: ObvOwnedIdentity} -- name: publishedPhotoOfContactIdentityHasBeenUpdated - params: - - {name: contactIdentity, type: ObvContactIdentity} -- name: trustedPhotoOfContactIdentityHasBeenUpdated - params: - - {name: contactIdentity, type: ObvContactIdentity} -- name: wellKnownDownloadedSuccess - params: - - {name: serverURL, type: URL} - - {name: appInfo, type: "[String: AppInfo]"} -- name: wellKnownDownloadedFailure - params: - - {name: serverURL, type: URL} -- name: wellKnownUpdatedSuccess - params: - - {name: serverURL, type: URL} - - {name: appInfo, type: "[String: AppInfo]"} -- name: apiKeyStatusQueryFailed - params: - - {name: serverURL, type: URL} - - {name: apiKey, type: UUID} -- name: updatedContactIdentity - params: - - {name: obvContactIdentity, type: ObvContactIdentity} - - {name: trustedIdentityDetailsWereUpdated, type: Bool} - - {name: publishedIdentityDetailsWereUpdated, type: Bool} -- name: ownedIdentityUnbindingFromKeycloakPerformed - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: result, type: "Result"} -- name: updatedSetOfContactsCertifiedByOwnKeycloak - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: contactsCertifiedByOwnKeycloak, type: Set} -- name: updatedOwnedIdentity - params: - - {name: obvOwnedIdentity, type: ObvOwnedIdentity} -- name: mutualScanContactAdded - params: - - {name: obvContactIdentity, type: ObvContactIdentity} - - {name: signature, type: Data} -- name: messageExtendedPayloadAvailable - params: - - {name: obvMessage, type: ObvMessage} -- name: contactIsActiveChangedWithinEngine - params: - - {name: obvContactIdentity, type: ObvContactIdentity} -- name: contactWasRevokedAsCompromisedWithinEngine - params: - - {name: obvContactIdentity, type: ObvContactIdentity} -- name: ContactObvCapabilitiesWereUpdated - params: - - {name: contact, type: ObvContactIdentity} -- name: OwnedIdentityCapabilitiesWereUpdated - params: - - {name: ownedIdentity, type: ObvOwnedIdentity} -- name: newUserDialogToPresent - params: - - {name: obvDialog, type: ObvDialog} -- name: aPersistedDialogWasDeleted - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: uuid, type: UUID} -- name: groupV2WasCreatedOrUpdated - params: - - {name: obvGroupV2, type: ObvGroupV2} - - {name: initiator, type: ObvGroupV2.CreationOrUpdateInitiator} -- name: groupV2WasDeleted - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: appGroupIdentifier, type: Data} -- name: groupV2UpdateDidFail - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: appGroupIdentifier, type: Data} -- name: aPushTopicWasReceivedViaWebsocket - params: - - {name: pushTopic, type: String} -- name: ownedIdentityWasDeleted -- name: aKeycloakTargetedPushNotificationReceivedViaWebsocket - params: - - {name: ownedIdentity, type: ObvCryptoId} diff --git a/Engine/ObvEngine/ObvEngine/ProtocolWaiter.swift b/Engine/ObvEngine/ObvEngine/ProtocolWaiter.swift new file mode 100644 index 00000000..227d3e16 --- /dev/null +++ b/Engine/ObvEngine/ObvEngine/ProtocolWaiter.swift @@ -0,0 +1,147 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import ObvCrypto +import ObvTypes +import ObvMetaManager + + +/// This actor allows the engine to post a protocol message and to wait until it is fully processed (i.e., deleted from the `ReceivedMessage` database of the protocol manager). +/// Note that the fact that a protocol message is deleted does not necessarily mean that the protocol step did succeed (or even that a protocol step was executed). +/// This actor was created while implementing the bind/unbind to keycloak protocol, making it possible to make sure the message allowing to bind the owned identity was processed before +/// registering the owned identity (at the app level). +actor ProtocolWaiter { + + private weak var delegateManager: ObvMetaManager? + private let prng: PRNGService + + init(delegateManager: ObvMetaManager, prng: PRNGService) { + self.delegateManager = delegateManager + self.prng = prng + } + + private var createContextDelegate: ObvCreateContextDelegate? { + delegateManager?.createContextDelegate + } + + private var channelDelegate: ObvChannelDelegate? { + delegateManager?.channelDelegate + } + + private var flowDelegate: ObvFlowDelegate? { + delegateManager?.flowDelegate + } + + private var notificationDelegate: ObvNotificationDelegate? { + delegateManager?.notificationDelegate + } + + /// Stores the continuations created in ``waitUntilEndOfProcessingOfProtocolMessage(_:log:)``. When a protocol ``ReceivedMessage`` is deleted, a notification is send. + /// We process this notification in this actor and check whether the received `messageId` corresponds to some store completion. If it is the case, we remove the `messageId` from the list of Ids. + /// Once the list is empty, we call the completion. + private var storedContinuations = [(continuation: CheckedContinuation, messageIds: [ObvMessageIdentifier])]() + + private var token: NSObjectProtocol? + + + private func observeProtocolReceivedMessageWasDeletedNotificationsIfRequired() throws { + guard token == nil else { return } + guard let notificationDelegate else { assertionFailure(); throw ObvError.notificationDelegateIsNil } + token = ObvProtocolNotification.observeProtocolReceivedMessageWasDeleted(within: notificationDelegate) { messageId in + Task { [weak self] in await self?.processProtocolReceivedMessageWasDeleted(messageId: messageId) } + } + } + + + private func processProtocolReceivedMessageWasDeleted(messageId: ObvMessageIdentifier) { + var continuationsToKeep = [(continuation: CheckedContinuation, messageIds: [ObvMessageIdentifier])]() + while let storedContinuation = storedContinuations.popLast() { + let continuation = storedContinuation.continuation + var messagesIds = storedContinuation.messageIds + messagesIds.removeAll(where: { $0 == messageId }) + if messagesIds.isEmpty { + storedContinuation.continuation.resume() + } else { + continuationsToKeep.append((continuation, messagesIds)) + } + } + storedContinuations = continuationsToKeep + } + + + func waitUntilEndOfProcessingOfProtocolMessage(_ message: ObvChannelProtocolMessageToSend, log: OSLog) async throws { + + guard let createContextDelegate = createContextDelegate else { assertionFailure(); throw ObvError.createContextDelegateIsNil } + guard let channelDelegate else { assertionFailure(); throw ObvError.channelDelegateIsNil } + guard let flowDelegate else { assertionFailure(); throw ObvError.flowDelegateIsNil } + + try observeProtocolReceivedMessageWasDeletedNotificationsIfRequired() + + let flowId = try flowDelegate.startBackgroundActivityForStartingOrResumingProtocol() + let prng = self.prng + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + createContextDelegate.performBackgroundTask(flowId: flowId) { obvContext in + let messageIds: [ObvMessageIdentifier] + do { + messageIds = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext).map({ $0.key }) + } catch { + assertionFailure() + continuation.resume(throwing: error) + return + } + self.storedContinuations.append((continuation, messageIds)) + do { + try obvContext.save(logOnFailure: log) + } catch { + assertionFailure() + continuation.resume(throwing: error) + return + } + } + } + + } + + // MARK: - Errors + + enum ObvError: LocalizedError { + + case createContextDelegateIsNil + case channelDelegateIsNil + case flowDelegateIsNil + case notificationDelegateIsNil + + var errorDescription: String? { + switch self { + case .createContextDelegateIsNil: + return "Create context delegate is nil" + case .flowDelegateIsNil: + return "Flow delegate is nil" + case .channelDelegateIsNil: + return "Channel delegate is nil" + case .notificationDelegateIsNil: + return "Notification delegate is nil" + } + } + + } +} diff --git a/Engine/ObvEngine/ObvEngine/ReturnReceiptSender/ReturnReceiptSender.swift b/Engine/ObvEngine/ObvEngine/ReturnReceiptSender/ReturnReceiptSender.swift index b52ae5d5..d22489af 100644 --- a/Engine/ObvEngine/ObvEngine/ReturnReceiptSender/ReturnReceiptSender.swift +++ b/Engine/ObvEngine/ObvEngine/ReturnReceiptSender/ReturnReceiptSender.swift @@ -58,7 +58,7 @@ final class ReturnReceiptSender: NSObject, ObvErrorMaker { } - func postReturnReceiptWithElements(_ elements: (nonce: Data, key: Data), andStatus status: Int, to contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId, withDeviceUids deviceUids: Set, messageId: MessageIdentifier, attachmentNumber: Int?, flowId: FlowIdentifier) async throws { + func postReturnReceiptWithElements(_ elements: (nonce: Data, key: Data), andStatus status: Int, to contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId, withDeviceUids deviceUids: Set, messageId: ObvMessageIdentifier, attachmentNumber: Int?, flowId: FlowIdentifier) async throws { guard let identityDelegate = self.identityDelegate else { os_log("The identity delegate is not set", log: log, type: .fault) @@ -86,13 +86,16 @@ final class ReturnReceiptSender: NSObject, ObvErrorMaker { deviceUids: Array(deviceUids), flowId: flowId) method.identityDelegate = identityDelegate - let urlRequest = try method.getURLRequest() + // Since the request of a upload task should not contain a body or a body stream, we use URLSession.upload(for:from:), passing the data to send via the `from` attribute. guard let dataToSend = method.dataToSend else { throw ReturnReceiptSender.makeError(message: "Could not get data to send") } + method.dataToSend = nil + + let urlRequest = try method.getURLRequest() - let (responseData, response) = try await URLSession.shared.obvUpload(for: urlRequest, from: dataToSend) + let (responseData, response) = try await URLSession.shared.upload(for: urlRequest, from: dataToSend) guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else { throw Self.makeError(message: "Bad HTTPURLResponse") diff --git a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvContactIdentity.swift b/Engine/ObvEngine/ObvEngine/Types/Identities/ObvContactIdentity.swift index 9b04e6c8..f379e4a4 100644 --- a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvContactIdentity.swift +++ b/Engine/ObvEngine/ObvEngine/Types/Identities/ObvContactIdentity.swift @@ -40,6 +40,10 @@ public struct ObvContactIdentity: ObvIdentity { public var currentIdentityDetails: ObvIdentityDetails { return trustedIdentityDetails } + + public var contactIdentifier: ObvContactIdentifier { + ObvContactIdentifier(contactCryptoId: cryptoId, ownedCryptoId: ownedIdentity.cryptoId) + } init(cryptoIdentity: ObvCryptoIdentity, trustedIdentityDetails: ObvIdentityDetails, publishedIdentityDetails: ObvIdentityDetails?, ownedIdentity: ObvOwnedIdentity, isCertifiedByOwnKeycloak: Bool, isActive: Bool, isRevokedAsCompromised: Bool, isOneToOne: Bool) { self.cryptoId = ObvCryptoId(cryptoIdentity: cryptoIdentity) @@ -54,8 +58,7 @@ public struct ObvContactIdentity: ObvIdentity { public func getGenericIdentityWithPublishedOrTrustedDetails() -> ObvGenericIdentity { let details = publishedIdentityDetails ?? trustedIdentityDetails - return ObvGenericIdentity(cryptoIdentity: cryptoId.cryptoIdentity, - currentIdentityDetails: details) + return ObvGenericIdentity.init(cryptoId: cryptoId, currentIdentityDetails: details) } } diff --git a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvOwnedIdentity.swift b/Engine/ObvEngine/ObvEngine/Types/Identities/ObvOwnedIdentity.swift index 2ea14ad2..c54a9069 100644 --- a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvOwnedIdentity.swift +++ b/Engine/ObvEngine/ObvEngine/Types/Identities/ObvOwnedIdentity.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/Engine/ObvEngine/ObvEngine/Types/ObvContactDevice.swift b/Engine/ObvEngine/ObvEngine/Types/ObvContactDevice.swift index 21b2c7dc..730351fd 100644 --- a/Engine/ObvEngine/ObvEngine/Types/ObvContactDevice.swift +++ b/Engine/ObvEngine/ObvEngine/Types/ObvContactDevice.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -28,15 +28,18 @@ import OlvidUtils public struct ObvContactDevice: Hashable, CustomStringConvertible { public let identifier: Data - public let contactIdentity: ObvContactIdentity - - public var ownedIdentity: ObvOwnedIdentity { - contactIdentity.ownedIdentity + public let contactIdentifier: ObvContactIdentifier + public let secureChannelStatus: SecureChannelStatus + + public enum SecureChannelStatus { + case creationInProgress + case created } - public init(identifier: Data, contactIdentity: ObvContactIdentity) { - self.identifier = identifier - self.contactIdentity = contactIdentity + init(remoteDeviceUid: UID, contactIdentifier: ObvContactIdentifier, secureChannelStatus: SecureChannelStatus) { + self.identifier = remoteDeviceUid.raw + self.contactIdentifier = contactIdentifier + self.secureChannelStatus = secureChannelStatus } } @@ -45,21 +48,6 @@ public struct ObvContactDevice: Hashable, CustomStringConvertible { // MARK: Implementing CustomStringConvertible extension ObvContactDevice { public var description: String { - return "ObvContactDevice<\(contactIdentity.description), \(ownedIdentity.description)>" - } -} - - -internal extension ObvContactDevice { - - init?(contactDeviceUid: UID, contactCryptoIdentity: ObvCryptoIdentity, ownedCryptoIdentity: ObvCryptoIdentity, identityDelegate: ObvIdentityDelegate, within obvContext: ObvContext) { - guard let contactIdentity = ObvContactIdentity(contactCryptoIdentity: contactCryptoIdentity, ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) else { return nil } - do { - guard try identityDelegate.isDevice(withUid: contactDeviceUid, aDeviceOfContactIdentity: contactCryptoIdentity, ofOwnedIdentity: ownedCryptoIdentity, within: obvContext) else { return nil } - } catch { - return nil - } - self.contactIdentity = contactIdentity - self.identifier = contactDeviceUid.raw + return "ObvContactDevice<\(contactIdentifier.description), \(identifier.description)>" } } diff --git a/Engine/ObvEngine/ObvEngine/Types/ObvContactGroup.swift b/Engine/ObvEngine/ObvEngine/Types/ObvContactGroup.swift index 65b67aa1..23ecb157 100644 --- a/Engine/ObvEngine/ObvEngine/Types/ObvContactGroup.swift +++ b/Engine/ObvEngine/ObvEngine/Types/ObvContactGroup.swift @@ -45,6 +45,10 @@ public struct ObvContactGroup { } } + public var groupIdentifier: GroupV1Identifier { + return .init(groupUid: groupUid, groupOwner: groupOwner.cryptoId) + } + public enum GroupType { case owned case joined diff --git a/Engine/ObvEngine/ObvEngine/Types/ObvCurrentDevice.swift b/Engine/ObvEngine/ObvEngine/Types/ObvCurrentDevice.swift deleted file mode 100644 index 4b4fa365..00000000 --- a/Engine/ObvEngine/ObvEngine/Types/ObvCurrentDevice.swift +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import ObvCrypto -import ObvTypes -import ObvMetaManager -import OlvidUtils - -public struct ObvCurrentDevice: Hashable, CustomStringConvertible { - - public let identifier: Data - public let ownedIndentity: ObvOwnedIdentity - -} - -// MARK: Implementing CustomStringConvertible -extension ObvCurrentDevice { - public var description: String { - return "ObvCurrentDevice<\(ownedIndentity.description)>" - } -} - -internal extension ObvCurrentDevice { - - init?(currentDeviceUid: UID, identityDelegate: ObvIdentityDelegate, within obvContext: ObvContext) { - let ownedCryptoIdentity: ObvCryptoIdentity - do { - ownedCryptoIdentity = try identityDelegate.getOwnedIdentityOfCurrentDeviceUid(currentDeviceUid, within: obvContext) - } catch { - return nil - } - guard let obvOwnedIdentity = ObvOwnedIdentity(ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) else { return nil } - self.identifier = currentDeviceUid.raw - self.ownedIndentity = obvOwnedIdentity - } - -} diff --git a/Engine/ObvEngine/ObvEngine/Types/ObvMessage.swift b/Engine/ObvEngine/ObvEngine/Types/ObvMessage.swift deleted file mode 100644 index c4f4b2f5..00000000 --- a/Engine/ObvEngine/ObvEngine/Types/ObvMessage.swift +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import ObvMetaManager -import ObvTypes -import OlvidUtils - -public struct ObvMessage { - - public let fromContactIdentity: ObvContactIdentity - internal let messageId: MessageIdentifier - public let attachments: [ObvAttachment] - public let expectedAttachmentsCount: Int - public let messageUploadTimestampFromServer: Date - public let downloadTimestampFromServer: Date - public let localDownloadTimestamp: Date - public let messagePayload: Data - public let extendedMessagePayload: Data? - - public var messageIdentifierFromEngine: Data { - return messageId.uid.raw - } - - var toIdentity: ObvOwnedIdentity { - return fromContactIdentity.ownedIdentity - } - - var ownedCryptoId: ObvCryptoId { - return fromContactIdentity.ownedIdentity.cryptoId - } - - - private static func makeError(message: String, code: Int = 0) -> Error { - NSError(domain: "ObvMessage", code: code, userInfo: [NSLocalizedFailureReasonErrorKey: message]) - } - - - init(messageId: MessageIdentifier, networkFetchDelegate: ObvNetworkFetchDelegate, identityDelegate: ObvIdentityDelegate, within obvContext: ObvContext) throws { - - guard let networkReceivedMessage = networkFetchDelegate.getDecryptedMessage(messageId: messageId, flowId: obvContext.flowId) else { - throw Self.makeError(message: "The call to getDecryptedMessage did fail") - } - - try self.init(networkReceivedMessage: networkReceivedMessage, networkFetchDelegate: networkFetchDelegate, identityDelegate: identityDelegate, within: obvContext) - - } - - - init(networkReceivedMessage: ObvNetworkReceivedMessageDecrypted, networkFetchDelegate: ObvNetworkFetchDelegate?, identityDelegate: ObvIdentityDelegate, within obvContext: ObvContext) throws { - guard let obvContact = ObvContactIdentity(contactCryptoIdentity: networkReceivedMessage.fromIdentity, - ownedCryptoIdentity: networkReceivedMessage.messageId.ownedCryptoIdentity, - identityDelegate: identityDelegate, - within: obvContext) else { - throw Self.makeError(message: "Could not get ObvContactIdentity") - } - - self.fromContactIdentity = obvContact - self.messageId = networkReceivedMessage.messageId - self.messagePayload = networkReceivedMessage.messagePayload - self.messageUploadTimestampFromServer = networkReceivedMessage.messageUploadTimestampFromServer - self.downloadTimestampFromServer = networkReceivedMessage.downloadTimestampFromServer - self.localDownloadTimestamp = networkReceivedMessage.localDownloadTimestamp - self.extendedMessagePayload = networkReceivedMessage.extendedMessagePayload - self.expectedAttachmentsCount = networkReceivedMessage.attachmentIds.count - - if let networkFetchDelegate = networkFetchDelegate { - self.attachments = try networkReceivedMessage.attachmentIds.map { - return try ObvAttachment(attachmentId: $0, fromContactIdentity: obvContact, networkFetchDelegate: networkFetchDelegate, within: obvContext) - } - } else { - self.attachments = [] - } - } -} - - -// MARK: - Codable - -extension ObvMessage: Codable { - - /// ObvMessage is codable so as to be able to transfer a message from the notification service to the main app. - /// This serialization should **not** be used within long term storage since we may change it regularly. - /// See also `ObvContactIdentity` and `ObvAttachment`. - - enum CodingKeys: String, CodingKey { - case fromContactIdentity = "from_contact_identity" - case messageId = "message_id" - case attachments = "attachments" - case messageUploadTimestampFromServer = "messageUploadTimestampFromServer" - case downloadTimestampFromServer = "downloadTimestampFromServer" - case messagePayload = "message_payload" - case localDownloadTimestamp = "localDownloadTimestamp" - case extendedMessagePayload = "extendedMessagePayload" - case expectedAttachmentsCount = "expectedAttachmentsCount" - } - - public func encodeToJson() throws -> Data { - let encoder = JSONEncoder() - return try encoder.encode(self) - } - - public static func decodeFromJson(data: Data) throws -> ObvMessage { - let decoder = JSONDecoder() - return try decoder.decode(ObvMessage.self, from: data) - } -} diff --git a/Engine/ObvEngine/ObvEngine/Types/ObvOwnedDevice.swift b/Engine/ObvEngine/ObvEngine/Types/ObvOwnedDevice.swift new file mode 100644 index 00000000..2a8ee511 --- /dev/null +++ b/Engine/ObvEngine/ObvEngine/Types/ObvOwnedDevice.swift @@ -0,0 +1,61 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import ObvCrypto + +/// See also ``struct ObvRemoteOwnedDevice``. +public struct ObvOwnedDevice: Hashable, CustomStringConvertible { + + public let identifier: Data + public let ownedCryptoId: ObvCryptoId + public let secureChannelStatus: SecureChannelStatus + public let name: String? + public let expirationDate: Date? + public let latestRegistrationDate: Date? + + public enum SecureChannelStatus { + case currentDevice + case creationInProgress + case created + } + + var isCurrentDevice: Bool { + secureChannelStatus == .currentDevice + } + + init(identifier: Data, ownedCryptoIdentity: ObvCryptoIdentity, secureChannelStatus: SecureChannelStatus, name: String?, expirationDate: Date?, latestRegistrationDate: Date?) { + self.identifier = identifier + self.ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedCryptoIdentity) + self.secureChannelStatus = secureChannelStatus + self.name = name + self.expirationDate = expirationDate + self.latestRegistrationDate = latestRegistrationDate + } + +} + + +// MARK: Implementing CustomStringConvertible +extension ObvOwnedDevice { + public var description: String { + return "ObvOwnedDevice<\(ownedCryptoId.description), \(identifier.description)>" + } +} diff --git a/Engine/ObvEngine/ObvEngine/Types/ObvRemoteOwnedDevice.swift b/Engine/ObvEngine/ObvEngine/Types/ObvRemoteOwnedDevice.swift index 438b595f..7deb2388 100644 --- a/Engine/ObvEngine/ObvEngine/Types/ObvRemoteOwnedDevice.swift +++ b/Engine/ObvEngine/ObvEngine/Types/ObvRemoteOwnedDevice.swift @@ -25,32 +25,26 @@ import ObvMetaManager import OlvidUtils +/// See also ``struct ObvOwnedDevice`` public struct ObvRemoteOwnedDevice: Hashable, CustomStringConvertible { public let identifier: Data - public let ownedIndentity: ObvOwnedIdentity + public let ownedCryptoId: ObvCryptoId + + init(remoteDeviceUid: UID, ownedCryptoIdentity: ObvCryptoIdentity) { + self.identifier = remoteDeviceUid.raw + self.ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedCryptoIdentity) + } } // MARK: Implementing CustomStringConvertible -extension ObvRemoteOwnedDevice { - public var description: String { - return "ObvRemoteOwnedDevice<\(ownedIndentity.description)>" - } -} -internal extension ObvRemoteOwnedDevice { +extension ObvRemoteOwnedDevice { - init?(remoteOwnedDeviceUid: UID, ownedCryptoIdentity: ObvCryptoIdentity, identityDelegate: ObvIdentityDelegate, within obvContext: ObvContext) { - guard let ownedIdentity = ObvOwnedIdentity(ownedCryptoIdentity: ownedCryptoIdentity, identityDelegate: identityDelegate, within: obvContext) else { return nil } - do { - guard try identityDelegate.isDevice(withUid: remoteOwnedDeviceUid, aRemoteDeviceOfOwnedIdentity: ownedCryptoIdentity, within: obvContext) else { return nil } - } catch { - return nil - } - self.identifier = remoteOwnedDeviceUid.raw - self.ownedIndentity = ownedIdentity + public var description: String { + return "ObvRemoteOwnedDevice<\(ownedCryptoId.description)>" } } diff --git a/Engine/ObvFlowManager/ObvFlowManager/Coordinators/BackgroundTaskCoordinator.swift b/Engine/ObvFlowManager/ObvFlowManager/Coordinators/BackgroundTaskCoordinator.swift index d708fe26..cb69d065 100644 --- a/Engine/ObvFlowManager/ObvFlowManager/Coordinators/BackgroundTaskCoordinator.swift +++ b/Engine/ObvFlowManager/ObvFlowManager/Coordinators/BackgroundTaskCoordinator.swift @@ -280,7 +280,7 @@ extension BackgroundTaskCoordinator { try startFlowForBackgroundTask(with: Set(), completionHandler: completionHandler) } - func addBackgroundActivityForPostingApplicationMessageAttachmentsWithinFlow(withFlowId flowId: FlowIdentifier, messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier]) { + func addBackgroundActivityForPostingApplicationMessageAttachmentsWithinFlow(withFlowId flowId: FlowIdentifier, messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier]) { let expectations: Set if attachmentIds.isEmpty { @@ -301,7 +301,7 @@ extension BackgroundTaskCoordinator { /// It is called *before* notifying the app. The app will eventually post a return receipt. To do that, it will make a request to the engine that will eventually call the /// ``stopBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?)`` bellow. /// - func startBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?) throws -> FlowIdentifier { + func startBackgroundActivityForPostingReturnReceipt(messageId: ObvMessageIdentifier, attachmentNumber: Int?) throws -> FlowIdentifier { guard let delegateManager = delegateManager else { assertionFailure() throw Self.makeError(message: "🧾 The delegate manager is not set") @@ -309,7 +309,7 @@ extension BackgroundTaskCoordinator { let log = OSLog(subsystem: delegateManager.logSubsystem, category: BackgroundTaskCoordinator.logCategory) let expectations: Set if let attachmentNumber = attachmentNumber { - let attachmentId = AttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) + let attachmentId = ObvAttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) os_log("🧾 Starting background activity for attachmentId %{public}@", log: log, type: .debug, attachmentId.debugDescription) expectations = Set([.returnReceiptWasPostedForAttachment(attachmentId: attachmentId)]) } else { @@ -322,7 +322,7 @@ extension BackgroundTaskCoordinator { /// This method allows to stop the flow allowing to wait until a return receipt is posted. See the comment for the /// ``startBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?) throws`` /// method above. - func stopBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?) throws { + func stopBackgroundActivityForPostingReturnReceipt(messageId: ObvMessageIdentifier, attachmentNumber: Int?) throws { guard let delegateManager = delegateManager else { assertionFailure() throw Self.makeError(message: "The delegate manager is not set") @@ -330,7 +330,7 @@ extension BackgroundTaskCoordinator { let log = OSLog(subsystem: delegateManager.logSubsystem, category: BackgroundTaskCoordinator.logCategory) let expectationsToRemove: [Expectation] if let attachmentNumber = attachmentNumber { - let attachmentId = AttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) + let attachmentId = ObvAttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) os_log("🧾 Stopping background activity for attachmentId %{public}@", log: log, type: .debug, attachmentId.debugDescription) expectationsToRemove = [.returnReceiptWasPostedForAttachment(attachmentId: attachmentId)] } else { @@ -357,11 +357,11 @@ extension BackgroundTaskCoordinator { // Deleting a message or an attachment - func startBackgroundActivityForDeletingAMessage(messageId: MessageIdentifier) -> FlowIdentifier? { + func startBackgroundActivityForDeletingAMessage(messageId: ObvMessageIdentifier) -> FlowIdentifier? { return FlowIdentifier() } - func startBackgroundActivityForDeletingAnAttachment(attachmentId: AttachmentIdentifier) -> FlowIdentifier? { + func startBackgroundActivityForDeletingAnAttachment(attachmentId: ObvAttachmentIdentifier) -> FlowIdentifier? { return FlowIdentifier() } diff --git a/Engine/ObvFlowManager/ObvFlowManager/Coordinators/RemoteNotificationCoordinator.swift b/Engine/ObvFlowManager/ObvFlowManager/Coordinators/RemoteNotificationCoordinator.swift index fc862c79..5df0bc5e 100644 --- a/Engine/ObvFlowManager/ObvFlowManager/Coordinators/RemoteNotificationCoordinator.swift +++ b/Engine/ObvFlowManager/ObvFlowManager/Coordinators/RemoteNotificationCoordinator.swift @@ -389,7 +389,7 @@ extension RemoteNotificationCoordinator { try self.startFlow(ownedCryptoIds: ownedCryptoIds, completionHandler: completionHandler) } - public func attachmentDownloadDecisionHasBeenTaken(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + public func attachmentDownloadDecisionHasBeenTaken(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { return } let log = OSLog(subsystem: delegateManager.logSubsystem, category: RemoteNotificationCoordinator.logCategory) diff --git a/Engine/ObvFlowManager/ObvFlowManager/Expectation.swift b/Engine/ObvFlowManager/ObvFlowManager/Expectation.swift index 8278bd34..75f43270 100644 --- a/Engine/ObvFlowManager/ObvFlowManager/Expectation.swift +++ b/Engine/ObvFlowManager/ObvFlowManager/Expectation.swift @@ -25,27 +25,27 @@ import ObvCrypto enum Expectation: Equatable, Hashable, CustomDebugStringConvertible { // For outbox messages - case outboxMessageWasUploaded(messageId: MessageIdentifier) - case deletionOfOutboxMessage(withId: MessageIdentifier) + case outboxMessageWasUploaded(messageId: ObvMessageIdentifier) + case deletionOfOutboxMessage(withId: ObvMessageIdentifier) // For inbox messages case uidsOfMessagesToProcess(ownedCryptoIdentity: ObvCryptoIdentity) - case networkReceivedMessageWasProcessed(messageId: MessageIdentifier) - case applicationMessageDecrypted(messageId: MessageIdentifier) - case extendedMessagePayloadWasDownloaded(messageId: MessageIdentifier) + case networkReceivedMessageWasProcessed(messageId: ObvMessageIdentifier) + case applicationMessageDecrypted(messageId: ObvMessageIdentifier) + case extendedMessagePayloadWasDownloaded(messageId: ObvMessageIdentifier) case protocolMessageToProcess - case endOfProcessingOfProtocolMessage(withId: MessageIdentifier) - case deletionOfInboxMessage(withId: MessageIdentifier) + case endOfProcessingOfProtocolMessage(withId: ObvMessageIdentifier) + case deletionOfInboxMessage(withId: ObvMessageIdentifier) // For outbox attachments - case attachmentUploadRequestIsTakenCareOfForAttachment(withId: AttachmentIdentifier) + case attachmentUploadRequestIsTakenCareOfForAttachment(withId: ObvAttachmentIdentifier) // For inbox attachments - case decisionToDownloadAttachmentOrNotHasBeenTaken(attachmentId: AttachmentIdentifier) + case decisionToDownloadAttachmentOrNotHasBeenTaken(attachmentId: ObvAttachmentIdentifier) // For posting return receipts - case returnReceiptWasPostedForMessage(messageId: MessageIdentifier) - case returnReceiptWasPostedForAttachment(attachmentId: AttachmentIdentifier) + case returnReceiptWasPostedForMessage(messageId: ObvMessageIdentifier) + case returnReceiptWasPostedForAttachment(attachmentId: ObvAttachmentIdentifier) static func == (lhs: Expectation, rhs: Expectation) -> Bool { diff --git a/Engine/ObvFlowManager/ObvFlowManager/Internal Delegates/BackgroundTaskDelegate.swift b/Engine/ObvFlowManager/ObvFlowManager/Internal Delegates/BackgroundTaskDelegate.swift index 5b86b2ad..aabe664b 100644 --- a/Engine/ObvFlowManager/ObvFlowManager/Internal Delegates/BackgroundTaskDelegate.swift +++ b/Engine/ObvFlowManager/ObvFlowManager/Internal Delegates/BackgroundTaskDelegate.swift @@ -31,7 +31,7 @@ protocol BackgroundTaskDelegate { // Posting message and attachments - func addBackgroundActivityForPostingApplicationMessageAttachmentsWithinFlow(withFlowId flowId: FlowIdentifier, messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier]) + func addBackgroundActivityForPostingApplicationMessageAttachmentsWithinFlow(withFlowId flowId: FlowIdentifier, messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier]) // Resuming a protocol @@ -43,12 +43,12 @@ protocol BackgroundTaskDelegate { // Deleting a message or an attachment - func startBackgroundActivityForDeletingAMessage(messageId: MessageIdentifier) -> FlowIdentifier? - func startBackgroundActivityForDeletingAnAttachment(attachmentId: AttachmentIdentifier) -> FlowIdentifier? + func startBackgroundActivityForDeletingAMessage(messageId: ObvMessageIdentifier) -> FlowIdentifier? + func startBackgroundActivityForDeletingAnAttachment(attachmentId: ObvAttachmentIdentifier) -> FlowIdentifier? // Posting a return receipt (for message or an attachment) - func startBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?) throws -> FlowIdentifier - func stopBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?) throws + func startBackgroundActivityForPostingReturnReceipt(messageId: ObvMessageIdentifier, attachmentNumber: Int?) throws -> FlowIdentifier + func stopBackgroundActivityForPostingReturnReceipt(messageId: ObvMessageIdentifier, attachmentNumber: Int?) throws } diff --git a/Engine/ObvFlowManager/ObvFlowManager/Internal Delegates/RemoteNotificationDelegate.swift b/Engine/ObvFlowManager/ObvFlowManager/Internal Delegates/RemoteNotificationDelegate.swift index 07560d70..4c1800b0 100644 --- a/Engine/ObvFlowManager/ObvFlowManager/Internal Delegates/RemoteNotificationDelegate.swift +++ b/Engine/ObvFlowManager/ObvFlowManager/Internal Delegates/RemoteNotificationDelegate.swift @@ -29,6 +29,6 @@ protocol RemoteNotificationDelegate { func startBackgroundActivityForHandlingRemoteNotification(ownedCryptoIds: Set, withCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) throws -> FlowIdentifier - func attachmentDownloadDecisionHasBeenTaken(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) + func attachmentDownloadDecisionHasBeenTaken(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) } diff --git a/Engine/ObvFlowManager/ObvFlowManager/ObvFlowManager.swift b/Engine/ObvFlowManager/ObvFlowManager/ObvFlowManager.swift index debde9b3..e4342ce1 100644 --- a/Engine/ObvFlowManager/ObvFlowManager/ObvFlowManager.swift +++ b/Engine/ObvFlowManager/ObvFlowManager/ObvFlowManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -96,7 +96,7 @@ extension ObvFlowManager { return try backgroundTaskDelegate.startNewFlow(completionHandler: completionHandler) } - public func addBackgroundActivityForPostingApplicationMessageAttachmentsWithinFlow(withFlowId flowId: FlowIdentifier, messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier]) throws { + public func addBackgroundActivityForPostingApplicationMessageAttachmentsWithinFlow(withFlowId flowId: FlowIdentifier, messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier]) throws { guard let backgroundTaskDelegate = delegateManager.backgroundTaskDelegate else { throw Self.makeError(message: "The backgroundTaskDelegate is not set") } @@ -116,14 +116,14 @@ extension ObvFlowManager { // Posting a return receipt (for message or an attachment) - public func startBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?) throws -> FlowIdentifier { + public func startBackgroundActivityForPostingReturnReceipt(messageId: ObvMessageIdentifier, attachmentNumber: Int?) throws -> FlowIdentifier { guard let backgroundTaskDelegate = delegateManager.backgroundTaskDelegate else { throw Self.makeError(message: "The backgroundTaskDelegate is not set") } return try backgroundTaskDelegate.startBackgroundActivityForPostingReturnReceipt(messageId: messageId, attachmentNumber: attachmentNumber) } - public func stopBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?) throws { + public func stopBackgroundActivityForPostingReturnReceipt(messageId: ObvMessageIdentifier, attachmentNumber: Int?) throws { guard let backgroundTaskDelegate = delegateManager.backgroundTaskDelegate else { throw Self.makeError(message: "The backgroundTaskDelegate is not set") } @@ -139,12 +139,12 @@ extension ObvFlowManager { // Deleting a message or an attachment - public func startBackgroundActivityForDeletingAMessage(messageId: MessageIdentifier) -> FlowIdentifier? { + public func startBackgroundActivityForDeletingAMessage(messageId: ObvMessageIdentifier) -> FlowIdentifier? { return self.delegateManager.backgroundTaskDelegate?.startBackgroundActivityForDeletingAMessage(messageId: messageId) } - public func startBackgroundActivityForDeletingAnAttachment(attachmentId: AttachmentIdentifier) -> FlowIdentifier? { + public func startBackgroundActivityForDeletingAnAttachment(attachmentId: ObvAttachmentIdentifier) -> FlowIdentifier? { return self.delegateManager.backgroundTaskDelegate?.startBackgroundActivityForDeletingAnAttachment(attachmentId: attachmentId) } @@ -155,7 +155,7 @@ extension ObvFlowManager { try self.delegateManager.remoteNotificationDelegate.startBackgroundActivityForHandlingRemoteNotification(ownedCryptoIds: ownedCryptoIds, withCompletionHandler: handler) } - public func attachmentDownloadDecisionHasBeenTaken(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + public func attachmentDownloadDecisionHasBeenTaken(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { self.delegateManager.remoteNotificationDelegate.attachmentDownloadDecisionHasBeenTaken(attachmentId: attachmentId, flowId: flowId) } diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactDevice.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactDevice.swift index dfd2ae6b..b6913a86 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactDevice.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactDevice.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -63,6 +63,11 @@ final class ContactDevice: NSManagedObject, ObvManagedObject { private var changedKeys = Set() + /// This is only set while inserting a new `ContactDevice`. This is `true` iff the inserted instance was performed during a `ChannelCreationWithContactDeviceProtocol`. + /// + /// This value is used in the notification sent to the engine. When receiving the notification, the engine starts a new `ChannelCreationWithContactDeviceProtocol` *unless* this Boolean is `true`. + private var createdDuringChannelCreation: Bool? + // MARK: - Initializer /// This initializer makes sure that we do not insert a contact device if another one with the same (`uid`, `contactIdentity`) already exists. Note that a `contactIdentity` is identified by its cryptoIdentity and its ownedIdentity. If a previous entity exists, this initializer fails. @@ -71,7 +76,7 @@ final class ContactDevice: NSManagedObject, ObvManagedObject { /// - uid: The `UID` of the device /// - contactIdentity: The `ContactIdentity` that owns this device /// - delegateManager: The `ObvIdentityDelegateManager` - convenience init?(uid: UID, contactIdentity: ContactIdentity, flowId: FlowIdentifier, delegateManager: ObvIdentityDelegateManager) { + convenience init?(uid: UID, contactIdentity: ContactIdentity, createdDuringChannelCreation: Bool, flowId: FlowIdentifier, delegateManager: ObvIdentityDelegateManager) { let log = OSLog(subsystem: delegateManager.logSubsystem, category: "ContactDevice") guard let obvContext = contactIdentity.obvContext else { os_log("Could not get a context", log: log, type: .fault) @@ -89,13 +94,14 @@ final class ContactDevice: NSManagedObject, ObvManagedObject { self.rawCapabilities = nil // Set later self.contactIdentity = contactIdentity self.delegateManager = delegateManager + self.createdDuringChannelCreation = createdDuringChannelCreation } func deleteContactDevice() throws { guard let obvContext = self.obvContext else { assertionFailure() - throw ContactDevice.makeError(message: "Could not find contact --> could not delete device") + throw ContactDevice.makeError(message: "Could not find context --> could not delete device") } obvContext.delete(self) } @@ -143,7 +149,8 @@ extension ContactDevice { let values: Set = Set(items.compactMap { guard let contactIdentity = $0.contactIdentity else { return nil } guard let ownedIdentity = contactIdentity.ownedIdentity else { return nil } - return ObliviousChannelIdentifier(currentDeviceUid: ownedIdentity.currentDeviceUid, remoteCryptoIdentity: contactIdentity.cryptoIdentity, remoteDeviceUid: $0.uid) + guard let remoteCryptoIdentity = contactIdentity.cryptoIdentity else { assertionFailure(); return nil } + return ObliviousChannelIdentifier(currentDeviceUid: ownedIdentity.currentDeviceUid, remoteCryptoIdentity: remoteCryptoIdentity, remoteDeviceUid: $0.uid) }) return values } @@ -154,20 +161,22 @@ extension ContactDevice { extension ContactDevice { - override func willSave() { - super.willSave() + override func prepareForDeletion() { + super.prepareForDeletion() - if isDeleted { - if let contactIdentity = self.contactIdentity, let ownedIdentity = contactIdentity.ownedIdentity { - self.contactCryptoIdentityOnDeletion = contactIdentity.cryptoIdentity - self.ownedCryptoIdentityOnDeletion = ownedIdentity.ownedCryptoIdentity.getObvCryptoIdentity() - } + if let contactIdentity = self.contactIdentity, let ownedIdentity = contactIdentity.ownedIdentity { + self.contactCryptoIdentityOnDeletion = contactIdentity.cryptoIdentity + self.ownedCryptoIdentityOnDeletion = ownedIdentity.ownedCryptoIdentity.getObvCryptoIdentity() } + } + + override func willSave() { + super.willSave() changedKeys = Set(self.changedValues().keys) - } + override func didSave() { super.didSave() @@ -193,23 +202,31 @@ extension ContactDevice { if isInserted { - guard let contactIdentity, let ownedIdentity = contactIdentity.ownedIdentity else { + guard let contactIdentity, let ownedIdentity = contactIdentity.ownedIdentity, let contactIdentity = contactIdentity.cryptoIdentity else { assertionFailure() return } + assert(createdDuringChannelCreation != nil) + let createdDuringChannelCreation = self.createdDuringChannelCreation ?? false ObvIdentityNotificationNew.newContactDevice(ownedIdentity: ownedIdentity.ownedCryptoIdentity.getObvCryptoIdentity(), - contactIdentity: contactIdentity.cryptoIdentity, + contactIdentity: contactIdentity, contactDeviceUid: uid, + createdDuringChannelCreation: createdDuringChannelCreation, flowId: flowId) .postOnBackgroundQueue(within: delegateManager.notificationDelegate) } else if isDeleted { - guard let ownedCryptoIdentityOnDeletion = self.ownedCryptoIdentityOnDeletion, let contactCryptoIdentityOnDeletion = self.contactCryptoIdentityOnDeletion else { - os_log("ownedCryptoIdentityOnDeletion or contactCryptoIdentityOnDeletion is nil on deletion which is unexpected", log: log, type: .fault) + guard let ownedCryptoIdentityOnDeletion = self.ownedCryptoIdentityOnDeletion else { + os_log("ownedCryptoIdentityOnDeletion is nil on deletion which is unexpected", log: log, type: .fault) return } - + + guard let contactCryptoIdentityOnDeletion = self.contactCryptoIdentityOnDeletion else { + os_log("contactCryptoIdentityOnDeletion is nil on deletion which is unexpected", log: log, type: .fault) + return + } + let notification = ObvIdentityNotificationNew.deletedContactDevice(ownedIdentity: ownedCryptoIdentityOnDeletion, contactIdentity: contactCryptoIdentityOnDeletion, contactDeviceUid: uid, @@ -219,10 +236,10 @@ extension ContactDevice { } else if let ownedIdentity = contactIdentity?.ownedIdentity { guard let contactIdentity = self.contactIdentity else { assertionFailure(); return } - if changedKeys.contains(Predicate.Key.rawCapabilities.rawValue) { + if changedKeys.contains(Predicate.Key.rawCapabilities.rawValue), let contactIdentity = contactIdentity.cryptoIdentity { ObvIdentityNotificationNew.contactObvCapabilitiesWereUpdated( ownedIdentity: ownedIdentity.ownedCryptoIdentity.getObvCryptoIdentity(), - contactIdentity: contactIdentity.cryptoIdentity, + contactIdentity: contactIdentity, flowId: flowId) .postOnBackgroundQueue(within: delegateManager.notificationDelegate) } diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroup.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroup.swift index 1130b367..aa097d3b 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroup.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroup.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -109,7 +109,7 @@ class ContactGroup: NSManagedObject, ObvManagedObject { convenience init(groupInformationWithPhoto: GroupInformationWithPhoto, ownedIdentity: OwnedIdentity, groupMembers: Set, pendingGroupMembers: Set, delegateManager: ObvIdentityDelegateManager, forEntityName entityName: String) throws { guard let obvContext = ownedIdentity.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.contextIsNil } let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: obvContext)! @@ -121,7 +121,7 @@ class ContactGroup: NSManagedObject, ObvManagedObject { self.groupMembers = Set() for groupMember in groupMembers { guard let contact = try ContactIdentity.get(contactIdentity: groupMember, ownedIdentity: ownedIdentity.cryptoIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotContact.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotContact } self.groupMembers.insert(contact) } @@ -172,13 +172,11 @@ extension ContactGroup { if groupDetailsElements.version <= self.publishedDetails.version { return } guard groupDetailsElements.version > self.publishedDetails.version else { - throw ObvIdentityManagerError.invalidGroupDetailsVersion.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.invalidGroupDetailsVersion } - let errorDomain = ContactGroup.errorDomain - guard let obvContext = self.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: errorDomain) + throw ObvIdentityManagerError.contextIsNil } let oldPublishedDetails = self.publishedDetails @@ -235,7 +233,7 @@ extension ContactGroup { func resetGroupMembersVersionOfContactGroupJoined() throws { guard self is ContactGroupJoined else { - throw ObvIdentityManagerError.groupIsNotJoined.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.groupIsNotJoined } self.groupMembersVersion = 0 } @@ -244,15 +242,15 @@ extension ContactGroup { func transferPendingMemberToGroupMembersForGroupOwned(contactIdentity: ContactIdentity) throws { guard self is ContactGroupOwned else { - throw ObvIdentityManagerError.groupIsNotOwned.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.groupIsNotOwned } guard self.obvContext == contactIdentity.obvContext else { - throw ObvIdentityManagerError.contextMismatch.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.contextMismatch } guard let obvContext = self.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.contextIsNil } // Remove the pending member from the list of pending group members @@ -274,11 +272,11 @@ extension ContactGroup { func transferGroupMemberToPendingMembersForGroupOwned(contactCryptoIdentity: ObvCryptoIdentity) throws { guard let delegateManager = self.delegateManager else { - throw ObvIdentityManagerError.delegateManagerIsNotSet.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.delegateManagerIsNotSet } guard self is ContactGroupOwned else { - throw ObvIdentityManagerError.groupIsNotOwned.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.groupIsNotOwned } // Remove the group member from the list of group members @@ -308,7 +306,7 @@ extension ContactGroup { } guard let obvContext = self.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroup.errorDomain) + throw ObvIdentityManagerError.contextIsNil } let currentPendingMembersToDelete = self.pendingGroupMembers.subtracting(newVersionOfPendingMembers) @@ -432,11 +430,11 @@ extension ContactGroup { NotificationType.Key.ownedIdentity: groupOwned.ownedIdentity.cryptoIdentity] as [String: Any] delegateManager.notificationDelegate.post(name: NotificationType.name, userInfo: userInfo) - } else if let groupJoined = self as? ContactGroupJoined { + } else if let groupJoined = self as? ContactGroupJoined, let groupOwner = groupJoined.groupOwner.cryptoIdentity { let NotificationType = ObvIdentityNotification.ContactGroupJoinedHasUpdatedPublishedDetails.self let userInfo = [NotificationType.Key.groupUid: groupJoined.groupUid, - NotificationType.Key.groupOwner: groupJoined.groupOwner.cryptoIdentity, + NotificationType.Key.groupOwner: groupOwner, NotificationType.Key.ownedIdentity: self.ownedIdentity.cryptoIdentity] as [String: Any] delegateManager.notificationDelegate.post(name: NotificationType.name, userInfo: userInfo) @@ -463,11 +461,11 @@ extension ContactGroup { NotificationType.Key.ownedIdentity: groupOwned.ownedIdentity.cryptoIdentity] as [String: Any] delegateManager.notificationDelegate.post(name: NotificationType.name, userInfo: userInfo) - } else if let groupJoined = self as? ContactGroupJoined { + } else if let groupJoined = self as? ContactGroupJoined, let groupOwner = groupJoined.groupOwner.cryptoIdentity { let NotificationType = ObvIdentityNotification.ContactGroupJoinedHasUpdatedPendingMembersAndGroupMembers.self let userInfo = [NotificationType.Key.groupUid: groupJoined.groupUid, - NotificationType.Key.groupOwner: groupJoined.groupOwner.cryptoIdentity, + NotificationType.Key.groupOwner: groupOwner, NotificationType.Key.ownedIdentity: groupJoined.ownedIdentity.cryptoIdentity] as [String: Any] delegateManager.notificationDelegate.post(name: NotificationType.name, userInfo: userInfo) @@ -492,3 +490,295 @@ extension ContactGroup { } + +// MARK: - Helpers for snapshots + +extension ContactGroup { + + var groupV1Identifier: GroupV1Identifier? { + let groupUid = self.groupUid + if let groupJoined = self as? ContactGroupJoined { + guard let groupOwner = groupJoined.groupOwner.cryptoIdentity else { assertionFailure(); return nil } + return .init(groupUid: groupUid, groupOwner: ObvCryptoId(cryptoIdentity: groupOwner)) + } else if self is ContactGroupOwned { + return .init(groupUid: groupUid, groupOwner: ObvCryptoId(cryptoIdentity: ownedIdentity.cryptoIdentity)) + } else { + assertionFailure() + return nil + } + } + +} + + +// MARK: - For Snapshot purposes + + +extension ContactGroup { + + var syncSnapshot: ContactGroupSyncSnapshotNode { + .init(groupMembersVersion: groupMembersVersion, + groupMembers: groupMembers, + pendingGroupMembers: pendingGroupMembers, + publishedDetails: publishedDetails, + trustedDetails: (self as? ContactGroupJoined)?.trustedDetails, + latestDetails: (self as? ContactGroupOwned)?.latestDetails) + } + +} + + +struct ContactGroupSyncSnapshotNode: ObvSyncSnapshotNode { + + private let domain: Set + private let publishedDetails: ContactGroupDetailsSyncSnapshotNode? + private let trustedDetails: ContactGroupDetailsSyncSnapshotNode? // Not for owned groups + private let latestDetails: ContactGroupDetailsSyncSnapshotNode? // Not for joined groups, not used under Android, not serialized + let groupMembersVersion: Int? + private let groupMembers: Set + private let pendingGroupMembers: [ObvCryptoIdentity: PendingGroupMemberSyncSnapshotItem] + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case publishedDetails = "published_details" + case trustedDetails = "trusted_details" + case groupMembersVersion = "group_members_version" + case groupMembers = "members" + case pendingGroupMembers = "pending_members" + case domain = "domain" + } + + + private static let defaultDomainForGroupOwned = Set(CodingKeys.allCases.filter({ $0 != .domain && $0 != .trustedDetails })) + private static let defaultDomainForGroupJoined = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + fileprivate init(groupMembersVersion: Int, groupMembers: Set, pendingGroupMembers: Set, publishedDetails: ContactGroupDetailsPublished, trustedDetails: ContactGroupDetailsTrusted?, latestDetails: ContactGroupDetailsLatest?) { + self.publishedDetails = publishedDetails.syncSnapshot + if let trustedDetails, trustedDetails.version != publishedDetails.version { + self.trustedDetails = trustedDetails.syncSnapshot + } else { + self.trustedDetails = nil + } + self.latestDetails = latestDetails?.syncSnapshot + self.groupMembersVersion = groupMembersVersion + self.groupMembers = Set(groupMembers.compactMap({ $0.cryptoIdentity })) + do { + let pairs: [(ObvCryptoIdentity, PendingGroupMemberSyncSnapshotItem)] = pendingGroupMembers.map { ($0.cryptoIdentity, $0.syncSnapshot) } + self.pendingGroupMembers = Dictionary(pairs, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + self.domain = Self.defaultDomainForGroupJoined + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(publishedDetails, forKey: .publishedDetails) + try container.encodeIfPresent(trustedDetails, forKey: .trustedDetails) + try container.encodeIfPresent(groupMembersVersion, forKey: .groupMembersVersion) + try container.encode(groupMembers.map({ $0.getIdentity() }), forKey: .groupMembers) + // Encode pendingGroupMembers using ObvCryptoIdentity as JSON keys + do { + let dict: [String: PendingGroupMemberSyncSnapshotItem] = .init(pendingGroupMembers, keyMapping: { $0.getIdentity().base64EncodedString() }, valueMapping: { $0 }) + try container.encode(dict, forKey: .pendingGroupMembers) + } + try container.encode(domain, forKey: .domain) + } + + + init(from decoder: Decoder) throws { + do { + let values = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.groupMembersVersion = try values.decodeIfPresent(Int.self, forKey: .groupMembersVersion) + self.groupMembers = Set((try values.decodeIfPresent([Data].self, forKey: .groupMembers) ?? [Data]()).compactMap({ ObvCryptoIdentity(from: $0) })) + // Decode pendingGroupMembers using ObvCryptoIdentity as JSON keys + do { + let dict = try values.decodeIfPresent([String: PendingGroupMemberSyncSnapshotItem].self, forKey: .pendingGroupMembers) ?? [:] + self.pendingGroupMembers = .init(dict, keyMapping: { $0.base64EncodedToData?.identityToObvCryptoIdentity }, valueMapping: { $0 }) + } + // Special treatment for details. + // At this point, we don't know whether we are decoding a snapshot concerning an owned or a joined group, so we need to consider both cases. + do { + let publishedDetailsFromJSON = try values.decodeIfPresent(ContactGroupDetailsSyncSnapshotNode.self, forKey: .publishedDetails) + let trustedDetailsFromJSON = try values.decodeIfPresent(ContactGroupDetailsSyncSnapshotNode.self, forKey: .trustedDetails) + self.publishedDetails = publishedDetailsFromJSON ?? trustedDetailsFromJSON?.copyWithNewId() + self.trustedDetails = trustedDetailsFromJSON ?? publishedDetailsFromJSON?.copyWithNewId() + self.latestDetails = publishedDetailsFromJSON?.copyWithNewId() // Will be ignored if the group is joined + } + } catch { + assertionFailure() + throw error + } + } + + + func restoreInstance(within obvContext: ObvContext, ownedCryptoIdentity: ObvCryptoIdentity, groupV1Identifier: GroupV1Identifier, associations: inout SnapshotNodeManagedObjectAssociations) throws { + + let minimumDomain: Set + do { + let commonMinimumDomain: Set = Set([.groupMembersVersion, .groupMembers, .pendingGroupMembers]) + if ownedCryptoIdentity == groupV1Identifier.groupOwner.cryptoIdentity { + // Owned group + minimumDomain = commonMinimumDomain.union(Set([.publishedDetails])) + } else { + // Joined group + minimumDomain = commonMinimumDomain.union(Set([.trustedDetails])) + } + } + + guard minimumDomain.isSubset(of: domain) else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteNode + } + + // Details + + if ownedCryptoIdentity == groupV1Identifier.groupOwner.cryptoIdentity { + + // Owned group need both published and latest details + + guard let publishedDetails, let latestDetails else { + throw ObvError.tryingToRestoreIncompleteNode + } + + let contactGroupOwned = try ContactGroupOwned(snapshotNode: self, groupUid: groupV1Identifier.groupUid, within: obvContext) + try associations.associate(contactGroupOwned, to: self) + + try publishedDetails.restoreContactGroupDetailsPublishedInstance(within: obvContext, associations: &associations) + try latestDetails.restoreContactGroupDetailsLatestInstance(within: obvContext, associations: &associations) + + } else { + + // Joined group need both published and trusted details + + guard let publishedDetails, let trustedDetails else { + throw ObvError.tryingToRestoreIncompleteNode + } + + let contactGroupJoined = try ContactGroupJoined(snapshotNode: self, groupUid: groupV1Identifier.groupUid, within: obvContext) + try associations.associate(contactGroupJoined, to: self) + + try publishedDetails.restoreContactGroupDetailsPublishedInstance(within: obvContext, associations: &associations) + try trustedDetails.restoreContactGroupDetailsTrustedInstance(within: obvContext, associations: &associations) + + } + + // Group members do not need to be restored here: they are restored as contacts and will eventually be included in the associations + + // pending members + + if domain.contains(.pendingGroupMembers) { + try pendingGroupMembers.forEach { (cryptoIdentity, snapshotItem) in + try snapshotItem.restoreInstance(within: obvContext, cryptoIdentity: cryptoIdentity, associations: &associations) + } + } + + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, groupV1Identifier: GroupV1Identifier, contactIdentities: [ObvCryptoIdentity: ContactIdentity], within obvContext: ObvContext) throws { + + let contactGroup: ContactGroup = try associations.getObject(associatedTo: self, within: obvContext) + + // Restore the relationships of this instance + + let groupMembers: Set = Set(try self.groupMembers.map { contactCryptoIdentity in + guard let contactIdentity = contactIdentities[contactCryptoIdentity] else { + throw ObvError.groupMemberNotFoundInContacts + } + return contactIdentity + }) + + let pendingGroupMembers: Set = Set(try self.pendingGroupMembers.values.map { try associations.getObject(associatedTo: $0, within: obvContext) }) + + if let contactGroupOwned = contactGroup as? ContactGroupOwned { + + // Owned group need both published and latest details + + guard let publishedDetails, let latestDetails else { + throw ObvError.tryingToRestoreIncompleteNode + } + + let contactGroupDetailsPublished: ContactGroupDetailsPublished = try associations.getObject(associatedTo: publishedDetails, within: obvContext) + let contactGroupDetailsLatest: ContactGroupDetailsLatest = try associations.getObject(associatedTo: latestDetails, within: obvContext) + + contactGroupOwned.restoreRelationshipsOfContactGroupOwned( + latestDetails: contactGroupDetailsLatest, + groupMembers: groupMembers, + pendingGroupMembers: pendingGroupMembers, + publishedDetails: contactGroupDetailsPublished) + + // Restore the relationships of this instance relationships + + try publishedDetails.restoreRelationships(associations: associations, within: obvContext) + try latestDetails.restoreRelationships(associations: associations, within: obvContext) + + } else if let contactGroupJoined = contactGroup as? ContactGroupJoined { + + // Joined group need both published and trusted details + + guard let publishedDetails, let trustedDetails else { + throw ObvError.tryingToRestoreIncompleteNode + } + + let contactGroupDetailsPublished: ContactGroupDetailsPublished = try associations.getObject(associatedTo: publishedDetails, within: obvContext) + let contactGroupDetailsTrusted: ContactGroupDetailsTrusted = try associations.getObject(associatedTo: trustedDetails, within: obvContext) + + guard let groupOwner = contactIdentities[groupV1Identifier.groupOwner.cryptoIdentity] else { + assertionFailure() + throw ObvError.groupOwnerNotFoundInContacts + } + + contactGroupJoined.restoreRelationshipsOfContactGroupJoined( + groupOwner: groupOwner, + trustedDetails: contactGroupDetailsTrusted, + groupMembers: groupMembers, + pendingGroupMembers: pendingGroupMembers, + publishedDetails: contactGroupDetailsPublished) + + // Restore the relationships of this instance relationships + + try publishedDetails.restoreRelationships(associations: associations, within: obvContext) + try trustedDetails.restoreRelationships(associations: associations, within: obvContext) + + } + + try self.pendingGroupMembers.forEach { (cryptoIdentity, pendingMemberNode) in + try pendingMemberNode.restoreRelationships(associations: associations, within: obvContext) + } + + } + + + enum ObvError: Error { + case groupMemberNotFoundInContacts + case groupOwnerNotFoundInContacts + case tryingToRestoreIncompleteNode + } + +} + + +// MARK: - Private Helpers + +private extension String { + + var base64EncodedToData: Data? { + guard let data = Data(base64Encoded: self) else { assertionFailure(); return nil } + return data + } + +} + + +private extension Data { + + var identityToObvCryptoIdentity: ObvCryptoIdentity? { + guard let cryptoIdentity = ObvCryptoIdentity(from: self) else { assertionFailure(); return nil } + return cryptoIdentity + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetails.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetails.swift index 91a8d657..aa3d5e82 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetails.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetails.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -79,9 +79,15 @@ class ContactGroupDetails: NSManagedObject, ObvManagedObject { var obvContext: ObvContext? func getPhotoURL(identityPhotosDirectory: URL) -> URL? { + guard let url = getRawPhotoURL(identityPhotosDirectory: identityPhotosDirectory) else { return nil } + guard FileManager.default.fileExists(atPath: url.path) else { assertionFailure(); return nil } + return url + } + + + private func getRawPhotoURL(identityPhotosDirectory: URL) -> URL? { guard let photoFilename = photoFilename else { return nil } let url = identityPhotosDirectory.appendingPathComponent(photoFilename) - guard FileManager.default.fileExists(atPath: url.path) else { assertionFailure(); return nil } return url } @@ -122,6 +128,24 @@ extension ContactGroupDetails { } + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + convenience init(snapshotNode: ContactGroupDetailsSyncSnapshotNode, forEntityName entityName: String, within obvContext: ObvContext) { + let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + if let photoServerKeyEncodedRaw = snapshotNode.photoServerKeyEncoded, + let photoServerKeyEncoded = ObvEncoded(withRawData: photoServerKeyEncodedRaw), + let label = snapshotNode.photoServerLabel, + let key = try? AuthenticatedEncryptionKeyDecoder.decode(photoServerKeyEncoded) { + self.photoServerKeyAndLabel = PhotoServerKeyAndLabel(key: key, label: label) + } else { + self.photoServerKeyAndLabel = nil + } + self.photoFilename = nil // It is ok not to call setPhotoURL(...) here + self.serializedCoreDetails = snapshotNode.serializedCoreDetails + self.version = snapshotNode.version + } + + func delete(identityPhotosDirectory: URL, within obvContext: ObvContext) throws { if let currentPhotoURL = self.getPhotoURL(identityPhotosDirectory: identityPhotosDirectory) { try obvContext.addContextDidSaveCompletionHandler { error in @@ -192,20 +216,20 @@ extension ContactGroupDetails { ObvIdentityNotificationNew.latestPhotoOfContactGroupOwnedHasBeenUpdated(groupUid: latestDetails.contactGroupOwned.groupUid, ownedIdentity: latestDetails.contactGroupOwned.ownedIdentity.cryptoIdentity) .postOnBackgroundQueue(within: notificationDelegate) - } else if let trustedDetails = self as? ContactGroupDetailsTrusted { + } else if let trustedDetails = self as? ContactGroupDetailsTrusted, let groupOwner = trustedDetails.contactGroupJoined.groupOwner.cryptoIdentity { ObvIdentityNotificationNew.trustedPhotoOfContactGroupJoinedHasBeenUpdated(groupUid: trustedDetails.contactGroupJoined.groupUid, ownedIdentity: trustedDetails.contactGroupJoined.ownedIdentity.cryptoIdentity, - groupOwner: trustedDetails.contactGroupJoined.groupOwner.cryptoIdentity) + groupOwner: groupOwner) .postOnBackgroundQueue(within: notificationDelegate) } else if let publishedDetails = self as? ContactGroupDetailsPublished { if let ownedGroup = publishedDetails.contactGroup as? ContactGroupOwned { ObvIdentityNotificationNew.publishedPhotoOfContactGroupOwnedHasBeenUpdated(groupUid: ownedGroup.groupUid, ownedIdentity: ownedGroup.ownedIdentity.cryptoIdentity) .postOnBackgroundQueue(within: notificationDelegate) - } else if let joinedGroup = publishedDetails.contactGroup as? ContactGroupJoined { + } else if let joinedGroup = publishedDetails.contactGroup as? ContactGroupJoined, let groupOwner = joinedGroup.groupOwner.cryptoIdentity { ObvIdentityNotificationNew.publishedPhotoOfContactGroupJoinedHasBeenUpdated(groupUid: joinedGroup.groupUid, ownedIdentity: joinedGroup.ownedIdentity.cryptoIdentity, - groupOwner: joinedGroup.groupOwner.cryptoIdentity) + groupOwner: groupOwner) .postOnBackgroundQueue(within: notificationDelegate) } else { assertionFailure() @@ -286,6 +310,9 @@ extension ContactGroupDetails { static var withoutPhotoFilename: NSPredicate { NSPredicate(withNilValueForKey: Key.photoFilename) } + static var withPhotoFilename: NSPredicate { + NSPredicate(withNonNilValueForKey: Key.photoFilename) + } static var withPhotoServerKey: NSPredicate { NSPredicate(withNonNilValueForKey: Key.photoServerKeyEncoded) } @@ -299,6 +326,57 @@ extension ContactGroupDetails { ]) } } + + + static func getInfosAboutGroupsHavingPhotoFilename(identityPhotosDirectory: URL, within obvContext: ObvContext) throws -> [(ownedIdentity: ObvCryptoIdentity, groupInformation: GroupInformation, photoURL: URL)] { + let request: NSFetchRequest = ContactGroupDetails.fetchRequest() + request.predicate = Predicate.withPhotoFilename + let items = try obvContext.fetch(request) + let results: [(ownedIdentity: ObvCryptoIdentity, groupInformation: GroupInformation, photoURL: URL)] = items.compactMap { details in + + guard let photoURL = details.getRawPhotoURL(identityPhotosDirectory: identityPhotosDirectory), + let contactGroup = try? details.getContactGroup(), + let coreDetails = try? ObvGroupCoreDetails(details.serializedCoreDetails), + let photoServerKeyAndLabel = details.photoServerKeyAndLabel else { + return nil + } + + let ownedIdentity = contactGroup.ownedIdentity.cryptoIdentity + + let groupDetailsElements = GroupDetailsElements( + version: details.version, + coreDetails: coreDetails, + photoServerKeyAndLabel: photoServerKeyAndLabel) + + if let contactGroupOwned = contactGroup as? ContactGroupOwned { + + guard let groupInformation = try? GroupInformation( + groupOwnerIdentity: contactGroupOwned.ownedIdentity.cryptoIdentity, + groupUid: contactGroupOwned.groupUid, + groupDetailsElements: groupDetailsElements) else { + return nil + } + return (ownedIdentity, groupInformation, photoURL) + + } else if let contactGroupJoined = contactGroup as? ContactGroupJoined { + + guard let groupOwnerIdentity = contactGroupJoined.groupOwner.cryptoIdentity else { return nil } + guard let groupInformation = try? GroupInformation( + groupOwnerIdentity: groupOwnerIdentity, + groupUid: contactGroupJoined.groupUid, + groupDetailsElements: groupDetailsElements) else { + return nil + } + return (ownedIdentity, groupInformation, photoURL) + + } else { + assertionFailure() + return nil + } + } + return results + } + static func getAllPhotoURLs(identityPhotosDirectory: URL, within obvContext: ObvContext) throws -> Set { let request: NSFetchRequest = ContactGroupDetails.fetchRequest() @@ -448,3 +526,156 @@ struct ContactGroupDetailsBackupItem: Codable, Hashable { } } + + +// MARK: - For Snapshot purposes + +extension ContactGroupDetails { + + var syncSnapshot: ContactGroupDetailsSyncSnapshotNode { + return .init(photoServerKeyEncoded: photoServerKeyEncoded, + photoServerLabel: photoServerLabel, + serializedCoreDetails: serializedCoreDetails, + version: version) + } + +} + + +struct ContactGroupDetailsSyncSnapshotNode: ObvSyncSnapshotNode { + + fileprivate let version: Int + fileprivate let serializedCoreDetails: Data + fileprivate let photoServerLabel: UID? + fileprivate let photoServerKeyEncoded: Data? + private let domain: Set + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case photoServerKeyEncoded = "photo_server_key" + case photoServerLabel = "photo_server_label" + case serializedCoreDetails = "serialized_details" + case version = "version" + case domain = "domain" + } + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + fileprivate init(photoServerKeyEncoded: Data?, photoServerLabel: UID?, serializedCoreDetails: Data, version: Int) { + self.photoServerKeyEncoded = photoServerKeyEncoded + self.photoServerLabel = photoServerLabel + self.serializedCoreDetails = serializedCoreDetails + self.version = version + self.domain = Self.defaultDomain + } + + + /// Sometimes, we use (e.g.) published snapshoted details to create published details *and* trusted details. In that case, we want two distinct nodes (different ids), but with identical other values. + /// This method allows to create such a copy. + func copyWithNewId() -> ContactGroupDetailsSyncSnapshotNode { + .init(photoServerKeyEncoded: photoServerKeyEncoded, + photoServerLabel: photoServerLabel, + serializedCoreDetails: serializedCoreDetails, + version: version) + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(photoServerKeyEncoded, forKey: .photoServerKeyEncoded) + try container.encodeIfPresent(photoServerLabel?.raw, forKey: .photoServerLabel) + guard let serializedCoreDetailsAsString = String(data: serializedCoreDetails, encoding: .utf8) else { + throw ObvError.couldNotRepresentSerializedCoreDetailsAsString + } + try container.encode(serializedCoreDetailsAsString, forKey: .serializedCoreDetails) + try container.encode(version, forKey: .version) + try container.encode(domain, forKey: .domain) + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + + guard domain.contains(.version) && domain.contains(.serializedCoreDetails) else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteSnapshot + } + + if domain.contains(.photoServerLabel) && domain.contains(.photoServerKeyEncoded) && values.allKeys.contains(.photoServerLabel) && values.allKeys.contains(.photoServerKeyEncoded) { + do { + self.photoServerKeyEncoded = try values.decode(Data.self, forKey: .photoServerKeyEncoded) + if let photoServerLabelAsData = try? values.decodeIfPresent(Data.self, forKey: .photoServerLabel), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + // Expected + self.photoServerLabel = photoServerLabelAsUID + } else if let photoServerLabelAsUID = try values.decodeIfPresent(UID.self, forKey: .photoServerLabel) { + assertionFailure() + self.photoServerLabel = photoServerLabelAsUID + } else if let photoServerLabelAsString = try? values.decode(String.self, forKey: .photoServerLabel), + let photoServerLabelAsData = Data(base64Encoded: photoServerLabelAsString), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + assertionFailure() + self.photoServerLabel = photoServerLabelAsUID + } else if let photoServerLabelAsString = try? values.decode(String.self, forKey: .photoServerLabel), + let photoServerLabelAsData = Data(hexString: photoServerLabelAsString), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + assertionFailure() + self.photoServerLabel = photoServerLabelAsUID + } else { + assertionFailure() + throw ObvError.couldNotDecodePhotoServerLabel + } + } catch { + assertionFailure() + throw error + } + } else { + self.photoServerKeyEncoded = nil + self.photoServerLabel = nil + } + + let serializedCoreDetailsAsString = try values.decode(String.self, forKey: .serializedCoreDetails) + guard let serializedCoreDetailsAsData = serializedCoreDetailsAsString.data(using: .utf8) else { + throw ObvError.couldNotRepresentSerializedCoreDetailsAsData + } + self.serializedCoreDetails = serializedCoreDetailsAsData + self.version = try values.decode(Int.self, forKey: .version) + } + + + func restoreContactGroupDetailsLatestInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + let contactGroupDetailsLatest = ContactGroupDetailsLatest(snapshotNode: self, within: obvContext) + try associations.associate(contactGroupDetailsLatest, to: self) + } + + + func restoreContactGroupDetailsPublishedInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + let contactGroupDetailsPublished = ContactGroupDetailsPublished(snapshotNode: self, with: obvContext) + try associations.associate(contactGroupDetailsPublished, to: self) + } + + + func restoreContactGroupDetailsTrustedInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + let contactGroupDetailsTrusted = ContactGroupDetailsTrusted(snapshotNode: self, within: obvContext) + try associations.associate(contactGroupDetailsTrusted, to: self) + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + // Nothing to do + } + + + enum ObvError: Error { + case couldNotRepresentSerializedCoreDetailsAsString + case tryingToRestoreIncompleteSnapshot + case couldNotDecodePhotoServerLabel + case couldNotRepresentSerializedCoreDetailsAsData + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsLatest.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsLatest.swift index cdaea98f..0705facd 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsLatest.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsLatest.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -54,7 +54,7 @@ final class ContactGroupDetailsLatest: ContactGroupDetails { convenience init(contactGroupOwned: ContactGroupOwned, groupDetailsElementsWithPhoto: GroupDetailsElementsWithPhoto, delegateManager: ObvIdentityDelegateManager) throws { guard let obvContext = contactGroupOwned.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroupDetailsLatest.errorDomain) + throw ObvIdentityManagerError.contextIsNil } try self.init(groupDetailsElementsWithPhoto: groupDetailsElementsWithPhoto, @@ -71,4 +71,10 @@ final class ContactGroupDetailsLatest: ContactGroupDetails { self.init(backupItem: backupItem, forEntityName: ContactGroupDetailsLatest.entityName, within: obvContext) } + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + convenience init(snapshotNode: ContactGroupDetailsSyncSnapshotNode, within obvContext: ObvContext) { + self.init(snapshotNode: snapshotNode, forEntityName: ContactGroupDetailsLatest.entityName, within: obvContext) + } + } diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsPublished.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsPublished.swift index c399d180..c4ed2336 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsPublished.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsPublished.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -54,7 +54,7 @@ final class ContactGroupDetailsPublished: ContactGroupDetails { convenience init(contactGroup: ContactGroup, groupDetailsElementsWithPhoto: GroupDetailsElementsWithPhoto, delegateManager: ObvIdentityDelegateManager) throws { guard let obvContext = contactGroup.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroupDetailsPublished.errorDomain) + throw ObvIdentityManagerError.contextIsNil } try self.init(groupDetailsElementsWithPhoto: groupDetailsElementsWithPhoto, @@ -71,4 +71,10 @@ final class ContactGroupDetailsPublished: ContactGroupDetails { self.init(backupItem: backupItem, forEntityName: ContactGroupDetailsPublished.entityName, within: obvContext) } + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + convenience init(snapshotNode: ContactGroupDetailsSyncSnapshotNode, with obvContext: ObvContext) { + self.init(snapshotNode: snapshotNode, forEntityName: ContactGroupDetailsPublished.entityName, within: obvContext) + } + } diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsTrusted.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsTrusted.swift index 6dcc0600..a5ef8aea 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsTrusted.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupDetailsTrusted.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -54,7 +54,7 @@ final class ContactGroupDetailsTrusted: ContactGroupDetails { convenience init(contactGroupJoined: ContactGroupJoined, groupDetailsElementsWithPhoto: GroupDetailsElementsWithPhoto, delegateManager: ObvIdentityDelegateManager) throws { guard let obvContext = contactGroupJoined.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroupDetailsTrusted.errorDomain) + throw ObvIdentityManagerError.contextIsNil } try self.init(groupDetailsElementsWithPhoto: groupDetailsElementsWithPhoto, @@ -71,4 +71,9 @@ final class ContactGroupDetailsTrusted: ContactGroupDetails { self.init(backupItem: backupItem, forEntityName: ContactGroupDetailsTrusted.entityName, within: obvContext) } + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + convenience init(snapshotNode: ContactGroupDetailsSyncSnapshotNode, within obvContext: ObvContext) { + self.init(snapshotNode: snapshotNode, forEntityName: ContactGroupDetailsTrusted.entityName, within: obvContext) + } + } diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupJoined.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupJoined.swift index 662f6f70..ad01f430 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupJoined.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupJoined.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -34,7 +34,7 @@ final class ContactGroupJoined: ContactGroup, ObvErrorMaker { static let errorDomain = String(describing: ContactGroupJoined.self) private static let groupOwnerKey = "groupOwner" private static let trustedDetailsKey = "trustedDetails" - private static let groupOwnerCryptoIdentityKey = [groupOwnerKey, ContactIdentity.cryptoIdentityKey].joined(separator: ".") + private static let groupOwnerIdentityKey = [groupOwnerKey, ContactIdentity.Predicate.Key.rawIdentity.rawValue].joined(separator: ".") // MARK: Relationships @@ -69,7 +69,7 @@ final class ContactGroupJoined: ContactGroup, ObvErrorMaker { convenience init(groupInformation: GroupInformation, ownedIdentity: ObvCryptoIdentity, groupOwnerCryptoIdentity: ObvCryptoIdentity, pendingGroupMembers: Set, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { guard let groupOwner = try ContactIdentity.get(contactIdentity: groupInformation.groupOwnerIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: ContactGroupJoined.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let ownedIdentity = groupOwner.ownedIdentity else { @@ -77,14 +77,19 @@ final class ContactGroupJoined: ContactGroup, ObvErrorMaker { } guard try ContactGroupJoined.get(groupUid: groupInformation.groupUid, groupOwnerCryptoIdentity: groupInformation.groupOwnerIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager) == nil else { - throw ObvIdentityManagerError.tryingToCreateContactGroupThatAlreadyExists.error(withDomain: ContactGroupJoined.errorDomain) + throw ObvIdentityManagerError.tryingToCreateContactGroupThatAlreadyExists + } + + guard let groupOwnerCryptoIdentity = groupOwner.cryptoIdentity else { + assertionFailure() + throw Self.makeError(message: "Could not get group owner crypto identity") } let groupInformationWithPhoto = GroupInformationWithPhoto(groupInformation: groupInformation, photoURL: nil) // Note that this will include inactive contacts in the group members. There is not much we can do. try self.init(groupInformationWithPhoto: groupInformationWithPhoto, ownedIdentity: ownedIdentity, - groupMembers: Set([groupOwner.cryptoIdentity]), + groupMembers: Set([groupOwnerCryptoIdentity]), pendingGroupMembers: pendingGroupMembers, delegateManager: delegateManager, forEntityName: ContactGroupJoined.entityName) @@ -105,6 +110,8 @@ final class ContactGroupJoined: ContactGroup, ObvErrorMaker { within: obvContext) } + + /// Used when restoring a backup fileprivate func restoreRelationshipsOfContactGroupJoined(trustedDetails: ContactGroupDetailsTrusted, groupMembers: Set, pendingGroupMembers: Set, publishedDetails: ContactGroupDetailsPublished) { /* groupOwner is set within ContactIdentity */ self.trustedDetails = trustedDetails @@ -113,13 +120,51 @@ final class ContactGroupJoined: ContactGroup, ObvErrorMaker { publishedDetails: publishedDetails) } + + /// Used when restoring a snapshot + func restoreRelationshipsOfContactGroupJoined(groupOwner: ContactIdentity, trustedDetails: ContactGroupDetailsTrusted, groupMembers: Set, pendingGroupMembers: Set, publishedDetails: ContactGroupDetailsPublished) { + self.groupOwner = groupOwner + self.trustedDetails = trustedDetails + self.restoreRelationshipsOfContactGroup(groupMembers: groupMembers, + pendingGroupMembers: pendingGroupMembers, + publishedDetails: publishedDetails) + } + + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + convenience init(snapshotNode: ContactGroupSyncSnapshotNode, groupUid: UID, within obvContext: ObvContext) throws { + guard let groupMembersVersion = snapshotNode.groupMembersVersion else { + assertionFailure() + throw ContactGroupSyncSnapshotNode.ObvError.tryingToRestoreIncompleteNode + } + self.init(groupMembersVersion: groupMembersVersion, + groupUid: groupUid, + forEntityName: ContactGroupJoined.entityName, + within: obvContext) + } + + func updatePhoto(withData photoData: Data, ofDetailsWithVersion version: Int, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { + if self.publishedDetails.version == version { try self.publishedDetails.setGroupPhoto(data: photoData, delegateManager: delegateManager) } - if self.trustedDetails.version == version { + + // In the following, if the photo was ok for the published details and if publishedDetails.photoServerLabel == trustedDetails.photoServerLabel, we use the photo for the trusted details. + // Note that the equality test between keys and labels does deserialize keys to compare them. + + let trustedDetailsCanUseSamePhotoThanPublishedDetails: Bool + if let tskl = self.trustedDetails.photoServerKeyAndLabel, let pskl = self.publishedDetails.photoServerKeyAndLabel, tskl == pskl, + self.publishedDetails.version == version { + trustedDetailsCanUseSamePhotoThanPublishedDetails = true + } else { + trustedDetailsCanUseSamePhotoThanPublishedDetails = false + } + + if self.trustedDetails.version == version || trustedDetailsCanUseSamePhotoThanPublishedDetails { try self.trustedDetails.setGroupPhoto(data: photoData, delegateManager: delegateManager) } + } @@ -141,10 +186,8 @@ extension ContactGroupJoined { guard groupMembersVersion > self.groupMembersVersion else { return } - let errorDomain = ContactGroupJoined.errorDomain - guard let obvContext = self.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: errorDomain) + throw ObvIdentityManagerError.contextIsNil } // Check that no identity appears both within the (new) pending members and the (new) group members @@ -153,7 +196,7 @@ extension ContactGroupJoined { let groupMemberIdentitiesNew = Set(groupMembersWithCoreDetails.map { $0.cryptoIdentity }) let pendingGroupMemberIdentitiesNew = Set(pendingMembersWithCoreDetails.map { $0.cryptoIdentity }) guard groupMemberIdentitiesNew.intersection(pendingGroupMemberIdentitiesNew).isEmpty else { - throw ObvIdentityManagerError.anIdentityAppearsBothWithinPendingMembersAndGroupMembers.error(withDomain: errorDomain) + throw ObvIdentityManagerError.anIdentityAppearsBothWithinPendingMembersAndGroupMembers } } @@ -166,7 +209,11 @@ extension ContactGroupJoined { return contact } else { // The identity is not a contact yet, we create the contact and insert it in the list of group members - let trustOrigin = TrustOrigin.group(timestamp: Date(), groupOwner: groupOwner.cryptoIdentity) + guard let groupOwnerCryptoIdentity = groupOwner.cryptoIdentity else { + assertionFailure() + throw Self.makeError(message: "Could not get group owner crypto identity") + } + let trustOrigin = TrustOrigin.group(timestamp: Date(), groupOwner: groupOwnerCryptoIdentity) guard let contact = ContactIdentity(cryptoIdentity: groupMemberWithCoreDetails.cryptoIdentity, identityCoreDetails: groupMemberWithCoreDetails.coreDetails, trustOrigin: trustOrigin, @@ -174,7 +221,7 @@ extension ContactGroupJoined { isOneToOne: false, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.contactCreationFailed.error(withDomain: errorDomain) + throw ObvIdentityManagerError.contactCreationFailed } return contact } @@ -224,7 +271,11 @@ extension ContactGroupJoined { func getPublishedJoinedGroupInformation() throws -> GroupInformation { let groupDetailsElements = try publishedDetails.getGroupDetailsElements() - let groupInformation = try GroupInformation(groupOwnerIdentity: groupOwner.cryptoIdentity, + guard let groupOwnerCryptoIdentity = groupOwner.cryptoIdentity else { + assertionFailure() + throw Self.makeError(message: "Could not get group owner crypto identity") + } + let groupInformation = try GroupInformation(groupOwnerIdentity: groupOwnerCryptoIdentity, groupUid: groupUid, groupDetailsElements: groupDetailsElements) return groupInformation @@ -242,7 +293,11 @@ extension ContactGroupJoined { func getTrustedJoinedGroupInformation() throws -> GroupInformation { let groupDetailsElements = try trustedDetails.getGroupDetailsElements() - let groupInformation = try GroupInformation(groupOwnerIdentity: groupOwner.cryptoIdentity, + guard let groupOwnerCryptoIdentity = groupOwner.cryptoIdentity else { + assertionFailure() + throw Self.makeError(message: "Could not get group owner crypto identity") + } + let groupInformation = try GroupInformation(groupOwnerIdentity: groupOwnerCryptoIdentity, groupUid: groupUid, groupDetailsElements: groupDetailsElements) return groupInformation @@ -258,10 +313,9 @@ extension ContactGroupJoined { func trustDetailsPublished(within obvContext: ObvContext, delegateManager: ObvIdentityDelegateManager) throws { - let errorDomain = ContactGroupJoined.errorDomain - guard publishedDetails.version > trustedDetails.version else { - throw ObvIdentityManagerError.invalidGroupDetailsVersion.error(withDomain: errorDomain) - } + // guard publishedDetails.version > trustedDetails.version else { + // throw ObvIdentityManagerError.invalidGroupDetailsVersion + // } let groupDetailsElementsWithPhoto = try publishedDetails.getGroupDetailsElementsWithPhoto(identityPhotosDirectory: delegateManager.identityPhotosDirectory) try self.trustedDetails.delete(identityPhotosDirectory: delegateManager.identityPhotosDirectory, within: obvContext) _ = try ContactGroupDetailsTrusted(contactGroupJoined: self, @@ -306,12 +360,17 @@ extension ContactGroupJoined { func getJoinedGroupStructure(identityPhotosDirectory: URL) throws -> GroupStructure { - let groupMembers = Set(self.groupMembers.map { $0.cryptoIdentity }) + let groupMembers = Set(self.groupMembers.compactMap { $0.cryptoIdentity }) let pendingGroupMembers = self.getPendingGroupMembersWithCoreDetails() let groupMembersVersion = self.groupMembersVersion let publishedGroupDetailsWithPhoto = try self.publishedDetails.getGroupDetailsElementsWithPhoto(identityPhotosDirectory: identityPhotosDirectory) let trustedGroupDetails = try self.trustedDetails.getGroupDetailsElementsWithPhoto(identityPhotosDirectory: identityPhotosDirectory) + guard let groupOwnerCryptoIdentity = groupOwner.cryptoIdentity else { + assertionFailure() + throw Self.makeError(message: "Could not get group owner crypto identity") + } + let groupStructure = GroupStructure.createJoinedGroupStructure( groupUid: groupUid, publishedGroupDetailsWithPhoto: publishedGroupDetailsWithPhoto, @@ -320,7 +379,7 @@ extension ContactGroupJoined { groupMembers: groupMembers, pendingGroupMembers: pendingGroupMembers, groupMembersVersion: groupMembersVersion, - groupOwner: self.groupOwner.cryptoIdentity) + groupOwner: groupOwnerCryptoIdentity) return groupStructure @@ -329,6 +388,31 @@ extension ContactGroupJoined { } +// MARK: - Processing sync Atoms + +extension ContactGroupJoined { + + func processTrustGroupV1DetailsSyncAtom(serializedGroupDetailsElements: Data, delegateManager: ObvIdentityDelegateManager) throws { + + guard let obvContext else { + assertionFailure() + throw ObvIdentityManagerError.contextIsNil + } + + let atomGroupDetailsElements = try GroupDetailsElements(serializedGroupDetailsElements) + let localPublishedGroupDetailsElements = try self.publishedDetails.getGroupDetailsElements() + + // We compare the details that the owned identity trusted on another owned device with the local, published details for the group (without considering versions). + // If there is a match, we can immediately trust the local published details + if atomGroupDetailsElements.fieldsAreTheSameButVersionIsNotConsidered(than: localPublishedGroupDetailsElements) { + try trustDetailsPublished(within: obvContext, delegateManager: delegateManager) + } + + } + +} + + // MARK: - Convenience DB getters extension ContactGroupJoined { @@ -339,12 +423,12 @@ extension ContactGroupJoined { static func get(groupUid: UID, groupOwnerCryptoIdentity: ObvCryptoIdentity, ownedIdentity: OwnedIdentity, delegateManager: ObvIdentityDelegateManager) throws -> ContactGroupJoined? { guard let obvContext = ownedIdentity.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroupJoined.errorDomain) + throw ObvIdentityManagerError.contextIsNil } let request: NSFetchRequest = ContactGroupJoined.fetchRequest() request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %@", ContactGroup.groupUidKey, groupUid, - ContactGroupJoined.groupOwnerCryptoIdentityKey, groupOwnerCryptoIdentity, + ContactGroupJoined.groupOwnerIdentityKey, groupOwnerCryptoIdentity.getIdentity() as NSData, ContactGroup.ownedIdentityKey, ownedIdentity) request.fetchLimit = 1 let item = (try obvContext.fetch(request)).first @@ -377,21 +461,21 @@ extension ContactGroupJoined { return } - if isInserted { + if isInserted, let groupOwnerCryptoIdentity = groupOwner.cryptoIdentity { let NotificationType = ObvIdentityNotification.NewContactGroupJoined.self let userInfo = [NotificationType.Key.groupUid: self.groupUid, - NotificationType.Key.groupOwner: self.groupOwner.cryptoIdentity, + NotificationType.Key.groupOwner: groupOwnerCryptoIdentity, NotificationType.Key.ownedIdentity: self.ownedIdentity.cryptoIdentity] as [String: Any] delegateManager.notificationDelegate.post(name: NotificationType.name, userInfo: userInfo) } - if notificationRelatedChanges.contains(.updatedTrustedDetails) { + if notificationRelatedChanges.contains(.updatedTrustedDetails), let groupOwnerCryptoIdentity = groupOwner.cryptoIdentity { let NotificationType = ObvIdentityNotification.ContactGroupJoinedHasUpdatedTrustedDetails.self let userInfo = [NotificationType.Key.groupUid: self.groupUid, - NotificationType.Key.groupOwner: self.groupOwner.cryptoIdentity, + NotificationType.Key.groupOwner: groupOwnerCryptoIdentity, NotificationType.Key.ownedIdentity: self.ownedIdentity.cryptoIdentity] as [String: Any] delegateManager.notificationDelegate.post(name: NotificationType.name, userInfo: userInfo) @@ -453,7 +537,10 @@ struct ContactGroupJoinedBackupItem: Codable, Hashable { fileprivate init(groupMembersVersion: Int, groupUid: UID, groupMembers: Set, pendingGroupMembers: Set, publishedDetails: ContactGroupDetailsPublished, trustedDetails: ContactGroupDetailsTrusted) { self.groupMembersVersion = groupMembersVersion self.groupUid = groupUid - self.groupMembers = Set(groupMembers.map({ GroupMemberBackupItem(memberIdentity: $0.cryptoIdentity.getIdentity()) })) + self.groupMembers = Set(groupMembers.compactMap { + guard let memberIdentity = $0.cryptoIdentity?.getIdentity() else { assertionFailure(); return nil } + return GroupMemberBackupItem(memberIdentity: memberIdentity) + }) self.pendingGroupMembers = Set(pendingGroupMembers.map { $0.backupItem }) // If the published details are identical to the trusted details, we do not include them in the json file if publishedDetails.version == trustedDetails.version { @@ -524,7 +611,7 @@ struct ContactGroupJoinedBackupItem: Codable, Hashable { do { let allContacts = obvContext.registeredObjects.filter({ $0 is ContactIdentity }) as! Set for groupMember in self.groupMembers { - guard let groupMemberAsContact = allContacts.first(where: { $0.cryptoIdentity.getIdentity() == groupMember.memberIdentity }) else { + guard let groupMemberAsContact = allContacts.first(where: { $0.cryptoIdentity?.getIdentity() == groupMember.memberIdentity }) else { throw ContactGroupJoinedBackupItem.makeError(message: "Could not find the contact identity instance corresponding to the group member") } groupMembers.insert(groupMemberAsContact) diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupOwned.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupOwned.swift index 5dda657a..0ac7c98e 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupOwned.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupOwned.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -60,15 +60,15 @@ final class ContactGroupOwned: ContactGroup { convenience init(groupInformationWithPhoto: GroupInformationWithPhoto, ownedIdentity: ObvCryptoIdentity, pendingGroupMembers: Set, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { guard groupInformationWithPhoto.groupOwnerIdentity == ownedIdentity else { - throw ObvIdentityManagerError.inappropriateGroupInformation.error(withDomain: ContactGroupOwned.errorDomain) + throw ObvIdentityManagerError.inappropriateGroupInformation } guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: ContactGroupOwned.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard try ContactGroupOwned.get(groupUid: groupInformationWithPhoto.groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) == nil else { - throw ObvIdentityManagerError.tryingToCreateContactGroupThatAlreadyExists.error(withDomain: ContactGroupOwned.errorDomain) + throw ObvIdentityManagerError.tryingToCreateContactGroupThatAlreadyExists } try self.init(groupInformationWithPhoto: groupInformationWithPhoto, @@ -92,12 +92,27 @@ final class ContactGroupOwned: ContactGroup { within: obvContext) } - fileprivate func restoreRelationshipsOfContactGroupOwned(latestDetails: ContactGroupDetailsLatest, groupMembers: Set, pendingGroupMembers: Set, publishedDetails: ContactGroupDetailsPublished) { + + func restoreRelationshipsOfContactGroupOwned(latestDetails: ContactGroupDetailsLatest, groupMembers: Set, pendingGroupMembers: Set, publishedDetails: ContactGroupDetailsPublished) { self.latestDetails = latestDetails self.restoreRelationshipsOfContactGroup(groupMembers: groupMembers, pendingGroupMembers: pendingGroupMembers, publishedDetails: publishedDetails) } + + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + convenience init(snapshotNode: ContactGroupSyncSnapshotNode, groupUid: UID, within obvContext: ObvContext) throws { + guard let groupMembersVersion = snapshotNode.groupMembersVersion else { + assertionFailure() + throw ContactGroupSyncSnapshotNode.ObvError.tryingToRestoreIncompleteNode + } + self.init(groupMembersVersion: groupMembersVersion, + groupUid: groupUid, + forEntityName: ContactGroupOwned.entityName, + within: obvContext) + } + func updatePhoto(withData photoData: Data, ofDetailsWithVersion version: Int, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { @@ -121,6 +136,75 @@ final class ContactGroupOwned: ContactGroup { } +// MARK: - Updating the pending and group members + +extension ContactGroupOwned { + + func updatePendingMembersAndGroupMembers(groupMembersWithCoreDetails: Set, pendingMembersWithCoreDetails: Set, groupMembersVersion: Int, delegateManager: ObvIdentityDelegateManager, flowId: FlowIdentifier) throws { + + guard groupMembersVersion > self.groupMembersVersion else { return } + + guard let obvContext = self.obvContext else { + throw ObvIdentityManagerError.contextIsNil + } + + // Check that no identity appears both within the (new) pending members and the (new) group members + + do { + let groupMemberIdentitiesNew = Set(groupMembersWithCoreDetails.map { $0.cryptoIdentity }) + let pendingGroupMemberIdentitiesNew = Set(pendingMembersWithCoreDetails.map { $0.cryptoIdentity }) + guard groupMemberIdentitiesNew.intersection(pendingGroupMemberIdentitiesNew).isEmpty else { + throw ObvIdentityManagerError.anIdentityAppearsBothWithinPendingMembersAndGroupMembers + } + } + + // Create a new version of the group members + + let newVersionOfGroupMembers: Set = Set( try groupMembersWithCoreDetails.compactMap { (groupMemberWithCoreDetails) in + guard groupMemberWithCoreDetails.cryptoIdentity != ownedIdentity.cryptoIdentity else { return nil } + if let contact = try ContactIdentity.get(contactIdentity: groupMemberWithCoreDetails.cryptoIdentity, ownedIdentity: ownedIdentity.cryptoIdentity, delegateManager: delegateManager, within: obvContext) { + // The identity is already a contact, we simply insert it in the list of group members + return contact + } else { + let trustOrigin = TrustOrigin.group(timestamp: Date(), groupOwner: ownedIdentity.cryptoIdentity) + guard let contact = ContactIdentity(cryptoIdentity: groupMemberWithCoreDetails.cryptoIdentity, + identityCoreDetails: groupMemberWithCoreDetails.coreDetails, + trustOrigin: trustOrigin, + ownedIdentity: ownedIdentity, + isOneToOne: false, + delegateManager: delegateManager) + else { + throw ObvIdentityManagerError.contactCreationFailed + } + return contact + } + }) + + // Create a new version of the pending group members + + let newVersionOfPendingMembers: Set = Set( try pendingMembersWithCoreDetails.map { (pendingMemberWithCoreDetails) in + + if let pendingMember = try PendingGroupMember.get(cryptoIdentity: pendingMemberWithCoreDetails.cryptoIdentity, contactGroup: self, delegateManager: delegateManager) { + // The identity is already a pending member, we simply insert in the new list of pending members + return pendingMember + } else { + // The identity is not yet a PendingMember, we create it and insert it + let pendingMember = try PendingGroupMember(contactGroup: self, cryptoIdentityWithCoreDetails: pendingMemberWithCoreDetails, delegateManager: delegateManager) + return pendingMember + } + }) + + // Replace the old versions of the group members and of the pending members by the new ones and update the version number + + try super.updatePendingMembersAndGroupMembers(newVersionOfGroupMembers: newVersionOfGroupMembers, + newVersionOfPendingMembers: newVersionOfPendingMembers, + groupMembersVersion: groupMembersVersion) + + } + +} + + // MARK: - Convenience methods extension ContactGroupOwned { @@ -145,10 +229,10 @@ extension ContactGroupOwned { func updateDetailsLatest(with groupDetailsElementsWithPhoto: GroupDetailsElementsWithPhoto, delegateManager: ObvIdentityDelegateManager) throws { guard let obvContext = self.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroupOwned.errorDomain) + throw ObvIdentityManagerError.contextIsNil } - guard groupDetailsElementsWithPhoto.version == 1 + publishedDetails.version else { - throw ObvIdentityManagerError.invalidGroupDetailsVersion.error(withDomain: ContactGroupOwned.errorDomain) + guard groupDetailsElementsWithPhoto.version >= 1 + publishedDetails.version else { + throw ObvIdentityManagerError.invalidGroupDetailsVersion } try self.latestDetails.delete(identityPhotosDirectory: delegateManager.identityPhotosDirectory, within: obvContext) self.latestDetails = try ContactGroupDetailsLatest(contactGroupOwned: self, @@ -160,7 +244,7 @@ extension ContactGroupOwned { func discardDetailsLatest(delegateManager: ObvIdentityDelegateManager) throws { guard let obvContext = self.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroupOwned.errorDomain) + throw ObvIdentityManagerError.contextIsNil } try self.latestDetails.delete(identityPhotosDirectory: delegateManager.identityPhotosDirectory, within: obvContext) let groupDetailsElementsWithPhoto = try publishedDetails.getGroupDetailsElementsWithPhoto(identityPhotosDirectory: delegateManager.identityPhotosDirectory) @@ -190,7 +274,7 @@ extension ContactGroupOwned { func getOwnedGroupStructure(identityPhotosDirectory: URL) throws -> GroupStructure { - let groupMembers = Set(self.groupMembers.map { $0.cryptoIdentity }) + let groupMembers = Set(self.groupMembers.compactMap { $0.cryptoIdentity }) let pendingGroupMembers = self.getPendingGroupMembersWithCoreDetails() let groupMembersVersion = self.groupMembersVersion let publishedGroupDetailsWithPhoto = try self.publishedDetails.getGroupDetailsElementsWithPhoto(identityPhotosDirectory: identityPhotosDirectory) @@ -222,7 +306,7 @@ extension ContactGroupOwned { func markPendingMemberAsDeclined(pendingGroupMember: ObvCryptoIdentity) throws { guard let pendingGroupMemberObject = self.pendingGroupMembers.filter({ $0.cryptoIdentity == pendingGroupMember }).first else { - throw ObvIdentityManagerError.pendingGroupMemberDoesNotExist.error(withDomain: ContactGroupOwned.errorDomain) + throw ObvIdentityManagerError.pendingGroupMemberDoesNotExist } pendingGroupMemberObject.markAsDeclined(delegateManager: delegateManager) @@ -233,7 +317,7 @@ extension ContactGroupOwned { func unmarkDeclinedPendingMemberAsDeclined(pendingGroupMember: ObvCryptoIdentity) throws { guard let pendingGroupMemberObject = self.pendingGroupMembers.filter({ $0.cryptoIdentity == pendingGroupMember }).first else { - throw ObvIdentityManagerError.pendingGroupMemberDoesNotExist.error(withDomain: ContactGroupOwned.errorDomain) + throw ObvIdentityManagerError.pendingGroupMemberDoesNotExist } pendingGroupMemberObject.unmarkAsDeclined(delegateManager: delegateManager) @@ -243,15 +327,13 @@ extension ContactGroupOwned { func add(newPendingMembers: Set, delegateManager: ObvIdentityDelegateManager) throws { - let errorDomain = ContactGroupOwned.errorDomain - guard let obvContext = self.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: errorDomain) + throw ObvIdentityManagerError.contextIsNil } // Filter out the "new" pending members that are already pending members. Also filter out the members. let cryptoIdentitiesOfCurrentPendingMembers = Set(self.pendingGroupMembers.map { $0.cryptoIdentity }) - let cryptoIdentitiesOfCurrentMembers = Set(self.groupMembers.map { $0.cryptoIdentity }) + let cryptoIdentitiesOfCurrentMembers = Set(self.groupMembers.compactMap { $0.cryptoIdentity }) let reallyNewPendingMembers = newPendingMembers.subtracting(cryptoIdentitiesOfCurrentPendingMembers).subtracting(cryptoIdentitiesOfCurrentMembers) guard !reallyNewPendingMembers.isEmpty else { return } @@ -262,18 +344,19 @@ extension ContactGroupOwned { delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotContact.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotContact } return contact }) - let reallyNewPendingMemberObjects: Set = Set( try newPendingMemberIdentities.map { (contact) in + let reallyNewPendingMemberObjects: Set = Set( try newPendingMemberIdentities.compactMap { (contact) in let publishedCoreDetails = contact.publishedIdentityDetails?.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory)?.coreDetails guard let trustedCoreDetails = contact.trustedIdentityDetails.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory)?.coreDetails else { throw Self.makeError(message: "Could not get the trusted details of a contact") } let coreDetails = publishedCoreDetails ?? trustedCoreDetails - let cryptoIdentityWithCoreDetails = CryptoIdentityWithCoreDetails(cryptoIdentity: contact.cryptoIdentity, + guard let contactCryptoIdentity = contact.cryptoIdentity else { assertionFailure(); return nil } + let cryptoIdentityWithCoreDetails = CryptoIdentityWithCoreDetails(cryptoIdentity: contactCryptoIdentity, coreDetails: coreDetails) return try PendingGroupMember(contactGroup: self, cryptoIdentityWithCoreDetails: cryptoIdentityWithCoreDetails, @@ -296,7 +379,10 @@ extension ContactGroupOwned { func remove(pendingOrGroupMembers: Set) throws { - let groupMembersToRemove = Set(self.groupMembers.filter { pendingOrGroupMembers.contains($0.cryptoIdentity) }) + let groupMembersToRemove = Set(self.groupMembers.filter { + guard let cryptoIdentity = $0.cryptoIdentity else { assertionFailure(); return false } + return pendingOrGroupMembers.contains(cryptoIdentity) + }) let pendingMembersToRemove = Set(self.pendingGroupMembers.filter { pendingOrGroupMembers.contains($0.cryptoIdentity) }) let newVersionOfGroupMembers = self.groupMembers.subtracting(groupMembersToRemove) @@ -334,7 +420,7 @@ extension ContactGroupOwned { static func get(groupUid: UID, ownedIdentity: OwnedIdentity, delegateManager: ObvIdentityDelegateManager) throws -> ContactGroupOwned? { guard let obvContext = ownedIdentity.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: ContactGroupOwned.errorDomain) + throw ObvIdentityManagerError.contextIsNil } let request: NSFetchRequest = ContactGroupOwned.fetchRequest() request.predicate = NSPredicate(format: "%K == %@ AND %K == %@", @@ -463,7 +549,7 @@ struct ContactGroupOwnedBackupItem: Codable, Hashable { fileprivate init(groupMembersVersion: Int, groupUid: UID, groupMembers: Set, pendingGroupMembers: Set, publishedDetails: ContactGroupDetailsPublished, latestDetails: ContactGroupDetailsLatest) { self.groupMembersVersion = groupMembersVersion self.groupUid = groupUid - self.groupMembers = Set(groupMembers.map({ GroupMemberBackupItem(memberIdentity: $0.cryptoIdentity.getIdentity()) })) + self.groupMembers = Set(groupMembers.map({ GroupMemberBackupItem(memberIdentity: $0.identity) })) self.pendingGroupMembers = Set(pendingGroupMembers.map { $0.backupItem }) self.publishedDetails = publishedDetails.backupItem // If the latest details are identical to the published details, we do not include them in the json file @@ -540,7 +626,7 @@ struct ContactGroupOwnedBackupItem: Codable, Hashable { do { let allContacts = obvContext.registeredObjects.filter({ $0 is ContactIdentity }) as! Set for groupMember in self.groupMembers { - guard let groupMemberAsContact = allContacts.first(where: { $0.cryptoIdentity.getIdentity() == groupMember.memberIdentity }) else { + guard let groupMemberAsContact = allContacts.first(where: { $0.identity == groupMember.memberIdentity }) else { throw ContactGroupOwnedBackupItem.makeError(message: "Could not find the contact identity instance corresponding to the group member") } groupMembers.insert(groupMemberAsContact) diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2.swift index 90fddc1a..e449c720 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2.swift @@ -225,7 +225,6 @@ final class ContactGroupV2: NSManagedObject, ObvManagedObject, ObvErrorMaker { private var changedKeys = Set() private var valuesOnDeletion: (ownedIdentity: ObvCryptoIdentity, appGroupIdentifier: Data)? private var creationOrUpdateInitiator = ObvGroupV2.CreationOrUpdateInitiator.createdOrUpdatedBySomeoneElse // Kept in memory, reset to an appropriate value if required - /// Expected to be non-nil var identifierVersionAndKeys: GroupV2.IdentifierVersionAndKeys? { @@ -362,6 +361,58 @@ final class ContactGroupV2: NSManagedObject, ObvManagedObject, ObvErrorMaker { } + private var isInsertedWhileRestoringSyncSnapshot = false + + + /// Used *exclusively* during a snapshot restore for creating an instance, relationships are recreater in a second step + fileprivate convenience init(snapshotNode: ContactGroupV2SyncSnapshotNode, groupIdentifier: GroupV2.Identifier, ownedIdentity: Data, within obvContext: ObvContext) throws { + + let entityDescription = NSEntityDescription.entity(forEntityName: ContactGroupV2.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + + switch groupIdentifier.category { + case .server: + guard let groupVersion = snapshotNode.groupVersion else { + assertionFailure() + throw ContactGroupV2SyncSnapshotNode.ObvError.tryingToRestoreIncompleteNode + } + self.groupVersion = groupVersion + case .keycloak: + self.groupVersion = 0 // Always 0 for a keycloak group + } + + guard let ownGroupInvitationNonce = snapshotNode.ownGroupInvitationNonce else { + assertionFailure() + throw ContactGroupV2SyncSnapshotNode.ObvError.tryingToRestoreIncompleteNode + } + + self.ownGroupInvitationNonce = ownGroupInvitationNonce + self.rawBlobMainSeed = snapshotNode.rawBlobMainSeed + self.rawBlobVersionSeed = snapshotNode.rawBlobVersionSeed + self.rawCategory = groupIdentifier.category.rawValue + self.rawGroupAdminServerAuthenticationPrivateKey = snapshotNode.rawGroupAdminServerAuthenticationPrivateKey + self.rawGroupUID = groupIdentifier.groupUID.raw + self.rawOwnedIdentityIdentity = ownedIdentity + self.rawOwnPermissions = snapshotNode.rawOwnPermissions.joined(separator: String(Self.separatorForPermissions)) + self.rawPushTopic = snapshotNode.rawPushTopic + self.rawServerURL = groupIdentifier.serverURL + self.rawVerifiedAdministratorsChain = snapshotNode.rawVerifiedAdministratorsChain + self.serializedSharedSettings = snapshotNode.serializedSharedSettings + self.rawLastModificationTimestamp = snapshotNode.lastModificationTimestamp // Set iff keycloak group + + switch groupIdentifier.category { + case .keycloak: + self.frozen = false // Always false for a keycloak group + case .server: + self.frozen = true // True when restoring a backup + } + + // Prevents the sending of notifications + isInsertedWhileRestoringSyncSnapshot = true + + } + + /// Called when creating a new group for which we are an administrator. This method is *not* the one to call when restoring a backup. static func createContactGroupV2AdministratedByOwnedIdentity(_ ownedIdentity: OwnedIdentity, serializedGroupCoreDetails: Data, photoURL: URL?, ownRawPermissions: Set, otherGroupMembers: Set, using prng: PRNGService, solveChallengeDelegate: ObvSolveChallengeDelegate, delegateManager: ObvIdentityDelegateManager) throws -> (contactGroup: ContactGroupV2, groupAdminServerAuthenticationPublicKey: PublicKeyForAuthentication) { @@ -468,7 +519,7 @@ final class ContactGroupV2: NSManagedObject, ObvManagedObject, ObvErrorMaker { /// Called when joigning a new group (we may be an administrator or not but if we are, we certainly did not create the group). This method is *not* the one to call when restoring a backup. - static func createContactGroupV2JoinedByOwnedIdentity(_ ownedIdentity: OwnedIdentity, groupIdentifier: GroupV2.Identifier, serverBlob: GroupV2.ServerBlob, blobKeys: GroupV2.BlobKeys, delegateManager: ObvIdentityDelegateManager) throws { + static func createContactGroupV2JoinedByOwnedIdentity(_ ownedIdentity: OwnedIdentity, groupIdentifier: GroupV2.Identifier, serverBlob: GroupV2.ServerBlob, blobKeys: GroupV2.BlobKeys, createdByMeOnOtherDevice: Bool, delegateManager: ObvIdentityDelegateManager) throws { guard let obvContext = ownedIdentity.obvContext else { assertionFailure(); throw Self.makeError(message: "Cannot find ObvContext in OwnedIdentity") } @@ -522,7 +573,11 @@ final class ContactGroupV2: NSManagedObject, ObvManagedObject, ObvErrorMaker { // Set an appropriate value for the initiator - group.creationOrUpdateInitiator = .createdOrUpdatedBySomeoneElse + if createdByMeOnOtherDevice { + group.creationOrUpdateInitiator = .createdByMe + } else { + group.creationOrUpdateInitiator = .createdOrUpdatedBySomeoneElse + } } @@ -853,7 +908,15 @@ extension ContactGroupV2 { isOneToOne: false, delegateManager: delegateManager) - // Now that we know for sure that the pending member is a contact, we can move it from the pending members to the members + // In the case of keycloak groups, make sure the contact is keycloak managed before moving her from the pending members to the other members + + if groupIdentifier.category == .keycloak { + guard contact.isCertifiedByOwnKeycloak else { + return + } + } + + // Now that we know for sure that the pending member is a contact and is keycloak managed, we can move her from the pending members to the members try ContactGroupV2Member.createMember(from: contact, inContactGroup: self, rawPermissions: pendingMember.allRawPermissions, groupInvitationNonce: pendingMember.groupInvitationNonce) try pendingMember.delete(delegateManager: delegateManager) @@ -1274,6 +1337,22 @@ extension ContactGroupV2 { } +// MARK: - Processing sync atoms between owned devices + +extension ContactGroupV2 { + + func processTrustGroupV2DetailsSyncAtom(version: Int, delegateManager: ObvIdentityDelegateManager) throws { + + guard self.groupVersion == version else { + return + } + + try replaceTrustedDetailsByPublishedDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory, delegateManager: delegateManager) + + } + +} + // MARK: - Convenience DB getters @@ -1321,9 +1400,9 @@ extension ContactGroupV2 { private static func withContactIdentityAmongOtherMembers(_ contactIdentity: ObvCryptoIdentity) -> NSPredicate { let predicateChain = [Key.rawOtherMembers.rawValue, ContactGroupV2Member.Predicate.Key.rawContactIdentity.rawValue, - ContactIdentity.Predicate.Key.cryptoIdentity.rawValue].joined(separator: ".") + ContactIdentity.Predicate.Key.rawIdentity.rawValue].joined(separator: ".") let predicateFormat = "ANY \(predicateChain) == %@" - return NSPredicate(format: predicateFormat, contactIdentity) + return NSPredicate(format: predicateFormat, contactIdentity.getIdentity() as NSData) } private static func withContactIdentityAmongPendingMembers(_ contactIdentity: ObvCryptoIdentity) -> NSPredicate { let predicateChain = [Key.rawPendingMembers.rawValue, @@ -1555,11 +1634,16 @@ extension ContactGroupV2 { changedKeys.removeAll() valuesOnDeletion = nil isRestoringBackup = false + isInsertedWhileRestoringSyncSnapshot = false creationOrUpdateInitiator = .createdOrUpdatedBySomeoneElse } // We do not send any notification after inserting an object during a backup restore. guard !isRestoringBackup else { assert(isInserted); return } + + // We do not send any notification after inserting an object during a snapshot restore. + guard !isInsertedWhileRestoringSyncSnapshot else { assert(isInserted); return } + guard let delegateManager = self.delegateManager else { assertionFailure(); return } guard let notificationDelegate = delegateManager.notificationDelegate else { assertionFailure(); return } @@ -1583,12 +1667,10 @@ extension ContactGroupV2 { .postOnBackgroundQueue(within: notificationDelegate) } - if (isInserted && pushTopic != nil) || (isUpdated && changedKeys.contains(Predicate.Key.rawPushTopic.rawValue) && pushTopic != nil) { - if let ownedCryptoId = ownedIdentity?.cryptoIdentity { + if (isInserted && pushTopic != nil) || (isUpdated && changedKeys.contains(Predicate.Key.rawPushTopic.rawValue)) || isDeleted { + if let ownedCryptoId = valuesOnDeletion?.ownedIdentity ?? ownedIdentity?.cryptoIdentity { ObvIdentityNotificationNew.pushTopicOfKeycloakGroupWasUpdated(ownedCryptoId: ownedCryptoId) .postOnBackgroundQueue(within: notificationDelegate) - } else { - assertionFailure() } } @@ -1808,7 +1890,13 @@ struct ContactGroupV2BackupItem: Codable, Hashable, ObvErrorMaker { self.serializedSharedSettings = try values.decodeIfPresent(String.self, forKey: .serializedSharedSettings) self.rawOtherMembers = try values.decode(Set.self, forKey: .rawOtherMembers) - self.rawPendingMembers = try values.decodeIfPresent(Set.self, forKey: .rawPendingMembers) ?? Set() + do { + self.rawPendingMembers = try values.decodeIfPresent(Set.self, forKey: .rawPendingMembers) ?? Set() + } catch { + // We don't want the whole backup restore the fail because we could not restore a pending members. In production, we just drop them. + assertionFailure(error.localizedDescription) + self.rawPendingMembers = Set() + } if values.allKeys.contains(.trustedDetailsIfThereArePublishedDetails) { self.rawPublishedDetails = try values.decodeIfPresent(ContactGroupV2DetailsBackupItem.self, forKey: .details) self.rawTrustedDetails = try values.decode(ContactGroupV2DetailsBackupItem.self, forKey: .trustedDetailsIfThereArePublishedDetails) @@ -1858,3 +1946,387 @@ struct ContactGroupV2BackupItem: Codable, Hashable, ObvErrorMaker { } } + + + +// MARK: - For Snapshot purposes + +extension ContactGroupV2 { + + var snapshotNode: ContactGroupV2SyncSnapshotNode? { + guard let category = self.groupIdentifier?.category else { return nil } + guard let rawTrustedDetails else { assertionFailure(); return nil } + switch category { + case .server: + guard let rawBlobMainSeed, let rawBlobVersionSeed, let rawVerifiedAdministratorsChain else { assertionFailure(); return nil } + return .init(groupVersion: groupVersion, + ownGroupInvitationNonce: ownGroupInvitationNonce, + rawBlobMainSeed: rawBlobMainSeed, + rawBlobVersionSeed: rawBlobVersionSeed, + rawOwnPermissions: rawOwnPermissions, + rawGroupAdminServerAuthenticationPrivateKey: rawGroupAdminServerAuthenticationPrivateKey, + rawVerifiedAdministratorsChain: rawVerifiedAdministratorsChain, + rawOtherMembers: rawOtherMembers, + rawPendingMembers: rawPendingMembers, + rawPublishedDetails: rawPublishedDetails, + rawTrustedDetails: rawTrustedDetails) + case .keycloak: + assert(groupIdentifier?.category == .keycloak) + assert(rawBlobMainSeed == nil) + assert(rawBlobVersionSeed == nil) + assert(rawVerifiedAdministratorsChain == nil) + return .init(groupVersion: groupVersion, + ownGroupInvitationNonce: ownGroupInvitationNonce, + rawPushTopic: rawPushTopic, + rawOwnPermissions: rawOwnPermissions, + serializedSharedSettings: serializedSharedSettings, + lastModificationTimestamp: lastModificationTimestamp, + rawOtherMembers: rawOtherMembers, + rawPendingMembers: rawPendingMembers, + rawPublishedDetails: rawPublishedDetails, + rawTrustedDetails: rawTrustedDetails) + } + } + +} + + +struct ContactGroupV2SyncSnapshotNode: ObvSyncSnapshotNode, Hashable { + + private let domain: Set + fileprivate let rawOwnPermissions: [String] + fileprivate let groupVersion: Int? + fileprivate let rawVerifiedAdministratorsChain: Data? + fileprivate let rawBlobMainSeed: Data? + fileprivate let rawBlobVersionSeed: Data? + fileprivate let rawGroupAdminServerAuthenticationPrivateKey: Data? + fileprivate let ownGroupInvitationNonce: Data? + fileprivate let lastModificationTimestamp: Date? + fileprivate let rawPushTopic: String? + fileprivate let serializedSharedSettings: String? + private let serializedGroupType: String? + private let rawPublishedDetails: ContactGroupV2DetailsSyncSnapshotNode? + private let rawTrustedDetails: ContactGroupV2DetailsSyncSnapshotNode? + private let rawOtherMembers: [ObvCryptoIdentity: ContactGroupV2MemberSyncSnapshotItem] + private let rawPendingMembers: [ObvCryptoIdentity: ContactGroupV2PendingMemberSyncSnapshotItem] + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case rawOwnPermissions = "permissions" + case groupVersion = "version" + case details = "details" // Cannot be nil + case ownGroupInvitationNonce = "invitation_nonce" + case rawVerifiedAdministratorsChain = "verified_admin_chain" + case rawBlobMainSeed = "main_seed" + case lastModificationTimestamp = "last_modification_timestamp" + case rawBlobVersionSeed = "version_seed" + case rawPushTopic = "push_topic" + case rawGroupAdminServerAuthenticationPrivateKey = "encoded_admin_key" + case serializedSharedSettings = "serialized_shared_settings" + case rawOtherMembers = "members" + case rawPendingMembers = "pending_members" + case trustedDetailsIfThereArePublishedDetails = "trusted_details" // Can be nil + case serializedGroupType = "serializedGroupType" + case domain = "domain" + } + + private static let defaultServerDomain: Set = Set([ + .rawOwnPermissions, + .groupVersion, + .details, + .trustedDetailsIfThereArePublishedDetails, + .rawVerifiedAdministratorsChain, + .rawBlobMainSeed, + .rawBlobVersionSeed, + .rawGroupAdminServerAuthenticationPrivateKey, + .ownGroupInvitationNonce, + .rawOtherMembers, + .rawPendingMembers]) + + private static let defaultKeycloakDomain: Set = Set([ + .rawOwnPermissions, + .details, + .ownGroupInvitationNonce, + .lastModificationTimestamp, + .rawPushTopic, + .serializedSharedSettings, + .rawOtherMembers, + .rawPendingMembers]) + + + /// Snapshoting a server group + fileprivate init(groupVersion: Int, ownGroupInvitationNonce: Data, rawBlobMainSeed: Data, rawBlobVersionSeed: Data, rawOwnPermissions: String, rawGroupAdminServerAuthenticationPrivateKey: Data?, rawVerifiedAdministratorsChain: Data, rawOtherMembers: Set, rawPendingMembers: Set, rawPublishedDetails: ContactGroupV2Details?, rawTrustedDetails: ContactGroupV2Details) { + self.groupVersion = groupVersion + self.ownGroupInvitationNonce = ownGroupInvitationNonce + self.rawBlobMainSeed = rawBlobMainSeed + self.rawBlobVersionSeed = rawBlobVersionSeed + self.rawGroupAdminServerAuthenticationPrivateKey = rawGroupAdminServerAuthenticationPrivateKey + self.rawOwnPermissions = rawOwnPermissions.split(separator: ContactGroupV2.separatorForPermissions).map({ String($0) }) + self.rawPushTopic = nil + self.rawVerifiedAdministratorsChain = rawVerifiedAdministratorsChain + self.serializedSharedSettings = nil + self.lastModificationTimestamp = nil // Only used for keycloak groups + // rawOtherMembers + do { + let keysAndValues: [(ObvCryptoIdentity, ContactGroupV2MemberSyncSnapshotItem)] = rawOtherMembers.compactMap({ + guard let cryptoIdentity = $0.cryptoIdentity else { assertionFailure(); return nil } + return (cryptoIdentity, $0.snapshotItem) + }) + self.rawOtherMembers = Dictionary(keysAndValues, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + // rawPendingMembers + do { + let keysAndValues: [(ObvCryptoIdentity, ContactGroupV2PendingMemberSyncSnapshotItem)] = rawPendingMembers.compactMap({ + guard let cryptoIdentity = $0.cryptoIdentity else { assertionFailure(); return nil } + return (cryptoIdentity, $0.snapshotItem) + }) + self.rawPendingMembers = Dictionary(keysAndValues, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + self.rawPublishedDetails = rawPublishedDetails?.snapshotNode + self.rawTrustedDetails = rawTrustedDetails.snapshotNode + self.domain = Self.defaultServerDomain + self.serializedGroupType = nil // For now, iOS does not support serializedGroupType + } + + + /// Snapshoting a keycloak group + fileprivate init(groupVersion: Int, ownGroupInvitationNonce: Data, rawPushTopic: String?, rawOwnPermissions: String, serializedSharedSettings: String?, lastModificationTimestamp: Date, rawOtherMembers: Set, rawPendingMembers: Set, rawPublishedDetails: ContactGroupV2Details?, rawTrustedDetails: ContactGroupV2Details) { + self.groupVersion = groupVersion + self.ownGroupInvitationNonce = ownGroupInvitationNonce + self.rawBlobMainSeed = nil + self.rawBlobVersionSeed = nil + self.rawGroupAdminServerAuthenticationPrivateKey = nil + self.rawOwnPermissions = rawOwnPermissions.split(separator: ContactGroupV2.separatorForPermissions).map({ String($0) }) + self.rawPushTopic = rawPushTopic + self.rawVerifiedAdministratorsChain = nil + self.serializedSharedSettings = serializedSharedSettings + self.lastModificationTimestamp = lastModificationTimestamp // Not used in server groups + // rawOtherMembers + do { + let keysAndValues: [(ObvCryptoIdentity, ContactGroupV2MemberSyncSnapshotItem)] = rawOtherMembers.compactMap({ + guard let cryptoIdentity = $0.cryptoIdentity else { assertionFailure(); return nil } + return (cryptoIdentity, $0.snapshotItem) + }) + self.rawOtherMembers = Dictionary(keysAndValues, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + // rawPendingMembers + do { + let keysAndValues: [(ObvCryptoIdentity, ContactGroupV2PendingMemberSyncSnapshotItem)] = rawPendingMembers.compactMap({ + guard let cryptoIdentity = $0.cryptoIdentity else { assertionFailure(); return nil } + return (cryptoIdentity, $0.snapshotItem) + }) + self.rawPendingMembers = Dictionary(keysAndValues, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + self.rawPublishedDetails = rawPublishedDetails?.snapshotNode + self.rawTrustedDetails = rawTrustedDetails.snapshotNode + self.domain = Self.defaultKeycloakDomain + self.serializedGroupType = nil // For now, iOS does not support serializedGroupType + } + + + func encode(to encoder: Encoder) throws { + + var container = encoder.container(keyedBy: CodingKeys.self) + + try container.encode(domain, forKey: .domain) + try container.encodeIfPresent(groupVersion, forKey: .groupVersion) + try container.encodeIfPresent(ownGroupInvitationNonce, forKey: .ownGroupInvitationNonce) + try container.encodeIfPresent(rawBlobMainSeed, forKey: .rawBlobMainSeed) + try container.encodeIfPresent(rawBlobVersionSeed, forKey: .rawBlobVersionSeed) + try container.encodeIfPresent(rawGroupAdminServerAuthenticationPrivateKey, forKey: .rawGroupAdminServerAuthenticationPrivateKey) + if let lastModificationTimestampInMs = lastModificationTimestamp?.epochInMs { + try container.encode(lastModificationTimestampInMs, forKey: .lastModificationTimestamp) + } + try container.encode(rawOwnPermissions, forKey: .rawOwnPermissions) + try container.encodeIfPresent(rawPushTopic, forKey: .rawPushTopic) + try container.encodeIfPresent(rawVerifiedAdministratorsChain, forKey: .rawVerifiedAdministratorsChain) + try container.encodeIfPresent(serializedSharedSettings, forKey: .serializedSharedSettings) + try container.encodeIfPresent(serializedGroupType, forKey: .serializedGroupType) + + // rawOtherMembers + do { + let dict: [String: ContactGroupV2MemberSyncSnapshotItem] = .init(rawOtherMembers, keyMapping: { $0.getIdentity().base64EncodedString() }, valueMapping: { $0 }) + try container.encode(dict, forKey: .rawOtherMembers) + } + // rawPendingMembers + do { + let dict: [String: ContactGroupV2PendingMemberSyncSnapshotItem] = .init(rawPendingMembers, keyMapping: { $0.getIdentity().base64EncodedString() }, valueMapping: { $0 }) + try container.encode(dict, forKey: .rawPendingMembers) + } + // Special rules for backuping the details in a way that also works for the Android version of Olvid + if let rawPublishedDetails { + try container.encode(rawPublishedDetails, forKey: .details) + try container.encodeIfPresent(rawTrustedDetails, forKey: .trustedDetailsIfThereArePublishedDetails) + } else { + try container.encodeIfPresent(rawTrustedDetails, forKey: .details) + // Nothing to do for the .trustedDetailsIfThereArePublishedDetails key + } + + } + + + init(from decoder: Decoder) throws { + + do { + + let values = try decoder.container(keyedBy: CodingKeys.self) + + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.groupVersion = try values.decodeIfPresent(Int.self, forKey: .groupVersion) + self.ownGroupInvitationNonce = try values.decodeIfPresent(Data.self, forKey: .ownGroupInvitationNonce) + self.rawBlobMainSeed = try values.decodeIfPresent(Data.self, forKey: .rawBlobMainSeed) + self.rawBlobVersionSeed = try values.decodeIfPresent(Data.self, forKey: .rawBlobVersionSeed) + self.rawGroupAdminServerAuthenticationPrivateKey = try values.decodeIfPresent(Data.self, forKey: .rawGroupAdminServerAuthenticationPrivateKey) + if let lastModificationTimestampInMs = try values.decodeIfPresent(Int.self, forKey: .lastModificationTimestamp) { + self.lastModificationTimestamp = Date(epochInMs: Int64(lastModificationTimestampInMs)) + } else { + self.lastModificationTimestamp = nil + } + self.rawOwnPermissions = try values.decodeIfPresent([String].self, forKey: .rawOwnPermissions) ?? [] + self.rawPushTopic = try values.decodeIfPresent(String.self, forKey: .rawPushTopic) + self.rawVerifiedAdministratorsChain = try values.decodeIfPresent(Data.self, forKey: .rawVerifiedAdministratorsChain) + self.serializedSharedSettings = try values.decodeIfPresent(String.self, forKey: .serializedSharedSettings) + self.serializedGroupType = try values.decodeIfPresent(String.self, forKey: .serializedGroupType) + + // rawOtherMembers + do { + let dict = try values.decodeIfPresent([String: ContactGroupV2MemberSyncSnapshotItem].self, forKey: .rawOtherMembers) ?? [:] + self.rawOtherMembers = .init(dict, keyMapping: { $0.base64EncodedToData?.identityToObvCryptoIdentity }, valueMapping: { $0 }) + } + // rawPendingMembers + do { + let dict = try values.decodeIfPresent([String: ContactGroupV2PendingMemberSyncSnapshotItem].self, forKey: .rawPendingMembers) ?? [:] + self.rawPendingMembers = .init(dict, keyMapping: { $0.base64EncodedToData?.identityToObvCryptoIdentity }, valueMapping: { $0 }) + } + if values.allKeys.contains(.trustedDetailsIfThereArePublishedDetails) { + self.rawPublishedDetails = try values.decodeIfPresent(ContactGroupV2DetailsSyncSnapshotNode.self, forKey: .details) + self.rawTrustedDetails = try values.decodeIfPresent(ContactGroupV2DetailsSyncSnapshotNode.self, forKey: .trustedDetailsIfThereArePublishedDetails) + } else { + self.rawTrustedDetails = try values.decodeIfPresent(ContactGroupV2DetailsSyncSnapshotNode.self, forKey: .details) + self.rawPublishedDetails = nil + } + + } catch { + + assertionFailure() + throw error + + } + + } + + + func restoreInstance(within obvContext: ObvContext, groupIdentifier: GroupV2.Identifier, ownedIdentity: Data, associations: inout SnapshotNodeManagedObjectAssociations) throws { + + let minimumDomain: Set + do { + let commonMinimumDomain: Set = Set([.rawOwnPermissions, .details, .ownGroupInvitationNonce, .rawOtherMembers, .rawPendingMembers]) + switch groupIdentifier.category { + case .server: + minimumDomain = commonMinimumDomain.union([.groupVersion, .rawVerifiedAdministratorsChain, .rawBlobMainSeed, .groupVersion, .rawGroupAdminServerAuthenticationPrivateKey]) + case .keycloak: + minimumDomain = commonMinimumDomain + } + } + + guard minimumDomain.isSubset(of: domain) else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteNode + } + + // Restore instance associated with this backup item + + let contactGroupV2 = try ContactGroupV2(snapshotNode: self, groupIdentifier: groupIdentifier, ownedIdentity: ownedIdentity, within: obvContext) + try associations.associate(contactGroupV2, to: self) + + // Restores the instances associated with the backup items depending on this backup item + + if domain.contains(.rawOtherMembers) { + try rawOtherMembers.forEach { (_, memberNode) in + try memberNode.restoreInstance(within: obvContext, associations: &associations) + } + } + + if domain.contains(.rawPendingMembers) { + try rawPendingMembers.forEach { (cryptoIdentity, pendingMemberNode) in + try pendingMemberNode.restoreInstance(within: obvContext, cryptoIdentity: cryptoIdentity, associations: &associations) + } + } + + try rawPublishedDetails?.restoreInstance(within: obvContext, associations: &associations) + + guard let rawTrustedDetails else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteNode + } + + try rawTrustedDetails.restoreInstance(within: obvContext, associations: &associations) + + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, ownedIdentity: Data, contactIdentities: [ObvCryptoIdentity: ContactIdentity], within obvContext: ObvContext) throws { + + let contactGroupV2: ContactGroupV2 = try associations.getObject(associatedTo: self, within: obvContext) + + // Restore the relationships of this instance (the rawOwnedIdentity relationship is set when restoring the relationships of the OwnedIdentity) + + contactGroupV2.otherMembers = Set(try self.rawOtherMembers.values.map { try associations.getObject(associatedTo: $0, within: obvContext) }) + + contactGroupV2.pendingMembers = Set(try self.rawPendingMembers.values.map({ try associations.getObject(associatedTo: $0, within: obvContext) })) + + contactGroupV2.publishedDetails = try associations.getObjectIfPresent(associatedTo: self.rawPublishedDetails, within: obvContext) + + guard let rawTrustedDetails else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteNode + } + + contactGroupV2.trustedDetails = try associations.getObject(associatedTo: rawTrustedDetails, within: obvContext) + + // Restore the relationships of this instance relationships + + try self.rawOtherMembers.forEach { (cryptoIdentity, otherMemberNode) in + try otherMemberNode.restoreRelationships(associations: associations, ownedIdentity: ownedIdentity, cryptoIdentity: cryptoIdentity, contactIdentities: contactIdentities, within: obvContext) + } + + try self.rawPendingMembers.forEach { (cryptoIdentity, pendingMemberNote) in + try pendingMemberNote.restoreRelationships(associations: associations, within: obvContext) + } + + try self.rawPublishedDetails?.restoreRelationships(associations: associations, within: obvContext) + + try self.rawTrustedDetails?.restoreRelationships(associations: associations, within: obvContext) + + } + + + enum ObvError: Error { + case tryingToRestoreIncompleteNode + } + +} + + +// MARK: - Private Helpers + +private extension String { + + var base64EncodedToData: Data? { + guard let data = Data(base64Encoded: self) else { assertionFailure(); return nil } + return data + } + +} + + +private extension Data { + + var identityToObvCryptoIdentity: ObvCryptoIdentity? { + guard let cryptoIdentity = ObvCryptoIdentity(from: self) else { assertionFailure(); return nil } + return cryptoIdentity + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2Details.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2Details.swift index a7315c86..abf7bc6c 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2Details.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2Details.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import OlvidUtils import ObvMetaManager import ObvCrypto import ObvEncoder +import ObvTypes import os.log @@ -138,6 +139,23 @@ final class ContactGroupV2Details: NSManagedObject, ObvManagedObject, ObvErrorMa } + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreated in a second step + fileprivate convenience init(snapshotNode: ContactGroupV2DetailsSyncSnapshotNode, within obvContext: ObvContext) throws { + let entityDescription = NSEntityDescription.entity(forEntityName: ContactGroupV2Details.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + self.rawPhotoServerIdentity = snapshotNode.rawPhotoServerIdentity + self.rawPhotoServerKeyEncoded = snapshotNode.rawPhotoServerKeyEncoded + self.photoServerLabel = snapshotNode.photoServerLabel + guard let serializedCoreDetails = snapshotNode.serializedCoreDetails else { + assertionFailure() + throw ContactGroupV2DetailsSyncSnapshotNode.ObvError.tryingToRestoreIncompleteNode + } + self.serializedCoreDetails = serializedCoreDetails + self.isRestoringBackup = true + self.delegateManager = nil + } + + func delete(delegateManager: ObvIdentityDelegateManager) throws { let identityPhotosDirectory = delegateManager.identityPhotosDirectory guard let obvContext = obvContext else { assertionFailure(); throw Self.makeError(message: "Could not find context") } @@ -163,9 +181,14 @@ final class ContactGroupV2Details: NSManagedObject, ObvManagedObject, ObvErrorMa } func getPhotoURL(identityPhotosDirectory: URL) -> URL? { + guard let url = getRawPhotoURL(identityPhotosDirectory: identityPhotosDirectory) else { return nil } + guard FileManager.default.fileExists(atPath: url.path) else { assertionFailure(); return nil } + return url + } + + private func getRawPhotoURL(identityPhotosDirectory: URL) -> URL? { guard let photoFilename = photoFilename else { return nil } let url = identityPhotosDirectory.appendingPathComponent(photoFilename) - guard FileManager.default.fileExists(atPath: url.path) else { assertionFailure(); return nil } return url } @@ -407,6 +430,9 @@ final class ContactGroupV2Details: NSManagedObject, ObvManagedObject, ObvErrorMa static var withoutPhotoFilename: NSPredicate { NSPredicate(withNilValueForKey: Key.photoFilename) } + static var withPhotoFilename: NSPredicate { + NSPredicate(withNonNilValueForKey: Key.photoFilename) + } static var withoutContactGroup: NSPredicate { NSCompoundPredicate(andPredicateWithSubpredicates: [ NSPredicate(withNilValueForKey: Key.contactGroupInCaseTheDetailsArePublished), @@ -416,6 +442,27 @@ final class ContactGroupV2Details: NSManagedObject, ObvManagedObject, ObvErrorMa } + static func getInfosAboutGroupsHavingPhotoFilename(identityPhotosDirectory: URL, within obvContext: ObvContext) throws -> [(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverPhotoInfo: GroupV2.ServerPhotoInfo, photoURL: URL)] { + + let request: NSFetchRequest = ContactGroupV2Details.fetchRequest() + request.predicate = Predicate.withPhotoFilename + let items = try obvContext.fetch(request) + let results: [(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverPhotoInfo: GroupV2.ServerPhotoInfo, photoURL: URL)] = items.compactMap { details in + + guard let photoURL = details.getRawPhotoURL(identityPhotosDirectory: identityPhotosDirectory), + let group = details.contactGroupInCaseTheDetailsArePublished ?? details.contactGroupInCaseTheDetailsAreTrusted, + let ownedIdentity = group.ownedIdentity?.cryptoIdentity, + let groupIdentifier = group.groupIdentifier, + let serverPhotoInfo = details.serverPhotoInfo + else { + return nil + } + return (ownedIdentity, groupIdentifier, serverPhotoInfo, photoURL) + } + return results + } + + static func getAllPhotoURLs(identityPhotosDirectory: URL, within obvContext: ObvContext) throws -> Set { let request: NSFetchRequest = ContactGroupV2Details.fetchRequest() request.propertiesToFetch = [Predicate.Key.photoFilename.rawValue] @@ -569,3 +616,150 @@ struct ContactGroupV2DetailsBackupItem: Codable, Hashable, ObvErrorMaker { } } + + + +// MARK: - For Snapshot purposes + + +extension ContactGroupV2Details { + + var snapshotNode: ContactGroupV2DetailsSyncSnapshotNode { + .init(rawPhotoServerIdentity: self.rawPhotoServerIdentity, + rawPhotoServerKeyEncoded: self.rawPhotoServerKeyEncoded, + photoServerLabel: self.photoServerLabel, + serializedCoreDetails: self.serializedCoreDetails) + } + +} + + +struct ContactGroupV2DetailsSyncSnapshotNode: ObvSyncSnapshotNode, Equatable, Hashable { + + private let domain: Set + fileprivate let rawPhotoServerIdentity: Data? + fileprivate let rawPhotoServerKeyEncoded: Data? + fileprivate let photoServerLabel: UID? + fileprivate let serializedCoreDetails: Data? + + let id = Self.generateIdentifier() + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case rawPhotoServerIdentity = "photo_server_identity" + case rawPhotoServerKeyEncoded = "photo_server_key" + case photoServerLabel = "photo_server_label" + case serializedCoreDetails = "serialized_details" + case domain = "domain" + } + + + fileprivate init(rawPhotoServerIdentity: Data?, rawPhotoServerKeyEncoded: Data?, photoServerLabel: UID?, serializedCoreDetails: Data) { + if let rawPhotoServerKeyEncoded = rawPhotoServerKeyEncoded, let photoServerLabel = photoServerLabel { + self.rawPhotoServerKeyEncoded = rawPhotoServerKeyEncoded + self.photoServerLabel = photoServerLabel + } else { + self.rawPhotoServerKeyEncoded = nil + self.photoServerLabel = nil + } + self.rawPhotoServerIdentity = rawPhotoServerIdentity // Nil for keycloak groups + self.serializedCoreDetails = serializedCoreDetails + self.domain = Self.defaultDomain + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(domain, forKey: .domain) + if let serializedCoreDetails { + guard let serializedCoreDetailsAsString = String(data: serializedCoreDetails, encoding: .utf8) else { + throw ObvError.couldNotSerializeCoreDetails + } + try container.encode(serializedCoreDetailsAsString, forKey: .serializedCoreDetails) + } + try container.encodeIfPresent(rawPhotoServerIdentity, forKey: .rawPhotoServerIdentity) + try container.encodeIfPresent(rawPhotoServerKeyEncoded, forKey: .rawPhotoServerKeyEncoded) + try container.encodeIfPresent(photoServerLabel?.raw, forKey: .photoServerLabel) + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + + if let serializedCoreDetailsAsString = try values.decodeIfPresent(String.self, forKey: .serializedCoreDetails) { + guard let serializedCoreDetailsAsData = serializedCoreDetailsAsString.data(using: .utf8) else { + throw ObvError.couldNotDeserializeCoreDetails + } + self.serializedCoreDetails = serializedCoreDetailsAsData + } else { + self.serializedCoreDetails = nil + } + + if values.allKeys.contains(.photoServerLabel) && values.allKeys.contains(.rawPhotoServerKeyEncoded) && values.allKeys.contains(.rawPhotoServerIdentity) { + do { + self.rawPhotoServerIdentity = try values.decodeIfPresent(Data.self, forKey: .rawPhotoServerIdentity) + self.rawPhotoServerKeyEncoded = try values.decodeIfPresent(Data.self, forKey: .rawPhotoServerKeyEncoded) + if let photoServerLabelAsData = try? values.decodeIfPresent(Data.self, forKey: .photoServerLabel), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + // Expected + self.photoServerLabel = photoServerLabelAsUID + } else if let photoServerLabelAsUID = try values.decodeIfPresent(UID.self, forKey: .photoServerLabel) { + assertionFailure() + self.photoServerLabel = photoServerLabelAsUID + } else if let photoServerLabelAsString = try? values.decode(String.self, forKey: .photoServerLabel), + let photoServerLabelAsData = Data(base64Encoded: photoServerLabelAsString), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + assertionFailure() + self.photoServerLabel = photoServerLabelAsUID + } else if let photoServerLabelAsString = try? values.decode(String.self, forKey: .photoServerLabel), + let photoServerLabelAsData = Data(hexString: photoServerLabelAsString), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + assertionFailure() + self.photoServerLabel = photoServerLabelAsUID + } else { + throw ObvError.couldNotDecodePhotoServerLabel + } + } catch { + assertionFailure() + throw error + } + } else { + self.rawPhotoServerIdentity = nil + self.rawPhotoServerKeyEncoded = nil + self.photoServerLabel = nil + } + + } + + + func restoreInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + + let minimumDomain: Set = Set([.serializedCoreDetails]) + guard minimumDomain.isSubset(of: domain) else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteNode + } + + let contactGroupV2Details = try ContactGroupV2Details(snapshotNode: self, within: obvContext) + try associations.associate(contactGroupV2Details, to: self) + + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + // Nothing to do here + } + + + enum ObvError: Error { + case couldNotSerializeCoreDetails + case couldNotDeserializeCoreDetails + case couldNotDecodePhotoServerLabel + case tryingToRestoreIncompleteNode + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2Member.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2Member.swift index 794ae98c..25526114 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2Member.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2Member.swift @@ -79,7 +79,8 @@ final class ContactGroupV2Member: NSManagedObject, ObvManagedObject, ObvErrorMak var identityAndPermissionsAndDetails: GroupV2.IdentityAndPermissionsAndDetails? { guard let contactIdentity = contactIdentity else { assertionFailure(); return nil } let coreDetails = contactIdentity.publishedIdentityDetails?.serializedIdentityCoreDetails ?? contactIdentity.trustedIdentityDetails.serializedIdentityCoreDetails - return GroupV2.IdentityAndPermissionsAndDetails(identity: contactIdentity.cryptoIdentity, + guard let contactCryptoId = contactIdentity.cryptoIdentity else { assertionFailure(); return nil } + return GroupV2.IdentityAndPermissionsAndDetails(identity: contactCryptoId, rawPermissions: allRawPermissions, serializedIdentityCoreDetails: coreDetails, groupInvitationNonce: groupInvitationNonce) @@ -112,6 +113,19 @@ final class ContactGroupV2Member: NSManagedObject, ObvManagedObject, ObvErrorMak } + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + fileprivate convenience init(snapshotItem: ContactGroupV2MemberSyncSnapshotItem, within obvContext: ObvContext) throws { + let entityDescription = NSEntityDescription.entity(forEntityName: ContactGroupV2Member.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + guard let groupInvitationNonce = snapshotItem.groupInvitationNonce else { + assertionFailure() + throw ContactGroupV2MemberSyncSnapshotItem.ObvError.tryingToRestoreIncompleteNode + } + self.groupInvitationNonce = groupInvitationNonce + self.rawPermissions = snapshotItem.rawPermissions.joined(separator: String(Self.separatorForPermissions)) + } + + /// Shall only be called from a ContactGroupV2 instance (that must check that this member does not exist yet) static func createMember(from contact: ContactIdentity, inContactGroup group: ContactGroupV2, rawPermissions: Set, groupInvitationNonce: Data) throws { guard contact.obvContext == group.obvContext else { throw Self.makeError(message: "Cannot insert member as the contexts do not match") } @@ -196,7 +210,7 @@ struct ContactGroupV2MemberBackupItem: Codable, Hashable, ObvErrorMaker { fileprivate init(rawPermissions: String, groupInvitationNonce: Data, contactIdentity: ContactIdentity) { self.groupInvitationNonce = groupInvitationNonce self.rawPermissions = rawPermissions.split(separator: ContactGroupV2Member.separatorForPermissions).map({ String($0) }) - self.contactIdentity = contactIdentity.cryptoIdentity.getIdentity() + self.contactIdentity = contactIdentity.identity } enum CodingKeys: String, CodingKey { @@ -232,7 +246,7 @@ struct ContactGroupV2MemberBackupItem: Codable, Hashable, ObvErrorMaker { let allcontactIdentities = Set(obvContext.registeredObjects.compactMap({ $0 as? ContactIdentity })) let appropriateContact = allcontactIdentities.first(where: { - $0.ownedIdentityIdentity == ownedIdentity && $0.cryptoIdentity.getIdentity() == self.contactIdentity + $0.ownedIdentityIdentity == ownedIdentity && $0.identity == self.contactIdentity }) guard let appropriateContact = appropriateContact else { throw Self.makeError(message: "Could not find contact associated to group v2 member") @@ -243,3 +257,76 @@ struct ContactGroupV2MemberBackupItem: Codable, Hashable, ObvErrorMaker { } } + + + +// MARK: - For Snapshot purposes + +extension ContactGroupV2Member { + + var snapshotItem: ContactGroupV2MemberSyncSnapshotItem { + .init(rawPermissions: self.rawPermissions, + groupInvitationNonce: self.groupInvitationNonce) + } + +} + + +struct ContactGroupV2MemberSyncSnapshotItem: Codable, Hashable, Identifiable { + + fileprivate let rawPermissions: [String] + fileprivate let groupInvitationNonce: Data? + + let id = ObvSyncSnapshotNodeUtils.generateIdentifier() + + enum CodingKeys: String, CodingKey { + case groupInvitationNonce = "invitation_nonce" + case rawPermissions = "permissions" + } + + + fileprivate init(rawPermissions: String, groupInvitationNonce: Data) { + self.groupInvitationNonce = groupInvitationNonce + self.rawPermissions = rawPermissions.split(separator: ContactGroupV2Member.separatorForPermissions).map({ String($0) }) + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(groupInvitationNonce, forKey: .groupInvitationNonce) + try container.encode(rawPermissions, forKey: .rawPermissions) + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + self.groupInvitationNonce = try values.decodeIfPresent(Data.self, forKey: .groupInvitationNonce) + self.rawPermissions = try values.decodeIfPresent([String].self, forKey: .rawPermissions) ?? [] + } + + + func restoreInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + let contactGroupV2Member = try ContactGroupV2Member(snapshotItem: self, within: obvContext) + try associations.associate(contactGroupV2Member, to: self) + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, ownedIdentity: Data, cryptoIdentity: ObvCryptoIdentity, contactIdentities: [ObvCryptoIdentity: ContactIdentity], within obvContext: ObvContext) throws { + + let contactGroupV2Member: ContactGroupV2Member = try associations.getObject(associatedTo: self, within: obvContext) + + guard let contactIdentity = contactIdentities[cryptoIdentity] else { + throw ObvError.couldNotFindContactAssociatedToGroupV2Member + } + + contactGroupV2Member.contactIdentity = contactIdentity + + } + + + enum ObvError: Error { + case couldNotFindContactAssociatedToGroupV2Member + case tryingToRestoreIncompleteNode + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2PendingMember.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2PendingMember.swift index 7d7f0f76..74fecb42 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2PendingMember.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactGroupV2PendingMember.swift @@ -123,7 +123,28 @@ final class ContactGroupV2PendingMember: NSManagedObject, ObvManagedObject, ObvE self.isRestoringBackup = true self.delegateManager = nil } - + + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + fileprivate convenience init(snapshotNode: ContactGroupV2PendingMemberSyncSnapshotItem, cryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + let entityDescription = NSEntityDescription.entity(forEntityName: ContactGroupV2PendingMember.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + guard let groupInvitationNonce = snapshotNode.groupInvitationNonce else { + assertionFailure() + throw ContactGroupV2PendingMemberSyncSnapshotItem.ObvError.tryingToRestoreIncompleteNode + } + self.groupInvitationNonce = groupInvitationNonce + self.rawIdentity = cryptoIdentity.getIdentity() + self.rawPermissions = snapshotNode.rawPermissions.joined(separator: String(Self.separatorForPermissions)) + guard let serializedIdentityCoreDetails = snapshotNode.serializedIdentityCoreDetails else { + assertionFailure() + throw ContactGroupV2PendingMemberSyncSnapshotItem.ObvError.tryingToRestoreIncompleteNode + } + self.serializedIdentityCoreDetails = serializedIdentityCoreDetails + self.isRestoringBackup = true + self.delegateManager = nil + } + static func createAllPendingMembers(from otherGroupMembers: Set, in contactGroup: ContactGroupV2, delegateManager: ObvIdentityDelegateManager) throws -> Set { try Set(otherGroupMembers.map { member in @@ -244,6 +265,22 @@ extension ContactGroupV2PendingMember { NSPredicate(format: predicateFormat, ownedIdentity) ]) } + static func withOwnedCryptoIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity) -> NSPredicate { + let predicateChain = [Key.rawContactGroup.rawValue, + ContactGroupV2.Predicate.Key.rawOwnedIdentityIdentity.rawValue].joined(separator: ".") + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + contactGroupIsNotNil, + NSPredicate(predicateChain, EqualToData: ownedCryptoIdentity.getIdentity()), + ]) + } + static func inGroupWithCategory(_ category: GroupV2.Identifier.Category) -> NSPredicate { + let predicateChain = [Key.rawContactGroup.rawValue, + ContactGroupV2.Predicate.Key.rawCategory.rawValue].joined(separator: ".") + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + contactGroupIsNotNil, + NSPredicate(predicateChain, EqualToInt: category.rawValue), + ]) + } } @@ -264,6 +301,20 @@ extension ContactGroupV2PendingMember { return Set(items) } + + + /// Returns a set of crypto ids of users that are pending in at least one group v2 of the given category, restricting to groups of the given owned identity. + static func getAllPendingMembersCorrespondingToOwnedIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity, groupCategory: GroupV2.Identifier.Category, within context: NSManagedObjectContext) throws -> Set { + let request = Self.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnedCryptoIdentity(ownedCryptoIdentity), + Predicate.inGroupWithCategory(groupCategory), + ]) + request.fetchBatchSize = 1_000 + request.propertiesToFetch = [Predicate.Key.rawIdentity.rawValue] + let items = try context.fetch(request) + return Set(items.compactMap(\.cryptoIdentity)) + } // MARK: - Sending notifications @@ -335,15 +386,30 @@ struct ContactGroupV2PendingMemberBackupItem: Codable, Hashable, ObvErrorMaker { try container.encode(groupInvitationNonce, forKey: .groupInvitationNonce) try container.encode(rawIdentity, forKey: .rawIdentity) try container.encode(rawPermissions, forKey: .rawPermissions) - try container.encode(serializedIdentityCoreDetails, forKey: .serializedIdentityCoreDetails) + guard let coreDetailsAsString = String(data: serializedIdentityCoreDetails, encoding: .utf8) else { + throw Self.makeError(message: "Could not represent serializedIdentityCoreDetails as String") + } + try container.encode(coreDetailsAsString, forKey: .serializedIdentityCoreDetails) } + init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) self.groupInvitationNonce = try values.decode(Data.self, forKey: .groupInvitationNonce) self.rawIdentity = try values.decode(Data.self, forKey: .rawIdentity) self.rawPermissions = try values.decode([String].self, forKey: .rawPermissions) - self.serializedIdentityCoreDetails = try values.decode(Data.self, forKey: .serializedIdentityCoreDetails) + + if let coreDetailsAsString = try? values.decode(String.self, forKey: .serializedIdentityCoreDetails), + let coreDetailsAsData = coreDetailsAsString.data(using: .utf8), + (try? ObvIdentityCoreDetails(coreDetailsAsData)) != nil { + self.serializedIdentityCoreDetails = coreDetailsAsData + } else if let coreDetailsAsData = try? values.decode(Data.self, forKey: .serializedIdentityCoreDetails), + (try? ObvIdentityCoreDetails(coreDetailsAsData)) != nil { + self.serializedIdentityCoreDetails = coreDetailsAsData + } else { + throw Self.makeError(message: "Could not decode serializedIdentityCoreDetails") + } + } func restoreInstance(within obvContext: ObvContext, associations: inout BackupItemObjectAssociations) throws { @@ -356,3 +422,93 @@ struct ContactGroupV2PendingMemberBackupItem: Codable, Hashable, ObvErrorMaker { } } + + +// MARK: - For Snapshot purposes + +extension ContactGroupV2PendingMember { + + var snapshotItem: ContactGroupV2PendingMemberSyncSnapshotItem { + return .init(groupInvitationNonce: self.groupInvitationNonce, + rawPermissions: self.rawPermissions, + serializedIdentityCoreDetails: self.serializedIdentityCoreDetails) + } + +} + + +struct ContactGroupV2PendingMemberSyncSnapshotItem: Codable, Hashable, Identifiable { + + fileprivate let groupInvitationNonce: Data? + fileprivate let rawPermissions: [String] + fileprivate let serializedIdentityCoreDetails: Data? + + let id = ObvSyncSnapshotNodeUtils.generateIdentifier() + + enum CodingKeys: String, CodingKey { + case groupInvitationNonce = "invitation_nonce" + case rawPermissions = "permissions" + case serializedIdentityCoreDetails = "serialized_details" + } + + // Allows to prevent association failures in two items have identical variables + private let transientUuid = UUID() + + + fileprivate init(groupInvitationNonce: Data, rawPermissions: String, serializedIdentityCoreDetails: Data) { + self.groupInvitationNonce = groupInvitationNonce + self.rawPermissions = rawPermissions.split(separator: ContactGroupV2PendingMember.separatorForPermissions).map({ String($0) }) + self.serializedIdentityCoreDetails = serializedIdentityCoreDetails + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(groupInvitationNonce, forKey: .groupInvitationNonce) + try container.encode(rawPermissions, forKey: .rawPermissions) + if let serializedIdentityCoreDetails { + guard let coreDetailsAsString = String(data: serializedIdentityCoreDetails, encoding: .utf8) else { + throw ObvError.couldNotSerializeCoreDetails + } + try container.encode(coreDetailsAsString, forKey: .serializedIdentityCoreDetails) + } + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + self.groupInvitationNonce = try values.decodeIfPresent(Data.self, forKey: .groupInvitationNonce) + self.rawPermissions = try values.decodeIfPresent([String].self, forKey: .rawPermissions) ?? [] + + if let coreDetailsAsString = try? values.decodeIfPresent(String.self, forKey: .serializedIdentityCoreDetails), + let coreDetailsAsData = coreDetailsAsString.data(using: .utf8), + (try? ObvIdentityCoreDetails(coreDetailsAsData)) != nil { + self.serializedIdentityCoreDetails = coreDetailsAsData + } else if let coreDetailsAsData = try? values.decodeIfPresent(Data.self, forKey: .serializedIdentityCoreDetails), + (try? ObvIdentityCoreDetails(coreDetailsAsData)) != nil { + self.serializedIdentityCoreDetails = coreDetailsAsData + } else { + self.serializedIdentityCoreDetails = nil + } + + } + + + func restoreInstance(within obvContext: ObvContext, cryptoIdentity: ObvCryptoIdentity, associations: inout SnapshotNodeManagedObjectAssociations) throws { + let contactGroupV2PendingMember = try ContactGroupV2PendingMember(snapshotNode: self, cryptoIdentity: cryptoIdentity, within: obvContext) + try associations.associate(contactGroupV2PendingMember, to: self) + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + // Nothing to do here + } + + + enum ObvError: Error { + case couldNotSerializeCoreDetails + case couldNotDeserializeCoreDetails + case tryingToRestoreIncompleteNode + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentity.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentity.swift index f12b30f3..3bd73faa 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentity.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentity.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -34,70 +34,68 @@ final class ContactIdentity: NSManagedObject, ObvManagedObject { // MARK: Internal constants private static let entityName = "ContactIdentity" - static let cryptoIdentityKey = "cryptoIdentity" - private static let devicesKey = "devices" - private static let groupMembershipsKey = "groupMemberships" - static let ownedIdentityKey = "ownedIdentity" - private static let ownedIdentityCryptoIdentityKey = [ownedIdentityKey, OwnedIdentity.Predicate.Key.cryptoIdentity.rawValue].joined(separator: ".") - private static let persistedTrustOriginsKey = "persistedTrustOrigins" - private static let trustOriginsKey = "trustOrigins" - private static let contactGroupsKey = "contactGroups" - private static let contactGroupsOwnedKey = "contactGroupsOwned" - private static let publishedIdentityDetailsKey = "publishedIdentityDetails" - private static let trustedIdentityDetailsKey = "trustedIdentityDetails" private static let errorDomain = "ContactIdentity" - private static let isRevokedAsCompromisedKey = "isRevokedAsCompromised" - private static let isForcefullyTrustedByUserKey = "isForcefullyTrustedByUser" private static func makeError(message: String) -> Error { NSError(domain: errorDomain, code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } private func makeError(message: String) -> Error { ContactIdentity.makeError(message: message) } // MARK: Attributes - @NSManaged private(set) var cryptoIdentity: ObvCryptoIdentity // Unique (together with `ownedIdentityIdentity`) @NSManaged private(set) var isCertifiedByOwnKeycloak: Bool @NSManaged private(set) var isForcefullyTrustedByUser: Bool @NSManaged private(set) var isRevokedAsCompromised: Bool @NSManaged private(set) var isOneToOne: Bool - @NSManaged private(set) var ownedIdentityIdentity: Data // Unique (together with `cryptoIdentity`) + @NSManaged private(set) var ownedIdentityIdentity: Data // Unique (together with `rawIdentity`) + @NSManaged private var rawDateOfLastBootstrappedContactDeviceDiscovery: Date? + @NSManaged private var rawIdentity: Data // Unique (together with `ownedIdentityIdentity`) @NSManaged private var trustLevelRaw: String // MARK: Relationships + // Expected to be non nil + var cryptoIdentity: ObvCryptoIdentity? { + guard let cryptoIdentity = ObvCryptoIdentity(from: rawIdentity) else { assertionFailure(); return nil } + return cryptoIdentity + } + + var identity: Data { + return rawIdentity + } + private(set) var contactGroups: Set { get { - let res = kvoSafePrimitiveValue(forKey: ContactIdentity.contactGroupsKey) as! Set + let res = kvoSafePrimitiveValue(forKey: Predicate.Key.contactGroups.rawValue) as! Set return Set(res.map { $0.delegateManager = delegateManager; $0.obvContext = self.obvContext; return $0 }) } set { - kvoSafeSetPrimitiveValue(newValue, forKey: ContactIdentity.contactGroupsKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.contactGroups.rawValue) } } private var contactGroupsOwned: Set { get { - let res = kvoSafePrimitiveValue(forKey: ContactIdentity.contactGroupsOwnedKey) as! Set + let res = kvoSafePrimitiveValue(forKey: Predicate.Key.contactGroupsOwned.rawValue) as! Set return Set(res.map { $0.delegateManager = delegateManager; $0.obvContext = self.obvContext; return $0 }) } set { - kvoSafeSetPrimitiveValue(newValue, forKey: ContactIdentity.contactGroupsOwnedKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.contactGroupsOwned.rawValue) } } private(set) var devices: Set { get { - let res = kvoSafePrimitiveValue(forKey: ContactIdentity.devicesKey) as! Set + let res = kvoSafePrimitiveValue(forKey: Predicate.Key.devices.rawValue) as! Set return Set(res.map { $0.delegateManager = delegateManager; $0.obvContext = self.obvContext; return $0 }) } set { - kvoSafeSetPrimitiveValue(newValue, forKey: ContactIdentity.devicesKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.devices.rawValue) } } private(set) var groupMemberships: Set { get { - let res = kvoSafePrimitiveValue(forKey: ContactIdentity.groupMembershipsKey) as! Set + let res = kvoSafePrimitiveValue(forKey: Predicate.Key.groupMemberships.rawValue) as! Set return Set(res.map { $0.obvContext = self.obvContext; return $0 }) } set { - kvoSafeSetPrimitiveValue(newValue, forKey: ContactIdentity.groupMembershipsKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.groupMemberships.rawValue) } } @@ -106,7 +104,7 @@ final class ContactIdentity: NSManagedObject, ObvManagedObject { // Unique (together with `cryptoIdentity`) private(set) var ownedIdentity: OwnedIdentity? { get { - guard let res = kvoSafePrimitiveValue(forKey: ContactIdentity.ownedIdentityKey) as? OwnedIdentity else { return nil } + guard let res = kvoSafePrimitiveValue(forKey: Predicate.Key.ownedIdentity.rawValue) as? OwnedIdentity else { return nil } res.delegateManager = delegateManager res.obvContext = self.obvContext return res @@ -114,41 +112,41 @@ final class ContactIdentity: NSManagedObject, ObvManagedObject { set { guard let newValue else { assertionFailure(); return } self.ownedIdentityIdentity = newValue.cryptoIdentity.getIdentity() - kvoSafeSetPrimitiveValue(newValue, forKey: ContactIdentity.ownedIdentityKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.ownedIdentity.rawValue) } } private(set) var persistedTrustOrigins: Set { get { - let items = kvoSafePrimitiveValue(forKey: ContactIdentity.persistedTrustOriginsKey) as! Set + let items = kvoSafePrimitiveValue(forKey: Predicate.Key.persistedTrustOrigins.rawValue) as! Set return Set(items.map { $0.obvContext = self.obvContext; return $0 }) } set { - kvoSafeSetPrimitiveValue(newValue, forKey: ContactIdentity.persistedTrustOriginsKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.persistedTrustOrigins.rawValue) } } private(set) var publishedIdentityDetails: ContactIdentityDetailsPublished? { get { - let res = kvoSafePrimitiveValue(forKey: ContactIdentity.publishedIdentityDetailsKey) as! ContactIdentityDetailsPublished? + let res = kvoSafePrimitiveValue(forKey: Predicate.Key.publishedIdentityDetails.rawValue) as! ContactIdentityDetailsPublished? res?.delegateManager = delegateManager res?.obvContext = self.obvContext return res } set { - kvoSafeSetPrimitiveValue(newValue, forKey: ContactIdentity.publishedIdentityDetailsKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.publishedIdentityDetails.rawValue) } } private(set) var trustedIdentityDetails: ContactIdentityDetailsTrusted { get { - let res = kvoSafePrimitiveValue(forKey: ContactIdentity.trustedIdentityDetailsKey) as! ContactIdentityDetailsTrusted + let res = kvoSafePrimitiveValue(forKey: Predicate.Key.trustedIdentityDetails.rawValue) as! ContactIdentityDetailsTrusted res.delegateManager = delegateManager res.obvContext = self.obvContext return res } set { - kvoSafeSetPrimitiveValue(newValue, forKey: ContactIdentity.trustedIdentityDetailsKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.trustedIdentityDetails.rawValue) } } @@ -160,6 +158,7 @@ final class ContactIdentity: NSManagedObject, ObvManagedObject { // The following vars are only used to implement the ContactDeleted notification private var ownedIdentityCryptoIdentityOnDeletion: ObvCryptoIdentity? + private var rawIdentityOnDeletion: Data? private var trustLevelWasIncreased = false @@ -206,7 +205,7 @@ final class ContactIdentity: NSManagedObject, ObvManagedObject { self.init(entity: entityDescription, insertInto: obvContext) // Simple attributes - self.cryptoIdentity = cryptoIdentity + self.rawIdentity = cryptoIdentity.getIdentity() self.isOneToOne = isOneToOne // Simple relationships @@ -246,7 +245,7 @@ final class ContactIdentity: NSManagedObject, ObvManagedObject { fileprivate convenience init(backupItem: ContactIdentityBackupItem, ownedIdentityIdentity: Data, within obvContext: ObvContext) { let entityDescription = NSEntityDescription.entity(forEntityName: ContactIdentity.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) - self.cryptoIdentity = backupItem.cryptoIdentity + self.rawIdentity = backupItem.rawIdentity self.trustLevelRaw = backupItem.trustLevelRaw self.isRevokedAsCompromised = backupItem.isRevokedAsCompromised self.isForcefullyTrustedByUser = backupItem.isForcefullyTrustedByUser @@ -254,6 +253,8 @@ final class ContactIdentity: NSManagedObject, ObvManagedObject { self.ownedIdentityIdentity = ownedIdentityIdentity } + + /// Used when restoring a backup fileprivate func restoreRelationships(contactGroupsOwned: Set, persistedTrustOrigins: Set, publishedIdentityDetails: ContactIdentityDetailsPublished?, trustedIdentityDetails: ContactIdentityDetailsTrusted) { /* contactGroups is set within ContactGroup */ self.contactGroupsOwned = contactGroupsOwned @@ -265,13 +266,44 @@ final class ContactIdentity: NSManagedObject, ObvManagedObject { } + /// Used when restoring a snapshot + fileprivate func restoreRelationships(persistedTrustOrigins: Set, publishedIdentityDetails: ContactIdentityDetailsPublished?, trustedIdentityDetails: ContactIdentityDetailsTrusted) { + /* contactGroups is set within ContactGroup */ + /* contactGroupsOwned is set within ContactGroup */ + self.devices = Set() + /* ownedIdentity is set within OwnedIdentity */ + self.persistedTrustOrigins = persistedTrustOrigins + self.publishedIdentityDetails = publishedIdentityDetails + self.trustedIdentityDetails = trustedIdentityDetails + } + + private var isInsertedWhileRestoringSyncSnapshot = false + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + fileprivate convenience init(snapshotNode: ContactIdentitySyncSnapshotNode, contactCryptoId: ObvCryptoIdentity, ownedIdentityIdentity: Data, within obvContext: ObvContext) throws { + let entityDescription = NSEntityDescription.entity(forEntityName: ContactIdentity.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + self.rawIdentity = contactCryptoId.getIdentity() + self.trustLevelRaw = snapshotNode.trustLevelRaw ?? TrustLevel.zero.rawValue + self.isRevokedAsCompromised = snapshotNode.isRevokedAsCompromised ?? false + self.isForcefullyTrustedByUser = snapshotNode.isForcefullyTrustedByUser ?? false + self.isOneToOne = snapshotNode.isOneToOne ?? false + self.ownedIdentityIdentity = ownedIdentityIdentity + self.isCertifiedByOwnKeycloak = false // This is updated later, in the restoreRelationships(associations:prng:customDeviceName:delegateManager:within:) of OwnedIdentitySyncSnapshotNode + + // Prevents the sending of notifications + isInsertedWhileRestoringSyncSnapshot = true + } + + func delete(delegateManager: ObvIdentityDelegateManager, failIfContactIsPartOfACommonGroup: Bool, within obvContext: ObvContext) throws { self.delegateManager = delegateManager guard let ownedIdentity else { throw Self.makeError(message: "The owned identity associated to the contact is nil") } + guard let cryptoIdentity = self.cryptoIdentity else { assertionFailure(); throw makeError(message: "Could not decode identity") } if failIfContactIsPartOfACommonGroup { - let numberOfCommonGroupV2 = try ContactGroupV2.countAllContactGroupV2WithContact(ownedIdentity: ownedIdentity.cryptoIdentity, contactIdentity: self.cryptoIdentity, delegateManager: delegateManager, within: obvContext) + let numberOfCommonGroupV2 = try ContactGroupV2.countAllContactGroupV2WithContact(ownedIdentity: ownedIdentity.cryptoIdentity, contactIdentity: cryptoIdentity, delegateManager: delegateManager, within: obvContext) guard numberOfCommonGroupV2 == 0 else { assertionFailure() throw Self.makeError(message: "Cannot delete a contact if she is part of a common group v2") @@ -284,6 +316,10 @@ final class ContactIdentity: NSManagedObject, ObvManagedObject { obvContext.delete(self) } + func setDateOfLastBootstrappedContactDeviceDiscovery(to newDate: Date) { + self.rawDateOfLastBootstrappedContactDeviceDiscovery = newDate + } + } @@ -307,8 +343,10 @@ extension ContactIdentity { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ContactIdentity.entityName) guard let obvContext = self.obvContext else { assertionFailure(); throw makeError(message: "Could not find ObvContext") } + guard let cryptoIdentity = self.cryptoIdentity else { assertionFailure(); throw makeError(message: "Could not decode identity") } guard let ownedIdentity else { + assertionFailure() throw Self.makeError(message: "The owned identity associated to the contact is nil") } @@ -336,7 +374,7 @@ extension ContactIdentity { // Among the returned revocation, look for those that have a compromised type. If there is one, this contact should be revoked as compromised and we return. // If the identity is not compromised, look for revocations that are more recent than the details signature, and uncertify the identity if one is found - let revocations = try KeycloakRevokedIdentity.get(keycloakServer: ownKeycloakServer, identity: self.cryptoIdentity) + let revocations = try KeycloakRevokedIdentity.get(keycloakServer: ownKeycloakServer, identity: cryptoIdentity) do { let revocationsCompromised = revocations.filter({ (try? $0.revocationType) == .compromised }) @@ -413,8 +451,9 @@ extension ContactIdentity { .compactMap({ $0.contactGroup }) .filter({ $0.groupIdentifier?.category == .keycloak }) .forEach { keycloakGroup in + guard let cryptoIdentity else { assertionFailure(); return } do { - try keycloakGroup.moveOtherMemberToPendingMembersOfKeycloakGroup(otherMemberCryptoIdentity: self.cryptoIdentity, delegateManager: delegateManager) + try keycloakGroup.moveOtherMemberToPendingMembersOfKeycloakGroup(otherMemberCryptoIdentity: cryptoIdentity, delegateManager: delegateManager) } catch { assertionFailure(error.localizedDescription) } @@ -425,6 +464,7 @@ extension ContactIdentity { func getSignedUserDetails(identityPhotosDirectory: URL) throws -> SignedObvKeycloakUserDetails? { + guard isActive else { return nil } let details = publishedIdentityDetails ?? trustedIdentityDetails guard let identityDetails = details.getIdentityDetails(identityPhotosDirectory: identityPhotosDirectory) else { throw Self.makeError(message: "Failed to get signed details as we could not get the contact identity details") @@ -622,7 +662,7 @@ extension ContactIdentity { extension ContactIdentity { - func addIfNotExistDeviceWith(uid: UID, flowId: FlowIdentifier) throws { + func addIfNotExistDeviceWith(uid: UID, createdDuringChannelCreation: Bool, flowId: FlowIdentifier) throws { guard self.isActive else { throw makeError(message: "Cannot add a device to an inactive contact") } guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvIdentityDelegateManager.defaultLogSubsystem, category: "ContactIdentity") @@ -632,7 +672,7 @@ extension ContactIdentity { let log = OSLog(subsystem: delegateManager.logSubsystem, category: "ContactIdentity") let existingDeviceUids = devices.map { $0.uid } if !existingDeviceUids.contains(uid) { - guard ContactDevice(uid: uid, contactIdentity: self, flowId: flowId, delegateManager: delegateManager) != nil else { + guard ContactDevice(uid: uid, contactIdentity: self, createdDuringChannelCreation: createdDuringChannelCreation, flowId: flowId, delegateManager: delegateManager) != nil else { os_log("Could not add a contact device", log: log, type: .fault) throw ContactIdentity.makeError(message: "Could not add a contact device") } @@ -676,6 +716,7 @@ extension ContactIdentity { capabilities.insert(capability) } } + assert(capabilities.contains(.oneToOneContacts)) return capabilities } @@ -693,6 +734,37 @@ extension ContactIdentity { } +// MARK: - Syncing between owned devices + +extension ContactIdentity { + + func processTrustContactDetailsSyncAtom(serializedIdentityDetailsElements: Data, delegateManager: ObvIdentityDelegateManager) throws { + let identityDetailsElements = try IdentityDetailsElements(serializedIdentityDetailsElements) + guard let publishedIdentityDetails else { + // No published details to trust, nothing left to do + return + } + // If the local published for this contact do match the details the user decided to trust on another owned device, + // we trust these published now. + // First first construct a IdentityDetailsElements struct on the basis of the local, published details of the contact + guard let localPublishedIdentityDetailsElements = publishedIdentityDetails.getIdentityDetailsElements(identityPhotosDirectory: delegateManager.identityPhotosDirectory) else { + assertionFailure() + throw Self.makeError(message: "Could not construct local published identity details elements") + } + // We can compare the IdentityDetailsElements that were trusted on the other owned device with the published IdentityDetailsElements on this device + // If they are identical, we can trust the local published details + if identityDetailsElements.fieldsAreTheSameButVersionAndSignedDetailsAreNotConsidered(than: localPublishedIdentityDetailsElements) { + guard let obvIdentityDetails = publishedIdentityDetails.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory) else { + assertionFailure() + throw Self.makeError(message: "Could not construct local published identity details") + } + try self.updateTrustedDetailsWithPublishedDetails(obvIdentityDetails, delegateManager: delegateManager) + } + } + +} + + // MARK: - Convenience DB getters extension ContactIdentity { @@ -703,17 +775,71 @@ extension ContactIdentity { struct Predicate { enum Key: String { + // Attributes case isCertifiedByOwnKeycloak = "isCertifiedByOwnKeycloak" + case isForcefullyTrustedByUser = "isForcefullyTrustedByUser" case isOneToOne = "isOneToOne" - case cryptoIdentity = "cryptoIdentity" + case isRevokedAsCompromised = "isRevokedAsCompromised" + case ownedIdentityIdentity = "ownedIdentityIdentity" + case rawDateOfLastBootstrappedContactDeviceDiscovery = "rawDateOfLastBootstrappedContactDeviceDiscovery" + case rawIdentity = "rawIdentity" + case trustLevelRaw = "trustLevelRaw" + // Relationships + case contactGroups = "contactGroups" + case contactGroupsOwned = "contactGroupsOwned" + case devices = "devices" + case groupMemberships = "groupMemberships" + case ownedIdentity = "ownedIdentity" + case persistedTrustOrigins = "persistedTrustOrigins" + case publishedIdentityDetails = "publishedIdentityDetails" + case trustedIdentityDetails = "trustedIdentityDetails" + } + fileprivate static func withContactCryptoIdentity(_ contactIdentity: ObvCryptoIdentity) -> NSPredicate { + NSPredicate(Key.rawIdentity, EqualToData: contactIdentity.getIdentity()) + } + fileprivate static func withOwnedCryptoIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity) -> NSPredicate { + NSPredicate(Key.ownedIdentityIdentity, EqualToData: ownedCryptoIdentity.getIdentity()) + } + fileprivate static func withOwnedIdentiy(_ ownedIdentity: OwnedIdentity) -> NSPredicate { + withOwnedCryptoIdentity(ownedIdentity.cryptoIdentity) + } + fileprivate static var withoutDevice: NSPredicate { + NSPredicate(withZeroCountForKey: Key.devices) + } + } + + static func getDateOfLastBootstrappedContactDeviceDiscovery(contactIdentity: ObvCryptoIdentity, ownedIdentity: ObvCryptoIdentity, within context: NSManagedObjectContext) throws -> Date { + let request: NSFetchRequest = ContactIdentity.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withContactCryptoIdentity(contactIdentity), + Predicate.withOwnedCryptoIdentity(ownedIdentity), + ]) + request.fetchLimit = 1 + guard let item = (try context.fetch(request)).first else { + throw Self.makeError(message: "Could not find contact") } + return item.rawDateOfLastBootstrappedContactDeviceDiscovery ?? .distantPast } static func get(contactIdentity: ObvCryptoIdentity, ownedIdentity: ObvCryptoIdentity, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws -> ContactIdentity? { let request: NSFetchRequest = ContactIdentity.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@", - ContactIdentity.cryptoIdentityKey, contactIdentity, - ContactIdentity.ownedIdentityCryptoIdentityKey, ownedIdentity) + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withContactCryptoIdentity(contactIdentity), + Predicate.withOwnedCryptoIdentity(ownedIdentity), + ]) + request.fetchLimit = 1 + let item = (try obvContext.fetch(request)).first + item?.delegateManager = delegateManager + return item + } + + static func get(contactIdentity: ObvCryptoIdentity, ownedIdentity: OwnedIdentity, delegateManager: ObvIdentityDelegateManager) throws -> ContactIdentity? { + guard let obvContext = ownedIdentity.obvContext else { throw ObvIdentityManagerError.contextIsNil } + let request: NSFetchRequest = ContactIdentity.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withContactCryptoIdentity(contactIdentity), + Predicate.withOwnedCryptoIdentity(ownedIdentity.cryptoIdentity), + ]) request.fetchLimit = 1 let item = (try obvContext.fetch(request)).first item?.delegateManager = delegateManager @@ -725,12 +851,25 @@ extension ContactIdentity { let items = try? obvContext.fetch(request) return items?.map { $0.delegateManager = delegateManager; return $0 } } + + static func getCryptoIdentitiesOfContactsWithoutDevice(ownedCryptoId: ObvCryptoIdentity, within context: NSManagedObjectContext) throws -> Set { + let request: NSFetchRequest = ContactIdentity.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnedCryptoIdentity(ownedCryptoId), + Predicate.withoutDevice, + ]) + request.fetchBatchSize = 500 + let items = try context.fetch(request) + let contactCryptoIdentities = items.compactMap({ $0.cryptoIdentity }) + return Set(contactCryptoIdentities) + } static func exists(cryptoIdentity: ObvCryptoIdentity, ownedIdentity: OwnedIdentity, within obvContext: ObvContext) throws -> Bool { let request: NSFetchRequest = ContactIdentity.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@", - ContactIdentity.cryptoIdentityKey, cryptoIdentity, - ContactIdentity.ownedIdentityCryptoIdentityKey, ownedIdentity.ownedCryptoIdentity.getObvCryptoIdentity()) + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withContactCryptoIdentity(cryptoIdentity), + Predicate.withOwnedIdentiy(ownedIdentity), + ]) return try obvContext.count(for: request) != 0 } } @@ -748,6 +887,7 @@ extension ContactIdentity { if let ownedIdentity { ownedIdentityCryptoIdentityOnDeletion = ownedIdentity.cryptoIdentity } + self.rawIdentityOnDeletion = rawIdentity } override func willSave() { @@ -764,6 +904,14 @@ extension ContactIdentity { defer { changedKeys.removeAll() + isInsertedWhileRestoringSyncSnapshot = false + } + + guard !isInsertedWhileRestoringSyncSnapshot else { + assert(isInserted) + let log = OSLog.init(subsystem: ObvIdentityDelegateManager.defaultLogSubsystem, category: String(describing: Self.self)) + os_log("Insertion of a ContactIdentity during a snapshot restore --> we don't send any notification", log: log, type: .info) + return } guard let delegateManager = delegateManager else { @@ -777,7 +925,7 @@ extension ContactIdentity { assert(obvContext != nil) let flowId = obvContext?.flowId ?? FlowIdentifier() - if isInserted, let ownedIdentity { + if isInserted, let ownedIdentity, let cryptoIdentity = self.cryptoIdentity { do { os_log("Sending a ContactIdentityIsNowTrusted notification", log: log, type: .debug) @@ -787,7 +935,7 @@ extension ContactIdentity { ObvIdentityNotificationNew.contactTrustLevelWasIncreased( ownedIdentity: ownedIdentity.cryptoIdentity, - contactIdentity: self.cryptoIdentity, + contactIdentity: cryptoIdentity, trustLevelOfContactIdentity: self.trustLevel, isOneToOne: self.isOneToOne, flowId: flowId) @@ -799,23 +947,23 @@ extension ContactIdentity { flowId: flowId) .postOnBackgroundQueue(within: delegateManager.notificationDelegate) - } else if isDeleted, let ownedIdentityCryptoIdentityOnDeletion { + } else if isDeleted, let ownedIdentityCryptoIdentityOnDeletion, let rawIdentityOnDeletion, let cryptoIdentity = ObvCryptoIdentity(from: rawIdentityOnDeletion) { os_log("Sending a ContactWasDeleted notification", log: log, type: .debug) ObvIdentityNotificationNew.contactWasDeleted(ownedCryptoIdentity: ownedIdentityCryptoIdentityOnDeletion, contactCryptoIdentity: cryptoIdentity) .postOnBackgroundQueue(within: delegateManager.notificationDelegate) - } else if let ownedIdentity { + } else if let ownedIdentity, let cryptoIdentity { if !changedKeys.isEmpty { - ObvIdentityNotificationNew.contactWasUpdatedWithinTheIdentityManager(ownedIdentity: ownedIdentity.cryptoIdentity, contactIdentity: self.cryptoIdentity, flowId: flowId) + ObvIdentityNotificationNew.contactWasUpdatedWithinTheIdentityManager(ownedIdentity: ownedIdentity.cryptoIdentity, contactIdentity: cryptoIdentity, flowId: flowId) .postOnBackgroundQueue(within: delegateManager.notificationDelegate) } - if changedKeys.contains(ContactIdentity.isForcefullyTrustedByUserKey) || changedKeys.contains(ContactIdentity.isRevokedAsCompromisedKey) { + if changedKeys.contains(Predicate.Key.isForcefullyTrustedByUser.rawValue) || changedKeys.contains(Predicate.Key.isRevokedAsCompromised.rawValue) { ObvIdentityNotificationNew.contactIsActiveChanged( ownedIdentity: ownedIdentity.cryptoIdentity, @@ -826,7 +974,7 @@ extension ContactIdentity { } - if changedKeys.contains(ContactIdentity.isRevokedAsCompromisedKey) && self.isRevokedAsCompromised { + if changedKeys.contains(Predicate.Key.isRevokedAsCompromised.rawValue) && self.isRevokedAsCompromised { ObvIdentityNotificationNew.contactWasRevokedAsCompromised( ownedIdentity: ownedIdentity.cryptoIdentity, @@ -858,11 +1006,11 @@ extension ContactIdentity { } - if trustLevelWasIncreased, let ownedIdentity { + if trustLevelWasIncreased, let ownedIdentity, let cryptoIdentity { ObvIdentityNotificationNew.contactTrustLevelWasIncreased( ownedIdentity: ownedIdentity.cryptoIdentity, - contactIdentity: self.cryptoIdentity, + contactIdentity: cryptoIdentity, trustLevelOfContactIdentity: self.trustLevel, isOneToOne: self.isOneToOne, flowId: flowId) @@ -881,7 +1029,7 @@ extension ContactIdentity { extension ContactIdentity { var backupItem: ContactIdentityBackupItem { - return ContactIdentityBackupItem(cryptoIdentity: cryptoIdentity, + return ContactIdentityBackupItem(rawIdentity: rawIdentity, persistedTrustOrigins: persistedTrustOrigins, publishedIdentityDetails: publishedIdentityDetails, trustedIdentityDetails: trustedIdentityDetails, @@ -897,7 +1045,7 @@ extension ContactIdentity { struct ContactIdentityBackupItem: Codable, Hashable { - fileprivate let cryptoIdentity: ObvCryptoIdentity + fileprivate let rawIdentity: Data fileprivate let persistedTrustOrigins: Set fileprivate let publishedIdentityDetails: ContactIdentityDetailsPublishedBackupItem? fileprivate let trustedIdentityDetails: ContactIdentityDetailsTrustedBackupItem @@ -914,8 +1062,8 @@ struct ContactIdentityBackupItem: Codable, Hashable { return NSError(domain: errorDomain, code: 0, userInfo: userInfo) } - fileprivate init(cryptoIdentity: ObvCryptoIdentity, persistedTrustOrigins: Set, publishedIdentityDetails: ContactIdentityDetailsPublished?, trustedIdentityDetails: ContactIdentityDetailsTrusted, contactGroupsOwned: Set, trustLevelRaw: String, isRevokedAsCompromised: Bool, isForcefullyTrustedByUser: Bool, isOneToOne: Bool) { - self.cryptoIdentity = cryptoIdentity + fileprivate init(rawIdentity: Data, persistedTrustOrigins: Set, publishedIdentityDetails: ContactIdentityDetailsPublished?, trustedIdentityDetails: ContactIdentityDetailsTrusted, contactGroupsOwned: Set, trustLevelRaw: String, isRevokedAsCompromised: Bool, isForcefullyTrustedByUser: Bool, isOneToOne: Bool) { + self.rawIdentity = rawIdentity self.persistedTrustOrigins = Set(persistedTrustOrigins.map { $0.backupItem }) self.publishedIdentityDetails = publishedIdentityDetails?.backupItem self.trustedIdentityDetails = trustedIdentityDetails.backupItem @@ -927,7 +1075,7 @@ struct ContactIdentityBackupItem: Codable, Hashable { } enum CodingKeys: String, CodingKey { - case cryptoIdentity = "contact_identity" + case rawIdentity = "contact_identity" case persistedTrustOrigins = "trust_origins" case publishedIdentityDetails = "published_details" case trustedIdentityDetails = "trusted_details" @@ -940,7 +1088,7 @@ struct ContactIdentityBackupItem: Codable, Hashable { func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(cryptoIdentity.getIdentity(), forKey: .cryptoIdentity) + try container.encode(rawIdentity, forKey: .rawIdentity) try container.encode(persistedTrustOrigins, forKey: .persistedTrustOrigins) try container.encodeIfPresent(publishedIdentityDetails, forKey: .publishedIdentityDetails) try container.encode(trustedIdentityDetails, forKey: .trustedIdentityDetails) @@ -953,11 +1101,7 @@ struct ContactIdentityBackupItem: Codable, Hashable { init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) - let identity = try values.decode(Data.self, forKey: .cryptoIdentity) - guard let cryptoIdentity = ObvCryptoIdentity(from: identity) else { - throw ContactIdentityBackupItem.makeError(message: "Could not parse crypto identity") - } - self.cryptoIdentity = cryptoIdentity + self.rawIdentity = try values.decode(Data.self, forKey: .rawIdentity) self.persistedTrustOrigins = try values.decode(Set.self, forKey: .persistedTrustOrigins) self.publishedIdentityDetails = try values.decodeIfPresent(ContactIdentityDetailsPublishedBackupItem.self, forKey: .publishedIdentityDetails) self.trustedIdentityDetails = try values.decode(ContactIdentityDetailsTrustedBackupItem.self, forKey: .trustedIdentityDetails) @@ -996,3 +1140,143 @@ struct ContactIdentityBackupItem: Codable, Hashable { } } + + +// MARK: - For Snapshot purposes + +extension ContactIdentity { + + var syncSnapshot: ContactIdentitySyncSnapshotNode { + return ContactIdentitySyncSnapshotNode( + persistedTrustOrigins: persistedTrustOrigins, + publishedIdentityDetails: publishedIdentityDetails, + trustedIdentityDetails: trustedIdentityDetails, + trustLevelRaw: trustLevelRaw, + isRevokedAsCompromised: isRevokedAsCompromised, + isForcefullyTrustedByUser: isForcefullyTrustedByUser, + isOneToOne: isOneToOne) + } + +} + + + +struct ContactIdentitySyncSnapshotNode: ObvSyncSnapshotNode { + + private let domain: Set + private let trustedIdentityDetails: ContactIdentityDetailsTrustedSyncSnapShotNode? + private let publishedIdentityDetails: ContactIdentityDetailsPublishedSyncSnapshotNode? + private let persistedTrustOrigins: Set + fileprivate let isOneToOne: Bool? + fileprivate let isRevokedAsCompromised: Bool? + fileprivate let isForcefullyTrustedByUser: Bool? + fileprivate let trustLevelRaw: String? // only used for backup/transfer, not taken into account when comparing for synchronization + + let id = Self.generateIdentifier() + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case trustedIdentityDetails = "trusted_details" + case publishedIdentityDetails = "published_details" + case isOneToOne = "one_to_one" + case isRevokedAsCompromised = "revoked" + case isForcefullyTrustedByUser = "forcefully_trusted" + case trustLevelRaw = "trust_level" + case persistedTrustOrigins = "trust_origins" + case domain = "domain" + } + + + fileprivate init(persistedTrustOrigins: Set, publishedIdentityDetails: ContactIdentityDetailsPublished?, trustedIdentityDetails: ContactIdentityDetailsTrusted, trustLevelRaw: String, isRevokedAsCompromised: Bool, isForcefullyTrustedByUser: Bool, isOneToOne: Bool) { + self.trustedIdentityDetails = trustedIdentityDetails.snapshotNode + self.publishedIdentityDetails = publishedIdentityDetails?.snapshotNode + self.persistedTrustOrigins = Set(persistedTrustOrigins.map { $0.snapshotItem }) + self.trustLevelRaw = trustLevelRaw + self.isRevokedAsCompromised = isRevokedAsCompromised ? true : nil + self.isForcefullyTrustedByUser = isForcefullyTrustedByUser ? true : nil + self.isOneToOne = isOneToOne ? true : nil + self.domain = Self.defaultDomain + } + + + // Synthesized implementation of encode(to encoder: Encoder) + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.trustedIdentityDetails = try values.decodeIfPresent(ContactIdentityDetailsTrustedSyncSnapShotNode.self, forKey: .trustedIdentityDetails) + self.publishedIdentityDetails = try values.decodeIfPresent(ContactIdentityDetailsPublishedSyncSnapshotNode.self, forKey: .publishedIdentityDetails) + self.persistedTrustOrigins = try values.decodeIfPresent(Set.self, forKey: .persistedTrustOrigins) ?? Set([]) + self.isOneToOne = try values.decodeIfPresent(Bool.self, forKey: .isOneToOne) + self.isRevokedAsCompromised = try values.decodeIfPresent(Bool.self, forKey: .isRevokedAsCompromised) + self.isForcefullyTrustedByUser = try values.decodeIfPresent(Bool.self, forKey: .isForcefullyTrustedByUser) + self.trustLevelRaw = try values.decodeIfPresent(String.self, forKey: .trustLevelRaw) + } + + + func restoreInstance(within obvContext: ObvContext, contactCryptoId: ObvCryptoIdentity, ownedIdentityIdentity: Data, associations: inout SnapshotNodeManagedObjectAssociations) throws { + + guard domain.contains(.trustedIdentityDetails) else { + throw ObvError.tryingToRestoreIncompleteSnapshot + } + + let contactIdentity = try ContactIdentity(snapshotNode: self, contactCryptoId: contactCryptoId, ownedIdentityIdentity: ownedIdentityIdentity, within: obvContext) + try associations.associate(contactIdentity, to: self) + + if domain.contains(.persistedTrustOrigins) { + try persistedTrustOrigins.forEach { trustOriginSnapshotItem in + try trustOriginSnapshotItem.restoreInstance(within: obvContext, associations: &associations) + } + } + + if domain.contains(.publishedIdentityDetails) { + try publishedIdentityDetails?.restoreInstance(within: obvContext, associations: &associations) + } + + try trustedIdentityDetails?.restoreInstance(within: obvContext, associations: &associations) + + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + + let contactIdentity: ContactIdentity = try associations.getObject(associatedTo: self, within: obvContext) + + // Restore the relationships of this instance + + let persistedTrustOrigins: Set = Set(try self.persistedTrustOrigins.map({ try associations.getObject(associatedTo: $0, within: obvContext) })) + + let publishedIdentityDetails: ContactIdentityDetailsPublished? = try associations.getObjectIfPresent(associatedTo: self.publishedIdentityDetails, within: obvContext) + + guard let trustedIdentityDetails else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteSnapshot + } + + let contactIdentityDetailsTrusted: ContactIdentityDetailsTrusted = try associations.getObject(associatedTo: trustedIdentityDetails, within: obvContext) + + contactIdentity.restoreRelationships(persistedTrustOrigins: persistedTrustOrigins, + publishedIdentityDetails: publishedIdentityDetails, + trustedIdentityDetails: contactIdentityDetailsTrusted) + + + // Restore the relationships with this instance relationships + + try self.persistedTrustOrigins.forEach { try $0.restoreRelationships(associations: associations, within: obvContext) } + + try self.publishedIdentityDetails?.restoreRelationships(associations: associations, within: obvContext) + + try self.trustedIdentityDetails?.restoreRelationships(associations: associations, within: obvContext) + + } + + + enum ObvError: Error { + case tryingToRestoreIncompleteSnapshot + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetails.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetails.swift index 3a139ce8..36e43d64 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetails.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetails.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -64,9 +64,14 @@ class ContactIdentityDetails: NSManagedObject, ObvManagedObject { } func getPhotoURL(identityPhotosDirectory: URL) -> URL? { + guard let url = getRawPhotoURL(identityPhotosDirectory: identityPhotosDirectory) else { return nil } + guard FileManager.default.fileExists(atPath: url.path) else { assertionFailure(); return nil } + return url + } + + private func getRawPhotoURL(identityPhotosDirectory: URL) -> URL? { guard let photoFilename = photoFilename else { return nil } let url = identityPhotosDirectory.appendingPathComponent(photoFilename) - guard FileManager.default.fileExists(atPath: url.path) else { assertionFailure(); return nil } return url } @@ -218,10 +223,10 @@ extension ContactIdentityDetails { let contactCryptoIdentity = self.contactIdentity.cryptoIdentity try obvContext.addContextDidSaveCompletionHandler { error in guard error == nil else { assertionFailure(); return } - if self is ContactIdentityDetailsPublished { + if self is ContactIdentityDetailsPublished, let contactCryptoIdentity { ObvIdentityNotificationNew.publishedPhotoOfContactIdentityHasBeenUpdated(ownedIdentity: ownedCryptoIdentity, contactIdentity: contactCryptoIdentity) .postOnBackgroundQueue(within: notificationDelegate) - } else if self is ContactIdentityDetailsTrusted { + } else if self is ContactIdentityDetailsTrusted, let contactCryptoIdentity { ObvIdentityNotificationNew.trustedPhotoOfContactIdentityHasBeenUpdated(ownedIdentity: ownedCryptoIdentity, contactIdentity: contactCryptoIdentity) .postOnBackgroundQueue(within: notificationDelegate) } else { @@ -249,6 +254,9 @@ extension ContactIdentityDetails { static var withoutPhotoFilename: NSPredicate { NSPredicate(withNilValueForKey: Key.photoFilename) } + static var withPhotoFilename: NSPredicate { + NSPredicate(withNonNilValueForKey: Key.photoFilename) + } static var withPhotoServerKey: NSPredicate { NSPredicate(withNonNilValueForKey: Key.photoServerKeyEncoded) } @@ -271,8 +279,25 @@ extension ContactIdentityDetails { let photoFilenames = Set(details.compactMap({ $0.photoFilename })) return photoFilenames } + + static func getInfosAboutContactsHavingPhotoFilename(identityPhotosDirectory: URL, within obvContext: ObvContext) throws -> [(ownedCryptoId: ObvCryptoIdentity, contactCryptoId: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements, photoURL: URL)] { + let request: NSFetchRequest = ContactIdentityDetails.fetchRequest() + request.predicate = Predicate.withPhotoFilename + let items = try obvContext.fetch(request) + let results: [(ownedCryptoId: ObvCryptoIdentity, contactCryptoId: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements, photoURL: URL)] = items.compactMap { details in + guard let contactCryptoId = details.contactIdentity.cryptoIdentity, + let ownedCryptoId = details.contactIdentity.ownedIdentity?.cryptoIdentity, + let contactIdentityDetailsElements = details.getIdentityDetailsElements(identityPhotosDirectory: identityPhotosDirectory), + let photoURL = details.getRawPhotoURL(identityPhotosDirectory: identityPhotosDirectory) else { + return nil + } + return (ownedCryptoId, contactCryptoId, contactIdentityDetailsElements, photoURL) + } + return results + } + static func getAllWithMissingPhotoFilename(within obvContext: ObvContext) throws -> [ContactIdentityDetails] { let request: NSFetchRequest = ContactIdentityDetails.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetailsPublished.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetailsPublished.swift index e0bac362..f26f4513 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetailsPublished.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetailsPublished.swift @@ -52,6 +52,7 @@ final class ContactIdentityDetailsPublished: ContactIdentityDetails, ObvErrorMak } + /// Used *exclusively* during a backup restore for creating an instance, relatioships are recreater in a second step fileprivate convenience init(backupItem: ContactIdentityDetailsPublishedBackupItem, within obvContext: ObvContext) { self.init(serializedIdentityCoreDetails: backupItem.serializedIdentityCoreDetails, @@ -61,6 +62,16 @@ final class ContactIdentityDetailsPublished: ContactIdentityDetails, ObvErrorMak within: obvContext) } + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + fileprivate convenience init(snapshotNode: ContactIdentityDetailsPublishedSyncSnapshotNode, within obvContext: ObvContext) { + self.init(serializedIdentityCoreDetails: snapshotNode.serializedIdentityCoreDetails, + version: snapshotNode.version, + photoServerKeyAndLabel: snapshotNode.photoServerKeyAndLabel, + entityName: ContactIdentityDetailsPublished.entityName, + within: obvContext) + } + } @@ -116,11 +127,11 @@ extension ContactIdentityDetailsPublished { } - if !isDeleted, let ownedIdentity = contactIdentity.ownedIdentity { + if !isDeleted, let ownedIdentity = contactIdentity.ownedIdentity, let contactCryptoIdentity = self.contactIdentity.cryptoIdentity { if let publishedIdentityDetails = self.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory) { let NotificationType = ObvIdentityNotification.NewPublishedContactIdentityDetails.self - let userInfo = [NotificationType.Key.contactCryptoIdentity: self.contactIdentity.cryptoIdentity, + let userInfo = [NotificationType.Key.contactCryptoIdentity: contactCryptoIdentity, NotificationType.Key.ownedCryptoIdentity: ownedIdentity.cryptoIdentity, NotificationType.Key.publishedIdentityDetails: publishedIdentityDetails] as [String: Any] notificationDelegate.post(name: NotificationType.name, userInfo: userInfo) @@ -257,3 +268,142 @@ struct ContactIdentityDetailsPublishedBackupItem: Codable, Hashable { } } + + +// MARK: - For Snapshot purposes + +extension ContactIdentityDetailsPublished { + + var snapshotNode: ContactIdentityDetailsPublishedSyncSnapshotNode { + return ContactIdentityDetailsPublishedSyncSnapshotNode( + serializedIdentityCoreDetails: serializedIdentityCoreDetails, + photoServerKeyAndLabel: photoServerKeyAndLabel, + version: self.version) + } + +} + + +struct ContactIdentityDetailsPublishedSyncSnapshotNode: ObvSyncSnapshotNode { + + fileprivate let serializedIdentityCoreDetails: Data + fileprivate let photoServerKeyAndLabel: PhotoServerKeyAndLabel? + fileprivate let version: Int + + private let domain: Set + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + let id = Self.generateIdentifier() + + func hash(into hasher: inout Hasher) { + hasher.combine(id) + } + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + // Attributes inherited from OwnedIdentityDetails + case serializedIdentityCoreDetails = "serialized_details" + case version = "version" + // Local attributes + case photoServerKeyEncoded = "photo_server_key" + case photoServerLabel = "photo_server_label" + // Domain + case domain = "domain" + } + + fileprivate init(serializedIdentityCoreDetails: Data, photoServerKeyAndLabel: PhotoServerKeyAndLabel?, version: Int) { + self.serializedIdentityCoreDetails = serializedIdentityCoreDetails + self.photoServerKeyAndLabel = photoServerKeyAndLabel + self.version = version + self.domain = Self.defaultDomain + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + // Attributes inherited from OwnedIdentityDetails + guard let serializedIdentityCoreDetailsAsString = String(data: serializedIdentityCoreDetails, encoding: .utf8) else { + throw ObvError.couldNotSerializeCoreDetails + } + try container.encode(serializedIdentityCoreDetailsAsString, forKey: .serializedIdentityCoreDetails) + try container.encode(version, forKey: .version) + // Local attributes + let photoServerKeyEncoded = photoServerKeyAndLabel?.key.obvEncode().rawData + try container.encodeIfPresent(photoServerKeyEncoded, forKey: .photoServerKeyEncoded) + try container.encodeIfPresent(photoServerKeyAndLabel?.label.raw, forKey: .photoServerLabel) + // Domain + try container.encode(domain, forKey: .domain) + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + guard domain.contains(.version) && domain.contains(.serializedIdentityCoreDetails) else { throw ObvError.tryingToRestoreIncompleteSnapshot } + + let serializedIdentityCoreDetailsAsString = try values.decode(String.self, forKey: .serializedIdentityCoreDetails) + guard let serializedIdentityCoreDetailsAsData = serializedIdentityCoreDetailsAsString.data(using: .utf8) else { + throw ObvError.couldNotDeserializeCoreDetails + } + self.serializedIdentityCoreDetails = serializedIdentityCoreDetailsAsData + self.version = try values.decode(Int.self, forKey: .version) + + if domain.contains(.photoServerLabel) && domain.contains(.photoServerKeyEncoded) && values.allKeys.contains(.photoServerLabel) && values.allKeys.contains(.photoServerKeyEncoded) { + do { + let photoServerKeyEncodedRaw = try values.decode(Data.self, forKey: .photoServerKeyEncoded) + guard let photoServerKeyEncoded = ObvEncoded(withRawData: photoServerKeyEncodedRaw) else { + throw ObvError.couldNotParsePhotoServerKey + } + let key = try AuthenticatedEncryptionKeyDecoder.decode(photoServerKeyEncoded) + if let photoServerLabelAsData = try? values.decodeIfPresent(Data.self, forKey: .photoServerLabel), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + // Expected + self.photoServerKeyAndLabel = PhotoServerKeyAndLabel(key: key, label: photoServerLabelAsUID) + } else if let photoServerLabelAsUID = try values.decodeIfPresent(UID.self, forKey: .photoServerLabel) { + assertionFailure() + self.photoServerKeyAndLabel = PhotoServerKeyAndLabel(key: key, label: photoServerLabelAsUID) + } else if let photoServerLabelAsString = try? values.decode(String.self, forKey: .photoServerLabel), + let photoServerLabelAsData = Data(base64Encoded: photoServerLabelAsString), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + assertionFailure() + self.photoServerKeyAndLabel = PhotoServerKeyAndLabel(key: key, label: photoServerLabelAsUID) + } else if let photoServerLabelAsString = try? values.decode(String.self, forKey: .photoServerLabel), + let photoServerLabelAsData = Data(hexString: photoServerLabelAsString), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + assertionFailure() + self.photoServerKeyAndLabel = PhotoServerKeyAndLabel(key: key, label: photoServerLabelAsUID) + } else { + throw ObvError.couldNotDecodePhotoServerLabel + } + } catch { + assertionFailure() // In production, continue anyway + self.photoServerKeyAndLabel = nil + } + } else { + self.photoServerKeyAndLabel = nil + } + + } + + + func restoreInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + let contactIdentityDetailsPublished = ContactIdentityDetailsPublished(snapshotNode: self, within: obvContext) + try associations.associate(contactIdentityDetailsPublished, to: self) + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + // Nothing do to here + } + + + enum ObvError: Error { + case couldNotSerializeCoreDetails + case couldNotDeserializeCoreDetails + case tryingToRestoreIncompleteSnapshot + case couldNotParsePhotoServerKey + case couldNotDecodePhotoServerLabel + } +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetailsTrusted.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetailsTrusted.swift index abcf779e..2cbbdf2c 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetailsTrusted.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ContactIdentityDetailsTrusted.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -49,6 +49,7 @@ final class ContactIdentityDetailsTrusted: ContactIdentityDetails { delegateManager: delegateManager) } + /// Used *exclusively* during a backup restore for creating an instance, relatioships are recreater in a second step fileprivate convenience init(backupItem: ContactIdentityDetailsTrustedBackupItem, within obvContext: ObvContext) { self.init(serializedIdentityCoreDetails: backupItem.serializedIdentityCoreDetails, @@ -57,6 +58,17 @@ final class ContactIdentityDetailsTrusted: ContactIdentityDetails { entityName: ContactIdentityDetailsTrusted.entityName, within: obvContext) } + + + /// Used *exclusively* during a backup restore for creating an instance, relatioships are recreater in a second step + fileprivate convenience init(snapshotNode: ContactIdentityDetailsTrustedSyncSnapShotNode, within obvContext: ObvContext) { + self.init(serializedIdentityCoreDetails: snapshotNode.serializedIdentityCoreDetails, + version: snapshotNode.version, + photoServerKeyAndLabel: snapshotNode.photoServerKeyAndLabel, + entityName: ContactIdentityDetailsTrusted.entityName, + within: obvContext) + } + } @@ -127,9 +139,9 @@ extension ContactIdentityDetailsTrusted { if !isDeleted, let ownedIdentity = contactIdentity.ownedIdentity { - if let trustedIdentityDetails = self.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory) { + if let trustedIdentityDetails = self.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory), let contactCryptoIdentity = self.contactIdentity.cryptoIdentity { let NotificationType = ObvIdentityNotification.NewTrustedContactIdentityDetails.self - let userInfo = [NotificationType.Key.contactCryptoIdentity: self.contactIdentity.cryptoIdentity, + let userInfo = [NotificationType.Key.contactCryptoIdentity: contactCryptoIdentity, NotificationType.Key.ownedCryptoIdentity: ownedIdentity.cryptoIdentity, NotificationType.Key.trustedIdentityDetails: trustedIdentityDetails] as [String: Any] notificationDelegate.post(name: NotificationType.name, userInfo: userInfo) @@ -268,3 +280,129 @@ struct ContactIdentityDetailsTrustedBackupItem: Codable, Hashable { } } + + +// MARK: - For Snapshot purposes + +extension ContactIdentityDetailsTrusted { + + var snapshotNode: ContactIdentityDetailsTrustedSyncSnapShotNode { + return ContactIdentityDetailsTrustedSyncSnapShotNode( + serializedIdentityCoreDetails: serializedIdentityCoreDetails, + photoServerKeyAndLabel: photoServerKeyAndLabel, + version: self.version) + } + +} + + +struct ContactIdentityDetailsTrustedSyncSnapShotNode: ObvSyncSnapshotNode { + + fileprivate let serializedIdentityCoreDetails: Data + fileprivate let photoServerKeyAndLabel: PhotoServerKeyAndLabel? + fileprivate let version: Int + private let domain: Set + + let id = Self.generateIdentifier() + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + // Allows to prevent association failures in two items have identical variables + private let transientUuid = UUID() + + static func == (lhs: ContactIdentityDetailsTrustedSyncSnapShotNode, rhs: ContactIdentityDetailsTrustedSyncSnapShotNode) -> Bool { + return lhs.transientUuid == rhs.transientUuid + } + + func hash(into hasher: inout Hasher) { + hasher.combine(transientUuid) + } + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + // Attributes inherited from OwnedIdentityDetails + case serializedIdentityCoreDetails = "serialized_details" + case version = "version" + // Local attributes + case photoServerKeyEncoded = "photo_server_key" + case photoServerLabel = "photo_server_label" + // Domain + case domain = "domain" + } + + fileprivate init(serializedIdentityCoreDetails: Data, photoServerKeyAndLabel: PhotoServerKeyAndLabel?, version: Int) { + self.serializedIdentityCoreDetails = serializedIdentityCoreDetails + self.photoServerKeyAndLabel = photoServerKeyAndLabel + self.version = version + self.domain = Self.defaultDomain + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + // Attributes inherited from OwnedIdentityDetails + guard let serializedIdentityCoreDetailsAsString = String(data: serializedIdentityCoreDetails, encoding: .utf8) else { + throw ObvError.couldNotSerializeCoreDetails + } + try container.encode(serializedIdentityCoreDetailsAsString, forKey: .serializedIdentityCoreDetails) + try container.encode(version, forKey: .version) + // Local attributes + let photoServerKeyEncoded = photoServerKeyAndLabel?.key.obvEncode().rawData + try container.encodeIfPresent(photoServerKeyEncoded, forKey: .photoServerKeyEncoded) + try container.encodeIfPresent(photoServerKeyAndLabel?.label.raw, forKey: .photoServerLabel) + // Domain + try container.encode(domain, forKey: .domain) + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + guard domain.contains(.version) && domain.contains(.serializedIdentityCoreDetails) else { throw ObvError.tryingToRestoreIncompleteSnapshot } + + let serializedIdentityCoreDetailsAsString = try values.decode(String.self, forKey: .serializedIdentityCoreDetails) + guard let serializedIdentityCoreDetailsAsData = serializedIdentityCoreDetailsAsString.data(using: .utf8) else { + throw ObvError.couldNotDeserializeCoreDetails + } + self.serializedIdentityCoreDetails = serializedIdentityCoreDetailsAsData + self.version = try values.decode(Int.self, forKey: .version) + + if domain.contains(.photoServerLabel) && domain.contains(.photoServerKeyEncoded) && values.allKeys.contains(.photoServerLabel) && values.allKeys.contains(.photoServerKeyEncoded) { + if let photoServerKeyEncodedRaw = try values.decodeIfPresent(Data.self, forKey: .photoServerKeyEncoded), + let photoServerKeyEncoded = ObvEncoded(withRawData: photoServerKeyEncodedRaw), + let key = try? AuthenticatedEncryptionKeyDecoder.decode(photoServerKeyEncoded), + let photoServerLabelRaw = try? values.decodeIfPresent(Data.self, forKey: .photoServerLabel), + let photoServerLabelAsUID = UID(uid: photoServerLabelRaw) { + self.photoServerKeyAndLabel = .init(key: key, label: photoServerLabelAsUID) + } else { + assert(!values.allKeys.contains(where: { $0 == .photoServerLabel }), "The key is present, but we did not manage to decode the value") + assert(!values.allKeys.contains(where: { $0 == .photoServerKeyEncoded }), "The key is present, but we did not manage to decode the value") + self.photoServerKeyAndLabel = nil + } + } else { + self.photoServerKeyAndLabel = nil + } + + } + + + func restoreInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + let contactIdentityDetailsTrusted = ContactIdentityDetailsTrusted(snapshotNode: self, within: obvContext) + try associations.associate(contactIdentityDetailsTrusted, to: self) + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + // Nothing do to here + } + + + enum ObvError: Error { + case couldNotSerializeCoreDetails + case couldNotDeserializeCoreDetails + case tryingToRestoreIncompleteSnapshot + case couldNotParsePhotoServerKey + case couldNotDecodePhotoServerLabel + } +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/KeycloakServer.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/KeycloakServer.swift index fae73e80..34aec100 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/KeycloakServer.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/KeycloakServer.swift @@ -55,6 +55,7 @@ final class KeycloakServer: NSManagedObject, ObvManagedObject { @NSManaged private(set) var keycloakUserId: String? @NSManaged private(set) var latestGroupUpdateTimestamp: Date? // Given by the server @NSManaged private(set) var latestRevocationListTimetamp: Date? // Given by the server + @NSManaged private(set) var ownAPIKey: UUID? @NSManaged private(set) var rawAuthState: Data? @NSManaged private var rawJwks: Data @NSManaged private var rawOwnedIdentity: Data @@ -167,6 +168,36 @@ final class KeycloakServer: NSManagedObject, ObvManagedObject { self.rawServerSignatureKey = backupItem.rawServerSignatureKey } + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreated in a second step + fileprivate convenience init(snapshotNode: KeycloakServerSnapshotNode, rawOwnedIdentity: Data, within obvContext: ObvContext) throws { + let entityDescription = NSEntityDescription.entity(forEntityName: KeycloakServer.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + guard let clientId = snapshotNode.clientId else { + assertionFailure() + throw KeycloakServerSnapshotNode.ObvError.tryingToRestoreIncompleteSnapshot + } + self.clientId = clientId + self.clientSecret = snapshotNode.clientSecret + self.rawPushTopics = nil + self.keycloakUserId = snapshotNode.keycloakUserId + self.latestRevocationListTimetamp = nil + guard let rawJwks = snapshotNode.rawJwks else { + assertionFailure() + throw KeycloakServerSnapshotNode.ObvError.tryingToRestoreIncompleteSnapshot + } + self.rawJwks = rawJwks + guard let serverURL = snapshotNode.serverURL else { + assertionFailure() + throw KeycloakServerSnapshotNode.ObvError.tryingToRestoreIncompleteSnapshot + } + self.serverURL = serverURL + self.rawOwnedIdentity = rawOwnedIdentity + self.selfRevocationTestNonce = snapshotNode.selfRevocationTestNonce + self.rawServerSignatureKey = snapshotNode.rawServerSignatureKey + } + + func setAuthState(authState: Data?) { self.rawAuthState = authState } @@ -192,6 +223,11 @@ final class KeycloakServer: NSManagedObject, ObvManagedObject { self.serverSignatureVerificationKey = key } + func saveRegisteredKeycloakAPIKey(apiKey newAPIKey: UUID) { + guard self.ownAPIKey != newAPIKey else { return } + self.ownAPIKey = newAPIKey + } + // MARK: - Identity revocation /// Called from `OwnedIdentity`. Returns a set of compromised contacts that are not forcefully trusted by the user. @@ -261,8 +297,8 @@ final class KeycloakServer: NSManagedObject, ObvManagedObject { guard contact.isCertifiedByOwnKeycloak else { break } case .compromised: // User key is compromised: mark the contact as revoked and delete all devices/channels from this contact - if !contact.isForcefullyTrustedByUser { - compromisedContacts.insert(contact.cryptoIdentity) + if !contact.isForcefullyTrustedByUser, let contactCryptoIdentity = contact.cryptoIdentity { + compromisedContacts.insert(contactCryptoIdentity) } contact.revokeAsCompromised(delegateManager: delegateManager) // This deletes the devices of the contact } @@ -778,3 +814,123 @@ struct KeycloakGroupMemberKickedData: Decodable, ObvErrorMaker { } } + + +// MARK: - For snapshot purposes + + +extension KeycloakServer { + + var snapshotNode: KeycloakServerSnapshotNode { + return KeycloakServerSnapshotNode( + serverURL: serverURL, + clientId: clientId, + clientSecret: clientSecret, + keycloakUserId: keycloakUserId, + selfRevocationTestNonce: selfRevocationTestNonce, + rawJwks: rawJwks, + rawServerSignatureKey: rawServerSignatureKey) + } + +} + + +struct KeycloakServerSnapshotNode: ObvSyncSnapshotNode { + + fileprivate let serverURL: URL? + fileprivate let clientId: String? + fileprivate let clientSecret: String? + fileprivate let keycloakUserId: String? + fileprivate let selfRevocationTestNonce: String? + fileprivate let rawJwks: Data? + fileprivate let rawServerSignatureKey: Data? + + let id = Self.generateIdentifier() + + private let domain: Set + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case serverURL = "server_url" + case clientId = "client_id" + case clientSecret = "client_secret" + case keycloakUserId = "keycloak_user_id" + case selfRevocationTestNonce = "self_revocation_test_nonce" + case domain = "domain" + case rawJwks = "jwks" + case rawServerSignatureKey = "signature_key" + } + + + fileprivate init(serverURL: URL, clientId: String, clientSecret: String?, keycloakUserId: String?, selfRevocationTestNonce: String?, rawJwks: Data, rawServerSignatureKey: Data?) { + self.serverURL = serverURL + self.clientId = clientId + self.clientSecret = clientSecret + self.keycloakUserId = keycloakUserId + self.selfRevocationTestNonce = selfRevocationTestNonce + self.rawJwks = rawJwks + self.rawServerSignatureKey = rawServerSignatureKey + self.domain = Self.defaultDomain + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(self.serverURL, forKey: .serverURL) + try container.encodeIfPresent(self.clientId, forKey: .clientId) + try container.encodeIfPresent(self.clientSecret, forKey: .clientSecret) + try container.encodeIfPresent(self.keycloakUserId, forKey: .keycloakUserId) + try container.encodeIfPresent(self.selfRevocationTestNonce, forKey: .selfRevocationTestNonce) + try container.encode(self.domain, forKey: .domain) + if let rawJwks { + let rawJwksAsString = String(data: rawJwks, encoding: .utf8) + try container.encodeIfPresent(rawJwksAsString, forKey: .rawJwks) + } + if let rawServerSignatureKey { + let rawServerSignatureKeyAsString = String(data: rawServerSignatureKey, encoding: .utf8) + try container.encodeIfPresent(rawServerSignatureKeyAsString, forKey: .rawServerSignatureKey) + } + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.serverURL = try values.decodeIfPresent(URL.self, forKey: .serverURL) + self.clientId = try values.decodeIfPresent(String.self, forKey: .clientId) + self.keycloakUserId = try values.decodeIfPresent(String.self, forKey: .keycloakUserId) + self.clientSecret = try values.decodeIfPresent(String.self, forKey: .clientSecret) + self.selfRevocationTestNonce = try values.decodeIfPresent(String.self, forKey: .selfRevocationTestNonce) + let rawJwksAsString = try values.decodeIfPresent(String.self, forKey: .rawJwks) + self.rawJwks = rawJwksAsString?.data(using: .utf8) + let rawServerSignatureKeyAsString = try values.decodeIfPresent(String.self, forKey: .rawServerSignatureKey) + self.rawServerSignatureKey = rawServerSignatureKeyAsString?.data(using: .utf8) + } + + + func restoreInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations, rawOwnedIdentity: Data) throws { + + let mandatoryDomain = Set([.serverURL, .clientId, .keycloakUserId, .clientSecret, .rawJwks]) + guard mandatoryDomain.isSubset(of: domain) else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteSnapshot + } + + let keycloakServer = try KeycloakServer(snapshotNode: self, rawOwnedIdentity: rawOwnedIdentity, within: obvContext) + try associations.associate(keycloakServer, to: self) + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + // Nothing do to here + } + + + enum ObvError: Error { + case tryingToRestoreIncompleteSnapshot + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedDevice.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedDevice.swift index 29675fa3..6c62b634 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedDevice.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedDevice.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -34,10 +34,12 @@ final class OwnedDevice: NSManagedObject, ObvManagedObject { // MARK: Attributes - @NSManaged private(set) var uid: UID // Unique (not enforced) + @NSManaged private var expirationDate: Date? + @NSManaged private var latestRegistrationDate: Date? + @NSManaged private(set) var name: String? @NSManaged private var rawCapabilities: String? + @NSManaged private(set) var uid: UID // Unique (not enforced) - // MARK: Relationships /// If this device the current device of an owned identity, then currentDeviceIdentity is not nil and remoteDeviceIdentity is nil. If this device is a remote device of an owned identity (thus the current device of this identity on some other physical device), then currentDeviceIdentity is nil and remoteDeviceIdentity is not nil. In both cases, one (and only one) of these two relationships is not nil. This is captured by the computed variable `identity`. @@ -63,63 +65,156 @@ final class OwnedDevice: NSManagedObject, ObvManagedObject { } } + var infos: (name: String?, expirationDate: Date?, latestRegistrationDate: Date?) { + return (self.name, self.expirationDate, self.latestRegistrationDate) + } // MARK: Other variables var obvContext: ObvContext? weak var delegateManager: ObvIdentityDelegateManager? - var identity: OwnedIdentity { - if currentDeviceIdentity != nil { - currentDeviceIdentity!.delegateManager = delegateManager - return currentDeviceIdentity! + var identity: OwnedIdentity? { + if let currentDeviceIdentity { + currentDeviceIdentity.delegateManager = delegateManager + return currentDeviceIdentity + } else if let remoteDeviceIdentity { + remoteDeviceIdentity.delegateManager = delegateManager + return remoteDeviceIdentity } else { - remoteDeviceIdentity!.delegateManager = delegateManager - return remoteDeviceIdentity! + // Happens if the device was just deleted + return nil } } + private var ownedCryptoIdentityOnDeletion: ObvCryptoIdentity? private var changedKeys = Set() + /// This is only set while inserting a new `OwnedDevice`. This is `true` iff the inserted instance was performed during a `ChannelCreationWithOwnedDeviceProtocol`. + /// + /// This value is used in the notification sent to the engine. When receiving the notification, the engine starts a new `ChannelCreationWithOwnedDeviceProtocol` *unless* this Boolean is `true`. + private var createdDuringChannelCreation: Bool? + // MARK: - Initializers - /// This initializer creates the current device of the owned identity. It should only be called at the time we create an owned identity - convenience init?(ownedIdentity: OwnedIdentity, with prng: PRNGService, delegateManager: ObvIdentityDelegateManager) { + /// This initializer creates the current device of the owned identity. It should only be called at the time we create an owned identity. + convenience init?(ownedIdentity: OwnedIdentity, name: String, with prng: PRNGService, delegateManager: ObvIdentityDelegateManager) { guard let obvContext = ownedIdentity.obvContext else { let log = OSLog(subsystem: delegateManager.logSubsystem, category: "OwnedDevice") os_log("Could not get a context", log: log, type: .fault) return nil } + let entityDescription = NSEntityDescription.entity(forEntityName: OwnedDevice.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) - uid = UID.gen(with: prng) - currentDeviceIdentity = ownedIdentity - remoteDeviceIdentity = nil + + self.expirationDate = nil // Set later + self.latestRegistrationDate = nil // Set later + let trimmedName = name.trimmingWhitespacesAndNewlines() + self.name = trimmedName.isEmpty ? nil : trimmedName self.rawCapabilities = nil // Set later + self.uid = UID.gen(with: prng) + + self.currentDeviceIdentity = ownedIdentity + self.remoteDeviceIdentity = nil + self.delegateManager = delegateManager + self.createdDuringChannelCreation = false // As we are creating the current device } + /// This device adds a remote device to the owned identity. - convenience init?(remoteDeviceUid: UID, ownedIdentity: OwnedIdentity, delegateManager: ObvIdentityDelegateManager) { + convenience init?(remoteDeviceUid: UID, ownedIdentity: OwnedIdentity, createdDuringChannelCreation: Bool, delegateManager: ObvIdentityDelegateManager) { guard let obvContext = ownedIdentity.obvContext else { let log = OSLog(subsystem: delegateManager.logSubsystem, category: "OwnedDevice") os_log("Could not get a context", log: log, type: .fault) return nil } + let entityDescription = NSEntityDescription.entity(forEntityName: OwnedDevice.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) - self.uid = remoteDeviceUid - currentDeviceIdentity = nil - remoteDeviceIdentity = ownedIdentity + + self.expirationDate = nil // Set later + self.latestRegistrationDate = nil // Set later + self.name = nil // Set later self.rawCapabilities = nil // Set later + self.uid = remoteDeviceUid + + self.currentDeviceIdentity = nil + self.remoteDeviceIdentity = ownedIdentity + self.delegateManager = delegateManager + self.createdDuringChannelCreation = createdDuringChannelCreation } - /// Used *exclusively* during a backup restore for creating an instance, relatioships are recreater in a second step + + /// Used *exclusively* during a backup restore for creating an instance, relatioships are recreated in a second step fileprivate convenience init(backupItem: OwnedDeviceBackupItem, within obvContext: ObvContext) { + let entityDescription = NSEntityDescription.entity(forEntityName: OwnedDevice.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) + + self.expirationDate = nil // Set later + self.latestRegistrationDate = nil // Set later + self.name = nil // Set later by the engine, using `setCurrentDeviceNameAfterBackupRestore(newName:)`, right after backup restore + self.rawCapabilities = nil // Set later self.uid = backupItem.uid + + self.createdDuringChannelCreation = false + + } + + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreated in a second step + fileprivate convenience init(snapshotItem: OwnedDeviceSnapshotItem, within obvContext: ObvContext) { + + let entityDescription = NSEntityDescription.entity(forEntityName: OwnedDevice.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + + self.expirationDate = nil // Set later + self.latestRegistrationDate = nil // Set later + let trimmedName = snapshotItem.customDeviceName.trimmingWhitespacesAndNewlines() + self.name = trimmedName.isEmpty ? nil : trimmedName self.rawCapabilities = nil // Set later + self.uid = snapshotItem.uid + + self.createdDuringChannelCreation = false + + } + + + func setCurrentDeviceNameAfterBackupRestore(newName: String) { + assert(self.name == nil) + if self.name != newName { + self.name = newName + } + } + + + func updateThisDevice(with device: OwnedDeviceDiscoveryResult.Device) throws { + guard self.uid == device.uid else { + assertionFailure() + throw Self.makeError(message: "Unexpected UID") + } + + if self.expirationDate != device.expirationDate { + self.expirationDate = device.expirationDate + } + + if self.name != device.name { + self.name = device.name + } + + if self.latestRegistrationDate != device.latestRegistrationDate { + self.latestRegistrationDate = device.latestRegistrationDate + } + } + + + func deleteThisDevice(delegateManager: ObvIdentityDelegateManager) throws { + guard let context = managedObjectContext else { throw Self.makeError(message: "No context") } + ownedCryptoIdentityOnDeletion = identity?.cryptoIdentity + self.delegateManager = delegateManager + context.delete(self) } } @@ -198,8 +293,8 @@ extension OwnedDevice { let request: NSFetchRequest = OwnedDevice.fetchRequest() let items = try obvContext.fetch(request) let values: Set = Set(items.compactMap { - guard $0.identity.currentDeviceUid != $0.uid else { return nil } - return ObliviousChannelIdentifier(currentDeviceUid: $0.identity.currentDeviceUid, remoteCryptoIdentity: $0.identity.cryptoIdentity, remoteDeviceUid: $0.uid) + guard let identity = $0.identity, identity.currentDeviceUid != $0.uid else { return nil } + return ObliviousChannelIdentifier(currentDeviceUid: identity.currentDeviceUid, remoteCryptoIdentity: identity.cryptoIdentity, remoteDeviceUid: $0.uid) }) return values } @@ -227,7 +322,7 @@ extension OwnedDevice { guard let delegateManager = delegateManager else { let log = OSLog.init(subsystem: ObvIdentityDelegateManager.defaultLogSubsystem, category: OwnedDevice.entityName) - os_log("The delegate manager is not set (1) - Ok during a backup restore", log: log, type: .fault) + os_log("The delegate manager is not set (1) - Ok during a backup restore or when deleting the corresponding profile", log: log, type: .error) return } @@ -239,8 +334,28 @@ extension OwnedDevice { return } - if !isDeleted && changedKeys.contains(Predicate.Key.rawCapabilities.rawValue) { - ObvIdentityNotificationNew.ownedIdentityCapabilitiesWereUpdated(ownedIdentity: self.identity.cryptoIdentity, flowId: flowId) + if !isDeleted && changedKeys.contains(Predicate.Key.rawCapabilities.rawValue), let identity = self.identity { + // We do *not* send the device's capabilities. Eventually, the app will request the capabilities of the owned identity that will compute her capabilities on the basis of the capabilities of all her owned devices. + ObvIdentityNotificationNew.ownedIdentityCapabilitiesWereUpdated(ownedIdentity: identity.cryptoIdentity, flowId: flowId) + .postOnBackgroundQueue(within: delegateManager.notificationDelegate) + } + + if !isDeleted && !changedKeys.isEmpty, let identity = self.identity { + ObvIdentityNotificationNew.anOwnedDeviceWasUpdated(ownedCryptoId: identity.cryptoIdentity) + .postOnBackgroundQueue(within: delegateManager.notificationDelegate) + } + + if isInserted { + if let remoteDeviceIdentity { + assert(createdDuringChannelCreation != nil) + let createdDuringChannelCreation = self.createdDuringChannelCreation ?? false + ObvIdentityNotificationNew.newRemoteOwnedDevice(ownedCryptoId: remoteDeviceIdentity.cryptoIdentity, remoteDeviceUid: uid, createdDuringChannelCreation: createdDuringChannelCreation) + .postOnBackgroundQueue(within: delegateManager.notificationDelegate) + } + } + + if isDeleted, let ownedCryptoIdentityOnDeletion { + ObvIdentityNotificationNew.anOwnedDeviceWasDeleted(ownedCryptoId: ownedCryptoIdentityOnDeletion) .postOnBackgroundQueue(within: delegateManager.notificationDelegate) } @@ -292,10 +407,10 @@ struct OwnedDeviceBackupItem: Codable, Hashable { self.uid = uid } - func restoreInstance(within obvContext: ObvContext, associations: inout BackupItemObjectAssociations) throws { - let ownedDevice = OwnedDevice(backupItem: self, within: obvContext) - try associations.associate(ownedDevice, to: self) - } +// func restoreInstance(within obvContext: ObvContext, associations: inout BackupItemObjectAssociations) throws { +// let ownedDevice = OwnedDevice(backupItem: self, within: obvContext) +// try associations.associate(ownedDevice, to: self) +// } func restoreRelationships(associations: BackupItemObjectAssociations, within obvContext: ObvContext) throws { // Nothing do to here @@ -308,3 +423,24 @@ struct OwnedDeviceBackupItem: Codable, Hashable { return currentDevice } } + + +// For snapshot purposes + +struct OwnedDeviceSnapshotItem { + + let uid: UID + let customDeviceName: String + + private init(uid: UID, customDeviceName: String) { + self.uid = uid + self.customDeviceName = customDeviceName + } + + static func generateNewCurrentDevice(prng: PRNGService, customDeviceName: String, within obvContext: ObvContext) -> OwnedDevice { + let uid = UID.gen(with: prng) + let dummySnapshotItem = Self.init(uid: uid, customDeviceName: customDeviceName) + return .init(snapshotItem: dummySnapshotItem, within: obvContext) + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentity.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentity.swift index 4fcc81d1..bc6a6004 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentity.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentity.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -37,10 +37,9 @@ final class OwnedIdentity: NSManagedObject, ObvManagedObject, ObvErrorMaker { // MARK: Attributes - @NSManaged private(set) var apiKey: UUID // The following var is only used for filtering/searching purposes. It should *only* be set within the setter of `ownedCryptoIdentity` @NSManaged private(set) var cryptoIdentity: ObvCryptoIdentity // Unique (not enforced) - @NSManaged private(set) var isActive: Bool + @NSManaged private(set) var isActive: Bool // true iff the current device is registered on the server @NSManaged private(set) var isDeletionInProgress: Bool private(set) var ownedCryptoIdentity: ObvOwnedCryptoIdentity { get { @@ -132,16 +131,16 @@ final class OwnedIdentity: NSManagedObject, ObvManagedObject, ObvErrorMaker { } private var changedKeys = Set() - + private var ownedIdentityOnDeletion: ObvCryptoIdentity? + // MARK: - Initializer /// This initializer purpose is to create a longterm owned identity - convenience init?(apiKey: UUID, serverURL: URL, identityDetails: ObvIdentityDetails, accordingTo pkEncryptionImplemByteId: PublicKeyEncryptionImplementationByteId, and authEmplemByteId: AuthenticationImplementationByteId, keycloakState: ObvKeycloakState?, using prng: PRNGService, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) { + convenience init?(serverURL: URL, identityDetails: ObvIdentityDetails, accordingTo pkEncryptionImplemByteId: PublicKeyEncryptionImplementationByteId, and authEmplemByteId: AuthenticationImplementationByteId, keycloakState: ObvKeycloakState?, nameForCurrentDevice: String, using prng: PRNGService, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) { let log = OSLog(subsystem: delegateManager.logSubsystem, category: OwnedIdentity.entityName) let entityDescription = NSEntityDescription.entity(forEntityName: OwnedIdentity.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) self.delegateManager = delegateManager - self.apiKey = apiKey // An owned identity is always active on creation. Several places within the engine assume this behaviour. self.isActive = true self.isDeletionInProgress = false @@ -150,7 +149,7 @@ final class OwnedIdentity: NSManagedObject, ObvManagedObject, ObvErrorMaker { andPublicKeyEncryptionImplementationByteId: pkEncryptionImplemByteId, using: prng) self.contactIdentities = Set() - guard let device = OwnedDevice(ownedIdentity: self, with: prng, delegateManager: delegateManager) else { + guard let device = OwnedDevice(ownedIdentity: self, name: nameForCurrentDevice, with: prng, delegateManager: delegateManager) else { os_log("Could not create a current device for the new owned identity", log: log, type: .fault) return nil } @@ -183,9 +182,7 @@ final class OwnedIdentity: NSManagedObject, ObvManagedObject, ObvErrorMaker { convenience init(backupItem: OwnedIdentityBackupItem, notificationDelegate: ObvNotificationDelegate, within obvContext: ObvContext) throws { let entityDescription = NSEntityDescription.entity(forEntityName: OwnedIdentity.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) - self.apiKey = backupItem.apiKey - // We do *not* use the backupItem.isActive value. This information is used at the ObvIdentityManagerImplementation level, to decide whether to ask for reactivation of this owned identity or not. - self.isActive = false + self.isActive = backupItem.isActive self.isDeletionInProgress = false self.cryptoIdentity = backupItem.cryptoIdentity guard let ownedCryptoIdentity = backupItem.ownedCryptoIdentity else { @@ -198,7 +195,6 @@ final class OwnedIdentity: NSManagedObject, ObvManagedObject, ObvErrorMaker { ObvIdentityNotificationNew.newOwnedIdentityWithinIdentityManager(cryptoIdentity: backupItem.cryptoIdentity) .postOnBackgroundQueue(within: notificationDelegate) } - } @@ -214,6 +210,27 @@ final class OwnedIdentity: NSManagedObject, ObvManagedObject, ObvErrorMaker { } + private var isInsertedWhileRestoringSyncSnapshot = false + + /// Used *exclusively* during a snapshot restore for creating an instance. Relatioships are recreater in a second step. + convenience init(cryptoIdentity: ObvCryptoIdentity, snapshotNode: OwnedIdentitySyncSnapshotNode, within obvContext: ObvContext) throws { + + let entityDescription = NSEntityDescription.entity(forEntityName: OwnedIdentity.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + self.isActive = true + self.isDeletionInProgress = false + self.cryptoIdentity = cryptoIdentity + guard let ownedCryptoIdentity = snapshotNode.privateIdentity?.getOwnedIdentity(cryptoIdentity: cryptoIdentity) else { + throw OwnedIdentity.makeError(message: "Could not recover owned crypto identity") + } + self.ownedCryptoIdentity = ownedCryptoIdentity + + // Prevents the sending of notifications + isInsertedWhileRestoringSyncSnapshot = true + + } + + /// When the user requests the deletion of an owned identity, a cryptographic protocol starts. The first action is to mark the owned identity for deletion before evenutally deleting it. /// /// This makes is possible to have a very responsive UI. @@ -237,27 +254,26 @@ final class OwnedIdentity: NSManagedObject, ObvManagedObject, ObvErrorMaker { extension OwnedIdentity { func updatePublishedDetailsWithNewDetails(_ newIdentityDetails: ObvIdentityDetails, delegateManager: ObvIdentityDelegateManager) throws { - guard let obvContext = self.obvContext else { - assertionFailure() - throw Self.makeError(message: "Could not find obv context") - } - try self.publishedIdentityDetails.updateWithNewIdentityDetails(newIdentityDetails, - delegateManager: delegateManager, - within: obvContext) + try self.publishedIdentityDetails.updateWithNewIdentityDetails(newIdentityDetails, delegateManager: delegateManager) } - func setAPIKey(to newApiKey: UUID, keycloakServerURL: URL?) throws { - if let currentKeycloakServerURL = keycloakServer?.serverURL { - guard currentKeycloakServerURL == keycloakServerURL else { - assertionFailure() - throw Self.makeError(message: "Error: trying to set an api key on a keycloak managed identity without specifying the keycloak server.") - } - } - self.apiKey = newApiKey + /// Returns `true` if we need to download a new profile picture + func updatePublishedDetailsWithOtherDetailsIfNewer(otherDetails: IdentityDetailsElements, delegateManager: ObvIdentityDelegateManager) throws -> Bool { + let photoDownloadNeeded = try self.publishedIdentityDetails.updateWithOtherDetailsIfNewer(otherDetails: otherDetails, delegateManager: delegateManager) + return photoDownloadNeeded } + func saveRegisteredKeycloakAPIKey(apiKey: UUID) throws { + guard self.isKeycloakManaged, let keycloakServer else { + assertionFailure() + throw ObvIdentityManagerError.ownedIdentityIsNotKeycloakManaged + } + keycloakServer.saveRegisteredKeycloakAPIKey(apiKey: apiKey) + } + + func updatePhoto(withData photoData: Data, version: Int, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { if self.publishedIdentityDetails.version == version { try self.publishedIdentityDetails.setOwnedIdentityPhoto(data: photoData, delegateManager: delegateManager) @@ -265,9 +281,18 @@ extension OwnedIdentity { } - func deactivate() { - isActive = false - /* After deactivating an owned identity, we must delete all devices and channels */ + func deactivateAndDeleteAllContactDevices(delegateManager: ObvIdentityDelegateManager) { + + if isActive { + isActive = false + } + + /* After deactivating an owned identity, we must delete all devices */ + + self.otherDevices.forEach { otherOwnedDevice in + try? otherOwnedDevice.deleteThisDevice(delegateManager: delegateManager) + } + self.contactIdentities.forEach { contactIdentity in contactIdentity.devices.forEach { contactDevice in try? contactDevice.deleteContactDevice() @@ -284,6 +309,62 @@ extension OwnedIdentity { } +// MARK: - Sync between owned devices + +extension OwnedIdentity { + + func processSyncAtom(_ syncAtom: ObvSyncAtom, delegateManager: ObvIdentityDelegateManager) throws { + + guard syncAtom.recipient == .identityManager else { + assertionFailure() + throw ObvIdentityManagerError.wrongSyncAtomRecipient + } + + switch syncAtom { + case .contactNickname, + .groupV1Nickname, + .groupV2Nickname, + .contactPersonalNote, + .groupV1PersonalNote, + .groupV2PersonalNote, + .ownProfileNickname, + .contactCustomHue, + .contactSendReadReceipt, + .groupV1ReadReceipt, + .groupV2ReadReceipt, + .settingDefaultSendReadReceipts, + .settingAutoJoinGroups, + .pinnedDiscussions: + throw ObvIdentityManagerError.wrongSyncAtomRecipient + case .trustContactDetails(contactCryptoId: let contactCryptoId, serializedIdentityDetailsElements: let serializedIdentityDetailsElements): + guard let contact = try ContactIdentity.get(contactIdentity: contactCryptoId.cryptoIdentity, ownedIdentity: self, delegateManager: delegateManager) else { + throw ObvIdentityManagerError.cryptoIdentityIsNotContact + } + try contact.processTrustContactDetailsSyncAtom(serializedIdentityDetailsElements: serializedIdentityDetailsElements, delegateManager: delegateManager) + case .trustGroupV1Details(groupOwner: let groupOwner, groupUid: let groupUid, serializedGroupDetailsElements: let serializedGroupDetailsElements): + guard let groupV1 = try ContactGroupJoined.get(groupUid: groupUid, groupOwnerCryptoIdentity: groupOwner.cryptoIdentity, ownedIdentity: self, delegateManager: delegateManager) else { + throw ObvIdentityManagerError.groupIsNotJoined + } + try groupV1.processTrustGroupV1DetailsSyncAtom(serializedGroupDetailsElements: serializedGroupDetailsElements, delegateManager: delegateManager) + case .trustGroupV2Details(groupIdentifier: let groupIdentifier, version: let version): + guard let encodedGroupIdentifier = ObvEncoded(withRawData: groupIdentifier), + let groupIdentifier = ObvGroupV2.Identifier(encodedGroupIdentifier) + else { + assertionFailure() + throw ObvIdentityManagerError.couldNotDecodeGroupIdentifier + } + + guard let groupV2 = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: GroupV2.Identifier(obvGroupV2Identifier: groupIdentifier), of: self, delegateManager: delegateManager) else { + throw ObvIdentityManagerError.groupDoesNotExist + } + try groupV2.processTrustGroupV2DetailsSyncAtom(version: version, delegateManager: delegateManager) + } + + } + +} + + // MARK: - Keycloak management @@ -315,7 +396,7 @@ extension OwnedIdentity { } - private func refreshCertifiedByOwnKeycloakAndTrustedDetailsForAllContacts(delegateManager: ObvIdentityDelegateManager) { + fileprivate func refreshCertifiedByOwnKeycloakAndTrustedDetailsForAllContacts(delegateManager: ObvIdentityDelegateManager) { for contact in contactIdentities { do { try contact.refreshCertifiedByOwnKeycloakAndTrustedDetails(delegateManager: delegateManager) @@ -447,19 +528,120 @@ extension OwnedIdentity { extension OwnedIdentity { - func addRemoteDeviceWith(uid: UID) throws { + func addIfNotExistRemoteDeviceWith(uid: UID, createdDuringChannelCreation: Bool) throws { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvIdentityDelegateManager.defaultLogSubsystem, category: "OwnedIdentity") os_log("The delegate manager is not set (6)", log: log, type: .fault) throw Self.makeError(message: "The delegate manager is not set (6)") } let log = OSLog(subsystem: delegateManager.logSubsystem, category: "OwnedIdentity") - guard OwnedDevice(remoteDeviceUid: uid, ownedIdentity: self, delegateManager: delegateManager) != nil else { + guard otherDevices.first(where: { $0.uid == uid }) == nil else { + // The device already exists + return + } + guard uid != currentDeviceUid else { + // Trying to add the current device as a remote device + return + } + guard OwnedDevice(remoteDeviceUid: uid, ownedIdentity: self, createdDuringChannelCreation: createdDuringChannelCreation, delegateManager: delegateManager) != nil else { + assertionFailure() os_log("Could not add a remote device", log: log, type: .fault) throw Self.makeError(message: "Could not add a remote device") } } + + func removeIfExistsOtherDeviceWith(uid: UID, delegateManager: ObvIdentityDelegateManager, flowId: FlowIdentifier) throws { + for device in otherDevices { + guard device.uid == uid else { continue } + try device.deleteThisDevice(delegateManager: delegateManager) + } + } + + + /// Returns a Boolean indicating whether the current device is part of the owned device discovery results. + func processEncryptedOwnedDeviceDiscoveryResult(_ encryptedOwnedDeviceDiscoveryResult: EncryptedData, delegateManager: ObvIdentityDelegateManager) throws -> Bool { + + let ownedDeviceDiscoveryResult = try OwnedDeviceDiscoveryResult.decrypt(encryptedOwnedDeviceDiscoveryResult: encryptedOwnedDeviceDiscoveryResult, for: self.ownedCryptoIdentity) + + // Update existing devices and add missing devices + + for device in ownedDeviceDiscoveryResult.devices { + + if let existingRemoteDevice = self.otherDevices.first(where: { $0.uid == device.uid }) { + + try existingRemoteDevice.updateThisDevice(with: device) + + } else if self.currentDevice.uid == device.uid { + + try self.currentDevice.updateThisDevice(with: device) + + } else { + + _ = OwnedDevice(remoteDeviceUid: device.uid, + ownedIdentity: self, + createdDuringChannelCreation: false, + delegateManager: delegateManager) + + } + + } + + // We don't deactivate the current device if not part of the owned device discovery. + // Instead, we notify the engine by returning a Boolean. + + let currentDeviceIsPartOfOwnedDeviceDiscoveryResult = ownedDeviceDiscoveryResult.devices.map({ $0.uid }).contains(where: { $0 == self.currentDevice.uid }) + + // Remove deactivated remote devices + + let otherDevicesToDeactivate = self.otherDevices.filter { otherDevice in + !ownedDeviceDiscoveryResult.devices.map({ $0.uid }).contains(where: { $0 == otherDevice.uid }) + } + + for otherDeviceToDeactivate in otherDevicesToDeactivate { + try otherDeviceToDeactivate.deleteThisDevice(delegateManager: delegateManager) + } + + // We don't care about the ownedDeviceDiscoveryResult.isMultidevice Boolean + + return currentDeviceIsPartOfOwnedDeviceDiscoveryResult + } + + + func decryptEncryptedOwnedDeviceDiscoveryResult(_ encryptedOwnedDeviceDiscoveryResult: EncryptedData) throws -> OwnedDeviceDiscoveryResult { + let ownedDeviceDiscoveryResult = try OwnedDeviceDiscoveryResult.decrypt(encryptedOwnedDeviceDiscoveryResult: encryptedOwnedDeviceDiscoveryResult, for: self.ownedCryptoIdentity) + return ownedDeviceDiscoveryResult + } + + + func decryptProtocolCiphertext(_ ciphertext: EncryptedData) throws -> Data { + + guard let cleartext = PublicKeyEncryption.decrypt(ciphertext, for: ownedCryptoIdentity) else { + assertionFailure() + throw Self.makeError(message: "Could not decrypt encrypted payload") + } + + return cleartext + } + + + func getInfosAboutOwnedDevice(withUid uid: UID) throws -> (name: String?, expirationDate: Date?, latestRegistrationDate: Date?) { + if currentDevice.uid == uid { + return currentDevice.infos + } else if let otherRemoteDevice = otherDevices.first(where: { $0.uid == uid }) { + return otherRemoteDevice.infos + } else { + assertionFailure() + throw Self.makeError(message: "Could not find other remote device") + } + } + + + func setCurrentDeviceNameAfterBackupRestore(newName: String) { + currentDevice.setCurrentDeviceNameAfterBackupRestore(newName: newName) + } + + } @@ -591,7 +773,6 @@ extension OwnedIdentity { struct Predicate { enum Key: String { // Attributes - case apiKey = "apiKey" case cryptoIdentity = "cryptoIdentity" case isActive = "isActive" case isDeletionInProgress = "isDeletionInProgress" @@ -609,12 +790,20 @@ extension OwnedIdentity { static func withCryptoIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity) -> NSPredicate { NSPredicate(format: "%K == %@", Key.cryptoIdentity.rawValue, ownedCryptoIdentity) } + static func isKeycloakManaged(_ isKeycloakManaged: Bool) -> NSPredicate { + if isKeycloakManaged { + return NSPredicate(withNonNilValueForKey: Key.keycloakServer) + } else { + return NSPredicate(withNilValueForKey: Key.keycloakServer) + } + } } @nonobjc class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: entityName) } + static func get(_ identity: ObvCryptoIdentity, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws -> OwnedIdentity? { let request: NSFetchRequest = OwnedIdentity.fetchRequest() request.predicate = Predicate.withCryptoIdentity(identity) @@ -624,20 +813,35 @@ extension OwnedIdentity { return item } + static func getAll(delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws -> [OwnedIdentity] { let request: NSFetchRequest = OwnedIdentity.fetchRequest() + request.propertiesToFetch = [ + Predicate.Key.cryptoIdentity.rawValue, + Predicate.Key.ownedCryptoIdentity.rawValue, + ] let items = try obvContext.fetch(request) return items.map { $0.delegateManager = delegateManager; return $0 } } + - static func getApiKey(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UUID? { + static func getAllCryptoIds(within context: NSManagedObjectContext) throws -> Set { let request: NSFetchRequest = OwnedIdentity.fetchRequest() - request.predicate = Predicate.withCryptoIdentity(identity) - request.fetchLimit = 1 - let item = try obvContext.fetch(request).first - return item?.apiKey + request.propertiesToFetch = [ + Predicate.Key.cryptoIdentity.rawValue, + ] + let items = try context.fetch(request) + return Set(items.map(\.cryptoIdentity)) } + + static func getAllKeycloakManaged(delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws -> [OwnedIdentity] { + let request: NSFetchRequest = OwnedIdentity.fetchRequest() + request.predicate = Predicate.isKeycloakManaged(true) + let items = try obvContext.fetch(request) + return items.map { $0.delegateManager = delegateManager; return $0 } + } + } @@ -647,6 +851,7 @@ extension OwnedIdentity { override func willSave() { super.willSave() + self.ownedIdentityOnDeletion = cryptoIdentity if !isInserted { changedKeys = Set(self.changedValues().keys) } @@ -657,6 +862,14 @@ extension OwnedIdentity { defer { changedKeys.removeAll() + isInsertedWhileRestoringSyncSnapshot = false + } + + guard !isInsertedWhileRestoringSyncSnapshot else { + assert(isInserted) + let log = OSLog.init(subsystem: ObvIdentityDelegateManager.defaultLogSubsystem, category: String(describing: Self.self)) + os_log("Insertion of an OwnedIdentity during a snapshot restore --> we don't send any notification", log: log, type: .info) + return } guard let delegateManager = delegateManager else { @@ -676,10 +889,18 @@ extension OwnedIdentity { if isInserted { os_log("A new owned identity was inserted", log: log, type: .debug) + if self.isActive { + guard let flowId = obvContext?.flowId else { assertionFailure(); return } + ObvIdentityNotificationNew.newActiveOwnedIdentity(ownedCryptoIdentity: self.ownedCryptoIdentity.getObvCryptoIdentity(), flowId: flowId) + .postOnBackgroundQueue(within: notificationDelegate) + } } else if isDeleted { - os_log("An owned identity was deleted", log: log, type: .debug) - ObvIdentityNotificationNew.ownedIdentityWasDeleted - .postOnBackgroundQueue(within: notificationDelegate) + assert(ownedIdentityOnDeletion != nil) + if let ownedIdentityOnDeletion { + os_log("An owned identity was deleted", log: log, type: .debug) + ObvIdentityNotificationNew.ownedIdentityWasDeleted(ownedIdentity: ownedIdentityOnDeletion) + .postOnBackgroundQueue(within: notificationDelegate) + } } if changedKeys.contains(Predicate.Key.isActive.rawValue) && !isDeleted { @@ -721,8 +942,7 @@ extension OwnedIdentity { var backupItem: OwnedIdentityBackupItem { let contactGroupsOwned = contactGroups.filter { $0 is ContactGroupOwned } as! Set - return OwnedIdentityBackupItem(apiKey: apiKey, - ownedCryptoIdentity: ownedCryptoIdentity, + return OwnedIdentityBackupItem(ownedCryptoIdentity: ownedCryptoIdentity, contactIdentities: contactIdentities, currentDevice: currentDevice, otherDevices: otherDevices, @@ -738,7 +958,6 @@ extension OwnedIdentity { struct OwnedIdentityBackupItem: Codable, Hashable, ObvErrorMaker { - fileprivate let apiKey: UUID fileprivate let privateIdentity: ObvOwnedCryptoIdentityPrivateBackupItem let cryptoIdentity: ObvCryptoIdentity fileprivate let contactIdentities: Set @@ -754,8 +973,7 @@ struct OwnedIdentityBackupItem: Codable, Hashable, ObvErrorMaker { return privateIdentity.getOwnedIdentity(cryptoIdentity: cryptoIdentity) } - fileprivate init(apiKey: UUID, ownedCryptoIdentity: ObvOwnedCryptoIdentity, contactIdentities: Set, currentDevice: OwnedDevice, otherDevices: Set, publishedIdentityDetails: OwnedIdentityDetailsPublished, contactGroupsOwned: Set, contactGroupsV2: Set, keycloakServer: KeycloakServer?, isActive: Bool) { - self.apiKey = apiKey + fileprivate init(ownedCryptoIdentity: ObvOwnedCryptoIdentity, contactIdentities: Set, currentDevice: OwnedDevice, otherDevices: Set, publishedIdentityDetails: OwnedIdentityDetailsPublished, contactGroupsOwned: Set, contactGroupsV2: Set, keycloakServer: KeycloakServer?, isActive: Bool) { self.cryptoIdentity = ownedCryptoIdentity.getObvCryptoIdentity() self.privateIdentity = ownedCryptoIdentity.privateBackupItem self.contactIdentities = Set(contactIdentities.map { $0.backupItem }) @@ -767,7 +985,6 @@ struct OwnedIdentityBackupItem: Codable, Hashable, ObvErrorMaker { } enum CodingKeys: String, CodingKey { - case apiKey = "api_key" case privateIdentity = "private_identity" case cryptoIdentity = "owned_identity" case contactIdentities = "contact_identities" @@ -780,7 +997,6 @@ struct OwnedIdentityBackupItem: Codable, Hashable, ObvErrorMaker { func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(apiKey, forKey: .apiKey) try container.encode(cryptoIdentity.getIdentity(), forKey: .cryptoIdentity) try container.encode(privateIdentity, forKey: .privateIdentity) try container.encode(contactIdentities, forKey: .contactIdentities) @@ -798,7 +1014,6 @@ struct OwnedIdentityBackupItem: Codable, Hashable, ObvErrorMaker { init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) - self.apiKey = try values.decode(UUID.self, forKey: .apiKey) self.privateIdentity = try values.decode(ObvOwnedCryptoIdentityPrivateBackupItem.self, forKey: .privateIdentity) let identity = try values.decode(Data.self, forKey: .cryptoIdentity) guard let cryptoIdentity = ObvCryptoIdentity(from: identity) else { @@ -913,3 +1128,295 @@ struct OwnedIdentityBackupItem: Codable, Hashable, ObvErrorMaker { } } + + + +// MARK: - For snapshots + +extension OwnedIdentity { + + var syncSnapshotNode: OwnedIdentitySyncSnapshotNode { + .init(ownedCryptoIdentity: ownedCryptoIdentity, + contactIdentities: contactIdentities, + publishedIdentityDetails: publishedIdentityDetails, + keycloakServer: keycloakServer, + contactGroups: contactGroups, + contactGroupsV2: contactGroupsV2) + } + +} + + +struct OwnedIdentitySyncSnapshotNode: ObvSyncSnapshotNode, Codable { + + private let domain: Set + fileprivate let privateIdentity: ObvOwnedCryptoIdentityPrivateSnapshotItem? + private let publishedIdentityDetails: OwnedIdentityDetailsPublishedSyncSnapshotNode? + private let keycloakServer: KeycloakServerSnapshotNode? + private let contacts: [ObvCryptoIdentity: ContactIdentitySyncSnapshotNode] + private let groupsV1: [GroupV1Identifier: ContactGroupSyncSnapshotNode] + private let groupsV2: [GroupV2.Identifier: ContactGroupV2SyncSnapshotNode] + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case privateIdentity = "private_identity" + case publishedIdentityDetails = "published_details" + case keycloak = "keycloak" + case contacts = "contacts" + case groups = "groups" + case groups2 = "groups2" + case domain = "domain" + } + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + init(ownedCryptoIdentity: ObvOwnedCryptoIdentity, contactIdentities: Set, publishedIdentityDetails: OwnedIdentityDetailsPublished, keycloakServer: KeycloakServer?, contactGroups: Set, contactGroupsV2: Set) { + self.privateIdentity = ownedCryptoIdentity.snapshotItem + self.publishedIdentityDetails = publishedIdentityDetails.snapshotNode + self.keycloakServer = keycloakServer?.snapshotNode + // contacts + do { + let pairs: [(ObvCryptoIdentity, ContactIdentitySyncSnapshotNode)] = contactIdentities + .compactMap { contact in + guard let cryptoIdentity = contact.cryptoIdentity else { assertionFailure(); return nil } + return (cryptoIdentity, contact.syncSnapshot) + } + self.contacts = Dictionary(pairs, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + // groupsV1 + do { + let pairs: [(GroupV1Identifier, ContactGroupSyncSnapshotNode)] = contactGroups.compactMap { + guard let groupV1Identifier = $0.groupV1Identifier else { assertionFailure(); return nil } + return (groupV1Identifier, $0.syncSnapshot) + } + self.groupsV1 = Dictionary(pairs, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + // groupsV2 + do { + let keysAndValues: [(GroupV2.Identifier, ContactGroupV2SyncSnapshotNode)] = contactGroupsV2.compactMap { group in + guard let groupIdentifier = group.groupIdentifier else { assertionFailure(); return nil } + guard let snapshotNode = group.snapshotNode else { assertionFailure(); return nil } + return (groupIdentifier, snapshotNode) + } + self.groupsV2 = Dictionary(keysAndValues, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + self.domain = Self.defaultDomain + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(domain, forKey: .domain) + try container.encode(privateIdentity, forKey: .privateIdentity) + try container.encode(publishedIdentityDetails, forKey: .publishedIdentityDetails) + try container.encodeIfPresent(keycloakServer, forKey: .keycloak) + // Encode the contacts using the ObvCryptoIdentity as a JSON key + do { + let dict: [String: ContactIdentitySyncSnapshotNode] = .init(contacts, keyMapping: { $0.getIdentity().base64EncodedString() }, valueMapping: { $0 }) + try container.encode(dict, forKey: .contacts) + } + // Encode groupsV1 using the GroupV1Identifier as a JSON key + do { + let dict: [String: ContactGroupSyncSnapshotNode] = .init(groupsV1, keyMapping: { $0.description }, valueMapping: { $0 }) + try container.encode(dict, forKey: .groups) + } + // Encode groupsV2 using the GroupV2.Identifier as a JSON key + do { + let dict: [String: ContactGroupV2SyncSnapshotNode] = .init(groupsV2, keyMapping: { $0.description }, valueMapping: { $0 }) + try container.encode(dict, forKey: .groups2) + } + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + self.domain = try values.decode(Set.self, forKey: .domain) + self.privateIdentity = try values.decodeIfPresent(ObvOwnedCryptoIdentityPrivateSnapshotItem.self, forKey: .privateIdentity) + self.publishedIdentityDetails = try values.decodeIfPresent(OwnedIdentityDetailsPublishedSyncSnapshotNode.self, forKey: .publishedIdentityDetails) + self.keycloakServer = try values.decodeIfPresent(KeycloakServerSnapshotNode.self, forKey: .keycloak) + // Decode contacts (the keys are the contact identities) + do { + let dict = try values.decodeIfPresent([String: ContactIdentitySyncSnapshotNode].self, forKey: .contacts) ?? [:] + self.contacts = Dictionary(dict, keyMapping: { $0.base64EncodedToData?.identityToObvCryptoIdentity }, valueMapping: { $0 }) + } + // Decode groupsV1 (the keys are GroupV1Identifier) + do { + let dict = try values.decodeIfPresent([String: ContactGroupSyncSnapshotNode].self, forKey: .groups) ?? [:] + self.groupsV1 = Dictionary(dict, keyMapping: { GroupV1Identifier($0) }, valueMapping: { $0 }) + } + // Decode groupsV2 (the keys are GroupV2.Identifier) + do { + let dict = try values.decodeIfPresent([String: ContactGroupV2SyncSnapshotNode].self, forKey: .groups2) ?? [:] + self.groupsV2 = Dictionary(dict, keyMapping: { GroupV2.Identifier($0) }, valueMapping: { $0 }) + } + } + + + func restoreInstance(cryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + + guard domain.contains(.privateIdentity) && domain.contains(.publishedIdentityDetails) else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteNode + } + + let ownedIdentity = try OwnedIdentity(cryptoIdentity: cryptoIdentity, snapshotNode: self, within: obvContext) + try associations.associate(ownedIdentity, to: self) + + let ownedCryptoIdentity = ownedIdentity.cryptoIdentity + let ownedIdentityIdentity = ownedIdentity.cryptoIdentity.getIdentity() + + if domain.contains(.contacts) { + try contacts.forEach { (cryptoIdentity, contactNode) in + try contactNode.restoreInstance(within: obvContext, contactCryptoId: cryptoIdentity, ownedIdentityIdentity: ownedIdentityIdentity, associations: &associations) + } + } + + guard let publishedIdentityDetails else { + assertionFailure() + throw ObvError.publishedIdentityDetailsAreNil + } + + try publishedIdentityDetails.restoreInstance(within: obvContext, associations: &associations) + + if domain.contains(.groups) { + try groupsV1.forEach { (groupV1Identifier, groupV1Node) in + try groupV1Node.restoreInstance(within: obvContext, ownedCryptoIdentity: ownedCryptoIdentity, groupV1Identifier: groupV1Identifier, associations: &associations) + } + } + + if domain.contains(.groups2) { + try groupsV2.forEach { (groupIdentifier, groupV2Node) in + try groupV2Node.restoreInstance(within: obvContext, groupIdentifier: groupIdentifier, ownedIdentity: ownedIdentityIdentity, associations: &associations) + } + } + + if domain.contains(.keycloak) { + try keycloakServer?.restoreInstance(within: obvContext, associations: &associations, rawOwnedIdentity: ownedIdentityIdentity) + } + + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, prng: PRNGService, customDeviceName: String, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { + + // Fetch all core data instances + + let ownedIdentity: OwnedIdentity = try associations.getObject(associatedTo: self, within: obvContext) + + let contactGroupsV1: [GroupV1Identifier: ContactGroup] = try .init(groupsV1, keyMapping: { $0 }, valueMapping: { try associations.getObject(associatedTo: $0, within: obvContext) }) + + let contactGroupsV2: [GroupV2.Identifier: ContactGroupV2] = try .init(groupsV2, keyMapping: { $0 }, valueMapping: { try associations.getObject(associatedTo: $0, within: obvContext) }) + + let contactIdentities: [ObvCryptoIdentity: ContactIdentity] = try .init(contacts, keyMapping: { $0 }, valueMapping: { try associations.getObject(associatedTo: $0, within: obvContext) }) + + let currentDevice = OwnedDeviceSnapshotItem.generateNewCurrentDevice(prng: prng, customDeviceName: customDeviceName, within: obvContext) + + guard let publishedIdentityDetails else { + assertionFailure() + throw ObvError.tryingToRestoreIncompleteNode + } + + let ownedIdentityDetailsPublished: OwnedIdentityDetailsPublished = try associations.getObject(associatedTo: publishedIdentityDetails, within: obvContext) + + let keycloakServer: KeycloakServer? = try associations.getObjectIfPresent(associatedTo: self.keycloakServer, within: obvContext) + + // Restore the relationships of this instance + + ownedIdentity.restoreRelationships( + contactGroups: Set(contactGroupsV1.values), + contactGroupsV2: Set(contactGroupsV2.values), + contactIdentities: Set(contactIdentities.values), + currentDevice: currentDevice, + publishedIdentityDetails: ownedIdentityDetailsPublished, + keycloakServer: keycloakServer) + + // Restore the relationships of this instance relationships + + try self.contacts.forEach { (contactCryptoIdentity, contactNode) in + try contactNode.restoreRelationships(associations: associations, within: obvContext) + } + + try self.publishedIdentityDetails?.restoreRelationships(associations: associations, within: obvContext) + + try self.groupsV1.forEach { (groupV1Identifier, groupV1Node) in + try groupV1Node.restoreRelationships(associations: associations, groupV1Identifier: groupV1Identifier, contactIdentities: contactIdentities, within: obvContext) + } + + try self.groupsV2.forEach { (groupIdentifier, groupV2Node) in + try groupV2Node.restoreRelationships(associations: associations, ownedIdentity: ownedIdentity.cryptoIdentity.getIdentity(), contactIdentities: contactIdentities, within: obvContext) + } + + try self.keycloakServer?.restoreRelationships(associations: associations, within: obvContext) + + // If there is a photoServerLabel within the published details, we create an instance of IdentityServerUserData + + if let photoServerLabel = publishedIdentityDetails.photoServerLabel { + _ = IdentityServerUserData.createForOwnedIdentityDetails(ownedIdentity: ownedIdentity.cryptoIdentity, + label: photoServerLabel, + within: obvContext) + } + + // We scan each owned group. For each, of there is a photoServerLabel within the published details, we create an instance of IdentityServerUserData + + for contactGroup in contactGroupsV1.values { + guard let ownedGroup = contactGroup as? ContactGroupOwned else { continue } + guard let photoServerLabel = ownedGroup.publishedDetails.photoServerLabel else { continue } + _ = GroupServerUserData.createForOwnedGroupDetails(ownedIdentity: ownedIdentity.cryptoIdentity, + label: photoServerLabel, + groupUid: ownedGroup.groupUid, + within: obvContext) + } + + // We scan each group V2 for which we are an administrator. If we are in charge of the profile picture (i.e., we are the uploader of the profile picture), we create a GroupV2ServerUserData entry + + for group in contactGroupsV2.values { + guard let serverPhotoInfo = group.trustedDetails?.serverPhotoInfo, let groupIdentifier = group.groupIdentifier else { continue } + if serverPhotoInfo.identity == ownedIdentity.cryptoIdentity { + _ = try? GroupV2ServerUserData.getOrCreateIfRequiredForAdministratedGroupV2Details( + ownedIdentity: ownedIdentity.cryptoIdentity, + label: serverPhotoInfo.photoServerKeyAndLabel.label, + groupIdentifier: groupIdentifier, + within: obvContext) + } + } + + // Refresh the keycloak badges + + ownedIdentity.refreshCertifiedByOwnKeycloakAndTrustedDetailsForAllContacts(delegateManager: delegateManager) + + } + + enum ObvError: Error { + case duplicateContact + case tryingToRestoreIncompleteNode + case mismatchBetweenDomainAndValues + case publishedIdentityDetailsAreNil + } + +} + + + + +// MARK: - Private Helpers + +private extension String { + + var base64EncodedToData: Data? { + guard let data = Data(base64Encoded: self) else { assertionFailure(); return nil } + return data + } + +} + + +private extension Data { + + var identityToObvCryptoIdentity: ObvCryptoIdentity? { + guard let cryptoIdentity = ObvCryptoIdentity(from: self) else { assertionFailure(); return nil } + return cryptoIdentity + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentityDetailsPublished.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentityDetailsPublished.swift index f8d328fc..3e34b50c 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentityDetailsPublished.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentityDetailsPublished.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -68,9 +68,14 @@ final class OwnedIdentityDetailsPublished: NSManagedObject, ObvManagedObject { } func getPhotoURL(identityPhotosDirectory: URL) -> URL? { + guard let url = getRawPhotoURL(identityPhotosDirectory: identityPhotosDirectory) else { return nil } + guard FileManager.default.fileExists(atPath: url.path) else { assertionFailure(); return nil } + return url + } + + private func getRawPhotoURL(identityPhotosDirectory: URL) -> URL? { guard let photoFilename = photoFilename else { return nil } let url = identityPhotosDirectory.appendingPathComponent(photoFilename) - guard FileManager.default.fileExists(atPath: url.path) else { assertionFailure(); return nil } return url } @@ -84,10 +89,12 @@ final class OwnedIdentityDetailsPublished: NSManagedObject, ObvManagedObject { private var ownedCryptoIdOnDeletion: ObvCryptoIdentity? var photoServerKeyAndLabel: PhotoServerKeyAndLabel? { - guard let photoServerKeyEncoded = self.photoServerKeyEncoded else { return nil } - let obvEncoded = ObvEncoded(withRawData: photoServerKeyEncoded)! - guard let key = try? AuthenticatedEncryptionKeyDecoder.decode(obvEncoded) else { return nil } - guard let label = photoServerLabel else { return nil } + guard let photoServerKeyEncoded = self.photoServerKeyEncoded, + let obvEncoded = ObvEncoded(withRawData: photoServerKeyEncoded), + let key = try? AuthenticatedEncryptionKeyDecoder.decode(obvEncoded), + let label = photoServerLabel else { + return nil + } return PhotoServerKeyAndLabel(key: key, label: label) } @@ -137,6 +144,22 @@ final class OwnedIdentityDetailsPublished: NSManagedObject, ObvManagedObject { } + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + fileprivate convenience init(snapshotNode: OwnedIdentityDetailsPublishedSyncSnapshotNode, with obvContext: ObvContext) throws { + let entityDescription = NSEntityDescription.entity(forEntityName: OwnedIdentityDetailsPublished.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + self.photoServerKeyEncoded = snapshotNode.photoServerKeyEncoded + self.photoServerLabel = snapshotNode.photoServerLabel + self.photoFilename = nil // This is ok + guard let serializedIdentityCoreDetails = snapshotNode.serializedIdentityCoreDetails, + let version = snapshotNode.version else { + throw OwnedIdentityDetailsPublishedSyncSnapshotNode.ObvError.tryingToRestoreIncompleteSnapshot + } + self.serializedIdentityCoreDetails = serializedIdentityCoreDetails + self.version = version + } + + func delete(delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { self.delegateManagerOnDeletion = delegateManager self.ownedCryptoIdOnDeletion = ownedIdentity?.cryptoIdentity @@ -230,7 +253,7 @@ extension OwnedIdentityDetailsPublished { } - func updateWithNewIdentityDetails(_ newIdentityDetails: ObvIdentityDetails, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { + func updateWithNewIdentityDetails(_ newIdentityDetails: ObvIdentityDetails, delegateManager: ObvIdentityDelegateManager) throws { var detailsWereUpdated = false let currentCoreDetails = self.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory).coreDetails let newCoreDetails = newIdentityDetails.coreDetails @@ -249,7 +272,52 @@ extension OwnedIdentityDetailsPublished { self.version += 1 } } + + + /// Returns `true` if we need to download a new profile picture + func updateWithOtherDetailsIfNewer(otherDetails: IdentityDetailsElements, delegateManager: ObvIdentityDelegateManager) throws -> Bool { + + // first, check the received details are newer than our own details + + guard otherDetails.version > self.version else { + return false + } + + // The other details are more recent -> update the current details + + let currentCoreDetails = self.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory).coreDetails + if otherDetails.coreDetails != currentCoreDetails { + self.serializedIdentityCoreDetails = try otherDetails.coreDetails.jsonEncode() + } + let photoDownloadNeeded: Bool + if otherDetails.photoServerKeyAndLabel != self.photoServerKeyAndLabel { + // The current photoServerKeyAndLabel must be discarded + if let newPhotoServerKeyAndLabel = otherDetails.photoServerKeyAndLabel { + // We have new photoServerKeyAndLabel. We keep them. + // We will request a download of the corresponding photo (for now, we keep the old one, it will soon be replaced) + set(photoServerKeyAndLabel: newPhotoServerKeyAndLabel) + photoDownloadNeeded = true + } else { + // The new photoServerKeyAndLabel are nil, meaning we should remove the current one and remove the photo + self.photoServerKeyEncoded = nil + self.labelToDelete = self.photoServerLabel + notificationRelatedChanges.insert(.photoServerLabel) + self.photoServerLabel = nil + _ = try setOwnedIdentityPhoto(with: nil, delegateManager: delegateManager) + photoDownloadNeeded = false + } + } else { + // The new photoServerKeyAndLabel are identical to the ones we have + photoDownloadNeeded = false + } + + self.version = otherDetails.version + + return photoDownloadNeeded + } + + func set(photoServerKeyAndLabel: PhotoServerKeyAndLabel) { self.photoServerKeyEncoded = photoServerKeyAndLabel.key.obvEncode().rawData self.labelToDelete = self.photoServerLabel @@ -278,6 +346,9 @@ extension OwnedIdentityDetailsPublished { static var withoutPhotoFilename: NSPredicate { NSPredicate(withNilValueForKey: Key.photoFilename) } + static var withPhotoFilename: NSPredicate { + NSPredicate(withNonNilValueForKey: Key.photoFilename) + } static var withPhotoServerKey: NSPredicate { NSPredicate(withNonNilValueForKey: Key.photoServerKeyEncoded) } @@ -295,6 +366,23 @@ extension OwnedIdentityDetailsPublished { } } + + static func getInfosAboutOwnedIdentitiesHavingPhotoFilename(identityPhotosDirectory: URL, within obvContext: ObvContext) throws -> [(ownedCryptoId: ObvCryptoIdentity, ownedIdentityDetailsElements: IdentityDetailsElements, photoURL: URL)] { + let request: NSFetchRequest = OwnedIdentityDetailsPublished.fetchRequest() + request.predicate = Predicate.withPhotoFilename + let items = try obvContext.fetch(request) + let results: [(ownedCryptoId: ObvCryptoIdentity, ownedIdentityDetailsElements: IdentityDetailsElements, photoURL: URL)] = items.compactMap { details in + guard let ownedCryptoId = details.ownedIdentity?.cryptoIdentity, + let photoURL = details.getRawPhotoURL(identityPhotosDirectory: identityPhotosDirectory) else { + return nil + } + let ownedIdentityDetailsElements = details.getIdentityDetailsElements(identityPhotosDirectory: identityPhotosDirectory) + return (ownedCryptoId, ownedIdentityDetailsElements, photoURL) + } + return results + } + + static func getAllWithMissingPhotoFilename(within obvContext: ObvContext) throws -> [OwnedIdentityDetailsPublished] { let request: NSFetchRequest = OwnedIdentityDetailsPublished.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ @@ -498,3 +586,126 @@ struct OwnedIdentityDetailsPublishedBackupItem: Codable, Hashable { } } + + +// MARK: - For snapshot purposes + +extension OwnedIdentityDetailsPublished { + + var snapshotNode: OwnedIdentityDetailsPublishedSyncSnapshotNode { + return OwnedIdentityDetailsPublishedSyncSnapshotNode(serializedIdentityCoreDetails: serializedIdentityCoreDetails, + photoServerKeyEncoded: photoServerKeyEncoded, + photoServerLabel: photoServerLabel, + version: version) + } + +} + + +struct OwnedIdentityDetailsPublishedSyncSnapshotNode: ObvSyncSnapshotNode { + + private let domain: Set + fileprivate let serializedIdentityCoreDetails: Data? + fileprivate let photoServerKeyEncoded: Data? + let photoServerLabel: UID? + fileprivate let version: Int? + + let id = Self.generateIdentifier() + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + // Attributes inherited from OwnedIdentityDetails + case serializedIdentityCoreDetails = "serialized_details" + // Local attributes + case photoServerKeyEncoded = "photo_server_key" + case photoServerLabel = "photo_server_label" + case version = "version" + // Domain + case domain = "domain" + } + + + fileprivate init(serializedIdentityCoreDetails: Data, photoServerKeyEncoded: Data?, photoServerLabel: UID?, version: Int) { + self.domain = Self.defaultDomain + self.serializedIdentityCoreDetails = serializedIdentityCoreDetails + self.photoServerKeyEncoded = photoServerKeyEncoded + self.photoServerLabel = photoServerLabel + self.version = version + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + // Domain + try container.encode(domain, forKey: .domain) + // Attributes inherited from OwnedIdentityDetails + if let serializedIdentityCoreDetails { + guard let serializedIdentityCoreDetailsAsString = String(data: serializedIdentityCoreDetails, encoding: .utf8) else { + throw ObvError.couldNotSerializeCoreDetails + } + try container.encode(serializedIdentityCoreDetailsAsString, forKey: .serializedIdentityCoreDetails) + } + // Local attributes + try container.encodeIfPresent(photoServerKeyEncoded, forKey: .photoServerKeyEncoded) + try container.encodeIfPresent(photoServerLabel?.raw, forKey: .photoServerLabel) + try container.encode(version, forKey: .version) + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + + // Attributes inherited from OwnedIdentityDetails + + if let serializedIdentityCoreDetailsAsString = try values.decodeIfPresent(String.self, forKey: .serializedIdentityCoreDetails) { + guard let serializedIdentityCoreDetailsAsData = serializedIdentityCoreDetailsAsString.data(using: .utf8) else { + throw ObvError.couldNotDeserializeCoreDetails + } + self.serializedIdentityCoreDetails = serializedIdentityCoreDetailsAsData + } else { + self.serializedIdentityCoreDetails = nil + } + + if let photoServerKeyEncoded = try? values.decodeIfPresent(Data.self, forKey: .photoServerKeyEncoded), + let photoServerLabelAsData = try? values.decodeIfPresent(Data.self, forKey: .photoServerLabel), + let photoServerLabelAsUID = UID(uid: photoServerLabelAsData) { + self.photoServerKeyEncoded = photoServerKeyEncoded + self.photoServerLabel = photoServerLabelAsUID + } else { + assert(!values.allKeys.contains(where: { $0 == .photoServerKeyEncoded }), "The key is present, but we did not manage to decode the value") + assert(!values.allKeys.contains(where: { $0 == .photoServerLabel }), "The key is present, but we did not manage to decode the value") + self.photoServerKeyEncoded = nil + self.photoServerLabel = nil + } + + self.version = try values.decodeIfPresent(Int.self, forKey: .version) + } + + + func restoreInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + guard domain.contains(.serializedIdentityCoreDetails) && domain.contains(.version) else { + throw ObvError.tryingToRestoreIncompleteSnapshot + } + let ownedIdentityDetailsPublished = try OwnedIdentityDetailsPublished(snapshotNode: self, with: obvContext) + try associations.associate(ownedIdentityDetailsPublished, to: self) + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + // Nothing to do here + } + + + enum ObvError: Error { + case tryingToRestoreIncompleteSnapshot + case couldNotSerializeCoreDetails + case couldNotDeserializeCoreDetails + case couldNotDeserializePhotoServerLabel + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentityMaskingUID.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentityMaskingUID.swift index 83449840..378cf98d 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentityMaskingUID.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/OwnedIdentityMaskingUID.swift @@ -26,7 +26,7 @@ import ObvMetaManager import OlvidUtils @objc(OwnedIdentityMaskingUID) -final class OwnedIdentityMaskingUID: NSManagedObject, ObvManagedObject { +final class OwnedIdentityMaskingUID: NSManagedObject, ObvManagedObject, ObvErrorMaker { // MARK: Internal constants @@ -34,7 +34,7 @@ final class OwnedIdentityMaskingUID: NSManagedObject, ObvManagedObject { private static let ownedIdentityKey = "ownedIdentity" private static let maskingUIDKey = "maskingUID" - private static let errorDomain = "OwnedIdentityMaskingUID" + internal static let errorDomain = "OwnedIdentityMaskingUID" private static func makeError(message: String) -> Error { NSError(domain: errorDomain, code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } private func makeError(message: String) -> Error { NSError(domain: OwnedIdentityMaskingUID.errorDomain, code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } @@ -61,11 +61,11 @@ final class OwnedIdentityMaskingUID: NSManagedObject, ObvManagedObject { // MARK: - Initializer - private convenience init(ownedIdentity: OwnedIdentity, prng: PRNG) throws { + private convenience init(ownedIdentity: OwnedIdentity, pushToken: Data) throws { guard let obvContext = ownedIdentity.obvContext else { throw OwnedIdentityMaskingUID.makeError(message: "Coud not find ObvContext within the owned identity instance (1)") } let entityDescription = NSEntityDescription.entity(forEntityName: OwnedIdentityMaskingUID.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) - self.maskingUID = UID.gen(with: prng) + self.maskingUID = try Self.generateDeterministricUID(ownedCryptoId: ownedIdentity.cryptoIdentity, pushToken: pushToken) self.ownedIdentity = ownedIdentity } @@ -80,7 +80,7 @@ extension OwnedIdentityMaskingUID { } - static func getOrCreate(for ownedIdentity: OwnedIdentity, prng: PRNG) throws -> UID { + static func getOrCreate(for ownedIdentity: OwnedIdentity, pushToken: Data) throws -> UID { guard let obvContext = ownedIdentity.obvContext else { throw makeError(message: "Could not find ObvContext within the owned identity instance") } @@ -89,9 +89,13 @@ extension OwnedIdentityMaskingUID { request.fetchLimit = 1 let item: OwnedIdentityMaskingUID if let _item = try obvContext.fetch(request).first { + let newMaskingUID = try generateDeterministricUID(ownedCryptoId: ownedIdentity.cryptoIdentity, pushToken: pushToken) + if _item.maskingUID != newMaskingUID { + _item.maskingUID = newMaskingUID + } item = _item } else { - item = try OwnedIdentityMaskingUID(ownedIdentity: ownedIdentity, prng: prng) + item = try .init(ownedIdentity: ownedIdentity, pushToken: pushToken) } return item.maskingUID } @@ -105,4 +109,13 @@ extension OwnedIdentityMaskingUID { return item?.ownedIdentity } + + private static func generateDeterministricUID(ownedCryptoId: ObvCryptoIdentity, pushToken: Data) throws -> UID { + let seedData = Data([ownedCryptoId.getIdentity(), pushToken].joined()) + guard let seed = Seed(with: seedData) else { assertionFailure(); throw Self.makeError(message: "Could not generate seed")} + let prng = ObvCryptoSuite.sharedInstance.concretePRNG().init(with: seed) + return UID.gen(with: prng) + } + + } diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/PendingGroupMember.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/PendingGroupMember.swift index 9bf36c53..c13930c6 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/PendingGroupMember.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/PendingGroupMember.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -79,7 +79,7 @@ final class PendingGroupMember: NSManagedObject, ObvManagedObject { convenience init(contactGroup: ContactGroup, cryptoIdentityWithCoreDetails: CryptoIdentityWithCoreDetails, delegateManager: ObvIdentityDelegateManager) throws { guard let obvContext = contactGroup.obvContext else { - throw ObvIdentityManagerError.contextIsNil.error(withDomain: PendingGroupMember.errorDomain) + throw ObvIdentityManagerError.contextIsNil } let entityDescription = NSEntityDescription.entity(forEntityName: PendingGroupMember.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) @@ -90,6 +90,7 @@ final class PendingGroupMember: NSManagedObject, ObvManagedObject { self.delegateManager = delegateManager } + /// Used *exclusively* during a backup restore for creating an instance, relatioships are recreater in a second step fileprivate convenience init(backupItem: PendingGroupMemberBackupItem, within obvContext: ObvContext) { let entityDescription = NSEntityDescription.entity(forEntityName: PendingGroupMember.entityName, in: obvContext)! @@ -99,6 +100,16 @@ final class PendingGroupMember: NSManagedObject, ObvManagedObject { self.serializedIdentityCoreDetails = backupItem.serializedIdentityCoreDetails } + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + fileprivate convenience init(cryptoIdentity: ObvCryptoIdentity, snapshotItem: PendingGroupMemberSyncSnapshotItem, within obvContext: ObvContext) { + let entityDescription = NSEntityDescription.entity(forEntityName: PendingGroupMember.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + self.cryptoIdentity = cryptoIdentity + self.declined = snapshotItem.declined + self.serializedIdentityCoreDetails = snapshotItem.serializedIdentityCoreDetails + } + } @@ -108,12 +119,16 @@ extension PendingGroupMember { func markAsDeclined(delegateManager: ObvIdentityDelegateManager?) { self.delegateManager = delegateManager - self.declined = true + if !self.declined { + self.declined = true + } } func unmarkAsDeclined(delegateManager: ObvIdentityDelegateManager?) { self.delegateManager = delegateManager - self.declined = false + if self.declined { + self.declined = false + } } } @@ -293,3 +308,74 @@ struct PendingGroupMemberBackupItem: Codable, Hashable { } } + + +// MARK: - For Snapshot purposes + +extension PendingGroupMember { + + var syncSnapshot: PendingGroupMemberSyncSnapshotItem { + .init(declined: declined, + serializedIdentityCoreDetails: serializedIdentityCoreDetails) + } + +} + + +struct PendingGroupMemberSyncSnapshotItem: Codable, Hashable, Identifiable { + + fileprivate let declined: Bool + fileprivate let serializedIdentityCoreDetails: Data + + let id = ObvSyncSnapshotNodeUtils.generateIdentifier() + + enum CodingKeys: String, CodingKey { + case declined = "declined" + case serializedIdentityCoreDetails = "serialized_details" + } + + + fileprivate init(declined: Bool, serializedIdentityCoreDetails: Data) { + self.declined = declined + self.serializedIdentityCoreDetails = serializedIdentityCoreDetails + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(declined, forKey: .declined) + guard let serializedIdentityCoreDetailsAsString = String(data: serializedIdentityCoreDetails, encoding: .utf8) else { + throw ObvError.couldNotSerializeCoreDetails + } + try container.encode(serializedIdentityCoreDetailsAsString, forKey: .serializedIdentityCoreDetails) + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + self.declined = try values.decodeIfPresent(Bool.self, forKey: .declined) ?? false + let serializedIdentityCoreDetailsAsString = try values.decode(String.self, forKey: .serializedIdentityCoreDetails) + guard let serializedIdentityCoreDetailsAsData = serializedIdentityCoreDetailsAsString.data(using: .utf8) else { + throw ObvError.couldNotDeserializeCoreDetails + } + self.serializedIdentityCoreDetails = serializedIdentityCoreDetailsAsData + } + + + func restoreInstance(within obvContext: ObvContext, cryptoIdentity: ObvCryptoIdentity, associations: inout SnapshotNodeManagedObjectAssociations) throws { + let pendingGroupMember = PendingGroupMember(cryptoIdentity: cryptoIdentity, snapshotItem: self, within: obvContext) + try associations.associate(pendingGroupMember, to: self) + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + // Nothing to do here + } + + + enum ObvError: Error { + case couldNotSerializeCoreDetails + case couldNotDeserializeCoreDetails + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/PersistedTrustOrigin.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/PersistedTrustOrigin.swift index 9911858a..10507074 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/PersistedTrustOrigin.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/PersistedTrustOrigin.swift @@ -123,6 +123,20 @@ final class PersistedTrustOrigin: NSManagedObject, ObvManagedObject { self.trustTypeRaw = backupItem.trustTypeRaw self.rawObvGroupV2Identifier = backupItem.rawObvGroupV2Identifier } + + + /// Used *exclusively* during a snapshot restore for creating an instance, relatioships are recreater in a second step + fileprivate convenience init(snapshotItem: PersistedTrustOriginSyncSnapshotItem, within obvContext: ObvContext) { + let entityDescription = NSEntityDescription.entity(forEntityName: PersistedTrustOrigin.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + self.identityServer = snapshotItem.identityServer + self.mediatorOrGroupOwnerCryptoIdentity = snapshotItem.mediatorOrGroupOwnerCryptoIdentity + self.mediatorOrGroupOwnerTrustLevelMajor = snapshotItem.mediatorOrGroupOwnerTrustLevelMajor + self.timestamp = snapshotItem.timestamp + self.trustTypeRaw = snapshotItem.trustTypeRaw + self.rawObvGroupV2Identifier = snapshotItem.rawObvGroupV2Identifier + } + } @@ -303,3 +317,105 @@ struct PersistedTrustOriginBackupItem: Codable, Hashable { // Nothing do to here } } + + +// MARK: - For Snapshot purposes + +extension PersistedTrustOrigin { + + var snapshotItem: PersistedTrustOriginSyncSnapshotItem { + return PersistedTrustOriginSyncSnapshotItem( + identityServer: identityServer, + mediatorOrGroupOwnerCryptoIdentity: mediatorOrGroupOwnerCryptoIdentity, + mediatorOrGroupOwnerTrustLevelMajor: mediatorOrGroupOwnerTrustLevelMajor, + timestamp: timestamp, + trustTypeRaw: trustTypeRaw, + rawObvGroupV2Identifier: rawObvGroupV2Identifier) + } + +} + + +struct PersistedTrustOriginSyncSnapshotItem: Codable, Hashable, Identifiable { + + fileprivate let identityServer: URL? + fileprivate let mediatorOrGroupOwnerCryptoIdentity: ObvCryptoIdentity? + fileprivate let mediatorOrGroupOwnerTrustLevelMajor: NSNumber? + fileprivate let timestamp: Date + fileprivate let trustTypeRaw: Int + fileprivate let rawObvGroupV2Identifier: Data? + + let id = ObvSyncSnapshotNodeUtils.generateIdentifier() + + enum CodingKeys: String, CodingKey { + case identityServer = "identity_server" + case mediatorOrGroupOwnerCryptoIdentity = "mediator_or_group_owner_identity" + case mediatorOrGroupOwnerTrustLevelMajor = "mediator_or_group_owner_trust_level_major" + case timestamp = "timestamp" + case trustTypeRaw = "trust_type" + case rawObvGroupV2Identifier = "raw_obv_group_v2_identifier" + case domain = "domain" + } + + + fileprivate init(identityServer: URL?, mediatorOrGroupOwnerCryptoIdentity: ObvCryptoIdentity?, mediatorOrGroupOwnerTrustLevelMajor: NSNumber?, timestamp: Date, trustTypeRaw: Int, rawObvGroupV2Identifier: Data?) { + self.identityServer = identityServer + self.mediatorOrGroupOwnerCryptoIdentity = mediatorOrGroupOwnerCryptoIdentity + self.mediatorOrGroupOwnerTrustLevelMajor = mediatorOrGroupOwnerTrustLevelMajor + self.timestamp = timestamp + self.trustTypeRaw = trustTypeRaw + self.rawObvGroupV2Identifier = rawObvGroupV2Identifier + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(identityServer, forKey: .identityServer) + try container.encodeIfPresent(mediatorOrGroupOwnerCryptoIdentity?.getIdentity(), forKey: .mediatorOrGroupOwnerCryptoIdentity) + try container.encodeIfPresent(mediatorOrGroupOwnerTrustLevelMajor?.intValue, forKey: .mediatorOrGroupOwnerTrustLevelMajor) + try container.encodeIfPresent(Int(timestamp.timeIntervalSince1970 * 1000), forKey: .timestamp) + try container.encodeIfPresent(trustTypeRaw, forKey: .trustTypeRaw) + try container.encodeIfPresent(rawObvGroupV2Identifier, forKey: .rawObvGroupV2Identifier) + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + self.identityServer = try values.decodeIfPresent(URL.self, forKey: .identityServer) + if let identity = try values.decodeIfPresent(Data.self, forKey: .mediatorOrGroupOwnerCryptoIdentity) { + guard let cryptoIdentity = ObvCryptoIdentity(from: identity) else { + throw ObvError.couldNotParseIdentity + } + self.mediatorOrGroupOwnerCryptoIdentity = cryptoIdentity + if let trustLevel = try values.decodeIfPresent(Int.self, forKey: .mediatorOrGroupOwnerTrustLevelMajor) { + self.mediatorOrGroupOwnerTrustLevelMajor = NSNumber(value: trustLevel) + } else { + self.mediatorOrGroupOwnerTrustLevelMajor = nil + } + } else { + self.mediatorOrGroupOwnerCryptoIdentity = nil + self.mediatorOrGroupOwnerTrustLevelMajor = nil + } + let timestamp = try values.decode(Int.self, forKey: .timestamp) + self.timestamp = Date(timeIntervalSince1970: Double(timestamp)/1000.0) + self.trustTypeRaw = try values.decode(Int.self, forKey: .trustTypeRaw) + self.rawObvGroupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .rawObvGroupV2Identifier) + } + + + func restoreInstance(within obvContext: ObvContext, associations: inout SnapshotNodeManagedObjectAssociations) throws { + let persistedTrustOrigin = PersistedTrustOrigin(snapshotItem: self, within: obvContext) + try associations.associate(persistedTrustOrigin, to: self) + } + + + func restoreRelationships(associations: SnapshotNodeManagedObjectAssociations, within obvContext: ObvContext) throws { + // Nothing do to here + } + + + enum ObvError: Error { + case couldNotParseIdentity + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ServerUserData.swift b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ServerUserData.swift index 295472b7..627abf03 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ServerUserData.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/CoreData/ServerUserData.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,6 +25,9 @@ import ObvTypes import ObvMetaManager import OlvidUtils + + + @objc(ServerUserData) class ServerUserData: NSManagedObject, ObvManagedObject, ObvErrorMaker { diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/ObvIdentityManagerImplementation.swift b/Engine/ObvIdentityManager/ObvIdentityManager/ObvIdentityManagerImplementation.swift index b816b8b9..f8b3a809 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/ObvIdentityManagerImplementation.swift +++ b/Engine/ObvIdentityManager/ObvIdentityManager/ObvIdentityManagerImplementation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -72,6 +72,51 @@ public final class ObvIdentityManagerImplementation { } +// MARK: - Implementing ObvSnapshotable + +extension ObvIdentityManagerImplementation: ObvSnapshotable { + + public func getSyncSnapshotNode(for ownedCryptoId: ObvTypes.ObvCryptoId) throws -> any ObvSyncSnapshotNode { + let flowId = FlowIdentifier() + let ownedCryptoIdentity = ownedCryptoId.cryptoIdentity + return try delegateManager.contextCreator.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { obvContext in + return try getSyncSnapshotNode(ownedCryptoIdentity: ownedCryptoIdentity, within: obvContext) + } + } + + + private func getSyncSnapshotNode(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvIdentityManagerSyncSnapshotNode { + try ObvIdentityManagerSyncSnapshotNode(ownedCryptoIdentity: ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) + } + + + public func serializeObvSyncSnapshotNode(_ syncSnapshotNode: any ObvSyncSnapshotNode) throws -> Data { + guard let node = syncSnapshotNode as? ObvIdentityManagerSyncSnapshotNode else { + assertionFailure() + throw Self.makeError(message: "Unexpected snapshot type") + } + let jsonEncoder = JSONEncoder() + return try jsonEncoder.encode(node) + } + + + public func deserializeObvSyncSnapshotNode(_ serializedSyncSnapshotNode: Data) throws -> any ObvSyncSnapshotNode { + let jsonDecoder = JSONDecoder() + return try jsonDecoder.decode(ObvIdentityManagerSyncSnapshotNode.self, from: serializedSyncSnapshotNode) + } + + + public func restoreObvSyncSnapshotNode(_ syncSnapshotNode: any ObvSyncSnapshotNode, customDeviceName: String, within obvContext: ObvContext) throws { + guard let node = syncSnapshotNode as? ObvIdentityManagerSyncSnapshotNode else { + assertionFailure() + throw Self.makeError(message: "Unexpected snapshot type") + } + try node.restore(prng: prng, customDeviceName: customDeviceName, delegateManager: delegateManager, within: obvContext) + } + +} + + // MARK: - Implementing ObvIdentityDelegate extension ObvIdentityManagerImplementation: ObvIdentityDelegate { @@ -137,11 +182,11 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } os_log("📲 We have %d owned identities to restore within flow %{public}@. We restore them now.", log: log, type: .info, ownedIdentityBackupItems.count, backupRequestIdentifier.debugDescription) - - for (index, ownedIdentityBackupItem) in ownedIdentityBackupItems.enumerated() { + for (index, ownedIdentityBackupItem) in ownedIdentityBackupItems.enumerated() { + os_log("📲 Restoring the database owned identity instances %d out of %d within flow %{public}@...", log: log, type: .info, index+1, ownedIdentityBackupItems.count, backupRequestIdentifier.debugDescription) - + let associationsForRelationships: BackupItemObjectAssociations do { var associations = BackupItemObjectAssociations() @@ -150,17 +195,17 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { notificationDelegate: delegateManager.notificationDelegate) associationsForRelationships = associations } - + os_log("📲 The instances were re-created. We now recreate the relationships.", log: log, type: .info) try ownedIdentityBackupItem.restoreRelationships(associations: associationsForRelationships, prng: prng, within: obvContext) - + os_log("📲 The relationships were recreated.", log: log, type: .info) - + } - + os_log("📲 Saving the context", log: log, type: .info) - + try obvContext.save(logOnFailure: log) os_log("📲 Context saved. We successfully restored the owned identities. Yepee!", log: log, type: .info, backupRequestIdentifier.debugDescription) @@ -175,7 +220,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } } } - + public func getAllOwnedIdentityWithMissingPhotoUrl(within obvContext: ObvContext) throws -> [(ObvCryptoIdentity, IdentityDetailsElements)] { let allDetails = try OwnedIdentityDetailsPublished.getAllWithMissingPhotoFilename(within: obvContext) @@ -220,27 +265,31 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { assertionFailure() return nil } + guard let contactCryptoIdentity = contactIdentityDetails.contactIdentity.cryptoIdentity else { + assertionFailure() + return nil + } return (ownedIdentity.cryptoIdentity, - contactIdentityDetails.contactIdentity.cryptoIdentity, + contactCryptoIdentity, identityDetailsElements) } return results } - + // MARK: API related to owned identities - + public func isOwned(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { return try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) != nil } - - + + public func isOwnedIdentityActive(ownedIdentity identity: ObvCryptoIdentity, flowId: FlowIdentifier) throws -> Bool { var _isActive: Bool? try delegateManager.contextCreator.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } _isActive = ownedIdentity.isActive } @@ -252,52 +301,37 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } - public func deactivateOwnedIdentity(ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + public func deactivateOwnedIdentityAndDeleteContactDevices(ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { os_log("Deactivating owned identity %{public}@", log: log, type: .info, ownedIdentity.debugDescription) guard let ownedIdentityObj = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { assertionFailure() - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } - ownedIdentityObj.deactivate() + ownedIdentityObj.deactivateAndDeleteAllContactDevices(delegateManager: delegateManager) } public func reactivateOwnedIdentity(ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { os_log("Reactivating owned identity %{public}@", log: log, type: .info, ownedIdentity.debugDescription) guard let ownedIdentityObj = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } ownedIdentityObj.reactivate() } - - public func generateOwnedIdentity(withApiKey apiKey: UUID, onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, accordingTo pkEncryptionImplemByteId: PublicKeyEncryptionImplementationByteId, and authEmplemByteId: AuthenticationImplementationByteId, keycloakState: ObvKeycloakState?, using prng: PRNGService, within obvContext: ObvContext) -> ObvCryptoIdentity? { - guard let ownedIdentity = OwnedIdentity(apiKey: apiKey, - serverURL: serverURL, + + public func generateOwnedIdentity(onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, accordingTo pkEncryptionImplemByteId: PublicKeyEncryptionImplementationByteId, and authEmplemByteId: AuthenticationImplementationByteId, nameForCurrentDevice: String, keycloakState: ObvKeycloakState?, using prng: PRNGService, within obvContext: ObvContext) -> ObvCryptoIdentity? { + guard let ownedIdentity = OwnedIdentity(serverURL: serverURL, identityDetails: identityDetails, accordingTo: pkEncryptionImplemByteId, and: authEmplemByteId, keycloakState: keycloakState, + nameForCurrentDevice: nameForCurrentDevice, using: prng, delegateManager: delegateManager, within: obvContext) else { return nil } let ownedCryptoIdentity = ownedIdentity.ownedCryptoIdentity.getObvCryptoIdentity() return ownedCryptoIdentity } - - - public func getApiKeyOfOwnedIdentity(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UUID { - guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) - } - return ownedIdentity.apiKey - } - - public func setAPIKey(_ apiKey: UUID, forOwnedIdentity identity: ObvCryptoIdentity, keycloakServerURL: URL?, within obvContext: ObvContext) throws { - guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) - } - try ownedIdentity.setAPIKey(to: apiKey, keycloakServerURL: keycloakServerURL) - } public func markOwnedIdentityForDeletion(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws { @@ -312,14 +346,49 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { try identityObj.delete(delegateManager: delegateManager, within: obvContext) } } - + public func getOwnedIdentities(within obvContext: ObvContext) throws -> Set { + return try OwnedIdentity.getAllCryptoIds(within: obvContext.context) + } + + + public func getActiveOwnedIdentitiesAndCurrentDeviceName(within obvContext: ObvContext) throws -> [ObvCryptoIdentity: String?] { let ownedIdentities = try OwnedIdentity.getAll(delegateManager: delegateManager, within: obvContext) - let cryptoIdentities = ownedIdentities.map { $0.ownedCryptoIdentity.getObvCryptoIdentity() } + let cryptoIdentitiesAndNames = ownedIdentities + .filter({ $0.isActive }) + .map { ($0.ownedCryptoIdentity.getObvCryptoIdentity(), $0.currentDevice.name) } + return Dictionary(cryptoIdentitiesAndNames) { cryptoIdentity, _ in + assertionFailure() + return cryptoIdentity + } + } + + + public func getActiveOwnedIdentitiesThatAreNotKeycloakManaged(within obvContext: ObvContext) throws -> Set { + let ownedIdentities = try OwnedIdentity.getAll(delegateManager: delegateManager, within: obvContext) + let cryptoIdentities = ownedIdentities + .filter({ $0.isActive }) + .filter({ !$0.isKeycloakManaged }) + .map { $0.ownedCryptoIdentity.getObvCryptoIdentity() } return Set(cryptoIdentities) } - + + + public func saveRegisteredKeycloakAPIKey(ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, within obvContext: ObvContext) throws { + guard let ownedIdentityObj = try OwnedIdentity.get(ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + try ownedIdentityObj.saveRegisteredKeycloakAPIKey(apiKey: apiKey) + } + + + public func getRegisteredKeycloakAPIKey(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UUID? { + guard let ownedIdentityObj = try OwnedIdentity.get(ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + return ownedIdentityObj.keycloakServer?.ownAPIKey + } public func getOwnedIdentitiesAndCurrentDeviceUids(within obvContext: ObvContext) throws -> [(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID)] { let ownedIdentities = try OwnedIdentity.getAll(delegateManager: delegateManager, within: obvContext) @@ -330,17 +399,17 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getIdentityDetailsOfOwnedIdentity(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> (publishedIdentityDetails: ObvIdentityDetails, isActive: Bool) { guard let ownedIdentityObj = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } return (ownedIdentityObj.publishedIdentityDetails.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory), ownedIdentityObj.isActive) } - + // Used within the protocol manager public func getPublishedIdentityDetailsOfOwnedIdentity(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> (ownedIdentityDetailsElements: IdentityDetailsElements, photoURL: URL?) { guard let ownedIdentityObj = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } let ownedIdentityDetailsElements = IdentityDetailsElements( @@ -353,7 +422,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func setPhotoServerKeyAndLabelForPublishedIdentityDetailsOfOwnedIdentity(_ identity: ObvCryptoIdentity, withPhotoServerKeyAndLabel photoServerKeyAndLabel: PhotoServerKeyAndLabel, within obvContext: ObvContext) throws -> IdentityDetailsElements { guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } ownedIdentity.publishedIdentityDetails.set(photoServerKeyAndLabel: photoServerKeyAndLabel) _ = IdentityServerUserData.createForOwnedIdentityDetails(ownedIdentity: identity, @@ -361,48 +430,67 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { within: obvContext) return ownedIdentity.publishedIdentityDetails.getIdentityDetailsElements(identityPhotosDirectory: delegateManager.identityPhotosDirectory) } - + public func updateDownloadedPhotoOfOwnedIdentity(_ identity: ObvCryptoIdentity, version: Int, photo: Data, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } try ownedIdentity.updatePhoto(withData: photo, version: version, delegateManager: delegateManager, within: obvContext) } - - + + public func updatePublishedIdentityDetailsOfOwnedIdentity(_ identity: ObvCryptoIdentity, with newIdentityDetails: ObvIdentityDetails, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } try ownedIdentity.updatePublishedDetailsWithNewDetails(newIdentityDetails, delegateManager: delegateManager) } + /// Typically called when creating an oblivious channel with another owned device. In that case, during the protocol, we received the other owned identity details from that remote device. We keep them if they are newer than the one we have locally. + /// In case we update the local details, we might be in a situation where the owned profile picture must be downloaded. + public func updateOwnedPublishedDetailsWithOtherDetailsIfNewer(_ ownedIdentity: ObvCryptoIdentity, with otherIdentityDetails: IdentityDetailsElements, within obvContext: ObvContext) throws -> Bool { + guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + let photoDownloadNeeded = try ownedIdentity.updatePublishedDetailsWithOtherDetailsIfNewer(otherDetails: otherIdentityDetails, delegateManager: delegateManager) + return photoDownloadNeeded + } + + public func getDeterministicSeedForOwnedIdentity(_ identity: ObvCryptoIdentity, diversifiedUsing data: Data, within obvContext: ObvContext) throws -> Seed { guard let ownedIdentityObj = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } + return try getDeterministicSeed( + diversifiedUsing: data, + secretMACKey: ownedIdentityObj.ownedCryptoIdentity.secretMACKey, + forProtocol: .trustEstablishmentWithSAS) + } + + + public func getDeterministicSeed(diversifiedUsing data: Data, secretMACKey: MACKey, forProtocol seedProtocol: ObvConstants.SeedProtocol) throws -> Seed { guard !data.isEmpty else { - throw ObvIdentityManagerError.diversificationDataCannotBeEmpty.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.diversificationDataCannotBeEmpty } let sha256 = ObvCryptoSuite.sharedInstance.hashFunctionSha256() - let fixedByte = Data([0x55]) - var hashInput = try MAC.compute(forData: fixedByte, withKey: ownedIdentityObj.ownedCryptoIdentity.secretMACKey) + let fixedByte = Data([seedProtocol.fixedByte]) + var hashInput = try MAC.compute(forData: fixedByte, withKey: secretMACKey) hashInput.append(data) let r = sha256.hash(hashInput) guard let seed = Seed(with: r) else { - throw ObvIdentityManagerError.failedToTurnRandomIntoSeed.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.failedToTurnRandomIntoSeed } return seed } - public func getFreshMaskingUIDForPushNotifications(for identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UID { + public func getFreshMaskingUIDForPushNotifications(for identity: ObvCryptoIdentity, pushToken: Data, within obvContext: ObvContext) throws -> UID { guard let ownedIdentityObj = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } - let maskingUID = try OwnedIdentityMaskingUID.getOrCreate(for: ownedIdentityObj, prng: self.prng) + let maskingUID = try OwnedIdentityMaskingUID.getOrCreate(for: ownedIdentityObj, pushToken: pushToken) return maskingUID } @@ -414,40 +502,40 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func computeTagForOwnedIdentity(_ identity: ObvCryptoIdentity, on data: Data, within obvContext: ObvContext) throws -> Data { guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } let mac = ObvCryptoSuite.sharedInstance.mac() let dataToMac = "OwnedIdentityTag".data(using: .utf8)! + data return try mac.compute(forData: dataToMac, withKey: ownedIdentity.ownedCryptoIdentity.secretMACKey) } - + // MARK: - API related to contact groups V2 - + public func getGroupV2PhotoURLAndServerPhotoInfofOwnedIdentityIsUploader(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, within obvContext: ObvContext) throws -> (photoURL: URL, serverPhotoInfo: GroupV2.ServerPhotoInfo)? { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } - + guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { return nil } - + guard let photoURLAndServerPhotoInfo = try group.trustedDetails?.getPhotoURLAndServerPhotoInfo(identityPhotosDirectory: delegateManager.identityPhotosDirectory) else { return nil } // Check that the owned identity is the uploader guard photoURLAndServerPhotoInfo.serverPhotoInfo.identity == ownedIdentity else { return nil } return photoURLAndServerPhotoInfo - + } - + public func createContactGroupV2AdministratedByOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, serializedGroupCoreDetails: Data, photoURL: URL?, ownRawPermissions: Set, otherGroupMembers: Set, within obvContext: ObvContext) throws -> (groupIdentifier: GroupV2.Identifier, groupAdminServerAuthenticationPublicKey: PublicKeyForAuthentication, serverPhotoInfo: GroupV2.ServerPhotoInfo?, encryptedServerBlob: EncryptedData, photoURL: URL?) { - + guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } - + let (group, publicKey) = try ContactGroupV2.createContactGroupV2AdministratedByOwnedIdentity(ownedIdentity, serializedGroupCoreDetails: serializedGroupCoreDetails, photoURL: photoURL, @@ -466,23 +554,24 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } - public func createContactGroupV2JoinedByOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverBlob: GroupV2.ServerBlob, blobKeys: GroupV2.BlobKeys, within obvContext: ObvContext) throws { - + public func createContactGroupV2JoinedByOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverBlob: GroupV2.ServerBlob, blobKeys: GroupV2.BlobKeys, createdByMeOnOtherDevice: Bool, within obvContext: ObvContext) throws { + guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } - + try ContactGroupV2.createContactGroupV2JoinedByOwnedIdentity(ownedIdentity, groupIdentifier: groupIdentifier, serverBlob: serverBlob, blobKeys: blobKeys, + createdByMeOnOtherDevice: createdByMeOnOtherDevice, delegateManager: delegateManager) } - + public func deleteGroupV2(withGroupIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { return } try group.delete() @@ -491,7 +580,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func removeOtherMembersOrPendingMembersFromGroupV2(withGroupIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, identitiesToRemove: Set, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { return } try group.removeOtherMembersOrPendingMembers(identitiesToRemove) @@ -500,16 +589,16 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func freezeGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { return } group.freeze() } - + public func unfreezeGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { return } group.unfreeze() @@ -518,7 +607,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getGroupV2BlobKeysOfGroup(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> GroupV2.BlobKeys { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } guard let blobKeys = group.blobKeys else { assertionFailure(); throw Self.makeError(message: "Could not extract blob keys from group") } @@ -528,7 +617,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getPendingMembersAndPermissionsOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } let pendingMembersAndPermissions = try group.getPendingMembersAndPermissions() @@ -538,7 +627,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getVersionOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Int { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } return group.groupVersion @@ -547,12 +636,12 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func checkExistenceOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) return group != nil } - + public func updateGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, newBlobKeys: GroupV2.BlobKeys, consolidatedServerBlob: GroupV2.ServerBlob, groupUpdatedByOwnedIdentity: Bool, within obvContext: ObvContext) throws -> Set { // We create a local context that we can discard in case this method should throw @@ -560,7 +649,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { var insertedOrUpdatedIdentities: Set! try localContext.performAndWaitOrThrow { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: localContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } insertedOrUpdatedIdentities = try group.updateGroupV2(newBlobKeys: newBlobKeys, @@ -571,11 +660,11 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } return insertedOrUpdatedIdentities } - + public func getAllOtherMembersOrPendingMembersOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, memberOrPendingMemberInvitationNonce nonce: Data, within obvContext: ObvContext) throws -> Set { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } return try group.getAllOtherMembersOrPendingMembersIdentifiedByNonce(nonce) @@ -584,7 +673,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func movePendingMemberToMembersOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, pendingMemberCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } try group.movePendingMemberToOtherMembers(pendingMemberCryptoIdentity: pendingMemberCryptoIdentity, delegateManager: delegateManager) @@ -593,7 +682,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getOwnGroupInvitationNonceOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Data { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } return group.ownGroupInvitationNonce @@ -602,7 +691,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func setDownloadedPhotoOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, serverPhotoInfo: GroupV2.ServerPhotoInfo, photo: Data, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } try group.updatePhoto(withData: photo, serverPhotoInfo: serverPhotoInfo, delegateManager: delegateManager) @@ -610,16 +699,16 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func photoNeedsToBeDownloadedForGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, serverPhotoInfo: GroupV2.ServerPhotoInfo, within obvContext: ObvContext) throws -> Bool { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } return group.photoNeedsToBeDownloaded(serverPhotoInfo: serverPhotoInfo, delegateManager: delegateManager) } - + public func getAllObvGroupV2(of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } let groups = try ContactGroupV2.getAllObvGroupV2(of: ownedIdentity, delegateManager: delegateManager) return groups @@ -628,7 +717,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getTrustedPhotoURLAndUploaderOfObvGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> (url: URL, uploader: ObvCryptoIdentity)? { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } guard let photoURLAndUploader = group.trustedDetails?.getPhotoURLAndUploader(identityPhotosDirectory: delegateManager.identityPhotosDirectory) else { return nil } @@ -639,7 +728,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func replaceTrustedDetailsByPublishedDetailsOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") @@ -650,7 +739,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getAdministratorChainOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> GroupV2.AdministratorsChain { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") @@ -662,47 +751,55 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getAllOtherMembersOrPendingMembersOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } return try group.getAllOtherMembersOrPendingMembers() - + } - + public func getAllNonPendingAdministratorsIdentitiesOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard let group = try ContactGroupV2.getContactGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, delegateManager: delegateManager) else { throw Self.makeError(message: "Could not find group") } return try group.getAllNonPendingAdministratorsIdentitites() } - + public func getAllGroupsV2IdentifierVersionAndKeysForContact(_ contactIdentity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> [GroupV2.IdentifierVersionAndKeys] { guard let contact = try ContactIdentity.get(contactIdentity: contactIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { throw makeError(message: "Could not find contact") } guard let ownedIdentity_ = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } let identifierVersionAndKeysOfGroupsWhereTheContactIsNotPending = contact.groupMemberships.compactMap { $0.contactGroup?.identifierVersionAndKeys } let identifierVersionAndKeysOfGroupsWhereTheContactIsPending = (try ContactGroupV2PendingMember.getPendingMemberEntriesCorrespondingToContactIdentity(contactIdentity, of: ownedIdentity_)).compactMap({ $0.contactGroup?.identifierVersionAndKeys }) - + let allIdentifierVersionAndKeys = identifierVersionAndKeysOfGroupsWhereTheContactIsNotPending + identifierVersionAndKeysOfGroupsWhereTheContactIsPending - + return allIdentifierVersionAndKeys } + public func getAllGroupsV2IdentifierVersionAndKeys(ofOwnedIdentity ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> [GroupV2.IdentifierVersionAndKeys] { + guard let ownedIdentity = try OwnedIdentity.get(ownedCryptoId, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + return ownedIdentity.contactGroupsV2.compactMap { $0.identifierVersionAndKeys } + } + + // MARK: - Keycloak pushed groups - + public func updateKeycloakGroups(ownedIdentity: ObvCryptoIdentity, signedGroupBlobs: Set, signedGroupDeletions: Set, signedGroupKicks: Set, keycloakCurrentTimestamp: Date, within obvContext: ObvContext) throws -> [KeycloakGroupV2UpdateOutput] { guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } - + let keycloakGroupV2UpdateOutputs = try ownedIdentityObject.updateKeycloakGroups(signedGroupBlobs: signedGroupBlobs, signedGroupDeletions: signedGroupDeletions, signedGroupKicks: signedGroupKicks, @@ -725,17 +822,40 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { let groupIdentifiers = try ContactGroupV2.getIdentifiersOfAllKeycloakGroupsWhereContactIsPending(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId, within: obvContext) return groupIdentifiers } - + + + public func getAllKeycloakContactsThatArePendingInSomeKeycloakGroup(within obvContext: ObvContext) throws -> [ObvCryptoIdentity: Set] { + + var returnValues = [ObvCryptoIdentity: Set]() + + let ownedCryptoIds = Set(try OwnedIdentity.getAllKeycloakManaged(delegateManager: delegateManager, within: obvContext) + .map(\.cryptoIdentity)) + + for ownedCryptoId in ownedCryptoIds { + let pendingMembers = try ContactGroupV2PendingMember.getAllPendingMembersCorrespondingToOwnedIdentity(ownedCryptoId, groupCategory: .keycloak, within: obvContext.context) + let pendingContactMembers = try pendingMembers.filter { pendingMember in + guard try isIdentity(pendingMember, aContactIdentityOfTheOwnedIdentity: ownedCryptoId, within: obvContext) else { return false } + guard try isContactCertifiedByOwnKeycloak(contactIdentity: pendingMember, ofOwnedIdentity: ownedCryptoId, within: obvContext) else { return false } + // The pending member is a contact and is keycloak managed, we keep her in the returned list + return true + } + returnValues[ownedCryptoId] = pendingContactMembers + } + + return returnValues + + } + // MARK: - API related to keycloak management - + public func isOwnedIdentityKeycloakManaged(ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { guard let ownedIdentity_ = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } return ownedIdentity_.isKeycloakManaged } - + public func isContactCertifiedByOwnKeycloak(contactIdentity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { guard let contactObj = try ContactIdentity.get(contactIdentity: contactIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { throw makeError(message: "Could not find contact") @@ -750,8 +870,8 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } return try contactObj.getSignedUserDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory) } - - + + public func getOwnedIdentityKeycloakState(ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> (obvKeycloakState: ObvKeycloakState?, signedOwnedDetails: SignedObvKeycloakUserDetails?) { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { throw makeError(message: "Could not find Owned Identity in database") @@ -767,17 +887,17 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { assert(signedOwnedDetails != nil, "An invalid signature should not have been stored in the first place") return (obvKeycloakState, signedOwnedDetails) } - + public func saveKeycloakAuthState(ownedIdentity: ObvCryptoIdentity, rawAuthState: Data, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw makeError(message: "Could not find Owned Identity in database") + throw ObvIdentityManagerError.ownedIdentityNotFound } ownedIdentity.keycloakServer?.setAuthState(authState: rawAuthState) } - + public func saveKeycloakJwks(ownedIdentity: ObvCryptoIdentity, jwks: ObvJWKSet, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw makeError(message: "Could not find Owned Identity in database") + throw ObvIdentityManagerError.ownedIdentityNotFound } assert(ownedIdentity.keycloakServer != nil) try ownedIdentity.keycloakServer?.setJwks(jwks) @@ -785,43 +905,38 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getOwnedIdentityKeycloakUserId(ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> String? { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw makeError(message: "Could not find Owned Identity in database") + throw ObvIdentityManagerError.ownedIdentityNotFound } return ownedIdentity.keycloakServer?.keycloakUserId } - + public func setOwnedIdentityKeycloakUserId(ownedIdentity: ObvCryptoIdentity, keycloakUserId userId: String?, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw makeError(message: "Could not find Owned Identity in database") + throw ObvIdentityManagerError.ownedIdentityNotFound } ownedIdentity.keycloakServer?.setKeycloakUserId(keycloakUserId: userId) } - - public func bindOwnedIdentityToKeycloak(ownedCryptoIdentity: ObvCryptoIdentity, keycloakUserId userId: String, keycloakState: ObvKeycloakState, within obvContext: ObvContext) throws -> Set { - + + + public func bindOwnedIdentityToKeycloak(ownedCryptoIdentity: ObvCryptoIdentity, keycloakUserId userId: String, keycloakState: ObvKeycloakState, within obvContext: ObvContext) throws { + guard let ownedIdentity = try OwnedIdentity.get(ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) else { - throw makeError(message: "Could not find Owned Identity in database") + throw ObvIdentityManagerError.ownedIdentityNotFound } - + try ownedIdentity.bindToKeycloak(keycloakState: keycloakState, delegateManager: delegateManager) try setOwnedIdentityKeycloakUserId(ownedIdentity: ownedCryptoIdentity, keycloakUserId: userId, within: obvContext) assert(ownedIdentity.isKeycloakManaged) - - // Once our owned identity is bind, we create the updated list of the contact that are managed by the same keycloak than ours. - // This will be cached by the app. - let contactsCertifiedByOwnKeycloak = Set(ownedIdentity.contactIdentities.filter({ $0.isCertifiedByOwnKeycloak }).map({ $0.cryptoIdentity })) - - return contactsCertifiedByOwnKeycloak } public func getContactsCertifiedByOwnKeycloak(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { guard let ownedIdentity = try OwnedIdentity.get(ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) else { - throw makeError(message: "Could not find Owned Identity in database") + throw ObvIdentityManagerError.ownedIdentityNotFound } guard ownedIdentity.isKeycloakManaged else { return Set() } - let contactsCertifiedByOwnKeycloak = Set(ownedIdentity.contactIdentities.filter({ $0.isCertifiedByOwnKeycloak }).map({ $0.cryptoIdentity })) + let contactsCertifiedByOwnKeycloak = Set(ownedIdentity.contactIdentities.filter({ $0.isCertifiedByOwnKeycloak }).compactMap({ $0.cryptoIdentity })) return contactsCertifiedByOwnKeycloak } @@ -832,10 +947,10 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } try ownedIdentity.unbindFromKeycloak(delegateManager: delegateManager) assert(!ownedIdentity.isKeycloakManaged) - + let publishedDetails = ownedIdentity.publishedIdentityDetails.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory) let publishedDetailsWithoutSignedDetails = try publishedDetails.removingSignedUserDetails() - + try updatePublishedIdentityDetailsOfOwnedIdentity(ownedCryptoIdentity, with: publishedDetailsWithoutSignedDetails, within: obvContext) } @@ -898,7 +1013,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } return try ownedIdentity.getPushTopicsForKeycloakServerAndForKeycloakManagedGroups() } - + public func getCryptoIdentitiesOfManagedOwnedIdentitiesAssociatedWithThePushTopic(_ pushTopic: String, within obvContext: ObvContext) throws -> Set { let ownedIdentities = try OwnedIdentity.getAll(delegateManager: delegateManager, within: obvContext) @@ -909,63 +1024,72 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } // MARK: - API related to owned devices - + public func getDeviceUidsOfOwnedIdentity(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } let devices = ownedIdentity.otherDevices.union([ownedIdentity.currentDevice]) return Set(devices.map { return $0.uid }) } - + public func getOwnedIdentityOfCurrentDeviceUid(_ currentDeviceUid: UID, within obvContext: ObvContext) throws -> ObvCryptoIdentity { guard let currentDevice = try OwnedDevice.get(currentDeviceUid: currentDeviceUid, delegateManager: delegateManager, within: obvContext) else { - assertionFailure() throw Self.makeError(message: "Could not find OwnedDevice") } - return currentDevice.identity.ownedCryptoIdentity.getObvCryptoIdentity() + guard let identity = currentDevice.identity else { + assertionFailure() + throw Self.makeError(message: "Could not find Owned identity") + } + return identity.ownedCryptoIdentity.getObvCryptoIdentity() } - + public func getOwnedIdentityOfRemoteDeviceUid(_ remoteDeviceUid: UID, within obvContext: ObvContext) throws -> ObvCryptoIdentity? { let remoteDevice = try OwnedDevice.get(remoteDeviceUid: remoteDeviceUid, delegateManager: delegateManager, within: obvContext) - return remoteDevice?.identity.ownedCryptoIdentity.getObvCryptoIdentity() + return remoteDevice?.identity?.ownedCryptoIdentity.getObvCryptoIdentity() } - + public func getCurrentDeviceUidOfOwnedIdentity(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UID { guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } return ownedIdentity.currentDevice.uid } - + public func getOtherDeviceUidsOfOwnedIdentity(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } return Set(ownedIdentity.otherDevices.map { return $0.uid }) } - - public func addDeviceForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, withUid uid: UID, within obvContext: ObvContext) throws { + + public func addOtherDeviceForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, withUid uid: UID, createdDuringChannelCreation: Bool, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } - try ownedIdentity.addRemoteDeviceWith(uid: uid) + try ownedIdentity.addIfNotExistRemoteDeviceWith(uid: uid, createdDuringChannelCreation: createdDuringChannelCreation) + } + + public func removeOtherDeviceForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, otherDeviceUid: UID, within obvContext: ObvContext) throws { + guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + try ownedIdentity.removeIfExistsOtherDeviceWith(uid: otherDeviceUid, delegateManager: delegateManager, flowId: obvContext.flowId) } - public func isDevice(withUid deviceUid: UID, aRemoteDeviceOfOwnedIdentity identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { guard let ownedIdentityObj = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } let ownedRemoteDeviceUids = ownedIdentityObj.otherDevices.map { return $0.uid } return ownedRemoteDeviceUids.contains(deviceUid) } - + public func getAllRemoteOwnedDevicesUidsAndContactDeviceUids(within obvContext: ObvContext) throws -> Set { let ownedRemoteDevices = try OwnedDevice.getAllOwnedRemoteDeviceUids(within: obvContext) @@ -974,24 +1098,96 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } - // MARK: - API related to contact identities + /// Returns a Boolean indicating whether the current device is part of the owned device discovery results. + public func processEncryptedOwnedDeviceDiscoveryResult(_ encryptedOwnedDeviceDiscoveryResult: EncryptedData, forOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { + guard let ownedIdentityObj = try OwnedIdentity.get(ownedCryptoId, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + let currentDeviceIsPartOfOwnedDeviceDiscoveryResult = try ownedIdentityObj.processEncryptedOwnedDeviceDiscoveryResult(encryptedOwnedDeviceDiscoveryResult, delegateManager: delegateManager) + return currentDeviceIsPartOfOwnedDeviceDiscoveryResult + } + + + public func decryptEncryptedOwnedDeviceDiscoveryResult(_ encryptedOwnedDeviceDiscoveryResult: EncryptedData, forOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> OwnedDeviceDiscoveryResult { + + guard let ownedIdentityObj = try OwnedIdentity.get(ownedCryptoId, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + + let ownedDeviceDiscoveryResult = try ownedIdentityObj.decryptEncryptedOwnedDeviceDiscoveryResult(encryptedOwnedDeviceDiscoveryResult) + + return ownedDeviceDiscoveryResult + + } + + + public func decryptProtocolCiphertext(_ ciphertext: EncryptedData, forOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Data { + guard let ownedIdentityObj = try OwnedIdentity.get(ownedCryptoId, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + + let cleartext = try ownedIdentityObj.decryptProtocolCiphertext(ciphertext) + + return cleartext + + } + + + public func getInfosAboutOwnedDevice(withUid uid: UID, ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> (name: String?, expirationDate: Date?, latestRegistrationDate: Date?) { + + guard let ownedIdentityObj = try OwnedIdentity.get(ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + + let infos = try ownedIdentityObj.getInfosAboutOwnedDevice(withUid: uid) + + return infos + + } + + + public func setCurrentDeviceNameOfOwnedIdentityAfterBackupRestore(ownedCryptoIdentity: ObvCryptoIdentity, nameForCurrentDevice: String, within obvContext: ObvContext) throws { + guard let ownedIdentity = try OwnedIdentity.get(ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + ownedIdentity.setCurrentDeviceNameAfterBackupRestore(newName: nameForCurrentDevice) + } + + + // MARK: - API related to contact identities + + + public func getDateOfLastBootstrappedContactDeviceDiscovery(forContactCryptoId contactCryptoId: ObvCryptoIdentity, ofOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Date { + return try ContactIdentity.getDateOfLastBootstrappedContactDeviceDiscovery(contactIdentity: contactCryptoId, ownedIdentity: ownedCryptoId, within: obvContext.context) + } + + + public func setDateOfLastBootstrappedContactDeviceDiscovery(forContactCryptoId contactCryptoId: ObvCryptoIdentity, ofOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, to newDate: Date, within obvContext: ObvContext) throws { + guard let contact = try ContactIdentity.get(contactIdentity: contactCryptoId, ownedIdentity: ownedCryptoId, delegateManager: delegateManager, within: obvContext) else { + throw Self.makeError(message: "Could not find contact") + } + contact.setDateOfLastBootstrappedContactDeviceDiscovery(to: newDate) + } + + public func addContactIdentity(_ contactIdentity: ObvCryptoIdentity, with identityCoreDetails: ObvIdentityCoreDetails, andTrustOrigin trustOrigin: TrustOrigin, forOwnedIdentity ownedIdentity: ObvCryptoIdentity, setIsOneToOneTo newOneToOneValue: Bool, within obvContext: ObvContext) throws { guard let ownedIdentity = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } guard ContactIdentity(cryptoIdentity: contactIdentity, identityCoreDetails: identityCoreDetails, trustOrigin: trustOrigin, ownedIdentity: ownedIdentity, isOneToOne: newOneToOneValue, delegateManager: delegateManager) != nil else { throw makeError(message: "Could not create ContactIdentity instance") } } + - public func addTrustOriginIfTrustWouldBeIncreased(_ trustOrigin: TrustOrigin, toContactIdentity contactIdentity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, setIsOneToOneTo newOneToOneValue: Bool, within obvContext: ObvContext) throws { + public func addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(_ trustOrigin: TrustOrigin, toContactIdentity contactIdentity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { guard let contactObj = try ContactIdentity.get(contactIdentity: contactIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { assertionFailure() throw Self.makeError(message: "Could not find ContactIdentity") } try contactObj.addTrustOriginIfTrustWouldBeIncreased(trustOrigin, delegateManager: delegateManager) - contactObj.setIsOneToOne(to: newOneToOneValue) + contactObj.setIsOneToOne(to: true) } public func getTrustOrigins(forContactIdentity contactIdentity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> [TrustOrigin] { @@ -1012,12 +1208,16 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getContactsOfOwnedIdentity(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { guard let ownedIdentity = try OwnedIdentity.get(identity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.ownedIdentityNotFound.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.ownedIdentityNotFound } - return Set(ownedIdentity.contactIdentities.map { return $0.cryptoIdentity }) + return Set(ownedIdentity.contactIdentities.compactMap { return $0.cryptoIdentity }) } - - + + + public func getContactsWithNoDeviceOfOwnedIdentity(_ ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { + return try ContactIdentity.getCryptoIdentitiesOfContactsWithoutDevice(ownedCryptoId: ownedCryptoId, within: obvContext.context) + } + public func getIdentityDetailsOfContactIdentity(_ contactIdentity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> (publishedIdentityDetails: ObvIdentityDetails?, trustedIdentityDetails: ObvIdentityDetails) { guard let contactObj = try ContactIdentity.get(contactIdentity: contactIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { throw makeError(message: "Could not find contact") } let publishedIdentityDetails = contactObj.publishedIdentityDetails?.getIdentityDetails(identityPhotosDirectory: delegateManager.identityPhotosDirectory) @@ -1026,7 +1226,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } return (publishedIdentityDetails, trustedIdentityDetails) } - + public func getPublishedIdentityDetailsOfContactIdentity(_ identity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> (contactIdentityDetailsElements: IdentityDetailsElements, photoURL: URL?)? { @@ -1042,7 +1242,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { photoServerKeyAndLabel: publishedIdentityDetails.photoServerKeyAndLabel) return (contactIdentityDetailsElements, publishedDetails.photoURL) } - + public func getTrustedIdentityDetailsOfContactIdentity(_ identity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> (contactIdentityDetailsElements: IdentityDetailsElements, photoURL: URL?) { @@ -1058,29 +1258,29 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { photoServerKeyAndLabel: trustedIdentityDetails.photoServerKeyAndLabel) return (contactIdentityDetailsElements, trustedDetails.photoURL) } - + public func updateTrustedIdentityDetailsOfContactIdentity(_ identity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, with newContactIdentityDetails: ObvIdentityDetails, within obvContext: ObvContext) throws { guard let contactIdentity = try ContactIdentity.get(contactIdentity: identity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { throw makeError(message: "Could not find contact") } try contactIdentity.updateTrustedDetailsWithPublishedDetails(newContactIdentityDetails, delegateManager: delegateManager) } - - + + public func updateDownloadedPhotoOfContactIdentity(_ identity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, version: Int, photo: Data, within obvContext: ObvContext) throws { guard let contactIdentity = try ContactIdentity.get(contactIdentity: identity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { throw makeError(message: "Could not find contact") } try contactIdentity.updateContactPhoto(withData: photo, version: version, delegateManager: delegateManager, within: obvContext) } - - + + public func updatePublishedIdentityDetailsOfContactIdentity(_ identity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, with newContactIdentityDetailsElements: IdentityDetailsElements, allowVersionDowngrade: Bool, within obvContext: ObvContext) throws { guard let contactIdentity = try ContactIdentity.get(contactIdentity: identity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { throw makeError(message: "Could not find contact") } try contactIdentity.updatePublishedDetailsAndTryToAutoTrustThem(with: newContactIdentityDetailsElements, allowVersionDowngrade: allowVersionDowngrade, delegateManager: delegateManager) } - + public func isIdentity(_ contactIdentity: ObvCryptoIdentity, aContactIdentityOfTheOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { return try ContactIdentity.get(contactIdentity: contactIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) != nil } - + public func deleteContactIdentity(_ contactIdentity: ObvCryptoIdentity, forOwnedIdentity ownedIdentity: ObvCryptoIdentity, failIfContactIsPartOfACommonGroup: Bool, within obvContext: ObvContext) throws { if let contactIdentityObject = try ContactIdentity.get(contactIdentity: contactIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) { @@ -1108,7 +1308,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { guard let contactIdentityObject = try ContactIdentity.get(contactIdentity: contactIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { throw makeError(message: "Could not find contact identity") } return contactIdentityObject.isRevokedAsCompromised } - + public func isContactIdentityActive(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool { guard let contactIdentityObject = try ContactIdentity.get(contactIdentity: contactIdentity, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { throw makeError(message: "Could not find contact identity") } @@ -1134,24 +1334,24 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { // MARK: - API related to contact devices - public func addDeviceForContactIdentity(_ contactIdentity: ObvCryptoIdentity, withUid uid: UID, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + public func addDeviceForContactIdentity(_ contactIdentity: ObvCryptoIdentity, withUid uid: UID, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, createdDuringChannelCreation: Bool, within obvContext: ObvContext) throws { guard let contactIdentity = try ContactIdentity.get(contactIdentity: contactIdentity, - ownedIdentity: ownedIdentity, - delegateManager: delegateManager, - within: obvContext) else { + ownedIdentity: ownedIdentity, + delegateManager: delegateManager, + within: obvContext) else { throw ObvIdentityManagerImplementation.makeError(message: "Could not find contact identity") } - try contactIdentity.addIfNotExistDeviceWith(uid: uid, flowId: obvContext.flowId) + try contactIdentity.addIfNotExistDeviceWith(uid: uid, createdDuringChannelCreation: createdDuringChannelCreation, flowId: obvContext.flowId) } public func removeDeviceForContactIdentity(_ contactIdentity: ObvCryptoIdentity, withUid uid: UID, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { guard let contactIdentity = try ContactIdentity.get(contactIdentity: contactIdentity, - ownedIdentity: ownedIdentity, - delegateManager: delegateManager, - within: obvContext) - else { - throw ObvIdentityManagerImplementation.makeError(message: "Could not get contact identity") + ownedIdentity: ownedIdentity, + delegateManager: delegateManager, + within: obvContext) + else { + throw ObvIdentityManagerImplementation.makeError(message: "Could not get contact identity") } try contactIdentity.removeIfExistsDeviceWith(uid: uid, flowId: obvContext.flowId) } @@ -1192,12 +1392,12 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { throw ObvIdentityManagerImplementation.makeError(message: "Could not get contact identity of owned identity") } for device in contactIdentityObj.devices { - obvContext.delete(device) + try device.deleteContactDevice() } } // MARK: - API related to contact groups - + /// This method returns the group information (and photo) corresponding to the published details of the joined group. /// If a photoURL is present in the `GroupInformationWithPhoto`, this method will copy this photo and create server label/key for it. public func createContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupInformationWithPhoto: GroupInformationWithPhoto, pendingGroupMembers: Set, within obvContext: ObvContext) throws -> GroupInformationWithPhoto { @@ -1206,13 +1406,17 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { let groupUid = groupInformationWithPhoto.groupUid - // Since we are creating a group, we expect that the GroupInformationWithPhoto does not contain a server key/label - assert(groupInformationWithPhoto.groupDetailsElementsWithPhoto.photoServerKeyAndLabel == nil) - // If the GroupInformationWithPhoto contains a photo, we need to generate a server key/label for it. // We then update the GroupInformationWithPhoto in order for this server key/label to be stored in the created owned group let updatedGroupInformationWithPhoto: GroupInformationWithPhoto - if groupInformationWithPhoto.photoURL == nil { + if let photoServerKeyAndLabel = groupInformationWithPhoto.groupDetailsElementsWithPhoto.photoServerKeyAndLabel { + // This group was clearely created on another owned device + _ = GroupServerUserData.createForOwnedGroupDetails(ownedIdentity: ownedIdentity, + label: photoServerKeyAndLabel.label, + groupUid: groupUid, + within: obvContext) + updatedGroupInformationWithPhoto = groupInformationWithPhoto + } else if groupInformationWithPhoto.photoURL == nil { updatedGroupInformationWithPhoto = groupInformationWithPhoto } else { let photoServerKeyAndLabel = PhotoServerKeyAndLabel.generate(with: prng) @@ -1229,12 +1433,12 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { delegateManager: delegateManager, within: obvContext) - + return try groupOwned.getPublishedOwnedGroupInformationWithPhoto(identityPhotosDirectory: delegateManager.identityPhotosDirectory) } - - + + public func createContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupInformation: GroupInformation, groupOwner: ObvCryptoIdentity, pendingGroupMembers: Set, within obvContext: ObvContext) throws { guard groupInformation.groupOwnerIdentity != ownedIdentity else { throw makeError(message: "The group owner is the owned identity") } _ = try ContactGroupJoined(groupInformation: groupInformation, @@ -1249,15 +1453,15 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func transferPendingMemberToGroupMembersOfContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, pendingMember: ObvCryptoIdentity, within obvContext: ObvContext, groupMembersChangedCallback: () throws -> Void) throws { guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let group = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } guard try isIdentity(pendingMember, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotContact.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotContact } guard try isContactIdentityActive(ownedIdentity: ownedIdentity, contactIdentity: pendingMember, within: obvContext) else { @@ -1265,7 +1469,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { } guard let contactIdentity = try ContactIdentity.get(contactIdentity: pendingMember, ownedIdentity: ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotContact.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotContact } try group.transferPendingMemberToGroupMembersForGroupOwned(contactIdentity: contactIdentity) @@ -1277,17 +1481,17 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func transferGroupMemberToPendingMembersOfContactGroupOwnedAndMarkPendingMemberAsDeclined(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupMember: ObvCryptoIdentity, within obvContext: ObvContext, groupMembersChangedCallback: () throws -> Void) throws { guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let group = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } guard try isIdentity(groupMember, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotContact.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotContact } - + try group.transferGroupMemberToPendingMembersForGroupOwned(contactCryptoIdentity: groupMember) try markPendingMemberAsDeclined(ownedIdentity: ownedIdentity, groupUid: groupUid, pendingMember: groupMember, within: obvContext) @@ -1300,47 +1504,47 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func addPendingMembersToContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, newPendingMembers: Set, within obvContext: ObvContext, groupMembersChangedCallback: () throws -> Void) throws { guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let group = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } - + try group.add(newPendingMembers: newPendingMembers, delegateManager: delegateManager) try groupMembersChangedCallback() - + } public func removePendingAndMembersToContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, pendingOrMembersToRemove: Set, within obvContext: ObvContext, groupMembersChangedCallback: () throws -> Void) throws { guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let group = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } - + try group.remove(pendingOrGroupMembers: pendingOrMembersToRemove) try groupMembersChangedCallback() - + } public func markPendingMemberAsDeclined(ownedIdentity: ObvCryptoIdentity, groupUid: UID, pendingMember: ObvCryptoIdentity, within obvContext: ObvContext) throws { guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } - + guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } - + try groupOwned.markPendingMemberAsDeclined(pendingGroupMember: pendingMember) } @@ -1349,56 +1553,52 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func unmarkDeclinedPendingMemberAsDeclined(ownedIdentity: ObvCryptoIdentity, groupUid: UID, pendingMember: ObvCryptoIdentity, within obvContext: ObvContext) throws { guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: ObvIdentityManagerImplementation.errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupOwned.unmarkDeclinedPendingMemberAsDeclined(pendingGroupMember: pendingMember) } - - + + public func updatePublishedDetailsOfContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupInformation: GroupInformation, within obvContext: ObvContext) throws { - - let errorDomain = ObvIdentityManagerImplementation.errorDomain guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupJoined = try ContactGroupJoined.get(groupUid: groupInformation.groupUid, groupOwnerCryptoIdentity: groupInformation.groupOwnerIdentity, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } - + try groupJoined.updateDetailsPublished(with: groupInformation.groupDetailsElements, delegateManager: delegateManager) } - + public func updateDownloadedPhotoOfContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupOwner: ObvCryptoIdentity, groupUid: UID, version: Int, photo: Data, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupJoined = try ContactGroupJoined.get(groupUid: groupUid, groupOwnerCryptoIdentity: groupOwner, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupJoined.updatePhoto(withData: photo, ofDetailsWithVersion: version, delegateManager: delegateManager, within: obvContext) } - + public func updateDownloadedPhotoOfContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, version: Int, photo: Data, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupOwned.updatePhoto(withData: photo, ofDetailsWithVersion: version, delegateManager: delegateManager, within: obvContext) } @@ -1406,47 +1606,41 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func trustPublishedDetailsOfContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupOwner: ObvCryptoIdentity, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupJoined = try ContactGroupJoined.get(groupUid: groupUid, groupOwnerCryptoIdentity: groupOwner, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupJoined.trustDetailsPublished(within: obvContext, delegateManager: delegateManager) } - + public func updateLatestDetailsOfContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, with newGroupDetails: GroupDetailsElementsWithPhoto, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } - + guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } - + try groupOwned.updateDetailsLatest(with: newGroupDetails, delegateManager: delegateManager) } - + public func setPhotoServerKeyAndLabelForContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, within obvContext: ObvContext) throws -> PhotoServerKeyAndLabel { - - let errorDomain = ObvIdentityManagerImplementation.errorDomain - + guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } - + guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } guard let publishedPhotoURL = groupOwned.publishedDetails.getPhotoURL(identityPhotosDirectory: delegateManager.identityPhotosDirectory) else { @@ -1469,42 +1663,38 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { return photoServerKeyAndLabel } - + public func discardLatestDetailsOfContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupOwned.discardDetailsLatest(delegateManager: delegateManager) } public func publishLatestDetailsOfContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupOwned.publishDetailsLatest(delegateManager: delegateManager) } - + public func updatePendingMembersAndGroupMembersOfContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupOwner: ObvCryptoIdentity, groupMembers: Set, pendingGroupMembers: Set, groupMembersVersion: Int, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } - + guard let groupJoined = try ContactGroupJoined.get(groupUid: groupUid, groupOwnerCryptoIdentity: groupOwner, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupJoined.updatePendingMembersAndGroupMembers(groupMembersWithCoreDetails: groupMembers, @@ -1512,21 +1702,38 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { groupMembersVersion: groupMembersVersion, delegateManager: delegateManager, flowId: obvContext.flowId) + + } + + + public func updatePendingMembersAndGroupMembersOfContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupMembers: Set, pendingGroupMembers: Set, groupMembersVersion: Int, within obvContext: ObvContext) throws { + guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned + } + + guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { + throw ObvIdentityManagerError.groupDoesNotExist + } + + try groupOwned.updatePendingMembersAndGroupMembers(groupMembersWithCoreDetails: groupMembers, + pendingMembersWithCoreDetails: pendingGroupMembers, + groupMembersVersion: groupMembersVersion, + delegateManager: delegateManager, + flowId: obvContext.flowId) + } /// When a contact deletes her owned identity, this method gets called to delete this identity from groups v1 that we joined, without waiting for a group update from the group owner. public func removeContactFromPendingAndGroupMembersOfContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupOwner: ObvCryptoIdentity, groupUid: UID, contactIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupJoined = try ContactGroupJoined.get(groupUid: groupUid, groupOwnerCryptoIdentity: groupOwner, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupJoined.removeContactFromPendingAndGroupMembers(contactCryptoIdentity: contactIdentity) @@ -1535,9 +1742,8 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getGroupOwnedStructure(ownedIdentity: ObvCryptoIdentity, groupUid: UID, within obvContext: ObvContext) throws -> GroupStructure? { - let errorDomain = ObvIdentityManagerImplementation.errorDomain guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { return nil @@ -1547,9 +1753,8 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getGroupJoinedStructure(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupOwner: ObvCryptoIdentity, within obvContext: ObvContext) throws -> GroupStructure? { - let errorDomain = ObvIdentityManagerImplementation.errorDomain guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupJoined = try ContactGroupJoined.get(groupUid: groupUid, groupOwnerCryptoIdentity: groupOwner, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { // When the group cannot be found, we return nil to indicate that this is the case. @@ -1560,9 +1765,8 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getAllGroupStructures(ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set { - let errorDomain = ObvIdentityManagerImplementation.errorDomain guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } let groups = try ContactGroup.getAll(ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) let groupStructures = Set(try groups.map({ try $0.getGroupStructure(identityPhotosDirectory: delegateManager.identityPhotosDirectory) })) @@ -1572,14 +1776,12 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getGroupOwnedInformationAndPublishedPhoto(ownedIdentity: ObvCryptoIdentity, groupUid: UID, within obvContext: ObvContext) throws -> GroupInformationWithPhoto { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } let groupInformationWithPhoto = try groupOwned.getPublishedOwnedGroupInformationWithPhoto(identityPhotosDirectory: delegateManager.identityPhotosDirectory) @@ -1589,14 +1791,12 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func getGroupJoinedInformationAndPublishedPhoto(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupOwner: ObvCryptoIdentity, within obvContext: ObvContext) throws -> GroupInformationWithPhoto { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupJoined = try ContactGroupJoined.get(groupUid: groupUid, groupOwnerCryptoIdentity: groupOwner, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } let groupInformationWithPhoto = try groupJoined.getPublishedJoinedGroupInformationWithPhoto(identityPhotosDirectory: delegateManager.identityPhotosDirectory) @@ -1607,10 +1807,8 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func deleteContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupOwner: ObvCryptoIdentity, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupJoined = try ContactGroupJoined.get(groupUid: groupUid, groupOwnerCryptoIdentity: groupOwner, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { @@ -1624,10 +1822,8 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func deleteContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, deleteEvenIfGroupMembersStillExist: Bool, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupOwned = try ContactGroupOwned.get(groupUid: groupUid, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { @@ -1636,7 +1832,7 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { if !deleteEvenIfGroupMembersStillExist { guard groupOwned.groupMembers.isEmpty && groupOwned.pendingGroupMembers.isEmpty else { - throw ObvIdentityManagerError.ownedContactGroupStillHasMembersOrPendingMembers.error(withDomain: errorDomain) + throw ObvIdentityManagerError.ownedContactGroupStillHasMembersOrPendingMembers } } @@ -1648,17 +1844,15 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { /// This method is exclusively called from the ProcessInvitationStep of the GroupInvitationProtocol. public func forceUpdateOfContactGroupJoined(ownedIdentity: ObvCryptoIdentity, authoritativeGroupInformation: GroupInformation, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupJoined = try ContactGroupJoined.get(groupUid: authoritativeGroupInformation.groupUid, groupOwnerCryptoIdentity: authoritativeGroupInformation.groupOwnerIdentity, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupJoined.resetGroupDetailsWithAuthoritativeDetailsIfRequired( @@ -1671,14 +1865,12 @@ extension ObvIdentityManagerImplementation: ObvIdentityDelegate { public func resetGroupMembersVersionOfContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupOwner: ObvCryptoIdentity, within obvContext: ObvContext) throws { - let errorDomain = ObvIdentityManagerImplementation.errorDomain - guard let ownedIdentityObject = try OwnedIdentity.get(ownedIdentity, delegateManager: delegateManager, within: obvContext) else { - throw ObvIdentityManagerError.cryptoIdentityIsNotOwned.error(withDomain: errorDomain) + throw ObvIdentityManagerError.cryptoIdentityIsNotOwned } guard let groupJoined = try ContactGroupJoined.get(groupUid: groupUid, groupOwnerCryptoIdentity: groupOwner, ownedIdentity: ownedIdentityObject, delegateManager: delegateManager) else { - throw ObvIdentityManagerError.groupDoesNotExist.error(withDomain: errorDomain) + throw ObvIdentityManagerError.groupDoesNotExist } try groupJoined.resetGroupMembersVersionOfContactGroupJoined() @@ -1811,12 +2003,7 @@ extension ObvIdentityManagerImplementation: ObvSolveChallengeDelegate { return response } - - public func getApiKeyForOwnedIdentity(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UUID? { - return try OwnedIdentity.getApiKey(identity, within: obvContext) - } - } @@ -1855,7 +2042,8 @@ extension ObvIdentityManagerImplementation { } var result = [ObvCryptoIdentity: Set]() ownedIdentity.contactIdentities.forEach { contact in - result[contact.cryptoIdentity] = contact.allCapabilities + guard let contactCryptoIdentity = contact.cryptoIdentity else { assertionFailure(); return } + result[contactCryptoIdentity] = contact.allCapabilities } return result } @@ -1944,6 +2132,100 @@ extension ObvIdentityManagerImplementation { } +// MARK: - API related to sync between owned devices + +extension ObvIdentityManagerImplementation { + + public func processSyncAtom(_ syncAtom: ObvSyncAtom, ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + guard let ownedIdentity = try OwnedIdentity.get(ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) else { + throw ObvIdentityManagerError.ownedIdentityNotFound + } + try ownedIdentity.processSyncAtom(syncAtom, delegateManager: delegateManager) + } + +} + + +// MARK: - Getting informations about missing photos + +extension ObvIdentityManagerImplementation { + + /// The user can request the (re)download of missing photos for her contacts. This is a helper method returnings the required informations about all the contacts that have a photoFilename that points to an URL on disk where no photo can be found. The engine uses this method to request the (re)download of all photos corresponding to the returned informations. + public func getInformationsAboutContactsWithMissingContactPictureOnDisk(within obvContext: ObvContext) throws -> [(ownedCryptoId: ObvCryptoIdentity, contactCryptoId: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements)] { + + let identityPhotosDirectory = delegateManager.identityPhotosDirectory + let contatInfos = try ContactIdentityDetails.getInfosAboutContactsHavingPhotoFilename(identityPhotosDirectory: identityPhotosDirectory, within: obvContext) + + let allPhotoURLOnDisk = try getAllPhotoURLOnDisk() + + let contatInfosWithMissingPhotoOnDisk = contatInfos.filter { info in + return !allPhotoURLOnDisk.contains(info.photoURL) + } + + return contatInfosWithMissingPhotoOnDisk.map { infos in + (infos.ownedCryptoId, infos.contactCryptoId, infos.contactIdentityDetailsElements) + } + + } + + + public func getInformationsAboutOwnedIdentitiesWithMissingPictureOnDisk(within obvContext: ObvContext) throws -> [(ownedCryptoId: ObvCryptoIdentity, ownedIdentityDetailsElements: IdentityDetailsElements)] { + + let identityPhotosDirectory = delegateManager.identityPhotosDirectory + let ownedInfos = try OwnedIdentityDetailsPublished.getInfosAboutOwnedIdentitiesHavingPhotoFilename(identityPhotosDirectory: identityPhotosDirectory, within: obvContext) + + let allPhotoURLOnDisk = try getAllPhotoURLOnDisk() + + let ownedInfosWithMissingPhotoOnDisk = ownedInfos.filter { info in + return !allPhotoURLOnDisk.contains(info.photoURL) + } + + return ownedInfosWithMissingPhotoOnDisk.map { infos in + (infos.ownedCryptoId, infos.ownedIdentityDetailsElements) + } + + } + + + /// The user can request the (re)download of missing photos for her groups v1. This is a helper method returnings the required informations about all the groups that have a photoFilename that points to an URL on disk where no photo can be found. The engine uses this method to request the (re)download of all photos corresponding to the returned informations. + public func getInformationsAboutGroupsV1WithMissingContactPictureOnDisk(within obvContext: ObvContext) throws -> [(ownedIdentity: ObvCryptoIdentity, groupInfo: GroupInformation)] { + + let identityPhotosDirectory = delegateManager.identityPhotosDirectory + let groupInfos = try ContactGroupDetails.getInfosAboutGroupsHavingPhotoFilename(identityPhotosDirectory: identityPhotosDirectory, within: obvContext) + + let allPhotoURLOnDisk = try getAllPhotoURLOnDisk() + + let groupInfosWithMissingPhotoOnDisk = groupInfos.filter { info in + return !allPhotoURLOnDisk.contains(info.photoURL) + } + + return groupInfosWithMissingPhotoOnDisk.map { infos in + (infos.ownedIdentity, infos.groupInformation) + } + + } + + + /// The user can request the (re)download of missing photos for her groups v2. This is a helper method returnings the required informations about all the groups that have a photoFilename that points to an URL on disk where no photo can be found. The engine uses this method to request the (re)download of all photos corresponding to the returned informations. + public func getInformationsAboutGroupsV2WithMissingContactPictureOnDisk(within obvContext: ObvContext) throws -> [(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverPhotoInfo: GroupV2.ServerPhotoInfo)] { + + let identityPhotosDirectory = delegateManager.identityPhotosDirectory + let groupInfos = try ContactGroupV2Details.getInfosAboutGroupsHavingPhotoFilename(identityPhotosDirectory: identityPhotosDirectory, within: obvContext) + + let allPhotoURLOnDisk = try getAllPhotoURLOnDisk() + + let groupInfosWithMissingPhotoOnDisk = groupInfos.filter { info in + return !allPhotoURLOnDisk.contains(info.photoURL) + } + + return groupInfosWithMissingPhotoOnDisk.map { infos in + (infos.ownedIdentity, infos.groupIdentifier, infos.serverPhotoInfo) + } + + } + +} + // MARK: - Implementing ObvManager @@ -2051,7 +2333,10 @@ extension ObvIdentityManagerImplementation { private func getAllPhotoURLOnDisk() throws -> Set { - Set(try FileManager.default.contentsOfDirectory(at: self.identityPhotosDirectory, includingPropertiesForKeys: nil)) + Set( + try FileManager.default.contentsOfDirectory(at: self.identityPhotosDirectory, includingPropertiesForKeys: nil) + .map({ $0.resolvingSymlinksInPath() }) + ) } diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/OtherTypes/ObvIdentityManagerSyncSnapshotNode.swift b/Engine/ObvIdentityManager/ObvIdentityManager/OtherTypes/ObvIdentityManagerSyncSnapshotNode.swift new file mode 100644 index 00000000..35845c93 --- /dev/null +++ b/Engine/ObvIdentityManager/ObvIdentityManager/OtherTypes/ObvIdentityManagerSyncSnapshotNode.swift @@ -0,0 +1,89 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import ObvCrypto +import OlvidUtils +import ObvMetaManager + + +/// This is the top level `ObvSyncSnapshotNode` at the identity manager level. Its App counterpart is called `AppSyncSnapshotNode`. +struct ObvIdentityManagerSyncSnapshotNode: ObvSyncSnapshotNode, Codable { + + private let domain: Set + private let ownedCryptoIdentity: ObvCryptoIdentity + private let ownedIdentityNode: OwnedIdentitySyncSnapshotNode + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case ownedCryptoIdentity = "owned_identity" + case ownedIdentityNode = "owned_identity_node" + case domain = "domain" + } + + private static let defaultDomain: Set = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + init(ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { + self.ownedCryptoIdentity = ownedCryptoIdentity + guard let ownedIdentity = try OwnedIdentity.get(ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) else { + throw ObvError.couldNotFindOwnedIdentity + } + self.ownedIdentityNode = ownedIdentity.syncSnapshotNode + self.domain = Self.defaultDomain + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(domain, forKey: .domain) + try container.encode(ownedCryptoIdentity.getIdentity(), forKey: .ownedCryptoIdentity) + try container.encode(ownedIdentityNode, forKey: .ownedIdentityNode) + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + let ownedIdentityIdentity = try values.decode(Data.self, forKey: .ownedCryptoIdentity) + guard let ownedCryptoIdentity = ObvCryptoIdentity(from: ownedIdentityIdentity) else { + throw ObvError.couldNotParseOwnedIdentityIdentity + } + self.ownedCryptoIdentity = ownedCryptoIdentity + self.ownedIdentityNode = try values.decode(OwnedIdentitySyncSnapshotNode.self, forKey: .ownedIdentityNode) + } + + + func restore(prng: PRNGService, customDeviceName: String, delegateManager: ObvIdentityDelegateManager, within obvContext: ObvContext) throws { + var associations = SnapshotNodeManagedObjectAssociations() + try ownedIdentityNode.restoreInstance(cryptoIdentity: ownedCryptoIdentity, within: obvContext, associations: &associations) + try ownedIdentityNode.restoreRelationships(associations: associations, prng: prng, customDeviceName: customDeviceName, delegateManager: delegateManager, within: obvContext) + } + + + enum ObvError: Error { + case couldNotFindOwnedIdentity + case couldNotParseOwnedIdentityIdentity + case mismatchBetweenDomainAndValues + } + +} diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/OtherTypes/SnapshotNodeManagedObjectAssociations.swift b/Engine/ObvIdentityManager/ObvIdentityManager/OtherTypes/SnapshotNodeManagedObjectAssociations.swift new file mode 100644 index 00000000..02d606fe --- /dev/null +++ b/Engine/ObvIdentityManager/ObvIdentityManager/OtherTypes/SnapshotNodeManagedObjectAssociations.swift @@ -0,0 +1,74 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import OlvidUtils + +/// This type is used when restoring a snapshot +struct SnapshotNodeManagedObjectAssociations { + + private var association = [String: NSManagedObjectID]() + + mutating func associate>(_ object: NSManagedObject, to hashable: T) throws { + guard !association.keys.contains(hashable.id) else { + throw ObvError.theKeyAlreadyExists + } + association[hashable.id] = object.objectID + } + + + func getObject>(associatedTo hashable: G, within obvContext: ObvContext) throws -> T { + return try getObject(associatedTo: hashable, within: obvContext.context) + } + + + func getObject>(associatedTo hashable: G, within context: NSManagedObjectContext) throws -> T { + guard let objectID = association[hashable.id] else { + throw ObvError.objectNotFound + } + let object = try context.existingObject(with: objectID) + guard let typedObject = object as? T else { + throw ObvError.couldNotCastObject + } + return typedObject + } + + + func getObjectIfPresent>(associatedTo hashableOrNil: G?, within obvContext: ObvContext) throws -> T? { + return try getObjectIfPresent(associatedTo: hashableOrNil, within: obvContext.context) + } + + + func getObjectIfPresent>(associatedTo hashableOrNil: G?, within context: NSManagedObjectContext) throws -> T? { + guard let hashable = hashableOrNil else { + return nil + } + return try getObject(associatedTo: hashable, within: context) + } + + + enum ObvError: Error { + case theKeyAlreadyExists + case objectNotFound + case couldNotCastObject + case contextNotFound + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/Chunk.swift b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/Chunk.swift index 49630654..4388da97 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/Chunk.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/Chunk.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -70,6 +70,18 @@ public struct Chunk { } public func writeToURL(_ url: URL, offset: Int) throws { + + // Make sure the url exists + do { + let directory = url.deletingLastPathComponent() + if !FileManager.default.fileExists(atPath: directory.path) { + try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + } + if !FileManager.default.fileExists(atPath: url.path) { + FileManager.default.createFile(atPath: url.path, contents: nil) + } + } + let fd = open(url.path, O_RDWR) guard fd != -1 else { assertionFailure() @@ -112,12 +124,7 @@ public struct Chunk { public static func decrypt(encryptedChunkAtFileHandle fh: FileHandle, with key: AuthenticatedEncryptionKey) throws -> Chunk { fh.seek(toFileOffset: 0) - let encryptedChunkRaw: Data? - if #available(iOS 13.4, *) { - encryptedChunkRaw = try fh.readToEnd() - } else { - encryptedChunkRaw = fh.readDataToEndOfFile() - } + let encryptedChunkRaw = try fh.readToEnd() guard let data = encryptedChunkRaw else { throw Chunk.makeError(message: "No chunk data found at file handle") } let encryptedChunk = EncryptedData(data: data) return try decrypt(encryptedChunk: encryptedChunk, with: key) diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/DeviceNameUtils.swift b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/DeviceNameUtils.swift new file mode 100644 index 00000000..846a9312 --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/DeviceNameUtils.swift @@ -0,0 +1,57 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto +import ObvEncoder + + +public struct DeviceNameUtils { + + public static func encrypt(deviceName: String, for ownedIdentity: ObvCryptoIdentity, using prng: PRNGService) -> EncryptedData { + + let encodedDeviceName = [deviceName.trimmingWhitespacesAndNewlines().obvEncode()].obvEncode() + let unpaddedLength = encodedDeviceName.rawData.count + let paddedLength: Int = (1 + ((unpaddedLength-1)>>7)) << 7 // We pad to the smallest multiple of 128 larger than the actual length + let paddedEncodedDeviceName = encodedDeviceName.rawData + Data(count: paddedLength-unpaddedLength) + + let encryptedCurrentDeviceName = PublicKeyEncryption.encrypt(paddedEncodedDeviceName, using: ownedIdentity.publicKeyForPublicKeyEncryption, and: prng) + + return encryptedCurrentDeviceName + + } + + + public static func decrypt(encryptedDeviceName: EncryptedData, for ownedCryptoIdentity: ObvOwnedCryptoIdentity) -> String? { + + guard let paddedEncodedDeviceName = PublicKeyEncryption.decrypt(encryptedDeviceName, for: ownedCryptoIdentity), + let encodedDeviceName = ObvEncoded(withPaddedRawData: paddedEncodedDeviceName), + let listOfEncoded = [ObvEncoded](encodedDeviceName), + let encodedName = listOfEncoded.first, + let name = String(encodedName) + else { + assertionFailure() + return nil + } + + return name + + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/OwnedIdentityTransferRelayMessageResult.swift b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/OwnedIdentityTransferRelayMessageResult.swift new file mode 100644 index 00000000..b41d9e6e --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/OwnedIdentityTransferRelayMessageResult.swift @@ -0,0 +1,69 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvTypes + + +/// This type is used for a specific type of response of a server query, namely for the `ServerResponse.targetSendEphemeralIdentity` and the `ServerResponse.transferRelay` response. +public enum OwnedIdentityTransferRelayMessageResult: ObvCodable { + + case requestFailed + case requestSucceeded(payload: Data) + + + private var rawValue: Int { + switch self { + case .requestFailed: + return 0 + case .requestSucceeded: + return 1 + } + } + + + public func obvEncode() -> ObvEncoded { + switch self { + case .requestFailed: + return [rawValue.obvEncode()].obvEncode() + case .requestSucceeded(payload: let payload): + return [rawValue.obvEncode(), payload.obvEncode()].obvEncode() + } + } + + + public init?(_ obvEncoded: ObvEncoded) { + guard let listOfEncoded = [ObvEncoded](obvEncoded) else { return nil } + guard let encodedRawValue = listOfEncoded.first else { return nil } + guard let rawValue = Int(encodedRawValue) else { return nil } + switch rawValue { + case 0: + self = .requestFailed + case 1: + guard listOfEncoded.count == 2 else { assertionFailure(); return nil } + guard let payload = Data(listOfEncoded[1]) else { return nil } + self = .requestSucceeded(payload: payload) + default: + assertionFailure() + return nil + } + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/OwnedIdentityTransferWaitResult.swift b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/OwnedIdentityTransferWaitResult.swift new file mode 100644 index 00000000..45d01f1d --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/OwnedIdentityTransferWaitResult.swift @@ -0,0 +1,69 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvTypes + + +/// This type is used for a specific type of response of a server query concering the owned identity transfer protocol +public enum OwnedIdentityTransferWaitResult: ObvCodable { + + case requestFailed + case requestSucceeded(payload: Data) + + + private var rawValue: Int { + switch self { + case .requestFailed: + return 0 + case .requestSucceeded: + return 1 + } + } + + + public func obvEncode() -> ObvEncoded { + switch self { + case .requestFailed: + return [rawValue.obvEncode()].obvEncode() + case .requestSucceeded(payload: let payload): + return [rawValue.obvEncode(), payload.obvEncode()].obvEncode() + } + } + + + public init?(_ obvEncoded: ObvEncoded) { + guard let listOfEncoded = [ObvEncoded](obvEncoded) else { return nil } + guard let encodedRawValue = listOfEncoded.first else { return nil } + guard let rawValue = Int(encodedRawValue) else { return nil } + switch rawValue { + case 0: + self = .requestFailed + case 1: + guard listOfEncoded.count == 2 else { assertionFailure(); return nil } + guard let payload = Data(listOfEncoded[1]) else { return nil } + self = .requestSucceeded(payload: payload) + default: + assertionFailure() + return nil + } + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/SourceGetSessionNumberResult.swift b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/SourceGetSessionNumberResult.swift new file mode 100644 index 00000000..874bedca --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/SourceGetSessionNumberResult.swift @@ -0,0 +1,70 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvTypes + + +/// This type is used for a specific type of response of a server query, namely for the `ServerResponse.sourceGetSessionNumberMessage` response. +public enum SourceGetSessionNumberResult: ObvCodable { + + case requestFailed + case requestSucceeded(sourceConnectionId: String, sessionNumber: ObvOwnedIdentityTransferSessionNumber) + + + private var rawValue: Int { + switch self { + case .requestFailed: + return 0 + case .requestSucceeded: + return 1 + } + } + + + public func obvEncode() -> ObvEncoded { + switch self { + case .requestFailed: + return [rawValue.obvEncode()].obvEncode() + case .requestSucceeded(sourceConnectionId: let sourceConnectionId, sessionNumber: let sessionNumber): + return [rawValue.obvEncode(), sourceConnectionId.obvEncode(), sessionNumber.obvEncode()].obvEncode() + } + } + + + public init?(_ obvEncoded: ObvEncoded) { + guard let listOfEncoded = [ObvEncoded](obvEncoded) else { return nil } + guard let encodedRawValue = listOfEncoded.first else { return nil } + guard let rawValue = Int(encodedRawValue) else { return nil } + switch rawValue { + case 0: + self = .requestFailed + case 1: + guard listOfEncoded.count == 3 else { assertionFailure(); return nil } + guard let awsConnectionId = String(listOfEncoded[1]) else { return nil } + guard let sessionNumber = ObvOwnedIdentityTransferSessionNumber(listOfEncoded[2]) else { return nil } + self = .requestSucceeded(sourceConnectionId: awsConnectionId, sessionNumber: sessionNumber) + default: + assertionFailure() + return nil + } + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/SourceWaitForTargetConnectionResult.swift b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/SourceWaitForTargetConnectionResult.swift new file mode 100644 index 00000000..a94c8ef3 --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/SourceWaitForTargetConnectionResult.swift @@ -0,0 +1,70 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvTypes + + +/// This type is used for a specific type of response of a server query concering the owned identity transfer protocol +public enum SourceWaitForTargetConnectionResult: ObvCodable { + + case requestFailed + case requestSucceeded(targetConnectionId: String, payload: Data) + + + private var rawValue: Int { + switch self { + case .requestFailed: + return 0 + case .requestSucceeded: + return 1 + } + } + + + public func obvEncode() -> ObvEncoded { + switch self { + case .requestFailed: + return [rawValue.obvEncode()].obvEncode() + case .requestSucceeded(targetConnectionId: let targetConnectionId, payload: let payload): + return [rawValue.obvEncode(), targetConnectionId.obvEncode(), payload.obvEncode()].obvEncode() + } + } + + + public init?(_ obvEncoded: ObvEncoded) { + guard let listOfEncoded = [ObvEncoded](obvEncoded) else { return nil } + guard let encodedRawValue = listOfEncoded.first else { return nil } + guard let rawValue = Int(encodedRawValue) else { return nil } + switch rawValue { + case 0: + self = .requestFailed + case 1: + guard listOfEncoded.count == 3 else { assertionFailure(); return nil } + guard let targetConnectionId = String(listOfEncoded[1]) else { return nil } + guard let payload = Data(listOfEncoded[2]) else { return nil } + self = .requestSucceeded(targetConnectionId: targetConnectionId, payload: payload) + default: + assertionFailure() + return nil + } + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/TargetSendEphemeralIdentityResult.swift b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/TargetSendEphemeralIdentityResult.swift new file mode 100644 index 00000000..19f35329 --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/OwnedIdentityTransferWebSocketMessageResults/TargetSendEphemeralIdentityResult.swift @@ -0,0 +1,77 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvTypes + + +/// This type is used for a specific type of response of a server query, namely for the `ServerResponse.targetSendEphemeralIdentity` response. +public enum TargetSendEphemeralIdentityResult: ObvCodable { + + case requestSucceeded(otherConnectionId: String, payload: Data) + case incorrectTransferSessionNumber + case requestDidFail + + + private var rawValue: Int { + switch self { + case .requestSucceeded: + return 0 + case .incorrectTransferSessionNumber: + return 1 + case .requestDidFail: + return 2 + } + } + + + public func obvEncode() -> ObvEncoded { + switch self { + case .requestSucceeded(otherConnectionId: let otherConnectionId, payload: let payload): + return [rawValue.obvEncode(), otherConnectionId.obvEncode(), payload.obvEncode()].obvEncode() + case .incorrectTransferSessionNumber: + return [rawValue.obvEncode()].obvEncode() + case .requestDidFail: + return [rawValue.obvEncode()].obvEncode() + } + } + + + public init?(_ obvEncoded: ObvEncoded) { + guard let listOfEncoded = [ObvEncoded](obvEncoded) else { return nil } + guard let encodedRawValue = listOfEncoded.first else { return nil } + guard let rawValue = Int(encodedRawValue) else { return nil } + switch rawValue { + case 0: + guard listOfEncoded.count == 3 else { assertionFailure(); return nil } + guard let otherConnectionId = String(listOfEncoded[1]) else { return nil } + guard let payload = Data(listOfEncoded[2]) else { return nil } + self = .requestSucceeded(otherConnectionId: otherConnectionId, payload: payload) + case 1: + self = .incorrectTransferSessionNumber + case 2: + self = .requestDidFail + default: + assertionFailure() + return nil + } + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/TurnCredentials.swift b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/TurnCredentials.swift index de288c55..eac330e3 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/TurnCredentials.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/TurnCredentials.swift @@ -31,18 +31,3 @@ public struct TurnCredentials { self.password2 = password2 } } - -public struct TurnCredentialsWithTurnServers { - public let expiringUsername1: String - public let password1: String - public let expiringUsername2: String - public let password2: String - public let turnServersURL: [String] - public init(turnCredentials: TurnCredentials, turnServersURL: [String]) { - self.expiringUsername1 = turnCredentials.expiringUsername1 - self.password1 = turnCredentials.password1 - self.expiringUsername2 = turnCredentials.expiringUsername2 - self.password2 = turnCredentials.password2 - self.turnServersURL = turnServersURL - } -} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvBackgroundTaskDelegate/ObvFlowDelegate.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvBackgroundTaskDelegate/ObvFlowDelegate.swift index ba27c7ca..43ad98b9 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvBackgroundTaskDelegate/ObvFlowDelegate.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvBackgroundTaskDelegate/ObvFlowDelegate.swift @@ -30,7 +30,7 @@ public protocol ObvFlowDelegate: ObvSimpleFlowDelegate { // Posting message and attachments - func addBackgroundActivityForPostingApplicationMessageAttachmentsWithinFlow(withFlowId flowId: FlowIdentifier, messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier]) throws + func addBackgroundActivityForPostingApplicationMessageAttachmentsWithinFlow(withFlowId flowId: FlowIdentifier, messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier]) throws // Resuming a protocol @@ -38,19 +38,19 @@ public protocol ObvFlowDelegate: ObvSimpleFlowDelegate { // Posting a return receipt (for message or an attachment) - func startBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?) throws -> FlowIdentifier - func stopBackgroundActivityForPostingReturnReceipt(messageId: MessageIdentifier, attachmentNumber: Int?) throws + func startBackgroundActivityForPostingReturnReceipt(messageId: ObvMessageIdentifier, attachmentNumber: Int?) throws -> FlowIdentifier + func stopBackgroundActivityForPostingReturnReceipt(messageId: ObvMessageIdentifier, attachmentNumber: Int?) throws // Downloading messages, downloading/pausing attachment func startBackgroundActivityForDownloadingMessages(ownedIdentity: ObvCryptoIdentity) -> FlowIdentifier? - func attachmentDownloadDecisionHasBeenTaken(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) + func attachmentDownloadDecisionHasBeenTaken(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) // Deleting a message or an attachment - func startBackgroundActivityForDeletingAMessage(messageId: MessageIdentifier) -> FlowIdentifier? - func startBackgroundActivityForDeletingAnAttachment(attachmentId: AttachmentIdentifier) -> FlowIdentifier? + func startBackgroundActivityForDeletingAMessage(messageId: ObvMessageIdentifier) -> FlowIdentifier? + func startBackgroundActivityForDeletingAnAttachment(attachmentId: ObvAttachmentIdentifier) -> FlowIdentifier? // Handling the completion handler received together with a remote push notification diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvBackupDelegate/ObvBackupNotification.yml b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvBackupDelegate/ObvBackupNotification.yml deleted file mode 100644 index 9346d629..00000000 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvBackupDelegate/ObvBackupNotification.yml +++ /dev/null @@ -1,23 +0,0 @@ -import: - - Foundation - - ObvTypes - - ObvCrypto - - OlvidUtils -options: - - {key: post, value: postOnBackgroundQueue} - - {key: notificationCenterName, value: notificationDelegate} - - {key: notificationCenterType, value: ObvNotificationDelegate} - - {key: visibility, value: public} - - {key: objectInObserve, value: false} -notifications: -- name: newBackupSeedGenerated - params: - - {name: backupSeedString, type: String} - - {name: backupKeyInformation, type: BackupKeyInformation} - - {name: flowId, type: FlowIdentifier} -- name: backupSeedGenerationFailed - params: - - {name: flowId, type: FlowIdentifier} -- name: backupableManagerDatabaseContentChanged - params: - - {name: flowId, type: FlowIdentifier} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelApplicationMessageToSend.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelApplicationMessageToSend.swift index 2d831335..5bff5db6 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelApplicationMessageToSend.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelApplicationMessageToSend.swift @@ -31,8 +31,12 @@ public struct ObvChannelApplicationMessageToSend: ObvChannelMessageToSend { public let withUserContent: Bool public let isVoipMessageForStartingCall: Bool - public init(toContactIdentities: Set, fromIdentity: ObvCryptoIdentity, messagePayload: Data, extendedMessagePayload: Data?, withUserContent: Bool, isVoipMessageForStartingCall: Bool, attachments: [Attachment]) { - self.channelType = ObvChannelSendChannelType.AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: toContactIdentities, fromOwnedIdentity: fromIdentity) + public init(toContactIdentities: Set, fromIdentity: ObvCryptoIdentity, messagePayload: Data, extendedMessagePayload: Data?, withUserContent: Bool, isVoipMessageForStartingCall: Bool, attachments: [Attachment], alsoPostToOtherOwnedDevices: Bool) { + if alsoPostToOtherOwnedDevices { + self.channelType = ObvChannelSendChannelType.AllConfirmedObliviousChannelsWithContactIdentitiesAndWithOtherDevicesOfOwnedIdentity(contactIdentities: toContactIdentities, fromOwnedIdentity: fromIdentity) + } else { + self.channelType = ObvChannelSendChannelType.AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: toContactIdentities, fromOwnedIdentity: fromIdentity) + } self.attachments = attachments self.messagePayload = messagePayload self.extendedMessagePayload = extendedMessagePayload diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelDialogMessageToSend.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelDialogMessageToSend.swift index 699cdae8..c35e88d9 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelDialogMessageToSend.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelDialogMessageToSend.swift @@ -41,28 +41,32 @@ public struct ObvChannelDialogMessageToSend: ObvChannelMessageToSend { } public enum ObvChannelDialogToSendType { + case inviteSent(contact: CryptoIdentityWithFullDisplayName) // Used within the protocol allowing establish trust case acceptInvite(contact: CryptoIdentityWithCoreDetails) // Used within the protocol allowing establish trust case invitationAccepted(contact: CryptoIdentityWithCoreDetails) // Used within the protocol allowing establish trust case sasExchange(contact: CryptoIdentityWithCoreDetails, sasToDisplay: Data, numberOfBadEnteredSas: Int) case sasConfirmed(contact: CryptoIdentityWithCoreDetails, sasToDisplay: Data, sasEntered: Data) case mutualTrustConfirmed(contact: CryptoIdentityWithCoreDetails) - case autoconfirmedContactIntroduction(contact: CryptoIdentityWithCoreDetails, mediatorIdentity: ObvCryptoIdentity) case acceptMediatorInvite(contact: CryptoIdentityWithCoreDetails, mediatorIdentity: ObvCryptoIdentity) - case increaseMediatorTrustLevelRequired(contact: CryptoIdentityWithCoreDetails, mediatorIdentity: ObvCryptoIdentity) case mediatorInviteAccepted(contact: CryptoIdentityWithCoreDetails, mediatorIdentity: ObvCryptoIdentity) case oneToOneInvitationSent(contact: ObvCryptoIdentity, ownedIdentity: ObvCryptoIdentity) case oneToOneInvitationReceived(contact: ObvCryptoIdentity, ownedIdentity: ObvCryptoIdentity) // Dialogs related to contact groups + case acceptGroupInvite(groupInformation: GroupInformation, pendingGroupMembers: Set, receivedMessageTimestamp: Date) - case increaseGroupOwnerTrustLevel(groupInformation: GroupInformation, pendingGroupMembers: Set, receivedMessageTimestamp: Date) // Dialogs related to contact groups V2 + case acceptGroupV2Invite(inviter: ObvCryptoId, group: ObvGroupV2) case freezeGroupV2Invite(inviter: ObvCryptoId, group: ObvGroupV2) + // Dialogs related to the synchronization between owned devices + + case syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceUID: UID, syncAtom: ObvSyncAtom) // A special dialog allowing a protocol instance to notify the "user interface" that is should remove any previous dialog + case delete } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelServerQueryMessageToSend.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelServerQueryMessageToSend.swift index dc723473..c1194e5b 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelServerQueryMessageToSend.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelServerQueryMessageToSend.swift @@ -21,6 +21,7 @@ import Foundation import ObvEncoder import ObvCrypto import CryptoKit +import ObvTypes /// This structure allows to transfer a server query from the engine to the server. This is for example used to ask the server about the list of device uids of a given identity. public struct ObvChannelServerQueryMessageToSend: ObvChannelMessageToSend { @@ -56,6 +57,17 @@ extension ObvChannelServerQueryMessageToSend { case requestGroupBlobLock(groupIdentifier: GroupV2.Identifier, lockNonce: Data, signature: Data) case updateGroupBlob(groupIdentifier: GroupV2.Identifier, encodedServerAdminPublicKey: ObvEncoded, encryptedBlob: EncryptedData, lockNonce: Data, signature: Data) case getKeycloakData(serverURL: URL, serverLabel: UID) + case ownedDeviceDiscovery + case setOwnedDeviceName(ownedDeviceUID: UID, encryptedOwnedDeviceName: EncryptedData, isCurrentDevice: Bool) + case deactivateOwnedDevice(ownedDeviceUID: UID, isCurrentDevice: Bool) + case setUnexpiringOwnedDevice(ownedDeviceUID: UID) + // The following types concern the owned identity transfer protocol + case sourceGetSessionNumber(protocolInstanceUID: UID) + case sourceWaitForTargetConnection(protocolInstanceUID: UID) + case targetSendEphemeralIdentity(protocolInstanceUID: UID, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, payload: Data) + case transferRelay(protocolInstanceUID: UID, connectionIdentifier: String, payload: Data, thenCloseWebSocket: Bool) + case transferWait(protocolInstanceUID: UID, connectionIdentifier: String) + case closeWebsocketConnection(protocolInstanceUID: UID) } } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelServerResponseMessageToSend.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelServerResponseMessageToSend.swift index 930e195b..f00ec183 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelServerResponseMessageToSend.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/MessageTypes/ObvChannelServerResponseMessageToSend.swift @@ -59,7 +59,13 @@ extension ObvChannelServerResponseMessageToSend { case requestGroupBlobLock(result: RequestGroupBlobLockResult) case updateGroupBlob(uploadResult: UploadResult) case getKeycloakData(result: GetUserDataResult) - + case ownedDeviceDiscovery(encryptedOwnedDeviceDiscoveryResult: EncryptedData) + case setOwnedDeviceName(success: Bool) + case sourceGetSessionNumberMessage(result: SourceGetSessionNumberResult) + case targetSendEphemeralIdentity(result: TargetSendEphemeralIdentityResult) + case transferRelay(result: OwnedIdentityTransferRelayMessageResult) + case transferWait(result: OwnedIdentityTransferWaitResult) + case sourceWaitForTargetConnection(result: SourceWaitForTargetConnectionResult) public func getEncodedInputs() -> [ObvEncoded] { switch self { @@ -86,6 +92,20 @@ extension ObvChannelServerResponseMessageToSend { return [uploadResult.obvEncode()] case .getKeycloakData(result: let result): return [result.obvEncode()] + case .ownedDeviceDiscovery(encryptedOwnedDeviceDiscoveryResult: let encryptedOwnedDeviceDiscoveryResult): + return [encryptedOwnedDeviceDiscoveryResult.obvEncode()] + case .setOwnedDeviceName(success: let success): + return [success.obvEncode()] + case .sourceGetSessionNumberMessage(result: let result): + return [result.obvEncode()] + case .targetSendEphemeralIdentity(result: let result): + return [result.obvEncode()] + case .transferRelay(result: let result): + return [result.obvEncode()] + case .transferWait(result: let result): + return [result.obvEncode()] + case .sourceWaitForTargetConnection(result: let result): + return [result.obvEncode()] } } } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelDelegate.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelDelegate.swift index 94c42fa8..29afbcd1 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelDelegate.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelDelegate.swift @@ -28,7 +28,7 @@ public protocol ObvChannelDelegate: ObvManager { // Posting a channel message to send /// The returned set contains all the crypto identities to which the message was successfully posted. - func post(_: ObvChannelMessageToSend, randomizedWith: PRNGService, within: ObvContext) throws -> [MessageIdentifier: Set] + func postChannelMessage(_: ObvChannelMessageToSend, randomizedWith: PRNGService, within: ObvContext) throws -> [ObvMessageIdentifier: Set] // Decrypting an application message @@ -51,6 +51,8 @@ public protocol ObvChannelDelegate: ObvManager { func updateReceiveSeedOfObliviousChannelBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity: ObvCryptoIdentity, withRemoteDeviceUid: UID, with: Seed, within: ObvContext) throws func anObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity: ObvCryptoIdentity, withRemoteDeviceUid: UID, within: ObvContext) throws -> Bool + + func anObliviousChannelExistsBetweenCurrentDeviceUid(_ currentDeviceUid: UID, andRemoteDeviceUid remoteDeviceUid: UID, of remoteIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool func aConfirmedObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ObvCryptoIdentity, andRemoteIdentity: ObvCryptoIdentity, withRemoteDeviceUid: UID, within: ObvContext) throws -> Bool diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelNotification.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelNotification.swift index 131c60e6..1b4c9177 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelNotification.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelNotification.swift @@ -36,8 +36,8 @@ fileprivate struct OptionalWrapper { public enum ObvChannelNotification { case newConfirmedObliviousChannel(currentDeviceUid: UID, remoteCryptoIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) case deletedConfirmedObliviousChannel(currentDeviceUid: UID, remoteCryptoIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) - case networkReceivedMessageWasProcessed(messageId: MessageIdentifier, flowId: FlowIdentifier) - case protocolMessageDecrypted(protocolMessageId: MessageIdentifier, flowId: FlowIdentifier) + case networkReceivedMessageWasProcessed(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) + case protocolMessageDecrypted(protocolMessageId: ObvMessageIdentifier, flowId: FlowIdentifier) private enum Name { case newConfirmedObliviousChannel @@ -121,19 +121,19 @@ public enum ObvChannelNotification { } } - public static func observeNetworkReceivedMessageWasProcessed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeNetworkReceivedMessageWasProcessed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.networkReceivedMessageWasProcessed.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageId, flowId) } } - public static func observeProtocolMessageDecrypted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeProtocolMessageDecrypted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.protocolMessageDecrypted.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let protocolMessageId = notification.userInfo!["protocolMessageId"] as! MessageIdentifier + let protocolMessageId = notification.userInfo!["protocolMessageId"] as! ObvMessageIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(protocolMessageId, flowId) } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelNotification.yml b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelNotification.yml deleted file mode 100644 index c4a3bddf..00000000 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelNotification.yml +++ /dev/null @@ -1,31 +0,0 @@ -import: - - Foundation - - CoreData - - ObvTypes - - ObvCrypto - - OlvidUtils -options: - - {key: post, value: postOnBackgroundQueue} - - {key: notificationCenterName, value: notificationDelegate} - - {key: notificationCenterType, value: ObvNotificationDelegate} - - {key: visibility, value: public} - - {key: objectInObserve, value: false} -notifications: -- name: newConfirmedObliviousChannel - params: - - {name: currentDeviceUid, type: UID} - - {name: remoteCryptoIdentity, type: ObvCryptoIdentity} - - {name: remoteDeviceUid, type: UID} -- name: deletedConfirmedObliviousChannel - params: - - {name: currentDeviceUid, type: UID} - - {name: remoteCryptoIdentity, type: ObvCryptoIdentity} - - {name: remoteDeviceUid, type: UID} -- name: networkReceivedMessageWasProcessed - params: - - {name: messageId, type: MessageIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: protocolMessageDecrypted - params: - - {name: protocolMessageId, type: MessageIdentifier} - - {name: flowId, type: FlowIdentifier} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelSendChannelType.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelSendChannelType.swift index d1c0b683..fcc40d4e 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelSendChannelType.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvChannel/ObvChannelSendChannelType.swift @@ -29,12 +29,14 @@ public enum ObvChannelSendChannelType { case Local(ownedIdentity: ObvCryptoIdentity) // Send from/to this owned identity case AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set, fromOwnedIdentity: ObvCryptoIdentity) case AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity(ownedIdentity: ObvCryptoIdentity) + case AllConfirmedObliviousChannelsWithContactIdentitiesAndWithOtherDevicesOfOwnedIdentity(contactIdentities: Set, fromOwnedIdentity: ObvCryptoIdentity) case ObliviousChannel(to: ObvCryptoIdentity, remoteDeviceUids: [UID], fromOwnedIdentity: ObvCryptoIdentity, necessarilyConfirmed: Bool) case AsymmetricChannel(to: ObvCryptoIdentity, remoteDeviceUids: [UID], fromOwnedIdentity: ObvCryptoIdentity) case AsymmetricChannelBroadcast(to: ObvCryptoIdentity, fromOwnedIdentity: ObvCryptoIdentity) case UserInterface(uuid: UUID, ownedIdentity: ObvCryptoIdentity, dialogType: ObvChannelDialogToSendType) case ServerQuery(ownedIdentity: ObvCryptoIdentity) // The identity is one of our own, used to receive the server response + /// Only owned identities can "send" on a channel. Note that when sending a message to self, the `fromOwnedIdentity` is identical to the `toIdentity` public var fromOwnedIdentity: ObvCryptoIdentity { switch self { @@ -45,11 +47,13 @@ public enum ObvChannelSendChannelType { .AsymmetricChannelBroadcast(to: _, fromOwnedIdentity: let fromOwnedIdentity), .UserInterface(uuid: _, ownedIdentity: let fromOwnedIdentity, dialogType: _), .ServerQuery(ownedIdentity: let fromOwnedIdentity), - .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: _, fromOwnedIdentity: let fromOwnedIdentity): + .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: _, fromOwnedIdentity: let fromOwnedIdentity), + .AllConfirmedObliviousChannelsWithContactIdentitiesAndWithOtherDevicesOfOwnedIdentity(contactIdentities: _, fromOwnedIdentity: let fromOwnedIdentity): return fromOwnedIdentity } } + /// The toIdentity can be a contact identity, or an owned identity, depending on the case. public var toIdentity: ObvCryptoIdentity? { switch self { @@ -61,11 +65,13 @@ public enum ObvChannelSendChannelType { .UserInterface(uuid: _, ownedIdentity: let toIdentity, dialogType: _), .ServerQuery(ownedIdentity: let toIdentity): return toIdentity - case .AllConfirmedObliviousChannelsWithContactIdentities: + case .AllConfirmedObliviousChannelsWithContactIdentities, + .AllConfirmedObliviousChannelsWithContactIdentitiesAndWithOtherDevicesOfOwnedIdentity: return nil } } + public var toIdentities: Set? { switch self { case .Local, @@ -76,9 +82,10 @@ public enum ObvChannelSendChannelType { .UserInterface, .ServerQuery: return nil - case .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: let toIdentities, fromOwnedIdentity: _): + case .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: let toIdentities, fromOwnedIdentity: _), + .AllConfirmedObliviousChannelsWithContactIdentitiesAndWithOtherDevicesOfOwnedIdentity(contactIdentities: let toIdentities, fromOwnedIdentity: _): return toIdentities } - } + } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvCreateContext/ObvCreateContextDelegate.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvCreateContext/ObvCreateContextDelegate.swift index 70e82580..5346ccc5 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvCreateContext/ObvCreateContextDelegate.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvCreateContext/ObvCreateContextDelegate.swift @@ -36,6 +36,9 @@ public protocol ObvCreateContextDelegate: ObvManager, ObvContextCreator { func performBackgroundTaskAndWaitOrThrow(file: StaticString, line: Int, function: StaticString, _ block: (NSManagedObjectContext) throws -> Void) throws func performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier, file: StaticString, line: Int, function: StaticString, _ block: (ObvContext) throws -> Void) throws + func performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier, file: StaticString, line: Int, function: StaticString, _ block: (ObvContext) throws -> T) throws -> T + func performBackgroundTaskAndWaitOrThrow(file: StaticString, line: Int, function: StaticString, _ block: (NSManagedObjectContext) throws -> T) throws -> T + func debugPrintCurrentBackgroundContexts() } @@ -66,5 +69,13 @@ extension ObvCreateContextDelegate { try self.performBackgroundTaskAndWaitOrThrow(flowId: flowId, file: file, line: line, function: function, block) } + public func performBackgroundTaskAndWaitOrThrow(flowId: FlowIdentifier, file: StaticString = #fileID, line: Int = #line, function: StaticString = #function, _ block: (ObvContext) throws -> T) throws -> T { + return try self.performBackgroundTaskAndWaitOrThrow(flowId: flowId, file: file, line: line, function: function, block) + } + + + func performBackgroundTaskAndWaitOrThrow(file: StaticString, line: Int, function: StaticString, _ block: (NSManagedObjectContext) throws -> T) throws -> T { + return try self.performBackgroundTaskAndWaitOrThrow(file: file, line: line, function: function, block) + } } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityDelegate.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityDelegate.swift index a5c08203..11736f01 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityDelegate.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,7 +23,8 @@ import ObvTypes import OlvidUtils import JWS -public protocol ObvIdentityDelegate: ObvBackupableManager { +public protocol +ObvIdentityDelegate: ObvBackupableManager, ObvSnapshotable { // MARK: - API related to owned identities @@ -38,24 +39,28 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func isOwnedIdentityActive(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) throws -> Bool - func deactivateOwnedIdentity(ownedIdentity: ObvCryptoIdentity, within: ObvContext) throws + func deactivateOwnedIdentityAndDeleteContactDevices(ownedIdentity: ObvCryptoIdentity, within: ObvContext) throws func reactivateOwnedIdentity(ownedIdentity: ObvCryptoIdentity, within: ObvContext) throws - func generateOwnedIdentity(withApiKey: UUID, onServerURL: URL, with: ObvIdentityDetails, accordingTo: PublicKeyEncryptionImplementationByteId, and: AuthenticationImplementationByteId, keycloakState: ObvKeycloakState?, using: PRNGService, within: ObvContext) -> ObvCryptoIdentity? - - func getApiKeyOfOwnedIdentity(_: ObvCryptoIdentity, within: ObvContext) throws -> UUID - - func setAPIKey(_ apiKey: UUID, forOwnedIdentity identity: ObvCryptoIdentity, keycloakServerURL: URL?, within obvContext: ObvContext) throws + func generateOwnedIdentity(onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, accordingTo pkEncryptionImplemByteId: PublicKeyEncryptionImplementationByteId, and authEmplemByteId: AuthenticationImplementationByteId, nameForCurrentDevice: String, keycloakState: ObvKeycloakState?, using prng: PRNGService, within obvContext: ObvContext) -> ObvCryptoIdentity? // Implemented within ObvIdentityDelegateExtension.swift - func generateOwnedIdentity(withApiKey: UUID, onServerURL: URL, with: ObvIdentityDetails, keycloakState: ObvKeycloakState?, using: PRNGService, within: ObvContext) -> ObvCryptoIdentity? + func generateOwnedIdentity(onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, nameForCurrentDevice: String, keycloakState: ObvKeycloakState?, using prng: PRNGService, within obvContext: ObvContext) -> ObvCryptoIdentity? func markOwnedIdentityForDeletion(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws func deleteOwnedIdentity(_: ObvCryptoIdentity, within: ObvContext) throws func getOwnedIdentities(within: ObvContext) throws -> Set + + func getActiveOwnedIdentitiesAndCurrentDeviceName(within obvContext: ObvContext) throws -> [ObvCryptoIdentity: String?] + + func getActiveOwnedIdentitiesThatAreNotKeycloakManaged(within: ObvContext) throws -> Set + + func saveRegisteredKeycloakAPIKey(ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, within obvContext: ObvContext) throws + + func getRegisteredKeycloakAPIKey(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UUID? func getOwnedIdentitiesAndCurrentDeviceUids(within obvContext: ObvContext) throws -> [(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID)] @@ -71,9 +76,14 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func updatePublishedIdentityDetailsOfOwnedIdentity(_ identity: ObvCryptoIdentity, with newIdentityDetails: ObvIdentityDetails, within obvContext: ObvContext) throws + /// Returns `true` iff a new photo needs to be downloaded + func updateOwnedPublishedDetailsWithOtherDetailsIfNewer(_ ownedIdentity: ObvCryptoIdentity, with otherIdentityDetails: IdentityDetailsElements, within obvContext: ObvContext) throws -> Bool + func getDeterministicSeedForOwnedIdentity(_: ObvCryptoIdentity, diversifiedUsing: Data, within: ObvContext) throws -> Seed - func getFreshMaskingUIDForPushNotifications(for: ObvCryptoIdentity, within: ObvContext) throws -> UID + func getDeterministicSeed(diversifiedUsing data: Data, secretMACKey: MACKey, forProtocol seedProtocol: ObvConstants.SeedProtocol) throws -> Seed + + func getFreshMaskingUIDForPushNotifications(for identity: ObvCryptoIdentity, pushToken: Data, within obvContext: ObvContext) throws -> UID func getOwnedIdentityAssociatedToMaskingUID(_ maskingUID: UID, within obvContext: ObvContext) throws -> ObvCryptoIdentity? @@ -88,7 +98,7 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func createContactGroupV2AdministratedByOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, serializedGroupCoreDetails: Data, photoURL: URL?, ownRawPermissions: Set, otherGroupMembers: Set, within obvContext: ObvContext) throws -> (groupIdentifier: GroupV2.Identifier, groupAdminServerAuthenticationPublicKey: PublicKeyForAuthentication, serverPhotoInfo: GroupV2.ServerPhotoInfo?, encryptedServerBlob: EncryptedData, photoURL: URL?) - func createContactGroupV2JoinedByOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverBlob: GroupV2.ServerBlob, blobKeys: GroupV2.BlobKeys, within obvContext: ObvContext) throws + func createContactGroupV2JoinedByOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverBlob: GroupV2.ServerBlob, blobKeys: GroupV2.BlobKeys, createdByMeOnOtherDevice: Bool, within obvContext: ObvContext) throws func removeOtherMembersOrPendingMembersFromGroupV2(withGroupIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, identitiesToRemove: Set, within obvContext: ObvContext) throws @@ -130,6 +140,8 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func getAllGroupsV2IdentifierVersionAndKeysForContact(_ contactIdentity: ObvCryptoIdentity, ofOwnedIdentity ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> [GroupV2.IdentifierVersionAndKeys] + func getAllGroupsV2IdentifierVersionAndKeys(ofOwnedIdentity ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> [GroupV2.IdentifierVersionAndKeys] + func getAllNonPendingAdministratorsIdentitiesOfGroupV2(withGroupWithIdentifier groupIdentifier: GroupV2.Identifier, of ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set @@ -141,6 +153,8 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func getIdentifiersOfAllKeycloakGroupsWhereContactIsPending(ownedCryptoId: ObvCryptoIdentity, contactCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set + func getAllKeycloakContactsThatArePendingInSomeKeycloakGroup(within obvContext: ObvContext) throws -> [ObvCryptoIdentity: Set] + // MARK: - API related to keycloak management func isOwnedIdentityKeycloakManaged(ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool @@ -159,8 +173,8 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func setOwnedIdentityKeycloakUserId(ownedIdentity: ObvCryptoIdentity, keycloakUserId userId: String?, within obvContext: ObvContext) throws - /// This method binds an owned identity to a keycloak server. It returns a set of all the identities that are managed by the same keycloak server than the owned identity. - func bindOwnedIdentityToKeycloak(ownedCryptoIdentity: ObvCryptoIdentity, keycloakUserId userId: String, keycloakState: ObvKeycloakState, within obvContext: ObvContext) throws -> Set + /// This method binds an owned identity to a keycloak server. Upon context save, it notifies about the set of all the identities that are managed by the same keycloak server than the owned identity. + func bindOwnedIdentityToKeycloak(ownedCryptoIdentity: ObvCryptoIdentity, keycloakUserId userId: String, keycloakState: ObvKeycloakState, within obvContext: ObvContext) throws // This method unbinds the owned identity from any keycloak server and creates new published details for this identity using the currently published details, after removing any signed details. func unbindOwnedIdentityFromKeycloak(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws @@ -194,7 +208,9 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func getOtherDeviceUidsOfOwnedIdentity(_: ObvCryptoIdentity, within: ObvContext) throws -> Set - func addDeviceForOwnedIdentity(_: ObvCryptoIdentity, withUid: UID, within: ObvContext) throws + func addOtherDeviceForOwnedIdentity(_: ObvCryptoIdentity, withUid: UID, createdDuringChannelCreation: Bool, within: ObvContext) throws + + func removeOtherDeviceForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, otherDeviceUid: UID, within obvContext: ObvContext) throws /// This method throws if the identity is not an owned identity. Otherwise it returns `true` iff the UID passed corresponds to the UID of a remote device of the owned identity. func isDevice(withUid: UID, aRemoteDeviceOfOwnedIdentity: ObvCryptoIdentity, within: ObvContext) throws -> Bool @@ -203,12 +219,21 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func deleteAllDevicesOfContactIdentity(contactIdentity: ObvCryptoIdentity, ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws + func processEncryptedOwnedDeviceDiscoveryResult(_ encryptedOwnedDeviceDiscoveryResult: EncryptedData, forOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Bool + + func decryptEncryptedOwnedDeviceDiscoveryResult(_ encryptedOwnedDeviceDiscoveryResult: EncryptedData, forOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> OwnedDeviceDiscoveryResult + + func decryptProtocolCiphertext(_ ciphertext: EncryptedData, forOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Data + + func getInfosAboutOwnedDevice(withUid uid: UID, ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> (name: String?, expirationDate: Date?, latestRegistrationDate: Date?) + func setCurrentDeviceNameOfOwnedIdentityAfterBackupRestore(ownedCryptoIdentity: ObvCryptoIdentity, nameForCurrentDevice: String, within obvContext: ObvContext) throws + // MARK: - API related to contact identities func addContactIdentity(_: ObvCryptoIdentity, with: ObvIdentityCoreDetails, andTrustOrigin: TrustOrigin, forOwnedIdentity: ObvCryptoIdentity, setIsOneToOneTo newOneToOneValue: Bool, within: ObvContext) throws - func addTrustOriginIfTrustWouldBeIncreased(_: TrustOrigin, toContactIdentity: ObvCryptoIdentity, ofOwnedIdentity: ObvCryptoIdentity, setIsOneToOneTo newOneToOneValue: Bool, within: ObvContext) throws + func addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(_: TrustOrigin, toContactIdentity: ObvCryptoIdentity, ofOwnedIdentity: ObvCryptoIdentity, within: ObvContext) throws func getTrustOrigins(forContactIdentity: ObvCryptoIdentity, ofOwnedIdentity: ObvCryptoIdentity, within: ObvContext) throws -> [TrustOrigin] @@ -216,6 +241,8 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func getContactsOfOwnedIdentity(_: ObvCryptoIdentity, within: ObvContext) throws -> Set + func getContactsWithNoDeviceOfOwnedIdentity(_ ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Set + /// This method throws if the second identity is not an owned identity or if the first identity is not a contact of that owned identity. Otherwise it returns the display name of the contact identity. func getIdentityDetailsOfContactIdentity(_: ObvCryptoIdentity, ofOwnedIdentity: ObvCryptoIdentity, within: ObvContext) throws -> (publishedIdentityDetails: ObvIdentityDetails?, trustedIdentityDetails: ObvIdentityDetails) @@ -233,10 +260,13 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func deleteContactIdentity(_: ObvCryptoIdentity, forOwnedIdentity: ObvCryptoIdentity, failIfContactIsPartOfACommonGroup: Bool, within: ObvContext) throws + func getDateOfLastBootstrappedContactDeviceDiscovery(forContactCryptoId contactCryptoId: ObvCryptoIdentity, ofOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> Date + + func setDateOfLastBootstrappedContactDeviceDiscovery(forContactCryptoId contactCryptoId: ObvCryptoIdentity, ofOwnedCryptoId ownedCryptoId: ObvCryptoIdentity, to newDate: Date, within obvContext: ObvContext) throws // MARK: - API related to contact devices - func addDeviceForContactIdentity(_: ObvCryptoIdentity, withUid: UID, ofOwnedIdentity: ObvCryptoIdentity, within: ObvContext) throws + func addDeviceForContactIdentity(_: ObvCryptoIdentity, withUid: UID, ofOwnedIdentity: ObvCryptoIdentity, createdDuringChannelCreation: Bool, within: ObvContext) throws func removeDeviceForContactIdentity(_: ObvCryptoIdentity, withUid: UID, ofOwnedIdentity: ObvCryptoIdentity, within: ObvContext) throws @@ -245,10 +275,9 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { /// This method throws if the second identity is not an owned identity or if the first identity is not a contact of that owned identity. Otherwise it returns `true` iff the UID passed corresponds to the UID of contact device of the contact identity. func isDevice(withUid: UID, aDeviceOfContactIdentity: ObvCryptoIdentity, ofOwnedIdentity: ObvCryptoIdentity, within: ObvContext) throws -> Bool - /// This method returns an array of all the device uids known within the identity manager. This includes *both* owned device and contact devices. + /// This method returns a set of all the device uids known within the identity manager. This includes *both* owned device and contact devices. func getAllRemoteOwnedDevicesUidsAndContactDeviceUids(within: ObvContext) throws -> Set - // MARK: - API related to contact groups func removeContactFromPendingAndGroupMembersOfContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupOwner: ObvCryptoIdentity, groupUid: UID, contactIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws @@ -285,6 +314,8 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func publishLatestDetailsOfContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, within obvContext: ObvContext) throws + func updatePendingMembersAndGroupMembersOfContactGroupOwned(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupMembers: Set, pendingGroupMembers: Set, groupMembersVersion: Int, within obvContext: ObvContext) throws + func updatePendingMembersAndGroupMembersOfContactGroupJoined(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupOwner: ObvCryptoIdentity, groupMembers: Set, pendingGroupMembers: Set, groupMembersVersion: Int, within obvContext: ObvContext) throws func getGroupOwnedStructure(ownedIdentity: ObvCryptoIdentity, groupUid: UID, within obvContext: ObvContext) throws -> GroupStructure? @@ -346,6 +377,10 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func setCapabilitiesOfCurrentDeviceOfOwnedIdentity(ownedIdentity: ObvCryptoIdentity, newCapabilities: Set, within obvContext: ObvContext) throws func setRawCapabilitiesOfOtherDeviceOfOwnedIdentity(ownedIdentity: ObvCryptoIdentity, deviceUID: UID, newRawCapabilities: Set, within obvContext: ObvContext) throws + + // MARK: - API related to sync between owned devices + + func processSyncAtom(_ syncAtom: ObvSyncAtom, ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws // MARK: - User Data @@ -357,4 +392,18 @@ public protocol ObvIdentityDelegate: ObvBackupableManager { func updateUserDataNextRefreshTimestamp(for ownedIdentity: ObvCryptoIdentity, with label: UID, within obvContext: ObvContext) + // MARK: - Getting informations about missing photos + + func getInformationsAboutContactsWithMissingContactPictureOnDisk(within obvContext: ObvContext) throws -> [(ownedCryptoId: ObvCryptoIdentity, contactCryptoId: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements)] + + func getInformationsAboutOwnedIdentitiesWithMissingPictureOnDisk(within obvContext: ObvContext) throws -> [(ownedCryptoId: ObvCryptoIdentity, ownedIdentityDetailsElements: IdentityDetailsElements)] + + func getInformationsAboutGroupsV1WithMissingContactPictureOnDisk(within obvContext: ObvContext) throws -> [(ownedIdentity: ObvCryptoIdentity, groupInfo: GroupInformation)] + + func getInformationsAboutGroupsV2WithMissingContactPictureOnDisk(within obvContext: ObvContext) throws -> [(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverPhotoInfo: GroupV2.ServerPhotoInfo)] + + // MARK: - Restoring snapshots + + func restoreObvSyncSnapshotNode(_ syncSnapshotNode: any ObvSyncSnapshotNode, customDeviceName: String, within obvContext: ObvContext) throws + } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityDelegateExtension.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityDelegateExtension.swift index 3c243479..c9b4bd59 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityDelegateExtension.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityDelegateExtension.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,16 +26,16 @@ import ObvTypes public extension ObvIdentityDelegate { /// Generate an Owned Identity using the latest recommended types for the cryptographic keys. - func generateOwnedIdentity(withApiKey apiKey: UUID, onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, keycloakState: ObvKeycloakState?, using prng: PRNGService, within obvContext: ObvContext) -> ObvCryptoIdentity? { + func generateOwnedIdentity(onServerURL serverURL: URL, with identityDetails: ObvIdentityDetails, nameForCurrentDevice: String, keycloakState: ObvKeycloakState?, using prng: PRNGService, within obvContext: ObvContext) -> ObvCryptoIdentity? { let pkEncryptionImplemByteId = ObvCryptoSuite.sharedInstance.getDefaultPublicKeyEncryptionImplementationByteId() let authEmplemByteId = ObvCryptoSuite.sharedInstance.getDefaultAuthenticationImplementationByteId() - return generateOwnedIdentity(withApiKey: apiKey, - onServerURL: serverURL, + return generateOwnedIdentity(onServerURL: serverURL, with: identityDetails, accordingTo: pkEncryptionImplemByteId, and: authEmplemByteId, + nameForCurrentDevice: nameForCurrentDevice, keycloakState: keycloakState, using: prng, within: obvContext) diff --git a/Engine/ObvIdentityManager/ObvIdentityManager/ObvIdentityManagerError.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityManagerError.swift similarity index 68% rename from Engine/ObvIdentityManager/ObvIdentityManager/ObvIdentityManagerError.swift rename to Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityManagerError.swift index fb2bb972..623529e7 100644 --- a/Engine/ObvIdentityManager/ObvIdentityManager/ObvIdentityManagerError.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityManagerError.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,32 +19,39 @@ import Foundation -public enum ObvIdentityManagerError: Int { +public enum ObvIdentityManagerError: Error { - case cryptoIdentityIsNotOwned = 1 - case cryptoIdentityIsNotContact = 2 - case contextIsNil = 3 - case invalidPhotoServerKeyEncodedRaw = 4 - case cannotDecodeEncodedEncryptionKey = 5 - case tryingToCreateContactGroupThatAlreadyExists = 6 - case inappropriateGroupInformation = 7 - case groupDoesNotExist = 8 - case contextMismatch = 9 - case pendingGroupMemberDoesNotExist = 10 - case anIdentityAppearsBothWithinPendingMembersAndGroupMembers = 11 - case contactCreationFailed = 12 - case groupIsNotOwned = 13 - case invalidGroupDetailsVersion = 14 - case ownedContactGroupStillHasMembersOrPendingMembers = 15 - case ownedIdentityNotFound = 16 - case diversificationDataCannotBeEmpty = 17 - case failedToTurnRandomIntoSeed = 18 - case delegateManagerIsNotSet = 19 - case groupIsNotJoined = 20 + case cryptoIdentityIsNotOwned + case cryptoIdentityIsNotContact + case contextIsNil + case invalidPhotoServerKeyEncodedRaw + case cannotDecodeEncodedEncryptionKey + case tryingToCreateContactGroupThatAlreadyExists + case inappropriateGroupInformation + case groupDoesNotExist + case contextMismatch + case pendingGroupMemberDoesNotExist + case anIdentityAppearsBothWithinPendingMembersAndGroupMembers + case contactCreationFailed + case groupIsNotOwned + case invalidGroupDetailsVersion + case ownedContactGroupStillHasMembersOrPendingMembers + case ownedIdentityNotFound + case ownedIdentityIsNotKeycloakManaged + case diversificationDataCannotBeEmpty + case failedToTurnRandomIntoSeed + case delegateManagerIsNotSet + case groupIsNotJoined + case wrongSyncAtomRecipient + case couldNotDecodeGroupIdentifier + case contextCreatorIsNil - func error(withDomain domain: String) -> NSError { + + var localizedDescription: String { let message: String switch self { + case .ownedIdentityIsNotKeycloakManaged: + message = "Owned identity is not keycloak managed" case .cryptoIdentityIsNotOwned: message = "The crypto identity is not owned" case .cryptoIdentityIsNotContact: @@ -85,8 +92,13 @@ public enum ObvIdentityManagerError: Int { message = "Delegate manager is not set" case .groupIsNotJoined: message = "Group is not one we joined" + case .wrongSyncAtomRecipient: + message = "Wrong sync atom recipient" + case .couldNotDecodeGroupIdentifier: + message = "Could not decode group identifier" + case .contextCreatorIsNil: + message = "Context creator is nil" } - let userInfo = [NSLocalizedFailureReasonErrorKey: message] - return NSError(domain: domain, code: self.rawValue, userInfo: userInfo) + return message } } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityNotificationNew.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityNotificationNew.swift index c204cafa..04e663e0 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityNotificationNew.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityNotificationNew.swift @@ -38,7 +38,7 @@ public enum ObvIdentityNotificationNew { case ownedIdentityWasDeactivated(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) case ownedIdentityWasReactivated(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) case deletedContactDevice(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUid: UID, flowId: FlowIdentifier) - case newContactDevice(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUid: UID, flowId: FlowIdentifier) + case newContactDevice(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUid: UID, createdDuringChannelCreation: Bool, flowId: FlowIdentifier) case serverLabelHasBeenDeleted(ownedIdentity: ObvCryptoIdentity, label: UID) case contactWasDeleted(ownedCryptoIdentity: ObvCryptoIdentity, contactCryptoIdentity: ObvCryptoIdentity) case latestPhotoOfContactGroupOwnedHasBeenUpdated(groupUid: UID, ownedIdentity: ObvCryptoIdentity) @@ -59,9 +59,13 @@ public enum ObvIdentityNotificationNew { case groupV2WasCreated(obvGroupV2: ObvGroupV2, initiator: ObvGroupV2.CreationOrUpdateInitiator) case groupV2WasUpdated(obvGroupV2: ObvGroupV2, initiator: ObvGroupV2.CreationOrUpdateInitiator) case groupV2WasDeleted(ownedIdentity: ObvCryptoIdentity, appGroupIdentifier: Data) - case ownedIdentityWasDeleted + case ownedIdentityWasDeleted(ownedIdentity: ObvCryptoIdentity) case contactIsCertifiedByOwnKeycloakStatusChanged(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, newIsCertifiedByOwnKeycloak: Bool) case pushTopicOfKeycloakGroupWasUpdated(ownedCryptoId: ObvCryptoIdentity) + case newRemoteOwnedDevice(ownedCryptoId: ObvCryptoIdentity, remoteDeviceUid: UID, createdDuringChannelCreation: Bool) + case anOwnedDeviceWasUpdated(ownedCryptoId: ObvCryptoIdentity) + case anOwnedDeviceWasDeleted(ownedCryptoId: ObvCryptoIdentity) + case newActiveOwnedIdentity(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) private enum Name { case contactIdentityIsNowTrusted @@ -93,6 +97,10 @@ public enum ObvIdentityNotificationNew { case ownedIdentityWasDeleted case contactIsCertifiedByOwnKeycloakStatusChanged case pushTopicOfKeycloakGroupWasUpdated + case newRemoteOwnedDevice + case anOwnedDeviceWasUpdated + case anOwnedDeviceWasDeleted + case newActiveOwnedIdentity private var namePrefix: String { String(describing: ObvIdentityNotificationNew.self) } @@ -134,6 +142,10 @@ public enum ObvIdentityNotificationNew { case .ownedIdentityWasDeleted: return Name.ownedIdentityWasDeleted.name case .contactIsCertifiedByOwnKeycloakStatusChanged: return Name.contactIsCertifiedByOwnKeycloakStatusChanged.name case .pushTopicOfKeycloakGroupWasUpdated: return Name.pushTopicOfKeycloakGroupWasUpdated.name + case .newRemoteOwnedDevice: return Name.newRemoteOwnedDevice.name + case .anOwnedDeviceWasUpdated: return Name.anOwnedDeviceWasUpdated.name + case .anOwnedDeviceWasDeleted: return Name.anOwnedDeviceWasDeleted.name + case .newActiveOwnedIdentity: return Name.newActiveOwnedIdentity.name } } } @@ -167,11 +179,12 @@ public enum ObvIdentityNotificationNew { "contactDeviceUid": contactDeviceUid, "flowId": flowId, ] - case .newContactDevice(ownedIdentity: let ownedIdentity, contactIdentity: let contactIdentity, contactDeviceUid: let contactDeviceUid, flowId: let flowId): + case .newContactDevice(ownedIdentity: let ownedIdentity, contactIdentity: let contactIdentity, contactDeviceUid: let contactDeviceUid, createdDuringChannelCreation: let createdDuringChannelCreation, flowId: let flowId): info = [ "ownedIdentity": ownedIdentity, "contactIdentity": contactIdentity, "contactDeviceUid": contactDeviceUid, + "createdDuringChannelCreation": createdDuringChannelCreation, "flowId": flowId, ] case .serverLabelHasBeenDeleted(ownedIdentity: let ownedIdentity, label: let label): @@ -284,8 +297,10 @@ public enum ObvIdentityNotificationNew { "ownedIdentity": ownedIdentity, "appGroupIdentifier": appGroupIdentifier, ] - case .ownedIdentityWasDeleted: - info = nil + case .ownedIdentityWasDeleted(ownedIdentity: let ownedIdentity): + info = [ + "ownedIdentity": ownedIdentity, + ] case .contactIsCertifiedByOwnKeycloakStatusChanged(ownedIdentity: let ownedIdentity, contactIdentity: let contactIdentity, newIsCertifiedByOwnKeycloak: let newIsCertifiedByOwnKeycloak): info = [ "ownedIdentity": ownedIdentity, @@ -296,6 +311,25 @@ public enum ObvIdentityNotificationNew { info = [ "ownedCryptoId": ownedCryptoId, ] + case .newRemoteOwnedDevice(ownedCryptoId: let ownedCryptoId, remoteDeviceUid: let remoteDeviceUid, createdDuringChannelCreation: let createdDuringChannelCreation): + info = [ + "ownedCryptoId": ownedCryptoId, + "remoteDeviceUid": remoteDeviceUid, + "createdDuringChannelCreation": createdDuringChannelCreation, + ] + case .anOwnedDeviceWasUpdated(ownedCryptoId: let ownedCryptoId): + info = [ + "ownedCryptoId": ownedCryptoId, + ] + case .anOwnedDeviceWasDeleted(ownedCryptoId: let ownedCryptoId): + info = [ + "ownedCryptoId": ownedCryptoId, + ] + case .newActiveOwnedIdentity(ownedCryptoIdentity: let ownedCryptoIdentity, flowId: let flowId): + info = [ + "ownedCryptoIdentity": ownedCryptoIdentity, + "flowId": flowId, + ] } return info } @@ -356,14 +390,15 @@ public enum ObvIdentityNotificationNew { } } - public static func observeNewContactDevice(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, ObvCryptoIdentity, UID, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeNewContactDevice(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, ObvCryptoIdentity, UID, Bool, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.newContactDevice.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity let contactIdentity = notification.userInfo!["contactIdentity"] as! ObvCryptoIdentity let contactDeviceUid = notification.userInfo!["contactDeviceUid"] as! UID + let createdDuringChannelCreation = notification.userInfo!["createdDuringChannelCreation"] as! Bool let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, contactIdentity, contactDeviceUid, flowId) + block(ownedIdentity, contactIdentity, contactDeviceUid, createdDuringChannelCreation, flowId) } } @@ -557,10 +592,11 @@ public enum ObvIdentityNotificationNew { } } - public static func observeOwnedIdentityWasDeleted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { + public static func observeOwnedIdentityWasDeleted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity) -> Void) -> NSObjectProtocol { let name = Name.ownedIdentityWasDeleted.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - block() + let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity + block(ownedIdentity) } } @@ -582,4 +618,39 @@ public enum ObvIdentityNotificationNew { } } + public static func observeNewRemoteOwnedDevice(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, UID, Bool) -> Void) -> NSObjectProtocol { + let name = Name.newRemoteOwnedDevice.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoIdentity + let remoteDeviceUid = notification.userInfo!["remoteDeviceUid"] as! UID + let createdDuringChannelCreation = notification.userInfo!["createdDuringChannelCreation"] as! Bool + block(ownedCryptoId, remoteDeviceUid, createdDuringChannelCreation) + } + } + + public static func observeAnOwnedDeviceWasUpdated(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity) -> Void) -> NSObjectProtocol { + let name = Name.anOwnedDeviceWasUpdated.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoIdentity + block(ownedCryptoId) + } + } + + public static func observeAnOwnedDeviceWasDeleted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity) -> Void) -> NSObjectProtocol { + let name = Name.anOwnedDeviceWasDeleted.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoIdentity + block(ownedCryptoId) + } + } + + public static func observeNewActiveOwnedIdentity(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, FlowIdentifier) -> Void) -> NSObjectProtocol { + let name = Name.newActiveOwnedIdentity.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let ownedCryptoIdentity = notification.userInfo!["ownedCryptoIdentity"] as! ObvCryptoIdentity + let flowId = notification.userInfo!["flowId"] as! FlowIdentifier + block(ownedCryptoIdentity, flowId) + } + } + } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityNotificationNew.yml b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityNotificationNew.yml deleted file mode 100644 index ad52951d..00000000 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/ObvIdentityNotificationNew.yml +++ /dev/null @@ -1,139 +0,0 @@ -import: - - Foundation - - ObvTypes - - ObvCrypto - - OlvidUtils -options: - - {key: post, value: postOnBackgroundQueue} - - {key: notificationCenterName, value: notificationDelegate} - - {key: notificationCenterType, value: ObvNotificationDelegate} - - {key: visibility, value: public} - - {key: objectInObserve, value: false} -notifications: -- name: contactIdentityIsNowTrusted - params: - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: newOwnedIdentityWithinIdentityManager - params: - - {name: cryptoIdentity, type: ObvCryptoIdentity} -- name: ownedIdentityWasDeactivated - params: - - {name: ownedCryptoIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: ownedIdentityWasReactivated - params: - - {name: ownedCryptoIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: deletedContactDevice - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: contactDeviceUid, type: UID} - - {name: flowId, type: FlowIdentifier} -- name: newContactDevice - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: contactDeviceUid, type: UID} - - {name: flowId, type: FlowIdentifier} -- name: serverLabelHasBeenDeleted - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: label, type: UID} -- name: contactWasDeleted - params: - - {name: ownedCryptoIdentity, type: ObvCryptoIdentity} - - {name: contactCryptoIdentity, type: ObvCryptoIdentity} -- name: latestPhotoOfContactGroupOwnedHasBeenUpdated - params: - - {name: groupUid, type: UID} - - {name: ownedIdentity, type: ObvCryptoIdentity} -- name: publishedPhotoOfContactGroupOwnedHasBeenUpdated - params: - - {name: groupUid, type: UID} - - {name: ownedIdentity, type: ObvCryptoIdentity} -- name: publishedPhotoOfContactGroupJoinedHasBeenUpdated - params: - - {name: groupUid, type: UID} - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: groupOwner, type: ObvCryptoIdentity} -- name: trustedPhotoOfContactGroupJoinedHasBeenUpdated - params: - - {name: groupUid, type: UID} - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: groupOwner, type: ObvCryptoIdentity} -- name: publishedPhotoOfOwnedIdentityHasBeenUpdated - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} -- name: publishedPhotoOfContactIdentityHasBeenUpdated - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} -- name: trustedPhotoOfContactIdentityHasBeenUpdated - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} -- name: ownedIdentityKeycloakServerChanged - params: - - {name: ownedCryptoIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: contactWasUpdatedWithinTheIdentityManager - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: contactIsActiveChanged - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: isActive, type: Bool} - - {name: flowId, type: FlowIdentifier} -- name: contactWasRevokedAsCompromised - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: contactObvCapabilitiesWereUpdated - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: ownedIdentityCapabilitiesWereUpdated - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: contactIdentityOneToOneStatusChanged - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: contactTrustLevelWasIncreased - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: trustLevelOfContactIdentity, type: TrustLevel} - - {name: isOneToOne, type: Bool} - - {name: flowId, type: FlowIdentifier} -- name: groupV2WasCreated - params: - - {name: obvGroupV2, type: ObvGroupV2} - - {name: initiator, type: ObvGroupV2.CreationOrUpdateInitiator} -- name: groupV2WasUpdated - params: - - {name: obvGroupV2, type: ObvGroupV2} - - {name: initiator, type: ObvGroupV2.CreationOrUpdateInitiator} -- name: groupV2WasDeleted - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: appGroupIdentifier, type: Data} -- name: ownedIdentityWasDeleted -- name: contactIsCertifiedByOwnKeycloakStatusChanged - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: newIsCertifiedByOwnKeycloak, type: Bool} -- name: pushTopicOfKeycloakGroupWasUpdated - params: - - {name: ownedCryptoId, type: ObvCryptoIdentity} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/TrustOrigin.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/TrustOrigin.swift index 984bfc73..cdbc644b 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/TrustOrigin.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/TrustOrigin.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/GroupDetailsElements.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/GroupDetailsElements.swift index 31c4f7f6..59d4e8e2 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/GroupDetailsElements.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/GroupDetailsElements.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import ObvTypes import ObvEncoder /// This structure is used within the protocol allowing to publish group details. +/// The equivalent structure under Android is called JsonGroupDetailsWithVersionAndPhoto. public struct GroupDetailsElements: Equatable { public let version: Int @@ -39,6 +40,10 @@ public struct GroupDetailsElements: Equatable { GroupDetailsElements(version: self.version, coreDetails: self.coreDetails, photoServerKeyAndLabel: photoServerKeyAndLabel) } + public func fieldsAreTheSameButVersionIsNotConsidered(than other: GroupDetailsElements) -> Bool { + return self.coreDetails == other.coreDetails && self.photoServerKeyAndLabel == other.photoServerKeyAndLabel + } + } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/GroupV2+Structures.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/GroupV2+Structures.swift index 0bb56f9b..cbbd3d9c 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/GroupV2+Structures.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/GroupV2+Structures.swift @@ -254,6 +254,14 @@ public struct GroupV2 { return !lastBlocks[0].allAdministratorIdentities.subtracting(lastBlocks[1].allAdministratorIdentities).isEmpty } + /// Check whether this administrators chain was created by the given crypto identity. + /// + /// This is equivalent to checking whether the first block of the administrator chain was signed by the given identity. + public func isCreatedBy(_ identity: ObvCryptoIdentity) -> Bool { + guard let firstBlock = blocks.first else { return false } + return firstBlock.signatureOnInnerDataWasComputedBy(identity) + } + // Checking the chain integrity /// Checks the integrity of this `GroupAdministratorsChain` and returns an identical `GroupAdministratorsChain` such that `integrityChecked` is `true`. @@ -323,7 +331,7 @@ public struct GroupV2 { // MARK: - Identifier - public struct Identifier: ObvCodable, ObvErrorMaker, Equatable, Hashable { + public struct Identifier: ObvCodable, ObvErrorMaker, Equatable, Hashable, LosslessStringConvertible { public static let errorDomain = "GroupV2.Identifier" @@ -362,12 +370,37 @@ public struct GroupV2 { } } + + public init?(appGroupIdentifier: Data) { + guard let obvGroupV2Identifier = ObvGroupV2.Identifier(appGroupIdentifier: appGroupIdentifier) else { assertionFailure(); return nil } + self.init(obvGroupV2Identifier: obvGroupV2Identifier) + } + + public var toObvGroupV2Identifier: ObvGroupV2.Identifier { return ObvGroupV2.Identifier(groupUID: groupUID, serverURL: serverURL, category: category.toObvGroupV2IdentifierCategory) } + + public var appGroupIdentifier: Data { + toObvGroupV2Identifier.appGroupIdentifier + } + + // LosslessStringConvertible + + /// This is used in sync snapshots + public var description: String { + appGroupIdentifier.base64EncodedString() + } + + /// This is used in sync snapshots + public init?(_ description: String) { + guard let _appGroupIdentifier = Data(base64Encoded: description) else { assertionFailure(); return nil } + self.init(appGroupIdentifier: _appGroupIdentifier) + } + // ObvCodable public func obvEncode() -> ObvEncoded { @@ -854,7 +887,8 @@ public struct GroupV2 { } - public init(encryptedServerBlob: EncryptedData, blobMainSeed: Seed, blobVersionSeed: Seed, expectedGroupIdentifier: Identifier, solveChallengeDelegate: ObvSolveChallengeDelegate) throws { + + public static func decryptThenCheckSignature(encryptedServerBlob: EncryptedData, blobMainSeed: Seed, blobVersionSeed: Seed, expectedGroupIdentifier: Identifier, solveChallengeDelegate: ObvSolveChallengeDelegate) throws -> (blob: ServerBlob, signer: ObvCryptoIdentity) { guard let authEnc = ObvCryptoSuite.sharedInstance.authenticatedEncryption(forSuiteVersion: 0) else { assertionFailure(); throw Self.makeError(message: "Internal error") } let sharedBlobSecretKey = authEnc.generateKey(with: Seed(seeds: [blobMainSeed, blobVersionSeed])) @@ -923,13 +957,15 @@ public struct GroupV2 { } } - // Return the blob + // Return the blob and the signer + + let blobToReturn = Self.init(administratorsChain: checkedAdministratorsChain, + groupMembers: blob.groupMembers, + groupVersion: blob.groupVersion, + serializedGroupCoreDetails: blob.serializedGroupCoreDetails, + serverPhotoInfo: blob.serverPhotoInfo) - self.init(administratorsChain: checkedAdministratorsChain, - groupMembers: blob.groupMembers, - groupVersion: blob.groupVersion, - serializedGroupCoreDetails: blob.serializedGroupCoreDetails, - serverPhotoInfo: blob.serverPhotoInfo) + return (blobToReturn, signer) } @@ -1127,6 +1163,11 @@ public struct GroupV2 { return self.groupMembers.filter({ $0.identity != ownedIdentity }) } + + public func groupMembersInclude(_ identity: ObvCryptoIdentity) -> Bool { + return groupMembers.first(where: { $0.identity == identity }) != nil + } + } @@ -1292,6 +1333,11 @@ public struct GroupV2 { } + + public func invitersInclude(_ identity: ObvCryptoIdentity) -> Bool { + return inviterIdentityAndBlobMainSeedCandidates.first(where: { $0.key == identity }) != nil + } + } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/IdentityDetailsElements.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/IdentityDetailsElements.swift index 187090d7..5d513425 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/IdentityDetailsElements.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/IdentityDetailsElements.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import ObvTypes import ObvEncoder /// This structure is used to communicate contact identity details informations between the protocol manager and the identity manager. It is also used within the protocol allowing to publish owned details as well as within the channel creation (when sending the ack). +/// The equivalent structure under Android is called JsonIdentityDetailsWithVersionAndPhoto. public struct IdentityDetailsElements { public let version: Int @@ -34,6 +35,12 @@ public struct IdentityDetailsElements { self.coreDetails = coreDetails self.photoServerKeyAndLabel = photoServerKeyAndLabel } + + + public func fieldsAreTheSameButVersionAndSignedDetailsAreNotConsidered(than other: IdentityDetailsElements) -> Bool { + return self.coreDetails.fieldsAreTheSameAndSignedDetailsAreNotConsidered(than: other.coreDetails) && self.photoServerKeyAndLabel == other.photoServerKeyAndLabel + } + } extension IdentityDetailsElements: Codable { diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/OwnedDeviceDiscoveryResult.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/OwnedDeviceDiscoveryResult.swift new file mode 100644 index 00000000..493c0a1e --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvIdentity/Types/OwnedDeviceDiscoveryResult.swift @@ -0,0 +1,167 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import OlvidUtils +import ObvCrypto +import ObvTypes + + +public struct OwnedDeviceDiscoveryResult: ObvErrorMaker { + + public let devices: Set + public let isMultidevice: Bool? + + public static let errorDomain = "OwnedDeviceDiscoveryResult" + + private enum ObvCodingKeys: String, CaseIterable, CodingKey { + case isMultidevice = "multi" + case devices = "dev" + var key: Data { rawValue.data(using: .utf8)! } + } + + public static func decrypt(encryptedOwnedDeviceDiscoveryResult: EncryptedData, for ownedCryptoIdentity: ObvOwnedCryptoIdentity) throws -> Self { + + guard let rawOwnedDeviceDiscoveryResult = PublicKeyEncryption.decrypt(encryptedOwnedDeviceDiscoveryResult, for: ownedCryptoIdentity) else { + assertionFailure() + throw Self.makeError(message: "Could not decrypt the result of the owned device discovery query") + } + + guard let encodedOwnedDeviceDiscoveryResult = ObvEncoded(withRawData: rawOwnedDeviceDiscoveryResult) else { + assertionFailure() + throw Self.makeError(message: "Could not parse the decrypted result of the owned device discovery query") + } + + guard let obvDict = ObvDictionary(encodedOwnedDeviceDiscoveryResult) else { + assertionFailure() + throw Self.makeError(message: "Could not parse dictionary") + } + + return try .init(obvDict: obvDict, for: ownedCryptoIdentity) + } + + + private init(obvDict: ObvDictionary, for ownedCryptoIdentity: ObvOwnedCryptoIdentity) throws { + self.isMultidevice = try obvDict.obvDecodeIfPresent(Bool.self, forKey: ObvCodingKeys.isMultidevice) + self.devices = try Set(obvDict.obvDecode([Device].self, forKey: ObvCodingKeys.devices) + .map { device in + device.withDecryptedName(for: ownedCryptoIdentity) + }) + } + + + public struct Device: Hashable, ObvDecodable { + + public let uid: UID + public let expirationDate: Date? + private let encryptedName: EncryptedData? + public let latestRegistrationDate: Date? + public let name: String? + + + fileprivate func withDecryptedName(for ownedCryptoIdentity: ObvOwnedCryptoIdentity) -> Self { + guard let encryptedName else { return self } + guard let decryptedName = DeviceNameUtils.decrypt(encryptedDeviceName: encryptedName, for: ownedCryptoIdentity) + else { + assertionFailure() + return self + } + return .init( + uid: uid, + expirationDate: expirationDate, + encryptedName: encryptedName, + latestRegistrationDate: latestRegistrationDate, + name: decryptedName) + } + + + private init(uid: UID, expirationDate: Date?, encryptedName: EncryptedData?, latestRegistrationDate: Date?, name: String?) { + self.uid = uid + self.expirationDate = expirationDate + self.encryptedName = encryptedName + self.latestRegistrationDate = latestRegistrationDate + self.name = name + } + + + private enum ObvCodingKeys: String, CaseIterable, CodingKey { + case uid = "uid" + case expirationDate = "exp" + case latestRegistrationDate = "reg" + case encryptedName = "name" + var key: Data { rawValue.data(using: .utf8)! } + } + + + public init?(_ obvEncoded: ObvEncoded) { + guard let obvDict = ObvDictionary(obvEncoded) else { assertionFailure(); return nil } + do { + try self.init(obvDict: obvDict) + } catch { + assertionFailure(error.localizedDescription) + return nil + } + } + + + private init(obvDict: ObvDictionary) throws { + do { + let uid = try obvDict.obvDecode(UID.self, forKey: ObvCodingKeys.uid) + let expirationDate = try obvDict.obvDecodeIfPresent(Date.self, forKey: ObvCodingKeys.expirationDate) + let latestRegistrationDate = try obvDict.obvDecodeIfPresent(Date.self, forKey: ObvCodingKeys.latestRegistrationDate) + let encryptedName = try obvDict.obvDecodeIfPresent(EncryptedData.self, forKey: ObvCodingKeys.encryptedName) + self.init( + uid: uid, + expirationDate: expirationDate, + encryptedName: encryptedName, + latestRegistrationDate: latestRegistrationDate, + name: nil) + } catch { + assertionFailure(error.localizedDescription) + throw error + } + } + + } + +} + + +extension OwnedDeviceDiscoveryResult { + + public var obvOwnedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult { + ObvOwnedDeviceDiscoveryResult( + devices: Set(devices.map({ $0.obvOwnedDeviceDiscoveryResultDevice })), + isMultidevice: isMultidevice ?? false) + } + +} + + +extension OwnedDeviceDiscoveryResult.Device { + + var obvOwnedDeviceDiscoveryResultDevice: ObvOwnedDeviceDiscoveryResult.Device { + .init(identifier: uid.raw, + expirationDate: expirationDate, + latestRegistrationDate: latestRegistrationDate, + name: name) + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchDelegate.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchDelegate.swift index f2d67e4b..a1251f75 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchDelegate.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,27 +30,26 @@ public protocol ObvNetworkFetchDelegate: ObvManager { func updatedListOfOwnedIdentites(ownedIdentities: Set, flowId: FlowIdentifier) func downloadMessages(for ownedIdentity: ObvCryptoIdentity, andDeviceUid deviceUid: UID, flowId: FlowIdentifier) - func getDecryptedMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) -> ObvNetworkReceivedMessageDecrypted? - func allAttachmentsCanBeDownloadedForMessage(withId: MessageIdentifier, within: ObvContext) throws -> Bool - func allAttachmentsHaveBeenDownloadedForMessage(withId: MessageIdentifier, within: ObvContext) throws -> Bool - func attachment(withId: AttachmentIdentifier, canBeDownloadedwithin: ObvContext) throws -> Bool + func getDecryptedMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) -> ObvNetworkReceivedMessageDecrypted? + func allAttachmentsCanBeDownloadedForMessage(withId: ObvMessageIdentifier, within: ObvContext) throws -> Bool + func allAttachmentsHaveBeenDownloadedForMessage(withId: ObvMessageIdentifier, within: ObvContext) throws -> Bool + func attachment(withId: ObvAttachmentIdentifier, canBeDownloadedwithin: ObvContext) throws -> Bool - func setRemoteCryptoIdentity(_ remoteCryptoIdentity: ObvCryptoIdentity, messagePayload: Data, extendedMessagePayloadKey: AuthenticatedEncryptionKey?, andAttachmentsInfos: [ObvNetworkFetchAttachmentInfos], forApplicationMessageWithmessageId: MessageIdentifier, within obvContext: ObvContext) throws + func setRemoteCryptoIdentity(_ remoteCryptoIdentity: ObvCryptoIdentity, messagePayload: Data, extendedMessagePayloadKey: AuthenticatedEncryptionKey?, andAttachmentsInfos: [ObvNetworkFetchAttachmentInfos], forApplicationMessageWithmessageId: ObvMessageIdentifier, within obvContext: ObvContext) throws - func getAttachment(withId attachmentId: AttachmentIdentifier, within obvContext: ObvContext) -> ObvNetworkFetchReceivedAttachment? + func getAttachment(withId attachmentId: ObvAttachmentIdentifier, within obvContext: ObvContext) -> ObvNetworkFetchReceivedAttachment? func backgroundURLSessionIdentifierIsAppropriate(backgroundURLSessionIdentifier: String) -> Bool func processCompletionHandler(_: @escaping () -> Void, forHandlingEventsForBackgroundURLSessionWithIdentifier: String, withinFlowId: FlowIdentifier) - func deleteMessageAndAttachments(messageId: MessageIdentifier, within: ObvContext) - func markMessageForDeletion(messageId: MessageIdentifier, within: ObvContext) - func markAttachmentForDeletion(attachmentId: AttachmentIdentifier, within: ObvContext) - func resumeDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func pauseDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] + func deleteMessageAndAttachments(messageId: ObvMessageIdentifier, within: ObvContext) + func markMessageForDeletion(messageId: ObvMessageIdentifier, within: ObvContext) + func markAttachmentForDeletion(attachmentId: ObvAttachmentIdentifier, within: ObvContext) + func resumeDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, forceResume: Bool, flowId: FlowIdentifier) + func pauseDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] - func registerPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier) - func getServerPushNotification(ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvPushNotificationType? + func registerPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier) async throws func sendDeleteReturnReceipt(ownedIdentity: ObvCryptoIdentity, serverUid: UID) async throws @@ -58,16 +57,22 @@ public protocol ObvNetworkFetchDelegate: ObvManager { func connectWebsockets(flowId: FlowIdentifier) async func disconnectWebsockets(flowId: FlowIdentifier) async - func getTurnCredentials(ownedIdenty: ObvCryptoIdentity, callUuid: UUID, username1: String, username2: String, flowId: FlowIdentifier) + func getTurnCredentials(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> ObvTurnCredentials - func queryAPIKeyStatus(for identity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) - func resetServerSession(for identity: ObvCryptoIdentity, within obvContext: ObvContext) throws - func queryFreeTrial(for identity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier) - func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) + func refreshAPIPermissions(of ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements + func queryAPIKeyStatus(for identity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> APIKeyElements + func registerOwnedAPIKeyOnServerNow(ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> ObvRegisterApiKeyResult + func queryFreeTrial(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> Bool + func startFreeTrial(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements + func verifyReceiptAndRefreshAPIPermissions(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier) async throws -> [ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus] + // func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) func queryServerWellKnown(serverURL: URL, flowId: FlowIdentifier) func postServerQuery(_: ServerQuery, within: ObvContext) func prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws + func finalizeOwnedIdentityDeletion(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws + + func performOwnedDeviceDiscoveryNow(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> EncryptedData } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchError.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchError.swift new file mode 100644 index 00000000..a8ec802d --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchError.swift @@ -0,0 +1,54 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +public struct ObvNetworkFetchError { + + private static let descriptionPrefix = "[ObvNetworkFetchError]" + + public enum RegisterPushNotificationError: LocalizedError { + + case anotherDeviceIsAlreadyRegistered + case couldNotParseReturnStatusFromServer + case deviceToReplaceIsNotRegistered + case invalidServerResponse + case theDelegateManagerIsNotSet + + private static let descriptionPrefix = "[RegisterPushNotificationError]" + + public var errorDescription: String? { + let description: String + switch self { + case .anotherDeviceIsAlreadyRegistered: + description = "Another device is already registered" + case .couldNotParseReturnStatusFromServer: + description = "Could not parse the status returned by the server" + case .deviceToReplaceIsNotRegistered: + description = "Device to replace is not registered" + case .invalidServerResponse: + description = "Invalid server response" + case .theDelegateManagerIsNotSet: + description = "The delegate manager is not set" + } + return [ObvNetworkFetchError.descriptionPrefix, Self.descriptionPrefix, description].joined(separator: " ") + } + } +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotification.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotification.swift index 2fb7819e..98d2f728 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotification.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotification.swift @@ -32,10 +32,10 @@ public struct ObvNetworkFetchNotification { public static let messageId = "messageId" public static let flowId = "flowId" } - public static func parse(_ notification: Notification) -> (messageId: MessageIdentifier, flowId: FlowIdentifier)? { + public static func parse(_ notification: Notification) -> (messageId: ObvMessageIdentifier, flowId: FlowIdentifier)? { guard notification.name == name else { return nil } guard let userInfo = notification.userInfo else { return nil } - guard let messageId = userInfo[Key.messageId] as? MessageIdentifier else { return nil } + guard let messageId = userInfo[Key.messageId] as? ObvMessageIdentifier else { return nil } guard let flowId = userInfo[Key.flowId] as? FlowIdentifier else { return nil } return (messageId, flowId) } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotificationNew.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotificationNew.swift index 43fe4950..621b3b62 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotificationNew.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotificationNew.swift @@ -33,43 +33,28 @@ fileprivate struct OptionalWrapper { } public enum ObvNetworkFetchNotificationNew { - case serverReportedThatAnotherDeviceIsAlreadyRegistered(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) - case serverReportedThatThisDeviceWasSuccessfullyRegistered(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) case fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) case serverRequiresThisDeviceToRegisterToPushNotifications(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) - case inboxAttachmentWasDownloaded(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - case inboxAttachmentDownloadCancelledByServer(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - case inboxAttachmentDownloadWasResumed(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - case inboxAttachmentDownloadWasPaused(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - case inboxAttachmentWasTakenCareOf(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) + case inboxAttachmentWasDownloaded(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + case inboxAttachmentDownloadCancelledByServer(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + case inboxAttachmentDownloadWasResumed(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + case inboxAttachmentDownloadWasPaused(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + case inboxAttachmentWasTakenCareOf(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) case noInboxMessageToProcess(flowId: FlowIdentifier, ownedCryptoIdentity: ObvCryptoIdentity) - case newInboxMessageToProcess(messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier], flowId: FlowIdentifier) - case turnCredentialsReceived(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, turnCredentialsWithTurnServers: TurnCredentialsWithTurnServers, flowId: FlowIdentifier) - case turnCredentialsReceptionFailure(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, flowId: FlowIdentifier) - case turnCredentialsReceptionPermissionDenied(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, flowId: FlowIdentifier) - case turnCredentialServerDoesNotSupportCalls(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, flowId: FlowIdentifier) - case cannotReturnAnyProgressForMessageAttachments(messageId: MessageIdentifier, flowId: FlowIdentifier) + case newInboxMessageToProcess(messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier], flowId: FlowIdentifier) + case cannotReturnAnyProgressForMessageAttachments(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) case newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(ownedIdentity: ObvCryptoIdentity, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?) - case newAPIKeyElementsForAPIKey(serverURL: URL, apiKey: UUID, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?) - case newFreeTrialAPIKeyForOwnedIdentity(ownedIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) - case noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) - case freeTrialIsStillAvailableForOwnedIdentity(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) - case appStoreReceiptVerificationFailed(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, flowId: FlowIdentifier) - case appStoreReceiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, apiKey: UUID, flowId: FlowIdentifier) - case appStoreReceiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, flowId: FlowIdentifier) case wellKnownHasBeenUpdated(serverURL: URL, appInfo: [String: AppInfo], flowId: FlowIdentifier) case wellKnownHasBeenDownloaded(serverURL: URL, appInfo: [String: AppInfo], flowId: FlowIdentifier) case wellKnownDownloadFailure(serverURL: URL, flowId: FlowIdentifier) - case apiKeyStatusQueryFailed(ownedIdentity: ObvCryptoIdentity, apiKey: UUID) - case applicationMessageDecrypted(messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier], hasEncryptedExtendedMessagePayload: Bool, flowId: FlowIdentifier) - case downloadingMessageExtendedPayloadWasPerformed(messageId: MessageIdentifier, flowId: FlowIdentifier) - case downloadingMessageExtendedPayloadFailed(messageId: MessageIdentifier, flowId: FlowIdentifier) + case applicationMessageDecrypted(messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier], hasEncryptedExtendedMessagePayload: Bool, flowId: FlowIdentifier) + case downloadingMessageExtendedPayloadWasPerformed(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) + case downloadingMessageExtendedPayloadFailed(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) case pushTopicReceivedViaWebsocket(pushTopic: String) case keycloakTargetedPushNotificationReceivedViaWebsocket(ownedIdentity: ObvCryptoIdentity) + case ownedDevicesMessageReceivedViaWebsocket(ownedIdentity: ObvCryptoIdentity) private enum Name { - case serverReportedThatAnotherDeviceIsAlreadyRegistered - case serverReportedThatThisDeviceWasSuccessfullyRegistered case fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive case serverRequiresThisDeviceToRegisterToPushNotifications case inboxAttachmentWasDownloaded @@ -79,28 +64,17 @@ public enum ObvNetworkFetchNotificationNew { case inboxAttachmentWasTakenCareOf case noInboxMessageToProcess case newInboxMessageToProcess - case turnCredentialsReceived - case turnCredentialsReceptionFailure - case turnCredentialsReceptionPermissionDenied - case turnCredentialServerDoesNotSupportCalls case cannotReturnAnyProgressForMessageAttachments case newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity - case newAPIKeyElementsForAPIKey - case newFreeTrialAPIKeyForOwnedIdentity - case noMoreFreeTrialAPIKeyAvailableForOwnedIdentity - case freeTrialIsStillAvailableForOwnedIdentity - case appStoreReceiptVerificationFailed - case appStoreReceiptVerificationSucceededAndSubscriptionIsValid - case appStoreReceiptVerificationSucceededButSubscriptionIsExpired case wellKnownHasBeenUpdated case wellKnownHasBeenDownloaded case wellKnownDownloadFailure - case apiKeyStatusQueryFailed case applicationMessageDecrypted case downloadingMessageExtendedPayloadWasPerformed case downloadingMessageExtendedPayloadFailed case pushTopicReceivedViaWebsocket case keycloakTargetedPushNotificationReceivedViaWebsocket + case ownedDevicesMessageReceivedViaWebsocket private var namePrefix: String { String(describing: ObvNetworkFetchNotificationNew.self) } @@ -113,8 +87,6 @@ public enum ObvNetworkFetchNotificationNew { static func forInternalNotification(_ notification: ObvNetworkFetchNotificationNew) -> NSNotification.Name { switch notification { - case .serverReportedThatAnotherDeviceIsAlreadyRegistered: return Name.serverReportedThatAnotherDeviceIsAlreadyRegistered.name - case .serverReportedThatThisDeviceWasSuccessfullyRegistered: return Name.serverReportedThatThisDeviceWasSuccessfullyRegistered.name case .fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive: return Name.fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive.name case .serverRequiresThisDeviceToRegisterToPushNotifications: return Name.serverRequiresThisDeviceToRegisterToPushNotifications.name case .inboxAttachmentWasDownloaded: return Name.inboxAttachmentWasDownloaded.name @@ -124,44 +96,23 @@ public enum ObvNetworkFetchNotificationNew { case .inboxAttachmentWasTakenCareOf: return Name.inboxAttachmentWasTakenCareOf.name case .noInboxMessageToProcess: return Name.noInboxMessageToProcess.name case .newInboxMessageToProcess: return Name.newInboxMessageToProcess.name - case .turnCredentialsReceived: return Name.turnCredentialsReceived.name - case .turnCredentialsReceptionFailure: return Name.turnCredentialsReceptionFailure.name - case .turnCredentialsReceptionPermissionDenied: return Name.turnCredentialsReceptionPermissionDenied.name - case .turnCredentialServerDoesNotSupportCalls: return Name.turnCredentialServerDoesNotSupportCalls.name case .cannotReturnAnyProgressForMessageAttachments: return Name.cannotReturnAnyProgressForMessageAttachments.name case .newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity: return Name.newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity.name - case .newAPIKeyElementsForAPIKey: return Name.newAPIKeyElementsForAPIKey.name - case .newFreeTrialAPIKeyForOwnedIdentity: return Name.newFreeTrialAPIKeyForOwnedIdentity.name - case .noMoreFreeTrialAPIKeyAvailableForOwnedIdentity: return Name.noMoreFreeTrialAPIKeyAvailableForOwnedIdentity.name - case .freeTrialIsStillAvailableForOwnedIdentity: return Name.freeTrialIsStillAvailableForOwnedIdentity.name - case .appStoreReceiptVerificationFailed: return Name.appStoreReceiptVerificationFailed.name - case .appStoreReceiptVerificationSucceededAndSubscriptionIsValid: return Name.appStoreReceiptVerificationSucceededAndSubscriptionIsValid.name - case .appStoreReceiptVerificationSucceededButSubscriptionIsExpired: return Name.appStoreReceiptVerificationSucceededButSubscriptionIsExpired.name case .wellKnownHasBeenUpdated: return Name.wellKnownHasBeenUpdated.name case .wellKnownHasBeenDownloaded: return Name.wellKnownHasBeenDownloaded.name case .wellKnownDownloadFailure: return Name.wellKnownDownloadFailure.name - case .apiKeyStatusQueryFailed: return Name.apiKeyStatusQueryFailed.name case .applicationMessageDecrypted: return Name.applicationMessageDecrypted.name case .downloadingMessageExtendedPayloadWasPerformed: return Name.downloadingMessageExtendedPayloadWasPerformed.name case .downloadingMessageExtendedPayloadFailed: return Name.downloadingMessageExtendedPayloadFailed.name case .pushTopicReceivedViaWebsocket: return Name.pushTopicReceivedViaWebsocket.name case .keycloakTargetedPushNotificationReceivedViaWebsocket: return Name.keycloakTargetedPushNotificationReceivedViaWebsocket.name + case .ownedDevicesMessageReceivedViaWebsocket: return Name.ownedDevicesMessageReceivedViaWebsocket.name } } } private var userInfo: [AnyHashable: Any]? { let info: [AnyHashable: Any]? switch self { - case .serverReportedThatAnotherDeviceIsAlreadyRegistered(ownedIdentity: let ownedIdentity, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "flowId": flowId, - ] - case .serverReportedThatThisDeviceWasSuccessfullyRegistered(ownedIdentity: let ownedIdentity, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "flowId": flowId, - ] case .fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive(ownedIdentity: let ownedIdentity, flowId: let flowId): info = [ "ownedIdentity": ownedIdentity, @@ -208,31 +159,6 @@ public enum ObvNetworkFetchNotificationNew { "attachmentIds": attachmentIds, "flowId": flowId, ] - case .turnCredentialsReceived(ownedIdentity: let ownedIdentity, callUuid: let callUuid, turnCredentialsWithTurnServers: let turnCredentialsWithTurnServers, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "callUuid": callUuid, - "turnCredentialsWithTurnServers": turnCredentialsWithTurnServers, - "flowId": flowId, - ] - case .turnCredentialsReceptionFailure(ownedIdentity: let ownedIdentity, callUuid: let callUuid, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "callUuid": callUuid, - "flowId": flowId, - ] - case .turnCredentialsReceptionPermissionDenied(ownedIdentity: let ownedIdentity, callUuid: let callUuid, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "callUuid": callUuid, - "flowId": flowId, - ] - case .turnCredentialServerDoesNotSupportCalls(ownedIdentity: let ownedIdentity, callUuid: let callUuid, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "callUuid": callUuid, - "flowId": flowId, - ] case .cannotReturnAnyProgressForMessageAttachments(messageId: let messageId, flowId: let flowId): info = [ "messageId": messageId, @@ -245,49 +171,6 @@ public enum ObvNetworkFetchNotificationNew { "apiPermissions": apiPermissions, "apiKeyExpirationDate": OptionalWrapper(apiKeyExpirationDate), ] - case .newAPIKeyElementsForAPIKey(serverURL: let serverURL, apiKey: let apiKey, apiKeyStatus: let apiKeyStatus, apiPermissions: let apiPermissions, apiKeyExpirationDate: let apiKeyExpirationDate): - info = [ - "serverURL": serverURL, - "apiKey": apiKey, - "apiKeyStatus": apiKeyStatus, - "apiPermissions": apiPermissions, - "apiKeyExpirationDate": OptionalWrapper(apiKeyExpirationDate), - ] - case .newFreeTrialAPIKeyForOwnedIdentity(ownedIdentity: let ownedIdentity, apiKey: let apiKey, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "apiKey": apiKey, - "flowId": flowId, - ] - case .noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity: let ownedIdentity, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "flowId": flowId, - ] - case .freeTrialIsStillAvailableForOwnedIdentity(ownedIdentity: let ownedIdentity, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "flowId": flowId, - ] - case .appStoreReceiptVerificationFailed(ownedIdentity: let ownedIdentity, transactionIdentifier: let transactionIdentifier, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "transactionIdentifier": transactionIdentifier, - "flowId": flowId, - ] - case .appStoreReceiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: let ownedIdentity, transactionIdentifier: let transactionIdentifier, apiKey: let apiKey, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "transactionIdentifier": transactionIdentifier, - "apiKey": apiKey, - "flowId": flowId, - ] - case .appStoreReceiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: let ownedIdentity, transactionIdentifier: let transactionIdentifier, flowId: let flowId): - info = [ - "ownedIdentity": ownedIdentity, - "transactionIdentifier": transactionIdentifier, - "flowId": flowId, - ] case .wellKnownHasBeenUpdated(serverURL: let serverURL, appInfo: let appInfo, flowId: let flowId): info = [ "serverURL": serverURL, @@ -305,11 +188,6 @@ public enum ObvNetworkFetchNotificationNew { "serverURL": serverURL, "flowId": flowId, ] - case .apiKeyStatusQueryFailed(ownedIdentity: let ownedIdentity, apiKey: let apiKey): - info = [ - "ownedIdentity": ownedIdentity, - "apiKey": apiKey, - ] case .applicationMessageDecrypted(messageId: let messageId, attachmentIds: let attachmentIds, hasEncryptedExtendedMessagePayload: let hasEncryptedExtendedMessagePayload, flowId: let flowId): info = [ "messageId": messageId, @@ -335,6 +213,10 @@ public enum ObvNetworkFetchNotificationNew { info = [ "ownedIdentity": ownedIdentity, ] + case .ownedDevicesMessageReceivedViaWebsocket(ownedIdentity: let ownedIdentity): + info = [ + "ownedIdentity": ownedIdentity, + ] } return info } @@ -348,24 +230,6 @@ public enum ObvNetworkFetchNotificationNew { } } - public static func observeServerReportedThatAnotherDeviceIsAlreadyRegistered(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.serverReportedThatAnotherDeviceIsAlreadyRegistered.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, flowId) - } - } - - public static func observeServerReportedThatThisDeviceWasSuccessfullyRegistered(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.serverReportedThatThisDeviceWasSuccessfullyRegistered.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, flowId) - } - } - public static func observeFetchNetworkOperationFailedSinceOwnedIdentityIsNotActive(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in @@ -384,46 +248,46 @@ public enum ObvNetworkFetchNotificationNew { } } - public static func observeInboxAttachmentWasDownloaded(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (AttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeInboxAttachmentWasDownloaded(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvAttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.inboxAttachmentWasDownloaded.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let attachmentId = notification.userInfo!["attachmentId"] as! AttachmentIdentifier + let attachmentId = notification.userInfo!["attachmentId"] as! ObvAttachmentIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(attachmentId, flowId) } } - public static func observeInboxAttachmentDownloadCancelledByServer(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (AttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeInboxAttachmentDownloadCancelledByServer(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvAttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.inboxAttachmentDownloadCancelledByServer.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let attachmentId = notification.userInfo!["attachmentId"] as! AttachmentIdentifier + let attachmentId = notification.userInfo!["attachmentId"] as! ObvAttachmentIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(attachmentId, flowId) } } - public static func observeInboxAttachmentDownloadWasResumed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (AttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeInboxAttachmentDownloadWasResumed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvAttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.inboxAttachmentDownloadWasResumed.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let attachmentId = notification.userInfo!["attachmentId"] as! AttachmentIdentifier + let attachmentId = notification.userInfo!["attachmentId"] as! ObvAttachmentIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(attachmentId, flowId) } } - public static func observeInboxAttachmentDownloadWasPaused(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (AttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeInboxAttachmentDownloadWasPaused(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvAttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.inboxAttachmentDownloadWasPaused.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let attachmentId = notification.userInfo!["attachmentId"] as! AttachmentIdentifier + let attachmentId = notification.userInfo!["attachmentId"] as! ObvAttachmentIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(attachmentId, flowId) } } - public static func observeInboxAttachmentWasTakenCareOf(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (AttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeInboxAttachmentWasTakenCareOf(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvAttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.inboxAttachmentWasTakenCareOf.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let attachmentId = notification.userInfo!["attachmentId"] as! AttachmentIdentifier + let attachmentId = notification.userInfo!["attachmentId"] as! ObvAttachmentIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(attachmentId, flowId) } @@ -438,61 +302,20 @@ public enum ObvNetworkFetchNotificationNew { } } - public static func observeNewInboxMessageToProcess(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, [AttachmentIdentifier], FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeNewInboxMessageToProcess(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, [ObvAttachmentIdentifier], FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.newInboxMessageToProcess.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier - let attachmentIds = notification.userInfo!["attachmentIds"] as! [AttachmentIdentifier] + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier + let attachmentIds = notification.userInfo!["attachmentIds"] as! [ObvAttachmentIdentifier] let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageId, attachmentIds, flowId) } } - public static func observeTurnCredentialsReceived(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, UUID, TurnCredentialsWithTurnServers, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.turnCredentialsReceived.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let callUuid = notification.userInfo!["callUuid"] as! UUID - let turnCredentialsWithTurnServers = notification.userInfo!["turnCredentialsWithTurnServers"] as! TurnCredentialsWithTurnServers - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, callUuid, turnCredentialsWithTurnServers, flowId) - } - } - - public static func observeTurnCredentialsReceptionFailure(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, UUID, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.turnCredentialsReceptionFailure.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let callUuid = notification.userInfo!["callUuid"] as! UUID - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, callUuid, flowId) - } - } - - public static func observeTurnCredentialsReceptionPermissionDenied(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, UUID, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.turnCredentialsReceptionPermissionDenied.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let callUuid = notification.userInfo!["callUuid"] as! UUID - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, callUuid, flowId) - } - } - - public static func observeTurnCredentialServerDoesNotSupportCalls(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, UUID, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.turnCredentialServerDoesNotSupportCalls.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let callUuid = notification.userInfo!["callUuid"] as! UUID - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, callUuid, flowId) - } - } - - public static func observeCannotReturnAnyProgressForMessageAttachments(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeCannotReturnAnyProgressForMessageAttachments(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.cannotReturnAnyProgressForMessageAttachments.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageId, flowId) } @@ -510,78 +333,6 @@ public enum ObvNetworkFetchNotificationNew { } } - public static func observeNewAPIKeyElementsForAPIKey(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (URL, UUID, APIKeyStatus, APIPermissions, Date?) -> Void) -> NSObjectProtocol { - let name = Name.newAPIKeyElementsForAPIKey.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let serverURL = notification.userInfo!["serverURL"] as! URL - let apiKey = notification.userInfo!["apiKey"] as! UUID - let apiKeyStatus = notification.userInfo!["apiKeyStatus"] as! APIKeyStatus - let apiPermissions = notification.userInfo!["apiPermissions"] as! APIPermissions - let apiKeyExpirationDateWrapper = notification.userInfo!["apiKeyExpirationDate"] as! OptionalWrapper - let apiKeyExpirationDate = apiKeyExpirationDateWrapper.value - block(serverURL, apiKey, apiKeyStatus, apiPermissions, apiKeyExpirationDate) - } - } - - public static func observeNewFreeTrialAPIKeyForOwnedIdentity(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, UUID, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.newFreeTrialAPIKeyForOwnedIdentity.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let apiKey = notification.userInfo!["apiKey"] as! UUID - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, apiKey, flowId) - } - } - - public static func observeNoMoreFreeTrialAPIKeyAvailableForOwnedIdentity(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.noMoreFreeTrialAPIKeyAvailableForOwnedIdentity.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, flowId) - } - } - - public static func observeFreeTrialIsStillAvailableForOwnedIdentity(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.freeTrialIsStillAvailableForOwnedIdentity.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, flowId) - } - } - - public static func observeAppStoreReceiptVerificationFailed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, String, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.appStoreReceiptVerificationFailed.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let transactionIdentifier = notification.userInfo!["transactionIdentifier"] as! String - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, transactionIdentifier, flowId) - } - } - - public static func observeAppStoreReceiptVerificationSucceededAndSubscriptionIsValid(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, String, UUID, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.appStoreReceiptVerificationSucceededAndSubscriptionIsValid.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let transactionIdentifier = notification.userInfo!["transactionIdentifier"] as! String - let apiKey = notification.userInfo!["apiKey"] as! UUID - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, transactionIdentifier, apiKey, flowId) - } - } - - public static func observeAppStoreReceiptVerificationSucceededButSubscriptionIsExpired(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, String, FlowIdentifier) -> Void) -> NSObjectProtocol { - let name = Name.appStoreReceiptVerificationSucceededButSubscriptionIsExpired.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let transactionIdentifier = notification.userInfo!["transactionIdentifier"] as! String - let flowId = notification.userInfo!["flowId"] as! FlowIdentifier - block(ownedIdentity, transactionIdentifier, flowId) - } - } - public static func observeWellKnownHasBeenUpdated(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (URL, [String: AppInfo], FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.wellKnownHasBeenUpdated.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in @@ -611,39 +362,30 @@ public enum ObvNetworkFetchNotificationNew { } } - public static func observeApiKeyStatusQueryFailed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, UUID) -> Void) -> NSObjectProtocol { - let name = Name.apiKeyStatusQueryFailed.name - return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity - let apiKey = notification.userInfo!["apiKey"] as! UUID - block(ownedIdentity, apiKey) - } - } - - public static func observeApplicationMessageDecrypted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, [AttachmentIdentifier], Bool, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeApplicationMessageDecrypted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, [ObvAttachmentIdentifier], Bool, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.applicationMessageDecrypted.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier - let attachmentIds = notification.userInfo!["attachmentIds"] as! [AttachmentIdentifier] + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier + let attachmentIds = notification.userInfo!["attachmentIds"] as! [ObvAttachmentIdentifier] let hasEncryptedExtendedMessagePayload = notification.userInfo!["hasEncryptedExtendedMessagePayload"] as! Bool let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageId, attachmentIds, hasEncryptedExtendedMessagePayload, flowId) } } - public static func observeDownloadingMessageExtendedPayloadWasPerformed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeDownloadingMessageExtendedPayloadWasPerformed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.downloadingMessageExtendedPayloadWasPerformed.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageId, flowId) } } - public static func observeDownloadingMessageExtendedPayloadFailed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeDownloadingMessageExtendedPayloadFailed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.downloadingMessageExtendedPayloadFailed.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageId, flowId) } @@ -665,4 +407,12 @@ public enum ObvNetworkFetchNotificationNew { } } + public static func observeOwnedDevicesMessageReceivedViaWebsocket(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity) -> Void) -> NSObjectProtocol { + let name = Name.ownedDevicesMessageReceivedViaWebsocket.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity + block(ownedIdentity) + } + } + } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotificationNew.yml b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotificationNew.yml deleted file mode 100644 index fb56c00c..00000000 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/ObvNetworkFetchNotificationNew.yml +++ /dev/null @@ -1,162 +0,0 @@ -import: - - Foundation - - ObvCrypto - - ObvTypes - - OlvidUtils -options: - - {key: post, value: postOnBackgroundQueue} - - {key: notificationCenterName, value: notificationDelegate} - - {key: notificationCenterType, value: ObvNotificationDelegate} - - {key: visibility, value: public} - - {key: objectInObserve, value: false} -notifications: -- name: serverReportedThatAnotherDeviceIsAlreadyRegistered - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: serverReportedThatThisDeviceWasSuccessfullyRegistered - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: serverRequiresThisDeviceToRegisterToPushNotifications - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: inboxAttachmentWasDownloaded - params: - - {name: attachmentId, type: AttachmentIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: inboxAttachmentDownloadCancelledByServer - params: - - {name: attachmentId, type: AttachmentIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: inboxAttachmentDownloadWasResumed - params: - - {name: attachmentId, type: AttachmentIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: inboxAttachmentDownloadWasPaused - params: - - {name: attachmentId, type: AttachmentIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: inboxAttachmentWasTakenCareOf - params: - - {name: attachmentId, type: AttachmentIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: noInboxMessageToProcess - params: - - {name: flowId, type: FlowIdentifier} - - {name: ownedCryptoIdentity, type: ObvCryptoIdentity} -- name: newInboxMessageToProcess - params: - - {name: messageId, type: MessageIdentifier} - - {name: attachmentIds, type: [AttachmentIdentifier]} - - {name: flowId, type: FlowIdentifier} -- name: turnCredentialsReceived - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: callUuid, type: UUID} - - {name: turnCredentialsWithTurnServers, type: TurnCredentialsWithTurnServers} - - {name: flowId, type: FlowIdentifier} -- name: turnCredentialsReceptionFailure - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: callUuid, type: UUID} - - {name: flowId, type: FlowIdentifier} -- name: turnCredentialsReceptionPermissionDenied - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: callUuid, type: UUID} - - {name: flowId, type: FlowIdentifier} -- name: turnCredentialServerDoesNotSupportCalls - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: callUuid, type: UUID} - - {name: flowId, type: FlowIdentifier} -- name: cannotReturnAnyProgressForMessageAttachments - params: - - {name: messageId, type: MessageIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: apiKeyStatus, type: APIKeyStatus} - - {name: apiPermissions, type: APIPermissions} - - {name: apiKeyExpirationDate, type: "Date?"} -- name: newAPIKeyElementsForAPIKey - params: - - {name: serverURL, type: URL} - - {name: apiKey, type: UUID} - - {name: apiKeyStatus, type: APIKeyStatus} - - {name: apiPermissions, type: APIPermissions} - - {name: apiKeyExpirationDate, type: "Date?"} -- name: newFreeTrialAPIKeyForOwnedIdentity - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: apiKey, type: UUID} - - {name: flowId, type: FlowIdentifier} -- name: noMoreFreeTrialAPIKeyAvailableForOwnedIdentity - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: freeTrialIsStillAvailableForOwnedIdentity - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: appStoreReceiptVerificationFailed - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: transactionIdentifier, type: String} - - {name: flowId, type: FlowIdentifier} -- name: appStoreReceiptVerificationSucceededAndSubscriptionIsValid - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: transactionIdentifier, type: String} - - {name: apiKey, type: UUID} - - {name: flowId, type: FlowIdentifier} -- name: appStoreReceiptVerificationSucceededButSubscriptionIsExpired - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: transactionIdentifier, type: String} - - {name: flowId, type: FlowIdentifier} -- name: wellKnownHasBeenUpdated - params: - - {name: serverURL, type: URL} - - {name: appInfo, type: "[String: AppInfo]"} - - {name: flowId, type: FlowIdentifier} -- name: wellKnownHasBeenDownloaded - params: - - {name: serverURL, type: URL} - - {name: appInfo, type: "[String: AppInfo]"} - - {name: flowId, type: FlowIdentifier} -- name: wellKnownDownloadFailure - params: - - {name: serverURL, type: URL} - - {name: flowId, type: FlowIdentifier} -- name: apiKeyStatusQueryFailed - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: apiKey, type: UUID} -- name: applicationMessageDecrypted - params: - - {name: messageId, type: MessageIdentifier} - - {name: attachmentIds, type: [AttachmentIdentifier]} - - {name: hasEncryptedExtendedMessagePayload, type: Bool} - - {name: flowId, type: FlowIdentifier} -- name: downloadingMessageExtendedPayloadWasPerformed - params: - - {name: messageId, type: MessageIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: downloadingMessageExtendedPayloadFailed - params: - - {name: messageId, type: MessageIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: pushTopicReceivedViaWebsocket - params: - - {name: pushTopic, type: String} -- name: keycloakTargetedPushNotificationReceivedViaWebsocket - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkFetchReceivedAttachment.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkFetchReceivedAttachment.swift index d2d17096..b66141ac 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkFetchReceivedAttachment.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkFetchReceivedAttachment.swift @@ -44,7 +44,7 @@ public struct ObvNetworkFetchReceivedAttachment { public let fromCryptoIdentity: ObvCryptoIdentity - public let attachmentId: AttachmentIdentifier + public let attachmentId: ObvAttachmentIdentifier public let metadata: Data public let totalUnitCount: Int64 // Bytes of the plaintext public let url: URL @@ -52,7 +52,7 @@ public struct ObvNetworkFetchReceivedAttachment { public let messageUploadTimestampFromServer: Date public let downloadTimestampFromServer: Date - public init(fromCryptoIdentity: ObvCryptoIdentity, attachmentId: AttachmentIdentifier, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, metadata: Data, totalUnitCount: Int64, url: URL, status: Status) { + public init(fromCryptoIdentity: ObvCryptoIdentity, attachmentId: ObvAttachmentIdentifier, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, metadata: Data, totalUnitCount: Int64, url: URL, status: Status) { self.fromCryptoIdentity = fromCryptoIdentity self.attachmentId = attachmentId self.metadata = metadata diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkReceivedMessageDecrypted.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkReceivedMessageDecrypted.swift index 9a791a97..e3fef3e0 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkReceivedMessageDecrypted.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkReceivedMessageDecrypted.swift @@ -22,8 +22,8 @@ import ObvCrypto import ObvTypes public struct ObvNetworkReceivedMessageDecrypted { - public let messageId: MessageIdentifier - public let attachmentIds: [AttachmentIdentifier] + public let messageId: ObvMessageIdentifier + public let attachmentIds: [ObvAttachmentIdentifier] public let fromIdentity: ObvCryptoIdentity public let messagePayload: Data public let messageUploadTimestampFromServer: Date @@ -31,7 +31,7 @@ public struct ObvNetworkReceivedMessageDecrypted { public let localDownloadTimestamp: Date public let extendedMessagePayload: Data? - public init(messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier], fromIdentity: ObvCryptoIdentity, messagePayload: Data, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, extendedMessagePayload: Data?) { + public init(messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier], fromIdentity: ObvCryptoIdentity, messagePayload: Data, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, extendedMessagePayload: Data?) { self.messageId = messageId self.attachmentIds = attachmentIds self.fromIdentity = fromIdentity diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkReceivedMessageEncrypted.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkReceivedMessageEncrypted.swift index f88c12cc..fe3d89b1 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkReceivedMessageEncrypted.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkFetchDelegate/Types/ObvNetworkReceivedMessageEncrypted.swift @@ -24,7 +24,7 @@ import ObvTypes /// This struct represents an encrypted message received through the network, either via a push notification (in which case the number of attachments is not known, and the encryptedExtendedContent may be available) or via the normal connection we have with the server (in which case the number of attachments is known, while the encrypted content is not available as it is downloaded asynchronously). public struct ObvNetworkReceivedMessageEncrypted: Hashable { - public let messageId: MessageIdentifier + public let messageId: ObvMessageIdentifier public let encryptedContent: EncryptedData public let knownAttachmentCount: Int? public let messageUploadTimestampFromServer: Date @@ -33,7 +33,7 @@ public struct ObvNetworkReceivedMessageEncrypted: Hashable { public let wrappedKey: EncryptedData public let availableEncryptedExtendedContent: EncryptedData? - public init(messageId: MessageIdentifier, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, encryptedContent: EncryptedData, wrappedKey: EncryptedData, knownAttachmentCount: Int?, availableEncryptedExtendedContent: EncryptedData?) { + public init(messageId: ObvMessageIdentifier, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, encryptedContent: EncryptedData, wrappedKey: EncryptedData, knownAttachmentCount: Int?, availableEncryptedExtendedContent: EncryptedData?) { self.messageId = messageId self.encryptedContent = encryptedContent self.knownAttachmentCount = knownAttachmentCount diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkMessageToSend.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkMessageToSend.swift index e3cbe4e0..980df928 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkMessageToSend.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkMessageToSend.swift @@ -24,7 +24,7 @@ import ObvEncoder public struct ObvNetworkMessageToSend { - public let messageId: MessageIdentifier + public let messageId: ObvMessageIdentifier public let encryptedContent: EncryptedData public let encryptedExtendedMessagePayload: EncryptedData? public let serverURL: URL @@ -34,7 +34,7 @@ public struct ObvNetworkMessageToSend { public let attachments: [Attachment]? - public init(messageId: MessageIdentifier, encryptedContent: EncryptedData, encryptedExtendedMessagePayload: EncryptedData?, isAppMessageWithUserContent: Bool, isVoipMessageForStartingCall: Bool, serverURL: URL, headers: [Header], attachments: [Attachment]? = nil) { + public init(messageId: ObvMessageIdentifier, encryptedContent: EncryptedData, encryptedExtendedMessagePayload: EncryptedData?, isAppMessageWithUserContent: Bool, isVoipMessageForStartingCall: Bool, serverURL: URL, headers: [Header], attachments: [Attachment]? = nil) { self.messageId = messageId self.encryptedContent = encryptedContent self.encryptedExtendedMessagePayload = encryptedExtendedMessagePayload diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostDelegate.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostDelegate.swift index c381cf55..9cf18959 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostDelegate.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostDelegate.swift @@ -27,16 +27,16 @@ import ObvCrypto public protocol ObvNetworkPostDelegate: ObvManager { func post(_: ObvNetworkMessageToSend, within: ObvContext) throws - func cancelPostOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) throws + func cancelPostOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws func storeCompletionHandler(_: @escaping () -> Void, forHandlingEventsForBackgroundURLSessionWithIdentifier: String, withinFlowId: FlowIdentifier) func backgroundURLSessionIdentifierIsAppropriate(backgroundURLSessionIdentifier: String) -> Bool func replayTransactionsHistory(transactions: [NSPersistentHistoryTransaction], within obvContext: ObvContext) - func deleteHistoryConcerningTheAcknowledgementOfOutboxMessage(messageIdentifier: MessageIdentifier, flowId: FlowIdentifier) async + func deleteHistoryConcerningTheAcknowledgementOfOutboxMessage(messageIdentifier: ObvMessageIdentifier, flowId: FlowIdentifier) async func deleteHistoryConcerningTheAcknowledgementOfOutboxMessages(withTimestampFromServerEarlierOrEqualTo referenceDate: Date, flowId: FlowIdentifier) async - func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] + func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] func prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostNotification.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostNotification.swift index 04a77db6..8b4b9100 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostNotification.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostNotification.swift @@ -33,14 +33,14 @@ fileprivate struct OptionalWrapper { } public enum ObvNetworkPostNotification { - case newOutboxMessageAndAttachmentsToUpload(messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier], flowId: FlowIdentifier) - case outboxMessageAndAttachmentsDeleted(messageId: MessageIdentifier, flowId: FlowIdentifier) - case attachmentUploadRequestIsTakenCareOf(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) + case newOutboxMessageAndAttachmentsToUpload(messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier], flowId: FlowIdentifier) + case outboxMessageAndAttachmentsDeleted(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) + case attachmentUploadRequestIsTakenCareOf(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) case postNetworkOperationFailedSinceOwnedIdentityIsNotActive(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) - case outboxMessageWasUploaded(messageId: MessageIdentifier, timestampFromServer: Date, isAppMessageWithUserContent: Bool, isVoipMessage: Bool, flowId: FlowIdentifier) - case outboxAttachmentWasAcknowledged(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - case outboxMessagesAndAllTheirAttachmentsWereAcknowledged(messageIdsAndTimestampsFromServer: [(messageId: MessageIdentifier, timestampFromServer: Date)], flowId: FlowIdentifier) - case outboxMessageCouldNotBeSentToServer(messageId: MessageIdentifier, flowId: FlowIdentifier) + case outboxMessageWasUploaded(messageId: ObvMessageIdentifier, timestampFromServer: Date, isAppMessageWithUserContent: Bool, isVoipMessage: Bool, flowId: FlowIdentifier) + case outboxAttachmentWasAcknowledged(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + case outboxMessagesAndAllTheirAttachmentsWereAcknowledged(messageIdsAndTimestampsFromServer: [(messageId: ObvMessageIdentifier, timestampFromServer: Date)], flowId: FlowIdentifier) + case outboxMessageCouldNotBeSentToServer(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) private enum Name { case newOutboxMessageAndAttachmentsToUpload @@ -134,29 +134,29 @@ public enum ObvNetworkPostNotification { } } - public static func observeNewOutboxMessageAndAttachmentsToUpload(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, [AttachmentIdentifier], FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeNewOutboxMessageAndAttachmentsToUpload(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, [ObvAttachmentIdentifier], FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.newOutboxMessageAndAttachmentsToUpload.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier - let attachmentIds = notification.userInfo!["attachmentIds"] as! [AttachmentIdentifier] + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier + let attachmentIds = notification.userInfo!["attachmentIds"] as! [ObvAttachmentIdentifier] let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageId, attachmentIds, flowId) } } - public static func observeOutboxMessageAndAttachmentsDeleted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeOutboxMessageAndAttachmentsDeleted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.outboxMessageAndAttachmentsDeleted.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageId, flowId) } } - public static func observeAttachmentUploadRequestIsTakenCareOf(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (AttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeAttachmentUploadRequestIsTakenCareOf(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvAttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.attachmentUploadRequestIsTakenCareOf.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let attachmentId = notification.userInfo!["attachmentId"] as! AttachmentIdentifier + let attachmentId = notification.userInfo!["attachmentId"] as! ObvAttachmentIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(attachmentId, flowId) } @@ -171,10 +171,10 @@ public enum ObvNetworkPostNotification { } } - public static func observeOutboxMessageWasUploaded(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, Date, Bool, Bool, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeOutboxMessageWasUploaded(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, Date, Bool, Bool, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.outboxMessageWasUploaded.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier let timestampFromServer = notification.userInfo!["timestampFromServer"] as! Date let isAppMessageWithUserContent = notification.userInfo!["isAppMessageWithUserContent"] as! Bool let isVoipMessage = notification.userInfo!["isVoipMessage"] as! Bool @@ -183,28 +183,28 @@ public enum ObvNetworkPostNotification { } } - public static func observeOutboxAttachmentWasAcknowledged(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (AttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeOutboxAttachmentWasAcknowledged(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvAttachmentIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.outboxAttachmentWasAcknowledged.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let attachmentId = notification.userInfo!["attachmentId"] as! AttachmentIdentifier + let attachmentId = notification.userInfo!["attachmentId"] as! ObvAttachmentIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(attachmentId, flowId) } } - public static func observeOutboxMessagesAndAllTheirAttachmentsWereAcknowledged(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping ([(messageId: MessageIdentifier, timestampFromServer: Date)], FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeOutboxMessagesAndAllTheirAttachmentsWereAcknowledged(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping ([(messageId: ObvMessageIdentifier, timestampFromServer: Date)], FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.outboxMessagesAndAllTheirAttachmentsWereAcknowledged.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageIdsAndTimestampsFromServer = notification.userInfo!["messageIdsAndTimestampsFromServer"] as! [(messageId: MessageIdentifier, timestampFromServer: Date)] + let messageIdsAndTimestampsFromServer = notification.userInfo!["messageIdsAndTimestampsFromServer"] as! [(messageId: ObvMessageIdentifier, timestampFromServer: Date)] let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageIdsAndTimestampsFromServer, flowId) } } - public static func observeOutboxMessageCouldNotBeSentToServer(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeOutboxMessageCouldNotBeSentToServer(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.outboxMessageCouldNotBeSentToServer.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let messageId = notification.userInfo!["messageId"] as! MessageIdentifier + let messageId = notification.userInfo!["messageId"] as! ObvMessageIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(messageId, flowId) } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostNotification.yml b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostNotification.yml deleted file mode 100644 index da8d721e..00000000 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ObvNetworkPostNotification.yml +++ /dev/null @@ -1,48 +0,0 @@ -import: - - Foundation - - ObvCrypto - - ObvTypes - - OlvidUtils -options: - - {key: post, value: postOnBackgroundQueue} - - {key: notificationCenterName, value: notificationDelegate} - - {key: notificationCenterType, value: ObvNotificationDelegate} - - {key: visibility, value: public} - - {key: objectInObserve, value: false} -notifications: -- name: newOutboxMessageAndAttachmentsToUpload - params: - - {name: messageId, type: MessageIdentifier} - - {name: attachmentIds, type: [AttachmentIdentifier]} - - {name: flowId, type: FlowIdentifier} -- name: outboxMessageAndAttachmentsDeleted - params: - - {name: messageId, type: MessageIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: attachmentUploadRequestIsTakenCareOf - params: - - {name: attachmentId, type: AttachmentIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: postNetworkOperationFailedSinceOwnedIdentityIsNotActive - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: flowId, type: FlowIdentifier} -- name: outboxMessageWasUploaded - params: - - {name: messageId, type: MessageIdentifier} - - {name: timestampFromServer, type: Date} - - {name: isAppMessageWithUserContent, type: Bool} - - {name: isVoipMessage, type: Bool} - - {name: flowId, type: FlowIdentifier} -- name: outboxAttachmentWasAcknowledged - params: - - {name: attachmentId, type: AttachmentIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: outboxMessagesAndAllTheirAttachmentsWereAcknowledged - params: - - {name: messageIdsAndTimestampsFromServer, type: "[(messageId: MessageIdentifier, timestampFromServer: Date)]"} - - {name: flowId, type: FlowIdentifier} -- name: outboxMessageCouldNotBeSentToServer - params: - - {name: messageId, type: MessageIdentifier} - - {name: flowId, type: FlowIdentifier} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ServerQuery.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ServerQuery.swift index b3ff137f..ea6da887 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ServerQuery.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ServerQuery.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -35,6 +35,38 @@ public struct ServerQuery { } } +extension ServerQuery { + + public var isWebSocket: Bool { + switch self.queryType { + case .deviceDiscovery, + .putUserData, + .getUserData, + .checkKeycloakRevocation, + .createGroupBlob, + .getGroupBlob, + .deleteGroupBlob, + .putGroupLog, + .requestGroupBlobLock, + .updateGroupBlob, + .getKeycloakData, + .ownedDeviceDiscovery, + .setOwnedDeviceName, + .deactivateOwnedDevice, + .setUnexpiringOwnedDevice: + return false + case .sourceGetSessionNumber, + .sourceWaitForTargetConnection, + .targetSendEphemeralIdentity, + .transferRelay, + .closeWebsocketConnection, + .transferWait: + return true + } + } + +} + extension ServerQuery { public enum QueryType { @@ -49,7 +81,26 @@ extension ServerQuery { case requestGroupBlobLock(groupIdentifier: GroupV2.Identifier, lockNonce: Data, signature: Data) case updateGroupBlob(groupIdentifier: GroupV2.Identifier, encodedServerAdminPublicKey: ObvEncoded, encryptedBlob: EncryptedData, lockNonce: Data, signature: Data) case getKeycloakData(serverURL: URL, serverLabel: UID) + case ownedDeviceDiscovery + case setOwnedDeviceName(ownedDeviceUID: UID, encryptedOwnedDeviceName: EncryptedData, isCurrentDevice: Bool) + case deactivateOwnedDevice(ownedDeviceUID: UID, isCurrentDevice: Bool) + case setUnexpiringOwnedDevice(ownedDeviceUID: UID) + case sourceGetSessionNumber(protocolInstanceUID: UID) + case sourceWaitForTargetConnection(protocolInstanceUID: UID) + case targetSendEphemeralIdentity(protocolInstanceUID: UID, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, payload: Data) + case transferRelay(protocolInstanceUID: UID, connectionIdentifier: String, payload: Data, thenCloseWebSocket: Bool) + case transferWait(protocolInstanceUID: UID, connectionIdentifier: String) + case closeWebsocketConnection(protocolInstanceUID: UID) + + public var isCheckKeycloakRevocation: Bool { + switch self { + case .checkKeycloakRevocation: + return true + default: return false + } + } + private var rawValue: Int { switch self { @@ -75,6 +126,26 @@ extension ServerQuery { return 9 case .getKeycloakData: return 10 + case .ownedDeviceDiscovery: + return 11 + case .setOwnedDeviceName: + return 12 + case .deactivateOwnedDevice: + return 13 + case .setUnexpiringOwnedDevice: + return 14 + case .sourceGetSessionNumber: + return 15 + case .sourceWaitForTargetConnection: + return 16 + case .targetSendEphemeralIdentity: + return 17 + case .transferRelay: + return 18 + case .transferWait: + return 19 + case .closeWebsocketConnection: + return 20 } } @@ -102,6 +173,26 @@ extension ServerQuery { return [rawValue.obvEncode(), groupIdentifier.obvEncode(), encodedServerAdminPublicKey, encryptedBlob.obvEncode(), lockNonce.obvEncode(), signature.obvEncode()].obvEncode() case .getKeycloakData(serverURL: let serverURL, serverLabel: let serverLabel): return [rawValue, serverURL, serverLabel].obvEncode() + case .ownedDeviceDiscovery: + return [rawValue].obvEncode() + case .setOwnedDeviceName(ownedDeviceUID: let ownedDeviceUID, encryptedOwnedDeviceName: let encryptedOwnedDeviceName, isCurrentDevice: let isCurrentDevice): + return [rawValue.obvEncode(), ownedDeviceUID.obvEncode(), encryptedOwnedDeviceName.obvEncode(), isCurrentDevice.obvEncode()].obvEncode() + case .deactivateOwnedDevice(ownedDeviceUID: let ownedDeviceUID, isCurrentDevice: let isCurrentDevice): + return [rawValue.obvEncode(), ownedDeviceUID.obvEncode(), isCurrentDevice.obvEncode()].obvEncode() + case .setUnexpiringOwnedDevice(ownedDeviceUID: let ownedDeviceUID): + return [rawValue.obvEncode(), ownedDeviceUID.obvEncode()].obvEncode() + case .sourceGetSessionNumber(protocolInstanceUID: let protocolInstanceUID): + return [rawValue, protocolInstanceUID].obvEncode() + case .sourceWaitForTargetConnection(protocolInstanceUID: let protocolInstanceUID): + return [rawValue, protocolInstanceUID].obvEncode() + case .targetSendEphemeralIdentity(protocolInstanceUID: let protocolInstanceUID, transferSessionNumber: let transferSessionNumber, payload: let payload): + return [rawValue, protocolInstanceUID, transferSessionNumber, payload].obvEncode() + case .transferRelay(protocolInstanceUID: let protocolInstanceUID, connectionIdentifier: let connectionIdentifier, payload: let payload, thenCloseWebSocket: let thenCloseWebSocket): + return [rawValue, protocolInstanceUID, connectionIdentifier, payload, thenCloseWebSocket].obvEncode() + case .transferWait(protocolInstanceUID: let protocolInstanceUID, connectionIdentifier: let connectionIdentifier): + return [rawValue, protocolInstanceUID, connectionIdentifier].obvEncode() + case .closeWebsocketConnection(protocolInstanceUID: let protocolInstanceUID): + return [rawValue, protocolInstanceUID].obvEncode() } } @@ -169,6 +260,54 @@ extension ServerQuery { guard let serverURL = URL(listOfEncoded[1]) else { assertionFailure(); return nil } guard let serverLabel = UID(listOfEncoded[2]) else { assertionFailure(); return nil } self = .getKeycloakData(serverURL: serverURL, serverLabel: serverLabel) + case 11: + guard listOfEncoded.count == 1 else { return nil } + self = .ownedDeviceDiscovery + case 12: + guard listOfEncoded.count == 4 else { return nil } + guard let ownedDeviceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + guard let encryptedOwnedDeviceName = EncryptedData(listOfEncoded[2]) else { assertionFailure(); return nil } + guard let isCurrentDevice = Bool(listOfEncoded[3]) else { assertionFailure(); return nil } + self = .setOwnedDeviceName(ownedDeviceUID: ownedDeviceUID, encryptedOwnedDeviceName: encryptedOwnedDeviceName, isCurrentDevice: isCurrentDevice) + case 13: + guard listOfEncoded.count == 3 else { return nil } + guard let ownedDeviceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + guard let isCurrentDevice = Bool(listOfEncoded[2]) else { assertionFailure(); return nil } + self = .deactivateOwnedDevice(ownedDeviceUID: ownedDeviceUID, isCurrentDevice: isCurrentDevice) + case 14: + guard listOfEncoded.count == 2 || listOfEncoded.count == 3 else { return nil } // 3, for legacy reasons + guard let ownedDeviceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + self = .setUnexpiringOwnedDevice(ownedDeviceUID: ownedDeviceUID) + case 15: + guard listOfEncoded.count == 2 else { return nil } + guard let protocolInstanceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + self = .sourceGetSessionNumber(protocolInstanceUID: protocolInstanceUID) + case 16: + guard listOfEncoded.count == 2 else { return nil } + guard let protocolInstanceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + self = .sourceWaitForTargetConnection(protocolInstanceUID: protocolInstanceUID) + case 17: + guard listOfEncoded.count == 4 else { return nil } + guard let protocolInstanceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + guard let transferSessionNumber = ObvOwnedIdentityTransferSessionNumber(listOfEncoded[2]) else { assertionFailure(); return nil } + guard let payload = Data(listOfEncoded[3]) else { assertionFailure(); return nil } + self = .targetSendEphemeralIdentity(protocolInstanceUID: protocolInstanceUID, transferSessionNumber: transferSessionNumber, payload: payload) + case 18: + guard listOfEncoded.count == 5 else { return nil } + guard let protocolInstanceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + guard let connectionIdentifier = String(listOfEncoded[2]) else { assertionFailure(); return nil } + guard let payload = Data(listOfEncoded[3]) else { assertionFailure(); return nil } + guard let thenCloseWebSocket = Bool(listOfEncoded[4]) else { assertionFailure(); return nil } + self = .transferRelay(protocolInstanceUID: protocolInstanceUID, connectionIdentifier: connectionIdentifier, payload: payload, thenCloseWebSocket: thenCloseWebSocket) + case 19: + guard listOfEncoded.count == 3 else { return nil } + guard let protocolInstanceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + guard let connectionIdentifier = String(listOfEncoded[2]) else { assertionFailure(); return nil } + self = .transferWait(protocolInstanceUID: protocolInstanceUID, connectionIdentifier: connectionIdentifier) + case 20: + guard listOfEncoded.count == 2 else { return nil } + guard let protocolInstanceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + self = .closeWebsocketConnection(protocolInstanceUID: protocolInstanceUID) default: assertionFailure() return nil diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ServerResponse.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ServerResponse.swift index 9e4f92f0..1d4ca23c 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ServerResponse.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvNetworkPostDelegate/ServerResponse.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -54,6 +54,13 @@ extension ServerResponse { case requestGroupBlobLock(result: RequestGroupBlobLockResult) case updateGroupBlob(uploadResult: UploadResult) case getKeycloakData(result: GetUserDataResult) + case ownedDeviceDiscovery(encryptedOwnedDeviceDiscoveryResult: EncryptedData) + case setOwnedDeviceName(success: Bool) + case sourceGetSessionNumberMessage(result: SourceGetSessionNumberResult) + case targetSendEphemeralIdentity(result: TargetSendEphemeralIdentityResult) + case transferRelay(result: OwnedIdentityTransferRelayMessageResult) + case transferWait(result: OwnedIdentityTransferWaitResult) + case sourceWaitForTargetConnection(result: SourceWaitForTargetConnectionResult) private var rawValue: Int { switch self { @@ -79,6 +86,20 @@ extension ServerResponse { return 9 case .getKeycloakData: return 10 + case .ownedDeviceDiscovery: + return 11 + case .setOwnedDeviceName: + return 12 + case .sourceGetSessionNumberMessage: + return 13 + case .targetSendEphemeralIdentity: + return 14 + case .transferRelay: + return 15 + case .transferWait: + return 16 + case .sourceWaitForTargetConnection: + return 17 } } @@ -107,6 +128,20 @@ extension ServerResponse { return [rawValue.obvEncode(), uploadResult.obvEncode()].obvEncode() case .getKeycloakData(result: let result): return [rawValue.obvEncode(), result.obvEncode()].obvEncode() + case .ownedDeviceDiscovery(encryptedOwnedDeviceDiscoveryResult: let encryptedOwnedDeviceDiscoveryResult): + return [rawValue.obvEncode(), encryptedOwnedDeviceDiscoveryResult.obvEncode()].obvEncode() + case .setOwnedDeviceName(success: let success): + return [rawValue.obvEncode(), success.obvEncode()].obvEncode() + case .sourceGetSessionNumberMessage(result: let result): + return [rawValue.obvEncode(), result.obvEncode()].obvEncode() + case .targetSendEphemeralIdentity(result: let result): + return [rawValue.obvEncode(), result.obvEncode()].obvEncode() + case .transferRelay(result: let result): + return [rawValue.obvEncode(), result.obvEncode()].obvEncode() + case .transferWait(result: let result): + return [rawValue.obvEncode(), result.obvEncode()].obvEncode() + case .sourceWaitForTargetConnection(result: let result): + return [rawValue.obvEncode(), result.obvEncode()].obvEncode() } } @@ -162,6 +197,34 @@ extension ServerResponse { guard listOfEncoded.count == 2 else { return nil } guard let result = GetUserDataResult(listOfEncoded[1]) else { return nil } self = .getKeycloakData(result: result) + case 11: + guard listOfEncoded.count == 2 else { return nil } + guard let encryptedOwnedDeviceDiscoveryResult = EncryptedData(listOfEncoded[1]) else { return nil } + self = .ownedDeviceDiscovery(encryptedOwnedDeviceDiscoveryResult: encryptedOwnedDeviceDiscoveryResult) + case 12: + guard listOfEncoded.count == 2 else { return nil } + guard let success = Bool(listOfEncoded[1]) else { return nil } + self = .setOwnedDeviceName(success: success) + case 13: + guard listOfEncoded.count == 2 else { return nil } + guard let result = SourceGetSessionNumberResult(listOfEncoded[1]) else { return nil } + self = .sourceGetSessionNumberMessage(result: result) + case 14: + guard listOfEncoded.count == 2 else { return nil } + guard let result = TargetSendEphemeralIdentityResult(listOfEncoded[1]) else { return nil } + self = .targetSendEphemeralIdentity(result: result) + case 15: + guard listOfEncoded.count == 2 else { return nil } + guard let result = OwnedIdentityTransferRelayMessageResult(listOfEncoded[1]) else { return nil } + self = .transferRelay(result: result) + case 16: + guard listOfEncoded.count == 2 else { return nil } + guard let result = OwnedIdentityTransferWaitResult(listOfEncoded[1]) else { return nil } + self = .transferWait(result: result) + case 17: + guard listOfEncoded.count == 2 else { return nil } + guard let result = SourceWaitForTargetConnectionResult(listOfEncoded[1]) else { return nil } + self = .sourceWaitForTargetConnection(result: result) default: assertionFailure() return nil diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvOwnedDeviceManagementRequest.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvOwnedDeviceManagementRequest.swift new file mode 100644 index 00000000..90f57dfa --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvOwnedDeviceManagementRequest.swift @@ -0,0 +1,80 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto +import ObvEncoder + +/// Type used by the initial message of the `OwnedDeviceManagementProtocol`. +public enum ObvOwnedDeviceManagementRequest: ObvCodable { + + case setOwnedDeviceName(ownedDeviceUID: UID, ownedDeviceName: String) + case deactivateOtherOwnedDevice(ownedDeviceUID: UID) + case setUnexpiringDevice(ownedDeviceUID: UID) + + + private var rawValue: Int { + switch self { + case .setOwnedDeviceName: + return 0 + case .deactivateOtherOwnedDevice: + return 1 + case .setUnexpiringDevice: + return 2 + } + } + + + public func obvEncode() -> ObvEncoder.ObvEncoded { + switch self { + case .setOwnedDeviceName(let ownedDeviceUID, let ownedDeviceName): + return [rawValue, ownedDeviceUID, ownedDeviceName].obvEncode() + case .deactivateOtherOwnedDevice(let ownedDeviceUID): + return [rawValue, ownedDeviceUID].obvEncode() + case .setUnexpiringDevice(let ownedDeviceUID): + return [rawValue, ownedDeviceUID].obvEncode() + } + } + + + public init?(_ obvEncoded: ObvEncoder.ObvEncoded) { + guard let listOfEncoded = [ObvEncoded](obvEncoded) else { assertionFailure(); return nil } + guard let encodedRawValue = listOfEncoded.first else { assertionFailure(); return nil } + guard let rawValue = Int(encodedRawValue) else { assertionFailure(); return nil } + switch rawValue { + case 0: + guard listOfEncoded.count == 3 else { assertionFailure(); return nil } + guard let ownedDeviceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + guard let ownedDeviceName = String(listOfEncoded[2]) else { assertionFailure(); return nil } + self = .setOwnedDeviceName(ownedDeviceUID: ownedDeviceUID, ownedDeviceName: ownedDeviceName) + case 1: + guard listOfEncoded.count == 2 else { assertionFailure(); return nil } + guard let ownedDeviceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + self = .deactivateOtherOwnedDevice(ownedDeviceUID: ownedDeviceUID) + case 2: + guard listOfEncoded.count == 2 else { assertionFailure(); return nil } + guard let ownedDeviceUID = UID(listOfEncoded[1]) else { assertionFailure(); return nil } + self = .setUnexpiringDevice(ownedDeviceUID: ownedDeviceUID) + default: + assertionFailure() + return nil + } + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolDelegate.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolDelegate.swift index e518ac48..819ef036 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolDelegate.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -33,12 +33,16 @@ public protocol ObvProtocolDelegate: ObvManager { func getInitialMessageForTrustEstablishmentProtocol(of: ObvCryptoIdentity, withFullDisplayName: String, forOwnedIdentity: ObvCryptoIdentity, withOwnedIdentityCoreDetails: ObvIdentityCoreDetails, usingProtocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend - func getInitialMessageForContactMutualIntroductionProtocol(of: ObvCryptoIdentity, withContactIdentityCoreDetails: ObvIdentityCoreDetails, with: ObvCryptoIdentity, withOtherContactIdentityCoreDetails: ObvIdentityCoreDetails, byOwnedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend - + func getInitialMessageForContactMutualIntroductionProtocol(of identity1: ObvCryptoIdentity, with identity2: ObvCryptoIdentity, byOwnedIdentity ownedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid protocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend + func getInitiateGroupCreationMessageForGroupManagementProtocol(groupCoreDetails: ObvGroupCoreDetails, photoURL: URL?, pendingGroupMembers: Set, ownedIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + func getDisbandGroupMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend + func getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ObvCryptoIdentity, andTheDeviceUid: UID, ofTheContactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + func getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) throws -> ObvChannelProtocolMessageToSend + func getInitialMessageForIdentityDetailsPublicationProtocol(ownedIdentity: ObvCryptoIdentity, publishedIdentityDetailsVersion: Int) throws -> ObvChannelProtocolMessageToSend func getOwnedGroupMembersChangedTriggerMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend @@ -57,10 +61,12 @@ public protocol ObvProtocolDelegate: ObvManager { func getTriggerReinviteMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, memberIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend - func getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + func getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend func getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithContactDeviceProtocolInstances(within obvContext: ObvContext) throws -> Set + func getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithOwnedDeviceProtocolInstances(within obvContext: ObvContext) throws -> Set + func getInitialMessageForDownloadIdentityPhotoChildProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements) throws -> ObvChannelProtocolMessageToSend func getInitialMessageForDownloadGroupPhotoChildProtocol(ownedIdentity: ObvCryptoIdentity, groupInformation: GroupInformation) throws -> ObvChannelProtocolMessageToSend @@ -81,13 +87,15 @@ public protocol ObvProtocolDelegate: ObvManager { func getInitiateGroupUpdateMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, changeset: ObvGroupV2.Changeset, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend + func getInitialMessageForDownloadGroupV2PhotoProtocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverPhotoInfo: GroupV2.ServerPhotoInfo) throws -> ObvChannelProtocolMessageToSend + func getInitiateGroupLeaveMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend func getInitiateGroupReDownloadMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend func getInitiateInitiateGroupDisbandMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend - func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend + func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, remoteIdentity: ObvCryptoIdentity, remoteDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend // MARK: - Keycloak pushed groups @@ -97,8 +105,43 @@ public protocol ObvProtocolDelegate: ObvManager { // MARK: - Owned identities - func prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws + func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, globalOwnedIdentityDeletion: Bool) throws -> ObvChannelProtocolMessageToSend + + func getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + + func getInitiateOwnedDeviceManagementMessage(ownedCryptoIdentity: ObvCryptoIdentity, request: ObvOwnedDeviceManagementRequest) throws -> ObvChannelProtocolMessageToSend + + // func getInitiateTransferOnSourceDeviceMessageForOwnedIdentityTransferProtocol(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + + // MARK: - Allow to execute external operations on the queue executing protocol steps + + func executeOnQueueForProtocolOperations(operation: OperationWithSpecificReasonForCancel) async throws + + // MARK: - Keycloak binding and unbinding + + func getOwnedIdentityKeycloakBindingMessage(ownedCryptoIdentity: ObvCryptoIdentity, keycloakState: ObvKeycloakState, keycloakUserId: String) throws -> ObvChannelProtocolMessageToSend + + func getOwnedIdentityKeycloakUnbindingMessage(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + + // MARK: - SynchronizationProtocol + + func getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, syncAtom: ObvSyncAtom) throws -> ObvChannelProtocolMessageToSend + + // MARK: - Owned identity transfer protocol + + /// Called by the engine in order to start an owned identity transfer protocol on the source device. + /// - Parameters: + /// - ownedCryptoIdentity: The crypto identity of the owned identity. + /// - onAvailableSessionNumber: This block will be called by the protocol manager as soon as the session number is available, passing it as a parameter. Since getting this session number requires a network interaction with the transfer server, this block may take a "long" time before being called. + /// - flowId: The flow identifier. + func initiateOwnedIdentityTransferProtocolOnSourceDevice(ownedCryptoIdentity: ObvCryptoIdentity, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void, flowId: FlowIdentifier) async throws + + func initiateOwnedIdentityTransferProtocolOnTargetDevice(currentDeviceName: String, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void, flowId: FlowIdentifier) async throws + + func continueOwnedIdentityTransferProtocolOnUserEnteredSASOnSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws + + func appIsShowingSasAndExpectingEndOfProtocol(protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async - func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, notifyContacts: Bool, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend + func cancelAllOwnedIdentityTransferProtocols(flowId: FlowIdentifier) async throws } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolNotification.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolNotification.swift index 849b0bbc..8bc1ae6c 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolNotification.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolNotification.swift @@ -34,15 +34,25 @@ fileprivate struct OptionalWrapper { public enum ObvProtocolNotification { case mutualScanContactAdded(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, signature: Data) - case protocolMessageToProcess(protocolMessageId: MessageIdentifier, flowId: FlowIdentifier) - case protocolMessageProcessed(protocolMessageId: MessageIdentifier, flowId: FlowIdentifier) + case protocolMessageToProcess(protocolMessageId: ObvMessageIdentifier, flowId: FlowIdentifier) + case protocolMessageProcessed(protocolMessageId: ObvMessageIdentifier, flowId: FlowIdentifier) case groupV2UpdateDidFail(ownedIdentity: ObvCryptoIdentity, appGroupIdentifier: Data, flowId: FlowIdentifier) + case protocolReceivedMessageWasDeleted(protocolMessageId: ObvMessageIdentifier) + case keycloakSynchronizationRequired(ownedIdentity: ObvCryptoIdentity) + case contactIntroductionInvitationSent(ownedIdentity: ObvCryptoIdentity, contactIdentityA: ObvCryptoIdentity, contactIdentityB: ObvCryptoIdentity) + case theCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults(ownedIdentity: ObvCryptoIdentity) + case anOwnedIdentityTransferProtocolFailed(ownedCryptoIdentity: ObvCryptoIdentity, protocolInstanceUID: UID, error: Error) private enum Name { case mutualScanContactAdded case protocolMessageToProcess case protocolMessageProcessed case groupV2UpdateDidFail + case protocolReceivedMessageWasDeleted + case keycloakSynchronizationRequired + case contactIntroductionInvitationSent + case theCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults + case anOwnedIdentityTransferProtocolFailed private var namePrefix: String { String(describing: ObvProtocolNotification.self) } @@ -59,6 +69,11 @@ public enum ObvProtocolNotification { case .protocolMessageToProcess: return Name.protocolMessageToProcess.name case .protocolMessageProcessed: return Name.protocolMessageProcessed.name case .groupV2UpdateDidFail: return Name.groupV2UpdateDidFail.name + case .protocolReceivedMessageWasDeleted: return Name.protocolReceivedMessageWasDeleted.name + case .keycloakSynchronizationRequired: return Name.keycloakSynchronizationRequired.name + case .contactIntroductionInvitationSent: return Name.contactIntroductionInvitationSent.name + case .theCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults: return Name.theCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults.name + case .anOwnedIdentityTransferProtocolFailed: return Name.anOwnedIdentityTransferProtocolFailed.name } } } @@ -87,6 +102,30 @@ public enum ObvProtocolNotification { "appGroupIdentifier": appGroupIdentifier, "flowId": flowId, ] + case .protocolReceivedMessageWasDeleted(protocolMessageId: let protocolMessageId): + info = [ + "protocolMessageId": protocolMessageId, + ] + case .keycloakSynchronizationRequired(ownedIdentity: let ownedIdentity): + info = [ + "ownedIdentity": ownedIdentity, + ] + case .contactIntroductionInvitationSent(ownedIdentity: let ownedIdentity, contactIdentityA: let contactIdentityA, contactIdentityB: let contactIdentityB): + info = [ + "ownedIdentity": ownedIdentity, + "contactIdentityA": contactIdentityA, + "contactIdentityB": contactIdentityB, + ] + case .theCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults(ownedIdentity: let ownedIdentity): + info = [ + "ownedIdentity": ownedIdentity, + ] + case .anOwnedIdentityTransferProtocolFailed(ownedCryptoIdentity: let ownedCryptoIdentity, protocolInstanceUID: let protocolInstanceUID, error: let error): + info = [ + "ownedCryptoIdentity": ownedCryptoIdentity, + "protocolInstanceUID": protocolInstanceUID, + "error": error, + ] } return info } @@ -110,19 +149,19 @@ public enum ObvProtocolNotification { } } - public static func observeProtocolMessageToProcess(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeProtocolMessageToProcess(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.protocolMessageToProcess.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let protocolMessageId = notification.userInfo!["protocolMessageId"] as! MessageIdentifier + let protocolMessageId = notification.userInfo!["protocolMessageId"] as! ObvMessageIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(protocolMessageId, flowId) } } - public static func observeProtocolMessageProcessed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (MessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { + public static func observeProtocolMessageProcessed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier, FlowIdentifier) -> Void) -> NSObjectProtocol { let name = Name.protocolMessageProcessed.name return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in - let protocolMessageId = notification.userInfo!["protocolMessageId"] as! MessageIdentifier + let protocolMessageId = notification.userInfo!["protocolMessageId"] as! ObvMessageIdentifier let flowId = notification.userInfo!["flowId"] as! FlowIdentifier block(protocolMessageId, flowId) } @@ -138,4 +177,48 @@ public enum ObvProtocolNotification { } } + public static func observeProtocolReceivedMessageWasDeleted(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvMessageIdentifier) -> Void) -> NSObjectProtocol { + let name = Name.protocolReceivedMessageWasDeleted.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let protocolMessageId = notification.userInfo!["protocolMessageId"] as! ObvMessageIdentifier + block(protocolMessageId) + } + } + + public static func observeKeycloakSynchronizationRequired(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity) -> Void) -> NSObjectProtocol { + let name = Name.keycloakSynchronizationRequired.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity + block(ownedIdentity) + } + } + + public static func observeContactIntroductionInvitationSent(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, ObvCryptoIdentity, ObvCryptoIdentity) -> Void) -> NSObjectProtocol { + let name = Name.contactIntroductionInvitationSent.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity + let contactIdentityA = notification.userInfo!["contactIdentityA"] as! ObvCryptoIdentity + let contactIdentityB = notification.userInfo!["contactIdentityB"] as! ObvCryptoIdentity + block(ownedIdentity, contactIdentityA, contactIdentityB) + } + } + + public static func observeTheCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity) -> Void) -> NSObjectProtocol { + let name = Name.theCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let ownedIdentity = notification.userInfo!["ownedIdentity"] as! ObvCryptoIdentity + block(ownedIdentity) + } + } + + public static func observeAnOwnedIdentityTransferProtocolFailed(within notificationDelegate: ObvNotificationDelegate, queue: OperationQueue? = nil, block: @escaping (ObvCryptoIdentity, UID, Error) -> Void) -> NSObjectProtocol { + let name = Name.anOwnedIdentityTransferProtocolFailed.name + return notificationDelegate.addObserver(forName: name, queue: queue) { (notification) in + let ownedCryptoIdentity = notification.userInfo!["ownedCryptoIdentity"] as! ObvCryptoIdentity + let protocolInstanceUID = notification.userInfo!["protocolInstanceUID"] as! UID + let error = notification.userInfo!["error"] as! Error + block(ownedCryptoIdentity, protocolInstanceUID, error) + } + } + } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolNotification.yml b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolNotification.yml deleted file mode 100644 index bbacaa72..00000000 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolNotification.yml +++ /dev/null @@ -1,30 +0,0 @@ -import: - - Foundation - - ObvCrypto - - ObvTypes - - OlvidUtils -options: - - {key: post, value: postOnBackgroundQueue} - - {key: notificationCenterName, value: notificationDelegate} - - {key: notificationCenterType, value: ObvNotificationDelegate} - - {key: visibility, value: public} - - {key: objectInObserve, value: false} -notifications: -- name: mutualScanContactAdded - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: contactIdentity, type: ObvCryptoIdentity} - - {name: signature, type: Data} -- name: protocolMessageToProcess - params: - - {name: protocolMessageId, type: MessageIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: protocolMessageProcessed - params: - - {name: protocolMessageId, type: MessageIdentifier} - - {name: flowId, type: FlowIdentifier} -- name: groupV2UpdateDidFail - params: - - {name: ownedIdentity, type: ObvCryptoIdentity} - - {name: appGroupIdentifier, type: Data} - - {name: flowId, type: FlowIdentifier} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolReceivedMessage.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolReceivedMessage.swift index 4b311137..64b95adb 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolReceivedMessage.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolReceivedMessage.swift @@ -27,10 +27,10 @@ public struct ObvProtocolReceivedMessage { public let receptionChannelInfo: ObvProtocolReceptionChannelInfo public let encodedElements: ObvEncoded // An encoded list containing three encoded items : the protocol instance UID, the protocol message raw id, and the encodedProtocolInstanceInputs - public let messageId: MessageIdentifier + public let messageId: ObvMessageIdentifier public let timestamp: Date // Either the messageUploadTimestampFromServer for messages received from the network, or a local timestamp otherwise - public init(messageId: MessageIdentifier, timestamp: Date, receptionChannelInfo: ObvProtocolReceptionChannelInfo, encodedElements: ObvEncoded) { + public init(messageId: ObvMessageIdentifier, timestamp: Date, receptionChannelInfo: ObvProtocolReceptionChannelInfo, encodedElements: ObvEncoded) { self.receptionChannelInfo = receptionChannelInfo self.encodedElements = encodedElements self.messageId = messageId diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolReceptionChannelInfo.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolReceptionChannelInfo.swift index 9d86d017..708fe955 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolReceptionChannelInfo.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvProtocol/ObvProtocolReceptionChannelInfo.swift @@ -25,7 +25,7 @@ import CoreData import OlvidUtils // The AnyObliviousChannelWithOwnedDevice is never actually set on a message. It is only used within protocol steps so as to allow a message to come from any other device of the current owned identity. -// Similarly, the AnyObliviousChannel is never actually set on a message. It is only used within protocol steps so as to allow a message to come from any Oblivious Channel with the current device. +// Similarly, the AnyObliviousChannel is never actually set on a message. It is only used within protocol steps so as to allow a message to come from any Oblivious Channel with the current device (including oblivious channels with our other owned devices) public enum ObvProtocolReceptionChannelInfo: ObvCodable, Equatable { @@ -117,15 +117,15 @@ public enum ObvProtocolReceptionChannelInfo: ObvCodable, Equatable { } self = ObvProtocolReceptionChannelInfo.ObliviousChannel(remoteCryptoIdentity: remoteCryptoIdentity, remoteDeviceUid: remoteDeviceUid) case 2: - guard listOfEncoded.count == 1 else { return nil } + guard listOfEncoded.count == 1 else { assertionFailure(); return nil } self = ObvProtocolReceptionChannelInfo.AsymmetricChannel case 3: guard listOfEncoded.count == 2 else { return nil } - guard let ownedIdentity = ObvCryptoIdentity(listOfEncoded[1]) else { return nil } + guard let ownedIdentity = ObvCryptoIdentity(listOfEncoded[1]) else { assertionFailure(); return nil } self = ObvProtocolReceptionChannelInfo.AnyObliviousChannelWithOwnedDevice(ownedIdentity: ownedIdentity) case 4: guard listOfEncoded.count == 2 else { return nil } - guard let ownedIdentity = ObvCryptoIdentity(listOfEncoded[1]) else { return nil } + guard let ownedIdentity = ObvCryptoIdentity(listOfEncoded[1]) else { assertionFailure(); return nil } self = ObvProtocolReceptionChannelInfo.AnyObliviousChannel(ownedIdentity: ownedIdentity) default: return nil @@ -178,17 +178,20 @@ extension ObvProtocolReceptionChannelInfo { case .ObliviousChannel(remoteCryptoIdentity: let remoteIdentity, remoteDeviceUid: _): return ownedIdentity == remoteIdentity default: + assertionFailure() return false } case .AnyObliviousChannel(ownedIdentity: let ownedIdentity): switch other { case .ObliviousChannel(remoteCryptoIdentity: let remoteCryptoIdentity, remoteDeviceUid: _): - guard try identityDelegate.isIdentity(remoteCryptoIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext), - try identityDelegate.isContactIdentityActive(ownedIdentity: ownedIdentity, contactIdentity: remoteCryptoIdentity, within: obvContext) - else { + if try identityDelegate.isIdentity(remoteCryptoIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext), + try identityDelegate.isContactIdentityActive(ownedIdentity: ownedIdentity, contactIdentity: remoteCryptoIdentity, within: obvContext) { + return true + } else if remoteCryptoIdentity == ownedIdentity { + return true + } else { return false } - return true default: return false } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvSolveChallenge/ObvSolveChallengeDelegate.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvSolveChallenge/ObvSolveChallengeDelegate.swift index 138c65a4..4829180d 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvSolveChallenge/ObvSolveChallengeDelegate.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvSolveChallenge/ObvSolveChallengeDelegate.swift @@ -27,7 +27,7 @@ public protocol ObvSolveChallengeDelegate: ObvManager { func solveChallenge(_ challengeType: ChallengeType, for: ObvCryptoIdentity, using: PRNGService, within obvContext: ObvContext) throws -> Data - func getApiKeyForOwnedIdentity(_: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UUID? + // func getApiKeyForOwnedIdentity(_: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UUID? } diff --git a/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvSyncSnapshotDelegate/ObvSyncSnapshotDelegate.swift b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvSyncSnapshotDelegate/ObvSyncSnapshotDelegate.swift new file mode 100644 index 00000000..f38defcf --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/Internal managers/ObvSyncSnapshotDelegate/ObvSyncSnapshotDelegate.swift @@ -0,0 +1,44 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import ObvEncoder +import ObvCrypto +import OlvidUtils + + +public protocol ObvSyncSnapshotDelegate: ObvManager { + + func registerAppSnapshotableObject(_ appSnapshotableObject: ObvAppSnapshotable) + func registerIdentitySnapshotableObject(_ identitySnapshotableObject: ObvSnapshotable) + + func getSyncSnapshotNode(for ownedCryptoId: ObvCryptoId) throws -> ObvSyncSnapshot + func getSyncSnapshotNodeAsObvDictionary(for ownedCryptoId: ObvCryptoId) throws -> ObvDictionary + + func decodeSyncSnapshot(from obvDictionary: ObvDictionary) throws -> ObvSyncSnapshot + + func syncEngineDatabaseThenUpdateAppDatabase(using obvSyncSnapshotNode: any ObvSyncSnapshotNode) async throws + func requestServerToKeepDeviceActive(ownedCryptoId: ObvCryptoId, deviceUidToKeepActive: UID) async throws + + // func makeObvSyncSnapshot(within obvContext: ObvContext) throws -> ObvSyncSnapshot + + // func newSyncDiffsToProcessOrShowToUser(_ diffs: Set, withOtherOwnedDeviceUid: UID) + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/ObvConstants.swift b/Engine/ObvMetaManager/ObvMetaManager/ObvConstants.swift index 4481541e..96f848df 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/ObvConstants.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/ObvConstants.swift @@ -55,7 +55,6 @@ public struct ObvConstants { // Backup related constants public static let maxTimeUntilBackupIsRequired: TimeInterval = 24 * 60 * 60 // In seconds, 24h - public static let compressBackupedData = true // We will set this to false in a later release // Keycloak revocation related constants public static let keycloakSignatureValidity: TimeInterval = 5_184_000 // In seconds, 60 days @@ -63,4 +62,27 @@ public struct ObvConstants { // Group V2 invitation nonce public static let groupInvitationNonceLength = 16 public static let groupLockNonceLength = 32 + + // Fake server used during the owned identity transfer protocol on a target device, when generating an ephemeral owned identity + public static let ephemeralIdentityServerURL = URL(string: "ephemeral_fake_server")! + + public static let transferWSServerURL = URL(string: "wss://transfer.olvid.io")! + + + // When a protocol requires to generate a "deterministic" seed, it must pass the appropriate enum value to the ``getDeterministicSeed(diversifiedUsing:secretMACKey:forProtocol:)`` method of the identity manager. + public enum SeedProtocol { + case trustEstablishmentWithSAS + case ownedIdentityTransfer + public var fixedByte: UInt8 { + switch self { + case .trustEstablishmentWithSAS: + return 0x55 + case .ownedIdentityTransfer: + return 0x56 + } + } + } + + public static let transferMaxPayloadSize = 10_000 // in Bytes + } diff --git a/Engine/ObvMetaManager/ObvMetaManager/ObvEngineDelegateType.swift b/Engine/ObvMetaManager/ObvMetaManager/ObvEngineDelegateType.swift index 8d5f0fbe..095ba733 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/ObvEngineDelegateType.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/ObvEngineDelegateType.swift @@ -35,4 +35,5 @@ public enum ObvEngineDelegateType: Int, Hashable, CaseIterable { case ObvNotificationDelegate case ObvFlowDelegate case ObvSimpleFlowDelegate + case ObvSyncSnapshotDelegate } diff --git a/Engine/ObvMetaManager/ObvMetaManager/ObvMetaManager.swift b/Engine/ObvMetaManager/ObvMetaManager/ObvMetaManager.swift index cd62658a..1e36a908 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/ObvMetaManager.swift +++ b/Engine/ObvMetaManager/ObvMetaManager/ObvMetaManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -36,6 +36,12 @@ public final class ObvMetaManager: ObvErrorMaker { fulfillPreviouslyRegisteredManagersRequirements(ofType: .ObvBackupDelegate, with: backupDelegate) } } + + public private(set) var syncSnapshotDelegate: ObvSyncSnapshotDelegate? { + didSet { + fulfillPreviouslyRegisteredManagersRequirements(ofType: .ObvSyncSnapshotDelegate, with: syncSnapshotDelegate) + } + } public private(set) var createContextDelegate: ObvCreateContextDelegate? { didSet { @@ -167,6 +173,15 @@ public final class ObvMetaManager: ObvErrorMaker { switch possibleDelegateType { + case .ObvSyncSnapshotDelegate: + if let manager = manager as? (any ObvSyncSnapshotDelegate) { + guard syncSnapshotDelegate == nil else { + throw Self.makeError(message: "Failed to instantiate delegate (ObvSyncSnapshotDelegate)") + } + syncSnapshotDelegate = manager + delegateRequirementsProvidedByTheRegisteredDelegates.insert(.ObvSyncSnapshotDelegate) + } + case .ObvBackupDelegate: if let manager = manager as? ObvBackupDelegate { guard backupDelegate == nil else { @@ -302,6 +317,15 @@ public final class ObvMetaManager: ObvErrorMaker { for requiredDelegate in internalManager.requiredDelegates { switch requiredDelegate { + case .ObvSyncSnapshotDelegate: + let delegateType = ObvEngineDelegateType.ObvSyncSnapshotDelegate + if let delegate = syncSnapshotDelegate { + try internalManager.fulfill(requiredDelegate: delegate, forDelegateType: delegateType) + } else { + let otherManagers = managersWithUnfulfilledRequirements[delegateType] ?? [ObvManager]() + managersWithUnfulfilledRequirements[delegateType] = otherManagers + [internalManager] + } + case .ObvBackupDelegate: let delegateType = ObvEngineDelegateType.ObvBackupDelegate if let delegate = backupDelegate { @@ -439,6 +463,10 @@ public final class ObvMetaManager: ObvErrorMaker { // We register all the backupable managers within the backup delegate let allBackupableManagers = registeredManagers.compactMap { $0 as? ObvBackupableManager } backupDelegate?.registerAllBackupableManagers(allBackupableManagers) + // We register the identity delegate as a snapshotable + if let identityDelegate { + syncSnapshotDelegate?.registerIdentitySnapshotableObject(identityDelegate) + } // We give a chance to all managers to finalize their own initialization guard let contextDelegate = registeredManagers.filter({$0 is ObvCreateContextDelegate}).first else { throw ObvMetaManager.makeError(message: "Could not find create context delegate") diff --git a/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvAttachment+Initializer.swift b/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvAttachment+Initializer.swift new file mode 100644 index 00000000..61a6fa55 --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvAttachment+Initializer.swift @@ -0,0 +1,80 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import OlvidUtils + + +public extension ObvAttachment { + + init(attachmentId: ObvAttachmentIdentifier, fromContactIdentity: ObvContactIdentifier, networkFetchDelegate: ObvNetworkFetchDelegate, within obvContext: ObvContext) throws { + guard let networkReceivedAttachment = networkFetchDelegate.getAttachment(withId: attachmentId, within: obvContext) else { + throw ObvError.couldNotGetAttachment + } + let fromContactIdentity = fromContactIdentity + let attachmentId = networkReceivedAttachment.attachmentId + let metadata = networkReceivedAttachment.metadata + let url = networkReceivedAttachment.url + let status = networkReceivedAttachment.status.toObvAttachmentStatus + let messageUploadTimestampFromServer = networkReceivedAttachment.messageUploadTimestampFromServer + let totalUnitCount = networkReceivedAttachment.totalUnitCount + self.init(fromContactIdentity: fromContactIdentity, + metadata: metadata, + totalUnitCount: totalUnitCount, + url: url, + status: status, + attachmentId: attachmentId, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + } + + + private init(networkReceivedAttachment: ObvNetworkFetchReceivedAttachment, within obvContext: ObvContext) throws { + let fromContactIdentity = ObvContactIdentifier(contactCryptoIdentity: networkReceivedAttachment.fromCryptoIdentity, ownedCryptoIdentity: networkReceivedAttachment.attachmentId.messageId.ownedCryptoIdentity) + let attachmentId = networkReceivedAttachment.attachmentId + let metadata = networkReceivedAttachment.metadata + let url = networkReceivedAttachment.url + let status = networkReceivedAttachment.status.toObvAttachmentStatus + let messageUploadTimestampFromServer = networkReceivedAttachment.messageUploadTimestampFromServer + let totalUnitCount = networkReceivedAttachment.totalUnitCount + self.init(fromContactIdentity: fromContactIdentity, + metadata: metadata, + totalUnitCount: totalUnitCount, + url: url, + status: status, + attachmentId: attachmentId, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + } + +} + + +extension ObvNetworkFetchReceivedAttachment.Status { + + var toObvAttachmentStatus: ObvAttachment.Status { + switch self { + case .paused: return .paused + case .resumed: return .resumed + case .downloaded: return .downloaded + case .cancelledByServer: return .cancelledByServer + case .markedForDeletion: return .markedForDeletion + } + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvMessage+Initializer.swift b/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvMessage+Initializer.swift new file mode 100644 index 00000000..4918adf7 --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvMessage+Initializer.swift @@ -0,0 +1,59 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import OlvidUtils + + +public extension ObvMessage { + + init(networkReceivedMessage: ObvNetworkReceivedMessageDecrypted, networkFetchDelegate: ObvNetworkFetchDelegate?, within obvContext: ObvContext) throws { + guard networkReceivedMessage.fromIdentity != networkReceivedMessage.messageId.ownedCryptoIdentity else { + assertionFailure() + throw ObvError.fromIdentityIsEqualToOwnedIdentity + } + let fromContactIdentity = ObvContactIdentifier(contactCryptoIdentity: networkReceivedMessage.fromIdentity, ownedCryptoIdentity: networkReceivedMessage.messageId.ownedCryptoIdentity) + let messageId = networkReceivedMessage.messageId + let messagePayload = networkReceivedMessage.messagePayload + let messageUploadTimestampFromServer = networkReceivedMessage.messageUploadTimestampFromServer + let downloadTimestampFromServer = networkReceivedMessage.downloadTimestampFromServer + let localDownloadTimestamp = networkReceivedMessage.localDownloadTimestamp + let extendedMessagePayload = networkReceivedMessage.extendedMessagePayload + let expectedAttachmentsCount = networkReceivedMessage.attachmentIds.count + let attachments: [ObvAttachment] + if let networkFetchDelegate { + attachments = try networkReceivedMessage.attachmentIds.map { + try ObvAttachment(attachmentId: $0, fromContactIdentity: fromContactIdentity, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } + } else { + attachments = [] + } + self.init(fromContactIdentity: fromContactIdentity, + messageId: messageId, + attachments: attachments, + expectedAttachmentsCount: expectedAttachmentsCount, + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + downloadTimestampFromServer: downloadTimestampFromServer, + localDownloadTimestamp: localDownloadTimestamp, + messagePayload: messagePayload, + extendedMessagePayload: extendedMessagePayload) + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvOwnedAttachment+Initializer.swift b/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvOwnedAttachment+Initializer.swift new file mode 100644 index 00000000..d9eb7c71 --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvOwnedAttachment+Initializer.swift @@ -0,0 +1,45 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import OlvidUtils + + +public extension ObvOwnedAttachment { + + init(attachmentId: ObvAttachmentIdentifier, networkFetchDelegate: ObvNetworkFetchDelegate, within obvContext: ObvContext) throws { + guard let networkReceivedAttachment = networkFetchDelegate.getAttachment(withId: attachmentId, within: obvContext) else { + throw ObvError.couldNotGetAttachment + } + let attachmentId = networkReceivedAttachment.attachmentId + let metadata = networkReceivedAttachment.metadata + let url = networkReceivedAttachment.url + let status = networkReceivedAttachment.status.toObvAttachmentStatus + let messageUploadTimestampFromServer = networkReceivedAttachment.messageUploadTimestampFromServer + let totalUnitCount = networkReceivedAttachment.totalUnitCount + self.init(metadata: metadata, + totalUnitCount: totalUnitCount, + url: url, + status: status, + attachmentId: attachmentId, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvOwnedMessage+Initializer.swift b/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvOwnedMessage+Initializer.swift new file mode 100644 index 00000000..71181e95 --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/TypeExtensions/ObvOwnedMessage+Initializer.swift @@ -0,0 +1,57 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import OlvidUtils + + +public extension ObvOwnedMessage { + + init(networkReceivedMessage: ObvNetworkReceivedMessageDecrypted, networkFetchDelegate: ObvNetworkFetchDelegate?, within obvContext: ObvContext) throws { + guard networkReceivedMessage.fromIdentity == networkReceivedMessage.messageId.ownedCryptoIdentity else { + assertionFailure() + throw ObvError.fromIdentityIsDifferentFromTheOwnedIdentity + } + let messageId = networkReceivedMessage.messageId + let messagePayload = networkReceivedMessage.messagePayload + let messageUploadTimestampFromServer = networkReceivedMessage.messageUploadTimestampFromServer + let downloadTimestampFromServer = networkReceivedMessage.downloadTimestampFromServer + let localDownloadTimestamp = networkReceivedMessage.localDownloadTimestamp + let extendedMessagePayload = networkReceivedMessage.extendedMessagePayload + let expectedAttachmentsCount = networkReceivedMessage.attachmentIds.count + let attachments: [ObvOwnedAttachment] + if let networkFetchDelegate { + attachments = try networkReceivedMessage.attachmentIds.map { + try ObvOwnedAttachment(attachmentId: $0, networkFetchDelegate: networkFetchDelegate, within: obvContext) + } + } else { + attachments = [] + } + self.init(messageId: messageId, + attachments: attachments, + expectedAttachmentsCount: expectedAttachmentsCount, + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + downloadTimestampFromServer: downloadTimestampFromServer, + localDownloadTimestamp: localDownloadTimestamp, + messagePayload: messagePayload, + extendedMessagePayload: extendedMessagePayload) + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/Utils/URLSessionTask+SerializedInfosInTaskDescription.swift b/Engine/ObvMetaManager/ObvMetaManager/Utils/URLSessionTask+SerializedInfosInTaskDescription.swift new file mode 100644 index 00000000..e96a7369 --- /dev/null +++ b/Engine/ObvMetaManager/ObvMetaManager/Utils/URLSessionTask+SerializedInfosInTaskDescription.swift @@ -0,0 +1,97 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvCrypto + +extension URLSessionTask: ObvErrorMaker { + + public static var errorDomain: String { "URLSessionTask+OwnedCryptoIdAndFlowIdentifier" } + + + public func setTaskDescriptionWith(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) throws { + let info = OwnedCryptoIdAndFlowIdentifier(ownedCryptoId: ownedCryptoId, flowId: flowId) + self.taskDescription = try info.jsonEncode() + } + + + public func getOwnedCryptoIdAndFlowIdentifierFromTaskDescription() throws -> (ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) { + guard let taskDescription else { assertionFailure(); throw Self.makeError(message: "The task description is nil") } + let info = try OwnedCryptoIdAndFlowIdentifier.jsonDecode(taskDescription) + return (info.ownedCryptoId, info.flowId) + } + + + private struct OwnedCryptoIdAndFlowIdentifier: Codable, ObvErrorMaker { + + static let errorDomain = "URLSessionTask+OwnedCryptoIdAndFlowIdentifier" + + let ownedCryptoId: ObvCryptoIdentity + let flowId: FlowIdentifier + + enum CodingKeys: String, CodingKey { + case ownedCryptoId = "ownedCryptoId" + case flowId = "flowId" + } + + init(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) { + self.ownedCryptoId = ownedCryptoId + self.flowId = flowId + } + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(ownedCryptoId.getIdentity(), forKey: .ownedCryptoId) + try container.encode(flowId, forKey: .flowId) + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let identity = try values.decode(Data.self, forKey: .ownedCryptoId) + guard let ownedCryptoId = ObvCryptoIdentity(from: identity) else { + assertionFailure() + throw Self.makeError(message: "Could not decode owned identity") + } + let flowId = try values.decode(FlowIdentifier.self, forKey: .flowId) + self.init(ownedCryptoId: ownedCryptoId, flowId: flowId) + } + + func jsonEncode() throws -> String { + let encoder = JSONEncoder() + guard let encoded = String(data: try encoder.encode(self), encoding: .utf8) else { + assertionFailure() + throw Self.makeError(message: "Encoding failed") + } + return encoded + } + + + static func jsonDecode(_ string: String) throws -> OwnedCryptoIdAndFlowIdentifier { + guard let data = string.data(using: .utf8) else { + assertionFailure() + throw Self.makeError(message: "Decoding failed") + } + let decoder = JSONDecoder() + return try decoder.decode(OwnedCryptoIdAndFlowIdentifier.self, from: data) + } + + } + +} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/BootstrapWorker.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/BootstrapWorker.swift index 4a889900..0a59e922 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/BootstrapWorker.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/BootstrapWorker.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -53,8 +53,8 @@ final class BootstrapWorker { assertionFailure() return } + delegateManager.wellKnownCacheDelegate.initializateCache(flowId: flowId) - delegateManager.serverPushNotificationsDelegate.forceRegisteringOfServerPushNotificationsOnBootstrap(flowId: flowId) } @@ -73,12 +73,17 @@ final class BootstrapWorker { os_log("FetchManager: application did become active", log: log, type: .info) guard let contextCreator = delegateManager.contextCreator else { - os_log("The Context Creator is not set", log: log, type: .fault) assertionFailure() return } - + + guard let notificationDelegate = delegateManager.notificationDelegate else { + os_log("The notification delegate is not set", log: log, type: .fault) + assertionFailure() + return + } + // These operations used to be scheduled in the `finalizeInitialization` method. In order to speed up the boot process, we schedule them here instead internalQueue.addOperation { [weak self] in self?.deleteOrphanedDatabaseObjects(flowId: flowId, log: log, contextCreator: contextCreator) @@ -88,12 +93,15 @@ final class BootstrapWorker { if forTheFirstTime { internalQueue.addOperation { [weak self] in + self?.deleteAllWebSocketServerQueries(contextCreator: contextCreator, flowId: flowId, logOnFailure: log) // We cannot call this method in the finalizeInitialization method because the generated notifications would not be received by the app self?.rescheduleAllInboxMessagesAndAttachments(flowId: flowId, log: log, contextCreator: contextCreator, delegateManager: delegateManager) delegateManager.wellKnownCacheDelegate.downloadAndUpdateCache(flowId: flowId) + + self?.deletePendingServerQueryOfNonExistingOwnedIdentities(delegateManager: delegateManager, flowId: flowId) self?.postAllPendingServerQuery(delegateManager: delegateManager, flowId: flowId) self?.useExistingServerSessionTokenForWebsocketCoordinator(contextCreator: contextCreator, flowId: flowId) - + self?.reNotifyAboutAPIKeyStatus(contextCreator: contextCreator, notificationDelegate: notificationDelegate, flowId: flowId) } } @@ -120,10 +128,31 @@ final class BootstrapWorker { extension BootstrapWorker { + private func reNotifyAboutAPIKeyStatus(contextCreator: ObvCreateContextDelegate, notificationDelegate: ObvNotificationDelegate, flowId: FlowIdentifier) { + contextCreator.performBackgroundTaskAndWait(flowId: flowId) { obvContext in + do { + let serverSessions = try ServerSession.getAllServerSessions(within: obvContext.context).filter({ !$0.isDeleted }) + for serverSession in serverSessions { + guard let ownedCryptoId = try? serverSession.ownedCryptoIdentity else { assertionFailure(); continue } + guard let apiKeyStatus = serverSession.apiKeyStatus, let apiPermissions = serverSession.apiPermissions else { continue } + ObvNetworkFetchNotificationNew.newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity( + ownedIdentity: ownedCryptoId, + apiKeyStatus: apiKeyStatus, + apiPermissions: apiPermissions, + apiKeyExpirationDate: serverSession.apiKeyExpirationDate) + .postOnBackgroundQueue(within: notificationDelegate) + } + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + /// If a server session (with a valid token) can be found in DB at first launch, we pass this token to the websocket coordinator. private func useExistingServerSessionTokenForWebsocketCoordinator(contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier) { contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - let ownedIdentitiesAndTokens = try? ServerSession.getAllTokens(within: obvContext) + let ownedIdentitiesAndTokens = try? ServerSession.getAllTokens(within: obvContext.context) ownedIdentitiesAndTokens?.forEach { (ownedCryptoId, token) in Task { await delegateManager?.webSocketDelegate.setServerSessionToken(to: token, for: ownedCryptoId) } } @@ -167,7 +196,7 @@ extension BootstrapWorker { private func reschedulePendingDeleteFromServers(flowId: FlowIdentifier, log: OSLog, delegateManager: ObvNetworkFetchDelegateManager, contextCreator: ObvCreateContextDelegate) { - var messageIdsWithPendingDeletes = [MessageIdentifier]() + var messageIdsWithPendingDeletes = [ObvMessageIdentifier]() contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in @@ -236,7 +265,7 @@ extension BootstrapWorker { continue } } - guard let messageId = msg.messageId else { assertionFailure(); continue } + guard let messageId = msg.messageId else { assert(msg.isDeleted); continue } delegateManager.networkFetchFlowDelegate.messagePayloadAndFromIdentityWereSet(messageId: messageId, attachmentIds: msg.attachmentIds, hasEncryptedExtendedMessagePayload: msg.hasEncryptedExtendedMessagePayload, flowId: flowId) } } @@ -350,4 +379,22 @@ extension BootstrapWorker { delegateManager.serverQueryDelegate.postAllPendingServerQuery(flowId: flowId) } + + private func deleteAllWebSocketServerQueries(contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier, logOnFailure: OSLog) { + contextCreator.performBackgroundTaskAndWait(flowId: flowId) { obvContext in + do { + try PendingServerQuery.deleteAllWebSocketServerQuery(within: obvContext) + guard obvContext.context.hasChanges else { return } + try obvContext.save(logOnFailure: logOnFailure) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + + private func deletePendingServerQueryOfNonExistingOwnedIdentities(delegateManager: ObvNetworkFetchDelegateManager, flowId: FlowIdentifier) { + delegateManager.serverQueryDelegate.deletePendingServerQueryOfNonExistingOwnedIdentities(flowId: flowId) + } + } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DeleteMessageAndAttachmentsFromServerCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DeleteMessageAndAttachmentsFromServerCoordinator.swift index 6b9e1659..825be77f 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DeleteMessageAndAttachmentsFromServerCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DeleteMessageAndAttachmentsFromServerCoordinator.swift @@ -43,7 +43,7 @@ final class DeleteMessageAndAttachmentsFromServerCoordinator: NSObject { return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) }() - private var _currentTasks = [UIBackgroundTaskIdentifier: (messageId: MessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() + private var _currentTasks = [UIBackgroundTaskIdentifier: (messageId: ObvMessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() private var currentTasksQueue = DispatchQueue(label: "DeleteMessageAndAttachmentsFromServerAndLocalInboxesCoordinatorQueueForCurrentDownloadTasks") } @@ -52,7 +52,7 @@ final class DeleteMessageAndAttachmentsFromServerCoordinator: NSObject { extension DeleteMessageAndAttachmentsFromServerCoordinator { - private func currentTaskExistsForMessage(messageId: MessageIdentifier) -> Bool { + private func currentTaskExistsForMessage(messageId: ObvMessageIdentifier) -> Bool { var exist = true currentTasksQueue.sync { exist = _currentTasks.values.contains(where: { $0.messageId == messageId }) @@ -60,23 +60,23 @@ extension DeleteMessageAndAttachmentsFromServerCoordinator { return exist } - private func removeInfoFor(_ task: URLSessionTask) -> (messageId: MessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (MessageIdentifier, FlowIdentifier, Data)? = nil + private func removeInfoFor(_ task: URLSessionTask) -> (messageId: ObvMessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvMessageIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentTasks.removeValue(forKey: UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)) } return info } - private func getInfoFor(_ task: URLSessionTask) -> (messageId: MessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (MessageIdentifier, FlowIdentifier, Data)? = nil + private func getInfoFor(_ task: URLSessionTask) -> (messageId: ObvMessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvMessageIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] } return info } - private func insert(_ task: URLSessionTask, messageId: MessageIdentifier, flowId: FlowIdentifier) { + private func insert(_ task: URLSessionTask, messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { currentTasksQueue.sync { _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (messageId, flowId, Data()) } @@ -107,7 +107,7 @@ extension DeleteMessageAndAttachmentsFromServerCoordinator: DeleteMessageAndAtta } - func processPendingDeleteFromServer(messageId: MessageIdentifier, flowId: FlowIdentifier) throws { + func processPendingDeleteFromServer(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) @@ -146,7 +146,7 @@ extension DeleteMessageAndAttachmentsFromServerCoordinator: DeleteMessageAndAtta let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(messageId.ownedCryptoIdentity, within: obvContext) - guard let serverSession = try ServerSession.get(within: obvContext, withIdentity: messageId.ownedCryptoIdentity) else { + guard let serverSession = try ServerSession.get(within: obvContext.context, withIdentity: messageId.ownedCryptoIdentity) else { syncQueueOutput = .serverSessionRequired(ownedIdentity: messageId.ownedCryptoIdentity, flowId: flowId) return } @@ -193,7 +193,15 @@ extension DeleteMessageAndAttachmentsFromServerCoordinator: DeleteMessageAndAtta case .serverSessionRequired(ownedIdentity: let identity, flowId: let flowId): os_log("Server session required for identity %{public}@", log: log, type: .debug, identity.debugDescription) - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: identity, flowId: flowId) + Task.detached { [weak self] in + do { + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: identity, currentInvalidToken: nil, flowId: flowId) + } catch { + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) + assertionFailure() + } + } + return case .failedToCreateTask(error: let error): os_log("Could not create task for ObvServerDeleteMessageAndAttachmentsMethod: %{public}@", log: log, type: .error, error.localizedDescription) @@ -236,7 +244,9 @@ extension DeleteMessageAndAttachmentsFromServerCoordinator: URLSessionDataDelega guard error == nil else { os_log("The ObvServerDeleteMessageAndAttachmentsMethod download task failed for message %{public}@ within flow %{public}@: %@", log: log, type: .error, messageId.debugDescription, flowId.debugDescription, error!.localizedDescription) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessPendingDeleteFromServer(messageId: messageId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessPendingDeleteFromServer(messageId: messageId, flowId: flowId) + } return } @@ -245,7 +255,9 @@ extension DeleteMessageAndAttachmentsFromServerCoordinator: URLSessionDataDelega guard let status = ObvServerDeleteMessageAndAttachmentsMethod.parseObvServerResponse(responseData: responseData, using: log) else { os_log("Could not parse the server response for the ObvServerDeleteMessageAndAttachmentsMethod download task for message %{public}@ within flow %{public}@", log: log, type: .fault, messageId.debugDescription, flowId.debugDescription) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessPendingDeleteFromServer(messageId: messageId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessPendingDeleteFromServer(messageId: messageId, flowId: flowId) + } return } @@ -291,34 +303,27 @@ extension DeleteMessageAndAttachmentsFromServerCoordinator: URLSessionDataDelega let ownedCryptoIdentity = messageId.ownedCryptoIdentity - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedCryptoIdentity) else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedCryptoIdentity), let token = serverSession.token else { _ = removeInfoFor(task) - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedCryptoIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() + Task.detached { [weak self] in + do { + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedCryptoIdentity, currentInvalidToken: nil, flowId: flowId) + } catch { + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) + assertionFailure() + } } return } - guard let token = serverSession.token else { - _ = removeInfoFor(task) + _ = removeInfoFor(task) + Task.detached { [weak self] in do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedCryptoIdentity, flowId: flowId) + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedCryptoIdentity, currentInvalidToken: token, flowId: flowId) } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } - return - } - - _ = removeInfoFor(task) - do { - try delegateManager.networkFetchFlowDelegate.serverSession(of: ownedCryptoIdentity, hasInvalidToken: token, flowId: flowId) - } catch { - os_log("Call to serverSession(of: ObvCryptoIdentity, hasInvalidToken: Data, flowId: FlowIdentifier) did fail", log: log, type: .fault) - assertionFailure() } } @@ -327,7 +332,9 @@ extension DeleteMessageAndAttachmentsFromServerCoordinator: URLSessionDataDelega case .generalError: os_log("Server reported general error during the ObvServerDeleteMessageAndAttachmentsMethod download task for message %{public}@ within flow %{public}@", log: log, type: .fault, messageId.debugDescription, flowId.debugDescription) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessPendingDeleteFromServer(messageId: messageId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessPendingDeleteFromServer(messageId: messageId, flowId: flowId) + } return } } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/DownloadAttachmentChunksCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/DownloadAttachmentChunksCoordinator.swift index 5f17ae5a..dd774f14 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/DownloadAttachmentChunksCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/DownloadAttachmentChunksCoordinator.swift @@ -28,13 +28,15 @@ final class DownloadAttachmentChunksCoordinator { // MARK: - Instance variables - fileprivate let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - fileprivate let logCategory = "DownloadAttachmentChunksCoordinator" private let internalQueueForHandlers = DispatchQueue(label: "Internal queue for handlers") private var _handlerForSessionIdentifier = [String: (() -> Void)]() private let localQueue = DispatchQueue(label: "DownloadAttachmentChunksCoordinatorQueue") private let queueForNotifications = DispatchQueue(label: "DownloadAttachmentChunksCoordinator queue for notifications") + private static let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem + private static let logCategory = "DownloadAttachmentChunksCoordinator" + private static var log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) + // We only use the `downloadAttachment` counter private var failedAttemptsCounterManager = FailedAttemptsCounterManager() private var retryManager = FetchRetryManager() @@ -66,7 +68,7 @@ final class DownloadAttachmentChunksCoordinator { // Maps an attachment identifier to its (exact) completed unit count typealias ChunkProgress = (totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) - private var _chunksProgressesForAttachment = [AttachmentIdentifier: (chunkProgresses: [ChunkProgress], dateOfLastUpdate: Date)]() + private var _chunksProgressesForAttachment = [ObvAttachmentIdentifier: (chunkProgresses: [ChunkProgress], dateOfLastUpdate: Date)]() private let queueForAttachmentsProgresses = DispatchQueue(label: "Internal queue for attachments progresses", attributes: .concurrent) private var _currentURLSessions = [WeakRef]() @@ -87,19 +89,19 @@ final class DownloadAttachmentChunksCoordinator { } // This array tracks the attachment identifiers that are currently refreshing their signed URLs, so as to prevent an infinite loop of refresh - private var _attachmentIdsRefreshingSignedURLs = Set() + private var _attachmentIdsRefreshingSignedURLs = Set() private let queueForAttachmentIdsRefreshingSignedURLs = DispatchQueue(label: "Queue for sync access to _attachmentIdsRefreshingSignedURLs") - private func attachmentStartsToRefreshSignedURLs(attachmentId: AttachmentIdentifier) { + private func attachmentStartsToRefreshSignedURLs(attachmentId: ObvAttachmentIdentifier) { queueForAttachmentIdsRefreshingSignedURLs.sync { _ = _attachmentIdsRefreshingSignedURLs.insert(attachmentId) } } - private func attachmentStoppedToRefreshSignedURLs(attachmentId: AttachmentIdentifier) { + private func attachmentStoppedToRefreshSignedURLs(attachmentId: ObvAttachmentIdentifier) { queueForAttachmentIdsRefreshingSignedURLs.sync { _ = _attachmentIdsRefreshingSignedURLs.remove(attachmentId) } } - private func attachmentIsAlreadyRefreshingSignedURLs(attachmentId: AttachmentIdentifier) -> Bool { + private func attachmentIsAlreadyRefreshingSignedURLs(attachmentId: ObvAttachmentIdentifier) -> Bool { var val = false queueForAttachmentIdsRefreshingSignedURLs.sync { val = _attachmentIdsRefreshingSignedURLs.contains(attachmentId) @@ -107,6 +109,12 @@ final class DownloadAttachmentChunksCoordinator { return val } + + init(logPrefix: String) { + let logSubsystem = "\(logPrefix).\(Self.defaultLogSubsystem)" + Self.log = OSLog(subsystem: logSubsystem, category: Self.logCategory) + } + } @@ -119,38 +127,35 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate } - func processAllAttachmentsOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func processAllAttachmentsOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - os_log("🌊 Call to processAllAttachmentsOfMessage within flow %{public}@", log: log, type: .debug, flowId.debugDescription) + os_log("🌊 Call to processAllAttachmentsOfMessage within flow %{public}@", log: Self.log, type: .debug, flowId.debugDescription) guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } - var attachmentsRequiringSignedURLs = [AttachmentIdentifier]() + var attachmentsRequiringSignedURLs = [ObvAttachmentIdentifier]() contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in let message: InboxMessage do { guard let _message = try InboxMessage.get(messageId: messageId, within: obvContext) else { - os_log("Could not find message in DB", log: log, type: .fault) + os_log("Could not find message in DB", log: Self.log, type: .fault) return } message = _message } catch { - os_log("Failed to get inbox message: %{public}@", log: log, type: .fault, error.localizedDescription) + os_log("Failed to get inbox message: %{public}@", log: Self.log, type: .fault, error.localizedDescription) return } @@ -173,25 +178,22 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate /// We queue an operation that will delete all the signed URLs /// of the attachment, then an operation that resume a download task that gets signed URLs from the server. /// We do so after adding a barrier to the queue, so as to make sure not to interfere with other tasks. - private func downloadSignedURLsForAttachments(attachmentIds: [AttachmentIdentifier], flowId: FlowIdentifier) { + private func downloadSignedURLsForAttachments(attachmentIds: [ObvAttachmentIdentifier], flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } guard let identityDelegate = delegateManager.identityDelegate else { - os_log("The identity delegate is not set", log: log, type: .fault) + os_log("The identity delegate is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -231,17 +233,14 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate func processCompletionHandler(_ handler: @escaping () -> Void, forHandlingEventsForBackgroundURLSessionWithIdentifier identifier: String, withinFlowId flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) DispatchQueue.main.async { handler() } assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -284,16 +283,13 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate func cleanExistingOutboxAttachmentSessions(flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -302,13 +298,13 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate guard let _self = self else { return } - var attachmentIds = [AttachmentIdentifier]() + var attachmentIds = [ObvAttachmentIdentifier]() contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in let attachmentSessions: [InboxAttachmentSession] do { attachmentSessions = try InboxAttachmentSession.getAll(within: obvContext) } catch { - os_log("Could not get attachments sessions", log: log, type: .fault) + os_log("Could not get attachments sessions", log: Self.log, type: .fault) return } attachmentIds = attachmentSessions.compactMap({ $0.attachment?.attachmentId }) @@ -327,17 +323,16 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate self?.internalOperationQueue.addOperations(operationsToQueue, waitUntilFinished: true) } - } - func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async -> [AttachmentIdentifier: Float] { + func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async -> [ObvAttachmentIdentifier: Float] { - return await withCheckedContinuation { (continuation: CheckedContinuation<[AttachmentIdentifier: Float], Never>) in + return await withCheckedContinuation { (continuation: CheckedContinuation<[ObvAttachmentIdentifier: Float], Never>) in queueForAttachmentsProgresses.async { [weak self] in guard let _self = self else { continuation.resume(returning: [:]); return } - var progressesToReturn = [AttachmentIdentifier: Float]() + var progressesToReturn = [ObvAttachmentIdentifier: Float]() let appropriateChunksProgressesForAttachment = _self._chunksProgressesForAttachment.filter({ $0.value.dateOfLastUpdate > date }) for (attachmentId, value) in appropriateChunksProgressesForAttachment { let totalBytesWritten = value.chunkProgresses.map({ $0.totalBytesWritten }).reduce(0, +) @@ -355,33 +350,30 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate func resumeMissingAttachmentDownloads(flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } guard let identityDelegate = delegateManager.identityDelegate else { - os_log("The identity delegate is not set", log: log, type: .fault) + os_log("The identity delegate is not set", log: Self.log, type: .fault) assertionFailure() return } guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) assertionFailure() return } - var resumedAttachmentIds = [AttachmentIdentifier]() + var resumedAttachmentIds = [ObvAttachmentIdentifier]() localQueue.async { [weak self] in @@ -395,22 +387,22 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate do { attachmentsToResume = (try InboxAttachment.getAllDownloadableWithoutSession(within: obvContext)) } catch { - os_log("Could not get attachments to upload", log: log, type: .fault) + os_log("Could not get attachments to download", log: Self.log, type: .fault) return } guard !attachmentsToResume.isEmpty else { - os_log("There is no downloadable attachment left", log: log, type: .info) + os_log("There is no downloadable attachment left", log: Self.log, type: .info) return } - os_log("👑 We found %{public}d attachment(s) to resume.", log: log, type: .info, attachmentsToResume.count) + os_log("👑 We found %{public}d attachment(s) to resume.", log: Self.log, type: .info, attachmentsToResume.count) attachmentsToResume.forEach { guard let attachmentId = $0.attachmentId else { assertionFailure(); return } - os_log("👑 Attachment %{public}@ has a total of %{public}d chunk(s), and %{public}d still need to be downloaded", log: log, type: .info, attachmentId.debugDescription, $0.chunks.count, $0.chunks.filter({ !$0.cleartextChunkWasWrittenToAttachmentFile }).count) + os_log("👑 Attachment %{public}@ has a total of %{public}d chunk(s), and %{public}d still need to be downloaded", log: Self.log, type: .info, attachmentId.debugDescription, $0.chunks.count, $0.chunks.filter({ !$0.cleartextChunkWasWrittenToAttachmentFile }).count) let ops = _self.getOperationsForResumingAttachment($0, flowId: flowId, logSubsystem: delegateManager.logSubsystem, inbox: delegateManager.inbox, contextCreator: contextCreator, identityDelegate: identityDelegate) - os_log("👑 We created %{public}d operations in order to download Attachment %{public}@", log: log, type: .info, ops.count, attachmentId.debugDescription) + os_log("👑 We created %{public}d operations in order to download Attachment %{public}@", log: Self.log, type: .info, ops.count, attachmentId.debugDescription) guard !ops.isEmpty else { assertionFailure(); return } operationsToQueue.append(contentsOf: ops) resumedAttachmentIds.append(attachmentId) @@ -435,31 +427,28 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate } - func resumeAttachmentDownloadIfResumeIsRequested(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func resumeAttachmentDownloadIfResumeIsRequested(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } guard let identityDelegate = delegateManager.identityDelegate else { - os_log("The identity delegate is not set", log: log, type: .fault) + os_log("The identity delegate is not set", log: Self.log, type: .fault) assertionFailure() return } guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -480,13 +469,13 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate guard _attachmentToResume.status == .resumeRequested else { return } attachmentToResume = _attachmentToResume } catch { - os_log("Could not get attachments to upload", log: log, type: .fault) + os_log("Could not get attachments to upload", log: Self.log, type: .fault) return } - os_log("👑 Attachment %{public}@ has a total of %{public}d chunk(s) and its download is about to be resumed", log: log, type: .info, attachmentId.debugDescription, attachmentToResume.chunks.count) + os_log("👑 Attachment %{public}@ has a total of %{public}d chunk(s) and its download is about to be resumed", log: Self.log, type: .info, attachmentId.debugDescription, attachmentToResume.chunks.count) operationsToQueue = _self.getOperationsForResumingAttachment(attachmentToResume, flowId: flowId, logSubsystem: delegateManager.logSubsystem, inbox: delegateManager.inbox, contextCreator: contextCreator, identityDelegate: identityDelegate) - os_log("👑 We created %{public}d operations in order to download Attachment %{public}@", log: log, type: .info, operationsToQueue.count, attachmentId.debugDescription) + os_log("👑 We created %{public}d operations in order to download Attachment %{public}@", log: Self.log, type: .info, operationsToQueue.count, attachmentId.debugDescription) } @@ -509,19 +498,16 @@ extension DownloadAttachmentChunksCoordinator: DownloadAttachmentChunksDelegate extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTracker { - func downloadAttachmentChunksSessionDidBecomeInvalid(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: DownloadAttachmentChunksSessionDelegate.ErrorForTracker?) { + func downloadAttachmentChunksSessionDidBecomeInvalid(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: DownloadAttachmentChunksSessionDelegate.ErrorForTracker?) { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -533,7 +519,7 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr localQueue.sync { contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in guard let attachment = try? InboxAttachment.get(attachmentId: attachmentId, within: obvContext) else { - os_log("Could not find attachment in database", log: log, type: .info) + os_log("Could not find attachment in database", log: Self.log, type: .info) attachmentIsDownloaded = false return } @@ -542,9 +528,9 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr if let attachmentSession = attachment.session { obvContext.delete(attachmentSession) do { - try obvContext.save(logOnFailure: log) + try obvContext.save(logOnFailure: Self.log) } catch { - os_log("Could not delete InboxAttachmentSession although is was invalidated", log: log, type: .fault) + os_log("Could not delete InboxAttachmentSession although is was invalidated", log: Self.log, type: .fault) assertionFailure() return } @@ -581,9 +567,11 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr .atLeastOneChunkIsNotYetAvailableOnServer, .couldNotOpenEncryptedChunkFile, .unsupportedHTTPErrorStatusCode: - let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) - retryManager.executeWithDelay(delay) { [weak self] in - self?.resumeAttachmentDownloadIfResumeIsRequested(attachmentId: attachmentId, flowId: flowId) + Task { [weak self] in + guard let self else { return } + let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) + await retryManager.waitForDelay(milliseconds: delay) + resumeAttachmentDownloadIfResumeIsRequested(attachmentId: attachmentId, flowId: flowId) } case .atLeastOneChunkDownloadPrivateURLHasExpired: downloadSignedURLsForAttachments(attachmentIds: [attachmentId], flowId: flowId) @@ -604,7 +592,7 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr } - func attachmentChunkDidProgress(attachmentId: AttachmentIdentifier, chunkProgress: (chunkNumber: Int, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64), flowId: FlowIdentifier) { + func attachmentChunkDidProgress(attachmentId: ObvAttachmentIdentifier, chunkProgress: (chunkNumber: Int, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64), flowId: FlowIdentifier) { queueForAttachmentsProgresses.async(flags: .barrier) { [weak self] in guard let _self = self else { return } @@ -618,16 +606,13 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr } else { guard let delegateManager = _self.delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: _self.logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: _self.logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -648,7 +633,7 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr /// This method is called by the delegate of the session managing a chunk download task. It is called as soon as an encrypted chunk was downloaded, decrypted then written to the appropriate location in the attachment file. - func attachmentChunkWasDecryptedAndWrittenToAttachmentFile(attachmentId: AttachmentIdentifier, chunkNumber: Int, flowId: FlowIdentifier) { + func attachmentChunkWasDecryptedAndWrittenToAttachmentFile(attachmentId: ObvAttachmentIdentifier, chunkNumber: Int, flowId: FlowIdentifier) { failedAttemptsCounterManager.reset(counter: .downloadAttachment(attachmentId: attachmentId)) queueForAttachmentsProgresses.async(flags: .barrier) { [weak self] in @@ -664,7 +649,7 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr } - func attachmentDownloadIsComplete(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func attachmentDownloadIsComplete(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { // When an attachment is downloaded, we remove the progresses we stored in memory for its chunks @@ -675,8 +660,7 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr // We also immediately notify the network fetch flow delegate (so as to notify the app) guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -686,7 +670,7 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr } - private func createChunksProgressesForAttachment(attachmentId: AttachmentIdentifier, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier) -> ([ChunkProgress], Date)? { + private func createChunksProgressesForAttachment(attachmentId: ObvAttachmentIdentifier, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier) -> ([ChunkProgress], Date)? { /// Must be executed on queueForAttachmentsProgresses var chunksProgressess: ([ChunkProgress], Date)? contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in @@ -697,19 +681,16 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr } - func resumeDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func resumeDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, forceResume: Bool, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -723,9 +704,16 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr // We prevent any interference with previous operations self?.internalOperationQueue.addBarrierBlock({}) - let op = MarkInboxAttachmentAsPausedOrResumedOperation(attachmentId: attachmentId, targetStatus: .resumed, logSubsystem: delegateManager.logSubsystem, flowId: flowId, contextCreator: contextCreator, delegate: self) + let op = MarkInboxAttachmentAsPausedOrResumedOperation( + attachmentId: attachmentId, + targetStatus: .resumed, + force: forceResume, + logSubsystem: delegateManager.logSubsystem, + flowId: flowId, + contextCreator: contextCreator, + delegate: self) self?.internalOperationQueue.addOperations([op], waitUntilFinished: true) - op.logReasonIfCancelled(log: log) + op.logReasonIfCancelled(log: Self.log) if op.isCancelled { guard let reasonForCancel = op.reasonForCancel else { assertionFailure() @@ -738,26 +726,25 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr case .cannotFindInboxAttachmentInDatabase, .attachmentIsMarkedForDeletion: return } + } else if forceResume { + self?.resumeMissingAttachmentDownloads(flowId: flowId) } } - + } - func pauseDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func pauseDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -767,9 +754,16 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr // We prevent any interference with previous operations self?.internalOperationQueue.addBarrierBlock({}) - let op = MarkInboxAttachmentAsPausedOrResumedOperation(attachmentId: attachmentId, targetStatus: .paused, logSubsystem: delegateManager.logSubsystem, flowId: flowId, contextCreator: contextCreator, delegate: self) + let op = MarkInboxAttachmentAsPausedOrResumedOperation( + attachmentId: attachmentId, + targetStatus: .paused, + force: false, + logSubsystem: delegateManager.logSubsystem, + flowId: flowId, + contextCreator: contextCreator, + delegate: self) self?.internalOperationQueue.addOperations([op], waitUntilFinished: true) - op.logReasonIfCancelled(log: log) + op.logReasonIfCancelled(log: Self.log) if op.isCancelled { guard let reasonForCancel = op.reasonForCancel else { assertionFailure() @@ -795,27 +789,24 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunkDownloadProgressTr extension DownloadAttachmentChunksCoordinator: MarkInboxAttachmentAsPausedOrResumedOperationDelegate { - func inboxAttachmentWasJustMarkedAsPausedOrResumed(attachmentId: AttachmentIdentifier, pausedOrResumed: MarkInboxAttachmentAsPausedOrResumedOperation.PausedOrResumed, flowId: FlowIdentifier) { + func inboxAttachmentWasJustMarkedAsPausedOrResumed(attachmentId: ObvAttachmentIdentifier, pausedOrResumed: MarkInboxAttachmentAsPausedOrResumedOperation.PausedOrResumed, flowId: FlowIdentifier) { // If we reach this point, the attachment was just marked as "resumed" or as "paused". guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + os_log("The context creator manager is not set", log: Self.log, type: .fault) assertionFailure() return } guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -870,15 +861,14 @@ extension DownloadAttachmentChunksCoordinator: MarkInboxAttachmentAsPausedOrResu extension DownloadAttachmentChunksCoordinator: AttachmentChunksSignedURLsTracker { - func getSignedURLsSessionDidBecomeInvalid(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: GetSignedURLsSessionDelegate.ErrorForTracker?) { + func getSignedURLsSessionDidBecomeInvalid(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: GetSignedURLsSessionDelegate.ErrorForTracker?) { defer { attachmentStoppedToRefreshSignedURLs(attachmentId: attachmentId) } guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -897,9 +887,11 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunksSignedURLsTracker .couldNotSaveContext, .generalErrorFromServer, .sessionInvalidationError: - let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) - retryManager.executeWithDelay(delay) { [weak self] in - self?.downloadSignedURLsForAttachments(attachmentIds: [attachmentId], flowId: flowId) + Task { [weak self] in + guard let self else { return } + let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) + await retryManager.waitForDelay(milliseconds: delay) + downloadSignedURLsForAttachments(attachmentIds: [attachmentId], flowId: flowId) } case .cannotFindAttachmentInDatabase: // We do nothing @@ -916,22 +908,13 @@ extension DownloadAttachmentChunksCoordinator: AttachmentChunksSignedURLsTracker extension DownloadAttachmentChunksCoordinator: FinalizeCleanExistingInboxAttachmentSessionsDelegate { - func cleanExistingInboxAttachmentSessionsIsFinished(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: CleanExistingInboxAttachmentSessions.ReasonForCancel?) { + func cleanExistingInboxAttachmentSessionsIsFinished(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: CleanExistingInboxAttachmentSessions.ReasonForCancel?) { failedAttemptsCounterManager.reset(counter: .downloadAttachment(attachmentId: attachmentId)) - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let error = error else { + guard let error else { // This is the best case, when no error occured - os_log("We successfully cleaned InboxAttachmentSession for attachment %{public}@", log: log, type: .info, attachmentId.debugDescription) + os_log("We successfully cleaned InboxAttachmentSession for attachment %{public}@", log: Self.log, type: .info, attachmentId.debugDescription) return } @@ -954,24 +937,15 @@ extension DownloadAttachmentChunksCoordinator: FinalizeCleanExistingInboxAttachm extension DownloadAttachmentChunksCoordinator: FinalizeSignedURLsOperationsDelegate { - func signedURLsOperationsAreFinished(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: ResumeTaskForGettingAttachmentSignedURLsOperation.ReasonForCancel?) { + func signedURLsOperationsAreFinished(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: ResumeTaskForGettingAttachmentSignedURLsOperation.ReasonForCancel?) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let error = error else { + guard let error else { // This is the best case, when no error occured - os_log("Signed URLs operations are finished for attachment %{public}@", log: log, type: .info, attachmentId.debugDescription) + os_log("Signed URLs operations are finished for attachment %{public}@", log: Self.log, type: .info, attachmentId.debugDescription) return } - os_log("Failed to obtain signed URLs for attachment %{public}@", log: log, type: .error, attachmentId.debugDescription) + os_log("Failed to obtain signed URLs for attachment %{public}@", log: Self.log, type: .error, attachmentId.debugDescription) attachmentStoppedToRefreshSignedURLs(attachmentId: attachmentId) @@ -986,15 +960,19 @@ extension DownloadAttachmentChunksCoordinator: FinalizeSignedURLsOperationsDeleg .nonNilSignedURLWasFound, .coreDataFailure, .failedToCreateTask: - let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) - retryManager.executeWithDelay(delay) { [weak self] in - self?.downloadSignedURLsForAttachments(attachmentIds: [attachmentId], flowId: flowId) + Task { [weak self] in + guard let self else { return } + let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) + await retryManager.waitForDelay(milliseconds: delay) + downloadSignedURLsForAttachments(attachmentIds: [attachmentId], flowId: flowId) } case .attachmentChunksSignedURLsTrackerNotSet: assertionFailure() - let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) - retryManager.executeWithDelay(delay) { [weak self] in - self?.downloadSignedURLsForAttachments(attachmentIds: [attachmentId], flowId: flowId) + Task { [weak self] in + guard let self else { return } + let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) + await retryManager.waitForDelay(milliseconds: delay) + downloadSignedURLsForAttachments(attachmentIds: [attachmentId], flowId: flowId) } } @@ -1007,23 +985,14 @@ extension DownloadAttachmentChunksCoordinator: FinalizeSignedURLsOperationsDeleg extension DownloadAttachmentChunksCoordinator: FinalizeDownloadChunksOperationsDelegate { - func downloadChunksOperationsAreFinished(attachmentId: AttachmentIdentifier, urlSession: URLSession?, flowId: FlowIdentifier, error: ResumeDownloadsOfMissingChunksOperation.ReasonForCancel?) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) + func downloadChunksOperationsAreFinished(attachmentId: ObvAttachmentIdentifier, urlSession: URLSession?, flowId: FlowIdentifier, error: ResumeDownloadsOfMissingChunksOperation.ReasonForCancel?) { - guard let error = error else { + guard let error else { // This is the best case, when no error occured if let session = urlSession { addCurrentURLSession(session) } - os_log("All operations for downloading chunks of attachment %{public}@ are finished and did not cancel", log: log, type: .info, attachmentId.debugDescription) + os_log("All operations for downloading chunks of attachment %{public}@ are finished and did not cancel", log: Self.log, type: .info, attachmentId.debugDescription) return } @@ -1040,9 +1009,11 @@ extension DownloadAttachmentChunksCoordinator: FinalizeDownloadChunksOperationsD .failedToCreateTask, .coreDataFailure: urlSession?.invalidateAndCancel() - let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) - retryManager.executeWithDelay(delay) { [weak self] in - self?.resumeAttachmentDownloadIfResumeIsRequested(attachmentId: attachmentId, flowId: flowId) + Task { [weak self] in + guard let self else { return } + let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadAttachment(attachmentId: attachmentId)) + await retryManager.waitForDelay(milliseconds: delay) + resumeAttachmentDownloadIfResumeIsRequested(attachmentId: attachmentId, flowId: flowId) } case .allChunksAreAlreadyDownloaded: assert(urlSession != nil) @@ -1091,7 +1062,7 @@ extension DownloadAttachmentChunksCoordinator { } - private func getOperationsForDownloadingSignedURLsForAttachment(attachmentId: AttachmentIdentifier, logSubsystem: String, obvContext: ObvContext, identityDelegate: ObvIdentityDelegate) -> [Operation] { + private func getOperationsForDownloadingSignedURLsForAttachment(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, obvContext: ObvContext, identityDelegate: ObvIdentityDelegate) -> [Operation] { var operations = [Operation]() @@ -1110,6 +1081,66 @@ extension DownloadAttachmentChunksCoordinator { } + + +// MARK: - Errors + +extension DownloadAttachmentChunksCoordinator { + + enum ObvError: LocalizedError { + + case theDelegateManagerIsNotSet + case theContextCreatorIsNotSet + case anOperationCancelled(localizedDescription: String?) + + var errorDescription: String? { + switch self { + case .theDelegateManagerIsNotSet: + return "The delegate manager is not set" + case .theContextCreatorIsNotSet: + return "The context creator is not set" + case .anOperationCancelled(localizedDescription: let localizedDescription): + return "An operation cancelled with reason: \(String(describing: localizedDescription))" + } + } + } + + +} + +// MARK: - Helpers + +extension DownloadAttachmentChunksCoordinator { + + private func createCompositionOfOneContextualOperation(op1: ContextualOperationWithSpecificReasonForCancel, flowId: FlowIdentifier) throws -> CompositionOfOneContextualOperation { + + guard let delegateManager else { + assertionFailure("The Delegate Manager is not set") + throw ObvError.theDelegateManagerIsNotSet + } + + guard let contextCreator = delegateManager.contextCreator else { + assertionFailure("The context creator manager is not set") + throw ObvError.theContextCreatorIsNotSet + } + + let queueForComposedOperations = delegateManager.queueForComposedOperations + + let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: contextCreator, queueForComposedOperations: queueForComposedOperations, log: Self.log, flowId: flowId) + + composedOp.completionBlock = { [weak composedOp] in + assert(composedOp != nil) + composedOp?.logReasonIfCancelled(log: Self.log) + } + return composedOp + + } + +} + + +// MARK: - Other stuff + fileprivate final class WeakRef where T: AnyObject { private(set) weak var value: T? init(to object: T) { diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/CleanExistingInboxAttachmentSessions/CleanExistingInboxAttachmentSessions.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/CleanExistingInboxAttachmentSessions/CleanExistingInboxAttachmentSessions.swift index b4afbdbd..882050bc 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/CleanExistingInboxAttachmentSessions/CleanExistingInboxAttachmentSessions.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/CleanExistingInboxAttachmentSessions/CleanExistingInboxAttachmentSessions.swift @@ -36,7 +36,7 @@ final class CleanExistingInboxAttachmentSessions: Operation { } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog private let logCategory = String(describing: CleanExistingInboxAttachmentSessions.self) @@ -46,7 +46,7 @@ final class CleanExistingInboxAttachmentSessions: Operation { private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, logSubsystem: String, contextCreator: ObvCreateContextDelegate, delegate: FinalizeCleanExistingInboxAttachmentSessionsDelegate, flowId: FlowIdentifier) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, contextCreator: ObvCreateContextDelegate, delegate: FinalizeCleanExistingInboxAttachmentSessionsDelegate, flowId: FlowIdentifier) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) @@ -126,6 +126,6 @@ final class CleanExistingInboxAttachmentSessions: Operation { protocol FinalizeCleanExistingInboxAttachmentSessionsDelegate: AnyObject { - func cleanExistingInboxAttachmentSessionsIsFinished(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: CleanExistingInboxAttachmentSessions.ReasonForCancel?) + func cleanExistingInboxAttachmentSessionsIsFinished(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: CleanExistingInboxAttachmentSessions.ReasonForCancel?) } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/DownloadingChunksOperations/ReCreateURLSessionWithNewDelegateForAttachmentDownloadOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/DownloadingChunksOperations/ReCreateURLSessionWithNewDelegateForAttachmentDownloadOperation.swift index 1e0caf30..21a17eeb 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/DownloadingChunksOperations/ReCreateURLSessionWithNewDelegateForAttachmentDownloadOperation.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/DownloadingChunksOperations/ReCreateURLSessionWithNewDelegateForAttachmentDownloadOperation.swift @@ -39,7 +39,7 @@ final class ReCreateURLSessionWithNewDelegateForAttachmentDownloadOperation: Ope } private let uuid = UUID() - let attachmentId: AttachmentIdentifier + let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog private let flowId: FlowIdentifier @@ -52,7 +52,7 @@ final class ReCreateURLSessionWithNewDelegateForAttachmentDownloadOperation: Ope private(set) var reasonForCancel: ReasonForCancel? private(set) var urlSession: URLSession? - init(attachmentId: AttachmentIdentifier, logSubsystem: String, flowId: FlowIdentifier, inbox: URL, contextCreator: ObvCreateContextDelegate, attachmentChunkDownloadProgressTracker: AttachmentChunkDownloadProgressTracker) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, flowId: FlowIdentifier, inbox: URL, contextCreator: ObvCreateContextDelegate, attachmentChunkDownloadProgressTracker: AttachmentChunkDownloadProgressTracker) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/DownloadingChunksOperations/ResumeDownloadsOfMissingChunksOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/DownloadingChunksOperations/ResumeDownloadsOfMissingChunksOperation.swift index 90aee467..7f327b85 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/DownloadingChunksOperations/ResumeDownloadsOfMissingChunksOperation.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/DownloadingChunksOperations/ResumeDownloadsOfMissingChunksOperation.swift @@ -44,7 +44,7 @@ final class ResumeDownloadsOfMissingChunksOperation: Operation { private let log: OSLog private let flowId: FlowIdentifier private let logCategory = String(describing: ResumeDownloadsOfMissingChunksOperation.self) - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private(set) var urlSession: URLSession? private weak var contextCreator: ObvCreateContextDelegate? @@ -53,7 +53,7 @@ final class ResumeDownloadsOfMissingChunksOperation: Operation { private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, logSubsystem: String, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate, identityDelegate: ObvIdentityDelegate, delegate: FinalizeDownloadChunksOperationsDelegate) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate, identityDelegate: ObvIdentityDelegate, delegate: FinalizeDownloadChunksOperationsDelegate) { self.flowId = flowId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) @@ -188,6 +188,6 @@ extension ResumeDownloadsOfMissingChunksOperation { protocol FinalizeDownloadChunksOperationsDelegate: AnyObject { - func downloadChunksOperationsAreFinished(attachmentId: AttachmentIdentifier, urlSession: URLSession?, flowId: FlowIdentifier, error: ResumeDownloadsOfMissingChunksOperation.ReasonForCancel?) + func downloadChunksOperationsAreFinished(attachmentId: ObvAttachmentIdentifier, urlSession: URLSession?, flowId: FlowIdentifier, error: ResumeDownloadsOfMissingChunksOperation.ReasonForCancel?) } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/DeletePreviousAttachmentSignedURLsOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/DeletePreviousAttachmentSignedURLsOperation.swift index 26e482d0..b166c5eb 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/DeletePreviousAttachmentSignedURLsOperation.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/DeletePreviousAttachmentSignedURLsOperation.swift @@ -34,7 +34,7 @@ final class DeletePreviousAttachmentSignedURLsOperation: Operation { } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog private let obvContext: ObvContext @@ -42,7 +42,7 @@ final class DeletePreviousAttachmentSignedURLsOperation: Operation { private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, logSubsystem: String, obvContext: ObvContext) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, obvContext: ObvContext) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/ResumeTaskForGettingAttachmentSignedURLsOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/ResumeTaskForGettingAttachmentSignedURLsOperation.swift index c3ff09b8..2cf358e9 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/ResumeTaskForGettingAttachmentSignedURLsOperation.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/ResumeTaskForGettingAttachmentSignedURLsOperation.swift @@ -39,7 +39,7 @@ final class ResumeTaskForGettingAttachmentSignedURLsOperation: Operation { } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog private let obvContext: ObvContext @@ -52,7 +52,7 @@ final class ResumeTaskForGettingAttachmentSignedURLsOperation: Operation { private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, logSubsystem: String, obvContext: ObvContext, identityDelegate: ObvIdentityDelegate, attachmentChunksSignedURLsTracker: AttachmentChunksSignedURLsTracker, delegate: FinalizeSignedURLsOperationsDelegate) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, obvContext: ObvContext, identityDelegate: ObvIdentityDelegate, attachmentChunksSignedURLsTracker: AttachmentChunksSignedURLsTracker, delegate: FinalizeSignedURLsOperationsDelegate) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) @@ -158,6 +158,6 @@ extension ResumeTaskForGettingAttachmentSignedURLsOperation { protocol FinalizeSignedURLsOperationsDelegate: AnyObject { - func signedURLsOperationsAreFinished(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: ResumeTaskForGettingAttachmentSignedURLsOperation.ReasonForCancel?) + func signedURLsOperationsAreFinished(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: ResumeTaskForGettingAttachmentSignedURLsOperation.ReasonForCancel?) } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/MarkInboxAttachmentAsPausedOrResumedOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/MarkInboxAttachmentAsPausedOrResumedOperation.swift index 2c66e4f6..e65eb739 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/MarkInboxAttachmentAsPausedOrResumedOperation.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/Operations/MarkInboxAttachmentAsPausedOrResumedOperation.swift @@ -77,7 +77,7 @@ final class MarkInboxAttachmentAsPausedOrResumedOperation: Operation { } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog weak private var contextCreator: ObvCreateContextDelegate? @@ -85,10 +85,11 @@ final class MarkInboxAttachmentAsPausedOrResumedOperation: Operation { private let logCategory = String(describing: DeletePreviousAttachmentSignedURLsOperation.self) private let targetStatus: PausedOrResumed weak private var delegate: MarkInboxAttachmentAsPausedOrResumedOperationDelegate? + private let force: Bool private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, targetStatus: PausedOrResumed, logSubsystem: String, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate, delegate: MarkInboxAttachmentAsPausedOrResumedOperationDelegate?) { + init(attachmentId: ObvAttachmentIdentifier, targetStatus: PausedOrResumed, force: Bool, logSubsystem: String, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate, delegate: MarkInboxAttachmentAsPausedOrResumedOperationDelegate?) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) @@ -96,6 +97,7 @@ final class MarkInboxAttachmentAsPausedOrResumedOperation: Operation { self.flowId = flowId self.targetStatus = targetStatus self.delegate = delegate + self.force = force super.init() } @@ -137,7 +139,7 @@ final class MarkInboxAttachmentAsPausedOrResumedOperation: Operation { case .paused: try attachment.pauseDownload() case .resumed: - try attachment.resumeDownload() + try attachment.resumeDownload(force: force) } } catch { return cancel(withReason: .couldNotResumeOrPauseDownload) @@ -164,5 +166,5 @@ final class MarkInboxAttachmentAsPausedOrResumedOperation: Operation { protocol MarkInboxAttachmentAsPausedOrResumedOperationDelegate: AnyObject { - func inboxAttachmentWasJustMarkedAsPausedOrResumed(attachmentId: AttachmentIdentifier, pausedOrResumed: MarkInboxAttachmentAsPausedOrResumedOperation.PausedOrResumed, flowId: FlowIdentifier) + func inboxAttachmentWasJustMarkedAsPausedOrResumed(attachmentId: ObvAttachmentIdentifier, pausedOrResumed: MarkInboxAttachmentAsPausedOrResumedOperation.PausedOrResumed, flowId: FlowIdentifier) } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/SessionDelegates/DownloadAttachmentChunksSessionDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/SessionDelegates/DownloadAttachmentChunksSessionDelegate.swift index 1644e4c5..5f063fdb 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/SessionDelegates/DownloadAttachmentChunksSessionDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/SessionDelegates/DownloadAttachmentChunksSessionDelegate.swift @@ -28,7 +28,7 @@ final class DownloadAttachmentChunksSessionDelegate: NSObject { let uuid = UUID() private let logCategory = String(describing: DownloadAttachmentChunksSessionDelegate.self) private let log: OSLog - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let obvContext: ObvContext private let inbox: URL private let queueSynchronizingCallsToTracker = DispatchQueue(label: "Queue for sync tracker calls within DownloadAttachmentChunksSessionDelegate") @@ -61,7 +61,7 @@ final class DownloadAttachmentChunksSessionDelegate: NSObject { } } - init(attachmentId: AttachmentIdentifier, obvContext: ObvContext, logSubsystem: String, inbox: URL) { + init(attachmentId: ObvAttachmentIdentifier, obvContext: ObvContext, logSubsystem: String, inbox: URL) { self.log = OSLog(subsystem: logSubsystem, category: logCategory) self.attachmentId = attachmentId self.obvContext = obvContext @@ -80,11 +80,11 @@ final class DownloadAttachmentChunksSessionDelegate: NSObject { // MARK: - Tracker protocol AttachmentChunkDownloadProgressTracker: AnyObject { - func downloadAttachmentChunksSessionDidBecomeInvalid(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: DownloadAttachmentChunksSessionDelegate.ErrorForTracker?) + func downloadAttachmentChunksSessionDidBecomeInvalid(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: DownloadAttachmentChunksSessionDelegate.ErrorForTracker?) func urlSessionDidFinishEventsForSessionWithIdentifier(_ identifier: String) - func attachmentChunkDidProgress(attachmentId: AttachmentIdentifier, chunkProgress: (chunkNumber: Int, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64), flowId: FlowIdentifier) - func attachmentChunkWasDecryptedAndWrittenToAttachmentFile(attachmentId: AttachmentIdentifier, chunkNumber: Int, flowId: FlowIdentifier) - func attachmentDownloadIsComplete(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) + func attachmentChunkDidProgress(attachmentId: ObvAttachmentIdentifier, chunkProgress: (chunkNumber: Int, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64), flowId: FlowIdentifier) + func attachmentChunkWasDecryptedAndWrittenToAttachmentFile(attachmentId: ObvAttachmentIdentifier, chunkNumber: Int, flowId: FlowIdentifier) + func attachmentDownloadIsComplete(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) } // MARK: - URLSessionDelegate diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/SessionDelegates/GetSignedURLsSessionDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/SessionDelegates/GetSignedURLsSessionDelegate.swift index e842db07..16c68243 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/SessionDelegates/GetSignedURLsSessionDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/DownloadAttachmentChunksCoordinator/SessionDelegates/GetSignedURLsSessionDelegate.swift @@ -29,7 +29,7 @@ import OlvidUtils final class GetSignedURLsSessionDelegate: NSObject { private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let obvContext: ObvContext private let log: OSLog private var dataReceived = Data() @@ -62,7 +62,7 @@ final class GetSignedURLsSessionDelegate: NSObject { } } - init(attachmentId: AttachmentIdentifier, obvContext: ObvContext, logSubsystem: String, attachmentChunksSignedURLsTracker: AttachmentChunksSignedURLsTracker) { + init(attachmentId: ObvAttachmentIdentifier, obvContext: ObvContext, logSubsystem: String, attachmentChunksSignedURLsTracker: AttachmentChunksSignedURLsTracker) { self.attachmentId = attachmentId self.obvContext = obvContext self.log = OSLog(subsystem: logSubsystem, category: logCategory) @@ -76,7 +76,7 @@ final class GetSignedURLsSessionDelegate: NSObject { // MARK: - Tracker protocol AttachmentChunksSignedURLsTracker: AnyObject { - func getSignedURLsSessionDidBecomeInvalid(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: GetSignedURLsSessionDelegate.ErrorForTracker?) + func getSignedURLsSessionDidBecomeInvalid(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: GetSignedURLsSessionDelegate.ErrorForTracker?) } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/FreeTrialQueryCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/FreeTrialQueryCoordinator.swift index 2bf58d7f..93d3e348 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/FreeTrialQueryCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/FreeTrialQueryCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,359 +19,159 @@ import Foundation import os.log -import ObvCrypto import ObvTypes import ObvServerInterface -import ObvMetaManager import OlvidUtils +import ObvCrypto -final class FreeTrialQueryCoordinator: NSObject { +actor FreeTrialQueryCoordinator: FreeTrialQueryDelegate { - fileprivate let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - fileprivate let logCategory = "FreeTrialQueryCoordinator" + private static let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem + private static let logCategory = "ServerPushNotificationsCoordinator" + private static var log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) weak var delegateManager: ObvNetworkFetchDelegateManager? - private let localQueue = DispatchQueue(label: "FreeTrialQueryCoordinatorQueue") - private let queueForNotifications = DispatchQueue(label: "FreeTrialQueryCoordinator queue for notifications") - - private lazy var session: URLSession! = { - let sessionConfiguration = URLSessionConfiguration.ephemeral - return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) - }() - - private var _currentTasks = [UIBackgroundTaskIdentifier: (ownedIdentity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier, dataReceived: Data)]() - private var currentTasksQueue = DispatchQueue(label: "FreeTrialQueryCoordinatorQueueForCurrentTasks") - - private var queriesWaitingForNewServerSession = [(ownedIdentity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier)]() -} - -// MARK: - Synchronized access to the current download tasks + private var failedAttemptsCounterManager = FailedAttemptsCounterManager() + private var retryManager = FetchRetryManager() -extension FreeTrialQueryCoordinator { - - private func currentTaskExistsFor(_ identity: ObvCryptoIdentity, retrieveAPIKey: Bool) -> Bool { - var exist = true - currentTasksQueue.sync { - exist = _currentTasks.values.contains(where: { $0.ownedIdentity == identity && $0.retrieveAPIKey == retrieveAPIKey }) - } - return exist - } - - private func removeInfoFor(_ task: URLSessionTask) -> (ownedIdentity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (ObvCryptoIdentity, Bool, FlowIdentifier, Data)? = nil - currentTasksQueue.sync { - info = _currentTasks.removeValue(forKey: UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)) - } - return info - } - - private func getInfoFor(_ task: URLSessionTask) -> (ownedIdentity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (ObvCryptoIdentity, Bool, FlowIdentifier, Data)? = nil - currentTasksQueue.sync { - info = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] - } - return info + func setDelegateManager(_ delegateManager: ObvNetworkFetchDelegateManager) { + self.delegateManager = delegateManager } - private func insert(_ task: URLSessionTask, for identity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier) { - currentTasksQueue.sync { - _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (identity, retrieveAPIKey, flowId, Data()) - } - } - - private func accumulate(_ data: Data, forTask task: URLSessionTask) { - currentTasksQueue.sync { - guard let (ownedIdentity, retrieveAPIKey, identifierForNotifications, currentData) = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] else { return } - var newData = currentData - newData.append(data) - _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (ownedIdentity, retrieveAPIKey, identifierForNotifications, newData) - } - } - -} - - -// MARK: - FreeTrialQueryDelegate - -extension FreeTrialQueryCoordinator: FreeTrialQueryDelegate { - - private enum SyncQueueOutput { - case previousTaskExists - case serverSessionRequired - case newTaskToRun(task: URLSessionTask) - case failedToCreateTask(error: Error) - } - - - func queryFreeTrial(for identity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier) { + func queryFreeTrial(for ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> Bool { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) - return + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) + assertionFailure() + throw ObvError.theDelegateManagerIsNotSet } - var syncQueueOutput: SyncQueueOutput? // The state after the localQueue.sync is executed - - localQueue.sync { + let sessionToken = try await delegateManager.serverSessionDelegate.getValidServerSessionToken(for: ownedCryptoId, currentInvalidToken: nil, flowId: flowId).serverSessionToken + + let task = Task { + + let method = FreeTrialServerMethod(ownedIdentity: ownedCryptoId, token: sessionToken, retrieveAPIKey: false, flowId: flowId) + method.identityDelegate = delegateManager.identityDelegate + + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) - guard !currentTaskExistsFor(identity, retrieveAPIKey: retrieveAPIKey) else { - syncQueueOutput = .previousTaskExists - return + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw ObvError.invalidServerResponse } - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: identity) else { - syncQueueOutput = .serverSessionRequired - return - } - - guard let token = serverSession.token else { - syncQueueOutput = .serverSessionRequired - return - } - - let method = FreeTrialServerMethod(ownedIdentity: identity, token: token, retrieveAPIKey: retrieveAPIKey, flowId: flowId) - method.identityDelegate = delegateManager.identityDelegate - let task: URLSessionDataTask - do { - task = try method.dataTask(within: self.session) - } catch let error { - syncQueueOutput = .failedToCreateTask(error: error) - return - } - - insert(task, for: identity, retrieveAPIKey: retrieveAPIKey, flowId: flowId) - - syncQueueOutput = .newTaskToRun(task: task) - + guard let returnStatus = FreeTrialServerMethod.parseObvServerResponseWhenTestingWhetherFreeTrialIsStillAvailable(responseData: data, using: Self.log) else { + assertionFailure() + throw ObvError.couldNotParseReturnStatusFromServer } + + return returnStatus + } - - guard syncQueueOutput != nil else { - assertionFailure() - os_log("syncQueueOutput is nil", log: log, type: .fault) - return - } - - let queueForCallingDelegate = DispatchQueue(label: "FreeTrialQueryCoordinator queue for calling delegate in queryFreeTrial") - - switch syncQueueOutput! { - - case .previousTaskExists: - os_log("A running task already exists for identity %{public}@", log: log, type: .debug, identity.debugDescription) - assertionFailure() - case .serverSessionRequired: - os_log("Server session required for identity %@ with flow identifier %{public}@", log: log, type: .debug, identity.debugDescription, flowId.debugDescription) - queueForCallingDelegate.async { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: identity, flowId: flowId) - } catch { - os_log("Call serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } + do { + let returnStatus = try await task.value + switch returnStatus { + case .invalidSession: + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedCryptoId, currentInvalidToken: sessionToken, flowId: flowId) + return try await queryFreeTrial(for: ownedCryptoId, flowId: flowId) + case .ok: + return true + case .freeTrialAlreadyUsed: + return false + case .generalError: + let delay = failedAttemptsCounterManager.incrementAndGetDelay(.freeTrialQuery(ownedIdentity: ownedCryptoId)) + await retryManager.waitForDelay(milliseconds: delay) + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedCryptoId, currentInvalidToken: sessionToken, flowId: flowId) + return try await queryFreeTrial(for: ownedCryptoId, flowId: flowId) } - - case .newTaskToRun(task: let task): - os_log("New task to run for identity %{public}@", log: log, type: .debug, identity.debugDescription) - task.resume() - - case .failedToCreateTask(error: let error): - os_log("Could not create task for FreeTrialServerMethod: %{public}@", log: log, type: .error, error.localizedDescription) + } catch { assertionFailure() - return - + throw error } - } - - - func processFreeTrialQueriesExpectingNewSession() { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - var queries = [(ownedIdentity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier)]() - localQueue.sync { - queries = queriesWaitingForNewServerSession - queriesWaitingForNewServerSession.removeAll() - } - - os_log("Processing %d queries that were waiting for a new server session", log: log, type: .info, queries.count) - - for query in queries { - queryFreeTrial(for: query.ownedIdentity, retrieveAPIKey: query.retrieveAPIKey, flowId: query.flowId) - } } -} - - -// MARK: - URLSessionDataDelegate - -extension FreeTrialQueryCoordinator: URLSessionDataDelegate { - func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { - accumulate(data, forTask: dataTask) - } - - func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { + /// Starts a free trial and returns refresh API permission reflecting the result of starting the free trial. + func startFreeTrial(for ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) + assertionFailure() + throw ObvError.theDelegateManagerIsNotSet } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) + let sessionToken = try await delegateManager.serverSessionDelegate.getValidServerSessionToken(for: ownedCryptoId, currentInvalidToken: nil, flowId: flowId).serverSessionToken - guard let (ownedIdentity, retrieveAPIKey, flowId, dataReceived) = getInfoFor(task) else { return } - - guard error == nil else { - os_log("The FreeTrialServerMethod task failed for identity %{public}@: %@", log: log, type: .error, ownedIdentity.debugDescription, error!.localizedDescription) - _ = removeInfoFor(task) - assertionFailure() - return - } + let task = Task { + + let method = FreeTrialServerMethod(ownedIdentity: ownedCryptoId, token: sessionToken, retrieveAPIKey: true, flowId: flowId) + method.identityDelegate = delegateManager.identityDelegate - // If we reach this point, the data task did complete without error - - if retrieveAPIKey { + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) - guard let (status, returnedValues) = FreeTrialServerMethod.parseObvServerResponseWhenRetrievingFreeTrialAPIKey(responseData: dataReceived, using: log) else { - os_log("Could not parse the server response for the FreeTrialServerMethod while retrieving an API key task for identity %{public}@", log: log, type: .fault, ownedIdentity.debugDescription) - _ = removeInfoFor(task) - assertionFailure() - return + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw ObvError.invalidServerResponse } - switch status { - case .ok: - let apiKey = returnedValues! - _ = removeInfoFor(task) - queueForNotifications.async { - delegateManager.networkFetchFlowDelegate.newFreeTrialAPIKeyForOwnedIdentity(ownedIdentity, apiKey: apiKey, flowId: flowId) - } - return - - case .invalidSession: - os_log("The server session is invalid.", log: log, type: .info) - _ = removeInfoFor(task) - localQueue.sync { - queriesWaitingForNewServerSession.append((ownedIdentity, retrieveAPIKey, flowId)) - } - queueForNotifications.async { [weak self] in - self?.createNewServerSession(ownedIdentity: ownedIdentity, delegateManager: delegateManager, flowId: flowId, log: log) - } - return - - case .freeTrialAlreadyUsed: - os_log("The server reported that no more free trial is available for identity %{public}@", log: log, type: .info, ownedIdentity.debugDescription) - _ = removeInfoFor(task) - queueForNotifications.async { - delegateManager.networkFetchFlowDelegate.noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity, flowId: flowId) - } - return - - case .generalError: - os_log("The server reported a general error", log: log, type: .fault, ownedIdentity.debugDescription) + guard let (returnStatus, values) = FreeTrialServerMethod.parseObvServerResponseWhenRetrievingFreeTrialAPIKey(responseData: data, using: Self.log) else { assertionFailure() - _ = removeInfoFor(task) - return + throw ObvError.couldNotParseReturnStatusFromServer } - } else { + return (returnStatus, values) - guard let status = FreeTrialServerMethod.parseObvServerResponseWhenTestingWhetherFreeTrialIsStillAvailable(responseData: dataReceived, using: log) else { - os_log("Could not parse the server response for the FreeTrialServerMethod for identity %{public}@", log: log, type: .fault, ownedIdentity.debugDescription) - _ = removeInfoFor(task) - assertionFailure() - return - } + } - switch status { + do { + let (returnStatus, _) = try await task.value + switch returnStatus { case .ok: - _ = removeInfoFor(task) - queueForNotifications.async { - delegateManager.networkFetchFlowDelegate.freeTrialIsStillAvailableForOwnedIdentity(ownedIdentity, flowId: flowId) - } - return - + let newAPIKeyElements = try await delegateManager.networkFetchFlowDelegate.refreshAPIPermissions(of: ownedCryptoId, flowId: flowId) + return newAPIKeyElements case .invalidSession: - os_log("The server session is invalid.", log: log, type: .info) - _ = removeInfoFor(task) - localQueue.sync { - queriesWaitingForNewServerSession.append((ownedIdentity, retrieveAPIKey, flowId)) - } - queueForNotifications.async { [weak self] in - self?.createNewServerSession(ownedIdentity: ownedIdentity, delegateManager: delegateManager, flowId: flowId, log: log) - } - return - + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedCryptoId, currentInvalidToken: sessionToken, flowId: flowId) + let newAPIKeyElements = try await startFreeTrial(for: ownedCryptoId, flowId: flowId) + return newAPIKeyElements case .freeTrialAlreadyUsed: - os_log("The server reported that no more free trial is available for identity %{public}@", log: log, type: .info, ownedIdentity.debugDescription) - _ = removeInfoFor(task) - queueForNotifications.async { - delegateManager.networkFetchFlowDelegate.noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity, flowId: flowId) - } - return - + throw ObvError.freeTrialAlreadyUsed case .generalError: - os_log("The server reported a general error", log: log, type: .fault, ownedIdentity.debugDescription) - _ = removeInfoFor(task) - assertionFailure() - return + let delay = failedAttemptsCounterManager.incrementAndGetDelay(.freeTrialQuery(ownedIdentity: ownedCryptoId)) + await retryManager.waitForDelay(milliseconds: delay) + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedCryptoId, currentInvalidToken: sessionToken, flowId: flowId) + let newAPIKeyElements = try await startFreeTrial(for: ownedCryptoId, flowId: flowId) + return newAPIKeyElements } - + } catch { + assertionFailure() + throw error } - + } + - - private func createNewServerSession(ownedIdentity: ObvCryptoIdentity, delegateManager: ObvNetworkFetchDelegateManager, flowId: FlowIdentifier, log: OSLog) { - guard let contextCreator = delegateManager.contextCreator else { assertionFailure(); return } - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedIdentity) else { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - return - } - - guard let token = serverSession.token else { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - return - } - - do { - try delegateManager.networkFetchFlowDelegate.serverSession(of: ownedIdentity, hasInvalidToken: token, flowId: flowId) - } catch { - os_log("Call to to serverSession(of: ObvCryptoIdentity, hasInvalidToken: Data, flowId: FlowIdentifier) did fail", log: log, type: .fault) - assertionFailure() + enum ObvError: LocalizedError { + case theDelegateManagerIsNotSet + case invalidServerResponse + case couldNotParseReturnStatusFromServer + case freeTrialAlreadyUsed + + var errorDescription: String? { + switch self { + case .invalidServerResponse: + return "Invalid server response" + case .theDelegateManagerIsNotSet: + return "The delegate manager is not set" + case .couldNotParseReturnStatusFromServer: + return "Could not parse return status from server" + case .freeTrialAlreadyUsed: + return "Free trial already used" } } - } + } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetAndSolveChallengeCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetAndSolveChallengeCoordinator.swift deleted file mode 100644 index e86e863a..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetAndSolveChallengeCoordinator.swift +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import ObvServerInterface -import ObvTypes -import ObvOperation -import ObvCrypto -import ObvMetaManager -import OlvidUtils - -final class GetAndSolveChallengeCoordinator: NSObject { - - // MARK: - Instance variables - - fileprivate let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - fileprivate let logCategory = "GetAndSolveChallengeCoordinator" - - weak var delegateManager: ObvNetworkFetchDelegateManager? - - private let localQueue = DispatchQueue(label: "GetAndSolveChallengeCoordinatorQueue") - - private lazy var session: URLSession! = { - let sessionConfiguration = URLSessionConfiguration.ephemeral - return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) - }() - - private var _currentTasks = [UIBackgroundTaskIdentifier: (ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier, dataReceived: Data)]() - private var currentTasksQueue = DispatchQueue(label: "GetAndSolveChallengeCoordinatorQueueForCurrentTasks") - -} - - -// MARK: - Synchronized access to the current download tasks - -extension GetAndSolveChallengeCoordinator { - - private func currentTaskExistsFor(_ identity: ObvCryptoIdentity) -> Bool { - var exist = true - currentTasksQueue.sync { - exist = _currentTasks.values.contains(where: { $0.ownedIdentity == identity }) - } - return exist - } - - private func removeInfoFor(_ task: URLSessionTask) -> (ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (ObvCryptoIdentity, FlowIdentifier, Data)? = nil - currentTasksQueue.sync { - info = _currentTasks.removeValue(forKey: UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)) - } - return info - } - - private func getInfoFor(_ task: URLSessionTask) -> (ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (ObvCryptoIdentity, FlowIdentifier, Data)? = nil - currentTasksQueue.sync { - info = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] - } - return info - } - - private func insert(_ task: URLSessionTask, for identity: ObvCryptoIdentity, flowId: FlowIdentifier) { - currentTasksQueue.sync { - _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (identity, flowId, Data()) - } - } - - private func accumulate(_ data: Data, forTask task: URLSessionTask) { - currentTasksQueue.sync { - guard let (ownedIdentity, identifierForNotifications, currentData) = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] else { return } - var newData = currentData - newData.append(data) - _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (ownedIdentity, identifierForNotifications, newData) - } - } -} - - -// MARK: - GetAndSolveChallengeDelegate - -extension GetAndSolveChallengeCoordinator: GetAndSolveChallengeDelegate { - - private enum SyncQueueOutput { - case noApiKey - case previousTaskExists - case existingTokenWasFound - case existingResponseWasFoundButNoTokenExists - case newTaskToRun(task: URLSessionTask) - case failedToCreateTask(error: Error) - } - - - func getAndSolveChallenge(forIdentity identity: ObvCryptoIdentity, currentInvalidToken: Data?, discardExistingToken: Bool, flowId: FlowIdentifier) throws { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let solveChallengeDelegate = delegateManager.solveChallengeDelegate else { - os_log("The solve challenge delegate is not set", log: log, type: .fault) - return - } - - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) - return - } - - var syncQueueOutput: SyncQueueOutput? // The state after the localQueue.sync is executed - - try localQueue.sync { - - try contextCreator.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in - - guard !currentTaskExistsFor(identity) else { - syncQueueOutput = .previousTaskExists - return - } - - let serverSession = try ServerSession.getOrCreate(within: obvContext, withIdentity: identity) - - if let currentInvalidToken = currentInvalidToken { - // This operation was launched because of an invalid token. This operation is only useful if this token is still the one in DB. Otherwise, some other GetAndSolveChallengeOperation was executed in the meantime. - guard currentInvalidToken == serverSession.token else { return } - // If we reach this point, we are in charge of refreshing the token. - serverSession.resetSession() - } - - if discardExistingToken { - serverSession.resetSession() - } - - if serverSession.token != nil { - syncQueueOutput = .existingTokenWasFound - return - } - - if serverSession.response != nil { - syncQueueOutput = .existingResponseWasFoundButNoTokenExists - return - } - - // If we reach this point, we do need to ask a challenge to the server - - let prng = ObvCryptoSuite.sharedInstance.prngService() - serverSession.nonce = prng.genBytes(count: ObvConstants.serverSessionNonceLength) - - do { - try obvContext.save(logOnFailure: log) - } catch { - os_log("Could not save the generated nonce", log: log, type: .fault) - return - } - - guard let apiKey = try solveChallengeDelegate.getApiKeyForOwnedIdentity(identity, within: obvContext) else { - syncQueueOutput = .noApiKey - return - } - - let method = ObvServerRequestChallengeMethod(ownedIdentity: identity, apiKey: apiKey, nonce: serverSession.nonce!, toIdentity: identity, flowId: flowId) - method.identityDelegate = delegateManager.identityDelegate - let task: URLSessionDataTask - do { - task = try method.dataTask(within: self.session) - } catch let error { - syncQueueOutput = .failedToCreateTask(error: error) - return - } - - insert(task, for: identity, flowId: flowId) - - syncQueueOutput = .newTaskToRun(task: task) - - } - - } // End localQueue.sync - - guard syncQueueOutput != nil else { - os_log("syncQueueOutput is nil", log: log, type: .fault) - return - } - - switch syncQueueOutput! { - - case .previousTaskExists: - os_log("A running task already exists for identity %@", log: log, type: .debug, identity.debugDescription) - delegateManager.networkFetchFlowDelegate.getAndSolveChallengeWasNotNeeded(for: identity, flowId: flowId) - - case .newTaskToRun(task: let task): - os_log("New task to run for identity %@", log: log, type: .debug, identity.debugDescription) - task.resume() - - case .existingTokenWasFound: - os_log("Aborting getAndSolveChallenge since a previous token was found for identity %@", log: log, type: .info, identity.debugDescription) - - case .existingResponseWasFoundButNoTokenExists: - os_log("We already have a response to some challenge but no token", log: log, type: .debug) - try delegateManager.networkFetchFlowDelegate.newChallengeResponse(for: identity, flowId: flowId) - - case .failedToCreateTask(error: let error): - os_log("Could not create task for ObvServerRequestChallengeMethod: %{public}@", log: log, type: .error, error.localizedDescription) - return - - case .noApiKey: - os_log("Could not get API Key for owned identity %@", log: log, type: .fault, identity.debugDescription) - } - } -} - - -// MARK: - URLSessionDataDelegate - -extension GetAndSolveChallengeCoordinator: URLSessionDataDelegate { - - - func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { - accumulate(data, forTask: dataTask) - } - - - func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) - return - } - - guard let solveChallengeDelegate = delegateManager.solveChallengeDelegate else { - os_log("The solve challenge delegate is not set", log: log, type: .fault) - return - } - - guard let (identity, flowId, responseData) = getInfoFor(task) else { return } - - guard error == nil else { - os_log("The ObvServerRequestChallengeMethod task failed for identity %{public}@: %@", log: log, type: .error, identity.debugDescription, error!.localizedDescription) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetOrSolveChallenge(for: identity, flowId: flowId) - return - } - - // If we reach this point, the data task did complete without error - - guard let (status, returnedValues) = ObvServerRequestChallengeMethod.parseObvServerResponse(responseData: responseData, using: log) else { - os_log("Could not parse the server response for the ObvServerRequestChallengeMethod task for identity %{public}@", log: log, type: .fault, identity.debugDescription) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetOrSolveChallenge(for: identity, flowId: flowId) - return - } - - switch status { - case .ok: - let (challenge, serverNonce) = returnedValues! - - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: identity) else { - os_log("Could not find any appropriate server session", log: log, type: .fault) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetOrSolveChallenge(for: identity, flowId: flowId) - return - } - - if serverSession.response != nil || serverSession.token != nil { - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetOrSolveChallenge(for: identity, flowId: flowId) - return - } - - let prng = ObvCryptoSuite.sharedInstance.prngService() - let challengeType = ChallengeType.authentChallenge(challengeFromServer: challenge) - guard let response = try? solveChallengeDelegate.solveChallenge(challengeType, for: identity, using: prng, within: obvContext) else { - os_log("Could not solve the challenge", log: log, type: .error) - serverSession.nonce = nil - try? obvContext.save(logOnFailure: log) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetOrSolveChallenge(for: identity, flowId: flowId) - return - } - - do { - try serverSession.store(response: response, ifCurrentNonceIs: serverNonce) - try obvContext.save(logOnFailure: log) - } catch { - os_log("Could not store the response", log: log, type: .fault) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetOrSolveChallenge(for: identity, flowId: flowId) - return - } - - os_log("We successfully stored a challenge response for identity %@", log: log, type: .debug, identity.debugDescription) - _ = removeInfoFor(task) - do { - try delegateManager.networkFetchFlowDelegate.newChallengeResponse(for: identity, flowId: flowId) - } catch { - os_log("Call to newChallengeResponse did fail", log: log, type: .fault) - assertionFailure() - } - } - - return - - case .unkownApiKey, .apiKeyLicensesExhausted: - os_log("Server reported an error during the ObvServerRequestChallengeMethod download task for identity %@", log: log, type: .fault, identity.debugDescription) - _ = removeInfoFor(task) - - case .generalError: - os_log("Server reported general error during the ObvServerRequestChallengeMethod download task for identity %@", log: log, type: .fault, identity.debugDescription) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetOrSolveChallenge(for: identity, flowId: flowId) - return - } - } -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTokenCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTokenCoordinator.swift deleted file mode 100644 index f483aeb4..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTokenCoordinator.swift +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import ObvServerInterface -import ObvTypes -import ObvOperation -import ObvCrypto -import ObvMetaManager -import OlvidUtils - -final class GetTokenCoordinator: NSObject { - - // MARK: - Instance variables - - fileprivate let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - fileprivate let logCategory = "GetTokenCoordinator" - - weak var delegateManager: ObvNetworkFetchDelegateManager? - - private let localQueue = DispatchQueue(label: "GetTokenCoordinatorQueue") - - private lazy var session: URLSession! = { - let sessionConfiguration = URLSessionConfiguration.ephemeral - return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) - }() - - private var _currentTasks = [UIBackgroundTaskIdentifier: (ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier, dataReceived: Data)]() - private var currentTasksQueue = DispatchQueue(label: "GetTokenCoordinatorQueueForCurrentTasks") - -} - - -// MARK: - Synchronized access to the current download tasks - -extension GetTokenCoordinator { - - private func currentTaskExistsFor(_ identity: ObvCryptoIdentity) -> Bool { - var exist = true - currentTasksQueue.sync { - exist = _currentTasks.values.contains(where: { $0.ownedIdentity == identity }) - } - return exist - } - - private func removeInfoFor(_ task: URLSessionTask) -> (ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (ObvCryptoIdentity, FlowIdentifier, Data)? = nil - currentTasksQueue.sync { - info = _currentTasks.removeValue(forKey: UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)) - } - return info - } - - private func getInfoFor(_ task: URLSessionTask) -> (ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (ObvCryptoIdentity, FlowIdentifier, Data)? = nil - currentTasksQueue.sync { - info = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] - } - return info - } - - private func insert(_ task: URLSessionTask, for identity: ObvCryptoIdentity, flowId: FlowIdentifier) { - currentTasksQueue.sync { - _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (identity, flowId, Data()) - } - } - - private func accumulate(_ data: Data, forTask task: URLSessionTask) { - currentTasksQueue.sync { - guard let (ownedIdentity, identifierForNotifications, currentData) = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] else { return } - var newData = currentData - newData.append(data) - _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (ownedIdentity, identifierForNotifications, newData) - } - } - -} - - -// MARK: - GetTokenDelegate - -extension GetTokenCoordinator: GetTokenDelegate { - - private enum SyncQueueOutput { - case previousTaskExists - case serverSessionRequired - case existingTokenWasFound - case newTaskToRun(task: URLSessionTask) - case failedToCreateTask(error: Error) - } - - func getToken(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) throws { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) - return - } - - var syncQueueOutput: SyncQueueOutput? // The state after the localQueue.sync is executed - - try localQueue.sync { - - guard !currentTaskExistsFor(identity) else { - syncQueueOutput = .previousTaskExists - return - } - - try contextCreator.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in - - guard let serverSession = try ServerSession.get(within: obvContext, withIdentity: identity) else { - syncQueueOutput = .serverSessionRequired - return - } - - guard serverSession.token == nil else { - syncQueueOutput = .existingTokenWasFound - return - } - - guard let nonce = serverSession.nonce else { - syncQueueOutput = .serverSessionRequired - return - } - - guard let response = serverSession.response else { - syncQueueOutput = .serverSessionRequired - return - } - - // If we reach this point, we must get a token from the server - - let method = ObvServerGetTokenMethod(ownedIdentity: identity, response: response, nonce: nonce, toIdentity: identity, flowId: flowId) - method.identityDelegate = delegateManager.identityDelegate - let task: URLSessionDataTask - do { - task = try method.dataTask(within: self.session) - } catch let error { - syncQueueOutput = .failedToCreateTask(error: error) - return - } - - insert(task, for: identity, flowId: flowId) - - syncQueueOutput = .newTaskToRun(task: task) - } - - } // End of localQueue.sync - - guard syncQueueOutput != nil else { - os_log("syncQueueOutput is nil", log: log, type: .fault) - return - } - - switch syncQueueOutput! { - - case .previousTaskExists: - os_log("A running task already exists for identity %{public}@", log: log, type: .debug, identity.debugDescription) - delegateManager.networkFetchFlowDelegate.getTokenWasNotNeeded(for: identity, flowId: flowId) - - case .serverSessionRequired: - os_log("Server session required for identity %{public}@", log: log, type: .debug, identity.debugDescription) - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: identity, flowId: flowId) - - case .newTaskToRun(task: let task): - os_log("New task to run for identity %{public}@", log: log, type: .debug, identity.debugDescription) - task.resume() - - case .failedToCreateTask(error: let error): - os_log("Could not create task for ObvServerGetTokenMethod: %{public}@", log: log, type: .error, error.localizedDescription) - return - - case .existingTokenWasFound: - os_log("Aborting getToken because an existing token was found for identity %@", log: log, type: .info, identity.debugDescription) - } - - } -} - - -// MARK: - URLSessionDataDelegate - -extension GetTokenCoordinator: URLSessionDataDelegate { - - func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { - accumulate(data, forTask: dataTask) - } - - - func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) - return - } - - guard let (identity, flowId, responseData) = getInfoFor(task) else { return } - - guard error == nil else { - os_log("The ObvServerGetTokenMethod task failed for identity %{public}@: %@", log: log, type: .error, identity.debugDescription, error!.localizedDescription) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetToken(for: identity, flowId: flowId) - return - } - - // If we reach this point, the data task did complete without error - - guard let (status, returnedValues) = ObvServerGetTokenMethod.parseObvServerResponse(responseData: responseData, using: log) else { - os_log("Could not parse the server response for the ObvServerGetTokenMethod download task for identity %{public}@", log: log, type: .fault, identity.debugDescription) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetToken(for: identity, flowId: flowId) - return - } - - switch status { - case .ok: - let (token, serverNonce, apiKeyStatus, apiPermissions, apiKeyExpirationDate) = returnedValues! - - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: identity) else { - os_log("Could not find any appropriate server session", log: log, type: .fault) - _ = removeInfoFor(task) - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: identity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - return - } - - guard serverSession.token == nil else { - _ = removeInfoFor(task) - return - } - - do { - try serverSession.store(token: token, ifCurrentNonceIs: serverNonce) - try obvContext.save(logOnFailure: log) - } catch { - os_log("Could not save token in server session", log: log, type: .fault) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetToken(for: identity, flowId: flowId) - return - } - - } - - os_log("We successfully stored a token for identity %@", log: log, type: .debug, identity.debugDescription) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.newToken(token, for: identity, flowId: flowId) - delegateManager.networkFetchFlowDelegate.newAPIKeyElementsForCurrentAPIKeyOf(identity, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpirationDate, flowId: flowId) - - return - - case .serverDidNotFindChallengeCorrespondingToResponse: - os_log("The server could not find the challenge corresponding to the respond we just sent for identity %@", log: log, type: .fault, identity.debugDescription) - _ = removeInfoFor(task) - - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: identity) else { - os_log("Could not find any appropriate server session", log: log, type: .fault) - _ = removeInfoFor(task) - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: identity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - return - } - - guard serverSession.token == nil else { - _ = removeInfoFor(task) - return - } - - serverSession.resetSession() - - try? obvContext.save(logOnFailure: log) - - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetOrSolveChallenge(for: identity, flowId: flowId) - } - - return - - case .generalError: - os_log("Server reported general error during the ObvServerGetTokenMethod download task for identity %@", log: log, type: .fault, identity.debugDescription) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToGetToken(for: identity, flowId: flowId) - return - } - - } -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsCoordinator.swift index 7707ee1a..45827005 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsCoordinator.swift @@ -23,20 +23,16 @@ import ObvCrypto import ObvTypes import ObvMetaManager import OlvidUtils +import ObvServerInterface final class GetTurnCredentialsCoordinator { - fileprivate let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - fileprivate let logCategory = "GetTurnCredentialsCoordinator" - private let localQueue = DispatchQueue(label: "GetTurnCredentialsCoordinatorQueue") + private static let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem + private static let logCategory = "ServerPushNotificationsCoordinator" + private static var log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) + private let queueForNotifications = DispatchQueue(label: "GetTurnCredentialsCoordinator queue for posting notifications") - private var internalOperationQueue: OperationQueue = { - let queue = OperationQueue() - queue.name = "Queue for GetTurnCredentialsCoordinator operations" - queue.maxConcurrentOperationCount = 1 - return queue - }() var delegateManager: ObvNetworkFetchDelegateManager? @@ -45,173 +41,273 @@ final class GetTurnCredentialsCoordinator { protocol GetTurnCredentialsDelegate: AnyObject { - func getTurnCredentials(ownedIdenty: ObvCryptoIdentity, callUuid: UUID, username1: String, username2: String, flowId: FlowIdentifier) + func getTurnCredentials(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> ObvTurnCredentials } extension GetTurnCredentialsCoordinator: GetTurnCredentialsDelegate { - func getTurnCredentials(ownedIdenty: ObvCryptoIdentity, callUuid: UUID, username1: String, username2: String, flowId: FlowIdentifier) { + func getTurnCredentials(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> ObvTurnCredentials { guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() - return + throw ObvError.theDelegateManagerIsNotSet } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator manager is not set", log: log, type: .fault) + guard let identityDelegate = delegateManager.identityDelegate else { + os_log("The identity delegate is not set", log: Self.log, type: .fault) assertionFailure() - return + throw ObvError.theIdentityDelegateIsNotSet } - guard let identityDelegate = delegateManager.identityDelegate else { - os_log("The identity deleate is not set", log: log, type: .fault) - assertionFailure() - return + let sessionToken = try await delegateManager.serverSessionDelegate.getValidServerSessionToken(for: ownedCryptoId, currentInvalidToken: nil, flowId: flowId).serverSessionToken + + let task = Task { + + let method = GetTurnCredentialsServerMethod( + ownedIdentity: ownedCryptoId, + token: sessionToken, + username1: "alice", + username2: "bob", + flowId: flowId, + identityDelegate: identityDelegate) + + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) + + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw ObvError.invalidServerResponse + } + + guard let (status, turnCredentials) = GetTurnCredentialsServerMethod.parseObvServerResponse(responseData: data, using: Self.log) else { + assertionFailure() + throw ObvError.couldNotParseReturnStatusFromServer + } + + return (status, turnCredentials) + } - var operationsToQueue = [Operation]() - - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - let operation = GetTurnCredentialsOperation(ownedIdentity: ownedIdenty, - callUuid: callUuid, - username1: username1, - username2: username2, - obvContext: obvContext, - logSubsystem: delegateManager.logSubsystem, - identityDelegate: identityDelegate, - tracker: self, - wellKnownCacheDelegate: delegateManager.wellKnownCacheDelegate) - operationsToQueue.append(operation) + do { + + let (status, turnCredentials) = try await task.value + + switch status { + + case .ok: + guard let turnCredentials else { + throw ObvError.okFromServerButNoCredentialsReturned + } + switch delegateManager.wellKnownCacheDelegate.getTurnURLs(for: ownedCryptoId.serverURL, flowId: flowId) { + case .success(let turnServersURL): + let obvTurnCredentials = ObvTurnCredentials(turnCredentials: turnCredentials, turnServersURL: turnServersURL) + os_log("☎️ Returning Turn Credentials received from server", log: Self.log, type: .info) + return obvTurnCredentials + case .failure(let error): + os_log("Cannot retrive turn server URLs %{public}@", log: Self.log, type: .error, error.localizedDescription) + throw ObvError.couldNotRetrieveTurnServers + } + + case .invalidSession: + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedCryptoId, currentInvalidToken: sessionToken, flowId: flowId) + return try await getTurnCredentials(ownedCryptoId: ownedCryptoId, flowId: flowId) + + case .permissionDenied: + os_log("Server reported permission denied", log: Self.log, type: .error) + throw ObvError.permissionDenied + + case .generalError: + os_log("Server reported general error", log: Self.log, type: .fault) + throw ObvError.generalError + + } + + } catch { + assertionFailure() + throw error } - guard !operationsToQueue.isEmpty else { assertionFailure(); return } - - // We prevent any interference with previous operations - internalOperationQueue.addBarrierBlock({}) - internalOperationQueue.addOperations(operationsToQueue, waitUntilFinished: false) - } + +// func getTurnCredentials(ownedIdenty: ObvCryptoIdentity, callUuid: UUID, username1: String, username2: String, flowId: FlowIdentifier) { +// +// guard let delegateManager = delegateManager else { +// os_log("The Delegate Manager is not set", log: Self.log, type: .fault) +// assertionFailure() +// return +// } +// +// guard let contextCreator = delegateManager.contextCreator else { +// os_log("The context creator manager is not set", log: Self.log, type: .fault) +// assertionFailure() +// return +// } +// +// guard let identityDelegate = delegateManager.identityDelegate else { +// os_log("The identity deleate is not set", log: Self.log, type: .fault) +// assertionFailure() +// return +// } +// +// var operationsToQueue = [Operation]() +// +// contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in +// let operation = GetTurnCredentialsOperation(ownedIdentity: ownedIdenty, +// callUuid: callUuid, +// username1: username1, +// username2: username2, +// obvContext: obvContext, +// logSubsystem: delegateManager.logSubsystem, +// identityDelegate: identityDelegate, +// tracker: self, +// wellKnownCacheDelegate: delegateManager.wellKnownCacheDelegate) +// operationsToQueue.append(operation) +// } +// +// guard !operationsToQueue.isEmpty else { assertionFailure(); return } +// +// // We prevent any interference with previous operations +// internalOperationQueue.addBarrierBlock({}) +// internalOperationQueue.addOperations(operationsToQueue, waitUntilFinished: false) +// +// } + } // MARK: - Implementing GetTurnCredentialsCoordinator -extension GetTurnCredentialsCoordinator: GetTurnCredentialsTracker { - - func getTurnCredentialsSuccess(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, turnCredentials: TurnCredentials, flowId: FlowIdentifier) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) - assertionFailure() - return - } - - switch delegateManager.wellKnownCacheDelegate.getTurnURLs(for: ownedIdentity.serverURL, flowId: flowId) { - case .success(let turnServersURL): - let turnCredentialsWithTurnServers = TurnCredentialsWithTurnServers(turnCredentials: turnCredentials, turnServersURL: turnServersURL) +//extension GetTurnCredentialsCoordinator: GetTurnCredentialsTracker { +// +// func getTurnCredentialsSuccess(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, turnCredentials: TurnCredentials, flowId: FlowIdentifier) { +// +// guard let delegateManager = delegateManager else { +// os_log("The Delegate Manager is not set", log: Self.log, type: .fault) +// assertionFailure() +// return +// } +// +// guard let notificationDelegate = delegateManager.notificationDelegate else { +// os_log("The notification delegate is not set", log: Self.log, type: .fault) +// assertionFailure() +// return +// } +// +// switch delegateManager.wellKnownCacheDelegate.getTurnURLs(for: ownedIdentity.serverURL, flowId: flowId) { +// case .success(let turnServersURL): +// let turnCredentialsWithTurnServers = TurnCredentialsWithTurnServers(turnCredentials: turnCredentials, turnServersURL: turnServersURL) +// +// os_log("☎️ Notifying about new Turn Credentials received from server", log: Self.log, type: .info) +// +// ObvNetworkFetchNotificationNew.turnCredentialsReceived(ownedIdentity: ownedIdentity, callUuid: callUuid, turnCredentialsWithTurnServers: turnCredentialsWithTurnServers, flowId: flowId) +// .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) +// case .failure(let error): +// os_log("Cannot retrive turn server URLs %{public}@", log: Self.log, type: .info, error.localizedDescription) +// return +// } +// +// } +// +// +// func getTurnCredentialsFailure(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, withError error: GetTurnCredentialsURLSessionDelegate.ErrorForTracker, flowId: FlowIdentifier) { +// +// guard let delegateManager = delegateManager else { +// os_log("The Delegate Manager is not set", log: Self.log, type: .fault) +// assertionFailure() +// return +// } +// +// os_log("☎️ Failed to receive new Turn Credentials from server: %{public}@", log: Self.log, type: .error, error.localizedDescription) +// +// +// guard let notificationDelegate = delegateManager.notificationDelegate else { +// os_log("The notification delegate is not set", log: Self.log, type: .fault) +// assertionFailure() +// return +// } +// +// guard let contextCreator = delegateManager.contextCreator else { +// os_log("The context creator is not set", log: Self.log, type: .fault) +// assertionFailure() +// return +// } +// +// switch error { +// case .invalidSession: +// +// contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in +// guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity), let token = serverSession.token else { +// Task.detached { +// do { +// _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: nil, flowId: flowId) +// } catch { +// os_log("Call to getValidServerSessionToken did fail", log: Self.log, type: .fault) +// assertionFailure() +// } +// } +// return +// } +// Task.detached { +// do { +// _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: token, flowId: flowId) +// } catch { +// os_log("Call to getValidServerSessionToken did fail", log: Self.log, type: .fault) +// assertionFailure() +// } +// } +// } +// +// ObvNetworkFetchNotificationNew.turnCredentialsReceptionFailure(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) +// .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) +// +// case .aTaskDidBecomeInvalidWithError, +// .couldNotParseServerResponse, +// .generalErrorFromServer, +// .noOutputAvailable, +// .wellKnownNotCached: +// ObvNetworkFetchNotificationNew.turnCredentialsReceptionFailure(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) +// .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) +// case .permissionDenied: +// ObvNetworkFetchNotificationNew.turnCredentialsReceptionPermissionDenied(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) +// .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) +// case .serverDoesNotSupportCalls: +// ObvNetworkFetchNotificationNew.turnCredentialServerDoesNotSupportCalls(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) +// .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) +// } +// +// } +// +//} - os_log("☎️ Notifying about new Turn Credentials received from server", log: log, type: .info) - ObvNetworkFetchNotificationNew.turnCredentialsReceived(ownedIdentity: ownedIdentity, callUuid: callUuid, turnCredentialsWithTurnServers: turnCredentialsWithTurnServers, flowId: flowId) - .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) - case .failure(let error): - os_log("Cannot retrive turn server URLs %{public}@", log: log, type: .info, error.localizedDescription) - return - } - - } - +extension GetTurnCredentialsCoordinator { - func getTurnCredentialsFailure(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, withError error: GetTurnCredentialsURLSessionDelegate.ErrorForTracker, flowId: FlowIdentifier) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } + enum ObvError: Error { + case theDelegateManagerIsNotSet + case theIdentityDelegateIsNotSet + case invalidServerResponse + case couldNotParseReturnStatusFromServer + case okFromServerButNoCredentialsReturned + case permissionDenied + case generalError + case couldNotRetrieveTurnServers + } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - os_log("☎️ Failed to receive new Turn Credentials from server: %{public}@", log: log, type: .error, error.localizedDescription) +} - - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) - assertionFailure() - return - } - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator is not set", log: log, type: .fault) - assertionFailure() - return - } - - switch error { - case .invalidSession: - - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedIdentity) else { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - return - } - - guard let token = serverSession.token else { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - return - } - - do { - try delegateManager.networkFetchFlowDelegate.serverSession(of: ownedIdentity, hasInvalidToken: token, flowId: flowId) - } catch { - os_log("Call to to serverSession(of: ObvCryptoIdentity, hasInvalidToken: Data, flowId: FlowIdentifier) did fail", log: log, type: .fault) - assertionFailure() - } - } - - ObvNetworkFetchNotificationNew.turnCredentialsReceptionFailure(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) - .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) - - case .aTaskDidBecomeInvalidWithError, - .couldNotParseServerResponse, - .generalErrorFromServer, - .noOutputAvailable, - .wellKnownNotCached: - ObvNetworkFetchNotificationNew.turnCredentialsReceptionFailure(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) - .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) - case .permissionDenied: - ObvNetworkFetchNotificationNew.turnCredentialsReceptionPermissionDenied(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) - .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) - case .serverDoesNotSupportCalls: - ObvNetworkFetchNotificationNew.turnCredentialServerDoesNotSupportCalls(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId) - .postOnBackgroundQueue(queueForNotifications, within: notificationDelegate) - } - - } +// MARK: - Helpers +fileprivate extension ObvTurnCredentials { + + init(turnCredentials: TurnCredentials, turnServersURL: [String]) { + self.init(callerUsername: turnCredentials.expiringUsername1, + callerPassword: turnCredentials.password1, + recipientUsername: turnCredentials.expiringUsername2, + recipientPassword: turnCredentials.password2, + turnServersURL: turnServersURL) + } + } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsOperation.swift deleted file mode 100644 index 9574ab4b..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsOperation.swift +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import ObvMetaManager -import ObvTypes -import ObvCrypto -import ObvServerInterface -import OlvidUtils - - -final class GetTurnCredentialsOperation: Operation { - - enum ReasonForCancel { - case identityDelegateIsNotSet - case serverSessionRequired - case serverSessionHasNoToken - case getTurnCredentialsTrackerNotSet - case failedToCreateTask(error: Error) - } - - private let ownedIdentity: ObvCryptoIdentity - private let callUuid: UUID - private let username1: String - private let username2: String - private let obvContext: ObvContext - private let logSubsystem: String - - private weak var identityDelegate: ObvIdentityDelegate? - private weak var tracker: GetTurnCredentialsTracker? - private weak var wellKnownCacheDelegate: WellKnownCacheDelegate? - - var flowId: FlowIdentifier { obvContext.flowId } - - init(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, username1: String, username2: String, obvContext: ObvContext, logSubsystem: String, identityDelegate: ObvIdentityDelegate, tracker: GetTurnCredentialsTracker, wellKnownCacheDelegate: WellKnownCacheDelegate) { - self.ownedIdentity = ownedIdentity - self.callUuid = callUuid - self.username1 = username1 - self.username2 = username2 - self.obvContext = obvContext - self.identityDelegate = identityDelegate - self.tracker = tracker - self.wellKnownCacheDelegate = wellKnownCacheDelegate - self.logSubsystem = logSubsystem - super.init() - } - - private(set) var reasonForCancel: ReasonForCancel? - - private func cancel(withReason reason: ReasonForCancel) { - assert(self.reasonForCancel == nil) - self.reasonForCancel = reason - self.cancel() - } - - - override func main() { - - guard let identityDelegate = identityDelegate else { - cancel(withReason: .identityDelegateIsNotSet) - return - } - - guard let tracker = self.tracker else { - return cancel(withReason: .getTurnCredentialsTrackerNotSet) - } - - guard let wellKnownCacheDelegate = self.wellKnownCacheDelegate else { - tracker.getTurnCredentialsFailure(ownedIdentity: self.ownedIdentity, callUuid: self.callUuid, withError: .wellKnownNotCached, flowId: self.flowId) - return cancel(withReason: .failedToCreateTask(error: GetTurnCredentialsURLSessionDelegate.ErrorForTracker.wellKnownNotCached)) - } - - guard case .success(let turnServerURLs) = wellKnownCacheDelegate.getTurnURLs(for: ownedIdentity.serverURL, flowId: self.flowId) else { - tracker.getTurnCredentialsFailure(ownedIdentity: self.ownedIdentity, callUuid: self.callUuid, withError: .wellKnownNotCached, flowId: self.flowId) - return cancel(withReason: .failedToCreateTask(error: GetTurnCredentialsURLSessionDelegate.ErrorForTracker.wellKnownNotCached)) - } - - guard !turnServerURLs.isEmpty else { - tracker.getTurnCredentialsFailure(ownedIdentity: self.ownedIdentity, callUuid: self.callUuid, withError: .serverDoesNotSupportCalls, flowId: self.flowId) - return cancel(withReason: .failedToCreateTask(error: GetTurnCredentialsURLSessionDelegate.ErrorForTracker.serverDoesNotSupportCalls)) - } - - obvContext.performAndWait { - - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedIdentity) else { - cancel(withReason: .serverSessionRequired) - return - } - - guard let token = serverSession.token else { - cancel(withReason: .serverSessionHasNoToken) - return - } - - let sessionDelegate = GetTurnCredentialsURLSessionDelegate(ownedIdentity: ownedIdentity, callUuid: callUuid, flowId: flowId, logSubsystem: logSubsystem, tracker: tracker) - let sessionConfiguration = URLSessionConfiguration.ephemeral - let session = URLSession(configuration: sessionConfiguration, delegate: sessionDelegate, delegateQueue: nil) - defer { session.finishTasksAndInvalidate() } - - let method = GetTurnCredentialsServerMethod(ownedIdentity: ownedIdentity, - token: token, - username1: username1, - username2: username2, - flowId: flowId, - identityDelegate: identityDelegate) - - let task: URLSessionDataTask - do { - task = try method.dataTask(within: session) - } catch let error { - return cancel(withReason: .failedToCreateTask(error: error)) - } - task.resume() - - } - - } -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsURLSessionDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsURLSessionDelegate.swift deleted file mode 100644 index 1416a40b..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/GetTurnCredentials/GetTurnCredentialsURLSessionDelegate.swift +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import CoreData -import ObvMetaManager -import ObvTypes -import ObvServerInterface -import ObvCrypto -import OlvidUtils - -final class GetTurnCredentialsURLSessionDelegate: NSObject { - - private let uuid = UUID() - private let flowId: FlowIdentifier - private let log: OSLog - private var dataReceived = Data() - private let ownedIdentity: ObvCryptoIdentity - private let callUuid: UUID - private let logCategory = String(describing: GetTurnCredentialsURLSessionDelegate.self) - - private weak var tracker: GetTurnCredentialsTracker? - private(set) var turnCredentials: TurnCredentials? - - enum ErrorForTracker: Error { - case aTaskDidBecomeInvalidWithError(error: Error) - case couldNotParseServerResponse - case generalErrorFromServer - case noOutputAvailable - case invalidSession - case permissionDenied - case wellKnownNotCached - case serverDoesNotSupportCalls - - var localizedDescription: String { - switch self { - case .aTaskDidBecomeInvalidWithError(error: let error): - return "A task did become invalid with error (\(error.localizedDescription)" - case .couldNotParseServerResponse: - return "Could not parse the server response" - case .generalErrorFromServer: - return "The server returned a general error" - case .noOutputAvailable: - return "Internal error" - case .invalidSession: - return "The session is invalid" - case .permissionDenied: - return "Permission denied by server" - case .wellKnownNotCached: - return "Well Known is not cached" - case .serverDoesNotSupportCalls: - return "Server does not support calls" - } - } - } - - // First error "wins" - private var _error: ErrorForTracker? - private var errorForTracker: ErrorForTracker? { - get { _error } - set { - guard _error == nil && newValue != nil else { return } - _error = newValue - } - } - - init(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, flowId: FlowIdentifier, logSubsystem: String, tracker: GetTurnCredentialsTracker) { - self.flowId = flowId - self.ownedIdentity = ownedIdentity - self.callUuid = callUuid - self.log = OSLog(subsystem: logSubsystem, category: logCategory) - self.tracker = tracker - super.init() - } - -} - -protocol GetTurnCredentialsTracker: AnyObject { - func getTurnCredentialsSuccess(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, turnCredentials: TurnCredentials, flowId: FlowIdentifier) - func getTurnCredentialsFailure(ownedIdentity: ObvCryptoIdentity, callUuid: UUID, withError: GetTurnCredentialsURLSessionDelegate.ErrorForTracker, flowId: FlowIdentifier) -} - -// MARK: - URLSessionDataDelegate - -extension GetTurnCredentialsURLSessionDelegate: URLSessionDataDelegate { - - - func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { - dataReceived.append(data) - } - - - func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { - - guard error == nil else { - os_log("The GetTurnCredentialsURLSessionDelegate task failed: %@", log: log, type: .error, error!.localizedDescription) - self.errorForTracker = .aTaskDidBecomeInvalidWithError(error: error!) - return - } - - // If we reach this point, the data task did complete without error - - guard let (status, turnCredentials) = GetTurnCredentialsServerMethod.parseObvServerResponse(responseData: dataReceived, using: log) else { - os_log("Could not parse the server response for the GetTurnCredentialsServerMethod", log: log, type: .fault) - self.errorForTracker = .couldNotParseServerResponse - return - } - - switch status { - case .ok: - assert(self.turnCredentials == nil) - self.turnCredentials = turnCredentials! - os_log("We successfully set new Turn credentials", log: log, type: .info) - - case .invalidSession: - self.errorForTracker = .invalidSession - return - - case .permissionDenied: - self.errorForTracker = .permissionDenied - return - - case .generalError: - os_log("Server reported general error during the GetTurnCredentialsURLSessionDelegate", log: log, type: .fault) - self.errorForTracker = .generalErrorFromServer - return - } - - } - - - func urlSession(_ session: URLSession, didBecomeInvalidWithError error: Error?) { - - let tracker = self.tracker - let flowId = self.flowId - let ownedIdentity = self.ownedIdentity - let callUuid = self.callUuid - - if let turnCredentials = self.turnCredentials { - DispatchQueue(label: "Queue for calling getTurnCredentialsURLSessionDidBecomeInvalid").async { - tracker?.getTurnCredentialsSuccess(ownedIdentity: ownedIdentity, callUuid: callUuid, turnCredentials: turnCredentials, flowId: flowId) - } - } else { - let errorForTracker: ErrorForTracker = self.errorForTracker ?? .noOutputAvailable - DispatchQueue(label: "Queue for calling getTurnCredentialsURLSessionDidBecomeInvalid").async { - tracker?.getTurnCredentialsFailure(ownedIdentity: ownedIdentity, callUuid: callUuid, withError: errorForTracker, flowId: flowId) - } - } - - } - -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/MessagesCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/MessagesCoordinator.swift index 96c58dd9..d62de4d0 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/MessagesCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/MessagesCoordinator.swift @@ -44,14 +44,12 @@ final class MessagesCoordinator: NSObject { }() private var _currentTasks = [UIBackgroundTaskIdentifier: (ownedIdentity: ObvCryptoIdentity, currentDeviceUid: UID, flowId: FlowIdentifier, dataReceived: Data)]() - private var _currentExtendedPayloadDownloadTasks = [Int: (messageId: MessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() + private var _currentExtendedPayloadDownloadTasks = [Int: (messageId: ObvMessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() private var currentTasksQueue = DispatchQueue(label: "MessagesCoordinator queue for current task") private static func makeError(message: String) -> Error { NSError(domain: "MessagesCoordinator", code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } private func makeError(message: String) -> Error { MessagesCoordinator.makeError(message: message) } - private let queueForCallingDelegate = DispatchQueue(label: "MessagesCoordinator queue for calling delegate methods") - } // MARK: - Synchronized access to the current download tasks @@ -104,7 +102,7 @@ extension MessagesCoordinator { extension MessagesCoordinator { - private func extendedPayloadDownloadTaskExistsFor(_ messageId: MessageIdentifier) -> Bool { + private func extendedPayloadDownloadTaskExistsFor(_ messageId: ObvMessageIdentifier) -> Bool { var exist = true currentTasksQueue.sync { exist = _currentExtendedPayloadDownloadTasks.values.contains(where: { $0.messageId == messageId }) @@ -112,23 +110,23 @@ extension MessagesCoordinator { return exist } - private func removeInfoForExtendedPayloadDownloadTask(_ task: URLSessionTask) -> (messageId: MessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (MessageIdentifier, FlowIdentifier, Data)? = nil + private func removeInfoForExtendedPayloadDownloadTask(_ task: URLSessionTask) -> (messageId: ObvMessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvMessageIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentExtendedPayloadDownloadTasks.removeValue(forKey: task.taskIdentifier) } return info } - private func getInfoForExtendedPayloadDownloadTask(_ task: URLSessionTask) -> (messageId: MessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (MessageIdentifier, FlowIdentifier, Data)? = nil + private func getInfoForExtendedPayloadDownloadTask(_ task: URLSessionTask) -> (messageId: ObvMessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvMessageIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentExtendedPayloadDownloadTasks[task.taskIdentifier] } return info } - private func insertExtendedPayloadDownloadTask(_ task: URLSessionTask, for messageId: MessageIdentifier, flowId: FlowIdentifier) { + private func insertExtendedPayloadDownloadTask(_ task: URLSessionTask, for messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { currentTasksQueue.sync { _currentExtendedPayloadDownloadTasks[task.taskIdentifier] = (messageId, flowId, Data()) } @@ -187,7 +185,7 @@ extension MessagesCoordinator: MessagesDelegate { } contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: identity) else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: identity) else { syncQueueOutput = .serverSessionRequired return } @@ -227,21 +225,22 @@ extension MessagesCoordinator: MessagesDelegate { case .previousTaskExists: os_log("A running task already exists for identity %@ with flow identifier %{public}@", log: log, type: .debug, identity.debugDescription, flowId.debugDescription) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.downloadingMessagesAndListingAttachmentWasNotNeeded(for: identity, andDeviceUid: deviceUid, flowId: flowId) } case .serverSessionRequired: os_log("Server session required for identity %@ with flow identifier %{public}@", log: log, type: .debug, identity.debugDescription, flowId.debugDescription) - queueForCallingDelegate.async { + Task.detached { do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: identity, flowId: flowId) + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: identity, currentInvalidToken: nil, flowId: flowId) } catch { - os_log("Call serverSessionRequired did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } } - + return + case .failedToCreateTask(error: let error): if let serverMethodError = error as? ObvServerMethodError { switch serverMethodError { @@ -249,10 +248,18 @@ extension MessagesCoordinator: MessagesDelegate { os_log("Could not create task for ObvServerDownloadMessagesAndListAttachmentsMethod (ownedIdentityIsActiveCheckerDelegateIsNotSet): %{public}@", log: log, type: .error, serverMethodError.localizedDescription) case .ownedIdentityIsNotActive: os_log("Could not create task for ObvServerDownloadMessagesAndListAttachmentsMethod (ownedIdentityIsNotActive): %{public}@", log: log, type: .error, serverMethodError.localizedDescription) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive(ownedIdentity: identity, flowId: flowId) } return + case .couldNotParseServerResponse: + os_log("Could not create task for ObvServerDownloadMessagesAndListAttachmentsMethod: %{public}@", log: log, type: .error, serverMethodError.localizedDescription) + case .returnedServerStatusIsInvalid: + os_log("Could not create task for ObvServerDownloadMessagesAndListAttachmentsMethod: %{public}@", log: log, type: .error, serverMethodError.localizedDescription) + case .serverDidNotReturnTheExpectedNumberOfElements: + os_log("Could not create task for ObvServerDownloadMessagesAndListAttachmentsMethod: %{public}@", log: log, type: .error, serverMethodError.localizedDescription) + case .couldNotDecodeElementReturnByServer: + os_log("Could not create task for ObvServerDownloadMessagesAndListAttachmentsMethod: %{public}@", log: log, type: .error, serverMethodError.localizedDescription) } } else { os_log("Could not create task for ObvServerDownloadMessagesAndListAttachmentsMethod: %{public}@", log: log, type: .error, error.localizedDescription) @@ -272,7 +279,7 @@ extension MessagesCoordinator: MessagesDelegate { /// The reason why this method is defined within this coordinator is because this allows to synchronize it with the list of new messages. /// For this method to actually do something, the message and all its attachments must be marked for deletion, i.e., the `canBeDeleted` /// must return `true` when called on the message. - func processMarkForDeletionForMessageAndAttachmentsAndCreatePendingDeleteFromServer(messageId: MessageIdentifier, flowId: FlowIdentifier) throws { + func processMarkForDeletionForMessageAndAttachmentsAndCreatePendingDeleteFromServer(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) @@ -303,7 +310,7 @@ extension MessagesCoordinator: MessagesDelegate { } for attachment in message.attachments { - try? attachment.deleteDownload(fromInbox: delegateManager.inbox) + try? attachment.deleteDownload(fromInbox: delegateManager.inbox, within: obvContext) } try? message.deleteAttachmentsDirectory(fromInbox: delegateManager.inbox) @@ -351,7 +358,7 @@ extension MessagesCoordinator: MessagesDelegate { guard idsOfNewMessages.count == 1 else { throw makeError(message: "Could not save message") } } - queueForCallingDelegate.async { [weak self] in + Task { [weak self] in self?.delegateManager?.networkFetchFlowDelegate.aMessageReceivedThroughTheWebsocketWasSavedByTheMessageDelegate(ownedCryptoIdentity: ownedIdentity, flowId: flowId) } @@ -373,7 +380,7 @@ extension MessagesCoordinator { } - func downloadExtendedMessagePayload(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func downloadExtendedMessagePayload(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) @@ -413,7 +420,7 @@ extension MessagesCoordinator { return } - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: messageId.ownedCryptoIdentity) else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: messageId.ownedCryptoIdentity) else { syncQueueOutput = .serverSessionRequired return } @@ -458,15 +465,16 @@ extension MessagesCoordinator { case .serverSessionRequired: os_log("Server session required for identity %@ with flow identifier %{public}@", log: log, type: .debug, messageId.ownedCryptoIdentity.debugDescription, flowId.debugDescription) - queueForCallingDelegate.async { + Task.detached { do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: messageId.ownedCryptoIdentity, flowId: flowId) + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: messageId.ownedCryptoIdentity, currentInvalidToken: nil, flowId: flowId) } catch { - os_log("Call serverSessionRequired did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } } - + return + case .failedToCreateTask(error: let error): if let serverMethodError = error as? ObvServerMethodError { switch serverMethodError { @@ -478,6 +486,14 @@ extension MessagesCoordinator { delegateManager.networkFetchFlowDelegate.fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive(ownedIdentity: messageId.ownedCryptoIdentity, flowId: flowId) } return + case .couldNotParseServerResponse: + os_log("Could not create task for ObvServerDownloadMessageExtendedPayloadMethod: %{public}@", log: log, type: .error, serverMethodError.localizedDescription) + case .returnedServerStatusIsInvalid: + os_log("Could not create task for ObvServerDownloadMessageExtendedPayloadMethod: %{public}@", log: log, type: .error, serverMethodError.localizedDescription) + case .serverDidNotReturnTheExpectedNumberOfElements: + os_log("Could not create task for ObvServerDownloadMessageExtendedPayloadMethod: %{public}@", log: log, type: .error, serverMethodError.localizedDescription) + case .couldNotDecodeElementReturnByServer: + os_log("Could not create task for ObvServerDownloadMessageExtendedPayloadMethod: %{public}@", log: log, type: .error, serverMethodError.localizedDescription) } } else { os_log("Could not create task for ObvServerDownloadMessageExtendedPayloadMethod: %{public}@", log: log, type: .error, error.localizedDescription) @@ -542,8 +558,8 @@ extension MessagesCoordinator: URLSessionDataDelegate { guard error == nil else { os_log("The DownloadMessagesAndListAttachmentsCoordinator task failed for identity %{public}@: %{public}@", log: log, type: .error, ownedIdentity.debugDescription, error!.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.downloadingMessagesAndListingAttachmentFailed(for: ownedIdentity, andDeviceUid: deviceUid, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.downloadingMessagesAndListingAttachmentFailed(for: ownedIdentity, andDeviceUid: deviceUid, flowId: flowId) } return } @@ -553,8 +569,8 @@ extension MessagesCoordinator: URLSessionDataDelegate { guard let (status, timestampFromServer, returnedValues) = ObvServerDownloadMessagesAndListAttachmentsMethod.parseObvServerResponse(responseData: responseData, using: log) else { os_log("Could not parse the server response for the ObvServerDownloadMessagesAndListAttachmentsMethod for identity %{public}@", log: log, type: .fault, ownedIdentity.debugDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.downloadingMessagesAndListingAttachmentFailed(for: ownedIdentity, andDeviceUid: deviceUid, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.downloadingMessagesAndListingAttachmentFailed(for: ownedIdentity, andDeviceUid: deviceUid, flowId: flowId) } return } @@ -567,7 +583,7 @@ extension MessagesCoordinator: URLSessionDataDelegate { localQueue.sync { - let idsOfNewMessages: [MessageIdentifier] + let idsOfNewMessages: [ObvMessageIdentifier] do { idsOfNewMessages = try saveMessagesAndAttachmentsFromServer(listOfMessageAndAttachmentsOnServer, downloadTimestampFromServer: downloadTimestampFromServer, @@ -577,8 +593,8 @@ extension MessagesCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save the messages and list of attachments", log: log, type: .fault) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.downloadingMessagesAndListingAttachmentFailed(for: ownedIdentity, andDeviceUid: deviceUid, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.downloadingMessagesAndListingAttachmentFailed(for: ownedIdentity, andDeviceUid: deviceUid, flowId: flowId) } return } @@ -597,26 +613,13 @@ extension MessagesCoordinator: URLSessionDataDelegate { os_log("The session is invalid", log: log, type: .error) contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedIdentity) else { - _ = removeInfoFor(task) - queueForCallingDelegate.async { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - } - return - } - - guard let token = serverSession.token else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity), let token = serverSession.token else { _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task.detached { do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: nil, flowId: flowId) } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } } @@ -624,11 +627,11 @@ extension MessagesCoordinator: URLSessionDataDelegate { } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task.detached { do { - try delegateManager.networkFetchFlowDelegate.serverSession(of: ownedIdentity, hasInvalidToken: token, flowId: flowId) + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: token, flowId: flowId) } catch { - os_log("Call to serverSession(of: ObvCryptoIdentity, hasInvalidToken: Data, flowId: FlowIdentifier) did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } } @@ -647,8 +650,8 @@ extension MessagesCoordinator: URLSessionDataDelegate { case .generalError: os_log("Server reported general error during the ObvServerListMessagesAndAttachmentsMethod download task for identity %@", log: log, type: .fault, ownedIdentity.debugDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.downloadingMessagesAndListingAttachmentFailed(for: ownedIdentity, andDeviceUid: deviceUid, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.downloadingMessagesAndListingAttachmentFailed(for: ownedIdentity, andDeviceUid: deviceUid, flowId: flowId) } return } @@ -715,26 +718,13 @@ extension MessagesCoordinator: URLSessionDataDelegate { os_log("The session is invalid", log: log, type: .error) contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: messageId.ownedCryptoIdentity) else { - _ = removeInfoForExtendedPayloadDownloadTask(task) - queueForCallingDelegate.async { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: messageId.ownedCryptoIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - } - return - } - - guard let token = serverSession.token else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: messageId.ownedCryptoIdentity), let token = serverSession.token else { _ = removeInfoForExtendedPayloadDownloadTask(task) - queueForCallingDelegate.async { + Task.detached { do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: messageId.ownedCryptoIdentity, flowId: flowId) + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: messageId.ownedCryptoIdentity, currentInvalidToken: nil, flowId: flowId) } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } } @@ -742,11 +732,11 @@ extension MessagesCoordinator: URLSessionDataDelegate { } _ = removeInfoForExtendedPayloadDownloadTask(task) - queueForCallingDelegate.async { + Task.detached { do { - try delegateManager.networkFetchFlowDelegate.serverSession(of: messageId.ownedCryptoIdentity, hasInvalidToken: token, flowId: flowId) + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: messageId.ownedCryptoIdentity, currentInvalidToken: token, flowId: flowId) } catch { - os_log("Call to serverSession(of: ObvCryptoIdentity, hasInvalidToken: Data, flowId: FlowIdentifier) did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } } @@ -780,7 +770,7 @@ extension MessagesCoordinator: URLSessionDataDelegate { /// When receiving an encrypted extended message payload from the server, we call this method to fetch the message from database, use the decryption key to decrypt the /// extended payload, and store the decrypted payload back to database - private func decryptAndSaveExtendedMessagePayload(messageId: MessageIdentifier, encryptedExtendedMessagePayload: EncryptedData, flowId: FlowIdentifier) throws { + private func decryptAndSaveExtendedMessagePayload(messageId: ObvMessageIdentifier, encryptedExtendedMessagePayload: EncryptedData, flowId: FlowIdentifier) throws { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) @@ -820,7 +810,7 @@ extension MessagesCoordinator: URLSessionDataDelegate { /// If we fail to download an extended message payload (or if we cannot decrypt it), we remove any information about this payload from the database - private func removeExtendedMessagePayload(messageId: MessageIdentifier, flowId: FlowIdentifier) throws { + private func removeExtendedMessagePayload(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) @@ -856,7 +846,7 @@ extension MessagesCoordinator: URLSessionDataDelegate { /// This method is used when receiving a list of messages (and their attachments) from the server. It saves each one in the `InboxMessage` database. It returns the `MessageIdentifier` of all the messages it manages to save. - private func saveMessagesAndAttachmentsFromServer(_ listOfMessageAndAttachmentsOnServer: [ObvServerDownloadMessagesAndListAttachmentsMethod.MessageAndAttachmentsOnServer], downloadTimestampFromServer: Date, localDownloadTimestamp: Date, ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) throws -> [MessageIdentifier] { + private func saveMessagesAndAttachmentsFromServer(_ listOfMessageAndAttachmentsOnServer: [ObvServerDownloadMessagesAndListAttachmentsMethod.MessageAndAttachmentsOnServer], downloadTimestampFromServer: Date, localDownloadTimestamp: Date, ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) throws -> [ObvMessageIdentifier] { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) @@ -871,13 +861,13 @@ extension MessagesCoordinator: URLSessionDataDelegate { throw makeError(message: "The context creator manager is not set") } - var idsOfNewMessages = [MessageIdentifier]() + var idsOfNewMessages = [ObvMessageIdentifier]() try contextCreator.performBackgroundTaskAndWaitOrThrow(flowId: flowId) { (obvContext) in for messageAndAttachmentsOnServer in listOfMessageAndAttachmentsOnServer { - let messageId = MessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: messageAndAttachmentsOnServer.messageUidFromServer) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: ownedIdentity, uid: messageAndAttachmentsOnServer.messageUidFromServer) // Check that the message does not already exist in DB do { diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/NetworkFetchFlowCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/NetworkFetchFlowCoordinator.swift index 4b987b08..14001761 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/NetworkFetchFlowCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/NetworkFetchFlowCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,16 +26,19 @@ import ObvMetaManager import ObvEncoder import Network import OlvidUtils +import ObvServerInterface final class NetworkFetchFlowCoordinator: NetworkFetchFlowDelegate, ObvErrorMaker { - fileprivate let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - fileprivate let logCategory = "NetworkFetchFlowCoordinator" - + private static let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem + private static let logCategory = "NetworkFetchFlowCoordinator" + private static var log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) + private let queueForPostingNotifications = DispatchQueue(label: "NetworkFetchFlowCoordinator queue for notifications") private let internalQueue = OperationQueue.createSerialQueue(name: "NetworkFetchFlowCoordinator internal operation queue") private let syncQueue = DispatchQueue(label: "NetworkFetchFlowCoordinator internal queue") + private let nwPathMonitor = NWPathMonitor() weak var delegateManager: ObvNetworkFetchDelegateManager? @@ -48,12 +51,13 @@ final class NetworkFetchFlowCoordinator: NetworkFetchFlowDelegate, ObvErrorMaker private var retryManager = FetchRetryManager() private let prng: PRNGService - init(prng: PRNGService) { + init(prng: PRNGService, logPrefix: String) { self.prng = prng + let logSubsystem = "\(logPrefix).\(Self.defaultLogSubsystem)" + Self.log = OSLog(subsystem: logSubsystem, category: Self.logCategory) monitorNetworkChanges() } - private var nwPathMonitor: NWPathMonitor? } @@ -62,9 +66,8 @@ final class NetworkFetchFlowCoordinator: NetworkFetchFlowDelegate, ObvErrorMaker extension NetworkFetchFlowCoordinator { func updatedListOfOwnedIdentites(ownedIdentities: Set, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -76,111 +79,59 @@ extension NetworkFetchFlowCoordinator { // MARK: - Session's Challenge/Response/Token related methods - func resetServerSession(for identity: ObvCryptoIdentity, within obvContext: ObvContext) throws { - try ServerSession.deleteAllSessionsOfIdentity(identity, within: obvContext) - try obvContext.addContextDidSaveCompletionHandler { [weak self] (error) in - guard error == nil else { return } - try? self?.serverSessionRequired(for: identity, flowId: obvContext.flowId) - } - } - - func serverSessionRequired(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) throws { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - failedAttemptsCounterManager.reset(counter: .sessionCreation(ownedIdentity: identity)) - - try delegateManager.getAndSolveChallengeDelegate.getAndSolveChallenge(forIdentity: identity, - currentInvalidToken: nil, - discardExistingToken: false, - flowId: flowId) - } - - - func serverSession(of identity: ObvCryptoIdentity, hasInvalidToken invalidToken: Data, flowId: FlowIdentifier) throws { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - failedAttemptsCounterManager.reset(counter: .sessionCreation(ownedIdentity: identity)) - try delegateManager.getAndSolveChallengeDelegate.getAndSolveChallenge(forIdentity: identity, - currentInvalidToken: invalidToken, - discardExistingToken: false, - flowId: flowId) - } - + func refreshAPIPermissions(of ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements { - func getAndSolveChallengeWasNotNeeded(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) { - // We do nothing - } - - - func failedToGetOrSolveChallenge(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) { - let delay = failedAttemptsCounterManager.incrementAndGetDelay(.sessionCreation(ownedIdentity: identity)) - retryManager.executeWithDelay(delay) { [weak self] in - try? self?.delegateManager?.getAndSolveChallengeDelegate.getAndSolveChallenge(forIdentity: identity, - currentInvalidToken: nil, - discardExistingToken: false, - flowId: flowId) + guard let delegateManager else { + assertionFailure() + throw Self.makeError(message: "The delegate manager is not set") } + + try await delegateManager.serverSessionDelegate.deleteServerSession(of: ownedCryptoIdentity, flowId: flowId) + + let (_, apiKeyElements) = try await getValidServerSessionToken(for: ownedCryptoIdentity, currentInvalidToken: nil, flowId: flowId) + + return apiKeyElements + } - func newChallengeResponse(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) throws { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return + func getValidServerSessionToken(for ownedCryptoIdentity: ObvCryptoIdentity, currentInvalidToken: Data?, flowId: FlowIdentifier) async throws -> (serverSessionToken: Data, apiKeyElements: APIKeyElements) { + guard let delegateManager else { + assertionFailure() + throw Self.makeError(message: "The delegate manager is not set") } - failedAttemptsCounterManager.reset(counter: .sessionCreation(ownedIdentity: identity)) - try delegateManager.getTokenDelegate.getToken(for: identity, flowId: flowId) + let (serverSessionToken, apiKeyElements) = try await delegateManager.serverSessionDelegate.getValidServerSessionToken(for: ownedCryptoIdentity, currentInvalidToken: currentInvalidToken, flowId: flowId) + + newToken(serverSessionToken, for: ownedCryptoIdentity, flowId: flowId) + newAPIKeyElementsForCurrentAPIKeyOf(ownedCryptoIdentity, apiKeyStatus: apiKeyElements.status, apiPermissions: apiKeyElements.permissions, apiKeyExpirationDate: apiKeyElements.expirationDate, flowId: flowId) + + return (serverSessionToken, apiKeyElements) } - - func getTokenWasNotNeeded(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) { - // We do nothing - } - - func failedToGetToken(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) { - let delay = failedAttemptsCounterManager.incrementAndGetDelay(.sessionCreation(ownedIdentity: identity)) - retryManager.executeWithDelay(delay) { [weak self] in - try? self?.delegateManager?.getTokenDelegate.getToken(for: identity, flowId: flowId) - } - } - - - func newToken(_ token: Data, for identity: ObvCryptoIdentity, flowId: FlowIdentifier) { + private func newToken(_ token: Data, for identity: ObvCryptoIdentity, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator is not set", log: log, type: .fault) + os_log("The context creator is not set", log: Self.log, type: .fault) + assertionFailure() return } guard let identityDelegate = delegateManager.identityDelegate else { - os_log("The identity delegate is not set", log: log, type: .fault) + os_log("The identity delegate is not set", log: Self.log, type: .fault) + assertionFailure() return } - + failedAttemptsCounterManager.reset(counter: .sessionCreation(ownedIdentity: identity)) contextCreator.performBackgroundTask(flowId: flowId) { (obvContext) in - // We process any pending receipt validation and any pending Free trial query - delegateManager.verifyReceiptDelegate?.verifyReceiptsExpectingNewSesssion() - delegateManager.freeTrialQueryDelegate?.processFreeTrialQueriesExpectingNewSession() - // We relaunch incomplete attachments delegateManager.downloadAttachmentChunksDelegate.resumeMissingAttachmentDownloads(flowId: flowId) @@ -194,202 +145,181 @@ extension NetworkFetchFlowCoordinator { let deviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(identity, within: obvContext) delegateManager.messagesDelegate.downloadMessagesAndListAttachments(for: identity, andDeviceUid: deviceUid, flowId: flowId) } catch { - os_log("Could not call downloadMessagesAndListAttachments", log: log, type: .fault) + os_log("Could not call downloadMessagesAndListAttachments", log: Self.log, type: .fault) } - // We re-subscribe to push notifications - for pushNotificationType in ObvPushNotificationType.ByteId.allCases { - do { - try delegateManager.serverPushNotificationsDelegate.processServerPushNotificationsToRegister( - ownedCryptoId: identity, - pushNotificationType: pushNotificationType, - flowId: flowId) - } catch { - assertionFailure() - os_log("Could not call processServerPushNotificationsToRegister", log: log, type: .fault) - } - } - - // We pass the token to the WebSocket coordinator + // We pass the token to the WebSocket coordinator, this will allow re-scheduled tasks to be executed Task { await delegateManager.webSocketDelegate.setServerSessionToken(to: token, for: identity) } } } - - func newAPIKeyElementsForAPIKey(serverURL: URL, apiKey: UUID, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?, flowId: FlowIdentifier) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) - return - } - - ObvNetworkFetchNotificationNew.newAPIKeyElementsForAPIKey(serverURL: serverURL, - apiKey: apiKey, - apiKeyStatus: apiKeyStatus, - apiPermissions: apiPermissions, - apiKeyExpirationDate: apiKeyExpirationDate) - .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) - - } - - - func apiKeyStatusQueryFailed(ownedIdentity: ObvCryptoIdentity, apiKey: UUID) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) - return - } - - ObvNetworkFetchNotificationNew.apiKeyStatusQueryFailed(ownedIdentity: ownedIdentity, apiKey: apiKey) - .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) - } - - func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) { + func verifyReceiptAndRefreshAPIPermissions(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier) async throws -> [ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus] { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() - return + throw Self.makeError(message: "The Delegate Manager is not set") } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let verifyReceiptDelegate = delegateManager.verifyReceiptDelegate else { - os_log("The verifyReceiptDelegate delegate is not set", log: log, type: .fault) + os_log("The verifyReceiptDelegate delegate is not set", log: Self.log, type: .fault) assertionFailure() - return + throw Self.makeError(message: "The verifyReceiptDelegate delegate is not set") } - - verifyReceiptDelegate.verifyReceipt(ownedCryptoIdentities: ownedCryptoIdentities, receiptData: receiptData, transactionIdentifier: transactionIdentifier, flowId: flowId) - - } - func newAPIKeyElementsForCurrentAPIKeyOf(_ ownedIdentity: ObvCryptoIdentity, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?, flowId: FlowIdentifier) { + let receiptVerificationResults = try await verifyReceiptDelegate.verifyReceipt(appStoreReceiptElements: appStoreReceiptElements, flowId: flowId) - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return + for result in receiptVerificationResults { + switch result.value { + case .failed: + break + case .succeededAndSubscriptionIsValid, .succeededButSubscriptionIsExpired: + _ = try await refreshAPIPermissions(of: result.key, flowId: flowId) + } } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) + return receiptVerificationResults - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) - return + } + + + enum ObvError: LocalizedError { + case theDelegateManagerIsNotSet + case theIdentityDelegateIsNotSet + case invalidServerResponse + case serverReturnedGeneralError + + var errorDescription: String? { + switch self { + case .theDelegateManagerIsNotSet: + return "The delegate manager is not set" + case .theIdentityDelegateIsNotSet: + return "The identity delegate is not set" + case .invalidServerResponse: + return "Invalid server response" + case .serverReturnedGeneralError: + return "The server returned a general error" + } } - - ObvNetworkFetchNotificationNew.newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(ownedIdentity: ownedIdentity, - apiKeyStatus: apiKeyStatus, - apiPermissions: apiPermissions, - apiKeyExpirationDate: apiKeyExpirationDate) - .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) - } - func newFreeTrialAPIKeyForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) { + func queryAPIKeyStatus(for ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> APIKeyElements { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return + let method = QueryApiKeyStatusServerMethod(ownedIdentity: ownedCryptoIdentity, apiKey: apiKey, flowId: flowId) + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) + + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw ObvError.invalidServerResponse } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) + let result = QueryApiKeyStatusServerMethod.parseObvServerResponse(responseData: data, using: Self.log) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) - return + switch result { + case .failure: + throw ObvError.invalidServerResponse + case .success(let serverReturnStatus): + switch serverReturnStatus { + case .generalError: + throw ObvError.serverReturnedGeneralError + case .ok(apiKeyElements: let apiKeyElements): + return apiKeyElements + } } - - ObvNetworkFetchNotificationNew.newFreeTrialAPIKeyForOwnedIdentity(ownedIdentity: ownedIdentity, apiKey: apiKey, flowId: flowId) - .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) + } - func noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } + + func registerOwnedAPIKeyOnServerNow(ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> ObvRegisterApiKeyResult { - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) + assertionFailure() + throw ObvError.theDelegateManagerIsNotSet + } - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) - return + guard let identityDelegate = delegateManager.identityDelegate else { + os_log("The identity delegate is not set", log: Self.log, type: .fault) + assertionFailure() + throw ObvError.theIdentityDelegateIsNotSet + } + + let serverSessionToken = try await getValidServerSessionToken(for: ownedCryptoIdentity, currentInvalidToken: nil, flowId: flowId).serverSessionToken + + let method = ObvRegisterAPIKeyServerMethod(ownedIdentity: ownedCryptoIdentity, serverSessionToken: serverSessionToken, apiKey: apiKey, identityDelegate: identityDelegate, flowId: flowId) + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) + + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw ObvError.invalidServerResponse + } + + let result = ObvRegisterAPIKeyServerMethod.parseObvServerResponse(responseData: data, using: Self.log) + + switch result { + case .failure(let error): + os_log("The call to ObvRegisterAPIKeyServerMethod did fail: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + return .failed + case .success(let serverReturnStatus): + switch serverReturnStatus { + case .ok: + // After registering a new API key on the server, we force the refresh of the session to make sure the API keys elements (permissions) are refreshed + _ = try? await getValidServerSessionToken(for: ownedCryptoIdentity, currentInvalidToken: serverSessionToken, flowId: flowId) + return .success + case .invalidSession: + _ = try await getValidServerSessionToken(for: ownedCryptoIdentity, currentInvalidToken: serverSessionToken, flowId: flowId) + return try await registerOwnedAPIKeyOnServerNow(ownedCryptoIdentity: ownedCryptoIdentity, apiKey: apiKey, flowId: flowId) + case .invalidAPIKey: + return .invalidAPIKey + case .generalError: + return .failed + } } - - ObvNetworkFetchNotificationNew.noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(ownedIdentity: ownedIdentity, flowId: flowId) - .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) + } - func freeTrialIsStillAvailableForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + private func newAPIKeyElementsForCurrentAPIKeyOf(_ ownedIdentity: ObvCryptoIdentity, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?, flowId: FlowIdentifier) { + + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } - ObvNetworkFetchNotificationNew.freeTrialIsStillAvailableForOwnedIdentity(ownedIdentity: ownedIdentity, flowId: flowId) + ObvNetworkFetchNotificationNew.newAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(ownedIdentity: ownedIdentity, + apiKeyStatus: apiKeyStatus, + apiPermissions: apiPermissions, + apiKeyExpirationDate: apiKeyExpirationDate) .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) - } + } + // MARK: - Downloading message and listing attachments - func downloadingMessagesAndListingAttachmentFailed(for ownedCryptoIdentity: ObvCryptoIdentity, andDeviceUid deviceUid: UID, flowId: FlowIdentifier) { + func downloadingMessagesAndListingAttachmentFailed(for ownedCryptoIdentity: ObvCryptoIdentity, andDeviceUid deviceUid: UID, flowId: FlowIdentifier) async { let delay = failedAttemptsCounterManager.incrementAndGetDelay(.downloadMessagesAndListAttachments(ownedIdentity: ownedCryptoIdentity)) - retryManager.executeWithDelay(delay) { [weak self] in - self?.delegateManager?.messagesDelegate.downloadMessagesAndListAttachments(for: ownedCryptoIdentity, andDeviceUid: deviceUid, flowId: flowId) - } + await retryManager.waitForDelay(milliseconds: delay) + delegateManager?.messagesDelegate.downloadMessagesAndListAttachments(for: ownedCryptoIdentity, andDeviceUid: deviceUid, flowId: flowId) } func downloadingMessagesAndListingAttachmentWasNotNeeded(for ownedCryptoIdentity: ObvCryptoIdentity, andDeviceUid deviceUid: UID, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - // Although we did not find any new message on the server, we might still have unprocessed messages to process. - os_log("Downloading messages was not needed. We still try to process (old) unprocessed messages", log: log, type: .info) + os_log("Downloading messages was not needed. We still try to process (old) unprocessed messages", log: Self.log, type: .info) processUnprocessedMessages(ownedCryptoIdentity: ownedCryptoIdentity, flowId: flowId) } @@ -410,26 +340,23 @@ extension NetworkFetchFlowCoordinator { assert(!Thread.isMainThread) - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator is not set", log: log, type: .fault) + os_log("The context creator is not set", log: Self.log, type: .fault) return } guard let processDownloadedMessageDelegate = delegateManager.processDownloadedMessageDelegate else { - os_log("The processDownloadedMessageDelegate is not set", log: log, type: .fault) + os_log("The processDownloadedMessageDelegate is not set", log: Self.log, type: .fault) return } @@ -438,7 +365,7 @@ extension NetworkFetchFlowCoordinator { syncQueue.async { - os_log("Processing unprocessed messages within flow %{public}@", log: log, type: .debug, flowId.debugDescription) + os_log("Processing unprocessed messages within flow %{public}@", log: Self.log, type: .debug, flowId.debugDescription) var moreUnprocessedMessagesRemain = true var maxNumberOfOperations = 1_000 @@ -448,25 +375,25 @@ extension NetworkFetchFlowCoordinator { maxNumberOfOperations -= 1 assert(maxNumberOfOperations > 0, "May happen if there were many unprocessed messages. But this is unlikely and should be investigated.") - os_log("Initializing a ProcessBatchOfUnprocessedMessagesOperation (maxNumberOfOperations is %d)", log: log, type: .info, maxNumberOfOperations) + os_log("Initializing a ProcessBatchOfUnprocessedMessagesOperation (maxNumberOfOperations is %d)", log: Self.log, type: .info, maxNumberOfOperations) let op1 = ProcessBatchOfUnprocessedMessagesOperation(ownedCryptoIdentity: ownedCryptoIdentity, queueForPostingNotifications: queueForPostingNotifications, notificationDelegate: notificationDelegate, processDownloadedMessageDelegate: processDownloadedMessageDelegate, - log: log) + log: Self.log) let queueForComposedOperations = OperationQueue.createSerialQueue() - let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: contextCreator, queueForComposedOperations: queueForComposedOperations, log: log, flowId: flowId) + let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: contextCreator, queueForComposedOperations: queueForComposedOperations, log: Self.log, flowId: flowId) internalQueue.addOperations([composedOp], waitUntilFinished: true) - composedOp.logReasonIfCancelled(log: log) + composedOp.logReasonIfCancelled(log: Self.log) if composedOp.isCancelled { - os_log("The ProcessBatchOfUnprocessedMessagesOperation cancelled: %{public}@", log: log, type: .fault, composedOp.reasonForCancel?.localizedDescription ?? "No reason given") + os_log("The ProcessBatchOfUnprocessedMessagesOperation cancelled: %{public}@", log: Self.log, type: .fault, composedOp.reasonForCancel?.localizedDescription ?? "No reason given") assertionFailure(composedOp.reasonForCancel.debugDescription) moreUnprocessedMessagesRemain = false } else { - os_log("The ProcessBatchOfUnprocessedMessagesOperation succeeded", log: log, type: .info) + os_log("The ProcessBatchOfUnprocessedMessagesOperation succeeded", log: Self.log, type: .info) moreUnprocessedMessagesRemain = op1.moreUnprocessedMessagesRemain ?? false if moreUnprocessedMessagesRemain { - os_log("More unprocessed messages remain", log: log, type: .info) + os_log("More unprocessed messages remain", log: Self.log, type: .info) } } @@ -476,18 +403,15 @@ extension NetworkFetchFlowCoordinator { } - func messagePayloadAndFromIdentityWereSet(messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier], hasEncryptedExtendedMessagePayload: Bool, flowId: FlowIdentifier) { + func messagePayloadAndFromIdentityWereSet(messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier], hasEncryptedExtendedMessagePayload: Bool, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } @@ -501,18 +425,15 @@ extension NetworkFetchFlowCoordinator { // MARK: - Message's extended content related methods - func downloadingMessageExtendedPayloadFailed(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func downloadingMessageExtendedPayloadFailed(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } @@ -522,18 +443,15 @@ extension NetworkFetchFlowCoordinator { } - func downloadingMessageExtendedPayloadWasPerformed(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func downloadingMessageExtendedPayloadWasPerformed(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } @@ -545,24 +463,22 @@ extension NetworkFetchFlowCoordinator { // MARK: - Attachment's related methods - func resumeDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func resumeDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, forceResume: Bool, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - delegateManager.downloadAttachmentChunksDelegate.resumeDownloadOfAttachment(attachmentId: attachmentId, flowId: flowId) + delegateManager.downloadAttachmentChunksDelegate.resumeDownloadOfAttachment(attachmentId: attachmentId, forceResume: forceResume, flowId: flowId) } - func pauseDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func pauseDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } @@ -570,11 +486,10 @@ extension NetworkFetchFlowCoordinator { } - func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] { + func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) throw Self.makeError(message: "The Delegate Manager is not set") } @@ -582,18 +497,15 @@ extension NetworkFetchFlowCoordinator { } - func attachmentWasCancelledByServer(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func attachmentWasCancelledByServer(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } @@ -602,15 +514,13 @@ extension NetworkFetchFlowCoordinator { } - func attachmentWasDownloaded(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + func attachmentWasDownloaded(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } ObvNetworkFetchNotificationNew.inboxAttachmentWasDownloaded(attachmentId: attachmentId, flowId: flowId) @@ -623,20 +533,17 @@ extension NetworkFetchFlowCoordinator { /// Called when a `PendingDeleteFromServer` was just created in DB. This also means that the message and its attachments have been deleted /// from the local inbox. - func newPendingDeleteToProcessForMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func newPendingDeleteToProcessForMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - do { try delegateManager.deleteMessageAndAttachmentsFromServerDelegate.processPendingDeleteFromServer(messageId: messageId, flowId: flowId) } catch { - os_log("Could not process pending delete from server", log: log, type: .fault) + os_log("Could not process pending delete from server", log: Self.log, type: .fault) assertionFailure() return } @@ -644,33 +551,27 @@ extension NetworkFetchFlowCoordinator { } - func failedToProcessPendingDeleteFromServer(messageId: MessageIdentifier, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + func failedToProcessPendingDeleteFromServer(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) async { + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - os_log("We could not delete message %{public}@ within flow %{public}@", log: log, type: .fault, messageId.debugDescription, flowId.debugDescription) + os_log("We could not delete message %{public}@ within flow %{public}@", log: Self.log, type: .fault, messageId.debugDescription, flowId.debugDescription) let delay = failedAttemptsCounterManager.incrementAndGetDelay(.processPendingDeleteFromServer(messageId: messageId)) - retryManager.executeWithDelay(delay) { - try? delegateManager.deleteMessageAndAttachmentsFromServerDelegate.processPendingDeleteFromServer(messageId: messageId, flowId: flowId) - } + await retryManager.waitForDelay(milliseconds: delay) + try? delegateManager.deleteMessageAndAttachmentsFromServerDelegate.processPendingDeleteFromServer(messageId: messageId, flowId: flowId) } - func messageAndAttachmentsWereDeletedFromServerAndInboxes(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func messageAndAttachmentsWereDeletedFromServerAndInboxes(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } @@ -683,96 +584,18 @@ extension NetworkFetchFlowCoordinator { // MARK: - Push notification's related methods - func serverReportedThatAnotherDeviceIsAlreadyRegistered(forOwnedIdentity ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - - guard let delegateManager = delegateManager else { - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } - - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) - return - } - - // Post a serverReportedThatAnotherDeviceIsAlreadyRegistered notification (this will allow the identity manager to deactiviate the owned identity) - ObvNetworkFetchNotificationNew.serverReportedThatAnotherDeviceIsAlreadyRegistered(ownedIdentity: ownedIdentity, flowId: flowId) - .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) - - } - - func serverReportedThatThisDeviceWasSuccessfullyRegistered(forOwnedIdentity ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - - guard let delegateManager = delegateManager else { - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } - - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) - return - } - - ObvNetworkFetchNotificationNew.serverReportedThatThisDeviceWasSuccessfullyRegistered(ownedIdentity: ownedIdentity, flowId: flowId) - .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) - - // We might have missed push notifications during the registration process, so we list and download messages now - - guard let contextCreator = delegateManager.contextCreator else { - os_log("The context creator is not set", log: log, type: .fault) - return - } - - guard let identityDelegate = delegateManager.identityDelegate else { - os_log("The identity delegate is not set", log: log, type: .fault) - return - } - - contextCreator.performBackgroundTask(flowId: flowId) { (obvContext) in - - // We relaunch incomplete attachments - delegateManager.downloadAttachmentChunksDelegate.resumeMissingAttachmentDownloads(flowId: flowId) - - guard let identities = try? identityDelegate.getOwnedIdentities(within: obvContext) else { - os_log("Could not get owned identities", log: log, type: .fault) - assertionFailure() - return - } - - // We download new messages and list their attachments - for identity in identities { - do { - let deviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(identity, within: obvContext) - delegateManager.messagesDelegate.downloadMessagesAndListAttachments(for: identity, andDeviceUid: deviceUid, flowId: flowId) - } catch { - os_log("Could not call downloadMessagesAndListAttachments", log: log, type: .fault) - } - } - - } - } - - func serverReportedThatThisDeviceIsNotRegistered(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) + os_log("We need to re-register to push notifications since the server reported that this device is not registered", log: Self.log, type: .info) - os_log("We need to re-register to push notifications since the server reported that this device is not registered", log: log, type: .info) - - guard let delegateManager = delegateManager else { - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } @@ -784,16 +607,14 @@ extension NetworkFetchFlowCoordinator { func fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - - guard let delegateManager = delegateManager else { - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() return } guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) return } @@ -806,9 +627,8 @@ extension NetworkFetchFlowCoordinator { func post(_ serverQuery: ServerQuery, within context: ObvContext) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The delegate manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The delegate manager is not set", log: Self.log, type: .fault) return } @@ -817,44 +637,48 @@ extension NetworkFetchFlowCoordinator { } - func newPendingServerQueryToProcessWithObjectId(_ pendingServerQueryObjectId: NSManagedObjectID, flowId: FlowIdentifier) { + /// Called when a `PendingServerQuery` is inserted in database. + func newPendingServerQueryToProcessWithObjectId(_ pendingServerQueryObjectId: NSManagedObjectID, isWebSocket: Bool, flowId: FlowIdentifier) async { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - delegateManager.serverQueryDelegate.postServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + if isWebSocket { + do { + try await delegateManager.serverQueryWebSocketDelegate.handleServerQuery(pendingServerQueryObjectId: pendingServerQueryObjectId, flowId: flowId) + } catch { + assertionFailure(error.localizedDescription) + } + } else { + delegateManager.serverQueryDelegate.postServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } } - func failedToProcessServerQuery(withObjectId objectId: NSManagedObjectID, flowId: FlowIdentifier) { + func failedToProcessServerQuery(withObjectId objectId: NSManagedObjectID, flowId: FlowIdentifier) async { let delay = failedAttemptsCounterManager.incrementAndGetDelay(.serverQuery(objectID: objectId)) - retryManager.executeWithDelay(delay) { [weak self] in - self?.delegateManager?.serverQueryDelegate.postServerQuery(withObjectId: objectId, flowId: flowId) - } + await retryManager.waitForDelay(milliseconds: delay) + delegateManager?.serverQueryDelegate.postServerQuery(withObjectId: objectId, flowId: flowId) } func successfullProcessOfServerQuery(withObjectId objectId: NSManagedObjectID, flowId: FlowIdentifier) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let contextCreator = delegateManager.contextCreator else { - os_log("The Context Creator is not set", log: log, type: .fault) + os_log("The Context Creator is not set", log: Self.log, type: .fault) return } guard let channelDelegate = delegateManager.channelDelegate else { - os_log("The channel delegate is not set", log: log, type: .fault) + os_log("The channel delegate is not set", log: Self.log, type: .fault) return } @@ -862,17 +686,22 @@ extension NetworkFetchFlowCoordinator { let prng = self.prng contextCreator.performBackgroundTask(flowId: flowId) { (obvContext) in - + let serverQuery: PendingServerQuery do { - serverQuery = try PendingServerQuery.get(objectId: objectId, delegateManager: delegateManager, within: obvContext) + guard let _serverQuery = try PendingServerQuery.get(objectId: objectId, delegateManager: delegateManager, within: obvContext) else { + os_log("Could not find pending server query in database", log: Self.log, type: .error) + return + } + serverQuery = _serverQuery } catch { - os_log("Could not find pending server query in database", log: log, type: .fault) + os_log("Could not fetch pending server query in database: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() return } guard let serverResponseType = serverQuery.responseType else { - os_log("The server response type is not set", log: log, type: .fault) + os_log("The server response type is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -901,6 +730,20 @@ extension NetworkFetchFlowCoordinator { channelServerResponseType = ObvChannelServerResponseMessageToSend.ResponseType.updateGroupBlob(uploadResult: uploadResult) case .getKeycloakData(result: let result): channelServerResponseType = ObvChannelServerResponseMessageToSend.ResponseType.getKeycloakData(result: result) + case .ownedDeviceDiscovery(encryptedOwnedDeviceDiscoveryResult: let encryptedOwnedDeviceDiscoveryResult): + channelServerResponseType = ObvChannelServerResponseMessageToSend.ResponseType.ownedDeviceDiscovery(encryptedOwnedDeviceDiscoveryResult: encryptedOwnedDeviceDiscoveryResult) + case .setOwnedDeviceName(success: let success): + channelServerResponseType = ObvChannelServerResponseMessageToSend.ResponseType.setOwnedDeviceName(success: success) + case .sourceGetSessionNumberMessage(result: let result): + channelServerResponseType = ObvChannelServerResponseMessageToSend.ResponseType.sourceGetSessionNumberMessage(result: result) + case .targetSendEphemeralIdentity(result: let result): + channelServerResponseType = ObvChannelServerResponseMessageToSend.ResponseType.targetSendEphemeralIdentity(result: result) + case .transferRelay(result: let result): + channelServerResponseType = ObvChannelServerResponseMessageToSend.ResponseType.transferRelay(result: result) + case .transferWait(result: let result): + channelServerResponseType = ObvChannelServerResponseMessageToSend.ResponseType.transferWait(result: result) + case .sourceWaitForTargetConnection(result: let result): + channelServerResponseType = ObvChannelServerResponseMessageToSend.ResponseType.sourceWaitForTargetConnection(result: result) } let aResponseMessageShouldBePosted: Bool @@ -913,42 +756,44 @@ extension NetworkFetchFlowCoordinator { aResponseMessageShouldBePosted = true } + guard let ownedCryptoIdentity = try? serverQuery.ownedIdentity else { + assertionFailure() + serverQuery.deletePendingServerQuery(within: obvContext) + try? obvContext.save(logOnFailure: Self.log) + return + } + if aResponseMessageShouldBePosted { let serverTimestamp = Date() - let responseMessage = ObvChannelServerResponseMessageToSend(toOwnedIdentity: serverQuery.ownedIdentity, + let responseMessage = ObvChannelServerResponseMessageToSend(toOwnedIdentity: ownedCryptoIdentity, serverTimestamp: serverTimestamp, responseType: channelServerResponseType, encodedElements: serverQuery.encodedElements, flowId: flowId) do { - _ = try channelDelegate.post(responseMessage, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(responseMessage, randomizedWith: prng, within: obvContext) } catch { - os_log("Could not process response to server query", log: log, type: .fault) + os_log("Could not process response to server query", log: Self.log, type: .fault) return } } - serverQuery.delete(flowId: flowId) + serverQuery.deletePendingServerQuery(within: obvContext) - try? obvContext.save(logOnFailure: log) + try? obvContext.save(logOnFailure: Self.log) } } - func pendingServerQueryWasDeletedFromDatabase(objectId: NSManagedObjectID, flowId: FlowIdentifier) { - - } - // MARK: Handling with user data - func failedToProcessServerUserData(input: ServerUserDataInput, flowId: FlowIdentifier) { + func failedToProcessServerUserData(input: ServerUserDataInput, flowId: FlowIdentifier) async { let delay = failedAttemptsCounterManager.incrementAndGetDelay(.serverUserData(input: input)) - retryManager.executeWithDelay(delay) { [weak self] in - self?.delegateManager?.serverUserDataDelegate.postUserData(input: input, flowId: flowId) - } + await retryManager.waitForDelay(milliseconds: delay) + delegateManager?.serverUserDataDelegate.postUserData(input: input, flowId: flowId) } // MARK: - Forwarding urlSessionDidFinishEvents(forBackgroundURLSession session: URLSession) and notifying successfull/failed listing (for performing fetchCompletionHandlers within the engine) @@ -959,9 +804,8 @@ extension NetworkFetchFlowCoordinator { // MARK: - Monitor Network Path Status private func monitorNetworkChanges() { - nwPathMonitor = NWPathMonitor() - nwPathMonitor?.start(queue: DispatchQueue(label: "NetworkFetchMonitor")) - nwPathMonitor?.pathUpdateHandler = self.networkPathDidChange + nwPathMonitor.start(queue: DispatchQueue(label: "NetworkFetchMonitor")) + nwPathMonitor.pathUpdateHandler = self.networkPathDidChange } @@ -971,14 +815,14 @@ extension NetworkFetchFlowCoordinator { let flowId = FlowIdentifier() await delegateManager?.webSocketDelegate.disconnectAll(flowId: flowId) await delegateManager?.webSocketDelegate.connectAll(flowId: flowId) - resetAllFailedFetchAttempsCountersAndRetryFetching() + await resetAllFailedFetchAttempsCountersAndRetryFetching() } } - func resetAllFailedFetchAttempsCountersAndRetryFetching() { + func resetAllFailedFetchAttempsCountersAndRetryFetching() async { failedAttemptsCounterManager.resetAll() - retryManager.executeAllWithNoDelay() + await retryManager.executeAllWithNoDelay() } @@ -988,18 +832,15 @@ extension NetworkFetchFlowCoordinator { failedAttemptsCounterManager.reset(counter: .queryServerWellKnown(serverURL: server)) - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - os_log("New well known was cached", log: log, type: .info) + os_log("New well known was cached", log: Self.log, type: .info) guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -1019,16 +860,13 @@ extension NetworkFetchFlowCoordinator { failedAttemptsCounterManager.reset(counter: .queryServerWellKnown(serverURL: server)) - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -1046,16 +884,13 @@ extension NetworkFetchFlowCoordinator { failedAttemptsCounterManager.reset(counter: .queryServerWellKnown(serverURL: server)) - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notification delegate is not set", log: log, type: .fault) + os_log("The notification delegate is not set", log: Self.log, type: .fault) assertionFailure() return } @@ -1066,19 +901,17 @@ extension NetworkFetchFlowCoordinator { } - func failedToQueryServerWellKnown(serverURL: URL, flowId: FlowIdentifier) { + func failedToQueryServerWellKnown(serverURL: URL, flowId: FlowIdentifier) async { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } let delay = failedAttemptsCounterManager.incrementAndGetDelay(.queryServerWellKnown(serverURL: serverURL)) - retryManager.executeWithDelay(delay) { - delegateManager.wellKnownCacheDelegate.queryServerWellKnown(serverURL: serverURL, flowId: flowId) - } - + await retryManager.waitForDelay(milliseconds: delay) + delegateManager.wellKnownCacheDelegate.queryServerWellKnown(serverURL: serverURL, flowId: flowId) + } @@ -1086,9 +919,8 @@ extension NetworkFetchFlowCoordinator { func successfulWebSocketRegistration(identity: ObvCryptoIdentity, deviceUid: UID) { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) return } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/Operations/ProcessBatchOfUnprocessedMessagesOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/Operations/ProcessBatchOfUnprocessedMessagesOperation.swift index 85930fd7..62bdb868 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/Operations/ProcessBatchOfUnprocessedMessagesOperation.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/Operations/ProcessBatchOfUnprocessedMessagesOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import OlvidUtils import ObvMetaManager import os.log import ObvCrypto +import CoreData final class ProcessBatchOfUnprocessedMessagesOperation: ContextualOperationWithSpecificReasonForCancel { @@ -46,8 +47,7 @@ final class ProcessBatchOfUnprocessedMessagesOperation: ContextualOperationWithS super.init() } - - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { os_log("🔑 Starting ProcessAllUnprocessedMessagesOperation %{public}@", log: log, type: .info, debugUuid.debugDescription) defer { @@ -56,65 +56,58 @@ final class ProcessBatchOfUnprocessedMessagesOperation: ContextualOperationWithS } os_log("🔑 Ending ProcessAllUnprocessedMessagesOperation %{public}@", log: log, type: .info, debugUuid.debugDescription) } - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - + do { - try obvContext.performAndWaitOrThrow { - - // Find all inbox messages that still need to be processed - - let messages = try InboxMessage.getBatchOfUnprocessedMessages(ownedCryptoIdentity: ownedCryptoIdentity, batchSize: Self.batchSize, within: obvContext) - - guard !messages.isEmpty else { - moreUnprocessedMessagesRemain = false - ObvNetworkFetchNotificationNew.noInboxMessageToProcess(flowId: obvContext.flowId, ownedCryptoIdentity: ownedCryptoIdentity) - .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) - return - } - - moreUnprocessedMessagesRemain = true - - for message in messages { - os_log("🔑 Will process message %{public}@", log: log, type: .info, message.messageId.debugDescription) - assert(message.extendedMessagePayloadKey == nil) - assert(message.messagePayload == nil) - assert(!message.markedForDeletion) - } - - // If we reach this point, we have at least one message to process. - // We notify about this. - - for message in messages { - guard let inboxMessageId = message.messageId else { assertionFailure(); continue } - ObvNetworkFetchNotificationNew.newInboxMessageToProcess(messageId: inboxMessageId, attachmentIds: message.attachmentIds, flowId: obvContext.flowId) - .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) - } - - // We then create the appropriate struct that is appropriate to pass each message to our delegate (i.e., the channel manager). - - let networkReceivedEncryptedMessages: [ObvNetworkReceivedMessageEncrypted] = messages.compactMap { - guard let inboxMessageId = $0.messageId else { assertionFailure(); return nil } - return ObvNetworkReceivedMessageEncrypted( - messageId: inboxMessageId, - messageUploadTimestampFromServer: $0.messageUploadTimestampFromServer, - downloadTimestampFromServer: $0.downloadTimestampFromServer, - localDownloadTimestamp: $0.localDownloadTimestamp, - encryptedContent: $0.encryptedContent, - wrappedKey: $0.wrappedKey, - knownAttachmentCount: $0.attachments.count, - availableEncryptedExtendedContent: nil) // The encrypted extended content is not available yet - } - - // We ask our delegate to process these messages - - processDownloadedMessageDelegate.processNetworkReceivedEncryptedMessages(Set(networkReceivedEncryptedMessages), within: obvContext) - + // Find all inbox messages that still need to be processed + + let messages = try InboxMessage.getBatchOfUnprocessedMessages(ownedCryptoIdentity: ownedCryptoIdentity, batchSize: Self.batchSize, within: obvContext) + + guard !messages.isEmpty else { + moreUnprocessedMessagesRemain = false + ObvNetworkFetchNotificationNew.noInboxMessageToProcess(flowId: obvContext.flowId, ownedCryptoIdentity: ownedCryptoIdentity) + .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) + return + } + + moreUnprocessedMessagesRemain = true + + for message in messages { + os_log("🔑 Will process message %{public}@", log: log, type: .info, message.messageId.debugDescription) + assert(message.extendedMessagePayloadKey == nil) + assert(message.messagePayload == nil) + assert(!message.markedForDeletion) } + // If we reach this point, we have at least one message to process. + // We notify about this. + + for message in messages { + guard let inboxMessageId = message.messageId else { assertionFailure(); continue } + ObvNetworkFetchNotificationNew.newInboxMessageToProcess(messageId: inboxMessageId, attachmentIds: message.attachmentIds, flowId: obvContext.flowId) + .postOnBackgroundQueue(queueForPostingNotifications, within: notificationDelegate) + } + + // We then create the appropriate struct that is appropriate to pass each message to our delegate (i.e., the channel manager). + + let networkReceivedEncryptedMessages: [ObvNetworkReceivedMessageEncrypted] = messages.compactMap { + guard let inboxMessageId = $0.messageId else { assertionFailure(); return nil } + return ObvNetworkReceivedMessageEncrypted( + messageId: inboxMessageId, + messageUploadTimestampFromServer: $0.messageUploadTimestampFromServer, + downloadTimestampFromServer: $0.downloadTimestampFromServer, + localDownloadTimestamp: $0.localDownloadTimestamp, + encryptedContent: $0.encryptedContent, + wrappedKey: $0.wrappedKey, + knownAttachmentCount: $0.attachments.count, + availableEncryptedExtendedContent: nil) // The encrypted extended content is not available yet + } + + // We ask our delegate to process these messages + + processDownloadedMessageDelegate.processNetworkReceivedEncryptedMessages(Set(networkReceivedEncryptedMessages), within: obvContext) + + } catch { return cancel(withReason: .coreDataError(error: error)) } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/CreateOrUpdateIfRequiredServerPushNotificationOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/CreateOrUpdateIfRequiredServerPushNotificationOperation.swift deleted file mode 100644 index e4909945..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/CreateOrUpdateIfRequiredServerPushNotificationOperation.swift +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import OlvidUtils -import ObvTypes -import ObvCrypto - - -final class CreateOrUpdateIfRequiredServerPushNotificationOperation: ContextualOperationWithSpecificReasonForCancel { - - private let pushNotification: ObvPushNotificationType - - private(set) var thereIsANewServerPushNotificationToRegister = false - - init(pushNotification: ObvPushNotificationType) { - self.pushNotification = pushNotification - super.init() - } - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - let kickOtherDeviceToKeep: Bool - - if let serverPushNotification = try ServerPushNotification.getServerPushNotificationOfType(pushNotification.byteId, - ownedCryptoId: pushNotification.ownedCryptoId, - within: obvContext.context) { - let existingPushNotification = try serverPushNotification.pushNotification - guard existingPushNotification != pushNotification else { - // Nothing left to do, an identical ServerPushNotification entry already exists in database - return - } - kickOtherDeviceToKeep = existingPushNotification.kickOtherDevices - try serverPushNotification.delete() - - } else { - - kickOtherDeviceToKeep = false - - } - - // If we reach this point, we must create a new ServerPushNotification - - let serverPushNotification = try ServerPushNotification.createOrThrowIfOneAlreadyExists(pushNotificationType: pushNotification, within: obvContext.context) - - if kickOtherDeviceToKeep { - serverPushNotification.setKickOtherDevices(to: true) - } - - assert((try? serverPushNotification.serverRegistrationStatus.byteId) == .toRegister) - thereIsANewServerPushNotificationToRegister = true - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - } - - } - -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/MarkAllServerPushNotificationsAsToRegisterOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/MarkAllServerPushNotificationsAsToRegisterOperation.swift deleted file mode 100644 index a008a2de..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/MarkAllServerPushNotificationsAsToRegisterOperation.swift +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import OlvidUtils -import ObvCrypto -import ObvTypes - - -final class MarkAllServerPushNotificationsAsToRegisterOperation: ContextualOperationWithSpecificReasonForCancel { - - private(set) var serverPushNotificationsToRegister = [(ownedCryptoId: ObvCryptoIdentity, pushNotificationType: ObvPushNotificationType.ByteId)]() - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - let serverPushNotifications = try ServerPushNotification.getAllServerPushNotification(within: obvContext.context) - - try serverPushNotifications.forEach { serverPushNotification in - - try serverPushNotification.switchToServerRegistrationStatus(.toRegister) - - let pushNotification = try serverPushNotification.pushNotification - - serverPushNotificationsToRegister.append((ownedCryptoId: pushNotification.ownedCryptoId, pushNotificationType: pushNotification.byteId)) - - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - } - - } - -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/ProcessCompletionOfURLSessionTaskForRegisteringPushNotificationOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/ProcessCompletionOfURLSessionTaskForRegisteringPushNotificationOperation.swift deleted file mode 100644 index 11ecfe8f..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/ProcessCompletionOfURLSessionTaskForRegisteringPushNotificationOperation.swift +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import OlvidUtils -import ObvServerInterface -import os.log -import ObvCrypto -import ObvTypes - - -final class ProcessCompletionOfURLSessionTaskForRegisteringPushNotificationOperation: ContextualOperationWithSpecificReasonForCancel { - - private let urlSessionTaskIdentifier: Int - private let responseData: Data - private let log: OSLog - - enum ServerReturnStatus { - case serverReturnedDataDiscardedAsItWasObsolete - case ok(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) - case invalidSession(ownedCryptoId: ObvCryptoIdentity, pushNotificationType: ObvPushNotificationType.ByteId, flowId: FlowIdentifier) - case anotherDeviceIsAlreadyRegistered(ownedCryptoId: ObvCryptoIdentity, pushNotificationType: ObvPushNotificationType.ByteId, flowId: FlowIdentifier) - case generalError(ownedCryptoId: ObvCryptoIdentity, pushNotificationType: ObvPushNotificationType.ByteId, flowId: FlowIdentifier) - case couldNotParseServerResponse(ownedCryptoId: ObvCryptoIdentity, pushNotificationType: ObvPushNotificationType.ByteId, flowId: FlowIdentifier) - } - - private(set) var serverReturnStatus: ServerReturnStatus? = nil - - init(urlSessionTaskIdentifier: Int, responseData: Data, log: OSLog) { - self.urlSessionTaskIdentifier = urlSessionTaskIdentifier - self.responseData = responseData - self.log = log - super.init() - } - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - guard let serverPushNotification = try ServerPushNotification.getRegisteringAndCorrespondingToURLSessionTaskIdentifier(urlSessionTaskIdentifier, within: obvContext.context) else { - // This happens if we had to relaunch a registration after launching a, now obsolete, request. In that case the ServerPushNotification entry which lead to the obsolete request may have been deleted. - // We simply discard the result of the obsolete URL request - serverReturnStatus = .serverReturnedDataDiscardedAsItWasObsolete - return - } - - let pushNotification = try serverPushNotification.pushNotification - - guard let status = ObvServerRegisterRemotePushNotificationMethod.parseObvServerResponse(responseData: responseData, using: log) else { - try serverPushNotification.switchToServerRegistrationStatus(.toRegister) - serverReturnStatus = .couldNotParseServerResponse(ownedCryptoId: pushNotification.ownedCryptoId, pushNotificationType: pushNotification.byteId, flowId: obvContext.flowId) - return - } - - switch status { - - case .ok: - os_log("The push notification registration was successfully received by the server for identity %{public}@. This device is registered 🥳.", log: log, type: .info, pushNotification.ownedCryptoId.debugDescription) - try serverPushNotification.switchToServerRegistrationStatus(.registered) - serverReturnStatus = .ok(ownedCryptoId: pushNotification.ownedCryptoId, flowId: obvContext.flowId) - return - - case .invalidSession: - try serverPushNotification.switchToServerRegistrationStatus(.toRegister) - serverReturnStatus = .invalidSession(ownedCryptoId: pushNotification.ownedCryptoId, pushNotificationType: pushNotification.byteId, flowId: obvContext.flowId) - return // the serverRetrunStatus was set, we will deal with this case in the completion handler of the operation - - case .anotherDeviceIsAlreadyRegistered: - try serverPushNotification.delete() - serverReturnStatus = .anotherDeviceIsAlreadyRegistered(ownedCryptoId: pushNotification.ownedCryptoId, pushNotificationType: pushNotification.byteId, flowId: obvContext.flowId) - return // the serverRetrunStatus was set, we will deal with this case in the completion handler of the operation - - case .generalError: - try serverPushNotification.switchToServerRegistrationStatus(.toRegister) - serverReturnStatus = .generalError(ownedCryptoId: pushNotification.ownedCryptoId, pushNotificationType: pushNotification.byteId, flowId: obvContext.flowId) - return // the serverRetrunStatus was set, we will deal with this case in the completion handler of the operation - - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - } - - } - -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/RegisterPushNotificationToRegisterOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/RegisterPushNotificationToRegisterOperation.swift deleted file mode 100644 index 8d13afc4..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/RegisterPushNotificationToRegisterOperation.swift +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import OlvidUtils -import ObvCrypto -import ObvServerInterface -import ObvMetaManager -import os.log -import ObvTypes - - -final class RegisterPushNotificationToRegisterOperation: ContextualOperationWithSpecificReasonForCancel { - - private let ownedCryptoId: ObvCryptoIdentity - private let pushNotificationType: ObvPushNotificationType.ByteId - private let remoteNotificationByteIdentifierForServer: Data - private let identityDelegate: ObvIdentityDelegate - private let session: URLSession - - init(ownedCryptoId: ObvCryptoIdentity, pushNotificationType: ObvPushNotificationType.ByteId, remoteNotificationByteIdentifierForServer: Data, session: URLSession, identityDelegate: ObvIdentityDelegate) { - self.ownedCryptoId = ownedCryptoId - self.pushNotificationType = pushNotificationType - self.remoteNotificationByteIdentifierForServer = remoteNotificationByteIdentifierForServer - self.session = session - self.identityDelegate = identityDelegate - super.init() - } - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - guard let serverPushNotification = try ServerPushNotification.getServerPushNotificationOfType(pushNotificationType, ownedCryptoId: ownedCryptoId, within: obvContext.context) else { - // Nothing to do - return - } - - guard try serverPushNotification.serverRegistrationStatus.byteId == .toRegister else { - // Nothing to do - return - } - - guard let serverSession = try ServerSession.get(within: obvContext, withIdentity: ownedCryptoId) else { - return cancel(withReason: .serverSessionRequired) - } - - guard let token = serverSession.token else { - return cancel(withReason: .serverSessionRequired) - } - - let pushNotification = try serverPushNotification.pushNotification - - switch pushNotification { - - case .remote(let ownedCryptoId, let currentDeviceUID, let pushToken, let voipToken, let maskingUID, let parameters): - - let method = ObvServerRegisterRemotePushNotificationMethod(ownedIdentity: ownedCryptoId, - token: token, - deviceUid: currentDeviceUID, - remoteNotificationByteIdentifierForServer: remoteNotificationByteIdentifierForServer, - deviceTokensAndmaskingUID: (pushToken, voipToken, maskingUID), - parameters: parameters, - keycloakPushTopics: parameters.keycloakPushTopics, - flowId: obvContext.flowId) - method.identityDelegate = identityDelegate - - let task: URLSessionDataTask - do { - task = try method.dataTask(within: self.session) - } catch let error { - return cancel(withReason: .failedToCreateURLSessionDataTask(error: error)) - } - task.resume() - - try serverPushNotification.switchToServerRegistrationStatus(.registering(urlSessionTaskIdentifier: task.taskIdentifier)) - - case .registerDeviceUid(ownedCryptoId: let ownedCryptoId, currentDeviceUID: let currentDeviceUID, parameters: let parameters): - - let method = ObvServerRegisterRemotePushNotificationMethod(ownedIdentity: ownedCryptoId, - token: token, - deviceUid: currentDeviceUID, - remoteNotificationByteIdentifierForServer: Data([0xff]), - deviceTokensAndmaskingUID: nil, - parameters: parameters, - keycloakPushTopics: parameters.keycloakPushTopics, - flowId: obvContext.flowId) - method.identityDelegate = identityDelegate - - let task: URLSessionDataTask - do { - task = try method.dataTask(within: self.session) - } catch let error { - return cancel(withReason: .failedToCreateURLSessionDataTask(error: error)) - } - - task.resume() - - try serverPushNotification.switchToServerRegistrationStatus(.registering(urlSessionTaskIdentifier: task.taskIdentifier)) - - } - - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - } - - } - -} - - -public enum RegisterUnregisteredPushNotificationOperationReasonForCancel: LocalizedErrorWithLogType { - - case coreDataError(error: Error) - case contextIsNil - case failedToCreateURLSessionDataTask(error: Error) - case serverSessionRequired - - public var logType: OSLogType { - switch self { - case .serverSessionRequired: - return .error - case .coreDataError, .contextIsNil, .failedToCreateURLSessionDataTask: - return .fault - } - } - - public var errorDescription: String? { - switch self { - case .contextIsNil: - return "Context is nil" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .failedToCreateURLSessionDataTask(error: let error): - return "Failed to create URLSessionDataTask: \(error.localizedDescription)" - case .serverSessionRequired: - return "Server session required" - } - } - -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/ProcessRegisteredPushNotificationsCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/ProcessRegisteredPushNotificationsCoordinator.swift deleted file mode 100644 index 57e43ef5..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/ProcessRegisteredPushNotificationsCoordinator.swift +++ /dev/null @@ -1,414 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import ObvServerInterface -import ObvTypes -import ObvOperation -import ObvCrypto -import ObvMetaManager -import OlvidUtils - - -final class ServerPushNotificationsCoordinator: NSObject, ObvErrorMaker { - - // MARK: - Instance variables - - fileprivate let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - fileprivate let logCategory = "ServerPushNotificationsCoordinator" - static let errorDomain = "ServerPushNotificationsCoordinator" - - weak var delegateManager: ObvNetworkFetchDelegateManager? - - private lazy var session: URLSession! = { - let sessionConfiguration = URLSessionConfiguration.ephemeral - return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) - }() - - // Allows to store the data received while resuming the URL task - private var _currentTasks = [UIBackgroundTaskIdentifier: Data]() - private var currentTasksQueue = DispatchQueue(label: "GetTokenCoordinatorQueueForCurrentDownloadTasks") - - private let remoteNotificationByteIdentifierForServer: Data - - private let coordinatorsQueue: OperationQueue - private let queueForComposedOperations: OperationQueue - private var failedAttemptsCounterManager = FailedAttemptsCounterManager() - private var retryManager = FetchRetryManager() - - init(remoteNotificationByteIdentifierForServer: Data, coordinatorsQueue: OperationQueue, queueForComposedOperations: OperationQueue) { - self.remoteNotificationByteIdentifierForServer = remoteNotificationByteIdentifierForServer - self.coordinatorsQueue = coordinatorsQueue - self.queueForComposedOperations = queueForComposedOperations - super.init() - } - -} - -// MARK: - Synchronized access to the current download tasks - -extension ServerPushNotificationsCoordinator { - - private func removeDataReceivedFor(_ task: URLSessionTask) -> Data? { - var dataReceived: Data? - currentTasksQueue.sync { - dataReceived = _currentTasks.removeValue(forKey: UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)) - } - return dataReceived - } - - private func accumulate(_ data: Data, forTask task: URLSessionTask) { - currentTasksQueue.sync { - let currentData = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] ?? Data() - var newData = currentData - newData.append(data) - _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = newData - } - } - -} - -// MARK: - ServerPushNotificationsDelegate - -extension ServerPushNotificationsCoordinator: ServerPushNotificationsDelegate { - - func registerToPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier) { - - let op1 = CreateOrUpdateIfRequiredServerPushNotificationOperation(pushNotification: pushNotification) - - guard let composedOp = createCompositionOfOneContextualOperation(op1: op1) else { assertionFailure(); return } - defer { coordinatorsQueue.addOperation(composedOp) } - - let previousCompletion = composedOp.completionBlock - composedOp.completionBlock = { [weak self] in - - previousCompletion?() - - guard composedOp.isCancelled else { - self?.failedAttemptsCounterManager.reset(counter: .registerPushNotification(ownedIdentity: pushNotification.ownedCryptoId)) - if op1.thereIsANewServerPushNotificationToRegister { - do { - try self?.processServerPushNotificationsToRegister(ownedCryptoId: pushNotification.ownedCryptoId, pushNotificationType: pushNotification.byteId, flowId: flowId) - } catch { - assertionFailure(error.localizedDescription) // This never happens in practice - } - } - return - } - - guard let reasonForCancel = composedOp.reasonForCancel else { assertionFailure(); return } - switch reasonForCancel { - case .unknownReason: - assertionFailure("unknownReason") - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - case .op1Cancelled(reason: let op1ReasonForCancel): - switch op1ReasonForCancel { - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - case .contextIsNil: - assertionFailure("contextIsNil") - } - } - - guard let delay = self?.failedAttemptsCounterManager.incrementAndGetDelay(.registerPushNotification(ownedIdentity: pushNotification.ownedCryptoId)) else { return } - self?.retryManager.executeWithDelay(delay) { - self?.registerToPushNotification(pushNotification, flowId: flowId) - } - } - - } - - - func processServerPushNotificationsToRegister(ownedCryptoId: ObvCryptoIdentity, pushNotificationType: ObvPushNotificationType.ByteId, flowId: FlowIdentifier) throws { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let identityDelegate = delegateManager.identityDelegate else { - os_log("The identity delegate is not set", log: log, type: .fault) - assertionFailure() - return - } - - let op1 = RegisterPushNotificationToRegisterOperation( - ownedCryptoId: ownedCryptoId, - pushNotificationType: pushNotificationType, - remoteNotificationByteIdentifierForServer: remoteNotificationByteIdentifierForServer, - session: session, - identityDelegate: identityDelegate) - - guard let composedOp = createCompositionOfOneContextualOperation(op1: op1) else { assertionFailure(); return } - defer { coordinatorsQueue.addOperation(composedOp) } - - let previousCompletion = composedOp.completionBlock - composedOp.completionBlock = { [weak self] in - - previousCompletion?() - - guard composedOp.isCancelled else { - self?.failedAttemptsCounterManager.reset(counter: .registerPushNotification(ownedIdentity: ownedCryptoId)) - return - } - - guard let reasonForCancel = composedOp.reasonForCancel else { assertionFailure(); return } - switch reasonForCancel { - case .unknownReason: - assertionFailure("unknownReason") - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - case .op1Cancelled(reason: let op1ReasonForCancel): - switch op1ReasonForCancel { - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - case .contextIsNil: - assertionFailure("contextIsNil") - case .failedToCreateURLSessionDataTask(error: let error): - assertionFailure("failedToCreateURLSessionDataTask: \(error.localizedDescription)") - case .serverSessionRequired: - try? delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedCryptoId, flowId: flowId) - } - } - - self?.retryLaterProcessServerPushNotificationsToRegister(ownedCryptoId: ownedCryptoId, pushNotificationType: pushNotificationType, flowId: flowId) - - } - - } - - - func forceRegisteringOfServerPushNotificationsOnBootstrap(flowId: FlowIdentifier) { - - let op1 = MarkAllServerPushNotificationsAsToRegisterOperation() - - guard let composedOp = createCompositionOfOneContextualOperation(op1: op1) else { assertionFailure(); return } - defer { coordinatorsQueue.addOperation(composedOp) } - - let previousCompletion = composedOp.completionBlock - composedOp.completionBlock = { [weak self] in - - previousCompletion?() - - guard composedOp.isCancelled else { - for serverPushNotificationToRegister in op1.serverPushNotificationsToRegister { - do { - try self?.processServerPushNotificationsToRegister( - ownedCryptoId: serverPushNotificationToRegister.ownedCryptoId, - pushNotificationType: serverPushNotificationToRegister.pushNotificationType, - flowId: flowId) - } catch { - assertionFailure(error.localizedDescription) - } - } - return - } - - guard let reasonForCancel = composedOp.reasonForCancel else { assertionFailure(); return } - switch reasonForCancel { - case .unknownReason: - assertionFailure("unknownReason") - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - case .op1Cancelled(reason: let op1ReasonForCancel): - switch op1ReasonForCancel { - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - case .contextIsNil: - assertionFailure("contextIsNil") - } - } - - } - - } - - - private func retryLaterProcessServerPushNotificationsToRegister(ownedCryptoId: ObvCryptoIdentity, pushNotificationType: ObvPushNotificationType.ByteId, flowId: FlowIdentifier) { - let delay = failedAttemptsCounterManager.incrementAndGetDelay(.registerPushNotification(ownedIdentity: ownedCryptoId)) - retryManager.executeWithDelay(delay) { [weak self] in - try? self?.processServerPushNotificationsToRegister(ownedCryptoId: ownedCryptoId, pushNotificationType: pushNotificationType, flowId: flowId) - } - } - - - func deleteAllServerPushNotificationsOnOwnedIdentityDeletion(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) { - - let op1 = DeleteAllServerPushNotificationsOnOwnedIdentityDeletionOperation(ownedCryptoId: ownedCryptoId) - guard let composedOp = createCompositionOfOneContextualOperation(op1: op1) else { assertionFailure(); return } - defer { coordinatorsQueue.addOperation(composedOp) } - - let previousCompletion = composedOp.completionBlock - composedOp.completionBlock = { - previousCompletion?() - guard composedOp.isCancelled else { return } - guard let reasonForCancel = composedOp.reasonForCancel else { assertionFailure(); return } - switch reasonForCancel { - case .unknownReason: - assertionFailure() - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - case .op1Cancelled(reason: let op1ReasonForCancel): - switch op1ReasonForCancel { - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - case .contextIsNil: - assertionFailure() - } - } - } - } - -} - - -// MARK: - URLSessionDataDelegate - -extension ServerPushNotificationsCoordinator: URLSessionDataDelegate { - - func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { - accumulate(data, forTask: dataTask) - } - - - func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - if let error { - os_log("The process registered push notification task failed (which also happens if there is no network): %{public}@", log: log, type: .error, error.localizedDescription) - _ = removeDataReceivedFor(task) - return - } - - guard let responseData = removeDataReceivedFor(task) else { assertionFailure(); return } - - let op1 = ProcessCompletionOfURLSessionTaskForRegisteringPushNotificationOperation(urlSessionTaskIdentifier: task.taskIdentifier, responseData: responseData, log: log) - - guard let composedOp = createCompositionOfOneContextualOperation(op1: op1) else { assertionFailure(); return } - defer { coordinatorsQueue.addOperation(composedOp) } - - let previousCompletion = composedOp.completionBlock - composedOp.completionBlock = { [weak self] in - - previousCompletion?() - - guard composedOp.isCancelled else { - - guard let serverReturnStatus = op1.serverReturnStatus else { assertionFailure(); return } - - switch serverReturnStatus { - - case .serverReturnedDataDiscardedAsItWasObsolete: - return - - case .ok(ownedCryptoId: let ownedCryptoId, flowId: let flowId): - delegateManager.networkFetchFlowDelegate.serverReportedThatThisDeviceWasSuccessfullyRegistered(forOwnedIdentity: ownedCryptoId, flowId: flowId) - return - - case .invalidSession(ownedCryptoId: let ownedCryptoId, pushNotificationType: let pushNotificationType, flowId: let flowId): - try? delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedCryptoId, flowId: flowId) - self?.retryLaterProcessServerPushNotificationsToRegister(ownedCryptoId: ownedCryptoId, pushNotificationType: pushNotificationType, flowId: flowId) - return - - case .anotherDeviceIsAlreadyRegistered(ownedCryptoId: let ownedCryptoId, pushNotificationType: let pushNotificationType, flowId: let flowId): - delegateManager.networkFetchFlowDelegate.serverReportedThatAnotherDeviceIsAlreadyRegistered(forOwnedIdentity: ownedCryptoId, flowId: flowId) - self?.retryLaterProcessServerPushNotificationsToRegister(ownedCryptoId: ownedCryptoId, pushNotificationType: pushNotificationType, flowId: flowId) - return - - case .generalError(ownedCryptoId: let ownedCryptoId, pushNotificationType: let pushNotificationType, flowId: let flowId): - self?.retryLaterProcessServerPushNotificationsToRegister(ownedCryptoId: ownedCryptoId, pushNotificationType: pushNotificationType, flowId: flowId) - return - - case .couldNotParseServerResponse(ownedCryptoId: let ownedCryptoId, pushNotificationType: let pushNotificationType, flowId: let flowId): - self?.retryLaterProcessServerPushNotificationsToRegister(ownedCryptoId: ownedCryptoId, pushNotificationType: pushNotificationType, flowId: flowId) - return - - } - } - - guard let reasonForCancel = composedOp.reasonForCancel else { assertionFailure(); return } - - switch reasonForCancel { - case .unknownReason: - assertionFailure() - return - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - return - case .op1Cancelled(reason: let op1ReasonForCancel): - switch op1ReasonForCancel { - case .coreDataError(error: let error): - assertionFailure(error.localizedDescription) - return - case .contextIsNil: - assertionFailure() - return - } - } - - } - - } - -} - - -// MARK: - Helpers - -extension ServerPushNotificationsCoordinator { - - private func createCompositionOfOneContextualOperation(op1: ContextualOperationWithSpecificReasonForCancel) -> CompositionOfOneContextualOperation? { - - guard let delegateManager else { - assertionFailure("The Delegate Manager is not set") - return nil - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let contextCreator = delegateManager.contextCreator else { - assertionFailure("The context creator manager is not set") - return nil - } - - let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: contextCreator, queueForComposedOperations: queueForComposedOperations, log: log, flowId: FlowIdentifier()) - - composedOp.completionBlock = { [weak composedOp] in - assert(composedOp != nil) - composedOp?.logReasonIfCancelled(log: log) - } - return composedOp - - } - -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/QueryApiKeyStatusCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/QueryApiKeyStatusCoordinator.swift deleted file mode 100644 index 1f5c1772..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/QueryApiKeyStatusCoordinator.swift +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import ObvServerInterface -import ObvTypes -import ObvOperation -import ObvCrypto -import ObvMetaManager -import OlvidUtils - - -final class QueryApiKeyStatusCoordinator: NSObject { - - fileprivate let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - fileprivate let logCategory = "QueryApiKeyStatusCoordinator" - - weak var delegateManager: ObvNetworkFetchDelegateManager? - - private let localQueue = DispatchQueue(label: "QueryApiKeyStatusCoordinatorQueue") - - private lazy var session: URLSession! = { - let sessionConfiguration = URLSessionConfiguration.ephemeral - return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) - }() - - private var _currentTasks = [UIBackgroundTaskIdentifier: (ownedIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier, dataReceived: Data)]() - private var currentTasksQueue = DispatchQueue(label: "QueryApiKeyStatusCoordinatorQueueForCurrentTasks") - -} - - -// MARK: - Synchronized access to the current download tasks - -extension QueryApiKeyStatusCoordinator { - - private func currentTaskExistsFor(_ identity: ObvCryptoIdentity, apiKey: UUID) -> Bool { - var exist = true - currentTasksQueue.sync { - exist = _currentTasks.values.contains(where: { $0.ownedIdentity == identity && $0.apiKey == apiKey }) - } - return exist - } - - private func removeInfoFor(_ task: URLSessionTask) -> (ownedIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (ObvCryptoIdentity, UUID, FlowIdentifier, Data)? = nil - currentTasksQueue.sync { - info = _currentTasks.removeValue(forKey: UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)) - } - return info - } - - private func getInfoFor(_ task: URLSessionTask) -> (ownedIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (ObvCryptoIdentity, UUID, FlowIdentifier, Data)? = nil - currentTasksQueue.sync { - info = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] - } - return info - } - - private func insert(_ task: URLSessionTask, for identity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) { - currentTasksQueue.sync { - _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (identity, apiKey, flowId, Data()) - } - } - - private func accumulate(_ data: Data, forTask task: URLSessionTask) { - currentTasksQueue.sync { - guard let (ownedIdentity, apiKey, identifierForNotifications, currentData) = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] else { return } - var newData = currentData - newData.append(data) - _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (ownedIdentity, apiKey, identifierForNotifications, newData) - } - } - -} - - -// MARK: - QueryApiKeyStatusDelegate - -extension QueryApiKeyStatusCoordinator: QueryApiKeyStatusDelegate { - - private enum SyncQueueOutput { - case previousTaskExists - case newTaskToRun(task: URLSessionTask) - case failedToCreateTask(error: Error) - } - - func queryAPIKeyStatus(for identity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - var syncQueueOutput: SyncQueueOutput? // The state after the localQueue.sync is executed - - localQueue.sync { - - guard !currentTaskExistsFor(identity, apiKey: apiKey) else { - syncQueueOutput = .previousTaskExists - return - } - - let method = QueryApiKeyStatusServerMethod(ownedIdentity: identity, apiKey: apiKey, flowId: flowId) - method.identityDelegate = delegateManager.identityDelegate - let task: URLSessionDataTask - do { - task = try method.dataTask(within: self.session) - } catch let error { - syncQueueOutput = .failedToCreateTask(error: error) - return - } - - insert(task, for: identity, apiKey: apiKey, flowId: flowId) - - syncQueueOutput = .newTaskToRun(task: task) - - } - - guard syncQueueOutput != nil else { - assertionFailure() - os_log("syncQueueOutput is nil", log: log, type: .fault) - return - } - - switch syncQueueOutput! { - - case .previousTaskExists: - os_log("A running task already exists for identity %{public}@ and keyId %{public}@", log: log, type: .debug, identity.debugDescription, apiKey.debugDescription) - assertionFailure() - - case .newTaskToRun(task: let task): - os_log("New task to run for identity %{public}@ and keyId %{public}@", log: log, type: .debug, identity.debugDescription, apiKey.debugDescription) - task.resume() - - case .failedToCreateTask(error: let error): - os_log("Could not create task for QueryApiKeyStatusServerMethod: %{public}@", log: log, type: .error, error.localizedDescription) - assertionFailure() - return - - } - } - -} - - -// MARK: - URLSessionDataDelegate - -extension QueryApiKeyStatusCoordinator: URLSessionDataDelegate { - - func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { - accumulate(data, forTask: dataTask) - } - - func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - guard let (ownedIdentity, apiKey, flowId, dataReceived) = getInfoFor(task) else { return } - - guard error == nil else { - os_log("💰 The QueryApiKeyStatusServerMethod task failed for identity %{public}@: %@", log: log, type: .error, ownedIdentity.debugDescription, error!.localizedDescription) - _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.apiKeyStatusQueryFailed(ownedIdentity: ownedIdentity, apiKey: apiKey) - return - } - - // If we reach this point, the data task did complete without error - - guard let (status, returnedValues) = QueryApiKeyStatusServerMethod.parseObvServerResponse(responseData: dataReceived, using: log) else { - os_log("💰 Could not parse the server response for the QueryApiKeyStatusServerMethod task for identity %{public}@ and apiKey", log: log, type: .fault, ownedIdentity.debugDescription, apiKey.debugDescription) - _ = removeInfoFor(task) - assertionFailure() - delegateManager.networkFetchFlowDelegate.apiKeyStatusQueryFailed(ownedIdentity: ownedIdentity, apiKey: apiKey) - return - } - - switch status { - case .ok: - let (apiKeyStatus, apiPermissions, apiKeyExpirationDate) = returnedValues! - os_log("💰 Server returned an API Key Status [%{public}@] with the following expiration date: %{public}@", log: log, type: .fault, apiKeyStatus.description, apiKeyExpirationDate?.debugDescription ?? "NONE") - delegateManager.networkFetchFlowDelegate.newAPIKeyElementsForAPIKey(serverURL: ownedIdentity.serverURL, apiKey: apiKey, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpirationDate, flowId: flowId) - _ = removeInfoFor(task) - - case .generalError: - os_log("💰 Server reported general error during the QueryApiKeyStatusServerMethod task for identity %{public}@ for keyId %{public}@", log: log, type: .fault, ownedIdentity.debugDescription, apiKey.debugDescription) - _ = removeInfoFor(task) - assertionFailure() - delegateManager.networkFetchFlowDelegate.apiKeyStatusQueryFailed(ownedIdentity: ownedIdentity, apiKey: apiKey) - return - - } - } - -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerPushNotificationsCoordinator/ServerPushNotificationsCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerPushNotificationsCoordinator/ServerPushNotificationsCoordinator.swift new file mode 100644 index 00000000..15bb6e0d --- /dev/null +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerPushNotificationsCoordinator/ServerPushNotificationsCoordinator.swift @@ -0,0 +1,197 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import ObvServerInterface +import ObvTypes +import ObvOperation +import ObvCrypto +import ObvMetaManager +import OlvidUtils + + +actor ServerPushNotificationsCoordinator: ServerPushNotificationsDelegate { + + private static let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem + private static let logCategory = "ServerPushNotificationsCoordinator" + private static var log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) + + weak var delegateManager: ObvNetworkFetchDelegateManager? + private let remoteNotificationByteIdentifierForServer: Data + private let prng: PRNGService + + private var failedAttemptsCounterManager = FailedAttemptsCounterManager() + private var retryManager = FetchRetryManager() + + init(remoteNotificationByteIdentifierForServer: Data, prng: PRNGService, logPrefix: String) { + self.remoteNotificationByteIdentifierForServer = remoteNotificationByteIdentifierForServer + self.prng = prng + let logSubsystem = "\(logPrefix).\(Self.defaultLogSubsystem)" + Self.log = OSLog(subsystem: logSubsystem, category: Self.logCategory) + } + + private enum RegistrationTask { + case inProgress(Task) + } + + private var cache = [ObvPushNotificationType: RegistrationTask]() + + + // MARK: - ServerPushNotificationsDelegate + + func registerPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier) async throws { + + let requestUUID = UUID() + + os_log("🫸[%{public}@] New pushNotification to register: %{public}@", log: Self.log, type: .info, requestUUID.debugDescription, pushNotification.debugDescription) + + try await registerPushNotification(pushNotification, flowId: flowId, requestUUID: requestUUID) + + os_log("🫸[%{public}@] Push notification processed", log: Self.log, type: .info, requestUUID.debugDescription) + + } + + + func setDelegateManager(_ delegateManager: ObvNetworkFetchDelegateManager) { + self.delegateManager = delegateManager + } + + + // MARK: - Helper methods + + + private func registerPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier, requestUUID: UUID) async throws { + + let returnStatus = try await self.registerPushNotificationOnServer(pushNotification, flowId: flowId, requestUUID: requestUUID) + + os_log("🫸[%{public}@] Status returned by the server: %{public}@", log: Self.log, type: .info, requestUUID.debugDescription, returnStatus.debugDescription) + + switch returnStatus { + case .ok: + return + case .invalidSession, .generalError: + // No need to inform the delegate that our session is invalid, this has been done already in registerPushNotificationOnServer(_:flowId:requestUUID:) + let delay = failedAttemptsCounterManager.incrementAndGetDelay(.registerPushNotification(ownedIdentity: pushNotification.ownedCryptoId)) + await retryManager.waitForDelay(milliseconds: delay) + try await registerPushNotification(pushNotification, flowId: flowId, requestUUID: requestUUID) + case .anotherDeviceIsAlreadyRegistered: + throw ObvError.anotherDeviceIsAlreadyRegistered + case .deviceToReplaceIsNotRegistered: + throw ObvError.deviceToReplaceIsNotRegistered + } + + } + + + private func registerPushNotificationOnServer(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier, requestUUID: UUID) async throws -> ObvServerRegisterRemotePushNotificationMethod.PossibleReturnStatus { + + guard let delegateManager = delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) + assertionFailure() + throw ObvError.theDelegateManagerIsNotSet + } + + let sessionToken = try await delegateManager.serverSessionDelegate.getValidServerSessionToken(for: pushNotification.ownedCryptoId, currentInvalidToken: nil, flowId: flowId).serverSessionToken + + if let cached = cache[pushNotification] { + switch cached { + case .inProgress(let task): + os_log("🫸[%{public}@] Cache hit: in progress", log: Self.log, type: .info, requestUUID.debugDescription) + return try await task.value + } + } + + os_log("🫸[%{public}@] Not in cache", log: Self.log, type: .info, requestUUID.debugDescription) + + let task = Task { + + let method = ObvServerRegisterRemotePushNotificationMethod( + pushNotification: pushNotification, + sessionToken: sessionToken, + remoteNotificationByteIdentifierForServer: remoteNotificationByteIdentifierForServer, + flowId: flowId, + prng: prng) + + os_log("🫸[%{public}@] Performing server query using session token %{public}@", log: Self.log, type: .info, requestUUID.debugDescription, sessionToken.hexString()) + + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) + + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw ObvError.invalidServerResponse + } + + guard let returnStatus = ObvServerRegisterRemotePushNotificationMethod.parseObvServerResponse(responseData: data, using: Self.log) else { + assertionFailure() + throw ObvError.couldNotParseReturnStatusFromServer + } + + return returnStatus + + } + + cache[pushNotification] = .inProgress(task) + + os_log("🫸[%{public}@] In progress", log: Self.log, type: .info, requestUUID.debugDescription) + + do { + let returnStatus = try await task.value + cache.removeValue(forKey: pushNotification) + switch returnStatus { + case .invalidSession: + os_log("🫸[%{public}@] We inform our delegate that the following session token is invalid: %{public}@", log: Self.log, type: .info, requestUUID.debugDescription, sessionToken.hexString()) + _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: pushNotification.ownedCryptoId, currentInvalidToken: sessionToken, flowId: flowId) + os_log("🫸[%{public}@] We informed our delegate that the following session token is invalid: %{public}@ and we try to register again", log: Self.log, type: .info, requestUUID.debugDescription, sessionToken.hexString()) + return try await registerPushNotificationOnServer(pushNotification, flowId: flowId, requestUUID: requestUUID) + default: + break + } + return returnStatus + } catch { + cache.removeValue(forKey: pushNotification) + throw error + } + + } + + enum ObvError: LocalizedError { + case invalidServerResponse + case theDelegateManagerIsNotSet + case couldNotParseReturnStatusFromServer + case anotherDeviceIsAlreadyRegistered + case deviceToReplaceIsNotRegistered + + var errorDescription: String? { + switch self { + case .invalidServerResponse: + return "Invalid server response" + case .theDelegateManagerIsNotSet: + return "The delegate manager is not set" + case .couldNotParseReturnStatusFromServer: + return "Could not parse return status from server" + case .anotherDeviceIsAlreadyRegistered: + return "Another device is already registered" + case .deviceToReplaceIsNotRegistered: + return "Device to replace is not registered" + } + } + } + +} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerQueryCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerQueryCoordinator.swift index 64faf267..4cf43c70 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerQueryCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerQueryCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import os.log import ObvServerInterface import ObvMetaManager import ObvTypes +import ObvEncoder import ObvCrypto import OlvidUtils @@ -52,12 +53,19 @@ final class ServerQueryCoordinator: NSObject { sessionConfiguration.useOlvidSettings(sharedContainerIdentifier: delegateManager?.sharedContainerIdentifier) return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) }() + + /// We create a specific session for the case when the query is a Keycloak revocation test. The reason: the keycloak might not be reachable (e.g., the keycloak is on a private network) + /// and we need the test to fail when it is the case. This is only possible if the `waitsForConnectivity` parameter is false. + private lazy var sessionForKeycloakRevocation: URLSession! = { + let sessionConfiguration = URLSessionConfiguration.ephemeral + sessionConfiguration.useOlvidSettings(sharedContainerIdentifier: delegateManager?.sharedContainerIdentifier) + sessionConfiguration.waitsForConnectivity = false // So as to fail early if the keycloak server is not available + return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) + }() private var _currentTasks = [UIBackgroundTaskIdentifier: (objectId: NSManagedObjectID, dataReceived: Data, flowId: FlowIdentifier)]() private var currentTasksQueue = DispatchQueue(label: "ServerQueryCoordinatorQueueForCurrentTasks") - private let queueForCallingDelegate = DispatchQueue(label: "ServerQueryCoordinator queue for calling delegate methods") - let prng: PRNGService let downloadedUserData: URL private var notificationCenterTokens = [NSObjectProtocol]() @@ -141,7 +149,7 @@ extension ServerQueryCoordinator { } contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in do { - let serverQueries = try PendingServerQuery.getAllServerQuery(for: ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) + let serverQueries = try PendingServerQuery.getAllServerQuery(for: ownedCryptoIdentity, isWebSocket: .bool(false), delegateManager: delegateManager, within: obvContext) for serverQuery in serverQueries { postServerQuery(withObjectId: serverQuery.objectID, flowId: flowId) } @@ -172,7 +180,13 @@ extension ServerQueryCoordinator { do { let serverQueries = try PendingServerQuery.getAllServerQuery(delegateManager: delegateManager, within: obvContext) for serverQuery in serverQueries { - postServerQuery(withObjectId: serverQuery.objectID, flowId: flowId) + if serverQuery.isWebSocket { + // WebSocket server queries should have been deleted by now: they relate to an obsolete owned identity transfer protocol + assertionFailure() + } else { + // Other server queries can be re-posted + postServerQuery(withObjectId: serverQuery.objectID, flowId: flowId) + } } } catch(let error) { os_log("Could fetch server queries for the given owned identity.", log: log, type: .error, error.localizedDescription) @@ -182,6 +196,57 @@ extension ServerQueryCoordinator { } } + + + // Used during boostrap + + func deletePendingServerQueryOfNonExistingOwnedIdentities(flowId: FlowIdentifier) { + + guard let delegateManager = delegateManager else { + let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) + os_log("The Delegate Manager is not set", log: log, type: .fault) + assertionFailure() + return + } + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) + + guard let identityDelegate = delegateManager.identityDelegate else { + os_log("The identity delegate is not set", log: log, type: .fault) + assertionFailure() + return + } + + guard let contextCreator = delegateManager.contextCreator else { + os_log("The context creator manager is not set", log: log, type: .fault) + assertionFailure() + return + } + + contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in + do { + let existingOwnedIdentities = try identityDelegate.getOwnedIdentities(within: obvContext) + let serverQueries = try PendingServerQuery.getAllServerQuery(delegateManager: delegateManager, within: obvContext) + for serverQuery in serverQueries { + guard !serverQuery.isDeleted else { continue } + if let ownedCryptoIdentity = try? serverQuery.ownedIdentity { + if !existingOwnedIdentities.contains(ownedCryptoIdentity) { + serverQuery.deletePendingServerQuery(within: obvContext) + } + } else { + assertionFailure() + serverQuery.deletePendingServerQuery(within: obvContext) + } + } + try obvContext.save(logOnFailure: log) + } catch(let error) { + os_log("Could fetch server queries for the given owned identity.", log: log, type: .error, error.localizedDescription) + return + + } + + } + } } @@ -192,12 +257,16 @@ extension ServerQueryCoordinator: ServerQueryDelegate { private enum SyncQueueOutput { case previousTaskExists + case serverqueryDeletedAsOwnedIdentityIsNotActive case couldNotFindServerQueryInDatabase case newTaskToRun(task: URLSessionTask) case failedToCreateTask(methodName: String, error: Error) case serverSessionRequired(for: ObvCryptoIdentity, flowId: FlowIdentifier) + case webSocketQueryHandledByAnotherCoordinator + case serverQueryOwnedIdentityCannotBeParsed } + func postServerQuery(withObjectId objectId: NSManagedObjectID, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { @@ -210,6 +279,13 @@ extension ServerQueryCoordinator: ServerQueryDelegate { guard let contextCreator = delegateManager.contextCreator else { os_log("The context creator manager is not set", log: log, type: .fault) + assertionFailure() + return + } + + guard let identityDelegate = delegateManager.identityDelegate else { + os_log("The identity delegate is not set", log: log, type: .fault) + assertionFailure() return } @@ -226,14 +302,37 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let serverQuery: PendingServerQuery do { - serverQuery = try PendingServerQuery.get(objectId: objectId, - delegateManager: delegateManager, - within: obvContext) + let _serverQuery = try PendingServerQuery.get(objectId: objectId, delegateManager: delegateManager, within: obvContext) + guard let _serverQuery else { + syncQueueOutput = .couldNotFindServerQueryInDatabase + return + } + serverQuery = _serverQuery } catch { + assertionFailure() syncQueueOutput = .couldNotFindServerQueryInDatabase return } - let ownedIdentity = serverQuery.ownedIdentity + + guard let ownedIdentity = try? serverQuery.ownedIdentity else { + syncQueueOutput = .serverQueryOwnedIdentityCannotBeParsed + return + } + + // Make sure the owned identity still exists + + do { + guard try identityDelegate.isOwnedIdentityActive(ownedIdentity: ownedIdentity, flowId: flowId) else { + // The owned identity does not exist anymore, we delete the server query + serverQuery.deletePendingServerQuery(within: obvContext) + try obvContext.save(logOnFailure: log) + syncQueueOutput = .serverqueryDeletedAsOwnedIdentityIsNotActive + return + } + } catch { + assertionFailure(error.localizedDescription) + return + } // If we reach this point, we do need to send the server query to the server @@ -242,11 +341,12 @@ extension ServerQueryCoordinator: ServerQueryDelegate { os_log("Creating a ObvServerDeviceDiscoveryMethod of the contact identity %@", log: log, type: .debug, contactIdentity.debugDescription) - let method = ObvServerDeviceDiscoveryMethod(ownedIdentity: serverQuery.ownedIdentity, toIdentity: contactIdentity, flowId: flowId) + let method = ObvServerDeviceDiscoveryMethod(ownedIdentity: ownedIdentity, toIdentity: contactIdentity, flowId: flowId) method.identityDelegate = delegateManager.identityDelegate let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { assertionFailure(error.localizedDescription) syncQueueOutput = .failedToCreateTask(methodName: "ObvServerDeviceDiscoveryMethod", error: error) @@ -257,13 +357,139 @@ extension ServerQueryCoordinator: ServerQueryDelegate { syncQueueOutput = .newTaskToRun(task: task) return + + case .ownedDeviceDiscovery: + + os_log("Creating an ObvServerOwnedDeviceDiscoveryMethod of the owned identity %@", log: log, type: .debug, ownedIdentity.debugDescription) + + let method = ObvServerOwnedDeviceDiscoveryMethod(ownedIdentity: ownedIdentity, flowId: flowId) + method.identityDelegate = delegateManager.identityDelegate + let task: URLSessionDataTask + do { + task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription + } catch let error { + assertionFailure(error.localizedDescription) + syncQueueOutput = .failedToCreateTask(methodName: "ObvServerOwnedDeviceDiscoveryMethod", error: error) + return + } + + insert(task, forObjectId: objectId, flowId: flowId) + + syncQueueOutput = .newTaskToRun(task: task) + return + + case .setOwnedDeviceName(ownedDeviceUID: let ownedDeviceUID, encryptedOwnedDeviceName: let encryptedOwnedDeviceName, isCurrentDevice: _): + + os_log("Creating an ObvServerOwnedDeviceManagementMethod (setOwnedDeviceName) of the owned identity %@", log: log, type: .debug, ownedIdentity.debugDescription) + + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity) else { + syncQueueOutput = .serverSessionRequired(for: ownedIdentity, flowId: flowId) + return + } + guard let token = serverSession.token else { + syncQueueOutput = .serverSessionRequired(for: ownedIdentity, flowId: flowId) + return + } + + let method = OwnedDeviceManagementServerMethod( + ownedIdentity: ownedIdentity, + token: token, + queryType: .setOwnedDeviceName(ownedDeviceUID: ownedDeviceUID, encryptedOwnedDeviceName: encryptedOwnedDeviceName), + flowId: flowId) + + method.identityDelegate = delegateManager.identityDelegate + let task: URLSessionDataTask + do { + task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription + } catch let error { + assertionFailure(error.localizedDescription) + syncQueueOutput = .failedToCreateTask(methodName: "OwnedDeviceManagementServerMethod", error: error) + return + } + + insert(task, forObjectId: objectId, flowId: flowId) + + syncQueueOutput = .newTaskToRun(task: task) + return + + case .deactivateOwnedDevice(ownedDeviceUID: let ownedDeviceUID, isCurrentDevice: _): + + os_log("Creating an ObvServerOwnedDeviceManagementMethod (deactivateOwnedDevice) of the owned identity %@", log: log, type: .debug, ownedIdentity.debugDescription) + + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity) else { + syncQueueOutput = .serverSessionRequired(for: ownedIdentity, flowId: flowId) + return + } + guard let token = serverSession.token else { + syncQueueOutput = .serverSessionRequired(for: ownedIdentity, flowId: flowId) + return + } + + let method = OwnedDeviceManagementServerMethod( + ownedIdentity: ownedIdentity, + token: token, + queryType: .deactivateOwnedDevice(ownedDeviceUID: ownedDeviceUID), + flowId: flowId) + + method.identityDelegate = delegateManager.identityDelegate + let task: URLSessionDataTask + do { + task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription + } catch let error { + assertionFailure(error.localizedDescription) + syncQueueOutput = .failedToCreateTask(methodName: "OwnedDeviceManagementServerMethod", error: error) + return + } + + insert(task, forObjectId: objectId, flowId: flowId) + + syncQueueOutput = .newTaskToRun(task: task) + return + + case .setUnexpiringOwnedDevice(ownedDeviceUID: let ownedDeviceUID): + + os_log("Creating an ObvServerOwnedDeviceManagementMethod (setUnexpiringOwnedDevice) of the owned identity %@ for device %{public}@", log: log, type: .debug, ownedIdentity.debugDescription, ownedDeviceUID.debugDescription) + + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity) else { + syncQueueOutput = .serverSessionRequired(for: ownedIdentity, flowId: flowId) + return + } + guard let token = serverSession.token else { + syncQueueOutput = .serverSessionRequired(for: ownedIdentity, flowId: flowId) + return + } + + let method = OwnedDeviceManagementServerMethod( + ownedIdentity: ownedIdentity, + token: token, + queryType: .setUnexpiringOwnedDevice(ownedDeviceUID: ownedDeviceUID), + flowId: flowId) + + method.identityDelegate = delegateManager.identityDelegate + let task: URLSessionDataTask + do { + task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription + } catch let error { + assertionFailure(error.localizedDescription) + syncQueueOutput = .failedToCreateTask(methodName: "OwnedDeviceManagementServerMethod", error: error) + return + } + + insert(task, forObjectId: objectId, flowId: flowId) + + syncQueueOutput = .newTaskToRun(task: task) + return case .putUserData(label: let label, dataURL: let dataURL, dataKey: let dataKey): os_log("Creating a ObvServerPutUserDataMethod", log: log, type: .debug) let authEnc = ObvCryptoSuite.sharedInstance.authenticatedEncryption() - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedIdentity) else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity) else { syncQueueOutput = .serverSessionRequired(for: ownedIdentity, flowId: flowId) return } @@ -295,6 +521,7 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { syncQueueOutput = .failedToCreateTask(methodName: "ObvServerPutUserDataMethod", error: error) return @@ -309,12 +536,13 @@ extension ServerQueryCoordinator: ServerQueryDelegate { os_log("Creating a ObvServerGetUserDataMethod of the contact identity %@", log: log, type: .debug, contactIdentity.debugDescription) - let method = ObvServerGetUserDataMethod(ownedIdentity: serverQuery.ownedIdentity, toIdentity: contactIdentity, serverLabel: label, flowId: flowId) + let method = ObvServerGetUserDataMethod(ownedIdentity: ownedIdentity, toIdentity: contactIdentity, serverLabel: label, flowId: flowId) method.identityDelegate = delegateManager.identityDelegate let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { syncQueueOutput = .failedToCreateTask(methodName: "ObvServerGetUserDataMethod", error: error) return @@ -340,7 +568,8 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let task: URLSessionDataTask do { - task = try method.dataTask(within: self.session) + task = try method.dataTask(within: self.sessionForKeycloakRevocation) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { syncQueueOutput = .failedToCreateTask(methodName: "ObvServerCheckKeycloakRevocationMethod", error: error) return @@ -353,7 +582,7 @@ extension ServerQueryCoordinator: ServerQueryDelegate { case .createGroupBlob(groupIdentifier: let groupIdentifier, serverAuthenticationPublicKey: let serverAuthenticationPublicKey, encryptedBlob: let encryptedBlob): - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedIdentity) else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity) else { syncQueueOutput = .serverSessionRequired(for: ownedIdentity, flowId: flowId) return } @@ -373,8 +602,9 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { - syncQueueOutput = .failedToCreateTask(methodName: "ObvServerCheckKeycloakRevocationMethod", error: error) + syncQueueOutput = .failedToCreateTask(methodName: "ObvServerCreateGroupBlobServerMethod", error: error) return } @@ -393,8 +623,9 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { - syncQueueOutput = .failedToCreateTask(methodName: "ObvServerCheckKeycloakRevocationMethod", error: error) + syncQueueOutput = .failedToCreateTask(methodName: "ObvServerGetGroupBlobServerMethod", error: error) return } @@ -414,6 +645,7 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { syncQueueOutput = .failedToCreateTask(methodName: "ObvServerDeleteGroupBlobServerMethod", error: error) return @@ -435,6 +667,7 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { syncQueueOutput = .failedToCreateTask(methodName: "ObvServerPutGroupLogServerMethod", error: error) return @@ -457,6 +690,7 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { syncQueueOutput = .failedToCreateTask(methodName: "ObvServerGroupBlobLockServerMethod", error: error) return @@ -481,6 +715,7 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { syncQueueOutput = .failedToCreateTask(methodName: "ObvServerGroupBlobUpdateServerMethod", error: error) return @@ -499,6 +734,7 @@ extension ServerQueryCoordinator: ServerQueryDelegate { let task: URLSessionDataTask do { task = try method.dataTask(within: self.session) + task.taskDescription = serverQuery.queryType.taskDescription } catch let error { syncQueueOutput = .failedToCreateTask(methodName: "GetKeycloakDataServerMethod", error: error) return @@ -509,6 +745,12 @@ extension ServerQueryCoordinator: ServerQueryDelegate { syncQueueOutput = .newTaskToRun(task: task) return + case .sourceGetSessionNumber, .sourceWaitForTargetConnection, .targetSendEphemeralIdentity, .transferRelay, .transferWait, .closeWebsocketConnection: + + assertionFailure("This query is be handled by the ServerQueryWebSocketCoordinator, this one should not have been called") + syncQueueOutput = .webSocketQueryHandledByAnotherCoordinator + return + } } @@ -522,6 +764,10 @@ extension ServerQueryCoordinator: ServerQueryDelegate { } switch syncQueueOutput! { + + case .serverqueryDeletedAsOwnedIdentityIsNotActive: + os_log("Server query was deleted as the identity is not active", log: log, type: .error) + return case .previousTaskExists: os_log("A running task already exists for pending server query %{public}@", log: log, type: .debug, objectId.debugDescription) @@ -537,12 +783,28 @@ extension ServerQueryCoordinator: ServerQueryDelegate { case .serverSessionRequired(for: let ownedIdentity, flowId: let flowId): // REMARK we will be called again by NetworkFetchFlowCoordinator#newToken - queueForCallingDelegate.async { - try? delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) + Task.detached { [weak self] in + do { + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: nil, flowId: flowId) + } catch { + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) + assertionFailure() + } } + return case .newTaskToRun(task: let task): os_log("New task to run for the server query %{public}@", log: log, type: .debug, objectId.debugDescription) task.resume() + + case .webSocketQueryHandledByAnotherCoordinator: + os_log("This coordinator received a server query that should be handled by another coordinator", log: log, type: .fault) + return + + case .serverQueryOwnedIdentityCannotBeParsed: + os_log("This coordinator received a server query for which we could not parse the owned identity. This server query should be deleted during next bootstrap", log: log, type: .fault) + assertionFailure() + return + } } } @@ -575,9 +837,65 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { guard error == nil else { os_log("The task failed for server query %{public}@: %@", log: log, type: .error, objectId.debugDescription, error!.localizedDescription) + _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + + // 2023-12-08 + // If the error domain is NSURLErrorDomain and the code is NSURLErrorCannotConnectToHost and the task was a checkKeycloakRevocation, it means that the keycloak is not accessible. + // In that very specific case we can only rely on revocation lists and return + + if let nsError = error as? NSError, nsError.domain == NSURLErrorDomain, let queryType = ServerQuery.QueryType(taskDescription: task.taskDescription), queryType.isCheckKeycloakRevocation { + + contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in + + let serverQuery: PendingServerQuery + do { + let _serverQuery = try PendingServerQuery.get(objectId: objectId, delegateManager: delegateManager, within: obvContext) + guard let _serverQuery else { + os_log("Could not find server query in database", log: log, type: .error) + return + } + serverQuery = _serverQuery + } catch { + os_log("Could not fetch server query from database: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + + guard serverQuery.queryType.isCheckKeycloakRevocation else { + assertionFailure() + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } + + let serverResponseType = ServerResponse.ResponseType.checkKeycloakRevocation(verificationSuccessful: true) + serverQuery.responseType = serverResponseType + + do { + try obvContext.save(logOnFailure: log) + } catch { + os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } + + Task { + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) + } + return + + } + + } else { + + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + } return } @@ -588,12 +906,23 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { let serverQuery: PendingServerQuery do { - serverQuery = try PendingServerQuery.get(objectId: objectId, - delegateManager: delegateManager, - within: obvContext) + let _serverQuery = try PendingServerQuery.get(objectId: objectId, delegateManager: delegateManager, within: obvContext) + guard let _serverQuery else { + os_log("Could not find server query in database", log: log, type: .error) + _ = removeInfoFor(task) + return + } + serverQuery = _serverQuery } catch { - os_log("Could not find server query in database", log: log, type: .fault) + os_log("Could not fetch server query from database: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) + assertionFailure() + return + } + + guard let ownedIdentity = try? serverQuery.ownedIdentity else { + os_log("This coordinator received a server query for which we could not parse the owned identity in urlSession(_:task:didCompleteWithError:). This server query should be deleted during next bootstrap", log: log, type: .fault) + assertionFailure() return } @@ -604,8 +933,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { guard let (status, deviceUids) = ObvServerDeviceDiscoveryMethod.parseObvServerResponse(responseData: responseData, using: log) else { os_log("Could not parse the server response for the ObvServerDeviceDiscoveryMethod task of pending server query %{public}@", log: log, type: .fault, objectId.debugDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -623,14 +952,14 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -638,8 +967,259 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .generalError: os_log("Server reported general error during the ObvServerDeviceDiscoveryMethod task for pending server query %@", log: log, type: .fault, objectId.debugDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } + + case .ownedDeviceDiscovery: + + let result = ObvServerOwnedDeviceDiscoveryMethod.parseObvServerResponse(responseData: responseData, using: log) + + switch result { + case .success(let status): + + os_log("The ObvServerOwnedDeviceDiscoveryMethod returned status is %{public}@", log: log, type: .debug, String(reflecting: status)) + + switch status { + case .ok(encryptedOwnedDeviceDiscoveryResult: let encryptedOwnedDeviceDiscoveryResult): + + let serverResponseType = ServerResponse.ResponseType.ownedDeviceDiscovery(encryptedOwnedDeviceDiscoveryResult: encryptedOwnedDeviceDiscoveryResult) + serverQuery.responseType = serverResponseType + + do { + try obvContext.save(logOnFailure: log) + } catch { + os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } + + _ = removeInfoFor(task) + Task { + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) + } + return + + case .generalError: + + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + + } + + case .failure(let error): + + os_log("The ObvServerOwnedDeviceDiscoveryMethod failed: %{public}@", log: log, type: .fault, error.localizedDescription) + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + + } + + case .setOwnedDeviceName(ownedDeviceUID: _, encryptedOwnedDeviceName: _, isCurrentDevice: let isCurrentDevice): + + let result = OwnedDeviceManagementServerMethod.parseObvServerResponse(responseData: responseData, using: log) + + switch result { + case .success(let status): + + os_log("The OwnedDeviceManagementServerMethod returned status is %{public}@", log: log, type: .debug, String(reflecting: status)) + + switch status { + + case .invalidSession: + processInvalidSessionForTask(task, ownedIdentity: ownedIdentity, flowId: flowId) + return + + case .deviceNotRegistered: + // In case the device for which we are setting a new name is the current device, we try again. + // Otherwise, we fail + if isCurrentDevice { + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } else { + let serverResponseType = ServerResponse.ResponseType.setOwnedDeviceName(success: false) + serverQuery.responseType = serverResponseType + // Continues after the end of the status block + } + + case .ok: + + let serverResponseType = ServerResponse.ResponseType.setOwnedDeviceName(success: true) + serverQuery.responseType = serverResponseType + // Continues after the end of the status block + + case .generalError: + + let serverResponseType = ServerResponse.ResponseType.setOwnedDeviceName(success: false) + serverQuery.responseType = serverResponseType + // Continues after the end of the status block + + } + + // Common to .ok, .generalError, and .deviceNotRegistered (in case we are setting the name of a remote device, not of the current one) + + do { + try obvContext.save(logOnFailure: log) + } catch { + os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } + + _ = removeInfoFor(task) + Task { + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) + } + return + + case .failure(let error): + os_log("Could not parse the server response for the ObvServerCreateGroupBlobServerMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } + + case .deactivateOwnedDevice(ownedDeviceUID: _, isCurrentDevice: _): + + let result = OwnedDeviceManagementServerMethod.parseObvServerResponse(responseData: responseData, using: log) + + switch result { + case .success(let status): + + os_log("The OwnedDeviceManagementServerMethod (deactivateOwnedDevice) returned status is %{public}@", log: log, type: .debug, String(reflecting: status)) + + switch status { + + case .invalidSession: + processInvalidSessionForTask(task, ownedIdentity: ownedIdentity, flowId: flowId) + return + + case .deviceNotRegistered: + // In case the device we are deactivating is not registered, there is nothing left to do for which we are setting a new name is the current device, we try again. + let serverResponseType = ServerResponse.ResponseType.setOwnedDeviceName(success: true) + serverQuery.responseType = serverResponseType + // Continues after the end of the status block + + case .ok: + + let serverResponseType = ServerResponse.ResponseType.setOwnedDeviceName(success: true) + serverQuery.responseType = serverResponseType + // Continues after the end of the status block + + case .generalError: + + let serverResponseType = ServerResponse.ResponseType.setOwnedDeviceName(success: false) + serverQuery.responseType = serverResponseType + // Continues after the end of the status block + + } + + // Common to .ok, .generalError, and .deviceNotRegistered + + do { + try obvContext.save(logOnFailure: log) + } catch { + os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } + + _ = removeInfoFor(task) + Task { + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) + } + return + + case .failure(let error): + os_log("Could not parse the server response for the ObvServerCreateGroupBlobServerMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } + + case .setUnexpiringOwnedDevice(ownedDeviceUID: _): + + let result = OwnedDeviceManagementServerMethod.parseObvServerResponse(responseData: responseData, using: log) + + switch result { + case .success(let status): + + os_log("The OwnedDeviceManagementServerMethod (setUnexpiringOwnedDevice) returned status is %{public}@", log: log, type: .debug, String(reflecting: status)) + + switch status { + + case .invalidSession: + processInvalidSessionForTask(task, ownedIdentity: ownedIdentity, flowId: flowId) + return + + case .deviceNotRegistered: + // In case the device we are deactivating is not registered, there is nothing left to do for which we are setting a new name is the current device, we try again. + let serverResponseType = ServerResponse.ResponseType.setOwnedDeviceName(success: true) + serverQuery.responseType = serverResponseType + // Continues after the end of the status block + + case .ok: + + let serverResponseType = ServerResponse.ResponseType.setOwnedDeviceName(success: true) + serverQuery.responseType = serverResponseType + // Continues after the end of the status block + + case .generalError: + + let serverResponseType = ServerResponse.ResponseType.setOwnedDeviceName(success: false) + serverQuery.responseType = serverResponseType + // Continues after the end of the status block + + } + + // Common to .ok, .generalError, and .deviceNotRegistered + + do { + try obvContext.save(logOnFailure: log) + } catch { + os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + } + return + } + + _ = removeInfoFor(task) + Task { + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) + } + return + + case .failure(let error): + os_log("Could not parse the server response for the ObvServerCreateGroupBlobServerMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) + _ = removeInfoFor(task) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -662,20 +1242,20 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return case .invalidSession: - processInvalidSessionForTask(task, ownedIdentity: serverQuery.ownedIdentity, flowId: flowId) + processInvalidSessionForTask(task, ownedIdentity: ownedIdentity, flowId: flowId) return case .generalError: @@ -686,8 +1266,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .failure(let error): os_log("Could not parse the server response for the ObvServerPutUserDataMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -697,8 +1277,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { guard let (status, userDataPath) = ObvServerGetUserDataMethod.parseObvServerResponse(responseData: responseData, using: log, downloadedUserData: downloadedUserData, serverLabel: label) else { os_log("Could not parse the server response for the ObvServerGetUserDataMethod task of pending server query %{public}@", log: log, type: .fault, objectId.debugDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -735,14 +1315,14 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -752,8 +1332,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { guard let (status, verificationSuccessful) = ObvServerCheckKeycloakRevocationMethod.parseObvServerResponse(responseData: responseData, using: log) else { os_log("Could not parse the server response for the ObvServerCheckKeycloakRevocationMethod task of pending server query %{public}@", log: log, type: .fault, objectId.debugDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -771,14 +1351,14 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -800,7 +1380,7 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { switch status { case .invalidSession, .generalError: - processInvalidSessionForTask(task, ownedIdentity: serverQuery.ownedIdentity, flowId: flowId) + processInvalidSessionForTask(task, ownedIdentity: ownedIdentity, flowId: flowId) return case .ok: @@ -824,14 +1404,14 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -839,8 +1419,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .failure(let error): os_log("Could not parse the server response for the ObvServerCreateGroupBlobServerMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -858,8 +1438,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .groupIsLocked: _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -890,14 +1470,14 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -905,8 +1485,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .failure(let error): os_log("Could not parse the server response for the ObvServerGetGroupBlobServerMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -924,8 +1504,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .groupIsLocked: _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -950,14 +1530,14 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -965,8 +1545,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .failure(let error): os_log("Could not parse the server response for the ObvServerDeleteGroupBlobServerMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -984,8 +1564,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .groupIsLocked, .generalError: _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -999,14 +1579,14 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -1016,8 +1596,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .failure(let error): os_log("Could not parse the server response for the ObvServerPutGroupLogServerMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -1036,8 +1616,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .groupIsLocked, .generalError: _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -1062,14 +1642,14 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -1078,8 +1658,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .failure(let error): os_log("Could not parse the server response for the ObvServerGroupBlobLockServerMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -1099,8 +1679,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .generalError, .groupIsLocked: _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -1131,14 +1711,14 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -1146,8 +1726,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { case .failure(let error): os_log("Could not parse the server response for the ObvServerGroupBlobUpdateServerMethod task of pending server query %{public}@: %{public}@", log: log, type: .fault, objectId.debugDescription, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return @@ -1159,8 +1739,8 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { assertionFailure() os_log("Could not parse the server response for the GetKeycloakDataServerMethod task of pending server query %{public}@", log: log, type: .fault, objectId.debugDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } @@ -1197,17 +1777,22 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - queueForCallingDelegate.async { - delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerQuery(withObjectId: objectId, flowId: flowId) } return } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task { delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: objectId, flowId: flowId) } return + + case .sourceGetSessionNumber, .sourceWaitForTargetConnection, .targetSendEphemeralIdentity, .transferRelay, .transferWait, .closeWebsocketConnection: + + assertionFailure("This case should never happen as this type of server query is handled by the ServerQueryWebSocketCoordinator") + return } @@ -1235,26 +1820,13 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedIdentity) else { - _ = removeInfoFor(task) - queueForCallingDelegate.async { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - } - return - } - - guard let token = serverSession.token else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity), let token = serverSession.token else { _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task.detached { [weak self] in do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: nil, flowId: flowId) } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } } @@ -1262,11 +1834,11 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } _ = removeInfoFor(task) - queueForCallingDelegate.async { + Task.detached { [weak self] in do { - try delegateManager.networkFetchFlowDelegate.serverSession(of: ownedIdentity, hasInvalidToken: token, flowId: flowId) + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: token, flowId: flowId) } catch { - os_log("Call to serverSession(of: ObvCryptoIdentity, hasInvalidToken: Data, flowId: FlowIdentifier) did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } } @@ -1276,3 +1848,27 @@ extension ServerQueryCoordinator: URLSessionDataDelegate { } } + + + +// MARK: - Storing the ServerQuery.QueryType into the task description + +fileprivate extension ServerQuery.QueryType { + + var taskDescription: String { + self.obvEncode().rawData.base64EncodedString() + } + + init?(taskDescription: String?) { + guard let taskDescription else { assertionFailure(); return nil } + guard let rawData = Data(base64Encoded: taskDescription), + let obvEncoded = ObvEncoded(withRawData: rawData) else { + assertionFailure() + return nil + } + self.init(obvEncoded) + } + +} + + diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerQueryWebSocketCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerQueryWebSocketCoordinator.swift new file mode 100644 index 00000000..dc15103f --- /dev/null +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerQueryWebSocketCoordinator.swift @@ -0,0 +1,854 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import OlvidUtils +import ObvCrypto +import ObvMetaManager +import ObvTypes + + +/// This coordinator is, for now, only used to perform the message exchanges between two devices performing an owned device transfer protocol. +/// The device with the identity to transfer is called the *source device*, while the other is called the *target device*. +/// +/// ┌──────┐ ┌──────┐ ┌──────┐ +/// │Source│ │Server│ │Target│ +/// └──┬───┘ └──┬───┘ └──┬───┘ +/// │ Get SN │ │ +/// │ ─────────────────────────────────> │ +/// │ │ │ +/// │ SN | CIDs │ │ +/// │ <───────────────────────────────── │ +/// │ │ │ +/// │ SN │ +/// │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─> +/// │ │ │ +/// │ │ SN | payload_1 │ +/// │ │ <───────────────────────────────── +/// │ │ │ +/// │ CIDt | payload1 │ │ +/// │ <───────────────────────────────── │ +/// │ │ │ +/// │ CIDt | payload2 (containing CIDs)│ │ +/// │ ─────────────────────────────────> │ +/// │ │ │ +/// │ │ CIDs | payload2 (containing CIDs)│ +/// │ │ ─────────────────────────────────> +/// │ │ │ +/// │ │ │────┐ +/// │ │ │ │ Checks equality between CIDs received from server and in the payload +/// │ │ │<───┘ +/// ┌──┴───┐ ┌──┴───┐ ┌──┴───┐ +/// │Source│ │Server│ │Target│ +/// └──────┘ └──────┘ └──────┘ +/// +/// +actor ServerQueryWebSocketCoordinator: ServerQueryWebSocketDelegate { + + private static let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem + private static let logCategory = "ServerPushNotificationsCoordinator" + private static var log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) + + weak var delegateManager: ObvNetworkFetchDelegateManager? + + private var webSocketTaskForProtocolInstanceUID = [UID: URLSessionWebSocketTask]() + + init(logPrefix: String) { + let logSubsystem = "\(logPrefix).\(Self.defaultLogSubsystem)" + Self.log = OSLog(subsystem: logSubsystem, category: Self.logCategory) + } + + func setDelegateManager(_ delegateManager: ObvNetworkFetchDelegateManager) { + self.delegateManager = delegateManager + } + + + func handleServerQuery(pendingServerQueryObjectId: NSManagedObjectID, flowId: FlowIdentifier) throws { + + guard let delegateManager else { assertionFailure(); throw ObvError.theDelegateManagerIsNil } + guard let contextCreator = delegateManager.contextCreator else { assertionFailure(); throw ObvError.theContextCreatorIsNil } + + contextCreator.performBackgroundTask(flowId: flowId) { [weak self] obvContext in + do { + + guard let pendingServerQuery = try PendingServerQuery.get(objectId: pendingServerQueryObjectId, delegateManager: delegateManager, within: obvContext) else { + assertionFailure() + return + } + + guard pendingServerQuery.isWebSocket else { + assertionFailure() + return + } + + switch pendingServerQuery.queryType { + + case .deviceDiscovery, + .putUserData, + .getUserData, + .checkKeycloakRevocation, + .createGroupBlob, + .getGroupBlob, + .deleteGroupBlob, + .putGroupLog, + .requestGroupBlobLock, + .updateGroupBlob, + .getKeycloakData, + .ownedDeviceDiscovery, + .setOwnedDeviceName, + .deactivateOwnedDevice, + .setUnexpiringOwnedDevice: + assertionFailure("This serverquery is handled by another coordinator. This one should not have been called.") + return + + case .sourceGetSessionNumber(protocolInstanceUID: let protocolInstanceUID): + Task { [weak self] in + guard let self else { return } + do { + + let response = try await handleSourceGetSessionNumberMessage(pendingServerQueryObjectId: pendingServerQueryObjectId, protocolInstanceUID: protocolInstanceUID) + + let sourceConnectionId = response.sourceConnectionId + let sessionNumber = try ObvOwnedIdentityTransferSessionNumber(sessionNumber: response.sessionNumber) + + try obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.sourceGetSessionNumberMessage(result: + .requestSucceeded(sourceConnectionId: sourceConnectionId, sessionNumber: sessionNumber)) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + } catch { + + await closeCachedWebSocket(protocolInstanceUID: protocolInstanceUID) + + try? obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.sourceGetSessionNumberMessage(result: .requestFailed) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + } + } + + case .sourceWaitForTargetConnection(protocolInstanceUID: let protocolInstanceUID): + + Task { [weak self] in + guard let self else { return } + do { + + let response = try await handleSourceWaitForTargetConnectionMessage(protocolInstanceUID: protocolInstanceUID) + let targetConnectionId = response.otherConnectionId + let payload = response.payload + + try obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.sourceWaitForTargetConnection(result: .requestSucceeded(targetConnectionId: targetConnectionId, payload: payload)) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + } catch { + + await closeCachedWebSocket(protocolInstanceUID: protocolInstanceUID) + + try? obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.sourceWaitForTargetConnection(result: .requestFailed) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + } + } + + case .targetSendEphemeralIdentity(protocolInstanceUID: let protocolInstanceUID, transferSessionNumber: let transferSessionNumber, payload: let payload): + + Task { [weak self] in + guard let self else { return } + do { + + let response = try await handleTargetSendEphemeralIdentity( + pendingServerQueryObjectId: pendingServerQueryObjectId, + protocolInstanceUID: protocolInstanceUID, + transferSessionNumber: transferSessionNumber, + payload: payload) + + switch response { + + case .success((let otherConnectionId, let payload)): + + try obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.targetSendEphemeralIdentity(result: .requestSucceeded(otherConnectionId: otherConnectionId, payload: payload)) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + case .failure: + + // This happens when the transfer session number is incorrect + + try obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.targetSendEphemeralIdentity(result: .incorrectTransferSessionNumber) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + } + + } catch { + + await closeCachedWebSocket(protocolInstanceUID: protocolInstanceUID) + + try obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.targetSendEphemeralIdentity(result: .requestDidFail) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + } + } + + case .transferRelay(protocolInstanceUID: let protocolInstanceUID, connectionIdentifier: let connectionIdentifier, payload: let payload, thenCloseWebSocket: let thenCloseWebSocket): + + Task { [weak self] in + guard let self else { return } + do { + + let responsePayload = try await handleTransferRelay( + protocolInstanceUID: protocolInstanceUID, + connectionIdentifier: connectionIdentifier, + payload: payload) + + try obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.transferRelay(result: .requestSucceeded(payload: responsePayload)) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + if thenCloseWebSocket { + await closeCachedWebSocket(protocolInstanceUID: protocolInstanceUID) + } + + } catch { + + await closeCachedWebSocket(protocolInstanceUID: protocolInstanceUID) + + try? obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.transferRelay(result: .requestFailed) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + } + } + + case .transferWait(protocolInstanceUID: let protocolInstanceUID, connectionIdentifier: let connectionIdentifier): + + Task { [weak self] in + guard let self else { return } + do { + + let responsePayload = try await handleTransferWait(protocolInstanceUID: protocolInstanceUID, connectionIdentifier: connectionIdentifier) + + try obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.transferWait(result: .requestSucceeded(payload: responsePayload)) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + } catch { + + await closeCachedWebSocket(protocolInstanceUID: protocolInstanceUID) + + try? obvContext.performAndWaitOrThrow { + pendingServerQuery.responseType = ServerResponse.ResponseType.transferWait(result: .requestFailed) + try obvContext.save(logOnFailure: Self.log) + delegateManager.networkFetchFlowDelegate.successfullProcessOfServerQuery(withObjectId: pendingServerQueryObjectId, flowId: flowId) + } + + } + } + + case .closeWebsocketConnection(protocolInstanceUID: let protocolInstanceUID): + + Task { [weak self] in + do { + + guard let self else { return } + + await closeCachedWebSocket(protocolInstanceUID: protocolInstanceUID) + + try obvContext.performAndWaitOrThrow { + pendingServerQuery.deletePendingServerQuery(within: obvContext) + try obvContext.save(logOnFailure: Self.log) + } + + } catch { + assertionFailure(error.localizedDescription) + } + } + + } + + } catch { + assertionFailure(error.localizedDescription) + } + } + + } + + + /// The source device sends the first message to the server, and receives a response back, containing the session number SN. + private func handleSourceGetSessionNumberMessage(pendingServerQueryObjectId: NSManagedObjectID, protocolInstanceUID: UID) async throws -> JsonRequestSourceResponse { + + // We do not expect the WebSocket to exist at this point, this is the first possible query made by the source device + + guard webSocketTaskForProtocolInstanceUID[protocolInstanceUID] == nil else { + assertionFailure() + throw ObvError.unexpectedNonNilWebSocketTask + } + + // Create, cache, and connect the WebScoket + + let webSocketTask = getOrCreateAndCacheWebSocket(protocolInstanceUID: protocolInstanceUID) + + // Send the JsonRequestSource message + + assert(webSocketTask.state == .running) + let message = try JsonRequestSource().getURLSessionWebSocketTaskMessage() + try await webSocketTask.send(message) + + // Wait for the response + + while true { + + let serverMessage = try await webSocketTask.receive() + + guard try !serverMessage.isEmptyMessage else { + // The message is empty (e.g., has an empty string), we wait for the next one + continue + } + + guard let requestSourceResponse = try? JsonRequestSourceResponse(serverMessage) else { + assertionFailure() + throw ObvError.responseParsingFailed + } + + return requestSourceResponse + + } + + } + + + private func handleSourceWaitForTargetConnectionMessage(protocolInstanceUID: UID) async throws -> JsonRequestTargetResponse { + + // At this point, we expect the WebSocket to exist already + + guard let webSocketTask = webSocketTaskForProtocolInstanceUID[protocolInstanceUID] else { + assertionFailure() + throw ObvError.unexpectedNilWebSocketTask + } + + // No message to send, we only wait for a message sent by the target device + + while true { + + let serverMessage = try await webSocketTask.receive() + + guard try !serverMessage.isEmptyMessage else { + // The message is empty (e.g., has an empty string), we wait for the next one + continue + } + + if let requestTargetResponse = try? JsonRequestTargetResponse(serverMessage) { + + // The message is an appropriate response structure + // At this point, we have no connection identifier to check against, since it is the first time we receive the target connection identifier + // We can safely return the response + + return requestTargetResponse + + } + + } + + } + + + /// The handled server query is sent by the owned identity transfer protocol on the target device + /// The transfer session number we got as a parameter was read by the user on the source device and entered by the user on this target device. + /// We send it to the server in the JsonRequestTarget message. We then receive a response. If the session number was incorrect, we return this information to the protocol. + /// If it is correct, we wait until we receive a JsonRequestTargetResponse from the source device. + private func handleTargetSendEphemeralIdentity(pendingServerQueryObjectId: NSManagedObjectID, protocolInstanceUID: UID, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, payload: Data) async throws -> Result<(otherConnectionId: String, payload: Data), ObvError> { + + // We do not expect the WebSocket to exist at this point, this is the first possible query made by the target device + + guard webSocketTaskForProtocolInstanceUID[protocolInstanceUID] == nil else { + assertionFailure() + throw ObvError.unexpectedNonNilWebSocketTask + } + + // Create, cache, and connect the WebScoket + + let webSocketTask = getOrCreateAndCacheWebSocket(protocolInstanceUID: protocolInstanceUID) + + // Send the JsonRequestTarget message + + assert(webSocketTask.state == .running) + + if payload.count > ObvConstants.transferMaxPayloadSize { + let (fragments, totalFragments) = try Self.createPayloadFragmentsFromLargePayload(payload: payload, transferMaxPayloadSize: ObvConstants.transferMaxPayloadSize) + for (fragmentNumber, payloadFragment) in fragments { + let message = try JsonRequestTarget(sessionNumber: transferSessionNumber.sessionNumber, payload: payloadFragment, fragmentNumber: fragmentNumber, totalFragments: totalFragments).getURLSessionWebSocketTaskMessage() + try await webSocketTask.send(message) + } + } else { + let message = try JsonRequestTarget(sessionNumber: transferSessionNumber.sessionNumber, payload: payload, fragmentNumber: nil, totalFragments: nil).getURLSessionWebSocketTaskMessage() + try await webSocketTask.send(message) + } + + // Wait for an appropriate response + + var fragments = [Int: JsonRequestTargetResponse]() // Just in case the response appends to be fragmented + var otherConnectionId: String? + + while true { + + let serverMessage = try await webSocketTask.receive() + + guard try !serverMessage.isEmptyMessage else { + // The message is empty (e.g., has an empty string), we wait for the next one + continue + } + + if (try? JsonError(serverMessage)) != nil { + return .failure(ObvError.wrongSessionNumberIdentifier) + } + + if let requestTargetResponse = try? JsonRequestTargetResponse(serverMessage) { + + if otherConnectionId == nil { + otherConnectionId = requestTargetResponse.otherConnectionId + } else { + guard otherConnectionId == requestTargetResponse.otherConnectionId else { + assertionFailure() + throw ObvError.errorReceivedFromServer + } + } + + // If the response is fragmented, accumulate the fragments until they are all available. + // Otherwise, return the payload + + if let fragmentNumber = requestTargetResponse.fragmentNumber, let totalFragments = requestTargetResponse.totalFragments { + fragments[fragmentNumber] = requestTargetResponse + if fragments.count == totalFragments { + // We have all the fragments. We concatenate the payloads and return the resulting payload + let payload = fragments.concatenatePayloads() + let otherConnectionId = otherConnectionId ?? requestTargetResponse.otherConnectionId + return .success((otherConnectionId: otherConnectionId, payload: payload)) + } else { + // Wait for more fragments + continue + } + } else { + let payload = requestTargetResponse.payload + let otherConnectionId = otherConnectionId ?? requestTargetResponse.otherConnectionId + return .success((otherConnectionId: otherConnectionId, payload: payload)) + } + + } + + } + + } + + + /// Returns the payload of the JsonRequestTargetResponse + private func handleTransferRelay(protocolInstanceUID: UID, connectionIdentifier: String, payload: Data) async throws -> Data { + + // At this point, we expect the WebSocket to exist already + + guard let webSocketTask = webSocketTaskForProtocolInstanceUID[protocolInstanceUID] else { + assertionFailure() + throw ObvError.unexpectedNilWebSocketTask + } + + // Send the message to transfer to the other device + + assert(webSocketTask.state == .running) + + if payload.count > ObvConstants.transferMaxPayloadSize { + let (fragments, totalFragments) = try Self.createPayloadFragmentsFromLargePayload(payload: payload, transferMaxPayloadSize: ObvConstants.transferMaxPayloadSize) + for (fragmentNumber, payloadFragment) in fragments { + let message = try JsonRequestRelay(relayConnectionId: connectionIdentifier, payload: payloadFragment, fragmentNumber: fragmentNumber, totalFragments: totalFragments).getURLSessionWebSocketTaskMessage() + try await webSocketTask.send(message) + } + } else { + let message = try JsonRequestRelay(relayConnectionId: connectionIdentifier, payload: payload, fragmentNumber: nil, totalFragments: nil).getURLSessionWebSocketTaskMessage() + try await webSocketTask.send(message) + } + + // Wait for the response + + var fragments = [Int: JsonRequestTargetResponse]() // Just in case the response appends to be fragmented + + while true { + + let serverMessage = try await webSocketTask.receive() + + guard try !serverMessage.isEmptyMessage else { + // The message is empty (e.g., has an empty string), we wait for the next one + continue + } + + if (try? JsonError(serverMessage)) != nil { + throw ObvError.errorReceivedFromServer + } + + if let requestTargetResponse = try? JsonRequestTargetResponse(serverMessage) { + + // The message is an appropriate response structure + + // We check that the connection identifier is the one we expect + guard requestTargetResponse.otherConnectionId == connectionIdentifier else { + assertionFailure() + continue + } + + // If the response is fragmented, accumulate the fragments until they are all available. + // Otherwise, return the payload + + if let fragmentNumber = requestTargetResponse.fragmentNumber, let totalFragments = requestTargetResponse.totalFragments { + fragments[fragmentNumber] = requestTargetResponse + if fragments.count == totalFragments { + // We have all the fragments. We concatenate the payloads and return the resulting payload + let payload = fragments.concatenatePayloads() + return payload + } else { + // Wait for more fragments + continue + } + } else { + return requestTargetResponse.payload + } + + } + + } + + } + + + /// Returns the payload of the JsonRequestTargetResponse + private func handleTransferWait(protocolInstanceUID: UID, connectionIdentifier: String) async throws -> Data { + + // At this point, we expect the WebSocket to exist already + + guard let webSocketTask = webSocketTaskForProtocolInstanceUID[protocolInstanceUID] else { + assertionFailure() + throw ObvError.unexpectedNilWebSocketTask + } + + // Wait for the response + + var fragments = [Int: JsonRequestTargetResponse]() // Just in case the response appends to be fragmented + + while true { + + let serverMessage = try await webSocketTask.receive() + + guard try !serverMessage.isEmptyMessage else { + // The message is empty (e.g., has an empty string), we wait for the next one + continue + } + + if (try? JsonError(serverMessage)) != nil { + throw ObvError.errorReceivedFromServer + } + + if let requestTargetResponse = try? JsonRequestTargetResponse(serverMessage) { + + // The message is an appropriate response structure + + // We check that the connection identifier is the one we expect + guard requestTargetResponse.otherConnectionId == connectionIdentifier else { + assertionFailure() + continue + } + + // If the response is fragmented, accumulate the fragments until they are all available. + // Otherwise, return the payload + + if let fragmentNumber = requestTargetResponse.fragmentNumber, let totalFragments = requestTargetResponse.totalFragments { + fragments[fragmentNumber] = requestTargetResponse + if fragments.count == totalFragments { + // We have all the fragments. We concatenate the payloads and return the resulting payload + let payload = fragments.concatenatePayloads() + return payload + } else { + // Wait for more fragments + continue + } + } else { + return requestTargetResponse.payload + } + + } + + } + + } + + + private func getOrCreateAndCacheWebSocket(protocolInstanceUID: UID) -> URLSessionWebSocketTask { + if let webSocketTask = webSocketTaskForProtocolInstanceUID[protocolInstanceUID] { + return webSocketTask + } else { + let webSocketTask = URLSession.shared.webSocketTask(with: ObvConstants.transferWSServerURL) + webSocketTask.resume() + webSocketTaskForProtocolInstanceUID[protocolInstanceUID] = webSocketTask + return webSocketTask + } + } + + + private func closeCachedWebSocket(protocolInstanceUID: UID) { + guard let webSocketTask = webSocketTaskForProtocolInstanceUID.removeValue(forKey: protocolInstanceUID) else { return } + webSocketTask.cancel(with: .normalClosure, reason: nil) + } + + + + // Errors + + enum ObvError: Error { + case theDelegateManagerIsNil + case theContextCreatorIsNil + case unexpectedNonNilWebSocketTask + case unexpectedNilWebSocketTask + case responseParsingFailed + case wrongSessionNumberIdentifier + case errorReceivedFromServer + case overflow + } + +} + + + +// MARK: - Messages to send and receive on the WebSocket handling "WebSocket" server queries + +private struct JsonRequestSource: Encodable { + private let action = "source" + func getURLSessionWebSocketTaskMessage() throws -> URLSessionWebSocketTask.Message { + let encoder = JSONEncoder() + let data = try encoder.encode(self) + let string = String(data: data, encoding: .utf8)! + return URLSessionWebSocketTask.Message.string(string) + } +} + + +private struct JsonRequestSourceResponse: Decodable { + let sessionNumber: Int + let sourceConnectionId: String + enum CodingKeys: String, CodingKey { + case sessionNumber = "sessionNumber" + case sourceConnectionId = "awsConnectionId" + } + init(_ message: URLSessionWebSocketTask.Message) throws { + let decoder = JSONDecoder() + let receivedData: Data + switch message { + case .data(let data): + receivedData = data + case .string(let string): + guard let _receivedData = string.data(using: .utf8) else { + throw ObvError.couldNotParseString + } + receivedData = _receivedData + @unknown default: + assertionFailure() + throw ObvError.unexpectedType + } + self = try decoder.decode(Self.self, from: receivedData) + } + enum ObvError: Error { + case couldNotParseString + case unexpectedType + } +} + + +private struct JsonRequestTarget: Encodable { + private let action = "target" + let sessionNumber: Int + let payload: Data + let fragmentNumber: Int? + let totalFragments: Int? + + func getURLSessionWebSocketTaskMessage() throws -> URLSessionWebSocketTask.Message { + let encoder = JSONEncoder() + let data = try encoder.encode(self) + let string = String(data: data, encoding: .utf8)! + return URLSessionWebSocketTask.Message.string(string) + } +} + + +private struct JsonRequestTargetResponse: Decodable { + let otherConnectionId: String + let payload: Data + let fragmentNumber: Int? + let totalFragments: Int? + init(_ message: URLSessionWebSocketTask.Message) throws { + let decoder = JSONDecoder() + let receivedData: Data + switch message { + case .data(let data): + receivedData = data + case .string(let string): + guard let _receivedData = string.data(using: .utf8) else { + throw ObvError.couldNotParseString + } + receivedData = _receivedData + @unknown default: + assertionFailure() + throw ObvError.unexpectedType + } + self = try decoder.decode(Self.self, from: receivedData) + } + enum ObvError: Error { + case couldNotParseString + case unexpectedType + } +} + + +private struct JsonRequestRelay: Encodable { + private let action = "relay" + let relayConnectionId: String + let payload: Data + let fragmentNumber: Int? + let totalFragments: Int? + func getURLSessionWebSocketTaskMessage() throws -> URLSessionWebSocketTask.Message { + let encoder = JSONEncoder() + let data = try encoder.encode(self) + let string = String(data: data, encoding: .utf8)! + return URLSessionWebSocketTask.Message.string(string) + } +} + + +private struct JsonError: Decodable { + let errorCode: Int + init(_ message: URLSessionWebSocketTask.Message) throws { + let decoder = JSONDecoder() + let receivedData: Data + switch message { + case .data(let data): + receivedData = data + case .string(let string): + guard let _receivedData = string.data(using: .utf8) else { + throw ObvError.couldNotParseString + } + receivedData = _receivedData + @unknown default: + assertionFailure() + throw ObvError.unexpectedType + } + do { + self = try decoder.decode(Self.self, from: receivedData) + } catch { + throw error + } + } + enum ObvError: Error { + case couldNotParseString + case unexpectedType + } +} + + +// MARK: - Private Helpers + +fileprivate extension URLSessionWebSocketTask.Message { + + var isEmptyMessage: Bool { + get throws { + switch self { + case .data(let data): + return data.isEmpty + case .string(let string): + return string.isEmpty + @unknown default: + assertionFailure() + throw ObvError.unknownMessageKind + } + } + } + + enum ObvError: Error { + case unknownMessageKind + } + +} + + +fileprivate extension [Int : JsonRequestTargetResponse] { + + func concatenatePayloads() -> Data { + let payload = self + .sorted(by: { $0.key < $1.key }) + .map(\.value) + .map(\.payload) + .reduce(Data(), { $0 + $1 }) + return payload + } + +} + + +fileprivate extension ServerQueryWebSocketCoordinator { + + static func createPayloadFragmentsFromLargePayload(payload: Data, transferMaxPayloadSize: Int) throws -> (fragments: [Int : Data], totalFragments: Int) { + var fragments = [Int : Data]() + let totalFragments = 1 + (payload.count - 1) / ObvConstants.transferMaxPayloadSize + for fragmentNumber in 0..= payload.startIndex, upperIndex <= payload.endIndex, startIndex <= upperIndex else { + assertionFailure() + throw ObvError.overflow + } + let payloadFragment = payload[startIndex... + */ + +import Foundation +import OlvidUtils +import ObvCrypto +import CoreData +import os.log + + +final class DeleteServerSessionOperation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoIdentity: ObvCryptoIdentity + + init(ownedCryptoIdentity: ObvCryptoIdentity) { + self.ownedCryptoIdentity = ownedCryptoIdentity + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + try ServerSession.deleteAllSessionsOfIdentity(ownedCryptoIdentity, within: obvContext.context) + + } catch { + + return cancel(withReason: .coreDataError(error: error)) + + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + + public var logType: OSLogType { + switch self { + case .coreDataError: + return .fault + } + } + + public var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + } + } + + } + +} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/Operations/GetLocalServerSessionTokenAndAPIKeyElementsOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/Operations/GetLocalServerSessionTokenAndAPIKeyElementsOperation.swift new file mode 100644 index 00000000..5a12186c --- /dev/null +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/Operations/GetLocalServerSessionTokenAndAPIKeyElementsOperation.swift @@ -0,0 +1,78 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvCrypto +import CoreData +import os.log +import ObvTypes + + +final class GetLocalServerSessionTokenAndAPIKeyElementsOperation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoIdentity: ObvCryptoIdentity + + init(ownedCryptoIdentity: ObvCryptoIdentity) { + self.ownedCryptoIdentity = ownedCryptoIdentity + super.init() + } + + private(set) var serverSessionTokenAndAPIKeyElements: (serverSessionToken: Data, apiKeyElements: APIKeyElements)? + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + let serverSession = try ServerSession.getOrCreate(within: obvContext.context, withIdentity: ownedCryptoIdentity) + + if let serverSessionToken = serverSession.token, let apiKeyElements = serverSession.apiKeyElements { + self.serverSessionTokenAndAPIKeyElements = (serverSessionToken, apiKeyElements) + } + + } catch { + + return cancel(withReason: .coreDataError(error: error)) + + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + + public var logType: OSLogType { + switch self { + case .coreDataError: + return .fault + } + } + + public var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + } + } + + } + +} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/Operations/ResetServerSessionCorrespondingToInvalidTokenOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/Operations/ResetServerSessionCorrespondingToInvalidTokenOperation.swift new file mode 100644 index 00000000..c535ad46 --- /dev/null +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/Operations/ResetServerSessionCorrespondingToInvalidTokenOperation.swift @@ -0,0 +1,81 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvCrypto +import CoreData +import os.log + + +final class ResetServerSessionCorrespondingToInvalidTokenOperation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoIdentity: ObvCryptoIdentity + private let invalidToken: Data + + init(ownedCryptoIdentity: ObvCryptoIdentity, invalidToken: Data) { + self.ownedCryptoIdentity = ownedCryptoIdentity + self.invalidToken = invalidToken + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + let serverSession = try ServerSession.getOrCreate(within: obvContext.context, withIdentity: ownedCryptoIdentity) + + guard serverSession.token == invalidToken else { + // The token of the current session is not the one that is invalid. + // There is nothing left to do + return + } + + serverSession.resetSession() + + } catch { + + return cancel(withReason: .coreDataError(error: error)) + + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + + public var logType: OSLogType { + switch self { + case .coreDataError: + return .fault + } + } + + public var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + } + } + + } + +} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/Operations/SaveServerSessionTokenAndAPIKeyElementsOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/Operations/SaveServerSessionTokenAndAPIKeyElementsOperation.swift new file mode 100644 index 00000000..5631a4e8 --- /dev/null +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/Operations/SaveServerSessionTokenAndAPIKeyElementsOperation.swift @@ -0,0 +1,79 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvCrypto +import CoreData +import os.log +import ObvTypes + + +final class SaveServerSessionTokenAndAPIKeyElementsOperation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoIdentity: ObvCryptoIdentity + private let serverSessionTokenAndAPIKeyElements: (serverSessionToken: Data, apiKeyElements: APIKeyElements) + + init(ownedCryptoIdentity: ObvCryptoIdentity, serverSessionTokenAndAPIKeyElements: (serverSessionToken: Data, apiKeyElements: APIKeyElements)) { + self.ownedCryptoIdentity = ownedCryptoIdentity + self.serverSessionTokenAndAPIKeyElements = serverSessionTokenAndAPIKeyElements + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + let serverSession = try ServerSession.getOrCreate(within: obvContext.context, withIdentity: ownedCryptoIdentity) + + serverSession.save( + serverSessionToken: serverSessionTokenAndAPIKeyElements.serverSessionToken, + apiKeyElements: serverSessionTokenAndAPIKeyElements.apiKeyElements) + + } catch { + + return cancel(withReason: .coreDataError(error: error)) + + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + + public var logType: OSLogType { + switch self { + case .coreDataError: + return .fault + } + } + + public var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + } + } + + } + +} + diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/ServerSessionCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/ServerSessionCoordinator.swift new file mode 100644 index 00000000..a86568b0 --- /dev/null +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerSessionCoordinator/ServerSessionCoordinator.swift @@ -0,0 +1,625 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import ObvServerInterface +import ObvCrypto +import ObvTypes +import OlvidUtils +import ObvMetaManager + + +actor ServerSessionCoordinator: ServerSessionDelegate { + + private static let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem + private static let logCategory = "ServerSessionCreator" + private static var log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) + + private let prng: PRNGService + + weak var delegateManager: ObvNetworkFetchDelegateManager? + + /// Keys are nonces, values are server session tokens + private var cache = [ObvCryptoIdentity: ServerSessionCreationTask]() + + private enum ServerSessionCreationTask { + case inProgress(Task<(serverSessionToken: Data, apiKeyElements: APIKeyElements), Error>) + case ready((serverSessionToken: Data, apiKeyElements: APIKeyElements)) + } + + + init(prng: PRNGService, logPrefix: String) { + self.prng = prng + let logSubsystem = "\(logPrefix).\(Self.defaultLogSubsystem)" + Self.log = OSLog(subsystem: logSubsystem, category: Self.logCategory) + } + + + func setDelegateManager(_ delegateManager: ObvNetworkFetchDelegateManager) { + self.delegateManager = delegateManager + } + + + func deleteServerSession(of ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws { + + let requestUUID = UUID() + + os_log("䷍[%{public}@] Deleting server session", log: Self.log, type: .info, requestUUID.debugDescription) + + if let cached = cache[ownedCryptoIdentity] { + switch cached { + case .inProgress: + break + case .ready: + cache.removeValue(forKey: ownedCryptoIdentity) + } + } + + try await executeDeleteServerSessionOperation(of: ownedCryptoIdentity, flowId: flowId) + + os_log("䷍[%{public}@] Server session deleted", log: Self.log, type: .info, requestUUID.debugDescription) + + } + + + /// Returns a valid server session token: either the one that is cached (if still valid), or a new one, provided by the server after performing a valid challenge/response. + func getValidServerSessionToken(for ownedCryptoIdentity: ObvCryptoIdentity, currentInvalidToken: Data?, flowId: FlowIdentifier) async throws -> (serverSessionToken: Data, apiKeyElements: APIKeyElements) { + + let requestUUID = UUID() + + os_log("䷍[%{public}@] getValidServerSessionToken called (currentInvalidToken: %{public}@)", log: Self.log, type: .info, requestUUID.debugDescription, currentInvalidToken?.hexString() ?? "nil") + + let result = try await getValidServerSessionToken(for: ownedCryptoIdentity, currentInvalidToken: currentInvalidToken, flowId: flowId, requestUUID: requestUUID) + + os_log("䷍[%{public}@] getValidServerSessionToken returns (token: %{public}@)", log: Self.log, type: .info, requestUUID.debugDescription, result.serverSessionToken.hexString()) + + return result + + } + + + + + // MARK: - Helper methods + + private func getValidServerSessionToken(for ownedCryptoIdentity: ObvCryptoIdentity, currentInvalidToken: Data?, flowId: FlowIdentifier, requestUUID: UUID) async throws -> (serverSessionToken: Data, apiKeyElements: APIKeyElements) { + + if let currentInvalidToken { + + // Clean the cache in case a .ready value contains the invalid token + if let cached = cache[ownedCryptoIdentity] { + switch cached { + case .inProgress: + break + case .ready(let (cachedToken, _)): + if cachedToken == currentInvalidToken { + os_log("䷍[%{public}@] Cached (ready) value found but the token is invalid. Removing the value from cache", log: Self.log, type: .info, requestUUID.debugDescription, cachedToken.hexString()) + cache.removeValue(forKey: ownedCryptoIdentity) + } + } + } + // Reset the ServerSession stode in Core Data in case is stores the invalid token + os_log("䷍[%{public}@] Calling resetServerSessionCorrespondingToInvalidToken", log: Self.log, type: .info, requestUUID.debugDescription) + try await resetServerSessionCorrespondingToInvalidToken( + for: ownedCryptoIdentity, + currentInvalidToken: currentInvalidToken, + flowId: flowId) + + } + + if let cached = cache[ownedCryptoIdentity] { + switch cached { + case .ready(let (cachedToken, cachedAPIKeyElements)): + if cachedToken != currentInvalidToken { + os_log("䷍[%{public}@] Cached (ready) value found (token: %{public}@)", log: Self.log, type: .info, requestUUID.debugDescription, cachedToken.hexString()) + return (cachedToken, cachedAPIKeyElements) + } else { + os_log("䷍[%{public}@] Cached (ready) value found but the token is invalid", log: Self.log, type: .info, requestUUID.debugDescription, cachedToken.hexString()) + cache.removeValue(forKey: ownedCryptoIdentity) + } + case .inProgress(let task): + os_log("䷍[%{public}@] Cached (inProgress) value found. Waiting for value...", log: Self.log, type: .info, requestUUID.debugDescription) + return try await task.value + } + } + + os_log("䷍[%{public}@] No cached value found", log: Self.log, type: .info, requestUUID.debugDescription) + + // If we reach this point, no valid token was found in cache. + + let task: Task<(serverSessionToken: Data, apiKeyElements: APIKeyElements), Error> = createTaskForGettingServerSession(for: ownedCryptoIdentity, requestUUID: requestUUID, flowId: flowId) + + cache[ownedCryptoIdentity] = .inProgress(task) + + os_log("䷍[%{public}@] Added an inProgress task in cache", log: Self.log, type: .info, requestUUID.debugDescription) + + do { + os_log("䷍[%{public}@] Waiting for value...", log: Self.log, type: .info, requestUUID.debugDescription) + let (serverSessionToken, apiKeyElements) = try await task.value + cache[ownedCryptoIdentity] = .ready((serverSessionToken, apiKeyElements)) + os_log("䷍[%{public}@] Returning value", log: Self.log, type: .info, requestUUID.debugDescription) + return (serverSessionToken, apiKeyElements) + } catch { + cache.removeValue(forKey: ownedCryptoIdentity) + throw error + } + + } + + + private func createTaskForGettingServerSession(for ownedCryptoIdentity: ObvCryptoIdentity, requestUUID: UUID, flowId: FlowIdentifier) -> Task<(serverSessionToken: Data, apiKeyElements: APIKeyElements), Error> { + + return Task { + + let localServerSessionTokenAndAPIKeyElements = try await getLocalServerSessionTokenAndAPIKeyElements(for: ownedCryptoIdentity, flowId: flowId) + + if let localServerSessionTokenAndAPIKeyElements { + // A cached session token exist, we return it + os_log("䷍[%{public}@] Found local value in database. Returning it now", log: Self.log, type: .info, requestUUID.debugDescription) + return localServerSessionTokenAndAPIKeyElements + } + + os_log("䷍[%{public}@] No local value found. Requesting a challenge to the server...", log: Self.log, type: .info, requestUUID.debugDescription) + + let nonce = prng.genBytes(count: ObvConstants.serverSessionNonceLength) + + let challenge = try await requestChallengeFromServer(for: ownedCryptoIdentity, nonce: nonce, flowId: flowId) + + os_log("䷍[%{public}@] Challenge received. Computing response", log: Self.log, type: .info, requestUUID.debugDescription) + + let response = try await solveChallenge(challenge: challenge, for: ownedCryptoIdentity, flowId: flowId) + + os_log("䷍[%{public}@] Using response to get server session token", log: Self.log, type: .info, requestUUID.debugDescription) + + let serverSessionTokenAndAPIKeyElements = try await requestSessionFromServer(for: ownedCryptoIdentity, response: response, nonce: nonce, flowId: flowId) + + os_log("䷍[%{public}@] Saving received server session token for next time", log: Self.log, type: .info, requestUUID.debugDescription) + + try await saveServerSessionTokenAndAPIKeyElements(for: ownedCryptoIdentity, serverSessionTokenAndAPIKeyElements: serverSessionTokenAndAPIKeyElements, flowId: flowId) + + os_log("䷍[%{public}@] Returning server session token and api key elements", log: Self.log, type: .info, requestUUID.debugDescription) + + return serverSessionTokenAndAPIKeyElements + + } + } + + + private func executeDeleteServerSessionOperation(of ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws { + + guard let delegateManager else { + assertionFailure("The Delegate Manager is not set") + throw ObvError.theDelegateManagerIsNotSet + } + + let coordinatorsQueue = delegateManager.queueSharedAmongCoordinators + + let op1 = DeleteServerSessionOperation(ownedCryptoIdentity: ownedCryptoIdentity) + let composedOp = try createCompositionOfOneContextualOperation(op1: op1, flowId: flowId) + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + defer { coordinatorsQueue.addOperation(composedOp) } + let previousCompletion = composedOp.completionBlock + composedOp.completionBlock = { + + previousCompletion?() + + guard composedOp.isCancelled else { + continuation.resume() + return + } + + guard let reasonForCancel = composedOp.reasonForCancel else { + assertionFailure() + continuation.resume(throwing: ObvError.operationFailedWithoutSpecifyingReason) + return + } + + switch reasonForCancel { + case .unknownReason: + assertionFailure() + continuation.resume(throwing: ObvError.operationFailedWithoutSpecifyingReason) + return + case .coreDataError(error: let error): + assertionFailure() + continuation.resume(throwing: ObvError.coreDataError(error: error)) + return + case .op1Cancelled(reason: let op1ReasonForCancel): + switch op1ReasonForCancel { + case .coreDataError(error: let error): + assertionFailure() + continuation.resume(throwing: ObvError.coreDataError(error: error)) + return + } + } + + } + + } + + } + + + private func saveServerSessionTokenAndAPIKeyElements(for ownedCryptoIdentity: ObvCryptoIdentity, serverSessionTokenAndAPIKeyElements: (serverSessionToken: Data, apiKeyElements: APIKeyElements), flowId: FlowIdentifier) async throws { + + guard let delegateManager else { + assertionFailure("The Delegate Manager is not set") + throw ObvError.theDelegateManagerIsNotSet + } + + let coordinatorsQueue = delegateManager.queueSharedAmongCoordinators + + let op1 = SaveServerSessionTokenAndAPIKeyElementsOperation( + ownedCryptoIdentity: ownedCryptoIdentity, + serverSessionTokenAndAPIKeyElements: serverSessionTokenAndAPIKeyElements) + let composedOp = try createCompositionOfOneContextualOperation(op1: op1, flowId: flowId) + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + defer { coordinatorsQueue.addOperation(composedOp) } + let previousCompletion = composedOp.completionBlock + composedOp.completionBlock = { + + previousCompletion?() + + guard composedOp.isCancelled else { + continuation.resume() + return + } + + guard let reasonForCancel = composedOp.reasonForCancel else { + assertionFailure() + continuation.resume(throwing: ObvError.operationFailedWithoutSpecifyingReason) + return + } + + switch reasonForCancel { + case .unknownReason: + assertionFailure() + continuation.resume(throwing: ObvError.operationFailedWithoutSpecifyingReason) + return + case .coreDataError(error: let error): + assertionFailure() + continuation.resume(throwing: ObvError.coreDataError(error: error)) + return + case .op1Cancelled(reason: let op1ReasonForCancel): + switch op1ReasonForCancel { + case .coreDataError(error: let error): + assertionFailure() + continuation.resume(throwing: ObvError.coreDataError(error: error)) + return + } + } + + } + + } + + } + + + private func requestSessionFromServer(for ownedCryptoIdentity: ObvCryptoIdentity, response: Data, nonce: Data, flowId: FlowIdentifier) async throws -> (serverSessionToken: Data, apiKeyElements: APIKeyElements) { + + let method = ObvServerGetTokenMethod( + ownedIdentity: ownedCryptoIdentity, + response: response, + nonce: nonce, + toIdentity: ownedCryptoIdentity, + flowId: flowId) + + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) + + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw ObvError.invalidServerResponse + } + + let result = ObvServerGetTokenMethod.parseObvServerResponse(responseData: data, using: Self.log) + + switch result { + case .failure(let error): + throw ObvError.serverError(error: error) + case .success(let returnStatus): + switch returnStatus { + case .serverDidNotFindChallengeCorrespondingToResponse: + assertionFailure() + throw ObvError.serverReportedThatItDidNotFindChallengeCorrespondingToResponse + case .generalError: + assertionFailure() + throw ObvError.serverReportedGeneralError + case .ok(token: let token, serverNonce: let serverNonce, apiKeyStatus: let apiKeyStatus, apiPermissions: let apiPermissions, apiKeyExpirationDate: let apiKeyExpirationDate): + if nonce != serverNonce { + assertionFailure("Unexpected server nonce") + } + return (token, .init(status: apiKeyStatus, permissions: apiPermissions, expirationDate: apiKeyExpirationDate)) + } + } + + } + + + private func solveChallenge(challenge: Data, for ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> Data { + + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) + assertionFailure("The Delegate Manager is not set") + throw ObvError.theDelegateManagerIsNotSet + } + + guard let solveChallengeDelegate = delegateManager.solveChallengeDelegate else { + os_log("The solve challenge delegate is not set", log: Self.log, type: .fault) + assertionFailure("The solve challenge delegate is not set") + throw ObvError.theSolveChallengeDelegateIsNotSet + } + + guard let contextCreator = delegateManager.contextCreator else { + os_log("The context creator manager is not set", log: Self.log, type: .fault) + assertionFailure("The context creator manager is not set") + throw ObvError.theContextCreatorIsNotSet + } + + let prng = ObvCryptoSuite.sharedInstance.prngService() + let challengeType = ChallengeType.authentChallenge(challengeFromServer: challenge) + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + contextCreator.performBackgroundTask(flowId: flowId) { obvContext in + do { + let response = try solveChallengeDelegate.solveChallenge(challengeType, for: ownedCryptoIdentity, using: prng, within: obvContext) + continuation.resume(returning: response) + } catch { + continuation.resume(throwing: ObvError.coreDataError(error: error)) + } + } + } + + } + + + private func requestChallengeFromServer(for ownedCryptoIdentity: ObvCryptoIdentity, nonce: Data, flowId: FlowIdentifier) async throws -> Data { + + // No cached server session token exists. To get a new one, we first request a challenge to the server + + let method = ObvServerRequestChallengeMethod( + ownedIdentity: ownedCryptoIdentity, + nonce: nonce, + toIdentity: ownedCryptoIdentity, + flowId: flowId) + + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) + + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw ObvError.invalidServerResponse + } + + let result = ObvServerRequestChallengeMethod.parseObvServerResponse(responseData: data, using: Self.log) + + switch result { + case .failure(let error): + throw ObvError.serverError(error: error) + case .success(let returnStatus): + switch returnStatus { + case .generalError: + assertionFailure() + throw ObvError.serverReportedGeneralError + case .ok(challenge: let challenge, serverNonce: let serverNonce): + guard serverNonce == nonce else { + assertionFailure() + throw ObvError.serverNonceDiffersFromLocalNonce + } + return challenge + } + } + + } + + + private func resetServerSessionCorrespondingToInvalidToken(for ownedCryptoIdentity: ObvCryptoIdentity, currentInvalidToken: Data, flowId: FlowIdentifier) async throws { + + guard let delegateManager else { + assertionFailure("The Delegate Manager is not set") + throw ObvError.theDelegateManagerIsNotSet + } + + let coordinatorsQueue = delegateManager.queueSharedAmongCoordinators + + let op1 = ResetServerSessionCorrespondingToInvalidTokenOperation( + ownedCryptoIdentity: ownedCryptoIdentity, + invalidToken: currentInvalidToken) + let composedOp = try createCompositionOfOneContextualOperation(op1: op1, flowId: flowId) + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + defer { coordinatorsQueue.addOperation(composedOp) } + let previousCompletion = composedOp.completionBlock + composedOp.completionBlock = { + + previousCompletion?() + + guard composedOp.isCancelled else { + continuation.resume() + return + } + + guard let reasonForCancel = composedOp.reasonForCancel else { + assertionFailure() + continuation.resume(throwing: ObvError.operationFailedWithoutSpecifyingReason) + return + } + + switch reasonForCancel { + case .unknownReason: + assertionFailure() + continuation.resume(throwing: ObvError.operationFailedWithoutSpecifyingReason) + return + case .coreDataError(error: let error): + assertionFailure() + continuation.resume(throwing: ObvError.coreDataError(error: error)) + return + case .op1Cancelled(reason: let op1ReasonForCancel): + switch op1ReasonForCancel { + case .coreDataError(error: let error): + assertionFailure() + continuation.resume(throwing: ObvError.coreDataError(error: error)) + return + } + } + + } + + } + + } + + + private func getLocalServerSessionTokenAndAPIKeyElements(for ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> (serverSessionToken: Data, apiKeyElements: APIKeyElements)? { + + guard let delegateManager else { + assertionFailure("The Delegate Manager is not set") + throw ObvError.theDelegateManagerIsNotSet + } + + let coordinatorsQueue = delegateManager.queueSharedAmongCoordinators + + let op1 = GetLocalServerSessionTokenAndAPIKeyElementsOperation(ownedCryptoIdentity: ownedCryptoIdentity) + let composedOp = try createCompositionOfOneContextualOperation(op1: op1, flowId: flowId) + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<(serverSessionToken: Data, apiKeyElements: APIKeyElements)?, Error>) in + defer { coordinatorsQueue.addOperation(composedOp) } + let previousCompletion = composedOp.completionBlock + composedOp.completionBlock = { + + previousCompletion?() + + guard composedOp.isCancelled else { + continuation.resume(returning: op1.serverSessionTokenAndAPIKeyElements) + return + } + + guard let reasonForCancel = composedOp.reasonForCancel else { + assertionFailure() + continuation.resume(throwing: ObvError.operationFailedWithoutSpecifyingReason) + return + } + + switch reasonForCancel { + case .unknownReason: + assertionFailure() + continuation.resume(throwing: ObvError.operationFailedWithoutSpecifyingReason) + return + case .coreDataError(error: let error): + assertionFailure() + continuation.resume(throwing: ObvError.coreDataError(error: error)) + return + case .op1Cancelled(reason: let op1ReasonForCancel): + switch op1ReasonForCancel { + case .coreDataError(error: let error): + assertionFailure() + continuation.resume(throwing: ObvError.coreDataError(error: error)) + return + } + } + + } + + } + + + } + + + // MARK: - Errors + + enum ObvError: LocalizedError { + + case theDelegateManagerIsNotSet + case theContextCreatorIsNotSet + case theSolveChallengeDelegateIsNotSet + case operationFailedWithoutSpecifyingReason + case coreDataError(error: Error) + case noAPIKey + case invalidServerResponse + case couldNotParseReturnStatusFromServer + case serverError(error: Error) + case serverReportedGeneralError + case serverNonceDiffersFromLocalNonce + case serverReportedThatItDidNotFindChallengeCorrespondingToResponse + + var errorDescription: String? { + switch self { + case .theDelegateManagerIsNotSet: + return "The delegate manager is not set" + case .theContextCreatorIsNotSet: + return "The context creator is not set" + case .operationFailedWithoutSpecifyingReason: + return "Operation failed without specifying reason" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .theSolveChallengeDelegateIsNotSet: + return "The solve challenge delegate is not set" + case .noAPIKey: + return "No API key could be found" + case .invalidServerResponse: + return "Invalid server response" + case .couldNotParseReturnStatusFromServer: + return "Could not parse return status from server" + case .serverError(error: let error): + return "Server error: \(error.localizedDescription)" + case .serverReportedGeneralError: + return "Server reported a general error" + case .serverNonceDiffersFromLocalNonce: + return "Server nonce differs from local nonce" + case .serverReportedThatItDidNotFindChallengeCorrespondingToResponse: + return "Server reported that no challenge corresponding to response could be found" + } + } + } + +} + + + +// MARK: - Helpers + +extension ServerSessionCoordinator { + + private func createCompositionOfOneContextualOperation(op1: ContextualOperationWithSpecificReasonForCancel, flowId: FlowIdentifier) throws -> CompositionOfOneContextualOperation { + + guard let delegateManager else { + assertionFailure("The Delegate Manager is not set") + throw ObvError.theDelegateManagerIsNotSet + } + + guard let contextCreator = delegateManager.contextCreator else { + assertionFailure("The context creator manager is not set") + throw ObvError.theContextCreatorIsNotSet + } + + let queueForComposedOperations = delegateManager.queueForComposedOperations + + let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: contextCreator, queueForComposedOperations: queueForComposedOperations, log: Self.log, flowId: flowId) + + composedOp.completionBlock = { [weak composedOp] in + assert(composedOp != nil) + composedOp?.logReasonIfCancelled(log: Self.log) + } + return composedOp + + } + +} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerUserDataCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerUserDataCoordinator.swift index 4093a042..f32d36e5 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerUserDataCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ServerUserDataCoordinator.swift @@ -194,7 +194,7 @@ extension ServerUserDataCoordinator: ServerUserDataDelegate { return } - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedIdentity) else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity) else { syncQueueOutput = .serverSessionRequired(flowId: flowId) return } @@ -239,7 +239,14 @@ extension ServerUserDataCoordinator: ServerUserDataDelegate { case .serverSessionRequired: /// REMARK we will be called again by NetworkFetchFlowCoordinator#newToken - try? delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) + Task.detached { [weak self] in + do { + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: nil, flowId: flowId) + } catch { + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) + assertionFailure() + } + } case .newTaskToRun(task: let task): os_log("New task to run for the label %{public}@", log: log, type: .debug, label) task.resume() @@ -366,7 +373,9 @@ extension ServerUserDataCoordinator: URLSessionDataDelegate { guard error == nil else { os_log("The task failed for server user data: %{public}@", log: log, type: .error, error!.localizedDescription) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + } return } @@ -376,7 +385,9 @@ extension ServerUserDataCoordinator: URLSessionDataDelegate { guard let status = ObvServerRefreshUserDataMethod.parseObvServerResponse(responseData: responseData, using: log) else { os_log("Could not parse the server response for the ObvServerRefreshUserDataMethod task of pending server query %{public}@", log: log, type: .fault, input.label) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + } return } switch status { @@ -388,7 +399,9 @@ extension ServerUserDataCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + } return } @@ -418,8 +431,7 @@ extension ServerUserDataCoordinator: URLSessionDataDelegate { dataKey = groupInformationWithPhoto.groupDetailsElementsWithPhoto.photoServerKeyAndLabel?.key case .groupV2(groupIdentifier: let groupIdentifier): guard let photoURLAndServerPhotoInfo = try identityDelegate.getGroupV2PhotoURLAndServerPhotoInfofOwnedIdentityIsUploader(ownedIdentity: userData.ownedIdentity, groupIdentifier: groupIdentifier, within: obvContext) else { - assertionFailure() - throw Self.makeError(message: "Could not get photoURLAndServerPhotoInfo for group v2") + throw Self.makeError(message: "Could not get photoURLAndServerPhotoInfo for group v2 (the owned identity might not be the uploader)") } dataURL = photoURLAndServerPhotoInfo.photoURL dataKey = photoURLAndServerPhotoInfo.serverPhotoInfo.photoServerKeyAndLabel.key @@ -437,7 +449,9 @@ extension ServerUserDataCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + } return } } @@ -450,14 +464,18 @@ extension ServerUserDataCoordinator: URLSessionDataDelegate { case .generalError: os_log("Server reported general error during the ObvServerRefreshUserDataMethod for label %{public}@ within flow %{public}@", log: log, type: .fault, input.label, flowId.debugDescription) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + } return } case .deleted: guard let status = ObvServerDeleteUserDataMethod.parseObvServerResponse(responseData: responseData, using: log) else { os_log("Could not parse the server response for the ObvServerDeleteUserDataMethod task of pending server query %{public}@", log: log, type: .fault, input.label) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + } return } switch status { @@ -469,7 +487,9 @@ extension ServerUserDataCoordinator: URLSessionDataDelegate { } catch { os_log("Could not save context: %{public}@", log: log, type: .fault, error.localizedDescription) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + } return } @@ -484,7 +504,9 @@ extension ServerUserDataCoordinator: URLSessionDataDelegate { case .generalError: os_log("Server reported general error during the ObvServerDeleteUserDataMethod for label %{public}@ within flow %{public}@", log: log, type: .fault, input.label, flowId.debugDescription) _ = removeInfoFor(task) - delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToProcessServerUserData(input: input, flowId: flowId) + } return } } @@ -495,34 +517,27 @@ extension ServerUserDataCoordinator: URLSessionDataDelegate { } private func createSession(input: ServerUserDataInput, delegateManager: ObvNetworkFetchDelegateManager, task: URLSessionTask, log: OSLog, within obvContext: ObvContext, flowId: FlowIdentifier) { - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: input.ownedIdentity) else { + guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: input.ownedIdentity), let token = serverSession.token else { _ = removeInfoFor(task) - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: input.ownedIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() + Task.detached { [weak self] in + do { + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: input.ownedIdentity, currentInvalidToken: nil, flowId: flowId) + } catch { + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) + assertionFailure() + } } return } - guard let token = serverSession.token else { - _ = removeInfoFor(task) + _ = removeInfoFor(task) + Task.detached { [weak self] in do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: input.ownedIdentity, flowId: flowId) + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: input.ownedIdentity, currentInvalidToken: token, flowId: flowId) } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) assertionFailure() } - return - } - - _ = removeInfoFor(task) - do { - try delegateManager.networkFetchFlowDelegate.serverSession(of: input.ownedIdentity, hasInvalidToken: token, flowId: flowId) - } catch { - os_log("Call to serverSession(of: ObvCryptoIdentity, hasInvalidToken: Data, flowId: FlowIdentifier) did fail", log: log, type: .fault) - assertionFailure() } } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/Operations/VerifyReceiptOperation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/Operations/VerifyReceiptOperation.swift index 26930d34..14c3e7d8 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/Operations/VerifyReceiptOperation.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/Operations/VerifyReceiptOperation.swift @@ -25,143 +25,142 @@ import ObvServerInterface import OlvidUtils -protocol VerifyReceiptOperationDelegate: AnyObject { - func receiptVerificationFailed(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, error: Error, flowId: FlowIdentifier) - func receiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, apiKey: UUID, flowId: FlowIdentifier) - func receiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, flowId: FlowIdentifier) - func invalidSession(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, receiptData: String, flowId: FlowIdentifier) -} +//protocol VerifyReceiptOperationDelegate: AnyObject { +// func receiptVerificationFailed(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, error: Error, flowId: FlowIdentifier) +// func receiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, apiKey: UUID, flowId: FlowIdentifier) +// func receiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, flowId: FlowIdentifier) +// func invalidSession(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, receiptData: String, flowId: FlowIdentifier) +//} -final class VerifyReceiptOperation: Operation { - - enum ReasonForCancel: LocalizedError { - case dependencyCancelled - case delegateManagerIsNotSet - case delegateIsNotSet - case contextCreatorIsNotSet - case serverSessionRequired - case failedToCreateTask(error: Error) - - var logType: OSLogType { - switch self { - case .dependencyCancelled, .serverSessionRequired: - return .error - case .delegateManagerIsNotSet, .delegateIsNotSet, .contextCreatorIsNotSet, .failedToCreateTask: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .dependencyCancelled: return "A dependency cancelled" - case .delegateManagerIsNotSet: return "The delegate manager is not set" - case .delegateIsNotSet: return "The delegate is not set" - case .contextCreatorIsNotSet: return "The context creator is not set" - case .serverSessionRequired: return "A new server session is required" - case .failedToCreateTask(error: let error): return "Could not create task: \(error.localizedDescription)" - } - } - - } - - func logReasonIfCancelled(log: OSLog) { - assert(isFinished) - guard isCancelled else { return } - guard let reason = self.reasonForCancel else { - os_log("💰 %{public}@ cancelled without providing a reason. This is a bug", log: log, type: .fault, String(describing: self)) - assertionFailure() - return - } - os_log("💰 %{public}@ cancelled: %{public}@", log: log, type: reason.logType, String(describing: self), reason.localizedDescription) - assertionFailure() - } - - private(set) var reasonForCancel: ReasonForCancel? - - private func cancel(withReason reason: ReasonForCancel) { - assert(self.reasonForCancel == nil) - self.reasonForCancel = reason - self.cancel() - } - - let identity: ObvCryptoIdentity - let flowId: FlowIdentifier - let receiptData: String - let transactionIdentifier: String - let log: OSLog - weak var delegateManager: ObvNetworkFetchDelegateManager? - weak var delegate: VerifyReceiptOperationDelegate? - - init(identity: ObvCryptoIdentity, receiptData: String, transactionIdentifier: String, log: OSLog, flowId: FlowIdentifier, delegateManager: ObvNetworkFetchDelegateManager, delegate: VerifyReceiptOperationDelegate) { - self.delegateManager = delegateManager - self.flowId = flowId - self.identity = identity - self.receiptData = receiptData - self.transactionIdentifier = transactionIdentifier - self.delegate = delegate - self.log = log - super.init() - } - - override func main() { - - guard dependencies.filter({ $0.isCancelled }).isEmpty else { - return cancel(withReason: .dependencyCancelled) - } - - guard let delegateManager = delegateManager else { - return cancel(withReason: .delegateManagerIsNotSet) - } - - guard let delegate = delegate else { - return cancel(withReason: .delegateIsNotSet) - } - - guard let contextCreator = delegateManager.contextCreator else { - return cancel(withReason: .contextCreatorIsNotSet) - } - - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: identity) else { - return cancel(withReason: .serverSessionRequired) - } - - guard let token = serverSession.token else { - return cancel(withReason: .serverSessionRequired) - } - - let verifyReceiptResult = VerifyReceiptResult(ownedIdentity: identity, - transactionIdentifier: transactionIdentifier, - receiptData: receiptData, - flowId: flowId, - delegate: delegate, - log: log) - - let method = VerifyReceiptMethod(ownedIdentity: identity, - token: token, - receiptData: receiptData, - transactionIdentifier: transactionIdentifier, - flowId: flowId) - method.identityDelegate = delegateManager.identityDelegate - - let sessionConfiguration = URLSessionConfiguration.ephemeral - let session = URLSession(configuration: sessionConfiguration, delegate: verifyReceiptResult, delegateQueue: nil) - - let task: URLSessionDataTask - do { - task = try method.dataTask(within: session) - } catch { - return cancel(withReason: .failedToCreateTask(error: error)) - } - - task.resume() - - session.finishTasksAndInvalidate() - - } - - } - -} +//final class VerifyReceiptOperation: Operation { +// +// enum ReasonForCancel: LocalizedError { +// case dependencyCancelled +// case delegateManagerIsNotSet +// case delegateIsNotSet +// case contextCreatorIsNotSet +// case serverSessionRequired +// case failedToCreateTask(error: Error) +// +// var logType: OSLogType { +// switch self { +// case .dependencyCancelled, .serverSessionRequired: +// return .error +// case .delegateManagerIsNotSet, .delegateIsNotSet, .contextCreatorIsNotSet, .failedToCreateTask: +// return .fault +// } +// } +// +// var errorDescription: String? { +// switch self { +// case .dependencyCancelled: return "A dependency cancelled" +// case .delegateManagerIsNotSet: return "The delegate manager is not set" +// case .delegateIsNotSet: return "The delegate is not set" +// case .contextCreatorIsNotSet: return "The context creator is not set" +// case .serverSessionRequired: return "A new server session is required" +// case .failedToCreateTask(error: let error): return "Could not create task: \(error.localizedDescription)" +// } +// } +// +// } +// +// func logReasonIfCancelled(log: OSLog) { +// assert(isFinished) +// guard isCancelled else { return } +// guard let reason = self.reasonForCancel else { +// os_log("💰 %{public}@ cancelled without providing a reason. This is a bug", log: log, type: .fault, String(describing: self)) +// assertionFailure() +// return +// } +// os_log("💰 %{public}@ cancelled: %{public}@", log: log, type: reason.logType, String(describing: self), reason.localizedDescription) +// assertionFailure() +// } +// +// private(set) var reasonForCancel: ReasonForCancel? +// +// private func cancel(withReason reason: ReasonForCancel) { +// assert(self.reasonForCancel == nil) +// self.reasonForCancel = reason +// self.cancel() +// } +// +// let identity: ObvCryptoIdentity +// let flowId: FlowIdentifier +// let receiptData: String +// let transactionIdentifier: String +// let log: OSLog +// weak var delegateManager: ObvNetworkFetchDelegateManager? +// weak var delegate: VerifyReceiptOperationDelegate? +// +// init(identity: ObvCryptoIdentity, receiptData: String, transactionIdentifier: String, log: OSLog, flowId: FlowIdentifier, delegateManager: ObvNetworkFetchDelegateManager, delegate: VerifyReceiptOperationDelegate) { +// self.delegateManager = delegateManager +// self.flowId = flowId +// self.identity = identity +// self.receiptData = receiptData +// self.transactionIdentifier = transactionIdentifier +// self.delegate = delegate +// self.log = log +// super.init() +// } +// +// override func main() { +// +// guard dependencies.filter({ $0.isCancelled }).isEmpty else { +// return cancel(withReason: .dependencyCancelled) +// } +// +// guard let delegateManager = delegateManager else { +// return cancel(withReason: .delegateManagerIsNotSet) +// } +// +// guard let delegate = delegate else { +// return cancel(withReason: .delegateIsNotSet) +// } +// +// guard let contextCreator = delegateManager.contextCreator else { +// return cancel(withReason: .contextCreatorIsNotSet) +// } +// +// contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in +// +// guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: identity) else { +// return cancel(withReason: .serverSessionRequired) +// } +// +// guard let token = serverSession.token else { +// return cancel(withReason: .serverSessionRequired) +// } +// +// let verifyReceiptResult = VerifyReceiptResult(ownedIdentity: identity, +// transactionIdentifier: transactionIdentifier, +// receiptData: receiptData, +// flowId: flowId, +// delegate: delegate, +// log: log) +// +// let method = VerifyReceiptServerMethod(ownedIdentity: identity, +// token: token, +// receiptData: receiptData, +// flowId: flowId) +// method.identityDelegate = delegateManager.identityDelegate +// +// let sessionConfiguration = URLSessionConfiguration.ephemeral +// let session = URLSession(configuration: sessionConfiguration, delegate: verifyReceiptResult, delegateQueue: nil) +// +// let task: URLSessionDataTask +// do { +// task = try method.dataTask(within: session) +// } catch { +// return cancel(withReason: .failedToCreateTask(error: error)) +// } +// +// task.resume() +// +// session.finishTasksAndInvalidate() +// +// } +// +// } +// +//} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/Operations/VerifyReceiptResult.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/Operations/VerifyReceiptResult.swift index 788244c7..c1ef172b 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/Operations/VerifyReceiptResult.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/Operations/VerifyReceiptResult.swift @@ -27,89 +27,89 @@ import OlvidUtils /// A `VerifyReceiptResult` instance accumulates the data received by a `VerifyReceiptMethod`. It serves as a delegate of the URLSession /// of the task. When the task is over, it calls an appropriate method on its delegate (which is the `VerifyReceiptCoordinator`) -final class VerifyReceiptResult: NSObject, URLSessionDataDelegate { - - let delegateQueue: OperationQueue = { - let queue = OperationQueue() - queue.maxConcurrentOperationCount = 1 - queue.name = "VerifyReceiptSessionDelegate queue" - return queue - }() - - let transactionIdentifier: String - let ownedIdentity: ObvCryptoIdentity - let receiptData: String - let flowId: FlowIdentifier - let log: OSLog - private weak var delegate: VerifyReceiptOperationDelegate? - - private var receivedData = Data() - - deinit { - debugPrint("VerifyReceiptResultDelegate deinit") - } - - init(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, receiptData: String, flowId: FlowIdentifier, delegate: VerifyReceiptOperationDelegate, log: OSLog) { - self.ownedIdentity = ownedIdentity - self.receiptData = receiptData - self.flowId = flowId - self.transactionIdentifier = transactionIdentifier - self.delegate = delegate - self.log = log - super.init() - } - - private static func makeError(message: String) -> Error { NSError(domain: "VerifyReceiptResult", code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } - private func makeError(message: String) -> Error { VerifyReceiptResult.makeError(message: message) } - - - func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { - receivedData.append(data) - } - - - func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { - - os_log("💰 URLSession task for AppStore receipt verification did complete", log: log, type: .info) - - guard error == nil else { - assertionFailure() - delegate?.receiptVerificationFailed(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, error: error!, flowId: flowId) - return - } - - // If we reach this point, the data task did complete without error - - guard let (status, returnedValues) = VerifyReceiptMethod.parseObvServerResponse(responseData: receivedData, using: log) else { - let error = makeError(message: "Parsing error") - delegate?.receiptVerificationFailed(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, error: error, flowId: flowId) - assertionFailure() - return - } - - switch status { - case .ok: - os_log("💰 The server reported that the AppStore receipt received with transaction %{public}@ is valid", log: log, type: .info, transactionIdentifier) - let apiKey = returnedValues! - delegate?.receiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, apiKey: apiKey, flowId: flowId) - return - - case .invalidSession: - os_log("💰 The server session is invalid", log: log, type: .error) - delegate?.invalidSession(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, receiptData: receiptData, flowId: flowId) - return - - case .receiptIsExpired: - os_log("💰 The server reported that the receipt has expired for transaction identifier %{public}@ is invalid", log: log, type: .error, transactionIdentifier) - delegate?.receiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, flowId: flowId) - return - - case .generalError: - os_log("💰 The server reported a general error", log: log, type: .fault) - let error = makeError(message: "The server reported a general error") - delegate?.receiptVerificationFailed(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, error: error, flowId: flowId) - return - } - - } -} +//final class VerifyReceiptResult: NSObject, URLSessionDataDelegate { +// +// let delegateQueue: OperationQueue = { +// let queue = OperationQueue() +// queue.maxConcurrentOperationCount = 1 +// queue.name = "VerifyReceiptSessionDelegate queue" +// return queue +// }() +// +// let transactionIdentifier: String +// let ownedIdentity: ObvCryptoIdentity +// let receiptData: String +// let flowId: FlowIdentifier +// let log: OSLog +// private weak var delegate: VerifyReceiptOperationDelegate? +// +// private var receivedData = Data() +// +// deinit { +// debugPrint("VerifyReceiptResultDelegate deinit") +// } +// +// init(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, receiptData: String, flowId: FlowIdentifier, delegate: VerifyReceiptOperationDelegate, log: OSLog) { +// self.ownedIdentity = ownedIdentity +// self.receiptData = receiptData +// self.flowId = flowId +// self.transactionIdentifier = transactionIdentifier +// self.delegate = delegate +// self.log = log +// super.init() +// } +// +// private static func makeError(message: String) -> Error { NSError(domain: "VerifyReceiptResult", code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } +// private func makeError(message: String) -> Error { VerifyReceiptResult.makeError(message: message) } +// +// +// func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { +// receivedData.append(data) +// } +// +// +// func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { +// +// os_log("💰 URLSession task for AppStore receipt verification did complete", log: log, type: .info) +// +// guard error == nil else { +// assertionFailure() +// delegate?.receiptVerificationFailed(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, error: error!, flowId: flowId) +// return +// } +// +// // If we reach this point, the data task did complete without error +// +// guard let (status, returnedValues) = VerifyReceiptMethod.parseObvServerResponse(responseData: receivedData, using: log) else { +// let error = makeError(message: "Parsing error") +// delegate?.receiptVerificationFailed(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, error: error, flowId: flowId) +// assertionFailure() +// return +// } +// +// switch status { +// case .ok: +// os_log("💰 The server reported that the AppStore receipt received with transaction %{public}@ is valid", log: log, type: .info, transactionIdentifier) +// let apiKey = returnedValues! +// delegate?.receiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, apiKey: apiKey, flowId: flowId) +// return +// +// case .invalidSession: +// os_log("💰 The server session is invalid", log: log, type: .error) +// delegate?.invalidSession(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, receiptData: receiptData, flowId: flowId) +// return +// +// case .receiptIsExpired: +// os_log("💰 The server reported that the receipt has expired for transaction identifier %{public}@ is invalid", log: log, type: .error, transactionIdentifier) +// delegate?.receiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, flowId: flowId) +// return +// +// case .generalError: +// os_log("💰 The server reported a general error", log: log, type: .fault) +// let error = makeError(message: "The server reported a general error") +// delegate?.receiptVerificationFailed(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, error: error, flowId: flowId) +// return +// } +// +// } +//} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/VerifyReceiptCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/VerifyReceiptCoordinator.swift index bb61a835..949aaa98 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/VerifyReceiptCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/VerifyReceiptCoordinator/VerifyReceiptCoordinator.swift @@ -23,26 +23,27 @@ import ObvCrypto import ObvTypes import ObvMetaManager import OlvidUtils +import ObvServerInterface -final class VerifyReceiptCoordinator: NSObject { + +actor VerifyReceiptCoordinator { - fileprivate let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - fileprivate let logCategory = "VerifyReceiptCoordinator" + private static let defaultLogSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem + private static let logCategory = "VerifyReceiptCoordinator" + private static var log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - var delegateManager: ObvNetworkFetchDelegateManager? + weak var delegateManager: ObvNetworkFetchDelegateManager? - private let localQueue = DispatchQueue(label: "VerifyReceiptCoordinatorQueue") - private let queueForNotifications = DispatchQueue(label: "VerifyReceiptCoordinator queue for notifications") + init(logPrefix: String) { + let logSubsystem = "\(logPrefix).\(Self.defaultLogSubsystem)" + Self.log = OSLog(subsystem: logSubsystem, category: Self.logCategory) + } - private var internalOperationQueue: OperationQueue = { - let queue = OperationQueue() - queue.name = "Queue for VerifyReceiptCoordinator operations" - queue.maxConcurrentOperationCount = 1 - return queue - }() + private enum VerificationTask { + case inProgress(Task<[ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus], Never>) + } - private var currentTransactions = Set() - private var receiptToVerifyWhenNewSessionIsAvailable = [(ownedIdentity: ObvCryptoIdentity, receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier)]() + private var cache = [ObvAppStoreReceipt: VerificationTask]() } @@ -50,221 +51,398 @@ final class VerifyReceiptCoordinator: NSObject { extension VerifyReceiptCoordinator: VerifyReceiptDelegate { - func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) { + func verifyReceipt(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier) async throws -> [ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus] { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } + let requestUUID = UUID() - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) + os_log("💰[%{public}@] Call to verifyReceipt", log: Self.log, type: .info, requestUUID.debugDescription) - os_log("💰🌊 Call to verifyReceipt within flow %{public}@ for transaction identifier %{public}@", log: log, type: .info, flowId.debugDescription, transactionIdentifier) - - localQueue.async { [weak self] in + let result = try await verifyReceipt(appStoreReceiptElements: appStoreReceiptElements, flowId: flowId, requestUUID: requestUUID) + + os_log("💰[%{public}@] End if call to verifyReceipt", log: Self.log, type: .info, requestUUID.debugDescription) - guard let _self = self else { return } - - guard !_self.currentTransactions.contains(transactionIdentifier) else { - assertionFailure() - return - } - - _self.currentTransactions.insert(transactionIdentifier) - - let ops = ownedCryptoIdentities.map({ - VerifyReceiptOperation(identity: $0, - receiptData: receiptData, - transactionIdentifier: transactionIdentifier, - log: log, - flowId: flowId, - delegateManager: delegateManager, - delegate: _self) }) - _self.internalOperationQueue.addOperations(ops, waitUntilFinished: true) - os_log("💰 VerifyReceiptOperation is finished", log: log, type: .info) - for op in ops { - op.logReasonIfCancelled(log: log) - } - - } + return result } - func verifyReceiptsExpectingNewSesssion() { + private func verifyReceipt(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier, requestUUID: UUID) async throws -> [ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus] { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) - os_log("💰 The Delegate Manager is not set", log: log, type: .fault) - assertionFailure() - return - } + return try await requestAppStoreReceiptVerificationFromServer( + appStoreReceiptElements: appStoreReceiptElements, + flowId: flowId, + requestUUID: requestUUID) - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) + } - os_log("💰 Trying to verify receipts expecting a new server session...", log: log, type: .info) + + private func requestAppStoreReceiptVerificationFromServer(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier, requestUUID: UUID) async throws -> [ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus] { - var receipts = [(ownedIdentity: ObvCryptoIdentity, receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier)]() - localQueue.sync { [weak self] in - guard let _self = self else { return } - receipts = _self.receiptToVerifyWhenNewSessionIsAvailable - _self.receiptToVerifyWhenNewSessionIsAvailable.removeAll() + if let cached = cache[appStoreReceiptElements] { + switch cached { + case .inProgress(let task): + os_log("💰[%{public}@] Cache hit: in progress", log: Self.log, type: .info, requestUUID.debugDescription) + return await task.value + } } - os_log("💰 We verify the %d receipt(s) that were exepecting a new server session", log: log, type: .info, receipts.count) - - for receipt in receipts { - verifyReceipt(ownedCryptoIdentities: [receipt.ownedIdentity], - receiptData: receipt.receiptData, - transactionIdentifier: receipt.transactionIdentifier, - flowId: receipt.flowId) - } - } -} + os_log("💰[%{public}@] Not in cache", log: Self.log, type: .info, requestUUID.debugDescription) + let task = try createTaskAllowingToVerifyReceiptForAllIdentities(appStoreReceiptElements: appStoreReceiptElements, flowId: flowId) + + cache[appStoreReceiptElements] = .inProgress(task) -// MARK: - Implementing VerifyReceiptOperationDelegate + os_log("💰[%{public}@] In progress", log: Self.log, type: .info, requestUUID.debugDescription) + + let results = await task.value + cache.removeValue(forKey: appStoreReceiptElements) + return results -extension VerifyReceiptCoordinator: VerifyReceiptOperationDelegate { + } - func receiptVerificationFailed(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, error: Error, flowId: FlowIdentifier) { + + /// Returns a task that, on execution, performs one `VerifyReceiptServerMethod` for each owned identity indicated in the receipt elements. + /// All the verifications are performed in parallel, and the same receipt is used for each owned identity. + /// The task never throws, and returns a dictionary mapping each owned identity to a Boolean indicating whether the receipt verification was successful (`true`) or not (`false`). + private func createTaskAllowingToVerifyReceiptForAllIdentities(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier) throws -> Task<[ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus], Never> { - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("💰 The Delegate Manager is not set", log: log, type: .fault) + guard let delegateManager else { + os_log("The Delegate Manager is not set", log: Self.log, type: .fault) assertionFailure() - return + throw ObvError.theDelegateManagerIsNotSet } - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - os_log("💰 Receipt verification failed for transaction with identifier %{public}@", log: log, type: .error, transactionIdentifier) - - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notificationDelegate is not set", log: log, type: .fault) + guard let identityDelegate = delegateManager.identityDelegate else { + os_log("The identity delegate is not set", log: Self.log, type: .fault) assertionFailure() - return + throw ObvError.theIdentityDelegateIsNotSet } - localQueue.async { [weak self] in - guard let _self = self else { return } - _ = _self.currentTransactions.remove(transactionIdentifier) - os_log("💰 Receipt verification failed for transaction %{public}@: %{public}@", log: log, type: .error, transactionIdentifier, error.localizedDescription) - ObvNetworkFetchNotificationNew.appStoreReceiptVerificationFailed(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, flowId: flowId) - .postOnBackgroundQueue(_self.queueForNotifications, within: notificationDelegate) + let ownedCryptoIdentities = appStoreReceiptElements.ownedCryptoIdentities + let signedAppStoreTransactionAsJWS = appStoreReceiptElements.signedAppStoreTransactionAsJWS + + return Task { + + return await withTaskGroup(of: (ObvCryptoIdentity, ObvAppStoreReceipt.VerificationStatus).self) { group in + + for ownedCryptoIdentity in ownedCryptoIdentities { + + group.addTask { + + let verificationStatus: ObvAppStoreReceipt.VerificationStatus + + do { + + let serverSessionToken = try await delegateManager.serverSessionDelegate.getValidServerSessionToken(for: ownedCryptoIdentity, currentInvalidToken: nil, flowId: flowId).serverSessionToken + + let method = VerifyReceiptServerMethod( + ownedIdentity: ownedCryptoIdentity, + token: serverSessionToken, + signedAppStoreTransactionAsJWS: signedAppStoreTransactionAsJWS, + identityDelegate: identityDelegate, + flowId: flowId) + + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) + + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw ObvError.invalidServerResponse + } + + let result = VerifyReceiptServerMethod.parseObvServerResponse(responseData: data, using: Self.log) + + switch result { + case .failure: + throw ObvError.couldNotParseReturnStatusFromServer + case .success(let returnStatus): + switch returnStatus { + case .ok(apiKey: _): + verificationStatus = .succeededAndSubscriptionIsValid + case .invalidSession: + throw ObvError.serverReportedInvalidSession + case .receiptIsExpired: + verificationStatus = .succeededButSubscriptionIsExpired + case .generalError: + throw ObvError.serverReportedGeneralError + } + } + + } catch { + assertionFailure(error.localizedDescription) + verificationStatus = .failed + } + + return (ownedCryptoIdentity, verificationStatus) + + } // end of group.addTask + + } // end of for ownedCryptoIdentity in ownedCryptoIdentities loop + + var results = [ObvCryptoIdentity: ObvAppStoreReceipt.VerificationStatus]() + for await (ownedCryptoIdentity, verificationStatus) in group { + results[ownedCryptoIdentity] = verificationStatus + } + return results + + } + } + } - func receiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, apiKey: UUID, flowId: FlowIdentifier) { + + func setDelegateManager(_ delegateManager: ObvNetworkFetchDelegateManager) { + self.delegateManager = delegateManager + } - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("💰 The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) + +// func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) { +// +// guard let delegateManager = delegateManager else { +// let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) +// os_log("The Delegate Manager is not set", log: log, type: .fault) +// assertionFailure() +// return +// } +// +// let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) +// +// os_log("💰🌊 Call to verifyReceipt within flow %{public}@ for transaction identifier %{public}@", log: log, type: .info, flowId.debugDescription, transactionIdentifier) +// +// localQueue.async { [weak self] in +// +// guard let _self = self else { return } +// +// guard !_self.currentTransactions.contains(transactionIdentifier) else { +// assertionFailure() +// return +// } +// +// _self.currentTransactions.insert(transactionIdentifier) +// +// let ops = ownedCryptoIdentities.map({ +// VerifyReceiptOperation(identity: $0, +// receiptData: receiptData, +// transactionIdentifier: transactionIdentifier, +// log: log, +// flowId: flowId, +// delegateManager: delegateManager, +// delegate: _self) }) +// _self.internalOperationQueue.addOperations(ops, waitUntilFinished: true) +// os_log("💰 VerifyReceiptOperation is finished", log: log, type: .info) +// for op in ops { +// op.logReasonIfCancelled(log: log) +// } +// +// } +// +// } + + +// func verifyReceiptsExpectingNewSesssion() { +// +// guard let delegateManager = delegateManager else { +// let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) +// os_log("💰 The Delegate Manager is not set", log: log, type: .fault) +// assertionFailure() +// return +// } +// +// let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) +// +// os_log("💰 Trying to verify receipts expecting a new server session...", log: log, type: .info) +// +// var receipts = [(ownedIdentity: ObvCryptoIdentity, receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier)]() +// localQueue.sync { [weak self] in +// guard let _self = self else { return } +// receipts = _self.receiptToVerifyWhenNewSessionIsAvailable +// _self.receiptToVerifyWhenNewSessionIsAvailable.removeAll() +// } +// +// os_log("💰 We verify the %d receipt(s) that were exepecting a new server session", log: log, type: .info, receipts.count) +// +// for receipt in receipts { +// verifyReceipt(ownedCryptoIdentities: [receipt.ownedIdentity], +// receiptData: receipt.receiptData, +// transactionIdentifier: receipt.transactionIdentifier, +// flowId: receipt.flowId) +// } +// } +} - os_log("💰 Receipt verification succeeded for transaction with identifier %{public}@ and the subscription is valid", log: log, type: .info, transactionIdentifier) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notificationDelegate is not set", log: log, type: .fault) - assertionFailure() - return - } +// MARK: - Implementing VerifyReceiptOperationDelegate - localQueue.async { [weak self] in - guard let _self = self else { return } - _ = _self.currentTransactions.remove(transactionIdentifier) - os_log("💰 Receipt verification succeed for transaction %{public}@", log: log, type: .info, transactionIdentifier) - ObvNetworkFetchNotificationNew.appStoreReceiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, apiKey: apiKey, flowId: flowId) - .postOnBackgroundQueue(_self.queueForNotifications, within: notificationDelegate) - } - } - - - func receiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, flowId: FlowIdentifier) { - - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("💰 The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) +//extension VerifyReceiptCoordinator: VerifyReceiptOperationDelegate { +// +// func receiptVerificationFailed(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, error: Error, flowId: FlowIdentifier) { +// +// guard let delegateManager = delegateManager else { +// let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) +// os_log("💰 The Delegate Manager is not set", log: log, type: .fault) +// assertionFailure() +// return +// } +// +// let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) +// +// os_log("💰 Receipt verification failed for transaction with identifier %{public}@", log: log, type: .error, transactionIdentifier) +// +// guard let notificationDelegate = delegateManager.notificationDelegate else { +// os_log("The notificationDelegate is not set", log: log, type: .fault) +// assertionFailure() +// return +// } +// +// localQueue.async { [weak self] in +// guard let _self = self else { return } +// _ = _self.currentTransactions.remove(transactionIdentifier) +// os_log("💰 Receipt verification failed for transaction %{public}@: %{public}@", log: log, type: .error, transactionIdentifier, error.localizedDescription) +// ObvNetworkFetchNotificationNew.appStoreReceiptVerificationFailed(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, flowId: flowId) +// .postOnBackgroundQueue(_self.queueForNotifications, within: notificationDelegate) +// } +// } +// +// func receiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, apiKey: UUID, flowId: FlowIdentifier) { +// +// guard let delegateManager = delegateManager else { +// let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) +// os_log("💰 The Delegate Manager is not set", log: log, type: .fault) +// return +// } +// +// let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) +// +// os_log("💰 Receipt verification succeeded for transaction with identifier %{public}@ and the subscription is valid", log: log, type: .info, transactionIdentifier) +// +// guard let notificationDelegate = delegateManager.notificationDelegate else { +// os_log("The notificationDelegate is not set", log: log, type: .fault) +// assertionFailure() +// return +// } +// +// localQueue.async { [weak self] in +// guard let _self = self else { return } +// _ = _self.currentTransactions.remove(transactionIdentifier) +// os_log("💰 Receipt verification succeed for transaction %{public}@", log: log, type: .info, transactionIdentifier) +// ObvNetworkFetchNotificationNew.appStoreReceiptVerificationSucceededAndSubscriptionIsValid(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, apiKey: apiKey, flowId: flowId) +// .postOnBackgroundQueue(_self.queueForNotifications, within: notificationDelegate) +// } +// } +// +// +// func receiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, flowId: FlowIdentifier) { +// +// guard let delegateManager = delegateManager else { +// let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) +// os_log("💰 The Delegate Manager is not set", log: log, type: .fault) +// return +// } +// +// let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) +// +// os_log("💰 Receipt verification succeeded for transaction with identifier %{public}@ but the subscription is expired", log: log, type: .error, transactionIdentifier) +// +// guard let notificationDelegate = delegateManager.notificationDelegate else { +// os_log("The notificationDelegate is not set", log: log, type: .fault) +// assertionFailure() +// return +// } +// +// localQueue.async { [weak self] in +// guard let _self = self else { return } +// _ = _self.currentTransactions.remove(transactionIdentifier) +// os_log("💰 Receipt verification succeed for transaction %{public}@ but the subscription is expired", log: log, type: .error, transactionIdentifier) +// ObvNetworkFetchNotificationNew.appStoreReceiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, flowId: flowId) +// .postOnBackgroundQueue(_self.queueForNotifications, within: notificationDelegate) +// } +// } +// +// func invalidSession(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, receiptData: String, flowId: FlowIdentifier) { +// +// guard let delegateManager = delegateManager else { +// let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) +// os_log("💰 The Delegate Manager is not set", log: log, type: .fault) +// return +// } +// +// let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) +// +// localQueue.async { [weak self] in +// guard let _self = self else { return } +// _ = _self.currentTransactions.remove(transactionIdentifier) +// _self.receiptToVerifyWhenNewSessionIsAvailable.append((ownedIdentity, receiptData, transactionIdentifier, flowId)) +// _self.queueForNotifications.async { [weak self] in +// self?.createNewServerSession(ownedIdentity: ownedIdentity, delegateManager: delegateManager, flowId: flowId, log: log) +// } +// } +// } +// +// +// private func createNewServerSession(ownedIdentity: ObvCryptoIdentity, delegateManager: ObvNetworkFetchDelegateManager, flowId: FlowIdentifier, log: OSLog) { +// guard let contextCreator = delegateManager.contextCreator else { assertionFailure(); return } +// contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in +// guard let serverSession = try? ServerSession.get(within: obvContext.context, withIdentity: ownedIdentity), let token = serverSession.token else { +// Task.detached { +// do { +// _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: nil, flowId: flowId) +// } catch { +// os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) +// assertionFailure() +// } +// } +// return +// } +// +// Task.detached { +// do { +// _ = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: ownedIdentity, currentInvalidToken: token, flowId: flowId) +// } catch { +// os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) +// assertionFailure() +// } +// } +// } +// +// } +// +// +// +// +//} - os_log("💰 Receipt verification succeeded for transaction with identifier %{public}@ but the subscription is expired", log: log, type: .error, transactionIdentifier) - guard let notificationDelegate = delegateManager.notificationDelegate else { - os_log("The notificationDelegate is not set", log: log, type: .fault) - assertionFailure() - return - } +// MARK: - Errors - localQueue.async { [weak self] in - guard let _self = self else { return } - _ = _self.currentTransactions.remove(transactionIdentifier) - os_log("💰 Receipt verification succeed for transaction %{public}@ but the subscription is expired", log: log, type: .error, transactionIdentifier) - ObvNetworkFetchNotificationNew.appStoreReceiptVerificationSucceededButSubscriptionIsExpired(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier, flowId: flowId) - .postOnBackgroundQueue(_self.queueForNotifications, within: notificationDelegate) - } - } +extension VerifyReceiptCoordinator { - func invalidSession(ownedIdentity: ObvCryptoIdentity, transactionIdentifier: String, receiptData: String, flowId: FlowIdentifier) { + enum ObvError: LocalizedError { + case theDelegateManagerIsNotSet + case theIdentityDelegateIsNotSet + case invalidServerResponse + case couldNotParseReturnStatusFromServer + case serverReportedInvalidSession + case serverReportedReceiptIsExpired + case serverReportedGeneralError - guard let delegateManager = delegateManager else { - let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) - os_log("💰 The Delegate Manager is not set", log: log, type: .fault) - return - } - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - - localQueue.async { [weak self] in - guard let _self = self else { return } - _ = _self.currentTransactions.remove(transactionIdentifier) - _self.receiptToVerifyWhenNewSessionIsAvailable.append((ownedIdentity, receiptData, transactionIdentifier, flowId)) - _self.queueForNotifications.async { [weak self] in - self?.createNewServerSession(ownedIdentity: ownedIdentity, delegateManager: delegateManager, flowId: flowId, log: log) - } - } - } - - - private func createNewServerSession(ownedIdentity: ObvCryptoIdentity, delegateManager: ObvNetworkFetchDelegateManager, flowId: FlowIdentifier, log: OSLog) { - guard let contextCreator = delegateManager.contextCreator else { assertionFailure(); return } - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - guard let serverSession = try? ServerSession.get(within: obvContext, withIdentity: ownedIdentity) else { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - return - } - - guard let token = serverSession.token else { - do { - try delegateManager.networkFetchFlowDelegate.serverSessionRequired(for: ownedIdentity, flowId: flowId) - } catch { - os_log("Call to serverSessionRequired did fail", log: log, type: .fault) - assertionFailure() - } - return - } - - do { - try delegateManager.networkFetchFlowDelegate.serverSession(of: ownedIdentity, hasInvalidToken: token, flowId: flowId) - } catch { - os_log("Call to to serverSession(of: ObvCryptoIdentity, hasInvalidToken: Data, flowId: FlowIdentifier) did fail", log: log, type: .fault) - assertionFailure() + var errorDescription: String? { + switch self { + case .theDelegateManagerIsNotSet: + return "The delegate manager is not set" + case .invalidServerResponse: + return "Invalid server response" + case .couldNotParseReturnStatusFromServer: + return "Could not parse return status from server" + case .serverReportedInvalidSession: + return "Server reported an invalid session" + case .serverReportedReceiptIsExpired: + return "Server reported that the receipt expired" + case .serverReportedGeneralError: + return "Server reported a general error" + case .theIdentityDelegateIsNotSet: + return "The identity delegate is not set" } } - } - } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/WebSocketCoordinator/WebSocketCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/WebSocketCoordinator/WebSocketCoordinator.swift index 3085ab4c..f9230648 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/WebSocketCoordinator/WebSocketCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/WebSocketCoordinator/WebSocketCoordinator.swift @@ -46,6 +46,8 @@ actor WebSocketCoordinator: NSObject, ObvErrorMaker { /// - If the status is `.registered`, we should not send a register message as the identity is already registered. private var registerMessageStatusForIdentity = [ObvCryptoIdentity: RegisterMessageStatus]() + private var disconnectTimerForUUID = [UUID: Timer]() + private enum RegisterMessageStatus: CustomDebugStringConvertible { case registering case registered @@ -234,9 +236,17 @@ extension WebSocketCoordinator: WebSocketDelegate { switch state { case .running: let pingTime = Date() - try await task.sendPing() // Returns when a pong is received - let interval = Date().timeIntervalSince(pingTime) - return (state, interval) + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<(URLSessionTask.State,TimeInterval?), Error>) in + task.sendPing { error in + if let error { + continuation.resume(throwing: error) + return + } + // No error + let interval = Date().timeIntervalSince(pingTime) + continuation.resume(returning: (state, interval)) + } + } default: return (state, nil) } @@ -310,7 +320,26 @@ extension WebSocketCoordinator: WebSocketDelegate { /// a WebSocket (unless one is already available). private func tryConnectToWebSocketServer(of identity: ObvCryptoIdentity) { + guard let delegateManager = delegateManager else { + let log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) + os_log("🏓 The Delegate Manager is not set", log: log, type: .fault) + assertionFailure() + return + } + guard let infos = webSocketInfosForIdentity[identity] as? (deviceUid: UID, token: Data, webSocketServerURL: URL) else { + + if webSocketInfosForIdentity[identity]?.token == nil { + Task.detached { [weak self] in + do { + let (serverSessionToken, _) = try await delegateManager.networkFetchFlowDelegate.getValidServerSessionToken(for: identity, currentInvalidToken: nil, flowId: FlowIdentifier()) + await self?.setServerSessionToken(to: serverSessionToken, for: identity) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + return } @@ -481,17 +510,25 @@ extension WebSocketCoordinator: WebSocketDelegate { disconnectFromWebSocketServerURL(webSocketServerURL) case .invalidServerSession: // Remove the server token from the infos - var identityRequiringNewToken: ObvCryptoIdentity? + var requiringNewToken = [(ownedCryptoId: ObvCryptoIdentity, currentInvalidToken: Data)]() for (identity, infos) in webSocketInfosForIdentity { - if infos.webSocketServerURL == webSocketServerURL { + if infos.webSocketServerURL == webSocketServerURL, let token = infos.token { + requiringNewToken.append((identity, token)) webSocketInfosForIdentity[identity] = (infos.deviceUid, nil, infos.webSocketServerURL) - identityRequiringNewToken = identity } } // As for a new server session token - if let identity = identityRequiringNewToken { + for (identity, token) in requiringNewToken { let flowId = FlowIdentifier() - try delegateManager?.networkFetchFlowDelegate.serverSessionRequired(for: identity, flowId: flowId) + let log = self.log + Task.detached { [weak self] in + do { + _ = try await self?.delegateManager?.networkFetchFlowDelegate.getValidServerSessionToken(for: identity, currentInvalidToken: token, flowId: flowId) + } catch { + os_log("Call to getValidServerSessionToken did fail", log: log, type: .fault) + assertionFailure() + } + } } disconnectFromWebSocketServerURL(webSocketServerURL) case .unknownError: @@ -512,19 +549,25 @@ extension WebSocketCoordinator: WebSocketDelegate { } } } else if let pushTopicMessage = try? PushTopicMessage(string: string) { - os_log("🏓 The server sent a keycloak topic message: %{public}@", log: log, type: .info, pushTopicMessage.topic) + os_log("🫸🏓 The server sent a keycloak topic message: %{public}@", log: log, type: .info, pushTopicMessage.topic) assert(delegateManager?.notificationDelegate != nil) if let notificationDelegate = delegateManager?.notificationDelegate { ObvNetworkFetchNotificationNew.pushTopicReceivedViaWebsocket(pushTopic: pushTopicMessage.topic) .postOnBackgroundQueue(within: notificationDelegate) } } else if let targetedKeycloakPushNotification = try? KeycloakTargetedPushNotification(string: string) { - os_log("🏓 The server sent a targeted keycloak push notification for identity: %{public}@", log: log, type: .info, targetedKeycloakPushNotification.identity.debugDescription) + os_log("🫸🏓 The server sent a targeted keycloak push notification for identity: %{public}@", log: log, type: .info, targetedKeycloakPushNotification.identity.debugDescription) assert(delegateManager?.notificationDelegate != nil) if let notificationDelegate = delegateManager?.notificationDelegate { ObvNetworkFetchNotificationNew.keycloakTargetedPushNotificationReceivedViaWebsocket(ownedIdentity: targetedKeycloakPushNotification.identity) .postOnBackgroundQueue(within: notificationDelegate) } + } else if let ownedDeviceMessage = try? OwnedDevicesMessage(string: string) { + os_log("🏓 The server sent an OwnedDevicesMessage for identity: %{public}@", log: log, type: .info, ownedDeviceMessage.identity.debugDescription) + if let notificationDelegate = delegateManager?.notificationDelegate { + ObvNetworkFetchNotificationNew.ownedDevicesMessageReceivedViaWebsocket(ownedIdentity: ownedDeviceMessage.identity) + .postOnBackgroundQueue(within: notificationDelegate) + } } } @@ -724,7 +767,7 @@ extension WebSocketCoordinator { pingRunningWebSocketsTimer = nil } - + /// This method executes a ping test for the web scoket task passed as a parameter. /// /// A ping test consists in sending a ping to the task. If the corresponding pong takes too much time to come back, @@ -736,6 +779,7 @@ extension WebSocketCoordinator { os_log("🏓 Could not determine the server URL of the web socket on which we were asked to perform a ping test.", log: log, type: .error) return } + let timerUUID = UUID() let disconnectTimer = Timer(timeInterval: maxTimeIntervalAllowedForPingTest, repeats: false) { [weak self] timer in guard timer.isValid else { return } os_log("🏓 The disconnect timer fired, we disconnect the corresponding web socket task.", log: log, type: .error) @@ -743,15 +787,26 @@ extension WebSocketCoordinator { await self?.disconnectFromWebSocketServerURL(webSocketServerURL) } } + disconnectTimerForUUID[timerUUID] = disconnectTimer RunLoop.main.add(disconnectTimer, forMode: .common) - do { - try await webSocketTask.sendPing() + + webSocketTask.sendPing { [weak self] error in + if let error { + os_log("🏓 Ping failed with error: %{public}@. We disconnect the web socket task.", log: log, type: .error, error.localizedDescription) + Task { [weak self] in await self?.disconnectFromWebSocketServerURL(webSocketServerURL) } + return + } + // No error os_log("🏓 One pong received", log: log, type: .info) - disconnectTimer.invalidate() - } catch { - os_log("🏓 Ping failed with error: %{public}@. We disconnect the web socket task.", log: log, type: .error, error.localizedDescription) - disconnectFromWebSocketServerURL(webSocketServerURL) + Task { [weak self] in await self?.invalidateTimerWithUUID(timerUUID) } } + + } + + + private func invalidateTimerWithUUID(_ timerUUID: UUID) { + guard let timer = disconnectTimerForUUID.removeValue(forKey: timerUUID) else { return } + timer.invalidate() } } @@ -1101,14 +1156,10 @@ fileprivate struct KeycloakTargetedPushNotification: Decodable, ObvErrorMaker { } let identityAsString = try values.decode(String.self, forKey: .identity) guard let identityAsData = Data(base64Encoded: identityAsString) else { - let message = "Could not parse the received identity" - let userInfo = [NSLocalizedFailureReasonErrorKey: message] - throw NSError(domain: KeycloakTargetedPushNotification.errorDomain, code: 0, userInfo: userInfo) + throw Self.makeError(message: "Could not parse the received identity") } guard let identity = ObvCryptoIdentity(from: identityAsData) else { - let message = "Could not parse the received JSON" - let userInfo = [NSLocalizedFailureReasonErrorKey: message] - throw NSError(domain: KeycloakTargetedPushNotification.errorDomain, code: 0, userInfo: userInfo) + throw Self.makeError(message: "Could not parse the received JSON") } self.identity = identity } @@ -1122,34 +1173,36 @@ fileprivate struct KeycloakTargetedPushNotification: Decodable, ObvErrorMaker { } +fileprivate struct OwnedDevicesMessage: Decodable, ObvErrorMaker { -// MARK: - Extending URLSessionWebSocketTask to adopt async/await + static let errorDomain = "OwnedDevicesMessage" + let identity: ObvCryptoIdentity -fileprivate extension URLSessionWebSocketTask { - - func send(_ message: URLSessionWebSocketTask.Message) async throws { - try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in - send(message) { error in - if let error { - continuation.resume(throwing: error) - } else { - continuation.resume(returning: ()) - } - } - } + enum CodingKeys: String, CodingKey { + case action = "action" + case identity = "identity" } - - func sendPing() async throws { - return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in - sendPing { error in - if let error { - continuation.resume(throwing: error) - } else { - continuation.resume(returning: ()) - } - } + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let action = try values.decode(String.self, forKey: .action) + guard action == "ownedDevices" else { + throw Self.makeError(message: "Unexpected action. Expecting ownedDevices, got \(action)") + } + let identityAsString = try values.decode(String.self, forKey: .identity) + guard let identityAsData = Data(base64Encoded: identityAsString) else { + throw Self.makeError(message: "Could not parse the received identity") + } + guard let identity = ObvCryptoIdentity(from: identityAsData) else { + throw Self.makeError(message: "Could not parse the received JSON") } + self.identity = identity } - + + init(string: String) throws { + guard let data = string.data(using: .utf8) else { assertionFailure(); throw Self.makeError(message: "The received JSON is not UTF8 encoded") } + let decoder = JSONDecoder() + self = try decoder.decode(OwnedDevicesMessage.self, from: data) + } + } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/WellKnownCoordinator/WellKnownCoordinator.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/WellKnownCoordinator/WellKnownCoordinator.swift index d8e0d8d4..a4814d86 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/WellKnownCoordinator/WellKnownCoordinator.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/WellKnownCoordinator/WellKnownCoordinator.swift @@ -264,7 +264,9 @@ extension WellKnownCoordinator: WellKnownDownloadOperationDelegate { return } - delegateManager.networkFetchFlowDelegate.failedToQueryServerWellKnown(serverURL: server, flowId: flowId) + Task { + await delegateManager.networkFetchFlowDelegate.failedToQueryServerWellKnown(serverURL: server, flowId: flowId) + } } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxAttachment.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxAttachment.swift index 5ff86023..25137389 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxAttachment.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxAttachment.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -49,20 +49,6 @@ final class InboxAttachment: NSManagedObject, ObvManagedObject { // MARK: Internal constants private static let entityName = "InboxAttachment" - private static let attachmentNumberKey = "attachmentNumber" - private static let currentByteCountToDownloadKey = "currentByteCountToDownload" - private static let encodedAuthenticatedEncryptionKeyKey = "encodedAuthenticatedDecryptionKey" - private static let timestampOfDownloadRequestKey = "timestampOfDownloadRequest" - private static let timestampOfNextFetchAttemptKey = "timestampOfNextFetchAttempt" - private static let messageKey = "message" - private static let metadataKey = "metadata" - private static let encodedChunkRangesToDownloadKey = "encodedChunkRangesToDownload" - private static let rawStatusKey = "rawStatus" - private static let rawMessageIdOwnedIdentityKey = "rawMessageIdOwnedIdentity" - private static let rawMessageIdUidKey = "rawMessageIdUid" - private static let chunksKey = "chunks" - private static let sessionKey = "session" - private static let messageFromCryptoIdentityKey = [messageKey, InboxMessage.Predicate.Key.fromCryptoIdentityKey.rawValue].joined(separator: ".") enum Status: Int, CustomDebugStringConvertible { case paused = 0 @@ -97,14 +83,14 @@ final class InboxAttachment: NSManagedObject, ObvManagedObject { @NSManaged private(set) var attachmentNumber: Int private var key: AuthenticatedEncryptionKey? { get { - guard let encodedKeyData = kvoSafePrimitiveValue(forKey: InboxAttachment.encodedAuthenticatedEncryptionKeyKey) as? Data else { return nil } + guard let encodedKeyData = kvoSafePrimitiveValue(forKey: Predicate.Key.encodedAuthenticatedDecryptionKey.rawValue) as? Data else { return nil } let encodedKey = ObvEncoded(withRawData: encodedKeyData)! return try! AuthenticatedEncryptionKeyDecoder.decode(encodedKey) } set { if newValue != nil { let encodedKey = newValue!.obvEncode() - kvoSafeSetPrimitiveValue(encodedKey.rawData, forKey: InboxAttachment.encodedAuthenticatedEncryptionKeyKey) + kvoSafeSetPrimitiveValue(encodedKey.rawData, forKey: Predicate.Key.encodedAuthenticatedDecryptionKey.rawValue) } } } @@ -119,38 +105,38 @@ final class InboxAttachment: NSManagedObject, ObvManagedObject { private(set) var chunks: [InboxAttachmentChunk] { get { - guard let unsortedChunks = kvoSafePrimitiveValue(forKey: InboxAttachment.chunksKey) as? Set else { return [] } + guard let unsortedChunks = kvoSafePrimitiveValue(forKey: Predicate.Key.chunks.rawValue) as? Set else { return [] } let items: [InboxAttachmentChunk] = unsortedChunks.sorted(by: { $0.chunkNumber < $1.chunkNumber }) for item in items { item.obvContext = self.obvContext } return items } set { - kvoSafeSetPrimitiveValue(newValue, forKey: InboxAttachment.chunksKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.chunks.rawValue) } } // We do not expect the message to be nil, since cascade deleting a message delete its attachments var message: InboxMessage? { get { - let value = kvoSafePrimitiveValue(forKey: InboxAttachment.messageKey) as? InboxMessage + let value = kvoSafePrimitiveValue(forKey: Predicate.Key.message.rawValue) as? InboxMessage value?.obvContext = self.obvContext return value } set { guard let value = newValue else { assertionFailure(); return } self.messageId = value.messageId - kvoSafeSetPrimitiveValue(value, forKey: InboxAttachment.messageKey) + kvoSafeSetPrimitiveValue(value, forKey: Predicate.Key.message.rawValue) } } private(set) var session: InboxAttachmentSession? { get { - let item = kvoSafePrimitiveValue(forKey: InboxAttachment.sessionKey) as? InboxAttachmentSession + let item = kvoSafePrimitiveValue(forKey: Predicate.Key.session.rawValue) as? InboxAttachmentSession item?.obvContext = self.obvContext return item } set { - kvoSafeSetPrimitiveValue(newValue, forKey: InboxAttachment.sessionKey) + kvoSafeSetPrimitiveValue(newValue, forKey: Predicate.Key.session.rawValue) } } @@ -171,7 +157,7 @@ final class InboxAttachment: NSManagedObject, ObvManagedObject { func tryChangeStatusToDownloaded() throws { let allChunksAreDownloaded = chunks.allSatisfy({ $0.cleartextChunkWasWrittenToAttachmentFile }) - guard allChunksAreDownloaded else { throw InboxAttachment.makeError(message: "Tryingin to change status to downloaded but at least one chunk is not downloaded yet") } + guard allChunksAreDownloaded else { throw InboxAttachment.makeError(message: "Trying to change the status to downloaded but at least one chunk is not downloaded yet") } self.status = .downloaded } @@ -191,11 +177,11 @@ final class InboxAttachment: NSManagedObject, ObvManagedObject { } /// This identifier is expected to be non nil, unless the associated `InboxMessage` was deleted on another thread. - private(set) var messageId: MessageIdentifier? { + private(set) var messageId: ObvMessageIdentifier? { get { guard let rawMessageIdOwnedIdentity else { return nil } guard let rawMessageIdUid else { return nil } - return MessageIdentifier(rawOwnedCryptoIdentity: rawMessageIdOwnedIdentity, rawUid: rawMessageIdUid) + return ObvMessageIdentifier(rawOwnedCryptoIdentity: rawMessageIdOwnedIdentity, rawUid: rawMessageIdUid) } set { guard let newValue else { assertionFailure(); return } @@ -205,9 +191,9 @@ final class InboxAttachment: NSManagedObject, ObvManagedObject { } /// This identifier is expected to be non nil, unless the associated `InboxMessage` was deleted on another thread. - var attachmentId: AttachmentIdentifier? { + var attachmentId: ObvAttachmentIdentifier? { guard let messageId else { return nil } - return AttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) + return ObvAttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber) } func getURL(withinInbox inbox: URL) -> URL? { @@ -236,7 +222,7 @@ final class InboxAttachment: NSManagedObject, ObvManagedObject { throw Self.makeError(message: "Could not determine the InboxMessage identifier") } - let attachmentId = AttachmentIdentifier(messageId: inboxMessageId, attachmentNumber: attachmentNumber) + let attachmentId = ObvAttachmentIdentifier(messageId: inboxMessageId, attachmentNumber: attachmentNumber) guard try InboxAttachment.get(attachmentId: attachmentId, within: obvContext) == nil else { return nil } @@ -291,11 +277,16 @@ extension InboxAttachment { } } - private func changeStatus(to newStatus: Status) throws { - guard canTransistionToNewStatus(newStatus) else { + private func changeStatus(to newStatus: Status, force: Bool = false) throws { + guard newStatus != self.status else { return } + guard force || canTransistionToNewStatus(newStatus) else { throw InboxAttachment.makeError(message: "Cannot transition from \(status.debugDescription) to \(newStatus.debugDescription)") } - guard newStatus != self.status else { return } + if force && newStatus == .resumeRequested { + chunks.forEach { chunk in + chunk.resetDownload() + } + } self.status = newStatus } @@ -315,8 +306,8 @@ extension InboxAttachment { } } - func resumeDownload() throws { - try self.changeStatus(to: .resumeRequested) + func resumeDownload(force: Bool = false) throws { + try self.changeStatus(to: .resumeRequested, force: force) } @@ -325,18 +316,22 @@ extension InboxAttachment { } - func deleteDownload(fromInbox inbox: URL) throws { + func deleteDownload(fromInbox inbox: URL, within obvContext: ObvContext) throws { + guard self.managedObjectContext == obvContext.context else { assertionFailure(); throw Self.makeError(message: "Unexpected context") } guard let url = getURL(withinInbox: inbox) else { throw InboxAttachment.makeError(message: "Cannot get attachment URL") } try changeStatus(to: .markedForDeletion) // This cannot fail for chunk in chunks { - try chunk.resetDownload() + chunk.resetDownload() self.obvContext?.delete(chunk) } - if FileManager.default.fileExists(atPath: url.path) { - do { - try FileManager.default.removeItem(at: url) - } catch let error { - throw InternalError.couldNotDeleteAttachmentFile(atUrl: url, error: error) + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + if FileManager.default.fileExists(atPath: url.path) { + do { + try FileManager.default.removeItem(at: url) + } catch let error { + assertionFailure(error.localizedDescription) + } } } } @@ -482,18 +477,79 @@ extension InboxAttachment { extension InboxAttachment { + struct Predicate { + enum Key: String { + // Attributes + case attachmentNumber = "attachmentNumber" + case encodedAuthenticatedDecryptionKey = "encodedAuthenticatedDecryptionKey" + case expectedChunkLength = "expectedChunkLength" + case initialByteCountToDownload = "initialByteCountToDownload" + case metadata = "metadata" + case rawMessageIdOwnedIdentity = "rawMessageIdOwnedIdentity" + case rawMessageIdUid = "rawMessageIdUid" + case rawStatus = "rawStatus" + // Relationships + case chunks = "chunks" + case message = "message" + case session = "session" + } + private static func withMessageIdOwnedIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity) -> NSPredicate { + NSPredicate(Key.rawMessageIdOwnedIdentity, EqualToData: ownedCryptoIdentity.getIdentity()) + } + private static func withMessageIdUID(_ messageUID: UID) -> NSPredicate { + NSPredicate(Key.rawMessageIdUid, EqualToData: messageUID.raw) + } + private static func withAttachmentNumber(_ attachmentNumber: Int) -> NSPredicate { + NSPredicate(Key.attachmentNumber, EqualToInt: attachmentNumber) + } + private static func withMessageIdentifier(_ messageId: ObvMessageIdentifier) -> NSPredicate { + NSCompoundPredicate(andPredicateWithSubpredicates: [ + withMessageIdUID(messageId.uid), + withMessageIdOwnedIdentity(messageId.ownedCryptoIdentity), + ]) + } + fileprivate static func withAttachmentIdentifier(_ attachmentId: ObvAttachmentIdentifier) -> NSPredicate { + NSCompoundPredicate(andPredicateWithSubpredicates: [ + withMessageIdentifier(attachmentId.messageId), + withAttachmentNumber(attachmentId.attachmentNumber), + ]) + } + fileprivate static var withNonNilMessage: NSPredicate { + NSPredicate(withNonNilValueForKey: Key.message) + } + fileprivate static var withNilMessage: NSPredicate { + NSPredicate(withNilValueForKey: Key.message) + } + fileprivate static var withNilSession: NSPredicate { + NSPredicate(withNilValueForKey: Key.session) + } + fileprivate static var withNonNilEncodedAuthenticatedDecryptionKey: NSPredicate { + NSPredicate(withNonNilValueForKey: Key.encodedAuthenticatedDecryptionKey) + } + fileprivate static var withNonNilMetadata: NSPredicate { + NSPredicate(withNonNilValueForKey: Key.metadata) + } + fileprivate static var withNonNilMessageFromCryptoIdentity: NSPredicate { + let messageFromCryptoIdentityKey = [Key.message.rawValue, InboxMessage.Predicate.Key.fromCryptoIdentityKey.rawValue].joined(separator: ".") + return NSPredicate(withNonNilValueForRawKey: messageFromCryptoIdentityKey) + + } + fileprivate static func withStatus(_ status: Status) -> NSPredicate { + NSPredicate(Key.rawStatus, EqualToInt: status.rawValue) + } + //private static let messageFromCryptoIdentityKey = [messageKey, InboxMessage.Predicate.Key.fromCryptoIdentityKey.rawValue].joined(separator: ".") + } + + @nonobjc class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: InboxAttachment.entityName) } - static func get(attachmentId: AttachmentIdentifier, within obvContext: ObvContext) throws -> InboxAttachment? { + static func get(attachmentId: ObvAttachmentIdentifier, within obvContext: ObvContext) throws -> InboxAttachment? { let request: NSFetchRequest = InboxAttachment.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %d", - rawMessageIdOwnedIdentityKey, attachmentId.messageId.ownedCryptoIdentity.getIdentity() as NSData, - rawMessageIdUidKey, attachmentId.messageId.uid.raw as NSData, - attachmentNumberKey, attachmentId.attachmentNumber) - request.relationshipKeyPathsForPrefetching = [InboxAttachment.rawStatusKey] + request.predicate = Predicate.withAttachmentIdentifier(attachmentId) + request.relationshipKeyPathsForPrefetching = [Predicate.Key.rawStatus.rawValue] let item = (try obvContext.fetch(request)).first return item } @@ -501,14 +557,15 @@ extension InboxAttachment { static func getAllDownloadableWithoutSession(within obvContext: ObvContext) throws -> [InboxAttachment] { let request: NSFetchRequest = InboxAttachment.fetchRequest() - - request.predicate = NSPredicate(format: "%K != NIL AND %K == NIL AND %K != NIL AND %K != NIL AND %K != NIL AND %K == %d", - messageKey, - sessionKey, - encodedAuthenticatedEncryptionKeyKey, - metadataKey, - messageFromCryptoIdentityKey, - rawStatusKey, Status.resumeRequested.rawValue) + + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withNilSession, + Predicate.withNonNilMessage, + Predicate.withNonNilEncodedAuthenticatedDecryptionKey, + Predicate.withNonNilMetadata, + Predicate.withNonNilMessageFromCryptoIdentity, + Predicate.withStatus(.resumeRequested), + ]) let items = try obvContext.fetch(request) .filter { (attachment) -> Bool in let allChunksHaveSignedURLs = attachment.chunks.allSatisfy({ $0.signedURL != nil }) @@ -518,27 +575,12 @@ extension InboxAttachment { return items } - static func getAllNotResumed(within obvContext: ObvContext) throws -> [InboxAttachment] { - let request: NSFetchRequest = InboxAttachment.fetchRequest() - request.predicate = NSPredicate(format: "%K != %d", rawStatusKey, Status.resumeRequested.rawValue) - request.relationshipKeyPathsForPrefetching = [InboxAttachment.rawStatusKey] - return try obvContext.fetch(request) - } - - static func getAllMarkedForDeletion(within obvContext: ObvContext) throws -> [InboxAttachment] { - let request: NSFetchRequest = InboxAttachment.fetchRequest() - request.predicate = NSPredicate(format: "%K == %d", rawStatusKey, Status.markedForDeletion.rawValue) - request.relationshipKeyPathsForPrefetching = [InboxAttachment.rawStatusKey] - return try obvContext.fetch(request) - } - - static func deleteAllOrphaned(within obvContext: ObvContext) throws { let fetch = NSFetchRequest(entityName: InboxAttachment.entityName) - fetch.predicate = NSPredicate(format: "%K == NIL", messageKey) + fetch.predicate = Predicate.withNilMessage let request = NSBatchDeleteRequest(fetchRequest: fetch) _ = try obvContext.execute(request) } - + } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxAttachmentChunk.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxAttachmentChunk.swift index ed3aa74e..a83fa4da 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxAttachmentChunk.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxAttachmentChunk.swift @@ -71,11 +71,11 @@ final class InboxAttachmentChunk: NSManagedObject, ObvManagedObject { } /// This identifier is expected to be non nil, unless this `InboxAttachmentChunk` was deleted on another thread. - private(set) var messageId: MessageIdentifier? { + private(set) var messageId: ObvMessageIdentifier? { get { guard let rawMessageIdOwnedIdentity = self.rawMessageIdOwnedIdentity else { return nil } guard let rawMessageIdUid = self.rawMessageIdUid else { return nil } - return MessageIdentifier(rawOwnedCryptoIdentity: rawMessageIdOwnedIdentity, rawUid: rawMessageIdUid) + return ObvMessageIdentifier(rawOwnedCryptoIdentity: rawMessageIdOwnedIdentity, rawUid: rawMessageIdUid) } set { guard let newValue else { assertionFailure("We should not be setting a nil value"); return } @@ -85,10 +85,10 @@ final class InboxAttachmentChunk: NSManagedObject, ObvManagedObject { } /// This identifier is expected to be non nil, unless this `InboxAttachmentChunk` was deleted on another thread. - private(set) var attachmentId: AttachmentIdentifier? { + private(set) var attachmentId: ObvAttachmentIdentifier? { get { guard let messageId = self.messageId else { return nil } - return AttachmentIdentifier(messageId: messageId, attachmentNumber: self.attachmentNumber) + return ObvAttachmentIdentifier(messageId: messageId, attachmentNumber: self.attachmentNumber) } set { guard let newValue else { assertionFailure("We should not be setting a nil value"); return } @@ -120,7 +120,8 @@ final class InboxAttachmentChunk: NSManagedObject, ObvManagedObject { extension InboxAttachmentChunk { - func resetDownload() throws { + func resetDownload() { + guard self.cleartextChunkWasWrittenToAttachmentFile else { return } self.cleartextChunkWasWrittenToAttachmentFile = false } @@ -162,7 +163,7 @@ extension InboxAttachmentChunk { _ = try obvContext.execute(request) } - static func getAllMissingAttachmentChunks(ofAttachmentId attachmentId: AttachmentIdentifier, within obvContext: ObvContext) throws -> [InboxAttachmentChunk] { + static func getAllMissingAttachmentChunks(ofAttachmentId attachmentId: ObvAttachmentIdentifier, within obvContext: ObvContext) throws -> [InboxAttachmentChunk] { let request: NSFetchRequest = InboxAttachmentChunk.fetchRequest() request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %d AND %K == FALSE", rawMessageIdOwnedIdentityKey, attachmentId.messageId.ownedCryptoIdentity.getIdentity() as NSData, diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxMessage.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxMessage.swift index 872b741d..e2b4b832 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxMessage.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/InboxMessage.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -81,7 +81,7 @@ final class InboxMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { } } - var attachmentIds: [AttachmentIdentifier] { + var attachmentIds: [ObvAttachmentIdentifier] { return attachments.compactMap { $0.attachmentId } } @@ -100,11 +100,11 @@ final class InboxMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { } /// This identifier is expected to be non nil, unless this `InboxMessage` was deleted on another thread. - private(set) var messageId: MessageIdentifier? { + private(set) var messageId: ObvMessageIdentifier? { get { guard let rawMessageIdOwnedIdentity = self.rawMessageIdOwnedIdentity else { return nil } guard let rawMessageIdUid = self.rawMessageIdUid else { return nil } - return MessageIdentifier(rawOwnedCryptoIdentity: rawMessageIdOwnedIdentity, rawUid: rawMessageIdUid) + return ObvMessageIdentifier(rawOwnedCryptoIdentity: rawMessageIdOwnedIdentity, rawUid: rawMessageIdUid) } set { guard let newValue else { assertionFailure("We should not be setting a nil value"); return } @@ -130,14 +130,30 @@ final class InboxMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { /// We expect to return a non-nil URL, unless this `InboxMessage` was deleted on another thread. func getAttachmentDirectory(withinInbox inbox: URL) -> URL? { guard let messageId else { return nil } - let sha256 = ObvCryptoSuite.sharedInstance.hashFunctionSha256() - let directoryName = sha256.hash(messageId.rawValue).hexString() + // Return a legacy value if appropriate + if let url = Self.getLegacyAttachmentDirectoryIfItExistsOnDisk(withinInbox: inbox, messageId: messageId) { + return url + } + // Since we did not find any file at the legacy URL, we compute an appropriate, deterministic, URL. + let directoryName = messageId.directoryNameForMessageAttachments return inbox.appendingPathComponent(directoryName, isDirectory: true) } + + private static func getLegacyAttachmentDirectoryIfItExistsOnDisk(withinInbox inbox: URL, messageId: ObvMessageIdentifier) -> URL? { + let directoryNames = messageId.legacyDirectoryNamesForMessageAttachments + for directoryName in directoryNames { + let url = inbox.appendingPathComponent(directoryName, isDirectory: true) + if FileManager.default.fileExists(atPath: url.path) { + return url + } + } + return nil + } + // MARK: - Initializer - convenience init(messageId: MessageIdentifier, encryptedContent: EncryptedData, hasEncryptedExtendedMessagePayload: Bool, wrappedKey: EncryptedData, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, within obvContext: ObvContext) throws { + convenience init(messageId: ObvMessageIdentifier, encryptedContent: EncryptedData, hasEncryptedExtendedMessagePayload: Bool, wrappedKey: EncryptedData, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, within obvContext: ObvContext) throws { guard !Self.thisMessageWasRecentlyDeleted(messageId: messageId) else { throw InternalError.tryingToInsertAMessageThatWasAlreadyDeleted @@ -167,7 +183,7 @@ final class InboxMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { /// We keep in memory a list of all messages that were "recently" deleted. This prevents the re-creation of a message that we would list from the server and delete at the same time. /// Every 10 minutes or so, we remove old entries. - private static var _messagesRecentlyDeleted = [MessageIdentifier: Date]() + private static var _messagesRecentlyDeleted = [ObvMessageIdentifier: Date]() /// This queue allows to synchronise access to `_messagesRecentlyDeleted` private static var messagesRecentlyDeletedQueue = DispatchQueue(label: "MessagesRecentlyDeletedQueue", attributes: .concurrent) @@ -190,7 +206,7 @@ final class InboxMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { /// Returns `true` iff we recently deleted a message with the given message identifier. - private static func thisMessageWasRecentlyDeleted(messageId: MessageIdentifier) -> Bool { + private static func thisMessageWasRecentlyDeleted(messageId: ObvMessageIdentifier) -> Bool { removeOldEntriesFromMessagesRecentlyDeletedIfAppropriate() var result = false messagesRecentlyDeletedQueue.sync { @@ -200,7 +216,7 @@ final class InboxMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { } - private static func trackRecentlyDeletedMessage(messageId: MessageIdentifier) { + private static func trackRecentlyDeletedMessage(messageId: ObvMessageIdentifier) { messagesRecentlyDeletedQueue.async(flags: .barrier) { _messagesRecentlyDeleted[messageId] = Date() } @@ -313,7 +329,7 @@ extension InboxMessage { static func withMessageIdUid(_ uid: UID) -> NSPredicate { NSPredicate(Key.rawMessageIdUidKey, EqualToData: uid.raw) } - static func withMessageIdentifier(_ messageId: MessageIdentifier) -> NSPredicate { + static func withMessageIdentifier(_ messageId: ObvMessageIdentifier) -> NSPredicate { NSCompoundPredicate(andPredicateWithSubpredicates: [ withMessageIdOwnedCryptoId(messageId.ownedCryptoIdentity), withMessageIdUid(messageId.uid), @@ -369,7 +385,7 @@ extension InboxMessage { } - static func get(messageId: MessageIdentifier, within obvContext: ObvContext) throws -> InboxMessage? { + static func get(messageId: ObvMessageIdentifier, within obvContext: ObvContext) throws -> InboxMessage? { let request: NSFetchRequest = InboxMessage.fetchRequest() request.predicate = Predicate.withMessageIdentifier(messageId) request.fetchLimit = 1 diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/PendingDeleteFromServer.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/PendingDeleteFromServer.swift index 46aec237..3c717399 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/PendingDeleteFromServer.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/PendingDeleteFromServer.swift @@ -40,11 +40,11 @@ final class PendingDeleteFromServer: NSManagedObject, ObvManagedObject { // MARK: Other variables /// This identifier is expected to be non nil, unless this `PendingDeleteFromServer` was deleted on another thread. - private(set) var messageId: MessageIdentifier? { + private(set) var messageId: ObvMessageIdentifier? { get { guard let rawMessageIdOwnedIdentity = self.rawMessageIdOwnedIdentity else { return nil } guard let rawMessageIdUid = self.rawMessageIdUid else { return nil } - return MessageIdentifier(rawOwnedCryptoIdentity: rawMessageIdOwnedIdentity, rawUid: rawMessageIdUid) + return ObvMessageIdentifier(rawOwnedCryptoIdentity: rawMessageIdOwnedIdentity, rawUid: rawMessageIdUid) } set { guard let newValue else { assertionFailure("We should not be setting a nil value"); return } @@ -57,7 +57,7 @@ final class PendingDeleteFromServer: NSManagedObject, ObvManagedObject { // MARK: - Initializer - convenience init(messageId: MessageIdentifier, within obvContext: ObvContext) { + convenience init(messageId: ObvMessageIdentifier, within obvContext: ObvContext) { let entityDescription = NSEntityDescription.entity(forEntityName: PendingDeleteFromServer.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) self.messageId = messageId @@ -81,7 +81,7 @@ extension PendingDeleteFromServer { static func withMessageIdUid(_ messageIdUid: UID) -> NSPredicate { NSPredicate(Key.rawMessageIdUid, EqualToData: messageIdUid.raw) } - static func withMessageId(_ messageId: MessageIdentifier) -> NSPredicate { + static func withMessageId(_ messageId: ObvMessageIdentifier) -> NSPredicate { NSCompoundPredicate(andPredicateWithSubpredicates: [ withOwnedCryptoIdentity(messageId.ownedCryptoIdentity), withMessageIdUid(messageId.uid), @@ -93,7 +93,7 @@ extension PendingDeleteFromServer { return NSFetchRequest(entityName: PendingDeleteFromServer.entityName) } - static func get(messageId: MessageIdentifier, within obvContext: ObvContext) throws -> PendingDeleteFromServer? { + static func get(messageId: ObvMessageIdentifier, within obvContext: ObvContext) throws -> PendingDeleteFromServer? { let request: NSFetchRequest = PendingDeleteFromServer.fetchRequest() request.predicate = Predicate.withMessageId(messageId) request.fetchLimit = 1 diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/PendingServerQuery.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/PendingServerQuery.swift index 0aa6e25d..15aafa37 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/PendingServerQuery.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/PendingServerQuery.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,61 +26,66 @@ import ObvCrypto import ObvTypes import OlvidUtils -@objc(PendingServerQuery) -class PendingServerQuery: NSManagedObject, ObvManagedObject, ObvErrorMaker { - // MARK: Internal constants +@objc(PendingServerQuery) +final class PendingServerQuery: NSManagedObject, ObvManagedObject { private static let entityName = "PendingServerQuery" - static let errorDomain = "PendingServerQuery" - private static let encodedElementsKey = "encodedElements" - private static let encodedQueryTypeKey = "encodedQueryType" - private static let encodedResponseTypeKey = "encodedResponseType" // MARK: Attributes - + + @NSManaged private(set) var isWebSocket: Bool + @NSManaged private var rawEncodedElements: Data + @NSManaged private var rawEncodedQueryType: Data + @NSManaged private var rawEncodedResponseType: Data? + @NSManaged private var rawOwnedIdentity: Data + + + // MARK: Accessors + private(set) var encodedElements: ObvEncoded { - get { - let rawData = kvoSafePrimitiveValue(forKey: PendingServerQuery.encodedElementsKey) as! Data - return ObvEncoded(withRawData: rawData)! - } - set { - kvoSafeSetPrimitiveValue(newValue.rawData, forKey: PendingServerQuery.encodedElementsKey) - } + get { ObvEncoded(withRawData: rawEncodedElements)! } + set { self.rawEncodedElements = newValue.rawData } } + + private(set) var queryType: ServerQuery.QueryType { - get { - let rawData = kvoSafePrimitiveValue(forKey: PendingServerQuery.encodedQueryTypeKey) as! Data - let encodedQueryType = ObvEncoded(withRawData: rawData)! - return ServerQuery.QueryType(encodedQueryType)! - } - set { - kvoSafeSetPrimitiveValue(newValue.obvEncode().rawData, forKey: PendingServerQuery.encodedQueryTypeKey) - } + get { ServerQuery.QueryType(ObvEncoded(withRawData: rawEncodedQueryType)!)! } + set { self.rawEncodedQueryType = newValue.obvEncode().rawData } } + + var responseType: ServerResponse.ResponseType? { get { - let rawData = kvoSafePrimitiveValue(forKey: PendingServerQuery.encodedResponseTypeKey) as! Data? - if let rawData = rawData { - let encodedResponseType = ObvEncoded(withRawData: rawData)! - return ServerResponse.ResponseType(encodedResponseType) - } else { - return nil - } + guard let rawEncodedResponseType else { return nil } + guard let encodedResponseType = ObvEncoded(withRawData: rawEncodedResponseType), + let responseType = ServerResponse.ResponseType(encodedResponseType) else { assertionFailure(); return nil } + return responseType } set { - if let newValue = newValue { - kvoSafeSetPrimitiveValue(newValue.obvEncode().rawData, forKey: PendingServerQuery.encodedResponseTypeKey) + guard let newValue else { assertionFailure("We do not expect to set a nil value"); return } + self.rawEncodedResponseType = newValue.obvEncode().rawData + } + } + + + var ownedIdentity: ObvCryptoIdentity { + get throws { + guard let ownedCryptoIdentity = ObvCryptoIdentity(from: rawOwnedIdentity) else { + if !isDeleted { assertionFailure() } + throw ObvError.couldNotParseOwnedIdentity } + return ownedCryptoIdentity } } - @NSManaged private(set) var ownedIdentity: ObvCryptoIdentity - + + // MARK: Other variables weak var delegateManager: ObvNetworkFetchDelegateManager? var obvContext: ObvContext? + // MARK: - Initializer convenience init(serverQuery: ServerQuery, delegateManager: ObvNetworkFetchDelegateManager, within obvContext: ObvContext) { @@ -90,8 +95,10 @@ class PendingServerQuery: NSManagedObject, ObvManagedObject, ObvErrorMaker { self.encodedElements = serverQuery.encodedElements self.queryType = serverQuery.queryType - self.ownedIdentity = serverQuery.ownedIdentity + self.rawOwnedIdentity = serverQuery.ownedIdentity.getIdentity() self.delegateManager = delegateManager + self.obvContext = obvContext + self.isWebSocket = serverQuery.isWebSocket } @@ -102,11 +109,12 @@ class PendingServerQuery: NSManagedObject, ObvManagedObject, ObvErrorMaker { extension PendingServerQuery { - func delete(flowId: FlowIdentifier) { - guard let obvContext = self.obvContext else { - assertionFailure("ObvContext is nil in PendingServerQuery") + func deletePendingServerQuery(within obvContext: ObvContext) { + guard self.managedObjectContext == obvContext.context else { + assertionFailure("Unexpected context") return } + self.obvContext = obvContext obvContext.delete(self) } @@ -118,44 +126,106 @@ extension PendingServerQuery { struct Predicate { enum Key: String { - case ownedIdentity = "ownedIdentity" + case isWebSocket = "isWebSocket" + case rawEncodedElements = "rawEncodedElements" + case rawEncodedQueryType = "rawEncodedQueryType" + case rawEncodedResponseType = "rawEncodedResponseType" + case rawOwnedIdentity = "rawOwnedIdentity" } static func withOwnedCryptoIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity) -> NSPredicate { - NSPredicate(format: "%K == %@", Key.ownedIdentity.rawValue, ownedCryptoIdentity) + NSPredicate(Key.rawOwnedIdentity, EqualToData: ownedCryptoIdentity.getIdentity()) + } + static func whereIsWebSocketIs(_ isWebSocket: Bool) -> NSPredicate { + NSPredicate(Key.isWebSocket, is: isWebSocket) + } + static func withObjectID(_ objectID: NSManagedObjectID) -> NSPredicate { + NSPredicate(withObjectID: objectID) } } - @nonobjc class func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: PendingServerQuery.entityName) + + @nonobjc static func fetchRequest() -> NSFetchRequest { + NSFetchRequest(entityName: PendingServerQuery.entityName) } - static func get(objectId: NSManagedObjectID, delegateManager: ObvNetworkFetchDelegateManager, within obvContext: ObvContext) throws -> PendingServerQuery { - guard let serverQuery = try obvContext.existingObject(with: objectId) as? PendingServerQuery else { - throw Self.makeError(message: "Could not find PendingServerQuery") - } - serverQuery.delegateManager = delegateManager - return serverQuery + + static func get(objectId: NSManagedObjectID, delegateManager: ObvNetworkFetchDelegateManager, within obvContext: ObvContext) throws -> PendingServerQuery? { + let request: NSFetchRequest = PendingServerQuery.fetchRequest() + request.predicate = Predicate.withObjectID(objectId) + request.fetchLimit = 1 + let item = try obvContext.fetch(request).first + item?.delegateManager = delegateManager + item?.obvContext = obvContext + return item } + - static func getAllServerQuery(for identity: ObvCryptoIdentity, delegateManager: ObvNetworkFetchDelegateManager, within obvContext: ObvContext) throws -> [PendingServerQuery] { + enum BoolOrAny { + case any + case bool(_ value: Bool) + } + + static func getAllServerQuery(for identity: ObvCryptoIdentity, isWebSocket: BoolOrAny, delegateManager: ObvNetworkFetchDelegateManager, within obvContext: ObvContext) throws -> [PendingServerQuery] { let request: NSFetchRequest = PendingServerQuery.fetchRequest() - request.predicate = Predicate.withOwnedCryptoIdentity(identity) - return try obvContext.fetch(request) + var subpredicates = [Predicate.withOwnedCryptoIdentity(identity)] + switch isWebSocket { + case .any: + break + case .bool(let isWebSocket): + subpredicates += [Predicate.whereIsWebSocketIs(isWebSocket)] + } + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: subpredicates) + let items = try obvContext.fetch(request) + items.forEach { item in + item.delegateManager = delegateManager + item.obvContext = obvContext + } + return items } + static func getAllServerQuery(delegateManager: ObvNetworkFetchDelegateManager, within obvContext: ObvContext) throws -> [PendingServerQuery] { let request: NSFetchRequest = PendingServerQuery.fetchRequest() request.fetchBatchSize = 1_000 - return try obvContext.fetch(request) + let items = try obvContext.fetch(request) + items.forEach { item in + item.delegateManager = delegateManager + item.obvContext = obvContext + } + return items } + static func deleteAllServerQuery(for identity: ObvCryptoIdentity, delegateManager: ObvNetworkFetchDelegateManager, within obvContext: ObvContext) throws { - let serverQueries = try getAllServerQuery(for: identity, delegateManager: delegateManager, within: obvContext) + let serverQueries = try getAllServerQuery(for: identity, isWebSocket: .any, delegateManager: delegateManager, within: obvContext) for serverQuery in serverQueries { - serverQuery.delete(flowId: obvContext.flowId) + serverQuery.deletePendingServerQuery(within: obvContext) } } + + static func deleteAllWebSocketServerQuery(within obvContext: ObvContext) throws { + let request: NSFetchRequest = PendingServerQuery.fetchRequest() + request.predicate = Predicate.whereIsWebSocketIs(true) + let items = try obvContext.fetch(request) + items.forEach { item in + item.deletePendingServerQuery(within: obvContext) + } + } + +} + + +// MARK: - Errors + +extension PendingServerQuery { + + enum ObvError: Error { + case theDelegateManagerIsNil + case couldNotFindPendingServerQuery + case couldNotParseOwnedIdentity + } + } // MARK: - Managing Change Events @@ -172,9 +242,9 @@ extension PendingServerQuery { } if isInserted, let flowId = self.obvContext?.flowId { - delegateManager.networkFetchFlowDelegate.newPendingServerQueryToProcessWithObjectId(self.objectID, flowId: flowId) - } else if isDeleted, let flowId = self.obvContext?.flowId { - delegateManager.networkFetchFlowDelegate.pendingServerQueryWasDeletedFromDatabase(objectId: self.objectID, flowId: flowId) + let objectID = self.objectID + let isWebSocket = self.isWebSocket + Task { await delegateManager.networkFetchFlowDelegate.newPendingServerQueryToProcessWithObjectId(objectID, isWebSocket: isWebSocket, flowId: flowId) } } } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/ServerPushNotification.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/ServerPushNotification.swift deleted file mode 100644 index 16c60b8f..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/ServerPushNotification.swift +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import ObvTypes -import ObvEncoder -import ObvCrypto -import ObvMetaManager -import OlvidUtils - - -@objc(ServerPushNotification) -final class ServerPushNotification: NSManagedObject, ObvErrorMaker { - - // MARK: Internal constants - - private static let entityName = "ServerPushNotification" - static let errorDomain = "ServerPushNotification" - - enum ServerRegistrationStatus { - case toRegister - case registering(urlSessionTaskIdentifier: Int) - case registered - - public enum ByteId: UInt8 { - case toRegister = 0 - case registering = 1 - case registered = 2 - } - - var byteId: ByteId { - switch self { - case .toRegister: return .toRegister - case .registering: return .registering - case .registered: return .registered - } - } - - } - - // MARK: Attributes - - @NSManaged private var creationDate: Date - @NSManaged private var kickOtherDevices: Bool // Part of ObvPushNotificationParameters - @NSManaged private var pushToken: Data? // Non nil for remote push notification type, always nil for the registerDeviceUid type. - @NSManaged private var rawCurrentDeviceUID: Data - @NSManaged private var rawKeycloakPushTopics: String? - @NSManaged private var rawMaskingUID: Data? // Non nil for remote push notification type, always nil for the registerDeviceUid type. - @NSManaged private var rawOwnedCryptoId: Data - @NSManaged private var rawPushNotificationByteId: Int // One byte, see ObvPushNotificationType - @NSManaged private var rawServerRegistrationStatus: Int - @NSManaged private var rawURLSessionTaskIdentifier: Int // Only makes sense when the ServerRegistrationStatus is "registering". It is set to -1 otherwise. - @NSManaged private var useMultiDevice: Bool // Part of ObvPushNotificationParameters - @NSManaged private var voipToken: Data? // Non nil for remote push notification type, always nil for the registerDeviceUid type. - - - var pushNotification: ObvPushNotificationType { - get throws { - guard let ownedCryptoId = ObvCryptoIdentity(from: rawOwnedCryptoId) else { - assertionFailure() - throw Self.makeError(message: "Unexpected rawOwnedCryptoId") - } - guard let currentDeviceUID = UID(uid: rawCurrentDeviceUID) else { - assertionFailure() - throw Self.makeError(message: "Unexpected rawCurrentDeviceUID") - } - guard let pushNotificationByteId = ObvPushNotificationType.ByteId(rawValue: UInt8(rawPushNotificationByteId)) else { - assertionFailure() - throw Self.makeError(message: "Unexpected rawPushNotificationByteId") - } - switch pushNotificationByteId { - case .remote: - guard let pushToken, let rawMaskingUID, let maskingUID = UID(uid: rawMaskingUID) else { - assertionFailure() - throw Self.makeError(message: "Could not reconstruct remote push notification") - } - let parameters = ObvPushNotificationParameters(kickOtherDevices: kickOtherDevices, useMultiDevice: useMultiDevice, keycloakPushTopics: keycloakPushTopics) - return .remote(ownedCryptoId: ownedCryptoId, currentDeviceUID: currentDeviceUID, pushToken: pushToken, voipToken: voipToken, maskingUID: maskingUID, parameters: parameters) - case .registerDeviceUid: - let parameters = ObvPushNotificationParameters(kickOtherDevices: kickOtherDevices, useMultiDevice: useMultiDevice, keycloakPushTopics: keycloakPushTopics) - return .registerDeviceUid(ownedCryptoId: ownedCryptoId, currentDeviceUID: currentDeviceUID, parameters: parameters) - } - } - } - - private var keycloakPushTopics: Set { - get { - guard let rawKeycloakPushTopics else { return Set() } - return Set(rawKeycloakPushTopics.split(separator: "|").map({ String($0) })) - } - set { - let newRawKeycloakPushTopics = newValue.sorted().joined(separator: "|") - if self.rawKeycloakPushTopics != newRawKeycloakPushTopics { - self.rawKeycloakPushTopics = newRawKeycloakPushTopics - } - } - } - - var serverRegistrationStatus: ServerRegistrationStatus { - get throws { - guard let byteId = ServerRegistrationStatus.ByteId(rawValue: UInt8(rawServerRegistrationStatus)) else { - assertionFailure() - throw Self.makeError(message: "Unexpected raw ServerRegistrationStatus.ByteId: \(rawServerRegistrationStatus)") - } - switch byteId { - case .toRegister: return .toRegister - case .registering: return .registering(urlSessionTaskIdentifier: rawURLSessionTaskIdentifier) - case .registered: return .registered - } - } - } - - // MARK: - Initializer - - private convenience init(pushNotificationType: ObvPushNotificationType, within context: NSManagedObjectContext) { - - let entityDescription = NSEntityDescription.entity(forEntityName: ServerPushNotification.entityName, in: context)! - self.init(entity: entityDescription, insertInto: context) - - self.creationDate = Date() - self.rawOwnedCryptoId = pushNotificationType.ownedCryptoId.getIdentity() - self.rawPushNotificationByteId = Int(pushNotificationType.byteId.rawValue) - self.rawServerRegistrationStatus = Int(ServerRegistrationStatus.toRegister.byteId.rawValue) - self.rawCurrentDeviceUID = pushNotificationType.currentDeviceUID.raw - self.rawURLSessionTaskIdentifier = -1 - - switch pushNotificationType { - case .remote(ownedCryptoId: _, currentDeviceUID: _, pushToken: let pushToken, voipToken: let voipToken, maskingUID: let maskingUID, parameters: let parameters): - self.kickOtherDevices = parameters.kickOtherDevices - self.keycloakPushTopics = parameters.keycloakPushTopics - self.pushToken = pushToken - self.rawMaskingUID = maskingUID.raw - self.useMultiDevice = parameters.useMultiDevice - self.voipToken = voipToken - case .registerDeviceUid(ownedCryptoId: _, currentDeviceUID: _, parameters: let parameters): - self.kickOtherDevices = parameters.kickOtherDevices - self.keycloakPushTopics = parameters.keycloakPushTopics - self.pushToken = nil - self.rawMaskingUID = nil - self.useMultiDevice = parameters.useMultiDevice - self.voipToken = nil - } - - } - - - static func createOrThrowIfOneAlreadyExists(pushNotificationType: ObvPushNotificationType, within context: NSManagedObjectContext) throws -> Self { - guard try ServerPushNotification.getServerPushNotificationOfType(pushNotificationType.byteId, ownedCryptoId: pushNotificationType.ownedCryptoId, within: context) == nil else { - assertionFailure() - throw Self.makeError(message: "An ServerPushNotification of type \(pushNotificationType.byteId.rawValue) already exists") - } - return Self.init(pushNotificationType: pushNotificationType, within: context) - } - - - func delete() throws { - guard let managedObjectContext else { - assertionFailure() - throw Self.makeError(message: "Could not find context") - } - managedObjectContext.delete(self) - } - - - func switchToServerRegistrationStatus(_ newServerRegistrationStatus: ServerRegistrationStatus) throws { - switch newServerRegistrationStatus { - case .toRegister: - if self.rawServerRegistrationStatus != ServerRegistrationStatus.ByteId.toRegister.rawValue { - self.rawServerRegistrationStatus = Int(ServerRegistrationStatus.ByteId.toRegister.rawValue) - } - if self.rawURLSessionTaskIdentifier != -1 { - self.rawURLSessionTaskIdentifier = -1 - } - case .registering(urlSessionTaskIdentifier: let urlSessionTaskIdentifier): - if self.rawServerRegistrationStatus != ServerRegistrationStatus.ByteId.registering.rawValue { - self.rawServerRegistrationStatus = Int(ServerRegistrationStatus.ByteId.registering.rawValue) - } - if self.rawURLSessionTaskIdentifier != urlSessionTaskIdentifier { - self.rawURLSessionTaskIdentifier = urlSessionTaskIdentifier - } - case .registered: - if self.rawServerRegistrationStatus != ServerRegistrationStatus.ByteId.registered.rawValue { - self.rawServerRegistrationStatus = Int(ServerRegistrationStatus.ByteId.registered.rawValue) - } - if self.rawURLSessionTaskIdentifier != -1 { - self.rawURLSessionTaskIdentifier = -1 - } - } - } - - func setKickOtherDevices(to newValue: Bool) { - if self.kickOtherDevices != newValue { - self.kickOtherDevices = newValue - } - } -} - - -// MARK: - Convenience DB getters - -extension ServerPushNotification { - - struct Predicate { - enum Key: String { - case creationDate = "creationDate" - case kickOtherDevices = "kickOtherDevices" - case pushToken = "pushToken" - case rawCurrentDeviceUID = "rawCurrentDeviceUID" - case rawKeycloakPushTopics = "rawKeycloakPushTopics" - case rawMaskingUID = "rawMaskingUID" - case rawOwnedCryptoId = "rawOwnedCryptoId" - case rawPushNotificationByteId = "rawPushNotificationByteId" - case rawServerRegistrationStatus = "rawServerRegistrationStatus" - case rawURLSessionTaskIdentifier = "rawURLSessionTaskIdentifier" - case useMultiDevice = "useMultiDevice" - case voipToken = "voipToken" - } - static func withOwnedCryptoId(_ ownedCryptoId: ObvCryptoIdentity) -> NSPredicate { - NSPredicate(Key.rawOwnedCryptoId, EqualToData: ownedCryptoId.getIdentity()) - } - static func withTypeByteId(_ typeByteId: ObvPushNotificationType.ByteId) -> NSPredicate { - NSPredicate(Key.rawPushNotificationByteId, EqualToInt: Int(typeByteId.rawValue)) - } - static func withServerRegistrationStatus(_ serverRegistrationStatus: ServerRegistrationStatus.ByteId) -> NSPredicate { - NSPredicate(Key.rawServerRegistrationStatus, EqualToInt: Int(serverRegistrationStatus.rawValue)) - } - static func withServerRegistrationStatusDistinctFrom(_ serverRegistrationStatus: ServerRegistrationStatus.ByteId) -> NSPredicate { - NSPredicate(Key.rawServerRegistrationStatus, DistinctFromInt: Int(serverRegistrationStatus.rawValue)) - } - static func withURLSessionTaskIdentifier(urlSessionTaskIdentifier: Int) -> NSPredicate { - NSPredicate(Key.rawURLSessionTaskIdentifier, EqualToInt: urlSessionTaskIdentifier) - } - } - - @nonobjc class func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: ServerPushNotification.entityName) - } - - - static func getServerPushNotificationOfType(_ typeByteId: ObvPushNotificationType.ByteId, ownedCryptoId: ObvCryptoIdentity, within context: NSManagedObjectContext) throws -> ServerPushNotification? { - let request: NSFetchRequest = ServerPushNotification.fetchRequest() - request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withOwnedCryptoId(ownedCryptoId), - Predicate.withTypeByteId(typeByteId), - ]) - request.fetchLimit = 1 - let item = try context.fetch(request).first - return item - } - - - static func getRegisteringAndCorrespondingToURLSessionTaskIdentifier(_ urlSessionTaskIdentifier: Int, within context: NSManagedObjectContext) throws -> ServerPushNotification? { - let request: NSFetchRequest = ServerPushNotification.fetchRequest() - request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withServerRegistrationStatus(.registering), - Predicate.withURLSessionTaskIdentifier(urlSessionTaskIdentifier: urlSessionTaskIdentifier), - ]) - request.fetchBatchSize = 100 - let items = try context.fetch(request) - assert(items.count < 2, "More than one registering item found for that url session task identifier, not expected") - return items.first - } - - - static func deleteAllServerPushNotificationForOwnedCryptoIdentity(_ ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws { - let request: NSFetchRequest = ServerPushNotification.fetchRequest() - request.predicate = Predicate.withOwnedCryptoId(ownedCryptoId) - let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) - deleteRequest.resultType = .resultTypeStatusOnly - _ = try obvContext.execute(deleteRequest) - } - - -// static func switchServerRegistrationStatusToToRegisterForAllServerPushNotification(within context: NSManagedObjectContext) throws { -// let request: NSFetchRequest = ServerPushNotification.fetchRequest() -// request.fetchBatchSize = 100 -// let items = try context.fetch(request) -// try items.forEach { item in -// try item.switchToServerRegistrationStatus(.toRegister) -// } -// } - - static func getAllServerPushNotification(within context: NSManagedObjectContext) throws -> Set { - let request: NSFetchRequest = ServerPushNotification.fetchRequest() - request.fetchBatchSize = 100 - let items = try context.fetch(request) - return Set(items) - } - -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/ServerSession.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/ServerSession.swift index 6c44cddc..d76d1ce7 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/ServerSession.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/CoreData/ServerSession.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,37 +23,104 @@ import os.log import ObvTypes import ObvCrypto import OlvidUtils +import ObvMetaManager @objc(ServerSession) -final class ServerSession: NSManagedObject, ObvManagedObject, ObvErrorMaker { - - // MARK: Internal constants +final class ServerSession: NSManagedObject, ObvErrorMaker { private static let entityName = "ServerSession" static let errorDomain = "ServerSession" - private static let challengeKey = "challenge" - private static let cryptoIdentityKey = "cryptoIdentity" - private static let responseKey = "response" - private static let tokenKey = "token" // MARK: Attributes - @NSManaged private(set) var cryptoIdentity: ObvCryptoIdentity - @NSManaged var nonce: Data? - @NSManaged private(set) var response: Data? - @NSManaged var token: Data? - + @NSManaged private var rawAPIKeyExpirationDate: Date? + @NSManaged private var rawAPIKeyStatus: NSNumber? + @NSManaged private var rawAPIPermissions: NSNumber? + @NSManaged private var rawOwnedCryptoId: Data + @NSManaged private(set) var token: Data? + // MARK: Other variables - - var obvContext: ObvContext? - + + var ownedCryptoIdentity: ObvCryptoIdentity { + get throws { + guard let cryptoIdentity = ObvCryptoIdentity(from: rawOwnedCryptoId) else { + throw Self.makeError(message: "Could not decode rawOwnedCryptoId") + } + return cryptoIdentity + } + } + + + private(set) var apiKeyExpirationDate: Date? { + get { self.rawAPIKeyExpirationDate } + set { + if self.rawAPIKeyExpirationDate != newValue { + self.rawAPIKeyExpirationDate = newValue + } + } + } + + + private(set) var apiKeyStatus: APIKeyStatus? { + get { + guard let rawAPIKeyStatus else { return nil } + guard let currentValue = APIKeyStatus(rawValue: Int(truncating: rawAPIKeyStatus)) else { assertionFailure(); return nil } + return currentValue + } + set { + guard let newValue else { + if self.rawAPIKeyStatus != nil { + self.rawAPIKeyStatus = nil + } + return + } + let newAPIKeyStatus = NSNumber(integerLiteral: newValue.rawValue) + if self.rawAPIKeyStatus != newAPIKeyStatus { + self.rawAPIKeyStatus = newAPIKeyStatus + } + } + } + + + private(set) var apiPermissions: APIPermissions? { + get { + guard let rawAPIPermissions else { return nil } + let currentValue = APIPermissions(rawValue: Int(truncating: rawAPIPermissions)) + return currentValue + } + set { + guard let newValue else { + if self.rawAPIPermissions != nil { + self.rawAPIPermissions = nil + } + return + } + let newAPIPermissions = NSNumber(integerLiteral: newValue.rawValue) + if self.rawAPIPermissions != newAPIPermissions { + self.rawAPIPermissions = newAPIPermissions + } + } + } + + var apiKeyElements: APIKeyElements? { + guard let apiKeyStatus, let apiPermissions else { return nil } + return .init( + status: apiKeyStatus, + permissions: apiPermissions, + expirationDate: apiKeyExpirationDate) + } + // MARK: - Initializer - convenience init(identity: ObvCryptoIdentity, within obvContext: ObvContext) { - let entityDescription = NSEntityDescription.entity(forEntityName: ServerSession.entityName, in: obvContext)! - self.init(entity: entityDescription, insertInto: obvContext) - self.cryptoIdentity = identity + private convenience init(identity: ObvCryptoIdentity, within context: NSManagedObjectContext) { + let entityDescription = NSEntityDescription.entity(forEntityName: ServerSession.entityName, in: context)! + self.init(entity: entityDescription, insertInto: context) + self.rawAPIKeyExpirationDate = nil + self.rawAPIKeyStatus = nil + self.rawAPIPermissions = nil + self.rawOwnedCryptoId = identity.getIdentity() + self.token = nil } } @@ -63,39 +130,28 @@ final class ServerSession: NSManagedObject, ObvManagedObject, ObvErrorMaker { extension ServerSession { - // This method sets the identity's server session token to None only if its current value is equal to the token value passed as a parameter. This is used in many operations: at the beginning of their execute, they keep a local copy of the token. If they cancel because the token they use is invalid, they call this method to clean the identity's session. This way of doing things allows to make sure that the operation does not clean a fresh token that would have been create while the operation was executing. - func deleteToken(ifEqualTo token: Data) { - if self.token != nil, self.token! == token { - self.token = nil + func resetSession() { + if token != nil { + token = nil } } - - static func getToken(within obvContext: ObvContext, forIdentity identity: ObvCryptoIdentity) throws -> Data? { - var token: Data? = nil - try obvContext.performAndWaitOrThrow { - let serverSession = try ServerSession.get(within: obvContext, withIdentity: identity) - token = serverSession?.token + + + func save(serverSessionToken: Data, apiKeyElements: APIKeyElements) { + if self.token != serverSessionToken { + self.token = serverSessionToken + } + if self.apiKeyStatus != apiKeyElements.status { + self.apiKeyStatus = apiKeyElements.status + } + if self.apiPermissions != apiKeyElements.permissions { + self.apiPermissions = apiKeyElements.permissions + } + if self.apiKeyExpirationDate != apiKeyElements.expirationDate { + self.apiKeyExpirationDate = apiKeyElements.expirationDate } - return token - } - - func resetSession() { - nonce = nil - response = nil - token = nil - } - - func store(response: Data, ifCurrentNonceIs serverNonce: Data) throws { - guard let localNonce = nonce else { throw Self.makeError(message: "No local nonce") } - guard serverNonce == localNonce else { throw Self.makeError(message: "server nonce is distinct from local nonce") } - self.response = response } - func store(token: Data, ifCurrentNonceIs serverNonce: Data) throws { - guard let localNonce = nonce else { throw Self.makeError(message: "No local nonce") } - guard serverNonce == localNonce else { throw Self.makeError(message: "server nonce is distinct from local nonce") } - self.token = token - } } @@ -103,51 +159,66 @@ extension ServerSession { extension ServerSession { + private struct Predicate { + fileprivate enum Key: String { + case rawAPIKeyExpirationDate = "rawAPIKeyExpirationDate" + case rawAPIKeyStatus = "rawAPIKeyStatus" + case rawAPIPermissions = "rawAPIPermissions" + case rawOwnedCryptoId = "rawOwnedCryptoId" + case token = "token" + } + static func withOwnedCryptoId(_ ownedCryptoId: ObvCryptoIdentity) -> NSPredicate { + NSPredicate(Key.rawOwnedCryptoId, EqualToData: ownedCryptoId.getIdentity()) + } + } + @nonobjc class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: ServerSession.entityName) } - class func get(within obvContext: ObvContext, withIdentity cryptoIdentity: ObvCryptoIdentity) throws -> ServerSession? { + + static func get(within context: NSManagedObjectContext, withIdentity cryptoIdentity: ObvCryptoIdentity) throws -> ServerSession? { let request: NSFetchRequest = ServerSession.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@", ServerSession.cryptoIdentityKey, cryptoIdentity) - let item = (try obvContext.fetch(request)).first + request.predicate = Predicate.withOwnedCryptoId(cryptoIdentity) + let item = (try context.fetch(request)).first return item } - class func getOrCreate(within obvContext: ObvContext, withIdentity identity: ObvCryptoIdentity) throws -> ServerSession { - if let serverSession = try get(within: obvContext, withIdentity: identity) { + + static func getOrCreate(within context: NSManagedObjectContext, withIdentity identity: ObvCryptoIdentity) throws -> ServerSession { + if let serverSession = try get(within: context, withIdentity: identity) { return serverSession } else { - return ServerSession(identity: identity, within: obvContext) + return ServerSession(identity: identity, within: context) } } - - static func delete(ifTokenIs token: Data, for identity: ObvCryptoIdentity, within obvContext: ObvContext) { + + + static func getAllServerSessions(within context: NSManagedObjectContext) throws -> [ServerSession] { let request: NSFetchRequest = ServerSession.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@", ServerSession.cryptoIdentityKey, identity) - if let item = (try? obvContext.fetch(request))?.first { - if item.token == token { - obvContext.delete(item) - } - } + request.fetchBatchSize = 100 + let items = try context.fetch(request) + return items } - static func deleteAllSessionsOfIdentity(_ identity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + + static func deleteAllSessionsOfIdentity(_ ownedCryptoId: ObvCryptoIdentity, within context: NSManagedObjectContext) throws { let request: NSFetchRequest = ServerSession.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@", ServerSession.cryptoIdentityKey, identity) - let items = try obvContext.fetch(request) + request.predicate = Predicate.withOwnedCryptoId(ownedCryptoId) + let items = try context.fetch(request) for item in items { - obvContext.delete(item) + context.delete(item) } } - static func getAllTokens(within obvContext: ObvContext) throws -> [(ownedCryptoId: ObvCryptoIdentity, token: Data)] { + + static func getAllTokens(within context: NSManagedObjectContext) throws -> [(ownedCryptoId: ObvCryptoIdentity, token: Data)] { let request: NSFetchRequest = ServerSession.fetchRequest() request.fetchBatchSize = 100 - let items = try obvContext.fetch(request) + let items = try context.fetch(request) return items.compactMap { item in guard let token = item.token else { return nil } - return (item.cryptoIdentity, token) + return try? (item.ownedCryptoIdentity, token) } } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/FailedAttemptsCounter.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/FailedAttemptsCounter.swift index d6b38383..5313530c 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/FailedAttemptsCounter.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/FailedAttemptsCounter.swift @@ -32,21 +32,23 @@ struct FailedAttemptsCounterManager { case sessionCreation(ownedIdentity: ObvCryptoIdentity) case registerPushNotification(ownedIdentity: ObvCryptoIdentity) case downloadMessagesAndListAttachments(ownedIdentity: ObvCryptoIdentity) - case downloadAttachment(attachmentId: AttachmentIdentifier) - case processPendingDeleteFromServer(messageId: MessageIdentifier) + case downloadAttachment(attachmentId: ObvAttachmentIdentifier) + case processPendingDeleteFromServer(messageId: ObvMessageIdentifier) case serverQuery(objectID: NSManagedObjectID) case serverUserData(input: ServerUserDataInput) case queryServerWellKnown(serverURL: URL) + case freeTrialQuery(ownedIdentity: ObvCryptoIdentity) } private var _downloadMessagesAndListAttachments = [ObvCryptoIdentity: Int]() private var _sessionCreation = [ObvCryptoIdentity: Int]() private var _registerPushNotification = [ObvCryptoIdentity: Int]() - private var _downloadAttachment = [AttachmentIdentifier: Int]() - private var _processPendingDeleteFromServer = [MessageIdentifier: Int]() + private var _downloadAttachment = [ObvAttachmentIdentifier: Int]() + private var _processPendingDeleteFromServer = [ObvMessageIdentifier: Int]() private var _serverQuery = [NSManagedObjectID: Int]() private var _serverUserData = [ServerUserDataInput: Int]() private var _queryServerWellKnown = [URL: Int]() + private var _freeTrialQuery = [ObvCryptoIdentity: Int]() private var count: Int = 0 @@ -62,7 +64,11 @@ struct FailedAttemptsCounterManager { case .sessionCreation(ownedIdentity: let identity): _sessionCreation[identity] = (_sessionCreation[identity] ?? 0) + increment localCounter = _sessionCreation[identity] ?? 0 - + + case .freeTrialQuery(ownedIdentity: let identity): + _freeTrialQuery[identity] = (_freeTrialQuery[identity] ?? 0) + increment + localCounter = _freeTrialQuery[identity] ?? 0 + case .registerPushNotification(ownedIdentity: let identity): _registerPushNotification[identity] = (_registerPushNotification[identity] ?? 0) + increment localCounter = _registerPushNotification[identity] ?? 0 @@ -102,6 +108,9 @@ struct FailedAttemptsCounterManager { case .sessionCreation(ownedIdentity: let identity): _sessionCreation.removeValue(forKey: identity) + case .freeTrialQuery(ownedIdentity: let identity): + _freeTrialQuery.removeValue(forKey: identity) + case .registerPushNotification(ownedIdentity: let identity): _registerPushNotification.removeValue(forKey: identity) @@ -126,6 +135,7 @@ struct FailedAttemptsCounterManager { mutating func resetAll() { queue.sync { + _freeTrialQuery.removeAll() _downloadMessagesAndListAttachments.removeAll() _sessionCreation.removeAll() _registerPushNotification.removeAll() diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/FetchRetryManager.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/FetchRetryManager.swift index 375a7415..4d4d8fb0 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/FetchRetryManager.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/FetchRetryManager.swift @@ -20,30 +20,55 @@ import Foundation import Network -struct FetchRetryManager { - - private var timers = [DispatchSourceTimer]() - private let privateQueue = DispatchQueue(label: "FetchRetryManager") +//struct FetchRetryManager { +// +// private var timers = [DispatchSourceTimer]() +// private let privateQueue = DispatchQueue(label: "FetchRetryManager") +// +// /// Execute the specified block in the future. +// /// - Parameters: +// /// - delay: A delay in milliseconds +// /// - block: The block to execute. +// mutating func executeWithDelay(_ delay: Int, block: @escaping () -> Void) { +// let timer = DispatchSource.makeTimerSource(flags: [], queue: privateQueue) +// timer.setEventHandler { +// block() +// } +// timers.append(timer) +// timer.schedule(deadline: .now() + .milliseconds(delay), repeating: .never) +// timer.resume() +// } +// +// +// mutating func executeAllWithNoDelay() { +// while let timer = timers.popLast() { +// timer.activate() +// } +// } +// +//} + - /// Execute the specified block in the future. - /// - Parameters: - /// - delay: A delay in milliseconds - /// - block: The block to execute. - mutating func executeWithDelay(_ delay: Int, block: @escaping () -> Void) { - let timer = DispatchSource.makeTimerSource(flags: [], queue: privateQueue) - timer.setEventHandler { - block() +actor FetchRetryManager { + + private var sleepTasks = [UUID: Task]() + + func waitForDelay(milliseconds: Int) async { + let uuid = UUID() + let task = Task { () -> Void in + do { try await Task.sleep(milliseconds: milliseconds) } catch {} } - timers.append(timer) - timer.schedule(deadline: .now() + .milliseconds(delay), repeating: .never) - timer.resume() + sleepTasks[uuid] = task + await task.value + _ = sleepTasks.removeValue(forKey: uuid) } - mutating func executeAllWithNoDelay() { - while let timer = timers.popLast() { - timer.activate() + func executeAllWithNoDelay() { + while let (_, task) = sleepTasks.popFirst() { + guard !task.isCancelled else { return } + task.cancel() } } - + } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DeleteMessageAndAttachmentsFromServerDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DeleteMessageAndAttachmentsFromServerDelegate.swift index 9ad4a37b..b89f0809 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DeleteMessageAndAttachmentsFromServerDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DeleteMessageAndAttachmentsFromServerDelegate.swift @@ -25,6 +25,6 @@ import OlvidUtils protocol DeleteMessageAndAttachmentsFromServerDelegate { - func processPendingDeleteFromServer(messageId: MessageIdentifier, flowId: FlowIdentifier) throws + func processPendingDeleteFromServer(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DownloadAttachmentChunksDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DownloadAttachmentChunksDelegate.swift index 26a81528..a5dcb331 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DownloadAttachmentChunksDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DownloadAttachmentChunksDelegate.swift @@ -25,12 +25,12 @@ import OlvidUtils protocol DownloadAttachmentChunksDelegate { func backgroundURLSessionIdentifierIsAppropriate(backgroundURLSessionIdentifier: String) -> Bool - func processAllAttachmentsOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) + func processAllAttachmentsOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) func resumeMissingAttachmentDownloads(flowId: FlowIdentifier) - func resumeAttachmentDownloadIfResumeIsRequested(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func resumeDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func pauseDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async -> [AttachmentIdentifier: Float] + func resumeAttachmentDownloadIfResumeIsRequested(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + func resumeDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, forceResume: Bool, flowId: FlowIdentifier) + func pauseDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async -> [ObvAttachmentIdentifier: Float] func processCompletionHandler(_: @escaping () -> Void, forHandlingEventsForBackgroundURLSessionWithIdentifier: String, withinFlowId: FlowIdentifier) func cleanExistingOutboxAttachmentSessions(flowId: FlowIdentifier) diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DownloadPrivateURLsForAttachmentChunksDownloadDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DownloadPrivateURLsForAttachmentChunksDownloadDelegate.swift index 1ec67774..23034b19 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DownloadPrivateURLsForAttachmentChunksDownloadDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/DownloadPrivateURLsForAttachmentChunksDownloadDelegate.swift @@ -25,6 +25,6 @@ import OlvidUtils protocol DownloadPrivateURLsForAttachmentChunksDownloadDelegate { - func downloadPrivateUrlsForAttachmentWithId(_ attachmentId: AttachmentIdentifier, withinFlowId flowId: FlowIdentifier) + func downloadPrivateUrlsForAttachmentWithId(_ attachmentId: ObvAttachmentIdentifier, withinFlowId flowId: FlowIdentifier) } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/FreeTrialQueryDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/FreeTrialQueryDelegate.swift index 80ec929d..ff87a1a7 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/FreeTrialQueryDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/FreeTrialQueryDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,10 +22,9 @@ import ObvCrypto import ObvTypes import OlvidUtils - protocol FreeTrialQueryDelegate: AnyObject { - func queryFreeTrial(for identity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier) - func processFreeTrialQueriesExpectingNewSession() - + func queryFreeTrial(for ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> Bool + func startFreeTrial(for ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements + } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/MessagesDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/MessagesDelegate.swift index b26f0b34..6a7166bb 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/MessagesDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/MessagesDelegate.swift @@ -27,8 +27,8 @@ import ObvServerInterface protocol MessagesDelegate { func downloadMessagesAndListAttachments(for: ObvCryptoIdentity, andDeviceUid: UID, flowId: FlowIdentifier) - func processMarkForDeletionForMessageAndAttachmentsAndCreatePendingDeleteFromServer(messageId: MessageIdentifier, flowId: FlowIdentifier) throws + func processMarkForDeletionForMessageAndAttachmentsAndCreatePendingDeleteFromServer(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws func saveMessageReceivedOnWebsocket(message: ObvServerDownloadMessagesAndListAttachmentsMethod.MessageAndAttachmentsOnServer, downloadTimestampFromServer: Date, ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) throws - func downloadExtendedMessagePayload(messageId: MessageIdentifier, flowId: FlowIdentifier) + func downloadExtendedMessagePayload(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/NetworkFetchFlowDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/NetworkFetchFlowDelegate.swift index 39184496..896c63cb 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/NetworkFetchFlowDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/NetworkFetchFlowDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,74 +30,59 @@ protocol NetworkFetchFlowDelegate { // MARK: - Session's Challenge/Response/Token related methods - func resetServerSession(for identity: ObvCryptoIdentity, within obvContext: ObvContext) throws - func serverSessionRequired(for: ObvCryptoIdentity, flowId: FlowIdentifier) throws - func serverSession(of: ObvCryptoIdentity, hasInvalidToken: Data, flowId: FlowIdentifier) throws - func getAndSolveChallengeWasNotNeeded(for: ObvCryptoIdentity, flowId: FlowIdentifier) - func failedToGetOrSolveChallenge(for: ObvCryptoIdentity, flowId: FlowIdentifier) - - func newChallengeResponse(for: ObvCryptoIdentity, flowId: FlowIdentifier) throws - func getTokenWasNotNeeded(for: ObvCryptoIdentity, flowId: FlowIdentifier) - func failedToGetToken(for: ObvCryptoIdentity, flowId: FlowIdentifier) - func newToken(_ token: Data, for: ObvCryptoIdentity, flowId: FlowIdentifier) - func newAPIKeyElementsForCurrentAPIKeyOf(_ ownedIdentity: ObvCryptoIdentity, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?, flowId: FlowIdentifier) - func newAPIKeyElementsForAPIKey(serverURL: URL, apiKey: UUID, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?, flowId: FlowIdentifier) - func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) - func apiKeyStatusQueryFailed(ownedIdentity: ObvCryptoIdentity, apiKey: UUID) - - func newFreeTrialAPIKeyForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) - func noMoreFreeTrialAPIKeyAvailableForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) - func freeTrialIsStillAvailableForOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) + func refreshAPIPermissions(of ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements + func getValidServerSessionToken(for ownedCryptoIdentity: ObvCryptoIdentity, currentInvalidToken: Data?, flowId: FlowIdentifier) async throws -> (serverSessionToken: Data, apiKeyElements: APIKeyElements) + + func verifyReceiptAndRefreshAPIPermissions(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier) async throws -> [ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus] + func queryAPIKeyStatus(for ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> APIKeyElements + func registerOwnedAPIKeyOnServerNow(ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> ObvRegisterApiKeyResult // MARK: - Downloading message and listing attachments - func downloadingMessagesAndListingAttachmentFailed(for: ObvCryptoIdentity, andDeviceUid: UID, flowId: FlowIdentifier) + func downloadingMessagesAndListingAttachmentFailed(for: ObvCryptoIdentity, andDeviceUid: UID, flowId: FlowIdentifier) async func downloadingMessagesAndListingAttachmentWasNotNeeded(for: ObvCryptoIdentity, andDeviceUid: UID, flowId: FlowIdentifier) func downloadingMessagesAndListingAttachmentWasPerformed(for: ObvCryptoIdentity, andDeviceUid: UID, flowId: FlowIdentifier) func aMessageReceivedThroughTheWebsocketWasSavedByTheMessageDelegate(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) - func messagePayloadAndFromIdentityWereSet(messageId: MessageIdentifier, attachmentIds: [AttachmentIdentifier], hasEncryptedExtendedMessagePayload: Bool, flowId: FlowIdentifier) + func messagePayloadAndFromIdentityWereSet(messageId: ObvMessageIdentifier, attachmentIds: [ObvAttachmentIdentifier], hasEncryptedExtendedMessagePayload: Bool, flowId: FlowIdentifier) // MARK: - Downloading encrypted extended message payload - func downloadingMessageExtendedPayloadFailed(messageId: MessageIdentifier, flowId: FlowIdentifier) - func downloadingMessageExtendedPayloadWasPerformed(messageId: MessageIdentifier, flowId: FlowIdentifier) + func downloadingMessageExtendedPayloadFailed(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) + func downloadingMessageExtendedPayloadWasPerformed(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) // MARK: - Attachment's related methods - func resumeDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func pauseDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func attachmentWasDownloaded(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func attachmentWasCancelledByServer(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] + func resumeDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, forceResume: Bool, flowId: FlowIdentifier) + func pauseDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + func attachmentWasDownloaded(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + func attachmentWasCancelledByServer(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] // MARK: - Deletion related methods - func newPendingDeleteToProcessForMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) - func failedToProcessPendingDeleteFromServer(messageId: MessageIdentifier, flowId: FlowIdentifier) - func messageAndAttachmentsWereDeletedFromServerAndInboxes(messageId: MessageIdentifier, flowId: FlowIdentifier) + func newPendingDeleteToProcessForMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) + func failedToProcessPendingDeleteFromServer(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) async + func messageAndAttachmentsWereDeletedFromServerAndInboxes(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) // MARK: - Push notification's related methods - func serverReportedThatAnotherDeviceIsAlreadyRegistered(forOwnedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) - func serverReportedThatThisDeviceWasSuccessfullyRegistered(forOwnedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) func serverReportedThatThisDeviceIsNotRegistered(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) func fetchNetworkOperationFailedSinceOwnedIdentityIsNotActive(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) // MARK: - Handling Server Queries func post(_: ServerQuery, within: ObvContext) - func newPendingServerQueryToProcessWithObjectId(_: NSManagedObjectID, flowId: FlowIdentifier) - func failedToProcessServerQuery(withObjectId: NSManagedObjectID, flowId: FlowIdentifier) + func newPendingServerQueryToProcessWithObjectId(_: NSManagedObjectID, isWebSocket: Bool, flowId: FlowIdentifier) async + func failedToProcessServerQuery(withObjectId: NSManagedObjectID, flowId: FlowIdentifier) async func successfullProcessOfServerQuery(withObjectId: NSManagedObjectID, flowId: FlowIdentifier) - func pendingServerQueryWasDeletedFromDatabase(objectId: NSManagedObjectID, flowId: FlowIdentifier) // MARK: - Handling user data - func failedToProcessServerUserData(input: ServerUserDataInput, flowId: FlowIdentifier) + func failedToProcessServerUserData(input: ServerUserDataInput, flowId: FlowIdentifier) async // MARK: - Finalizing the initialization and handling events - func resetAllFailedFetchAttempsCountersAndRetryFetching() + func resetAllFailedFetchAttempsCountersAndRetryFetching() async // MARK: - Forwarding urlSessionDidFinishEvents(forBackgroundURLSession session: URLSession) and notifying successfull/failed listing (for performing fetchCompletionHandlers within the engine) @@ -108,7 +93,7 @@ protocol NetworkFetchFlowDelegate { func newWellKnownWasCached(server: URL, newWellKnownJSON: WellKnownJSON, flowId: FlowIdentifier) func cachedWellKnownWasUpdated(server: URL, newWellKnownJSON: WellKnownJSON, flowId: FlowIdentifier) func currentCachedWellKnownCorrespondToThatOnServer(server: URL, wellKnownJSON: WellKnownJSON, flowId: FlowIdentifier) - func failedToQueryServerWellKnown(serverURL: URL, flowId: FlowIdentifier) + func failedToQueryServerWellKnown(serverURL: URL, flowId: FlowIdentifier) async // MARK: - Reacting to web socket changes diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ProcessRegisteredPushNotificationsDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ProcessRegisteredPushNotificationsDelegate.swift deleted file mode 100644 index e646c412..00000000 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ProcessRegisteredPushNotificationsDelegate.swift +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import ObvCrypto -import ObvTypes -import OlvidUtils - -protocol ServerPushNotificationsDelegate { - func registerToPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier) - func processServerPushNotificationsToRegister(ownedCryptoId: ObvCryptoIdentity, pushNotificationType: ObvPushNotificationType.ByteId, flowId: FlowIdentifier) throws - func deleteAllServerPushNotificationsOnOwnedIdentityDeletion(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) - func forceRegisteringOfServerPushNotificationsOnBootstrap(flowId: FlowIdentifier) -} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/GetTokenDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerPushNotificationsDelegate.swift similarity index 82% rename from Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/GetTokenDelegate.swift rename to Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerPushNotificationsDelegate.swift index 097a2eea..cd130242 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/GetTokenDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerPushNotificationsDelegate.swift @@ -22,8 +22,6 @@ import ObvCrypto import ObvTypes import OlvidUtils -protocol GetTokenDelegate { - - func getToken(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) throws - +protocol ServerPushNotificationsDelegate { + func registerPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier) async throws } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerQueryDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerQueryDelegate.swift index be03e20d..97e2c9cb 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerQueryDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerQueryDelegate.swift @@ -29,4 +29,6 @@ protocol ServerQueryDelegate { func postAllPendingServerQuery(for ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) func postAllPendingServerQuery(flowId: FlowIdentifier) + func deletePendingServerQueryOfNonExistingOwnedIdentities(flowId: FlowIdentifier) + } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerQueryWebSocketDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerQueryWebSocketDelegate.swift new file mode 100644 index 00000000..212c78b0 --- /dev/null +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerQueryWebSocketDelegate.swift @@ -0,0 +1,30 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import OlvidUtils + + +protocol ServerQueryWebSocketDelegate { + + func handleServerQuery(pendingServerQueryObjectId: NSManagedObjectID, flowId: FlowIdentifier) async throws + + +} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/GetAndSolveChallengeDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerSessionDelegate.swift similarity index 65% rename from Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/GetAndSolveChallengeDelegate.swift rename to Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerSessionDelegate.swift index 500f5d8f..fe175fa0 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/GetAndSolveChallengeDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/ServerSessionDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -18,12 +18,14 @@ */ import Foundation -import ObvCrypto import ObvTypes import OlvidUtils +import ObvCrypto + -protocol GetAndSolveChallengeDelegate { - - func getAndSolveChallenge(forIdentity: ObvCryptoIdentity, currentInvalidToken: Data?, discardExistingToken: Bool, flowId: FlowIdentifier) throws +protocol ServerSessionDelegate { + + func getValidServerSessionToken(for ownedCryptoIdentity: ObvCryptoIdentity, currentInvalidToken: Data?, flowId: FlowIdentifier) async throws -> (serverSessionToken: Data, apiKeyElements: APIKeyElements) + func deleteServerSession(of ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/VerifyReceiptDelegate.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/VerifyReceiptDelegate.swift index 164143f8..853c298e 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/VerifyReceiptDelegate.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/VerifyReceiptDelegate.swift @@ -23,6 +23,9 @@ import ObvTypes import OlvidUtils protocol VerifyReceiptDelegate: AnyObject { - func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) - func verifyReceiptsExpectingNewSesssion() + + func verifyReceipt(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier) async throws -> [ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus] + + //func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) + //func verifyReceiptsExpectingNewSesssion() } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchDelegateManager.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchDelegateManager.swift index bf209145..3ecba187 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchDelegateManager.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchDelegateManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,29 +29,34 @@ final class ObvNetworkFetchDelegateManager { static let defaultLogSubsystem = "io.olvid.network.fetch" private(set) var logSubsystem = ObvNetworkFetchDelegateManager.defaultLogSubsystem - func prependLogSubsystem(with prefix: String) { - logSubsystem = "\(prefix).\(logSubsystem)" - } - let inbox: URL let internalNotificationCenter = NotificationCenter() + // MARK: - Queues allowing to execute Core Data operations + + let queueSharedAmongCoordinators = OperationQueue.createSerialQueue(name: "Queue shared among coordinators of ObvNetworkFetchManagerImplementation", qualityOfService: .default) + let queueForComposedOperations = { + let queue = OperationQueue() + queue.name = "Queue for composed operations" + queue.qualityOfService = .default + return queue + }() + // MARK: Instance variables (internal delegates) let networkFetchFlowDelegate: NetworkFetchFlowDelegate - let getAndSolveChallengeDelegate: GetAndSolveChallengeDelegate - let getTokenDelegate: GetTokenDelegate + let serverSessionDelegate: ServerSessionDelegate let messagesDelegate: MessagesDelegate let downloadAttachmentChunksDelegate: DownloadAttachmentChunksDelegate let deleteMessageAndAttachmentsFromServerDelegate: DeleteMessageAndAttachmentsFromServerDelegate let serverPushNotificationsDelegate: ServerPushNotificationsDelegate let webSocketDelegate: WebSocketDelegate let getTurnCredentialsDelegate: GetTurnCredentialsDelegate? - let queryApiKeyStatusDelegate: QueryApiKeyStatusDelegate? let freeTrialQueryDelegate: FreeTrialQueryDelegate? let verifyReceiptDelegate: VerifyReceiptDelegate? let serverQueryDelegate: ServerQueryDelegate + let serverQueryWebSocketDelegate: ServerQueryWebSocketDelegate let serverUserDataDelegate: ServerUserDataDelegate let wellKnownCacheDelegate: WellKnownCacheDelegate @@ -67,26 +72,27 @@ final class ObvNetworkFetchDelegateManager { // MARK: Initialiazer - init(inbox: URL, sharedContainerIdentifier: String, supportBackgroundFetch: Bool, networkFetchFlowDelegate: NetworkFetchFlowDelegate, getAndSolveChallengeDelegate: GetAndSolveChallengeDelegate, getTokenDelegate: GetTokenDelegate, downloadMessagesAndListAttachmentsDelegate: MessagesDelegate, downloadAttachmentChunksDelegate: DownloadAttachmentChunksDelegate, deleteMessageAndAttachmentsFromServerDelegate: DeleteMessageAndAttachmentsFromServerDelegate, serverPushNotificationsDelegate: ServerPushNotificationsDelegate, webSocketDelegate: WebSocketDelegate, getTurnCredentialsDelegate: GetTurnCredentialsDelegate?, queryApiKeyStatusDelegate: QueryApiKeyStatusDelegate, freeTrialQueryDelegate: FreeTrialQueryDelegate, verifyReceiptDelegate: VerifyReceiptDelegate, serverQueryDelegate: ServerQueryDelegate, serverUserDataDelegate: ServerUserDataDelegate, wellKnownCacheDelegate: WellKnownCacheDelegate) { + init(inbox: URL, sharedContainerIdentifier: String, supportBackgroundFetch: Bool, logPrefix: String, networkFetchFlowDelegate: NetworkFetchFlowDelegate, serverSessionDelegate: ServerSessionDelegate, downloadMessagesAndListAttachmentsDelegate: MessagesDelegate, downloadAttachmentChunksDelegate: DownloadAttachmentChunksDelegate, deleteMessageAndAttachmentsFromServerDelegate: DeleteMessageAndAttachmentsFromServerDelegate, serverPushNotificationsDelegate: ServerPushNotificationsDelegate, webSocketDelegate: WebSocketDelegate, getTurnCredentialsDelegate: GetTurnCredentialsDelegate?, freeTrialQueryDelegate: FreeTrialQueryDelegate, verifyReceiptDelegate: VerifyReceiptDelegate, serverQueryDelegate: ServerQueryDelegate, serverQueryWebSocketDelegate: ServerQueryWebSocketDelegate, serverUserDataDelegate: ServerUserDataDelegate, wellKnownCacheDelegate: WellKnownCacheDelegate) { + self.logSubsystem = "\(logPrefix).\(logSubsystem)" self.inbox = inbox self.sharedContainerIdentifier = sharedContainerIdentifier self.supportBackgroundFetch = supportBackgroundFetch self.networkFetchFlowDelegate = networkFetchFlowDelegate - self.getAndSolveChallengeDelegate = getAndSolveChallengeDelegate - self.getTokenDelegate = getTokenDelegate + self.serverSessionDelegate = serverSessionDelegate self.messagesDelegate = downloadMessagesAndListAttachmentsDelegate self.downloadAttachmentChunksDelegate = downloadAttachmentChunksDelegate self.deleteMessageAndAttachmentsFromServerDelegate = deleteMessageAndAttachmentsFromServerDelegate self.serverPushNotificationsDelegate = serverPushNotificationsDelegate self.webSocketDelegate = webSocketDelegate self.getTurnCredentialsDelegate = getTurnCredentialsDelegate - self.queryApiKeyStatusDelegate = queryApiKeyStatusDelegate - self.freeTrialQueryDelegate = freeTrialQueryDelegate + //self.queryApiKeyStatusDelegate = queryApiKeyStatusDelegate self.verifyReceiptDelegate = verifyReceiptDelegate self.serverQueryDelegate = serverQueryDelegate + self.serverQueryWebSocketDelegate = serverQueryWebSocketDelegate self.serverUserDataDelegate = serverUserDataDelegate self.wellKnownCacheDelegate = wellKnownCacheDelegate + self.freeTrialQueryDelegate = freeTrialQueryDelegate } } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchManagerImplementation.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchManagerImplementation.swift index 4134a47e..94944c8a 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchManagerImplementation.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchManagerImplementation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,6 +25,7 @@ import ObvMetaManager import ObvCrypto import ObvTypes import ObvEncoder +import ObvServerInterface public final class ObvNetworkFetchManagerImplementation: ObvNetworkFetchDelegate { @@ -34,12 +35,13 @@ public final class ObvNetworkFetchManagerImplementation: ObvNetworkFetchDelegate private func makeError(message: String) -> Error { ObvNetworkFetchManagerImplementation.makeError(message: message) } public func prependLogSubsystem(with prefix: String) { - delegateManager.prependLogSubsystem(with: prefix) + // 2023-06-30 The log prefix was set in the init of this class, which is much more convenient than setting it afterwards } // MARK: Instance variables - private var log: OSLog + private static var logCategory = "ObvNetworkFetchManagerImplementation" + private static var log = OSLog(subsystem: ObvNetworkFetchDelegateManager.defaultLogSubsystem, category: logCategory) /// Strong reference to the delegate manager, which keeps strong references to all external and internal delegate requirements. let delegateManager: ObvNetworkFetchDelegateManager @@ -48,70 +50,61 @@ public final class ObvNetworkFetchManagerImplementation: ObvNetworkFetchDelegate // MARK: Initialiser - public init(inbox: URL, downloadedUserData: URL, prng: PRNGService, sharedContainerIdentifier: String, supportBackgroundDownloadTasks: Bool, remoteNotificationByteIdentifierForServer: Data) { + public init(inbox: URL, downloadedUserData: URL, prng: PRNGService, sharedContainerIdentifier: String, supportBackgroundDownloadTasks: Bool, remoteNotificationByteIdentifierForServer: Data, logPrefix: String) { + let logSubsystem = "\(logPrefix).\(ObvNetworkFetchDelegateManager.defaultLogSubsystem)" + Self.log = OSLog(subsystem: logSubsystem, category: Self.logCategory) + self.bootstrapWorker = BootstrapWorker(inbox: inbox) - - let queueSharedAmongCoordinators = OperationQueue.createSerialQueue(name: "Queue shared among coordinators of ObvNetworkFetchManagerImplementation", qualityOfService: .userInteractive) - let queueForComposedOperations = { - let queue = OperationQueue() - queue.name = "Queue for composed operations" - queue.qualityOfService = .userInteractive - return queue - }() - - let networkFetchFlowCoordinator = NetworkFetchFlowCoordinator(prng: prng) - let getAndSolveChallengeCoordinator = GetAndSolveChallengeCoordinator() - let getTokenCoordinator = GetTokenCoordinator() + + let networkFetchFlowCoordinator = NetworkFetchFlowCoordinator(prng: prng, logPrefix: logPrefix) + let serverSessionCoordinator = ServerSessionCoordinator(prng: prng, logPrefix: logPrefix) let downloadMessagesAndListAttachmentsCoordinator = MessagesCoordinator() - let downloadAttachmentChunksCoordinator = DownloadAttachmentChunksCoordinator() + let downloadAttachmentChunksCoordinator = DownloadAttachmentChunksCoordinator(logPrefix: logPrefix) let deleteMessageAndAttachmentsFromServerCoordinator = DeleteMessageAndAttachmentsFromServerCoordinator() let serverPushNotificationsCoordinator = ServerPushNotificationsCoordinator( - remoteNotificationByteIdentifierForServer: remoteNotificationByteIdentifierForServer, - coordinatorsQueue: queueSharedAmongCoordinators, - queueForComposedOperations: queueForComposedOperations) + remoteNotificationByteIdentifierForServer: remoteNotificationByteIdentifierForServer, prng: prng, logPrefix: logPrefix) let getTurnCredentialsCoordinator = GetTurnCredentialsCoordinator() - let queryApiKeyStatusCoordinator = QueryApiKeyStatusCoordinator() let freeTrialQueryCoordinator = FreeTrialQueryCoordinator() - let verifyReceiptCoordinator = VerifyReceiptCoordinator() + let verifyReceiptCoordinator = VerifyReceiptCoordinator(logPrefix: logPrefix) let serverQueryCoordinator = ServerQueryCoordinator(prng: prng, downloadedUserData: downloadedUserData) + let serverQueryWebSocketCoordinator = ServerQueryWebSocketCoordinator(logPrefix: logPrefix) let serverUserDataCoordinator = ServerUserDataCoordinator(prng: prng, downloadedUserData: downloadedUserData) let wellKnownCoordinator = WellKnownCoordinator() let webSocketCoordinator = WebSocketCoordinator() - delegateManager = ObvNetworkFetchDelegateManager(inbox: inbox, - sharedContainerIdentifier: sharedContainerIdentifier, - supportBackgroundFetch: supportBackgroundDownloadTasks, - networkFetchFlowDelegate: networkFetchFlowCoordinator, - getAndSolveChallengeDelegate: getAndSolveChallengeCoordinator, - getTokenDelegate: getTokenCoordinator, - downloadMessagesAndListAttachmentsDelegate: downloadMessagesAndListAttachmentsCoordinator, - downloadAttachmentChunksDelegate: downloadAttachmentChunksCoordinator, - deleteMessageAndAttachmentsFromServerDelegate: deleteMessageAndAttachmentsFromServerCoordinator, - serverPushNotificationsDelegate: serverPushNotificationsCoordinator, - webSocketDelegate: webSocketCoordinator, - getTurnCredentialsDelegate: getTurnCredentialsCoordinator, - queryApiKeyStatusDelegate: queryApiKeyStatusCoordinator, - freeTrialQueryDelegate: freeTrialQueryCoordinator, - verifyReceiptDelegate: verifyReceiptCoordinator, - serverQueryDelegate: serverQueryCoordinator, - serverUserDataDelegate: serverUserDataCoordinator, - wellKnownCacheDelegate: wellKnownCoordinator) - - self.log = OSLog(subsystem: delegateManager.logSubsystem, category: "ObvNetworkFetchManagerImplementation") - + delegateManager = ObvNetworkFetchDelegateManager( + inbox: inbox, + sharedContainerIdentifier: sharedContainerIdentifier, + supportBackgroundFetch: supportBackgroundDownloadTasks, + logPrefix: logPrefix, + networkFetchFlowDelegate: networkFetchFlowCoordinator, + serverSessionDelegate: serverSessionCoordinator, + downloadMessagesAndListAttachmentsDelegate: downloadMessagesAndListAttachmentsCoordinator, + downloadAttachmentChunksDelegate: downloadAttachmentChunksCoordinator, + deleteMessageAndAttachmentsFromServerDelegate: deleteMessageAndAttachmentsFromServerCoordinator, + serverPushNotificationsDelegate: serverPushNotificationsCoordinator, + webSocketDelegate: webSocketCoordinator, + getTurnCredentialsDelegate: getTurnCredentialsCoordinator, + freeTrialQueryDelegate: freeTrialQueryCoordinator, + verifyReceiptDelegate: verifyReceiptCoordinator, + serverQueryDelegate: serverQueryCoordinator, + serverQueryWebSocketDelegate: serverQueryWebSocketCoordinator, + serverUserDataDelegate: serverUserDataCoordinator, + wellKnownCacheDelegate: wellKnownCoordinator) + networkFetchFlowCoordinator.delegateManager = delegateManager // Weak reference - getAndSolveChallengeCoordinator.delegateManager = delegateManager // Weak reference - getTokenCoordinator.delegateManager = delegateManager + Task { await serverSessionCoordinator.setDelegateManager(delegateManager) } + serverQueryCoordinator.delegateManager = delegateManager downloadMessagesAndListAttachmentsCoordinator.delegateManager = delegateManager downloadAttachmentChunksCoordinator.delegateManager = delegateManager deleteMessageAndAttachmentsFromServerCoordinator.delegateManager = delegateManager - serverPushNotificationsCoordinator.delegateManager = delegateManager + Task { await serverPushNotificationsCoordinator.setDelegateManager(delegateManager) } getTurnCredentialsCoordinator.delegateManager = delegateManager - queryApiKeyStatusCoordinator.delegateManager = delegateManager - freeTrialQueryCoordinator.delegateManager = delegateManager - verifyReceiptCoordinator.delegateManager = delegateManager + Task { await freeTrialQueryCoordinator.setDelegateManager(delegateManager) } + Task { await verifyReceiptCoordinator.setDelegateManager(delegateManager) } serverQueryCoordinator.delegateManager = delegateManager + Task { await serverQueryWebSocketCoordinator.setDelegateManager(delegateManager) } serverUserDataCoordinator.delegateManager = delegateManager wellKnownCoordinator.delegateManager = delegateManager bootstrapWorker.delegateManager = delegateManager @@ -166,7 +159,6 @@ extension ObvNetworkFetchManagerImplementation { public func finalizeInitialization(flowId: FlowIdentifier, runningLog: RunningLogError) throws { - self.log = OSLog(subsystem: delegateManager.logSubsystem, category: "ObvNetworkFetchManagerImplementation") bootstrapWorker.finalizeInitialization(flowId: flowId) if let serverQueryCoordinator = delegateManager.serverQueryDelegate as? ServerQueryCoordinator { serverQueryCoordinator.finalizeInitialization() @@ -183,7 +175,7 @@ extension ObvNetworkFetchManagerImplementation { public func applicationAppearedOnScreen(forTheFirstTime: Bool, flowId: FlowIdentifier) async { if forTheFirstTime { - delegateManager.networkFetchFlowDelegate.resetAllFailedFetchAttempsCountersAndRetryFetching() + await delegateManager.networkFetchFlowDelegate.resetAllFailedFetchAttempsCountersAndRetryFetching() } await bootstrapWorker.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime, flowId: flowId) } @@ -202,10 +194,14 @@ extension ObvNetworkFetchManagerImplementation { delegateManager.networkFetchFlowDelegate.post(serverQuery, within: context) } - public func getTurnCredentials(ownedIdenty: ObvCryptoIdentity, callUuid: UUID, username1: String, username2: String, flowId: FlowIdentifier) { - delegateManager.getTurnCredentialsDelegate?.getTurnCredentials(ownedIdenty: ownedIdenty, callUuid: callUuid, username1: username1, username2: username2, flowId: flowId) + public func getTurnCredentials(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> ObvTurnCredentials { + guard let getTurnCredentialsDelegate = delegateManager.getTurnCredentialsDelegate else { + assertionFailure() + throw Self.makeError(message: "The turn credentials delegate is not set") + } + return try await getTurnCredentialsDelegate.getTurnCredentials(ownedCryptoId: ownedCryptoId, flowId: flowId) } - + public func getWebSocketState(ownedIdentity: ObvCryptoIdentity) async throws -> (URLSessionTask.State,TimeInterval?) { return try await delegateManager.webSocketDelegate.getWebSocketState(ownedIdentity: ownedIdentity) } @@ -232,23 +228,23 @@ extension ObvNetworkFetchManagerImplementation { assert(!Thread.isMainThread) - os_log("Call to downloadMessages for owned identity %@ with identifier for notifications %{public}@", log: log, type: .debug, ownedIdentity.debugDescription, flowId.debugDescription) + os_log("Call to downloadMessages for owned identity %@ with identifier for notifications %{public}@", log: Self.log, type: .debug, ownedIdentity.debugDescription, flowId.debugDescription) delegateManager.messagesDelegate.downloadMessagesAndListAttachments(for: ownedIdentity, andDeviceUid: deviceUid, flowId: flowId) } - public func getDecryptedMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) -> ObvNetworkReceivedMessageDecrypted? { + public func getDecryptedMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) -> ObvNetworkReceivedMessageDecrypted? { guard let contextCreator = delegateManager.contextCreator else { - os_log("The Context Creator is not set", log: log, type: .fault) + os_log("The Context Creator is not set", log: Self.log, type: .fault) return nil } var message: ObvNetworkReceivedMessageDecrypted? contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in guard let inboxMessage = try? InboxMessage.get(messageId: messageId, within: obvContext) else { - os_log("Message does not exist in InboxMessage", log: log, type: .error) + os_log("Message does not exist in InboxMessage", log: Self.log, type: .error) return } @@ -268,10 +264,10 @@ extension ObvNetworkFetchManagerImplementation { } - public func allAttachmentsCanBeDownloadedForMessage(withId messageId: MessageIdentifier, within obvContext: ObvContext) throws -> Bool { + public func allAttachmentsCanBeDownloadedForMessage(withId messageId: ObvMessageIdentifier, within obvContext: ObvContext) throws -> Bool { guard let inboxMessage = try InboxMessage.get(messageId: messageId, within: obvContext) else { - os_log("Message does not exist in InboxMessage", log: log, type: .error) + os_log("Message does not exist in InboxMessage", log: Self.log, type: .error) throw makeError(message: "Message does not exist in InboxMessage") } @@ -281,10 +277,10 @@ extension ObvNetworkFetchManagerImplementation { } - public func attachment(withId attachmentId: AttachmentIdentifier, canBeDownloadedwithin obvContext: ObvContext) throws -> Bool { + public func attachment(withId attachmentId: ObvAttachmentIdentifier, canBeDownloadedwithin obvContext: ObvContext) throws -> Bool { guard let inboxAttachment = try InboxAttachment.get(attachmentId: attachmentId, within: obvContext) else { - os_log("Attachment does not exist in InboxAttachment (1)", log: log, type: .error) + os_log("Attachment does not exist in InboxAttachment (1)", log: Self.log, type: .error) throw makeError(message: "Attachment does not exist in InboxAttachment (1)") } @@ -292,10 +288,10 @@ extension ObvNetworkFetchManagerImplementation { } - public func allAttachmentsHaveBeenDownloadedForMessage(withId messageId: MessageIdentifier, within obvContext: ObvContext) throws -> Bool { + public func allAttachmentsHaveBeenDownloadedForMessage(withId messageId: ObvMessageIdentifier, within obvContext: ObvContext) throws -> Bool { guard let inboxMessage = try InboxMessage.get(messageId: messageId, within: obvContext) else { - os_log("Message does not exist in InboxMessage", log: log, type: .error) + os_log("Message does not exist in InboxMessage", log: Self.log, type: .error) throw makeError(message: "Message does not exist in InboxMessage") } @@ -307,20 +303,20 @@ extension ObvNetworkFetchManagerImplementation { // MARK: Other methods for attachments - public func setRemoteCryptoIdentity(_ remoteCryptoIdentity: ObvCryptoIdentity, messagePayload: Data, extendedMessagePayloadKey: AuthenticatedEncryptionKey?, andAttachmentsInfos attachmentsInfos: [ObvNetworkFetchAttachmentInfos], forApplicationMessageWithmessageId messageId: MessageIdentifier, within obvContext: ObvContext) throws { + public func setRemoteCryptoIdentity(_ remoteCryptoIdentity: ObvCryptoIdentity, messagePayload: Data, extendedMessagePayloadKey: AuthenticatedEncryptionKey?, andAttachmentsInfos attachmentsInfos: [ObvNetworkFetchAttachmentInfos], forApplicationMessageWithmessageId messageId: ObvMessageIdentifier, within obvContext: ObvContext) throws { guard let inboxMessage = try InboxMessage.get(messageId: messageId, within: obvContext) else { - os_log("Message does not exist in InboxMessage", log: log, type: .error) + os_log("Message does not exist in InboxMessage", log: Self.log, type: .error) assertionFailure() throw makeError(message: "Message does not exist in InboxMessage") } try inboxMessage.setFromCryptoIdentity(remoteCryptoIdentity, andMessagePayload: messagePayload, extendedMessagePayloadKey: extendedMessagePayloadKey, flowId: obvContext.flowId, delegateManager: delegateManager) guard inboxMessage.attachments.count == attachmentsInfos.count else { - os_log("Message does not have an appropriate number of attachments", log: log, type: .error) + os_log("Message does not have an appropriate number of attachments", log: Self.log, type: .error) assertionFailure() throw makeError(message: "Message does not have an appropriate number of attachments") } guard inboxMessage.attachments.count == attachmentsInfos.count else { - os_log("Invalid attachment count", log: log, type: .error) + os_log("Invalid attachment count", log: Self.log, type: .error) assertionFailure() throw makeError(message: "Invalid attachment count") } @@ -349,25 +345,25 @@ extension ObvNetworkFetchManagerImplementation { } - public func getAttachment(withId attachmentId: AttachmentIdentifier, within obvContext: ObvContext) -> ObvNetworkFetchReceivedAttachment? { + public func getAttachment(withId attachmentId: ObvAttachmentIdentifier, within obvContext: ObvContext) -> ObvNetworkFetchReceivedAttachment? { var receivedAttachment: ObvNetworkFetchReceivedAttachment? = nil obvContext.performAndWait { guard let inboxAttachment = try? InboxAttachment.get(attachmentId: attachmentId, within: obvContext) else { - os_log("Attachment does not exist in InboxAttachment (3)", log: log, type: .error) + os_log("Attachment does not exist in InboxAttachment (3)", log: Self.log, type: .error) return } guard let metadata = inboxAttachment.metadata, let fromCryptoIdentity = inboxAttachment.fromCryptoIdentity else { - os_log("Attachment is not ready yet", log: log, type: .error) + os_log("Attachment is not ready yet", log: Self.log, type: .error) return } guard let inboxAttachmentUrl = inboxAttachment.getURL(withinInbox: delegateManager.inbox) else { - os_log("Cannot determine the inbox attachment URL", log: log, type: .fault) + os_log("Cannot determine the inbox attachment URL", log: Self.log, type: .fault) return } guard let message = inboxAttachment.message else { - os_log("Could not find message associated to attachment, which is unexpected at this point", log: log, type: .fault) + os_log("Could not find message associated to attachment, which is unexpected at this point", log: Self.log, type: .fault) assertionFailure() return } @@ -376,7 +372,7 @@ extension ObvNetworkFetchManagerImplementation { totalUnitCount = 0 } else { guard let _totalUnitCount = inboxAttachment.plaintextLength else { - os_log("Could not find cleartext attachment size. The file might not exist yet (which is the case if the decryption key has not been set).", log: log, type: .fault) + os_log("Could not find cleartext attachment size. The file might not exist yet (which is the case if the decryption key has not been set).", log: Self.log, type: .fault) assertionFailure() return } @@ -425,18 +421,49 @@ extension ObvNetworkFetchManagerImplementation { try PendingServerQuery.deleteAllServerQuery(for: ownedCryptoIdentity, delegateManager: delegateManager, within: obvContext) - // Delete all registered push notifications relating to the owned identity - - try obvContext.addContextDidSaveCompletionHandler { [weak self] _ in - self?.delegateManager.serverPushNotificationsDelegate.deleteAllServerPushNotificationsOnOwnedIdentityDeletion(ownedCryptoId: ownedCryptoIdentity, flowId: obvContext.flowId) - } + // We do not delete the server sessions now, as the owned identity deletion protocol will need them to propagate information. + // Those session are deleted in finalizeOwnedIdentityDeletion(ownedCryptoIdentity:within:) + + } + + + public func finalizeOwnedIdentityDeletion(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws { // Delete all server sessions of owned identity - try ServerSession.deleteAllSessionsOfIdentity(ownedCryptoIdentity, within: obvContext) - + try await delegateManager.serverSessionDelegate.deleteServerSession(of: ownedCryptoIdentity, flowId: flowId) + } + + public func performOwnedDeviceDiscoveryNow(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> EncryptedData { + + let method = ObvServerOwnedDeviceDiscoveryMethod(ownedIdentity: ownedCryptoId, flowId: flowId) + let (data, response) = try await URLSession.shared.data(for: method.getURLRequest()) + + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw Self.makeError(message: "Invalid server response") + } + + let result = ObvServerOwnedDeviceDiscoveryMethod.parseObvServerResponse(responseData: data, using: Self.log) + + switch result { + case .success(let status): + switch status { + case .ok(encryptedOwnedDeviceDiscoveryResult: let encryptedOwnedDeviceDiscoveryResult): + return encryptedOwnedDeviceDiscoveryResult + case .generalError: + let error = makeError(message: "ObvServerOwnedDeviceDiscoveryMethod returned a general error") + throw error + } + case .failure(let error): + assertionFailure() + throw error + } + + } + } @@ -448,11 +475,11 @@ extension ObvNetworkFetchManagerImplementation { /// attachments for deletion. This does not actually delete the message/attachments. Instead, this will triger a notification /// that will be catched internally by the appropriate coordinator that will atomically delete the message/attachments and /// create a PendingDeleteFromServer - public func deleteMessageAndAttachments(messageId: MessageIdentifier, within obvContext: ObvContext) { + public func deleteMessageAndAttachments(messageId: ObvMessageIdentifier, within obvContext: ObvContext) { let flowId = obvContext.flowId let delegateManager = self.delegateManager guard let message = try? InboxMessage.get(messageId: messageId, within: obvContext) else { - os_log("Could not find message, no need to delete it", log: log, type: .info) + os_log("Could not find message, no need to delete it", log: Self.log, type: .info) return } message.markForDeletion() @@ -472,7 +499,7 @@ extension ObvNetworkFetchManagerImplementation { /// In case the message is a protocol message (typically, new inputs for a protocol instance), then the channel manager has stored the result in one of its own databases, and calling this method ends up deleting the message from the inbox. /// /// In case the message is an application message, then it certainly has associated attachments. In that case, the message in the inbox will only be marked for deletion but not deleted yet. The application is expected to do something with the attachments (such as storing them in its own inboxes) before marking each of the them for deletion (using the `deleteAttachment` below). We this is done, the message and its attachments will indeed be deleted from their inboxes. - public func markMessageForDeletion(messageId: MessageIdentifier, within obvContext: ObvContext) { + public func markMessageForDeletion(messageId: ObvMessageIdentifier, within obvContext: ObvContext) { let flowId = obvContext.flowId let delegateManager = self.delegateManager guard let message = try? InboxMessage.get(messageId: messageId, within: obvContext) else { return } @@ -490,7 +517,7 @@ extension ObvNetworkFetchManagerImplementation { /// /// If the message and the other attachments are already marked for deletion, this will internally trigger /// the required steps to actually delete the message and the attachments from the inboxes (and from the inbox folder). - public func markAttachmentForDeletion(attachmentId: AttachmentIdentifier, within obvContext: ObvContext) { + public func markAttachmentForDeletion(attachmentId: ObvAttachmentIdentifier, within obvContext: ObvContext) { let flowId = obvContext.flowId let delegateManager = self.delegateManager guard let attachment = try? InboxAttachment.get(attachmentId: attachmentId, within: obvContext) else { return } @@ -505,16 +532,16 @@ extension ObvNetworkFetchManagerImplementation { } - public func resumeDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { - self.delegateManager.networkFetchFlowDelegate.resumeDownloadOfAttachment(attachmentId: attachmentId, flowId: flowId) + public func resumeDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, forceResume: Bool, flowId: FlowIdentifier) { + self.delegateManager.networkFetchFlowDelegate.resumeDownloadOfAttachment(attachmentId: attachmentId, forceResume: forceResume, flowId: flowId) } - public func pauseDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + public func pauseDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { self.delegateManager.networkFetchFlowDelegate.pauseDownloadOfAttachment(attachmentId: attachmentId, flowId: flowId) } - public func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] { + public func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] { return try await self.delegateManager.networkFetchFlowDelegate.requestDownloadAttachmentProgressesUpdatedSince(date: date) } } @@ -524,20 +551,65 @@ extension ObvNetworkFetchManagerImplementation { extension ObvNetworkFetchManagerImplementation { - public func registerPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier) { - delegateManager.serverPushNotificationsDelegate.registerToPushNotification(pushNotification, flowId: flowId) - } - - - public func getServerPushNotification(ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvPushNotificationType? { + public func registerPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier) async throws { + + do { + try await delegateManager.serverPushNotificationsDelegate.registerPushNotification(pushNotification, flowId: flowId) + } catch { + if let error = error as? ServerPushNotificationsCoordinator.ObvError { + switch error { + case .anotherDeviceIsAlreadyRegistered: + throw ObvNetworkFetchError.RegisterPushNotificationError.anotherDeviceIsAlreadyRegistered + case .couldNotParseReturnStatusFromServer: + throw ObvNetworkFetchError.RegisterPushNotificationError.couldNotParseReturnStatusFromServer + case .deviceToReplaceIsNotRegistered: + throw ObvNetworkFetchError.RegisterPushNotificationError.deviceToReplaceIsNotRegistered + case .invalidServerResponse: + throw ObvNetworkFetchError.RegisterPushNotificationError.invalidServerResponse + case .theDelegateManagerIsNotSet: + throw ObvNetworkFetchError.RegisterPushNotificationError.theDelegateManagerIsNotSet + } + } else { + assertionFailure("Unrecognized error that should be casted to an ObvNetworkFetchError or dealt with earlier") + throw error + } + } + + // If we reach this point, we succefully registered to push notifications. + // In that case, we can result attachment downloads and list messages + + Task.detached { [weak self] in + + guard let _self = self else { return } + + let delegateManager = _self.delegateManager + guard let contextCreator = delegateManager.contextCreator else { assertionFailure(); return } + guard let identityDelegate = delegateManager.identityDelegate else { assertionFailure(); return } - if let serverPushNotification = try ServerPushNotification.getServerPushNotificationOfType(.remote, ownedCryptoId: ownedCryptoId, within: obvContext.context) { - return try serverPushNotification.pushNotification - } else if let serverPushNotification = try ServerPushNotification.getServerPushNotificationOfType(.registerDeviceUid, ownedCryptoId: ownedCryptoId, within: obvContext.context) { - return try serverPushNotification.pushNotification - } else { - return nil + contextCreator.performBackgroundTask(flowId: flowId) { (obvContext) in + + // We relaunch incomplete attachments + delegateManager.downloadAttachmentChunksDelegate.resumeMissingAttachmentDownloads(flowId: flowId) + + guard let identities = try? identityDelegate.getOwnedIdentities(within: obvContext) else { + os_log("Could not get owned identities", log: Self.log, type: .fault) + assertionFailure() + return + } + + // We download new messages and list their attachments + for identity in identities { + do { + let deviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(identity, within: obvContext) + delegateManager.messagesDelegate.downloadMessagesAndListAttachments(for: identity, andDeviceUid: deviceUid, flowId: flowId) + } catch { + os_log("Could not call downloadMessagesAndListAttachments", log: Self.log, type: .fault) + } + } + + } } + } @@ -548,20 +620,32 @@ extension ObvNetworkFetchManagerImplementation { extension ObvNetworkFetchManagerImplementation { - public func queryAPIKeyStatus(for identity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) { - delegateManager.queryApiKeyStatusDelegate?.queryAPIKeyStatus(for: identity, apiKey: apiKey, flowId: flowId) + public func queryAPIKeyStatus(for ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> APIKeyElements { + return try await delegateManager.networkFetchFlowDelegate.queryAPIKeyStatus(for: ownedCryptoIdentity, apiKey: apiKey, flowId: flowId) } - - public func resetServerSession(for identity: ObvCryptoIdentity, within obvContext: ObvContext) throws { - try delegateManager.networkFetchFlowDelegate.resetServerSession(for: identity, within: obvContext) + + public func refreshAPIPermissions(of ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements { + return try await delegateManager.networkFetchFlowDelegate.refreshAPIPermissions(of: ownedCryptoIdentity, flowId: flowId) } - public func queryFreeTrial(for identity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier) { - delegateManager.freeTrialQueryDelegate?.queryFreeTrial(for: identity, retrieveAPIKey: retrieveAPIKey, flowId: flowId) + public func queryFreeTrial(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> Bool { + guard let freeTrialQueryDelegate = delegateManager.freeTrialQueryDelegate else { assertionFailure(); throw Self.makeError(message: "freeTrialQueryDelegate is not set") } + let freeTrialAvailable = try await freeTrialQueryDelegate.queryFreeTrial(for: identity, flowId: flowId) + return freeTrialAvailable + } + + public func startFreeTrial(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements { + guard let freeTrialQueryDelegate = delegateManager.freeTrialQueryDelegate else { assertionFailure(); throw Self.makeError(message: "freeTrialQueryDelegate is not set") } + let newAPIKeyElements = try await freeTrialQueryDelegate.startFreeTrial(for: identity, flowId: flowId) + return newAPIKeyElements + } + + public func registerOwnedAPIKeyOnServerNow(ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> ObvRegisterApiKeyResult { + return try await delegateManager.networkFetchFlowDelegate.registerOwnedAPIKeyOnServerNow(ownedCryptoIdentity: ownedCryptoIdentity, apiKey: apiKey, flowId: flowId) } - public func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) { - delegateManager.networkFetchFlowDelegate.verifyReceipt(ownedCryptoIdentities: ownedCryptoIdentities, receiptData: receiptData, transactionIdentifier: transactionIdentifier, flowId: flowId) + public func verifyReceiptAndRefreshAPIPermissions(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier) async throws -> [ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus] { + return try await delegateManager.networkFetchFlowDelegate.verifyReceiptAndRefreshAPIPermissions(appStoreReceiptElements: appStoreReceiptElements, flowId: flowId) } public func queryServerWellKnown(serverURL: URL, flowId: FlowIdentifier) { diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchManagerImplementationDummy.swift b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchManagerImplementationDummy.swift index 483470d0..43c8797d 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchManagerImplementationDummy.swift +++ b/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/ObvNetworkFetchManagerImplementationDummy.swift @@ -51,15 +51,15 @@ public final class ObvNetworkFetchManagerImplementationDummy: ObvNetworkFetchDel self.log = OSLog(subsystem: ObvNetworkFetchManagerImplementationDummy.defaultLogSubsystem, category: "ObvNetworkFetchManagerImplementationDummy") } + public func registerOwnedAPIKeyOnServerNow(ownedCryptoIdentity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> ObvRegisterApiKeyResult { + os_log("registerOwnedAPIKeyOnServerNow does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "registerOwnedAPIKeyOnServerNow does nothing in this dummy implementation") + } + public func registerPushNotification(_ pushNotification: ObvPushNotificationType, flowId: FlowIdentifier) { os_log("registerPushNotification does nothing in this dummy implementation", log: log, type: .error) } - public func getServerPushNotification(ownedCryptoId: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvPushNotificationType? { - os_log("getServerPushNotification does nothing in this dummy implementation", log: log, type: .error) - return nil - } - public func updatedListOfOwnedIdentites(ownedIdentities: Set, flowId: FlowIdentifier) { os_log("updatedListOfOwnedIdentites does nothing in this dummy implementation", log: log, type: .error) } @@ -68,26 +68,36 @@ public final class ObvNetworkFetchManagerImplementationDummy: ObvNetworkFetchDel os_log("queryServerWellKnown does nothing in this dummy implementation", log: log, type: .error) } - public func verifyReceipt(ownedCryptoIdentities: [ObvCryptoIdentity], receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) { - os_log("verifyReceipt does nothing in this dummy implementation", log: log, type: .error) + public func verifyReceiptAndRefreshAPIPermissions(appStoreReceiptElements: ObvAppStoreReceipt, flowId: FlowIdentifier) async throws -> [ObvCryptoIdentity : ObvAppStoreReceipt.VerificationStatus] { + os_log("verifyReceiptAndRefreshAPIPermissions does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "verifyReceiptAndRefreshAPIPermissions does nothing in this dummy implementation") } - public func queryFreeTrial(for identity: ObvCryptoIdentity, retrieveAPIKey: Bool, flowId: FlowIdentifier) { + public func queryFreeTrial(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> Bool { os_log("queryFreeTrial does nothing in this dummy implementation", log: log, type: .error) + return true } - public func resetServerSession(for identity: ObvCryptoIdentity, within obvContext: ObvContext) throws { - os_log("resetServerSession does nothing in this dummy implementation", log: log, type: .error) + public func startFreeTrial(for identity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements { + os_log("startFreeTrial does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "startFreeTrial does nothing in this dummy implementation") + } + + public func refreshAPIPermissions(of ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> APIKeyElements { + os_log("refreshAPIPermissions does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "refreshAPIPermissions does nothing in this dummy implementation") } - public func queryAPIKeyStatus(for identity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) { + public func queryAPIKeyStatus(for identity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) async throws -> APIKeyElements { os_log("queryAPIKeyStatus does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "queryAPIKeyStatus does nothing in this dummy implementation") } - public func getTurnCredentials(ownedIdenty: ObvCryptoIdentity, callUuid: UUID, username1: String, username2: String, flowId: FlowIdentifier) { + public func getTurnCredentials(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> ObvTurnCredentials { os_log("getTurnCredentials does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getTurnCredentials does nothing in this dummy implementation") } - + public func getWebSocketState(ownedIdentity: ObvCrypto.ObvCryptoIdentity) async throws -> (URLSessionTask.State, TimeInterval?) { os_log("getWebSocketState does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getWebSocketState does nothing in this dummy implementation") @@ -105,37 +115,37 @@ public final class ObvNetworkFetchManagerImplementationDummy: ObvNetworkFetchDel os_log("downloadMessages(for: ObvCryptoIdentity, andDeviceUid: UID, flowId: FlowIdentifier) does nothing in this dummy implementation", log: log, type: .error) } - public func getEncryptedMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) -> ObvNetworkReceivedMessageEncrypted? { + public func getEncryptedMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) -> ObvNetworkReceivedMessageEncrypted? { os_log("getEncryptedMessage(messageId: MessageIdentifier) does nothing in this dummy implementation", log: log, type: .error) return nil } - public func getDecryptedMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) -> ObvNetworkReceivedMessageDecrypted? { + public func getDecryptedMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) -> ObvNetworkReceivedMessageDecrypted? { os_log("getDecryptedMessage(messageId: MessageIdentifier) does nothing in this dummy implementation", log: log, type: .error) return nil } - public func allAttachmentsCanBeDownloadedForMessage(withId: MessageIdentifier, within: ObvContext) throws -> Bool { + public func allAttachmentsCanBeDownloadedForMessage(withId: ObvMessageIdentifier, within: ObvContext) throws -> Bool { os_log("allAttachmentsCanBeDownloadedForMessage(withId: MessageIdentifier, within: ObvContext) does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "allAttachmentsCanBeDownloadedForMessage(withId: MessageIdentifier, within: ObvContext) does nothing in this dummy implementation") } - public func allAttachmentsHaveBeenDownloadedForMessage(withId: MessageIdentifier, within: ObvContext) throws -> Bool { + public func allAttachmentsHaveBeenDownloadedForMessage(withId: ObvMessageIdentifier, within: ObvContext) throws -> Bool { os_log("allAttachmentsHaveBeenDownloadedForMessage(withId: MessageIdentifier, within: ObvContext) does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "allAttachmentsHaveBeenDownloadedForMessage(withId: MessageIdentifier, within: ObvContext) does nothing in this dummy implementation") } - public func attachment(withId: AttachmentIdentifier, canBeDownloadedwithin: ObvContext) throws -> Bool { + public func attachment(withId: ObvAttachmentIdentifier, canBeDownloadedwithin: ObvContext) throws -> Bool { os_log("attachment(withId: AttachmentIdentifier, canBeDownloadedwithin: ObvContext) does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "attachment(withId: AttachmentIdentifier, canBeDownloadedwithin: ObvContext) does nothing in this dummy implementation") } - public func setRemoteCryptoIdentity(_ remoteCryptoIdentity: ObvCryptoIdentity, messagePayload: Data, extendedMessagePayloadKey: AuthenticatedEncryptionKey?, andAttachmentsInfos: [ObvNetworkFetchAttachmentInfos], forApplicationMessageWithmessageId: MessageIdentifier, within obvContext: ObvContext) throws { + public func setRemoteCryptoIdentity(_ remoteCryptoIdentity: ObvCryptoIdentity, messagePayload: Data, extendedMessagePayloadKey: AuthenticatedEncryptionKey?, andAttachmentsInfos: [ObvNetworkFetchAttachmentInfos], forApplicationMessageWithmessageId: ObvMessageIdentifier, within obvContext: ObvContext) throws { os_log("set(remoteCryptoIdentity: ObvCryptoIdentity, messagePayload: Data, andAttachmentsInfos: [ObvNetworkFetchAttachmentInfos], forApplicationMessageWithMessageId: MessageIdentifier, within obvContext: ObvContext) does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "set(remoteCryptoIdentity: ObvCryptoIdentity, messagePayload: Data, andAttachmentsInfos: [ObvNetworkFetchAttachmentInfos], forApplicationMessageWithMessageId: MessageIdentifier, within obvContext: ObvContext) does nothing in this dummy implementation") } - public func getAttachment(withId attachmentId: AttachmentIdentifier, within obvContext: ObvContext) -> ObvNetworkFetchReceivedAttachment? { + public func getAttachment(withId attachmentId: ObvAttachmentIdentifier, within obvContext: ObvContext) -> ObvNetworkFetchReceivedAttachment? { os_log("getAttachment(withId: AttachmentIdentifier) does nothing in this dummy implementation", log: log, type: .error) return nil } @@ -149,27 +159,27 @@ public final class ObvNetworkFetchManagerImplementationDummy: ObvNetworkFetchDel os_log("storeCompletionHandler(_: @escaping () -> Void, forHandlingEventsForBackgroundURLSessionWithIdentifier: String, withinFlowId: FlowIdentifier) does nothing in this dummy implementation", log: log, type: .error) } - public func deleteMessageAndAttachments(messageId: MessageIdentifier, within: ObvContext) { + public func deleteMessageAndAttachments(messageId: ObvMessageIdentifier, within: ObvContext) { os_log("deleteMessageAndAttachments(messageId: MessageIdentifier, within: ObvContext) does nothing in this dummy implementation", log: log, type: .error) } - public func markMessageForDeletion(messageId: MessageIdentifier, within: ObvContext) { + public func markMessageForDeletion(messageId: ObvMessageIdentifier, within: ObvContext) { os_log("markMessageForDeletion(messageId: MessageIdentifier, within: ObvContext) does nothing in this dummy implementation", log: log, type: .error) } - public func markAttachmentForDeletion(attachmentId: AttachmentIdentifier, within: ObvContext) { + public func markAttachmentForDeletion(attachmentId: ObvAttachmentIdentifier, within: ObvContext) { os_log("markAttachmentForDeletion(attachmentId: AttachmentIdentifier, within: ObvContext) does nothing in this dummy implementation", log: log, type: .error) } - public func resumeDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + public func resumeDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, forceResume: Bool, flowId: FlowIdentifier) { os_log("resumeDownloadOfAttachment does nothing in this dummy implementation", log: log, type: .error) } - public func pauseDownloadOfAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + public func pauseDownloadOfAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { os_log("pauseDownloadOfAttachment does nothing in this dummy implementation", log: log, type: .error) } - public func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] { + public func requestDownloadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] { os_log("requestDownloadAttachmentProgressesUpdatedSince does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "requestDownloadAttachmentProgressesUpdatedSince does nothing in this dummy implementation") } @@ -194,6 +204,15 @@ public final class ObvNetworkFetchManagerImplementationDummy: ObvNetworkFetchDel os_log("prepareForOwnedIdentityDeletion does nothing in this dummy implementation", log: log, type: .error) } + public func finalizeOwnedIdentityDeletion(ownedCryptoIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) throws { + os_log("finalizeOwnedIdentityDeletion does nothing in this dummy implementation", log: log, type: .error) + } + + public func performOwnedDeviceDiscoveryNow(ownedCryptoId: ObvCryptoIdentity, flowId: FlowIdentifier) async throws -> EncryptedData { + os_log("performOwnedDeviceDiscoveryNow does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "performOwnedDeviceDiscoveryNow does nothing in this dummy implementation") + } + // MARK: - Implementing ObvManager public let requiredDelegates = [ObvEngineDelegateType]() diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/BootstrapWorker.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/BootstrapWorker.swift index a5de3cc4..419e0278 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/BootstrapWorker.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/BootstrapWorker.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -168,7 +168,7 @@ extension BootstrapWorker { contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - let outboxMessageIdentifiers: [MessageIdentifier] + let outboxMessageIdentifiers: [ObvMessageIdentifier] do { let outboxMessages = try OutboxMessage.getAll(delegateManager: delegateManager, within: obvContext) outboxMessageIdentifiers = outboxMessages.compactMap { $0.messageId } @@ -233,7 +233,7 @@ extension BootstrapWorker { let relevantChanges = changes.filter { $0.changedObjectID.entity.name == OutboxMessage.entity().name && $0.changeType == .update } // Used to ensure we only post the relevant notification once - var notificationPosted = Set() + var notificationPosted = Set() for change in relevantChanges { guard let updatedProperties = change.updatedProperties else { continue } @@ -292,7 +292,7 @@ extension BootstrapWorker { } - public func deleteHistoryConcerningTheAcknowledgementOfOutboxMessage(messageIdentifier: MessageIdentifier, flowId: FlowIdentifier) async { + public func deleteHistoryConcerningTheAcknowledgementOfOutboxMessage(messageIdentifier: ObvMessageIdentifier, flowId: FlowIdentifier) async { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -447,7 +447,7 @@ extension BootstrapWorker { contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - let existingMessageIds: Set + let existingMessageIds: Set do { let existingMessages = try OutboxMessage.getAll(delegateManager: delegateManager, within: obvContext) existingMessageIds = Set(existingMessages.compactMap({ $0.messageId })) @@ -456,8 +456,14 @@ extension BootstrapWorker { return } - let messageDirectoriesToKeep: Set = Set(existingMessageIds.map { outbox.appendingPathComponent($0.directoryName, isDirectory: true) }) - + let legacyMessageDirectoriesToKeep: Set = existingMessageIds.reduce(Set()) { partialResult, messageId in + Set(messageId.legacyDirectoryNamesForMessageAttachments.map { + outbox.appendingPathComponent($0, isDirectory: true) + }) + } + let nonLegacyMessageDirectoriesToKeep: Set = Set(existingMessageIds.map { outbox.appendingPathComponent($0.directoryNameForMessageAttachments, isDirectory: true) }) + let messageDirectoriesToKeep = legacyMessageDirectoriesToKeep.union(nonLegacyMessageDirectoriesToKeep) + messageDirectoriesToDelete = messageDirectories.subtracting(messageDirectoriesToKeep) } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/NetworkSendFlowCoordinator.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/NetworkSendFlowCoordinator.swift index ddad09ba..a0a2dc80 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/NetworkSendFlowCoordinator.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/NetworkSendFlowCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -38,6 +38,7 @@ final class NetworkSendFlowCoordinator: ObvErrorMaker { private var failedFetchAttemptsCounterManager = FailedFetchAttemptsCounterManager() private var retryManager = SendRetryManager() private let outbox: URL + private let nwPathMonitor = NWPathMonitor() private let queueForPostingNotifications = DispatchQueue(label: "Queue for posting certain notifications from the NetworkSendFlowCoordinator") @@ -93,7 +94,7 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { wrappedKey: header.wrappedMessageKey) } - var attachmentIds = [AttachmentIdentifier]() + var attachmentIds = [ObvAttachmentIdentifier]() if let attachments = message.attachments { var attachmentNumber = 0 for attachment in attachments { @@ -103,7 +104,7 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { deleteAfterSend: attachment.deleteAfterSend, byteSize: attachment.byteSize, key: attachment.key) - let attachmentId = AttachmentIdentifier(messageId: message.messageId, attachmentNumber: attachmentNumber) + let attachmentId = ObvAttachmentIdentifier(messageId: message.messageId, attachmentNumber: attachmentNumber) attachmentIds.append(attachmentId) attachmentNumber += 1 @@ -124,7 +125,7 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { } - func newOutboxMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func newOutboxMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -141,7 +142,7 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { } - func failedUploadAndGetUidOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func failedUploadAndGetUidOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -160,7 +161,7 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { } - func successfulUploadOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func successfulUploadOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -217,7 +218,7 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { - func messageAndAttachmentsWereExternallyCancelledAndCanSafelyBeDeletedNow(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func messageAndAttachmentsWereExternallyCancelledAndCanSafelyBeDeletedNow(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -231,12 +232,12 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { - func newProgressForAttachment(attachmentId: AttachmentIdentifier) { + func newProgressForAttachment(attachmentId: ObvAttachmentIdentifier) { failedFetchAttemptsCounterManager.reset(counter: .uploadAttachment(attachmentId: attachmentId)) } - func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] { + func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) os_log("The Delegate Manager is not set", log: log, type: .fault) @@ -283,7 +284,7 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { - func acknowledgedAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func acknowledgedAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -306,14 +307,14 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { } - func attachmentFailedToUpload(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func attachmentFailedToUpload(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { let delay = failedFetchAttemptsCounterManager.incrementAndGetDelay(.uploadAttachment(attachmentId: attachmentId)) retryManager.executeWithDelay(delay) { [weak self] in self?.delegateManager?.uploadAttachmentChunksDelegate.resumeMissingAttachmentUploads(flowId: flowId) } } - func signedURLsDownloadFailedForAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + func signedURLsDownloadFailedForAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { let delay = failedFetchAttemptsCounterManager.incrementAndGetDelay(.uploadAttachment(attachmentId: attachmentId)) retryManager.executeWithDelay(delay) { [weak self] in self?.delegateManager?.uploadAttachmentChunksDelegate.downloadSignedURLsForAttachments(attachmentIds: [attachmentId], flowId: flowId) @@ -321,7 +322,7 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { } - func messageAndAttachmentsWereDeletedFromTheirOutboxes(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func messageAndAttachmentsWereDeletedFromTheirOutboxes(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { cleanOutboxForMessage(messageId) @@ -367,9 +368,8 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { // MARK: - Monitor Network Path Status private func monitorNetworkChanges() { - let monitor = NWPathMonitor() - monitor.start(queue: DispatchQueue(label: "NetworkSendMonitor")) - monitor.pathUpdateHandler = self.networkPathDidChange + nwPathMonitor.start(queue: DispatchQueue(label: "NetworkSendMonitor")) + nwPathMonitor.pathUpdateHandler = self.networkPathDidChange } @@ -391,7 +391,7 @@ extension NetworkSendFlowCoordinator: NetworkSendFlowDelegate { extension NetworkSendFlowCoordinator { - func cleanOutboxForMessage(_ messageId: MessageIdentifier) { + func cleanOutboxForMessage(_ messageId: ObvMessageIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -402,15 +402,30 @@ extension NetworkSendFlowCoordinator { let log = OSLog(subsystem: delegateManager.logSubsystem, category: logCategory) - let messageURL = outbox.appendingPathComponent(messageId.directoryName, isDirectory: true) - guard FileManager.default.fileExists(atPath: messageURL.path) else { return } - do { - try FileManager.default.removeItem(at: messageURL) - } catch { - os_log("Could not clean outbox for message %{public}@: %{public}@", log: log, type: .fault, messageId.debugDescription, error.localizedDescription) + // Legacy cleaning + for legacyDirectoryNameForMessageAttachments in messageId.legacyDirectoryNamesForMessageAttachments { + let messageURL = outbox.appendingPathComponent(legacyDirectoryNameForMessageAttachments, isDirectory: true) + if FileManager.default.fileExists(atPath: messageURL.path) { + do { + try FileManager.default.removeItem(at: messageURL) + } catch { + os_log("Could not clean outbox for message %{public}@: %{public}@", log: log, type: .fault, messageId.debugDescription, error.localizedDescription) + } + } } + // Non-legacy cleaning + do { + let messageURL = outbox.appendingPathComponent(messageId.directoryNameForMessageAttachments, isDirectory: true) + if FileManager.default.fileExists(atPath: messageURL.path) { + do { + try FileManager.default.removeItem(at: messageURL) + } catch { + os_log("Could not clean outbox for message %{public}@: %{public}@", log: log, type: .fault, messageId.debugDescription, error.localizedDescription) + } + } + } + } - } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/TryToDeleteMessageAndAttachmentsCoordinator.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/TryToDeleteMessageAndAttachmentsCoordinator.swift index f694d2f9..3d1b74a5 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/TryToDeleteMessageAndAttachmentsCoordinator.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/TryToDeleteMessageAndAttachmentsCoordinator.swift @@ -44,7 +44,7 @@ final class TryToDeleteMessageAndAttachmentsCoordinator: NSObject { return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) }() - private var _currentTasks = [UIBackgroundTaskIdentifier: (attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() + private var _currentTasks = [UIBackgroundTaskIdentifier: (attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() private let currentTasksQueue = DispatchQueue(label: "TryToDeleteMessageAndAttachmentsCoordinatorQueueForCurrentTasks") } @@ -54,7 +54,7 @@ final class TryToDeleteMessageAndAttachmentsCoordinator: NSObject { extension TryToDeleteMessageAndAttachmentsCoordinator { - private func currentTaskExistsForAttachment(withId attachmentId: AttachmentIdentifier) -> Bool { + private func currentTaskExistsForAttachment(withId attachmentId: ObvAttachmentIdentifier) -> Bool { var exist = true currentTasksQueue.sync { exist = _currentTasks.values.contains(where: { $0.attachmentId == attachmentId }) @@ -62,7 +62,7 @@ extension TryToDeleteMessageAndAttachmentsCoordinator { return exist } - private func taskExistsForAtLeastOneAttachmentAssociatedToMessage(withId messageId: MessageIdentifier) -> Bool { + private func taskExistsForAtLeastOneAttachmentAssociatedToMessage(withId messageId: ObvMessageIdentifier) -> Bool { var exist = true currentTasksQueue.sync { exist = _currentTasks.values.contains(where: { $0.attachmentId.messageId == messageId }) @@ -70,23 +70,23 @@ extension TryToDeleteMessageAndAttachmentsCoordinator { return exist } - private func removeInfoFor(_ task: URLSessionTask) -> (attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (AttachmentIdentifier, FlowIdentifier, Data)? = nil + private func removeInfoFor(_ task: URLSessionTask) -> (attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvAttachmentIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentTasks.removeValue(forKey: UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)) } return info } - private func getInfoFor(_ task: URLSessionTask) -> (mesattachmentIdsageId: AttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (AttachmentIdentifier, FlowIdentifier, Data)? = nil + private func getInfoFor(_ task: URLSessionTask) -> (mesattachmentIdsageId: ObvAttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvAttachmentIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] } return info } - private func insert(_ task: URLSessionTask, forAttachmentId attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + private func insert(_ task: URLSessionTask, forAttachmentId attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { currentTasksQueue.sync { _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (attachmentId, flowId, Data()) } @@ -108,7 +108,7 @@ extension TryToDeleteMessageAndAttachmentsCoordinator { extension TryToDeleteMessageAndAttachmentsCoordinator: TryToDeleteMessageAndAttachmentsDelegate { - func tryToDeleteMessageAndAttachments(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func tryToDeleteMessageAndAttachments(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) @@ -314,7 +314,7 @@ extension TryToDeleteMessageAndAttachmentsCoordinator: URLSessionDataDelegate { } - private func deleteMessageAndAttachmentsFromTheirOutboxes(messageId: MessageIdentifier, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate, delegateManager: ObvNetworkSendDelegateManager, log: OSLog) { + private func deleteMessageAndAttachmentsFromTheirOutboxes(messageId: ObvMessageIdentifier, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate, delegateManager: ObvNetworkSendDelegateManager, log: OSLog) { contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CancellingAttachmentUploadOperations/DeleteOutboxAttachmentSessionOperation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CancellingAttachmentUploadOperations/DeleteOutboxAttachmentSessionOperation.swift index 1be76f13..00ef8add 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CancellingAttachmentUploadOperations/DeleteOutboxAttachmentSessionOperation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CancellingAttachmentUploadOperations/DeleteOutboxAttachmentSessionOperation.swift @@ -67,7 +67,7 @@ final class DeleteOutboxAttachmentSessionOperation: Operation { private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog private let logCategory = String(describing: ManuallyAcknowledgeChunksThenInvalidateAndCancelAndDeleteOutboxAttachmentSessionOperation.self) @@ -76,7 +76,7 @@ final class DeleteOutboxAttachmentSessionOperation: Operation { private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, logSubsystem: String, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CancellingAttachmentUploadOperations/MarkAttachmentAsCancelledOperation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CancellingAttachmentUploadOperations/MarkAttachmentAsCancelledOperation.swift index ffb01632..3ef8ded5 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CancellingAttachmentUploadOperations/MarkAttachmentAsCancelledOperation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CancellingAttachmentUploadOperations/MarkAttachmentAsCancelledOperation.swift @@ -42,7 +42,7 @@ final class MarkAttachmentAsCancelledOperation: Operation { } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog private let logCategory = String(describing: ManuallyAcknowledgeChunksThenInvalidateAndCancelAndDeleteOutboxAttachmentSessionOperation.self) @@ -51,7 +51,7 @@ final class MarkAttachmentAsCancelledOperation: Operation { private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, logSubsystem: String, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CleanExistingOutboxAttachmentSessions/ManuallyAcknowledgeChunksThenInvalidateAndCancelAndDeleteOutboxAttachmentSessionOperation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CleanExistingOutboxAttachmentSessions/ManuallyAcknowledgeChunksThenInvalidateAndCancelAndDeleteOutboxAttachmentSessionOperation.swift index fcb2f9aa..0fa75db9 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CleanExistingOutboxAttachmentSessions/ManuallyAcknowledgeChunksThenInvalidateAndCancelAndDeleteOutboxAttachmentSessionOperation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/CleanExistingOutboxAttachmentSessions/ManuallyAcknowledgeChunksThenInvalidateAndCancelAndDeleteOutboxAttachmentSessionOperation.swift @@ -35,7 +35,7 @@ final class ManuallyAcknowledgeChunksThenInvalidateAndCancelAndDeleteOutboxAttac } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog private let logCategory = String(describing: ManuallyAcknowledgeChunksThenInvalidateAndCancelAndDeleteOutboxAttachmentSessionOperation.self) @@ -51,7 +51,7 @@ final class ManuallyAcknowledgeChunksThenInvalidateAndCancelAndDeleteOutboxAttac } override var isFinished: Bool { _isFinished } - init(attachmentId: AttachmentIdentifier, logSubsystem: String, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier, sharedContainerIdentifier: String) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier, sharedContainerIdentifier: String) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/DeletePreviousAttachmentSignedURLsOperation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/DeletePreviousAttachmentSignedURLsOperation.swift index 92cbc748..f7bd0873 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/DeletePreviousAttachmentSignedURLsOperation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/DeletePreviousAttachmentSignedURLsOperation.swift @@ -33,7 +33,7 @@ final class DeletePreviousAttachmentSignedURLsOperation: Operation { } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog private let obvContext: ObvContext @@ -41,7 +41,7 @@ final class DeletePreviousAttachmentSignedURLsOperation: Operation { private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, logSubsystem: String, obvContext: ObvContext) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, obvContext: ObvContext) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/ResumeTaskForGettingAttachmentSignedURLsOperation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/ResumeTaskForGettingAttachmentSignedURLsOperation.swift index b7d1e298..06f18566 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/ResumeTaskForGettingAttachmentSignedURLsOperation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/GettingAttachmentSignedURLs/ResumeTaskForGettingAttachmentSignedURLsOperation.swift @@ -41,7 +41,7 @@ final class ResumeTaskForGettingAttachmentSignedURLsOperation: Operation { } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let logSubsystem: String private let log: OSLog private let obvContext: ObvContext @@ -55,7 +55,7 @@ final class ResumeTaskForGettingAttachmentSignedURLsOperation: Operation { private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, logSubsystem: String, obvContext: ObvContext, identityDelegate: ObvIdentityDelegate, attachmentChunksSignedURLsTracker: AttachmentChunksSignedURLsTracker, appType: AppType, delegate: FinalizeSignedURLsOperationsDelegate) { + init(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, obvContext: ObvContext, identityDelegate: ObvIdentityDelegate, attachmentChunksSignedURLsTracker: AttachmentChunksSignedURLsTracker, appType: AppType, delegate: FinalizeSignedURLsOperationsDelegate) { self.attachmentId = attachmentId self.logSubsystem = logSubsystem self.log = OSLog(subsystem: logSubsystem, category: logCategory) @@ -180,6 +180,6 @@ extension ResumeTaskForGettingAttachmentSignedURLsOperation { protocol FinalizeSignedURLsOperationsDelegate: AnyObject { - func signedURLsOperationsAreFinished(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: ResumeTaskForGettingAttachmentSignedURLsOperation.ReasonForCancel?) + func signedURLsOperationsAreFinished(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: ResumeTaskForGettingAttachmentSignedURLsOperation.ReasonForCancel?) } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/QueryServerForAttachmentsProgressesSentByShareExtension/QueryServerForAttachmentsProgressesSentByShareExtensionOperation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/QueryServerForAttachmentsProgressesSentByShareExtension/QueryServerForAttachmentsProgressesSentByShareExtensionOperation.swift index a42c312c..2a8b928b 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/QueryServerForAttachmentsProgressesSentByShareExtension/QueryServerForAttachmentsProgressesSentByShareExtensionOperation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/QueryServerForAttachmentsProgressesSentByShareExtension/QueryServerForAttachmentsProgressesSentByShareExtensionOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -120,7 +120,7 @@ final class QueryServerForAttachmentsProgressesSentByShareExtensionOperation: Op let sessionConfiguration = URLSessionConfiguration.ephemeral sessionConfiguration.useOlvidSettings(sharedContainerIdentifier: nil) let session = URLSession(configuration: sessionConfiguration, delegate: sessionDelegate, delegateQueue: nil) - + let methods: [GetAttachmentUploadProgressMethod] = attachmentsSentByShareExtension.map { let method = GetAttachmentUploadProgressMethod(attachmentId: $0.attachmentId, serverURL: $0.serverURL, flowId: flowId) method.identityDelegate = identityDelegate @@ -129,7 +129,6 @@ final class QueryServerForAttachmentsProgressesSentByShareExtensionOperation: Op for method in methods { do { let task = try method.dataTask(within: session) - task.setAssociatedAttachmentId(method.attachmentId) sessionDelegate.insert(task, forAttachmentId: method.attachmentId, flowId: flowId) task.resume() } catch let error { @@ -146,7 +145,7 @@ final class QueryServerForAttachmentsProgressesSentByShareExtensionOperation: Op fileprivate struct AttachmentIdAndServerURL: Hashable { - let attachmentId: AttachmentIdentifier + let attachmentId: ObvAttachmentIdentifier let serverURL: URL } @@ -156,7 +155,7 @@ final class GetAttachmentUploadProgressMethodSessionDelegate: NSObject, URLSessi private weak var delegateManager: ObvNetworkSendDelegateManager? private weak var tracker: AttachmentChunkUploadProgressTracker? - private var _currentTasks = [UIBackgroundTaskIdentifier: (attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() + private var _currentTasks = [UIBackgroundTaskIdentifier: (attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() private let currentTasksQueue = DispatchQueue(label: "GetAttachmentUploadProgressMethodSessionDelegate") private let log: OSLog @@ -165,7 +164,7 @@ final class GetAttachmentUploadProgressMethodSessionDelegate: NSObject, URLSessi super.init() } - private func currentTaskExistsForAttachment(withId id: AttachmentIdentifier) -> Bool { + private func currentTaskExistsForAttachment(withId id: ObvAttachmentIdentifier) -> Bool { var exist = true currentTasksQueue.sync { exist = _currentTasks.values.contains(where: { $0.attachmentId == id }) @@ -173,23 +172,23 @@ final class GetAttachmentUploadProgressMethodSessionDelegate: NSObject, URLSessi return exist } - private func removeInfoFor(_ task: URLSessionTask) -> (attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (AttachmentIdentifier, FlowIdentifier, Data)? = nil + private func removeInfoFor(_ task: URLSessionTask) -> (attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvAttachmentIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentTasks.removeValue(forKey: UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)) } return info } - private func getInfoFor(_ task: URLSessionTask) -> (attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (AttachmentIdentifier, FlowIdentifier, Data)? = nil + private func getInfoFor(_ task: URLSessionTask) -> (attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvAttachmentIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] } return info } - fileprivate func insert(_ task: URLSessionTask, forAttachmentId attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) { + fileprivate func insert(_ task: URLSessionTask, forAttachmentId attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) { currentTasksQueue.sync { _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (attachmentId, flowId, Data()) } @@ -244,18 +243,3 @@ final class GetAttachmentUploadProgressMethodSessionDelegate: NSObject, URLSessi } } } - - -// MARK: - Extending URLSessionTask for storing chunk numbers within the description - -fileprivate extension URLSessionTask { - - func getAssociatedAttachmentId() -> AttachmentIdentifier? { - guard let taskDescription = self.taskDescription else { return nil } - return AttachmentIdentifier(taskDescription) - } - - func setAssociatedAttachmentId(_ attachmentId: AttachmentIdentifier) { - self.taskDescription = "\(attachmentId.description)" - } -} diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/EncryptAttachmentChunkOperation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/EncryptAttachmentChunkOperation.swift index 4cc85a93..74560b04 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/EncryptAttachmentChunkOperation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/EncryptAttachmentChunkOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -41,7 +41,7 @@ final class EncryptAttachmentChunkOperation: Operation, ObvErrorMaker { static let errorDomain = "EncryptAttachmentChunkOperation" private let uuid = UUID() - let attachmentId: AttachmentIdentifier + let attachmentId: ObvAttachmentIdentifier let chunkNumber: Int private let logSubsystem: String private let log: OSLog @@ -53,7 +53,7 @@ final class EncryptAttachmentChunkOperation: Operation, ObvErrorMaker { private(set) var reasonForCancel: ReasonForCancel? - init(attachmentId: AttachmentIdentifier, chunkNumber: Int, outbox: URL, logSubsystem: String, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate) { + init(attachmentId: ObvAttachmentIdentifier, chunkNumber: Int, outbox: URL, logSubsystem: String, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate) { self.attachmentId = attachmentId self.chunkNumber = chunkNumber self.flowId = flowId @@ -159,12 +159,12 @@ extension EncryptAttachmentChunkOperation { private func writeEncryptedChunkToTempFile(encryptedChunk: EncryptedData, outbox: URL) throws -> URL { // If required, create a directory for all that attachments of the message - let messageDirectory = outbox.appendingPathComponent(attachmentId.messageId.directoryName, isDirectory: true) + let messageDirectory = outbox.appendingPathComponent(attachmentId.messageId.directoryNameForMessageAttachments, isDirectory: true) if !FileManager.default.fileExists(atPath: messageDirectory.path) { try FileManager.default.createDirectory(at: messageDirectory, withIntermediateDirectories: true, attributes: nil) } // If required, create a directory for this attachment - let attachmentDirectory = messageDirectory.appendingPathComponent(attachmentId.directoryName, isDirectory: true) + let attachmentDirectory = messageDirectory.appendingPathComponent(attachmentId.directoryNameForAttachmentChunks, isDirectory: true) if !FileManager.default.fileExists(atPath: attachmentDirectory.path) { try FileManager.default.createDirectory(at: attachmentDirectory, withIntermediateDirectories: true, attributes: nil) } @@ -188,20 +188,3 @@ extension EncryptAttachmentChunkOperation { return size } } - - -extension MessageIdentifier { - - var directoryName: String { - let sha256 = ObvCryptoSuite.sharedInstance.hashFunctionSha256() - return sha256.hash(self.rawValue).hexString() - } - -} - -extension AttachmentIdentifier { - - var directoryName: String { - return "\(self.attachmentNumber)" - } -} diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/FinalizePostAttachmentUploadRequestOperation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/FinalizePostAttachmentUploadRequestOperation.swift index 6bf79422..3ff37f61 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/FinalizePostAttachmentUploadRequestOperation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/FinalizePostAttachmentUploadRequestOperation.swift @@ -50,7 +50,7 @@ final class FinalizePostAttachmentUploadRequestOperation: Operation { } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let flowId: FlowIdentifier private let log: OSLog private let logCategory = String(describing: FinalizePostAttachmentUploadRequestOperation.self) @@ -58,7 +58,7 @@ final class FinalizePostAttachmentUploadRequestOperation: Operation { private weak var delegate: FinalizePostAttachmentUploadRequestOperationDelegate? - init(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, logSubsystem: String, notificationDelegate: ObvNotificationDelegate, delegate: FinalizePostAttachmentUploadRequestOperationDelegate) { + init(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, logSubsystem: String, notificationDelegate: ObvNotificationDelegate, delegate: FinalizePostAttachmentUploadRequestOperationDelegate) { self.attachmentId = attachmentId self.flowId = flowId self.notificationDelegate = notificationDelegate @@ -214,6 +214,6 @@ final class FinalizePostAttachmentUploadRequestOperation: Operation { protocol FinalizePostAttachmentUploadRequestOperationDelegate: AnyObject { - func postAttachmentUploadRequestOperationsAreFinished(attachmentId: AttachmentIdentifier, urlSession: URLSession?, flowId: FlowIdentifier, error: FinalizePostAttachmentUploadRequestOperation.ReasonForCancel?) + func postAttachmentUploadRequestOperationsAreFinished(attachmentId: ObvAttachmentIdentifier, urlSession: URLSession?, flowId: FlowIdentifier, error: FinalizePostAttachmentUploadRequestOperation.ReasonForCancel?) } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/ReCreateURLSessionWithNewDelegateForAttachmentUploadOperation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/ReCreateURLSessionWithNewDelegateForAttachmentUploadOperation.swift index 7eabb8a3..e3cb0896 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/ReCreateURLSessionWithNewDelegateForAttachmentUploadOperation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/Operations/UploadingChunksOperations/ReCreateURLSessionWithNewDelegateForAttachmentUploadOperation.swift @@ -38,7 +38,7 @@ final class ReCreateURLSessionWithNewDelegateForAttachmentUploadOperation: Opera } private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let appType: AppType private let logSubsystem: String private let log: OSLog @@ -52,7 +52,7 @@ final class ReCreateURLSessionWithNewDelegateForAttachmentUploadOperation: Opera private(set) var reasonForCancel: ReasonForCancel? private(set) var urlSession: URLSession? - init(attachmentId: AttachmentIdentifier, appType: AppType, sharedContainerIdentifier: String, logSubsystem: String, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate, attachmentChunkUploadProgressTracker: AttachmentChunkUploadProgressTracker) { + init(attachmentId: ObvAttachmentIdentifier, appType: AppType, sharedContainerIdentifier: String, logSubsystem: String, flowId: FlowIdentifier, contextCreator: ObvCreateContextDelegate, attachmentChunkUploadProgressTracker: AttachmentChunkUploadProgressTracker) { self.attachmentId = attachmentId self.flowId = flowId self.appType = appType diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/SessionDelegates/GetSignedURLsSessionDelegate.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/SessionDelegates/GetSignedURLsSessionDelegate.swift index 691a5183..7c515ef1 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/SessionDelegates/GetSignedURLsSessionDelegate.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/SessionDelegates/GetSignedURLsSessionDelegate.swift @@ -29,7 +29,7 @@ import OlvidUtils final class GetSignedURLsSessionDelegate: NSObject { private let uuid = UUID() - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let obvContext: ObvContext private let appType: AppType private let log: OSLog @@ -62,7 +62,7 @@ final class GetSignedURLsSessionDelegate: NSObject { } } - init(attachmentId: AttachmentIdentifier, obvContext: ObvContext, appType: AppType, logSubsystem: String, attachmentChunksSignedURLsTracker: AttachmentChunksSignedURLsTracker) { + init(attachmentId: ObvAttachmentIdentifier, obvContext: ObvContext, appType: AppType, logSubsystem: String, attachmentChunksSignedURLsTracker: AttachmentChunksSignedURLsTracker) { self.attachmentId = attachmentId self.obvContext = obvContext self.appType = appType @@ -77,7 +77,7 @@ final class GetSignedURLsSessionDelegate: NSObject { // MARK: - Tracker protocol AttachmentChunksSignedURLsTracker: AnyObject { - func getSignedURLsSessionDidBecomeInvalid(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: GetSignedURLsSessionDelegate.ErrorForTracker?) + func getSignedURLsSessionDidBecomeInvalid(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: GetSignedURLsSessionDelegate.ErrorForTracker?) } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/SessionDelegates/UploadAttachmentChunksSessionDelegate.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/SessionDelegates/UploadAttachmentChunksSessionDelegate.swift index e23b4ba6..59013272 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/SessionDelegates/UploadAttachmentChunksSessionDelegate.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/SessionDelegates/UploadAttachmentChunksSessionDelegate.swift @@ -29,7 +29,7 @@ final class UploadAttachmentChunksSessionDelegate: NSObject { let uuid = UUID() private let logCategory = String(describing: UploadAttachmentChunksSessionDelegate.self) private let log: OSLog - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let obvContext: ObvContext private let appType: AppType private let queueSynchronizingCallsToTracker = DispatchQueue(label: "Queue for sync tracker calls within UploadAttachmentChunksSessionDelegate") @@ -62,7 +62,7 @@ final class UploadAttachmentChunksSessionDelegate: NSObject { } } - init(attachmentId: AttachmentIdentifier, obvContext: ObvContext, appType: AppType, logSubsystem: String) { + init(attachmentId: ObvAttachmentIdentifier, obvContext: ObvContext, appType: AppType, logSubsystem: String) { self.log = OSLog(subsystem: logSubsystem, category: logCategory) self.attachmentId = attachmentId self.obvContext = obvContext @@ -81,10 +81,10 @@ final class UploadAttachmentChunksSessionDelegate: NSObject { // MARK: - Tracker protocol AttachmentChunkUploadProgressTracker: AnyObject { - func uploadAttachmentChunksSessionDidBecomeInvalid(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: UploadAttachmentChunksSessionDelegate.ErrorForTracker?) + func uploadAttachmentChunksSessionDidBecomeInvalid(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: UploadAttachmentChunksSessionDelegate.ErrorForTracker?) func urlSessionDidFinishEventsForSessionWithIdentifier(_ identifier: String) - func attachmentChunkDidProgress(attachmentId: AttachmentIdentifier, chunkProgress: (chunkNumber: Int, totalBytesSent: Int64, totalBytesExpectedToSend: Int64), flowId: FlowIdentifier) - func attachmentChunksAreAcknowledged(attachmentId: AttachmentIdentifier, chunkNumbers: [Int], flowId: FlowIdentifier) + func attachmentChunkDidProgress(attachmentId: ObvAttachmentIdentifier, chunkProgress: (chunkNumber: Int, totalBytesSent: Int64, totalBytesExpectedToSend: Int64), flowId: FlowIdentifier) + func attachmentChunksAreAcknowledged(attachmentId: ObvAttachmentIdentifier, chunkNumbers: [Int], flowId: FlowIdentifier) } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/UploadAttachmentChunksCoordinator.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/UploadAttachmentChunksCoordinator.swift index ed73264a..5d98fb5e 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/UploadAttachmentChunksCoordinator.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadAttachmentChunksCoordinator/UploadAttachmentChunksCoordinator.swift @@ -83,7 +83,7 @@ final class UploadAttachmentChunksCoordinator: NSObject { // Maps an attachment identifier to its (exact) completed unit count typealias ChunkProgress = (totalBytesSent: Int64, totalBytesExpectedToSend: Int64) - private var _chunksProgressesForAttachment = [AttachmentIdentifier: (chunkProgresses: [ChunkProgress], dateOfLastUpdate: Date)]() + private var _chunksProgressesForAttachment = [ObvAttachmentIdentifier: (chunkProgresses: [ChunkProgress], dateOfLastUpdate: Date)]() private let queueForAttachmentsProgresses = DispatchQueue(label: "Internal queue for attachments progresses", attributes: .concurrent) @@ -121,13 +121,13 @@ final class UploadAttachmentChunksCoordinator: NSObject { } // Calls must be in sync with localQueue - private var _stillUploadingCancelledAttachments = [MessageIdentifier: [AttachmentIdentifier]]() + private var _stillUploadingCancelledAttachments = [ObvMessageIdentifier: [ObvAttachmentIdentifier]]() private func addStillUploadingCancelledAttachmentsOfMessage(_ message: OutboxMessage) { guard let messageId = message.messageId else { assertionFailure(); return } _stillUploadingCancelledAttachments[messageId] = message.attachments.filter({ !$0.acknowledged }).map({ $0.attachmentId }) } /// This method removes the attachmentIds from the list of still uploading attachments of the message. - private func removeStillUploadingCancelledAttachments(attachmentId: AttachmentIdentifier) { + private func removeStillUploadingCancelledAttachments(attachmentId: ObvAttachmentIdentifier) { guard var remaining = _stillUploadingCancelledAttachments[attachmentId.messageId] else { return } remaining.removeAll(where: { $0 == attachmentId }) if remaining.isEmpty { @@ -136,24 +136,24 @@ final class UploadAttachmentChunksCoordinator: NSObject { _stillUploadingCancelledAttachments[attachmentId.messageId] = remaining } } - private func noMoreStillUploadingAttachments(messageId: MessageIdentifier) -> Bool { + private func noMoreStillUploadingAttachments(messageId: ObvMessageIdentifier) -> Bool { !_stillUploadingCancelledAttachments.keys.contains(messageId) } // This array tracks the attachment identifiers that are currently refreshing their signed URLs, so as to prevent an infinite loop of refresh - private var _attachmentIdsRefreshingSignedURLs = Set() + private var _attachmentIdsRefreshingSignedURLs = Set() private let queueForAttachmentIdsRefreshingSignedURLs = DispatchQueue(label: "Queue for sync access to _attachmentIdsRefreshingSignedURLs") - private func attachmentStartsToRefreshSignedURLs(attachmentId: AttachmentIdentifier) { + private func attachmentStartsToRefreshSignedURLs(attachmentId: ObvAttachmentIdentifier) { queueForAttachmentIdsRefreshingSignedURLs.sync { _ = _attachmentIdsRefreshingSignedURLs.insert(attachmentId) } } - private func attachmentStoppedToRefreshSignedURLs(attachmentId: AttachmentIdentifier) { + private func attachmentStoppedToRefreshSignedURLs(attachmentId: ObvAttachmentIdentifier) { queueForAttachmentIdsRefreshingSignedURLs.sync { _ = _attachmentIdsRefreshingSignedURLs.remove(attachmentId) } } - private func attachmentIsAlreadyRefreshingSignedURLs(attachmentId: AttachmentIdentifier) -> Bool { + private func attachmentIsAlreadyRefreshingSignedURLs(attachmentId: ObvAttachmentIdentifier) -> Bool { var val = false queueForAttachmentIdsRefreshingSignedURLs.sync { val = _attachmentIdsRefreshingSignedURLs.contains(attachmentId) @@ -174,7 +174,7 @@ extension UploadAttachmentChunksCoordinator: UploadAttachmentChunksDelegate { } - func processAllAttachmentsOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func processAllAttachmentsOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -191,7 +191,7 @@ extension UploadAttachmentChunksCoordinator: UploadAttachmentChunksDelegate { return } - var attachmentsRequiringSignedURLs = [AttachmentIdentifier]() + var attachmentsRequiringSignedURLs = [ObvAttachmentIdentifier]() contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in @@ -218,7 +218,7 @@ extension UploadAttachmentChunksCoordinator: UploadAttachmentChunksDelegate { /// We queue an operation that will delete all the signed URLs /// of the attachment, then an operation that resume a download task that gets signed URLs from the server. /// We do so after adding a barrier to the queue, so as to make sure not to interfere with other tasks. - func downloadSignedURLsForAttachments(attachmentIds: [AttachmentIdentifier], flowId: FlowIdentifier) { + func downloadSignedURLsForAttachments(attachmentIds: [ObvAttachmentIdentifier], flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -427,7 +427,7 @@ extension UploadAttachmentChunksCoordinator: UploadAttachmentChunksDelegate { localQueue.async { - var attachmentIds = [AttachmentIdentifier]() + var attachmentIds = [ObvAttachmentIdentifier]() contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in let outboxAttachmentSessions: [OutboxAttachmentSession] do { @@ -456,12 +456,12 @@ extension UploadAttachmentChunksCoordinator: UploadAttachmentChunksDelegate { } - func requestUploadAttachmentProgressesUpdatedSince(date: Date) async -> [AttachmentIdentifier: Float] { + func requestUploadAttachmentProgressesUpdatedSince(date: Date) async -> [ObvAttachmentIdentifier: Float] { - return await withCheckedContinuation { (continuation: CheckedContinuation<[AttachmentIdentifier: Float], Never>) in + return await withCheckedContinuation { (continuation: CheckedContinuation<[ObvAttachmentIdentifier: Float], Never>) in queueForAttachmentsProgresses.async { [weak self] in guard let _self = self else { continuation.resume(returning: [:]); return } - var progressesToReturn = [AttachmentIdentifier: Float]() + var progressesToReturn = [ObvAttachmentIdentifier: Float]() let appropriateChunksProgressesForAttachment = _self._chunksProgressesForAttachment.filter({ $0.value.dateOfLastUpdate > date }) for (attachmentId, value) in appropriateChunksProgressesForAttachment { let totalBytesSent = value.chunkProgresses.map({ $0.totalBytesSent }).reduce(0, +) @@ -511,7 +511,7 @@ extension UploadAttachmentChunksCoordinator: UploadAttachmentChunksDelegate { } - func cancelAllAttachmentsUploadOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) throws { + func cancelAllAttachmentsUploadOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws { assert(currentAppType == .mainApp) guard currentAppType == .mainApp else { return } @@ -632,7 +632,7 @@ extension UploadAttachmentChunksCoordinator { } - private func getOperationsForDownloadingSignedURLsForAttachment(attachmentId: AttachmentIdentifier, logSubsystem: String, obvContext: ObvContext, identityDelegate: ObvIdentityDelegate, appType: AppType) -> [Operation] { + private func getOperationsForDownloadingSignedURLsForAttachment(attachmentId: ObvAttachmentIdentifier, logSubsystem: String, obvContext: ObvContext, identityDelegate: ObvIdentityDelegate, appType: AppType) -> [Operation] { var operations = [Operation]() @@ -655,7 +655,7 @@ extension UploadAttachmentChunksCoordinator { extension UploadAttachmentChunksCoordinator: AttachmentChunksSignedURLsTracker { - func getSignedURLsSessionDidBecomeInvalid(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: GetSignedURLsSessionDelegate.ErrorForTracker?) { + func getSignedURLsSessionDidBecomeInvalid(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: GetSignedURLsSessionDelegate.ErrorForTracker?) { defer { attachmentStoppedToRefreshSignedURLs(attachmentId: attachmentId) @@ -698,7 +698,7 @@ extension UploadAttachmentChunksCoordinator: AttachmentChunksSignedURLsTracker { extension UploadAttachmentChunksCoordinator: AttachmentChunkUploadProgressTracker { - func attachmentChunkDidProgress(attachmentId: AttachmentIdentifier, chunkProgress: (chunkNumber: Int, totalBytesSent: Int64, totalBytesExpectedToSend: Int64), flowId: FlowIdentifier) { + func attachmentChunkDidProgress(attachmentId: ObvAttachmentIdentifier, chunkProgress: (chunkNumber: Int, totalBytesSent: Int64, totalBytesExpectedToSend: Int64), flowId: FlowIdentifier) { guard currentAppType == .mainApp else { return } @@ -743,7 +743,7 @@ extension UploadAttachmentChunksCoordinator: AttachmentChunkUploadProgressTracke } - func attachmentChunksAreAcknowledged(attachmentId: AttachmentIdentifier, chunkNumbers: [Int], flowId: FlowIdentifier) { + func attachmentChunksAreAcknowledged(attachmentId: ObvAttachmentIdentifier, chunkNumbers: [Int], flowId: FlowIdentifier) { guard currentAppType == .mainApp else { return } @@ -769,7 +769,7 @@ extension UploadAttachmentChunksCoordinator: AttachmentChunkUploadProgressTracke } - private func createChunksProgressesForAttachment(attachmentId: AttachmentIdentifier, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier) -> ([ChunkProgress], Date)? { + private func createChunksProgressesForAttachment(attachmentId: ObvAttachmentIdentifier, contextCreator: ObvCreateContextDelegate, flowId: FlowIdentifier) -> ([ChunkProgress], Date)? { /// Must be executed on queueForAttachmentsProgresses assert(currentAppType == .mainApp) var chunksProgressess: ([ChunkProgress], Date)? @@ -781,7 +781,7 @@ extension UploadAttachmentChunksCoordinator: AttachmentChunkUploadProgressTracke } - func uploadAttachmentChunksSessionDidBecomeInvalid(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: UploadAttachmentChunksSessionDelegate.ErrorForTracker?) { + func uploadAttachmentChunksSessionDidBecomeInvalid(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: UploadAttachmentChunksSessionDelegate.ErrorForTracker?) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -889,7 +889,7 @@ extension UploadAttachmentChunksCoordinator: AttachmentChunkUploadProgressTracke extension UploadAttachmentChunksCoordinator: FinalizeSignedURLsOperationsDelegate { - func signedURLsOperationsAreFinished(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier, error: ResumeTaskForGettingAttachmentSignedURLsOperation.ReasonForCancel?) { + func signedURLsOperationsAreFinished(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier, error: ResumeTaskForGettingAttachmentSignedURLsOperation.ReasonForCancel?) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) @@ -939,7 +939,7 @@ extension UploadAttachmentChunksCoordinator: FinalizeSignedURLsOperationsDelegat extension UploadAttachmentChunksCoordinator: FinalizePostAttachmentUploadRequestOperationDelegate { - func postAttachmentUploadRequestOperationsAreFinished(attachmentId: AttachmentIdentifier, urlSession: URLSession?, flowId: FlowIdentifier, error: FinalizePostAttachmentUploadRequestOperation.ReasonForCancel?) { + func postAttachmentUploadRequestOperationsAreFinished(attachmentId: ObvAttachmentIdentifier, urlSession: URLSession?, flowId: FlowIdentifier, error: FinalizePostAttachmentUploadRequestOperation.ReasonForCancel?) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: ObvNetworkSendDelegateManager.defaultLogSubsystem, category: logCategory) diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadMessageAndGetUidsCoordinator.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadMessageAndGetUidsCoordinator.swift index d700dc78..d9f0fff8 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadMessageAndGetUidsCoordinator.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/Coordinators/UploadMessageAndGetUidsCoordinator.swift @@ -44,7 +44,7 @@ final class UploadMessageAndGetUidsCoordinator: NSObject { return URLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) }() - private var _currentTasks = [UIBackgroundTaskIdentifier: (messageId: MessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() + private var _currentTasks = [UIBackgroundTaskIdentifier: (messageId: ObvMessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)]() private let currentTasksQueue = DispatchQueue(label: "UploadMessageAndGetUidsCoordinatorQueueForCurrentTasks") } @@ -54,7 +54,7 @@ final class UploadMessageAndGetUidsCoordinator: NSObject { extension UploadMessageAndGetUidsCoordinator { - private func currentTaskExistsForMessage(withId id: MessageIdentifier) -> Bool { + private func currentTaskExistsForMessage(withId id: ObvMessageIdentifier) -> Bool { var exist = true currentTasksQueue.sync { exist = _currentTasks.values.contains(where: { $0.messageId == id }) @@ -62,23 +62,23 @@ extension UploadMessageAndGetUidsCoordinator { return exist } - private func removeInfoFor(_ task: URLSessionTask) -> (messageId: MessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (MessageIdentifier, FlowIdentifier, Data)? = nil + private func removeInfoFor(_ task: URLSessionTask) -> (messageId: ObvMessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvMessageIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentTasks.removeValue(forKey: UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)) } return info } - private func getInfoFor(_ task: URLSessionTask) -> (messageId: MessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { - var info: (MessageIdentifier, FlowIdentifier, Data)? = nil + private func getInfoFor(_ task: URLSessionTask) -> (messageId: ObvMessageIdentifier, flowId: FlowIdentifier, dataReceived: Data)? { + var info: (ObvMessageIdentifier, FlowIdentifier, Data)? = nil currentTasksQueue.sync { info = _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] } return info } - private func insert(_ task: URLSessionTask, forMessageId messageId: MessageIdentifier, flowId: FlowIdentifier) { + private func insert(_ task: URLSessionTask, forMessageId messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { currentTasksQueue.sync { _currentTasks[UIBackgroundTaskIdentifier(rawValue: task.taskIdentifier)] = (messageId, flowId, Data()) } @@ -109,7 +109,7 @@ extension UploadMessageAndGetUidsCoordinator: UploadMessageAndGetUidDelegate { case failedToCreateTask(error: Error) } - func getIdFromServerUploadMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) { + func getIdFromServerUploadMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) @@ -124,7 +124,7 @@ extension UploadMessageAndGetUidsCoordinator: UploadMessageAndGetUidDelegate { return } - os_log("Will try to get Id from server for message %{public}@ within flow %{public}@", log: log, type: .fault, messageId.debugDescription, flowId.debugDescription) + os_log("Will try to get Id from server for message %{public}@ within flow %{public}@", log: log, type: .info, messageId.debugDescription, flowId.debugDescription) var syncQueueOutput: SyncQueueOutput? // The state after the localQueue.sync is executed @@ -219,7 +219,7 @@ extension UploadMessageAndGetUidsCoordinator: UploadMessageAndGetUidDelegate { } - func cancelMessageUpload(messageId: MessageIdentifier, flowId: FlowIdentifier) throws { + func cancelMessageUpload(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws { guard let delegateManager = delegateManager else { let log = OSLog(subsystem: defaultLogSubsystem, category: logCategory) diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/DeletedOutboxMessage.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/DeletedOutboxMessage.swift index 182fef7f..0a39c035 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/DeletedOutboxMessage.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/DeletedOutboxMessage.swift @@ -44,15 +44,15 @@ final class DeletedOutboxMessage: NSManagedObject, ObvManagedObject { // MARK: Other variables - private(set) var messageId: MessageIdentifier { - get { return MessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } + private(set) var messageId: ObvMessageIdentifier { + get { return ObvMessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } set { self.rawMessageIdOwnedIdentity = newValue.ownedCryptoIdentity.getIdentity(); self.rawMessageIdUid = newValue.uid.raw } } weak var delegateManager: ObvNetworkSendDelegateManager? var obvContext: ObvContext? - private convenience init(messageId: MessageIdentifier, timestampFromServer: Date, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) { + private convenience init(messageId: ObvMessageIdentifier, timestampFromServer: Date, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) { let entityDescription = NSEntityDescription.entity(forEntityName: DeletedOutboxMessage.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) self.messageId = messageId @@ -61,7 +61,7 @@ final class DeletedOutboxMessage: NSManagedObject, ObvManagedObject { self.insertionDate = Date() } - static func getOrCreate(messageId: MessageIdentifier, timestampFromServer: Date, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) throws -> DeletedOutboxMessage { + static func getOrCreate(messageId: ObvMessageIdentifier, timestampFromServer: Date, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) throws -> DeletedOutboxMessage { if let existingDeletedOutboxMessage = try DeletedOutboxMessage.getDeletedOutboxMessage(messageId: messageId, delegateManager: delegateManager, within: obvContext) { assertionFailure("In practice, this should never occur") return existingDeletedOutboxMessage @@ -85,7 +85,7 @@ extension DeletedOutboxMessage { case timestampFromServer = "timestampFromServer" } - static func withMessageId(_ messageId: MessageIdentifier) -> NSPredicate { + static func withMessageId(_ messageId: ObvMessageIdentifier) -> NSPredicate { NSCompoundPredicate(andPredicateWithSubpredicates: [ NSPredicate(Key.rawMessageIdOwnedIdentity, EqualToData: messageId.ownedCryptoIdentity.getIdentity()), NSPredicate(Key.rawMessageIdUid, EqualToData: messageId.uid.raw), @@ -113,7 +113,7 @@ extension DeletedOutboxMessage { return items.map { $0.delegateManager = delegateManager; return $0 } } - private static func getDeletedOutboxMessage(messageId: MessageIdentifier, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) throws -> DeletedOutboxMessage? { + private static func getDeletedOutboxMessage(messageId: ObvMessageIdentifier, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) throws -> DeletedOutboxMessage? { let request: NSFetchRequest = DeletedOutboxMessage.fetchRequest() request.predicate = Predicate.withMessageId(messageId) request.fetchLimit = 1 @@ -123,7 +123,7 @@ extension DeletedOutboxMessage { return item } - static func batchDelete(messageId: MessageIdentifier, within obvContext: ObvContext) throws { + static func batchDelete(messageId: ObvMessageIdentifier, within obvContext: ObvContext) throws { let fetchRequest = NSFetchRequest(entityName: DeletedOutboxMessage.entityName) fetchRequest.predicate = Predicate.withMessageId(messageId) let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest) diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/MessageHeader.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/MessageHeader.swift index b1c1e72e..862e103e 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/MessageHeader.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/MessageHeader.swift @@ -66,8 +66,8 @@ final class MessageHeader: NSManagedObject, ObvManagedObject { // MARK: Other variables - private(set) var messageId: MessageIdentifier { - get { return MessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } + private(set) var messageId: ObvMessageIdentifier { + get { return ObvMessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } set { self.rawMessageIdOwnedIdentity = newValue.ownedCryptoIdentity.getIdentity(); self.rawMessageIdUid = newValue.uid.raw } } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxAttachment.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxAttachment.swift index 3f56d3af..43810623 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxAttachment.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxAttachment.swift @@ -112,13 +112,13 @@ final class OutboxAttachment: NSManagedObject, ObvManagedObject { return message.uploaded && !self.acknowledged && !self.cancelExternallyRequested } - private(set) var messageId: MessageIdentifier { - get { MessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } + private(set) var messageId: ObvMessageIdentifier { + get { ObvMessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } set { self.rawMessageIdOwnedIdentity = newValue.ownedCryptoIdentity.getIdentity(); self.rawMessageIdUid = newValue.uid.raw } } - var attachmentId: AttachmentIdentifier { - AttachmentIdentifier(messageId: self.messageId, attachmentNumber: self.attachmentNumber) + var attachmentId: ObvAttachmentIdentifier { + ObvAttachmentIdentifier(messageId: self.messageId, attachmentNumber: self.attachmentNumber) } var canBeDeleted: Bool { acknowledged || cancelExternallyRequested } @@ -153,7 +153,7 @@ final class OutboxAttachment: NSManagedObject, ObvManagedObject { guard let messageId = message.messageId else { throw Self.makeError(message: "Could not determine the message Id") } - guard try OutboxAttachment.get(attachmentId: AttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber), within: obvContext) == nil else { + guard try OutboxAttachment.get(attachmentId: ObvAttachmentIdentifier(messageId: messageId, attachmentNumber: attachmentNumber), within: obvContext) == nil else { throw Self.makeError(message: "An OutboxAttachment with the same primary key already exists") } let entityDescription = NSEntityDescription.entity(forEntityName: OutboxAttachment.entityName, in: obvContext)! @@ -291,7 +291,7 @@ extension OutboxAttachment { } - static func get(attachmentId: AttachmentIdentifier, within obvContext: ObvContext) throws -> OutboxAttachment? { + static func get(attachmentId: ObvAttachmentIdentifier, within obvContext: ObvContext) throws -> OutboxAttachment? { let request: NSFetchRequest = OutboxAttachment.fetchRequest() request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %d", rawMessageIdOwnedIdentityKey, attachmentId.messageId.ownedCryptoIdentity.getIdentity() as NSData, diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxAttachmentChunk.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxAttachmentChunk.swift index 9744203f..841ac6b6 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxAttachmentChunk.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxAttachmentChunk.swift @@ -85,13 +85,13 @@ final class OutboxAttachmentChunk: NSManagedObject, ObvManagedObject { } } - private(set) var messageId: MessageIdentifier { - get { return MessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } + private(set) var messageId: ObvMessageIdentifier { + get { return ObvMessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } set { self.rawMessageIdOwnedIdentity = newValue.ownedCryptoIdentity.getIdentity(); self.rawMessageIdUid = newValue.uid.raw } } - private(set) var attachmentId: AttachmentIdentifier { - get { return AttachmentIdentifier(messageId: self.messageId, attachmentNumber: self.attachmentNumber) } + private(set) var attachmentId: ObvAttachmentIdentifier { + get { return ObvAttachmentIdentifier(messageId: self.messageId, attachmentNumber: self.attachmentNumber) } set { self.messageId = newValue.messageId; self.attachmentNumber = newValue.attachmentNumber } } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxMessage.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxMessage.swift index 485f4ffe..d912074a 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxMessage.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/CoreData/OutboxMessage.swift @@ -78,10 +78,10 @@ final class OutboxMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { // MARK: Other variables /// Expected to be non-nil. We never allow setting this identifier to `nil`. - private(set) var messageId: MessageIdentifier? { + private(set) var messageId: ObvMessageIdentifier? { get { guard !isDeleted else { return nil } - return MessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid) + return ObvMessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid) } set { guard let newValue = newValue else { assertionFailure(); return } @@ -90,7 +90,7 @@ final class OutboxMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { } /// Always `nil`, unless this outbox message get deleted - private var messageIdWhenDeleted: MessageIdentifier? + private var messageIdWhenDeleted: ObvMessageIdentifier? private(set) var messageUidFromServer: UID? { get { guard let uid = self.rawMessageUidFromServer else { return nil }; return UID(uid: uid) } @@ -125,7 +125,7 @@ final class OutboxMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { // MARK: - Initializer - convenience init?(messageId: MessageIdentifier, serverURL: URL, encryptedContent: EncryptedData, encryptedExtendedMessagePayload: EncryptedData?, isAppMessageWithUserContent: Bool, isVoipMessage: Bool, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) { + convenience init?(messageId: ObvMessageIdentifier, serverURL: URL, encryptedContent: EncryptedData, encryptedExtendedMessagePayload: EncryptedData?, isAppMessageWithUserContent: Bool, isVoipMessage: Bool, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) { do { guard try OutboxMessage.get(messageId: messageId, delegateManager: delegateManager, within: obvContext) == nil else { assertionFailure(); return nil } @@ -215,7 +215,7 @@ extension OutboxMessage { case unsortedAttachments = "unsortedAttachments" } - static func withMessageId(_ messageId: MessageIdentifier) -> NSPredicate { + static func withMessageId(_ messageId: ObvMessageIdentifier) -> NSPredicate { NSCompoundPredicate(andPredicateWithSubpredicates: [ NSPredicate(Key.rawMessageIdOwnedIdentity, EqualToData: messageId.ownedCryptoIdentity.getIdentity()), NSPredicate(Key.rawMessageIdUid, EqualToData: messageId.uid.raw), @@ -243,7 +243,7 @@ extension OutboxMessage { return NSFetchRequest(entityName: OutboxMessage.entityName) } - static func get(messageId: MessageIdentifier, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) throws -> OutboxMessage? { + static func get(messageId: ObvMessageIdentifier, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) throws -> OutboxMessage? { let request: NSFetchRequest = OutboxMessage.fetchRequest() request.predicate = Predicate.withMessageId(messageId) request.fetchLimit = 1 @@ -267,7 +267,7 @@ extension OutboxMessage { return items.map { $0.delegateManager = delegateManager; return $0 } } - static func delete(messageId: MessageIdentifier, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) throws { + static func delete(messageId: ObvMessageIdentifier, delegateManager: ObvNetworkSendDelegateManager, within obvContext: ObvContext) throws { let request: NSFetchRequest = OutboxMessage.fetchRequest() request.predicate = Predicate.withMessageId(messageId) guard let item = try obvContext.fetch(request).first else { return } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/FailedFetchAttemptsCounterManager.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/FailedFetchAttemptsCounterManager.swift index 229b8dee..acbb2e76 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/FailedFetchAttemptsCounterManager.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/FailedFetchAttemptsCounterManager.swift @@ -28,12 +28,12 @@ struct FailedFetchAttemptsCounterManager { private let queue = DispatchQueue(label: "FailedFetchAttemptsCounterManagerQueue") enum Counter { - case uploadMessage(messageId: MessageIdentifier) - case uploadAttachment(attachmentId: AttachmentIdentifier) + case uploadMessage(messageId: ObvMessageIdentifier) + case uploadAttachment(attachmentId: ObvAttachmentIdentifier) } - private var _uploadMessage = [MessageIdentifier: Int]() - private var _uploadAttachment = [AttachmentIdentifier: Int]() + private var _uploadMessage = [ObvMessageIdentifier: Int]() + private var _uploadAttachment = [ObvAttachmentIdentifier: Int]() mutating func incrementAndGetDelay(_ counter: Counter, increment: Int = 1) -> Int { var localCounter = 0 diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/DownloadPrivateURLsForAttachmentChunksUploadDelegate.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/DownloadPrivateURLsForAttachmentChunksUploadDelegate.swift index 2d2a4eb2..0168538a 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/DownloadPrivateURLsForAttachmentChunksUploadDelegate.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/DownloadPrivateURLsForAttachmentChunksUploadDelegate.swift @@ -26,6 +26,6 @@ import OlvidUtils protocol DownloadPrivateURLsForAttachmentChunksUploadDelegate { - func downloadPrivateUrlsForAttachmentWithId(_ attachmentId: AttachmentIdentifier, withinFlowId flowId: FlowIdentifier) + func downloadPrivateUrlsForAttachmentWithId(_ attachmentId: ObvAttachmentIdentifier, withinFlowId flowId: FlowIdentifier) } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/NetworkSendFlowDelegate.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/NetworkSendFlowDelegate.swift index d7a515fa..abb85966 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/NetworkSendFlowDelegate.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/NetworkSendFlowDelegate.swift @@ -27,22 +27,22 @@ protocol NetworkSendFlowDelegate { func post(_: ObvNetworkMessageToSend, within: ObvContext) throws - func newOutboxMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) + func newOutboxMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) - func failedUploadAndGetUidOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) - func successfulUploadOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) - func messageAndAttachmentsWereExternallyCancelledAndCanSafelyBeDeletedNow(messageId: MessageIdentifier, flowId: FlowIdentifier) + func failedUploadAndGetUidOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) + func successfulUploadOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) + func messageAndAttachmentsWereExternallyCancelledAndCanSafelyBeDeletedNow(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) - func newProgressForAttachment(attachmentId: AttachmentIdentifier) + func newProgressForAttachment(attachmentId: ObvAttachmentIdentifier) func storeCompletionHandler(_: @escaping () -> Void, forHandlingEventsForBackgroundURLSessionWithIdentifier: String, withinFlowId: FlowIdentifier) func backgroundURLSessionIdentifierIsAppropriate(backgroundURLSessionIdentifier: String) -> Bool - func signedURLsDownloadFailedForAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func acknowledgedAttachment(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) - func attachmentFailedToUpload(attachmentId: AttachmentIdentifier, flowId: FlowIdentifier) + func signedURLsDownloadFailedForAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + func acknowledgedAttachment(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) + func attachmentFailedToUpload(attachmentId: ObvAttachmentIdentifier, flowId: FlowIdentifier) - func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] + func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] - func messageAndAttachmentsWereDeletedFromTheirOutboxes(messageId: MessageIdentifier, flowId: FlowIdentifier) + func messageAndAttachmentsWereDeletedFromTheirOutboxes(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) func sendNetworkOperationFailedSinceOwnedIdentityIsNotActive(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/TryToDeleteMessageAndAttachmentsDelegate.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/TryToDeleteMessageAndAttachmentsDelegate.swift index 7ad3237b..177c3038 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/TryToDeleteMessageAndAttachmentsDelegate.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/TryToDeleteMessageAndAttachmentsDelegate.swift @@ -24,6 +24,6 @@ import OlvidUtils protocol TryToDeleteMessageAndAttachmentsDelegate { - func tryToDeleteMessageAndAttachments(messageId: MessageIdentifier, flowId: FlowIdentifier) + func tryToDeleteMessageAndAttachments(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/UploadAttachmentChunksDelegate.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/UploadAttachmentChunksDelegate.swift index 4b7c7d5f..cbba8fa9 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/UploadAttachmentChunksDelegate.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/UploadAttachmentChunksDelegate.swift @@ -25,13 +25,13 @@ import OlvidUtils protocol UploadAttachmentChunksDelegate { func backgroundURLSessionIdentifierIsAppropriate(backgroundURLSessionIdentifier: String) -> Bool - func processAllAttachmentsOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) - func downloadSignedURLsForAttachments(attachmentIds: [AttachmentIdentifier], flowId: FlowIdentifier) + func processAllAttachmentsOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) + func downloadSignedURLsForAttachments(attachmentIds: [ObvAttachmentIdentifier], flowId: FlowIdentifier) func resumeMissingAttachmentUploads(flowId: FlowIdentifier) func processCompletionHandler(_ handler: @escaping () -> Void, forHandlingEventsForBackgroundURLSessionWithIdentifier identifer: String, withinFlowId flowId: FlowIdentifier) func cleanExistingOutboxAttachmentSessionsCreatedBy(_ creatorAppType: AppType, flowId: FlowIdentifier) - func requestUploadAttachmentProgressesUpdatedSince(date: Date) async -> [AttachmentIdentifier: Float] + func requestUploadAttachmentProgressesUpdatedSince(date: Date) async -> [ObvAttachmentIdentifier: Float] func queryServerOnSessionsTasksCreatedByShareExtension(flowId: FlowIdentifier) - func cancelAllAttachmentsUploadOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) throws + func cancelAllAttachmentsUploadOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/UploadMessageAndGetUidDelegate.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/UploadMessageAndGetUidDelegate.swift index 968f18aa..0d87c8f4 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/UploadMessageAndGetUidDelegate.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/InternalDelegates/UploadMessageAndGetUidDelegate.swift @@ -23,6 +23,6 @@ import ObvMetaManager import OlvidUtils protocol UploadMessageAndGetUidDelegate { - func getIdFromServerUploadMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) - func cancelMessageUpload(messageId: MessageIdentifier, flowId: FlowIdentifier) throws + func getIdFromServerUploadMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) + func cancelMessageUpload(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/ObvNetworkSendManagerImplementation.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/ObvNetworkSendManagerImplementation.swift index 7789ec1a..9c06ceb8 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/ObvNetworkSendManagerImplementation.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/ObvNetworkSendManagerImplementation.swift @@ -132,7 +132,7 @@ extension ObvNetworkSendManagerImplementation { } - public func cancelPostOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) throws { + public func cancelPostOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws { try delegateManager.uploadMessageAndGetUidsDelegate.cancelMessageUpload(messageId: messageId, flowId: flowId) try delegateManager.uploadAttachmentChunksDelegate.cancelAllAttachmentsUploadOfMessage(messageId: messageId, flowId: flowId) @@ -150,7 +150,7 @@ extension ObvNetworkSendManagerImplementation { return delegateManager.networkSendFlowDelegate.backgroundURLSessionIdentifierIsAppropriate(backgroundURLSessionIdentifier: backgroundURLSessionIdentifier) } - public func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] { + public func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] { return try await delegateManager.networkSendFlowDelegate.requestUploadAttachmentProgressesUpdatedSince(date: date) } @@ -158,7 +158,7 @@ extension ObvNetworkSendManagerImplementation { bootstrapWorker.replayTransactionsHistory(transactions: transactions, within: obvContext) } - public func deleteHistoryConcerningTheAcknowledgementOfOutboxMessage(messageIdentifier: MessageIdentifier, flowId: FlowIdentifier) async { + public func deleteHistoryConcerningTheAcknowledgementOfOutboxMessage(messageIdentifier: ObvMessageIdentifier, flowId: FlowIdentifier) async { await bootstrapWorker.deleteHistoryConcerningTheAcknowledgementOfOutboxMessage(messageIdentifier: messageIdentifier, flowId: flowId) } diff --git a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/ObvNetworkSendManagerImplementationDummy.swift b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/ObvNetworkSendManagerImplementationDummy.swift index 59c67472..16bc26ba 100644 --- a/Engine/ObvNetworkSendManager/ObvNetworkSendManager/ObvNetworkSendManagerImplementationDummy.swift +++ b/Engine/ObvNetworkSendManager/ObvNetworkSendManager/ObvNetworkSendManagerImplementationDummy.swift @@ -57,7 +57,7 @@ public final class ObvNetworkSendManagerImplementationDummy: ObvNetworkPostDeleg os_log("post(_: ObvNetworkMessageToSend, within: ObvContext) does nothing in this dummy implementation", log: log, type: .error) } - public func cancelPostOfMessage(messageId: MessageIdentifier, flowId: FlowIdentifier) throws { + public func cancelPostOfMessage(messageId: ObvMessageIdentifier, flowId: FlowIdentifier) throws { os_log("cancelPostOfMessage(messageId: MessageIdentifier) does nothing in this dummy implementation", log: log, type: .error) } @@ -70,7 +70,7 @@ public final class ObvNetworkSendManagerImplementationDummy: ObvNetworkPostDeleg return false } - public func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [AttachmentIdentifier: Float] { + public func requestUploadAttachmentProgressesUpdatedSince(date: Date) async throws -> [ObvAttachmentIdentifier: Float] { os_log("requestUploadAttachmentProgressesUpdatedSince does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "requestUploadAttachmentProgressesUpdatedSince does nothing in this dummy implementation") } @@ -90,7 +90,7 @@ public final class ObvNetworkSendManagerImplementationDummy: ObvNetworkPostDeleg public func replayTransactionsHistory(transactions: [NSPersistentHistoryTransaction], within: ObvContext) {} - public func deleteHistoryConcerningTheAcknowledgementOfOutboxMessage(messageIdentifier: MessageIdentifier, flowId: FlowIdentifier) async {} + public func deleteHistoryConcerningTheAcknowledgementOfOutboxMessage(messageIdentifier: ObvMessageIdentifier, flowId: FlowIdentifier) async {} public func deleteHistoryConcerningTheAcknowledgementOfOutboxMessages(withTimestampFromServerEarlierOrEqualTo referenceDate: Date, flowId: FlowIdentifier) async {} diff --git a/Engine/ObvOperation/ObvOperation/Operations/ObvOperation.swift b/Engine/ObvOperation/ObvOperation/Operations/ObvOperation.swift index dcf34910..d72abe46 100644 --- a/Engine/ObvOperation/ObvOperation/Operations/ObvOperation.swift +++ b/Engine/ObvOperation/ObvOperation/Operations/ObvOperation.swift @@ -28,7 +28,7 @@ import ObvCrypto static let defaultLogSubsystem = "io.olvid.operation" private let log = OSLog(subsystem: ObvOperation.defaultLogSubsystem, category: "ObvOperation") - open var className: String { return "ObvOperation" } + open var debugClassName: String { return "ObvOperation" } private static let internalDispatchQueue = DispatchQueue.init(label: "io.olvid.obvoperation.internal") @@ -134,7 +134,7 @@ import ObvCrypto let uid: UID? // This is essentially to prevent the execution of two `ObvOperation`s with the same uid lazy public var operationIdentifier: ObvOperationIdentifier? = { guard let uid = uid else { return nil } - return ObvOperationIdentifier.init(className: className, uid: uid) + return ObvOperationIdentifier.init(className: debugClassName, uid: uid) }() private static var identifiersOfOperationsCurrentlyExecuting = Set() @@ -239,7 +239,7 @@ import ObvCrypto /// This method is called by the operation queue override public final func start() { - os_log("This ObvOperation did start: %@", log: log, type: .debug, self.operationIdentifier?.debugDescription ?? self.className) + os_log("This ObvOperation did start: %@", log: log, type: .debug, self.operationIdentifier?.debugDescription ?? self.debugClassName) guard state == .Ready else { os_log("An ObvOperation must be queued on an operation queue", log: log, type: .fault) @@ -295,7 +295,7 @@ import ObvCrypto delegate?.operationDidFinish(operation: self) - os_log("ObvOperation did finish: %@", log: log, type: .debug, self.operationIdentifier?.debugDescription ?? self.className) + os_log("ObvOperation did finish: %@", log: log, type: .debug, self.operationIdentifier?.debugDescription ?? self.debugClassName) } } } diff --git a/Engine/ObvOperation/ObvOperation/Operations/ObvOperationWithPriorityWrapper.swift b/Engine/ObvOperation/ObvOperation/Operations/ObvOperationWithPriorityWrapper.swift index fdffb590..72246348 100644 --- a/Engine/ObvOperation/ObvOperation/Operations/ObvOperationWithPriorityWrapper.swift +++ b/Engine/ObvOperation/ObvOperation/Operations/ObvOperationWithPriorityWrapper.swift @@ -23,8 +23,8 @@ import os.log open class ObvOperationWithPriorityWrapper: ObvOperationWithPriority, OperationDelegate { - override open var className: String { - return "ObvOperationWithPriorityWrapper<\(wrappedOperation.className)>" + open override var debugClassName: String { + return "ObvOperationWithPriorityWrapper<\(wrappedOperation.debugClassName)>" } let log = OSLog(subsystem: ObvOperation.defaultLogSubsystem, category: "ObvOperationWithPriorityWrapper") diff --git a/Engine/ObvOperation/ObvOperation/Operations/ObvOperationWrapper.swift b/Engine/ObvOperation/ObvOperation/Operations/ObvOperationWrapper.swift index 911ba49a..d84378c8 100644 --- a/Engine/ObvOperation/ObvOperation/Operations/ObvOperationWrapper.swift +++ b/Engine/ObvOperation/ObvOperation/Operations/ObvOperationWrapper.swift @@ -22,8 +22,8 @@ import os.log open class ObvOperationWrapper: ObvOperation { - override open var className: String { - return "ObvOperationWrapper<\(wrappedOperation.className)>" + override open var debugClassName: String { + return "ObvOperationWrapper<\(wrappedOperation.debugClassName)>" } let log = OSLog(subsystem: ObvOperation.defaultLogSubsystem, category: "ObvOperationWrapper") @@ -118,6 +118,6 @@ open class ObvOperationWrapper: ObvOperat } deinit { - os_log("This wrapper operation will deinit: %@", log: log, type: .debug, className) + os_log("This wrapper operation will deinit: %@", log: log, type: .debug, debugClassName) } } diff --git a/Engine/ObvOperation/ObvOperation/Queue/ObvOperationNoDuplicateQueue.swift b/Engine/ObvOperation/ObvOperation/Queue/ObvOperationNoDuplicateQueue.swift index 1cfd6452..a1db920b 100644 --- a/Engine/ObvOperation/ObvOperation/Queue/ObvOperationNoDuplicateQueue.swift +++ b/Engine/ObvOperation/ObvOperation/Queue/ObvOperationNoDuplicateQueue.swift @@ -23,8 +23,8 @@ import ObvCrypto private class ObvOperationWrapperForNoDuplicateQueue: ObvOperationWrapper { - override var className: String { - return "ObvOperationWrapperForNoDuplicateQueue<\(String(describing: wrappedOperation.className))>" + override var debugClassName: String { + return "ObvOperationWrapperForNoDuplicateQueue<\(String(describing: wrappedOperation.debugClassName))>" } weak var queue: ObvOperationNoDuplicateQueue? diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ContactTrustLevelWatcher.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ContactTrustLevelWatcher.swift index c5011980..6ee9cb09 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ContactTrustLevelWatcher.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ContactTrustLevelWatcher.swift @@ -137,7 +137,7 @@ final class ContactTrustLevelWatcher { } do { - _ = try channelDelegate.post(protocolMessageToSend, randomizedWith: _self.prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(protocolMessageToSend, randomizedWith: _self.prng, within: obvContext) } catch { os_log("Could not post message", log: log, type: .fault) return @@ -220,7 +220,7 @@ final class ContactTrustLevelWatcher { } do { - _ = try channelDelegate.post(protocolMessageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(protocolMessageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post message", log: log, type: .fault) return diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ProtocolStarterCoordinator.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ProtocolStarterCoordinator.swift index 318c43fb..bad96b04 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ProtocolStarterCoordinator.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ProtocolStarterCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -51,111 +51,32 @@ final class ProtocolStarterCoordinator: ProtocolStarterDelegate { self.prng = prng } + + public func finalizeInitialization(flowId: FlowIdentifier, runningLog: RunningLogError) { + observeNotifications() + } + deinit { notificationCenterTokens.forEach { delegateManager?.notificationDelegate?.removeObserver($0) } } - - // MARK: - Observer notifications - - func tryToObserveIdentityNotifications() { - if let delegateManager = delegateManager, - delegateManager.contextCreator != nil, - let notificationDelegate = delegateManager.notificationDelegate, - delegateManager.identityDelegate != nil, - delegateManager.channelDelegate != nil, - delegateManager.solveChallengeDelegate != nil { - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - - // Listening to `NewContactDevice` notifications - notificationCenterTokens.append(ObvIdentityNotificationNew.observeNewContactDevice(within: notificationDelegate) { [weak self] (ownedIdentity, contactIdentity, contactDeviceUid, flowId) in - os_log("We received a New Contact Device notification", log: log, type: .debug) - do { - try self?.processNewContactDeviceNotification(ownedIdentity: ownedIdentity, - contactIdentity: contactIdentity, - contactDeviceUid: contactDeviceUid, - within: flowId) - } catch { - os_log("Could not process a New Contact Device notification", log: log, type: .fault) - } + private func observeNotifications() { + guard let notificationDelegate = delegateManager?.notificationDelegate else { assertionFailure(); return } + notificationCenterTokens.append(contentsOf: [ + notificationDelegate.addObserverOfOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed { [weak self] payload in + self?.postAbortMessageForOwnedIdentityTransferProtocol(ownedCryptoIdentity: payload.ownedCryptoIdentity, protocolInstanceUID: payload.protocolInstanceUID) + ObvProtocolNotification.anOwnedIdentityTransferProtocolFailed(ownedCryptoIdentity: payload.ownedCryptoIdentity, protocolInstanceUID: payload.protocolInstanceUID, error: payload.error) + .postOnBackgroundQueue(within: notificationDelegate) }) - - do { - let token = ObvIdentityNotificationNew.observeContactIdentityIsNowTrusted(within: notificationDelegate) { [weak self] (contactIdentity, ownedIdentity, flowId) in - do { - try self?.startDeviceDiscoveryProtocolOfContactIdentity(contactIdentity, forOwnedIdentity: ownedIdentity, within: flowId) - } catch { - os_log("Could not process a ContactIdentityIsNowTrusted notification", log: log, type: .fault) - } - } - notificationCenterTokens.append(token) - } - - } - } - - // MARK: - Process notifications - - private func processNewContactDeviceNotification(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUid: UID, within flowId: FlowIdentifier) throws { - - try startChannelCreationWithContactDeviceProtocolBetweenTheCurrentDeviceOf(ownedIdentity, - andTheDeviceUid: contactDeviceUid, - ofTheContactIdentity: contactIdentity, - within: flowId) - + ]) } } // MARK: - Implementing ProtocolStarterDelegate -extension ProtocolStarterCoordinator { - - func startDeviceDiscoveryProtocolOfContactIdentity(_ contactIdentity: ObvCryptoIdentity, forOwnedIdentity ownedIdentity: ObvCryptoIdentity, within flowId: FlowIdentifier) throws { - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - - guard let contextCreator = delegateManager.contextCreator else { - assertionFailure() - os_log("The context creator is not set", log: log, type: .fault) - throw Self.makeError(message: "The context creator is not set") - } - - guard let channelDelegate = delegateManager.channelDelegate else { - assertionFailure() - os_log("The channel delegate is not set", log: log, type: .fault) - throw Self.makeError(message: "The channel delegate is not set") - } - - let protocolInstanceUid = UID.gen(with: prng) - let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .DeviceDiscoveryForContactIdentity, - protocolInstanceUid: protocolInstanceUid) - guard let messageToSend = DeviceDiscoveryForContactIdentityProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity).generateObvChannelProtocolMessageToSend(with: prng) else { - assertionFailure() - os_log("Could create generic protocol message to send", log: log, type: .fault) - throw Self.makeError(message: "Could create generic protocol message to send") - } - let prng = self.prng - - var error: Error? = nil - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - // Create the initial message to send to this new protocol instance and "send" it - do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) - try obvContext.save(logOnFailure: log) - } catch let _error { - error = _error - } - } - guard error == nil else { - throw error! - } - - } - +extension ProtocolStarterCoordinator { func getInitialMessageForTrustEstablishmentProtocol(of contactIdentity: ObvCryptoIdentity, withFullDisplayName contactFullDisplayName: String, forOwnedIdentity ownedIdentity: ObvCryptoIdentity, withOwnedIdentityCoreDetails ownIdentityCoreDetails: ObvIdentityCoreDetails, usingProtocolInstanceUid protocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend { @@ -163,7 +84,7 @@ extension ProtocolStarterCoordinator { // Start the updated version of the TrustEstablishmentProtocol let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .TrustEstablishmentWithSAS, + cryptoProtocolId: .trustEstablishmentWithSAS, protocolInstanceUid: protocolInstanceUid) let initialMessage = TrustEstablishmentWithSASProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity, @@ -177,9 +98,9 @@ extension ProtocolStarterCoordinator { return initialMessageToSend } - - - func getInitialMessageForContactMutualIntroductionProtocol(of identity1: ObvCryptoIdentity, withIdentityCoreDetails details1: ObvIdentityCoreDetails, with identity2: ObvCryptoIdentity, withOtherIdentityCoreDetails details2: ObvIdentityCoreDetails, byOwnedIdentity ownedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid protocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend { + + + func getInitialMessageForContactMutualIntroductionProtocol(of identity1: ObvCryptoIdentity, with identity2: ObvCryptoIdentity, byOwnedIdentity ownedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid protocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) @@ -188,101 +109,53 @@ extension ProtocolStarterCoordinator { protocolInstanceUid: protocolInstanceUid) let initialMessage = ContactMutualIntroductionProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentityA: identity1, - contactIdentityCoreDetailsA: details1, - contactIdentityB: identity2, - contactIdentityCoreDetailsB: details2) + contactIdentityB: identity2) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure() os_log("Could create generic protocol message to send", log: log, type: .fault) throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } return initialMessageToSend - + } - - func startChannelCreationWithContactDeviceProtocolBetweenTheCurrentDeviceOf(_ ownedIdentity: ObvCryptoIdentity, andTheDeviceUid contactDeviceUid: UID, ofTheContactIdentity contactIdentity: ObvCryptoIdentity, within flowId: FlowIdentifier) throws { + + func getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity ownedIdentity: ObvCryptoIdentity, andTheDeviceUid contactDeviceUid: UID, ofTheContactIdentity contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - - os_log("Call to startChannelCreationWithContactDeviceProtocolBetweenTheCurrentDeviceOf", log: log, type: .debug) - - guard let contextCreator = delegateManager.contextCreator else { - assertionFailure() - os_log("The context creator is not set", log: log, type: .fault) - throw Self.makeError(message: "The context creator is not set") - } - guard let identityDelegate = delegateManager.identityDelegate else { - assertionFailure() - os_log("The identity delegate is not set", log: log, type: .fault) - throw Self.makeError(message: "The identity delegate is not set") - } + os_log("🛟 [%{public}@] Call to getInitialMessageForChannelCreationWithContactDeviceProtocol with contact", log: log, type: .info, contactIdentity.debugDescription) - guard let channelDelegate = delegateManager.channelDelegate else { + let protocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), + cryptoProtocolId: .channelCreationWithContactDevice, + protocolInstanceUid: protocolInstanceUid) + let initialMessage = ChannelCreationWithContactDeviceProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure() - os_log("The channel delegate is not set", log: log, type: .fault) - throw Self.makeError(message: "The channel delegate is not set") - } - - var error: Error? = nil - contextCreator.performBackgroundTaskAndWait(flowId: flowId) { (obvContext) in - // We only start a channel creation if the contact is trusted by the owned identity (i.e. is part of the ContactIdentity database for the owned identity), if the contactDeviceUid indeed correspond to a device of the contact, and if a confirmed channel does not already exist - - guard (try? identityDelegate.isIdentity(contactIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext)) == true else { - os_log("The contact is not trusted yet, we do not trigger an Oblivious Channel Creation", log: log, type: .error) - return - } - - guard (try? identityDelegate.isContactIdentityActive(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, within: obvContext)) == true else { - os_log("The contact is inactive, we do not trigger an Oblivious Channel Creation", log: log, type: .error) - return - } - - do { - let contactDeviceUids = try identityDelegate.getDeviceUidsOfContactIdentity(contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) - guard contactDeviceUids.contains(contactDeviceUid) else { - os_log("The device uid is not part the contact's device uids", log: log, type: .error) - return - } - - guard try channelDelegate.aConfirmedObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andRemoteIdentity: contactIdentity, withRemoteDeviceUid: contactDeviceUid, within: obvContext) == false else { - os_log("A confirmed Oblivious Channel already exist, we do not trigger an Oblivious Channel Creation", log: log, type: .debug) - return - } - - // Start a Create the initial message to send to this new protocol instance and "send" it - - let initialMessageToSend = try getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ownedIdentity, andTheDeviceUid: contactDeviceUid, ofTheContactIdentity: contactIdentity) - _ = try channelDelegate.post(initialMessageToSend, randomizedWith: prng, within: obvContext) - - try obvContext.save(logOnFailure: log) - } catch let _error { - error = _error - } - } - guard error == nil else { - throw error! + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - + return initialMessageToSend } - func getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity ownedIdentity: ObvCryptoIdentity, andTheDeviceUid contactDeviceUid: UID, ofTheContactIdentity contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + func getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .ChannelCreationWithContactDevice, + cryptoProtocolId: .channelCreationWithOwnedDevice, protocolInstanceUid: protocolInstanceUid) - let initialMessage = ChannelCreationWithContactDeviceProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid) + let initialMessage = ChannelCreationWithOwnedDeviceProtocol.InitialMessage(coreProtocolMessage: coreMessage, remoteDeviceUid: remoteDeviceUid) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure() os_log("Could create generic protocol message to send", log: log, type: .fault) throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } return initialMessageToSend + } @@ -302,7 +175,7 @@ extension ProtocolStarterCoordinator { let protocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupManagementProtocol.GroupMembersChangedTriggerMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation) @@ -315,15 +188,15 @@ extension ProtocolStarterCoordinator { } - + func getInitiateGroupCreationMessageForGroupManagementProtocol(groupCoreDetails: ObvGroupCoreDetails, photoURL: URL?, pendingGroupMembers: Set, ownedIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { - + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) guard let contextCreator = delegateManager.contextCreator else { throw makeError(message: "The context creator is not set") } guard let identityDelegate = delegateManager.identityDelegate else { throw makeError(message: "The identity delegate is not set") } - + let randomFlowId = FlowIdentifier() try contextCreator.performBackgroundTaskAndWaitOrThrow(flowId: randomFlowId) { (obvContext) in for member in pendingGroupMembers { @@ -337,14 +210,14 @@ extension ProtocolStarterCoordinator { } } } - + let groupDetailsElements = GroupDetailsElements(version: 0, coreDetails: groupCoreDetails, photoServerKeyAndLabel: nil) let groupUid = UID.gen(with: prng) let groupInformationWithPhoto = try GroupInformationWithPhoto(groupOwnerIdentity: ownedIdentity, groupUid: groupUid, groupDetailsElements: groupDetailsElements, photoURL: photoURL) let protocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupManagementProtocol.InitiateGroupCreationMessage(coreProtocolMessage: coreMessage, groupInformationWithPhoto: groupInformationWithPhoto, @@ -357,29 +230,65 @@ extension ProtocolStarterCoordinator { } + func getDisbandGroupMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + + guard let identityDelegate = delegateManager.identityDelegate else { + assertionFailure() + os_log("The identity delegate is not set", log: log, type: .fault) + throw Self.makeError(message: "The identity delegate is not set") + } + + guard let groupStructure = try identityDelegate.getGroupOwnedStructure(ownedIdentity: ownedIdentity, groupUid: groupUid, within: obvContext) else { + throw Self.makeError(message: "Could not get group owned structure") + } + + guard groupStructure.groupType == .owned else { + throw Self.makeError(message: "The group type is not owned") + } + + let groupInformationWithPhoto = try identityDelegate.getGroupOwnedInformationAndPublishedPhoto(ownedIdentity: ownedIdentity, groupUid: groupUid, within: obvContext) + + let protocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), + cryptoProtocolId: .groupManagement, + protocolInstanceUid: protocolInstanceUid) + let initialMessage = GroupManagementProtocol.DisbandGroupMessage(coreProtocolMessage: coreMessage, + groupInformation: groupInformationWithPhoto.groupInformation) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw Self.makeError(message: "Could create generic protocol message to send") + } + return initialMessageToSend + + } + + func getAddGroupMembersMessageForAddingMembersToContactGroupOwnedUsingGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, newGroupMembers: Set, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + guard let identityDelegate = delegateManager.identityDelegate else { assertionFailure() os_log("The identity delegate is not set", log: log, type: .fault) throw Self.makeError(message: "The identity delegate is not set") } - + guard let groupStructure = try identityDelegate.getGroupOwnedStructure(ownedIdentity: ownedIdentity, groupUid: groupUid, within: obvContext) else { throw Self.makeError(message: "Could not get group owned structure") } - + guard groupStructure.groupType == .owned else { throw Self.makeError(message: "The group type is not owned") } - + let groupInformationWithPhoto = try identityDelegate.getGroupOwnedInformationAndPublishedPhoto(ownedIdentity: ownedIdentity, groupUid: groupUid, within: obvContext) - + let protocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupManagementProtocol.AddGroupMembersMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation, @@ -397,7 +306,7 @@ extension ProtocolStarterCoordinator { func getRemoveGroupMembersMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, removedGroupMembers: Set, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let initialMessage = try getRemoveGroupMembersMessageForStartingGroupManagementProtocol( groupUid: groupUid, ownedIdentity: ownedIdentity, @@ -410,7 +319,7 @@ extension ProtocolStarterCoordinator { throw Self.makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } @@ -438,18 +347,18 @@ extension ProtocolStarterCoordinator { if simulateReceivedMessage { coreMessage = CoreProtocolMessage.getLocalCoreProtocolMessageForSimulatingReceivedMessage( ownedIdentity: ownedIdentity, - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) } else { coreMessage = CoreProtocolMessage( channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) } let initialMessage = GroupManagementProtocol.RemoveGroupMembersMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation, removedGroupMembers: removedGroupMembers) - + return initialMessage } @@ -461,7 +370,7 @@ extension ProtocolStarterCoordinator { let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .IdentityDetailsPublication, + cryptoProtocolId: .identityDetailsPublication, protocolInstanceUid: protocolInstanceUid) let initialMessage = IdentityDetailsPublicationProtocol.InitialMessage(coreProtocolMessage: coreMessage, version: publishedIdentityDetailsVersion) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -469,22 +378,22 @@ extension ProtocolStarterCoordinator { throw makeError(message: "Could create generic protocol message to send for starting an IdentityDetailsPublicationProtocol") } return initialMessageToSend - + } - + func getLeaveGroupJoinedMessageForGroupManagementProtocol(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupOwner: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let initialMessage = try getLeaveGroupJoinedMessageForStartingGroupManagementProtocol(ownedIdentity: ownedIdentity, groupUid: groupUid, groupOwner: groupOwner, simulateReceivedMessage: false, within: obvContext) - + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { os_log("Could create generic protocol message to send", log: log, type: .fault) throw Self.makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } @@ -515,46 +424,29 @@ extension ProtocolStarterCoordinator { if simulateReceivedMessage { coreMessage = CoreProtocolMessage.getLocalCoreProtocolMessageForSimulatingReceivedMessage( ownedIdentity: ownedIdentity, - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) } else { coreMessage = CoreProtocolMessage( channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) } let initialMessage = GroupManagementProtocol.LeaveGroupJoinedMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation) return initialMessage - + } - - func getInitiateContactDeletionMessageForContactManagementProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentityToDelete: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - let protocolInstanceUid = UID.gen(with: prng) - let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .ContactManagement, - protocolInstanceUid: protocolInstanceUid) - let initialMessage = ContactManagementProtocol.InitiateContactDeletionMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentityToDelete) - guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { - os_log("Could create generic protocol message to send", log: log, type: .fault) - throw Self.makeError(message: "Could create generic protocol message to send") - } - return initialMessageToSend - - } - func getInitiateAddKeycloakContactMessageForKeycloakContactAdditionProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentityToAdd: ObvCryptoIdentity, signedContactDetails: String) throws -> ObvChannelProtocolMessageToSend { - + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .KeycloakContactAddition, + cryptoProtocolId: .keycloakContactAddition, protocolInstanceUid: protocolInstanceUid) let initialMessage = KeycloakContactAdditionProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentityToAdd, signedContactDetails: signedContactDetails) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -562,9 +454,9 @@ extension ProtocolStarterCoordinator { throw Self.makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } - + func getInitiateGroupMembersQueryMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, groupOwner: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { @@ -580,7 +472,7 @@ extension ProtocolStarterCoordinator { let protocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupManagementProtocol.InitiateGroupMembersQueryMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -600,12 +492,12 @@ extension ProtocolStarterCoordinator { os_log("The identity delegate is not set", log: log, type: .fault) throw ProtocolStarterCoordinator.makeError(message: "The identity delegate is not set") } - + let groupInformationWithPhoto = try identityDelegate.getGroupOwnedInformationAndPublishedPhoto(ownedIdentity: ownedIdentity, groupUid: groupUid, within: obvContext) - + let protocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupManagementProtocol.TriggerReinviteMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation, memberIdentity: memberIdentity) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -613,34 +505,34 @@ extension ProtocolStarterCoordinator { throw ProtocolStarterCoordinator.makeError(message: "Could not generate ObvChannelProtocolMessageToSend instance for a TriggerReinviteAndUpdateMembersMessage") } return initialMessageToSend - + } - func getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + func getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .DeviceDiscoveryForContactIdentity, + cryptoProtocolId: .contactDeviceDiscovery, protocolInstanceUid: protocolInstanceUid) - let initialMessage = DeviceDiscoveryForContactIdentityProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity) + let initialMessage = ContactDeviceDiscoveryProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { os_log("Could create generic protocol message to send", log: log, type: .fault) throw ProtocolStarterCoordinator.makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } - + func getInitialMessageForDownloadIdentityPhotoChildProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements) throws -> ObvChannelProtocolMessageToSend { - + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .DownloadIdentityPhoto, - protocolInstanceUid: protocolInstanceUid) + cryptoProtocolId: .downloadIdentityPhoto, + protocolInstanceUid: protocolInstanceUid) let initialMessage = DownloadIdentityPhotoChildProtocol.InitialMessage( coreProtocolMessage: coreMessage, contactIdentity: contactIdentity, @@ -651,14 +543,14 @@ extension ProtocolStarterCoordinator { } return initialMessageToSend } - + func getInitialMessageForDownloadGroupPhotoChildProtocol(ownedIdentity: ObvCryptoIdentity, groupInformation: GroupInformation) throws -> ObvChannelProtocolMessageToSend { - + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .DownloadGroupPhoto, + cryptoProtocolId: .downloadGroupPhoto, protocolInstanceUid: protocolInstanceUid) let initialMessage = DownloadGroupPhotoChildProtocol.InitialMessage.init(coreProtocolMessage: coreMessage, groupInformation: groupInformation) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -670,10 +562,10 @@ extension ProtocolStarterCoordinator { func getInitialMessageForTrustEstablishmentWithMutualScanProtocol(ownedIdentity: ObvCryptoIdentity, remoteIdentity: ObvCryptoIdentity, signature: Data) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .TrustEstablishmentWithMutualScan, + cryptoProtocolId: .trustEstablishmentWithMutualScan, protocolInstanceUid: protocolInstanceUid) let initialMessage = TrustEstablishmentWithMutualScanProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentity: remoteIdentity, signature: signature) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -687,10 +579,10 @@ extension ProtocolStarterCoordinator { func getInitialMessageForAddingOwnCapabilities(ownedIdentity: ObvCryptoIdentity, newOwnCapabilities: Set) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .ContactCapabilitiesDiscovery, + cryptoProtocolId: .contactCapabilitiesDiscovery, protocolInstanceUid: protocolInstanceUid) let message = DeviceCapabilitiesDiscoveryProtocol.InitialForAddingOwnCapabilitiesMessage( coreProtocolMessage: coreMessage, @@ -705,12 +597,12 @@ extension ProtocolStarterCoordinator { func getInitialMessageForOneToOneContactInvitationProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { - + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .OneToOneContactInvitation, + cryptoProtocolId: .oneToOneContactInvitation, protocolInstanceUid: protocolInstanceUid) let message = OneToOneContactInvitationProtocol.InitialMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity) guard let initialMessageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -719,36 +611,17 @@ extension ProtocolStarterCoordinator { throw ProtocolStarterCoordinator.makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } - func getInitialMessageForDowngradingOneToOneContact(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - - let protocolInstanceUid = UID.gen(with: prng) - let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .ContactManagement, - protocolInstanceUid: protocolInstanceUid) - let message = ContactManagementProtocol.InitiateContactDowngradeMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity) - guard let initialMessageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { - os_log("Could create generic protocol message to send", log: log, type: .fault) - assertionFailure() - throw ProtocolStarterCoordinator.makeError(message: "Could create generic protocol message to send") - } - return initialMessageToSend - - } - - func getInitialMessageForOneStatusSyncRequest(ownedIdentity: ObvCryptoIdentity, contactsToSync: Set) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .OneToOneContactInvitation, + cryptoProtocolId: .oneToOneContactInvitation, protocolInstanceUid: protocolInstanceUid) let message = OneToOneContactInvitationProtocol.InitialOneToOneStatusSyncRequestMessage(coreProtocolMessage: coreMessage, contactsToSync: contactsToSync) guard let initialMessageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -757,18 +630,18 @@ extension ProtocolStarterCoordinator { throw ProtocolStarterCoordinator.makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } // MARK: - Groups V2 func getInitiateGroupCreationMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, ownRawPermissions: Set, otherGroupMembers: Set, serializedGroupCoreDetails: Data, photoURL: URL?, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { - + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupV2Protocol.InitiateGroupCreationMessage(coreProtocolMessage: coreMessage, ownRawPermissions: ownRawPermissions, @@ -781,15 +654,15 @@ extension ProtocolStarterCoordinator { } return initialMessageToSend } - + func getInitiateGroupUpdateMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, changeset: ObvGroupV2.Changeset, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { - + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) let protocolInstanceUid = try groupIdentifier.computeProtocolInstanceUid() let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupV2Protocol.InitiateGroupUpdateMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, @@ -800,10 +673,30 @@ extension ProtocolStarterCoordinator { } return initialMessageToSend } - + + + func getInitialMessageForDownloadGroupV2PhotoProtocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverPhotoInfo: GroupV2.ServerPhotoInfo) throws -> ObvChannelProtocolMessageToSend { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + + let protocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), + cryptoProtocolId: .downloadGroupV2Photo, + protocolInstanceUid: protocolInstanceUid) + let initialMessage = DownloadGroupV2PhotoProtocol.InitialMessage( + coreProtocolMessage: coreMessage, + groupIdentifier: groupIdentifier, + serverPhotoInfo: serverPhotoInfo) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw makeError(message: "Could create generic protocol message to send") + } + return initialMessageToSend + } + func getInitiateGroupLeaveMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { - + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) let initialMessage = try getInitiateGroupLeaveMessageForStartingGroupV2Protocol( @@ -828,18 +721,18 @@ extension ProtocolStarterCoordinator { if simulateReceivedMessage { coreMessage = CoreProtocolMessage.getLocalCoreProtocolMessageForSimulatingReceivedMessage( ownedIdentity: ownedIdentity, - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) } else { coreMessage = CoreProtocolMessage( channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) } let initialMessage = GroupV2Protocol.InitiateGroupLeaveMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier) - + return initialMessage } @@ -851,7 +744,7 @@ extension ProtocolStarterCoordinator { let protocolInstanceUid = try groupIdentifier.computeProtocolInstanceUid() let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupV2Protocol.InitiateGroupReDownloadMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -859,14 +752,14 @@ extension ProtocolStarterCoordinator { throw makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } - + func getInitiateInitiateGroupDisbandMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let initialMessage = try getInitiateInitiateGroupDisbandMessageForStartingGroupV2Protocol( ownedIdentity: ownedIdentity, groupIdentifier: groupIdentifier, @@ -877,9 +770,9 @@ extension ProtocolStarterCoordinator { throw makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } - + func getInitiateInitiateGroupDisbandMessageForStartingGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, simulateReceivedMessage: Bool, flowId: FlowIdentifier) throws -> GroupV2Protocol.InitiateGroupDisbandMessage { @@ -888,50 +781,50 @@ extension ProtocolStarterCoordinator { if simulateReceivedMessage { coreMessage = CoreProtocolMessage.getLocalCoreProtocolMessageForSimulatingReceivedMessage( ownedIdentity: ownedIdentity, - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) } else { coreMessage = CoreProtocolMessage( channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) } let initialMessage = GroupV2Protocol.InitiateGroupDisbandMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier) - + return initialMessage } - - func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { + + func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, remoteIdentity: ObvCryptoIdentity, remoteDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) // Even if we are dealing with a step of the GroupV2 protocol, we do not need a specific protocol instance UID (since this would make no sense in that specific case) let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) - let initialMessage = GroupV2Protocol.InitiateBatchKeysResendMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity, contactDeviceUID: contactDeviceUID) + let initialMessage = GroupV2Protocol.InitiateBatchKeysResendMessage(coreProtocolMessage: coreMessage, remoteIdentity: remoteIdentity, remoteDeviceUID: remoteDeviceUID) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { os_log("Could create generic protocol message to send", log: log, type: .fault) throw makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } - + // MARK: - Keycloak pushed groups - + func getInitiateUpdateKeycloakGroupsMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, signedGroupBlobs: Set, signedGroupDeletions: Set, signedGroupKicks: Set, keycloakCurrentTimestamp: Date, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + // Even if we are dealing with a step of the GroupV2 protocol, we do not need a specific protocol instance UID (since this would make no sense in that specific case) let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupV2Protocol.InitiateUpdateKeycloakGroupsMessage(coreProtocolMessage: coreMessage, signedGroupBlobs: signedGroupBlobs, @@ -944,17 +837,17 @@ extension ProtocolStarterCoordinator { throw makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } - + func getInitiateTargetedPingMessageForKeycloakGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, pendingMemberIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let protocolInstanceUid = try groupIdentifier.computeProtocolInstanceUid() let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let initialMessage = GroupV2Protocol.InitiateTargetedPingMessage( coreProtocolMessage: coreMessage, @@ -965,27 +858,481 @@ extension ProtocolStarterCoordinator { throw makeError(message: "Could create generic protocol message to send") } return initialMessageToSend - + } // MARK: - OwnedIdentity Deletion Protocol - func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, notifyContacts: Bool, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { + func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, globalOwnedIdentityDeletion: Bool) throws -> ObvChannelProtocolMessageToSend { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) - + let protocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentityToDelete), cryptoProtocolId: .ownedIdentityDeletionProtocol, protocolInstanceUid: protocolInstanceUid) - let initialMessage = OwnedIdentityDeletionProtocol.InitiateOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage, ownedCryptoIdentityToDelete: ownedCryptoIdentityToDelete, notifyContacts: notifyContacts) + let initialMessage = OwnedIdentityDeletionProtocol.InitiateOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage, globalOwnedIdentityDeletion: globalOwnedIdentityDeletion) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw makeError(message: "Could create generic protocol message to send") + } + return initialMessageToSend + + } + + + // MARK: Contact Device Management protocol + + func getInitiateContactDeletionMessageForContactManagementProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentityToDelete: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + + let protocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), + cryptoProtocolId: .contactManagement, + protocolInstanceUid: protocolInstanceUid) + let initialMessage = ContactManagementProtocol.InitiateContactDeletionMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentityToDelete) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw Self.makeError(message: "Could create generic protocol message to send") + } + return initialMessageToSend + + } + + + func getInitialMessageForDowngradingOneToOneContact(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + + let protocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), + cryptoProtocolId: .contactManagement, + protocolInstanceUid: protocolInstanceUid) + let message = ContactManagementProtocol.InitiateContactDowngradeMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity) + guard let initialMessageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + assertionFailure() + throw ProtocolStarterCoordinator.makeError(message: "Could create generic protocol message to send") + } + return initialMessageToSend + + } + + + + // MARK: - Owned device protocols + + func getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + + let protocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentity), + cryptoProtocolId: .ownedDeviceDiscovery, + protocolInstanceUid: protocolInstanceUid) + let initialMessage = OwnedDeviceDiscoveryProtocol.InitiateOwnedDeviceDiscoveryMessage(coreProtocolMessage: coreMessage) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw makeError(message: "Could create generic protocol message to send") + } + return initialMessageToSend + } + + + func getInitiateOwnedDeviceManagementMessage(ownedCryptoIdentity: ObvCryptoIdentity, request: ObvOwnedDeviceManagementRequest) throws -> ObvChannelProtocolMessageToSend { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + + let protocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentity), + cryptoProtocolId: .ownedDeviceManagement, + protocolInstanceUid: protocolInstanceUid) + let initialMessage = OwnedDeviceManagementProtocol.InitiateOwnedDeviceManagementMessage( + coreProtocolMessage: coreMessage, + request: request) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw makeError(message: "Could create generic protocol message to send") + } + return initialMessageToSend + + } + + + + // MARK: - Owned identity transfer protocol + + private func postAbortMessageForOwnedIdentityTransferProtocol(ownedCryptoIdentity: ObvCryptoIdentity, protocolInstanceUID: UID) { + Task { + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentity), + cryptoProtocolId: .ownedIdentityTransfer, + protocolInstanceUid: protocolInstanceUID) + let initialMessage = OwnedIdentityTransferProtocol.AbortProtocolMessage(coreProtocolMessage: coreMessage) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + os_log("Could create generic protocol message to send", log: log, type: .fault) + return + } + try? await postChannelMessage(initialMessageToSend, flowId: FlowIdentifier()) + } + } + + + func cancelAllOwnedIdentityTransferProtocols(flowId: FlowIdentifier) async throws { + guard let contextCreator = delegateManager.contextCreator else { throw ObvError.theContextCreatorIsNil } + let identitiesAndUIDs = try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<[(ownedCryptoIdentity: ObvCryptoIdentity, protocolInstanceUID: UID)], Error>) in + contextCreator.performBackgroundTask(flowId: flowId) { obvContext in + do { + let infos = try ProtocolInstance.getAllPrimaryKeysOfOwnedIdentityTransferProtocolInstances(within: obvContext) + continuation.resume(returning: infos) + } catch { + continuation.resume(throwing: error) + } + } + } + identitiesAndUIDs.forEach { (ownedCryptoIdentity, protocolInstanceUID) in + postAbortMessageForOwnedIdentityTransferProtocol(ownedCryptoIdentity: ownedCryptoIdentity, protocolInstanceUID: protocolInstanceUID) + } + } + + + func initiateOwnedIdentityTransferProtocolOnSourceDevice(ownedCryptoIdentity: ObvCryptoIdentity, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void, flowId: FlowIdentifier) async throws { + + guard let notificationDelegate = delegateManager.notificationDelegate else { throw ObvError.theNotificationDelegateIsNil } + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + + // Create the InitiateTransferOnSourceDeviceMessage that will allow to start the ownedIdentityTransfer protocol + + let protocolInstanceUID = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentity), + cryptoProtocolId: .ownedIdentityTransfer, + protocolInstanceUid: protocolInstanceUID) + let message = OwnedIdentityTransferProtocol.InitiateTransferOnSourceDeviceMessage(coreProtocolMessage: coreMessage) + guard let initialMessageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw makeError(message: "Could create generic protocol message to send") + } + + + var localTokens = [NSObjectProtocol]() + + // Before starting the protocol: observe the notification sent by this protocol when the session number is available. + // This typically takes longer than the "cancel block", since getting this session number requires a network call to the transfer server. + // Uppon receiving this notification, we pass the session number back to the app using the `onAvailableSessionNumber` callback. + + do { + var token: NSObjectProtocol? + token = notificationDelegate.addObserverOfOwnedIdentityTransferProtocolNotification(.sourceDisplaySessionNumber { payload in + // Make sure the received notification concerns the protocol we launched here. + guard payload.protocolInstanceUID == protocolInstanceUID else { return } + let sessionNumber = payload.sessionNumber + // Remove the observer, since we do not expect to be notified again + notificationDelegate.removeObserver(token!) + // Transfer the session number back to the app + onAvailableSessionNumber(sessionNumber) + }) + localTokens.append(token!) + } + + // Before starting the protocol: observe the notification sent by this protocol when the SAS that we expect the user to enter on + // this source device is available. + + do { + var token: NSObjectProtocol? + token = notificationDelegate.addObserverOfOwnedIdentityTransferProtocolNotification(.waitingForSASOnSourceDevice { payload in + // Make sure the received notification concerns the protocol we launched here. + guard payload.protocolInstanceUID == protocolInstanceUID else { return } + // Remove the observer, since we do not expect to be notified again + notificationDelegate.removeObserver(token!) + // Transfer the sas to the app + onAvailableSASExpectedOnInput(payload.sasExpectedOnInput, payload.targetDeviceName, payload.protocolInstanceUID) + }) + localTokens.append(token!) + } + + + // Now that we observe the two important notifications allowing to call the two callbacks that we received in parameters, + // we can post the protocol message that will start the ownedIdentityTransfer protocol in this source device. + + do { + try await postChannelMessage(initialMessageToSend, flowId: flowId) + notificationCenterTokens.append(contentsOf: localTokens) + } catch { + localTokens.forEach { token in + notificationDelegate.removeObserver(token) + } + throw error + } + + } + + + func initiateOwnedIdentityTransferProtocolOnTargetDevice(currentDeviceName: String, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void, flowId: FlowIdentifier) async throws { + + guard let notificationDelegate = delegateManager.notificationDelegate else { throw ObvError.theNotificationDelegateIsNil } + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + + // We generate an ephemeral identity valid during the owned identity transfer protocol only + + let authEmplemByteId = ObvCryptoSuite.sharedInstance.getDefaultAuthenticationImplementationByteId() + let pkEncryptionImplemByteId = ObvCryptoSuite.sharedInstance.getDefaultPublicKeyEncryptionImplementationByteId() + + let ephemeralOwnedIdentity = ObvOwnedCryptoIdentity.gen(withServerURL: ObvConstants.ephemeralIdentityServerURL, + forAuthenticationImplementationId: authEmplemByteId, + andPublicKeyEncryptionImplementationByteId: pkEncryptionImplemByteId, + using: prng) + + // Create the InitiateTransferOnTargetDeviceMessage that will allow to start the ownedIdentityTransfer protocol + + let protocolInstanceUID = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ephemeralOwnedIdentity.getObvCryptoIdentity()), + cryptoProtocolId: .ownedIdentityTransfer, + protocolInstanceUid: protocolInstanceUID) + // Note we don't need the ephemeral identity's privateKeyForAuthentication + let message = OwnedIdentityTransferProtocol.InitiateTransferOnTargetDeviceMessage( + coreProtocolMessage: coreMessage, + currentDeviceName: currentDeviceName, + transferSessionNumber: transferSessionNumber, + encryptionPrivateKey: ephemeralOwnedIdentity.privateKeyForPublicKeyEncryption, + macKey: ephemeralOwnedIdentity.secretMACKey) + guard let initialMessageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw makeError(message: "Could create generic protocol message to send") + } + + var localTokens = [NSObjectProtocol]() + + // Before starting the protocol: observe the notification sent by this protocol when the transfer session number entered by the user is incorrect. + + do { + var token: NSObjectProtocol? + token = notificationDelegate.addObserverOfOwnedIdentityTransferProtocolNotification(.userEnteredIncorrectTransferSessionNumber(payload: { payload in + // Make sure the received notification concerns the protocol we launched here. + guard payload.protocolInstanceUID == protocolInstanceUID else { return } + // Remove all the observers added here, since we do not expect to be notified again + localTokens.forEach { notificationDelegate.removeObserver($0) } + // Transfer the information to the app + onIncorrectTransferSessionNumber() + })) + localTokens.append(token!) + } + + // Before starting the protocol: observe the notification sent by this protocol when the SAS is available and can be shown on this target device + + do { + var token: NSObjectProtocol? + token = notificationDelegate.addObserverOfOwnedIdentityTransferProtocolNotification(.sasIsAvailable(payload: { payload in + // Make sure the received notification concerns the protocol we launched here. + guard payload.protocolInstanceUID == protocolInstanceUID else { return } + // Remove all the observers added here, since we do not expect to be notified again + localTokens.forEach { notificationDelegate.removeObserver($0) } + // Transfer the information to the app + onAvailableSas(protocolInstanceUID, payload.sas) + })) + localTokens.append(token!) + } + + // Post the protocol message + + do { + try await postChannelMessage(initialMessageToSend, flowId: flowId) + notificationCenterTokens.append(contentsOf: localTokens) + } catch { + localTokens.forEach { token in + notificationDelegate.removeObserver(token) + } + throw error + } + + } + + + /// Called by the app during an owned identity transfer protocol on the target device, when the SAS is shown. The app calls this method to get notified of the various events occuring during the protocol finalisation, + /// like when the snapshot sent by the source device is received on this target device, or when the processing of this snapshot did end. + /// - Parameters: + /// - protocolInstanceUID: The identifier of the currently running owned identity transfer protocol. + /// - onSyncSnapshotReception: The block to call when the snapshot sent by the source device is received on this target device. + func appIsShowingSasAndExpectingEndOfProtocol(protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async { + + guard let notificationDelegate = delegateManager.notificationDelegate else { assertionFailure(); return } + + var localTokens = [NSObjectProtocol]() + + do { + var token: NSObjectProtocol? + token = notificationDelegate.addObserverOfOwnedIdentityTransferProtocolNotification(.processingReceivedSnapshotOntargetDevice { payload in + // Make sure the received notification concerns the protocol we launched here. + guard payload.protocolInstanceUID == protocolInstanceUID else { return } + // Transfer the information to the app + onSyncSnapshotReception() + }) + localTokens.append(token!) + } + + do { + var token: NSObjectProtocol? + token = notificationDelegate.addObserverOfOwnedIdentityTransferProtocolNotification(.successfulTransferOnTargetDevice { payload in + // Make sure the received notification concerns the protocol we launched here. + guard payload.protocolInstanceUID == protocolInstanceUID else { return } + // Remove all the observers added here, since we do not expect to be notified again + localTokens.forEach { notificationDelegate.removeObserver($0) } + // Transfer the information to the app + onSuccessfulTransfer(payload.transferredOwnedCryptoId, payload.postTransferError) + }) + localTokens.append(token!) + } + + notificationCenterTokens.append(contentsOf: localTokens) + + } + + + func continueOwnedIdentityTransferProtocolOnUserEnteredSASOnSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoId.cryptoIdentity), + cryptoProtocolId: .ownedIdentityTransfer, + protocolInstanceUid: protocolInstanceUID) + let message = OwnedIdentityTransferProtocol.SourceSASInputMessage(coreProtocolMessage: coreMessage, enteredSAS: enteredSAS, deviceUIDToKeepActive: deviceToKeepActive) + guard let initialMessageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw makeError(message: "Could create generic protocol message to send") + } + + try await postChannelMessage(initialMessageToSend, flowId: FlowIdentifier()) + + } + + + + // MARK: - Keycloak binding and unbinding + + func getOwnedIdentityKeycloakBindingMessage(ownedCryptoIdentity: ObvCryptoIdentity, keycloakState: ObvKeycloakState, keycloakUserId: String) throws -> ObvChannelProtocolMessageToSend { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + let protocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentity), + cryptoProtocolId: .keycloakBindingAndUnbinding, + protocolInstanceUid: protocolInstanceUid) + let initialMessage = KeycloakBindingAndUnbindingProtocol.OwnedIdentityKeycloakBindingMessage( + coreProtocolMessage: coreMessage, + keycloakState: keycloakState, + keycloakUserId: keycloakUserId) guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { os_log("Could create generic protocol message to send", log: log, type: .fault) throw makeError(message: "Could create generic protocol message to send") } return initialMessageToSend + + } + + func getOwnedIdentityKeycloakUnbindingMessage(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + let protocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentity), + cryptoProtocolId: .keycloakBindingAndUnbinding, + protocolInstanceUid: protocolInstanceUid) + let initialMessage = KeycloakBindingAndUnbindingProtocol.OwnedIdentityKeycloakUnbindingMessage(coreProtocolMessage: coreMessage) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw makeError(message: "Could create generic protocol message to send") + } + return initialMessageToSend + } + + // MARK: - SynchronizationProtocol + + func getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, syncAtom: ObvSyncAtom) throws -> ObvChannelProtocolMessageToSend { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + let protocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentity), + cryptoProtocolId: .synchronization, + protocolInstanceUid: protocolInstanceUid) + let initialMessage = SynchronizationProtocol.InitiateSyncAtomMessage(coreProtocolMessage: coreMessage, syncAtom: syncAtom) + guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + os_log("Could create generic protocol message to send", log: log, type: .fault) + throw makeError(message: "Could create generic protocol message to send") + } + return initialMessageToSend + + } + + +// func getTriggerSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID, otherOwnedDeviceUid: UID, forceSendSnapshot: Bool) throws -> ObvChannelProtocolMessageToSend { +// +// let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) +// let protocolInstanceUid = try SynchronizationProtocol.computeOngoingProtocolInstanceUid(ownedCryptoId: ownedCryptoIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: otherOwnedDeviceUid) +// let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentity), +// cryptoProtocolId: .synchronization, +// protocolInstanceUid: protocolInstanceUid) +// let initialMessage = SynchronizationProtocol.TriggerSyncSnapshotMessage(coreProtocolMessage: coreMessage, forceSendSnapshot: forceSendSnapshot) +// guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { +// os_log("Could create generic protocol message to send", log: log, type: .fault) +// throw makeError(message: "Could create generic protocol message to send") +// } +// return initialMessageToSend +// +// } + + +// func getInitiateSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID, otherOwnedDeviceUid: UID) throws -> ObvChannelProtocolMessageToSend { +// +// let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) +// let protocolInstanceUid = try SynchronizationProtocol.computeOngoingProtocolInstanceUid(ownedCryptoId: ownedCryptoIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: otherOwnedDeviceUid) +// let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedCryptoIdentity), +// cryptoProtocolId: .synchronization, +// protocolInstanceUid: protocolInstanceUid) +// let initialMessage = SynchronizationProtocol.InitiateSyncSnapshotMessage(coreProtocolMessage: coreMessage, otherOwnedDeviceUID: otherOwnedDeviceUid) +// guard let initialMessageToSend = initialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { +// os_log("Could create generic protocol message to send", log: log, type: .fault) +// throw makeError(message: "Could create generic protocol message to send") +// } +// return initialMessageToSend +// +// } + + // MARK: - Helpers + + private func postChannelMessage(_ message: ObvChannelProtocolMessageToSend, flowId: FlowIdentifier) async throws { + + guard let contextCreator = delegateManager.contextCreator else { throw ObvError.theContextCreatorIsNil } + guard let channelDelegate = delegateManager.channelDelegate else { throw ObvError.theChannelDelegateIsNil } + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ProtocolStarterCoordinator.logCategory) + let prng = self.prng + + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + contextCreator.performBackgroundTask(flowId: flowId) { obvContext in + do { + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + try obvContext.save(logOnFailure: log) + continuation.resume() + } catch { + continuation.resume(throwing: error) + } + } + } + + } + + + + // MARK: - Errors + + enum ObvError: Error { + case theNotificationDelegateIsNil + case theContextCreatorIsNil + case theChannelDelegateIsNil + case theDelegateManagerIsNil + } + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ReceivedMessageCoordinator.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ReceivedMessageCoordinator.swift index 80875e2a..58301f48 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ReceivedMessageCoordinator.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Coordinators/ReceivedMessageCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -51,7 +51,7 @@ final class ReceivedMessageCoordinator: ReceivedMessageDelegate { // MARK: Queuing ProtocolInstanceInputsConsumerOperations - private func queueNewProtocolOperationIfThereIsNotAlreadyOne(receivedMessageId messageId: MessageIdentifier, flowId: FlowIdentifier) { + private func queueNewProtocolOperationIfThereIsNotAlreadyOne(receivedMessageId messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ReceivedMessageCoordinator.logCategory) os_log("Queuing a ProtocolOperation", log: log, type: .debug) let op = ProtocolOperation(receivedMessageId: messageId, @@ -65,9 +65,10 @@ final class ReceivedMessageCoordinator: ReceivedMessageDelegate { } // MARK: Implementing ProtocolInstanceInputsConsumerDelegate + extension ReceivedMessageCoordinator { - func processReceivedMessage(withId messageId: MessageIdentifier, flowId: FlowIdentifier) { + func processReceivedMessage(withId messageId: ObvMessageIdentifier, flowId: FlowIdentifier) { queueNewProtocolOperationIfThereIsNotAlreadyOne(receivedMessageId: messageId, flowId: flowId) } @@ -101,6 +102,45 @@ extension ReceivedMessageCoordinator { } + /// This method is called during boostrap. It deletes all `CryptoProtocolId.ownedIdentityTransfer` protocol instances. + /// We declare this method in this coordinator to make sure it does not interfere with the processing of protocol messages. + func deleteOwnedIdentityTransferProtocolInstances(flowId: FlowIdentifier) { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ReceivedMessageCoordinator.logCategory) + + guard let contextCreator = delegateManager.contextCreator else { + os_log("The context creator is not set", log: log, type: .fault) + assertionFailure() + return + } + + let op1 = DeleteOwnedIdentityTransferProtocolInstancesOperation() + let queueForComposedOperations = OperationQueue.createSerialQueue() + let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: contextCreator, queueForComposedOperations: queueForComposedOperations, log: log, flowId: flowId) + queueForProtocolOperations.addOperation(composedOp) + + } + + + /// This method is called during boostrap. It deletes all `ReceivedMessage` concerning a identity transfer protocol instance. + /// We declare this method in this coordinator to make sure it does not interfere with the processing of protocol messages. + func deleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocol(flowId: FlowIdentifier) { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ReceivedMessageCoordinator.logCategory) + + guard let contextCreator = delegateManager.contextCreator else { + os_log("The context creator is not set", log: log, type: .fault) + assertionFailure() + return + } + + let op1 = DeleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocolOperation() + let queueForComposedOperations = OperationQueue.createSerialQueue() + let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: contextCreator, queueForComposedOperations: queueForComposedOperations, log: log, flowId: flowId) + queueForProtocolOperations.addOperation(composedOp) + + } + /// This method is called during boostrap. It deletes all received messages that are older than 15 days and that have no associated protocol instance. func deleteObsoleteReceivedMessages(flowId: FlowIdentifier) { @@ -132,7 +172,7 @@ extension ReceivedMessageCoordinator { } queueForProtocolOperations.addOperation { [weak self] in - var messageIds = Set() + var messageIds = [ObvMessageIdentifier]() contextCreator.performBackgroundTaskAndWait(flowId: flowId) { obvContext in do { messageIds = try ReceivedMessage.getAllMessageIds(within: obvContext) @@ -281,7 +321,7 @@ final class ProtocolStepAndActionsOperationWrapper: ObvOperationWrapper(operation: OperationWithSpecificReasonForCancel) async throws { + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + let originalCompletionBlock = operation.completionBlock + operation.completionBlock = { + originalCompletionBlock?() + if let reasontForCancel = operation.reasonForCancel { + assert(operation.isCancelled) + continuation.resume(throwing: reasontForCancel) + } else { + assert(!operation.isCancelled) + continuation.resume() + } + } + queueForProtocolOperations.addOperation(operation) + } + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ChannelCreationWithContactDeviceProtocolInstance.swift b/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ChannelCreationWithContactDeviceProtocolInstance.swift index 61108942..7e2c774e 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ChannelCreationWithContactDeviceProtocolInstance.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ChannelCreationWithContactDeviceProtocolInstance.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -71,7 +71,7 @@ final class ChannelCreationWithContactDeviceProtocolInstance: NSManagedObject, O convenience init?(protocolInstanceUid: UID, ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUid: UID, delegateManager: ObvProtocolDelegateManager, within obvContext: ObvContext) { let entityDescription = NSEntityDescription.entity(forEntityName: ChannelCreationWithContactDeviceProtocolInstance.entityName, in: obvContext)! self.init(entity: entityDescription, insertInto: obvContext) - guard let protocolInstance = ProtocolInstance.get(cryptoProtocolId: CryptoProtocolId.ChannelCreationWithContactDevice, + guard let protocolInstance = ProtocolInstance.get(cryptoProtocolId: CryptoProtocolId.channelCreationWithContactDevice, uid: protocolInstanceUid, ownedIdentity: ownedIdentity, delegateManager: delegateManager, @@ -91,16 +91,6 @@ extension ChannelCreationWithContactDeviceProtocolInstance { return NSFetchRequest(entityName: ChannelCreationWithContactDeviceProtocolInstance.entityName) } - static func getUidofChannelCreationProtocolInstanceBetween(contactIdentity: ObvCryptoIdentity, contactDeviceUid: UID, andOwnedIdentity ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) -> UID? { - let request: NSFetchRequest = ChannelCreationWithContactDeviceProtocolInstance.fetchRequest() - request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %@", - contactIdentityKey, contactIdentity, - contactDeviceUidKey, contactDeviceUid, - protocolInstanceOwnedCryptoIdentityKey, ownedCryptoIdentity) - let item = (try? obvContext.fetch(request))?.first - return item?.protocolInstance.uid - } - static func delete(contactIdentity: ObvCryptoIdentity, contactDeviceUid: UID, andOwnedIdentity ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> UID? { let request: NSFetchRequest = ChannelCreationWithContactDeviceProtocolInstance.fetchRequest() request.predicate = NSPredicate(format: "%K == %@ AND %K == %@ AND %K == %@", diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ChannelCreationWithOwnedDeviceProtocolInstance.swift b/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ChannelCreationWithOwnedDeviceProtocolInstance.swift new file mode 100644 index 00000000..12a15aa3 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ChannelCreationWithOwnedDeviceProtocolInstance.swift @@ -0,0 +1,153 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import ObvCrypto +import OlvidUtils +import ObvMetaManager + + +/// This database is only used within the channel creation protocol (with an owned identity) between the current device of the owned identity and one of her other device. +@objc(ChannelCreationWithOwnedDeviceProtocolInstance) +final class ChannelCreationWithOwnedDeviceProtocolInstance: NSManagedObject { + + private static let entityName = "ChannelCreationWithOwnedDeviceProtocolInstance" + + // MARK: Attributes + + @NSManaged private var rawOwnedIdentityIdentity: Data // Part of the primary key + @NSManaged private var rawRemoteDeviceUid: Data // Part of the primary key + + // MARK: Relationships + + // This is necessarily a ChannelCreationWithOwnedDevice protocol instance. + // Expected to be non-nil (optional in the model, mandatory in practice) + @NSManaged private(set) var protocolInstance: ProtocolInstance? + + // MARK: Other variables + + // Expected to be non-nil. + var ownedCryptoIdentity: ObvCryptoIdentity? { + return ObvCryptoIdentity(from: rawOwnedIdentityIdentity) + } + + // Expected to be non-nil + var remoteDeviceUid: UID? { + UID(uid: self.rawRemoteDeviceUid) + } + + // MARK: - Initializer + + convenience init?(protocolInstanceUid: UID, ownedIdentity: ObvCryptoIdentity, remoteDeviceUid: UID, delegateManager: ObvProtocolDelegateManager, within obvContext: ObvContext) { + let entityDescription = NSEntityDescription.entity(forEntityName: Self.entityName, in: obvContext)! + self.init(entity: entityDescription, insertInto: obvContext) + guard let protocolInstance = ProtocolInstance.get(cryptoProtocolId: CryptoProtocolId.channelCreationWithOwnedDevice, + uid: protocolInstanceUid, + ownedIdentity: ownedIdentity, + delegateManager: delegateManager, + within: obvContext) else { return nil } + self.protocolInstance = protocolInstance + self.rawRemoteDeviceUid = remoteDeviceUid.raw + self.rawOwnedIdentityIdentity = protocolInstance.ownedCryptoIdentity.getIdentity() + } + + + private func deleteChannelCreationWithOwnedDeviceProtocolInstance() throws { + guard let context = self.managedObjectContext else { throw ObvError.couldNotFindContext } + context.delete(self) + } + + + // MARK: - Convenience DB getters + + @nonobjc class func fetchRequest() -> NSFetchRequest { + return NSFetchRequest(entityName: self.entityName) + } + + struct Predicate { + enum Key: String { + // Attributes + case rawOwnedIdentityIdentity = "rawOwnedIdentityIdentity" + case rawRemoteDeviceUid = "rawRemoteDeviceUid" + // Relationships + case protocolInstance = "protocolInstance" + } + static func withRemoteDeviceUid(_ remoteDeviceUid: UID) -> NSPredicate { + NSPredicate(Key.rawRemoteDeviceUid, EqualToData: remoteDeviceUid.raw) + } + static func withOwnedCryptoIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity) -> NSPredicate { + return NSPredicate(Key.rawOwnedIdentityIdentity, EqualToData: ownedCryptoIdentity.getIdentity()) + } + } + + + /// Since we there must be at most one `ChannelCreationWithOwnedDeviceProtocolInstance` for a given owned identity and remote device, we expect the array returned by this method to contain either 0 or 1 entry. + /// Yet, to be more resilient, we return all items found so as to let the protocol stop all protocol instances in all cases. + static func deleteAll(ownedCryptoIdentity: ObvCryptoIdentity, remoteDeviceUid: UID, within obvContext: ObvContext) throws -> [UID] { + let request: NSFetchRequest = ChannelCreationWithOwnedDeviceProtocolInstance.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnedCryptoIdentity(ownedCryptoIdentity), + Predicate.withRemoteDeviceUid(remoteDeviceUid), + ]) + let itemsToDelete = try obvContext.context.fetch(request) + let protocolInstanceUids = itemsToDelete.compactMap(\.protocolInstance?.uid) + try itemsToDelete.forEach { itemToDelete in + try itemToDelete.deleteChannelCreationWithOwnedDeviceProtocolInstance() + } + return protocolInstanceUids + } + + + static func exists(ownedCryptoIdentity: ObvCryptoIdentity, remoteDeviceUid: UID, within obvContext: ObvContext) throws -> Bool { + let request: NSFetchRequest = ChannelCreationWithOwnedDeviceProtocolInstance.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnedCryptoIdentity(ownedCryptoIdentity), + Predicate.withRemoteDeviceUid(remoteDeviceUid), + ]) + let numberOfEntries = try obvContext.count(for: request) + return numberOfEntries != 0 + } + + + static func getAll(within obvContext: ObvContext) throws -> Set { + let request: NSFetchRequest = ChannelCreationWithOwnedDeviceProtocolInstance.fetchRequest() + request.fetchBatchSize = 1_000 + let items = try obvContext.context.fetch(request) + return Set(items.compactMap({ + guard let ownedCryptoIdentity = $0.ownedCryptoIdentity else { assertionFailure(); return nil } + guard let remoteDeviceUid = $0.remoteDeviceUid else { assertionFailure(); return nil } + return ObliviousChannelIdentifierAlt(ownedCryptoIdentity: ownedCryptoIdentity, remoteCryptoIdentity: ownedCryptoIdentity, remoteDeviceUid: remoteDeviceUid) + })) + } + + // MARK: - Errors + + enum ObvError: Error { + case couldNotFindContext + + var localizedDescription: String { + switch self { + case .couldNotFindContext: + return "Could not find context" + } + } + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ProtocolInstance.swift b/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ProtocolInstance.swift index 3f67d3d3..411711ef 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ProtocolInstance.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ProtocolInstance.swift @@ -24,6 +24,7 @@ import OlvidUtils import ObvEncoder import ObvTypes import ObvCrypto +import ObvMetaManager @objc(ProtocolInstance) final class ProtocolInstance: NSManagedObject, ObvManagedObject, ObvErrorMaker { @@ -79,11 +80,12 @@ final class ProtocolInstance: NSManagedObject, ObvManagedObject, ObvErrorMaker { } let entityDescription = NSEntityDescription.entity(forEntityName: ProtocolInstance.entityName, in: obvContext)! - // We check that the identity passed is indeed "owned" + // We check that the identity passed is indeed "owned" or, in the case of the owned identity transfer protocol, if the identity is ephemeral do { let identityIsOwned = try identityDelegate.isOwned(ownedCryptoIdentity, within: obvContext) - guard identityIsOwned else { return nil } + guard identityIsOwned || (cryptoProtocolId == .ownedIdentityTransfer && ownedCryptoIdentity.serverURL == ObvConstants.ephemeralIdentityServerURL) else { return nil } } catch { + assertionFailure() return nil } @@ -167,9 +169,25 @@ extension ProtocolInstance { let request: NSFetchRequest = ProtocolInstance.fetchRequest() let items = try? obvContext.fetch(request) return items?.map { $0.delegateManager = delegateManager; return $0 } - } + + static func getAll(cryptoProtocolId: CryptoProtocolId, delegateManager: ObvProtocolDelegateManager, within obvContext: ObvContext) throws -> [ProtocolInstance] { + let request: NSFetchRequest = ProtocolInstance.fetchRequest() + request.predicate = Predicate.withCryptoProtocolId(cryptoProtocolId) + let items = try obvContext.fetch(request) + return items.map { $0.delegateManager = delegateManager; return $0 } + } + + + static func getAllPrimaryKeysOfOwnedIdentityTransferProtocolInstances(within obvContext: ObvContext) throws -> [(ownedCryptoIdentity: ObvCryptoIdentity, protocolInstanceUID: UID)] { + let request: NSFetchRequest = ProtocolInstance.fetchRequest() + request.predicate = Predicate.withCryptoProtocolId(.ownedIdentityTransfer) + let items = try obvContext.fetch(request) + return items.map({ ($0.ownedCryptoIdentity, $0.uid) }) + } + + static func delete(uid: UID, ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { // We do not execute a batch delete since this method does not call the willSave/didSave methods, which are required. let request: NSFetchRequest = ProtocolInstance.fetchRequest() @@ -234,6 +252,19 @@ extension ProtocolInstance { } + static func deleteOwnedIdentityTransferProtocolInstances(within obvContext: ObvContext) throws { + + let request: NSFetchRequest = ProtocolInstance.fetchRequest() + request.predicate = Predicate.withCryptoProtocolId(.ownedIdentityTransfer) + request.propertiesToFetch = [] + request.fetchBatchSize = 100 + let items = try obvContext.fetch(request) + guard !items.isEmpty else { return } + items.forEach({ obvContext.delete($0) }) + + } + + static func deleteAllProtocolInstancesOfOwnedIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity, withProtocolInstanceUidDistinctFrom protocolInstanceUid: UID, within obvContext: ObvContext) throws { let request: NSFetchRequest = ProtocolInstance.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ReceivedMessage.swift b/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ReceivedMessage.swift index 62b75d2e..86c6c87b 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ReceivedMessage.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/CoreData/ReceivedMessage.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -80,13 +80,14 @@ final class ReceivedMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { // MARK: Other variables - private(set) var messageId: MessageIdentifier { - get { return MessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } + private(set) var messageId: ObvMessageIdentifier { + get { return ObvMessageIdentifier(rawOwnedCryptoIdentity: self.rawMessageIdOwnedIdentity, rawUid: self.rawMessageIdUid)! } set { self.rawMessageIdOwnedIdentity = newValue.ownedCryptoIdentity.getIdentity(); self.rawMessageIdUid = newValue.uid.raw } } weak var delegateManager: ObvProtocolDelegateManager? var obvContext: ObvContext? + private var messageIdOnDeletion: ObvMessageIdentifier? // MARK: - Initializer @@ -100,9 +101,25 @@ final class ReceivedMessage: NSManagedObject, ObvManagedObject, ObvErrorMaker { self.protocolMessageRawId = message.protocolMessageRawId self.cryptoProtocolId = message.cryptoProtocolId self.receptionChannelInfo = message.receptionChannelInfo - self.messageId = MessageIdentifier(ownedCryptoIdentity: message.toOwnedIdentity, uid: message.receivedMessageUID ?? UID.gen(with: prng)) + self.messageId = ObvMessageIdentifier(ownedCryptoIdentity: message.toOwnedIdentity, uid: message.receivedMessageUID ?? UID.gen(with: prng)) self.delegateManager = delegateManager self.timestamp = message.timestamp + + // Instead of using the didSave method to call the delegate method, we add a "didSave" completion to the obvContext. + // This allows to make sure the completions are executed in the right order (first in, first out). + // Since the ReceivedMessage received from the network are processed according to their timestamp, this allows to preserver that order. + + do { + let flowId = obvContext.flowId + let messageId = self.messageId + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + delegateManager.receivedMessageDelegate.processReceivedMessage(withId: messageId, flowId: flowId) + } + } catch { + assertionFailure(error.localizedDescription) + // Continue anyway + } } @@ -128,7 +145,7 @@ extension ReceivedMessage { case receptionChannelInfo = "receptionChannelInfo" case timestamp = "timestamp" } - static func withMessageIdentifier(_ messageId: MessageIdentifier) -> NSPredicate { + static func withMessageIdentifier(_ messageId: ObvMessageIdentifier) -> NSPredicate { NSCompoundPredicate(andPredicateWithSubpredicates: [ withOwnedCryptoIdentity(messageId.ownedCryptoIdentity), NSPredicate(Key.rawMessageIdUid, EqualToData: messageId.uid.raw), @@ -143,6 +160,9 @@ extension ReceivedMessage { static func withTimestamp(earlierThan timestamp: Date) -> NSPredicate { NSPredicate(Key.timestamp, earlierThan: timestamp) } + static func withCryptoProtocolId(_ cryptoProtocolId: CryptoProtocolId) -> NSPredicate { + NSPredicate(Key.protocolRawId, EqualToInt: cryptoProtocolId.rawValue) + } } @nonobjc class func fetchRequest() -> NSFetchRequest { @@ -156,7 +176,7 @@ extension ReceivedMessage { extension ReceivedMessage { - static func get(messageId: MessageIdentifier, delegateManager: ObvProtocolDelegateManager, within obvContext: ObvContext) -> ReceivedMessage? { + static func get(messageId: ObvMessageIdentifier, delegateManager: ObvProtocolDelegateManager, within obvContext: ObvContext) -> ReceivedMessage? { let request: NSFetchRequest = ReceivedMessage.fetchRequest() request.predicate = Predicate.withMessageIdentifier(messageId) request.fetchLimit = 1 @@ -172,13 +192,14 @@ extension ReceivedMessage { Predicate.withProtocolInstanceUid(protocolInstanceUid), Predicate.withOwnedCryptoIdentity(ownedCryptoIdentity), ]) + request.sortDescriptors = [NSSortDescriptor(key: Predicate.Key.timestamp.rawValue, ascending: true)] request.fetchBatchSize = 1_000 let items = (try? obvContext.fetch(request)) return items?.map { $0.delegateManager = delegateManager; return $0 } } - static func delete(messageId: MessageIdentifier, within obvContext: ObvContext) throws { + static func delete(messageId: ObvMessageIdentifier, within obvContext: ObvContext) throws { let request = NSFetchRequest(entityName: ReceivedMessage.entityName) request.predicate = Predicate.withMessageIdentifier(messageId) let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) @@ -198,6 +219,14 @@ extension ReceivedMessage { } + static func deleteAllAssociatedWithOwnedIdentity(_ ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + let request = NSFetchRequest(entityName: ReceivedMessage.entityName) + request.predicate = Predicate.withOwnedCryptoIdentity(ownedIdentity) + let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) + _ = try obvContext.execute(deleteRequest) + } + + static func getAllReceivedMessageOlderThan(timestamp: Date, delegateManager: ObvProtocolDelegateManager, within obvContext: ObvContext) throws -> [ReceivedMessage] { let request: NSFetchRequest = ReceivedMessage.fetchRequest() request.predicate = Predicate.withTimestamp(earlierThan: timestamp) @@ -208,11 +237,12 @@ extension ReceivedMessage { } - static func getAllMessageIds(within obvContext: ObvContext) throws -> Set { + static func getAllMessageIds(within obvContext: ObvContext) throws -> [ObvMessageIdentifier] { let request: NSFetchRequest = ReceivedMessage.fetchRequest() request.propertiesToFetch = [Predicate.Key.rawMessageIdUid.rawValue, Predicate.Key.rawMessageIdOwnedIdentity.rawValue] + request.sortDescriptors = [NSSortDescriptor(key: Predicate.Key.timestamp.rawValue, ascending: true)] let items = try obvContext.fetch(request) - return Set(items.map { $0.messageId }) + return items.map { $0.messageId } } @@ -223,12 +253,30 @@ extension ReceivedMessage { _ = try obvContext.execute(request) } + + static func deleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocol(within obvContext: ObvContext) throws { + let request: NSFetchRequest = ReceivedMessage.fetchRequest() + request.predicate = Predicate.withCryptoProtocolId(.ownedIdentityTransfer) + request.propertiesToFetch = [] + let items = try obvContext.fetch(request) + try items.forEach { try $0.deleteReceivedMessage() } + } + } // MARK: Managing notifications and calls to delegates extension ReceivedMessage { + override func willSave() { + super.willSave() + + if isDeleted { + messageIdOnDeletion = self.messageId + } + + } + override func didSave() { super.didSave() @@ -238,9 +286,15 @@ extension ReceivedMessage { return } - if isInserted, let flowId = self.obvContext?.flowId { - delegateManager.receivedMessageDelegate.processReceivedMessage(withId: messageId, flowId: flowId) + if isDeleted { + assert(messageIdOnDeletion != nil) + assert(delegateManager.notificationDelegate != nil) + if let messageIdOnDeletion, let notificationDelegate = delegateManager.notificationDelegate { + ObvProtocolNotification.protocolReceivedMessageWasDeleted(protocolMessageId: messageIdOnDeletion) + .postOnBackgroundQueue(within: notificationDelegate) + } } + } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/GenericProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/GenericProtocolMessages.swift index 154b0d99..7f31b839 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/GenericProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/GenericProtocolMessages.swift @@ -132,10 +132,10 @@ struct GenericProtocolMessageToSend { init(channelType: ObvChannelSendChannelType, cryptoProtocolId: CryptoProtocolId, protocolInstanceUid: UID, protocolMessageRawId: Int, encodedInputs: [ObvEncoded], partOfFullRatchetProtocolOfTheSendSeed: Bool = false) { self.channelType = channelType - self.encodedElements = GenericProtocolMessageToSend.encode(cryptoProtocolId: cryptoProtocolId, - protocolInstanceUid: protocolInstanceUid, - protocolMessageRawId: protocolMessageRawId, - encodedInputs: encodedInputs) + self.encodedElements = Self.encode(cryptoProtocolId: cryptoProtocolId, + protocolInstanceUid: protocolInstanceUid, + protocolMessageRawId: protocolMessageRawId, + encodedInputs: encodedInputs) self.partOfFullRatchetProtocolOfTheSendSeed = partOfFullRatchetProtocolOfTheSendSeed self.timestamp = Date() } @@ -152,6 +152,7 @@ struct GenericProtocolMessageToSend { switch channelType { case .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity, .AllConfirmedObliviousChannelsWithContactIdentities, + .AllConfirmedObliviousChannelsWithContactIdentitiesAndWithOtherDevicesOfOwnedIdentity, .AsymmetricChannel, .AsymmetricChannelBroadcast, .Local, diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Internal Delegates/ProtocolStarterDelegate.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Internal Delegates/ProtocolStarterDelegate.swift index e5cd7e05..a0bf3520 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Internal Delegates/ProtocolStarterDelegate.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Internal Delegates/ProtocolStarterDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,20 +25,20 @@ import ObvTypes protocol ProtocolStarterDelegate { - func startDeviceDiscoveryProtocolOfContactIdentity(_: ObvCryptoIdentity, forOwnedIdentity: ObvCryptoIdentity, within: FlowIdentifier) throws - + func finalizeInitialization(flowId: FlowIdentifier, runningLog: RunningLogError) + func getInitialMessageForTrustEstablishmentProtocol(of: ObvCryptoIdentity, withFullDisplayName: String, forOwnedIdentity: ObvCryptoIdentity, withOwnedIdentityCoreDetails: ObvIdentityCoreDetails, usingProtocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend - func getInitialMessageForContactMutualIntroductionProtocol(of: ObvCryptoIdentity, withIdentityCoreDetails: ObvIdentityCoreDetails, with: ObvCryptoIdentity, withOtherIdentityCoreDetails: ObvIdentityCoreDetails, byOwnedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend + func getInitialMessageForContactMutualIntroductionProtocol(of identity1: ObvCryptoIdentity, with identity2: ObvCryptoIdentity, byOwnedIdentity ownedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid protocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend - func startChannelCreationWithContactDeviceProtocolBetweenTheCurrentDeviceOf(_: ObvCryptoIdentity, andTheDeviceUid: UID, ofTheContactIdentity: ObvCryptoIdentity, within: FlowIdentifier) throws - func getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ObvCryptoIdentity, andTheDeviceUid: UID, ofTheContactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend - func tryToObserveIdentityNotifications() + func getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) throws -> ObvChannelProtocolMessageToSend func getInitiateGroupCreationMessageForGroupManagementProtocol(groupCoreDetails: ObvGroupCoreDetails, photoURL: URL?, pendingGroupMembers: Set, ownedIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + func getDisbandGroupMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend + func getAddGroupMembersMessageForAddingMembersToContactGroupOwnedUsingGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, newGroupMembers: Set, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend func getInitialMessageForIdentityDetailsPublicationProtocol(ownedIdentity: ObvCryptoIdentity, publishedIdentityDetailsVersion: Int) throws -> ObvChannelProtocolMessageToSend @@ -53,15 +53,13 @@ protocol ProtocolStarterDelegate { func getLeaveGroupJoinedMessageForStartingGroupManagementProtocol(ownedIdentity: ObvCryptoIdentity, groupUid: UID, groupOwner: ObvCryptoIdentity, simulateReceivedMessage: Bool, within obvContext: ObvContext) throws -> GroupManagementProtocol.LeaveGroupJoinedMessage - func getInitiateContactDeletionMessageForContactManagementProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentityToDelete: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend - func getInitiateAddKeycloakContactMessageForKeycloakContactAdditionProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentityToAdd: ObvCryptoIdentity, signedContactDetails: String) throws -> ObvChannelProtocolMessageToSend func getInitiateGroupMembersQueryMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, groupOwner: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend func getTriggerReinviteMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, memberIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend - func getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + func getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend func getInitialMessageForDownloadIdentityPhotoChildProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements) throws -> ObvChannelProtocolMessageToSend @@ -73,8 +71,6 @@ protocol ProtocolStarterDelegate { func getInitialMessageForOneToOneContactInvitationProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend - func getInitialMessageForDowngradingOneToOneContact(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend - func getInitialMessageForOneStatusSyncRequest(ownedIdentity: ObvCryptoIdentity, contactsToSync: Set) throws -> ObvChannelProtocolMessageToSend // MARK: - Groups V2 @@ -83,6 +79,8 @@ protocol ProtocolStarterDelegate { func getInitiateGroupUpdateMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, changeset: ObvGroupV2.Changeset, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend + func getInitialMessageForDownloadGroupV2PhotoProtocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverPhotoInfo: GroupV2.ServerPhotoInfo) throws -> ObvChannelProtocolMessageToSend + func getInitiateGroupLeaveMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend func getInitiateGroupLeaveMessageForStartingGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, simulateReceivedMessage: Bool, flowId: FlowIdentifier) throws -> GroupV2Protocol.InitiateGroupLeaveMessage @@ -93,7 +91,7 @@ protocol ProtocolStarterDelegate { func getInitiateInitiateGroupDisbandMessageForStartingGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, simulateReceivedMessage: Bool, flowId: FlowIdentifier) throws -> GroupV2Protocol.InitiateGroupDisbandMessage - func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend + func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, remoteIdentity: ObvCryptoIdentity, remoteDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend // MARK: - Keycloak pushed groups @@ -103,6 +101,50 @@ protocol ProtocolStarterDelegate { // MARK: - Owned identities - func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, notifyContacts: Bool, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend + func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, globalOwnedIdentityDeletion: Bool) throws -> ObvChannelProtocolMessageToSend + + func getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + + func getInitiateOwnedDeviceManagementMessage(ownedCryptoIdentity: ObvCryptoIdentity, request: ObvOwnedDeviceManagementRequest) throws -> ObvChannelProtocolMessageToSend + + // func getInitiateTransferOnSourceDeviceMessageForOwnedIdentityTransferProtocol(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + // MARK: - Contact Device Management protocol + + func getInitiateContactDeletionMessageForContactManagementProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentityToDelete: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + + func getInitialMessageForDowngradingOneToOneContact(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + + // MARK: - Keycloak binding and unbinding + + func getOwnedIdentityKeycloakBindingMessage(ownedCryptoIdentity: ObvCryptoIdentity, keycloakState: ObvKeycloakState, keycloakUserId: String) throws -> ObvChannelProtocolMessageToSend + + func getOwnedIdentityKeycloakUnbindingMessage(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend + + // MARK: - SynchronizationProtocol + + func getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, syncAtom: ObvSyncAtom) throws -> ObvChannelProtocolMessageToSend + + // func getTriggerSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID, otherOwnedDeviceUid: UID, forceSendSnapshot: Bool) throws -> ObvChannelProtocolMessageToSend + + // func getInitiateSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID, otherOwnedDeviceUid: UID) throws -> ObvChannelProtocolMessageToSend + + // MARK: - Owned identity transfer protocol + + /// Called by the engine in order to start an owned identity transfer protocol on the source device. + /// - Parameters: + /// - ownedCryptoIdentity: The crypto identity of the owned identity. + /// - onAvailableSessionNumber: This block will be called by the protocol manager as soon as the session number is available, passing it as a parameter. Since getting this session number requires a network interaction with the transfer server, this block may take a "long" time before being called. + /// - flowId: The flow identifier. + func initiateOwnedIdentityTransferProtocolOnSourceDevice(ownedCryptoIdentity: ObvCryptoIdentity, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void, flowId: FlowIdentifier) async throws + + func initiateOwnedIdentityTransferProtocolOnTargetDevice(currentDeviceName: String, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void, flowId: FlowIdentifier) async throws + + + func appIsShowingSasAndExpectingEndOfProtocol(protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async + + func continueOwnedIdentityTransferProtocolOnUserEnteredSASOnSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws + + func cancelAllOwnedIdentityTransferProtocols(flowId: FlowIdentifier) async throws + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Internal Delegates/ReceivedMessageDelegate.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Internal Delegates/ReceivedMessageDelegate.swift index fe547332..615b2a17 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Internal Delegates/ReceivedMessageDelegate.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Internal Delegates/ReceivedMessageDelegate.swift @@ -26,7 +26,7 @@ import OlvidUtils protocol ReceivedMessageDelegate { - func processReceivedMessage(withId: MessageIdentifier, flowId: FlowIdentifier) + func processReceivedMessage(withId: ObvMessageIdentifier, flowId: FlowIdentifier) func deleteObsoleteReceivedMessages(flowId: FlowIdentifier) func processAllReceivedMessages(flowId: FlowIdentifier) @@ -34,6 +34,11 @@ protocol ReceivedMessageDelegate { func abortProtocol(withProtocolInstanceUid: UID, forOwnedIdentity: ObvCryptoIdentity) func createBlockForAbortingProtocol(withProtocolInstanceUid uid: UID, forOwnedIdentity identity: ObvCryptoIdentity) -> (() -> Void) func createBlockForAbortingProtocol(withProtocolInstanceUid uid: UID, forOwnedIdentity identity: ObvCryptoIdentity, within obvContext: ObvContext) -> (() -> Void) + func deleteOwnedIdentityTransferProtocolInstances(flowId: FlowIdentifier) + func deleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocol(flowId: FlowIdentifier) func deleteProtocolInstancesInAFinalState(flowId: FlowIdentifier) + // Allow to execute external operations on the queue executing protocol steps + func executeOnQueueForProtocolOperations(operation: OperationWithSpecificReasonForCancel) async throws + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolDelegateManager.swift b/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolDelegateManager.swift index 2f69c6b8..a0f13ff1 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolDelegateManager.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolDelegateManager.swift @@ -46,30 +46,13 @@ final class ObvProtocolDelegateManager { // Only when the `contextCreator`, the `notificationDelegate`, and the `identityDelegate` are set, the `ProtocolStarterCoordinator` can observe notifications. We notify the `ProtocolStarterCoordinator` each time one of these delegates is set. The third time, the `ProtocolStarterCoordinator` will automatically subscribe to notifications. Thanks to a mecanism within the DelegateManager, we know for sure that these delegates will be instantiated by the time the Manager is fully initialized. So we can safely force unwrapping. weak var channelDelegate: ObvChannelDelegate? - - weak var contextCreator: ObvCreateContextDelegate? { - didSet { - protocolStarterDelegate.tryToObserveIdentityNotifications() - } - } - - weak var identityDelegate: ObvIdentityDelegate? { - didSet { - protocolStarterDelegate.tryToObserveIdentityNotifications() - } - } - - weak var notificationDelegate: ObvNotificationDelegate? { - didSet { - protocolStarterDelegate.tryToObserveIdentityNotifications() - } - } - - weak var solveChallengeDelegate: ObvSolveChallengeDelegate? { - didSet { - protocolStarterDelegate.tryToObserveIdentityNotifications() - } - } + weak var contextCreator: ObvCreateContextDelegate? + weak var identityDelegate: ObvIdentityDelegate? + weak var notificationDelegate: ObvNotificationDelegate? + weak var solveChallengeDelegate: ObvSolveChallengeDelegate? + weak var networkPostDelegate: ObvNetworkPostDelegate? + weak var networkFetchDelegate: ObvNetworkFetchDelegate? + weak var syncSnapshotDelegate: ObvSyncSnapshotDelegate? // MARK: Initialiazer init(downloadedUserData: URL, uploadingUserData: URL, receivedMessageDelegate: ReceivedMessageDelegate, protocolStarterDelegate: ProtocolStarterDelegate, contactTrustLevelWatcher: ContactTrustLevelWatcher) { diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolManager.swift b/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolManager.swift index 2bdaddce..5137c6c6 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolManager.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -66,6 +66,10 @@ public final class ObvProtocolManager: ObvProtocolDelegate, ObvFullRatchetProtoc } + enum ObvError: Error { + case channelDelegateIsNotSet + } + } // MARK: - Implementing ObvManager @@ -77,7 +81,11 @@ extension ObvProtocolManager { ObvEngineDelegateType.ObvChannelDelegate, ObvEngineDelegateType.ObvIdentityDelegate, ObvEngineDelegateType.ObvSolveChallengeDelegate, - ObvEngineDelegateType.ObvNotificationDelegate] + ObvEngineDelegateType.ObvNotificationDelegate, + ObvEngineDelegateType.ObvNetworkPostDelegate, + ObvEngineDelegateType.ObvNetworkFetchDelegate, + ObvEngineDelegateType.ObvSyncSnapshotDelegate, + ] } public func fulfill(requiredDelegate delegate: AnyObject, forDelegateType delegateType: ObvEngineDelegateType) throws { @@ -107,6 +115,21 @@ extension ObvProtocolManager { throw Self.makeError(message: "The ObvSolveChallengeDelegate is not set") } delegateManager.solveChallengeDelegate = delegate + case .ObvNetworkPostDelegate: + guard let delegate = delegate as? ObvNetworkPostDelegate else { + throw Self.makeError(message: "The ObvNetworkPostDelegate is not set") + } + delegateManager.networkPostDelegate = delegate + case .ObvNetworkFetchDelegate: + guard let delegate = delegate as? ObvNetworkFetchDelegate else { + throw Self.makeError(message: "The ObvNetworkFetchDelegate is not set") + } + delegateManager.networkFetchDelegate = delegate + case .ObvSyncSnapshotDelegate: + guard let delegate = delegate as? ObvSyncSnapshotDelegate else { + throw Self.makeError(message: "The ObvSyncSnapshotDelegate is not set") + } + delegateManager.syncSnapshotDelegate = delegate default: throw Self.makeError(message: "Unexpected delegate type") } @@ -115,6 +138,7 @@ extension ObvProtocolManager { public func finalizeInitialization(flowId: FlowIdentifier, runningLog: RunningLogError) throws { delegateManager.contactTrustLevelWatcher.finalizeInitialization() + delegateManager.protocolStarterDelegate.finalizeInitialization(flowId: flowId, runningLog: runningLog) } @@ -126,6 +150,8 @@ extension ObvProtocolManager { Task(priority: .low) { await deleteOldUploadingUserData() } + delegateManager.receivedMessageDelegate.deleteOwnedIdentityTransferProtocolInstances(flowId: flowId) + delegateManager.receivedMessageDelegate.deleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocol(flowId: flowId) delegateManager.receivedMessageDelegate.deleteProtocolInstancesInAFinalState(flowId: flowId) delegateManager.receivedMessageDelegate.deleteObsoleteReceivedMessages(flowId: flowId) // Now that we cleaned the databases, we can try to re-process all protocol's `ReceivedMessage`s @@ -207,7 +233,7 @@ extension ObvProtocolManager { bobDeviceUid: remoteDeviceUid) let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .FullRatchet, + cryptoProtocolId: .fullRatchet, protocolInstanceUid: protocolInstanceUid) let initialMessage = FullRatchetProtocol.InitialMessage(coreProtocolMessage: coreMessage, @@ -220,7 +246,7 @@ extension ObvProtocolManager { } debugPrint("🚨 Will post message for full ratchet \(obvContext.name)") - _ = try channelDelegate.post(initialMessageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(initialMessageToSend, randomizedWith: prng, within: obvContext) debugPrint("🚨 Did post message for full ratchet \(obvContext.name)") do { @@ -298,7 +324,7 @@ extension ObvProtocolManager { let receivedMessage: ReceivedMessage if let receivedMessageUID = genericReceivedMessage.receivedMessageUID { - let messageId = MessageIdentifier(ownedCryptoIdentity: genericReceivedMessage.toOwnedIdentity, uid: receivedMessageUID) + let messageId = ObvMessageIdentifier(ownedCryptoIdentity: genericReceivedMessage.toOwnedIdentity, uid: receivedMessageUID) if let existingReceivedMessage = ReceivedMessage.get(messageId: messageId, delegateManager: delegateManager, within: obvContext) { os_log("A ReceivedMessage with messageId %{public}@ already exist, we do not try to create a new one", log: log, type: .info, messageId.debugDescription) receivedMessage = existingReceivedMessage @@ -357,16 +383,27 @@ extension ObvProtocolManager { } + public func getDisbandGroupMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getDisbandGroupMessageForGroupManagementProtocol( + groupUid: groupUid, + ownedIdentity: ownedIdentity, + within: obvContext) + } + + public func getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity ownedIdentity: ObvCryptoIdentity, andTheDeviceUid contactDeviceUid: UID, ofTheContactIdentity contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { return try delegateManager.protocolStarterDelegate.getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ownedIdentity, andTheDeviceUid: contactDeviceUid, ofTheContactIdentity: contactIdentity) } - public func getInitialMessageForContactMutualIntroductionProtocol(of contact1: ObvCryptoIdentity, withContactIdentityCoreDetails contactCoreDetails1: ObvIdentityCoreDetails, with contact2: ObvCryptoIdentity, withOtherContactIdentityCoreDetails contactCoreDetails2: ObvIdentityCoreDetails, byOwnedIdentity ownedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid protocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend { - return try delegateManager.protocolStarterDelegate.getInitialMessageForContactMutualIntroductionProtocol(of: contact1, - withIdentityCoreDetails: contactCoreDetails1, - with: contact2, - withOtherIdentityCoreDetails: contactCoreDetails2, + public func getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid) + } + + + public func getInitialMessageForContactMutualIntroductionProtocol(of identity1: ObvCryptoIdentity, with identity2: ObvCryptoIdentity, byOwnedIdentity ownedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid protocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getInitialMessageForContactMutualIntroductionProtocol(of: identity1, + with: identity2, byOwnedIdentity: ownedIdentity, usingProtocolInstanceUid: protocolInstanceUid) } @@ -419,15 +456,19 @@ extension ObvProtocolManager { } - public func getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { - return try delegateManager.protocolStarterDelegate.getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity) + public func getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity) } public func getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithContactDeviceProtocolInstances(within obvContext: ObvContext) throws -> Set { return try ChannelCreationWithContactDeviceProtocolInstance.getAll(within: obvContext) } - + + public func getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithOwnedDeviceProtocolInstances(within obvContext: ObvContext) throws -> Set { + return try ChannelCreationWithOwnedDeviceProtocolInstance.getAll(within: obvContext) + } + public func getInitialMessageForDownloadIdentityPhotoChildProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements) throws -> ObvChannelProtocolMessageToSend { return try delegateManager.protocolStarterDelegate.getInitialMessageForDownloadIdentityPhotoChildProtocol(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, contactIdentityDetailsElements: contactIdentityDetailsElements) } @@ -470,6 +511,10 @@ extension ObvProtocolManager { return try delegateManager.protocolStarterDelegate.getInitiateGroupUpdateMessageForGroupV2Protocol(ownedIdentity: ownedIdentity, groupIdentifier: groupIdentifier, changeset: changeset, flowId: flowId) } + public func getInitialMessageForDownloadGroupV2PhotoProtocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverPhotoInfo: GroupV2.ServerPhotoInfo) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getInitialMessageForDownloadGroupV2PhotoProtocol(ownedIdentity: ownedIdentity, groupIdentifier: groupIdentifier, serverPhotoInfo: serverPhotoInfo) + } + public func getInitiateGroupLeaveMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { return try delegateManager.protocolStarterDelegate.getInitiateGroupLeaveMessageForGroupV2Protocol(ownedIdentity: ownedIdentity, groupIdentifier: groupIdentifier, flowId: flowId) } @@ -483,8 +528,8 @@ extension ObvProtocolManager { } /// When a channel is (re)created with a contact device, the engine will call this method so as to make sure our contact knows about the group informations we have about groups v2 that we have in common. - public func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { - return try delegateManager.protocolStarterDelegate.getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, contactDeviceUID: contactDeviceUID, flowId: flowId) + public func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, remoteIdentity: ObvCryptoIdentity, remoteDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ownedIdentity, remoteIdentity: remoteIdentity, remoteDeviceUID: remoteDeviceUID, flowId: flowId) } @@ -511,26 +556,117 @@ extension ObvProtocolManager { // MARK: - Owned identities - - /// Called when an owned identity is about to be deleted. - public func prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { - - // Delete all received messages - - try ReceivedMessage.batchDeleteAllReceivedMessagesForOwnedCryptoIdentity(ownedCryptoIdentity, within: obvContext) - - // Delete signatures, commitments,... received relating to this owned identity - - try ChannelCreationPingSignatureReceived.batchDeleteAllChannelCreationPingSignatureReceivedForOwnedCryptoIdentity(ownedCryptoIdentity, within: obvContext) - try TrustEstablishmentCommitmentReceived.batchDeleteAllTrustEstablishmentCommitmentReceivedForOwnedCryptoIdentity(ownedCryptoIdentity, within: obvContext) - try MutualScanSignatureReceived.batchDeleteAllMutualScanSignatureReceivedForOwnedCryptoIdentity(ownedCryptoIdentity, within: obvContext) - try GroupV2SignatureReceived.deleteAllAssociatedWithOwnedIdentity(ownedCryptoIdentity, within: obvContext) - try ContactOwnedIdentityDeletionSignatureReceived.deleteAllAssociatedWithOwnedIdentity(ownedCryptoIdentity, within: obvContext) + public func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, globalOwnedIdentityDeletion: Bool) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ownedCryptoIdentityToDelete, globalOwnedIdentityDeletion: globalOwnedIdentityDeletion) + } + + public func getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ownedCryptoIdentity) + } + + + public func getInitiateOwnedDeviceManagementMessage(ownedCryptoIdentity: ObvCryptoIdentity, request: ObvOwnedDeviceManagementRequest) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getInitiateOwnedDeviceManagementMessage(ownedCryptoIdentity: ownedCryptoIdentity, request: request) + } + + // MARK: - Keycloak binding and unbinding + + public func getOwnedIdentityKeycloakBindingMessage(ownedCryptoIdentity: ObvCryptoIdentity, keycloakState: ObvKeycloakState, keycloakUserId: String) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getOwnedIdentityKeycloakBindingMessage( + ownedCryptoIdentity: ownedCryptoIdentity, + keycloakState: keycloakState, + keycloakUserId: keycloakUserId) + } + + public func getOwnedIdentityKeycloakUnbindingMessage(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getOwnedIdentityKeycloakUnbindingMessage(ownedCryptoIdentity: ownedCryptoIdentity) + } + + + // MARK: - SynchronizationProtocol + + public func getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, syncAtom: ObvSyncAtom) throws -> ObvChannelProtocolMessageToSend { + return try delegateManager.protocolStarterDelegate.getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ownedCryptoIdentity, syncAtom: syncAtom) } - public func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, notifyContacts: Bool, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { - return try delegateManager.protocolStarterDelegate.getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ownedCryptoIdentityToDelete, notifyContacts: notifyContacts, flowId: flowId) + +// public func sendTriggerSyncSnapshotMessageToAllExistingSynchronizationProtocolInstances(within obvContext: ObvContext) throws { +// guard let channelDelegate = delegateManager.channelDelegate else { +// throw ObvError.channelDelegateIsNotSet +// } +// let currentSynchronizationProtocolInstances = try ProtocolInstance.getAll(cryptoProtocolId: .synchronization, delegateManager: delegateManager, within: obvContext) +// for protocolInstance in currentSynchronizationProtocolInstances { +// let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: protocolInstance.ownedCryptoIdentity), +// cryptoProtocolId: .synchronization, +// protocolInstanceUid: protocolInstance.uid) +// let message = SynchronizationProtocol.TriggerSyncSnapshotMessage(coreProtocolMessage: coreMessage, forceSendSnapshot: false) +// guard let messageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); continue } +// _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) +// } +// } + + +// public func getTriggerSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID, otherOwnedDeviceUid: UID, forceSendSnapshot: Bool) throws -> ObvChannelProtocolMessageToSend { +// return try delegateManager.protocolStarterDelegate.getTriggerSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ownedCryptoIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: otherOwnedDeviceUid, forceSendSnapshot: forceSendSnapshot) +// } + + +// public func getInitiateSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID, otherOwnedDeviceUid: UID) throws -> ObvChannelProtocolMessageToSend { +// return try delegateManager.protocolStarterDelegate.getInitiateSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ownedCryptoIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: otherOwnedDeviceUid) +// } + + + // MARK: - Owned identity transfer protocol + + public func initiateOwnedIdentityTransferProtocolOnSourceDevice(ownedCryptoIdentity: ObvCryptoIdentity, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void, flowId: FlowIdentifier) async throws { + try await delegateManager.protocolStarterDelegate.initiateOwnedIdentityTransferProtocolOnSourceDevice( + ownedCryptoIdentity: ownedCryptoIdentity, + onAvailableSessionNumber: onAvailableSessionNumber, + onAvailableSASExpectedOnInput: onAvailableSASExpectedOnInput, + flowId: flowId) + } + + public func initiateOwnedIdentityTransferProtocolOnTargetDevice(currentDeviceName: String, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void, flowId: FlowIdentifier) async throws { + try await delegateManager.protocolStarterDelegate.initiateOwnedIdentityTransferProtocolOnTargetDevice( + currentDeviceName: currentDeviceName, + transferSessionNumber: transferSessionNumber, + onIncorrectTransferSessionNumber: onIncorrectTransferSessionNumber, + onAvailableSas: onAvailableSas, + flowId: flowId) + } + + + public func appIsShowingSasAndExpectingEndOfProtocol(protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async { + await delegateManager.protocolStarterDelegate.appIsShowingSasAndExpectingEndOfProtocol( + protocolInstanceUID: protocolInstanceUID, + onSyncSnapshotReception: onSyncSnapshotReception, + onSuccessfulTransfer: onSuccessfulTransfer) + } + + + public func continueOwnedIdentityTransferProtocolOnUserEnteredSASOnSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws { + try await delegateManager.protocolStarterDelegate.continueOwnedIdentityTransferProtocolOnUserEnteredSASOnSourceDevice( + enteredSAS: enteredSAS, + deviceToKeepActive: deviceToKeepActive, + ownedCryptoId: ownedCryptoId, + protocolInstanceUID: protocolInstanceUID) + } + + + public func cancelAllOwnedIdentityTransferProtocols(flowId: FlowIdentifier) async throws { + try await delegateManager.protocolStarterDelegate.cancelAllOwnedIdentityTransferProtocols(flowId: flowId) + } + +} + + +// MARK: - Allow to execute external operations on the queue executing protocol steps + +extension ObvProtocolManager { + + public func executeOnQueueForProtocolOperations(operation: OperationWithSpecificReasonForCancel) async throws { + try await delegateManager.receivedMessageDelegate.executeOnQueueForProtocolOperations(operation: operation) } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolManagerDummy.swift b/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolManagerDummy.swift index 91f5b6be..a47b9e03 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolManagerDummy.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/ObvProtocolManagerDummy.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,7 +27,7 @@ import OlvidUtils public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetProtocolStarterDelegate { - + static let defaultLogSubsystem = "io.olvid.protocol" lazy public var logSubsystem: String = { return ObvProtocolManagerDummy.defaultLogSubsystem @@ -39,14 +39,14 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP } public func applicationAppearedOnScreen(forTheFirstTime: Bool, flowId: FlowIdentifier) async {} - + private static let errorDomain = "ObvProtocolManagerDummy" private static func makeError(message: String) -> Error { let userInfo = [NSLocalizedFailureReasonErrorKey: message] return NSError(domain: errorDomain, code: 0, userInfo: userInfo) } - + // MARK: Instance variables private var log: OSLog @@ -56,13 +56,13 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP public init() { self.log = OSLog(subsystem: ObvProtocolManagerDummy.defaultLogSubsystem, category: "ObvProtocolManagerDummy") } - + public func deleteProtocolMetadataRelatingToContact(contactIdentity: ObvCryptoIdentity, ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { os_log("deleteProtocolMetadataRelatingToContact does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "deleteProtocolMetadataRelatingToContact does nothing in this dummy implementation") } - + public func processProtocolReceivedMessage(_: ObvProtocolReceivedMessage, within: ObvContext) throws { os_log("processProtocolReceivedMessage(_: ObvProtocolReceivedMessage, within: ObvContext) does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "processProtocolReceivedMessage(_: ObvProtocolReceivedMessage, within: ObvContext) does nothing in this dummy implementation") @@ -87,8 +87,8 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP os_log("getInitialMessageForTrustEstablishmentProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForTrustEstablishmentProtocol does nothing in this dummy implementation") } - - public func getInitialMessageForContactMutualIntroductionProtocol(of: ObvCryptoIdentity, withContactIdentityCoreDetails: ObvIdentityCoreDetails, with: ObvCryptoIdentity, withOtherContactIdentityCoreDetails: ObvIdentityCoreDetails, byOwnedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend { + + public func getInitialMessageForContactMutualIntroductionProtocol(of identity1: ObvCryptoIdentity, with identity2: ObvCryptoIdentity, byOwnedIdentity ownedIdentity: ObvCryptoIdentity, usingProtocolInstanceUid protocolInstanceUid: UID) throws -> ObvChannelProtocolMessageToSend { os_log("getInitialMessageForContactMutualIntroductionProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForContactMutualIntroductionProtocol does nothing in this dummy implementation") } @@ -97,12 +97,22 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP os_log("getInitiateGroupCreationMessageForGroupManagementProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateGroupCreationMessageForGroupManagementProtocol does nothing in this dummy implementation") } - + + public func getDisbandGroupMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { + os_log("getDisbandGroupMessageForGroupManagementProtocol does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getDisbandGroupMessageForGroupManagementProtocol does nothing in this dummy implementation") + } + public func getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ObvCryptoIdentity, andTheDeviceUid: UID, ofTheContactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { os_log("getInitialMessageForChannelCreationWithContactDeviceProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForChannelCreationWithContactDeviceProtocol does nothing in this dummy implementation") } + public func getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) throws -> ObvChannelProtocolMessageToSend { + os_log("getInitialMessageForChannelCreationWithOwnedDeviceProtocol does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getInitialMessageForChannelCreationWithOwnedDeviceProtocol does nothing in this dummy implementation") + } + public func startFullRatchetProtocolForObliviousChannelBetween(currentDeviceUid: UID, andRemoteDeviceUid remoteDeviceUid: UID, ofRemoteIdentity remoteIdentity: ObvCryptoIdentity) throws { os_log("startFullRatchetProtocolForObliviousChannelBetween does nothing in this dummy implementation", log: log, type: .error) } @@ -111,7 +121,7 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP os_log("getInitialMessageForIdentityDetailsPublicationProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForIdentityDetailsPublicationProtocol does nothing in this dummy implementation") } - + public func getOwnedGroupMembersChangedTriggerMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { os_log("getOwnedGroupMembersChangedTriggerMessageForGroupManagementProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getOwnedGroupMembersChangedTriggerMessageForGroupManagementProtocol does nothing in this dummy implementation") @@ -121,7 +131,7 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP os_log("getAddGroupMembersMessageForAddingMembersToContactGroupOwned does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getAddGroupMembersMessageForAddingMembersToContactGroupOwned does nothing in this dummy implementation") } - + public func getRemoveGroupMembersMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, removedGroupMembers: Set, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { os_log("getRemoveGroupMembersMessageForGroupManagementProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getRemoveGroupMembersMessageForGroupManagementProtocol does nothing in this dummy implementation") @@ -136,12 +146,12 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP os_log("getInitiateContactDeletionMessageForContactManagementProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateContactDeletionMessageForContactManagementProtocol does nothing in this dummy implementation") } - + public func getInitiateAddKeycloakContactMessageForKeycloakContactAdditionProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentityToAdd contactIdentity: ObvCryptoIdentity, signedContactDetails: String) throws -> ObvChannelProtocolMessageToSend { os_log("getInitiateAddKeycloakContactMessageForKeycloakContactAdditionProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateAddKeycloakContactMessageForKeycloakContactAdditionProtocol does nothing in this dummy implementation") } - + public func getInitiateGroupMembersQueryMessageForGroupManagementProtocol(groupUid: UID, ownedIdentity: ObvCryptoIdentity, groupOwner: ObvCryptoIdentity, within obvContext: ObvContext) throws -> ObvChannelProtocolMessageToSend { os_log("getInitiateGroupMembersQueryMessageForGroupManagementProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateGroupMembersQueryMessageForGroupManagementProtocol does nothing in this dummy implementation") @@ -152,36 +162,41 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP throw Self.makeError(message: "getTriggerReinviteMessageForGroupManagementProtocol does nothing in this dummy implementation") } - public func getInitialMessageForDeviceDiscoveryForContactIdentityProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { - os_log("getInitialMessageForDeviceDiscoveryForContactIdentityProtocol does nothing in this dummy implementation", log: log, type: .error) - throw Self.makeError(message: "getInitialMessageForDeviceDiscoveryForContactIdentityProtocol does nothing in this dummy implementation") + public func getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + os_log("getInitialMessageForContactDeviceDiscoveryProtocol does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getInitialMessageForContactDeviceDiscoveryProtocol does nothing in this dummy implementation") } public func getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithContactDeviceProtocolInstances(within obvContext: ObvContext) throws -> Set { os_log("getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithContactDeviceProtocolInstances does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithContactDeviceProtocolInstances does nothing in this dummy implementation") } - + + public func getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithOwnedDeviceProtocolInstances(within obvContext: ObvContext) throws -> Set { + os_log("getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithOwnedDeviceProtocolInstances does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getAllObliviousChannelIdentifiersHavingARunningChannelCreationWithOwnedDeviceProtocolInstances does nothing in this dummy implementation") + } + public func getInitialMessageForDownloadIdentityPhotoChildProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements) throws -> ObvChannelProtocolMessageToSend { os_log("getInitialMessageForDownloadIdentityPhotoChildProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForDownloadIdentityPhotoChildProtocol does nothing in this dummy implementation") } - + public func getInitialMessageForDownloadGroupPhotoChildProtocol(ownedIdentity: ObvCryptoIdentity, groupInformation: GroupInformation) throws -> ObvChannelProtocolMessageToSend { os_log("getInitialMessageForDownloadGroupPhotoChildProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForDownloadGroupPhotoChildProtocol does nothing in this dummy implementation") } - + public func getInitialMessageForTrustEstablishmentWithMutualScanProtocol(ownedIdentity: ObvCryptoIdentity, remoteIdentity: ObvCryptoIdentity, signature: Data) throws -> ObvChannelProtocolMessageToSend { os_log("getInitialMessageForTrustEstablishmentWithMutualScanProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForTrustEstablishmentWithMutualScanProtocol does nothing in this dummy implementation") } - + public func getInitialMessageForAddingOwnCapabilities(ownedIdentity: ObvCryptoIdentity, newOwnCapabilities: Set) throws -> ObvChannelProtocolMessageToSend { os_log("getInitialMessageForAddingOwnCapabilities does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForAddingOwnCapabilities does nothing in this dummy implementation") } - + public func getInitialMessageForOneToOneContactInvitationProtocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { os_log("getInitialMessageForOneToOneContactInvitationProtocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForAddingOwnCapabilities does nothing in this dummy implementation") @@ -191,7 +206,7 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP os_log("getInitialMessageForDowngradingOneToOneContact does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForDowngradingOneToOneContact does nothing in this dummy implementation") } - + public func getInitialMessageForOneStatusSyncRequest(ownedIdentity: ObvCryptoIdentity, contactsToSync: Set) throws -> ObvChannelProtocolMessageToSend { os_log("getInitialMessageForOneStatusSyncRequest does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitialMessageForOneStatusSyncRequest does nothing in this dummy implementation") @@ -201,12 +216,12 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP os_log("getInitiateGroupCreationMessageForGroupV2Protocol does nothing in this dummy implementation", log: log, type: .error) throw ObvProtocolManagerDummy.makeError(message: "getInitiateGroupCreationMessageForGroupV2Protocol does nothing in this dummy implementation") } - + public func getInitiateGroupUpdateMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, changeset: ObvGroupV2.Changeset, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { os_log("getInitiateGroupUpdateMessageForGroupV2Protocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateGroupUpdateMessageForGroupV2Protocol does nothing in this dummy implementation") } - + public func getInitiateGroupLeaveMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { os_log("getInitiateGroupLeaveMessageForGroupV2Protocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateGroupLeaveMessageForGroupV2Protocol does nothing in this dummy implementation") @@ -221,13 +236,13 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP os_log("getInitiateInitiateGroupDisbandMessageForGroupV2Protocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateInitiateGroupDisbandMessageForGroupV2Protocol does nothing in this dummy implementation") } - - public func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { + + public func getInitiateBatchKeysResendMessageForGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, remoteIdentity: ObvCryptoIdentity, remoteDeviceUID: UID, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { os_log("getInitiateBatchKeysResendMessageForGroupV2Protocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateBatchKeysResendMessageForGroupV2Protocol does nothing in this dummy implementation") } - public func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, notifyContacts: Bool, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { + public func getInitiateOwnedIdentityDeletionMessage(ownedCryptoIdentityToDelete: ObvCryptoIdentity, globalOwnedIdentityDeletion: Bool) throws -> ObvChannelProtocolMessageToSend { os_log("getInitiateOwnedIdentityDeletionMessage does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateOwnedIdentityDeletionMessage does nothing in this dummy implementation") } @@ -246,12 +261,89 @@ public final class ObvProtocolManagerDummy: ObvProtocolDelegate, ObvFullRatchetP os_log("getInitiateUpdateKeycloakGroupsMessageForGroupV2Protocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateUpdateKeycloakGroupsMessageForGroupV2Protocol does nothing in this dummy implementation") } - + public func getInitiateTargetedPingMessageForKeycloakGroupV2Protocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, pendingMemberIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) throws -> ObvChannelProtocolMessageToSend { os_log("getInitiateTargetedPingMessageForKeycloakGroupV2Protocol does nothing in this dummy implementation", log: log, type: .error) throw Self.makeError(message: "getInitiateTargetedPingMessageForKeycloakGroupV2Protocol does nothing in this dummy implementation") } + + public func getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ObvCrypto.ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + os_log("getInitiateOwnedDeviceDiscoveryMessage does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getInitiateOwnedDeviceDiscoveryMessage does nothing in this dummy implementation") + } + + public func executeOnQueueForProtocolOperations(operation: OperationWithSpecificReasonForCancel) async throws where ReasonForCancelType : LocalizedErrorWithLogType { + os_log("executeOnQueueForProtocolOperations does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "executeOnQueueForProtocolOperations does nothing in this dummy implementation") + } + + public func getOwnedIdentityKeycloakBindingMessage(ownedCryptoIdentity: ObvCryptoIdentity, keycloakState: ObvKeycloakState, keycloakUserId: String) throws -> ObvChannelProtocolMessageToSend { + os_log("getOwnedIdentityKeycloakBindingMessage does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getOwnedIdentityKeycloakBindingMessage does nothing in this dummy implementation") + } + + public func getOwnedIdentityKeycloakUnbindingMessage(ownedCryptoIdentity: ObvCryptoIdentity) throws -> ObvChannelProtocolMessageToSend { + os_log("getOwnedIdentityKeycloakUnbindingMessage does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getOwnedIdentityKeycloakUnbindingMessage does nothing in this dummy implementation") + } + + public func getInitiateOwnedDeviceManagementMessage(ownedCryptoIdentity: ObvCryptoIdentity, request: ObvOwnedDeviceManagementRequest) throws -> ObvChannelProtocolMessageToSend { + os_log("getInitiateOwnedDeviceManagementMessage does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getInitiateOwnedDeviceManagementMessage does nothing in this dummy implementation") + } + + public func initiateOwnedIdentityTransferProtocolOnSourceDevice(ownedCryptoIdentity: ObvCryptoIdentity, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void, flowId: FlowIdentifier) async throws { + os_log("initiateOwnedIdentityTransferProtocolOnSourceDevice does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "initiateOwnedIdentityTransferProtocolOnSourceDevice does nothing in this dummy implementation") + } + + public func cancelAllOwnedIdentityTransferProtocols(flowId: FlowIdentifier) async throws { + os_log("cancelAllOwnedIdentityTransferProtocols does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "cancelAllOwnedIdentityTransferProtocols does nothing in this dummy implementation") + } + + public func initiateOwnedIdentityTransferProtocolOnTargetDevice(currentDeviceName: String, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void, flowId: FlowIdentifier) async throws { + os_log("initiateOwnedIdentityTransferProtocolOnTargetDevice does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "initiateOwnedIdentityTransferProtocolOnTargetDevice does nothing in this dummy implementation") + } + + public func continueOwnedIdentityTransferProtocolOnUserEnteredSASOnSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws { + os_log("continueOwnedIdentityTransferProtocolOnUserEnteredSASOnSourceDevice does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "continueOwnedIdentityTransferProtocolOnUserEnteredSASOnSourceDevice does nothing in this dummy implementation") + } + + public func getInitiateSyncAtomMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, syncAtom: ObvSyncAtom) throws -> ObvChannelProtocolMessageToSend { + os_log("getInitiateSyncAtomMessageForSynchronizationProtocol does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getInitiateSyncAtomMessageForSynchronizationProtocol does nothing in this dummy implementation") + } + + public func sendTriggerSyncSnapshotMessageToAllExistingSynchronizationProtocolInstances(within obvContext: OlvidUtils.ObvContext) throws { + os_log("sendTriggerSyncSnapshotMessageToAllExistingSynchronizationProtocolInstances does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "sendTriggerSyncSnapshotMessageToAllExistingSynchronizationProtocolInstances does nothing in this dummy implementation") + } + public func getInitiateSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID, otherOwnedDeviceUid: UID) throws -> ObvChannelProtocolMessageToSend { + os_log("getInitiateSyncSnapshotMessageForSynchronizationProtocol does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getInitiateSyncSnapshotMessageForSynchronizationProtocol does nothing in this dummy implementation") + } + + public func getTriggerSyncSnapshotMessageForSynchronizationProtocol(ownedCryptoIdentity: ObvCryptoIdentity, currentDeviceUid: UID, otherOwnedDeviceUid: UID, forceSendSnapshot: Bool) throws -> ObvChannelProtocolMessageToSend { + os_log("getTriggerSyncSnapshotMessageForSynchronizationProtocol does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getTriggerSyncSnapshotMessageForSynchronizationProtocol does nothing in this dummy implementation") + } + + public func getInitialMessageForDownloadGroupV2PhotoProtocol(ownedIdentity: ObvCryptoIdentity, groupIdentifier: GroupV2.Identifier, serverPhotoInfo: GroupV2.ServerPhotoInfo) throws -> ObvChannelProtocolMessageToSend { + os_log("getInitialMessageForDownloadGroupV2PhotoProtocol does nothing in this dummy implementation", log: log, type: .error) + throw Self.makeError(message: "getInitialMessageForDownloadGroupV2PhotoProtocol does nothing in this dummy implementation") + } + + public func appIsShowingSasAndExpectingEndOfProtocol(protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async { + os_log("appIsShowingSasAndExpectingEndOfProtocol does nothing in this dummy implementation", log: log, type: .error) + } + + + + // MARK: - Implementing ObvManager public let requiredDelegates = [ObvEngineDelegateType]() diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteObsoleteReceivedMessagesOperation.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteObsoleteReceivedMessagesOperation.swift index 48acedb7..0c88f4bf 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteObsoleteReceivedMessagesOperation.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteObsoleteReceivedMessagesOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,6 +19,7 @@ import Foundation import OlvidUtils +import CoreData /// Operation executed during bootstrap. It deletes all received messages that are older than 15 days and that have no associated protocol instance. @@ -31,44 +32,37 @@ final class DeleteObsoleteReceivedMessagesOperation: ContextualOperationWithSpec super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { - do { - - // Find all old messages - - let fifteenDays = TimeInterval(days: 15) - let oldDate = Date(timeIntervalSinceNow: -fifteenDays) - assert(oldDate < Date()) - - let oldMessages = try ReceivedMessage.getAllReceivedMessageOlderThan(timestamp: oldDate, delegateManager: delegateManager, within: obvContext) - - guard !oldMessages.isEmpty else { return } - - // For each old message, delete the message if it has no associated protocol instance - - for oldMessage in oldMessages { - let protocolInstanceExistForMessage = try ProtocolInstance.exists(cryptoProtocolId: oldMessage.cryptoProtocolId, - uid: oldMessage.protocolInstanceUid, - ownedIdentity: oldMessage.messageId.ownedCryptoIdentity, - within: obvContext) - if !protocolInstanceExistForMessage { - try oldMessage.deleteReceivedMessage() - } - + // Find all old messages + + let fifteenDays = TimeInterval(days: 15) + let oldDate = Date(timeIntervalSinceNow: -fifteenDays) + assert(oldDate < Date()) + + let oldMessages = try ReceivedMessage.getAllReceivedMessageOlderThan(timestamp: oldDate, delegateManager: delegateManager, within: obvContext) + + guard !oldMessages.isEmpty else { return } + + // For each old message, delete the message if it has no associated protocol instance + + for oldMessage in oldMessages { + let protocolInstanceExistForMessage = try ProtocolInstance.exists(cryptoProtocolId: oldMessage.cryptoProtocolId, + uid: oldMessage.protocolInstanceUid, + ownedIdentity: oldMessage.messageId.ownedCryptoIdentity, + within: obvContext) + if !protocolInstanceExistForMessage { + try oldMessage.deleteReceivedMessage() } - } catch { - return cancel(withReason: .coreDataError(error: error)) } + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + + } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteOwnedIdentityTransferProtocolInstancesOperation.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteOwnedIdentityTransferProtocolInstancesOperation.swift new file mode 100644 index 00000000..df027a20 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteOwnedIdentityTransferProtocolInstancesOperation.swift @@ -0,0 +1,36 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import CoreData + + +final class DeleteOwnedIdentityTransferProtocolInstancesOperation: ContextualOperationWithSpecificReasonForCancel { + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + try ProtocolInstance.deleteOwnedIdentityTransferProtocolInstances(within: obvContext) + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteProtocolInstancesInAFinalStateOperation.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteProtocolInstancesInAFinalStateOperation.swift index e340c611..82152de4 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteProtocolInstancesInAFinalStateOperation.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteProtocolInstancesInAFinalStateOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,25 +19,18 @@ import Foundation import OlvidUtils +import CoreData final class DeleteProtocolInstancesInAFinalStateOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext else { - return cancel(withReason: .contextIsNil) + do { + try ProtocolInstance.deleteProtocolInstancesInAFinalState(within: obvContext) + } catch { + return cancel(withReason: .coreDataError(error: error)) } - obvContext.performAndWait { - - do { - try ProtocolInstance.deleteProtocolInstancesInAFinalState(within: obvContext) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - } - } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocolOperation.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocolOperation.swift new file mode 100644 index 00000000..96791c49 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/DeleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocolOperation.swift @@ -0,0 +1,36 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import CoreData + + +final class DeleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocolOperation: ContextualOperationWithSpecificReasonForCancel { + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + try ReceivedMessage.deleteReceivedMessagesConcerningAnOwnedIdentityTransferProtocol(within: obvContext) + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/ProtocolOperation.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/ProtocolOperation.swift index 09a635e1..79842130 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/ProtocolOperation.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/ProtocolOperation.swift @@ -33,7 +33,7 @@ final class ProtocolOperation: ObvOperation, ObvErrorMaker { private static let logCategory = "ProtocolOperation" let log: OSLog - override var className: String { + override var debugClassName: String { return "ProtocolOperation" } @@ -41,7 +41,7 @@ final class ProtocolOperation: ObvOperation, ObvErrorMaker { // MARK: Instance variables and constants - let receivedMessageId: MessageIdentifier + let receivedMessageId: ObvMessageIdentifier weak var delegateManager: ObvProtocolDelegateManager? = nil private(set) var reasonForCancel: PossibleReasonForCancel? = nil let prng: PRNGService @@ -86,7 +86,7 @@ final class ProtocolOperation: ObvOperation, ObvErrorMaker { // MARK: Initializer - init(receivedMessageId: MessageIdentifier, flowId: FlowIdentifier, delegateManager: ObvProtocolDelegateManager, prng: PRNGService) { + init(receivedMessageId: ObvMessageIdentifier, flowId: FlowIdentifier, delegateManager: ObvProtocolDelegateManager, prng: PRNGService) { self.receivedMessageId = receivedMessageId self.flowId = flowId self.delegateManager = delegateManager @@ -231,7 +231,7 @@ final class ProtocolOperation: ObvOperation, ObvErrorMaker { within: obvContext) for message in messagesToSend { guard let messageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } catch let error { os_log("Could not post a protocol message in order to notify the parent protocol instance: %@", log: log, type: .fault, error.localizedDescription) diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/ProtocolStep.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/ProtocolStep.swift index 93479fd4..3be1961b 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Operations/ProtocolStep.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Operations/ProtocolStep.swift @@ -42,6 +42,9 @@ class ProtocolStep { let solveChallengeDelegate: ObvSolveChallengeDelegate let notificationDelegate: ObvNotificationDelegate let protocolStarterDelegate: ProtocolStarterDelegate + let networkPostDelegate: ObvNetworkPostDelegate // Used when deleting an owned identity + let networkFetchDelegate: ObvNetworkFetchDelegate // Used when deleting an owned identity + let syncSnapshotDelegate: ObvSyncSnapshotDelegate var ownedIdentity: ObvCryptoIdentity { concreteCryptoProtocol.ownedIdentity @@ -92,6 +95,7 @@ class ProtocolStep { return nil } self.solveChallengeDelegate = _solveChallengeDelegate + guard let _notificationDelegate = concreteCryptoProtocol.delegateManager.notificationDelegate else { os_log("The notification delegate is not set", log: log, type: .fault) assertionFailure() @@ -99,6 +103,27 @@ class ProtocolStep { } self.notificationDelegate = _notificationDelegate + guard let _networkPostDelegate = concreteCryptoProtocol.delegateManager.networkPostDelegate else { + os_log("The networkPostDelegate is not set", log: log, type: .fault) + assertionFailure() + return nil + } + self.networkPostDelegate = _networkPostDelegate + + guard let _networkFetchDelegate = concreteCryptoProtocol.delegateManager.networkFetchDelegate else { + os_log("The networkPostDelegate is not set", log: log, type: .fault) + assertionFailure() + return nil + } + self.networkFetchDelegate = _networkFetchDelegate + + guard let _syncSnapshotDelegate = concreteCryptoProtocol.delegateManager.syncSnapshotDelegate else { + os_log("The networkPostDelegate is not set", log: log, type: .fault) + assertionFailure() + return nil + } + self.syncSnapshotDelegate = _syncSnapshotDelegate + do { guard try expectedReceptionChannelInfo.accepts(receivedMessageReceptionChannelInfo, identityDelegate: identityDelegate, within: concreteCryptoProtocol.obvContext) else { os_log("Unexpected receptionChannelInfo (%{public}@ does not accept %{public}@)", log: log, type: .error, expectedReceptionChannelInfo.debugDescription, receivedMessageReceptionChannelInfo.debugDescription) diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocol.swift similarity index 74% rename from Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocol.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocol.swift index df506a4b..9301b02d 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -28,11 +28,11 @@ public struct ChannelCreationWithContactDeviceProtocol: ConcreteCryptoProtocol, static let logCategory = "ChannelCreationWithContactDeviceProtocol" public static let errorDomain = "ChannelCreationWithContactDeviceProtocol" - static let id = CryptoProtocolId.ChannelCreationWithContactDevice + static let id = CryptoProtocolId.channelCreationWithContactDevice - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Cancelled, - StateId.ChannelConfirmed, - StateId.PingSent] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.cancelled, + StateId.channelConfirmed, + StateId.pingSent] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState @@ -59,11 +59,7 @@ public struct ChannelCreationWithContactDeviceProtocol: ConcreteCryptoProtocol, return MessageId(rawValue: rawValue) } - static let allStepIds: [ConcreteProtocolStepId] = [StepId.SendPing, - StepId.SendPingOrEphemeralKey, - StepId.SendEphemeralKeyAndK1, - StepId.RecoverK1AndSendK2AndCreateChannel, - StepId.RecoverK2CreateChannelAndSendAck, - StepId.ConfirmChannelAndSendAck, - StepId.ConfirmChannel] + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolMessages.swift similarity index 90% rename from Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolMessages.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolMessages.swift index 8b6506c6..ea7e2709 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -32,23 +32,23 @@ import ObvMetaManager extension ChannelCreationWithContactDeviceProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case Ping = 1 - case AliceIdentityAndEphemeralKey = 2 - case BobEphemeralKeyAndK1 = 3 - case K2 = 4 - case FirstAck = 5 - case SecondAck = 6 + case initial = 0 + case ping = 1 + case aliceIdentityAndEphemeralKey = 2 + case bobEphemeralKeyAndK1 = 3 + case k2 = 4 + case firstAck = 5 + case secondAck = 6 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .Initial : return InitialMessage.self - case .Ping : return PingMessage.self - case .AliceIdentityAndEphemeralKey : return AliceIdentityAndEphemeralKeyMessage.self - case .BobEphemeralKeyAndK1 : return BobEphemeralKeyAndK1Message.self - case .K2 : return K2Message.self - case .FirstAck : return FirstAckMessage.self - case .SecondAck : return SecondAckMessage.self + case .initial : return InitialMessage.self + case .ping : return PingMessage.self + case .aliceIdentityAndEphemeralKey : return AliceIdentityAndEphemeralKeyMessage.self + case .bobEphemeralKeyAndK1 : return BobEphemeralKeyAndK1Message.self + case .k2 : return K2Message.self + case .firstAck : return FirstAckMessage.self + case .secondAck : return SecondAckMessage.self } } } @@ -58,7 +58,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct InitialMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Initial + let id: ConcreteProtocolMessageId = MessageId.initial let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -89,7 +89,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct PingMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Ping + let id: ConcreteProtocolMessageId = MessageId.ping let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -121,7 +121,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct AliceIdentityAndEphemeralKeyMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AliceIdentityAndEphemeralKey + let id: ConcreteProtocolMessageId = MessageId.aliceIdentityAndEphemeralKey let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -166,7 +166,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct BobEphemeralKeyAndK1Message: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.BobEphemeralKeyAndK1 + let id: ConcreteProtocolMessageId = MessageId.bobEphemeralKeyAndK1 let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -205,7 +205,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct K2Message: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.K2 + let id: ConcreteProtocolMessageId = MessageId.k2 let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -234,7 +234,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct FirstAckMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.FirstAck + let id: ConcreteProtocolMessageId = MessageId.firstAck let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -265,7 +265,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct SecondAckMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.SecondAck + let id: ConcreteProtocolMessageId = MessageId.secondAck let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolStates.swift similarity index 84% rename from Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolStates.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolStates.swift index e29de1a1..07796650 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -32,28 +32,28 @@ extension ChannelCreationWithContactDeviceProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 + case initialState = 0 // Alice's side - case WaitingForK1 = 1 - case WaitForFirstAck = 2 + case waitingForK1 = 1 + case waitForFirstAck = 2 // Bob's side - case WaitingForK2 = 3 - case WaitForSecondAck = 5 + case waitingForK2 = 3 + case waitForSecondAck = 5 // On Alice's and Bob's sides - case PingSent = 6 - case ChannelConfirmed = 7 - case Cancelled = 8 + case pingSent = 6 + case channelConfirmed = 7 + case cancelled = 8 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .WaitingForK1 : return WaitingForK1State.self - case .WaitForFirstAck : return WaitForFirstAckState.self - case .WaitingForK2 : return WaitingForK2State.self - case .WaitForSecondAck : return WaitForSecondAckState.self - case .PingSent : return PingSentState.self - case .ChannelConfirmed : return ChannelConfirmedState.self - case .Cancelled : return CancelledState.self + case .initialState : return ConcreteProtocolInitialState.self + case .waitingForK1 : return WaitingForK1State.self + case .waitForFirstAck : return WaitForFirstAckState.self + case .waitingForK2 : return WaitingForK2State.self + case .waitForSecondAck : return WaitForSecondAckState.self + case .pingSent : return PingSentState.self + case .channelConfirmed : return ChannelConfirmedState.self + case .cancelled : return CancelledState.self } } } @@ -63,7 +63,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct WaitingForK1State: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForK1 + let id: ConcreteProtocolStateId = StateId.waitingForK1 let contactIdentity: ObvCryptoIdentity let contactDeviceUid: UID @@ -97,7 +97,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct WaitForFirstAckState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitForFirstAck + let id: ConcreteProtocolStateId = StateId.waitForFirstAck let contactIdentity: ObvCryptoIdentity let contactDeviceUid: UID @@ -123,7 +123,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct WaitingForK2State: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForK2 + let id: ConcreteProtocolStateId = StateId.waitingForK2 let contactIdentity: ObvCryptoIdentity let contactDeviceUid: UID @@ -160,7 +160,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct WaitForSecondAckState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitForSecondAck + let id: ConcreteProtocolStateId = StateId.waitForSecondAck let contactIdentity: ObvCryptoIdentity let contactDeviceUid: UID @@ -187,7 +187,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct PingSentState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.PingSent + let id: ConcreteProtocolStateId = StateId.pingSent init(_: ObvEncoded) {} @@ -201,7 +201,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct ChannelConfirmedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.ChannelConfirmed + let id: ConcreteProtocolStateId = StateId.channelConfirmed init(_: ObvEncoded) {} @@ -216,7 +216,7 @@ extension ChannelCreationWithContactDeviceProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolSteps.swift similarity index 74% rename from Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolSteps.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolSteps.swift index ba3682de..7bff3388 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithContactDeviceProtocol/ChannelCreationWithContactDeviceProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -31,38 +31,38 @@ import OlvidUtils extension ChannelCreationWithContactDeviceProtocol { - enum StepId: Int, ConcreteProtocolStepId { + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case SendPing = 0 - case SendPingOrEphemeralKey = 1 - case RecoverK1AndSendK2AndCreateChannel = 2 - case ConfirmChannelAndSendAck = 3 - case SendEphemeralKeyAndK1 = 4 - case RecoverK2CreateChannelAndSendAck = 5 - case ConfirmChannel = 6 + case sendPing = 0 + case sendPingOrEphemeralKey = 1 + case recoverK1AndSendK2AndCreateChannel = 2 + case confirmChannelAndSendAck = 3 + case sendEphemeralKeyAndK1 = 4 + case recoverK2CreateChannelAndSendAck = 5 + case confirmChannel = 6 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .SendPing: + case .sendPing: let step = SendPingStep(from: concreteProtocol, and: receivedMessage) return step - case .SendPingOrEphemeralKey: + case .sendPingOrEphemeralKey: let step = SendPingOrEphemeralKeyStep(from: concreteProtocol, and: receivedMessage) return step - case .RecoverK1AndSendK2AndCreateChannel: + case .recoverK1AndSendK2AndCreateChannel: let step = RecoverK1AndSendK2AndCreateChannelStep(from: concreteProtocol, and: receivedMessage) return step - case .ConfirmChannelAndSendAck: + case .confirmChannelAndSendAck: let step = ConfirmChannelAndSendAckStep(from: concreteProtocol, and: receivedMessage) return step - case .SendEphemeralKeyAndK1: + case .sendEphemeralKeyAndK1: let step = SendEphemeralKeyAndK1Step(from: concreteProtocol, and: receivedMessage) return step - case .RecoverK2CreateChannelAndSendAck: + case .recoverK2CreateChannelAndSendAck: let step = RecoverK2CreateChannelAndSendAckStep(from: concreteProtocol, and: receivedMessage) return step - case .ConfirmChannel: + case .confirmChannel: let step = ConfirmChannelStep(from: concreteProtocol, and: receivedMessage) return step } @@ -96,34 +96,36 @@ extension ChannelCreationWithContactDeviceProtocol { let contactIdentity = receivedMessage.contactIdentity let contactDeviceUid = receivedMessage.contactDeviceUid + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep]", log: log, type: .info, contactIdentity.debugDescription) + // Check that the contact identity is trusted by the owned identity running this protocol, i.e., check that the contact identity is part of the owned identity's contacts guard (try? identityDelegate.isIdentity(contactIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext)) == true else { - os_log("The contact identity is not yet trusted", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] The contact identity is not yet trusted", log: log, type: .error) return CancelledState() } guard try identityDelegate.isContactIdentityActive(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, within: obvContext) else { - os_log("The contact identity is not active", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] The contact identity is not active", log: log, type: .error) return CancelledState() } // Clean any ongoing instance of this protocol - os_log("Cleaning any ongoing instances of the ChannelCreationWithContactDeviceProtocol", log: log, type: .debug) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] Cleaning any ongoing instances of the ChannelCreationWithContactDeviceProtocol", log: log, type: .debug) do { if try ChannelCreationWithContactDeviceProtocolInstance.exists(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, andOwnedIdentity: ownedIdentity, within: obvContext) { - os_log("There exists a ChannelCreationWithContactDeviceProtocolInstance to clean", log: log, type: .debug) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] There exists a ChannelCreationWithContactDeviceProtocolInstance to clean", log: log, type: .debug) if let protocolInstanceUid = try ChannelCreationWithContactDeviceProtocolInstance.delete(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, andOwnedIdentity: ownedIdentity, within: obvContext) { - os_log("The ChannelCreationWithContactDeviceProtocolInstance to clean has uid %{public}@", log: log, type: .debug, protocolInstanceUid.debugDescription) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] The ChannelCreationWithContactDeviceProtocolInstance to clean has uid %{public}@", log: log, type: .debug, protocolInstanceUid.debugDescription) let abortProtocolBlock = delegateManager.receivedMessageDelegate.createBlockForAbortingProtocol(withProtocolInstanceUid: protocolInstanceUid, forOwnedIdentity: ownedIdentity, within: obvContext) - os_log("Executing the block allowing to abort the protocol with instance uid %{public}@", log: log, type: .debug, protocolInstanceUid.debugDescription) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] Executing the block allowing to abort the protocol with instance uid %{public}@", log: log, type: .debug, protocolInstanceUid.debugDescription) abortProtocolBlock() - os_log("The block allowing to clest the protocol with instance uid %{public}@ was executed", log: log, type: .debug, protocolInstanceUid.debugDescription) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] The block allowing to clest the protocol with instance uid %{public}@ was executed", log: log, type: .debug, protocolInstanceUid.debugDescription) } } } catch { - os_log("Could not check whether a previous instance of this protocol exists, or could not delete it", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] Could not check whether a previous instance of this protocol exists, or could not delete it", log: log, type: .error) return CancelledState() } @@ -135,7 +137,7 @@ extension ChannelCreationWithContactDeviceProtocol { ofRemoteIdentity: contactIdentity, within: obvContext) } catch { - os_log("Could not delete previous oblivious channel", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] Could not delete previous oblivious channel", log: log, type: .fault) assertionFailure() return CancelledState() } @@ -146,7 +148,7 @@ extension ChannelCreationWithContactDeviceProtocol { do { currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) } catch { - os_log("Could not get the current device uid", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] Could not get the current device uid", log: log, type: .error) return CancelledState() } @@ -156,7 +158,7 @@ extension ChannelCreationWithContactDeviceProtocol { do { let challengeType = ChallengeType.channelCreation(firstDeviceUid: contactDeviceUid, secondDeviceUid: currentDeviceUid, firstIdentity: contactIdentity, secondIdentity: ownedIdentity) guard let res = try? solveChallengeDelegate.solveChallenge(challengeType, for: ownedIdentity, using: prng, within: obvContext) else { - os_log("Could not solve challenge", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] Could not solve challenge", log: log, type: .fault) return CancelledState() } signature = res @@ -171,14 +173,16 @@ extension ChannelCreationWithContactDeviceProtocol { return CancelledState() } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { - os_log("Could not post message", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] Could not post message", log: log, type: .fault) return CancelledState() } // Return the new state + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingStep] Returning the PingSentState", log: log, type: .info) + return PingSentState() } @@ -212,15 +216,17 @@ extension ChannelCreationWithContactDeviceProtocol { let contactDeviceUid = receivedMessage.contactDeviceUid let signature = receivedMessage.signature + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep]", log: log, type: .info, contactIdentity.debugDescription) + // Make sure the contact identity is trusted (i.e., is part of the ContactIdentity database of the owned identity) guard (try? identityDelegate.isIdentity(contactIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext)) == true else { - os_log("The contact identity is not yet trusted", log: log, type: .debug) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] The contact identity is not yet trusted", log: log, type: .debug) return CancelledState() } guard try identityDelegate.isContactIdentityActive(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, within: obvContext) else { - os_log("The contact identity is not active", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] The contact identity is not active", log: log, type: .error) return CancelledState() } @@ -230,11 +236,11 @@ extension ChannelCreationWithContactDeviceProtocol { let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) let challengeType = ChallengeType.channelCreation(firstDeviceUid: currentDeviceUid, secondDeviceUid: contactDeviceUid, firstIdentity: ownedIdentity, secondIdentity: contactIdentity) guard ObvSolveChallengeStruct.checkResponse(signature, to: challengeType, from: contactIdentity) else { - os_log("The signature is invalid", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] The signature is invalid", log: log, type: .error) return CancelledState() } } catch { - os_log("Could not check the signature", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] Could not check the signature", log: log, type: .fault) return CancelledState() } @@ -246,18 +252,18 @@ extension ChannelCreationWithContactDeviceProtocol { guard !(try ChannelCreationPingSignatureReceived.exists(ownedCryptoIdentity: ownedIdentity, signature: signature, within: obvContext)) else { - os_log("The signature received was already received in a previous protocol message. This should not happen but with a negligible probability. We cancel.", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] The signature received was already received in a previous protocol message. This should not happen but with a negligible probability. We cancel.", log: log, type: .fault) return CancelledState() } } catch { - os_log("We could not perform check whether the signature was already received: %{public}@", log: log, type: .fault, error.localizedDescription) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] We could not perform check whether the signature was already received: %{public}@", log: log, type: .fault, error.localizedDescription) return CancelledState() } guard ChannelCreationPingSignatureReceived(ownedCryptoIdentity: ownedIdentity, signature: signature, within: obvContext) != nil else { - os_log("We could not insert a new ChannelCreationPingSignatureReceived entry", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] We could not insert a new ChannelCreationPingSignatureReceived entry", log: log, type: .fault) return CancelledState() } @@ -271,7 +277,7 @@ extension ChannelCreationWithContactDeviceProtocol { } } } catch { - os_log("Could not check whether a previous instance of this protocol exists, or could not delete it", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] Could not check whether a previous instance of this protocol exists, or could not delete it", log: log, type: .error) return CancelledState() } @@ -284,7 +290,7 @@ extension ChannelCreationWithContactDeviceProtocol { ofRemoteIdentity: contactIdentity, within: obvContext) } catch { - os_log("Could not delete previous oblivious channel", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] Could not delete previous oblivious channel", log: log, type: .fault) assertionFailure() return CancelledState() } @@ -292,7 +298,7 @@ extension ChannelCreationWithContactDeviceProtocol { // Get our own current device UID in order to compare it to the contact device UID guard let currentDeviceUid = try? identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) else { - os_log("Could not find current device uid", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] Could not find current device uid", log: log, type: .fault) return CancelledState() } @@ -302,7 +308,7 @@ extension ChannelCreationWithContactDeviceProtocol { do { let challengeType = ChallengeType.channelCreation(firstDeviceUid: contactDeviceUid, secondDeviceUid: currentDeviceUid, firstIdentity: contactIdentity, secondIdentity: ownedIdentity) guard let res = try? solveChallengeDelegate.solveChallenge(challengeType, for: ownedIdentity, using: prng, within: obvContext) else { - os_log("Could not solve challenge (1)", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] Could not solve challenge (1)", log: log, type: .fault) return CancelledState() } ownSignature = res @@ -313,7 +319,7 @@ extension ChannelCreationWithContactDeviceProtocol { if currentDeviceUid >= contactDeviceUid || (currentDeviceUid == contactDeviceUid && ownedIdentity.getIdentity() >= contactIdentity.getIdentity()) { - os_log("We are *not* in charge of establishing the channel", log: log, type: .debug) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] We are *not* in charge of establishing the channel", log: log, type: .debug) // Send the ping message containing the signature @@ -321,20 +327,20 @@ extension ChannelCreationWithContactDeviceProtocol { let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: contactIdentity, remoteDeviceUids: [contactDeviceUid], fromOwnedIdentity: ownedIdentity)) let concreteProtocolMessage = PingMessage(coreProtocolMessage: coreMessage, contactIdentity: ownedIdentity, contactDeviceUid: currentDeviceUid, signature: ownSignature) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { - os_log("Could not post message", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] Could not post message", log: log, type: .fault) return CancelledState() } // Return the new state - os_log("ChannelCreationWithContactDeviceProtocol: ending SendPingOrEphemeralKeyStep", log: log, type: .debug) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] ChannelCreationWithContactDeviceProtocol: ending SendPingOrEphemeralKeyStep", log: log, type: .debug) return PingSentState() } else { - os_log("We are in charge of establishing the channel", log: log, type: .debug) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] We are in charge of establishing the channel", log: log, type: .debug) // We are in charge of establishing the channel. @@ -361,11 +367,13 @@ extension ChannelCreationWithContactDeviceProtocol { signature: ownSignature, contactEphemeralPublicKey: ephemeralPublicKey) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendPingOrEphemeralKeyStep] Returning the WaitingForK1State", log: log, type: .info) + return WaitingForK1State(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, ephemeralPrivateKey: ephemeralPrivateKey) } @@ -400,15 +408,17 @@ extension ChannelCreationWithContactDeviceProtocol { let contactEphemeralPublicKey = receivedMessage.contactEphemeralPublicKey let signature = receivedMessage.signature + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step]", log: log, type: .info, contactIdentity.debugDescription) + // Make sure the contact identity is trusted (i.e., is part of the ContactIdentity database of the owned identity) guard (try? identityDelegate.isIdentity(contactIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext)) == true else { - os_log("The contact identity is not yet trusted", log: log, type: .debug) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] The contact identity is not yet trusted", log: log, type: .debug) return CancelledState() } guard try identityDelegate.isContactIdentityActive(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, within: obvContext) else { - os_log("The contact identity is not active", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] The contact identity is not active", log: log, type: .error) return CancelledState() } @@ -418,11 +428,11 @@ extension ChannelCreationWithContactDeviceProtocol { let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) let challengeType = ChallengeType.channelCreation(firstDeviceUid: currentDeviceUid, secondDeviceUid: contactDeviceUid, firstIdentity: ownedIdentity, secondIdentity: contactIdentity) guard ObvSolveChallengeStruct.checkResponse(signature, to: challengeType, from: contactIdentity) else { - os_log("The signature is invalid", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] The signature is invalid", log: log, type: .error) return CancelledState() } } catch { - os_log("Could not check the signature", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] Could not check the signature", log: log, type: .fault) return CancelledState() } @@ -434,12 +444,12 @@ extension ChannelCreationWithContactDeviceProtocol { guard !(try ChannelCreationPingSignatureReceived.exists(ownedCryptoIdentity: ownedIdentity, signature: signature, within: obvContext)) else { - os_log("The signature received was already received in a previous protocol message. This should not happen but with a negligible probability. We cancel.", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] The signature received was already received in a previous protocol message. This should not happen but with a negligible probability. We cancel.", log: log, type: .fault) assertionFailure() return CancelledState() } } catch { - os_log("We could not perform check whether the signature was already received: %{public}@", log: log, type: .fault, error.localizedDescription) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] We could not perform check whether the signature was already received: %{public}@", log: log, type: .fault, error.localizedDescription) assertionFailure() return CancelledState() } @@ -448,19 +458,22 @@ extension ChannelCreationWithContactDeviceProtocol { do { if try ChannelCreationWithContactDeviceProtocolInstance.exists(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, andOwnedIdentity: ownedIdentity, within: obvContext) { - os_log("A previous ChannelCreationWithContactDeviceProtocolInstance exists. We abort it", log: log, type: .info) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] A previous ChannelCreationWithContactDeviceProtocolInstance exists. We abort it", log: log, type: .info) + if let protocolInstanceUid = try ChannelCreationWithContactDeviceProtocolInstance.delete(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, andOwnedIdentity: ownedIdentity, within: obvContext) { let abortProtocolBlock = delegateManager.receivedMessageDelegate.createBlockForAbortingProtocol(withProtocolInstanceUid: protocolInstanceUid, forOwnedIdentity: ownedIdentity, within: obvContext) abortProtocolBlock() } + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] Restarting channel creation", log: log, type: .info, contactIdentity.debugDescription) + let initialMessageToSend = try delegateManager.protocolStarterDelegate.getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ownedIdentity, andTheDeviceUid: contactDeviceUid, ofTheContactIdentity: contactIdentity) - _ = try channelDelegate.post(initialMessageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(initialMessageToSend, randomizedWith: prng, within: obvContext) return CancelledState() } } catch { - os_log("Could not check whether a previous instance of this protocol exists, could not delete it, or could not initiate new ChannelCreationWithContactDeviceProtocol", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] Could not check whether a previous instance of this protocol exists, could not delete it, or could not initiate new ChannelCreationWithContactDeviceProtocol", log: log, type: .error) return CancelledState() } @@ -494,11 +507,13 @@ extension ChannelCreationWithContactDeviceProtocol { contactEphemeralPublicKey: ephemeralPublicKey, c1: c1) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,SendEphemeralKeyAndK1Step] Returning the WaitingForK2State", log: log, type: .info) + return WaitingForK2State(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, ephemeralPrivateKey: ephemeralPrivateKey, k1: k1) } } @@ -533,6 +548,8 @@ extension ChannelCreationWithContactDeviceProtocol { let contactEphemeralPublicKey = receivedMessage.contactEphemeralPublicKey let c1 = receivedMessage.c1 + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK1AndSendK2AndCreateChannelStep]", log: log, type: .info, contactIdentity.debugDescription) + // Recover k1 guard let k1 = PublicKeyEncryption.kemDecrypt(c1, using: ephemeralPrivateKey) else { @@ -547,16 +564,16 @@ extension ChannelCreationWithContactDeviceProtocol { // Check the contact is not revoked guard try identityDelegate.isContactIdentityActive(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, within: obvContext) else { - os_log("The contact identity is not active", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK1AndSendK2AndCreateChannelStep] The contact identity is not active", log: log, type: .error) return CancelledState() } // Add the deviceUid for this contact (if it was not already there), and also trigger a device discovery do { - try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: true, within: obvContext) } catch { - os_log("Could not add the device uid to the list of device uids of the contact identity", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK1AndSendK2AndCreateChannelStep] Could not add the device uid to the list of device uids of the contact identity", log: log, type: .fault) assertionFailure() // Continue anyway } @@ -573,8 +590,11 @@ extension ChannelCreationWithContactDeviceProtocol { ofRemoteIdentity: contactIdentity, within: obvContext) _ = try ChannelCreationWithContactDeviceProtocolInstance.delete(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, andOwnedIdentity: ownedIdentity, within: obvContext) + + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK1AndSendK2AndCreateChannelStep] Restarting channel creation", log: log, type: .info, contactIdentity.debugDescription) + let initialMessageToSend = try delegateManager.protocolStarterDelegate.getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ownedIdentity, andTheDeviceUid: contactDeviceUid, ofTheContactIdentity: contactIdentity) - _ = try channelDelegate.post(initialMessageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(initialMessageToSend, randomizedWith: prng, within: obvContext) return CancelledState() } @@ -582,7 +602,7 @@ extension ChannelCreationWithContactDeviceProtocol { do { guard let seed = Seed(withKeys: [k1, k2]) else { - os_log("Could not initialize seed for Oblivious Channel", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK1AndSendK2AndCreateChannelStep] Could not initialize seed for Oblivious Channel", log: log, type: .error) return CancelledState() } let cryptoSuiteVersion = 0 @@ -600,18 +620,20 @@ extension ChannelCreationWithContactDeviceProtocol { let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: contactIdentity, remoteDeviceUids: [contactDeviceUid], fromOwnedIdentity: ownedIdentity)) let concreteProtocolMessage = K2Message(coreProtocolMessage: coreMessage, c2: c2) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Get our own current device UID guard let currentDeviceUid = try? identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) else { - os_log("Could not find current device uid", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK1AndSendK2AndCreateChannelStep] Could not find current device uid", log: log, type: .fault) return CancelledState() } // Return the new state + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK1AndSendK2AndCreateChannelStep] Returning the WaitForFirstAckState", log: log, type: .info) + return WaitForFirstAckState(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, currentDeviceUid: currentDeviceUid) } @@ -647,33 +669,35 @@ extension ChannelCreationWithContactDeviceProtocol { let c2 = receivedMessage.c2 + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK2CreateChannelAndSendAckStep]", log: log, type: .info, contactIdentity.debugDescription) + // Recover k2 guard let k2 = PublicKeyEncryption.kemDecrypt(c2, using: ephemeralPrivateKey) else { - os_log("Could not recover k2", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK2CreateChannelAndSendAckStep] Could not recover k2", log: log, type: .error) return CancelledState() } // Check the contact is not revoked guard try identityDelegate.isContactIdentityActive(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, within: obvContext) else { - os_log("The contact identity is not active", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK2CreateChannelAndSendAckStep] The contact identity is not active", log: log, type: .error) return CancelledState() } // Add the contact device uid to the contact identity (if needed) do { - try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: true, within: obvContext) } catch { - os_log("Could not add device uid to contact identity", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK2CreateChannelAndSendAckStep] Could not add device uid to contact identity", log: log, type: .fault) return CancelledState() } // Create the seed that will allow to create the Oblivious Channel guard let seed = Seed(withKeys: [k1, k2]) else { - os_log("Could not initialize seed for Oblivious Channel", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK2CreateChannelAndSendAckStep] Could not initialize seed for Oblivious Channel", log: log, type: .error) return CancelledState() } @@ -684,13 +708,18 @@ extension ChannelCreationWithContactDeviceProtocol { // - We finish this protocol instance guard try !channelDelegate.anObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andRemoteIdentity: contactIdentity, withRemoteDeviceUid: contactDeviceUid, within: obvContext) else { + try channelDelegate.deleteObliviousChannelBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andTheRemoteDeviceWithUid: contactDeviceUid, ofRemoteIdentity: contactIdentity, within: obvContext) + _ = try ChannelCreationWithContactDeviceProtocolInstance.delete(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, andOwnedIdentity: ownedIdentity, within: obvContext) + + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK2CreateChannelAndSendAckStep] Restarting channel creation", log: log, type: .info, contactIdentity.debugDescription) + let initialMessageToSend = try delegateManager.protocolStarterDelegate.getInitialMessageForChannelCreationWithContactDeviceProtocol(betweenTheCurrentDeviceOfOwnedIdentity: ownedIdentity, andTheDeviceUid: contactDeviceUid, ofTheContactIdentity: contactIdentity) - _ = try channelDelegate.post(initialMessageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(initialMessageToSend, randomizedWith: prng, within: obvContext) return CancelledState() } @@ -714,21 +743,23 @@ extension ChannelCreationWithContactDeviceProtocol { let (ownedIdentityDetailsElements, _) = try identityDelegate.getPublishedIdentityDetailsOfOwnedIdentity(ownedIdentity, within: obvContext) let concreteProtocolMessage = FirstAckMessage(coreProtocolMessage: coreMessage, contactIdentityDetailsElements: ownedIdentityDetailsElements) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { - os_log("Could not post ack message", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK2CreateChannelAndSendAckStep] Could not post ack message", log: log, type: .fault) return CancelledState() } // Get our own current device UID guard let currentDeviceUid = try? identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) else { - os_log("Could not find current device uid", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK2CreateChannelAndSendAckStep] Could not find current device uid", log: log, type: .fault) return CancelledState() } // Return the new state + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,RecoverK2CreateChannelAndSendAckStep] Returning the WaitForSecondAckState", log: log, type: .info) + return WaitForSecondAckState(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, currentDeviceUid: currentDeviceUid) } @@ -762,6 +793,8 @@ extension ChannelCreationWithContactDeviceProtocol { let contactDeviceUid = startState.contactDeviceUid let contactIdentityDetailsElements = receivedMessage.contactIdentityDetailsElements + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelAndSendAckStep]", log: log, type: .info, contactIdentity.debugDescription) + // Confirm the Oblivious Channel do { @@ -770,7 +803,7 @@ extension ChannelCreationWithContactDeviceProtocol { withRemoteDeviceUid: contactDeviceUid, within: obvContext) } catch { - os_log("Could not confirm Oblivious channel", log: log, type: .error) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelAndSendAckStep] Could not confirm Oblivious channel", log: log, type: .error) return CancelledState() } @@ -779,7 +812,7 @@ extension ChannelCreationWithContactDeviceProtocol { do { try identityDelegate.updatePublishedIdentityDetailsOfContactIdentity(contactIdentity, ofOwnedIdentity: ownedIdentity, with: contactIdentityDetailsElements, allowVersionDowngrade: true, within: obvContext) } catch { - os_log("Could not update the published identity details (1)", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelAndSendAckStep] Could not update the published identity details (1)", log: log, type: .fault) return CancelledState() } @@ -789,7 +822,7 @@ extension ChannelCreationWithContactDeviceProtocol { appropriateDetails.contactIdentityDetailsElements.photoServerKeyAndLabel != nil { let childProtocolInstanceUid = UID.gen(with: prng) let coreMessage = getCoreMessageForOtherLocalProtocol( - otherCryptoProtocolId: .DownloadIdentityPhoto, + otherCryptoProtocolId: .downloadIdentityPhoto, otherProtocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = DownloadIdentityPhotoChildProtocol.InitialMessage( coreProtocolMessage: coreMessage, @@ -799,11 +832,11 @@ extension ChannelCreationWithContactDeviceProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } catch { - os_log("Could get published/trusted identity details to check if a photo needs to be downloaded", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelAndSendAckStep] Could get published/trusted identity details to check if a photo needs to be downloaded", log: log, type: .fault) } // Delete the ChannelCreationProtocolInstance @@ -811,7 +844,7 @@ extension ChannelCreationWithContactDeviceProtocol { do { _ = try ChannelCreationWithContactDeviceProtocolInstance.delete(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, andOwnedIdentity: ownedIdentity, within: obvContext) } catch { - os_log("Could not delete the ChannelCreationWithContactDeviceProtocolInstance", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelAndSendAckStep] Could not delete the ChannelCreationWithContactDeviceProtocolInstance", log: log, type: .fault) return CancelledState() } @@ -826,9 +859,9 @@ extension ChannelCreationWithContactDeviceProtocol { let (ownedIdentityDetailsElements, _) = try identityDelegate.getPublishedIdentityDetailsOfOwnedIdentity(ownedIdentity, within: obvContext) let concreteProtocolMessage = SecondAckMessage(coreProtocolMessage: coreMessage, contactIdentityDetailsElements: ownedIdentityDetailsElements) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { - os_log("Could not post ack message", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelAndSendAckStep] Could not post ack message", log: log, type: .fault) return CancelledState() } @@ -839,7 +872,7 @@ extension ChannelCreationWithContactDeviceProtocol { let channel = ObvChannelSendChannelType.Local(ownedIdentity: ownedIdentity) let newProtocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: channel, - cryptoProtocolId: .ContactCapabilitiesDiscovery, + cryptoProtocolId: .contactCapabilitiesDiscovery, protocolInstanceUid: newProtocolInstanceUid) let message = DeviceCapabilitiesDiscoveryProtocol.InitialSingleContactDeviceMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity, @@ -850,9 +883,9 @@ extension ChannelCreationWithContactDeviceProtocol { throw Self.makeError(message: "Implementation error") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { - os_log("Failed to inform our contact of the current device capabilities", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelAndSendAckStep] Failed to inform our contact of the current device capabilities", log: log, type: .fault) assertionFailure() // Continue anyway } @@ -867,7 +900,7 @@ extension ChannelCreationWithContactDeviceProtocol { let channel = ObvChannelSendChannelType.Local(ownedIdentity: ownedIdentity) let newProtocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: channel, - cryptoProtocolId: .OneToOneContactInvitation, + cryptoProtocolId: .oneToOneContactInvitation, protocolInstanceUid: newProtocolInstanceUid) let message = OneToOneContactInvitationProtocol.InitialOneToOneStatusSyncRequestMessage(coreProtocolMessage: coreMessage, contactsToSync: Set([contactIdentity])) guard let messageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -875,9 +908,9 @@ extension ChannelCreationWithContactDeviceProtocol { throw Self.makeError(message: "Implementation error") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { - os_log("Failed to request our own OneToOne status to our contact", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelAndSendAckStep] Failed to request our own OneToOne status to our contact", log: log, type: .fault) assertionFailure() // Continue anyway } @@ -886,6 +919,8 @@ extension ChannelCreationWithContactDeviceProtocol { // Return the new state + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelAndSendAckStep] Returning the ChannelConfirmedState", log: log, type: .info) + return ChannelConfirmedState() } @@ -919,6 +954,8 @@ extension ChannelCreationWithContactDeviceProtocol { let contactDeviceUid = startState.contactDeviceUid let contactIdentityDetailsElements = receivedMessage.contactIdentityDetailsElements + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelStep]", log: log, type: .info, contactIdentity.debugDescription) + // Confirm the Oblivious Channel do { @@ -927,7 +964,7 @@ extension ChannelCreationWithContactDeviceProtocol { withRemoteDeviceUid: contactDeviceUid, within: obvContext) } catch { - os_log("Could not confirm Oblivious channel", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelStep] Could not confirm Oblivious channel", log: log, type: .fault) return CancelledState() } @@ -936,7 +973,7 @@ extension ChannelCreationWithContactDeviceProtocol { do { try identityDelegate.updatePublishedIdentityDetailsOfContactIdentity(contactIdentity, ofOwnedIdentity: ownedIdentity, with: contactIdentityDetailsElements, allowVersionDowngrade: true, within: obvContext) } catch { - os_log("Could not update the published identity details (2)", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelStep] Could not update the published identity details (2)", log: log, type: .fault) return CancelledState() } @@ -946,7 +983,7 @@ extension ChannelCreationWithContactDeviceProtocol { appropriateDetails.contactIdentityDetailsElements.photoServerKeyAndLabel != nil { let childProtocolInstanceUid = UID.gen(with: prng) let coreMessage = getCoreMessageForOtherLocalProtocol( - otherCryptoProtocolId: .DownloadIdentityPhoto, + otherCryptoProtocolId: .downloadIdentityPhoto, otherProtocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = DownloadIdentityPhotoChildProtocol.InitialMessage( coreProtocolMessage: coreMessage, @@ -956,11 +993,11 @@ extension ChannelCreationWithContactDeviceProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } catch { - os_log("Could get published/trusted identity details to check if a photo needs to be downloaded", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelStep] Could get published/trusted identity details to check if a photo needs to be downloaded", log: log, type: .fault) } // Delete the ChannelCreationProtocolInstance @@ -968,7 +1005,7 @@ extension ChannelCreationWithContactDeviceProtocol { do { _ = try ChannelCreationWithContactDeviceProtocolInstance.delete(contactIdentity: contactIdentity, contactDeviceUid: contactDeviceUid, andOwnedIdentity: ownedIdentity, within: obvContext) } catch { - os_log("Could not delete the ChannelCreationWithContactDeviceProtocolInstance", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelStep] Could not delete the ChannelCreationWithContactDeviceProtocolInstance", log: log, type: .fault) return CancelledState() } @@ -979,7 +1016,7 @@ extension ChannelCreationWithContactDeviceProtocol { let channel = ObvChannelSendChannelType.Local(ownedIdentity: ownedIdentity) let newProtocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: channel, - cryptoProtocolId: .ContactCapabilitiesDiscovery, + cryptoProtocolId: .contactCapabilitiesDiscovery, protocolInstanceUid: newProtocolInstanceUid) let message = DeviceCapabilitiesDiscoveryProtocol.InitialSingleContactDeviceMessage(coreProtocolMessage: coreMessage, contactIdentity: contactIdentity, @@ -990,9 +1027,9 @@ extension ChannelCreationWithContactDeviceProtocol { throw DeviceCapabilitiesDiscoveryProtocol.makeError(message: "Implementation error") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { - os_log("Failed to inform our contact of the current device capabilities", log: log, type: .fault) + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelStep] Failed to inform our contact of the current device capabilities", log: log, type: .fault) assertionFailure() // Continue anyway } @@ -1001,6 +1038,8 @@ extension ChannelCreationWithContactDeviceProtocol { // Return the new state + os_log("🛟 [%{public}@] [ChannelCreationWithContactDeviceProtocol,ConfirmChannelStep] Returning the ChannelConfirmedState", log: log, type: .info) + return ChannelConfirmedState() } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocol.swift new file mode 100644 index 00000000..7a4434eb --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocol.swift @@ -0,0 +1,66 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import ObvTypes +import ObvCrypto +import OlvidUtils + +public struct ChannelCreationWithOwnedDeviceProtocol: ConcreteCryptoProtocol, ObvErrorMaker { + + static let logCategory = "ChannelCreationWithOwnedDeviceProtocol" + public static let errorDomain = "ChannelCreationWithOwnedDeviceProtocol" + + static let id = CryptoProtocolId.channelCreationWithOwnedDevice + + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.cancelled, + StateId.channelConfirmed, + StateId.pingSent] + + let ownedIdentity: ObvCryptoIdentity + let currentState: ConcreteProtocolState + + let delegateManager: ObvProtocolDelegateManager + let obvContext: ObvContext + let prng: PRNGService + let instanceUid: UID + + init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { + self.currentState = currentState + self.ownedIdentity = ownedCryptoIdentity + self.delegateManager = delegateManager + self.obvContext = obvContext + self.prng = prng + self.instanceUid = instanceUid + } + + static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { + return StateId(rawValue: rawValue) + } + + static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { + return MessageId(rawValue: rawValue) + } + + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } +} + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocolMessages.swift new file mode 100644 index 00000000..d8fa673d --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocolMessages.swift @@ -0,0 +1,294 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation +import ObvMetaManager + + +// MARK: - Protocol Messages + +extension ChannelCreationWithOwnedDeviceProtocol { + + enum MessageId: Int, ConcreteProtocolMessageId { + case initial = 0 + case ping = 1 + case aliceIdentityAndEphemeralKey = 2 + case bobEphemeralKeyAndK1 = 3 + case k2 = 4 + case firstAck = 5 + case secondAck = 6 + + var concreteProtocolMessageType: ConcreteProtocolMessage.Type { + switch self { + case .initial : return InitialMessage.self + case .ping : return PingMessage.self + case .aliceIdentityAndEphemeralKey : return AliceIdentityAndEphemeralKeyMessage.self + case .bobEphemeralKeyAndK1 : return BobEphemeralKeyAndK1Message.self + case .k2 : return K2Message.self + case .firstAck : return FirstAckMessage.self + case .secondAck : return SecondAckMessage.self + } + } + } + + + // MARK: - InitialMessage + + struct InitialMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.initial + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let remoteDeviceUid: UID + + var encodedInputs: [ObvEncoded] { + return [remoteDeviceUid.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + self.remoteDeviceUid = try message.encodedInputs.obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, remoteDeviceUid: UID) { + self.coreProtocolMessage = coreProtocolMessage + self.remoteDeviceUid = remoteDeviceUid + } + } + + + // MARK: - PingMessage + + struct PingMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.ping + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let remoteDeviceUid: UID + let signature: Data + + var encodedInputs: [ObvEncoded] { + return [remoteDeviceUid.obvEncode(), signature.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + (remoteDeviceUid, signature) = try encodedElements.obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, remoteDeviceUid: UID, signature: Data) { + self.coreProtocolMessage = coreProtocolMessage + self.remoteDeviceUid = remoteDeviceUid + self.signature = signature + } + } + + + // MARK: - AliceIdentityAndEphemeralKeyMessage + + struct AliceIdentityAndEphemeralKeyMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.aliceIdentityAndEphemeralKey + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let remoteDeviceUid: UID + let signature: Data + let remoteEphemeralPublicKey: PublicKeyForPublicKeyEncryption + + var encodedInputs: [ObvEncoded] { + return [remoteDeviceUid.obvEncode(), signature.obvEncode(), remoteEphemeralPublicKey.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + guard encodedElements.count == 3 else { + throw ChannelCreationWithOwnedDeviceProtocol.makeError(message: "Expecting 3 encoded elements in AliceIdentityAndEphemeralKeyMessage, got \(encodedElements.count)") + } + remoteDeviceUid = try encodedElements[0].obvDecode() + signature = try encodedElements[1].obvDecode() + guard let pk = PublicKeyForPublicKeyEncryptionDecoder.obvDecode(encodedElements[2]) else { + throw Self.makeError(message: "Could not decode public key in AliceIdentityAndEphemeralKeyMessage") + } + remoteEphemeralPublicKey = pk + } + + init(coreProtocolMessage: CoreProtocolMessage, remoteDeviceUid: UID, signature: Data, remoteEphemeralPublicKey: PublicKeyForPublicKeyEncryption) { + self.coreProtocolMessage = coreProtocolMessage + self.remoteDeviceUid = remoteDeviceUid + self.signature = signature + self.remoteEphemeralPublicKey = remoteEphemeralPublicKey + } + } + + + // MARK: - BobEphemeralKeyAndK1Message + + struct BobEphemeralKeyAndK1Message: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.bobEphemeralKeyAndK1 + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let remoteEphemeralPublicKey: PublicKeyForPublicKeyEncryption + let c1: EncryptedData + + var encodedInputs: [ObvEncoded] { + return [remoteEphemeralPublicKey.obvEncode(), c1.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + guard encodedElements.count == 2 else { + throw ChannelCreationWithOwnedDeviceProtocol.makeError(message: "Expecting 2 encoded elements in BobEphemeralKeyAndK1Message, got \(encodedElements.count)") + } + guard let pk = PublicKeyForPublicKeyEncryptionDecoder.obvDecode(encodedElements[0]) else { + throw Self.makeError(message: "Could not decode public key in BobEphemeralKeyAndK1Message") + } + remoteEphemeralPublicKey = pk + c1 = try encodedElements[1].obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, remoteEphemeralPublicKey: PublicKeyForPublicKeyEncryption, c1: EncryptedData) { + self.coreProtocolMessage = coreProtocolMessage + self.remoteEphemeralPublicKey = remoteEphemeralPublicKey + self.c1 = c1 + } + } + + + // MARK: - K2Message + + struct K2Message: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.k2 + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let c2: EncryptedData + + var encodedInputs: [ObvEncoded] { + return [c2.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + c2 = try message.encodedInputs.obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, c2: EncryptedData) { + self.coreProtocolMessage = coreProtocolMessage + self.c2 = c2 + } + } + + + // MARK: - FirstAckMessage + + struct FirstAckMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.firstAck + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let remoteIdentityDetailsElements: IdentityDetailsElements + + var encodedInputs: [ObvEncoded] { + get throws { + let encodedContactIdentityDetailsElements = try remoteIdentityDetailsElements.jsonEncode() + return [encodedContactIdentityDetailsElements.obvEncode()] + } + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedRemoteIdentityDetailsElements: Data = try message.encodedInputs.obvDecode() + self.remoteIdentityDetailsElements = try IdentityDetailsElements(encodedRemoteIdentityDetailsElements) + } + + init(coreProtocolMessage: CoreProtocolMessage, remoteIdentityDetailsElements: IdentityDetailsElements) { + self.coreProtocolMessage = coreProtocolMessage + self.remoteIdentityDetailsElements = remoteIdentityDetailsElements + } + } + + + // MARK: - SecondAckMessage + + struct SecondAckMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.secondAck + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let remoteIdentityDetailsElements: IdentityDetailsElements + + var encodedInputs: [ObvEncoded] { + get throws { + let encodedContactIdentityDetailsElements = try remoteIdentityDetailsElements.jsonEncode() + return [encodedContactIdentityDetailsElements.obvEncode()] + } + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedRemoteIdentityDetailsElements: Data = try message.encodedInputs.obvDecode() + self.remoteIdentityDetailsElements = try IdentityDetailsElements(encodedRemoteIdentityDetailsElements) + } + + init(coreProtocolMessage: CoreProtocolMessage, remoteIdentityDetailsElements: IdentityDetailsElements) { + self.coreProtocolMessage = coreProtocolMessage + self.remoteIdentityDetailsElements = remoteIdentityDetailsElements + } + } + +} + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocolStates.swift new file mode 100644 index 00000000..e23e4ba3 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocolStates.swift @@ -0,0 +1,233 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation + + +// MARK: - Protocol States + +extension ChannelCreationWithOwnedDeviceProtocol { + + enum StateId: Int, ConcreteProtocolStateId { + + case initialState = 0 + // Current device's side + case waitingForK1 = 1 + case waitForFirstAck = 2 + // Remote device's side + case waitingForK2 = 3 + case waitForSecondAck = 5 + // On Alice's and Bob's sides + case pingSent = 6 + case channelConfirmed = 7 + case cancelled = 8 + + var concreteProtocolStateType: ConcreteProtocolState.Type { + switch self { + case .initialState : return ConcreteProtocolInitialState.self + case .waitingForK1 : return WaitingForK1State.self + case .waitForFirstAck : return WaitForFirstAckState.self + case .waitingForK2 : return WaitingForK2State.self + case .waitForSecondAck : return WaitForSecondAckState.self + case .pingSent : return PingSentState.self + case .channelConfirmed : return ChannelConfirmedState.self + case .cancelled : return CancelledState.self + } + } + } + + + // MARK: - WaitingForK1State + + struct WaitingForK1State: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.waitingForK1 + + let remoteDeviceUid: UID + let ephemeralPrivateKey: PrivateKeyForPublicKeyEncryption + + init(_ encoded: ObvEncoded) throws { + guard let encodedElements = [ObvEncoded](encoded, expectedCount: 2) else { + throw ChannelCreationWithOwnedDeviceProtocol.makeError(message: "Unexpected number of encoded elements in WaitingForK1State") + } + self.remoteDeviceUid = try encodedElements[0].obvDecode() + guard let ephemeralPrivateKey = PrivateKeyForPublicKeyEncryptionDecoder.obvDecode(encodedElements[1]) else { + throw ChannelCreationWithOwnedDeviceProtocol.makeError(message: "Could not decode private key in WaitingForK1State") + } + self.ephemeralPrivateKey = ephemeralPrivateKey + } + + init(remoteDeviceUid: UID, ephemeralPrivateKey: PrivateKeyForPublicKeyEncryption) { + self.remoteDeviceUid = remoteDeviceUid + self.ephemeralPrivateKey = ephemeralPrivateKey + } + + func obvEncode() -> ObvEncoded { + return [remoteDeviceUid, ephemeralPrivateKey].obvEncode() + } + } + + + // MARK: - WaitingForFirstAckState + + struct WaitForFirstAckState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.waitForFirstAck + + let remoteDeviceUid: UID + + init(_ encoded: ObvEncoded) throws { + do { + guard let encodedElements = [ObvEncoded](encoded, expectedCount: 1) else { + assertionFailure() + throw ChannelCreationWithOwnedDeviceProtocol.makeError(message: "Unexpected number of encoded elements in WaitingForK1State") + } + self.remoteDeviceUid = try encodedElements[0].obvDecode() + } catch { + assertionFailure() + throw error + } + } + + init(remoteDeviceUid: UID) { + self.remoteDeviceUid = remoteDeviceUid + } + + func obvEncode() -> ObvEncoded { + return [remoteDeviceUid].obvEncode() + } + } + + + // MARK: - WaitingForK2State + + struct WaitingForK2State: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.waitingForK2 + + let remoteDeviceUid: UID + let ephemeralPrivateKey: PrivateKeyForPublicKeyEncryption + let k1: AuthenticatedEncryptionKey + + init(_ encoded: ObvEncoded) throws { + guard let encodedElements = [ObvEncoded](encoded, expectedCount: 3) else { + throw ChannelCreationWithOwnedDeviceProtocol.makeError(message: "Unexpected number of encoded elements in WaitingForK2State") + } + self.remoteDeviceUid = try encodedElements[0].obvDecode() + guard let ephemeralPrivateKey = PrivateKeyForPublicKeyEncryptionDecoder.obvDecode(encodedElements[1]) else { + throw ChannelCreationWithOwnedDeviceProtocol.makeError(message: "Could not decode private key in WaitingForK2State") + } + self.ephemeralPrivateKey = ephemeralPrivateKey + k1 = try AuthenticatedEncryptionKeyDecoder.decode(encodedElements[2]) + } + + init(remoteDeviceUid: UID, ephemeralPrivateKey: PrivateKeyForPublicKeyEncryption, k1: AuthenticatedEncryptionKey) { + self.remoteDeviceUid = remoteDeviceUid + self.ephemeralPrivateKey = ephemeralPrivateKey + self.k1 = k1 + } + + func obvEncode() -> ObvEncoded { + return [remoteDeviceUid, ephemeralPrivateKey, k1].obvEncode() + } + } + + + // MARK: - WaitForSecondAckState + + struct WaitForSecondAckState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.waitForSecondAck + + let remoteDeviceUid: UID + + init(_ encoded: ObvEncoded) throws { + do { + guard let encodedElements = [ObvEncoded](encoded, expectedCount: 1) else { + assertionFailure() + throw ChannelCreationWithOwnedDeviceProtocol.makeError(message: "Unexpected number of encoded elements in WaitingForK1State") + } + self.remoteDeviceUid = try encodedElements[0].obvDecode() + } catch { + assertionFailure() + throw error + } + } + + init(remoteDeviceUid: UID) { + self.remoteDeviceUid = remoteDeviceUid + } + + func obvEncode() -> ObvEncoded { + return [remoteDeviceUid].obvEncode() + } + + } + + + // MARK: - PingSentState + + struct PingSentState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.pingSent + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + + // MARK: - ChannelConfirmedState + + struct ChannelConfirmedState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.channelConfirmed + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + + + // MARK: - CancelledState + + struct CancelledState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.cancelled + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + } + +} + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocolSteps.swift new file mode 100644 index 00000000..8f69a055 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ChannelCreation/ChannelCreationWithOwnedDeviceProtocol/ChannelCreationWithOwnedDeviceProtocolSteps.swift @@ -0,0 +1,975 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation +import ObvMetaManager +import OlvidUtils + +// MARK: - Protocol Steps + +extension ChannelCreationWithOwnedDeviceProtocol { + + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { + + case sendPing = 0 + case sendPingOrEphemeralKey = 1 + case recoverK1AndSendK2AndCreateChannel = 2 + case confirmChannelAndSendAck = 3 + case sendEphemeralKeyAndK1 = 4 + case recoverK2CreateChannelAndSendAck = 5 + case confirmChannel = 6 + + func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { + switch self { + + case .sendPing: + let step = SendPingStep(from: concreteProtocol, and: receivedMessage) + return step + case .sendPingOrEphemeralKey: + let step = SendPingOrEphemeralKeyStep(from: concreteProtocol, and: receivedMessage) + return step + case .recoverK1AndSendK2AndCreateChannel: + let step = RecoverK1AndSendK2AndCreateChannelStep(from: concreteProtocol, and: receivedMessage) + return step + case .confirmChannelAndSendAck: + let step = ConfirmChannelAndSendAckStep(from: concreteProtocol, and: receivedMessage) + return step + case .sendEphemeralKeyAndK1: + let step = SendEphemeralKeyAndK1Step(from: concreteProtocol, and: receivedMessage) + return step + case .recoverK2CreateChannelAndSendAck: + let step = RecoverK2CreateChannelAndSendAckStep(from: concreteProtocol, and: receivedMessage) + return step + case .confirmChannel: + let step = ConfirmChannelStep(from: concreteProtocol, and: receivedMessage) + return step + } + } + + } + + + // MARK: - SendPingStep + + final class SendPingStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: InitialMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: ChannelCreationWithOwnedDeviceProtocol.InitialMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ChannelCreationWithOwnedDeviceProtocol.logCategory) + + let remoteDeviceUid = receivedMessage.remoteDeviceUid + + // Check that the remote device Uid is not the current device Uid + + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + + guard remoteDeviceUid != currentDeviceUid else { + os_log("Trying to run a ChannelCreationWithOwnedDeviceProtocol with our currentDeviceUid", log: log, type: .fault) + assertionFailure() + return CancelledState() + } + + // Clean any ongoing instance of this protocol + + os_log("Cleaning any ongoing instances of the ChannelCreationWithOwnedDeviceProtocol", log: log, type: .debug) + do { + if try ChannelCreationWithOwnedDeviceProtocolInstance.exists(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) { + os_log("There exists a ChannelCreationWithOwnedDeviceProtocolInstance to clean", log: log, type: .debug) + let protocolInstanceUids = try ChannelCreationWithOwnedDeviceProtocolInstance.deleteAll(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) + for protocolInstanceUid in protocolInstanceUids { + os_log("The ChannelCreationWithOwnedDeviceProtocolInstance to clean has uid %{public}@", log: log, type: .debug, protocolInstanceUid.debugDescription) + let abortProtocolBlock = delegateManager.receivedMessageDelegate.createBlockForAbortingProtocol(withProtocolInstanceUid: protocolInstanceUid, forOwnedIdentity: ownedIdentity, within: obvContext) + os_log("Executing the block allowing to abort the protocol with instance uid %{public}@", log: log, type: .debug, protocolInstanceUid.debugDescription) + abortProtocolBlock() + os_log("The block allowing to clest the protocol with instance uid %{public}@ was executed", log: log, type: .debug, protocolInstanceUid.debugDescription) + } + } + } catch { + os_log("Could not check whether a previous instance of this protocol exists, or could not delete it", log: log, type: .error) + return CancelledState() + } + + // Clear any already created ObliviousChannel + + do { + try channelDelegate.deleteObliviousChannelBetweenCurentDeviceWithUid(currentDeviceUid: currentDeviceUid, + andTheRemoteDeviceWithUid: remoteDeviceUid, + ofRemoteIdentity: ownedIdentity, + within: obvContext) + } catch { + os_log("Could not delete previous oblivious channel", log: log, type: .fault) + assertionFailure() + return CancelledState() + } + + // Send a signed ping proving you trust the contact and have no channel with him + + let signature: Data + do { + let challengeType = ChallengeType.channelCreation(firstDeviceUid: remoteDeviceUid, secondDeviceUid: currentDeviceUid, firstIdentity: ownedIdentity, secondIdentity: ownedIdentity) + guard let res = try? solveChallengeDelegate.solveChallenge(challengeType, for: ownedIdentity, using: prng, within: obvContext) else { + os_log("Could not solve challenge", log: log, type: .fault) + return CancelledState() + } + signature = res + } + + // Send the ping message containing the signature + + do { + let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: ownedIdentity, remoteDeviceUids: [remoteDeviceUid], fromOwnedIdentity: ownedIdentity)) + let concreteProtocolMessage = PingMessage(coreProtocolMessage: coreMessage, remoteDeviceUid: currentDeviceUid, signature: signature) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + return CancelledState() + } + + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not post message", log: log, type: .fault) + return CancelledState() + } + + // Return the new state + + return PingSentState() + + } + + } + + + // MARK: - SendPingOrEphemeralKeyStep + + final class SendPingOrEphemeralKeyStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PingMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: ChannelCreationWithOwnedDeviceProtocol.PingMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AsymmetricChannel, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ChannelCreationWithOwnedDeviceProtocol.logCategory) + + let remoteDeviceUid = receivedMessage.remoteDeviceUid + let signature = receivedMessage.signature + + // Check that the remote device Uid is not the current device Uid + + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + + guard remoteDeviceUid != currentDeviceUid else { + os_log("Trying to run a ChannelCreationWithOwnedDeviceProtocol with our currentDeviceUid", log: log, type: .fault) + assertionFailure() + return CancelledState() + } + + // Verify the signature + + let challengeType = ChallengeType.channelCreation(firstDeviceUid: currentDeviceUid, secondDeviceUid: remoteDeviceUid, firstIdentity: ownedIdentity, secondIdentity: ownedIdentity) + guard ObvSolveChallengeStruct.checkResponse(signature, to: challengeType, from: ownedIdentity) else { + os_log("The signature is invalid", log: log, type: .error) + return CancelledState() + } + + // If we reach this point, we have a valid signature => the remote device of our owned identity does not have an Oblivious channel with our current device + + // We make sure we are not facing a replay attack + + do { + guard !(try ChannelCreationPingSignatureReceived.exists(ownedCryptoIdentity: ownedIdentity, + signature: signature, + within: obvContext)) else { + os_log("The signature received was already received in a previous protocol message. This should not happen but with a negligible probability. We cancel.", log: log, type: .fault) + return CancelledState() + } + } catch { + os_log("We could not perform check whether the signature was already received: %{public}@", log: log, type: .fault, error.localizedDescription) + return CancelledState() + } + + guard ChannelCreationPingSignatureReceived(ownedCryptoIdentity: ownedIdentity, + signature: signature, + within: obvContext) != nil else { + os_log("We could not insert a new ChannelCreationPingSignatureReceived entry", log: log, type: .fault) + return CancelledState() + } + + // Clean any ongoing instance of this protocol + + do { + if try ChannelCreationWithOwnedDeviceProtocolInstance.exists(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) { + let protocolInstanceUids = try ChannelCreationWithOwnedDeviceProtocolInstance.deleteAll(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) + for protocolInstanceUid in protocolInstanceUids { + let abortProtocolBlock = delegateManager.receivedMessageDelegate.createBlockForAbortingProtocol(withProtocolInstanceUid: protocolInstanceUid, forOwnedIdentity: ownedIdentity, within: obvContext) + abortProtocolBlock() + } + } + } catch { + os_log("Could not check whether a previous instance of this protocol exists, or could not delete it", log: log, type: .error) + return CancelledState() + } + + + // Clear any already created ObliviousChannel + + do { + try channelDelegate.deleteObliviousChannelBetweenCurentDeviceWithUid(currentDeviceUid: currentDeviceUid, + andTheRemoteDeviceWithUid: remoteDeviceUid, + ofRemoteIdentity: ownedIdentity, + within: obvContext) + } catch { + os_log("Could not delete previous oblivious channel", log: log, type: .fault) + assertionFailure() + return CancelledState() + } + + // Compute a signature to prove we trust the contact and don't have any channel/ongoing protocol with him + + let ownSignature: Data + do { + let challengeType = ChallengeType.channelCreation(firstDeviceUid: remoteDeviceUid, secondDeviceUid: currentDeviceUid, firstIdentity: ownedIdentity, secondIdentity: ownedIdentity) + guard let res = try? solveChallengeDelegate.solveChallenge(challengeType, for: ownedIdentity, using: prng, within: obvContext) else { + os_log("Could not solve challenge (1)", log: log, type: .fault) + return CancelledState() + } + ownSignature = res + } + + // If we are "in charge" (small device uid), send an ephemeral key. + // Otherwise, simply send a ping back + + if currentDeviceUid >= remoteDeviceUid { + + os_log("We are *not* in charge of establishing the channel", log: log, type: .debug) + + // Send the ping message containing the signature + + do { + let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: ownedIdentity, remoteDeviceUids: [remoteDeviceUid], fromOwnedIdentity: ownedIdentity)) + let concreteProtocolMessage = PingMessage(coreProtocolMessage: coreMessage, remoteDeviceUid: currentDeviceUid, signature: ownSignature) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not post message", log: log, type: .fault) + return CancelledState() + } + + // Return the new state + + os_log("ChannelCreationWithOwnedDeviceProtocol: ending SendPingOrEphemeralKeyStep", log: log, type: .debug) + return PingSentState() + + } else { + + os_log("We are in charge of establishing the channel", log: log, type: .debug) + + // We are in charge of establishing the channel. + + // Create a new ChannelCreationWithOwnedDeviceProtocolInstance entry in database + + _ = ChannelCreationWithOwnedDeviceProtocolInstance(protocolInstanceUid: protocolInstanceUid, + ownedIdentity: ownedIdentity, + remoteDeviceUid: remoteDeviceUid, + delegateManager: delegateManager, + within: obvContext) + + // Generate an ephemeral pair of encryption keys + + let ephemeralPublicKey: PublicKeyForPublicKeyEncryption + let ephemeralPrivateKey: PrivateKeyForPublicKeyEncryption + do { + let PublicKeyEncryptionImplementation = ObvCryptoSuite.sharedInstance.getDefaultPublicKeyEncryptionImplementationByteId().algorithmImplementation + (ephemeralPublicKey, ephemeralPrivateKey) = PublicKeyEncryptionImplementation.generateKeyPair(with: prng) + } + + // Send the public key to Bob, together with our own identity and current device uid + + do { + let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: ownedIdentity, remoteDeviceUids: [remoteDeviceUid], fromOwnedIdentity: ownedIdentity)) + let concreteProtocolMessage = AliceIdentityAndEphemeralKeyMessage(coreProtocolMessage: coreMessage, + remoteDeviceUid: currentDeviceUid, + signature: ownSignature, + remoteEphemeralPublicKey: ephemeralPublicKey) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + // Return the new state + + return WaitingForK1State(remoteDeviceUid: remoteDeviceUid, ephemeralPrivateKey: ephemeralPrivateKey) + + } + } + } + + + // MARK: - SendEphemeralKeyAndK1Step + + final class SendEphemeralKeyAndK1Step: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: AliceIdentityAndEphemeralKeyMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: ChannelCreationWithOwnedDeviceProtocol.AliceIdentityAndEphemeralKeyMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AsymmetricChannel, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ChannelCreationWithOwnedDeviceProtocol.logCategory) + + let remoteDeviceUid = receivedMessage.remoteDeviceUid + let remoteEphemeralPublicKey = receivedMessage.remoteEphemeralPublicKey + let signature = receivedMessage.signature + + // Check that the remote device Uid is not the current device Uid + + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + + guard remoteDeviceUid != currentDeviceUid else { + os_log("Trying to run a ChannelCreationWithOwnedDeviceProtocol with our currentDeviceUid", log: log, type: .fault) + assertionFailure() + return CancelledState() + } + + // Verify the signature + + do { + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + let challengeType = ChallengeType.channelCreation(firstDeviceUid: currentDeviceUid, secondDeviceUid: remoteDeviceUid, firstIdentity: ownedIdentity, secondIdentity: ownedIdentity) + guard ObvSolveChallengeStruct.checkResponse(signature, to: challengeType, from: ownedIdentity) else { + os_log("The signature is invalid", log: log, type: .error) + return CancelledState() + } + } catch { + os_log("Could not check the signature", log: log, type: .fault) + return CancelledState() + } + + // If we reach this point, we have a valid signature => we have no Oblivious channel with our owned remote device + + // We make sure we are not facing a replay attack + + do { + guard !(try ChannelCreationPingSignatureReceived.exists(ownedCryptoIdentity: ownedIdentity, + signature: signature, + within: obvContext)) else { + os_log("The signature received was already received in a previous protocol message. This should not happen but with a negligible probability. We cancel.", log: log, type: .fault) + assertionFailure() + return CancelledState() + } + } catch { + os_log("We could not perform check whether the signature was already received: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + return CancelledState() + } + + // Check whether there already is an instance of this protocol running. If this is the case, abort it, terminate this protocol, and restart it with a fresh ping. + + do { + if try ChannelCreationWithOwnedDeviceProtocolInstance.exists(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) { + os_log("A previous ChannelCreationWithOwnedDeviceProtocolInstance exists. We abort it", log: log, type: .info) + let protocolInstanceUids = try ChannelCreationWithOwnedDeviceProtocolInstance.deleteAll(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) + for protocolInstanceUid in protocolInstanceUids { + let abortProtocolBlock = delegateManager.receivedMessageDelegate.createBlockForAbortingProtocol(withProtocolInstanceUid: protocolInstanceUid, forOwnedIdentity: ownedIdentity, within: obvContext) + abortProtocolBlock() + } + + let initialMessageToSend = try protocolStarterDelegate.getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid) + _ = try channelDelegate.postChannelMessage(initialMessageToSend, randomizedWith: prng, within: obvContext) + + return CancelledState() + } + } catch { + os_log("Could not check whether a previous instance of this protocol exists, could not delete it, or could not initiate new ChannelCreationWithOwnedDeviceProtocol", log: log, type: .error) + return CancelledState() + } + + // If we reach this point, there was no previous instance of this protocol. We create it now + + _ = ChannelCreationWithOwnedDeviceProtocolInstance(protocolInstanceUid: protocolInstanceUid, + ownedIdentity: ownedIdentity, + remoteDeviceUid: remoteDeviceUid, + delegateManager: delegateManager, + within: obvContext) + + // Generate an ephemeral pair of encryption keys + + let ephemeralPublicKey: PublicKeyForPublicKeyEncryption + let ephemeralPrivateKey: PrivateKeyForPublicKeyEncryption + do { + let PublicKeyEncryptionImplementation = ObvCryptoSuite.sharedInstance.getDefaultPublicKeyEncryptionImplementationByteId().algorithmImplementation + (ephemeralPublicKey, ephemeralPrivateKey) = PublicKeyEncryptionImplementation.generateKeyPair(with: prng) + } + + // Generate k1 + + let (c1, k1) = PublicKeyEncryption.kemEncrypt(using: remoteEphemeralPublicKey, with: prng) + + // Send the ephemeral public key and k1 to Alice + + do { + let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: ownedIdentity, remoteDeviceUids: [remoteDeviceUid], fromOwnedIdentity: ownedIdentity)) + let concreteProtocolMessage = BobEphemeralKeyAndK1Message(coreProtocolMessage: coreMessage, + remoteEphemeralPublicKey: ephemeralPublicKey, + c1: c1) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + // Return the new state + + return WaitingForK2State(remoteDeviceUid: remoteDeviceUid, ephemeralPrivateKey: ephemeralPrivateKey, k1: k1) + + } + } + + + // MARK: - RecoverK1AndSendK2AndCreateChannelStep + + final class RecoverK1AndSendK2AndCreateChannelStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: WaitingForK1State + let receivedMessage: BobEphemeralKeyAndK1Message + + init?(startState: WaitingForK1State, receivedMessage: ChannelCreationWithOwnedDeviceProtocol.BobEphemeralKeyAndK1Message, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AsymmetricChannel, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ChannelCreationWithOwnedDeviceProtocol.logCategory) + + let remoteDeviceUid = startState.remoteDeviceUid + let ephemeralPrivateKey = startState.ephemeralPrivateKey + + let remoteEphemeralPublicKey = receivedMessage.remoteEphemeralPublicKey + let c1 = receivedMessage.c1 + + // Check that the remote device Uid is not the current device Uid + + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + + guard remoteDeviceUid != currentDeviceUid else { + os_log("Trying to run a ChannelCreationWithOwnedDeviceProtocol with our currentDeviceUid", log: log, type: .fault) + assertionFailure() + return CancelledState() + } + + // Recover k1 + + guard let k1 = PublicKeyEncryption.kemDecrypt(c1, using: ephemeralPrivateKey) else { + os_log("Could not recover k1", log: log, type: .error) + return CancelledState() + } + + // Generate k2 + + let (c2, k2) = PublicKeyEncryption.kemEncrypt(using: remoteEphemeralPublicKey, with: prng) + + // Add the remoteDeviceUid for this owned identity (if it was not already there) + + do { + try identityDelegate.addOtherDeviceForOwnedIdentity(ownedIdentity, withUid: remoteDeviceUid, createdDuringChannelCreation: true, within: obvContext) + } catch { + os_log("Could not add the device uid to the list of device uids of the contact identity", log: log, type: .fault) + assertionFailure() + // Continue anyway + } + + // At this point, if a channel exist (rare case), we cannot create a new one. If this occurs: + // - We destroy it (as we are in a situation where we know we should create a new one) + // - Since we want to restart this protocol, we clean the ChannelCreationWithOwnedDeviceProtocolInstance entry + // - We send a ping to restart the whole process of creating a channel + // - We finish this protocol instance + + guard try !channelDelegate.anObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andRemoteIdentity: ownedIdentity, withRemoteDeviceUid: remoteDeviceUid, within: obvContext) else { + try channelDelegate.deleteObliviousChannelBetweenCurentDeviceWithUid(currentDeviceUid: currentDeviceUid, + andTheRemoteDeviceWithUid: remoteDeviceUid, + ofRemoteIdentity: ownedIdentity, + within: obvContext) + _ = try ChannelCreationWithOwnedDeviceProtocolInstance.deleteAll(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) + let initialMessageToSend = try delegateManager.protocolStarterDelegate.getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid) + _ = try channelDelegate.postChannelMessage(initialMessageToSend, randomizedWith: prng, within: obvContext) + return CancelledState() + } + + // Create the Oblivious Channel using the seed derived from k1 and k2 + + do { + guard let seed = Seed(withKeys: [k1, k2]) else { + os_log("Could not initialize seed for Oblivious Channel", log: log, type: .error) + return CancelledState() + } + let cryptoSuiteVersion = 0 + try channelDelegate.createObliviousChannelBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, + andRemoteIdentity: ownedIdentity, + withRemoteDeviceUid: remoteDeviceUid, + with: seed, + cryptoSuiteVersion: cryptoSuiteVersion, + within: obvContext) + } + + // Send the k2 to Bob + + do { + let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: ownedIdentity, remoteDeviceUids: [remoteDeviceUid], fromOwnedIdentity: ownedIdentity)) + let concreteProtocolMessage = K2Message(coreProtocolMessage: coreMessage, c2: c2) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + // Return the new state + + return WaitForFirstAckState(remoteDeviceUid: remoteDeviceUid) + + } + } + + + // MARK: - RecoverK2CreateChannelAndSendAckStep + + final class RecoverK2CreateChannelAndSendAckStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: WaitingForK2State + let receivedMessage: K2Message + + init?(startState: WaitingForK2State, receivedMessage: ChannelCreationWithOwnedDeviceProtocol.K2Message, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AsymmetricChannel, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ChannelCreationWithOwnedDeviceProtocol.logCategory) + + let remoteDeviceUid = startState.remoteDeviceUid + let ephemeralPrivateKey = startState.ephemeralPrivateKey + let k1 = startState.k1 + + let c2 = receivedMessage.c2 + + // Check that the remote device Uid is not the current device Uid + + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + + guard remoteDeviceUid != currentDeviceUid else { + os_log("Trying to run a ChannelCreationWithOwnedDeviceProtocol with our currentDeviceUid", log: log, type: .fault) + assertionFailure() + return CancelledState() + } + + // Recover k2 + + guard let k2 = PublicKeyEncryption.kemDecrypt(c2, using: ephemeralPrivateKey) else { + os_log("Could not recover k2", log: log, type: .error) + return CancelledState() + } + + // Add the remoteDeviceUid for this owned identity (if it was not already there) + + do { + try identityDelegate.addOtherDeviceForOwnedIdentity(ownedIdentity, withUid: remoteDeviceUid, createdDuringChannelCreation: true, within: obvContext) + } catch { + os_log("Could not add the device uid to the list of device uids of the contact identity", log: log, type: .fault) + assertionFailure() + // Continue anyway + } + + // Create the seed that will allow to create the Oblivious Channel + + guard let seed = Seed(withKeys: [k1, k2]) else { + os_log("Could not initialize seed for Oblivious Channel", log: log, type: .error) + return CancelledState() + } + + // At this point, if a channel exist (rare case), we cannot create a new one. If this occurs: + // - We destroy it (as we are in a situation where we know we should create a new one) + // - Since we want to restart this protocol, we clean the ChannelCreationWithOwnedDeviceProtocolInstance entry + // - We send a ping to restart the whole process of creating a channel + // - We finish this protocol instance + + guard try !channelDelegate.anObliviousChannelExistsBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, andRemoteIdentity: ownedIdentity, withRemoteDeviceUid: remoteDeviceUid, within: obvContext) else { + try channelDelegate.deleteObliviousChannelBetweenCurentDeviceWithUid(currentDeviceUid: currentDeviceUid, + andTheRemoteDeviceWithUid: remoteDeviceUid, + ofRemoteIdentity: ownedIdentity, + within: obvContext) + _ = try ChannelCreationWithOwnedDeviceProtocolInstance.deleteAll(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) + let initialMessageToSend = try delegateManager.protocolStarterDelegate.getInitialMessageForChannelCreationWithOwnedDeviceProtocol(ownedIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid) + _ = try channelDelegate.postChannelMessage(initialMessageToSend, randomizedWith: prng, within: obvContext) + return CancelledState() + } + + // If reach this point, there is no existing channel between our current device and the contact device. + // We create the Oblivious Channel using the seed. + + do { + let cryptoSuiteVersion = 0 + try channelDelegate.createObliviousChannelBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, + andRemoteIdentity: ownedIdentity, + withRemoteDeviceUid: remoteDeviceUid, + with: seed, + cryptoSuiteVersion: cryptoSuiteVersion, + within: obvContext) + } + + // Send the message trigerring the next step, where we check that the contact identity is trusted and create the oblivious channel if this is the case + + do { + let coreMessage = getCoreMessage(for: .ObliviousChannel(to: ownedIdentity, remoteDeviceUids: [remoteDeviceUid], fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: false)) + let (ownedIdentityDetailsElements, _) = try identityDelegate.getPublishedIdentityDetailsOfOwnedIdentity(ownedIdentity, within: obvContext) + let concreteProtocolMessage = FirstAckMessage(coreProtocolMessage: coreMessage, remoteIdentityDetailsElements: ownedIdentityDetailsElements) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not post ack message", log: log, type: .fault) + return CancelledState() + } + + // Return the new state + + return WaitForSecondAckState(remoteDeviceUid: remoteDeviceUid) + + } + } + + + // MARK: - ConfirmChannelAndSendAckStep + + final class ConfirmChannelAndSendAckStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: WaitForFirstAckState + let receivedMessage: FirstAckMessage + + init?(startState: WaitForFirstAckState, receivedMessage: ChannelCreationWithOwnedDeviceProtocol.FirstAckMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .ObliviousChannel(remoteCryptoIdentity: concreteCryptoProtocol.ownedIdentity, + remoteDeviceUid: startState.remoteDeviceUid), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ChannelCreationWithOwnedDeviceProtocol.logCategory) + + let remoteDeviceUid = startState.remoteDeviceUid + let remoteIdentityDetailsElements = receivedMessage.remoteIdentityDetailsElements + + // Confirm the Oblivious Channel + + do { + try channelDelegate.confirmObliviousChannelBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, + andRemoteIdentity: ownedIdentity, + withRemoteDeviceUid: remoteDeviceUid, + within: obvContext) + } catch { + os_log("Could not confirm Oblivious channel", log: log, type: .error) + return CancelledState() + } + + // Update the published details with the remote details if they are newer. In that case, we might need to re-download the photo + + let photoDownloadNeeded: Bool + do { + photoDownloadNeeded = try identityDelegate.updateOwnedPublishedDetailsWithOtherDetailsIfNewer(ownedIdentity, with: remoteIdentityDetailsElements, within: obvContext) + } catch { + os_log("Failed to update owned published details with other details: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + photoDownloadNeeded = false + // In production, continue + } + + do { + if photoDownloadNeeded { + let childProtocolInstanceUid = UID.gen(with: prng) + let coreMessage = getCoreMessageForOtherLocalProtocol( + otherCryptoProtocolId: .downloadIdentityPhoto, + otherProtocolInstanceUid: childProtocolInstanceUid) + let childProtocolInitialMessage = DownloadIdentityPhotoChildProtocol.InitialMessage( + coreProtocolMessage: coreMessage, + contactIdentity: ownedIdentity, + contactIdentityDetailsElements: remoteIdentityDetailsElements) + guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } catch { + os_log("Failed to request the download of the new owned profile picture: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + // In production, continue + } + + // Delete the ChannelCreationProtocolInstance + + do { + _ = try ChannelCreationWithOwnedDeviceProtocolInstance.deleteAll(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) + } catch { + os_log("Could not delete the ChannelCreationWithOwnedDeviceProtocolInstance", log: log, type: .fault) + return CancelledState() + } + + // Send ack to Bob + + do { + let channelType = ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, + remoteDeviceUids: [remoteDeviceUid], + fromOwnedIdentity: ownedIdentity, + necessarilyConfirmed: true) + let coreMessage = getCoreMessage(for: channelType) + let (ownedIdentityDetailsElements, _) = try identityDelegate.getPublishedIdentityDetailsOfOwnedIdentity(ownedIdentity, within: obvContext) + let concreteProtocolMessage = SecondAckMessage(coreProtocolMessage: coreMessage, remoteIdentityDetailsElements: ownedIdentityDetailsElements) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } catch { + os_log("Could not post ack message", log: log, type: .fault) + return CancelledState() + } + + // Make sure this device capabilities are sent to Bob's device + + do { + let channel = ObvChannelSendChannelType.Local(ownedIdentity: ownedIdentity) + let newProtocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: channel, + cryptoProtocolId: .contactCapabilitiesDiscovery, + protocolInstanceUid: newProtocolInstanceUid) + let message = DeviceCapabilitiesDiscoveryProtocol.InitialSingleOwnedDeviceMessage( + coreProtocolMessage: coreMessage, + otherOwnedDeviceUid: remoteDeviceUid, + isResponse: false) + guard let messageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + throw Self.makeError(message: "Implementation error") + } + do { + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } catch { + os_log("Failed to inform our contact of the current device capabilities", log: log, type: .fault) + assertionFailure() + // Continue anyway + } + } + + // Initiate a device synchronization protocol (that will be in an ongoing state for the lifetime of the new other device) + +// do { +// let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) +// let protocolInstanceUid = try SynchronizationProtocol.computeOngoingProtocolInstanceUid(ownedCryptoId: ownedIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: remoteDeviceUid) +// let coreMessage = CoreProtocolMessage( +// channelType: .Local(ownedIdentity: ownedIdentity), +// cryptoProtocolId: .synchronization, +// protocolInstanceUid: protocolInstanceUid) +// let concreteProtocolMessage = SynchronizationProtocol.InitiateSyncSnapshotMessage(coreProtocolMessage: coreMessage, otherOwnedDeviceUID: remoteDeviceUid) +// guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); return nil } +// _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) +// } + + // Return the new state + + return ChannelConfirmedState() + + } + } + + + // MARK: - ConfirmChannelStep + + final class ConfirmChannelStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: WaitForSecondAckState + let receivedMessage: SecondAckMessage + + init?(startState: WaitForSecondAckState, receivedMessage: ChannelCreationWithOwnedDeviceProtocol.SecondAckMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .ObliviousChannel(remoteCryptoIdentity: concreteCryptoProtocol.ownedIdentity, + remoteDeviceUid: startState.remoteDeviceUid), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ChannelCreationWithOwnedDeviceProtocol.logCategory) + + let remoteDeviceUid = startState.remoteDeviceUid + let remoteIdentityDetailsElements = receivedMessage.remoteIdentityDetailsElements + + // Confirm the Oblivious Channel + + do { + try channelDelegate.confirmObliviousChannelBetweenTheCurrentDeviceOf(ownedIdentity: ownedIdentity, + andRemoteIdentity: ownedIdentity, + withRemoteDeviceUid: remoteDeviceUid, + within: obvContext) + } catch { + os_log("Could not confirm Oblivious channel", log: log, type: .fault) + return CancelledState() + } + + // Update the published details with the remote details if they are newer. In that case, we might need to re-download the photo + + let photoDownloadNeeded: Bool + do { + photoDownloadNeeded = try identityDelegate.updateOwnedPublishedDetailsWithOtherDetailsIfNewer(ownedIdentity, with: remoteIdentityDetailsElements, within: obvContext) + } catch { + os_log("Failed to update owned published details with other details: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + photoDownloadNeeded = false + // In production, continue + } + + do { + if photoDownloadNeeded { + let childProtocolInstanceUid = UID.gen(with: prng) + let coreMessage = getCoreMessageForOtherLocalProtocol( + otherCryptoProtocolId: .downloadIdentityPhoto, + otherProtocolInstanceUid: childProtocolInstanceUid) + let childProtocolInitialMessage = DownloadIdentityPhotoChildProtocol.InitialMessage( + coreProtocolMessage: coreMessage, + contactIdentity: ownedIdentity, + contactIdentityDetailsElements: remoteIdentityDetailsElements) + guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } catch { + os_log("Failed to request the download of the new owned profile picture: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + // In production, continue + } + + // Delete the ChannelCreationProtocolInstance + + do { + _ = try ChannelCreationWithOwnedDeviceProtocolInstance.deleteAll(ownedCryptoIdentity: ownedIdentity, remoteDeviceUid: remoteDeviceUid, within: obvContext) + } catch { + os_log("Could not delete the ChannelCreationWithOwnedDeviceProtocolInstance", log: log, type: .fault) + return CancelledState() + } + + // Make sure this device capabilities are sent to Alice's device + + do { + let channel = ObvChannelSendChannelType.Local(ownedIdentity: ownedIdentity) + let newProtocolInstanceUid = UID.gen(with: prng) + let coreMessage = CoreProtocolMessage(channelType: channel, + cryptoProtocolId: .contactCapabilitiesDiscovery, + protocolInstanceUid: newProtocolInstanceUid) + let message = DeviceCapabilitiesDiscoveryProtocol.InitialSingleOwnedDeviceMessage( + coreProtocolMessage: coreMessage, + otherOwnedDeviceUid: remoteDeviceUid, + isResponse: false) + guard let messageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + throw Self.makeError(message: "Implementation error") + } + do { + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } catch { + os_log("Failed to inform our contact of the current device capabilities", log: log, type: .fault) + assertionFailure() + // Continue anyway + } + } + + // Initiate a device synchronization protocol (that will be in an ongoing state for the lifetime of the new other device) + +// do { +// let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) +// let protocolInstanceUid = try SynchronizationProtocol.computeOngoingProtocolInstanceUid(ownedCryptoId: ownedIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: remoteDeviceUid) +// let coreMessage = CoreProtocolMessage( +// channelType: .Local(ownedIdentity: ownedIdentity), +// cryptoProtocolId: .synchronization, +// protocolInstanceUid: protocolInstanceUid) +// let concreteProtocolMessage = SynchronizationProtocol.InitiateSyncSnapshotMessage(coreProtocolMessage: coreMessage, otherOwnedDeviceUID: remoteDeviceUid) +// guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); return nil } +// _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) +// } + + // Return the new state + + return ChannelConfirmedState() + + } + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocol.swift index 9aaf0230..8281367e 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,9 +27,9 @@ public struct ContactManagementProtocol: ConcreteCryptoProtocol { static let logCategory = "ContactManagementProtocol" - static let id = CryptoProtocolId.ContactManagement + static let id = CryptoProtocolId.contactManagement - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Final, StateId.Cancelled] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.final, StateId.cancelled] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolMessages.swift index 18240ff7..03ae9990 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,21 +30,23 @@ extension ContactManagementProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case InitiateContactDeletion = 0 - case ContactDeletionNotification = 1 - case PropagateContactDeletion = 2 - case InitiateContactDowngrade = 3 - case DowngradeNotification = 4 - case PropagateDowngrade = 5 + case initiateContactDeletion = 0 + case contactDeletionNotification = 1 + case propagateContactDeletion = 2 + case initiateContactDowngrade = 3 + case downgradeNotification = 4 + case propagateDowngrade = 5 + case performContactDeviceDiscovery = 6 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .InitiateContactDeletion : return InitiateContactDeletionMessage.self - case .ContactDeletionNotification : return ContactDeletionNotificationMessage.self - case .PropagateContactDeletion : return PropagateContactDeletionMessage.self - case .InitiateContactDowngrade : return InitiateContactDowngradeMessage.self - case .DowngradeNotification : return DowngradeNotificationMessage.self - case .PropagateDowngrade : return PropagateDowngradeMessage.self + case .initiateContactDeletion : return InitiateContactDeletionMessage.self + case .contactDeletionNotification : return ContactDeletionNotificationMessage.self + case .propagateContactDeletion : return PropagateContactDeletionMessage.self + case .initiateContactDowngrade : return InitiateContactDowngradeMessage.self + case .downgradeNotification : return DowngradeNotificationMessage.self + case .propagateDowngrade : return PropagateDowngradeMessage.self + case .performContactDeviceDiscovery: return PerformContactDeviceDiscoveryMessage.self } } } @@ -54,7 +56,7 @@ extension ContactManagementProtocol { struct InitiateContactDeletionMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InitiateContactDeletion + let id: ConcreteProtocolMessageId = MessageId.initiateContactDeletion let coreProtocolMessage: CoreProtocolMessage let contactIdentity: ObvCryptoIdentity @@ -78,7 +80,7 @@ extension ContactManagementProtocol { struct ContactDeletionNotificationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.ContactDeletionNotification + let id: ConcreteProtocolMessageId = MessageId.contactDeletionNotification let coreProtocolMessage: CoreProtocolMessage var encodedInputs: [ObvEncoded] { return [] } @@ -98,7 +100,7 @@ extension ContactManagementProtocol { struct PropagateContactDeletionMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateContactDeletion + let id: ConcreteProtocolMessageId = MessageId.propagateContactDeletion let coreProtocolMessage: CoreProtocolMessage let contactIdentity: ObvCryptoIdentity @@ -122,7 +124,7 @@ extension ContactManagementProtocol { struct InitiateContactDowngradeMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InitiateContactDowngrade + let id: ConcreteProtocolMessageId = MessageId.initiateContactDowngrade let coreProtocolMessage: CoreProtocolMessage let contactIdentity: ObvCryptoIdentity @@ -146,7 +148,7 @@ extension ContactManagementProtocol { struct DowngradeNotificationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DowngradeNotification + let id: ConcreteProtocolMessageId = MessageId.downgradeNotification let coreProtocolMessage: CoreProtocolMessage var encodedInputs: [ObvEncoded] { return [] } @@ -166,7 +168,7 @@ extension ContactManagementProtocol { struct PropagateDowngradeMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateDowngrade + let id: ConcreteProtocolMessageId = MessageId.propagateDowngrade let coreProtocolMessage: CoreProtocolMessage let contactIdentity: ObvCryptoIdentity @@ -185,4 +187,24 @@ extension ContactManagementProtocol { } + + // MARK: - PerformContactDeviceDiscoveryMessage + + struct PerformContactDeviceDiscoveryMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.performContactDeviceDiscovery + let coreProtocolMessage: CoreProtocolMessage + + var encodedInputs: [ObvEncoded] { return [] } + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + } + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolStates.swift index 83ac2767..1f2925e3 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,15 +29,15 @@ extension ContactManagementProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 - case Final = 1 - case Cancelled = 99 + case initialState = 0 + case final = 1 + case cancelled = 99 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .Final : return FinalState.self - case .Cancelled : return CancelledState.self + case .initialState : return ConcreteProtocolInitialState.self + case .final : return FinalState.self + case .cancelled : return CancelledState.self } } @@ -47,7 +47,7 @@ extension ContactManagementProtocol { struct FinalState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Final + let id: ConcreteProtocolStateId = StateId.final func obvEncode() -> ObvEncoded { return 0.obvEncode() } @@ -62,7 +62,7 @@ extension ContactManagementProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) throws {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolSteps.swift index 00d09301..30a91c5d 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactManagementProtocol/ContactManagementProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -31,36 +31,41 @@ extension ContactManagementProtocol { enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case DeleteContact = 0 - case ProcessContactDeletionNotification = 1 - case ProcessPropagatedContactDeletion = 2 + case deleteContact = 0 + case processContactDeletionNotification = 1 + case processPropagatedContactDeletion = 2 - case DowngradeContact = 3 - case ProcessDowngrade = 4 - case ProcessPropagatedDowngrade = 5 + case downgradeContact = 3 + case processDowngrade = 4 + case processPropagatedDowngrade = 5 + + case processPerformContactDeviceDiscoveryMessage = 6 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .DeleteContact: + case .deleteContact: let step = DeleteContactStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessContactDeletionNotification: + case .processContactDeletionNotification: let step = ProcessContactDeletionNotificationStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessPropagatedContactDeletion: + case .processPropagatedContactDeletion: let step = ProcessPropagatedContactDeletionStep(from: concreteProtocol, and: receivedMessage) return step - case .DowngradeContact: + case .downgradeContact: let step = DowngradeContactStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessDowngrade: + case .processDowngrade: let step = ProcessDowngradeStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessPropagatedDowngrade: + case .processPropagatedDowngrade: let step = ProcessPropagatedDowngradeStep(from: concreteProtocol, and: receivedMessage) return step + case .processPerformContactDeviceDiscoveryMessage: + let step = ProcessPerformContactDeviceDiscoveryMessageStep(from: concreteProtocol, and: receivedMessage) + return step } } } @@ -103,7 +108,7 @@ extension ContactManagementProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return CancelledState() } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Notify contact (we need the oblivious channel --> before deleting the contact). Do so only if we still have a confirmed oblivious channel with this contact. @@ -125,7 +130,7 @@ extension ContactManagementProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return CancelledState() } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Delete all channels @@ -165,7 +170,7 @@ extension ContactManagementProtocol { } let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: groupInformationWithPhoto.associatedProtocolUid) let concreteProtocolMessage = GroupManagementProtocol.RemoveGroupMembersMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation, @@ -173,7 +178,7 @@ extension ContactManagementProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return CancelledState() } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } @@ -294,7 +299,7 @@ extension ContactManagementProtocol { } let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: groupInformationWithPhoto.associatedProtocolUid) let concreteProtocolMessage = GroupManagementProtocol.RemoveGroupMembersMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation, @@ -302,7 +307,7 @@ extension ContactManagementProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return CancelledState() } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } @@ -406,7 +411,7 @@ extension ContactManagementProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ProtocolMessageToSend for OneToOneInvitationMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Propagate the downgrade decision to our other owned devices @@ -420,7 +425,7 @@ extension ContactManagementProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not propagate OneToOne invitation to other devices.", log: log, type: .fault) assertionFailure() @@ -530,5 +535,49 @@ extension ContactManagementProtocol { } } + + + // MARK: - ProcessPerformContactDeviceDiscoveryMessageStep + + final class ProcessPerformContactDeviceDiscoveryMessageStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PerformContactDeviceDiscoveryMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: PerformContactDeviceDiscoveryMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannel(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: IdentityDetailsPublicationProtocol.logCategory) + + // Determine the origin of the message + + guard let contactIdentity = receivedMessage.receptionChannelInfo?.getRemoteIdentity() else { + os_log("Could not determine the remote identity (ProcessNewMembersStep)", log: log, type: .error) + assertionFailure() + return CancelledState() + } + + // The contact who sent us this message certainly has updated her owned devices. We perform a contact device discovery to find out about the latest list of devices + + do { + let messageToSend = try protocolStarterDelegate.getInitialMessageForContactDeviceDiscoveryProtocol(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + } + + return FinalState() + + } + + } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocol.swift index 5690fd40..05aa4299 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -31,10 +31,10 @@ public struct ContactMutualIntroductionProtocol: ConcreteCryptoProtocol, ObvErro static let id = CryptoProtocolId.ContactMutualIntroduction - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Cancelled, - StateId.ContactsIntroduced, - StateId.InvitationRejected, - StateId.MutualTrustEstablished] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.cancelled, + StateId.contactsIntroduced, + StateId.invitationRejected, + StateId.mutualTrustEstablished] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState @@ -63,24 +63,18 @@ public struct ContactMutualIntroductionProtocol: ConcreteCryptoProtocol, ObvErro return MessageId(rawValue: rawValue) } - static let allStepIds: [ConcreteProtocolStepId] = [StepId.IntroduceContacts, - StepId.CheckTrustLevelsAndShowDialog, - StepId.PropagateInviteResponse, - StepId.ProcessPropagatedInviteResponse, - StepId.PropagateNotificationAddTrustAndSendAck, - StepId.ProcessPropagatedNotificationAndAddTrust, - StepId.NotifyMutualTrustEstablished, - StepId.RecheckTrustLevelsAfterTrustLevelIncrease] - + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } } extension ContactMutualIntroductionProtocol { - // A introduced identity is either "accepted" because it already is part of our contacts (case 0), because the trust we have in the mediator is high enough (case 1), or requires an intervention of the user (case 2). This value is essentially used to determine which dialogs to send to the user during the protocol. + // A introduced identity is either "accepted" because it already is part of our contacts (case 0), because the trust we have in the mediator is high enough (case 1, legacy case, not used anymore), or requires an intervention of the user (case 2). This value is essentially used to determine which dialogs to send to the user during the protocol. struct AcceptType { static let alreadyTrusted = 0 - static let automatic = 1 + //static let automatic = 1 static let manual = 2 } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolMessages.swift index 3767bf43..94a583d4 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,27 +29,29 @@ extension ContactMutualIntroductionProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case MediatorInvitation = 1 - case AcceptMediatorInviteDialog = 2 - case PropagateConfirmation = 3 - case NotifyContactOfAcceptedInvitation = 4 - case PropagateContactNotificationOfAcceptedInvitation = 5 - case Ack = 6 - case DialogInformative = 7 - case TrustLevelIncreased = 8 + case initial = 0 + case mediatorInvitation = 1 + case acceptMediatorInviteDialog = 2 + case propagateConfirmation = 3 + case notifyContactOfAcceptedInvitation = 4 + case propagateContactNotificationOfAcceptedInvitation = 5 + case ack = 6 + case dialogInformative = 7 + case trustLevelIncreased = 8 + case propagatedInitial = 9 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .Initial : return InitialMessage.self - case .MediatorInvitation : return MediatorInvitationMessage.self - case .AcceptMediatorInviteDialog : return AcceptMediatorInviteDialogMessage.self - case .PropagateConfirmation : return PropagateConfirmationMessage.self - case .NotifyContactOfAcceptedInvitation : return NotifyContactOfAcceptedInvitationMessage.self - case .PropagateContactNotificationOfAcceptedInvitation : return PropagateContactNotificationOfAcceptedInvitationMessage.self - case .Ack : return AckMessage.self - case .DialogInformative : return DialogInformativeMessage.self - case .TrustLevelIncreased : return TrustLevelIncreasedMessage.self + case .initial : return InitialMessage.self + case .mediatorInvitation : return MediatorInvitationMessage.self + case .acceptMediatorInviteDialog : return AcceptMediatorInviteDialogMessage.self + case .propagateConfirmation : return PropagateConfirmationMessage.self + case .notifyContactOfAcceptedInvitation : return NotifyContactOfAcceptedInvitationMessage.self + case .propagateContactNotificationOfAcceptedInvitation : return PropagateContactNotificationOfAcceptedInvitationMessage.self + case .ack : return AckMessage.self + case .dialogInformative : return DialogInformativeMessage.self + case .trustLevelIncreased : return TrustLevelIncreasedMessage.self + case .propagatedInitial : return PropagatedInitialMessage.self } } } @@ -59,37 +61,29 @@ extension ContactMutualIntroductionProtocol { struct InitialMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Initial + let id: ConcreteProtocolMessageId = MessageId.initial let coreProtocolMessage: CoreProtocolMessage let contactIdentityA: ObvCryptoIdentity - let contactIdentityCoreDetailsA: ObvIdentityCoreDetails let contactIdentityB: ObvCryptoIdentity - let contactIdentityCoreDetailsB: ObvIdentityCoreDetails var encodedInputs: [ObvEncoded] { - let encodedContactIdentityCoreDetailsA = try! contactIdentityCoreDetailsA.jsonEncode() - let encodedContactIdentityCoreDetailsB = try! contactIdentityCoreDetailsB.jsonEncode() - return [contactIdentityA.obvEncode(), encodedContactIdentityCoreDetailsA.obvEncode(), contactIdentityB.obvEncode(), encodedContactIdentityCoreDetailsB.obvEncode()] + get throws { + return [contactIdentityA.obvEncode(), contactIdentityB.obvEncode()] + } } // Initializers init(with message: ReceivedMessage) throws { self.coreProtocolMessage = CoreProtocolMessage(with: message) - let encodedContactIdentityCoreDetailsA: Data - let encodedContactIdentityCoreDetailsB: Data - (contactIdentityA, encodedContactIdentityCoreDetailsA, contactIdentityB, encodedContactIdentityCoreDetailsB) = try message.encodedInputs.obvDecode() - self.contactIdentityCoreDetailsA = try ObvIdentityCoreDetails(encodedContactIdentityCoreDetailsA) - self.contactIdentityCoreDetailsB = try ObvIdentityCoreDetails(encodedContactIdentityCoreDetailsB) + (contactIdentityA, contactIdentityB) = try message.encodedInputs.obvDecode() } - init(coreProtocolMessage: CoreProtocolMessage, contactIdentityA: ObvCryptoIdentity, contactIdentityCoreDetailsA: ObvIdentityCoreDetails, contactIdentityB: ObvCryptoIdentity, contactIdentityCoreDetailsB: ObvIdentityCoreDetails) { + init(coreProtocolMessage: CoreProtocolMessage, contactIdentityA: ObvCryptoIdentity, contactIdentityB: ObvCryptoIdentity) { self.coreProtocolMessage = coreProtocolMessage self.contactIdentityA = contactIdentityA - self.contactIdentityCoreDetailsA = contactIdentityCoreDetailsA self.contactIdentityB = contactIdentityB - self.contactIdentityCoreDetailsB = contactIdentityCoreDetailsB } } @@ -99,15 +93,17 @@ extension ContactMutualIntroductionProtocol { struct MediatorInvitationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.MediatorInvitation + let id: ConcreteProtocolMessageId = MessageId.mediatorInvitation let coreProtocolMessage: CoreProtocolMessage let contactIdentity: ObvCryptoIdentity let contactIdentityCoreDetails: ObvIdentityCoreDetails var encodedInputs: [ObvEncoded] { - let encodedContactIdentityDetails = try! contactIdentityCoreDetails.jsonEncode() - return [contactIdentity.obvEncode(), encodedContactIdentityDetails.obvEncode()] + get throws { + let encodedContactIdentityDetails = try contactIdentityCoreDetails.jsonEncode() + return [contactIdentity.obvEncode(), encodedContactIdentityDetails.obvEncode()] + } } // Initializers @@ -132,7 +128,7 @@ extension ContactMutualIntroductionProtocol { struct AcceptMediatorInviteDialogMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AcceptMediatorInviteDialog + let id: ConcreteProtocolMessageId = MessageId.acceptMediatorInviteDialog let coreProtocolMessage: CoreProtocolMessage let dialogUuid: UUID // Only used when this protocol receives this message @@ -167,7 +163,7 @@ extension ContactMutualIntroductionProtocol { struct PropagateConfirmationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateConfirmation + let id: ConcreteProtocolMessageId = MessageId.propagateConfirmation let coreProtocolMessage: CoreProtocolMessage let invitationAccepted: Bool @@ -176,8 +172,10 @@ extension ContactMutualIntroductionProtocol { let mediatorIdentity: ObvCryptoIdentity var encodedInputs: [ObvEncoded] { - let encodedContactIdentityDetails = try! contactIdentityCoreDetails.jsonEncode() - return [invitationAccepted.obvEncode(), contactIdentity.obvEncode(), encodedContactIdentityDetails.obvEncode(), mediatorIdentity.obvEncode()] + get throws { + let encodedContactIdentityDetails = try contactIdentityCoreDetails.jsonEncode() + return [invitationAccepted.obvEncode(), contactIdentity.obvEncode(), encodedContactIdentityDetails.obvEncode(), mediatorIdentity.obvEncode()] + } } // Initializers @@ -204,7 +202,7 @@ extension ContactMutualIntroductionProtocol { struct NotifyContactOfAcceptedInvitationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.NotifyContactOfAcceptedInvitation + let id: ConcreteProtocolMessageId = MessageId.notifyContactOfAcceptedInvitation let coreProtocolMessage: CoreProtocolMessage let contactDeviceUids: [UID] @@ -254,7 +252,7 @@ extension ContactMutualIntroductionProtocol { struct PropagateContactNotificationOfAcceptedInvitationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateContactNotificationOfAcceptedInvitation + let id: ConcreteProtocolMessageId = MessageId.propagateContactNotificationOfAcceptedInvitation let coreProtocolMessage: CoreProtocolMessage let contactDeviceUids: [UID] @@ -298,7 +296,7 @@ extension ContactMutualIntroductionProtocol { struct AckMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Ack + let id: ConcreteProtocolMessageId = MessageId.ack let coreProtocolMessage: CoreProtocolMessage var encodedInputs: [ObvEncoded] { return [] } @@ -321,7 +319,7 @@ extension ContactMutualIntroductionProtocol { struct DialogInformativeMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DialogInformative + let id: ConcreteProtocolMessageId = MessageId.dialogInformative let coreProtocolMessage: CoreProtocolMessage var encodedInputs: [ObvEncoded] { return [] } @@ -343,7 +341,7 @@ extension ContactMutualIntroductionProtocol { struct TrustLevelIncreasedMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.TrustLevelIncreased + let id: ConcreteProtocolMessageId = MessageId.trustLevelIncreased let coreProtocolMessage: CoreProtocolMessage let contactIdentity: ObvCryptoIdentity @@ -370,4 +368,37 @@ extension ContactMutualIntroductionProtocol { } } + + + // MARK: - PropagatedInitialMessage + + struct PropagatedInitialMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.propagatedInitial + let coreProtocolMessage: CoreProtocolMessage + + let contactIdentityA: ObvCryptoIdentity + let contactIdentityB: ObvCryptoIdentity + + var encodedInputs: [ObvEncoded] { + get throws { + return [contactIdentityA.obvEncode(), contactIdentityB.obvEncode()] + } + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + (contactIdentityA, contactIdentityB) = try message.encodedInputs.obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, contactIdentityA: ObvCryptoIdentity, contactIdentityB: ObvCryptoIdentity) { + self.coreProtocolMessage = coreProtocolMessage + self.contactIdentityA = contactIdentityA + self.contactIdentityB = contactIdentityB + } + + } + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolStates.swift index 3718f993..ba8d35f6 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,29 +29,29 @@ extension ContactMutualIntroductionProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 + case initialState = 0 // Mediator's side - case ContactsIntroduced = 1 + case contactsIntroduced = 1 // Contacts' sides - case InvitationReceived = 2 - case InvitationRejected = 4 - case InvitationAccepted = 3 - case WaitingForAck = 5 - case MutualTrustEstablished = 6 - case Cancelled = 7 + case invitationReceived = 2 + case invitationRejected = 4 + case invitationAccepted = 3 + case waitingForAck = 5 + case mutualTrustEstablished = 6 + case cancelled = 7 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .ContactsIntroduced : return ContactsIntroducedState.self - case .InvitationReceived : return InvitationReceivedState.self - case .InvitationRejected : return InvitationRejectedState.self - case .InvitationAccepted : return InvitationAcceptedState.self - case .WaitingForAck : return WaitingForAckState.self - case .MutualTrustEstablished : return MutualTrustEstablishedState.self - case .Cancelled : return CancelledState.self + case .initialState : return ConcreteProtocolInitialState.self + case .contactsIntroduced : return ContactsIntroducedState.self + case .invitationReceived : return InvitationReceivedState.self + case .invitationRejected : return InvitationRejectedState.self + case .invitationAccepted : return InvitationAcceptedState.self + case .waitingForAck : return WaitingForAckState.self + case .mutualTrustEstablished : return MutualTrustEstablishedState.self + case .cancelled : return CancelledState.self } } } @@ -61,7 +61,7 @@ extension ContactMutualIntroductionProtocol { struct ContactsIntroducedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.ContactsIntroduced + let id: ConcreteProtocolStateId = StateId.contactsIntroduced init(_: ObvEncoded) {} @@ -76,7 +76,7 @@ extension ContactMutualIntroductionProtocol { struct InvitationReceivedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.InvitationReceived + let id: ConcreteProtocolStateId = StateId.invitationReceived let contactIdentity: ObvCryptoIdentity let contactIdentityCoreDetails: ObvIdentityCoreDetails @@ -108,7 +108,7 @@ extension ContactMutualIntroductionProtocol { struct InvitationRejectedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.InvitationRejected + let id: ConcreteProtocolStateId = StateId.invitationRejected init(_: ObvEncoded) throws {} @@ -123,7 +123,7 @@ extension ContactMutualIntroductionProtocol { struct InvitationAcceptedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.InvitationAccepted + let id: ConcreteProtocolStateId = StateId.invitationAccepted let contactIdentity: ObvCryptoIdentity let contactIdentityCoreDetails: ObvIdentityCoreDetails @@ -158,7 +158,7 @@ extension ContactMutualIntroductionProtocol { struct WaitingForAckState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForAck + let id: ConcreteProtocolStateId = StateId.waitingForAck let contactIdentity: ObvCryptoIdentity let contactIdentityCoreDetails: ObvIdentityCoreDetails @@ -193,7 +193,7 @@ extension ContactMutualIntroductionProtocol { struct MutualTrustEstablishedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.MutualTrustEstablished + let id: ConcreteProtocolStateId = StateId.mutualTrustEstablished init(_: ObvEncoded) throws {} @@ -208,7 +208,7 @@ extension ContactMutualIntroductionProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) throws {} @@ -218,6 +218,4 @@ extension ContactMutualIntroductionProtocol { } - - } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolSteps.swift index 47da765e..2c03e10c 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/ContactMutualIntroductionProtocol/ContactMutualIntroductionProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -28,49 +28,53 @@ import OlvidUtils extension ContactMutualIntroductionProtocol { - enum StepId: Int, ConcreteProtocolStepId { + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { // Mediator's side - case IntroduceContacts = 0 + case introduceContacts = 0 // Contact's sides - case CheckTrustLevelsAndShowDialog = 1 - case PropagateInviteResponse = 2 - case ProcessPropagatedInviteResponse = 3 - case PropagateNotificationAddTrustAndSendAck = 4 - case ProcessPropagatedNotificationAndAddTrust = 5 - case NotifyMutualTrustEstablished = 6 - case RecheckTrustLevelsAfterTrustLevelIncrease = 7 + case checkTrustLevelsAndShowDialog = 1 + case propagateInviteResponse = 2 + case processPropagatedInviteResponse = 3 + case propagateNotificationAddTrustAndSendAck = 4 + case processPropagatedNotificationAndAddTrust = 5 + case notifyMutualTrustEstablished = 6 + case recheckTrustLevelsAfterTrustLevelIncrease = 7 + case processPropagatedInitialMessage = 8 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { // Mediator's side - case .IntroduceContacts: + case .introduceContacts: let step = IntroduceContactsStep(from: concreteProtocol, and: receivedMessage) return step - + case .processPropagatedInitialMessage: + let step = ProcessPropagatedInitialMessageStep(from: concreteProtocol, and: receivedMessage) + return step + // Contact's sides - case .CheckTrustLevelsAndShowDialog: + case .checkTrustLevelsAndShowDialog: let step = CheckTrustLevelsAndShowDialogStep(from: concreteProtocol, and: receivedMessage) return step - case .PropagateInviteResponse: + case .propagateInviteResponse: let step = PropagateInviteResponseStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessPropagatedInviteResponse: + case .processPropagatedInviteResponse: let step = ProcessPropagatedInviteResponseStep(from: concreteProtocol, and: receivedMessage) return step - case .PropagateNotificationAddTrustAndSendAck: + case .propagateNotificationAddTrustAndSendAck: let step = PropagateNotificationAddTrustAndSendAckStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessPropagatedNotificationAndAddTrust: + case .processPropagatedNotificationAndAddTrust: let step = ProcessPropagatedNotificationAndAddTrustStep(from: concreteProtocol, and: receivedMessage) return step - case .NotifyMutualTrustEstablished: + case .notifyMutualTrustEstablished: let step = NotifyMutualTrustEstablishedStep(from: concreteProtocol, and: receivedMessage) return step - case .RecheckTrustLevelsAfterTrustLevelIncrease: + case .recheckTrustLevelsAfterTrustLevelIncrease: let step = RecheckTrustLevelsAfterTrustLevelIncreaseStep(from: concreteProtocol, and: receivedMessage) return step @@ -102,9 +106,7 @@ extension ContactMutualIntroductionProtocol { let log = OSLog(subsystem: delegateManager.logSubsystem, category: ContactMutualIntroductionProtocol.logCategory) let contactIdentityA = receivedMessage.contactIdentityA - let contactIdentityCoreDetailsA = receivedMessage.contactIdentityCoreDetailsA let contactIdentityB = receivedMessage.contactIdentityB - let contactIdentityCoreDetailsB = receivedMessage.contactIdentityCoreDetailsB // Make sure both contacts are trusted (i.e., are part of the ContactIdentity database of the owned identity), active and OneToOne. @@ -122,6 +124,24 @@ extension ContactMutualIntroductionProtocol { return CancelledState() } } + + // Recover the current published core details of contact A + + let contactIdentityCoreDetailsA: ObvIdentityCoreDetails + do { + let publishedDetails = try identityDelegate.getPublishedIdentityDetailsOfContactIdentity(contactIdentityA, ofOwnedIdentity: ownedIdentity, within: obvContext) + let trustedDetails = try identityDelegate.getTrustedIdentityDetailsOfContactIdentity(contactIdentityA, ofOwnedIdentity: ownedIdentity, within: obvContext) + contactIdentityCoreDetailsA = publishedDetails?.contactIdentityDetailsElements.coreDetails ?? trustedDetails.contactIdentityDetailsElements.coreDetails + } + + // Recover the current published core details of contact b + + let contactIdentityCoreDetailsB: ObvIdentityCoreDetails + do { + let publishedDetails = try identityDelegate.getPublishedIdentityDetailsOfContactIdentity(contactIdentityB, ofOwnedIdentity: ownedIdentity, within: obvContext) + let trustedDetails = try identityDelegate.getTrustedIdentityDetailsOfContactIdentity(contactIdentityB, ofOwnedIdentity: ownedIdentity, within: obvContext) + contactIdentityCoreDetailsB = publishedDetails?.contactIdentityDetailsElements.coreDetails ?? trustedDetails.contactIdentityDetailsElements.coreDetails + } // Post an invitation message to contact A @@ -131,7 +151,7 @@ extension ContactMutualIntroductionProtocol { contactIdentity: contactIdentityB, contactIdentityCoreDetails: contactIdentityCoreDetailsB) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Post an invitation message to contact B @@ -142,7 +162,94 @@ extension ContactMutualIntroductionProtocol { contactIdentity: contactIdentityA, contactIdentityCoreDetails: contactIdentityCoreDetailsA) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + // If we have other devices, propagate the invite so the invitation sent messages can be inserted in the relevant discussion + + let numberOfOtherDevicesOfOwnedIdentity = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext).count + + if numberOfOtherDevicesOfOwnedIdentity > 0 { + do { + let coreMessage = getCoreMessage(for: .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity(ownedIdentity: ownedIdentity)) + let concreteProtocolMessage = PropagatedInitialMessage( + coreProtocolMessage: coreMessage, + contactIdentityA: contactIdentityA, + contactIdentityB: contactIdentityB) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } catch { + assertionFailure() + os_log("Could not propagate accept/reject invitation to other devices.", log: log, type: .fault) + } + } + + // Send a notification to insert invitation sent messages in relevant discussions + + do { + let notificationDelegate = self.notificationDelegate + let ownedCryptoId = self.ownedIdentity + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return} + ObvProtocolNotification.contactIntroductionInvitationSent( + ownedIdentity: ownedCryptoId, + contactIdentityA: contactIdentityA, + contactIdentityB: contactIdentityB) + .postOnBackgroundQueue(within: notificationDelegate) + } + } catch { + assertionFailure(error.localizedDescription) + } + + // Return the new state + + return ContactsIntroducedState() + + } + } + + + // MARK: - ProcessPropagatedInitialMessageStep + + final class ProcessPropagatedInitialMessageStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PropagatedInitialMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: PropagatedInitialMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let contactIdentityA = receivedMessage.contactIdentityA + let contactIdentityB = receivedMessage.contactIdentityB + + // Send a notification to insert invitation sent messages in relevant discussions + + do { + let notificationDelegate = self.notificationDelegate + let ownedCryptoId = self.ownedIdentity + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return} + ObvProtocolNotification.contactIntroductionInvitationSent( + ownedIdentity: ownedCryptoId, + contactIdentityA: contactIdentityA, + contactIdentityB: contactIdentityB) + .postOnBackgroundQueue(within: notificationDelegate) + } + } catch { + assertionFailure(error.localizedDescription) } // Return the new state @@ -151,6 +258,7 @@ extension ContactMutualIntroductionProtocol { } } + // MARK: - ShowInvitationDialogStep @@ -235,7 +343,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // If, in the future, the introduced contact becomes a OneToOne contact, we want end this protocol. @@ -252,7 +360,7 @@ extension ContactMutualIntroductionProtocol { _ = ProtocolInstanceWaitingForContactUpgradeToOneToOne( ownedCryptoIdentity: ownedIdentity, contactCryptoIdentity: contactIdentity, - messageToSendRawId: MessageId.TrustLevelIncreased.rawValue, + messageToSendRawId: MessageId.trustLevelIncreased.rawValue, protocolInstance: thisProtocolInstance, delegateManager: delegateManager) @@ -324,7 +432,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not propagate accept/reject invitation to other devices.", log: log, type: .fault) } @@ -342,7 +450,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return InvitationRejectedState() } @@ -358,7 +466,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } do { @@ -429,7 +537,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return InvitationRejectedState() } @@ -445,7 +553,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -508,14 +616,14 @@ extension ContactMutualIntroductionProtocol { let trustOrigin = TrustOrigin.introduction(timestamp: Date(), mediator: mediatorIdentity) if (try identityDelegate.isIdentity(contactIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext)) == true { - try identityDelegate.addTrustOriginIfTrustWouldBeIncreased(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) + try identityDelegate.addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) } else { try identityDelegate.addContactIdentity(contactIdentity, with: contactIdentityCoreDetails, andTrustOrigin: trustOrigin, forOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) } try contactDeviceUids.forEach { (contactDeviceUid) in if try !identityDelegate.isDevice(withUid: contactDeviceUid, aDeviceOfContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) { - try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } } } catch { @@ -535,7 +643,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not propagate notification to other devices.", log: log, type: .fault) } @@ -551,7 +659,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -603,14 +711,14 @@ extension ContactMutualIntroductionProtocol { let trustOrigin = TrustOrigin.introduction(timestamp: Date(), mediator: mediatorIdentity) if (try identityDelegate.isIdentity(contactIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext)) == true { - try identityDelegate.addTrustOriginIfTrustWouldBeIncreased(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) + try identityDelegate.addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) } else { try identityDelegate.addContactIdentity(contactIdentity, with: contactIdentityCoreDetails, andTrustOrigin: trustOrigin, forOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) } try contactDeviceUids.forEach { (contactDeviceUid) in if try !identityDelegate.isDevice(withUid: contactDeviceUid, aDeviceOfContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) { - try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } } } catch { @@ -654,7 +762,7 @@ extension ContactMutualIntroductionProtocol { let contactIdentityCoreDetails = startState.contactIdentityCoreDetails let dialogUuid = startState.dialogUuid let acceptType = startState.acceptType - let mediatorIdentity = startState.mediatorIdentity + // let mediatorIdentity = startState.mediatorIdentity // Display a mutual trust established dialog @@ -663,16 +771,6 @@ extension ContactMutualIntroductionProtocol { // We do not notify the user in this case break - case AcceptType.automatic: - let contact = CryptoIdentityWithCoreDetails(cryptoIdentity: contactIdentity, coreDetails: contactIdentityCoreDetails) - let dialogType = ObvChannelDialogToSendType.autoconfirmedContactIntroduction(contact: contact, mediatorIdentity: mediatorIdentity) - let coreMessage = getCoreMessage(for: .UserInterface(uuid: dialogUuid, ownedIdentity: ownedIdentity, dialogType: dialogType)) - let concreteProtocolMessage = DialogInformativeMessage(coreProtocolMessage: coreMessage) - guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { - throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") - } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) - case AcceptType.manual: let contact = CryptoIdentityWithCoreDetails(cryptoIdentity: contactIdentity, coreDetails: contactIdentityCoreDetails) let dialogType = ObvChannelDialogToSendType.mutualTrustConfirmed(contact: contact) @@ -681,7 +779,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) default: // Cannot happen @@ -749,7 +847,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } do { @@ -800,7 +898,7 @@ extension ContactMutualIntroductionProtocol { guard let _ = ProtocolInstanceWaitingForContactUpgradeToOneToOne(ownedCryptoIdentity: ownedIdentity, contactCryptoIdentity: contactIdentity, - messageToSendRawId: MessageId.TrustLevelIncreased.rawValue, + messageToSendRawId: MessageId.trustLevelIncreased.rawValue, protocolInstance: thisProtocolInstance, delegateManager: delegateManager) else { @@ -819,7 +917,7 @@ extension ContactMutualIntroductionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -871,7 +969,7 @@ extension ProtocolStep { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/CryptoProtocolId.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/CryptoProtocolId.swift index 20ea2a4e..2ad2d3c9 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/CryptoProtocolId.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/CryptoProtocolId.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,27 +26,33 @@ import OlvidUtils /// This is a list of all registered protocols enum CryptoProtocolId: Int, CustomDebugStringConvertible, CaseIterable { - case DeviceDiscoveryForContactIdentity = 0 + case contactDeviceDiscovery = 0 // 2023-01-28 We remove the legacy TrustEstablishment protocol - case ChannelCreationWithContactDevice = 2 - case DeviceDiscoveryForRemoteIdentity = 3 + case channelCreationWithContactDevice = 2 + case deviceDiscoveryForRemoteIdentity = 3 case ContactMutualIntroduction = 4 /* case GroupCreation = 5 */ - case IdentityDetailsPublication = 6 - case DownloadIdentityPhoto = 7 - case GroupInvitation = 8 - case GroupManagement = 9 - case ContactManagement = 10 - case TrustEstablishmentWithSAS = 11 - case TrustEstablishmentWithMutualScan = 12 - case FullRatchet = 13 - case DownloadGroupPhoto = 14 - case KeycloakContactAddition = 15 - case ContactCapabilitiesDiscovery = 16 - case OneToOneContactInvitation = 17 - case GroupV2 = 18 - case DownloadGroupV2Photo = 19 + case identityDetailsPublication = 6 + case downloadIdentityPhoto = 7 + case groupInvitation = 8 + case groupManagement = 9 + case contactManagement = 10 + case trustEstablishmentWithSAS = 11 + case trustEstablishmentWithMutualScan = 12 + case fullRatchet = 13 + case downloadGroupPhoto = 14 + case keycloakContactAddition = 15 + case contactCapabilitiesDiscovery = 16 + case oneToOneContactInvitation = 17 + case groupV2 = 18 + case downloadGroupV2Photo = 19 case ownedIdentityDeletionProtocol = 20 + case ownedDeviceDiscovery = 21 + case channelCreationWithOwnedDevice = 22 + case keycloakBindingAndUnbinding = 23 + case ownedDeviceManagement = 24 + case synchronization = 25 + case ownedIdentityTransfer = 26 func getConcreteCryptoProtocol(from instance: ProtocolInstance, prng: PRNGService) -> ConcreteCryptoProtocol? { return self.concreteCryptoProtocol.init(protocolInstance: instance, prng: prng) @@ -54,44 +60,56 @@ enum CryptoProtocolId: Int, CustomDebugStringConvertible, CaseIterable { private var concreteCryptoProtocol: ConcreteCryptoProtocol.Type { switch self { - case .DeviceDiscoveryForContactIdentity: - return DeviceDiscoveryForContactIdentityProtocol.self - case .ChannelCreationWithContactDevice: + case .contactDeviceDiscovery: + return ContactDeviceDiscoveryProtocol.self + case .channelCreationWithContactDevice: return ChannelCreationWithContactDeviceProtocol.self - case .DeviceDiscoveryForRemoteIdentity: + case .deviceDiscoveryForRemoteIdentity: return DeviceDiscoveryForRemoteIdentityProtocol.self case .ContactMutualIntroduction: return ContactMutualIntroductionProtocol.self - case .IdentityDetailsPublication: + case .identityDetailsPublication: return IdentityDetailsPublicationProtocol.self - case .DownloadIdentityPhoto: + case .downloadIdentityPhoto: return DownloadIdentityPhotoChildProtocol.self - case .GroupInvitation: + case .groupInvitation: return GroupInvitationProtocol.self - case .GroupManagement: + case .groupManagement: return GroupManagementProtocol.self - case .ContactManagement: + case .contactManagement: return ContactManagementProtocol.self - case .TrustEstablishmentWithSAS: + case .trustEstablishmentWithSAS: return TrustEstablishmentWithSASProtocol.self - case .TrustEstablishmentWithMutualScan: + case .trustEstablishmentWithMutualScan: return TrustEstablishmentWithMutualScanProtocol.self - case .FullRatchet: + case .fullRatchet: return FullRatchetProtocol.self - case .DownloadGroupPhoto: + case .downloadGroupPhoto: return DownloadGroupPhotoChildProtocol.self - case .KeycloakContactAddition: + case .keycloakContactAddition: return KeycloakContactAdditionProtocol.self - case .ContactCapabilitiesDiscovery: + case .contactCapabilitiesDiscovery: return DeviceCapabilitiesDiscoveryProtocol.self - case .OneToOneContactInvitation: + case .oneToOneContactInvitation: return OneToOneContactInvitationProtocol.self - case .GroupV2: + case .groupV2: return GroupV2Protocol.self - case .DownloadGroupV2Photo: + case .downloadGroupV2Photo: return DownloadGroupV2PhotoProtocol.self case .ownedIdentityDeletionProtocol: return OwnedIdentityDeletionProtocol.self + case .ownedDeviceDiscovery: + return OwnedDeviceDiscoveryProtocol.self + case .channelCreationWithOwnedDevice: + return ChannelCreationWithOwnedDeviceProtocol.self + case .keycloakBindingAndUnbinding: + return KeycloakBindingAndUnbindingProtocol.self + case .ownedDeviceManagement: + return OwnedDeviceManagementProtocol.self + case .synchronization: + return SynchronizationProtocol.self + case .ownedIdentityTransfer: + return OwnedIdentityTransferProtocol.self } } @@ -115,25 +133,31 @@ extension CryptoProtocolId { var debugDescription: String { switch self { - case .DeviceDiscoveryForContactIdentity: return "DeviceDiscoveryForContactIdentity" - case .ChannelCreationWithContactDevice: return "ChannelCreationWithContactDevice" - case .DeviceDiscoveryForRemoteIdentity: return "DeviceDiscoveryForRemoteIdentity" + case .contactDeviceDiscovery: return "ContactDeviceDiscoveryProtocol" + case .channelCreationWithContactDevice: return "ChannelCreationWithContactDevice" + case .deviceDiscoveryForRemoteIdentity: return "DeviceDiscoveryForRemoteIdentity" case .ContactMutualIntroduction: return "ContactMutualIntroduction" - case .IdentityDetailsPublication: return "IdentityDetailsPublication" - case .DownloadIdentityPhoto: return "DownloadIdentityPhoto" - case .GroupInvitation: return "GroupInvitation" - case .GroupManagement: return "GroupManagement" - case .ContactManagement: return "ContactManagement" - case .TrustEstablishmentWithSAS: return "TrustEstablishmentWithSAS" - case .FullRatchet: return "FullRatchet" - case .DownloadGroupPhoto: return "DownloadGroupPhoto" - case .KeycloakContactAddition: return "KeycloakContactAddition" - case .TrustEstablishmentWithMutualScan: return "TrustEstablishmentWithMutualScan" - case .ContactCapabilitiesDiscovery: return "ContactCapabilitiesDiscovery" - case .OneToOneContactInvitation: return "OneToOneContactInvitation" - case .GroupV2: return "GroupV2" - case .DownloadGroupV2Photo: return "DownloadGroupV2Photo" + case .identityDetailsPublication: return "IdentityDetailsPublication" + case .downloadIdentityPhoto: return "DownloadIdentityPhoto" + case .groupInvitation: return "GroupInvitation" + case .groupManagement: return "GroupManagement" + case .contactManagement: return "ContactManagement" + case .trustEstablishmentWithSAS: return "TrustEstablishmentWithSAS" + case .fullRatchet: return "FullRatchet" + case .downloadGroupPhoto: return "DownloadGroupPhoto" + case .keycloakContactAddition: return "KeycloakContactAddition" + case .trustEstablishmentWithMutualScan: return "TrustEstablishmentWithMutualScan" + case .contactCapabilitiesDiscovery: return "ContactCapabilitiesDiscovery" + case .oneToOneContactInvitation: return "OneToOneContactInvitation" + case .groupV2: return "GroupV2" + case .downloadGroupV2Photo: return "DownloadGroupV2Photo" case .ownedIdentityDeletionProtocol: return "OwnedIdentityDeletionProtocol" + case .ownedDeviceDiscovery: return "OwnedDeviceDiscoveryProtocol" + case .channelCreationWithOwnedDevice: return "ChannelCreationWithOwnedDeviceProtocol" + case .keycloakBindingAndUnbinding: return "KeycloakBindingAndUnbindingProtocol" + case .ownedDeviceManagement: return "OwnedDeviceManagementProtocol" + case .synchronization: return "SynchronizationProtocol" + case .ownedIdentityTransfer: return "OwnedIdentityTransferProtocol" } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocol.swift index ceac6fed..6ca3e604 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,13 +27,13 @@ public struct DeviceCapabilitiesDiscoveryProtocol: ConcreteCryptoProtocol { static let logCategory = "ContactCapabilitiesDiscoveryProtocol" - static let id = CryptoProtocolId.ContactCapabilitiesDiscovery + static let id = CryptoProtocolId.contactCapabilitiesDiscovery private static let errorDomain = "ContactCapabilitiesDiscoveryProtocol" static func makeError(message: String) -> Error { NSError(domain: errorDomain, code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Finished, StateId.Cancelled] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.finished, StateId.cancelled] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState @@ -60,11 +60,8 @@ public struct DeviceCapabilitiesDiscoveryProtocol: ConcreteCryptoProtocol { return MessageId(rawValue: rawValue) } - static let allStepIds: [ConcreteProtocolStepId] = [ - StepId.AddOwnCapabilitiesAndSendThemToAllContactsAndOwnedDevices, - StepId.SendOwnCapabilitiesToContactDevice, - StepId.ProcessReceivedContactDeviceCapabilities, - StepId.ProcessReceivedOwnedDeviceCapabilities, - ] + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolMessages.swift index e2c967e5..d1bed004 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,19 +26,19 @@ extension DeviceCapabilitiesDiscoveryProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case InitialForAddingOwnCapabilities = 0 - case InitialSingleContactDevice = 1 - case InitialSingleOwnedDevice = 2 - case OwnCapabilitiesToContact = 3 - case OwnCapabilitiesToSelf = 4 + case initialForAddingOwnCapabilities = 0 + case initialSingleContactDevice = 1 + case initialSingleOwnedDevice = 2 + case ownCapabilitiesToContact = 3 + case ownCapabilitiesToSelf = 4 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .InitialForAddingOwnCapabilities : return InitialForAddingOwnCapabilitiesMessage.self - case .InitialSingleContactDevice : return InitialSingleContactDeviceMessage.self - case .InitialSingleOwnedDevice : return InitialSingleOwnedDeviceMessage.self - case .OwnCapabilitiesToContact : return OwnCapabilitiesToContactMessage.self - case .OwnCapabilitiesToSelf : return OwnCapabilitiesToSelfMessage.self + case .initialForAddingOwnCapabilities : return InitialForAddingOwnCapabilitiesMessage.self + case .initialSingleContactDevice : return InitialSingleContactDeviceMessage.self + case .initialSingleOwnedDevice : return InitialSingleOwnedDeviceMessage.self + case .ownCapabilitiesToContact : return OwnCapabilitiesToContactMessage.self + case .ownCapabilitiesToSelf : return OwnCapabilitiesToSelfMessage.self } } @@ -49,7 +49,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { struct InitialForAddingOwnCapabilitiesMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InitialForAddingOwnCapabilities + let id: ConcreteProtocolMessageId = MessageId.initialForAddingOwnCapabilities let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -91,7 +91,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { struct InitialSingleContactDeviceMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InitialSingleContactDevice + let id: ConcreteProtocolMessageId = MessageId.initialSingleContactDevice let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -133,7 +133,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { struct InitialSingleOwnedDeviceMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InitialSingleOwnedDevice + let id: ConcreteProtocolMessageId = MessageId.initialSingleOwnedDevice let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -172,7 +172,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { struct OwnCapabilitiesToContactMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.OwnCapabilitiesToContact + let id: ConcreteProtocolMessageId = MessageId.ownCapabilitiesToContact let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -212,7 +212,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { struct OwnCapabilitiesToSelfMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.OwnCapabilitiesToContact + let id: ConcreteProtocolMessageId = MessageId.ownCapabilitiesToSelf let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolStates.swift index beeea808..84885f09 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,15 +25,15 @@ extension DeviceCapabilitiesDiscoveryProtocol { enum StateId: Int, ConcreteProtocolStateId { - case Initial = 0 - case Finished = 1 - case Cancelled = 2 + case initial = 0 + case finished = 1 + case cancelled = 2 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .Initial : return ConcreteProtocolInitialState.self - case .Finished : return FinishedState.self - case .Cancelled : return CancelledState.self + case .initial : return ConcreteProtocolInitialState.self + case .finished : return FinishedState.self + case .cancelled : return CancelledState.self } } @@ -42,7 +42,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { struct FinishedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Finished + let id: ConcreteProtocolStateId = StateId.finished init(_: ObvEncoded) {} @@ -55,7 +55,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolSteps.swift index 96b52ac7..0e189384 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceCapabilitiesDiscoveryProtocol/DeviceCapabilitiesDiscoveryProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,29 +27,29 @@ import ObvCrypto extension DeviceCapabilitiesDiscoveryProtocol { - enum StepId: Int, ConcreteProtocolStepId { + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case AddOwnCapabilitiesAndSendThemToAllContactsAndOwnedDevices = 0 - case SendOwnCapabilitiesToContactDevice = 1 - case SendOwnCapabilitiesToOtherOwnedDevice = 2 - case ProcessReceivedContactDeviceCapabilities = 3 - case ProcessReceivedOwnedDeviceCapabilities = 4 + case addOwnCapabilitiesAndSendThemToAllContactsAndOwnedDevices = 0 + case sendOwnCapabilitiesToContactDevice = 1 + case sendOwnCapabilitiesToOtherOwnedDevice = 2 + case processReceivedContactDeviceCapabilities = 3 + case processReceivedOwnedDeviceCapabilities = 4 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .AddOwnCapabilitiesAndSendThemToAllContactsAndOwnedDevices: + case .addOwnCapabilitiesAndSendThemToAllContactsAndOwnedDevices: let step = AddOwnCapabilitiesAndSendThemToAllContactsAndOwnedDevicesStep(from: concreteProtocol, and: receivedMessage) return step - case .SendOwnCapabilitiesToContactDevice: + case .sendOwnCapabilitiesToContactDevice: let step = SendOwnCapabilitiesToContactDeviceStep(from: concreteProtocol, and: receivedMessage) return step - case .SendOwnCapabilitiesToOtherOwnedDevice: + case .sendOwnCapabilitiesToOtherOwnedDevice: let step = SendOwnCapabilitiesToOtherOwnedDeviceStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessReceivedContactDeviceCapabilities: + case .processReceivedContactDeviceCapabilities: let step = ProcessReceivedContactDeviceCapabilitiesStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessReceivedOwnedDeviceCapabilities: + case .processReceivedOwnedDeviceCapabilities: let step = ProcessReceivedOwnedDeviceCapabilitiesStep(from: concreteProtocol, and: receivedMessage) return step } @@ -110,7 +110,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { let channel = ObvChannelSendChannelType.Local(ownedIdentity: ownedIdentity) let newProtocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: channel, - cryptoProtocolId: .OneToOneContactInvitation, + cryptoProtocolId: .oneToOneContactInvitation, protocolInstanceUid: newProtocolInstanceUid) let message = OneToOneContactInvitationProtocol.InitialOneToOneStatusSyncRequestMessage(coreProtocolMessage: coreMessage, contactsToSync: allContactIdentities) guard let messageToSend = message.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -118,7 +118,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { throw DeviceCapabilitiesDiscoveryProtocol.makeError(message: "Implementation error") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Failed to request our own OneToOne status to our contact", log: log, type: .fault) throw error @@ -140,7 +140,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { throw DeviceCapabilitiesDiscoveryProtocol.makeError(message: "Implementation error") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Failed to inform our contacts of the change of the current device new capabilities (2): %{public}@", log: log, type: .fault, error.localizedDescription) throw error @@ -161,7 +161,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { assertionFailure() throw DeviceCapabilitiesDiscoveryProtocol.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -215,7 +215,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { throw DeviceCapabilitiesDiscoveryProtocol.makeError(message: "Implementation error") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Failed to inform one of our contacts of the change of the current device new capabilities (3)", log: log, type: .fault) throw error @@ -270,7 +270,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { throw DeviceCapabilitiesDiscoveryProtocol.makeError(message: "Implementation error") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Failed to inform one of our contacts of the change of the current device new capabilities (3)", log: log, type: .fault) throw error @@ -344,7 +344,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { throw DeviceCapabilitiesDiscoveryProtocol.makeError(message: "Implementation error") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Failed to inform our contact of the current device capabilities", log: log, type: .fault) throw error @@ -420,7 +420,7 @@ extension DeviceCapabilitiesDiscoveryProtocol { throw DeviceCapabilitiesDiscoveryProtocol.makeError(message: "Implementation error") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Failed to inform our other owned device of the current device capabilities", log: log, type: .fault) throw error diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryForRemoteIdentityProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryForRemoteIdentityProtocol.swift deleted file mode 100644 index 9ed3ece5..00000000 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryForRemoteIdentityProtocol.swift +++ /dev/null @@ -1,497 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import ObvCrypto -import ObvEncoder -import ObvTypes -import ObvOperation -import ObvMetaManager -import OlvidUtils - - -public struct DeviceDiscoveryForRemoteIdentityProtocol: ConcreteCryptoProtocol { - - static let logCategory = "DeviceDiscoveryForRemoteIdentityProtocol" - - static let id = CryptoProtocolId.DeviceDiscoveryForRemoteIdentity - - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.DeviceUidsReceived, StateId.DeviceUidsSent] - - let ownedIdentity: ObvCryptoIdentity - let currentState: ConcreteProtocolState - - let delegateManager: ObvProtocolDelegateManager - let obvContext: ObvContext - let prng: PRNGService - let instanceUid: UID - - init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { - self.currentState = currentState - self.ownedIdentity = ownedCryptoIdentity - self.delegateManager = delegateManager - self.obvContext = obvContext - self.prng = prng - self.instanceUid = instanceUid - } - - static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { - return StateId(rawValue: rawValue) - } - - static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { - return MessageId(rawValue: rawValue) - } - - static let allStepIds: [ConcreteProtocolStepId] = [StepId.SendServerRequest, - StepId.ProcessDeviceUidsFromServerOrSendrequest, - StepId.RespondToRequest, - StepId.ProcessDeviceUids] -} - -// MARK: - Protocol Steps - -extension DeviceDiscoveryForRemoteIdentityProtocol { - - enum StepId: Int, ConcreteProtocolStepId { - - case SendServerRequest = 3 - case ProcessDeviceUidsFromServerOrSendrequest = 0 - case RespondToRequest = 1 - case ProcessDeviceUids = 2 - - func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { - var concreteProtocolStep: ConcreteProtocolStep? - switch self { - case .SendServerRequest: - concreteProtocolStep = SendServerRequestStep(from: concreteProtocol, and: receivedMessage) - case .ProcessDeviceUidsFromServerOrSendrequest: - concreteProtocolStep = ProcessDeviceUidsFromServerOrSendRequestStep(from: concreteProtocol, and: receivedMessage) - case .RespondToRequest: - concreteProtocolStep = RespondToRequestStep(from: concreteProtocol, and: receivedMessage) - case .ProcessDeviceUids: - concreteProtocolStep = ProcessDeviceUidsStep(from: concreteProtocol, and: receivedMessage) - } - return concreteProtocolStep - } - } - - final class SendServerRequestStep: ProtocolStep, TypedConcreteProtocolStep { - - let startState: ConcreteProtocolInitialState - let receivedMessage: InitialMessage - - init?(startState: StartConcreteProtocolStateType, receivedMessage: ConcreteProtocolMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { - - self.startState = startState - self.receivedMessage = receivedMessage - - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .Local, - receivedMessage: receivedMessage, - concreteCryptoProtocol: concreteCryptoProtocol) - - } - - override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - - let remoteIdentity = receivedMessage.remoteIdentity - - // Send the server query - - let coreMessage = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) - let concreteMessage = ServerQueryMessage(coreProtocolMessage: coreMessage) - let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.deviceDiscovery(of: remoteIdentity) - guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) - - // Return the new state - - return WaitingForDeviceUidsState.init(remoteIdentity: remoteIdentity) - } - } - - - final class ProcessDeviceUidsFromServerOrSendRequestStep: ProtocolStep, TypedConcreteProtocolStep { - - let startState: WaitingForDeviceUidsState - let receivedMessage: ServerQueryMessage - - init?(startState: StartConcreteProtocolStateType, receivedMessage: ConcreteProtocolMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { - - self.startState = startState - self.receivedMessage = receivedMessage - - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .Local, - receivedMessage: receivedMessage, - concreteCryptoProtocol: concreteCryptoProtocol) - - } - - override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - - let log = OSLog(subsystem: delegateManager.logSubsystem, category: DeviceDiscoveryForRemoteIdentityProtocol.logCategory) - - let remoteIdentity = startState.remoteIdentity - guard let deviceUids = receivedMessage.deviceUids else { - os_log("The received server response does not contain device uids", log: log, type: .error) - return nil - } - - let nextState: ConcreteProtocolState - - // If we received no device uids, we send a new request directly to the remote identity. - // If we receive at least one device uid, we assume the server knows about all the device uids and go the final state right now - - if deviceUids.isEmpty { - - os_log("The server knows no device uid for the remote identity. We query the remote identity directly.", log: log, type: .debug) - - // Get current device uid - - let currentDeviceUid: UID - do { - currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) - } catch { - os_log("Could not get current device uid", log: log, type: .fault) - return nil - } - - // Send the message - - let coreMessage = getCoreMessage(for: .AsymmetricChannelBroadcast(to: remoteIdentity, fromOwnedIdentity: ownedIdentity)) - let concreteMessage = FromAliceMessage(coreProtocolMessage: coreMessage, remoteIdentity: ownedIdentity, remoteDeviceUid: currentDeviceUid) - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) - - nextState = WaitingForDeviceUidsState.init(remoteIdentity: remoteIdentity) - - } else { - - os_log("The server knows %d device uids for the remote identity.", log: log, type: .debug, deviceUids.count) - - nextState = DeviceUidsReceivedState(remoteIdentity: remoteIdentity, deviceUids: deviceUids) - - } - - return nextState - } - } - - final class RespondToRequestStep: ProtocolStep, TypedConcreteProtocolStep { - - let startState: ConcreteProtocolInitialState - let receivedMessage: FromAliceMessage - - init?(startState: StartConcreteProtocolStateType, receivedMessage: ConcreteProtocolMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { - - self.startState = startState - self.receivedMessage = receivedMessage - - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .AsymmetricChannel, - receivedMessage: receivedMessage, - concreteCryptoProtocol: concreteCryptoProtocol) - - } - - override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - - let remoteIdentity = receivedMessage.remoteIdentity - let remoteDeviceUid = receivedMessage.remoteDeviceUid - - // Get a set of all device uids of the owned identity - - let allDeviceUids = try identityDelegate.getDeviceUidsOfOwnedIdentity(concreteCryptoProtocol.ownedIdentity, within: obvContext) - - // Broadcast the longterm identity's device uids using an asymmetric channel with the fresh ephemeral identity - - do { - let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: remoteIdentity, remoteDeviceUids: [remoteDeviceUid], fromOwnedIdentity: ownedIdentity)) - let concreteMessage = FromBobMessage(coreProtocolMessage: coreMessage, deviceUids: Array(allDeviceUids)) - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) - } - - // Return the new state - return DeviceUidsSentState() - } - } - - - final class ProcessDeviceUidsStep: ProtocolStep, TypedConcreteProtocolStep { - - let startState: WaitingForDeviceUidsState - let receivedMessage: FromBobMessage - - init?(startState: StartConcreteProtocolStateType, receivedMessage: ConcreteProtocolMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { - - self.startState = startState - self.receivedMessage = receivedMessage - - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .AsymmetricChannel, - receivedMessage: receivedMessage, - concreteCryptoProtocol: concreteCryptoProtocol) - - } - - override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - - let remoteIdentity = startState.remoteIdentity - let deviceUids = receivedMessage.deviceUids - - // Return the new state - return DeviceUidsReceivedState(remoteIdentity: remoteIdentity, deviceUids: deviceUids) - - } - } - -} - - -// MARK: - Protocol Messages - -extension DeviceDiscoveryForRemoteIdentityProtocol { - - enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case ServerQuery = 3 - case FromAlice = 1 - case FromBob = 2 - - var concreteProtocolMessageType: ConcreteProtocolMessage.Type { - switch self { - case .Initial : return InitialMessage.self - case .ServerQuery : return ServerQueryMessage.self - case .FromAlice : return FromAliceMessage.self - case .FromBob : return FromBobMessage.self - } - } - } - - - struct InitialMessage: ConcreteProtocolMessage { - - let id: ConcreteProtocolMessageId = MessageId.Initial - let coreProtocolMessage: CoreProtocolMessage - - // Properties specific to this concrete protocol message - - let remoteIdentity: ObvCryptoIdentity - - var encodedInputs: [ObvEncoded] { - return [remoteIdentity.obvEncode()] - } - - // Initializers - - init(with message: ReceivedMessage) throws { - self.coreProtocolMessage = CoreProtocolMessage(with: message) - remoteIdentity = try message.encodedInputs.obvDecode() - } - - init(coreProtocolMessage: CoreProtocolMessage, remoteIdentity: ObvCryptoIdentity) { - self.coreProtocolMessage = coreProtocolMessage - self.remoteIdentity = remoteIdentity - } - } - - - struct ServerQueryMessage: ConcreteProtocolMessage { - - let id: ConcreteProtocolMessageId = MessageId.ServerQuery - let coreProtocolMessage: CoreProtocolMessage - - // Properties specific to this concrete protocol message - - let deviceUids: [UID]? // Only set when the message is sent to this protocol, not when sending this message to the server - - var encodedInputs: [ObvEncoded] { return [] } - - // Initializers - - init(with message: ReceivedMessage) throws { - self.coreProtocolMessage = CoreProtocolMessage(with: message) - let encodedElements = message.encodedInputs - guard encodedElements.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded elements") } - guard let listOfEncodedUids = [ObvEncoded](encodedElements[0]) else { assertionFailure(); throw Self.makeError(message: "Failed to get list of encoded inputs") } - var uids = [UID]() - for encodedUid in listOfEncodedUids { - guard let uid = UID(encodedUid) else { assertionFailure(); throw Self.makeError(message: "Failed to decode UID") } - uids.append(uid) - } - self.deviceUids = uids - } - - init(coreProtocolMessage: CoreProtocolMessage) { - self.coreProtocolMessage = coreProtocolMessage - self.deviceUids = nil - } - } - - - struct FromAliceMessage: ConcreteProtocolMessage { - - let id: ConcreteProtocolMessageId = MessageId.FromAlice - let coreProtocolMessage: CoreProtocolMessage - - // Properties specific to this concrete protocol message - - let remoteIdentity: ObvCryptoIdentity - let remoteDeviceUid: UID - - var encodedInputs: [ObvEncoded] { - return [remoteIdentity.obvEncode(), remoteDeviceUid.obvEncode()] - } - - // Initializers - - init(with message: ReceivedMessage) throws { - self.coreProtocolMessage = CoreProtocolMessage(with: message) - (remoteIdentity, remoteDeviceUid) = try message.encodedInputs.obvDecode() - } - - init(coreProtocolMessage: CoreProtocolMessage, remoteIdentity: ObvCryptoIdentity, remoteDeviceUid: UID) { - self.coreProtocolMessage = coreProtocolMessage - self.remoteIdentity = remoteIdentity - self.remoteDeviceUid = remoteDeviceUid - } - } - - - struct FromBobMessage: ConcreteProtocolMessage { - - let id: ConcreteProtocolMessageId = MessageId.FromBob - let coreProtocolMessage: CoreProtocolMessage - - // Properties specific to this concrete protocol message - - let deviceUids: [UID] - - var encodedInputs: [ObvEncoded] { - return [(deviceUids as [ObvEncodable]).obvEncode()] - } - - // Initializers - - init(with message: ReceivedMessage) throws { - self.coreProtocolMessage = CoreProtocolMessage(with: message) - guard message.encodedInputs.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded inputs") } - let deviceUidsAsEncodedList = message.encodedInputs[0] - guard let listOfEncodedUids = [ObvEncoded](deviceUidsAsEncodedList) else { assertionFailure(); throw Self.makeError(message: "Failed to obtain encoded device uids") } - deviceUids = try listOfEncodedUids.map { try $0.obvDecode() } - } - - init(coreProtocolMessage: CoreProtocolMessage, deviceUids: [UID]) { - self.coreProtocolMessage = coreProtocolMessage - self.deviceUids = deviceUids - } - - } -} - -// MARK: - Protocol States - -extension DeviceDiscoveryForRemoteIdentityProtocol { - - - enum StateId: Int, ConcreteProtocolStateId { - - case InitialState = 0 - // Alice's side - case WaitingForDeviceUids = 1 - case DeviceUidsReceived = 2 // Final - // Bob's side - case DeviceUidsSent = 3 // Final - - var concreteProtocolStateType: ConcreteProtocolState.Type { - switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .WaitingForDeviceUids : return WaitingForDeviceUidsState.self - case .DeviceUidsReceived : return DeviceUidsReceivedState.self - case .DeviceUidsSent : return DeviceUidsSentState.self - } - } - } - - - struct WaitingForDeviceUidsState: TypeConcreteProtocolState { - - let id: ConcreteProtocolStateId = StateId.WaitingForDeviceUids - - let remoteIdentity: ObvCryptoIdentity - - init(_ encoded: ObvEncoded) throws { - (remoteIdentity) = try encoded.obvDecode() - } - - init(remoteIdentity: ObvCryptoIdentity) { - self.remoteIdentity = remoteIdentity - } - - func obvEncode() -> ObvEncoded { - return remoteIdentity.obvEncode() - } - - } - - - struct DeviceUidsReceivedState: TypeConcreteProtocolState { - - let id: ConcreteProtocolStateId = StateId.DeviceUidsReceived - - let remoteIdentity: ObvCryptoIdentity - let deviceUids: [UID] - - init(_ obvEncoded: ObvEncoded) throws { - guard let listOfEncoded = [ObvEncoded](obvEncoded, expectedCount: 2) else { assertionFailure(); throw Self.makeError(message: "Could not obtain list of encoded elements") } - remoteIdentity = try listOfEncoded[0].obvDecode() - guard let listOfEncodedDeviceUids = [ObvEncoded](listOfEncoded[1]) else { assertionFailure(); throw Self.makeError(message: "Failed to obtain encoded device uids") } - deviceUids = try listOfEncodedDeviceUids.map { return try $0.obvDecode() } - } - - init(remoteIdentity: ObvCryptoIdentity, deviceUids: [UID]) { - self.remoteIdentity = remoteIdentity - self.deviceUids = deviceUids - } - - func obvEncode() -> ObvEncoded { - let listOfEncodedDeviceUids = deviceUids.map { $0.obvEncode() } - let encodedDeviceUids = listOfEncodedDeviceUids.obvEncode() - let encodedRemoteIdentity = remoteIdentity.obvEncode() - return [encodedRemoteIdentity, encodedDeviceUids].obvEncode() - } - } - - struct DeviceUidsSentState: TypeConcreteProtocolState { - - let id: ConcreteProtocolStateId = StateId.DeviceUidsSent - - init(_: ObvEncoded) {} - - init() {} - - func obvEncode() -> ObvEncoded { return 0.obvEncode() } - } - -} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocol.swift new file mode 100644 index 00000000..b4451b02 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocol.swift @@ -0,0 +1,66 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation +import OlvidUtils + + +public struct ContactDeviceDiscoveryProtocol: ConcreteCryptoProtocol { + + static let logCategory = "ContactDeviceDiscoveryProtocol" + + static let id = CryptoProtocolId.contactDeviceDiscovery + + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.childProtocolStateProcessed, StateId.cancelled] + + let ownedIdentity: ObvCryptoIdentity + let currentState: ConcreteProtocolState + + let delegateManager: ObvProtocolDelegateManager + let obvContext: ObvContext + let prng: PRNGService + let instanceUid: UID + + init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { + self.currentState = currentState + self.ownedIdentity = ownedCryptoIdentity + self.delegateManager = delegateManager + self.obvContext = obvContext + self.prng = prng + self.instanceUid = instanceUid + } + + static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { + return StateId(rawValue: rawValue) + } + + static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { + return MessageId(rawValue: rawValue) + } + + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocolMessages.swift new file mode 100644 index 00000000..64316adf --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocolMessages.swift @@ -0,0 +1,98 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation +import OlvidUtils + + + +// MARK: - Protocol Messages + +extension ContactDeviceDiscoveryProtocol { + + enum MessageId: Int, ConcreteProtocolMessageId { + case initial = 0 + case childProtocolReachedExpectedState = 1 + + var concreteProtocolMessageType: ConcreteProtocolMessage.Type { + switch self { + case .initial : return InitialMessage.self + case .childProtocolReachedExpectedState : return ChildProtocolReachedExpectedStateMessage.self + } + } + } + + + struct InitialMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.initial + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let contactIdentity: ObvCryptoIdentity + + var encodedInputs: [ObvEncoded] { + return [contactIdentity.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + contactIdentity = try message.encodedInputs.obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, contactIdentity: ObvCryptoIdentity) { + self.coreProtocolMessage = coreProtocolMessage + self.contactIdentity = contactIdentity + } + } + + + struct ChildProtocolReachedExpectedStateMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.childProtocolReachedExpectedState + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let childToParentProtocolMessageInputs: ChildToParentProtocolMessageInputs + let deviceUidsSentState: DeviceDiscoveryForRemoteIdentityProtocol.DeviceUidsReceivedState + + var encodedInputs: [ObvEncoded] { + return childToParentProtocolMessageInputs.toListOfEncoded() + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard let inputs = ChildToParentProtocolMessageInputs(message.encodedInputs) else { assertionFailure(); throw Self.makeError(message: "Failed to obtain inputs") } + childToParentProtocolMessageInputs = inputs + deviceUidsSentState = try DeviceDiscoveryForRemoteIdentityProtocol.DeviceUidsReceivedState(childToParentProtocolMessageInputs.childProtocolInstanceEncodedReachedState) + } + } +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocolStates.swift new file mode 100644 index 00000000..d2292945 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocolStates.swift @@ -0,0 +1,98 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation +import OlvidUtils + + + +// MARK: - Protocol States + +extension ContactDeviceDiscoveryProtocol { + + + enum StateId: Int, ConcreteProtocolStateId { + + case initialState = 0 + case waitingForChildProtocol = 1 + case childProtocolStateProcessed = 2 + case cancelled = 3 + + var concreteProtocolStateType: ConcreteProtocolState.Type { + switch self { + case .initialState : return ConcreteProtocolInitialState.self + case .waitingForChildProtocol : return WaitingForChildProtocolState.self + case .childProtocolStateProcessed : return ChildProtocolStateProcessedState.self + case .cancelled : return CancelledState.self + } + } + } + + struct WaitingForChildProtocolState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.waitingForChildProtocol + + let contactIdentity: ObvCryptoIdentity + + init(_ obvEncoded: ObvEncoded) throws { + do { + contactIdentity = try obvEncoded.obvDecode() + } catch let error { + throw error + } + } + + init(contactIdentity: ObvCryptoIdentity) { + self.contactIdentity = contactIdentity + } + + func obvEncode() -> ObvEncoded { + return contactIdentity.obvEncode() + } + } + + struct ChildProtocolStateProcessedState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.childProtocolStateProcessed + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + } + + struct CancelledState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.cancelled + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryForContactIdentityProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocolSteps.swift similarity index 56% rename from Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryForContactIdentityProtocol.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocolSteps.swift index 539e6a78..ae8009ee 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryForContactIdentityProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/ContactDeviceDiscoveryProtocol/ContactDeviceDiscoveryProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,55 +27,20 @@ import ObvOperation import OlvidUtils -public struct DeviceDiscoveryForContactIdentityProtocol: ConcreteCryptoProtocol { - - static let logCategory = "DeviceDiscoveryForContactIdentityProtocol" - - static let id = CryptoProtocolId.DeviceDiscoveryForContactIdentity - - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.ChildProtocolStateProcessed, StateId.Cancelled] - - let ownedIdentity: ObvCryptoIdentity - let currentState: ConcreteProtocolState - - let delegateManager: ObvProtocolDelegateManager - let obvContext: ObvContext - let prng: PRNGService - let instanceUid: UID - - init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { - self.currentState = currentState - self.ownedIdentity = ownedCryptoIdentity - self.delegateManager = delegateManager - self.obvContext = obvContext - self.prng = prng - self.instanceUid = instanceUid - } - - static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { - return StateId(rawValue: rawValue) - } - - static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { - return MessageId(rawValue: rawValue) - } - - static let allStepIds: [ConcreteProtocolStepId] = [StepId.StartChildProtocol, StepId.ProcessChildProtocolState] -} // MARK: - Protocol Steps -extension DeviceDiscoveryForContactIdentityProtocol { +extension ContactDeviceDiscoveryProtocol { - enum StepId: Int, ConcreteProtocolStepId { + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case StartChildProtocol = 0 - case ProcessChildProtocolState = 1 + case startChildProtocol = 0 + case processChildProtocolState = 1 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .StartChildProtocol : return StartChildProtocolStep(from: concreteProtocol, and: receivedMessage) - case .ProcessChildProtocolState : return ProcessChildProtocolStateStep(from: concreteProtocol, and: receivedMessage) + case .startChildProtocol : return StartChildProtocolStep(from: concreteProtocol, and: receivedMessage) + case .processChildProtocolState : return ProcessChildProtocolStateStep(from: concreteProtocol, and: receivedMessage) } } } @@ -99,7 +64,7 @@ extension DeviceDiscoveryForContactIdentityProtocol { override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - let log = OSLog(subsystem: delegateManager.logSubsystem, category: DeviceDiscoveryForContactIdentityProtocol.logCategory) + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ContactDeviceDiscoveryProtocol.logCategory) let contactIdentity = receivedMessage.contactIdentity @@ -126,8 +91,8 @@ extension DeviceDiscoveryForContactIdentityProtocol { } guard let _ = LinkBetweenProtocolInstances(parentProtocolInstance: thisProtocolInstance, childProtocolInstanceUid: childProtocolInstanceUid, - expectedChildStateRawId: DeviceDiscoveryForRemoteIdentityProtocol.StateId.DeviceUidsReceived.rawValue, - messageToSendRawId: MessageId.ChildProtocolReachedExpectedState.rawValue) + expectedChildStateRawId: DeviceDiscoveryForRemoteIdentityProtocol.StateId.deviceUidsReceived.rawValue, + messageToSendRawId: MessageId.childProtocolReachedExpectedState.rawValue) else { os_log("Could not create a link between protocol instances", log: log, type: .fault) return CancelledState() @@ -135,7 +100,7 @@ extension DeviceDiscoveryForContactIdentityProtocol { // To actually create the child protocol instance, we post an appropriate message on the loopback channel - let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .DeviceDiscoveryForRemoteIdentity, + let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .deviceDiscoveryForRemoteIdentity, otherProtocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = DeviceDiscoveryForRemoteIdentityProtocol.InitialMessage(coreProtocolMessage: coreMessage, remoteIdentity: contactIdentity) @@ -143,7 +108,7 @@ extension DeviceDiscoveryForContactIdentityProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // Return the new state @@ -171,7 +136,7 @@ extension DeviceDiscoveryForContactIdentityProtocol { override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - let log = OSLog(subsystem: delegateManager.logSubsystem, category: DeviceDiscoveryForContactIdentityProtocol.logCategory) + let log = OSLog(subsystem: delegateManager.logSubsystem, category: ContactDeviceDiscoveryProtocol.logCategory) let contactIdentity: ObvCryptoIdentity do { @@ -218,7 +183,7 @@ extension DeviceDiscoveryForContactIdentityProtocol { for deviceUid in latestSetOfDeviceUids { do { - try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: deviceUid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: deviceUid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } catch { os_log("Could not add a device to a contact identity", log: log, type: .fault) assertionFailure() @@ -233,142 +198,3 @@ extension DeviceDiscoveryForContactIdentityProtocol { } } } - - -// MARK: - Protocol Messages - -extension DeviceDiscoveryForContactIdentityProtocol { - - enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case ChildProtocolReachedExpectedState = 1 - - var concreteProtocolMessageType: ConcreteProtocolMessage.Type { - switch self { - case .Initial : return InitialMessage.self - case .ChildProtocolReachedExpectedState : return ChildProtocolReachedExpectedStateMessage.self - } - } - } - - - struct InitialMessage: ConcreteProtocolMessage { - - let id: ConcreteProtocolMessageId = MessageId.Initial - let coreProtocolMessage: CoreProtocolMessage - - // Properties specific to this concrete protocol message - - let contactIdentity: ObvCryptoIdentity - - var encodedInputs: [ObvEncoded] { - return [contactIdentity.obvEncode()] - } - - // Initializers - - init(with message: ReceivedMessage) throws { - self.coreProtocolMessage = CoreProtocolMessage(with: message) - contactIdentity = try message.encodedInputs.obvDecode() - } - - init(coreProtocolMessage: CoreProtocolMessage, contactIdentity: ObvCryptoIdentity) { - self.coreProtocolMessage = coreProtocolMessage - self.contactIdentity = contactIdentity - } - } - - - struct ChildProtocolReachedExpectedStateMessage: ConcreteProtocolMessage { - - let id: ConcreteProtocolMessageId = MessageId.ChildProtocolReachedExpectedState - let coreProtocolMessage: CoreProtocolMessage - - // Properties specific to this concrete protocol message - - let childToParentProtocolMessageInputs: ChildToParentProtocolMessageInputs - let deviceUidsSentState: DeviceDiscoveryForRemoteIdentityProtocol.DeviceUidsReceivedState - - var encodedInputs: [ObvEncoded] { - return childToParentProtocolMessageInputs.toListOfEncoded() - } - - // Initializers - - init(with message: ReceivedMessage) throws { - self.coreProtocolMessage = CoreProtocolMessage(with: message) - guard let inputs = ChildToParentProtocolMessageInputs(message.encodedInputs) else { assertionFailure(); throw Self.makeError(message: "Failed to obtain inputs") } - childToParentProtocolMessageInputs = inputs - deviceUidsSentState = try DeviceDiscoveryForRemoteIdentityProtocol.DeviceUidsReceivedState(childToParentProtocolMessageInputs.childProtocolInstanceEncodedReachedState) - } - } -} - -// MARK: - Protocol States - -extension DeviceDiscoveryForContactIdentityProtocol { - - - enum StateId: Int, ConcreteProtocolStateId { - - case InitialState = 0 - case WaitingForChildProtocol = 1 - case ChildProtocolStateProcessed = 2 - case Cancelled = 3 - - var concreteProtocolStateType: ConcreteProtocolState.Type { - switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .WaitingForChildProtocol : return WaitingForChildProtocolState.self - case .ChildProtocolStateProcessed : return ChildProtocolStateProcessedState.self - case .Cancelled : return CancelledState.self - } - } - } - - struct WaitingForChildProtocolState: TypeConcreteProtocolState { - - let id: ConcreteProtocolStateId = StateId.WaitingForChildProtocol - - let contactIdentity: ObvCryptoIdentity - - init(_ obvEncoded: ObvEncoded) throws { - do { - contactIdentity = try obvEncoded.obvDecode() - } catch let error { - throw error - } - } - - init(contactIdentity: ObvCryptoIdentity) { - self.contactIdentity = contactIdentity - } - - func obvEncode() -> ObvEncoded { - return contactIdentity.obvEncode() - } - } - - struct ChildProtocolStateProcessedState: TypeConcreteProtocolState { - - let id: ConcreteProtocolStateId = StateId.ChildProtocolStateProcessed - - init(_: ObvEncoded) {} - - init() {} - - func obvEncode() -> ObvEncoded { return 0.obvEncode() } - } - - struct CancelledState: TypeConcreteProtocolState { - - let id: ConcreteProtocolStateId = StateId.Cancelled - - init(_: ObvEncoded) {} - - init() {} - - func obvEncode() -> ObvEncoded { return 0.obvEncode() } - } - -} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocol.swift new file mode 100644 index 00000000..6ca36685 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocol.swift @@ -0,0 +1,69 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation +import ObvMetaManager +import OlvidUtils + + +public struct DeviceDiscoveryForRemoteIdentityProtocol: ConcreteCryptoProtocol { + + static let logCategory = "DeviceDiscoveryForRemoteIdentityProtocol" + + static let id = CryptoProtocolId.deviceDiscoveryForRemoteIdentity + + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.deviceUidsReceived] + + let ownedIdentity: ObvCryptoIdentity + let currentState: ConcreteProtocolState + + let delegateManager: ObvProtocolDelegateManager + let obvContext: ObvContext + let prng: PRNGService + let instanceUid: UID + + init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { + self.currentState = currentState + self.ownedIdentity = ownedCryptoIdentity + self.delegateManager = delegateManager + self.obvContext = obvContext + self.prng = prng + self.instanceUid = instanceUid + } + + static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { + return StateId(rawValue: rawValue) + } + + static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { + return MessageId(rawValue: rawValue) + } + + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } + +} + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocolMessages.swift new file mode 100644 index 00000000..8029fbfb --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocolMessages.swift @@ -0,0 +1,109 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation +import ObvMetaManager +import OlvidUtils + + + +// MARK: - Protocol Messages + +extension DeviceDiscoveryForRemoteIdentityProtocol { + + enum MessageId: Int, ConcreteProtocolMessageId { + case initial = 0 + case serverQuery = 3 + + var concreteProtocolMessageType: ConcreteProtocolMessage.Type { + switch self { + case .initial : return InitialMessage.self + case .serverQuery : return ServerQueryMessage.self + } + } + } + + + struct InitialMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.initial + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let remoteIdentity: ObvCryptoIdentity + + var encodedInputs: [ObvEncoded] { + return [remoteIdentity.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + remoteIdentity = try message.encodedInputs.obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, remoteIdentity: ObvCryptoIdentity) { + self.coreProtocolMessage = coreProtocolMessage + self.remoteIdentity = remoteIdentity + } + } + + + struct ServerQueryMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.serverQuery + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let deviceUids: [UID]? // Only set when the message is sent to this protocol, not when sending this message to the server + + var encodedInputs: [ObvEncoded] { return [] } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + guard encodedElements.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded elements") } + guard let listOfEncodedUids = [ObvEncoded](encodedElements[0]) else { assertionFailure(); throw Self.makeError(message: "Failed to get list of encoded inputs") } + var uids = [UID]() + for encodedUid in listOfEncodedUids { + guard let uid = UID(encodedUid) else { assertionFailure(); throw Self.makeError(message: "Failed to decode UID") } + uids.append(uid) + } + self.deviceUids = uids + } + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.deviceUids = nil + } + } + +} + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocolStates.swift new file mode 100644 index 00000000..d2cb4d15 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocolStates.swift @@ -0,0 +1,100 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation +import ObvMetaManager +import OlvidUtils + + + +// MARK: - Protocol States + +extension DeviceDiscoveryForRemoteIdentityProtocol { + + enum StateId: Int, ConcreteProtocolStateId { + + case initialState = 0 + case waitingForDeviceUids = 1 + case deviceUidsReceived = 2 // Final + + var concreteProtocolStateType: ConcreteProtocolState.Type { + switch self { + case .initialState : return ConcreteProtocolInitialState.self + case .waitingForDeviceUids : return WaitingForDeviceUidsState.self + case .deviceUidsReceived : return DeviceUidsReceivedState.self + } + } + } + + + struct WaitingForDeviceUidsState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.waitingForDeviceUids + + let remoteIdentity: ObvCryptoIdentity + + init(_ encoded: ObvEncoded) throws { + (remoteIdentity) = try encoded.obvDecode() + } + + init(remoteIdentity: ObvCryptoIdentity) { + self.remoteIdentity = remoteIdentity + } + + func obvEncode() -> ObvEncoded { + return remoteIdentity.obvEncode() + } + + } + + + struct DeviceUidsReceivedState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.deviceUidsReceived + + let remoteIdentity: ObvCryptoIdentity + let deviceUids: [UID] + + init(_ obvEncoded: ObvEncoded) throws { + guard let listOfEncoded = [ObvEncoded](obvEncoded, expectedCount: 2) else { assertionFailure(); throw Self.makeError(message: "Could not obtain list of encoded elements") } + remoteIdentity = try listOfEncoded[0].obvDecode() + guard let listOfEncodedDeviceUids = [ObvEncoded](listOfEncoded[1]) else { assertionFailure(); throw Self.makeError(message: "Failed to obtain encoded device uids") } + deviceUids = try listOfEncodedDeviceUids.map { return try $0.obvDecode() } + } + + init(remoteIdentity: ObvCryptoIdentity, deviceUids: [UID]) { + self.remoteIdentity = remoteIdentity + self.deviceUids = deviceUids + } + + func obvEncode() -> ObvEncoded { + let listOfEncodedDeviceUids = deviceUids.map { $0.obvEncode() } + let encodedDeviceUids = listOfEncodedDeviceUids.obvEncode() + let encodedRemoteIdentity = remoteIdentity.obvEncode() + return [encodedRemoteIdentity, encodedDeviceUids].obvEncode() + } + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocolSteps.swift new file mode 100644 index 00000000..834bfb8e --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/DeviceDiscoveryForRemoteIdentityProtocol/DeviceDiscoveryForRemoteIdentityProtocolSteps.swift @@ -0,0 +1,121 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvOperation +import ObvMetaManager +import OlvidUtils + + + +// MARK: - Protocol Steps + +extension DeviceDiscoveryForRemoteIdentityProtocol { + + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { + + case sendServerRequest + case processDeviceUids + + func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { + var concreteProtocolStep: ConcreteProtocolStep? + switch self { + case .sendServerRequest: + concreteProtocolStep = SendServerRequestStep(from: concreteProtocol, and: receivedMessage) + case .processDeviceUids: + concreteProtocolStep = ProcessDeviceUidsFromServerStep(from: concreteProtocol, and: receivedMessage) + } + return concreteProtocolStep + } + } + + final class SendServerRequestStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: InitialMessage + + init?(startState: StartConcreteProtocolStateType, receivedMessage: ConcreteProtocolMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let remoteIdentity = receivedMessage.remoteIdentity + + // Send the server query + + let coreMessage = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concreteMessage = ServerQueryMessage(coreProtocolMessage: coreMessage) + let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.deviceDiscovery(of: remoteIdentity) + guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + + // Return the new state + + return WaitingForDeviceUidsState(remoteIdentity: remoteIdentity) + } + } + + + final class ProcessDeviceUidsFromServerStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: WaitingForDeviceUidsState + let receivedMessage: ServerQueryMessage + + init?(startState: StartConcreteProtocolStateType, receivedMessage: ConcreteProtocolMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: DeviceDiscoveryForRemoteIdentityProtocol.logCategory) + + let remoteIdentity = startState.remoteIdentity + guard let deviceUids = receivedMessage.deviceUids else { + os_log("The received server response does not contain device uids", log: log, type: .error) + return nil + } + + return DeviceUidsReceivedState(remoteIdentity: remoteIdentity, deviceUids: deviceUids) + + } + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocol.swift new file mode 100644 index 00000000..db4d197b --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocol.swift @@ -0,0 +1,65 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto +import ObvTypes +import ObvEncoder +import OlvidUtils + + +public struct OwnedDeviceDiscoveryProtocol: ConcreteCryptoProtocol { + + static let logCategory = "OwnedDeviceDiscoveryProtocol" + + static let id = CryptoProtocolId.ownedDeviceDiscovery + + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.cancelled, StateId.serverQueryProcessed] + + let ownedIdentity: ObvCryptoIdentity + let currentState: ConcreteProtocolState + + let delegateManager: ObvProtocolDelegateManager + let obvContext: ObvContext + let prng: PRNGService + let instanceUid: UID + + init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { + self.currentState = currentState + self.ownedIdentity = ownedCryptoIdentity + self.delegateManager = delegateManager + self.obvContext = obvContext + self.prng = prng + self.instanceUid = instanceUid + } + + static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { + return StateId(rawValue: rawValue) + } + + static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { + return MessageId(rawValue: rawValue) + } + + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } + +} + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocolMessages.swift new file mode 100644 index 00000000..ff8d026b --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocolMessages.swift @@ -0,0 +1,124 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvCrypto + +// MARK: - Protocol Messages + +extension OwnedDeviceDiscoveryProtocol { + + enum MessageId: Int, ConcreteProtocolMessageId { + + case initiateOwnedDeviceDiscovery = 0 + case serverQuery = 1 + case initiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDevice = 2 + + var concreteProtocolMessageType: ConcreteProtocolMessage.Type { + switch self { + case .initiateOwnedDeviceDiscovery : return InitiateOwnedDeviceDiscoveryMessage.self + case .serverQuery : return ServerQueryMessage.self + case .initiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDevice: return InitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage.self + } + } + + } + + + // MARK: - InitiateOwnedDeviceDiscoveryMessage + + struct InitiateOwnedDeviceDiscoveryMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.initiateOwnedDeviceDiscovery + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + } + + + struct ServerQueryMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.serverQuery + let coreProtocolMessage: CoreProtocolMessage + + // Properties specific to this concrete protocol message + + let encryptedOwnedDeviceDiscoveryResult: EncryptedData? // Only set when the message is sent to this protocol, not when sending this message to the server + + var encodedInputs: [ObvEncoded] { return [] } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + guard encodedElements.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded elements") } + let encodedEncryptedOwnedDeviceDiscoveryResult = encodedElements[0] + guard let encryptedOwnedDeviceDiscoveryResult = EncryptedData(encodedEncryptedOwnedDeviceDiscoveryResult) else { + assertionFailure() + throw Self.makeError(message: "Failed to decode the encrypted result of the owned device discovery") + } + self.encryptedOwnedDeviceDiscoveryResult = encryptedOwnedDeviceDiscoveryResult + } + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.encryptedOwnedDeviceDiscoveryResult = nil + } + } + + + // MARK: - InitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage + + struct InitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.initiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDevice + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocolStates.swift new file mode 100644 index 00000000..78bb905e --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocolStates.swift @@ -0,0 +1,93 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvTypes +import ObvCrypto +import ObvMetaManager + + +// MARK: - Protocol States + +extension OwnedDeviceDiscoveryProtocol { + + enum StateId: Int, ConcreteProtocolStateId { + + case initial = 0 + case waitingForServerQueryResult = 1 + case serverQueryProcessed = 2 // Final + case cancelled = 100 // Final + + var concreteProtocolStateType: ConcreteProtocolState.Type { + switch self { + case .initial : return ConcreteProtocolInitialState.self + case .waitingForServerQueryResult : return WaitingForServerQueryResultState.self + case .serverQueryProcessed : return ServerQueryProcessedState.self + case .cancelled : return CancelledState.self + } + } + } + + + // MARK: - WaitingForServerQueryResultState + + struct WaitingForServerQueryResultState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.waitingForServerQueryResult + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + + + // MARK: - ServerQueryProcessedState + + struct ServerQueryProcessedState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.serverQueryProcessed + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + + + // MARK: - CancelledState + + struct CancelledState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.cancelled + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocolSteps.swift new file mode 100644 index 00000000..dc35ed6b --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DeviceDiscoveryProtocols/OwnedDeviceDiscoveryProtocol/OwnedDeviceDiscoveryProtocolSteps.swift @@ -0,0 +1,198 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +import Foundation +import os.log +import ObvTypes +import ObvMetaManager +import ObvCrypto +import OlvidUtils +import ObvEncoder + +// MARK: - Protocol Steps + +extension OwnedDeviceDiscoveryProtocol { + + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { + + case sendServerQuery = 0 + case processServerQuery = 1 + + func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { + switch self { + + case .sendServerQuery: + if let step = SendServerQueryFromInitiateOwnedDeviceDiscoveryMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = SendServerQueryStepFromInitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else { + return nil + } + + case .processServerQuery: + let step = ProcessServerQueryStep(from: concreteProtocol, and: receivedMessage) + return step + + } + } + } + + // MARK: - SendServerQueryStep + + class SendServerQueryStep: ProtocolStep { + + private let startState: ConcreteProtocolInitialState + private let receivedMessage: ReceivedMessageType + + enum ReceivedMessageType { + case initiateOwnedDeviceDiscoveryMessage(receivedMessage: InitiateOwnedDeviceDiscoveryMessage) + case initiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage(receivedMessage: InitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage) + } + + init?(startState: ConcreteProtocolInitialState, receivedMessage: ReceivedMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + switch receivedMessage { + case .initiateOwnedDeviceDiscoveryMessage(receivedMessage: let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + case .initiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage(receivedMessage: let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + // Send the server query + + let coreMessage = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concreteMessage = ServerQueryMessage(coreProtocolMessage: coreMessage) + let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.ownedDeviceDiscovery + guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + + // Return the new state + + return WaitingForServerQueryResultState() + + } + + } + + + // MARK: SendServerQueryFromInitiateOwnedDeviceDiscoveryMessageStep + + final class SendServerQueryFromInitiateOwnedDeviceDiscoveryMessageStep: SendServerQueryStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: InitiateOwnedDeviceDiscoveryMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: InitiateOwnedDeviceDiscoveryMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: startState, + receivedMessage: .initiateOwnedDeviceDiscoveryMessage(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + // MARK: SendServerQueryStepFromInitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessageStep + + final class SendServerQueryStepFromInitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessageStep: SendServerQueryStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: InitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: InitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: startState, + receivedMessage: .initiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + + + + + + + // MARK: - ProcessServerQueryStep + + final class ProcessServerQueryStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: WaitingForServerQueryResultState + let receivedMessage: ServerQueryMessage + + init?(startState: WaitingForServerQueryResultState, receivedMessage: ServerQueryMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: OwnedDeviceDiscoveryProtocol.logCategory) + + guard let encryptedOwnedDeviceDiscoveryResult = receivedMessage.encryptedOwnedDeviceDiscoveryResult else { + assertionFailure() + os_log("The ServerQueryMessage has no encryptedOwnedDeviceDiscoveryResult. This is a bug.", log: log, type: .fault) + return CancelledState() + } + + let currentDeviceIsPartOfOwnedDeviceDiscoveryResult = try identityDelegate.processEncryptedOwnedDeviceDiscoveryResult(encryptedOwnedDeviceDiscoveryResult, forOwnedCryptoId: ownedIdentity, within: obvContext) + + if !currentDeviceIsPartOfOwnedDeviceDiscoveryResult { + ObvProtocolNotification.theCurrentDeviceWasNotPartOfTheLastOwnedDeviceDiscoveryResults(ownedIdentity: ownedIdentity) + .postOnBackgroundQueue(within: notificationDelegate) + } + + // Return the new state + + return ServerQueryProcessedState() + + } + + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocol.swift index a54d76f3..76798a46 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,9 +27,9 @@ public struct DownloadIdentityPhotoChildProtocol: ConcreteCryptoProtocol { static let logCategory = "DownloadIdentityPhotoChildProtocol" - static let id = CryptoProtocolId.DownloadIdentityPhoto + static let id = CryptoProtocolId.downloadIdentityPhoto - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.PhotoDownloaded, StateId.Cancelled] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.photoDownloaded, StateId.cancelled] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState @@ -60,5 +60,4 @@ public struct DownloadIdentityPhotoChildProtocol: ConcreteCryptoProtocol { return StepId.allCases } - } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolMessages.swift index fc7f5ac3..04819002 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolStates.swift index 1219fd17..b5356d95 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,17 +30,17 @@ extension DownloadIdentityPhotoChildProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 - case DownloadingPhoto = 1 - case PhotoDownloaded = 2 - case Cancelled = 3 + case initialState = 0 + case downloadingPhoto = 1 + case photoDownloaded = 2 + case cancelled = 3 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .DownloadingPhoto : return DownloadingPhotoState.self - case .PhotoDownloaded : return PhotoDownloadedState.self - case .Cancelled : return CancelledState.self + case .initialState : return ConcreteProtocolInitialState.self + case .downloadingPhoto : return DownloadingPhotoState.self + case .photoDownloaded : return PhotoDownloadedState.self + case .cancelled : return CancelledState.self } } } @@ -49,7 +49,7 @@ extension DownloadIdentityPhotoChildProtocol { struct DownloadingPhotoState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.DownloadingPhoto + let id: ConcreteProtocolStateId = StateId.downloadingPhoto let contactIdentity: ObvCryptoIdentity let contactIdentityDetailsElements: IdentityDetailsElements @@ -78,7 +78,7 @@ extension DownloadIdentityPhotoChildProtocol { struct PhotoDownloadedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.PhotoDownloaded + let id: ConcreteProtocolStateId = StateId.photoDownloaded func obvEncode() -> ObvEncoded { return 0.obvEncode() } @@ -93,7 +93,7 @@ extension DownloadIdentityPhotoChildProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) throws {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolSteps.swift index 2988ce3e..103b92de 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/DownloadIdentityPhotoProtocol/DownloadIdentityPhotoChildProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -31,17 +31,17 @@ extension DownloadIdentityPhotoChildProtocol { enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case QueryServer = 0 - case DownloadingPhoto = 1 + case queryServer = 0 + case downloadingPhoto = 1 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .QueryServer: + case .queryServer: let step = QueryServerStep(from: concreteProtocol, and: receivedMessage) return step - case .DownloadingPhoto: + case .downloadingPhoto: let step = ProcessPhotoStep(from: concreteProtocol, and: receivedMessage) return step } @@ -82,7 +82,7 @@ extension DownloadIdentityPhotoChildProtocol { let concreteMessage = ServerGetPhotoMessage(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.getUserData(of: receivedMessage.contactIdentity, label: label) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return DownloadingPhotoState(contactIdentity: receivedMessage.contactIdentity, contactIdentityDetailsElements: receivedMessage.contactIdentityDetailsElements) } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocol.swift index 8c8effa1..1bcce259 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,7 +29,7 @@ public struct FullRatchetProtocol: ConcreteCryptoProtocol { static let logCategory = "FullRatchetProtocol" - static let id = CryptoProtocolId.FullRatchet + static let id = CryptoProtocolId.fullRatchet private static let errorDomain = "FullRatchetProtocol" @@ -38,7 +38,7 @@ public struct FullRatchetProtocol: ConcreteCryptoProtocol { return NSError(domain: errorDomain, code: 0, userInfo: userInfo) } - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.FullRatchetDone, StateId.Cancelled] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.fullRatchetDone, StateId.cancelled] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState @@ -65,17 +65,10 @@ public struct FullRatchetProtocol: ConcreteCryptoProtocol { return MessageId(rawValue: rawValue) } - static let allStepIds: [ConcreteProtocolStepId] = [ - StepId.AliceSendEphemeralKey, - StepId.AliceResendEphemeralKeyFromAliceWaitingForK1State, - StepId.AliceResendEphemeralKeyFromAliceWaitingForAckState, - StepId.BobSendEphemeralKeyAndK1FromInitialState, - StepId.BobSendEphemeralKeyAndK1BobWaitingForK2State, - StepId.AliceRecoverK1AndSendK2, - StepId.BobRecoverK2ToUpdateReceiveSeedAndSendAck, - StepId.AliceUpdateSendSeed, - ] - + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } + static func computeProtocolUid(aliceIdentity: ObvCryptoIdentity, bobIdentity: ObvCryptoIdentity, aliceDeviceUid: UID, bobDeviceUid: UID) throws -> UID { guard let seed1 = Seed(with: aliceIdentity.getIdentity()) else { throw makeError(message: "Could not compute protocol uid (seed1 error)") } guard let seed2 = Seed(with: bobIdentity.getIdentity()) else { throw makeError(message: "Could not compute protocol uid (seed2 error)") } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolMessages.swift index dad21123..4f80abd4 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,19 +27,19 @@ import ObvCrypto extension FullRatchetProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case AliceEphemeralKey = 1 - case BobEphemeralKeyAndK1 = 2 - case AliceK2 = 3 - case BobAck = 4 + case initial = 0 + case aliceEphemeralKey = 1 + case bobEphemeralKeyAndK1 = 2 + case aliceK2 = 3 + case bobAck = 4 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .Initial : return InitialMessage.self - case .AliceEphemeralKey : return AliceEphemeralKeyMessage.self - case .BobEphemeralKeyAndK1 : return BobEphemeralKeyAndK1Message.self - case .AliceK2 : return AliceK2Message.self - case .BobAck : return BobAckMessage.self + case .initial : return InitialMessage.self + case .aliceEphemeralKey : return AliceEphemeralKeyMessage.self + case .bobEphemeralKeyAndK1 : return BobEphemeralKeyAndK1Message.self + case .aliceK2 : return AliceK2Message.self + case .bobAck : return BobAckMessage.self } } @@ -49,7 +49,7 @@ extension FullRatchetProtocol { struct InitialMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Initial + let id: ConcreteProtocolMessageId = MessageId.initial let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -81,7 +81,7 @@ extension FullRatchetProtocol { struct AliceEphemeralKeyMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AliceEphemeralKey + let id: ConcreteProtocolMessageId = MessageId.aliceEphemeralKey let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -117,7 +117,7 @@ extension FullRatchetProtocol { struct BobEphemeralKeyAndK1Message: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.BobEphemeralKeyAndK1 + let id: ConcreteProtocolMessageId = MessageId.bobEphemeralKeyAndK1 let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -156,7 +156,7 @@ extension FullRatchetProtocol { struct AliceK2Message: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AliceK2 + let id: ConcreteProtocolMessageId = MessageId.aliceK2 let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -191,7 +191,7 @@ extension FullRatchetProtocol { struct BobAckMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.BobAck + let id: ConcreteProtocolMessageId = MessageId.bobAck let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolStates.swift index c4af39cb..b39d983d 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -28,21 +28,21 @@ extension FullRatchetProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 - case AliceWaitingForK1 = 1 - case BobWaitingForK2 = 2 - case AliceWaitingForAck = 3 - case FullRatchetDone = 4 - case Cancelled = 5 + case initialState = 0 + case aliceWaitingForK1 = 1 + case bobWaitingForK2 = 2 + case aliceWaitingForAck = 3 + case fullRatchetDone = 4 + case cancelled = 5 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .AliceWaitingForK1 : return AliceWaitingForK1State.self - case .BobWaitingForK2 : return BobWaitingForK2State.self - case .AliceWaitingForAck : return AliceWaitingForAckState.self - case .FullRatchetDone : return FullRatchetDoneState.self - case .Cancelled : return CancelledState.self + case .initialState : return ConcreteProtocolInitialState.self + case .aliceWaitingForK1 : return AliceWaitingForK1State.self + case .bobWaitingForK2 : return BobWaitingForK2State.self + case .aliceWaitingForAck : return AliceWaitingForAckState.self + case .fullRatchetDone : return FullRatchetDoneState.self + case .cancelled : return CancelledState.self } } @@ -51,7 +51,7 @@ extension FullRatchetProtocol { struct AliceWaitingForK1State: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.AliceWaitingForK1 + let id: ConcreteProtocolStateId = StateId.aliceWaitingForK1 let contactIdentity: ObvCryptoIdentity let contactDeviceUid: UID @@ -83,7 +83,7 @@ extension FullRatchetProtocol { struct BobWaitingForK2State: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.BobWaitingForK2 + let id: ConcreteProtocolStateId = StateId.bobWaitingForK2 let contactIdentity: ObvCryptoIdentity let contactDeviceUid: UID @@ -118,7 +118,7 @@ extension FullRatchetProtocol { struct AliceWaitingForAckState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.AliceWaitingForAck + let id: ConcreteProtocolStateId = StateId.aliceWaitingForAck let contactIdentity: ObvCryptoIdentity let contactDeviceUid: UID @@ -149,7 +149,7 @@ extension FullRatchetProtocol { struct FullRatchetDoneState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.FullRatchetDone + let id: ConcreteProtocolStateId = StateId.fullRatchetDone init(_: ObvEncoded) {} @@ -162,7 +162,7 @@ extension FullRatchetProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolSteps.swift index 704e01e4..c72f99bd 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/FullRatchetProtocol/FullRatchetProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,27 +30,27 @@ import OlvidUtils extension FullRatchetProtocol { - enum StepId: Int, ConcreteProtocolStepId { + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case AliceSendEphemeralKey = 0 // Normal path - case AliceResendEphemeralKeyFromAliceWaitingForK1State = 1 - case AliceResendEphemeralKeyFromAliceWaitingForAckState = 2 - case BobSendEphemeralKeyAndK1FromInitialState = 3 // Normal path - case BobSendEphemeralKeyAndK1BobWaitingForK2State = 4 - case AliceRecoverK1AndSendK2 = 5 // Normal path - case BobRecoverK2ToUpdateReceiveSeedAndSendAck = 6 - case AliceUpdateSendSeed = 7 + case aliceSendEphemeralKey = 0 // Normal path + case aliceResendEphemeralKeyFromAliceWaitingForK1State = 1 + case aliceResendEphemeralKeyFromAliceWaitingForAckState = 2 + case bobSendEphemeralKeyAndK1FromInitialState = 3 // Normal path + case bobSendEphemeralKeyAndK1BobWaitingForK2State = 4 + case aliceRecoverK1AndSendK2 = 5 // Normal path + case bobRecoverK2ToUpdateReceiveSeedAndSendAck = 6 + case aliceUpdateSendSeed = 7 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .AliceSendEphemeralKey: return AliceSendEphemeralKeyStep(from: concreteProtocol, and: receivedMessage) - case .AliceResendEphemeralKeyFromAliceWaitingForK1State: return AliceResendEphemeralKeyFromAliceWaitingForK1StateStep(from: concreteProtocol, and: receivedMessage) - case .AliceResendEphemeralKeyFromAliceWaitingForAckState: return AliceResendEphemeralKeyFromAliceWaitingForAckStateStep(from: concreteProtocol, and: receivedMessage) - case .BobSendEphemeralKeyAndK1FromInitialState: return BobSendEphemeralKeyAndK1FromInitialStateStep(from: concreteProtocol, and: receivedMessage) - case .BobSendEphemeralKeyAndK1BobWaitingForK2State: return BobSendEphemeralKeyAndK1BobWaitingForK2StateStep(from: concreteProtocol, and: receivedMessage) - case .AliceRecoverK1AndSendK2: return AliceRecoverK1AndSendK2Step(from: concreteProtocol, and: receivedMessage) - case .BobRecoverK2ToUpdateReceiveSeedAndSendAck: return BobRecoverK2ToUpdateReceiveSeedAndSendAckStep(from: concreteProtocol, and: receivedMessage) - case .AliceUpdateSendSeed: return AliceUpdateSendSeedStep(from: concreteProtocol, and: receivedMessage) + case .aliceSendEphemeralKey: return AliceSendEphemeralKeyStep(from: concreteProtocol, and: receivedMessage) + case .aliceResendEphemeralKeyFromAliceWaitingForK1State: return AliceResendEphemeralKeyFromAliceWaitingForK1StateStep(from: concreteProtocol, and: receivedMessage) + case .aliceResendEphemeralKeyFromAliceWaitingForAckState: return AliceResendEphemeralKeyFromAliceWaitingForAckStateStep(from: concreteProtocol, and: receivedMessage) + case .bobSendEphemeralKeyAndK1FromInitialState: return BobSendEphemeralKeyAndK1FromInitialStateStep(from: concreteProtocol, and: receivedMessage) + case .bobSendEphemeralKeyAndK1BobWaitingForK2State: return BobSendEphemeralKeyAndK1BobWaitingForK2StateStep(from: concreteProtocol, and: receivedMessage) + case .aliceRecoverK1AndSendK2: return AliceRecoverK1AndSendK2Step(from: concreteProtocol, and: receivedMessage) + case .bobRecoverK2ToUpdateReceiveSeedAndSendAck: return BobRecoverK2ToUpdateReceiveSeedAndSendAckStep(from: concreteProtocol, and: receivedMessage) + case .aliceUpdateSendSeed: return AliceUpdateSendSeedStep(from: concreteProtocol, and: receivedMessage) } } @@ -100,7 +100,7 @@ extension FullRatchetProtocol { contactEphemeralPublicKey: ephemeralPublicKey, restartCounter: restartCounter) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post AliceEphemeralKey message", log: log, type: .fault) return CancelledState() @@ -172,7 +172,7 @@ extension FullRatchetProtocol { contactEphemeralPublicKey: ephemeralPublicKey, restartCounter: restartCounter) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post AliceEphemeralKey message", log: log, type: .fault) return CancelledState() @@ -244,7 +244,7 @@ extension FullRatchetProtocol { contactEphemeralPublicKey: ephemeralPublicKey, restartCounter: restartCounter) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post AliceEphemeralKey message", log: log, type: .fault) return CancelledState() @@ -307,7 +307,7 @@ extension FullRatchetProtocol { c1: c1, restartCounter: restartCounter) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post BobEphemeralKeyAndK1Message message", log: log, type: .fault) return CancelledState() @@ -377,7 +377,7 @@ extension FullRatchetProtocol { c1: c1, restartCounter: restartCounter) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post BobEphemeralKeyAndK1Message message", log: log, type: .fault) return CancelledState() @@ -468,7 +468,7 @@ extension FullRatchetProtocol { let coreMessage = getCoreMessage(for: .ObliviousChannel(to: remoteIdentity, remoteDeviceUids: [remoteDeviceUid], fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true), partOfFullRatchetProtocolOfTheSendSeed: true) let concreteProtocolMessage = AliceK2Message(coreProtocolMessage: coreMessage, c2: c2, restartCounter: localRestartCounter) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post BobEphemeralKeyAndK1Message message", log: log, type: .fault) return CancelledState() @@ -566,7 +566,7 @@ extension FullRatchetProtocol { let coreMessage = getCoreMessage(for: .ObliviousChannel(to: remoteIdentity, remoteDeviceUids: [remoteDeviceUid], fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true), partOfFullRatchetProtocolOfTheSendSeed: false) let concreteProtocolMessage = BobAckMessage(coreProtocolMessage: coreMessage, restartCounter: localRestartCounter) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post BobAckMessage message", log: log, type: .fault) return CancelledState() diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocol.swift index 19478dce..c0bf4151 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,9 +27,9 @@ public struct DownloadGroupPhotoChildProtocol: ConcreteCryptoProtocol { static let logCategory = "DownloadGroupPhotoChildProtocol" - static let id = CryptoProtocolId.DownloadGroupPhoto + static let id = CryptoProtocolId.downloadGroupPhoto - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.PhotoDownloaded, StateId.Cancelled] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.photoDownloaded, StateId.cancelled] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolMessages.swift index 824ea3b6..9e5d0b1a 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolStates.swift index 8d15f3de..48a2e065 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,17 +29,17 @@ extension DownloadGroupPhotoChildProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 - case DownloadingPhoto = 1 - case PhotoDownloaded = 2 - case Cancelled = 3 + case initialState = 0 + case downloadingPhoto = 1 + case photoDownloaded = 2 + case cancelled = 3 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .DownloadingPhoto : return DownloadingPhotoState.self - case .PhotoDownloaded : return PhotoDownloadedState.self - case .Cancelled : return CancelledState.self + case .initialState : return ConcreteProtocolInitialState.self + case .downloadingPhoto : return DownloadingPhotoState.self + case .photoDownloaded : return PhotoDownloadedState.self + case .cancelled : return CancelledState.self } } } @@ -48,7 +48,7 @@ extension DownloadGroupPhotoChildProtocol { struct DownloadingPhotoState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.DownloadingPhoto + let id: ConcreteProtocolStateId = StateId.downloadingPhoto let groupInformation: GroupInformation @@ -70,7 +70,7 @@ extension DownloadGroupPhotoChildProtocol { struct PhotoDownloadedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.PhotoDownloaded + let id: ConcreteProtocolStateId = StateId.photoDownloaded func obvEncode() -> ObvEncoded { return 0.obvEncode() } @@ -85,7 +85,7 @@ extension DownloadGroupPhotoChildProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) throws {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolSteps.swift index 6b8bc69d..9f750a53 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/DownloadGroupPhotoProtocol/DownloadGroupPhotoChildProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -31,16 +31,16 @@ extension DownloadGroupPhotoChildProtocol { enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case QueryServer = 0 - case DownloadingPhoto = 1 + case queryServer = 0 + case downloadingPhoto = 1 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .QueryServer: + case .queryServer: let step = QueryServerStep(from: concreteProtocol, and: receivedMessage) return step - case .DownloadingPhoto: + case .downloadingPhoto: let step = ProcessPhotoStep(from: concreteProtocol, and: receivedMessage) return step } @@ -80,7 +80,7 @@ extension DownloadGroupPhotoChildProtocol { let concreteMessage = ServerGetPhotoMessage.init(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.getUserData(of: receivedMessage.groupInformation.groupOwnerIdentity, label: label) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return DownloadingPhotoState(groupInformation: receivedMessage.groupInformation) } @@ -129,9 +129,20 @@ extension DownloadGroupPhotoChildProtocol { } if groupInformation.groupOwnerIdentity == ownedIdentity { - try identityDelegate.updateDownloadedPhotoOfContactGroupOwned(ownedIdentity: ownedIdentity, groupUid: groupInformation.groupUid, version: groupInformation.groupDetailsElements.version, photo: photo, within: obvContext) + try identityDelegate.updateDownloadedPhotoOfContactGroupOwned( + ownedIdentity: ownedIdentity, + groupUid: groupInformation.groupUid, + version: groupInformation.groupDetailsElements.version, + photo: photo, + within: obvContext) } else { - try identityDelegate.updateDownloadedPhotoOfContactGroupJoined(ownedIdentity: ownedIdentity, groupOwner: groupInformation.groupOwnerIdentity, groupUid: groupInformation.groupUid, version: groupInformation.groupDetailsElements.version, photo: photo, within: obvContext) + try identityDelegate.updateDownloadedPhotoOfContactGroupJoined( + ownedIdentity: ownedIdentity, + groupOwner: groupInformation.groupOwnerIdentity, + groupUid: groupInformation.groupUid, + version: groupInformation.groupDetailsElements.version, + photo: photo, + within: obvContext) } let downloadedUserData = delegateManager.downloadedUserData diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocol.swift index d54fc713..ad0bcef0 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -28,12 +28,12 @@ public struct GroupInvitationProtocol: ConcreteCryptoProtocol { static let logCategory = "GroupInvitationProtocol" - static let id = CryptoProtocolId.GroupInvitation + static let id = CryptoProtocolId.groupInvitation - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.InvitationSent, - StateId.ResponseSent, - StateId.ResponseReceived, - StateId.Cancelled] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.invitationSent, + StateId.responseSent, + StateId.responseReceived, + StateId.cancelled] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolMessages.swift index 11704ee8..82416df2 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,22 +29,22 @@ extension GroupInvitationProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case GroupInvitation = 1 - case DialogAcceptGroupInvitation = 2 - case InvitationResponse = 3 - case PropagateInvitationResponse = 4 + case initial = 0 + case groupInvitation = 1 + case dialogAcceptGroupInvitation = 2 + case invitationResponse = 3 + case propagateInvitationResponse = 4 // We remove the TrustLevelIncreased case on 2022-01-27 when implementing the two-level address bool - case DialogInformative = 6 + case dialogInformative = 6 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .Initial : return InitialMessage.self - case .GroupInvitation : return GroupInvitationMessage.self - case .DialogAcceptGroupInvitation : return DialogAcceptGroupInvitationMessage.self - case .InvitationResponse : return InvitationResponseMessage.self - case .PropagateInvitationResponse : return PropagateInvitationResponseMessage.self - case .DialogInformative : return DialogInformativeMessage.self + case .initial : return InitialMessage.self + case .groupInvitation : return GroupInvitationMessage.self + case .dialogAcceptGroupInvitation : return DialogAcceptGroupInvitationMessage.self + case .invitationResponse : return InvitationResponseMessage.self + case .propagateInvitationResponse : return PropagateInvitationResponseMessage.self + case .dialogInformative : return DialogInformativeMessage.self } } } @@ -54,7 +54,7 @@ extension GroupInvitationProtocol { struct InitialMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Initial + let id: ConcreteProtocolMessageId = MessageId.initial let coreProtocolMessage: CoreProtocolMessage let contactIdentity: ObvCryptoIdentity @@ -94,7 +94,7 @@ extension GroupInvitationProtocol { struct GroupInvitationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.GroupInvitation + let id: ConcreteProtocolMessageId = MessageId.groupInvitation let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -130,7 +130,7 @@ extension GroupInvitationProtocol { struct DialogAcceptGroupInvitationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DialogAcceptGroupInvitation + let id: ConcreteProtocolMessageId = MessageId.dialogAcceptGroupInvitation let coreProtocolMessage: CoreProtocolMessage let dialogUuid: UUID // Only used when this protocol receives this message @@ -163,7 +163,7 @@ extension GroupInvitationProtocol { struct InvitationResponseMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InvitationResponse + let id: ConcreteProtocolMessageId = MessageId.invitationResponse let coreProtocolMessage: CoreProtocolMessage let groupUid: UID @@ -196,7 +196,7 @@ extension GroupInvitationProtocol { struct PropagateInvitationResponseMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateInvitationResponse + let id: ConcreteProtocolMessageId = MessageId.propagateInvitationResponse let coreProtocolMessage: CoreProtocolMessage let invitationAccepted: Bool @@ -225,7 +225,7 @@ extension GroupInvitationProtocol { struct DialogInformativeMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DialogInformative + let id: ConcreteProtocolMessageId = MessageId.dialogInformative let coreProtocolMessage: CoreProtocolMessage var encodedInputs: [ObvEncoded] { return [] } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolStates.swift index 4c98b3b7..ce2f6071 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,21 +29,21 @@ extension GroupInvitationProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 - case InvitationSent = 1 - case InvitationReceived = 2 - case ResponseSent = 3 - case ResponseReceived = 4 - case Cancelled = 5 + case initialState = 0 + case invitationSent = 1 + case invitationReceived = 2 + case responseSent = 3 + case responseReceived = 4 + case cancelled = 5 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .InvitationSent : return InvitationSentState.self - case .InvitationReceived : return InvitationReceivedState.self - case .ResponseSent : return ResponseSentState.self - case .ResponseReceived : return ResponseReceivedState.self - case .Cancelled : return CancelledState.self + case .initialState : return ConcreteProtocolInitialState.self + case .invitationSent : return InvitationSentState.self + case .invitationReceived : return InvitationReceivedState.self + case .responseSent : return ResponseSentState.self + case .responseReceived : return ResponseReceivedState.self + case .cancelled : return CancelledState.self } } } @@ -53,7 +53,7 @@ extension GroupInvitationProtocol { struct InvitationSentState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.InvitationSent + let id: ConcreteProtocolStateId = StateId.invitationSent init(_: ObvEncoded) {} @@ -68,7 +68,7 @@ extension GroupInvitationProtocol { struct InvitationReceivedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.InvitationReceived + let id: ConcreteProtocolStateId = StateId.invitationReceived let groupInformation: GroupInformation let dialogUuid: UUID @@ -102,7 +102,7 @@ extension GroupInvitationProtocol { struct ResponseSentState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.ResponseSent + let id: ConcreteProtocolStateId = StateId.responseSent init(_: ObvEncoded) {} @@ -117,7 +117,7 @@ extension GroupInvitationProtocol { struct ResponseReceivedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.ResponseReceived + let id: ConcreteProtocolStateId = StateId.responseReceived init(_: ObvEncoded) {} @@ -132,7 +132,7 @@ extension GroupInvitationProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) throws {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolSteps.swift index 7b74595a..718c005e 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupInvitationProtocol/GroupInvitationProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,30 +30,30 @@ extension GroupInvitationProtocol { enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case SendInvitation = 0 - case ProcessInvitation = 1 - case ProcessInvitationDialogResponse = 2 + case sendInvitation = 0 + case processInvitation = 1 + case processInvitationDialogResponse = 2 // Case ReCheckTrustLevel = 3 // Removed on the 2022-01-27 when implementing two-level address book - case ProcessPropagatedInvitationResponse = 4 - case ProcessResponse = 5 + case processPropagatedInvitationResponse = 4 + case processResponse = 5 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .SendInvitation: + case .sendInvitation: let step = SendInvitationStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessInvitation: + case .processInvitation: let step = ProcessInvitationStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessInvitationDialogResponse: + case .processInvitationDialogResponse: let step = ProcessInvitationDialogResponseStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessPropagatedInvitationResponse: + case .processPropagatedInvitationResponse: let step = ProcessPropagatedInvitationResponseStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessResponse: + case .processResponse: let step = ProcessResponseStep(from: concreteProtocol, and: receivedMessage) return step } @@ -119,7 +119,7 @@ extension GroupInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // Return the new state @@ -232,7 +232,7 @@ extension GroupInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Propagate the accept to other owned devices @@ -248,7 +248,7 @@ extension GroupInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -266,7 +266,7 @@ extension GroupInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -321,7 +321,7 @@ extension GroupInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Check that the group owner is an active contact @@ -339,9 +339,25 @@ extension GroupInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } + // Propagate the response to other owned devices + + guard let numberOfOtherDevicesOfOwnedIdentity = try? identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext).count else { + os_log("Could not determine whether the owned identity has other (remote) devices", log: log, type: .fault) + return CancelledState() + } + + if numberOfOtherDevicesOfOwnedIdentity > 0 { + let coreMessage = getCoreMessage(for: .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity(ownedIdentity: ownedIdentity)) + let concreteProtocolMessage = PropagateInvitationResponseMessage(coreProtocolMessage: coreMessage, invitationAccepted: invitationAccepted) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + // If the invitation was not accepted, we are done. guard invitationAccepted else { @@ -409,7 +425,7 @@ extension GroupInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Make sure the group owner is an active contact @@ -495,7 +511,7 @@ extension GroupInvitationProtocol { let protocolInstanceUidForGroupManagement = dummyGroupInformation.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([remoteIdentity]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUidForGroupManagement) let concreteProtocolMessage = GroupManagementProtocol.KickFromGroupMessage(coreProtocolMessage: coreMessage, groupInformation: dummyGroupInformation) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -503,7 +519,7 @@ extension GroupInvitationProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not notify member that she has been kicked out from group that could not be found", log: log, type: .error) // Continue @@ -531,7 +547,7 @@ extension GroupInvitationProtocol { let protocolInstanceUidForGroupManagement = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([remoteIdentity]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUidForGroupManagement) let concreteProtocolMessage = GroupManagementProtocol.KickFromGroupMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -539,7 +555,7 @@ extension GroupInvitationProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not notify member that she has been kicked out from group owned", log: log, type: .error) // Continue @@ -565,7 +581,7 @@ extension GroupInvitationProtocol { let protocolInstanceUidForGroupManagement = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUidForGroupManagement) let concreteProtocolMessage = GroupManagementProtocol.TriggerUpdateMembersMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation, memberIdentity: remoteIdentity) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -573,7 +589,7 @@ extension GroupInvitationProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not send the latest version of the group members to a member if a group owned", log: log, type: .error) assertionFailure() @@ -610,7 +626,7 @@ extension GroupInvitationProtocol { let protocolInstanceUidForGroupManagement = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([remoteIdentity]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUidForGroupManagement) let concreteProtocolMessage = GroupManagementProtocol.KickFromGroupMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -618,7 +634,7 @@ extension GroupInvitationProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not notify member that she has been kicked out from group owned", log: log, type: .error) // Continue @@ -702,14 +718,14 @@ extension GroupInvitationProtocol { let childProtocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = GroupManagementProtocol.GroupMembersChangedTriggerMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation) guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocol.swift index 2ea197db..3234dfdb 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -28,10 +28,10 @@ public struct GroupManagementProtocol: ConcreteCryptoProtocol { static let logCategory = "GroupManagementProtocol" - static let id = CryptoProtocolId.GroupManagement + static let id = CryptoProtocolId.groupManagement - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Final, - StateId.Cancelled] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.final, + StateId.cancelled] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolMessages.swift index 3d00393a..0c47ed3c 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,37 +29,47 @@ extension GroupManagementProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case InitiateGroupCreation = 0 - case PropagateGroupCreation = 1 - case GroupMembersChangedTrigger = 2 - case NewMembers = 3 - case AddGroupMembers = 4 - case RemoveGroupMembers = 5 - case KickFromGroup = 6 - case NotifyGroupLeft = 7 - case LeaveGroupJoined = 10 - case InitiateGroupMembersQuery = 11 - case QueryGroupMembers = 12 - case TriggerReinvite = 13 - case TriggerUpdateMembers = 14 - case UploadGroupPhoto = 15 + case initiateGroupCreation = 0 + case propagateGroupCreation = 1 + case groupMembersChangedTrigger = 2 + case newMembers = 3 + case addGroupMembers = 4 + case removeGroupMembers = 5 + case kickFromGroup = 6 + case notifyGroupLeft = 7 + // case reinvitePendingMember = 8 // Not implemented under iOS + case disbandGroup = 9 + case leaveGroupJoined = 10 + case initiateGroupMembersQuery = 11 + case queryGroupMembers = 12 + case triggerReinvite = 13 + case triggerUpdateMembers = 14 + case uploadGroupPhoto = 15 + case propagateReinvitePendingMember = 16 + case propagateDisbandGroup = 17 + case propagateLeaveGroup = 18 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .InitiateGroupCreation : return InitiateGroupCreationMessage.self - case .PropagateGroupCreation : return PropagateGroupCreationMessage.self - case .GroupMembersChangedTrigger : return GroupMembersChangedTriggerMessage.self - case .NewMembers : return NewMembersMessage.self - case .AddGroupMembers : return AddGroupMembersMessage.self - case .RemoveGroupMembers : return RemoveGroupMembersMessage.self - case .KickFromGroup : return KickFromGroupMessage.self - case .LeaveGroupJoined : return LeaveGroupJoinedMessage.self - case .NotifyGroupLeft : return NotifyGroupLeftMessage.self - case .InitiateGroupMembersQuery : return InitiateGroupMembersQueryMessage.self - case .QueryGroupMembers : return QueryGroupMembersMessage.self - case .TriggerReinvite : return TriggerReinviteMessage.self - case .TriggerUpdateMembers : return TriggerUpdateMembersMessage.self - case .UploadGroupPhoto : return UploadGroupPhotoMessage.self + case .initiateGroupCreation : return InitiateGroupCreationMessage.self + case .propagateGroupCreation : return PropagateGroupCreationMessage.self + case .groupMembersChangedTrigger : return GroupMembersChangedTriggerMessage.self + case .newMembers : return NewMembersMessage.self + case .addGroupMembers : return AddGroupMembersMessage.self + case .removeGroupMembers : return RemoveGroupMembersMessage.self + case .kickFromGroup : return KickFromGroupMessage.self + case .leaveGroupJoined : return LeaveGroupJoinedMessage.self + case .notifyGroupLeft : return NotifyGroupLeftMessage.self + // case .reinvitePendingMember : return ReinvitePendingMemberMessage.self + case .disbandGroup : return DisbandGroupMessage.self + case .initiateGroupMembersQuery : return InitiateGroupMembersQueryMessage.self + case .queryGroupMembers : return QueryGroupMembersMessage.self + case .triggerReinvite : return TriggerReinviteMessage.self + case .triggerUpdateMembers : return TriggerUpdateMembersMessage.self + case .uploadGroupPhoto : return UploadGroupPhotoMessage.self + case .propagateReinvitePendingMember : return PropagateReinvitePendingMemberMessage.self + case .propagateDisbandGroup : return PropagateDisbandGroupMessage.self + case .propagateLeaveGroup : return PropagateLeaveGroupMessage.self } } } @@ -69,7 +79,7 @@ extension GroupManagementProtocol { struct InitiateGroupCreationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InitiateGroupCreation + let id: ConcreteProtocolMessageId = MessageId.initiateGroupCreation let coreProtocolMessage: CoreProtocolMessage let groupInformationWithPhoto: GroupInformationWithPhoto @@ -103,7 +113,7 @@ extension GroupManagementProtocol { struct PropagateGroupCreationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateGroupCreation + let id: ConcreteProtocolMessageId = MessageId.propagateGroupCreation let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -139,7 +149,7 @@ extension GroupManagementProtocol { struct GroupMembersChangedTriggerMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.GroupMembersChangedTrigger + let id: ConcreteProtocolMessageId = MessageId.groupMembersChangedTrigger let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -169,7 +179,7 @@ extension GroupManagementProtocol { struct NewMembersMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.NewMembers + let id: ConcreteProtocolMessageId = MessageId.newMembers let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -214,7 +224,7 @@ extension GroupManagementProtocol { struct AddGroupMembersMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AddGroupMembers + let id: ConcreteProtocolMessageId = MessageId.addGroupMembers let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -249,7 +259,7 @@ extension GroupManagementProtocol { struct RemoveGroupMembersMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.RemoveGroupMembers + let id: ConcreteProtocolMessageId = MessageId.removeGroupMembers let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -284,7 +294,7 @@ extension GroupManagementProtocol { struct KickFromGroupMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.KickFromGroup + let id: ConcreteProtocolMessageId = MessageId.kickFromGroup let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -313,7 +323,7 @@ extension GroupManagementProtocol { struct LeaveGroupJoinedMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.LeaveGroupJoined + let id: ConcreteProtocolMessageId = MessageId.leaveGroupJoined let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -342,7 +352,7 @@ extension GroupManagementProtocol { struct NotifyGroupLeftMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.NotifyGroupLeft + let id: ConcreteProtocolMessageId = MessageId.notifyGroupLeft let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -367,11 +377,172 @@ extension GroupManagementProtocol { } + // MARK: - ReinvitePendingMemberMessage (not implemented under iOS) + +// struct ReinvitePendingMemberMessage: ConcreteProtocolMessage { +// +// let id: ConcreteProtocolMessageId = MessageId.reinvitePendingMember +// let coreProtocolMessage: CoreProtocolMessage +// +// let groupInformation: GroupInformation +// let pendingMemberIdentity: ObvCryptoIdentity +// +// var encodedInputs: [ObvEncoded] { +// return [groupInformation.obvEncode(), pendingMemberIdentity.obvEncode()] +// } +// +// // Initializers +// +// init(with message: ReceivedMessage) throws { +// self.coreProtocolMessage = CoreProtocolMessage(with: message) +// guard message.encodedInputs.count == 2 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded inputs") } +// self.groupInformation = try message.encodedInputs[0].obvDecode() +// let rawPendingMemberIdentity: Data = try message.encodedInputs[1].obvDecode() +// guard let cryptoId = ObvCryptoIdentity(from: rawPendingMemberIdentity) else { assertionFailure(); throw ObvError.couldNotDecodeIdentity } +// self.pendingMemberIdentity = cryptoId +// } +// +// init(coreProtocolMessage: CoreProtocolMessage, groupInformation: GroupInformation, pendingMemberIdentity: ObvCryptoIdentity) { +// self.coreProtocolMessage = coreProtocolMessage +// self.groupInformation = groupInformation +// self.pendingMemberIdentity = pendingMemberIdentity +// } +// +// enum ObvError: Error { +// case couldNotDecodeIdentity +// } +// +// } + + + // MARK: - DisbandGroupMessage + + struct DisbandGroupMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.disbandGroup + let coreProtocolMessage: CoreProtocolMessage + + let groupInformation: GroupInformation + + var encodedInputs: [ObvEncoded] { + return [groupInformation.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded inputs") } + self.groupInformation = try message.encodedInputs[0].obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, groupInformation: GroupInformation) { + self.coreProtocolMessage = coreProtocolMessage + self.groupInformation = groupInformation + } + + } + + + // MARK: - PropagateReinvitePendingMemberMessage + + struct PropagateReinvitePendingMemberMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.propagateReinvitePendingMember + let coreProtocolMessage: CoreProtocolMessage + + let groupInformation: GroupInformation + let pendingMemberIdentity: ObvCryptoIdentity + + var encodedInputs: [ObvEncoded] { + return [groupInformation.obvEncode(), pendingMemberIdentity.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 2 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded inputs") } + self.groupInformation = try message.encodedInputs[0].obvDecode() + let rawPendingMemberIdentity: Data = try message.encodedInputs[1].obvDecode() + guard let cryptoId = ObvCryptoIdentity(from: rawPendingMemberIdentity) else { assertionFailure(); throw ObvError.couldNotDecodeIdentity } + self.pendingMemberIdentity = cryptoId + } + + init(coreProtocolMessage: CoreProtocolMessage, groupInformation: GroupInformation, pendingMemberIdentity: ObvCryptoIdentity) { + self.coreProtocolMessage = coreProtocolMessage + self.groupInformation = groupInformation + self.pendingMemberIdentity = pendingMemberIdentity + } + + enum ObvError: Error { + case couldNotDecodeIdentity + } + + } + + + // MARK: - PropagateDisbandGroupMessage + + struct PropagateDisbandGroupMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.propagateDisbandGroup + let coreProtocolMessage: CoreProtocolMessage + + let groupInformation: GroupInformation + + var encodedInputs: [ObvEncoded] { + return [groupInformation.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded inputs") } + self.groupInformation = try message.encodedInputs[0].obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, groupInformation: GroupInformation) { + self.coreProtocolMessage = coreProtocolMessage + self.groupInformation = groupInformation + } + + } + + // MARK: PropagateLeaveGroupMessage + + struct PropagateLeaveGroupMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.propagateLeaveGroup + let coreProtocolMessage: CoreProtocolMessage + + let groupInformation: GroupInformation + + var encodedInputs: [ObvEncoded] { + return [groupInformation.obvEncode()] + } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded inputs") } + self.groupInformation = try message.encodedInputs[0].obvDecode() + } + + init(coreProtocolMessage: CoreProtocolMessage, groupInformation: GroupInformation) { + self.coreProtocolMessage = coreProtocolMessage + self.groupInformation = groupInformation + } + + } + // MARK: - InitiateGroupMembersQueryMessage struct InitiateGroupMembersQueryMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InitiateGroupMembersQuery + let id: ConcreteProtocolMessageId = MessageId.initiateGroupMembersQuery let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -400,7 +571,7 @@ extension GroupManagementProtocol { struct QueryGroupMembersMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.QueryGroupMembers + let id: ConcreteProtocolMessageId = MessageId.queryGroupMembers let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -429,7 +600,7 @@ extension GroupManagementProtocol { struct TriggerReinviteMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.TriggerReinvite + let id: ConcreteProtocolMessageId = MessageId.triggerReinvite let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -461,7 +632,7 @@ extension GroupManagementProtocol { struct TriggerUpdateMembersMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.TriggerUpdateMembers + let id: ConcreteProtocolMessageId = MessageId.triggerUpdateMembers let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation @@ -492,7 +663,7 @@ extension GroupManagementProtocol { struct UploadGroupPhotoMessage: ConcreteProtocolMessage { - var id: ConcreteProtocolMessageId = MessageId.UploadGroupPhoto + var id: ConcreteProtocolMessageId = MessageId.uploadGroupPhoto let coreProtocolMessage: CoreProtocolMessage let groupInformation: GroupInformation diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolStates.swift index 41af5aca..1c02eda2 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,15 +29,15 @@ extension GroupManagementProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 - case Final = 1 - case Cancelled = 9 + case initialState = 0 + case final = 1 + case cancelled = 9 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .Final : return FinalState.self - case .Cancelled : return CancelledState.self + case .initialState : return ConcreteProtocolInitialState.self + case .final : return FinalState.self + case .cancelled : return CancelledState.self } } } @@ -47,7 +47,7 @@ extension GroupManagementProtocol { struct FinalState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Final + let id: ConcreteProtocolStateId = StateId.final init(_: ObvEncoded) {} @@ -62,7 +62,7 @@ extension GroupManagementProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) throws {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolSteps.swift index f0b2f83c..b605e878 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV1Protocols/GroupManagementProtocol/GroupManagementProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,65 +30,86 @@ extension GroupManagementProtocol { enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case InitiateGroupCreation = 0 - case NotifyMembersChanged = 1 - case ProcessNewMembers = 2 - case AddGroupMembers = 3 - case RemoveGroupMembers = 4 - case GetKicked = 5 - case LeaveGroupJoined = 6 - case ProcessGroupLeft = 7 - case QueryGroupMembers = 8 - case SendGroupMember = 9 - case Reinvite = 10 - case UpdateMembers = 11 - - case NotifyMembersChangedAfterPhotoUploading = 100 // Copy of NotifyMembersChanged + case initiateGroupCreation = 0 + case notifyMembersChanged = 1 + case processNewMembers = 2 + case addGroupMembers = 3 + case removeGroupMembers = 4 + case getKicked = 5 + case leaveGroupJoined = 6 + case processGroupLeft = 7 + case queryGroupMembers = 8 + case sendGroupMember = 9 + case reinvite = 10 + case updateMembers = 11 + case disbandGroup = 12 + case processPropagateDisbandGroupMessage = 13 + case processPropagateGroupCreationMessage = 14 + case processPropagateLeaveGroupMessage = 15 + // For now, the ReinvitePendingMemberStep is not implemented + case processPropagateReinvitePendingMember = 17 + + case notifyMembersChangedAfterPhotoUploading = 100 // Copy of NotifyMembersChanged func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .InitiateGroupCreation: + case .initiateGroupCreation: let step = InitiateGroupCreationStep(from: concreteProtocol, and: receivedMessage) return step - case .NotifyMembersChanged: + case .notifyMembersChanged: let step = NotifyMembersChangedStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessNewMembers: + case .processNewMembers: let step = ProcessNewMembersStep(from: concreteProtocol, and: receivedMessage) return step - case .AddGroupMembers: + case .addGroupMembers: let step = AddGroupMembersStep(from: concreteProtocol, and: receivedMessage) return step - case .RemoveGroupMembers: + case .removeGroupMembers: let step = RemoveGroupMembersStep(from: concreteProtocol, and: receivedMessage) return step - case .GetKicked: + case .getKicked: let step = GetKickedStep(from: concreteProtocol, and: receivedMessage) return step - case .LeaveGroupJoined: + case .leaveGroupJoined: let step = LeaveGroupJoinedStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessGroupLeft: + case .processGroupLeft: let step = ProcessGroupLeftStep(from: concreteProtocol, and: receivedMessage) return step - case .QueryGroupMembers: + case .queryGroupMembers: let step = QueryGroupMembersStep(from: concreteProtocol, and: receivedMessage) return step - case .SendGroupMember: + case .sendGroupMember: let step = SendGroupMemberStep(from: concreteProtocol, and: receivedMessage) return step - case .Reinvite: + case .reinvite: let step = ReinviteStep(from: concreteProtocol, and: receivedMessage) return step - case .UpdateMembers: + case .updateMembers: let step = UpdateMembersStep(from: concreteProtocol, and: receivedMessage) return step - case .NotifyMembersChangedAfterPhotoUploading: + case .notifyMembersChangedAfterPhotoUploading: let step = NotifyMembersChangedAfterPhotoUploadingStep(from: concreteProtocol, and: receivedMessage) return step + case .disbandGroup: + let step = DisbandGroupStep(from: concreteProtocol, and: receivedMessage) + return step + case .processPropagateDisbandGroupMessage: + let step = ProcessPropagateDisbandGroupMessageStep(from: concreteProtocol, and: receivedMessage) + return step + case .processPropagateGroupCreationMessage: + let step = ProcessPropagateGroupCreationMessageStep(from: concreteProtocol, and: receivedMessage) + return step + case .processPropagateLeaveGroupMessage: + let step = ProcessPropagateLeaveGroupMessageStep(from: concreteProtocol, and: receivedMessage) + return step + case .processPropagateReinvitePendingMember: + let step = ProcessPropagateReinvitePendingMemberStep(from: concreteProtocol, and: receivedMessage) + return step } } } @@ -171,7 +192,7 @@ extension GroupManagementProtocol { let concreteMessage = GroupManagementProtocol.UploadGroupPhotoMessage.init(coreProtocolMessage: coreMessage, groupInformation: updatedGroupInformationWithPhoto.groupInformation) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.putUserData(label: photoServerLabel, dataURL: updatedPhotoURL, dataKey: photoServerKey) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Error: %{public}@", log: log, type: .error, error.localizedDescription) assertionFailure() @@ -188,18 +209,21 @@ extension GroupManagementProtocol { if numberOfOtherDevicesOfOwnedIdentity > 0 { let coreMessage = getCoreMessage(for: .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity(ownedIdentity: ownedIdentity)) - let concreteProtocolMessage = PropagateGroupCreationMessage(coreProtocolMessage: coreMessage, groupInformation: updatedGroupInformationWithPhoto.groupInformation, pendingGroupMembers: pendingGroupMembers) + let concreteProtocolMessage = PropagateGroupCreationMessage( + coreProtocolMessage: coreMessage, + groupInformation: updatedGroupInformationWithPhoto.groupInformation, + pendingGroupMembers: pendingGroupMembers) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Post an invitation to each group member by starting a child GroupInvitationProtocol for contactIdentity in pendingGroupMembers.map({ $0.cryptoIdentity }) { let childProtocolInstanceUid = UID.gen(with: prng) - let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .GroupInvitation, + let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .groupInvitation, otherProtocolInstanceUid: childProtocolInstanceUid) // We only pass *pending* group members to the initial message of the GroupInvitationProtocol since, at this point, there are no proper members yet let childProtocolInitialMessage = GroupInvitationProtocol.InitialMessage(coreProtocolMessage: coreMessage, @@ -210,7 +234,7 @@ extension GroupManagementProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -323,12 +347,23 @@ extension GroupManagementProtocol { // Get the group structure from database let groupStructureOrNil: GroupStructure? - do { - groupStructureOrNil = try identityDelegate.getGroupJoinedStructure(ownedIdentity: ownedIdentity, groupUid: newGroupInformation.groupUid, groupOwner: newGroupInformation.groupOwnerIdentity, within: obvContext) - } catch { - os_log("Could not access the group in database", log: log, type: .error) - return CancelledState() + + if remoteIdentity == ownedIdentity { + do { + groupStructureOrNil = try identityDelegate.getGroupOwnedStructure(ownedIdentity: ownedIdentity, groupUid: newGroupInformation.groupUid, within: obvContext) + } catch { + os_log("Could not access the group in database", log: log, type: .error) + return CancelledState() + } + } else { + do { + groupStructureOrNil = try identityDelegate.getGroupJoinedStructure(ownedIdentity: ownedIdentity, groupUid: newGroupInformation.groupUid, groupOwner: newGroupInformation.groupOwnerIdentity, within: obvContext) + } catch { + os_log("Could not access the group in database", log: log, type: .error) + return CancelledState() + } } + // If the group structure is nil, it means that we have not joined the group yet, which is not expected at this point. @@ -339,11 +374,19 @@ extension GroupManagementProtocol { // If we reach this point, we can update the group - // Check that the group is one we joined, not one we own - guard groupStructure.groupType == .joined else { - os_log("The group is not one we joined", log: log, type: .error) - return CancelledState() + if remoteIdentity == ownedIdentity { + // Check that the group is one we joined, not one we own + guard groupStructure.groupType == .owned else { + os_log("The group is not one we own", log: log, type: .error) + return CancelledState() + } + } else { + // Check that the group is one we joined, not one we own + guard groupStructure.groupType == .joined else { + os_log("The group is not one we joined", log: log, type: .error) + return CancelledState() + } } // Check that the received member version is more recent than the one we already know about @@ -360,11 +403,24 @@ extension GroupManagementProtocol { if newGroupDetails.photoServerKeyAndLabel != nil { let publishedDetailsWithPhoto: GroupInformationWithPhoto - do { - publishedDetailsWithPhoto = try identityDelegate.getGroupJoinedInformationAndPublishedPhoto(ownedIdentity: ownedIdentity, groupUid: newGroupInformation.groupUid, groupOwner: newGroupInformation.groupOwnerIdentity, within: obvContext) - } catch { - os_log("Could not get details of published group", log: log, type: .error) - return CancelledState() + if remoteIdentity == ownedIdentity { + + do { + publishedDetailsWithPhoto = try identityDelegate.getGroupOwnedInformationAndPublishedPhoto(ownedIdentity: ownedIdentity, groupUid: newGroupInformation.groupUid, within: obvContext) + } catch { + os_log("Could not get details of published group", log: log, type: .error) + return CancelledState() + } + + } else { + + do { + publishedDetailsWithPhoto = try identityDelegate.getGroupJoinedInformationAndPublishedPhoto(ownedIdentity: ownedIdentity, groupUid: newGroupInformation.groupUid, groupOwner: newGroupInformation.groupOwnerIdentity, within: obvContext) + } catch { + os_log("Could not get details of published group", log: log, type: .error) + return CancelledState() + } + } let currentGroupDetailsElementsWithPhoto = publishedDetailsWithPhoto.groupDetailsElementsWithPhoto @@ -377,7 +433,7 @@ extension GroupManagementProtocol { let childProtocolInstanceUid = UID.gen(with: prng) let coreMessage = getCoreMessageForOtherLocalProtocol( - otherCryptoProtocolId: .DownloadGroupPhoto, + otherCryptoProtocolId: .downloadGroupPhoto, otherProtocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = DownloadGroupPhotoChildProtocol.InitialMessage( coreProtocolMessage: coreMessage, @@ -386,40 +442,70 @@ extension GroupManagementProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } - // Update the details of the group with the new details - do { - try identityDelegate.updatePublishedDetailsOfContactGroupJoined(ownedIdentity: ownedIdentity, - groupInformation: newGroupInformation, - within: obvContext) - } catch { - os_log("Could not update published details of the contact group joined", log: log, type: .error) - // We do not return - } + if remoteIdentity == ownedIdentity { + + do { + let groupDetailsElementsWithPhoto = GroupDetailsElementsWithPhoto(groupDetailsElements: newGroupInformation.groupDetailsElements, photoURL: nil) + try identityDelegate.updateLatestDetailsOfContactGroupOwned( + ownedIdentity: ownedIdentity, + groupUid: newGroupInformation.groupUid, + with: groupDetailsElementsWithPhoto, + within: obvContext) + try identityDelegate.publishLatestDetailsOfContactGroupOwned(ownedIdentity: ownedIdentity, groupUid: newGroupInformation.groupUid, within: obvContext) + } catch { + os_log("Could not update latest details of the contact group owned", log: log, type: .error) + // We do not return + } + + do { + try identityDelegate.updatePendingMembersAndGroupMembersOfContactGroupOwned(ownedIdentity: ownedIdentity, + groupUid: newGroupInformation.groupUid, + groupMembers: groupMembers, + pendingGroupMembers: pendingMembers, + groupMembersVersion: groupMembersVersion, + within: obvContext) + } catch { + os_log("Could not update pending members nor group members of the joined contact group", log: log, type: .error) + // We do not return + } + + } else { + do { + try identityDelegate.updatePublishedDetailsOfContactGroupJoined(ownedIdentity: ownedIdentity, + groupInformation: newGroupInformation, + within: obvContext) + } catch { + os_log("Could not update published details of the contact group joined", log: log, type: .error) + // We do not return + } + + // Update the pending members and the group members of the joined contact group + + do { + try identityDelegate.updatePendingMembersAndGroupMembersOfContactGroupJoined(ownedIdentity: ownedIdentity, + groupUid: newGroupInformation.groupUid, + groupOwner: newGroupInformation.groupOwnerIdentity, + groupMembers: groupMembers, + pendingGroupMembers: pendingMembers, + groupMembersVersion: groupMembersVersion, + within: obvContext) + } catch { + os_log("Could not update pending members nor group members of the joined contact group", log: log, type: .error) + // We do not return + } - // Update the pending members and the group members of the joined contact group - - do { - try identityDelegate.updatePendingMembersAndGroupMembersOfContactGroupJoined(ownedIdentity: ownedIdentity, - groupUid: newGroupInformation.groupUid, - groupOwner: newGroupInformation.groupOwnerIdentity, - groupMembers: groupMembers, - pendingGroupMembers: pendingMembers, - groupMembersVersion: groupMembersVersion, - within: obvContext) - } catch { - os_log("Could not update pending members nor group members of the joined contact group", log: log, type: .error) - // We do not return } - + + // Return the new state return FinalState() @@ -494,13 +580,13 @@ extension GroupManagementProtocol { let childProtocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = GroupManagementProtocol.GroupMembersChangedTriggerMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation) guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: localPrng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: localPrng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: localPrng, within: obvContext) } @@ -544,7 +630,7 @@ extension GroupManagementProtocol { for contactIdentity in newGroupMembers { let childProtocolInstanceUid = UID.gen(with: prng) - let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .GroupInvitation, + let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .groupInvitation, otherProtocolInstanceUid: childProtocolInstanceUid) // Note that the initial message of the GroupInvitationProtocol expects the list of (pending) members to *not* include the group owned, i.e., *not* include the owned identity. let childProtocolInitialMessage = GroupInvitationProtocol.InitialMessage(coreProtocolMessage: coreMessage, @@ -555,7 +641,7 @@ extension GroupManagementProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } return FinalState() @@ -630,13 +716,13 @@ extension GroupManagementProtocol { let childProtocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = GroupManagementProtocol.GroupMembersChangedTriggerMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation) guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: localPrng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: localPrng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: localPrng, within: obvContext) } @@ -655,7 +741,7 @@ extension GroupManagementProtocol { for removedGroupMember in removedGroupMembers { let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([removedGroupMember]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) let concreteProtocolMessage = KickFromGroupMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformation) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -663,7 +749,7 @@ extension GroupManagementProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not notify member that she has been kicked out from group owned", log: log, type: .error) // Continue @@ -796,7 +882,7 @@ extension GroupManagementProtocol { let protocolInstanceUidForGroupManagement = groupInformation.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([groupInformation.groupOwnerIdentity]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUidForGroupManagement) let concreteProtocolMessage = GroupManagementProtocol.NotifyGroupLeftMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformation) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -805,13 +891,26 @@ extension GroupManagementProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not notify the group owner that we wish to leave the group", log: log, type: .error) return CancelledState() } } + + // Propagate to our other owned devices + + let numberOfOtherDevicesOfOwnedIdentity = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext).count + + if numberOfOtherDevicesOfOwnedIdentity > 0 { + let coreMessage = getCoreMessage(for: .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity(ownedIdentity: ownedIdentity)) + let concreteProtocolMessage = PropagateLeaveGroupMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformation) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } // Delete the group within the identity manager @@ -900,13 +999,13 @@ extension GroupManagementProtocol { let childProtocolInstanceUid = groupInformationWithPhoto.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .Local(ownedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = GroupManagementProtocol.GroupMembersChangedTriggerMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformationWithPhoto.groupInformation) guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: localPrng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: localPrng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: localPrng, within: obvContext) } @@ -965,7 +1064,7 @@ extension GroupManagementProtocol { let protocolInstanceUidForGroupManagement = groupInformation.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([groupInformation.groupOwnerIdentity]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUidForGroupManagement) let concreteProtocolMessage = GroupManagementProtocol.QueryGroupMembersMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformation) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -974,7 +1073,7 @@ extension GroupManagementProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not ask the group owner about the latest version of the group members", log: log, type: .error) return CancelledState() @@ -1044,7 +1143,7 @@ extension GroupManagementProtocol { os_log("The remote identity asks for informations about a group that does not exists (it was deleted?). We kick this contact out.", log: log, type: .info) let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([remoteIdentity]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) let concreteProtocolMessage = KickFromGroupMessage(coreProtocolMessage: coreMessage, groupInformation: receivedGroupInformation) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -1052,7 +1151,7 @@ extension GroupManagementProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not notify a remote identity that she was kicked from a group owned (that we cannot find, maybe because it was deleted in the past).", log: log, type: .error) // Continue @@ -1098,7 +1197,7 @@ extension GroupManagementProtocol { os_log("The remote identity is not part of the group members nor of the pending members. We kick this contact out.", log: log, type: .info) let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([remoteIdentity]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUid) let concreteProtocolMessage = KickFromGroupMessage(coreProtocolMessage: coreMessage, groupInformation: receivedGroupInformation) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -1106,7 +1205,7 @@ extension GroupManagementProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not notify a remote identity that she was kicked from a group owned she doesn't belong to anyway", log: log, type: .error) // Continue @@ -1130,7 +1229,7 @@ extension GroupManagementProtocol { let protocolInstanceUidForGroupManagement = receivedGroupInformation.associatedProtocolUid let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([remoteIdentity]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .GroupManagement, + cryptoProtocolId: .groupManagement, protocolInstanceUid: protocolInstanceUidForGroupManagement) let concreteProtocolMessage = NewMembersMessage(coreProtocolMessage: coreMessage, groupInformation: latestGroupInformationWithPhoto.groupInformation, groupMembers: groupMembersWithCoreDetails, pendingMembers: groupStructure.pendingGroupMembers, groupMembersVersion: groupStructure.groupMembersVersion) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { @@ -1139,7 +1238,7 @@ extension GroupManagementProtocol { } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not send the latest version of the group members to a group member", log: log, type: .error) return CancelledState() @@ -1243,7 +1342,7 @@ extension GroupManagementProtocol { // In addtion to the previous message, we send an invite. If the member is aware that she is part of the group, this invite will be silently discarded. If she is not, the previous message will certain be useless, since we need to invite her first. This is what we do here. let childProtocolInstanceUid = UID.gen(with: prng) - let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .GroupInvitation, + let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .groupInvitation, otherProtocolInstanceUid: childProtocolInstanceUid) // Note that the InitialMessage below expects that the membersAndPendingGroupMembers does *not* contain the owned identity, i.e., does *not* contain the group owner let childProtocolInitialMessage = GroupInvitationProtocol.InitialMessage(coreProtocolMessage: coreMessage, @@ -1255,7 +1354,7 @@ extension GroupManagementProtocol { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post a (local) initial message for the GroupInvitationProtocol", log: log, type: .fault) return CancelledState() @@ -1379,7 +1478,7 @@ extension GroupManagementProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post NewMembersMessage", log: log, type: .fault) return CancelledState() @@ -1390,6 +1489,362 @@ extension GroupManagementProtocol { } } + + // MARK: - DisbandGroupStep + + final class DisbandGroupStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: DisbandGroupMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: DisbandGroupMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: GroupManagementProtocol.logCategory) + + eraseReceivedMessagesAfterReachingAFinalState = false + + let groupInformation = receivedMessage.groupInformation + + // Check that the group owner corresponds the owned identity of this protocol instance + + guard groupInformation.groupOwnerIdentity == ownedIdentity else { + os_log("The group owner does not correspond to the owned identity", log: log, type: .error) + return CancelledState() + } + + // Check that the protocol uid of this protocol corresponds to the group information + + guard protocolInstanceUid == groupInformation.associatedProtocolUid else { + os_log("The protocol instance uid does not correspond to the one associated with the group", log: log, type: .error) + return CancelledState() + } + + // Get the group structure from database + + let groupStructure: GroupStructure + do { + guard let _groupStructure = try identityDelegate.getGroupOwnedStructure(ownedIdentity: ownedIdentity, groupUid: groupInformation.groupUid, within: obvContext) else { + os_log("The group does not exist. This is unexpected since this step should never have been started in that case.", log: log, type: .error) + return CancelledState() + } + groupStructure = _groupStructure + } catch { + os_log("Could not access the group in database", log: log, type: .error) + return CancelledState() + } + + // Send a KickFromGroupMessage to all members and pending members of the group + + do { + let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: groupStructure.groupMembers, fromOwnedIdentity: ownedIdentity), + cryptoProtocolId: .groupManagement, + protocolInstanceUid: protocolInstanceUid) + let concreteProtocolMessage = KickFromGroupMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformation) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + return CancelledState() + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + do { + let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: groupStructure.pendingGroupMembersIdentities, fromOwnedIdentity: ownedIdentity), + cryptoProtocolId: .groupManagement, + protocolInstanceUid: protocolInstanceUid) + let concreteProtocolMessage = KickFromGroupMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformation) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + return CancelledState() + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + // Propagate the disband to our other owned devices + + let numberOfOtherDevicesOfOwnedIdentity = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext).count + + if numberOfOtherDevicesOfOwnedIdentity > 0 { + let coreMessage = getCoreMessage(for: .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity(ownedIdentity: ownedIdentity)) + let concreteProtocolMessage = PropagateDisbandGroupMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformation) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + // Delete the group + + try identityDelegate.deleteContactGroupOwned(ownedIdentity: ownedIdentity, groupUid: groupInformation.groupUid, deleteEvenIfGroupMembersStillExist: true, within: obvContext) + + // Return the final state + + return FinalState() + + } + } + + + // MARK: - ProcessPropagateDisbandGroupMessageStep + + final class ProcessPropagateDisbandGroupMessageStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PropagateDisbandGroupMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: PropagateDisbandGroupMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: GroupManagementProtocol.logCategory) + + eraseReceivedMessagesAfterReachingAFinalState = false + + let groupInformation = receivedMessage.groupInformation + + // Check that the group owner corresponds the owned identity of this protocol instance + + guard groupInformation.groupOwnerIdentity == ownedIdentity else { + os_log("The group owner does not correspond to the owned identity", log: log, type: .error) + return CancelledState() + } + + // Check that the protocol uid of this protocol corresponds to the group information + + guard protocolInstanceUid == groupInformation.associatedProtocolUid else { + os_log("The protocol instance uid does not correspond to the one associated with the group", log: log, type: .error) + return CancelledState() + } + + // Delete the group + + try identityDelegate.deleteContactGroupOwned(ownedIdentity: ownedIdentity, groupUid: groupInformation.groupUid, deleteEvenIfGroupMembersStillExist: true, within: obvContext) + + // Return the final state + + return FinalState() + + } + } + + + // MARK: - ProcessPropagateLeaveGroupMessageStep + + final class ProcessPropagateLeaveGroupMessageStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PropagateLeaveGroupMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: PropagateLeaveGroupMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: GroupManagementProtocol.logCategory) + + eraseReceivedMessagesAfterReachingAFinalState = false + + let groupInformation = receivedMessage.groupInformation + + // Check that the protocol uid of this protocol corresponds to the group information + + guard protocolInstanceUid == groupInformation.associatedProtocolUid else { + os_log("The protocol instance uid does not correspond to the one associated with the group", log: log, type: .error) + assertionFailure() + return CancelledState() + } + + // Check that we are not the group owner + + guard groupInformation.groupOwnerIdentity != ownedIdentity else { + os_log("Trying to leave a group for which we are the group owned", log: log, type: .error) + return CancelledState() + } + + // Delete the group + + try identityDelegate.deleteContactGroupJoined(ownedIdentity: ownedIdentity, groupUid: groupInformation.groupUid, groupOwner: groupInformation.groupOwnerIdentity, within: obvContext) + + // Return the final state + + return FinalState() + + } + } + + + // MARK: - ProcessPropagateReinvitePendingMemberStep + + // Note: This step has been implemented on 2023-10-08 to maintain compatibility with the Android version of Olvid. + // The step sending the PropagateReinvitePendingMemberMessage has not been implemented yet under iOS. + + final class ProcessPropagateReinvitePendingMemberStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PropagateReinvitePendingMemberMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: PropagateReinvitePendingMemberMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: GroupManagementProtocol.logCategory) + + eraseReceivedMessagesAfterReachingAFinalState = false + + let groupInformation = receivedMessage.groupInformation + let pendingMemberIdentity = receivedMessage.pendingMemberIdentity + + // Check that the group owner corresponds the owned identity of this protocol instance + + guard groupInformation.groupOwnerIdentity == ownedIdentity else { + os_log("The group owner does not correspond to the owned identity", log: log, type: .error) + return CancelledState() + } + + // Check that the protocol uid of this protocol corresponds to the group information + + guard protocolInstanceUid == groupInformation.associatedProtocolUid else { + os_log("The protocol instance uid does not correspond to the one associated with the group", log: log, type: .error) + return CancelledState() + } + + // Mark the pending member as "not declined" + + try identityDelegate.unmarkDeclinedPendingMemberAsDeclined(ownedIdentity: ownedIdentity, groupUid: groupInformation.groupUid, pendingMember: pendingMemberIdentity, within: obvContext) + + return FinalState() + + } + } + + + // MARK: - ProcessPropagateGroupCreationMessageStep + + final class ProcessPropagateGroupCreationMessageStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PropagateGroupCreationMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: PropagateGroupCreationMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: GroupManagementProtocol.logCategory) + + eraseReceivedMessagesAfterReachingAFinalState = false + + let groupInformation = receivedMessage.groupInformation + let pendingGroupMembers = receivedMessage.pendingGroupMembers + + // Check that the pending group members does not contain the owned identity + + guard !pendingGroupMembers.map({ $0.cryptoIdentity }).contains(ownedIdentity) else { + os_log("The group members contain the owned identity", log: log, type: .error) + assertionFailure() + return CancelledState() + } + + // Check that the group owner corresponds the owned identity of this protocol instance + + guard groupInformation.groupOwnerIdentity == ownedIdentity else { + os_log("The group owner does not correspond to the owned identity", log: log, type: .error) + return CancelledState() + } + + // Check that the protocol uid of this protocol corresponds to the group information + + guard protocolInstanceUid == groupInformation.associatedProtocolUid else { + os_log("The protocol instance uid does not correspond to the one associated with the group", log: log, type: .error) + return CancelledState() + } + + // Create the ContactGroup in database + + do { + // The createContactGroupOwned(...) returns an updated version of the GroupInformationWithPhoto instance + let groupInformationWithPhoto = GroupInformationWithPhoto(groupInformation: groupInformation, photoURL: nil) + _ = try identityDelegate.createContactGroupOwned(ownedIdentity: ownedIdentity, + groupInformationWithPhoto: groupInformationWithPhoto, + pendingGroupMembers: pendingGroupMembers, + within: obvContext) + } catch { + os_log("Could not create contact group", log: log, type: .error) + return CancelledState() + } + + // If there is a group photo, download it now + + if groupInformation.groupDetailsElements.photoServerKeyAndLabel != nil { + do { + let childProtocolInstanceUid = UID.gen(with: prng) + let coreMessage = getCoreMessageForOtherLocalProtocol( + otherCryptoProtocolId: .downloadGroupPhoto, + otherProtocolInstanceUid: childProtocolInstanceUid) + let childProtocolInitialMessage = DownloadGroupPhotoChildProtocol.InitialMessage( + coreProtocolMessage: coreMessage, + groupInformation: groupInformation) + guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } catch { + os_log("Error: %{public}@", log: log, type: .error, error.localizedDescription) + assertionFailure() + // An error occured with the photo, this should not prevent group creation, so we do nothing + } + } + + // Return the final state + + return FinalState() + + } + } + } extension ProtocolStep { @@ -1468,10 +1923,10 @@ extension ProtocolStep { let updatedGroupInformation = try groupInformation.withPhotoServerKeyAndLabel(photoServerKeyAndLabel) let coreMessage = getCoreMessage(for: .ServerQuery(ownedIdentity: step.ownedIdentity)) - let concreteMessage = GroupManagementProtocol.UploadGroupPhotoMessage.init(coreProtocolMessage: coreMessage, groupInformation: updatedGroupInformation) + let concreteMessage = GroupManagementProtocol.UploadGroupPhotoMessage(coreProtocolMessage: coreMessage, groupInformation: updatedGroupInformation) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.putUserData(label: photoServerKeyAndLabel.label, dataURL: photoURL, dataKey: photoServerKeyAndLabel.key) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: step.prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: step.prng, within: obvContext) } catch { os_log("Error: %{public}@", log: log, type: .error, error.localizedDescription) @@ -1490,13 +1945,26 @@ extension ProtocolStep { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: step.prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: step.prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: step.prng, within: obvContext) } catch { os_log("Could not post NewMembersMessage", log: log, type: .fault) return GroupManagementProtocol.CancelledState() } } + // Also notify our other owned devices + + let numberOfOtherDevicesOfOwnedIdentity = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext).count + + if numberOfOtherDevicesOfOwnedIdentity > 0 { + let coreMessage = getCoreMessage(for: .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity(ownedIdentity: ownedIdentity)) + let concreteProtocolMessage = GroupManagementProtocol.NewMembersMessage(coreProtocolMessage: coreMessage, groupInformation: groupInformation, groupMembers: groupMembersWithCoreDetails, pendingMembers: groupStructure.pendingGroupMembers, groupMembersVersion: groupStructure.groupMembersVersion) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } // Return the new state diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/DownloadGroupV2PhotoProtocol/DownloadGroupV2PhotoProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/DownloadGroupV2PhotoProtocol/DownloadGroupV2PhotoProtocol.swift index 64d580b8..f6576d05 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/DownloadGroupV2PhotoProtocol/DownloadGroupV2PhotoProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/DownloadGroupV2PhotoProtocol/DownloadGroupV2PhotoProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,7 +26,7 @@ public struct DownloadGroupV2PhotoProtocol: ConcreteCryptoProtocol { static let logCategory = "DownloadGroupV2PhotoProtocol" - static let id = CryptoProtocolId.DownloadGroupV2Photo + static let id = CryptoProtocolId.downloadGroupV2Photo static let finalStateIds: [ConcreteProtocolStateId] = [StateId.PhotoDownloaded, StateId.Cancelled] diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/DownloadGroupV2PhotoProtocol/DownloadGroupV2PhotoProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/DownloadGroupV2PhotoProtocol/DownloadGroupV2PhotoProtocolSteps.swift index 8d32d586..34adfa74 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/DownloadGroupV2PhotoProtocol/DownloadGroupV2PhotoProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/DownloadGroupV2PhotoProtocol/DownloadGroupV2PhotoProtocolSteps.swift @@ -84,7 +84,7 @@ extension DownloadGroupV2PhotoProtocol { } guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return DownloadingPhotoState(groupIdentifier: groupIdentifier, serverPhotoInfo: serverPhotoInfo) diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2Protocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2Protocol.swift index 0a05a599..b2e5f214 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2Protocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2Protocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -28,7 +28,7 @@ public struct GroupV2Protocol: ConcreteCryptoProtocol { static let logCategory = "GroupV2Protocol" - static let id = CryptoProtocolId.GroupV2 + static let id = CryptoProtocolId.groupV2 static let finalStateIds: [ConcreteProtocolStateId] = [StateId.final] diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolMessages.swift index 8b9df3db..d65f659d 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolMessages.swift @@ -62,6 +62,7 @@ extension GroupV2Protocol { case dialogInformative = 50 case dialogFreezeGroupV2Invitation = 200 case initiateUpdateKeycloakGroups = 300 + case autoAcceptInvitation = 400 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { @@ -98,6 +99,7 @@ extension GroupV2Protocol { case .initiateTargetedPing : return InitiateTargetedPingMessage.self case .dialogFreezeGroupV2Invitation : return DialogFreezeGroupV2InvitationMessage.self case .initiateUpdateKeycloakGroups : return InitiateUpdateKeycloakGroupsMessage.self + case .autoAcceptInvitation : return AutoAcceptInvitationMessage.self } } } @@ -492,7 +494,7 @@ extension GroupV2Protocol { init(forSimulatingReceivedMessageForOwnedIdentity ownedIdentity: ObvCryptoIdentity, protocolInstanceUid: UID) { self.coreProtocolMessage = CoreProtocolMessage.getServerQueryCoreProtocolMessageForSimulatingReceivedMessage( ownedIdentity: ownedIdentity, - cryptoProtocolId: .GroupV2, + cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) self.groupDeletionWasSuccessful = true } @@ -1032,26 +1034,26 @@ extension GroupV2Protocol { // Properties specific to this concrete protocol message - let contactIdentity: ObvCryptoIdentity - let contactDeviceUID: UID + let remoteIdentity: ObvCryptoIdentity + let remoteDeviceUID: UID // Init when sending this message - init(coreProtocolMessage: CoreProtocolMessage, contactIdentity: ObvCryptoIdentity, contactDeviceUID: UID) { + init(coreProtocolMessage: CoreProtocolMessage, remoteIdentity: ObvCryptoIdentity, remoteDeviceUID: UID) { self.coreProtocolMessage = coreProtocolMessage - self.contactIdentity = contactIdentity - self.contactDeviceUID = contactDeviceUID + self.remoteIdentity = remoteIdentity + self.remoteDeviceUID = remoteDeviceUID } var encodedInputs: [ObvEncoded] { - [contactIdentity.obvEncode(), contactDeviceUID.obvEncode()] + [remoteIdentity.obvEncode(), remoteDeviceUID.obvEncode()] } // Init when receiving this message init(with message: ReceivedMessage) throws { self.coreProtocolMessage = CoreProtocolMessage(with: message) - (contactIdentity, contactDeviceUID) = try message.encodedInputs.obvDecode() + (remoteIdentity, remoteDeviceUID) = try message.encodedInputs.obvDecode() } } @@ -1300,4 +1302,29 @@ extension GroupV2Protocol { } } + + + // MARK: - AutoAcceptInvitationFromOwnedIdentityMessage + + struct AutoAcceptInvitationMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.autoAcceptInvitation + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + } + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolStates.swift index c698c6c8..6a6876c4 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolStates.swift @@ -104,18 +104,20 @@ extension GroupV2Protocol { let invitationCollectedData: GroupV2.InvitationCollectedData let expectedInternalServerQueryIdentifier: Int let lastKnownOwnInvitationNonceAndOtherMembers: (nonce: Data, otherGroupMembers: Set)? + let ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: [Data] - init(groupIdentifier: GroupV2.Identifier, dialogUuid: UUID, invitationCollectedData: GroupV2.InvitationCollectedData, expectedInternalServerQueryIdentifier: Int, lastKnownOwnInvitationNonceAndOtherMembers: (nonce: Data, otherGroupMembers: Set)?) { + init(groupIdentifier: GroupV2.Identifier, dialogUuid: UUID, invitationCollectedData: GroupV2.InvitationCollectedData, expectedInternalServerQueryIdentifier: Int, ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: [Data], lastKnownOwnInvitationNonceAndOtherMembers: (nonce: Data, otherGroupMembers: Set)?) { self.groupIdentifier = groupIdentifier self.dialogUuid = dialogUuid self.invitationCollectedData = invitationCollectedData + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = ownInvitationNonceOfInvitationsAcceptedOnOtherDevices self.lastKnownOwnInvitationNonceAndOtherMembers = lastKnownOwnInvitationNonceAndOtherMembers self.expectedInternalServerQueryIdentifier = expectedInternalServerQueryIdentifier } func obvEncode() throws -> ObvEncoded { let encodedCollectedData = try invitationCollectedData.obvEncode() - var encodedValues = [groupIdentifier.obvEncode(), dialogUuid.obvEncode(), encodedCollectedData, expectedInternalServerQueryIdentifier.obvEncode()] + var encodedValues = [groupIdentifier.obvEncode(), dialogUuid.obvEncode(), encodedCollectedData, expectedInternalServerQueryIdentifier.obvEncode(), ownInvitationNonceOfInvitationsAcceptedOnOtherDevices.map{ $0.obvEncode() }.obvEncode()] if let lastKnownOwnInvitationNonceAndOtherMembers = lastKnownOwnInvitationNonceAndOtherMembers { encodedValues.append(lastKnownOwnInvitationNonceAndOtherMembers.nonce.obvEncode()) encodedValues.append(Array(lastKnownOwnInvitationNonceAndOtherMembers.otherGroupMembers).map({ $0.obvEncode() }).obvEncode()) @@ -125,21 +127,59 @@ extension GroupV2Protocol { init(_ obvEncoded: ObvEncoded) throws { guard let encodedValues = [ObvEncoded](obvEncoded) else { assertionFailure(); throw Self.makeError(message: "Could not decode DownloadingGroupDataState") } - guard [4, 6].contains(encodedValues.count) else { assertionFailure(); throw Self.makeError(message: "Unexpected number of elements in encoded DownloadingGroupDataState") } + guard [4, 5, 6, 7].contains(encodedValues.count) else { assertionFailure(); throw Self.makeError(message: "Unexpected number of elements in encoded DownloadingGroupDataState") } self.groupIdentifier = try encodedValues[0].obvDecode() self.dialogUuid = try encodedValues[1].obvDecode() self.invitationCollectedData = try encodedValues[2].obvDecode() self.expectedInternalServerQueryIdentifier = try encodedValues[3].obvDecode() - if encodedValues.count == 6 { + switch encodedValues.count { + case 4: + // Legacy case, when we had no ownInvitationNonceOfInvitationsAcceptedOnOtherDevices + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = [] + self.lastKnownOwnInvitationNonceAndOtherMembers = nil + case 5: + guard let arrayOfEncoded = [ObvEncoded](encodedValues[4]) else { + assertionFailure() + throw Self.makeError(message: "Could not decode expectedInternalServerQueryIdentifier") + } + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = try arrayOfEncoded.map({ try $0.obvDecode() }) + self.lastKnownOwnInvitationNonceAndOtherMembers = nil + case 6: + // Legacy case, when we had no ownInvitationNonceOfInvitationsAcceptedOnOtherDevices let nonce: Data = try encodedValues[4].obvDecode() guard let encodedGroupMemberIdentities = [ObvEncoded](encodedValues[5]) else { assertionFailure(); throw Self.makeError(message: "Could not decode group member identities in DownloadingGroupDataState") } let groupMemberIdentities = Set(encodedGroupMemberIdentities.compactMap({ ObvCryptoIdentity($0) })) + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = [] self.lastKnownOwnInvitationNonceAndOtherMembers = (nonce, groupMemberIdentities) - } else { - self.lastKnownOwnInvitationNonceAndOtherMembers = nil + case 7: + guard let arrayOfEncoded = [ObvEncoded](encodedValues[4]) else { + assertionFailure() + throw Self.makeError(message: "Could not decode expectedInternalServerQueryIdentifier") + } + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = try arrayOfEncoded.map({ try $0.obvDecode() }) + let nonce: Data = try encodedValues[5].obvDecode() + guard let encodedGroupMemberIdentities = [ObvEncoded](encodedValues[6]) else { assertionFailure(); throw Self.makeError(message: "Could not decode group member identities in DownloadingGroupDataState") } + let groupMemberIdentities = Set(encodedGroupMemberIdentities.compactMap({ ObvCryptoIdentity($0) })) + self.lastKnownOwnInvitationNonceAndOtherMembers = (nonce, groupMemberIdentities) + default: + assertionFailure() + throw Self.makeError(message: "Could not decode DownloadingGroupDataState") } } - + + + func addingOwnInvitationNonceOfInvitationsAcceptedOnOtherDevice(nonce: Data) -> Self { + var nonces = self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices + nonces.append(nonce) + return .init(groupIdentifier: groupIdentifier, + dialogUuid: dialogUuid, + invitationCollectedData: invitationCollectedData, + expectedInternalServerQueryIdentifier: expectedInternalServerQueryIdentifier, + ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: nonces, + lastKnownOwnInvitationNonceAndOtherMembers: lastKnownOwnInvitationNonceAndOtherMembers) + } + + } @@ -152,18 +192,20 @@ extension GroupV2Protocol { let groupIdentifier: GroupV2.Identifier let dialogUuid: UUID let invitationCollectedData: GroupV2.InvitationCollectedData + let ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: [Data] let lastKnownOwnInvitationNonceAndOtherMembers: (nonce: Data, otherGroupMembers: Set)? - init(groupIdentifier: GroupV2.Identifier, dialogUuid: UUID, invitationCollectedData: GroupV2.InvitationCollectedData, lastKnownOwnInvitationNonceAndOtherMembers: (nonce: Data, otherGroupMembers: Set)?) { + init(groupIdentifier: GroupV2.Identifier, dialogUuid: UUID, invitationCollectedData: GroupV2.InvitationCollectedData, ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: [Data], lastKnownOwnInvitationNonceAndOtherMembers: (nonce: Data, otherGroupMembers: Set)?) { self.groupIdentifier = groupIdentifier self.dialogUuid = dialogUuid self.invitationCollectedData = invitationCollectedData + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = ownInvitationNonceOfInvitationsAcceptedOnOtherDevices self.lastKnownOwnInvitationNonceAndOtherMembers = lastKnownOwnInvitationNonceAndOtherMembers } func obvEncode() throws -> ObvEncoded { let encodedCollectedData = try invitationCollectedData.obvEncode() - var encodedValues = [groupIdentifier.obvEncode(), dialogUuid.obvEncode(), encodedCollectedData] + var encodedValues = [groupIdentifier.obvEncode(), dialogUuid.obvEncode(), encodedCollectedData, ownInvitationNonceOfInvitationsAcceptedOnOtherDevices.map({ $0.obvEncode() }).obvEncode()] if let lastKnownOwnInvitationNonceAndOtherMembers = lastKnownOwnInvitationNonceAndOtherMembers { encodedValues.append(lastKnownOwnInvitationNonceAndOtherMembers.nonce.obvEncode()) encodedValues.append(Array(lastKnownOwnInvitationNonceAndOtherMembers.otherGroupMembers).map({ $0.obvEncode() }).obvEncode()) @@ -173,20 +215,56 @@ extension GroupV2Protocol { init(_ obvEncoded: ObvEncoded) throws { guard let encodedValues = [ObvEncoded](obvEncoded) else { assertionFailure(); throw Self.makeError(message: "Could not decode INeedMoreSeedsState") } - guard [3, 5].contains(encodedValues.count) else { assertionFailure(); throw Self.makeError(message: "Unexpected number of elements in encoded INeedMoreSeedsState") } + guard [3, 4, 5, 6].contains(encodedValues.count) else { assertionFailure(); throw Self.makeError(message: "Unexpected number of elements in encoded INeedMoreSeedsState") } self.groupIdentifier = try encodedValues[0].obvDecode() self.dialogUuid = try encodedValues[1].obvDecode() self.invitationCollectedData = try encodedValues[2].obvDecode() - if encodedValues.count == 5 { - let nonce: Data = try encodedValues[3].obvDecode() - guard let encodedOtherGroupMembers = [ObvEncoded](encodedValues[4]) else { assertionFailure(); throw Self.makeError(message: "Could not decode group member identities in INeedMoreSeedsState") } - let otherGroupMembers = Set(encodedOtherGroupMembers.compactMap({ ObvCryptoIdentity($0) })) - self.lastKnownOwnInvitationNonceAndOtherMembers = (nonce, otherGroupMembers) - } else { + switch encodedValues.count { + case 3: + // Legacy case, when we had no ownInvitationNonceOfInvitationsAcceptedOnOtherDevices + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = [] self.lastKnownOwnInvitationNonceAndOtherMembers = nil + case 4: + guard let arrayOfEncoded = [ObvEncoded](encodedValues[3]) else { + assertionFailure() + throw Self.makeError(message: "Could not decode expectedInternalServerQueryIdentifier") + } + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = try arrayOfEncoded.map({ try $0.obvDecode() }) + self.lastKnownOwnInvitationNonceAndOtherMembers = nil + case 5: + // Legacy case, when we had no ownInvitationNonceOfInvitationsAcceptedOnOtherDevices + let nonce: Data = try encodedValues[3].obvDecode() + guard let encodedGroupMemberIdentities = [ObvEncoded](encodedValues[4]) else { assertionFailure(); throw Self.makeError(message: "Could not decode group member identities in DownloadingGroupDataState") } + let groupMemberIdentities = Set(encodedGroupMemberIdentities.compactMap({ ObvCryptoIdentity($0) })) + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = [] + self.lastKnownOwnInvitationNonceAndOtherMembers = (nonce, groupMemberIdentities) + case 6: + guard let arrayOfEncoded = [ObvEncoded](encodedValues[3]) else { + assertionFailure() + throw Self.makeError(message: "Could not decode expectedInternalServerQueryIdentifier") + } + self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = try arrayOfEncoded.map({ try $0.obvDecode() }) + let nonce: Data = try encodedValues[4].obvDecode() + guard let encodedGroupMemberIdentities = [ObvEncoded](encodedValues[5]) else { assertionFailure(); throw Self.makeError(message: "Could not decode group member identities in DownloadingGroupDataState") } + let groupMemberIdentities = Set(encodedGroupMemberIdentities.compactMap({ ObvCryptoIdentity($0) })) + self.lastKnownOwnInvitationNonceAndOtherMembers = (nonce, groupMemberIdentities) + default: + assertionFailure() + throw Self.makeError(message: "Could not decode DownloadingGroupDataState") } } + + func addingOwnInvitationNonceOfInvitationsAcceptedOnOtherDevice(nonce: Data) -> Self { + var nonces = self.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices + nonces.append(nonce) + return .init(groupIdentifier: groupIdentifier, + dialogUuid: dialogUuid, + invitationCollectedData: invitationCollectedData, + ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: nonces, + lastKnownOwnInvitationNonceAndOtherMembers: lastKnownOwnInvitationNonceAndOtherMembers) + } + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolSteps.swift index a5d81942..2e161705 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/GroupProtocols/GroupV2Protocols/GroupV2Protocol/GroupV2ProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,6 +25,7 @@ import ObvCrypto import OlvidUtils import ObvEncoder + // MARK: - Protocol Steps extension GroupV2Protocol { @@ -53,6 +54,7 @@ extension GroupV2Protocol { case finalizeGroupDisband = 19 case prepareBatchKeysMessage = 20 case processBatchKeysMessage = 21 + case sendKeycloakGroupTargetedPing = 22 case processInitiateUpdateKeycloakGroupsMessage = 300 @@ -126,14 +128,20 @@ extension GroupV2Protocol { return step } else if let step = ProcessPropagateInvitationDialogResponseMessageFromInvitationReceivedStateStep(from: concreteProtocol, and: receivedMessage) { return step + } else if let step = ProcessAutoAcceptInvitationFromOwnedIdentityMessageFromInvitationReceivedStateStep(from: concreteProtocol, and: receivedMessage) { + return step } else if let step = ProcessDialogAcceptGroupV2InvitationMessageFromDownloadingGroupBlobStateStep(from: concreteProtocol, and: receivedMessage) { return step } else if let step = ProcessPropagateInvitationDialogResponseMessageFromDownloadingGroupBlobStateStep(from: concreteProtocol, and: receivedMessage) { return step + } else if let step = ProcessAutoAcceptInvitationFromOwnedIdentityMessageFromDownloadingGroupBlobStateStep(from: concreteProtocol, and: receivedMessage) { + return step } else if let step = ProcessDialogAcceptGroupV2InvitationMessageFromINeedMoreSeedsStateStep(from: concreteProtocol, and: receivedMessage) { return step } else if let step = ProcessPropagateInvitationDialogResponseMessageFromINeedMoreSeedsStateStep(from: concreteProtocol, and: receivedMessage) { return step + } else if let step = ProcessAutoAcceptInvitationFromOwnedIdentityMessageFromINeedMoreSeedsStateStep(from: concreteProtocol, and: receivedMessage) { + return step } else { return nil } @@ -250,6 +258,10 @@ extension GroupV2Protocol { let step = ProcessBatchKeysMessageStep(from: concreteProtocol, and: receivedMessage) return step + case .sendKeycloakGroupTargetedPing: + let step = SendKeycloakGroupTargetedPingStep(from: concreteProtocol, and: receivedMessage) + return step + case .processInitiateUpdateKeycloakGroupsMessage: let step = ProcessInitiateUpdateKeycloakGroupsMessageStep(from: concreteProtocol, and: receivedMessage) return step @@ -311,7 +323,7 @@ extension GroupV2Protocol { let concreteMessage = UploadGroupPhotoMessage(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.putUserData(label: serverPhotoInfo.photoServerKeyAndLabel.label, dataURL: photoURLManagedByTheIdentityManager, dataKey: serverPhotoInfo.photoServerKeyAndLabel.key) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) uploadingPhoto = true } @@ -323,7 +335,7 @@ extension GroupV2Protocol { let concreteMessage = UploadGroupBlobMessage(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.createGroupBlob(groupIdentifier: groupIdentifier, serverAuthenticationPublicKey: groupAdminServerAuthenticationPublicKey, encryptedBlob: encryptedServerBlob) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -401,7 +413,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) let concreteMessage = FinalizeGroupCreationMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate FinalizeGroupCreationMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -531,18 +543,60 @@ extension GroupV2Protocol { do { try deviceUidsOfRemoteIdentity.forEach { (pendingMember, deviceUids) in - let coreMessage = CoreProtocolMessage(channelType: .ObliviousChannel(to: pendingMember, remoteDeviceUids: Array(deviceUids), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true), - cryptoProtocolId: .GroupV2, - protocolInstanceUid: invitationProtocolInstanceUid) - let concreteMessage = InvitationOrMembersUpdateMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupVersion: groupVersion, blobKeys: blobKeys, notifiedDeviceUIDs: deviceUids) - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + let channelType: ObvChannelSendChannelType = .ObliviousChannel( + to: pendingMember, + remoteDeviceUids: Array(deviceUids), + fromOwnedIdentity: ownedIdentity, + necessarilyConfirmed: true) + let coreMessage = CoreProtocolMessage( + channelType: channelType, + cryptoProtocolId: .groupV2, + protocolInstanceUid: invitationProtocolInstanceUid) + let concreteMessage = InvitationOrMembersUpdateMessage( + coreProtocolMessage: coreMessage, + groupIdentifier: groupIdentifier, + groupVersion: groupVersion, + blobKeys: blobKeys, + notifiedDeviceUIDs: deviceUids) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure(); throw Self.makeError(message: "Implementation error") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } catch { try deleteGroupBlobFromServer(groupIdentifier: groupIdentifier, groupAdminServerAuthenticationPrivateKey: groupAdminServerAuthenticationPrivateKey) try identityDelegate.deleteGroupV2(withGroupIdentifier: groupIdentifier, of: ownedIdentity, within: obvContext) return FinalState() } + + // Propagate the Notify our other owned devices + + do { + let otherDeviceUIDs = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + let currentDeviceUID = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + let allOwnedDeviceUids = Set(otherDeviceUIDs + [currentDeviceUID]) + if !otherDeviceUIDs.isEmpty { + let channelType: ObvChannelSendChannelType = .ObliviousChannel( + to: ownedIdentity, + remoteDeviceUids: Array(otherDeviceUIDs), + fromOwnedIdentity: ownedIdentity, + necessarilyConfirmed: true) + let coreMessage = CoreProtocolMessage( + channelType: channelType, + cryptoProtocolId: .groupV2, + protocolInstanceUid: invitationProtocolInstanceUid) + let concreteMessage = InvitationOrMembersUpdateMessage( + coreProtocolMessage: coreMessage, + groupIdentifier: groupIdentifier, + groupVersion: groupVersion, + blobKeys: blobKeys, + notifiedDeviceUIDs: allOwnedDeviceUids) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure(); throw Self.makeError(message: "Implementation error") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } // Unfreeze the group @@ -560,7 +614,7 @@ extension GroupV2Protocol { guard let signature = ObvSolveChallengeStruct.solveChallenge(.groupDelete, with: groupAdminServerAuthenticationPrivateKey, using: prng) else { assertionFailure(); throw Self.makeError(message: "Could not compute signature for deleting group") } let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.deleteGroupBlob(groupIdentifier: groupIdentifier, signature: signature) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -662,15 +716,18 @@ extension GroupV2Protocol { let returnedStateWhenDiscardingReceivedMessage: ConcreteProtocolState let dialogUuid: UUID let lastKnownOwnInvitationNonceAndOtherMembers: (nonce: Data, otherGroupMembers: Set)? + let ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: [Data] switch startState { case .initial: returnedStateWhenDiscardingReceivedMessage = FinalState() dialogUuid = UUID() lastKnownOwnInvitationNonceAndOtherMembers = nil + ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = [] case .iNeedMoreSeed(startState: let startState): returnedStateWhenDiscardingReceivedMessage = startState dialogUuid = startState.dialogUuid lastKnownOwnInvitationNonceAndOtherMembers = startState.lastKnownOwnInvitationNonceAndOtherMembers + ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = startState.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices case .invitationReceived(startState: let startState): returnedStateWhenDiscardingReceivedMessage = startState dialogUuid = startState.dialogUuid @@ -681,6 +738,7 @@ extension GroupV2Protocol { } else { lastKnownOwnInvitationNonceAndOtherMembers = nil } + ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = [] } let groupIdentifier: GroupV2.Identifier @@ -741,7 +799,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(notNotifiedDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) let concreteMessage = InvitationOrMembersUpdatePropagatedMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupVersion: groupVersion, blobKeys: receivedBlobKeys, inviter: inviter) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -751,11 +809,12 @@ extension GroupV2Protocol { case .initial, .iNeedMoreSeed: break case .invitationReceived(let startState): - guard startState.serverBlob.groupVersion < groupVersion else { + + guard (startState.serverBlob.groupVersion < groupVersion) || (startState.serverBlob.groupVersion == groupVersion && inviter == ownedIdentity) else { return startState } - // The information we are processing is more recent than the one we had. + // The information we are processing is more recent than the one we had (or it is sent by another owned device). // Since the blob we have in an old version of the group blob, we freeze the invitation while we update the blob do { @@ -786,7 +845,7 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -821,7 +880,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: inviter, fromOwnedIdentity: ownedIdentity)) let concreteMessage = PingMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupInvitationNonce: ownGroupInvitationNonce, signatureOnGroupIdentifierAndInvitationNonceAndRecipientIdentity: signature, isReponse: false) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -876,7 +935,7 @@ extension GroupV2Protocol { let concreteMessage = DownloadGroupBlobMessage(coreProtocolMessage: coreMessage, internalServerQueryIdentifier: internalServerQueryIdentifier) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.getGroupBlob(groupIdentifier: groupIdentifier) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -884,7 +943,8 @@ extension GroupV2Protocol { return DownloadingGroupBlobState(groupIdentifier: groupIdentifier, dialogUuid: dialogUuid, invitationCollectedData: invitationCollectedData, - expectedInternalServerQueryIdentifier: internalServerQueryIdentifier, + expectedInternalServerQueryIdentifier: internalServerQueryIdentifier, + ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: ownInvitationNonceOfInvitationsAcceptedOnOtherDevices, lastKnownOwnInvitationNonceAndOtherMembers: lastKnownOwnInvitationNonceAndOtherMembers) } @@ -1160,6 +1220,7 @@ extension GroupV2Protocol { let invitationCollectedData = self.startState.invitationCollectedData let lastKnownOwnInvitationNonceAndOtherMembers = self.startState.lastKnownOwnInvitationNonceAndOtherMembers let expectedInternalServerQueryIdentifier = startState.expectedInternalServerQueryIdentifier + let ownInvitationNonceOfInvitationsAcceptedOnOtherDevices = startState.ownInvitationNonceOfInvitationsAcceptedOnOtherDevices // Check that the received server query response corresponds to the one we were waiting for. // If not, we simply discard the message. @@ -1192,7 +1253,7 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } return FinalState() @@ -1209,7 +1270,7 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } if try identityDelegate.checkExistenceOfGroupV2(withGroupWithIdentifier: groupIdentifier, of: ownedIdentity, within: obvContext) { @@ -1231,11 +1292,12 @@ extension GroupV2Protocol { // We try to decrypt the encrypted blob - guard let (inviterIdentity, serverBlobToConsolidate, blobKeys) = tryToDecrypt(encryptedServerBlob: encryptedServerBlob, using: invitationCollectedData, groupAdminPublicKey: groupAdminPublicKey, expectedGroupIdentifier: groupIdentifier) else { + guard let (inviterIdentity, signerIdentity, serverBlobToConsolidate, blobKeys) = tryToDecrypt(encryptedServerBlob: encryptedServerBlob, using: invitationCollectedData, groupAdminPublicKey: groupAdminPublicKey, expectedGroupIdentifier: groupIdentifier) else { // We could not decrypt the blob, we need more keys return INeedMoreSeedsState(groupIdentifier: groupIdentifier, dialogUuid: dialogUuid, - invitationCollectedData: invitationCollectedData, + invitationCollectedData: invitationCollectedData, + ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: ownInvitationNonceOfInvitationsAcceptedOnOtherDevices, lastKnownOwnInvitationNonceAndOtherMembers: lastKnownOwnInvitationNonceAndOtherMembers) } @@ -1267,6 +1329,7 @@ extension GroupV2Protocol { return INeedMoreSeedsState(groupIdentifier: groupIdentifier, dialogUuid: dialogUuid, invitationCollectedData: invitationCollectedData, + ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: ownInvitationNonceOfInvitationsAcceptedOnOtherDevices, lastKnownOwnInvitationNonceAndOtherMembers: lastKnownOwnInvitationNonceAndOtherMembers) } } @@ -1285,12 +1348,15 @@ extension GroupV2Protocol { if groupExistsInDB { // Update the group in DB and get back the identities that are either new or which an update invite nonce. + // If the signer is the owned identity, it means the group was updated by the owned identity. + // In that case, the identity delegate won't prompt the user in case there are new details. + let groupUpdatedByOwnedIdentity = (signerIdentity == ownedIdentity) let identitiesToPing = try identityDelegate.updateGroupV2(withGroupWithIdentifier: groupIdentifier, of: ownedIdentity, newBlobKeys: blobKeys, consolidatedServerBlob: consolidatedServerBlob, - groupUpdatedByOwnedIdentity: false, + groupUpdatedByOwnedIdentity: groupUpdatedByOwnedIdentity, within: obvContext) // Send a ping to the identities returned by the identity manager. Doing so allow us to inform them that we agreed to be part of the group. @@ -1302,7 +1368,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: identityToPing, fromOwnedIdentity: ownedIdentity)) let concreteMessage = PingMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupInvitationNonce: ownGroupInvitationNonce, signatureOnGroupIdentifierAndInvitationNonceAndRecipientIdentity: signature, isReponse: false) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -1319,14 +1385,14 @@ extension GroupV2Protocol { let childProtocolInstanceUid = UID.gen(with: prng) let coreMessage = getCoreMessageForOtherLocalProtocol( - otherCryptoProtocolId: .DownloadGroupV2Photo, + otherCryptoProtocolId: .downloadGroupV2Photo, otherProtocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = DownloadGroupV2PhotoProtocol.InitialMessage( coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, serverPhotoInfo: serverPhotoInfo) guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate child protocol message") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -1342,9 +1408,46 @@ extension GroupV2Protocol { } // If we reach this point, the group does not exist in DB, meaning we are yet to accept to be part of it. - // Prompt the user to accept. + + // We want to determine whether we should prompt the user or not. We don't want to if the invitation was already accepted on another owned device, or if we created the group, + // or if the group already exists on another owned device. - do { + // If one of the nonces found in ownInvitationNonceOfInvitationsAcceptedOnOtherDevices corresponds to the blob's own invitation nonce, we know the invitation + // was accepted on another device. + + let invitationWasAcceptedOnOtherDevice = ownInvitationNonceOfInvitationsAcceptedOnOtherDevices.contains(where: { $0 == ownGroupInvitationNonce }) + + // To determine if we created the group or if it already exists on another owned device, we check if the owned identity appears among the inviters of the invitation collected data. + // Note that this data collects the main seed candidates, and were thus received through an Oblivious channel. + + let ownedIdentityJustCreatedTheGroupOrTheGroupExistsOnAnotherOwnedDevice = invitationCollectedData.invitersInclude(ownedIdentity) + + + if invitationWasAcceptedOnOtherDevice || ownedIdentityJustCreatedTheGroupOrTheGroupExistsOnAnotherOwnedDevice { + + // We want to auto-accept the invitation, without prompting the user. + // To do so, we post a local message that will immeditaly be processed from the InvitationReceivedState. + + let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) + let concreteMessage = AutoAcceptInvitationMessage(coreProtocolMessage: coreMessage) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate FinalizeGroupCreationMessage") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + + // Since we auto-accepted the invitation, we remove any existing invitation dialog + + do { + let dialogType = ObvChannelDialogToSendType.delete + let coreMessage = getCoreMessage(for: .UserInterface(uuid: dialogUuid, ownedIdentity: ownedIdentity, dialogType: dialogType)) + let concreteProtocolMessage = DialogInformativeMessage(coreProtocolMessage: coreMessage) + if let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() { + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } + + } else { + + // Prompt the user to accept the invitation + let trustedDetailsAndPhoto = ObvGroupV2.DetailsAndPhoto(serializedGroupCoreDetails: consolidatedServerBlob.serializedGroupCoreDetails, photoURLFromEngine: .none) let otherMembers = Set(consolidatedServerBlob.getOtherGroupMembers(ownedIdentity: ownedIdentity).map({ $0.toObvGroupV2IdentityAndPermissionsAndDetails(isPending: true) })) assert(groupIdentifier.category == .server, "If we are dealing with anything else than .server, we cannot always set serializedSharedSettings to nil bellow") @@ -1363,7 +1466,8 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } // Return the new state @@ -1379,14 +1483,20 @@ extension GroupV2Protocol { /// This method uses the collected data seeds one by one until a pair allows to decrypt the encrypted blob. /// In case the owned identity is a group admin, it should have received at least one authentication private key. To determine the correct one, we look for a private received key matching the group admin public key. - private func tryToDecrypt(encryptedServerBlob: EncryptedData, using invitationCollectedData: GroupV2.InvitationCollectedData, groupAdminPublicKey: PublicKeyForAuthentication, expectedGroupIdentifier: GroupV2.Identifier) -> (inviter: ObvCryptoIdentity, blob: GroupV2.ServerBlob, blobKeys: GroupV2.BlobKeys)? { + private func tryToDecrypt(encryptedServerBlob: EncryptedData, using invitationCollectedData: GroupV2.InvitationCollectedData, groupAdminPublicKey: PublicKeyForAuthentication, expectedGroupIdentifier: GroupV2.Identifier) -> (inviter: ObvCryptoIdentity, signer: ObvCryptoIdentity, blob: GroupV2.ServerBlob, blobKeys: GroupV2.BlobKeys)? { for (inviter, blobMainSeed) in invitationCollectedData.inviterIdentityAndBlobMainSeedCandidates { for blobVersionSeed in invitationCollectedData.blobVersionSeedCandidates { let blob: GroupV2.ServerBlob + let signer: ObvCryptoIdentity do { - blob = try GroupV2.ServerBlob(encryptedServerBlob: encryptedServerBlob, blobMainSeed: blobMainSeed, blobVersionSeed: blobVersionSeed, expectedGroupIdentifier: expectedGroupIdentifier, solveChallengeDelegate: solveChallengeDelegate) + (blob, signer) = try GroupV2.ServerBlob.decryptThenCheckSignature( + encryptedServerBlob: encryptedServerBlob, + blobMainSeed: blobMainSeed, + blobVersionSeed: blobVersionSeed, + expectedGroupIdentifier: expectedGroupIdentifier, + solveChallengeDelegate: solveChallengeDelegate) } catch { // We could not decrypt the blob with these seeds. Wy try another pair of candidates. debugPrint(error.localizedDescription) @@ -1407,7 +1517,7 @@ extension GroupV2Protocol { let blobKeys = GroupV2.BlobKeys(blobMainSeed: blobMainSeed, blobVersionSeed: blobVersionSeed, groupAdminServerAuthenticationPrivateKey: groupAdminServerAuthenticationPrivateKey) - return (inviter, blob, blobKeys) + return (inviter, signer, blob, blobKeys) } } @@ -1527,7 +1637,7 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { assertionFailure(error.localizedDescription) // Continue anyway @@ -1579,7 +1689,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: memberWhoSignedTheNonce.identity, fromOwnedIdentity: ownedIdentity)) let concreteMessage = PingMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupInvitationNonce: ownGroupInvitationNonce, signatureOnGroupIdentifierAndInvitationNonceAndRecipientIdentity: signature, isReponse: true) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -1642,6 +1752,7 @@ extension GroupV2Protocol { enum ReceivedMessageType { case dialogAcceptGroupV2InvitationMessage(receivedMessage: DialogAcceptGroupV2InvitationMessage) case propagateInvitationDialogResponseMessage(receivedMessage: PropagateInvitationDialogResponseMessage) + case autoAcceptInvitationFromOwnedIdentityMessage(receivedMessage: AutoAcceptInvitationMessage) } init?(startState: StartStateType, receivedMessage: ReceivedMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { @@ -1654,6 +1765,11 @@ extension GroupV2Protocol { receivedMessage: receivedMessage, concreteCryptoProtocol: concreteCryptoProtocol) case .propagateInvitationDialogResponseMessage(let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + case .autoAcceptInvitationFromOwnedIdentityMessage(let receivedMessage): super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, expectedReceptionChannelInfo: .Local, receivedMessage: receivedMessage, @@ -1686,23 +1802,36 @@ extension GroupV2Protocol { let dialogUuidFromMessage: UUID? let invitationAccepted: Bool let propagated: Bool + let autoAccepted: Bool let propagatedOwnGroupInvitationNonce: Data? + let createdByMeOnOtherDevice: Bool switch receivedMessage { case .dialogAcceptGroupV2InvitationMessage(let receivedMessage): dialogUuidFromMessage = receivedMessage.dialogUuid invitationAccepted = receivedMessage.invitationAccepted propagated = false + autoAccepted = false propagatedOwnGroupInvitationNonce = nil + createdByMeOnOtherDevice = false case .propagateInvitationDialogResponseMessage(let receivedMessage): dialogUuidFromMessage = nil invitationAccepted = receivedMessage.invitationAccepted propagated = true + autoAccepted = false propagatedOwnGroupInvitationNonce = receivedMessage.ownGroupInvitationNonce + createdByMeOnOtherDevice = false + case .autoAcceptInvitationFromOwnedIdentityMessage: + dialogUuidFromMessage = nil + invitationAccepted = true + propagated = false + autoAccepted = true + propagatedOwnGroupInvitationNonce = nil + createdByMeOnOtherDevice = true } // Check the dialog UUID (unless we are receiving a propagated response) - guard dialogUuid == dialogUuidFromMessage || propagated else { + guard dialogUuid == dialogUuidFromMessage || propagated || autoAccepted else { assertionFailure() @@ -1715,11 +1844,39 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } return returnedStateWhenDiscardingReceivedMessage } + + // If we are not in the invitation received state, the only situation where we continue this step + // is when the invitation was not accepted. + + switch startState { + case .invitationReceivedState: + break + case .downloadingGroupBlobState(startState: let _startState): + guard !invitationAccepted else { + if let propagatedOwnGroupInvitationNonce { + // The invitation was accepted for the nonce is the received message on another owned device. + // We store this information in the start state before returning it. + return _startState.addingOwnInvitationNonceOfInvitationsAcceptedOnOtherDevice(nonce: propagatedOwnGroupInvitationNonce) + } else { + return _startState + } + } + case .iNeedMoreSeed(startState: let _startState): + guard !invitationAccepted else { + if let propagatedOwnGroupInvitationNonce { + // The invitation was accepted for the nonce is the received message on another owned device. + // We store this information in the start state before returning it. + return _startState.addingOwnInvitationNonceOfInvitationsAcceptedOnOtherDevice(nonce: propagatedOwnGroupInvitationNonce) + } else { + return _startState + } + } + } // Make sure we are part of the group. Abort otherwise. // Get our own group invitation nonce from the server blob or from the last known value. @@ -1776,13 +1933,13 @@ extension GroupV2Protocol { // If we are not already dealing with a propagated invitation response, we propagate the response now to our other devices - if !propagated { + if !propagated && !autoAccepted { let otherDeviceUIDs = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) if !otherDeviceUIDs.isEmpty { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) let concreteMessage = PropagateInvitationDialogResponseMessage(coreProtocolMessage: coreMessage, invitationAccepted: invitationAccepted, ownGroupInvitationNonce: ownGroupInvitationNonce) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -1796,7 +1953,7 @@ extension GroupV2Protocol { let concreteMessage = PutGroupLogOnServerMessage(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.putGroupLog(groupIdentifier: groupIdentifier, querySignature: leaveSignature) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } do { @@ -1806,7 +1963,7 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } return RejectingInvitationOrLeavingGroupState(groupIdentifier: groupIdentifier, groupMembersToNotify: groupMembersToNotify) @@ -1830,11 +1987,13 @@ extension GroupV2Protocol { let serverBlobWithCheckedIntegrity = serverBlob.withForcedCheckedAdministratorsChainIntegrity() // We create the group in database on the basis of the information we already have. + // We use the createContactGroupV2JoinedByOwnedIdentity method even when the group was created by the onwed identity on another owned device. try identityDelegate.createContactGroupV2JoinedByOwnedIdentity(ownedIdentity, groupIdentifier: groupIdentifier, serverBlob: serverBlobWithCheckedIntegrity, blobKeys: blobKeys, + createdByMeOnOtherDevice: createdByMeOnOtherDevice, within: obvContext) // At this point, if we have a nil photoURL but have server photo info in the consolidated blob, we can launch a download if the photo is not available already. @@ -1850,14 +2009,14 @@ extension GroupV2Protocol { let childProtocolInstanceUid = UID.gen(with: prng) let coreMessage = getCoreMessageForOtherLocalProtocol( - otherCryptoProtocolId: .DownloadGroupV2Photo, + otherCryptoProtocolId: .downloadGroupV2Photo, otherProtocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = DownloadGroupV2PhotoProtocol.InitialMessage( coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, serverPhotoInfo: serverPhotoInfo) guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate child protocol message") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -1868,14 +2027,13 @@ extension GroupV2Protocol { do { let ownGroupInvitationNonce = try identityDelegate.getOwnGroupInvitationNonceOfGroupV2(withGroupWithIdentifier: groupIdentifier, of: ownedIdentity, within: obvContext) let identitiesToPing = Set(serverBlobWithCheckedIntegrity.groupMembers.map({ $0.identity })).filter({ $0 != ownedIdentity }) - assert(!identitiesToPing.isEmpty) for identity in identitiesToPing { let challenge = ChallengeType.groupJoinNonce(groupIdentifier: groupIdentifier, groupInvitationNonce: ownGroupInvitationNonce, recipientIdentity: identity) let signature = try solveChallengeDelegate.solveChallenge(challenge, for: ownedIdentity, using: prng, within: obvContext) let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: identity, fromOwnedIdentity: ownedIdentity)) let concreteMessage = PingMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupInvitationNonce: ownGroupInvitationNonce, signatureOnGroupIdentifierAndInvitationNonceAndRecipientIdentity: signature, isReponse: false) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -1888,7 +2046,7 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -1905,7 +2063,7 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } @@ -1952,6 +2110,26 @@ extension GroupV2Protocol { } + // MARK: InvitationReceivedState / AutoAcceptInvitationFromOwnedIdentityMessage + + final class ProcessAutoAcceptInvitationFromOwnedIdentityMessageFromInvitationReceivedStateStep: ProcessInvitationDialogResponseStep, TypedConcreteProtocolStep { + + let startState: InvitationReceivedState + let receivedMessage: AutoAcceptInvitationMessage + + init?(startState: InvitationReceivedState, receivedMessage: GroupV2Protocol.AutoAcceptInvitationMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .invitationReceivedState(startState: startState), + receivedMessage: .autoAcceptInvitationFromOwnedIdentityMessage(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + // MARK: DownloadingGroupBlobState / DialogAcceptGroupV2InvitationMessage final class ProcessDialogAcceptGroupV2InvitationMessageFromDownloadingGroupBlobStateStep: ProcessInvitationDialogResponseStep, TypedConcreteProtocolStep { @@ -1992,6 +2170,26 @@ extension GroupV2Protocol { } + // MARK: DownloadingGroupBlobState / AutoAcceptInvitationFromOwnedIdentityMessage + + final class ProcessAutoAcceptInvitationFromOwnedIdentityMessageFromDownloadingGroupBlobStateStep: ProcessInvitationDialogResponseStep, TypedConcreteProtocolStep { + + let startState: DownloadingGroupBlobState + let receivedMessage: AutoAcceptInvitationMessage + + init?(startState: DownloadingGroupBlobState, receivedMessage: GroupV2Protocol.AutoAcceptInvitationMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .downloadingGroupBlobState(startState: startState), + receivedMessage: .autoAcceptInvitationFromOwnedIdentityMessage(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + // MARK: INeedMoreSeedsState / DialogAcceptGroupV2InvitationMessage final class ProcessDialogAcceptGroupV2InvitationMessageFromINeedMoreSeedsStateStep: ProcessInvitationDialogResponseStep, TypedConcreteProtocolStep { @@ -2030,6 +2228,27 @@ extension GroupV2Protocol { // The step execution is defined in the superclass } + + + // MARK: INeedMoreSeedsState / AutoAcceptInvitationFromOwnedIdentityMessage + + final class ProcessAutoAcceptInvitationFromOwnedIdentityMessageFromINeedMoreSeedsStateStep: ProcessInvitationDialogResponseStep, TypedConcreteProtocolStep { + + let startState: INeedMoreSeedsState + let receivedMessage: AutoAcceptInvitationMessage + + init?(startState: INeedMoreSeedsState, receivedMessage: GroupV2Protocol.AutoAcceptInvitationMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .iNeedMoreSeed(startState: startState), + receivedMessage: .autoAcceptInvitationFromOwnedIdentityMessage(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + // MARK: - NotifyMembersOfRejectionStep @@ -2062,7 +2281,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: groupMember, fromOwnedIdentity: ownedIdentity)) let concreteMessage = InvitationRejectedBroadcastMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } return FinalState() @@ -2160,7 +2379,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) let concreteMessage = PropagateInvitationRejectedMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -2210,7 +2429,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: identity, fromOwnedIdentity: ownedIdentity)) let concreteMessage = PingMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupInvitationNonce: ownGroupInvitationNonce, signatureOnGroupIdentifierAndInvitationNonceAndRecipientIdentity: signature, isReponse: false) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -2244,7 +2463,7 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Store the own invitation nonce and other group members identities @@ -2266,7 +2485,7 @@ extension GroupV2Protocol { let concreteMessage = DownloadGroupBlobMessage(coreProtocolMessage: coreMessage, internalServerQueryIdentifier: internalServerQueryIdentifier) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.getGroupBlob(groupIdentifier: groupIdentifier) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Create an initial version of the invitation collected data @@ -2278,7 +2497,8 @@ extension GroupV2Protocol { return DownloadingGroupBlobState(groupIdentifier: groupIdentifier, dialogUuid: dialogUuid, invitationCollectedData: invitationCollectedData, - expectedInternalServerQueryIdentifier: internalServerQueryIdentifier, + expectedInternalServerQueryIdentifier: internalServerQueryIdentifier, + ownInvitationNonceOfInvitationsAcceptedOnOtherDevices: [], lastKnownOwnInvitationNonceAndOtherMembers: lastKnownOwnInvitationNonceAndOtherMembers) } @@ -2444,7 +2664,7 @@ extension GroupV2Protocol { let concreteMessage = RequestServerLockMessage(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.requestGroupBlobLock(groupIdentifier: groupIdentifier, lockNonce: lockNonce, signature: lockNonceSignature) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // Since we will be waiting for "a long time", we freeze the group @@ -2607,7 +2827,7 @@ extension GroupV2Protocol { // We try to decrypt the encrypted blob - guard let serverBlobToConsolidate = tryToDecrypt(encryptedServerBlob: encryptedServerBlob, blobMainSeed: blobMainSeed, blobVersionSeed: blobKeys.blobVersionSeed, expectedGroupIdentifier: groupIdentifier) else { + guard let (serverBlobToConsolidate, _) = tryToDecrypt(encryptedServerBlob: encryptedServerBlob, blobMainSeed: blobMainSeed, blobVersionSeed: blobKeys.blobVersionSeed, expectedGroupIdentifier: groupIdentifier) else { // We could not decrypt the blob received from the server. // This typically happens if the group was updated by some other admin but we are not aware of it yet. // Indeed, in that case, our version seed is outdated and the decryption necessarily fails. @@ -2694,7 +2914,7 @@ extension GroupV2Protocol { lockNonce: lockNonce, signature: solveChallengeSignature) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -2719,11 +2939,17 @@ extension GroupV2Protocol { /// This method uses the collected data seeds one by one until a pair allows to decrypt the encrypted blob. /// In case the owned identity is a group admin, it should have received at least one authentication private key. To determine the correct one, we look for a private received key matching the group admin public key. - private func tryToDecrypt(encryptedServerBlob: EncryptedData, blobMainSeed: Seed, blobVersionSeed: Seed, expectedGroupIdentifier: GroupV2.Identifier) -> GroupV2.ServerBlob? { + private func tryToDecrypt(encryptedServerBlob: EncryptedData, blobMainSeed: Seed, blobVersionSeed: Seed, expectedGroupIdentifier: GroupV2.Identifier) -> (blob: GroupV2.ServerBlob, signer: ObvCryptoIdentity)? { let blob: GroupV2.ServerBlob + let signer: ObvCryptoIdentity do { - blob = try GroupV2.ServerBlob(encryptedServerBlob: encryptedServerBlob, blobMainSeed: blobMainSeed, blobVersionSeed: blobVersionSeed, expectedGroupIdentifier: expectedGroupIdentifier, solveChallengeDelegate: solveChallengeDelegate) + (blob, signer) = try GroupV2.ServerBlob.decryptThenCheckSignature( + encryptedServerBlob: encryptedServerBlob, + blobMainSeed: blobMainSeed, + blobVersionSeed: blobVersionSeed, + expectedGroupIdentifier: expectedGroupIdentifier, + solveChallengeDelegate: solveChallengeDelegate) } catch { // We could not decrypt the blob with these seeds. return nil @@ -2734,7 +2960,7 @@ extension GroupV2Protocol { return nil } - return blob + return (blob, signer) } @@ -2821,7 +3047,7 @@ extension GroupV2Protocol { let concreteMessage = RequestServerLockMessage(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.requestGroupBlobLock(groupIdentifier: groupIdentifier, lockNonce: lockNonce, signature: lockNonceSignature) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // Increment fail counter and wait for the lock @@ -2847,13 +3073,13 @@ extension GroupV2Protocol { let concreteMessage = UploadGroupPhotoMessage(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.putUserData(label: serverPhotoInfo.photoServerKeyAndLabel.label, dataURL: groupPhotoURL, dataKey: serverPhotoInfo.photoServerKeyAndLabel.key) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) serverPhotoInfoOfNewUploadedPhoto = serverPhotoInfo } else { let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) let concreteMessage = FinalizeGroupUpdateMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate FinalizeGroupUpdateMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) serverPhotoInfoOfNewUploadedPhoto = nil } @@ -2915,7 +3141,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) let concreteMessage = FinalizeGroupUpdateMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate FinalizeGroupUpdateMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return UploadingUpdatedGroupPhotoState(groupIdentifier: groupIdentifier, changeset: changeset, @@ -3037,24 +3263,40 @@ extension GroupV2Protocol { if let memberDeviceUids = deviceUidsOfRemoteIdentity[member.identity], !memberDeviceUids.isEmpty { let keysToSend = keysToSend(member.hasGroupAdminPermission, true) let channelType = ObvChannelSendChannelType.ObliviousChannel(to: member.identity, remoteDeviceUids: Array(memberDeviceUids), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true) - let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .GroupV2, protocolInstanceUid: protocolInstanceUid) + let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let concreteMessage = InvitationOrMembersUpdateMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupVersion: uploadedServerBlob.groupVersion, blobKeys: keysToSend, notifiedDeviceUIDs: memberDeviceUids) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } else { let keysToSend = keysToSend(member.hasGroupAdminPermission, false) let channelType = ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: member.identity, fromOwnedIdentity: ownedIdentity) - let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .GroupV2, protocolInstanceUid: protocolInstanceUid) + let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let concreteMessage = InvitationOrMembersUpdateBroadcastMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupVersion: uploadedServerBlob.groupVersion, blobKeys: keysToSend) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } + + do { + let otherDeviceUIDs = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + if !otherDeviceUIDs.isEmpty { + let keysToSend = keysToSend(true, true) // We have admin permissions, and we send the keys through an Oblivious channel + let channelType = ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true) + let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) + let concreteMessage = InvitationOrMembersUpdateMessage(coreProtocolMessage: coreMessage, + groupIdentifier: groupIdentifier, + groupVersion: uploadedServerBlob.groupVersion, + blobKeys: keysToSend, + notifiedDeviceUIDs: otherDeviceUIDs) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -3073,10 +3315,10 @@ extension GroupV2Protocol { let challenge = ChallengeType.groupKick(encryptedAdministratorChain: encryptedAdministratorChain, groupInvitationNonce: member.groupInvitationNonce) let signature = try solveChallengeDelegate.solveChallenge(challenge, for: ownedIdentity, using: prng, within: obvContext) let channelType = ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: member.identity, fromOwnedIdentity: ownedIdentity) - let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .GroupV2, protocolInstanceUid: protocolInstanceUid) + let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let concreteMessage = KickMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, encryptedAdministratorChain: encryptedAdministratorChain, signature: signature) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -3206,7 +3448,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) let concreteMessage = PropagatedKickMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, encryptedAdministratorChain: encryptedAdministratorChain, signature: signature) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -3314,7 +3556,7 @@ extension GroupV2Protocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Delete the group @@ -3644,7 +3886,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) let concreteMessage = PropagatedGroupLeaveMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupInvitationNonce: ownGroupInvitationNonce) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Put a group left log on server @@ -3654,7 +3896,7 @@ extension GroupV2Protocol { let concreteMessage = PutGroupLogOnServerMessage(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.putGroupLog(groupIdentifier: groupIdentifier, querySignature: leaveSignature) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // Get the list of members to notify (before deleting the group) @@ -3937,7 +4179,7 @@ extension GroupV2Protocol { } let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.deleteGroupBlob(groupIdentifier: groupIdentifier, signature: signature) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // Freeze the group @@ -4099,7 +4341,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) let concreteMessage = PropagateGroupDisbandMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -4119,10 +4361,10 @@ extension GroupV2Protocol { let challenge = ChallengeType.groupKick(encryptedAdministratorChain: encryptedAdministratorChain, groupInvitationNonce: member.groupInvitationNonce) let signature = try solveChallengeDelegate.solveChallenge(challenge, for: ownedIdentity, using: prng, within: obvContext) let channelType = ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: member.identity, fromOwnedIdentity: ownedIdentity) - let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .GroupV2, protocolInstanceUid: protocolInstanceUid) + let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let concreteMessage = KickMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, encryptedAdministratorChain: encryptedAdministratorChain, signature: signature) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -4163,21 +4405,32 @@ extension GroupV2Protocol { eraseReceivedMessagesAfterReachingAFinalState = false - let contactIdentity = receivedMessage.contactIdentity - let contactDeviceUID = receivedMessage.contactDeviceUID + let remoteIdentity = receivedMessage.remoteIdentity + let remoteDeviceUID = receivedMessage.remoteDeviceUID - // Get all group identifiers, versions, and keys of groups shared with the contact + let allIdentifierVersionAndKeys: [GroupV2.IdentifierVersionAndKeys] - let allIdentifierVersionAndKeys = try identityDelegate.getAllGroupsV2IdentifierVersionAndKeysForContact(contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) + if remoteIdentity == ownedIdentity { + + allIdentifierVersionAndKeys = try identityDelegate.getAllGroupsV2IdentifierVersionAndKeys(ofOwnedIdentity: ownedIdentity, within: obvContext) + + } else { + + // Get all group identifiers, versions, and keys of groups shared with the contact + + let contactIdentity = remoteIdentity + allIdentifierVersionAndKeys = try identityDelegate.getAllGroupsV2IdentifierVersionAndKeysForContact(contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) + + } // Send the information to the contact if !allIdentifierVersionAndKeys.isEmpty { - let channelType = ObvChannelSendChannelType.ObliviousChannel(to: contactIdentity, remoteDeviceUids: [contactDeviceUID], fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: false) - let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .GroupV2, protocolInstanceUid: protocolInstanceUid) + let channelType = ObvChannelSendChannelType.ObliviousChannel(to: remoteIdentity, remoteDeviceUids: [remoteDeviceUID], fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: false) + let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUid) let concreteMessage = BlobKeysBatchAfterChannelCreationMessage(coreProtocolMessage: coreMessage, groupInfos: allIdentifierVersionAndKeys) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // We are done @@ -4220,20 +4473,20 @@ extension GroupV2Protocol { // Determine the origin of the message - guard let contactIdentity = receivedMessage.receptionChannelInfo?.getRemoteIdentity() else { + guard let remoteIdentity = receivedMessage.receptionChannelInfo?.getRemoteIdentity() else { assertionFailure() return FinalState() } let channelType = ObvChannelSendChannelType.Local(ownedIdentity: ownedIdentity) - let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .GroupV2, protocolInstanceUid: protocolInstanceUID) + let coreMessage = CoreProtocolMessage(channelType: channelType, cryptoProtocolId: .groupV2, protocolInstanceUid: protocolInstanceUID) let concreteMessage = BlobKeysAfterChannelCreationMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifierVersionAndKeys.groupIdentifier, groupVersion: groupIdentifierVersionAndKeys.groupVersion, blobKeys: groupIdentifierVersionAndKeys.blobKeys, - inviter: contactIdentity) + inviter: remoteIdentity) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } @@ -4297,14 +4550,14 @@ extension GroupV2Protocol { let childProtocolInstanceUid = UID.gen(with: prng) let coreMessage = getCoreMessageForOtherLocalProtocol( - otherCryptoProtocolId: .DownloadGroupV2Photo, + otherCryptoProtocolId: .downloadGroupV2Photo, otherProtocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = DownloadGroupV2PhotoProtocol.InitialMessage( coreProtocolMessage: coreMessage, groupIdentifier: output.groupIdentifier, serverPhotoInfo: serverPhotoInfo) guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate child protocol message") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } @@ -4320,7 +4573,7 @@ extension GroupV2Protocol { otherProtocolInstanceUid: otherProtocolInstanceUid) let concreteMessage = PingMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupInvitationNonce: ownGroupInvitationNonce, signatureOnGroupIdentifierAndInvitationNonceAndRecipientIdentity: signature, isReponse: false) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } @@ -4369,6 +4622,15 @@ extension GroupV2Protocol { guard groupExistsInDB else { return FinalState() } + + // If the pending member is a contact already, make sure it is keycloak managed + + if try identityDelegate.isIdentity(pendingMemberIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext) { + guard try identityDelegate.isContactCertifiedByOwnKeycloak(contactIdentity: pendingMemberIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) else { + // The pending member is a contact, but it is not keycloak managed. We do not send a ping to her + return FinalState() + } + } // Get the group own invitation nonce @@ -4381,7 +4643,7 @@ extension GroupV2Protocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.AsymmetricChannelBroadcast(to: pendingMemberIdentity, fromOwnedIdentity: ownedIdentity)) let concreteMessage = PingMessage(coreProtocolMessage: coreMessage, groupIdentifier: groupIdentifier, groupInvitationNonce: ownGroupInvitationNonce, signatureOnGroupIdentifierAndInvitationNonceAndRecipientIdentity: signature, isReponse: false) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // We are done diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocol.swift index 002024a5..27cc0040 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocol.swift @@ -28,7 +28,7 @@ public struct IdentityDetailsPublicationProtocol: ConcreteCryptoProtocol { static let logCategory = "IdentityDetailsPublicationProtocol" - static let id = CryptoProtocolId.IdentityDetailsPublication + static let id = CryptoProtocolId.identityDetailsPublication static let finalStateIds: [ConcreteProtocolStateId] = [StateId.DetailsSent, StateId.DetailsReceived, diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocolMessages.swift index 287f079a..bcad65fb 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocolMessages.swift @@ -30,15 +30,17 @@ extension IdentityDetailsPublicationProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case ServerPutPhoto = 1 - case SendDetails = 2 + case initial = 0 + case serverPutPhoto = 1 + case sendDetails = 2 + case propagateOwnDetails = 3 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .Initial : return InitialMessage.self - case .ServerPutPhoto : return ServerPutPhotoMessage.self - case .SendDetails : return SendDetailsMessage.self + case .initial : return InitialMessage.self + case .serverPutPhoto : return ServerPutPhotoMessage.self + case .sendDetails : return SendDetailsMessage.self + case .propagateOwnDetails : return PropagateOwnDetailsMessage.self } } } @@ -48,7 +50,7 @@ extension IdentityDetailsPublicationProtocol { struct InitialMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Initial + let id: ConcreteProtocolMessageId = MessageId.initial let coreProtocolMessage: CoreProtocolMessage let version: Int @@ -74,7 +76,7 @@ extension IdentityDetailsPublicationProtocol { struct ServerPutPhotoMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.ServerPutPhoto + let id: ConcreteProtocolMessageId = MessageId.serverPutPhoto let coreProtocolMessage: CoreProtocolMessage var encodedInputs: [ObvEncoded] { return [] } @@ -94,7 +96,7 @@ extension IdentityDetailsPublicationProtocol { struct SendDetailsMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.SendDetails + let id: ConcreteProtocolMessageId = MessageId.sendDetails let coreProtocolMessage: CoreProtocolMessage let contactIdentityDetailsElements: IdentityDetailsElements @@ -116,4 +118,35 @@ extension IdentityDetailsPublicationProtocol { } } + + + // MARK: - PropagateOwnDetailsMessage + + struct PropagateOwnDetailsMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.propagateOwnDetails + let coreProtocolMessage: CoreProtocolMessage + + let ownedIdentityDetailsElements: IdentityDetailsElements + + var encodedInputs: [ObvEncoded] { + get throws { + let encodedContactIdentityDetailsElements = try ownedIdentityDetailsElements.jsonEncode() + return [encodedContactIdentityDetailsElements.obvEncode()] + } + } + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedContactIdentityDetailsElements: Data = try message.encodedInputs.obvDecode() + self.ownedIdentityDetailsElements = try IdentityDetailsElements(encodedContactIdentityDetailsElements) + } + + init(coreProtocolMessage: CoreProtocolMessage, ownedIdentityDetailsElements: IdentityDetailsElements) { + self.coreProtocolMessage = coreProtocolMessage + self.ownedIdentityDetailsElements = ownedIdentityDetailsElements + } + + } + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocolSteps.swift index 60d07466..6c091684 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/IdentityDetailsPublicationProtocol/IdentityDetailsPublicationProtocolSteps.swift @@ -31,23 +31,27 @@ extension IdentityDetailsPublicationProtocol { enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case StartPhotoUpload = 0 - case ReceiveDetails = 1 - case SendDetails = 2 + case startPhotoUpload = 0 + case receiveDetails = 1 + case sendDetails = 2 + case receiveOwnedDetails = 3 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .StartPhotoUpload: + case .startPhotoUpload: let step = StartPhotoUploadStep(from: concreteProtocol, and: receivedMessage) return step - case .ReceiveDetails: + case .receiveDetails: let step = ReceiveDetailsStep(from: concreteProtocol, and: receivedMessage) return step - case .SendDetails: + case .sendDetails: let step = SendDetailsStep(from: concreteProtocol, and: receivedMessage) return step + case .receiveOwnedDetails: + let step = ReceiveOwnedDetailsStep(from: concreteProtocol, and: receivedMessage) + return step } } } @@ -115,7 +119,7 @@ extension IdentityDetailsPublicationProtocol { let concreteMessage = ServerPutPhotoMessage.init(coreProtocolMessage: coreMessage) let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.putUserData(label: photoServerKeyAndLabel.label, dataURL: photoURL, dataKey: photoServerKeyAndLabel.key) guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return UploadingPhotoState(ownedIdentityDetailsElements: ownedIdentityDetailsElements) @@ -137,13 +141,24 @@ extension IdentityDetailsPublicationProtocol { contactIdentityDetailsElements: ownedIdentityDetailsElements) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post SendDetailsMessage in StartPhotoUploadStep to the identity %@", log: log, type: .error, contactIndentity.debugDescription) } } + // Propagate the change to our other owned devices + + let otherDeviceUids = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + if !otherDeviceUids.isEmpty { + let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUids), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) + let concreteMessage = PropagateOwnDetailsMessage(coreProtocolMessage: coreMessage, + ownedIdentityDetailsElements: ownedIdentityDetailsElements) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + return DetailsSentState() } @@ -189,14 +204,24 @@ extension IdentityDetailsPublicationProtocol { contactIdentityDetailsElements: ownedIdentityDetailsElements) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } do { - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not post SendDetailsMessage in SendDetailsStep to identity %@", log: log, type: .error, contactIdentity.debugDescription) } } + // Propagate the change to our other owned devices + let otherDeviceUids = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + if !otherDeviceUids.isEmpty { + let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUids), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) + let concreteMessage = PropagateOwnDetailsMessage(coreProtocolMessage: coreMessage, + ownedIdentityDetailsElements: ownedIdentityDetailsElements) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + return DetailsSentState() } @@ -258,7 +283,7 @@ extension IdentityDetailsPublicationProtocol { // Launch a child protocol instance for downloading the photo. To do so, we post an appropriate message on the loopback channel. In this particular case, we do not need to "link" this protocol to the current protocol. let childProtocolInstanceUid = UID.gen(with: prng) - let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .DownloadIdentityPhoto, + let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .downloadIdentityPhoto, otherProtocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = DownloadIdentityPhotoChildProtocol.InitialMessage( coreProtocolMessage: coreMessage, @@ -268,7 +293,7 @@ extension IdentityDetailsPublicationProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -288,4 +313,59 @@ extension IdentityDetailsPublicationProtocol { } + + // MARK: - ReceiveOwnedDetailsStep + + final class ReceiveOwnedDetailsStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PropagateOwnDetailsMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: IdentityDetailsPublicationProtocol.PropagateOwnDetailsMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let log = OSLog(subsystem: delegateManager.logSubsystem, category: IdentityDetailsPublicationProtocol.logCategory) + + let ownedIdentityDetailsElements = receivedMessage.ownedIdentityDetailsElements + + let photoDownloadNeeded = try identityDelegate.updateOwnedPublishedDetailsWithOtherDetailsIfNewer(ownedIdentity, with: ownedIdentityDetailsElements, within: obvContext) + + do { + if photoDownloadNeeded { + let childProtocolInstanceUid = UID.gen(with: prng) + let coreMessage = getCoreMessageForOtherLocalProtocol( + otherCryptoProtocolId: .downloadIdentityPhoto, + otherProtocolInstanceUid: childProtocolInstanceUid) + let childProtocolInitialMessage = DownloadIdentityPhotoChildProtocol.InitialMessage( + coreProtocolMessage: coreMessage, + contactIdentity: ownedIdentity, + contactIdentityDetailsElements: ownedIdentityDetailsElements) + guard let messageToSend = childProtocolInitialMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } catch { + os_log("Failed to request the download of the new owned profile picture: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + // In production, continue + } + + return DetailsReceivedState() + + } + + } + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocol.swift new file mode 100644 index 00000000..7cc49c17 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocol.swift @@ -0,0 +1,73 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import OlvidUtils + +public struct KeycloakBindingAndUnbindingProtocol: ConcreteCryptoProtocol { + + static let logCategory = "KeycloakBindingAndUnbindingProtocol" + + static let id = CryptoProtocolId.keycloakBindingAndUnbinding + + private static let errorDomain = "KeycloakBindingAndUnbindingProtocol" + + private static func makeError(message: String) -> Error { + let userInfo = [NSLocalizedFailureReasonErrorKey: message] + return NSError(domain: errorDomain, code: 0, userInfo: userInfo) + } + + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Finished] + + let ownedIdentity: ObvCryptoIdentity + let currentState: ConcreteProtocolState + + let delegateManager: ObvProtocolDelegateManager + let obvContext: ObvContext + let prng: PRNGService + let instanceUid: UID + + init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { + self.currentState = currentState + self.ownedIdentity = ownedCryptoIdentity + self.delegateManager = delegateManager + self.obvContext = obvContext + self.prng = prng + self.instanceUid = instanceUid + } + + static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { + return StateId(rawValue: rawValue) + } + + static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { + return MessageId(rawValue: rawValue) + } + + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } + +} + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocolMessages.swift new file mode 100644 index 00000000..a8907c35 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocolMessages.swift @@ -0,0 +1,191 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvTypes +import JWS + +// MARK: - Protocol Messages + +extension KeycloakBindingAndUnbindingProtocol { + + enum MessageId: Int, ConcreteProtocolMessageId { + + case ownedIdentityKeycloakBinding = 0 + case ownedIdentityKeycloakUnbinding = 1 + case propagateKeycloakBinding = 2 + case propagateKeycloakUnbinding = 3 + + var concreteProtocolMessageType: ConcreteProtocolMessage.Type { + switch self { + case .ownedIdentityKeycloakBinding : return OwnedIdentityKeycloakBindingMessage.self + case .ownedIdentityKeycloakUnbinding : return OwnedIdentityKeycloakUnbindingMessage.self + case .propagateKeycloakBinding : return PropagateKeycloakBindingMessage.self + case .propagateKeycloakUnbinding : return PropagateKeycloakUnbindingMessage.self + } + } + + } + + + // MARK: - OwnedIdentityKeycloakBindingMessage + + struct OwnedIdentityKeycloakBindingMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.ownedIdentityKeycloakBinding + let coreProtocolMessage: CoreProtocolMessage + + let keycloakState: ObvKeycloakState + let keycloakUserId: String + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage, keycloakState: ObvKeycloakState, keycloakUserId: String) { + self.coreProtocolMessage = coreProtocolMessage + self.keycloakState = keycloakState + self.keycloakUserId = keycloakUserId + } + + var encodedInputs: [ObvEncoded] { + get throws { + return [try keycloakState.obvEncode(), keycloakUserId.obvEncode()] + } + } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + (keycloakState, keycloakUserId) = try encodedElements.obvDecode() + } + + } + + + // MARK: - OwnedIdentityKeycloakUnbindingMessage + + struct OwnedIdentityKeycloakUnbindingMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.ownedIdentityKeycloakUnbinding + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + } + + + // MARK: - PropagateKeycloakBindingMessage + + struct PropagateKeycloakBindingMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.propagateKeycloakBinding + let coreProtocolMessage: CoreProtocolMessage + + let keycloakState: ObvKeycloakState + let keycloakUserId: String + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage, keycloakUserId: String, keycloakState: ObvKeycloakState) { + assert(keycloakState.signatureVerificationKey != nil, "signatureVerificationKey is expected to be non-nil during a binding process") + self.coreProtocolMessage = coreProtocolMessage + self.keycloakState = keycloakState + self.keycloakUserId = keycloakUserId + } + + var encodedInputs: [ObvEncoded] { + get throws { + guard let signatureVerificationKey = keycloakState.signatureVerificationKey else { + assertionFailure() + throw Self.makeError(message: "The signatureVerificationKey is expected to be non nil") + } + return [ + keycloakUserId.obvEncode(), + keycloakState.keycloakServer.obvEncode(), + keycloakState.clientId.obvEncode(), + keycloakState.clientSecret?.obvEncode() ?? "".obvEncode(), + try keycloakState.jwks.obvEncode(), + try signatureVerificationKey.obvEncode(), + ] + } + } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 6 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded inputs") } + self.keycloakUserId = try message.encodedInputs[0].obvDecode() + let keycloakServer: URL = try message.encodedInputs[1].obvDecode() + let clientId: String = try message.encodedInputs[2].obvDecode() + let clientSecret: String = try message.encodedInputs[3].obvDecode() + let jwks: ObvJWKSet = try message.encodedInputs[4].obvDecode() + let signatureVerificationKey: ObvJWK = try message.encodedInputs[5].obvDecode() + self.keycloakState = ObvKeycloakState( + keycloakServer: keycloakServer, + clientId: clientId, + clientSecret: clientSecret.isEmpty ? nil : clientSecret, + jwks: jwks, + rawAuthState: nil, + signatureVerificationKey: signatureVerificationKey, + latestLocalRevocationListTimestamp: nil, + latestGroupUpdateTimestamp: nil) + } + + } + + + // MARK: - PropagateKeycloakUnbindingMessage + + struct PropagateKeycloakUnbindingMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.propagateKeycloakUnbinding + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/CallHelper.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocolStates.swift similarity index 50% rename from iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/CallHelper.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocolStates.swift index 882cf8d5..6ae0a491 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/CallHelper.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -16,23 +16,38 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import Foundation -import ObvUICoreData +import ObvEncoder +// MARK: - Protocol States -struct CallHelper { +extension KeycloakBindingAndUnbindingProtocol { - private init() {} + enum StateId: Int, ConcreteProtocolStateId { - static func getContactInfo(_ contactObjectID: TypeSafeManagedObjectID) -> ContactInfo? { - var contact: ContactInfo? - ObvStack.shared.viewContext.performAndWait { - if let persistedContact = try? PersistedObvContactIdentity.get(objectID: contactObjectID, within: ObvStack.shared.viewContext) { - contact = ContactInfoImpl(contact: persistedContact) + case InitialState = 0 + case Finished = 1 + + var concreteProtocolStateType: ConcreteProtocolState.Type { + switch self { + case .InitialState : return ConcreteProtocolInitialState.self + case .Finished : return FinishedState.self } } - return contact + + } + + struct FinishedState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.Finished + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + } } + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocolSteps.swift new file mode 100644 index 00000000..1550b0c7 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakBindingAndUnbindingProtocol/KeycloakBindingAndUnbindingProtocolSteps.swift @@ -0,0 +1,310 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvCrypto +import ObvEncoder +import ObvTypes +import ObvMetaManager +import JWS +import OlvidUtils + + +// MARK: - Protocol Steps + +extension KeycloakBindingAndUnbindingProtocol { + + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { + case ownedIdentityKeycloakBinding = 0 + case ownedIdentityKeycloakUnbinding = 1 + + func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { + switch self { + case .ownedIdentityKeycloakBinding: + if let step = OwnedIdentityKeycloakBindingFromOwnedIdentityKeycloakBindingMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = OwnedIdentityKeycloakBindingFromPropagateKeycloakBindingMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else { + return nil + } + case .ownedIdentityKeycloakUnbinding: + if let step = OwnedIdentityKeycloakUnbindingFromOwnedIdentityKeycloakUnbindingMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = OwnedIdentityKeycloakUnbindingFromPropagateKeycloakUnbindingMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else { + return nil + } + } + } + + } + + + // MARK: - OwnedIdentityKeycloakBindingStep + + class OwnedIdentityKeycloakBindingStep: ProtocolStep { + + private let startState: ConcreteProtocolInitialState + private let receivedMessage: ReceivedMessageType + + enum ReceivedMessageType { + case ownedIdentityKeycloakBinding(receivedMessage: OwnedIdentityKeycloakBindingMessage) + case propagateKeycloakBinding(receivedMessage: PropagateKeycloakBindingMessage) + } + + init?(startState: ConcreteProtocolInitialState, receivedMessage: ReceivedMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + switch receivedMessage { + case .ownedIdentityKeycloakBinding(let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + case .propagateKeycloakBinding(let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + eraseReceivedMessagesAfterReachingAFinalState = false + + let keycloakState: ObvKeycloakState + let keycloakUserId: String + let propagationNeeded: Bool + + switch receivedMessage { + case .ownedIdentityKeycloakBinding(let receivedMessage): + keycloakState = receivedMessage.keycloakState + keycloakUserId = receivedMessage.keycloakUserId + propagationNeeded = true + case .propagateKeycloakBinding(let receivedMessage): + keycloakState = receivedMessage.keycloakState + keycloakUserId = receivedMessage.keycloakUserId + propagationNeeded = false + } + + // Bind the owned identity + + try identityDelegate.bindOwnedIdentityToKeycloak( + ownedCryptoIdentity: ownedIdentity, + keycloakUserId: keycloakUserId, + keycloakState: keycloakState, + within: obvContext) + + // Propagate the binding to other owned devices + + if propagationNeeded { + + let otherDeviceUIDs = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + if !otherDeviceUIDs.isEmpty { + let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) + let concreteMessage = PropagateKeycloakBindingMessage( + coreProtocolMessage: coreMessage, + keycloakUserId: keycloakUserId, + keycloakState: keycloakState) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + } else { + + do { + let notificationDelegate = self.notificationDelegate + let ownedIdentity = self.ownedIdentity + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvProtocolNotification.keycloakSynchronizationRequired(ownedIdentity: ownedIdentity) + .postOnBackgroundQueue(within: notificationDelegate) + } + } catch { + assertionFailure(error.localizedDescription) // In production, continue anyway + } + + } + + // Return the final state + + return FinishedState() + + } + + } + + + // MARK: OwnedIdentityKeycloakBindingStep from OwnedIdentityKeycloakBindingMessage + + final class OwnedIdentityKeycloakBindingFromOwnedIdentityKeycloakBindingMessageStep: OwnedIdentityKeycloakBindingStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: OwnedIdentityKeycloakBindingMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: OwnedIdentityKeycloakBindingMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: startState, + receivedMessage: .ownedIdentityKeycloakBinding(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: OwnedIdentityKeycloakBindingStep from PropagateKeycloakBindingMessage + + final class OwnedIdentityKeycloakBindingFromPropagateKeycloakBindingMessageStep: OwnedIdentityKeycloakBindingStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PropagateKeycloakBindingMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: PropagateKeycloakBindingMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: startState, + receivedMessage: .propagateKeycloakBinding(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: - OwnedIdentityKeycloakUnbindingStep + + class OwnedIdentityKeycloakUnbindingStep: ProtocolStep { + + private let startState: ConcreteProtocolInitialState + private let receivedMessage: ReceivedMessageType + + enum ReceivedMessageType { + case ownedIdentityKeycloakUnbinding(receivedMessage: OwnedIdentityKeycloakUnbindingMessage) + case propagateKeycloakUnbinding(receivedMessage: PropagateKeycloakUnbindingMessage) + } + + init?(startState: ConcreteProtocolInitialState, receivedMessage: ReceivedMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + switch receivedMessage { + case .ownedIdentityKeycloakUnbinding(let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + case .propagateKeycloakUnbinding(let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + eraseReceivedMessagesAfterReachingAFinalState = false + + let propagationNeeded: Bool + + switch receivedMessage { + case .ownedIdentityKeycloakUnbinding: + propagationNeeded = true + case .propagateKeycloakUnbinding: + propagationNeeded = false + } + + // Unbind the owned identity + + try identityDelegate.unbindOwnedIdentityFromKeycloak( + ownedCryptoIdentity: ownedIdentity, + within: obvContext) + + // Propagate the binding to other owned devices + + if propagationNeeded { + + let otherDeviceUIDs = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + if !otherDeviceUIDs.isEmpty { + let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) + let concreteMessage = PropagateKeycloakUnbindingMessage(coreProtocolMessage: coreMessage) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + } + + // Return the final state + + return FinishedState() + + } + + } + + + // MARK: OwnedIdentityKeycloakUnbindingStep from OwnedIdentityKeycloakUnbindingMessage + + final class OwnedIdentityKeycloakUnbindingFromOwnedIdentityKeycloakUnbindingMessageStep: OwnedIdentityKeycloakUnbindingStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: OwnedIdentityKeycloakUnbindingMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: OwnedIdentityKeycloakUnbindingMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: startState, + receivedMessage: .ownedIdentityKeycloakUnbinding(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: OwnedIdentityKeycloakUnbindingStep from PropagateKeycloakUnbindingMessage + + final class OwnedIdentityKeycloakUnbindingFromPropagateKeycloakUnbindingMessageStep: OwnedIdentityKeycloakUnbindingStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PropagateKeycloakUnbindingMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: PropagateKeycloakUnbindingMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: startState, + receivedMessage: .propagateKeycloakUnbinding(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocol.swift similarity index 83% rename from Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocol.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocol.swift index c981d4a0..bc375676 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,7 +29,7 @@ public struct KeycloakContactAdditionProtocol: ConcreteCryptoProtocol { static let logCategory = "KeycloakContactAdditionProtocol" - static let id = CryptoProtocolId.KeycloakContactAddition + static let id = CryptoProtocolId.keycloakContactAddition private static let errorDomain = "KeycloakContactAdditionProtocol" @@ -38,7 +38,7 @@ public struct KeycloakContactAdditionProtocol: ConcreteCryptoProtocol { return NSError(domain: errorDomain, code: 0, userInfo: userInfo) } - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Finished] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.finished] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState @@ -65,13 +65,8 @@ public struct KeycloakContactAdditionProtocol: ConcreteCryptoProtocol { return MessageId(rawValue: rawValue) } - static let allStepIds: [ConcreteProtocolStepId] = [ - StepId.VerifyContactAndStartDeviceDiscovery, - StepId.AddContactAndSendRequest, - StepId.ProcessPropagatedContactAddition, - StepId.ProcessReceivedKeycloakInvite, - StepId.AddContactAndSendConfirmation, - StepId.ProcessConfirmation - ] + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolMessages.swift similarity index 90% rename from Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolMessages.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolMessages.swift index 87ac7f9e..e41511f0 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,21 +25,21 @@ import ObvCrypto extension KeycloakContactAdditionProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case DeviceDiscoveryDone = 1 - case PropagateContactAdditionToOtherDevices = 2 - case InviteKeycloakContact = 3 - case CheckForRevocationServerQuery = 4 - case Confirmation = 5 + case initial = 0 + case deviceDiscoveryDone = 1 + case propagateContactAdditionToOtherDevices = 2 + case inviteKeycloakContact = 3 + case checkForRevocationServerQuery = 4 + case confirmation = 5 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .Initial : return InitialMessage.self - case .DeviceDiscoveryDone : return DeviceDiscoveryDoneMessage.self - case .PropagateContactAdditionToOtherDevices: return PropagateContactAdditionToOtherDevicesMessage.self - case .InviteKeycloakContact : return InviteKeycloakContactMessage.self - case .CheckForRevocationServerQuery : return CheckForRevocationServerQueryMessage.self - case .Confirmation : return ConfirmationMessage.self + case .initial : return InitialMessage.self + case .deviceDiscoveryDone : return DeviceDiscoveryDoneMessage.self + case .propagateContactAdditionToOtherDevices: return PropagateContactAdditionToOtherDevicesMessage.self + case .inviteKeycloakContact : return InviteKeycloakContactMessage.self + case .checkForRevocationServerQuery : return CheckForRevocationServerQueryMessage.self + case .confirmation : return ConfirmationMessage.self } } @@ -49,7 +49,7 @@ extension KeycloakContactAdditionProtocol { struct InitialMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Initial + let id: ConcreteProtocolMessageId = MessageId.initial let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -81,7 +81,7 @@ extension KeycloakContactAdditionProtocol { struct DeviceDiscoveryDoneMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DeviceDiscoveryDone + let id: ConcreteProtocolMessageId = MessageId.deviceDiscoveryDone let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -106,7 +106,7 @@ extension KeycloakContactAdditionProtocol { struct PropagateContactAdditionToOtherDevicesMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateContactAdditionToOtherDevices + let id: ConcreteProtocolMessageId = MessageId.propagateContactAdditionToOtherDevices let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -151,7 +151,7 @@ extension KeycloakContactAdditionProtocol { struct InviteKeycloakContactMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InviteKeycloakContact + let id: ConcreteProtocolMessageId = MessageId.inviteKeycloakContact let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -191,7 +191,7 @@ extension KeycloakContactAdditionProtocol { struct CheckForRevocationServerQueryMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.CheckForRevocationServerQuery + let id: ConcreteProtocolMessageId = MessageId.checkForRevocationServerQuery let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -217,7 +217,7 @@ extension KeycloakContactAdditionProtocol { struct ConfirmationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Confirmation + let id: ConcreteProtocolMessageId = MessageId.confirmation let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolStates.swift similarity index 87% rename from Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolStates.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolStates.swift index bc17269b..dc7b08c3 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -28,19 +28,19 @@ extension KeycloakContactAdditionProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 - case WaitingForDeviceDiscovery = 1 - case WaitingForConfirmation = 2 - case CheckingForRevocation = 3 - case Finished = 4 + case initialState = 0 + case waitingForDeviceDiscovery = 1 + case waitingForConfirmation = 2 + case checkingForRevocation = 3 + case finished = 4 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .WaitingForDeviceDiscovery : return WaitingForDeviceDiscoveryState.self - case .WaitingForConfirmation : return WaitingForConfirmationState.self - case .CheckingForRevocation : return CheckingForRevocationState.self - case .Finished : return FinishedState.self + case .initialState : return ConcreteProtocolInitialState.self + case .waitingForDeviceDiscovery : return WaitingForDeviceDiscoveryState.self + case .waitingForConfirmation : return WaitingForConfirmationState.self + case .checkingForRevocation : return CheckingForRevocationState.self + case .finished : return FinishedState.self } } @@ -48,7 +48,7 @@ extension KeycloakContactAdditionProtocol { struct WaitingForDeviceDiscoveryState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForDeviceDiscovery + let id: ConcreteProtocolStateId = StateId.waitingForDeviceDiscovery let contactIdentity: ObvCryptoIdentity let identityCoreDetails: ObvIdentityCoreDetails @@ -81,7 +81,7 @@ extension KeycloakContactAdditionProtocol { struct WaitingForConfirmationState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForConfirmation + let id: ConcreteProtocolStateId = StateId.waitingForConfirmation let contactIdentity: ObvCryptoIdentity let keycloakServerURL: URL @@ -105,7 +105,7 @@ extension KeycloakContactAdditionProtocol { struct CheckingForRevocationState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.CheckingForRevocation + let id: ConcreteProtocolStateId = StateId.checkingForRevocation let contactIdentity: ObvCryptoIdentity let identityCoreDetails: ObvIdentityCoreDetails @@ -138,7 +138,7 @@ extension KeycloakContactAdditionProtocol { struct FinishedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Finished + let id: ConcreteProtocolStateId = StateId.finished init(_: ObvEncoded) {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolSteps.swift similarity index 90% rename from Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolSteps.swift rename to Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolSteps.swift index 1ded007e..5d487e65 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/KeycloakProtocols/KeycloakContactAdditionProtocol/KeycloakContactAdditionProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -32,32 +32,33 @@ import OlvidUtils extension KeycloakContactAdditionProtocol { - enum StepId: Int, ConcreteProtocolStepId { - case VerifyContactAndStartDeviceDiscovery = 0 - case AddContactAndSendRequest = 1 - case ProcessPropagatedContactAddition = 2 - case ProcessReceivedKeycloakInvite = 3 - case AddContactAndSendConfirmation = 4 - case ProcessConfirmation = 5 + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { + + case verifyContactAndStartDeviceDiscovery = 0 + case addContactAndSendRequest = 1 + case processPropagatedContactAddition = 2 + case processReceivedKeycloakInvite = 3 + case addContactAndSendConfirmation = 4 + case processConfirmation = 5 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .VerifyContactAndStartDeviceDiscovery: + case .verifyContactAndStartDeviceDiscovery: let step = VerifyContactAndStartDeviceDiscoveryStep(from: concreteProtocol, and: receivedMessage) return step - case .AddContactAndSendRequest: + case .addContactAndSendRequest: let step = AddContactAndSendRequestStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessPropagatedContactAddition: + case .processPropagatedContactAddition: let step = ProcessPropagatedContactAdditionStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessReceivedKeycloakInvite: + case .processReceivedKeycloakInvite: let step = ProcessReceivedKeycloakInviteStep(from: concreteProtocol, and: receivedMessage) return step - case .AddContactAndSendConfirmation: + case .addContactAndSendConfirmation: let step = AddContactAndSendConfirmationStep(from: concreteProtocol, and: receivedMessage) return step - case .ProcessConfirmation: + case .processConfirmation: let step = ProcessConfirmationStep(from: concreteProtocol, and: receivedMessage) return step } @@ -129,8 +130,8 @@ extension KeycloakContactAdditionProtocol { } guard let _ = LinkBetweenProtocolInstances(parentProtocolInstance: thisProtocolInstance, childProtocolInstanceUid: childProtocolInstanceUid, - expectedChildStateRawId: DeviceDiscoveryForRemoteIdentityProtocol.StateId.DeviceUidsReceived.rawValue, - messageToSendRawId: DeviceDiscoveryForContactIdentityProtocol.MessageId.ChildProtocolReachedExpectedState.rawValue) + expectedChildStateRawId: DeviceDiscoveryForRemoteIdentityProtocol.StateId.deviceUidsReceived.rawValue, + messageToSendRawId: ContactDeviceDiscoveryProtocol.MessageId.childProtocolReachedExpectedState.rawValue) else { os_log("Could not create a link between protocol instances", log: log, type: .fault) return FinishedState() @@ -139,7 +140,7 @@ extension KeycloakContactAdditionProtocol { // To actually create the child protocol instance, we post an appropriate message on the loopback channel let coreMessage = getCoreMessageForOtherLocalProtocol( - otherCryptoProtocolId: .DeviceDiscoveryForRemoteIdentity, + otherCryptoProtocolId: .deviceDiscoveryForRemoteIdentity, otherProtocolInstanceUid: childProtocolInstanceUid) let childProtocolInitialMessage = DeviceDiscoveryForRemoteIdentityProtocol.InitialMessage( coreProtocolMessage: coreMessage, @@ -148,7 +149,7 @@ extension KeycloakContactAdditionProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return WaitingForDeviceDiscoveryState(contactIdentity: contactIdentity, identityCoreDetails: userCoreDetails, keycloakServerURL: keycloakServerUrl, signedOwnedDetails: signedOwnedDetails.signedUserDetails) @@ -195,11 +196,11 @@ extension KeycloakContactAdditionProtocol { try identityDelegate.addContactIdentity(contactIdentity, with: identityCoreDetails, andTrustOrigin: trustOrigin, forOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) for contactDeviceUid in contactDeviceUids { - try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } } else { contactCreated = false - try identityDelegate.addTrustOriginIfTrustWouldBeIncreased(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) + try identityDelegate.addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) // No need to add devices, they should be in sync already } @@ -213,7 +214,7 @@ extension KeycloakContactAdditionProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Send an "invitation" to all contact devices @@ -221,7 +222,7 @@ extension KeycloakContactAdditionProtocol { let coreMessage = self.getCoreMessage(for: .AsymmetricChannel(to: contactIdentity, remoteDeviceUids: Array(contactDeviceUids), fromOwnedIdentity: ownedIdentity)) let concreteMessage = InviteKeycloakContactMessage(coreProtocolMessage: coreMessage, contactIdentity: ownedIdentity, signedContactDetails: signedOwnedDetails, contactDeviceUids: Array(ownedDeviceUids), keycloakServerURL: keycloakServerURL) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) if contactCreated { return WaitingForConfirmationState(contactIdentity: contactIdentity, keycloakServerUrl: keycloakServerURL) @@ -260,10 +261,10 @@ extension KeycloakContactAdditionProtocol { try identityDelegate.addContactIdentity(contactIdentity, with: identityCoreDetails, andTrustOrigin: trustOrigin, forOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) for contactDeviceUid in contactDeviceUids { - try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } } else { - try identityDelegate.addTrustOriginIfTrustWouldBeIncreased(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) + try identityDelegate.addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) // No need to add devices, they should be in sync already } @@ -306,7 +307,7 @@ extension KeycloakContactAdditionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: self.prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: self.prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: self.prng, within: obvContext) return FinishedState() } @@ -316,7 +317,7 @@ extension KeycloakContactAdditionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: .checkKeycloakRevocation(keycloakServerUrl: keycloakServerURL, signedContactDetails: signedContactDetails)) else { throw Self.makeError(message: "Could not generate ObvChannelServerQueryMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: self.prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: self.prng, within: obvContext) return CheckingForRevocationState(contactIdentity: contactIdentity, identityCoreDetails: userCoreDetails, contactDeviceUids: contactDeviceUids, keycloakServerURL: keycloakServerURL) } @@ -353,7 +354,7 @@ extension KeycloakContactAdditionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: self.prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: self.prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: self.prng, within: obvContext) return FinishedState() } @@ -366,10 +367,10 @@ extension KeycloakContactAdditionProtocol { try identityDelegate.addContactIdentity(contactIdentity, with: identityCoreDetails, andTrustOrigin: trustOrigin, forOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) for contactDeviceUid in contactDeviceUids { - try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } } else { - try identityDelegate.addTrustOriginIfTrustWouldBeIncreased(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) + try identityDelegate.addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) // No need to add devices, they should be in sync already } @@ -378,7 +379,7 @@ extension KeycloakContactAdditionProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: self.prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: self.prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: self.prng, within: obvContext) return FinishedState() } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocol.swift index 011abc5d..5b2ebc4d 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,13 +27,13 @@ public struct OneToOneContactInvitationProtocol: ConcreteCryptoProtocol { static let logCategory = "OneToOneContactInvitationProtocol" - static let id = CryptoProtocolId.OneToOneContactInvitation + static let id = CryptoProtocolId.oneToOneContactInvitation private static let errorDomain = "OneToOneContactInvitationProtocol" static func makeError(message: String) -> Error { NSError(domain: errorDomain, code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Finished, StateId.Cancelled] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.finished, StateId.cancelled] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolMessages.swift index ef1959b8..b7a8440b 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,35 +26,35 @@ extension OneToOneContactInvitationProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case OneToOneInvitation = 1 - case DialogInvitationSent = 2 - case PropagateOneToOneInvitation = 3 - case DialogAcceptOneToOneInvitation = 4 - case OneToOneResponse = 5 - case PropagateOneToOneResponse = 6 - case Abort = 7 - case ContactUpgradedToOneToOne = 8 - case PropagateAbort = 9 - case InitialOneToOneStatusSyncRequest = 10 - case OneToOneStatusSyncRequest = 11 - case DialogInformative = 100 + case initial = 0 + case oneToOneInvitation = 1 + case dialogInvitationSent = 2 + case propagateOneToOneInvitation = 3 + case dialogAcceptOneToOneInvitation = 4 + case oneToOneResponse = 5 + case propagateOneToOneResponse = 6 + case abort = 7 + case contactUpgradedToOneToOne = 8 + case propagateAbort = 9 + case initialOneToOneStatusSyncRequest = 10 + case oneToOneStatusSyncRequest = 11 + case dialogInformative = 100 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .Initial : return InitialMessage.self - case .OneToOneInvitation : return OneToOneInvitationMessage.self - case .DialogInvitationSent : return DialogInvitationSentMessage.self - case .PropagateOneToOneInvitation : return PropagateOneToOneInvitationMessage.self - case .DialogAcceptOneToOneInvitation : return DialogAcceptOneToOneInvitationMessage.self - case .OneToOneResponse : return OneToOneResponseMessage.self - case .PropagateOneToOneResponse : return PropagateOneToOneResponseMessage.self - case .Abort : return AbortMessage.self - case .ContactUpgradedToOneToOne : return ContactUpgradedToOneToOneMessage.self - case .PropagateAbort : return PropagateAbortMessage.self - case .InitialOneToOneStatusSyncRequest : return InitialOneToOneStatusSyncRequestMessage.self - case .OneToOneStatusSyncRequest : return OneToOneStatusSyncRequestMessage.self - case .DialogInformative : return DialogInformativeMessage.self + case .initial : return InitialMessage.self + case .oneToOneInvitation : return OneToOneInvitationMessage.self + case .dialogInvitationSent : return DialogInvitationSentMessage.self + case .propagateOneToOneInvitation : return PropagateOneToOneInvitationMessage.self + case .dialogAcceptOneToOneInvitation : return DialogAcceptOneToOneInvitationMessage.self + case .oneToOneResponse : return OneToOneResponseMessage.self + case .propagateOneToOneResponse : return PropagateOneToOneResponseMessage.self + case .abort : return AbortMessage.self + case .contactUpgradedToOneToOne : return ContactUpgradedToOneToOneMessage.self + case .propagateAbort : return PropagateAbortMessage.self + case .initialOneToOneStatusSyncRequest : return InitialOneToOneStatusSyncRequestMessage.self + case .oneToOneStatusSyncRequest : return OneToOneStatusSyncRequestMessage.self + case .dialogInformative : return DialogInformativeMessage.self } } @@ -65,7 +65,7 @@ extension OneToOneContactInvitationProtocol { struct InitialMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Initial + let id: ConcreteProtocolMessageId = MessageId.initial let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -95,7 +95,7 @@ extension OneToOneContactInvitationProtocol { struct DialogInvitationSentMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DialogInvitationSent + let id: ConcreteProtocolMessageId = MessageId.dialogInvitationSent let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -130,7 +130,7 @@ extension OneToOneContactInvitationProtocol { struct OneToOneInvitationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.OneToOneInvitation + let id: ConcreteProtocolMessageId = MessageId.oneToOneInvitation let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -158,7 +158,7 @@ extension OneToOneContactInvitationProtocol { struct PropagateOneToOneInvitationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateOneToOneInvitation + let id: ConcreteProtocolMessageId = MessageId.propagateOneToOneInvitation let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -188,7 +188,7 @@ extension OneToOneContactInvitationProtocol { struct DialogAcceptOneToOneInvitationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DialogAcceptOneToOneInvitation + let id: ConcreteProtocolMessageId = MessageId.dialogAcceptOneToOneInvitation let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -230,7 +230,7 @@ extension OneToOneContactInvitationProtocol { struct OneToOneResponseMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.OneToOneResponse + let id: ConcreteProtocolMessageId = MessageId.oneToOneResponse let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -262,7 +262,7 @@ extension OneToOneContactInvitationProtocol { struct PropagateOneToOneResponseMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateOneToOneResponse + let id: ConcreteProtocolMessageId = MessageId.propagateOneToOneResponse let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -294,7 +294,7 @@ extension OneToOneContactInvitationProtocol { struct AbortMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Abort + let id: ConcreteProtocolMessageId = MessageId.abort let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -320,7 +320,7 @@ extension OneToOneContactInvitationProtocol { struct ContactUpgradedToOneToOneMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.ContactUpgradedToOneToOne + let id: ConcreteProtocolMessageId = MessageId.contactUpgradedToOneToOne let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -347,7 +347,7 @@ extension OneToOneContactInvitationProtocol { struct DialogInformativeMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DialogInformative + let id: ConcreteProtocolMessageId = MessageId.dialogInformative let coreProtocolMessage: CoreProtocolMessage var encodedInputs: [ObvEncoded] { return [] } @@ -369,7 +369,7 @@ extension OneToOneContactInvitationProtocol { struct PropagateAbortMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateAbort + let id: ConcreteProtocolMessageId = MessageId.propagateAbort let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -395,7 +395,7 @@ extension OneToOneContactInvitationProtocol { struct InitialOneToOneStatusSyncRequestMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.InitialOneToOneStatusSyncRequest + let id: ConcreteProtocolMessageId = MessageId.initialOneToOneStatusSyncRequest let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -429,7 +429,7 @@ extension OneToOneContactInvitationProtocol { struct OneToOneStatusSyncRequestMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.OneToOneStatusSyncRequest + let id: ConcreteProtocolMessageId = MessageId.oneToOneStatusSyncRequest let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolStates.swift index 741e2c59..051b9a3f 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,19 +26,19 @@ extension OneToOneContactInvitationProtocol { enum StateId: Int, ConcreteProtocolStateId { - case Initial = 0 - case InvitationSent = 1 - case InvitationReceived = 2 - case Finished = 3 - case Cancelled = 4 + case initial = 0 + case invitationSent = 1 + case invitationReceived = 2 + case finished = 3 + case cancelled = 4 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .Initial : return ConcreteProtocolInitialState.self - case .InvitationSent : return InvitationSentState.self - case .InvitationReceived : return InvitationReceivedState.self - case .Finished : return FinishedState.self - case .Cancelled : return CancelledState.self + case .initial : return ConcreteProtocolInitialState.self + case .invitationSent : return InvitationSentState.self + case .invitationReceived : return InvitationReceivedState.self + case .finished : return FinishedState.self + case .cancelled : return CancelledState.self } } @@ -47,7 +47,7 @@ extension OneToOneContactInvitationProtocol { struct InvitationSentState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.InvitationSent + let id: ConcreteProtocolStateId = StateId.invitationSent let contactIdentity: ObvCryptoIdentity let dialogUuid: UUID @@ -72,7 +72,7 @@ extension OneToOneContactInvitationProtocol { struct InvitationReceivedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.InvitationReceived + let id: ConcreteProtocolStateId = StateId.invitationReceived let contactIdentity: ObvCryptoIdentity let dialogUuid: UUID @@ -97,7 +97,7 @@ extension OneToOneContactInvitationProtocol { struct FinishedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Finished + let id: ConcreteProtocolStateId = StateId.finished init(_: ObvEncoded) {} @@ -110,7 +110,7 @@ extension OneToOneContactInvitationProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolSteps.swift index 9c31ed81..2a59244e 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OneToOneContactInvitationProtocol/OneToOneContactInvitationProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,50 +29,50 @@ extension OneToOneContactInvitationProtocol { enum StepId: Int, ConcreteProtocolStepId, CaseIterable { - case AliceInvitesBob = 0 - case BobProcessesAlicesInvitation = 1 - case BobRespondsToAlicesInvitation = 2 - case AliceReceivesBobsResponse = 3 - case AliceAbortsHerInvitationToBob = 4 - case BobProcessesAbort = 5 - case ProcessContactUpgradedToOneToOneWhileInInvitationSentState = 6 - case ProcessContactUpgradedToOneToOneWhileInInvitationReceivedState = 7 - case ProcessPropagatedOneToOneInvitationMessage = 8 - case ProcessPropagatedOneToOneResponseMessage = 9 - case ProcessPropagatedAbortMessage = 10 - case AliceProcessesUnexpectedBobResponse = 11 - case AliceSendsOneToOneStatusSyncRequestMessages = 12 - case BobProcessesSyncRequest = 13 + case aliceInvitesBob = 0 + case bobProcessesAlicesInvitation = 1 + case bobRespondsToAlicesInvitation = 2 + case aliceReceivesBobsResponse = 3 + case aliceAbortsHerInvitationToBob = 4 + case bobProcessesAbort = 5 + case processContactUpgradedToOneToOneWhileInInvitationSentState = 6 + case processContactUpgradedToOneToOneWhileInInvitationReceivedState = 7 + case processPropagatedOneToOneInvitationMessage = 8 + case processPropagatedOneToOneResponseMessage = 9 + case processPropagatedAbortMessage = 10 + case aliceProcessesUnexpectedBobResponse = 11 + case aliceSendsOneToOneStatusSyncRequestMessages = 12 + case bobProcessesSyncRequest = 13 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { - case .AliceInvitesBob: + case .aliceInvitesBob: return AliceInvitesBobStep(from: concreteProtocol, and: receivedMessage) - case .BobProcessesAlicesInvitation: + case .bobProcessesAlicesInvitation: return BobProcessesAlicesInvitationStep(from: concreteProtocol, and: receivedMessage) - case .BobRespondsToAlicesInvitation: + case .bobRespondsToAlicesInvitation: return BobRespondsToAlicesInvitationStep(from: concreteProtocol, and: receivedMessage) - case .AliceReceivesBobsResponse: + case .aliceReceivesBobsResponse: return AliceReceivesBobsResponseStep(from: concreteProtocol, and: receivedMessage) - case .AliceAbortsHerInvitationToBob: + case .aliceAbortsHerInvitationToBob: return AliceAbortsHerInvitationToBobStep(from: concreteProtocol, and: receivedMessage) - case .BobProcessesAbort: + case .bobProcessesAbort: return BobProcessesAbortStep(from: concreteProtocol, and: receivedMessage) - case .ProcessContactUpgradedToOneToOneWhileInInvitationSentState: + case .processContactUpgradedToOneToOneWhileInInvitationSentState: return ProcessContactUpgradedToOneToOneWhileInInvitationSentStateStep(from: concreteProtocol, and: receivedMessage) - case .ProcessContactUpgradedToOneToOneWhileInInvitationReceivedState: + case .processContactUpgradedToOneToOneWhileInInvitationReceivedState: return ProcessContactUpgradedToOneToOneWhileInInvitationReceivedStateStep(from: concreteProtocol, and: receivedMessage) - case .ProcessPropagatedOneToOneInvitationMessage: + case .processPropagatedOneToOneInvitationMessage: return ProcessPropagatedOneToOneInvitationMessageStep(from: concreteProtocol, and: receivedMessage) - case .ProcessPropagatedOneToOneResponseMessage: + case .processPropagatedOneToOneResponseMessage: return ProcessPropagatedOneToOneResponseMessageStep(from: concreteProtocol, and: receivedMessage) - case .ProcessPropagatedAbortMessage: + case .processPropagatedAbortMessage: return ProcessPropagatedAbortMessageStep(from: concreteProtocol, and: receivedMessage) - case .AliceProcessesUnexpectedBobResponse: + case .aliceProcessesUnexpectedBobResponse: return AliceProcessesUnexpectedBobResponseStep(from: concreteProtocol, and: receivedMessage) - case .AliceSendsOneToOneStatusSyncRequestMessages: + case .aliceSendsOneToOneStatusSyncRequestMessages: return AliceSendsOneToOneStatusSyncRequestMessagesStep(from: concreteProtocol, and: receivedMessage) - case .BobProcessesSyncRequest: + case .bobProcessesSyncRequest: return BobProcessesSyncRequestStep(from: concreteProtocol, and: receivedMessage) } } @@ -107,10 +107,11 @@ extension OneToOneContactInvitationProtocol { // If Bob is already a OneToOne contact, there is nothing to do in theory. Yet, we decide to send the protocol message anyway. // Create an ObvDialog informing Alice that her request has been taken into account. This dialog also allows Alice to abort this - // Protocol. - + // Protocol. We only do this if Bob is not already oneToOne (as aborting the protocol using the dialog always reset the contact to + // non-oneToOne). + let dialogUuid = UUID() - do { + if try !identityDelegate.isOneToOneContact(ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, within: obvContext) { let dialogType = ObvChannelDialogToSendType.oneToOneInvitationSent(contact: contactIdentity, ownedIdentity: ownedIdentity) let channelType = ObvChannelSendChannelType.UserInterface(uuid: dialogUuid, ownedIdentity: ownedIdentity, dialogType: dialogType) let coreMessage = getCoreMessage(for: channelType) @@ -118,7 +119,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Send a OneToOne invitation to Bob @@ -130,7 +131,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ProtocolMessageToSend for OneToOneInvitationMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Create an entry in the ProtocolInstanceWaitingForContactUpgradeToOneToOne. This makes it possible to accept immediately in case @@ -144,7 +145,7 @@ extension OneToOneContactInvitationProtocol { guard let _ = ProtocolInstanceWaitingForContactUpgradeToOneToOne(ownedCryptoIdentity: ownedIdentity, contactCryptoIdentity: contactIdentity, - messageToSendRawId: MessageId.ContactUpgradedToOneToOne.rawValue, + messageToSendRawId: MessageId.contactUpgradedToOneToOne.rawValue, protocolInstance: thisProtocolInstance, delegateManager: delegateManager) else { @@ -163,7 +164,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not propagate OneToOne invitation to other devices.", log: log, type: .fault) assertionFailure() @@ -218,7 +219,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ProtocolMessageToSend for OneToOneInvitationMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } return FinishedState() @@ -234,7 +235,7 @@ extension OneToOneContactInvitationProtocol { let appropriateWaitingInstances = waitingInstances .compactMap({ $0.protocolInstance }) .filter({ $0.cryptoProtocolId == self.cryptoProtocolId }) - .filter({ $0.currentStateRawId == StateId.InvitationSent.rawValue }) + .filter({ $0.currentStateRawId == StateId.invitationSent.rawValue }) guard appropriateWaitingInstances.isEmpty else { // If we reach this point, we can indeed auto-accept the invitation @@ -257,7 +258,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ProtocolMessageToSend for OneToOneInvitationMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // We can finish this protocol instance @@ -279,7 +280,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // If Bob decides to send an invitation to Alice (e.g., because he did not see Alice's invitation), we want to properly finish @@ -293,7 +294,7 @@ extension OneToOneContactInvitationProtocol { guard let _ = ProtocolInstanceWaitingForContactUpgradeToOneToOne(ownedCryptoIdentity: ownedIdentity, contactCryptoIdentity: contactIdentity, - messageToSendRawId: MessageId.ContactUpgradedToOneToOne.rawValue, + messageToSendRawId: MessageId.contactUpgradedToOneToOne.rawValue, protocolInstance: thisProtocolInstance, delegateManager: delegateManager) else { @@ -344,7 +345,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return FinishedState() } @@ -358,7 +359,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ProtocolMessageToSend for OneToOneInvitationMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Upgrade/downgrade Alice's OneToOne status @@ -377,7 +378,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Propagate the answer to the other owned devices of Bob @@ -391,7 +392,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not propagate accept/reject invitation to other devices.", log: log, type: .fault) assertionFailure() @@ -461,7 +462,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Finish the protocol. Note that the ProtocolInstanceWaitingForContactUpgradeToOneToOne instance created in the @@ -507,7 +508,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) return FinishedState() } @@ -528,7 +529,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ProtocolMessageToSend for AbortMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Downgrade Bob's OneToOne status @@ -547,7 +548,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Propagate the abort to the other owned devices of Alice @@ -561,7 +562,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not propagate abort OneToOne invitation to other devices.", log: log, type: .fault) assertionFailure() @@ -628,7 +629,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Finish the protocol @@ -681,7 +682,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Finish the protocol @@ -734,7 +735,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Finish the protocol @@ -786,7 +787,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Create an entry in the ProtocolInstanceWaitingForContactUpgradeToOneToOne. This makes it possible to accept immediately in case @@ -800,7 +801,7 @@ extension OneToOneContactInvitationProtocol { guard let _ = ProtocolInstanceWaitingForContactUpgradeToOneToOne(ownedCryptoIdentity: ownedIdentity, contactCryptoIdentity: contactIdentity, - messageToSendRawId: MessageId.ContactUpgradedToOneToOne.rawValue, + messageToSendRawId: MessageId.contactUpgradedToOneToOne.rawValue, protocolInstance: thisProtocolInstance, delegateManager: delegateManager) else { @@ -854,7 +855,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Finish this protocol. Note that the ProtocolInstanceWaitingForContactUpgradeToOneToOne instance created in the @@ -904,7 +905,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Finish the protocol. Note that the ProtocolInstanceWaitingForContactUpgradeToOneToOne instance created in the @@ -964,7 +965,7 @@ extension OneToOneContactInvitationProtocol { within: obvContext) let initialMessageToSend = try delegateManager.protocolStarterDelegate.getInitialMessageForDowngradingOneToOneContact(ownedIdentity: ownedIdentity, contactIdentity: remoteIdentity) - _ = try channelDelegate.post(initialMessageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(initialMessageToSend, randomizedWith: prng, within: obvContext) return FinishedState() @@ -1012,7 +1013,7 @@ extension OneToOneContactInvitationProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ProtocolMessageToSend for OneToOneStatusSyncRequestMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not sync OneToOne status with one of the contacts: %{public}@", log: log, type: .error, error.localizedDescription) assertionFailure() @@ -1089,7 +1090,7 @@ extension OneToOneContactInvitationProtocol { let appropriateWaitingInstances = waitingInstances .compactMap({ $0.protocolInstance }) .filter({ $0.cryptoProtocolId == self.cryptoProtocolId }) - .filter({ $0.currentStateRawId == StateId.InvitationSent.rawValue }) + .filter({ $0.currentStateRawId == StateId.invitationSent.rawValue }) guard appropriateWaitingInstances.isEmpty else { // Upgrade Alice's OneToOne status. When the context is saved, a notification will be send that the trust level was increased. @@ -1115,13 +1116,13 @@ extension OneToOneContactInvitationProtocol { let newProtocolInstanceUid = UID.gen(with: prng) let coreMessage = CoreProtocolMessage(channelType: .AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: Set([contactIdentity]), fromOwnedIdentity: ownedIdentity), - cryptoProtocolId: .OneToOneContactInvitation, + cryptoProtocolId: .oneToOneContactInvitation, protocolInstanceUid: newProtocolInstanceUid) let concreteProtocolMessage = OneToOneStatusSyncRequestMessage(coreProtocolMessage: coreMessage, aliceConsidersBobAsOneToOne: false) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw Self.makeError(message: "Could not generate ProtocolMessageToSend for OneToOneStatusSyncRequestMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // Finish the protocol diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocol.swift new file mode 100644 index 00000000..292a2101 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocol.swift @@ -0,0 +1,65 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto +import ObvTypes +import ObvEncoder +import OlvidUtils + + +public struct OwnedDeviceManagementProtocol: ConcreteCryptoProtocol { + + static let logCategory = "OwnedDeviceManagementProtocol" + + static let id = CryptoProtocolId.ownedDeviceManagement + + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.cancelled, StateId.serverQueryProcessed] + + let ownedIdentity: ObvCryptoIdentity + let currentState: ConcreteProtocolState + + let delegateManager: ObvProtocolDelegateManager + let obvContext: ObvContext + let prng: PRNGService + let instanceUid: UID + + init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { + self.currentState = currentState + self.ownedIdentity = ownedCryptoIdentity + self.delegateManager = delegateManager + self.obvContext = obvContext + self.prng = prng + self.instanceUid = instanceUid + } + + static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { + return StateId(rawValue: rawValue) + } + + static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { + return MessageId(rawValue: rawValue) + } + + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } + +} + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocolMessages.swift new file mode 100644 index 00000000..90dc1b61 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocolMessages.swift @@ -0,0 +1,167 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvCrypto +import ObvMetaManager + +// MARK: - Protocol Messages + +extension OwnedDeviceManagementProtocol { + + enum MessageId: Int, ConcreteProtocolMessageId { + + case initiateOwnedDeviceManagement = 0 + case setOwnedDeviceNameServerQuery = 1 + case deactivateOwnedDeviceServerQuery = 2 + case setUnexpiringOwnedDeviceServerQuery = 3 + + var concreteProtocolMessageType: ConcreteProtocolMessage.Type { + switch self { + case .initiateOwnedDeviceManagement : return InitiateOwnedDeviceManagementMessage.self + case .setOwnedDeviceNameServerQuery : return SetOwnedDeviceNameServerQueryMessage.self + case .deactivateOwnedDeviceServerQuery : return DeactivateOwnedDeviceServerQueryMessage.self + case .setUnexpiringOwnedDeviceServerQuery: return SetUnexpiringOwnedDeviceServerQueryMessage.self + } + } + + } + + + // MARK: - InitiateOwnedDeviceManagementMessage + + struct InitiateOwnedDeviceManagementMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.initiateOwnedDeviceManagement + let coreProtocolMessage: CoreProtocolMessage + + let request: ObvOwnedDeviceManagementRequest + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage, request: ObvOwnedDeviceManagementRequest) { + self.coreProtocolMessage = coreProtocolMessage + self.request = request + } + + var encodedInputs: [ObvEncoded] { + return [request.obvEncode()] + } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + request = try message.encodedInputs.obvDecode() + } + + } + + + struct SetOwnedDeviceNameServerQueryMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.setOwnedDeviceNameServerQuery + let coreProtocolMessage: CoreProtocolMessage + + let success: Bool // Only meaningfull when the message is sent to this protocol + + var encodedInputs: [ObvEncoded] { return [] } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + guard encodedElements.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded elements") } + let encodedSuccess = encodedElements[0] + guard let success = Bool(encodedSuccess) else { + assertionFailure() + throw Self.makeError(message: "Failed to decode") + } + self.success = success + } + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.success = true + } + } + + + struct DeactivateOwnedDeviceServerQueryMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.deactivateOwnedDeviceServerQuery + let coreProtocolMessage: CoreProtocolMessage + + let success: Bool // Only meaningfull when the message is sent to this protocol + + var encodedInputs: [ObvEncoded] { return [] } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + guard encodedElements.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded elements") } + let encodedSuccess = encodedElements[0] + guard let success = Bool(encodedSuccess) else { + assertionFailure() + throw Self.makeError(message: "Failed to decode") + } + self.success = success + } + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.success = true + } + } + + + struct SetUnexpiringOwnedDeviceServerQueryMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.setUnexpiringOwnedDeviceServerQuery + let coreProtocolMessage: CoreProtocolMessage + + let success: Bool // Only meaningfull when the message is sent to this protocol + + var encodedInputs: [ObvEncoded] { return [] } + + // Initializers + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + guard encodedElements.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded elements") } + let encodedSuccess = encodedElements[0] + guard let success = Bool(encodedSuccess) else { + assertionFailure() + throw Self.makeError(message: "Failed to decode") + } + self.success = success + } + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.success = true + } + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocolStates.swift new file mode 100644 index 00000000..d060e48a --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocolStates.swift @@ -0,0 +1,93 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvTypes +import ObvCrypto +import ObvMetaManager + + +// MARK: - Protocol States + +extension OwnedDeviceManagementProtocol { + + enum StateId: Int, ConcreteProtocolStateId { + + case initial = 0 + case waitingForServerQueryResult = 1 + case serverQueryProcessed = 2 // Final + case cancelled = 100 // Final + + var concreteProtocolStateType: ConcreteProtocolState.Type { + switch self { + case .initial : return ConcreteProtocolInitialState.self + case .waitingForServerQueryResult : return WaitingForServerQueryResultState.self + case .serverQueryProcessed : return ServerQueryProcessedState.self + case .cancelled : return CancelledState.self + } + } + } + + + // MARK: - WaitingForServerQueryResultState + + struct WaitingForServerQueryResultState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.waitingForServerQueryResult + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + + + // MARK: - ServerQueryProcessedState + + struct ServerQueryProcessedState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.serverQueryProcessed + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + + + // MARK: - CancelledState + + struct CancelledState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.cancelled + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocolSteps.swift new file mode 100644 index 00000000..9ce73699 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedDeviceManagementProtocol/OwnedDeviceManagementProtocolSteps.swift @@ -0,0 +1,295 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +import Foundation +import os.log +import ObvTypes +import ObvMetaManager +import ObvCrypto +import OlvidUtils +import ObvEncoder + +// MARK: - Protocol Steps + +extension OwnedDeviceManagementProtocol { + + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { + + case sendRequest = 0 + case processSetOwnedDeviceNameServerQuery = 1 + case processDeactivateOwnedDeviceServerQuery = 2 + case processSetUnexpiringOwnedDeviceServerQuery = 3 + + func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { + switch self { + + case .sendRequest: + let step = SendRequestStep(from: concreteProtocol, and: receivedMessage) + return step + + case .processSetOwnedDeviceNameServerQuery: + let step = ProcessSetOwnedDeviceNameServerQueryStep(from: concreteProtocol, and: receivedMessage) + return step + + case .processDeactivateOwnedDeviceServerQuery: + let step = ProcessDeactivateOwnedDeviceServerQueryStep(from: concreteProtocol, and: receivedMessage) + return step + + case .processSetUnexpiringOwnedDeviceServerQuery: + let step = ProcessSetUnexpiringOwnedDeviceServerQueryStep(from: concreteProtocol, and: receivedMessage) + return step + + } + } + } + + // MARK: - SendRequestStep + + final class SendRequestStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: InitiateOwnedDeviceManagementMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: InitiateOwnedDeviceManagementMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let request = receivedMessage.request + + switch request { + + case .setOwnedDeviceName(let ownedDeviceUID, let ownedDeviceName): + + // Check whether the device is the current device or a remote device of the owned identity + + let isCurrentDevice: Bool + if try ownedDeviceUID == identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) { + isCurrentDevice = true + } else if try identityDelegate.isDevice(withUid: ownedDeviceUID, aRemoteDeviceOfOwnedIdentity: ownedIdentity, within: obvContext) { + isCurrentDevice = false + } else { + assertionFailure() + return CancelledState() + } + + // Encrypt the device name + + let encryptedOwnedDeviceName = DeviceNameUtils.encrypt(deviceName: ownedDeviceName, for: ownedIdentity, using: prng) + + // Send the server query + + let coreMessage = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concreteMessage = SetOwnedDeviceNameServerQueryMessage(coreProtocolMessage: coreMessage) + let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.setOwnedDeviceName( + ownedDeviceUID: ownedDeviceUID, + encryptedOwnedDeviceName: encryptedOwnedDeviceName, + isCurrentDevice: isCurrentDevice) + guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + + // Return the new state + + return WaitingForServerQueryResultState() + + case .deactivateOtherOwnedDevice(let ownedDeviceUID): + + // Make sure we are not deactivating the current device as deactivating the current device shall be done in the OwnedIdentityDeletionProtocol. + + guard try ownedDeviceUID != identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) else { + assertionFailure("We are trying to deactivate the current device, which should be done in the OwnedIdentityDeletionProtocol") + return CancelledState() + } + + // Check whether the device is the current device or a remote device of the owned identity + + let isCurrentDevice: Bool + if try ownedDeviceUID == identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) { + isCurrentDevice = true + } else if try identityDelegate.isDevice(withUid: ownedDeviceUID, aRemoteDeviceOfOwnedIdentity: ownedIdentity, within: obvContext) { + isCurrentDevice = false + } else { + return CancelledState() + } + + // Send the server query + + let coreMessage = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concreteMessage = DeactivateOwnedDeviceServerQueryMessage(coreProtocolMessage: coreMessage) + let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.deactivateOwnedDevice( + ownedDeviceUID: ownedDeviceUID, + isCurrentDevice: isCurrentDevice) + guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + + // Return the new state + + return WaitingForServerQueryResultState() + + case .setUnexpiringDevice(let ownedDeviceUID): + + // Check whether the device is the current device or a remote device of the owned identity + + // Send the server query + + let coreMessage = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concreteMessage = SetUnexpiringOwnedDeviceServerQueryMessage(coreProtocolMessage: coreMessage) + let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.setUnexpiringOwnedDevice(ownedDeviceUID: ownedDeviceUID) + guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + + return WaitingForServerQueryResultState() + + } + + + } + + } + + + // MARK: - ProcessSetOwnedDeviceNameServerQueryStep + + final class ProcessSetOwnedDeviceNameServerQueryStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: WaitingForServerQueryResultState + let receivedMessage: SetOwnedDeviceNameServerQueryMessage + + init?(startState: WaitingForServerQueryResultState, receivedMessage: SetOwnedDeviceNameServerQueryMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + // No need to set the device name locally, it will be updated during the following owned device discovery + + let messageToSend = try protocolStarterDelegate.getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ownedIdentity) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + + // Return the new state + + return ServerQueryProcessedState() + + } + + } + + + // MARK: - ProcessDeactivateOwnedDeviceServerQueryStep + + final class ProcessDeactivateOwnedDeviceServerQueryStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: WaitingForServerQueryResultState + let receivedMessage: DeactivateOwnedDeviceServerQueryMessage + + init?(startState: WaitingForServerQueryResultState, receivedMessage: DeactivateOwnedDeviceServerQueryMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + // Perform an owned device discovery + + do { + let messageToSend = try protocolStarterDelegate.getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ownedIdentity) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + } + + // Since we deactivated another owned device, we want to notify all our contacts, so that they perform a contact discovery + + let contactIdentites = try identityDelegate.getContactsOfOwnedIdentity(ownedIdentity, within: obvContext) + if !contactIdentites.isEmpty { + let channel = ObvChannelSendChannelType.AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: contactIdentites, fromOwnedIdentity: ownedIdentity) + let coreMessage = getCoreMessageForOtherProtocol(for: channel, otherCryptoProtocolId: .contactManagement, otherProtocolInstanceUid: UID.gen(with: prng)) + let concreteMessage = ContactManagementProtocol.PerformContactDeviceDiscoveryMessage(coreProtocolMessage: coreMessage) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { + assertionFailure() + throw Self.makeError(message: "Implementation error") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + + // Return the new state + + return ServerQueryProcessedState() + + } + + } + + + // MARK: - ProcessSetUnexpiringOwnedDeviceServerQueryStep + + final class ProcessSetUnexpiringOwnedDeviceServerQueryStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: WaitingForServerQueryResultState + let receivedMessage: SetUnexpiringOwnedDeviceServerQueryMessage + + init?(startState: WaitingForServerQueryResultState, receivedMessage: SetUnexpiringOwnedDeviceServerQueryMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + + + let messageToSend = try protocolStarterDelegate.getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ownedIdentity) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + + // Return the new state + + return ServerQueryProcessedState() + + } + + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocol.swift index 01aeb32c..0054f759 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolMessages.swift index 694e1d37..3047eff0 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -31,23 +31,17 @@ extension OwnedIdentityDeletionProtocol { case initiateOwnedIdentityDeletion = 0 case contactOwnedIdentityWasDeleted = 1 - case continueOwnedIdentityDeletion = 100 - case processOtherProtocolInstances = 101 - case processGroupsV1 = 102 - case processGroupsV2 = 103 - case processContacts = 104 - case processChannels = 105 + case propagateGlobalOwnedIdentityDeletion = 2 + case deactivateOwnedDeviceServerQuery = 106 + case finalizeOwnedIdentityDeletion = 107 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .initiateOwnedIdentityDeletion : return InitiateOwnedIdentityDeletionMessage.self - case .continueOwnedIdentityDeletion : return ContinueOwnedIdentityDeletionMessage.self - case .processOtherProtocolInstances : return ProcessOtherProtocolInstancesMessage.self - case .processGroupsV1 : return ProcessGroupsV1Message.self - case .processGroupsV2 : return ProcessGroupsV2Message.self - case .processContacts : return ProcessContactsMessage.self - case .contactOwnedIdentityWasDeleted : return ContactOwnedIdentityWasDeletedMessage.self - case .processChannels : return ProcessChannelsMessage.self + case .initiateOwnedIdentityDeletion : return InitiateOwnedIdentityDeletionMessage.self + case .contactOwnedIdentityWasDeleted : return ContactOwnedIdentityWasDeletedMessage.self + case .deactivateOwnedDeviceServerQuery : return DeactivateOwnedDeviceServerQueryMessage.self + case .propagateGlobalOwnedIdentityDeletion : return PropagateGlobalOwnedIdentityDeletionMessage.self + case .finalizeOwnedIdentityDeletion : return FinalizeOwnedIdentityDeletionMessage.self } } } @@ -62,96 +56,47 @@ extension OwnedIdentityDeletionProtocol { // Properties specific to this concrete protocol message - let ownedCryptoIdentityToDelete: ObvCryptoIdentity - let notifyContacts: Bool + let globalOwnedIdentityDeletion: Bool // Init when sending this message - init(coreProtocolMessage: CoreProtocolMessage, ownedCryptoIdentityToDelete: ObvCryptoIdentity, notifyContacts: Bool) { + init(coreProtocolMessage: CoreProtocolMessage, globalOwnedIdentityDeletion: Bool) { self.coreProtocolMessage = coreProtocolMessage - self.ownedCryptoIdentityToDelete = ownedCryptoIdentityToDelete - self.notifyContacts = notifyContacts + self.globalOwnedIdentityDeletion = globalOwnedIdentityDeletion } var encodedInputs: [ObvEncoded] { - [ownedCryptoIdentityToDelete.obvEncode(), notifyContacts.obvEncode()] + [globalOwnedIdentityDeletion.obvEncode()] } // Init when receiving this message init(with message: ReceivedMessage) throws { self.coreProtocolMessage = CoreProtocolMessage(with: message) - guard message.encodedInputs.count == 2 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded inputs") } - self.ownedCryptoIdentityToDelete = try message.encodedInputs[0].obvDecode() - self.notifyContacts = try message.encodedInputs[1].obvDecode() - } - - } - - - // MARK: - ContinueOwnedIdentityDeletionMessage - - struct ContinueOwnedIdentityDeletionMessage: ConcreteProtocolMessage { - - let id: ConcreteProtocolMessageId = MessageId.continueOwnedIdentityDeletion - let coreProtocolMessage: CoreProtocolMessage - - // Init when sending this message - - init(coreProtocolMessage: CoreProtocolMessage) { - self.coreProtocolMessage = coreProtocolMessage - } - - var encodedInputs: [ObvEncoded] { [] } - - // Init when receiving this message - - init(with message: ReceivedMessage) throws { - self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded inputs") } + self.globalOwnedIdentityDeletion = try message.encodedInputs[0].obvDecode() } } + - - // MARK: - ProcessOtherProtocolInstancesMessage - - struct ProcessOtherProtocolInstancesMessage: ConcreteProtocolMessage { + // MARK: - PropagateGlobalOwnedIdentityDeletionMessage + + struct PropagateGlobalOwnedIdentityDeletionMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.processOtherProtocolInstances + let id: ConcreteProtocolMessageId = MessageId.propagateGlobalOwnedIdentityDeletion let coreProtocolMessage: CoreProtocolMessage - + // Init when sending this message init(coreProtocolMessage: CoreProtocolMessage) { self.coreProtocolMessage = coreProtocolMessage } - var encodedInputs: [ObvEncoded] { [] } - - // Init when receiving this message - - init(with message: ReceivedMessage) throws { - self.coreProtocolMessage = CoreProtocolMessage(with: message) - } - - } - - - // MARK: - ProcessGroupsV1Message - - struct ProcessGroupsV1Message: ConcreteProtocolMessage { - - let id: ConcreteProtocolMessageId = MessageId.processGroupsV1 - let coreProtocolMessage: CoreProtocolMessage - - // Init when sending this message - - init(coreProtocolMessage: CoreProtocolMessage) { - self.coreProtocolMessage = coreProtocolMessage + var encodedInputs: [ObvEncoded] { + [] } - var encodedInputs: [ObvEncoded] { [] } - // Init when receiving this message init(with message: ReceivedMessage) throws { @@ -159,13 +104,13 @@ extension OwnedIdentityDeletionProtocol { } } + + // MARK: - FinalizeOwnedIdentityDeletionMessage - // MARK: - ProcessGroupsV2Message - - struct ProcessGroupsV2Message: ConcreteProtocolMessage { + struct FinalizeOwnedIdentityDeletionMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.processGroupsV2 + let id: ConcreteProtocolMessageId = MessageId.finalizeOwnedIdentityDeletion let coreProtocolMessage: CoreProtocolMessage // Init when sending this message @@ -174,32 +119,10 @@ extension OwnedIdentityDeletionProtocol { self.coreProtocolMessage = coreProtocolMessage } - var encodedInputs: [ObvEncoded] { [] } - - // Init when receiving this message - - init(with message: ReceivedMessage) throws { - self.coreProtocolMessage = CoreProtocolMessage(with: message) - } - - } - - - // MARK: - ProcessContactsMessage - - struct ProcessContactsMessage: ConcreteProtocolMessage { - - let id: ConcreteProtocolMessageId = MessageId.processContacts - let coreProtocolMessage: CoreProtocolMessage - - // Init when sending this message - - init(coreProtocolMessage: CoreProtocolMessage) { - self.coreProtocolMessage = coreProtocolMessage + var encodedInputs: [ObvEncoded] { + [] } - var encodedInputs: [ObvEncoded] { [] } - // Init when receiving this message init(with message: ReceivedMessage) throws { @@ -207,7 +130,7 @@ extension OwnedIdentityDeletionProtocol { } } - + // MARK: - ContactOwnedIdentityWasDeletedMessage @@ -246,27 +169,33 @@ extension OwnedIdentityDeletionProtocol { } - // MARK: - ProcessChannelsMessage - - struct ProcessChannelsMessage: ConcreteProtocolMessage { + struct DeactivateOwnedDeviceServerQueryMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.processChannels + let id: ConcreteProtocolMessageId = MessageId.deactivateOwnedDeviceServerQuery let coreProtocolMessage: CoreProtocolMessage - // Init when sending this message + let success: Bool // Only meaningfull when the message is sent to this protocol - init(coreProtocolMessage: CoreProtocolMessage) { - self.coreProtocolMessage = coreProtocolMessage - } - - var encodedInputs: [ObvEncoded] { [] } - - // Init when receiving this message + var encodedInputs: [ObvEncoded] { return [] } + // Initializers + init(with message: ReceivedMessage) throws { self.coreProtocolMessage = CoreProtocolMessage(with: message) + let encodedElements = message.encodedInputs + guard encodedElements.count == 1 else { assertionFailure(); throw Self.makeError(message: "Unexpected number of encoded elements") } + let encodedSuccess = encodedElements[0] + guard let success = Bool(encodedSuccess) else { + assertionFailure() + throw Self.makeError(message: "Failed to decode") + } + self.success = success } + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.success = true + } } - + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolStates.swift index b5ccbc4d..5368eec9 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,118 +29,44 @@ import ObvMetaManager extension OwnedIdentityDeletionProtocol { enum StateId: Int, ConcreteProtocolStateId { - + case initialState = 0 - case deletionCurrentStatus = 1 + case firstDeletionStepPerformed = 1 case final = 100 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .initialState : return ConcreteProtocolInitialState.self - case .deletionCurrentStatus : return DeletionCurrentStatusState.self - case .final : return FinalState.self + case .initialState : return ConcreteProtocolInitialState.self + case .firstDeletionStepPerformed: return FirstDeletionStepPerformedState.self + case .final : return FinalState.self } } } - // MARK: - DeletionCurrentStatusState + // MARK: - FirstDeletionStepPerformedState - struct DeletionCurrentStatusState: TypeConcreteProtocolState { - - let id: ConcreteProtocolStateId = StateId.deletionCurrentStatus - let notifyContacts: Bool - let otherProtocolInstancesHaveBeenProcessed: Bool - let groupsV1HaveBeenProcessed: Bool - let groupsV2HaveBeenProcessed: Bool - let contactsHaveBeenProcessed: Bool - let channelsHaveBeenProcessed: Bool + struct FirstDeletionStepPerformedState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.firstDeletionStepPerformed + let globalOwnedIdentityDeletion: Bool + let propagationNeeded: Bool - init(notifyContacts: Bool) { - self.init(notifyContacts: notifyContacts, otherProtocolInstancesHaveBeenProcessed: false, groupsV1HaveBeenProcessed: false, groupsV2HaveBeenProcessed: false, contactsHaveBeenProcessed: false, channelsHaveBeenProcessed: false) + init(globalOwnedIdentityDeletion: Bool, propagationNeeded: Bool) { + self.globalOwnedIdentityDeletion = globalOwnedIdentityDeletion + self.propagationNeeded = propagationNeeded } - private init(notifyContacts: Bool, otherProtocolInstancesHaveBeenProcessed: Bool, groupsV1HaveBeenProcessed: Bool, groupsV2HaveBeenProcessed: Bool, contactsHaveBeenProcessed: Bool, channelsHaveBeenProcessed: Bool) { - self.notifyContacts = notifyContacts - self.otherProtocolInstancesHaveBeenProcessed = otherProtocolInstancesHaveBeenProcessed - self.groupsV1HaveBeenProcessed = groupsV1HaveBeenProcessed - self.groupsV2HaveBeenProcessed = groupsV2HaveBeenProcessed - self.contactsHaveBeenProcessed = contactsHaveBeenProcessed - self.channelsHaveBeenProcessed = channelsHaveBeenProcessed - } - func obvEncode() -> ObvEncoded { - [notifyContacts, - otherProtocolInstancesHaveBeenProcessed, - groupsV1HaveBeenProcessed, - groupsV2HaveBeenProcessed, - contactsHaveBeenProcessed, - channelsHaveBeenProcessed].obvEncode() + return [ + globalOwnedIdentityDeletion, + propagationNeeded, + ].obvEncode() } init(_ obvEncoded: ObvEncoded) throws { - guard let encodedValues = [ObvEncoded](obvEncoded, expectedCount: 6) else { assertionFailure(); throw Self.makeError(message: "Unexpected number of elements in encoded DeletionCurrentStatusState") } - self.notifyContacts = try encodedValues[0].obvDecode() - self.otherProtocolInstancesHaveBeenProcessed = try encodedValues[1].obvDecode() - self.groupsV1HaveBeenProcessed = try encodedValues[2].obvDecode() - self.groupsV2HaveBeenProcessed = try encodedValues[3].obvDecode() - self.contactsHaveBeenProcessed = try encodedValues[4].obvDecode() - self.channelsHaveBeenProcessed = try encodedValues[5].obvDecode() - } - - func getStateWhenOtherProtocolInstancesHaveBeenProcessed() -> DeletionCurrentStatusState { - DeletionCurrentStatusState( - notifyContacts: notifyContacts, - otherProtocolInstancesHaveBeenProcessed: true, - groupsV1HaveBeenProcessed: groupsV1HaveBeenProcessed, - groupsV2HaveBeenProcessed: groupsV2HaveBeenProcessed, - contactsHaveBeenProcessed: contactsHaveBeenProcessed, - channelsHaveBeenProcessed: channelsHaveBeenProcessed - ) - } - - func getStateWhenGroupsV1HaveBeenProcessed() -> DeletionCurrentStatusState { - DeletionCurrentStatusState( - notifyContacts: notifyContacts, - otherProtocolInstancesHaveBeenProcessed: otherProtocolInstancesHaveBeenProcessed, - groupsV1HaveBeenProcessed: true, - groupsV2HaveBeenProcessed: groupsV2HaveBeenProcessed, - contactsHaveBeenProcessed: contactsHaveBeenProcessed, - channelsHaveBeenProcessed: channelsHaveBeenProcessed - ) - } - - func getStateWhenGroupsV2HaveBeenProcessed() -> DeletionCurrentStatusState { - DeletionCurrentStatusState( - notifyContacts: notifyContacts, - otherProtocolInstancesHaveBeenProcessed: otherProtocolInstancesHaveBeenProcessed, - groupsV1HaveBeenProcessed: groupsV1HaveBeenProcessed, - groupsV2HaveBeenProcessed: true, - contactsHaveBeenProcessed: contactsHaveBeenProcessed, - channelsHaveBeenProcessed: channelsHaveBeenProcessed - ) - } - - func getStateWhenContactsHaveBeenProcessed() -> DeletionCurrentStatusState { - DeletionCurrentStatusState( - notifyContacts: notifyContacts, - otherProtocolInstancesHaveBeenProcessed: otherProtocolInstancesHaveBeenProcessed, - groupsV1HaveBeenProcessed: groupsV1HaveBeenProcessed, - groupsV2HaveBeenProcessed: groupsV2HaveBeenProcessed, - contactsHaveBeenProcessed: true, - channelsHaveBeenProcessed: channelsHaveBeenProcessed - ) - } - - func getStateWhenChannelsHaveBeenProcessed() -> DeletionCurrentStatusState { - DeletionCurrentStatusState( - notifyContacts: notifyContacts, - otherProtocolInstancesHaveBeenProcessed: otherProtocolInstancesHaveBeenProcessed, - groupsV1HaveBeenProcessed: groupsV1HaveBeenProcessed, - groupsV2HaveBeenProcessed: groupsV2HaveBeenProcessed, - contactsHaveBeenProcessed: contactsHaveBeenProcessed, - channelsHaveBeenProcessed: true - ) + guard let encodedValues = [ObvEncoded](obvEncoded, expectedCount: 2) else { assertionFailure(); throw Self.makeError(message: "Unexpected number of elements in encoded DeletionCurrentStatusState") } + (globalOwnedIdentityDeletion, propagationNeeded) = try encodedValues.obvDecode() } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolSteps.swift index 5a44db5c..3eaeef70 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityDeletionProtocol/OwnedIdentityDeletionProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,6 +25,7 @@ import ObvCrypto import OlvidUtils import ObvEncoder + // MARK: - Protocol Steps extension OwnedIdentityDeletionProtocol { @@ -32,46 +33,31 @@ extension OwnedIdentityDeletionProtocol { enum StepId: Int, ConcreteProtocolStepId, CaseIterable { case startDeletion = 0 - case determineNextStepToExecute = 1 - case processOtherProtocolInstances = 2 - case processGroupsV1 = 3 - case processGroupsV2 = 4 - case processContacts = 5 - case processChannels = 6 - case processContactOwnedIdentityWasDeletedMessage = 7 + case finalizeDeletion = 1 + case processContactOwnedIdentityWasDeletedMessage = 2 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { case .startDeletion: - let step = StartDeletionStep(from: concreteProtocol, and: receivedMessage) - return step - - case .determineNextStepToExecute: - let step = DetermineNextStepToExecuteStep(from: concreteProtocol, and: receivedMessage) - return step + if let step = StartDeletionFromInitiateOwnedIdentityDeletionMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = StartDeletionFromPropagateOwnedIdentityDeletionMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else { + return nil + } - case .processOtherProtocolInstances: - let step = ProcessOtherProtocolInstancesStep(from: concreteProtocol, and: receivedMessage) - return step - - case .processGroupsV1: - let step = ProcessGroupsV1Step(from: concreteProtocol, and: receivedMessage) - return step - - case .processGroupsV2: - let step = ProcessGroupsV2Step(from: concreteProtocol, and: receivedMessage) - return step + case .finalizeDeletion: + if let step = FinalizeDeletionStepFromDeactivateOwnedDeviceServerQueryMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = FinalizeDeletionStepFromFinalizeOwnedIdentityDeletionMessageStep(from: concreteProtocol, and: receivedMessage) { + return step + } else { + return nil + } - case .processContacts: - let step = ProcessContactsStep(from: concreteProtocol, and: receivedMessage) - return step - - case .processChannels: - let step = ProcessChannelsStep(from: concreteProtocol, and: receivedMessage) - return step - case .processContactOwnedIdentityWasDeletedMessage: switch receivedMessage.receptionChannelInfo { case .AsymmetricChannel: @@ -92,181 +78,278 @@ extension OwnedIdentityDeletionProtocol { // MARK: - StartDeletionStep - final class StartDeletionStep: ProtocolStep, TypedConcreteProtocolStep { + class StartDeletionStep: ProtocolStep { - let startState: ConcreteProtocolInitialState - let receivedMessage: InitiateOwnedIdentityDeletionMessage - - init?(startState: ConcreteProtocolInitialState, receivedMessage: InitiateOwnedIdentityDeletionMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + private let startState: ConcreteProtocolInitialState + private let receivedMessage: ReceivedMessageType + + enum ReceivedMessageType { + case initiateOwnedIdentityDeletionMessage(receivedMessage: InitiateOwnedIdentityDeletionMessage) + case propagateGlobalOwnedIdentityDeletionMessage(receivedMessage: PropagateGlobalOwnedIdentityDeletionMessage) + } + + init?(startState: ConcreteProtocolInitialState, receivedMessage: ReceivedMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { self.startState = startState self.receivedMessage = receivedMessage - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .Local, - receivedMessage: receivedMessage, - concreteCryptoProtocol: concreteCryptoProtocol) + switch receivedMessage { + case .initiateOwnedIdentityDeletionMessage(receivedMessage: let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + case .propagateGlobalOwnedIdentityDeletionMessage(receivedMessage: let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } } override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - let ownedCryptoIdentityToDelete = receivedMessage.ownedCryptoIdentityToDelete - let notifyContacts = receivedMessage.notifyContacts + let globalOwnedIdentityDeletion: Bool + let propagationNeeded: Bool + switch receivedMessage { + case .initiateOwnedIdentityDeletionMessage(receivedMessage: let receivedMessage): + globalOwnedIdentityDeletion = receivedMessage.globalOwnedIdentityDeletion + propagationNeeded = true + case .propagateGlobalOwnedIdentityDeletionMessage: + globalOwnedIdentityDeletion = true + propagationNeeded = false + } - // Make sure that the current owned identity is the one we are deleting + // If the user request a global deletion, we make sure the identity is active - guard ownedIdentity == ownedCryptoIdentityToDelete else { - assertionFailure() - return FinalState() + let ownedIdentityIsActive = try identityDelegate.isOwnedIdentityActive(ownedIdentity: ownedIdentity, flowId: obvContext.flowId) + if globalOwnedIdentityDeletion { + guard ownedIdentityIsActive || !propagationNeeded else { + assertionFailure() + throw Self.makeError(message: "Owned identity must be active when requeting a global deletion") + } } - - // Mark the owned identity for deletion - try identityDelegate.markOwnedIdentityForDeletion(ownedCryptoIdentityToDelete, within: obvContext) + // Perform pre-deletion tasks (note that ObvDialogs are deleted asynchronously by the engine coordinator, when receiving the notification from the identity manager that the owned identity has been deleted). - // Post a local message for this protocol so at the launch the `DetermineNextStepToExecuteStep` - - let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) - let concreteMessage = ContinueOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage) - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate ContinueOwnedIdentityDeletionMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + try prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ownedIdentity, within: obvContext) + try networkPostDelegate.prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ownedIdentity, within: obvContext) + try networkFetchDelegate.prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ownedIdentity, within: obvContext) + + // In case we are performing a *global* deletion, we want our other devices to execute this protocol too + // Note that in the case we perform a *local* deletion, we want our other owned devices to perform a simple owned device discovery. + // We wait until the end of the server query (that deactivates this device) before sending them a InitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage. - // Return the new state + if propagationNeeded && ownedIdentityIsActive && globalOwnedIdentityDeletion { + let otherDeviceUIDs = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + if !otherDeviceUIDs.isEmpty { + let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) + let concreteMessage = PropagateGlobalOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } + + // Mark the owned identity for deletion + + try identityDelegate.markOwnedIdentityForDeletion(ownedIdentity, within: obvContext) - return DeletionCurrentStatusState(notifyContacts: notifyContacts) + // If our owned identity is active on the current device, we want to deactivate it on the server. + // Otherwise, we simply want to immediately continue this deletion protocol. + + if ownedIdentityIsActive { + + let currentDeviceUID = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + let coreMessage = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concreteMessage = DeactivateOwnedDeviceServerQueryMessage(coreProtocolMessage: coreMessage) + let serverQueryType = ObvChannelServerQueryMessageToSend.QueryType.deactivateOwnedDevice( + ownedDeviceUID: currentDeviceUID, + isCurrentDevice: true) + guard let messageToSend = concreteMessage.generateObvChannelServerQueryMessageToSend(serverQueryType: serverQueryType) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + + } else { + + let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) + let concreteMessage = FinalizeOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate ContinueOwnedIdentityDeletionMessage") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: concreteCryptoProtocol.prng, within: obvContext) + } + + return FirstDeletionStepPerformedState(globalOwnedIdentityDeletion: globalOwnedIdentityDeletion, propagationNeeded: propagationNeeded) + } + + private func prepareForOwnedIdentityDeletion(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + + // Delete all received messages + + try ReceivedMessage.batchDeleteAllReceivedMessagesForOwnedCryptoIdentity(ownedCryptoIdentity, within: obvContext) + + // Delete signatures, commitments,... received relating to this owned identity + + try ChannelCreationPingSignatureReceived.batchDeleteAllChannelCreationPingSignatureReceivedForOwnedCryptoIdentity(ownedCryptoIdentity, within: obvContext) + try TrustEstablishmentCommitmentReceived.batchDeleteAllTrustEstablishmentCommitmentReceivedForOwnedCryptoIdentity(ownedCryptoIdentity, within: obvContext) + try MutualScanSignatureReceived.batchDeleteAllMutualScanSignatureReceivedForOwnedCryptoIdentity(ownedCryptoIdentity, within: obvContext) + try GroupV2SignatureReceived.deleteAllAssociatedWithOwnedIdentity(ownedCryptoIdentity, within: obvContext) + try ContactOwnedIdentityDeletionSignatureReceived.deleteAllAssociatedWithOwnedIdentity(ownedCryptoIdentity, within: obvContext) + try ProtocolInstance.deleteAllProtocolInstancesOfOwnedIdentity(ownedIdentity, withProtocolInstanceUidDistinctFrom: self.protocolInstanceUid, within: obvContext) + try ReceivedMessage.deleteAllAssociatedWithOwnedIdentity(ownedCryptoIdentity, within: obvContext) + + } + } - // MARK: - DetermineNextStepToExecuteStep + // MARK: StartDeletionFromInitiateOwnedIdentityDeletionMessageStep - final class DetermineNextStepToExecuteStep: ProtocolStep, TypedConcreteProtocolStep { + final class StartDeletionFromInitiateOwnedIdentityDeletionMessageStep: StartDeletionStep, TypedConcreteProtocolStep { - let startState: DeletionCurrentStatusState - let receivedMessage: ContinueOwnedIdentityDeletionMessage - - init?(startState: DeletionCurrentStatusState, receivedMessage: ContinueOwnedIdentityDeletionMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { - + let startState: ConcreteProtocolInitialState + let receivedMessage: InitiateOwnedIdentityDeletionMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: InitiateOwnedIdentityDeletionMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { self.startState = startState self.receivedMessage = receivedMessage - - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .Local, - receivedMessage: receivedMessage, + super.init(startState: startState, + receivedMessage: .initiateOwnedIdentityDeletionMessage(receivedMessage: receivedMessage), concreteCryptoProtocol: concreteCryptoProtocol) - } - - override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) - let concreteMessage: GenericProtocolMessageToSendGenerator - - if !startState.otherProtocolInstancesHaveBeenProcessed { - concreteMessage = ProcessOtherProtocolInstancesMessage(coreProtocolMessage: coreMessage) - } else if !startState.groupsV1HaveBeenProcessed { - concreteMessage = ProcessGroupsV1Message(coreProtocolMessage: coreMessage) - } else if !startState.groupsV2HaveBeenProcessed { - concreteMessage = ProcessGroupsV2Message(coreProtocolMessage: coreMessage) - } else if !startState.contactsHaveBeenProcessed { - concreteMessage = ProcessContactsMessage(coreProtocolMessage: coreMessage) - } else if !startState.channelsHaveBeenProcessed { - concreteMessage = ProcessChannelsMessage(coreProtocolMessage: coreMessage) - } else { - - // When everything has been processed, we request the deletion of the owned identity - - do { - try identityDelegate.deleteOwnedIdentity(ownedIdentity, within: obvContext) - } catch { - assertionFailure(error.localizedDescription) - } - - return FinalState() - } + // The step execution is defined in the superclass + + } - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate ContinueOwnedIdentityDeletionMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + + // MARK: StartDeletionFromPropagateOwnedIdentityDeletionMessageStep + + final class StartDeletionFromPropagateOwnedIdentityDeletionMessageStep: StartDeletionStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: PropagateGlobalOwnedIdentityDeletionMessage - return startState - + init?(startState: ConcreteProtocolInitialState, receivedMessage: PropagateGlobalOwnedIdentityDeletionMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: startState, + receivedMessage: .propagateGlobalOwnedIdentityDeletionMessage(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) } + + // The step execution is defined in the superclass } + + // MARK: FinalizeDeletionStep - // MARK: - ProcessOtherProtocolInstancesStep - - /// By the end of this step, all (send and receive) network messages are deleted as well as other protocol instances. - final class ProcessOtherProtocolInstancesStep: ProtocolStep, TypedConcreteProtocolStep { - - let startState: DeletionCurrentStatusState - let receivedMessage: ProcessOtherProtocolInstancesMessage + class FinalizeDeletionStep: ProtocolStep { - init?(startState: DeletionCurrentStatusState, receivedMessage: ProcessOtherProtocolInstancesMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + private let startState: FirstDeletionStepPerformedState + private let receivedMessage: ReceivedMessageType + + enum ReceivedMessageType { + case deactivateOwnedDeviceServerQueryMessage(receivedMessage: DeactivateOwnedDeviceServerQueryMessage) + case finalizeOwnedIdentityDeletionMessage(receivedMessage: FinalizeOwnedIdentityDeletionMessage) + } + + init?(startState: FirstDeletionStepPerformedState, receivedMessage: ReceivedMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { self.startState = startState self.receivedMessage = receivedMessage - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .Local, - receivedMessage: receivedMessage, - concreteCryptoProtocol: concreteCryptoProtocol) + switch receivedMessage { + case .deactivateOwnedDeviceServerQueryMessage(receivedMessage: let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + case .finalizeOwnedIdentityDeletionMessage(receivedMessage: let receivedMessage): + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } } override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - // Delete all other protocol instances + let globalOwnedIdentityDeletion = startState.globalOwnedIdentityDeletion + let propagationNeeded = startState.propagationNeeded - try ProtocolInstance.deleteAllProtocolInstancesOfOwnedIdentity(ownedIdentity, withProtocolInstanceUidDistinctFrom: self.protocolInstanceUid, within: obvContext) - - // Post a local message for this protocol so at the launch the `DetermineNextStepToExecuteStep` + let ownedIdentityIsActive = try identityDelegate.isOwnedIdentityActive(ownedIdentity: ownedIdentity, flowId: obvContext.flowId) + + // In case we are performing a *local* deletion, we want our other owned devices to perform a simple owned device discovery + + if propagationNeeded && ownedIdentityIsActive && !globalOwnedIdentityDeletion { + let otherDeviceUIDs = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + if !otherDeviceUIDs.isEmpty { + let coreMessage = getCoreMessageForOtherProtocol( + for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true), + otherCryptoProtocolId: .ownedDeviceDiscovery, + otherProtocolInstanceUid: UID.gen(with: prng)) + let concreteMessage = OwnedDeviceDiscoveryProtocol.InitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage(coreProtocolMessage: coreMessage) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } - let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) - let concreteMessage = ContinueOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage) - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate ContinueOwnedIdentityDeletionMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + // Process groups v1 and v2 - // Return the new state + try processGroupsV1(globalOwnedIdentityDeletion: globalOwnedIdentityDeletion, propagationNeeded: propagationNeeded, ownedIdentityIsActive: ownedIdentityIsActive) + try processGroupsV2(globalOwnedIdentityDeletion: globalOwnedIdentityDeletion, propagationNeeded: propagationNeeded, ownedIdentityIsActive: ownedIdentityIsActive) + + // Process contacts + + try processContacts(globalOwnedIdentityDeletion: globalOwnedIdentityDeletion, propagationNeeded: propagationNeeded, ownedIdentityIsActive: ownedIdentityIsActive) + + // Process channels + + try processChannels(globalOwnedIdentityDeletion: globalOwnedIdentityDeletion, propagationNeeded: propagationNeeded, ownedIdentityIsActive: ownedIdentityIsActive) + + // When everything has been processed, we request the deletion of the owned identity + + do { + try identityDelegate.deleteOwnedIdentity(ownedIdentity, within: obvContext) + } catch { + assertionFailure(error.localizedDescription) + } - let newState = startState.getStateWhenOtherProtocolInstancesHaveBeenProcessed() - return newState + // Delete all server session (note that the InitiateOwnedDeviceDiscoveryRequestedByAnotherOwnedDeviceMessage posted above does not need one) - } - - } - + let flowId = obvContext.flowId + let networkFetchDelegate = self.networkFetchDelegate + let ownedIdentity = self.ownedIdentity + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { assertionFailure(); return } + Task { + do { + try await networkFetchDelegate.finalizeOwnedIdentityDeletion(ownedCryptoIdentity: ownedIdentity, flowId: flowId) + } catch { + assertionFailure("Could not delete server session of the deleted owned identity: \(error.localizedDescription)") + } + } - - // MARK: - ProcessGroupsV1Step - - /// By the end of this step, all groups V1 (both owned and joined) are deleted. If the state's `notifyContacts` Boolean is `true`, other group members are kicked or notified. - final class ProcessGroupsV1Step: ProtocolStep, TypedConcreteProtocolStep { - - let startState: DeletionCurrentStatusState - let receivedMessage: ProcessGroupsV1Message - - init?(startState: DeletionCurrentStatusState, receivedMessage: ProcessGroupsV1Message, concreteCryptoProtocol: ConcreteCryptoProtocol) { - - self.startState = startState - self.receivedMessage = receivedMessage + } + + // We are done - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .Local, - receivedMessage: receivedMessage, - concreteCryptoProtocol: concreteCryptoProtocol) + return FinalState() } - override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - + + /// Helper method for this step. + /// By the end of this method, all groups V1 (both owned and joined) are deleted. If `globalOwnedIdentityDeletion`, `propagationNeeded`, and `ownedIdentityIsActive` are `true`, other group members are kicked or notified. + private func processGroupsV1(globalOwnedIdentityDeletion: Bool, propagationNeeded: Bool, ownedIdentityIsActive: Bool) throws { + let allGroupStructures = try identityDelegate.getAllGroupStructures(ownedIdentity: ownedIdentity, within: obvContext) - if startState.notifyContacts { + if globalOwnedIdentityDeletion && propagationNeeded && ownedIdentityIsActive { // Leave all joined groups by executing now the LeaveGroupJoinedStep of the GroupManagementProtocol @@ -296,7 +379,7 @@ extension OwnedIdentityDeletionProtocol { continue } let groupManagementProtocolState = try leaveGroupJoinedStep.executeStep(within: obvContext) - guard groupManagementProtocolState?.rawId == GroupManagementProtocol.StateId.Final.rawValue else { + guard groupManagementProtocolState?.rawId == GroupManagementProtocol.StateId.final.rawValue else { assertionFailure() continue } @@ -331,7 +414,7 @@ extension OwnedIdentityDeletionProtocol { continue } let groupManagementProtocolState = try removeGroupMembersStep.executeStep(within: obvContext) - guard groupManagementProtocolState?.rawId == GroupManagementProtocol.StateId.Final.rawValue else { + guard groupManagementProtocolState?.rawId == GroupManagementProtocol.StateId.final.rawValue else { assertionFailure() continue } @@ -361,47 +444,15 @@ extension OwnedIdentityDeletionProtocol { } } - // Post a local message for this protocol so at the launch the `DetermineNextStepToExecuteStep` - - let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) - let concreteMessage = ContinueOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage) - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate ContinueOwnedIdentityDeletionMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) - - // Return the new state - - let newState = startState.getStateWhenGroupsV1HaveBeenProcessed() - return newState - } - - } - - // MARK: - ProcessGroupsV2Step - - final class ProcessGroupsV2Step: ProtocolStep, TypedConcreteProtocolStep { - let startState: DeletionCurrentStatusState - let receivedMessage: ProcessGroupsV2Message - - init?(startState: DeletionCurrentStatusState, receivedMessage: ProcessGroupsV2Message, concreteCryptoProtocol: ConcreteCryptoProtocol) { - - self.startState = startState - self.receivedMessage = receivedMessage - - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .Local, - receivedMessage: receivedMessage, - concreteCryptoProtocol: concreteCryptoProtocol) - - } - - override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + /// Helper method for this step + private func processGroupsV2(globalOwnedIdentityDeletion: Bool, propagationNeeded: Bool, ownedIdentityIsActive: Bool) throws { let allGroups = try identityDelegate.getAllObvGroupV2(of: ownedIdentity, within: obvContext) - if startState.notifyContacts { + if globalOwnedIdentityDeletion && propagationNeeded && ownedIdentityIsActive { // Leave all groups that we joined or where we are *not* the only administrator. // Groups for which we are the sole administrator are disbanded. @@ -551,79 +602,59 @@ extension OwnedIdentityDeletionProtocol { } - // Post a local message for this protocol so at the launch the `DetermineNextStepToExecuteStep` - - let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) - let concreteMessage = ContinueOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage) - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate ContinueOwnedIdentityDeletionMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) - - // Return the new state - - let newState = startState.getStateWhenGroupsV2HaveBeenProcessed() - return newState - } - - } - - // MARK: - ProcessContactsStep - - final class ProcessContactsStep: ProtocolStep, TypedConcreteProtocolStep { - - let startState: DeletionCurrentStatusState - let receivedMessage: ProcessContactsMessage - init?(startState: DeletionCurrentStatusState, receivedMessage: ProcessContactsMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { - - self.startState = startState - self.receivedMessage = receivedMessage - - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .Local, - receivedMessage: receivedMessage, - concreteCryptoProtocol: concreteCryptoProtocol) - - } - - override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + /// Helper method for this step + private func processContacts(globalOwnedIdentityDeletion: Bool, propagationNeeded: Bool, ownedIdentityIsActive: Bool) throws { let log = OSLog(subsystem: delegateManager.logSubsystem, category: OwnedIdentityDeletionProtocol.logCategory) let allContacts = try identityDelegate.getContactsOfOwnedIdentity(ownedIdentity, within: obvContext) - if startState.notifyContacts { - - // Notify all contacts that our own identity is about to be deleted. - - for contact in allContacts { - - // We first send a broadcast message allowing to be radical in the way our contacts will delete our own identity (and to delete it also with contacts without channels). - // This only works with contacts who understand this protocol. - - do { + if propagationNeeded && ownedIdentityIsActive { + if globalOwnedIdentityDeletion { + + // Notify all contacts that our own identity is about to be deleted. + + for contact in allContacts { + + // We first send a broadcast message allowing to be radical in the way our contacts will delete our own identity (and to delete it also with contacts without channels). + // This only works with contacts who understand this protocol. - let signature: Data do { - let challengeType = ChallengeType.ownedIdentityDeletion(notifiedContactIdentity: contact) - guard let sig = try? solveChallengeDelegate.solveChallenge(challengeType, for: ownedIdentity, using: prng, within: obvContext) else { - os_log("Could not compute signature", log: log, type: .fault) - assertionFailure() - // Continue with the next contact - continue + + let signature: Data + do { + let challengeType = ChallengeType.ownedIdentityDeletion(notifiedContactIdentity: contact) + guard let sig = try? solveChallengeDelegate.solveChallenge(challengeType, for: ownedIdentity, using: prng, within: obvContext) else { + os_log("Could not compute signature", log: log, type: .fault) + assertionFailure() + // Continue with the next contact + continue + } + signature = sig } - signature = sig + + let coreMessage = getCoreMessage(for: .AsymmetricChannelBroadcast(to: contact, fromOwnedIdentity: ownedIdentity)) + let concreteMessage = ContactOwnedIdentityWasDeletedMessage(coreProtocolMessage: coreMessage, deletedContactOwnedIdentity: ownedIdentity, signature: signature) + guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } - - let coreMessage = getCoreMessage(for: .AsymmetricChannelBroadcast(to: contact, fromOwnedIdentity: ownedIdentity)) - let concreteMessage = ContactOwnedIdentityWasDeletedMessage(coreProtocolMessage: coreMessage, deletedContactOwnedIdentity: ownedIdentity, signature: signature) + + } + + } else { + + if !allContacts.isEmpty { + let channel = ObvChannelSendChannelType.AllConfirmedObliviousChannelsWithContactIdentities(contactIdentities: allContacts, fromOwnedIdentity: ownedIdentity) + let coreMessage = getCoreMessageForOtherProtocol(for: channel, otherCryptoProtocolId: .contactManagement, otherProtocolInstanceUid: UID.gen(with: prng)) + let concreteMessage = ContactManagementProtocol.PerformContactDeviceDiscoveryMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } - } // Locally delete all contacts and their associated channels @@ -643,65 +674,61 @@ extension OwnedIdentityDeletionProtocol { } } - // Post a local message for this protocol so at the launch the `DetermineNextStepToExecuteStep` - - let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) - let concreteMessage = ContinueOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage) - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate ContinueOwnedIdentityDeletionMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + } - // Return the new state + + /// Helper method for this step + private func processChannels(globalOwnedIdentityDeletion: Bool, propagationNeeded: Bool, ownedIdentityIsActive: Bool) throws { + + let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) + + try channelDelegate.deleteAllObliviousChannelsWithTheCurrentDeviceUid(currentDeviceUid, within: obvContext) + + } - let newState = startState.getStateWhenContactsHaveBeenProcessed() - return newState + } + + + // MARK: FinalizeDeletionStepFromDeactivateOwnedDeviceServerQueryMessageStep + + final class FinalizeDeletionStepFromDeactivateOwnedDeviceServerQueryMessageStep: FinalizeDeletionStep, TypedConcreteProtocolStep { + + let startState: FirstDeletionStepPerformedState + let receivedMessage: DeactivateOwnedDeviceServerQueryMessage + init?(startState: FirstDeletionStepPerformedState, receivedMessage: DeactivateOwnedDeviceServerQueryMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: startState, + receivedMessage: .deactivateOwnedDeviceServerQueryMessage(receivedMessage: receivedMessage), + concreteCryptoProtocol: concreteCryptoProtocol) } + + // The step execution is defined in the superclass } - - // MARK: - ProcessChannelsStep - final class ProcessChannelsStep: ProtocolStep, TypedConcreteProtocolStep { - - let startState: DeletionCurrentStatusState - let receivedMessage: ProcessChannelsMessage + // MARK: FinalizeDeletionStepFromFinalizeOwnedIdentityDeletionMessageStep + + final class FinalizeDeletionStepFromFinalizeOwnedIdentityDeletionMessageStep: FinalizeDeletionStep, TypedConcreteProtocolStep { - init?(startState: DeletionCurrentStatusState, receivedMessage: ProcessChannelsMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { - + let startState: FirstDeletionStepPerformedState + let receivedMessage: FinalizeOwnedIdentityDeletionMessage + + init?(startState: FirstDeletionStepPerformedState, receivedMessage: FinalizeOwnedIdentityDeletionMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { self.startState = startState self.receivedMessage = receivedMessage - - super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, - expectedReceptionChannelInfo: .Local, - receivedMessage: receivedMessage, + super.init(startState: startState, + receivedMessage: .finalizeOwnedIdentityDeletionMessage(receivedMessage: receivedMessage), concreteCryptoProtocol: concreteCryptoProtocol) - } - - override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { - - let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) - - try channelDelegate.deleteAllObliviousChannelsWithTheCurrentDeviceUid(currentDeviceUid, within: obvContext) - - // Post a local message for this protocol so at the launch the `DetermineNextStepToExecuteStep` - - let coreMessage = getCoreMessage(for: .Local(ownedIdentity: ownedIdentity)) - let concreteMessage = ContinueOwnedIdentityDeletionMessage(coreProtocolMessage: coreMessage) - guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Could not generate ContinueOwnedIdentityDeletionMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) - - // Return the new state - - let newState = startState.getStateWhenChannelsHaveBeenProcessed() - return newState - } + // The step execution is defined in the superclass } - + // MARK: - ProcessContactOwnedIdentityWasDeletedMessageStep class ProcessContactOwnedIdentityWasDeletedMessageStep: ProtocolStep { @@ -778,7 +805,7 @@ extension OwnedIdentityDeletionProtocol { let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: Array(otherDeviceUIDs), fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) let concreteMessage = ContactOwnedIdentityWasDeletedMessage(coreProtocolMessage: coreMessage, deletedContactOwnedIdentity: deletedContactOwnedIdentity, signature: signature) guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -857,7 +884,7 @@ extension OwnedIdentityDeletionProtocol { continue } let groupManagementProtocolState = try removeGroupMembersStep.executeStep(within: obvContext) - guard groupManagementProtocolState?.rawId == GroupManagementProtocol.StateId.Final.rawValue else { + guard groupManagementProtocolState?.rawId == GroupManagementProtocol.StateId.final.rawValue else { assertionFailure() continue } @@ -900,7 +927,7 @@ extension OwnedIdentityDeletionProtocol { changeset: changeset, flowId: obvContext.flowId) - _ = try channelDelegate.post(initiateGroupUpdateMessage, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(initiateGroupUpdateMessage, randomizedWith: prng, within: obvContext) } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocol.swift new file mode 100644 index 00000000..d3c2dfeb --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocol.swift @@ -0,0 +1,62 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto +import OlvidUtils + + +public struct OwnedIdentityTransferProtocol: ConcreteCryptoProtocol { + + static let logCategory = "OwnedIdentityTransferProtocol" + + static let id = CryptoProtocolId.ownedIdentityTransfer + + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.final] + + let ownedIdentity: ObvCryptoIdentity + let currentState: ConcreteProtocolState + + let delegateManager: ObvProtocolDelegateManager + let obvContext: ObvContext + let prng: PRNGService + let instanceUid: UID + + init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { + self.currentState = currentState + self.ownedIdentity = ownedCryptoIdentity + self.delegateManager = delegateManager + self.obvContext = obvContext + self.prng = prng + self.instanceUid = instanceUid + } + + static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { + return StateId(rawValue: rawValue) + } + + static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { + return MessageId(rawValue: rawValue) + } + + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolMessages.swift new file mode 100644 index 00000000..aa431b65 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolMessages.swift @@ -0,0 +1,512 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvMetaManager +import ObvCrypto +import ObvTypes + + +// MARK: - Protocol Messages + +extension OwnedIdentityTransferProtocol { + + enum MessageId: Int, ConcreteProtocolMessageId { + + case initiateTransferOnSourceDevice = 0 + case initiateTransferOnTargetDevice = 1 + case sourceGetSessionNumber = 2 + case sourceWaitForTargetConnection = 4 +// case targetGetSessionNumber = 5 + case targetSendEphemeralIdentity = 6 + case sourceSendCommitment = 7 + case targetSeed = 8 + case sourceSASInput = 9 + case sourceDecommitment = 10 + case targetWaitForSnapshot = 11 + case sourceSnapshot = 12 + case closeWebsocketConnection = 99 + case abortProtocol = 100 + + var concreteProtocolMessageType: ConcreteProtocolMessage.Type { + switch self { + case .initiateTransferOnSourceDevice: + return InitiateTransferOnSourceDeviceMessage.self + case .initiateTransferOnTargetDevice: + return InitiateTransferOnTargetDeviceMessage.self + case .sourceGetSessionNumber: + return SourceGetSessionNumberMessage.self + case .targetSendEphemeralIdentity: + return TargetSendEphemeralIdentityMessage.self + case .targetSeed: + return TargetSeedMessage.self + case .targetWaitForSnapshot: + return TargetWaitForSnapshotMessage.self + case .closeWebsocketConnection: + return CloseWebsocketConnectionMessage.self + case .abortProtocol: + return AbortProtocolMessage.self + case .sourceWaitForTargetConnection: + return SourceWaitForTargetConnectionMessage.self + case .sourceSendCommitment: + return SourceSendCommitmentMessage.self + case .sourceDecommitment: + return SourceDecommitmentMessage.self + case .sourceSASInput: + return SourceSASInputMessage.self + case .sourceSnapshot: + return SourceSnapshotMessage.self + } + } + + } + + + // MARK: - InitiateTransferOnSourceDeviceMessage + + struct InitiateTransferOnSourceDeviceMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.initiateTransferOnSourceDevice + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + } + + + // MARK: - InitiateTransferOnTargetDeviceMessage + + struct InitiateTransferOnTargetDeviceMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.initiateTransferOnTargetDevice + let coreProtocolMessage: CoreProtocolMessage + + let currentDeviceName: String + let transferSessionNumber: ObvOwnedIdentityTransferSessionNumber + let encryptionPrivateKey: PrivateKeyForPublicKeyEncryption + let macKey: MACKey + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage, currentDeviceName: String, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, encryptionPrivateKey: PrivateKeyForPublicKeyEncryption, macKey: MACKey) { + self.coreProtocolMessage = coreProtocolMessage + self.currentDeviceName = currentDeviceName + self.transferSessionNumber = transferSessionNumber + self.encryptionPrivateKey = encryptionPrivateKey + self.macKey = macKey + } + + var encodedInputs: [ObvEncoded] { + [ + currentDeviceName.obvEncode(), + transferSessionNumber.obvEncode(), + encryptionPrivateKey.obvEncode(), + macKey.obvEncode() + ] + } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 4 else { assertionFailure(); throw ObvError.unexpectedNumberOfEncodedElements } + self.currentDeviceName = try message.encodedInputs[0].obvDecode() + self.transferSessionNumber = try message.encodedInputs[1].obvDecode() + self.encryptionPrivateKey = try PrivateKeyForPublicKeyEncryptionDecoder.obvDecodeOrThrow(message.encodedInputs[2]) + self.macKey = try MACKeyDecoder.obvDecodeOrThrow(message.encodedInputs[3]) + } + + enum ObvError: Error { + case unexpectedNumberOfEncodedElements + } + + } + + + // MARK: - SourceSASInputMessage + + struct SourceSASInputMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.sourceSASInput + let coreProtocolMessage: CoreProtocolMessage + + let enteredSAS: ObvOwnedIdentityTransferSas + let deviceUIDToKeepActive: UID? + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage, enteredSAS: ObvOwnedIdentityTransferSas, deviceUIDToKeepActive: UID?) { + self.coreProtocolMessage = coreProtocolMessage + self.enteredSAS = enteredSAS + self.deviceUIDToKeepActive = deviceUIDToKeepActive + } + + var encodedInputs: [ObvEncoded] { + var encoded = [enteredSAS.obvEncode()] + if let deviceUIDToKeepActive { + encoded += [deviceUIDToKeepActive.obvEncode()] + } + return encoded + } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + if message.encodedInputs.count == 1 { + self.enteredSAS = try message.encodedInputs[0].obvDecode() + self.deviceUIDToKeepActive = nil + } else if message.encodedInputs.count == 2 { + self.enteredSAS = try message.encodedInputs[0].obvDecode() + self.deviceUIDToKeepActive = try message.encodedInputs[1].obvDecode() + } else { + throw ObvError.unexpectedNumberOfEncodedElements + } + } + + enum ObvError: Error { + case unexpectedNumberOfEncodedElements + } + + } + + + // MARK: - SourceGetSessionNumberMessage + + struct SourceGetSessionNumberMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.sourceGetSessionNumber + let coreProtocolMessage: CoreProtocolMessage + + // Not used when posting this message from the protocol manager + let result: SourceGetSessionNumberResult + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.result = .requestFailed // Not used anyway + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw ObvError.unexpectedNumberOfEncodedElements } + self.result = try message.encodedInputs[0].obvDecode() + } + + enum ObvError: Error { + case unexpectedNumberOfEncodedElements + } + + } + + + // MARK: - SourceGetSessionNumberMessage + + struct SourceWaitForTargetConnectionMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.sourceWaitForTargetConnection + let coreProtocolMessage: CoreProtocolMessage + + // Not used when posting this message from the protocol manager + let result: SourceWaitForTargetConnectionResult + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.result = .requestFailed // Not used anyway + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw ObvError.unexpectedNumberOfEncodedElements } + self.result = try message.encodedInputs[0].obvDecode() + } + + enum ObvError: Error { + case unexpectedNumberOfEncodedElements + } + + } + + + // MARK: - SourceSendCommitmentMessage + + struct SourceSendCommitmentMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.sourceSendCommitment + let coreProtocolMessage: CoreProtocolMessage + + // Not used when posting this message from the protocol manager + let result: OwnedIdentityTransferRelayMessageResult + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.result = .requestFailed // Not used anyway + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw ObvError.unexpectedNumberOfEncodedElements } + self.result = try message.encodedInputs[0].obvDecode() + } + + enum ObvError: Error { + case unexpectedNumberOfEncodedElements + } + + } + + + // MARK: - SourceDecommitmentMessage + + struct SourceDecommitmentMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.sourceDecommitment + let coreProtocolMessage: CoreProtocolMessage + + // Not used when posting this message from the protocol manager + let result: OwnedIdentityTransferRelayMessageResult + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.result = .requestFailed // Not used anyway + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw ObvError.unexpectedNumberOfEncodedElements } + self.result = try message.encodedInputs[0].obvDecode() + } + + enum ObvError: Error { + case unexpectedNumberOfEncodedElements + } + + } + + + // MARK: - TargetSendEphemeralIdentityMessage + + struct TargetSendEphemeralIdentityMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.targetSendEphemeralIdentity + let coreProtocolMessage: CoreProtocolMessage + + // Not used when posting this message from the protocol manager + let result: TargetSendEphemeralIdentityResult + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.result = .requestDidFail // Not used anyway + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw ObvError.unexpectedNumberOfEncodedElements } + self.result = try message.encodedInputs[0].obvDecode() + } + + enum ObvError: Error { + case unexpectedNumberOfEncodedElements + } + + } + + + // MARK: - TargetSeedMessage + + struct TargetSeedMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.targetSeed + let coreProtocolMessage: CoreProtocolMessage + + // Not used when posting this message from the protocol manager + let result: OwnedIdentityTransferRelayMessageResult + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.result = .requestFailed // Not used anyway + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw ObvError.unexpectedNumberOfEncodedElements } + self.result = try message.encodedInputs[0].obvDecode() + } + + enum ObvError: Error { + case unexpectedNumberOfEncodedElements + } + + } + + + // MARK: - TargetWaitForSnapshotMessage + + struct TargetWaitForSnapshotMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.targetWaitForSnapshot + let coreProtocolMessage: CoreProtocolMessage + + // Not used when posting this message from the protocol manager + let result: OwnedIdentityTransferWaitResult + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + self.result = .requestFailed // Not used anyway + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + guard message.encodedInputs.count == 1 else { assertionFailure(); throw ObvError.unexpectedNumberOfEncodedElements } + self.result = try message.encodedInputs[0].obvDecode() + } + + enum ObvError: Error { + case unexpectedNumberOfEncodedElements + } + + } + + + // MARK: - AbortProtocolMessage + + struct AbortProtocolMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.abortProtocol + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + } + + + // MARK: - CloseWebsocketConnectionMessage + + struct CloseWebsocketConnectionMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.closeWebsocketConnection + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message (never called as we don't expect an answer to this server query) + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + } + + + // MARK: - SourceSnapshotMessage + + struct SourceSnapshotMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.sourceSnapshot + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message (never called as we don't expect an answer to this server query) + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + } + + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolNotifications.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolNotifications.swift new file mode 100644 index 00000000..58723033 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolNotifications.swift @@ -0,0 +1,444 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvMetaManager +import ObvCrypto +import ObvTypes + + +struct OwnedIdentityTransferProtocolNotification { + + struct NotificationDescriptor { + let name: Notification.Name + let convert: (Notification) -> Payload + } + + enum KindForObserving { + case sourceDisplaySessionNumber(payload: (SourceDisplaySessionNumber.Payload) -> Void) + case ownedIdentityTransferProtocolFailed(payload: (OwnedIdentityTransferProtocolFailed.Payload) -> Void) + case userEnteredIncorrectTransferSessionNumber(payload: (UserEnteredIncorrectTransferSessionNumber.Payload) -> Void) + case sasIsAvailable(payload: (SasIsAvailable.Payload) -> Void) + case processingReceivedSnapshotOntargetDevice(payload: (ProcessingReceivedSnapshotOntargetDevice.Payload) -> Void) + case successfulTransferOnTargetDevice(payload: (SuccessfulTransferOnTargetDevice.Payload) -> Void) + case waitingForSASOnSourceDevice(payload: (WaitingForSASOnSourceDevice.Payload) -> Void) + } + + enum KindForPosting { + case sourceDisplaySessionNumber(payload: SourceDisplaySessionNumber.Payload) + case ownedIdentityTransferProtocolFailed(payload: OwnedIdentityTransferProtocolFailed.Payload) + case userEnteredIncorrectTransferSessionNumber(payload: UserEnteredIncorrectTransferSessionNumber.Payload) + case sasIsAvailable(payload: SasIsAvailable.Payload) + case processingReceivedSnapshotOntargetDevice(payload: ProcessingReceivedSnapshotOntargetDevice.Payload) + case successfulTransferOnTargetDevice(payload: SuccessfulTransferOnTargetDevice.Payload) + case waitingForSASOnSourceDevice(payload: WaitingForSASOnSourceDevice.Payload) + } + + + struct SourceDisplaySessionNumber { + + fileprivate static let name: Notification.Name = .init("io.olvid.protocolmanager.OwnedIdentityTransferProtocolNotification.SourceDisplaySessionNumber") + + struct Payload { + let protocolInstanceUID: UID + let sessionNumber: ObvOwnedIdentityTransferSessionNumber + enum Key: String { + case protocolInstanceUID = "protocolInstanceUID" + case sessionNumber = "sessionNumber" + } + } + + let payload: Payload + + } + + + struct OwnedIdentityTransferProtocolFailed { + + fileprivate static let name: Notification.Name = .init("io.olvid.protocolmanager.OwnedIdentityTransferProtocolNotification.OwnedIdentityTransferProtocolFailed") + + struct Payload { + let ownedCryptoIdentity: ObvCryptoIdentity + let protocolInstanceUID: UID + let error: Error + enum Key: String { + case ownedCryptoIdentity = "ownedCryptoIdentity" + case protocolInstanceUID = "protocolInstanceUID" + case error = "Error" + } + } + + let payload: Payload + + } + + + struct UserEnteredIncorrectTransferSessionNumber { + + fileprivate static let name: Notification.Name = .init("io.olvid.protocolmanager.OwnedIdentityTransferProtocolNotification.UserEnteredIncorrectTransferSessionNumber") + + struct Payload { + let protocolInstanceUID: UID + enum Key: String { + case protocolInstanceUID = "protocolInstanceUID" + } + } + + let payload: Payload + + } + + + struct SasIsAvailable { + + fileprivate static let name: Notification.Name = .init("io.olvid.protocolmanager.OwnedIdentityTransferProtocolNotification.SasIsAvailable") + + struct Payload { + let protocolInstanceUID: UID + let sas: ObvOwnedIdentityTransferSas + enum Key: String { + case protocolInstanceUID = "protocolInstanceUID" + case sas = "sas" + } + } + + let payload: Payload + + } + + + struct ProcessingReceivedSnapshotOntargetDevice { + + fileprivate static let name: Notification.Name = .init("io.olvid.protocolmanager.OwnedIdentityTransferProtocolNotification.ProcessingReceivedSnapshotOntargetDevice") + + struct Payload { + let protocolInstanceUID: UID + enum Key: String { + case protocolInstanceUID = "protocolInstanceUID" + } + } + + let payload: Payload + + } + + + struct SuccessfulTransferOnTargetDevice { + + fileprivate static let name: Notification.Name = .init("io.olvid.protocolmanager.OwnedIdentityTransferProtocolNotification.SuccessfulTransferOnTargetDevice") + + struct Payload { + let protocolInstanceUID: UID + let transferredOwnedCryptoId: ObvCryptoId + let postTransferError: Error? + enum Key: String { + case protocolInstanceUID = "protocolInstanceUID" + case transferredOwnedCryptoId = "transferredOwnedCryptoId" + case postTransferError = "postTransferError" + } + } + + let payload: Payload + + } + + + struct WaitingForSASOnSourceDevice { + + fileprivate static let name: Notification.Name = .init("io.olvid.protocolmanager.OwnedIdentityTransferProtocolNotification.WaitingForSASOnSourceDevice") + + struct Payload { + let protocolInstanceUID: UID + let sasExpectedOnInput: ObvOwnedIdentityTransferSas + let targetDeviceName: String + enum Key: String { + case protocolInstanceUID = "protocolInstanceUID" + case sasExpectedOnInput = "sasExpectedOnInput" + case targetDeviceName = "targetDeviceName" + } + } + + let payload: Payload + + } + +} + + +fileprivate extension OwnedIdentityTransferProtocolNotification.SourceDisplaySessionNumber.Payload { + + init(notification: Notification) { + let Key = OwnedIdentityTransferProtocolNotification.SourceDisplaySessionNumber.Payload.Key.self + self.protocolInstanceUID = notification.userInfo![Key.protocolInstanceUID.rawValue] as! UID + self.sessionNumber = notification.userInfo![Key.sessionNumber.rawValue] as! ObvOwnedIdentityTransferSessionNumber + } + +} + + +fileprivate extension OwnedIdentityTransferProtocolNotification.OwnedIdentityTransferProtocolFailed.Payload { + + init(notification: Notification) { + let Key = OwnedIdentityTransferProtocolNotification.OwnedIdentityTransferProtocolFailed.Payload.Key.self + self.ownedCryptoIdentity = notification.userInfo![Key.ownedCryptoIdentity.rawValue] as! ObvCryptoIdentity + self.protocolInstanceUID = notification.userInfo![Key.protocolInstanceUID.rawValue] as! UID + self.error = notification.userInfo![Key.error.rawValue] as! Error + } + +} + + +fileprivate extension OwnedIdentityTransferProtocolNotification.UserEnteredIncorrectTransferSessionNumber.Payload { + + init(notification: Notification) { + let Key = OwnedIdentityTransferProtocolNotification.UserEnteredIncorrectTransferSessionNumber.Payload.Key.self + self.protocolInstanceUID = notification.userInfo![Key.protocolInstanceUID.rawValue] as! UID + } + +} + + +fileprivate extension OwnedIdentityTransferProtocolNotification.SasIsAvailable.Payload { + + init(notification: Notification) { + let Key = OwnedIdentityTransferProtocolNotification.SasIsAvailable.Payload.Key.self + self.protocolInstanceUID = notification.userInfo![Key.protocolInstanceUID.rawValue] as! UID + self.sas = notification.userInfo![Key.sas.rawValue] as! ObvOwnedIdentityTransferSas + } + +} + + +fileprivate extension OwnedIdentityTransferProtocolNotification.ProcessingReceivedSnapshotOntargetDevice.Payload { + + init(notification: Notification) { + let Key = OwnedIdentityTransferProtocolNotification.SasIsAvailable.Payload.Key.self + self.protocolInstanceUID = notification.userInfo![Key.protocolInstanceUID.rawValue] as! UID + } + +} + + +fileprivate extension OwnedIdentityTransferProtocolNotification.SuccessfulTransferOnTargetDevice.Payload { + + init(notification: Notification) { + let Key = OwnedIdentityTransferProtocolNotification.SuccessfulTransferOnTargetDevice.Payload.Key.self + self.protocolInstanceUID = notification.userInfo![Key.protocolInstanceUID.rawValue] as! UID + self.transferredOwnedCryptoId = notification.userInfo![Key.transferredOwnedCryptoId.rawValue] as! ObvCryptoId + self.postTransferError = notification.userInfo![Key.postTransferError.rawValue] as? Error + } + +} + + +fileprivate extension OwnedIdentityTransferProtocolNotification.WaitingForSASOnSourceDevice.Payload { + + init(notification: Notification) { + let Key = OwnedIdentityTransferProtocolNotification.WaitingForSASOnSourceDevice.Payload.Key.self + self.protocolInstanceUID = notification.userInfo![Key.protocolInstanceUID.rawValue] as! UID + self.sasExpectedOnInput = notification.userInfo![Key.sasExpectedOnInput.rawValue] as! ObvOwnedIdentityTransferSas + self.targetDeviceName = notification.userInfo![Key.targetDeviceName.rawValue] as! String + } + +} + + +fileprivate extension Notification { + + init(payload: OwnedIdentityTransferProtocolNotification.SourceDisplaySessionNumber.Payload) { + let Type = OwnedIdentityTransferProtocolNotification.SourceDisplaySessionNumber.self + let userInfo: [String : Any] = [ + Type.Payload.Key.protocolInstanceUID.rawValue: payload.protocolInstanceUID, + Type.Payload.Key.sessionNumber.rawValue: payload.sessionNumber, + ] + self.init(name: Type.name, object: nil, userInfo: userInfo) + } + + + init(payload: OwnedIdentityTransferProtocolNotification.OwnedIdentityTransferProtocolFailed.Payload) { + let Type = OwnedIdentityTransferProtocolNotification.OwnedIdentityTransferProtocolFailed.self + let userInfo: [String : Any] = [ + Type.Payload.Key.ownedCryptoIdentity.rawValue: payload.ownedCryptoIdentity, + Type.Payload.Key.protocolInstanceUID.rawValue: payload.protocolInstanceUID, + Type.Payload.Key.error.rawValue: payload.error, + ] + self.init(name: Type.name, object: nil, userInfo: userInfo) + } + + + init(payload: OwnedIdentityTransferProtocolNotification.UserEnteredIncorrectTransferSessionNumber.Payload) { + let Type = OwnedIdentityTransferProtocolNotification.UserEnteredIncorrectTransferSessionNumber.self + let userInfo: [String : Any] = [ + Type.Payload.Key.protocolInstanceUID.rawValue: payload.protocolInstanceUID, + ] + self.init(name: Type.name, object: nil, userInfo: userInfo) + } + + + init(payload: OwnedIdentityTransferProtocolNotification.SasIsAvailable.Payload) { + let Type = OwnedIdentityTransferProtocolNotification.SasIsAvailable.self + let userInfo: [String : Any] = [ + Type.Payload.Key.protocolInstanceUID.rawValue: payload.protocolInstanceUID, + Type.Payload.Key.sas.rawValue: payload.sas, + ] + self.init(name: Type.name, object: nil, userInfo: userInfo) + } + + + init(payload: OwnedIdentityTransferProtocolNotification.ProcessingReceivedSnapshotOntargetDevice.Payload) { + let Type = OwnedIdentityTransferProtocolNotification.ProcessingReceivedSnapshotOntargetDevice.self + let userInfo: [String : Any] = [ + Type.Payload.Key.protocolInstanceUID.rawValue: payload.protocolInstanceUID, + ] + self.init(name: Type.name, object: nil, userInfo: userInfo) + } + + + init(payload: OwnedIdentityTransferProtocolNotification.SuccessfulTransferOnTargetDevice.Payload) { + let Type = OwnedIdentityTransferProtocolNotification.SuccessfulTransferOnTargetDevice.self + let userInfo: [String : Any] = [ + Type.Payload.Key.protocolInstanceUID.rawValue: payload.protocolInstanceUID, + Type.Payload.Key.transferredOwnedCryptoId.rawValue: payload.transferredOwnedCryptoId, + Type.Payload.Key.postTransferError.rawValue: payload.postTransferError as Any, + ] + self.init(name: Type.name, object: nil, userInfo: userInfo) + } + + + init(payload: OwnedIdentityTransferProtocolNotification.WaitingForSASOnSourceDevice.Payload) { + let Type = OwnedIdentityTransferProtocolNotification.WaitingForSASOnSourceDevice.self + let userInfo: [String : Any] = [ + Type.Payload.Key.protocolInstanceUID.rawValue: payload.protocolInstanceUID, + Type.Payload.Key.sasExpectedOnInput.rawValue: payload.sasExpectedOnInput, + Type.Payload.Key.targetDeviceName.rawValue: payload.targetDeviceName, + ] + self.init(name: Type.name, object: nil, userInfo: userInfo) + } + +} + + +extension ObvNotificationDelegate { + + private func addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor, using block: @escaping (Payload) -> Void) -> NSObjectProtocol { + let token = addObserver(forName: descriptor.name, queue: nil) { notification in + let payload = descriptor.convert(notification) + Task { + block(payload) + } + } + return token + } + + + func addObserverOfOwnedIdentityTransferProtocolNotification(_ kind: OwnedIdentityTransferProtocolNotification.KindForObserving) -> NSObjectProtocol { + switch kind { + case .sourceDisplaySessionNumber(payload: let payload): + let Type = OwnedIdentityTransferProtocolNotification.SourceDisplaySessionNumber.self + let notificationDescriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor = .init(name: Type.name, convert: Type.Payload.init) + return addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: notificationDescriptor, using: payload) + case .ownedIdentityTransferProtocolFailed(payload: let payload): + let Type = OwnedIdentityTransferProtocolNotification.OwnedIdentityTransferProtocolFailed.self + let notificationDescriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor = .init(name: Type.name, convert: Type.Payload.init) + return addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: notificationDescriptor, using: payload) + case .userEnteredIncorrectTransferSessionNumber(payload: let payload): + let Type = OwnedIdentityTransferProtocolNotification.UserEnteredIncorrectTransferSessionNumber.self + let notificationDescriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor = .init(name: Type.name, convert: Type.Payload.init) + return addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: notificationDescriptor, using: payload) + case .sasIsAvailable(payload: let payload): + let Type = OwnedIdentityTransferProtocolNotification.SasIsAvailable.self + let notificationDescriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor = .init(name: Type.name, convert: Type.Payload.init) + return addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: notificationDescriptor, using: payload) + case .processingReceivedSnapshotOntargetDevice(payload: let payload): + let Type = OwnedIdentityTransferProtocolNotification.ProcessingReceivedSnapshotOntargetDevice.self + let notificationDescriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor = .init(name: Type.name, convert: Type.Payload.init) + return addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: notificationDescriptor, using: payload) + case .successfulTransferOnTargetDevice(payload: let payload): + let Type = OwnedIdentityTransferProtocolNotification.SuccessfulTransferOnTargetDevice.self + let notificationDescriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor = .init(name: Type.name, convert: Type.Payload.init) + return addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: notificationDescriptor, using: payload) + case .waitingForSASOnSourceDevice(payload: let payload): + let Type = OwnedIdentityTransferProtocolNotification.WaitingForSASOnSourceDevice.self + let notificationDescriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor = .init(name: Type.name, convert: Type.Payload.init) + return addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: notificationDescriptor, using: payload) + } + } + + + func postOwnedIdentityTransferProtocolNotification(_ kind: OwnedIdentityTransferProtocolNotification.KindForPosting) { + Task { + let notification: Notification + switch kind { + case .sourceDisplaySessionNumber(payload: let payload): + notification = .init(payload: payload) + case .ownedIdentityTransferProtocolFailed(payload: let payload): + notification = .init(payload: payload) + case .userEnteredIncorrectTransferSessionNumber(payload: let payload): + notification = .init(payload: payload) + case .sasIsAvailable(payload: let payload): + notification = .init(payload: payload) + case .processingReceivedSnapshotOntargetDevice(payload: let payload): + notification = .init(payload: payload) + case .successfulTransferOnTargetDevice(payload: let payload): + notification = .init(payload: payload) + case .waitingForSASOnSourceDevice(payload: let payload): + notification = .init(payload: payload) + } + post(name: notification.name, userInfo: notification.userInfo) + } + } + +} + + +//extension NotificationCenter { +// +// private func addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor, using block: @escaping (Payload) -> Void) -> NSObjectProtocol { +// let token = addObserver(forName: descriptor.name, object: nil, queue: nil) { notification in +// let payload = descriptor.convert(notification) +// Task { +// block(payload) +// } +// } +// return token +// } +// +// +// func addObserverOfOwnedIdentityTransferProtocolNotification(_ kind: OwnedIdentityTransferProtocolNotification.KindForObserving) -> NSObjectProtocol { +// switch kind { +// case .cancelOwnedIdentityTransferProtocol(using: let block): +// let Type = OwnedIdentityTransferProtocolNotification.CancelOwnedIdentityTransferProtocol.self +// let notificationDescriptor: OwnedIdentityTransferProtocolNotification.NotificationDescriptor = .init(name: Type.name, convert: Type.Payload.init) +// return addObserverOfOwnedIdentityTransferProtocolNotification(descriptor: notificationDescriptor, using: block) +// } +// } +// +// +// func postOwnedIdentityTransferProtocolNotification(_ kind: OwnedIdentityTransferProtocolNotification.KindForPosting) { +// Task { +// let notification: Notification +// switch kind { +// case .cancelOwnedIdentityTransferProtocol(payload: let payload): +// notification = .init(payload: payload) +// } +// post(notification) +// } +// } +// +//} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolStates.swift new file mode 100644 index 00000000..6d6e5908 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolStates.swift @@ -0,0 +1,311 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvCrypto +import ObvTypes + + +// MARK: - Protocol States + +extension OwnedIdentityTransferProtocol { + + enum StateId: Int, ConcreteProtocolStateId { + + case initialState = 0 + case sourceWaitingForSessionNumber = 1 + case sourceWaitingForTargetConnection = 2 + // No need for a targetWaitingForSessionNumber state (defined under Android) + case targetWaitingForTransferredIdentity = 4 + case sourceWaitingForTargetSeed = 5 + case targetWaitingForDecommitment = 6 + case sourceWaitingForSASInput = 7 + case targetWaitingForSnapshot = 8 + case final = 99 + + var concreteProtocolStateType: ConcreteProtocolState.Type { + switch self { + case .initialState: return ConcreteProtocolInitialState.self + case .sourceWaitingForSessionNumber: return SourceWaitingForSessionNumberState.self + case .sourceWaitingForTargetConnection: return SourceWaitingForTargetConnectionState.self + case .targetWaitingForTransferredIdentity: return TargetWaitingForTransferredIdentityState.self + case .targetWaitingForDecommitment: return TargetWaitingForDecommitmentState.self + case .targetWaitingForSnapshot: return TargetWaitingForSnapshotState.self + case .final: return FinalState.self + case .sourceWaitingForTargetSeed: return SourceWaitingForTargetSeedState.self + case .sourceWaitingForSASInput: return SourceWaitingForSASInputState.self + } + } + + } + + + + // MARK: - SourceWaitingForSessionNumberState + + struct SourceWaitingForSessionNumberState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.sourceWaitingForSessionNumber + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + init(_ obvEncoded: ObvEncoded) throws {} + + } + + + // MARK: - SourceWaitingForTargetConnectionState + + struct SourceWaitingForTargetConnectionState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.sourceWaitingForTargetConnection + + let sourceConnectionId: String + + init(sourceConnectionId: String) { + self.sourceConnectionId = sourceConnectionId + } + + func obvEncode() -> ObvEncoded { return [sourceConnectionId].obvEncode() } + + init(_ obvEncoded: ObvEncoded) throws { + guard let encodedValues = [ObvEncoded](obvEncoded) else { assertionFailure(); throw ObvStateError.couldNotDecodeState} + guard encodedValues.count == 1 else { assertionFailure(); throw ObvStateError.unexpectedNumberOfEncodedValues } + self.sourceConnectionId = try encodedValues[0].obvDecode() + } + + } + + + // MARK: - TargetWaitingForTransferredIdentityState + + struct TargetWaitingForTransferredIdentityState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.targetWaitingForTransferredIdentity + + let currentDeviceName: String + let encryptionPrivateKey: PrivateKeyForPublicKeyEncryption + let macKey: MACKey + + init(currentDeviceName: String, encryptionPrivateKey: PrivateKeyForPublicKeyEncryption, macKey: MACKey) { + self.currentDeviceName = currentDeviceName + self.encryptionPrivateKey = encryptionPrivateKey + self.macKey = macKey + } + + func obvEncode() -> ObvEncoded { + [currentDeviceName, + encryptionPrivateKey, + macKey, + ].obvEncode() + } + + init(_ obvEncoded: ObvEncoded) throws { + guard let encodedValues = [ObvEncoded](obvEncoded) else { assertionFailure(); throw ObvStateError.couldNotDecodeState} + guard encodedValues.count == 3 else { assertionFailure(); throw ObvStateError.unexpectedNumberOfEncodedValues } + self.currentDeviceName = try encodedValues[0].obvDecode() + self.encryptionPrivateKey = try PrivateKeyForPublicKeyEncryptionDecoder.obvDecodeOrThrow(encodedValues[1]) + self.macKey = try MACKeyDecoder.obvDecodeOrThrow(encodedValues[2]) + } + + } + + + // MARK: - TargetWaitingForDecommitmentState + + struct TargetWaitingForDecommitmentState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.targetWaitingForDecommitment + + let currentDeviceName: String + let encryptionPrivateKey: PrivateKeyForPublicKeyEncryption + let otherConnectionIdentifier: String + let transferredIdentity: ObvCryptoIdentity + let commitment: Data + let seedTargetForSas: Seed + + init(currentDeviceName: String, encryptionPrivateKey: PrivateKeyForPublicKeyEncryption, otherConnectionIdentifier: String, transferredIdentity: ObvCryptoIdentity, commitment: Data, seedTargetForSas: Seed) { + self.currentDeviceName = currentDeviceName + self.encryptionPrivateKey = encryptionPrivateKey + self.otherConnectionIdentifier = otherConnectionIdentifier + self.transferredIdentity = transferredIdentity + self.commitment = commitment + self.seedTargetForSas = seedTargetForSas + } + + func obvEncode() -> ObvEncoded { + [currentDeviceName, + encryptionPrivateKey, + otherConnectionIdentifier, + transferredIdentity, + commitment, + seedTargetForSas, + ].obvEncode() + } + + init(_ obvEncoded: ObvEncoded) throws { + guard let encodedValues = [ObvEncoded](obvEncoded) else { assertionFailure(); throw ObvStateError.couldNotDecodeState} + guard encodedValues.count == 6 else { assertionFailure(); throw ObvStateError.unexpectedNumberOfEncodedValues } + self.currentDeviceName = try encodedValues[0].obvDecode() + self.encryptionPrivateKey = try PrivateKeyForPublicKeyEncryptionDecoder.obvDecodeOrThrow(encodedValues[1]) + self.otherConnectionIdentifier = try encodedValues[2].obvDecode() + self.transferredIdentity = try encodedValues[3].obvDecode() + self.commitment = try encodedValues[4].obvDecode() + self.seedTargetForSas = try encodedValues[5].obvDecode() + } + + } + + + + // MARK: - TargetWaitingForSnapshotState + + struct TargetWaitingForSnapshotState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.targetWaitingForSnapshot + + let currentDeviceName: String // ok + let encryptionPrivateKey: PrivateKeyForPublicKeyEncryption // ok + let transferredIdentity: ObvCryptoIdentity // ok + + init(currentDeviceName: String, encryptionPrivateKey: PrivateKeyForPublicKeyEncryption, transferredIdentity: ObvCryptoIdentity) { + self.currentDeviceName = currentDeviceName + self.encryptionPrivateKey = encryptionPrivateKey + self.transferredIdentity = transferredIdentity + } + + func obvEncode() -> ObvEncoded { + [currentDeviceName, + encryptionPrivateKey, + transferredIdentity, + ].obvEncode() + } + + init(_ obvEncoded: ObvEncoded) throws { + guard let encodedValues = [ObvEncoded](obvEncoded) else { assertionFailure(); throw ObvStateError.couldNotDecodeState} + guard encodedValues.count == 3 else { assertionFailure(); throw ObvStateError.unexpectedNumberOfEncodedValues } + self.currentDeviceName = try encodedValues[0].obvDecode() + self.encryptionPrivateKey = try PrivateKeyForPublicKeyEncryptionDecoder.obvDecodeOrThrow(encodedValues[1]) + self.transferredIdentity = try encodedValues[2].obvDecode() + } + + } + + + // MARK: - SourceWaitingForTargetSeedState + + struct SourceWaitingForTargetSeedState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.sourceWaitingForTargetSeed + + let targetConnectionId: String + let targetEphemeralIdentity: ObvCryptoIdentity + let seedSourceForSas: Seed + let decommitment: Data + + init(targetConnectionId: String, targetEphemeralIdentity: ObvCryptoIdentity, seedSourceForSas: Seed, decommitment: Data) { + self.targetConnectionId = targetConnectionId + self.targetEphemeralIdentity = targetEphemeralIdentity + self.seedSourceForSas = seedSourceForSas + self.decommitment = decommitment + } + + func obvEncode() -> ObvEncoded { + [ + targetConnectionId, + targetEphemeralIdentity, + seedSourceForSas, + decommitment, + ].obvEncode() + } + + init(_ obvEncoded: ObvEncoded) throws { + guard let encodedValues = [ObvEncoded](obvEncoded) else { assertionFailure(); throw ObvStateError.couldNotDecodeState} + guard encodedValues.count == 4 else { assertionFailure(); throw ObvStateError.unexpectedNumberOfEncodedValues } + self.targetConnectionId = try encodedValues[0].obvDecode() + self.targetEphemeralIdentity = try encodedValues[1].obvDecode() + self.seedSourceForSas = try encodedValues[2].obvDecode() + self.decommitment = try encodedValues[3].obvDecode() + } + + } + + + // MARK: - SourceWaitingForSASInputState + + struct SourceWaitingForSASInputState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.sourceWaitingForSASInput + + let targetConnectionId: String + let targetEphemeralIdentity: ObvCryptoIdentity + let fullSas: ObvOwnedIdentityTransferSas + + + init(targetConnectionId: String, targetEphemeralIdentity: ObvCryptoIdentity, fullSas: ObvOwnedIdentityTransferSas) { + self.targetConnectionId = targetConnectionId + self.targetEphemeralIdentity = targetEphemeralIdentity + self.fullSas = fullSas + } + + func obvEncode() -> ObvEncoded { + [ + targetConnectionId, + targetEphemeralIdentity, + fullSas, + ].obvEncode() + } + + init(_ obvEncoded: ObvEncoded) throws { + guard let encodedValues = [ObvEncoded](obvEncoded) else { assertionFailure(); throw ObvStateError.couldNotDecodeState} + guard encodedValues.count == 3 else { assertionFailure(); throw ObvStateError.unexpectedNumberOfEncodedValues } + self.targetConnectionId = try encodedValues[0].obvDecode() + self.targetEphemeralIdentity = try encodedValues[1].obvDecode() + self.fullSas = try encodedValues[2].obvDecode() + } + + } + + + // MARK: - FinalState + + struct FinalState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.final + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + + + // Errors + + enum ObvStateError: Error { + case couldNotDecodeState + case unexpectedNumberOfEncodedValues + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolSteps.swift new file mode 100644 index 00000000..46b35277 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/OwnedIdentityTransferProtocol/OwnedIdentityTransferProtocolSteps.swift @@ -0,0 +1,1530 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvMetaManager +import ObvCrypto +import ObvEncoder +import ObvTypes + + +// MARK: - Protocol Steps + +extension OwnedIdentityTransferProtocol { + + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { + + // Steps executed on the source device + + case initiateTransferOnSourceDevice = 0 + case sourceDisplaysSessionNumber = 1 + case sourceSendsTransferredIdentityAndCommitment = 2 + case sourceSendsDecommitmentAndShowsSasInput = 3 + case sourceCheckSasInputAndSendSnapshot = 4 + + // Steps executed on the target device + + case initiateTransferOnTargetDevice = 10 + case targetSendsSeed = 11 + case targetShowsSas = 12 + case targetProcessesSnapshot = 13 + + // Abort step + + case abortProtocol = 100 + + func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { + switch self { + + // Steps executed on the source device + + case .initiateTransferOnSourceDevice: + let step = InitiateTransferOnSourceDeviceStep(from: concreteProtocol, and: receivedMessage) + return step + case .sourceDisplaysSessionNumber: + let step = SourceDisplaysSessionNumberStep(from: concreteProtocol, and: receivedMessage) + return step + case .sourceSendsTransferredIdentityAndCommitment: + let step = SourceSendsTransferredIdentityAndCommitmentStep(from: concreteProtocol, and: receivedMessage) + return step + case .sourceSendsDecommitmentAndShowsSasInput: + let step = SourceSendsDecommitmentAndShowsSasInputStep(from: concreteProtocol, and: receivedMessage) + return step + case .sourceCheckSasInputAndSendSnapshot: + let step = SourceCheckSasInputAndSendSnapshotStep(from: concreteProtocol, and: receivedMessage) + return step + + // Steps executed on the target device + + case .initiateTransferOnTargetDevice: + let step = InitiateTransferOnTargetDeviceStep(from: concreteProtocol, and: receivedMessage) + return step + case .targetSendsSeed: + let step = TargetSendsSeedStep(from: concreteProtocol, and: receivedMessage) + return step + case .targetShowsSas: + let step = TargetShowsSasStep(from: concreteProtocol, and: receivedMessage) + return step + case .targetProcessesSnapshot: + let step = TargetProcessesSnapshotStep(from: concreteProtocol, and: receivedMessage) + return step + + // Abort step + + case .abortProtocol: + if let step = AbortProtocolStepFromSourceWaitingForSessionNumberState(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = AbortProtocolStepFromSourceWaitingForTargetConnectionState(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = AbortProtocolStepFromSourceWaitingForTargetSeedState(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = AbortProtocolStepFromTargetWaitingForTransferredIdentityState(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = AbortProtocolStepFromTargetWaitingForDecommitmentState(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = AbortProtocolStepFromSourceWaitingForSASInputState(from: concreteProtocol, and: receivedMessage) { + return step + } else if let step = AbortProtocolStepFromTargetWaitingForSnapshotState(from: concreteProtocol, and: receivedMessage) { + return step + } else { + return nil + } + } + } + + } + + + // MARK: - InitiateTransferOnSourceDeviceStep + + final class InitiateTransferOnSourceDeviceStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: InitiateTransferOnSourceDeviceMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: OwnedIdentityTransferProtocol.InitiateTransferOnSourceDeviceMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + do { + + // Connect to the transfer server and get a session number + + do { + let type = ObvChannelServerQueryMessageToSend.QueryType.sourceGetSessionNumber(protocolInstanceUID: protocolInstanceUid) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = SourceGetSessionNumberMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + // Return the new state + + return SourceWaitingForSessionNumberState() + + } catch { + + assertionFailure() + postOwnedIdentityTransferProtocolNotification(withError: error) + return startState + + } + + } + + + /// Called by the step when things got really wrong. This notification will be catched by the protocol starter delegate that will properly abort this protocol and notify the app. + private func postOwnedIdentityTransferProtocolNotification(withError: Error) { + let notificationDelegate = self.notificationDelegate + let ownedCryptoIdentity = self.ownedIdentity + let protocolInstanceUID = self.protocolInstanceUid + try? obvContext.addContextDidSaveCompletionHandler { error in + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init( + ownedCryptoIdentity: ownedCryptoIdentity, + protocolInstanceUID: protocolInstanceUID, + error: withError))) + } + } + + + } + + + // MARK: - SourceDisplaysSessionNumberStep + + final class SourceDisplaysSessionNumberStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: SourceWaitingForSessionNumberState + let receivedMessage: SourceGetSessionNumberMessage + + init?(startState: SourceWaitingForSessionNumberState, receivedMessage: SourceGetSessionNumberMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + do { + + let result = receivedMessage.result + + switch result { + + case .requestFailed: + + throw ObvError.serverRequestFailed + + case .requestSucceeded(sourceConnectionId: let sourceConnectionId, sessionNumber: let sessionNumber): + + // On save, notify that the session number is available + + do { + let notificationDelegate = self.notificationDelegate + let protocolInstanceUid = self.protocolInstanceUid + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.sourceDisplaySessionNumber(payload: .init(protocolInstanceUID: protocolInstanceUid, sessionNumber: sessionNumber))) + } + } + + // Wait for the transfer server's target connection message + + do { + let type = ObvChannelServerQueryMessageToSend.QueryType.sourceWaitForTargetConnection(protocolInstanceUID: protocolInstanceUid) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = SourceWaitForTargetConnectionMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + // Return the new state + + return SourceWaitingForTargetConnectionState(sourceConnectionId: sourceConnectionId) + + } + + } catch { + + assertionFailure() + postOwnedIdentityTransferProtocolNotification(withError: error) + return startState + + } + + } + + + /// Called by the step when things got really wrong. This notification will be catched by the protocol starter delegate that will properly abort this protocol and notify the app. + private func postOwnedIdentityTransferProtocolNotification(withError: Error) { + let notificationDelegate = self.notificationDelegate + let ownedCryptoIdentity = self.ownedIdentity + let protocolInstanceUID = self.protocolInstanceUid + try? obvContext.addContextDidSaveCompletionHandler { error in + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init( + ownedCryptoIdentity: ownedCryptoIdentity, + protocolInstanceUID: protocolInstanceUID, + error: withError))) + } + } + + } + + + // MARK: - SourceSendsTransferredIdentityAndCommitmentStep + + final class SourceSendsTransferredIdentityAndCommitmentStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: SourceWaitingForTargetConnectionState + let receivedMessage: SourceWaitForTargetConnectionMessage + + init?(startState: SourceWaitingForTargetConnectionState, receivedMessage: SourceWaitForTargetConnectionMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + do { + + let sourceConnectionId = startState.sourceConnectionId + + switch receivedMessage.result { + + case .requestFailed: + + throw ObvError.serverRequestFailed + + case .requestSucceeded(targetConnectionId: let targetConnectionId, payload: let payload): + + // Decode the payload to get the target ephemeral identity + + let targetEphemeralIdentity: ObvCryptoIdentity + do { + guard let obvEncoded = ObvEncoded(withRawData: payload), + let identity = ObvCryptoIdentity(obvEncoded) else { + throw ObvError.decodingFailed + } + targetEphemeralIdentity = identity + } + + // Generate a seed for the SAS and commit on it + + let seedSourceForSas = prng.genSeed() + let commitmentScheme = ObvCryptoSuite.sharedInstance.commitmentScheme() + let (commitment, decommitment) = commitmentScheme.commit( + onTag: ownedIdentity.getIdentity(), + andValue: seedSourceForSas.raw, + with: prng) + + // Compute the encrypted payload, containing our sourceConnectionIdentifier, the identity to transfer, and the commitment + + let payload: EncryptedData + do { + let cleartextPayload: Data = [ + sourceConnectionId.obvEncode(), + ownedIdentity.obvEncode(), + commitment.obvEncode(), + ].obvEncode().rawData + payload = PublicKeyEncryption.encrypt(cleartextPayload, for: targetEphemeralIdentity, randomizedWith: prng) + } + + // Send the encrypted payload + + do { + let type = ObvChannelServerQueryMessageToSend.QueryType.transferRelay(protocolInstanceUID: protocolInstanceUid, connectionIdentifier: targetConnectionId, payload: payload.raw, thenCloseWebSocket: false) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = SourceSendCommitmentMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + return SourceWaitingForTargetSeedState(targetConnectionId: targetConnectionId, targetEphemeralIdentity: targetEphemeralIdentity, seedSourceForSas: seedSourceForSas, decommitment: decommitment) + + } + + } catch { + + assertionFailure() + postOwnedIdentityTransferProtocolNotification(withError: error) + return startState + + } + + } + + + /// Called by the step when things got really wrong. This notification will be catched by the protocol starter delegate that will properly abort this protocol and notify the app. + private func postOwnedIdentityTransferProtocolNotification(withError: Error) { + let notificationDelegate = self.notificationDelegate + let ownedCryptoIdentity = self.ownedIdentity + let protocolInstanceUID = self.protocolInstanceUid + try? obvContext.addContextDidSaveCompletionHandler { error in + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init( + ownedCryptoIdentity: ownedCryptoIdentity, + protocolInstanceUID: protocolInstanceUID, + error: withError))) + } + } + + + } + + + // MARK: - SourceSendsDecommitmentAndShowsSasInputStep + + final class SourceSendsDecommitmentAndShowsSasInputStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: SourceWaitingForTargetSeedState + let receivedMessage: SourceSendCommitmentMessage + + init?(startState: SourceWaitingForTargetSeedState, receivedMessage: SourceSendCommitmentMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + do { + + let targetConnectionId = startState.targetConnectionId + let targetEphemeralIdentity = startState.targetEphemeralIdentity + let seedSourceForSas = startState.seedSourceForSas + let decommitment = startState.decommitment + + switch receivedMessage.result { + + case .requestFailed: + + throw ObvError.serverRequestFailed + + case .requestSucceeded(let payload): + + // Decrypt the payload + + let cleartextPayload: Data + do { + let encryptedPayload = EncryptedData(data: payload) + guard let _cleartextPayload = try? identityDelegate.decryptProtocolCiphertext(encryptedPayload, forOwnedCryptoId: ownedIdentity, within: obvContext) else { + throw ObvError.decryptionFailed + } + cleartextPayload = _cleartextPayload + } + + // Decode the cleartext payload to get the seedTargetForSas and the target device name + + let targetDeviceName: String + let seedTargetForSas: Seed + do { + guard let encoded = ObvEncoded(withRawData: cleartextPayload), + let dict = [ObvEncoded](encoded), + dict.count == 2 else { + throw ObvError.decodingFailed + } + targetDeviceName = try dict[0].obvDecode() + seedTargetForSas = try dict[1].obvDecode() + } + + // Send the decommitment to the target device + + do { + let payload = PublicKeyEncryption.encrypt(decommitment, for: targetEphemeralIdentity, randomizedWith: prng) + let type = ObvChannelServerQueryMessageToSend.QueryType.transferRelay(protocolInstanceUID: protocolInstanceUid, connectionIdentifier: targetConnectionId, payload: payload.raw, thenCloseWebSocket: false) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = SourceDecommitmentMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + // Compute the complete SAS + + let fullSas: ObvOwnedIdentityTransferSas + do { + let Sas = try SAS.compute(seedAlice: seedSourceForSas, seedBob: seedTargetForSas, identityBob: targetEphemeralIdentity, numberOfDigits: ObvConstants.defaultNumberOfDigitsForSAS * 2) + fullSas = try .init(fullSas: Sas) + } + + // Send the SAS to the UI so that it can wait and check for the SAS user input + + do { + let notificationDelegate = self.notificationDelegate + let protocolInstanceUid = self.protocolInstanceUid + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + notificationDelegate.postOwnedIdentityTransferProtocolNotification( + .waitingForSASOnSourceDevice(payload: .init(protocolInstanceUID: protocolInstanceUid, + sasExpectedOnInput: fullSas, + targetDeviceName: targetDeviceName + ))) + } + } + + // Return the new state + + return SourceWaitingForSASInputState(targetConnectionId: targetConnectionId, targetEphemeralIdentity: targetEphemeralIdentity, fullSas: fullSas) + + } + + } catch { + + assertionFailure() + postOwnedIdentityTransferProtocolNotification(withError: error) + return startState + + } + + } + + + /// Called by the step when things got really wrong. This notification will be catched by the protocol starter delegate that will properly abort this protocol and notify the app. + private func postOwnedIdentityTransferProtocolNotification(withError: Error) { + let notificationDelegate = self.notificationDelegate + let ownedCryptoIdentity = self.ownedIdentity + let protocolInstanceUID = self.protocolInstanceUid + try? obvContext.addContextDidSaveCompletionHandler { error in + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init( + ownedCryptoIdentity: ownedCryptoIdentity, + protocolInstanceUID: protocolInstanceUID, + error: withError))) + } + } + + } + + + // MARK: - SourceCheckSasInputAndSendSnapshotStep + + final class SourceCheckSasInputAndSendSnapshotStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: SourceWaitingForSASInputState + let receivedMessage: SourceSASInputMessage + + init?(startState: SourceWaitingForSASInputState, receivedMessage: SourceSASInputMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + do { + + let targetConnectionId = startState.targetConnectionId + let targetEphemeralIdentity = startState.targetEphemeralIdentity + let fullSas = startState.fullSas + + let enteredSAS = receivedMessage.enteredSAS + let deviceUIDToKeepActive = receivedMessage.deviceUIDToKeepActive + + // Make sure the SAS entered by the user is correct (it should work as this was tested in the UI already) + + guard enteredSAS == fullSas else { + throw ObvError.incorrectSAS + } + + // The SAS is correct, we can send the snapshot + + // Compute the cleartext containing the snapshot and, optionally, the UID of the device to keep active (nil means "do nothing", i.e., the target device will remain active) + + let syncSnapshotAsObvDict = try syncSnapshotDelegate.getSyncSnapshotNodeAsObvDictionary(for: ObvCryptoId(cryptoIdentity: ownedIdentity)) + let cleartext: Data + if let deviceUIDToKeepActive { + cleartext = [ + syncSnapshotAsObvDict.obvEncode(), + deviceUIDToKeepActive.obvEncode(), + ].obvEncode().rawData + } else { + cleartext = [ + syncSnapshotAsObvDict.obvEncode(), + ].obvEncode().rawData + } + + // Encrypt using the target device ephemeral identity + + let ciphertext = PublicKeyEncryption.encrypt(cleartext, for: targetEphemeralIdentity, randomizedWith: prng) + + // Post the message + + do { + let type = ObvChannelServerQueryMessageToSend.QueryType.transferRelay(protocolInstanceUID: protocolInstanceUid, connectionIdentifier: targetConnectionId, payload: ciphertext.raw, thenCloseWebSocket: true) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = SourceSnapshotMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + return FinalState() + + } catch { + + assertionFailure() + postOwnedIdentityTransferProtocolNotification(withError: error) + return startState + + } + + } + + /// Called by the step when things got really wrong. This notification will be catched by the protocol starter delegate that will properly abort this protocol and notify the app. + private func postOwnedIdentityTransferProtocolNotification(withError: Error) { + let notificationDelegate = self.notificationDelegate + let ownedCryptoIdentity = self.ownedIdentity + let protocolInstanceUID = self.protocolInstanceUid + try? obvContext.addContextDidSaveCompletionHandler { error in + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init( + ownedCryptoIdentity: ownedCryptoIdentity, + protocolInstanceUID: protocolInstanceUID, + error: withError))) + } + } + + + } + + + // MARK: - InitiateTransferOnTargetDeviceStep + + final class InitiateTransferOnTargetDeviceStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: InitiateTransferOnTargetDeviceMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: OwnedIdentityTransferProtocol.InitiateTransferOnTargetDeviceMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + do { + + let currentDeviceName = receivedMessage.currentDeviceName + let transferSessionNumber = receivedMessage.transferSessionNumber + let encryptionPrivateKey = receivedMessage.encryptionPrivateKey + let macKey = receivedMessage.macKey + + // Send the ephemeral owned identity to the source (note that the current owned identity is an ephemeral identity, generated to execute this protocol step) + + do { + let payload = ownedIdentity.obvEncode().rawData // This is an ephemeral identity generated for this protocol only + let type = ObvChannelServerQueryMessageToSend.QueryType.targetSendEphemeralIdentity(protocolInstanceUID: protocolInstanceUid, transferSessionNumber: transferSessionNumber, payload: payload) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = TargetSendEphemeralIdentityMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + // Return the new state + + return TargetWaitingForTransferredIdentityState(currentDeviceName: currentDeviceName, encryptionPrivateKey: encryptionPrivateKey, macKey: macKey) + + } catch { + + assertionFailure() + postOwnedIdentityTransferProtocolNotification(withError: error) + return startState + + } + } + + + /// Called by the step when things got really wrong. This notification will be catched by the protocol starter delegate that will properly abort this protocol and notify the app. + private func postOwnedIdentityTransferProtocolNotification(withError: Error) { + let notificationDelegate = self.notificationDelegate + let ownedCryptoIdentity = self.ownedIdentity + let protocolInstanceUID = self.protocolInstanceUid + try? obvContext.addContextDidSaveCompletionHandler { error in + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init( + ownedCryptoIdentity: ownedCryptoIdentity, + protocolInstanceUID: protocolInstanceUID, + error: withError))) + } + } + + + } + + + // MARK: - TargetSendsSeedStep + + final class TargetSendsSeedStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: TargetWaitingForTransferredIdentityState + let receivedMessage: TargetSendEphemeralIdentityMessage + + init?(startState: TargetWaitingForTransferredIdentityState, receivedMessage: TargetSendEphemeralIdentityMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + do { + + let currentDeviceName = startState.currentDeviceName + let encryptionPrivateKey = startState.encryptionPrivateKey + let macKey = startState.macKey + let result = receivedMessage.result + + switch result { + + case .requestDidFail: + + throw ObvError.serverRequestFailed + + case .incorrectTransferSessionNumber: + + // On save, notify that the transfer session number entered by the user is incorrect + + do { + let notificationDelegate = self.notificationDelegate + let protocolInstanceUid = self.protocolInstanceUid + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.userEnteredIncorrectTransferSessionNumber(payload: .init(protocolInstanceUID: protocolInstanceUid))) + } + } + + // Return the start state + + return startState + + case .requestSucceeded(otherConnectionId: let otherConnectionId, payload: let payload): + + // Decrypt the payload + + let cleartextPayload: Data + do { + let encryptedPayload = EncryptedData(data: payload) + guard let _cleartextPayload = PublicKeyEncryption.decrypt(encryptedPayload, using: encryptionPrivateKey) else { + throw ObvError.decryptionFailed + } + cleartextPayload = _cleartextPayload + } + + // Decode the payload + + let decryptedOtherConnectionIdentifier: String + let transferredIdentity: ObvCryptoIdentity + let commitment: Data + do { + guard let encoded = ObvEncoded(withRawData: cleartextPayload), + let encodedPayloadValues = [ObvEncoded](encoded), + encodedPayloadValues.count == 3, + let _decryptedOtherConnectionIdentifier: String = try? encodedPayloadValues[0].obvDecode(), + let _transferredIdentity: ObvCryptoIdentity = try? encodedPayloadValues[1].obvDecode(), + let _commitment: Data = try? encodedPayloadValues[2].obvDecode() else { + throw ObvError.decodingFailed + } + decryptedOtherConnectionIdentifier = _decryptedOtherConnectionIdentifier + transferredIdentity = _transferredIdentity + commitment = _commitment + } + + // Make sure the connection identifier match + + guard otherConnectionId == decryptedOtherConnectionIdentifier else { + throw ObvError.connectionIdsDoNotMatch + } + + // Makre sure that the owned identity we are about to transfer from the source device to this target device is not one that we have already + + guard try !identityDelegate.isOwned(transferredIdentity, within: obvContext) else { + throw ObvError.tryingToTransferAnOwnedIdentityThatAlreadyExistsOnTargetDevice + } + + // Compute the target part of the SAS + + let seedTargetForSas = try identityDelegate.getDeterministicSeed( + diversifiedUsing: commitment, + secretMACKey: macKey, + forProtocol: .ownedIdentityTransfer) + + // Encrypt the payload to be sent to the source device + + let payload: Data + do { + let dataToSend: ObvEncoded = [ + currentDeviceName.obvEncode(), + seedTargetForSas.obvEncode(), + ].obvEncode() + let encryptedPayload = PublicKeyEncryption.encrypt(dataToSend.rawData, using: transferredIdentity.publicKeyForPublicKeyEncryption, and: prng) + payload = encryptedPayload.raw + } + + // Send the seedTargetForSas to the source device + + do { + let type = ObvChannelServerQueryMessageToSend.QueryType.transferRelay(protocolInstanceUID: protocolInstanceUid, connectionIdentifier: otherConnectionId, payload: payload, thenCloseWebSocket: false) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = TargetSeedMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + // Return the new state + + return TargetWaitingForDecommitmentState( + currentDeviceName: currentDeviceName, + encryptionPrivateKey: encryptionPrivateKey, + otherConnectionIdentifier: otherConnectionId, + transferredIdentity: transferredIdentity, + commitment: commitment, + seedTargetForSas: seedTargetForSas) + + } + + } catch { + + assertionFailure() + postOwnedIdentityTransferProtocolNotification(withError: error) + return startState + + } + + } + + + /// Called by the step when things got really wrong. This notification will be catched by the protocol starter delegate that will properly abort this protocol and notify the app. + private func postOwnedIdentityTransferProtocolNotification(withError: Error) { + let notificationDelegate = self.notificationDelegate + let ownedCryptoIdentity = self.ownedIdentity + let protocolInstanceUID = self.protocolInstanceUid + try? obvContext.addContextDidSaveCompletionHandler { error in + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init( + ownedCryptoIdentity: ownedCryptoIdentity, + protocolInstanceUID: protocolInstanceUID, + error: withError))) + } + } + + } + + + + // MARK: - TargetShowsSasStep + + final class TargetShowsSasStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: TargetWaitingForDecommitmentState + let receivedMessage: TargetSeedMessage + + init?(startState: TargetWaitingForDecommitmentState, receivedMessage: TargetSeedMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + do { + + let currentDeviceName = startState.currentDeviceName + let encryptionPrivateKey = startState.encryptionPrivateKey + let otherConnectionIdentifier = startState.otherConnectionIdentifier + let transferredIdentity = startState.transferredIdentity + let commitment = startState.commitment + let seedTargetForSas = startState.seedTargetForSas + + let result = receivedMessage.result + + switch result { + + case .requestFailed: + + throw ObvError.serverRequestFailed + + case .requestSucceeded(payload: let payload): + + // Decrypt the payload to get the decommitment + + let decommitment: Data + do { + let encryptedPayload = EncryptedData(data: payload) + guard let _cleartextPayload = PublicKeyEncryption.decrypt(encryptedPayload, using: encryptionPrivateKey) else { + throw ObvError.decryptionFailed + } + decommitment = _cleartextPayload + } + + // Open the commitment to recover the full SAS + + let fullSas: ObvOwnedIdentityTransferSas + do { + let commitmentScheme = ObvCryptoSuite.sharedInstance.commitmentScheme() + guard let rawContactSeedForSAS = commitmentScheme.open(commitment: commitment, onTag: transferredIdentity.getIdentity(), usingDecommitToken: decommitment) else { + throw ObvError.couldNotOpenCommitment + } + guard let seedSourceForSas = Seed(with: rawContactSeedForSAS) else { + throw ObvError.couldNotComputeSeed + } + let Sas = try SAS.compute(seedAlice: seedSourceForSas, seedBob: seedTargetForSas, identityBob: ownedIdentity, numberOfDigits: ObvConstants.defaultNumberOfDigitsForSAS * 2) + fullSas = try .init(fullSas: Sas) + } + + // On save, notify that the SAS is now available on this target device + + do { + let notificationDelegate = self.notificationDelegate + let protocolInstanceUid = self.protocolInstanceUid + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.sasIsAvailable(payload: .init( + protocolInstanceUID: protocolInstanceUid, + sas: fullSas))) + } + } + + // Send a server query allowing to wait for the ObvSyncSnapshot to restore + + do { + let type = ObvChannelServerQueryMessageToSend.QueryType.transferWait(protocolInstanceUID: protocolInstanceUid, connectionIdentifier: otherConnectionIdentifier) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = TargetWaitForSnapshotMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + return TargetWaitingForSnapshotState( + currentDeviceName: currentDeviceName, + encryptionPrivateKey: encryptionPrivateKey, + transferredIdentity: transferredIdentity) + + } + + } catch { + + assertionFailure() + postOwnedIdentityTransferProtocolNotification(withError: error) + return startState + + } + + } + + + /// Called by the step when things got really wrong. This notification will be catched by the protocol starter delegate that will properly abort this protocol and notify the app. + private func postOwnedIdentityTransferProtocolNotification(withError: Error) { + let notificationDelegate = self.notificationDelegate + let ownedCryptoIdentity = self.ownedIdentity + let protocolInstanceUID = self.protocolInstanceUid + try? obvContext.addContextDidSaveCompletionHandler { error in + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init( + ownedCryptoIdentity: ownedCryptoIdentity, + protocolInstanceUID: protocolInstanceUID, + error: withError))) + } + } + + } + + + // MARK: - TargetProcessesSnapshotStep + + final class TargetProcessesSnapshotStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: TargetWaitingForSnapshotState + let receivedMessage: TargetWaitForSnapshotMessage + + init?(startState: TargetWaitingForSnapshotState, receivedMessage: TargetWaitForSnapshotMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + do { + + let currentDeviceName = startState.currentDeviceName + let encryptionPrivateKey = startState.encryptionPrivateKey + let transferredIdentity = startState.transferredIdentity + + let result = receivedMessage.result + + switch result { + + case .requestFailed: + + throw ObvError.serverRequestFailed + + case .requestSucceeded(let payload): + + // Decrypt the payload + + let encryptedPayload = EncryptedData(data: payload) + guard let cleartextPayload = PublicKeyEncryption.decrypt(encryptedPayload, using: encryptionPrivateKey) else { + throw ObvError.decryptionFailed + } + guard let encoded = ObvEncoded(withRawData: cleartextPayload), + let listOfEncoded = [ObvEncoded](encoded), + listOfEncoded.count >= 1, + let obvDictionary = ObvDictionary(listOfEncoded[0]) + else { + throw ObvError.couldNotDecodeSyncSnapshot + } + + // Get the sync snapshot + + let syncSnapshot = try syncSnapshotDelegate.decodeSyncSnapshot(from: obvDictionary) + + // Notify that the sync snapshot was is received and is about to be processed + + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.processingReceivedSnapshotOntargetDevice(payload: .init(protocolInstanceUID: protocolInstanceUid))) + + // Restore the identity part of the snapshot with the identity manager + + try identityDelegate.restoreObvSyncSnapshotNode(syncSnapshot.identityNode, customDeviceName: currentDeviceName, within: obvContext) + + // At this point, we don't want the protocol to fail if something goes wrong, + // We juste want the user to know about it. + // So we create a set of errors that will post back to the user if not empty + + var nonDefinitiveErrors = [Error]() + + // Download all missing user data (typically, photos) + + do { + try downloadAllUserData(within: obvContext) + } catch { + assertionFailure() + nonDefinitiveErrors.append(error) // Continue anyway + } + + // Re-download all groups V2 + + do { + try requestReDownloadOfAllNonKeycloakGroupV2(ownedCryptoIdentity: transferredIdentity, within: obvContext) + } catch { + assertionFailure() + nonDefinitiveErrors.append(error) // Continue anyway + } + + // Start an owned device discovery protocol + + do { + try startOwnedDeviceDiscoveryProtocol(for: transferredIdentity, within: obvContext) + } catch { + assertionFailure() + nonDefinitiveErrors.append(error) // Continue anyway + } + + // Start contact discovery protocol for all contacts + + do { + try startDeviceDiscoveryForAllContactsOfOwnedIdentity(transferredIdentity, within: obvContext) + } catch { + assertionFailure() + nonDefinitiveErrors.append(error) // Continue anyway + } + + // Inform the network fetch delegate about the new owned identity. + // This will open a websocket for her, and update the well known cache. + // We need to perform this after the context is saved, as the network needs to access the + // identity manager's database + + do { + let allOwnedIdentities = try identityDelegate.getOwnedIdentities(within: obvContext) + let flowId = obvContext.flowId + let networkFetchDelegate = self.networkFetchDelegate + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + networkFetchDelegate.updatedListOfOwnedIdentites(ownedIdentities: allOwnedIdentities, flowId: flowId) + } + } catch { + assertionFailure() + nonDefinitiveErrors.append(error) // Continue anyway + } + + // Get the device to keep active + + let deviceUidToKeepActive: UID? + if listOfEncoded.count >= 2 { + deviceUidToKeepActive = try listOfEncoded[1].obvDecode() + } else { + deviceUidToKeepActive = nil + } + + // At this point, we restored the identity (engine) snapshot. + // On context save, we need to: + // - sync the engine database with the app database + // - restore the app snapshot + + let localSyncSnapshotDelegate = syncSnapshotDelegate + let transferredOwnedCryptoId = ObvCryptoId(cryptoIdentity: transferredIdentity) + let notificationDelegate = self.notificationDelegate + let protocolInstanceUid = self.protocolInstanceUid + let ownedIdentity = self.ownedIdentity + let nonDefinitiveErrorsFromEngine = nonDefinitiveErrors + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init(ownedCryptoIdentity: ownedIdentity, protocolInstanceUID: protocolInstanceUid, error: error!))) + return + } + Task { + + // We will collect errors the occur during the restore at the app level. + // We start with an array made of the non-definitive errors that occured at the engine level. + // If not empty, one of these errors will be sent back to the app. + // At some point, it might be a good idea to send them all back to the app. + var errors = nonDefinitiveErrorsFromEngine + + do { + try await localSyncSnapshotDelegate.syncEngineDatabaseThenUpdateAppDatabase(using: syncSnapshot.appNode) + } catch { + errors.append(error) + } + + do { + if let deviceUidToKeepActive { + try await localSyncSnapshotDelegate.requestServerToKeepDeviceActive(ownedCryptoId: transferredOwnedCryptoId, deviceUidToKeepActive: deviceUidToKeepActive) + } + } catch { + errors.append(error) + } + + assert(errors.isEmpty) + + // Notify that the transfer is finished and successful on this target device + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.successfulTransferOnTargetDevice(payload: .init(protocolInstanceUID: protocolInstanceUid, transferredOwnedCryptoId: transferredOwnedCryptoId, postTransferError: errors.first))) + + } + } + + + // Close the websocket connection + + do { + let type = ObvChannelServerQueryMessageToSend.QueryType.closeWebsocketConnection(protocolInstanceUID: protocolInstanceUid) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = CloseWebsocketConnectionMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + // Return the final state + + return FinalState() + + } + + } catch { + + assertionFailure() + postOwnedIdentityTransferProtocolNotification(withError: error) + return startState + + } + + } + + + /// Called by the step when things got really wrong. This notification will be catched by the protocol starter delegate that will properly abort this protocol and notify the app. + private func postOwnedIdentityTransferProtocolNotification(withError: Error) { + let notificationDelegate = self.notificationDelegate + let ownedCryptoIdentity = self.ownedIdentity + let protocolInstanceUID = self.protocolInstanceUid + try? obvContext.addContextDidSaveCompletionHandler { error in + notificationDelegate.postOwnedIdentityTransferProtocolNotification(.ownedIdentityTransferProtocolFailed(payload: .init( + ownedCryptoIdentity: ownedCryptoIdentity, + protocolInstanceUID: protocolInstanceUID, + error: withError))) + } + } + + + // MARK: Downloading user data + + private func downloadAllUserData(within obvContext: ObvContext) throws { + + var errorToThrowInTheEnd: Error? + + do { + let items = try identityDelegate.getAllOwnedIdentityWithMissingPhotoUrl(within: obvContext) + for (ownedIdentity, details) in items { + do { + try startDownloadIdentityPhotoProtocolWithinTransaction(within: obvContext, ownedIdentity: ownedIdentity, contactIdentity: ownedIdentity, contactIdentityDetailsElements: details) + } catch { + errorToThrowInTheEnd = error + } + } + } + + do { + let items = try identityDelegate.getAllContactsWithMissingPhotoUrl(within: obvContext) + for (ownedIdentity, contactIdentity, details) in items { + do { + try startDownloadIdentityPhotoProtocolWithinTransaction(within: obvContext, ownedIdentity: ownedIdentity, contactIdentity: contactIdentity, contactIdentityDetailsElements: details) + } catch { + errorToThrowInTheEnd = error + } + } + } + + do { + let items = try identityDelegate.getAllGroupsWithMissingPhotoUrl(within: obvContext) + for (ownedIdentity, groupInformation) in items { + do { + try startDownloadGroupPhotoProtocolWithinTransaction(within: obvContext, ownedIdentity: ownedIdentity, groupInformation: groupInformation) + } catch { + errorToThrowInTheEnd = error + } + } + } + + if let errorToThrowInTheEnd { + assertionFailure() + throw errorToThrowInTheEnd + } + + } + + + private func startDownloadIdentityPhotoProtocolWithinTransaction(within obvContext: ObvContext, ownedIdentity: ObvCryptoIdentity, contactIdentity: ObvCryptoIdentity, contactIdentityDetailsElements: IdentityDetailsElements) throws { + let message = try protocolStarterDelegate.getInitialMessageForDownloadIdentityPhotoChildProtocol( + ownedIdentity: ownedIdentity, + contactIdentity: contactIdentity, + contactIdentityDetailsElements: contactIdentityDetailsElements) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + + private func startDownloadGroupPhotoProtocolWithinTransaction(within obvContext: ObvContext, ownedIdentity: ObvCryptoIdentity, groupInformation: GroupInformation) throws { + let message = try protocolStarterDelegate.getInitialMessageForDownloadGroupPhotoChildProtocol( + ownedIdentity: ownedIdentity, + groupInformation: groupInformation) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + + // MARK: Re-download of Groups V2 + + /// After a successful restore within the engine, we need to re-download all groups v2 + private func requestReDownloadOfAllNonKeycloakGroupV2(ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + + var errorToThrowInTheEnd: Error? + + let allNonKeycloakGroups = try identityDelegate.getAllObvGroupV2(of: ownedCryptoIdentity, within: obvContext) + .filter({ !$0.keycloakManaged }) + for group in allNonKeycloakGroups { + do { + try requestReDownloadOfGroup( + ownedCryptoIdentity: ownedCryptoIdentity, + group: group, + within: obvContext) + } catch { + errorToThrowInTheEnd = error + } + } + + if let errorToThrowInTheEnd { + assertionFailure() + throw errorToThrowInTheEnd + } + + } + + + private func requestReDownloadOfGroup(ownedCryptoIdentity: ObvCryptoIdentity, group: ObvGroupV2, within obvContext: ObvContext) throws { + guard let groupIdentifier = GroupV2.Identifier(appGroupIdentifier: group.appGroupIdentifier) else { + assertionFailure(); return + } + let message = try protocolStarterDelegate.getInitiateGroupReDownloadMessageForGroupV2Protocol( + ownedIdentity: ownedCryptoIdentity, + groupIdentifier: groupIdentifier, + flowId: obvContext.flowId) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + + // MARK: Start Owned device discovery protocol + + private func startOwnedDeviceDiscoveryProtocol(for ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + + let message = try protocolStarterDelegate.getInitiateOwnedDeviceDiscoveryMessage(ownedCryptoIdentity: ownedCryptoIdentity) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + + } + + + // MARK: Start contact discovery protocol for all contacts + + private func startDeviceDiscoveryForAllContactsOfOwnedIdentity(_ ownedCryptoIdentity: ObvCryptoIdentity, within obvContext: ObvContext) throws { + + var errorToThrowInTheEnd: Error? + + let contacts = try identityDelegate.getContactsOfOwnedIdentity(ownedCryptoIdentity, within: obvContext) + for contact in contacts { + do { + let message = try protocolStarterDelegate.getInitialMessageForContactDeviceDiscoveryProtocol( + ownedIdentity: ownedCryptoIdentity, + contactIdentity: contact) + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } catch { + errorToThrowInTheEnd = error + } + } + + if let errorToThrowInTheEnd { + assertionFailure() + throw errorToThrowInTheEnd + } + + } + + } + + + // MARK: - AbortProtocolStep + + class AbortProtocolStep: ProtocolStep { + + private let startState: StartStateType + private let receivedMessage: AbortProtocolMessage + + enum StartStateType { + case sourceWaitingForSessionNumberState(startState: SourceWaitingForSessionNumberState) + case sourceWaitingForTargetConnectionState(startState: SourceWaitingForTargetConnectionState) + case sourceWaitingForTargetSeedState(startState: SourceWaitingForTargetSeedState) + case targetWaitingForTransferredIdentityState(startState: TargetWaitingForTransferredIdentityState) + case targetWaitingForDecommitmentState(startState: TargetWaitingForDecommitmentState) + case sourceWaitingForSASInputState(startState: SourceWaitingForSASInputState) + case targetWaitingForSnapshotState(startState: TargetWaitingForSnapshotState) + } + + init?(startState: StartStateType, receivedMessage: AbortProtocolMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + // Close the websocket connection + + do { + let type = ObvChannelServerQueryMessageToSend.QueryType.closeWebsocketConnection(protocolInstanceUID: protocolInstanceUid) + let core = getCoreMessage(for: .ServerQuery(ownedIdentity: ownedIdentity)) + let concrete = CloseWebsocketConnectionMessage(coreProtocolMessage: core) + guard let message = concrete.generateObvChannelServerQueryMessageToSend(serverQueryType: type) else { + assertionFailure() + throw ObvError.couldNotGenerateObvChannelServerQueryMessageToSend + } + _ = try channelDelegate.postChannelMessage(message, randomizedWith: prng, within: obvContext) + } + + return FinalState() + + } + + } + + + // MARK: AbortProtocolStep from SourceWaitingForSessionNumberState + + final class AbortProtocolStepFromSourceWaitingForSessionNumberState: AbortProtocolStep, TypedConcreteProtocolStep { + + let startState: SourceWaitingForSessionNumberState + let receivedMessage: AbortProtocolMessage + + init?(startState: SourceWaitingForSessionNumberState, receivedMessage: AbortProtocolMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .sourceWaitingForSessionNumberState(startState: startState), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: AbortProtocolStep from SourceWaitingForTargetConnectionState + + final class AbortProtocolStepFromSourceWaitingForTargetConnectionState: AbortProtocolStep, TypedConcreteProtocolStep { + + let startState: SourceWaitingForTargetConnectionState + let receivedMessage: AbortProtocolMessage + + init?(startState: SourceWaitingForTargetConnectionState, receivedMessage: AbortProtocolMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .sourceWaitingForTargetConnectionState(startState: startState), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: AbortProtocolStep from SourceWaitingForTargetSeedState + + final class AbortProtocolStepFromSourceWaitingForTargetSeedState: AbortProtocolStep, TypedConcreteProtocolStep { + + let startState: SourceWaitingForTargetSeedState + let receivedMessage: AbortProtocolMessage + + init?(startState: SourceWaitingForTargetSeedState, receivedMessage: AbortProtocolMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .sourceWaitingForTargetSeedState(startState: startState), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: AbortProtocolStep from TargetWaitingForTransferredIdentityState + + final class AbortProtocolStepFromTargetWaitingForTransferredIdentityState: AbortProtocolStep, TypedConcreteProtocolStep { + + let startState: TargetWaitingForTransferredIdentityState + let receivedMessage: AbortProtocolMessage + + init?(startState: TargetWaitingForTransferredIdentityState, receivedMessage: AbortProtocolMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .targetWaitingForTransferredIdentityState(startState: startState), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: AbortProtocolStep from TargetWaitingForDecommitmentState + + final class AbortProtocolStepFromTargetWaitingForDecommitmentState: AbortProtocolStep, TypedConcreteProtocolStep { + + let startState: TargetWaitingForDecommitmentState + let receivedMessage: AbortProtocolMessage + + init?(startState: TargetWaitingForDecommitmentState, receivedMessage: AbortProtocolMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .targetWaitingForDecommitmentState(startState: startState), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: AbortProtocolStep from SourceWaitingForSASInputState + + final class AbortProtocolStepFromSourceWaitingForSASInputState: AbortProtocolStep, TypedConcreteProtocolStep { + + let startState: SourceWaitingForSASInputState + let receivedMessage: AbortProtocolMessage + + init?(startState: SourceWaitingForSASInputState, receivedMessage: AbortProtocolMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .sourceWaitingForSASInputState(startState: startState), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: AbortProtocolStep from TargetWaitingForSnapshotState + + final class AbortProtocolStepFromTargetWaitingForSnapshotState: AbortProtocolStep, TypedConcreteProtocolStep { + + let startState: TargetWaitingForSnapshotState + let receivedMessage: AbortProtocolMessage + + init?(startState: TargetWaitingForSnapshotState, receivedMessage: AbortProtocolMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + self.startState = startState + self.receivedMessage = receivedMessage + super.init(startState: .targetWaitingForSnapshotState(startState: startState), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + // The step execution is defined in the superclass + + } + + + // MARK: - Errors + + enum ObvError: Error { + case couldNotGenerateObvChannelServerQueryMessageToSend + case couldNotDecodeSyncSnapshot + case decryptionFailed + case decodingFailed + case incorrectSAS + case serverRequestFailed + case connectionIdsDoNotMatch + case tryingToTransferAnOwnedIdentityThatAlreadyExistsOnTargetDevice + case couldNotOpenCommitment + case couldNotComputeSeed + } +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocol.swift new file mode 100644 index 00000000..b14f2c80 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocol.swift @@ -0,0 +1,87 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto +import ObvTypes +import ObvEncoder +import OlvidUtils + + +public struct SynchronizationProtocol: ConcreteCryptoProtocol { + + static let logCategory = "SynchronizationProtocol" + + static let id = CryptoProtocolId.synchronization + + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.final] + + let ownedIdentity: ObvCryptoIdentity + let currentState: ConcreteProtocolState + + let delegateManager: ObvProtocolDelegateManager + let obvContext: ObvContext + let prng: PRNGService + let instanceUid: UID + + init(instanceUid: UID, currentState: ConcreteProtocolState, ownedCryptoIdentity: ObvCryptoIdentity, delegateManager: ObvProtocolDelegateManager, prng: PRNGService, within obvContext: ObvContext) { + self.currentState = currentState + self.ownedIdentity = ownedCryptoIdentity + self.delegateManager = delegateManager + self.obvContext = obvContext + self.prng = prng + self.instanceUid = instanceUid + } + + static func stateId(fromRawValue rawValue: Int) -> ConcreteProtocolStateId? { + return StateId(rawValue: rawValue) + } + + static func messageId(fromRawValue rawValue: Int) -> ConcreteProtocolMessageId? { + return MessageId(rawValue: rawValue) + } + + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } + + + static func computeOngoingProtocolInstanceUid(ownedCryptoId: ObvCryptoIdentity, currentDeviceUid: UID, otherOwnedDeviceUid: UID) throws -> UID { + let ownedIdentity = ownedCryptoId.getIdentity() + let rawSeed: Data + if currentDeviceUid < otherOwnedDeviceUid { + rawSeed = ownedIdentity + currentDeviceUid.raw + otherOwnedDeviceUid.raw + } else { + rawSeed = ownedIdentity + otherOwnedDeviceUid.raw + currentDeviceUid.raw + } + guard let seed = Seed(with: rawSeed) else { + assertionFailure() + throw ObvError.rawSeedIsTooSmal + } + let prng = ObvCryptoSuite.sharedInstance.concretePRNG().init(with: seed) + return UID.gen(with: prng) + } + + + enum ObvError: Error { + case rawSeedIsTooSmal + } + +} + diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocolMessages.swift new file mode 100644 index 00000000..0d79f2a8 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocolMessages.swift @@ -0,0 +1,264 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvCrypto +import ObvMetaManager +import ObvTypes + +// MARK: - Protocol Messages + +extension SynchronizationProtocol { + + enum MessageId: Int, ConcreteProtocolMessageId { + + // For Atoms + case initiateSyncAtom = 0 + case syncAtom = 1 + case syncAtomDialog = 100 + // For Snapshots +// case initiateSyncSnapshot = 2 +// case triggerSyncSnapshot = 3 +// case transferSyncSnapshot = 4 +// case atomProcessed = 5 + + var concreteProtocolMessageType: ConcreteProtocolMessage.Type { + switch self { + + case .initiateSyncAtom : return InitiateSyncAtomMessage.self + case .syncAtom: return SyncAtomMessage.self + case .syncAtomDialog: return SyncAtomDialogMessage.self + +// case .initiateSyncSnapshot: return InitiateSyncSnapshotMessage.self +// case .triggerSyncSnapshot: return TriggerSyncSnapshotMessage.self +// case .transferSyncSnapshot: return TransferSyncSnapshotMessage.self +// case .atomProcessed: return AtomProcessedMessage.self + + } + } + + } + + + // MARK: - InitiateSyncAtomMessage + + struct InitiateSyncAtomMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.initiateSyncAtom + let coreProtocolMessage: CoreProtocolMessage + + let syncAtom: ObvSyncAtom + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage, syncAtom: ObvSyncAtom) { + self.coreProtocolMessage = coreProtocolMessage + self.syncAtom = syncAtom + } + + var encodedInputs: [ObvEncoded] { + return [syncAtom.obvEncode()] + } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + syncAtom = try message.encodedInputs.obvDecode() + } + + } + + + // MARK: - SyncAtomMessage + + struct SyncAtomMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.syncAtom + let coreProtocolMessage: CoreProtocolMessage + + let syncAtom: ObvSyncAtom + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage, syncAtom: ObvSyncAtom) { + self.coreProtocolMessage = coreProtocolMessage + self.syncAtom = syncAtom + } + + var encodedInputs: [ObvEncoded] { + return [syncAtom.obvEncode()] + } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + self.coreProtocolMessage = CoreProtocolMessage(with: message) + syncAtom = try message.encodedInputs.obvDecode() + } + + } + + + // MARK: - InitiateSyncSnapshotMessage + +// struct InitiateSyncSnapshotMessage: ConcreteProtocolMessage { +// +// let id: ConcreteProtocolMessageId = MessageId.initiateSyncSnapshot +// let coreProtocolMessage: CoreProtocolMessage +// +// let otherOwnedDeviceUID: UID +// +// // Init when sending this message +// +// init(coreProtocolMessage: CoreProtocolMessage, otherOwnedDeviceUID: UID) { +// self.coreProtocolMessage = coreProtocolMessage +// self.otherOwnedDeviceUID = otherOwnedDeviceUID +// } +// +// var encodedInputs: [ObvEncoded] { +// return [otherOwnedDeviceUID.obvEncode()] +// } +// +// // Init when receiving this message +// +// init(with message: ReceivedMessage) throws { +// self.coreProtocolMessage = CoreProtocolMessage(with: message) +// otherOwnedDeviceUID = try message.encodedInputs.obvDecode() +// } +// +// } + + + // MARK: - TriggerSyncSnapshotMessage + +// struct TriggerSyncSnapshotMessage: ConcreteProtocolMessage { +// +// let id: ConcreteProtocolMessageId = MessageId.triggerSyncSnapshot +// let coreProtocolMessage: CoreProtocolMessage +// +// let forceSendSnapshot: Bool +// +// // Init when sending this message +// +// init(coreProtocolMessage: CoreProtocolMessage, forceSendSnapshot: Bool) { +// self.coreProtocolMessage = coreProtocolMessage +// self.forceSendSnapshot = forceSendSnapshot +// } +// +// var encodedInputs: [ObvEncoded] { +// return [forceSendSnapshot.obvEncode()] +// } +// +// // Init when receiving this message +// +// init(with message: ReceivedMessage) throws { +// self.coreProtocolMessage = CoreProtocolMessage(with: message) +// forceSendSnapshot = try message.encodedInputs.obvDecode() +// } +// +// } + + + // MARK: - TransferSyncSnapshotMessage + +// struct TransferSyncSnapshotMessage: ConcreteProtocolMessage { +// +// let id: ConcreteProtocolMessageId = MessageId.transferSyncSnapshot +// let coreProtocolMessage: CoreProtocolMessage +// +// // Naming reflecting the understanding of the receiver of this message +// let remoteSyncSnapshotAndVersion: ObvSyncSnapshotAndVersion +// let localVersionKnownBySender: Int? +// +// // Init when sending this message +// +// init(coreProtocolMessage: CoreProtocolMessage, remoteSyncSnapshotAndVersion: ObvSyncSnapshotAndVersion, localVersionKnownBySender: Int?) { +// self.coreProtocolMessage = coreProtocolMessage +// self.remoteSyncSnapshotAndVersion = remoteSyncSnapshotAndVersion +// self.localVersionKnownBySender = localVersionKnownBySender +// } +// +// var encodedInputs: [ObvEncoded] { +// get throws { +// return [remoteSyncSnapshotAndVersion.version.obvEncode(), (localVersionKnownBySender ?? -1).obvEncode(), try remoteSyncSnapshotAndVersion.syncSnapshot.obvEncode()] +// } +// } +// +// // Init when receiving this message +// +// init(with message: ReceivedMessage) throws { +// self.coreProtocolMessage = CoreProtocolMessage(with: message) +// let (removeVersion, localVersion, remoteSnapshot): (Int, Int, ObvSyncSnapshot) = try message.encodedInputs.obvDecode() +// self.remoteSyncSnapshotAndVersion = ObvSyncSnapshotAndVersion(version: removeVersion, syncSnapshot: remoteSnapshot) +// self.localVersionKnownBySender = (localVersion == -1) ? nil : localVersion +// } +// +// } + + + // MARK: - AtomProcessedMessage + +// struct AtomProcessedMessage: ConcreteProtocolMessage { +// +// let id: ConcreteProtocolMessageId = MessageId.atomProcessed +// let coreProtocolMessage: CoreProtocolMessage +// +// // Init when sending this message +// +// init(coreProtocolMessage: CoreProtocolMessage) { +// self.coreProtocolMessage = coreProtocolMessage +// } +// +// var encodedInputs: [ObvEncoded] { [] } +// +// // Init when receiving this message +// +// init(with message: ReceivedMessage) throws { +// self.coreProtocolMessage = CoreProtocolMessage(with: message) +// } +// +// } + + + // MARK: - SyncAtomDialogMessage + + struct SyncAtomDialogMessage: ConcreteProtocolMessage { + + let id: ConcreteProtocolMessageId = MessageId.syncAtomDialog + let coreProtocolMessage: CoreProtocolMessage + + // Init when sending this message + + init(coreProtocolMessage: CoreProtocolMessage) { + self.coreProtocolMessage = coreProtocolMessage + } + + var encodedInputs: [ObvEncoded] { [] } + + // Init when receiving this message + + init(with message: ReceivedMessage) throws { + throw Self.makeError(message: "This message is only expected to be sent from the protocol manager to the engine, and never received by the protocol manager") + } + + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocolStates.swift new file mode 100644 index 00000000..0ec72fd7 --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocolStates.swift @@ -0,0 +1,116 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvTypes +import ObvCrypto +import ObvMetaManager + + +// MARK: - Protocol States + +extension SynchronizationProtocol { + + enum StateId: Int, ConcreteProtocolStateId { + + case initial = 0 + // case ongoingSyncSnapshot = 1 + case final = 100 + + var concreteProtocolStateType: ConcreteProtocolState.Type { + switch self { + case .initial : return ConcreteProtocolInitialState.self + // case .ongoingSyncSnapshot: return OngoingSyncSnapshotState.self + case .final : return FinalState.self + } + } + } + + + // MARK: - OngoingSyncState + +// struct OngoingSyncSnapshotState: TypeConcreteProtocolState { +// +// let id: ConcreteProtocolStateId = StateId.ongoingSyncSnapshot +// +// let otherOwnedDeviceUid: UID +// let localSnapshot: ObvSyncSnapshotAndVersion +// let remoteSnapshot: ObvSyncSnapshotAndVersion? +// let currentlyShowingDiff: Bool +// +// init(otherOwnedDeviceUid: UID, localSnapshot: ObvSyncSnapshotAndVersion, remoteSnapshot: ObvSyncSnapshotAndVersion?, currentlyShowingDiff: Bool) { +// self.otherOwnedDeviceUid = otherOwnedDeviceUid +// self.localSnapshot = localSnapshot +// self.remoteSnapshot = remoteSnapshot +// self.currentlyShowingDiff = currentlyShowingDiff +// } +// +// public func obvEncode() throws -> ObvEncoder.ObvEncoded { +// var arrayOfEncoded = [ +// otherOwnedDeviceUid.obvEncode(), +// try localSnapshot.obvEncode(), +// currentlyShowingDiff.obvEncode(), +// ] +// +// if let remoteSnapshot { +// arrayOfEncoded.append(try remoteSnapshot.obvEncode()) +// } +// +// return arrayOfEncoded.obvEncode() +// } +// +// +// init(_ obvEncoded: ObvEncoded) throws { +// guard let arrayOfEncoded = [ObvEncoded](obvEncoded) else { +// throw ObvError.couldNotDecode +// } +// switch arrayOfEncoded.count { +// case 3: +// (otherOwnedDeviceUid, localSnapshot, currentlyShowingDiff) = try obvEncoded.obvDecode() +// remoteSnapshot = nil +// case 4: +// (otherOwnedDeviceUid, localSnapshot, currentlyShowingDiff, remoteSnapshot) = try obvEncoded.obvDecode() +// default: +// throw ObvError.couldNotDecode +// } +// } +// +// enum ObvError: Error { +// case couldNotDecode +// } +// +// } + + + // MARK: - FinalState + + struct FinalState: TypeConcreteProtocolState { + + let id: ConcreteProtocolStateId = StateId.final + + init(_: ObvEncoded) {} + + init() {} + + func obvEncode() -> ObvEncoded { return 0.obvEncode() } + + } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocolSteps.swift new file mode 100644 index 00000000..64a0035f --- /dev/null +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/SynchronizationProtocol/SynchronizationProtocolSteps.swift @@ -0,0 +1,654 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +import Foundation +import os.log +import ObvTypes +import ObvMetaManager +import ObvCrypto +import OlvidUtils +import ObvEncoder + +// MARK: - Protocol Steps + +extension SynchronizationProtocol { + + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { + + case sendSyncAtomRequest = 0 + case processSyncAtomRequest = 1 + // case updateStateAndSendSyncSnapshot = 2 + + func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { + switch self { + + case .sendSyncAtomRequest: + let step = SendSyncAtomRequestStep(from: concreteProtocol, and: receivedMessage) + return step + + case .processSyncAtomRequest: + let step = ProcessSyncAtomRequestStep(from: concreteProtocol, and: receivedMessage) + return step + +// case .updateStateAndSendSyncSnapshot: +// if let step = UpdateStateAndSendSyncSnapshotOnInitiateSyncSnapshotMessageFromConcreteProtocolInitialState(from: concreteProtocol, and: receivedMessage) { +// return step +// } else if let step = UpdateStateAndSendSyncSnapshotOnTriggerSyncSnapshotMessageFromConcreteProtocolInitialState(from: concreteProtocol, and: receivedMessage) { +// return step +// } else if let step = UpdateStateAndSendSyncSnapshotOnTransferSyncSnapshotMessageFromConcreteProtocolInitialState(from: concreteProtocol, and: receivedMessage) { +// return step +// } else if let step = UpdateStateAndSendSyncSnapshotOnAtomProcessedMessageFromConcreteProtocolInitialState(from: concreteProtocol, and: receivedMessage) { +// return step +// } else if let step = UpdateStateAndSendSyncSnapshotOnInitiateSyncSnapshotMessageFromOngoingSyncSnapshotState(from: concreteProtocol, and: receivedMessage) { +// return step +// } else if let step = UpdateStateAndSendSyncSnapshotOnTriggerSyncSnapshotMessageFromOngoingSyncSnapshotState(from: concreteProtocol, and: receivedMessage) { +// return step +// } else if let step = UpdateStateAndSendSyncSnapshotOnTransferSyncSnapshotMessageFromOngoingSyncSnapshotState(from: concreteProtocol, and: receivedMessage) { +// return step +// } else if let step = UpdateStateAndSendSyncSnapshotOnAtomProcessedMessageFromOngoingSyncSnapshotState(from: concreteProtocol, and: receivedMessage) { +// return step +// } else { +// return nil +// } + + } + } + } + + // MARK: - SendSyncAtomRequestStep + + final class SendSyncAtomRequestStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: InitiateSyncAtomMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: InitiateSyncAtomMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .Local, + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let syncAtom = receivedMessage.syncAtom + + // Send the sync atom to our other owned devices + + let otherDeviceUids = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) + + if otherDeviceUids.count > 0 { + do { + let coreMessage = getCoreMessage(for: .AllConfirmedObliviousChannelsWithOtherDevicesOfOwnedIdentity(ownedIdentity: ownedIdentity)) + let concreteProtocolMessage = SyncAtomMessage(coreProtocolMessage: coreMessage, syncAtom: syncAtom) + guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + } + } + + // Send an AtomProcessedMessage to all ongoing instances of the synchronisation protocol + +// let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) +// for otherDeviceUid in otherDeviceUids { +// let otherProtocolInstanceUid = try SynchronizationProtocol.computeOngoingProtocolInstanceUid(ownedCryptoId: ownedIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: otherDeviceUid) +// let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .synchronization, otherProtocolInstanceUid: otherProtocolInstanceUid) +// let concreteProtocolMessage = AtomProcessedMessage(coreProtocolMessage: coreMessage) +// guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { +// assertionFailure() +// throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") +// } +// _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) +// } + + return FinalState() + + } + + } + + + // MARK: - ProcessSyncAtomRequestStep + + final class ProcessSyncAtomRequestStep: ProtocolStep, TypedConcreteProtocolStep { + + let startState: ConcreteProtocolInitialState + let receivedMessage: SyncAtomMessage + + init?(startState: ConcreteProtocolInitialState, receivedMessage: SyncAtomMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { + + self.startState = startState + self.receivedMessage = receivedMessage + + super.init(expectedToIdentity: concreteCryptoProtocol.ownedIdentity, + expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), + receivedMessage: receivedMessage, + concreteCryptoProtocol: concreteCryptoProtocol) + } + + override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { + + let syncAtom = receivedMessage.syncAtom + + // Determine the origin of the message + + guard let otherOwnedDeviceUID = receivedMessage.receptionChannelInfo?.getRemoteDeviceUid() else { + assertionFailure() + return FinalState() + } + + // The received ObvSyncAtom shall either be transferred to the app, or to the identity manager. + + switch syncAtom.recipient { + + case .app: + + let dialogUuid = UUID() + let dialogType = ObvChannelDialogToSendType.syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceUID: otherOwnedDeviceUID, syncAtom: syncAtom) + let coreMessage = getCoreMessage(for: .UserInterface(uuid: dialogUuid, ownedIdentity: ownedIdentity, dialogType: dialogType)) + let concreteProtocolMessage = SyncAtomDialogMessage(coreProtocolMessage: coreMessage) + guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { + throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") + } + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) + + case .identityManager: + + do { + try identityDelegate.processSyncAtom(syncAtom, ownedCryptoIdentity: ownedIdentity, within: obvContext) + } catch { + assertionFailure(error.localizedDescription) + throw error + } + + case .notImplementedOniOS: + + break + + } + + // Send an AtomProcessedMessage to all ongoing instances of the synchronisation protocol + +// let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) +// let otherDeviceUids = try identityDelegate.getOtherDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) +// for otherDeviceUid in otherDeviceUids { +// let otherProtocolInstanceUid = try SynchronizationProtocol.computeOngoingProtocolInstanceUid(ownedCryptoId: ownedIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: otherDeviceUid) +// let coreMessage = getCoreMessageForOtherLocalProtocol(otherCryptoProtocolId: .synchronization, otherProtocolInstanceUid: otherProtocolInstanceUid) +// let concreteProtocolMessage = AtomProcessedMessage(coreProtocolMessage: coreMessage) +// guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { +// assertionFailure() +// throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") +// } +// _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) +// } + + return FinalState() + + } + + } + + + // MARK: - UpdateStateAndSendSyncSnapshotStep + +// class UpdateStateAndSendSyncSnapshotStep: ProtocolStep { +// +// enum StartStateType { +// case initial(startState: ConcreteProtocolInitialState) +// case ongoingSyncSnapshot(startState: OngoingSyncSnapshotState) +// } +// +// enum ReceivedMessageType { +// case initiateSyncSnapshotMessage(receivedMessage: InitiateSyncSnapshotMessage) +// case triggerSyncSnapshotMessage(receivedMessage: TriggerSyncSnapshotMessage) +// case transferSyncSnapshot(receivedMessage: TransferSyncSnapshotMessage) +// case atomProcessed(receivedMessage: AtomProcessedMessage) +// } +// +// +// private let startState: StartStateType +// private let receivedMessage: ReceivedMessageType +// +// init?(startState: StartStateType, receivedMessage: ReceivedMessageType, concreteCryptoProtocol: ConcreteCryptoProtocol) { +// self.startState = startState +// self.receivedMessage = receivedMessage +// switch receivedMessage { +// case .initiateSyncSnapshotMessage(let receivedMessage): +// super.init( +// expectedToIdentity: concreteCryptoProtocol.ownedIdentity, +// expectedReceptionChannelInfo: .Local, +// receivedMessage: receivedMessage, +// concreteCryptoProtocol: concreteCryptoProtocol) +// case .triggerSyncSnapshotMessage(let receivedMessage): +// super.init( +// expectedToIdentity: concreteCryptoProtocol.ownedIdentity, +// expectedReceptionChannelInfo: .Local, +// receivedMessage: receivedMessage, +// concreteCryptoProtocol: concreteCryptoProtocol) +// case .transferSyncSnapshot(let receivedMessage): +// super.init( +// expectedToIdentity: concreteCryptoProtocol.ownedIdentity, +// expectedReceptionChannelInfo: .AnyObliviousChannelWithOwnedDevice(ownedIdentity: concreteCryptoProtocol.ownedIdentity), +// receivedMessage: receivedMessage, +// concreteCryptoProtocol: concreteCryptoProtocol) +// case .atomProcessed(let receivedMessage): +// super.init( +// expectedToIdentity: concreteCryptoProtocol.ownedIdentity, +// expectedReceptionChannelInfo: .Local, +// receivedMessage: receivedMessage, +// concreteCryptoProtocol: concreteCryptoProtocol) +// } +// } +// +// override func executeStep(within obvContext: ObvContext) throws -> ConcreteProtocolState? { +// +// let defaultStateToReturn: ConcreteProtocolState +// let otherOwnedDeviceUid: UID +// let currentlyShowingDiff: Bool +// +// let localSnapshot: ObvSyncSnapshotAndVersion? +// let localSnapshotVersionKnownByRemote: Int? +// +// let previouslyReceivedRemoteSnapshot: ObvSyncSnapshotAndVersion? +// let justReceivedRemoteSnapshot: ObvSyncSnapshotAndVersion? +// +// var sendOurSnapshot = false +// +// switch (startState, receivedMessage) { +// +// case (.initial, .initiateSyncSnapshotMessage(let receivedMessage)): +// defaultStateToReturn = FinalState() +// otherOwnedDeviceUid = receivedMessage.otherOwnedDeviceUID +// currentlyShowingDiff = false +// localSnapshot = nil +// localSnapshotVersionKnownByRemote = nil +// previouslyReceivedRemoteSnapshot = nil +// justReceivedRemoteSnapshot = nil +// +// case (.initial, .triggerSyncSnapshotMessage): +// return FinalState() +// +// case (.initial(let startState), .transferSyncSnapshot(let receivedMessage)): +// defaultStateToReturn = FinalState() +// guard let remoteDeviceUid = receivedMessage.receptionChannelInfo?.getRemoteDeviceUid() else { +// assertionFailure() +// return startState +// } +// otherOwnedDeviceUid = remoteDeviceUid +// currentlyShowingDiff = false +// localSnapshot = nil +// localSnapshotVersionKnownByRemote = receivedMessage.localVersionKnownBySender +// previouslyReceivedRemoteSnapshot = nil +// justReceivedRemoteSnapshot = receivedMessage.remoteSyncSnapshotAndVersion +// +// case (.initial, .atomProcessed): +// return FinalState() +// +// case (.ongoingSyncSnapshot(let startState), .initiateSyncSnapshotMessage): +// return startState +// +// case (.ongoingSyncSnapshot(let startState), .triggerSyncSnapshotMessage(let receivedMessage)): +// defaultStateToReturn = startState +// otherOwnedDeviceUid = startState.otherOwnedDeviceUid +// currentlyShowingDiff = startState.currentlyShowingDiff +// localSnapshot = startState.localSnapshot +// localSnapshotVersionKnownByRemote = nil +// previouslyReceivedRemoteSnapshot = startState.remoteSnapshot +// justReceivedRemoteSnapshot = nil +// sendOurSnapshot = receivedMessage.forceSendSnapshot +// +// case (.ongoingSyncSnapshot(let startState), .transferSyncSnapshot(let receivedMessage)): +// defaultStateToReturn = startState +// guard let remoteDeviceUid = receivedMessage.receptionChannelInfo?.getRemoteDeviceUid() else { +// assertionFailure() +// return startState +// } +// guard remoteDeviceUid == startState.otherOwnedDeviceUid else { +// assertionFailure() +// return startState +// } +// otherOwnedDeviceUid = remoteDeviceUid +// currentlyShowingDiff = startState.currentlyShowingDiff +// localSnapshot = startState.localSnapshot +// localSnapshotVersionKnownByRemote = receivedMessage.localVersionKnownBySender +// previouslyReceivedRemoteSnapshot = startState.remoteSnapshot +// justReceivedRemoteSnapshot = receivedMessage.remoteSyncSnapshotAndVersion +// +// case (.ongoingSyncSnapshot(let startState), .atomProcessed): +// defaultStateToReturn = startState +// otherOwnedDeviceUid = startState.otherOwnedDeviceUid +// currentlyShowingDiff = startState.currentlyShowingDiff +// localSnapshot = startState.localSnapshot +// localSnapshotVersionKnownByRemote = nil +// previouslyReceivedRemoteSnapshot = startState.remoteSnapshot +// justReceivedRemoteSnapshot = nil +// +// } +// +// // Check that the protocolUid matches what we expect +// +// let currentDeviceUid = try identityDelegate.getCurrentDeviceUidOfOwnedIdentity(ownedIdentity, within: obvContext) +// guard try self.protocolInstanceUid == SynchronizationProtocol.computeOngoingProtocolInstanceUid(ownedCryptoId: ownedIdentity, currentDeviceUid: currentDeviceUid, otherOwnedDeviceUid: otherOwnedDeviceUid) else { +// assertionFailure() +// return defaultStateToReturn +// } +// +// // In case we received a snapshot or have a previously received snapshot, we want to determine the one that is the most appropriate to continue with (we call it the "last seen" snapshot) +// +// let updatedRemoteSnapshot: ObvSyncSnapshotAndVersion? +// +// switch determineUpdatedRemoteSnapshot(justReceivedRemoteSnapshot: justReceivedRemoteSnapshot, previouslyReceivedRemoteSnapshot: previouslyReceivedRemoteSnapshot) { +// case .stopStep: +// return defaultStateToReturn +// case .updatedRemoteSnapshot(let snapshot): +// updatedRemoteSnapshot = snapshot +// } +// +// // In rare cases, we might have restarted this protocol and, consequently, reset the version of the localSnapshot back to 0. +// // In that situation, the remote device might have previously received from us a snapshot with a version larger than ours. +// // If we do nothing, the snapshot we would send her now would be discarder. So we update our version if required. +// // In case we update our version, we always decide to eventually send our local snapshot back. +// +// let updatedLocalSnapshot: ObvSyncSnapshotAndVersion +// +// do { +// +// let localSnapshotWithUpdatedVersion: ObvSyncSnapshotAndVersion? +// +// if let localSnapshotVersionKnownByRemote, let localSnapshot, localSnapshotVersionKnownByRemote > localSnapshot.version { +// +// localSnapshotWithUpdatedVersion = ObvSyncSnapshotAndVersion( +// version: localSnapshotVersionKnownByRemote + 1, +// syncSnapshot: localSnapshot.syncSnapshot) +// +// sendOurSnapshot = true +// +// } else { +// +// localSnapshotWithUpdatedVersion = localSnapshot +// +// } +// +// // Now that the version of the local snapshot is correct, we want it to reflect the latest state of the current device. +// +// let syncSnapshot = try syncSnapshotDelegate.makeObvSyncSnapshot(within: obvContext) +// let localSnapshotChanged = syncSnapshot.isContentIdenticalTo(other: localSnapshotWithUpdatedVersion?.syncSnapshot) +// let version: Int +// +// if localSnapshotChanged { +// version = (localSnapshotWithUpdatedVersion?.version ?? 0) + 1 +// sendOurSnapshot = true +// } else { +// version = (localSnapshotWithUpdatedVersion?.version ?? 0) +// } +// +// updatedLocalSnapshot = ObvSyncSnapshotAndVersion(version: version, syncSnapshot: syncSnapshot) +// +// } +// +// // Decide whether we should compute a diff to show to the user. This will be the case if: +// // - We have a remote snapshot to compare to (obviously) +// // - AND: +// // - we are currently showing a diff +// // - OR we received a snapshot with a localSnapshotKnownByRemote.version == updatedLocalSnapshot.version +// // In both cases, if the diff we compute is empty, we stop showing a diff to the user +// +// let computedDiffsToShow: Set? +// if let updatedRemoteSnapshot { +// let shouldComputeDiff = currentlyShowingDiff || (localSnapshotVersionKnownByRemote == updatedLocalSnapshot.version) +// if shouldComputeDiff { +// computedDiffsToShow = updatedLocalSnapshot.syncSnapshot.computeDiff(withOther: updatedRemoteSnapshot.syncSnapshot) +// } else { +// computedDiffsToShow = nil +// } +// } else { +// computedDiffsToShow = nil +// } +// +// // If we decided to send our updated local snapshot, do it now +// +// if sendOurSnapshot { +// let coreMessage = getCoreMessage(for: ObvChannelSendChannelType.ObliviousChannel(to: ownedIdentity, remoteDeviceUids: [otherOwnedDeviceUid], fromOwnedIdentity: ownedIdentity, necessarilyConfirmed: true)) +// let concreteMessage = TransferSyncSnapshotMessage(coreProtocolMessage: coreMessage, remoteSyncSnapshotAndVersion: updatedLocalSnapshot, localVersionKnownBySender: updatedRemoteSnapshot?.version) +// guard let messageToSend = concreteMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure(); throw Self.makeError(message: "Implementation error") } +// _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) +// } +// +// // If we decided to show diffs to the user, do it now +// +// if let computedDiffsToShow { +// syncSnapshotDelegate.newSyncDiffsToProcessOrShowToUser(computedDiffsToShow, withOtherOwnedDeviceUid: otherOwnedDeviceUid) +// } +// +// // We stay in an ongoing state "forever" (until the remote device is removed) +// +// return OngoingSyncSnapshotState( +// otherOwnedDeviceUid: otherOwnedDeviceUid, +// localSnapshot: updatedLocalSnapshot, +// remoteSnapshot: updatedRemoteSnapshot, +// currentlyShowingDiff: computedDiffsToShow != nil) +// +// } +// +// +// private enum LastSeenReceivedSnapShotAndVersionOrStopStep { +// case updatedRemoteSnapshot(snapshot: ObvSyncSnapshotAndVersion?) +// case stopStep +// } +// +// +// /// Returns the most appropriate snapshot and version to consider in the rest of the step. In some occasions, we want to stop the step execution. +// private func determineUpdatedRemoteSnapshot(justReceivedRemoteSnapshot: ObvSyncSnapshotAndVersion?, previouslyReceivedRemoteSnapshot: ObvSyncSnapshotAndVersion?) -> LastSeenReceivedSnapShotAndVersionOrStopStep { +// +// if let justReceivedRemoteSnapshot { +// +// if let previouslyReceivedRemoteSnapshot { +// +// // We have both a previously received snapshot and a just received snapshot +// if justReceivedRemoteSnapshot.version < previouslyReceivedRemoteSnapshot.version { +// // The snapshot we just received is older than the one we already knew about, we discard it and there is nothing left to do +// return .stopStep +// } else if justReceivedRemoteSnapshot.version == previouslyReceivedRemoteSnapshot.version { +// // Weird, the snapshot we just received has the same version than the one we already knew about. If the content are the same, we can ignore the received message. +// if justReceivedRemoteSnapshot.syncSnapshot.isContentIdenticalTo(other: previouslyReceivedRemoteSnapshot.syncSnapshot) { +// return .stopStep +// } else { +// // The just received snapshot "replaces" the previous one +// return .updatedRemoteSnapshot(snapshot: justReceivedRemoteSnapshot) +// } +// } else { +// // The snapshot we received is more recent than the one we received previously, we keep the most recent one +// return .updatedRemoteSnapshot(snapshot: justReceivedRemoteSnapshot) +// } +// +// } else { +// +// return .updatedRemoteSnapshot(snapshot: justReceivedRemoteSnapshot) +// +// } +// +// } else { +// +// return .updatedRemoteSnapshot(snapshot: previouslyReceivedRemoteSnapshot) +// +// } +// +// } +// +// } + + + // MARK: UpdateStateAndSendSyncSnapshotStep on InitiateSyncSnapshotMessage from ConcreteProtocolInitialState + +// final class UpdateStateAndSendSyncSnapshotOnInitiateSyncSnapshotMessageFromConcreteProtocolInitialState: UpdateStateAndSendSyncSnapshotStep, TypedConcreteProtocolStep { +// +// let startState: ConcreteProtocolInitialState +// let receivedMessage: InitiateSyncSnapshotMessage +// +// init?(startState: ConcreteProtocolInitialState, receivedMessage: InitiateSyncSnapshotMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { +// self.startState = startState +// self.receivedMessage = receivedMessage +// super.init( +// startState: .initial(startState: startState), +// receivedMessage: .initiateSyncSnapshotMessage(receivedMessage: receivedMessage), +// concreteCryptoProtocol: concreteCryptoProtocol) +// } +// +// } + + + // MARK: UpdateStateAndSendSyncSnapshotStep on TriggerSyncSnapshotMessage from ConcreteProtocolInitialState + +// final class UpdateStateAndSendSyncSnapshotOnTriggerSyncSnapshotMessageFromConcreteProtocolInitialState: UpdateStateAndSendSyncSnapshotStep, TypedConcreteProtocolStep { +// +// let startState: ConcreteProtocolInitialState +// let receivedMessage: TriggerSyncSnapshotMessage +// +// init?(startState: ConcreteProtocolInitialState, receivedMessage: TriggerSyncSnapshotMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { +// self.startState = startState +// self.receivedMessage = receivedMessage +// super.init( +// startState: .initial(startState: startState), +// receivedMessage: .triggerSyncSnapshotMessage(receivedMessage: receivedMessage), +// concreteCryptoProtocol: concreteCryptoProtocol) +// } +// +// } + + + // MARK: UpdateStateAndSendSyncSnapshotStep on TransferSyncSnapshotMessage from ConcreteProtocolInitialState + +// final class UpdateStateAndSendSyncSnapshotOnTransferSyncSnapshotMessageFromConcreteProtocolInitialState: UpdateStateAndSendSyncSnapshotStep, TypedConcreteProtocolStep { +// +// let startState: ConcreteProtocolInitialState +// let receivedMessage: TransferSyncSnapshotMessage +// +// init?(startState: ConcreteProtocolInitialState, receivedMessage: TransferSyncSnapshotMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { +// self.startState = startState +// self.receivedMessage = receivedMessage +// super.init( +// startState: .initial(startState: startState), +// receivedMessage: .transferSyncSnapshot(receivedMessage: receivedMessage), +// concreteCryptoProtocol: concreteCryptoProtocol) +// } +// +// } + + + // MARK: UpdateStateAndSendSyncSnapshotStep on AtomProcessedMessage from ConcreteProtocolInitialState + +// final class UpdateStateAndSendSyncSnapshotOnAtomProcessedMessageFromConcreteProtocolInitialState: UpdateStateAndSendSyncSnapshotStep, TypedConcreteProtocolStep { +// +// let startState: ConcreteProtocolInitialState +// let receivedMessage: AtomProcessedMessage +// +// init?(startState: ConcreteProtocolInitialState, receivedMessage: AtomProcessedMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { +// self.startState = startState +// self.receivedMessage = receivedMessage +// super.init( +// startState: .initial(startState: startState), +// receivedMessage: .atomProcessed(receivedMessage: receivedMessage), +// concreteCryptoProtocol: concreteCryptoProtocol) +// } +// +// } + + + // MARK: UpdateStateAndSendSyncSnapshotStep on InitiateSyncSnapshotMessage from OngoingSyncSnapshotState + +// final class UpdateStateAndSendSyncSnapshotOnInitiateSyncSnapshotMessageFromOngoingSyncSnapshotState: UpdateStateAndSendSyncSnapshotStep, TypedConcreteProtocolStep { +// +// let startState: OngoingSyncSnapshotState +// let receivedMessage: InitiateSyncSnapshotMessage +// +// init?(startState: OngoingSyncSnapshotState, receivedMessage: InitiateSyncSnapshotMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { +// self.startState = startState +// self.receivedMessage = receivedMessage +// super.init( +// startState: .ongoingSyncSnapshot(startState: startState), +// receivedMessage: .initiateSyncSnapshotMessage(receivedMessage: receivedMessage), +// concreteCryptoProtocol: concreteCryptoProtocol) +// } +// +// } + + + // MARK: UpdateStateAndSendSyncSnapshotStep on TriggerSyncSnapshotMessage from OngoingSyncSnapshotState + +// final class UpdateStateAndSendSyncSnapshotOnTriggerSyncSnapshotMessageFromOngoingSyncSnapshotState: UpdateStateAndSendSyncSnapshotStep, TypedConcreteProtocolStep { +// +// let startState: OngoingSyncSnapshotState +// let receivedMessage: TriggerSyncSnapshotMessage +// +// init?(startState: OngoingSyncSnapshotState, receivedMessage: TriggerSyncSnapshotMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { +// self.startState = startState +// self.receivedMessage = receivedMessage +// super.init( +// startState: .ongoingSyncSnapshot(startState: startState), +// receivedMessage: .triggerSyncSnapshotMessage(receivedMessage: receivedMessage), +// concreteCryptoProtocol: concreteCryptoProtocol) +// } +// +// } + + + // MARK: UpdateStateAndSendSyncSnapshotStep on TransferSyncSnapshotMessage from OngoingSyncSnapshotState + +// final class UpdateStateAndSendSyncSnapshotOnTransferSyncSnapshotMessageFromOngoingSyncSnapshotState: UpdateStateAndSendSyncSnapshotStep, TypedConcreteProtocolStep { +// +// let startState: OngoingSyncSnapshotState +// let receivedMessage: TransferSyncSnapshotMessage +// +// init?(startState: OngoingSyncSnapshotState, receivedMessage: TransferSyncSnapshotMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { +// self.startState = startState +// self.receivedMessage = receivedMessage +// super.init( +// startState: .ongoingSyncSnapshot(startState: startState), +// receivedMessage: .transferSyncSnapshot(receivedMessage: receivedMessage), +// concreteCryptoProtocol: concreteCryptoProtocol) +// } +// +// } + + + // MARK: UpdateStateAndSendSyncSnapshotStep on AtomProcessedMessage from OngoingSyncSnapshotState + +// final class UpdateStateAndSendSyncSnapshotOnAtomProcessedMessageFromOngoingSyncSnapshotState: UpdateStateAndSendSyncSnapshotStep, TypedConcreteProtocolStep { +// +// let startState: OngoingSyncSnapshotState +// let receivedMessage: AtomProcessedMessage +// +// init?(startState: OngoingSyncSnapshotState, receivedMessage: AtomProcessedMessage, concreteCryptoProtocol: ConcreteCryptoProtocol) { +// self.startState = startState +// self.receivedMessage = receivedMessage +// super.init( +// startState: .ongoingSyncSnapshot(startState: startState), +// receivedMessage: .atomProcessed(receivedMessage: receivedMessage), +// concreteCryptoProtocol: concreteCryptoProtocol) +// } +// +// } + +} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocol.swift index ff8a1705..321e4511 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,13 +27,13 @@ public struct TrustEstablishmentWithMutualScanProtocol: ConcreteCryptoProtocol { static let logCategory = "TrustEstablishmentWithMutualScanProtocol" - static let id = CryptoProtocolId.TrustEstablishmentWithMutualScan + static let id = CryptoProtocolId.trustEstablishmentWithMutualScan private static let errorDomain = "TrustEstablishmentWithMutualScanProtocol" static func makeError(message: String) -> Error { NSError(domain: errorDomain, code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Finished, StateId.Cancelled] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.finished, StateId.cancelled] let ownedIdentity: ObvCryptoIdentity let currentState: ConcreteProtocolState @@ -60,13 +60,8 @@ public struct TrustEstablishmentWithMutualScanProtocol: ConcreteCryptoProtocol { return MessageId(rawValue: rawValue) } - static let allStepIds: [ConcreteProtocolStepId] = [ - StepId.AliceSend, - StepId.AliceHandlesPropagatedQRCode, - StepId.AliceAddsContact, - StepId.BobAddsContactAndConfirms, - StepId.BobHandlesPropagatedSignature, - ] - + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolMessages.swift index 7f0281f8..c747f7c7 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,19 +26,20 @@ import ObvTypes extension TrustEstablishmentWithMutualScanProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case AliceSendsSignatureToBob = 1 - case AlicePropagatesQRCode = 2 - case BobSendsConfirmationAndDetailsToAlice = 3 - case BobPropagatesSignature = 4 + + case initial = 0 + case aliceSendsSignatureToBob = 1 + case alicePropagatesQRCode = 2 + case bobSendsConfirmationAndDetailsToAlice = 3 + case bobPropagatesSignature = 4 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .Initial : return InitialMessage.self - case .AliceSendsSignatureToBob : return AliceSendsSignatureToBobMessage.self - case .AlicePropagatesQRCode : return AlicePropagatesQRCodeMessage.self - case .BobSendsConfirmationAndDetailsToAlice : return BobSendsConfirmationAndDetailsToAliceMessage.self - case .BobPropagatesSignature : return BobPropagatesSignatureMessage.self + case .initial : return InitialMessage.self + case .aliceSendsSignatureToBob : return AliceSendsSignatureToBobMessage.self + case .alicePropagatesQRCode : return AlicePropagatesQRCodeMessage.self + case .bobSendsConfirmationAndDetailsToAlice : return BobSendsConfirmationAndDetailsToAliceMessage.self + case .bobPropagatesSignature : return BobPropagatesSignatureMessage.self } } @@ -49,7 +50,7 @@ extension TrustEstablishmentWithMutualScanProtocol { struct InitialMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Initial + let id: ConcreteProtocolMessageId = MessageId.initial let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -81,7 +82,7 @@ extension TrustEstablishmentWithMutualScanProtocol { struct AliceSendsSignatureToBobMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AliceSendsSignatureToBob + let id: ConcreteProtocolMessageId = MessageId.aliceSendsSignatureToBob let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -127,7 +128,7 @@ extension TrustEstablishmentWithMutualScanProtocol { struct AlicePropagatesQRCodeMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AlicePropagatesQRCode + let id: ConcreteProtocolMessageId = MessageId.alicePropagatesQRCode let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -159,7 +160,7 @@ extension TrustEstablishmentWithMutualScanProtocol { struct BobSendsConfirmationAndDetailsToAliceMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.BobSendsConfirmationAndDetailsToAlice + let id: ConcreteProtocolMessageId = MessageId.bobSendsConfirmationAndDetailsToAlice let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -195,7 +196,7 @@ extension TrustEstablishmentWithMutualScanProtocol { struct BobPropagatesSignatureMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.BobPropagatesSignature + let id: ConcreteProtocolMessageId = MessageId.bobPropagatesSignature let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolMessagesSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolMessagesSteps.swift index 3b9d2366..44a886a8 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolMessagesSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolMessagesSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,36 +25,36 @@ import ObvMetaManager extension TrustEstablishmentWithMutualScanProtocol { - enum StepId: Int, ConcreteProtocolStepId { + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { // Alice's side - case AliceSend = 0 - case AliceHandlesPropagatedQRCode = 1 - case AliceAddsContact = 2 + case aliceSend = 0 + case aliceHandlesPropagatedQRCode = 1 + case aliceAddsContact = 2 // Bob's side - case BobAddsContactAndConfirms = 3 - case BobHandlesPropagatedSignature = 4 + case bobAddsContactAndConfirms = 3 + case bobHandlesPropagatedSignature = 4 func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { // Alice's side - case .AliceSend: + case .aliceSend: let step = AliceSendStep(from: concreteProtocol, and: receivedMessage) return step - case .AliceHandlesPropagatedQRCode: + case .aliceHandlesPropagatedQRCode: let step = AliceHandlesPropagatedQRCodeStep(from: concreteProtocol, and: receivedMessage) return step - case .AliceAddsContact: + case .aliceAddsContact: let step = AliceAddsContactStep(from: concreteProtocol, and: receivedMessage) return step // Bob's side - case .BobAddsContactAndConfirms: + case .bobAddsContactAndConfirms: let step = BobAddsContactAndConfirmsStep(from: concreteProtocol, and: receivedMessage) return step - case .BobHandlesPropagatedSignature: + case .bobHandlesPropagatedSignature: let step = BobHandlesPropagatedSignatureStep(from: concreteProtocol, and: receivedMessage) return step } @@ -108,7 +108,7 @@ extension TrustEstablishmentWithMutualScanProtocol { aliceCoreDetails: aliceCoreDetails, aliceDeviceUids: Array(aliceDeviceUids)) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw TrustEstablishmentWithMutualScanProtocol.makeError(message: "Could not generate ObvChannelProtocolMessageToSend for AliceSendsSignatureToBobMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // Send propagate messages @@ -119,7 +119,7 @@ extension TrustEstablishmentWithMutualScanProtocol { bobIdentity: contactIdentity, signature: signature) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw TrustEstablishmentWithMutualScanProtocol.makeError(message: "Could not generate ObvChannelProtocolMessageToSend for AlicePropagatesQRCodeMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -226,26 +226,26 @@ extension TrustEstablishmentWithMutualScanProtocol { os_log("Contact is not active", log: log, type: .error) return CancelledState() } - try identityDelegate.addTrustOriginIfTrustWouldBeIncreased(.direct(timestamp: Date()), toContactIdentity: aliceIdentity, ofOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) + try identityDelegate.addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(.direct(timestamp: Date()), toContactIdentity: aliceIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) } else { try identityDelegate.addContactIdentity(aliceIdentity, with: aliceCoreDetails, andTrustOrigin: .direct(timestamp: Date()), forOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) } for uid in aliceDeviceUids { - try identityDelegate.addDeviceForContactIdentity(aliceIdentity, withUid: uid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(aliceIdentity, withUid: uid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } // Notify Alice she was added and send her our details let bobDeviceUids = try identityDelegate.getDeviceUidsOfOwnedIdentity(ownedIdentity, within: obvContext) let bobCoreDetails = try identityDelegate.getIdentityDetailsOfOwnedIdentity(ownedIdentity, within: obvContext).publishedIdentityDetails.coreDetails - let coreMessage = getCoreMessage(for: .AsymmetricChannelBroadcast(to: aliceIdentity, fromOwnedIdentity: ownedIdentity)) + let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: aliceIdentity, remoteDeviceUids: aliceDeviceUids, fromOwnedIdentity: ownedIdentity)) let concreteProtocolMessage = BobSendsConfirmationAndDetailsToAliceMessage(coreProtocolMessage: coreMessage, bobCoreDetails: bobCoreDetails, bobDeviceUids: Array(bobDeviceUids)) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw TrustEstablishmentWithMutualScanProtocol.makeError(message: "Could not generate ObvChannelProtocolMessageToSend for BobSendsConfirmationAndDetailsToAliceMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) // Propagate the message to other devices @@ -260,7 +260,7 @@ extension TrustEstablishmentWithMutualScanProtocol { guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { throw TrustEstablishmentWithMutualScanProtocol.makeError(message: "Could not generate ObvChannelProtocolMessageToSend for BobPropagatesSignatureMessage") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Send a notification so the app can automatically open the contact discussion @@ -335,12 +335,12 @@ extension TrustEstablishmentWithMutualScanProtocol { // Signature is valid and is fresh --> create the contact (if it does not already exists) if (try? identityDelegate.isIdentity(aliceIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext)) == true { - try identityDelegate.addTrustOriginIfTrustWouldBeIncreased(.direct(timestamp: Date()), toContactIdentity: aliceIdentity, ofOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) + try identityDelegate.addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(.direct(timestamp: Date()), toContactIdentity: aliceIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) } else { try identityDelegate.addContactIdentity(aliceIdentity, with: aliceCoreDetails, andTrustOrigin: .direct(timestamp: Date()), forOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) } for uid in aliceDeviceUids { - try identityDelegate.addDeviceForContactIdentity(aliceIdentity, withUid: uid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(aliceIdentity, withUid: uid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } // Send a notification so the app can automatically open the contact discussion @@ -396,12 +396,12 @@ extension TrustEstablishmentWithMutualScanProtocol { os_log("The identity is not active", log: log, type: .fault) return CancelledState() } - try identityDelegate.addTrustOriginIfTrustWouldBeIncreased(.direct(timestamp: Date()), toContactIdentity: bobIdentity, ofOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) + try identityDelegate.addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(.direct(timestamp: Date()), toContactIdentity: bobIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) } else { try identityDelegate.addContactIdentity(bobIdentity, with: bobCoreDetails, andTrustOrigin: .direct(timestamp: Date()), forOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) } for uid in bobDeviceUids { - try identityDelegate.addDeviceForContactIdentity(bobIdentity, withUid: uid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(bobIdentity, withUid: uid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } // Return the new state diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolStates.swift index 5ef3d71b..0ab15d03 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithMutualScanProtocol/TrustEstablishmentWithMutualScanProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,17 +26,17 @@ extension TrustEstablishmentWithMutualScanProtocol { enum StateId: Int, ConcreteProtocolStateId { - case Initial = 0 - case WaitingForConfirmation = 1 - case Finished = 2 - case Cancelled = 3 + case initial = 0 + case waitingForConfirmation = 1 + case finished = 2 + case cancelled = 3 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .Initial : return ConcreteProtocolInitialState.self - case .WaitingForConfirmation : return WaitingForConfirmationState.self - case .Finished : return FinishedState.self - case .Cancelled: return CancelledState.self + case .initial : return ConcreteProtocolInitialState.self + case .waitingForConfirmation : return WaitingForConfirmationState.self + case .finished : return FinishedState.self + case .cancelled: return CancelledState.self } } @@ -45,7 +45,7 @@ extension TrustEstablishmentWithMutualScanProtocol { struct WaitingForConfirmationState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForConfirmation + let id: ConcreteProtocolStateId = StateId.waitingForConfirmation let bobIdentity: ObvCryptoIdentity @@ -65,7 +65,7 @@ extension TrustEstablishmentWithMutualScanProtocol { struct FinishedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Finished + let id: ConcreteProtocolStateId = StateId.finished init(_: ObvEncoded) {} @@ -78,7 +78,7 @@ extension TrustEstablishmentWithMutualScanProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocol.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocol.swift index 2dc11414..2456565c 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocol.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -32,9 +32,9 @@ public struct TrustEstablishmentWithSASProtocol: ConcreteCryptoProtocol, ObvErro static let logCategory = "TrustEstablishmentWithSASProtocol" - static let id = CryptoProtocolId.TrustEstablishmentWithSAS + static let id = CryptoProtocolId.trustEstablishmentWithSAS - static let finalStateIds: [ConcreteProtocolStateId] = [StateId.Cancelled, StateId.MutualTrustConfirmed] + static let finalStateIds: [ConcreteProtocolStateId] = [StateId.cancelled, StateId.mutualTrustConfirmed] public static let errorDomain = "TrustEstablishmentWithSASProtocol" @@ -63,18 +63,10 @@ public struct TrustEstablishmentWithSASProtocol: ConcreteCryptoProtocol, ObvErro return MessageId(rawValue: rawValue) } - static let allStepIds: [ConcreteProtocolStepId] = [StepId.SendCommitment, - StepId.StoreDecommitment, - StepId.ShowSasDialogAndSendDecommitment, - StepId.StoreAndPropagateCommitmentAndAskForConfirmation, - StepId.StoreCommitmentAndAskForConfirmation, - StepId.SendSeedAndPropagateConfirmation, - StepId.ReceiveConfirmationFromOtherDevice, - StepId.ShowSasDialog, - StepId.CheckSas, - StepId.CheckPropagatedSas, - StepId.NotifiedMutualTrustEstablishedLegacy, - StepId.AddTrust] + static var allStepIds: [ConcreteProtocolStepId] { + return StepId.allCases + } + } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolMessages.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolMessages.swift index d7acd5e6..0808cfd7 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolMessages.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolMessages.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -32,35 +32,36 @@ import ObvMetaManager extension TrustEstablishmentWithSASProtocol { enum MessageId: Int, ConcreteProtocolMessageId { - case Initial = 0 - case AliceSendsCommitment = 1 - case AlicePropagatesHerInviteToOtherDevices = 2 - case BobPropagatesCommitmentToOtherDevices = 4 - case BobDialogInvitationConfirmation = 5 - case BobPropagatesConfirmationToOtherDevices = 6 - case BobSendsSeed = 8 - case AliceSendsDecommitment = 9 - case DialogSasExchange = 10 - case PropagateEnteredSasToOtherDevices = 12 - case MutualTrustConfirmation = 13 - case DialogForMutualTrustConfirmation = 14 - case DialogInformative = 15 + + case initial = 0 + case aliceSendsCommitment = 1 + case alicePropagatesHerInviteToOtherDevices = 2 + case bobPropagatesCommitmentToOtherDevices = 4 + case bobDialogInvitationConfirmation = 5 + case bobPropagatesConfirmationToOtherDevices = 6 + case bobSendsSeed = 8 + case aliceSendsDecommitment = 9 + case dialogSasExchange = 10 + case propagateEnteredSasToOtherDevices = 12 + case mutualTrustConfirmation = 13 + case dialogForMutualTrustConfirmation = 14 + case dialogInformative = 15 var concreteProtocolMessageType: ConcreteProtocolMessage.Type { switch self { - case .Initial : return InitialMessage.self - case .AliceSendsCommitment : return AliceSendsCommitmentMessage.self - case .AlicePropagatesHerInviteToOtherDevices : return AlicePropagatesHerInviteToOtherDevicesMessage.self - case .BobPropagatesCommitmentToOtherDevices : return BobPropagatesCommitmentToOtherDevicesMessage.self - case .BobDialogInvitationConfirmation : return BobDialogInvitationConfirmationMessage.self - case .BobPropagatesConfirmationToOtherDevices : return BobPropagatesConfirmationToOtherDevicesMessage.self - case .BobSendsSeed : return BobSendsSeedMessage.self - case .AliceSendsDecommitment : return AliceSendsDecommitmentMessage.self - case .DialogSasExchange : return DialogSasExchangeMessage.self - case .PropagateEnteredSasToOtherDevices : return PropagateEnteredSasToOtherDevicesMessage.self - case .MutualTrustConfirmation : return MutualTrustConfirmationMessageMessage.self - case .DialogForMutualTrustConfirmation : return DialogForMutualTrustConfirmationMessage.self - case .DialogInformative : return DialogInformativeMessage.self + case .initial : return InitialMessage.self + case .aliceSendsCommitment : return AliceSendsCommitmentMessage.self + case .alicePropagatesHerInviteToOtherDevices : return AlicePropagatesHerInviteToOtherDevicesMessage.self + case .bobPropagatesCommitmentToOtherDevices : return BobPropagatesCommitmentToOtherDevicesMessage.self + case .bobDialogInvitationConfirmation : return BobDialogInvitationConfirmationMessage.self + case .bobPropagatesConfirmationToOtherDevices : return BobPropagatesConfirmationToOtherDevicesMessage.self + case .bobSendsSeed : return BobSendsSeedMessage.self + case .aliceSendsDecommitment : return AliceSendsDecommitmentMessage.self + case .dialogSasExchange : return DialogSasExchangeMessage.self + case .propagateEnteredSasToOtherDevices : return PropagateEnteredSasToOtherDevicesMessage.self + case .mutualTrustConfirmation : return MutualTrustConfirmationMessageMessage.self + case .dialogForMutualTrustConfirmation : return DialogForMutualTrustConfirmationMessage.self + case .dialogInformative : return DialogInformativeMessage.self } } } @@ -68,7 +69,7 @@ extension TrustEstablishmentWithSASProtocol { struct InitialMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.Initial + let id: ConcreteProtocolMessageId = MessageId.initial let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -104,7 +105,7 @@ extension TrustEstablishmentWithSASProtocol { struct AliceSendsCommitmentMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AliceSendsCommitment + let id: ConcreteProtocolMessageId = MessageId.aliceSendsCommitment let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -144,7 +145,7 @@ extension TrustEstablishmentWithSASProtocol { struct AlicePropagatesHerInviteToOtherDevicesMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AlicePropagatesHerInviteToOtherDevices + let id: ConcreteProtocolMessageId = MessageId.alicePropagatesHerInviteToOtherDevices let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -178,7 +179,7 @@ extension TrustEstablishmentWithSASProtocol { struct BobPropagatesCommitmentToOtherDevicesMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.BobPropagatesCommitmentToOtherDevices + let id: ConcreteProtocolMessageId = MessageId.bobPropagatesCommitmentToOtherDevices let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -218,7 +219,7 @@ extension TrustEstablishmentWithSASProtocol { struct BobDialogInvitationConfirmationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.BobDialogInvitationConfirmation + let id: ConcreteProtocolMessageId = MessageId.bobDialogInvitationConfirmation let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -248,7 +249,7 @@ extension TrustEstablishmentWithSASProtocol { struct BobPropagatesConfirmationToOtherDevicesMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.BobPropagatesConfirmationToOtherDevices + let id: ConcreteProtocolMessageId = MessageId.bobPropagatesConfirmationToOtherDevices let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -275,7 +276,7 @@ extension TrustEstablishmentWithSASProtocol { struct BobSendsSeedMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.BobSendsSeed + let id: ConcreteProtocolMessageId = MessageId.bobSendsSeed let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -312,7 +313,7 @@ extension TrustEstablishmentWithSASProtocol { struct AliceSendsDecommitmentMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.AliceSendsDecommitment + let id: ConcreteProtocolMessageId = MessageId.aliceSendsDecommitment let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -339,7 +340,7 @@ extension TrustEstablishmentWithSASProtocol { struct DialogSasExchangeMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DialogSasExchange + let id: ConcreteProtocolMessageId = MessageId.dialogSasExchange let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -369,7 +370,7 @@ extension TrustEstablishmentWithSASProtocol { struct PropagateEnteredSasToOtherDevicesMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.PropagateEnteredSasToOtherDevices + let id: ConcreteProtocolMessageId = MessageId.propagateEnteredSasToOtherDevices let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -396,7 +397,7 @@ extension TrustEstablishmentWithSASProtocol { struct MutualTrustConfirmationMessageMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.MutualTrustConfirmation + let id: ConcreteProtocolMessageId = MessageId.mutualTrustConfirmation let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -418,7 +419,7 @@ extension TrustEstablishmentWithSASProtocol { struct DialogForMutualTrustConfirmationMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DialogForMutualTrustConfirmation + let id: ConcreteProtocolMessageId = MessageId.dialogForMutualTrustConfirmation let coreProtocolMessage: CoreProtocolMessage // Properties specific to this concrete protocol message @@ -455,7 +456,7 @@ extension TrustEstablishmentWithSASProtocol { struct DialogInformativeMessage: ConcreteProtocolMessage { - let id: ConcreteProtocolMessageId = MessageId.DialogInformative + let id: ConcreteProtocolMessageId = MessageId.dialogInformative let coreProtocolMessage: CoreProtocolMessage var encodedInputs: [ObvEncoded] { return [] } diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolStates.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolStates.swift index c89cda60..a9c90691 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolStates.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolStates.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -32,30 +32,30 @@ extension TrustEstablishmentWithSASProtocol { enum StateId: Int, ConcreteProtocolStateId { - case InitialState = 0 + case initialState = 0 // Alice's side - case WaitingForSeed = 1 + case waitingForSeed = 1 // Bob's side - case WaitingForConfirmation = 2 - case WaitingForDecommitment = 6 + case waitingForConfirmation = 2 + case waitingForDecommitment = 6 // On Alice's and Bob's sides - case WaitingForUserSAS = 7 - case ContactIdentityTrustedLegacy = 8 - case ContactSASChecked = 11 - case MutualTrustConfirmed = 9 - case Cancelled = 10 + case waitingForUserSAS = 7 + case contactIdentityTrustedLegacy = 8 + case contactSASChecked = 11 + case mutualTrustConfirmed = 9 + case cancelled = 10 var concreteProtocolStateType: ConcreteProtocolState.Type { switch self { - case .InitialState : return ConcreteProtocolInitialState.self - case .WaitingForSeed : return WaitingForSeedState.self - case .WaitingForConfirmation : return WaitingForConfirmationState.self - case .WaitingForDecommitment : return WaitingForDecommitmentState.self - case .WaitingForUserSAS : return WaitingForUserSASState.self - case .ContactIdentityTrustedLegacy : return ContactIdentityTrustedLegacyState.self - case .ContactSASChecked : return ContactSASCheckedState.self - case .MutualTrustConfirmed : return MutualTrustConfirmedState.self - case .Cancelled : return CancelledState.self + case .initialState : return ConcreteProtocolInitialState.self + case .waitingForSeed : return WaitingForSeedState.self + case .waitingForConfirmation : return WaitingForConfirmationState.self + case .waitingForDecommitment : return WaitingForDecommitmentState.self + case .waitingForUserSAS : return WaitingForUserSASState.self + case .contactIdentityTrustedLegacy : return ContactIdentityTrustedLegacyState.self + case .contactSASChecked : return ContactSASCheckedState.self + case .mutualTrustConfirmed : return MutualTrustConfirmedState.self + case .cancelled : return CancelledState.self } } @@ -64,7 +64,7 @@ extension TrustEstablishmentWithSASProtocol { struct WaitingForSeedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForSeed + let id: ConcreteProtocolStateId = StateId.waitingForSeed let contactIdentity: ObvCryptoIdentity // The contact identity we seek to trust let decommitment: Data @@ -91,7 +91,7 @@ extension TrustEstablishmentWithSASProtocol { struct WaitingForConfirmationState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForConfirmation + let id: ConcreteProtocolStateId = StateId.waitingForConfirmation let contactIdentity: ObvCryptoIdentity // The contact identity we seek to trust let contactIdentityCoreDetails: ObvIdentityCoreDetails @@ -132,7 +132,7 @@ extension TrustEstablishmentWithSASProtocol { struct WaitingForDecommitmentState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForDecommitment + let id: ConcreteProtocolStateId = StateId.waitingForDecommitment let contactIdentity: ObvCryptoIdentity // The contact identity we seek to trust let contactIdentityCoreDetails: ObvIdentityCoreDetails @@ -176,7 +176,7 @@ extension TrustEstablishmentWithSASProtocol { struct WaitingForUserSASState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.WaitingForUserSAS + let id: ConcreteProtocolStateId = StateId.waitingForUserSAS let contactIdentity: ObvCryptoIdentity // The contact identity we seek to trust let contactIdentityCoreDetails: ObvIdentityCoreDetails @@ -222,7 +222,7 @@ extension TrustEstablishmentWithSASProtocol { struct ContactIdentityTrustedLegacyState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.ContactIdentityTrustedLegacy + let id: ConcreteProtocolStateId = StateId.contactIdentityTrustedLegacy let contactIdentity: ObvCryptoIdentity let contactIdentityCoreDetails: ObvIdentityCoreDetails @@ -251,7 +251,7 @@ extension TrustEstablishmentWithSASProtocol { struct ContactSASCheckedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.ContactSASChecked + let id: ConcreteProtocolStateId = StateId.contactSASChecked let contactIdentity: ObvCryptoIdentity let contactIdentityCoreDetails: ObvIdentityCoreDetails @@ -285,7 +285,7 @@ extension TrustEstablishmentWithSASProtocol { struct MutualTrustConfirmedState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.MutualTrustConfirmed + let id: ConcreteProtocolStateId = StateId.mutualTrustConfirmed init(_: ObvEncoded) {} @@ -298,7 +298,7 @@ extension TrustEstablishmentWithSASProtocol { struct CancelledState: TypeConcreteProtocolState { - let id: ConcreteProtocolStateId = StateId.Cancelled + let id: ConcreteProtocolStateId = StateId.cancelled init(_: ObvEncoded) {} diff --git a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolSteps.swift b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolSteps.swift index 851afba2..c034cd42 100644 --- a/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolSteps.swift +++ b/Engine/ObvProtocolManager/ObvProtocolManager/Protocols/TrustEstablishmentWithSAS/TrustEstablishmentWithSASProtocolSteps.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -31,68 +31,68 @@ import OlvidUtils extension TrustEstablishmentWithSASProtocol { - enum StepId: Int, ConcreteProtocolStepId { + enum StepId: Int, ConcreteProtocolStepId, CaseIterable { // Alice's side - case SendCommitment = 0 - case StoreDecommitment = 1 - case ShowSasDialogAndSendDecommitment = 2 + case sendCommitment = 0 + case storeDecommitment = 1 + case showSasDialogAndSendDecommitment = 2 // Bob's side - case StoreAndPropagateCommitmentAndAskForConfirmation = 3 - case StoreCommitmentAndAskForConfirmation = 4 - case SendSeedAndPropagateConfirmation = 5 - case ReceiveConfirmationFromOtherDevice = 6 - case ShowSasDialog = 7 + case storeAndPropagateCommitmentAndAskForConfirmation = 3 + case storeCommitmentAndAskForConfirmation = 4 + case sendSeedAndPropagateConfirmation = 5 + case receiveConfirmationFromOtherDevice = 6 + case showSasDialog = 7 // Both sides - case CheckSas = 8 // 2020-03-02 Used to be CheckSasAndAddTrust - case CheckPropagatedSas = 9 // 2020-03-02 Used to be CheckPropagatedSasAndAddTrust - case NotifiedMutualTrustEstablishedLegacy = 10 // 2020-03-02 Used to be NotifiedMutualTrustEstablished - case AddTrust = 11 // 2020-03-02 New step + case checkSas = 8 // 2020-03-02 Used to be CheckSasAndAddTrust + case checkPropagatedSas = 9 // 2020-03-02 Used to be CheckPropagatedSasAndAddTrust + case notifiedMutualTrustEstablishedLegacy = 10 // 2020-03-02 Used to be NotifiedMutualTrustEstablished + case addTrust = 11 // 2020-03-02 New step func getConcreteProtocolStep(_ concreteProtocol: ConcreteCryptoProtocol, _ receivedMessage: ConcreteProtocolMessage) -> ConcreteProtocolStep? { switch self { // Alice's side - case .SendCommitment: + case .sendCommitment: let step = SendCommitmentStep(from: concreteProtocol, and: receivedMessage) return step - case .StoreDecommitment: + case .storeDecommitment: let step = StoreDecommitmentStep(from: concreteProtocol, and: receivedMessage) return step - case .ShowSasDialogAndSendDecommitment: + case .showSasDialogAndSendDecommitment: let step = ShowSasDialogAndSendDecommitmentStep(from: concreteProtocol, and: receivedMessage) return step // Bob's side - case .StoreAndPropagateCommitmentAndAskForConfirmation: + case .storeAndPropagateCommitmentAndAskForConfirmation: let step = StoreAndPropagateCommitmentAndAskForConfirmationStep(from: concreteProtocol, and: receivedMessage) return step - case .StoreCommitmentAndAskForConfirmation: + case .storeCommitmentAndAskForConfirmation: let step = StoreCommitmentAndAskForConfirmationStep(from: concreteProtocol, and: receivedMessage) return step - case .SendSeedAndPropagateConfirmation: + case .sendSeedAndPropagateConfirmation: let step = SendSeedAndPropagateConfirmationStep(from: concreteProtocol, and: receivedMessage) return step - case .ReceiveConfirmationFromOtherDevice: + case .receiveConfirmationFromOtherDevice: let step = ReceiveConfirmationFromOtherDeviceStep(from: concreteProtocol, and: receivedMessage) return step - case .ShowSasDialog: + case .showSasDialog: let step = ShowSasDialogStep(from: concreteProtocol, and: receivedMessage) return step // Both Sides - case .CheckSas: + case .checkSas: let step = CheckSasStep(from: concreteProtocol, and: receivedMessage) return step - case .CheckPropagatedSas: + case .checkPropagatedSas: let step = CheckPropagatedSasStep(from: concreteProtocol, and: receivedMessage) return step - case .NotifiedMutualTrustEstablishedLegacy: + case .notifiedMutualTrustEstablishedLegacy: let step = NotifiedMutualTrustEstablishedLegacyStep(from: concreteProtocol, and: receivedMessage) return step - case .AddTrust: + case .addTrust: let step = AddTrustStep(from: concreteProtocol, and: receivedMessage) return step } @@ -128,9 +128,10 @@ extension TrustEstablishmentWithSASProtocol { let seedAliceForSas = prng.genSeed() let commitmentScheme = ObvCryptoSuite.sharedInstance.commitmentScheme() - let (commitment, decommitment) = commitmentScheme.commit(onTag: ownedIdentity.getIdentity(), - andValue: seedAliceForSas.raw, - with: prng) + let (commitment, decommitment) = commitmentScheme.commit( + onTag: ownedIdentity.getIdentity(), + andValue: seedAliceForSas.raw, + with: prng) // Propagate the invitation, the seed, and the decommitment to our other owned devices @@ -151,7 +152,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not propagate invite to other devices.", log: log, type: .fault) } @@ -177,7 +178,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Send a dialog to Alice to notify her that the invitation was sent @@ -190,7 +191,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -236,7 +237,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -286,7 +287,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Bob accepted the invitation. We have all the information we need to compute and show a SAS dialog to Alice. @@ -309,7 +310,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -382,7 +383,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Propagate Alice's invitation (with the commitment) to the other owned devices of Bob @@ -401,7 +402,7 @@ extension TrustEstablishmentWithSASProtocol { contactDeviceUids: contactDeviceUids, commitment: commitment) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } } @@ -449,7 +450,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -515,7 +516,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not propagate accept/reject invitation to other devices.", log: log, type: .fault) } @@ -536,7 +537,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } return CancelledState() @@ -555,7 +556,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Send a seed for the SAS to Alice @@ -576,15 +577,16 @@ extension TrustEstablishmentWithSASProtocol { do { let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: contactIdentity, remoteDeviceUids: contactDeviceUids, fromOwnedIdentity: ownedIdentity)) - let concreteProtocolMessage = BobSendsSeedMessage(coreProtocolMessage: coreMessage, - seedBobForSas: seedBobForSas, - contactIdentityCoreDetails: ownedIdentityCoreDetails, - contactDeviceUids: [UID](ownedDeviceUids)) + let concreteProtocolMessage = BobSendsSeedMessage( + coreProtocolMessage: coreMessage, + seedBobForSas: seedBobForSas, + contactIdentityCoreDetails: ownedIdentityCoreDetails, + contactDeviceUids: [UID](ownedDeviceUids)) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -639,7 +641,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } return CancelledState() @@ -658,7 +660,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Compute the seed for the SAS (that was sent to Alice by the other device) @@ -748,7 +750,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -824,7 +826,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // We go back to the WaitingForUserSAS state (only the number of bad entered sas changes) @@ -857,7 +859,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelProtocolMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } catch { os_log("Could not propagate sas to other devices.", log: log, type: .fault) } @@ -873,7 +875,7 @@ extension TrustEstablishmentWithSASProtocol { let coreMessage = getCoreMessage(for: .UserInterface(uuid: dialogUuid, ownedIdentity: ownedIdentity, dialogType: dialogType)) let concreteProtocolMessage = DialogInformativeMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // 2020-03-02 : We used to add the contact identity to the contact database (or simply add a new trust origin if the contact already exists) and add all the contact device uids @@ -885,7 +887,7 @@ extension TrustEstablishmentWithSASProtocol { let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: contactIdentity, remoteDeviceUids: contactDeviceUids, fromOwnedIdentity: ownedIdentity)) let concreteProtocolMessage = MutualTrustConfirmationMessageMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -947,7 +949,7 @@ extension TrustEstablishmentWithSASProtocol { assertionFailure() throw Self.makeError(message: "Could not generate ObvChannelDialogMessageToSend") } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } return CancelledState() } @@ -964,7 +966,7 @@ extension TrustEstablishmentWithSASProtocol { let coreMessage = getCoreMessage(for: .UserInterface(uuid: dialogUuid, ownedIdentity: ownedIdentity, dialogType: dialogType)) let concreteProtocolMessage = DialogInformativeMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // 2020-03-02 : We used to add the contact identity to the contact database (or simply add a new trust origin if the contact already exists) and add all the contact device uids @@ -976,7 +978,7 @@ extension TrustEstablishmentWithSASProtocol { let coreMessage = getCoreMessage(for: .AsymmetricChannel(to: contactIdentity, remoteDeviceUids: contactDeviceUids, fromOwnedIdentity: ownedIdentity)) let concreteProtocolMessage = MutualTrustConfirmationMessageMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteProtocolMessage.generateObvChannelProtocolMessageToSend(with: prng) else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -1016,7 +1018,7 @@ extension TrustEstablishmentWithSASProtocol { let coreMessage = getCoreMessage(for: channelType) let concreteProtocolMessage = DialogInformativeMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state @@ -1056,13 +1058,13 @@ extension TrustEstablishmentWithSASProtocol { let trustOrigin = TrustOrigin.direct(timestamp: Date()) if (try? identityDelegate.isIdentity(contactIdentity, aContactIdentityOfTheOwnedIdentity: ownedIdentity, within: obvContext)) == true { - try identityDelegate.addTrustOriginIfTrustWouldBeIncreased(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) + try identityDelegate.addTrustOriginIfTrustWouldBeIncreasedAndSetContactAsOneToOne(trustOrigin, toContactIdentity: contactIdentity, ofOwnedIdentity: ownedIdentity, within: obvContext) } else { try identityDelegate.addContactIdentity(contactIdentity, with: contactIdentityCoreDetails, andTrustOrigin: trustOrigin, forOwnedIdentity: ownedIdentity, setIsOneToOneTo: true, within: obvContext) } try contactDeviceUids.forEach { (contactDeviceUid) in - try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, within: obvContext) + try identityDelegate.addDeviceForContactIdentity(contactIdentity, withUid: contactDeviceUid, ofOwnedIdentity: ownedIdentity, createdDuringChannelCreation: false, within: obvContext) } } catch { os_log("Could not add the contact identity to the contact identities database, or could not add a device uid to this contact", log: log, type: .fault) @@ -1078,7 +1080,7 @@ extension TrustEstablishmentWithSASProtocol { let coreMessage = getCoreMessage(for: channelType) let concreteProtocolMessage = DialogInformativeMessage(coreProtocolMessage: coreMessage) guard let messageToSend = concreteProtocolMessage.generateObvChannelDialogMessageToSend() else { return nil } - _ = try channelDelegate.post(messageToSend, randomizedWith: prng, within: obvContext) + _ = try channelDelegate.postChannelMessage(messageToSend, randomizedWith: prng, within: obvContext) } // Return the new state diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvS3Method/Methods/Fetch/ObvS3DownloadAttachmentChunkMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvS3Method/Methods/Fetch/ObvS3DownloadAttachmentChunkMethod.swift index a1cbd5d7..1c5a5ace 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvS3Method/Methods/Fetch/ObvS3DownloadAttachmentChunkMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvS3Method/Methods/Fetch/ObvS3DownloadAttachmentChunkMethod.swift @@ -30,7 +30,7 @@ public final class ObvS3DownloadAttachmentChunkMethod: ObvS3DownloadMethod { static let log = OSLog(subsystem: "io.olvid.server.interface.ObvS3DownloadAttachmentChunkMethod", category: "ObvServerInterface") public var signedURL: URL - private let attachmentId: AttachmentIdentifier + private let attachmentId: ObvAttachmentIdentifier private let chunkNumber: Int public let isActiveOwnedIdentityRequired = true public let flowId: FlowIdentifier @@ -40,7 +40,7 @@ public final class ObvS3DownloadAttachmentChunkMethod: ObvS3DownloadMethod { weak public var identityDelegate: ObvIdentityDelegate? - public init(attachmentId: AttachmentIdentifier, chunkNumber: Int, signedURL: URL, flowId: FlowIdentifier) { + public init(attachmentId: ObvAttachmentIdentifier, chunkNumber: Int, signedURL: URL, flowId: FlowIdentifier) { self.flowId = flowId self.signedURL = signedURL self.attachmentId = attachmentId diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvS3Method/Methods/Send/ObvS3UploadAttachmentChunkMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvS3Method/Methods/Send/ObvS3UploadAttachmentChunkMethod.swift index 1590ce5c..0c62d691 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvS3Method/Methods/Send/ObvS3UploadAttachmentChunkMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvS3Method/Methods/Send/ObvS3UploadAttachmentChunkMethod.swift @@ -35,7 +35,7 @@ public final class ObvS3UploadAttachmentChunkMethod: ObvS3UploadMethod { public let countOfBytesClientExpectsToReceive = 100 private let typicalHeaderCountOfBytes = 500 public let isActiveOwnedIdentityRequired = true - public let attachmentId: AttachmentIdentifier + public let attachmentId: ObvAttachmentIdentifier public let flowId: FlowIdentifier public var ownedIdentity: ObvCryptoIdentity { return attachmentId.messageId.ownedCryptoIdentity @@ -43,7 +43,7 @@ public final class ObvS3UploadAttachmentChunkMethod: ObvS3UploadMethod { weak public var identityDelegate: ObvIdentityDelegate? - public init(attachmentId: AttachmentIdentifier, fileURL: URL, fileSize: Int, chunkNumber: Int, signedURL: URL, flowId: FlowIdentifier) { + public init(attachmentId: ObvAttachmentIdentifier, fileURL: URL, fileSize: Int, chunkNumber: Int, signedURL: URL, flowId: FlowIdentifier) { self.flowId = flowId self.attachmentId = attachmentId self.signedURL = signedURL diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerInterfaceConstants.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerInterfaceConstants.swift index 4f79e0d0..275cb3c9 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerInterfaceConstants.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerInterfaceConstants.swift @@ -21,6 +21,6 @@ import Foundation public struct ObvServerInterfaceConstants { - public static let serverAPIVersion = 13 + public static let serverAPIVersion = 15 } diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerDeleteMessageAndAttachmentsMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerDeleteMessageAndAttachmentsMethod.swift index 2419ad58..646f82c4 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerDeleteMessageAndAttachmentsMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerDeleteMessageAndAttachmentsMethod.swift @@ -33,7 +33,7 @@ public final class ObvServerDeleteMessageAndAttachmentsMethod: ObvServerDataMeth public var serverURL: URL { return messageId.ownedCryptoIdentity.serverURL } private let token: Data - private let messageId: MessageIdentifier + private let messageId: ObvMessageIdentifier private let deviceUid: UID public let flowId: FlowIdentifier public let isActiveOwnedIdentityRequired = false @@ -44,7 +44,7 @@ public final class ObvServerDeleteMessageAndAttachmentsMethod: ObvServerDataMeth weak public var identityDelegate: ObvIdentityDelegate? = nil - public init(token: Data, messageId: MessageIdentifier, deviceUid: UID, flowId: FlowIdentifier) { + public init(token: Data, messageId: ObvMessageIdentifier, deviceUid: UID, flowId: FlowIdentifier) { self.flowId = flowId self.token = token self.messageId = messageId diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerDownloadMessageExtendedPayloadMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerDownloadMessageExtendedPayloadMethod.swift index 51189242..66516c16 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerDownloadMessageExtendedPayloadMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerDownloadMessageExtendedPayloadMethod.swift @@ -36,14 +36,14 @@ public final class ObvServerDownloadMessageExtendedPayloadMethod: ObvServerDataM public var ownedIdentity: ObvCryptoIdentity { messageId.ownedCryptoIdentity } - private let messageId: MessageIdentifier + private let messageId: ObvMessageIdentifier private let token: Data public let flowId: FlowIdentifier public let isActiveOwnedIdentityRequired = true weak public var identityDelegate: ObvIdentityDelegate? = nil - public init(messageId: MessageIdentifier, token: Data, flowId: FlowIdentifier) { + public init(messageId: ObvMessageIdentifier, token: Data, flowId: FlowIdentifier) { self.messageId = messageId self.flowId = flowId self.token = token diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerGetTokenMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerGetTokenMethod.swift index 867e9748..2ae33cdd 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerGetTokenMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerGetTokenMethod.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -49,70 +49,99 @@ public final class ObvServerGetTokenMethod: ObvServerDataMethod { self.nonce = nonce } - public enum PossibleReturnStatus: UInt8 { + private enum ServerReturnStatus: UInt8 { case ok = 0x00 case serverDidNotFindChallengeCorrespondingToResponse = 0x04 case generalError = 0xff } + public enum PossibleReturnStatus { + case ok(token: Data, serverNonce: Data, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?) + case serverDidNotFindChallengeCorrespondingToResponse + case generalError + public var debugDescription: String { + switch self { + case .ok: + return "ok" + case .serverDidNotFindChallengeCorrespondingToResponse: + return "serverDidNotFindChallengeCorrespondingToResponse" + case .generalError: + return "generalError" + } + } + } + lazy public var dataToSend: Data? = { return [toIdentity.getIdentity(), response, nonce].obvEncode().rawData }() - public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> (status: PossibleReturnStatus, (token: Data, serverNonce: Data, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?)?)? { + public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> Result { guard let (rawServerReturnedStatus, listOfReturnedDatas) = genericParseObvServerResponse(responseData: responseData, using: log) else { - os_log("Could not parse the server response", log: log, type: .error) - return nil + assertionFailure() + let error = ObvServerMethodError.couldNotParseServerResponse + os_log("%{public}@", log: log, type: .error, error.localizedDescription) + return .failure(error) } - guard let serverReturnedStatus = PossibleReturnStatus(rawValue: rawServerReturnedStatus) else { + guard let serverReturnedStatus = ServerReturnStatus(rawValue: rawServerReturnedStatus) else { + assertionFailure() os_log("The returned server status is invalid", log: log, type: .error) - return nil + let error = Self.makeError(message: "The returned server status is invalid") + return .failure(error) } switch serverReturnedStatus { case .ok: guard listOfReturnedDatas.count == 5 else { + assertionFailure() os_log("The server did not return the expected number of elements", log: log, type: .error) - return nil + let error = Self.makeError(message: "The server did not return the expected number of elements") + return .failure(error) } guard let token = Data(listOfReturnedDatas[0]) else { + assertionFailure() os_log("We could not decode the token returned by the server", log: log, type: .error) - return nil + let error = Self.makeError(message: "We could not decode the token returned by the server") + return .failure(error) } guard let serverNonce = Data(listOfReturnedDatas[1]) else { os_log("We could not decode the nonce returned by the server", log: log, type: .error) - return nil + let error = Self.makeError(message: "We could not decode the nonce returned by the server") + return .failure(error) } guard let rawApiKeyStatus = Int(listOfReturnedDatas[2]) else { os_log("We could not recover the raw api key status", log: log, type: .error) - return nil + let error = Self.makeError(message: "We could not recover the raw api key status") + return .failure(error) } guard let apiKeyStatus = APIKeyStatus(rawValue: rawApiKeyStatus) else { os_log("We could not cast the raw api key status", log: log, type: .error) - return nil + let error = Self.makeError(message: "We could not cast the raw api key status") + return .failure(error) } guard let rawApiPermissions = Int(listOfReturnedDatas[3]) else { os_log("We could not recover the raw api permissions", log: log, type: .error) - return nil + let error = Self.makeError(message: "We could not recover the raw api permissions") + return .failure(error) } let apiPermissions = APIPermissions(rawValue: rawApiPermissions) guard let apiKeyExpirationInMilliseconds = Int(listOfReturnedDatas[4]) else { os_log("We could not recover the API Key expiration", log: log, type: .error) - return nil + let error = Self.makeError(message: "We could not recover the API Key expiration") + return .failure(error) } let apiKeyExpiration = apiKeyExpirationInMilliseconds > 0 ? Date(timeIntervalSince1970: Double(apiKeyExpirationInMilliseconds)/1000.0) : nil os_log("We received a proper token, server nonce, API Key Status/Permissions/Expiration", log: log, type: .debug) - return (serverReturnedStatus, (token, serverNonce, apiKeyStatus, apiPermissions, apiKeyExpiration)) + return .success(.ok(token: token, serverNonce: serverNonce, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpiration)) case .serverDidNotFindChallengeCorrespondingToResponse: - os_log("The server could not find the challenge corresponding to the respond we just sent", log: log, type: .error) - return (serverReturnedStatus, nil) + os_log("The server could not find the challenge corresponding to the response we just sent", log: log, type: .error) + return .success(.serverDidNotFindChallengeCorrespondingToResponse) case .generalError: os_log("The server reported a general error", log: log, type: .error) - return (serverReturnedStatus, nil) + return .success(.generalError) } } diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerRegisterPushNotificationMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerRegisterPushNotificationMethod.swift index dd5dc006..2f3ef591 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerRegisterPushNotificationMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerRegisterPushNotificationMethod.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,60 +30,77 @@ public final class ObvServerRegisterRemotePushNotificationMethod: ObvServerDataM static let log = OSLog(subsystem: "io.olvid.server.interface.ObvServerRegisterRemotePushNotificationMethod", category: "ObvServerInterface") public let pathComponent = "/registerPushNotification" - + public var serverURL: URL { return toIdentity.serverURL } - public let toIdentity: ObvCryptoIdentity - public let ownedIdentity: ObvCryptoIdentity - private let token: Data - private let deviceUid: UID + private let pushNotification: ObvPushNotificationType + private let sessionToken: Data private let remoteNotificationByteIdentifierForServer: Data // One byte - private let deviceTokensAndmaskingUID: (pushToken: Data, voipToken: Data?, maskingUID: UID)? - private let parameters: ObvPushNotificationParameters - public let isActiveOwnedIdentityRequired = false public let flowId: FlowIdentifier - private let keycloakPushTopics: [Data] + public let isActiveOwnedIdentityRequired = false + let prng: PRNGService weak public var identityDelegate: ObvIdentityDelegate? = nil + - public init(ownedIdentity: ObvCryptoIdentity, token: Data, deviceUid: UID, remoteNotificationByteIdentifierForServer: Data, deviceTokensAndmaskingUID: (pushToken: Data, voipToken: Data?, maskingUID: UID)?, parameters: ObvPushNotificationParameters, keycloakPushTopics: Set, flowId: FlowIdentifier) { - self.flowId = flowId - self.ownedIdentity = ownedIdentity - self.toIdentity = ownedIdentity - self.token = token - self.deviceUid = deviceUid + public init(pushNotification: ObvPushNotificationType, sessionToken: Data, remoteNotificationByteIdentifierForServer: Data, flowId: FlowIdentifier, prng: PRNGService) { + self.pushNotification = pushNotification + self.sessionToken = sessionToken self.remoteNotificationByteIdentifierForServer = remoteNotificationByteIdentifierForServer - self.deviceTokensAndmaskingUID = deviceTokensAndmaskingUID - self.parameters = parameters - self.keycloakPushTopics = keycloakPushTopics.compactMap({ $0.data(using: .utf8) }) + self.flowId = flowId + self.toIdentity = pushNotification.ownedCryptoId + self.ownedIdentity = pushNotification.ownedCryptoId + self.prng = prng } - - public enum PossibleReturnStatus: UInt8 { + + + public enum PossibleReturnStatus: UInt8, CustomDebugStringConvertible { case ok = 0x00 case invalidSession = 0x04 case anotherDeviceIsAlreadyRegistered = 0x0a + case deviceToReplaceIsNotRegistered = 0x0b case generalError = 0xff + + public var debugDescription: String { + switch self { + case .ok: return "ok" + case .invalidSession: return "invalidSession" + case .anotherDeviceIsAlreadyRegistered: return "anotherDeviceIsAlreadyRegistered" + case .deviceToReplaceIsNotRegistered: return "deviceToReplaceIsNotRegistered" + case .generalError: return "generalError" + } + } + } + lazy public var dataToSend: Data? = { - let listOfEncodedKeycloakPushTopics = keycloakPushTopics.map({ $0.obvEncode() }) - let encodedList: ObvEncoded - encodedList = [toIdentity.getIdentity().obvEncode(), - token.obvEncode(), - deviceUid.obvEncode(), - remoteNotificationByteIdentifierForServer.obvEncode(), - extraInfo, - parameters.kickOtherDevices.obvEncode(), - parameters.useMultiDevice.obvEncode(), - listOfEncodedKeycloakPushTopics.obvEncode()].obvEncode() + let listOfEncodedKeycloakPushTopics = pushNotification.commonParameters.keycloakPushTopics.map({ $0.obvEncode() }) + var listToEncode = [ + toIdentity.getIdentity().obvEncode(), // 0 + sessionToken.obvEncode(), // 1 + pushNotification.currentDeviceUID.obvEncode(), // 2 + pushNotification.remoteNotificationByteIdentifierForServer(from: remoteNotificationByteIdentifierForServer).obvEncode(), // 3 + extraInfo, // 4 + pushNotification.optionalParameter.reactivateCurrentDevice.obvEncode(), // 5 + listOfEncodedKeycloakPushTopics.obvEncode(), // 6 + DeviceNameUtils.encrypt(deviceName: pushNotification.commonParameters.deviceNameForFirstRegistration, for: ownedIdentity, using: prng).raw.obvEncode(), // 7 + ] + if pushNotification.optionalParameter.reactivateCurrentDevice, let replacedDeviceUid = pushNotification.optionalParameter.replacedDeviceUid { + listToEncode.append(replacedDeviceUid.obvEncode()) // 8 + } + let encodedList: ObvEncoded = listToEncode.obvEncode() return encodedList.rawData }() + lazy private var extraInfo: ObvEncoded = { - if let (pushToken, voipToken, maskingUID) = self.deviceTokensAndmaskingUID { - if let _voipToken = voipToken { - return [pushToken.obvEncode(), maskingUID.obvEncode(), _voipToken.obvEncode()].obvEncode() + if let remoteTypeParameters = pushNotification.remoteTypeParameters { + let pushToken = remoteTypeParameters.pushToken + let maskingUID = remoteTypeParameters.maskingUID + if let voipToken = remoteTypeParameters.voipToken { + return [pushToken.obvEncode(), maskingUID.obvEncode(), voipToken.obvEncode()].obvEncode() } else { return [pushToken.obvEncode(), maskingUID.obvEncode()].obvEncode() } @@ -92,6 +109,7 @@ public final class ObvServerRegisterRemotePushNotificationMethod: ObvServerDataM } }() + public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> PossibleReturnStatus? { guard let (rawServerReturnedStatus, _) = genericParseObvServerResponse(responseData: responseData, using: log) else { diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerRequestChallengeMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerRequestChallengeMethod.swift index 3a901737..583cae9f 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerRequestChallengeMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/ObvServerRequestChallengeMethod.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -35,73 +35,77 @@ public final class ObvServerRequestChallengeMethod: ObvServerDataMethod { public let ownedIdentity: ObvCryptoIdentity public let toIdentity: ObvCryptoIdentity private let nonce: Data - private let apiKey: UUID public let flowId: FlowIdentifier public let isActiveOwnedIdentityRequired = false weak public var identityDelegate: ObvIdentityDelegate? = nil - public init(ownedIdentity: ObvCryptoIdentity, apiKey: UUID, nonce: Data, toIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { + public init(ownedIdentity: ObvCryptoIdentity, nonce: Data, toIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { self.flowId = flowId self.ownedIdentity = ownedIdentity self.toIdentity = toIdentity self.nonce = nonce - self.apiKey = apiKey } - public enum PossibleReturnStatus: UInt8 { + + private enum ServerReturnStatus: UInt8 { case ok = 0x00 - case unkownApiKey = 0x07 - case apiKeyLicensesExhausted = 0x08 case generalError = 0xff } + + public enum PossibleReturnStatus { + case ok(challenge: Data, serverNonce: Data) + case generalError + } + lazy public var dataToSend: Data? = { - return [toIdentity.getIdentity(), nonce, apiKey].obvEncode().rawData + return [toIdentity.getIdentity(), nonce].obvEncode().rawData }() - public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> (status: PossibleReturnStatus, (challenge: Data, serverNonce: Data)?)? { + public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> Result { guard let (rawServerReturnedStatus, listOfReturnedDatas) = genericParseObvServerResponse(responseData: responseData, using: log) else { + assertionFailure() os_log("Could not parse the server response", log: log, type: .error) - return nil + let error = Self.makeError(message: "Could not parse the server response") + return .failure(error) } - guard let serverReturnedStatus = PossibleReturnStatus(rawValue: rawServerReturnedStatus) else { + guard let serverReturnedStatus = ServerReturnStatus(rawValue: rawServerReturnedStatus) else { + assertionFailure() os_log("The returned server status is invalid", log: log, type: .error) - return nil + let error = Self.makeError(message: "The returned server status is invalid") + return .failure(error) } switch serverReturnedStatus { case .ok: guard listOfReturnedDatas.count == 2 else { + assertionFailure() os_log("The server did not return the expected number of elements", log: log, type: .error) - return nil + let error = Self.makeError(message: "The server did not return the expected number of elements") + return .failure(error) } guard let challenge = Data(listOfReturnedDatas[0]) else { + assertionFailure() os_log("We could not decode the challenge returned by the server", log: log, type: .error) - return nil + let error = Self.makeError(message: "We could not decode the challenge returned by the server") + return .failure(error) } guard let serverNonce = Data(listOfReturnedDatas[1]) else { os_log("We could not decode the nonce returned by the server", log: log, type: .error) - return nil + let error = Self.makeError(message: "We could not decode the nonce returned by the server") + return .failure(error) } os_log("We received a proper challenge and server nonce", log: log, type: .debug) - return (serverReturnedStatus, (challenge, serverNonce)) - - case .unkownApiKey: - os_log("The server returned an Unknown API Key error", log: log, type: .error) - return (serverReturnedStatus, nil) - - case .apiKeyLicensesExhausted: - os_log("The server returned an API Key Licenses Exhausted error", log: log, type: .error) - return (serverReturnedStatus, nil) + return .success(.ok(challenge: challenge, serverNonce: serverNonce)) case .generalError: os_log("The server reported a general error", log: log, type: .error) - return (serverReturnedStatus, nil) + return .success(.generalError) } } diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/QueryApiKeyStatusServerMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/QueryApiKeyStatusServerMethod.swift index ef6a6ea9..07f0d10c 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/QueryApiKeyStatusServerMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/QueryApiKeyStatusServerMethod.swift @@ -45,58 +45,66 @@ public final class QueryApiKeyStatusServerMethod: ObvServerDataMethod { self.flowId = flowId } - public enum PossibleReturnStatus: UInt8 { + private enum ServerReturnStatus: UInt8 { case ok = 0x00 case generalError = 0xff } + + public enum PossibleReturnStatus { + case ok(apiKeyElements: APIKeyElements) + case generalError + } lazy public var dataToSend: Data? = { return [ownedIdentity.getIdentity(), apiKey].obvEncode().rawData }() - - public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> (status: PossibleReturnStatus, (apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?)?)? { + + public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> Result { guard let (rawServerReturnedStatus, listOfReturnedDatas) = genericParseObvServerResponse(responseData: responseData, using: log) else { - os_log("Could not parse the server response", log: log, type: .error) - return nil + let error = ObvServerMethodError.couldNotParseServerResponse + os_log("%{public}@", log: log, type: .error, error.localizedDescription) + return .failure(error) } - guard let serverReturnedStatus = PossibleReturnStatus(rawValue: rawServerReturnedStatus) else { - os_log("The returned server status is invalid", log: log, type: .error) - return nil + guard let serverReturnedStatus = ServerReturnStatus(rawValue: rawServerReturnedStatus) else { + let error = ObvServerMethodError.returnedServerStatusIsInvalid + os_log("%{public}@", log: log, type: .error, error.localizedDescription) + return .failure(error) } switch serverReturnedStatus { case .ok: guard listOfReturnedDatas.count == 3 else { - os_log("The server did not return the expected number of elements", log: log, type: .error) - return nil - } - guard let rawApiKeyStatus = Int(listOfReturnedDatas[0]) else { - os_log("We could not recover the raw api key status", log: log, type: .error) - return nil + let error = ObvServerMethodError.serverDidNotReturnTheExpectedNumberOfElements + os_log("%{public}@", log: log, type: .error, error.localizedDescription) + return .failure(error) } - guard let apiKeyStatus = APIKeyStatus(rawValue: rawApiKeyStatus) else { - os_log("We could not cast the raw api key status", log: log, type: .error) - return nil + guard let rawApiKeyStatus = Int(listOfReturnedDatas[0]), let apiKeyStatus = APIKeyStatus(rawValue: rawApiKeyStatus) else { + let error = ObvServerMethodError.couldNotDecodeElementReturnByServer(elementName: "rawApiKeyStatus") + os_log("%{public}@", log: log, type: .error, error.localizedDescription) + return .failure(error) } guard let rawApiPermissions = Int(listOfReturnedDatas[1]) else { - os_log("We could not recover the raw api permissions", log: log, type: .error) - return nil + let error = ObvServerMethodError.couldNotDecodeElementReturnByServer(elementName: "rawApiPermissions") + os_log("%{public}@", log: log, type: .error, error.localizedDescription) + return .failure(error) } let apiPermissions = APIPermissions(rawValue: rawApiPermissions) guard let apiKeyExpirationInMilliseconds = Int(listOfReturnedDatas[2]) else { - os_log("We could not recover the API Key expiration", log: log, type: .error) - return nil + let error = ObvServerMethodError.couldNotDecodeElementReturnByServer(elementName: "apiKeyExpirationInMilliseconds") + os_log("%{public}@", log: log, type: .error, error.localizedDescription) + return .failure(error) } let apiKeyExpiration = apiKeyExpirationInMilliseconds > 0 ? Date(timeIntervalSince1970: Double(apiKeyExpirationInMilliseconds)/1000.0) : nil os_log("We received a proper token, server nonce, API Key Status/Permissions/Expiration", log: log, type: .debug) - return (serverReturnedStatus, (apiKeyStatus, apiPermissions, apiKeyExpiration)) + let apiKeyElements = APIKeyElements(status: apiKeyStatus, permissions: apiPermissions, expirationDate: apiKeyExpiration) + return .success(.ok(apiKeyElements: apiKeyElements)) case .generalError: os_log("The server reported a general error", log: log, type: .error) - return (serverReturnedStatus, nil) + return .success(.generalError) } } diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/RefreshInboxAttachmentSignedUrlServerMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/RefreshInboxAttachmentSignedUrlServerMethod.swift index 24292f9f..238fd7d2 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/RefreshInboxAttachmentSignedUrlServerMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/RefreshInboxAttachmentSignedUrlServerMethod.swift @@ -34,7 +34,7 @@ public final class RefreshInboxAttachmentSignedUrlServerMethod: ObvServerDataMet public var serverURL: URL { return identity.serverURL } public let identity: ObvCryptoIdentity - public let attachmentId: AttachmentIdentifier + public let attachmentId: ObvAttachmentIdentifier public let expectedChunkCount: Int public let flowId: FlowIdentifier public let isActiveOwnedIdentityRequired = true @@ -45,7 +45,7 @@ public final class RefreshInboxAttachmentSignedUrlServerMethod: ObvServerDataMet weak public var identityDelegate: ObvIdentityDelegate? = nil - public init(identity: ObvCryptoIdentity, attachmentId: AttachmentIdentifier, expectedChunkCount: Int, flowId: FlowIdentifier) { + public init(identity: ObvCryptoIdentity, attachmentId: ObvAttachmentIdentifier, expectedChunkCount: Int, flowId: FlowIdentifier) { self.flowId = flowId self.identity = identity self.attachmentId = attachmentId diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/VerifyReceiptMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/VerifyReceiptServerMethod.swift similarity index 63% rename from Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/VerifyReceiptMethod.swift rename to Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/VerifyReceiptServerMethod.swift index 72724cb4..d541d64c 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/VerifyReceiptMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Fetch/VerifyReceiptServerMethod.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,7 +25,7 @@ import ObvTypes import OlvidUtils -public final class VerifyReceiptMethod: ObvServerDataMethod { +public final class VerifyReceiptServerMethod: ObvServerDataMethod { static let log = OSLog(subsystem: "io.olvid.server.interface.VerifyReceiptMethod", category: "ObvServerInterface") @@ -35,45 +35,53 @@ public final class VerifyReceiptMethod: ObvServerDataMethod { public let ownedIdentity: ObvCryptoIdentity private let token: Data - private let receiptData: String - private let transactionIdentifier: String + private let signedAppStoreTransactionAsJWS: String public let flowId: FlowIdentifier public let isActiveOwnedIdentityRequired = true - private let iOSStoreId = Data([0x00]) + private let iOSStoreId = Data([0x02]) // StoreKit1 used 0x00, StoreKit2 uses 0x02. weak public var identityDelegate: ObvIdentityDelegate? = nil - public init(ownedIdentity: ObvCryptoIdentity, token: Data, receiptData: String, transactionIdentifier: String, flowId: FlowIdentifier) { + public init(ownedIdentity: ObvCryptoIdentity, token: Data, signedAppStoreTransactionAsJWS: String, identityDelegate: ObvIdentityDelegate, flowId: FlowIdentifier) { self.flowId = flowId self.ownedIdentity = ownedIdentity self.token = token - self.receiptData = receiptData - self.transactionIdentifier = transactionIdentifier + self.signedAppStoreTransactionAsJWS = signedAppStoreTransactionAsJWS + self.identityDelegate = identityDelegate } - public enum PossibleReturnStatus: UInt8 { + private enum ServerReturnStatus: UInt8 { case ok = 0x00 case invalidSession = 0x04 case receiptIsExpired = 0x10 case generalError = 0xff } + + public enum PossibleReturnStatus { + case ok(apiKey: UUID) + case invalidSession + case receiptIsExpired + case generalError + } lazy public var dataToSend: Data? = { - return [ownedIdentity.getIdentity(), token, iOSStoreId, receiptData].obvEncode().rawData + return [ownedIdentity.getIdentity(), token, iOSStoreId, signedAppStoreTransactionAsJWS].obvEncode().rawData }() - public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> (status: PossibleReturnStatus, apiKey: UUID?)? { + public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> Result { os_log("💰 Parsing the server response...", log: log, type: .info) guard let (rawServerReturnedStatus, listOfReturnedDatas) = genericParseObvServerResponse(responseData: responseData, using: log) else { os_log("💰 Could not parse the server response", log: log, type: .error) - return nil + let error = Self.makeError(message: "💰 Could not parse the server response") + return .failure(error) } - guard let serverReturnedStatus = PossibleReturnStatus(rawValue: rawServerReturnedStatus) else { + guard let serverReturnedStatus = ServerReturnStatus(rawValue: rawServerReturnedStatus) else { os_log("💰 The returned server status is invalid", log: log, type: .error) - return nil + let error = Self.makeError(message: "💰 The returned server status is invalid") + return .failure(error) } switch serverReturnedStatus { @@ -82,32 +90,35 @@ public final class VerifyReceiptMethod: ObvServerDataMethod { guard listOfReturnedDatas.count == 1 else { os_log("💰 The server did not return the expected number of elements", log: log, type: .error) - return nil + let error = Self.makeError(message: "💰 The server did not return the expected number of elements") + return .failure(error) } guard let rawApiKey = String(listOfReturnedDatas[0]) else { os_log("💰 We could not recover the raw api key", log: log, type: .error) - return nil + let error = Self.makeError(message: "💰 We could not recover the raw api key") + return .failure(error) } guard let apiKey = UUID(uuidString: rawApiKey) else { os_log("💰 We could not cast the raw api key", log: log, type: .error) - return nil + let error = Self.makeError(message: "💰 We could not cast the raw api key") + return .failure(error) } - return (serverReturnedStatus, apiKey) + return .success(.ok(apiKey: apiKey)) case .invalidSession: os_log("The server reported that the session is invalid", log: log, type: .error) - return (serverReturnedStatus, nil) + return .success(.invalidSession) case .receiptIsExpired: os_log("💰 The server reported that the receipt is expired", log: log, type: .error) - return (serverReturnedStatus, nil) + return .success(.receiptIsExpired) case .generalError: os_log("💰 The server reported a general error", log: log, type: .error) - return (serverReturnedStatus, nil) - + return .success(.generalError) + } } diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/GetAttachmentUploadProgressMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/GetAttachmentUploadProgressMethod.swift index a4c2f878..18002203 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/GetAttachmentUploadProgressMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/GetAttachmentUploadProgressMethod.swift @@ -33,14 +33,14 @@ public final class GetAttachmentUploadProgressMethod: ObvServerDataMethod { public var ownedIdentity: ObvCryptoIdentity { return attachmentId.messageId.ownedCryptoIdentity } - public let attachmentId: AttachmentIdentifier + public let attachmentId: ObvAttachmentIdentifier public let isActiveOwnedIdentityRequired = true public let serverURL: URL public let flowId: FlowIdentifier weak public var identityDelegate: ObvIdentityDelegate? = nil - public init(attachmentId: AttachmentIdentifier, serverURL: URL, flowId: FlowIdentifier) { + public init(attachmentId: ObvAttachmentIdentifier, serverURL: URL, flowId: FlowIdentifier) { self.attachmentId = attachmentId self.serverURL = serverURL self.flowId = flowId diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvRegisterAPIKeyServerMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvRegisterAPIKeyServerMethod.swift new file mode 100644 index 00000000..849c9190 --- /dev/null +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvRegisterAPIKeyServerMethod.swift @@ -0,0 +1,82 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import ObvCrypto +import ObvTypes +import ObvEncoder +import ObvMetaManager +import OlvidUtils + +public final class ObvRegisterAPIKeyServerMethod: ObvServerDataMethod { + + static let log = OSLog(subsystem: "io.olvid.server.interface.ObvRegisterAPIKeyServerMethod", category: "ObvServerInterface") + + public let pathComponent = "/registerApiKey" + + public let ownedIdentity: ObvCryptoIdentity + public let isActiveOwnedIdentityRequired = true + public var serverURL: URL { return ownedIdentity.serverURL } + public let flowId: FlowIdentifier + private let apiKey: UUID + private let serverSessionToken: Data + + weak public var identityDelegate: ObvIdentityDelegate? = nil + + public init(ownedIdentity: ObvCryptoIdentity, serverSessionToken: Data, apiKey: UUID, identityDelegate: ObvIdentityDelegate, flowId: FlowIdentifier) { + self.flowId = flowId + self.ownedIdentity = ownedIdentity + self.identityDelegate = identityDelegate + self.serverSessionToken = serverSessionToken + self.apiKey = apiKey + } + + public enum ServerReturnStatus: UInt8 { + case ok = 0x00 + case invalidSession = 0x04 + case invalidAPIKey = 0x16 + case generalError = 0xff + } + + lazy public var dataToSend: Data? = { + return [self.ownedIdentity, self.serverSessionToken, self.apiKey].obvEncode().rawData + }() + + public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> Result { + + guard let (rawServerReturnedStatus, _) = genericParseObvServerResponse(responseData: responseData, using: log) else { + os_log("Could not parse the server response", log: log, type: .error) + let error = Self.makeError(message: "Could not parse the server response") + assertionFailure() + return .failure(error) + } + + guard let serverReturnedStatus = ServerReturnStatus(rawValue: rawServerReturnedStatus) else { + os_log("The returned server status is invalid", log: log, type: .error) + let error = Self.makeError(message: "The returned server status is invalid") + assertionFailure() + return .failure(error) + } + + return .success(serverReturnedStatus) + + } + +} diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerDeviceDiscoveryMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerDeviceDiscoveryMethod.swift index 8945ed80..d2187ab1 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerDeviceDiscoveryMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerDeviceDiscoveryMethod.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -98,6 +98,4 @@ public final class ObvServerDeviceDiscoveryMethod: ObvServerDataMethod { } - - } diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerGetPoWChallengeMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerGetPoWChallengeMethod.swift deleted file mode 100644 index 2ef2f4ce..00000000 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerGetPoWChallengeMethod.swift +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import ObvCrypto -import ObvTypes -import ObvEncoder -import ObvMetaManager -import OlvidUtils - -public final class ObvServerGetPoWChallengeMethod: ObvServerDownloadMethod { - - static let log = OSLog(subsystem: "io.olvid.server.interface.ObvServerGetPoWChallengeMethod", category: "ObvServerInterface") - - public let pathComponent = "/getPoWChallenge" - - public let ownedIdentity: ObvCryptoIdentity - public let isActiveOwnedIdentityRequired = true - public let serverURL: URL - public let flowId: FlowIdentifier - - weak public var identityDelegate: ObvIdentityDelegate? = nil - - public init(ownedIdentity: ObvCryptoIdentity, serverURL: URL, flowId: FlowIdentifier) { - self.flowId = flowId - self.ownedIdentity = ownedIdentity - self.serverURL = serverURL - } - - public enum PossibleReturnStatus: UInt8 { - case ok = 0x00 - case generalError = 0xff - } - - public let dataToSend: Data? = nil - - public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> (status: PossibleReturnStatus, (proofOfWorkUid: UID, proofOfWorkEncodedChallenge: ObvEncoded)?)? { - - guard let (rawServerReturnedStatus, listOfReturnedDatas) = genericParseObvServerResponse(responseData: responseData, using: log) else { - os_log("Could not parse the server response", log: log, type: .error) - return nil - } - - guard let serverReturnedStatus = PossibleReturnStatus(rawValue: rawServerReturnedStatus) else { - os_log("The returned server status is invalid", log: log, type: .error) - return nil - } - - switch serverReturnedStatus { - - case .ok: - - guard listOfReturnedDatas.count == 2 else { - os_log("The server did not return the expected number of elements", log: log, type: .error) - return nil - } - let proofOfWorkEncodedUid = listOfReturnedDatas[0] - let proofOfWorkEncodedChallenge = listOfReturnedDatas[1] - guard let proofOfWorkUid = UID(proofOfWorkEncodedUid) else { - os_log("We could decode the proof of work UID returned by the server", log: log, type: .error) - return nil - } - os_log("The message received a new proof of work from the server", log: log, type: .debug) - return (serverReturnedStatus, (proofOfWorkUid, proofOfWorkEncodedChallenge)) - - case .generalError: - os_log("The server reported a general error", log: log, type: .error) - return (serverReturnedStatus, nil) - - } - - } - -} diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerOwnedDeviceDiscoveryMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerOwnedDeviceDiscoveryMethod.swift new file mode 100644 index 00000000..7320e961 --- /dev/null +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerOwnedDeviceDiscoveryMethod.swift @@ -0,0 +1,104 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import ObvCrypto +import ObvTypes +import ObvEncoder +import ObvMetaManager +import OlvidUtils + +public final class ObvServerOwnedDeviceDiscoveryMethod: ObvServerDataMethod { + + static let log = OSLog(subsystem: "io.olvid.server.interface.ObvServerOwnedDeviceDiscoveryMethod", category: "ObvServerInterface") + + public let pathComponent = "/ownedDeviceDiscovery" + + public let ownedIdentity: ObvCryptoIdentity + public let isActiveOwnedIdentityRequired = false + public var serverURL: URL { return ownedIdentity.serverURL } + public let flowId: FlowIdentifier + + weak public var identityDelegate: ObvIdentityDelegate? = nil + + public init(ownedIdentity: ObvCryptoIdentity, flowId: FlowIdentifier) { + self.flowId = flowId + self.ownedIdentity = ownedIdentity + } + + private enum ServerReturnStatus: UInt8 { + case ok = 0x00 + case generalError = 0xff + } + + public enum PossibleReturnStatus { + case ok(encryptedOwnedDeviceDiscoveryResult: EncryptedData) + case generalError + } + + lazy public var dataToSend: Data? = { + return [self.ownedIdentity].obvEncode().rawData + }() + + public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> Result { + + guard let (rawServerReturnedStatus, listOfReturnedDatas) = genericParseObvServerResponse(responseData: responseData, using: log) else { + os_log("Could not parse the server response", log: log, type: .error) + let error = Self.makeError(message: "Could not parse the server response") + assertionFailure() + return .failure(error) + } + + guard let serverReturnedStatus = ServerReturnStatus(rawValue: rawServerReturnedStatus) else { + os_log("The returned server status is invalid", log: log, type: .error) + let error = Self.makeError(message: "The returned server status is invalid") + assertionFailure() + return .failure(error) + } + + switch serverReturnedStatus { + + case .ok: + + guard listOfReturnedDatas.count == 1 else { + os_log("The server did not return the expected number of elements", log: log, type: .error) + let error = Self.makeError(message: "The server did not return the expected number of elements") + assertionFailure() + return .failure(error) + } + let encodedEncryptedOwnedDeviceDiscoveryResult = listOfReturnedDatas[0] + guard let encryptedOwnedDeviceDiscoveryResult = EncryptedData(encodedEncryptedOwnedDeviceDiscoveryResult) else { + os_log("We could not recover the encrypted owned device discovery result", log: log, type: .error) + let error = Self.makeError(message: "We could not recover the encrypted owned device discovery result") + assertionFailure() + return .failure(error) + } + os_log("We received the encrypted result of the device discovery", log: log, type: .debug) + return .success(.ok(encryptedOwnedDeviceDiscoveryResult: encryptedOwnedDeviceDiscoveryResult)) + + case .generalError: + os_log("The server reported a general error", log: log, type: .error) + return .success(.generalError) + + } + + } + +} diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerUploadMessageAndGetUidsMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerUploadMessageAndGetUidsMethod.swift index 6650688e..0af68c4b 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerUploadMessageAndGetUidsMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/ObvServerUploadMessageAndGetUidsMethod.swift @@ -42,6 +42,7 @@ public final class ObvServerUploadMessageAndGetUidsMethod: ObvServerDataMethod { private let isAppMessageWithUserContent: Bool private let isVoipMessageForStartingCall: Bool public let isActiveOwnedIdentityRequired = true + public let isDeletedOwnedIdentitySufficient = true // When deleting an owned identity, we (sometimes) send messages to let our contacts know about this. This Boolean makes it possible to send the messages even if the owned identity cannot be found. public let flowId: FlowIdentifier weak public var identityDelegate: ObvIdentityDelegate? = nil diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/OwnedDeviceManagementServerMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/OwnedDeviceManagementServerMethod.swift new file mode 100644 index 00000000..dd4cee98 --- /dev/null +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/Methods/Send/OwnedDeviceManagementServerMethod.swift @@ -0,0 +1,118 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import ObvCrypto +import ObvTypes +import ObvEncoder +import ObvMetaManager +import OlvidUtils + +public final class OwnedDeviceManagementServerMethod: ObvServerDataMethod { + + static let log = OSLog(subsystem: "io.olvid.server.interface.OwnedDeviceManagementServerMethod", category: "ObvServerInterface") + + public let pathComponent = "/deviceManagement" + + public let ownedIdentity: ObvCryptoIdentity + public let isActiveOwnedIdentityRequired = true + public var serverURL: URL { return ownedIdentity.serverURL } + public let flowId: FlowIdentifier + let queryType: QueryType + let token: Data + + public enum QueryType { + case setOwnedDeviceName(ownedDeviceUID: UID, encryptedOwnedDeviceName: EncryptedData) + case deactivateOwnedDevice(ownedDeviceUID: UID) + case setUnexpiringOwnedDevice(ownedDeviceUID: UID) + + fileprivate var byteIdentifier: UInt8 { + switch self { + case .setOwnedDeviceName: + return 0x00 + case .deactivateOwnedDevice: + return 0x01 + case .setUnexpiringOwnedDevice: + return 0x02 + } + } + } + + weak public var identityDelegate: ObvIdentityDelegate? = nil + + public init(ownedIdentity: ObvCryptoIdentity, token: Data, queryType: QueryType, flowId: FlowIdentifier) { + self.flowId = flowId + self.ownedIdentity = ownedIdentity + self.queryType = queryType + self.token = token + } + + public enum PossibleReturnStatus: UInt8 { + case ok = 0x00 + case invalidSession = 0x04 + case deviceNotRegistered = 0x0b + case generalError = 0xff + public var debugDescription: String { + switch self { + case .ok: + return "ok" + case .invalidSession: + return "invalidSession" + case .deviceNotRegistered: + return "deviceNotRegistered" + case .generalError: + return "generalError" + } + } + } + + lazy public var dataToSend: Data? = { + switch queryType { + case .setOwnedDeviceName(let ownedDeviceUID, let encryptedDeviceName): + return [self.ownedIdentity, token, queryType.byteIdentifier, ownedDeviceUID, encryptedDeviceName.raw].obvEncode().rawData + case .deactivateOwnedDevice(ownedDeviceUID: let ownedDeviceUID): + return [self.ownedIdentity, token, queryType.byteIdentifier, ownedDeviceUID].obvEncode().rawData + case .setUnexpiringOwnedDevice(ownedDeviceUID: let ownedDeviceUID): + return [self.ownedIdentity, token, queryType.byteIdentifier, ownedDeviceUID].obvEncode().rawData + } + }() + + + public static func parseObvServerResponse(responseData: Data, using log: OSLog) -> Result { + + guard let (rawServerReturnedStatus, _) = genericParseObvServerResponse(responseData: responseData, using: log) else { + assertionFailure() + os_log("Could not parse the server response", log: log, type: .error) + let error = Self.makeError(message: "Could not parse the server response") + return .failure(error) + } + + guard let serverReturnedStatus = PossibleReturnStatus(rawValue: rawServerReturnedStatus) else { + assertionFailure() + os_log("The returned server status is invalid", log: log, type: .error) + let error = Self.makeError(message: "The returned server status is invalid") + return .failure(error) + } + + return .success(serverReturnedStatus) + + } + +} diff --git a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/ObvServerMethod.swift b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/ObvServerMethod.swift index d5e7eb75..0f69775f 100644 --- a/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/ObvServerMethod.swift +++ b/Engine/ObvServerInterface/ObvServerInterface/ObvServerMethod/ObvServerMethod.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,6 +30,7 @@ public protocol ObvServerMethod { var serverURL: URL { get } var pathComponent: String { get } var isActiveOwnedIdentityRequired: Bool { get } + var isDeletedOwnedIdentitySufficient: Bool { get } var ownedIdentity: ObvCryptoIdentity { get } var identityDelegate: ObvIdentityDelegate? { get set } var flowId: FlowIdentifier { get } @@ -39,14 +40,26 @@ public protocol ObvServerMethod { public extension ObvServerMethod { + var isDeletedOwnedIdentitySufficient: Bool { + return false + } + func getURLRequest(dataToSend: Data?) throws -> URLRequest { - guard let identityDelegate = self.identityDelegate else { - assertionFailure() - throw ObvServerMethodError.ownedIdentityIsActiveCheckerDelegateIsNotSet - } if isActiveOwnedIdentityRequired { - guard try identityDelegate.isOwnedIdentityActive(ownedIdentity: self.ownedIdentity, flowId: flowId) else { - throw ObvServerMethodError.ownedIdentityIsNotActive + guard let identityDelegate = self.identityDelegate else { + assertionFailure() + throw ObvServerMethodError.ownedIdentityIsActiveCheckerDelegateIsNotSet + } + do { + guard try identityDelegate.isOwnedIdentityActive(ownedIdentity: self.ownedIdentity, flowId: flowId) else { + throw ObvServerMethodError.ownedIdentityIsNotActive + } + } catch { + if isDeletedOwnedIdentitySufficient, let identityManagerError = error as? ObvIdentityManagerError, identityManagerError == .ownedIdentityNotFound { + // The owned identity cannot be found but, since isDeletedOwnedIdentitySufficient is true, we continue + } else { + throw error + } } } var request = URLRequest(url: serverURL.appendingPathComponent(pathComponent)) @@ -90,13 +103,28 @@ public extension ObvServerMethod { } public enum ObvServerMethodError: Error { + case ownedIdentityIsActiveCheckerDelegateIsNotSet case ownedIdentityIsNotActive - + case couldNotParseServerResponse + case returnedServerStatusIsInvalid + case serverDidNotReturnTheExpectedNumberOfElements + case couldNotDecodeElementReturnByServer(elementName: String) + var localizedDescription: String { switch self { - case .ownedIdentityIsActiveCheckerDelegateIsNotSet: return "The (identity) delegate allowing to check whether the owned identity is active has not been set" - case .ownedIdentityIsNotActive: return "The owned identity is not active but is required to be active for this server method" + case .ownedIdentityIsActiveCheckerDelegateIsNotSet: + return "The (identity) delegate allowing to check whether the owned identity is active has not been set" + case .ownedIdentityIsNotActive: + return "The owned identity is not active but is required to be active for this server method" + case .couldNotParseServerResponse: + return "Could not parse the server response" + case .returnedServerStatusIsInvalid: + return "The returned server status is invalid" + case .serverDidNotReturnTheExpectedNumberOfElements: + return "The server did not return the expected number of elements" + case .couldNotDecodeElementReturnByServer(elementName: let elementName): + return "We could not decode the following element returned by the server: \(elementName)" } } } diff --git a/Engine/ObvSyncSnapshotManager/ObvSyncSnapshotManager/ObvSyncSnapshotManagerImplementation.swift b/Engine/ObvSyncSnapshotManager/ObvSyncSnapshotManager/ObvSyncSnapshotManagerImplementation.swift new file mode 100644 index 00000000..f01c1b51 --- /dev/null +++ b/Engine/ObvSyncSnapshotManager/ObvSyncSnapshotManager/ObvSyncSnapshotManagerImplementation.swift @@ -0,0 +1,144 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import ObvMetaManager +import OlvidUtils +import ObvEncoder +import ObvCrypto +import os.log + + +public final class ObvSyncSnapshotManagerImplementation: ObvSyncSnapshotDelegate { + + private weak var appSnapshotableObject: (any ObvAppSnapshotable)? + private weak var identitySnapshotableObject: (any ObvSnapshotable)? + + public init() { + } + + + // MARK: - ObvManager + + private static let defaultLogSubsystem = "io.olvid.syncSnapshot" + public private(set) var logSubsystem = ObvSyncSnapshotManagerImplementation.defaultLogSubsystem + + public func prependLogSubsystem(with prefix: String) { + logSubsystem = [prefix, Self.defaultLogSubsystem].joined(separator: ".") + } + + public func fulfill(requiredDelegate delegate: AnyObject, forDelegateType delegateType: ObvEngineDelegateType) throws { + } + + + public var requiredDelegates: [ObvEngineDelegateType] { + return [] + } + + + public func finalizeInitialization(flowId: FlowIdentifier, runningLog: RunningLogError) throws { + } + + + public func applicationAppearedOnScreen(forTheFirstTime: Bool, flowId: FlowIdentifier) async { + assert(appSnapshotableObject != nil, "registerAppSnapshotableObject(_:) should have been called by now") + assert(identitySnapshotableObject != nil, "registerIdentitySnapshotableObject(_:) should have been called by now") + } + + + // MARK: - ObvSyncSnapshotDelegate + + + public func registerAppSnapshotableObject(_ appSnapshotableObject: ObvAppSnapshotable) { + assert(self.appSnapshotableObject == nil, "We do not expect this method to be called twice") + self.appSnapshotableObject = appSnapshotableObject + } + + + public func registerIdentitySnapshotableObject(_ identitySnapshotableObject: ObvSnapshotable) { + assert(self.identitySnapshotableObject == nil, "We do not expect this method to be called twice") + self.identitySnapshotableObject = identitySnapshotableObject + } + + + public func getSyncSnapshotNode(for ownedCryptoId: ObvCryptoId) throws -> ObvSyncSnapshot { + + guard let appSnapshotableObject else { + throw ObvError.appSnapshotableObjectIsNil + } + + guard let identitySnapshotableObject else { + throw ObvError.identitySnapshotableObjectIsNil + } + + return try ObvSyncSnapshot(ownedCryptoId: ownedCryptoId, appSnapshotableObject: appSnapshotableObject, identitySnapshotableObject: identitySnapshotableObject) + + } + + + public func getSyncSnapshotNodeAsObvDictionary(for ownedCryptoId: ObvCryptoId) throws -> ObvDictionary { + + guard let appSnapshotableObject else { + throw ObvError.appSnapshotableObjectIsNil + } + + guard let identitySnapshotableObject else { + throw ObvError.identitySnapshotableObjectIsNil + } + + let syncSnapshotNode = try getSyncSnapshotNode(for: ownedCryptoId) + let obvDict = try syncSnapshotNode.toObvDictionary(appSnapshotableObject: appSnapshotableObject, identitySnapshotableObject: identitySnapshotableObject) + + return obvDict + + } + + public func decodeSyncSnapshot(from obvDictionary: ObvDictionary) throws -> ObvSyncSnapshot { + + guard let appSnapshotableObject else { + throw ObvError.appSnapshotableObjectIsNil + } + + guard let identitySnapshotableObject else { + throw ObvError.identitySnapshotableObjectIsNil + } + + return try ObvSyncSnapshot.fromObvDictionary(obvDictionary, appSnapshotableObject: appSnapshotableObject, identitySnapshotableObject: identitySnapshotableObject) + + } + + + public func syncEngineDatabaseThenUpdateAppDatabase(using obvSyncSnapshotNode: any ObvSyncSnapshotNode) async throws { + try await appSnapshotableObject?.syncEngineDatabaseThenUpdateAppDatabase(using: obvSyncSnapshotNode) + } + + + public func requestServerToKeepDeviceActive(ownedCryptoId: ObvCryptoId, deviceUidToKeepActive: UID) async throws { + try await appSnapshotableObject?.requestServerToKeepDeviceActive(ownedCryptoId: ownedCryptoId, deviceUidToKeepActive: deviceUidToKeepActive) + } + + // MARK: ObvError + + enum ObvError: Error { + case appSnapshotableObjectIsNil + case identitySnapshotableObjectIsNil + } + +} diff --git a/Engine/ObvTypes/ObvTypes/APIKeyStatus.swift b/Engine/ObvTypes/ObvTypes/APIKeyStatus.swift index 4c21a6f6..12bc7d76 100644 --- a/Engine/ObvTypes/ObvTypes/APIKeyStatus.swift +++ b/Engine/ObvTypes/ObvTypes/APIKeyStatus.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,12 +19,27 @@ import Foundation -/// valid: cle unipersonnelle, valide, pas expireee. Elle peut ne pas avoir de date d'expiration. -/// unknown: the server does not know the key. Access to free features only. C'est aussi ce qui est envoyé pour une clée normalement "free" ou "freeTrial" mais expirée. -/// licensesExhausted: attribuée a qqun d'autre. -/// expired: the key is valid, known in DB, unipersonnelle, mais expirée -/// free: (nombre de licence à -1 sur serveur), quand c'est free et encore actif. C'est une cle pour beta. -/// freeTrial: quand c'est freeTrial et encore actif. Technique clé de MAC. + +public struct APIKeyElements { + + public let status: APIKeyStatus + public let permissions: APIPermissions + public let expirationDate: Date? + + public init(status: APIKeyStatus, permissions: APIPermissions, expirationDate: Date?) { + self.status = status + self.permissions = permissions + self.expirationDate = expirationDate + } + +} + +/// `valid`: personal, valid, not expired key. This kind of key cannot have an expiration date. +/// `unknown`: the server does not know the key. Access to free features only. C'est aussi ce qui est envoyé pour une clée normalement "free" ou "freeTrial" mais expirée. +/// `licensesExhausted`: attribuée a qqun d'autre. +/// `expired`: the key is valid, known in DB, unipersonnelle, mais expirée +/// `free`: (nombre de licence à -1 sur serveur), quand c'est free et encore actif. C'est une cle pour beta. +/// `freeTrial`: quand c'est freeTrial et encore actif. Technique clé de MAC. public enum APIKeyStatus: Int, CustomStringConvertible { case valid = 0 @@ -64,16 +79,30 @@ public enum APIKeyStatus: Int, CustomStringConvertible { } -public struct APIPermissions: OptionSet { +public struct APIPermissions: OptionSet, CustomStringConvertible { public let rawValue: Int public static let canCall = APIPermissions(rawValue: 1 << 0) - public static let androidWebClient = APIPermissions(rawValue: 1 << 1) + // public static let androidWebClient = APIPermissions(rawValue: 1 << 1) public static let multidevice = APIPermissions(rawValue: 1 << 2) public init(rawValue: Int) { assert(rawValue < 8) self.rawValue = rawValue } + + public var description: String { + var permissionsAsTring = [String]() + if self.contains(.canCall) { + permissionsAsTring.append("SecureCalls") + } +// if self.contains(.androidWebClient) { +// permissionsAsTring.append("AndroidWebClient") +// } + if self.contains(.multidevice) { + permissionsAsTring.append("MultiDevice") + } + return "APIPermissions<\(permissionsAsTring.joined(separator: ","))>" + } } diff --git a/Engine/ObvTypes/ObvTypes/GroupV1Identifier.swift b/Engine/ObvTypes/ObvTypes/GroupV1Identifier.swift new file mode 100644 index 00000000..78bba26b --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/GroupV1Identifier.swift @@ -0,0 +1,78 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto + + +/// 2023-09-23 Type introduced for sync snapshots. It should have been introduced earlier... +public struct GroupV1Identifier: Hashable, LosslessStringConvertible { + + public let groupUid: UID + public let groupOwner: ObvCryptoId + + public init(groupUid: UID, groupOwner: ObvCryptoId) { + self.groupUid = groupUid + self.groupOwner = groupOwner + } + + var rawData: Data { + groupOwner.getIdentity() + groupUid.raw + } + + init(rawData: Data) throws { + guard rawData.count > UID.length else { + throw ObvError.notEnoughData + } + let identity = rawData[0..<(rawData.count-UID.length)] + self.groupOwner = try ObvCryptoId(identity: identity) + guard let groupUid = UID(uid: rawData[(rawData.count-UID.length)... */ +import Foundation -"DISCUSSIONS_FILTER_CELL_PICKER_TEXT" = "Filtrer les discussions"; -"DISCUSSIONS_LIST_SELECTION_PLACEHOLDER_CELL" = "Sélectionnez une ou plusieurs discussions"; +/// 2023-09-23 Type introduced for sync snapshots. It should have been introduced earlier... +public typealias GroupV2Identifier = Data diff --git a/Engine/ObvTypes/ObvTypes/ObvAppStoreReceipt.swift b/Engine/ObvTypes/ObvTypes/ObvAppStoreReceipt.swift new file mode 100644 index 00000000..48f10ca9 --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/ObvAppStoreReceipt.swift @@ -0,0 +1,47 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto + + +public struct ObvAppStoreReceipt: Hashable { + + public let ownedCryptoIdentities: Set + public let signedAppStoreTransactionAsJWS: String + public let transactionIdentifier: UInt64 + + public init(ownedCryptoIdentities: Set, signedAppStoreTransactionAsJWS: String, transactionIdentifier: UInt64) { + self.ownedCryptoIdentities = ownedCryptoIdentities + self.signedAppStoreTransactionAsJWS = signedAppStoreTransactionAsJWS + self.transactionIdentifier = transactionIdentifier + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(transactionIdentifier) + } + + + public enum VerificationStatus { + case succeededAndSubscriptionIsValid + case succeededButSubscriptionIsExpired + case failed + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/AttachmentIdentifier.swift b/Engine/ObvTypes/ObvTypes/ObvAttachmentIdentifier.swift similarity index 51% rename from Engine/ObvMetaManager/ObvMetaManager/CommonTypes/AttachmentIdentifier.swift rename to Engine/ObvTypes/ObvTypes/ObvAttachmentIdentifier.swift index d80ac0f8..2b16da49 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/AttachmentIdentifier.swift +++ b/Engine/ObvTypes/ObvTypes/ObvAttachmentIdentifier.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,19 +20,23 @@ import Foundation import ObvEncoder -public struct AttachmentIdentifier: Equatable, Hashable { +public struct ObvAttachmentIdentifier: Equatable, Hashable { - public let messageId: MessageIdentifier + public let messageId: ObvMessageIdentifier public let attachmentNumber: Int - public init(messageId: MessageIdentifier, attachmentNumber: Int) { + public init(messageId: ObvMessageIdentifier, attachmentNumber: Int) { self.messageId = messageId self.attachmentNumber = attachmentNumber } + public var directoryNameForAttachmentChunks: String { + return "\(self.attachmentNumber)" + } + } -extension AttachmentIdentifier: CustomDebugStringConvertible { +extension ObvAttachmentIdentifier: CustomDebugStringConvertible { public var debugDescription: String { return "Attachment<\(messageId.debugDescription),\(attachmentNumber)>" @@ -40,7 +44,8 @@ extension AttachmentIdentifier: CustomDebugStringConvertible { } -extension AttachmentIdentifier: Codable { + +extension ObvAttachmentIdentifier: Codable { enum CodingKeys: String, CodingKey { case messageId = "message_id" @@ -48,31 +53,3 @@ extension AttachmentIdentifier: Codable { } } - -extension AttachmentIdentifier: RawRepresentable { - - public var rawValue: Data { - let encoder = JSONEncoder() - return try! encoder.encode(self) - } - - public init?(rawValue: Data) { - let decoder = JSONDecoder() - guard let attachmentId = try? decoder.decode(AttachmentIdentifier.self, from: rawValue) else { return nil } - self = attachmentId - } - -} - -extension AttachmentIdentifier: LosslessStringConvertible { - - public var description: String { - return String(data: self.rawValue, encoding: .utf8)! - } - - public init?(_ description: String) { - guard let rawValue = description.data(using: .utf8) else { assertionFailure(); return nil } - self.init(rawValue: rawValue) - } - -} diff --git a/Engine/ObvTypes/ObvTypes/ObvContactIdentifier.swift b/Engine/ObvTypes/ObvTypes/ObvContactIdentifier.swift new file mode 100644 index 00000000..704f0755 --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/ObvContactIdentifier.swift @@ -0,0 +1,74 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto + + +public struct ObvContactIdentifier: Hashable, CustomStringConvertible { + + public let contactCryptoId: ObvCryptoId + public let ownedCryptoId: ObvCryptoId + + public init(contactCryptoIdentity: ObvCryptoIdentity, ownedCryptoIdentity: ObvCryptoIdentity) { + assert(contactCryptoIdentity != ownedCryptoIdentity) + self.contactCryptoId = ObvCryptoId(cryptoIdentity: contactCryptoIdentity) + self.ownedCryptoId = ObvCryptoId(cryptoIdentity: ownedCryptoIdentity) + } + + public init(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) { + assert(contactCryptoId != ownedCryptoId) + self.contactCryptoId = contactCryptoId + self.ownedCryptoId = ownedCryptoId + } + +} + + +// MARK: Implementing CustomStringConvertible + +extension ObvContactIdentifier { + public var description: String { + return "ObvContactIdentifier<\(contactCryptoId.description), \(ownedCryptoId.description)>" + } +} + + +// MARK: - Codable + +extension ObvContactIdentifier: Codable { + + /// `ObvContactIdentifier` so that `ObvMessage` and `ObvAttachment` can also conform to Codable. This makes it possible to transfer a message from the notification service to the main app. + /// This serialization should **not** be used within long term storage since we may change it regularly. + + enum CodingKeys: String, CodingKey { + case contactCryptoId = "contact_crypto_id" + case ownedCryptoId = "owned_crypto_id" + } + + public func encodeToJson() throws -> Data { + let encoder = JSONEncoder() + return try encoder.encode(self) + } + + public static func decodeFromJson(data: Data) throws -> ObvMessage { + let decoder = JSONDecoder() + return try decoder.decode(ObvMessage.self, from: data) + } +} diff --git a/Engine/ObvEngine/ObvEngine/Types/ObvDialog.swift b/Engine/ObvTypes/ObvTypes/ObvDialog.swift similarity index 83% rename from Engine/ObvEngine/ObvEngine/Types/ObvDialog.swift rename to Engine/ObvTypes/ObvTypes/ObvDialog.swift index 22c33055..a3ec1a6b 100644 --- a/Engine/ObvEngine/ObvEngine/Types/ObvDialog.swift +++ b/Engine/ObvTypes/ObvTypes/ObvDialog.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,18 +20,16 @@ import Foundation import ObvEncoder import ObvCrypto -import ObvTypes -import ObvMetaManager public struct ObvDialog: ObvFailableCodable, Equatable { // Allow to store the encodedElements public let uuid: UUID - internal let encodedElements: ObvEncoded + public let encodedElements: ObvEncoded public let ownedCryptoId: ObvCryptoId public let category: Category - internal var encodedResponse: ObvEncoded? + public private(set) var encodedResponse: ObvEncoded? private static func makeError(message: String) -> Error { NSError(domain: String(describing: Self.self), code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } @@ -42,7 +40,7 @@ public struct ObvDialog: ObvFailableCodable, Equatable { return true } - init(uuid: UUID, encodedElements: ObvEncoded, ownedCryptoId: ObvCryptoId, category: Category) { + public init(uuid: UUID, encodedElements: ObvEncoded, ownedCryptoId: ObvCryptoId, category: Category) { self.uuid = uuid self.encodedElements = encodedElements self.ownedCryptoId = ownedCryptoId @@ -59,6 +57,12 @@ public struct ObvDialog: ObvFailableCodable, Equatable { } } + public func settingResponseToAcceptInvite(acceptInvite: Bool) throws -> Self { + var localCopy = self + try localCopy.setResponseToAcceptInvite(acceptInvite: acceptInvite) + return localCopy + } + public mutating func setResponseToSasExchange(otherSas: Data) throws { switch category { case .sasExchange: @@ -78,6 +82,13 @@ public struct ObvDialog: ObvFailableCodable, Equatable { } + public func settingResponseToAcceptMediatorInvite(acceptInvite: Bool) throws -> Self { + var localCopy = self + try localCopy.setResponseToAcceptMediatorInvite(acceptInvite: acceptInvite) + return localCopy + } + + public mutating func setResponseToAcceptGroupInvite(acceptInvite: Bool) throws { switch category { case .acceptGroupInvite: @@ -86,17 +97,14 @@ public struct ObvDialog: ObvFailableCodable, Equatable { throw Self.makeError(message: "Bad category") } } + - - public mutating func rejectIncreaseGroupOwnerTrustLevelRequired() throws { - switch category { - case .increaseGroupOwnerTrustLevelRequired: - encodedResponse = false.obvEncode() - default: - throw Self.makeError(message: "Bad category") - } + public func settingResponseToAcceptGroupInvite(acceptInvite: Bool) throws -> Self { + var localCopy = self + try localCopy.setResponseToAcceptGroupInvite(acceptInvite: acceptInvite) + return localCopy } - + public mutating func setResponseToOneToOneInvitationReceived(invitationAccepted: Bool) throws { switch category { @@ -108,6 +116,13 @@ public struct ObvDialog: ObvFailableCodable, Equatable { } + public func settingResponseToOneToOneInvitationReceived(invitationAccepted: Bool) throws -> Self { + var localCopy = self + try localCopy.setResponseToOneToOneInvitationReceived(invitationAccepted: invitationAccepted) + return localCopy + } + + public mutating func cancelOneToOneInvitationSent() throws { switch category { case .oneToOneInvitationSent: @@ -116,6 +131,13 @@ public struct ObvDialog: ObvFailableCodable, Equatable { throw Self.makeError(message: "Bad category") } } + + + public func cancellingOneToOneInvitationSent() throws -> Self { + var localCopy = self + try localCopy.cancelOneToOneInvitationSent() + return localCopy + } public mutating func setResponseToAcceptGroupV2Invite(acceptInvite: Bool) throws { @@ -126,7 +148,14 @@ public struct ObvDialog: ObvFailableCodable, Equatable { throw Self.makeError(message: "Bad category") } } - + + + public func settingResponseToAcceptGroupV2Invite(acceptInvite: Bool) throws -> Self { + var localCopy = self + try localCopy.setResponseToAcceptGroupV2Invite(acceptInvite: acceptInvite) + return localCopy + } + public var actionRequired: Bool { switch self.category { @@ -135,17 +164,15 @@ public struct ObvDialog: ObvFailableCodable, Equatable { .mutualTrustConfirmed, .mediatorInviteAccepted, .oneToOneInvitationSent, - .autoconfirmedContactIntroduction, - .freezeGroupV2Invite: + .freezeGroupV2Invite, + .syncRequestReceivedFromOtherOwnedDevice: return false case .acceptInvite, .sasExchange, .sasConfirmed, .acceptMediatorInvite, .acceptGroupInvite, - .increaseMediatorTrustLevelRequired, .oneToOneInvitationReceived, - .increaseGroupOwnerTrustLevelRequired, .acceptGroupV2Invite: return true } @@ -166,13 +193,10 @@ extension ObvDialog { // Dialogs related to mediator invites case acceptMediatorInvite(contactIdentity: ObvGenericIdentity, mediatorIdentity: ObvGenericIdentity) // The mediatorIdentity corresponds to a ObvContactIdentity - case increaseMediatorTrustLevelRequired(contactIdentity: ObvGenericIdentity, mediatorIdentity: ObvGenericIdentity) // The mediatorIdentity corresponds to a ObvContactIdentity case mediatorInviteAccepted(contactIdentity: ObvGenericIdentity, mediatorIdentity: ObvGenericIdentity) // The mediatorIdentity corresponds to a ObvContactIdentity - case autoconfirmedContactIntroduction(contactIdentity: ObvGenericIdentity, mediatorIdentity: ObvGenericIdentity) // Dialogs related to contact groups case acceptGroupInvite(groupMembers: Set, groupOwner: ObvGenericIdentity) - case increaseGroupOwnerTrustLevelRequired(groupOwner: ObvGenericIdentity) // Dialogs related to OneToOne invitations case oneToOneInvitationSent(contactIdentity: ObvGenericIdentity) @@ -182,6 +206,9 @@ extension ObvDialog { case acceptGroupV2Invite(inviter: ObvCryptoId, group: ObvGroupV2) case freezeGroupV2Invite(inviter: ObvCryptoId, group: ObvGroupV2) + // Dialogs related to the synchronization between owned devices + case syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceIdentifier: Data, syncAtom: ObvSyncAtom) + private var raw: Int { switch self { case .inviteSent: return 0 @@ -193,13 +220,14 @@ extension ObvDialog { case .acceptMediatorInvite: return 6 case .mediatorInviteAccepted: return 7 case .acceptGroupInvite: return 8 - case .increaseMediatorTrustLevelRequired: return 11 - case .increaseGroupOwnerTrustLevelRequired: return 12 - case .autoconfirmedContactIntroduction: return 13 + // case .increaseMediatorTrustLevelRequired: return 11 + // case .increaseGroupOwnerTrustLevelRequired: return 12 + // case .autoconfirmedContactIntroduction: return 13 case .oneToOneInvitationSent: return 14 case .oneToOneInvitationReceived: return 15 case .acceptGroupV2Invite: return 16 case .freezeGroupV2Invite: return 17 + case .syncRequestReceivedFromOtherOwnedDevice: return 18 } } @@ -261,13 +289,6 @@ extension ObvDialog { default: return false } - case .increaseMediatorTrustLevelRequired(contactIdentity: let a1, mediatorIdentity: let b1): - switch rhs { - case .increaseMediatorTrustLevelRequired(contactIdentity: let a2, mediatorIdentity: let b2): - return a1 == a2 && b1 == b2 - default: - return false - } case .acceptGroupInvite(groupMembers: let a1, groupOwner: let b1): switch rhs { case .acceptGroupInvite(groupMembers: let a2, groupOwner: let b2): @@ -275,20 +296,6 @@ extension ObvDialog { default: return false } - case .increaseGroupOwnerTrustLevelRequired(groupOwner: let a1): - switch rhs { - case .increaseGroupOwnerTrustLevelRequired(groupOwner: let a2): - return a1 == a2 - default: - return false - } - case .autoconfirmedContactIntroduction(contactIdentity: let a1): - switch rhs { - case .autoconfirmedContactIntroduction(contactIdentity: let a2): - return a1 == a2 - default: - return false - } case .oneToOneInvitationSent(contactIdentity: let a1): switch rhs { case .oneToOneInvitationSent(contactIdentity: let a2): @@ -317,6 +324,13 @@ extension ObvDialog { default: return false } + case .syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceIdentifier: let a1, syncAtom: let b1): + switch rhs { + case .syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceIdentifier: let a2, syncAtom: let b2): + return a1 == a2 && b1 == b2 + default: + return false + } } } @@ -337,18 +351,12 @@ extension ObvDialog { encodedVars = [contactIdentity].obvEncode() case .acceptMediatorInvite(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): encodedVars = [contactIdentity, mediatorIdentity].obvEncode() - case .increaseMediatorTrustLevelRequired(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): - encodedVars = [contactIdentity, mediatorIdentity].obvEncode() case .mediatorInviteAccepted(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): encodedVars = [contactIdentity, mediatorIdentity].obvEncode() - case .autoconfirmedContactIntroduction(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): - encodedVars = [contactIdentity, mediatorIdentity].obvEncode() case .acceptGroupInvite(groupMembers: let groupMembers, groupOwner: let groupOwner): let encodedGroupMembers = (groupMembers.map { $0.obvEncode() }).obvEncode() let encodedGroupOwner = groupOwner.obvEncode() encodedVars = [encodedGroupMembers, encodedGroupOwner].obvEncode() - case .increaseGroupOwnerTrustLevelRequired(groupOwner: let groupOwner): - encodedVars = [groupOwner].obvEncode() case .oneToOneInvitationSent(contactIdentity: let contactIdentity): encodedVars = [contactIdentity].obvEncode() case .oneToOneInvitationReceived(contactIdentity: let contactIdentity): @@ -357,6 +365,8 @@ extension ObvDialog { encodedVars = [inviter.obvEncode(), try group.obvEncode()].obvEncode() case .freezeGroupV2Invite(inviter: let inviter, group: let group): encodedVars = [inviter.obvEncode(), try group.obvEncode()].obvEncode() + case .syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceIdentifier: let otherOwnedDeviceIdentifier, syncAtom: let syncAtom): + encodedVars = [otherOwnedDeviceIdentifier, syncAtom].obvEncode() } let encodedObvDialog = [raw.obvEncode(), encodedVars].obvEncode() return encodedObvDialog @@ -424,23 +434,12 @@ extension ObvDialog { } guard let groupOwner = try? encodedVars[1].obvDecode() as ObvGenericIdentity else { return nil } self = .acceptGroupInvite(groupMembers: groupMembers, groupOwner: groupOwner) - case 11: - /* increaseMediatorTrustLevelRequired */ - guard let encodedVars = [ObvEncoded](listOfEncoded[1], expectedCount: 2) else { return nil } - guard let contactIdentity = try? encodedVars[0].obvDecode() as ObvGenericIdentity else { return nil } - guard let mediatorIdentity = try? encodedVars[1].obvDecode() as ObvGenericIdentity else { return nil } - self = .increaseMediatorTrustLevelRequired(contactIdentity: contactIdentity, mediatorIdentity: mediatorIdentity) - case 12: - /* increaseGroupOwnerTrustLevelRequired */ - guard let encodedVars = [ObvEncoded](listOfEncoded[1], expectedCount: 1) else { return nil } - guard let groupOwner = try? encodedVars[0].obvDecode() as ObvGenericIdentity else { return nil } - self = .increaseGroupOwnerTrustLevelRequired(groupOwner: groupOwner) - case 13: - /* autoconfirmedContactIntroduction */ - guard let encodedVars = [ObvEncoded](listOfEncoded[1], expectedCount: 2) else { return nil } - guard let contactIdentity = try? encodedVars[0].obvDecode() as ObvGenericIdentity else { return nil } - guard let mediatorIdentity = try? encodedVars[1].obvDecode() as ObvGenericIdentity else { return nil } - self = .autoconfirmedContactIntroduction(contactIdentity: contactIdentity, mediatorIdentity: mediatorIdentity) +// case 11: +// /* Was increaseMediatorTrustLevelRequired */ +// case 12: +// /* Was increaseGroupOwnerTrustLevelRequired */ +// case 13: +// /* Was autoconfirmedContactIntroduction */ case 14: /* oneToOneInvitationSent */ guard let encodedVars = [ObvEncoded](listOfEncoded[1], expectedCount: 1) else { return nil } @@ -463,6 +462,12 @@ extension ObvDialog { guard let inviter = try? encodedVars[0].obvDecode() as ObvCryptoId else { assertionFailure(); return nil } guard let group = try? encodedVars[1].obvDecode() as ObvGroupV2 else { assertionFailure(); return nil } self = .freezeGroupV2Invite(inviter: inviter, group: group) + case 18: + /* syncRequestReceivedFromOtherOwnedDevice */ + guard let encodedVars = [ObvEncoded](listOfEncoded[1], expectedCount: 2) else { assertionFailure(); return nil } + guard let otherOwnedDeviceIdentifier = try? encodedVars[0].obvDecode() as Data else { assertionFailure(); return nil } + guard let syncAtom = try? encodedVars[1].obvDecode() as ObvSyncAtom else { assertionFailure(); return nil } + self = .syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceIdentifier: otherOwnedDeviceIdentifier, syncAtom: syncAtom) default: return nil } @@ -484,16 +489,10 @@ extension ObvDialog { return "mutualTrustConfirmed" case .acceptMediatorInvite: return "acceptMediatorInvite" - case .increaseMediatorTrustLevelRequired: - return "increaseMediatorTrustLevelRequired" case .mediatorInviteAccepted: return "mediatorInviteAccepted" case .acceptGroupInvite: return "acceptGroupInvite" - case .increaseGroupOwnerTrustLevelRequired: - return "increaseGroupOwnerTrustLevelRequired" - case .autoconfirmedContactIntroduction: - return "autoconfirmedContactIntroduction" case .oneToOneInvitationSent: return "oneToOneInvitationSent" case .oneToOneInvitationReceived: @@ -502,6 +501,8 @@ extension ObvDialog { return "acceptGroupV2Invite" case .freezeGroupV2Invite: return "freezeGroupV2Invite" + case .syncRequestReceivedFromOtherOwnedDevice: + return "syncRequestReceivedFromOtherOwnedDevice" } } diff --git a/Engine/ObvEngine/ObvEngine/Types/EncryptedPushNotification.swift b/Engine/ObvTypes/ObvTypes/ObvEncryptedPushNotification.swift similarity index 89% rename from Engine/ObvEngine/ObvEngine/Types/EncryptedPushNotification.swift rename to Engine/ObvTypes/ObvTypes/ObvEncryptedPushNotification.swift index 5c2713f4..7bd946b1 100644 --- a/Engine/ObvEngine/ObvEngine/Types/EncryptedPushNotification.swift +++ b/Engine/ObvTypes/ObvTypes/ObvEncryptedPushNotification.swift @@ -18,17 +18,16 @@ */ import Foundation -import ObvTypes import ObvCrypto -public struct EncryptedPushNotification { +public struct ObvEncryptedPushNotification { - let messageIdFromServer: UID - let wrappedKey: EncryptedData - let encryptedContent: EncryptedData - let encryptedExtendedContent: EncryptedData? - let maskingUID: UID + public let messageIdFromServer: UID + public let wrappedKey: EncryptedData + public let encryptedContent: EncryptedData + public let encryptedExtendedContent: EncryptedData? + public let maskingUID: UID public let messageUploadTimestampFromServer: Date // Note that we have no downloadTimestampFromServer since this information is not avaible from APNS public let localDownloadTimestamp: Date @@ -60,4 +59,5 @@ public struct EncryptedPushNotification { self.messageUploadTimestampFromServer = messageUploadTimestampFromServer self.localDownloadTimestamp = localDownloadTimestamp } + } diff --git a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvGenericIdentity.swift b/Engine/ObvTypes/ObvTypes/ObvGenericIdentity.swift similarity index 89% rename from Engine/ObvEngine/ObvEngine/Types/Identities/ObvGenericIdentity.swift rename to Engine/ObvTypes/ObvTypes/ObvGenericIdentity.swift index d01911de..f253c0a1 100644 --- a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvGenericIdentity.swift +++ b/Engine/ObvTypes/ObvTypes/ObvGenericIdentity.swift @@ -20,7 +20,6 @@ import Foundation import ObvCrypto import ObvEncoder -import ObvTypes public struct ObvGenericIdentity: ObvIdentity { @@ -28,7 +27,7 @@ public struct ObvGenericIdentity: ObvIdentity { public let cryptoId: ObvCryptoId public let currentIdentityDetails: ObvIdentityDetails - init(cryptoIdentity: ObvCryptoIdentity, currentIdentityDetails: ObvIdentityDetails) { + public init(cryptoIdentity: ObvCryptoIdentity, currentIdentityDetails: ObvIdentityDetails) { self.cryptoId = ObvCryptoId(cryptoIdentity: cryptoIdentity) self.currentIdentityDetails = currentIdentityDetails } @@ -38,7 +37,7 @@ public struct ObvGenericIdentity: ObvIdentity { self.currentIdentityDetails = currentIdentityDetails } - init(cryptoIdentity: ObvCryptoIdentity, currentCoreIdentityDetails: ObvIdentityCoreDetails) { + public init(cryptoIdentity: ObvCryptoIdentity, currentCoreIdentityDetails: ObvIdentityCoreDetails) { self.cryptoId = ObvCryptoId(cryptoIdentity: cryptoIdentity) self.currentIdentityDetails = ObvIdentityDetails(coreDetails: currentCoreIdentityDetails, photoURL: nil) } @@ -50,6 +49,12 @@ public struct ObvGenericIdentity: ObvIdentity { let detail = ObvIdentityDetails(coreDetails: coreDetails, photoURL: nil) self.init(cryptoId: cryptoId, currentIdentityDetails: detail) } + + + public func getDisplayNameWithStyle(_ style: ObvIdentityCoreDetails.DisplayNameStyle) -> String { + return currentIdentityDetails.getDisplayNameWithStyle(style) + } + } diff --git a/Engine/ObvTypes/ObvTypes/ObvGroupCoreDetails.swift b/Engine/ObvTypes/ObvTypes/ObvGroupCoreDetails.swift index 3298e280..67feded5 100644 --- a/Engine/ObvTypes/ObvTypes/ObvGroupCoreDetails.swift +++ b/Engine/ObvTypes/ObvTypes/ObvGroupCoreDetails.swift @@ -53,7 +53,7 @@ extension ObvGroupCoreDetails: Codable { public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(name, forKey: .name) - try container.encodeIfPresent(description, forKey: .description) + try container.encodeIfPresent(description?.isEmpty == true ? nil : description, forKey: .description) } @@ -67,7 +67,13 @@ extension ObvGroupCoreDetails: Codable { let values = try decoder.container(keyedBy: CodingKeys.self) let name = (try values.decode(String.self, forKey: .name)) let description = try values.decodeIfPresent(String.self, forKey: .description) - self.init(name: name, description: description) + let appropriateDescription: String? + if let description { + appropriateDescription = description.isEmpty ? nil : description + } else { + appropriateDescription = description + } + self.init(name: name, description: appropriateDescription) } } diff --git a/Engine/ObvTypes/ObvTypes/ObvGroupV2.swift b/Engine/ObvTypes/ObvTypes/ObvGroupV2.swift index 03cb991a..7889b906 100644 --- a/Engine/ObvTypes/ObvTypes/ObvGroupV2.swift +++ b/Engine/ObvTypes/ObvTypes/ObvGroupV2.swift @@ -64,7 +64,7 @@ public struct ObvGroupV2: ObvErrorMaker, ObvFailableCodable, Equatable, Hashable self.lastModificationTimestamp = lastModificationTimestamp } - public var appGroupIdentifier: Data { + public var appGroupIdentifier: GroupV2Identifier { groupIdentifier.appGroupIdentifier } @@ -165,6 +165,11 @@ public struct ObvGroupV2: ObvErrorMaker, ObvFailableCodable, Equatable, Hashable } + public init?(appGroupIdentifier: Data) { + guard let obvEncoded = ObvEncoded(withRawData: appGroupIdentifier) else { assertionFailure(); return nil } + self.init(obvEncoded) + } + // ObvCodable public func obvEncode() -> ObvEncoded { diff --git a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvIdentity.swift b/Engine/ObvTypes/ObvTypes/ObvIdentity.swift similarity index 96% rename from Engine/ObvEngine/ObvEngine/Types/Identities/ObvIdentity.swift rename to Engine/ObvTypes/ObvTypes/ObvIdentity.swift index 3ccd100e..dd6b0694 100644 --- a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvIdentity.swift +++ b/Engine/ObvTypes/ObvTypes/ObvIdentity.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -18,10 +18,9 @@ */ import Foundation - import ObvCrypto import ObvEncoder -import ObvTypes + public protocol ObvIdentity: Hashable { diff --git a/Engine/ObvTypes/ObvTypes/ObvIdentityCoreDetails.swift b/Engine/ObvTypes/ObvTypes/ObvIdentityCoreDetails.swift index e4325ced..1b09cdb8 100644 --- a/Engine/ObvTypes/ObvTypes/ObvIdentityCoreDetails.swift +++ b/Engine/ObvTypes/ObvTypes/ObvIdentityCoreDetails.swift @@ -99,6 +99,52 @@ public struct ObvIdentityCoreDetails: Equatable { pnc.givenName = firstName return pnc } + + + public var initial: String { + if let letter = firstName?.trimmingWhitespacesAndNewlines().first, !letter.isWhitespace { + return String(letter) + } else if let letter = lastName?.trimmingWhitespacesAndNewlines().first, !letter.isWhitespace { + return String(letter) + } else { + assertionFailure() + return "?" + } + } + + + public enum DisplayNameStyle { + + case firstNameThenLastName + case positionAtCompany + case full + case short + } + + + public func getDisplayNameWithStyle(_ style: DisplayNameStyle) -> String { + switch style { + case .firstNameThenLastName: + let _firstName = firstName ?? "" + let _lastName = lastName ?? "" + return [_firstName, _lastName].joined(separator: " ").trimmingCharacters(in: .whitespacesAndNewlines) + + case .positionAtCompany: + return positionAtCompany() + + case .full: + let firstNameThenLastName = getDisplayNameWithStyle(.firstNameThenLastName) + if let positionAtCompany = getDisplayNameWithStyle(.positionAtCompany).mapToNilIfZeroLength() { + return [firstNameThenLastName, "(\(positionAtCompany))"].joined(separator: " ") + } else { + return firstNameThenLastName + } + + case .short: + return firstName ?? lastName ?? "" + } + } + } diff --git a/Engine/ObvTypes/ObvTypes/ObvIdentityDetails.swift b/Engine/ObvTypes/ObvTypes/ObvIdentityDetails.swift index 41e02b64..c4b555b4 100644 --- a/Engine/ObvTypes/ObvTypes/ObvIdentityDetails.swift +++ b/Engine/ObvTypes/ObvTypes/ObvIdentityDetails.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -51,6 +51,11 @@ public struct ObvIdentityDetails: Equatable { return true } + + public func getDisplayNameWithStyle(_ style: ObvIdentityCoreDetails.DisplayNameStyle) -> String { + return coreDetails.getDisplayNameWithStyle(style) + } + } diff --git a/Engine/ObvTypes/ObvTypes/ObvKeycloakState.swift b/Engine/ObvTypes/ObvTypes/ObvKeycloakState.swift index a084a5e8..9ebd8062 100644 --- a/Engine/ObvTypes/ObvTypes/ObvKeycloakState.swift +++ b/Engine/ObvTypes/ObvTypes/ObvKeycloakState.swift @@ -19,8 +19,13 @@ import Foundation import JWS +import ObvEncoder +import OlvidUtils + +public struct ObvKeycloakState: ObvErrorMaker { + + public static var errorDomain = "ObvKeycloakState" -public struct ObvKeycloakState { public let keycloakServer: URL public let clientId: String @@ -43,3 +48,69 @@ public struct ObvKeycloakState { } } + + +/// Implements `ObvFailableCodable` as `ObvKeycloakState` is used within protocol messages. +/// Note that `latestLocalRevocationListTimestamp` and `latestGroupUpdateTimestamp` are lost in the encoding process. +extension ObvKeycloakState: ObvFailableCodable { + + private enum ObvCodingKeys: String, CaseIterable, CodingKey { + + case keycloakServer = "ks" + case clientId = "ci" + case clientSecret = "cs" + case jwks = "jwks" + case rawAuthState = "sas" + case signatureVerificationKey = "sk" + + var key: Data { rawValue.data(using: .utf8)! } + + } + + public func obvEncode() throws -> ObvEncoded { + var obvDict = [Data: ObvEncoded]() + for codingKey in ObvCodingKeys.allCases { + switch codingKey { + case .keycloakServer: + try obvDict.obvEncode(keycloakServer, forKey: codingKey) + case .clientId: + try obvDict.obvEncode(clientId, forKey: codingKey) + case .clientSecret: + try obvDict.obvEncodeIfPresent(clientSecret, forKey: codingKey) + case .jwks: + try obvDict.obvEncode(jwks, forKey: codingKey) + case .rawAuthState: + try obvDict.obvEncodeIfPresent(rawAuthState, forKey: codingKey) + case .signatureVerificationKey: + try obvDict.obvEncodeIfPresent(signatureVerificationKey, forKey: codingKey) + } + } + return obvDict.obvEncode() + } + + + public init?(_ obvEncoded: ObvEncoder.ObvEncoded) { + guard let obvDict = ObvDictionary(obvEncoded) else { assertionFailure(); return nil } + do { + let keycloakServer = try obvDict.obvDecode(URL.self, forKey: ObvCodingKeys.keycloakServer) + let clientId = try obvDict.obvDecode(String.self, forKey: ObvCodingKeys.clientId) + let clientSecret = try obvDict.obvDecodeIfPresent(String.self, forKey: ObvCodingKeys.clientSecret) + let jwks = try obvDict.obvDecode(ObvJWKSet.self, forKey: ObvCodingKeys.jwks) + let rawAuthState = try obvDict.obvDecodeIfPresent(Data.self, forKey: ObvCodingKeys.rawAuthState) + let signatureVerificationKey = try obvDict.obvDecodeIfPresent(ObvJWK.self, forKey: ObvCodingKeys.signatureVerificationKey) + self.init( + keycloakServer: keycloakServer, + clientId: clientId, + clientSecret: clientSecret, + jwks: jwks, + rawAuthState: rawAuthState, + signatureVerificationKey: signatureVerificationKey, + latestLocalRevocationListTimestamp: nil, + latestGroupUpdateTimestamp: nil) + } catch { + assertionFailure(error.localizedDescription) + return nil + } + } + +} diff --git a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/MessageIdentifier.swift b/Engine/ObvTypes/ObvTypes/ObvMessageIdentifier.swift similarity index 52% rename from Engine/ObvMetaManager/ObvMetaManager/CommonTypes/MessageIdentifier.swift rename to Engine/ObvTypes/ObvTypes/ObvMessageIdentifier.swift index cf299e2d..202a74b0 100644 --- a/Engine/ObvMetaManager/ObvMetaManager/CommonTypes/MessageIdentifier.swift +++ b/Engine/ObvTypes/ObvTypes/ObvMessageIdentifier.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,9 +20,9 @@ import Foundation import ObvCrypto import ObvEncoder -import ObvTypes -public struct MessageIdentifier: Equatable, Hashable, CustomDebugStringConvertible { + +public struct ObvMessageIdentifier: Equatable, Hashable, CustomDebugStringConvertible { public let uid: UID public let ownedCryptoIdentity: ObvCryptoIdentity @@ -38,7 +38,7 @@ public struct MessageIdentifier: Equatable, Hashable, CustomDebugStringConvertib self.init(ownedCryptoIdentity: ownedCryptoIdentity, uid: uid) } - public static func == (lhs: MessageIdentifier, rhs: MessageIdentifier) -> Bool { + public static func == (lhs: ObvMessageIdentifier, rhs: ObvMessageIdentifier) -> Bool { return lhs.uid == rhs.uid && lhs.ownedCryptoIdentity == rhs.ownedCryptoIdentity } @@ -50,9 +50,58 @@ public struct MessageIdentifier: Equatable, Hashable, CustomDebugStringConvertib public var debugDescription: String { return uid.debugDescription } + + + public var directoryNameForMessageAttachments: String { + let sha256 = ObvCryptoSuite.sharedInstance.hashFunctionSha256() + let rawValue = ownedCryptoIdentity.getIdentity() + uid.raw + let directoryName = sha256.hash(rawValue) + return directoryName.hexString() + } + + + /// 2023-07-07 This was the old way of computing the name of the directory allowing to store attachments for this message (in upload and download). + /// This method is not deterministic, leading to potential bug. It is only here for delaing with legacy situations and shall not be used for any other reason. + /// Use ``directoryNameForMessageAttachments`` instead. + public var legacyDirectoryNamesForMessageAttachments: Set { + var namesToReturn = Set() + let encoder = JSONEncoder() + let sha256 = ObvCryptoSuite.sharedInstance.hashFunctionSha256() + do { + encoder.outputFormatting = .sortedKeys + if let rawValue = try? encoder.encode(self) { + let directoryName = sha256.hash(rawValue).hexString() + namesToReturn.insert(directoryName) + } else { + assertionFailure() + } + } + // The previous name was constructed on the basis of a json with the .sortedKeys option. + // We manually construct the json with reversed keys. + if let ownedCryptoIdentityValueData = try? encoder.encode(self.ownedCryptoIdentity.getIdentity()), + let ownedCryptoIdentityValue = String(data: ownedCryptoIdentityValueData, encoding: .utf8), + let uidRaw = try? encoder.encode(self.uid), + let uidValue = String(data: uidRaw, encoding: .utf8), + let rawValue = [ + "{", + [ + ["\"uid\"", uidValue].joined(separator: ":"), + ["\"owned_crypto_identity\"", ownedCryptoIdentityValue].joined(separator: ":"), + ].joined(separator: ","), + "}", + ].joined().data(using: .utf8) { + let directoryName = sha256.hash(rawValue).hexString() + namesToReturn.insert(directoryName) + } else { + assertionFailure() + } + return namesToReturn + } + } -extension MessageIdentifier: Codable { + +extension ObvMessageIdentifier: Codable { private static let errorDomain = "MessageIdentifier" @@ -78,38 +127,8 @@ extension MessageIdentifier: Codable { let identity = try values.decode(Data.self, forKey: .ownedCryptoIdentity) guard let ownedIdentity = ObvCryptoIdentity(from: identity) else { assertionFailure() - throw MessageIdentifier.makeError(message: "Decode error") + throw ObvMessageIdentifier.makeError(message: "Decode error") } self.ownedCryptoIdentity = ownedIdentity } } - - -extension MessageIdentifier: RawRepresentable { - - public var rawValue: Data { - let encoder = JSONEncoder() - return try! encoder.encode(self) - } - - public init?(rawValue: Data) { - let decoder = JSONDecoder() - guard let messageId = try? decoder.decode(MessageIdentifier.self, from: rawValue) else { return nil } - self = messageId - } - -} - - -extension MessageIdentifier: LosslessStringConvertible { - - public var description: String { - return String(data: self.rawValue, encoding: .utf8)! - } - - public init?(_ description: String) { - guard let rawValue = description.data(using: .utf8) else { assertionFailure(); return nil } - self.init(rawValue: rawValue) - } - -} diff --git a/Engine/ObvTypes/ObvTypes/ObvOwnedDeviceDiscoveryResult.swift b/Engine/ObvTypes/ObvTypes/ObvOwnedDeviceDiscoveryResult.swift new file mode 100644 index 00000000..5b8f6446 --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/ObvOwnedDeviceDiscoveryResult.swift @@ -0,0 +1,53 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + +/// Used to inform the app about the result of a call to the owned device discovery server method. +public struct ObvOwnedDeviceDiscoveryResult { + + public let devices: Set + public let isMultidevice: Bool + + public init(devices: Set, isMultidevice: Bool) { + self.devices = devices + self.isMultidevice = isMultidevice + } + + public struct Device: Hashable, Identifiable { + + public let identifier: Data + public let expirationDate: Date? + public let latestRegistrationDate: Date? + public let name: String? + + public var id: Data { + identifier + } + + public init(identifier: Data, expirationDate: Date?, latestRegistrationDate: Date?, name: String?) { + self.identifier = identifier + self.expirationDate = expirationDate + self.latestRegistrationDate = latestRegistrationDate + self.name = name + } + + } + +} diff --git a/Engine/ObvTypes/ObvTypes/ObvPushNotificationType.swift b/Engine/ObvTypes/ObvTypes/ObvPushNotificationType.swift index cea2fcb7..572d21e1 100644 --- a/Engine/ObvTypes/ObvTypes/ObvPushNotificationType.swift +++ b/Engine/ObvTypes/ObvTypes/ObvPushNotificationType.swift @@ -22,10 +22,125 @@ import ObvEncoder import ObvCrypto -public enum ObvPushNotificationType: Equatable, CustomDebugStringConvertible { +public enum ObvPushNotificationType: Hashable, Equatable, CustomDebugStringConvertible { - case remote(ownedCryptoId: ObvCryptoIdentity, currentDeviceUID: UID, pushToken: Data, voipToken: Data?, maskingUID: UID, parameters: ObvPushNotificationParameters) - case registerDeviceUid(ownedCryptoId: ObvCryptoIdentity, currentDeviceUID: UID, parameters: ObvPushNotificationParameters) // Used by the simulator + case remote(ownedCryptoId: ObvCryptoIdentity, currentDeviceUID: UID, commonParameters: CommonParameters, optionalParameter: OptionalParameter, remoteTypeParameters: RemoteTypeParameters) + case registerDeviceUid(ownedCryptoId: ObvCryptoIdentity, currentDeviceUID: UID, commonParameters: CommonParameters, optionalParameter: OptionalParameter = .none) // Used by the simulator + + public var debugDescription: String { + switch self { + case .remote(let ownedCryptoId, let currentDeviceUID, let commonParameters, let optionalParameter, let remoteTypeParameters): + let values = [ + ownedCryptoId.debugDescription, + currentDeviceUID.debugDescription, + commonParameters.debugDescription, + optionalParameter.debugDescription, + remoteTypeParameters.debugDescription, + ] + return "ObvPushNotificationType-remote<\(values.joined(separator: ","))>" + case .registerDeviceUid(let ownedCryptoId, let currentDeviceUID, let commonParameters, let optionalParameter): + let values = [ + ownedCryptoId.debugDescription, + currentDeviceUID.debugDescription, + commonParameters.debugDescription, + optionalParameter.debugDescription, + ] + return "ObvPushNotificationType-registerDeviceUid<\(values.joined(separator: ","))>" + } + } + + + public struct CommonParameters: Hashable, Equatable, CustomDebugStringConvertible { + + public let keycloakPushTopics: Set + public let deviceNameForFirstRegistration: String + + public init(keycloakPushTopics: Set, deviceNameForFirstRegistration: String) { + self.keycloakPushTopics = keycloakPushTopics + self.deviceNameForFirstRegistration = deviceNameForFirstRegistration + } + + public var debugDescription: String { + let values = [ + keycloakPushTopics.debugDescription, + deviceNameForFirstRegistration, + ] + return "CommonParameters<\(values.joined(separator: ","))>" + } + + } + + + public func remoteNotificationByteIdentifierForServer(from originalRemoteNotificationByteIdentifierForServer: Data) -> Data { + switch self { + case .remote: + return originalRemoteNotificationByteIdentifierForServer + case .registerDeviceUid: + return Data([0xff]) + } + } + + + public struct RemoteTypeParameters: Hashable, Equatable, CustomDebugStringConvertible { + + public let pushToken: Data + public let voipToken: Data? + public let maskingUID: UID + + public var debugDescription: String { + let values = [ + String(pushToken.hexString().prefix(8)), + String(voipToken?.hexString().prefix(8) ?? "nil"), + maskingUID.debugDescription, + ] + return "RemoteTypeParameters<\(values.joined(separator: ","))>" + } + + public init(pushToken: Data, voipToken: Data?, maskingUID: UID) { + self.pushToken = pushToken + self.voipToken = voipToken + self.maskingUID = maskingUID + } + + } + + public enum OptionalParameter: Hashable, Equatable, CustomDebugStringConvertible { + case none + case reactivateCurrentDevice(replacedDeviceUid: UID?) + case forceRegister + + public var debugDescription: String { + let value: String + switch self { + case .none: + value = "none" + case .reactivateCurrentDevice(let replacedDeviceUid): + value = "reactivateCurrentDevice(\(replacedDeviceUid?.debugDescription ?? "nil")" + case .forceRegister: + value = "forceRegister" + } + return "OptionalParameter<\(value)>" + } + + public var reactivateCurrentDevice: Bool { + switch self { + case .none, .forceRegister: + return false + case .reactivateCurrentDevice: + return true + } + } + + public var replacedDeviceUid: UID? { + switch self { + case .none, .forceRegister: + return nil + case .reactivateCurrentDevice(let replacedDeviceUid): + return replacedDeviceUid + } + } + + } public enum ByteId: UInt8, CaseIterable { case remote = 0x00 // For iOS (the code is 0x01 for Android) @@ -47,114 +162,192 @@ public enum ObvPushNotificationType: Equatable, CustomDebugStringConvertible { } } - public var ownedCryptoId: ObvCryptoIdentity { - switch self { - case .remote(let ownedCryptoId, _, _, _, _, _): - return ownedCryptoId - case .registerDeviceUid(let ownedCryptoId, _, _): - return ownedCryptoId - } - } public var currentDeviceUID: UID { switch self { - case .remote(_, let currentDeviceUID, _, _, _, _): + case .registerDeviceUid(ownedCryptoId: _, currentDeviceUID: let currentDeviceUID, commonParameters: _, optionalParameter: _): return currentDeviceUID - case .registerDeviceUid(_, let currentDeviceUID, _): + case .remote(ownedCryptoId: _, currentDeviceUID: let currentDeviceUID, commonParameters: _, optionalParameter: _, remoteTypeParameters: _): return currentDeviceUID } } + - public var kickOtherDevices: Bool { + public var optionalParameter: OptionalParameter { switch self { - case .remote(_, _, _, _, _, let parameters): - return parameters.kickOtherDevices - case .registerDeviceUid(_, _, let parameters): - return parameters.kickOtherDevices + case .registerDeviceUid(ownedCryptoId: _, currentDeviceUID: _, commonParameters: _, optionalParameter: let optionalParameter): + return optionalParameter + case .remote(ownedCryptoId: _, currentDeviceUID: _, commonParameters: _, optionalParameter: let optionalParameter, remoteTypeParameters: _): + return optionalParameter } } + - public func hasSameType(than other: ObvPushNotificationType) -> Bool { - return self.byteId == other.byteId + public var commonParameters: CommonParameters { + switch self { + case .registerDeviceUid(ownedCryptoId: _, currentDeviceUID: _, commonParameters: let commonParameters, optionalParameter: _): + return commonParameters + case .remote(ownedCryptoId: _, currentDeviceUID: _, commonParameters: let commonParameters, optionalParameter: _, remoteTypeParameters: _): + return commonParameters + } } - public static func == (lhs: ObvPushNotificationType, rhs: ObvPushNotificationType) -> Bool { - switch lhs { - case .remote(ownedCryptoId: let ownedCryptoId, currentDeviceUID: let currentDeviceUID, pushToken: let deviceToken, voipToken: let voipToken, maskingUID: let maskingUID, parameters: let parameters): - switch rhs { - case .remote(ownedCryptoId: let otherOwnedCryptoId, currentDeviceUID: let otherCurrentDeviceUID, pushToken: let otherDeviceToken, voipToken: let otherVoipToken, maskingUID: let otherMaskingUID, parameters: let otherParameters): - return ownedCryptoId == otherOwnedCryptoId && currentDeviceUID == otherCurrentDeviceUID && deviceToken == otherDeviceToken && voipToken == otherVoipToken && maskingUID == otherMaskingUID && parameters == otherParameters - default: - return false - } - case .registerDeviceUid(ownedCryptoId: let ownedCryptoId, currentDeviceUID: let currentDeviceUID, parameters: let parameters): - switch rhs { - case .registerDeviceUid(ownedCryptoId: let otherOwnedCryptoId, currentDeviceUID: let otherCurrentDeviceUID, parameters: let otherParameters): - return ownedCryptoId == otherOwnedCryptoId && currentDeviceUID == otherCurrentDeviceUID && parameters == otherParameters - default: - return false - } + public var remoteTypeParameters: RemoteTypeParameters? { + switch self { + case .registerDeviceUid: + return nil + case .remote(ownedCryptoId: _, currentDeviceUID: _, commonParameters: _, optionalParameter: _, remoteTypeParameters: let remoteTypeParameters): + return remoteTypeParameters } } - - public func withUpdatedKeycloakPushTopics(_ newKeycloakPushTopics: Set) -> ObvPushNotificationType { + + public var ownedCryptoId: ObvCryptoIdentity { switch self { - case .remote(let ownedCryptoId, let currentDeviceUID, let pushToken, let voipToken, let maskingUID, let parameters): - return .remote( - ownedCryptoId: ownedCryptoId, - currentDeviceUID: currentDeviceUID, - pushToken: pushToken, - voipToken: voipToken, - maskingUID: maskingUID, - parameters: parameters.withUpdatedKeycloakPushTopics(newKeycloakPushTopics)) - case .registerDeviceUid(let ownedCryptoId, let currentDeviceUID, let parameters): - return .registerDeviceUid( - ownedCryptoId: ownedCryptoId, - currentDeviceUID: currentDeviceUID, - parameters: parameters.withUpdatedKeycloakPushTopics(newKeycloakPushTopics)) + case .registerDeviceUid(ownedCryptoId: let ownedCryptoId, currentDeviceUID: _, commonParameters: _, optionalParameter: _): + return ownedCryptoId + case .remote(ownedCryptoId: let ownedCryptoId, currentDeviceUID: _, commonParameters: _, optionalParameter: _, remoteTypeParameters: _): + return ownedCryptoId } } + +// public var ownedCryptoId: ObvCryptoIdentity { +// switch self { +// case .remote(let ownedCryptoId, _, _, _, _, _): +// return ownedCryptoId +// case .registerDeviceUid(let ownedCryptoId, _, _): +// return ownedCryptoId +// } +// } +// +// public var currentDeviceUID: UID { +// switch self { +// case .remote(_, let currentDeviceUID, _, _, _, _): +// return currentDeviceUID +// case .registerDeviceUid(_, let currentDeviceUID, _): +// return currentDeviceUID +// } +// } +// +// +// public var parameters: ObvPushNotificationParameters { +// switch self { +// case .remote(_, _, _, _, _, let parameters): +// return parameters +// case .registerDeviceUid(_, _, let parameters): +// return parameters +// } +// } + -} - - -// MARK: - CustomDebugStringConvertible - -public extension ObvPushNotificationType { - - var debugDescription: String { - switch self { - case .remote(ownedCryptoId: let ownedCryptoId, currentDeviceUID: let currentDeviceUID, pushToken: let pushToken, voipToken: let voipToken, maskingUID: let maskingUID, parameters: let parameters): - return "ObvPushNotificationType" - case .registerDeviceUid(ownedCryptoId: let ownedCryptoId, currentDeviceUID: let currentDeviceUID, parameters: let parameters): - return "ObvPushNotificationType" - } - } +// public func hasSameType(than other: ObvPushNotificationType) -> Bool { +// return self.byteId == other.byteId +// } +// +// +// public static func == (lhs: ObvPushNotificationType, rhs: ObvPushNotificationType) -> Bool { +// switch lhs { +// case .remote(ownedCryptoId: let ownedCryptoId, currentDeviceUID: let currentDeviceUID, pushToken: let deviceToken, voipToken: let voipToken, maskingUID: let maskingUID, parameters: let parameters): +// switch rhs { +// case .remote(ownedCryptoId: let otherOwnedCryptoId, currentDeviceUID: let otherCurrentDeviceUID, pushToken: let otherDeviceToken, voipToken: let otherVoipToken, maskingUID: let otherMaskingUID, parameters: let otherParameters): +// return ownedCryptoId == otherOwnedCryptoId && currentDeviceUID == otherCurrentDeviceUID && deviceToken == otherDeviceToken && voipToken == otherVoipToken && maskingUID == otherMaskingUID && parameters == otherParameters +// default: +// return false +// } +// case .registerDeviceUid(ownedCryptoId: let ownedCryptoId, currentDeviceUID: let currentDeviceUID, parameters: let parameters): +// switch rhs { +// case .registerDeviceUid(ownedCryptoId: let otherOwnedCryptoId, currentDeviceUID: let otherCurrentDeviceUID, parameters: let otherParameters): +// return ownedCryptoId == otherOwnedCryptoId && currentDeviceUID == otherCurrentDeviceUID && parameters == otherParameters +// default: +// return false +// } +// } +// } + +// public func withUpdatedKeycloakPushTopics(_ newKeycloakPushTopics: Set) -> ObvPushNotificationType { +// switch self { +// case .remote(let ownedCryptoId, let currentDeviceUID, let pushToken, let voipToken, let maskingUID, let parameters): +// return .remote( +// ownedCryptoId: ownedCryptoId, +// currentDeviceUID: currentDeviceUID, +// pushToken: pushToken, +// voipToken: voipToken, +// maskingUID: maskingUID, +// parameters: parameters.withUpdatedKeycloakPushTopics(newKeycloakPushTopics)) +// case .registerDeviceUid(let ownedCryptoId, let currentDeviceUID, let parameters): +// return .registerDeviceUid( +// ownedCryptoId: ownedCryptoId, +// currentDeviceUID: currentDeviceUID, +// parameters: parameters.withUpdatedKeycloakPushTopics(newKeycloakPushTopics)) +// } +// } +// +// public func withForcedRegister() -> ObvPushNotificationType { +// switch self { +// case .remote(let ownedCryptoId, let currentDeviceUID, let pushToken, let voipToken, let maskingUID, let parameters): +// return .remote( +// ownedCryptoId: ownedCryptoId, +// currentDeviceUID: currentDeviceUID, +// pushToken: pushToken, +// voipToken: voipToken, +// maskingUID: maskingUID, +// parameters: parameters.withForcedRegister()) +// case .registerDeviceUid(let ownedCryptoId, let currentDeviceUID, let parameters): +// return .registerDeviceUid( +// ownedCryptoId: ownedCryptoId, +// currentDeviceUID: currentDeviceUID, +// parameters: parameters.withForcedRegister()) +// } +// } + } -public struct ObvPushNotificationParameters: Equatable, CustomDebugStringConvertible { - - public let kickOtherDevices: Bool - public let useMultiDevice: Bool - public let keycloakPushTopics: Set +// MARK: - CustomDebugStringConvertible - public init(kickOtherDevices: Bool, useMultiDevice: Bool, keycloakPushTopics: Set) { - self.kickOtherDevices = kickOtherDevices - self.useMultiDevice = useMultiDevice - self.keycloakPushTopics = keycloakPushTopics - } +//public extension ObvPushNotificationType { +// +// var debugDescription: String { +// switch self { +// case .remote(ownedCryptoId: let ownedCryptoId, currentDeviceUID: let currentDeviceUID, pushToken: let pushToken, voipToken: let voipToken, maskingUID: let maskingUID, parameters: let parameters): +// return "ObvPushNotificationType" +// case .registerDeviceUid(ownedCryptoId: let ownedCryptoId, currentDeviceUID: let currentDeviceUID, parameters: let parameters): +// return "ObvPushNotificationType" +// } +// } +// +//} - public var debugDescription: String { - return "kickOtherDevices: \(kickOtherDevices), useMultiDevice: \(useMultiDevice), keycloakPushTopics: \(keycloakPushTopics.joined(separator: ", "))" - } - - func withUpdatedKeycloakPushTopics(_ newKeycloakPushTopics: Set) -> ObvPushNotificationParameters { - return ObvPushNotificationParameters(kickOtherDevices: kickOtherDevices, useMultiDevice: useMultiDevice, keycloakPushTopics: newKeycloakPushTopics) - } - -} +//public struct ObvPushNotificationParameters: Hashable, Equatable, CustomDebugStringConvertible { +// +// public let reactivateCurrentDevice: Bool +// public let replacedDeviceUid: UID? +// public let keycloakPushTopics: Set +// public let encryptedDeviceNameForFirstRegistration: EncryptedData +// public let forceRegister: Bool +// +// public init(reactivateCurrentDevice: Bool, replacedDeviceUid: UID?, keycloakPushTopics: Set, encryptedDeviceNameForFirstRegistration: EncryptedData, forceRegister: Bool) { +// self.reactivateCurrentDevice = reactivateCurrentDevice +// self.replacedDeviceUid = replacedDeviceUid +// self.keycloakPushTopics = keycloakPushTopics +// self.encryptedDeviceNameForFirstRegistration = encryptedDeviceNameForFirstRegistration +// self.forceRegister = forceRegister +// } +// +// +// public var debugDescription: String { +// return "reactivateCurrentDevice: \(reactivateCurrentDevice), keycloakPushTopics: \(keycloakPushTopics.joined(separator: ", "))" +// } +// +// func withUpdatedKeycloakPushTopics(_ newKeycloakPushTopics: Set) -> ObvPushNotificationParameters { +// return ObvPushNotificationParameters(reactivateCurrentDevice: reactivateCurrentDevice, replacedDeviceUid: replacedDeviceUid, keycloakPushTopics: newKeycloakPushTopics, encryptedDeviceNameForFirstRegistration: encryptedDeviceNameForFirstRegistration, forceRegister: forceRegister) +// } +// +// func withForcedRegister() -> ObvPushNotificationParameters { +// return ObvPushNotificationParameters(reactivateCurrentDevice: reactivateCurrentDevice, replacedDeviceUid: replacedDeviceUid, keycloakPushTopics: keycloakPushTopics, encryptedDeviceNameForFirstRegistration: encryptedDeviceNameForFirstRegistration, forceRegister: true) +// } +// +//} diff --git a/Modules/OlvidUI/ObvUI/ObvUI/en.lproj/Localizable.strings b/Engine/ObvTypes/ObvTypes/ObvRegisterApiKeyResult.swift similarity index 83% rename from Modules/OlvidUI/ObvUI/ObvUI/en.lproj/Localizable.strings rename to Engine/ObvTypes/ObvTypes/ObvRegisterApiKeyResult.swift index 7566abb3..9950c620 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/en.lproj/Localizable.strings +++ b/Engine/ObvTypes/ObvTypes/ObvRegisterApiKeyResult.swift @@ -17,7 +17,11 @@ * along with Olvid. If not, see . */ +import Foundation -"DISCUSSIONS_FILTER_CELL_PICKER_TEXT" = "Filter discussions"; -"DISCUSSIONS_LIST_SELECTION_PLACEHOLDER_CELL" = "Select one or more discussions"; +public enum ObvRegisterApiKeyResult { + case success + case failed + case invalidAPIKey +} diff --git a/Engine/ObvTypes/ObvTypes/ObvSyncAtom.swift b/Engine/ObvTypes/ObvTypes/ObvSyncAtom.swift new file mode 100644 index 00000000..eee88716 --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/ObvSyncAtom.swift @@ -0,0 +1,517 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder +import ObvCrypto + + +public enum ObvSyncAtom: ObvCodable, Equatable, CustomDebugStringConvertible { + + case contactNickname(contactCryptoId: ObvCryptoId, contactNickname: String?) + case groupV1Nickname(groupOwner: ObvCryptoId, groupUid: UID, groupNickname: String?) + case groupV2Nickname(groupIdentifier: Data, groupNickname: String?) + case contactPersonalNote(contactCryptoId: ObvCryptoId, note: String?) + case groupV1PersonalNote(groupOwner: ObvCryptoId, groupUid: UID, note: String?) + case groupV2PersonalNote(groupIdentifier: Data, note: String?) + case ownProfileNickname(nickname: String?) + case contactCustomHue(contactCryptoId: ObvCryptoId, customHue: Int?) // Not implemented under iOS + case contactSendReadReceipt(contactCryptoId: ObvCryptoId, doSendReadReceipt: Bool?) + case groupV1ReadReceipt(groupOwner: ObvCryptoId, groupUid: UID, doSendReadReceipt: Bool?) + case groupV2ReadReceipt(groupIdentifier: Data, doSendReadReceipt: Bool?) + case pinnedDiscussions(discussionIdentifiers: [DiscussionIdentifier], ordered: Bool) + case trustContactDetails(contactCryptoId: ObvCryptoId, serializedIdentityDetailsElements: Data) + case trustGroupV1Details(groupOwner: ObvCryptoId, groupUid: UID, serializedGroupDetailsElements: Data) + case trustGroupV2Details(groupIdentifier: Data, version: Int) + case settingDefaultSendReadReceipts(sendReadReceipt: Bool) + case settingAutoJoinGroups(category: AutoJoinGroupsCategory) + + public enum AutoJoinGroupsCategory: String, ObvCodable { + case everyone = "everyone" + case contacts = "contacts" + case nobody = "nobody" + public func obvEncode() -> ObvEncoded { + return self.rawValue.obvEncode() + } + public init?(_ obvEncoded: ObvEncoded) { + guard let rawValue: String = try? obvEncoded.obvDecode(), + let value = AutoJoinGroupsCategory(rawValue: rawValue) else { assertionFailure(); return nil } + self = value + } + } + + /// This enum is used in certain `ObvSyncAtom` (well, for now, only in the pinnedDiscussions atom) + public enum DiscussionIdentifier: Equatable, Hashable, ObvCodable { + + case oneToOne(contactCryptoId: ObvCryptoId) + case groupV1(groupIdentifier: GroupV1Identifier) + case groupV2(groupIdentifier: GroupV2Identifier) + + private enum DiscussionIdentifierRawValue: Int, CaseIterable, ObvCodable { + + case oneToOne = 0 + case groupV1 = 1 + case groupV2 = 2 + + init?(_ obvEncoded: ObvEncoder.ObvEncoded) { + guard let rawValue: Int = try? obvEncoded.obvDecode() else { assertionFailure(); return nil } + guard let value = DiscussionIdentifierRawValue(rawValue: rawValue) else { assertionFailure(); return nil } + self = value + } + + func obvEncode() -> ObvEncoder.ObvEncoded { + self.rawValue.obvEncode() + } + + } + + public func obvEncode() -> ObvEncoded { + switch self { + case .oneToOne(contactCryptoId: let contactCryptoId): + return [DiscussionIdentifierRawValue.oneToOne, contactCryptoId].obvEncode() + case .groupV1(groupIdentifier: let groupIdentifier): + return [DiscussionIdentifierRawValue.groupV1, groupIdentifier.groupOwner, groupIdentifier.groupUid].obvEncode() + case .groupV2(groupIdentifier: let groupIdentifier): + return [DiscussionIdentifierRawValue.groupV2, groupIdentifier].obvEncode() + } + } + + public init?(_ obvEncoded: ObvEncoded) { + guard let listOfEncoded = [ObvEncoded](obvEncoded) else { assertionFailure(); return nil } + guard let encodedRawValue = listOfEncoded.first else { assertionFailure(); return nil } + let remainingEncodedElements = [ObvEncoded](listOfEncoded.dropFirst()) + guard let discussionIdentifierRawValue = DiscussionIdentifierRawValue(encodedRawValue) else { assertionFailure(); return nil } + do { + switch discussionIdentifierRawValue { + case .oneToOne: + guard remainingEncodedElements.count == 1 else { assertionFailure(); return nil } + let contactCryptoId: ObvCryptoId = try remainingEncodedElements.obvDecode() + self = .oneToOne(contactCryptoId: contactCryptoId) + case .groupV1: + guard remainingEncodedElements.count == 2 else { assertionFailure(); return nil } + let (groupOwner, groupUid): (ObvCryptoId, UID) = try remainingEncodedElements.obvDecode() + self = .groupV1(groupIdentifier: GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner)) + case .groupV2: + guard remainingEncodedElements.count == 1 else { assertionFailure(); return nil } + let groupIdentifier: Data = try remainingEncodedElements.obvDecode() + self = .groupV2(groupIdentifier: groupIdentifier) + } + } catch { + assertionFailure() + return nil + } + } + + } + + public func obvEncode() -> ObvEncoded { + switch self { + case .contactNickname(let contactCryptoId, let contactNickname): + if let contactNickname { + return [ObvSyncAtomRawValue.contactNickname, contactCryptoId, contactNickname].obvEncode() + } else { + return [ObvSyncAtomRawValue.contactNickname, contactCryptoId].obvEncode() + } + case .groupV1Nickname(let groupOwner, let groupUid, let groupNickname): + if let groupNickname { + return [ObvSyncAtomRawValue.groupV1Nickname, groupOwner, groupUid, groupNickname].obvEncode() + } else { + return [ObvSyncAtomRawValue.groupV1Nickname, groupOwner, groupUid].obvEncode() + } + case .groupV2Nickname(let groupIdentifier, let groupNickname): + if let groupNickname { + return [ObvSyncAtomRawValue.groupV2Nickname, groupIdentifier, groupNickname].obvEncode() + } else { + return [ObvSyncAtomRawValue.groupV2Nickname, groupIdentifier].obvEncode() + } + case .contactPersonalNote(let contactCryptoId, let note): + if let note { + return [ObvSyncAtomRawValue.contactPersonalNote, contactCryptoId, note].obvEncode() + } else { + return [ObvSyncAtomRawValue.contactPersonalNote, contactCryptoId].obvEncode() + } + case .groupV1PersonalNote(let groupOwner, let groupUid, let note): + if let note { + return [ObvSyncAtomRawValue.groupV1PersonalNote, groupOwner, groupUid, note].obvEncode() + } else { + return [ObvSyncAtomRawValue.groupV1PersonalNote, groupOwner, groupUid].obvEncode() + } + case .groupV2PersonalNote(let groupIdentifier, let note): + if let note { + return [ObvSyncAtomRawValue.groupV2PersonalNote, groupIdentifier, note].obvEncode() + } else { + return [ObvSyncAtomRawValue.groupV2PersonalNote, groupIdentifier].obvEncode() + } + case .ownProfileNickname(let nickname): + if let nickname, !nickname.isEmpty { + return [ObvSyncAtomRawValue.ownProfileNickname, nickname].obvEncode() + } else { + return [ObvSyncAtomRawValue.ownProfileNickname].obvEncode() + } + case .contactCustomHue(let contactCryptoId, let customHue): + if let customHue { + return [ObvSyncAtomRawValue.contactCustomHue, contactCryptoId, customHue].obvEncode() + } else { + return [ObvSyncAtomRawValue.contactCustomHue, contactCryptoId].obvEncode() + } + case .contactSendReadReceipt(let contactCryptoId, let doSendReadReceipt): + if let doSendReadReceipt { + return [ObvSyncAtomRawValue.contactSendReadReceipt, contactCryptoId, doSendReadReceipt].obvEncode() + } else { + return [ObvSyncAtomRawValue.contactSendReadReceipt, contactCryptoId].obvEncode() + } + case .groupV1ReadReceipt(let groupOwner, let groupUid, let doSendReadReceipt): + if let doSendReadReceipt { + return [ObvSyncAtomRawValue.groupV1ReadReceipt, groupOwner, groupUid, doSendReadReceipt].obvEncode() + } else { + return [ObvSyncAtomRawValue.groupV1ReadReceipt, groupOwner, groupUid].obvEncode() + } + case .groupV2ReadReceipt(let groupIdentifier, let doSendReadReceipt): + if let doSendReadReceipt { + return [ObvSyncAtomRawValue.groupV2ReadReceipt, groupIdentifier, doSendReadReceipt].obvEncode() + } else { + return [ObvSyncAtomRawValue.groupV2ReadReceipt, groupIdentifier].obvEncode() + } + case .pinnedDiscussions(let discussionIdentifiers, let ordered): + let encodedDiscussionIdentifiers: [ObvEncoded] = discussionIdentifiers.map { $0.obvEncode() } + return [ObvSyncAtomRawValue.pinnedDiscussions.obvEncode(), encodedDiscussionIdentifiers.obvEncode(), ordered.obvEncode()].obvEncode() + case .trustContactDetails(contactCryptoId: let contactCryptoId, serializedIdentityDetailsElements: let serializedIdentityDetailsElements): + return [ObvSyncAtomRawValue.trustContactDetails, contactCryptoId, serializedIdentityDetailsElements].obvEncode() + case .trustGroupV1Details(let groupOwner, let groupUid, let serializedGroupDetailsElements): + return [ObvSyncAtomRawValue.trustGroupV1Details, groupOwner, groupUid, serializedGroupDetailsElements].obvEncode() + case .trustGroupV2Details(let groupIdentifier, let version): + return [ObvSyncAtomRawValue.trustGroupV2Details, groupIdentifier, version].obvEncode() + case .settingDefaultSendReadReceipts(let sendReadReceipt): + return [ObvSyncAtomRawValue.settingDefaultSendReadReceipts, sendReadReceipt].obvEncode() + case .settingAutoJoinGroups(let category): + return [ObvSyncAtomRawValue.settingAutoJoinGroups, category].obvEncode() + } + } + + + public init?(_ obvEncoded: ObvEncoded) { + guard let listOfEncoded = [ObvEncoded](obvEncoded) else { assertionFailure(); return nil } + guard let encodedRawValue = listOfEncoded.first else { assertionFailure(); return nil } + let remainingEncodedElements = [ObvEncoded](listOfEncoded.dropFirst()) + guard let syncAtomRawValue = ObvSyncAtomRawValue(encodedRawValue) else { assertionFailure(); return nil} + do { + switch syncAtomRawValue { + case .contactNickname: + switch remainingEncodedElements.count { + case 1: + let contactCryptoId: ObvCryptoId = try remainingEncodedElements.obvDecode() + self = .contactNickname(contactCryptoId: contactCryptoId, contactNickname: nil) + case 2: + let (contactCryptoId, contactNickname): (ObvCryptoId, String) = try remainingEncodedElements.obvDecode() + self = .contactNickname(contactCryptoId: contactCryptoId, contactNickname: contactNickname) + default: + assertionFailure() + return nil + } + case .groupV1Nickname: + switch remainingEncodedElements.count { + case 2: + let (groupOwner, groupUid): (ObvCryptoId, UID) = try remainingEncodedElements.obvDecode() + self = .groupV1Nickname(groupOwner: groupOwner, groupUid: groupUid, groupNickname: nil) + case 3: + let (groupOwner, groupUid, groupNickname): (ObvCryptoId, UID, String) = try remainingEncodedElements.obvDecode() + self = .groupV1Nickname(groupOwner: groupOwner, groupUid: groupUid, groupNickname: groupNickname) + default: + assertionFailure() + return nil + } + case .groupV2Nickname: + switch remainingEncodedElements.count { + case 1: + let groupIdentifier: Data = try remainingEncodedElements.obvDecode() + self = .groupV2Nickname(groupIdentifier: groupIdentifier, groupNickname: nil) + case 2: + let (groupIdentifier, groupNickname): (Data, String) = try remainingEncodedElements.obvDecode() + self = .groupV2Nickname(groupIdentifier: groupIdentifier, groupNickname: groupNickname) + default: + assertionFailure() + return nil + } + case .contactPersonalNote: + switch remainingEncodedElements.count { + case 1: + let contactCryptoId: ObvCryptoId = try remainingEncodedElements.obvDecode() + self = .contactPersonalNote(contactCryptoId: contactCryptoId, note: nil) + case 2: + let (contactCryptoId, note): (ObvCryptoId, String?) = try remainingEncodedElements.obvDecode() + self = .contactPersonalNote(contactCryptoId: contactCryptoId, note: note) + default: + assertionFailure() + return nil + } + case .groupV1PersonalNote: + switch remainingEncodedElements.count { + case 2: + let (groupOwner, groupUid): (ObvCryptoId, UID) = try remainingEncodedElements.obvDecode() + self = .groupV1PersonalNote(groupOwner: groupOwner, groupUid: groupUid, note: nil) + case 3: + let (groupOwner, groupUid, note): (ObvCryptoId, UID, String) = try remainingEncodedElements.obvDecode() + self = .groupV1PersonalNote(groupOwner: groupOwner, groupUid: groupUid, note: note) + default: + assertionFailure() + return nil + } + case .groupV2PersonalNote: + switch remainingEncodedElements.count { + case 1: + let groupIdentifier: Data = try remainingEncodedElements.obvDecode() + self = .groupV2PersonalNote(groupIdentifier: groupIdentifier, note: nil) + case 2: + let (groupIdentifier, note): (Data, String) = try remainingEncodedElements.obvDecode() + self = .groupV2PersonalNote(groupIdentifier: groupIdentifier, note: note) + default: + assertionFailure() + return nil + } + case .ownProfileNickname: + switch remainingEncodedElements.count { + case 0: + self = .ownProfileNickname(nickname: nil) + case 1: + let nickname: String = try remainingEncodedElements.obvDecode() + self = .ownProfileNickname(nickname: nickname) + default: + assertionFailure() + return nil + } + case .contactCustomHue: + switch remainingEncodedElements.count { + case 1: + let contactCryptoId: ObvCryptoId = try remainingEncodedElements.obvDecode() + self = .contactCustomHue(contactCryptoId: contactCryptoId, customHue: nil) + case 2: + let (contactCryptoId, customHue): (ObvCryptoId, Int) = try remainingEncodedElements.obvDecode() + self = .contactCustomHue(contactCryptoId: contactCryptoId, customHue: customHue) + default: + assertionFailure() + return nil + } + case .contactSendReadReceipt: + switch remainingEncodedElements.count { + case 1: + let contactCryptoId: ObvCryptoId = try remainingEncodedElements.obvDecode() + self = .contactSendReadReceipt(contactCryptoId: contactCryptoId, doSendReadReceipt: nil) + case 2: + let (contactCryptoId, doSendReadReceipt): (ObvCryptoId, Bool) = try remainingEncodedElements.obvDecode() + self = .contactSendReadReceipt(contactCryptoId: contactCryptoId, doSendReadReceipt: doSendReadReceipt) + default: + assertionFailure() + return nil + } + case .groupV1ReadReceipt: + switch remainingEncodedElements.count { + case 2: + let (groupOwner, groupUid): (ObvCryptoId, UID) = try remainingEncodedElements.obvDecode() + self = .groupV1ReadReceipt(groupOwner: groupOwner, groupUid: groupUid, doSendReadReceipt: nil) + case 3: + let (groupOwner, groupUid, doSendReadReceipt): (ObvCryptoId, UID, Bool) = try remainingEncodedElements.obvDecode() + self = .groupV1ReadReceipt(groupOwner: groupOwner, groupUid: groupUid, doSendReadReceipt: doSendReadReceipt) + default: + assertionFailure() + return nil + } + case .groupV2ReadReceipt: + switch remainingEncodedElements.count { + case 1: + let groupIdentifier: Data = try remainingEncodedElements.obvDecode() + self = .groupV2ReadReceipt(groupIdentifier: groupIdentifier, doSendReadReceipt: nil) + case 2: + let (groupIdentifier, doSendReadReceipt): (Data, Bool) = try remainingEncodedElements.obvDecode() + self = .groupV2ReadReceipt(groupIdentifier: groupIdentifier, doSendReadReceipt: doSendReadReceipt) + default: + assertionFailure() + return nil + } + case .pinnedDiscussions: + switch remainingEncodedElements.count { + case 2: + guard let encodedDiscussionIdentifiers = [ObvEncoded](remainingEncodedElements[0]) else { assertionFailure(); return nil } + let discussionIdentifiers = encodedDiscussionIdentifiers.compactMap { DiscussionIdentifier($0) } + guard let ordered = Bool(remainingEncodedElements[1]) else { assertionFailure(); return nil } + self = .pinnedDiscussions(discussionIdentifiers: discussionIdentifiers, ordered: ordered) + default: + assertionFailure() + return nil + } + case .trustContactDetails: + switch remainingEncodedElements.count { + case 2: + let (contactCryptoId, serializedIdentityDetailsElements): (ObvCryptoId, Data) = try remainingEncodedElements.obvDecode() + self = .trustContactDetails(contactCryptoId: contactCryptoId, serializedIdentityDetailsElements: serializedIdentityDetailsElements) + default: + assertionFailure() + return nil + } + case .trustGroupV1Details: + switch remainingEncodedElements.count { + case 3: + let (groupOwner, groupUid, serializedGroupDetailsElements): (ObvCryptoId, UID, Data) = try remainingEncodedElements.obvDecode() + self = .trustGroupV1Details(groupOwner: groupOwner, groupUid: groupUid, serializedGroupDetailsElements: serializedGroupDetailsElements) + default: + assertionFailure() + return nil + } + case .trustGroupV2Details: + switch remainingEncodedElements.count { + case 2: + let (groupIdentifier, version): (Data, Int) = try remainingEncodedElements.obvDecode() + self = .trustGroupV2Details(groupIdentifier: groupIdentifier, version: version) + default: + assertionFailure() + return nil + } + case .settingDefaultSendReadReceipts: + switch remainingEncodedElements.count { + case 1: + let sendReadReceipt: Bool = try remainingEncodedElements.obvDecode() + self = .settingDefaultSendReadReceipts(sendReadReceipt: sendReadReceipt) + default: + assertionFailure() + return nil + } + case .settingAutoJoinGroups: + switch remainingEncodedElements.count { + case 1: + let category: AutoJoinGroupsCategory = try remainingEncodedElements.obvDecode() + self = .settingAutoJoinGroups(category: category) + default: + assertionFailure() + return nil + } + } + } catch { + assertionFailure() + return nil + } + } + + + public enum SyncAtomRecipient { + case app + case identityManager + case notImplementedOniOS + } + + public var recipient: SyncAtomRecipient { + switch self { + case .contactNickname, + .groupV1Nickname, + .groupV2Nickname, + .contactPersonalNote, + .groupV1PersonalNote, + .groupV2PersonalNote, + .ownProfileNickname, + .contactSendReadReceipt, + .groupV1ReadReceipt, + .groupV2ReadReceipt, + .settingDefaultSendReadReceipts, + .settingAutoJoinGroups, + .pinnedDiscussions: + return .app + case .trustContactDetails, + .trustGroupV1Details, + .trustGroupV2Details: + return .identityManager + case .contactCustomHue: + return .notImplementedOniOS + } + } + + public var debugDescription: String { + let prefix = "ObvSyncAtom" + let suffix: String + switch self { + case .contactNickname: + suffix = "contactNickname" + case .groupV1Nickname: + suffix = "groupV1Nickname" + case .groupV2Nickname: + suffix = "groupV2Nickname" + case .contactPersonalNote: + suffix = "contactPersonalNote" + case .groupV1PersonalNote: + suffix = "groupV1PersonalNote" + case .groupV2PersonalNote: + suffix = "groupV2PersonalNote" + case .ownProfileNickname: + suffix = "ownProfileNickname" + case .contactCustomHue: + suffix = "contactCustomHue" + case .contactSendReadReceipt: + suffix = "contactSendReadReceipt" + case .groupV1ReadReceipt: + suffix = "groupV1ReadReceipt" + case .groupV2ReadReceipt: + suffix = "groupV2ReadReceipt" + case .trustContactDetails: + suffix = "trustContactDetails" + case .trustGroupV1Details: + suffix = "trustGroupV1Details" + case .trustGroupV2Details: + suffix = "trustGroupV2Details" + case .pinnedDiscussions: + suffix = "pinnedDiscussions" + case .settingDefaultSendReadReceipts: + suffix = "settingDefaultSendReadReceipts" + case .settingAutoJoinGroups: + suffix = "settingAutoJoinGroups" + } + return [prefix, suffix].joined(separator: ".") + } + +} + + + +private enum ObvSyncAtomRawValue: Int, CaseIterable, ObvCodable { + + case contactNickname = 0 + case groupV1Nickname = 1 + case groupV2Nickname = 2 + case contactPersonalNote = 3 + case groupV1PersonalNote = 4 + case groupV2PersonalNote = 5 + case ownProfileNickname = 6 + case contactCustomHue = 7 // Only available under Android + case contactSendReadReceipt = 8 + case groupV1ReadReceipt = 9 + case groupV2ReadReceipt = 10 + case pinnedDiscussions = 11 + case trustContactDetails = 12 + case trustGroupV1Details = 13 + case trustGroupV2Details = 14 + case settingDefaultSendReadReceipts = 15 + case settingAutoJoinGroups = 16 + + init?(_ obvEncoded: ObvEncoder.ObvEncoded) { + guard let rawValue: Int = try? obvEncoded.obvDecode() else { assertionFailure(); return nil } + guard let value = ObvSyncAtomRawValue(rawValue: rawValue) else { assertionFailure(); return nil } + self = value + } + + func obvEncode() -> ObvEncoder.ObvEncoded { + self.rawValue.obvEncode() + } + +} diff --git a/Engine/ObvEngine/ObvEngine/Types/ObvTurnCredentials.swift b/Engine/ObvTypes/ObvTypes/ObvTurnCredentials.swift similarity index 100% rename from Engine/ObvEngine/ObvEngine/Types/ObvTurnCredentials.swift rename to Engine/ObvTypes/ObvTypes/ObvTurnCredentials.swift diff --git a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvURLIdentity.swift b/Engine/ObvTypes/ObvTypes/ObvURLIdentity.swift similarity index 96% rename from Engine/ObvEngine/ObvEngine/Types/Identities/ObvURLIdentity.swift rename to Engine/ObvTypes/ObvTypes/ObvURLIdentity.swift index 41bdfa3e..b68acc4d 100644 --- a/Engine/ObvEngine/ObvEngine/Types/Identities/ObvURLIdentity.swift +++ b/Engine/ObvTypes/ObvTypes/ObvURLIdentity.swift @@ -20,7 +20,6 @@ import Foundation import ObvCrypto import ObvEncoder -import ObvTypes public struct ObvURLIdentity { @@ -28,13 +27,13 @@ public struct ObvURLIdentity { public let cryptoId: ObvCryptoId public let fullDisplayName: String - init(cryptoId: ObvCryptoId, fullDisplayName: String) { + public init(cryptoId: ObvCryptoId, fullDisplayName: String) { self.cryptoId = cryptoId self.fullDisplayName = fullDisplayName } - init(cryptoIdentity: ObvCryptoIdentity, fullDisplayName: String) { + public init(cryptoIdentity: ObvCryptoIdentity, fullDisplayName: String) { self.init(cryptoId: ObvCryptoId.init(cryptoIdentity: cryptoIdentity), fullDisplayName: fullDisplayName) } diff --git a/Engine/ObvEngine/ObvEngine/Types/ObvAttachment.swift b/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvAttachment.swift similarity index 52% rename from Engine/ObvEngine/ObvEngine/Types/ObvAttachment.swift rename to Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvAttachment.swift index 1a7956e7..2b80ed96 100644 --- a/Engine/ObvEngine/ObvEngine/Types/ObvAttachment.swift +++ b/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvAttachment.swift @@ -19,8 +19,6 @@ import Foundation import CoreData -import ObvMetaManager -import ObvTypes import ObvCrypto import OlvidUtils @@ -44,12 +42,12 @@ public struct ObvAttachment: Hashable { } } - public let fromContactIdentity: ObvContactIdentity + public let fromContactIdentity: ObvContactIdentifier public let metadata: Data public let totalUnitCount: Int64 public let url: URL public let status: Status - internal let attachmentId: AttachmentIdentifier + public let attachmentId: ObvAttachmentIdentifier public let messageUploadTimestampFromServer: Date public var messageIdentifier: Data { @@ -59,82 +57,43 @@ public struct ObvAttachment: Hashable { return attachmentId.attachmentNumber } - var toIdentity: ObvOwnedIdentity { - return fromContactIdentity.ownedIdentity - } - - public var ownedCryptoId: ObvCryptoId { - return fromContactIdentity.ownedIdentity.cryptoId - } - public var downloadPaused: Bool { return self.status == .paused } - - - private static func makeError(message: String, code: Int = 0) -> Error { - NSError(domain: "ObvAttachment", code: code, userInfo: [NSLocalizedFailureReasonErrorKey: message]) - } - - init(attachmentId: AttachmentIdentifier, networkFetchDelegate: ObvNetworkFetchDelegate, identityDelegate: ObvIdentityDelegate, within obvContext: ObvContext) throws { - guard let networkReceivedAttachment = networkFetchDelegate.getAttachment(withId: attachmentId, within: obvContext) else { - throw Self.makeError(message: "Coult not get attachment") - } - try self.init(networkReceivedAttachment: networkReceivedAttachment, identityDelegate: identityDelegate, within: obvContext) - } - init(attachmentId: AttachmentIdentifier, fromContactIdentity: ObvContactIdentity, networkFetchDelegate: ObvNetworkFetchDelegate, within obvContext: ObvContext) throws { - guard let networkReceivedAttachment = networkFetchDelegate.getAttachment(withId: attachmentId, within: obvContext) else { - throw Self.makeError(message: "Coult not get attachment") - } + public init(fromContactIdentity: ObvContactIdentifier, metadata: Data, totalUnitCount: Int64, url: URL, status: Status, attachmentId: ObvAttachmentIdentifier, messageUploadTimestampFromServer: Date) { self.fromContactIdentity = fromContactIdentity - self.attachmentId = networkReceivedAttachment.attachmentId - metadata = networkReceivedAttachment.metadata - url = networkReceivedAttachment.url - status = networkReceivedAttachment.status.toObvAttachmentStatus - self.messageUploadTimestampFromServer = networkReceivedAttachment.messageUploadTimestampFromServer - self.totalUnitCount = networkReceivedAttachment.totalUnitCount - } - - private init(networkReceivedAttachment: ObvNetworkFetchReceivedAttachment, identityDelegate: ObvIdentityDelegate, within obvContext: ObvContext) throws { - - guard let obvContact = ObvContactIdentity(contactCryptoIdentity: networkReceivedAttachment.fromCryptoIdentity, - ownedCryptoIdentity: networkReceivedAttachment.attachmentId.messageId.ownedCryptoIdentity, - identityDelegate: identityDelegate, - within: obvContext) else { - throw Self.makeError(message: "Could not get ObvContactIdentity") - } - self.fromContactIdentity = obvContact - self.attachmentId = networkReceivedAttachment.attachmentId - metadata = networkReceivedAttachment.metadata - url = networkReceivedAttachment.url - status = networkReceivedAttachment.status.toObvAttachmentStatus - self.messageUploadTimestampFromServer = networkReceivedAttachment.messageUploadTimestampFromServer - self.totalUnitCount = networkReceivedAttachment.totalUnitCount + self.metadata = metadata + self.totalUnitCount = totalUnitCount + self.url = url + self.status = status + self.attachmentId = attachmentId + self.messageUploadTimestampFromServer = messageUploadTimestampFromServer } - public func hash(into hasher: inout Hasher) { hasher.combine(attachmentId) } -} - - -fileprivate extension ObvNetworkFetchReceivedAttachment.Status { - var toObvAttachmentStatus: ObvAttachment.Status { - switch self { - case .paused: return .paused - case .resumed: return .resumed - case .downloaded: return .downloaded - case .cancelledByServer: return .cancelledByServer - case .markedForDeletion: return .markedForDeletion + + public enum ObvError: Error { + case couldNotGetAttachment + case couldNotDecodeStatus + + var localizedDescription: String { + switch self { + case .couldNotGetAttachment: + return "Could not get attachment" + case .couldNotDecodeStatus: + return "Could not decode status" + } } } - + } + // MARK: - Codable extension ObvAttachment: Codable { @@ -166,16 +125,16 @@ extension ObvAttachment: Codable { public init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) - self.fromContactIdentity = try values.decode(ObvContactIdentity.self, forKey: .fromContactIdentity) + self.fromContactIdentity = try values.decode(ObvContactIdentifier.self, forKey: .fromContactIdentity) self.metadata = try values.decode(Data.self, forKey: .metadata) self.totalUnitCount = try values.decode(Int64.self, forKey: .progressTotalUnitCount) self.url = try values.decode(URL.self, forKey: .url) let rawStatus = try values.decode(Int.self, forKey: .status) guard let status = Status(rawValue: rawStatus) else { - throw Self.makeError(message: "Could not decode status") + throw ObvError.couldNotDecodeStatus } self.status = status - self.attachmentId = try values.decode(AttachmentIdentifier.self, forKey: .attachmentId) + self.attachmentId = try values.decode(ObvAttachmentIdentifier.self, forKey: .attachmentId) self.messageUploadTimestampFromServer = try values.decode(Date.self, forKey: .messageUploadTimestampFromServer) } diff --git a/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvMessage.swift b/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvMessage.swift new file mode 100644 index 00000000..ef87e367 --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvMessage.swift @@ -0,0 +1,103 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvCrypto + + +public struct ObvMessage { + + public let fromContactIdentity: ObvContactIdentifier + public let messageId: ObvMessageIdentifier + public let attachments: [ObvAttachment] + public let expectedAttachmentsCount: Int + public let messageUploadTimestampFromServer: Date + public let downloadTimestampFromServer: Date + public let localDownloadTimestamp: Date + public let messagePayload: Data + public let extendedMessagePayload: Data? + + /// Legacy variable. Use `messageUID` instead. + public var messageIdentifierFromEngine: Data { + return messageId.uid.raw + } + + public var messageUID: UID { + return messageId.uid + } + + + public init(fromContactIdentity: ObvContactIdentifier, messageId: ObvMessageIdentifier, attachments: [ObvAttachment], expectedAttachmentsCount: Int, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, messagePayload: Data, extendedMessagePayload: Data?) { + self.fromContactIdentity = fromContactIdentity + self.messageId = messageId + self.attachments = attachments + self.expectedAttachmentsCount = expectedAttachmentsCount + self.messageUploadTimestampFromServer = messageUploadTimestampFromServer + self.downloadTimestampFromServer = downloadTimestampFromServer + self.localDownloadTimestamp = localDownloadTimestamp + self.messagePayload = messagePayload + self.extendedMessagePayload = extendedMessagePayload + } + + + public enum ObvError: Error { + case fromIdentityIsEqualToOwnedIdentity + + var localizedDescription: String { + switch self { + case .fromIdentityIsEqualToOwnedIdentity: + return "From identity is equal to the owned identity" + } + } + } + +} + + +// MARK: - Codable + +extension ObvMessage: Codable { + + /// ObvMessage is codable so as to be able to transfer a message from the notification service to the main app. + /// This serialization should **not** be used within long term storage since we may change it regularly. + /// See also `ObvContactIdentity` and `ObvAttachment`. + + enum CodingKeys: String, CodingKey { + case fromContactIdentity = "from_contact_identity" + case messageId = "message_id" + case attachments = "attachments" + case messageUploadTimestampFromServer = "messageUploadTimestampFromServer" + case downloadTimestampFromServer = "downloadTimestampFromServer" + case messagePayload = "message_payload" + case localDownloadTimestamp = "localDownloadTimestamp" + case extendedMessagePayload = "extendedMessagePayload" + case expectedAttachmentsCount = "expectedAttachmentsCount" + } + + public func encodeToJson() throws -> Data { + let encoder = JSONEncoder() + return try encoder.encode(self) + } + + public static func decodeFromJson(data: Data) throws -> ObvMessage { + let decoder = JSONDecoder() + return try decoder.decode(ObvMessage.self, from: data) + } +} diff --git a/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvOwnedAttachment.swift b/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvOwnedAttachment.swift new file mode 100644 index 00000000..03bb671b --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvOwnedAttachment.swift @@ -0,0 +1,75 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils + + +/// An attachment sent by one of the other owned devices of an owned identity. +public struct ObvOwnedAttachment: Hashable { + + public let metadata: Data + public let totalUnitCount: Int64 + public let url: URL + public let status: ObvAttachment.Status + public let attachmentId: ObvAttachmentIdentifier + public let messageUploadTimestampFromServer: Date + + public var messageIdentifier: Data { + return attachmentId.messageId.uid.raw + } + public var number: Int { + return attachmentId.attachmentNumber + } + + public var ownedCryptoId: ObvCryptoId { + ObvCryptoId(cryptoIdentity: attachmentId.messageId.ownedCryptoIdentity) + } + + public var downloadPaused: Bool { + return self.status == .paused + } + + + public init(metadata: Data, totalUnitCount: Int64, url: URL, status: ObvAttachment.Status, attachmentId: ObvAttachmentIdentifier, messageUploadTimestampFromServer: Date) { + self.metadata = metadata + self.totalUnitCount = totalUnitCount + self.url = url + self.status = status + self.attachmentId = attachmentId + self.messageUploadTimestampFromServer = messageUploadTimestampFromServer + } + + + public func hash(into hasher: inout Hasher) { + hasher.combine(attachmentId) + } + + public enum ObvError: Error { + case couldNotGetAttachment + + var localizedDescription: String { + switch self { + case .couldNotGetAttachment: + return "Could not get attachment" + } + } + } + +} diff --git a/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvOwnedMessage.swift b/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvOwnedMessage.swift new file mode 100644 index 00000000..e17d3ba5 --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/ReceivedMessagesAndAttachments/ObvOwnedMessage.swift @@ -0,0 +1,72 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvCrypto + + +/// An application message sent by one of the other owned devices of an owned identity. +public struct ObvOwnedMessage { + + public let messageId: ObvMessageIdentifier + public let attachments: [ObvOwnedAttachment] + public let expectedAttachmentsCount: Int + public let messageUploadTimestampFromServer: Date + public let downloadTimestampFromServer: Date + public let localDownloadTimestamp: Date + public let messagePayload: Data + public let extendedMessagePayload: Data? + + /// Legacy variable. Use ``messageUID`` instead. + public var messageIdentifierFromEngine: Data { + return messageId.uid.raw + } + + public var messageUID: UID { + return messageId.uid + } + + public var ownedCryptoId: ObvCryptoId { + ObvCryptoId(cryptoIdentity: messageId.ownedCryptoIdentity) + } + + public init(messageId: ObvMessageIdentifier, attachments: [ObvOwnedAttachment], expectedAttachmentsCount: Int, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, messagePayload: Data, extendedMessagePayload: Data?) { + self.messageId = messageId + self.attachments = attachments + self.expectedAttachmentsCount = expectedAttachmentsCount + self.messageUploadTimestampFromServer = messageUploadTimestampFromServer + self.downloadTimestampFromServer = downloadTimestampFromServer + self.localDownloadTimestamp = localDownloadTimestamp + self.messagePayload = messagePayload + self.extendedMessagePayload = extendedMessagePayload + } + + public enum ObvError: Error { + case fromIdentityIsDifferentFromTheOwnedIdentity + + var localizedDescription: String { + switch self { + case .fromIdentityIsDifferentFromTheOwnedIdentity: + return "From identity is different from the owned identity" + } + } + } + +} diff --git a/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSnapshotable.swift b/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSnapshotable.swift new file mode 100644 index 00000000..5f2f135d --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSnapshotable.swift @@ -0,0 +1,39 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvCrypto + +/// Equivalent of ObvBackupAndSyncDelegate in the Android code +/// See also `ObvBackupable` in `OlvidUtils` +public protocol ObvSnapshotable: AnyObject { + + func getSyncSnapshotNode(for ownedCryptoId: ObvCryptoId) throws -> any ObvSyncSnapshotNode + func serializeObvSyncSnapshotNode(_ syncSnapshotNode: any ObvSyncSnapshotNode) throws -> Data + func deserializeObvSyncSnapshotNode(_ serializedSyncSnapshotNode: Data) throws -> any ObvSyncSnapshotNode + +} + + +public protocol ObvAppSnapshotable: ObvSnapshotable { + + func syncEngineDatabaseThenUpdateAppDatabase(using syncSnapshotNode: any ObvSyncSnapshotNode) async throws + func requestServerToKeepDeviceActive(ownedCryptoId: ObvCryptoId, deviceUidToKeepActive: UID) async throws + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/Sound.swift b/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSyncDiff.swift similarity index 80% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/Sound.swift rename to Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSyncDiff.swift index d8a159f8..8d54b105 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/Sound.swift +++ b/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSyncDiff.swift @@ -18,11 +18,8 @@ */ import Foundation -import UIKit -public protocol Sound: Hashable { - var filename: String? { get } - var loops: Bool { get } - var feedback: UINotificationFeedbackGenerator.FeedbackType? { get } +public enum ObvSyncDiff: Hashable { + // TODO only used to notify the app, no need to be encodable as it will remain in memory } diff --git a/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSyncSnapshot.swift b/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSyncSnapshot.swift new file mode 100644 index 00000000..fac65031 --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSyncSnapshot.swift @@ -0,0 +1,138 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder + + +//public struct ObvSyncSnapshotAndVersion: ObvFailableCodable { +// public let version: Int +// public let syncSnapshot: ObvSyncSnapshot +// public init(version: Int, syncSnapshot: ObvSyncSnapshot) { +// self.version = version +// self.syncSnapshot = syncSnapshot +// } +// public func obvEncode() throws -> ObvEncoder.ObvEncoded { +// return [version.obvEncode(), try syncSnapshot.obvEncode()].obvEncode() +// } +// public init?(_ obvEncoded: ObvEncoded) { +// do { +// (version, syncSnapshot) = try obvEncoded.obvDecode() +// } catch { +// assertionFailure(error.localizedDescription) +// return nil +// } +// } +//} + + +public struct ObvSyncSnapshot { + + private enum Tag: String, CaseIterable { + case appNode = "app" + case identityNode = "identity" + } + + + public let appNode: any ObvSyncSnapshotNode + public let identityNode: any ObvSyncSnapshotNode + + + private init(appNode: any ObvSyncSnapshotNode, identityNode: any ObvSyncSnapshotNode) { + self.appNode = appNode + self.identityNode = identityNode + } + + + public init(ownedCryptoId: ObvCryptoId, appSnapshotableObject: ObvSnapshotable, identitySnapshotableObject: ObvSnapshotable) throws { + let appNode = try appSnapshotableObject.getSyncSnapshotNode(for: ownedCryptoId) + let identityNode = try identitySnapshotableObject.getSyncSnapshotNode(for: ownedCryptoId) + self.init(appNode: appNode, identityNode: identityNode) + } + + + public static func fromObvDictionary(_ obvDictionary: ObvDictionary, appSnapshotableObject: ObvSnapshotable, identitySnapshotableObject: ObvSnapshotable) throws -> Self { + + let dict: [Tag: Data] = .init( + obvDictionary, + keyMapping: { + guard let rawTag = String(data: $0, encoding: .utf8), let tag = Tag(rawValue: rawTag) else { return nil } + return tag + }, + valueMapping: { + Data($0) + }) + + guard let serializedAppNode = dict[.appNode], let serializedIdentityNode = dict[.identityNode] else { + throw ObvError.missingNode + } + + let identityNode = try identitySnapshotableObject.deserializeObvSyncSnapshotNode(serializedIdentityNode) + let appNode = try appSnapshotableObject.deserializeObvSyncSnapshotNode(serializedAppNode) + + return .init(appNode: appNode, identityNode: identityNode) + + } + + + public func toObvDictionary(appSnapshotableObject: ObvSnapshotable, identitySnapshotableObject: ObvSnapshotable) throws -> ObvDictionary { + + let dict: [Tag: Data] = [ + .appNode: try appSnapshotableObject.serializeObvSyncSnapshotNode(appNode), + .identityNode: try identitySnapshotableObject.serializeObvSyncSnapshotNode(identityNode), + ] + + let obvDict: ObvDictionary = .init(dict, keyMapping: { $0.rawValue.data(using: .utf8) }, valueMapping: { $0.obvEncode() }) + + return obvDict + + } + + + /// Returns `true` if both ObvSyncSnapshotNode are exactly the same (deep compare). +// public func isContentIdenticalTo(other syncSnapshot: ObvSyncSnapshot?) -> Bool { +// guard let syncSnapshot else { return false } +// let diffs = computeDiff(withOther: syncSnapshot) +// return diffs.isEmpty +// } + + +// public func computeDiff(withOther syncSnapshot: ObvSyncSnapshot) -> Set { +// var diffs = Set() +// for tag in Tag.allCases { +// switch tag { +// case .appNode: +// diffs.formUnion(self.appNode.computeDiff(withOther: syncSnapshot.appNode)) +// case .identityNode: +// diffs.formUnion(self.identityNode.computeDiff(withOther: syncSnapshot.identityNode)) +// } +// } +// return diffs +// } + + + public enum ObvError: Error { + case cannotEncodeTag + case duplicateKeys + case unexpectedObvDict + case cannotDecodeTag + case missingNode + } + +} diff --git a/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSyncSnapshotNode.swift b/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSyncSnapshotNode.swift new file mode 100644 index 00000000..1ef2aafc --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/SyncSnapshots/ObvSyncSnapshotNode.swift @@ -0,0 +1,60 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder + + +public protocol ObvSyncSnapshotNode: Codable, Hashable, Identifiable { + + /// Computes a list of differences between the current snapshot and the other snapshot. + //func computeDiff(withOther syncSnapshotNode: Self) -> Set + +} + + +public extension ObvSyncSnapshotNode { + + static func generateIdentifier() -> String { + ObvSyncSnapshotNodeUtils.generateIdentifier() + } + +} + + +public struct ObvSyncSnapshotNodeUtils { + + public static func generateIdentifier() -> String { + return [UUID(), UUID(), UUID(), UUID()].map({ $0.uuidString }).joined() + } + +} + + +//public extension ObvSyncSnapshotNode { +// +// /// Returns `true` if both ObvSyncSnapshotNode are exactly the same (deep compare). +// /// If the `other` ObvSyncSnapshotNode is `nil`, this method returns `false`. +// func isContentIdenticalTo(other syncSnapshotNode: Self?) -> Bool { +// guard let syncSnapshotNode else { return false } +// let diff = self.computeDiff(withOther: syncSnapshotNode) +// return diff.isEmpty +// } +// +//} diff --git a/Engine/ObvTypes/ObvTypes/TypesForOwnedIdentityTransfer/ObvOwnedIdentityTransferSas.swift b/Engine/ObvTypes/ObvTypes/TypesForOwnedIdentityTransfer/ObvOwnedIdentityTransferSas.swift new file mode 100644 index 00000000..97642824 --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/TypesForOwnedIdentityTransfer/ObvOwnedIdentityTransferSas.swift @@ -0,0 +1,59 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder + + +public struct ObvOwnedIdentityTransferSas: CustomDebugStringConvertible, ObvCodable, Equatable { + + public let digits: [Character] + private let rawFullSas: Data + + public init(fullSas: Data) throws { + guard let sasAsString = String(data: fullSas, encoding: .utf8)?.trimmingWhitespacesAndNewlines() else { + throw ObvError.couldNotParseSasAsString + } + assert(sasAsString.count == 8) + self.digits = sasAsString.map { $0 } + self.rawFullSas = fullSas + } + + enum ObvError: Error { + case couldNotParseSasAsString + } + + public var debugDescription: String { + return digits.reduce("") { $0 + String($1) } + } + + // ObvCodable + + public func obvEncode() -> ObvEncoded { + self.rawFullSas.obvEncode() + } + + public init?(_ obvEncoded: ObvEncoded) { + guard let fullSas = Data(obvEncoded) else { assertionFailure(); return nil } + guard let sas = try? Self.init(fullSas: fullSas) else { assertionFailure(); return nil } + self = sas + } + +} + diff --git a/Engine/ObvTypes/ObvTypes/TypesForOwnedIdentityTransfer/ObvOwnedIdentityTransferSessionNumber.swift b/Engine/ObvTypes/ObvTypes/TypesForOwnedIdentityTransfer/ObvOwnedIdentityTransferSessionNumber.swift new file mode 100644 index 00000000..6e401cc3 --- /dev/null +++ b/Engine/ObvTypes/ObvTypes/TypesForOwnedIdentityTransfer/ObvOwnedIdentityTransferSessionNumber.swift @@ -0,0 +1,71 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEncoder + + +/// When performing an owned identity transfer protocol, the transfer server communicates a session number made of (up to) 8 digits. +/// We use this type to encapsulate the returned value. +public struct ObvOwnedIdentityTransferSessionNumber: CustomDebugStringConvertible, ObvCodable { + + public static let expectedCount = 8 + public let digits: [Character] + public let sessionNumber: Int + + private static let digitFromInt = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map { Character("\($0)") } + + public init(sessionNumber: Int) throws { + self.sessionNumber = sessionNumber + guard sessionNumber >= 0 else { assertionFailure(); throw ObvError.invalidIntegerSessionNumber } + var digits = [Character]() + var currentValue = sessionNumber + while currentValue > 0 { + let digit = Self.digitFromInt[currentValue % 10] + currentValue = currentValue / 10 + digits.insert(digit, at: 0) + } + guard digits.count <= Self.expectedCount else { assertionFailure(); throw ObvError.invalidIntegerSessionNumber } + while digits.count < Self.expectedCount { + digits.insert("0", at: 0) + } + self.digits = digits + } + + enum ObvError: Error { + case invalidIntegerSessionNumber + } + + public var debugDescription: String { + return digits.reduce("") { $0 + String($1) } + } + + // ObvCodable + + public func obvEncode() -> ObvEncoder.ObvEncoded { + sessionNumber.obvEncode() + } + + + public init?(_ obvEncoded: ObvEncoder.ObvEncoded) { + guard let sessionNumber: Int = try? obvEncoded.obvDecode() else { return nil } + try? self.init(sessionNumber: sessionNumber) + } + +} diff --git a/Engine/Project.swift b/Engine/Project.swift index 1fd6d9c4..505be017 100644 --- a/Engine/Project.swift +++ b/Engine/Project.swift @@ -3,7 +3,7 @@ import ProjectDescriptionHelpers // MARK: SPM Packages let gmpPackage = TargetDependency.SPMDependency.gmp -let joseSwiftSPM = TargetDependency.SPMDependency.joseSwift +//let joseSwiftSPM = TargetDependency.SPMDependency.joseSwift // MARK: - // MARK: External Targets @@ -33,7 +33,12 @@ let jws = Target.swiftLibrary(name: "JWS", isExtensionSafe: true, sources: "JWS/JWS/*.swift", dependencies: [ - .init(joseSwiftSPM) + .package(product: "JOSESwift"), + //.init(.appAuth), + //.init(joseSwiftSPM), + //.init(.joseSwift), + .target(name: "ObvEncoder"), + olvidUtils, ], resources: []) // MARK: - @@ -48,6 +53,17 @@ let obvBackupManager = Target.swiftLibrary(name: "ObvBackupManager", resources: []) // MARK: - +// MARK: ObvSyncSnapshotManager +let obvSyncSnapshotManager = Target.swiftLibrary(name: "ObvSyncSnapshotManager", + isExtensionSafe: true, + sources: "ObvSyncSnapshotManager/ObvSyncSnapshotManager/**/*.swift", + dependencies: [ + .target(name: "ObvTypes"), + .target(name: "ObvMetaManager"), + ], + resources: []) +// MARK: - + // MARK: ObvChannelManager let obvChannelManager = Target.swiftLibrary(name: "ObvChannelManager", isExtensionSafe: true, @@ -83,7 +99,9 @@ let obvDatabaseManager = Target.swiftLibrary(name: "ObvDatabaseManager", dependencies: [ .target(name: "ObvTypes"), .target(name: "ObvMetaManager"), - coreDataStack + .target(name: "ObvEncoder"), + .target(name: "ObvCrypto"), + coreDataStack, ], resources: [], coreDataModels: [ @@ -118,10 +136,12 @@ let obvEngine = Target.swiftLibrary(name: "ObvEngine", .target(name: "ObvNotificationCenter"), .target(name: "ObvNetworkSendManager"), .target(name: "ObvNetworkFetchManager"), + .target(name: "ObvTypes"), olvidUtils, .target(name: "ObvMetaManager"), .target(name: "ObvIdentityManager"), .target(name: "ObvBackupManager"), + .target(name: "ObvSyncSnapshotManager"), .target(name: "ObvChannelManager"), ], resources: [], @@ -266,25 +286,62 @@ let obvTypesTests = Target.swiftLibraryTests(name: "ObvTypesTests", // MARK: - +let projectPackages: [Package] = [ + // .remote(url: "https://github.com/olvid-io/AppAuth-iOS-for-Olvid", requirement: .branch("targetfix")), + .remote(url: "https://github.com/olvid-io/JOSESwift-for-Olvid", requirement: .branch("targetfix")), +] + +enum OlvidProjectPackage: CaseIterable { + + case appAuth + case joseSwift + + var package: Package { + switch self { + case .appAuth: + return .remote(url: "https://github.com/olvid-io/AppAuth-iOS-for-Olvid", requirement: .branch("targetfix")) + case .joseSwift: + return .remote(url: "https://github.com/olvid-io/JOSESwift-for-Olvid", requirement: .branch("targetfix")) + } + } + + var name: String { + switch self { + case .appAuth: + return "AppAuth" + case .joseSwift: + return "JOSESwift" + } + } + + static var packages: [Package] { + Self.allCases.map(\.package) + } + +} + + let project = Project.createProject(name: "Engine", - packages: [], - targets: [bigInt, - bigIntTests, - jws, - obvBackupManager, - obvChannelManager, - obvCrypto, - obvDatabaseManager, - obvEncoder, - obvEngine, - obvFlowManager, - obvIdentityManager, - obvMetaManager, - obvNetworkFetchManager, - obvNetworkSendManager, - obvNotificationCenter, - obvOperation, - obvProtocolManager, - obvServerInterface, - obvTypes, - obvTypesTests]) + packages: OlvidProjectPackage.packages, + targets: [ + bigInt, + bigIntTests, + jws, + obvBackupManager, + obvSyncSnapshotManager, + obvChannelManager, + obvCrypto, + obvDatabaseManager, + obvEncoder, + obvEngine, + obvFlowManager, + obvIdentityManager, + obvMetaManager, + obvNetworkFetchManager, + obvNetworkSendManager, + obvNotificationCenter, + obvOperation, + obvProtocolManager, + obvServerInterface, + obvTypes, + obvTypesTests]) diff --git a/Modules/Components/TextInputShortcutsResultView/Project.swift b/Modules/Components/TextInputShortcutsResultView/Project.swift index c53c8931..0a68f6e1 100644 --- a/Modules/Components/TextInputShortcutsResultView/Project.swift +++ b/Modules/Components/TextInputShortcutsResultView/Project.swift @@ -10,7 +10,8 @@ let textInputShortcutsResultView = Target.swiftLibrary( dependencies: [ .Modules.Platform.base, .Modules.obvUI, - .Modules.UI.CircledInitialsView.configuration, + .Modules.UI.obvCircledInitials, + //.Modules.UI.CircledInitialsView.configuration, ] ) diff --git a/Modules/Components/TextInputShortcutsResultView/TextInputShortcutsResultView/TextInputShortcutsResultView.swift b/Modules/Components/TextInputShortcutsResultView/TextInputShortcutsResultView/TextInputShortcutsResultView.swift index f06da96d..ab1599d3 100644 --- a/Modules/Components/TextInputShortcutsResultView/TextInputShortcutsResultView/TextInputShortcutsResultView.swift +++ b/Modules/Components/TextInputShortcutsResultView/TextInputShortcutsResultView/TextInputShortcutsResultView.swift @@ -19,7 +19,7 @@ import UIKit import Platform_Base -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials import class ObvUI.NewCircledInitialsView /// This view is supposed to be displayed inline within a discussion. At the time of writing (2023-04-03), it is only used for displaying a collection of mentionnable users. @@ -107,13 +107,9 @@ public final class TextInputShortcutsResultView: UIView { $0.backgroundColor = .clear $0.showsSeparators = true - - if #available(iOS 14.5, *) { - $0.separatorConfiguration = .init(listAppearance: Constants.listAppearance)..{ - if #available(iOS 15, *) { - $0.visualEffect = UIVibrancyEffect(blurEffect: blurEffect, style: .separator) - } - } + + $0.separatorConfiguration = .init(listAppearance: Constants.listAppearance)..{ + $0.visualEffect = UIVibrancyEffect(blurEffect: blurEffect, style: .separator) } } diff --git a/Modules/Components/TextInputShortcutsResultView/TextInputShortcutsResultView/TextShortcutItem.swift b/Modules/Components/TextInputShortcutsResultView/TextInputShortcutsResultView/TextShortcutItem.swift index 95bd2a68..1b35a3d0 100644 --- a/Modules/Components/TextInputShortcutsResultView/TextInputShortcutsResultView/TextShortcutItem.swift +++ b/Modules/Components/TextInputShortcutsResultView/TextInputShortcutsResultView/TextShortcutItem.swift @@ -18,7 +18,7 @@ */ import Foundation -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials @available(iOSApplicationExtension 14.0, *) public extension TextInputShortcutsResultView { diff --git a/Modules/CoreDataStack/CoreDataStack/CoreDataStack.swift b/Modules/CoreDataStack/CoreDataStack/CoreDataStack.swift index 86d9eb7c..b2d0f791 100644 --- a/Modules/CoreDataStack/CoreDataStack/CoreDataStack.swift +++ b/Modules/CoreDataStack/CoreDataStack/CoreDataStack.swift @@ -140,6 +140,25 @@ final public class CoreDataStack } + public func performBackgroundTaskAndWaitOrThrow(_ block: (NSManagedObjectContext) throws -> T) throws -> T { + let context = persistentContainer.newBackgroundContext() + context.transactionAuthor = transactionAuthor + var error: Error? = nil + var returnedValue: T! + context.performAndWait { + do { + returnedValue = try block(context) + } catch let _error { + error = _error + } + } + if let error = error { + throw error + } + return returnedValue + } + + public func managedObjectID(forURIRepresentation url: URL) -> NSManagedObjectID? { return persistentContainer.persistentStoreCoordinator.managedObjectID(forURIRepresentation: url) } diff --git a/Modules/CoreDataStack/CoreDataStack/DataMigrationManager.swift b/Modules/CoreDataStack/CoreDataStack/DataMigrationManager.swift index c517334c..e20f9e9a 100644 --- a/Modules/CoreDataStack/CoreDataStack/DataMigrationManager.swift +++ b/Modules/CoreDataStack/CoreDataStack/DataMigrationManager.swift @@ -163,11 +163,7 @@ open class DataMigrationManager private func getSourceStoreMetadata(storeURL: URL) throws -> [String: Any] { let dict: [String: Any] - if #available(iOS 15, *) { - dict = try NSPersistentStoreCoordinator.metadataForPersistentStore(type: .sqlite, at: storeURL) - } else { - dict = try NSPersistentStoreCoordinator.metadataForPersistentStore(ofType: NSSQLiteStoreType, at: storeURL) - } + dict = try NSPersistentStoreCoordinator.metadataForPersistentStore(type: .sqlite, at: storeURL) return dict } @@ -276,7 +272,13 @@ open class DataMigrationManager let destinationManagedObjectModel = try getDestinationManagedObjectModel() migrationRunningLog.addEvent(message: "Destination Managed Object Model: \(destinationManagedObjectModel.versionIdentifier)") - os_log("Destination Managed Object Model: %{public}@", log: log, type: .info, destinationManagedObjectModel.versionIdentifier) + let versionChecksum: String + if #available(iOS 17, *) { + versionChecksum = destinationManagedObjectModel.versionChecksum + } else { + versionChecksum = "Only available in iOS17+" + } + os_log("Destination Managed Object Model: %{public}@ with version checksum: %{public}@", log: log, type: .info, destinationManagedObjectModel.versionIdentifier, versionChecksum) let sourceStoreMetadata: [String: Any] do { diff --git a/Modules/Discussions/AttachmentsDropView/AttachmentsDropView.swift b/Modules/Discussions/AttachmentsDropView/AttachmentsDropView.swift deleted file mode 100644 index 4df4d703..00000000 --- a/Modules/Discussions/AttachmentsDropView/AttachmentsDropView.swift +++ /dev/null @@ -1,361 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import UniformTypeIdentifiers -import Platform_Sequence_KeyPathSorting -import Platform_NSItemProvider_UTType_Backport - -/// Protocol exposing delegation methods for ``AttachmentsDropView`` -@available(iOSApplicationExtension 14, *) -@MainActor -public protocol AttachmentsDropViewDelegate: AnyObject { - /// Delegate method that gets called prior the start of a drop session - /// - Parameter view: The view requesting the start of a drop session - /// - Returns: If the drop session should begin - func attachmentsDropViewShouldBegingDropSession(_ view: AttachmentsDropView) -> Bool - - /// Delegate method called when the user has dropped items to be appended as attachments to the current discussion - /// - Parameters: - /// - view: An instance of ``AttachmentsDropView`` responsible for this call - /// - items: An array of items `NSItemProvider`s to append as attachments - func attachmentsDropView(_ view: AttachmentsDropView, didDrop items: [NSItemProvider]) -} - -@available(iOSApplicationExtension 14, *) -public final class AttachmentsDropView: UIView { - private enum Constants { - // If an item provider has a registered type identifier that conforms to one of the types bellow, - // we load it as a file (i.e., not as text) and restrict to the conforming type identifier when creating the DroppedItemProvider. - static let typeIdentifiersToLoadAsFile: [UTType] = [.movie, .image, .pdf] - } - - /// The drop view's delegate - public weak var delegate: AttachmentsDropViewDelegate? - - /// An array of allowed `UTType`s for the attachments - private let allowedTypes: [UTType] - - private let directoryForTemporaryFiles: URL - - private weak var targetDropView: _AttachmentsTargetDropZoneView! - - /// Creates a view that accepts content to be attached to a message :), via a drop operation - /// - Parameters: - /// - allowedTypes: The types that are allowed to be dropped - /// - directoryForTemporaryFiles: The root directory where to store some stuff - public init(allowedTypes: [UTType], directoryForTemporaryFiles: URL) { - self.allowedTypes = allowedTypes - self.directoryForTemporaryFiles = directoryForTemporaryFiles - - super.init(frame: .zero) - - _setupViews() - } - - @available(*, unavailable) - public required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - #if DEBUG - deinit { - if FileManager.default.fileExists(atPath: directoryForTemporaryFiles.path) { - do { - let directoryChildrenURLs = try FileManager.default.contentsOfDirectory(at: directoryForTemporaryFiles, - includingPropertiesForKeys: [], - options: .skipsSubdirectoryDescendants) - - precondition(directoryChildrenURLs.isEmpty, "expected to no-longer have any temp items…, have: \(directoryChildrenURLs)") - } catch { - fatalError("failed to fetch contents with error: \(error)") - } - } - } - #endif - - private func _setupViews() { - backgroundColor = .clear - - isOpaque = false - - isUserInteractionEnabled = false - - translatesAutoresizingMaskIntoConstraints = false - - layoutMargins = .zero - - let targetDropView = _AttachmentsTargetDropZoneView() - - targetDropView.isHidden = true - - targetDropView.translatesAutoresizingMaskIntoConstraints = false - - addSubview(targetDropView) - - self.targetDropView = targetDropView - - _setupConstraints() - } - - private func _setupConstraints() { - let viewsDictionary = ["targetDropView": targetDropView!] - - NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "H:|-[targetDropView]-|", - options: [], - metrics: nil, - views: viewsDictionary)) - - NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[targetDropView]-|", - options: [], - metrics: nil, - views: viewsDictionary)) - } - - /// Updates the subviews for a given drop location - /// - Parameter dropLocation: The current location of the drop, within `self`'s coordinate space - private func _updateSubviews(for dropLocation: CGPoint, isFinished: Bool) { - if isFinished { - targetDropView.stopMarchingAntsAnimation() - - targetDropView.isHidden = true - } else { - targetDropView.isHidden = !bounds.contains(dropLocation) - - targetDropView.startMarchingAntsAnimation() - } - } -} - -@available(iOSApplicationExtension 14, *) -extension AttachmentsDropView: UIDropInteractionDelegate { - - public func dropInteraction(_ interaction: UIDropInteraction, canHandle session: UIDropSession) -> Bool { - guard let delegate else { - assertionFailure("we're missing our delegate") - - return false - } - - guard delegate.attachmentsDropViewShouldBegingDropSession(self) else { - return false - } - - let conforms = session.hasItemsConforming(toTypeIdentifiers: allowedTypes.map(\.identifier)) - - return conforms - } - - - public func dropInteraction(_ interaction: UIDropInteraction, sessionDidUpdate session: UIDropSession) -> UIDropProposal { - let dropLocation = session.location(in: self) - - _updateSubviews(for: dropLocation, isFinished: false) - - let dropOperation: UIDropOperation - - if bounds.contains(dropLocation) { - dropOperation = .copy - } else { - dropOperation = .cancel - } - - return .init(operation: dropOperation) - } - - - public func dropInteraction(_ interaction: UIDropInteraction, performDrop session: UIDropSession) { - - guard let delegate else { - assertionFailure("we're missing our delegate") - return - } - - // We create a dispatch group to synchronize all the file representations loading - - let group = DispatchGroup() - - // We will fill the following dictionary with the loaded file representations. The keys are the dropped files' indexes. - - var droppedItemProviderFromIndex: [Int: NSItemProvider] = [:] - - // Enumerate the session items, load each one, and populate the droppedItemProviderFromIndex dictionnary - - for (itemIndex, sessionItem) in session.items.map(\.itemProvider).enumerated() { - - group.enter() - - // Special cases for session items conforming to our predefined types within `Constants.typeIdentifiersToLoadAsFile` - let preferredTypeIdentifierToLoadAsFile: UTType? = Constants.typeIdentifiersToLoadAsFile.reduce(nil) { partialResult, uti -> UTType? in - if let partialResult { - return partialResult - } else { - let contentTypes: [UTType] - - if #available(iOSApplicationExtension 16, *) { - contentTypes = sessionItem.registeredContentTypes - } else { - contentTypes = sessionItem - .registeredTypeIdentifiers - .compactMap(UTType.init) /// there should be **no** cases where `UTType`'s initializer would fail, since at the end of the day the type exists within `MobileCoreServices` - - assert(contentTypes.count == sessionItem.registeredTypeIdentifiers.count, "we're missing a casted UTType…") - } - - return contentTypes - .first { - return $0.conforms(to: uti) - } - } - } - - if sessionItem.hasItemConformingToTypeIdentifier(UTType.url), - preferredTypeIdentifierToLoadAsFile == nil { - - _ = sessionItem.loadObject(ofClass: URL.self) { value, error in - - if let error { - assertionFailure("failed to load textual representation of URL with error: \(error)") - group.leave() - return - } - - guard let value else { - assertionFailure("failed to retrieve URL value for item…") - group.leave() - return - } - - let droppedItem = NSItemProvider(object: value.absoluteString as NSString) - - DispatchQueue.main.async { - droppedItemProviderFromIndex[itemIndex] = droppedItem - group.leave() - } - - } - - } else if sessionItem.hasItemConformingToTypeIdentifier(UTType.text), - preferredTypeIdentifierToLoadAsFile == nil { - - _ = sessionItem.loadObject(ofClass: String.self) { value, error in - - if let error { - assertionFailure("failed to load textual representation of String with error: \(error)") - group.leave() - return - } - - guard let value else { - assertionFailure("failed to retrieve String value for item…") - group.leave() - return - } - - let droppedItem = NSItemProvider(object: value as NSString) - - DispatchQueue.main.async { - droppedItemProviderFromIndex[itemIndex] = droppedItem - group.leave() - } - } - - } else { - - sessionItem.loadFileRepresentation(forTypeIdentifier: UTType.data.identifier) { url, error in - - if let error { - assertionFailure("failed to load file representation with error: \(error)") - group.leave() - return - } - - guard let url else { - assertionFailure("failed to retrieve URL for file…") - group.leave() - return - } - - let droppedItem: DroppedItemProvider - - let typesToRegister: [UTType] - - if let preferredTypeIdentifierToLoadAsFile { - typesToRegister = [preferredTypeIdentifierToLoadAsFile] - } else { - typesToRegister = sessionItem - .registeredTypeIdentifiers - .compactMap(UTType.init) /// there should be **no** cases where `UTType`'s initializer would fail, since at the end of the day the type exists within `MobileCoreServices` - - assert(typesToRegister.count == sessionItem.registeredTypeIdentifiers.count, "we're missing a casted UTType…") - } - - do { - droppedItem = try DroppedItemProvider( - url: url, - directoryForTemporaryFiles: self.directoryForTemporaryFiles, - typeIdentifiersToRegister: typesToRegister - ) - } catch { - assertionFailure("failed to copy item, with error: \(error)") - group.leave() - return - } - - DispatchQueue.main.async { - droppedItemProviderFromIndex[itemIndex] = droppedItem - group.leave() - } - - } - } - } - - // We wait until all the file representations are loaded - group.notify(qos: .userInitiated, queue: DispatchQueue.main) { - - guard !droppedItemProviderFromIndex.isEmpty else { - assertionFailure("expected to have items to handle…") - return - } - - let sortedItems = droppedItemProviderFromIndex - .sorted(by: \.key) - .map(\.value) - - delegate.attachmentsDropView(self, didDrop: sortedItems) - - } - } - - - public func dropInteraction(_ interaction: UIDropInteraction, sessionDidEnd session: UIDropSession) { - let dropLocation = session.location(in: self) - - _updateSubviews(for: dropLocation, isFinished: true) - } - - - public func dropInteraction(_ interaction: UIDropInteraction, sessionDidExit session: UIDropSession) { - let dropLocation = session.location(in: self) - - _updateSubviews(for: dropLocation, isFinished: true) - } - -} diff --git a/Modules/Discussions/AttachmentsDropView/_AttachmentsTargetDropZoneView.swift b/Modules/Discussions/AttachmentsDropView/_AttachmentsTargetDropZoneView.swift deleted file mode 100644 index 45492939..00000000 --- a/Modules/Discussions/AttachmentsDropView/_AttachmentsTargetDropZoneView.swift +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import UI_SystemIcon -import UI_SystemIcon_UIKit - -/// Internal subclass belonging to the `Discussions_AttachmentsDropView` module; do not use me -final class _AttachmentsTargetDropZoneView: UIView { - - private enum Constants { - static let marchingAntsAnimationKey = "io.olvid.messenger.discussions.attachemnts-drop-view-private.attachements-target-drop-zone-view.marching-ants-animation-key" - - static let lineDashPattern: [CGFloat] = [6, 8] - } - - private weak var marchingAntsLayer: CAShapeLayer! - - private weak var stackView: UIStackView! - - private weak var dropImageView: UIImageView! - - private weak var dropLabel: UILabel! - - override init(frame: CGRect) { - super.init(frame: frame) - - _setupViews() - } - - @available(*, unavailable) - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - private func _createShape() -> CGPath { - let bezier = UIBezierPath(roundedRect: bounds, - cornerRadius: 20) - - return bezier.cgPath - } - - private func _setupViews() { - let marchingAntsLayer = CAShapeLayer() - - marchingAntsLayer.path = _createShape() - - marchingAntsLayer.lineWidth = 3 - - marchingAntsLayer.frame = bounds - - marchingAntsLayer.backgroundColor = UIColor.clear.cgColor - - marchingAntsLayer.fillColor = UIColor.secondarySystemBackground.withAlphaComponent(0.7).cgColor - - marchingAntsLayer.strokeColor = UIColor.secondaryLabel.cgColor - - marchingAntsLayer.lineDashPhase = 0 - - marchingAntsLayer.lineDashPattern = Constants.lineDashPattern as [NSNumber] - - let textStyle: UIFont.TextStyle = .headline - - let dropImageView = UIImageView(image: .init(systemIcon: .rectangleDashedAndPaperclip)) - - dropImageView.isAccessibilityElement = false - - dropImageView.preferredSymbolConfiguration = .init(textStyle: textStyle, scale: .large) - - dropImageView.tintColor = .secondaryLabel - - dropImageView.translatesAutoresizingMaskIntoConstraints = false - - let dropLabel = UILabel() - - dropLabel.adjustsFontForContentSizeCategory = true - - dropLabel.font = UIFont.preferredFont(forTextStyle: textStyle) - - dropLabel.textColor = .secondaryLabel - - dropLabel.text = DiscussionsAttachmentsDropViewStrings.AttachmentsTargetDropZoneView.DropLabel.text - - dropLabel.textAlignment = .center - - dropLabel.translatesAutoresizingMaskIntoConstraints = false - - let stackView = UIStackView(arrangedSubviews: [dropImageView, dropLabel]) - - stackView.spacing = UIStackView.spacingUseSystem - - stackView.axis = .vertical - - stackView.alignment = .center - - stackView.distribution = .fill - - stackView.translatesAutoresizingMaskIntoConstraints = false - - backgroundColor = .clear - - layer.addSublayer(marchingAntsLayer) - - addSubview(stackView) - - self.marchingAntsLayer = marchingAntsLayer - - self.stackView = stackView - - self.dropImageView = dropImageView - - self.dropLabel = dropLabel - - NSLayoutConstraint.activate([ - stackView.centerXAnchor.constraint(equalTo: centerXAnchor), - stackView.centerYAnchor.constraint(equalTo: centerYAnchor) - ]) - } - - override func layoutSubviews() { - super.layoutSubviews() - - CATransaction.begin() - - CATransaction.setDisableActions(true) - - marchingAntsLayer.frame = bounds - - marchingAntsLayer.path = _createShape() - - CATransaction.commit() - } - - func startMarchingAntsAnimation() { - guard marchingAntsLayer.animation(forKey: Constants.marchingAntsAnimationKey) == nil else { - return - } - - let animation = CABasicAnimation(keyPath: #keyPath(CAShapeLayer.lineDashPhase)) - - animation.fromValue = 0 - - animation.toValue = Constants.lineDashPattern.reduce(0, -) - - animation.duration = 0.5 - - animation.repeatCount = .infinity - - marchingAntsLayer.add(animation, forKey: Constants.marchingAntsAnimationKey) - } - - func stopMarchingAntsAnimation() { - marchingAntsLayer.removeAnimation(forKey: Constants.marchingAntsAnimationKey) - } -} diff --git a/Modules/Discussions/AttachmentsDropView/_DroppedItemProvider.swift b/Modules/Discussions/AttachmentsDropView/_DroppedItemProvider.swift deleted file mode 100644 index fac3b192..00000000 --- a/Modules/Discussions/AttachmentsDropView/_DroppedItemProvider.swift +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import UniformTypeIdentifiers - -/// When a drop interaction is performed, we receive a `UIDropSession`. This session contains one or more `NSItemProvider` instances whose scope is limited -/// to the UIDropInteractionDelegate's implementation of ``-dropInteraction:performDrop:``. For this reason, we load each of these items in that delegate method, -/// and create a ``DroppedItemProvider`` for each: these new items have a scope valid until they are deallocated. -@available(iOSApplicationExtension 14, *) -final class DroppedItemProvider: NSItemProvider { - - /// Copies a given file, at `url`, into `directory` - /// - Parameters: - /// - url: The source `URL` to copy - /// - directory: An `URL` to the temporary directory - /// - Returns: The copied file's info - /// - /// - SeeAlso: ``CopiedItemInfo`` - private static func copyFile(at url: URL, intoRandomDirectoryIn directory: URL) throws -> CopiedItemInfo { - let uuid = UUID() - let directoryForCopyingFileURL = directory.appendingPathComponent(uuid.uuidString) - try FileManager.default.createDirectory(at: directoryForCopyingFileURL, withIntermediateDirectories: true) - let toURL = directoryForCopyingFileURL.appendingPathComponent(url.lastPathComponent) - try FileManager.default.copyItem(at: url, to: toURL) - - return .init( - parentDirectoryURL: directoryForCopyingFileURL, - locallyReferencedFileURL: toURL - ) - } - - /// This is the directory that contains ``locallyReferencedFileURL`` - /// The rational behind this directory is to prevent name collisions - private let locallyReferencedFileParentDirectoryURL: URL - - /// This file has been locally copied, and is ours to keep when in use. Most importantly, must delete after we're done - private let locallyReferencedFileURL: URL - - /// Designated initializer, will make a local copy of `url` - /// - Parameters: - /// - url: The `URL` of the _locally_ available file, a copy will be available during the lifetime of the returned object - /// - directoryForTemporaryFiles: The source root directory of where we will store our temporary files - /// - typeIdentifiersToRegister: An array of `UTType`s that are handled originally handled by the source item provider - /// - /// - Throws: - /// - ``ProviderError`` - /// - Errors thrown by `FileManager` - public init(url: URL, directoryForTemporaryFiles: URL, typeIdentifiersToRegister: [UTType]) throws { - // Copy the file at `url` into the `directoryForTemporaryFiles` (where we create a new "random" directory to store the file) - let copiedItemInfo = try Self.copyFile(at: url, intoRandomDirectoryIn: directoryForTemporaryFiles) - - locallyReferencedFileParentDirectoryURL = copiedItemInfo.parentDirectoryURL - - // Keep a reference to the created file in order to delete it when we are deallocated - let locallyReferencedFileURL = copiedItemInfo.locallyReferencedFileURL - - self.locallyReferencedFileURL = locallyReferencedFileURL - - super.init() - - // Register all type identifiers for the file - - typeIdentifiersToRegister.forEach { typeIdentifier in - @Sendable - func loadHandler(completion: @escaping (URL?, Bool, Error?) -> Void) -> Progress? { - guard FileManager.default.fileExists(atPath: locallyReferencedFileURL.path) else { - completion(nil, false, ProviderError.referencedFileDoesNotExist(at: locallyReferencedFileURL)) - - return nil - } - - completion(locallyReferencedFileURL, false, nil) - - return nil - } - - if #available(iOS 16, *) { - registerFileRepresentation( - for: typeIdentifier, - visibility: .ownProcess, - loadHandler: loadHandler - ) - } else { - registerFileRepresentation( - forTypeIdentifier: typeIdentifier.identifier, - visibility: .ownProcess, - loadHandler: loadHandler) - } - } - } - - deinit { - if FileManager.default.fileExists(atPath: locallyReferencedFileURL.path) { - do { - try FileManager.default.removeItem(at: locallyReferencedFileURL) - } catch { - assertionFailure("failed to delete file at \(locallyReferencedFileURL) with error: \(error)") - } - - do { - try FileManager.default.removeItem(at: locallyReferencedFileParentDirectoryURL) - } catch { - assertionFailure("failed to delete parent directory at \(locallyReferencedFileParentDirectoryURL) with error: \(error)") - } - } else { - assertionFailure("expected to have our file exist at \(locallyReferencedFileURL)") - } - } -} - -@available(iOSApplicationExtension 14, *) -extension DroppedItemProvider { - /// Denotes the possible errors thrown by an instance of ``DroppedItemProvider`` - /// - /// - referencedFileDoesNotExist: Error thrown when the file at the given `URL` does not exist - enum ProviderError: Error { - /// Error thrown when the file at the given `URL` does not exist - case referencedFileDoesNotExist(at: URL) - } -} - -@available(iOSApplicationExtension 14, *) -extension DroppedItemProvider { - /// Structure containing info regarding the copied item - struct CopiedItemInfo { - /// This is the directory that contains ``locallyReferencedFileURL`` - let parentDirectoryURL: URL - - /// The `URL` of the copied item - let locallyReferencedFileURL: URL - } -} diff --git a/Modules/Discussions/AttachmentsDropView/en.lproj/Localizable.strings b/Modules/Discussions/AttachmentsDropView/en.lproj/Localizable.strings deleted file mode 100644 index 8fecea0b..00000000 --- a/Modules/Discussions/AttachmentsDropView/en.lproj/Localizable.strings +++ /dev/null @@ -1,3 +0,0 @@ -/* Text shown above within the drop zone view, informin the user that they can drop the given attachment to attach it within the conversation */ -"attachments-target-drop-zone-view.drop-label.text" = "Drop to attach"; - diff --git a/Modules/Discussions/AttachmentsDropView/fr.lproj/Localizable.strings b/Modules/Discussions/AttachmentsDropView/fr.lproj/Localizable.strings deleted file mode 100644 index 51d78dfa..00000000 --- a/Modules/Discussions/AttachmentsDropView/fr.lproj/Localizable.strings +++ /dev/null @@ -1,3 +0,0 @@ -/* Text shown above within the drop zone view, informin the user that they can drop the given attachment to attach it within the conversation */ -"attachments-target-drop-zone-view.drop-label.text" = "Déposer pour ajouter"; - diff --git a/Modules/Discussions/Project.swift b/Modules/Discussions/Project.swift index 8a05f6cd..0f35b957 100644 --- a/Modules/Discussions/Project.swift +++ b/Modules/Discussions/Project.swift @@ -56,20 +56,6 @@ let discussionsScrollToBottomButton = Target.swiftLibrary( ], resources: []) -let discussionsAttachmentsDropView = Target.swiftLibrary( - name: "Discussions_AttachmentsDropView", - isExtensionSafe: true, - sources: "AttachmentsDropView/*.swift", - dependencies: [ - .Modules.Platform.sequenceKeyPathSorting, - .Modules.Platform.nsItemProviderUTTypeBackport, - .Modules.UI.systemIcon, - .Modules.UI.systemIconUIKit, - ], - resources: [ - "AttachmentsDropView/*.lproj/Localizable.strings" - ]) - let project = Project.createProject(name: "Discussions", packages: [], targets: [discussionsMentionsAutoGrowingTextViewTextViewDelegateProxy, @@ -77,7 +63,6 @@ let project = Project.createProject(name: "Discussions", discussionsMentionsBuilderInternals, discussionsMentionsComposeMessageBuilder, discussionsMentionsTextBubbleBuilder, - discussionsScrollToBottomButton, - discussionsAttachmentsDropView], + discussionsScrollToBottomButton], shouldEnableDefaultResourceSynthesizers: true) diff --git a/Modules/Discussions/ScrollToBottomButton/ScrollToBottomButton.swift b/Modules/Discussions/ScrollToBottomButton/ScrollToBottomButton.swift index d7d6f061..651bc3c1 100644 --- a/Modules/Discussions/ScrollToBottomButton/ScrollToBottomButton.swift +++ b/Modules/Discussions/ScrollToBottomButton/ScrollToBottomButton.swift @@ -124,19 +124,17 @@ public final class ScrollToBottomButton: UIButton { let circlePathBaseRect = CGRect(origin: .zero, size: Constants.size) - if #available(iOS 13.4, *) { - isPointerInteractionEnabled = true - - pointerStyleProvider = { button, proposedEffect, proposedShape -> UIPointerStyle? in - let targetedPreview = proposedEffect.preview - - let convertedRect = button.convert(circlePathBaseRect, to: targetedPreview.target.container) - - let bezier = UIBezierPath(ovalIn: convertedRect) - - return .init(effect: .highlight(targetedPreview), - shape: .path(bezier)) - } + isPointerInteractionEnabled = true + + pointerStyleProvider = { button, proposedEffect, proposedShape -> UIPointerStyle? in + let targetedPreview = proposedEffect.preview + + let convertedRect = button.convert(circlePathBaseRect, to: targetedPreview.target.container) + + let bezier = UIBezierPath(ovalIn: convertedRect) + + return .init(effect: .highlight(targetedPreview), + shape: .path(bezier)) } let circlePath = UIBezierPath(ovalIn: circlePathBaseRect) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/IdentityColorStyle.swift b/Modules/ObvDesignSystem/IdentityColorStyle.swift similarity index 100% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/IdentityColorStyle.swift rename to Modules/ObvDesignSystem/IdentityColorStyle.swift diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppTheme.swift b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppTheme.swift similarity index 91% rename from Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppTheme.swift rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppTheme.swift index 56483be7..ca140ed8 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppTheme.swift +++ b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppTheme.swift @@ -18,11 +18,9 @@ */ -import Foundation import UIKit import ObvTypes import ObvCrypto -import ObvUICoreData public final class AppTheme { @@ -86,7 +84,8 @@ extension AppTheme { }() - public func identityColors(for cryptoId: ObvCryptoId, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> (background: UIColor, text: UIColor) { + //public func identityColors(for cryptoId: ObvCryptoId, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> (background: UIColor, text: UIColor) { + public func identityColors(for cryptoId: ObvCryptoId, using style: IdentityColorStyle) -> (background: UIColor, text: UIColor) { switch style { case .hue: let hue = hueFromBytes(cryptoId.getIdentity()) @@ -101,7 +100,8 @@ extension AppTheme { } - public func groupColors(forGroupUid groupUid: UID, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> (background: UIColor, text: UIColor) { + //public func groupColors(forGroupUid groupUid: UID, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> (background: UIColor, text: UIColor) { + public func groupColors(forGroupUid groupUid: UID, using style: IdentityColorStyle) -> (background: UIColor, text: UIColor) { switch style { case .hue: let hue = hueFromBytes(groupUid.raw) diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/CallBarColor.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/CallBarColor.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/CallBarColor.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/CallBarColor.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondBlackTextDisabled.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondBlackTextDisabled.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondBlackTextDisabled.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondBlackTextDisabled.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondBlackTextHighEmphasis.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondBlackTextHighEmphasis.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondBlackTextHighEmphasis.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondBlackTextHighEmphasis.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondBlackTextMediumEmphasis.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondBlackTextMediumEmphasis.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondBlackTextMediumEmphasis.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondBlackTextMediumEmphasis.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondGreen.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondGreen.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondGreen.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondGreen.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary300.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary300.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary300.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary300.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary400.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary400.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary400.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary400.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary700.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary700.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary700.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary700.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary800.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary800.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary800.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary800.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary900.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary900.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondPrimary900.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondPrimary900.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSecondary600.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSecondary600.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSecondary600.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSecondary600.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSecondary700.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSecondary700.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSecondary700.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSecondary700.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSecondary800.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSecondary800.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSecondary800.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSecondary800.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSecondary900.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSecondary900.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSecondary900.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSecondary900.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSurfaceDark.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSurfaceDark.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSurfaceDark.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSurfaceDark.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSurfaceLight.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSurfaceLight.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSurfaceLight.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSurfaceLight.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSurfaceMedium.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSurfaceMedium.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondSurfaceMedium.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondSurfaceMedium.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnPrimaryDisabled.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnPrimaryDisabled.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnPrimaryDisabled.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnPrimaryDisabled.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnPrimaryHighEmphasis.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnPrimaryHighEmphasis.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnPrimaryHighEmphasis.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnPrimaryHighEmphasis.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnPrimaryMediumEmphasis.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnPrimaryMediumEmphasis.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnPrimaryMediumEmphasis.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnPrimaryMediumEmphasis.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnSecondaryDisabled.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnSecondaryDisabled.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnSecondaryDisabled.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnSecondaryDisabled.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnSecondaryHighEmphasis.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnSecondaryHighEmphasis.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnSecondaryHighEmphasis.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnSecondaryHighEmphasis.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnSecondaryMediumEmphasis.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnSecondaryMediumEmphasis.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondTextOnSecondaryMediumEmphasis.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondTextOnSecondaryMediumEmphasis.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondWhiteTextDisabled.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondWhiteTextDisabled.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondWhiteTextDisabled.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondWhiteTextDisabled.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondWhiteTextHighEmphasis.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondWhiteTextHighEmphasis.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondWhiteTextHighEmphasis.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondWhiteTextHighEmphasis.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondWhiteTextMediumEmphasis.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondWhiteTextMediumEmphasis.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/EdmondWhiteTextMediumEmphasis.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/EdmondWhiteTextMediumEmphasis.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OldSentCellBackground.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OldSentCellBackground.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OldSentCellBackground.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OldSentCellBackground.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OlvidDark.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OlvidDark.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OlvidDark.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OlvidDark.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OlvidLight.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OlvidLight.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OlvidLight.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OlvidLight.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OlvidPurple.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OlvidPurple.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OlvidPurple.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OlvidPurple.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OlvidRed.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OlvidRed.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/OlvidRed.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/OlvidRed.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/QRCodeScannerTransparentBackground.colorset/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/QRCodeScannerTransparentBackground.colorset/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Colors/QRCodeScannerTransparentBackground.colorset/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Colors/QRCodeScannerTransparentBackground.colorset/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Contents.json b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Contents.json similarity index 100% rename from Modules/OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets/Contents.json rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets/Contents.json diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppThemeColorScheme.swift b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeColorScheme.swift similarity index 99% rename from Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppThemeColorScheme.swift rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeColorScheme.swift index 9a993ccb..9b895af1 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppThemeColorScheme.swift +++ b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeColorScheme.swift @@ -18,7 +18,6 @@ */ -import Foundation import UIKit diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppThemeIcons.swift b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeIcons.swift similarity index 98% rename from Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppThemeIcons.swift rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeIcons.swift index 0e549b27..0272c7f9 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppThemeIcons.swift +++ b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeIcons.swift @@ -18,7 +18,6 @@ */ -import Foundation import UI_SystemIcon public struct AppThemeIcons { diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppThemeImages.swift b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeImages.swift similarity index 97% rename from Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppThemeImages.swift rename to Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeImages.swift index 09a79c7a..f92c2d35 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Elements/AppTheme/AppThemeImages.swift +++ b/Modules/ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeImages.swift @@ -18,7 +18,6 @@ */ -import Foundation import UIKit import UI_SystemIcon_UIKit diff --git a/Modules/ObvSettings/Localizable.xcstrings b/Modules/ObvSettings/Localizable.xcstrings new file mode 100644 index 00000000..b0ecef4a --- /dev/null +++ b/Modules/ObvSettings/Localizable.xcstrings @@ -0,0 +1,233 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "CHOOSE_FILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attach file" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir un fichier" + } + } + } + }, + "CHOOSE_IMAGE_FROM_LIBRARY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Photo & video library" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bibliothèque de photos & vidéos" + } + } + } + }, + "COMPOSE_MESSAGE_SETTINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Customize" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personnaliser" + } + } + } + }, + "discussion-mention-notification-mode.display-title.always" : { + "comment" : "Display title for the `always` value for mention notification mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Always" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toujours" + } + } + } + }, + "discussion-mention-notification-mode.display-title.default" : { + "comment" : "Display title for the `default` value for mention notification mode. Takes one argument, the global discussion notification mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Default (%1$@)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Par défaut (%1$@)" + } + } + } + }, + "discussion-mention-notification-mode.display-title.never" : { + "comment" : "Display title for the `never` value for mention notification mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Never" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jamais" + } + } + } + }, + "EPHEMERAL_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ephemeral message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message éphémère" + } + } + } + }, + "Introduce" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduce" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenter" + } + } + } + }, + "NOTIFICATION_SOUNDS_ALARM_CATEGORY_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Alarms" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Alarmes" + } + } + } + }, + "NOTIFICATION_SOUNDS_ANIMAL_CATEGORY_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Animals" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Animaux" + } + } + } + }, + "NOTIFICATION_SOUNDS_NEUTRAL_CATEGORY_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Neutral" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Neutre" + } + } + } + }, + "NOTIFICATION_SOUNDS_TOY_CATEGORY_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toys" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jouets" + } + } + } + }, + "SCAN_DOCUMENT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scan a document" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scanner un document" + } + } + } + }, + "SHOOT_PHOTO_OR_MOVIE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Camera" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appareil photo" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/Modules/ObvSettings/LocalizableClassForObvSettingsBundle.swift b/Modules/ObvSettings/LocalizableClassForObvSettingsBundle.swift new file mode 100644 index 00000000..3270858d --- /dev/null +++ b/Modules/ObvSettings/LocalizableClassForObvSettingsBundle.swift @@ -0,0 +1,45 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI + + +/// This is a dummy class, allowing to specify the appropriate module when declaring a localized string, so that the localized string key is looked up in the correct `Localizable.xcstrings` file. +final class LocalizableClassForObvSettingsBundle {} + + +func NSLocalizedString(_ key: String, comment: String) -> String { + return NSLocalizedString(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvSettingsBundle.self), comment: comment) +} + + +func NSLocalizedString(_ key: String) -> String { + return NSLocalizedString(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvSettingsBundle.self), comment: "Within ObvSettings") +} + + +extension Text { + + init(_ key: LocalizedStringKey, comment: StaticString? = nil) { + self.init(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvSettingsBundle.self), comment: comment ?? "Within ObvSettings") + } + +} + diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettings.swift b/Modules/ObvSettings/ObvMessengerSettings.swift similarity index 84% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettings.swift rename to Modules/ObvSettings/ObvMessengerSettings.swift index fbeadc61..59691446 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettings.swift +++ b/Modules/ObvSettings/ObvMessengerSettings.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -18,6 +18,8 @@ */ import Foundation +import ObvTypes +import ObvDesignSystem public struct ObvMessengerSettings { @@ -53,7 +55,7 @@ public struct ObvMessengerSettings { case noOne = "nobody" } - public static var autoAcceptGroupInviteFrom: AutoAcceptGroupInviteFrom { + public private(set) static var autoAcceptGroupInviteFrom: AutoAcceptGroupInviteFrom { get { let raw = userDefaults.stringOrNil(forKey: Keys.autoAcceptGroupInviteFrom) ?? AutoAcceptGroupInviteFrom.oneToOneContactsOnly.rawValue return AutoAcceptGroupInviteFrom(rawValue: raw) ?? .oneToOneContactsOnly @@ -63,6 +65,12 @@ public struct ObvMessengerSettings { } } + public static func setAutoAcceptGroupInviteFrom(to newValue: AutoAcceptGroupInviteFrom, changeMadeFromAnotherOwnedDevice: Bool, ownedCryptoId: ObvCryptoId?) { + guard newValue != autoAcceptGroupInviteFrom else { return } + autoAcceptGroupInviteFrom = newValue + ObvMessengerSettingsObservableObject.shared.autoAcceptGroupInviteFrom = (autoAcceptGroupInviteFrom, changeMadeFromAnotherOwnedDevice, ownedCryptoId) + } + } public struct Interface { @@ -70,7 +78,6 @@ public struct ObvMessengerSettings { enum Key: String { case identityColorStyle = "identityColorStyle" case contactsSortOrder = "contactsSortOrder" - case useOldDiscussionInterface = "useOldDiscussionInterface" case preferredComposeMessageViewActions = "preferredComposeMessageViewActions" private var kInterface: String { "interface" } @@ -106,16 +113,6 @@ public struct ObvMessengerSettings { } - public static var useOldDiscussionInterface: Bool { - get { - return userDefaults.boolOrNil(forKey: Key.useOldDiscussionInterface.path) ?? false - } - set { - userDefaults.set(newValue, forKey: Key.useOldDiscussionInterface.path) - } - } - - public static var preferredComposeMessageViewActions: [NewComposeMessageViewAction] { get { guard let rawValues = userDefaults.array(forKey: Key.preferredComposeMessageViewActions.path) as? [Int] else { return NewComposeMessageViewAction.defaultActions } @@ -163,7 +160,7 @@ public struct ObvMessengerSettings { // MARK: Read receipts - public static var doSendReadReceipt: Bool { + public private(set) static var doSendReadReceipt: Bool { get { return userDefaults.boolOrNil(forKey: Key.doSendReadReceipt.path) ?? false } @@ -172,6 +169,12 @@ public struct ObvMessengerSettings { } } + public static func setDoSendReadReceipt(to newValue: Bool, changeMadeFromAnotherOwnedDevice: Bool, ownedCryptoId: ObvCryptoId?) { + guard newValue != doSendReadReceipt else { return } + self.doSendReadReceipt = newValue + ObvMessengerSettingsObservableObject.shared.doSendReadReceipt = (doSendReadReceipt, changeMadeFromAnotherOwnedDevice, ownedCryptoId) + } + // MARK: Rich link previews public enum FetchContentRichURLsMetadataChoice: Int, CaseIterable, Identifiable { @@ -426,12 +429,12 @@ public struct ObvMessengerSettings { // MARK: Local Authentication Policy - public static var localAuthenticationPolicy: LocalAuthenticationPolicy { + public static var localAuthenticationPolicy: ObvLocalAuthenticationPolicy { get { guard let rawPolicy = userDefaults.integerOrNil(forKey: Key.localAuthenticationPolicy.path) else { return .none } - guard let policy = LocalAuthenticationPolicy(rawValue: rawPolicy) else { + guard let policy = ObvLocalAuthenticationPolicy(rawValue: rawPolicy) else { assertionFailure(); return .none } return policy @@ -596,25 +599,38 @@ public struct ObvMessengerSettings { public struct VoIP { - public static var isCallKitEnabled: Bool { + enum Key: String { + case receiveCallsOnThisDevice = "receiveCallsOnThisDevice" + + private var kVoIP: String { "voip" } + + var path: String { + [kSettingsKeyPath, kVoIP, self.rawValue].joined(separator: ".") + } + + } + + + public static var receiveCallsOnThisDevice: Bool { get { - guard ObvUICoreDataConstants.isRunningOnRealDevice else { return false } - return userDefaults.boolOrNil(forKey: "settings.voip.isCallKitEnabled") ?? true + return userDefaults.boolOrNil(forKey: Key.receiveCallsOnThisDevice.path) ?? true } set { - guard ObvUICoreDataConstants.isRunningOnRealDevice else { return } - guard newValue != isCallKitEnabled else { return } - userDefaults.set(newValue, forKey: "settings.voip.isCallKitEnabled") - ObvMessengerSettingsNotifications.isCallKitEnabledSettingDidChange + guard newValue != receiveCallsOnThisDevice else { return } + userDefaults.set(newValue, forKey: Key.receiveCallsOnThisDevice.path) + ObvMessengerSettingsNotifications.receiveCallsOnThisDeviceSettingDidChange .postOnDispatchQueue() } } + public static var isIncludesCallsInRecentsEnabled: Bool { get { + guard !ObvUICoreDataConstants.targetEnvironmentIsMacCatalyst else { return false } return userDefaults.boolOrNil(forKey: "settings.voip.isIncludesCallsInRecentsEnabled") ?? true } set { + assert(!ObvUICoreDataConstants.targetEnvironmentIsMacCatalyst) guard newValue != isIncludesCallsInRecentsEnabled else { return } userDefaults.set(newValue, forKey: "settings.voip.isIncludesCallsInRecentsEnabled") ObvMessengerSettingsNotifications.isIncludesCallsInRecentsEnabledSettingDidChange @@ -622,8 +638,10 @@ public struct ObvMessengerSettings { } } + public static let maxaveragebitratePossibleValues: [Int?] = [nil, 8_000, 16_000, 24_000, 32_000] + // See https://datatracker.ietf.org/doc/html/draft-spittka-payload-rtp-opus public static var maxaveragebitrate: Int? { get { @@ -842,9 +860,13 @@ public final class ObvMessengerSettingsObservableObject: ObservableObject { public static let shared = ObvMessengerSettingsObservableObject() @Published public fileprivate(set) var defaultEmojiButton: String? + @Published public fileprivate(set) var doSendReadReceipt: (doSendReadReceipt: Bool, changeMadeFromAnotherOwnedDevice: Bool, ownedCryptoId: ObvCryptoId?) + @Published public fileprivate(set) var autoAcceptGroupInviteFrom: (autoAcceptGroupInviteFrom: ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom, changeMadeFromAnotherOwnedDevice: Bool, ownedCryptoId: ObvCryptoId?) private init() { defaultEmojiButton = ObvMessengerSettings.Emoji.defaultEmojiButton + doSendReadReceipt = (ObvMessengerSettings.Discussions.doSendReadReceipt, false, nil) + autoAcceptGroupInviteFrom = (ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom, false, nil) } } @@ -883,3 +905,81 @@ public extension UserDefaults { } } + + + +// MARK: - For snapshot purposes + +public extension ObvMessengerSettings { + + static var syncSnapshotNode: GlobalSettingsSyncSnapshotNode { + .init( + autoAcceptGroupInviteFrom: ContactsAndGroups.autoAcceptGroupInviteFrom, + doSendReadReceipt: Discussions.doSendReadReceipt) + } + +} + + +public struct GlobalSettingsSyncSnapshotNode: ObvSyncSnapshotNode { + + private let domain: Set + private let autoAcceptGroupInviteFrom: ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom? + private let doSendReadReceipt: Bool? + + public let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case autoAcceptGroupInviteFrom = "auto_join_groups" + case doSendReadReceipt = "send_read_receipt" + case domain = "domain" + } + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + init(autoAcceptGroupInviteFrom: ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom, doSendReadReceipt: Bool) { + self.autoAcceptGroupInviteFrom = autoAcceptGroupInviteFrom + self.doSendReadReceipt = doSendReadReceipt + self.domain = Self.defaultDomain + } + + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(domain, forKey: .domain) + try container.encodeIfPresent(autoAcceptGroupInviteFrom?.rawValue, forKey: .autoAcceptGroupInviteFrom) + try container.encodeIfPresent(doSendReadReceipt, forKey: .doSendReadReceipt) + } + + + public init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + if let rawAutoAcceptGroupInviteFrom = try values.decodeIfPresent(String.self, forKey: .autoAcceptGroupInviteFrom), + let _autoAcceptGroupInviteFrom = ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom(rawValue: rawAutoAcceptGroupInviteFrom) { + self.autoAcceptGroupInviteFrom = _autoAcceptGroupInviteFrom + } else { + self.autoAcceptGroupInviteFrom = nil + } + self.doSendReadReceipt = try values.decodeIfPresent(Bool.self, forKey: .doSendReadReceipt) + } + + public func useToUpdateGlobalSettings() { + + if domain.contains(.autoAcceptGroupInviteFrom), let autoAcceptGroupInviteFrom { + ObvMessengerSettings.ContactsAndGroups.setAutoAcceptGroupInviteFrom(to: autoAcceptGroupInviteFrom, changeMadeFromAnotherOwnedDevice: false, ownedCryptoId: nil) + } + + if domain.contains(.doSendReadReceipt), let doSendReadReceipt { + ObvMessengerSettings.Discussions.setDoSendReadReceipt(to: doSendReadReceipt, changeMadeFromAnotherOwnedDevice: false, ownedCryptoId: nil) + } + + } + + enum ObvError: Error { + case couldNotDeserializeAutoAcceptGroupInvite + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettingsNotifications.swift b/Modules/ObvSettings/ObvMessengerSettingsNotifications.swift similarity index 91% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettingsNotifications.swift rename to Modules/ObvSettings/ObvMessengerSettingsNotifications.swift index 712fcd92..bf93f00b 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettingsNotifications.swift +++ b/Modules/ObvSettings/ObvMessengerSettingsNotifications.swift @@ -32,18 +32,18 @@ fileprivate struct OptionalWrapper { public enum ObvMessengerSettingsNotifications { case contactsSortOrderDidChange case preferredComposeMessageViewActionsDidChange - case isCallKitEnabledSettingDidChange case isIncludesCallsInRecentsEnabledSettingDidChange case performInteractionDonationSettingDidChange case identityColorStyleDidChange + case receiveCallsOnThisDeviceSettingDidChange private enum Name { case contactsSortOrderDidChange case preferredComposeMessageViewActionsDidChange - case isCallKitEnabledSettingDidChange case isIncludesCallsInRecentsEnabledSettingDidChange case performInteractionDonationSettingDidChange case identityColorStyleDidChange + case receiveCallsOnThisDeviceSettingDidChange private var namePrefix: String { String(describing: ObvMessengerSettingsNotifications.self) } @@ -58,10 +58,10 @@ public enum ObvMessengerSettingsNotifications { switch notification { case .contactsSortOrderDidChange: return Name.contactsSortOrderDidChange.name case .preferredComposeMessageViewActionsDidChange: return Name.preferredComposeMessageViewActionsDidChange.name - case .isCallKitEnabledSettingDidChange: return Name.isCallKitEnabledSettingDidChange.name case .isIncludesCallsInRecentsEnabledSettingDidChange: return Name.isIncludesCallsInRecentsEnabledSettingDidChange.name case .performInteractionDonationSettingDidChange: return Name.performInteractionDonationSettingDidChange.name case .identityColorStyleDidChange: return Name.identityColorStyleDidChange.name + case .receiveCallsOnThisDeviceSettingDidChange: return Name.receiveCallsOnThisDeviceSettingDidChange.name } } } @@ -72,14 +72,14 @@ public enum ObvMessengerSettingsNotifications { info = nil case .preferredComposeMessageViewActionsDidChange: info = nil - case .isCallKitEnabledSettingDidChange: - info = nil case .isIncludesCallsInRecentsEnabledSettingDidChange: info = nil case .performInteractionDonationSettingDidChange: info = nil case .identityColorStyleDidChange: info = nil + case .receiveCallsOnThisDeviceSettingDidChange: + info = nil } return info } @@ -123,13 +123,6 @@ public enum ObvMessengerSettingsNotifications { } } - public static func observeIsCallKitEnabledSettingDidChange(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.isCallKitEnabledSettingDidChange.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - block() - } - } - public static func observeIsIncludesCallsInRecentsEnabledSettingDidChange(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { let name = Name.isIncludesCallsInRecentsEnabledSettingDidChange.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in @@ -151,4 +144,11 @@ public enum ObvMessengerSettingsNotifications { } } + public static func observeReceiveCallsOnThisDeviceSettingDidChange(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { + let name = Name.receiveCallsOnThisDeviceSettingDidChange.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + block() + } + } + } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataConstants.swift b/Modules/ObvSettings/ObvUICoreDataConstants.swift similarity index 87% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataConstants.swift rename to Modules/ObvSettings/ObvUICoreDataConstants.swift index 4435b798..dc0da1f3 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataConstants.swift +++ b/Modules/ObvSettings/ObvUICoreDataConstants.swift @@ -23,11 +23,11 @@ import ObvTypes public struct ObvUICoreDataConstants { - static let logSubsystem = "io.olvid.obvuicoredata" + public static let logSubsystem = "io.olvid.obvuicoredata" public static let minimumLengthOfPasswordForHiddenProfiles = 4 - static let seedLengthForHiddenProfiles = 8 + public static let seedLengthForHiddenProfiles = 8 static let appGroupIdentifier = Bundle.main.infoDictionary!["OBV_APP_GROUP_IDENTIFIER"]! as! String @@ -55,6 +55,21 @@ public struct ObvUICoreDataConstants { }() + static let targetEnvironmentIsMacCatalyst: Bool = { + #if targetEnvironment(macCatalyst) + return true + #else + return false + #endif + }() + + + /// We use CallKit under iOS and iPadOS only (not on a mac). And we do not use it when running Olvid in a simulator. + public static let useCallKit: Bool = { + Self.isRunningOnRealDevice && !Self.targetEnvironmentIsMacCatalyst + }() + + // Keys of userDefault properties shared between app and extensions public enum SharedUserDefaultsKey: String { @@ -107,8 +122,8 @@ public struct ObvUICoreDataConstants { /// This is for a place to store and process dropped attachments case forTemporaryDroppedItems - private var securityApplicationGroupURL: URL { - FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: ObvUICoreDataConstants.appGroupIdentifier)! + public static var securityApplicationGroupURL: URL { + FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: ObvUICoreDataConstants.appGroupIdentifier)!.resolvingSymlinksInPath() } public func appendingPathComponent(_ pathComponent: String) -> URL { @@ -126,9 +141,9 @@ public struct ObvUICoreDataConstants { public var url: URL { switch self { case .mainAppContainer: - return securityApplicationGroupURL.appendingPathComponent("Application", isDirectory: true) + return Self.securityApplicationGroupURL.appendingPathComponent("Application", isDirectory: true) case .mainEngineContainer: - return securityApplicationGroupURL.appendingPathComponent("Engine", isDirectory: true) + return Self.securityApplicationGroupURL.appendingPathComponent("Engine", isDirectory: true) case .forDatabase: return Self.mainAppContainer.url.appendingPathComponent("Database", isDirectory: true) case .forFyles: @@ -138,7 +153,7 @@ public struct ObvUICoreDataConstants { case .forTempFiles: return FileManager.default.temporaryDirectory case .forMessagesDecryptedWithinNotificationExtension: - return securityApplicationGroupURL.appendingPathComponent("MessagesDecryptedWithinNotificationExtension", isDirectory: true) + return Self.securityApplicationGroupURL.appendingPathComponent("MessagesDecryptedWithinNotificationExtension", isDirectory: true) case .forCache: return Self.mainAppContainer.url.appendingPathComponent("Cache", isDirectory: true) case .forTrash: @@ -152,7 +167,7 @@ public struct ObvUICoreDataConstants { case .forProfilePicturesCache: return Self.forCache.url.appendingPathComponent("ProfilePicture", isDirectory: true) case .forNotificationAttachments: - return securityApplicationGroupURL.appendingPathComponent("NotificationAttachments", isDirectory: true) + return Self.securityApplicationGroupURL.appendingPathComponent("NotificationAttachments", isDirectory: true) case .forFylesHardlinksWithinMainApp: return Self.mainAppContainer.url.appendingPathComponent("FylesHardLinks", isDirectory: true).appendingPathComponent(ObvUICoreDataConstants.AppType.mainApp.pathComponent, isDirectory: true) case .forFylesHardlinksWithinShareExtension: diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/AuthenticationMethod.swift b/Modules/ObvSettings/Types/AuthenticationMethod.swift similarity index 92% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/AuthenticationMethod.swift rename to Modules/ObvSettings/Types/AuthenticationMethod.swift index 595f5f56..bd18398c 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/AuthenticationMethod.swift +++ b/Modules/ObvSettings/Types/AuthenticationMethod.swift @@ -45,12 +45,16 @@ public enum AuthenticationMethod { // We first check whether Touch ID or Face ID is unavailable or not enrolled if let biometryType = currentBiometricEnrollement() { switch biometryType { - case .none: break + case .none: + break case .touchID: return .touchID case .faceID: return .faceID - @unknown default: assertionFailure() + case .opticID: + break + @unknown default: + assertionFailure() } } else { // No authentication with biometrics, check if passcode is available diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/CallUpdateKind.swift b/Modules/ObvSettings/Types/ContactsSortOrder.swift similarity index 82% rename from iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/CallUpdateKind.swift rename to Modules/ObvSettings/Types/ContactsSortOrder.swift index c515b909..1f316a61 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/CallUpdateKind.swift +++ b/Modules/ObvSettings/Types/ContactsSortOrder.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -16,13 +16,11 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import Foundation -enum CallUpdateKind { - case state(newState: CallState) - case mute - case callParticipantChange +public enum ContactsSortOrder: Int, CaseIterable { + case byFirstName = 0 + case byLastName = 1 } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/DurationOption.swift b/Modules/ObvSettings/Types/DurationOption.swift similarity index 100% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/DurationOption.swift rename to Modules/ObvSettings/Types/DurationOption.swift diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/LocalAuthenticationPolicy.swift b/Modules/ObvSettings/Types/LocalAuthenticationPolicy.swift similarity index 97% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/LocalAuthenticationPolicy.swift rename to Modules/ObvSettings/Types/LocalAuthenticationPolicy.swift index cbd96c9a..4ab69531 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/LocalAuthenticationPolicy.swift +++ b/Modules/ObvSettings/Types/LocalAuthenticationPolicy.swift @@ -20,7 +20,7 @@ import Foundation -public enum LocalAuthenticationPolicy: Int, CaseIterable { +public enum ObvLocalAuthenticationPolicy: Int, CaseIterable { // No authentication case none // User authentication with biometry, Apple Watch, or the device passcode. diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/MentionNotificationMode.swift b/Modules/ObvSettings/Types/MentionNotificationMode.swift similarity index 100% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/MentionNotificationMode.swift rename to Modules/ObvSettings/Types/MentionNotificationMode.swift diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/NewComposeMessageViewAction.swift b/Modules/ObvSettings/Types/NewComposeMessageViewAction.swift similarity index 100% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/Types/NewComposeMessageViewAction.swift rename to Modules/ObvSettings/Types/NewComposeMessageViewAction.swift diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Enums/NotificationSound.swift b/Modules/ObvSettings/Types/NotificationSound.swift similarity index 97% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Enums/NotificationSound.swift rename to Modules/ObvSettings/Types/NotificationSound.swift index 17077441..3ee4f729 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Enums/NotificationSound.swift +++ b/Modules/ObvSettings/Types/NotificationSound.swift @@ -160,3 +160,10 @@ public enum NotificationSound: String, Sound, CaseIterable { return Category(rawValue: rawCategory) } } + + +public protocol Sound: Hashable { + var filename: String? { get } + var loops: Bool { get } + var feedback: UINotificationFeedbackGenerator.FeedbackType? { get } +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/UserDefaults+Extension.swift b/Modules/ObvSettings/UserDefaults+Extension.swift similarity index 100% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/UserDefaults+Extension.swift rename to Modules/ObvSettings/UserDefaults+Extension.swift diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Elements/Buttons/ObvImageButton.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/Buttons/ObvImageButton.swift index 3b649c3a..89ae78b9 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Elements/Buttons/ObvImageButton.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/Buttons/ObvImageButton.swift @@ -20,6 +20,8 @@ import UIKit import UI_SystemIcon import UI_SystemIcon_UIKit +import ObvDesignSystem + /// This `UIButton` subclass is the UIKit equivalent of the `OlvidButton` used in our SwiftUI structs. public final class ObvImageButton: UIButton { @@ -42,8 +44,8 @@ public final class ObvImageButton: UIButton { layer.cornerRadius = 12.0 layer.cornerCurve = .continuous resetColors() - titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) - imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 8) + //titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) + //imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 8) } @@ -92,7 +94,7 @@ public final class ObvImageButton: UIButton { internal func resetColors() { setTitleColor(.white, for: .normal) setTitleColor(.white.withAlphaComponent(0.2), for: .highlighted) - adjustsImageWhenHighlighted = false + // adjustsImageWhenHighlighted = false if !isEnabled { self.backgroundColor = AppTheme.shared.colorScheme.secondarySystemFill } else { diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsConfiguration+Utils.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsConfiguration+Utils.swift index 7d7df6fd..b84a2eb2 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsConfiguration+Utils.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsConfiguration+Utils.swift @@ -21,10 +21,14 @@ import Foundation import ObvUICoreData import UIKit import ObvTypes -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials import UI_SystemIcon +import ObvDesignSystem + extension CircledInitialsConfiguration { + + public enum ContentType { case none case icon(SystemIcon, UIColor) @@ -32,13 +36,14 @@ extension CircledInitialsConfiguration { case picture(UIImage) } - public var icon: SystemIcon? { - switch self { - case .contact: return nil - case .group, .groupV2: return .person3Fill - case .icon(let icon): return icon.icon - } - } +// public var icon: SystemIcon { +// switch self { +// case .contact: return .person +// case .group, .groupV2: return .person3Fill +// case .icon(let icon): return icon.icon +// } +// } + public func contentType(using style: IdentityColorStyle) -> ContentType { if let image = self.photo { @@ -52,36 +57,36 @@ extension CircledInitialsConfiguration { } } - public func backgroundColor(appTheme: AppTheme, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> UIColor { - switch self { - case .contact(initial: _, photoURL: _, showGreenShield: _, showRedShield: _, cryptoId: let cryptoId, tintAdjustementMode: _): - return appTheme.identityColors(for: cryptoId, using: style).background - case .group(photoURL: _, groupUid: let groupUid): - return appTheme.groupColors(forGroupUid: groupUid, using: style).background - case .groupV2(photoURL: _, groupIdentifier: let groupIdentifier, showGreenShield: _): - return appTheme.groupV2Colors(forGroupIdentifier: groupIdentifier).background - case .icon: - return appTheme.colorScheme.systemFill - } - } - - - public func foregroundColor(appTheme: AppTheme, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> UIColor { - switch self { - case .contact(initial: _, photoURL: _, showGreenShield: _, showRedShield: _, cryptoId: let cryptoId, tintAdjustementMode: _): - return appTheme.identityColors(for: cryptoId, using: style).text - case .group(photoURL: _, groupUid: let groupUid): - return appTheme.groupColors(forGroupUid: groupUid, using: style).text - case .groupV2(photoURL: _, groupIdentifier: let groupIdentifier, showGreenShield: _): - return appTheme.groupV2Colors(forGroupIdentifier: groupIdentifier).text - case .icon: - return appTheme.colorScheme.secondaryLabel - } - } + +// public func backgroundColor(appTheme: AppTheme, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> UIColor { +// switch self { +// case .contact(initial: _, photo: _, showGreenShield: _, showRedShield: _, cryptoId: let cryptoId, tintAdjustementMode: _): +// return appTheme.identityColors(for: cryptoId, using: style).background +// case .group(photo: _, groupUid: let groupUid): +// return appTheme.groupColors(forGroupUid: groupUid, using: style).background +// case .groupV2(photo: _, groupIdentifier: let groupIdentifier, showGreenShield: _): +// return appTheme.groupV2Colors(forGroupIdentifier: groupIdentifier).background +// case .icon: +// return appTheme.colorScheme.systemFill +// } +// } +// +// +// public func foregroundColor(appTheme: AppTheme, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> UIColor { +// switch self { +// case .contact(initial: _, photo: _, showGreenShield: _, showRedShield: _, cryptoId: let cryptoId, tintAdjustementMode: _): +// return appTheme.identityColors(for: cryptoId, using: style).text +// case .group(photo: _, groupUid: let groupUid): +// return appTheme.groupColors(forGroupUid: groupUid, using: style).text +// case .groupV2(photo: _, groupIdentifier: let groupIdentifier, showGreenShield: _): +// return appTheme.groupV2Colors(forGroupIdentifier: groupIdentifier).text +// case .icon: +// return appTheme.colorScheme.secondaryLabel +// } +// } private func iconInfo(using style: IdentityColorStyle) -> (icon: SystemIcon, tintColor: UIColor)? { - guard let icon else { return nil } return (icon, foregroundColor(appTheme: AppTheme.shared, using: style)) } } diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsView.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsView.swift index 0d7c536e..fc7344c2 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsView.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsView.swift @@ -16,14 +16,15 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import Foundation import ObvUICoreData import SwiftUI -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials import UI_SystemIcon import UI_SystemIcon_SwiftUI +import ObvDesignSystem + // MARK: - SwiftUINewCircledInitialsView public struct CircledInitialsView: View { @@ -91,7 +92,7 @@ fileprivate struct RoundedClipView: View { case .icon(let icon, let color): return AnyView(createIconView(using: icon, color: color)) case .initial(let text, let color): return AnyView(createInitialView(using: text, color: color)) case .picture(let image): return AnyView(createPictureView(using: image)) - case .none: return AnyView(Text("")) + case .none: return AnyView(Text(verbatim: "")) } } diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/NewCircledInitialsView.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/NewCircledInitialsView.swift index 557fd699..82ddf5f7 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/NewCircledInitialsView.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/NewCircledInitialsView.swift @@ -20,8 +20,11 @@ import SwiftUI import UIKit import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials import UI_SystemIcon +import ObvDesignSystem +import ObvSettings + // MARK: - NewCircledInitialsView /// Square view, with a rounded clip view allowing to display either an icon, an initial (letter), or a photo. @@ -53,7 +56,7 @@ public final class NewCircledInitialsView: UIView { setupIconView(icon: configuration.icon, tintColor: configuration.foregroundColor(appTheme: AppTheme.shared, using: ObvMessengerSettings.Interface.identityColorStyle)) switch configuration { - case .contact(let initial, let photoURL, let showGreenShield, let showRedShield, let cryptoId, let tintAdjustmentMode): + case .contact(let initial, let photo, let showGreenShield, let showRedShield, let cryptoId, let tintAdjustmentMode): let textColor: UIColor let roundedClipViewBackgroundColor: UIColor @@ -72,20 +75,24 @@ public final class NewCircledInitialsView: UIView { setupInitialView(string: initial, textColor: textColor) roundedClipView.backgroundColor = roundedClipViewBackgroundColor - setupPictureView(imageURL: photoURL) + setupPictureView(photo: photo) greenShieldView.isHidden = !showGreenShield redShieldView.isHidden = !showRedShield - case .group(let photoURL, _): - setupPictureView(imageURL: photoURL) + case .group(let photo, _): + setupPictureView(photo: photo) greenShieldView.isHidden = true redShieldView.isHidden = true - case .groupV2(photoURL: let photoURL, groupIdentifier: _, showGreenShield: let showGreenShield): - setupPictureView(imageURL: photoURL) + case .groupV2(photo: let photo, groupIdentifier: _, showGreenShield: let showGreenShield): + setupPictureView(photo: photo) greenShieldView.isHidden = !showGreenShield redShieldView.isHidden = true case .icon: greenShieldView.isHidden = true redShieldView.isHidden = true + case .photo(photo: let photo): + setupPictureView(photo: photo) + greenShieldView.isHidden = true + redShieldView.isHidden = true } } @@ -126,28 +133,45 @@ public final class NewCircledInitialsView: UIView { } - private func setupPictureView(imageURL: URL?) { - guard let imageURL = imageURL else { - pictureView.image = nil - pictureView.isHidden = true - return - } - guard FileManager.default.fileExists(atPath: imageURL.path) else { - // This happens when we are in the middle of a group details edition. - // The imageURL should soon be changed to a valid one. + private func setupPictureView(photo: CircledInitialsConfiguration.Photo?) { + guard let photo else { pictureView.image = nil pictureView.isHidden = true return } - guard let data = try? Data(contentsOf: imageURL) else { - pictureView.image = nil - pictureView.isHidden = true - return - } - guard let image = UIImage(data: data) else { - pictureView.image = nil - pictureView.isHidden = true - return + let image: UIImage + switch photo { + case .url(let imageURL): + guard let imageURL = imageURL else { + pictureView.image = nil + pictureView.isHidden = true + return + } + guard FileManager.default.fileExists(atPath: imageURL.path) else { + // This happens when we are in the middle of a group details edition. + // The imageURL should soon be changed to a valid one. + pictureView.image = nil + pictureView.isHidden = true + return + } + guard let data = try? Data(contentsOf: imageURL) else { + pictureView.image = nil + pictureView.isHidden = true + return + } + guard let _image = UIImage(data: data) else { + pictureView.image = nil + pictureView.isHidden = true + return + } + image = _image + case .image(let _image): + guard let _image else { + pictureView.image = nil + pictureView.isHidden = true + return + } + image = _image } pictureView.image = image pictureView.isHidden = false diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/SwiftUI/BlurView.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/SwiftUI/BlurView.swift similarity index 76% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/SwiftUI/BlurView.swift rename to Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/SwiftUI/BlurView.swift index ff53a78b..029a023a 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/SwiftUI/BlurView.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/SwiftUI/BlurView.swift @@ -22,21 +22,21 @@ import SwiftUI -struct BlurView: UIViewRepresentable { - typealias UIViewType = UIVisualEffectView +public struct BlurView: UIViewRepresentable { + public typealias UIViewType = UIVisualEffectView let style: UIBlurEffect.Style - init(style: UIBlurEffect.Style = .systemUltraThinMaterial) { + public init(style: UIBlurEffect.Style = .systemUltraThinMaterial) { self.style = style } - func makeUIView(context: Context) -> UIVisualEffectView { + public func makeUIView(context: Context) -> UIVisualEffectView { let blurEffect = UIBlurEffect(style: style) return UIVisualEffectView(effect: blurEffect) } - func updateUIView(_ uiView: UIVisualEffectView, context: Context) { + public func updateUIView(_ uiView: UIVisualEffectView, context: Context) { let blurEffect = UIBlurEffect(style: style) uiView.effect = blurEffect } diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/SwiftUI/HUDView.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/SwiftUI/HUDView.swift similarity index 81% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/SwiftUI/HUDView.swift rename to Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/SwiftUI/HUDView.swift index 6660defa..ece1cc47 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/SwiftUI/HUDView.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/SwiftUI/HUDView.swift @@ -17,25 +17,32 @@ * along with Olvid. If not, see . */ -import ObvUI import SwiftUI +import ObvDesignSystem -struct HUDView: View { +public struct HUDView: View { - enum Category { + public enum Category { case progress case checkmark + case xmark } let category: Category + + public init(category: Category) { + self.category = category + } - var body: some View { + public var body: some View { switch category { case .progress: HUDInnerView(category: .progress) case .checkmark: HUDInnerView(category: .checkmark) + case .xmark: + HUDInnerView(category: .xmark) } } @@ -57,10 +64,15 @@ fileprivate struct HUDInnerView: View { Group { switch category { case .progress: - ObvActivityIndicator(isAnimating: .constant(true), style: .large, color: nil) + ProgressView() + .controlSize(.large) .frame(width: width, height: height, alignment: .center) case .checkmark: - Image(systemName: "checkmark.circle") + Image(systemIcon: .checkmarkCircle) + .font(Font.system(size: 80)) + .foregroundColor(Color(AppTheme.shared.colorScheme.tertiaryLabel)) + case .xmark: + Image(systemIcon: .xmarkCircle) .font(Font.system(size: 80)) .foregroundColor(Color(AppTheme.shared.colorScheme.tertiaryLabel)) } @@ -94,7 +106,7 @@ struct HUDView_Previews: PreviewProvider { HUDView(category: .progress) .padding() ZStack { - Text("Some string for testing only") + Text(verbatim: "Some string for testing only") .frame(width: 200, height: 200 , alignment: .center) HUDView(category: .checkmark) diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvHUDView.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvHUDView.swift similarity index 96% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvHUDView.swift rename to Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvHUDView.swift index fb6298d2..ee13b041 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvHUDView.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvHUDView.swift @@ -37,7 +37,7 @@ class ObvHUDView: UIView { self.clipsToBounds = true self.layer.cornerRadius = 8 - backgroundColor = appTheme.colorScheme.secondarySystemFill + backgroundColor = .secondarySystemFill let blurEffect = UIBlurEffect(style: .systemThinMaterial) let blurEffectView = UIVisualEffectView(effect: blurEffect) diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvIconHUD.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvIconHUD.swift similarity index 95% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvIconHUD.swift rename to Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvIconHUD.swift index 00ffe7e6..6142c2dc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvIconHUD.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvIconHUD.swift @@ -17,7 +17,6 @@ * along with Olvid. If not, see . */ -import ObvUI import UIKit import UI_SystemIcon import UI_SystemIcon_UIKit @@ -46,7 +45,7 @@ final class ObvIconHUD: ObvHUDView { addSubview(imageView) imageView.translatesAutoresizingMaskIntoConstraints = false imageView.contentMode = .scaleAspectFit - imageView.tintColor = appTheme.colorScheme.secondaryLabel + imageView.tintColor = .secondaryLabel let constraints = [ imageView.centerXAnchor.constraint(equalTo: centerXAnchor), diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvLoadingHUD.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvLoadingHUD.swift similarity index 100% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvLoadingHUD.swift rename to Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvLoadingHUD.swift diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvTextHUD.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvTextHUD.swift similarity index 96% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvTextHUD.swift rename to Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvTextHUD.swift index 3175d0d8..5fcabcea 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/HUDs/ObvTextHUD.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/HUDs/ObvTextHUD.swift @@ -42,7 +42,7 @@ final class ObvTextHUD: ObvHUDView { addSubview(uiLabel) uiLabel.translatesAutoresizingMaskIntoConstraints = false - uiLabel.textColor = appTheme.colorScheme.secondaryLabel + uiLabel.textColor = .secondaryLabel uiLabel.backgroundColor = .clear uiLabel.font = UIFont.preferredFont(forTextStyle: .largeTitle) uiLabel.textAlignment = .center diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/ObvCanShowHUD.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/ObvCanShowHUD.swift similarity index 96% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/ObvCanShowHUD.swift rename to Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/ObvCanShowHUD.swift index 2236e3b1..8478496f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/ObvCanShowHUD.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/ObvCanShowHUD.swift @@ -20,7 +20,7 @@ import Foundation -protocol ObvCanShowHUD { +public protocol ObvCanShowHUD { func showHUD(type: ObvHUDType, completionHandler: (() -> Void)?) func hideHUD() diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/ObvHUDType.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/ObvHUDType.swift similarity index 96% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/ObvHUDType.swift rename to Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/ObvHUDType.swift index d2ca23d4..9677ecbf 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/ObvHUDType.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/ObvHUDType.swift @@ -18,10 +18,9 @@ */ import Foundation -import ObvUI import UI_SystemIcon -enum ObvHUDType { +public enum ObvHUDType { case checkmark case xmark case spinner diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/UIViewController+ObvCanShowHUD.swift b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/UIViewController+ObvCanShowHUD.swift similarity index 90% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/UIViewController+ObvCanShowHUD.swift rename to Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/UIViewController+ObvCanShowHUD.swift index d60081e7..21f45144 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/HUD/UIKit/UIViewController+ObvCanShowHUD.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Elements/HUD/UIKit/UIViewController+ObvCanShowHUD.swift @@ -22,7 +22,15 @@ import UIKit extension UIViewController: ObvCanShowHUD { - func showHUD(type: ObvHUDType, completionHandler: (() -> Void)? = nil) { + public func showHUDAndAwaitAnimationEnd(type: ObvHUDType) async { + await withCheckedContinuation { (continuation: CheckedContinuation) in + showHUD(type: type) { + continuation.resume() + } + } + } + + public func showHUD(type: ObvHUDType, completionHandler: (() -> Void)? = nil) { assert(Thread.isMainThread) hideHUD() @@ -87,7 +95,7 @@ extension UIViewController: ObvCanShowHUD { } - func hudIsShown() -> Bool { + public func hudIsShown() -> Bool { for subview in view.subviews { if subview is ObvHUDView { return true @@ -103,7 +111,7 @@ extension UIViewController: ObvCanShowHUD { } - func hideHUD() { + public func hideHUD() { let hudViews = findAllHUDs() guard !hudViews.isEmpty else { return } diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Localizable.xcstrings b/Modules/OlvidUI/ObvUI/ObvUI/Localizable.xcstrings new file mode 100644 index 00000000..1d838579 --- /dev/null +++ b/Modules/OlvidUI/ObvUI/ObvUI/Localizable.xcstrings @@ -0,0 +1,1777 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "ARE_YOU_KIDDING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Are you kidding?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous plaisantez ?" + } + } + } + }, + "BASSOON" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bassoon" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Basson" + } + } + } + }, + "BELL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bell" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cloche" + } + } + } + }, + "BIRD_CARDINAL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cardinal" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cardinal" + } + } + } + }, + "BIRD_COQUI" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coqui" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Francolin coqui" + } + } + } + }, + "BIRD_CROW" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Crow" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Corbeau" + } + } + } + }, + "BIRD_CUCKOO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cuckoo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coucou" + } + } + } + }, + "BIRD_DUCK_QUACK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Duck" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Canard" + } + } + } + }, + "BIRD_DUCK_QUACKS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Duck quacks" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coin-coin" + } + } + } + }, + "BIRD_EAGLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eagle" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aigle" + } + } + } + }, + "BIRD_IN_FOREST" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bird in the forest" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oiseau dans la forêt" + } + } + } + }, + "BIRD_MAGPIE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Magpie" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pie" + } + } + } + }, + "BIRD_OWL_HORNED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Horned owl" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hibou à cornes" + } + } + } + }, + "BIRD_OWL_TAWNY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tawny owl" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chouette hulotte" + } + } + } + }, + "BIRD_TWEET" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bird Tweet" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cui-cui" + } + } + } + }, + "BIRD_WARNING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hawk" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Buse" + } + } + } + }, + "BLOCK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Block" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bloquer" + } + } + } + }, + "BRASS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Brass" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cuivres" + } + } + } + }, + "BRING_THE_DRAMA" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bring the drama" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feu aux poudres" + } + } + } + }, + "BUSY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Busy" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Occupé" + } + } + } + }, + "CALM" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calm" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calme" + } + } + } + }, + "CHICKEN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chicken" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Poulet" + } + } + } + }, + "CHICKEN_ROOSTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rooster 1" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coq 1" + } + } + } + }, + "CHICKEN_ROSTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rooster 2" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coq 2" + } + } + } + }, + "CHIME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chime" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carillon" + } + } + } + }, + "CICADA" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cicada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cigale" + } + } + } + }, + "CIRCUS_CLOWN_HORN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Circus clown horn" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Corne de clown" + } + } + } + }, + "CLARINET" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clarinet" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clarinette" + } + } + } + }, + "CLAV_FLY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kemence" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guitare" + } + } + } + }, + "CLAV_GUITAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cura" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cura" + } + } + } + }, + "CLOUD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cloud" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nuage" + } + } + } + }, + "COW_MOO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cow" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vache" + } + } + } + }, + "DISCUSSIONS_LIST_SELECTION_PLACEHOLDER_CELL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Select one or more discussions" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionnez une ou plusieurs discussions" + } + } + } + }, + "ELEPHANT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Elephant" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Éléphant" + } + } + } + }, + "ENOUGH_WITH_THE_TALKING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enough with the talking" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Assez parlé" + } + } + } + }, + "FIFTEEN_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "15 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "15 jours" + } + } + } + }, + "FIVE_MINUTE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "5 minutes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "5 minutes" + } + } + } + }, + "FIVE_SECONDS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "5 seconds" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "5 secondes" + } + } + } + }, + "FIVE_YEAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "5 years" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "5 ans" + } + } + } + }, + "FLUTE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Flute" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Flûte" + } + } + } + }, + "FRENZY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Frenzy" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Frénésie" + } + } + } + }, + "FROG" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Frog" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grenouille" + } + } + } + }, + "FUNNY_FANFARE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Funny fanfare" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Drôle de fanfare" + } + } + } + }, + "GLOCKENSPIEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Glockenspiel" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carillon" + } + } + } + }, + "GOAT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Goat" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chèvre" + } + } + } + }, + "HARP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Harp" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Harpe" + } + } + } + }, + "HEY_CHAMP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hey champ" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hé, champion !" + } + } + } + }, + "HORN_BOAT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fog horn" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Corne de brume" + } + } + } + }, + "HORN_BUS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bus Horn" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Klaxon de bus" + } + } + } + }, + "HORN_CAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Car Horn" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Klaxon automobile" + } + } + } + }, + "HORN_DIXIE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1916 car horn" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Klaxon 1916" + } + } + } + }, + "HORN_TAXI" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Taxi horn" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Klaxon de taxi" + } + } + } + }, + "HORN_TRAIN_1" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Train horn 1" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Train 1" + } + } + } + }, + "HORN_TRAIN_2" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Train horn 2" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Train 2" + } + } + } + }, + "HORSE_WHINNIES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Horse" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cheval" + } + } + } + }, + "KOTO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Koto" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Koto" + } + } + } + }, + "MODULAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modular" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modulaire" + } + } + } + }, + "NESTLING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nestling" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nid d'abeilles" + } + } + } + }, + "NICE_CUT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nice cut" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jolie coupe" + } + } + } + }, + "NINETY_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "90 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "90 jours" + } + } + } + }, + "NO_SOUNDS" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "None" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun" + } + } + } + }, + "OBOE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oboe" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hautbois" + } + } + } + }, + "OH_REALLY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oh really" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oh vraiment" + } + } + } + }, + "ONE_DAY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 day" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 jour" + } + } + } + }, + "ONE_HOUR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 hour" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 heure" + } + } + } + }, + "ONE_HUNDRED_AND_HEIGHTY_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "180 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "180 jours" + } + } + } + }, + "ONE_MINUTE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 minute" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 minute" + } + } + } + }, + "ONE_YEAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 year" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 an" + } + } + } + }, + "ORINGZ" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oring" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anneau" + } + } + } + }, + "PANTHERA" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Panthera" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Panthère" + } + } + } + }, + "PARANOID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paranoid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paranoïaque" + } + } + } + }, + "PIANO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Piano" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Piano" + } + } + } + }, + "PIPA" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pipa" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pipa" + } + } + } + }, + "POLITE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Polite" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Poli" + } + } + } + }, + "PUPPY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Puppy" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chiot" + } + } + } + }, + "SAXO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Saxo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Saxo" + } + } + } + }, + "SEVEN_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "7 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "7 jours" + } + } + } + }, + "SHEEP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sheep" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mouton" + } + } + } + }, + "SIX_HOUR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "6 hours" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "6 heures" + } + } + } + }, + "SONAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sonar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sonar" + } + } + } + }, + "SPRINGY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Springy" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ressort" + } + } + } + }, + "STRIKE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Strike" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Frappe" + } + } + } + }, + "STRINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Strings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cordes" + } + } + } + }, + "SYNTH_AIRSHIP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synth Airship" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synthé airship" + } + } + } + }, + "SYNTH_CHORDAL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synth Chordal" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synthé cordes" + } + } + } + }, + "SYNTH_COSMIC" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synth Cosmic" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synthé cosmique" + } + } + } + }, + "SYNTH_DROPLETS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synth Droplets" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synthé gouttelettes" + } + } + } + }, + "SYNTH_EMOTIVE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synth Emotive" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synthé émotif" + } + } + } + }, + "SYNTH_FM" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synth FM" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synthé FM" + } + } + } + }, + "SYNTH_LUSHARP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synth LushArp" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synthé luxuriant" + } + } + } + }, + "SYNTH_PECUSSIVE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synth Percussive" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synthé percussif" + } + } + } + }, + "SYNTH_QUANTIZER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synth Quantizer" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synthé quantizer" + } + } + } + }, + "SYSTEM_SOUND" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "System sound" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Son système" + } + } + } + }, + "TAP_TO_CANCEL" : { + "localizations" : { + "en" : { + "variations" : { + "device" : { + "mac" : { + "stringUnit" : { + "state" : "translated", + "value" : "Click to cancel" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap to cancel" + } + } + } + } + }, + "fr" : { + "variations" : { + "device" : { + "mac" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cliquez pour annuler" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Touchez pour annuler" + } + } + } + } + } + } + }, + "TEN_SECONDS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "10 seconds" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "10 secondes" + } + } + } + }, + "THIRTY_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 jours" + } + } + } + }, + "THIRTY_MINUTES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 minutes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 minutes" + } + } + } + }, + "THIRTY_SECONDS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 seconds" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 secondes" + } + } + } + }, + "THREE_YEAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 years" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 ans" + } + } + } + }, + "TIGER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tiger" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tigre" + } + } + } + }, + "TURKEY_GOBBLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Turkey" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dinde" + } + } + } + }, + "TURKEY_NOISES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Turkeys" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dindes" + } + } + } + }, + "TWELVE_HOURS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "12 hours" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "12 heures" + } + } + } + }, + "TWO_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "2 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "2 jours" + } + } + } + }, + "Unlimited" : { + "comment" : "Unlimited word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unlimited" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Illimité" + } + } + } + }, + "UNPHASED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unphased" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Déphasé" + } + } + } + }, + "UNSTRUNG" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unstrung" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Décordé" + } + } + } + }, + "WEIRD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weird" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bizarre" + } + } + } + }, + "WOODBLOCK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Woodblock" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Woodblock" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/Modules/OlvidUI/ObvUI/ObvUI/LocalizableClassForObvUIBundle.swift b/Modules/OlvidUI/ObvUI/ObvUI/LocalizableClassForObvUIBundle.swift new file mode 100644 index 00000000..e6abd813 --- /dev/null +++ b/Modules/OlvidUI/ObvUI/ObvUI/LocalizableClassForObvUIBundle.swift @@ -0,0 +1,44 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI + + +/// This is a dummy class, allowing to specify the appropriate module when declaring a localized string, so that the localized string key is looked up in the correct `Localizable.xcstrings` file. +final class LocalizableClassForObvUIBundle {} + + +func NSLocalizedString(_ key: String, comment: String) -> String { + return NSLocalizedString(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvUIBundle.self), comment: comment) +} + + +func NSLocalizedString(_ key: String) -> String { + return NSLocalizedString(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvUIBundle.self), comment: "Within ObvUI") +} + + +extension Text { + + init(_ key: LocalizedStringKey, comment: StaticString? = nil) { + self.init(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvUIBundle.self), comment: comment ?? "Within ObvUI") + } + +} diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Modules/DiscussionsSelectionViewController/DiscussionsSelectionViewController.swift b/Modules/OlvidUI/ObvUI/ObvUI/Modules/DiscussionsSelectionViewController/DiscussionsSelectionViewController.swift index d1a63411..bc398892 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Modules/DiscussionsSelectionViewController/DiscussionsSelectionViewController.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Modules/DiscussionsSelectionViewController/DiscussionsSelectionViewController.swift @@ -20,9 +20,9 @@ import UIKit import CoreData -import ObvEngine import ObvTypes import ObvUICoreData +import ObvDesignSystem public protocol DiscussionsSelectionViewControllerDelegate: AnyObject { diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/Cell/NewDiscussionsSelectionViewControllerCell.swift b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/Cell/NewDiscussionsSelectionViewControllerCell.swift index bd5dd9a2..73b1c8ac 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/Cell/NewDiscussionsSelectionViewControllerCell.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/Cell/NewDiscussionsSelectionViewControllerCell.swift @@ -20,6 +20,8 @@ import Foundation import SwiftUI import UIKit +import ObvDesignSystem + @available(iOS 16.0, *) private let kCircledInitialsViewSize = CircledInitialsView.Size.small diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/Cell/NewDiscussionsSelectionViewControllerCellViewModel.swift b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/Cell/NewDiscussionsSelectionViewControllerCellViewModel.swift index 91699694..a616c6cc 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/Cell/NewDiscussionsSelectionViewControllerCellViewModel.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/Cell/NewDiscussionsSelectionViewControllerCellViewModel.swift @@ -20,7 +20,10 @@ import Foundation import CoreData import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvDesignSystem +import ObvSettings + @available(iOS 16.0, *) extension NewDiscussionsSelectionViewController.Cell { diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsCell.swift b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsCell.swift index 4bc85776..9204fda3 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsCell.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsCell.swift @@ -23,7 +23,9 @@ import Foundation import ObvUICoreData import SwiftUI import UIKit -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvDesignSystem + @available(iOS 16.0, *) extension HorizontalListOfSelectedDiscussionsViewController { diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsCellViewModel.swift b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsCellViewModel.swift index 2e706f80..6b8409c7 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsCellViewModel.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsCellViewModel.swift @@ -16,14 +16,16 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import Foundation import Combine import CoreData import ObvUICoreData import os.log -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvDesignSystem +import ObvSettings + @available(iOS 16, *) extension HorizontalListOfSelectedDiscussionsViewController.Cell { @@ -60,7 +62,7 @@ extension HorizontalListOfSelectedDiscussionsViewController.Cell.ViewModel { case .groupV2(withGroup: let group): if let group { - subtitle = String.localizedStringWithFormat(NSLocalizedString("WITH_N_PARTICIPANTS", comment: ""), group.otherMembers.count) + subtitle = String(format: "WITH_N_PARTICIPANTS", group.otherMembers.count) } else { subtitle = nil } @@ -68,7 +70,7 @@ extension HorizontalListOfSelectedDiscussionsViewController.Cell.ViewModel { case .groupV1(withContactGroup: let group): if let group { - subtitle = String.localizedStringWithFormat(NSLocalizedString("WITH_N_PARTICIPANTS", comment: ""), group.contactIdentities.count) + subtitle = String(format: "WITH_N_PARTICIPANTS", group.contactIdentities.count) } else { subtitle = nil } diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsPlaceholderCell.swift b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsPlaceholderCell.swift index 87daaac5..d038865d 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsPlaceholderCell.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Modules/NewDiscussionsSelectionViewController/HorizontalListOfSelectedDiscussionsViewController/Cell/HorizontalListOfSelectedDiscussionsPlaceholderCell.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,6 +21,7 @@ import Foundation import SwiftUI import UIKit +import ObvDesignSystem @available(iOS 16.0, *) @@ -35,7 +36,7 @@ extension HorizontalListOfSelectedDiscussionsViewController { override func updateConfiguration(using state: UICellConfigurationState) { contentConfiguration = UIHostingConfiguration { HStack(alignment: .center) { - Text(NSLocalizedString("DISCUSSIONS_LIST_SELECTION_PLACEHOLDER_CELL", bundle: Bundle(for: Self.self), comment: "")) + Text("DISCUSSIONS_LIST_SELECTION_PLACEHOLDER_CELL") .foregroundColor(Color(AppTheme.shared.colorScheme.label)) .font(.headline) } diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Utils/DurationOption+Utils.swift b/Modules/OlvidUI/ObvUI/ObvUI/Utils/DurationOption+Utils.swift index 6f3c2109..04fa0e77 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Utils/DurationOption+Utils.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Utils/DurationOption+Utils.swift @@ -19,6 +19,7 @@ import Foundation import ObvUICoreData +import ObvSettings extension DurationOption: CustomStringConvertible { diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Utils/DurationOptionAlt+Utils.swift b/Modules/OlvidUI/ObvUI/ObvUI/Utils/DurationOptionAlt+Utils.swift index 177a92da..d10fc79b 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Utils/DurationOptionAlt+Utils.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Utils/DurationOptionAlt+Utils.swift @@ -19,6 +19,7 @@ import Foundation import ObvUICoreData +import ObvSettings extension DurationOptionAlt: CustomStringConvertible { diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Utils/NewComposeMessageViewAction+Utils.swift b/Modules/OlvidUI/ObvUI/ObvUI/Utils/NewComposeMessageViewAction+Utils.swift index a6840e45..6413601b 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Utils/NewComposeMessageViewAction+Utils.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Utils/NewComposeMessageViewAction+Utils.swift @@ -20,6 +20,8 @@ import Foundation import ObvUICoreData import UI_SystemIcon +import ObvSettings + public extension NewComposeMessageViewAction { diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Utils/NotificationSound+Utils.swift b/Modules/OlvidUI/ObvUI/ObvUI/Utils/NotificationSound+Utils.swift index e6856166..dba3b326 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Utils/NotificationSound+Utils.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Utils/NotificationSound+Utils.swift @@ -19,6 +19,7 @@ import Foundation import ObvUICoreData +import ObvSettings extension NotificationSound { @@ -28,105 +29,97 @@ extension NotificationSound { case .none: return CommonString.Title.noNotificationSounds case .system: return CommonString.Title.systemSound - case .busy: return "BUSY".localizedString - case .chime: return "CHIME".localizedString - case .cinemaBringTheDrama: return "BRING_THE_DRAMA".localizedString - case .frenzy: return "FRENZY".localizedString - case .hornBoat: return "HORN_BOAT".localizedString - case .hornBus: return "HORN_BUS".localizedString - case .hornCar: return "HORN_CAR".localizedString - case .hornDixie: return "HORN_DIXIE".localizedString - case .hornTaxi: return "HORN_TAXI".localizedString - case .hornTrain1: return "HORN_TRAIN_1".localizedString - case .hornTrain2: return "HORN_TRAIN_2".localizedString - case .paranoid: return "PARANOID".localizedString - case .weird: return "WEIRD".localizedString + case .busy: return NSLocalizedString("BUSY", comment: "") + case .chime: return NSLocalizedString("CHIME", comment: "") + case .cinemaBringTheDrama: return NSLocalizedString("BRING_THE_DRAMA", comment: "") + case .frenzy: return NSLocalizedString("FRENZY", comment: "") + case .hornBoat: return NSLocalizedString("HORN_BOAT", comment: "") + case .hornBus: return NSLocalizedString("HORN_BUS", comment: "") + case .hornCar: return NSLocalizedString("HORN_CAR", comment: "") + case .hornDixie: return NSLocalizedString("HORN_DIXIE", comment: "") + case .hornTaxi: return NSLocalizedString("HORN_TAXI", comment: "") + case .hornTrain1: return NSLocalizedString("HORN_TRAIN_1", comment: "") + case .hornTrain2: return NSLocalizedString("HORN_TRAIN_2", comment: "") + case .paranoid: return NSLocalizedString("PARANOID", comment: "") + case .weird: return NSLocalizedString("WEIRD", comment: "") - case .birdCardinal: return "BIRD_CARDINAL".localizedString - case .birdCoqui: return "BIRD_COQUI".localizedString - case .birdCrow: return "BIRD_CROW".localizedString - case .birdCuckoo: return "BIRD_CUCKOO".localizedString - case .birdDuckQuack: return "BIRD_DUCK_QUACK".localizedString - case .birdDuckQuacks: return "BIRD_DUCK_QUACKS".localizedString - case .birdEagle: return "BIRD_EAGLE".localizedString - case .birdInForest: return "BIRD_IN_FOREST".localizedString - case .birdMagpie: return "BIRD_MAGPIE".localizedString - case .birdOwlHorned: return "BIRD_OWL_HORNED".localizedString - case .birdOwlTawny: return "BIRD_OWL_TAWNY".localizedString - case .birdTweet: return "BIRD_TWEET".localizedString - case .birdWarning: return "BIRD_WARNING".localizedString - case .chickenRooster: return "CHICKEN_ROOSTER".localizedString - case .chickenRoster: return "CHICKEN_ROSTER".localizedString - case .chicken: return "CHICKEN".localizedString - case .cicada: return "CICADA".localizedString - case .cowMoo: return "COW_MOO".localizedString - case .elephant: return "ELEPHANT".localizedString - case .felinePanthera: return "PANTHERA".localizedString - case .felineTiger: return "TIGER".localizedString - case .frog: return "FROG".localizedString - case .goat: return "GOAT".localizedString - case .horseWhinnies: return "HORSE_WHINNIES".localizedString - case .puppy: return "PUPPY".localizedString - case .sheep: return "SHEEP".localizedString - case .turkeyGobble: return "TURKEY_GOBBLE".localizedString - case .turkeyNoises: return "TURKEY_NOISES".localizedString + case .birdCardinal: return NSLocalizedString("BIRD_CARDINAL", comment: "") + case .birdCoqui: return NSLocalizedString("BIRD_COQUI", comment: "") + case .birdCrow: return NSLocalizedString("BIRD_CROW", comment: "") + case .birdCuckoo: return NSLocalizedString("BIRD_CUCKOO", comment: "") + case .birdDuckQuack: return NSLocalizedString("BIRD_DUCK_QUACK", comment: "") + case .birdDuckQuacks: return NSLocalizedString("BIRD_DUCK_QUACKS", comment: "") + case .birdEagle: return NSLocalizedString("BIRD_EAGLE", comment: "") + case .birdInForest: return NSLocalizedString("BIRD_IN_FOREST", comment: "") + case .birdMagpie: return NSLocalizedString("BIRD_MAGPIE", comment: "") + case .birdOwlHorned: return NSLocalizedString("BIRD_OWL_HORNED", comment: "") + case .birdOwlTawny: return NSLocalizedString("BIRD_OWL_TAWNY", comment: "") + case .birdTweet: return NSLocalizedString("BIRD_TWEET", comment: "") + case .birdWarning: return NSLocalizedString("BIRD_WARNING", comment: "") + case .chickenRooster: return NSLocalizedString("CHICKEN_ROOSTER", comment: "") + case .chickenRoster: return NSLocalizedString("CHICKEN_ROSTER", comment: "") + case .chicken: return NSLocalizedString("CHICKEN", comment: "") + case .cicada: return NSLocalizedString("CICADA", comment: "") + case .cowMoo: return NSLocalizedString("COW_MOO", comment: "") + case .elephant: return NSLocalizedString("ELEPHANT", comment: "") + case .felinePanthera: return NSLocalizedString("PANTHERA", comment: "") + case .felineTiger: return NSLocalizedString("TIGER", comment: "") + case .frog: return NSLocalizedString("FROG", comment: "") + case .goat: return NSLocalizedString("GOAT", comment: "") + case .horseWhinnies: return NSLocalizedString("HORSE_WHINNIES", comment: "") + case .puppy: return NSLocalizedString("PUPPY", comment: "") + case .sheep: return NSLocalizedString("SHEEP", comment: "") + case .turkeyGobble: return NSLocalizedString("TURKEY_GOBBLE", comment: "") + case .turkeyNoises: return NSLocalizedString("TURKEY_NOISES", comment: "") - case .bell: return "BELL".localizedString - case .block: return "BLOCK".localizedString - case .calm: return "CALM".localizedString - case .cloud: return "CLOUD".localizedString - case .heyChamp: return "HEY_CHAMP".localizedString - case .kotoNeutral: return "KOTO".localizedString - case .modular: return "MODULAR".localizedString - case .oringz452: return "ORINGZ".localizedString - case .polite: return "POLITE".localizedString - case .sonar: return "SONAR".localizedString - case .strike: return "STRIKE".localizedString - case .unphased: return "UNPHASED".localizedString - case .unstrung: return "UNSTRUNG".localizedString - case .woodblock: return "WOODBLOCK".localizedString + case .bell: return NSLocalizedString("BELL", comment: "") + case .block: return NSLocalizedString("BLOCK", comment: "") + case .calm: return NSLocalizedString("CALM", comment: "") + case .cloud: return NSLocalizedString("CLOUD", comment: "") + case .heyChamp: return NSLocalizedString("HEY_CHAMP", comment: "") + case .kotoNeutral: return NSLocalizedString("KOTO", comment: "") + case .modular: return NSLocalizedString("MODULAR", comment: "") + case .oringz452: return NSLocalizedString("ORINGZ", comment: "") + case .polite: return NSLocalizedString("POLITE", comment: "") + case .sonar: return NSLocalizedString("SONAR", comment: "") + case .strike: return NSLocalizedString("STRIKE", comment: "") + case .unphased: return NSLocalizedString("UNPHASED", comment: "") + case .unstrung: return NSLocalizedString("UNSTRUNG", comment: "") + case .woodblock: return NSLocalizedString("WOODBLOCK", comment: "") - case .areYouKidding: return "ARE_YOU_KIDDING".localizedString - case .circusClownHorn: return "CIRCUS_CLOWN_HORN".localizedString - case .enoughWithTheRalking: return "ENOUGH_WITH_THE_TALKING".localizedString - case .funnyFanfare: return "FUNNY_FANFARE".localizedString - case .nestling: return "NESTLING".localizedString - case .niceCut: return "NICE_CUT".localizedString - case .ohReally: return "OH_REALLY".localizedString - case .springy: return "SPRINGY".localizedString + case .areYouKidding: return NSLocalizedString("ARE_YOU_KIDDING", comment: "") + case .circusClownHorn: return NSLocalizedString("CIRCUS_CLOWN_HORN", comment: "") + case .enoughWithTheRalking: return NSLocalizedString("ENOUGH_WITH_THE_TALKING", comment: "") + case .funnyFanfare: return NSLocalizedString("FUNNY_FANFARE", comment: "") + case .nestling: return NSLocalizedString("NESTLING", comment: "") + case .niceCut: return NSLocalizedString("NICE_CUT", comment: "") + case .ohReally: return NSLocalizedString("OH_REALLY", comment: "") + case .springy: return NSLocalizedString("SPRINGY", comment: "") - case .bassoon: return "BASSOON".localizedString - case .brass: return "BRASS".localizedString - case .clarinet: return "CLARINET".localizedString - case .clav_fly: return "CLAV_FLY".localizedString - case .clav_guitar: return "CLAV_GUITAR".localizedString - case .flute: return "FLUTE".localizedString - case .glockenspiel: return "GLOCKENSPIEL".localizedString - case .harp: return "HARP".localizedString - case .koto: return "KOTO".localizedString - case .oboe: return "OBOE".localizedString - case .piano: return "PIANO".localizedString - case .pipa: return "PIPA".localizedString - case .saxo: return "SAXO".localizedString - case .strings: return "STRINGS".localizedString - case .synth_airship: return "SYNTH_AIRSHIP".localizedString - case .synth_chordal: return "SYNTH_CHORDAL".localizedString - case .synth_cosmic: return "SYNTH_COSMIC".localizedString - case .synth_droplets: return "SYNTH_DROPLETS".localizedString - case .synth_emotive: return "SYNTH_EMOTIVE".localizedString - case .synth_fm: return "SYNTH_FM".localizedString - case .synth_lush_arp: return "SYNTH_LUSHARP".localizedString - case .synth_pecussive: return "SYNTH_PECUSSIVE".localizedString - case .synth_quantizer: return "SYNTH_QUANTIZER".localizedString + case .bassoon: return NSLocalizedString("BASSOON", comment: "") + case .brass: return NSLocalizedString("BRASS", comment: "") + case .clarinet: return NSLocalizedString("CLARINET", comment: "") + case .clav_fly: return NSLocalizedString("CLAV_FLY", comment: "") + case .clav_guitar: return NSLocalizedString("CLAV_GUITAR", comment: "") + case .flute: return NSLocalizedString("FLUTE", comment: "") + case .glockenspiel: return NSLocalizedString("GLOCKENSPIEL", comment: "") + case .harp: return NSLocalizedString("HARP", comment: "") + case .koto: return NSLocalizedString("KOTO", comment: "") + case .oboe: return NSLocalizedString("OBOE", comment: "") + case .piano: return NSLocalizedString("PIANO", comment: "") + case .pipa: return NSLocalizedString("PIPA", comment: "") + case .saxo: return NSLocalizedString("SAXO", comment: "") + case .strings: return NSLocalizedString("STRINGS", comment: "") + case .synth_airship: return NSLocalizedString("SYNTH_AIRSHIP", comment: "") + case .synth_chordal: return NSLocalizedString("SYNTH_CHORDAL", comment: "") + case .synth_cosmic: return NSLocalizedString("SYNTH_COSMIC", comment: "") + case .synth_droplets: return NSLocalizedString("SYNTH_DROPLETS", comment: "") + case .synth_emotive: return NSLocalizedString("SYNTH_EMOTIVE", comment: "") + case .synth_fm: return NSLocalizedString("SYNTH_FM", comment: "") + case .synth_lush_arp: return NSLocalizedString("SYNTH_LUSHARP", comment: "") + case .synth_pecussive: return NSLocalizedString("SYNTH_PECUSSIVE", comment: "") + case .synth_quantizer: return NSLocalizedString("SYNTH_QUANTIZER", comment: "") } } - -} - - -fileprivate extension String { - var localizedString: String { - NSLocalizedString(self, comment: "") - } } diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Utils/ObvCryptoId+Colors.swift b/Modules/OlvidUI/ObvUI/ObvUI/Utils/ObvCryptoId+Colors.swift index 478d4cd1..d4f3e83e 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Utils/ObvCryptoId+Colors.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Utils/ObvCryptoId+Colors.swift @@ -20,6 +20,9 @@ import Foundation import ObvTypes import ObvUICoreData +import ObvDesignSystem +import ObvSettings + public extension ObvCryptoId { diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Utils/ObvUTIUtils+Extensions.swift b/Modules/OlvidUI/ObvUI/ObvUI/Utils/ObvUTIUtils+Extensions.swift index 09fa9c84..7e226b2b 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Utils/ObvUTIUtils+Extensions.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Utils/ObvUTIUtils+Extensions.swift @@ -22,45 +22,41 @@ import ObvUICoreData import UniformTypeIdentifiers import UI_SystemIcon -extension ObvUTIUtils { +extension UTType { - @available(iOS 14.0, *) - public static func getIcon(forUTI uti: String) -> SystemIcon { - if let utType = UTType(uti) { - if utType.conforms(to: .image) { - return .photoOnRectangleAngled - } else if utType.conforms(to: .pdf) { - return .docRichtext - } else if utType.conforms(to: .audio) { - return .musicNote - } else if utType.conforms(to: .vCard) { - return .personTextRectangle - } else if utType.conforms(to: .calendarEvent) { - return .calendar - } else if utType.conforms(to: .font) { - return .textformat - } else if utType.conforms(to: .spreadsheet) { - return .rectangleSplit3x3 - } else if utType.conforms(to: .presentation) { - return .display - } else if utType.conforms(to: .bookmark) { - return .bookmark - } else if utType.conforms(to: .archive) { - return .rectangleCompressVertical - } else if utType.conforms(to: .webArchive) { - return .archiveboxFill - } else if utType.conforms(to: .xml) || utType.conforms(to: .html) { - return .chevronLeftForwardslashChevronRight - } else if utType.conforms(to: .executable) { - return .docBadgeGearshape - } else if ObvUTIUtils.uti(uti, conformsTo: "org.openxmlformats.wordprocessingml.document" as CFString) || ObvUTIUtils.uti(uti, conformsTo: "com.microsoft.word.doc" as CFString) { - // Word (docx) document - return .docFill - } else { - return .paperclip - } + public var systemIcon: SystemIcon { + if self.conforms(to: .image) { + return .photoOnRectangleAngled + } else if self.conforms(to: .pdf) { + return .docRichtext + } else if self.conforms(to: .audio) { + return .musicNote + } else if self.conforms(to: .vCard) { + return .personTextRectangle + } else if self.conforms(to: .calendarEvent) { + return .calendar + } else if self.conforms(to: .font) { + return .textformat + } else if self.conforms(to: .spreadsheet) { + return .rectangleSplit3x3 + } else if self.conforms(to: .presentation) { + return .display + } else if self.conforms(to: .bookmark) { + return .bookmark + } else if self.conforms(to: .archive) { + return .rectangleCompressVertical + } else if self.conforms(to: .webArchive) { + return .archiveboxFill + } else if self.conforms(to: .xml) || self.conforms(to: .html) { + return .chevronLeftForwardslashChevronRight + } else if self.conforms(to: .executable) { + return .docBadgeGearshape + } else if self.conforms(to: UTType.OpenXML.docx) || self.conforms(to: .doc) { + // Word (docx or doc) document + return .docFill } else { return .paperclip } } + } diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Utils/PersistedDiscussion+Utils.swift b/Modules/OlvidUI/ObvUI/ObvUI/Utils/PersistedDiscussion+Utils.swift index e57e4043..d48234bc 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Utils/PersistedDiscussion+Utils.swift +++ b/Modules/OlvidUI/ObvUI/ObvUI/Utils/PersistedDiscussion+Utils.swift @@ -21,6 +21,7 @@ import CoreData import ObvUICoreData import os.log import UIKit +import ObvDesignSystem extension PersistedDiscussion { diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Enums/RequesterOfMessageDeletion.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Enums/RequesterOfMessageDeletion.swift deleted file mode 100644 index a8a76404..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Enums/RequesterOfMessageDeletion.swift +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import ObvTypes - - -public enum RequesterOfMessageDeletion { - case ownedIdentity(ownedCryptoId: ObvCryptoId, deletionType: DeletionType) - case contact(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId, messageUploadTimestampFromServer: Date) -} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettingsBackup.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Extensions/GlobalSettingsBackupItem+Utils.swift similarity index 89% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettingsBackup.swift rename to Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Extensions/GlobalSettingsBackupItem+Utils.swift index 79dc1aae..63c068cf 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettingsBackup.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Extensions/GlobalSettingsBackupItem+Utils.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -16,9 +16,10 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import Foundation +import ObvSettings + public extension GlobalSettingsBackupItem { @@ -27,7 +28,7 @@ public extension GlobalSettingsBackupItem { // Contacts and groups if let value = self.autoAcceptGroupInviteFrom { - ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom = value + ObvMessengerSettings.ContactsAndGroups.setAutoAcceptGroupInviteFrom(to: value, changeMadeFromAnotherOwnedDevice: false, ownedCryptoId: nil) } // Downloads @@ -44,14 +45,11 @@ public extension GlobalSettingsBackupItem { if let value = self.contactsSortOrder { ObvMessengerSettings.Interface.contactsSortOrder = value } - if let value = self.useOldDiscussionInterface { - ObvMessengerSettings.Interface.useOldDiscussionInterface = value - } // Discussions if let value = self.sendReadReceipt { - ObvMessengerSettings.Discussions.doSendReadReceipt = value + ObvMessengerSettings.Discussions.setDoSendReadReceipt(to: value, changeMadeFromAnotherOwnedDevice: false, ownedCryptoId: nil) } if let value = self.doFetchContentRichURLsMetadata { ObvMessengerSettings.Discussions.doFetchContentRichURLsMetadata = value @@ -100,12 +98,6 @@ public extension GlobalSettingsBackupItem { ObvMessengerSettings.Privacy.timeIntervalForBackgroundHiddenProfileClosePolicy = value } - // VoIP - - if let value = self.isCallKitEnabled { - ObvMessengerSettings.VoIP.isCallKitEnabled = value - } - // Advanced if let value = self.allowCustomKeyboards { diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localizable.xcstrings b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localizable.xcstrings new file mode 100644 index 00000000..4b5061d6 --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localizable.xcstrings @@ -0,0 +1,1459 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "%@_ACCEPTED_TO_JOIN_THIS_GROUP" : { + "comment" : "System message displayed within a group discussion", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ has joined this group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ a rejoint ce groupe" + } + } + } + }, + "%@_ACCEPTED_TO_JOIN_THIS_GROUP_AT_%@" : { + "comment" : "System message displayed within a group discussion", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ has joined this group - %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ a rejoint ce groupe - %@" + } + } + } + }, + "%@_LEFT_THIS_GROUP" : { + "comment" : "System message displayed within a group discussion", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ left this group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ a quitté ce groupe" + } + } + } + }, + "%@_LEFT_THIS_GROUP_AT_%@" : { + "comment" : "System message displayed within a group discussion", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ left this group - %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ a quitté ce groupe - %@" + } + } + } + }, + "A (now deleted) contact" : { + "comment" : "Can serve as a name in the sentence \\\"%@ accepted to join this group\\\"", + "extractionState" : "migrated", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deleted contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contact supprimé" + } + } + } + }, + "ACCEPTED_INCOMING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Incoming call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel entrant" + } + } + } + }, + "ACCEPTED_OUTGOING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Outgoing call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel sortant" + } + } + } + }, + "AND_%@_OTHERS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "and %@ others" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "et %@ autres" + } + } + } + }, + "AND_ONE_OTHER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "and one other" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "et un autre" + } + } + } + }, + "ANSWERED_ON_OTHER_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Call accepted on another device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel accepté depuis un autre appareil" + } + } + } + }, + "ANY_INCOMING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Incoming call..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel entrant..." + } + } + } + }, + "ANY_OUTGOING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Outgoing call..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel sortant..." + } + } + } + }, + "BUSY_OUTGOING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Busy outgoing call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel sortant occupé" + } + } + } + }, + "Choose" : { + "comment" : "Choose word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir" + } + } + } + }, + "Close" : { + "comment" : "Close word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Close" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fermer" + } + } + } + }, + "CONTACT_%@_IS_ONE_TO_ONE_AGAIN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ is part of your contacts again, you can continue your discussion where you left off 🤗." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ fait à nouveau partie de vos contacts, vous pouvez reprendre la discussion là où vous l'aviez laissée 🤗." + } + } + } + }, + "CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ took a screenshot of a sensitive message." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ a fait une capture d'un message sensible." + } + } + } + }, + "CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_WHEN_CONTACT_IS_UNKNOWN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A participant took a screenshot of a sensitive message." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un particpant a fait une capture d'un message sensible." + } + } + } + }, + "CONTACT_REVOKED_BY_COMPANY_IDENTITY_PROVIDER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contact revoked by your company's identity provider" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contact revoqué par le fournisseur d'identités de votre société" + } + } + } + }, + "count attachments" : { + "comment" : "Number of attachments in message", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "One attachment" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u attachments" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No attachment" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une pièce jointe" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u pièces jointes" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune pièce jointe" + } + } + } + } + } + } + }, + "count new messages" : { + "comment" : "Number of new messages", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 new message" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u new messages" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No new message" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 nouveau message" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u nouveaux messages" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun nouveau message" + } + } + } + } + } + } + }, + "Default" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Default" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Par défaut" + } + } + } + }, + "DISCUSSION_SHARED_SETTINGS_WERE_UPDATED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discussion shared settings were updated" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les paramètres partagés de la discussion ont été mis à jour" + } + } + } + }, + "Edited" : { + "comment" : "Edited word, capitalized", + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifié" + } + } + } + }, + "EIGHT_HOURS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "8 hours" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "8 heures" + } + } + } + }, + "EPHEMERAL_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ephemeral message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message éphémère" + } + } + } + }, + "FIFTEEN_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "15 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "15 jours" + } + } + } + }, + "FIVE_YEAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "5 years" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "5 ans" + } + } + } + }, + "Forward" : { + "comment" : "Forward word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Forward" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Transférer" + } + } + } + }, + "FROM_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "from %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "de %@" + } + } + } + }, + "GROUP_TITLE_WHEN_NO_SPECIFIC_TITLE_IS_GIVEN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group with no name 😅" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groupe sans nom 😅" + } + } + } + }, + "INDEFINITELY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "indefinitely" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Indéfiniment" + } + } + } + }, + "LAST_MESSAGE_WAS_REMOTELY_WIPED" : { + "comment" : "Subtitle displayed within a discussion cell when the message to preview was remotely wiped", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Last message was remotely wiped" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dernier message éliminé à distance" + } + } + } + }, + "Latest Discussions" : { + "comment" : "Small string used in tab controller to sort by latest discussions", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Latest" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Récentes" + } + } + } + }, + "Mark all as read" : { + "comment" : "Action title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mark all as read" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tout marquer comme lu" + } + } + } + }, + "MEMBERS_OF_GROUP_V2_WERE_UPDATED_SYSTEM_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group members have been updated. Tap to learn more." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les membres du groupe ont été mis à jour. Touchez pour en savoir plus." + } + } + } + }, + "MESSAGE_WAS_WIPED" : { + "comment" : "Subtitle displayed within a discussion cell when the message to preview is a wiped ephemeral message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Last message was wiped 🧹" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dernier message expiré 🧹" + } + } + } + }, + "Messages posted in this discussion are protected using end-to-end encryption. Their confidentiality, their authenticity, and the identity of their sender are guaranteed through cryptography." : { + "comment" : "System message displayed at the top of each conversation.", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "🔒 Messages posted in this discussion are protected using end-to-end encryption. Their confidentiality, their authenticity, and the identity of their sender are guaranteed through cryptography." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "🔒 Les messages postés dans cette discussion sont protégés par du chiffrement de bout-en-bout. Leur confidentialité, leur authenticité et l'identité de leur expéditeur sont garanties grâce à la cryptographie." + } + } + } + }, + "MISSED_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Missed Call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel manqué" + } + } + } + }, + "MISSED_CALL_FILTERED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Missed call while you were in \"Focus\" mode." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel manqué alors que vous étiez en mode « Concentration »." + } + } + } + }, + "NINETY_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "90 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "90 jours" + } + } + } + }, + "No message yet." : { + "comment" : "Subtitle displayed within a discussion cell when there is no message preview to display", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No message yet." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun message pour le moment." + } + } + } + }, + "NOT_PART_OF_THE_GROUP_ANYMORE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are not part of this group anymore, either because you left it, because an administrator removed you, or because the group was deleted 🥲." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous ne faites plus partie de ce groupe, parce que vous l'avez quitté, parce qu'un administrateur vous a retiré du groupe, ou tout simplement parce que le groupe a été supprimé 🥲." + } + } + } + }, + "ONE_DAY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 day" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 jour" + } + } + } + }, + "ONE_HOUR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 hour" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 heure" + } + } + } + }, + "ONE_HUNDRED_AND_HEIGHTY_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "180 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "180 jours" + } + } + } + }, + "ONE_YEAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 year" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 an" + } + } + } + }, + "Read" : { + "comment" : "Read word, capitalized", + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lu" + } + } + } + }, + "REJECTED_INCOMING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rejected incoming call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel entrant rejeté" + } + } + } + }, + "REJECTED_INCOMING_CALL_AS_RECEIVE_CALL_SETTINGS_IS_FALSE" : { + "localizations" : { + "en" : { + "variations" : { + "device" : { + "mac" : { + "stringUnit" : { + "state" : "translated", + "value" : "An incoming secure call was automatically rejected as you chose not to receive calls on this device. Click this message to show the setting." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "An incoming secure call was automatically rejected as you chose not to receive calls on this device. Tap this message to show the setting." + } + } + } + } + }, + "fr" : { + "variations" : { + "device" : { + "mac" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un appel entrant a été automatiquement refusé puisque vous avez choisi de ne pas recevoir d'appel sur cet appareil. Cliquez ce message pour afficher le paramètre." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un appel entrant a été automatiquement refusé puisque vous avez choisi de ne pas recevoir d'appel sur cet appareil. Touchez cette notification pour afficher le paramètre." + } + } + } + } + } + } + }, + "REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_DENIED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The incoming call was rejected because Olvid is not allowed to access the Microphone. To never miss a call again, please go to Settings and grant Olvid access to the microphone." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'appel entrant n'a pas abouti car Olvid n'a pas l'autorisation d'accéder au micro. Pour ne plus rater d'appel, allez dans les Réglages et autorisez l'accès au micro pour Olvid." + } + } + } + }, + "REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_GRANTED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The incoming call was rejected because Olvid was not allowed to access the Microphone. Fortunately, since then, this autorisation was granted. You won't miss a call again 🥳!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'appel entrant n'a pas abouti car Olvid n'avait pas l'autorisation d'accéder au micro. Fort heureusement, l'autorisation a été accordée. Vous ne raterez plus aucun appel 🥳 !" + } + } + } + }, + "REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_UNDETERMINED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The incoming call was rejected because Olvid is not allowed to access the microphone. Please tap on this message to allow Olvid to access the Microphone." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'appel entrant n'a pas abouti car Olvid n'a pas l'autorisation d'accéder au micro. Cliquez sur ce message pour autoriser l'accès au micro." + } + } + } + }, + "REJECTED_ON_OTHER_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Call rejected on another device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel rejeté depuis un autre appareil" + } + } + } + }, + "REJECTED_OUTGOING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your contact is not available" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre correspondant est indisponible" + } + } + } + }, + "REJOINED_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are again part of this group ✌️." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous faites à nouveau partie du groupe ✌️" + } + } + } + }, + "Remotely wiped" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remotely wiped" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Éliminé à distance" + } + } + } + }, + "SEVEN_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "7 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "7 jours" + } + } + } + }, + "SIX_HOUR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "6 hours" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "6 heures" + } + } + } + }, + "THIRTY_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "30 jours" + } + } + } + }, + "This contact was deleted from your contacts, either because you did or because this contact deleted you." : { + "comment" : "System message displayed within a group discussion", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This contact was deleted from your Olvid contacts, either because you did or because this contact deleted you from their own contacts." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce contact a été supprimé de vos contacts Olvid, soit par vous-même, soit parce que ce contact vous a supprimé de ses propres contacts." + } + } + } + }, + "This discussion was remotely wiped by %@" : { + "comment" : "System message displayed within a group discussion", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This discussion was remotely wiped by %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette discussion a été effacée à distance par %@" + } + } + } + }, + "This discussion was remotely wiped by %@ on %@" : { + "comment" : "System message displayed within a group discussion", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This discussion was remotely wiped by %@ on %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette discussion a été effacée à distance par %@ le %@" + } + } + } + }, + "THREE_YEAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "3 years" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "3 ans" + } + } + } + }, + "TWELVE_HOURS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "12 hours" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "12 heures" + } + } + } + }, + "TWO_DAYS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "2 days" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "2 jours" + } + } + } + }, + "UNANSWERED_OUTGOING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unanswered outgoing call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel sortant sans réponse" + } + } + } + }, + "UNCOMPLETED_OUTGOING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uncompleted outgoing call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel sortant non abouti" + } + } + } + }, + "UNKNOWN_USER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unknown user" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utilisateur inconnu" + } + } + } + }, + "Unlimited" : { + "comment" : "Unlimited word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unlimited" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Illimité" + } + } + } + }, + "UNREAD_EPHEMERAL_MESSAGE" : { + "comment" : "Subtitle displayed within a discussion cell when the message to preview is an unread ephemeral message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unread ephemeral message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message éphémère non lu" + } + } + } + }, + "Wiped" : { + "comment" : "Wiped word, capitalized", + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Expiré" + } + } + } + }, + "WITH_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "with %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "avec %@" + } + } + } + }, + "WITH_N_PARTICIPANTS" : { + "extractionState" : "migrated", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "with one participant" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "with %u participants" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "without any participant" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "avec un participant" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "avec %u participants" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "sans aucun participant" + } + } + } + } + } + } + }, + "You" : { + "comment" : "You word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous" + } + } + } + }, + "YOU_ARE_NO_LONGER_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are no longer a group administrator." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous n'êtes plus administrateur de ce groupe." + } + } + } + }, + "YOU_ARE_NOW_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are now a group administrator 😎." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous êtes maintenant un administrateur de ce groupe 😎." + } + } + } + }, + "YOU_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You took a screenshot of a sensitive message, other participants have been notified." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez fait une capture d'un message sensible, les participants de cette discussion ont été notifiés." + } + } + } + }, + "YOU_INTRODUCED_%@_TO_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You introduced %@ to %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez présenté %@ à %@." + } + } + } + }, + "YOU_INTRODUCED_%@_TO_ANOTHER_CONTACT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You introduced %@ to another contact." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez présenté %@ à un autre contact." + } + } + } + }, + "YOU_INTRODUCED_THIS_CONTACT_TO_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You introduced this contact to %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez présenté ce contact à %@." + } + } + } + }, + "YOU_INTRODUCED_THIS_CONTACT_TO_ANOTHER_ONE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You introduced this contact to another one." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez présenté ce contact à un autre." + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/LocalizableClassForObvUICoreDataBundle.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/LocalizableClassForObvUICoreDataBundle.swift new file mode 100644 index 00000000..2ea96ae2 --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/LocalizableClassForObvUICoreDataBundle.swift @@ -0,0 +1,34 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +/// This is a dummy class, allowing to specify the appropriate module when declaring a localized string, so that the localized string key is looked up in the correct `Localizable.xcstrings` file. +final class LocalizableClassForObvUICoreDataBundle {} + + +func NSLocalizedString(_ key: String, comment: String) -> String { + return NSLocalizedString(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvUICoreDataBundle.self), comment: comment) +} + + +func NSLocalizedString(_ key: String) -> String { + return NSLocalizedString(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvUICoreDataBundle.self), comment: "Within ObvUICoreData") +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localization/CommonString.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localization/CommonString.swift index 8b8c163a..b4691692 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localization/CommonString.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localization/CommonString.swift @@ -21,17 +21,21 @@ import Foundation public struct CommonString { + private static let bundle = Bundle(for: LocalizableClassForObvUICoreDataBundle.self) + public struct Word { - public static let Choose = NSLocalizedString("Choose", comment: "Choose word, capitalized") - public static let Edited = NSLocalizedString("Edited", comment: "Edited word, capitalized") - public static let Forward = NSLocalizedString("Forward", comment: "Forward word, capitalized") - public static let Read = NSLocalizedString("Read", comment: "Read word, capitalized") - public static let Wiped = NSLocalizedString("Wiped", comment: "Wiped word, capitalized") + public static let Choose = NSLocalizedString("Choose", bundle: CommonString.bundle, comment: "Choose word, capitalized") + public static let Edited = NSLocalizedString("Edited", bundle: CommonString.bundle, comment: "Edited word, capitalized") + public static let Forward = NSLocalizedString("Forward", bundle: CommonString.bundle, comment: "Forward word, capitalized") + public static let Read = NSLocalizedString("Read", bundle: CommonString.bundle, comment: "Read word, capitalized") + public static let Wiped = NSLocalizedString("Wiped", bundle: CommonString.bundle, comment: "Wiped word, capitalized") + public static let You = NSLocalizedString("You", bundle: CommonString.bundle, comment: "You word, capitalized") + public static let Close = NSLocalizedString("Close", bundle: CommonString.bundle, comment: "Close word, capitalized") } - + public struct Title { } - public static let deletedContact = NSLocalizedString("A (now deleted) contact", comment: "Can serve as a name in the sentence %@ accepted to join this group") + public static let deletedContact = String(format: "A (now deleted) contact") } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localization/PersistedMessageSystem+Strings.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localization/PersistedMessageSystem+Strings.swift index 88ae9bbf..493dcd47 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localization/PersistedMessageSystem+Strings.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Localization/PersistedMessageSystem+Strings.swift @@ -32,6 +32,19 @@ extension PersistedMessageSystem { struct Strings { + static let contactWasIntroducedToAnotherContact = { (discussionContactDisplayName: String?, otherContactDisplayName: String?) in + switch (discussionContactDisplayName, otherContactDisplayName) { + case (.some(let discussionContactDisplayName), .some(let otherContactDisplayName)): + return String.localizedStringWithFormat(NSLocalizedString("YOU_INTRODUCED_%@_TO_%@", bundle: Bundle(for: PersistedMessageSystem.self), comment: ""), discussionContactDisplayName, otherContactDisplayName) + case (.some(let discussionContactDisplayName), .none): + return String.localizedStringWithFormat(NSLocalizedString("YOU_INTRODUCED_%@_TO_ANOTHER_CONTACT", bundle: Bundle(for: PersistedMessageSystem.self), comment: ""), discussionContactDisplayName) + case (.none, .some(let otherContactDisplayName)): + return String.localizedStringWithFormat(NSLocalizedString("YOU_INTRODUCED_THIS_CONTACT_TO_%@", bundle: Bundle(for: PersistedMessageSystem.self), comment: ""), otherContactDisplayName) + case (.none, .none): + return NSLocalizedString("YOU_INTRODUCED_THIS_CONTACT_TO_ANOTHER_ONE", bundle: Bundle(for: PersistedMessageSystem.self), comment: "") + } + } + static let ownedIdentityDidCaptureSensitiveMessages = NSLocalizedString("YOU_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE", comment: "") static let contactIdentityDidCaptureSensitiveMessages: (String?) -> String = { (contactDisplayName: String?) in if let contactDisplayName { @@ -89,7 +102,7 @@ extension PersistedMessageSystem { } } else if let otherCount = content.othersCount, otherCount >= 1 { result += " " - result += String.localizedStringWithFormat(NSLocalizedString("WITH_N_PARTICIPANTS", comment: ""), otherCount) + result += String(format: "WITH_N_PARTICIPANTS", otherCount) } if let dateString = content.dateString { result += " - " @@ -107,6 +120,21 @@ extension PersistedMessageSystem { callMessageContent(content: content, title: NSLocalizedString("MISSED_CALL_FILTERED", comment: "")) } + + static let answeredOnOtherDevice = { (content: CallMessageContent) in + callMessageContent(content: content, + title: NSLocalizedString("ANSWERED_ON_OTHER_DEVICE", comment: "")) + } + + static let rejectedOnOtherDevice = { (content: CallMessageContent) in + callMessageContent(content: content, + title: NSLocalizedString("REJECTED_ON_OTHER_DEVICE", comment: "")) + } + + static let rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse = { (content: CallMessageContent) in + callMessageContent(content: content, + title: NSLocalizedString("REJECTED_INCOMING_CALL_AS_RECEIVE_CALL_SETTINGS_IS_FALSE", comment: "")) + } static let acceptedOutgoingCall = { (content: CallMessageContent) in callMessageContent(content: content, diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV1/PersistedContactGroup.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV1/PersistedContactGroup.swift index e5728641..2a1f0483 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV1/PersistedContactGroup.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV1/PersistedContactGroup.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,7 +24,9 @@ import ObvTypes import os.log import ObvCrypto import OlvidUtils -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvSettings + @objc(PersistedContactGroup) public class PersistedContactGroup: NSManagedObject { @@ -38,6 +40,7 @@ public class PersistedContactGroup: NSManagedObject { @NSManaged public private(set) var groupName: String @NSManaged private var groupUidRaw: Data + @NSManaged public private(set) var note: String? @NSManaged public private(set) var ownerIdentity: Data // MUST be kept in sync with the owner relationship of subclasses @NSManaged private var photoURL: URL? // Reset with the engine photo URL when it changes and during bootstrap @NSManaged private var rawCategory: Int @@ -101,11 +104,7 @@ public class PersistedContactGroup: NSManagedObject { } } - public func getGroupId() throws -> (groupUid: UID, groupOwner: ObvCryptoId) { - let groupOwner = try ObvCryptoId(identity: self.ownerIdentity) - return (self.groupUid, groupOwner) - } - + public var sortedContactIdentities: [PersistedObvContactIdentity] { contactIdentities.sorted(by: { $0.sortDisplayName < $1.sortDisplayName }) } @@ -122,28 +121,348 @@ public class PersistedContactGroup: NSManagedObject { public var circledInitialsConfiguration: CircledInitialsConfiguration { - .group(photoURL: displayPhotoURL, groupUid: groupUid) + .group(photo: .url(url: displayPhotoURL), groupUid: groupUid) + } + + + /// Returns `true` iff the personal note had to be updated in database + func setNote(to newNote: String?) -> Bool { + if self.note != newNote { + self.note = newNote + return true + } else { + return false + } } -} + public func getGroupId() throws -> GroupV1Identifier { + let groupOwner = try ObvCryptoId(identity: self.ownerIdentity) + return GroupV1Identifier(groupUid: self.groupUid, groupOwner: groupOwner) + } -// MARK: - Errors + + public func getGroupV1Identifier() throws -> GroupV1Identifier? { + let groupId = try self.getGroupId() + return .init(groupUid: groupId.groupUid, groupOwner: groupId.groupOwner) + } + + + // MARK: - Receiving discussion shared configurations + + /// Called when receiving a ``DiscussionSharedConfigurationJSON`` from a contact or an owned identity indicating this particular group as the target. This method makes sure the contact or the owned identity is allowed to change the configuration, i.e., that she is the group owner. + /// + /// Note that ``PersistedContactGroupJoined`` subclass overrides this method to check the permissions. + /// + func mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration: PersistedDiscussion.SharedConfiguration, receivedFrom cryptoId: ObvCryptoId) throws -> (sharedSettingHadToBeUpdated: Bool, weShouldSendBackOurSharedSettings: Bool) { + + guard self.ownerIdentity == cryptoId.getIdentity() else { + throw ObvError.initiatorOfTheChangeIsNotTheGroupOwner + } + + let (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettingsIfAllowedTo) = try discussion.mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration) + + return (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettingsIfAllowedTo) + + } + + + func replaceReceivedDiscussionSharedConfiguration(with expiration: ExpirationJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity) throws -> Bool { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + guard self.ownerIdentity == ownedIdentity.identity else { + throw ObvError.initiatorOfTheChangeIsNotTheGroupOwner + } + + let sharedSettingHadToBeUpdated = try discussion.replaceReceivedDiscussionSharedConfiguration(with: expiration) + + return sharedSettingHadToBeUpdated + + } + + + // MARK: - Processing wipe requests + + func processWipeMessageRequest(of messagesToDelete: [MessageReferenceJSON], receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + guard self.contactIdentities.contains(contact) || self.ownerIdentity == contact.cryptoId.getIdentity() else { + throw ObvError.unexpectedContact + } + + let infos = try discussion.processWipeMessageRequest(of: messagesToDelete, from: contact.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return infos + + } + + + func processWipeMessageRequest(of messagesToDelete: [MessageReferenceJSON], receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let infos = try discussion.processWipeMessageRequest(of: messagesToDelete, from: ownedIdentity.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return infos + + } + + + // MARK: - Processing discussion (all messages) wipe requests + + + func processRemoteRequestToWipeAllMessagesWithinThisGroupDiscussion(from contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.contactIdentities.contains(contact) || self.ownerIdentity == contact.cryptoId.getIdentity() else { + throw ObvError.unexpectedContact + } + + try discussion.processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } -extension PersistedContactGroup { - struct ObvError: LocalizedError { + func processRemoteRequestToWipeAllMessagesWithinThisGroupDiscussion(from ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws { - let kind: Kind + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + try discussion.processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from: ownedIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - enum Kind { - case unexpecterCountOfOwnedIdentities(expected: Int, received: Int) + } + + + // MARK: - Processing delete requests from the owned identity + + func processMessageDeletionRequestRequestedFromCurrentDevice(of ownedIdentity: PersistedObvOwnedIdentity, messageToDelete: PersistedMessage, deletionType: DeletionType) throws -> InfoAboutWipedOrDeletedPersistedMessage { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity } + + let info = try self.discussion.processMessageDeletionRequestRequestedFromCurrentDevice(of: ownedIdentity, messageToDelete: messageToDelete, deletionType: deletionType) + + return info + + } + + + func processDiscussionDeletionRequestFromCurrentDevice(of ownedIdentity: PersistedObvOwnedIdentity, deletionType: DeletionType) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + try self.discussion.processDiscussionDeletionRequestFromCurrentDevice(of: ownedIdentity, deletionType: deletionType) + + } + + + // MARK: - Receiving messages and attachments from a contact or another owned device + + func createOrOverridePersistedMessageReceived(from contact: PersistedObvContactIdentity, obvMessage: ObvMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?, overridePreviousPersistedMessage: Bool) throws -> (discussionPermanentID: DiscussionPermanentID, attachmentFullyReceivedOrCancelledByServer: [ObvAttachment]) { + + guard self.contactIdentities.contains(contact) else { + throw ObvError.unexpectedContact + } + + return try discussion.createOrOverridePersistedMessageReceived( + from: contact, + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + overridePreviousPersistedMessage: overridePreviousPersistedMessage) + + } + + + func createPersistedMessageSentFromOtherOwnedDevice(from ownedIdentity: PersistedObvOwnedIdentity, obvOwnedMessage: ObvOwnedMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?) throws -> [ObvOwnedAttachment] { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let attachmentFullyReceivedOrCancelledByServer = try discussion.createPersistedMessageSentFromOtherOwnedDevice( + from: ownedIdentity, + obvOwnedMessage: obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON) + + return attachmentFullyReceivedOrCancelledByServer + + } + + + // MARK: - Processing edit requests + + func processUpdateMessageRequest(_ updateMessageJSON: UpdateMessageJSON, receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.contactIdentities.contains(contact) else { + throw ObvError.unexpectedContact + } + + let updatedMessage = try discussion.processUpdateMessageRequest(updateMessageJSON, receivedFromContactCryptoId: contact.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + + func processUpdateMessageRequest(_ updateMessageJSON: UpdateMessageJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedContact + } + + let updatedMessage = try discussion.processUpdateMessageRequest(updateMessageJSON, receivedFromOwnedCryptoId: ownedIdentity.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return updatedMessage + + } + + + func processLocalUpdateMessageRequest(from ownedIdentity: PersistedObvOwnedIdentity, for messageSent: PersistedMessageSent, newTextBody: String?) throws { + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedContact + } + + try discussion.processLocalUpdateMessageRequest(from: ownedIdentity, for: messageSent, newTextBody: newTextBody) + + } + + + // MARK: - Process reaction requests + + func processSetOrUpdateReactionOnMessageLocalRequest(from ownedIdentity: PersistedObvOwnedIdentity, for message: PersistedMessage, newEmoji: String?) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedContact + } + + try discussion.processSetOrUpdateReactionOnMessageLocalRequest(from: ownedIdentity, for: message, newEmoji: newEmoji) + + } + + + func processSetOrUpdateReactionOnMessageRequest(_ reactionJSON: ReactionJSON, receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.contactIdentities.contains(contact) else { + throw ObvError.unexpectedContact + } + + let updatedMessage = try discussion.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + + func processSetOrUpdateReactionOnMessageRequest(_ reactionJSON: ReactionJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let updatedMessage = try discussion.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: ownedIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return updatedMessage + + } + + + // MARK: - Process screen capture detections + + func processDetectionThatSensitiveMessagesWereCaptured(_ screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, from contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.contactIdentities.contains(contact) else { + throw ObvError.unexpectedContact + } + + try discussion.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + func processDetectionThatSensitiveMessagesWereCaptured(_ screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, from ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + try discussion.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: ownedIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + func processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by ownedIdentity: PersistedObvOwnedIdentity) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + try discussion.processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by: ownedIdentity) + + } + + + // MARK: - Process requests for group v1 shared settings + + func processQuerySharedSettingsRequest(from contact: PersistedObvContactIdentity, querySharedSettingsJSON: QuerySharedSettingsJSON) throws -> (weShouldSendBackOurSharedSettings: Bool, discussionId: DiscussionIdentifier) { + + guard self.ownedIdentity == contact.ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let discussionId = try discussion.identifier + let weShouldSendBackOurSharedSettings = try discussion.processQuerySharedSettingsRequest(querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + + } + + + func processQuerySharedSettingsRequest(from ownedIdentity: PersistedObvOwnedIdentity, querySharedSettingsJSON: QuerySharedSettingsJSON) throws -> (weShouldSendBackOurSharedSettings: Bool, discussionId: DiscussionIdentifier) { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let discussionId = try discussion.identifier + let weShouldSendBackOurSharedSettings = try discussion.processQuerySharedSettingsRequest(querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + + } + + +} + + +// MARK: - Errors + +extension PersistedContactGroup { + + enum ObvError: LocalizedError { + + case unexpecterCountOfOwnedIdentities(expected: Int, received: Int) + case initiatorOfTheChangeIsNotTheGroupOwner + case unexpectedContact + case unexpectedOwnedIdentity + var errorDescription: String? { - switch kind { + switch self { case .unexpecterCountOfOwnedIdentities(expected: let expected, received: let received): return "Unexpected number of owned identites. Expecting \(expected), got \(received)." + case .initiatorOfTheChangeIsNotTheGroupOwner: + return "The initiator of the change is not the group owner" + case .unexpectedContact: + return "Unexpected contact" + case .unexpectedOwnedIdentity: + return "Unexpected owned identity" } } @@ -170,7 +489,7 @@ extension PersistedContactGroup { self.ownerIdentity = contactGroup.groupOwner.cryptoId.getIdentity() self.photoURL = contactGroup.trustedOrLatestPhotoURL - let _contactIdentities = try contactGroup.groupMembers.compactMap { try PersistedObvContactIdentity.get(persisted: $0, whereOneToOneStatusIs: .any, within: context) } + let _contactIdentities = try contactGroup.groupMembers.compactMap { try PersistedObvContactIdentity.get(persisted: $0.contactIdentifier, whereOneToOneStatusIs: .any, within: context) } self.contactIdentities = Set(_contactIdentities) if let discussion = try PersistedGroupDiscussion.getWithGroupUID(contactGroup.groupUid, @@ -276,7 +595,7 @@ extension PersistedContactGroup { // We make sure all contact identities concern the same owned identity let ownedIdentities = Set(contactIdentities.map { $0.ownedIdentity }) guard ownedIdentities.count == 1 else { - throw ObvError(kind: .unexpecterCountOfOwnedIdentities(expected: 1, received: ownedIdentities.count)) + throw ObvError.unexpecterCountOfOwnedIdentities(expected: 1, received: ownedIdentities.count) } let ownedIdentity = ownedIdentities.first!.cryptoId // Get the persisted contacts corresponding to the contact identities @@ -344,7 +663,7 @@ extension PersistedContactGroup { static func withContactIdentity(_ contactIdentity: PersistedObvContactIdentity) -> NSPredicate { NSPredicate(Key.contactIdentities, contains: contactIdentity) } - static func withGroupId(_ groupId: (groupUid: UID, groupOwner: ObvCryptoId)) -> NSPredicate { + static func withGroupIdentifier(_ groupId: GroupV1Identifier) -> NSPredicate { NSCompoundPredicate(andPredicateWithSubpredicates: [ NSPredicate(Key.groupUidRaw, EqualToData: groupId.groupUid.raw), NSPredicate(Key.ownerIdentity, EqualToData: groupId.groupOwner.getIdentity()), @@ -358,11 +677,11 @@ extension PersistedContactGroup { } - public static func getContactGroup(groupId: (groupUid: UID, groupOwner: ObvCryptoId), ownedIdentity: PersistedObvOwnedIdentity) throws -> PersistedContactGroup? { + public static func getContactGroup(groupIdentifier: GroupV1Identifier, ownedIdentity: PersistedObvOwnedIdentity) throws -> PersistedContactGroup? { guard let context = ownedIdentity.managedObjectContext else { throw Self.makeError(message: "Context is nil") } let request: NSFetchRequest = PersistedContactGroup.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withGroupId(groupId), + Predicate.withGroupIdentifier(groupIdentifier), Predicate.withPersistedObvOwnedIdentity(ownedIdentity), ]) request.fetchLimit = 1 @@ -370,10 +689,10 @@ extension PersistedContactGroup { } - public static func getContactGroup(groupId: (groupUid: UID, groupOwner: ObvCryptoId), ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws -> PersistedContactGroup? { + public static func getContactGroup(groupIdentifier: GroupV1Identifier, ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws -> PersistedContactGroup? { let request: NSFetchRequest = PersistedContactGroup.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withGroupId(groupId), + Predicate.withGroupIdentifier(groupIdentifier), Predicate.withOwnCryptoId(ownedCryptoId), ]) request.fetchLimit = 1 @@ -468,3 +787,77 @@ extension PersistedContactGroup { } } + + +// MARK: - For snapshot purposes + +extension PersistedContactGroup { + + var syncSnapshotNode: PersistedContactGroupSyncSnapshotNode { + .init(groupNameCustom: (self as? PersistedContactGroupJoined)?.groupNameCustom, + note: note, + discussion: discussion) + } + +} + + +struct PersistedContactGroupSyncSnapshotNode: ObvSyncSnapshotNode { + + private let domain: Set + private let groupNameCustom: String? // Only for joined group under iOS + private let note: String? + private let discussionConfiguration: PersistedDiscussionConfigurationSyncSnapshotNode? + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case groupNameCustom = "custom_name" + case note = "personal_note" + case discussionConfiguration = "discussion_customization" + case domain = "domain" + } + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + init(groupNameCustom: String?, note: String?, discussion: PersistedGroupDiscussion?) { + self.groupNameCustom = groupNameCustom + self.note = note + self.discussionConfiguration = discussion?.syncSnapshotNode + self.domain = Self.defaultDomain + } + + + // Synthesized implementation of encode(to encoder: Encoder) + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.groupNameCustom = try values.decodeIfPresent(String.self, forKey: .groupNameCustom) + self.note = try values.decodeIfPresent(String.self, forKey: .note) + self.discussionConfiguration = try values.decodeIfPresent(PersistedDiscussionConfigurationSyncSnapshotNode.self, forKey: .discussionConfiguration) + } + + + func useToUpdate(_ contactGroup: PersistedContactGroup) { + + if domain.contains(.groupNameCustom) { + if let contactGroupJoined = contactGroup as? PersistedContactGroupJoined { + _ = try? contactGroupJoined.setGroupNameCustom(to: groupNameCustom) + } + } + + if domain.contains(.note) { + _ = contactGroup.setNote(to: note) + } + + if domain.contains(.discussionConfiguration) { + discussionConfiguration?.useToUpdate(contactGroup.discussion) + } + + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV1/PersistedContactGroupJoined.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV1/PersistedContactGroupJoined.swift index 8cd6e256..5b0f3d3c 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV1/PersistedContactGroupJoined.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV1/PersistedContactGroupJoined.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import CoreData import ObvEngine import ObvTypes import OlvidUtils +import ObvSettings @objc(PersistedContactGroupJoined) @@ -52,13 +53,9 @@ public final class PersistedContactGroupJoined: PersistedContactGroup, ObvErrorM return ObvUICoreDataConstants.ContainerURL.forCustomGroupProfilePictures.appendingPathComponent(customPhotoFilename) } -} - -// MARK: - Initializer + // MARK: - Initializer -extension PersistedContactGroupJoined { - public convenience init(contactGroup: ObvContactGroup, within context: NSManagedObjectContext) throws { guard contactGroup.groupType == .joined else { @@ -86,6 +83,23 @@ extension PersistedContactGroupJoined { self.owner = owner self.customPhotoFilename = nil } + + + // MARK: - Receiving discussion shared configurations + + + /// Called when receiving a ``DiscussionSharedConfigurationJSON`` from a contact or an owned identity indicating this particular group as the target. This method makes sure the contact or the owned identity is allowed to change the configuration, i.e., that she is the group owner. + override func mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration: PersistedDiscussion.SharedConfiguration, receivedFrom cryptoId: ObvCryptoId) throws -> (sharedSettingHadToBeUpdated: Bool, weShouldSendBackOurSharedSettings: Bool) { + + let (sharedSettingHadToBeUpdated, _) = try super.mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration: discussionSharedConfiguration, receivedFrom: cryptoId) + + // Since we joined this group, we are not allowed to change its shared settings, so we never send ours back + + let weShouldSendBackOurSharedSettings = false + + return (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) + + } } @@ -94,23 +108,35 @@ extension PersistedContactGroupJoined { extension PersistedContactGroupJoined { - public func setGroupNameCustom(to groupNameCustom: String) throws { - let newGroupNameCustom = groupNameCustom.trimmingCharacters(in: .whitespacesAndNewlines) - guard !newGroupNameCustom.isEmpty else { throw Self.makeError(message: "Cannot use an empty string as a custom group name") } - self.groupNameCustom = newGroupNameCustom - try resetDiscussionTitle() - } - - - public func removeGroupNameCustom() throws { - self.groupNameCustom = nil - try resetDiscussionTitle() + func setGroupNameCustom(to groupNameCustom: String?) throws -> Bool { + let groupNameCustomHadToBeUpdated: Bool + let newGroupNameCustom = groupNameCustom?.trimmingCharacters(in: .whitespacesAndNewlines) + if let newGroupNameCustom, !newGroupNameCustom.isEmpty { + if self.groupNameCustom != newGroupNameCustom { + self.groupNameCustom = newGroupNameCustom + groupNameCustomHadToBeUpdated = true + } else { + groupNameCustomHadToBeUpdated = false + } + } else { + if self.groupNameCustom != nil { + self.groupNameCustom = nil + groupNameCustomHadToBeUpdated = true + } else { + groupNameCustomHadToBeUpdated = false + } + } + if groupNameCustomHadToBeUpdated { + try discussion.resetTitle(to: self.displayName) + } + return groupNameCustomHadToBeUpdated } public func setStatus(to newStatus: PublishedDetailsStatusType) { guard self.rawStatus != newStatus.rawValue else { return } self.rawStatus = newStatus.rawValue + try? createOrUpdateTheAssociatedDisplayedContactGroup() } } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV2/PersistedGroupV2.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV2/PersistedGroupV2.swift index 18a79742..3ef99bcd 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV2/PersistedGroupV2.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/ContactGroupV2/PersistedGroupV2.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -16,7 +16,6 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import Foundation import CoreData @@ -25,7 +24,10 @@ import ObvTypes import CryptoKit import os.log import Platform_Base -import UI_CircledInitialsView_CircledInitialsConfiguration +import ObvEngine +import UI_ObvCircledInitials +import ObvSettings + @objc(PersistedGroupV2) public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { @@ -45,7 +47,7 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { @NSManaged private var ownPermissionEditOrRemoteDeleteOwnMessages: Bool @NSManaged private var ownPermissionRemoteDeleteAnything: Bool @NSManaged private var ownPermissionSendMessage: Bool - @NSManaged private var personalNote: String? + @NSManaged public private(set) var personalNote: String? @NSManaged private var rawOwnedIdentityIdentity: Data // Part of primary key @NSManaged private var rawPublishedDetailsStatus: Int @NSManaged public private(set) var updateInProgress: Bool @@ -130,13 +132,12 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { public var circledInitialsConfiguration: CircledInitialsConfiguration { - .groupV2(photoURL: self.displayPhotoURL, groupIdentifier: groupIdentifier, showGreenShield: keycloakManaged) + .groupV2(photo: .url(url: self.displayPhotoURL), groupIdentifier: groupIdentifier, showGreenShield: keycloakManaged) } public var circledInitialsConfigurationPublished: CircledInitialsConfiguration { - let photoURL = self.displayPhotoURLPublished - return .groupV2(photoURL: photoURL, groupIdentifier: groupIdentifier, showGreenShield: keycloakManaged) + return .groupV2(photo: .url(url: self.displayPhotoURLPublished), groupIdentifier: groupIdentifier, showGreenShield: keycloakManaged) } // Initializer @@ -186,7 +187,6 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { self.ownPermissionEditOrRemoteDeleteOwnMessages = obvGroupV2.ownPermissions.contains(.editOrRemoteDeleteOwnMessages) self.ownPermissionRemoteDeleteAnything = obvGroupV2.ownPermissions.contains(.remoteDeleteAnything) self.ownPermissionSendMessage = obvGroupV2.ownPermissions.contains(.sendMessage) - self.personalNote = nil self.rawOwnedIdentityIdentity = obvGroupV2.ownIdentity.getIdentity() self.updateInProgress = obvGroupV2.updateInProgress displayedContactGroup?.updateUsingUnderlyingGroup() @@ -194,22 +194,29 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { } + /// Returns `true` iff the personal note had to be updated in database + func setNote(to newNote: String?) -> Bool { + if self.personalNote != newNote { + self.personalNote = newNote + return true + } else { + return false + } + } + + /// The `namesOfOtherMembers` attribute is essentially used to display a group name when no specific name was specified. /// This method allows to update this attribute. private func updateNamesOfOtherMembers() { let names = otherMembers.map({ $0.displayedCustomDisplayNameOrFirstNameOrLastName ?? "" }).sorted() - if #available(iOS 15, *) { - self.namesOfOtherMembers = names.formatted(.list(type: .and, width: .short)) - } else { - self.namesOfOtherMembers = names.joined(separator: ", ") - } + self.namesOfOtherMembers = names.formatted(.list(type: .and, width: .short)) displayedContactGroup?.updateUsingUnderlyingGroup() try? discussion?.resetTitle(to: self.displayName) } - /// This method moves the photo at the indicated URL to a proper location. - public func updateCustomPhotoWithPhotoAtURL(_ url: URL?, within obvContext: ObvContext) throws { + /// This method saves the photo to a proper location. + func updateCustomPhotoWithPhoto(_ newPhoto: UIImage?, within obvContext: ObvContext) throws { defer { displayedContactGroup?.updateUsingUnderlyingGroup() @@ -238,28 +245,26 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { self.customPhotoFilename = nil - // If received url is nil, there is nothing left to do + // If received new photo is nil, there is nothing left to do - guard let url = url else { return } + guard let newPhoto else { return } - // Make sure there is a file a the received URL - - guard FileManager.default.fileExists(atPath: url.path) else { - throw Self.makeError(message: "Could not find file at url \(url.debugDescription)") - } - - // Move the file at the received URL to a proper location (if the context saves without error) + // Create a file at a proper location let newCustomFilename = UUID().uuidString self.customPhotoFilename = newCustomFilename let customPhotoURL = ObvUICoreDataConstants.ContainerURL.forCustomGroupProfilePictures.appendingPathComponent(newCustomFilename) - + guard let jpegData = newPhoto.jpegData(compressionQuality: 0.75) else { + assertionFailure() + throw Self.makeError(message: "Could not extract jpeg data for custom group photo") + } do { - try FileManager.default.linkItem(at: url, to: customPhotoURL) + try jpegData.write(to: customPhotoURL) } catch { - try FileManager.default.copyItem(at: url, to: customPhotoURL) + assertionFailure() + throw Self.makeError(message: "Could not write custom photo to file") } - + // If the context saves with an error, remove the file we just created try obvContext.addContextDidSaveCompletionHandler { error in @@ -271,11 +276,15 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { } - public func updateCustomNameWith(with newCustomName: String?) throws { - guard self.customName != newCustomName else { return } + /// Returns `true` iff the group custom name had to be updated. + func updateCustomNameWith(with newCustomName: String?) throws -> Bool { + guard self.customName != newCustomName else { + return false + } self.customName = newCustomName displayedContactGroup?.updateUsingUnderlyingGroup() try discussion?.resetTitle(to: self.displayName) + return true } @@ -423,12 +432,12 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { if obvGroupV2.keycloakManaged { do { - if let serializedSharedSettings = obvGroupV2.serializedSharedSettings, let lastModificationTimestamp = obvGroupV2.lastModificationTimestamp { + if let serializedSharedSettings = obvGroupV2.serializedSharedSettings { if let serializedSharedSettingsAsData = serializedSharedSettings.data(using: .utf8) { let discussionSharedConfigurationForKeycloakGroupJSON = try DiscussionSharedConfigurationForKeycloakGroupJSON.jsonDecode(serializedSharedSettingsAsData) if let expirationJSON = discussionSharedConfigurationForKeycloakGroupJSON.expiration { assert(rawDiscussion != nil) - _ = try rawDiscussion?.sharedConfiguration.replacePersistedDiscussionSharedConfiguration(with: expirationJSON, initiator: .keycloak(lastModificationTimestamp: lastModificationTimestamp)) + _ = try rawDiscussion?.sharedConfiguration.replacePersistedDiscussionSharedConfiguration(with: expirationJSON) } } else { assertionFailure("We could not parse the shared settings sent by the keycloak server") // In production, continue anyway @@ -465,7 +474,7 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { } - public static func createOrUpdate(obvGroupV2: ObvGroupV2, createdByMe: Bool, within context: NSManagedObjectContext) throws -> PersistedGroupV2 { + static func createOrUpdate(obvGroupV2: ObvGroupV2, createdByMe: Bool, within context: NSManagedObjectContext) throws -> PersistedGroupV2 { if let persistedGroup = try PersistedGroupV2.getWithObvGroupV2(obvGroupV2, within: context) { persistedGroup.updateAttributes(obvGroupV2: obvGroupV2) try persistedGroup.updateRelationships(obvGroupV2: obvGroupV2, @@ -514,12 +523,16 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { public func setUpdateInProgress() { assert(!keycloakManaged) - self.updateInProgress = true + if !self.updateInProgress { + self.updateInProgress = true + } } public func removeUpdateInProgress() { - self.updateInProgress = false + if self.updateInProgress { + self.updateInProgress = false + } } @@ -542,6 +555,7 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { case rawOwnedIdentityIdentity = "rawOwnedIdentityIdentity" case updateInProgress = "updateInProgress" case rawOtherMembers = "rawOtherMembers" + case customPhotoFilename = "customPhotoFilename" } static func withOwnedIdentity(_ ownedIdentity: PersistedObvOwnedIdentity) -> NSPredicate { NSPredicate(Key.rawOwnedIdentityIdentity, EqualToData: ownedIdentity.identity) @@ -565,6 +579,9 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { NSPredicate(format: predicateFormat, contactIdentity) ]) } + public static var withCustomPhotoFilename: NSPredicate { + NSPredicate(withNonNilValueForKey: Key.customPhotoFilename) + } } @@ -573,6 +590,16 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { } + public static func getAllCustomPhotoURLs(within context: NSManagedObjectContext) throws -> Set { + let request: NSFetchRequest = PersistedGroupV2.fetchRequest() + request.predicate = Predicate.withCustomPhotoFilename + request.propertiesToFetch = [Predicate.Key.customPhotoFilename.rawValue] + let details = try context.fetch(request) + let photoURLs = Set(details.compactMap({ $0.customPhotoURL })) + return photoURLs + } + + public static func getWithPrimaryKey(ownCryptoId: ObvCryptoId, groupIdentifier: Data, within context: NSManagedObjectContext) throws -> PersistedGroupV2? { let request: NSFetchRequest = PersistedGroupV2.fetchRequest() request.predicate = Predicate.withPrimaryKey(ownCryptoId: ownCryptoId, groupIdentifier: groupIdentifier) @@ -594,7 +621,7 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { } - public static func get(ownIdentity: ObvCryptoId, appGroupIdentifier: Data, within context: NSManagedObjectContext) throws -> PersistedGroupV2? { + public static func get(ownIdentity: ObvCryptoId, appGroupIdentifier: GroupV2Identifier, within context: NSManagedObjectContext) throws -> PersistedGroupV2? { return try getWithPrimaryKey(ownCryptoId: ownIdentity, groupIdentifier: appGroupIdentifier, within: context) } @@ -816,12 +843,598 @@ public final class PersistedGroupV2: NSManagedObject, ObvErrorMaker { ObvMessengerCoreDataNotification.persistedGroupV2WasDeleted(objectID: self.typedObjectID) .postOnDispatchQueue() } else if changedKeys.contains(Predicate.Key.updateInProgress.rawValue) && self.updateInProgress == false { - ObvMessengerCoreDataNotification.persistedGroupV2UpdateIsFinished(objectID: self.typedObjectID) - .postOnDispatchQueue() + if let ownedCryptoId = try? self.ownCryptoId { + ObvMessengerCoreDataNotification.persistedGroupV2UpdateIsFinished(objectID: self.typedObjectID, ownedCryptoId: ownedCryptoId, groupIdentifier: self.groupIdentifier) + .postOnDispatchQueue() + } + } + + if isInserted { + if let ownedCryptoId = try? self.ownCryptoId { + ObvMessengerCoreDataNotification.aPersistedGroupV2WasInsertedInDatabase(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier) + .postOnDispatchQueue() + } + } + + } + + + // MARK: - Receiving discussion shared configurations + + /// Called when receiving a shared discussion configuration from a contact indicating this particular group as the target. This method makes sure the contact is allowed to change the configuration. + func mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration: PersistedDiscussion.SharedConfiguration, receivedFrom contact: PersistedObvContactIdentity) throws -> (sharedSettingHadToBeUpdated: Bool, weShouldSendBackOurSharedSettings: Bool) { + + let contactIdentity = contact.identity + + guard self.ownedIdentityIdentity == contact.ownedIdentity?.identity else { + throw Self.makeError(message: "Owned identity is not part of group") + } + + guard let initiatorAsMember = self.otherMembers.first(where: { $0.identity == contactIdentity }) else { + throw Self.makeError(message: "The initiator is not part of the group") + } + + guard initiatorAsMember.isAllowedToChangeSettings else { + throw Self.makeError(message: "The initiator is not allowed to change settings") + } + + guard let discussion = self.discussion else { + throw Self.makeError(message: "Could not find discussion") + } + + let (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettingsIfAllowedTo) = try discussion.mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration) + + let weShouldSendBackOurSharedSettings: Bool + if self.ownPermissionChangeSettings { + weShouldSendBackOurSharedSettings = weShouldSendBackOurSharedSettingsIfAllowedTo + } else { + weShouldSendBackOurSharedSettings = false + } + + return (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) + + } + + + /// Called when receiving a shared discussion configuration from another device of an owned identity indicating this particular group as the target. This method makes sure the contact is allowed to change the configuration. + func mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration: PersistedDiscussion.SharedConfiguration, receivedFrom ownedIdentity: PersistedObvOwnedIdentity) throws -> (sharedSettingHadToBeUpdated: Bool, weShouldSendBackOurSharedSettings: Bool) { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw Self.makeError(message: "Owned identity is not part of group") + } + + guard self.ownedIdentityIsAllowedToChangeSettings else { + throw Self.makeError(message: "The owned identity is not allowed to change settings") + } + + guard let discussion = self.discussion else { + throw Self.makeError(message: "Could not find discussion") + } + + let (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettingsIfAllowedTo) = try discussion.mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration) + + let weShouldSendBackOurSharedSettings: Bool + if self.ownPermissionChangeSettings { + weShouldSendBackOurSharedSettings = weShouldSendBackOurSharedSettingsIfAllowedTo + } else { + weShouldSendBackOurSharedSettings = false + } + + return (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) + + } + + func replaceReceivedDiscussionSharedConfiguration(with expiration: ExpirationJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity) throws -> Bool { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw Self.makeError(message: "Owned identity is not part of group") + } + + guard self.ownedIdentityIsAllowedToChangeSettings else { + throw Self.makeError(message: "The owned identity is not allowed to change settings") + } + + guard let discussion = self.discussion else { + throw Self.makeError(message: "Could not find discussion") + } + + let sharedSettingHadToBeUpdated = try discussion.replaceReceivedDiscussionSharedConfiguration(with: expiration) + + return sharedSettingHadToBeUpdated + + } + + + // MARK: - Processing wipe requests from contacts and other owned devices + + func processWipeMessageRequest(of messagesToDelete: [MessageReferenceJSON], receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + guard self.ownedIdentityIdentity == contact.ownedIdentity?.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let requester = self.otherMembers.first(where: { $0.identity == contact.cryptoId.getIdentity() }) else { + throw ObvError.wipeRequestedByNonGroupMember + } + + guard requester.isAllowedToRemoteDeleteAnything || requester.isAllowedToEditOrRemoteDeleteOwnMessages else { + assertionFailure() + throw ObvError.wipeRequestedByMemberNotAllowedToRemoteDelete + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + let infos = try discussion.processWipeMessageRequest(of: messagesToDelete, from: contact.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return infos + + } + + + func processWipeMessageRequest(of messagesToDelete: [MessageReferenceJSON], receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + // We do not check whether the owned identity is allowed to wipe + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + let infos = try discussion.processWipeMessageRequest(of: messagesToDelete, from: ownedIdentity.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return infos + + } + + + // MARK: - Processing delete requests from the owned identity (made on this device) + + func processMessageDeletionRequestRequestedFromCurrentDevice(of ownedIdentity: PersistedObvOwnedIdentity, messageToDelete: PersistedMessage, deletionType: DeletionType) throws -> InfoAboutWipedOrDeletedPersistedMessage { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + switch deletionType { + case .local: + break + case .global: + guard self.ownedIdentityIsAllowedToRemoteDeleteAnything || (self.ownedIdentityIsAllowedToEditOrRemoteDeleteOwnMessages && messageToDelete is PersistedMessageSent) else { + assertionFailure() + throw ObvError.ownedIdentityIsNotAllowedToDeleteThisMessage + } + } + + let info = try discussion.processMessageDeletionRequestRequestedFromCurrentDevice( + of: ownedIdentity, + messageToDelete: messageToDelete, + deletionType: deletionType) + + return info + + } + + + // MARK: - Receiving messages and attachments from a contact or another owned device + + func createOrOverridePersistedMessageReceived(from contact: PersistedObvContactIdentity, obvMessage: ObvMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?, overridePreviousPersistedMessage: Bool) throws -> (discussionPermanentID: DiscussionPermanentID, attachmentFullyReceivedOrCancelledByServer: [ObvAttachment]) { + + guard self.ownedIdentityIdentity == contact.ownedIdentity?.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let requester = self.otherMembers.first(where: { $0.identity == contact.cryptoId.getIdentity() }) else { + throw ObvError.wipeRequestedByNonGroupMember + } + + guard requester.isAllowedToSendMessage else { + throw ObvError.messageReceivedByMemberNotAllowedToSendMessage + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + return try discussion.createOrOverridePersistedMessageReceived( + from: contact, + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + overridePreviousPersistedMessage: overridePreviousPersistedMessage) + + } + + + func createPersistedMessageSentFromOtherOwnedDevice(from ownedIdentity: PersistedObvOwnedIdentity, obvOwnedMessage: ObvOwnedMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?) throws -> [ObvOwnedAttachment] { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard ownedIdentityIsAllowedToSendMessage else { + throw ObvError.ownedIdentityIsNotAllowedToSendMessages + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + let attachmentFullyReceivedOrCancelledByServer = try discussion.createPersistedMessageSentFromOtherOwnedDevice( + from: ownedIdentity, + obvOwnedMessage: obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON) + + return attachmentFullyReceivedOrCancelledByServer + + } + + + // MARK: - Processing edit requests + + func processUpdateMessageRequest(_ updateMessageJSON: UpdateMessageJSON, receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.ownedIdentityIdentity == contact.ownedIdentity?.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let requester = self.otherMembers.first(where: { $0.identity == contact.cryptoId.getIdentity() }) else { + throw ObvError.wipeRequestedByNonGroupMember + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + // Check that the contact is allowed to edit her messages. Note that the check whether the message was written by her is done later. + + guard requester.isAllowedToEditOrRemoteDeleteOwnMessages else { + throw ObvError.updateRequestReceivedByMemberNotAllowedToToEditOrRemoteDeleteOwnMessages + } + + // Request the update + + let updatedMessage = try discussion.processUpdateMessageRequest(updateMessageJSON, receivedFromContactCryptoId: contact.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + + func processUpdateMessageRequest(_ updateMessageJSON: UpdateMessageJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + // Check that the owned identity is allowed to edit her messages. Note that the check whether the message was written by her is done later. + + guard ownedIdentityIsAllowedToEditOrRemoteDeleteOwnMessages else { + throw ObvError.ownedIdentityIsNotAllowedToEditOrRemoteDeleteOwnMessages + } + + // Request the update + + let updatedMessage = try discussion.processUpdateMessageRequest(updateMessageJSON, receivedFromOwnedCryptoId: ownedIdentity.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + + func processLocalUpdateMessageRequest(from ownedIdentity: PersistedObvOwnedIdentity, for messageSent: PersistedMessageSent, newTextBody: String?) throws { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion } + + // Check that the owned identity is allowed to edit her messages. + + guard ownedIdentityIsAllowedToEditOrRemoteDeleteOwnMessages else { + throw ObvError.ownedIdentityIsNotAllowedToEditOrRemoteDeleteOwnMessages + } + + // Request the update + + try discussion.processLocalUpdateMessageRequest(from: ownedIdentity, for: messageSent, newTextBody: newTextBody) + + } + + + // MARK: - Processing discussion (all messages) remote wipe requests + + + func processRemoteRequestToWipeAllMessagesWithinThisGroupDiscussion(from contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.ownedIdentityIdentity == contact.ownedIdentity?.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let requester = self.otherMembers.first(where: { $0.identity == contact.cryptoId.getIdentity() }) else { + throw ObvError.wipeRequestedByNonGroupMember + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + // Check that the contact is allowed to make this request + + guard requester.isAllowedToRemoteDeleteAnything else { + throw ObvError.requestToDeleteAllMessagesWithinThisGroupDiscussionFromContactNotAllowedToDoSo + } + + try discussion.processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + func processRemoteRequestToWipeAllMessagesWithinThisGroupDiscussion(from ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + // Check that the owned identity is allowed to perform a remote deletion + guard self.ownedIdentityIsAllowedToRemoteDeleteAnything else { + throw ObvError.ownedIdentityIsNotAllowedToDeleteDiscussion + } + + try discussion.processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from: ownedIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + func processDiscussionDeletionRequestFromCurrentDevice(of ownedIdentity: PersistedObvOwnedIdentity, deletionType: DeletionType) throws { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + switch deletionType { + case .local: + break + case .global: + guard self.ownedIdentityIsAllowedToRemoteDeleteAnything else { + throw ObvError.ownedIdentityIsNotAllowedToDeleteDiscussion + } + } + + try discussion.processDiscussionDeletionRequestFromCurrentDevice(of: ownedIdentity, deletionType: deletionType) + + } + + + // MARK: - Process reaction requests + + func processSetOrUpdateReactionOnMessageLocalRequest(from ownedIdentity: PersistedObvOwnedIdentity, for message: PersistedMessage, newEmoji: String?) throws { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + guard ownedIdentityIsAllowedToSendMessage else { + throw ObvError.ownedIdentityIsNotAllowedToSendMessages + } + + try discussion.processSetOrUpdateReactionOnMessageLocalRequest(from: ownedIdentity, for: message, newEmoji: newEmoji) + + } + + + func processSetOrUpdateReactionOnMessageRequest(_ reactionJSON: ReactionJSON, receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.ownedIdentityIdentity == contact.ownedIdentity?.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let requester = self.otherMembers.first(where: { $0.identity == contact.cryptoId.getIdentity() }) else { + throw ObvError.wipeRequestedByNonGroupMember + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + // Check that the contact is allowed to react + + guard requester.isAllowedToSendMessage else { + throw ObvError.messageReceivedByMemberNotAllowedToSendMessage + } + + let updatedMessage = try discussion.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return updatedMessage + + } + + + func processSetOrUpdateReactionOnMessageRequest(_ reactionJSON: ReactionJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + guard ownedIdentityIsAllowedToSendMessage else { + throw ObvError.ownedIdentityIsNotAllowedToSendMessages + } + + let updatedMessage = try discussion.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: ownedIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return updatedMessage + + } + + + // MARK: - Process screen capture detections + + func processDetectionThatSensitiveMessagesWereCaptured(_ screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, from contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.ownedIdentityIdentity == contact.ownedIdentity?.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard self.otherMembers.first(where: { $0.identity == contact.cryptoId.getIdentity() }) != nil else { + throw ObvError.wipeRequestedByNonGroupMember + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + try discussion.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + func processDetectionThatSensitiveMessagesWereCaptured(_ screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, from ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + try discussion.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: ownedIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + func processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by ownedIdentity: PersistedObvOwnedIdentity) throws { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + try discussion.processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by: ownedIdentity) + + } + + + // MARK: - Process requests for group v2 shared settings + + func processQuerySharedSettingsRequest(from contact: PersistedObvContactIdentity, querySharedSettingsJSON: QuerySharedSettingsJSON) throws -> (weShouldSendBackOurSharedSettings: Bool, discussionId: DiscussionIdentifier) { + + guard self.ownedIdentityIdentity == contact.ownedIdentity?.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard self.otherMembers.first(where: { $0.identity == contact.cryptoId.getIdentity() }) != nil else { + throw ObvError.wipeRequestedByNonGroupMember + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + let discussionId = try discussion.identifier + let weShouldSendBackOurSharedSettings = try discussion.processQuerySharedSettingsRequest(querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) } + + + func processQuerySharedSettingsRequest(from ownedIdentity: PersistedObvOwnedIdentity, querySharedSettingsJSON: QuerySharedSettingsJSON) throws -> (weShouldSendBackOurSharedSettings: Bool, discussionId: DiscussionIdentifier) { + + guard self.ownedIdentityIdentity == ownedIdentity.identity else { + throw ObvError.ownedIdentityIsNotPartOfThisGroup + } + + guard let discussion else { + throw ObvError.couldNotFindGroupDiscussion + } + + let discussionId = try discussion.identifier + let weShouldSendBackOurSharedSettings = try discussion.processQuerySharedSettingsRequest(querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + + } + + // MARK: - ObvError + + public enum ObvError: LocalizedError { + + case wipeRequestedByNonGroupMember + case wipeRequestedByMemberNotAllowedToRemoteDelete + case couldNotFindGroupDiscussion + case messageReceivedByMemberNotAllowedToSendMessage + case ownedIdentityIsNotPartOfThisGroup + case ownedIdentityIsNotAllowedToSendMessages + case ownedIdentityIsNotAllowedToDeleteThisMessage + case updateRequestReceivedByMemberNotAllowedToToEditOrRemoteDeleteOwnMessages + case ownedIdentityIsNotAllowedToEditOrRemoteDeleteOwnMessages + case requestToDeleteAllMessagesWithinThisGroupDiscussionFromContactNotAllowedToDoSo + case ownedIdentityIsNotAllowedToDeleteDiscussion + + public var errorDescription: String? { + switch self { + case .wipeRequestedByNonGroupMember: + return "Wipe requested by non group member" + case .wipeRequestedByMemberNotAllowedToRemoteDelete: + return "Wipe requested by member not allowed to remote delete" + case .couldNotFindGroupDiscussion: + return "Could not find group discussion" + case .messageReceivedByMemberNotAllowedToSendMessage: + return "Message received by a group member not allowed to send messages" + case .ownedIdentityIsNotPartOfThisGroup: + return "Owned identity is not part of this group" + case .ownedIdentityIsNotAllowedToSendMessages: + return "Owned identity is not allowed to send messages" + case .ownedIdentityIsNotAllowedToDeleteThisMessage: + return "Owned identity is not allowed to delete this message" + case .updateRequestReceivedByMemberNotAllowedToToEditOrRemoteDeleteOwnMessages: + return "Update request received from a group member who is not allowed to update her messages" + case .ownedIdentityIsNotAllowedToEditOrRemoteDeleteOwnMessages: + return "Owned identity is not allowed to edit or remote delete own messages" + case .requestToDeleteAllMessagesWithinThisGroupDiscussionFromContactNotAllowedToDoSo: + return "Request to delete all messages within this group discussion received from a contact who is not allowed to do so" + case .ownedIdentityIsNotAllowedToDeleteDiscussion: + return "Owned identity is not allowed to delete this group discussion" + } + } + + } + } @@ -1397,13 +2010,11 @@ extension PersistedGroupV2Member: MentionableIdentity { } guard let cryptoId else { - assertionFailure("failed to create cryptoId for un-synced contact") - return .icon(.lockFill) } return .contact(initial: mentionPersistedName, //ignore the nickname, the user hasn't been synced yet - photoURL: nil, + photo: nil, showGreenShield: false, showRedShield: false, cryptoId: cryptoId, @@ -1430,3 +2041,78 @@ extension PersistedGroupV2Member: MentionableIdentity { return .groupV2Member(typedObjectID) } } + + + +// MARK: - For snapshot purposes + +extension PersistedGroupV2 { + + var syncSnapshotNode: PersistedGroupV2SyncSnapshotNode { + .init(customName: customName, + personalNote: personalNote, + discussion: discussion) + } + +} + + +struct PersistedGroupV2SyncSnapshotNode: ObvSyncSnapshotNode { + + private let domain: Set + private let customName: String? + private let personalNote: String? + private let discussionConfiguration: PersistedDiscussionConfigurationSyncSnapshotNode? + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case customName = "custom_name" + case personalNote = "personal_note" + case discussionConfiguration = "discussion_customization" + case domain = "domain" + } + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + init(customName: String?, personalNote: String?, discussion: PersistedGroupV2Discussion?) { + self.customName = customName + self.personalNote = personalNote + self.discussionConfiguration = discussion?.syncSnapshotNode + self.domain = Self.defaultDomain + } + + + // Synthesized implementation of encode(to encoder: Encoder) + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.customName = try values.decodeIfPresent(String.self, forKey: .customName) + self.personalNote = try values.decodeIfPresent(String.self, forKey: .personalNote) + self.discussionConfiguration = try values.decodeIfPresent(PersistedDiscussionConfigurationSyncSnapshotNode.self, forKey: .discussionConfiguration) + } + + + func useToUpdate(_ group: PersistedGroupV2) { + + if domain.contains(.customName) { + _ = try? group.updateCustomNameWith(with: customName) + } + + if domain.contains(.personalNote) { + _ = group.setNote(to: personalNote) + } + + if domain.contains(.discussionConfiguration) { + if let discussion = group.discussion { + discussionConfiguration?.useToUpdate(discussion) + } + } + + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/DisplayedContactGroup.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/DisplayedContactGroup.swift index 064607a3..971291d1 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/DisplayedContactGroup.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ContactGroup/DisplayedContactGroup.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,7 +23,9 @@ import CoreData import OlvidUtils import ObvTypes import OSLog -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvSettings + @objc(DisplayedContactGroup) public final class DisplayedContactGroup: NSManagedObject, ObvErrorMaker, Identifiable, ObvIdentifiableManagedObject { @@ -94,6 +96,7 @@ public final class DisplayedContactGroup: NSManagedObject, ObvErrorMaker, Identi } public var displayedImage: UIImage? { + guard !isDeleted else { return nil } guard let photoURL = self.photoURL else { return nil } guard FileManager.default.fileExists(atPath: photoURL.path) else { assertionFailure(); return nil } return UIImage(contentsOfFile: photoURL.path) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/PersistedObvContactDevice.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Devices/PersistedObvContactDevice.swift similarity index 55% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/PersistedObvContactDevice.swift rename to Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Devices/PersistedObvContactDevice.swift index 7b5939e8..e55c3062 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/PersistedObvContactDevice.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Devices/PersistedObvContactDevice.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -37,7 +37,8 @@ public final class PersistedObvContactDevice: NSManagedObject, Identifiable, Obv @NSManaged public private(set) var identifier: Data @NSManaged private var rawIdentityIdentity: Data // Required for core data constraints @NSManaged private var rawOwnedIdentityIdentity: Data // Required for core data constraints - + @NSManaged private var rawSecureChannelStatus: Int + // MARK: Relationships // If nil, the following entity is eventually cascade-deleted @@ -45,6 +46,8 @@ public final class PersistedObvContactDevice: NSManagedObject, Identifiable, Obv // MARK: Other variables + private var changedKeys = Set() + public private(set) var identity: PersistedObvContactIdentity? { get { return self.rawIdentity @@ -59,33 +62,86 @@ public final class PersistedObvContactDevice: NSManagedObject, Identifiable, Obv } + public var contactIdentifier: ObvContactIdentifier { + get throws { + let ownedCryptoId = try ObvCryptoId(identity: rawOwnedIdentityIdentity) + let contactCryptoId = try ObvCryptoId(identity: rawIdentityIdentity) + return ObvContactIdentifier( + contactCryptoId: contactCryptoId, + ownedCryptoId: ownedCryptoId) + } + } + + + public enum SecureChannelStatus: Int { + case creationInProgress = 0 + case created = 1 + + init(_ status: ObvContactDevice.SecureChannelStatus) { + switch status { + case .creationInProgress: + self = .creationInProgress + case .created: + self = .created + } + } + } + + + // Expected to be non-nil + public private(set) var secureChannelStatus: SecureChannelStatus? { + get { + return SecureChannelStatus(rawValue: rawSecureChannelStatus) + } + set { + guard let newValue else { assertionFailure(); return } + self.rawSecureChannelStatus = newValue.rawValue + } + } + + // MARK: - Initializer /// Shall **only** be called from the ``func insert(_ device: ObvContactDevice) throws`` method of a `PersistedObvContactIdentity`. - convenience init(obvContactDevice device: ObvContactDevice, within context: NSManagedObjectContext) throws { + convenience init(obvContactDevice device: ObvContactDevice, persistedContact: PersistedObvContactIdentity) throws { + + guard let context = persistedContact.managedObjectContext else { + throw ObvError.couldNotFindContext + } let entityDescription = NSEntityDescription.entity(forEntityName: PersistedObvContactDevice.entityName, in: context)! self.init(entity: entityDescription, insertInto: context) - let persistedContact: PersistedObvContactIdentity - if let _identity = try PersistedObvContactIdentity.get(persisted: device.contactIdentity, whereOneToOneStatusIs: .any, within: context) { - persistedContact = _identity - } else { - let _identity = try PersistedObvContactIdentity(contactIdentity: device.contactIdentity, within: context) - persistedContact = _identity - } - self.identifier = device.identifier - self.rawIdentityIdentity = device.contactIdentity.cryptoId.getIdentity() - self.rawOwnedIdentityIdentity = device.contactIdentity.ownedIdentity.cryptoId.getIdentity() + self.rawIdentityIdentity = device.contactIdentifier.contactCryptoId.getIdentity() + self.rawOwnedIdentityIdentity = device.contactIdentifier.ownedCryptoId.getIdentity() self.identity = persistedContact + self.secureChannelStatus = SecureChannelStatus(device.secureChannelStatus) } + + + func updateWith(obvContactDevice device: ObvContactDevice) throws { + guard try self.identity?.obvContactIdentifier == device.contactIdentifier, self.identifier == device.identifier else { + assertionFailure() + throw Self.makeError(message: "Unexpected device identifier") + } + if self.secureChannelStatus != SecureChannelStatus(device.secureChannelStatus) { + self.secureChannelStatus = SecureChannelStatus(device.secureChannelStatus) + } + } // MARK: - For deletion private var contactIdentityCryptoIdForDeletion: ObvCryptoId? + func deleteThisDevice() throws { + guard let context = managedObjectContext else { + throw Self.makeError(message: "Could not find context") + } + context.delete(self) + } + } @@ -99,6 +155,7 @@ extension PersistedObvContactDevice { case identifier = "identifier" case rawIdentityIdentity = "rawIdentityIdentity" case rawOwnedIdentityIdentity = "rawOwnedIdentityIdentity" + case rawSecureChannelStatus = "rawSecureChannelStatus" // Relationships case rawIdentity = "rawIdentity" } @@ -118,23 +175,7 @@ extension PersistedObvContactDevice { return NSFetchRequest(entityName: self.entityName) } - - public static func delete(contactDeviceIdentifier: Data, contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws { - - let request: NSFetchRequest = self.fetchRequest() - request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withContactDeviceIdentifier(contactDeviceIdentifier), - Predicate.withContactCryptoId(contactCryptoId), - Predicate.withOwnedCryptoId(ownedCryptoId), - ]) - request.fetchLimit = 1 - guard let object = try context.fetch(request).first else { return } - assert(object.identity != nil) - object.contactIdentityCryptoIdForDeletion = object.identity?.cryptoId - context.delete(object) - } - public static func get(contactDeviceObjectID: NSManagedObjectID, within context: NSManagedObjectContext) throws -> PersistedObvContactDevice? { return try context.existingObject(with: contactDeviceObjectID) as? PersistedObvContactDevice } @@ -146,9 +187,26 @@ extension PersistedObvContactDevice { extension PersistedObvContactDevice { + public override func prepareForDeletion() { + super.prepareForDeletion() + guard managedObjectContext?.concurrencyType != .mainQueueConcurrencyType else { return } + self.contactIdentityCryptoIdForDeletion = rawIdentity?.cryptoId + } + + + public override func willSave() { + super.willSave() + changedKeys = Set(self.changedValues().keys) + } + + public override func didSave() { super.didSave() + defer { + changedKeys.removeAll() + } + if isInserted, let contactCryptoId = self.identity?.cryptoId { ObvMessengerCoreDataNotification.newPersistedObvContactDevice(contactDeviceObjectID: self.objectID, contactCryptoId: contactCryptoId) @@ -160,6 +218,34 @@ extension PersistedObvContactDevice { .postOnDispatchQueue() } + + if !isDeleted && changedKeys.contains(Predicate.Key.rawSecureChannelStatus.rawValue), let secureChannelStatus { + switch secureChannelStatus { + case .creationInProgress: + break + case .created: + ObvMessengerCoreDataNotification.aSecureChannelWithContactDeviceWasJustCreated(contactDeviceObjectID: self.typedObjectID) + .postOnDispatchQueue() + } + } + } + +} + + +// MARK: - Errors + +extension PersistedObvContactDevice { + + enum ObvError: Error { + case couldNotFindContext + + var localizedDescription: String { + switch self { + case .couldNotFindContext: + return "Could not find context" + } + } } } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Devices/PersistedObvOwnedDevice.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Devices/PersistedObvOwnedDevice.swift new file mode 100644 index 00000000..2d229232 --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Devices/PersistedObvOwnedDevice.swift @@ -0,0 +1,290 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import ObvTypes +import ObvEngine +import OlvidUtils + + +@objc(PersistedObvOwnedDevice) +public final class PersistedObvOwnedDevice: NSManagedObject, Identifiable { + + // MARK: - Internal constants + + private static let entityName = "PersistedObvOwnedDevice" + + // MARK: Properties + + @NSManaged public private(set) var expirationDate: Date? + @NSManaged public private(set) var identifier: Data // Required for core data constraints + @NSManaged public private(set) var latestRegistrationDate: Date? + @NSManaged private(set) var objectInsertionDate: Date + @NSManaged private(set) var rawOwnedIdentityIdentity: Data // Required for core data constraints + @NSManaged private(set) var rawSecureChannelStatus: Int + @NSManaged private var specifiedName: String? + + // MARK: Relationships + + // If nil, the following entity is eventually cascade-deleted + @NSManaged private var rawOwnedIdentity: PersistedObvOwnedIdentity? // *Never* accessed directly, except from ``PersistedObvOwnedDevice.getter:ownedIdentity`` + + // MARK: Other variables + + public var name: String { + specifiedName ?? String(identifier.hexString().prefix(4)) + } + + public var ownedCryptoId: ObvCryptoId { + get throws { + try ObvCryptoId(identity: rawOwnedIdentityIdentity) + } + } + + public private(set) var ownedIdentity: PersistedObvOwnedIdentity? { + get { + return self.rawOwnedIdentity + } + set { + assert(newValue != nil) + guard let newValue else { assertionFailure(); return } + self.rawOwnedIdentityIdentity = newValue.cryptoId.getIdentity() + self.rawOwnedIdentity = newValue + } + } + + public enum SecureChannelStatus: Int { + case currentDevice = 0 + case creationInProgress = 1 + case created = 2 + + init(_ status: ObvOwnedDevice.SecureChannelStatus) { + switch status { + case .currentDevice: + self = .currentDevice + case .creationInProgress: + self = .creationInProgress + case .created: + self = .created + } + } + } + + // Expected to be non-nil + public private(set) var secureChannelStatus: SecureChannelStatus? { + get { + return SecureChannelStatus(rawValue: rawSecureChannelStatus) + } + set { + guard let newValue else { assertionFailure(); return } + self.rawSecureChannelStatus = newValue.rawValue + } + } + + + // MARK: - Initializer + + private convenience init(identifier: Data, secureChannelStatus: SecureChannelStatus, name: String?, expirationDate: Date?, latestRegistrationDate: Date?, ownedIdentity: PersistedObvOwnedIdentity) throws { + + guard let context = ownedIdentity.managedObjectContext else { + assertionFailure() + throw ObvError.noContextProvided + } + + let entityDescription = NSEntityDescription.entity(forEntityName: PersistedObvOwnedDevice.entityName, in: context)! + self.init(entity: entityDescription, insertInto: context) + + self.identifier = identifier + self.ownedIdentity = ownedIdentity + self.secureChannelStatus = secureChannelStatus + self.objectInsertionDate = Date() + self.specifiedName = name + self.expirationDate = expirationDate + self.latestRegistrationDate = latestRegistrationDate + + } + + + /// Shall **only** be called from ``PersistedObvOwnedIdentity.updateOrCreateOwnedDevice(identifier:secureChannelStatus:)`` + static func createIfRequired(obvOwnedDevice: ObvOwnedDevice, ownedIdentity: PersistedObvOwnedIdentity) throws { + + guard let context = ownedIdentity.managedObjectContext else { assertionFailure(); throw ObvError.noContextProvided } + guard obvOwnedDevice.ownedCryptoId == ownedIdentity.cryptoId else { assertionFailure(); throw ObvError.unexpectedOwnedCryptoId } + + guard try Self.fetchPersistedObvOwnedDevice(obvOwnedDevice: obvOwnedDevice, within: context) == nil else { return } + + _ = try self.init( + identifier: obvOwnedDevice.identifier, + secureChannelStatus: SecureChannelStatus(obvOwnedDevice.secureChannelStatus), + name: obvOwnedDevice.name, + expirationDate: obvOwnedDevice.expirationDate, + latestRegistrationDate: obvOwnedDevice.latestRegistrationDate, + ownedIdentity: ownedIdentity) + } + + + func updatePersistedObvOwnedDevice(with obvOwnedDevice: ObvOwnedDevice) throws { + + guard let ownedIdentity else { assertionFailure(); throw ObvError.ownedIdentityIsNil } + guard obvOwnedDevice.ownedCryptoId == ownedIdentity.cryptoId else { assertionFailure(); throw ObvError.unexpectedOwnedCryptoId } + guard obvOwnedDevice.identifier == identifier else { assertionFailure(); throw ObvError.unexpectedIdentifier } + + if self.secureChannelStatus != SecureChannelStatus(obvOwnedDevice.secureChannelStatus) { + self.secureChannelStatus = SecureChannelStatus(obvOwnedDevice.secureChannelStatus) + } + + if self.specifiedName != obvOwnedDevice.name { + self.specifiedName = obvOwnedDevice.name + } + + if self.expirationDate != obvOwnedDevice.expirationDate { + self.expirationDate = obvOwnedDevice.expirationDate + } + + if self.latestRegistrationDate != obvOwnedDevice.latestRegistrationDate { + self.latestRegistrationDate = obvOwnedDevice.latestRegistrationDate + } + + } + + + private static func secureChannelStatus(from secureChannelStatus: ObvOwnedDevice.SecureChannelStatus) -> SecureChannelStatus { + switch secureChannelStatus { + case .currentDevice: + return .currentDevice + case .creationInProgress: + return .creationInProgress + case .created: + return .created + } + } + + + func deletePersistedObvOwnedDevice() throws { + guard let context = self.managedObjectContext else { + throw ObvError.noContextProvided + } + context.delete(self) + } + +} + + +// MARK: - Convenience DB getters + +extension PersistedObvOwnedDevice { + + struct Predicate { + enum Key: String { + // Properties + case identifier = "identifier" + case rawOwnedIdentityIdentity = "rawOwnedIdentityIdentity" + case specifiedName = "specifiedName" + case rawSecureChannelStatus = "rawSecureChannelStatus" + // Relationships + case rawOwnedIdentity = "rawOwnedIdentity" + } + static func withIdentifier(_ identifier: Data) -> NSPredicate { + NSPredicate(Key.identifier, EqualToData: identifier) + } + static func withOwnedCryptoId(_ ownedCryptoId: ObvCryptoId) -> NSPredicate { + NSPredicate(Key.rawOwnedIdentityIdentity, EqualToData: ownedCryptoId.getIdentity()) + } + static var withoutSpecifiedName: NSPredicate { + NSPredicate(withNilValueForKey: Key.specifiedName) + } + static func withSecureChannelStatus(_ secureChannelStatus: SecureChannelStatus) -> NSPredicate { + NSPredicate(Key.rawSecureChannelStatus, EqualToInt: secureChannelStatus.rawValue) + } + } + + + @nonobjc class func fetchRequest() -> NSFetchRequest { + return NSFetchRequest(entityName: self.entityName) + } + + + public static func delete(identifier: Data, ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws { + guard let ownedDevice = try Self.fetchPersistedObvOwnedDevice(identifier: identifier, ownedCryptoId: ownedCryptoId, within: context) else { return } + try ownedDevice.deletePersistedObvOwnedDevice() + } + + + public static func fetchPersistedObvOwnedDevice(identifier: Data, ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws -> PersistedObvOwnedDevice? { + let request: NSFetchRequest = self.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withIdentifier(identifier), + Predicate.withOwnedCryptoId(ownedCryptoId), + ]) + request.fetchLimit = 1 + return try context.fetch(request).first + } + + + static func fetchPersistedObvOwnedDevice(obvOwnedDevice: ObvOwnedDevice, within context: NSManagedObjectContext) throws -> PersistedObvOwnedDevice? { + let request: NSFetchRequest = self.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withIdentifier(obvOwnedDevice.identifier), + Predicate.withOwnedCryptoId(obvOwnedDevice.ownedCryptoId), + ]) + request.fetchLimit = 1 + return try context.fetch(request).first + } + + + public static func fetchCurrentPersistedObvOwnedDeviceWithNoSpecifiedName(within context: NSManagedObjectContext) throws -> [PersistedObvOwnedDevice] { + let request: NSFetchRequest = self.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withoutSpecifiedName, + Predicate.withSecureChannelStatus(.currentDevice), + ]) + request.fetchBatchSize = 500 + return try context.fetch(request) + } + +} + + +// MARK: - Error handling + +extension PersistedObvOwnedDevice { + + enum ObvError: Error { + case noContextProvided + case unexpectedOwnedCryptoId + case unexpectedIdentifier + case ownedIdentityIsNil + + var localizedDescription: String { + switch self { + case .noContextProvided: + return "No context provided" + case .unexpectedOwnedCryptoId: + return "Unexpected owned cryptoId" + case .unexpectedIdentifier: + return "Unexpected owned device identifier" + case .ownedIdentityIsNil: + return "Owned identity is nil" + } + } + + } +} + diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/DraftFyleJoin/FyleJoin.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/DraftFyleJoin/FyleJoin.swift index 19178549..3a85ea85 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/DraftFyleJoin/FyleJoin.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/DraftFyleJoin/FyleJoin.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -18,10 +18,12 @@ */ import Foundation +import UniformTypeIdentifiers public protocol FyleJoin { var fyle: Fyle? { get } var fileName: String { get } var uti: String { get } + var contentType: UTType { get } var index: Int { get } } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/DraftFyleJoin/PersistedDraftFyleJoin.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/DraftFyleJoin/PersistedDraftFyleJoin.swift index bcfdf3be..bf2c6a7a 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/DraftFyleJoin/PersistedDraftFyleJoin.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/DraftFyleJoin/PersistedDraftFyleJoin.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,6 +20,7 @@ import Foundation import CoreData import OlvidUtils +import UniformTypeIdentifiers @objc(PersistedDraftFyleJoin) public final class PersistedDraftFyleJoin: NSManagedObject, FyleJoin, ObvIdentifiableManagedObject, ObvErrorMaker { @@ -38,13 +39,18 @@ public final class PersistedDraftFyleJoin: NSManagedObject, FyleJoin, ObvIdentif @NSManaged public private(set) var draft: PersistedDraft? // If nil, this entity is eventually cascade-deleted @NSManaged private(set) public var fyle: Fyle? // If nil, this entity is eventually cascade-deleted - + // MARK: Computed properties - + public var objectPermanentID: ObvManagedObjectPermanentID { ObvManagedObjectPermanentID(uuid: self.permanentUUID) } - + + public var contentType: UTType { + assert(UTType(uti) != nil) + return UTType(uti) ?? .data + } + } @@ -169,7 +175,7 @@ extension PersistedDraftFyleJoin { } - public static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { + static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { let request: NSFetchRequest = PersistedDraftFyleJoin.fetchRequest() request.predicate = Predicate.withoutDraft let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Fyle.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Fyle.swift index e1d26066..893c1915 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Fyle.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Fyle.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,13 +20,17 @@ import Foundation import CoreData import os.log -import ObvEngine +import ObvTypes import OlvidUtils +import ObvCrypto +import ObvSettings + @objc(Fyle) public final class Fyle: NSManagedObject { private static let entityName = "Fyle" + private static let log = OSLog(subsystem: ObvUICoreDataConstants.logSubsystem, category: "Fyle") // MARK: - Properties @@ -41,7 +45,7 @@ public final class Fyle: NSManagedObject { // MARK: - Initializer - public convenience init?(sha256: Data, within context: NSManagedObjectContext) { + private convenience init(sha256: Data, within context: NSManagedObjectContext) { let entityDescription = NSEntityDescription.entity(forEntityName: Fyle.entityName, in: context)! self.init(entity: entityDescription, insertInto: context) self.sha256 = sha256 @@ -54,13 +58,63 @@ public final class Fyle: NSManagedObject { if let previousFyle = try Fyle.get(sha256: sha256, within: context) { return previousFyle } else { - guard let newFyle = Fyle(sha256: sha256, within: context) else { - throw ObvError.couldNotCreateNewFyleInstance - } + let newFyle = Fyle(sha256: sha256, within: context) return newFyle } } + + func updateFyle(with obvAttachment: ObvAttachment) throws { + try updateFyle(obvAttachmentStatus: obvAttachment.status, + obvAttachmentURL: obvAttachment.url) + } + + + func updateFyle(with obvOwnedAttachment: ObvOwnedAttachment) throws { + try updateFyle(obvAttachmentStatus: obvOwnedAttachment.status, + obvAttachmentURL: obvOwnedAttachment.url) + } + + + private func updateFyle(obvAttachmentStatus: ObvAttachment.Status, obvAttachmentURL: URL) throws { + + // Make sure the file was downloaded and that we do not already have a local (app) version of this file + + guard obvAttachmentStatus == .downloaded && self.getFileSize() == nil else { + os_log("Although the engine indicates that the attachment is downloaded, we could not find the file on disk", log: Self.log, type: .error) + return + } + + // Make sure the file is indeed available at the obvAttachmentURL. + // If this is not the case, we throw. The exception will eventually be processed by the operation (at the app level) and a new download will be requested to the engine. + guard FileManager.default.fileExists(atPath: obvAttachmentURL.path) else { + throw ObvError.couldNotFindSourceFile + } + + // Compute the sha256 of the (complete) file indicated within the obvAttachment and compare it to what was expected + + let realHash: Data + do { + let sha256 = ObvCryptoSuite.sharedInstance.hashFunctionSha256() + realHash = try sha256.hash(fileAtUrl: obvAttachmentURL) + } catch { + throw ObvError.couldNotComputeSHA256 + } + + guard realHash == self.sha256 else { + os_log("OMG, the sha256 of the received file does not match the one we expected. Expecting %{public}@ but the hash of the received file is %{public}@", log: Self.log, type: .error, self.sha256.hexString(), realHash.hexString()) + assertionFailure() + throw ObvError.sha256OfReceivedFileReferenceByObvAttachmentDoesNotMatchWhatWeExpect + } + + // If we reach this point, the sha256 is correct. We move the received file to a permanent location + + try self.moveFileToPermanentURL(from: obvAttachmentURL, logTo: Self.log) + + os_log("We moved a downloaded file to a permanent location", log: Self.log, type: .debug) + + } + } @@ -84,6 +138,7 @@ extension Fyle { ObvUICoreDataConstants.ContainerURL.forFyles.appendingPathComponent(lastPathComponent) } + public func getFileSize() -> Int64? { guard FileManager.default.fileExists(atPath: url.path) else { return nil } guard let fileAttributes = try? FileManager.default.attributesOfItem(atPath: url.path) else { return nil } @@ -168,9 +223,11 @@ extension Fyle { return NSFetchRequest(entityName: Fyle.entityName) } + static func get(objectID: NSManagedObjectID, within context: NSManagedObjectContext) throws -> Fyle? { return try context.existingObject(with: objectID) as? Fyle } + /// Returns a `Fyle` if one can be found for the given sha256. public static func get(sha256: Data, within context: NSManagedObjectContext) throws -> Fyle? { @@ -229,6 +286,8 @@ extension Fyle { public enum ObvError: Error { case couldNotCreateNewFyleInstance case couldNotFindSourceFile + case couldNotComputeSHA256 + case sha256OfReceivedFileReferenceByObvAttachmentDoesNotMatchWhatWeExpect var localizedDescription: String { switch self { @@ -236,6 +295,10 @@ extension Fyle { return "Could not create new Fyle instance" case .couldNotFindSourceFile: return "Could not find the source file" + case .couldNotComputeSHA256: + return "Could not compute the SHA256" + case .sha256OfReceivedFileReferenceByObvAttachmentDoesNotMatchWhatWeExpect: + return "The SHA256 of the received file referenced by the ObvAttachment does not match what we expect" } } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/FyleMessageJoinWithStatus.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/FyleMessageJoinWithStatus.swift index a8730183..f3f4abfd 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/FyleMessageJoinWithStatus.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/FyleMessageJoinWithStatus.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,8 @@ import CoreData import os.log import UIKit import OlvidUtils +import UniformTypeIdentifiers +import ObvSettings @objc(FyleMessageJoinWithStatus) @@ -33,12 +35,13 @@ public class FyleMessageJoinWithStatus: NSManagedObject, ObvErrorMaker, FyleJoin // MARK: - Properties + @NSManaged public private(set) var downsizedThumbnail: Data? @NSManaged private(set) public var fileName: String @NSManaged private(set) public var index: Int // Corresponds to the index of this attachment in the message. Used together with messageSortIndex to sort all joins received in a discussion @NSManaged public private(set) var isWiped: Bool @NSManaged private(set) var messageSortIndex: Double // Equal to the message sortIndex, used to sort FyleMessageJoinWithStatus instances in the gallery @NSManaged private var permanentUUID: UUID - @NSManaged public var rawStatus: Int + @NSManaged public internal(set) var rawStatus: Int @NSManaged public private(set) var totalByteCount: Int64 // Was totalUnitCount @NSManaged private(set) public var uti: String @@ -54,6 +57,11 @@ public class FyleMessageJoinWithStatus: NSManagedObject, ObvErrorMaker, FyleJoin // MARK: - Other variables + public var contentType: UTType { + assert(UTType(uti) != nil) + return UTType(uti) ?? .data + } + public var message: PersistedMessage? { assertionFailure("Must be overriden by subclasses") return nil @@ -74,11 +82,12 @@ public class FyleMessageJoinWithStatus: NSManagedObject, ObvErrorMaker, FyleJoin // MARK: - Initializer - public convenience init(totalByteCount: Int64, fileName: String, uti: String, rawStatus: Int, messageSortIndex: Double, index: Int, fyle: Fyle, forEntityName entityName: String, within context: NSManagedObjectContext) { + convenience init(sha256: Data, totalByteCount: Int64, fileName: String, uti: String, rawStatus: Int, messageSortIndex: Double, index: Int, forEntityName entityName: String, within context: NSManagedObjectContext) throws { let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: context)! self.init(entity: entityDescription, insertInto: context) + self.downsizedThumbnail = nil // Will be received later self.index = index self.fileName = fileName self.uti = uti @@ -87,10 +96,26 @@ public class FyleMessageJoinWithStatus: NSManagedObject, ObvErrorMaker, FyleJoin self.permanentUUID = UUID() self.isWiped = false self.totalByteCount = totalByteCount - - self.fyle = fyle + + try getOrCreateFyle(sha256: sha256) + + } + + func getOrCreateFyle(sha256: Data) throws { + guard let context = self.managedObjectContext else { + throw Self.makeError(message: "Could not find context") + } + self.fyle = try Fyle.getOrCreate(sha256: sha256, within: context) + } + + + /// Shall only be called by one of the subclasses + func setTotalByteCount(to newTotalByteCount: Int64) { + guard self.totalByteCount != newTotalByteCount else { return } + self.totalByteCount = newTotalByteCount + } public func wipe() throws { self.isWiped = true @@ -98,6 +123,7 @@ public class FyleMessageJoinWithStatus: NSManagedObject, ObvErrorMaker, FyleJoin self.fileName = "" self.totalByteCount = 0 self.uti = "" + deleteDownsizedThumbnail() } @@ -112,6 +138,22 @@ public class FyleMessageJoinWithStatus: NSManagedObject, ObvErrorMaker, FyleJoin return dcf }() + + // MARK: - Managing the downsized thumbnail + + func deleteDownsizedThumbnail() { + guard self.downsizedThumbnail != nil else { return } + self.downsizedThumbnail = nil + } + + + /// Exclusively called from ``SentFyleMessageJoinWithStatus.setDownsizedThumbnailIfRequired(data:)`` and from ``ReceivedFyleMessageJoinWithStatus.setDownsizedThumbnailIfRequired(data:)``. + func setDownsizedThumbnailIfRequired(data: Data) -> Bool { + guard self.downsizedThumbnail != data else { return false } + self.downsizedThumbnail = data + return true + } + } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvContactIdentity+Backup.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvContactIdentity+Backup.swift index 17a0607a..6faedf18 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvContactIdentity+Backup.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvContactIdentity+Backup.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -48,8 +48,8 @@ extension PersistedObvContactIdentityBackupItem { func updateExistingInstance(_ contact: PersistedObvContactIdentity) { - try? contact.setCustomDisplayName(to: self.customDisplayName) - contact.setNote(to: self.note) + _ = try? contact.setCustomDisplayName(to: self.customDisplayName) + _ = contact.setNote(to: self.note) if let oneToOneDiscussion = contact.oneToOneDiscussion { self.discussionConfigurationBackupItem?.updateExistingInstance(oneToOneDiscussion.localConfiguration) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvContactIdentity.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvContactIdentity.swift index caf70670..4e1eda1e 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvContactIdentity.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvContactIdentity.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,7 +24,9 @@ import ObvTypes import os.log import OlvidUtils import Platform_Base -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvSettings + @objc(PersistedObvContactIdentity) public final class PersistedObvContactIdentity: NSManagedObject, ObvErrorMaker, ObvIdentifiableManagedObject { @@ -35,17 +37,18 @@ public final class PersistedObvContactIdentity: NSManagedObject, ObvErrorMaker, // MARK: - Attributes + @NSManaged public private(set) var atLeastOneDeviceAllowsThisContactToReceiveMessages: Bool @NSManaged private var capabilityGroupsV2: Bool @NSManaged private var capabilityOneToOneContacts: Bool @NSManaged private var capabilityWebrtcContinuousICE: Bool @NSManaged public private(set) var customDisplayName: String? - @NSManaged public var customPhotoFilename: String? + @NSManaged public private(set) var customPhotoFilename: String? @NSManaged public private(set) var fullDisplayName: String @NSManaged private(set) var identity: Data @NSManaged public private(set) var isActive: Bool @NSManaged public private(set) var isCertifiedByOwnKeycloak: Bool @NSManaged public private(set) var isOneToOne: Bool - @NSManaged private(set) var note: String? + @NSManaged public private(set) var note: String? @NSManaged private var permanentUUID: UUID @NSManaged public private(set) var photoURL: URL? @NSManaged private var rawOwnedIdentityIdentity: Data // Required for core data constraints @@ -155,7 +158,6 @@ public final class PersistedObvContactIdentity: NSManagedObject, ObvErrorMaker, public var oneToOneDiscussion: PersistedOneToOneDiscussion? { if isOneToOne { // In case the contact is OneToOne, we expect the discussion to be non-nil and active. - assert(rawOneToOneDiscussion != nil && rawOneToOneDiscussion?.status == .active) return rawOneToOneDiscussion } else { // In case the contact is not OneToOne, the discussion is likely to be nil. @@ -168,6 +170,13 @@ public final class PersistedObvContactIdentity: NSManagedObject, ObvErrorMaker, } } + + public var obvContactIdentifier: ObvContactIdentifier { + get throws { + let ownedCryptoId = try ObvCryptoId(identity: rawOwnedIdentityIdentity) + return ObvContactIdentifier(contactCryptoId: cryptoId, ownedCryptoId: ownedCryptoId) + } + } public var customPhotoURL: URL? { guard let customPhotoFilename = customPhotoFilename else { return nil } @@ -196,11 +205,11 @@ public final class PersistedObvContactIdentity: NSManagedObject, ObvErrorMaker, return identityCoreDetails?.firstName } - var firstName: String? { + public var firstName: String? { return identityCoreDetails?.firstName } - var lastName: String? { + public var lastName: String? { return identityCoreDetails?.lastName } @@ -226,7 +235,7 @@ public final class PersistedObvContactIdentity: NSManagedObject, ObvErrorMaker, public var circledInitialsConfiguration: CircledInitialsConfiguration { .contact(initial: customOrFullDisplayName, - photoURL: customPhotoURL ?? photoURL, + photo: .url(url: customPhotoURL ?? photoURL), showGreenShield: isCertifiedByOwnKeycloak, showRedShield: !isActive, cryptoId: cryptoId, @@ -236,6 +245,46 @@ public final class PersistedObvContactIdentity: NSManagedObject, ObvErrorMaker, public func setCustomPhotoURL(with url: URL?) { guard url != self.customPhotoURL else { return } + removeCurrentCustomPhoto() + if let url = url { + assert(url.deletingLastPathComponent() == ObvUICoreDataConstants.ContainerURL.forCustomContactProfilePictures.url) + self.customPhotoFilename = url.lastPathComponent + } else { + self.customPhotoFilename = nil + } + } + + + public func setCustomPhoto(with newCustomPhoto: UIImage?) throws { + removeCurrentCustomPhoto() + if let newCustomPhoto { + guard let url = saveCustomPhoto(newCustomPhoto) else { + throw Self.makeError(message: "Could not save photo") + } + setCustomPhotoURL(with: url) + } + } + + + private func saveCustomPhoto(_ image: UIImage) -> URL? { + guard let jpegData = image.jpegData(compressionQuality: 0.75) else { + assertionFailure() + return nil + } + let filename = [UUID().uuidString, "jpeg"].joined(separator: ".") + let filepath = ObvUICoreDataConstants.ContainerURL.forCustomContactProfilePictures.url.appendingPathComponent(filename) + do { + try jpegData.write(to: filepath) + } catch { + assertionFailure() + return nil + } + return filepath + } + + + + private func removeCurrentCustomPhoto() { if let currentCustomPhotoURL = self.customPhotoURL { do { try FileManager.default.removeItem(at: currentCustomPhotoURL) @@ -246,12 +295,6 @@ public final class PersistedObvContactIdentity: NSManagedObject, ObvErrorMaker, return } } - if let url = url { - assert(url.deletingLastPathComponent() == ObvUICoreDataConstants.ContainerURL.forCustomContactProfilePictures.url) - self.customPhotoFilename = url.lastPathComponent - } else { - self.customPhotoFilename = nil - } } @@ -271,7 +314,7 @@ public final class PersistedObvContactIdentity: NSManagedObject, ObvErrorMaker, extension PersistedObvContactIdentity { - public convenience init(contactIdentity: ObvContactIdentity, within context: NSManagedObjectContext) throws { + private convenience init(contactIdentity: ObvContactIdentity, within context: NSManagedObjectContext) throws { let entityDescription = NSEntityDescription.entity(forEntityName: PersistedObvContactIdentity.entityName, in: context)! self.init(entity: entityDescription, insertInto: context) guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: contactIdentity.ownedIdentity, within: context) else { @@ -285,6 +328,7 @@ extension PersistedObvContactIdentity { self.serializedIdentityCoreDetails = try contactIdentity.trustedIdentityDetails.coreDetails.jsonEncode() self.identity = contactIdentity.cryptoId.getIdentity() self.isActive = true + self.atLeastOneDeviceAllowsThisContactToReceiveMessages = false self.isOneToOne = contactIdentity.isOneToOne self.isCertifiedByOwnKeycloak = contactIdentity.isCertifiedByOwnKeycloak self.note = nil @@ -301,7 +345,7 @@ extension PersistedObvContactIdentity { try discussion.setStatus(to: .active) self.rawOneToOneDiscussion = discussion } else { - self.rawOneToOneDiscussion = try PersistedOneToOneDiscussion(contactIdentity: self, status: .active) + self.rawOneToOneDiscussion = try PersistedOneToOneDiscussion.createPersistedOneToOneDiscussion(for: self, status: .active) } } else { if let discussion = try PersistedOneToOneDiscussion.getWithContactCryptoId(contactIdentity.cryptoId, ofOwnedCryptoId: contactIdentity.ownedIdentity.cryptoId, within: context) { @@ -325,6 +369,12 @@ extension PersistedObvContactIdentity { } + public static func createPersistedObvContactIdentity(contactIdentity: ObvContactIdentity, within context: NSManagedObjectContext) throws -> PersistedObvContactIdentity { + let contact = try PersistedObvContactIdentity(contactIdentity: contactIdentity, within: context) + return contact + } + + public func deleteAndLockOneToOneDiscussion() throws { guard let context = self.managedObjectContext else { throw PersistedObvContactIdentity.makeError(message: "No context found") } @@ -374,6 +424,19 @@ extension PersistedObvContactIdentity { self.serializedIdentityCoreDetails = newSerializedIdentityCoreDetails } self.updatePhotoURL(with: contactIdentity.trustedIdentityDetails.photoURL) + // Status + if let publishedIdentityDetails = contactIdentity.publishedIdentityDetails, + publishedIdentityDetails != contactIdentity.trustedIdentityDetails { + switch status { + case .noNewPublishedDetails: + setContactStatus(to: .unseenPublishedDetails) + case .unseenPublishedDetails, .seenPublishedDetails: + break // Don't change the status + } + } else { + setContactStatus(to: .noNewPublishedDetails) + } + // The rest let newFullDisplayName = newCoreDetails.getDisplayNameWithStyle(.full) if self.fullDisplayName != newFullDisplayName { self.fullDisplayName = newFullDisplayName @@ -397,7 +460,7 @@ extension PersistedObvContactIdentity { self.rawOneToOneDiscussion = discussion } } else { - self.rawOneToOneDiscussion = try PersistedOneToOneDiscussion(contactIdentity: self, status: .active) + self.rawOneToOneDiscussion = try PersistedOneToOneDiscussion.createPersistedOneToOneDiscussion(for: self, status: .active) } } else { try self.rawOneToOneDiscussion?.setStatus(to: .locked) @@ -408,7 +471,9 @@ extension PersistedObvContactIdentity { public func markAsCertifiedByOwnKeycloak() { - isCertifiedByOwnKeycloak = true + if !isCertifiedByOwnKeycloak { + isCertifiedByOwnKeycloak = true + } } public func updatePhotoURL(with url: URL?) { @@ -417,22 +482,43 @@ extension PersistedObvContactIdentity { } } - public func setCustomDisplayName(to displayName: String?) throws { + + /// Set the custom display name (or nickname) of this contact + /// - Parameter displayName: The new display name + /// - Returns: `true` if the display name had to be updated (i.e., the previous one was disctinct from the new one) and `false` otherwise. + public func setCustomDisplayName(to displayName: String?) throws -> Bool { + let customDisplayNameWasUpdated: Bool if let newCustomDisplayName = displayName, !newCustomDisplayName.isEmpty { if self.customDisplayName != newCustomDisplayName { self.customDisplayName = newCustomDisplayName + customDisplayNameWasUpdated = true + } else { + customDisplayNameWasUpdated = false } } else { if self.customDisplayName != nil { self.customDisplayName = nil + customDisplayNameWasUpdated = true + } else { + customDisplayNameWasUpdated = false } } - try self.oneToOneDiscussion?.resetTitle(to: self.customDisplayName ?? self.fullDisplayName) - self.updateSortOrder(with: ObvMessengerSettings.Interface.contactsSortOrder) + if customDisplayNameWasUpdated { + try self.oneToOneDiscussion?.resetTitle(to: self.customDisplayName ?? self.fullDisplayName) + self.updateSortOrder(with: ObvMessengerSettings.Interface.contactsSortOrder) + } + return customDisplayNameWasUpdated } - func setNote(to newNote: String?) { - self.note = newNote + + /// Returns `true` iff the personal note had to be updated in database + func setNote(to newNote: String?) -> Bool { + if self.note != newNote { + self.note = newNote + return true + } else { + return false + } } } @@ -441,15 +527,69 @@ extension PersistedObvContactIdentity { extension PersistedObvContactIdentity { - public func insert(_ device: ObvContactDevice) throws { - guard let context = self.managedObjectContext else { - throw Self.makeError(message: "Could not find context") + public func synchronizeDevices(with devicesFromEngine: Set) throws { + + // Make sure all devices belong to this contact + + if !devicesFromEngine.isEmpty { + let obvContactIdentifier = try self.obvContactIdentifier + let contactIdentifiersReferencedByDevices = Set(devicesFromEngine.map({ $0.contactIdentifier })) + guard contactIdentifiersReferencedByDevices.count == 1 && contactIdentifiersReferencedByDevices.first == obvContactIdentifier else { + assertionFailure() + throw Self.makeError(message: "Unexpected contact identifier in the set of devices") + } + } + + // Update existing devices + + let localContactDevicesIdentifiers = Set(devices.map { $0.identifier }) + let engineContactDeviceIdentifiers = devicesFromEngine.map { $0.identifier } + + let identifiersOfDeviceToUpdate = localContactDevicesIdentifiers.intersection(engineContactDeviceIdentifiers) + for indentifierOfDeviceToUpdated in identifiersOfDeviceToUpdate { + guard let device = self.devices.first(where: { $0.identifier == indentifierOfDeviceToUpdated }) else { assertionFailure(); continue } + guard let deviceFromEngine = devicesFromEngine.first(where: { $0.identifier == indentifierOfDeviceToUpdated }) else { assertionFailure(); continue } + try device.updateWith(obvContactDevice: deviceFromEngine) + } + + // Add missing devices + + let missingDevices = devicesFromEngine.filter { !localContactDevicesIdentifiers.contains($0.identifier) } + for missingDevice in missingDevices { + try self.insertDevice(missingDevice) + } + + // Delete obsolete devices + + let devicesToDelete = self.devices.filter { device in + return !engineContactDeviceIdentifiers.contains(where: { $0 == device.identifier }) } - guard device.contactIdentity.cryptoId == self.cryptoId, device.contactIdentity.ownedIdentity.cryptoId.getIdentity() == self.rawOwnedIdentityIdentity else { + try devicesToDelete.forEach { deviceToDelete in + try deviceToDelete.deleteThisDevice() + } + + // Update the atLeastOneDeviceAllowsThisContactToReceiveMessages Boolean + + resetValueOfAtLeastOneDeviceAllowsThisContactToReceiveMessages() + + } + + + private func resetValueOfAtLeastOneDeviceAllowsThisContactToReceiveMessages() { + let newValue = !devices.filter({ !$0.isDeleted }).filter({ $0.secureChannelStatus == .created }).isEmpty + if self.atLeastOneDeviceAllowsThisContactToReceiveMessages != newValue { + self.atLeastOneDeviceAllowsThisContactToReceiveMessages = newValue + } + } + + + private func insertDevice(_ device: ObvContactDevice) throws { + guard device.contactIdentifier.contactCryptoId == self.cryptoId, + device.contactIdentifier.ownedCryptoId.getIdentity() == self.rawOwnedIdentityIdentity else { throw Self.makeError(message: "Unexpected contact identity") } let knownDeviceIdentifiers: Set = Set(self.devices.compactMap { $0.identifier }) if !knownDeviceIdentifiers.contains(device.identifier) { - _ = try PersistedObvContactDevice(obvContactDevice: device, within: context) + _ = try PersistedObvContactDevice(obvContactDevice: device, persistedContact: self) } } @@ -503,6 +643,607 @@ extension PersistedObvContactIdentity { } +// MARK: - Receiving messages and attachments from a contact + +extension PersistedObvContactIdentity { + + /// When receiving an `ObvMessage`, we fetch the persisted contact indicated in the message and then call this method to create the `PersistedMessageReceived`. + /// Returns all the `ObvAttachment` that are fully received, i.e., such that the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + func createOrOverridePersistedMessageReceived(obvMessage: ObvMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?, overridePreviousPersistedMessage: Bool) throws -> (discussionPermanentID: DiscussionPermanentID, attachmentFullyReceivedOrCancelledByServer: [ObvAttachment]) { + + guard try obvMessage.fromContactIdentity == self.obvContactIdentifier else { + throw ObvUICoreDataError.unexpectedFromContactIdentity + } + + // Determine the discussion or the group where the new PersistedMessageReceived should be inserted + + let attachmentsFullyReceivedOrCancelledByServer: [ObvAttachment] + let discussionPermanentId: DiscussionPermanentID + + if let oneToOneIdentifier = messageJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + (discussionPermanentId, attachmentsFullyReceivedOrCancelledByServer) = try oneToneDiscussion.createOrOverridePersistedMessageReceived( + from: self, + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + overridePreviousPersistedMessage: overridePreviousPersistedMessage) + + } else if let groupIdentifier = messageJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + (discussionPermanentId, attachmentsFullyReceivedOrCancelledByServer) = try group.createOrOverridePersistedMessageReceived( + from: self, + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + overridePreviousPersistedMessage: overridePreviousPersistedMessage) + + case .v2(group: let group): + + (discussionPermanentId, attachmentsFullyReceivedOrCancelledByServer) = try group.createOrOverridePersistedMessageReceived( + from: self, + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + overridePreviousPersistedMessage: overridePreviousPersistedMessage) + + } + + } else { + + let oneToneDiscussion = try fetchOneToOneDiscussionLegacy() + (discussionPermanentId, attachmentsFullyReceivedOrCancelledByServer) = try oneToneDiscussion.createOrOverridePersistedMessageReceived( + from: self, + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + overridePreviousPersistedMessage: overridePreviousPersistedMessage) + + } + + return (discussionPermanentId, attachmentsFullyReceivedOrCancelledByServer) + + } + + + /// Returns `true` if the attachment is fully received, i.e., if the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + /// Also returns `true` if the attachment was cancelled by the server. + public func process(obvAttachment: ObvAttachment) throws -> Bool { + + guard try obvAttachment.fromContactIdentity == self.obvContactIdentifier else { + throw ObvUICoreDataError.unexpectedFromContactIdentity + } + + guard let receivedMessage = try PersistedMessageReceived.get(messageIdentifierFromEngine: obvAttachment.messageIdentifier, from: self) else { + throw ObvUICoreDataError.couldNotFindPersistedMessageReceived + } + + let attachmentFullyReceivedOrCancelledByServer = try receivedMessage.processObvAttachment(obvAttachment) + + return attachmentFullyReceivedOrCancelledByServer + + } + + + /// Returns the OneToOne discussion corresponding to the identifier. This method makes sure the discussion is the one we have with this contact. + private func fetchOneToOneDiscussion(with oneToOneIdentifier: OneToOneIdentifierJSON) throws -> PersistedOneToOneDiscussion { + + guard self.isOneToOne else { + throw ObvUICoreDataError.contactIsNotOneToOne + } + + guard let ownedIdentity else { + throw ObvUICoreDataError.couldNotFindOwnedIdentity + } + + let ownedCryptoId = ownedIdentity.cryptoId + + guard let contactCryptoIdSpecifiedInOneToOneIdentifier = oneToOneIdentifier.getContactIdentity(ownedIdentity: ownedCryptoId) else { + throw ObvUICoreDataError.inconsistentOneToOneDiscussionIdentifier + } + + guard contactCryptoIdSpecifiedInOneToOneIdentifier == self.cryptoId else { + throw ObvUICoreDataError.inconsistentOneToOneDiscussionIdentifier + } + + guard let oneToOneDiscussion = self.oneToOneDiscussion else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return oneToOneDiscussion + + } + + + // Legacy case. Old versions of Olvid don't send the oneToOneIdentifier for OneToOne discussions. + private func fetchOneToOneDiscussionLegacy() throws -> PersistedOneToOneDiscussion { + + guard self.isOneToOne else { + assertionFailure() + throw ObvUICoreDataError.cannotInsertMessageInOneToOneDiscussionFromNonOneToOneContact + } + + + guard let oneToOneDiscussion = self.oneToOneDiscussion else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return oneToOneDiscussion + + } + + + private enum Group { + case v1(group: PersistedContactGroup) + case v2(group: PersistedGroupV2) + } + + + /// Helper method that fetches the group correspongin the ``GroupIdentifier``and that makes sure this contact is part of the group. + private func fetchGroup(with groupIdentifier: GroupIdentifier) throws -> Group { + + guard let ownedIdentity else { + throw ObvUICoreDataError.couldNotFindOwnedIdentity + } + + switch groupIdentifier { + + case .groupV1(groupV1Identifier: let groupV1Identifier): + + guard let group = try PersistedContactGroup.getContactGroup(groupIdentifier: groupV1Identifier, ownedIdentity: ownedIdentity) else { + throw ObvUICoreDataError.couldNotFindGroupV1InDatabase(groupIdentifier: groupV1Identifier) + } + + guard group.contactIdentities.contains(self) || group.ownerIdentity == self.identity else { + assertionFailure() + throw ObvUICoreDataError.contactNeitherGroupOwnerNorPartOfGroupMembers + } + + return .v1(group: group) + + case .groupV2(groupV2Identifier: let groupV2Identifier): + + guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupV2Identifier) else { + throw ObvUICoreDataError.couldNotFindGroupV2InDatabase(groupIdentifier: groupV2Identifier) + } + + guard group.otherMembers.contains(where: { $0.cryptoId == self.cryptoId }) else { + assertionFailure() + throw ObvUICoreDataError.contactIsNotPartOfTheGroup + } + + return .v2(group: group) + + } + + } + + + /// Helper method that fetches the group discussion correspongin the ``GroupIdentifier``and that makes sure this contact is part of the group. + private func fetchGroupDiscussion(with groupIdentifier: GroupIdentifier) throws -> PersistedDiscussion { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + case .v1(group: let group): + + return group.discussion + + case .v2(group: let group): + + guard let discussion = group.discussion else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return discussion + + } + + } + + + /// Called when an extended payload is received. If at least one extended payload was saved for one of the attachments, this method returns the objectID of the message. Otherwise, it returns `nil`. + public func saveExtendedPayload(foundIn attachementImages: [NotificationAttachmentImage], for obvMessage: ObvMessage) throws -> TypeSafeManagedObjectID? { + + guard try obvMessage.fromContactIdentity == self.obvContactIdentifier else { + throw ObvUICoreDataError.unexpectedFromContactIdentity + } + + guard let receivedMessage = try PersistedMessageReceived.get(messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, from: self) else { + throw ObvUICoreDataError.couldNotFindPersistedMessageReceived + } + + let atLeastOneExtendedPayloadCouldBeSaved = try receivedMessage.saveExtendedPayload(foundIn: attachementImages) + + return atLeastOneExtendedPayloadCouldBeSaved ? receivedMessage.typedObjectID : nil + + } + +} + + +// MARK: - Receiving discussion shared configurations + +extension PersistedObvContactIdentity { + + /// Called when receiving a ``DiscussionSharedConfigurationJSON`` from this ``PersistedObvContactIdentity``. + /// + /// This methods fetches the appropriate OneToOne discussion, or the group, where the shared configuration should be merged, and then calls the merge methods on them. + func mergeReceivedDiscussionSharedConfigurationSentByThisContact(discussionSharedConfiguration: DiscussionSharedConfigurationJSON, messageUploadTimestampFromServer: Date) throws -> (discussionId: DiscussionIdentifier, weShouldSendBackOurSharedSettings: Bool) { + + let returnedValues: (discussion: PersistedDiscussion, weShouldSendBackOurSharedSettings: Bool) + let sharedSettingHadToBeUpdated: Bool + + if let oneToOneIdentifier = discussionSharedConfiguration.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + + let (_sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) = try oneToneDiscussion.mergeDiscussionSharedConfiguration( + discussionSharedConfiguration: discussionSharedConfiguration.sharedConfig, + receivedFrom: self) + + sharedSettingHadToBeUpdated = _sharedSettingHadToBeUpdated + returnedValues = (oneToneDiscussion, weShouldSendBackOurSharedSettings) + + } else if let groupIdentifier = discussionSharedConfiguration.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + let (_sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) = try group.mergeReceivedDiscussionSharedConfiguration( + discussionSharedConfiguration: discussionSharedConfiguration.sharedConfig, + receivedFrom: self.cryptoId) + + sharedSettingHadToBeUpdated = _sharedSettingHadToBeUpdated + returnedValues = (group.discussion, weShouldSendBackOurSharedSettings) + + case .v2(group: let group): + + guard let groupDiscussion = group.discussion else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + let (_sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) = try group.mergeReceivedDiscussionSharedConfiguration( + discussionSharedConfiguration: discussionSharedConfiguration.sharedConfig, + receivedFrom: self) + + sharedSettingHadToBeUpdated = _sharedSettingHadToBeUpdated + returnedValues = (groupDiscussion, weShouldSendBackOurSharedSettings) + + } + + } else { + + let oneToneDiscussion = try fetchOneToOneDiscussionLegacy() + let (_sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) = try oneToneDiscussion.mergeDiscussionSharedConfiguration( + discussionSharedConfiguration: discussionSharedConfiguration.sharedConfig, + receivedFrom: self) + + sharedSettingHadToBeUpdated = _sharedSettingHadToBeUpdated + returnedValues = (oneToneDiscussion, weShouldSendBackOurSharedSettings) + + } + + // In all cases, if the shared settings had to be updated, we insert an appropriate message in the discussion + + if sharedSettingHadToBeUpdated { + try returnedValues.discussion.insertSystemMessageIndicatingThatDiscussionSharedConfigurationWasUpdatedByContact( + persistedContact: self, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + } + + // Return values + + return try (returnedValues.discussion.identifier, returnedValues.weShouldSendBackOurSharedSettings) + + } + +} + + +// MARK: - Processing messages wipe requests + +extension PersistedObvContactIdentity { + + public func processWipeMessageRequestFromThisContact(deleteMessagesJSON: DeleteMessagesJSON, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + let messagesToDelete = deleteMessagesJSON.messagesToDelete + + let infos: [InfoAboutWipedOrDeletedPersistedMessage] + + if let oneToOneIdentifier = deleteMessagesJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + infos = try oneToneDiscussion.processWipeMessageRequest(of: messagesToDelete, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } else if let groupIdentifier = deleteMessagesJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + infos = try group.processWipeMessageRequest(of: messagesToDelete, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .v2(group: let group): + + infos = try group.processWipeMessageRequest(of: messagesToDelete, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + } else { + + let oneToneDiscussion = try fetchOneToOneDiscussionLegacy() + infos = try oneToneDiscussion.processWipeMessageRequest(of: messagesToDelete, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + return infos + + } + +} + + +// MARK: - Processing discussion (all messages) wipe requests + +extension PersistedObvContactIdentity { + + public func processThisContactRemoteRequestToWipeAllMessagesWithinDiscussion(deleteDiscussionJSON: DeleteDiscussionJSON, messageUploadTimestampFromServer: Date) throws { + + if let oneToOneIdentifier = deleteDiscussionJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + try oneToneDiscussion.processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } else if let groupIdentifier = deleteDiscussionJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + try group.processRemoteRequestToWipeAllMessagesWithinThisGroupDiscussion(from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .v2(group: let group): + + try group.processRemoteRequestToWipeAllMessagesWithinThisGroupDiscussion(from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + } else { + + let oneToneDiscussion = try fetchOneToOneDiscussionLegacy() + try oneToneDiscussion.processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + } + + + /// When receiving a `DeleteDiscussionJSON` request, we need to request the engine to cancel any processing sent message. This method allows to determine which sent messages are still processing. + public func getObjectIDsOfPersistedMessageSentStillProcessing(deleteDiscussionJSON: DeleteDiscussionJSON) throws -> [TypeSafeManagedObjectID] { + + guard let context = self.managedObjectContext else { + throw ObvUICoreDataError.noContext + } + + let persistedDiscussionObjectID: NSManagedObjectID + + if let oneToOneIdentifier = deleteDiscussionJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + persistedDiscussionObjectID = oneToneDiscussion.objectID + + } else if let groupIdentifier = deleteDiscussionJSON.groupIdentifier { + + let groupDiscussion = try fetchGroupDiscussion(with: groupIdentifier) + persistedDiscussionObjectID = groupDiscussion.objectID + + } else if let oneToOneDiscussion { + + persistedDiscussionObjectID = oneToOneDiscussion.objectID + + } else { + + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + let allProcessingMessageSent = try PersistedMessageSent.getAllProcessingWithinDiscussion(persistedDiscussionObjectID: persistedDiscussionObjectID, within: context) + return allProcessingMessageSent.map { $0.typedObjectID } + + } + +} + + +// MARK: - Processing edit requests + +extension PersistedObvContactIdentity { + + public func processUpdateMessageRequestFromThisContact(updateMessageJSON: UpdateMessageJSON, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + if let oneToOneIdentifier = updateMessageJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + let updatedMessage = try oneToneDiscussion.processUpdateMessageRequest(updateMessageJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } else if let groupIdentifier = updateMessageJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + let updatedMessage = try group.processUpdateMessageRequest(updateMessageJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + case .v2(group: let group): + + let updatedMessage = try group.processUpdateMessageRequest(updateMessageJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + } else { + + let oneToneDiscussion = try fetchOneToOneDiscussionLegacy() + let updatedMessage = try oneToneDiscussion.processUpdateMessageRequest(updateMessageJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + } + +} + + +// MARK: - Process reaction requests + +extension PersistedObvContactIdentity { + + public func processSetOrUpdateReactionOnMessageRequestFromThisContact(reactionJSON: ReactionJSON, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + if let oneToOneIdentifier = reactionJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + let updatedMessage = try oneToneDiscussion.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } else if let groupIdentifier = reactionJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + let updatedMessage = try group.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + case .v2(group: let group): + + let updatedMessage = try group.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + } else { + + let oneToneDiscussion = try fetchOneToOneDiscussionLegacy() + let updatedMessage = try oneToneDiscussion.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + } + +} + + +// MARK: - Process screen capture detections + +extension PersistedObvContactIdentity { + + public func processDetectionThatSensitiveMessagesWereCapturedByThisContact(screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, messageUploadTimestampFromServer: Date) throws { + + if let oneToOneIdentifier = screenCaptureDetectionJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + try oneToneDiscussion.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } else if let groupIdentifier = screenCaptureDetectionJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + try group.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .v2(group: let group): + + try group.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + } else { + + let oneToneDiscussion = try fetchOneToOneDiscussionLegacy() + try oneToneDiscussion.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + } + + + // MARK: - Process requests for discussions shared settings + + /// Returns our groupV2 discussion's shared settings in case we detect that it is pertinent to send them back to this contact + public func processQuerySharedSettingsRequestFromThisContact(querySharedSettingsJSON: QuerySharedSettingsJSON) throws -> (weShouldSendBackOurSharedSettings: Bool, discussionId: DiscussionIdentifier) { + + if let oneToOneIdentifier = querySharedSettingsJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + let discussionId = try oneToneDiscussion.identifier + + let weShouldSendBackOurSharedSettings = try oneToneDiscussion.processQuerySharedSettingsRequest(querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + + } else if let groupIdentifier = querySharedSettingsJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + let (weShouldSendBackOurSharedSettings, discussionId) = try group.processQuerySharedSettingsRequest(from: self, querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + + case .v2(group: let group): + + let (weShouldSendBackOurSharedSettings, discussionId) = try group.processQuerySharedSettingsRequest(from: self, querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + + } + + } else { + + let oneToneDiscussion = try fetchOneToOneDiscussionLegacy() + let discussionId = try oneToneDiscussion.identifier + + let weShouldSendBackOurSharedSettings = try oneToneDiscussion.processQuerySharedSettingsRequest(querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + + } + + } + + +} + + // MARK: - Other functions extension PersistedObvContactIdentity { @@ -513,6 +1254,21 @@ extension PersistedObvContactIdentity { } } + + public func getReceivedMessageIdentifiers(messageIdentifierFromEngine: Data) throws -> (discussionId: DiscussionIdentifier, receivedMessageId: ReceivedMessageIdentifier)? { + + guard let message = try PersistedMessageReceived.get(messageIdentifierFromEngine: messageIdentifierFromEngine, from: self) else { + return nil + } + + guard let discussion = message.discussion else { + return nil + } + + return (try discussion.identifier, message.receivedMessageIdentifier) + + } + } @@ -566,10 +1322,10 @@ extension PersistedObvContactIdentity { static func ofOwnedIdentityWithCryptoId(_ ownedIdentityCryptoId: ObvCryptoId) -> NSPredicate { NSPredicate(Key.ownedIdentityIdentity, EqualToData: ownedIdentityCryptoId.getIdentity()) } - static func correspondingToObvContactIdentity(_ obvContactIdentity: ObvContactIdentity) -> NSPredicate { + static func correspondingToObvContactIdentity(_ obvContactIdentity: ObvContactIdentifier) -> NSPredicate { NSCompoundPredicate(andPredicateWithSubpredicates: [ - withCryptoId(obvContactIdentity.cryptoId), - ofOwnedIdentityWithCryptoId(obvContactIdentity.ownedIdentity.cryptoId), + withCryptoId(obvContactIdentity.contactCryptoId), + ofOwnedIdentityWithCryptoId(obvContactIdentity.ownedCryptoId), ]) } static func excludedContactCryptoIds(excludedIdentities: Set) -> NSPredicate { @@ -650,7 +1406,7 @@ extension PersistedObvContactIdentity { } - public static func get(persisted obvContactIdentity: ObvContactIdentity, whereOneToOneStatusIs oneToOneStatus: OneToOneStatus, within context: NSManagedObjectContext) throws -> PersistedObvContactIdentity? { + public static func get(persisted obvContactIdentity: ObvContactIdentifier, whereOneToOneStatusIs oneToOneStatus: OneToOneStatus, within context: NSManagedObjectContext) throws -> PersistedObvContactIdentity? { let request: NSFetchRequest = PersistedObvContactIdentity.fetchRequest() request.predicate = Predicate.correspondingToObvContactIdentity(obvContactIdentity) request.fetchLimit = 1 @@ -859,9 +1615,15 @@ extension PersistedObvContactIdentity { if isInserted { - ObvMessengerCoreDataNotification.persistedContactWasInserted(contactPermanentID: objectPermanentID) - .postOnDispatchQueue() - + if let ownedCryptoId = self.ownedIdentity?.cryptoId { + let contactCryptoId = self.cryptoId + ObvMessengerCoreDataNotification.persistedContactWasInserted(contactPermanentID: objectPermanentID, ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) + .postOnDispatchQueue() + } else { + assertionFailure() + } + + } else if isDeleted { let notification = ObvMessengerCoreDataNotification.persistedContactWasDeleted(objectID: objectID, identity: identity) @@ -950,3 +1712,84 @@ extension PersistedObvContactIdentity: MentionableIdentity { return .contact(typedObjectID) } } + + +// MARK: - For snapshot purposes + +extension PersistedObvContactIdentity { + + var syncSnapshotNode: PersistedObvContactIdentitySyncSnapshotNode { + .init(customDisplayName: customDisplayName, + note: note, + rawOneToOneDiscussion: rawOneToOneDiscussion) + } + +} + + +struct PersistedObvContactIdentitySyncSnapshotNode: ObvSyncSnapshotNode { + + private let domain: Set + private let customDisplayName: String? + // No custom hue (this only exists under Android) + private let note: String? + private let discussionConfiguration: PersistedDiscussionConfigurationSyncSnapshotNode? + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case customDisplayName = "custom_name" + case note = "personal_note" + case discussionConfiguration = "discussion_customization" + case domain = "domain" + } + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + init(customDisplayName: String?, note: String?, rawOneToOneDiscussion: PersistedOneToOneDiscussion?) { + self.customDisplayName = customDisplayName + self.note = note + self.discussionConfiguration = rawOneToOneDiscussion?.syncSnapshotNode + self.domain = Self.defaultDomain + } + + // Synthesized implementation of encode(to encoder: Encoder) + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.customDisplayName = try values.decodeIfPresent(String.self, forKey: .customDisplayName) + self.note = try values.decodeIfPresent(String.self, forKey: .note) + self.discussionConfiguration = try values.decodeIfPresent(PersistedDiscussionConfigurationSyncSnapshotNode.self, forKey: .discussionConfiguration) + } + + + func useToUpdate(_ contact: PersistedObvContactIdentity) { + + if domain.contains(.customDisplayName) { + _ = try? contact.setCustomDisplayName(to: customDisplayName) + } + + if domain.contains(.note) { + _ = contact.setNote(to: self.note) + } + + if domain.contains(.discussionConfiguration) && contact.isOneToOne { + assert(contact.oneToOneDiscussion != nil) + if let oneToOneDiscussion = contact.oneToOneDiscussion { + discussionConfiguration?.useToUpdate(oneToOneDiscussion) + } + } + + + } + + + enum ObvError: Error { + case couldNotFindContact + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvOwnedIdentity+Backup.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvOwnedIdentity+Backup.swift index 59d06750..b71d692e 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvOwnedIdentity+Backup.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvOwnedIdentity+Backup.swift @@ -50,7 +50,7 @@ public extension PersistedObvOwnedIdentityBackupItem { throw PersistedObvOwnedIdentityBackupItem.makeError(message: "Could not find owned identity corresponding to backup item") } ownedIdentity.isBeingRestoredFromBackup = true - ownedIdentity.setOwnedCustomDisplayName(to: customDisplayName) + _ = ownedIdentity.setOwnedCustomDisplayName(to: customDisplayName) if let hiddenProfileHash, let hiddenProfileSalt { ownedIdentity.setHiddenProfileHashAndSaltDuringBackupRestore(hash: hiddenProfileHash, salt: hiddenProfileSalt) } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvOwnedIdentity.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvOwnedIdentity.swift index 898d9063..a07dc5fd 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvOwnedIdentity.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/Identities/PersistedObvOwnedIdentity.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,7 +24,11 @@ import ObvEngine import os.log import OlvidUtils import ObvCrypto -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvSettings +import ObvEncoder +import Contacts + @objc(PersistedObvOwnedIdentity) public final class PersistedObvOwnedIdentity: NSManagedObject, Identifiable, ObvErrorMaker, ObvIdentifiableManagedObject { @@ -59,10 +63,21 @@ public final class PersistedObvOwnedIdentity: NSManagedObject, Identifiable, Obv @NSManaged private(set) var contactGroups: Set @NSManaged private(set) var contactGroupsV2: Set @NSManaged public private(set) var contacts: Set - @NSManaged private(set) var invitations: Set + @NSManaged public private(set) var invitations: Set + @NSManaged public private(set) var devices: Set // MARK: Variables + public var sortedDevices: [PersistedObvOwnedDevice] { + devices.sorted { device1, device2 in + return device1.objectInsertionDate < device2.objectInsertionDate + } + } + + public var hasAnotherDeviceWithChannel: Bool { + return devices.first(where: { $0.secureChannelStatus == .created }) != nil + } + public var isHidden: Bool { hiddenProfileHash != nil && hiddenProfileSalt != nil } @@ -102,11 +117,60 @@ public final class PersistedObvOwnedIdentity: NSManagedObject, Identifiable, Obv } } - public private(set) var apiPermissions: APIPermissions { - get { APIPermissions(rawValue: rawAPIPermissions) } - set { rawAPIPermissions = newValue.rawValue } + private var apiPermissions: APIPermissions { + get { + return APIPermissions(rawValue: rawAPIPermissions) + } + set { + rawAPIPermissions = newValue.rawValue + } + } + + + /// If this owned identity has the canCall permission, this method returns her crypto Id. Otherwise, it looks for another owned identity allowed to emit a call. If one is found, this methods returns her owned identity. + /// If no owned identity has the canCall permission, this method returns `nil`. + public var ownedCryptoIdAllowedToEmitSecureCall: ObvCryptoId? { + if apiPermissions.contains(.canCall) { + return self.cryptoId + } else { + // This owned identity hasn't the canCall permission. But if any other active non-hidden owned identity has the permission, we know this one will be allowed to make calls too. + if let context = managedObjectContext { + let anotherProfileThatHasCanCallPermission = try? PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: context) + .filter({ $0.cryptoId != self.cryptoId }) + .first(where: { + // We do not directly access the apiPermissions var to prevent an infinite loop + let otherAPIPermissions = APIPermissions(rawValue: $0.rawAPIPermissions) + return otherAPIPermissions.contains(.canCall) + + }) + return anotherProfileThatHasCanCallPermission?.cryptoId + } else { + return nil + } + } + } + + + /// The api permissions of this owned identity, taking into account the permissions of other owned identities that may "augment" the permissions. + /// This variable is typically used when displaying the permissions to the user. + public var effectiveAPIPermissions: APIPermissions { + var effectiveAPIPermissions = self.apiPermissions + if ownedCryptoIdAllowedToEmitSecureCall != nil { + effectiveAPIPermissions.insert(.canCall) + } + return effectiveAPIPermissions + } + + + + public var apiKeyElements: APIKeyElements { + return APIKeyElements( + status: apiKeyStatus, + permissions: apiPermissions, + expirationDate: apiKeyExpirationDate) } + public var objectPermanentID: ObvManagedObjectPermanentID { ObvManagedObjectPermanentID(uuid: self.permanentUUID) } @@ -114,7 +178,7 @@ public final class PersistedObvOwnedIdentity: NSManagedObject, Identifiable, Obv public var circledInitialsConfiguration: CircledInitialsConfiguration { .contact(initial: customDisplayName ?? fullDisplayName, - photoURL: photoURL, + photo: .url(url: photoURL), showGreenShield: isKeycloakManaged, showRedShield: false, cryptoId: cryptoId, @@ -125,6 +189,29 @@ public final class PersistedObvOwnedIdentity: NSManagedObject, Identifiable, Obv return badgeCountForDiscussionsTab + badgeCountForInvitationsTab } + + public var asCNContact: CNContact { + let contact = CNMutableContact() + if let firstName = identityCoreDetails.firstName { + contact.givenName = firstName + } + if let lastName = identityCoreDetails.lastName { + contact.familyName = lastName + } + if let company = identityCoreDetails.company { + contact.organizationName = company + } + if let position = identityCoreDetails.position { + contact.jobTitle = position + } + if let customDisplayName { + contact.nickname = customDisplayName + } + contact.contactType = .person + return contact + } + + // MARK: - Initializer public convenience init?(ownedIdentity: ObvOwnedIdentity, within context: NSManagedObjectContext) { @@ -168,25 +255,34 @@ public final class PersistedObvOwnedIdentity: NSManagedObject, Identifiable, Obv } public func deactivate() { - self.isActive = false + if self.isActive { + self.isActive = false + } } public func activate() { - self.isActive = true + if !self.isActive { + self.isActive = true + } } public func delete() throws { guard let context = managedObjectContext else { - throw Self.makeError(message: "Could not delete owned identity as we could not find any context") + throw ObvUICoreDataError.noContext } context.delete(self) } - - public func setOwnedCustomDisplayName(to newCustomDisplayName: String?) { - guard self.customDisplayName != newCustomDisplayName else { return } - self.customDisplayName = newCustomDisplayName?.trimmingWhitespacesAndNewlinesAndMapToNilIfZeroLength() + + + /// Returns `true` iff the custom name had to be changed in database + public func setOwnedCustomDisplayName(to newCustomDisplayName: String?) -> Bool { + let trimmed = newCustomDisplayName?.trimmingWhitespacesAndNewlinesAndMapToNilIfZeroLength() + guard self.customDisplayName != trimmed else { return false } + self.customDisplayName = trimmed + return true } + // MARK: - Helpers for backups var hiddenProfileHashAndSaltForBackup: (hash: Data, salt: Data)? { @@ -205,7 +301,7 @@ public final class PersistedObvOwnedIdentity: NSManagedObject, Identifiable, Obv } -// MARK: - Capabilities +// MARK: - Contact Capabilities extension PersistedObvOwnedIdentity { @@ -248,135 +344,1503 @@ extension PersistedObvOwnedIdentity { public func supportsCapability(_ capability: ObvCapability) -> Bool { allCapabilitites.contains(capability) } - + +} + + +// MARK: - Owned devices + +extension PersistedObvOwnedIdentity { + + public func syncWith(ownedDevicesWithinEngine: Set) throws { + + guard ownedDevicesWithinEngine.allSatisfy({ + $0.ownedCryptoId == self.cryptoId + }) else { + throw ObvUICoreDataError.unexpectedOwnedCryptoId + } + + let deviceIdentifiersWithinApp = Set(devices.map(\.identifier)) + let deviceIdentifiersWithinEngine = Set(ownedDevicesWithinEngine.map(\.identifier)) + + // Determine the devices to add/remove/update + + let deviceIdentifiersToRemove = deviceIdentifiersWithinApp.subtracting(deviceIdentifiersWithinEngine) + let deviceIdentifiersToAdd = deviceIdentifiersWithinEngine.subtracting(deviceIdentifiersWithinApp) + let deviceIdentifiersToUpdate = deviceIdentifiersWithinApp.intersection(deviceIdentifiersWithinEngine) + + // Remove devices + + let devicesToRemove = devices.filter({ deviceIdentifiersToRemove.contains($0.identifier) }) + for deviceToRemove in devicesToRemove { + try deviceToRemove.deletePersistedObvOwnedDevice() + } + + // Insert devices + + let devicesToAdd = ownedDevicesWithinEngine.filter({ deviceIdentifiersToAdd.contains($0.identifier) }) + for deviceToAdd in devicesToAdd { + try PersistedObvOwnedDevice.createIfRequired(obvOwnedDevice: deviceToAdd, ownedIdentity: self) + } + + // Update devices + + let devicesToUpdate = ownedDevicesWithinEngine.filter({ deviceIdentifiersToUpdate.contains($0.identifier) }) + for obvOwned in devicesToUpdate { + try self.devices + .first(where: { $0.identifier == obvOwned.identifier })? + .updatePersistedObvOwnedDevice(with: obvOwned) + } + + } + +} + + +// MARK: - Hide/Unhide profile + +extension PersistedObvOwnedIdentity { + + public func hideProfileWithPassword(_ password: String) throws { + guard password.count >= ObvUICoreDataConstants.minimumLengthOfPasswordForHiddenProfiles else { + throw Self.makeError(message: "Password is too short to hide profile") + } + guard try !anotherPasswordIfAPrefixOfThisPassword(password: password) else { + throw Self.makeError(message: "Another password is the prefix of this password") + } + let prng = ObvCryptoSuite.sharedInstance.prngService() + let newHiddenProfileSalt = prng.genBytes(count: ObvUICoreDataConstants.seedLengthForHiddenProfiles) + let newHiddenProfileHash = try Self.computehiddenProfileHash(password, salt: newHiddenProfileSalt) + self.hiddenProfileSalt = newHiddenProfileSalt + self.hiddenProfileHash = newHiddenProfileHash + } + + + public func unhideProfile() { + if self.hiddenProfileHash != nil { + self.hiddenProfileHash = nil + } + if self.hiddenProfileSalt != nil { + self.hiddenProfileSalt = nil + } + } + + + private func anotherPasswordIfAPrefixOfThisPassword(password: String) throws -> Bool { + guard let context = self.managedObjectContext else { throw Self.makeError(message: "Could not find context") } + let allHiddenOwnedIdentities = try Self.getAllHiddenOwnedIdentities(within: context) + for hiddenOwnedIdentity in allHiddenOwnedIdentities { + guard let hiddenProfileSalt = hiddenOwnedIdentity.hiddenProfileSalt, let hiddenProfileHash = hiddenOwnedIdentity.hiddenProfileHash else { assertionFailure(); continue } + for length in ObvUICoreDataConstants.minimumLengthOfPasswordForHiddenProfiles...password.count { + let prefix = String(password.prefix(length)) + let hashObtained = try Self.computehiddenProfileHash(prefix, salt: hiddenProfileSalt) + if hashObtained == hiddenProfileHash { + return true + } + } + } + return false + } + + + private static func computehiddenProfileHash(_ password: String, salt: Data) throws -> Data { + return try PBKDF.pbkdf2sha1(password: password, salt: salt, rounds: 1000, derivedKeyLength: 20) + } + + + private func isUnlockedUsingPassword(_ password: String) throws -> Bool { + guard let hiddenProfileHash, let hiddenProfileSalt else { return false } + let computedHash = try Self.computehiddenProfileHash(password, salt: hiddenProfileSalt) + return hiddenProfileHash == computedHash + } + + + public static func passwordCanUnlockSomeHiddenOwnedIdentity(password: String, within context: NSManagedObjectContext) throws -> Bool { + guard password.count >= ObvUICoreDataConstants.minimumLengthOfPasswordForHiddenProfiles else { return false } + let hiddenOwnedIdentities = try Self.getAllHiddenOwnedIdentities(within: context) + for hiddenOwnedIdentity in hiddenOwnedIdentities { + if try hiddenOwnedIdentity.isUnlockedUsingPassword(password) { + return true + } + } + return false + } + + + public var isLastUnhiddenOwnedIdentity: Bool { + get throws { + guard let context = self.managedObjectContext else { throw Self.makeError(message: "Could not find owned identity") } + if isHidden { return false } + let unhiddenOwnedIdentities = try PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: context) + assert(unhiddenOwnedIdentities.contains(self)) + return unhiddenOwnedIdentities.count <= 1 + } + } + +} + +// MARK: - Receiving messages and attachments sent from a contact + +extension PersistedObvOwnedIdentity { + + + /// When receiving an `ObvMessage` from a contact, we fetch the persisted contact indicated in the message and then call this method to create the `PersistedMessageReceived`. + /// Returns all the `ObvAttachment` that are fully received, i.e., such that the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + public func createOrOverridePersistedMessageReceived(obvMessage: ObvMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?, overridePreviousPersistedMessage: Bool) throws -> (discussionPermanentID: DiscussionPermanentID, attachmentFullyReceivedOrCancelledByServer: [ObvAttachment]) { + + guard obvMessage.fromContactIdentity.ownedCryptoId == self.cryptoId else { + assertionFailure() + throw ObvUICoreDataError.unexpectedOwnedCryptoId + } + + guard let contact = try PersistedObvContactIdentity.get(cryptoId: obvMessage.fromContactIdentity.contactCryptoId, ownedIdentity: self, whereOneToOneStatusIs: .any) else { + throw ObvUICoreDataError.couldNotFindContact + } + + let values = try contact.createOrOverridePersistedMessageReceived( + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + overridePreviousPersistedMessage: overridePreviousPersistedMessage) + + return values + + } + +} + + +// MARK: - Receiving messages and attachments sent from another owned device + +extension PersistedObvOwnedIdentity { + + /// When receiving an `ObvOwnedMessage` from another owned device, we fetch the persisted owned identity indicated in the message and then call this method to create the `PersistedMessageSent`. + /// Returns all the `ObvOwnedAttachment` that are fully received, i.e., such that the `SentFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + public func createPersistedMessageSentFromOtherOwnedDevice(obvOwnedMessage: ObvOwnedMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?) throws -> [ObvOwnedAttachment] { + + guard obvOwnedMessage.ownedCryptoId == self.cryptoId else { + throw ObvUICoreDataError.unexpectedOwnedCryptoId + } + + // Determine the discussion or the group where the new PersistedMessageReceived should be inserted + + let attachmentFullyReceivedOrCancelledByServer: [ObvOwnedAttachment] + + if let oneToOneIdentifier = messageJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + attachmentFullyReceivedOrCancelledByServer = try oneToneDiscussion.createPersistedMessageSentFromOtherOwnedDevice( + from: self, + obvOwnedMessage: obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON) + + } else if let groupIdentifier = messageJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + attachmentFullyReceivedOrCancelledByServer = try group.createPersistedMessageSentFromOtherOwnedDevice( + from: self, + obvOwnedMessage: obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON) + + case .v2(group: let group): + + attachmentFullyReceivedOrCancelledByServer = try group.createPersistedMessageSentFromOtherOwnedDevice( + from: self, + obvOwnedMessage: obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON) + + } + + } else { + + throw ObvUICoreDataError.couldNotDetermineTheOneToOneDiscussion + + } + + return attachmentFullyReceivedOrCancelledByServer + + } + + + /// Returns `true` iff the attachment is cancelled or fully received (i.e., if the `SentFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk). + public func processObvOwnedAttachmentFromOtherOwnedDevice(obvOwnedAttachment: ObvOwnedAttachment) throws -> Bool { + + guard obvOwnedAttachment.ownedCryptoId == self.cryptoId else { + throw ObvUICoreDataError.unexpectedOwnedCryptoId + } + + guard let sentMessage = try PersistedMessageSent.getPersistedMessageSentFromOtherOwnedDevice(messageIdentifierFromEngine: obvOwnedAttachment.messageIdentifier, from: self) else { + throw ObvUICoreDataError.couldNotFindPersistedMessageSent + } + + let attachmentFullyReceivedOrCancelledByServer = try sentMessage.processObvOwnedAttachmentFromOtherOwnedDevice(obvOwnedAttachment) + + return attachmentFullyReceivedOrCancelledByServer + + } + + + public func markAttachmentFromOwnedDeviceAsResumed(messageIdentifierFromEngine: Data, attachmentNumber: Int) throws { + + guard let sentMessage = try PersistedMessageSent.getPersistedMessageSentFromOtherOwnedDevice(messageIdentifierFromEngine: messageIdentifierFromEngine, from: self) else { + throw ObvUICoreDataError.couldNotFindPersistedMessageSent + } + + try sentMessage.markAttachmentFromOwnedDeviceAsResumed(attachmentNumber: attachmentNumber) + + } + + + public func markAttachmentFromOwnedDeviceAsPaused(messageIdentifierFromEngine: Data, attachmentNumber: Int) throws { + + guard let sentMessage = try PersistedMessageSent.getPersistedMessageSentFromOtherOwnedDevice(messageIdentifierFromEngine: messageIdentifierFromEngine, from: self) else { + throw ObvUICoreDataError.couldNotFindPersistedMessageSent + } + + try sentMessage.markAttachmentFromOwnedDeviceAsPaused(attachmentNumber: attachmentNumber) + + } + + + /// Returns the OneToOne discussion corresponding to the identifier. This method makes sure the discussion is one of this owned identity. + private func fetchOneToOneDiscussion(with oneToOneIdentifier: OneToOneIdentifierJSON) throws -> PersistedOneToOneDiscussion { + + guard let contactCryptoId = oneToOneIdentifier.getContactIdentity(ownedIdentity: self.cryptoId) else { + assertionFailure("This is really unexpected. This method should not have been called in the first place.") + throw ObvUICoreDataError.couldNotDetermineContactCryptoId + } + + guard let contact = try PersistedObvContactIdentity.get(cryptoId: contactCryptoId, ownedIdentity: self, whereOneToOneStatusIs: .any) else { + throw ObvUICoreDataError.couldNotFindContactWithId(contactIdentifier: .init(contactCryptoId: contactCryptoId, ownedCryptoId: self.cryptoId)) + } + + guard let oneToOneDiscussion = contact.oneToOneDiscussion else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return oneToOneDiscussion + + } + + + private enum Group { + case v1(group: PersistedContactGroup) + case v2(group: PersistedGroupV2) + } + + + /// Helper method that fetches the group correspongin the ``GroupIdentifier``and that makes sure this contact is part of the group. + private func fetchGroup(with groupIdentifier: GroupIdentifier) throws -> Group { + + switch groupIdentifier { + + case .groupV1(groupV1Identifier: let groupV1Identifier): + + guard let contactGroup = try PersistedContactGroup.getContactGroup(groupIdentifier: groupV1Identifier, ownedIdentity: self) else { + throw ObvUICoreDataError.couldNotFindGroupV1InDatabase(groupIdentifier: groupV1Identifier) + } + + return .v1(group: contactGroup) + + case .groupV2(groupV2Identifier: let groupV2Identifier): + + guard let group = try PersistedGroupV2.get(ownIdentity: self, appGroupIdentifier: groupV2Identifier) else { + throw ObvUICoreDataError.couldNotFindGroupV2InDatabase(groupIdentifier: groupV2Identifier) + } + + return .v2(group: group) + + } + + } + + + /// Helper method that fetches the group discussion correspongin the ``GroupIdentifier``and that makes sure this contact is part of the group. + private func fetchGroupDiscussion(with groupIdentifier: GroupIdentifier) throws -> PersistedDiscussion { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + case .v1(group: let group): + + return group.discussion + + case .v2(group: let group): + + guard let discussion = group.discussion else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return discussion + + } + + } + + + /// Called when an extended payload is received for a message sent from another device of the owned identity. If at least one extended payload was saved for one of the attachments, this method returns the objectID of the message. Otherwise, it returns `nil`. + public func saveExtendedPayload(foundIn attachementImages: [NotificationAttachmentImage], for obvOwnedMessage: ObvOwnedMessage) throws -> TypeSafeManagedObjectID? { + + guard obvOwnedMessage.ownedCryptoId == self.cryptoId else { + throw ObvUICoreDataError.unexpectedOwnedCryptoId + } + + guard let sentMessage = try PersistedMessageSent.getPersistedMessageSentFromOtherOwnedDevice(messageIdentifierFromEngine: obvOwnedMessage.messageIdentifierFromEngine, from: self) else { + throw ObvUICoreDataError.couldNotFindPersistedMessageSent + } + + let atLeastOneExtendedPayloadCouldBeSaved = try sentMessage.saveExtendedPayload(foundIn: attachementImages) + + return atLeastOneExtendedPayloadCouldBeSaved ? sentMessage.typedObjectID : nil + + } + + +} + + +// MARK: - Receiving discussion shared configurations + +extension PersistedObvOwnedIdentity { + + /// Called when receiving a ``DiscussionSharedConfigurationJSON`` from a contact + public func mergeReceivedDiscussionSharedConfigurationSentByContact(discussionSharedConfiguration: DiscussionSharedConfigurationJSON, messageUploadTimestampFromServer: Date, messageLocalDownloadTimestamp: Date, contactCryptoId: ObvCryptoId) throws -> (discussionId: DiscussionIdentifier, weShouldSendBackOurSharedSettings: Bool) { + + guard let persistedContact = try PersistedObvContactIdentity.get(cryptoId: contactCryptoId, ownedIdentity: self, whereOneToOneStatusIs: .any) else { + throw ObvUICoreDataError.couldNotFindContact + } + + let values = try persistedContact.mergeReceivedDiscussionSharedConfigurationSentByThisContact( + discussionSharedConfiguration: discussionSharedConfiguration, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return values + + } + + + /// Called when receiving a ``DiscussionSharedConfigurationJSON`` from another owned device of this ``PersistedObvOwnedIdentity``. + public func mergeReceivedDiscussionSharedConfigurationSentByThisOwnedIdentity(discussionSharedConfiguration: DiscussionSharedConfigurationJSON, messageUploadTimestampFromServer: Date) throws -> (discussionId: DiscussionIdentifier, weShouldSendBackOurSharedSettings: Bool) { + + let returnedValues: (discussion: PersistedDiscussion, weShouldSendBackOurSharedSettings: Bool) + let sharedSettingHadToBeUpdated: Bool + + if let oneToOneIdentifier = discussionSharedConfiguration.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + + let (_sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) = try oneToneDiscussion.mergeDiscussionSharedConfiguration( + discussionSharedConfiguration: discussionSharedConfiguration.sharedConfig, + receivedFrom: self) + + sharedSettingHadToBeUpdated = _sharedSettingHadToBeUpdated + returnedValues = (oneToneDiscussion, weShouldSendBackOurSharedSettings) + + } else if let groupIdentifier = discussionSharedConfiguration.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + let (_sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) = try group.mergeReceivedDiscussionSharedConfiguration( + discussionSharedConfiguration: discussionSharedConfiguration.sharedConfig, + receivedFrom: self.cryptoId) + + sharedSettingHadToBeUpdated = _sharedSettingHadToBeUpdated + returnedValues = (group.discussion, weShouldSendBackOurSharedSettings) + + case .v2(group: let group): + + guard let groupDiscussion = group.discussion else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + let (_sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) = try group.mergeReceivedDiscussionSharedConfiguration( + discussionSharedConfiguration: discussionSharedConfiguration.sharedConfig, + receivedFrom: self) + + sharedSettingHadToBeUpdated = _sharedSettingHadToBeUpdated + returnedValues = (groupDiscussion, weShouldSendBackOurSharedSettings) + + } + + } else { + + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + // In all cases, if the shared settings had to be updated, we insert an appropriate message in the discussion + + if sharedSettingHadToBeUpdated { + try returnedValues.discussion.insertSystemMessageIndicatingThatDiscussionSharedConfigurationWasUpdatedByOwnedIdentity(messageUploadTimestampFromServer: messageUploadTimestampFromServer) + } + + return try (returnedValues.discussion.identifier, returnedValues.weShouldSendBackOurSharedSettings) + + } + + + /// Called when the owned identity decided to change the shared configuration of a discussion on the current device. + public func replaceDiscussionSharedConfigurationSentByThisOwnedIdentity(with expiration: ExpirationJSON, inDiscussionWithId discussionId: DiscussionIdentifier) throws { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + guard discussion.ownedIdentity == self else { + throw ObvUICoreDataError.unexpectedOwnedCryptoId + } + + let sharedSettingHadToBeUpdated: Bool + + switch try discussion.kind { + + case .oneToOne: + + guard let oneToOneDiscussion = discussion as? PersistedOneToOneDiscussion else { + assertionFailure() + throw ObvUICoreDataError.couldNotFindDiscussion + } + + sharedSettingHadToBeUpdated = try oneToOneDiscussion.replaceDiscussionSharedConfiguration(with: expiration, receivedFrom: self) + + case .groupV1(withContactGroup: let group): + + guard let group else { + throw ObvUICoreDataError.couldNotDetemineGroupV1 + } + + sharedSettingHadToBeUpdated = try group.replaceReceivedDiscussionSharedConfiguration(with: expiration, receivedFrom: self) + + case .groupV2(withGroup: let group): + + guard let group else { + throw ObvUICoreDataError.couldNotDetemineGroupV2 + } + + sharedSettingHadToBeUpdated = try group.replaceReceivedDiscussionSharedConfiguration(with: expiration, receivedFrom: self) + + } + + if sharedSettingHadToBeUpdated { + try? discussion.insertSystemMessageIndicatingThatDiscussionSharedConfigurationWasUpdatedByOwnedIdentity( + messageUploadTimestampFromServer: nil) + } + + } + +} + + +// MARK: - Processing delete requests from the owned identity + +extension PersistedObvOwnedIdentity { + + public func processWipeMessageRequestFromOtherOwnedDevice(deleteMessagesJSON: DeleteMessagesJSON, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + let messagesToDelete = deleteMessagesJSON.messagesToDelete + + let infos: [InfoAboutWipedOrDeletedPersistedMessage] + + if let oneToOneIdentifier = deleteMessagesJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + infos = try oneToneDiscussion.processWipeMessageRequest(of: messagesToDelete, from: self.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } else if let groupIdentifier = deleteMessagesJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + infos = try group.processWipeMessageRequest(of: messagesToDelete, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .v2(group: let group): + + infos = try group.processWipeMessageRequest(of: messagesToDelete, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + } else { + + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + return infos + + + } + + + public func processMessageDeletionRequestRequestedFromCurrentDeviceOfThisOwnedIdentity(persistedMessageObjectIDs: Set, deletionType: DeletionType) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + let infos = try persistedMessageObjectIDs.compactMap { + try processMessageDeletionRequestRequestedFromCurrentDeviceOfThisOwnedIdentity(persistedMessageObjectID: $0, deletionType: deletionType) + } + + return infos + + } + + + func processMessageDeletionRequestRequestedFromCurrentDeviceOfThisOwnedIdentity(persistedMessageObjectID: NSManagedObjectID, deletionType: DeletionType) throws -> InfoAboutWipedOrDeletedPersistedMessage? { + + guard let context = self.managedObjectContext else { + throw ObvUICoreDataError.noContext + } + + guard let messageToDelete = try PersistedMessage.get(with: persistedMessageObjectID, within: context) else { return nil } + + let info: InfoAboutWipedOrDeletedPersistedMessage + + if let oneToOneDiscussion = messageToDelete.discussion as? PersistedOneToOneDiscussion { + + info = try oneToOneDiscussion.processMessageDeletionRequestRequestedFromCurrentDevice( + of: self, + messageToDelete: messageToDelete, + deletionType: deletionType) + + } else if let groupDiscussion = (messageToDelete.discussion as? PersistedGroupDiscussion) { + + if let group = groupDiscussion.contactGroup { + info = try group.processMessageDeletionRequestRequestedFromCurrentDevice( + of: self, + messageToDelete: messageToDelete, + deletionType: deletionType) + } else { + // Happens for disbanded groups + info = try groupDiscussion.processMessageDeletionRequestRequestedFromCurrentDevice( + of: self, + messageToDelete: messageToDelete, + deletionType: deletionType) + } + + } else if let groupDiscussion = messageToDelete.discussion as? PersistedGroupV2Discussion { + + if let group = groupDiscussion.group { + info = try group.processMessageDeletionRequestRequestedFromCurrentDevice( + of: self, + messageToDelete: messageToDelete, + deletionType: deletionType) + } else { + // Happens for disbanded groups + info = try groupDiscussion.processMessageDeletionRequestRequestedFromCurrentDevice( + of: self, + messageToDelete: messageToDelete, + deletionType: deletionType) + } + + } else { + + assertionFailure() + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + return info + + } + + + public func processDiscussionDeletionRequestFromCurrentDeviceOfThisOwnedIdentity(discussionObjectID: TypeSafeManagedObjectID, deletionType: DeletionType) throws { + + guard let context = self.managedObjectContext else { + throw ObvUICoreDataError.noContext + } + + guard let discussion = try PersistedDiscussion.get(objectID: discussionObjectID.objectID, within: context) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + switch try discussion.kind { + + case .oneToOne: + + guard let oneToOneDiscussion = discussion as? PersistedOneToOneDiscussion else { + assertionFailure() + throw ObvUICoreDataError.couldNotFindDiscussion + } + + try oneToOneDiscussion.processDiscussionDeletionRequestFromCurrentDevice(of: self, deletionType: deletionType) + if oneToOneDiscussion.status == .locked { + incrementBadgeCountForDiscussionsTab(by: -discussion.numberOfNewMessages) + } + + case .groupV1(withContactGroup: let group): + + if let group { + try group.processDiscussionDeletionRequestFromCurrentDevice(of: self, deletionType: deletionType) + } else { + // This happens when the group has been disbanded + incrementBadgeCountForDiscussionsTab(by: -discussion.numberOfNewMessages) + try discussion.processDiscussionDeletionRequestFromCurrentDevice(of: self, deletionType: deletionType) + } + + case .groupV2(withGroup: let group): + + if let group { + try group.processDiscussionDeletionRequestFromCurrentDevice(of: self, deletionType: deletionType) + } else { + // This happens when the group has been disbanded + incrementBadgeCountForDiscussionsTab(by: -discussion.numberOfNewMessages) + try discussion.processDiscussionDeletionRequestFromCurrentDevice(of: self, deletionType: deletionType) + } + + } + + } + +} + + +// MARK: - Processing discussion (all messages) remote wipe requests + +extension PersistedObvOwnedIdentity { + + /// Called when receiving a request to wipe a discussion from another owned device. + public func processThisOwnedIdentityRemoteRequestToWipeAllMessagesWithinDiscussion(deleteDiscussionJSON: DeleteDiscussionJSON, messageUploadTimestampFromServer: Date) throws { + + if let oneToOneIdentifier = deleteDiscussionJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + try oneToneDiscussion.processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } else if let groupIdentifier = deleteDiscussionJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + try group.processRemoteRequestToWipeAllMessagesWithinThisGroupDiscussion(from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .v2(group: let group): + + try group.processRemoteRequestToWipeAllMessagesWithinThisGroupDiscussion(from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + } else { + + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + } + + + /// When receiving a `DeleteDiscussionJSON` request, we need to request the engine to cancel any processing sent message. This method allows to determine which sent messages are still processing. + public func getObjectIDsOfPersistedMessageSentStillProcessing(deleteDiscussionJSON: DeleteDiscussionJSON) throws -> [TypeSafeManagedObjectID] { + + guard let context = self.managedObjectContext else { + throw ObvUICoreDataError.noContext + } + + let persistedDiscussionObjectID: NSManagedObjectID + + if let oneToOneIdentifier = deleteDiscussionJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + persistedDiscussionObjectID = oneToneDiscussion.objectID + + } else if let groupIdentifier = deleteDiscussionJSON.groupIdentifier { + + let groupDiscussion = try fetchGroupDiscussion(with: groupIdentifier) + persistedDiscussionObjectID = groupDiscussion.objectID + + } else { + + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + let allProcessingMessageSent = try PersistedMessageSent.getAllProcessingWithinDiscussion(persistedDiscussionObjectID: persistedDiscussionObjectID, within: context) + return allProcessingMessageSent.map { $0.typedObjectID } + + } + +} + + + +// MARK: - Processing edit requests + +extension PersistedObvOwnedIdentity { + + public func processUpdateMessageRequestFromThisOwnedIdentity(updateMessageJSON: UpdateMessageJSON, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + if let oneToOneIdentifier = updateMessageJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + let updatedMessage = try oneToneDiscussion.processUpdateMessageRequest(updateMessageJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } else if let groupIdentifier = updateMessageJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + let updatedMessage = try group.processUpdateMessageRequest(updateMessageJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + case .v2(group: let group): + + let updatedMessage = try group.processUpdateMessageRequest(updateMessageJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + } else { + + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + } + + + public func processLocalUpdateMessageRequestFromThisOwnedIdentity(persistedSentMessageObjectID: TypeSafeManagedObjectID, newTextBody: String?) throws -> PersistedMessage? { + + guard let context = self.managedObjectContext else { + throw ObvUICoreDataError.noContext + } + + guard let messageSent = try PersistedMessageSent.getPersistedMessageSent(objectID: persistedSentMessageObjectID, within: context) else { + throw ObvUICoreDataError.couldNotFindPersistedMessageSent + } + + guard let discussion = messageSent.discussion else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + switch try discussion.kind { + + case .oneToOne: + + guard let oneToOneDiscussion = discussion as? PersistedOneToOneDiscussion else { + assertionFailure() + throw ObvUICoreDataError.couldNotFindDiscussion + } + + try oneToOneDiscussion.processLocalUpdateMessageRequest(from: self, for: messageSent, newTextBody: newTextBody) + + case .groupV1(withContactGroup: let group): + + guard let group else { + throw ObvUICoreDataError.couldNotDetemineGroupV1 + } + + try group.processLocalUpdateMessageRequest(from: self, for: messageSent, newTextBody: newTextBody) + + case .groupV2(withGroup: let group): + + guard let group else { + throw ObvUICoreDataError.couldNotDetemineGroupV2 + } + + try group.processLocalUpdateMessageRequest(from: self, for: messageSent, newTextBody: newTextBody) + + } + + return messageSent + + } + + + // MARK: - Process reaction requests + + /// Called when the owned identity requested to set (or update) a reaction on a message from the current device. + public func processSetOrUpdateReactionOnMessageLocalRequestFromThisOwnedIdentity(messageObjectID: TypeSafeManagedObjectID, newEmoji: String?) throws -> PersistedMessage? { + + guard let context = self.managedObjectContext else { + throw ObvUICoreDataError.noContext + } + + guard let message = try PersistedMessage.get(with: messageObjectID, within: context) else { + throw ObvUICoreDataError.couldNotFindPersistedMessage + } + + guard let discussion = message.discussion else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + switch try discussion.kind { + + case .oneToOne: + + guard let oneToOneDiscussion = discussion as? PersistedOneToOneDiscussion else { + assertionFailure() + throw ObvUICoreDataError.couldNotFindDiscussion + } + + try oneToOneDiscussion.processSetOrUpdateReactionOnMessageLocalRequest(from: self, for: message, newEmoji: newEmoji) + + case .groupV1(withContactGroup: let group): + + guard let group else { + throw ObvUICoreDataError.couldNotDetemineGroupV1 + } + + try group.processSetOrUpdateReactionOnMessageLocalRequest(from: self, for: message, newEmoji: newEmoji) + + case .groupV2(withGroup: let group): + + guard let group else { + throw ObvUICoreDataError.couldNotDetemineGroupV2 + } + + try group.processSetOrUpdateReactionOnMessageLocalRequest(from: self, for: message, newEmoji: newEmoji) + + } + + return message + + + } + + + public func processSetOrUpdateReactionOnMessageRequestFromThisOwnedIdentity(reactionJSON: ReactionJSON, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + if let oneToOneIdentifier = reactionJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + let updatedMessage = try oneToneDiscussion.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } else if let groupIdentifier = reactionJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + let updatedMessage = try group.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + case .v2(group: let group): + + let updatedMessage = try group.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + return updatedMessage + + } + + } else { + + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + } + + + // MARK: - Process screen capture detections + + public func processLocalDetectionThatSensitiveMessagesWereCapturedByThisOwnedIdentity(discussionPermanentID: ObvManagedObjectPermanentID) throws -> (screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, recipients: Set) { + + guard let context = self.managedObjectContext else { + throw ObvUICoreDataError.noContext + } + + guard let discussion = try PersistedDiscussion.getManagedObject(withPermanentID: discussionPermanentID, within: context) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + let screenCaptureDetectionJSON: ScreenCaptureDetectionJSON + let recipients: Set + + switch try discussion.kind { + + case .oneToOne: + + guard let oneToOneDiscussion = discussion as? PersistedOneToOneDiscussion else { + assertionFailure() + throw ObvUICoreDataError.couldNotFindDiscussion + } + + try oneToOneDiscussion.processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by: self) + + screenCaptureDetectionJSON = ScreenCaptureDetectionJSON(oneToOneIdentifier: try oneToOneDiscussion.oneToOneIdentifier) + recipients = Set([oneToOneDiscussion.contactIdentity?.cryptoId].compactMap({$0})) + + case .groupV1(withContactGroup: let group): + + guard let group else { + throw ObvUICoreDataError.couldNotDetemineGroupV1 + } + + try group.processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by: self) + + screenCaptureDetectionJSON = ScreenCaptureDetectionJSON(groupV1Identifier: try group.getGroupId()) + recipients = Set(group.contactIdentities.compactMap({ $0.cryptoId })) + + case .groupV2(withGroup: let group): + + guard let group else { + throw ObvUICoreDataError.couldNotDetemineGroupV2 + } + + try group.processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by: self) + + screenCaptureDetectionJSON = ScreenCaptureDetectionJSON(groupV2Identifier: group.groupIdentifier) + recipients = Set(group.contactsAmongOtherPendingAndNonPendingMembers.map({ $0.cryptoId })) + + } + + return (screenCaptureDetectionJSON, recipients) + + } + + + public func processDetectionThatSensitiveMessagesWereCapturedByThisOwnedIdentity(screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, messageUploadTimestampFromServer: Date) throws { + + if let oneToOneIdentifier = screenCaptureDetectionJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + try oneToneDiscussion.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } else if let groupIdentifier = screenCaptureDetectionJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + try group.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .v2(group: let group): + + try group.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: self, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + } else { + + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + } + + + // MARK: - Process requests for group v2 shared settings + + /// Returns our groupV2 discussion's shared settings in case we detect that it is pertinent to send them back to this contact + public func processQuerySharedSettingsRequestFromThisOwnedIdentity(querySharedSettingsJSON: QuerySharedSettingsJSON) throws -> (weShouldSendBackOurSharedSettings: Bool, discussionId: DiscussionIdentifier) { + + if let oneToOneIdentifier = querySharedSettingsJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + let discussionId = try oneToneDiscussion.identifier + + let weShouldSendBackOurSharedSettings = try oneToneDiscussion.processQuerySharedSettingsRequest(querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + + } else if let groupIdentifier = querySharedSettingsJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + let (weShouldSendBackOurSharedSettings, discussionId) = try group.processQuerySharedSettingsRequest(from: self, querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + + case .v2(group: let group): + + let (weShouldSendBackOurSharedSettings, discussionId) = try group.processQuerySharedSettingsRequest(from: self, querySharedSettingsJSON: querySharedSettingsJSON) + + return (weShouldSendBackOurSharedSettings, discussionId) + } + + } else { + + throw ObvUICoreDataError.couldNotFindDiscussion + + } + + } + + + // MARK: - Inserting system messages within discussions + + public func processContactIntroductionInvitationSentByThisOwnedIdentity(contactCryptoIdA: ObvCryptoId, contactCryptoIdB: ObvCryptoId) throws { + + try processIntroductionOfContact(contactCryptoIdA, to: contactCryptoIdB) + try processIntroductionOfContact(contactCryptoIdB, to: contactCryptoIdA) + + } + + + private func processIntroductionOfContact(_ contactCryptoIdA: ObvCryptoId, to contactCryptoIdB: ObvCryptoId) throws { + + guard let contactA = try PersistedObvContactIdentity.get(cryptoId: contactCryptoIdA, ownedIdentity: self, whereOneToOneStatusIs: .oneToOne) else { + throw ObvUICoreDataError.couldNotFindOneToOneContact + } + + guard let contactB = try PersistedObvContactIdentity.get(cryptoId: contactCryptoIdB, ownedIdentity: self, whereOneToOneStatusIs: .any) else { + throw ObvUICoreDataError.couldNotFindOneToOneContact + } + + guard let oneToOneDiscussion = contactA.oneToOneDiscussion else { + throw ObvUICoreDataError.couldNotDetermineTheOneToOneDiscussion + } + + try oneToOneDiscussion.oneToOneContactWasIntroducedTo(otherContact: contactB) + + } + +} + +// MARK: - Group v1 + +extension PersistedObvOwnedIdentity { + + /// Returns `true` iff the custom display name of the joined group had to be updated in database + public func setCustomNameOfJoinedGroupV1(groupIdentifier: GroupV1Identifier, to newGroupNameCustom: String?) throws -> Bool { + + guard let group = try PersistedContactGroupJoined.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: self) as? PersistedContactGroupJoined else { + throw ObvUICoreDataError.couldNotFindGroupV1InDatabase(groupIdentifier: groupIdentifier) + } + + let groupNameCustomHadToBeUpdated = try group.setGroupNameCustom(to: newGroupNameCustom) + + return groupNameCustomHadToBeUpdated + + } + + + /// Returns `true` iff the personal note had to be updated in database + public func setPersonalNoteOnGroupV1(groupIdentifier: GroupV1Identifier, newText: String?) throws -> Bool { + + guard let group = try PersistedContactGroup.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: self) else { + throw ObvUICoreDataError.couldNotFindGroupV1InDatabase(groupIdentifier: groupIdentifier) + } + + let noteHadToBeUpdatedInDatabase = group.setNote(to: newText) + + return noteHadToBeUpdatedInDatabase + + } + +} + + +// MARK: - Group v2 + +extension PersistedObvOwnedIdentity { + + public func createOrUpdateGroupV2(obvGroupV2: ObvGroupV2, createdByMe: Bool) throws -> PersistedGroupV2 { + + guard obvGroupV2.ownIdentity == self.cryptoId else { + assertionFailure() + throw ObvUICoreDataError.unexpectedOwnedCryptoId + } + + guard let context = self.managedObjectContext else { + assertionFailure() + throw ObvUICoreDataError.noContext + } + + let group = try PersistedGroupV2.createOrUpdate(obvGroupV2: obvGroupV2, createdByMe: createdByMe, within: context) + + return group + + } + + + /// Returns `true` iff the custom display name of the joined group had to be updated in database + public func setCustomNameOfGroupV2(groupIdentifier: Data, to newGroupNameCustom: String?) throws -> Bool { + + guard let group = try PersistedGroupV2.get(ownIdentity: self, appGroupIdentifier: groupIdentifier) else { + throw ObvUICoreDataError.couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + } + + let groupNameCustomHadToBeUpdated = try group.updateCustomNameWith(with: newGroupNameCustom) + + return groupNameCustomHadToBeUpdated + + } + + + public func updateCustomPhotoOfGroupV2(withGroupIdentifier groupIdentifier: Data, withPhoto newPhoto: UIImage?, within obvContext: ObvContext) throws { + + guard obvContext.context == self.managedObjectContext else { + assertionFailure() + throw ObvUICoreDataError.inappropriateContext + } + + guard let group = try PersistedGroupV2.get(ownIdentity: self, appGroupIdentifier: groupIdentifier) else { + throw ObvUICoreDataError.couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + } + + try group.updateCustomPhotoWithPhoto(newPhoto, within: obvContext) + + } + + + /// Returns `true` iff the personal note had to be updated in database + public func setPersonalNoteOnGroupV2(groupIdentifier: Data, newText: String?) throws -> Bool { + + guard let group = try PersistedGroupV2.get(ownIdentity: self, appGroupIdentifier: groupIdentifier) else { + throw ObvUICoreDataError.couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + } + + let noteHadToBeUpdatedInDatabase = group.setNote(to: newText) + + return noteHadToBeUpdatedInDatabase + + } + +} + + +// MARK: - Other methods for contacts + +extension PersistedObvOwnedIdentity { + + /// Returns `true` iff the personal note had to be updated in database + public func setPersonalNoteOnContact(contactCryptoId: ObvCryptoId, newText: String?) throws -> Bool { + + guard let contact = try PersistedObvContactIdentity.get(cryptoId: contactCryptoId, ownedIdentity: self, whereOneToOneStatusIs: .any) else { + throw ObvUICoreDataError.couldNotFindContact + } + + let noteHadToBeUpdatedInDatabase = contact.setNote(to: newText) + + return noteHadToBeUpdatedInDatabase + + } + +} + + +// MARK: - Utils + +extension PersistedObvOwnedIdentity { + + public func set(apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?) { + if self.apiKeyStatus != apiKeyStatus { + self.apiKeyStatus = apiKeyStatus + } + if self.apiPermissions != apiPermissions { + self.apiPermissions = apiPermissions + } + if self.apiKeyExpirationDate != apiKeyExpirationDate { + self.apiKeyExpirationDate = apiKeyExpirationDate + } + } + + + public func getPersistedMessageReceivedCorrespondingTo(limitedVisibilityMessageOpenedJSON: LimitedVisibilityMessageOpenedJSON) throws -> PersistedMessageReceived? { + + if let oneToOneIdentifier = limitedVisibilityMessageOpenedJSON.oneToOneIdentifier { + + let oneToneDiscussion = try fetchOneToOneDiscussion(with: oneToOneIdentifier) + return try oneToneDiscussion.getPersistedMessageReceivedCorrespondingTo(messageReference: limitedVisibilityMessageOpenedJSON.messageReference) + + } else if let groupIdentifier = limitedVisibilityMessageOpenedJSON.groupIdentifier { + + let group = try fetchGroup(with: groupIdentifier) + + switch group { + + case .v1(group: let group): + + return try group.discussion.getPersistedMessageReceivedCorrespondingTo(messageReference: limitedVisibilityMessageOpenedJSON.messageReference) + + case .v2(group: let group): + + guard let discussion = group.discussion else{ + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return try discussion.getPersistedMessageReceivedCorrespondingTo(messageReference: limitedVisibilityMessageOpenedJSON.messageReference) + + } + + } else { + + throw ObvUICoreDataError.couldNotDetermineTheOneToOneDiscussion + + } + + } + + + public func isDiscussionActive(discussionId: DiscussionIdentifier) throws -> Bool { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return discussion.status == .active + + } + +} + + +// MARK: - Handling badge counts for tabs + +extension PersistedObvOwnedIdentity { + + /// Refreshes the badge count for the discussions tab. Called during bootstrap. + /// Note that this **cannot** be called in a context including pending changes since those will **not** be taken into account (this is a limitation of Core Data, see https://developer.apple.com/documentation/coredata/nsfetchrequest/1506724-includespendingchanges). + public func refreshBadgeCountForDiscussionsTab() throws { + guard self.managedObjectContext != nil else { assertionFailure(); throw Self.makeError(message: "Cannot find context") } + let newNumberOfNewMessages = try PersistedDiscussion.countSumOfNewMessagesWithinUnmutedDiscussionsForOwnedIdentity(self) + let numberOfMutedDiscussionsMentioningOwnedIdentity = try PersistedDiscussion.countNumberOfMutedDiscussionsWithNewMessageMentioningOwnedIdentity(self) + let newBadgeCountForDiscussionsTab = newNumberOfNewMessages + numberOfMutedDiscussionsMentioningOwnedIdentity + if self.badgeCountForDiscussionsTab != newBadgeCountForDiscussionsTab { + self.badgeCountForDiscussionsTab = newBadgeCountForDiscussionsTab + } + } + + + /// Refreshes the badge count for the discussions tab. Called during bootstrap and each time a significant change occurs at the ``PersistedInvitation`` level. + /// To the contrary of ``PersistedObvOwnedIdentity.refreshBadgeCountForDiscussionsTab()``, this method can be called within the context that updated a ``PersistedInvitation`` since the count method we used does take pending changes into account. + public func refreshBadgeCountForInvitationsTab() throws { + guard self.managedObjectContext != nil else { assertionFailure(); throw Self.makeError(message: "Cannot find context") } + let newBadgeCountForInvitationsTab = try PersistedInvitation.computeBadgeCountForInvitationsTab(of: self) + if self.badgeCountForInvitationsTab != newBadgeCountForInvitationsTab { + self.badgeCountForInvitationsTab = newBadgeCountForInvitationsTab + } + } + + + /// Called exclusively by a persisted discussion of this owned identity, when it updates its own number of new messages, or when it updates the Boolean indicating that a new message mentions an this owned identity. + /// This method is required as ``PersistedObvOwnedIdentity.refreshBadgeCountForDiscussionsTab()`` cannot be called atomically with changes made at the ``PersistedDiscussion`` level. + func incrementBadgeCountForDiscussionsTab(by value: Int) { + guard value != 0 else { return } + self.badgeCountForDiscussionsTab = max(0, self.badgeCountForDiscussionsTab + value) + } + } -// MARK: - Hide/Unhide profile +// MARK: - Allow reading messages with limited visibility extension PersistedObvOwnedIdentity { - public func hideProfileWithPassword(_ password: String) throws { - guard password.count >= ObvUICoreDataConstants.minimumLengthOfPasswordForHiddenProfiles else { - throw Self.makeError(message: "Password is too short to hide profile") - } - guard try !anotherPasswordIfAPrefixOfThisPassword(password: password) else { - throw Self.makeError(message: "Another password is the prefix of this password") + public func userWantsToReadReceivedMessageWithLimitedVisibility(discussionId: DiscussionIdentifier, messageId: ReceivedMessageIdentifier, dateWhenMessageWasRead: Date, requestedOnAnotherOwnedDevice: Bool) throws -> InfoAboutWipedOrDeletedPersistedMessage? { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussionWithId(discussionId: discussionId) } - let prng = ObvCryptoSuite.sharedInstance.prngService() - let newHiddenProfileSalt = prng.genBytes(count: ObvUICoreDataConstants.seedLengthForHiddenProfiles) - let newHiddenProfileHash = try Self.computehiddenProfileHash(password, salt: newHiddenProfileSalt) - self.hiddenProfileSalt = newHiddenProfileSalt - self.hiddenProfileHash = newHiddenProfileHash + + return try discussion.userWantsToReadReceivedMessageWithLimitedVisibility(messageId: messageId, dateWhenMessageWasRead: dateWhenMessageWasRead, requestedOnAnotherOwnedDevice: requestedOnAnotherOwnedDevice) + } - public func unhideProfile() { - self.hiddenProfileHash = nil - self.hiddenProfileSalt = nil + /// Returns an array of the received message identifiers that were read. + public func userWantsToAllowReadingAllReceivedMessagesReceivedThatRequireUserAction(discussionId: DiscussionIdentifier, dateWhenMessageWasRead: Date) throws -> ([InfoAboutWipedOrDeletedPersistedMessage], [ReceivedMessageIdentifier]) { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return try discussion.userWantsToAllowReadingAllReceivedMessagesReceivedThatRequireUserAction(dateWhenMessageWasRead: dateWhenMessageWasRead) + } + - private func anotherPasswordIfAPrefixOfThisPassword(password: String) throws -> Bool { - guard let context = self.managedObjectContext else { throw Self.makeError(message: "Could not find context") } - let allHiddenOwnedIdentities = try Self.getAllHiddenOwnedIdentities(within: context) - for hiddenOwnedIdentity in allHiddenOwnedIdentities { - guard let hiddenProfileSalt = hiddenOwnedIdentity.hiddenProfileSalt, let hiddenProfileHash = hiddenOwnedIdentity.hiddenProfileHash else { assertionFailure(); continue } - for length in ObvUICoreDataConstants.minimumLengthOfPasswordForHiddenProfiles...password.count { - let prefix = String(password.prefix(length)) - let hashObtained = try Self.computehiddenProfileHash(prefix, salt: hiddenProfileSalt) - if hashObtained == hiddenProfileHash { - return true - } - } + public func getLimitedVisibilityMessageOpenedJSON(discussionId: DiscussionIdentifier, messageId: ReceivedMessageIdentifier) throws -> LimitedVisibilityMessageOpenedJSON { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussion } - return false + + return try discussion.getLimitedVisibilityMessageOpenedJSON(messageId: messageId) } +} + + +// MARK: - Marking received messages as not new + +extension PersistedObvOwnedIdentity { - private static func computehiddenProfileHash(_ password: String, salt: Data) throws -> Data { - return try PBKDF.pbkdf2sha1(password: password, salt: salt, rounds: 1000, derivedKeyLength: 20) + public func markReceivedMessageAsNotNew(discussionId: DiscussionIdentifier, receivedMessageId: ReceivedMessageIdentifier, dateWhenMessageTurnedNotNew: Date) throws -> Date? { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + let lastReadMessageServerTimestamp = try discussion.markReceivedMessageAsNotNew(receivedMessageId: receivedMessageId, dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + + return lastReadMessageServerTimestamp + } + - - private func isUnlockedUsingPassword(_ password: String) throws -> Bool { - guard let hiddenProfileHash, let hiddenProfileSalt else { return false } - let computedHash = try Self.computehiddenProfileHash(password, salt: hiddenProfileSalt) - return hiddenProfileHash == computedHash + public func markAllMessagesAsNotNew(discussionId: DiscussionIdentifier, untilDate: Date?, dateWhenMessageTurnedNotNew: Date) throws -> Date? { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussionWithId(discussionId: discussionId) + } + + let lastReadMessageServerTimestamp = try discussion.markAllMessagesAsNotNew(untilDate: untilDate, dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + + return lastReadMessageServerTimestamp + } + - - public static func passwordCanUnlockSomeHiddenOwnedIdentity(password: String, within context: NSManagedObjectContext) throws -> Bool { - guard password.count >= ObvUICoreDataConstants.minimumLengthOfPasswordForHiddenProfiles else { return false } - let hiddenOwnedIdentities = try Self.getAllHiddenOwnedIdentities(within: context) - for hiddenOwnedIdentity in hiddenOwnedIdentities { - if try hiddenOwnedIdentity.isUnlockedUsingPassword(password) { - return true - } + public func markAllMessagesAsNotNew(discussionId: DiscussionIdentifier, messageIds: [MessageIdentifier], dateWhenMessageTurnedNotNew: Date) throws -> Date? { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussionWithId(discussionId: discussionId) } - return false + + let lastReadMessageServerTimestamp = try discussion.markAllMessagesAsNotNew(messageIds: messageIds, dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + + return lastReadMessageServerTimestamp + } - public var isLastUnhiddenOwnedIdentity: Bool { - get throws { - guard let context = self.managedObjectContext else { throw Self.makeError(message: "Could not find owned identity") } - if isHidden { return false } - let unhiddenOwnedIdentities = try PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: context) - assert(unhiddenOwnedIdentities.contains(self)) - return unhiddenOwnedIdentities.count <= 1 + public func getDiscussionReadJSON(discussionId: DiscussionIdentifier, lastReadMessageServerTimestamp: Date) throws -> DiscussionReadJSON { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussionWithId(discussionId: discussionId) + } + + switch try discussion.kind { + case .oneToOne(withContactIdentity: let contact): + guard let contactCryptoId = contact?.cryptoId else { + throw ObvUICoreDataError.couldNotFindContact + } + return DiscussionReadJSON( + lastReadMessageServerTimestamp: lastReadMessageServerTimestamp, + oneToOneIdentifier: .init(ownedCryptoId: self.cryptoId, contactCryptoId: contactCryptoId)) + case .groupV1(withContactGroup: let group): + guard let groupV1Identifier = try group?.getGroupId() else { + throw ObvUICoreDataError.couldNotDetemineGroupV1 + } + return DiscussionReadJSON( + lastReadMessageServerTimestamp: lastReadMessageServerTimestamp, + groupV1Identifier: groupV1Identifier) + case .groupV2(withGroup: let group): + guard let groupV2Identifier = group?.groupIdentifier else { + throw ObvUICoreDataError.couldNotDetemineGroupV2 + } + return DiscussionReadJSON( + lastReadMessageServerTimestamp: lastReadMessageServerTimestamp, + groupV2Identifier: groupV2Identifier) } - } + } + } -// MARK: - Utils +// MARK: - Getting discussions extension PersistedObvOwnedIdentity { - public func set(apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?) { - self.apiKeyStatus = apiKeyStatus - self.apiPermissions = apiPermissions - self.apiKeyExpirationDate = apiKeyExpirationDate - } + public func getPersistedDiscussion(withDiscussionId discussionId: DiscussionIdentifier) throws -> PersistedDiscussion { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return discussion + } + } -// MARK: - Handling badge counts for tabs +// MARK: - Getting messages objectIDs for refreshing them in the view context and other extension PersistedObvOwnedIdentity { - /// Refreshes the badge count for the discussions tab. Called during bootstrap. - /// Note that this **cannot** be called in a context including pending changes since those will **not** be taken into account (this is a limitation of Core Data, see https://developer.apple.com/documentation/coredata/nsfetchrequest/1506724-includespendingchanges). - public func refreshBadgeCountForDiscussionsTab() throws { - guard self.managedObjectContext != nil else { assertionFailure(); throw Self.makeError(message: "Cannot find context") } - let newNumberOfNewMessages = try PersistedDiscussion.countSumOfNewMessagesWithinUnmutedDiscussionsForOwnedIdentity(self) - let numberOfMutedDiscussionsMentioningOwnedIdentity = try PersistedDiscussion.countNumberOfMutedDiscussionsWithNewMessageMentioningOwnedIdentity(self) - let newBadgeCountForDiscussionsTab = newNumberOfNewMessages + numberOfMutedDiscussionsMentioningOwnedIdentity - if self.badgeCountForDiscussionsTab != newBadgeCountForDiscussionsTab { - self.badgeCountForDiscussionsTab = newBadgeCountForDiscussionsTab + public func getObjectIDOfReceivedMessage(discussionId: DiscussionIdentifier, messageId: ReceivedMessageIdentifier) throws -> NSManagedObjectID { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussion } + + return try discussion.getObjectIDOfReceivedMessage(messageId: messageId) + } - /// Refreshes the badge count for the discussions tab. Called during bootstrap and each time a significant change occurs at the ``PersistedInvitation`` level. - /// To the contrary of ``PersistedObvOwnedIdentity.refreshBadgeCountForDiscussionsTab()``, this method can be called within the context that updated a ``PersistedInvitation`` since the count method we used does take pending changes into account. - public func refreshBadgeCountForInvitationsTab() throws { - guard self.managedObjectContext != nil else { assertionFailure(); throw Self.makeError(message: "Cannot find context") } - let newBadgeCountForInvitationsTab = try PersistedInvitation.computeBadgeCountForInvitationsTab(of: self) - if self.badgeCountForInvitationsTab != newBadgeCountForInvitationsTab { - self.badgeCountForInvitationsTab = newBadgeCountForInvitationsTab + public func getReceivedMessageTypedObjectID(discussionId: DiscussionIdentifier, receivedMessageId: ReceivedMessageIdentifier) throws -> TypeSafeManagedObjectID { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return try discussion.getReceivedMessageTypedObjectID(receivedMessageId: receivedMessageId) + + } + + + public static func getDiscussionIdentifiers(from persistedDiscussionObjectID: TypeSafeManagedObjectID, within context: NSManagedObjectContext) throws -> (ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier) { + + guard let discussion = try PersistedDiscussion.get(objectID: persistedDiscussionObjectID.objectID, within: context) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + guard let ownedIdentity = discussion.ownedIdentity else { + throw ObvUICoreDataError.couldNotFindOwnedIdentity } + + return (ownedIdentity.cryptoId, try discussion.identifier) + } + + public static func getDiscussionIdentifiers(from draftPermanentID: ObvManagedObjectPermanentID, within context: NSManagedObjectContext) throws -> (ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier) { + + guard let draft = try PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: context) else { + throw ObvUICoreDataError.couldNotFindDraft + } + + let discussion = draft.discussion + + guard let ownedIdentity = discussion.ownedIdentity else { + throw ObvUICoreDataError.couldNotFindOwnedIdentity + } - /// Called exclusively by a persisted discussion of this owned identity, when it updates its own number of new messages, or when it updates the Boolean indicating that a new message mentions an this owned identity. - /// This method is required as ``PersistedObvOwnedIdentity.refreshBadgeCountForDiscussionsTab()`` cannot be called atomically with changes made at the ``PersistedDiscussion`` level. - func incrementBadgeCountForDiscussionsTab(by value: Int) { - guard value != 0 else { return } - self.badgeCountForDiscussionsTab = max(0, self.badgeCountForDiscussionsTab + value) + return (ownedIdentity.cryptoId, try discussion.identifier) + + } + + + public func getDiscussionObjectID(discussionId: DiscussionIdentifier) throws -> NSManagedObjectID { + + guard let discussion = try PersistedDiscussion.getPersistedDiscussion(ownedIdentity: self, discussionId: discussionId) else { + throw ObvUICoreDataError.couldNotFindDiscussion + } + + return discussion.objectID + } } @@ -435,6 +1899,12 @@ extension PersistedObvOwnedIdentity { ]) return value ? isHiddenPredicate : NSCompoundPredicate(notPredicateWithSubpredicate: isHiddenPredicate) } + static func whereIsActiveIs(_ isActive: Bool) -> NSPredicate { + NSPredicate(Key.isActive, is: isActive) + } + static func isKeycloakManaged(is value: Bool) -> NSPredicate { + NSPredicate(Key.isKeycloakManaged, is: value) + } } @@ -443,6 +1913,12 @@ extension PersistedObvOwnedIdentity { } + public static func deleteOwnedIdentity(ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws { + guard let ownedIdentity = try get(cryptoId: ownedCryptoId, within: context) else { return } + try ownedIdentity.delete() + } + + static func getManagedObject(withPermanentID permanentID: ObvManagedObjectPermanentID, within context: NSManagedObjectContext) throws -> PersistedObvOwnedIdentity? { let request: NSFetchRequest = PersistedObvOwnedIdentity.fetchRequest() request.predicate = Predicate.withPermanentID(permanentID) @@ -483,6 +1959,26 @@ extension PersistedObvOwnedIdentity { } + public static func getCryptoIdsOfAllActiveOwnedIdentities(within context: NSManagedObjectContext) throws -> Set { + let request: NSFetchRequest = PersistedObvOwnedIdentity.fetchRequest() + request.predicate = Predicate.whereIsActiveIs(true) + request.propertiesToFetch = [Predicate.Key.identity.rawValue] + let ownedIdentities = try context.fetch(request) + return Set(ownedIdentities.map({ $0.cryptoId })) + } + + + public static func countCryptoIdsOfAllActiveNonHiddenNonKeycloakOwnedIdentities(within context: NSManagedObjectContext) throws -> Int { + let request: NSFetchRequest = PersistedObvOwnedIdentity.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.whereIsActiveIs(true), + Predicate.isHidden(false), + Predicate.isKeycloakManaged(is: false), + ]) + return try context.count(for: request) + } + + static func get(objectID: NSManagedObjectID, within context: NSManagedObjectContext) throws -> PersistedObvOwnedIdentity? { return try context.existingObject(with: objectID) as? PersistedObvOwnedIdentity } @@ -680,3 +2176,258 @@ extension PersistedObvOwnedIdentity: MentionableIdentity { return .owned(typedObjectID) } } + + +// MARK: - For snapshot purposes + +extension PersistedObvOwnedIdentity { + + var syncSnapshotNode: PersistedObvOwnedIdentitySyncSnapshotNode { + get throws { + guard let managedObjectContext else { throw ObvUICoreDataError.noContext } + return try .init(ownedCryptoId: cryptoId, + customDisplayName: customDisplayName, + contacts: contacts, + contactGroups: contactGroups, + contactGroupsV2: contactGroupsV2, + within: managedObjectContext) + } + } + +} + + +struct PersistedObvOwnedIdentitySyncSnapshotNode: ObvSyncSnapshotNode { + + private let domain: Set + private let customDisplayName: String? + private let contacts: [ObvCryptoId: PersistedObvContactIdentitySyncSnapshotNode] + private let groupsV1: [GroupV1Identifier: PersistedContactGroupSyncSnapshotNode] + private let groupsV2: [GroupV2Identifier: PersistedGroupV2SyncSnapshotNode] + private let pinnedDiscussions: [ObvSyncAtom.DiscussionIdentifier] // Part of the pinned domain + private let hasPinnedDiscussions: Bool? // Part of the pinned domain + private let orderedPinnedDiscussions: Bool // Always true under iOS + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case customDisplayName = "custom_name" + case contacts = "contacts" + case groupsV1 = "groups" + case groupsV2 = "groups2" + case pinnedDiscussions = "pinned_discussions" // not used as a domain + case pinned = "pinned" + case domain = "domain" + case orderedPinnedDiscussions = "pinned_sorted" + } + + private static let defaultDomain: Set = Set(CodingKeys.allCases.filter({ $0 != .domain && $0 != .pinnedDiscussions })) + + + init(ownedCryptoId: ObvCryptoId, customDisplayName: String?, contacts: Set, contactGroups: Set, contactGroupsV2: Set, within context: NSManagedObjectContext) throws { + + self.domain = Self.defaultDomain + + self.customDisplayName = customDisplayName + // contacts + do { + let keysAndValues: [(ObvCryptoId, PersistedObvContactIdentitySyncSnapshotNode)] = contacts.compactMap { ($0.cryptoId, $0.syncSnapshotNode) } + self.contacts = Dictionary(keysAndValues, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + // groupsV1 + do { + let keysAndValues: [(GroupV1Identifier, PersistedContactGroupSyncSnapshotNode)] = contactGroups.compactMap { + guard let groupV1Identifier = try? $0.getGroupV1Identifier() else { return nil } + return (groupV1Identifier, $0.syncSnapshotNode) } + self.groupsV1 = Dictionary(keysAndValues, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + // groupsV2 + do { + let keysAndValues: [(GroupV2Identifier, PersistedGroupV2SyncSnapshotNode)] = contactGroupsV2.compactMap { ($0.groupIdentifier, $0.syncSnapshotNode) } + self.groupsV2 = Dictionary(keysAndValues, uniquingKeysWith: { (first, _) in assertionFailure(); return first }) + } + // hasPinnedDiscussions and pinnedDiscussions + do { + let pinnedDiscussions = try PersistedDiscussion.getAllPinnedDiscussions(ownedCryptoId: ownedCryptoId, with: context) + self.hasPinnedDiscussions = !pinnedDiscussions.isEmpty + self.pinnedDiscussions = pinnedDiscussions.compactMap({ Self.getObvSyncAtomDiscussionIdentifierFrom(persistedDiscussion: $0) }) + } + + self.orderedPinnedDiscussions = true + + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(customDisplayName, forKey: .customDisplayName) + // contacts + do { + let dict: [String: PersistedObvContactIdentitySyncSnapshotNode] = .init(contacts, keyMapping: { $0.getIdentity().base64EncodedString() }, valueMapping: { $0 }) + try container.encode(dict, forKey: .contacts) + } + // groupsV1 + do { + let dict: [String: PersistedContactGroupSyncSnapshotNode] = .init(groupsV1, keyMapping: { $0.description }, valueMapping: { $0 }) + try container.encode(dict, forKey: .groupsV1) + } + // groupsV2 + do { + let dict: [String: PersistedGroupV2SyncSnapshotNode] = .init(groupsV2, keyMapping: { $0.base64EncodedString() }, valueMapping: { $0 }) + try container.encode(dict, forKey: .groupsV2) + } + // pinned + try container.encode(hasPinnedDiscussions, forKey: .pinned) + try container.encode(pinnedDiscussions.map({ $0.obvEncode().rawData }), forKey: .pinnedDiscussions) + try container.encode(orderedPinnedDiscussions, forKey: .orderedPinnedDiscussions) + // domain + try container.encode(domain, forKey: .domain) + } + + + init(from decoder: Decoder) throws { + do { + let values = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.customDisplayName = try values.decodeIfPresent(String.self, forKey: .customDisplayName) + // Decode contacts (the keys are the contact identities) + do { + let dict = try values.decodeIfPresent([String: PersistedObvContactIdentitySyncSnapshotNode].self, forKey: .contacts) ?? [:] + self.contacts = Dictionary(dict, keyMapping: { $0.base64EncodedToData?.identityToObvCryptoId }, valueMapping: { $0 }) + } + // Decode groupsV1 (the keys are GroupV1Identifier) + do { + let dict = try values.decodeIfPresent([String: PersistedContactGroupSyncSnapshotNode].self, forKey: .groupsV1) ?? [:] + self.groupsV1 = Dictionary(dict, keyMapping: { GroupV1Identifier($0) }, valueMapping: { $0 }) + } + // Decode groupsV2 (the keys are GroupV2.Identifier) + do { + let dict = try values.decodeIfPresent([String: PersistedGroupV2SyncSnapshotNode].self, forKey: .groupsV2) ?? [:] + self.groupsV2 = Dictionary(dict, keyMapping: { GroupV2Identifier(base64Encoded: $0) }, valueMapping: { $0 }) + } + // hasPinnedDiscussions and pinnedDiscussions + do { + self.hasPinnedDiscussions = try values.decodeIfPresent(Bool.self, forKey: .pinned) + self.orderedPinnedDiscussions = try values.decodeIfPresent(Bool.self, forKey: .orderedPinnedDiscussions) ?? false + let rawPinned = try values.decodeIfPresent([Data].self, forKey: .pinnedDiscussions) ?? [] + self.pinnedDiscussions = rawPinned + .compactMap({ ObvEncoded(withRawData: $0) }) + .compactMap({ ObvSyncAtom.DiscussionIdentifier($0) }) + } + } catch { + assertionFailure() + throw error + } + } + + + /// User the values of this node to udate the `PersistedObvOwnedIdentity` + /// - Parameter ownedIdentity: The `PersistedObvOwnedIdentity` instance to update + func useToUpdate(_ ownedIdentity: PersistedObvOwnedIdentity) { + + if domain.contains(.customDisplayName) { + _ = ownedIdentity.setOwnedCustomDisplayName(to: self.customDisplayName) + } + + if domain.contains(.contacts) { + contacts.forEach { (contactCryptoId, contactNode) in + guard let contact = try? PersistedObvContactIdentity.get(cryptoId: contactCryptoId, ownedIdentity: ownedIdentity, whereOneToOneStatusIs: .any) else { + assertionFailure() + return + } + contactNode.useToUpdate(contact) + } + } + + if domain.contains(.groupsV1) { + groupsV1.forEach { (groupId, groupNode) in + guard let group = try? PersistedContactGroup.getContactGroup(groupIdentifier: groupId, ownedIdentity: ownedIdentity) else { + assertionFailure() + return + } + groupNode.useToUpdate(group) + } + } + + if domain.contains(.groupsV2) { + groupsV2.forEach { (groupId, groupNode) in + guard let group = try? PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupId) else { + assertionFailure() + return + } + groupNode.useToUpdate(group) + } + } + + if domain.contains(.pinned) { + let discussionObjectIDs: [NSManagedObjectID] = pinnedDiscussions.compactMap { discussionIdentifier in + switch discussionIdentifier { + case .oneToOne(let contactCryptoId): + return try? PersistedOneToOneDiscussion.getPersistedOneToOneDiscussion(ownedIdentity: ownedIdentity, oneToOneDiscussionId: .contactCryptoId(contactCryptoId: contactCryptoId))?.objectID + case .groupV1(groupIdentifier: let groupIdentifier): + return try? PersistedGroupDiscussion.getPersistedGroupDiscussion(ownedIdentity: ownedIdentity, groupV1DiscussionId: .groupV1Identifier(groupV1Identifier: groupIdentifier))?.objectID + case .groupV2(let groupIdentifier): + return try? PersistedGroupV2Discussion.getPersistedGroupV2Discussion(ownedIdentity: ownedIdentity, groupV2DiscussionId: .groupV2Identifier(groupV2Identifier: groupIdentifier))?.objectID + } + } + assert(ownedIdentity.managedObjectContext != nil) + if let context = ownedIdentity.managedObjectContext { + _ = try? PersistedDiscussion.setPinnedDiscussions( + persistedDiscussionObjectIDs: discussionObjectIDs, + ordered: orderedPinnedDiscussions, + ownedCryptoId: ownedIdentity.cryptoId, + within: context) + } + } + + } + + + enum ObvError: Error { + case ownedIdentityDoesNotExist + case contextIsNil + } + + // Helpers + + private static func getObvSyncAtomDiscussionIdentifierFrom(persistedDiscussion: PersistedDiscussion) -> ObvSyncAtom.DiscussionIdentifier? { + guard let discussionKind = try? persistedDiscussion.kind else { assertionFailure(); return nil } + switch discussionKind { + case .oneToOne(withContactIdentity: let persistedContact): + guard let persistedContact else { assertionFailure(); return nil } + return .oneToOne(contactCryptoId: persistedContact.cryptoId) + case .groupV1(withContactGroup: let groupV1): + guard let groupV1 else { assertionFailure(); return nil } + guard let groupId = try? groupV1.getGroupId() else { assertionFailure(); return nil } + return .groupV1(groupIdentifier: groupId) + case .groupV2(withGroup: let groupV2): + guard let groupV2 else { assertionFailure(); return nil } + return .groupV2(groupIdentifier: groupV2.groupIdentifier) + } + + } + +} + + +// MARK: - Private Helpers + +private extension String { + + var base64EncodedToData: Data? { + guard let data = Data(base64Encoded: self) else { assertionFailure(); return nil } + return data + } + +} + + +private extension Data { + + var identityToObvCryptoId: ObvCryptoId? { + guard let cryptoId = try? ObvCryptoId(identity: self) else { assertionFailure(); return nil } + return cryptoId + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionLocalConfiguration+Backup.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionLocalConfiguration+Backup.swift index 935f7f5e..fa10096f 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionLocalConfiguration+Backup.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionLocalConfiguration+Backup.swift @@ -24,7 +24,7 @@ extension PersistedDiscussionConfigurationBackupItem { func updateExistingInstance(_ configuration: PersistedDiscussionLocalConfiguration) { - configuration.doSendReadReceipt = self.sendReadReceipt + _ = configuration.setDoSendReadReceipt(to: self.sendReadReceipt) if let muteNotificationsEndDate = self.muteNotificationsEndDate { configuration.setMuteNotificationsEndDate(with: muteNotificationsEndDate) } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionLocalConfiguration.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionLocalConfiguration.swift index 36675e6a..5f315bdf 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionLocalConfiguration.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionLocalConfiguration.swift @@ -22,7 +22,8 @@ import CoreData import os.log import ObvEngine import OlvidUtils -import struct ObvTypes.ObvCryptoId +import ObvSettings +import ObvTypes @objc(PersistedDiscussionLocalConfiguration) @@ -96,7 +97,7 @@ public final class PersistedDiscussionLocalConfiguration: NSManagedObject, ObvEr } } - public var doSendReadReceipt: Bool? { + public private(set) var doSendReadReceipt: Bool? { get { rawDoSendReadReceipt?.boolValue } @@ -106,6 +107,15 @@ public final class PersistedDiscussionLocalConfiguration: NSManagedObject, ObvEr } } + + /// Returns `true` iff the value had to be changed in database + func setDoSendReadReceipt(to newValue: Bool?) -> Bool { + guard doSendReadReceipt != newValue else { return false } + doSendReadReceipt = newValue + return true + } + + public var doFetchContentRichURLsMetadata: ObvMessengerSettings.Discussions.FetchContentRichURLsMetadataChoice? { get { guard let raw = rawDoFetchContentRichURLsMetadata else { return nil } @@ -488,3 +498,37 @@ extension PersistedDiscussionLocalConfiguration { self.muteNotificationsEndDate = muteNotificationsEndDate } } + + +// MARK: - For snapshot purposes + +extension PersistedDiscussionLocalConfiguration { + + var syncSnapshotNode: PersistedDiscussionLocalConfigurationSyncSnapshotItem { + .init(doSendReadReceipt: doSendReadReceipt) + } + +} + + +struct PersistedDiscussionLocalConfigurationSyncSnapshotItem: Codable, Hashable { + + private let doSendReadReceipt: Bool? + + init(doSendReadReceipt: Bool?) { + self.doSendReadReceipt = doSendReadReceipt + } + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case doSendReadReceipt = "send_read_receipt" + } + + // Synthesized implementation of encode(to encoder: Encoder) + + // Synthesized implementation of init(from decoder: Decoder) + + func useToUpdate(_ configuration: PersistedDiscussionLocalConfiguration) { + _ = configuration.setDoSendReadReceipt(to: doSendReadReceipt) + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionSharedConfiguration.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionSharedConfiguration.swift index 6907447d..272d7a8c 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionSharedConfiguration.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/Configuration/PersistedDiscussionSharedConfiguration.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,7 @@ import ObvEngine import ObvTypes import ObvCrypto import OlvidUtils +import ObvSettings @objc(PersistedDiscussionSharedConfiguration) @@ -73,33 +74,24 @@ public enum PersistedDiscussionSharedConfigurationValue { case readOnce(readOnce: Bool) case existenceDuration(existenceDuration: TimeInterval?) case visibilityDuration(visibilityDuration: TimeInterval?) -} - - -extension PersistedDiscussionSharedConfigurationValue { - - public func updatePersistedDiscussionSharedConfigurationValue(with configuration: PersistedDiscussionSharedConfiguration, initiatorAsOwnedCryptoId ownedCryptoId: ObvCryptoId) throws { - let newExpiration: ExpirationJSON + + public func toExpirationJSON(overriding config: PersistedDiscussionSharedConfiguration) -> ExpirationJSON { switch self { - case .readOnce(readOnce: let readOnce): - newExpiration = ExpirationJSON( - readOnce: readOnce, - visibilityDuration: configuration.visibilityDuration, - existenceDuration: configuration.existenceDuration) - case .existenceDuration(existenceDuration: let existenceDuration): - newExpiration = ExpirationJSON( - readOnce: configuration.readOnce, - visibilityDuration: configuration.visibilityDuration, - existenceDuration: existenceDuration) - case .visibilityDuration(visibilityDuration: let visibilityDuration): - newExpiration = ExpirationJSON( - readOnce: configuration.readOnce, - visibilityDuration: visibilityDuration, - existenceDuration: configuration.existenceDuration) + case .readOnce(let readOnce): + return ExpirationJSON(readOnce: readOnce, + visibilityDuration: config.visibilityDuration, + existenceDuration: config.existenceDuration) + case .existenceDuration(let existenceDuration): + return ExpirationJSON(readOnce: config.readOnce, + visibilityDuration: config.visibilityDuration, + existenceDuration: existenceDuration) + case .visibilityDuration(let visibilityDuration): + return ExpirationJSON(readOnce: config.readOnce, + visibilityDuration: visibilityDuration, + existenceDuration: config.existenceDuration) } - try configuration.replacePersistedDiscussionSharedConfiguration(with: newExpiration, initiator: .ownedIdentity(ownedCryptoId: ownedCryptoId)) } - + } @@ -138,200 +130,86 @@ extension PersistedDiscussionSharedConfiguration { self.visibilityDuration != other.visibilityDuration } + public enum Initiator { case ownedIdentity(ownedCryptoId: ObvCryptoId) case contact(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId, messageUploadTimestampFromServer: Date) case keycloak(lastModificationTimestamp: Date) } - public func replacePersistedDiscussionSharedConfiguration(with expirationJSON: ExpirationJSON, initiator: Initiator) throws { - - try ensureInitiatorIsAllowedToModifyThisSharedConfiguration(initiator: initiator) + func replacePersistedDiscussionSharedConfiguration(with expirationJSON: ExpirationJSON) throws -> Bool { + guard self.readOnce != expirationJSON.readOnce || self.existenceDuration != expirationJSON.existenceDuration || self.visibilityDuration != expirationJSON.visibilityDuration else { - return + let sharedSettingHadToBeUpdated = false + return sharedSettingHadToBeUpdated } self.readOnce = expirationJSON.readOnce self.existenceDuration = expirationJSON.existenceDuration self.visibilityDuration = expirationJSON.visibilityDuration self.version += 1 - // Insert a message into the discussion indicating that the shared settings - - do { - try insertSystemMessageIndicatingThatDiscussionSharedConfigurationWasUpdated(initiator: initiator) - } catch { - assertionFailure(error.localizedDescription) // In producation, continue anyway - } + let sharedSettingHadToBeUpdated = true + return sharedSettingHadToBeUpdated } - - - public func mergePersistedDiscussionSharedConfiguration(with remoteConfig: DiscussionSharedConfigurationJSON, initiator: Initiator) throws { - - try ensureInitiatorIsAllowedToModifyThisSharedConfiguration(initiator: initiator) - guard let discussion = self.discussion else { - throw Self.makeError(message: "Cannot find discussion. It may have been deleted recently.") - } - + + /// Exclusively called from ``PersistedDiscussion.mergeReceivedDiscussionSharedConfiguration(_:)``. Shall not be called from elsewhere. + func mergePersistedDiscussionSharedConfiguration(with remoteConfig: PersistedDiscussion.SharedConfiguration) throws -> (sharedSettingHadToBeUpdated: Bool, weShouldSendBackOurSharedSettings: Bool) { + + let weShouldSendBackOurSharedSettingsIfAllowedTo: Bool + let sharedSettingHadToBeUpdated: Bool + if remoteConfig.version < self.version { + // We ignore the received remote config - ObvMessengerCoreDataNotification.anOldDiscussionSharedConfigurationWasReceived(persistedDiscussionObjectID: discussion.objectID) - .postOnDispatchQueue() - return + sharedSettingHadToBeUpdated = false + weShouldSendBackOurSharedSettingsIfAllowedTo = true + } else if remoteConfig.version == self.version { - // The version numbers are identical. If the config are identical, we do nothing. - // Otherwise, we keep the "gcd" of the two configurations (the other party will do the same) - // Note that we intentionally do not change the version - guard self.readOnce != remoteConfig.expiration.readOnce || - self.existenceDuration != remoteConfig.expiration.existenceDuration || - self.visibilityDuration != remoteConfig.expiration.visibilityDuration else { - return + + // The version numbers are identical. + // We compute the pgcd of the two configs and replace our shared settings we this pgcd. + // Then, if our resulting shared settings are different from those we received, we send them back. + + let pgcdReadOnce = self.readOnce || remoteConfig.expiration.readOnce + let pgcdExistenceDuration = TimeInterval.optionalMin(self.existenceDuration, remoteConfig.expiration.existenceDuration) + let pgcdVisibilityDuration = TimeInterval.optionalMin(self.visibilityDuration, remoteConfig.expiration.visibilityDuration) + + if self.readOnce != pgcdReadOnce || self.existenceDuration != pgcdExistenceDuration || self.visibilityDuration != pgcdVisibilityDuration { + self.readOnce = pgcdReadOnce + self.existenceDuration = pgcdExistenceDuration + self.visibilityDuration = pgcdVisibilityDuration + sharedSettingHadToBeUpdated = true + } else { + sharedSettingHadToBeUpdated = false + } + + if self.readOnce != remoteConfig.expiration.readOnce || + self.existenceDuration != remoteConfig.expiration.existenceDuration || + self.visibilityDuration != remoteConfig.expiration.visibilityDuration { + weShouldSendBackOurSharedSettingsIfAllowedTo = true + } else { + weShouldSendBackOurSharedSettingsIfAllowedTo = false } - self.readOnce = self.readOnce || remoteConfig.expiration.readOnce - self.existenceDuration = TimeInterval.optionalMin(self.existenceDuration, remoteConfig.expiration.existenceDuration) - self.visibilityDuration = TimeInterval.optionalMin(self.visibilityDuration, remoteConfig.expiration.visibilityDuration) + } else { + // The remote config is more recent that ours, so we replace ours self.readOnce = remoteConfig.expiration.readOnce self.existenceDuration = remoteConfig.expiration.existenceDuration self.visibilityDuration = remoteConfig.expiration.visibilityDuration self.version = remoteConfig.version // This necessarily updates our version number + sharedSettingHadToBeUpdated = true + weShouldSendBackOurSharedSettingsIfAllowedTo = false + } - // Insert a message into the discussion indicating that the shared settings - - do { - try insertSystemMessageIndicatingThatDiscussionSharedConfigurationWasUpdated(initiator: initiator) - } catch { - assertionFailure(error.localizedDescription) // In producation, continue anyway - } - - } - - - private func insertSystemMessageIndicatingThatDiscussionSharedConfigurationWasUpdated(initiator: Initiator) throws { - - guard let managedObjectContext else { - throw Self.makeError(message: "Cannot find context") - } - - guard let discussion else { - throw Self.makeError(message: "Cannot find discussion") - } - - let optionalContactIdentity: PersistedObvContactIdentity? - let markAsRead: Bool - let messageUploadTimestampFromServer: Date? + return (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettingsIfAllowedTo) - switch initiator { - case .contact(ownedCryptoId: let ownedCryptoId, contactCryptoId: let contactCryptoId, messageUploadTimestampFromServer: let timestamp): - optionalContactIdentity = try PersistedObvContactIdentity.get(contactCryptoId: contactCryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: managedObjectContext) - markAsRead = false - messageUploadTimestampFromServer = timestamp - case .keycloak(lastModificationTimestamp: let timestamp): - optionalContactIdentity = nil - markAsRead = false - messageUploadTimestampFromServer = timestamp - case .ownedIdentity: - optionalContactIdentity = nil - markAsRead = true - messageUploadTimestampFromServer = nil - } - - try PersistedMessageSystem.insertUpdatedDiscussionSharedSettingsSystemMessage( - within: discussion, - optionalContactIdentity: optionalContactIdentity, - expirationJSON: self.toExpirationJSON(), - messageUploadTimestampFromServer: messageUploadTimestampFromServer, - markAsRead: markAsRead) - - } - - - private func ensureInitiatorIsAllowedToModifyThisSharedConfiguration(initiator: Initiator) throws { - - guard let discussion = self.discussion else { assertionFailure(); return } - - switch discussion.status { - - case .locked: - throw Self.makeError(message: "The discussion is locked") - - case .preDiscussion: - throw Self.makeError(message: "The discussion is a pre-discussion") - - case .active: - - switch try? discussion.kind { - - case .oneToOne(withContactIdentity: let contactIdentity): - switch initiator { - case .ownedIdentity(ownedCryptoId: let ownedCryptoId): - guard discussion.ownedIdentity?.cryptoId == ownedCryptoId else { - throw Self.makeError(message: "The initiator (owned identity) is not the owned identity of the one-to-one discussion") - } - case .contact(ownedCryptoId: let ownedCryptoId, contactCryptoId: let contactCryptoId, messageUploadTimestampFromServer: _): - guard discussion.ownedIdentity?.cryptoId == ownedCryptoId && contactIdentity?.cryptoId == contactCryptoId else { - throw Self.makeError(message: "The initiator is neither the contact or the owned identity of the one-to-one discussion") - } - case .keycloak: - throw Self.makeError(message: "The share configuration of a oneToOne discussion cannot be modified by keycloak") - } - - case .groupV1(withContactGroup: let contactGroup): - guard let contactGroup = contactGroup else { - throw Self.makeError(message: "Cannot find contact group") - } - switch initiator { - case .ownedIdentity(ownedCryptoId: let ownedCryptoId): - guard contactGroup.ownerIdentity == ownedCryptoId.getIdentity() else { - throw Self.makeError(message: "The initiator of the change is not the group owner") - } - case .contact(ownedCryptoId: let ownedCryptoId, contactCryptoId: let contactCryptoId, messageUploadTimestampFromServer: _): - guard contactGroup.ownerIdentity == contactCryptoId.getIdentity() && contactGroup.ownedIdentity?.cryptoId == ownedCryptoId else { - throw Self.makeError(message: "The initiator of the change is not the group owner") - } - case .keycloak: - throw Self.makeError(message: "The share configuration of a groupV1 discussion cannot be modified by keycloak") - } - - case .groupV2(withGroup: let group): - guard let group = group else { - throw Self.makeError(message: "Cannot find group v2") - } - switch initiator { - case .ownedIdentity(ownedCryptoId: let ownedCryptoId): - guard group.ownedIdentityIdentity == ownedCryptoId.getIdentity() else { - throw Self.makeError(message: "Unexpected owned identity") - } - guard group.ownedIdentityIsAllowedToChangeSettings else { - throw Self.makeError(message: "The initiator is not allowed to change settings") - } - case .contact(ownedCryptoId: let ownedCryptoId, contactCryptoId: let contactCryptoId, messageUploadTimestampFromServer: _): - guard group.ownedIdentityIdentity == ownedCryptoId.getIdentity() else { - throw Self.makeError(message: "Unexpected owned identity") - } - guard let initiatorAsMember = group.otherMembers.first(where: { $0.identity == contactCryptoId.getIdentity() }) else { - throw Self.makeError(message: "The initiator is not part of the group") - } - guard initiatorAsMember.isAllowedToChangeSettings else { - throw Self.makeError(message: "The initiator is not allowed to change settings") - } - case .keycloak: - guard group.keycloakManaged else { - throw Self.makeError(message: "A Keycloak server cannot change the configuration of a non-keycloak group") - } - } - - case .none: - assertionFailure() - throw Self.makeError(message: "Unknown discussion type") - } - } } @@ -410,7 +288,14 @@ extension PersistedDiscussionSharedConfiguration { let expiration = self.toExpirationJSON() switch try discussion?.kind { case .oneToOne, .none: - return DiscussionSharedConfigurationJSON(version: self.version, expiration: expiration) + guard let oneToOneIdentifier = try (discussion as? PersistedOneToOneDiscussion)?.oneToOneIdentifier else { + assertionFailure() + throw Self.makeError(message: "Could not determine oneToOneIdentifier") + } + return DiscussionSharedConfigurationJSON( + version: self.version, + expiration: expiration, + oneToOneIdentifier: oneToOneIdentifier) case .groupV1(withContactGroup: let contactGroup): guard let contactGroup = contactGroup else { throw Self.makeError(message: "Could not find contact group of group discussion") } let groupV1Identifier = try contactGroup.getGroupId() @@ -450,3 +335,63 @@ extension PersistedDiscussionSharedConfiguration { } } + + + +// MARK: - For snapshot purposes + +extension PersistedDiscussionSharedConfiguration { + + var syncSnapshotNode: PersistedDiscussionSharedConfigurationSyncSnapshotItem { + .init(version: version, + existenceDuration: existenceDuration, + visibilityDuration: visibilityDuration, + readOnce: readOnce) + } + +} + + +struct PersistedDiscussionSharedConfigurationSyncSnapshotItem: Codable, Hashable { + + private let version: Int + private let existenceDuration: TimeInterval? + private let visibilityDuration: TimeInterval? + private let readOnce: Bool + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case version = "version" + case existenceDuration = "existence_duration" + case visibilityDuration = "visibility_duration" + case readOnce = "read_once" + } + + + + init(version: Int, existenceDuration: TimeInterval?, visibilityDuration: TimeInterval?, readOnce: Bool) { + self.version = version + self.existenceDuration = existenceDuration + self.visibilityDuration = visibilityDuration + self.readOnce = readOnce + } + + + // Synthesized implementation of encode(to encoder: Encoder) + + init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.version = try container.decodeIfPresent(Int.self, forKey: .version) ?? 0 + self.existenceDuration = try container.decodeIfPresent(TimeInterval.self, forKey: .existenceDuration) + self.visibilityDuration = try container.decodeIfPresent(TimeInterval.self, forKey: .visibilityDuration) + self.readOnce = try container.decodeIfPresent(Bool.self, forKey: .readOnce) ?? false + } + + + func useToUpdate(_ configuration: PersistedDiscussionSharedConfiguration) { + configuration.setVersion(with: version) + configuration.setExistenceDuration(with: existenceDuration) + configuration.setVisibilityDuration(with: visibilityDuration) + configuration.setReadOnce(with: readOnce) + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedDiscussion.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedDiscussion.swift index e43c43a2..8b166698 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedDiscussion.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedDiscussion.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,7 +21,10 @@ import Foundation import CoreData import os.log import ObvTypes -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvEngine +import ObvSettings + @objc(PersistedDiscussion) public class PersistedDiscussion: NSManagedObject { @@ -45,8 +48,8 @@ public class PersistedDiscussion: NSManagedObject { @NSManaged public private(set) var aNewReceivedMessageDoesMentionOwnedIdentity: Bool // True iff a new received message has doesMentionOwnedIdentity set to True @NSManaged public private(set) var isArchived: Bool - @NSManaged var lastOutboundMessageSequenceNumber: Int - @NSManaged var lastSystemMessageSequenceNumber: Int + @NSManaged private var lastOutboundMessageSequenceNumber: Int + @NSManaged private var lastSystemMessageSequenceNumber: Int @NSManaged private var normalizedSearchKey: String? @NSManaged public private(set) var numberOfNewMessages: Int // Set to 0 when this discussion is muted (not to be used when displaying the number of new messages when entering the discussion) @NSManaged private var onChangeFlag: Int // Only used internally to trigger UI updates, transient @@ -54,7 +57,7 @@ public class PersistedDiscussion: NSManagedObject { @NSManaged private var rawPinnedIndex: NSNumber? @NSManaged private(set) var pinnedSectionKeyPath: String // Shall only be modified in the setter of pinnedIndex @NSManaged private var rawStatus: Int - @NSManaged private(set) var senderThreadIdentifier: UUID + @NSManaged private(set) var senderThreadIdentifier: UUID // Of the owned identity, on this device (it is different for the same owned identity on her other owned devices) @NSManaged public private(set) var timestampOfLastMessage: Date @NSManaged public private(set) var title: String @@ -66,11 +69,24 @@ public class PersistedDiscussion: NSManagedObject { @NSManaged public private(set) var localConfiguration: PersistedDiscussionLocalConfiguration @NSManaged public private(set) var messages: Set @NSManaged public private(set) var ownedIdentity: PersistedObvOwnedIdentity? // If nil, this entity is eventually cascade-deleted - @NSManaged private(set) var remoteDeleteAndEditRequests: Set @NSManaged public private(set) var sharedConfiguration: PersistedDiscussionSharedConfiguration // Other variables + /// 2023-07-17: This is the most appropriate identifier to use in, e.g., notifications + public var identifier: DiscussionIdentifier { + get throws { + switch try self.kind { + case .oneToOne: + return .oneToOne(id: .objectID(objectID: self.objectID)) + case .groupV1: + return .groupV1(id: .objectID(objectID: self.objectID)) + case .groupV2: + return .groupV2(id: .objectID(objectID: self.objectID)) + } + } + } + private var changedKeys = Set() public private(set) var status: Status { @@ -128,6 +144,34 @@ public class PersistedDiscussion: NSManagedObject { } } + + public func getLimitedVisibilityMessageOpenedJSON(for message: PersistedMessage) throws -> LimitedVisibilityMessageOpenedJSON { + guard self == message.discussion else { + throw ObvError.unexpectedDiscussionForMessage + } + guard let messageReference = message.toMessageReferenceJSON() else { + throw ObvError.couldNotConstructMessageReferenceJSON + } + switch try self.kind { + case .oneToOne: + guard let oneToOneIdentifier = try (self as? PersistedOneToOneDiscussion)?.oneToOneIdentifier else { + throw ObvError.couldNotDetermineDiscussionIdentifier + } + return LimitedVisibilityMessageOpenedJSON(messageReference: messageReference, oneToOneIdentifier: oneToOneIdentifier) + case .groupV1(withContactGroup: let contactGroup): + guard let groupId = try contactGroup?.getGroupId() else { + throw ObvError.couldNotDetermineDiscussionIdentifier + } + return LimitedVisibilityMessageOpenedJSON(messageReference: messageReference, groupV1Identifier: groupId) + case .groupV2(withGroup: let group): + guard let groupIdentifier = group?.groupIdentifier else { + throw ObvError.couldNotDetermineDiscussionIdentifier + } + return LimitedVisibilityMessageOpenedJSON(messageReference: messageReference, groupV2Identifier: groupIdentifier) + } + } + + public var discussionPermanentID: ObvManagedObjectPermanentID { ObvManagedObjectPermanentID(entityName: PersistedDiscussion.entityName, uuid: self.permanentUUID) } @@ -198,7 +242,7 @@ public class PersistedDiscussion: NSManagedObject { // MARK: - Initializer - convenience init(title: String, ownedIdentity: PersistedObvOwnedIdentity, forEntityName entityName: String, status: Status, shouldApplySharedConfigurationFromGlobalSettings: Bool, sharedConfigurationToKeep: PersistedDiscussionSharedConfiguration? = nil, localConfigurationToKeep: PersistedDiscussionLocalConfiguration? = nil, permanentUUIDToKeep: UUID?, draftToKeep: PersistedDraft?, pinnedIndexToKeep: Int?, timestampOfLastMessageToKeep: Date?) throws { + convenience init(title: String, ownedIdentity: PersistedObvOwnedIdentity, forEntityName entityName: String, status: Status, shouldApplySharedConfigurationFromGlobalSettings: Bool) throws { guard let context = ownedIdentity.managedObjectContext else { throw Self.makeError(message: "Could not find context") @@ -212,33 +256,28 @@ public class PersistedDiscussion: NSManagedObject { self.lastSystemMessageSequenceNumber = 0 self.normalizedSearchKey = nil self.numberOfNewMessages = 0 - self.permanentUUID = permanentUUIDToKeep ?? UUID() - self.rawPinnedIndex = pinnedIndexToKeep as? NSNumber - self.pinnedSectionKeyPath = (pinnedIndexToKeep == nil) ? PinnedSectionKeyPathValue.unpinned.rawValue : PinnedSectionKeyPathValue.pinned.rawValue + self.permanentUUID = UUID() + self.rawPinnedIndex = nil + self.pinnedSectionKeyPath = PinnedSectionKeyPathValue.unpinned.rawValue self.onChangeFlag = 0 self.senderThreadIdentifier = UUID() - self.timestampOfLastMessage = timestampOfLastMessageToKeep ?? Date() + self.timestampOfLastMessage = Date() self.title = title self.status = status self.aNewReceivedMessageDoesMentionOwnedIdentity = false - if sharedConfigurationToKeep != nil { - self.sharedConfiguration = sharedConfigurationToKeep! - } else { - let sharedConfiguration = try PersistedDiscussionSharedConfiguration(discussion: self) - if shouldApplySharedConfigurationFromGlobalSettings { - sharedConfiguration.setValuesUsingSettings() - } - self.sharedConfiguration = sharedConfiguration + let sharedConfiguration = try PersistedDiscussionSharedConfiguration(discussion: self) + if shouldApplySharedConfigurationFromGlobalSettings { + sharedConfiguration.setValuesUsingSettings() } + self.sharedConfiguration = sharedConfiguration - let localConfiguration = try (localConfigurationToKeep ?? PersistedDiscussionLocalConfiguration(discussion: self)) + let localConfiguration = try PersistedDiscussionLocalConfiguration(discussion: self) self.localConfiguration = localConfiguration self.sharedConfiguration = sharedConfiguration - self.draft = try draftToKeep ?? PersistedDraft(within: self) + self.draft = try PersistedDraft(within: self) self.messages = Set() self.ownedIdentity = ownedIdentity - self.remoteDeleteAndEditRequests = Set() } @@ -275,154 +314,930 @@ public class PersistedDiscussion: NSManagedObject { // MARK: Performing deletions - /// Deletes this discussion after making sure the `requester` is allowed to do so. If the `requester` is `nil`, this discussion is deleted without any check. This makes it possible to easily perform cleaning. - public func deleteDiscussion(requester: RequesterOfMessageDeletion?) throws { + private func deletePersistedDiscussion() throws { + guard let context = managedObjectContext else { + throw ObvError.noContext + } + context.delete(self) + } + + + /// This is expected to be called from the UI in order to determine if it can shows the global delete options for this discussion. + /// + /// This is implemented by creating a child context in which we simulated the global deletion of the discussion. This method returns `true` iff the deletion succeeds. + /// Of course, the child context is not saved to prevent any side-effect (view contexts are never saved anyway). + public var globalDeleteActionCanBeMadeAvailable: Bool { + guard let context = self.managedObjectContext else { + assertionFailure() + return false + } + guard context.concurrencyType == .mainQueueConcurrencyType else { + assertionFailure() + return false + } + + // We don't want to show that a global deletion is available when it makes no sense, e.g., for a group v2 discussion when we have no contact (i.e., discussion with self) and no other owned device + if let groupV2Discussion = self as? PersistedGroupV2Discussion, let group = groupV2Discussion.group, let ownedIdentity { + if group.otherMembers.isEmpty && ownedIdentity.devices.count < 2 { + return false + } + } - // Make sure the deletion is allowed + // The following code makes sure a call to a global deletion would succeed. + // We return true iff it is the case - if let requester = requester { - try throwIfRequesterIsNotAllowedToDeleteDiscussion(requester: requester) + let childViewContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) + childViewContext.parent = context + guard let discussionInChildViewContext = try? PersistedDiscussion.get(objectID: self.objectID, within: childViewContext) else { assertionFailure(); return false } + guard let ownedIdentity = discussionInChildViewContext.ownedIdentity else { assertionFailure(); return false } + do { + try ownedIdentity.processDiscussionDeletionRequestFromCurrentDeviceOfThisOwnedIdentity(discussionObjectID: discussionInChildViewContext.typedObjectID, deletionType: .global) + return true + } catch { + return false } - - // The deletion is allowed, we can perform it now + } + + + private func setLastOutboundMessageSequenceNumber(to newLastOutboundMessageSequenceNumber: Int) { + if self.lastOutboundMessageSequenceNumber != newLastOutboundMessageSequenceNumber { + self.lastOutboundMessageSequenceNumber = newLastOutboundMessageSequenceNumber + } + } + + + func incrementLastOutboundMessageSequenceNumber() -> Int { + setLastOutboundMessageSequenceNumber(to: lastOutboundMessageSequenceNumber + 1) + return lastOutboundMessageSequenceNumber + } + + + private func setLastSystemMessageSequenceNumber(to newLastSystemMessageSequenceNumber: Int) { + if self.lastSystemMessageSequenceNumber != newLastSystemMessageSequenceNumber { + self.lastSystemMessageSequenceNumber = newLastSystemMessageSequenceNumber + } + } + + + func incrementLastSystemMessageSequenceNumber() -> Int { + self.setLastSystemMessageSequenceNumber(to: lastSystemMessageSequenceNumber + 1) + return lastSystemMessageSequenceNumber + } + + // MARK: - Status management + + func setStatus(to newStatus: Status) throws { + self.status = newStatus + } + + + // MARK: - Receiving discussion shared configurations + + /// We mark this method as `final` just because, at the time of writing, we don't need to override it in subclasses. + final func mergeReceivedDiscussionSharedConfiguration(_ remoteSharedConfiguration: SharedConfiguration) throws -> (sharedSettingHadToBeUpdated: Bool, weShouldSendBackOurSharedSettings: Bool) { - guard let context = self.managedObjectContext else { - throw Self.makeError(message: "Could not find context") + switch self.status { + + case .locked: + + throw ObvError.cannotChangeShareConfigurationOfLockedDiscussion + + case .preDiscussion: + + throw ObvError.cannotChangeShareConfigurationOfPreDiscussion + + case .active: + + let (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettingsIfAllowedTo) = try self.sharedConfiguration.mergePersistedDiscussionSharedConfiguration(with: remoteSharedConfiguration) + return (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettingsIfAllowedTo) + } - context.delete(self) } - /// This methods throws an error if the requester of the discussion deletion is not allowed to perform such a deletion. - /// - /// The `deletionType` parameter only makes sense when the requester is an owned identity, and the discussion is a group v2 discussion: - /// - for a `.local` deletion, deletion is always allowed - /// - for a `.global` deletion, we make sure the owned identity is allowed to perform a global deletion in the corresponding group - func throwIfRequesterIsNotAllowedToDeleteDiscussion(requester: RequesterOfMessageDeletion) throws { + func replaceReceivedDiscussionSharedConfiguration(with expiration: ExpirationJSON) throws -> Bool { + + switch self.status { + + case .locked: + throw ObvError.cannotChangeShareConfigurationOfLockedDiscussion + + case .preDiscussion: + throw ObvError.cannotChangeShareConfigurationOfPreDiscussion + + case .active: + let sharedSettingHadToBeUpdated = try self.sharedConfiguration.replacePersistedDiscussionSharedConfiguration(with: expiration) + return sharedSettingHadToBeUpdated + + } + + } + + + func insertSystemMessageIndicatingThatDiscussionSharedConfigurationWasUpdatedByOwnedIdentity(messageUploadTimestampFromServer: Date?) throws { - // Locked and preDiscussion can only be locally deleted by an owned identity + try PersistedMessageSystem.insertUpdatedDiscussionSharedSettingsSystemMessage( + within: self, + optionalContactIdentity: nil, + expirationJSON: self.sharedConfiguration.toExpirationJSON(), + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + markAsRead: true) + + } + + + func insertSystemMessageIndicatingThatDiscussionSharedConfigurationWasUpdatedByContact(persistedContact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date?) throws { - switch status { - case .locked, .preDiscussion: - switch requester { - case .contact: - throw Self.makeError(message: "A contact cannot delete a locked or preDiscussion") - case .ownedIdentity(let ownedCryptoId, let deletionType): - guard let discussionOwnedCryptoId = ownedIdentity?.cryptoId else { - return // Rare case, we allow deletion - } - guard (discussionOwnedCryptoId == ownedCryptoId) else { - assertionFailure() - throw Self.makeError(message: "Unexpected owned identity for deleting this discussion") + try PersistedMessageSystem.insertUpdatedDiscussionSharedSettingsSystemMessage( + within: self, + optionalContactIdentity: persistedContact, + expirationJSON: self.sharedConfiguration.toExpirationJSON(), + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + markAsRead: false) + + } + + + struct SharedConfiguration { + let version: Int + let expiration: ExpirationJSON + } + + + // MARK: - Processing wipe requests + + /// Called when receiving a wipe message request from a contact or from another owned device + func processWipeMessageRequest(of messagesToDelete: [MessageReferenceJSON], from requester: ObvCryptoId, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + switch self.status { + + case .locked: + + throw ObvError.aContactCannotWipeMessageFromLockedDiscussion + + case .preDiscussion: + + throw ObvError.aContactCannotWipeMessageFromPrediscussion + + case .active: + + let infosForSent = try self.processWipeMessageRequestForPersistedMessageSent( + among: messagesToDelete, + from: requester, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + let infosForReceived = try self.processWipeMessageRequestForPersistedMessageReceived( + among: messagesToDelete, + from: requester, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + let infos = infosForSent + infosForReceived + + return infos + + } + + } + + + private func processWipeMessageRequestForPersistedMessageSent(among messagesToDelete: [MessageReferenceJSON], from requesterCryptoId: ObvCryptoId, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + guard let ownedIdentity else { + throw ObvError.ownedIdentityIsNil + } + + // Get the sent messages to wipe + + var sentMessagesToWipe = [PersistedMessageSent]() + do { + let sentMessages = messagesToDelete + .filter({ $0.senderIdentifier == ownedIdentity.cryptoId.getIdentity() }) + for sentMessage in sentMessages { + if let persistedMessageSent = try PersistedMessageSent.get(senderSequenceNumber: sentMessage.senderSequenceNumber, + senderThreadIdentifier: sentMessage.senderThreadIdentifier, + ownedIdentity: sentMessage.senderIdentifier, + discussion: self), + !persistedMessageSent.isWiped { + sentMessagesToWipe.append(persistedMessageSent) + } else { + _ = try RemoteRequestSavedForLater.createWipeOrDeleteRequest( + requesterCryptoId: requesterCryptoId, + messageReference: sentMessage, + serverTimestamp: messageUploadTimestampFromServer, + discussion: self) } - switch deletionType { - case .local: - return // Allow deletion - case .global: - throw Self.makeError(message: "We cannot globally delete a locked or preDiscussion") + } + } + + // Wipe each message and notify on context change + + var infos = [InfoAboutWipedOrDeletedPersistedMessage]() + + for message in sentMessagesToWipe { + + do { + try message.wipeThisMessage(requesterCryptoId: requesterCryptoId) + } catch { + assertionFailure(error.localizedDescription) // In production, continue with next message + continue + } + + let info = InfoAboutWipedOrDeletedPersistedMessage( + kind: .wiped, + discussionPermanentID: self.discussionPermanentID, + messagePermanentID: message.messagePermanentID) + + infos.append(info) + + } + + return infos + + } + + + private func processWipeMessageRequestForPersistedMessageReceived(among messagesToDelete: [MessageReferenceJSON], from requesterCryptoId: ObvCryptoId, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + guard let ownedIdentity else { + throw ObvError.ownedIdentityIsNil + } + + // Get received messages to wipe. If a message cannot be found, save the request for later if `saveRequestIfMessageCannotBeFound` is true + + var receivedMessagesToWipe = [PersistedMessageReceived]() + do { + let receivedMessages = messagesToDelete + .filter({ $0.senderIdentifier != ownedIdentity.cryptoId.getIdentity() }) + for receivedMessage in receivedMessages { + if let persistedMessageReceived = try PersistedMessageReceived.get(senderSequenceNumber: receivedMessage.senderSequenceNumber, + senderThreadIdentifier: receivedMessage.senderThreadIdentifier, + contactIdentity: receivedMessage.senderIdentifier, + discussion: self), + !persistedMessageReceived.isWiped { + receivedMessagesToWipe.append(persistedMessageReceived) + } else { + _ = try RemoteRequestSavedForLater.createWipeOrDeleteRequest( + requesterCryptoId: requesterCryptoId, + messageReference: receivedMessage, + serverTimestamp: messageUploadTimestampFromServer, + discussion: self) } } + } + + var infos = [InfoAboutWipedOrDeletedPersistedMessage]() + + for message in receivedMessagesToWipe { + + do { + try message.wipeThisMessage(requesterCryptoId: requesterCryptoId) + } catch { + assertionFailure(error.localizedDescription) // In production, continue with next message + continue + } + + let info = InfoAboutWipedOrDeletedPersistedMessage( + kind: .wiped, + discussionPermanentID: self.discussionPermanentID, + messagePermanentID: message.messagePermanentID) + + infos.append(info) + + } + + return infos + + } + + + // MARK: - Processing discussion (all messages) remote delete requests + + func processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws { + + switch self.status { + + case .locked: + + throw ObvError.aContactCannotDeleteAllMessagesWithinLockedDiscussion + case .preDiscussion: + + throw ObvError.aContactCannotDeleteAllMessagesWithinPreDiscussion + case .active: - break // We need to consider the discussion kind to decide whether we should throw or not + + guard !self.messages.isEmpty else { + return + } + + self.messages.removeAll() + + do { + try self.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: messageUploadTimestampFromServer) + _ = try PersistedMessageSystem(.discussionWasRemotelyWiped, optionalContactIdentity: contact, optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: self, timestamp: messageUploadTimestampFromServer) + } catch { + assertionFailure(error.localizedDescription) + } + } + + } + + + /// Called when receiving a wipe discussion request from another owned device. + func processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws { - // If we reach this point, we are considering an active discussion + // The owned identity can only globally delete a discussion when it is active. + switch status { + + case .locked: + + throw ObvError.ownedIdentityCannotGloballyDeleteLockedDiscussion + + case .preDiscussion: + + throw ObvError.ownedIdentityCannotGloballyDeletePrediscussion + + case .active: + + self.messages.removeAll() - switch try kind { + do { + try self.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: messageUploadTimestampFromServer) + _ = try PersistedMessageSystem(.discussionWasRemotelyWiped, optionalContactIdentity: nil, optionalOwnedCryptoId: ownedIdentity.cryptoId, optionalCallLogItem: nil, discussion: self, timestamp: messageUploadTimestampFromServer) + } catch { + assertionFailure(error.localizedDescription) + } + + } + + } + + + // MARK: - Processing delete requests from the owned identity + + func processMessageDeletionRequestRequestedFromCurrentDevice(of ownedIdentity: PersistedObvOwnedIdentity, messageToDelete: PersistedMessage, deletionType: DeletionType) throws -> InfoAboutWipedOrDeletedPersistedMessage { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + guard messageToDelete.discussion == self else { + throw ObvError.unexpectedDiscussionForMessageToDelete + } + + // We can only globally delete a message from an active discussion + + switch deletionType { + case .local: + break + case .global: + switch self.status { + case .locked, .preDiscussion: + throw ObvError.cannotGloballyDeleteMessageFromLockedOrPrediscussion + case .active: + break + } + } + + let info = try messageToDelete.processMessageDeletionRequestRequestedFromCurrentDevice(deletionType: deletionType) + + return info + + } + + + func processDiscussionDeletionRequestFromCurrentDevice(of ownedIdentity: PersistedObvOwnedIdentity, deletionType: DeletionType) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + // We can only globally delete a discussion from an active discussion + + switch deletionType { + case .local: + break + case .global: + switch self.status { + case .locked, .preDiscussion: + throw ObvError.cannotGloballyDeleteLockedOrPrediscussion + case .active: + break + } + } + + self.messages.removeAll() + + do { + try self.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: true, messageTimestamp: Date()) + } catch { + assertionFailure(error.localizedDescription) + } + + switch self.status { + case .active, .preDiscussion: + try self.archive() + case .locked: + try self.deletePersistedDiscussion() + } + + } + + + // MARK: - Receiving messages and attachments from a contact or another owned device + + func createOrOverridePersistedMessageReceived(from contact: PersistedObvContactIdentity, obvMessage: ObvMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?, overridePreviousPersistedMessage: Bool) throws -> (discussionPermanentID: DiscussionPermanentID, attachmentFullyReceivedOrCancelledByServer: [ObvAttachment]) { + + // Try to insert a EndToEndEncryptedSystemMessage if the discussion is empty. + + try? self.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: true, messageTimestamp: Date()) + + // If overridePreviousPersistedMessage is true, we update any previously stored message from DB. If no such message exists, we create it. + // If overridePreviousPersistedMessage is false, we make sure that no existing PersistedMessageReceived exists in DB. If this is the case, we create the message. + // Note that processing attachments requires overridePreviousPersistedMessage to be true + + let attachmentsFullyReceivedOrCancelledByServer: [ObvAttachment] + let createdOrUpdatedMessage: PersistedMessageReceived + + if overridePreviousPersistedMessage { + + os_log("Creating or updating a persisted message (overridePreviousPersistedMessage: %{public}@)", log: Self.log, type: .debug, overridePreviousPersistedMessage.description) + + (createdOrUpdatedMessage, attachmentsFullyReceivedOrCancelledByServer) = try PersistedMessageReceived.createOrUpdatePersistedMessageReceived( + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + from: contact, + in: self) + + } else { + + // Make sure the message does not already exists in DB + + guard try PersistedMessageReceived.get(messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, from: contact) == nil else { + return (self.discussionPermanentID, []) + } + + // We make sure that message has a body (for now, this message comes from the notification extension, and there is no point in creating a `PersistedMessageReceived` if there is no body. + + guard messageJSON.body?.isEmpty == false else { + return (self.discussionPermanentID, []) + } + + // Create the PersistedMessageReceived + + os_log("Creating a persisted message (overridePreviousPersistedMessage: %{public}@)", log: Self.log, type: .debug, overridePreviousPersistedMessage.description) + + (createdOrUpdatedMessage, attachmentsFullyReceivedOrCancelledByServer) = try PersistedMessageReceived.createPersistedMessageReceived( + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + from: contact, + in: self) + + } + + do { + try RemoteRequestSavedForLater.applyRemoteRequestsSavedForLater(for: createdOrUpdatedMessage) + } catch { + assertionFailure(error.localizedDescription) // Continue anyway + } + + return (self.discussionPermanentID, attachmentsFullyReceivedOrCancelledByServer) + + } + + + func createPersistedMessageSentFromOtherOwnedDevice(from ownedIdentity: PersistedObvOwnedIdentity, obvOwnedMessage: ObvOwnedMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?) throws -> [ObvOwnedAttachment] { + + // Make sure the received message is not a read once message. If this is the case, we don't want to show the message on this (other) owned device + + if let expiration = messageJSON.expiration { + guard !expiration.readOnce else { + return obvOwnedMessage.attachments + } + } + + guard let context = self.managedObjectContext else { + throw ObvError.noContext + } + + // Try to insert a EndToEndEncryptedSystemMessage if the discussion is empty + + try? PersistedDiscussion.insertSystemMessagesIfDiscussionIsEmpty(discussionObjectID: self.objectID, markAsRead: true, within: context) + + // Make sure the message does not already exists in DB + + guard try PersistedMessageSent.getPersistedMessageSentFromOtherOwnedDevice(messageIdentifierFromEngine: obvOwnedMessage.messageIdentifierFromEngine, in: self) == nil else { + return [] + } + + // Create the PersistedMessageSent + + let (createdMessage, attachmentFullyReceivedOrCancelledByServer) = try PersistedMessageSent.createPersistedMessageSentFromOtherOwnedDevice( + obvOwnedMessage: obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + in: self) + + do { + try RemoteRequestSavedForLater.applyRemoteRequestsSavedForLater(for: createdMessage) + } catch { + assertionFailure(error.localizedDescription) // Continue anyway + } + + return attachmentFullyReceivedOrCancelledByServer + + } + + + // MARK: - Processing edit requests + + func processUpdateMessageRequest(_ updateMessageJSON: UpdateMessageJSON, receivedFromContactCryptoId contactCryptoId: ObvCryptoId, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + switch self.status { - case .oneToOne, .groupV1: + case .locked: + + throw ObvError.aMessageCannotBeUpdatedInLockedDiscussion + + case .preDiscussion: - // It is always ok to delete a oneToOne or a groupV1 discussion - return + throw ObvError.aMessageCannotBeUpdatedInPrediscussion + + case .active: + + // Since the request comes from a contact, we restrict the message search to received messages. + // If the message cannot be found, save the request for later. + + let messageToEdit = updateMessageJSON.messageToEdit - case .groupV2(withGroup: let group): - - guard let group = group else { + if let message = try PersistedMessageReceived.get(senderSequenceNumber: messageToEdit.senderSequenceNumber, + senderThreadIdentifier: messageToEdit.senderThreadIdentifier, + contactIdentity: messageToEdit.senderIdentifier, + discussion: self) { - // If the group cannot be found (which is unexpected), we allow the deletion of the discussion only if the request comes from an owned identity. - - switch requester { - case .ownedIdentity(ownedCryptoId: _, deletionType: let deletionType): - switch deletionType { - case .local: - return // Allow deletion - case .global: - throw Self.makeError(message: "Since we cannot find the group, we disallow global deletion by owned identity") - } - case .contact: - assertionFailure() - throw Self.makeError(message: "Since we cannot find the group, we disallow deletion by a contact") + guard message.contactIdentity?.cryptoId == contactCryptoId else { + throw ObvError.aContactRequestedUpdateOnMessageFromSomeoneElse } - + + try message.processUpdateReceivedMessageRequest( + newTextBody: updateMessageJSON.newTextBody, + newUserMentions: updateMessageJSON.userMentions, + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + requester: contactCryptoId) + + return message + + } else { + + _ = try RemoteRequestSavedForLater.createEditRequest( + requesterCryptoId: contactCryptoId, + updateMessageJSON: updateMessageJSON, + serverTimestamp: messageUploadTimestampFromServer, + discussion: self) + + return nil + } - // For a group v2 discussion, we make sure the requester is either the owned identity or a member with the appropriate rights. + } - switch requester { + } + + + func processUpdateMessageRequest(_ updateMessageJSON: UpdateMessageJSON, receivedFromOwnedCryptoId ownedCryptoId: ObvCryptoId, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.ownedIdentity?.cryptoId == ownedCryptoId else { + throw ObvError.unexpectedOwnedIdentity + } + + switch self.status { + + case .locked: - case .ownedIdentity(ownedCryptoId: let ownedCryptoId, deletionType: let deletionType): + throw ObvError.aMessageCannotBeUpdatedInLockedDiscussion + + case .preDiscussion: + + throw ObvError.aMessageCannotBeUpdatedInPrediscussion + + case .active: + + // Since the request comes from an owned identity, we restrict the message search to sent messages. + // If the message cannot be found, save the request for later. + + let messageToEdit = updateMessageJSON.messageToEdit + + if let message = try PersistedMessageSent.get(senderSequenceNumber: messageToEdit.senderSequenceNumber, + senderThreadIdentifier: messageToEdit.senderThreadIdentifier, + ownedIdentity: messageToEdit.senderIdentifier, + discussion: self) { - guard (try group.ownCryptoId == ownedCryptoId) else { - assertionFailure() - throw Self.makeError(message: "Unexpected owned identity for deleting this discussion") - } - switch deletionType { - case .local: - return // Allow deletion - case .global: - guard group.ownedIdentityIsAllowedToRemoteDeleteAnything else { - throw Self.makeError(message: "Owned identity is not allowed to perform a global (remote) delete") - } - return // Allow deletion + guard message.discussion?.ownedIdentity?.cryptoId == ownedCryptoId else { + throw ObvError.unexpectedOwnedIdentity } - case .contact(let ownedCryptoId, let contactCryptoId, _): + try message.processUpdateSentMessageRequest( + newTextBody: updateMessageJSON.newTextBody, + newUserMentions: updateMessageJSON.userMentions, + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + requester: ownedCryptoId) + + return message + + } else { + + _ = try RemoteRequestSavedForLater.createEditRequest( + requesterCryptoId: ownedCryptoId, + updateMessageJSON: updateMessageJSON, + serverTimestamp: messageUploadTimestampFromServer, + discussion: self) + + return nil + + } + + } + + } + + + func processLocalUpdateMessageRequest(from ownedIdentity: PersistedObvOwnedIdentity, for messageSent: PersistedMessageSent, newTextBody: String?) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + guard messageSent.discussion == self else { + throw ObvError.unexpectedDiscussionForMessageToEdit + } + + switch self.status { + + case .locked: + + throw ObvError.aMessageCannotBeUpdatedInLockedDiscussion + + case .preDiscussion: + + throw ObvError.aMessageCannotBeUpdatedInPrediscussion + + case .active: + + try messageSent.replaceContentWith(newBody: newTextBody, newMentions: Set()) + + } + + } + + + // MARK: - Process reaction requests + + func processSetOrUpdateReactionOnMessageLocalRequest(from ownedIdentity: PersistedObvOwnedIdentity, for message: PersistedMessage, newEmoji: String?) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + guard message.discussion == self else { + throw ObvError.unexpectedDiscussionForMessageToEdit + } + + switch self.status { + + case .locked: + + throw ObvError.aMessageCannotBeUpdatedInLockedDiscussion + + case .preDiscussion: + + throw ObvError.aMessageCannotBeUpdatedInPrediscussion + + case .active: + + try message.setReactionFromOwnedIdentity(withEmoji: newEmoji, messageUploadTimestampFromServer: nil) + + } + + } + + + func processSetOrUpdateReactionOnMessageRequest(_ reactionJSON: ReactionJSON, receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + switch self.status { + + case .locked: + + throw ObvError.aMessageCannotBeUpdatedInLockedDiscussion + + case .preDiscussion: + + throw ObvError.aMessageCannotBeUpdatedInPrediscussion + + case .active: + + let messageToEdit = reactionJSON.messageReference + + if let message = try PersistedMessageReceived.get(senderSequenceNumber: messageToEdit.senderSequenceNumber, + senderThreadIdentifier: messageToEdit.senderThreadIdentifier, + contactIdentity: messageToEdit.senderIdentifier, + discussion: self) { + + try message.setReactionFromContact(contact, withEmoji: reactionJSON.emoji, reactionTimestamp: messageUploadTimestampFromServer) + + return message + + } else if let message = try PersistedMessageSent.get(senderSequenceNumber: messageToEdit.senderSequenceNumber, + senderThreadIdentifier: messageToEdit.senderThreadIdentifier, + ownedIdentity: messageToEdit.senderIdentifier, + discussion: self) { + + try message.setReactionFromContact(contact, withEmoji: reactionJSON.emoji, reactionTimestamp: messageUploadTimestampFromServer) + + return message + + } else { + + _ = try RemoteRequestSavedForLater.createSetOrUpdateReactionRequest( + requesterCryptoId: contact.cryptoId, + reactionJSON: reactionJSON, + serverTimestamp: messageUploadTimestampFromServer, + discussion: self) + + return nil + + } + + } + + } + + + func processSetOrUpdateReactionOnMessageRequest(_ reactionJSON: ReactionJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + switch self.status { + + case .locked: + + throw ObvError.aMessageCannotBeUpdatedInLockedDiscussion + + case .preDiscussion: + + throw ObvError.aMessageCannotBeUpdatedInPrediscussion + + case .active: + + let messageToEdit = reactionJSON.messageReference + + if let message = try PersistedMessageReceived.get(senderSequenceNumber: messageToEdit.senderSequenceNumber, + senderThreadIdentifier: messageToEdit.senderThreadIdentifier, + contactIdentity: messageToEdit.senderIdentifier, + discussion: self) { + + try message.setReactionFromOwnedIdentity(withEmoji: reactionJSON.emoji, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return message + + } else if let message = try PersistedMessageSent.get(senderSequenceNumber: messageToEdit.senderSequenceNumber, + senderThreadIdentifier: messageToEdit.senderThreadIdentifier, + ownedIdentity: messageToEdit.senderIdentifier, + discussion: self) { + + try message.setReactionFromOwnedIdentity(withEmoji: reactionJSON.emoji, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return message + + } else { + + _ = try RemoteRequestSavedForLater.createSetOrUpdateReactionRequest( + requesterCryptoId: ownedIdentity.cryptoId, + reactionJSON: reactionJSON, + serverTimestamp: messageUploadTimestampFromServer, + discussion: self) + + return nil + + } + + } + + } + + + // MARK: - Process screen capture detections + + func processDetectionThatSensitiveMessagesWereCaptured(_ screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, from contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws { + + switch self.status { + + case .locked: + + throw ObvError.aMessageCannotBeUpdatedInLockedDiscussion + + case .preDiscussion: + + throw ObvError.aMessageCannotBeUpdatedInPrediscussion + + case .active: + + _ = try PersistedMessageSystem.insertContactIdentityDidCaptureSensitiveMessages(within: self, contact: contact, timestamp: messageUploadTimestampFromServer) + + } + + } + + + func processDetectionThatSensitiveMessagesWereCaptured(_ screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, from ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws { + + switch self.status { + + case .locked: + + throw ObvError.aMessageCannotBeUpdatedInLockedDiscussion + + case .preDiscussion: + + throw ObvError.aMessageCannotBeUpdatedInPrediscussion + + case .active: + + _ = try PersistedMessageSystem.insertOwnedIdentityDidCaptureSensitiveMessages(within: self, ownedCryptoId: ownedIdentity.cryptoId, timestamp: messageUploadTimestampFromServer) + + } + + } + + func processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by ownedIdentity: PersistedObvOwnedIdentity) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + switch self.status { + + case .locked: - guard (try group.ownCryptoId == ownedCryptoId) else { - assertionFailure() - throw Self.makeError(message: "Unexpected owned identity associated to contact for deleting this discussion") - } - guard let member = group.otherMembers.first(where: { $0.identity == contactCryptoId.getIdentity() }) else { - throw Self.makeError(message: "The deletion requester is not part of the group") - } - guard member.isAllowedToRemoteDeleteAnything else { - assertionFailure() - throw Self.makeError(message: "The member is not allowed to delete this discussion") - } - return // Allow deletion - } + throw ObvError.aMessageCannotBeUpdatedInLockedDiscussion + + case .preDiscussion: + + throw ObvError.aMessageCannotBeUpdatedInPrediscussion + + case .active: + + _ = try PersistedMessageSystem.insertOwnedIdentityDidCaptureSensitiveMessages(within: self) } - + } +} + + +// MARK: - Process requests for this discussion shared settings + +extension PersistedDiscussion { - func requesterIsAllowedToDeleteDiscussion(requester: RequesterOfMessageDeletion) -> Bool { - do { - try throwIfRequesterIsNotAllowedToDeleteDiscussion(requester: requester) - } catch { + func processQuerySharedSettingsRequest(querySharedSettingsJSON: QuerySharedSettingsJSON) throws -> Bool { + + let sharedSettingsVersionKnownByContact = querySharedSettingsJSON.knownSharedSettingsVersion ?? Int.min + let sharedExpirationKnownByContact = querySharedSettingsJSON.knownSharedExpiration + + // Get the values known locally + + let sharedSettingsVersionKnownLocally = sharedConfiguration.version + let sharedExpirationKnownLocally: ExpirationJSON? + if sharedSettingsVersionKnownLocally >= 0 { + sharedExpirationKnownLocally = sharedConfiguration.toExpirationJSON() + } else { + sharedExpirationKnownLocally = nil + } + + // If the locally known values are identical to the values known to the contact, we are done, we do not need to answer the query + + guard sharedSettingsVersionKnownByContact <= sharedSettingsVersionKnownLocally || sharedExpirationKnownByContact != sharedExpirationKnownLocally else { return false } - return true - } - - - public var globalDeleteActionCanBeMadeAvailable: Bool { - guard let ownedCryptoId = ownedIdentity?.cryptoId else { return false } - let requester = RequesterOfMessageDeletion.ownedIdentity(ownedCryptoId: ownedCryptoId, deletionType: .global) - return requesterIsAllowedToDeleteDiscussion(requester: requester) - } - - - // MARK: - Status management - func setStatus(to newStatus: Status) throws { - self.status = newStatus - } + // If we reach this point, something differed between the shared settings of our contact and ours -} + var weShouldSentBackTheSharedSettings = false + if sharedSettingsVersionKnownLocally > sharedSettingsVersionKnownByContact { + weShouldSentBackTheSharedSettings = true + } else if sharedSettingsVersionKnownLocally == sharedSettingsVersionKnownByContact && sharedExpirationKnownByContact != sharedExpirationKnownLocally { + weShouldSentBackTheSharedSettings = true + } + return weShouldSentBackTheSharedSettings + + } + +} // MARK: - Utility methods for PersistedSystemMessage showing the number of new messages @@ -590,20 +1405,50 @@ extension PersistedDiscussion { } - public static func setPinnedDiscussions(persistedDiscussionObjectIDs: [NSManagedObjectID], ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws { + /// Returns `true` iff at least one discussion's pinnedIndex was updated in database + public static func setPinnedDiscussions(persistedDiscussionObjectIDs: [NSManagedObjectID], ordered: Bool, ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws -> Bool { + + let pinnedDiscussionBeforeUpdate = try PersistedDiscussion.getAllPinnedDiscussions(ownedCryptoId: ownedCryptoId, with: context).map({ $0.objectID }) + + let orderedObjectIDsOfPinnedDiscussions: [NSManagedObjectID] + + if ordered { + + orderedObjectIDsOfPinnedDiscussions = persistedDiscussionObjectIDs + + } else { + + // This happens when receiving a list of pinned discussions from an Android device, where the pinned discussion behaviour is different (they are not sorted) + + let objectIDsOfCurrentlyPinnedDiscussions = try Self.getObjectIDsOfAllPinnedDiscussions(ownedCryptoId: ownedCryptoId, with: context) + let setOfReceivedPinnedDiscussions = Set(persistedDiscussionObjectIDs) + let objectIDsToKeepPinned = objectIDsOfCurrentlyPinnedDiscussions.filter({ setOfReceivedPinnedDiscussions.contains($0) }) + let setOfObjectIDsToKeepPinned = Set(objectIDsToKeepPinned) + let objectIDsToAdd = persistedDiscussionObjectIDs.filter({ !setOfObjectIDsToKeepPinned.contains($0) }) + orderedObjectIDsOfPinnedDiscussions = objectIDsToKeepPinned + objectIDsToAdd + + } try removePinnedFromPinnedDiscussionsForOwnedIdentity(ownedCryptoId, within: context) - let retrievedDiscussions = try persistedDiscussionObjectIDs + let retrievedDiscussions = try orderedObjectIDsOfPinnedDiscussions .compactMap({ try PersistedDiscussion.get(objectID: $0, within: context) }) .filter({ $0.ownedIdentity?.cryptoId == ownedCryptoId }) - assert(retrievedDiscussions.count == persistedDiscussionObjectIDs.count) + assert(retrievedDiscussions.count == orderedObjectIDsOfPinnedDiscussions.count) for (index, discussion) in retrievedDiscussions.enumerated() { - discussion.pinnedIndex = index + if discussion.pinnedIndex != index { + discussion.pinnedIndex = index + } } + let pinnedDiscussionAfterUpdate = try PersistedDiscussion.getAllPinnedDiscussions(ownedCryptoId: ownedCryptoId, with: context).map({ $0.objectID }) + + let atLeastOnePinnedIndexWasChanged = pinnedDiscussionBeforeUpdate != pinnedDiscussionAfterUpdate + + return atLeastOnePinnedIndexWasChanged + } } @@ -622,9 +1467,9 @@ extension PersistedDiscussion { public func insertSystemMessagesIfDiscussionIsEmpty(markAsRead: Bool, messageTimestamp: Date) throws { guard self.messages.isEmpty else { return } - let systemMessage = try PersistedMessageSystem(.discussionIsEndToEndEncrypted, optionalContactIdentity: nil, optionalCallLogItem: nil, discussion: self, timestamp: messageTimestamp) + let systemMessage = try PersistedMessageSystem(.discussionIsEndToEndEncrypted, optionalContactIdentity: nil, optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: self, timestamp: messageTimestamp) if markAsRead { - systemMessage.status = .read + systemMessage.markAsRead() } insertUpdatedDiscussionSharedSettingsSystemMessageIfRequired(markAsRead: markAsRead) } @@ -790,18 +1635,40 @@ extension PersistedDiscussion { guard self.normalizedSearchKey != newNormalizedSearchKey else { return } self.normalizedSearchKey = newNormalizedSearchKey } + + + func getPersistedMessageReceivedCorrespondingTo(messageReference: MessageReferenceJSON) throws -> PersistedMessageReceived? { + return try PersistedMessageReceived.get( + senderSequenceNumber: messageReference.senderSequenceNumber, + senderThreadIdentifier: messageReference.senderThreadIdentifier, + contactIdentity: messageReference.senderIdentifier, + discussion: self) + } + + + public static func getIdentifiers(for discussionPermanentID: DiscussionPermanentID, within context: NSManagedObjectContext) throws -> (ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier) { + + guard let discussion = try PersistedDiscussion.getManagedObject(withPermanentID: discussionPermanentID, within: context) else { + throw ObvError.couldNotDetermineDiscussionIdentifier + } + + guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId else { + throw ObvError.ownedIdentityIsNil + } + + let discussionId = try discussion.identifier + + return (ownedCryptoId, discussionId) + + } + } + // MARK: - Retention related methods extension PersistedDiscussion { - public func sendNotificationIndicatingThatAnOldDiscussionSharedConfigurationWasReceived() { - ObvMessengerCoreDataNotification.anOldDiscussionSharedConfigurationWasReceived(persistedDiscussionObjectID: self.objectID) - .postOnDispatchQueue() - } - - /// If `nil`, no message should be deleted because of time retention. Otherwise, the return /// date is the limit date for retention. /// @@ -874,7 +1741,7 @@ extension PersistedDiscussion { public func unarchiveAndUpdateTimestampOfLastMessage() { unarchive() - timestampOfLastMessage = Date() + resetTimestampOfLastMessageIfCurrentValueIsEarlierThan(Date()) } public func archive() throws { @@ -882,8 +1749,7 @@ extension PersistedDiscussion { guard !isArchived else { return } isArchived = true - try PersistedMessageReceived.markAllAsNotNew(within: self) - try PersistedMessageSystem.markAllAsNotNew(within: self) + _ = try markAllMessagesAsNotNew(untilDate: nil, dateWhenMessageTurnedNotNew: Date()) self.pinnedIndex = nil @@ -891,6 +1757,200 @@ extension PersistedDiscussion { } + +// MARK: - Allow reading messages with limited visibility + +extension PersistedDiscussion { + + func userWantsToReadReceivedMessageWithLimitedVisibility(messageId: ReceivedMessageIdentifier, dateWhenMessageWasRead: Date, requestedOnAnotherOwnedDevice: Bool) throws -> InfoAboutWipedOrDeletedPersistedMessage? { + + guard let receivedMessage = try PersistedMessageReceived.getPersistedMessageReceived(discussion: self, messageId: messageId) else { + throw ObvError.couldNotFindMessage + } + + let infos = try receivedMessage.userWantsToReadThisReceivedMessageWithLimitedVisibility(dateWhenMessageWasRead: dateWhenMessageWasRead, requestedOnAnotherOwnedDevice: requestedOnAnotherOwnedDevice) + + return infos + + } + + + /// Returns an array of the received message identifiers that were read + func userWantsToAllowReadingAllReceivedMessagesReceivedThatRequireUserAction(dateWhenMessageWasRead: Date) throws -> ([InfoAboutWipedOrDeletedPersistedMessage], [ReceivedMessageIdentifier]) { + + // Since this method is expected to be called for implementing the discussion auto-read feature, we check whether autoRead is `true` + + guard self.autoRead else { return ([], []) } + + let receivedMessagesThatRequireUserActionForReading = try PersistedMessageReceived.getAllReceivedMessagesThatRequireUserActionForReading(discussion: self) + + var identifiersOfReadReceivedMessages = [ReceivedMessageIdentifier]() + var allInfos = [InfoAboutWipedOrDeletedPersistedMessage]() + + for receivedMessage in receivedMessagesThatRequireUserActionForReading { + + // Check that the message ephemerality is at least that of the discussion, otherwise, do not auto read + + guard receivedMessage.ephemeralityIsAtLeastAsPermissiveThanDiscussionSharedConfiguration else { + continue + } + + let infos = try receivedMessage.userWantsToReadThisReceivedMessageWithLimitedVisibility(dateWhenMessageWasRead: dateWhenMessageWasRead, requestedOnAnotherOwnedDevice: false) + + if let infos { + allInfos.append(infos) + } + identifiersOfReadReceivedMessages.append(receivedMessage.receivedMessageIdentifier) + + } + + return (allInfos, identifiersOfReadReceivedMessages) + + } + + + + func getLimitedVisibilityMessageOpenedJSON(messageId: ReceivedMessageIdentifier) throws -> LimitedVisibilityMessageOpenedJSON { + + guard let receivedMessage = try PersistedMessageReceived.getPersistedMessageReceived(discussion: self, messageId: messageId) else { + throw ObvError.couldNotFindMessage + } + + guard let ownedCryptoId = ownedIdentity?.cryptoId else { + throw ObvError.ownedIdentityIsNil + } + + let messageReference = receivedMessage.toReceivedMessageReferenceJSON() + + switch try kind { + case .oneToOne(withContactIdentity: let contactIdentity): + guard let contactCryptoId = contactIdentity?.cryptoId else { + throw ObvError.contactIdentityIsNil + } + return .init(messageReference: messageReference, + oneToOneIdentifier: .init( + ownedCryptoId: ownedCryptoId, + contactCryptoId: contactCryptoId)) + case .groupV1(withContactGroup: let group): + guard let group else { + throw ObvError.groupIsNil + } + return .init(messageReference: messageReference, + groupV1Identifier: try group.getGroupId()) + case .groupV2(withGroup: let group): + guard let group else { + throw ObvError.groupIsNil + } + return .init(messageReference: messageReference, + groupV2Identifier: group.groupIdentifier) + } + + } + +} + + +// MARK: - Marking received messages as not new + +extension PersistedDiscussion { + + func markReceivedMessageAsNotNew(receivedMessageId: ReceivedMessageIdentifier, dateWhenMessageTurnedNotNew: Date) throws -> Date? { + + guard let receivedMessage = try PersistedMessageReceived.getPersistedMessageReceived(discussion: self, messageId: receivedMessageId) else { + throw ObvError.couldNotFindMessage + } + + let lastReadMessageServerTimestamp = try receivedMessage.markAsNotNew(dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + + return lastReadMessageServerTimestamp + + } + + + func markAllMessagesAsNotNew(untilDate: Date?, dateWhenMessageTurnedNotNew: Date) throws -> Date? { + + let lastReadReceivedMessageServerTimestamp: Date? + if let untilDate { + lastReadReceivedMessageServerTimestamp = try PersistedMessageReceived.markAllAsNotNew(within: self, untilDate: untilDate, dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + } else { + lastReadReceivedMessageServerTimestamp = try PersistedMessageReceived.markAllAsNotNew(within: self, dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + } + let lastReadSystemMessageServerTimestamp = try PersistedMessageSystem.markAllAsNotNew(within: self, untilDate: untilDate) + + switch (lastReadReceivedMessageServerTimestamp, lastReadSystemMessageServerTimestamp) { + case (.some(let date1), .some(let date2)): + return max(date1, date2) + case (.some(let date), .none): + return date + case (.none, .some(let date)): + return date + case (.none, .none): + return nil + } + + } + + + func markAllMessagesAsNotNew(messageIds: [MessageIdentifier], dateWhenMessageTurnedNotNew: Date) throws -> Date? { + + guard !messageIds.isEmpty else { return nil } + + var lastReadMessageServerTimestamp = Date.distantPast + + for messageId in messageIds { + guard let message = try PersistedMessage.getPersistedMessage(discussion: self, messageId: messageId) else { + // This can happen when dealing with ephemeral messages + continue + } + switch message.kind { + case .received: + assert(message is PersistedMessageReceived) + _ = try (message as? PersistedMessageReceived)?.markAsNotNew(dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + lastReadMessageServerTimestamp = max(lastReadMessageServerTimestamp, message.timestamp) + case .system: + (message as? PersistedMessageSystem)?.markAsRead() + lastReadMessageServerTimestamp = max(lastReadMessageServerTimestamp, message.timestamp) + default: + assertionFailure() + throw ObvError.unexpectedMessageKind + } + } + + return lastReadMessageServerTimestamp + + } + + +} + + +// MARK: - Getting messages objectIDS for refreshing them in the view context + +extension PersistedDiscussion { + + func getObjectIDOfReceivedMessage(messageId: ReceivedMessageIdentifier) throws -> NSManagedObjectID { + + guard let receivedMessage = try PersistedMessageReceived.getPersistedMessageReceived(discussion: self, messageId: messageId) else { + throw ObvError.couldNotFindMessage + } + + return receivedMessage.objectID + + } + + func getReceivedMessageTypedObjectID(receivedMessageId: ReceivedMessageIdentifier) throws -> TypeSafeManagedObjectID { + + guard let receivedMessage = try PersistedMessageReceived.getPersistedMessageReceived(discussion: self, messageId: receivedMessageId) else { + throw ObvError.couldNotFindMessage + } + + return receivedMessage.typedObjectID + + } + +} + + // MARK: - Convenience DB getters extension PersistedDiscussion { @@ -917,7 +1977,6 @@ extension PersistedDiscussion { case localConfiguration = "localConfiguration" case messages = "messages" case ownedIdentity = "ownedIdentity" - case remoteDeleteAndEditRequests = "remoteDeleteAndEditRequests" case sharedConfiguration = "sharedConfiguration" static let ownedIdentityIdentity = [Key.ownedIdentity.rawValue, PersistedObvOwnedIdentity.Predicate.Key.identity.rawValue].joined(separator: ".") static let muteNotificationsEndDate = [Predicate.Key.localConfiguration.rawValue, PersistedDiscussionLocalConfiguration.Predicate.Key.muteNotificationsEndDate.rawValue].joined(separator: ".") @@ -932,6 +1991,9 @@ extension PersistedDiscussion { static func withOwnCryptoId(_ ownCryptoId: ObvCryptoId) -> NSPredicate { NSPredicate(Key.ownedIdentityIdentity, EqualToData: ownCryptoId.getIdentity()) } + static func withOwnedIdentity(_ ownedIdentity: PersistedObvOwnedIdentity) -> NSPredicate { + withOwnCryptoId(ownedIdentity.cryptoId) + } static func persistedDiscussion(withObjectID objectID: NSManagedObjectID) -> NSPredicate { NSPredicate(withObjectID: objectID) } @@ -1025,7 +2087,7 @@ extension PersistedDiscussion { let emptyLockedDiscussions = try context.fetch(request) for discussion in emptyLockedDiscussions { do { - try discussion.deleteDiscussion(requester: nil) + try discussion.deletePersistedDiscussion() } catch { os_log("One of the empty locked discussion could not be deleted", log: log, type: .fault) assertionFailure() @@ -1132,6 +2194,18 @@ extension PersistedDiscussion { return try context.count(for: request) } + + static func getPersistedDiscussion(ownedIdentity: PersistedObvOwnedIdentity, discussionId: DiscussionIdentifier) throws -> PersistedDiscussion? { + switch discussionId { + case .oneToOne(let id): + return try PersistedOneToOneDiscussion.getPersistedOneToOneDiscussion(ownedIdentity: ownedIdentity, oneToOneDiscussionId: id) + case .groupV1(let id): + return try PersistedGroupDiscussion.getPersistedGroupDiscussion(ownedIdentity: ownedIdentity, groupV1DiscussionId: id) + case .groupV2(let id): + return try PersistedGroupV2Discussion.getPersistedGroupV2Discussion(ownedIdentity: ownedIdentity, groupV2DiscussionId: id) + } + } + } @@ -1150,6 +2224,32 @@ extension PersistedDiscussion { } + /// When changing the pinned index of a discussion, we must propagate the change to our other owned devices. This requires a list of discussion identifiers. We use this method to make it possible to build this list. + public static func getAllPinnedDiscussions(ownedCryptoId: ObvCryptoId, with context: NSManagedObjectContext) throws -> [PersistedDiscussion] { + let request: NSFetchRequest = PersistedDiscussion.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnCryptoId(ownedCryptoId), + Predicate.whereIsPinnedIs(true), + ]) + request.sortDescriptors = [NSSortDescriptor(key: Predicate.Key.rawPinnedIndex.rawValue, ascending: true)] + request.fetchBatchSize = 100 + return try context.fetch(request) + } + + + static func getObjectIDsOfAllPinnedDiscussions(ownedCryptoId: ObvCryptoId, with context: NSManagedObjectContext) throws -> [NSManagedObjectID] { + let request = NSFetchRequest(entityName: PersistedDiscussion.entityName) + request.resultType = .managedObjectIDResultType + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnCryptoId(ownedCryptoId), + Predicate.whereIsPinnedIs(true), + ]) + request.sortDescriptors = [NSSortDescriptor(key: Predicate.Key.rawPinnedIndex.rawValue, ascending: true)] + request.fetchBatchSize = 100 + return try context.fetch(request) + + } + /// Returns a `NSFetchRequest` for all the group discussions (both V1 and V2) of the owned identity, sorted by the discussion title. public static func getFetchRequestForAllGroupDiscussionsSortedByTitleForOwnedIdentity(with ownedCryptoId: ObvCryptoId) -> FetchRequestControllerModel { let fetchRequest: NSFetchRequest = PersistedDiscussion.fetchRequest() @@ -1279,6 +2379,12 @@ extension PersistedDiscussion { if isDeleted { assert(self.managedObjectContext?.concurrencyType != .mainQueueConcurrencyType) self.discussionPermanentIDOnDeletion = self.discussionPermanentID + } else { + // If the illustrative message is not part of the messages anymore (which happens when we wipe all messages of a discussion), we remove it. + // Note that setting the illustrativeMessage to nil ensures we don't enter an infinite loop as the test won't trigger twice. + if let illustrativeMessage, illustrativeMessage.discussion == nil { + self.illustrativeMessage = nil + } } } @@ -1310,8 +2416,10 @@ extension PersistedDiscussion { .postOnDispatchQueue() } - if isInserted { - ObvMessengerCoreDataNotification.persistedDiscussionWasInserted(discussionPermanentID: discussionPermanentID, objectID: typedObjectID) + if isInserted || (changedKeys.contains(Predicate.Key.rawStatus.rawValue) && self.status == .active) { + guard let ownedCryptoId = ownedIdentity?.cryptoId, + let discussionIdentifier = try? self.identifier else { assertionFailure(); return } + ObvMessengerCoreDataNotification.persistedDiscussionWasInsertedOrReactivated(ownedCryptoId: ownedCryptoId, discussionIdentifier: discussionIdentifier) .postOnDispatchQueue() } @@ -1337,3 +2445,167 @@ extension ObvManagedObjectPermanentID where T: PersistedDiscussion { // MARK: - DiscussionPermanentID public typealias DiscussionPermanentID = ObvManagedObjectPermanentID + + +extension PersistedDiscussion { + + public enum ObvError: Error { + case cannotChangeShareConfigurationOfLockedDiscussion + case cannotChangeShareConfigurationOfPreDiscussion + case ownedIdentityIsNil + case contactIdentityIsNil + case groupIsNil + case aContactCannotWipeMessageFromLockedDiscussion + case aContactCannotWipeMessageFromPrediscussion + case noContext + case unexpectedOwnedIdentity + case unexpectedDiscussionForMessageToDelete + case cannotGloballyDeleteMessageFromLockedOrPrediscussion + case aMessageCannotBeUpdatedInLockedDiscussion + case aMessageCannotBeUpdatedInPrediscussion + case aContactRequestedUpdateOnMessageFromSomeoneElse + case aContactCannotDeleteAllMessagesWithinLockedDiscussion + case aContactCannotDeleteAllMessagesWithinPreDiscussion + case ownedIdentityCannotGloballyDeleteLockedDiscussion + case ownedIdentityCannotGloballyDeletePrediscussion + case cannotGloballyDeleteLockedOrPrediscussion + case unexpectedDiscussionForMessageToEdit + case unexpectedDiscussionForMessage + case couldNotConstructMessageReferenceJSON + case couldNotDetermineDiscussionIdentifier + case incoherentDiscussionKind + case couldNotFindMessage + case unexpectedMessageKind + + var localizedDescription: String { + switch self { + case .unexpectedMessageKind: + return "Unexpected message kind" + case .cannotChangeShareConfigurationOfLockedDiscussion: + return "Cannot change configuration of locked discussion" + case .cannotChangeShareConfigurationOfPreDiscussion: + return "Cannot change configuration of pre-discussion" + case .ownedIdentityIsNil: + return "Owned identity is nil" + case .contactIdentityIsNil: + return "Contact identity is nil" + case .groupIsNil: + return "Group is nil" + case .aContactCannotWipeMessageFromLockedDiscussion: + return "A contact cannot wipe a message from a locked discussion" + case .aContactCannotWipeMessageFromPrediscussion: + return "A contact cannot wipe a message from a prediscussion" + case .noContext: + return "No context" + case .unexpectedOwnedIdentity: + return "Unexpected owned identity" + case .unexpectedDiscussionForMessageToDelete: + return "Unexpected discussion for message to delete" + case .cannotGloballyDeleteMessageFromLockedOrPrediscussion: + return "Cannot globally delete a message from a locked or a prediscussion" + case .aMessageCannotBeUpdatedInLockedDiscussion: + return "A message cannot be updated in a locked discussion" + case .aMessageCannotBeUpdatedInPrediscussion: + return "A message cannot be updated in a prediscussion" + case .aContactRequestedUpdateOnMessageFromSomeoneElse: + return "A contact requested an update on a message from someone else" + case .aContactCannotDeleteAllMessagesWithinLockedDiscussion: + return "A message cannot be delete all messages within a locked discussion" + case .aContactCannotDeleteAllMessagesWithinPreDiscussion: + return "A message cannot be delete all messages within a prediscussion" + case .ownedIdentityCannotGloballyDeleteLockedDiscussion: + return "Owned identity cannot globally delete a locked discussion" + case .ownedIdentityCannotGloballyDeletePrediscussion: + return "Owned identity cannot globally delete a prediscussion" + case .cannotGloballyDeleteLockedOrPrediscussion: + return "Cannot globally delete a locked or pre-discussion" + case .unexpectedDiscussionForMessageToEdit: + return "Unexpected discussion for message to edit" + case .unexpectedDiscussionForMessage: + return "Unexpected discussion for message" + case .couldNotConstructMessageReferenceJSON: + return "Could not construct message reference JSON from message" + case .couldNotDetermineDiscussionIdentifier: + return "Could not determine discussion identifier" + case .incoherentDiscussionKind: + return "Incoherent discussion kind" + case .couldNotFindMessage: + return "Could not find message" + } + } + + } + +} + +extension DiscussionSharedConfigurationJSON { + + var sharedConfig: PersistedDiscussion.SharedConfiguration { + .init(version: self.version, + expiration: self.expiration) + } + +} + + + +// MARK: - For snapshot purposes + +extension PersistedDiscussion { + + var syncSnapshotNode: PersistedDiscussionConfigurationSyncSnapshotNode { + .init(localConfiguration: localConfiguration, + sharedConfiguration: sharedConfiguration) + } + +} + + +struct PersistedDiscussionConfigurationSyncSnapshotNode: ObvSyncSnapshotNode { + + private let domain: Set + private let localConfiguration: PersistedDiscussionLocalConfigurationSyncSnapshotItem? + private let sharedConfiguration: PersistedDiscussionSharedConfigurationSyncSnapshotItem? + + let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case localConfiguration = "local_settings" + case sharedConfiguration = "shared_settings" + case domain = "domain" + } + + private static let defaultDomain = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + init(localConfiguration: PersistedDiscussionLocalConfiguration, sharedConfiguration: PersistedDiscussionSharedConfiguration) { + self.domain = Self.defaultDomain + self.localConfiguration = localConfiguration.syncSnapshotNode + self.sharedConfiguration = sharedConfiguration.syncSnapshotNode + } + + + // Synthesized implementation of encode(to encoder: Encoder) + + + init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + let rawKeys = try container.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.localConfiguration = try container.decodeIfPresent(PersistedDiscussionLocalConfigurationSyncSnapshotItem.self, forKey: .localConfiguration) + self.sharedConfiguration = try container.decodeIfPresent(PersistedDiscussionSharedConfigurationSyncSnapshotItem.self, forKey: .sharedConfiguration) + } + + + func useToUpdate(_ discussion: PersistedDiscussion) { + + if domain.contains(.localConfiguration) { + localConfiguration?.useToUpdate(discussion.localConfiguration) + } + + if domain.contains(.sharedConfiguration) { + sharedConfiguration?.useToUpdate(discussion.sharedConfiguration) + } + + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedGroupDiscussion.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedGroupDiscussion.swift index 85787b4b..2894cd11 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedGroupDiscussion.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedGroupDiscussion.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,8 @@ import ObvEngine import ObvTypes import ObvCrypto import OlvidUtils +import ObvSettings + @objc(PersistedGroupDiscussion) public final class PersistedGroupDiscussion: PersistedDiscussion, ObvErrorMaker, ObvIdentifiableManagedObject { @@ -63,24 +65,18 @@ public final class PersistedGroupDiscussion: PersistedDiscussion, ObvErrorMaker, // MARK: - Initializer - public convenience init(contactGroup: PersistedContactGroup, groupName: String, ownedIdentity: PersistedObvOwnedIdentity, status: Status, sharedConfigurationToKeep: PersistedDiscussionSharedConfiguration? = nil, localConfigurationToKeep: PersistedDiscussionLocalConfiguration? = nil, permanentUUIDToKeep: UUID? = nil, draftToKeep: PersistedDraft? = nil, pinnedIndexToKeep: Int? = nil, timestampOfLastMessageToKeep: Date? = nil) throws { + public convenience init(contactGroup: PersistedContactGroup, groupName: String, ownedIdentity: PersistedObvOwnedIdentity, status: Status) throws { try self.init(title: groupName, ownedIdentity: ownedIdentity, forEntityName: PersistedGroupDiscussion.entityName, status: status, - shouldApplySharedConfigurationFromGlobalSettings: contactGroup.category == .owned, - sharedConfigurationToKeep: sharedConfigurationToKeep, - localConfigurationToKeep: localConfigurationToKeep, - permanentUUIDToKeep: permanentUUIDToKeep, - draftToKeep: draftToKeep, - pinnedIndexToKeep: pinnedIndexToKeep, - timestampOfLastMessageToKeep: timestampOfLastMessageToKeep) + shouldApplySharedConfigurationFromGlobalSettings: contactGroup.category == .owned) self.contactGroup = contactGroup - if sharedConfigurationToKeep == nil && contactGroup.category == .owned { + if contactGroup.category == .owned { self.sharedConfiguration.setValuesUsingSettings() } - try? insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: timestampOfLastMessageToKeep ?? Date()) + try? insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: Date()) } @@ -121,12 +117,21 @@ extension PersistedGroupDiscussion { static func withGroupUID(_ groupUID: UID) -> NSPredicate { NSPredicate(Key.rawGroupUID, EqualToData: groupUID.raw) } - static func withGroupOwnedCryptoId(_ groupOwnerCryptoId: ObvCryptoId) -> NSPredicate { + static func withGroupOwnerCryptoId(_ groupOwnerCryptoId: ObvCryptoId) -> NSPredicate { NSPredicate(Key.rawOwnerIdentityIdentity, EqualToData: groupOwnerCryptoId.getIdentity()) } static func withOwnedCryptoId(_ ownedCryptoId: ObvCryptoId) -> NSPredicate { NSPredicate(PersistedDiscussion.Predicate.Key.ownedIdentityIdentity, EqualToData: ownedCryptoId.getIdentity()) } + static func withObjectID(_ objectID: NSManagedObjectID) -> NSPredicate { + PersistedDiscussion.Predicate.persistedDiscussion(withObjectID: objectID) + } + static func withGroupV1Identifier(_ groupV1Identifier: GroupV1Identifier) -> NSPredicate { + NSCompoundPredicate(andPredicateWithSubpredicates: [ + withGroupUID(groupV1Identifier.groupUid), + withGroupOwnerCryptoId(groupV1Identifier.groupOwner), + ]) + } } @@ -144,13 +149,32 @@ extension PersistedGroupDiscussion { let request: NSFetchRequest = NSFetchRequest(entityName: PersistedGroupDiscussion.entityName) request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ Predicate.withGroupUID(groupUID), - Predicate.withGroupOwnedCryptoId(groupOwnerCryptoId), + Predicate.withGroupOwnerCryptoId(groupOwnerCryptoId), Predicate.withOwnedCryptoId(ownedCryptoId), ]) request.fetchLimit = 1 return (try context.fetch(request)).first } + static func getPersistedGroupDiscussion(ownedIdentity: PersistedObvOwnedIdentity, groupV1DiscussionId: GroupV1DiscussionIdentifier) throws -> PersistedGroupDiscussion? { + guard let context = ownedIdentity.managedObjectContext else { assertionFailure(); throw ObvError.noContext } + let request: NSFetchRequest = PersistedGroupDiscussion.fetchRequest() + switch groupV1DiscussionId { + case .objectID(let objectID): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withObjectID(objectID), + Predicate.withOwnedCryptoId(ownedIdentity.cryptoId), + ]) + case .groupV1Identifier(groupV1Identifier: let groupV1Identifier): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnedCryptoId(ownedIdentity.cryptoId), + Predicate.withGroupV1Identifier(groupV1Identifier), + ]) + } + request.fetchLimit = 1 + return try context.fetch(request).first + } + } public extension TypeSafeManagedObjectID where T == PersistedGroupDiscussion { diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedGroupV2Discussion.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedGroupV2Discussion.swift index 11b79171..740b77cb 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedGroupV2Discussion.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedGroupV2Discussion.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import CoreData import os.log import OlvidUtils import ObvTypes +import ObvSettings @objc(PersistedGroupV2Discussion) @@ -61,7 +62,7 @@ public final class PersistedGroupV2Discussion: PersistedDiscussion, ObvErrorMake // Initializer - public convenience init(persistedGroupV2: PersistedGroupV2, shouldApplySharedConfigurationFromGlobalSettings: Bool, sharedConfigurationToKeep: PersistedDiscussionSharedConfiguration? = nil, localConfigurationToKeep: PersistedDiscussionLocalConfiguration? = nil, permanentUUIDToKeep: UUID? = nil, draftToKeep: PersistedDraft? = nil, pinnedIndexToKeep: Int? = nil, timestampOfLastMessageToKeep: Date? = nil) throws { + public convenience init(persistedGroupV2: PersistedGroupV2, shouldApplySharedConfigurationFromGlobalSettings: Bool) throws { guard let context = persistedGroupV2.managedObjectContext else { throw Self.makeError(message: "Could not find context") @@ -79,20 +80,14 @@ public final class PersistedGroupV2Discussion: PersistedDiscussion, ObvErrorMake ownedIdentity: persistedOwnedIdentity, forEntityName: PersistedGroupV2Discussion.entityName, status: .active, - shouldApplySharedConfigurationFromGlobalSettings: shouldApplySharedConfigurationFromGlobalSettings, - sharedConfigurationToKeep: sharedConfigurationToKeep, - localConfigurationToKeep: localConfigurationToKeep, - permanentUUIDToKeep: permanentUUIDToKeep, - draftToKeep: draftToKeep, - pinnedIndexToKeep: pinnedIndexToKeep, - timestampOfLastMessageToKeep: timestampOfLastMessageToKeep) + shouldApplySharedConfigurationFromGlobalSettings: shouldApplySharedConfigurationFromGlobalSettings) self.groupIdentifier = persistedGroupV2.groupIdentifier self.rawOwnedIdentityIdentity = try persistedGroupV2.ownCryptoId.getIdentity() self.group = persistedGroupV2 - try? insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: timestampOfLastMessageToKeep ?? Date()) + try? insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: Date()) } @@ -133,7 +128,7 @@ public final class PersistedGroupV2Discussion: PersistedDiscussion, ObvErrorMake try PersistedMessageSystem.insertOwnedIdentityIsNoLongerPartOfGroupV2AdminsMessage(within: self) } - + // MARK: - Convenience DB getters struct Predicate { @@ -147,6 +142,9 @@ public final class PersistedGroupV2Discussion: PersistedDiscussion, ObvErrorMake static func withOwnCryptoId(_ ownCryptoId: ObvCryptoId) -> NSPredicate { NSPredicate(Key.rawOwnedIdentityIdentity, EqualToData: ownCryptoId.getIdentity()) } + static func withObjectID(_ objectID: NSManagedObjectID) -> NSPredicate { + PersistedDiscussion.Predicate.persistedDiscussion(withObjectID: objectID) + } } @@ -165,6 +163,26 @@ public final class PersistedGroupV2Discussion: PersistedDiscussion, ObvErrorMake return try context.fetch(request).first } + + static func getPersistedGroupV2Discussion(ownedIdentity: PersistedObvOwnedIdentity, groupV2DiscussionId: GroupV2DiscussionIdentifier) throws -> PersistedGroupV2Discussion? { + guard let context = ownedIdentity.managedObjectContext else { assertionFailure(); throw ObvError.noContext } + let request: NSFetchRequest = PersistedGroupV2Discussion.fetchRequest() + switch groupV2DiscussionId { + case .objectID(let objectID): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withObjectID(objectID), + Predicate.withOwnCryptoId(ownedIdentity.cryptoId), + ]) + case .groupV2Identifier(groupV2Identifier: let groupV2Identifier): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnCryptoId(ownedIdentity.cryptoId), + Predicate.withGroupIdentifier(groupV2Identifier), + ]) + } + request.fetchLimit = 1 + return try context.fetch(request).first + } + } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedOneToOneDiscussion.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedOneToOneDiscussion.swift index 6a497466..96ae056e 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedOneToOneDiscussion.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedDiscussion/PersistedOneToOneDiscussion.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,8 @@ import ObvEngine import OlvidUtils import ObvCrypto import ObvTypes +import ObvSettings + @objc(PersistedOneToOneDiscussion) @@ -61,10 +63,21 @@ public final class PersistedOneToOneDiscussion: PersistedDiscussion, ObvErrorMak ObvManagedObjectPermanentID(uuid: self.permanentUUID) } + public var oneToOneIdentifier: OneToOneIdentifierJSON { + get throws { + guard let ownedCryptoId = ownedIdentity?.cryptoId else { + throw Self.makeError(message: "Could not get ownedCryptoId") + } + guard let contactCryptoId = contactIdentity?.cryptoId else { + throw Self.makeError(message: "Could not get contactCryptoId") + } + return OneToOneIdentifierJSON(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) + } + } // MARK: - Initializer - public convenience init(contactIdentity: PersistedObvContactIdentity, status: Status, sharedConfigurationToKeep: PersistedDiscussionSharedConfiguration? = nil, localConfigurationToKeep: PersistedDiscussionLocalConfiguration? = nil, permanentUUIDToKeep: UUID? = nil, draftToKeep: PersistedDraft? = nil, pinnedIndexToKeep: Int? = nil, timestampOfLastMessageToKeep: Date? = nil) throws { + private convenience init(contactIdentity: PersistedObvContactIdentity, status: Status) throws { guard let ownedIdentity = contactIdentity.ownedIdentity else { os_log("Could not find owned identity. This is ok if it was just deleted.", log: PersistedOneToOneDiscussion.log, type: .error) throw Self.makeError(message: "Could not find owned identity. This is ok if it was just deleted.") @@ -73,21 +86,21 @@ public final class PersistedOneToOneDiscussion: PersistedDiscussion, ObvErrorMak ownedIdentity: ownedIdentity, forEntityName: PersistedOneToOneDiscussion.entityName, status: status, - shouldApplySharedConfigurationFromGlobalSettings: true, - sharedConfigurationToKeep: sharedConfigurationToKeep, - localConfigurationToKeep: localConfigurationToKeep, - permanentUUIDToKeep: permanentUUIDToKeep, - draftToKeep: draftToKeep, - pinnedIndexToKeep: pinnedIndexToKeep, - timestampOfLastMessageToKeep: timestampOfLastMessageToKeep) + shouldApplySharedConfigurationFromGlobalSettings: true) self.contactIdentity = contactIdentity - try? insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: timestampOfLastMessageToKeep ?? Date()) + try? insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: Date()) } + static func createPersistedOneToOneDiscussion(for contactIdentity: PersistedObvContactIdentity, status: Status) throws -> PersistedOneToOneDiscussion { + let oneToOneDiscussion = try self.init(contactIdentity: contactIdentity, status: status) + return oneToOneDiscussion + } + + // MARK: - Status management override func setStatus(to newStatus: PersistedDiscussion.Status) throws { @@ -103,6 +116,7 @@ public final class PersistedOneToOneDiscussion: PersistedDiscussion, ObvErrorMak if newStatus == .locked { _ = try PersistedMessageSystem(.contactWasDeleted, optionalContactIdentity: nil, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: self, timestamp: Date()) @@ -122,6 +136,285 @@ public final class PersistedOneToOneDiscussion: PersistedDiscussion, ObvErrorMak } } + + // MARK: - Receiving discussion shared configurations + + /// Called when receiving a shared configuration from a contact. Returns `true` iff the shared configuration had to be updated. + /// + /// Since a contact of a OneToOne discussion is always allowed to change the shared configuration, no particular check is made here, and we can call the super implementation. + func mergeDiscussionSharedConfiguration(discussionSharedConfiguration: SharedConfiguration, receivedFrom contact: PersistedObvContactIdentity) throws -> (sharedSettingHadToBeUpdated: Bool, weShouldSendBackOurSharedSettings: Bool) { + + guard self.contactIdentity == contact else { + throw ObvError.unexpectedContact + } + + let (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettingsIfAllowedTo) = try super.mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration) + + // We are always allowed to change the settings of a oneToOne discussion + let weShouldSendBackOurSharedSettings = weShouldSendBackOurSharedSettingsIfAllowedTo + + return (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) + + } + + + /// Called when receiving a ``DiscussionSharedConfigurationJSON`` from an owned identity. Returns `true` iff the shared configuration had to be updated. + /// + /// Since an owned identiy of a OneToOne discussion is always allowed to change the shared configuration, no particular check is made here, and we can call the super implementation. + func mergeDiscussionSharedConfiguration(discussionSharedConfiguration: SharedConfiguration, receivedFrom ownedIdentity: PersistedObvOwnedIdentity) throws -> (sharedSettingHadToBeUpdated: Bool, weShouldSendBackOurSharedSettings: Bool) { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettingsIfAllowedTo) = try super.mergeReceivedDiscussionSharedConfiguration(discussionSharedConfiguration) + + // We are always allowed to change the settings of a oneToOne discussion + let weShouldSendBackOurSharedSettings = weShouldSendBackOurSharedSettingsIfAllowedTo + + return (sharedSettingHadToBeUpdated, weShouldSendBackOurSharedSettings) + + } + + + /// Called when an owned identity decided to change this discussion's shared configuration from the current device. + func replaceDiscussionSharedConfiguration(with expiration: ExpirationJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity) throws -> Bool { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let sharedSettingHadToBeUpdated = try super.replaceReceivedDiscussionSharedConfiguration(with: expiration) + + return sharedSettingHadToBeUpdated + + } + + + // MARK: - Processing wipe requests + + func processWipeMessageRequest(of messagesToDelete: [MessageReferenceJSON], receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + guard self.contactIdentity == contact else { + throw ObvError.unexpectedContact + } + + let infos = try super.processWipeMessageRequest(of: messagesToDelete, from: contact.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return infos + + } + + + func processWipeMessageRequest(of messagesToDelete: [MessageReferenceJSON], receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> [InfoAboutWipedOrDeletedPersistedMessage] { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let infos = try super.processWipeMessageRequest(of: messagesToDelete, from: ownedIdentity.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return infos + + } + + + // MARK: - Processing discussion (all messages) wipe requests + + + override func processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.contactIdentity == contact else { + throw ObvError.unexpectedContact + } + + try super.processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + override func processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + try super.processRemoteRequestToWipeAllMessagesWithinThisDiscussion(from: ownedIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + // MARK: - Processing delete requests from the owned identity + + override func processMessageDeletionRequestRequestedFromCurrentDevice(of ownedIdentity: PersistedObvOwnedIdentity, messageToDelete: PersistedMessage, deletionType: DeletionType) throws -> InfoAboutWipedOrDeletedPersistedMessage { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let info = try super.processMessageDeletionRequestRequestedFromCurrentDevice(of: ownedIdentity, messageToDelete: messageToDelete, deletionType: deletionType) + + return info + + } + + + override func processDiscussionDeletionRequestFromCurrentDevice(of ownedIdentity: PersistedObvOwnedIdentity, deletionType: DeletionType) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + try super.processDiscussionDeletionRequestFromCurrentDevice(of: ownedIdentity, deletionType: deletionType) + + } + + + // MARK: - Receiving messages and attachments from a contact or another owned device + + override func createOrOverridePersistedMessageReceived(from contact: PersistedObvContactIdentity, obvMessage: ObvMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?, overridePreviousPersistedMessage: Bool) throws -> (discussionPermanentID: DiscussionPermanentID, attachmentFullyReceivedOrCancelledByServer: [ObvAttachment]) { + + guard self.contactIdentity == contact else { + throw ObvError.unexpectedContact + } + + return try super.createOrOverridePersistedMessageReceived( + from: contact, + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + overridePreviousPersistedMessage: overridePreviousPersistedMessage) + + } + + + override func createPersistedMessageSentFromOtherOwnedDevice(from ownedIdentity: PersistedObvOwnedIdentity, obvOwnedMessage: ObvOwnedMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?) throws -> [ObvOwnedAttachment] { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedContact + } + + let attachmentFullyReceivedOrCancelledByServer = try super.createPersistedMessageSentFromOtherOwnedDevice( + from: ownedIdentity, + obvOwnedMessage: obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON) + + return attachmentFullyReceivedOrCancelledByServer + + + } + + + // MARK: - Processing edit requests + + func processUpdateMessageRequest(_ updateMessageJSON: UpdateMessageJSON, receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.contactIdentity == contact else { + throw ObvError.unexpectedContact + } + + let updatedMessage = try super.processUpdateMessageRequest(updateMessageJSON, receivedFromContactCryptoId: contact.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return updatedMessage + + } + + + func processUpdateMessageRequest(_ updateMessageJSON: UpdateMessageJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + let updatedMessage = try super.processUpdateMessageRequest(updateMessageJSON, receivedFromOwnedCryptoId: ownedIdentity.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return updatedMessage + + } + + + override func processLocalUpdateMessageRequest(from ownedIdentity: PersistedObvOwnedIdentity, for messageSent: PersistedMessageSent, newTextBody: String?) throws { + + try super.processLocalUpdateMessageRequest(from: ownedIdentity, for: messageSent, newTextBody: newTextBody) + + } + + + // MARK: - Process reaction requests + + override func processSetOrUpdateReactionOnMessageLocalRequest(from ownedIdentity: PersistedObvOwnedIdentity, for message: PersistedMessage, newEmoji: String?) throws { + + try super.processSetOrUpdateReactionOnMessageLocalRequest(from: ownedIdentity, for: message, newEmoji: newEmoji) + + } + + + override func processSetOrUpdateReactionOnMessageRequest(_ reactionJSON: ReactionJSON, receivedFrom contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.contactIdentity == contact else { + throw ObvError.unexpectedContact + } + + let updatedMessage = try super.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return updatedMessage + + } + + + override func processSetOrUpdateReactionOnMessageRequest(_ reactionJSON: ReactionJSON, receivedFrom ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws -> PersistedMessage? { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + let updatedMessage = try super.processSetOrUpdateReactionOnMessageRequest(reactionJSON, receivedFrom: ownedIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + return updatedMessage + + } + + + // MARK: - Process screen capture detections + + override func processDetectionThatSensitiveMessagesWereCaptured(_ screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, from contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.contactIdentity == contact else { + throw ObvError.unexpectedContact + } + + try super.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + override func processDetectionThatSensitiveMessagesWereCaptured(_ screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, from ownedIdentity: PersistedObvOwnedIdentity, messageUploadTimestampFromServer: Date) throws { + + guard self.ownedIdentity == ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + try super.processDetectionThatSensitiveMessagesWereCaptured(screenCaptureDetectionJSON, from: ownedIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + + override func processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by ownedIdentity: PersistedObvOwnedIdentity) throws { + + try super.processLocalDetectionThatSensitiveMessagesWereCapturedInThisDiscussion(by: ownedIdentity) + + } + + + // MARK: - Inserting system messages within discussions + + func oneToOneContactWasIntroducedTo(otherContact: PersistedObvContactIdentity) throws { + + guard otherContact.ownedIdentity == self.ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + + try PersistedMessageSystem.insertContactWasIntroducedToAnotherContact(within: self, otherContact: otherContact) + + } + } @@ -147,6 +440,9 @@ extension PersistedOneToOneDiscussion { static func withPermanentID(_ permanentID: ObvManagedObjectPermanentID) -> NSPredicate { PersistedDiscussion.Predicate.withPermanentID(permanentID.downcast) } + static func withObjectID(_ objectID: NSManagedObjectID) -> NSPredicate { + PersistedDiscussion.Predicate.persistedDiscussion(withObjectID: objectID) + } } @@ -155,6 +451,21 @@ extension PersistedOneToOneDiscussion { } + /// Fetches the `PersistedOneToOneDiscussion` on the basis of the `oneToOneIdentifier` of the discussion (which, for now, corresponds to the identity of the contact). + public static func fetchPersistedOneToOneDiscussion(oneToOneIdentifier: OneToOneIdentifierJSON, ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws -> PersistedOneToOneDiscussion? { + guard let contactCryptoId = oneToOneIdentifier.getContactIdentity(ownedIdentity: ownedCryptoId) else { + throw ObvError.inconsistentOneToOneIdentifier + } + let request: NSFetchRequest = PersistedOneToOneDiscussion.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnedCryptoId(ownedCryptoId), + Predicate.withContactCryptoId(contactCryptoId), + ]) + request.fetchLimit = 1 + return (try context.fetch(request)).first + } + + /// Returns a `NSFetchRequest` for all the one-tone discussions of the owned identity, sorted by the discussion title. public static func getFetchRequestForAllActiveOneToOneDiscussionsSortedByTitleForOwnedIdentity(with ownedCryptoId: ObvCryptoId) -> FetchRequestControllerModel { let request: NSFetchRequest = NSFetchRequest(entityName: PersistedOneToOneDiscussion.entityName) @@ -205,6 +516,61 @@ extension PersistedOneToOneDiscussion { return try context.fetch(request).first } + + static func getPersistedOneToOneDiscussion(ownedIdentity: PersistedObvOwnedIdentity, oneToOneDiscussionId: OneToOneDiscussionIdentifier) throws -> PersistedOneToOneDiscussion? { + guard let context = ownedIdentity.managedObjectContext else { assertionFailure(); throw ObvError.noContext } + let request: NSFetchRequest = PersistedOneToOneDiscussion.fetchRequest() + switch oneToOneDiscussionId { + case .objectID(let objectID): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withObjectID(objectID), + Predicate.withOwnedCryptoId(ownedIdentity.cryptoId), + ]) + case .contactCryptoId(let contactCryptoId): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withOwnedCryptoId(ownedIdentity.cryptoId), + Predicate.withContactCryptoId(contactCryptoId), + ]) + } + request.fetchLimit = 1 + return try context.fetch(request).first + } + +} + + +extension PersistedOneToOneDiscussion { + + enum ObvError: Error { + case inconsistentOneToOneIdentifier + case unexpectedContact + case unexpectedOwnedIdentity + case aContactCannotWipeMessageFromLockedOrPrediscussion + case unexpectedDiscussionForMessageToDelete + case noContext + case unexpectedDiscussionKind + + var localizedDescription: String { + switch self { + case .inconsistentOneToOneIdentifier: + return "Inconsitent one2one identifier" + case .unexpectedContact: + return "Unexpected contact" + case .unexpectedOwnedIdentity: + return "Unexpected owned identity" + case .aContactCannotWipeMessageFromLockedOrPrediscussion: + return "A contact cannot wipe a message from a locked or a pre-discussion" + case .unexpectedDiscussionForMessageToDelete: + return "Unexpected discussion for message to delete" + case .noContext: + return "No context" + case .unexpectedDiscussionKind: + return "Unexpected discussion kind" + } + } + + } + } public extension TypeSafeManagedObjectID where T == PersistedOneToOneDiscussion { diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedInvitation/PersistedInvitation.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedInvitation/PersistedInvitation.swift index 3ce26814..19f26a7b 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedInvitation/PersistedInvitation.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedInvitation/PersistedInvitation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -58,7 +58,9 @@ public class PersistedInvitation: NSManagedObject { // MARK: Computed properties public var status: Status { - return Status(rawValue: self.rawStatus)! + let status = Status(rawValue: self.rawStatus) + assert(status != nil) + return status ?? .old } public enum Status: Int { @@ -206,19 +208,19 @@ extension PersistedInvitation { } - public static func markAllAsOld(for ownedIdentity: PersistedObvOwnedIdentity) throws { - guard let context = ownedIdentity.managedObjectContext else { throw Self.makeError(message: "Could not find context") } + public static func markAllAsOld(for ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws { let request: NSFetchRequest = PersistedInvitation.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withPersistedObvOwnedIdentity(ownedIdentity), + Predicate.withOwnedIdentity(ownedCryptoId), Predicate.withStatusDistinctFrom(.old), ]) + request.propertiesToFetch = [] let results = try context.fetch(request) results.forEach { $0.setStatus(to: Status.old) } } - + static func computeBadgeCountForInvitationsTab(of ownedIdentity: PersistedObvOwnedIdentity) throws -> Int { guard let context = ownedIdentity.managedObjectContext else { assertionFailure(); throw Self.makeError(message: "Could not find context") } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/CallLog/PersistedCallLogContact.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/CallLog/PersistedCallLogContact.swift index 8c39a946..0565e6b9 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/CallLog/PersistedCallLogContact.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/CallLog/PersistedCallLogContact.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -36,6 +36,9 @@ public enum CallReportKind: Int, CustomDebugStringConvertible, CaseIterable { case anyIncomingCall = 11 /// incoming call without informations case anyOutgoingCall = 12 /// outgoing call without informations case filteredIncomingCall = 13 + case answeredOnOtherDevice = 14 + case rejectedOnOtherDevice = 15 + case rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse = 16 public var debugDescription: String { switch self { @@ -53,6 +56,9 @@ public enum CallReportKind: Int, CustomDebugStringConvertible, CaseIterable { case .anyIncomingCall: return "anyIncomingCall" case .anyOutgoingCall: return "anyOutgoingCall" case .filteredIncomingCall: return "filteredIncomingCall" + case .answeredOnOtherDevice: return "answeredOnOtherDevice" + case .rejectedOnOtherDevice: return "rejectedOnOtherDevice" + case .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse: return "rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse" } } @@ -60,6 +66,7 @@ public enum CallReportKind: Int, CustomDebugStringConvertible, CaseIterable { switch self { case .missedIncomingCall, .rejectedIncomingCallBecauseOfDeniedRecordPermission, + .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse, .filteredIncomingCall: return true case .rejectedIncomingCall, @@ -72,6 +79,8 @@ public enum CallReportKind: Int, CustomDebugStringConvertible, CaseIterable { .newParticipantInIncomingCall, .newParticipantInOutgoingCall, .anyIncomingCall, + .answeredOnOtherDevice, + .rejectedOnOtherDevice, .anyOutgoingCall: return false } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/CallLog/PersistedCallLogItem.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/CallLog/PersistedCallLogItem.swift index 5d86ab5e..e8c7d86d 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/CallLog/PersistedCallLogItem.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/CallLog/PersistedCallLogItem.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,8 @@ import ObvEngine import ObvTypes import ObvCrypto import OlvidUtils +import ObvSettings + @objc(PersistedCallLogItem) public final class PersistedCallLogItem: NSManagedObject, ObvErrorMaker { @@ -70,7 +72,7 @@ public final class PersistedCallLogItem: NSManagedObject, ObvErrorMaker { // MARK: - Inits - public convenience init(callUUID: UUID, ownedCryptoId: ObvCryptoId, isIncoming: Bool, unknownContactsCount: Int, groupIdentifier: GroupIdentifierBasedOnObjectID?, within context: NSManagedObjectContext) throws { + public convenience init(callUUID: UUID, ownedCryptoId: ObvCryptoId, isIncoming: Bool, unknownContactsCount: Int, groupIdentifier: GroupIdentifier?, within context: NSManagedObjectContext) throws { // Make sure no other PersistedCallLogItem exist with the same UUID @@ -84,18 +86,19 @@ public final class PersistedCallLogItem: NSManagedObject, ObvErrorMaker { self.callUUID = callUUID self.endDate = nil switch groupIdentifier { - case .groupV1(let objectID): - if let group = try? PersistedContactGroup.get(objectID: objectID.objectID, within: context) { + case .groupV1(let groupV1Identifier): + if let group = try? PersistedContactGroup.getContactGroup(groupIdentifier: groupV1Identifier, ownedCryptoId: ownedCryptoId, within: context) { self.groupOwnerIdentity = group.ownerIdentity self.groupUidRaw = group.groupUid.raw } - case .groupV2(let objectID): - if let group = try? PersistedGroupV2.get(objectID: objectID, within: context) { + case .groupV2(let groupV2Identifier): + if let group = try? PersistedGroupV2.get(ownIdentity: ownedCryptoId, appGroupIdentifier: groupV2Identifier, within: context) { self.groupV2Identifier = group.groupIdentifier } - case .none: + case nil: break } + self.initialParticipantCount = nil // Set later self.rawOwnedCryptoId = ownedCryptoId.getIdentity() self.isIncoming = isIncoming @@ -106,8 +109,8 @@ public final class PersistedCallLogItem: NSManagedObject, ObvErrorMaker { // MARK: - Variables - var ownedCryptoId: ObvCryptoId { - return try! ObvCryptoId(identity: rawOwnedCryptoId) + public var ownedCryptoId: ObvCryptoId? { + return try? ObvCryptoId(identity: rawOwnedCryptoId) } /// We need to store callReportKind to be able to build predicate isMissedCall @@ -149,9 +152,13 @@ public final class PersistedCallLogItem: NSManagedObject, ObvErrorMaker { public func getGroupIdentifier() throws -> GroupIdentifierBasedOnObjectID? { guard let context = self.managedObjectContext else { assertionFailure(); throw Self.makeError(message: "Could not find context") } + guard let ownedCryptoId else { + throw ObvError.couldNotDetermineOwnedCryptoId + } if let groupUid = groupUid, let groupOwnerIdentity = groupOwnerIdentity { let groupOwner = try ObvCryptoId(identity: groupOwnerIdentity) - guard let persistedContactGroup = try? PersistedContactGroup.getContactGroup(groupId: (groupUid, groupOwner), ownedCryptoId: ownedCryptoId, within: context) else { return nil } + let groupIdentifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + guard let persistedContactGroup = try? PersistedContactGroup.getContactGroup(groupIdentifier: groupIdentifier, ownedCryptoId: ownedCryptoId, within: context) else { return nil } return .groupV1(persistedContactGroup.typedObjectID) } else if let groupV2Identifier = groupV2Identifier { guard let group = try? PersistedGroupV2.get(ownIdentity: ownedCryptoId, appGroupIdentifier: groupV2Identifier, within: context) else { @@ -163,9 +170,10 @@ public final class PersistedCallLogItem: NSManagedObject, ObvErrorMaker { } } - var groupIdentifier: GroupIdentifier? { + public var groupIdentifier: GroupIdentifier? { if let groupUid = groupUid, let groupOwnerIdentity = groupOwnerIdentity, let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { - return .groupV1(groupV1Identifier: (groupUid, groupOwner)) + let groupIdentifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + return .groupV1(groupV1Identifier: groupIdentifier) } else if let groupV2Identifier = groupV2Identifier { return .groupV2(groupV2Identifier: groupV2Identifier) } else { @@ -184,6 +192,12 @@ public final class PersistedCallLogItem: NSManagedObject, ObvErrorMaker { return .rejectedIncomingCall } else if contact.callReportKind == .rejectedIncomingCallBecauseOfDeniedRecordPermission { return .rejectedIncomingCallBecauseOfDeniedRecordPermission + } else if contact.callReportKind == .answeredOnOtherDevice { + return .answeredOnOtherDevice + } else if contact.callReportKind == .rejectedOnOtherDevice { + return .rejectedOnOtherDevice + } else if contact.callReportKind == .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse { + return .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse } } if logContacts.contains(where: { $0.callReportKind == .acceptedIncomingCall }) { @@ -246,3 +260,14 @@ extension PersistedCallLogItem { } } + + +// MARK: - Errors + +extension PersistedCallLogItem { + + enum ObvError: Error { + case couldNotDetermineOwnedCryptoId + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForReceivedMessageWithLimitedExistence.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForReceivedMessageWithLimitedExistence.swift index 84af3daa..fb2941d9 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForReceivedMessageWithLimitedExistence.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForReceivedMessageWithLimitedExistence.swift @@ -58,7 +58,7 @@ extension PersistedExpirationForReceivedMessageWithLimitedExistence { return NSFetchRequest(entityName: PersistedExpirationForReceivedMessageWithLimitedExistence.entityName) } - public static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { + static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { let request: NSFetchRequest = PersistedExpirationForReceivedMessageWithLimitedExistence.fetchRequest() request.predicate = Predicate.withNoMessage let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForReceivedMessageWithLimitedVisibility.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForReceivedMessageWithLimitedVisibility.swift index 01a9e14d..31223ecc 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForReceivedMessageWithLimitedVisibility.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForReceivedMessageWithLimitedVisibility.swift @@ -55,7 +55,7 @@ extension PersistedExpirationForReceivedMessageWithLimitedVisibility { return NSFetchRequest(entityName: PersistedExpirationForReceivedMessageWithLimitedVisibility.entityName) } - public static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { + static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { let request: NSFetchRequest = PersistedExpirationForReceivedMessageWithLimitedVisibility.fetchRequest() request.predicate = Predicate.withNoMessage let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForSentMessageWithLimitedExistence.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForSentMessageWithLimitedExistence.swift index 6b435e9b..1da8a338 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForSentMessageWithLimitedExistence.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForSentMessageWithLimitedExistence.swift @@ -56,7 +56,7 @@ extension PersistedExpirationForSentMessageWithLimitedExistence { return NSFetchRequest(entityName: PersistedExpirationForSentMessageWithLimitedExistence.entityName) } - public static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { + static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { let request: NSFetchRequest = PersistedExpirationForSentMessageWithLimitedExistence.fetchRequest() request.predicate = Predicate.withNoMessage let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForSentMessageWithLimitedVisibility.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForSentMessageWithLimitedVisibility.swift index 83a22d0d..faf4c69a 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForSentMessageWithLimitedVisibility.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/Expirations/PersistedExpirationForSentMessageWithLimitedVisibility.swift @@ -65,7 +65,7 @@ extension PersistedExpirationForSentMessageWithLimitedVisibility { return NSFetchRequest(entityName: PersistedExpirationForSentMessageWithLimitedVisibility.entityName) } - public static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { + static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { let request: NSFetchRequest = PersistedExpirationForSentMessageWithLimitedVisibility.fetchRequest() request.predicate = Predicate.withNoMessage let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PendingMessageReaction.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PendingMessageReaction.swift deleted file mode 100644 index 4077ccc8..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PendingMessageReaction.swift +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import OlvidUtils - - -@objc(PendingMessageReaction) -public final class PendingMessageReaction: NSManagedObject, ObvErrorMaker { - - private static let entityName = "PendingMessageReaction" - public static let errorDomain = "PendingMessageReaction" - private let log = OSLog(subsystem: ObvUICoreDataConstants.logSubsystem, category: "PendingMessageReaction") - - // MARK: - Attributes - - @NSManaged public private(set) var emoji: String? - @NSManaged private var senderIdentifier: Data - @NSManaged private var senderSequenceNumber: Int - @NSManaged private var senderThreadIdentifier: UUID - @NSManaged public private(set) var serverTimestamp: Date - - // MARK: - Relationships - - @NSManaged private var discussion: PersistedDiscussion? // Expected to be non-nil - - // MARK: - Other variables - - public var messageReferenceJSON: MessageReferenceJSON { - MessageReferenceJSON(senderSequenceNumber: senderSequenceNumber, senderThreadIdentifier: senderThreadIdentifier, senderIdentifier: senderIdentifier) - } - - // MARK: - Init - - private convenience init(emoji: String?, senderIdentifier: Data, senderSequenceNumber: Int, senderThreadIdentifier: UUID, serverTimestamp: Date, discussion: PersistedDiscussion) throws { - - guard let context = discussion.managedObjectContext else { throw Self.makeError(message: "Could not find context") } - - let entityDescription = NSEntityDescription.entity(forEntityName: PendingMessageReaction.entityName, in: context)! - self.init(entity: entityDescription, insertInto: context) - - self.emoji = emoji - self.senderIdentifier = senderIdentifier - self.senderSequenceNumber = senderSequenceNumber - self.senderThreadIdentifier = senderThreadIdentifier - self.serverTimestamp = serverTimestamp - self.discussion = discussion - } - - public static func createPendingMessageReactionIfAppropriate(emoji: String?, messageReference: MessageReferenceJSON, serverTimestamp: Date, discussion: PersistedDiscussion) throws { - - // We ignore this reaction if there exists a more recent request - guard try countPendingReactionsMoreRecentThanServerTimestamp( - serverTimestamp, - discussion: discussion, - senderIdentifier: messageReference.senderIdentifier, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - senderSequenceNumber: messageReference.senderSequenceNumber) == 0 else { return } - - // If we reach this point, we will add a new pending reaction. We first delete any previous pending reactions. - try deleteAllPendingReactions(discussion: discussion, senderIdentifier: messageReference.senderIdentifier, senderThreadIdentifier: messageReference.senderThreadIdentifier, senderSequenceNumber: messageReference.senderSequenceNumber) - - _ = try PendingMessageReaction(emoji: emoji, - senderIdentifier: messageReference.senderIdentifier, - senderSequenceNumber: messageReference.senderSequenceNumber, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - serverTimestamp: serverTimestamp, - discussion: discussion) - } - - // MARK: - Convenience DB getters - - public func delete() throws { - guard let context = self.managedObjectContext else { throw Self.makeError(message: "Cannot find context") } - context.delete(self) - } - - @nonobjc private static func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: PendingMessageReaction.entityName) - } - - private struct Predicate { - - enum Key: String { - case senderIdentifier = "senderIdentifier" - case senderThreadIdentifier = "senderThreadIdentifier" - case senderSequenceNumber = "senderSequenceNumber" - case serverTimestamp = "serverTimestamp" - case discussion = "discussion" - } - - static func withPrimaryKey(discussion: PersistedDiscussion, senderIdentifier: Data, senderThreadIdentifier: UUID, senderSequenceNumber: Int) -> NSPredicate { - NSCompoundPredicate(andPredicateWithSubpredicates: [ - NSPredicate(Key.discussion, equalTo: discussion), - NSPredicate(Key.senderIdentifier, EqualToData: senderIdentifier), - NSPredicate(Key.senderThreadIdentifier, EqualToUuid: senderThreadIdentifier), - NSPredicate(Key.senderSequenceNumber, EqualToInt: senderSequenceNumber), - ]) - } - static func olderThanServerTimestamp(_ serverTimestamp: Date) -> NSPredicate { - NSPredicate(Key.serverTimestamp, earlierThan: serverTimestamp) - } - static func moreRecentThanServerTimestamp(_ serverTimestamp: Date) -> NSPredicate { - NSPredicate(Key.serverTimestamp, laterThan: serverTimestamp) - } - static var withoutAssociatedDiscussion: NSPredicate { - NSPredicate(withNilValueForKey: Key.discussion) - } - } - - private static func countPendingReactionsMoreRecentThanServerTimestamp(_ serverTimestamp: Date, discussion: PersistedDiscussion, senderIdentifier: Data, senderThreadIdentifier: UUID, senderSequenceNumber: Int) throws -> Int { - guard let context = discussion.managedObjectContext else { throw makeError(message: "Could not find context") } - let request: NSFetchRequest = PendingMessageReaction.fetchRequest() - request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withPrimaryKey(discussion: discussion, senderIdentifier: senderIdentifier, senderThreadIdentifier: senderThreadIdentifier, senderSequenceNumber: senderSequenceNumber), - Predicate.moreRecentThanServerTimestamp(serverTimestamp), - ]) - return try context.count(for: request) - } - - private static func deleteAllPendingReactions(discussion: PersistedDiscussion, senderIdentifier: Data, senderThreadIdentifier: UUID, senderSequenceNumber: Int) throws { - guard let context = discussion.managedObjectContext else { throw makeError(message: "Could not find context") } - let request: NSFetchRequest = PendingMessageReaction.fetchRequest() - request.predicate = Predicate.withPrimaryKey(discussion: discussion, senderIdentifier: senderIdentifier, senderThreadIdentifier: senderThreadIdentifier, senderSequenceNumber: senderSequenceNumber) - let results = try context.fetch(request) - for result in results { - context.delete(result) - } - } - - public static func deleteRequestsOlderThanDate(_ date: Date, within context: NSManagedObjectContext) throws { - let request: NSFetchRequest = PendingMessageReaction.fetchRequest() - request.predicate = Predicate.olderThanServerTimestamp(date) - let batchDeleteRequest = NSBatchDeleteRequest(fetchRequest: request) - try context.execute(batchDeleteRequest) - } - - public static func deleteOrphaned(within context: NSManagedObjectContext) throws { - let request: NSFetchRequest = PendingMessageReaction.fetchRequest() - request.predicate = Predicate.withoutAssociatedDiscussion - let batchDeleteRequest = NSBatchDeleteRequest(fetchRequest: request) - try context.execute(batchDeleteRequest) - } - - public static func getPendingMessageReaction(discussion: PersistedDiscussion, senderIdentifier: Data, senderThreadIdentifier: UUID, senderSequenceNumber: Int) throws -> PendingMessageReaction? { - guard let context = discussion.managedObjectContext else { throw makeError(message: "Could not find context") } - let request: NSFetchRequest = PendingMessageReaction.fetchRequest() - request.predicate = Predicate.withPrimaryKey(discussion: discussion, senderIdentifier: senderIdentifier, senderThreadIdentifier: senderThreadIdentifier, senderSequenceNumber: senderSequenceNumber) - let results = try context.fetch(request) - switch results.count { - case 0, 1: - return results.first - default: - // We expect 0 or 1 request in database - assertionFailure() - // In production, we return the most recent reaction - return results.sorted(by: { $0.serverTimestamp > $1.serverTimestamp }).first - } - } - - -} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessage+Utils.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessage+Utils.swift index 8f2f997b..3b0d6679 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessage+Utils.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessage+Utils.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -189,6 +189,9 @@ extension PersistedMessage { } } + /// Returns `true` iff the edit body action can be made available for this message. This is expected to be called on the main thread to allow the UI to determine if the edit action can be shown to the user. + /// + /// We implement this by simulating what would happen if the edit action was performed. We return `true` iff the call succeeds. This is performed on a child view context to prevent any unwanted side-effect. public var editBodyActionCanBeMadeAvailable: Bool { if let sentMessage = self as? PersistedMessageSent { return sentMessage.editBodyActionCanBeMadeAvailableForSentMessage @@ -205,6 +208,7 @@ extension PersistedMessage { } } + public var deleteOwnReactionActionCanBeMadeAvailable: Bool { if let receivedMessage = self as? PersistedMessageReceived { return receivedMessage.deleteOwnReactionActionCanBeMadeAvailableForReceivedMessage @@ -217,26 +221,74 @@ extension PersistedMessage { /// Returns `true` iff the owned identity is allowed to locally delete this message. + /// + /// This is expected to be called on the main thread, from the UI, in order to determine if the delete action can be made available for this message. + /// We return `true` iff the call to the deletion method would succeed. To do so, we create a child view context on which we simulate the call. public var deleteMessageActionCanBeMadeAvailable: Bool { - guard let ownedCryptoId = self.discussion.ownedIdentity?.cryptoId else { assertionFailure(); return false } - return requesterIsAllowedToDeleteMessage(requester: .ownedIdentity(ownedCryptoId: ownedCryptoId, deletionType: .local)) + assert(Thread.isMainThread) + + guard let context = self.managedObjectContext else { + assertionFailure() + return false + } + guard context.concurrencyType == .mainQueueConcurrencyType else { + assertionFailure() + return false + } + + let childViewContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) + childViewContext.parent = context + guard let messageInChildViewContext = try? PersistedMessage.get(with: self.typedObjectID, within: childViewContext) else { + assertionFailure() + return false + } + guard let ownedIdentity = messageInChildViewContext.discussion?.ownedIdentity else { + assertionFailure() + return false + } + + do { + _ = try ownedIdentity.processMessageDeletionRequestRequestedFromCurrentDeviceOfThisOwnedIdentity(persistedMessageObjectID: messageInChildViewContext.objectID, deletionType: .local) + return true + } catch { + return false + } } /// Returns `true` iff the owned identity is allowed to perform a remote (global) delete of this message. + /// + /// This is expected to be called on the main thread, from the UI, in order to determine if the global delete action can be made available for this message. + /// We return `true` iff the call to the global deletion method would succeed. To do so, we create a child view context on which we simulate the call. public var globalDeleteMessageActionCanBeMadeAvailable: Bool { - guard let ownedCryptoId = self.discussion.ownedIdentity?.cryptoId else { assertionFailure(); return false } - return requesterIsAllowedToDeleteMessage(requester: .ownedIdentity(ownedCryptoId: ownedCryptoId, deletionType: .global)) - } - - - func requesterIsAllowedToDeleteMessage(requester: RequesterOfMessageDeletion) -> Bool { + assert(Thread.isMainThread) + + guard let context = self.managedObjectContext else { + assertionFailure() + return false + } + guard context.concurrencyType == .mainQueueConcurrencyType else { + assertionFailure() + return false + } + + let childViewContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) + childViewContext.parent = context + guard let messageInChildViewContext = try? PersistedMessage.get(with: self.typedObjectID, within: childViewContext) else { + assertionFailure() + return false + } + guard let ownedIdentity = messageInChildViewContext.discussion?.ownedIdentity else { + assertionFailure() + return false + } + do { - try throwIfRequesterIsNotAllowedToDeleteMessage(requester: requester) + _ = try ownedIdentity.processMessageDeletionRequestRequestedFromCurrentDeviceOfThisOwnedIdentity(persistedMessageObjectID: messageInChildViewContext.objectID, deletionType: .global) + return true } catch { return false } - return true } - + } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessage.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessage.swift index e41eccb5..3c8d19f0 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessage.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessage.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,7 @@ import ObvEngine import os.log import OlvidUtils import UniformTypeIdentifiers +import ObvSettings public enum PersistedMessageKind { @@ -56,18 +57,37 @@ public class PersistedMessage: NSManagedObject, ObvErrorMaker { @NSManaged public private(set) var sortIndex: Double @NSManaged public private(set) var timestamp: Date + // MARK: - Relationships - @NSManaged public private(set) var discussion: PersistedDiscussion + @NSManaged public private(set) var discussion: PersistedDiscussion? // Expected to be non-nil, except while deleting/wiping a discussion @NSManaged private var illustrativeMessageForDiscussion: PersistedDiscussion? + @NSManaged public private(set) var mentions: Set + @NSManaged private var messageRepliedToIdentifier: PendingRepliedTo? @NSManaged private var persistedMetadata: Set @NSManaged private(set) var rawMessageRepliedTo: PersistedMessage? // Should *only* be accessed from subentities @NSManaged private var rawReactions: [PersistedMessageReaction]? @NSManaged private var replies: Set - @NSManaged public private(set) var mentions: Set // MARK: - Other variables + + /// 2023-07-17: This is the most appropriate identifier to use in, e.g., notifications + public var identifier: MessageIdentifier { + get throws { + if self is PersistedMessageSent { + return .sent(id: .objectID(objectID: self.objectID)) + } else if self is PersistedMessageReceived { + return .received(id: .objectID(objectID: self.objectID)) + } else { + throw ObvError.noMessageIdentifierForThisMessageType + } + } + } + var messageRepliedToIdentifierIsNonNil: Bool { + messageRepliedToIdentifier != nil + } + public var kind: PersistedMessageKind { assertionFailure("Kind must be overriden in subclasses") return .none @@ -108,6 +128,17 @@ public class PersistedMessage: NSManagedObject, ObvErrorMaker { self.resetDoesMentionOwnedIdentityValue() } + /// Called when receiving a wipe request from a contact or another owned device. + /// + /// Shall only be called from ``PersistedMessageReceived.wipeThisMessage(requesterCryptoId:)`` and ``PersistedMessageSent.wipeThisMessage(requesterCryptoId:)``. + func wipeThisMessage(requesterCryptoId: ObvCryptoId) throws { + self.deleteBodyAndMentions() + self.reactions.forEach { try? $0.delete() } + self.reactions.forEach { try? $0.delete() } + try addMetadata(kind: .remoteWiped(remoteCryptoId: requesterCryptoId), date: Date()) + } + + public var initialExistenceDuration: TimeInterval? { if let sentMessage = self as? PersistedMessageSent { return sentMessage.existenceDuration @@ -139,21 +170,43 @@ public class PersistedMessage: NSManagedObject, ObvErrorMaker { public var isWiped: Bool { isLocallyWiped || isRemoteWiped } - /// In general, a message cannot be edited. Note that we expect `PersistedMessageSent` and `PersistedMessageReceived` to override this variable in return `true` when appropriate. - var textBodyCanBeEdited: Bool { false } - /// Shall only be called from methods in `PersistedMessage`, `PersistedMessageReceived`, or `PersistedMessageSent`. It shall thus not be made public. - func replaceContentWith(newBody: String?, newMentions: Set) throws { - + func processUpdateMessageRequest(newTextBody: String?, newUserMentions: [MessageJSON.UserMention]) throws { + defer { self.resetDoesMentionOwnedIdentityValue() } - guard self.textBodyCanBeEdited else { - throw Self.makeError(message: "The text body of this message cannot be edited now") + guard let newTextBody else { + if self.body != nil { + self.body = nil + } + deleteAllAssociatedMentions() + return + } + + let (trimmedBody, mentionsInTrimmedBody) = newTextBody.trimmingWhitespacesAndNewlines(updating: Array(newUserMentions)) + + if self.body != trimmedBody { + self.body = trimmedBody } + deleteAllAssociatedMentions() + mentionsInTrimmedBody.forEach { mention in + _ = try? PersistedUserMentionInMessage(mention: mention, message: self) + } + + } + + + /// Shall only be called from methods in `PersistedMessageSent`. + func replaceContentWith(newBody: String?, newMentions: Set) throws { + + defer { + self.resetDoesMentionOwnedIdentityValue() + } + guard let newBody else { if self.body != nil { self.body = nil @@ -167,12 +220,12 @@ public class PersistedMessage: NSManagedObject, ObvErrorMaker { if self.body != trimmedBody { self.body = trimmedBody } - + deleteAllAssociatedMentions() mentionsInTrimmedBody.forEach { mention in _ = try? PersistedUserMentionInMessage(mention: mention, message: self) } - + } @@ -234,12 +287,48 @@ public class PersistedMessage: NSManagedObject, ObvErrorMaker { } public var retainWipedOutboundMessages: Bool { - self.discussion.retainWipedOutboundMessages + self.discussion?.retainWipedOutboundMessages ?? false } /// Helper property that returns `discussion.autoRead` public var autoRead: Bool { - self.discussion.autoRead + self.discussion?.autoRead ?? false + } + + + /// Exclusively called from ``PersistedObvContactIdentity.saveExtendedPayload(within:)`` when receiving an extended message payload for a message sent from a contact, and from ``PersistedObvOwnedIdentity.saveExtendedPayload(foundIn:for:)`` when receiving an extended message payload for a message sent from another device of the owned identity. + /// Returns `true` iff at least one extended payload could be saved. + func saveExtendedPayload(foundIn attachementImages: [NotificationAttachmentImage]) throws -> Bool { + + var atLeastOneExtendedPayloadCouldBeSaved = false + + guard let fyleMessageJoinWithStatus else { + assertionFailure() + return false + } + + assert(!fyleMessageJoinWithStatus.isEmpty) + + for attachementImage in attachementImages { + let attachmentNumber = attachementImage.attachmentNumber + guard attachmentNumber < fyleMessageJoinWithStatus.count else { + throw ObvError.unexpectedAttachmentNumber + } + + guard case .data(let data) = attachementImage.dataOrURL else { + continue + } + + let fyleMessageJoinWithStatus = fyleMessageJoinWithStatus[attachmentNumber] + + if fyleMessageJoinWithStatus.setDownsizedThumbnailIfRequired(data: data) { + // the setDownsizedThumbnailIfRequired returned true, meaning that the downsized thumbnail has been set. We will need to refresh the message in the view context. + atLeastOneExtendedPayloadCouldBeSaved = true + } + } + + return atLeastOneExtendedPayloadCouldBeSaved + } } @@ -248,18 +337,41 @@ public class PersistedMessage: NSManagedObject, ObvErrorMaker { extension PersistedMessage { - struct ObvError: LocalizedError { + public enum ObvError: LocalizedError { - let kind: Kind - - enum Kind { - case managedContextIsNil - } - - var errorDescription: String? { - switch kind { + case managedContextIsNil + case unexpectedAttachmentNumber + case unexpectedOwnedIdentity + case unexpectedContactIdentity + case thisSpecificSystemMessageCannotBeDeleted + case cannotGloballyDeleteSystemMessage + case cannotGloballyDeleteMessageFromLockedOrPrediscussion + case cannotGloballyDeleteWipedMessage + case discussionIsNil + case noMessageIdentifierForThisMessageType + + public var errorDescription: String? { + switch self { case .managedContextIsNil: return "The managed context is nil, which is unexpected" + case .unexpectedAttachmentNumber: + return "Unexpected attachment number" + case .unexpectedOwnedIdentity: + return "Unexpected owned identity" + case .thisSpecificSystemMessageCannotBeDeleted: + return "This specific system message cannot be deleted" + case .cannotGloballyDeleteSystemMessage: + return "Cannot globally delete a system message" + case .cannotGloballyDeleteMessageFromLockedOrPrediscussion: + return "Cannot globally delete a message from a locked or prediscussion" + case .cannotGloballyDeleteWipedMessage: + return "Cannot globally delete a wiped message" + case .discussionIsNil: + return "The discussion is nil (occurs while deleting/wiping a discussion)" + case .unexpectedContactIdentity: + return "Unexpected contact identity" + case .noMessageIdentifierForThisMessageType: + return "No message identifier for this message type" } } @@ -272,7 +384,12 @@ extension PersistedMessage { extension PersistedMessage { - convenience init(timestamp: Date, body: String?, rawStatus: Int, senderSequenceNumber: Int, sortIndex: Double, isReplyToAnotherMessage: Bool, replyTo: PersistedMessage?, discussion: PersistedDiscussion, readOnce: Bool, visibilityDuration: TimeInterval?, forwarded: Bool, mentions: [MessageJSON.UserMention], forEntityName entityName: String) throws { + enum ReplyToType { + case json(replyToJSON: MessageReferenceJSON) + case message(messageRepliedTo: PersistedMessage) + } + + convenience init(timestamp: Date, body: String?, rawStatus: Int, senderSequenceNumber: Int, sortIndex: Double, replyTo: ReplyToType?, discussion: PersistedDiscussion, readOnce: Bool, visibilityDuration: TimeInterval?, forwarded: Bool, mentions: [MessageJSON.UserMention], thisMessageTimestampCanResetDiscussionTimestampOfLastMessage: Bool = true, forEntityName entityName: String) throws { guard let context = discussion.managedObjectContext else { assertionFailure(); throw PersistedMessage.makeError(message: "Could not find context") } @@ -280,9 +397,7 @@ extension PersistedMessage { self.init(entity: entityDescription, insertInto: context) self.body = body - self.isReplyToAnotherMessage = isReplyToAnotherMessage self.permanentUUID = UUID() - self.rawMessageRepliedTo = replyTo self.rawStatus = rawStatus self.sectionIdentifier = try PersistedMessage.computeSectionIdentifier(fromTimestamp: timestamp, sortIndex: sortIndex, discussion: discussion) self.senderSequenceNumber = senderSequenceNumber @@ -297,8 +412,30 @@ extension PersistedMessage { mentions.forEach { mention in _ = try? PersistedUserMentionInMessage(mention: mention, message: self) } - - discussion.resetTimestampOfLastMessageIfCurrentValueIsEarlierThan(self.timestamp) + + switch replyTo { + case .none: + self.isReplyToAnotherMessage = false + self.rawMessageRepliedTo = nil + self.messageRepliedToIdentifier = nil + case .message(messageRepliedTo: let messageRepliedTo): + self.isReplyToAnotherMessage = true + self.rawMessageRepliedTo = messageRepliedTo + self.messageRepliedToIdentifier = nil + case .json(replyToJSON: let replyToJSON): + self.isReplyToAnotherMessage = true + if let messageRepliedTo = try PersistedMessage.findMessageFrom(reference: replyToJSON, within: discussion) { + self.rawMessageRepliedTo = messageRepliedTo + self.messageRepliedToIdentifier = nil + } else { + self.rawMessageRepliedTo = nil + self.messageRepliedToIdentifier = PendingRepliedTo(replyToJSON: replyToJSON, within: context) + } + } + + if thisMessageTimestampCanResetDiscussionTimestampOfLastMessage { + discussion.resetTimestampOfLastMessageIfCurrentValueIsEarlierThan(self.timestamp) + } discussion.unarchive() // Update the value of the doesMentionOwnedIdentity attribute @@ -306,11 +443,62 @@ extension PersistedMessage { resetDoesMentionOwnedIdentityValue() } + + + /// When creating a new `PersistedMessage`, we need to search for previous `PersistedMessage` that are a reply to this message. + /// These messages have a non-nil `messageRepliedToIdentifier` relationship that references this message. This method searches for these + /// messages, delete the `messageRepliedToIdentifier` and replaces it by a non-nil `messageRepliedTo` relationship. + /// This is called from the init of `PersistedMessageSent` and `PersistedMessageReceived`, not from the init of `PersistedMessage` are all necessary variables are not available at the end of the `PersistedMessage` init. + func updateMessagesReplyingToThisMessage() throws { + + guard let context = self.managedObjectContext else { throw Self.makeError(message: "Could not find context") } + guard let discussion else { assertionFailure(); throw ObvError.discussionIsNil } + + let senderIdentifier: Data + let senderThreadIdentifier: UUID + switch self.kind { + case .received: + guard let selfAsReceived = (self as? PersistedMessageReceived) else { assertionFailure(); return } + senderIdentifier = selfAsReceived.senderIdentifier + senderThreadIdentifier = selfAsReceived.senderThreadIdentifier + case .sent: + guard let selfAsSent = (self as? PersistedMessageSent) else { assertionFailure(); return } + guard let _senderIdentifier = selfAsSent.discussion?.ownedIdentity?.identity else { + assertionFailure() + return + } + senderIdentifier = _senderIdentifier + senderThreadIdentifier = selfAsSent.senderThreadIdentifier + case .none, .system: + return + } + + let pendingRepliedTos = try PendingRepliedTo.getAll(senderIdentifier: senderIdentifier, + senderSequenceNumber: self.senderSequenceNumber, + senderThreadIdentifier: senderThreadIdentifier, + discussion: discussion, + within: context) + + pendingRepliedTos.forEach { pendingRepliedTo in + guard let reply = pendingRepliedTo.message else { + assertionFailure() + try? pendingRepliedTo.delete() + return + } + assert(reply.isReplyToAnotherMessage) + reply.rawMessageRepliedTo = self + reply.messageRepliedToIdentifier = nil + try? pendingRepliedTo.delete() + } + + } + /// This `update()` method shall *only* be called from the similar `update()` from the subclass `PersistedMessageReceived`. func update(body: String?, newMentions: Set, senderSequenceNumber: Int, replyTo: PersistedMessage?, discussion: PersistedDiscussion) throws { - guard self.discussion.objectID == discussion.objectID else { assertionFailure(); throw Self.makeError(message: "Invalid discussion") } + guard let localDiscussion = self.discussion else { assertionFailure(); throw ObvError.discussionIsNil } + guard localDiscussion.objectID == discussion.objectID else { assertionFailure(); throw Self.makeError(message: "Invalid discussion") } guard self.senderSequenceNumber == senderSequenceNumber else { assertionFailure(); throw Self.makeError(message: "Invalid sender sequence number") } try self.replaceContentWith(newBody: body, newMentions: newMentions) self.rawMessageRepliedTo = replyTo @@ -318,12 +506,6 @@ extension PersistedMessage { } - /// Should *only* be called from `PersistedMessageReceived` - func setRawMessageRepliedTo(with rawMessageRepliedTo: PersistedMessage) { - assert(kind == .received) - self.rawMessageRepliedTo = rawMessageRepliedTo - } - func setHasUpdate() { onChangeFlag += 1 } @@ -338,6 +520,28 @@ extension PersistedMessage { } } + + /// Helper method. + /// Determine an appropriate `messageUploadTimestampFromServer`, needed to create the `PersistedMessageReceived` instance. + /// For oneToOne and GroupV1 discussions, this is simply the date indicated in the ObvMessage. + /// For GroupV2 discussions, we look for the original server timestamp that may exist in the messageJSON. If it exists, we use it (this is usefull to properly sort many "old" messages that were sent in a Group v2 discussion before we our acceptance to become a group member). + static func determineMessageUploadTimestampFromServer(messageUploadTimestampFromServerInObvMessage: Date, messageJSON: MessageJSON, discussionKind: PersistedDiscussion.Kind) -> Date { + + let messageUploadTimestampFromServer: Date + switch discussionKind { + case .oneToOne, .groupV1: + messageUploadTimestampFromServer = messageUploadTimestampFromServerInObvMessage + case .groupV2: + if let originalServerTimestamp = messageJSON.originalServerTimestamp { + messageUploadTimestampFromServer = min(originalServerTimestamp, messageUploadTimestampFromServerInObvMessage) + } else { + messageUploadTimestampFromServer = messageUploadTimestampFromServerInObvMessage + } + } + return messageUploadTimestampFromServer + + } + } @@ -345,218 +549,100 @@ extension PersistedMessage { extension PersistedMessage { - /// This is the function to call to delete this message. - /// This method makes sure the `requester` is allowed to delete this message. If the `requester` is `nil`, deletion is performed. - public func delete(requester: RequesterOfMessageDeletion?) throws -> InfoAboutWipedOrDeletedPersistedMessage { - if let requester = requester { - try throwIfRequesterIsNotAllowedToDeleteMessage(requester: requester) + /// This is the function to call to delete this message in case some expiration was reached. + public func deleteExpiredMessage() throws -> InfoAboutWipedOrDeletedPersistedMessage { + guard let context = self.managedObjectContext else { + assertionFailure() + throw ObvError.managedContextIsNil + } + guard let discussionPermanentID = discussion?.discussionPermanentID else { + throw ObvError.discussionIsNil } - guard let context = self.managedObjectContext else { assertionFailure(); throw Self.makeError(message: "Could not find context") } let deletedInfo = InfoAboutWipedOrDeletedPersistedMessage(kind: .deleted, - discussionPermanentID: self.discussion.discussionPermanentID, + discussionPermanentID: discussionPermanentID, + messagePermanentID: self.messagePermanentID) + context.delete(self) + return deletedInfo + } + + + /// Called from this class only, after checks have been made + private func deletePersistedMessage() throws -> InfoAboutWipedOrDeletedPersistedMessage { + guard let discussion else { + throw ObvError.discussionIsNil + } + guard let context = self.managedObjectContext else { + throw ObvError.managedContextIsNil + } + let deletedInfo = InfoAboutWipedOrDeletedPersistedMessage(kind: .deleted, + discussionPermanentID: discussion.discussionPermanentID, messagePermanentID: self.messagePermanentID) context.delete(self) return deletedInfo } - - /// This methods throws an error if the requester of this message deletion is not allowed to perform such a deletion. - func throwIfRequesterIsNotAllowedToDeleteMessage(requester: RequesterOfMessageDeletion) throws { - - // We fist consider the message kind + + func processMessageDeletionRequestRequestedFromCurrentDevice(deletionType: DeletionType) throws -> InfoAboutWipedOrDeletedPersistedMessage { + + assert(self.discussion?.status == .active || deletionType == .local, "This should have been checked already") switch self.kind { - + case .none: - + assertionFailure() - return // Allow deletion + return try deletePersistedMessage() case .system: - + guard let systemMessage = self as? PersistedMessageSystem else { // Unexpected, this is a bug assertionFailure() - return // Allow deletion + return try deletePersistedMessage() } - // A system message can only (and almost always) be locally deleted by an owned identity - - switch requester { - case .contact: - throw Self.makeError(message: "A system message cannot be deleted by a contact") - case .ownedIdentity(let ownedCryptoId, let deletionType): - guard let discussionOwnedCryptoId = discussion.ownedIdentity?.cryptoId else { - return // Rare case, we allow deletion - } - guard (discussionOwnedCryptoId == ownedCryptoId) else { - assertionFailure() - throw Self.makeError(message: "Unexpected owned identity for deleting this message") - } - switch deletionType { - case .local: - switch systemMessage.category { - case .contactJoinedGroup, - .contactLeftGroup, - .contactWasDeleted, - .callLogItem, - .updatedDiscussionSharedSettings, - .contactRevokedByIdentityProvider, - .discussionWasRemotelyWiped, - .notPartOfTheGroupAnymore, - .rejoinedGroup, - .contactIsOneToOneAgain, - .membersOfGroupV2WereUpdated, - .ownedIdentityIsPartOfGroupV2Admins, - .ownedIdentityIsNoLongerPartOfGroupV2Admins, - .ownedIdentityDidCaptureSensitiveMessages, - .contactIdentityDidCaptureSensitiveMessages: - return // Allow deletion - case .numberOfNewMessages, - .discussionIsEndToEndEncrypted: - throw Self.makeError(message: "Specific system message that cannot be deleted") - } - case .global: - throw Self.makeError(message: "We cannot globally delete a system message") + switch deletionType { + case .local: + switch systemMessage.category { + case .contactJoinedGroup, + .contactLeftGroup, + .contactWasDeleted, + .callLogItem, + .updatedDiscussionSharedSettings, + .contactRevokedByIdentityProvider, + .discussionWasRemotelyWiped, + .notPartOfTheGroupAnymore, + .rejoinedGroup, + .contactIsOneToOneAgain, + .membersOfGroupV2WereUpdated, + .ownedIdentityIsPartOfGroupV2Admins, + .ownedIdentityIsNoLongerPartOfGroupV2Admins, + .ownedIdentityDidCaptureSensitiveMessages, + .contactWasIntroducedToAnotherContact, + .contactIdentityDidCaptureSensitiveMessages: + return try deletePersistedMessage() + case .numberOfNewMessages, + .discussionIsEndToEndEncrypted: + throw ObvError.thisSpecificSystemMessageCannotBeDeleted } + case .global: + throw ObvError.cannotGloballyDeleteSystemMessage } case .received, .sent: - - // We are considering a received or sent message. We need more information be fore deciding whether we should throw or not. - break - - } - - assert(self.kind == .received || self.kind == .sent) - - // If we reach this point, we are considering a received or a sent message - - // Received or sent messages from locked and preDiscussion can only (and always) be locally deleted by an owned identity - - switch discussion.status { - case .locked, .preDiscussion: - switch requester { - case .contact: - throw Self.makeError(message: "A contact cannot delete a message from a locked or preDiscussion") - case .ownedIdentity(let ownedCryptoId, let deletionType): - guard let discussionOwnedCryptoId = discussion.ownedIdentity?.cryptoId else { - return // Rare case, we allow deletion - } - guard (discussionOwnedCryptoId == ownedCryptoId) else { - assertionFailure() - throw Self.makeError(message: "Unexpected owned identity for deleting this message") - } - switch deletionType { - case .local: - return // Allow deletion - case .global: - throw Self.makeError(message: "We cannot globally delete a message from a locked or preDiscussion") - } - } - case .active: - break // We need to consider more aspects about the message in order to decide whether we should throw or not - } - // If we reach this point, we are considering a received or a sent message in an active discussion - - // Messages that are wiped cannot be globally deleted by the owned identity and cannot be deleted by a contact - - guard !isRemoteWiped else { - switch requester { - case .contact: - throw Self.makeError(message: "A contact cannot delete a wiped message") - case .ownedIdentity(let ownedCryptoId, let deletionType): - guard let discussionOwnedCryptoId = discussion.ownedIdentity?.cryptoId else { - return // Rare case, we allow deletion - } - guard (discussionOwnedCryptoId == ownedCryptoId) else { - assertionFailure() - throw Self.makeError(message: "Unexpected owned identity for deleting this message") - } + if isRemoteWiped { switch deletionType { case .local: - return // Allow deletion + return try deletePersistedMessage() case .global: - throw Self.makeError(message: "We cannot globally delete a wiped message") - } - } - } - - // If we reach this point, we are considering a (non-wiped) received or a sent message in an active discussion - - switch try discussion.kind { - - case .oneToOne, .groupV1: - - // It is always ok to (locally or globally) delete a non-wiped received or sent message in a oneToOne or a groupV1 discussion - return // Allow deletion - - case .groupV2(withGroup: let group): - - // For a group v2 discussion, we make sure the requester has the appropriate rights - - guard let group = group else { - - // If the group cannot be found (which is unexpected), we only allow local deletion of the message from an owned identity - - switch requester { - case .contact: assertionFailure() - throw Self.makeError(message: "Since we cannot find the group, we disallow deletion by a contact") - case .ownedIdentity(ownedCryptoId: _, deletionType: let deletionType): - switch deletionType { - case .local: - return // Allow deletion - case .global: - throw Self.makeError(message: "Since we cannot find the group, we disallow global deletion by owned identity") - } - } - - } - - // We make sure the requester has the appropriate rights - - switch requester { - - case .ownedIdentity(ownedCryptoId: let ownedCryptoId, deletionType: let deletionType): - - guard (try group.ownCryptoId == ownedCryptoId) else { - assertionFailure() - throw Self.makeError(message: "Unexpected owned identity for deleting this discussion") - } - switch deletionType { - case .local: - return // Allow deletion - case .global: - if group.ownedIdentityIsAllowedToRemoteDeleteAnything { - return // Allow deletion - } else if group.ownedIdentityIsAllowedToEditOrRemoteDeleteOwnMessages && self is PersistedMessageSent { - return // Allow deletion - } else { - throw Self.makeError(message: "Owned identity is not allowed to perform a global (remote) delete in this case") - } - } - - case .contact(let ownedCryptoId, let contactCryptoId, _): - - guard (try group.ownCryptoId == ownedCryptoId) else { - assertionFailure() - throw Self.makeError(message: "Unexpected owned identity associated to contact for deleting this discussion") - } - guard let member = group.otherMembers.first(where: { $0.identity == contactCryptoId.getIdentity() }) else { - throw Self.makeError(message: "The deletion requester is not part of the group") - } - if member.isAllowedToRemoteDeleteAnything { - return // Allow deletion - } else if member.isAllowedToEditOrRemoteDeleteOwnMessages && (self as? PersistedMessageReceived)?.contactIdentity?.cryptoId == contactCryptoId { - return // Allow deletion - } else { - assertionFailure() - throw Self.makeError(message: "The member is not allowed to delete this message") + throw ObvError.cannotGloballyDeleteWipedMessage } + } else { + return try deletePersistedMessage() } - + } } @@ -601,74 +687,60 @@ extension PersistedMessage { } - public func setReactionFromOwnedIdentity(withEmoji emoji: String?, reactionTimestamp: Date) throws { + /// Set `messageUploadTimestampFromServer` to `nil` if the request is made on the current device + func setReactionFromOwnedIdentity(withEmoji emoji: String?, messageUploadTimestampFromServer: Date?) throws { // Never set an emoji on a wiped message guard !self.isWiped else { return } - // Make sure we are allowed to set a reaction - guard try ownedIdentityIsAllowedToSetReaction else { - throw Self.makeError(message: "Trying to set an own reaction in a group v2 discussion where we are not allowed to write") - } - // Set the reaction + // Set or update the reaction if let reaction = reactionFromOwnedIdentity() { - try reaction.updateEmoji(with: emoji, at: reactionTimestamp) + try reaction.updateEmoji(with: emoji, at: Date()) } else if let emoji = emoji { - _ = try PersistedMessageReactionSent(emoji: emoji, timestamp: reactionTimestamp, message: self) + _ = try PersistedMessageReactionSent(emoji: emoji, timestamp: messageUploadTimestampFromServer ?? Date(), message: self) } else { // The new emoji is nil (meaning we should remove a previous reaction) and no previous reaction can be found. There is nothing to do. } } + /// Expected to be called on the main thread as it allows the UI to determine if the owned identity is allowed to set a reaction on this message. + /// + /// This computed variable actually creates a child view context to simulate the call to the reaction setter for the owned identity. It returns `true` iff the call would work. public var ownedIdentityIsAllowedToSetReaction: Bool { get throws { - switch try discussion.kind { - case .oneToOne, .groupV1: - return true - case .groupV2(withGroup: let group): - guard let group = group else { - assertionFailure() - throw Self.makeError(message: "Could not determine group v2 while setting own reaction to a message") - } - return group.ownedIdentityIsAllowedToSendMessage - } - } - } - - - public func setReactionFromContact(_ contact: PersistedObvContactIdentity, withEmoji emoji: String?, reactionTimestamp: Date) throws { - // Never set an emoji on a wiped message - guard !self.isWiped else { return } - // Make sure the contact is allowed to set a reaction - switch try discussion.kind { - case .oneToOne(withContactIdentity: let discussionContact): - guard discussionContact == contact else { - assertionFailure() - throw Self.makeError(message: "Unexpected contact reaction") - } - case .groupV1(withContactGroup: let group): - guard let group = group else { + assert(Thread.isMainThread) + + guard let context = self.managedObjectContext else { assertionFailure() - throw Self.makeError(message: "Could not determine group while setting reaction from contact") + return false } - guard group.contactIdentities.contains(contact) else { + guard context.concurrencyType == .mainQueueConcurrencyType else { assertionFailure() - throw Self.makeError(message: "Unexpected contact reaction is group") + return false } - case .groupV2(withGroup: let group): - guard let group = group else { + + let childViewContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) + childViewContext.parent = context + guard let messageInChildViewContext = try? PersistedMessage.get(with: self.typedObjectID, within: childViewContext) else { assertionFailure() - throw Self.makeError(message: "Could not determine group v2 while setting reaction from contact") + return false } - guard let member = group.otherMembers.first(where: { $0.identity == contact.identity }) else { + guard let ownedIdentity = messageInChildViewContext.discussion?.ownedIdentity else { assertionFailure() - throw Self.makeError(message: "Unexpected contact reaction is group v2") + return false } - guard member.isAllowedToSendMessage else { - assertionFailure() - throw Self.makeError(message: "Received a reaction from a contact that is now allowed to send messages") + // We return true iff the update would succeed + do { + _ = try ownedIdentity.processSetOrUpdateReactionOnMessageLocalRequestFromThisOwnedIdentity(messageObjectID: self.typedObjectID, newEmoji: nil) + return true + } catch { + return false } } - + } + + + func setReactionFromContact(_ contact: PersistedObvContactIdentity, withEmoji emoji: String?, reactionTimestamp: Date) throws { + guard !self.isWiped else { return } if let contactReaction = reactionFromContact(with: contact.cryptoId) { try contactReaction.updateEmoji(with: emoji, at: reactionTimestamp) } else { @@ -678,6 +750,7 @@ extension PersistedMessage { } + // MARK: - Utils for section identifiers extension PersistedMessage { @@ -740,11 +813,15 @@ extension PersistedMessage { extension PersistedMessage { private func resetDoesMentionOwnedIdentityValue() { + guard let discussion else { + assertionFailure("The discussion is nil") + return + } guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId else { assertionFailure("Could not determine the owned crypto id which is unexpected at this point") if self.doesMentionOwnedIdentity { self.doesMentionOwnedIdentity = false - self.discussion.resetNewReceivedMessageDoesMentionOwnedIdentityValue() + discussion.resetNewReceivedMessageDoesMentionOwnedIdentityValue() } return } @@ -760,7 +837,7 @@ extension PersistedMessage { if self.doesMentionOwnedIdentity != newDoesMentionOwnedIdentity { self.doesMentionOwnedIdentity = newDoesMentionOwnedIdentity - self.discussion.resetNewReceivedMessageDoesMentionOwnedIdentityValue() + discussion.resetNewReceivedMessageDoesMentionOwnedIdentityValue() } } @@ -800,7 +877,6 @@ extension PersistedMessage { static let muteNotificationsEndDate = [discussion.rawValue, PersistedDiscussion.Predicate.Key.localConfiguration.rawValue, PersistedDiscussionLocalConfiguration.Predicate.Key.muteNotificationsEndDate.rawValue].joined(separator: ".") static let ownedIdentity = [discussion.rawValue, PersistedDiscussion.Predicate.Key.ownedIdentity.rawValue].joined(separator: ".") static let ownedIdentityIdentity = [discussion.rawValue, PersistedDiscussion.Predicate.Key.ownedIdentityIdentity].joined(separator: ".") - static let senderThreadIdentifier = [discussion.rawValue, PersistedDiscussion.Predicate.Key.senderThreadIdentifier.rawValue].joined(separator: ".") static let ownedIdentityHiddenProfileHash = [ownedIdentity, PersistedObvOwnedIdentity.Predicate.Key.hiddenProfileHash.rawValue].joined(separator: ".") static let ownedIdentityHiddenProfileSalt = [ownedIdentity, PersistedObvOwnedIdentity.Predicate.Key.hiddenProfileSalt.rawValue].joined(separator: ".") } @@ -815,9 +891,6 @@ extension PersistedMessage { static var doesMentionOwnedIdentity: NSPredicate { NSPredicate(Key.doesMentionOwnedIdentity, is: true) } - static func withSenderThreadIdentifier(_ senderThreadIdentifier: UUID) -> NSPredicate { - NSPredicate(Key.senderThreadIdentifier, EqualToUuid: senderThreadIdentifier) - } static func withOwnedIdentity(_ ownedIdentity: PersistedObvOwnedIdentity) -> NSPredicate { NSPredicate(Key.ownedIdentity, equalTo: ownedIdentity) } @@ -910,6 +983,9 @@ extension PersistedMessage { return NSPredicate(withEntity: PersistedMessageSystem.entity()) } } + static var withNoDiscussion: NSPredicate { + NSPredicate(withNilValueForKey: Key.discussion) + } } @nonobjc static func fetchRequest() -> NSFetchRequest { @@ -921,7 +997,19 @@ extension PersistedMessage { return NSFetchRequest(entityName: PersistedMessage.entityName) } + + static func getPersistedMessage(discussion: PersistedDiscussion, messageId: MessageIdentifier) throws -> PersistedMessage? { + switch messageId { + case .sent(let id): + return try PersistedMessageSent.getPersistedMessageSent(discussion: discussion, messageId: id) + case .received(let id): + return try PersistedMessageReceived.getPersistedMessageReceived(discussion: discussion, messageId: id) + case .system(let id): + return try PersistedMessageSystem.getPersistedMessageSystem(discussion: discussion, messageId: id) + } + } + public static func get(with objectID: TypeSafeManagedObjectID, within context: NSManagedObjectContext) throws -> PersistedMessage? { return try get(with: objectID.objectID, within: context) } @@ -1048,6 +1136,23 @@ extension PersistedMessage { return try context.fetch(request).first } + + static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { + let request: NSFetchRequest = PersistedMessage.fetchRequest() + request.predicate = Predicate.withNoDiscussion + request.propertiesToFetch = [] + request.fetchBatchSize = 1_000 + let items = try context.fetch(request) + items.forEach { item in + context.delete(item) // We do not call deletePersistedMessage as the discussion is nil + } + } + + + public static func batchDeletePendingRepliedToEntriesOlderThan(_ date: Date, within context: NSManagedObjectContext) throws { + try PendingRepliedTo.batchDeleteEntriesOlderThan(date, within: context) + } + } @@ -1065,17 +1170,17 @@ extension PersistedMessage { * Note that the `hasChanges` test is imporant: a call to `discussion.setHasUpdates()` marks the managed context as `dirty` * triggering a new call to willSave(). Without the `discussion.hasChanges` test, we would create an infinite loop. */ - if isUpdated && !self.changedValues().isEmpty && !self.discussion.hasChanges { + if let discussion, isUpdated, !self.changedValues().isEmpty, !discussion.hasChanges { discussion.setHasUpdates() } // When inserting or updating a message, we use it as a candidate for the illustrative message of the discussion. - if (isInserted || isUpdated) && !self.changedValues().isEmpty { + if let discussion, (isInserted || isUpdated), !self.changedValues().isEmpty { discussion.resetIllustrativeMessageWithMessageIfAppropriate(newMessage: self) } // When inserting a new message, and when the status of a message changes, the discussion must recompute the number of new messages - if isInserted || (isUpdated && self.changedValues().keys.contains(Predicate.Key.rawStatus.rawValue)) { + if let discussion, (isInserted || (isUpdated && self.changedValues().keys.contains(Predicate.Key.rawStatus.rawValue))) { do { try discussion.refreshNumberOfNewMessages() } catch { @@ -1192,7 +1297,7 @@ extension PersistedMessage { /// Shall *only* be called from one of the `PersistedMessage` subclasses func addMetadata(kind: MetadataKind, date: Date) throws { - os_log("Call to addMetadata for message %{public}@ of kind %{public}@", log: log, type: .error, objectID.debugDescription, kind.description) + os_log("Call to addMetadata for message %{public}@ of kind %{public}@", log: log, type: .info, objectID.debugDescription, kind.description) os_log("Creating a new PersistedMessageTimestampedMetadata for message %{public}@ with kind %{public}@", log: log, type: .info, objectID.debugDescription, kind.description) guard let pm = PersistedMessageTimestampedMetadata(kind: kind, date: date, message: self) else { assertionFailure(); throw Self.makeError(message: "Could not add timestamped metadata") } self.persistedMetadata.insert(pm) @@ -1259,14 +1364,6 @@ public final class PersistedMessageTimestampedMetadata: NSManagedObject, ObvErro context.delete(self) } - public override func didSave() { - super.didSave() - if isInserted { - guard let message = self.message else { assertionFailure(); return } - ObvMessengerCoreDataNotification.persistedMessageHasNewMetadata(persistedMessageObjectID: message.objectID) - .postOnDispatchQueue() - } - } struct Predicate { enum Key: String { @@ -1344,3 +1441,92 @@ extension ObvManagedObjectPermanentID where T: PersistedMessage { } } + + + +// MARK: - PendingRepliedTo + +/// When receiving a message that replies to another message, it might happen that this replied-to message is not available +/// because it did not arrive yet. This entity makes it possible to save the elements (`senderIdentifier`, etc.) referencing +/// this replied-to message for later. Each time a new message arrive, we check the `PendingRepliedTo` entities and look +/// for all those that reference this arriving message. This allows to associate message with its replied-to message a posteriori. +@objc(PendingRepliedTo) +fileprivate final class PendingRepliedTo: NSManagedObject, ObvErrorMaker { + + private static let entityName = "PendingRepliedTo" + static let errorDomain = "PendingRepliedTo" + + @NSManaged private var creationDate: Date + @NSManaged private var senderIdentifier: Data + @NSManaged private var senderSequenceNumber: Int + @NSManaged private var senderThreadIdentifier: UUID + + @NSManaged private(set) var message: PersistedMessage? + + convenience init?(replyToJSON: MessageReferenceJSON, within context: NSManagedObjectContext) { + + let entityDescription = NSEntityDescription.entity(forEntityName: PendingRepliedTo.entityName, in: context)! + self.init(entity: entityDescription, insertInto: context) + + self.creationDate = Date() + self.senderSequenceNumber = replyToJSON.senderSequenceNumber + self.senderThreadIdentifier = replyToJSON.senderThreadIdentifier + self.senderIdentifier = replyToJSON.senderIdentifier + + } + + + fileprivate func delete() throws { + guard let context = self.managedObjectContext else { throw Self.makeError(message: "Could not find context") } + context.delete(self) + } + + + private struct Predicate { + enum Key: String { + case creationDate = "creationDate" + case senderIdentifier = "senderIdentifier" + case senderSequenceNumber = "senderSequenceNumber" + case senderThreadIdentifier = "senderThreadIdentifier" + case message = "message" + } + static func with(senderIdentifier: Data, senderSequenceNumber: Int, senderThreadIdentifier: UUID, discussion: PersistedDiscussion) -> NSPredicate { + let discussionKey = [Key.message.rawValue, PersistedMessage.Predicate.Key.discussion.rawValue].joined(separator: ".") + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + NSPredicate(Key.senderIdentifier, EqualToData: senderIdentifier), + NSPredicate(Key.senderSequenceNumber, EqualToInt: senderSequenceNumber), + NSPredicate(Key.senderThreadIdentifier, EqualToUuid: senderThreadIdentifier), + NSPredicate(format: "%K == %@", discussionKey, discussion.objectID), + ]) + } + static func createBefore(_ date: Date) -> NSPredicate { + NSPredicate(Key.creationDate, earlierThan: date) + } + } + + + @nonobjc static func fetchRequest() -> NSFetchRequest { + return NSFetchRequest(entityName: PendingRepliedTo.entityName) + } + + + fileprivate static func getAll(senderIdentifier: Data, senderSequenceNumber: Int, senderThreadIdentifier: UUID, discussion: PersistedDiscussion, within context: NSManagedObjectContext) throws -> [PendingRepliedTo] { + let request = PendingRepliedTo.fetchRequest() + request.predicate = Predicate.with(senderIdentifier: senderIdentifier, + senderSequenceNumber: senderSequenceNumber, + senderThreadIdentifier: senderThreadIdentifier, + discussion: discussion) + request.fetchBatchSize = 1_000 + return try context.fetch(request) + } + + + static func batchDeleteEntriesOlderThan(_ date: Date, within context: NSManagedObjectContext) throws { + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: PendingRepliedTo.entityName) + fetchRequest.predicate = Predicate.createBefore(date) + let batchDeleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest) + batchDeleteRequest.resultType = .resultTypeStatusOnly + _ = try context.execute(batchDeleteRequest) + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageReaction.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageReaction.swift index dc1c963d..722b3dab 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageReaction.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageReaction.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -53,25 +53,28 @@ public class PersistedMessageReaction: NSManagedObject { let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: context)! self.init(entity: entityDescription, insertInto: context) - try self.setEmoji(with: emoji, at: timestamp) + self.rawEmoji = emoji + self.timestamp = timestamp self.message = message } func updateEmoji(with newEmoji: String?, at newTimestamp: Date) throws { + guard self.timestamp < newTimestamp else { return } - try self.setEmoji(with: newEmoji, at: newTimestamp) - } - - - private func setEmoji(with newEmoji: String?, at reactionTimestamp: Date) throws { + if let newEmoji { guard newEmoji.count == 1 else { throw PersistedMessageReaction.makeError(message: "Invalid emoji: \(newEmoji)") } } - self.rawEmoji = newEmoji - self.timestamp = reactionTimestamp + if self.rawEmoji != newEmoji { + self.rawEmoji = newEmoji + } + if self.timestamp != newTimestamp { + self.timestamp = newTimestamp + } } + func delete() throws { guard let context = self.managedObjectContext else { throw PersistedMessageReaction.makeError(message: "Cannot find context") } context.delete(self) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageReceived.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageReceived.swift index 19883f7f..ae41797b 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageReceived.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageReceived.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,7 @@ import ObvEngine import ObvTypes import MobileCoreServices import OlvidUtils +import ObvSettings @objc(PersistedMessageReceived) @@ -52,7 +53,6 @@ public final class PersistedMessageReceived: PersistedMessage, ObvIdentifiableMa @NSManaged public private(set) var contactIdentity: PersistedObvContactIdentity? @NSManaged public private(set) var expirationForReceivedLimitedExistence: PersistedExpirationForReceivedMessageWithLimitedExistence? @NSManaged public private(set) var expirationForReceivedLimitedVisibility: PersistedExpirationForReceivedMessageWithLimitedVisibility? - @NSManaged private var messageRepliedToIdentifier: PendingRepliedTo? @NSManaged private var unsortedFyleMessageJoinWithStatus: Set @@ -67,6 +67,15 @@ public final class PersistedMessageReceived: PersistedMessage, ObvIdentifiableMa public override var kind: PersistedMessageKind { .received } + /// 2023-07-17: This is the most appropriate identifier to use in, e.g., notifications + public override var identifier: MessageIdentifier { + return .received(id: self.receivedMessageIdentifier) + } + + public var receivedMessageIdentifier: ReceivedMessageIdentifier { + return .objectID(objectID: self.objectID) + } + public override var textBody: String? { if readingRequiresUserAction { return NSLocalizedString("EPHEMERAL_MESSAGE", comment: "") @@ -92,21 +101,7 @@ public final class PersistedMessageReceived: PersistedMessage, ObvIdentifiableMa set { guard self.status != newValue else { return } self.rawStatus = newValue.rawValue - discussion.resetNewReceivedMessageDoesMentionOwnedIdentityValue() - switch self.status { - case .new: - break - case .unread: - break - case .read: - // When a received message is marked as "read", we check whether it has a limited visibility. - // If this is the case, we immediately create an appropriate expiration for this message. - if let visibilityDuration = self.visibilityDuration { - assert(self.expirationForReceivedLimitedVisibility == nil) - self.expirationForReceivedLimitedVisibility = PersistedExpirationForReceivedMessageWithLimitedVisibility(messageReceivedWithLimitedVisibility: self, - visibilityDuration: visibilityDuration) - } - } + discussion?.resetNewReceivedMessageDoesMentionOwnedIdentityValue() } } @@ -141,48 +136,31 @@ public final class PersistedMessageReceived: PersistedMessage, ObvIdentifiableMa self.readOnce || self.visibilityDuration != nil } - /// Called when a received message was globally wiped by a contact - public func wipeByContact(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId, messageUploadTimestampFromServer: Date) throws -> InfoAboutWipedOrDeletedPersistedMessage { - let info = InfoAboutWipedOrDeletedPersistedMessage(kind: .wiped, - discussionPermanentID: discussion.discussionPermanentID, - messagePermanentID: self.messagePermanentID) - let requester = RequesterOfMessageDeletion.contact(ownedCryptoId: ownedCryptoId, - contactCryptoId: contactCryptoId, - messageUploadTimestampFromServer: messageUploadTimestampFromServer) - try throwIfRequesterIsNotAllowedToDeleteMessage(requester: requester) + + // MARK: - Processing wipe requests + + /// Called when receiving a wipe request from a contact or another owned device. Shall only be called from ``PersistedDiscussion.processWipeMessageRequestForPersistedMessageReceived(among:from:messageUploadTimestampFromServer:)``. + override func wipeThisMessage(requesterCryptoId: ObvCryptoId) throws { for join in fyleMessageJoinWithStatuses { try join.wipe() } - self.deleteBodyAndMentions() - try? self.reactions.forEach { try $0.delete() } - try addMetadata(kind: .remoteWiped(remoteCryptoId: contactCryptoId), date: Date()) - return info + try super.wipeThisMessage(requesterCryptoId: requesterCryptoId) } - - public func replaceContentWith(newBody: String?, newMentions: Set, requester: ObvCryptoId, messageUploadTimestampFromServer: Date) throws { + // MARK: - Updating a message + + func processUpdateReceivedMessageRequest(newTextBody: String?, newUserMentions: [MessageJSON.UserMention], messageUploadTimestampFromServer: Date, requester: ObvCryptoId) throws { guard self.contactIdentity?.cryptoId == requester else { throw Self.makeError(message: "The requester is not the contact who created the original message") } - guard self.textBody != newBody else { return } - try super.replaceContentWith(newBody: newBody, newMentions: newMentions) + try super.processUpdateMessageRequest(newTextBody: newTextBody, newUserMentions: newUserMentions) try deleteMetadataOfKind(.edited) try addMetadata(kind: .edited, date: messageUploadTimestampFromServer) } - /// `true` when this instance can be edited after being received - override var textBodyCanBeEdited: Bool { - switch discussion.status { - case .active: - guard !self.isLocallyWiped else { return false } - guard !self.isRemoteWiped else { return false } - return true - case .preDiscussion, .locked: - return false - } - } + // MARK: - Other methods - public func updateMissedMessageCount(with missedMessageCount: Int) { + guard self.missedMessageCount != missedMessageCount else { return } self.missedMessageCount = missedMessageCount } @@ -205,7 +183,7 @@ public final class PersistedMessageReceived: PersistedMessage, ObvIdentifiableMa extension PersistedMessageReceived { - public convenience init(messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, messageJSON: MessageJSON, contactIdentity: PersistedObvContactIdentity, messageIdentifierFromEngine: Data, returnReceiptJSON: ReturnReceiptJSON?, missedMessageCount: Int, discussion: PersistedDiscussion, obvMessageContainsAttachments: Bool) throws { + private convenience init(messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, messageJSON: MessageJSON, contactIdentity: PersistedObvContactIdentity, messageIdentifierFromEngine: Data, returnReceiptJSON: ReturnReceiptJSON?, missedMessageCount: Int, discussion: PersistedDiscussion, obvMessageContainsAttachments: Bool) throws { // Disallow the creation of an "empty" message let messageBodyIsEmpty = (messageJSON.body == nil || messageJSON.body?.isEmpty == true) @@ -214,8 +192,6 @@ extension PersistedMessageReceived { throw Self.makeError(message: "Trying to create an empty PersistedMessageReceived") } - guard let context = discussion.managedObjectContext else { throw PersistedMessageReceived.makeError(message: "Could not find context") } - // Received messages can only be created when the discussion status is 'active' switch discussion.status { @@ -269,29 +245,18 @@ extension PersistedMessageReceived { timestamp: messageUploadTimestampFromServer, within: discussion) - let isReplyToAnotherMessage: Bool - let replyTo: PersistedMessage? - let messageRepliedToIdentifier: PendingRepliedTo? + let replyTo: ReplyToType? if let replyToJSON = messageJSON.replyTo { - isReplyToAnotherMessage = true - replyTo = try PersistedMessage.findMessageFrom(reference: replyToJSON, within: discussion) - if replyTo == nil { - messageRepliedToIdentifier = PendingRepliedTo(replyToJSON: replyToJSON, within: context) - } else { - messageRepliedToIdentifier = nil - } + replyTo = .json(replyToJSON: replyToJSON) } else { - isReplyToAnotherMessage = false replyTo = nil - messageRepliedToIdentifier = nil } - + try self.init(timestamp: adjustedTimestamp, body: messageJSON.body, rawStatus: MessageStatus.new.rawValue, senderSequenceNumber: messageJSON.senderSequenceNumber, sortIndex: sortIndex, - isReplyToAnotherMessage: isReplyToAnotherMessage, replyTo: replyTo, discussion: discussion, readOnce: messageJSON.expiration?.readOnce ?? false, @@ -300,7 +265,6 @@ extension PersistedMessageReceived { mentions: messageJSON.userMentions, forEntityName: PersistedMessageReceived.entityName) - self.messageRepliedToIdentifier = messageRepliedToIdentifier self.contactIdentity = contactIdentity self.senderIdentifier = contactIdentity.cryptoId.getIdentity() self.senderThreadIdentifier = messageJSON.senderThreadIdentifier @@ -313,13 +277,14 @@ extension PersistedMessageReceived { // If this is the case, we immediately create an appropriate expiration for this message. if let existenceDuration = messageJSON.expiration?.existenceDuration { assert(self.expirationForReceivedLimitedExistence == nil) - self.expirationForReceivedLimitedExistence = PersistedExpirationForReceivedMessageWithLimitedExistence(messageReceivedWithLimitedExistence: self, - existenceDuration: existenceDuration, - messageUploadTimestampFromServer: messageUploadTimestampFromServer, - downloadTimestampFromServer: downloadTimestampFromServer, - localDownloadTimestamp: localDownloadTimestamp) + self.expirationForReceivedLimitedExistence = PersistedExpirationForReceivedMessageWithLimitedExistence( + messageReceivedWithLimitedExistence: self, + existenceDuration: existenceDuration, + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + downloadTimestampFromServer: downloadTimestampFromServer, + localDownloadTimestamp: localDownloadTimestamp) } - + // Now that this message is created, we can look for all the messages that have a `messageRepliedToIdentifier` referencing this message. // For these messages, we delete this reference and, instead, reference this message using the `messageRepliedTo` relationship. @@ -328,40 +293,177 @@ extension PersistedMessageReceived { } - /// When creating a new `PersistedMessageReceived`, we need to search for previous `PersistedMessageReceived` that are a reply to this message. - /// These messages have a non-nil `messageRepliedToIdentifier` relationship that references this message. This method searches for these - /// messages, delete the `messageRepliedToIdentifier` and replaces it by a non-nil `messageRepliedTo` relationship. - private func updateMessagesReplyingToThisMessage() throws { - - guard let context = self.managedObjectContext else { throw Self.makeError(message: "Could not find context") } + /// This method shall be called exclusively from ``PersistedObvContactIdentity.createOrOverridePersistedMessageReceived(obvMessage:messageJSON:returnReceiptJSON:overridePreviousPersistedMessage:)`` or from ``static PersistedMessageReceived.createOrUpdatePersistedMessageReceived(obvMessage:messageJSON:returnReceiptJSON:from:in:)``. + /// Returns all the `ObvAttachment` that are fully received, i.e., such that the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + static func createPersistedMessageReceived(obvMessage: ObvMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?, from persistedContact: PersistedObvContactIdentity, in discussion: PersistedDiscussion) throws -> (createdMessage: PersistedMessageReceived, attachmentsFullyReceivedOrCancelledByServer: [ObvAttachment]) { + + guard try PersistedMessageReceived.get(messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, from: persistedContact) == nil else { + throw ObvError.persistedMessageReceivedAlreadyExist + } + + guard persistedContact.managedObjectContext == discussion.managedObjectContext else { + throw ObvError.distinctContexts + } + + let missedMessageCount = updateNextMessageMissedMessageCountAndGetCurrentMissedMessageCount( + discussion: discussion, + contactIdentity: persistedContact, + senderThreadIdentifier: messageJSON.senderThreadIdentifier, + senderSequenceNumber: messageJSON.senderSequenceNumber) + + let discussionKind = try discussion.kind + + let messageUploadTimestampFromServer = PersistedMessage.determineMessageUploadTimestampFromServer( + messageUploadTimestampFromServerInObvMessage: obvMessage.messageUploadTimestampFromServer, + messageJSON: messageJSON, + discussionKind: discussionKind) + + let message = try Self.init( + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + downloadTimestampFromServer: obvMessage.downloadTimestampFromServer, + localDownloadTimestamp: obvMessage.localDownloadTimestamp, + messageJSON: messageJSON, + contactIdentity: persistedContact, + messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, + returnReceiptJSON: returnReceiptJSON, + missedMessageCount: missedMessageCount, + discussion: discussion, + obvMessageContainsAttachments: !obvMessage.attachments.isEmpty) + + // Process the attachments within the message - let pendingRepliedTos = try PendingRepliedTo.getAll(senderIdentifier: self.senderIdentifier, - senderSequenceNumber: self.senderSequenceNumber, - senderThreadIdentifier: self.senderThreadIdentifier, - discussion: self.discussion, - within: context) - pendingRepliedTos.forEach { pendingRepliedTo in - guard let reply = pendingRepliedTo.message else { - assertionFailure() - try? pendingRepliedTo.delete() - return + let attachmentsFullyReceivedOrCancelledByServer = message.processObvAttachments(of: obvMessage) + + return (message, attachmentsFullyReceivedOrCancelledByServer) + + } + + + /// Returns all the `ObvAttachment` that are fully received, i.e., such that the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + private func processObvAttachments(of obvMessage: ObvMessage) -> [ObvAttachment] { + var attachmentsFullyReceivedOrCancelledByServer = [ObvAttachment]() + for obvAttachment in obvMessage.attachments { + do { + let attachmentFullyReceivedOrCancelledByServer = try processObvAttachment(obvAttachment) + if attachmentFullyReceivedOrCancelledByServer { + attachmentsFullyReceivedOrCancelledByServer.append(obvAttachment) + } + } catch { + os_log("Could not process one of the message's attachments: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + // We continue anyway } - assert(reply.isReplyToAnotherMessage) - reply.setRawMessageRepliedTo(with: self) - reply.messageRepliedToIdentifier = nil - try? pendingRepliedTo.delete() } + return attachmentsFullyReceivedOrCancelledByServer + } + + + /// Returns `true` if the attachment is fully received, i.e., if the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + /// Also returns `true` if the attachment was cancelled by the server. + func processObvAttachment(_ obvAttachment: ObvAttachment) throws -> Bool { + + guard let context = self.managedObjectContext else { + throw ObvError.noContext + } + + let attachmentFullyReceivedOrCancelledByServer = try ReceivedFyleMessageJoinWithStatus.createOrUpdateReceivedFyleMessageJoinWithStatus(with: obvAttachment, within: context) + + return attachmentFullyReceivedOrCancelledByServer + + } + + + /// This method shall be called exclusively from ``PersistedObvContactIdentity.createOrOverridePersistedMessageReceived(obvMessage:messageJSON:returnReceiptJSON:overridePreviousPersistedMessage:)``. + /// Returns all the `ObvAttachment` that are fully received, i.e., such that the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + static func createOrUpdatePersistedMessageReceived(obvMessage: ObvMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?, from persistedContact: PersistedObvContactIdentity, in discussion: PersistedDiscussion) throws -> (createdOrUpdatedMessage: PersistedMessageReceived, attachmentsFullyReceived: [ObvAttachment]) { + + let attachmentsFullyReceivedOrCancelledByServer: [ObvAttachment] + let createdOrUpdatedMessage: PersistedMessageReceived + + if let previousMessage = try PersistedMessageReceived.get(messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, from: persistedContact) { + + os_log("Updating a previous received message...", log: log, type: .info) + + attachmentsFullyReceivedOrCancelledByServer = try previousMessage.updatePersistedMessageReceived( + withMessageJSON: messageJSON, + obvMessage: obvMessage, + returnReceiptJSON: returnReceiptJSON, + discussion: discussion) + + createdOrUpdatedMessage = previousMessage + + } else { + + os_log("Creating a persisted message...", log: log, type: .debug) + + (createdOrUpdatedMessage, attachmentsFullyReceivedOrCancelledByServer) = try PersistedMessageReceived.createPersistedMessageReceived( + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + from: persistedContact, + in: discussion) + + } + + return (createdOrUpdatedMessage, attachmentsFullyReceivedOrCancelledByServer) + + } + + + /// Helper method for ``static PersistedMessageReceived.create(messageIdentifierFromEngine:persistedContact:)``. + private static func updateNextMessageMissedMessageCountAndGetCurrentMissedMessageCount(discussion: PersistedDiscussion, contactIdentity: PersistedObvContactIdentity, senderThreadIdentifier: UUID, senderSequenceNumber: Int) -> Int { + let latestDiscussionSenderSequenceNumber: PersistedLatestDiscussionSenderSequenceNumber? + do { + latestDiscussionSenderSequenceNumber = try PersistedLatestDiscussionSenderSequenceNumber.get(discussion: discussion, contactIdentity: contactIdentity, senderThreadIdentifier: senderThreadIdentifier) + } catch { + os_log("Could not get PersistedLatestDiscussionSenderSequenceNumber: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return 0 + } + + if let latestDiscussionSenderSequenceNumber = latestDiscussionSenderSequenceNumber { + if senderSequenceNumber < latestDiscussionSenderSequenceNumber.latestSequenceNumber { + guard let nextMessage = PersistedMessageReceived.getNextMessageBySenderSequenceNumber(senderSequenceNumber, senderThreadIdentifier: senderThreadIdentifier, contactIdentity: contactIdentity, within: discussion) else { + return 0 + } + if nextMessage.missedMessageCount < nextMessage.senderSequenceNumber - senderSequenceNumber { + // The message is older than the number of messages missed in the following message --> nothing to do + return 0 + } + let remainingMissedCount = nextMessage.missedMessageCount - (nextMessage.senderSequenceNumber - senderSequenceNumber) + + nextMessage.updateMissedMessageCount(with: nextMessage.senderSequenceNumber - senderSequenceNumber - 1) + + return remainingMissedCount + } else if senderSequenceNumber > latestDiscussionSenderSequenceNumber.latestSequenceNumber { + let missingCount = senderSequenceNumber - latestDiscussionSenderSequenceNumber.latestSequenceNumber - 1 + latestDiscussionSenderSequenceNumber.updateLatestSequenceNumber(with: senderSequenceNumber) + return missingCount + } else { + // Unexpected: senderSequenceNumber == latestSequenceNumber (this should normally not happen...) + return 0 + } + } else { + _ = PersistedLatestDiscussionSenderSequenceNumber(discussion: discussion, + contactIdentity: contactIdentity, + senderThreadIdentifier: senderThreadIdentifier, + latestSequenceNumber: senderSequenceNumber) + return 0 + } } - public func update(withMessageJSON json: MessageJSON, messageIdentifierFromEngine: Data, returnReceiptJSON: ReturnReceiptJSON?, messageUploadTimestampFromServer: Date, downloadTimestampFromServer: Date, localDownloadTimestamp: Date, discussion: PersistedDiscussion) throws { + + /// Returns all the `ObvAttachment` that are fully received, i.e., such that the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + private func updatePersistedMessageReceived(withMessageJSON json: MessageJSON, obvMessage: ObvMessage, returnReceiptJSON: ReturnReceiptJSON?, discussion: PersistedDiscussion) throws -> [ObvAttachment] { + guard self.messageIdentifierFromEngine == messageIdentifierFromEngine else { throw Self.makeError(message: "Invalid message identifier from engine") } guard !isWiped else { - return + os_log("Trying to update a wiped received message. We don't do that an return immediately.", log: Self.log, type: .info) + return obvMessage.attachments } let replyTo: PersistedMessage? @@ -380,7 +482,7 @@ extension PersistedMessageReceived { do { self.serializedReturnReceipt = try returnReceiptJSON?.jsonEncode() } catch let error { - os_log("Could not encode a return receipt while create a persisted message received: %{public}@", log: PersistedMessageReceived.log, type: .fault, error.localizedDescription) + os_log("Could not encode a return receipt while create a persisted message received: %{public}@", log: Self.log, type: .fault, error.localizedDescription) assertionFailure() } @@ -392,14 +494,28 @@ extension PersistedMessageReceived { self.visibilityDuration = expirationJson.visibilityDuration } if self.expirationForReceivedLimitedExistence == nil && expirationJson.existenceDuration != nil { - self.expirationForReceivedLimitedExistence = PersistedExpirationForReceivedMessageWithLimitedExistence(messageReceivedWithLimitedExistence: self, - existenceDuration: expirationJson.existenceDuration!, - messageUploadTimestampFromServer: messageUploadTimestampFromServer, - downloadTimestampFromServer: downloadTimestampFromServer, - localDownloadTimestamp: localDownloadTimestamp) + let discussionKind = try discussion.kind + let messageUploadTimestampFromServer = Self.determineMessageUploadTimestampFromServer( + messageUploadTimestampFromServerInObvMessage: obvMessage.messageUploadTimestampFromServer, + messageJSON: json, + discussionKind: discussionKind) + self.expirationForReceivedLimitedExistence = PersistedExpirationForReceivedMessageWithLimitedExistence( + messageReceivedWithLimitedExistence: self, + existenceDuration: expirationJson.existenceDuration!, + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + downloadTimestampFromServer: obvMessage.downloadTimestampFromServer, + localDownloadTimestamp: obvMessage.localDownloadTimestamp) } } + + // Process the attachments within the message + + let attachmentsFullyReceivedOrCancelledByServer = processObvAttachments(of: obvMessage) + + return attachmentsFullyReceivedOrCancelledByServer + } + static private func determineAppropriateSortIndex(forSenderSequenceNumber senderSequenceNumber: Int, senderThreadIdentifier: UUID, contactIdentity: PersistedObvContactIdentity, timestamp: Date, within discussion: PersistedDiscussion) throws -> (sortIndex: Double, adjustedTimestamp: Date) { @@ -435,26 +551,34 @@ extension PersistedMessageReceived { } - public func allowReading(now: Date) throws { + func userWantsToReadThisReceivedMessageWithLimitedVisibility(dateWhenMessageWasRead: Date, requestedOnAnotherOwnedDevice: Bool) throws -> InfoAboutWipedOrDeletedPersistedMessage? { assert(isEphemeralMessageWithUserAction) guard isEphemeralMessageWithUserAction else { assertionFailure("There is no reason why this is called on a message that is not marked as readOnce or with a certain visibility") - return + return nil + } + if requestedOnAnotherOwnedDevice && self.readOnce { + let infos = try self.deleteExpiredMessage() + return infos + } else { + try self.markAsRead(dateWhenMessageWasRead: dateWhenMessageWasRead) + return nil } - try self.markAsRead(now: now) } + /// This allows to prevent auto-read for messages received with a more restrictive ephemerality than that of the discussion. public var ephemeralityIsAtLeastAsPermissiveThanDiscussionSharedConfiguration: Bool { if self.readOnce { - guard discussion.sharedConfiguration.readOnce else { return false } + guard let discussionSharedConfigurationReadOnce = self.discussion?.sharedConfiguration.readOnce else { assertionFailure(); return false } + guard discussionSharedConfigurationReadOnce else { return false } } if let messageVisibilityDuration = self.visibilityDuration { - guard let discussionVisibilityDuration = self.discussion.sharedConfiguration.visibilityDuration else { return false } + guard let discussionVisibilityDuration = self.discussion?.sharedConfiguration.visibilityDuration else { return false } guard messageVisibilityDuration >= discussionVisibilityDuration else { return false } } if let messageExistenceDuration = self.initialExistenceDuration { - guard let discussionExistenceDuration = self.discussion.sharedConfiguration.existenceDuration else { return false } + guard let discussionExistenceDuration = self.discussion?.sharedConfiguration.existenceDuration else { return false } guard messageExistenceDuration >= discussionExistenceDuration else { return false } } return true @@ -485,6 +609,7 @@ extension PersistedMessageReceived { } var replyToActionCanBeMadeAvailableForReceivedMessage: Bool { + guard let discussion else { return false } guard discussion.status == .active else { return false } if readOnce { return status == .read @@ -506,7 +631,7 @@ extension PersistedMessageReceived { var repliesTo: RepliedMessage { if let messageRepliedTo = self.rawMessageRepliedTo { return .available(message: messageRepliedTo) - } else if self.messageRepliedToIdentifier != nil { + } else if self.messageRepliedToIdentifierIsNonNil { return .notAvailableYet } else if self.isReplyToAnotherMessage { return .deleted @@ -522,25 +647,43 @@ extension PersistedMessageReceived { extension PersistedMessageReceived { - public func markAsNotNew(now: Date) throws { + func markAsNotNew(dateWhenMessageTurnedNotNew: Date) throws -> Date? { switch self.status { case .new: if isEphemeralMessageWithUserAction { self.status = .unread } else { - try markAsRead(now: now) + try markAsRead(dateWhenMessageWasRead: dateWhenMessageTurnedNotNew) } + return self.timestamp case .unread, .read: - break + return nil } } - private func markAsRead(now: Date) throws { + + private func markAsRead(dateWhenMessageWasRead: Date) throws { os_log("Call to markAsRead in PersistedMessageReceived for message %{public}@", log: PersistedMessageReceived.log, type: .debug, self.objectID.debugDescription) + if self.status != .read { + self.status = .read - try self.addMetadata(kind: .read, date: now) + + // When a received message is marked as "read", we check whether it has a limited visibility. + // If this is the case, we immediately create an appropriate expiration for this message. + + if let visibilityDuration = self.visibilityDuration { + assert(self.expirationForReceivedLimitedVisibility == nil) + let visibilityDurationCorrection = max(0, Date().timeIntervalSince(dateWhenMessageWasRead)) + self.expirationForReceivedLimitedVisibility = PersistedExpirationForReceivedMessageWithLimitedVisibility( + messageReceivedWithLimitedVisibility: self, + visibilityDuration: max(0, visibilityDuration - visibilityDurationCorrection)) + } + + try self.addMetadata(kind: .read, date: dateWhenMessageWasRead) + } + } @@ -555,7 +698,7 @@ extension PersistedMessageReceived { } - func toReceivedMessageReferenceJSON() -> MessageReferenceJSON? { + func toReceivedMessageReferenceJSON() -> MessageReferenceJSON { return MessageReferenceJSON(senderSequenceNumber: self.senderSequenceNumber, senderThreadIdentifier: self.senderThreadIdentifier, senderIdentifier: self.senderIdentifier) @@ -649,6 +792,9 @@ extension PersistedMessageReceived { static func createdBefore(date: Date) -> NSPredicate { NSPredicate(PersistedMessage.Predicate.Key.timestamp, earlierThan: date) } + static func createdBeforeOrAt(date: Date) -> NSPredicate { + NSPredicate(PersistedMessage.Predicate.Key.timestamp, earlierOrAt: date) + } static func withLargerSortIndex(than message: PersistedMessage) -> NSPredicate { NSPredicate(PersistedMessage.Predicate.Key.sortIndex, LargerThanDouble: message.sortIndex) } @@ -661,6 +807,13 @@ extension PersistedMessageReceived { static var isDiscussionUnmuted: NSPredicate { PersistedMessage.Predicate.isDiscussionUnmuted } + static func withMessageWriterIdentifier(_ identifier: MessageWriterIdentifier) -> NSPredicate { + NSCompoundPredicate(andPredicateWithSubpredicates: [ + withContactIdentityIdentity(identifier.senderIdentifier), + PersistedMessage.Predicate.withSenderSequenceNumberEqualTo(identifier.senderSequenceNumber), + withSenderThreadIdentifier(identifier.senderThreadIdentifier), + ]) + } } @@ -669,6 +822,26 @@ extension PersistedMessageReceived { } + static func getPersistedMessageReceived(discussion: PersistedDiscussion, messageId: ReceivedMessageIdentifier) throws -> PersistedMessageReceived? { + guard let context = discussion.managedObjectContext else { assertionFailure(); throw ObvError.noContext } + let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() + switch messageId { + case .objectID(let objectID): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withObjectID(objectID), + Predicate.withinDiscussion(discussion), + ]) + case .authorIdentifier(let writerIdentifier): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withinDiscussion(discussion), + Predicate.withMessageWriterIdentifier(writerIdentifier), + ]) + } + request.fetchLimit = 1 + return try context.fetch(request).first + } + + public static func get(with objectID: TypeSafeManagedObjectID, within context: NSManagedObjectContext) throws -> PersistedMessageReceived? { let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() request.predicate = Predicate.withObjectID(objectID.objectID) @@ -677,7 +850,7 @@ extension PersistedMessageReceived { } - public static func getNextMessageBySenderSequenceNumber(_ sequenceNumber: Int, senderThreadIdentifier: UUID, contactIdentity: PersistedObvContactIdentity, within discussion: PersistedDiscussion) -> PersistedMessageReceived? { + private static func getNextMessageBySenderSequenceNumber(_ sequenceNumber: Int, senderThreadIdentifier: UUID, contactIdentity: PersistedObvContactIdentity, within discussion: PersistedDiscussion) -> PersistedMessageReceived? { guard let context = discussion.managedObjectContext else { return nil } let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ @@ -692,7 +865,7 @@ extension PersistedMessageReceived { } - static func getPreviousMessageBySenderSequenceNumber(_ sequenceNumber: Int, senderThreadIdentifier: UUID, contactIdentity: PersistedObvContactIdentity, within discussion: PersistedDiscussion) -> PersistedMessageReceived? { + private static func getPreviousMessageBySenderSequenceNumber(_ sequenceNumber: Int, senderThreadIdentifier: UUID, contactIdentity: PersistedObvContactIdentity, within discussion: PersistedDiscussion) -> PersistedMessageReceived? { guard let context = discussion.managedObjectContext else { return nil } let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ @@ -710,9 +883,9 @@ extension PersistedMessageReceived { /// Each message of the discussion that is in the status `new` changes status as follows: /// - If the message is such that `hasWipeAfterRead` is `true`, the new status is `unread` /// - Otherwise, the new status is `read`. - public static func markAllAsNotNew(within discussion: PersistedDiscussion) throws { + static func markAllAsNotNew(within discussion: PersistedDiscussion, dateWhenMessageTurnedNotNew: Date) throws -> Date? { os_log("Call to markAllAsNotNew in PersistedMessageReceived for discussion %{public}@", log: log, type: .debug, discussion.objectID.debugDescription) - guard let context = discussion.managedObjectContext else { return } + guard let context = discussion.managedObjectContext else { assertionFailure(); return nil } let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() request.includesSubentities = true request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ @@ -720,11 +893,30 @@ extension PersistedMessageReceived { Predicate.isNew, ]) let messages = try context.fetch(request) - guard !messages.isEmpty else { return } - let now = Date() + guard !messages.isEmpty else { return nil } try messages.forEach { - try $0.markAsNotNew(now: now) + _ = try $0.markAsNotNew(dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) } + return messages.map({ $0.timestamp }).max() + } + + + static func markAllAsNotNew(within discussion: PersistedDiscussion, untilDate: Date, dateWhenMessageTurnedNotNew: Date) throws -> Date? { + os_log("Call to markAllAsNotNew in PersistedMessageReceived for discussion %{public}@", log: log, type: .debug, discussion.objectID.debugDescription) + guard let context = discussion.managedObjectContext else { assertionFailure(); return nil } + let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() + request.includesSubentities = true + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.createdBeforeOrAt(date: untilDate), + Predicate.withinDiscussion(discussion), + Predicate.isNew, + ]) + let messages = try context.fetch(request) + guard !messages.isEmpty else { return nil } + try messages.forEach { + _ = try $0.markAsNotNew(dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + } + return messages.map({ $0.timestamp }).max() } @@ -783,6 +975,8 @@ extension PersistedMessageReceived { /// This method returns "all" the received messages with the given identifier from engine. In practice, we do not expect more than on message within the array. + /// For now, this is used in the notification service, when we fail to decrypt a notification. In that case, we assume the message was received by the app first (which is the reason it could not be decrypted in the notification extension) and we create the notification + /// by fetching the message from database. public static func getAll(messageIdentifierFromEngine: Data, within context: NSManagedObjectContext) throws -> [PersistedMessageReceived] { let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() request.predicate = Predicate.withMessageIdentifierFromEngine(messageIdentifierFromEngine) @@ -791,6 +985,18 @@ extension PersistedMessageReceived { } + /// This method returns "all" the received messages with the given identifier from engine. In practice, we do not expect more than on message within the array. + public static func getAll(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, within context: NSManagedObjectContext) throws -> [PersistedMessageReceived] { + let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.forOwnedCryptoId(ownedCryptoId), + Predicate.withMessageIdentifierFromEngine(messageIdentifierFromEngine), + ]) + request.fetchBatchSize = 10 + return try context.fetch(request) + } + + public static func get(messageIdentifierFromEngine: Data, ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws -> PersistedMessageReceived? { let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ @@ -802,7 +1008,7 @@ extension PersistedMessageReceived { } - public static func get(messageIdentifierFromEngine: Data, from contact: ObvContactIdentity, within context: NSManagedObjectContext) throws -> PersistedMessageReceived? { + public static func get(messageIdentifierFromEngine: Data, from contact: ObvContactIdentifier, within context: NSManagedObjectContext) throws -> PersistedMessageReceived? { guard let persistedContact = try? PersistedObvContactIdentity.get(persisted: contact, whereOneToOneStatusIs: .any, within: context) else { return nil } return try get(messageIdentifierFromEngine: messageIdentifierFromEngine, from: persistedContact) } @@ -941,10 +1147,11 @@ extension PersistedMessageReceived { } - public static func getAllReceivedMessagesThatRequireUserActionForReading(discussionPermanentID: ObvManagedObjectPermanentID, within context: NSManagedObjectContext) throws -> [PersistedMessageReceived] { + static func getAllReceivedMessagesThatRequireUserActionForReading(discussion: PersistedDiscussion) throws -> [PersistedMessageReceived] { + guard let context = discussion.managedObjectContext else { assertionFailure(); throw ObvError.noContext } let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withinDiscussion(discussionPermanentID), + Predicate.withinDiscussion(discussion), NSCompoundPredicate(orPredicateWithSubpredicates: [ Predicate.isNew, Predicate.isUnread, @@ -957,13 +1164,7 @@ extension PersistedMessageReceived { request.fetchBatchSize = 1_000 return try context.fetch(request) } - - - public static func batchDeletePendingRepliedToEntriesOlderThan(_ date: Date, within context: NSManagedObjectContext) throws { - try PendingRepliedTo.batchDeleteEntriesOlderThan(date, within: context) - } - } @@ -975,7 +1176,7 @@ extension PersistedMessageReceived { } public var fyleMessageJoinWithStatusesOfAudioType: [ReceivedFyleMessageJoinWithStatus] { - fyleMessageJoinWithStatuses.filter({ ObvUTIUtils.uti($0.uti, conformsTo: kUTTypeAudio) }) + fyleMessageJoinWithStatuses.filter({ $0.contentType.conforms(to: .audio) }) } public var fyleMessageJoinWithStatusesOfOtherTypes: [ReceivedFyleMessageJoinWithStatus] { @@ -1004,12 +1205,12 @@ extension PersistedMessageReceived { // Note that the following line may return nil if we are currently deleting a message that is part of a locked discussion. // In that case, we do not notify that the message is being deleted, but this is not an issue at this time - if let ownedCryptoId = contactIdentity?.ownedIdentity?.cryptoId { + if let discussionObjectID = discussion?.typedObjectID, let ownedCryptoId = contactIdentity?.ownedIdentity?.cryptoId { userInfoForDeletion = ["objectID": objectID, "messageIdentifierFromEngine": messageIdentifierFromEngine, "ownedCryptoId": ownedCryptoId, "sortIndex": sortIndex, - "discussionObjectID": discussion.typedObjectID] + "discussionObjectID": discussionObjectID] } @@ -1065,96 +1266,35 @@ extension PersistedMessageReceived { } } -public extension TypeSafeManagedObjectID where T == PersistedMessageReceived { - var downcast: TypeSafeManagedObjectID { - TypeSafeManagedObjectID(objectID: objectID) - } -} - -// MARK: - PendingRepliedTo - -/// When receiving a message that replies to another message, it might happen that this replied-to message is not available -/// because it did not arrive yet. This entity makes it possible to save the elements (`senderIdentifier`, etc.) referencing -/// this replied-to message for later. Each time a new message arrive, we check the `PendingRepliedTo` entities and look -/// for all those that reference this arriving message. This allows to associate message with its replied-to message a posteriori. -@objc(PendingRepliedTo) -fileprivate final class PendingRepliedTo: NSManagedObject, ObvErrorMaker { - - private static let entityName = "PendingRepliedTo" - static let errorDomain = "PendingRepliedTo" - - @NSManaged private var creationDate: Date - @NSManaged private var senderIdentifier: Data - @NSManaged private var senderSequenceNumber: Int - @NSManaged private var senderThreadIdentifier: UUID +extension PersistedMessageReceived { + + public enum ObvError: LocalizedError { - @NSManaged private(set) var message: PersistedMessageReceived? - - convenience init?(replyToJSON: MessageReferenceJSON, within context: NSManagedObjectContext) { + case noContext + case persistedMessageReceivedAlreadyExist + case distinctContexts + case discussionIsNil - let entityDescription = NSEntityDescription.entity(forEntityName: PendingRepliedTo.entityName, in: context)! - self.init(entity: entityDescription, insertInto: context) - - self.creationDate = Date() - self.senderSequenceNumber = replyToJSON.senderSequenceNumber - self.senderThreadIdentifier = replyToJSON.senderThreadIdentifier - self.senderIdentifier = replyToJSON.senderIdentifier - - } - - - fileprivate func delete() throws { - guard let context = self.managedObjectContext else { throw Self.makeError(message: "Could not find context") } - context.delete(self) - } - - - private struct Predicate { - enum Key: String { - case creationDate = "creationDate" - case senderIdentifier = "senderIdentifier" - case senderSequenceNumber = "senderSequenceNumber" - case senderThreadIdentifier = "senderThreadIdentifier" - case message = "message" - } - static func with(senderIdentifier: Data, senderSequenceNumber: Int, senderThreadIdentifier: UUID, discussion: PersistedDiscussion) -> NSPredicate { - let discussionKey = [Key.message.rawValue, PersistedMessage.Predicate.Key.discussion.rawValue].joined(separator: ".") - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - NSPredicate(Key.senderIdentifier, EqualToData: senderIdentifier), - NSPredicate(Key.senderSequenceNumber, EqualToInt: senderSequenceNumber), - NSPredicate(Key.senderThreadIdentifier, EqualToUuid: senderThreadIdentifier), - NSPredicate(format: "%K == %@", discussionKey, discussion.objectID), - ]) - } - static func createBefore(_ date: Date) -> NSPredicate { - NSPredicate(Key.creationDate, earlierThan: date) + public var errorDescription: String? { + switch self { + case .persistedMessageReceivedAlreadyExist: + return "PersistedMessageReceived already exists" + case .noContext: + return "No context" + case .distinctContexts: + return "Distinct contexts" + case .discussionIsNil: + return "Discussion is nil" + } } + } - - @nonobjc static func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: PendingRepliedTo.entityName) - } +} - - fileprivate static func getAll(senderIdentifier: Data, senderSequenceNumber: Int, senderThreadIdentifier: UUID, discussion: PersistedDiscussion, within context: NSManagedObjectContext) throws -> [PendingRepliedTo] { - let request = PendingRepliedTo.fetchRequest() - request.predicate = Predicate.with(senderIdentifier: senderIdentifier, - senderSequenceNumber: senderSequenceNumber, - senderThreadIdentifier: senderThreadIdentifier, - discussion: discussion) - request.fetchBatchSize = 1_000 - return try context.fetch(request) - } - - - static func batchDeleteEntriesOlderThan(_ date: Date, within context: NSManagedObjectContext) throws { - let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: PendingRepliedTo.entityName) - fetchRequest.predicate = Predicate.createBefore(date) - let batchDeleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest) - batchDeleteRequest.resultType = .resultTypeStatusOnly - _ = try context.execute(batchDeleteRequest) +public extension TypeSafeManagedObjectID where T == PersistedMessageReceived { + var downcast: TypeSafeManagedObjectID { + TypeSafeManagedObjectID(objectID: objectID) } - } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSent+Utils.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSent+Utils.swift index c9ec91b7..7e706f1f 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSent+Utils.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSent+Utils.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -41,30 +41,16 @@ extension PersistedMessageSent { return try context.count(for: request) } - - /// Called when a sent message with limited visibility reached the end of this visibility (in which case the `requester` is `nil`) - /// or when a message was globally wiped (in which case the requester is non nil) - public func wipe(requester: RequesterOfMessageDeletion?) throws { - if let requester { - try throwIfRequesterIsNotAllowedToDeleteMessage(requester: requester) - } - switch requester { - case .ownedIdentity, .none: - guard !isLocallyWiped else { return } - case .contact: - guard !isRemoteWiped else { return } - } + + /// Called when a sent message with limited visibility reached the end of this visibility. + private func wipeExpiredMessageSent() throws { + guard !isLocallyWiped else { return } for join in fyleMessageJoinWithStatuses { try join.wipe() } self.deleteBodyAndMentions() try? self.reactions.forEach { try $0.delete() } - switch requester { - case .ownedIdentity, .none: - try addMetadata(kind: .wiped, date: Date()) - case .contact(_, let contactCryptoId, _): - try addMetadata(kind: .remoteWiped(remoteCryptoId: contactCryptoId), date: Date()) - } + try addMetadata(kind: .wiped, date: Date()) // It makes no sense to keep an existing visibility expiration (if one exists) since we just wiped the message. try expirationForSentLimitedVisibility?.delete() // It makes no sense to keep unprocessed PersistedMessageSentRecipientInfos since we won't resend this message anymore @@ -75,20 +61,23 @@ extension PersistedMessageSent { /// If `retainWipedOutboundMessages` is `true`, this method only wipes the message. Otherwise, it deletes it. /// For now, this method is always used with a `nil` requester (meaning that no check will be performed before wiping or deleting messages), since it is called on expired sent messages. - public func wipeOrDelete(requester: RequesterOfMessageDeletion?) throws -> InfoAboutWipedOrDeletedPersistedMessage { + public func wipeOrDeleteExpiredMessageSent() throws -> InfoAboutWipedOrDeletedPersistedMessage { if retainWipedOutboundMessages { + guard let discussion else { + throw ObvError.discussionIsNil + } do { let wipeInfo = InfoAboutWipedOrDeletedPersistedMessage(kind: .wiped, - discussionPermanentID: self.discussion.discussionPermanentID, + discussionPermanentID: discussion.discussionPermanentID, messagePermanentID: self.messagePermanentID) - try wipe(requester: requester) + try wipeExpiredMessageSent() return wipeInfo } catch { assertionFailure() - return try delete(requester: requester) + return try deleteExpiredMessage() } } else { - return try delete(requester: requester) + return try deleteExpiredMessage() } } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSent.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSent.swift index 699dec68..5a4a84db 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSent.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSent.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,17 +23,29 @@ import ObvEngine import ObvTypes import os.log import MobileCoreServices +import ObvSettings + +/// A message sent by an owned identity. +/// +/// *About the `senderThreadIdentifier`* +/// +/// In general, the `senderThreadIdentifier` is identical to the one found in the `PersistedDiscussion` and is the thread identifier of the owned identity in that discussion. +/// It differs when the `PersistedMessageSent` was actually sent from another device, in which case, the `senderThreadIdentifier` found here corresponds to the `senderThreadIdentifier` found in the `PersistedDiscussion` of the other owned device. +/// This is the case since, for a given discussion, the same owned identity has distinct `senderThreadIdentifier` on each of her owned devices. @objc(PersistedMessageSent) public final class PersistedMessageSent: PersistedMessage, ObvIdentifiableManagedObject { public static let entityName = "PersistedMessageSent" + private static let log = OSLog(subsystem: ObvUICoreDataConstants.logSubsystem, category: "PersistedMessageSent") private let log = OSLog(subsystem: ObvUICoreDataConstants.logSubsystem, category: "PersistedMessageSent") private static func makeError(message: String) -> Error { NSError(domain: String(describing: Self.self), code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } // MARK: Attributes + @NSManaged private(set) var messageIdentifierFromEngine: Data? // Only set for message sent from another device, always nil for messages sent from this device @NSManaged private var rawExistenceDuration: NSNumber? + @NSManaged private(set) var senderThreadIdentifier: UUID // MARK: Relationships @@ -44,7 +56,7 @@ public final class PersistedMessageSent: PersistedMessage, ObvIdentifiableManage // MARK: MessageStatus - public enum MessageStatus: Int, Comparable, CaseIterable { + public enum MessageStatus: Int, CaseIterable { case unprocessed = 0 case processing = 1 case sent = 2 @@ -52,10 +64,11 @@ public final class PersistedMessageSent: PersistedMessage, ObvIdentifiableManage case read = 4 case couldNotBeSentToOneOrMoreRecipients = 5 case hasNoRecipient = 6 + case sentFromAnotherOwnedDevice = 7 - public static func < (lhs: PersistedMessageSent.MessageStatus, rhs: PersistedMessageSent.MessageStatus) -> Bool { - return lhs.rawValue < rhs.rawValue - } +// public static func < (lhs: PersistedMessageSent.MessageStatus, rhs: PersistedMessageSent.MessageStatus) -> Bool { +// return lhs.rawValue < rhs.rawValue +// } } @@ -72,7 +85,7 @@ public final class PersistedMessageSent: PersistedMessage, ObvIdentifiableManage switch status { case .unprocessed, .processing: return false - case .sent, .delivered, .read, .couldNotBeSentToOneOrMoreRecipients, .hasNoRecipient: + case .sent, .delivered, .read, .couldNotBeSentToOneOrMoreRecipients, .hasNoRecipient, .sentFromAnotherOwnedDevice: return true } } @@ -87,14 +100,22 @@ public final class PersistedMessageSent: PersistedMessage, ObvIdentifiableManage private func setStatus(newValue: MessageStatus) { + guard self.rawStatus != newValue.rawValue else { return } + + // If the message was sent from another device, we never update it + guard self.status != .sentFromAnotherOwnedDevice else { + assertionFailure("We should not be trying to update the status of a message sent from another owned device") + return + } + self.rawStatus = newValue.rawValue switch self.status { case .unprocessed: break case .processing: break - case .sent, .couldNotBeSentToOneOrMoreRecipients, .hasNoRecipient, .delivered, .read: + case .sent, .couldNotBeSentToOneOrMoreRecipients, .hasNoRecipient, .delivered, .read, .sentFromAnotherOwnedDevice: // When a sent message is marked as "sent", we check whether it has a limited visibility. // If this is the case, we immediately create an appropriate expiration for this message. if let visibilityDuration = self.visibilityDuration, self.expirationForSentLimitedVisibility == nil { @@ -135,6 +156,11 @@ public final class PersistedMessageSent: PersistedMessage, ObvIdentifiableManage /// - **read**: If all infos that have an identifier from engine also are such that `timestampRead` is not `nil`. public func refreshStatus() { + guard self.status != .sentFromAnotherOwnedDevice else { + assertionFailure("We should not be trying to refresh the status of a message sent from another device") + return + } + guard !unsortedRecipientsInfos.isEmpty else { // We created a sent message with no recipient. This happens when writing a message to self, i.e., at this time (2023-01-20), when sending a message in an empty groupV2. self.setStatus(newValue: .hasNoRecipient) @@ -190,21 +216,9 @@ public final class PersistedMessageSent: PersistedMessage, ObvIdentifiableManage } - /// `true` when this instance can be edited after being sent - override var textBodyCanBeEdited: Bool { - switch discussion.status { - case .active: - guard !self.isLocallyWiped else { return false } - guard !self.isRemoteWiped else { return false } - return true - case .preDiscussion, .locked: - return false - } - } - - - public override func replaceContentWith(newBody: String?, newMentions: Set) throws { - guard self.textBodyCanBeEdited else { + /// Called when the owned identity requests a message edition from the current device + override func replaceContentWith(newBody: String?, newMentions: Set) throws { + guard !self.isLocallyWiped && !self.isRemoteWiped else { throw Self.makeError(message: "The text body of this sent message cannot be edited now") } guard self.textBody != newBody else { return } @@ -227,7 +241,7 @@ public final class PersistedMessageSent: PersistedMessage, ObvIdentifiableManage } public override var genericRepliesTo: PersistedMessage.RepliedMessage { - repliesTo.toRepliedMessage + repliesTo } @@ -235,30 +249,60 @@ public final class PersistedMessageSent: PersistedMessage, ObvIdentifiableManage return super.shouldBeDeleted } -} + // MARK: - Processing wipe requests -// MARK: - Reply-to + /// Called when receiving a wipe request from a contact or another owned device. Shall only be called from ``PersistedDiscussion.processWipeMessageRequestForPersistedMessageSent(among:from:messageUploadTimestampFromServer:)``. + override func wipeThisMessage(requesterCryptoId: ObvCryptoId) throws { + for join in fyleMessageJoinWithStatuses { + try join.wipe() + } + try super.wipeThisMessage(requesterCryptoId: requesterCryptoId) + } -extension PersistedMessageSent { - private enum RepliedMessageForMessageSent { - case none - case available(message: PersistedMessage) - case deleted + // MARK: - Updating a message - var toRepliedMessage: RepliedMessage { - switch self { - case .none: return .none - case .available(let message): return .available(message: message) - case .deleted: return .deleted - } + /// Called when receiving a remote request from another owned device + func processUpdateSentMessageRequest(newTextBody: String?, newUserMentions: [MessageJSON.UserMention], messageUploadTimestampFromServer: Date, requester: ObvCryptoId) throws { + guard let discussion else { throw ObvError.discussionIsNil } + guard discussion.ownedIdentity?.cryptoId == requester else { throw Self.makeError(message: "The requester is not the owned identity who created the original message") } + guard !self.isLocallyWiped && !self.isRemoteWiped else { + throw Self.makeError(message: "The text body of this sent message cannot be edited now") } + try super.processUpdateMessageRequest(newTextBody: newTextBody, newUserMentions: newUserMentions) + try deleteMetadataOfKind(.edited) + try addMetadata(kind: .edited, date: messageUploadTimestampFromServer) } - private var repliesTo: RepliedMessageForMessageSent { + +} + + +// MARK: - Reply-to + +extension PersistedMessageSent { + +// private enum RepliedMessageForMessageSent { +// case none +// case notAvailableYet +// case available(message: PersistedMessage) +// case deleted +// +// var toRepliedMessage: RepliedMessage { +// switch self { +// case .none: return .none +// case .available(let message): return .available(message: message) +// case .deleted: return .deleted +// } +// } +// } + + private var repliesTo: RepliedMessage { if let messageRepliedTo = self.rawMessageRepliedTo { return .available(message: messageRepliedTo) + } else if self.messageRepliedToIdentifierIsNonNil { + return .notAvailableYet } else if self.isReplyToAnotherMessage { return .deleted } else { @@ -272,8 +316,8 @@ extension PersistedMessageSent { // MARK: - Initializer extension PersistedMessageSent { - - public convenience init(body: String?, replyTo: PersistedMessage?, fyleJoins: [FyleJoin], discussion: PersistedDiscussion, readOnce: Bool, visibilityDuration: TimeInterval?, existenceDuration: TimeInterval?, forwarded: Bool, mentions: [MessageJSON.UserMention]) throws { + + private convenience init(body: String?, replyTo: ReplyToType?, fyleJoins: [FyleJoin], discussion: PersistedDiscussion, readOnce: Bool, visibilityDuration: TimeInterval?, existenceDuration: TimeInterval?, forwarded: Bool, mentions: [MessageJSON.UserMention], timestamp: Date, messageIdentifierFromEngine: Data?, infosFromOtherOwnedDevice: (senderThreadIdentifier: UUID, messageSequenceNumber: Int)?) throws { guard let context = discussion.managedObjectContext else { assertionFailure(); throw PersistedMessageSent.makeError(message: "Could not find context") } // Sent messages can only be created when the discussion status is 'active' @@ -291,24 +335,42 @@ extension PersistedMessageSent { throw Self.makeError(message: "The owned identity is not allowed to send messages in this discussion") } - try? discussion.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: true, messageTimestamp: Date()) + try? discussion.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: true, messageTimestamp: timestamp.addingTimeInterval(-1/100.0)) // We remove 10 milliseconds - let timestamp = Date() - - let lastSortIndex = try PersistedMessage.getLargestSortIndex(in: discussion) - let sortIndex = 1/100.0 + ceil(lastSortIndex) // We add "10 milliseconds" + let sortIndex: Double + let adjustedTimestamp: Date + if let (senderThreadIdentifier, messageSequenceNumber) = infosFromOtherOwnedDevice { + (sortIndex, adjustedTimestamp) = try Self.determineAppropriateSortIndexForMessageReceivedFromOtherOwnedDevice(forSenderSequenceNumber: messageSequenceNumber, senderThreadIdentifier: senderThreadIdentifier, timestamp: timestamp, within: discussion) + + } else { + let lastSortIndex = try PersistedMessage.getLargestSortIndex(in: discussion) + sortIndex = 1/100.0 + ceil(lastSortIndex) // We add "10 milliseconds" + adjustedTimestamp = timestamp + } let readOnce = discussion.sharedConfiguration.readOnce || readOnce let visibilityDuration: TimeInterval? = TimeInterval.optionalMin(discussion.sharedConfiguration.visibilityDuration, visibilityDuration) let existenceDuration: TimeInterval? = TimeInterval.optionalMin(discussion.sharedConfiguration.existenceDuration, existenceDuration) - let isReplyToAnotherMessage = replyTo != nil - try self.init(timestamp: timestamp, + // `infosFromOtherOwnedDevice` is `nil` iff the message was sent from the current device. Otherwise, it contains informations about the senderThreadIdentifier and the messageSequenceNumber on the other remote device. + // Thus, if set, we use the values found in these infos in order to set the values of the `senderThreadIdentifier` and the `senderSequenceNumber` for this message. + // If not, we use the values found in the discussion. + + let senderSequenceNumberForThisMessage: Int + let senderThreadIdentifierForThisMessage: UUID + if let infosFromOtherOwnedDevice { + senderSequenceNumberForThisMessage = infosFromOtherOwnedDevice.messageSequenceNumber + senderThreadIdentifierForThisMessage = infosFromOtherOwnedDevice.senderThreadIdentifier + } else { + senderSequenceNumberForThisMessage = discussion.incrementLastOutboundMessageSequenceNumber() + senderThreadIdentifierForThisMessage = discussion.senderThreadIdentifier + } + + try self.init(timestamp: adjustedTimestamp, body: body, rawStatus: MessageStatus.unprocessed.rawValue, - senderSequenceNumber: discussion.lastOutboundMessageSequenceNumber + 1, + senderSequenceNumber: senderSequenceNumberForThisMessage, sortIndex: sortIndex, - isReplyToAnotherMessage: isReplyToAnotherMessage, replyTo: replyTo, discussion: discussion, readOnce: readOnce, @@ -317,100 +379,343 @@ extension PersistedMessageSent { mentions: mentions, forEntityName: PersistedMessageSent.entityName) + + self.senderThreadIdentifier = senderThreadIdentifierForThisMessage self.existenceDuration = existenceDuration self.unsortedFyleMessageJoinWithStatuses = Set() + self.messageIdentifierFromEngine = messageIdentifierFromEngine // Non-nil iff the message was sent from another owned device fyleJoins.forEach { - if let sentFyleMessageJoinWithStatuses = SentFyleMessageJoinWithStatus(fyleJoin: $0, persistedMessageSentObjectID: self.typedObjectID, within: context) { + if let sentFyleMessageJoinWithStatuses = try? SentFyleMessageJoinWithStatus(fyleJoin: $0, persistedMessageSentObjectID: self.typedObjectID, within: context) { self.unsortedFyleMessageJoinWithStatuses.insert(sentFyleMessageJoinWithStatuses) } else { debugPrint("Could not create SentFyleMessageJoinWithStatus") } } - // Create the recipient infos entries for the contact(s) that are part of the discussion + // If the message was sent from this device, create the recipient infos entries for the contact(s) that are part of the discussion - self.unsortedRecipientsInfos = Set() - - switch try? discussion.kind { + if infosFromOtherOwnedDevice == nil { - case .oneToOne(withContactIdentity: let contactIdentity): + self.unsortedRecipientsInfos = Set() - guard let contactIdentity = contactIdentity else { - os_log("Could not find contact identity. This is ok if it has just been deleted.", log: log, type: .error) - throw Self.makeError(message: "Could not find contact identity. This is ok if it has just been deleted.") - } - guard contactIdentity.isActive else { - os_log("Trying to create PersistedMessageSentRecipientInfos for an inactive contact, which is not allowed.", log: log, type: .error) - throw Self.makeError(message: "Trying to create PersistedMessageSentRecipientInfos for an inactive contact, which is not allowed.") - } - let recipientIdentity = contactIdentity.cryptoId.getIdentity() - let infos = try PersistedMessageSentRecipientInfos(recipientIdentity: recipientIdentity, - messageSent: self) - self.unsortedRecipientsInfos.insert(infos) - - case .groupV1(withContactGroup: let contactGroup): - - guard let contactGroup = contactGroup else { - os_log("Could find contact group (this is ok if it was just deleted)", log: log, type: .error) - throw Self.makeError(message: "Could find contact group (this is ok if it was just deleted)") - } - for recipient in contactGroup.contactIdentities { - guard recipient.isActive else { - os_log("One of the group contacts is inactive. We do not create PersistedMessageSentRecipientInfos for this contact.", log: log, type: .error) - continue + switch try? discussion.kind { + + case .oneToOne(withContactIdentity: let contactIdentity): + + guard let contactIdentity = contactIdentity else { + os_log("Could not find contact identity. This is ok if it has just been deleted.", log: log, type: .error) + throw Self.makeError(message: "Could not find contact identity. This is ok if it has just been deleted.") } - let recipientIdentity = recipient.cryptoId.getIdentity() - let infos = try PersistedMessageSentRecipientInfos(recipientIdentity: recipientIdentity, messageSent: self) + guard contactIdentity.isActive else { + os_log("Trying to create PersistedMessageSentRecipientInfos for an inactive contact, which is not allowed.", log: log, type: .error) + throw Self.makeError(message: "Trying to create PersistedMessageSentRecipientInfos for an inactive contact, which is not allowed.") + } + let recipientIdentity = contactIdentity.cryptoId.getIdentity() + let infos = try PersistedMessageSentRecipientInfos(recipientIdentity: recipientIdentity, + messageSent: self) self.unsortedRecipientsInfos.insert(infos) - } - guard !self.unsortedRecipientsInfos.isEmpty else { - os_log("We created no recipient infos. This happens when all the contacts of a group are inactive. We do not create a PersistedMessageSent in this case", log: log, type: .error) - throw Self.makeError(message: "We created no recipient infos. This happens when all the contacts of a group are inactive. We do not create a PersistedMessageSent in this case") - } - - case .groupV2(withGroup: let group): - - guard let group = group else { - os_log("Could find group v2 (this is ok if it was just deleted)", log: log, type: .error) - throw Self.makeError(message: "Could find group v2 (this is ok if it was just deleted)") - } - for recipient in group.otherMembers { - if let contact = recipient.contact { - guard contact.isActive else { + + case .groupV1(withContactGroup: let contactGroup): + + guard let contactGroup = contactGroup else { + os_log("Could find contact group (this is ok if it was just deleted)", log: log, type: .error) + throw Self.makeError(message: "Could find contact group (this is ok if it was just deleted)") + } + for recipient in contactGroup.contactIdentities { + guard recipient.isActive else { os_log("One of the group contacts is inactive. We do not create PersistedMessageSentRecipientInfos for this contact.", log: log, type: .error) continue } + let recipientIdentity = recipient.cryptoId.getIdentity() + let infos = try PersistedMessageSentRecipientInfos(recipientIdentity: recipientIdentity, messageSent: self) + self.unsortedRecipientsInfos.insert(infos) } - let recipientIdentity = recipient.identity - let infos = try PersistedMessageSentRecipientInfos(recipientIdentity: recipientIdentity, messageSent: self) - self.unsortedRecipientsInfos.insert(infos) + guard !self.unsortedRecipientsInfos.isEmpty else { + os_log("We created no recipient infos. This happens when all the contacts of a group are inactive. We do not create a PersistedMessageSent in this case", log: log, type: .error) + throw Self.makeError(message: "We created no recipient infos. This happens when all the contacts of a group are inactive. We do not create a PersistedMessageSent in this case") + } + + case .groupV2(withGroup: let group): + + guard let group = group else { + os_log("Could find group v2 (this is ok if it was just deleted)", log: log, type: .error) + throw Self.makeError(message: "Could find group v2 (this is ok if it was just deleted)") + } + for recipient in group.otherMembers { + if let contact = recipient.contact { + guard contact.isActive else { + os_log("One of the group contacts is inactive. We do not create PersistedMessageSentRecipientInfos for this contact.", log: log, type: .error) + continue + } + } + let recipientIdentity = recipient.identity + let infos = try PersistedMessageSentRecipientInfos(recipientIdentity: recipientIdentity, messageSent: self) + self.unsortedRecipientsInfos.insert(infos) + } + + case .none: + throw Self.makeError(message: "Unexpected discussion type.") } - case .none: - throw Self.makeError(message: "Unexpected discussion type.") } - discussion.lastOutboundMessageSequenceNumber = self.senderSequenceNumber + // Now that this message is created, we can look for all the messages that have a `messageRepliedToIdentifier` referencing this message. + // For these messages, we delete this reference and, instead, reference this message using the `messageRepliedTo` relationship. + + try self.updateMessagesReplyingToThisMessage() + // Refresh the status + refreshStatus() } + + + static private func determineAppropriateSortIndexForMessageReceivedFromOtherOwnedDevice(forSenderSequenceNumber senderSequenceNumber: Int, senderThreadIdentifier: UUID, timestamp: Date, within discussion: PersistedDiscussion) throws -> (sortIndex: Double, adjustedTimestamp: Date) { + + let nextMsg = Self.getNextMessageBySenderSequenceNumber( + senderSequenceNumber, + senderThreadIdentifier: senderThreadIdentifier, + within: discussion) + + if nextMsg == nil || nextMsg!.timestamp > timestamp { + let prevMsg = Self.getPreviousMessageBySenderSequenceNumber( + senderSequenceNumber, + senderThreadIdentifier: senderThreadIdentifier, + within: discussion) + if prevMsg == nil || prevMsg!.timestamp < timestamp { + return (timestamp.timeIntervalSince1970, timestamp) + } else { + // The previous message's timestamp is larger than the received message timestamp. Rare case. We adjust the timestamp of the received message in order to avoid weird timelines + let msgRightAfterPrevMsg = try getMessage(afterSortIndex: prevMsg!.sortIndex, in: discussion) + let sortIndexRightAfterPrevMsgSortIndex = msgRightAfterPrevMsg?.sortIndex ?? (prevMsg!.sortIndex + 1/100.0) + let adjustedTimestamp = prevMsg!.timestamp + let sortIndex = (sortIndexRightAfterPrevMsgSortIndex + prevMsg!.sortIndex) / 2.0 + return (sortIndex, adjustedTimestamp) + } + } else { + // There is a next message by the same sender, and its timestamp is smaller than the received message. Rare case. We adjust the timestamp of the received message in order to avoid weird timelines + let msgRightBeforeNextMsg = try getMessage(beforeSortIndex: nextMsg!.sortIndex, in: discussion) + let sortIndexRightBeforeNextMsgSortIndex = msgRightBeforeNextMsg?.sortIndex ?? (nextMsg!.sortIndex - 1/100.0) + let adjustedTimestamp = nextMsg!.timestamp + let sortIndex = (sortIndexRightBeforeNextMsgSortIndex + nextMsg!.sortIndex) / 2.0 + return (sortIndex, adjustedTimestamp) + } + + } + + + + public static func createPersistedMessageSentFromDraft(_ draft: PersistedDraft) throws -> PersistedMessageSent { + let replyTo: ReplyToType? + if let messageRepliedTo = draft.replyTo { + replyTo = .message(messageRepliedTo: messageRepliedTo) + } else { + replyTo = nil + } + let persistedMessageSent = try self.init( + body: draft.body, + replyTo: replyTo, + fyleJoins: draft.fyleJoins, + discussion: draft.discussion, + readOnce: draft.readOnce, + visibilityDuration: draft.visibilityDuration, + existenceDuration: draft.existenceDuration, + forwarded: false, + mentions: draft.mentions.compactMap({ try? $0.userMention }), + timestamp: Date(), + messageIdentifierFromEngine: nil, // since this message is sent from the current device + infosFromOtherOwnedDevice: nil) + return persistedMessageSent + } + + + public static func createPersistedMessageSentFromShareExtension(body: String, fyleJoins: [FyleJoin], discussion: PersistedDiscussion) throws -> PersistedMessageSent { + let persistedMessageSent = try PersistedMessageSent( + body: body, + replyTo: nil, + fyleJoins: fyleJoins, + discussion: discussion, + readOnce: false, + visibilityDuration: nil, + existenceDuration: nil, + forwarded: false, + mentions: [], + timestamp: Date(), + messageIdentifierFromEngine: nil, // since this message is sent from the current device + infosFromOtherOwnedDevice: nil) + return persistedMessageSent + } + + + public static func createPersistedMessageSentWhenReplyingFromTheNotificationExtensionNotification(body: String, discussion: PersistedDiscussion, effectiveReplyTo: PersistedMessageReceived?) throws -> PersistedMessageSent { + let replyTo: ReplyToType? + if let effectiveReplyTo { + replyTo = .message(messageRepliedTo: effectiveReplyTo) + } else { + replyTo = nil + } + let persistedMessageSent = try PersistedMessageSent( + body: body, + replyTo: replyTo, + fyleJoins: [], + discussion: discussion, + readOnce: false, + visibilityDuration: nil, + existenceDuration: nil, + forwarded: false, + mentions: [], + timestamp: Date(), + messageIdentifierFromEngine: nil, // since this message is sent from the current device + infosFromOtherOwnedDevice: nil) + return persistedMessageSent + } - public convenience init(draft: PersistedDraft) throws { - try self.init(body: draft.body, - replyTo: draft.replyTo, - fyleJoins: draft.fyleJoins, - discussion: draft.discussion, - readOnce: draft.readOnce, - visibilityDuration: draft.visibilityDuration, - existenceDuration: draft.existenceDuration, - forwarded: false, - mentions: draft.mentions.compactMap({ try? $0.userMention })) + + public static func createPersistedMessageSentWhenForwardingAMessage(messageToForward: PersistedMessage, discussion: PersistedDiscussion, forwarded: Bool) throws -> PersistedMessageSent { + let persistedMessageSent = try PersistedMessageSent( + body: messageToForward.textBody, + replyTo: nil, + fyleJoins: messageToForward.fyleMessageJoinWithStatus ?? [], + discussion: discussion, + readOnce: false, + visibilityDuration: nil, + existenceDuration: nil, + forwarded: forwarded, + mentions: messageToForward.mentions.compactMap({ try? $0.userMention }), + timestamp: Date(), + messageIdentifierFromEngine: nil, // Since this message is sent from the current device + infosFromOtherOwnedDevice: nil) + return persistedMessageSent } } +// MARK: Processing message sent from other owned devices + +extension PersistedMessageSent { + + /// This method shall be called exclusively from ``PersistedObvOwnedIdentity.createPersistedMessageSentFromOtherOwnedDevice(obvOwnedMessage:messageJSON:returnReceiptJSON:)``. + /// Returns all the `ObvOwnedAttachment` that are fully received, i.e., such that the `SentFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + static func createPersistedMessageSentFromOtherOwnedDevice(obvOwnedMessage: ObvOwnedMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?,in discussion: PersistedDiscussion) throws -> (createdMessage: PersistedMessageSent, attachmentFullyReceivedOrCancelledByServer: [ObvOwnedAttachment]) { + + guard try PersistedMessageSent.getPersistedMessageSentFromOtherOwnedDevice(messageIdentifierFromEngine: obvOwnedMessage.messageIdentifierFromEngine, in: discussion) == nil else { + throw ObvError.persistedMessageSentAlreadyExist + } + + let discussionKind = try discussion.kind + + let messageUploadTimestampFromServer = PersistedMessage.determineMessageUploadTimestampFromServer( + messageUploadTimestampFromServerInObvMessage: obvOwnedMessage.messageUploadTimestampFromServer, + messageJSON: messageJSON, + discussionKind: discussionKind) + + let replyTo: ReplyToType? + if let replyToJson = messageJSON.replyTo { + replyTo = .json(replyToJSON: replyToJson) + } else { + replyTo = nil + } + + let fyleJoins = [SentFyleMessageJoinWithStatus]() // Set later, when receiving the attachments + + let readOnce: Bool + let visibilityDuration: TimeInterval? + let existenceDuration: TimeInterval? + if let expiration = messageJSON.expiration { + readOnce = expiration.readOnce + visibilityDuration = expiration.visibilityDuration + existenceDuration = expiration.existenceDuration + } else { + readOnce = false + visibilityDuration = nil + existenceDuration = nil + } + + let infosFromOtherOwnedDevice = (messageJSON.senderThreadIdentifier, messageJSON.senderSequenceNumber) + + let message = try self.init( + body: messageJSON.body, + replyTo: replyTo, + fyleJoins: fyleJoins, + discussion: discussion, + readOnce: readOnce, + visibilityDuration: visibilityDuration, + existenceDuration: existenceDuration, + forwarded: messageJSON.forwarded, + mentions: messageJSON.userMentions, + timestamp: messageUploadTimestampFromServer, + messageIdentifierFromEngine: obvOwnedMessage.messageIdentifierFromEngine, + infosFromOtherOwnedDevice: infosFromOtherOwnedDevice) + + message.setStatus(newValue: .sentFromAnotherOwnedDevice) + + // Process the attachments within the message + + let attachmentFullyReceivedOrCancelledByServer = message.processObvOwnedAttachmentsFromOtherOwnedDevice(of: obvOwnedMessage) + + return (message, attachmentFullyReceivedOrCancelledByServer) + + } + + + /// Returns all the `ObvOwnedAttachment` that are fully received, i.e., such that the `SentFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + private func processObvOwnedAttachmentsFromOtherOwnedDevice(of obvOwnedMessage: ObvOwnedMessage) -> [ObvOwnedAttachment] { + var attachmentsFullyReceivedOrCancelledByServer = [ObvOwnedAttachment]() + for obvOwnedAttachment in obvOwnedMessage.attachments { + do { + let attachmentFullyReceivedOrCancelledByServer = try processObvOwnedAttachmentFromOtherOwnedDevice(obvOwnedAttachment) + if attachmentFullyReceivedOrCancelledByServer { + attachmentsFullyReceivedOrCancelledByServer.append(obvOwnedAttachment) + } + } catch { + os_log("Could not process one of the message's attachments: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + // We continue anyway + } + } + return attachmentsFullyReceivedOrCancelledByServer + } + + + /// Returns `true` iff the attachment is cancelled or fully received (i.e., if the `SentFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk). + func processObvOwnedAttachmentFromOtherOwnedDevice(_ obvOwnedAttachment: ObvOwnedAttachment) throws -> Bool { + + let attachmentFullyReceivedOrCancelledByServer = try SentFyleMessageJoinWithStatus.createOrUpdateSentFyleMessageJoinWithStatusFromOtherOwnedDevice(with: obvOwnedAttachment, messageSent: self) + + return attachmentFullyReceivedOrCancelledByServer + + } + + + func markAttachmentFromOwnedDeviceAsResumed(attachmentNumber: Int) throws { + + guard attachmentNumber < fyleMessageJoinWithStatuses.count else { + throw ObvError.unexpectedAttachmentNumber + } + + let join = fyleMessageJoinWithStatuses[attachmentNumber] + + join.tryToSetStatusTo(.downloading) + + } + + + func markAttachmentFromOwnedDeviceAsPaused(attachmentNumber: Int) throws { + + guard attachmentNumber < fyleMessageJoinWithStatuses.count else { + throw ObvError.unexpectedAttachmentNumber + } + + let join = fyleMessageJoinWithStatuses[attachmentNumber] + + join.tryToSetStatusTo(.downloadable) + + } + +} + + // MARK: Setting delivered or read timestamps extension PersistedMessageSent { @@ -478,9 +783,9 @@ extension PersistedMessageSent { func toSentMessageReferenceJSON() -> MessageReferenceJSON? { - guard let senderIdentifier = self.discussion.ownedIdentity?.cryptoId.getIdentity() else { return nil } + guard let senderIdentifier = self.discussion?.ownedIdentity?.cryptoId.getIdentity() else { return nil } return MessageReferenceJSON(senderSequenceNumber: self.senderSequenceNumber, - senderThreadIdentifier: self.discussion.senderThreadIdentifier, + senderThreadIdentifier: self.senderThreadIdentifier, senderIdentifier: senderIdentifier) } @@ -491,17 +796,33 @@ extension PersistedMessageSent { switch self.repliesTo { case .available(message: let replyTo): replyToJSON = replyTo.toMessageReferenceJSON() - case .none, .deleted: + case .none, .deleted, .notAvailableYet: replyToJSON = nil } - switch try? discussion.kind { + guard let discussionKind = try? discussion?.kind else { + assertionFailure() + return nil + } + + switch discussionKind { + + case .oneToOne(withContactIdentity: let contactIdentity): - case .oneToOne, .none: + guard let oneToOneDiscussion = contactIdentity?.oneToOneDiscussion else { + os_log("Could find contact identity (this is ok if it was just deleted)", log: log, type: .error) + return nil + } + + guard let oneToOneIdentifier = try? oneToOneDiscussion.oneToOneIdentifier else { + os_log("Could not determine one2one discussion identifier", log: log, type: .error) + return nil + } return MessageJSON(senderSequenceNumber: self.senderSequenceNumber, - senderThreadIdentifier: self.discussion.senderThreadIdentifier, + senderThreadIdentifier: self.senderThreadIdentifier, body: self.textBodyToSend, + oneToOneIdentifier: oneToOneIdentifier, replyTo: replyToJSON, expiration: self.expirationJSON, forwarded: self.forwarded, @@ -529,10 +850,10 @@ extension PersistedMessageSent { } else { return nil } - let groupV1Identifier = (groupUid, groupOwner) + let groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) return MessageJSON(senderSequenceNumber: self.senderSequenceNumber, - senderThreadIdentifier: self.discussion.senderThreadIdentifier, + senderThreadIdentifier: self.senderThreadIdentifier, body: self.textBodyToSend, groupV1Identifier: groupV1Identifier, replyTo: replyToJSON, @@ -550,7 +871,7 @@ extension PersistedMessageSent { let originalServerTimestamp = unsortedRecipientsInfos.compactMap({ $0.timestampMessageSent }).min() return MessageJSON(senderSequenceNumber: self.senderSequenceNumber, - senderThreadIdentifier: self.discussion.senderThreadIdentifier, + senderThreadIdentifier: self.senderThreadIdentifier, body: self.textBodyToSend, groupV2Identifier: groupV2Identifier, replyTo: replyToJSON, @@ -619,15 +940,43 @@ extension PersistedMessageSent { } var replyToActionCanBeMadeAvailableForSentMessage: Bool { - guard discussion.status == .active else { return false } + guard discussion?.status == .active else { return false } if readOnce { return status == .read } return true } + var editBodyActionCanBeMadeAvailableForSentMessage: Bool { - return textBodyCanBeEdited + assert(Thread.isMainThread) + + guard let context = self.managedObjectContext else { + assertionFailure() + return false + } + guard context.concurrencyType == .mainQueueConcurrencyType else { + assertionFailure() + return false + } + + let childViewContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) + childViewContext.parent = context + guard let sentMessageInChildViewContext = try? PersistedMessageSent.getPersistedMessageSent(objectID: self.typedObjectID, within: childViewContext) else { + assertionFailure() + return false + } + guard let ownedIdentity = sentMessageInChildViewContext.discussion?.ownedIdentity else { + assertionFailure() + return false + } + // We return true iff the update would succeed + do { + _ = try ownedIdentity.processLocalUpdateMessageRequestFromThisOwnedIdentity(persistedSentMessageObjectID: self.typedObjectID, newTextBody: nil) + return true + } catch { + return false + } } var deleteOwnReactionActionCanBeMadeAvailableForSentMessage: Bool { @@ -644,7 +993,9 @@ extension PersistedMessageSent { struct Predicate { enum Key: String { // Attributes + case messageIdentifierFromEngine = "messageIdentifierFromEngine" case rawExistenceDuration = "rawExistenceDuration" + case senderThreadIdentifier = "senderThreadIdentifier" // Relationships case expirationForSentLimitedExistence = "expirationForSentLimitedExistence" case expirationForSentLimitedVisibility = "expirationForSentLimitedVisibility" @@ -653,6 +1004,7 @@ extension PersistedMessageSent { // Others static let expirationForSentLimitedVisibilityExpirationDate = [expirationForSentLimitedVisibility.rawValue, PersistedMessageExpiration.Predicate.Key.expirationDate.rawValue].joined(separator: ".") static let expirationForSentLimitedExistenceExpirationDate = [expirationForSentLimitedExistence.rawValue, PersistedMessageExpiration.Predicate.Key.expirationDate.rawValue].joined(separator: ".") + static let ownedIdentityIdentity = [PersistedMessage.Predicate.Key.discussion.rawValue, PersistedDiscussion.Predicate.Key.ownedIdentityIdentity].joined(separator: ".") } static var wasSent: NSPredicate { NSPredicate(PersistedMessage.Predicate.Key.rawStatus, largerThanOrEqualToInt: MessageStatus.sent.rawValue) @@ -696,12 +1048,110 @@ extension PersistedMessageSent { PersistedMessage.Predicate.withPermanentID(permanentID.downcast), ]) } + static func withSenderThreadIdentifier(_ senderThreadIdentifier: UUID) -> NSPredicate { + NSPredicate(Key.senderThreadIdentifier, EqualToUuid: senderThreadIdentifier) + } + static func withMessageIdentifierFromEngine(_ messageIdentifierFromEngine: Data) -> NSPredicate { + NSPredicate(Key.messageIdentifierFromEngine, EqualToData: messageIdentifierFromEngine) + } + static func fromOwnedCryptoId(_ ownedCryptoId: ObvCryptoId) -> NSPredicate { + NSPredicate(Key.ownedIdentityIdentity, EqualToData: ownedCryptoId.getIdentity()) + } + static func fromPersistedObvOwnedIdentity(_ ownedIdentity: PersistedObvOwnedIdentity) -> NSPredicate { + fromOwnedCryptoId(ownedIdentity.cryptoId) + } + static func withObjectID(_ objectID: NSManagedObjectID) -> NSPredicate { + NSPredicate(withObjectID: objectID) + } + static func withMessageWriterIdentifier(_ identifier: MessageWriterIdentifier) -> NSPredicate { + NSCompoundPredicate(andPredicateWithSubpredicates: [ + PersistedMessage.Predicate.withOwnedIdentityIdentity(identifier.senderIdentifier), + PersistedMessage.Predicate.withSenderSequenceNumberEqualTo(identifier.senderSequenceNumber), + withSenderThreadIdentifier(identifier.senderThreadIdentifier), + ]) + } } @nonobjc static func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: PersistedMessageSent.entityName) } + + + static func getPersistedMessageSent(discussion: PersistedDiscussion, messageId: SentMessageIdentifier) throws -> PersistedMessageSent? { + guard let context = discussion.managedObjectContext else { assertionFailure(); throw ObvError.noContext } + let request: NSFetchRequest = PersistedMessageSent.fetchRequest() + switch messageId { + case .objectID(let objectID): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withObjectID(objectID), + Predicate.withinDiscussion(discussion), + ]) + case .authorIdentifier(let writerIdentifier): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withinDiscussion(discussion), + Predicate.withMessageWriterIdentifier(writerIdentifier), + ]) + } + request.fetchLimit = 1 + return try context.fetch(request).first + } + + + private static func getNextMessageBySenderSequenceNumber(_ sequenceNumber: Int, senderThreadIdentifier: UUID, within discussion: PersistedDiscussion) -> PersistedMessageReceived? { + guard let context = discussion.managedObjectContext else { return nil } + let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withinDiscussion(discussion), + Predicate.withSenderThreadIdentifier(senderThreadIdentifier), + PersistedMessage.Predicate.withSenderSequenceNumberLargerThan(sequenceNumber), + ]) + request.sortDescriptors = [NSSortDescriptor(key: PersistedMessage.Predicate.Key.senderSequenceNumber.rawValue, ascending: true)] + request.fetchLimit = 1 + do { return try context.fetch(request).first } catch { return nil } + } + + + private static func getPreviousMessageBySenderSequenceNumber(_ sequenceNumber: Int, senderThreadIdentifier: UUID, within discussion: PersistedDiscussion) -> PersistedMessageReceived? { + guard let context = discussion.managedObjectContext else { return nil } + let request: NSFetchRequest = PersistedMessageReceived.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withinDiscussion(discussion), + Predicate.withSenderThreadIdentifier(senderThreadIdentifier), + PersistedMessage.Predicate.withSenderSequenceNumberLessThan(sequenceNumber), + ]) + request.sortDescriptors = [NSSortDescriptor(key: PersistedMessage.Predicate.Key.senderSequenceNumber.rawValue, ascending: false)] + request.fetchLimit = 1 + do { return try context.fetch(request).first } catch { return nil } + } + + + static func getPersistedMessageSentFromOtherOwnedDevice(messageIdentifierFromEngine: Data, in discussion: PersistedDiscussion) throws -> PersistedMessageSent? { + guard let context = discussion.managedObjectContext else { + throw Self.makeError(message: "PersistedDiscussion's context is nil") + } + let request: NSFetchRequest = PersistedMessageSent.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withMessageIdentifierFromEngine(messageIdentifierFromEngine), + Predicate.withinDiscussion(discussion), + ]) + request.fetchLimit = 1 + return try context.fetch(request).first + } + + + static func getPersistedMessageSentFromOtherOwnedDevice(messageIdentifierFromEngine: Data, from ownedIdentity: PersistedObvOwnedIdentity) throws -> PersistedMessageSent? { + guard let context = ownedIdentity.managedObjectContext else { + throw Self.makeError(message: "PersistedObvOwnedIdentity's context is nil") + } + let request: NSFetchRequest = PersistedMessageSent.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withMessageIdentifierFromEngine(messageIdentifierFromEngine), + Predicate.fromPersistedObvOwnedIdentity(ownedIdentity), + ]) + request.fetchLimit = 1 + return try context.fetch(request).first + } public static func getPersistedMessageSent(objectID: TypeSafeManagedObjectID, within context: NSManagedObjectContext) throws -> PersistedMessageSent? { @@ -736,7 +1186,7 @@ extension PersistedMessageSent { request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ Predicate.withinDiscussion(discussion), PersistedMessage.Predicate.withSenderSequenceNumberEqualTo(senderSequenceNumber), - PersistedMessage.Predicate.withSenderThreadIdentifier(senderThreadIdentifier), + Predicate.withSenderThreadIdentifier(senderThreadIdentifier), PersistedMessage.Predicate.withOwnedIdentityIdentity(ownedIdentity), ]) request.fetchLimit = 1 @@ -846,7 +1296,7 @@ extension PersistedMessageSent { } public var fyleMessageJoinWithStatusesOfAudioType: [SentFyleMessageJoinWithStatus] { - fyleMessageJoinWithStatuses.filter({ ObvUTIUtils.uti($0.uti, conformsTo: kUTTypeAudio) }) + fyleMessageJoinWithStatuses.filter({ $0.contentType.conforms(to: .audio) }) } public var fyleMessageJoinWithStatusesOfOtherTypes: [SentFyleMessageJoinWithStatus] { @@ -877,9 +1327,9 @@ extension PersistedMessageSent { defer { changedKeys.removeAll() } // When a readOnce message is sent, we notify. This is catched by the coordinator that checks whether the user is in the message's discussion or not. If this is the case, nothing happens. Otherwise the coordiantor deletes this readOnce message. - if changedKeys.contains(PersistedMessage.Predicate.Key.rawStatus.rawValue) && self.status == .sent && self.readOnce { + if let discussion, changedKeys.contains(PersistedMessage.Predicate.Key.rawStatus.rawValue), self.status == .sent, self.readOnce { ObvMessengerCoreDataNotification.aReadOncePersistedMessageSentWasSent(persistedMessageSentPermanentID: self.objectPermanentID, - persistedDiscussionPermanentID: self.discussion.discussionPermanentID) + persistedDiscussionPermanentID: discussion.discussionPermanentID) .postOnDispatchQueue() } @@ -887,6 +1337,36 @@ extension PersistedMessageSent { } + +// MARK: - Error + +extension PersistedMessageSent { + + public enum ObvError: LocalizedError { + + case noContext + case persistedMessageSentAlreadyExist + case unexpectedAttachmentNumber + case discussionIsNil + + public var errorDescription: String? { + switch self { + case .persistedMessageSentAlreadyExist: + return "PersistedMessageSent already exists" + case .noContext: + return "No context" + case .unexpectedAttachmentNumber: + return "Unexpected attachment number" + case .discussionIsNil: + return "Discussion is nil" + } + } + + } + +} + + public extension TypeSafeManagedObjectID where T == PersistedMessageSent { var downcast: TypeSafeManagedObjectID { TypeSafeManagedObjectID(objectID: objectID) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSentRecipientInfos.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSentRecipientInfos.swift index 00d84a44..e2df3d89 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSentRecipientInfos.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSentRecipientInfos.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,8 @@ import ObvCrypto import os.log import ObvTypes import OlvidUtils +import ObvSettings + @objc(PersistedMessageSentRecipientInfos) public final class PersistedMessageSentRecipientInfos: NSManagedObject, ObvErrorMaker { @@ -58,7 +60,10 @@ public final class PersistedMessageSentRecipientInfos: NSManagedObject, ObvError } public func getRecipient() throws -> PersistedObvContactIdentity? { - guard let ownedIdentity = self.messageSent.discussion.ownedIdentity else { + guard let discussion = messageSent.discussion else { + throw ObvError.discussionIsNil + } + guard let ownedIdentity = discussion.ownedIdentity else { os_log("Could not find owned identity. This is ok if it has just been deleted.", log: log, type: .error) return nil } @@ -313,3 +318,23 @@ public final class PersistedMessageSentRecipientInfos: NSManagedObject, ObvError } } + + +// MARK: - Errors + +extension PersistedMessageSentRecipientInfos { + + public enum ObvError: LocalizedError { + + case discussionIsNil + + public var errorDescription: String? { + switch self { + case .discussionIsNil: + return "The discussion is nil (occurs while deleting/wiping a discussion)" + } + } + + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSystem.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSystem.swift index 653d2fe8..0c17552b 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSystem.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/PersistedMessageSystem.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,8 @@ import CoreData import ObvEngine import os.log import OlvidUtils +import ObvTypes +import ObvSettings @objc(PersistedMessageSystem) @@ -50,6 +52,7 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana case ownedIdentityIsNoLongerPartOfGroupV2Admins = 14 case ownedIdentityDidCaptureSensitiveMessages = 15 case contactIdentityDidCaptureSensitiveMessages = 16 + case contactWasIntroducedToAnotherContact = 17 public var description: String { @@ -71,6 +74,7 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana case .ownedIdentityIsNoLongerPartOfGroupV2Admins: return "ownedIdentityIsNoLongerPartOfGroupV2Admins" case .ownedIdentityDidCaptureSensitiveMessages: return "ownedIdentityDidCaptureSensitiveMessages" case .contactIdentityDidCaptureSensitiveMessages: return "contactIdentityDidCaptureSensitiveMessages" + case .contactWasIntroducedToAnotherContact: return "contactWasIntroducedToAnotherContact" } } @@ -94,7 +98,8 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana .ownedIdentityIsPartOfGroupV2Admins, .ownedIdentityIsNoLongerPartOfGroupV2Admins, .ownedIdentityDidCaptureSensitiveMessages, - .contactIdentityDidCaptureSensitiveMessages: + .contactIdentityDidCaptureSensitiveMessages, + .contactWasIntroducedToAnotherContact: return false } } @@ -115,7 +120,8 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana .ownedIdentityIsPartOfGroupV2Admins, .ownedIdentityIsNoLongerPartOfGroupV2Admins, .ownedIdentityDidCaptureSensitiveMessages, - .contactIdentityDidCaptureSensitiveMessages: + .contactIdentityDidCaptureSensitiveMessages, + .contactWasIntroducedToAnotherContact: return true case .numberOfNewMessages, @@ -144,6 +150,7 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana case .numberOfNewMessages: return false case .discussionIsEndToEndEncrypted: return false + case .contactWasIntroducedToAnotherContact: return false } } @@ -163,9 +170,10 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana // MARK: - Attributes - @NSManaged var rawCategory: Int @NSManaged private var associatedData: Data? @NSManaged public private(set) var numberOfUnreadReceivedMessages: Int // Only used when the message is of the category numberOfUnreadMessages. + @NSManaged private var optionalOwnedIdentityIdentity: Data? // Used, e.g., to specify that a remote discussion wipe was performed from another owned device + @NSManaged var rawCategory: Int // MARK: - Relationships @@ -174,12 +182,33 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana // MARK: - Computed variables + var optionalOwnedCryptoId: ObvCryptoId? { + get { + guard let optionalOwnedIdentityIdentity else { return nil } + guard let ownedCryptoId = try? ObvCryptoId(identity: optionalOwnedIdentityIdentity) else { assertionFailure(); return nil } + return ownedCryptoId + } + set { + self.optionalOwnedIdentityIdentity = newValue?.getIdentity() + } + } + public var objectPermanentID: ObvManagedObjectPermanentID { ObvManagedObjectPermanentID(uuid: self.permanentUUID) } public override var kind: PersistedMessageKind { .system } + /// 2023-07-17: This is the most appropriate identifier to use in, e.g., notifications + public override var identifier: MessageIdentifier { + return .system(id: self.systemMessageIdentifier) + } + + public var systemMessageIdentifier: SystemMessageIdentifier { + return .objectID(objectID: self.objectID) + } + + override var isNumberOfNewMessagesMessageSystem: Bool { return category == .numberOfNewMessages } @@ -193,7 +222,7 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana } } - public var status: MessageStatus { + public private(set) var status: MessageStatus { get { return MessageStatus(rawValue: self.rawStatus)! } @@ -202,6 +231,12 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana } } + func markAsRead() { + if self.status != .read { + self.status = .read + } + } + public func setNumberOfUnreadReceivedMessages(to newValue: Int) { assert(Thread.isMainThread, "We do not expect this variable to be set on a background context") if self.numberOfUnreadReceivedMessages != newValue { @@ -222,8 +257,19 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana df.dateStyle = Calendar.current.isDateInToday(self.timestamp) ? .none : .medium df.timeStyle = .short let dateString = df.string(from: self.timestamp) - let contactDisplayName = self.optionalContactIdentity?.customDisplayName ?? self.optionalContactIdentity?.identityCoreDetails?.getDisplayNameWithStyle(.full) ?? CommonString.deletedContact + let contactDisplayName: String + if let optionalContactIdentity { + contactDisplayName = optionalContactIdentity.customDisplayName ?? optionalContactIdentity.identityCoreDetails?.getDisplayNameWithStyle(.full) ?? CommonString.deletedContact + } else if optionalOwnedCryptoId != nil { + contactDisplayName = CommonString.Word.You.lowercased() + } else { + contactDisplayName = CommonString.deletedContact + } switch self.category { + case .contactWasIntroducedToAnotherContact: + let discussionContactDisplayName: String? = (discussion as? PersistedOneToOneDiscussion)?.contactIdentity?.customOrShortDisplayName + let otherContactDisplayName: String? = optionalContactIdentity?.customOrNormalDisplayName + return Strings.contactWasIntroducedToAnotherContact(discussionContactDisplayName, otherContactDisplayName) case .ownedIdentityDidCaptureSensitiveMessages: return Strings.ownedIdentityDidCaptureSensitiveMessages case .contactIdentityDidCaptureSensitiveMessages: @@ -262,7 +308,7 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana case .rejoinedGroup: return Strings.rejoinedGroup case .contactIsOneToOneAgain: - switch try? discussion.kind { + switch try? discussion?.kind { case .oneToOne(withContactIdentity: let contactIdentity): if let contactIdentity = contactIdentity { return Strings.contactIsOneToOneAgain(contactName: contactIdentity.customOrNormalDisplayName) @@ -341,6 +387,12 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana return Strings.anyOutgoingCall(content) case .filteredIncomingCall: return Strings.filteredIncomingCall(content) + case .answeredOnOtherDevice: + return Strings.answeredOnOtherDevice(content) + case .rejectedOnOtherDevice: + return Strings.rejectedOnOtherDevice(content) + case .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse: + return Strings.rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse(content) } } } @@ -349,10 +401,14 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana let contactDisplayName: String if let optionalContactIdentity { contactDisplayName = optionalContactIdentity.customDisplayName ?? optionalContactIdentity.identityCoreDetails?.getDisplayNameWithStyle(.full) ?? optionalContactIdentity.fullDisplayName + } else if optionalOwnedCryptoId != nil { + contactDisplayName = CommonString.Word.You.lowercased() } else { contactDisplayName = CommonString.deletedContact } switch self.category { + case .contactWasIntroducedToAnotherContact: + return textBody case .ownedIdentityDidCaptureSensitiveMessages: return textBody case .contactIdentityDidCaptureSensitiveMessages: @@ -443,6 +499,12 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana return Strings.anyOutgoingCall(content) case .filteredIncomingCall: return Strings.filteredIncomingCall(content) + case .answeredOnOtherDevice: + return Strings.answeredOnOtherDevice(content) + case .rejectedOnOtherDevice: + return Strings.rejectedOnOtherDevice(content) + case .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse: + return Strings.rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse(content) } } } @@ -457,7 +519,7 @@ public final class PersistedMessageSystem: PersistedMessage, ObvIdentifiableMana extension PersistedMessageSystem { /// At this time, the `messageUploadTimestampFromServer` is only relevant when receiving an `updatedDiscussionSharedSettings` system message. - public convenience init(_ category: Category, optionalContactIdentity: PersistedObvContactIdentity?, optionalCallLogItem: PersistedCallLogItem?, discussion: PersistedDiscussion, messageUploadTimestampFromServer: Date? = nil, timestamp: Date) throws { + public convenience init(_ category: Category, optionalContactIdentity: PersistedObvContactIdentity?, optionalOwnedCryptoId: ObvCryptoId?, optionalCallLogItem: PersistedCallLogItem?, discussion: PersistedDiscussion, messageUploadTimestampFromServer: Date? = nil, timestamp: Date, thisMessageTimestampCanResetDiscussionTimestampOfLastMessage: Bool = true) throws { guard category != .numberOfNewMessages else { assertionFailure(); throw PersistedMessageSystem.makeError(message: "Inappropriate initializer called") } @@ -475,27 +537,29 @@ extension PersistedMessageSystem { sortIndex = 1/100.0 + ceil(lastSortIndex) // We add "10 milliseconds" } + let senderSequenceNumber = discussion.incrementLastSystemMessageSequenceNumber() + try self.init(timestamp: timestamp, body: nil, rawStatus: MessageStatus.new.rawValue, - senderSequenceNumber: discussion.lastSystemMessageSequenceNumber + 1, + senderSequenceNumber: senderSequenceNumber, sortIndex: sortIndex, - isReplyToAnotherMessage: false, replyTo: nil, discussion: discussion, readOnce: false, visibilityDuration: nil, forwarded: false, mentions: [], // For now, we have no mentions in system messages + thisMessageTimestampCanResetDiscussionTimestampOfLastMessage: thisMessageTimestampCanResetDiscussionTimestampOfLastMessage, forEntityName: PersistedMessageSystem.entityName) self.rawCategory = category.rawValue self.associatedData = nil + self.optionalOwnedCryptoId = optionalOwnedCryptoId self.optionalContactIdentity = optionalContactIdentity self.optionalCallLogItem = optionalCallLogItem - discussion.lastSystemMessageSequenceNumber = self.senderSequenceNumber } /// This initialiser is specific to `numberOfNewMessages` system messages @@ -520,7 +584,6 @@ extension PersistedMessageSystem { rawStatus: MessageStatus.read.rawValue, senderSequenceNumber: 0, sortIndex: sortIndexForFirstNewMessageLimit, - isReplyToAnotherMessage: false, replyTo: nil, discussion: discussion, readOnce: false, @@ -565,6 +628,7 @@ extension PersistedMessageSystem { public static func insertUpdatedDiscussionSharedSettingsSystemMessage(within discussion: PersistedDiscussion, optionalContactIdentity: PersistedObvContactIdentity?, expirationJSON: ExpirationJSON?, messageUploadTimestampFromServer: Date?, markAsRead: Bool) throws { let message = try self.init(.updatedDiscussionSharedSettings, optionalContactIdentity: optionalContactIdentity, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, messageUploadTimestampFromServer: messageUploadTimestampFromServer, @@ -579,6 +643,7 @@ extension PersistedMessageSystem { public static func insertDiscussionWasRemotelyWipedSystemMessage(within discussion: PersistedDiscussion, byContact contact: PersistedObvContactIdentity, messageUploadTimestampFromServer: Date?) throws { _ = try self.init(.discussionWasRemotelyWiped, optionalContactIdentity: contact, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, messageUploadTimestampFromServer: messageUploadTimestampFromServer, @@ -589,6 +654,7 @@ extension PersistedMessageSystem { static func insertNotPartOfTheGroupAnymoreSystemMessage(within discussion: PersistedGroupDiscussion) throws { _ = try self.init(.notPartOfTheGroupAnymore, optionalContactIdentity: nil, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) @@ -598,6 +664,7 @@ extension PersistedMessageSystem { static func insertNotPartOfTheGroupAnymoreSystemMessage(within discussion: PersistedGroupV2Discussion) throws { _ = try self.init(.notPartOfTheGroupAnymore, optionalContactIdentity: nil, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) @@ -607,6 +674,7 @@ extension PersistedMessageSystem { static func insertRejoinedGroupSystemMessage(within discussion: PersistedGroupDiscussion) throws { _ = try self.init(.rejoinedGroup, optionalContactIdentity: nil, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) @@ -616,6 +684,7 @@ extension PersistedMessageSystem { static func insertRejoinedGroupSystemMessage(within discussion: PersistedGroupV2Discussion) throws { _ = try self.init(.rejoinedGroup, optionalContactIdentity: nil, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) @@ -625,6 +694,7 @@ extension PersistedMessageSystem { static func insertContactIsOneToOneAgainSystemMessage(within discussion: PersistedOneToOneDiscussion) throws { let message = try self.init(.contactIsOneToOneAgain, optionalContactIdentity: discussion.contactIdentity, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) @@ -635,6 +705,7 @@ extension PersistedMessageSystem { public static func insertMembersOfGroupV2WereUpdatedSystemMessage(within discussion: PersistedGroupV2Discussion) throws { _ = try self.init(.membersOfGroupV2WereUpdated, optionalContactIdentity: nil, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) @@ -644,6 +715,7 @@ extension PersistedMessageSystem { public static func insertOwnedIdentityIsPartOfGroupV2AdminsMessage(within discussion: PersistedGroupV2Discussion) throws { _ = try self.init(.ownedIdentityIsPartOfGroupV2Admins, optionalContactIdentity: nil, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) @@ -653,40 +725,63 @@ extension PersistedMessageSystem { public static func insertOwnedIdentityIsNoLongerPartOfGroupV2AdminsMessage(within discussion: PersistedGroupV2Discussion) throws { _ = try self.init(.ownedIdentityIsNoLongerPartOfGroupV2Admins, optionalContactIdentity: nil, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) } - public static func insertOwnedIdentityDidCaptureSensitiveMessages(within discussion: PersistedDiscussion) throws { + static func insertOwnedIdentityDidCaptureSensitiveMessages(within discussion: PersistedDiscussion) throws { _ = try self.init(.ownedIdentityDidCaptureSensitiveMessages, optionalContactIdentity: nil, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) } - - public static func insertContactIdentityDidCaptureSensitiveMessages(within discussion: PersistedDiscussion, contact: PersistedObvContactIdentity) throws { + + static func insertContactIdentityDidCaptureSensitiveMessages(within discussion: PersistedDiscussion, contact: PersistedObvContactIdentity, timestamp: Date) throws { // Make a few sanity checks before inserting the system message guard discussion.managedObjectContext == contact.managedObjectContext else { assertionFailure(); throw Self.makeError(message: "Distinct contexts") } - guard discussion.ownedIdentity == contact.ownedIdentity else { assertionFailure(); throw Self.makeError(message: "Discting owned identities between discussion and contact.") } - switch try discussion.kind { - case .oneToOne(withContactIdentity: let discussionContact): - guard discussionContact?.cryptoId == contact.cryptoId else { assertionFailure(); throw Self.makeError(message: "Mismatch between discussion contact and contact") } - case .groupV1(withContactGroup: let contactGroup): - guard contactGroup?.contactIdentities.contains(contact) == true else { assertionFailure(); throw Self.makeError(message: "Contact is not part of the group v1") } - case .groupV2(withGroup: let group): - guard group?.contactsAmongOtherPendingAndNonPendingMembers.contains(contact) == true else { assertionFailure(); throw Self.makeError(message: "Contact is not part of the group v2") } - } _ = try self.init(.contactIdentityDidCaptureSensitiveMessages, optionalContactIdentity: contact, + optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, - timestamp: Date()) + timestamp: timestamp) + } + + + static func insertOwnedIdentityDidCaptureSensitiveMessages(within discussion: PersistedDiscussion, ownedCryptoId: ObvCryptoId, timestamp: Date) throws { + _ = try self.init(.ownedIdentityDidCaptureSensitiveMessages, + optionalContactIdentity: nil, + optionalOwnedCryptoId: ownedCryptoId, + optionalCallLogItem: nil, + discussion: discussion, + timestamp: timestamp) } + + static func insertContactWasIntroducedToAnotherContact(within oneToOneDiscussion: PersistedOneToOneDiscussion, otherContact: PersistedObvContactIdentity) throws { + guard oneToOneDiscussion.ownedIdentity == otherContact.ownedIdentity else { + throw ObvError.unexpectedOwnedIdentity + } + guard oneToOneDiscussion.contactIdentity != otherContact else { + throw ObvError.unexpectedContactIdentity + } + // We set thisMessageTimestampCanResetDiscussionTimestampOfLastMessage to false as we do not want discussions to "move" in the list of recent discussions just because we introduced a contact to another. + // This would particularly not make sense when introducing one contact to many other contacts. + _ = try self.init(.contactWasIntroducedToAnotherContact, + optionalContactIdentity: otherContact, + optionalOwnedCryptoId: nil, + optionalCallLogItem: nil, + discussion: oneToOneDiscussion, + timestamp: Date(), + thisMessageTimestampCanResetDiscussionTimestampOfLastMessage: false) + } + } @@ -716,7 +811,7 @@ extension PersistedMessageSystem { var callActionCanBeMadeAvailableForSystemMessage: Bool { guard category == .callLogItem else { return false } guard optionalCallLogItem != nil else { return false } - return discussion.isCallAvailable + return discussion?.isCallAvailable ?? false } } @@ -758,6 +853,9 @@ extension PersistedMessageSystem { static func withCategory(_ category: Category) -> NSPredicate { NSPredicate(Key.rawCategory, EqualToInt: category.rawValue) } + static func createdBefore(date: Date) -> NSPredicate { + NSPredicate(PersistedMessage.Predicate.Key.timestamp, earlierThan: date) + } static var isNumberOfNewMessages: NSPredicate { withCategory(.numberOfNewMessages) } static var isContactJoinedGroup: NSPredicate { withCategory(.contactJoinedGroup) } static var isContactLeftGroup: NSPredicate { withCategory(.contactLeftGroup) } @@ -802,6 +900,9 @@ extension PersistedMessageSystem { static func withOwnedIdentity(for ownedIdentity: PersistedObvOwnedIdentity) -> NSPredicate { PersistedMessage.Predicate.withOwnedIdentity(ownedIdentity) } + static func withObjectID(_ objectID: NSManagedObjectID) -> NSPredicate { + NSPredicate(withObjectID: objectID) + } } @@ -810,18 +911,41 @@ extension PersistedMessageSystem { } - public static func markAllAsNotNew(within discussion: PersistedDiscussion) throws { + static func getPersistedMessageSystem(discussion: PersistedDiscussion, messageId: SystemMessageIdentifier) throws -> PersistedMessageSystem? { + guard let context = discussion.managedObjectContext else { assertionFailure(); throw ObvError.managedContextIsNil } + let request: NSFetchRequest = PersistedMessageSystem.fetchRequest() + switch messageId { + case .objectID(let objectID): + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.withObjectID(objectID), + Predicate.withinDiscussion(discussion), + ]) + } + request.fetchLimit = 1 + return try context.fetch(request).first + } + + + static func markAllAsNotNew(within discussion: PersistedDiscussion, untilDate: Date?) throws -> Date? { os_log("Call to markAllAsNotNew in PersistedMessageSystem for discussion %{public}@", log: log, type: .debug, discussion.objectID.debugDescription) - guard let context = discussion.managedObjectContext else { return } + guard let context = discussion.managedObjectContext else { return nil } let request: NSFetchRequest = PersistedMessageSystem.fetchRequest() request.includesSubentities = true + let untilDatePredicate: NSPredicate + if let untilDate { + untilDatePredicate = Predicate.createdBefore(date: untilDate) + } else { + untilDatePredicate = NSPredicate(value: true) + } request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + untilDatePredicate, Predicate.withinDiscussion(discussion), Predicate.isNew, ]) let messages = try context.fetch(request) - guard !messages.isEmpty else { return } + guard !messages.isEmpty else { return nil } messages.forEach { $0.status = .read } + return messages.map({ $0.timestamp }).max() } @@ -969,8 +1093,9 @@ extension PersistedMessageSystem { super.prepareForDeletion() guard let managedObjectContext else { assertionFailure(); return } guard managedObjectContext.concurrencyType != .mainQueueConcurrencyType else { return } + guard let discussionObjectID = discussion?.typedObjectID else { return } userInfoForDeletion = ["objectID": objectID, - "discussionObjectID": discussion.typedObjectID] + "discussionObjectID": discussionObjectID] } public override func didSave() { diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/RemoteDeleteAndEditRequest.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/RemoteDeleteAndEditRequest.swift deleted file mode 100644 index 32a7d518..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/RemoteDeleteAndEditRequest.swift +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import OlvidUtils - - -@objc(RemoteDeleteAndEditRequest) -public final class RemoteDeleteAndEditRequest: NSManagedObject, ObvErrorMaker { - - private static let entityName = "RemoteDeleteAndEditRequest" - public static let errorDomain = "RemoteDeleteAndEditRequest" - private let log = OSLog(subsystem: ObvUICoreDataConstants.logSubsystem, category: "RemoteDeleteAndEditRequest") - - public enum RequestType: Int { - case delete = 0 - case edit = 1 - } - - // MARK: Attributes - - @NSManaged public private(set) var body: String? - @NSManaged private var rawRequestType: Int - @NSManaged private var remoteDeleterIdentity: Data? - @NSManaged private var senderIdentifier: Data - @NSManaged private var senderSequenceNumber: Int - @NSManaged private var senderThreadIdentifier: UUID - @NSManaged public private(set) var serverTimestamp: Date - - // MARK: Relationships - - @NSManaged private var discussion: PersistedDiscussion? // Expected to be non-nil - - // MARK: Other variables - - public var requestType: RequestType { - get { RequestType(rawValue: rawRequestType)! } - set { self.rawRequestType = newValue.rawValue } - } - - public var messageReferenceJSON: MessageReferenceJSON { - MessageReferenceJSON(senderSequenceNumber: senderSequenceNumber, senderThreadIdentifier: senderThreadIdentifier, senderIdentifier: senderIdentifier) - } - - // MARK: - Creating and deleting - - private convenience init(body: String?, requestType: RequestType, remoteDeleterIdentity: Data?, senderIdentifier: Data, senderSequenceNumber: Int, senderThreadIdentifier: UUID, serverTimestamp: Date, discussion: PersistedDiscussion) throws { - - assert((requestType == .delete && remoteDeleterIdentity != nil && body == nil) || (requestType == .edit && remoteDeleterIdentity == nil && body != nil)) - guard let context = discussion.managedObjectContext else { throw RemoteDeleteAndEditRequest.makeError(message: "Could not find context") } - - let entityDescription = NSEntityDescription.entity(forEntityName: RemoteDeleteAndEditRequest.entityName, in: context)! - self.init(entity: entityDescription, insertInto: context) - - self.body = body - self.requestType = requestType - self.remoteDeleterIdentity = remoteDeleterIdentity - self.senderIdentifier = senderIdentifier - self.senderSequenceNumber = senderSequenceNumber - self.senderThreadIdentifier = senderThreadIdentifier - self.serverTimestamp = serverTimestamp - self.discussion = discussion - - } - - /// This is the method to call to create a `RemoteDeleteAndEditRequest` instance of type `edit`. Note that this method only creates a new instance if appropriate. - /// - /// In the following situations, this method does nothing: - /// - An older entry of type "delete" is found with the same constaints. - /// - A more recent entry (of any type) is found with the same constraints - /// - /// In all other cases, this method : - /// - Deletes any existing entry with the same constraints - /// - Creates a new entry using the parameters passed to that method. - public static func createEditRequestIfAppropriate(body: String?, messageReference: MessageReferenceJSON, serverTimestamp: Date, discussion: PersistedDiscussion) throws { - - // If an older delete request exists, we ignore this request whatever its type - guard try countDeleteRequestsOlderThanServerTimestamp(serverTimestamp, - discussion: discussion, - senderIdentifier: messageReference.senderIdentifier, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - senderSequenceNumber: messageReference.senderSequenceNumber) == 0 else { return } - - // We ignore this new edit request if there exists a more recent request - guard try countRequestsMoreRecentThanServerTimestamp(serverTimestamp, - discussion: discussion, - senderIdentifier: messageReference.senderIdentifier, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - senderSequenceNumber: messageReference.senderSequenceNumber) == 0 else { return } - - // If we reach this point, we will create a new edit request. We first delete any previous request. - try deleteAllRequests(discussion: discussion, senderIdentifier: messageReference.senderIdentifier, senderThreadIdentifier: messageReference.senderThreadIdentifier, senderSequenceNumber: messageReference.senderSequenceNumber) - _ = try RemoteDeleteAndEditRequest(body: body, - requestType: .edit, - remoteDeleterIdentity: nil, - senderIdentifier: messageReference.senderIdentifier, - senderSequenceNumber: messageReference.senderSequenceNumber, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - serverTimestamp: serverTimestamp, - discussion: discussion) - } - - - /// This is the method to call to create a `RemoteDeleteAndEditRequest` instance of type `delete`. - /// - /// This method : - /// - Deletes any existing entry with the same constraints - /// - Creates a new entry using the parameters passed to that method. - public static func createDeleteRequest(remoteDeleterIdentity: Data, messageReference: MessageReferenceJSON, serverTimestamp: Date, discussion: PersistedDiscussion) throws { - - // Check that the remote deleter identity is allowed to perform deletion - - // When inserting a delete request, we delete all other previous requests concering this message. - // As a consequence, if there is anything to be deleted, we want to make sure that the new delete request is legitimate. - // If it is not, we throw it away. - // If there is no request to delete for this message, we always store the new delete request, the test will be performed later. - - if try getRemoteDeleteAndEditRequest(discussion: discussion, - senderIdentifier: messageReference.senderIdentifier, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - senderSequenceNumber: messageReference.senderSequenceNumber) != nil { - // Since there already is a RemoteDeleteAndEditRequest in DB, we check whether the new delete request is legitimate - switch try discussion.kind { - case .oneToOne, .groupV1: - break // Always allow creation of the new delete request - case .groupV2(withGroup: let group): - guard let group = group else { assertionFailure(); return } - guard let member = group.otherMembers.first(where: { $0.identity == remoteDeleterIdentity }) else { - // The deleter is not part of the group members, we discard the new delete request - return - } - guard member.isAllowedToRemoteDeleteAnything || (member.isAllowedToEditOrRemoteDeleteOwnMessages && member.identity == messageReference.senderIdentifier) else { - // The deleter is not allowed to delete this message, we discard the new delete request - return - } - } - } - - // If we reach this point, we can delete previous requests concerning this message and create the new delete request - - try deleteAllRequests(discussion: discussion, - senderIdentifier: messageReference.senderIdentifier, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - senderSequenceNumber: messageReference.senderSequenceNumber) - _ = try RemoteDeleteAndEditRequest(body: nil, - requestType: .delete, - remoteDeleterIdentity: remoteDeleterIdentity, - senderIdentifier: messageReference.senderIdentifier, - senderSequenceNumber: messageReference.senderSequenceNumber, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - serverTimestamp: serverTimestamp, - discussion: discussion) - } - - - public func delete() throws { - guard let context = self.managedObjectContext else { throw Self.makeError(message: "Cannot find context") } - context.delete(self) - } - - - // MARK: - Convenience DB getters - - @nonobjc private static func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: RemoteDeleteAndEditRequest.entityName) - } - - - private struct Predicate { - enum Key: String { - // Attributes - case rawRequestType = "rawRequestType" - case senderIdentifier = "senderIdentifier" - case senderSequenceNumber = "senderSequenceNumber" - case senderThreadIdentifier = "senderThreadIdentifier" - case serverTimestamp = "serverTimestamp" - // Relationships - case discussion = "discussion" - } - static func withPrimaryKey(discussion: PersistedDiscussion, senderIdentifier: Data, senderThreadIdentifier: UUID, senderSequenceNumber: Int) -> NSPredicate { - NSCompoundPredicate(andPredicateWithSubpredicates: [ - NSPredicate(Key.discussion, equalTo: discussion), - NSPredicate(Key.senderIdentifier, EqualToData: senderIdentifier), - NSPredicate(Key.senderThreadIdentifier, EqualToUuid: senderThreadIdentifier), - NSPredicate(Key.senderSequenceNumber, EqualToInt: senderSequenceNumber), - ]) - } - static func olderThanServerTimestamp(_ serverTimestamp: Date) -> NSPredicate { - NSPredicate(Key.serverTimestamp, earlierThan: serverTimestamp) - } - static func moreRecentThanServerTimestamp(_ serverTimestamp: Date) -> NSPredicate { - NSPredicate(Key.serverTimestamp, laterThan: serverTimestamp) - } - static func ofRequestType(_ requestType: RequestType) -> NSPredicate { - NSPredicate(Key.rawRequestType, EqualToInt: requestType.rawValue) - } - static var withoutAssociatedDiscussion: NSPredicate { - NSPredicate(withNilValueForKey: Key.discussion) - } - } - - - private static func countDeleteRequestsOlderThanServerTimestamp(_ serverTimestamp: Date, discussion: PersistedDiscussion, senderIdentifier: Data, senderThreadIdentifier: UUID, senderSequenceNumber: Int) throws -> Int { - guard let context = discussion.managedObjectContext else { throw makeError(message: "Could not find context") } - let request: NSFetchRequest = RemoteDeleteAndEditRequest.fetchRequest() - request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withPrimaryKey(discussion: discussion, senderIdentifier: senderIdentifier, senderThreadIdentifier: senderThreadIdentifier, senderSequenceNumber: senderSequenceNumber), - Predicate.olderThanServerTimestamp(serverTimestamp), - Predicate.ofRequestType(.delete), - ]) - return try context.count(for: request) - } - - - private static func countRequestsMoreRecentThanServerTimestamp(_ serverTimestamp: Date, discussion: PersistedDiscussion, senderIdentifier: Data, senderThreadIdentifier: UUID, senderSequenceNumber: Int) throws -> Int { - guard let context = discussion.managedObjectContext else { throw makeError(message: "Could not find context") } - let request: NSFetchRequest = RemoteDeleteAndEditRequest.fetchRequest() - request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - Predicate.withPrimaryKey(discussion: discussion, senderIdentifier: senderIdentifier, senderThreadIdentifier: senderThreadIdentifier, senderSequenceNumber: senderSequenceNumber), - Predicate.moreRecentThanServerTimestamp(serverTimestamp), - ]) - return try context.count(for: request) - } - - - private static func deleteAllRequests(discussion: PersistedDiscussion, senderIdentifier: Data, senderThreadIdentifier: UUID, senderSequenceNumber: Int) throws { - guard let context = discussion.managedObjectContext else { throw makeError(message: "Could not find context") } - let request: NSFetchRequest = RemoteDeleteAndEditRequest.fetchRequest() - request.predicate = Predicate.withPrimaryKey(discussion: discussion, senderIdentifier: senderIdentifier, senderThreadIdentifier: senderThreadIdentifier, senderSequenceNumber: senderSequenceNumber) - let results = try context.fetch(request) - for result in results { - context.delete(result) - } - } - - - public static func getRemoteDeleteAndEditRequest(discussion: PersistedDiscussion, senderIdentifier: Data, senderThreadIdentifier: UUID, senderSequenceNumber: Int) throws -> RemoteDeleteAndEditRequest? { - guard let context = discussion.managedObjectContext else { throw makeError(message: "Could not find context") } - let request: NSFetchRequest = RemoteDeleteAndEditRequest.fetchRequest() - request.predicate = Predicate.withPrimaryKey(discussion: discussion, senderIdentifier: senderIdentifier, senderThreadIdentifier: senderThreadIdentifier, senderSequenceNumber: senderSequenceNumber) - let results = try context.fetch(request) - switch results.count { - case 0, 1: - return results.first - default: - // We expect 0 or 1 request in database - assertionFailure() - // In production, we return either a deletion request or the most recent edit request - return results.first(where: { $0.requestType == .delete }) ?? results.sorted(by: { $0.serverTimestamp > $1.serverTimestamp }).first - } - } - - - /// Deletes obsolete `RemoteDeleteAndEditRequest` instances, regardless of the owned identity or discussion. - public static func deleteRequestsOlderThanDate(_ date: Date, within context: NSManagedObjectContext) throws { - let request: NSFetchRequest = RemoteDeleteAndEditRequest.fetchRequest() - request.predicate = Predicate.olderThanServerTimestamp(date) - let batchDeleteRequest = NSBatchDeleteRequest(fetchRequest: request) - try context.execute(batchDeleteRequest) - } - - - public static func deleteOrphaned(within context: NSManagedObjectContext) throws { - let request: NSFetchRequest = RemoteDeleteAndEditRequest.fetchRequest() - request.predicate = Predicate.withoutAssociatedDiscussion - let batchDeleteRequest = NSBatchDeleteRequest(fetchRequest: request) - try context.execute(batchDeleteRequest) - } - -} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/RemoteRequestSavedForLater.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/RemoteRequestSavedForLater.swift new file mode 100644 index 00000000..0565e838 --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/RemoteRequestSavedForLater.swift @@ -0,0 +1,518 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import OlvidUtils +import ObvTypes + +@objc(RemoteRequestSavedForLater) +final class RemoteRequestSavedForLater: NSManagedObject { + + private static let entityName = "RemoteRequestSavedForLater" + + public enum RequestType: Int { + case delete = 0 + case edit = 1 + case reaction = 2 + } + + // MARK: Attributes + + @NSManaged private var rawRequesterIdentity: Data // Either the owned identity of the discussion, or one of her contacts + @NSManaged private var rawRequestType: Int + @NSManaged private var senderIdentifier: Data // From MessageReferenceJSON + @NSManaged private var senderSequenceNumber: Int // From MessageReferenceJSON + @NSManaged private var senderThreadIdentifier: UUID // From MessageReferenceJSON + @NSManaged private var serializedMessageJSON: Data? + @NSManaged private(set) var serverTimestamp: Date + + // MARK: Relationships + + @NSManaged private var discussion: PersistedDiscussion? // Expected to be non-nil + + // MARK: Other variables + + /// Expected to be non-nil + private(set) var requestType: RequestType? { + get { + RequestType(rawValue: rawRequestType) + } + set { + guard let newValue else { assertionFailure(); return } + self.rawRequestType = newValue.rawValue + } + } + + + /// Expected to be non-nil + private(set) var requesterCryptoId: ObvCryptoId? { + get { + try? ObvCryptoId(identity: rawRequesterIdentity) + } + set { + guard let newValue else { assertionFailure(); return } + self.rawRequesterIdentity = newValue.getIdentity() + } + } + + + // MARK: - Init + + private convenience init(requestType: RequestType, requesterCryptoId: ObvCryptoId, senderIdentifier: Data, senderSequenceNumber: Int, senderThreadIdentifier: UUID, serverTimestamp: Date, serializedMessageJSON: Data?, for discussion: PersistedDiscussion) throws { + + guard let context = discussion.managedObjectContext else { + throw ObvError.noContext + } + + let entityDescription = NSEntityDescription.entity(forEntityName: Self.entityName, in: context)! + self.init(entity: entityDescription, insertInto: context) + + self.requesterCryptoId = requesterCryptoId + self.requestType = requestType + self.senderIdentifier = senderIdentifier + self.senderSequenceNumber = senderSequenceNumber + self.senderThreadIdentifier = senderThreadIdentifier + self.serverTimestamp = serverTimestamp + self.serializedMessageJSON = serializedMessageJSON + + self.discussion = discussion + + } + + + /// This method is called after checking that the contact or the owned identity requesting the wipe is allowed to do so. + /// When creating a wipe request, we delete all other previous requests concering this message before inserting this wipe request. + static func createWipeOrDeleteRequest(requesterCryptoId: ObvCryptoId, messageReference: MessageReferenceJSON, serverTimestamp: Date, discussion: PersistedDiscussion) throws { + + try? deleteAllRemoteRequestsSavedForLater(for: messageReference, in: discussion) + + let _ = try RemoteRequestSavedForLater( + requestType: .delete, + requesterCryptoId: requesterCryptoId, + senderIdentifier: messageReference.senderIdentifier, + senderSequenceNumber: messageReference.senderSequenceNumber, + senderThreadIdentifier: messageReference.senderThreadIdentifier, + serverTimestamp: serverTimestamp, + serializedMessageJSON: nil, // Can be reconstructed + for: discussion) + + } + + + /// At this point, most checks have been made on the validity of the edit request. One (important) is missing: the fact that the requester is the creator of the message. This check will be performed when applying this request on receiving the message. + static func createEditRequest(requesterCryptoId: ObvCryptoId, updateMessageJSON: UpdateMessageJSON, serverTimestamp: Date, discussion: PersistedDiscussion) throws { + + let messageToEdit = updateMessageJSON.messageToEdit + + // If there exists a delete request for this message, we discard this edit request + + let deleteRequests = try RemoteRequestSavedForLater.fetchAllRemoteRequestsSavedForLater(for: messageToEdit, in: discussion, ofType: .delete) + guard deleteRequests.isEmpty else { + return + } + + // If there exist a more recent edit request, we discard this edit request + + let previousEditRequest = try RemoteRequestSavedForLater.fetchAllRemoteRequestsSavedForLater(for: messageToEdit, in: discussion, ofType: .edit) + guard !previousEditRequest.contains(where: { $0.serverTimestamp > serverTimestamp }) else { + return + } + + // At this point, we can save this request for later + + let serializedMessageJSON = try updateMessageJSON.jsonEncode() + + let _ = try RemoteRequestSavedForLater( + requestType: .edit, + requesterCryptoId: requesterCryptoId, + senderIdentifier: messageToEdit.senderIdentifier, + senderSequenceNumber: messageToEdit.senderSequenceNumber, + senderThreadIdentifier: messageToEdit.senderThreadIdentifier, + serverTimestamp: serverTimestamp, + serializedMessageJSON: serializedMessageJSON, + for: discussion) + + } + + + static func createSetOrUpdateReactionRequest(requesterCryptoId: ObvCryptoId, reactionJSON: ReactionJSON, serverTimestamp: Date, discussion: PersistedDiscussion) throws { + + let messageToEdit = reactionJSON.messageReference + + // If there exists a delete request for this message, we discard this edit request + + let deleteRequests = try RemoteRequestSavedForLater.fetchAllRemoteRequestsSavedForLater(for: messageToEdit, in: discussion, ofType: .delete) + guard deleteRequests.isEmpty else { + return + } + + // Save the request for later + + let serializedMessageJSON = try reactionJSON.jsonEncode() + + let _ = try RemoteRequestSavedForLater( + requestType: .reaction, + requesterCryptoId: requesterCryptoId, + senderIdentifier: messageToEdit.senderIdentifier, + senderSequenceNumber: messageToEdit.senderSequenceNumber, + senderThreadIdentifier: messageToEdit.senderThreadIdentifier, + serverTimestamp: serverTimestamp, + serializedMessageJSON: serializedMessageJSON, + for: discussion) + + } + + + + private func delete() throws { + guard let context = self.managedObjectContext else { + throw ObvError.noContext + } + context.delete(self) + } + + // MARK: - Applying remote requests saved for later on a newly created message + + private static var messagesForWhichWeHaveApplyiedRemoteRequestsSavedForLater = Set>() + + static func applyRemoteRequestsSavedForLater(for message: PersistedMessage) throws { + + guard !Self.messagesForWhichWeHaveApplyiedRemoteRequestsSavedForLater.contains(message.typedObjectID) else { + assertionFailure("Preventing an infinite loop") + return + } + + Self.messagesForWhichWeHaveApplyiedRemoteRequestsSavedForLater.insert(message.typedObjectID) + + guard let messageReference = message.toMessageReferenceJSON() else { + throw ObvError.couldNotDetermineMessageReferenceFromPersistedMessage + } + + guard let discussion = message.discussion else { + throw ObvError.discussionIsNil + } + + defer { + try? deleteAllRemoteRequestsSavedForLater(for: messageReference, in: discussion) + } + + // Fetch all remote requests concerning this message. The most recent is last in the returned array, so we can process them in order. + + let remoteRequestsSavedForLater = try fetchAllRemoteRequestsSavedForLater(for: messageReference, in: discussion) + + guard !remoteRequestsSavedForLater.isEmpty else { + return + } + + // If there is a delete request, we only process that request + + if let deleteOrWipeRequest = remoteRequestsSavedForLater.first(where: { $0.requestType == .delete }) { + + do { + try deleteOrWipeRequest.apply(to: message) + } catch { + try deleteOrWipeRequest.delete() + try applyRemoteRequestsSavedForLater(for: message) + return + } + + } + + // If we reach this point, there are not delete request. We can apply them in order + + for remoteRequestSavedForLater in remoteRequestsSavedForLater { + + try? remoteRequestSavedForLater.apply(to: message) + try? remoteRequestSavedForLater.delete() + + } + + } + + + private func apply(to message: PersistedMessage) throws { + + guard let context = message.managedObjectContext else { + throw ObvError.noContext + } + + guard let requestType = self.requestType else { + throw ObvError.couldNotDetermineRequestType + } + + guard let requesterCryptoId else { + throw ObvError.couldNotDetermineRequester + } + + guard let discussion = message.discussion else { + throw ObvError.discussionIsNil + } + + guard let discussionOwnedIdentity = discussion.ownedIdentity else { + throw ObvError.couldNotDetermineOwnedCryptoId + } + + let oneToOneIdentifier: OneToOneIdentifierJSON? = try (discussion as? PersistedOneToOneDiscussion)?.oneToOneIdentifier + + let groupIdentifier: GroupIdentifier? + if let group = (discussion as? PersistedGroupDiscussion)?.contactGroup { + let groupV1Identifier = try GroupV1Identifier(groupUid: group.groupUid, groupOwner: ObvCryptoId(identity: group.ownerIdentity)) + groupIdentifier = .groupV1(groupV1Identifier: groupV1Identifier) + } else if let group = (discussion as? PersistedGroupV2Discussion)?.group { + let groupV2Identifier = group.groupIdentifier + groupIdentifier = .groupV2(groupV2Identifier: groupV2Identifier) + } else { + groupIdentifier = nil + } + + guard (oneToOneIdentifier != nil || groupIdentifier != nil) && (oneToOneIdentifier == nil || groupIdentifier == nil) else { + assertionFailure() + throw ObvError.unexpectedIdentifiers + } + + if requesterCryptoId == discussionOwnedIdentity.cryptoId { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get( + cryptoId: requesterCryptoId, + within: context) else { + throw ObvError.couldNotDetermineOwnedIdentity + } + + switch requestType { + + case .delete: + + let deleteMessagesJSON = try DeleteMessagesJSON(persistedMessagesToDelete: [message]) + + _ = try ownedIdentity.processWipeMessageRequestFromOtherOwnedDevice( + deleteMessagesJSON: deleteMessagesJSON, + messageUploadTimestampFromServer: serverTimestamp) + + case .edit: + + guard let serializedMessageJSON else { + assertionFailure("Edit request *must* be stored") + throw ObvError.couldNotFindSerializedMessageJSON + } + + let updateMessageJSON = try UpdateMessageJSON.jsonDecode(serializedMessageJSON) + + _ = try ownedIdentity.processUpdateMessageRequestFromThisOwnedIdentity( + updateMessageJSON: updateMessageJSON, + messageUploadTimestampFromServer: serverTimestamp) + + case .reaction: + + guard let serializedMessageJSON else { + assertionFailure("Reaction request *must* be stored") + throw ObvError.couldNotFindSerializedMessageJSON + } + + let reactionJSON = try ReactionJSON.jsonDecode(serializedMessageJSON) + + _ = try ownedIdentity.processSetOrUpdateReactionOnMessageRequestFromThisOwnedIdentity( + reactionJSON: reactionJSON, + messageUploadTimestampFromServer: serverTimestamp) + + } + + } else { + + guard let contact = try PersistedObvContactIdentity.get( + contactCryptoId: requesterCryptoId, + ownedIdentityCryptoId: discussionOwnedIdentity.cryptoId, + whereOneToOneStatusIs: .any, + within: context) else { + throw ObvError.couldNotDeterminePersistedObvContact + } + + switch requestType { + + case .delete: + + let deleteMessagesJSON = try DeleteMessagesJSON(persistedMessagesToDelete: [message]) + + _ = try contact.processWipeMessageRequestFromThisContact( + deleteMessagesJSON: deleteMessagesJSON, + messageUploadTimestampFromServer: serverTimestamp) + + case .edit: + + guard let serializedMessageJSON else { + assertionFailure("Edit request *must* be stored") + throw ObvError.couldNotFindSerializedMessageJSON + } + + let updateMessageJSON = try UpdateMessageJSON.jsonDecode(serializedMessageJSON) + + _ = try contact.processUpdateMessageRequestFromThisContact( + updateMessageJSON: updateMessageJSON, + messageUploadTimestampFromServer: serverTimestamp) + + case .reaction: + + guard let serializedMessageJSON else { + assertionFailure("Reaction request *must* be stored") + throw ObvError.couldNotFindSerializedMessageJSON + } + + let reactionJSON = try ReactionJSON.jsonDecode(serializedMessageJSON) + + _ = try contact.processSetOrUpdateReactionOnMessageRequestFromThisContact( + reactionJSON: reactionJSON, + messageUploadTimestampFromServer: serverTimestamp) + + } + + } + + } + + + // MARK: - Convenience DB getters + + private struct Predicate { + enum Key: String { + // Attributes + case rawRequesterIdentity = "rawRequesterIdentity" + case rawRequestType = "rawRequestType" + case senderIdentifier = "senderIdentifier" + case senderSequenceNumber = "senderSequenceNumber" + case senderThreadIdentifier = "senderThreadIdentifier" + case serverTimestamp = "serverTimestamp" + // Relationships + case discussion = "discussion" + } + static func forMessageReference(_ messageReference: MessageReferenceJSON) -> NSPredicate { + NSCompoundPredicate(andPredicateWithSubpredicates: [ + NSPredicate(Key.senderSequenceNumber, EqualToInt: messageReference.senderSequenceNumber), + NSPredicate(Key.senderThreadIdentifier, EqualToUuid: messageReference.senderThreadIdentifier), + NSPredicate(Key.senderIdentifier, EqualToData: messageReference.senderIdentifier), + ]) + } + static func withinDiscussion(_ discussion: PersistedDiscussion) -> NSPredicate { + NSPredicate(Key.discussion, equalTo: discussion) + } + static func withRequestType(_ requestType: RequestType) -> NSPredicate { + NSPredicate(Key.rawRequestType, EqualToInt: requestType.rawValue) + } + static func withServerTimestamp(earlierThan date: Date) -> NSPredicate { + NSPredicate(Key.serverTimestamp, earlierThan: date) + } + } + + + @nonobjc static func fetchRequest() -> NSFetchRequest { + return NSFetchRequest(entityName: Self.entityName) + } + + + private static func deleteAllRemoteRequestsSavedForLater(for messageReference: MessageReferenceJSON, in discussion: PersistedDiscussion) throws { + let remoteRequestsSavedForLater = try fetchAllRemoteRequestsSavedForLater(for: messageReference, in: discussion) + remoteRequestsSavedForLater.forEach { remoteRequest in + try? remoteRequest.delete() + } + } + + + private static func fetchAllRemoteRequestsSavedForLater(for messageReference: MessageReferenceJSON, in discussion: PersistedDiscussion) throws -> [RemoteRequestSavedForLater] { + guard let context = discussion.managedObjectContext else { + throw ObvError.noContext + } + let request: NSFetchRequest = RemoteRequestSavedForLater.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.forMessageReference(messageReference), + Predicate.withinDiscussion(discussion), + ]) + request.sortDescriptors = [NSSortDescriptor(key: Predicate.Key.serverTimestamp.rawValue, ascending: true)] // Most recent last + request.fetchBatchSize = 1_000 + let remoteRequestsSavedForLater = try context.fetch(request) + return remoteRequestsSavedForLater + } + + + private static func fetchAllRemoteRequestsSavedForLater(for messageReference: MessageReferenceJSON, in discussion: PersistedDiscussion, ofType requestType: RequestType) throws -> [RemoteRequestSavedForLater] { + guard let context = discussion.managedObjectContext else { + throw ObvError.noContext + } + let request: NSFetchRequest = RemoteRequestSavedForLater.fetchRequest() + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Predicate.forMessageReference(messageReference), + Predicate.withinDiscussion(discussion), + Predicate.withRequestType(requestType), + ]) + request.sortDescriptors = [NSSortDescriptor(key: Predicate.Key.serverTimestamp.rawValue, ascending: true)] // Most recent last + request.fetchBatchSize = 1_000 + let remoteRequestsSavedForLater = try context.fetch(request) + return remoteRequestsSavedForLater + } + + + static func deleteRemoteRequestsSavedForLaterEarlierThan(_ deletionDate: Date, within context: NSManagedObjectContext) throws { + let request: NSFetchRequest = RemoteRequestSavedForLater.fetchRequest() + request.predicate = Predicate.withServerTimestamp(earlierThan: deletionDate) + let batchDeleteRequest = NSBatchDeleteRequest(fetchRequest: request) + _ = try context.execute(batchDeleteRequest) + } + + + // MARK: - ObvError + + enum ObvError: Error { + case noContext + case couldNotDetermineMessageReferenceFromPersistedMessage + case couldNotDetermineOwnedCryptoId + case couldNotDetermineRequestType + case couldNotDetermineRequester + case couldNotDeterminePersistedObvContact + case couldNotDetermineOwnedIdentity + case unexpectedIdentifiers + case couldNotFindSerializedMessageJSON + case discussionIsNil + + var localizedDescription: String { + switch self { + case .noContext: + return "No context" + case .couldNotDetermineMessageReferenceFromPersistedMessage: + return "Could not determine message reference from persisted message" + case .couldNotDetermineOwnedCryptoId: + return "Could not determine owned cryptoId" + case .couldNotDetermineRequestType: + return "Could not determine request type" + case .couldNotDetermineRequester: + return "Could not determine requester" + case .couldNotDeterminePersistedObvContact: + return "Could not determine contact" + case .couldNotDetermineOwnedIdentity: + return "Could not determine owned identity" + case .unexpectedIdentifiers: + return "Unexpected identifiers" + case .couldNotFindSerializedMessageJSON: + return "Could not find serialized message JSON" + case .discussionIsNil: + return "Discussion is nil" + } + } + + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedContactGroup+ThreadSafeStructure.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedContactGroup+ThreadSafeStructure.swift index b2aa0699..ed1aeafb 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedContactGroup+ThreadSafeStructure.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedContactGroup+ThreadSafeStructure.swift @@ -20,6 +20,7 @@ import Foundation import ObvCrypto import os.log +import ObvSettings // MARK: - Thread safe struct diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedDiscussionLocalConfiguration+ThreadSafeStruct.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedDiscussionLocalConfiguration+ThreadSafeStruct.swift index e4b4c90a..90fcd4b8 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedDiscussionLocalConfiguration+ThreadSafeStruct.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedDiscussionLocalConfiguration+ThreadSafeStruct.swift @@ -19,6 +19,7 @@ import Foundation import ObvTypes +import ObvSettings // MARK: - Thread safe struct diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedGroupV2+ThreadSafeStructure.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedGroupV2+ThreadSafeStructure.swift index 4da8b6b4..cb84da18 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedGroupV2+ThreadSafeStructure.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedGroupV2+ThreadSafeStructure.swift @@ -19,6 +19,7 @@ import Foundation import os.log +import ObvSettings // MARK: - Thread safe struct diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedMessage+ThreadSafeStructure.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedMessage+ThreadSafeStructure.swift index e9b4a212..e9dd75b8 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedMessage+ThreadSafeStructure.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedMessage+ThreadSafeStructure.swift @@ -41,6 +41,9 @@ extension PersistedMessage { } public func toAbstractStructure() throws -> AbstractStructure { + guard let discussion else { + throw ObvError.discussionIsNil + } let discussionKind = try discussion.toStructKind() let isPersistedMessageSent = self is PersistedMessageSent return AbstractStructure(objectPermanentID: self.messagePermanentID, diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedObvContactIdentity+ThreadSafeStructure.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedObvContactIdentity+ThreadSafeStructure.swift index 6a0160aa..2e900a5e 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedObvContactIdentity+ThreadSafeStructure.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedObvContactIdentity+ThreadSafeStructure.swift @@ -20,6 +20,7 @@ import Foundation import ObvTypes import os.log +import ObvSettings // MARK: - Thread safe struct diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedObvOwnedIdentity+ThreadSafeStructure.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedObvOwnedIdentity+ThreadSafeStructure.swift index 76fd6b13..b4b8148f 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedObvOwnedIdentity+ThreadSafeStructure.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/PersistedMessage/ThreadSafeStructures/PersistedObvOwnedIdentity+ThreadSafeStructure.swift @@ -21,6 +21,7 @@ import Foundation import ObvCrypto import ObvTypes import os.log +import ObvSettings // MARK: - Thread safe structure diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ReceivedFyleMessageJoinWithStatus.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ReceivedFyleMessageJoinWithStatus.swift index 5690f780..7baced28 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ReceivedFyleMessageJoinWithStatus.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/ReceivedFyleMessageJoinWithStatus.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,13 +20,16 @@ import Foundation import CoreData import CoreServices -import ObvEngine +import ObvTypes +import os.log +import ObvSettings @objc(ReceivedFyleMessageJoinWithStatus) public final class ReceivedFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, Identifiable { private static let entityName = "ReceivedFyleMessageJoinWithStatus" + private static let log = OSLog(subsystem: ObvUICoreDataConstants.logSubsystem, category: "ReceivedFyleMessageJoinWithStatus") public enum FyleStatus: Int { case downloadable = 0 @@ -37,7 +40,6 @@ public final class ReceivedFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, // MARK: Properties - @NSManaged public private(set) var downsizedThumbnail: Data? @NSManaged public private(set) var wasOpened: Bool // MARK: Relationships @@ -62,8 +64,9 @@ public final class ReceivedFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, // MARK: - Initializer - // Called when a fyle is already available - public convenience init(metadata: FyleMetadata, obvAttachment: ObvAttachment, within context: NSManagedObjectContext) throws { + private convenience init(obvAttachment: ObvAttachment, within context: NSManagedObjectContext) throws { + + let metadata = try FyleMetadata.jsonDecode(obvAttachment.metadata) guard let receivedMessage = try PersistedMessageReceived.get(messageIdentifierFromEngine: obvAttachment.messageIdentifier, from: obvAttachment.fromContactIdentity, @@ -73,62 +76,127 @@ public final class ReceivedFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, throw Self.makeError(message: "Trying to create a ReceivedFyleMessageJoinWithStatus for a wiped received message") } - // Pre-compute a few things - - let fyle: Fyle - do { - let _fyle = try Fyle.get(sha256: metadata.sha256, within: context) - guard _fyle != nil else { throw Self.makeError(message: "Could not get Fyle (1)") } - fyle = _fyle! + try self.init(sha256: metadata.sha256, + totalByteCount: 0, // Reset bellow + fileName: metadata.fileName, + uti: metadata.contentType.identifier, + rawStatus: FyleStatus.complete.rawValue, // Reset later + messageSortIndex: receivedMessage.sortIndex, + index: obvAttachment.number, + forEntityName: ReceivedFyleMessageJoinWithStatus.entityName, + within: context) + + guard let fyle else { + assertionFailure() + throw Self.makeError(message: "The fyle should have been created by the superclass initializer") } - - let rawStatus: Int - let totalByteCount: Int64 + if let fileSize = fyle.getFileSize() { - rawStatus = FyleStatus.complete.rawValue - totalByteCount = fileSize + self.rawStatus = FyleStatus.complete.rawValue + self.setTotalByteCount(to: fileSize) } else { - rawStatus = obvAttachment.downloadPaused ? FyleStatus.downloadable.rawValue : FyleStatus.downloading.rawValue - totalByteCount = obvAttachment.totalUnitCount + self.rawStatus = obvAttachment.downloadPaused ? FyleStatus.downloadable.rawValue : FyleStatus.downloading.rawValue + self.setTotalByteCount(to: obvAttachment.totalUnitCount) } - - // Call the superclass initializer - - self.init(totalByteCount: totalByteCount, - fileName: metadata.fileName, - uti: metadata.uti, - rawStatus: rawStatus, - messageSortIndex: receivedMessage.sortIndex, - index: obvAttachment.number, - fyle: fyle, - forEntityName: ReceivedFyleMessageJoinWithStatus.entityName, - within: context) // Set the remaining properties and relationships - self.downsizedThumbnail = nil self.receivedMessage = receivedMessage } + /// Returns `true` if the attachment is fully received, i.e., if the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + /// Also returns `true` if the attachment was cancelled by the server. + static func createOrUpdateReceivedFyleMessageJoinWithStatus(with obvAttachment: ObvAttachment, within context: NSManagedObjectContext) throws -> Bool { + + let join: ReceivedFyleMessageJoinWithStatus + if let previousJoin = try ReceivedFyleMessageJoinWithStatus.get(obvAttachment: obvAttachment, within: context) { + join = previousJoin + if join.fyle == nil { + assertionFailure("This is unexpected as the join should have been cascade deleted when the fyle was deleted") + let metadata = try FyleMetadata.jsonDecode(obvAttachment.metadata) + try join.getOrCreateFyle(sha256: metadata.sha256) + } + } else { + join = try Self.init( + obvAttachment: obvAttachment, + within: context) + assert(join.fyle != nil, "The fyle should have been created by the init of the superclass") + } + + let attachmentFullyReceivedOrCancelledByServer = try join.updateReceivedFyleMessageJoinWithStatus(with: obvAttachment) + + return attachmentFullyReceivedOrCancelledByServer + + } + + + /// Returns `true` if the attachment is fully received, i.e., if the `ReceivedFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk. + /// Also returns `true` if the attachment was cancelled by the server. + private func updateReceivedFyleMessageJoinWithStatus(with obvAttachment: ObvAttachment) throws -> Bool { + + // Update the status of the ReceivedFyleMessageJoinWithStatus depending on the status of the ObvAttachment + + var attachmentCancelledByServer = false + var attachmentFullyReceived = false + + switch obvAttachment.status { + + case .paused: + tryToSetStatusTo(.downloadable) + + case .resumed: + tryToSetStatusTo(.downloading) + + case .downloaded: + guard let fyle else { + assertionFailure("Could not find fyle although this join should have been cascade deleted when the fyle was deleted") + throw Self.makeError(message: "Could not find fyle") + } + try fyle.updateFyle(with: obvAttachment) + attachmentFullyReceived = (fyle.getFileSize() == totalByteCount) + if attachmentFullyReceived { + tryToSetStatusTo(.complete) + deleteDownsizedThumbnail() + } + + case .cancelledByServer: + tryToSetStatusTo(.cancelledByServer) + attachmentCancelledByServer = true + + case .markedForDeletion: + break + + } + + return attachmentFullyReceived || attachmentCancelledByServer + + } + + public override func wipe() throws { try super.wipe() tryToSetStatusTo(.complete) - deleteDownsizedThumbnail() } + + /// Set the downsized thumbnail if required. Returns `true` if this was the case, or `false` otherwise. + /// + /// Exclusively called from ``PersistedMessageReceived.saveExtendedPayload(foundIn:)``. + override func setDownsizedThumbnailIfRequired(data: Data) -> Bool { + assert(self.downsizedThumbnail == nil) + guard !isWiped else { assertionFailure(); return false } + guard requiresDownsizedThumbnail() else { return false } + return super.setDownsizedThumbnailIfRequired(data: data) + } + } // MARK: - Other methods extension ReceivedFyleMessageJoinWithStatus { - public func deleteDownsizedThumbnail() { - self.downsizedThumbnail = nil - } - - - public func tryToSetStatusTo(_ newStatus: FyleStatus) { + private func tryToSetStatusTo(_ newStatus: FyleStatus) { guard self.status != .complete else { return } self.rawStatus = newStatus.rawValue self.message?.setHasUpdate() @@ -140,6 +208,19 @@ extension ReceivedFyleMessageJoinWithStatus { } } + public func tryToSetStatusToCancelledByServer() { + tryToSetStatusTo(.cancelledByServer) + } + + public func tryToSetStatusToDownloading() { + tryToSetStatusTo(.downloading) + } + + public func tryToSetStatusToDownloadable() { + tryToSetStatusTo(.downloadable) + } + + public func markAsOpened() { guard !self.wasOpened else { return } self.wasOpened = true @@ -157,7 +238,7 @@ extension ReceivedFyleMessageJoinWithStatus { func attachementImage() -> NotificationAttachmentImage? { guard !receivedMessage.readingRequiresUserAction else { return nil } if let fyleElement = fyleElementOfReceivedJoin(), fyleElement.fullFileIsAvailable { - guard ObvUTIUtils.uti(fyleElement.uti, conformsTo: kUTTypeJPEG) else { return nil } + guard fyleElement.contentType.conforms(to: .jpeg) else { return nil } return .url(attachmentNumber: index, fyleElement.fyleURL) } else if let data = downsizedThumbnail { return .data(attachmentNumber: index, data) @@ -167,21 +248,11 @@ extension ReceivedFyleMessageJoinWithStatus { } // `true` if this join is not complete, or if the fyle is not completely available on disk - func requiresDownsizedThumbnail() -> Bool { + private func requiresDownsizedThumbnail() -> Bool { guard let fyle = self.fyle else { return true } return self.status != .complete || fyle.getFileSize() != self.totalByteCount } - /// Set the downsized thumbnail if required. Returns `true` if this was the case, or `false` otherwise. - public func setDownsizedThumbnailIfRequired(data: Data) -> Bool { - assert(self.downsizedThumbnail == nil) - guard !isWiped else { assertionFailure(); return false } - guard requiresDownsizedThumbnail() else { return false } - guard self.downsizedThumbnail != data else { return false } - self.downsizedThumbnail = data - return true - } - } @@ -234,10 +305,14 @@ extension ReceivedFyleMessageJoinWithStatus { } - public static func get(metadata: FyleMetadata, obvAttachment: ObvAttachment, within context: NSManagedObjectContext) throws -> ReceivedFyleMessageJoinWithStatus? { - guard let receivedMessage = try PersistedMessageReceived.get(messageIdentifierFromEngine: obvAttachment.messageIdentifier, - from: obvAttachment.fromContactIdentity, - within: context) else { throw makeError(message: "Could not find the associated PersistedMessageReceived") } + private static func get(obvAttachment: ObvAttachment, within context: NSManagedObjectContext) throws -> ReceivedFyleMessageJoinWithStatus? { + let metadata = try FyleMetadata.jsonDecode(obvAttachment.metadata) + guard let receivedMessage = try PersistedMessageReceived.get( + messageIdentifierFromEngine: obvAttachment.messageIdentifier, + from: obvAttachment.fromContactIdentity, + within: context) else { + throw makeError(message: "Could not find the associated PersistedMessageReceived") + } let request: NSFetchRequest = ReceivedFyleMessageJoinWithStatus.fetchRequest() request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ FyleMessageJoinWithStatus.Predicate.withSha256(metadata.sha256), @@ -249,7 +324,7 @@ extension ReceivedFyleMessageJoinWithStatus { } - public static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { + static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { let request: NSFetchRequest = ReceivedFyleMessageJoinWithStatus.fetchRequest() request.predicate = NSPredicate(format: "%K == NIL", Predicate.Key.receivedMessage.rawValue) let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) @@ -263,7 +338,16 @@ extension ReceivedFyleMessageJoinWithStatus { } -// Reacting to changes +// MARK: - Downcasting + +public extension TypeSafeManagedObjectID where T == ReceivedFyleMessageJoinWithStatus { + var downcast: TypeSafeManagedObjectID { + TypeSafeManagedObjectID(objectID: objectID) + } +} + + +// MARK: - Reacting to changes extension ReceivedFyleMessageJoinWithStatus { diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/SentFyleMessageJoinWithStatus.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/SentFyleMessageJoinWithStatus.swift index d0f1595c..45703301 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/SentFyleMessageJoinWithStatus.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Models/SentFyleMessageJoinWithStatus.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,7 +20,8 @@ import Foundation import CoreData import MobileCoreServices -import ObvEngine +import ObvTypes +import UniformTypeIdentifiers @objc(SentFyleMessageJoinWithStatus) public final class SentFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, Identifiable { @@ -37,6 +38,8 @@ public final class SentFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, Ide // MARK: Other variables + private var changedKeys = Set() + public private(set) var status: FyleStatus { get { return FyleStatus(rawValue: self.rawStatus)! @@ -59,12 +62,25 @@ public final class SentFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, Ide public override var message: PersistedMessage? { sentMessage } - public override var fullFileIsAvailable: Bool { !isWiped } + + public override var fullFileIsAvailable: Bool { + switch status { + case .uploadable, .uploading, .complete: + guard !isWiped else { return false } + guard let fyle, FileManager.default.fileExists(atPath: fyle.url.path) else { return false } + return true + case .downloadable, .downloading, .cancelledByServer: + return false + } + } public enum FyleStatus: Int { case uploadable = 0 case uploading = 1 - case complete = 2 + case complete = 2 // For both locally sent attachments and attachments sent from other device when fully downloaded + case downloadable = 3 // When sent from other owned device + case downloading = 4 // When sent from other owned device + case cancelledByServer = 5 // When sent from other owned device } public enum FyleReceptionStatus: Int { @@ -83,16 +99,11 @@ public final class SentFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, Ide guard let fyle = self.fyle else { return nil } - let uti: String - if let _uti = ObvUTIUtils.utiOfFile(withName: self.fileName) { - uti = _uti - } else { - uti = String(kUTTypeData) - } + let contentType = UTType(filenameExtension: (self.fileName as NSString).pathExtension) ?? .data return FyleMetadata(fileName: self.fileName, sha256: fyle.sha256, - uti: uti) + contentType: contentType) } @@ -100,28 +111,38 @@ public final class SentFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, Ide tryToSetStatusTo(.complete) } + // Non-nil iff the message was sent from another owned device + public var messageIdentifierFromEngine: Data? { + return sentMessage.messageIdentifierFromEngine + } // MARK: - Initializer - convenience init?(fyleJoin: FyleJoin, persistedMessageSentObjectID: TypeSafeManagedObjectID, within context: NSManagedObjectContext) { + convenience init(fyleJoin: FyleJoin, persistedMessageSentObjectID: TypeSafeManagedObjectID, within context: NSManagedObjectContext) throws { - guard let fyle = fyleJoin.fyle else { return nil } + guard let fyle = fyleJoin.fyle else { + assertionFailure() + throw Self.makeError(message: "No fyle available") + } // Pre-compute a few things - guard let persistedMessageSent = try? PersistedMessageSent.getPersistedMessageSent(objectID: persistedMessageSentObjectID, within: context) else { return nil } + guard let persistedMessageSent = try PersistedMessageSent.getPersistedMessageSent(objectID: persistedMessageSentObjectID, within: context) else { + assertionFailure() + throw Self.makeError(message: "Could not find PersistedMessageSent") + } // Call the superclass initializer - self.init(totalByteCount: fyle.getFileSize() ?? 0, - fileName: fyleJoin.fileName, - uti: fyleJoin.uti, - rawStatus: FyleStatus.uploadable.rawValue, - messageSortIndex: persistedMessageSent.sortIndex, - index: fyleJoin.index, - fyle: fyle, - forEntityName: SentFyleMessageJoinWithStatus.entityName, - within: context) + try self.init(sha256: fyle.sha256, + totalByteCount: fyle.getFileSize() ?? 0, + fileName: fyleJoin.fileName, + uti: fyleJoin.uti, + rawStatus: FyleStatus.uploadable.rawValue, + messageSortIndex: persistedMessageSent.sortIndex, + index: fyleJoin.index, + forEntityName: SentFyleMessageJoinWithStatus.entityName, + within: context) // Set the remaining properties and relationships @@ -129,6 +150,115 @@ public final class SentFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, Ide } + + /// Called when receiving an attachment sent from another owned device + private convenience init(obvOwnedAttachment: ObvOwnedAttachment, messageSent: PersistedMessageSent) throws { + + let metadata = try FyleMetadata.jsonDecode(obvOwnedAttachment.metadata) + + guard !messageSent.isWiped else { + throw Self.makeError(message: "Trying to create a SentFyleMessageJoinWithStatus for a wiped received message") + } + + guard let context = messageSent.managedObjectContext else { + throw ObvError.noContext + } + + try self.init(sha256: metadata.sha256, + totalByteCount: 0, // Reset bellow + fileName: metadata.fileName, + uti: metadata.contentType.identifier, + rawStatus: FyleStatus.downloadable.rawValue, + messageSortIndex: messageSent.sortIndex, + index: obvOwnedAttachment.number, + forEntityName: SentFyleMessageJoinWithStatus.entityName, + within: context) + + guard let fyle else { + assertionFailure() + throw Self.makeError(message: "The fyle should have been created by the superclass initializer") + } + + if let fileSize = fyle.getFileSize() { + self.rawStatus = FyleStatus.complete.rawValue + self.setTotalByteCount(to: fileSize) + } else { + self.rawStatus = obvOwnedAttachment.downloadPaused ? FyleStatus.downloadable.rawValue : FyleStatus.downloading.rawValue + self.setTotalByteCount(to: obvOwnedAttachment.totalUnitCount) + } + + // Set the remaining properties and relationships + + self.sentMessage = messageSent + + } + + + /// Returns `true` iff the attachment is cancelled or fully received (i.e., if the `SentFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk). + static func createOrUpdateSentFyleMessageJoinWithStatusFromOtherOwnedDevice(with obvOwnedAttachment: ObvOwnedAttachment, messageSent: PersistedMessageSent) throws -> Bool { + + let join: SentFyleMessageJoinWithStatus + if obvOwnedAttachment.number < messageSent.fyleMessageJoinWithStatuses.count { + let previousJoin = messageSent.fyleMessageJoinWithStatuses[obvOwnedAttachment.number] + join = previousJoin + if join.fyle == nil { + assertionFailure("This is unexpected as the join should have been cascade deleted when the fyle was deleted") + let metadata = try FyleMetadata.jsonDecode(obvOwnedAttachment.metadata) + try join.getOrCreateFyle(sha256: metadata.sha256) + } + } else { + join = try Self.init(obvOwnedAttachment: obvOwnedAttachment, + messageSent: messageSent) + assert(join.fyle != nil, "The fyle should have been created by the init of the superclass") + } + + let attachmentFullyReceivedOrCancelledByServer = try join.updateSentFyleMessageJoinWithStatusFromOtherOwnedDevice(with: obvOwnedAttachment) + + return attachmentFullyReceivedOrCancelledByServer + + } + + + /// Returns `true` iff the attachment is cancelled or fully received (i.e., if the `SentFyleMessageJoinWithStatus` status is `.complete` and if the `Fyle` has a full file on disk). + private func updateSentFyleMessageJoinWithStatusFromOtherOwnedDevice(with obvOwnedAttachment: ObvOwnedAttachment) throws -> Bool { + + // Update the status of the ReceivedFyleMessageJoinWithStatus depending on the status of the ObvAttachment + + var attachmentCancelledByServer = false + + switch obvOwnedAttachment.status { + case .paused: + tryToSetStatusTo(.downloadable) + case .resumed: + tryToSetStatusTo(.downloading) + case .downloaded: + tryToSetStatusTo(.complete) + case .cancelledByServer: + tryToSetStatusTo(.cancelledByServer) + attachmentCancelledByServer = true + case .markedForDeletion: + break + } + + guard let fyle else { + assertionFailure("Could not find fyle although this join should have been cascade deleted when the fyle was deleted") + throw Self.makeError(message: "Could not find fyle") + } + + try fyle.updateFyle(with: obvOwnedAttachment) + + // If the status is downloaded and the fyle is available, we can delete any existing downsized preview + + let attachmentFullyReceived = (status == .complete) && (fyle.getFileSize() == totalByteCount) + + if attachmentFullyReceived { + deleteDownsizedThumbnail() + } + + return attachmentFullyReceived || attachmentCancelledByServer + + } + public func fyleElementOfSentJoin() -> FyleElement? { try? FyleElementForFyleMessageJoinWithStatus.init(self) @@ -158,6 +288,24 @@ public final class SentFyleMessageJoinWithStatus: FyleMessageJoinWithStatus, Ide self.receptionStatus = newReceptionStatus } + + /// Set the downsized thumbnail if required. Returns `true` if this was the case, or `false` otherwise. + /// + /// Exclusively called from ``PersistedMessageReceived.saveExtendedPayload(foundIn:)``. + override func setDownsizedThumbnailIfRequired(data: Data) -> Bool { + assert(self.downsizedThumbnail == nil) + guard !isWiped else { assertionFailure(); return false } + guard requiresDownsizedThumbnail() else { return false } + return super.setDownsizedThumbnailIfRequired(data: data) + } + + + // `true` if this join is not complete, or if the fyle is not completely available on disk + private func requiresDownsizedThumbnail() -> Bool { + guard let fyle = self.fyle else { return true } + return self.status != .complete || fyle.getFileSize() != self.totalByteCount + } + } @@ -186,6 +334,7 @@ extension SentFyleMessageJoinWithStatus { struct Predicate { enum Key: String { + case rawReceptionStatus = "rawReceptionStatus" case sentMessage = "sentMessage" } static var isIncomplete: NSPredicate { @@ -200,22 +349,78 @@ extension SentFyleMessageJoinWithStatus { return NSFetchRequest(entityName: SentFyleMessageJoinWithStatus.entityName) } - static func getSentFyleMessageJoinWithStatus(objectID: NSManagedObjectID, within context: NSManagedObjectContext) -> SentFyleMessageJoinWithStatus? { - let sentFyleMessageJoinWithStatus: SentFyleMessageJoinWithStatus - do { - guard let res = try context.existingObject(with: objectID) as? SentFyleMessageJoinWithStatus else { throw Self.makeError(message: "Could not find SentFyleMessageJoinWithStatus") } - sentFyleMessageJoinWithStatus = res - } catch { - return nil - } - return sentFyleMessageJoinWithStatus + public static func getSentFyleMessageJoinWithStatus(objectID: NSManagedObjectID, within context: NSManagedObjectContext) throws -> SentFyleMessageJoinWithStatus? { + return try context.existingObject(with: objectID) as? SentFyleMessageJoinWithStatus } - public static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { + static func deleteAllOrphaned(within context: NSManagedObjectContext) throws { let request: NSFetchRequest = SentFyleMessageJoinWithStatus.fetchRequest() request.predicate = Predicate.withoutSentMessage let deleteRequest = NSBatchDeleteRequest(fetchRequest: request) try context.execute(deleteRequest) } } + + +// MARK: - Errors + +extension SentFyleMessageJoinWithStatus { + + public enum ObvError: LocalizedError { + + case noContext + + public var errorDescription: String? { + switch self { + case .noContext: + return "No context" + } + } + + } + +} + + +// MARK: - Downcasting + +public extension TypeSafeManagedObjectID where T == SentFyleMessageJoinWithStatus { + var downcast: TypeSafeManagedObjectID { + TypeSafeManagedObjectID(objectID: objectID) + } +} + + +// MARK: - Notifying on changes + +extension SentFyleMessageJoinWithStatus { + + public override func willSave() { + super.willSave() + if !isInserted, !isDeleted, isUpdated { + changedKeys = Set(self.changedValues().keys) + } + } + + + public override func didSave() { + super.didSave() + + defer { + self.changedKeys.removeAll() + } + + if !isDeleted, changedKeys.contains(PersistedMessage.Predicate.Key.rawStatus.rawValue), let discussion = self.sentMessage.discussion { + let messageID = self.sentMessage.typedObjectID + let discussionID = discussion.typedObjectID + ObvMessengerCoreDataNotification.statusOfSentFyleMessageJoinDidChange( + sentJoinID: self.typedObjectID, + messageID: messageID, + discussionID: discussionID) + .postOnDispatchQueue() + } + + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Notification/ObvMessengerCoreDataNotification.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Notification/ObvMessengerCoreDataNotification.swift index 91ff152c..f1b64c9c 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Notification/ObvMessengerCoreDataNotification.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Notification/ObvMessengerCoreDataNotification.swift @@ -22,7 +22,7 @@ import CoreData import ObvEngine import ObvCrypto import ObvTypes -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials fileprivate struct OptionalWrapper { let value: T? @@ -37,9 +37,8 @@ fileprivate struct OptionalWrapper { public enum ObvMessengerCoreDataNotification { case newDraftToSend(draftPermanentID: ObvManagedObjectPermanentID) case draftWasSent(persistedDraftObjectID: TypeSafeManagedObjectID) - case persistedMessageHasNewMetadata(persistedMessageObjectID: NSManagedObjectID) case newOrUpdatedPersistedInvitation(concernedOwnedIdentityIsHidden: Bool, obvDialog: ObvDialog, persistedInvitationUUID: UUID) - case persistedContactWasInserted(contactPermanentID: ObvManagedObjectPermanentID) + case persistedContactWasInserted(contactPermanentID: ObvManagedObjectPermanentID, ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) case persistedContactWasDeleted(objectID: NSManagedObjectID, identity: Data) case persistedContactHasNewCustomDisplayName(contactCryptoId: ObvCryptoId) case persistedContactHasNewStatus(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) @@ -53,16 +52,15 @@ public enum ObvMessengerCoreDataNotification { case deletedPersistedObvContactDevice(contactCryptoId: ObvCryptoId) case persistedDiscussionHasNewTitle(objectID: TypeSafeManagedObjectID, title: String) case persistedDiscussionWasDeleted(discussionPermanentID: ObvManagedObjectPermanentID, objectIDOfDeletedDiscussion: TypeSafeManagedObjectID) - case persistedDiscussionWasInserted(discussionPermanentID: ObvManagedObjectPermanentID, objectID: TypeSafeManagedObjectID) + case persistedDiscussionWasInsertedOrReactivated(ownedCryptoId: ObvCryptoId, discussionIdentifier: DiscussionIdentifier) case newPersistedObvOwnedIdentity(ownedCryptoId: ObvCryptoId, isActive: Bool) case ownedIdentityWasReactivated(ownedIdentityObjectID: NSManagedObjectID) case ownedIdentityWasDeactivated(ownedIdentityObjectID: NSManagedObjectID) - case anOldDiscussionSharedConfigurationWasReceived(persistedDiscussionObjectID: NSManagedObjectID) case persistedMessageSystemWasDeleted(objectID: NSManagedObjectID, discussionObjectID: TypeSafeManagedObjectID) case persistedMessagesWereDeleted(discussionPermanentID: ObvManagedObjectPermanentID, messagePermanentIDs: Set>) case persistedMessagesWereWiped(discussionPermanentID: ObvManagedObjectPermanentID, messagePermanentIDs: Set>) case persistedDiscussionStatusChanged(discussionPermanentID: ObvManagedObjectPermanentID, newStatus: PersistedDiscussion.Status) - case persistedGroupV2UpdateIsFinished(objectID: TypeSafeManagedObjectID) + case persistedGroupV2UpdateIsFinished(objectID: TypeSafeManagedObjectID, ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV2Identifier) case persistedGroupV2WasDeleted(objectID: TypeSafeManagedObjectID) case aPersistedGroupV2MemberChangedFromPendingToNonPending(contactObjectID: TypeSafeManagedObjectID) case ownedCircledInitialsConfigurationDidChange(ownedIdentityPermanentID: ObvManagedObjectPermanentID, ownedCryptoId: ObvCryptoId, newOwnedCircledInitialsConfiguration: CircledInitialsConfiguration) @@ -70,7 +68,7 @@ public enum ObvMessengerCoreDataNotification { case ownedIdentityHiddenStatusChanged(ownedCryptoId: ObvCryptoId, isHidden: Bool) case badgeCountForDiscussionsOrInvitationsTabChangedForOwnedIdentity(ownedCryptoId: ObvCryptoId) case displayedContactGroupWasJustCreated(permanentID: ObvManagedObjectPermanentID) - case groupV2TrustedDetailsShouldBeReplacedByPublishedDetails(ownCryptoId: ObvCryptoId, groupIdentifier: Data) + case groupV2TrustedDetailsShouldBeReplacedByPublishedDetails(ownCryptoId: ObvCryptoId, groupIdentifier: GroupV2Identifier) case receivedFyleJoinHasBeenMarkAsOpened(receivedFyleJoinID: TypeSafeManagedObjectID) case aDeliveredReturnReceiptShouldBeSentForAReceivedFyleMessageJoinWithStatus(returnReceipt: ReturnReceiptJSON, contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int) case persistedMessageReceivedWasDeleted(objectID: NSManagedObjectID, messageIdentifierFromEngine: Data, ownedCryptoId: ObvCryptoId, sortIndex: Double, discussionObjectID: TypeSafeManagedObjectID) @@ -82,11 +80,13 @@ public enum ObvMessengerCoreDataNotification { case fyleMessageJoinWithStatusWasInserted(fyleMessageJoinObjectID: TypeSafeManagedObjectID) case fyleMessageJoinWithStatusWasUpdated(fyleMessageJoinObjectID: TypeSafeManagedObjectID) case discussionLocalConfigurationHasBeenUpdated(newValue: PersistedDiscussionLocalConfigurationValue, localConfigurationObjectID: TypeSafeManagedObjectID) + case statusOfSentFyleMessageJoinDidChange(sentJoinID: TypeSafeManagedObjectID, messageID: TypeSafeManagedObjectID, discussionID: TypeSafeManagedObjectID) + case aSecureChannelWithContactDeviceWasJustCreated(contactDeviceObjectID: TypeSafeManagedObjectID) + case aPersistedGroupV2WasInsertedInDatabase(ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV2Identifier) private enum Name { case newDraftToSend case draftWasSent - case persistedMessageHasNewMetadata case newOrUpdatedPersistedInvitation case persistedContactWasInserted case persistedContactWasDeleted @@ -102,11 +102,10 @@ public enum ObvMessengerCoreDataNotification { case deletedPersistedObvContactDevice case persistedDiscussionHasNewTitle case persistedDiscussionWasDeleted - case persistedDiscussionWasInserted + case persistedDiscussionWasInsertedOrReactivated case newPersistedObvOwnedIdentity case ownedIdentityWasReactivated case ownedIdentityWasDeactivated - case anOldDiscussionSharedConfigurationWasReceived case persistedMessageSystemWasDeleted case persistedMessagesWereDeleted case persistedMessagesWereWiped @@ -131,6 +130,9 @@ public enum ObvMessengerCoreDataNotification { case fyleMessageJoinWithStatusWasInserted case fyleMessageJoinWithStatusWasUpdated case discussionLocalConfigurationHasBeenUpdated + case statusOfSentFyleMessageJoinDidChange + case aSecureChannelWithContactDeviceWasJustCreated + case aPersistedGroupV2WasInsertedInDatabase private var namePrefix: String { String(describing: ObvMessengerCoreDataNotification.self) } @@ -145,7 +147,6 @@ public enum ObvMessengerCoreDataNotification { switch notification { case .newDraftToSend: return Name.newDraftToSend.name case .draftWasSent: return Name.draftWasSent.name - case .persistedMessageHasNewMetadata: return Name.persistedMessageHasNewMetadata.name case .newOrUpdatedPersistedInvitation: return Name.newOrUpdatedPersistedInvitation.name case .persistedContactWasInserted: return Name.persistedContactWasInserted.name case .persistedContactWasDeleted: return Name.persistedContactWasDeleted.name @@ -161,11 +162,10 @@ public enum ObvMessengerCoreDataNotification { case .deletedPersistedObvContactDevice: return Name.deletedPersistedObvContactDevice.name case .persistedDiscussionHasNewTitle: return Name.persistedDiscussionHasNewTitle.name case .persistedDiscussionWasDeleted: return Name.persistedDiscussionWasDeleted.name - case .persistedDiscussionWasInserted: return Name.persistedDiscussionWasInserted.name + case .persistedDiscussionWasInsertedOrReactivated: return Name.persistedDiscussionWasInsertedOrReactivated.name case .newPersistedObvOwnedIdentity: return Name.newPersistedObvOwnedIdentity.name case .ownedIdentityWasReactivated: return Name.ownedIdentityWasReactivated.name case .ownedIdentityWasDeactivated: return Name.ownedIdentityWasDeactivated.name - case .anOldDiscussionSharedConfigurationWasReceived: return Name.anOldDiscussionSharedConfigurationWasReceived.name case .persistedMessageSystemWasDeleted: return Name.persistedMessageSystemWasDeleted.name case .persistedMessagesWereDeleted: return Name.persistedMessagesWereDeleted.name case .persistedMessagesWereWiped: return Name.persistedMessagesWereWiped.name @@ -190,6 +190,9 @@ public enum ObvMessengerCoreDataNotification { case .fyleMessageJoinWithStatusWasInserted: return Name.fyleMessageJoinWithStatusWasInserted.name case .fyleMessageJoinWithStatusWasUpdated: return Name.fyleMessageJoinWithStatusWasUpdated.name case .discussionLocalConfigurationHasBeenUpdated: return Name.discussionLocalConfigurationHasBeenUpdated.name + case .statusOfSentFyleMessageJoinDidChange: return Name.statusOfSentFyleMessageJoinDidChange.name + case .aSecureChannelWithContactDeviceWasJustCreated: return Name.aSecureChannelWithContactDeviceWasJustCreated.name + case .aPersistedGroupV2WasInsertedInDatabase: return Name.aPersistedGroupV2WasInsertedInDatabase.name } } } @@ -204,19 +207,17 @@ public enum ObvMessengerCoreDataNotification { info = [ "persistedDraftObjectID": persistedDraftObjectID, ] - case .persistedMessageHasNewMetadata(persistedMessageObjectID: let persistedMessageObjectID): - info = [ - "persistedMessageObjectID": persistedMessageObjectID, - ] case .newOrUpdatedPersistedInvitation(concernedOwnedIdentityIsHidden: let concernedOwnedIdentityIsHidden, obvDialog: let obvDialog, persistedInvitationUUID: let persistedInvitationUUID): info = [ "concernedOwnedIdentityIsHidden": concernedOwnedIdentityIsHidden, "obvDialog": obvDialog, "persistedInvitationUUID": persistedInvitationUUID, ] - case .persistedContactWasInserted(contactPermanentID: let contactPermanentID): + case .persistedContactWasInserted(contactPermanentID: let contactPermanentID, ownedCryptoId: let ownedCryptoId, contactCryptoId: let contactCryptoId): info = [ "contactPermanentID": contactPermanentID, + "ownedCryptoId": ownedCryptoId, + "contactCryptoId": contactCryptoId, ] case .persistedContactWasDeleted(objectID: let objectID, identity: let identity): info = [ @@ -279,10 +280,10 @@ public enum ObvMessengerCoreDataNotification { "discussionPermanentID": discussionPermanentID, "objectIDOfDeletedDiscussion": objectIDOfDeletedDiscussion, ] - case .persistedDiscussionWasInserted(discussionPermanentID: let discussionPermanentID, objectID: let objectID): + case .persistedDiscussionWasInsertedOrReactivated(ownedCryptoId: let ownedCryptoId, discussionIdentifier: let discussionIdentifier): info = [ - "discussionPermanentID": discussionPermanentID, - "objectID": objectID, + "ownedCryptoId": ownedCryptoId, + "discussionIdentifier": discussionIdentifier, ] case .newPersistedObvOwnedIdentity(ownedCryptoId: let ownedCryptoId, isActive: let isActive): info = [ @@ -297,10 +298,6 @@ public enum ObvMessengerCoreDataNotification { info = [ "ownedIdentityObjectID": ownedIdentityObjectID, ] - case .anOldDiscussionSharedConfigurationWasReceived(persistedDiscussionObjectID: let persistedDiscussionObjectID): - info = [ - "persistedDiscussionObjectID": persistedDiscussionObjectID, - ] case .persistedMessageSystemWasDeleted(objectID: let objectID, discussionObjectID: let discussionObjectID): info = [ "objectID": objectID, @@ -321,9 +318,11 @@ public enum ObvMessengerCoreDataNotification { "discussionPermanentID": discussionPermanentID, "newStatus": newStatus, ] - case .persistedGroupV2UpdateIsFinished(objectID: let objectID): + case .persistedGroupV2UpdateIsFinished(objectID: let objectID, ownedCryptoId: let ownedCryptoId, groupIdentifier: let groupIdentifier): info = [ "objectID": objectID, + "ownedCryptoId": ownedCryptoId, + "groupIdentifier": groupIdentifier, ] case .persistedGroupV2WasDeleted(objectID: let objectID): info = [ @@ -415,6 +414,21 @@ public enum ObvMessengerCoreDataNotification { "newValue": newValue, "localConfigurationObjectID": localConfigurationObjectID, ] + case .statusOfSentFyleMessageJoinDidChange(sentJoinID: let sentJoinID, messageID: let messageID, discussionID: let discussionID): + info = [ + "sentJoinID": sentJoinID, + "messageID": messageID, + "discussionID": discussionID, + ] + case .aSecureChannelWithContactDeviceWasJustCreated(contactDeviceObjectID: let contactDeviceObjectID): + info = [ + "contactDeviceObjectID": contactDeviceObjectID, + ] + case .aPersistedGroupV2WasInsertedInDatabase(ownedCryptoId: let ownedCryptoId, groupIdentifier: let groupIdentifier): + info = [ + "ownedCryptoId": ownedCryptoId, + "groupIdentifier": groupIdentifier, + ] } return info } @@ -460,14 +474,6 @@ public enum ObvMessengerCoreDataNotification { } } - public static func observePersistedMessageHasNewMetadata(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (NSManagedObjectID) -> Void) -> NSObjectProtocol { - let name = Name.persistedMessageHasNewMetadata.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let persistedMessageObjectID = notification.userInfo!["persistedMessageObjectID"] as! NSManagedObjectID - block(persistedMessageObjectID) - } - } - public static func observeNewOrUpdatedPersistedInvitation(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (Bool, ObvDialog, UUID) -> Void) -> NSObjectProtocol { let name = Name.newOrUpdatedPersistedInvitation.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in @@ -478,11 +484,13 @@ public enum ObvMessengerCoreDataNotification { } } - public static func observePersistedContactWasInserted(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvManagedObjectPermanentID) -> Void) -> NSObjectProtocol { + public static func observePersistedContactWasInserted(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvManagedObjectPermanentID, ObvCryptoId, ObvCryptoId) -> Void) -> NSObjectProtocol { let name = Name.persistedContactWasInserted.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in let contactPermanentID = notification.userInfo!["contactPermanentID"] as! ObvManagedObjectPermanentID - block(contactPermanentID) + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let contactCryptoId = notification.userInfo!["contactCryptoId"] as! ObvCryptoId + block(contactPermanentID, ownedCryptoId, contactCryptoId) } } @@ -599,12 +607,12 @@ public enum ObvMessengerCoreDataNotification { } } - public static func observePersistedDiscussionWasInserted(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvManagedObjectPermanentID, TypeSafeManagedObjectID) -> Void) -> NSObjectProtocol { - let name = Name.persistedDiscussionWasInserted.name + public static func observePersistedDiscussionWasInsertedOrReactivated(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, DiscussionIdentifier) -> Void) -> NSObjectProtocol { + let name = Name.persistedDiscussionWasInsertedOrReactivated.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let discussionPermanentID = notification.userInfo!["discussionPermanentID"] as! ObvManagedObjectPermanentID - let objectID = notification.userInfo!["objectID"] as! TypeSafeManagedObjectID - block(discussionPermanentID, objectID) + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let discussionIdentifier = notification.userInfo!["discussionIdentifier"] as! DiscussionIdentifier + block(ownedCryptoId, discussionIdentifier) } } @@ -633,14 +641,6 @@ public enum ObvMessengerCoreDataNotification { } } - public static func observeAnOldDiscussionSharedConfigurationWasReceived(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (NSManagedObjectID) -> Void) -> NSObjectProtocol { - let name = Name.anOldDiscussionSharedConfigurationWasReceived.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let persistedDiscussionObjectID = notification.userInfo!["persistedDiscussionObjectID"] as! NSManagedObjectID - block(persistedDiscussionObjectID) - } - } - public static func observePersistedMessageSystemWasDeleted(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (NSManagedObjectID, TypeSafeManagedObjectID) -> Void) -> NSObjectProtocol { let name = Name.persistedMessageSystemWasDeleted.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in @@ -677,11 +677,13 @@ public enum ObvMessengerCoreDataNotification { } } - public static func observePersistedGroupV2UpdateIsFinished(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (TypeSafeManagedObjectID) -> Void) -> NSObjectProtocol { + public static func observePersistedGroupV2UpdateIsFinished(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (TypeSafeManagedObjectID, ObvCryptoId, GroupV2Identifier) -> Void) -> NSObjectProtocol { let name = Name.persistedGroupV2UpdateIsFinished.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in let objectID = notification.userInfo!["objectID"] as! TypeSafeManagedObjectID - block(objectID) + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let groupIdentifier = notification.userInfo!["groupIdentifier"] as! GroupV2Identifier + block(objectID, ownedCryptoId, groupIdentifier) } } @@ -743,11 +745,11 @@ public enum ObvMessengerCoreDataNotification { } } - public static func observeGroupV2TrustedDetailsShouldBeReplacedByPublishedDetails(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Data) -> Void) -> NSObjectProtocol { + public static func observeGroupV2TrustedDetailsShouldBeReplacedByPublishedDetails(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, GroupV2Identifier) -> Void) -> NSObjectProtocol { let name = Name.groupV2TrustedDetailsShouldBeReplacedByPublishedDetails.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in let ownCryptoId = notification.userInfo!["ownCryptoId"] as! ObvCryptoId - let groupIdentifier = notification.userInfo!["groupIdentifier"] as! Data + let groupIdentifier = notification.userInfo!["groupIdentifier"] as! GroupV2Identifier block(ownCryptoId, groupIdentifier) } } @@ -852,4 +854,31 @@ public enum ObvMessengerCoreDataNotification { } } + public static func observeStatusOfSentFyleMessageJoinDidChange(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (TypeSafeManagedObjectID, TypeSafeManagedObjectID, TypeSafeManagedObjectID) -> Void) -> NSObjectProtocol { + let name = Name.statusOfSentFyleMessageJoinDidChange.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let sentJoinID = notification.userInfo!["sentJoinID"] as! TypeSafeManagedObjectID + let messageID = notification.userInfo!["messageID"] as! TypeSafeManagedObjectID + let discussionID = notification.userInfo!["discussionID"] as! TypeSafeManagedObjectID + block(sentJoinID, messageID, discussionID) + } + } + + public static func observeASecureChannelWithContactDeviceWasJustCreated(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (TypeSafeManagedObjectID) -> Void) -> NSObjectProtocol { + let name = Name.aSecureChannelWithContactDeviceWasJustCreated.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let contactDeviceObjectID = notification.userInfo!["contactDeviceObjectID"] as! TypeSafeManagedObjectID + block(contactDeviceObjectID) + } + } + + public static func observeAPersistedGroupV2WasInsertedInDatabase(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, GroupV2Identifier) -> Void) -> NSObjectProtocol { + let name = Name.aPersistedGroupV2WasInsertedInDatabase.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let groupIdentifier = notification.userInfo!["groupIdentifier"] as! GroupV2Identifier + block(ownedCryptoId, groupIdentifier) + } + } + } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Notification/ObvMessengerCoreDataNotification.yml b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Notification/ObvMessengerCoreDataNotification.yml deleted file mode 100644 index 21a3b913..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Notification/ObvMessengerCoreDataNotification.yml +++ /dev/null @@ -1,182 +0,0 @@ -import: - - Foundation - - CoreData - - ObvEngine - - ObvCrypto - - ObvTypes - - UI_CircledInitialsView_CircledInitialsConfiguration -options: - - {key: visibility, value: public} -notifications: -- name: newDraftToSend - params: - - {name: draftPermanentID, type: ObvManagedObjectPermanentID} -- name: draftWasSent - params: - - {name: persistedDraftObjectID, type: TypeSafeManagedObjectID} -- name: persistedMessageHasNewMetadata - params: - - {name: persistedMessageObjectID, type: NSManagedObjectID} -- name: newOrUpdatedPersistedInvitation - params: - - {name: concernedOwnedIdentityIsHidden, type: Bool} - - {name: obvDialog, type: ObvDialog} - - {name: persistedInvitationUUID, type: UUID} -- name: persistedContactWasInserted - params: - - {name: contactPermanentID, type: ObvManagedObjectPermanentID} -- name: persistedContactWasDeleted - params: - - {name: objectID, type: NSManagedObjectID} - - {name: identity, type: Data} -- name: persistedContactHasNewCustomDisplayName - params: - - {name: contactCryptoId, type: ObvCryptoId} -- name: persistedContactHasNewStatus - params: - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: persistedContactIsActiveChanged - params: - - {name: contactID, type: TypeSafeManagedObjectID} -- name: newMessageExpiration - params: - - {name: expirationDate, type: Date} -- name: persistedMessageReactionReceivedWasDeletedOnSentMessage - params: - - {name: messagePermanentID, type: ObvManagedObjectPermanentID} - - {name: contactPermanentID, type: ObvManagedObjectPermanentID} -- name: persistedMessageReactionReceivedWasInsertedOrUpdated - params: - - {name: objectID, type: TypeSafeManagedObjectID} -- name: persistedContactGroupHasUpdatedContactIdentities - params: - - {name: persistedContactGroupObjectID, type: NSManagedObjectID} - - {name: insertedContacts, type: Set} - - {name: removedContacts, type: Set} -- name: aReadOncePersistedMessageSentWasSent - params: - - {name: persistedMessageSentPermanentID, type: ObvManagedObjectPermanentID} - - {name: persistedDiscussionPermanentID, type: ObvManagedObjectPermanentID} -- name: newPersistedObvContactDevice - params: - - {name: contactDeviceObjectID, type: NSManagedObjectID} - - {name: contactCryptoId, type: ObvCryptoId} -- name: deletedPersistedObvContactDevice - params: - - {name: contactCryptoId, type: ObvCryptoId} -- name: persistedDiscussionHasNewTitle - params: - - {name: objectID, type: TypeSafeManagedObjectID} - - {name: title, type: String} -- name: persistedDiscussionWasDeleted - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: objectIDOfDeletedDiscussion, type: TypeSafeManagedObjectID} -- name: persistedDiscussionWasInserted - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: objectID, type: TypeSafeManagedObjectID} -- name: newPersistedObvOwnedIdentity - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: isActive, type: Bool} -- name: ownedIdentityWasReactivated - params: - - {name: ownedIdentityObjectID, type: NSManagedObjectID} -- name: ownedIdentityWasDeactivated - params: - - {name: ownedIdentityObjectID, type: NSManagedObjectID} -- name: anOldDiscussionSharedConfigurationWasReceived - params: - - {name: persistedDiscussionObjectID, type: NSManagedObjectID} -- name: persistedMessageSystemWasDeleted - params: - - {name: objectID, type: NSManagedObjectID} - - {name: discussionObjectID, type: TypeSafeManagedObjectID} -- name: persistedMessagesWereDeleted - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: messagePermanentIDs, type: Set>} -- name: persistedMessagesWereWiped - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: messagePermanentIDs, type: Set>} -- name: persistedDiscussionStatusChanged - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: newStatus, type: PersistedDiscussion.Status} -- name: persistedGroupV2UpdateIsFinished - params: - - {name: objectID, type: TypeSafeManagedObjectID} -- name: persistedGroupV2WasDeleted - params: - - {name: objectID, type: TypeSafeManagedObjectID} -- name: aPersistedGroupV2MemberChangedFromPendingToNonPending - params: - - {name: contactObjectID, type: TypeSafeManagedObjectID} -- name: ownedCircledInitialsConfigurationDidChange - params: - - {name: ownedIdentityPermanentID, type: ObvManagedObjectPermanentID} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: newOwnedCircledInitialsConfiguration, type: CircledInitialsConfiguration} -- name: persistedObvOwnedIdentityWasDeleted -- name: ownedIdentityHiddenStatusChanged - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: isHidden, type: Bool} -- name: badgeCountForDiscussionsOrInvitationsTabChangedForOwnedIdentity - params: - - {name: ownedCryptoId, type: ObvCryptoId} -- name: displayedContactGroupWasJustCreated - params: - - {name: permanentID, type: ObvManagedObjectPermanentID} -- name: groupV2TrustedDetailsShouldBeReplacedByPublishedDetails - params: - - {name: ownCryptoId, type: ObvCryptoId} - - {name: groupIdentifier, type: Data} -- name: receivedFyleJoinHasBeenMarkAsOpened - params: - - {name: receivedFyleJoinID, type: TypeSafeManagedObjectID} -- name: aDeliveredReturnReceiptShouldBeSentForAReceivedFyleMessageJoinWithStatus - params: - - {name: returnReceipt, type: ReturnReceiptJSON} - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: messageIdentifierFromEngine, type: Data} - - {name: attachmentNumber, type: Int} -- name: persistedMessageReceivedWasDeleted - params: - - {name: objectID, type: NSManagedObjectID} - - {name: messageIdentifierFromEngine, type: Data} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: sortIndex, type: Double} - - {name: discussionObjectID, type: TypeSafeManagedObjectID} -- name: persistedMessageReceivedWasRead - params: - - {name: persistedMessageReceivedObjectID, type: TypeSafeManagedObjectID} -- name: aDeliveredReturnReceiptShouldBeSentForPersistedMessageReceived - params: - - {name: returnReceipt, type: ReturnReceiptJSON} - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: messageIdentifierFromEngine, type: Data} -- name: theBodyOfPersistedMessageReceivedDidChange - params: - - {name: persistedMessageReceivedObjectID, type: NSManagedObjectID} -- name: persistedDiscussionWasArchived - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} -- name: persistedContactWasUpdated - params: - - {name: contactObjectID, type: TypeSafeManagedObjectID} -- name: fyleMessageJoinWithStatusWasInserted - params: - - {name: fyleMessageJoinObjectID, type: TypeSafeManagedObjectID} -- name: fyleMessageJoinWithStatusWasUpdated - params: - - {name: fyleMessageJoinObjectID, type: TypeSafeManagedObjectID} -- name: discussionLocalConfigurationHasBeenUpdated - params: - - {name: newValue, type: PersistedDiscussionLocalConfigurationValue} - - {name: localConfigurationObjectID, type: TypeSafeManagedObjectID} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelper.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelper.swift new file mode 100644 index 00000000..bbe579e1 --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelper.swift @@ -0,0 +1,36 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import OlvidUtils + + +public struct ObvUICoreDataHelper { + + public static func getOperationsForDeletingOldOrOrphanedDatabaseEntries() -> [ContextualOperationWithSpecificReasonForCancel] { + return [ + DeleteOldRemoteRequestsSavedForLaterOperation(), + DeleteOrphanedExpirationsOperation(), + DeleteAllOrphanedPersistedMessagesOperation(), + DeleteAllOrphanedFyleMessageJoinWithStatusOperation(), + ] + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllOrphanedFyleMessageJoinWithStatusOperation.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteAllOrphanedFyleMessageJoinWithStatusOperation.swift similarity index 53% rename from iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllOrphanedFyleMessageJoinWithStatusOperation.swift rename to Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteAllOrphanedFyleMessageJoinWithStatusOperation.swift index b3e43f2a..e39745e8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllOrphanedFyleMessageJoinWithStatusOperation.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteAllOrphanedFyleMessageJoinWithStatusOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,28 +20,21 @@ import Foundation import CoreData import OlvidUtils -import ObvUICoreData +import CoreData /// This operation deletes all `FyleMessageJoinWithStatus` that have no associated `PersistedMessage` (or no draft) -final class DeleteAllOrphanedFyleMessageJoinWithStatusOperation: ContextualOperationWithSpecificReasonForCancel { +public final class DeleteAllOrphanedFyleMessageJoinWithStatusOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + public override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - - do { - try ReceivedFyleMessageJoinWithStatus.deleteAllOrphaned(within: obvContext.context) - try SentFyleMessageJoinWithStatus.deleteAllOrphaned(within: obvContext.context) - try PersistedDraftFyleJoin.deleteAllOrphaned(within: obvContext.context) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - + do { + try ReceivedFyleMessageJoinWithStatus.deleteAllOrphaned(within: obvContext.context) + try SentFyleMessageJoinWithStatus.deleteAllOrphaned(within: obvContext.context) + try PersistedDraftFyleJoin.deleteAllOrphaned(within: obvContext.context) + } catch { + assertionFailure(error.localizedDescription) + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteAllOrphanedPersistedMessagesOperation.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteAllOrphanedPersistedMessagesOperation.swift new file mode 100644 index 00000000..9110312f --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteAllOrphanedPersistedMessagesOperation.swift @@ -0,0 +1,40 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import OlvidUtils + + +/// This operation deletes all `PersistedMessage` that have no associated `PersistedDiscussion`. It is typically used when deleting a discussion (where we "only" emty the discussion's list of messages, which deletes the +public final class DeleteAllOrphanedPersistedMessagesOperation: ContextualOperationWithSpecificReasonForCancel { + + public override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + try PersistedMessage.deleteAllOrphaned(within: obvContext.context) + } catch { + assertionFailure(error.localizedDescription) + return cancel(withReason: .coreDataError(error: error)) + } + + } + +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localization/MessageCollectionViewCell+Strings.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteOldRemoteRequestsSavedForLaterOperation.swift similarity index 51% rename from iOSClient/ObvMessenger/ObvMessenger/Localization/MessageCollectionViewCell+Strings.swift rename to Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteOldRemoteRequestsSavedForLaterOperation.swift index 689e8052..a62bd9af 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Localization/MessageCollectionViewCell+Strings.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteOldRemoteRequestsSavedForLaterOperation.swift @@ -18,19 +18,24 @@ */ import Foundation +import OlvidUtils +import CoreData -extension MessageCollectionViewCell { - struct Strings { +final class DeleteOldRemoteRequestsSavedForLaterOperation: ContextualOperationWithSpecificReasonForCancel { + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + let deletionTimeInterval: TimeInterval = TimeInterval(days: 30) + let deletionDate: Date = Date(timeIntervalSinceNow: -deletionTimeInterval) - static let seeAttachments = { (count: Int) in - return String.localizedStringWithFormat(NSLocalizedString("see count attachments", comment: "Number of attachments"), count) + do { + try RemoteRequestSavedForLater.deleteRemoteRequestsSavedForLaterEarlierThan(deletionDate, within: obvContext.context) + } catch { + assertionFailure(error.localizedDescription) + return cancel(withReason: .coreDataError(error: error)) } - - static let replyToMessageWasDeleted = NSLocalizedString("Deleted message", comment: "Body displayed when a reply-to message was deleted.") - static let replyToMessageUnavailable = NSLocalizedString("UNAVAILABLE_MESSAGE", comment: "Body displayed when a reply-to message cannot be found.") - } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteOrphanedExpirationsOperation.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteOrphanedExpirationsOperation.swift similarity index 74% rename from iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteOrphanedExpirationsOperation.swift rename to Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteOrphanedExpirationsOperation.swift index b841c20e..b6ce8d06 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteOrphanedExpirationsOperation.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/ObvUICoreDataHelperOperations/DeleteOrphanedExpirationsOperation.swift @@ -21,7 +21,6 @@ import Foundation import CoreData import os.log import OlvidUtils -import ObvUICoreData /// This operations deletes all orphaned expirations, i.e., expirations that have no associated message. @@ -35,21 +34,15 @@ import ObvUICoreData /// /// that have no associated received/sent message. Note that the we could expect not to find any such instance, thanks to the cascade delete feature of Core Data. /// In practice, cleaning these instances proved to be useful. -final class DeleteOrphanedExpirationsOperation: OperationWithSpecificReasonForCancel { +final class DeleteOrphanedExpirationsOperation: ContextualOperationWithSpecificReasonForCancel { - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: DeleteOrphanedExpirationsOperation.self)) - - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - ObvStack.shared.performBackgroundTaskAndWait { context in - - do { - try PersistedMessageExpiration.deleteAllOrphanedExpirations(within: context) - try context.save(logOnFailure: log) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - + do { + try PersistedMessageExpiration.deleteAllOrphanedExpirations(within: obvContext.context) + } catch { + assertionFailure(error.localizedDescription) + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/FyleElement.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/FyleElement.swift index 192f50ce..998098a6 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/FyleElement.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/FyleElement.swift @@ -18,10 +18,12 @@ */ import Foundation +import UniformTypeIdentifiers public protocol FyleElement { var fileName: String { get } - var uti: String { get } + // var uti: String { get } + var contentType: UTType { get } var fullFileIsAvailable: Bool { get } var fyleURL: URL { get } var sha256: Data { get } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/Mentions/MentionableIdentity.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/Mentions/MentionableIdentity.swift index 6a4baec0..ebe7c17f 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/Mentions/MentionableIdentity.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Protocols/Mentions/MentionableIdentity.swift @@ -19,7 +19,7 @@ import Foundation import CoreData.NSManagedObject -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials import ObvTypes public enum MentionableIdentityTypes { diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettingsNotifications.yml b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettingsNotifications.yml deleted file mode 100644 index d3a4ba98..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Settings/ObvMessengerSettingsNotifications.yml +++ /dev/null @@ -1,11 +0,0 @@ -import: - - Foundation -options: - - {key: visibility, value: public} -notifications: -- name: contactsSortOrderDidChange -- name: preferredComposeMessageViewActionsDidChange -- name: isCallKitEnabledSettingDidChange -- name: isIncludesCallsInRecentsEnabledSettingDidChange -- name: performInteractionDonationSettingDidChange -- name: identityColorStyleDidChange diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/AppBackupItem.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/AppBackupItem.swift index 6b46d054..368ce9a6 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/AppBackupItem.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/AppBackupItem.swift @@ -21,6 +21,8 @@ import Foundation import ObvTypes import SwiftUI import ObvCrypto +import ObvSettings +import ObvDesignSystem public struct AppBackupItem: Codable, Hashable { @@ -401,7 +403,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { let identityColorStyle: IdentityColorStyle? let contactsSortOrder: ContactsSortOrder? - let useOldDiscussionInterface: Bool? // Discussions @@ -423,10 +424,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { let hiddenProfileClosePolicy: ObvMessengerSettings.Privacy.HiddenProfileClosePolicy? let timeIntervalForBackgroundHiddenProfileClosePolicy: ObvMessengerSettings.Privacy.TimeIntervalForBackgroundHiddenProfileClosePolicy? - // VoIP - - let isCallKitEnabled: Bool? - // Advanced let allowCustomKeyboards: Bool? @@ -447,7 +444,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { case maxAttachmentSizeForAutomaticDownload = "auto_download_size" case identityColorStyle = "identity_color_style_ios" case contactsSortOrder = "contact_sort_last_name" - case useOldDiscussionInterface = "use_old_discussion_interface_ios" case sendReadReceipt = "send_read_receipt" case doFetchContentRichURLsMetadata = "do_fetch_content_rich_urls_metadata_ios" case readOnce = "default_read_once" @@ -461,7 +457,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { case hideNotificationContentAndroid = "hide_notification_contents" case allowCustomKeyboards = "allow_custom_keyboards" case showBetaSettings = "beta" - case isCallKitEnabled = "is_call_kit_enabled" case autoAcceptGroupInviteFrom = "auto_join_groups" case preferredEmojisList = "preferred_reactions" case performInteractionDonation = "perform_interaction_donation" @@ -485,7 +480,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { self.maxAttachmentSizeForAutomaticDownload = ObvMessengerSettings.Downloads.maxAttachmentSizeForAutomaticDownload self.identityColorStyle = ObvMessengerSettings.Interface.identityColorStyle self.contactsSortOrder = ObvMessengerSettings.Interface.contactsSortOrder - self.useOldDiscussionInterface = ObvMessengerSettings.Interface.useOldDiscussionInterface self.sendReadReceipt = ObvMessengerSettings.Discussions.doSendReadReceipt self.doFetchContentRichURLsMetadata = ObvMessengerSettings.Discussions.doFetchContentRichURLsMetadata self.readOnce = ObvMessengerSettings.Discussions.readOnce @@ -499,7 +493,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { self.hideNotificationContent = ObvMessengerSettings.Privacy.hideNotificationContent self.allowCustomKeyboards = ObvMessengerSettings.Advanced.allowCustomKeyboards self.showBetaSettings = ObvMessengerSettings.BetaConfiguration.showBetaSettings - self.isCallKitEnabled = ObvMessengerSettings.VoIP.isCallKitEnabled self.autoAcceptGroupInviteFrom = ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom self.preferredEmojisList = ObvMessengerSettings.Emoji.preferredEmojisList self.hiddenProfileClosePolicy = ObvMessengerSettings.Privacy.hiddenProfileClosePolicy @@ -514,7 +507,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { try container.encodeIfPresent(maxAttachmentSizeForAutomaticDownload, forKey: .maxAttachmentSizeForAutomaticDownload) try container.encodeIfPresent(identityColorStyle?.rawValue, forKey: .identityColorStyle) try container.encodeIfPresent(contactsSortOrder == .byLastName, forKey: .contactsSortOrder) - try container.encodeIfPresent(useOldDiscussionInterface, forKey: .useOldDiscussionInterface) try container.encodeIfPresent(sendReadReceipt, forKey: .sendReadReceipt) try container.encodeIfPresent(doFetchContentRichURLsMetadata?.rawValue, forKey: .doFetchContentRichURLsMetadata) try container.encodeIfPresent(readOnce, forKey: .readOnce) @@ -528,7 +520,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { try container.encodeIfPresent(hideNotificationContentAndroid, forKey: .hideNotificationContentAndroid) try container.encodeIfPresent(allowCustomKeyboards, forKey: .allowCustomKeyboards) try container.encodeIfPresent(showBetaSettings, forKey: .showBetaSettings) - try container.encodeIfPresent(isCallKitEnabled, forKey: .isCallKitEnabled) try container.encodeIfPresent(autoAcceptGroupInviteFrom?.rawValue, forKey: .autoAcceptGroupInviteFrom) try container.encodeIfPresent(preferredEmojisList, forKey: .preferredEmojisList) try container.encodeIfPresent(performInteractionDonation, forKey: .performInteractionDonation) @@ -553,7 +544,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { } else { self.contactsSortOrder = nil } - self.useOldDiscussionInterface = try values.decodeIfPresent(Bool.self, forKey: .useOldDiscussionInterface) self.sendReadReceipt = try values.decodeIfPresent(Bool.self, forKey: .sendReadReceipt) if let raw = try values.decodeIfPresent(Int.self, forKey: .doFetchContentRichURLsMetadata) { self.doFetchContentRichURLsMetadata = ObvMessengerSettings.Discussions.FetchContentRichURLsMetadataChoice(rawValue: raw) @@ -589,7 +579,6 @@ public struct GlobalSettingsBackupItem: Codable, Hashable { } self.allowCustomKeyboards = try values.decodeIfPresent(Bool.self, forKey: .allowCustomKeyboards) self.showBetaSettings = try values.decodeIfPresent(Bool.self, forKey: .showBetaSettings) - self.isCallKitEnabled = try values.decodeIfPresent(Bool.self, forKey: .isCallKitEnabled) if let rawValue = try values.decodeIfPresent(String.self, forKey: .autoAcceptGroupInviteFrom) { self.autoAcceptGroupInviteFrom = ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom(rawValue: rawValue) } else { diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/AppSyncSnapshotNode.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/AppSyncSnapshotNode.swift new file mode 100644 index 00000000..03272a9d --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/AppSyncSnapshotNode.swift @@ -0,0 +1,98 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import ObvTypes +import ObvSettings + + +/// This is the top level `ObvSyncSnapshotNode` at the app level (its identity manager counterpart at the engine level is called `ObvIdentityManagerSyncSnapshotNode`). +public struct AppSyncSnapshotNode: ObvSyncSnapshotNode, Codable { + + private let domain: Set + private let ownedCryptoId: ObvCryptoId + private let ownedIdentityNode: PersistedObvOwnedIdentitySyncSnapshotNode? + private let globalSettingsNode: GlobalSettingsSyncSnapshotNode? + + public let id = Self.generateIdentifier() + + enum CodingKeys: String, CodingKey, CaseIterable, Codable { + case ownedCryptoId = "owned_identity" + case ownedIdentityNode = "owned_identity_node" + case globalSettingsNode = "settings" + case domain = "domain" + } + + private static let defaultDomain: Set = Set(CodingKeys.allCases.filter({ $0 != .domain })) + + + public init(ownedCryptoId: ObvCryptoId, within context: NSManagedObjectContext) throws { + self.ownedCryptoId = ownedCryptoId + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: context) else { + throw ObvError.couldNotFindOwnedIdentity + } + self.ownedIdentityNode = try ownedIdentity.syncSnapshotNode + self.globalSettingsNode = ObvMessengerSettings.syncSnapshotNode + self.domain = Self.defaultDomain + } + + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(domain, forKey: .domain) + try container.encode(ownedCryptoId.getIdentity(), forKey: .ownedCryptoId) + try container.encodeIfPresent(ownedIdentityNode, forKey: .ownedIdentityNode) + try container.encodeIfPresent(globalSettingsNode, forKey: .globalSettingsNode) + } + + + public init(from decoder: Decoder) throws { + do { + let values = try decoder.container(keyedBy: CodingKeys.self) + let identity = try values.decode(Data.self, forKey: .ownedCryptoId) + let rawKeys = try values.decode(Set.self, forKey: .domain) + self.domain = Set(rawKeys.compactMap({ CodingKeys(rawValue: $0) })) + self.ownedCryptoId = try ObvCryptoId(identity: identity) + self.ownedIdentityNode = try values.decodeIfPresent(PersistedObvOwnedIdentitySyncSnapshotNode.self, forKey: .ownedIdentityNode) + self.globalSettingsNode = try values.decodeIfPresent(GlobalSettingsSyncSnapshotNode.self, forKey: .globalSettingsNode) + } catch { + assertionFailure() + throw error + } + } + + + public func useToUpdateAppDatabase(within context: NSManagedObjectContext) throws { + if domain.contains(.ownedIdentityNode) { + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: context) else { + assertionFailure() + throw ObvError.couldNotFindOwnedIdentity + } + ownedIdentityNode?.useToUpdate(ownedIdentity) + } + globalSettingsNode?.useToUpdateGlobalSettings() + } + + + enum ObvError: Error { + case couldNotFindOwnedIdentity + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/DiscussionIdentifier.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/DiscussionIdentifier.swift new file mode 100644 index 00000000..5406ad89 --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/DiscussionIdentifier.swift @@ -0,0 +1,102 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import ObvCrypto +import CoreData + + +public enum DiscussionIdentifier: CustomDebugStringConvertible { + case oneToOne(id: OneToOneDiscussionIdentifier) + case groupV1(id: GroupV1DiscussionIdentifier) + case groupV2(id: GroupV2DiscussionIdentifier) + + public var debugDescription: String { + let prefix = "DiscussionIdentifier" + let suffix: String + switch self { + case .oneToOne(let id): + suffix = ["oneToOne", id.debugDescription].joined(separator: ".") + case .groupV1(let id): + suffix = ["groupV1", id.debugDescription].joined(separator: ".") + case .groupV2(let id): + suffix = ["groupV2", id.debugDescription].joined(separator: ".") + } + return [prefix, suffix].joined(separator: ".") + } + +} + + +public enum OneToOneDiscussionIdentifier: CustomDebugStringConvertible { + case objectID(objectID: NSManagedObjectID) + case contactCryptoId(contactCryptoId: ObvCryptoId) + + public var debugDescription: String { + let prefix = "OneToOneDiscussionIdentifier" + let suffix: String + switch self { + case .objectID: + suffix = "objectID" + case .contactCryptoId: + suffix = "contactCryptoId" + } + return [prefix, suffix].joined(separator: ".") + } + +} + + +public enum GroupV1DiscussionIdentifier: CustomDebugStringConvertible { + case objectID(objectID: NSManagedObjectID) + case groupV1Identifier(groupV1Identifier: GroupV1Identifier) + + public var debugDescription: String { + let prefix = "GroupV1DiscussionIdentifier" + let suffix: String + switch self { + case .objectID: + suffix = "objectID" + case .groupV1Identifier: + suffix = "groupV1Identifier" + } + return [prefix, suffix].joined(separator: ".") + } + +} + + +public enum GroupV2DiscussionIdentifier: CustomDebugStringConvertible { + case objectID(objectID: NSManagedObjectID) + case groupV2Identifier(groupV2Identifier: GroupV2Identifier) + + public var debugDescription: String { + let prefix = "GroupV2DiscussionIdentifier" + let suffix: String + switch self { + case .objectID: + suffix = "objectID" + case .groupV2Identifier: + suffix = "groupV2Identifier" + } + return [prefix, suffix].joined(separator: ".") + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleElement/FyleElementForFyleMessageJoinWithStatus.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleElement/FyleElementForFyleMessageJoinWithStatus.swift index 5bb9f508..cadc8766 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleElement/FyleElementForFyleMessageJoinWithStatus.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleElement/FyleElementForFyleMessageJoinWithStatus.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -18,13 +18,16 @@ */ import Foundation +import UniformTypeIdentifiers +import ObvSettings public struct FyleElementForFyleMessageJoinWithStatus: FyleElement { public let fyleURL: URL public let fileName: String - public let uti: String + //public let uti: String + public let contentType: UTType public let sha256: Data public let fullFileIsAvailable: Bool @@ -32,10 +35,10 @@ public struct FyleElementForFyleMessageJoinWithStatus: FyleElement { let messagePermanentID: ObvManagedObjectPermanentID let fyleMessageJoinPermanentID: ObvManagedObjectPermanentID - public init(fyleURL: URL, fileName: String, uti: String, sha256: Data, fullFileIsAvailable: Bool, discussionPermanentID: ObvManagedObjectPermanentID, messagePermanentID: ObvManagedObjectPermanentID, fyleMessageJoinPermanentID: ObvManagedObjectPermanentID) { + public init(fyleURL: URL, fileName: String, contentType: UTType, sha256: Data, fullFileIsAvailable: Bool, discussionPermanentID: ObvManagedObjectPermanentID, messagePermanentID: ObvManagedObjectPermanentID, fyleMessageJoinPermanentID: ObvManagedObjectPermanentID) { self.fyleURL = fyleURL self.fileName = fileName - self.uti = uti + self.contentType = contentType self.sha256 = sha256 self.fullFileIsAvailable = fullFileIsAvailable self.discussionPermanentID = discussionPermanentID @@ -44,29 +47,34 @@ public struct FyleElementForFyleMessageJoinWithStatus: FyleElement { } init?(_ fyleMessageJoinWithStatus: FyleMessageJoinWithStatus) throws { + guard let fyle = fyleMessageJoinWithStatus.fyle else { return nil } guard let message = fyleMessageJoinWithStatus.message else { return nil } let fyleURL = fyle.url + guard let discussionPermanentID = message.discussion?.discussionPermanentID else { + throw Self.makeError(message: "Could not find discussion") + } + self.init(fyleURL: fyleURL, fileName: fyleMessageJoinWithStatus.fileName, - uti: fyleMessageJoinWithStatus.uti, + contentType: fyleMessageJoinWithStatus.contentType, sha256: fyle.sha256, fullFileIsAvailable: fyleMessageJoinWithStatus.fullFileIsAvailable, - discussionPermanentID: message.discussion.discussionPermanentID, + discussionPermanentID: discussionPermanentID, messagePermanentID: message.messagePermanentID, fyleMessageJoinPermanentID: fyleMessageJoinWithStatus.fyleMessageJoinPermanentID) } public func replacingFullFileIsAvailable(with newFullFileIsAvailable: Bool) -> FyleElement { - FyleElementForFyleMessageJoinWithStatus(fyleURL: fyleURL, - fileName: fileName, - uti: uti, - sha256: sha256, - fullFileIsAvailable: newFullFileIsAvailable, - discussionPermanentID: discussionPermanentID, - messagePermanentID: messagePermanentID, - fyleMessageJoinPermanentID: fyleMessageJoinPermanentID) + Self.init(fyleURL: fyleURL, + fileName: fileName, + contentType: contentType, + sha256: sha256, + fullFileIsAvailable: newFullFileIsAvailable, + discussionPermanentID: discussionPermanentID, + messagePermanentID: messagePermanentID, + fyleMessageJoinPermanentID: fyleMessageJoinPermanentID) } public static func makeError(message: String) -> Error { NSError(domain: "FyleElementForFyleMessageJoinWithStatus", code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleElement/FyleElementForPersistedDraftFyleJoin.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleElement/FyleElementForPersistedDraftFyleJoin.swift index 599b1428..c372638a 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleElement/FyleElementForPersistedDraftFyleJoin.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleElement/FyleElementForPersistedDraftFyleJoin.swift @@ -18,12 +18,16 @@ */ import Foundation +import UniformTypeIdentifiers +import ObvSettings + public struct FyleElementForPersistedDraftFyleJoin: FyleElement { public let fyleURL: URL public let fileName: String - public let uti: String + public let contentType: UTType + //public let uti: String public let sha256: Data public let fullFileIsAvailable: Bool @@ -36,7 +40,7 @@ public struct FyleElementForPersistedDraftFyleJoin: FyleElement { guard let draft = persistedDraftFyleJoin.draft else { return nil } self.fyleURL = fyle.url self.fileName = persistedDraftFyleJoin.fileName - self.uti = persistedDraftFyleJoin.uti + self.contentType = persistedDraftFyleJoin.contentType self.sha256 = fyle.sha256 self.discussionPermanentID = draft.discussion.discussionPermanentID self.draftPermanentID = draft.objectPermanentID @@ -45,10 +49,10 @@ public struct FyleElementForPersistedDraftFyleJoin: FyleElement { } - private init(fyleURL: URL, fileName: String, uti: String, sha256: Data, fullFileIsAvailable: Bool, discussionPermanentID: ObvManagedObjectPermanentID, draftPermanentID: ObvManagedObjectPermanentID, draftFyleJoinPermanentID: ObvManagedObjectPermanentID) { + private init(fyleURL: URL, fileName: String, contentType: UTType, sha256: Data, fullFileIsAvailable: Bool, discussionPermanentID: ObvManagedObjectPermanentID, draftPermanentID: ObvManagedObjectPermanentID, draftFyleJoinPermanentID: ObvManagedObjectPermanentID) { self.fyleURL = fyleURL self.fileName = fileName - self.uti = uti + self.contentType = contentType self.sha256 = sha256 self.fullFileIsAvailable = fullFileIsAvailable self.discussionPermanentID = discussionPermanentID @@ -58,14 +62,14 @@ public struct FyleElementForPersistedDraftFyleJoin: FyleElement { public func replacingFullFileIsAvailable(with newFullFileIsAvailable: Bool) -> FyleElement { - FyleElementForPersistedDraftFyleJoin(fyleURL: fyleURL, - fileName: fileName, - uti: uti, - sha256: sha256, - fullFileIsAvailable: newFullFileIsAvailable, - discussionPermanentID: discussionPermanentID, - draftPermanentID: draftPermanentID, - draftFyleJoinPermanentID: draftFyleJoinPermanentID) + Self.init(fyleURL: fyleURL, + fileName: fileName, + contentType: contentType, + sha256: sha256, + fullFileIsAvailable: newFullFileIsAvailable, + discussionPermanentID: discussionPermanentID, + draftPermanentID: draftPermanentID, + draftFyleJoinPermanentID: draftFyleJoinPermanentID) } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleMetadata.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleMetadata.swift index 2c2f8369..dee59676 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleMetadata.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/FyleMetadata.swift @@ -20,7 +20,8 @@ import Foundation import os.log import ObvEngine -import MobileCoreServices +import UniformTypeIdentifiers +import ObvSettings public struct FyleMetadata: Codable { @@ -29,7 +30,7 @@ public struct FyleMetadata: Codable { let fileName: String public let sha256: Data - let uti: String + let contentType: UTType enum CodingKeys: String, CodingKey { case fileName = "file_name" @@ -37,10 +38,10 @@ public struct FyleMetadata: Codable { case type = "type" // MIME type } - init(fileName: String, sha256: Data, uti: String) { + init(fileName: String, sha256: Data, contentType: UTType) { self.fileName = fileName self.sha256 = sha256 - self.uti = uti + self.contentType = contentType } @@ -48,24 +49,24 @@ public struct FyleMetadata: Codable { let values = try decoder.container(keyedBy: CodingKeys.self) let mimeType = try values.decode(String.self, forKey: .type) self.fileName = try values.decode(String.self, forKey: .fileName) - // The MIME type has precedence over the extension for determining the UTI - if let utiFromMIMEType = ObvUTIUtils.utiOfMIMEType(mimeType) { - self.uti = utiFromMIMEType - } else if let utiFromExtension = ObvUTIUtils.utiOfFile(withExtension: (self.fileName as NSString).pathExtension) { - self.uti = utiFromExtension + // The MIME type has precedence over the extension for determining the content type + if let contentTypeFromMIMEType = UTType(mimeType: mimeType) { + self.contentType = contentTypeFromMIMEType + } else if let contentTypeFromExtension = UTType(filenameExtension: (self.fileName as NSString).pathExtension) { + self.contentType = contentTypeFromExtension } else { - self.uti = "public.item" + self.contentType = .item } self.sha256 = try values.decode(Data.self, forKey: .sha256) } public func encode(to encoder: Encoder) throws { let mimeType: String - if let _mimeType = ObvUTIUtils.preferredTagWithClass(inUTI: self.uti, inTagClass: .MIMEType) { + if let _mimeType = contentType.preferredMIMEType { mimeType = _mimeType } else { - os_log("Could not find appropriate MIME type for uti %{public}@. We fallback on Data", log: log, type: .error, self.uti) - mimeType = ObvUTIUtils.preferredTagWithClass(inUTI: String(kUTTypeData), inTagClass: .MIMEType) ?? "application/octet-stream" + os_log("Could not find appropriate MIME type for content type %{public}@. We fallback on Data", log: log, type: .error, self.contentType.debugDescription) + mimeType = "application/octet-stream" } var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(mimeType, forKey: .type) diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/GroupIdentifier.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/GroupIdentifier.swift index 2704a41c..28a53396 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/GroupIdentifier.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/GroupIdentifier.swift @@ -28,6 +28,6 @@ public enum GroupIdentifierBasedOnObjectID { } public enum GroupIdentifier { - case groupV1(groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)) - case groupV2(groupV2Identifier: Data) + case groupV1(groupV1Identifier: GroupV1Identifier) + case groupV2(groupV2Identifier: GroupV2Identifier) } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/GroupV2CoreDetails.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/GroupV2CoreDetails.swift index 39da988d..f1484dec 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/GroupV2CoreDetails.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/GroupV2CoreDetails.swift @@ -23,7 +23,7 @@ import Foundation public struct GroupV2CoreDetails: Codable, Equatable { - let groupName: String? + public let groupName: String? let groupDescription: String? public init(groupName: String?, groupDescription: String?) { @@ -41,7 +41,7 @@ public struct GroupV2CoreDetails: Codable, Equatable { return try encoder.encode(self) } - static func jsonDecode(serializedGroupCoreDetails: Data) throws -> Self { + public static func jsonDecode(serializedGroupCoreDetails: Data) throws -> Self { let decoder = JSONDecoder() return try decoder.decode(Self.self, from: serializedGroupCoreDetails) } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/MessageIdentifier.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/MessageIdentifier.swift new file mode 100644 index 00000000..a9fc17a4 --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/MessageIdentifier.swift @@ -0,0 +1,73 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData + + +public enum MessageIdentifier { + case sent(id: SentMessageIdentifier) + case received(id: ReceivedMessageIdentifier) + case system(id: SystemMessageIdentifier) + + public var objectID: NSManagedObjectID? { + switch self { + case .sent(let id): + switch id { + case .objectID(let objectID): + return objectID + default: + return nil + } + case .received(let id): + switch id { + case .objectID(let objectID): + return objectID + default: + return nil + } + case .system(let id): + switch id { + case .objectID(let objectID): + return objectID + } + } + } + +} + +public enum SentMessageIdentifier { + case objectID(objectID: NSManagedObjectID) + case authorIdentifier(writerIdentifier: MessageWriterIdentifier) +} + +public enum ReceivedMessageIdentifier { + case objectID(objectID: NSManagedObjectID) + case authorIdentifier(writerIdentifier: MessageWriterIdentifier) +} + +public enum SystemMessageIdentifier { + case objectID(objectID: NSManagedObjectID) +} + +public struct MessageWriterIdentifier { + public let senderSequenceNumber: Int + public let senderThreadIdentifier: UUID + public let senderIdentifier: Data // Bytes of the identity of the writer +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/ObvUICoreDataError.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/ObvUICoreDataError.swift new file mode 100644 index 00000000..972940d8 --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/ObvUICoreDataError.swift @@ -0,0 +1,116 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes + + +public enum ObvUICoreDataError: Error { + + case inconsistentOneToOneDiscussionIdentifier + case cannotInsertMessageInOneToOneDiscussionFromNonOneToOneContact + case couldNotFindDiscussion + case couldNotFindDiscussionWithId(discussionId: DiscussionIdentifier) + case couldNotFindOwnedIdentity + case couldNotFindGroupV1InDatabase(groupIdentifier: GroupV1Identifier) + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case couldNotDetemineGroupV1 + case couldNotDetemineGroupV2 + case couldNotFindPersistedMessage + case couldNotFindPersistedMessageReceived + case couldNotFindPersistedMessageSent + case noContext + case inappropriateContext + case unexpectedFromContactIdentity + case cannotUpdateConfigurationOfOneToOneDiscussionFromNonOneToOneContact + case atLeastOneOfOneToOneIdentifierAndGroupIdentifierIsExpectedToBeNil + case contactNeitherGroupOwnerNorPartOfGroupMembers + case contactIsNotPartOfTheGroup + case contactIsNotOneToOne + case unexpectedOwnedCryptoId + case ownedDeviceNotFound + case couldNotDetermineTheOneToOneDiscussion + case couldNotFindOneToOneContact + case couldNotFindContact + case couldNotFindContactWithId(contactIdentifier: ObvContactIdentifier) + case couldNotFindDraft + case couldNotDetermineContactCryptoId + + public var errorDescription: String? { + switch self { + case .couldNotDetemineGroupV1: + return "Could not determine group V1" + case .couldNotDetemineGroupV2: + return "Could not determine group V2" + case .inconsistentOneToOneDiscussionIdentifier: + return "Inconsistent OneToOne discussion identifier" + case .cannotInsertMessageInOneToOneDiscussionFromNonOneToOneContact: + return "Cannot insert a message in a OneToOne discussion from a contact that is not OneToOne" + case .couldNotFindDiscussion: + return "Could not find discussion" + case .couldNotFindDiscussionWithId: + return "Could not find discussion given for the identifier" + case .couldNotFindOwnedIdentity: + return "Could not find the owned identity corresponding to this contact" + case .couldNotFindGroupV1InDatabase: + return "Could not find group V1 in database" + case .couldNotFindGroupV2InDatabase: + return "Could not find group V2 in database" + case .noContext: + return "No context available" + case .couldNotFindPersistedMessageReceived: + return "Could not find PersistedMessageReceived" + case .unexpectedFromContactIdentity: + return "UnexpectedFromContactIdentity" + case .cannotUpdateConfigurationOfOneToOneDiscussionFromNonOneToOneContact: + return "Cannot update OneToOne discussion shared settings sent by a contact that is not OneToOne" + case .atLeastOneOfOneToOneIdentifierAndGroupIdentifierIsExpectedToBeNil: + return "We expect at least one of OneOfOneToOneIdentifier and GroupIdentifier to be nil" + case .contactNeitherGroupOwnerNorPartOfGroupMembers: + return "This contact is not the group owner nor part of the group members" + case .contactIsNotPartOfTheGroup: + return "The contact is not part of the group" + case .contactIsNotOneToOne: + return "Contact is not OneToOne" + case .inappropriateContext: + return "Inappropriate context" + case .unexpectedOwnedCryptoId: + return "Unexpected owned cryptoId" + case .ownedDeviceNotFound: + return "Owned device not found" + case .couldNotDetermineTheOneToOneDiscussion: + return "Could not determine the OneToOne discussion" + case .couldNotFindPersistedMessageSent: + return "Could not find persisted message sent" + case .couldNotFindPersistedMessage: + return "Could not find persisted message" + case .couldNotFindOneToOneContact: + return "Could not find one2one contact" + case .couldNotFindContact: + return "Could not find contact" + case .couldNotFindContactWithId: + return "Could not find contact with Id" + case .couldNotFindDraft: + return "Could not find draft" + case .couldNotDetermineContactCryptoId: + return "Could not determine contact crypto id" + } + } + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/PersistedMessageJSON.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/PersistedMessageJSON.swift index 56a641c5..0e405397 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/PersistedMessageJSON.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Types/PersistedMessageJSON.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import ObvEngine import ObvTypes import ObvCrypto import OlvidUtils +import ObvSettings public struct PersistedItemJSON: Codable { @@ -37,6 +38,8 @@ public struct PersistedItemJSON: Codable { public let updateMessageJSON: UpdateMessageJSON? public let reactionJSON: ReactionJSON? public let screenCaptureDetectionJSON: ScreenCaptureDetectionJSON? + public let limitedVisibilityMessageOpenedJSON: LimitedVisibilityMessageOpenedJSON? + public let discussionRead: DiscussionReadJSON? enum CodingKeys: String, CodingKey { case message = "message" @@ -49,6 +52,8 @@ public struct PersistedItemJSON: Codable { case updateMessageJSON = "upm" case reactionJSON = "reacm" case screenCaptureDetectionJSON = "scd" + case limitedVisibilityMessageOpenedJSON = "lvo" + case discussionRead = "dr" } public init(messageJSON: MessageJSON) { @@ -62,6 +67,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = nil self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(returnReceiptJSON: ReturnReceiptJSON) { @@ -75,6 +82,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = nil self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON) { @@ -88,6 +97,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = nil self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(webrtcMessage: WebRTCMessageJSON) { @@ -101,6 +112,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = nil self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(discussionSharedConfiguration: DiscussionSharedConfigurationJSON) { @@ -114,6 +127,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = nil self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(deleteMessagesJSON: DeleteMessagesJSON) { @@ -127,6 +142,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = nil self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(deleteDiscussionJSON: DeleteDiscussionJSON) { @@ -140,6 +157,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = nil self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(querySharedSettingsJSON: QuerySharedSettingsJSON) { @@ -153,6 +172,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = nil self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(updateMessageJSON: UpdateMessageJSON) { @@ -166,6 +187,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = updateMessageJSON self.reactionJSON = nil self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(reactionJSON: ReactionJSON) { @@ -179,6 +202,8 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = reactionJSON self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil } public init(screenCaptureDetectionJSON: ScreenCaptureDetectionJSON) { @@ -192,6 +217,38 @@ public struct PersistedItemJSON: Codable { self.updateMessageJSON = nil self.reactionJSON = nil self.screenCaptureDetectionJSON = screenCaptureDetectionJSON + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = nil + } + + public init(limitedVisibilityMessageOpenedJSON: LimitedVisibilityMessageOpenedJSON) { + self.message = nil + self.returnReceipt = nil + self.webrtcMessage = nil + self.discussionSharedConfiguration = nil + self.deleteMessagesJSON = nil + self.deleteDiscussionJSON = nil + self.querySharedSettingsJSON = nil + self.updateMessageJSON = nil + self.reactionJSON = nil + self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = limitedVisibilityMessageOpenedJSON + self.discussionRead = nil + } + + public init(discussionRead: DiscussionReadJSON) { + self.message = nil + self.returnReceipt = nil + self.webrtcMessage = nil + self.discussionSharedConfiguration = nil + self.deleteMessagesJSON = nil + self.deleteDiscussionJSON = nil + self.querySharedSettingsJSON = nil + self.updateMessageJSON = nil + self.reactionJSON = nil + self.screenCaptureDetectionJSON = nil + self.limitedVisibilityMessageOpenedJSON = nil + self.discussionRead = discussionRead } public func jsonEncode() throws -> Data { @@ -215,8 +272,9 @@ public struct DiscussionSharedConfigurationJSON: Codable { let version: Int let expiration: ExpirationJSON - let groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)? - let groupV2Identifier: Data? + let oneToOneIdentifier: OneToOneIdentifierJSON? + let groupV1Identifier: GroupV1Identifier? + let groupV2Identifier: GroupV2Identifier? public var groupIdentifier: GroupIdentifier? { if let groupV1Identifier = groupV1Identifier { @@ -234,25 +292,29 @@ public struct DiscussionSharedConfigurationJSON: Codable { case groupUid = "guid" // For group V1 case groupOwner = "go" // For group V1 case groupV2Identifier = "gid2" + case oneToOneIdentifier = "o2oi" // For one-to-one discussions } - init(version: Int, expiration: ExpirationJSON) { + init(version: Int, expiration: ExpirationJSON, oneToOneIdentifier: OneToOneIdentifierJSON) { self.version = version self.expiration = expiration + self.oneToOneIdentifier = oneToOneIdentifier self.groupV1Identifier = nil self.groupV2Identifier = nil } - init(version: Int, expiration: ExpirationJSON, groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)) { + init(version: Int, expiration: ExpirationJSON, groupV1Identifier: GroupV1Identifier) { self.version = version self.expiration = expiration + self.oneToOneIdentifier = nil self.groupV1Identifier = groupV1Identifier self.groupV2Identifier = nil } - init(version: Int, expiration: ExpirationJSON, groupV2Identifier: Data) { + init(version: Int, expiration: ExpirationJSON, groupV2Identifier: GroupV2Identifier) { self.version = version self.expiration = expiration + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } @@ -269,6 +331,7 @@ public struct DiscussionSharedConfigurationJSON: Codable { public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) if let groupV1Identifier = groupV1Identifier { try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) @@ -289,21 +352,31 @@ public struct DiscussionSharedConfigurationJSON: Codable { self.expiration = ExpirationJSON(readOnce: false, visibilityDuration: nil, existenceDuration: nil) } + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) + let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) - if let groupUidRaw = groupUidRaw, + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, let groupOwnerIdentity = groupOwnerIdentity, let groupUid = UID(uid: groupUidRaw), let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } else { + // This happens when receiving a message for a one2one discussion from a device running an old version of Olvid, which didn't use to send the oneToOneIdentifier) + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = nil } @@ -395,6 +468,48 @@ public struct ReturnReceiptJSON: Codable { } +public struct OneToOneIdentifierJSON: Codable, Equatable { + + private let identity1: ObvCryptoId + private let identity2: ObvCryptoId + + var identities: Set { + return Set([identity1, identity2]) + } + + public func getContactIdentity(ownedIdentity: ObvCryptoId) -> ObvCryptoId? { + if identity1 == ownedIdentity { + return identity2 + } else if identity2 == ownedIdentity { + return identity1 + } else { + assertionFailure() + return nil + } + } + + public init(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) { + self.identity1 = ownedCryptoId + self.identity2 = contactCryptoId + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.unkeyedContainer() + try container.encode(self.identity1.getIdentity()) + try container.encode(self.identity2.getIdentity()) + } + + public init(from decoder: Decoder) throws { + var container = try decoder.unkeyedContainer() + let rawIdentity1 = try container.decode(Data.self) + let rawIdentity2 = try container.decode(Data.self) + self.identity1 = try ObvCryptoId(identity: rawIdentity1) + self.identity2 = try ObvCryptoId(identity: rawIdentity2) + } + +} + + public struct ExpirationJSON: Codable, Equatable { public let readOnce: Bool @@ -471,8 +586,9 @@ public struct MessageJSON: Codable { public let senderSequenceNumber: Int public let senderThreadIdentifier: UUID public let body: String? - public let groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)? - public let groupV2Identifier: Data? + public let oneToOneIdentifier: OneToOneIdentifierJSON? + public let groupV1Identifier: GroupV1Identifier? + public let groupV2Identifier: GroupV2Identifier? public let replyTo: MessageReferenceJSON? public let expiration: ExpirationJSON? let forwarded: Bool @@ -498,6 +614,7 @@ public struct MessageJSON: Codable { case groupUid = "guid" // For group v1 case groupOwner = "go" // For group v1 case groupV2Identifier = "gid2" // For group v2 + case oneToOneIdentifier = "o2oi" // For one-to-one discussions case body = "body" case replyTo = "re" case expiration = "exp" @@ -506,10 +623,11 @@ public struct MessageJSON: Codable { case userMentions = "um" } - public init(senderSequenceNumber: Int, senderThreadIdentifier: UUID, body: String?, replyTo: MessageReferenceJSON?, expiration: ExpirationJSON?, forwarded: Bool, userMentions: [UserMention]) { + public init(senderSequenceNumber: Int, senderThreadIdentifier: UUID, body: String?, oneToOneIdentifier: OneToOneIdentifierJSON, replyTo: MessageReferenceJSON?, expiration: ExpirationJSON?, forwarded: Bool, userMentions: [UserMention]) { self.senderSequenceNumber = senderSequenceNumber self.senderThreadIdentifier = senderThreadIdentifier self.body = body + self.oneToOneIdentifier = oneToOneIdentifier self.groupV1Identifier = nil self.groupV2Identifier = nil self.replyTo = replyTo @@ -519,10 +637,11 @@ public struct MessageJSON: Codable { self.userMentions = userMentions } - public init(senderSequenceNumber: Int, senderThreadIdentifier: UUID, body: String?, groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId), replyTo: MessageReferenceJSON?, expiration: ExpirationJSON?, forwarded: Bool, userMentions: [UserMention]) { + public init(senderSequenceNumber: Int, senderThreadIdentifier: UUID, body: String?, groupV1Identifier: GroupV1Identifier, replyTo: MessageReferenceJSON?, expiration: ExpirationJSON?, forwarded: Bool, userMentions: [UserMention]) { self.senderSequenceNumber = senderSequenceNumber self.senderThreadIdentifier = senderThreadIdentifier self.body = body + self.oneToOneIdentifier = nil self.groupV1Identifier = groupV1Identifier self.groupV2Identifier = nil self.replyTo = replyTo @@ -532,10 +651,11 @@ public struct MessageJSON: Codable { self.userMentions = userMentions } - public init(senderSequenceNumber: Int, senderThreadIdentifier: UUID, body: String?, groupV2Identifier: Data, replyTo: MessageReferenceJSON?, expiration: ExpirationJSON?, forwarded: Bool, originalServerTimestamp: Date?, userMentions: [UserMention]) { + public init(senderSequenceNumber: Int, senderThreadIdentifier: UUID, body: String?, groupV2Identifier: GroupV2Identifier, replyTo: MessageReferenceJSON?, expiration: ExpirationJSON?, forwarded: Bool, originalServerTimestamp: Date?, userMentions: [UserMention]) { self.senderSequenceNumber = senderSequenceNumber self.senderThreadIdentifier = senderThreadIdentifier self.body = body + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier self.replyTo = replyTo @@ -554,21 +674,31 @@ public struct MessageJSON: Codable { self.body = body + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) + let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) - if let groupUidRaw = groupUidRaw, + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, let groupOwnerIdentity = groupOwnerIdentity, let groupUid = UID(uid: groupUidRaw), let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } else { + // This happens when receiving a message for a one2one discussion from a device running an old version of Olvid, which didn't use to send the oneToOneIdentifier) + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = nil } @@ -589,25 +719,14 @@ public struct MessageJSON: Codable { try values.decodeNil(forKey: .userMentions) == false { let decodingBlock: (Decoder) throws -> UserMention? - if #available(iOS 15, *) { - let configuration = UserMention.Configuration(message: body) - - decodingBlock = { decoder -> UserMention? in - do { - return try UserMention(from: decoder, configuration: configuration) - } catch let error as UserMention.MentionError.DecodingError { - assertionFailure("failed to decode with error: \(error)") //used for debugging - return nil - } - } - } else { - decodingBlock = { decoder -> UserMention? in - do { - return try UserMention(from: decoder, messageBody: body) - } catch let error as UserMention.MentionError.DecodingError { - assertionFailure("failed to decode with error: \(error)") //used for debugging - return nil - } + let configuration = UserMention.Configuration(message: body) + + decodingBlock = { decoder -> UserMention? in + do { + return try UserMention(from: decoder, configuration: configuration) + } catch let error as UserMention.MentionError.DecodingError { + assertionFailure("failed to decode with error: \(error)") //used for debugging + return nil } } @@ -629,6 +748,7 @@ public struct MessageJSON: Codable { public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) if let groupV1Identifier = groupV1Identifier { try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) @@ -650,23 +770,9 @@ public struct MessageJSON: Codable { } try container.encode(forwarded, forKey: .forwarded) - if let body, - userMentions.isEmpty == false { - if #available(iOS 15, *) { - let configuration = UserMention.Configuration(message: body) - - try container.encode(userMentions, forKey: .userMentions, configuration: configuration) - } else { - let encoder = container.superEncoder(forKey: .userMentions) - - var _innerContainer = encoder.unkeyedContainer() - - for aMention in userMentions { - let _currentDecoder = _innerContainer.superEncoder() - - try aMention.encode(to: _currentDecoder, messageBody: body) - } - } + if let body, userMentions.isEmpty == false { + let configuration = UserMention.Configuration(message: body) + try container.encode(userMentions, forKey: .userMentions, configuration: configuration) } } @@ -715,65 +821,65 @@ extension MessageJSON { } } -@available(iOS, deprecated: 15, message: "Please use `CodableWithConfiguration` conformance now") -extension MessageJSON.UserMention: Codable { - @available(*, deprecated, renamed: "init(from:messageBody:)") - public init(from decoder: Decoder) throws { - fatalError("init(from:) has not been implemented, please use init(from:messageBody:)") - } - - @available(*, deprecated, renamed: "encode(to:messageBody:)") - public func encode(to encoder: Encoder) throws { - fatalError("encode(to:) has not been implemented, please use encode(to:messageBody:)") - } - - public init(from decoder: Decoder, messageBody: String) throws { - let container = try decoder.container(keyedBy: CodingKeys.self) - - let data = try container.decode(Data.self, forKey: .mentionedCryptoId) - - mentionedCryptoId = try ObvCryptoId(identity: data) - - let rangeStart = try container.decode(Int.self, forKey: .rangeStart) - - let rangeEnd = try container.decode(Int.self, forKey: .rangeEnd) - - let startIndex = String.Index(utf16Offset: rangeStart, in: messageBody) - - let endIndex = String.Index(utf16Offset: rangeEnd, in: messageBody) - - let messageBodyRange = messageBody.startIndex..= startIndex else { - throw MentionError.DecodingError.mentionRangeInvalid(lower: startIndex, upper: endIndex) - } - - if endIndex > messageBody.startIndex { - guard messageBodyRange.contains(startIndex), - messageBodyRange.contains(messageBody.index(before: endIndex)) else { - throw MentionError.DecodingError.mentionRangeNotWithinMessageRange(mentionRange: startIndex..= startIndex else { +// throw MentionError.DecodingError.mentionRangeInvalid(lower: startIndex, upper: endIndex) +// } +// +// if endIndex > messageBody.startIndex { +// guard messageBodyRange.contains(startIndex), +// messageBodyRange.contains(messageBody.index(before: endIndex)) else { +// throw MentionError.DecodingError.mentionRangeNotWithinMessageRange(mentionRange: startIndex.., message: String) + // case mentionRangeNotWithinMessageRange(mentionRange: Range, message: String) } } } -@available(iOS 15, *) extension MessageJSON.UserMention: CodableWithConfiguration { public typealias DecodingConfiguration = Configuration public typealias EncodingConfiguration = Configuration @@ -802,7 +907,14 @@ extension MessageJSON.UserMention: CodableWithConfiguration { let message: String } + private enum CodingKeys: String, CodingKey { + case mentionedCryptoId = "uid" + case rangeStart = "rs" + case rangeEnd = "re" + } + public init(from decoder: Decoder, configuration: DecodingConfiguration) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) let data = try container.decode(Data.self, forKey: .mentionedCryptoId) @@ -819,18 +931,16 @@ extension MessageJSON.UserMention: CodableWithConfiguration { let endIndex = String.Index(utf16Offset: rangeEnd, in: messageBody) - let messageBodyRange = messageBody.startIndex..= startIndex else { + guard endIndex > startIndex, startIndex >= messageBody.startIndex, endIndex <= messageBody.endIndex else { throw MentionError.DecodingError.mentionRangeInvalid(lower: startIndex, upper: endIndex) } - if endIndex > messageBody.startIndex { - guard messageBodyRange.contains(startIndex), - messageBodyRange.contains(messageBody.index(before: endIndex)) else { - throw MentionError.DecodingError.mentionRangeNotWithinMessageRange(mentionRange: startIndex.. messageBody.startIndex { +// guard messageBodyRange.contains(startIndex), +// messageBodyRange.contains(messageBody.index(before: endIndex)) else { +// throw MentionError.DecodingError.mentionRangeNotWithinMessageRange(mentionRange: startIndex.. MessageIdentifier { + let authorIdentifier = MessageWriterIdentifier( + senderSequenceNumber: senderSequenceNumber, + senderThreadIdentifier: senderThreadIdentifier, + senderIdentifier: senderIdentifier) + if senderIdentifier == ownedCryptoId.getIdentity() { + return .sent(id: .authorIdentifier(writerIdentifier: authorIdentifier)) + } else { + return .received(id: .authorIdentifier(writerIdentifier: authorIdentifier)) + } + } + + public init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) self.senderSequenceNumber = try values.decode(Int.self, forKey: .senderSequenceNumber) @@ -892,8 +1015,9 @@ public struct DeleteMessagesJSON: Codable { private static func makeError(message: String) -> Error { NSError(domain: String(describing: self), code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } private func makeError(message: String) -> Error { DeleteMessagesJSON.makeError(message: message) } - let groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)? - let groupV2Identifier: Data? + public let oneToOneIdentifier: OneToOneIdentifierJSON? + let groupV1Identifier: GroupV1Identifier? + let groupV2Identifier: GroupV2Identifier? public let messagesToDelete: [MessageReferenceJSON] public var groupIdentifier: GroupIdentifier? { @@ -911,6 +1035,7 @@ public struct DeleteMessagesJSON: Codable { case groupOwner = "go" // For group V1 case groupV2Identifier = "gid2" // For group V2 case messagesToDelete = "refs" + case oneToOneIdentifier = "o2oi" // For one-to-one discussions } public init(persistedMessagesToDelete: [PersistedMessage]) throws { @@ -919,16 +1044,23 @@ public struct DeleteMessagesJSON: Codable { let discussion: PersistedDiscussion do { - let discussions = Set(persistedMessagesToDelete.map { $0.discussion }) + let discussions = Set(persistedMessagesToDelete.compactMap { $0.discussion }) guard discussions.count == 1 else { throw DeleteMessagesJSON.makeError(message: "Could not construct DeleteMessagesJSON. Expecting one discussion, got \(discussions.count)") } - discussion = discussions.first! + guard let _discussion = discussions.first else { + throw DeleteMessagesJSON.makeError(message: "Could not construct DeleteMessagesJSON. Expecting one discussion") + } + discussion = _discussion } self.messagesToDelete = persistedMessagesToDelete.compactMap { $0.toMessageReferenceJSON() } switch try discussion.kind { case .oneToOne: + guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId, let contactCryptoId = (discussion as? PersistedOneToOneDiscussion)?.contactIdentity?.cryptoId else { + throw DeleteMessagesJSON.makeError(message: "Could not determine OneToOneIdentifierJSON") + } + self.oneToOneIdentifier = OneToOneIdentifierJSON(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) self.groupV1Identifier = nil self.groupV2Identifier = nil case .groupV1(withContactGroup: let contactGroup): @@ -937,12 +1069,14 @@ public struct DeleteMessagesJSON: Codable { let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) else { throw DeleteMessagesJSON.makeError(message: "Could not determine group v1 id") } - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil case .groupV2(withGroup: let group): guard let groupV2Identifier = group?.groupIdentifier else { throw DeleteMessagesJSON.makeError(message: "Could not determine group v2 id") } + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } @@ -951,6 +1085,7 @@ public struct DeleteMessagesJSON: Codable { public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) if let groupV1Identifier = groupV1Identifier { try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) @@ -967,18 +1102,27 @@ public struct DeleteMessagesJSON: Codable { let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) - if let groupUidRaw = groupUidRaw, + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, let groupOwnerIdentity = groupOwnerIdentity, let groupUid = UID(uid: groupUidRaw), let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } else { + // This happens when receiving a message for a one2one discussion from a device running an old version of Olvid, which didn't use to send the oneToOneIdentifier) + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = nil } @@ -997,8 +1141,9 @@ public struct DeleteDiscussionJSON: Codable { private static func makeError(message: String) -> Error { NSError(domain: String(describing: self), code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } private func makeError(message: String) -> Error { DeleteDiscussionJSON.makeError(message: message) } - let groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)? - let groupV2Identifier: Data? + public let oneToOneIdentifier: OneToOneIdentifierJSON? + let groupV1Identifier: GroupV1Identifier? + let groupV2Identifier: GroupV2Identifier? public var groupIdentifier: GroupIdentifier? { if let groupV1Identifier = groupV1Identifier { @@ -1014,11 +1159,17 @@ public struct DeleteDiscussionJSON: Codable { case groupUid = "guid" // For group V1 case groupOwner = "go" // For group V1 case groupV2Identifier = "gid2" + case oneToOneIdentifier = "o2oi" // For one-to-one discussions } public init(persistedDiscussionToDelete discussion: PersistedDiscussion) throws { switch try discussion.kind { case .oneToOne: + guard let oneToOneDiscussion = discussion as? PersistedOneToOneDiscussion else { + assertionFailure() + throw DeleteDiscussionJSON.makeError(message: "Could not cast discussion into a one2one discussion. Unexpected, this is a bug") + } + self.oneToOneIdentifier = try oneToOneDiscussion.oneToOneIdentifier self.groupV1Identifier = nil self.groupV2Identifier = nil case .groupV1(withContactGroup: let contactGroup): @@ -1027,12 +1178,14 @@ public struct DeleteDiscussionJSON: Codable { let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) else { throw DeleteDiscussionJSON.makeError(message: "Could not determine group v1 id") } - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil case .groupV2(withGroup: let group): guard let groupV2Identifier = group?.groupIdentifier else { throw DeleteDiscussionJSON.makeError(message: "Could not determine group v2 id") } + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } @@ -1040,6 +1193,7 @@ public struct DeleteDiscussionJSON: Codable { public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) if let groupV1Identifier = groupV1Identifier { try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) @@ -1055,18 +1209,26 @@ public struct DeleteDiscussionJSON: Codable { let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) - if let groupUidRaw = groupUidRaw, + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, let groupOwnerIdentity = groupOwnerIdentity, let groupUid = UID(uid: groupUidRaw), let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } else { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = nil } @@ -1080,22 +1242,108 @@ public struct QuerySharedSettingsJSON: Codable, ObvErrorMaker { public static let errorDomain = "QuerySharedSettingsJSON" - public let groupV2Identifier: Data + public let oneToOneIdentifier: OneToOneIdentifierJSON? + public let groupV1Identifier: GroupV1Identifier? + public let groupV2Identifier: GroupV2Identifier? public let knownSharedSettingsVersion: Int? public let knownSharedExpiration: ExpirationJSON? - public init(groupV2Identifier: Data, knownSharedSettingsVersion: Int?, knownSharedExpiration: ExpirationJSON?) { - self.groupV2Identifier = groupV2Identifier + public init(oneToOneIdentifier: OneToOneIdentifierJSON, knownSharedSettingsVersion: Int?, knownSharedExpiration: ExpirationJSON?) { self.knownSharedSettingsVersion = knownSharedSettingsVersion self.knownSharedExpiration = knownSharedExpiration + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil } - + + public init(groupV1Identifier: GroupV1Identifier, knownSharedSettingsVersion: Int?, knownSharedExpiration: ExpirationJSON?) { + self.knownSharedSettingsVersion = knownSharedSettingsVersion + self.knownSharedExpiration = knownSharedExpiration + self.oneToOneIdentifier = nil + self.groupV1Identifier = groupV1Identifier + self.groupV2Identifier = nil + } + + public init(groupV2Identifier: GroupV2Identifier, knownSharedSettingsVersion: Int?, knownSharedExpiration: ExpirationJSON?) { + self.knownSharedSettingsVersion = knownSharedSettingsVersion + self.knownSharedExpiration = knownSharedExpiration + self.oneToOneIdentifier = nil + self.groupV1Identifier = nil + self.groupV2Identifier = groupV2Identifier + } + enum CodingKeys: String, CodingKey { + case groupUid = "guid" // For group V1 + case groupOwner = "go" // For group V1 case groupV2Identifier = "gid2" case knownSharedSettingsVersion = "ksv" case knownSharedExpiration = "exp" + case oneToOneIdentifier = "o2oi" // For one-to-one discussions + } + + + public var groupIdentifier: GroupIdentifier? { + if let groupV1Identifier = groupV1Identifier { + return .groupV1(groupV1Identifier: groupV1Identifier) + } else if let groupV2Identifier = groupV2Identifier { + return .groupV2(groupV2Identifier: groupV2Identifier) + } else { + return nil + } } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) + if let groupV1Identifier = groupV1Identifier { + try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) + try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) + } + if let groupV2Identifier = groupV2Identifier { + try container.encode(groupV2Identifier, forKey: .groupV2Identifier) + } + try container.encodeIfPresent(knownSharedSettingsVersion, forKey: .knownSharedSettingsVersion) + try container.encodeIfPresent(knownSharedExpiration, forKey: .knownSharedExpiration) + } + + public init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) + + let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) + let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) + + let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) + + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, + let groupOwnerIdentity = groupOwnerIdentity, + let groupUid = UID(uid: groupUidRaw), + let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + self.groupV2Identifier = nil + } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil + self.groupV1Identifier = nil + self.groupV2Identifier = groupV2Identifier + } else { + // This happens when receiving a message for a one2one discussion from a device running an old version of Olvid, which didn't use to send the oneToOneIdentifier) + self.oneToOneIdentifier = nil + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } + + self.knownSharedSettingsVersion = try values.decodeIfPresent(Int.self, forKey: .knownSharedSettingsVersion) + self.knownSharedExpiration = try values.decodeIfPresent(ExpirationJSON.self, forKey: .knownSharedExpiration) + + } + } @@ -1107,8 +1355,9 @@ public struct UpdateMessageJSON: Codable { private func makeError(message: String) -> Error { UpdateMessageJSON.makeError(message: message) } public let messageToEdit: MessageReferenceJSON - let groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)? - let groupV2Identifier: Data? + public let oneToOneIdentifier: OneToOneIdentifierJSON? + let groupV1Identifier: GroupV1Identifier? + let groupV2Identifier: GroupV2Identifier? public let newTextBody: String? public let userMentions: [MessageJSON.UserMention] @@ -1129,6 +1378,7 @@ public struct UpdateMessageJSON: Codable { case body = "body" case messageToEdit = "ref" case userMentions = "um" + case oneToOneIdentifier = "o2oi" // For one-to-one discussions } public init(persistedMessageSentToEdit msg: PersistedMessageSent, newTextBody: String?, userMentions: [MessageJSON.UserMention]) throws { @@ -1136,9 +1386,20 @@ public struct UpdateMessageJSON: Codable { guard let msgRef = msg.toMessageReferenceJSON() else { throw UpdateMessageJSON.makeError(message: "Could not create MessageReferenceJSON") } + guard let discussion = msg.discussion else { + throw UpdateMessageJSON.makeError(message: "Discussion is nil") + } self.messageToEdit = msgRef - switch try msg.discussion.kind { + guard let discussionKind = try msg.discussion?.kind else { + throw UpdateMessageJSON.makeError(message: "Could not find discussion") + } + switch discussionKind { case .oneToOne: + guard let oneToOneDiscussion = discussion as? PersistedOneToOneDiscussion else { + assertionFailure() + throw UpdateMessageJSON.makeError(message: "Could not cast discussion into a one2one discussion. Unexpected, this is a bug") + } + self.oneToOneIdentifier = try oneToOneDiscussion.oneToOneIdentifier self.groupV1Identifier = nil self.groupV2Identifier = nil case .groupV1(withContactGroup: let contactGroup): @@ -1147,12 +1408,14 @@ public struct UpdateMessageJSON: Codable { let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) else { throw UpdateMessageJSON.makeError(message: "Could not determine group v1 uid") } - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil case .groupV2(withGroup: let group): guard let groupV2Identifier = group?.groupIdentifier else { throw UpdateMessageJSON.makeError(message: "Could not determine group v2 uid") } + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } @@ -1161,6 +1424,7 @@ public struct UpdateMessageJSON: Codable { public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) if let groupV1Identifier = groupV1Identifier { try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) @@ -1173,44 +1437,40 @@ public struct UpdateMessageJSON: Codable { } try container.encode(messageToEdit, forKey: .messageToEdit) - if let newTextBody, - userMentions.isEmpty == false { - if #available(iOS 15, *) { - let configuration = MessageJSON.UserMention.Configuration(message: newTextBody) - - try container.encode(userMentions, forKey: .userMentions, configuration: configuration) - } else { - let encoder = container.superEncoder(forKey: .userMentions) - - var _innerContainer = encoder.unkeyedContainer() - - for aMention in userMentions { - let _currentDecoder = _innerContainer.superEncoder() - - try aMention.encode(to: _currentDecoder, messageBody: newTextBody) - } - } + if let newTextBody, userMentions.isEmpty == false { + let configuration = MessageJSON.UserMention.Configuration(message: newTextBody) + try container.encode(userMentions, forKey: .userMentions, configuration: configuration) } } public init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) + let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) - if let groupUidRaw = groupUidRaw, + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, let groupOwnerIdentity = groupOwnerIdentity, let groupUid = UID(uid: groupUidRaw), let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } else { + // This happens when receiving a message for a one2one discussion from a device running an old version of Olvid, which didn't use to send the oneToOneIdentifier) + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = nil } @@ -1224,25 +1484,14 @@ public struct UpdateMessageJSON: Codable { try values.decodeNil(forKey: .userMentions) == false { let decodingBlock: (Decoder) throws -> MessageJSON.UserMention? - if #available(iOS 15, *) { - let configuration = MessageJSON.UserMention.Configuration(message: newTextBody) - - decodingBlock = { decoder -> MessageJSON.UserMention? in - do { - return try MessageJSON.UserMention(from: decoder, configuration: configuration) - } catch let error as MessageJSON.UserMention.MentionError.DecodingError { - assert(false, "failed to decode with error: \(error)") //used for debugging - return nil - } - } - } else { - decodingBlock = { decoder -> MessageJSON.UserMention? in - do { - return try MessageJSON.UserMention(from: decoder, messageBody: newTextBody) - } catch let error as MessageJSON.UserMention.MentionError.DecodingError { - assert(false, "failed to decode with error: \(error)") //used for debugging - return nil - } + let configuration = MessageJSON.UserMention.Configuration(message: newTextBody) + + decodingBlock = { decoder -> MessageJSON.UserMention? in + do { + return try MessageJSON.UserMention(from: decoder, configuration: configuration) + } catch let error as MessageJSON.UserMention.MentionError.DecodingError { + assert(false, "failed to decode with error: \(error)") //used for debugging + return nil } } @@ -1262,6 +1511,20 @@ public struct UpdateMessageJSON: Codable { } } + + /// Allows to serialize this request when it must be saved for later in the `RemoteRequestSavedForLater` database + public func jsonEncode() throws -> Data { + let encoder = JSONEncoder() + return try encoder.encode(self) + } + + + /// Allows to deserialize this message when it was saved for later in the `RemoteRequestSavedForLater` database + public static func jsonDecode(_ data: Data) throws -> UpdateMessageJSON { + let decoder = JSONDecoder() + return try decoder.decode(UpdateMessageJSON.self, from: data) + } + } public struct ReactionJSON: Codable { @@ -1272,8 +1535,9 @@ public struct ReactionJSON: Codable { private func makeError(message: String) -> Error { ReactionJSON.makeError(message: message) } public let messageReference: MessageReferenceJSON - public let groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)? - public let groupV2Identifier: Data? + let oneToOneIdentifier: OneToOneIdentifierJSON? + public let groupV1Identifier: GroupV1Identifier? + public let groupV2Identifier: GroupV2Identifier? public let emoji: String? public var groupIdentifier: GroupIdentifier? { @@ -1292,6 +1556,7 @@ public struct ReactionJSON: Codable { case groupV2Identifier = "gid2" case emoji = "reac" case messageReference = "ref" + case oneToOneIdentifier = "o2oi" // For one-to-one discussions } public init(persistedMessageToReact msg: PersistedMessage, emoji: String?) throws { @@ -1299,9 +1564,19 @@ public struct ReactionJSON: Codable { guard let msgRef = msg.toMessageReferenceJSON() else { throw ReactionJSON.makeError(message: "Could not create MessageReferenceJSON") } + guard let discussion = msg.discussion else { + throw ReactionJSON.makeError(message: "Discussion is nil") + } self.messageReference = msgRef - switch try msg.discussion.kind { + guard let discussionKind = try msg.discussion?.kind else { + throw ReactionJSON.makeError(message: "Could not find discussion") + } + switch discussionKind { case .oneToOne: + guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId, let contactCryptoId = (discussion as? PersistedOneToOneDiscussion)?.contactIdentity?.cryptoId else { + throw ReactionJSON.makeError(message: "Could not determine OneToOneIdentifierJSON") + } + self.oneToOneIdentifier = OneToOneIdentifierJSON(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) self.groupV1Identifier = nil self.groupV2Identifier = nil case .groupV1(withContactGroup: let contactGroup): @@ -1310,12 +1585,14 @@ public struct ReactionJSON: Codable { let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) else { throw ReactionJSON.makeError(message: "Could not determine group v1 uid") } - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil case .groupV2(withGroup: let group): guard let groupV2Identifier = group?.groupIdentifier else { throw ReactionJSON.makeError(message: "Could not determine group v2 uid") } + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } @@ -1323,6 +1600,7 @@ public struct ReactionJSON: Codable { public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) if let groupV1Identifier = groupV1Identifier { try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) @@ -1340,18 +1618,26 @@ public struct ReactionJSON: Codable { let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) - - if let groupUidRaw = groupUidRaw, + + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, let groupOwnerIdentity = groupOwnerIdentity, let groupUid = UID(uid: groupUidRaw), let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } else { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = nil } @@ -1360,16 +1646,30 @@ public struct ReactionJSON: Codable { self.messageReference = try values.decode(MessageReferenceJSON.self, forKey: .messageReference) } + /// Allows to serialize this request when it must be saved for later in the `RemoteRequestSavedForLater` database + public func jsonEncode() throws -> Data { + let encoder = JSONEncoder() + return try encoder.encode(self) + } + + + /// Allows to deserialize this message when it was saved for later in the `RemoteRequestSavedForLater` database + public static func jsonDecode(_ data: Data) throws -> ReactionJSON { + let decoder = JSONDecoder() + return try decoder.decode(ReactionJSON.self, from: data) + } + } public struct ScreenCaptureDetectionJSON: Codable, ObvErrorMaker { - private let log = OSLog(subsystem: ObvUICoreDataConstants.logSubsystem, category: "DiscussionSharedConfigurationJSON") + private let log = OSLog(subsystem: ObvUICoreDataConstants.logSubsystem, category: "ScreenCaptureDetectionJSON") public static let errorDomain = "ScreenCaptureDetectionJSON" - let groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)? - let groupV2Identifier: Data? + public let oneToOneIdentifier: OneToOneIdentifierJSON? + let groupV1Identifier: GroupV1Identifier? + let groupV2Identifier: GroupV2Identifier? public var groupIdentifier: GroupIdentifier? { if let groupV1Identifier = groupV1Identifier { @@ -1385,19 +1685,23 @@ public struct ScreenCaptureDetectionJSON: Codable, ObvErrorMaker { case groupUid = "guid" // For group V1 case groupOwner = "go" // For group V1 case groupV2Identifier = "gid2" + case oneToOneIdentifier = "o2oi" // For one-to-one discussions } - public init() { + public init(oneToOneIdentifier: OneToOneIdentifierJSON) { + self.oneToOneIdentifier = oneToOneIdentifier self.groupV1Identifier = nil self.groupV2Identifier = nil } - public init(groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)) { + public init(groupV1Identifier: GroupV1Identifier) { + self.oneToOneIdentifier = nil self.groupV1Identifier = groupV1Identifier self.groupV2Identifier = nil } - public init(groupV2Identifier: Data) { + public init(groupV2Identifier: GroupV2Identifier) { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } @@ -1414,6 +1718,7 @@ public struct ScreenCaptureDetectionJSON: Codable, ObvErrorMaker { public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) if let groupV1Identifier = groupV1Identifier { try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) @@ -1429,21 +1734,280 @@ public struct ScreenCaptureDetectionJSON: Codable, ObvErrorMaker { let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) + let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) + + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, + let groupOwnerIdentity = groupOwnerIdentity, + let groupUid = UID(uid: groupUidRaw), + let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + self.groupV2Identifier = nil + } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil + self.groupV1Identifier = nil + self.groupV2Identifier = groupV2Identifier + } else { + self.oneToOneIdentifier = nil + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } + } + +} + + +public struct LimitedVisibilityMessageOpenedJSON: Codable { + + let messageReference: MessageReferenceJSON + let oneToOneIdentifier: OneToOneIdentifierJSON? + let groupV1Identifier: GroupV1Identifier? + let groupV2Identifier: GroupV2Identifier? + + public var groupIdentifier: GroupIdentifier? { + if let groupV1Identifier { + return .groupV1(groupV1Identifier: groupV1Identifier) + } else if let groupV2Identifier { + return .groupV2(groupV2Identifier: groupV2Identifier) + } else { + return nil + } + } + + + public func getMessageId(ownedCryptoId: ObvCryptoId) throws -> ReceivedMessageIdentifier { + let messageId = messageReference.getMessageId(ownedCryptoId: ownedCryptoId) + switch messageId { + case .sent, .system: + throw ObvError.doesNotReferenceReceivedMessage + case .received(let id): + return id + } + } + + + public func getDiscussionId(ownedCryptoId: ObvCryptoId) throws -> DiscussionIdentifier { + if let groupV1Identifier { + return .groupV1(id: .groupV1Identifier(groupV1Identifier: groupV1Identifier)) + } else if let groupV2Identifier { + return .groupV2(id: .groupV2Identifier(groupV2Identifier: groupV2Identifier)) + } else if let oneToOneIdentifier { + guard let contactCryptoId = oneToOneIdentifier.getContactIdentity(ownedIdentity: ownedCryptoId) else { + assertionFailure() + throw ObvError.couldNotDetermineDiscussionIdentifier + } + return .oneToOne(id: .contactCryptoId(contactCryptoId: contactCryptoId)) + } else { + throw ObvError.noDiscussionWasSpecified + } + } + + enum CodingKeys: String, CodingKey { + case messageReference = "m" + case groupUid = "guid" // For group V1 + case groupOwner = "go" // For group V1 + case groupV2Identifier = "gid2" + case oneToOneIdentifier = "o2oi" // For one-to-one discussions + } + + public init(messageReference: MessageReferenceJSON, oneToOneIdentifier: OneToOneIdentifierJSON) { + self.messageReference = messageReference + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } + + public init(messageReference: MessageReferenceJSON, groupV1Identifier: GroupV1Identifier) { + self.messageReference = messageReference + self.oneToOneIdentifier = nil + self.groupV1Identifier = groupV1Identifier + self.groupV2Identifier = nil + } + + public init(messageReference: MessageReferenceJSON, groupV2Identifier: GroupV2Identifier) { + self.messageReference = messageReference + self.oneToOneIdentifier = nil + self.groupV1Identifier = nil + self.groupV2Identifier = groupV2Identifier + } + + func jsonEncode() throws -> Data { + let encoder = JSONEncoder() + return try encoder.encode(self) + } + + static func jsonDecode(_ data: Data) throws -> ScreenCaptureDetectionJSON { + let decoder = JSONDecoder() + return try decoder.decode(ScreenCaptureDetectionJSON.self, from: data) + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(messageReference, forKey: .messageReference) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) + if let groupV1Identifier = groupV1Identifier { + try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) + try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) + } + try container.encodeIfPresent(groupV2Identifier, forKey: .groupV2Identifier) + } + + public init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.messageReference = try values.decode(MessageReferenceJSON.self, forKey: .messageReference) + + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) + + let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) + let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) + let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) - if let groupUidRaw = groupUidRaw, + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, let groupOwnerIdentity = groupOwnerIdentity, let groupUid = UID(uid: groupUidRaw), let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { - self.groupV1Identifier = (groupUid, groupOwner) + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) self.groupV2Identifier = nil } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil self.groupV1Identifier = nil self.groupV2Identifier = groupV2Identifier } else { + throw ObvError.noDiscussionWasSpecified + } + } + + enum ObvError: LocalizedError { + case noDiscussionWasSpecified + case couldNotDetermineDiscussionIdentifier + case doesNotReferenceReceivedMessage + } + +} + + +public struct DiscussionReadJSON: Codable { + + public let lastReadMessageServerTimestamp: Date + public let oneToOneIdentifier: OneToOneIdentifierJSON? + public let groupV1Identifier: GroupV1Identifier? + public let groupV2Identifier: GroupV2Identifier? + + public func getDiscussionId(ownedCryptoId: ObvCryptoId) throws -> DiscussionIdentifier { + if let groupV1Identifier { + return .groupV1(id: .groupV1Identifier(groupV1Identifier: groupV1Identifier)) + } else if let groupV2Identifier { + return .groupV2(id: .groupV2Identifier(groupV2Identifier: groupV2Identifier)) + } else if let oneToOneIdentifier { + guard let contactCryptoId = oneToOneIdentifier.getContactIdentity(ownedIdentity: ownedCryptoId) else { + assertionFailure() + throw ObvError.couldNotDetermineDiscussionIdentifier + } + return .oneToOne(id: .contactCryptoId(contactCryptoId: contactCryptoId)) + } else { + throw ObvError.noDiscussionWasSpecified + } + } + + enum CodingKeys: String, CodingKey { + case lastReadMessageServerTimestamp = "tim" + case groupUid = "guid" // For group V1 + case groupOwner = "go" // For group V1 + case groupV2Identifier = "gid2" + case oneToOneIdentifier = "o2oi" // For one-to-one discussions + } + + public init(lastReadMessageServerTimestamp: Date, oneToOneIdentifier: OneToOneIdentifierJSON) { + self.lastReadMessageServerTimestamp = lastReadMessageServerTimestamp + self.oneToOneIdentifier = oneToOneIdentifier + self.groupV1Identifier = nil + self.groupV2Identifier = nil + } + + public init(lastReadMessageServerTimestamp: Date, groupV1Identifier: GroupV1Identifier) { + self.lastReadMessageServerTimestamp = lastReadMessageServerTimestamp + self.oneToOneIdentifier = nil + self.groupV1Identifier = groupV1Identifier + self.groupV2Identifier = nil + } + + public init(lastReadMessageServerTimestamp: Date, groupV2Identifier: GroupV2Identifier) { + self.lastReadMessageServerTimestamp = lastReadMessageServerTimestamp + self.oneToOneIdentifier = nil + self.groupV1Identifier = nil + self.groupV2Identifier = groupV2Identifier + } + + func jsonEncode() throws -> Data { + let encoder = JSONEncoder() + return try encoder.encode(self) + } + + static func jsonDecode(_ data: Data) throws -> ScreenCaptureDetectionJSON { + let decoder = JSONDecoder() + return try decoder.decode(ScreenCaptureDetectionJSON.self, from: data) + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(lastReadMessageServerTimestamp.epochInMs, forKey: .lastReadMessageServerTimestamp) + try container.encodeIfPresent(oneToOneIdentifier, forKey: .oneToOneIdentifier) + if let groupV1Identifier = groupV1Identifier { + try container.encode(groupV1Identifier.groupUid.raw, forKey: .groupUid) + try container.encode(groupV1Identifier.groupOwner.getIdentity(), forKey: .groupOwner) + } + try container.encodeIfPresent(groupV2Identifier, forKey: .groupV2Identifier) + } + + public init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + let lastReadMessageServerTimestampInMilliseconds = try values.decode(Int64.self, forKey: .lastReadMessageServerTimestamp) + self.lastReadMessageServerTimestamp = Date(epochInMs: lastReadMessageServerTimestampInMilliseconds) + + let oneToOneIdentifier = try values.decodeIfPresent(OneToOneIdentifierJSON.self, forKey: .oneToOneIdentifier) + + let groupUidRaw = try values.decodeIfPresent(Data.self, forKey: .groupUid) + let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner) + + let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) + + if let oneToOneIdentifier { + self.oneToOneIdentifier = oneToOneIdentifier self.groupV1Identifier = nil self.groupV2Identifier = nil + } else if let groupUidRaw = groupUidRaw, + let groupOwnerIdentity = groupOwnerIdentity, + let groupUid = UID(uid: groupUidRaw), + let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { + self.oneToOneIdentifier = nil + self.groupV1Identifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + self.groupV2Identifier = nil + } else if let groupV2Identifier = groupV2Identifier { + self.oneToOneIdentifier = nil + self.groupV1Identifier = nil + self.groupV2Identifier = groupV2Identifier + } else { + throw ObvError.noDiscussionWasSpecified } } + enum ObvError: LocalizedError { + case noDiscussionWasSpecified + case couldNotDetermineDiscussionIdentifier + case doesNotReferenceReceivedMessage + } + } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ContactsSortOrder.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ContactsSortOrder+Utils.swift similarity index 93% rename from Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ContactsSortOrder.swift rename to Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ContactsSortOrder+Utils.swift index c22fde0f..0c12bdbe 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ContactsSortOrder.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ContactsSortOrder+Utils.swift @@ -18,10 +18,10 @@ */ import Foundation +import ObvSettings -public enum ContactsSortOrder: Int, CaseIterable { - case byFirstName = 0 - case byLastName = 1 + +extension ContactsSortOrder { func computeNormalizedSortAndSearchKey(customDisplayName: String?, firstName: String?, lastName: String?, position: String?, company: String?) -> String { @@ -40,6 +40,5 @@ public enum ContactsSortOrder: Int, CaseIterable { .folding(options: [.diacriticInsensitive, .caseInsensitive, .widthInsensitive], locale: .current) }).joined(separator: "_") } - } diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ObvDisplayNameStyle.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ObvDisplayNameStyle.swift deleted file mode 100644 index 76f25ac1..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ObvDisplayNameStyle.swift +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import ObvTypes - -public enum DisplayNameStyle { - - case firstNameThenLastName - case positionAtCompany - case full - case short -} - -public extension ObvIdentityCoreDetails { - - func getDisplayNameWithStyle(_ style: DisplayNameStyle) -> String { - switch style { - case .firstNameThenLastName: - let _firstName = firstName ?? "" - let _lastName = lastName ?? "" - return [_firstName, _lastName].joined(separator: " ").trimmingCharacters(in: .whitespacesAndNewlines) - - case .positionAtCompany: - return positionAtCompany() - - case .full: - let firstNameThenLastName = getDisplayNameWithStyle(.firstNameThenLastName) - if let positionAtCompany = getDisplayNameWithStyle(.positionAtCompany).mapToNilIfZeroLength() { - return [firstNameThenLastName, "(\(positionAtCompany))"].joined(separator: " ") - } else { - return firstNameThenLastName - } - - case .short: - return firstName ?? lastName ?? "" - } - } -} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ObvUTIUtils.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ObvUTIUtils.swift deleted file mode 100644 index 280ca4a9..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/ObvUTIUtils.swift +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import MobileCoreServices -import UniformTypeIdentifiers - - -public final class ObvUTIUtils { - - public static let kUTTypeOlvidBackup = "io.olvid.type.olvidbackup" as CFString - - public enum TagClass { - case FilenameExtension - case MIMEType - - fileprivate var cfString: CFString { - switch self { - case .FilenameExtension: - return kUTTagClassFilenameExtension - case .MIMEType: - return kUTTagClassMIMEType - } - } - } - - public static func utiOfFile(atURL url: URL) -> String? { - let fileExtension = url.pathExtension - return utiOfFile(withExtension: fileExtension) - } - - - static func utiOfFile(withExtension fileExtension: String) -> String? { - guard !fileExtension.isEmpty else { return nil } - guard let utiFromExtension = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension as CFString, nil)?.takeRetainedValue() else { return nil } - return String(utiFromExtension) - } - - public static func utiOfFile(withName fileName: String) -> String? { - let fileExtension = NSString.init(string: fileName).pathExtension - return utiOfFile(withExtension: fileExtension) - } - - public static func preferredTagWithClass(inUTI uti: String, inTagClass tagClass: TagClass) -> String? { - guard let _tag = UTTypeCopyPreferredTagWithClass(uti as CFString, tagClass.cfString) else { return nil } - let tag = _tag.takeRetainedValue() - return String(tag) - } - - - static func utiOfMIMEType(_ mimeType: String) -> String? { - guard let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)?.takeRetainedValue() else { return nil } - return String(uti) - } - - static func preferredMIMEType(forUTI uti: String) -> String? { - let _tag = UTTypeCopyPreferredTagWithClass(uti as CFString, kUTTagClassMIMEType)! - let tag = _tag.takeRetainedValue() - return String(tag) - } - - - public static func uti(_ uti: String, conformsTo conformingUTI: CFString) -> Bool { - return UTTypeConformsTo(uti as CFString, conformingUTI) - } - - - public static func jpegExtension() -> String { - let _tag = UTTypeCopyPreferredTagWithClass(kUTTypeJPEG, kUTTagClassFilenameExtension)! - let tag = _tag.takeRetainedValue() - return String(tag) - } - - - public static func pngExtension() -> String { - let _tag = UTTypeCopyPreferredTagWithClass(kUTTypePNG, kUTTagClassFilenameExtension)! - let tag = _tag.takeRetainedValue() - return String(tag) - } - - static func pdfExtension() -> String { - let _tag = UTTypeCopyPreferredTagWithClass(kUTTypePDF, kUTTagClassFilenameExtension)! - let tag = _tag.takeRetainedValue() - return String(tag) - } - - public static func guessUTIOfBinaryFile(atURL url: URL) -> String? { - - let jpegPrefix = Data([0xff, 0xd8]) - let pngPrefix = Data([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]) - let pdfPrefix = Data([0x25, 0x50, 0x44, 0x46, 0x2D]) - let mp4Signatures = ["ftyp", "mdat", "moov", "pnot", "udta", "uuid", "moof", "free", "skip", "jP2 ", "wide", "load", "ctab", "imap", "matt", "kmat", "clip", "crgn", "sync", "chap", "tmcd", "scpt", "ssrc", "PICT"].map { Data([UInt8]($0.utf8)) } - - guard let fileData = try? Data(contentsOf: url) else { - return nil - } - - if fileData.starts(with: jpegPrefix) { - return kUTTypeJPEG as String - } else if fileData.starts(with: pngPrefix) { - return kUTTypePNG as String - } else if fileData.starts(with: pdfPrefix) { - return kUTTypePDF as String - } else if mp4Signatures.contains(fileData.advanced(by: 4)[0..<4]) { - return kUTTypeMPEG4 as String - } else { - return nil - } - - } - - - public static func getHumanReadableType(forUTI uti: String) -> String? { - switch uti { - case String(kUTTypeGIF): return "GIF" - case String(kUTTypeJPEG): return "JPEG" - case String(kUTTypeBMP): return "BMP" - case String(kUTTypePDF): return "PDF" - case String(kUTTypePNG): return "PNG" - case String(kUTTypeRTF): return "RTF" - case String(kUTTypeData): return "Data" - case String(kUTTypeZipArchive): return "Zip" - case "org.openxmlformats.wordprocessingml.document": return "Word" - default: return nil - } - } -} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/UTType+Extension.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/UTType+Extension.swift new file mode 100644 index 00000000..6cc701db --- /dev/null +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/Utils/UTType+Extension.swift @@ -0,0 +1,47 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import MobileCoreServices +import UniformTypeIdentifiers + + +// MARK: - Declaring the UTType for Olvid's backup files + +extension UTType { + + /// The type for Olvid's backup files. Since we created this type, we export it. + /// See https://developer.apple.com/videos/play/tech-talks/10696 + public static let olvidBackup = UTType(exportedAs: "io.olvid.type.olvidbackup") + + public struct OpenXML { + public static let docx = UTType("org.openxmlformats.wordprocessingml.document") ?? .utf8PlainText + public static let pptx = UTType("org.openxmlformats.presentationml.presentation") ?? .presentation + public static let xlsx = UTType("org.openxmlformats.spreadsheetml.sheet") ?? .spreadsheet + } + + // Since we don't own the type and the system doesn't declare it, we added this type as an imported type identifier. + public static let doc = UTType(exportedAs: "com.microsoft.word.doc") + + public static let m4a = UTType(exportedAs: "com.apple.m4a-audio") + + // The sytem declares com.apple.internet-location but performing a drag and drop of a web location resulted in the following type. Since we don't own the type and the system doesn't declare it, we added this type as an imported type identifier. + public static let webInternetLocation = UTType(exportedAs: "com.apple.web-internet-location") + +} diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/VoIP/JSON Messages/WebRTCMessageJSON.swift b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/VoIP/JSON Messages/WebRTCMessageJSON.swift index 53d4adb1..1369ddd8 100644 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/VoIP/JSON Messages/WebRTCMessageJSON.swift +++ b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/VoIP/JSON Messages/WebRTCMessageJSON.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -34,6 +34,7 @@ public struct WebRTCMessageJSON: Codable { case kick = 9 case newIceCandidate = 10 case removeIceCandidates = 11 + case answeredOrRejectedOnOtherDevice = 12 public var description: String { switch self { @@ -49,12 +50,13 @@ public struct WebRTCMessageJSON: Codable { case .kick: return "kick" case .newIceCandidate: return "newIceCandidate" case .removeIceCandidates: return "removeIceCandidates" + case .answeredOrRejectedOnOtherDevice: return "answeredOrRejectedOnOtherDevice" } } public var isAllowedToBeRelayed: Bool { switch self { - case .startCall, .answerCall, .rejectCall, .ringing, .busy, .kick: + case .startCall, .answerCall, .rejectCall, .ringing, .busy, .kick, .answeredOrRejectedOnOtherDevice: return false case .hangedUp, .reconnect, .newParticipantOffer, .newParticipantAnswer, .newIceCandidate, .removeIceCandidates: return true diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/en.lproj/Localizable.strings b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/en.lproj/Localizable.strings deleted file mode 100644 index a2fec654..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/en.lproj/Localizable.strings +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -"No message yet." = "No message yet."; - -"Mark all as read" = "Mark all as read"; - -"count attachments" = "count attachments"; - -"Latest Discussions" = "Latest"; - -"UNREAD_EPHEMERAL_MESSAGE" = "Unread ephemeral message"; - -"MESSAGE_WAS_WIPED" = "Last message was wiped 🧹"; - -"LAST_MESSAGE_WAS_REMOTELY_WIPED" = "Last message was remotely wiped"; - -"Default" = "Default"; - -"Unlimited" = "Unlimited"; - -"SIX_HOUR" = "6 hours"; - -"TWELVE_HOURS" = "12 hours"; - -"ONE_DAY" = "1 day"; - -"TWO_DAYS" = "2 days"; - -"SEVEN_DAYS" = "7 days"; - -"FIFTEEN_DAYS" = "15 days"; - -"THIRTY_DAYS" = "30 days"; - -"NINETY_DAYS" = "90 days"; - -"ONE_HUNDRED_AND_HEIGHTY_DAYS" = "180 days"; - -"ONE_YEAR" = "1 year"; - -"THREE_YEAR" = "3 years"; - -"FIVE_YEAR" = "5 years"; - -"YOU_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE" = "You took a screenshot of a sensitive message, other participants have been notified."; - -"CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_%@" = "%@ took a screenshot of a sensitive message."; - -"CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_WHEN_CONTACT_IS_UNKNOWN" = "A participant took a screenshot of a sensitive message."; - -"YOU_ARE_NOW_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" = "You are now a group administrator 😎."; - -"YOU_ARE_NO_LONGER_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" = "You are no longer a group administrator."; - -"MEMBERS_OF_GROUP_V2_WERE_UPDATED_SYSTEM_MESSAGE" = "Group members have been updated. Tap to learn more."; - -/* System message displayed within a group discussion */ -"%@_ACCEPTED_TO_JOIN_THIS_GROUP_AT_%@" = "%@ has joined this group - %@"; - -"%@_ACCEPTED_TO_JOIN_THIS_GROUP" = "%@ has joined this group"; - -/* System message displayed within a group discussion */ -"%@_LEFT_THIS_GROUP_AT_%@" = "%@ left this group - %@"; - -"%@_LEFT_THIS_GROUP" = "%@ left this group"; - -/* System message displayed at the top of each conversation. */ -"Messages posted in this discussion are protected using end-to-end encryption. Their confidentiality, their authenticity, and the identity of their sender are guaranteed through cryptography." = "🔒 Messages posted in this discussion are protected using end-to-end encryption. Their confidentiality, their authenticity, and the identity of their sender are guaranteed through cryptography."; - -/* System message displayed within a group discussion */ -"This contact was deleted from your contacts, either because you did or because this contact deleted you." = "This contact was deleted from your Olvid contacts, either because you did or because this contact deleted you from their own contacts."; - -"FROM_%@" = "from %@"; - -"WITH_%@" = "with %@"; - -"AND_ONE_OTHER" = "and one other"; - -"AND_%@_OTHERS" = "and %@ others"; - -"MISSED_CALL" = "Missed Call"; - -"MISSED_CALL_FILTERED" = "Missed call while you were in \"Focus\" mode."; - -"ACCEPTED_OUTGOING_CALL" = "Outgoing call"; - -"ACCEPTED_INCOMING_CALL" = "Incoming call"; - -"REJECTED_OUTGOING_CALL" = "Rejected outgoing call"; - -"REJECTED_INCOMING_CALL" = "Rejected incoming call"; - -"BUSY_OUTGOING_CALL" = "Busy outgoing call"; - -"UNANSWERED_OUTGOING_CALL" = "Unanswered outgoing call"; - -"UNCOMPLETED_OUTGOING_CALL" = "Uncompleted outgoing call"; - -"ANY_INCOMING_CALL" = "Incoming call..."; - -"ANY_OUTGOING_CALL" = "Outgoing call..."; - -"CONTACT_REVOKED_BY_COMPANY_IDENTITY_PROVIDER" = "Contact revoked by your company's identity provider"; - -"NOT_PART_OF_THE_GROUP_ANYMORE" = "You are not part of this group anymore, either because you left it, because an administrator removed you, or because the group was deleted 🥲."; - -"REJOINED_GROUP" = "You are again part of this group ✌️."; - -"CONTACT_%@_IS_ONE_TO_ONE_AGAIN" = "%@ is part of your contacts again, you can continue your discussion where you left off 🤗."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_UNDETERMINED" = "The incoming call was rejected because Olvid is not allowed to access the microphone. Please tap on this message to allow Olvid to access the Microphone."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_GRANTED" = "The incoming call was rejected because Olvid was not allowed to access the Microphone. Fortunately, since then, this autorisation was granted. You won't miss a call again 🥳!"; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_DENIED" = "The incoming call was rejected because Olvid is not allowed to access the Microphone. To never miss a call again, please go to Settings and grant Olvid access to the microphone."; - -"REJECTED_INCOMING_CALL" = "Rejected incoming call"; - -"DISCUSSION_SHARED_SETTINGS_WERE_UPDATED" = "Discussion shared settings were updated"; - -"This discussion was remotely wiped by %@ on %@" = "This discussion was remotely wiped by %@ on %@"; - -"This discussion was remotely wiped by %@" = "This discussion was remotely wiped by %@"; - -"NO_SOUNDS" = "None"; - -"SYSTEM_SOUND" = "System sound"; - -"CALL_STATE_NEW" = "New call..."; - -"CALL_STATE_GETTING_TURN_CREDENTIALS" = "Authentication..."; - -"CALL_STATE_KICKED" = "Excluded"; - -"CALL_STATE_INITIALIZING_CALL" = "Initializing call..."; - -"CALL_STATE_RINGING" = "Ringing..."; - -"CALL_STATE_CALL_REJECTED" = "Call rejected"; - -"SECURE_CALL_IN_PROGRESS" = "Secure call in progress"; - -"CALL_STATE_HANGED_UP" = "Hanged up"; - -"CALL_STATE_PERMISSION_DENIED_BY_SERVER" = "Connection denied by the server"; - -"UNANSWERED" = "Unanswered"; - -"CALL_INITIALISATION_NOT_SUPPORTED" = "Secure calls are not supported"; - -"CALL_FAILED" = "Call failed 😟"; - -"ONE_HOUR" = "1 hour"; - -"EIGHT_HOURS" = "8 hours"; - -"SEVEN_DAYS" = "7 days"; - -"INDEFINITELY" = "indefinitely"; - -/* Can serve as a name in the sentence \"%@ accepted to join this group\" */ -"A (now deleted) contact" = "Deleted contact"; - -"Read" = "Read"; - -"Wiped" = "Wiped"; - -"Remotely wiped" = "Remotely wiped"; - -"Edited" = "Edited"; diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/en.lproj/Localizable.stringsdict b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/en.lproj/Localizable.stringsdict deleted file mode 100644 index 1e7a2e86..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/en.lproj/Localizable.stringsdict +++ /dev/null @@ -1,60 +0,0 @@ - - - - - count new messages - - NSStringLocalizedFormatKey - %#@VARIABLE@ - VARIABLE - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No new message - one - 1 new message - other - %u new messages - - - count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No attachment - one - One attachment - other - %u attachments - - - WITH_N_PARTICIPANTS - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - without any participant - one - with one participant - other - with %u participants - - - - diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/fr.lproj/Localizable.strings b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/fr.lproj/Localizable.strings deleted file mode 100644 index f617ea98..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/fr.lproj/Localizable.strings +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -"No message yet." = "Aucun message pour le moment."; - -"Mark all as read" = "Tout marquer comme lu"; - -"count attachments" = "count attachments"; - -"Latest Discussions" = "Récentes"; - -"UNREAD_EPHEMERAL_MESSAGE" = "Message éphémère non lu"; - -"MESSAGE_WAS_WIPED" = "Dernier message expiré 🧹"; - -"LAST_MESSAGE_WAS_REMOTELY_WIPED" = "Dernier message éliminé à distance"; - -"Default" = "Par défaut"; - -"Unlimited" = "Illimité"; - -"SIX_HOUR" = "6 heures"; - -"TWELVE_HOURS" = "12 heures"; - -"ONE_DAY" = "1 jour"; - -"TWO_DAYS" = "2 jours"; - -"SEVEN_DAYS" = "7 jours"; - -"FIFTEEN_DAYS" = "15 jours"; - -"THIRTY_DAYS" = "30 jours"; - -"NINETY_DAYS" = "90 jours"; - -"ONE_HUNDRED_AND_HEIGHTY_DAYS" = "180 jours"; - -"ONE_YEAR" = "1 an"; - -"THREE_YEAR" = "3 ans"; - -"FIVE_YEAR" = "5 ans"; - -"YOU_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE" = "Vous avez fait une capture d'un message sensible, les participants de cette discussion ont été notifiés."; - -"CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_%@" = "%@ a fait une capture d'un message sensible."; - -"CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_WHEN_CONTACT_IS_UNKNOWN" = "Un particpant a fait une capture d'un message sensible."; - -"YOU_ARE_NOW_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" = "Vous êtes maintenant un administrateur de ce groupe 😎."; - -"YOU_ARE_NO_LONGER_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" = "Vous n'êtes plus administrateur de ce groupe."; - -"MEMBERS_OF_GROUP_V2_WERE_UPDATED_SYSTEM_MESSAGE" = "Les membres du groupe ont été mis à jour. Touchez pour en savoir plus."; - -/* System message displayed within a group discussion */ -"%@_ACCEPTED_TO_JOIN_THIS_GROUP_AT_%@" = "%@ a rejoint ce groupe - %@"; - -"%@_ACCEPTED_TO_JOIN_THIS_GROUP" = "%@ a rejoint ce groupe"; - -/* System message displayed within a group discussion */ -"%@_LEFT_THIS_GROUP_AT_%@" = "%@ a quitté ce groupe - %@"; - -"%@_LEFT_THIS_GROUP" = "%@ a quitté ce groupe"; - -/* System message displayed at the top of each conversation. */ -"Messages posted in this discussion are protected using end-to-end encryption. Their confidentiality, their authenticity, and the identity of their sender are guaranteed through cryptography." = "🔒 Les messages postés dans cette discussion sont protégés par du chiffrement de bout-en-bout. Leur confidentialité, leur authenticité et l'identité de leur expéditeur sont garanties grâce à la cryptographie."; - -/* System message displayed within a group discussion */ -"This contact was deleted from your contacts, either because you did or because this contact deleted you." = "Ce contact a été supprimé de vos contacts Olvid, soit par vous-même, soit parce que ce contact vous a supprimé de ses propres contacts."; - -"FROM_%@" = "de %@"; - -"WITH_%@" = "avec %@"; - -"AND_ONE_OTHER" = "et un autre"; - -"AND_%@_OTHERS" = "et %@ autres"; - -"MISSED_CALL" = "Appel manqué"; - -"MISSED_CALL_FILTERED" = "Appel manqué alors que vous étiez en mode « Concentration »."; - -"ACCEPTED_OUTGOING_CALL" = "Appel sortant"; - -"ACCEPTED_INCOMING_CALL" = "Appel entrant"; - -"REJECTED_OUTGOING_CALL" = "Appel sortant rejeté"; - -"REJECTED_INCOMING_CALL" = "Appel entrant rejeté"; - -"BUSY_OUTGOING_CALL" = "Appel sortant occupé"; - -"UNANSWERED_OUTGOING_CALL" = "Appel sortant sans réponse"; - -"UNCOMPLETED_OUTGOING_CALL" = "Appel sortant non abouti"; - -"ANY_INCOMING_CALL" = "Appel entrant..."; - -"ANY_OUTGOING_CALL" = "Appel sortant..."; - -"CONTACT_REVOKED_BY_COMPANY_IDENTITY_PROVIDER" = "Contact revoqué par le fournisseur d'identités de votre société"; - -"NOT_PART_OF_THE_GROUP_ANYMORE" = "Vous ne faites plus partie de ce groupe, parce que vous l'avez quitté, parce qu'un administrateur vous a retiré du groupe, ou tout simplement parce que le groupe a été supprimé 🥲."; - -"REJOINED_GROUP" = "Vous faites à nouveau partie du groupe ✌️"; - -"CONTACT_%@_IS_ONE_TO_ONE_AGAIN" = "%@ fait à nouveau partie de vos contacts, vous pouvez reprendre la discussion là où vous l'aviez laissée 🤗."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_UNDETERMINED" = "L'appel entrant n'a pas abouti car Olvid n'a pas l'autorisation d'accéder au micro. Cliquez sur ce message pour autoriser l'accès au micro."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_GRANTED" = "L'appel entrant n'a pas abouti car Olvid n'avait pas l'autorisation d'accéder au micro. Fort heureusement, l'autorisation a été accordée. Vous ne raterez plus aucun appel 🥳 !"; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_DENIED" = "L'appel entrant n'a pas abouti car Olvid n'a pas l'autorisation d'accéder au micro. Pour ne plus rater d'appel, allez dans les Réglages et autorisez l'accès au micro pour Olvid."; - -"REJECTED_INCOMING_CALL" = "Appel entrant rejeté"; - -"DISCUSSION_SHARED_SETTINGS_WERE_UPDATED" = "Les paramètres partagés de la discussion ont été mis à jour"; - -"This discussion was remotely wiped by %@ on %@" = "Cette discussion a été effacée à distance par %@ le %@"; - -"This discussion was remotely wiped by %@" = "Cette discussion a été effacée à distance par %@"; - -"NO_SOUNDS" = "Aucun"; - -"SYSTEM_SOUND" = "Son système"; - -"CALL_STATE_NEW" = "Nouvel appel..."; - -"CALL_STATE_GETTING_TURN_CREDENTIALS" = "Authentification..."; - -"CALL_STATE_KICKED" = "Exclue"; - -"CALL_STATE_INITIALIZING_CALL" = "Initialisation de l'appel..."; - -"CALL_STATE_RINGING" = "Sonnerie..."; - -"CALL_STATE_CALL_REJECTED" = "Appel refusé"; - -"SECURE_CALL_IN_PROGRESS" = "Appel sécurisé en cours"; - -"CALL_STATE_HANGED_UP" = "Appel raccroché"; - -"CALL_STATE_PERMISSION_DENIED_BY_SERVER" = "Connexion refusée par le serveur"; - -"UNANSWERED" = "Sans réponse"; - -"CALL_INITIALISATION_NOT_SUPPORTED" = "Appels non supportés"; - -"CALL_FAILED" = "L'appel a échoué 😟"; - -"ONE_HOUR" = "1 heure"; - -"EIGHT_HOURS" = "8 heures"; - -"SEVEN_DAYS" = "7 jours"; - -"INDEFINITELY" = "Indéfiniment"; - -/* Can serve as a name in the sentence \"%@ accepted to join this group\" */ -"A (now deleted) contact" = "Contact supprimé"; - -"Read" = "Lu"; - -"Wiped" = "Expiré"; - -"Remotely wiped" = "Éliminé à distance"; - -"Edited" = "Modifié"; diff --git a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/fr.lproj/Localizable.stringsdict b/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/fr.lproj/Localizable.stringsdict deleted file mode 100644 index 13ed3a7f..00000000 --- a/Modules/OlvidUI/ObvUICoreData/ObvUICoreData/fr.lproj/Localizable.stringsdict +++ /dev/null @@ -1,340 +0,0 @@ - - - - - You are about to introduce X to Y and count other contacts. - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Vous allez présenter %2$@ à %3$@. - one - Vous allez présenter %2$@ à %3$@ et un autre contact. - other - Vous allez présenter %2$@ à %3$@ et %1$d autres contacts. - - - You successfully introduced X to Y and count other contacts. - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Vous avez présenté %2$@ à %3$@. - one - Vous avez présenté %2$@ à %3$@ et un autre contact. - other - Vous avez présenté %2$@ à %3$@ et %1$d autres contacts. - - - see count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - → Voir la pièce jointe - other - → Voir les %u pièces jointes - zero - Aucune pièce jointe - - - count new messages - - NSStringLocalizedFormatKey - %#@VARIABLE@ - VARIABLE - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - 1 nouveau message - other - %u nouveaux messages - zero - Aucun nouveau message - - - count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Une pièce jointe - other - %u pièces jointes - zero - Aucune pièce jointe - - - share count photos - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Partager la photo - other - Partager les %u photos - zero - Aucune photo à partager - - - share count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Aucune pièce jointe - one - Partager la pièce jointe - other - Partager les %u pièces jointes - - - You are about to delete a message together with its count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Vous vous apprêtez à supprimer un message. - one - Vous vous apprêtez à supprimer un message et sa pièce jointe. - other - Vous vous apprêtez à supprimer un message et ses %d pièces jointes. - - - recent backups count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Aucune sauvegarde - one - Une sauvegarde - other - %u sauvegardes les plus récentes - - - backups count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Aucune sauvegarde - one - Une sauvegarde - other - %u sauvegardes - - - missed messages count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - 1 message manquant - other - %u messages manquants - - - clean in progress count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Pas de sauvegardes supprimées - one - Une sauvegarde supprimée - other - %u sauvegardes supprimées - - - KEYCLOAK_MISSING_SEARCH_RESULT - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Un résultat supplémentaire est disponible. Veuillez affiner votre recherche. - other - %u résultats supplémentaires sont disponibles. Veuillez affiner votre recherche. - - - AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_MESSAGE - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Pour changer ce paramètre, vous devez accepter une invitation de groupe en attente. - other - Pour changer ce paramètre, vous devez accepter %u invitations de groupe en attente. - - - AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_ACCEPT_ACTION_TITLE - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Accepter l'invitation de groupe maintenant - other - Accepter les %u invitations de groupe maintenant - - - CHOOSE_OR_NUMBER_OF_CHOSEN_DISCUSSION - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - choisir - one - une sélectionnée - other - %u sélectionnées - - - NUMBER_OF_ITEMS_SELECTED - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Sélectionner des éléments - one - 1 élément sélectionné - other - %u éléments sélectionnés - - - NUMBER_OF_ELEMENTS - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Aucun élément - one - 1 élément - other - %u éléments - - - WITH_N_PARTICIPANTS - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - sans aucun participant - one - avec un participant - other - avec %u participants - - - - diff --git a/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/NSManagedObjectContext+PerformAndWaitWithReturnType.swift b/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/NSManagedObjectContext+PerformAndWaitWithReturnType.swift deleted file mode 100644 index 559564d5..00000000 --- a/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/NSManagedObjectContext+PerformAndWaitWithReturnType.swift +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData.NSManagedObjectContext - -public extension NSManagedObjectContext { - - /// Helper method that wraps around `NSManagedObjectContext.performAndWait(_:)` if we're on iOS 15+ - func obvPerformAndWait(_ block: () -> T) -> T { - if #available(iOS 15, *) { - return performAndWait(block) - } else { - var result: T! - - performAndWait { () -> Void in - result = block() - } - - return result - } - } - - /// Helper method that wraps around `NSManagedObjectContext.performAndWait(_:)` if we're on iOS 15+ - func obvPerformAndWait(_ block: () throws -> T) throws -> T { - if #available(iOS 15, *) { - return try performAndWait(block) - } else { - var result: Result! - - performAndWait { () -> Void in - result = .init(catching: block) - } - - return try result.get() - } - } -} diff --git a/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/NSPredicate+Initializers.swift b/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/NSPredicate+Initializers.swift index 5dc78c90..eaee59ff 100644 --- a/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/NSPredicate+Initializers.swift +++ b/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/NSPredicate+Initializers.swift @@ -108,6 +108,14 @@ public extension NSPredicate { self.init(format: "%K < %@", rawKey, date as NSDate) } + convenience init(_ key: T, earlierOrAt date: Date) where T.RawValue == String { + self.init(key.rawValue, earlierOrAt: date) + } + + convenience init(_ rawKey: String, earlierOrAt date: Date) { + self.init(format: "%K <= %@", rawKey, date as NSDate) + } + convenience init(_ key: T, earlierOrEqualTo date: Date) where T.RawValue == String { self.init(key.rawValue, earlierOrEqualTo: date) } diff --git a/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/ObvContext.swift b/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/ObvContext.swift index 49d4172c..2294c993 100644 --- a/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/ObvContext.swift +++ b/Modules/OlvidUtils/OlvidUtils/CoreDataUtils/ObvContext.swift @@ -112,16 +112,10 @@ public final class ObvContext: Hashable { } - func makeAssertionChecks() { - assert(contextDidSaveCompletionHandlers.isEmpty) - } - deinit { if let token { NotificationCenter.default.removeObserver(token) } - assert(contextDidSaveCompletionHandlers.isEmpty) - assert(endOfScopeCompletionHandlers.isEmpty) } private func performAllContextWillSaveCompletionHandlers() { diff --git a/Modules/OlvidUtils/OlvidUtils/Operations/AsyncOperationWithSpecificReasonForCancel.swift b/Modules/OlvidUtils/OlvidUtils/Operations/AsyncOperationWithSpecificReasonForCancel.swift new file mode 100644 index 00000000..6147a8a4 --- /dev/null +++ b/Modules/OlvidUtils/OlvidUtils/Operations/AsyncOperationWithSpecificReasonForCancel.swift @@ -0,0 +1,60 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +open class AsyncOperationWithSpecificReasonForCancel: OperationWithSpecificReasonForCancel { + + + private var _isFinished = false { + willSet { willChangeValue(for: \.isFinished) } + didSet { didChangeValue(for: \.isFinished) } + } + + + final public override var isFinished: Bool { _isFinished } + + + final public override func cancel(withReason reason: ReasonForCancelType) { + super.cancel(withReason: reason) + _isFinished = true + } + + + final public func finish() { + _isFinished = true + } + + + final public override func main() { + Task { + await main() + } + } + + /// This method is the one to override in subclasses, instead of the ``main()`` method. + /// The override *must* call either ``finish()`` or ``cancel(withReason:)`` in order to finish this operation (and preventing a potential deadlock if the queue is a serial queue). + open func main() async { + // Expected to be overridden in subclasses + assertionFailure("Expected to be overridden in subclasses") + return finish() + } + +} diff --git a/Modules/OlvidUtils/OlvidUtils/Operations/Composition/CompositionOfFiveContextualOperations.swift b/Modules/OlvidUtils/OlvidUtils/Operations/Composition/CompositionOfFiveContextualOperations.swift index c361621b..f29f3969 100644 --- a/Modules/OlvidUtils/OlvidUtils/Operations/Composition/CompositionOfFiveContextualOperations.swift +++ b/Modules/OlvidUtils/OlvidUtils/Operations/Composition/CompositionOfFiveContextualOperations.swift @@ -119,7 +119,6 @@ public final class CompositionOfFiveContextualOperations let queueForComposedOperations: OperationQueue + public private(set) var executionStartDate: Date? public init(op1: ContextualOperationWithSpecificReasonForCancel, contextCreator: ObvContextCreator, queueForComposedOperations: OperationQueue, log: OSLog, flowId: FlowIdentifier) { self.contextCreator = contextCreator @@ -46,10 +47,13 @@ public final class CompositionOfOneContextualOperation took %f seconds", log: log, type: .info, op1Description, duration) + } + } + } diff --git a/Modules/OlvidUtils/OlvidUtils/Operations/Composition/CompositionOfThreeContextualOperations.swift b/Modules/OlvidUtils/OlvidUtils/Operations/Composition/CompositionOfThreeContextualOperations.swift index 5b0702d9..33e3d415 100644 --- a/Modules/OlvidUtils/OlvidUtils/Operations/Composition/CompositionOfThreeContextualOperations.swift +++ b/Modules/OlvidUtils/OlvidUtils/Operations/Composition/CompositionOfThreeContextualOperations.swift @@ -94,7 +94,6 @@ public final class CompositionOfThreeContextualOperations: OperationWithSpecificReasonForCancel, ContextualOperation { +open class ContextualOperationWithSpecificReasonForCancel: OperationWithSpecificReasonForCancel, ContextualOperation, ObvErrorMaker { + + public static var errorDomain: String { String(describing: self) } public var obvContext: ObvContext? public var viewContext: NSManagedObjectContext? @@ -38,4 +40,25 @@ open class ContextualOperationWithSpecificReasonForCancel" } + final public override func main() { + guard let obvContext else { + assertionFailure() + self.cancel() + return + } + guard let viewContext else { + assertionFailure() + self.cancel() + return + } + obvContext.performAndWait { + main(obvContext: obvContext, viewContext: viewContext) + } + } + + /// This method is the one to override in subclasses, instead of the ``main()`` method. It is executed on a thread that is appropriate for the `ObvContext`. + open func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + // Expected to be overridden in subclasses + } + } diff --git a/Modules/OlvidUtils/OlvidUtils/Operations/OperationQueue+addAndAwaitOperation.swift b/Modules/OlvidUtils/OlvidUtils/Operations/OperationQueue+addAndAwaitOperation.swift new file mode 100644 index 00000000..3672f53d --- /dev/null +++ b/Modules/OlvidUtils/OlvidUtils/Operations/OperationQueue+addAndAwaitOperation.swift @@ -0,0 +1,45 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +extension OperationQueue { + + /// Adds the specified operation to the queue and wait until the operation is finished. + public func addAndAwaitOperation(_ op: Operation) async { + await withCheckedContinuation { (continuation: CheckedContinuation) in + let currentCompletion = op.completionBlock + op.completionBlock = { + continuation.resume() + currentCompletion?() + } + self.addOperation(op) + } + } + + /// Adds the specified operations to the queue and wait until the operations are finished. + public func addAndAwaitOperations(_ ops: [Operation]) async { + await withCheckedContinuation { (continuation: CheckedContinuation) in + self.addOperations(ops, waitUntilFinished: true) + continuation.resume() + } + } + +} diff --git a/Modules/OlvidUtils/OlvidUtils/Operations/OperationWithSpecificReasonForCancel.swift b/Modules/OlvidUtils/OlvidUtils/Operations/OperationWithSpecificReasonForCancel.swift index 111d7b2a..d1bc9b23 100644 --- a/Modules/OlvidUtils/OlvidUtils/Operations/OperationWithSpecificReasonForCancel.swift +++ b/Modules/OlvidUtils/OlvidUtils/Operations/OperationWithSpecificReasonForCancel.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -69,19 +69,16 @@ public protocol LocalizedErrorWithLogType: LocalizedError { public enum CoreDataOperationReasonForCancel: LocalizedErrorWithLogType { case coreDataError(error: Error) - case contextIsNil public var logType: OSLogType { switch self { - case .coreDataError, .contextIsNil: + case .coreDataError: return .fault } } public var errorDescription: String? { switch self { - case .contextIsNil: - return "Context is nil" case .coreDataError(error: let error): return "Core Data error: \(error.localizedDescription)" } diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/SwiftUIUtils.swift b/Modules/OlvidUtils/OlvidUtils/SwiftUI/SwiftUIUtils.swift similarity index 56% rename from iOSClient/ObvMessenger/ObvMessenger/UIElements/SwiftUIUtils.swift rename to Modules/OlvidUtils/OlvidUtils/SwiftUI/SwiftUIUtils.swift index c7768f10..56a2d198 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/SwiftUIUtils.swift +++ b/Modules/OlvidUtils/OlvidUtils/SwiftUI/SwiftUIUtils.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,36 +20,9 @@ import SwiftUI -extension List { - - @ViewBuilder - func obvListStyle() -> some View { - if #available(iOS 15.0, *) { - self.listStyle(InsetGroupedListStyle()) - } else { - self.listStyle(DefaultListStyle()) - } - } - -} - - - -struct ObvProgressView: View { - var body: some View { - if #available(iOS 14, *) { - ProgressView() - } else { - ObvActivityIndicator(isAnimating: .constant(true), style: .large, color: nil) - } - } -} - - - extension View { @ViewBuilder - func `if`(_ condition: Bool, transform: (Self) -> Transform) -> some View { + public func `if`(_ condition: Bool, transform: (Self) -> Transform) -> some View { if condition { transform(self) } else { @@ -57,67 +30,68 @@ extension View { } } - @ViewBuilder - public func bottomListRowSeparatorTint(_ condition: Bool, _ color: Color?) -> some View { - if #available(iOS 15.0, *), condition { - self.listRowSeparatorTint(color, edges: .bottom) - } else { - self - } - } - - @ViewBuilder - public func obvNavigationTitle(_ title: Text) -> some View { - if #available(iOS 14.0, *) { - self.navigationTitle(title) - } else { - self - } - } } -struct DottedCircle: View { +public struct DottedCircle: View { let radius: CGFloat let pi = Double.pi let dotCount = 14 let dotLength: CGFloat = 4 let spaceLength: CGFloat - init(radius: CGFloat) { + public init(radius: CGFloat) { self.radius = radius let circumerence: CGFloat = CGFloat(2.0 * pi) * radius self.spaceLength = circumerence / CGFloat(dotCount) - dotLength } - var body: some View { + public var body: some View { Circle() .stroke(.gray, style: StrokeStyle(lineWidth: 2, lineCap: .butt, lineJoin: .miter, miterLimit: 0, dash: [dotLength, spaceLength], dashPhase: 0)) .frame(width: radius * 2, height: radius * 2) } } -struct Positions: PreferenceKey { - static var defaultValue: [String: Anchor] = [:] - static func reduce(value: inout [String: Anchor], nextValue: () -> [String: Anchor]) { + +public struct Positions: PreferenceKey { + public static var defaultValue: [String: Anchor] = [:] + public static func reduce(value: inout [String: Anchor], nextValue: () -> [String: Anchor]) { value.merge(nextValue(), uniquingKeysWith: { current, _ in return current }) } } -struct PositionReader: View { + +public struct PositionReader: View { + let tag: String - var body: some View { + + public init(tag: String) { + self.tag = tag + } + + public var body: some View { Color.clear .anchorPreference(key: Positions.self, value: .center) { (anchor) in [tag: anchor] } } + } + extension Task where Success == Never, Failure == Never { - static func sleep(seconds: Double) async throws { + public static func sleep(seconds: Double) async throws { let duration = UInt64(seconds * 1_000_000_000) try await Task.sleep(nanoseconds: duration) } + public static func sleep(for timeInterval: TimeInterval) async throws { + let duration = UInt64(timeInterval * 1_000_000_000) + try await Task.sleep(nanoseconds: duration) + } + public static func sleep(milliseconds: Int) async throws { + let duration = UInt64(milliseconds * 1_000_000) + try await Task.sleep(nanoseconds: duration) + } } diff --git a/Modules/OlvidUtils/OlvidUtils/TypeExtensions/Dictionary+MapKeysAndValues.swift b/Modules/OlvidUtils/OlvidUtils/TypeExtensions/Dictionary+MapKeysAndValues.swift new file mode 100644 index 00000000..65a4a759 --- /dev/null +++ b/Modules/OlvidUtils/OlvidUtils/TypeExtensions/Dictionary+MapKeysAndValues.swift @@ -0,0 +1,65 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +public extension Dictionary { + + /// Creates a new dictionary from `self`, applying `keyMapping` to each key of `self.keys` and applying `valueMapping` to each value of `self.values`. + /// + /// Note that both `keyMapping` and `valueMapping` may return `nil`. When they do, the original dictionary entry is omitted. + /// + /// Usage example: + /// ``` + /// let dict: [String: Int] = ["Alice": 0, "Bob": 1] + /// let newDict: [Data: Double] = .init(dict, + /// keyMapping: { $0.data(using: .utf8) }, + /// valueMapping: { Double($0) }) + /// ``` + init(_ originalDictionary: Dictionary, keyMapping: (K) -> Key?, valueMapping: (V) -> Value?) { + let newKeysAndValues: [(Key,Value)] = originalDictionary.compactMap { (key, value) in + guard let newKey = keyMapping(key) else { assertionFailure(); return nil } + guard let newValue = valueMapping(value) else { assertionFailure(); return nil } + return (newKey, newValue) + } + self.init(newKeysAndValues) { (first, _) in assertionFailure(); return first } + } + + /// Creates a new dictionary from `self`, applying `keyMapping` to each key of `self.keys` and applying `valueMapping` to each value of `self.values`. + /// + /// Note that both `keyMapping` and `valueMapping` may return `nil`. When they do, the original dictionary entry is omitted. + /// + /// Usage example: + /// ``` + /// let dict: [String: Int] = ["Alice": 0, "Bob": 1] + /// let newDict: [Data: Double] = .init(dict, + /// keyMapping: { $0.data(using: .utf8) }, + /// valueMapping: { Double($0) }) + /// ``` + init(_ originalDictionary: Dictionary, keyMapping: (K) throws -> Key?, valueMapping: (V) throws -> Value?) rethrows { + let newKeysAndValues: [(Key,Value)] = try originalDictionary.compactMap { (key, value) in + guard let newKey = try keyMapping(key) else { assertionFailure(); return nil } + guard let newValue = try valueMapping(value) else { assertionFailure(); return nil } + return (newKey, newValue) + } + self.init(newKeysAndValues) { (first, _) in assertionFailure(); return first } + } + +} diff --git a/Modules/OlvidUtils/OlvidUtils/TypeExtensions/Operation+Utils.swift b/Modules/OlvidUtils/OlvidUtils/TypeExtensions/Operation+Utils.swift new file mode 100644 index 00000000..cb4ad9ed --- /dev/null +++ b/Modules/OlvidUtils/OlvidUtils/TypeExtensions/Operation+Utils.swift @@ -0,0 +1,33 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +public extension Operation { + + func appendCompletionBlock(_ newCompletionBlock: @escaping () -> Void) { + let previousCompletionBlock = self.completionBlock + self.completionBlock = { + previousCompletionBlock?() + newCompletionBlock() + } + } + +} diff --git a/Modules/OlvidUtils/OlvidUtils/TypeExtensions/UIDevice+CurrentDeviceName.swift b/Modules/OlvidUtils/OlvidUtils/TypeExtensions/UIDevice+CurrentDeviceName.swift new file mode 100644 index 00000000..3b03f889 --- /dev/null +++ b/Modules/OlvidUtils/OlvidUtils/TypeExtensions/UIDevice+CurrentDeviceName.swift @@ -0,0 +1,165 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit + + +public extension UIDevice { + + private var currentDeviceCode: String { + #if targetEnvironment(simulator) + let machine = ProcessInfo.processInfo.environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "couldNotDetermineSimulatorModel" + return machine + #elseif targetEnvironment(macCatalyst) + let service = IOServiceGetMatchingService(kIOMasterPortDefault, + IOServiceMatching("IOPlatformExpertDevice")) + var modelIdentifier: String? + if let modelData = IORegistryEntryCreateCFProperty(service, "model" as CFString, kCFAllocatorDefault, 0).takeRetainedValue() as? Data { + modelIdentifier = String(data: modelData, encoding: .utf8)?.trimmingCharacters(in: .controlCharacters) + } + + IOObjectRelease(service) + return modelIdentifier ?? "macCatalyst" + #else + var systemInfo = utsname() + uname(&systemInfo) + let machine = withUnsafePointer(to: &systemInfo.machine) { unsafePointer in + unsafePointer.withMemoryRebound(to: CChar.self, capacity: MemoryLayout.size(ofValue: unsafePointer)) { pointer in + String(cString: pointer) + } + } + return machine + #endif + } + + + var preciseModel: String { + debugPrint(currentDeviceCode) + switch currentDeviceCode { + + // iPhones (restricting to specific models) + + case "iPhone8,1": + return "iPhone 6s" + case "iPhone8,2": + return "iPhone 6s Plus" + case "iPhone8,4": + return "iPhone SE" + case "iPhone9,1": + return "iPhone 7" + case "iPhone9,2": + return "iPhone 7 Plus" + case "iPhone9,3": + return "iPhone 7" + case "iPhone9,4": + return "iPhone 7 Plus" + case "iPhone10,1": + return "iPhone 8" + case "iPhone10,2": + return "iPhone 8 Plus" + case "iPhone10,3": + return "iPhone X" + case "iPhone10,4": + return "iPhone 8" + case "iPhone10,5": + return "iPhone 8 Plus" + case "iPhone10,6": + return "iPhone X" + case "iPhone11,2": + return "iPhone XS" + case "iPhone11,4": + return "iPhone XS Max" + case "iPhone11,6": + return "iPhone XS Max" + case "iPhone11,8": + return "iPhone XR" + case "iPhone12,1": + return "iPhone 11" + case "iPhone12,3": + return "iPhone 11 Pro" + case "iPhone12,5": + return "iPhone 11 Pro Max" + case "iPhone12,8": + return "iPhone SE 2nd Gen" + case "iPhone13,1": + return "iPhone 12 Mini" + case "iPhone13,2": + return "iPhone 12" + case "iPhone13,3": + return "iPhone 12 Pro" + case "iPhone13,4": + return "iPhone 12 Pro Max" + case "iPhone14,2": + return "iPhone 13 Pro" + case "iPhone14,3": + return "iPhone 13 Pro Max" + case "iPhone14,4": + return "iPhone 13 Mini" + case "iPhone14,5": + return "iPhone 13" + case "iPhone14,6": + return "iPhone SE" + case "iPhone14,7": + return "iPhone 14" + case "iPhone14,8": + return "iPhone 14 Plus" + case "iPhone15,2": + return "iPhone 14 Pro" + case "iPhone15,3": + return "iPhone 14 Pro Max" + case "iPhone15,4": + return "iPhone 15" + case "iPhone16,1": + return "iPhone 15 Pro" + case "iPhone15,5": + return "iPhone 15 Plus" + case "iPhone16,2": + return "iPhone 15 Pro Max" + + case "Mac13,2": + return "Mac Studio (2022)" + case "Mac14,5", "Mac14,9": + return "MacBook Pro (2023)" + case "Mac14,6", "Mac14,10": + return "MacBook Pro (2023)" + case "Mac 14,7": + return "MacBook Pro (2022)" + case "MacBookPro18,3", "MacBookPro18,4": + return "MacBook Pro (2021)" + case "MacBookPro18,1", "MacBookPro18,2": + return "MacBook Pro (2021)" + case "MacBookPro17,1": + return "MacBook Pro (2020)" + case "MacBookPro16,3": + return "MacBook Pro (2020)" + case "MacBookPro16,2": + return "MacBook Pro (2020)" + case "MacBookPro16,1", "MacBookPro16,4": + return "MacBook Pro (2020)" + + default: + #if targetEnvironment(macCatalyst) + return "Mac" + #else + return UIDevice.current.localizedModel + #endif + } + } + +} diff --git a/Modules/OlvidUtils/OlvidUtils/TypeExtensions/UIViewController+AsyncAwaitSuspend.swift b/Modules/OlvidUtils/OlvidUtils/TypeExtensions/UIViewController+AsyncAwaitSuspend.swift new file mode 100644 index 00000000..05e8271a --- /dev/null +++ b/Modules/OlvidUtils/OlvidUtils/TypeExtensions/UIViewController+AsyncAwaitSuspend.swift @@ -0,0 +1,63 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import UIKit +import SwiftUI + + +extension UIViewController { + + @MainActor + public func suspendDuringTimeInterval(_ timeInterval: TimeInterval) async { + await withCheckedContinuation { (continuation: CheckedContinuation) in + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(Int(timeInterval * 1000))) { + continuation.resume() + } + } + } + +} + + +extension View { + + @MainActor + public func suspendDuringTimeInterval(_ timeInterval: TimeInterval) async { + await withCheckedContinuation { (continuation: CheckedContinuation) in + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(Int(timeInterval * 1000))) { + continuation.resume() + } + } + } + +} + + +public struct TaskUtils { + + public static func suspendDuringTimeInterval(_ timeInterval: TimeInterval) async { + await withCheckedContinuation { (continuation: CheckedContinuation) in + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(Int(timeInterval * 1000))) { + continuation.resume() + } + } + } + +} diff --git a/Modules/OlvidUtils/OlvidUtils/TypeExtensions/URLSession+Async.swift b/Modules/OlvidUtils/OlvidUtils/TypeExtensions/URLSession+Async.swift deleted file mode 100644 index 2bb65295..00000000 --- a/Modules/OlvidUtils/OlvidUtils/TypeExtensions/URLSession+Async.swift +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation - - -extension URLSession { - - public func obvUpload(for request: URLRequest, from bodyData: Data, delegate: URLSessionTaskDelegate? = nil) async throws -> (Data, URLResponse) { - if #available(iOS 15, *) { - return try await upload(for: request, from: bodyData, delegate: delegate) - } else { - assert(delegate == nil, "The delegate is only supported for iOS 15+") - return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<(Data, URLResponse), Error>) in - let task = uploadTask(with: request, from: bodyData) { responseData, response, error in - if let error = error { - continuation.resume(throwing: error) - } else { - guard let responseData = responseData, let response = response else { - assertionFailure() - let userInfo = [NSLocalizedFailureReasonErrorKey: "Unexpected error in obvUpload"] - let error = NSError(domain: "OlvidUtils", code: 0, userInfo: userInfo) - continuation.resume(throwing: error) - return - } - continuation.resume(returning: (responseData, response)) - } - } - task.resume() - } - } - } - - -} diff --git a/Modules/OlvidUtils/OlvidUtils/Types/ObvBackupable.swift b/Modules/OlvidUtils/OlvidUtils/Types/ObvBackupable.swift index 0cc088a1..28b8e9d6 100644 --- a/Modules/OlvidUtils/OlvidUtils/Types/ObvBackupable.swift +++ b/Modules/OlvidUtils/OlvidUtils/Types/ObvBackupable.swift @@ -19,6 +19,7 @@ import Foundation +/// See also `ObvSnapshotable` in `ObvTypes` public protocol ObvBackupable: AnyObject { var backupSource: ObvBackupableObjectSource { get } diff --git a/Modules/Project.swift b/Modules/Project.swift index 626349a0..20ff6d98 100644 --- a/Modules/Project.swift +++ b/Modules/Project.swift @@ -18,11 +18,12 @@ let obvUICoreData = Target.swiftLibrary(name: "ObvUICoreData", .Engine.obvEngine, .target(olvidUtils), .sdk(name: "UniformTypeIdentifiers", type: .framework, status: .optional), - .Modules.UI.CircledInitialsView.configuration, + .Modules.UI.obvCircledInitials, + .Modules.obvSettings, + //.Modules.UI.CircledInitialsView.configuration, ], resources: [ - "OlvidUI/ObvUICoreData/ObvUICoreData/*.lproj/*.strings", - "OlvidUI/ObvUICoreData/ObvUICoreData/*.lproj/*.stringsdict", + "OlvidUI/ObvUICoreData/ObvUICoreData/*.xcstrings", ]) let obvUI = Target.swiftLibrary(name: "ObvUI", @@ -35,27 +36,64 @@ let obvUI = Target.swiftLibrary(name: "ObvUI", .Modules.UI.systemIcon, .Modules.UI.systemIconSwiftUI, .Modules.UI.systemIconUIKit, + .Modules.UI.obvImageEditor, + .Modules.UI.obvPhotoButton, .sdk(name: "SwiftUI", type: .framework), .sdk(name: "UIKit", type: .framework), .sdk(name: "UniformTypeIdentifiers", type: .framework, status: .optional) ], resources: [ - "OlvidUI/ObvUI/ObvUI/*.lproj/*.strings", - "OlvidUI/ObvUI/ObvUI/ObvUIAssets.xcassets" + "OlvidUI/ObvUI/ObvUI/*.xcstrings", ]) -let coreDataStack = Target.swiftLibrary(name: "CoreDataStack", - isExtensionSafe: true, - sources: "CoreDataStack/CoreDataStack/*.swift", - dependencies: [ - .target(olvidUtils) - ], - resources: []) - -let project = Project.createProject(name: "Modules", - packages: [], - targets: [obvUICoreData, - obvUI, - olvidUtils, - coreDataStack]) +let coreDataStack = Target.swiftLibrary( + name: "CoreDataStack", + isExtensionSafe: true, + sources: "CoreDataStack/CoreDataStack/*.swift", + dependencies: [ + .target(olvidUtils) + ], + resources: []) + + +let obvDesignSystem = Target.swiftLibrary( + name: "ObvDesignSystem", + isExtensionSafe: true, + sources: "ObvDesignSystem/**/*.swift", + dependencies: [ + .Engine.obvTypes, + .Engine.obvCrypto, + .Modules.UI.systemIcon, + .Modules.UI.systemIconUIKit, + ], + resources: [ + "ObvDesignSystem/ObvDesignSystem/AppTheme/AppThemeAssets.xcassets", + ]) + + +let obvSettings = Target.swiftLibrary( + name: "ObvSettings", + isExtensionSafe: true, + sources: "ObvSettings/**/*.swift", + dependencies: [ + .Engine.obvTypes, + .Modules.obvDesignSystem, + ], + resources: [ + "ObvSettings/*.xcstrings", + ]) + + +let project = Project.createProject( + name: "Modules", + packages: [], + targets: [ + obvUICoreData, + obvUI, + olvidUtils, + coreDataStack, + obvDesignSystem, + obvSettings, + ], + shouldEnableDefaultResourceSynthesizers: true) diff --git a/Modules/UI/CircledInitialsView/CircledInitialsConfiguration/CircledInitialsConfiguration.swift b/Modules/UI/CircledInitialsView/CircledInitialsConfiguration/CircledInitialsConfiguration.swift deleted file mode 100644 index 40ab3bc1..00000000 --- a/Modules/UI/CircledInitialsView/CircledInitialsConfiguration/CircledInitialsConfiguration.swift +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import ObvTypes -import UIKit -import ObvCrypto -import UI_SystemIcon - -// MARK: - CircledInitialsConfiguration -public enum CircledInitialsConfiguration: Hashable { - /// Possible tint adjustment modes for the avatar view - /// - /// - normal: A normal tint mode - /// - disabled: A disabled tint mode, for example when a contact hasn't been synced - public enum TintAdjustementMode { - /// A normal tint mode - case normal - - /// A disabled tint mode, for example when a contact hasn't been synced - case disabled - } - - case contact(initial: String, photoURL: URL?, showGreenShield: Bool, showRedShield: Bool, cryptoId: ObvCryptoId, tintAdjustementMode: TintAdjustementMode) - case group(photoURL: URL?, groupUid: UID) - case groupV2(photoURL: URL?, groupIdentifier: Data, showGreenShield: Bool) - case icon(_ icon: CircledInitialsIcon) - - public var photo: UIImage? { - let url: URL? - switch self { - case .contact(initial: _, photoURL: let photoURL, showGreenShield: _, showRedShield: _, cryptoId: _, tintAdjustementMode: _): - url = photoURL - case .group(photoURL: let photoURL, groupUid: _): - url = photoURL - case .groupV2(photoURL: let photoURL, groupIdentifier: _, showGreenShield: _): - url = photoURL - case .icon: - url = nil - } - guard let url = url else { return nil } - return UIImage(contentsOfFile: url.path) - } - - public var showGreenShield: Bool { - switch self { - case .contact(initial: _, photoURL: _, showGreenShield: let showGreenShield, showRedShield: _, cryptoId: _, tintAdjustementMode: _): - return showGreenShield - case .groupV2(photoURL: _, groupIdentifier: _, showGreenShield: let showGreenShield): - return showGreenShield - case .group, .icon: - return false - } - } - - public var showRedShield: Bool { - switch self { - case .contact(initial: _, photoURL: _, showGreenShield: _, showRedShield: let showRedShield, cryptoId: _, tintAdjustementMode: _): return showRedShield - default: return false - } - } - - public var initials: (text: String, cryptoId: ObvCryptoId)? { - switch self { - case .contact(initial: let initial, photoURL: _, showGreenShield: _, showRedShield: _, cryptoId: let cryptoId, tintAdjustementMode: _): - guard let str = initial.trimmingCharacters(in: .whitespacesAndNewlines).first else { return nil } - return (String(str), cryptoId) - default: return nil - } - } - -} diff --git a/Modules/UI/ObvCircledInitials/CircledInitialsConfiguration.swift b/Modules/UI/ObvCircledInitials/CircledInitialsConfiguration.swift new file mode 100644 index 00000000..bcb822d9 --- /dev/null +++ b/Modules/UI/ObvCircledInitials/CircledInitialsConfiguration.swift @@ -0,0 +1,202 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import UIKit +import ObvCrypto +import UI_SystemIcon +import ObvDesignSystem +import ObvSettings + + +public enum CircledInitialsConfiguration: Hashable { + + /// Possible tint adjustment modes for the avatar view + /// + /// - normal: A normal tint mode + /// - disabled: A disabled tint mode, for example when a contact hasn't been synced + public enum TintAdjustementMode { + /// A normal tint mode + case normal + + /// A disabled tint mode, for example when a contact hasn't been synced + case disabled + } + + + public enum Photo: Equatable, Hashable { + case url(url: URL?) + case image(image: UIImage?) + } + + + case contact(initial: String, photo: Photo?, showGreenShield: Bool, showRedShield: Bool, cryptoId: ObvCryptoId, tintAdjustementMode: TintAdjustementMode) + case group(photo: Photo?, groupUid: UID) + case groupV2(photo: Photo?, groupIdentifier: Data, showGreenShield: Bool) + case icon(_ icon: CircledInitialsIcon) + case photo(photo: Photo) + + + public var photo: UIImage? { + let photo: Photo? + switch self { + case .contact(initial: _, photo: let _photo, showGreenShield: _, showRedShield: _, cryptoId: _, tintAdjustementMode: _): + photo = _photo + case .group(photo: let _photo, groupUid: _): + photo = _photo + case .groupV2(photo: let _photo, groupIdentifier: _, showGreenShield: _): + photo = _photo + case .icon: + photo = nil + case .photo(photo: let _photo): + photo = _photo + } + guard let photo else { return nil } + switch photo { + case .url(let url): + guard let url else { return nil } + return UIImage(contentsOfFile: url.path) + case .image(let image): + return image + } + } + + + public var circledInitialsIcon: CircledInitialsIcon { + switch self { + case .contact: + return .person + case .group, .groupV2: + return .person3Fill + case .icon(let icon): + return icon + case .photo: + return .person + } + } + + + public var showGreenShield: Bool { + switch self { + case .contact(initial: _, photo: _, showGreenShield: let showGreenShield, showRedShield: _, cryptoId: _, tintAdjustementMode: _): + return showGreenShield + case .groupV2(photo: _, groupIdentifier: _, showGreenShield: let showGreenShield): + return showGreenShield + case .group, .icon: + return false + case .photo: + return false + } + } + + + public var showRedShield: Bool { + switch self { + case .contact(initial: _, photo: _, showGreenShield: _, showRedShield: let showRedShield, cryptoId: _, tintAdjustementMode: _): return showRedShield + default: return false + } + } + + + public var initials: (text: String, cryptoId: ObvCryptoId)? { + switch self { + case .contact(initial: let initial, photo: _, showGreenShield: _, showRedShield: _, cryptoId: let cryptoId, tintAdjustementMode: _): + guard let str = initial.trimmingCharacters(in: .whitespacesAndNewlines).first else { return nil } + return (String(str), cryptoId) + default: return nil + } + } + + + public func replacingPhoto(with newPhoto: Photo?) -> Self { + switch self { + case .contact(let initial, _, let showGreenShield, let showRedShield, let cryptoId, let tintAdjustementMode): + return .contact(initial: initial, photo: newPhoto, showGreenShield: showGreenShield, showRedShield: showRedShield, cryptoId: cryptoId, tintAdjustementMode: tintAdjustementMode) + case .group(_, let groupUid): + return .group(photo: newPhoto, groupUid: groupUid) + case .groupV2(_, let groupIdentifier, let showGreenShield): + return .groupV2(photo: newPhoto, groupIdentifier: groupIdentifier, showGreenShield: showGreenShield) + case .icon(let icon): + return .icon(icon) + case .photo: + guard let newPhoto else { return .icon(.person) } + return .photo(photo: newPhoto) + } + } + + + public func replacingInitials(with newInitials: String) -> Self { + switch self { + case .contact(_, let photo, let showGreenShield, let showRedShield, let cryptoId, let tintAdjustementMode): + return .contact(initial: newInitials, photo: photo, showGreenShield: showGreenShield, showRedShield: showRedShield, cryptoId: cryptoId, tintAdjustementMode: tintAdjustementMode) + case .group: + return self + case .groupV2: + return self + case .icon: + return self + case .photo: + return self + } + } + + + public var icon: SystemIcon { + switch self { + case .contact: return .person + case .group, .groupV2: return .person3Fill + case .icon(let icon): return icon.icon + case .photo: return .person + } + } + + + public func backgroundColor(appTheme: AppTheme, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> UIColor { + switch self { + case .contact(initial: _, photo: _, showGreenShield: _, showRedShield: _, cryptoId: let cryptoId, tintAdjustementMode: _): + return appTheme.identityColors(for: cryptoId, using: style).background + case .group(photo: _, groupUid: let groupUid): + return appTheme.groupColors(forGroupUid: groupUid, using: style).background + case .groupV2(photo: _, groupIdentifier: let groupIdentifier, showGreenShield: _): + return appTheme.groupV2Colors(forGroupIdentifier: groupIdentifier).background + case .icon: + return appTheme.colorScheme.systemFill + case .photo: + return appTheme.colorScheme.systemFill + } + } + + + public func foregroundColor(appTheme: AppTheme, using style: IdentityColorStyle = ObvMessengerSettings.Interface.identityColorStyle) -> UIColor { + switch self { + case .contact(initial: _, photo: _, showGreenShield: _, showRedShield: _, cryptoId: let cryptoId, tintAdjustementMode: _): + return appTheme.identityColors(for: cryptoId, using: style).text + case .group(photo: _, groupUid: let groupUid): + return appTheme.groupColors(forGroupUid: groupUid, using: style).text + case .groupV2(photo: _, groupIdentifier: let groupIdentifier, showGreenShield: _): + return appTheme.groupV2Colors(forGroupIdentifier: groupIdentifier).text + case .icon: + return appTheme.colorScheme.secondaryLabel + case .photo: + return appTheme.colorScheme.secondaryLabel + } + } + +} diff --git a/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsIcon+Utils.swift b/Modules/UI/ObvCircledInitials/CircledInitialsIcon.swift similarity index 84% rename from Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsIcon+Utils.swift rename to Modules/UI/ObvCircledInitials/CircledInitialsIcon.swift index 0952a933..ccde7294 100644 --- a/Modules/OlvidUI/ObvUI/ObvUI/Elements/CircledInitials/CircledInitialsIcon+Utils.swift +++ b/Modules/UI/ObvCircledInitials/CircledInitialsIcon.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS + * Copyright © 2019-2022 Olvid SAS * * This file is part of Olvid for iOS. * @@ -16,13 +16,20 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ + import Foundation -import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration import UI_SystemIcon -extension CircledInitialsIcon { + +public enum CircledInitialsIcon: Hashable { + + case lockFill + case person + case person3Fill + case personFillXmark + case plus + public var icon: SystemIcon { switch self { case .lockFill: return .lock(.fill) @@ -32,4 +39,5 @@ extension CircledInitialsIcon { case .plus: return .plus } } + } diff --git a/Modules/UI/ObvCircledInitials/InitialCircleViewNew.swift b/Modules/UI/ObvCircledInitials/InitialCircleViewNew.swift new file mode 100644 index 00000000..15441d43 --- /dev/null +++ b/Modules/UI/ObvCircledInitials/InitialCircleViewNew.swift @@ -0,0 +1,105 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + + +import SwiftUI +import ObvDesignSystem +import ObvSettings +import UI_SystemIcon +import UI_SystemIcon_SwiftUI +import UI_SystemIcon_UIKit + + +public protocol InitialCircleViewNewModelProtocol: ObservableObject { + + var circledInitialsConfiguration: CircledInitialsConfiguration { get } + +} + + +/// 2023-07-13: Replaces InitialCircleView and ProfilePictureView. +public struct InitialCircleViewNew: View { + + @ObservedObject var model: Model + let state: State + + public init(model: Model, state: State) { + self.model = model + self.state = state + } + + public struct State { + let circleDiameter: CGFloat + public init(circleDiameter: CGFloat) { + self.circleDiameter = circleDiameter + } + } + + private var iconSizeAdjustement: CGFloat { + switch model.circledInitialsConfiguration.icon { + case .person: return 2 + case .person3Fill: return 3 + case .personFillXmark: return 2 + default: return 1 + } + } + + + public var body: some View { + Group { + if let profilePicture = model.circledInitialsConfiguration.photo { + Image(uiImage: profilePicture) + .resizable() + .scaledToFill() // 2023-09-07 was .scaledToFit() + .frame(width: state.circleDiameter, height: state.circleDiameter) + .clipShape(Circle()) + } else { + ZStack { + Circle() + .frame(width: state.circleDiameter, height: state.circleDiameter) + .foregroundColor(Color(model.circledInitialsConfiguration.backgroundColor(appTheme: AppTheme.shared))) + if let text = model.circledInitialsConfiguration.initials?.text { + Text(text) + .font(Font.system(size: state.circleDiameter/2.0, weight: .black, design: .rounded)) + .foregroundColor(Color(model.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared))) + } else { + Image(systemIcon: model.circledInitialsConfiguration.icon) + .font(Font.system(size: state.circleDiameter/iconSizeAdjustement, weight: .semibold, design: .default)) + .foregroundColor(Color(model.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared))) + } + } + } + } + .overlay( + Image(systemName: "checkmark.shield.fill") + .font(.system(size: (state.circleDiameter) / 4)) + .foregroundColor(model.circledInitialsConfiguration.showGreenShield ? Color(AppTheme.shared.colorScheme.green) : .clear), + alignment: .topTrailing + ) + .overlay( + Image(systemIcon: .exclamationmarkShieldFill) + .font(.system(size: (state.circleDiameter) / 2)) + .foregroundColor(model.circledInitialsConfiguration.showRedShield ? .red : .clear), + alignment: .center + ) + } + +} + + diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/.gitignore b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/.gitignore new file mode 100644 index 00000000..40b8c3f9 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/.gitignore @@ -0,0 +1 @@ +!ObvImageEditorViewControllerExample.xcodeproj diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample.xcodeproj/project.pbxproj b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample.xcodeproj/project.pbxproj new file mode 100644 index 00000000..61cf0e97 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample.xcodeproj/project.pbxproj @@ -0,0 +1,371 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + C46088DB2AA916CF00D1E942 /* SimpleImageViewerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46088DA2AA916CF00D1E942 /* SimpleImageViewerViewController.swift */; }; + C46088DD2AA916F700D1E942 /* ObvImageEditorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46088DC2AA916F700D1E942 /* ObvImageEditorViewController.swift */; }; + C462DAFB2AA9163E008CBE9F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C462DAFA2AA9163E008CBE9F /* AppDelegate.swift */; }; + C462DAFD2AA9163E008CBE9F /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C462DAFC2AA9163E008CBE9F /* SceneDelegate.swift */; }; + C462DAFF2AA9163E008CBE9F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C462DAFE2AA9163E008CBE9F /* ViewController.swift */; }; + C462DB022AA9163E008CBE9F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C462DB002AA9163E008CBE9F /* Main.storyboard */; }; + C462DB042AA9163F008CBE9F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C462DB032AA9163F008CBE9F /* Assets.xcassets */; }; + C462DB072AA9163F008CBE9F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C462DB052AA9163F008CBE9F /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + C46088DA2AA916CF00D1E942 /* SimpleImageViewerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleImageViewerViewController.swift; sourceTree = ""; }; + C46088DC2AA916F700D1E942 /* ObvImageEditorViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ObvImageEditorViewController.swift; path = ../../Sources/ObvImageEditorViewController.swift; sourceTree = ""; }; + C462DAF72AA9163E008CBE9F /* ObvImageEditorViewControllerExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ObvImageEditorViewControllerExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + C462DAFA2AA9163E008CBE9F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + C462DAFC2AA9163E008CBE9F /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + C462DAFE2AA9163E008CBE9F /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + C462DB012AA9163E008CBE9F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + C462DB032AA9163F008CBE9F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + C462DB062AA9163F008CBE9F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + C462DB082AA9163F008CBE9F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C462DAF42AA9163E008CBE9F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + C462DAEE2AA9163E008CBE9F = { + isa = PBXGroup; + children = ( + C46088DC2AA916F700D1E942 /* ObvImageEditorViewController.swift */, + C462DAF92AA9163E008CBE9F /* ObvImageEditorViewControllerExample */, + C462DAF82AA9163E008CBE9F /* Products */, + ); + sourceTree = ""; + }; + C462DAF82AA9163E008CBE9F /* Products */ = { + isa = PBXGroup; + children = ( + C462DAF72AA9163E008CBE9F /* ObvImageEditorViewControllerExample.app */, + ); + name = Products; + sourceTree = ""; + }; + C462DAF92AA9163E008CBE9F /* ObvImageEditorViewControllerExample */ = { + isa = PBXGroup; + children = ( + C46088DA2AA916CF00D1E942 /* SimpleImageViewerViewController.swift */, + C462DAFA2AA9163E008CBE9F /* AppDelegate.swift */, + C462DAFC2AA9163E008CBE9F /* SceneDelegate.swift */, + C462DAFE2AA9163E008CBE9F /* ViewController.swift */, + C462DB002AA9163E008CBE9F /* Main.storyboard */, + C462DB032AA9163F008CBE9F /* Assets.xcassets */, + C462DB052AA9163F008CBE9F /* LaunchScreen.storyboard */, + C462DB082AA9163F008CBE9F /* Info.plist */, + ); + path = ObvImageEditorViewControllerExample; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C462DAF62AA9163E008CBE9F /* ObvImageEditorViewControllerExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = C462DB0B2AA9163F008CBE9F /* Build configuration list for PBXNativeTarget "ObvImageEditorViewControllerExample" */; + buildPhases = ( + C462DAF32AA9163E008CBE9F /* Sources */, + C462DAF42AA9163E008CBE9F /* Frameworks */, + C462DAF52AA9163E008CBE9F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ObvImageEditorViewControllerExample; + productName = ObvImageEditorViewControllerExample; + productReference = C462DAF72AA9163E008CBE9F /* ObvImageEditorViewControllerExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C462DAEF2AA9163E008CBE9F /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; + TargetAttributes = { + C462DAF62AA9163E008CBE9F = { + CreatedOnToolsVersion = 14.3.1; + }; + }; + }; + buildConfigurationList = C462DAF22AA9163E008CBE9F /* Build configuration list for PBXProject "ObvImageEditorViewControllerExample" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = C462DAEE2AA9163E008CBE9F; + productRefGroup = C462DAF82AA9163E008CBE9F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C462DAF62AA9163E008CBE9F /* ObvImageEditorViewControllerExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + C462DAF52AA9163E008CBE9F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C462DB072AA9163F008CBE9F /* LaunchScreen.storyboard in Resources */, + C462DB042AA9163F008CBE9F /* Assets.xcassets in Resources */, + C462DB022AA9163E008CBE9F /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C462DAF32AA9163E008CBE9F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C46088DD2AA916F700D1E942 /* ObvImageEditorViewController.swift in Sources */, + C462DAFF2AA9163E008CBE9F /* ViewController.swift in Sources */, + C462DAFB2AA9163E008CBE9F /* AppDelegate.swift in Sources */, + C46088DB2AA916CF00D1E942 /* SimpleImageViewerViewController.swift in Sources */, + C462DAFD2AA9163E008CBE9F /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + C462DB002AA9163E008CBE9F /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C462DB012AA9163E008CBE9F /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + C462DB052AA9163F008CBE9F /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C462DB062AA9163F008CBE9F /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C462DB092AA9163F008CBE9F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + C462DB0A2AA9163F008CBE9F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + C462DB0C2AA9163F008CBE9F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ObvImageEditorViewControllerExample/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.olvid.ObvImageEditorViewControllerExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + C462DB0D2AA9163F008CBE9F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ObvImageEditorViewControllerExample/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.olvid.ObvImageEditorViewControllerExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C462DAF22AA9163E008CBE9F /* Build configuration list for PBXProject "ObvImageEditorViewControllerExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C462DB092AA9163F008CBE9F /* Debug */, + C462DB0A2AA9163F008CBE9F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C462DB0B2AA9163F008CBE9F /* Build configuration list for PBXNativeTarget "ObvImageEditorViewControllerExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C462DB0C2AA9163F008CBE9F /* Debug */, + C462DB0D2AA9163F008CBE9F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = C462DAEF2AA9163E008CBE9F /* Project object */; +} diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/AppDelegate.swift b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/AppDelegate.swift new file mode 100644 index 00000000..67017102 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/AppDelegate.swift @@ -0,0 +1,48 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Assets.xcassets/AccentColor.colorset/Contents.json b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..13613e3e --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Assets.xcassets/Contents.json b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Base.lproj/LaunchScreen.storyboard b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..642c8160 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Base.lproj/Main.storyboard b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Base.lproj/Main.storyboard new file mode 100644 index 00000000..88076c75 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Base.lproj/Main.storyboard @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Info.plist b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Info.plist new file mode 100644 index 00000000..c9bf4577 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/Info.plist @@ -0,0 +1,27 @@ + + + + + NSCameraUsageDescription + Resize a photo taken with the camera + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/SceneDelegate.swift b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/SceneDelegate.swift new file mode 100644 index 00000000..1b2809c4 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/SceneDelegate.swift @@ -0,0 +1,64 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/SimpleImageViewerViewController.swift b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/SimpleImageViewerViewController.swift new file mode 100644 index 00000000..6dd13aac --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/SimpleImageViewerViewController.swift @@ -0,0 +1,58 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit + + +final class SimpleImageViewerViewController: UIViewController { + + private let imageView = UIImageView() + + init(image: UIImage) { + imageView.image = image + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + setupViews() + } + + private func setupViews() { + + self.view.backgroundColor = .black + + self.view.addSubview(imageView) + imageView.translatesAutoresizingMaskIntoConstraints = false + imageView.contentMode = .scaleAspectFit + + NSLayoutConstraint.activate([ + imageView.topAnchor.constraint(equalTo: self.view.topAnchor), + imageView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), + imageView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor), + imageView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), + ]) + + } + +} diff --git a/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/ViewController.swift b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/ViewController.swift new file mode 100644 index 00000000..d9c2bfc0 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Examples/ObvImageEditorViewControllerExample/ObvImageEditorViewControllerExample/ViewController.swift @@ -0,0 +1,129 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import PhotosUI + +class ViewController: UIViewController, PHPickerViewControllerDelegate, ObvImageEditorViewControllerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + @IBAction func libraryButtonTapped(_ sender: Any) { + + var configuration = PHPickerConfiguration() + configuration.selectionLimit = 1 + let phPickerViewController = PHPickerViewController(configuration: configuration) + phPickerViewController.delegate = self + + present(phPickerViewController, animated: true) + + } + + + @IBAction func cameraButtonTapped(_ sender: Any) { + + let picker = UIImagePickerController() + picker.delegate = self + picker.allowsEditing = false + picker.sourceType = .camera + picker.cameraDevice = .front + + present(picker, animated: true) + + } + + + // MARK: - PHPickerViewControllerDelegate + + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + + picker.dismiss(animated: true) { + + guard let itemProvider = results.first?.itemProvider else { return } + + let canLoadImage = itemProvider.canLoadObject(ofClass: UIImage.self) + guard canLoadImage else { return } + + itemProvider.loadObject(ofClass: UIImage.self) { item, error in + if let error { + assertionFailure(error.localizedDescription) + return + } + guard let uiImage = item as? UIImage else { return } + + Task { [weak self] in + await self?.presentObvImageEditor(for: uiImage) + } + + } + + } + + } + + + // MARK: - UIImagePickerControllerDelegate + + func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { + assert(Thread.isMainThread) + picker.dismiss(animated: true) { + guard let image = info[.originalImage] as? UIImage else { return } + Task { [weak self] in + await self?.presentObvImageEditor(for: image) + } + } + } + + + func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { + assert(Thread.isMainThread) + picker.dismiss(animated: true) + } + + + + @MainActor + func presentObvImageEditor(for image: UIImage) async { + + let imageEditorViewController = ObvImageEditorViewController(originalImage: image, showZoomButtons: true, maxReturnedImageSize: (1024, 1024), delegate: self) + present(imageEditorViewController, animated: true) + + } + + + func userCancelledImageEdition(_ imageEditor: ObvImageEditorViewController) async { + imageEditor.dismiss(animated: true) + } + + func userConfirmedImageEdition(_ imageEditor: ObvImageEditorViewController, image: UIImage) async { + presentedViewController?.dismiss(animated: true) + imageEditor.dismiss(animated: true) { [weak self] in + self?.presentImage(image: image) + } + } + + func presentImage(image: UIImage) { + let vc = SimpleImageViewerViewController(image: image) + present(vc, animated: true) + } + +} diff --git a/Modules/UI/ObvImageEditor/Sources/ObvImageEditorViewController.swift b/Modules/UI/ObvImageEditor/Sources/ObvImageEditorViewController.swift new file mode 100644 index 00000000..795cf8c5 --- /dev/null +++ b/Modules/UI/ObvImageEditor/Sources/ObvImageEditorViewController.swift @@ -0,0 +1,593 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit + +public protocol ObvImageEditorViewControllerDelegate: AnyObject { + func userCancelledImageEdition(_ imageEditor: ObvImageEditorViewController) async + func userConfirmedImageEdition(_ imageEditor: ObvImageEditorViewController, image: UIImage) async +} + + +public final class ObvImageEditorViewController: UIViewController, UIScrollViewDelegate { + + private let originalImage: UIImage + private let imageViewContainer = ObvImageViewContainer() + private let scrollView = UIScrollView() + private let loadingView = LoadingView() + private let cropView = UIView() + private let alphaView = AlphaView() + private let showZoomButtons: Bool + private let maxReturnedImageSize: (width: Int, height: Int)? // In pixels + + private var imageViewTopAnchorConstraint: NSLayoutConstraint! + private var imageViewTrailingAnchorConstraint: NSLayoutConstraint! + private var imageViewBottomAnchorConstraint: NSLayoutConstraint! + private var imageViewLeadingAnchorConstraint: NSLayoutConstraint! + + weak var delegate: ObvImageEditorViewControllerDelegate? + + public init(originalImage: UIImage, showZoomButtons: Bool, maxReturnedImageSize: (width: Int, height: Int)?, delegate: ObvImageEditorViewControllerDelegate) { + self.originalImage = originalImage + self.showZoomButtons = showZoomButtons + self.maxReturnedImageSize = maxReturnedImageSize + self.delegate = delegate + super.init(nibName: nil, bundle: nil) + } + + deinit { + debugPrint("ObvImageEditorViewController deinit") + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + // MARK: View controller lifecycle + + public override func viewDidLoad() { + super.viewDidLoad() + + // Prevents the interactive dismissal of the view controller while it is onscreen + //self.isModalInPresentation = true + + scrollView.translatesAutoresizingMaskIntoConstraints = false + self.view.addSubview(scrollView) + scrollView.backgroundColor = .black + scrollView.contentInsetAdjustmentBehavior = .never + + NSLayoutConstraint.activate([ + scrollView.topAnchor.constraint(equalTo: self.view.topAnchor), + scrollView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), + scrollView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor), + scrollView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), + ]) + + alphaView.translatesAutoresizingMaskIntoConstraints = false + self.view.addSubview(alphaView) + NSLayoutConstraint.activate([ + alphaView.topAnchor.constraint(equalTo: self.view.topAnchor), + alphaView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), + alphaView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor), + alphaView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), + ]) + + cropView.translatesAutoresizingMaskIntoConstraints = false + self.view.addSubview(cropView) + cropView.isUserInteractionEnabled = false + NSLayoutConstraint.activate([ + cropView.topAnchor.constraint(equalTo: alphaView.centerView.topAnchor), + cropView.trailingAnchor.constraint(equalTo: alphaView.centerView.trailingAnchor), + cropView.bottomAnchor.constraint(equalTo: alphaView.centerView.bottomAnchor), + cropView.leadingAnchor.constraint(equalTo: alphaView.centerView.leadingAnchor), + ]) + + loadingView.translatesAutoresizingMaskIntoConstraints = false + self.view.addSubview(loadingView) + + NSLayoutConstraint.activate([ + loadingView.topAnchor.constraint(equalTo: self.view.topAnchor), + loadingView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), + loadingView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor), + loadingView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), + ]) + + imageViewContainer.image = originalImage + imageViewContainer.translatesAutoresizingMaskIntoConstraints = false + imageViewContainer.contentMode = .scaleAspectFit + scrollView.addSubview(imageViewContainer) + + imageViewTopAnchorConstraint = imageViewContainer.topAnchor.constraint(equalTo: scrollView.topAnchor) + imageViewTrailingAnchorConstraint = imageViewContainer.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor) + imageViewBottomAnchorConstraint = imageViewContainer.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor) + imageViewLeadingAnchorConstraint = imageViewContainer.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor) + + NSLayoutConstraint.activate([ + imageViewTopAnchorConstraint, + imageViewTrailingAnchorConstraint, + imageViewBottomAnchorConstraint, + imageViewLeadingAnchorConstraint, + ]) + + scrollView.delegate = self + + scrollView.minimumZoomScale = 0.01 + scrollView.maximumZoomScale = 10 + + // Configure the buttons + + var buttonConfiguration = UIButton.Configuration.filled() + buttonConfiguration.buttonSize = .large + buttonConfiguration.cornerStyle = .capsule + + let cancelButton = UIButton(type: .system, primaryAction: UIAction(handler: { [weak self] _ in + Task { [weak self] in await self?.userTappedTheCancelButton() } + })) + cancelButton.setImage(UIImage(systemName: "xmark"), for: .normal) + buttonConfiguration.baseBackgroundColor = .systemRed + cancelButton.configuration = buttonConfiguration + self.view.addSubview(cancelButton) + cancelButton.translatesAutoresizingMaskIntoConstraints = false + + NSLayoutConstraint.activate([ + cancelButton.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 50), + cancelButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -50), + ]) + + let okButton = UIButton(type: .system, primaryAction: UIAction(handler: { [weak self] _ in + Task { [weak self] in await self?.userTappedTheOkButton() } + })) + okButton.setImage(UIImage(systemName: "checkmark"), for: .normal) + buttonConfiguration.baseBackgroundColor = .systemGreen + okButton.configuration = buttonConfiguration + self.view.addSubview(okButton) + okButton.translatesAutoresizingMaskIntoConstraints = false + + NSLayoutConstraint.activate([ + okButton.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -50), + okButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -50), + ]) + + // Configure the zoom buttons + + if showZoomButtons { + + let stack = UIStackView() + self.view.addSubview(stack) + stack.translatesAutoresizingMaskIntoConstraints = false + stack.axis = .horizontal + stack.distribution = .fillEqually + stack.spacing = 12 + + NSLayoutConstraint.activate([ + stack.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50), + stack.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -50), + ]) + + var configuration = UIButton.Configuration.filled() + configuration.buttonSize = .small + configuration.cornerStyle = .capsule + configuration.baseBackgroundColor = .systemGray + + let minusButton = UIButton(type: .system, primaryAction: UIAction(handler: { [weak self] _ in + self?.userTappedZoomButtonMinus() + })) + minusButton.configuration = configuration + minusButton.setImage(UIImage(systemName: "minus.magnifyingglass"), for: .normal) + stack.addArrangedSubview(minusButton) + + let plusButton = UIButton(type: .system, primaryAction: UIAction(handler: { [weak self] _ in + self?.userTappedZoomButtonPlus() + })) + plusButton.configuration = configuration + plusButton.setImage(UIImage(systemName: "plus.magnifyingglass"), for: .normal) + stack.addArrangedSubview(plusButton) + + } + + } + + + public override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + + recomputeMinimumZoomScale() + resetImageContainerPadding() + + } + + + public override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + recomputeMinimumZoomScale() + scrollView.zoomScale = scrollView.minimumZoomScale + resetImageContainerPadding() + recenterImageIfAppropriate() + + removeLoadingViewIfRequired() + + } + + + // MARK: Buttons actions + + private func userTappedTheCancelButton() async { + await delegate?.userCancelledImageEdition(self) + } + + + private func userTappedTheOkButton() async { + guard let croppedImage = await cropImage() else { assertionFailure(); return } + await delegate?.userConfirmedImageEdition(self, image: croppedImage) + } + + + @MainActor + private func cropImage() async -> UIImage? { + guard let originalCGImage = originalImage.cgImage?.toUpOrientation(from: originalImage.imageOrientation) else { assertionFailure(); return nil } + let cropSize = CGSize( + width: cropView.bounds.width / scrollView.zoomScale, + height: cropView.bounds.height / scrollView.zoomScale) + let cropOrigin = CGPoint( + x: scrollView.contentOffset.x / scrollView.zoomScale, + y: scrollView.contentOffset.y / scrollView.zoomScale) + let cropRect = CGRect( + origin: cropOrigin, + size: cropSize) + guard let croppedCGImage = originalCGImage.cropping(to: cropRect) else { return nil } + let croppedImage = UIImage(cgImage: croppedCGImage) + let resizedImage: UIImage + if let maxReturnedImageSize { + resizedImage = Self.resizeImage(croppedImage, maxSize: maxReturnedImageSize) ?? croppedImage + } else { + resizedImage = croppedImage + } + debugPrint(resizedImage) + return resizedImage + } + + + private static func resizeImage(_ image: UIImage, maxSize: (width: Int, height: Int)) -> UIImage? { + + guard let cgImage = image.cgImage?.toUpOrientation(from: image.imageOrientation) else { assertionFailure(); return nil } + + let ratio = min(Double(maxSize.width) / Double(cgImage.width), Double(maxSize.height) / Double(cgImage.height)) + guard ratio < 1 else { return image } + + let width = Int(ceil(Double(cgImage.width) * ratio)) + let height = Int(ceil(Double(cgImage.height) * ratio)) + + let context = CGContext( + data: nil, + width: width, + height: height, + bitsPerComponent: cgImage.bitsPerComponent, + bytesPerRow: 0, + space: cgImage.colorSpace ?? CGColorSpace(name: CGColorSpace.sRGB)!, + bitmapInfo: cgImage.bitmapInfo.rawValue) + context?.interpolationQuality = .high + context?.draw(cgImage, in: CGRect(origin: .zero, size: .init(width: width, height: height))) + + guard let scaledImage = context?.makeImage() else { return nil } + + return UIImage(cgImage: scaledImage, scale: 1.0, orientation: image.imageOrientation) + + } + + + + + private func userTappedZoomButtonPlus() { + let newZoomScale = scrollView.zoomScale * 1.1 + scrollView.zoomScale = min(scrollView.maximumZoomScale, newZoomScale) + } + + + private func userTappedZoomButtonMinus() { + let newZoomScale = scrollView.zoomScale * 0.9 + scrollView.zoomScale = max(scrollView.minimumZoomScale, newZoomScale) + } + + + // MARK: UIScrollViewDelegate + + public func viewForZooming(in scrollView: UIScrollView) -> UIView? { + imageViewContainer + } + + + public func scrollViewDidZoom(_ scrollView: UIScrollView) { + resetImageContainerPadding() + } + + + // MARK: Helper methods + + + private func resetImageContainerPadding() { + imageViewContainer.resetPadding( + viewBounds: self.view.bounds, + cropViewFrame: cropView.frame, + scrollViewZoomScale: scrollView.zoomScale) + } + + + + /// Makes sure the image is always centered, even it is zoomed out + private func recenterImageIfAppropriate() { + let offsetX = max((imageViewContainer.intrinsicContentSize.width * scrollView.zoomScale - scrollView.bounds.width) / 2.0, 0) + let offsetY = max((imageViewContainer.intrinsicContentSize.height * scrollView.zoomScale - scrollView.bounds.height) / 2.0, 0) + let newContentOffset = CGPoint(x: offsetX, y: offsetY) + scrollView.setContentOffset(newContentOffset, animated: false) + } + + + private func removeLoadingViewIfRequired() { + guard loadingView.superview != nil else { return } + UIViewPropertyAnimator.runningPropertyAnimator( + withDuration: 0.2, + delay: 0.0, + animations: { [weak self] in + self?.loadingView.alpha = 0.0 + }, + completion: { [weak self] _ in + self?.loadingView.removeFromSuperview() + }) + } + + + private func recomputeMinimumZoomScale() { + let minimumZoomScaleFromWidth: CGFloat = cropView.bounds.size.width / originalImage.size.width + let minimumZoomScaleFromHeight: CGFloat = cropView.bounds.size.height / originalImage.size.height + let newMinimumZoomScale = max(minimumZoomScaleFromWidth, minimumZoomScaleFromHeight) + if scrollView.minimumZoomScale != newMinimumZoomScale { + scrollView.minimumZoomScale = newMinimumZoomScale + scrollView.zoomScale = max(scrollView.zoomScale, scrollView.minimumZoomScale) + } + } + +} + + + +// MARK: - LoadingView + +private final class LoadingView: UIView { + + convenience init() { + self.init(frame: .zero) + } + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .black + let activityIndicatorView = UIActivityIndicatorView(style: .large) + activityIndicatorView.translatesAutoresizingMaskIntoConstraints = false + activityIndicatorView.startAnimating() + activityIndicatorView.color = .white + self.addSubview(activityIndicatorView) + NSLayoutConstraint.activate([ + activityIndicatorView.centerXAnchor.constraint(equalTo: self.centerXAnchor), + activityIndicatorView.centerYAnchor.constraint(equalTo: self.centerYAnchor), + ]) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + + + +// MARK: - ImageViewContainer + +private final class ObvImageViewContainer: UIView { + + private let imageView = UIImageView() + + private lazy var topPadding: NSLayoutConstraint = { imageView.topAnchor.constraint(equalTo: self.topAnchor) }() + private lazy var trailingPadding: NSLayoutConstraint = { imageView.trailingAnchor.constraint(equalTo: self.trailingAnchor) }() + private lazy var bottomPadding: NSLayoutConstraint = { imageView.bottomAnchor.constraint(equalTo: self.bottomAnchor) }() + private lazy var leadingPadding: NSLayoutConstraint = { imageView.leadingAnchor.constraint(equalTo: self.leadingAnchor) }() + + var image: UIImage? { + get { imageView.image } + set { imageView.image = newValue } + } + + convenience init() { + self.init(frame: .zero) + setupViews() + } + + func resetPadding(viewBounds: CGRect, cropViewFrame: CGRect, scrollViewZoomScale: CGFloat) { + topPadding.constant = cropViewFrame.origin.y / scrollViewZoomScale + leadingPadding.constant = cropViewFrame.origin.x / scrollViewZoomScale + trailingPadding.constant = -max(0, (viewBounds.width - (cropViewFrame.origin.x + cropViewFrame.width)) / scrollViewZoomScale) + bottomPadding.constant = -max(0, (viewBounds.height - (cropViewFrame.origin.y + cropViewFrame.height)) / scrollViewZoomScale) + } + + private func setupViews() { + backgroundColor = .black + self.imageView.translatesAutoresizingMaskIntoConstraints = false + self.addSubview(self.imageView) + NSLayoutConstraint.activate([topPadding, trailingPadding, bottomPadding, leadingPadding]) + } + + override var intrinsicContentSize: CGSize { + return .init( + width: abs(leadingPadding.constant) + imageView.intrinsicContentSize.width + abs(trailingPadding.constant), + height: abs(topPadding.constant) + imageView.intrinsicContentSize.height + abs(bottomPadding.constant)) + } + +} + + + +// MARK: - CropView + +private final class AlphaView: UIView { + + private static let alphaComponent: CGFloat = 0.5 + private static let centerViewSideSize: CGFloat = 300.0 + + let centerView = UIView() + + convenience init() { + self.init(frame: .zero) + setupViews() + } + + private func setupViews() { + + self.isUserInteractionEnabled = false + + let topView = UIView() + self.addSubview(topView) + topView.translatesAutoresizingMaskIntoConstraints = false + topView.backgroundColor = .black.withAlphaComponent(Self.alphaComponent) + + let trailingView = UIView() + self.addSubview(trailingView) + trailingView.translatesAutoresizingMaskIntoConstraints = false + trailingView.backgroundColor = .black.withAlphaComponent(Self.alphaComponent) + + let bottomView = UIView() + self.addSubview(bottomView) + bottomView.translatesAutoresizingMaskIntoConstraints = false + bottomView.backgroundColor = .black.withAlphaComponent(Self.alphaComponent) + + let leadingView = UIView() + self.addSubview(leadingView) + leadingView.translatesAutoresizingMaskIntoConstraints = false + leadingView.backgroundColor = .black.withAlphaComponent(Self.alphaComponent) + + self.addSubview(centerView) + centerView.translatesAutoresizingMaskIntoConstraints = false + + let circleView = UIView() + centerView.addSubview(circleView) + circleView.translatesAutoresizingMaskIntoConstraints = false + + NSLayoutConstraint.activate([ + + centerView.widthAnchor.constraint(equalToConstant: Self.centerViewSideSize), + centerView.heightAnchor.constraint(equalToConstant: Self.centerViewSideSize), + centerView.centerXAnchor.constraint(equalTo: self.centerXAnchor), + centerView.centerYAnchor.constraint(equalTo: self.centerYAnchor), + + topView.topAnchor.constraint(equalTo: self.topAnchor), + topView.trailingAnchor.constraint(equalTo: self.trailingAnchor), + topView.bottomAnchor.constraint(equalTo: centerView.topAnchor), + topView.leadingAnchor.constraint(equalTo: self.leadingAnchor), + + trailingView.topAnchor.constraint(equalTo: topView.bottomAnchor), + trailingView.trailingAnchor.constraint(equalTo: self.trailingAnchor), + trailingView.bottomAnchor.constraint(equalTo: bottomView.topAnchor), + trailingView.leadingAnchor.constraint(equalTo: centerView.trailingAnchor), + + bottomView.topAnchor.constraint(equalTo: centerView.bottomAnchor), + bottomView.trailingAnchor.constraint(equalTo: self.trailingAnchor), + bottomView.bottomAnchor.constraint(equalTo: self.bottomAnchor), + bottomView.leadingAnchor.constraint(equalTo: self.leadingAnchor), + + leadingView.topAnchor.constraint(equalTo: topView.bottomAnchor), + leadingView.trailingAnchor.constraint(equalTo: centerView.leadingAnchor), + leadingView.bottomAnchor.constraint(equalTo: bottomView.topAnchor), + leadingView.leadingAnchor.constraint(equalTo: self.leadingAnchor), + + circleView.topAnchor.constraint(equalTo: centerView.topAnchor), + circleView.trailingAnchor.constraint(equalTo: centerView.trailingAnchor), + circleView.bottomAnchor.constraint(equalTo: centerView.bottomAnchor), + circleView.leadingAnchor.constraint(equalTo: centerView.leadingAnchor), + + ]) + + // Add white border + + centerView.layer.borderWidth = 0.5 + centerView.layer.borderColor = CGColor(gray: 1, alpha: 1) + + circleView.layer.borderWidth = 0.5 + circleView.layer.borderColor = CGColor(gray: 1, alpha: 1) + circleView.layer.cornerRadius = Self.centerViewSideSize / 2 + + } + +} + + +fileprivate extension CGImagePropertyOrientation { + init(_ uiOrientation: UIImage.Orientation) { + switch uiOrientation { + case .up: self = .up + case .upMirrored: self = .upMirrored + case .down: self = .down + case .downMirrored: self = .downMirrored + case .left: self = .left + case .leftMirrored: self = .leftMirrored + case .right: self = .right + case .rightMirrored: self = .rightMirrored + @unknown default: + assertionFailure() + self = .up + } + } +} + + +fileprivate extension UIImage.Orientation { + init(_ cgOrientation: CGImagePropertyOrientation) { + switch cgOrientation { + case .up: self = .up + case .upMirrored: self = .upMirrored + case .down: self = .down + case .downMirrored: self = .downMirrored + case .left: self = .left + case .leftMirrored: self = .leftMirrored + case .right: self = .right + case .rightMirrored: self = .rightMirrored + } + } +} + + +fileprivate extension CGImage { + + /// Assuming that the orientation of self is (the Core graphics equivalent of) `uiOrientation`, this method returns a `CGImage` obtained by transforming `self` to obtain an image if the `up` orientation. + func toUpOrientation(from uiOrientation: UIImage.Orientation) -> CGImage? { + + guard uiOrientation != .up else { return self } + + let cgOrientation = CGImagePropertyOrientation(uiOrientation) + let ciImage = CIImage(cgImage: self) + let upCIImage = ciImage.oriented(cgOrientation) + let ciContext = CIContext() + let upCGImage = ciContext.createCGImage(upCIImage, from: upCIImage.extent) + + guard let upCGImage else { assertionFailure(); return nil } + + return upCGImage + + } + +} diff --git a/Modules/UI/ObvImageEditor/Sources/ObvImageEditorViewControllerRepresentable.swift b/Modules/UI/ObvImageEditor/Sources/ObvImageEditorViewControllerRepresentable.swift new file mode 100644 index 00000000..1224c3bb --- /dev/null +++ b/Modules/UI/ObvImageEditor/Sources/ObvImageEditorViewControllerRepresentable.swift @@ -0,0 +1,72 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import UIKit + +/// Allows to use the ``ObvImageEditorViewController`` in a SwiftUI view +public struct ObvImageEditorViewControllerRepresentable: UIViewControllerRepresentable { + + public let originalImage: UIImage + public let showZoomButtons: Bool + public let maxReturnedImageSize: (width: Int, height: Int) // In pixels + private let delegate: Delegate + fileprivate let completion: (UIImage?) -> Void + + public init(originalImage: UIImage, showZoomButtons: Bool, maxReturnedImageSize: (width: Int, height: Int), completion: @escaping (UIImage?) -> Void) { + self.originalImage = originalImage + self.showZoomButtons = showZoomButtons + self.maxReturnedImageSize = maxReturnedImageSize + self.completion = completion + self.delegate = Delegate() + self.delegate.view = self + } + + public func makeUIViewController(context: Context) -> ObvImageEditorViewController { + ObvImageEditorViewController( + originalImage: originalImage, + showZoomButtons: showZoomButtons, + maxReturnedImageSize: maxReturnedImageSize, + delegate: delegate) + } + + public func updateUIViewController(_ imageEditor: ObvImageEditorViewController, context: UIViewControllerRepresentableContext) {} + +} + + +private final class Delegate: ObvImageEditorViewControllerDelegate { + + deinit { + debugPrint("deinit Delegate: ObvImageEditorViewControllerDelegate") + } + + fileprivate var view: ObvImageEditorViewControllerRepresentable? + + @MainActor + func userCancelledImageEdition(_ imageEditor: ObvImageEditorViewController) async { + view?.completion(nil) + } + + @MainActor + func userConfirmedImageEdition(_ imageEditor: ObvImageEditorViewController, image: UIImage) async { + view?.completion(image) + } + +} diff --git a/Modules/UI/ObvPhotoButton/Localizable.xcstrings b/Modules/UI/ObvPhotoButton/Localizable.xcstrings new file mode 100644 index 00000000..f7180539 --- /dev/null +++ b/Modules/UI/ObvPhotoButton/Localizable.xcstrings @@ -0,0 +1,54 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "ONBOARDING_PROFILE_PICTURE_CHOOSER_BUTTON_TITLE_CHOOSE_PICTURE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose a photo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir une photo" + } + } + } + }, + "ONBOARDING_PROFILE_PICTURE_CHOOSER_BUTTON_TITLE_REMOVE_PICTURE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove the photo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer la photo" + } + } + } + }, + "ONBOARDING_PROFILE_PICTURE_CHOOSER_BUTTON_TITLE_TAKE_PICTURE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Take a photo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prendre une photo" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/Modules/UI/ObvPhotoButton/LocalizableClassForObvPhotoButtonBundle.swift b/Modules/UI/ObvPhotoButton/LocalizableClassForObvPhotoButtonBundle.swift new file mode 100644 index 00000000..697e1b0c --- /dev/null +++ b/Modules/UI/ObvPhotoButton/LocalizableClassForObvPhotoButtonBundle.swift @@ -0,0 +1,58 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import UI_SystemIcon + + +/// This is a dummy class, allowing to specify the appropriate module when declaring a localized string, so that the localized string key is looked up in the correct `Localizable.xcstrings` file. +final class LocalizableClassForObvPhotoButtonBundle {} + + +func NSLocalizedString(_ key: String, comment: String) -> String { + return NSLocalizedString(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvPhotoButtonBundle.self), comment: comment) +} + + +func NSLocalizedString(_ key: String) -> String { + return NSLocalizedString(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvPhotoButtonBundle.self), comment: "Within ObvPhotoButton") +} + + +extension Text { + + init(_ key: LocalizedStringKey, comment: StaticString? = nil) { + self.init(key, tableName: "Localizable", bundle: Bundle(for: LocalizableClassForObvPhotoButtonBundle.self), comment: comment ?? "Within ObvPhotoButton") + } + +} + + +extension Label where Title == Text, Icon == Image { + + init(_ titleKey: LocalizedStringKey, systemIcon icon: SystemIcon) { + self.init(title: { + Text(titleKey) + }, icon: { + Image(systemIcon: icon) + }) + } + +} diff --git a/Modules/UI/ObvPhotoButton/ObvPhotoButtonView.swift b/Modules/UI/ObvPhotoButton/ObvPhotoButtonView.swift new file mode 100644 index 00000000..2893ca18 --- /dev/null +++ b/Modules/UI/ObvPhotoButton/ObvPhotoButtonView.swift @@ -0,0 +1,92 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import UI_ObvCircledInitials +import UI_SystemIcon_SwiftUI + + +public protocol ObvPhotoButtonViewActionsProtocol { + func userWantsToAddProfilPictureWithCamera() + func userWantsToAddProfilPictureWithPhotoLibrary() + func userWantsToRemoveProfilePicture() +} + + +public protocol ObvPhotoButtonViewModelProtocol: InitialCircleViewNewModelProtocol { + + var photoThatCannotBeRemoved: UIImage? { get } + +} + + +/// View used during onboarding when editing the unmanaged details of an owned identity. Also used when editing the custom photo of a contact. +public struct ObvPhotoButtonView: View { + + private let actions: ObvPhotoButtonViewActionsProtocol + @ObservedObject private var model: Model + @State private var isPopoverPresented = false + private let circleDiameter: CGFloat = 128 + + public init(actions: ObvPhotoButtonViewActionsProtocol, model: Model) { + self.actions = actions + self.model = model + } + + private func buttonTapped() { + isPopoverPresented = true + } + + public var body: some View { + InitialCircleViewNew(model: model, state: .init(circleDiameter: circleDiameter)) + .frame(width: circleDiameter, height: circleDiameter) + .overlay(alignment: .init(horizontal: .trailing, vertical: .bottom)) { + Menu { + if UIImagePickerController.isCameraDeviceAvailable(.front) { + Button(action: actions.userWantsToAddProfilPictureWithCamera, label: { + Label("ONBOARDING_PROFILE_PICTURE_CHOOSER_BUTTON_TITLE_TAKE_PICTURE", systemIcon: .camera(.none)) + }) + } + Button(action: actions.userWantsToAddProfilPictureWithPhotoLibrary, label: { + Label("ONBOARDING_PROFILE_PICTURE_CHOOSER_BUTTON_TITLE_CHOOSE_PICTURE", systemIcon: .photo) + }) + if model.circledInitialsConfiguration.photo != nil && model.circledInitialsConfiguration.photo != model.photoThatCannotBeRemoved { + Button(action: actions.userWantsToRemoveProfilePicture, label: { + Label("ONBOARDING_PROFILE_PICTURE_CHOOSER_BUTTON_TITLE_REMOVE_PICTURE", systemIcon: .trash) + }) + } + } label: { + ZStack { + Circle() + .fill(.background) + .frame(width: circleDiameter/4+10, height: circleDiameter/4+10) + Circle() + .fill(.white) + .frame(width: circleDiameter/4-1, height: circleDiameter/4-1) + Image(systemIcon: .camera(.circleFill)) + .font(.system(size: circleDiameter/4)) + .foregroundStyle(Color("Blue01")) + .offset(x: 0, y: 0) + } + } + + } + } + +} diff --git a/Modules/UI/Project.swift b/Modules/UI/Project.swift index 4a5b16b0..7c74d560 100644 --- a/Modules/UI/Project.swift +++ b/Modules/UI/Project.swift @@ -2,41 +2,73 @@ import ProjectDescription import ProjectDescriptionHelpers -let circledInitialsViewConfiguration = Target.swiftLibrary( - name: "UI_CircledInitialsView_CircledInitialsConfiguration", +let obvCircledInitials = Target.swiftLibrary( + name: "UI_ObvCircledInitials", isExtensionSafe: true, - sources: "CircledInitialsView/CircledInitialsConfiguration/*.swift", + sources: "ObvCircledInitials/*.swift", dependencies: [ .Engine.obvCrypto, .Engine.obvTypes, + .Modules.obvDesignSystem, + .Modules.obvSettings, ] ) -let uiSystemIcon = Target.swiftLibrary(name: "UI_SystemIcon", - isExtensionSafe: true, - sources: "SystemIcon/*.swift", - dependencies: [], - resources: []) - -let uiSystemIconSwiftUI = Target.swiftLibrary(name: "UI_SystemIcon_SwiftUI", - isExtensionSafe: true, - sources: "SystemIcon_SwiftUI/*.swift", - dependencies: [ - .target(uiSystemIcon) - ], - resources: []) - -let uiSystemIconUIKit = Target.swiftLibrary(name: "UI_SystemIcon_UIKit", - isExtensionSafe: true, - sources: "SystemIcon_UIKit/*.swift", - dependencies: [ - .target(uiSystemIcon) - ], - resources: []) - -let project = Project.createProject(name: "UI", - packages: [], - targets: [uiSystemIcon, - uiSystemIconSwiftUI, - uiSystemIconUIKit, - circledInitialsViewConfiguration]) +let uiSystemIcon = Target.swiftLibrary( + name: "UI_SystemIcon", + isExtensionSafe: true, + sources: "SystemIcon/*.swift", + dependencies: [], + resources: []) + +let uiSystemIconSwiftUI = Target.swiftLibrary( + name: "UI_SystemIcon_SwiftUI", + isExtensionSafe: true, + sources: "SystemIcon_SwiftUI/*.swift", + dependencies: [ + .target(uiSystemIcon) + ], + resources: []) + +let uiSystemIconUIKit = Target.swiftLibrary( + name: "UI_SystemIcon_UIKit", + isExtensionSafe: true, + sources: "SystemIcon_UIKit/*.swift", + dependencies: [ + .target(uiSystemIcon) + ], + resources: []) + +let obvImageEditor = Target.swiftLibrary( + name: "UI_ObvImageEditor", + isExtensionSafe: true, + sources: "ObvImageEditor/Sources/*.swift", + dependencies: [], + resources: []) + + +let obvPhotoButton = Target.swiftLibrary( + name: "UI_ObvPhotoButton", + isExtensionSafe: true, + sources: "ObvPhotoButton/*.swift", + dependencies: [ + .target(obvCircledInitials), + .target(uiSystemIconSwiftUI), + ], + resources: [ + "ObvPhotoButton/*.xcstrings", + ] +) + + +let project = Project.createProject( + name: "UI", + packages: [], + targets: [ + uiSystemIcon, + uiSystemIconSwiftUI, + uiSystemIconUIKit, + obvCircledInitials, + obvPhotoButton, + obvImageEditor, + ]) diff --git a/Modules/UI/SystemIcon/SystemIcon.swift b/Modules/UI/SystemIcon/SystemIcon.swift index 4ed297ad..ce9c3720 100644 --- a/Modules/UI/SystemIcon/SystemIcon.swift +++ b/Modules/UI/SystemIcon/SystemIcon.swift @@ -13,7 +13,7 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU Affero General Public License + * You should have received a copy of the GNU Affero General Public Licensecase a * along with Olvid. If not, see . */ @@ -23,12 +23,17 @@ import Foundation public enum SystemIcon: Hashable { + case airplayaudio + case airpods + case airpodsmax + case airpodspro case at case atCircle case atCircleFill case alarm case archivebox case archiveboxFill + case arrow2Squarepath case arrowClockwise case arrowCounterclockwise case arrowCounterclockwiseCircle @@ -54,6 +59,7 @@ public enum SystemIcon: Hashable { case book case bookmark case bubbleLeftAndBubbleRight + case bubbleLeftAndBubbleRightFill case calendar case calendarBadgeClock case camera(_: SystemIconFillCircleCircleFillOption? = nil) @@ -62,6 +68,7 @@ public enum SystemIcon: Hashable { case checkmarkCircle case checkmarkCircleFill case checkmarkSealFill + case checkmarkShield case checkmarkShieldFill case checkmarkSquareFill case chevronLeftForwardslashChevronRight @@ -76,6 +83,7 @@ public enum SystemIcon: Hashable { case creditcardFill case display case docBadgeGearshape + case doc case docFill case docOnClipboardFill case docOnDoc @@ -84,6 +92,8 @@ public enum SystemIcon: Hashable { case ellipsisCircle case ellipsisCircleFill case ellipsisRectangle + case envelope + case envelopeBadge case envelopeOpenFill case exclamationmarkCircle case exclamationmarkShieldFill @@ -94,6 +104,7 @@ public enum SystemIcon: Hashable { case eyesInverse case figureStandLineDottedFigureStand case flameFill + case folder case folderCircle case folderFill case forwardFill @@ -105,18 +116,27 @@ public enum SystemIcon: Hashable { case handThumbsup case handThumbsupFill case hare + case headphones case hourglass case icloud(_: SystemIconFillOption = .none) case infoCircle + case ipadLandscape + case iphone case iphoneGen3CircleFill + case laptopcomputerAndIphone case link case lock(_: SystemIconFillOption = .none, _: SystemIconShieldOption = .none) case network + case laptopcomputer + case macbookAndIphone + case magnifyingglass case micCircle case micCircleFill + case mic case micFill case minusCircle case minusCircleFill + case micSlashFill case moonZzzFill case multiply case muliplyCircleFill @@ -134,6 +154,7 @@ public enum SystemIcon: Hashable { case person2Circle case person3 case person3Fill + case personBadgeShieldCheckmark case personCropCircle case personCropCircleBadgeCheckmark case personCropCircleBadgeQuestionmark @@ -141,13 +162,18 @@ public enum SystemIcon: Hashable { case personCropCircleFillBadgeCheckmark case personCropCircleFillBadgeMinus case personCropCircleFillBadgeXmark + case personCropRectangle case personTextRectangle case personFillQuestionmark case personFillViewfinder case personFillXmark + case personLineDottedPerson case personLineDottedPersonFill case phoneCircleFill + case phoneDownFill case phoneFill + case phoneArrowDownLeftFill + case phoneArrowUpRightFill case photo case photoOnRectangleAngled case pin @@ -156,6 +182,7 @@ public enum SystemIcon: Hashable { case playCircleFill case plus case plusCircle + case poweroff case qrcode case qrcodeViewfinder case questionmarkCircle @@ -171,6 +198,7 @@ public enum SystemIcon: Hashable { case shieldFill case speakerWave3Fill case speakerSlashFill + case squareAndArrowDownOnSquare case squareAndArrowUp case squareAndPencil case star @@ -182,18 +210,29 @@ public enum SystemIcon: Hashable { case trash case trashFill case trashCircle + case tray case uiwindowSplit2x1 case umbrella case unpin + case waveform case xmark case xmarkCircle case xmarkCircleFill case xmarkOctagon case xmarkOctagonFill + case xmarkSealFill case heartSlashFill public var systemName: String { switch self { + case .airplayaudio: + return "airplayaudio" + case .airpods: + return "airpods" + case .airpodsmax: + return "airpodsmax" + case .airpodspro: + return "airpodspro" case .at: return "at" case .atCircle: @@ -264,6 +303,8 @@ public enum SystemIcon: Hashable { return "trash.fill" case .trashCircle: return "trash.circle" + case .tray: + return "tray" case .uiwindowSplit2x1: return "uiwindow.split.2x1" case .scanner: @@ -288,6 +329,18 @@ public enum SystemIcon: Hashable { return "doc.on.doc" case .infoCircle: return "info.circle" + case .ipadLandscape: + if #available(iOS 14.0, *) { + return "ipad.landscape" + } else { + return "dot.square" + } + case .iphone: + if #available(iOS 14.0, *) { + return "iphone" + } else { + return "dot.square" + } case .iphoneGen3CircleFill: if #available(iOS 16.1, *) { return "iphone.gen3.circle.fill" @@ -296,6 +349,12 @@ public enum SystemIcon: Hashable { } else { return "checkmark.circle" } + case .laptopcomputerAndIphone: + if #available(iOS 14, *) { + return "laptopcomputer.and.iphone" + } else { + return "desktopcomputer" + } case .personFillQuestionmark: if #available(iOS 14, *) { return "person.fill.questionmark" @@ -314,6 +373,12 @@ public enum SystemIcon: Hashable { } else { return "qrcode.viewfinder" } + case .personLineDottedPerson: + if #available(iOS 16, *) { + return "person.line.dotted.person" + } else { + return "person.2" + } case .personLineDottedPersonFill: if #available(iOS 16, *) { return "person.line.dotted.person.fill" @@ -330,8 +395,12 @@ public enum SystemIcon: Hashable { return "eye.slash" case .hare: return "hare" + case .headphones: + return "headphones" case .hourglass: return "hourglass" + case .folder: + return "folder" case .folderCircle: return "folder.circle" case .arrowshapeTurnUpForward: @@ -354,6 +423,8 @@ public enum SystemIcon: Hashable { return "checkmark.circle" case .qrcodeViewfinder: return "qrcode.viewfinder" + case .arrow2Squarepath: + return "arrow.2.squarepath" case .arrowClockwise: return "arrow.clockwise" case .arrowCounterclockwise: @@ -400,6 +471,8 @@ public enum SystemIcon: Hashable { } else { return "checkmark" } + case .checkmarkShield: + return "checkmark.shield" case .checkmarkShieldFill: return "checkmark.shield.fill" case .icloud(let fill): @@ -434,6 +507,12 @@ public enum SystemIcon: Hashable { return "person.3" case .person3Fill: return "person.3.fill" + case .personBadgeShieldCheckmark: + if #available(iOS 16, *) { + return "person.badge.shield.checkmark" + } else { + return "person" + } case .chevronDown: return "chevron.down" case .chevronRight: @@ -446,8 +525,22 @@ public enum SystemIcon: Hashable { return "text.bubble.fill" case .phoneCircleFill: return "phone.circle.fill" + case .phoneDownFill: + return "phone.down.fill" case .phoneFill: return "phone.fill" + case .phoneArrowDownLeftFill: + if #available(iOS 16.0, *) { + return "phone.arrow.down.left.fill" + } else { + return "phone.fill" + } + case .phoneArrowUpRightFill: + if #available(iOS 16.0, *) { + return "phone.arrow.up.right.fill" + } else { + return "phone.fill" + } case .ellipsisCircleFill: return "ellipsis.circle.fill" case .ellipsisCircle: @@ -464,6 +557,8 @@ public enum SystemIcon: Hashable { } case .minusCircleFill: return "minus.circle.fill" + case .micSlashFill: + return "mic.slash.fill" case .minusCircle: return "minus.circle" case .arrowshapeTurnUpForwardFill: @@ -482,6 +577,8 @@ public enum SystemIcon: Hashable { } case .paperplaneFill: return "paperplane.fill" + case .waveform: + return "waveform" case .xmark: return "xmark" case .xmarkCircle: @@ -492,6 +589,10 @@ public enum SystemIcon: Hashable { return "xmark.octagon" case .xmarkOctagonFill: return "xmark.octagon.fill" + case .xmarkSealFill: + return "xmark.seal.fill" + case .squareAndArrowDownOnSquare: + return "square.and.arrow.down.on.square" case .squareAndArrowUp: return "square.and.arrow.up" case .checkmarkCircleFill: @@ -552,12 +653,20 @@ public enum SystemIcon: Hashable { return "book" case .bubbleLeftAndBubbleRight: return "bubble.left.and.bubble.right" + case .bubbleLeftAndBubbleRightFill: + return "bubble.left.and.bubble.right.fill" case .arrowUpArrowDownCircle: return "arrow.up.arrow.down.circle" case .speakerSlashFill: return "speaker.slash.fill" case .plusCircle: return "plus.circle" + case .poweroff: + if #available(iOS 14.0, *) { + return "poweroff" + } else { + return "circle" + } case .arrowForward: return "arrow.forward" case .pencilSlash: @@ -568,6 +677,8 @@ public enum SystemIcon: Hashable { return "mic.circle" case .micCircleFill: return "mic.circle.fill" + case .mic: + return "mic" case .micFill: return "mic.fill" case .playCircle: @@ -600,6 +711,22 @@ public enum SystemIcon: Hashable { } else { return "link" } + case .laptopcomputer: + if #available(iOS 14.0, *) { + return "laptopcomputer" + } else { + return "desktopcomputer" + } + case .macbookAndIphone: + if #available(iOS 16.1, *) { + return "macbook.and.iphone" + } else if #available(iOS 15.0, *) { + return "ipad.and.iphone" + } else { + return "desktopcomputer" + } + case .magnifyingglass: + return "magnifyingglass" case .star: return "star" case .starFill: @@ -612,6 +739,8 @@ public enum SystemIcon: Hashable { return "archivebox" case .archiveboxFill: return "archivebox.fill" + case .doc: + return "doc" case .docFill: return "doc.fill" case .rectangleDashedAndPaperclip: @@ -622,6 +751,10 @@ public enum SystemIcon: Hashable { } case .rectangleCompressVertical: return "rectangle.compress.vertical" + case .envelope: + return "envelope" + case .envelopeBadge: + return "envelope.badge" case .envelopeOpenFill: return "envelope.open.fill" case .speakerWave3Fill: @@ -638,6 +771,8 @@ public enum SystemIcon: Hashable { } case .musicNoteList: return "music.note.list" + case .personCropRectangle: + return "person.crop.rectangle" case .personTextRectangle: if #available(iOS 15.0, *) { return "person.text.rectangle" diff --git a/Modules/UI/SystemIcon_SwiftUI/Label+SystemIcon.swift b/Modules/UI/SystemIcon_SwiftUI/Label+SystemIcon.swift index 6ddfa301..39e102c1 100644 --- a/Modules/UI/SystemIcon_SwiftUI/Label+SystemIcon.swift +++ b/Modules/UI/SystemIcon_SwiftUI/Label+SystemIcon.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,8 +29,4 @@ public extension Label where Title == Text, Icon == Image { self.init(titleKey, systemImage: icon.systemName) } - init(_ title: S, systemIcon icon: SystemIcon) where S: StringProtocol { - self.init(title, systemImage: icon.systemName) - } - } diff --git a/delete_DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER_from_all_project_pbxproj b/delete_DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER_from_all_project_pbxproj new file mode 100755 index 00000000..eb732053 --- /dev/null +++ b/delete_DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER_from_all_project_pbxproj @@ -0,0 +1,8 @@ +#!/bin/bash + +# As of version 3.21.1, Tuist generates a DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER in all pbxproj files. +# This is an obsolete key that should not be part of the project files. +# This script removes the lines containing this key from all project files. + +find . -iname '*.pbxproj' -exec sed -i .todelete '/DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES/d' {} \; +find . -iname '*.pbxproj.todelete' -exec rm {} \; diff --git a/iOSClient/ObvMessenger/ObvMessenger/AppDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/AppDelegate.swift index 1301d491..69f0d4aa 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/AppDelegate.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/AppDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,10 +26,8 @@ import CoreDataStack import AppAuth import OlvidUtils import ObvUICoreData +import ObvSettings -#if OLVID_SHOULD_ENABLE_ATLANTIS_PROXY -import Atlantis -#endif @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, ObvErrorMaker { @@ -53,10 +51,18 @@ class AppDelegate: UIResponder, UIApplicationDelegate, ObvErrorMaker { await appMainManager.appBackupDelegate } } + + var storeKitDelegate: StoreKitDelegate? { + get async { + await appMainManager.storeKitDelegate + } + } func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - #if OLVID_SHOULD_ENABLE_ATLANTIS_PROXY - Atlantis.start() + + #if DEBUG + // This prevents certain SwiftUI previews from crashing + if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" { return true } #endif os_log("🧦 Application did finish launching with options", log: log, type: .info) @@ -152,7 +158,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, ObvErrorMaker { } func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { - os_log("🌊 Application did receive remote notification", log: log, type: .info) + os_log("🫸🌊 Application did receive remote notification", log: log, type: .info) Task { [weak self] in await self?.appMainManager.application(application, didReceiveRemoteNotification: userInfo, fetchCompletionHandler: completionHandler) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/I.colorset/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/I.colorset/Contents.json new file mode 100644 index 00000000..22c4bb0a --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/I.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/Blue01.colorset/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/Blue01.colorset/Contents.json new file mode 100644 index 00000000..6360eb5c --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/Blue01.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF5", + "green" : "0x65", + "red" : "0x2F" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF5", + "green" : "0x65", + "red" : "0x2F" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/OnboardingBackgroundColor.colorset/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/OnboardingBackgroundColor.colorset/Contents.json new file mode 100644 index 00000000..36c3948c --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/OnboardingBackgroundColor.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF9", + "green" : "0xF1", + "red" : "0xEF" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x2C", + "green" : "0x2C", + "red" : "0x2C" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/TextFieldBackgroundColor.colorset/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/TextFieldBackgroundColor.colorset/Contents.json new file mode 100644 index 00000000..36c3948c --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Assets.xcassets/NewColors/TextFieldBackgroundColor.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF9", + "green" : "0xF1", + "red" : "0xEF" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x2C", + "green" : "0x2C", + "red" : "0x2C" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/CollectionViewControllers/FyleMessageJoinsWithStatus/Cells/FyleCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/CollectionViewControllers/FyleMessageJoinsWithStatus/Cells/FyleCollectionViewCell.swift index aee4e943..96c6dddc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/CollectionViewControllers/FyleMessageJoinsWithStatus/Cells/FyleCollectionViewCell.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/CollectionViewControllers/FyleMessageJoinsWithStatus/Cells/FyleCollectionViewCell.swift @@ -24,6 +24,7 @@ import MobileCoreServices import AVKit import ObvUI import ObvUICoreData +import ObvDesignSystem class FyleCollectionViewCell: UICollectionViewCell { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Constants/ObvMessengerConstants.swift b/iOSClient/ObvMessenger/ObvMessenger/Constants/ObvMessengerConstants.swift index 50e2b3d6..c67f75a8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Constants/ObvMessengerConstants.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Constants/ObvMessengerConstants.swift @@ -23,6 +23,8 @@ import ObvTypes import ObvUI import ObvUICoreData import UI_SystemIcon +import ObvSettings + enum ObvMessengerConstants { @@ -43,17 +45,7 @@ enum ObvMessengerConstants { } static let serverURL = URL(string: Bundle.main.infoDictionary!["OBV_SERVER_URL"]! as! String)! - - static let hardcodedAPIKey: UUID? = { - guard Bundle.main.infoDictionary!.keys.contains("HARDCODED_API_KEY") else { return nil } - return UUID(uuidString: Bundle.main.infoDictionary!["HARDCODED_API_KEY"]! as! String) - }() - - static let defaultServerAndAPIKey: ServerAndAPIKey? = { - guard let hardcodedAPIKey = ObvMessengerConstants.hardcodedAPIKey else { return nil } - return ServerAndAPIKey(server: serverURL, apiKey: hardcodedAPIKey) - }() - + static let toEmailForSendingInitializationFailureErrorMessage = "feedback@olvid.io" static let iCloudContainerIdentifierForEngineBackup = "iCloud.io.olvid.messenger.backup" @@ -91,6 +83,14 @@ enum ObvMessengerConstants { return true #endif } + + static var targetEnvironmentIsMacCatalyst: Bool { + #if targetEnvironment(macCatalyst) + return true + #else + return false + #endif + } /// Helper indicating if remote notifications are available or not /// @@ -167,4 +167,8 @@ enum ObvMessengerConstants { [.webrtcContinuousICE, .oneToOneContacts, .groupsV2] }() + // Other + + public static let maximumTimeIntervalForKeptForLaterMessages = TimeInterval(days: 2) + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppCoordinatorsHolder.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppCoordinatorsHolder.swift index 9efbeb3d..e58f9249 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppCoordinatorsHolder.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppCoordinatorsHolder.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,15 +20,22 @@ import Foundation import ObvEngine +import ObvTypes +import ObvUICoreData +import Combine +import ObvSettings -final class AppCoordinatorsHolder { +final class AppCoordinatorsHolder: ObvSyncAtomRequestDelegate { + private let obvEngine: ObvEngine private let persistedDiscussionsUpdatesCoordinator: PersistedDiscussionsUpdatesCoordinator private let bootstrapCoordinator: BootstrapCoordinator private let obvOwnedIdentityCoordinator: ObvOwnedIdentityCoordinator private let contactIdentityCoordinator: ContactIdentityCoordinator private let contactGroupCoordinator: ContactGroupCoordinator + private let appSyncSnapshotableCoordinator: AppSyncSnapshotableCoordinator + private var cancellables = Set() init(obvEngine: ObvEngine) { @@ -42,26 +49,153 @@ final class AppCoordinatorsHolder { return queue }() - self.persistedDiscussionsUpdatesCoordinator = PersistedDiscussionsUpdatesCoordinator(obvEngine: obvEngine, coordinatorsQueue: queueSharedAmongCoordinators, queueForComposedOperations: queueForComposedOperations) - self.bootstrapCoordinator = BootstrapCoordinator(obvEngine: obvEngine, coordinatorsQueue: queueSharedAmongCoordinators, queueForComposedOperations: queueForComposedOperations) - self.obvOwnedIdentityCoordinator = ObvOwnedIdentityCoordinator(obvEngine: obvEngine, coordinatorsQueue: queueSharedAmongCoordinators, queueForComposedOperations: queueForComposedOperations) - self.contactIdentityCoordinator = ContactIdentityCoordinator(obvEngine: obvEngine, coordinatorsQueue: queueSharedAmongCoordinators, queueForComposedOperations: queueForComposedOperations) - self.contactGroupCoordinator = ContactGroupCoordinator(obvEngine: obvEngine, coordinatorsQueue: queueSharedAmongCoordinators, queueForComposedOperations: queueForComposedOperations) + self.obvEngine = obvEngine + let messagesKeptForLaterManager = MessagesKeptForLaterManager() + + self.persistedDiscussionsUpdatesCoordinator = PersistedDiscussionsUpdatesCoordinator( + obvEngine: obvEngine, + coordinatorsQueue: queueSharedAmongCoordinators, + queueForComposedOperations: queueForComposedOperations, + messagesKeptForLaterManager: messagesKeptForLaterManager) + self.bootstrapCoordinator = BootstrapCoordinator( + obvEngine: obvEngine, + coordinatorsQueue: queueSharedAmongCoordinators, + queueForComposedOperations: queueForComposedOperations) + self.obvOwnedIdentityCoordinator = ObvOwnedIdentityCoordinator( + obvEngine: obvEngine, + coordinatorsQueue: queueSharedAmongCoordinators, + queueForComposedOperations: queueForComposedOperations) + self.contactIdentityCoordinator = ContactIdentityCoordinator( + obvEngine: obvEngine, + coordinatorsQueue: queueSharedAmongCoordinators, + queueForComposedOperations: queueForComposedOperations) + self.contactGroupCoordinator = ContactGroupCoordinator( + obvEngine: obvEngine, + coordinatorsQueue: queueSharedAmongCoordinators, + queueForComposedOperations: queueForComposedOperations) + self.appSyncSnapshotableCoordinator = AppSyncSnapshotableCoordinator( + obvEngine: obvEngine, + coordinatorsQueue: queueSharedAmongCoordinators, + queueForComposedOperations: queueForComposedOperations) + + self.persistedDiscussionsUpdatesCoordinator.syncAtomRequestDelegate = self + self.obvOwnedIdentityCoordinator.syncAtomRequestDelegate = self + self.contactIdentityCoordinator.syncAtomRequestDelegate = self + self.contactGroupCoordinator.syncAtomRequestDelegate = self + self.bootstrapCoordinator.syncAtomRequestDelegate = self + // No syncAtomRequestDelegate for the AppSyncSnapshotableCoordinator + + } + + + deinit { + cancellables.forEach { $0.cancel() } + cancellables.removeAll() } func applicationAppearedOnScreen(forTheFirstTime: Bool) async { + if forTheFirstTime { + observeSettingsChangeToSyncThemWithOtherOwnedDevices() + } await self.persistedDiscussionsUpdatesCoordinator.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) await self.bootstrapCoordinator.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) await self.obvOwnedIdentityCoordinator.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) await self.contactIdentityCoordinator.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) await self.contactGroupCoordinator.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) + await self.appSyncSnapshotableCoordinator.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) } } +// MARK: - ObvSyncAtomRequestDelegate + +extension AppCoordinatorsHolder { + + func requestPropagationToOtherOwnedDevices(of syncAtom: ObvSyncAtom, for ownedCryptoId: ObvCryptoId) async { + + do { + try await obvEngine.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } catch { + assertionFailure(error.localizedDescription) + } + + } + + + func deleteDialog(with uuid: UUID) throws { + try obvEngine.deleteDialog(with: uuid) + } + +} + + +// MARK: - Sync ObvMessengerSettings with other owned devices + +extension AppCoordinatorsHolder { + + private func observeSettingsChangeToSyncThemWithOtherOwnedDevices() { + + ObvMessengerSettingsObservableObject.shared.$autoAcceptGroupInviteFrom + .compactMap { (autoAcceptGroupInviteFrom, changeMadeFromAnotherOwnedDevice, ownedCryptoId) in + // Filter out changes made from another device since we don't need to sync with them + guard !changeMadeFromAnotherOwnedDevice else { return nil } + guard let ownedCryptoId else { return nil } + return (autoAcceptGroupInviteFrom, ownedCryptoId) + } + .compactMap { (autoAcceptGroupInviteFrom: ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom, ownedCryptoId: ObvCryptoId) in + // Create the ObvSyncAtom + let category = Self.getObvSyncAtomAutoJoinGroupsCategory(from: autoAcceptGroupInviteFrom) + let syncAtom = ObvSyncAtom.settingAutoJoinGroups(category: category) + return (syncAtom, ownedCryptoId) + } + .sink { [weak self] (syncAtom: ObvSyncAtom, ownedCryptoId: ObvCryptoId) in + // Request the sync of the ObvSyncAtom to the engine + Task { [weak self] in + await self?.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } + } + .store(in: &cancellables) + + ObvMessengerSettingsObservableObject.shared.$doSendReadReceipt + .compactMap { (doSendReadReceipt: Bool, changeMadeFromAnotherOwnedDevice: Bool, ownedCryptoId: ObvCryptoId?) in + // Filter out changes made from another device since we don't need to sync with them + guard !changeMadeFromAnotherOwnedDevice else { return nil } + guard let ownedCryptoId else { return nil } + return (doSendReadReceipt, ownedCryptoId) + } + .compactMap { (doSendReadReceipt: Bool, ownedCryptoId: ObvCryptoId) in + // Create the ObvSyncAtom + let syncAtom = ObvSyncAtom.settingDefaultSendReadReceipts(sendReadReceipt: doSendReadReceipt) + return (syncAtom, ownedCryptoId) + } + .sink { [weak self] (syncAtom: ObvSyncAtom, ownedCryptoId: ObvCryptoId) in + // Request the sync of the ObvSyncAtom to the engine + Task { [weak self] in + await self?.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } + } + .store(in: &cancellables) + + } + + + private static func getObvSyncAtomAutoJoinGroupsCategory(from category: ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom) -> ObvSyncAtom.AutoJoinGroupsCategory { + switch category { + case .everyone: + return .everyone + case .noOne: + return .nobody + case .oneToOneContactsOnly: + return .contacts + } + } + + +} + final class LoggedOperationQueue: OperationQueue { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppSyncSnapshotableCoordinator/AppSyncSnapshotableCoordinator.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppSyncSnapshotableCoordinator/AppSyncSnapshotableCoordinator.swift new file mode 100644 index 00000000..4321612c --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppSyncSnapshotableCoordinator/AppSyncSnapshotableCoordinator.swift @@ -0,0 +1,206 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvEngine +import os.log +import ObvTypes +import CoreData +import ObvUICoreData +import ObvCrypto +import OlvidUtils + + + +final class AppSyncSnapshotableCoordinator: ObvAppSnapshotable { + + private let obvEngine: ObvEngine + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: AppSyncSnapshotableCoordinator.self)) + private let coordinatorsQueue: OperationQueue + private let queueForComposedOperations: OperationQueue + + init(obvEngine: ObvEngine, coordinatorsQueue: OperationQueue, queueForComposedOperations: OperationQueue) { + self.obvEngine = obvEngine + self.coordinatorsQueue = coordinatorsQueue + self.queueForComposedOperations = queueForComposedOperations + do { + try obvEngine.registerAppSnapshotableObject(self) + } catch { + os_log("Could not register the app within the engine for performing App data backup", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + } + } + + func applicationAppearedOnScreen(forTheFirstTime: Bool) async {} + + + // MARK: - ObvSnapshotable + + func getSyncSnapshotNode(for ownedCryptoId: ObvCryptoId) throws -> any ObvSyncSnapshotNode { + return try ObvStack.shared.performBackgroundTaskAndWaitOrThrow { context in + return try AppSyncSnapshotNode(ownedCryptoId: ownedCryptoId, within: context) + } + } + + + /// Called by the protocol restoring a sync snapshot during an owned identity transfer protocol + func syncEngineDatabaseThenUpdateAppDatabase(using syncSnapshotNode: any ObvSyncSnapshotNode) async throws { + + // If the sync fails, the rest cannot be perfomed + do { + try await syncAppDatabasesWithEngine() + } catch { + assertionFailure() + throw error + } + + var errorToThrowInTheEnd: Error? + + do { + guard let appSyncSnapshotNode = syncSnapshotNode as? AppSyncSnapshotNode else { + assertionFailure() + throw ObvError.unexpectedSnapshotType + } + try await updateAppDatabase(using: appSyncSnapshotNode) + } catch { + assertionFailure() + errorToThrowInTheEnd = error + } + + await ObvPushNotificationManager.shared.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() + + if let errorToThrowInTheEnd { + assertionFailure() + throw errorToThrowInTheEnd + } + + } + + + func requestServerToKeepDeviceActive(ownedCryptoId: ObvCryptoId, deviceUidToKeepActive: UID) async throws { + do { + // We first make sure the current device is known to the server + await ObvPushNotificationManager.shared.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() + // We then make an engine request allowing to keep the device active + try await obvEngine.requestSettingUnexpiringDevice(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceUidToKeepActive.raw) + } catch { + assertionFailure() + throw error + } + } + + + private func syncAppDatabasesWithEngine() async throws { + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + ObvMessengerInternalNotification.requestSyncAppDatabasesWithEngine(queuePriority: .veryHigh) { result in + switch result { + case .failure(let error): + continuation.resume(throwing: error) + case .success: + continuation.resume() + } + }.postOnDispatchQueue() + } + } + + + private func updateAppDatabase(using appSyncSnapshotNode: AppSyncSnapshotNode) async throws { + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + + let op1 = UpdateAppDatabaseWithAppSyncSnapshotNodeOperation(appSyncSnapshotNode: appSyncSnapshotNode) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + composedOp.queuePriority = .high + + composedOp.appendCompletionBlock { + guard !op1.isCancelled else { + if let reasonForCancel = op1.reasonForCancel { + continuation.resume(throwing: reasonForCancel) + return + } else { + let error = ObvError.updateAppDatabaseFailedWithoutSpecifyingError + continuation.resume(throwing: error) + return + } + } + continuation.resume() + } + + coordinatorsQueue.addOperation(composedOp) + } + } + + + func serializeObvSyncSnapshotNode(_ syncSnapshotNode: any ObvSyncSnapshotNode) throws -> Data { + guard let node = syncSnapshotNode as? AppSyncSnapshotNode else { + assertionFailure() + throw ObvError.unexpectedSnapshotType + } + let jsonEncoder = JSONEncoder() + return try jsonEncoder.encode(node) + } + + + func deserializeObvSyncSnapshotNode(_ serializedSyncSnapshotNode: Data) throws -> any ObvSyncSnapshotNode { + let jsonDecoder = JSONDecoder() + return try jsonDecoder.decode(AppSyncSnapshotNode.self, from: serializedSyncSnapshotNode) + } + + + enum ObvError: Error { + case unexpectedSnapshotType + case updateAppDatabaseFailedWithoutSpecifyingError + } + +} + + +// MARK: - Helpers + +extension AppSyncSnapshotableCoordinator { + + private func createCompositionOfOneContextualOperation(op1: ContextualOperationWithSpecificReasonForCancel) -> CompositionOfOneContextualOperation { + let composedOp = CompositionOfOneContextualOperation(op1: op1, contextCreator: ObvStack.shared, queueForComposedOperations: queueForComposedOperations, log: Self.log, flowId: FlowIdentifier()) + composedOp.completionBlock = { [weak composedOp] in + assert(composedOp != nil) + composedOp?.logReasonIfCancelled(log: Self.log) + } + return composedOp + } + + + private func createCompositionOfTwoContextualOperation(op1: ContextualOperationWithSpecificReasonForCancel, op2: ContextualOperationWithSpecificReasonForCancel) -> CompositionOfTwoContextualOperations { + let composedOp = CompositionOfTwoContextualOperations(op1: op1, op2: op2, contextCreator: ObvStack.shared, queueForComposedOperations: queueForComposedOperations, log: Self.log, flowId: FlowIdentifier()) + composedOp.completionBlock = { [weak composedOp] in + assert(composedOp != nil) + composedOp?.logReasonIfCancelled(log: Self.log) + } + return composedOp + } + + + private func createCompositionOfFourContextualOperation(op1: ContextualOperationWithSpecificReasonForCancel, op2: ContextualOperationWithSpecificReasonForCancel, op3: ContextualOperationWithSpecificReasonForCancel, op4: ContextualOperationWithSpecificReasonForCancel) -> CompositionOfFourContextualOperations { + let composedOp = CompositionOfFourContextualOperations(op1: op1, op2: op2, op3: op3, op4: op4, contextCreator: ObvStack.shared, queueForComposedOperations: queueForComposedOperations, log: Self.log, flowId: FlowIdentifier()) + composedOp.completionBlock = { [weak composedOp] in + assert(composedOp != nil) + composedOp?.logReasonIfCancelled(log: Self.log) + } + return composedOp + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppSyncSnapshotableCoordinator/Operations/UpdateAppDatabaseWithAppSyncSnapshotNodeOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppSyncSnapshotableCoordinator/Operations/UpdateAppDatabaseWithAppSyncSnapshotNodeOperation.swift new file mode 100644 index 00000000..6b54d595 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/AppSyncSnapshotableCoordinator/Operations/UpdateAppDatabaseWithAppSyncSnapshotNodeOperation.swift @@ -0,0 +1,52 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvEngine +import os.log +import CoreData +import ObvTypes +import ObvUICoreData + + +final class UpdateAppDatabaseWithAppSyncSnapshotNodeOperation: ContextualOperationWithSpecificReasonForCancel { + + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SyncPersistedObvContactDevicesWithEngineOperation.self)) + + let appSyncSnapshotNode: AppSyncSnapshotNode + + init(appSyncSnapshotNode: AppSyncSnapshotNode) { + self.appSyncSnapshotNode = appSyncSnapshotNode + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + try appSyncSnapshotNode.useToUpdateAppDatabase(within: obvContext.context) + + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/BoostrapCoordinator.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/BoostrapCoordinator.swift index 89087ac7..2bb8967c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/BoostrapCoordinator.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/BoostrapCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,6 +25,7 @@ import LinkPresentation import OlvidUtils import ObvEngine import ObvUICoreData +import ObvSettings final class BootstrapCoordinator: ObvErrorMaker { @@ -34,6 +35,7 @@ final class BootstrapCoordinator: ObvErrorMaker { private var observationTokens = [NSObjectProtocol]() private let coordinatorsQueue: OperationQueue private let queueForComposedOperations: OperationQueue + weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? static let errorDomain = "BootstrapCoordinator" @@ -65,7 +67,7 @@ final class BootstrapCoordinator: ObvErrorMaker { resetOwnObvCapabilities() autoAcceptPendingGroupInvitesIfPossible() if forTheFirstTime { - processRequestSyncAppDatabasesWithEngine(completion: { _ in }) + processRequestSyncAppDatabasesWithEngine(queuePriority: .veryLow, completion: { _ in }) deleteOrphanedPersistedAttachmentSentRecipientInfosOperation() } } @@ -76,11 +78,11 @@ final class BootstrapCoordinator: ObvErrorMaker { // Internal Notifications observationTokens.append(contentsOf: [ - ObvMessengerCoreDataNotification.observePersistedContactWasInserted { [weak self] contactPermanentID in + ObvMessengerCoreDataNotification.observePersistedContactWasInserted { [weak self] contactPermanentID, _, _ in self?.processPersistedContactWasInsertedNotification(contactPermanentID: contactPermanentID) }, - ObvMessengerInternalNotification.observeRequestSyncAppDatabasesWithEngine { [weak self] completion in - self?.processRequestSyncAppDatabasesWithEngine(completion: completion) + ObvMessengerInternalNotification.observeRequestSyncAppDatabasesWithEngine { [weak self] (queuePriority, completion) in + self?.processRequestSyncAppDatabasesWithEngine(queuePriority: queuePriority, completion: completion) }, ]) @@ -138,8 +140,9 @@ extension BootstrapCoordinator { private func resyncPersistedInvitationsWithEngine() { Task(priority: .utility) { do { + guard let syncAtomRequestDelegate else { assertionFailure(); return } let obvDialogsFromEngine = try await obvEngine.getAllDialogsWithinEngine() - let op1 = SyncPersistedInvitationsWithEngineOperation(obvDialogsFromEngine: obvDialogsFromEngine, obvEngine: obvEngine) + let op1 = SyncPersistedInvitationsWithEngineOperation(obvDialogsFromEngine: obvDialogsFromEngine, obvEngine: obvEngine, syncAtomRequestDelegate: syncAtomRequestDelegate) let composedOp = createCompositionOfOneContextualOperation(op1: op1) composedOp.queuePriority = .veryLow coordinatorsQueue.addOperation(composedOp) @@ -158,28 +161,75 @@ extension BootstrapCoordinator { } - private func processRequestSyncAppDatabasesWithEngine(completion: @escaping (Result) -> Void) { + private func processRequestSyncAppDatabasesWithEngine(queuePriority: Operation.QueuePriority, completion: @escaping (Result) -> Void) { assert(!Thread.isMainThread) - let op1 = SyncPersistedObvOwnedIdentitiesWithEngineOperation(obvEngine: obvEngine) - let op2 = SyncPersistedObvContactIdentitiesWithEngineOperation(obvEngine: obvEngine) - let op3 = SyncPersistedContactGroupsWithEngineOperation(obvEngine: obvEngine) - let op4 = SyncPersistedContactGroupsV2WithEngineOperation(obvEngine: obvEngine) - let composedOp = createCompositionOfFourContextualOperation(op1: op1, op2: op2, op3: op3, op4: op4) - composedOp.queuePriority = .veryLow + + var operationsToQueue = [Operation]() + + do { + let op1 = SyncPersistedObvOwnedIdentitiesWithEngineOperation(obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + composedOp.queuePriority = queuePriority + composedOp.logExecutionDuration(log: Self.log) + operationsToQueue.append(composedOp) + } + + do { + let op1 = SyncPersistedObvOwnedDevicesWithEngineOperation(obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + composedOp.queuePriority = queuePriority + composedOp.logExecutionDuration(log: Self.log) + operationsToQueue.append(composedOp) + } + + do { + let op1 = SyncPersistedObvContactIdentitiesWithEngineOperation(obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + composedOp.queuePriority = queuePriority + composedOp.logExecutionDuration(log: Self.log) + operationsToQueue.append(composedOp) + } + + do { + let op1 = SyncPersistedObvContactDevicesWithEngineOperation(obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + composedOp.queuePriority = queuePriority + composedOp.logExecutionDuration(log: Self.log) + operationsToQueue.append(composedOp) + } + + do { + let op1 = SyncPersistedContactGroupsWithEngineOperation(obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + composedOp.queuePriority = queuePriority + composedOp.logExecutionDuration(log: Self.log) + operationsToQueue.append(composedOp) + } + + do { + let op1 = SyncPersistedContactGroupsV2WithEngineOperation(obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + composedOp.queuePriority = queuePriority + composedOp.logExecutionDuration(log: Self.log) + operationsToQueue.append(composedOp) + } let blockOp = BlockOperation() blockOp.completionBlock = { - if composedOp.isCancelled { - let reasonForCancel = composedOp.reasonForCancel ?? Self.makeError(message: "Request sync of app database with engine did fail without specifying a proper reason. This is a bug") + guard operationsToQueue.allSatisfy({ $0.isFinished && !$0.isCancelled }) else { + let reasonForCancel = Self.makeError(message: "One of the sync methods failed") assertionFailure() completion(.failure(reasonForCancel)) - } else { - completion(.success(())) + return } + completion(.success(())) } + operationsToQueue.append(blockOp) - blockOp.addDependency(composedOp) - coordinatorsQueue.addOperations([composedOp, blockOp], waitUntilFinished: false) + operationsToQueue.makeEachOperationDependentOnThePreceedingOne() + + coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/AutoAcceptPendingGroupInvitesIfPossibleOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/AutoAcceptPendingGroupInvitesIfPossibleOperation.swift index 2b20dd98..a37de205 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/AutoAcceptPendingGroupInvitesIfPossibleOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/AutoAcceptPendingGroupInvitesIfPossibleOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,8 @@ import OlvidUtils import ObvEngine import os.log import ObvUICoreData +import CoreData +import ObvSettings final class AutoAcceptPendingGroupInvitesIfPossibleOperation: ContextualOperationWithSpecificReasonForCancel { @@ -34,78 +36,82 @@ final class AutoAcceptPendingGroupInvitesIfPossibleOperation: ContextualOperatio super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { // If the app settings is sich that we should never auto-accept group invitations, we are done. guard ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom != .noOne else { return } - obvContext.performAndWait { - - do { - - let allGroupInvites = try PersistedInvitation.getAllGroupInvitesForAllOwnedIdentities(within: obvContext.context) - - for groupInvite in allGroupInvites { - - guard let ownedIdentity = groupInvite.ownedIdentity else { continue } - guard let obvDialog = groupInvite.obvDialog else { assertionFailure(); continue } - - switch obvDialog.category { - - case .acceptGroupInvite(groupMembers: _, groupOwner: let groupOwner): - - switch ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom { - case .noOne: - continue - case .oneToOneContactsOnly: - let groupOwner = try PersistedObvContactIdentity.get(cryptoId: groupOwner.cryptoId, ownedIdentity: ownedIdentity, whereOneToOneStatusIs: .oneToOne) - let groupOwnerIsAOneToOneContact = (groupOwner != nil) - if groupOwnerIsAOneToOneContact { - var localDialog = obvDialog - try localDialog.setResponseToAcceptGroupInvite(acceptInvite: true) - obvEngine.respondTo(localDialog) - } - case .everyone: + do { + + let allGroupInvites = try PersistedInvitation.getAllGroupInvitesForAllOwnedIdentities(within: obvContext.context) + + for groupInvite in allGroupInvites { + + guard let ownedIdentity = groupInvite.ownedIdentity else { continue } + guard let obvDialog = groupInvite.obvDialog else { assertionFailure(); continue } + + switch obvDialog.category { + + case .acceptGroupInvite(groupMembers: _, groupOwner: let groupOwner): + + switch ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom { + case .noOne: + continue + case .oneToOneContactsOnly: + let groupOwner = try PersistedObvContactIdentity.get(cryptoId: groupOwner.cryptoId, ownedIdentity: ownedIdentity, whereOneToOneStatusIs: .oneToOne) + let groupOwnerIsAOneToOneContact = (groupOwner != nil) + if groupOwnerIsAOneToOneContact { var localDialog = obvDialog try localDialog.setResponseToAcceptGroupInvite(acceptInvite: true) - obvEngine.respondTo(localDialog) - } - - case .acceptGroupV2Invite(inviter: let inviter, group: _): - - switch ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom { - case .noOne: - continue - case .oneToOneContactsOnly: - let inviterContact = try PersistedObvContactIdentity.get(cryptoId: inviter, ownedIdentity: ownedIdentity, whereOneToOneStatusIs: .oneToOne) - let groupOwnerIsAOneToOneContact = (inviterContact != nil) - if groupOwnerIsAOneToOneContact { - var localDialog = obvDialog - try localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: true) - obvEngine.respondTo(localDialog) + let dialogForEngine = localDialog + Task { + try? await obvEngine.respondTo(dialogForEngine) } - case .everyone: + } + case .everyone: + var localDialog = obvDialog + try localDialog.setResponseToAcceptGroupInvite(acceptInvite: true) + let dialogForEngine = localDialog + Task { + try? await obvEngine.respondTo(dialogForEngine) + } + } + + case .acceptGroupV2Invite(inviter: let inviter, group: _): + + switch ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom { + case .noOne: + continue + case .oneToOneContactsOnly: + let inviterContact = try PersistedObvContactIdentity.get(cryptoId: inviter, ownedIdentity: ownedIdentity, whereOneToOneStatusIs: .oneToOne) + let groupOwnerIsAOneToOneContact = (inviterContact != nil) + if groupOwnerIsAOneToOneContact { var localDialog = obvDialog try localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: true) - obvEngine.respondTo(localDialog) + let dialogForEngine = localDialog + Task { + try? await obvEngine.respondTo(dialogForEngine) + } + } + case .everyone: + var localDialog = obvDialog + try localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: true) + let dialogForEngine = localDialog + Task { + try? await obvEngine.respondTo(dialogForEngine) } - - default: - - assertionFailure("There is a bug with the getAllGroupInvites query") - continue - } + + default: + + assertionFailure("There is a bug with the getAllGroupInvites query") + continue + } - - } catch { - return cancel(withReason: .coreDataError(error: error)) } + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeleteOldPendingRepliedToOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeleteOldPendingRepliedToOperation.swift index 81d161fc..ee2bbed8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeleteOldPendingRepliedToOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeleteOldPendingRepliedToOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,22 +22,18 @@ import Foundation import OlvidUtils import os.log import ObvUICoreData +import CoreData final class DeleteOldPendingRepliedToOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - try PersistedMessageReceived.batchDeletePendingRepliedToEntriesOlderThan(Date(timeIntervalSinceNow: -TimeInterval(months: 1)), within: obvContext.context) - } catch let error { - return cancel(withReason: .coreDataError(error: error)) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + try PersistedMessageReceived.batchDeletePendingRepliedToEntriesOlderThan(Date(timeIntervalSinceNow: -TimeInterval(months: 1)), within: obvContext.context) + } catch let error { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeleteOrphanedPersistedAttachmentSentRecipientInfosOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeleteOrphanedPersistedAttachmentSentRecipientInfosOperation.swift index 39478b3f..b9f478cc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeleteOrphanedPersistedAttachmentSentRecipientInfosOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeleteOrphanedPersistedAttachmentSentRecipientInfosOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,22 +22,18 @@ import Foundation import OlvidUtils import os.log import ObvUICoreData +import CoreData final class DeleteOrphanedPersistedAttachmentSentRecipientInfosOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - try PersistedAttachmentSentRecipientInfos.deleteOrphaned(within: obvContext) - } catch let error { - return cancel(withReason: .coreDataError(error: error)) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + try PersistedAttachmentSentRecipientInfos.deleteOrphaned(within: obvContext) + } catch let error { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeletePersistedInvitationTheCannotBeParsedAnymoreOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeletePersistedInvitationTheCannotBeParsedAnymoreOperation.swift index 24474b09..51889596 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeletePersistedInvitationTheCannotBeParsedAnymoreOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/DeletePersistedInvitationTheCannotBeParsedAnymoreOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,6 +21,7 @@ import Foundation import OlvidUtils import ObvUICoreData +import CoreData /// This operation is used during bootstrap to delete any `PersistedInvitation` that cannot be properly parsed, i.e., that returns a `nil` ObvDialog. @@ -28,26 +29,18 @@ import ObvUICoreData /// the corresponding obsolete `PersistedInvitation` instances. final class DeletePersistedInvitationTheCannotBeParsedAnymoreOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - let allInvitations = try PersistedInvitation.getAllForAllOwnedIdentities(within: obvContext.context) - let invitationsToDelete = allInvitations.filter { $0.obvDialog == nil } - guard !invitationsToDelete.isEmpty else { return } - try invitationsToDelete.forEach { - try $0.delete() - } - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + do { + let allInvitations = try PersistedInvitation.getAllForAllOwnedIdentities(within: obvContext.context) + let invitationsToDelete = allInvitations.filter { $0.obvDialog == nil } + guard !invitationsToDelete.isEmpty else { return } + try invitationsToDelete.forEach { + try $0.delete() } - + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SendUnsentDraftsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SendUnsentDraftsOperation.swift index 69e9d192..6a59921e 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SendUnsentDraftsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SendUnsentDraftsOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,29 +21,22 @@ import Foundation import OlvidUtils import ObvUICoreData +import CoreData final class SendUnsentDraftsOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - - let unsentDrafts = try PersistedDraft.getAllUnsent(within: obvContext.context) - unsentDrafts.forEach { $0.forceResend() } - - - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) - } + do { + + let unsentDrafts = try PersistedDraft.getAllUnsent(within: obvContext.context) + unsentDrafts.forEach { $0.forceResend() } + + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedContactGroupsV2WithEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedContactGroupsV2WithEngineOperation.swift index 7dbc8d70..fdb53c61 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedContactGroupsV2WithEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedContactGroupsV2WithEngineOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,7 @@ import ObvEngine import os.log import ObvTypes import ObvUICoreData +import CoreData final class SyncPersistedContactGroupsV2WithEngineOperation: ContextualOperationWithSpecificReasonForCancel { @@ -36,87 +37,78 @@ final class SyncPersistedContactGroupsV2WithEngineOperation: ContextualOperation super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { os_log("Syncing Persisted Contact Groups V2 with Engine Contact Groups V2", log: log, type: .info) - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { + + // Delete orphaned `PersistedGroupV2Member` entities + + try PersistedGroupV2Member.deleteOrphanedPersistedGroupV2Members(within: obvContext.context) + + // Loop over all owned identities + + let ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) - do { + try ownedIdentities.forEach { ownedIdentity in - // Delete orphaned `PersistedGroupV2Member` entities + let groups: Set + do { + groups = try obvEngine.getAllObvGroupV2OfOwnedIdentity(with: ownedIdentity.cryptoId) + } catch { + assertionFailure() + os_log("Could not get all group v2 from engine for an owned identity: %{public}@", log: log, type: .fault, error.localizedDescription) + return + } - try PersistedGroupV2Member.deleteOrphanedPersistedGroupV2Members(within: obvContext.context) + // Create or update the PersistedGroupV2 instances - // Loop over all owned identities + groups.forEach { obvGroupV2 in + do { + _ = try ownedIdentity.createOrUpdateGroupV2(obvGroupV2: obvGroupV2, createdByMe: false) + } catch { + os_log("Could not create or update a PersistedGroupV2: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + // Continue anyway + } + } - let ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + // Remove any PersistedGroupV2 that does not exist within the engine - try ownedIdentities.forEach { ownedIdentity in - - let groups: Set + let persistedGroups = try PersistedGroupV2.getAllPersistedGroupV2(ownedIdentity: ownedIdentity) + let appGroupIdentifierToKeep = Set(groups.map({ $0.appGroupIdentifier })) + for persistedGroup in persistedGroups { + if appGroupIdentifierToKeep.contains(persistedGroup.groupIdentifier) { continue } do { - groups = try obvEngine.getAllObvGroupV2OfOwnedIdentity(with: ownedIdentity.cryptoId) + try persistedGroup.delete() } catch { assertionFailure() - os_log("Could not get all group v2 from engine for an owned identity: %{public}@", log: log, type: .fault, error.localizedDescription) - return - } - - // Create or update the PersistedGroupV2 instances - - groups.forEach { obvGroupV2 in - do { - _ = try PersistedGroupV2.createOrUpdate(obvGroupV2: obvGroupV2, - createdByMe: false, - within: obvContext.context) - } catch { - os_log("Could not create or update a PersistedGroupV2: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - // Continue anyway - } + os_log("Could not delete one of the PersistedGroupV2 present within the app but not within the engine: %{public}@", log: log, type: .fault, error.localizedDescription) + continue } - - // Remove any PersistedGroupV2 that does not exist within the engine - - let persistedGroups = try PersistedGroupV2.getAllPersistedGroupV2(ownedIdentity: ownedIdentity) - let appGroupIdentifierToKeep = Set(groups.map({ $0.appGroupIdentifier })) - for persistedGroup in persistedGroups { - if appGroupIdentifierToKeep.contains(persistedGroup.groupIdentifier) { continue } - do { - try persistedGroup.delete() - } catch { - assertionFailure() - os_log("Could not delete one of the PersistedGroupV2 present within the app but not within the engine: %{public}@", log: log, type: .fault, error.localizedDescription) - continue - } - } - - // Make sure that all remaining persisted contact groups do have an associated display contact group. - // For those that have one, make sure it is in sync. - - for group in persistedGroups { - guard !group.isDeleted else { continue } - do { - try group.createOrUpdateTheAssociatedDisplayedContactGroup() - } catch { - os_log("Could not create or update the underlying displayed contact group of a persisted contact group: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() // In production, continue anyway - } - } - - } // End ownedIdentities.forEach + } - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) - } + // Make sure that all remaining persisted contact groups do have an associated display contact group. + // For those that have one, make sure it is in sync. - } // End obvContext.performAndWait + for group in persistedGroups { + guard !group.isDeleted else { continue } + do { + try group.createOrUpdateTheAssociatedDisplayedContactGroup() + } catch { + os_log("Could not create or update the underlying displayed contact group of a persisted contact group: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() // In production, continue anyway + } + } + + } // End ownedIdentities.forEach + + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedContactGroupsWithEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedContactGroupsWithEngineOperation.swift index 8fc89b36..35e4bdb7 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedContactGroupsWithEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedContactGroupsWithEngineOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import OlvidUtils import ObvEngine import os.log import ObvUICoreData +import CoreData @@ -36,135 +37,140 @@ final class SyncPersistedContactGroupsWithEngineOperation: ContextualOperationWi super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { os_log("Syncing Persisted Contact Groups with Engine Contact Groups", log: log, type: .info) - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) + let ownedIdentities: [PersistedObvOwnedIdentity] + do { + ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - obvContext.performAndWait { + ownedIdentities.forEach { ownedIdentity in - let ownedIdentities: [PersistedObvOwnedIdentity] + let obvContactGroups: Set do { - ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + obvContactGroups = try obvEngine.getAllContactGroupsForOwnedIdentity(with: ownedIdentity.cryptoId) } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + os_log("Could not get all group identifiers from engine: %{public}@", log: log, type: .fault, error.localizedDescription) + return } - ownedIdentities.forEach { ownedIdentity in - - let obvContactGroups: Set + // Split the set of obvContactGroups into missing and existing contact groups + + var missingObvContactGroups: Set // Groups that exist within the engine, but not within the app + var existingObvContactGroups: Set // Groups that exist both within the engine and within the app + do { + missingObvContactGroups = try obvContactGroups.filter({ + let groupIdentifier = $0.groupIdentifier + return (try PersistedContactGroup.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: ownedIdentity)) == nil + }) + existingObvContactGroups = obvContactGroups.subtracting(missingObvContactGroups) + } catch { + os_log("Could not construct a list of missing obv contact groups", log: log, type: .fault) + return + } + + os_log("Number of contact groups existing within the engine but missing within the app: %{public}d", log: log, type: .info, missingObvContactGroups.count) + os_log("Number of contact groups existing within the engine and present within the app: %{public}d", log: log, type: .info, existingObvContactGroups.count) + + // Create a persisted contact group for each missing obv contact group. + // Each time a contact group is created within the app, add this group to the list of existing contact group within the app + + while let obvContactGroup = missingObvContactGroups.popFirst() { + switch obvContactGroup.groupType { + case .joined: + guard (try? PersistedContactGroupJoined(contactGroup: obvContactGroup, within: obvContext.context)) != nil else { + os_log("Could not create a missing persisted contact group joined", log: log, type: .error) + continue + } + case .owned: + guard (try? PersistedContactGroupOwned(contactGroup: obvContactGroup, within: obvContext.context)) != nil else { + os_log("Could not create a missing persisted contact group owned", log: log, type: .error) + continue + } + } + // If we reach this line, a new contact group was created within the app. We can add it to the list of existingObvContactGroups. + existingObvContactGroups.insert(obvContactGroup) + } + + // Sync each existing persisted contact group with its engine's counterpart + + for obvContactGroup in existingObvContactGroups { + let groupIdentifier = obvContactGroup.groupIdentifier + guard let persistedContactGroup = try? PersistedContactGroup.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: ownedIdentity) else { continue } do { - obvContactGroups = try obvEngine.getAllContactGroupsForOwnedIdentity(with: ownedIdentity.cryptoId) - } catch { - os_log("Could not get all group identifiers from engine: %{public}@", log: log, type: .fault, error.localizedDescription) - return + try persistedContactGroup.setContactIdentities(to: obvContactGroup.groupMembers) + } catch let error { + os_log("Could not set the contacts of a contact group while bootstrapping: %{public}@", log: log, type: .fault, error.localizedDescription) } - - // Split the set of obvContactGroups into missing and existing contact groups - - var missingObvContactGroups: Set // Groups that exist within the engine, but not within the app - var existingObvContactGroups: Set // Groups that exist both within the engine and within the app do { - missingObvContactGroups = try obvContactGroups.filter({ - let groupId = ($0.groupUid, $0.groupOwner.cryptoId) - return (try PersistedContactGroup.getContactGroup(groupId: groupId, ownedIdentity: ownedIdentity)) == nil - }) - existingObvContactGroups = obvContactGroups.subtracting(missingObvContactGroups) + try persistedContactGroup.setPendingMembers(to: obvContactGroup.pendingGroupMembers) } catch { - os_log("Could not construct a list of missing obv contact groups", log: log, type: .fault) - return + return cancel(withReason: .coreDataError(error: error)) } - - os_log("Number of contact groups existing within the engine but missing within the app: %{public}d", log: log, type: .info, missingObvContactGroups.count) - os_log("Number of contact groups existing within the engine and present within the app: %{public}d", log: log, type: .info, existingObvContactGroups.count) - - // Create a persisted contact group for each missing obv contact group. - // Each time a contact group is created within the app, add this group to the list of existing contact group within the app - - while let obvContactGroup = missingObvContactGroups.popFirst() { - switch obvContactGroup.groupType { - case .joined: - guard (try? PersistedContactGroupJoined(contactGroup: obvContactGroup, within: obvContext.context)) != nil else { - os_log("Could not create a missing persisted contact group joined", log: log, type: .error) - continue - } - case .owned: - guard (try? PersistedContactGroupOwned(contactGroup: obvContactGroup, within: obvContext.context)) != nil else { - os_log("Could not create a missing persisted contact group owned", log: log, type: .error) - continue + persistedContactGroup.updatePhoto(with: obvContactGroup.trustedOrLatestPhotoURL) + if let groupJoined = persistedContactGroup as? PersistedContactGroupJoined { + if obvContactGroup.publishedDetailsAndTrustedOrLatestDetailsAreEquivalentForTheUser() { + groupJoined.setStatus(to: .noNewPublishedDetails) + } else { + switch groupJoined.status { + case .noNewPublishedDetails: + groupJoined.setStatus(to: .unseenPublishedDetails) + case .unseenPublishedDetails, .seenPublishedDetails: + break // Don't change the status } } - // If we reach this line, a new contact group was created within the app. We can add it to the list of existingObvContactGroups. - existingObvContactGroups.insert(obvContactGroup) } - - // Sync each existing persisted contact group with its engine's counterpart - - for obvContactGroup in existingObvContactGroups { - let groupId = (obvContactGroup.groupUid, obvContactGroup.groupOwner.cryptoId) - guard let persistedContactGroup = try? PersistedContactGroup.getContactGroup(groupId: groupId, ownedIdentity: ownedIdentity) else { continue } + } + + // Remove any persisted contact group that does not exist within the engine + + if let persistedGroups = try? PersistedContactGroup.getAllContactGroups(ownedIdentity: ownedIdentity, within: obvContext.context) { + let uidsOfGroupsToKeep = existingObvContactGroups.map { $0.groupUid } + let persistedGroupsToDelete = persistedGroups.filter { !uidsOfGroupsToKeep.contains($0.groupUid) } + os_log("Number of contact groups existing within the app that must be deleted: %{public}d", log: log, type: .info, persistedGroupsToDelete.count) + for group in persistedGroupsToDelete { + + let persistedGroupDiscussion = group.discussion + do { - try persistedContactGroup.setContactIdentities(to: obvContactGroup.groupMembers) - } catch let error { - os_log("Could not set the contacts of a contact group while bootstrapping: %{public}@", log: log, type: .fault, error.localizedDescription) + try persistedGroupDiscussion.setStatus(to: .locked) + } catch { + os_log("Could not lock the persisted group discussion", log: log, type: .error) + return } + do { - try persistedContactGroup.setPendingMembers(to: obvContactGroup.pendingGroupMembers) + try group.delete() } catch { - return cancel(withReason: .coreDataError(error: error)) - } - persistedContactGroup.updatePhoto(with: obvContactGroup.trustedOrLatestPhotoURL) - } - - // Remove any persisted contact group that does not exist within the engine - - if let persistedGroups = try? PersistedContactGroup.getAllContactGroups(ownedIdentity: ownedIdentity, within: obvContext.context) { - let uidsOfGroupsToKeep = existingObvContactGroups.map { $0.groupUid } - let persistedGroupsToDelete = persistedGroups.filter { !uidsOfGroupsToKeep.contains($0.groupUid) } - os_log("Number of contact groups existing within the app that must be deleted: %{public}d", log: log, type: .info, persistedGroupsToDelete.count) - for group in persistedGroupsToDelete { - - let persistedGroupDiscussion = group.discussion - - do { - try persistedGroupDiscussion.setStatus(to: .locked) - } catch { - os_log("Could not lock the persisted group discussion", log: log, type: .error) - return - } - - do { - try group.delete() - } catch { - os_log("Could not delete one of the group present within the app but not within the engine: %{public}@", log: log, type: .fault, error.localizedDescription) - continue - } - + os_log("Could not delete one of the group present within the app but not within the engine: %{public}@", log: log, type: .fault, error.localizedDescription) + continue } + } - - // Make sure that all remaining persisted contact groups do have an associated display contact group. - // For those that have one, make sure it is in sync. - - if let persistedGroups = try? PersistedContactGroup.getAllContactGroups(ownedIdentity: ownedIdentity, within: obvContext.context) { - for group in persistedGroups { - guard !group.isDeleted else { continue } - do { - try group.createOrUpdateTheAssociatedDisplayedContactGroup() - } catch { - os_log("Could not create or update the underlying displayed contact group of a persisted contact group: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() // In production, continue anyway - } + } + + // Make sure that all remaining persisted contact groups do have an associated display contact group. + // For those that have one, make sure it is in sync. + + if let persistedGroups = try? PersistedContactGroup.getAllContactGroups(ownedIdentity: ownedIdentity, within: obvContext.context) { + for group in persistedGroups { + guard !group.isDeleted else { continue } + do { + try group.createOrUpdateTheAssociatedDisplayedContactGroup() + } catch { + os_log("Could not create or update the underlying displayed contact group of a persisted contact group: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() // In production, continue anyway } } - - } // End ownedIdentities.forEach + } - } // End obvContext.performAndWait + } // End ownedIdentities.forEach + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedInvitationsWithEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedInvitationsWithEngineOperation.swift index 377ae637..8ce8fafb 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedInvitationsWithEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedInvitationsWithEngineOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,7 @@ import ObvEngine import os.log import ObvTypes import ObvUICoreData +import CoreData final class SyncPersistedInvitationsWithEngineOperation: ContextualOperationWithSpecificReasonForCancel { @@ -31,26 +32,17 @@ final class SyncPersistedInvitationsWithEngineOperation: ContextualOperationWith let obvDialogsFromEngine: [ObvDialog] let obvEngine: ObvEngine private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SyncPersistedInvitationsWithEngineOperation.self)) + private let syncAtomRequestDelegate: ObvSyncAtomRequestDelegate - // If this operation finishes, this variable stores the engine's dialog that should be processed - private(set) var obvDialogsFromEngineToProcess = [ObvDialog]() - - init(obvDialogsFromEngine: [ObvDialog], obvEngine: ObvEngine) { + init(obvDialogsFromEngine: [ObvDialog], obvEngine: ObvEngine, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate) { self.obvDialogsFromEngine = obvDialogsFromEngine self.obvEngine = obvEngine + self.syncAtomRequestDelegate = syncAtomRequestDelegate super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - guard let viewContext = self.viewContext else { - return cancel(withReason: .contextIsNil) - } - let uuidsWithinEngineForOwnedCryptoId: [ObvCryptoId: Set] = obvDialogsFromEngine.reduce(into: [ObvCryptoId: Set]()) { dict, obvDialog in if var existingSet = dict[obvDialog.ownedCryptoId] { existingSet.insert(obvDialog.uuid) @@ -59,22 +51,26 @@ final class SyncPersistedInvitationsWithEngineOperation: ContextualOperationWith dict[obvDialog.ownedCryptoId] = Set([obvDialog.uuid]) } } - - obvContext.performAndWait { + + do { + + // Get the owned identities within the app - for (ownedCryptoId, uuidsWithinEngine) in uuidsWithinEngineForOwnedCryptoId { + let ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + let ownedCryptoIdsWithApp = ownedIdentities.map({ $0.cryptoId }) - // Get the persisted invitations within the app + for ownedCryptoIdWithApp in ownedCryptoIdsWithApp { - let invitations: [PersistedInvitation] - do { - invitations = try PersistedInvitation.getAll(ownedCryptoId: ownedCryptoId, within: obvContext.context) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + // Get the persisted invitations for this owned identity within the app within the app - // Determine the invitations to create, delete, or update + let invitations = try PersistedInvitation.getAll(ownedCryptoId: ownedCryptoIdWithApp, within: obvContext.context) + + // Determine the invitations for this owned identity within the engine + + let uuidsWithinEngine = uuidsWithinEngineForOwnedCryptoId[ownedCryptoIdWithApp] ?? Set() + // Determine the invitations to create, delete, or update + let uuidsWithinApp = Set(invitations.map { $0.uuid }) let missingUuids = uuidsWithinEngine.subtracting(uuidsWithinApp) let uuidsToDelete = uuidsWithinApp.subtracting(uuidsWithinEngine) @@ -85,7 +81,11 @@ final class SyncPersistedInvitationsWithEngineOperation: ContextualOperationWith do { let dialogsToProcess = obvDialogsFromEngine.filter({ missingUuids.contains($0.uuid) }) - let ops = dialogsToProcess.map { ProcessObvDialogOperation(obvDialog: $0, obvEngine: obvEngine) } + let ops = dialogsToProcess.map { + ProcessObvDialogOperation(obvDialog: $0, + obvEngine: obvEngine, + syncAtomRequestDelegate: syncAtomRequestDelegate) + } ops.forEach { $0.obvContext = obvContext @@ -101,7 +101,11 @@ final class SyncPersistedInvitationsWithEngineOperation: ContextualOperationWith do { let dialogsToProcess = obvDialogsFromEngine.filter({ uuidsToUpdate.contains($0.uuid) }) - let ops = dialogsToProcess.map { ProcessObvDialogOperation(obvDialog: $0, obvEngine: obvEngine) } + let ops = dialogsToProcess.map { + ProcessObvDialogOperation(obvDialog: $0, + obvEngine: obvEngine, + syncAtomRequestDelegate: syncAtomRequestDelegate) + } ops.forEach { $0.obvContext = obvContext @@ -115,7 +119,7 @@ final class SyncPersistedInvitationsWithEngineOperation: ContextualOperationWith uuidsToDelete.forEach { uuid in do { - if let invitation = try PersistedInvitation.getPersistedInvitation(uuid: uuid, ownedCryptoId: ownedCryptoId, within: obvContext.context) { + if let invitation = try PersistedInvitation.getPersistedInvitation(uuid: uuid, ownedCryptoId: ownedCryptoIdWithApp, within: obvContext.context) { try invitation.delete() } } catch { @@ -124,11 +128,13 @@ final class SyncPersistedInvitationsWithEngineOperation: ContextualOperationWith // Continue anyway } } - + } + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvContactDevicesWithEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvContactDevicesWithEngineOperation.swift new file mode 100644 index 00000000..16321ea5 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvContactDevicesWithEngineOperation.swift @@ -0,0 +1,71 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvEngine +import os.log +import CoreData +import ObvTypes +import ObvUICoreData + + +final class SyncPersistedObvContactDevicesWithEngineOperation: ContextualOperationWithSpecificReasonForCancel { + + private let obvEngine: ObvEngine + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SyncPersistedObvContactDevicesWithEngineOperation.self)) + + init(obvEngine: ObvEngine) { + self.obvEngine = obvEngine + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + os_log("Syncing Persisted Contacts Devices with Engine Devices", log: log, type: .info) + + do { + + let ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + + ownedIdentities.forEach { ownedIdentity in + + for contact in ownedIdentity.contacts { + + guard let contactIdentifier = (try? contact.obvContactIdentifier) else { assertionFailure(); continue } + guard let devicesFromEngine = try? obvEngine.getAllObvContactDevicesOfContact(with: contactIdentifier) else { assertionFailure(); continue } + + do { + try contact.synchronizeDevices(with: devicesFromEngine) + } catch { + assertionFailure(error.localizedDescription) + // Continue anyway + } + + } + + } + + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvContactIdentitiesWithEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvContactIdentitiesWithEngineOperation.swift index 11ecc092..9db5058e 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvContactIdentitiesWithEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvContactIdentitiesWithEngineOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -36,139 +36,159 @@ final class SyncPersistedObvContactIdentitiesWithEngineOperation: ContextualOper super.init() } - override func main() { - + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + os_log("Syncing Persisted Contacts with Engine Contacts", log: log, type: .info) - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) + let ownedIdentities: [PersistedObvOwnedIdentity] + do { + ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - obvContext.performAndWait { + ownedIdentities.forEach { ownedIdentity in - let ownedIdentities: [PersistedObvOwnedIdentity] + let obvContactIdentities: Set do { - ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + obvContactIdentities = try obvEngine.getContactsOfOwnedIdentity(with: ownedIdentity.cryptoId) } catch { + os_log("Could not get contacts of owned identity from engine", log: log, type: .fault) assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + return } - ownedIdentities.forEach { ownedIdentity in - - let obvContactIdentities: Set + // Split the set of obvContactIdentities into missing and existing contacts + var missingContacts: Set // Contacts that exist within the engine, but not within the app + var existingContacts: Set // Contacts that exist both within the engine and within the app + do { + missingContacts = try obvContactIdentities.filter({ + return (try PersistedObvContactIdentity.get(persisted: $0.contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context)) == nil + }) + existingContacts = obvContactIdentities.subtracting(missingContacts) + } catch let error { + os_log("Could not construct a list of missing obv contacts: %{public}@", log: log, type: .fault, error.localizedDescription) + return + } + + os_log("Number of contacts existing within the engine but missing within the app: %{public}d", log: log, type: .info, missingContacts.count) + os_log("Number of contacts existing within the engine and present within the app: %{public}d", log: log, type: .info, existingContacts.count) + + // Create a persisted contact for each missing obv contact. + // Each time a contact is created within the app, add this contact to the list of existing contacts within the app + + while let obvContact = missingContacts.popFirst() { do { - obvContactIdentities = try obvEngine.getContactsOfOwnedIdentity(with: ownedIdentity.cryptoId) + let newContact = try PersistedObvContactIdentity.createPersistedObvContactIdentity(contactIdentity: obvContact, within: obvContext.context) + requestSendingOneToOneDiscussionSharedConfiguration(with: newContact, within: obvContext) } catch { - os_log("Could not get contacts of owned identity from engine", log: log, type: .fault) - assertionFailure() - return + os_log("Could not create a missing persisted contact: %{public}@", log: log, type: .fault, error.localizedDescription) + continue } - - // Split the set of obvContactIdentities into missing and existing contacts - var missingContacts: Set // Contacts that exist within the engine, but not within the app - var existingContacts: Set // Contacts that exist both within the engine and within the app - do { - missingContacts = try obvContactIdentities.filter({ - return (try PersistedObvContactIdentity.get(persisted: $0, whereOneToOneStatusIs: .any, within: obvContext.context)) == nil - }) - existingContacts = obvContactIdentities.subtracting(missingContacts) - } catch let error { - os_log("Could not construct a list of missing obv contacts: %{public}@", log: log, type: .fault, error.localizedDescription) - return + // If we reach this line, the insertion of the missing contact was successfull, we add it to the list of existing contacts + existingContacts.insert(obvContact) + } + + // Remove any persisted contact that does not exist within the engine + + do { + let persistedContacts = try PersistedObvContactIdentity.getAllContactOfOwnedIdentity(with: ownedIdentity.cryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) + let cryptoIdsToKeep = existingContacts.map { $0.cryptoId } + let persistedContactsToDelete = persistedContacts.filter { !cryptoIdsToKeep.contains($0.cryptoId) } + os_log("Number of contacts existing within the app that must be deleted: %{public}d", log: log, type: .info, persistedContactsToDelete.count) + for contact in persistedContactsToDelete { + do { + try contact.deleteAndLockOneToOneDiscussion() + } catch { + os_log("Could not delete a contact during bootstrap: %{public}@", log: log, type: .fault, error.localizedDescription) + } } - - os_log("Number of contacts existing within the engine but missing within the app: %{public}d", log: log, type: .info, missingContacts.count) - os_log("Number of contacts existing within the engine and present within the app: %{public}d", log: log, type: .info, existingContacts.count) - - // Create a persisted contact for each missing obv contact. - // Each time a contact is created within the app, add this contact to the list of existing contacts within the app - - while let obvContact = missingContacts.popFirst() { - guard (try? PersistedObvContactIdentity(contactIdentity: obvContact, within: obvContext.context)) != nil else { - os_log("Could not create a missing persisted contact", log: log, type: .error) + } catch let error { + os_log("Could not get a set of all contacts of the owned identity: %{public}@", log: log, type: .error, error.localizedDescription) + assertionFailure() + // We continue anyway + } + + // For each existing contact within the app, make sure the information is in sync with the information within the engine + + var objectIDsOfContactsToRefreshInViewContext = Set() + + do { + let persistedContacts = try PersistedObvContactIdentity.getAllContactOfOwnedIdentity(with: ownedIdentity.cryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) + for contact in persistedContacts { + guard let obvContact = existingContacts.first(where: { contact.cryptoId == $0.cryptoId }) else { + assertionFailure() continue } - // If we reach this line, the insertion of the missing contact was successfull, we add it to the list of existing contacts - existingContacts.insert(obvContact) - } - - // Remove any persisted contact that does not exist within the engine - - do { - let persistedContacts = try PersistedObvContactIdentity.getAllContactOfOwnedIdentity(with: ownedIdentity.cryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) - let cryptoIdsToKeep = existingContacts.map { $0.cryptoId } - let persistedContactsToDelete = persistedContacts.filter { !cryptoIdsToKeep.contains($0.cryptoId) } - os_log("Number of contacts existing within the app that must be deleted: %{public}d", log: log, type: .info, persistedContactsToDelete.count) - for contact in persistedContactsToDelete { - do { - try contact.deleteAndLockOneToOneDiscussion() - } catch { - os_log("Could not delete a contact during bootstrap: %{public}@", log: log, type: .fault, error.localizedDescription) - } + try contact.updateContact(with: obvContact) + if !contact.changedValues().isEmpty { + objectIDsOfContactsToRefreshInViewContext.insert(contact.typedObjectID.objectID) } - } catch let error { - os_log("Could not get a set of all contacts of the owned identity: %{public}@", log: log, type: .error, error.localizedDescription) - assertionFailure() - // We continue anyway } - - // For each existing contact within the app, make sure the information is in sync with the information within the engine - - var objectIDsOfContactsToRefreshInViewContext = Set() - - do { - let persistedContacts = try PersistedObvContactIdentity.getAllContactOfOwnedIdentity(with: ownedIdentity.cryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) - for contact in persistedContacts { - guard let obvContact = existingContacts.first(where: { contact.cryptoId == $0.cryptoId }) else { - assertionFailure() - continue - } - try contact.updateContact(with: obvContact) - if !contact.changedValues().isEmpty { - objectIDsOfContactsToRefreshInViewContext.insert(contact.typedObjectID.objectID) - } + } catch { + os_log("Could sync the existing persisted contacts with the information received from the engine: %{public}@", log: log, type: .error, error.localizedDescription) + assertionFailure() + // We continue anyway + } + + // For each existing contact within the app, make sure the capabilities are in sync with the information within the engine + + do { + let persistedContacts = try PersistedObvContactIdentity.getAllContactOfOwnedIdentity(with: ownedIdentity.cryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) + let contactCapabilities = try obvEngine.getCapabilitiesOfAllContactsOfOwnedIdentity(ownedIdentity.cryptoId) + for contact in persistedContacts { + guard let capabilities = contactCapabilities[contact.cryptoId] else { + // The contact capabilities are not known yet + continue } - } catch { - os_log("Could sync the existing persisted contacts with the information received from the engine: %{public}@", log: log, type: .error, error.localizedDescription) - assertionFailure() - // We continue anyway - } - - // For each existing contact within the app, make sure the capabilities are in sync with the information within the engine - - do { - let persistedContacts = try PersistedObvContactIdentity.getAllContactOfOwnedIdentity(with: ownedIdentity.cryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) - let contactCapabilities = try obvEngine.getCapabilitiesOfAllContactsOfOwnedIdentity(ownedIdentity.cryptoId) - for contact in persistedContacts { - let capabilities = contactCapabilities[contact.cryptoId] ?? Set() - contact.setContactCapabilities(to: capabilities) - if !contact.changedValues().isEmpty { - objectIDsOfContactsToRefreshInViewContext.insert(contact.typedObjectID.objectID) - } + contact.setContactCapabilities(to: capabilities) + if !contact.changedValues().isEmpty { + objectIDsOfContactsToRefreshInViewContext.insert(contact.typedObjectID.objectID) } - } catch { - os_log("Could sync the existing persisted contacts with the information received from the engine: %{public}@", log: log, type: .error, error.localizedDescription) - assertionFailure() - // We continue anyway } - - - // The view context may have to refresh certain contacts at this point - - if !objectIDsOfContactsToRefreshInViewContext.isEmpty { - DispatchQueue.main.async { - let objectsToRefresh = ObvStack.shared.viewContext.registeredObjects - .filter({ objectIDsOfContactsToRefreshInViewContext.contains($0.objectID) }) - objectsToRefresh.forEach { objectID in - ObvStack.shared.viewContext.refresh(objectID, mergeChanges: true) - } + } catch { + os_log("Could sync the existing persisted contacts with the information received from the engine: %{public}@", log: log, type: .error, error.localizedDescription) + assertionFailure() + // We continue anyway + } + + + // The view context may have to refresh certain contacts at this point + + if !objectIDsOfContactsToRefreshInViewContext.isEmpty { + DispatchQueue.main.async { + let objectsToRefresh = ObvStack.shared.viewContext.registeredObjects + .filter({ objectIDsOfContactsToRefreshInViewContext.contains($0.objectID) }) + objectsToRefresh.forEach { objectID in + ObvStack.shared.viewContext.refresh(objectID, mergeChanges: true) } } - } - + } - + } + + + // When creating a new contact, we create/unlock a one2one discussion. In that case, we want to (re)send the discussion shared settings to our contact. + // This allows to make sure those settings are in sync. + private func requestSendingOneToOneDiscussionSharedConfiguration(with contact: PersistedObvContactIdentity, within obvContext: ObvContext) { + do { + // We had to create a contact, meaning we had to create/unlock a one2one discussion. In that case, we want to (re)send the discussion shared settings to our contact. + // This allows to make sure those settings are in sync. + let contactIdentifier = try contact.contactIdentifier + guard let discussionId = try contact.oneToOneDiscussion?.identifier else { return } + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvMessengerInternalNotification.aDiscussionSharedConfigurationIsNeededByContact( + contactIdentifier: contactIdentifier, + discussionId: discussionId) + .postOnDispatchQueue() + } + } catch { + assertionFailure(error.localizedDescription) + } + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvOwnedDevicesWithEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvOwnedDevicesWithEngineOperation.swift new file mode 100644 index 00000000..03fc9f32 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvOwnedDevicesWithEngineOperation.swift @@ -0,0 +1,110 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvEngine +import os.log +import ObvUICoreData +import CoreData + + +/// Updates the list of owned devices of all owned identities found at the app level. +final class SyncPersistedObvOwnedDevicesWithEngineOperation: ContextualOperationWithSpecificReasonForCancel { + + private let obvEngine: ObvEngine + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SyncPersistedObvOwnedIdentitiesWithEngineOperation.self)) + + init(obvEngine: ObvEngine) { + self.obvEngine = obvEngine + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + // Get the owned identities within the app + + let ownedIdentitiesWithApp: [PersistedObvOwnedIdentity] + do { + ownedIdentitiesWithApp = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + + // Loop through all owned identities + + for ownedIdentity in ownedIdentitiesWithApp { + + // Ask the engine for the latest list of owned devices of the owned identity + + let ownedDevicesWithinEngine: Set + do { + ownedDevicesWithinEngine = try obvEngine.getAllOwnedDevicesOfOwnedIdentity(ownedIdentity.cryptoId) + } catch { + // This happens if the owned identity was just deleted + return cancel(withReason: .couldNotGetOwnedDevicesFromEngine(error: error)) + } + + // Sync the devices of the owned identity + + try ownedIdentity.syncWith(ownedDevicesWithinEngine: ownedDevicesWithinEngine) + + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + +} + + +enum SyncPersistedObvOwnedDevicesWithEngineOperationReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case contextIsNil + case couldNotGetOwnedDevicesFromEngine(error: Error) + + public var logType: OSLogType { + switch self { + case .coreDataError, + .contextIsNil: + return .fault + case .couldNotGetOwnedDevicesFromEngine: + return .error + } + } + + public var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotGetOwnedDevicesFromEngine: + return "Could not get owned devices within engine." + } + } + + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvOwnedIdentitiesWithEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvOwnedIdentitiesWithEngineOperation.swift index 07761deb..3eaf4201 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvOwnedIdentitiesWithEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/BoostrapCoordinator/Operations/SyncPersistedObvOwnedIdentitiesWithEngineOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import OlvidUtils import ObvEngine import ObvUICoreData import os.log +import CoreData final class SyncPersistedObvOwnedIdentitiesWithEngineOperation: ContextualOperationWithSpecificReasonForCancel { @@ -34,11 +35,7 @@ final class SyncPersistedObvOwnedIdentitiesWithEngineOperation: ContextualOperat super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { // Get all owned identities within the engine @@ -51,107 +48,99 @@ final class SyncPersistedObvOwnedIdentitiesWithEngineOperation: ContextualOperat } let cryptoIdsWithinEngine = Set(obvOwnedIdentitiesWithinEngine.map { $0.cryptoId }) - obvContext.performAndWait { - - // Get the owned identities within the app - - let ownedIdentitiesWithApp: [PersistedObvOwnedIdentity] + // Get the owned identities within the app + + let ownedIdentitiesWithApp: [PersistedObvOwnedIdentity] + do { + ownedIdentitiesWithApp = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + + // Determine the owned identities to create, delete, or update + + let cryptoIdsWithinApp = Set(ownedIdentitiesWithApp.map { $0.cryptoId }) + let missingCryptoIds = cryptoIdsWithinEngine.subtracting(cryptoIdsWithinApp) + let cryptoIdsToDelete = cryptoIdsWithinApp.subtracting(cryptoIdsWithinEngine) + let cryptoIdsToUpdate = cryptoIdsWithinApp.subtracting(cryptoIdsToDelete) + + // Delete the owned identity that exist at the app level but not at the engine level + + for ownedCryptoId in cryptoIdsToDelete { do { - ownedIdentitiesWithApp = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + guard let persistedOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { continue } + try persistedOwnedIdentity.delete() } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + assertionFailure(error.localizedDescription) + // In production, continue anyway } - - // Determine the owned identities to create, delete, or update - - let cryptoIdsWithinApp = Set(ownedIdentitiesWithApp.map { $0.cryptoId }) - let missingCryptoIds = cryptoIdsWithinEngine.subtracting(cryptoIdsWithinApp) - let cryptoIdsToDelete = cryptoIdsWithinApp.subtracting(cryptoIdsWithinEngine) - let cryptoIdsToUpdate = cryptoIdsWithinApp.subtracting(cryptoIdsToDelete) - - os_log("Bootstrap: Number of missing owned identities to create : %d", log: log, type: .info, missingCryptoIds.count) - os_log("Bootstrap: Number of existing owned identities to delete : %d", log: log, type: .info, cryptoIdsToDelete.count) - os_log("Bootstrap: Number of existing owned identities to refresh : %d", log: log, type: .info, cryptoIdsToUpdate.count) + } + + // Create the missing owned identities + + for ownedCryptoId in missingCryptoIds { - // Delete the owned identity that exist at the app level but not at the engine level + guard let obvOwnedIdentity = obvOwnedIdentitiesWithinEngine.filter({ $0.cryptoId == ownedCryptoId }).first else { + os_log("Could not find owned identity to add, unexpected", log: log, type: .fault) + assertionFailure() + continue + } - for ownedCryptoId in cryptoIdsToDelete { - do { - guard let persistedOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { continue } - try persistedOwnedIdentity.delete() - } catch { - assertionFailure(error.localizedDescription) - // In production, continue anyway - } + guard PersistedObvOwnedIdentity(ownedIdentity: obvOwnedIdentity, within: obvContext.context) != nil else { + os_log("Failed to create persisted owned identity", log: log, type: .fault) + assertionFailure() + continue } - - // Create the missing owned identities - for ownedCryptoId in missingCryptoIds { - - guard let obvOwnedIdentity = obvOwnedIdentitiesWithinEngine.filter({ $0.cryptoId == ownedCryptoId }).first else { - os_log("Could not find owned identity to add, unexpected", log: log, type: .fault) - assertionFailure() - continue - } - - guard PersistedObvOwnedIdentity(ownedIdentity: obvOwnedIdentity, within: obvContext.context) != nil else { - os_log("Failed to create persisted owned identity", log: log, type: .fault) - assertionFailure() - continue - } - + } + + // Update the pre-existing identities + + for ownedCryptoId in cryptoIdsToUpdate { + + guard let obvOwnedIdentityFromEngine = obvOwnedIdentitiesWithinEngine.filter({ $0.cryptoId == ownedCryptoId }).first else { + os_log("Could not find owned identity to update within engine, unexpected", log: log, type: .fault) + assertionFailure() + continue } - - // Update the pre-existing identities - for ownedCryptoId in cryptoIdsToUpdate { - - guard let obvOwnedIdentityFromEngine = obvOwnedIdentitiesWithinEngine.filter({ $0.cryptoId == ownedCryptoId }).first else { - os_log("Could not find owned identity to update within engine, unexpected", log: log, type: .fault) - assertionFailure() - continue - } - - guard let ownedIdentityWithApp = ownedIdentitiesWithApp.filter({ $0.cryptoId == ownedCryptoId }).first else { - os_log("Could not find owned identity to update within app, unexpected", log: log, type: .fault) - assertionFailure() - continue - } - - do { - try ownedIdentityWithApp.update(with: obvOwnedIdentityFromEngine) - } catch { - os_log("Could not update app owned identity with engine owned identity: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - + guard let ownedIdentityWithApp = ownedIdentitiesWithApp.filter({ $0.cryptoId == ownedCryptoId }).first else { + os_log("Could not find owned identity to update within app, unexpected", log: log, type: .fault) + assertionFailure() + continue } - - // For each existing owned within the app, make sure the capabilities are in sync with the information within the engine do { - let persistedOwnedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) - persistedOwnedIdentities.forEach { persistedOwnedIdentity in - do { - if let capabilities = try obvEngine.getCapabilitiesOfOwnedIdentity(persistedOwnedIdentity.cryptoId) { - persistedOwnedIdentity.setContactCapabilities(to: capabilities) - } - } catch { - os_log("Could sync the capabilities of one of the owned identity: %{public}@", log: log, type: .error, error.localizedDescription) - assertionFailure() - // We continue anyway - } - } + try ownedIdentityWithApp.update(with: obvOwnedIdentityFromEngine) } catch { - os_log("Could sync the existing persisted owned identities capabilities with the information received from the engine: %{public}@", log: log, type: .error, error.localizedDescription) + os_log("Could not update app owned identity with engine owned identity: %{public}@", log: log, type: .fault, error.localizedDescription) assertionFailure() - // We continue anyway } } + // For each existing owned within the app, make sure the capabilities are in sync with the information within the engine + + do { + let persistedOwnedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + persistedOwnedIdentities.forEach { persistedOwnedIdentity in + do { + if let capabilities = try obvEngine.getCapabilitiesOfOwnedIdentity(persistedOwnedIdentity.cryptoId) { + persistedOwnedIdentity.setContactCapabilities(to: capabilities) + } + } catch { + os_log("Could sync the capabilities of one of the owned identity: %{public}@", log: log, type: .error, error.localizedDescription) + assertionFailure() + // We continue anyway + } + } + } catch { + os_log("Could sync the existing persisted owned identities capabilities with the information received from the engine: %{public}@", log: log, type: .error, error.localizedDescription) + assertionFailure() + // We continue anyway + } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/ContactGroupCoordinator.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/ContactGroupCoordinator.swift index 7e47ac3e..929a1af1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/ContactGroupCoordinator.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/ContactGroupCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -37,6 +37,7 @@ final class ContactGroupCoordinator: ObvErrorMaker { static let errorDomain = "ContactGroupCoordinator" private let coordinatorsQueue: OperationQueue private let queueForComposedOperations: OperationQueue + weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? init(obvEngine: ObvEngine, coordinatorsQueue: OperationQueue, queueForComposedOperations: OperationQueue) { self.obvEngine = obvEngine @@ -75,12 +76,21 @@ extension ContactGroupCoordinator { ObvMessengerInternalNotification.observeUserWantsToUpdateGroupV2() { [weak self] groupObjectID, changeset in self?.processUserWantsToUpdateGroupV2(groupObjectID: groupObjectID, changeset: changeset) }, - ObvMessengerInternalNotification.observeUserWantsToUpdateCustomNameAndGroupV2Photo() { [weak self] groupObjectID, customName, customPhotoURL in - self?.processUserWantsToUpdateCustomNameAndGroupV2Photo(groupObjectID: groupObjectID, customName: customName, customPhotoURL: customPhotoURL) + ObvMessengerInternalNotification.observeUserWantsToUpdateCustomNameAndGroupV2Photo() { [weak self] ownedCryptoId, groupIdentifier, customName, customPhoto in + self?.processUserWantsToUpdateCustomNameAndGroupV2Photo(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, customName: customName, customPhoto: customPhoto) }, ObvMessengerInternalNotification.observeUserHasSeenPublishedDetailsOfGroupV2() { [weak self] groupObjectID in self?.processUserHasSeenPublishedDetailsOfGroupV2(groupObjectID: groupObjectID) }, + ObvMessengerInternalNotification.observeUserWantsToSetCustomNameOfJoinedGroupV1() { [weak self] (ownedCryptoId, groupIdentifier, groupNameCustom) in + self?.processUserWantsToSetCustomNameOfJoinedGroupV1(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, groupNameCustom: groupNameCustom) + }, + ObvMessengerInternalNotification.observeUserWantsToUpdatePersonalNoteOnGroupV1 { [weak self] ownedCryptoId, groupIdentifier, newText in + self?.processUserWantsToUpdatePersonalNoteOnGroupV1(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, newText: newText) + }, + ObvMessengerInternalNotification.observeUserWantsToUpdatePersonalNoteOnGroupV2 { [weak self] ownedCryptoId, groupIdentifier, newText in + self?.processUserWantsToUpdatePersonalNoteOnGroupV2(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, newText: newText) + }, ]) // ObvEngine Notifications @@ -276,8 +286,13 @@ extension ContactGroupCoordinator { } - private func processUserWantsToUpdateCustomNameAndGroupV2Photo(groupObjectID: TypeSafeManagedObjectID, customName: String?, customPhotoURL: URL?) { - let op1 = UpdateCustomNameAndGroupV2PhotoOperation(groupObjectID: groupObjectID, customName: customName, customPhotoURL: customPhotoURL) + private func processUserWantsToUpdateCustomNameAndGroupV2Photo(ownedCryptoId: ObvCryptoId, groupIdentifier: Data, customName: String?, customPhoto: UIImage?) { + let op1 = UpdateCustomNameAndGroupV2PhotoOperation( + ownedCryptoId: ownedCryptoId, + groupIdentifier: groupIdentifier, + update: .customNameAndCustomPhoto(customName: customName, customPhoto: customPhoto), + makeSyncAtomRequest: true, + syncAtomRequestDelegate: syncAtomRequestDelegate) let composedOp = createCompositionOfOneContextualOperation(op1: op1) coordinatorsQueue.addOperation(composedOp) } @@ -290,11 +305,35 @@ extension ContactGroupCoordinator { } + private func processUserWantsToSetCustomNameOfJoinedGroupV1(ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV1Identifier, groupNameCustom: String?) { + let op1 = SetCustomNameOfJoinedGroupV1Operation(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, groupNameCustom: groupNameCustom, makeSyncAtomRequest: true, syncAtomRequestDelegate: syncAtomRequestDelegate) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + coordinatorsQueue.addOperation(composedOp) + } + + + private func processUserWantsToUpdatePersonalNoteOnGroupV1(ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV1Identifier, newText: String?) { + let op1 = UpdatePersonalNoteOnGroupV1Operation(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, newText: newText, makeSyncAtomRequest: true, syncAtomRequestDelegate: syncAtomRequestDelegate) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + coordinatorsQueue.addOperation(composedOp) + } + + + private func processUserWantsToUpdatePersonalNoteOnGroupV2(ownedCryptoId: ObvCryptoId, groupIdentifier: Data, newText: String?) { + let op1 = UpdatePersonalNoteOnGroupV2Operation(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, newText: newText, makeSyncAtomRequest: true, syncAtomRequestDelegate: syncAtomRequestDelegate) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + coordinatorsQueue.addOperation(composedOp) + } + + private func processGroupV2TrustedDetailsShouldBeReplacedByPublishedDetails(ownCryptoId: ObvCryptoId, groupIdentifier: Data) { - do { - try obvEngine.replaceTrustedDetailsByPublishedDetailsOfGroupV2(ownedCryptoId: ownCryptoId, groupIdentifier: groupIdentifier) - } catch { - assertionFailure(error.localizedDescription) + let obvEngine = self.obvEngine + Task.detached { + do { + try await obvEngine.replaceTrustedDetailsByPublishedDetailsOfGroupV2(ownedCryptoId: ownCryptoId, groupIdentifier: groupIdentifier) + } catch { + assertionFailure(error.localizedDescription) + } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/CreateOrUpdatePersistedGroupV2Operation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/CreateOrUpdatePersistedGroupV2Operation.swift index e8c6a340..11f2d348 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/CreateOrUpdatePersistedGroupV2Operation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/CreateOrUpdatePersistedGroupV2Operation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,13 +19,15 @@ import Foundation +import os.log import OlvidUtils import ObvTypes import ObvEngine import ObvUICoreData +import CoreData -final class CreateOrUpdatePersistedGroupV2Operation: ContextualOperationWithSpecificReasonForCancel { +final class CreateOrUpdatePersistedGroupV2Operation: ContextualOperationWithSpecificReasonForCancel { private let obvGroupV2: ObvGroupV2 private let initiator: ObvGroupV2.CreationOrUpdateInitiator @@ -38,23 +40,16 @@ final class CreateOrUpdatePersistedGroupV2Operation: ContextualOperationWithSpec super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { - let group: PersistedGroupV2 - do { - group = try PersistedGroupV2.createOrUpdate(obvGroupV2: obvGroupV2, - createdByMe: initiator == .createdByMe, - within: obvContext.context) - } catch { - return cancel(withReason: .coreDataError(error: error)) + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: obvGroupV2.ownIdentity, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedOwnedIdentity) } + let group = try ownedIdentity.createOrUpdateGroupV2(obvGroupV2: obvGroupV2, createdByMe: initiator == .createdByMe) + /* If we the group was updated by someone else and if the list of users that can change the discussion shared setttings was changed (compared to the one we knew about), * we might be in a situation where one of the new members allowed to change these shared settings did change the settings while we were not aware of her rights to do so. * In that case, we have thrown away her change request. @@ -101,7 +96,8 @@ final class CreateOrUpdatePersistedGroupV2Operation: ContextualOperationWithSpec isVoipMessageForStartingCall: false, attachmentsToSend: [], toContactIdentitiesWithCryptoId: toContactIdentitiesWithCryptoId, - ofOwnedIdentityWithCryptoId: obvGroupV2.ownIdentity) + ofOwnedIdentityWithCryptoId: obvGroupV2.ownIdentity, + alsoPostToOtherOwnedDevices: true) } } catch { @@ -112,7 +108,37 @@ final class CreateOrUpdatePersistedGroupV2Operation: ContextualOperationWithSpec } // End of if initiator == .createdOrUpdatedBySomeoneElse... + } catch { + return cancel(withReason: .coreDataError(error: error)) } } + + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindPersistedOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, + .couldNotFindPersistedOwnedIdentity: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindPersistedOwnedIdentity: + return "Could not find persisted owned identity" + } + } + + } + + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/DeletePersistedGroupV2Operation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/DeletePersistedGroupV2Operation.swift index 4b1619ab..11368f50 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/DeletePersistedGroupV2Operation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/DeletePersistedGroupV2Operation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import Foundation import OlvidUtils import ObvTypes import ObvUICoreData +import CoreData final class DeletePersistedGroupV2Operation: ContextualOperationWithSpecificReasonForCancel { @@ -34,23 +35,16 @@ final class DeletePersistedGroupV2Operation: ContextualOperationWithSpecificReas super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - guard let persistedGroupV2 = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: appGroupIdentifier, within: obvContext.context) else { - // We could not find the group, no need to delete it - return - } - try persistedGroupV2.delete() - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let persistedGroupV2 = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: appGroupIdentifier, within: obvContext.context) else { + // We could not find the group, no need to delete it + return } - + try persistedGroupV2.delete() + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/MarkPublishedDetailsOfGroupV2AsSeenOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/MarkPublishedDetailsOfGroupV2AsSeenOperation.swift index f5dde281..448026d8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/MarkPublishedDetailsOfGroupV2AsSeenOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/MarkPublishedDetailsOfGroupV2AsSeenOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,8 @@ import Foundation import OlvidUtils import ObvTypes import ObvUICoreData +import CoreData + final class MarkPublishedDetailsOfGroupV2AsSeenOperation: ContextualOperationWithSpecificReasonForCancel { @@ -32,20 +34,13 @@ final class MarkPublishedDetailsOfGroupV2AsSeenOperation: ContextualOperationWit super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - let group = try PersistedGroupV2.get(objectID: groupV2ObjectID, within: obvContext.context) - group?.markPublishedDetailsAsSeen() - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - + do { + let group = try PersistedGroupV2.get(objectID: groupV2ObjectID, within: obvContext.context) + group?.markPublishedDetailsAsSeen() + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupDeletedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupDeletedOperation.swift index 6040a0c5..07d1e9e6 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupDeletedOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupDeletedOperation.swift @@ -40,39 +40,31 @@ final class ProcessContactGroupDeletedOperation: ContextualOperationWithSpecific super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: obvOwnedIdentity.cryptoId, within: obvContext.context) else { - assertionFailure() - return - } - - let groupId = (groupUid, groupOwner) - - guard let group = try PersistedContactGroup.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) else { - return - } - - let persistedGroupDiscussion = group.discussion - - try persistedGroupDiscussion.setStatus(to: .locked) - - try group.delete() - - } catch { + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: obvOwnedIdentity.cryptoId, within: obvContext.context) else { assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + return + } + + let groupIdentifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + + guard let group = try PersistedContactGroup.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) else { + return } + let persistedGroupDiscussion = group.discussion + + try persistedGroupDiscussion.setStatus(to: .locked) + + try group.delete() + + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupHasUpdatedPendingMembersAndGroupMembersOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupHasUpdatedPendingMembersAndGroupMembersOperation.swift index fab9a876..b2b0fa35 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupHasUpdatedPendingMembersAndGroupMembersOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupHasUpdatedPendingMembersAndGroupMembersOperation.swift @@ -36,55 +36,44 @@ final class ProcessContactGroupHasUpdatedPendingMembersAndGroupMembersOperation: super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { - return - } - - let persistedObvContactIdentities: Set = Set(obvContactGroup.groupMembers.compactMap { - guard let persistedContact = try? PersistedObvContactIdentity.get(persisted: $0, whereOneToOneStatusIs: .any, within: obvContext.context) else { - os_log("One of the group members is not among our persisted contacts. The group members will be updated when this contact will be added to the persisted contact.", log: Self.log, type: .info) - return nil - } - return persistedContact - }) - - let groupUid = obvContactGroup.groupUid - let groupOwner = obvContactGroup.groupOwner.cryptoId - let groupId = (groupUid, groupOwner) - guard let contactGroup = try PersistedContactGroup.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) else { - return cancel(withReason: .couldNotFindContactGroup) + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { + return + } + + let persistedObvContactIdentities: Set = Set(obvContactGroup.groupMembers.compactMap { + guard let persistedContact = try? PersistedObvContactIdentity.get(persisted: $0.contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + os_log("One of the group members is not among our persisted contacts. The group members will be updated when this contact will be added to the persisted contact.", log: Self.log, type: .info) + return nil } - - contactGroup.set(persistedObvContactIdentities) - try contactGroup.setPendingMembers(to: obvContactGroup.pendingGroupMembers) - - if let groupOwned = contactGroup as? PersistedContactGroupOwned { - if obvContactGroup.groupType == .owned { - let declinedMemberIdentites = Set(obvContactGroup.declinedPendingGroupMembers.map { $0.cryptoId }) - for pendingMember in groupOwned.pendingMembers { - pendingMember.declined = declinedMemberIdentites.contains(pendingMember.cryptoId) - } + return persistedContact + }) + + guard let contactGroup = try PersistedContactGroup.getContactGroup(groupIdentifier: obvContactGroup.groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) else { + return cancel(withReason: .couldNotFindContactGroup) + } + + contactGroup.set(persistedObvContactIdentities) + try contactGroup.setPendingMembers(to: obvContactGroup.pendingGroupMembers) + + if let groupOwned = contactGroup as? PersistedContactGroupOwned { + if obvContactGroup.groupType == .owned { + let declinedMemberIdentites = Set(obvContactGroup.declinedPendingGroupMembers.map { $0.cryptoId }) + for pendingMember in groupOwned.pendingMembers { + pendingMember.declined = declinedMemberIdentites.contains(pendingMember.cryptoId) } } - - - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) } + + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupHasUpdatedPublishedDetailsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupHasUpdatedPublishedDetailsOperation.swift index 45c49e86..5f4c3172 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupHasUpdatedPublishedDetailsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupHasUpdatedPublishedDetailsOperation.swift @@ -34,50 +34,42 @@ final class ProcessContactGroupHasUpdatedPublishedDetailsOperation: ContextualOp super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { + + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { + assertionFailure() + return + } + + let groupIdentifier = obvContactGroup.groupIdentifier - do { + switch obvContactGroup.groupType { + case .owned: - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { + guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { assertionFailure() return } - let groupId = (obvContactGroup.groupUid, obvContactGroup.groupOwner.cryptoId) + try groupOwned.resetGroupName(to: obvContactGroup.publishedCoreDetails.name) + groupOwned.setStatus(to: .noLatestDetails) + + case .joined: - switch obvContactGroup.groupType { - case .owned: - - guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { - assertionFailure() - return - } - - try groupOwned.resetGroupName(to: obvContactGroup.publishedCoreDetails.name) - groupOwned.setStatus(to: .noLatestDetails) - - case .joined: - - guard let groupJoined = try PersistedContactGroupJoined.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupJoined else { - assertionFailure() - return - } - - groupJoined.setStatus(to: .unseenPublishedDetails) - + guard let groupJoined = try PersistedContactGroupJoined.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupJoined else { + assertionFailure() + return } - } catch { - return cancel(withReason: .coreDataError(error: error)) + groupJoined.setStatus(to: .unseenPublishedDetails) + } + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupJoinedHasUpdatedTrustedDetailsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupJoinedHasUpdatedTrustedDetailsOperation.swift index 41a845a7..3df30c77 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupJoinedHasUpdatedTrustedDetailsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupJoinedHasUpdatedTrustedDetailsOperation.swift @@ -34,37 +34,29 @@ final class ProcessContactGroupJoinedHasUpdatedTrustedDetailsOperation: Contextu super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { - assertionFailure() - return - } - - let groupId = (obvContactGroup.groupUid, obvContactGroup.groupOwner.cryptoId) - - guard let groupJoined = try PersistedContactGroupJoined.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupJoined else { - assertionFailure() - return - } - - try groupJoined.resetGroupName(to: obvContactGroup.trustedOrLatestCoreDetails.name) - groupJoined.setStatus(to: .noNewPublishedDetails) - groupJoined.updatePhoto(with: obvContactGroup.trustedOrLatestPhotoURL) - - } catch { - return cancel(withReason: .coreDataError(error: error)) + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { + assertionFailure() + return } - + + let groupIdentifier = obvContactGroup.groupIdentifier + + guard let groupJoined = try PersistedContactGroupJoined.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupJoined else { + assertionFailure() + return + } + + try groupJoined.resetGroupName(to: obvContactGroup.trustedOrLatestCoreDetails.name) + groupJoined.setStatus(to: .noNewPublishedDetails) + groupJoined.updatePhoto(with: obvContactGroup.trustedOrLatestPhotoURL) + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupOwnedDiscardedLatestDetailsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupOwnedDiscardedLatestDetailsOperation.swift index 0c0077e1..e31e7efc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupOwnedDiscardedLatestDetailsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupOwnedDiscardedLatestDetailsOperation.swift @@ -34,35 +34,27 @@ final class ProcessContactGroupOwnedDiscardedLatestDetailsOperation: ContextualO super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { - assertionFailure() - return - } - - let groupId = (obvContactGroup.groupUid, obvContactGroup.groupOwner.cryptoId) - - guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { - assertionFailure() - return - } - - groupOwned.setStatus(to: .noLatestDetails) - - } catch { - return cancel(withReason: .coreDataError(error: error)) + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { + assertionFailure() + return } - + + let groupIdentifier = obvContactGroup.groupIdentifier + + guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { + assertionFailure() + return + } + + groupOwned.setStatus(to: .noLatestDetails) + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupOwnedHasUpdatedLatestDetailsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupOwnedHasUpdatedLatestDetailsOperation.swift index 38aa6a7a..c9493191 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupOwnedHasUpdatedLatestDetailsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessContactGroupOwnedHasUpdatedLatestDetailsOperation.swift @@ -34,35 +34,27 @@ final class ProcessContactGroupOwnedHasUpdatedLatestDetailsOperation: Contextual super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { - assertionFailure() - return - } - - let groupId = (obvContactGroup.groupUid, obvContactGroup.groupOwner.cryptoId) - - guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { - assertionFailure() - return - } - - groupOwned.setStatus(to: .withLatestDetails) - - } catch { - return cancel(withReason: .coreDataError(error: error)) + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { + assertionFailure() + return } - + + let groupIdentifier = obvContactGroup.groupIdentifier + + guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { + assertionFailure() + return + } + + groupOwned.setStatus(to: .withLatestDetails) + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessNewContactGroupOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessNewContactGroupOperation.swift index b1760de9..931ff033 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessNewContactGroupOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessNewContactGroupOperation.swift @@ -34,31 +34,23 @@ final class ProcessNewContactGroupOperation: ContextualOperationWithSpecificReas super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - // We create a new persisted contact group associated to this engine's contact group - - switch obvContactGroup.groupType { - case .owned: - _ = try PersistedContactGroupOwned(contactGroup: obvContactGroup, within: obvContext.context) - case .joined: - _ = try PersistedContactGroupJoined(contactGroup: obvContactGroup, within: obvContext.context) - } - - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + // We create a new persisted contact group associated to this engine's contact group + + switch obvContactGroup.groupType { + case .owned: + _ = try PersistedContactGroupOwned(contactGroup: obvContactGroup, within: obvContext.context) + case .joined: + _ = try PersistedContactGroupJoined(contactGroup: obvContactGroup, within: obvContext.context) } + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessNewPendingGroupMemberDeclinedStatusOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessNewPendingGroupMemberDeclinedStatusOperation.swift index 3720091f..4e11a6a5 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessNewPendingGroupMemberDeclinedStatusOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessNewPendingGroupMemberDeclinedStatusOperation.swift @@ -34,43 +34,35 @@ final class ProcessNewPendingGroupMemberDeclinedStatusOperation: ContextualOpera super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { guard obvContactGroup.groupType == .owned else { assertionFailure(); return } - - obvContext.performAndWait { + + do { - do { - - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { - assertionFailure() - return - } - - let groupId = (obvContactGroup.groupUid, obvContactGroup.groupOwner.cryptoId) - - guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { - assertionFailure() - return - } - - let declinedMemberIdentites = Set(obvContactGroup.declinedPendingGroupMembers.map { $0.cryptoId }) - for pendingMember in groupOwned.pendingMembers { - let newDeclined = declinedMemberIdentites.contains(pendingMember.cryptoId) - if pendingMember.declined != newDeclined { - pendingMember.declined = newDeclined - } + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { + assertionFailure() + return + } + + let groupIdentifier = obvContactGroup.groupIdentifier + + guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { + assertionFailure() + return + } + + let declinedMemberIdentites = Set(obvContactGroup.declinedPendingGroupMembers.map { $0.cryptoId }) + for pendingMember in groupOwned.pendingMembers { + let newDeclined = declinedMemberIdentites.contains(pendingMember.cryptoId) + if pendingMember.declined != newDeclined { + pendingMember.declined = newDeclined } - - } catch { - return cancel(withReason: .coreDataError(error: error)) } + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessPublishedPhotoOfContactGroupOwnedHasBeenUpdatedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessPublishedPhotoOfContactGroupOwnedHasBeenUpdatedOperation.swift index 51558762..5700ebe5 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessPublishedPhotoOfContactGroupOwnedHasBeenUpdatedOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessPublishedPhotoOfContactGroupOwnedHasBeenUpdatedOperation.swift @@ -34,34 +34,26 @@ final class ProcessPublishedPhotoOfContactGroupOwnedHasBeenUpdatedOperation: Con super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { - return - } - - let groupId = (obvContactGroup.groupUid, obvContactGroup.groupOwner.cryptoId) - - guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { - return - } - - groupOwned.updatePhoto(with: obvContactGroup.publishedPhotoURL) - - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { + return + } + + let groupIdentifier = obvContactGroup.groupIdentifier + + guard let groupOwned = try PersistedContactGroupOwned.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupOwned else { + return } + groupOwned.updatePhoto(with: obvContactGroup.publishedPhotoURL) + + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessTrustedPhotoOfContactGroupJoinedHasBeenUpdatedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessTrustedPhotoOfContactGroupJoinedHasBeenUpdatedOperation.swift index f00a5890..69b0c6ec 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessTrustedPhotoOfContactGroupJoinedHasBeenUpdatedOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/ProcessTrustedPhotoOfContactGroupJoinedHasBeenUpdatedOperation.swift @@ -34,34 +34,26 @@ final class ProcessTrustedPhotoOfContactGroupJoinedHasBeenUpdatedOperation: Cont super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { - return - } - - let groupId = (obvContactGroup.groupUid, obvContactGroup.groupOwner.cryptoId) - - guard let groupJoined = try PersistedContactGroupJoined.getContactGroup(groupId: groupId, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupJoined else { - return - } - - groupJoined.updatePhoto(with: obvContactGroup.trustedOrLatestPhotoURL) - - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvContactGroup.ownedIdentity, within: obvContext.context) else { + return } + let groupIdentifier = obvContactGroup.groupIdentifier + + guard let groupJoined = try PersistedContactGroupJoined.getContactGroup(groupIdentifier: groupIdentifier, ownedIdentity: persistedObvOwnedIdentity) as? PersistedContactGroupJoined else { + return + } + + groupJoined.updatePhoto(with: obvContactGroup.trustedOrLatestPhotoURL) + + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/RemoveUpdateInProgressForGroupV2Operation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/RemoveUpdateInProgressForGroupV2Operation.swift index 91e3c5fb..11bdaa65 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/RemoveUpdateInProgressForGroupV2Operation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/RemoveUpdateInProgressForGroupV2Operation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,8 @@ import Foundation import OlvidUtils import ObvTypes import ObvUICoreData +import CoreData + final class RemoveUpdateInProgressForGroupV2Operation: ContextualOperationWithSpecificReasonForCancel { @@ -34,22 +36,15 @@ final class RemoveUpdateInProgressForGroupV2Operation: ContextualOperationWithSp super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: appGroupIdentifier, within: obvContext.context) else { - return - } - group.removeUpdateInProgress() - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: appGroupIdentifier, within: obvContext.context) else { + return } - + group.removeUpdateInProgress() + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/SetCustomNameOfJoinedGroupV1Operation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/SetCustomNameOfJoinedGroupV1Operation.swift new file mode 100644 index 00000000..e64358f8 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/SetCustomNameOfJoinedGroupV1Operation.swift @@ -0,0 +1,102 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import ObvTypes +import ObvCrypto +import CoreData +import ObvUICoreData +import os.log + + +final class SetCustomNameOfJoinedGroupV1Operation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoId: ObvCryptoId + private let groupIdentifier: GroupV1Identifier + private let groupNameCustom: String? + + private let makeSyncAtomRequest: Bool + private weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? + + init(ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV1Identifier, groupNameCustom: String?, makeSyncAtomRequest: Bool, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate?) { + self.ownedCryptoId = ownedCryptoId + self.groupIdentifier = groupIdentifier + self.groupNameCustom = groupNameCustom + self.syncAtomRequestDelegate = syncAtomRequestDelegate + self.makeSyncAtomRequest = makeSyncAtomRequest + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + let customDisplayNameWasUpdated = try ownedIdentity.setCustomNameOfJoinedGroupV1(groupIdentifier: groupIdentifier, to: groupNameCustom) + + // If the custom display name was updated, we propagate the change to our other owned devices + + if makeSyncAtomRequest && customDisplayNameWasUpdated { + assert(self.syncAtomRequestDelegate != nil) + if let syncAtomRequestDelegate = self.syncAtomRequestDelegate { + let ownedCryptoId = self.ownedCryptoId + let syncAtom = ObvSyncAtom.groupV1Nickname(groupOwner: groupIdentifier.groupOwner, groupUid: groupIdentifier.groupUid, groupNickname: groupNameCustom) + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + Task.detached { + await syncAtomRequestDelegate.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } + } + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, .couldNotFindOwnedIdentity: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateCustomNameAndGroupV2PhotoOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateCustomNameAndGroupV2PhotoOperation.swift index 7a4aa8d9..6b147f85 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateCustomNameAndGroupV2PhotoOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateCustomNameAndGroupV2PhotoOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,60 +22,103 @@ import Foundation import OlvidUtils import ObvTypes import ObvUICoreData +import CoreData +import os.log -final class UpdateCustomNameAndGroupV2PhotoOperation: ContextualOperationWithSpecificReasonForCancel { + +final class UpdateCustomNameAndGroupV2PhotoOperation: ContextualOperationWithSpecificReasonForCancel { + + enum Update { + case customName(customName: String?) + case customNameAndCustomPhoto(customName: String?, customPhoto: UIImage?) + } - private let groupObjectID: TypeSafeManagedObjectID - private let customName: String? - private let customPhotoURL: URL? + private let ownedCryptoId: ObvCryptoId + private let groupIdentifier: Data + private let update: Update - init(groupObjectID: TypeSafeManagedObjectID, customName: String?, customPhotoURL: URL?) { - self.groupObjectID = groupObjectID - self.customName = customName - self.customPhotoURL = customPhotoURL + private let makeSyncAtomRequest: Bool + private weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? + + init(ownedCryptoId: ObvCryptoId, groupIdentifier: Data, update: Update, makeSyncAtomRequest: Bool, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate?) { + self.ownedCryptoId = ownedCryptoId + self.groupIdentifier = groupIdentifier + self.update = update + self.makeSyncAtomRequest = makeSyncAtomRequest + self.syncAtomRequestDelegate = syncAtomRequestDelegate super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - guard let group = try PersistedGroupV2.get(objectID: groupObjectID, within: obvContext.context) else { - return - } - - do { - try group.updateCustomNameWith(with: customName) - try group.updateCustomPhotoWithPhotoAtURL(customPhotoURL, within: obvContext) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + // Update the custom name + + switch update { + case .customNameAndCustomPhoto(customName: let customName, customPhoto: _), + .customName(customName: let customName): - // Since the previous call did copy the photo to a proper location, we can delete the photo at the passed URL - // We do so, even if there is an error during the context save + let groupNameCustomHadToBeUpdated = try ownedIdentity.setCustomNameOfGroupV2(groupIdentifier: groupIdentifier, to: customName) + + // If the custom display name was updated, we propagate the change to our other owned devices - if let customPhotoURL = customPhotoURL { - do { - try obvContext.addContextDidSaveCompletionHandler { _ in - try? FileManager.default.removeItem(at: customPhotoURL) + if makeSyncAtomRequest && groupNameCustomHadToBeUpdated { + assert(self.syncAtomRequestDelegate != nil) + if let syncAtomRequestDelegate = self.syncAtomRequestDelegate { + let ownedCryptoId = self.ownedCryptoId + let syncAtom = ObvSyncAtom.groupV2Nickname(groupIdentifier: groupIdentifier, groupNickname: customName) + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + Task.detached { + await syncAtomRequestDelegate.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } } - } catch { - return cancel(withReason: .coreDataError(error: error)) } - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) + } + // Update the custom photo + + switch update { + case .customName: + break + case .customNameAndCustomPhoto(customName: _, customPhoto: let customPhoto): + + try ownedIdentity.updateCustomPhotoOfGroupV2(withGroupIdentifier: groupIdentifier, withPhoto: customPhoto, within: obvContext) + + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) } } + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case couldNotFindOwnedIdentity + case coreDataError(error: Error) + + var logType: OSLogType { + return .fault + } + + var errorDescription: String? { + switch self { + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + } + } + + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateGroupV2Operation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateGroupV2Operation.swift index 6b076333..b8002900 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateGroupV2Operation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateGroupV2Operation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,9 @@ import ObvTypes import ObvEngine import os.log import ObvUICoreData +import CoreData +import ObvSettings + /// Operation executed when the local user updates a group v2 (as an administrator) final class UpdateGroupV2Operation: ContextualOperationWithSpecificReasonForCancel { @@ -39,40 +42,33 @@ final class UpdateGroupV2Operation: ContextualOperationWithSpecificReasonForCanc super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { + + guard let group = try PersistedGroupV2.get(objectID: groupObjectID, within: obvContext.context) else { assertionFailure(); return } + guard group.ownedIdentityIsAdmin else { assertionFailure(); return } + + // If the changeset contains no specific information about the owned identity, we add the default admin permissions for her + let updatedChangeSet: ObvGroupV2.Changeset + if !changeset.concernedMembers.contains(try group.ownCryptoId) && !changeset.isEmpty { + updatedChangeSet = try changeset.adding(newChanges: Set([.ownPermissionsChanged(permissions: ObvUICoreDataConstants.defaultObvGroupV2PermissionsForAdmin)])) + } else { + updatedChangeSet = changeset + } + + guard !updatedChangeSet.isEmpty else { + return + } + do { - - guard let group = try PersistedGroupV2.get(objectID: groupObjectID, within: obvContext.context) else { assertionFailure(); return } - guard group.ownedIdentityIsAdmin else { assertionFailure(); return } - - // If the changeset contains no specific information about the owned identity, we add the default admin permissions for her - let updatedChangeSet: ObvGroupV2.Changeset - if !changeset.concernedMembers.contains(try group.ownCryptoId) && !changeset.isEmpty { - updatedChangeSet = try changeset.adding(newChanges: Set([.ownPermissionsChanged(permissions: ObvUICoreDataConstants.defaultObvGroupV2PermissionsForAdmin)])) - } else { - updatedChangeSet = changeset - } - - guard !updatedChangeSet.isEmpty else { - return - } - - do { - try obvEngine.updateGroupV2(ownedCryptoId: group.ownCryptoId, groupIdentifier: group.groupIdentifier, changeset: updatedChangeSet) - } catch { - return cancel(withReason: .theEngineRequestFailed(error: error)) - } - + try obvEngine.updateGroupV2(ownedCryptoId: group.ownCryptoId, groupIdentifier: group.groupIdentifier, changeset: updatedChangeSet) } catch { - return cancel(withReason: .coreDataError(error: error)) + return cancel(withReason: .theEngineRequestFailed(error: error)) } + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdatePersonalNoteOnGroupV1Operation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdatePersonalNoteOnGroupV1Operation.swift new file mode 100644 index 00000000..6d63078f --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdatePersonalNoteOnGroupV1Operation.swift @@ -0,0 +1,101 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import CoreData +import os.log +import ObvEngine +import ObvUICoreData +import ObvTypes +import ObvCrypto + + +final class UpdatePersonalNoteOnGroupV1Operation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoId: ObvCryptoId + private let groupIdentifier: GroupV1Identifier + private let newText: String? + + private let makeSyncAtomRequest: Bool + private weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? + + init(ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV1Identifier, newText: String?, makeSyncAtomRequest: Bool, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate?) { + self.ownedCryptoId = ownedCryptoId + self.groupIdentifier = groupIdentifier + self.newText = newText + self.makeSyncAtomRequest = makeSyncAtomRequest + self.syncAtomRequestDelegate = syncAtomRequestDelegate + super.init() + } + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + let noteHadToBeUpdatedInDatabase = try ownedIdentity.setPersonalNoteOnGroupV1(groupIdentifier: groupIdentifier, newText: newText) + + if makeSyncAtomRequest && noteHadToBeUpdatedInDatabase { + assert(self.syncAtomRequestDelegate != nil) + if let syncAtomRequestDelegate = self.syncAtomRequestDelegate { + let ownedCryptoId = self.ownedCryptoId + let syncAtom = ObvSyncAtom.groupV1PersonalNote(groupOwner: groupIdentifier.groupOwner, groupUid: groupIdentifier.groupUid, note: newText) + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + Task.detached { + await syncAtomRequestDelegate.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } + } + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindOwnedIdentity + + var logType: OSLogType { + return .fault + } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } + } + + } + + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdatePersonalNoteOnGroupV2Operation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdatePersonalNoteOnGroupV2Operation.swift new file mode 100644 index 00000000..d9815bf4 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdatePersonalNoteOnGroupV2Operation.swift @@ -0,0 +1,101 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import CoreData +import os.log +import ObvEngine +import ObvUICoreData +import ObvTypes +import ObvCrypto + + +final class UpdatePersonalNoteOnGroupV2Operation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoId: ObvCryptoId + private let groupIdentifier: Data + private let newText: String? + + private let makeSyncAtomRequest: Bool + private weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? + + init(ownedCryptoId: ObvCryptoId, groupIdentifier: Data, newText: String?, makeSyncAtomRequest: Bool, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate?) { + self.ownedCryptoId = ownedCryptoId + self.groupIdentifier = groupIdentifier + self.newText = newText + self.makeSyncAtomRequest = makeSyncAtomRequest + self.syncAtomRequestDelegate = syncAtomRequestDelegate + super.init() + } + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + let noteHadToBeUpdatedInDatabase = try ownedIdentity.setPersonalNoteOnGroupV2(groupIdentifier: groupIdentifier, newText: newText) + + if makeSyncAtomRequest && noteHadToBeUpdatedInDatabase { + assert(self.syncAtomRequestDelegate != nil) + if let syncAtomRequestDelegate = self.syncAtomRequestDelegate { + let ownedCryptoId = self.ownedCryptoId + let syncAtom = ObvSyncAtom.groupV2PersonalNote(groupIdentifier: groupIdentifier, note: newText) + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + Task.detached { + await syncAtomRequestDelegate.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } + } + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindOwnedIdentity + + var logType: OSLogType { + return .fault + } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } + } + + } + + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/ContactIdentityCoordinator.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/ContactIdentityCoordinator.swift index 9de8b15f..d6b19296 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/ContactIdentityCoordinator.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/ContactIdentityCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,6 +25,7 @@ import CoreDataStack import OlvidUtils import ObvTypes import ObvUICoreData +import ObvSettings final class ContactIdentityCoordinator: ObvErrorMaker { @@ -34,6 +35,7 @@ final class ContactIdentityCoordinator: ObvErrorMaker { private var observationTokens = [NSObjectProtocol]() private let coordinatorsQueue: OperationQueue private let queueForComposedOperations: OperationQueue + weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? static let errorDomain = "ContactIdentityCoordinator" @@ -56,17 +58,14 @@ final class ContactIdentityCoordinator: ObvErrorMaker { ObvMessengerInternalNotification.observeUserWantsToDeleteContact { [weak self] contactCryptoId, ownedCryptoId, viewController, completionHandler in Task { [weak self] in await self?.processUserWantsToDeleteContact(with: contactCryptoId, ownedCryptoId: ownedCryptoId, viewController: viewController, completionHandler: completionHandler) } }, - ObvMessengerInternalNotification.observeResyncContactIdentityDevicesWithEngine { [weak self] contactCryptoId, ownedCryptoId in - self?.processResyncContactIdentityDevicesWithEngineNotification(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) - }, - ObvMessengerInternalNotification.observeResyncContactIdentityDetailsStatusWithEngine { [weak self] contactCryptoId, ownedCryptoId in - self?.processResyncContactIdentityDetailsStatusWithEngineNotification(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + ObvMessengerInternalNotification.observeResyncContactIdentityDevicesWithEngine { [weak self] obvContactIdentifier in + self?.processResyncContactIdentityDevicesWithEngineNotification(obvContactIdentifier: obvContactIdentifier) }, ObvMessengerInternalNotification.observeUserDidSeeNewDetailsOfContact { [weak self] contactCryptoId, ownedCryptoId in self?.processUserDidSeeNewDetailsOfContactNotification(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) }, - ObvMessengerInternalNotification.observeUserWantsToEditContactNicknameAndPicture { [weak self] persistedContactObjectID, customDisplayName, customPhotoURL in - self?.updateCustomNicknameAndPictureForContact(persistedContactObjectID: persistedContactObjectID, customDisplayName: customDisplayName, customPhotoURL: customPhotoURL) + ObvMessengerInternalNotification.observeUserWantsToEditContactNicknameAndPicture { [weak self] persistedContactObjectID, customDisplayName, customPhoto in + self?.updateCustomNicknameAndPictureForContact(persistedContactObjectID: persistedContactObjectID, customDisplayName: customDisplayName, customPhoto: customPhoto) }, ObvMessengerInternalNotification.observeUserWantsToChangeContactsSortOrder { [weak self] ownedCryptoId, sortOrder in self?.processUserWantToChangeContactsSortOrderNotification(ownedCryptoId: ownedCryptoId, sortOrder: sortOrder) @@ -89,26 +88,26 @@ final class ContactIdentityCoordinator: ObvErrorMaker { ObvMessengerInternalNotification.observeUiRequiresSignedContactDetails { [weak self] ownedIdentityCryptoId, contactCryptoId, completion in self?.processUiRequiresSignedContactDetails(ownedIdentityCryptoId: ownedIdentityCryptoId, contactCryptoId: contactCryptoId, completion: completion) }, + ObvMessengerInternalNotification.observeUserWantsToUpdatePersonalNoteOnContact { [weak self] contactIdentifier, newText in + self?.processUserWantsToUpdatePersonalNoteOnContact(contactIdentifier: contactIdentifier, newText: newText) + }, ]) // Listening to ObvEngine Notification observationTokens.append(contentsOf: [ - ObvEngineNotificationNew.observeDeletedObliviousChannelWithContactDevice(within: NotificationCenter.default) { [weak self] obvContactDevice in - self?.processDeletedObliviousChannelWithContactDevice(obvContactDevice: obvContactDevice) + ObvEngineNotificationNew.observeDeletedObliviousChannelWithContactDevice(within: NotificationCenter.default) { [weak self] obvContactIdentifier in + self?.processDeletedObliviousChannelWithContactDevice(obvContactIdentifier: obvContactIdentifier) }, ObvEngineNotificationNew.observeNewTrustedContactIdentity(within: NotificationCenter.default) { [weak self] obvContactIdentity in self?.processNewTrustedContactIdentity(obvContactIdentity: obvContactIdentity) }, - ObvEngineNotificationNew.observeNewObliviousChannelWithContactDevice(within: NotificationCenter.default) { [weak self] obvContactDevice in - self?.processNewObliviousChannelWithContactDevice(obvContactDevice: obvContactDevice) + ObvEngineNotificationNew.observeNewObliviousChannelWithContactDevice(within: NotificationCenter.default) { [weak self] obvContactIdentifier in + self?.processNewObliviousChannelWithContactDevice(obvContactIdentifier: obvContactIdentifier) }, ObvEngineNotificationNew.observeTrustedPhotoOfContactIdentityHasBeenUpdated(within: NotificationCenter.default) { [weak self] obvContactIdentity in self?.processTrustedPhotoOfContactIdentityHasBeenUpdated(obvContactIdentity: obvContactIdentity) }, - ObvEngineNotificationNew.observeUpdatedSetOfContactsCertifiedByOwnKeycloak(within: NotificationCenter.default) { [weak self] ownedIdentity, contactsCertifiedByOwnKeycloak in - self?.processUpdatedSetOfContactsCertifiedByOwnKeycloakNotification(ownedIdentity: ownedIdentity, contactsCertifiedByOwnKeycloak: contactsCertifiedByOwnKeycloak) - }, ObvEngineNotificationNew.observeOwnedIdentityUnbindingFromKeycloakPerformed(within: NotificationCenter.default) { [weak self] ownedIdentity, result in self?.processOwnedIdentityUnbindingFromKeycloakPerformedNotification(ownedIdentity: ownedIdentity, result: result) }, @@ -124,18 +123,15 @@ final class ContactIdentityCoordinator: ObvErrorMaker { ObvEngineNotificationNew.observeContactWasDeleted(within: NotificationCenter.default) { [weak self] ownedCryptoId, contactCryptoId in self?.processContactWasDeleted(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) }, + ObvEngineNotificationNew.observeNewContactDevice(within: NotificationCenter.default) { [weak self] obvContactIdentifier in + self?.processNewContactDevice(obvContactIdentifier: obvContactIdentifier) + }, ]) } - func applicationAppearedOnScreen(forTheFirstTime: Bool) async { - do { - try obvEngine.requestSetOfContactsCertifiedByOwnKeycloakForAllOwnedCryptoIds() - } catch { - os_log("Could not bootstrap list of all contactact certified by same keycloak server as owned identity", log: Self.log, type: .fault) - } - } + func applicationAppearedOnScreen(forTheFirstTime: Bool) async {} } @@ -207,24 +203,29 @@ extension ContactIdentityCoordinator { completion(nil) } } - - private func updateCustomNicknameAndPictureForContact(persistedContactObjectID: NSManagedObjectID, customDisplayName: String?, customPhotoURL: URL?) { - let op1 = UpdateCustomNicknameAndPictureForContactOperation(persistedContactObjectID: persistedContactObjectID, customDisplayName: customDisplayName, customPhotoURL: customPhotoURL) + + private func processUserWantsToUpdatePersonalNoteOnContact(contactIdentifier: ObvContactIdentifier, newText: String?) { + let op1 = UpdatePersonalNoteOnContactOperation(contactIdentifier: contactIdentifier, newText: newText, makeSyncAtomRequest: true, syncAtomRequestDelegate: syncAtomRequestDelegate) let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } - private func processResyncContactIdentityDevicesWithEngineNotification(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) { - let op1 = ResyncContactIdentityDevicesWithEngineOperation(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId, obvEngine: obvEngine) + private func updateCustomNicknameAndPictureForContact(persistedContactObjectID: NSManagedObjectID, customDisplayName: String?, customPhoto: UIImage?) { + let op1 = UpdateCustomNicknameAndPictureForContactOperation( + persistedContactObjectID: persistedContactObjectID, + customDisplayName: customDisplayName, + customPhoto: .image(image: customPhoto), + makeSyncAtomRequest: true, + syncAtomRequestDelegate: syncAtomRequestDelegate) let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } - - - private func processResyncContactIdentityDetailsStatusWithEngineNotification(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) { - let op1 = ResyncContactIdentityDetailsStatusWithEngineOperation(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId, obvEngine: obvEngine) + + + private func processResyncContactIdentityDevicesWithEngineNotification(obvContactIdentifier: ObvContactIdentifier) { + let op1 = ResyncContactIdentityDevicesWithEngineOperation(contactIdentifier: obvContactIdentifier, obvEngine: obvEngine) let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } @@ -434,7 +435,8 @@ extension ContactIdentityCoordinator { private func processNewTrustedContactIdentity(obvContactIdentity: ObvContactIdentity) { let op1 = ProcessNewTrustedContactIdentityOperation(obvContactIdentity: obvContactIdentity) - let composedOp = createCompositionOfOneContextualOperation(op1: op1) + let op2 = ResyncContactIdentityDevicesWithEngineOperation(contactIdentifier: obvContactIdentity.contactIdentifier, obvEngine: obvEngine) + let composedOp = createCompositionOfTwoContextualOperation(op1: op1, op2: op2) self.coordinatorsQueue.addOperation(composedOp) } @@ -444,17 +446,24 @@ extension ContactIdentityCoordinator { let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } - - private func processNewObliviousChannelWithContactDevice(obvContactDevice: ObvContactDevice) { - let op1 = ProcessNewObliviousChannelWithContactDeviceOperation(obvContactDevice: obvContactDevice) + + private func processNewObliviousChannelWithContactDevice(obvContactIdentifier: ObvContactIdentifier) { + let op1 = ResyncContactIdentityDevicesWithEngineOperation(contactIdentifier: obvContactIdentifier, obvEngine: obvEngine) let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } - private func processDeletedObliviousChannelWithContactDevice(obvContactDevice: ObvContactDevice) { - let op1 = ProcessDeletedObliviousChannelWithContactDeviceOperation(obvContactDevice: obvContactDevice) + private func processNewContactDevice(obvContactIdentifier: ObvContactIdentifier) { + let op1 = ResyncContactIdentityDevicesWithEngineOperation(contactIdentifier: obvContactIdentifier, obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } + + + private func processDeletedObliviousChannelWithContactDevice(obvContactIdentifier: ObvContactIdentifier) { + let op1 = ResyncContactIdentityDevicesWithEngineOperation(contactIdentifier: obvContactIdentifier, obvEngine: obvEngine) let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } @@ -494,14 +503,7 @@ extension ContactIdentityCoordinator { self.coordinatorsQueue.addOperation(composedOp) } - - private func processUpdatedSetOfContactsCertifiedByOwnKeycloakNotification(ownedIdentity: ObvCryptoId, contactsCertifiedByOwnKeycloak: Set) { - let op1 = UpdateListOfContactsCertifiedByOwnKeycloakOperation(ownedIdentity: ownedIdentity, contactsCertifiedByOwnKeycloak: contactsCertifiedByOwnKeycloak) - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - self.coordinatorsQueue.addOperation(composedOp) - } - - + private func processOwnedIdentityUnbindingFromKeycloakPerformedNotification(ownedIdentity: ObvCryptoId, result: Result) { let op1 = UpdateListOfContactsCertifiedByOwnKeycloakOperation(ownedIdentity: ownedIdentity, contactsCertifiedByOwnKeycloak: Set([])) let composedOp = createCompositionOfOneContextualOperation(op1: op1) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessContactWasDeletedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessContactWasDeletedOperation.swift index c50f5097..295665cc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessContactWasDeletedOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessContactWasDeletedOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import OlvidUtils import ObvTypes import os.log import ObvUICoreData +import CoreData final class ProcessContactWasDeletedOperation: ContextualOperationWithSpecificReasonForCancel { @@ -35,24 +36,16 @@ final class ProcessContactWasDeletedOperation: ContextualOperationWithSpecificRe super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { - do { - - let contact = try PersistedObvContactIdentity.get(contactCryptoId: contactCryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) - try contact?.deleteAndLockOneToOneDiscussion() - - } catch { - - return cancel(withReason: .coreDataError(error: error)) - - } + let contact = try PersistedObvContactIdentity.get(contactCryptoId: contactCryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) + try contact?.deleteAndLockOneToOneDiscussion() + + } catch { + + return cancel(withReason: .coreDataError(error: error)) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessDeletedObliviousChannelWithContactDeviceOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessDeletedObliviousChannelWithContactDeviceOperation.swift deleted file mode 100644 index 53692611..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessDeletedObliviousChannelWithContactDeviceOperation.swift +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import OlvidUtils -import ObvEngine -import os.log -import ObvUICoreData - - -final class ProcessDeletedObliviousChannelWithContactDeviceOperation: ContextualOperationWithSpecificReasonForCancel { - - let obvContactDevice: ObvContactDevice - - init(obvContactDevice: ObvContactDevice) { - self.obvContactDevice = obvContactDevice - super.init() - } - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - - try PersistedObvContactDevice.delete(contactDeviceIdentifier: obvContactDevice.identifier, - contactCryptoId: obvContactDevice.contactIdentity.cryptoId, - ownedCryptoId: obvContactDevice.contactIdentity.ownedIdentity.cryptoId, - within: obvContext.context) - - } catch { - - return cancel(withReason: .coreDataError(error: error)) - - } - - } - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessNewObliviousChannelWithContactDeviceOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessNewObliviousChannelWithContactDeviceOperation.swift index e918e03d..b7e21abd 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessNewObliviousChannelWithContactDeviceOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessNewObliviousChannelWithContactDeviceOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,41 +27,41 @@ import ObvUICoreData /// When a new channel is created with a contact device: /// - we create a contact device /// - we send the one-to-one discussion shared settings to the contact (well, we notify that it should be sent) -final class ProcessNewObliviousChannelWithContactDeviceOperation: ContextualOperationWithSpecificReasonForCancel { - - let obvContactDevice: ObvContactDevice - - init(obvContactDevice: ObvContactDevice) { - self.obvContactDevice = obvContactDevice - super.init() - } - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - guard let contact = try PersistedObvContactIdentity.get(persisted: obvContactDevice.contactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindContactIdentityInDatabase) - } - - try contact.insert(obvContactDevice) - - } catch { - - return cancel(withReason: .coreDataError(error: error)) - - } - - } - - } - -} +//final class ProcessNewObliviousChannelWithContactDeviceOperation: ContextualOperationWithSpecificReasonForCancel { +// +// let obvContactDevice: ObvContactDevice +// +// init(obvContactDevice: ObvContactDevice) { +// self.obvContactDevice = obvContactDevice +// super.init() +// } +// +// override func main() { +// +// guard let obvContext = self.obvContext else { +// return cancel(withReason: .contextIsNil) +// } +// +// obvContext.performAndWait { +// +// do { +// guard let contact = try PersistedObvContactIdentity.get(persisted: obvContactDevice.contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { +// return cancel(withReason: .couldNotFindContactIdentityInDatabase) +// } +// +// try contact.insert(obvContactDevice) +// +// } catch { +// +// return cancel(withReason: .coreDataError(error: error)) +// +// } +// +// } +// +// } +// +//} enum ProcessNewObliviousChannelWithContactDeviceOperationReasonForCancel: LocalizedErrorWithLogType { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessNewTrustedContactIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessNewTrustedContactIdentityOperation.swift index 72ce5281..7e1036b0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessNewTrustedContactIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessNewTrustedContactIdentityOperation.swift @@ -34,27 +34,49 @@ final class ProcessNewTrustedContactIdentityOperation: ContextualOperationWithSp super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { + let existingPersistedObvContactIdentity = try PersistedObvContactIdentity.get(persisted: obvContactIdentity.contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) - let existingPersistedObvContactIdentity = try PersistedObvContactIdentity.get(persisted: obvContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) - guard existingPersistedObvContactIdentity == nil else { - return - } - _ = try PersistedObvContactIdentity(contactIdentity: obvContactIdentity, within: obvContext.context) - - } catch { - return cancel(withReason: .coreDataError(error: error)) + if let existingPersistedObvContactIdentity { + + try existingPersistedObvContactIdentity.updateContact(with: obvContactIdentity) + + } else { + + let contact = try PersistedObvContactIdentity.createPersistedObvContactIdentity(contactIdentity: obvContactIdentity, within: obvContext.context) + + requestSendingOneToOneDiscussionSharedConfiguration(with: contact, within: obvContext) + } - + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } + + + // We had to create a contact, meaning we had to create/unlock a one2one discussion. In that case, we want to (re)send the discussion shared settings to our contact. + // This allows to make sure those settings are in sync. + private func requestSendingOneToOneDiscussionSharedConfiguration(with contact: PersistedObvContactIdentity, within obvContext: ObvContext) { + do { + // We had to create a contact, meaning we had to create/unlock a one2one discussion. In that case, we want to (re)send the discussion shared settings to our contact. + // This allows to make sure those settings are in sync. + let contactIdentifier = try contact.contactIdentifier + guard let discussionId = try contact.oneToOneDiscussion?.identifier else { return } + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvMessengerInternalNotification.aDiscussionSharedConfigurationIsNeededByContact( + contactIdentifier: contactIdentifier, + discussionId: discussionId) + .postOnDispatchQueue() + } + } catch { + assertionFailure(error.localizedDescription) + } + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessTrustedPhotoOfContactIdentityHasBeenUpdatedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessTrustedPhotoOfContactIdentityHasBeenUpdatedOperation.swift index 7badf11b..507bbd9b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessTrustedPhotoOfContactIdentityHasBeenUpdatedOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ProcessTrustedPhotoOfContactIdentityHasBeenUpdatedOperation.swift @@ -34,24 +34,16 @@ final class ProcessTrustedPhotoOfContactIdentityHasBeenUpdatedOperation: Context super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { return } - persistedContactIdentity.updatePhotoURL(with: obvContactIdentity.trustedIdentityDetails.photoURL) - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - + guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvContactIdentity.contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { return } + persistedContactIdentity.updatePhotoURL(with: obvContactIdentity.trustedIdentityDetails.photoURL) + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ResyncContactIdentityDetailsStatusWithEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ResyncContactIdentityDetailsStatusWithEngineOperation.swift deleted file mode 100644 index 900dc33c..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ResyncContactIdentityDetailsStatusWithEngineOperation.swift +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import OlvidUtils -import os.log -import ObvTypes -import ObvEngine -import ObvUICoreData - - -final class ResyncContactIdentityDetailsStatusWithEngineOperation: ContextualOperationWithSpecificReasonForCancel { - - let ownedCryptoId: ObvCryptoId - let contactCryptoId: ObvCryptoId - let obvEngine: ObvEngine - - private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "ResyncContactIdentityDetailsStatusWithEngineOperation") - - init(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId, obvEngine: ObvEngine) { - self.ownedCryptoId = ownedCryptoId - self.contactCryptoId = contactCryptoId - self.obvEngine = obvEngine - super.init() - } - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - let obvContactIdentity: ObvContactIdentity - do { - obvContactIdentity = try obvEngine.getContactIdentity(with: contactCryptoId, ofOwnedIdentityWith: ownedCryptoId) - } catch { - os_log("While trying to re-sync a persisted contact, we could not find her in the engine", log: Self.log, type: .fault) - return cancel(withReason: .couldNotGetObvContactIdentityFromEngine) - } - - obvContext.performAndWait { - - do { - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedContact) - } - guard let receivedPublishedDetails = obvContactIdentity.publishedIdentityDetails else { return } - if obvContactIdentity.trustedIdentityDetails == receivedPublishedDetails { - persistedContactIdentity.setContactStatus(to: .noNewPublishedDetails) - } else { - persistedContactIdentity.setContactStatus(to: .unseenPublishedDetails) - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - } - - } -} - - - -enum ResyncContactIdentityDetailsStatusWithEngineOperationReasonForCancel: LocalizedErrorWithLogType { - - case coreDataError(error: Error) - case contextIsNil - case couldNotGetObvContactIdentityFromEngine - case couldNotFindPersistedContact - - var logType: OSLogType { - switch self { - case .coreDataError, - .contextIsNil, - .couldNotFindPersistedContact, - .couldNotGetObvContactIdentityFromEngine: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .contextIsNil: - return "Context is nil" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .couldNotFindPersistedContact: - return "Could not find contact" - case .couldNotGetObvContactIdentityFromEngine: - return "Could not get ObvContactIdentity from engine" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ResyncContactIdentityDevicesWithEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ResyncContactIdentityDevicesWithEngineOperation.swift index f57abb4e..8a46c9a2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ResyncContactIdentityDevicesWithEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/ResyncContactIdentityDevicesWithEngineOperation.swift @@ -23,71 +23,69 @@ import os.log import ObvTypes import ObvEngine import ObvUICoreData +import CoreData final class ResyncContactIdentityDevicesWithEngineOperation: ContextualOperationWithSpecificReasonForCancel { - let ownedCryptoId: ObvCryptoId - let contactCryptoId: ObvCryptoId + let contactIdentifier: ObvContactIdentifier let obvEngine: ObvEngine private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "ResyncContactIdentityDevicesWithEngineOperation") - init(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId, obvEngine: ObvEngine) { - self.ownedCryptoId = ownedCryptoId - self.contactCryptoId = contactCryptoId + init(contactIdentifier: ObvContactIdentifier, obvEngine: ObvEngine) { + self.contactIdentifier = contactIdentifier self.obvEngine = obvEngine super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { let engineContactDevices: Set do { - engineContactDevices = try obvEngine.getAllObliviousChannelsEstablishedWithContactIdentity(with: contactCryptoId, ofOwnedIdentyWith: ownedCryptoId) + engineContactDevices = try obvEngine.getAllObvContactDevicesOfContact(with: contactIdentifier) } catch { - os_log("Could not get all Oblivious Channels established with contact. Could not sync with engine.", log: Self.log, type: .fault) - return cancel(withReason: .couldNotGetAllObliviousChannelsEstablishedWithContactIdentity(error: error)) + os_log("Could not get all Oblivious Channels established with contact. Could not sync with engine. This is ok if the contact was just deleted.", log: Self.log, type: .fault) + return cancel(withReason: .couldNotGetContactDevicesFromEngine(error: error)) } - obvContext.performAndWait { + do { + + guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + os_log("The contact cannot be found, it might be added in a few seconds.", log: Self.log, type: .error) + return + } + + var objectIDsOfDevicesToRefreshInViewContext = Set(persistedContactIdentity.devices.map({ $0.objectID })) + + try persistedContactIdentity.synchronizeDevices(with: engineContactDevices) + + objectIDsOfDevicesToRefreshInViewContext.formUnion(Set(persistedContactIdentity.devices.map({ $0.objectID }))) + let objectIdOfContact = persistedContactIdentity.objectID do { - - guard let persistedOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { - os_log("Could not get the persisted owned identity", log: Self.log, type: .fault) - assertionFailure() - return cancel(withReason: .couldNotFindPersistedObvOwnedIdentity) + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + DispatchQueue.main.async { + let devicesInViewContext = ObvStack.shared.viewContext.registeredObjects + .filter { object in + objectIDsOfDevicesToRefreshInViewContext.contains(where: { $0 == object.objectID }) + } + devicesInViewContext.forEach { object in + ObvStack.shared.viewContext.refresh(object, mergeChanges: false) + } + if let contactInViewContext = ObvStack.shared.viewContext.registeredObjects.first(where: { $0.objectID == objectIdOfContact }) { + ObvStack.shared.viewContext.refresh(contactInViewContext, mergeChanges: false) + } + + } } - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(cryptoId: contactCryptoId, ownedIdentity: persistedOwnedIdentity, whereOneToOneStatusIs: .any) else { - os_log("Could not get the persisted obv contact identity", log: Self.log, type: .fault) - assertionFailure() - return cancel(withReason: .couldNotFindPersistedContact) - } - - let localContactDevicesIdentifiers = Set(persistedContactIdentity.devices.map { $0.identifier }) - let missingDevices = engineContactDevices.filter { !localContactDevicesIdentifiers.contains($0.identifier) } - for missingDevice in missingDevices { - try persistedContactIdentity.insert(missingDevice) - } - - let engineContactDeviceIdentifiers = engineContactDevices.map { $0.identifier } - let identifiersOfDevicesToRemove = localContactDevicesIdentifiers.filter { !engineContactDeviceIdentifiers.contains($0) } - for contactDeviceIdentifier in identifiersOfDevicesToRemove { - try PersistedObvContactDevice.delete(contactDeviceIdentifier: contactDeviceIdentifier, contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId, within: obvContext.context) - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) } - + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } @@ -97,7 +95,7 @@ enum ResyncContactIdentityDevicesWithEngineOperationReasonForCancel: LocalizedEr case coreDataError(error: Error) case contextIsNil - case couldNotGetAllObliviousChannelsEstablishedWithContactIdentity(error: Error) + case couldNotGetContactDevicesFromEngine(error: Error) case couldNotFindPersistedObvOwnedIdentity case couldNotFindPersistedContact @@ -106,9 +104,10 @@ enum ResyncContactIdentityDevicesWithEngineOperationReasonForCancel: LocalizedEr case .coreDataError, .contextIsNil, .couldNotFindPersistedObvOwnedIdentity, - .couldNotFindPersistedContact, - .couldNotGetAllObliviousChannelsEstablishedWithContactIdentity: + .couldNotFindPersistedContact: return .fault + case .couldNotGetContactDevicesFromEngine: + return .error } } @@ -118,8 +117,8 @@ enum ResyncContactIdentityDevicesWithEngineOperationReasonForCancel: LocalizedEr return "Context is nil" case .coreDataError(error: let error): return "Core Data error: \(error.localizedDescription)" - case .couldNotGetAllObliviousChannelsEstablishedWithContactIdentity(error: let error): - return "Could not get all oblivious channels established with contact identity: \(error.localizedDescription)" + case .couldNotGetContactDevicesFromEngine(error: let error): + return "Could not get contact devices from engine: \(error.localizedDescription)" case .couldNotFindPersistedObvOwnedIdentity: return "Could not find persisted owned identity" case .couldNotFindPersistedContact: diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateContactsSortOrderOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateContactsSortOrderOperation.swift index 95079467..7389f700 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateContactsSortOrderOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateContactsSortOrderOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,8 @@ import os.log import ObvTypes import OlvidUtils import ObvUICoreData +import CoreData +import ObvSettings final class UpdateContactsSortOrderOperation: ContextualOperationWithSpecificReasonForCancel { @@ -35,39 +37,32 @@ final class UpdateContactsSortOrderOperation: ContextualOperationWithSpecificRea super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { + do { + + // Update the sort order of PersistedObvContactIdentity instances + + let persistedObvContactIdentites = try PersistedObvContactIdentity.getAllContactOfOwnedIdentity(with: ownedCryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) + + for persistedObvContactIdentity in persistedObvContactIdentites { + persistedObvContactIdentity.updateSortOrder(with: newSortOrder) + } + + // Update the sort order of PersistedGroupV2Member instances (some where already updated thanks to the update made to the PersistedObvContactIdentity instances, but not all) + + let persistedGroupV2Members = try PersistedGroupV2Member.getAllPersistedGroupV2MemberOfOwnedIdentity(with: ownedCryptoId, within: obvContext.context) - // Update the sort order of PersistedObvContactIdentity instances - - let persistedObvContactIdentites = try PersistedObvContactIdentity.getAllContactOfOwnedIdentity(with: ownedCryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) - - for persistedObvContactIdentity in persistedObvContactIdentites { - persistedObvContactIdentity.updateSortOrder(with: newSortOrder) - } - - // Update the sort order of PersistedGroupV2Member instances (some where already updated thanks to the update made to the PersistedObvContactIdentity instances, but not all) - - let persistedGroupV2Members = try PersistedGroupV2Member.getAllPersistedGroupV2MemberOfOwnedIdentity(with: ownedCryptoId, within: obvContext.context) - - for persistedGroupV2Member in persistedGroupV2Members { - persistedGroupV2Member.updateNormalizedSortAndSearchKeys(with: newSortOrder) - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) + for persistedGroupV2Member in persistedGroupV2Members { + persistedGroupV2Member.updateNormalizedSortAndSearchKeys(with: newSortOrder) } - ObvMessengerSettings.Interface.contactsSortOrder = newSortOrder + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + + ObvMessengerSettings.Interface.contactsSortOrder = newSortOrder + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateCustomNicknameAndPictureForContactOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateCustomNicknameAndPictureForContactOperation.swift index 28e0674e..3d4e6597 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateCustomNicknameAndPictureForContactOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateCustomNicknameAndPictureForContactOperation.swift @@ -29,34 +29,74 @@ final class UpdateCustomNicknameAndPictureForContactOperation: ContextualOperati let persistedContactObjectID: NSManagedObjectID let customDisplayName: String? - let customPhotoURL: URL? + let customPhoto: PhotoKind + private let makeSyncAtomRequest: Bool + private weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? - init(persistedContactObjectID: NSManagedObjectID, customDisplayName: String?, customPhotoURL: URL?) { + enum PhotoKind { + case url(url: URL?) + case image(image: UIImage?) + } + + init(persistedContactObjectID: NSManagedObjectID, customDisplayName: String?, customPhoto: PhotoKind, makeSyncAtomRequest: Bool, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate?) { self.persistedContactObjectID = persistedContactObjectID self.customDisplayName = customDisplayName - self.customPhotoURL = customPhotoURL + self.customPhoto = customPhoto + self.makeSyncAtomRequest = makeSyncAtomRequest + self.syncAtomRequestDelegate = syncAtomRequestDelegate super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let contact = try PersistedObvContactIdentity.get(objectID: persistedContactObjectID, within: obvContext.context) else { assertionFailure(); return } - try contact.setCustomDisplayName(to: customDisplayName) - contact.setCustomPhotoURL(with: customPhotoURL) - - } catch { - return cancel(withReason: .coreDataError(error: error)) + guard let contact = try PersistedObvContactIdentity.get(objectID: persistedContactObjectID, within: obvContext.context) else { assertionFailure(); return } + let customDisplayNameWasUpdated = try contact.setCustomDisplayName(to: customDisplayName) + switch customPhoto { + case .url(let url): + contact.setCustomPhotoURL(with: url) + case .image(let image): + try contact.setCustomPhoto(with: image) } + // If the custom display name was updated, we propagate the change to our other owned devices + + if makeSyncAtomRequest && customDisplayNameWasUpdated { + if let ownedCryptoId = contact.ownedIdentity?.cryptoId, let syncAtomRequestDelegate = self.syncAtomRequestDelegate { + let contactCryptoId = contact.cryptoId + let syncAtom = ObvSyncAtom.contactNickname(contactCryptoId: contactCryptoId, contactNickname: customDisplayName) + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + Task.detached { + await syncAtomRequestDelegate.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } + } + } else { + assertionFailure("Could not propagate the new nickname to our other owned devices") + } + } + + // If the contact is updated, we want to refresh it in the view context to update the UI + + if contact.isUpdated { + do { + let contactObjectID = contact.objectID + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + viewContext.perform { + guard let contactInViewContext = viewContext.registeredObjects.first(where: { $0.objectID == contactObjectID }) else { return } + viewContext.refresh(contactInViewContext, mergeChanges: false) + } + } + } catch { + assertionFailure(error.localizedDescription) + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateListOfContactsCertifiedByOwnKeycloakOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateListOfContactsCertifiedByOwnKeycloakOperation.swift index 762221ef..c412afc9 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateListOfContactsCertifiedByOwnKeycloakOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdateListOfContactsCertifiedByOwnKeycloakOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import OlvidUtils import ObvTypes import os.log import ObvUICoreData +import CoreData /// This operation is typically called when binding an owned identity to a keycloak server. In that case, the engine will return a list of all the contacts that are bound to the same keycloak server. @@ -39,33 +40,24 @@ final class UpdateListOfContactsCertifiedByOwnKeycloakOperation: ContextualOpera private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: UpdateListOfContactsCertifiedByOwnKeycloakOperation.self)) - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + // We first mark *all* the contacts of the owned identity as *not* keycloak managed + + do { + try PersistedObvContactIdentity.markAllContactOfOwnedIdentityAsNotCertifiedBySameKeycloak(ownedCryptoId: ownedIdentity, within: obvContext.context) - // We first mark *all* the contacts of the owned identity as *not* keycloak managed + // We then fetch all the contacts corresponding to the contact Id's received in the new list and mark the corresponding + // `PersistedObvContactIdentity` instances as certified by the same keycloak - do { - try PersistedObvContactIdentity.markAllContactOfOwnedIdentityAsNotCertifiedBySameKeycloak(ownedCryptoId: ownedIdentity, within: obvContext.context) - - // We then fetch all the contacts corresponding to the contact Id's received in the new list and mark the corresponding - // `PersistedObvContactIdentity` instances as certified by the same keycloak - - for contactCryptoId in contactsCertifiedByOwnKeycloak { - let contact = try PersistedObvContactIdentity.get(contactCryptoId: contactCryptoId, ownedIdentityCryptoId: ownedIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) - contact?.markAsCertifiedByOwnKeycloak() - } - - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + for contactCryptoId in contactsCertifiedByOwnKeycloak { + let contact = try PersistedObvContactIdentity.get(contactCryptoId: contactCryptoId, ownedIdentityCryptoId: ownedIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) + contact?.markAsCertifiedByOwnKeycloak() } - + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersistedContactIdentityStatusWithInfoFromEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersistedContactIdentityStatusWithInfoFromEngineOperation.swift index d5e76926..ce8500d4 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersistedContactIdentityStatusWithInfoFromEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersistedContactIdentityStatusWithInfoFromEngineOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import OlvidUtils import ObvEngine import os.log import ObvUICoreData +import CoreData final class UpdatePersistedContactIdentityStatusWithInfoFromEngineOperation: ContextualOperationWithSpecificReasonForCancel { @@ -36,47 +37,41 @@ final class UpdatePersistedContactIdentityStatusWithInfoFromEngineOperation: Con super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindContactIdentityInDatabase) - } - - if trustedIdentityDetailsWereUpdated { - persistedContactIdentity.setContactStatus(to: .noNewPublishedDetails) - } - - if publishedIdentityDetailsWereUpdated { - assert(obvContactIdentity.publishedIdentityDetails != nil) - if let receivedPublishedDetails = obvContactIdentity.publishedIdentityDetails { - let identicalPhotos: Bool - if obvContactIdentity.trustedIdentityDetails.photoURL == receivedPublishedDetails.photoURL { - identicalPhotos = true - } else if let trustedPhotoURL = obvContactIdentity.trustedIdentityDetails.photoURL, let newPhotoURL = receivedPublishedDetails.photoURL { - identicalPhotos = FileManager.default.contentsEqual(atPath: trustedPhotoURL.path, andPath: newPhotoURL.path) - } else { - identicalPhotos = false - } - if obvContactIdentity.trustedIdentityDetails.coreDetails == receivedPublishedDetails.coreDetails && identicalPhotos { - persistedContactIdentity.setContactStatus(to: .noNewPublishedDetails) - } else { - persistedContactIdentity.setContactStatus(to: .unseenPublishedDetails) - } + do { + + guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvContactIdentity.contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContactIdentityInDatabase) + } + + if trustedIdentityDetailsWereUpdated { + persistedContactIdentity.setContactStatus(to: .noNewPublishedDetails) + } + + if publishedIdentityDetailsWereUpdated { + assert(obvContactIdentity.publishedIdentityDetails != nil) + if let receivedPublishedDetails = obvContactIdentity.publishedIdentityDetails { + let identicalPhotos: Bool + if obvContactIdentity.trustedIdentityDetails.photoURL == receivedPublishedDetails.photoURL { + identicalPhotos = true + } else if let trustedPhotoURL = obvContactIdentity.trustedIdentityDetails.photoURL, let newPhotoURL = receivedPublishedDetails.photoURL { + identicalPhotos = FileManager.default.contentsEqual(atPath: trustedPhotoURL.path, andPath: newPhotoURL.path) + } else { + identicalPhotos = false + } + if obvContactIdentity.trustedIdentityDetails.coreDetails == receivedPublishedDetails.coreDetails && identicalPhotos { + persistedContactIdentity.setContactStatus(to: .noNewPublishedDetails) + } else { + persistedContactIdentity.setContactStatus(to: .unseenPublishedDetails) } } - - } catch { - return cancel(withReason: .coreDataError(error: error)) } + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersistedContactIdentityWithObvContactIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersistedContactIdentityWithObvContactIdentityOperation.swift index c9b67f32..d79e0f0c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersistedContactIdentityWithObvContactIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersistedContactIdentityWithObvContactIdentityOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import OlvidUtils import os.log import ObvEngine import ObvUICoreData +import CoreData final class UpdatePersistedContactIdentityWithObvContactIdentityOperation: ContextualOperationWithSpecificReasonForCancel { @@ -33,30 +34,22 @@ final class UpdatePersistedContactIdentityWithObvContactIdentityOperation: Conte super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { + + guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvContactIdentity.contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContactIdentityInDatabase) + } do { - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindContactIdentityInDatabase) - } - - do { - try persistedContactIdentity.updateContact(with: obvContactIdentity) - } catch { - return cancel(withReason: .failedToUpdatePersistedObvContactIdentity(error: error)) - } - + try persistedContactIdentity.updateContact(with: obvContactIdentity) } catch { - return cancel(withReason: .coreDataError(error: error)) + return cancel(withReason: .failedToUpdatePersistedObvContactIdentity(error: error)) } - + + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersonalNoteOnContactOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersonalNoteOnContactOperation.swift new file mode 100644 index 00000000..34ff5498 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/UpdatePersonalNoteOnContactOperation.swift @@ -0,0 +1,98 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import CoreData +import os.log +import ObvEngine +import ObvUICoreData +import ObvTypes + + +final class UpdatePersonalNoteOnContactOperation: ContextualOperationWithSpecificReasonForCancel { + + private let contactIdentifier: ObvContactIdentifier + private let newText: String? + + private let makeSyncAtomRequest: Bool + private weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? + + init(contactIdentifier: ObvContactIdentifier, newText: String?, makeSyncAtomRequest: Bool, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate?) { + self.contactIdentifier = contactIdentifier + self.newText = newText + self.makeSyncAtomRequest = makeSyncAtomRequest + self.syncAtomRequestDelegate = syncAtomRequestDelegate + super.init() + } + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: contactIdentifier.ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + let noteHadToBeUpdatedInDatabase = try ownedIdentity.setPersonalNoteOnContact(contactCryptoId: contactIdentifier.contactCryptoId, newText: newText) + + if makeSyncAtomRequest && noteHadToBeUpdatedInDatabase { + assert(self.syncAtomRequestDelegate != nil) + if let syncAtomRequestDelegate = self.syncAtomRequestDelegate { + let ownedCryptoId = self.contactIdentifier.ownedCryptoId + let syncAtom = ObvSyncAtom.contactPersonalNote(contactCryptoId: self.contactIdentifier.contactCryptoId, note: newText) + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + Task.detached { + await syncAtomRequestDelegate.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } + } + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindOwnedIdentity + + var logType: OSLogType { + return .fault + } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } + } + + } + + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/processUserDidSeeNewDetailsOfContactOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/processUserDidSeeNewDetailsOfContactOperation.swift index 62bdf5e9..f9776735 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/processUserDidSeeNewDetailsOfContactOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ContactIdentityCoordinator/Operations/processUserDidSeeNewDetailsOfContactOperation.swift @@ -23,6 +23,7 @@ import os.log import ObvTypes import ObvEngine import ObvUICoreData +import CoreData final class processUserDidSeeNewDetailsOfContactOperation: ContextualOperationWithSpecificReasonForCancel { @@ -36,31 +37,23 @@ final class processUserDidSeeNewDetailsOfContactOperation: ContextualOperationWi super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - do { - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(contactCryptoId: contactCryptoId, - ownedIdentityCryptoId: ownedCryptoId, - whereOneToOneStatusIs: .any, - within: obvContext.context) - else { - return - } - guard persistedContactIdentity.status == .unseenPublishedDetails else { return } - persistedContactIdentity.setContactStatus(to: .seenPublishedDetails) - - } catch { - return cancel(withReason: .coreDataError(error: error)) + guard let persistedContactIdentity = try PersistedObvContactIdentity.get(contactCryptoId: contactCryptoId, + ownedIdentityCryptoId: ownedCryptoId, + whereOneToOneStatusIs: .any, + within: obvContext.context) + else { + return } - + guard persistedContactIdentity.status == .unseenPublishedDetails else { return } + persistedContactIdentity.setContactStatus(to: .seenPublishedDetails) + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/CoordinatorsDelegates/ObvSyncAtomRequestDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/CoordinatorsDelegates/ObvSyncAtomRequestDelegate.swift new file mode 100644 index 00000000..dfddbd5a --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/CoordinatorsDelegates/ObvSyncAtomRequestDelegate.swift @@ -0,0 +1,29 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes + + +protocol ObvSyncAtomRequestDelegate: AnyObject { + + func requestPropagationToOtherOwnedDevices(of syncAtom: ObvSyncAtom, for ownedCryptoId: ObvCryptoId) async + func deleteDialog(with uuid: UUID) throws + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/MessagesKeptForLaterManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/MessagesKeptForLaterManager.swift new file mode 100644 index 00000000..13a5a25d --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/MessagesKeptForLaterManager.swift @@ -0,0 +1,104 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import ObvUICoreData + + +/// This manager is used by the `PersistedDiscussionsUpdatesCoordinator`. It is used when a receiving an `ObvMessage` or an `ObvOwnedMessage` "too early". This is for example the case +/// when a contact creates a group while our second device is offline. Our first device accepts the invitation and exchanges a few messages. When our second device comes back online, it first receive the protocol +/// messages allowing to create the group. As a consequence, the engine starts downloading the group blob. This can take a "long" time. In the meantime, the app receives all the messages, discussion shared settings, etc. +/// for that group. The issue: the group does not exist yet at that time, it has yet to be created. This is where this manager comes into play: we use it to store the `ObvMessage` and `ObvOwnedMessage` that +/// must wait until the group is created. When it is created, we "replay" all the messages. +/// Note that, although we keep those messages in memory only, this process is resilient. The reason is that we do **not** call the engine completion handler when we put an `Obv(Owned)Message` to wait and thus, +/// the engine does not mark it for deletion (it keeps it in the inbox). If the app is killed, the engine will replay the exact sames messages during bootstrap. +/// When replaying a message, we do call the completion handler in the end. +actor MessagesKeptForLaterManager { + + enum KindOfMessageToKeepForLater { + case obvMessageForGroupV2(groupIdentifier: GroupV2Identifier, obvMessage: ObvMessage, completionHandler: (Set) -> Void) + case obvOwnedMessageForGroupV2(groupIdentifier: GroupV2Identifier, obvOwnedMessage: ObvOwnedMessage, completionHandler: (Set) -> Void) + case obvMessageExpectingContact(contactCryptoId: ObvCryptoId, obvMessage: ObvMessage, completionHandler: (Set) -> Void) + case obvOwnedMessageExpectingContact(contactCryptoId: ObvCryptoId, obvOwnedMessage: ObvOwnedMessage, completionHandler: (Set) -> Void) + } + + private var keptGroupV2MessagesForOwnedCryptoId = [ObvCryptoId: [GroupV2Identifier: [KindOfMessageToKeepForLater]]]() + private var keptMessagesExpectingContactForOwnedCryptoId = [ObvCryptoId: [ObvCryptoId: [KindOfMessageToKeepForLater]]]() + + // Keep for later PersistedMessageReceived for Groups V2 + + func keepForLater(_ kind: KindOfMessageToKeepForLater) { + + switch kind { + + case .obvMessageForGroupV2(let groupIdentifier, let obvMessage, _): + let ownedCryptoId = obvMessage.fromContactIdentity.ownedCryptoId + var keptGroupV2Messages = keptGroupV2MessagesForOwnedCryptoId[ownedCryptoId, default: [GroupV2Identifier : [KindOfMessageToKeepForLater]]()] + var keptMessages = keptGroupV2Messages[groupIdentifier, default: [KindOfMessageToKeepForLater]()] + keptMessages.append(kind) + keptGroupV2Messages[groupIdentifier] = keptMessages + keptGroupV2MessagesForOwnedCryptoId[ownedCryptoId] = keptGroupV2Messages + + case .obvOwnedMessageForGroupV2(groupIdentifier: let groupIdentifier, obvOwnedMessage: let obvOwnedMessage, _): + let ownedCryptoId = obvOwnedMessage.ownedCryptoId + var keptGroupV2Messages = keptGroupV2MessagesForOwnedCryptoId[ownedCryptoId, default: [GroupV2Identifier : [KindOfMessageToKeepForLater]]()] + var keptMessages = keptGroupV2Messages[groupIdentifier, default: [KindOfMessageToKeepForLater]()] + keptMessages.append(kind) + keptGroupV2Messages[groupIdentifier] = keptMessages + keptGroupV2MessagesForOwnedCryptoId[ownedCryptoId] = keptGroupV2Messages + + case .obvMessageExpectingContact(contactCryptoId: let contactCryptoId, obvMessage: let obvMessage, completionHandler: _): + let ownedCryptoId = obvMessage.fromContactIdentity.ownedCryptoId + var keptMessagesExpectingContact = keptMessagesExpectingContactForOwnedCryptoId[ownedCryptoId, default: [ObvCryptoId : [KindOfMessageToKeepForLater]]()] + var keptMessages = keptMessagesExpectingContact[contactCryptoId, default: [KindOfMessageToKeepForLater]()] + keptMessages.append(kind) + keptMessagesExpectingContact[contactCryptoId] = keptMessages + keptMessagesExpectingContactForOwnedCryptoId[ownedCryptoId] = keptMessagesExpectingContact + + case .obvOwnedMessageExpectingContact(contactCryptoId: let contactCryptoId, obvOwnedMessage: let obvOwnedMessage, completionHandler: _): + let ownedCryptoId = obvOwnedMessage.ownedCryptoId + var keptMessagesExpectingContact = keptMessagesExpectingContactForOwnedCryptoId[ownedCryptoId, default: [ObvCryptoId : [KindOfMessageToKeepForLater]]()] + var keptMessages = keptMessagesExpectingContact[contactCryptoId, default: [KindOfMessageToKeepForLater]()] + keptMessages.append(kind) + keptMessagesExpectingContact[contactCryptoId] = keptMessages + keptMessagesExpectingContactForOwnedCryptoId[ownedCryptoId] = keptMessagesExpectingContact + + } + + } + + + func getGroupV2MessagesKeptForLaterForOwnedCryptoId(_ ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV2Identifier) -> [KindOfMessageToKeepForLater] { + guard var keptGroupV2Messages = keptGroupV2MessagesForOwnedCryptoId[ownedCryptoId] else { return [] } + let keptForLater = keptGroupV2Messages.removeValue(forKey: groupIdentifier) ?? [KindOfMessageToKeepForLater]() + keptGroupV2MessagesForOwnedCryptoId[ownedCryptoId] = keptGroupV2Messages + return keptForLater + } + + + func getMessagesExpectingContactForOwnedCryptoId(_ ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) -> [KindOfMessageToKeepForLater] { + guard var keptMessagesExpectingContact = keptMessagesExpectingContactForOwnedCryptoId[ownedCryptoId] else { return [] } + guard let keptForLater = keptMessagesExpectingContact.removeValue(forKey: contactCryptoId) else { return [] } + keptMessagesExpectingContactForOwnedCryptoId[ownedCryptoId] = keptMessagesExpectingContact + return keptForLater + } + + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/ObvOwnedIdentityCoordinator.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/ObvOwnedIdentityCoordinator.swift index e01c8179..d4489c6f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/ObvOwnedIdentityCoordinator.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/ObvOwnedIdentityCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -34,7 +34,8 @@ final class ObvOwnedIdentityCoordinator { private var observationTokens = [NSObjectProtocol]() private let coordinatorsQueue: OperationQueue private let queueForComposedOperations: OperationQueue - + weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? + init(obvEngine: ObvEngine, coordinatorsQueue: OperationQueue, queueForComposedOperations: OperationQueue) { self.obvEngine = obvEngine self.coordinatorsQueue = coordinatorsQueue @@ -61,7 +62,7 @@ final class ObvOwnedIdentityCoordinator { self?.ownedIdentityWasReactivated(ownedCryptoId: ownedCryptoId) }, ObvEngineNotificationNew.observeNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(within: NotificationCenter.default) { [weak self] (ownedIdentity, apiKeyStatus, apiPermissions, apiKeyExpirationDate) in - self?.processNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentityNotification(ownedIdentity: ownedIdentity, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpirationDate.value) + self?.processNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentityNotification(ownedIdentity: ownedIdentity, apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpirationDate) }, ObvEngineNotificationNew.observePublishedPhotoOfOwnedIdentityHasBeenUpdated(within: NotificationCenter.default) { [weak self] ownedIdentity in self?.processOwnedIdentityPhotoHasBeenUpdated(ownedIdentity: ownedIdentity) @@ -72,6 +73,24 @@ final class ObvOwnedIdentityCoordinator { ObvEngineNotificationNew.observeOwnedIdentityWasDeleted(within: NotificationCenter.default) { [weak self] in self?.processOwnedIdentityWasDeleted() }, + ObvEngineNotificationNew.observeKeycloakSynchronizationRequired(within: NotificationCenter.default) { [weak self] ownedCryptoId in + Task { [weak self] in await self?.processKeycloakSynchronizationRequired(ownedCryptoId: ownedCryptoId) } + }, + ObvEngineNotificationNew.observeDeletedObliviousChannelWithRemoteOwnedDevice(within: NotificationCenter.default) { [weak self] in + self?.syncPersistedObvOwnedDevicesWithEngine() + }, + ObvEngineNotificationNew.observeNewConfirmedObliviousChannelWithRemoteOwnedDevice(within: NotificationCenter.default) { [weak self] in + self?.syncPersistedObvOwnedDevicesWithEngine() + }, + ObvEngineNotificationNew.observeNewRemoteOwnedDevice(within: NotificationCenter.default) { [weak self] in + self?.syncPersistedObvOwnedDevicesWithEngine() + }, + ObvEngineNotificationNew.observeAnOwnedDeviceWasUpdated(within: NotificationCenter.default) { [weak self] ownedCryptoId in + self?.syncPersistedObvOwnedDevicesWithEngine() + }, + ObvEngineNotificationNew.observeAnOwnedDeviceWasDeleted(within: NotificationCenter.default) { [weak self] ownedCryptoId in + self?.syncPersistedObvOwnedDevicesWithEngine() + }, ]) // Internal Notifications @@ -80,8 +99,10 @@ final class ObvOwnedIdentityCoordinator { ObvMessengerCoreDataNotification.observeNewPersistedObvOwnedIdentity { [weak self] (ownedCryptoId, isActive) in self?.processNewPersistedObvOwnedIdentity(ownedCryptoId: ownedCryptoId, isActive: isActive) }, - ObvMessengerInternalNotification.observeUserWantsToBindOwnedIdentityToKeycloak { [weak self] (ownedCryptoId, obvKeycloakState, keycloakUserId, completionHandler) in - self?.processUserWantsToBindOwnedIdentityToKeycloakNotification(ownedCryptoId: ownedCryptoId, obvKeycloakState: obvKeycloakState, keycloakUserId: keycloakUserId, completionHandler: completionHandler) + ObvMessengerInternalNotification.observeUserWantsToBindOwnedIdentityToKeycloak { (ownedCryptoId, obvKeycloakState, keycloakUserId, completionHandler) in + Task { [weak self] in + await self?.processUserWantsToBindOwnedIdentityToKeycloakNotification(ownedCryptoId: ownedCryptoId, obvKeycloakState: obvKeycloakState, keycloakUserId: keycloakUserId, completionHandler: completionHandler) + } }, ObvMessengerInternalNotification.observeUserWantsToUnbindOwnedIdentityFromKeycloak { (ownedCryptoId, completionHandler) in Task { [weak self] in await self?.processUserWantsToUnbindOwnedIdentityFromKeycloakNotification(ownedCryptoId: ownedCryptoId, completion: completionHandler) } @@ -95,8 +116,8 @@ final class ObvOwnedIdentityCoordinator { ObvMessengerInternalNotification.observeUserWantsToUnhideOwnedIdentity { [weak self] ownedCryptoId in self?.processUserWantsToUnhideOwnedIdentity(ownedCryptoId: ownedCryptoId) }, - ObvMessengerInternalNotification.observeUserWantsToDeleteOwnedIdentityAndHasConfirmed { [weak self] (ownedCryptoId, notifyContacts) in - self?.processUserWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: ownedCryptoId, notifyContacts: notifyContacts) + ObvMessengerInternalNotification.observeUserWantsToDeleteOwnedIdentityAndHasConfirmed { [weak self] ownedCryptoId, globalOwnedIdentityDeletion in + self?.processUserWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: ownedCryptoId, globalOwnedIdentityDeletion: globalOwnedIdentityDeletion) }, ObvMessengerInternalNotification.observeRecomputeRecomputeBadgeCountForDiscussionsTabForAllOwnedIdentities { [weak self] in self?.recomputeBadgeCountsForAllOwnedIdentities() @@ -104,6 +125,12 @@ final class ObvOwnedIdentityCoordinator { ObvMessengerInternalNotification.observeUserWantsToUpdateOwnedCustomDisplayName { [weak self] ownedCryptoId, newCustomDisplayName in self?.updateOwnedNickname(ownedCryptoId: ownedCryptoId, newCustomDisplayName: newCustomDisplayName) }, + ObvMessengerInternalNotification.observeSingleOwnedIdentityFlowViewControllerDidAppear { [weak self] ownedCryptoId in + Task { [weak self] in await self?.processSingleOwnedIdentityFlowViewControllerDidAppear(ownedCryptoId: ownedCryptoId) } + }, + ObvMessengerInternalNotification.observeAllPersistedInvitationCanBeMarkedAsOld { ownedCryptoId in + Task { [weak self] in await self?.processAllPersistedInvitationCanBeMarkedAsOld(ownedCryptoId: ownedCryptoId) } + }, ]) } @@ -111,6 +138,7 @@ final class ObvOwnedIdentityCoordinator { func applicationAppearedOnScreen(forTheFirstTime: Bool) async { if forTheFirstTime { recomputeBadgeCountsForAllOwnedIdentities() + nameCurrentDeviceWithoutSpecifiedName() } } @@ -119,8 +147,26 @@ final class ObvOwnedIdentityCoordinator { extension ObvOwnedIdentityCoordinator { + /// When the `SingleOwnedIdentityFlowViewController` is presented to the user, we want to refresh the list of devices. + /// To do so, we always perform an owned device discovery. + private func processSingleOwnedIdentityFlowViewControllerDidAppear(ownedCryptoId: ObvCryptoId) async { + do { + try await obvEngine.performOwnedDeviceDiscovery(ownedCryptoId: ownedCryptoId) + } catch { + assertionFailure(error.localizedDescription) + } + } + + + private func processAllPersistedInvitationCanBeMarkedAsOld(ownedCryptoId: ObvCryptoId) async { + let op1 = MarkAllPersistedInvitationAsOldOperation(ownedCryptoId: ownedCryptoId) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } + + private func updateOwnedNickname(ownedCryptoId: ObvCryptoId, newCustomDisplayName: String?) { - let op1 = UpdateOwnedCustomDisplayNameOperation(ownedCryptoId: ownedCryptoId, newCustomDisplayName: newCustomDisplayName) + let op1 = UpdateOwnedCustomDisplayNameOperation(ownedCryptoId: ownedCryptoId, newCustomDisplayName: newCustomDisplayName, makeSyncAtomRequest: true, syncAtomRequestDelegate: syncAtomRequestDelegate) let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } @@ -133,8 +179,15 @@ extension ObvOwnedIdentityCoordinator { } - private func processUserWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: ObvCryptoId, notifyContacts: Bool) { - let op1 = DeleteOwnedIdentityOperation(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine, notifyContacts: notifyContacts, delegate: self) + private func nameCurrentDeviceWithoutSpecifiedName() { + let op1 = NameCurrentDeviceWithoutSpecifiedNameOperation(obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } + + + private func processUserWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: ObvCryptoId, globalOwnedIdentityDeletion: Bool) { + let op1 = DeleteOwnedIdentityOperation(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine, globalOwnedIdentityDeletion: globalOwnedIdentityDeletion, delegate: self) let composedOp = createCompositionOfOneContextualOperation(op1: op1) composedOp.queuePriority = .veryHigh self.coordinatorsQueue.addOperation(composedOp) @@ -176,22 +229,10 @@ extension ObvOwnedIdentityCoordinator { private func processNewPersistedObvOwnedIdentity(ownedCryptoId: ObvCryptoId, isActive: Bool) { - Task { try? await obvEngine.downloadMessagesAndConnectWebsockets() } Task { - if isActive { - // If the owned identity is active, we want to kick other devices on next register to push notifications. - // This works because: - // Case 1: the owned identity is new, created on this device, and the kick does nothing - // Case 2: the owned identity was restored from a backup, and we *do* want to kick other devices - await ObvPushNotificationManager.shared.doKickOtherDevicesOnNextRegister() - } - await ObvPushNotificationManager.shared.tryToRegisterToPushNotifications() - // When a new owned identity is created, we request an update of the owned identity capabilities - do { - try obvEngine.setCapabilitiesOfCurrentDeviceForAllOwnedIdentities(ObvMessengerConstants.supportedObvCapabilities) - } catch { - assertionFailure("Could not set capabilities") - } + await ObvPushNotificationManager.shared.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() + try? await obvEngine.downloadMessagesAndConnectWebsockets() + try? obvEngine.setCapabilitiesOfCurrentDeviceForAllOwnedIdentities(ObvMessengerConstants.supportedObvCapabilities) } } @@ -203,6 +244,14 @@ extension ObvOwnedIdentityCoordinator { } + /// Called whenever we receive a notification indicating that a secure channel has been deleted/confirmed with a remote owned device. + private func syncPersistedObvOwnedDevicesWithEngine() { + let op1 = SyncPersistedObvOwnedDevicesWithEngineOperation(obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } + + private func ownedIdentityWasReactivated(ownedCryptoId: ObvCryptoId) { let op1 = UpdateOwnedIdentityAsItWasReactivatedOperation(ownedCryptoId: ownedCryptoId) let composedOp = createCompositionOfOneContextualOperation(op1: op1) @@ -246,44 +295,47 @@ extension ObvOwnedIdentityCoordinator { } - private func processUserWantsToBindOwnedIdentityToKeycloakNotification(ownedCryptoId: ObvCryptoId, obvKeycloakState: ObvKeycloakState, keycloakUserId: String, completionHandler: @escaping (Bool) -> Void) { + private func processKeycloakSynchronizationRequired(ownedCryptoId: ObvCryptoId) async { do { - try obvEngine.bindOwnedIdentityToKeycloak(ownedCryptoId: ownedCryptoId, keycloakState: obvKeycloakState, keycloakUserId: keycloakUserId) { result in - DispatchQueue.main.async { - Task { - assert(Thread.isMainThread) - switch result { - case .failure(let error): - os_log("Engine failed to bind owned identity to keycloak server: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - completionHandler(false) - return - case .success: - await KeycloakManagerSingleton.shared.registerKeycloakManagedOwnedIdentity(ownedCryptoId: ownedCryptoId, firstKeycloakBinding: true) - do { - try await KeycloakManagerSingleton.shared.uploadOwnIdentity(ownedCryptoId: ownedCryptoId) - } catch let error as KeycloakManager.UploadOwnedIdentityError { - os_log("Could not upload owned identity to the Keycloak server: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - completionHandler(false) - return - } catch { - os_log("Could not upload owned identity to the Keycloak server: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure("Unexpected error") - completionHandler(false) - return - } - completionHandler(true) - return - } - } - } - } + try await KeycloakManagerSingleton.shared.syncAllManagedIdentities() + } catch { + assertionFailure(error.localizedDescription) + } + } + + + private func processUserWantsToBindOwnedIdentityToKeycloakNotification(ownedCryptoId: ObvCryptoId, obvKeycloakState: ObvKeycloakState, keycloakUserId: String, completionHandler: @escaping (Bool) -> Void) async { + + do { + try await obvEngine.bindOwnedIdentityToKeycloak(ownedCryptoId: ownedCryptoId, keycloakState: obvKeycloakState, keycloakUserId: keycloakUserId) } catch { os_log("The call to bindOwnedIdentityToKeycloak failed: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - completionHandler(false) assertionFailure() + completionHandler(false) + return } + await KeycloakManagerSingleton.shared.registerKeycloakManagedOwnedIdentity(ownedCryptoId: ownedCryptoId, firstKeycloakBinding: true) + + do { + try await KeycloakManagerSingleton.shared.uploadOwnIdentity(ownedCryptoId: ownedCryptoId) + } catch let error as KeycloakManager.UploadOwnedIdentityError { + os_log("Could not upload owned identity to the Keycloak server: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + completionHandler(false) + return + } catch { + os_log("Could not upload owned identity to the Keycloak server: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure("Unexpected error") + completionHandler(false) + return + } + + completionHandler(true) + + // Last, make sure we always try to perform a sync + + try? await KeycloakManagerSingleton.shared.syncAllManagedIdentities() + } @@ -303,8 +355,8 @@ extension ObvOwnedIdentityCoordinator { extension ObvOwnedIdentityCoordinator: DeleteOwnedIdentityOperationDelegate { - func deleteHiddenOwnedIdentityAsTheLastVisibleOwnedIdentityIsBeingDeleted(hiddenOwnedCryptoId: ObvCryptoId, notifyContacts: Bool) { - processUserWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: hiddenOwnedCryptoId, notifyContacts: notifyContacts) + func deleteHiddenOwnedIdentityAsTheLastVisibleOwnedIdentityIsBeingDeleted(hiddenOwnedCryptoId: ObvCryptoId, globalOwnedIdentityDeletion: Bool) { + processUserWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: hiddenOwnedCryptoId, globalOwnedIdentityDeletion: globalOwnedIdentityDeletion) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/DeleteOwnedIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/DeleteOwnedIdentityOperation.swift index 9a5d4116..fea1478b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/DeleteOwnedIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/DeleteOwnedIdentityOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,10 +24,11 @@ import os.log import ObvTypes import ObvEngine import ObvUICoreData +import CoreData protocol DeleteOwnedIdentityOperationDelegate: AnyObject { - func deleteHiddenOwnedIdentityAsTheLastVisibleOwnedIdentityIsBeingDeleted(hiddenOwnedCryptoId: ObvCryptoId, notifyContacts: Bool) + func deleteHiddenOwnedIdentityAsTheLastVisibleOwnedIdentityIsBeingDeleted(hiddenOwnedCryptoId: ObvCryptoId, globalOwnedIdentityDeletion: Bool) } @@ -35,54 +36,57 @@ final class DeleteOwnedIdentityOperation: ContextualOperationWithSpecificReasonF private let ownedCryptoId: ObvCryptoId private let obvEngine: ObvEngine - private let notifyContacts: Bool + private let globalOwnedIdentityDeletion: Bool private weak var delegate: DeleteOwnedIdentityOperationDelegate? - init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine, notifyContacts: Bool, delegate: DeleteOwnedIdentityOperationDelegate) { + init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine, globalOwnedIdentityDeletion: Bool, delegate: DeleteOwnedIdentityOperationDelegate) { self.ownedCryptoId = ownedCryptoId self.obvEngine = obvEngine - self.notifyContacts = notifyContacts + self.globalOwnedIdentityDeletion = globalOwnedIdentityDeletion self.delegate = delegate super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - guard let ownedIdentityToDelete = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } - - // If the owned identity to delete is the last unhidden owned identity, we also delete all hidden identities - - let hiddenCryptoIdsToDelete: [ObvCryptoId] - if try ownedIdentityToDelete.isLastUnhiddenOwnedIdentity { - hiddenCryptoIdsToDelete = try PersistedObvOwnedIdentity.getAllHiddenOwnedIdentities(within: obvContext.context).map({ $0.cryptoId }) - } else { - hiddenCryptoIdsToDelete = [] - } + do { + guard let ownedIdentityToDelete = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } + + // If the owned identity to delete is the last unhidden owned identity, we also delete all hidden identities + + let hiddenCryptoIdsToDelete: [ObvCryptoId] + if try ownedIdentityToDelete.isLastUnhiddenOwnedIdentity { + hiddenCryptoIdsToDelete = try PersistedObvOwnedIdentity.getAllHiddenOwnedIdentities(within: obvContext.context).map({ $0.cryptoId }) + } else { + hiddenCryptoIdsToDelete = [] + } + + if !hiddenCryptoIdsToDelete.isEmpty { - if !hiddenCryptoIdsToDelete.isEmpty { - - // If we reach this point, we have hidden profiles to delete. To do so, we request the deletion to our delegate - assert(delegate != nil) - for hiddenCryptoIdToDelete in hiddenCryptoIdsToDelete { - delegate?.deleteHiddenOwnedIdentityAsTheLastVisibleOwnedIdentityIsBeingDeleted(hiddenOwnedCryptoId: hiddenCryptoIdToDelete, notifyContacts: notifyContacts) - } - + // If we reach this point, we have hidden profiles to delete. To do so, we request the deletion to our delegate + assert(delegate != nil) + for hiddenCryptoIdToDelete in hiddenCryptoIdsToDelete { + delegate?.deleteHiddenOwnedIdentityAsTheLastVisibleOwnedIdentityIsBeingDeleted(hiddenOwnedCryptoId: hiddenCryptoIdToDelete, globalOwnedIdentityDeletion: globalOwnedIdentityDeletion) } - // We can perform the request deletion of the ownedCryptoId - - try obvEngine.deleteOwnedIdentity(with: ownedCryptoId, notifyContacts: notifyContacts) - + } + + // We can perform the requested deletion of the ownedCryptoId + + try obvEngine.deleteOwnedIdentity(with: ownedCryptoId, globalOwnedIdentityDeletion: globalOwnedIdentityDeletion) + + // We can delete the owned identity immediately + + do { + try PersistedObvOwnedIdentity.deleteOwnedIdentity(ownedCryptoId: ownedCryptoId, within: obvContext.context) } catch { - return cancel(withReason: .coreDataError(error: error)) + assertionFailure(error.localizedDescription) + // Continue anyway, the owned identity will eventually be deleted once the owned identity deletion protocol is performed. } + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/HideOwnedIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/HideOwnedIdentityOperation.swift index 0a84fb73..095d5cd2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/HideOwnedIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/HideOwnedIdentityOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import OlvidUtils import os.log import ObvTypes import ObvUICoreData +import CoreData final class HideOwnedIdentityOperation: ContextualOperationWithSpecificReasonForCancel { @@ -36,30 +37,25 @@ final class HideOwnedIdentityOperation: ContextualOperationWithSpecificReasonFor super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + guard password.count >= ObvMessengerConstants.minimumLengthOfPasswordForHiddenProfiles else { return cancel(withReason: .passwordTooShort) } - obvContext.performAndWait { - do { - let nonHiddenOwnedIdentities = try PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: obvContext.context) - guard let ownedIdentity = nonHiddenOwnedIdentities.first(where: { $0.cryptoId == ownedCryptoId }) else { - return cancel(withReason: .couldNotFindOwnedIdentity) - } - guard nonHiddenOwnedIdentities.count > 1 else { - return cancel(withReason: .cannotHideTheSoleOwnedIdentity) - } - try ownedIdentity.hideProfileWithPassword(password) - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + let nonHiddenOwnedIdentities = try PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: obvContext.context) + guard let ownedIdentity = nonHiddenOwnedIdentities.first(where: { $0.cryptoId == ownedCryptoId }) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + guard nonHiddenOwnedIdentities.count > 1 else { + return cancel(withReason: .cannotHideTheSoleOwnedIdentity) } + try ownedIdentity.hideProfileWithPassword(password) + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/DeleteAllServerPushNotificationsOnOwnedIdentityDeletionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/MarkAllPersistedInvitationAsOldOperation.swift similarity index 54% rename from Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/DeleteAllServerPushNotificationsOnOwnedIdentityDeletionOperation.swift rename to iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/MarkAllPersistedInvitationAsOldOperation.swift index b0dc5e90..d6d0a95b 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/Coordinators/ProcessRegisteredPushNotificationsCoordinator/Operations/DeleteAllServerPushNotificationsOnOwnedIdentityDeletionOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/MarkAllPersistedInvitationAsOldOperation.swift @@ -18,33 +18,27 @@ */ import Foundation +import CoreData +import ObvTypes import OlvidUtils -import ObvCrypto +import ObvUICoreData +final class MarkAllPersistedInvitationAsOldOperation: ContextualOperationWithSpecificReasonForCancel { -final class DeleteAllServerPushNotificationsOnOwnedIdentityDeletionOperation: ContextualOperationWithSpecificReasonForCancel { + private let ownedCryptoId: ObvCryptoId - let ownedCryptoId: ObvCryptoIdentity - - init(ownedCryptoId: ObvCryptoIdentity) { + init(ownedCryptoId: ObvCryptoId) { self.ownedCryptoId = ownedCryptoId super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - try ServerPushNotification.deleteAllServerPushNotificationForOwnedCryptoIdentity(ownedCryptoId, within: obvContext) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + do { + try PersistedInvitation.markAllAsOld(for: ownedCryptoId, within: obvContext.context) + } catch { + return cancel(withReason: .coreDataError(error: error)) } } - } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/NameCurrentDeviceWithoutSpecifiedNameOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/NameCurrentDeviceWithoutSpecifiedNameOperation.swift new file mode 100644 index 00000000..ebd81248 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/NameCurrentDeviceWithoutSpecifiedNameOperation.swift @@ -0,0 +1,66 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import CoreData +import ObvUICoreData +import ObvEngine + + +/// This operation is intended to be executed during bootstrap. Its fetches all current devices that have no specified name and set a default name, based on the model of the physical device. +final class NameCurrentDeviceWithoutSpecifiedNameOperation: ContextualOperationWithSpecificReasonForCancel { + + let obvEngine: ObvEngine + + init(obvEngine: ObvEngine) { + self.obvEngine = obvEngine + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + let obvEngine = self.obvEngine + + let currentOwnedDevices = try PersistedObvOwnedDevice.fetchCurrentPersistedObvOwnedDeviceWithNoSpecifiedName(within: obvContext.context) + + for currentOwnedDevice in currentOwnedDevices { + + let deviceIdentifier = currentOwnedDevice.deviceIdentifier + guard let ownedCryptoId = currentOwnedDevice.ownedIdentity?.cryptoId else { continue } + let ownedDeviceName = UIDevice.current.preciseModel + + Task.detached { + try? await obvEngine.requestChangeOfOwnedDeviceName( + ownedCryptoId: ownedCryptoId, + deviceIdentifier: deviceIdentifier, + ownedDeviceName: ownedDeviceName) + } + + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/RefreshBadgeCountsForAllOwnedIdentitiesOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/RefreshBadgeCountsForAllOwnedIdentitiesOperation.swift index 4a62d937..718c77fc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/RefreshBadgeCountsForAllOwnedIdentitiesOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/RefreshBadgeCountsForAllOwnedIdentitiesOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,35 +23,31 @@ import OlvidUtils import os.log import ObvTypes import ObvUICoreData +import CoreData final class RefreshBadgeCountsForAllOwnedIdentitiesOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - let ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) - ownedIdentities.forEach { ownedIdentity in - do { - try ownedIdentity.refreshBadgeCountForDiscussionsTab() - } catch { - assertionFailure(error.localizedDescription) - // In production, continue anyway - } - do { - try ownedIdentity.refreshBadgeCountForInvitationsTab() - } catch { - assertionFailure(error.localizedDescription) - // In production, continue anyway - } + do { + let ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + ownedIdentities.forEach { ownedIdentity in + do { + try ownedIdentity.refreshBadgeCountForDiscussionsTab() + } catch { + assertionFailure(error.localizedDescription) + // In production, continue anyway + } + do { + try ownedIdentity.refreshBadgeCountForInvitationsTab() + } catch { + assertionFailure(error.localizedDescription) + // In production, continue anyway } - } catch { - return cancel(withReason: .coreDataError(error: error)) } + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UnhideOwnedIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UnhideOwnedIdentityOperation.swift index c9df4ca8..ac2e96f2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UnhideOwnedIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UnhideOwnedIdentityOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import OlvidUtils import os.log import ObvTypes import ObvUICoreData +import CoreData final class UnhideOwnedIdentityOperation: ContextualOperationWithSpecificReasonForCancel { @@ -34,19 +35,14 @@ final class UnhideOwnedIdentityOperation: ContextualOperationWithSpecificReasonF super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } - ownedIdentity.unhideProfile() - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + do { + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } + ownedIdentity.unhideProfile() + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateAPIKeyStatusAndPermissionsOfOwnedIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateAPIKeyStatusAndPermissionsOfOwnedIdentityOperation.swift index 29e4d718..14650d60 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateAPIKeyStatusAndPermissionsOfOwnedIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateAPIKeyStatusAndPermissionsOfOwnedIdentityOperation.swift @@ -22,6 +22,7 @@ import OlvidUtils import os.log import ObvTypes import ObvUICoreData +import CoreData final class UpdateAPIKeyStatusAndPermissionsOfOwnedIdentityOperation: ContextualOperationWithSpecificReasonForCancel { @@ -39,19 +40,17 @@ final class UpdateAPIKeyStatusAndPermissionsOfOwnedIdentityOperation: Contextual super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } - persistedObvOwnedIdentity.set(apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpirationDate) - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + // This happens if the owned identity just got deleted + return } + persistedObvOwnedIdentity.set(apiKeyStatus: apiKeyStatus, apiPermissions: apiPermissions, apiKeyExpirationDate: apiKeyExpirationDate) + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedCustomDisplayNameOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedCustomDisplayNameOperation.swift index ddf5da20..f5c9772c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedCustomDisplayNameOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedCustomDisplayNameOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import OlvidUtils import os.log import ObvTypes import ObvUICoreData +import CoreData final class UpdateOwnedCustomDisplayNameOperation: ContextualOperationWithSpecificReasonForCancel { @@ -30,25 +31,44 @@ final class UpdateOwnedCustomDisplayNameOperation: ContextualOperationWithSpecif let ownedCryptoId: ObvCryptoId let newCustomDisplayName: String? - init(ownedCryptoId: ObvCryptoId, newCustomDisplayName: String?) { + private let makeSyncAtomRequest: Bool + private weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? + + init(ownedCryptoId: ObvCryptoId, newCustomDisplayName: String?, makeSyncAtomRequest: Bool, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate?) { self.ownedCryptoId = ownedCryptoId self.newCustomDisplayName = newCustomDisplayName + self.makeSyncAtomRequest = makeSyncAtomRequest + self.syncAtomRequestDelegate = syncAtomRequestDelegate super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } - ownedIdentity.setOwnedCustomDisplayName(to: newCustomDisplayName) - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } + + let customDisplayNameHadToBeUpdatedInDatabase = ownedIdentity.setOwnedCustomDisplayName(to: newCustomDisplayName) + let customDisplayNameToSend = ownedIdentity.customDisplayName + + if makeSyncAtomRequest && customDisplayNameHadToBeUpdatedInDatabase { + assert(self.syncAtomRequestDelegate != nil) + if let syncAtomRequestDelegate = self.syncAtomRequestDelegate { + let ownedCryptoId = self.ownedCryptoId + let syncAtom = ObvSyncAtom.ownProfileNickname(nickname: customDisplayNameToSend) + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + Task.detached { + await syncAtomRequestDelegate.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } + } + } } + + + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityAsItWasDeactivatedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityAsItWasDeactivatedOperation.swift index 4fa2e8fe..eaf6ef1f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityAsItWasDeactivatedOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityAsItWasDeactivatedOperation.swift @@ -22,6 +22,7 @@ import OlvidUtils import os.log import ObvTypes import ObvUICoreData +import CoreData final class UpdateOwnedIdentityAsItWasDeactivatedOperation: ContextualOperationWithSpecificReasonForCancel { @@ -33,19 +34,14 @@ final class UpdateOwnedIdentityAsItWasDeactivatedOperation: ContextualOperationW super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } - persistedObvOwnedIdentity.deactivate() - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + do { + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { return } + persistedObvOwnedIdentity.deactivate() + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityAsItWasReactivatedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityAsItWasReactivatedOperation.swift index c8c53236..f47a2680 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityAsItWasReactivatedOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityAsItWasReactivatedOperation.swift @@ -22,6 +22,7 @@ import OlvidUtils import os.log import ObvTypes import ObvUICoreData +import CoreData final class UpdateOwnedIdentityAsItWasReactivatedOperation: ContextualOperationWithSpecificReasonForCancel { @@ -33,19 +34,14 @@ final class UpdateOwnedIdentityAsItWasReactivatedOperation: ContextualOperationW super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } - persistedObvOwnedIdentity.activate() - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + do { + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { assertionFailure(); return } + persistedObvOwnedIdentity.activate() + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityOperation.swift index 8d87fd01..90ba0102 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateOwnedIdentityOperation.swift @@ -22,6 +22,7 @@ import OlvidUtils import os.log import ObvEngine import ObvUICoreData +import CoreData final class UpdateOwnedIdentityOperation: ContextualOperationWithSpecificReasonForCancel { @@ -33,19 +34,14 @@ final class UpdateOwnedIdentityOperation: ContextualOperationWithSpecificReasonF super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvOwnedIdentity, within: obvContext.context) else { return } - try persistedObvOwnedIdentity.update(with: obvOwnedIdentity) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + do { + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvOwnedIdentity, within: obvContext.context) else { return } + try persistedObvOwnedIdentity.update(with: obvOwnedIdentity) + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateProfilePictureOfOwnedIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateProfilePictureOfOwnedIdentityOperation.swift index 51745150..1ab8e453 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateProfilePictureOfOwnedIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/ObvOwnedIdentityCoordinator/Operations/UpdateProfilePictureOfOwnedIdentityOperation.swift @@ -22,6 +22,7 @@ import OlvidUtils import os.log import ObvEngine import ObvUICoreData +import CoreData final class UpdateProfilePictureOfOwnedIdentityOperation: ContextualOperationWithSpecificReasonForCancel { @@ -33,19 +34,14 @@ final class UpdateProfilePictureOfOwnedIdentityOperation: ContextualOperationWit super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) + do { + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvOwnedIdentity, within: obvContext.context) else { return } + persistedObvOwnedIdentity.updatePhotoURL(with: obvOwnedIdentity.publishedIdentityDetails.photoURL) + } catch { + return cancel(withReason: .coreDataError(error: error)) } - obvContext.performAndWait { - do { - guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: obvOwnedIdentity, within: obvContext.context) else { return } - persistedObvOwnedIdentity.updatePhotoURL(with: obvOwnedIdentity.publishedIdentityDetails.photoURL) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/DeletePersistedMessageSentRecipientInfosWithoutMessageIdentifierFromEngineAndAssociatedToDeletedContactIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/DeletePersistedMessageSentRecipientInfosWithoutMessageIdentifierFromEngineAndAssociatedToDeletedContactIdentityOperation.swift index 3675c465..303322b0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/DeletePersistedMessageSentRecipientInfosWithoutMessageIdentifierFromEngineAndAssociatedToDeletedContactIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/DeletePersistedMessageSentRecipientInfosWithoutMessageIdentifierFromEngineAndAssociatedToDeletedContactIdentityOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/RefreshNumberOfNewMessagesForAllDiscussionsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/RefreshNumberOfNewMessagesForAllDiscussionsOperation.swift index 8140606d..0f8425d0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/RefreshNumberOfNewMessagesForAllDiscussionsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/RefreshNumberOfNewMessagesForAllDiscussionsOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,30 +27,22 @@ import ObvUICoreData final class RefreshNumberOfNewMessagesForAllDiscussionsOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - let discussions = try PersistedDiscussion.getAllActiveDiscussionsForAllOwnedIdentities(within: obvContext.context) - for discussion in discussions { - do { - try discussion.refreshNumberOfNewMessages() - } catch { - assertionFailure() - // In production, continue anyway - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + let discussions = try PersistedDiscussion.getAllActiveDiscussionsForAllOwnedIdentities(within: obvContext.context) + for discussion in discussions { + do { + try discussion.refreshNumberOfNewMessages() + } catch { + assertionFailure() + // In production, continue anyway } - } catch { - return cancel(withReason: .coreDataError(error: error)) } - + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/SynchronizeDiscussionsIllustrativeMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/SynchronizeDiscussionsIllustrativeMessageOperation.swift index 9066bed5..86afb869 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/SynchronizeDiscussionsIllustrativeMessageOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/SynchronizeDiscussionsIllustrativeMessageOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,30 +27,22 @@ import ObvUICoreData final class SynchronizeDiscussionsIllustrativeMessageOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - let discussions = try PersistedDiscussion.getAllDiscussionsForAllOwnedIdentities(within: obvContext.context) - for discussion in discussions { - do { - try discussion.resetIllustrativeMessage() - } catch { - assertionFailure() - // In production, continue anyway - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + let discussions = try PersistedDiscussion.getAllDiscussionsForAllOwnedIdentities(within: obvContext.context) + for discussion in discussions { + do { + try discussion.resetIllustrativeMessage() + } catch { + assertionFailure() + // In production, continue anyway } - } catch { - return cancel(withReason: .coreDataError(error: error)) } - + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/TrashFilesThatHaveNoAssociatedFyleOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/TrashFilesThatHaveNoAssociatedFyleOperation.swift index 1806ef9d..2c846c22 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/TrashFilesThatHaveNoAssociatedFyleOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Bootstrap/TrashFilesThatHaveNoAssociatedFyleOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/CleanCallLogContactsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/CleanCallLogContactsOperation.swift index c33e0bd4..c6db112f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/CleanCallLogContactsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/CleanCallLogContactsOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/ReportCallEventOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/ReportCallEventOperation.swift index bf3814c3..bf72fae9 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/ReportCallEventOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/ReportCallEventOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -33,10 +33,10 @@ final class ReportCallEventOperation: OperationWithSpecificReasonForCancel { - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - try PersistedDiscussionLocalConfiguration.deleteAllExpiredMuteNotifications(within: obvContext) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + do { + try PersistedDiscussionLocalConfiguration.deleteAllExpiredMuteNotifications(within: obvContext) + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/CreateRandomDraftDebugOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/CreateRandomDraftDebugOperation.swift index 1a0fe8e3..13d16740 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/CreateRandomDraftDebugOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/CreateRandomDraftDebugOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,6 +21,7 @@ import Foundation import OlvidUtils import os.log import ObvUICoreData +import CoreData final class CreateRandomDraftDebugOperation: ContextualOperationWithSpecificReasonForCancel { @@ -32,29 +33,21 @@ final class CreateRandomDraftDebugOperation: ContextualOperationWithSpecificReas super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - guard let discussion = try PersistedDiscussion.get(objectID: discussionObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDiscussion) - } - - discussion.draft.reset() - - let randomBodySize = Int.random(in: Range.init(uncheckedBounds: (lower: 2, upper: 200))) - let randomBody = CreateRandomDraftDebugOperation.randomString(length: randomBodySize) - discussion.draft.replaceContentWith(newBody: randomBody, newMentions: Set()) - - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let discussion = try PersistedDiscussion.get(objectID: discussionObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDiscussion) } + discussion.draft.reset() + + let randomBodySize = Int.random(in: Range.init(uncheckedBounds: (lower: 2, upper: 200))) + let randomBody = CreateRandomDraftDebugOperation.randomString(length: randomBodySize) + discussion.draft.replaceContentWith(newBody: randomBody, newMentions: Set()) + + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/CreateRandomMessageReceivedDebugOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/CreateRandomMessageReceivedDebugOperation.swift index 9148201d..f1e513e2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/CreateRandomMessageReceivedDebugOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/CreateRandomMessageReceivedDebugOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,208 +26,218 @@ import ObvEngine import ObvUICoreData -final class CreateRandomMessageReceivedDebugOperation: ContextualOperationWithSpecificReasonForCancel { - - private let discussionObjectID: TypeSafeManagedObjectID - - init(discussionObjectID: TypeSafeManagedObjectID) { - self.discussionObjectID = discussionObjectID - super.init() - } - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - let prng = ObvCryptoSuite.sharedInstance.prngService() - - obvContext.performAndWait { - - do { - guard let discussion = try PersistedDiscussion.get(objectID: discussionObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDiscussion) - } - - guard let persistedContactIdentity = chooseRandomContact(from: discussion) else { - return cancel(withReason: .internalError) - } - - try? PersistedDiscussion.insertSystemMessagesIfDiscussionIsEmpty(discussionObjectID: discussion.objectID, markAsRead: true, within: obvContext.context) - - let randomBodySize = Int.random(in: Range.init(uncheckedBounds: (lower: 2, upper: 200))) - - let bodyHasMention = Bool.random() - - let mentionedContactIdentity: PersistedObvContactIdentity? = try { - switch try discussion.kind { - case .oneToOne: - return .none - - case .groupV1(withContactGroup: let contactGroup): - guard let contactGroup else { - return nil - } - - return contactGroup.contactIdentities.randomElement() - - case .groupV2(withGroup: let group): - guard let group else { - return nil - } - - return group.otherMembers.randomElement()?.contact - } - }() - - let (randomBody, mentions): (String, [MessageJSON.UserMention]) = { - guard bodyHasMention, - let mentionedContactIdentity else { - return CreateRandomMessageReceivedDebugOperation.randomString(length: randomBodySize, mentionedContactIdentity: nil) - } - - return CreateRandomMessageReceivedDebugOperation.randomString(length: randomBodySize, mentionedContactIdentity: mentionedContactIdentity) - }() - - let messageJSON: MessageJSON - - switch try discussion.kind { - case .oneToOne: - - messageJSON = MessageJSON(senderSequenceNumber: 0, - senderThreadIdentifier: UUID(), - body: randomBody, - replyTo: nil, - expiration: nil, - forwarded: false, - userMentions: mentions) - - case .groupV1(withContactGroup: let contactGroup): - guard let contactGroup = contactGroup else { - return cancel(withReason: .internalError) - } - guard let groupOwner = try? ObvCryptoId(identity: contactGroup.ownerIdentity) else { - return cancel(withReason: .internalError) - } - let groupV1Identifier = (contactGroup.groupUid, groupOwner) - messageJSON = MessageJSON(senderSequenceNumber: 0, - senderThreadIdentifier: UUID(), - body: randomBody, - groupV1Identifier: groupV1Identifier, - replyTo: nil, - expiration: nil, - forwarded: false, - userMentions: mentions) - - case .groupV2(withGroup: let group): - guard let groupV2Identifier = group?.groupIdentifier else { - return cancel(withReason: .internalError) - } - messageJSON = MessageJSON(senderSequenceNumber: 0, - senderThreadIdentifier: UUID(), - body: randomBody, - groupV2Identifier: groupV2Identifier, - replyTo: nil, - expiration: nil, - forwarded: false, - originalServerTimestamp: nil, - userMentions: mentions) - } - - let randomMessageIdentifierFromEngine = UID.gen(with: prng).raw - - guard (try? PersistedMessageReceived(messageUploadTimestampFromServer: Date(), - downloadTimestampFromServer: Date(), - localDownloadTimestamp: Date(), - messageJSON: messageJSON, - contactIdentity: persistedContactIdentity, - messageIdentifierFromEngine: randomMessageIdentifierFromEngine, - returnReceiptJSON: nil, - missedMessageCount: 0, - discussion: discussion, - obvMessageContainsAttachments: false)) != nil else { - return cancel(withReason: .internalError) - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - - } - - } - - private func chooseRandomContact(from discussion: PersistedDiscussion) -> PersistedObvContactIdentity? { - switch try? discussion.kind { - case .oneToOne(withContactIdentity: let contactIdentity): - return contactIdentity - case .groupV1(withContactGroup: let contactGroup): - return contactGroup?.contactIdentities.randomElement() - case .groupV2(withGroup: let group): - return group?.contactsAmongNonPendingOtherMembers.randomElement() - case .none: - return nil - } - } - - - static func randomString(length: Int, mentionedContactIdentity: PersistedObvContactIdentity?) -> (String, [MessageJSON.UserMention]) { - let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 " - - let randomBody = String((0...length-1).map { _ in letters.randomElement()! }) - - guard let mentionedContactIdentity else { - return (randomBody, []) - } - - let mentionedName = mentionedContactIdentity.fullDisplayName - - let mentionedBody = "\n\nmention: @\(mentionedName)" - - let finalBody = randomBody + mentionedBody - - let mentionedUserRange = finalBody.range(of: "@\(mentionedName)")! - - let userMention = MessageJSON.UserMention(mentionedCryptoId: mentionedContactIdentity.cryptoId, - range: mentionedUserRange) - - return (finalBody, [userMention]) - } -} - - -enum CreateRandomMessageReceivedDebugOperationReasonForCancel: LocalizedErrorWithLogType { - - case coreDataError(error: Error) - case couldNotFindDiscussion - case contextIsNil - case internalError - - var logType: OSLogType { - switch self { - case .coreDataError, - .contextIsNil, - .internalError: - return .fault - case .couldNotFindDiscussion: - return .error - } - } - - var errorDescription: String? { - switch self { - case .internalError: - return "Internal error" - case .contextIsNil: - return "Context is nil" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .couldNotFindDiscussion: - return "Could not find discussion in database" - } - } - - -} +//final class CreateRandomMessageReceivedDebugOperation: ContextualOperationWithSpecificReasonForCancel { +// +// private let discussionObjectID: TypeSafeManagedObjectID +// +// init(discussionObjectID: TypeSafeManagedObjectID) { +// self.discussionObjectID = discussionObjectID +// super.init() +// } +// +// override func main() { +// +// guard let obvContext = self.obvContext else { +// return cancel(withReason: .contextIsNil) +// } +// +// let prng = ObvCryptoSuite.sharedInstance.prngService() +// +// obvContext.performAndWait { +// +// do { +// guard let discussion = try PersistedDiscussion.get(objectID: discussionObjectID, within: obvContext.context) else { +// return cancel(withReason: .couldNotFindDiscussion) +// } +// +// guard let persistedContactIdentity = chooseRandomContact(from: discussion) else { +// return cancel(withReason: .internalError) +// } +// +// try? PersistedDiscussion.insertSystemMessagesIfDiscussionIsEmpty(discussionObjectID: discussion.objectID, markAsRead: true, within: obvContext.context) +// +// let randomBodySize = Int.random(in: Range.init(uncheckedBounds: (lower: 2, upper: 200))) +// +// let bodyHasMention = Bool.random() +// +// let mentionedContactIdentity: PersistedObvContactIdentity? = try { +// switch try discussion.kind { +// case .oneToOne: +// return .none +// +// case .groupV1(withContactGroup: let contactGroup): +// guard let contactGroup else { +// return nil +// } +// +// return contactGroup.contactIdentities.randomElement() +// +// case .groupV2(withGroup: let group): +// guard let group else { +// return nil +// } +// +// return group.otherMembers.randomElement()?.contact +// } +// }() +// +// let (randomBody, mentions): (String, [MessageJSON.UserMention]) = { +// guard bodyHasMention, +// let mentionedContactIdentity else { +// return CreateRandomMessageReceivedDebugOperation.randomString(length: randomBodySize, mentionedContactIdentity: nil) +// } +// +// return CreateRandomMessageReceivedDebugOperation.randomString(length: randomBodySize, mentionedContactIdentity: mentionedContactIdentity) +// }() +// +// let messageJSON: MessageJSON +// +// switch try discussion.kind { +// case .oneToOne(withContactIdentity: let contact): +// +// guard let ownedCryptoId = contact?.ownedIdentity?.cryptoId else { +// return cancel(withReason: .internalError) +// } +// +// guard let contactCryptoId = contact?.cryptoId else { +// return cancel(withReason: .internalError) +// } +// +// let oneToOneIdentifier = OneToOneIdentifierJSON(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) +// messageJSON = MessageJSON(senderSequenceNumber: 0, +// senderThreadIdentifier: UUID(), +// body: randomBody, +// oneToOneIdentifier: oneToOneIdentifier, +// replyTo: nil, +// expiration: nil, +// forwarded: false, +// userMentions: mentions) +// +// case .groupV1(withContactGroup: let contactGroup): +// guard let contactGroup = contactGroup else { +// return cancel(withReason: .internalError) +// } +// guard let groupOwner = try? ObvCryptoId(identity: contactGroup.ownerIdentity) else { +// return cancel(withReason: .internalError) +// } +// let groupV1Identifier = (contactGroup.groupUid, groupOwner) +// messageJSON = MessageJSON(senderSequenceNumber: 0, +// senderThreadIdentifier: UUID(), +// body: randomBody, +// groupV1Identifier: groupV1Identifier, +// replyTo: nil, +// expiration: nil, +// forwarded: false, +// userMentions: mentions) +// +// case .groupV2(withGroup: let group): +// guard let groupV2Identifier = group?.groupIdentifier else { +// return cancel(withReason: .internalError) +// } +// messageJSON = MessageJSON(senderSequenceNumber: 0, +// senderThreadIdentifier: UUID(), +// body: randomBody, +// groupV2Identifier: groupV2Identifier, +// replyTo: nil, +// expiration: nil, +// forwarded: false, +// originalServerTimestamp: nil, +// userMentions: mentions) +// } +// +// let randomMessageIdentifierFromEngine = UID.gen(with: prng).raw +// +// guard (try? PersistedMessageReceived(messageUploadTimestampFromServer: Date(), +// downloadTimestampFromServer: Date(), +// localDownloadTimestamp: Date(), +// messageJSON: messageJSON, +// contactIdentity: persistedContactIdentity, +// messageIdentifierFromEngine: randomMessageIdentifierFromEngine, +// returnReceiptJSON: nil, +// missedMessageCount: 0, +// discussion: discussion, +// obvMessageContainsAttachments: false)) != nil else { +// return cancel(withReason: .internalError) +// } +// +// } catch { +// return cancel(withReason: .coreDataError(error: error)) +// } +// +// +// } +// +// } +// +// private func chooseRandomContact(from discussion: PersistedDiscussion) -> PersistedObvContactIdentity? { +// switch try? discussion.kind { +// case .oneToOne(withContactIdentity: let contactIdentity): +// return contactIdentity +// case .groupV1(withContactGroup: let contactGroup): +// return contactGroup?.contactIdentities.randomElement() +// case .groupV2(withGroup: let group): +// return group?.contactsAmongNonPendingOtherMembers.randomElement() +// case .none: +// return nil +// } +// } +// +// +// static func randomString(length: Int, mentionedContactIdentity: PersistedObvContactIdentity?) -> (String, [MessageJSON.UserMention]) { +// let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 " +// +// let randomBody = String((0...length-1).map { _ in letters.randomElement()! }) +// +// guard let mentionedContactIdentity else { +// return (randomBody, []) +// } +// +// let mentionedName = mentionedContactIdentity.fullDisplayName +// +// let mentionedBody = "\n\nmention: @\(mentionedName)" +// +// let finalBody = randomBody + mentionedBody +// +// let mentionedUserRange = finalBody.range(of: "@\(mentionedName)")! +// +// let userMention = MessageJSON.UserMention(mentionedCryptoId: mentionedContactIdentity.cryptoId, +// range: mentionedUserRange) +// +// return (finalBody, [userMention]) +// } +//} +// +// +//enum CreateRandomMessageReceivedDebugOperationReasonForCancel: LocalizedErrorWithLogType { +// +// case coreDataError(error: Error) +// case couldNotFindDiscussion +// case contextIsNil +// case internalError +// +// var logType: OSLogType { +// switch self { +// case .coreDataError, +// .contextIsNil, +// .internalError: +// return .fault +// case .couldNotFindDiscussion: +// return .error +// } +// } +// +// var errorDescription: String? { +// switch self { +// case .internalError: +// return "Internal error" +// case .contextIsNil: +// return "Context is nil" +// case .coreDataError(error: let error): +// return "Core Data error: \(error.localizedDescription)" +// case .couldNotFindDiscussion: +// return "Could not find discussion in database" +// } +// } +// +// +//} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/MarkSentMessageAsDeliveredDebugOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/MarkSentMessageAsDeliveredDebugOperation.swift index 0f5f2bcb..22ed218a 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/MarkSentMessageAsDeliveredDebugOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Debug/MarkSentMessageAsDeliveredDebugOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,15 +23,12 @@ import os.log import ObvTypes import ObvCrypto import ObvUICoreData +import CoreData final class MarkSentMessageAsDeliveredDebugOperation: ContextualOperationWithSpecificReasonForCancel { - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { let appropriateDependencies = dependencies.compactMap({ $0 as? CreateUnprocessedPersistedMessageSentFromPersistedDraftOperation }) guard appropriateDependencies.count == 1, let messageSentPermanentID = appropriateDependencies.first!.messageSentPermanentID else { @@ -39,37 +36,32 @@ final class MarkSentMessageAsDeliveredDebugOperation: ContextualOperationWithSpe } let prng = ObvCryptoSuite.sharedInstance.prngService() - - obvContext.performAndWait { - - do { - guard let persistedMessageSent = try PersistedMessageSent.getManagedObject(withPermanentID: messageSentPermanentID, within: obvContext.context) else { - return cancel(withReason: .internalError) - } - - // Simulate the sending and reception of the message - - for recipientInfos in persistedMessageSent.unsortedRecipientsInfos { - let randomMessageIdentifierFromEngine = UID.gen(with: prng).raw - let randomNonce = prng.genBytes(count: 16) - let randomKey = prng.genBytes(count: 32) - recipientInfos.setMessageIdentifierFromEngine(to: randomMessageIdentifierFromEngine, - andReturnReceiptElementsTo: (randomNonce, randomKey)) - } - - for recipientInfos in persistedMessageSent.unsortedRecipientsInfos { - recipientInfos.setTimestampMessageSent(to: Date()) - } - - for recipientInfos in persistedMessageSent.unsortedRecipientsInfos { - persistedMessageSent.messageSentWasDeliveredToRecipient(withCryptoId: recipientInfos.recipientCryptoId, noLaterThan: Date(), andRead: false) - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) + + do { + guard let persistedMessageSent = try PersistedMessageSent.getManagedObject(withPermanentID: messageSentPermanentID, within: obvContext.context) else { + return cancel(withReason: .internalError) + } + + // Simulate the sending and reception of the message + + for recipientInfos in persistedMessageSent.unsortedRecipientsInfos { + let randomMessageIdentifierFromEngine = UID.gen(with: prng).raw + let randomNonce = prng.genBytes(count: 16) + let randomKey = prng.genBytes(count: 32) + recipientInfos.setMessageIdentifierFromEngine(to: randomMessageIdentifierFromEngine, + andReturnReceiptElementsTo: (randomNonce, randomKey)) } + for recipientInfos in persistedMessageSent.unsortedRecipientsInfos { + recipientInfos.setTimestampMessageSent(to: Date()) + } + + for recipientInfos in persistedMessageSent.unsortedRecipientsInfos { + persistedMessageSent.messageSentWasDeliveredToRecipient(withCryptoId: recipientInfos.recipientCryptoId, noLaterThan: Date(), andRead: false) + } + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ArchiveDiscussionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ArchiveDiscussionOperation.swift index 63cbe08f..bd46d7df 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ArchiveDiscussionOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ArchiveDiscussionOperation.swift @@ -20,6 +20,7 @@ import Foundation import OlvidUtils import ObvUICoreData +import CoreData final class ArchiveDiscussionOperation: ContextualOperationWithSpecificReasonForCancel { @@ -38,31 +39,27 @@ final class ArchiveDiscussionOperation: ContextualOperationWithSpecificReasonFor super.init() } - override func main() { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - guard let discussion = try PersistedDiscussion.getManagedObject(withPermanentID: discussionPermanentID, within: obvContext.context) else { return } - switch action { - case .archive: - try discussion.archive() - case .unarchive(updateTimestampOfLastMessage: let updateTimestampOfLastMessage): - if updateTimestampOfLastMessage { - // Unarchive and update the timestampOfLastMessage so that the unarchived discussion is shown at the top of the list. - // The reasoning behind this is that when a user unarchives a discussion, the intention is to interact with it. - // Not updating the timestamp would mean that in a long discussions list, the previously archived discussion would be - // shown at the very bottom. - discussion.unarchiveAndUpdateTimestampOfLastMessage() - } else { - discussion.unarchive() - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + guard let discussion = try PersistedDiscussion.getManagedObject(withPermanentID: discussionPermanentID, within: obvContext.context) else { return } + switch action { + case .archive: + try discussion.archive() + case .unarchive(updateTimestampOfLastMessage: let updateTimestampOfLastMessage): + if updateTimestampOfLastMessage { + // Unarchive and update the timestampOfLastMessage so that the unarchived discussion is shown at the top of the list. + // The reasoning behind this is that when a user unarchives a discussion, the intention is to interact with it. + // Not updating the timestamp would mean that in a long discussions list, the previously archived discussion would be + // shown at the very bottom. + discussion.unarchiveAndUpdateTimestampOfLastMessage() + } else { + discussion.unarchive() } - } catch { - return cancel(withReason: .coreDataError(error: error)) } + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/CancelUploadOrDownloadOfPersistedMessagesOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/CancelUploadOrDownloadOfPersistedMessagesOperation.swift index 4ef172ce..f24d8cb8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/CancelUploadOrDownloadOfPersistedMessagesOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/CancelUploadOrDownloadOfPersistedMessagesOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,8 +21,10 @@ import Foundation import os.log import CoreData import ObvEngine +import ObvTypes import OlvidUtils import ObvUICoreData +import CoreData final class CancelUploadOrDownloadOfPersistedMessagesOperation: ContextualOperationWithSpecificReasonForCancel { @@ -35,91 +37,105 @@ final class CancelUploadOrDownloadOfPersistedMessagesOperation: ContextualOperat enum Input { case messages(persistedMessageObjectIDs: [NSManagedObjectID]) case discussion(persistedDiscussionObjectID: NSManagedObjectID) + case remoteDiscussionDeletionRequestFromContact(deleteDiscussionJSON: DeleteDiscussionJSON, obvMessage: ObvMessage) + case remoteDiscussionDeletionRequestFromOtherOwnedDevice(deleteDiscussionJSON: DeleteDiscussionJSON, obvOwnedMessage: ObvOwnedMessage) } - init(persistedMessageObjectIDs: [NSManagedObjectID], obvEngine: ObvEngine) { - self.input = .messages(persistedMessageObjectIDs: persistedMessageObjectIDs) + init(input: Input, obvEngine: ObvEngine) { + self.input = input self.obvEngine = obvEngine super.init() } - init(persistedDiscussionObjectID: NSManagedObjectID, obvEngine: ObvEngine) { - self.input = .discussion(persistedDiscussionObjectID: persistedDiscussionObjectID) - self.obvEngine = obvEngine - super.init() - } - - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { + do { + + let persistedMessageObjectIDs: [NSManagedObjectID] + + switch input { + case .messages(persistedMessageObjectIDs: let _persistedMessageObjectIDs): + persistedMessageObjectIDs = _persistedMessageObjectIDs + case .discussion(persistedDiscussionObjectID: let persistedDiscussionObjectID): + let allProcessingMessageSent = try PersistedMessageSent.getAllProcessingWithinDiscussion(persistedDiscussionObjectID: persistedDiscussionObjectID, within: obvContext.context) + persistedMessageObjectIDs = allProcessingMessageSent.map({ $0.objectID }) + case .remoteDiscussionDeletionRequestFromContact(deleteDiscussionJSON: let deleteDiscussionJSON, obvMessage: let obvMessage): + guard let contact = try PersistedObvContactIdentity.get(persisted: obvMessage.fromContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContact) + } + persistedMessageObjectIDs = try contact.getObjectIDsOfPersistedMessageSentStillProcessing(deleteDiscussionJSON: deleteDiscussionJSON).map({ $0.objectID }) + case .remoteDiscussionDeletionRequestFromOtherOwnedDevice(deleteDiscussionJSON: let deleteDiscussionJSON, obvOwnedMessage: let obvOwnedMessage): + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: obvOwnedMessage.ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + persistedMessageObjectIDs = try ownedIdentity.getObjectIDsOfPersistedMessageSentStillProcessing(deleteDiscussionJSON: deleteDiscussionJSON).map({ $0.objectID }) + } + + for persistedMessageObjectID in persistedMessageObjectIDs { - let persistedMessageObjectIDs: [NSManagedObjectID] - switch input { - case .messages(persistedMessageObjectIDs: let _persistedMessageObjectIDs): - persistedMessageObjectIDs = _persistedMessageObjectIDs - case .discussion(persistedDiscussionObjectID: let persistedDiscussionObjectID): - let allProcessingMessageSent = try PersistedMessageSent.getAllProcessingWithinDiscussion(persistedDiscussionObjectID: persistedDiscussionObjectID, within: obvContext.context) - persistedMessageObjectIDs = allProcessingMessageSent.map({ $0.objectID }) + guard let messageToDelete = try PersistedMessage.get(with: persistedMessageObjectID, within: obvContext.context) else { + continue + } + guard !(messageToDelete is PersistedMessageSystem) else { + os_log("We do not need to cancel the upload/download of a PersistedMessageSystem", log: log, type: .info) + continue } - for persistedMessageObjectID in persistedMessageObjectIDs { - - guard let messageToDelete = try PersistedMessage.get(with: persistedMessageObjectID, within: obvContext.context) else { - continue - } - guard !(messageToDelete is PersistedMessageSystem) else { - os_log("We do not need to cancel the upload/download of a PersistedMessageSystem", log: log, type: .info) - continue - } + guard let discussion = messageToDelete.discussion else { + return cancel(withReason: .discussionIsNil) + } + + guard let ownedIdentity = discussion.ownedIdentity else { + return cancel(withReason: .persistedObvOwnedIdentityIsNil) + } + + if let sendMessageToDelete = messageToDelete as? PersistedMessageSent { - guard let ownedIdentity = messageToDelete.discussion.ownedIdentity else { - return cancel(withReason: .persistedObvOwnedIdentityIsNil) - } + let messadeIdentifiersFromEngine = Set(sendMessageToDelete.unsortedRecipientsInfos.compactMap { $0.messageIdentifierFromEngine }) - if let sendMessageToDelete = messageToDelete as? PersistedMessageSent { - - let messadeIdentifiersFromEngine = Set(sendMessageToDelete.unsortedRecipientsInfos.compactMap { $0.messageIdentifierFromEngine }) - - for messageIdentifierFromEngine in messadeIdentifiersFromEngine { - do { - try obvEngine.cancelPostOfMessage(withIdentifier: messageIdentifierFromEngine, ownedCryptoId: ownedIdentity.cryptoId) - } catch { - assertionFailure(error.localizedDescription) - continue - } - } - - } else if let receivedMessageToDelete = messageToDelete as? PersistedMessageReceived { - - // If the message is a received message, we ask the engine to cancel any download of this message - + for messageIdentifierFromEngine in messadeIdentifiersFromEngine { do { - try obvEngine.cancelDownloadOfMessage(withIdentifier: receivedMessageToDelete.messageIdentifierFromEngine, ownedCryptoId: ownedIdentity.cryptoId) + try obvEngine.cancelPostOfMessage(withIdentifier: messageIdentifierFromEngine, ownedCryptoId: ownedIdentity.cryptoId) } catch { assertionFailure(error.localizedDescription) continue } - - } else { - - return cancel(withReason: .unexpectedMessageType) - } + } else if let receivedMessageToDelete = messageToDelete as? PersistedMessageReceived { + + // If the message is a received message, we ask the engine to cancel any download of this message + + do { + try obvEngine.cancelDownloadOfMessage(withIdentifier: receivedMessageToDelete.messageIdentifierFromEngine, ownedCryptoId: ownedIdentity.cryptoId) + } catch { + assertionFailure(error.localizedDescription) + continue + } + + } else { + + return cancel(withReason: .unexpectedMessageType) + } - } catch { - assertionFailure(error.localizedDescription) + } + + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase: + // No assert in this case, this can happen. See the comment in the description of MessagesKeptForLaterManager. + return + default: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + } else { + assertionFailure() return cancel(withReason: .coreDataError(error: error)) } - - } // End obvContext.performAndWait + } } @@ -128,18 +144,25 @@ final class CancelUploadOrDownloadOfPersistedMessagesOperation: ContextualOperat enum CancelUploadOrDownloadOfPersistedMessageOperationReasonForCancel: LocalizedErrorWithLogType { + case discussionIsNil case persistedObvOwnedIdentityIsNil case unexpectedMessageType case coreDataError(error: Error) case contextIsNil - + case couldNotFindContact + case couldNotFindOwnedIdentity + var logType: OSLogType { switch self { case .persistedObvOwnedIdentityIsNil, + .discussionIsNil, .unexpectedMessageType, .coreDataError, .contextIsNil: return .fault + case .couldNotFindContact, + .couldNotFindOwnedIdentity: + return .error } } @@ -153,6 +176,12 @@ enum CancelUploadOrDownloadOfPersistedMessageOperationReasonForCancel: Localized return "Core Data error: \(error.localizedDescription)" case .contextIsNil: return "Context is nil" + case .couldNotFindContact: + return "Could not find contact" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .discussionIsNil: + return "Discussion is nil" } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllEmptyLockedDiscussionsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllEmptyLockedDiscussionsOperation.swift index 1ba7efd1..f254535c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllEmptyLockedDiscussionsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllEmptyLockedDiscussionsOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -28,19 +28,13 @@ final class DeleteAllEmptyLockedDiscussionsOperation: ContextualOperationWithSpe private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: DeleteAllEmptyLockedDiscussionsOperation.self)) - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - try PersistedDiscussion.deleteAllLockedDiscussionsWithNoMessage(within: obvContext.context, log: log) - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) - } + do { + try PersistedDiscussion.deleteAllLockedDiscussionsWithNoMessage(within: obvContext.context, log: log) + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllPersistedMessagesWithinDiscussionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllPersistedMessagesWithinDiscussionOperation.swift deleted file mode 100644 index 99b83ae5..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllPersistedMessagesWithinDiscussionOperation.swift +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import OlvidUtils -import ObvTypes -import ObvUICoreData - - -/// This operation replaces the discussion (either one-to-one or group) by another empty discussion of the same type. -/// Before saving the context, this operation deletes the old discussion, which cascade deletes its messages. -/// If this operation finishes without cancelling, `newDiscussionObjectID` is set to the objectID of the new discussion if a new discussion was created during this operation. -final class DeleteAllPersistedMessagesWithinDiscussionOperation: ContextualOperationWithSpecificReasonForCancel, ObvErrorMaker { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: DeleteAllPersistedMessagesWithinDiscussionOperation.self)) - - private let persistedDiscussionObjectID: NSManagedObjectID - private let requester: RequesterOfMessageDeletion - - static let errorDomain = "DeleteAllPersistedMessagesWithinDiscussionOperation" - - init(persistedDiscussionObjectID: NSManagedObjectID, requester: RequesterOfMessageDeletion) { - self.persistedDiscussionObjectID = persistedDiscussionObjectID - self.requester = requester - super.init() - } - - private(set) var newDiscussionObjectID: NSManagedObjectID? - private(set) var atLeastOneIllustrativeMessageWasDeleted = false - private(set) var contactRequesterIdentityObjectID: NSManagedObjectID? - - private var newCreatedDiscussion: PersistedDiscussion? - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - guard let discussion = try PersistedDiscussion.get(objectID: persistedDiscussionObjectID, - within: obvContext.context) else { return } - // Deleting all messages is implemented as a deletion of a discussion. - // If the deleted discussion is active, it is replaced by a new one with the same configuration. - // In practice, this behavior allows to efficiently delete all messages. - atLeastOneIllustrativeMessageWasDeleted = discussion.illustrativeMessage != nil - switch discussion.status { - case .preDiscussion, .locked: - switch requester { - case .ownedIdentity: - do { - try discussion.deleteDiscussion(requester: nil) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - case .contact: - return cancel(withReason: .coreDataError(error: Self.makeError(message: "A contact cannot delete a pre or locked discussion") )) - } - case .active: - let sharedConfigurationToKeep = discussion.sharedConfiguration - let localConfigurationToKeep = discussion.localConfiguration - let permanentUUIDToKeep = discussion.permanentUUID - let draftToKeep = discussion.draft - let pinnedIndexToKeep = discussion.pinnedIndex - let timestampOfLastMessageToKeep = discussion.timestampOfLastMessage - do { - switch try discussion.kind { - case .oneToOne(withContactIdentity: let contactIdentity): - if let contactIdentity = contactIdentity { - do { - try discussion.deleteDiscussion(requester: requester) // Must be called before creating the new discussion - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - let newDiscussion = try PersistedOneToOneDiscussion( - contactIdentity: contactIdentity, - status: .active, - sharedConfigurationToKeep: sharedConfigurationToKeep, - localConfigurationToKeep: localConfigurationToKeep, - permanentUUIDToKeep: permanentUUIDToKeep, - draftToKeep: draftToKeep, - pinnedIndexToKeep: pinnedIndexToKeep, - timestampOfLastMessageToKeep: timestampOfLastMessageToKeep) - try obvContext.context.obtainPermanentIDs(for: [newDiscussion]) - assert(newDiscussionObjectID == nil) - newDiscussionObjectID = newDiscussion.objectID - newCreatedDiscussion = newDiscussion - } - case .groupV1(withContactGroup: let contactGroup): - if let contactGroup = contactGroup, let ownedIdentity = discussion.ownedIdentity { - let groupName = discussion.title - do { - try discussion.deleteDiscussion(requester: requester) // Must be called before creating the new discussion - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - let newDiscussion = try PersistedGroupDiscussion( - contactGroup: contactGroup, - groupName: groupName, - ownedIdentity: ownedIdentity, - status: .active, - sharedConfigurationToKeep: sharedConfigurationToKeep, - localConfigurationToKeep: localConfigurationToKeep, - permanentUUIDToKeep: permanentUUIDToKeep, - draftToKeep: draftToKeep, - pinnedIndexToKeep: pinnedIndexToKeep, - timestampOfLastMessageToKeep: timestampOfLastMessageToKeep) - try obvContext.context.obtainPermanentIDs(for: [newDiscussion]) - assert(newDiscussionObjectID == nil) - newDiscussionObjectID = newDiscussion.objectID - newCreatedDiscussion = newDiscussion - } - case .groupV2(withGroup: let group): - if let group = group { - do { - try discussion.deleteDiscussion(requester: requester) // Must be called before creating the new discussion - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - let newDiscussion = try PersistedGroupV2Discussion( - persistedGroupV2: group, - shouldApplySharedConfigurationFromGlobalSettings: false, - sharedConfigurationToKeep: sharedConfigurationToKeep, - localConfigurationToKeep: localConfigurationToKeep, - permanentUUIDToKeep: permanentUUIDToKeep, - draftToKeep: draftToKeep, - pinnedIndexToKeep: pinnedIndexToKeep, - timestampOfLastMessageToKeep: timestampOfLastMessageToKeep) - try obvContext.context.obtainPermanentIDs(for: [newDiscussion]) - assert(newDiscussionObjectID == nil) - newDiscussionObjectID = newDiscussion.objectID - newCreatedDiscussion = newDiscussion - } - } - } catch { - return cancel(withReason: .unknownDiscussionType) - } - } - - // If the deletion was requested by a contact, find its objectID (so other operations can use it) - // If it was requested by us, archive the created discussion (if there is one) to remove it from the list of recent discussions - - switch requester { - case .ownedIdentity: - try newCreatedDiscussion?.archive() - case .contact(let ownedCryptoId, let contactCryptoId, _): - // This happens when this discussion was globally deleted by a contact. - assert(newDiscussionObjectID != nil) - if let contact = try? PersistedObvContactIdentity.get(contactCryptoId: contactCryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: obvContext.context) { - contactRequesterIdentityObjectID = contact.objectID - } - } - - // If no illustrative message was deleted from the previous discussion, we don't need to show the new one in the list of recent discussion. - // So we immediately archive it. - - if !atLeastOneIllustrativeMessageWasDeleted { - try newCreatedDiscussion?.archive() - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - } - - } - -} - -enum DeleteAllPersistedMessagesWithinDiscussionOperationReasonForCancel: LocalizedErrorWithLogType { - - case unknownDiscussionType - case coreDataError(error: Error) - case contextIsNil - - var logType: OSLogType { - switch self { - case .unknownDiscussionType, - .coreDataError, - .contextIsNil: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .contextIsNil: - return "Context is nil" - case .unknownDiscussionType: - return "Unknown discussion type" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteJsonMessageSavedByNotificationExtension.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteJsonMessageSavedByNotificationExtension.swift index af5361b5..214c9c11 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteJsonMessageSavedByNotificationExtension.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteJsonMessageSavedByNotificationExtension.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import os.log import ObvEngine import OlvidUtils import ObvUICoreData +import ObvSettings final class DeleteAllJsonMessagesSavedByNotificationExtension: OperationWithSpecificReasonForCancel { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletePersistedDiscussionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletePersistedDiscussionOperation.swift new file mode 100644 index 00000000..9eeab1d9 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletePersistedDiscussionOperation.swift @@ -0,0 +1,88 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import OlvidUtils +import ObvUICoreData +import ObvTypes + + + +/// Called when processing the message deletion requested by an owned identity from the current device. +final class DeletePersistedDiscussionOperation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoId: ObvCryptoId + private let discussionObjectID: TypeSafeManagedObjectID + private let deletionType: DeletionType + + + init(ownedCryptoId: ObvCryptoId, discussionObjectID: TypeSafeManagedObjectID, deletionType: DeletionType) { + self.ownedCryptoId = ownedCryptoId + self.discussionObjectID = discussionObjectID + self.deletionType = deletionType + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .cannotFindOwnedIdentity) + } + + try ownedIdentity.processDiscussionDeletionRequestFromCurrentDeviceOfThisOwnedIdentity(discussionObjectID: discussionObjectID, deletionType: deletionType) + + } catch { + assertionFailure(error.localizedDescription) + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case contextIsNil + case cannotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, .contextIsNil, .cannotFindOwnedIdentity: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .cannotFindOwnedIdentity: + return "Cannot find owned identity" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletePersistedMessagesOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletePersistedMessagesOperation.swift index 995376eb..1f132a32 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletePersistedMessagesOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletePersistedMessagesOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,21 +22,21 @@ import CoreData import os.log import OlvidUtils import ObvUICoreData +import ObvTypes -final class DeletePersistedMessagesOperation: ContextualOperationWithSpecificReasonForCancel { +/// Called when processing the message deletion requested by an owned identity from the current device. +final class DeletePersistedMessagesOperation: ContextualOperationWithSpecificReasonForCancel { - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: DeletePersistedMessagesOperation.self)) - private enum Input { - case persistedMessageObjectIDs(_: Set, requester: RequesterOfMessageDeletion) + case persistedMessageObjectIDs(_: Set, ownedCryptoId: ObvCryptoId, deletionType: DeletionType) case provider(_: OperationProvidingPersistedMessageObjectIDsToDelete) } private let input: Input - init(persistedMessageObjectIDs: Set, requester: RequesterOfMessageDeletion) { - self.input = .persistedMessageObjectIDs(persistedMessageObjectIDs, requester: requester) + init(persistedMessageObjectIDs: Set, ownedCryptoId: ObvCryptoId, deletionType: DeletionType) { + self.input = .persistedMessageObjectIDs(persistedMessageObjectIDs, ownedCryptoId: ownedCryptoId, deletionType: deletionType) super.init() } @@ -47,88 +47,90 @@ final class DeletePersistedMessagesOperation: ContextualOperationWithSpecificRea } - override func main() { - + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + let persistedMessageObjectIDs: Set - let requester: RequesterOfMessageDeletion + let ownedCryptoId: ObvCryptoId + let deletionType: DeletionType switch input { - case .persistedMessageObjectIDs(let objectIDs, let _requester): + case .persistedMessageObjectIDs(let objectIDs, let _ownedCryptoId, let _deletionType): persistedMessageObjectIDs = objectIDs - requester = _requester + ownedCryptoId = _ownedCryptoId + deletionType = _deletionType case .provider(let provider): persistedMessageObjectIDs = Set(provider.persistedMessageObjectIDsToDelete.map({ $0.objectID })) - requester = provider.requester + ownedCryptoId = provider.ownedCryptoId + deletionType = provider.deletionType } guard !persistedMessageObjectIDs.isEmpty else { return } - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - var infos = [InfoAboutWipedOrDeletedPersistedMessage]() - - for persistedMessageObjectID in persistedMessageObjectIDs { - do { - guard let messageToDelete = try PersistedMessage.get(with: persistedMessageObjectID, within: obvContext.context) else { return } - let info = try messageToDelete.delete(requester: requester) - infos += [info] - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .cannotFindOwnedIdentity) } + let infos = try ownedIdentity.processMessageDeletionRequestRequestedFromCurrentDeviceOfThisOwnedIdentity( + persistedMessageObjectIDs: persistedMessageObjectIDs, + deletionType: deletionType) do { try obvContext.addContextDidSaveCompletionHandler { error in guard error == nil else { return } + // We deleted some persisted messages. We notify about that. - InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infos) - + // Refresh objects in the view context if let viewContext = self.viewContext { InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infos) } + } } catch { - return cancel(withReason: .coreDataError(error: error)) + assertionFailure() // In production, continue anyway } - + + } catch { + assertionFailure(error.localizedDescription) + return cancel(withReason: .coreDataError(error: error)) } } + -} + enum ReasonForCancel: LocalizedErrorWithLogType { + case coreDataError(error: Error) + case contextIsNil + case cannotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, .contextIsNil, .cannotFindOwnedIdentity: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .cannotFindOwnedIdentity: + return "Cannot find owned identity" + } + } + + } -protocol OperationProvidingPersistedMessageObjectIDsToDelete: Operation { - var persistedMessageObjectIDsToDelete: Set> { get } - var requester: RequesterOfMessageDeletion { get } } -enum DeletePersistedMessageOperationReasonForCancel: LocalizedErrorWithLogType { - - case coreDataError(error: Error) - case contextIsNil - - var logType: OSLogType { - switch self { - case .coreDataError, .contextIsNil: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .contextIsNil: - return "Context is nil" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - } - } - +protocol OperationProvidingPersistedMessageObjectIDsToDelete: Operation { + var persistedMessageObjectIDsToDelete: Set> { get } + var ownedCryptoId: ObvCryptoId { get } + var deletionType: DeletionType { get } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletingOrphanedItems/DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation.swift similarity index 68% rename from iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation.swift rename to iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletingOrphanedItems/DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation.swift index ba6775ac..c4579bcf 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/DeletingOrphanedItems/DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,34 +30,26 @@ final class DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation: Contex private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation.self)) - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) + let orphanedFyles: [Fyle] + do { + orphanedFyles = try Fyle.getAllOrphaned(within: obvContext.context) + } catch { + return cancel(withReason: .coreDataError(error: error)) } - obvContext.performAndWait { - - let orphanedFyles: [Fyle] + guard !orphanedFyles.isEmpty else { return } + + for fyle in orphanedFyles { do { - orphanedFyles = try Fyle.getAllOrphaned(within: obvContext.context) + try fyle.moveFileToTrash() + obvContext.context.delete(fyle) } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - guard !orphanedFyles.isEmpty else { return } - - for fyle in orphanedFyles { - do { - try fyle.moveFileToTrash() - obvContext.context.delete(fyle) - } catch { - os_log("One of the fyles could not be trashed: %{public}@", type: .fault, error.localizedDescription) - assertionFailure() - // Continue anyway - } + os_log("One of the fyles could not be trashed: %{public}@", type: .fault, error.localizedDescription) + assertionFailure() + // Continue anyway } - } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ProcessRemoteWipeDiscussionRequestOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ProcessRemoteWipeDiscussionRequestOperation.swift new file mode 100644 index 00000000..1b339eca --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ProcessRemoteWipeDiscussionRequestOperation.swift @@ -0,0 +1,141 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import OlvidUtils +import ObvTypes +import ObvUICoreData +import ObvEngine + + +/// This operation is called when receiving a request to wipe all messages in a particular discussion. This request can come either from a contact of the discussion or from another owned device. +final class ProcessRemoteWipeDiscussionRequestOperation: ContextualOperationWithSpecificReasonForCancel { + + enum Requester { + case contact(contactIdentifier: ObvContactIdentifier) + case ownedIdentity(ownedCryptoId: ObvCryptoId) + } + + private let deleteDiscussionJSON: DeleteDiscussionJSON + private let requester: Requester + private let messageUploadTimestampFromServer: Date + + init(deleteDiscussionJSON: DeleteDiscussionJSON, requester: Requester, messageUploadTimestampFromServer: Date) { + self.deleteDiscussionJSON = deleteDiscussionJSON + self.requester = requester + self.messageUploadTimestampFromServer = messageUploadTimestampFromServer + super.init() + } + + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case processed + } + + private(set) var result: Result? + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + switch requester { + + case .contact(contactIdentifier: let contactIdentifier): + + // Get the PersistedObvContactIdentity + + guard let contact = try PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContact) + } + + // Request a deletion of all messages within the discussion + + try contact.processThisContactRemoteRequestToWipeAllMessagesWithinDiscussion(deleteDiscussionJSON: deleteDiscussionJSON, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .ownedIdentity(ownedCryptoId: let ownedCryptoId): + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + // Request a deletion of all messages within the discussion + + try ownedIdentity.processThisOwnedIdentityRemoteRequestToWipeAllMessagesWithinDiscussion(deleteDiscussionJSON: deleteDiscussionJSON, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + result = .processed + + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + default: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + } else { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case contextIsNil + case couldNotFindContact + case couldNotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, + .contextIsNil: + return .fault + case .couldNotFindContact, + .couldNotFindOwnedIdentity: + return .error + } + } + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindContact: + return "Could not find contact" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ProcessRemoteWipeMessagesRequestOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ProcessRemoteWipeMessagesRequestOperation.swift new file mode 100644 index 00000000..30ee9812 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/ProcessRemoteWipeMessagesRequestOperation.swift @@ -0,0 +1,161 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvEngine +import ObvTypes +import OlvidUtils +import ObvCrypto +import ObvUICoreData + + +/// This method is typically called when we receive a request to delete some messages by a contact willing to globally delete these messages +final class ProcessRemoteWipeMessagesRequestOperation: ContextualOperationWithSpecificReasonForCancel { + + enum Requester { + case contact(contactIdentifier: ObvContactIdentifier) + case ownedIdentity(ownedCryptoId: ObvCryptoId) + } + + private let deleteMessagesJSON: DeleteMessagesJSON + private let requester: Requester + private let messageUploadTimestampFromServer: Date + + init(deleteMessagesJSON: DeleteMessagesJSON, requester: Requester, messageUploadTimestampFromServer: Date) { + self.deleteMessagesJSON = deleteMessagesJSON + self.requester = requester + self.messageUploadTimestampFromServer = messageUploadTimestampFromServer + super.init() + } + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case processed + } + + private(set) var result: Result? + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + guard !deleteMessagesJSON.messagesToDelete.isEmpty else { + result = .processed + assertionFailure() + return + } + + do { + + let infosAboutWipedMessages: [InfoAboutWipedOrDeletedPersistedMessage] + + switch requester { + + case .contact(contactIdentifier: let contactIdentifier): + + // Get the PersistedObvContactIdentity who requested the wipe + + guard let contact = try PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContact) + } + + // Try to wipe + + infosAboutWipedMessages = try contact.processWipeMessageRequestFromThisContact( + deleteMessagesJSON: deleteMessagesJSON, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .ownedIdentity(ownedCryptoId: let ownedCryptoId): + + // Get the PersistedObvContactIdentity who requested the wipe + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + infosAboutWipedMessages = try ownedIdentity.processWipeMessageRequestFromOtherOwnedDevice( + deleteMessagesJSON: deleteMessagesJSON, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + result = .processed + + // Refresh objects in the view context + + if !infosAboutWipedMessages.isEmpty { + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + + // We deleted some persisted messages. We notify about that. + InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infosAboutWipedMessages) + + // Refresh objects in the view context + if let viewContext = self.viewContext { + InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infosAboutWipedMessages) + } + + } + } + + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + default: + return cancel(withReason: .coreDataError(error: error)) + } + } else { + return cancel(withReason: .coreDataError(error: error)) + } + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindOwnedIdentity + case couldNotFindContact + + var logType: OSLogType { + switch self { + case .coreDataError, .couldNotFindOwnedIdentity, .couldNotFindContact: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .couldNotFindContact: + return "Could not find the contact identity" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/SendGlobalDeleteDiscussionJSONOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/SendGlobalDeleteDiscussionJSONOperation.swift index aa31f613..80ea73c1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/SendGlobalDeleteDiscussionJSONOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/SendGlobalDeleteDiscussionJSONOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -43,60 +43,64 @@ final class SendGlobalDeleteDiscussionJSONOperation: OperationWithSpecificReason ObvStack.shared.performBackgroundTaskAndWait { (context) in - // We create the PersistedItemJSON instance to send - - let discussion: PersistedDiscussion do { - guard let _discussion = try PersistedDiscussion.get(objectID: persistedDiscussionObjectID, within: context) else { + + // We create the PersistedItemJSON instance to send + + guard let discussion = try PersistedDiscussion.get(objectID: persistedDiscussionObjectID, within: context) else { return cancel(withReason: .couldNotFindDiscussion) } - discussion = _discussion + + let deleteDiscussionJSON: DeleteDiscussionJSON + do { + deleteDiscussionJSON = try DeleteDiscussionJSON(persistedDiscussionToDelete: discussion) + } catch { + return cancel(withReason: .couldNotConstructDeleteDiscussionJSON(error: error)) + } + let itemJSON = PersistedItemJSON(deleteDiscussionJSON: deleteDiscussionJSON) + + // Find all the contacts to which this item should be sent. + + let contactCryptoIds: Set + let ownCryptoId: ObvCryptoId + do { + (ownCryptoId, contactCryptoIds) = try discussion.getAllActiveParticipants() + } catch { + return cancel(withReason: .couldNotGetCryptoIdOfDiscussionParticipants(error: error)) + } + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownCryptoId, within: context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + // Create a payload of the PersistedItemJSON we just created and send it. + // We do not keep track of the message identifiers from engine. + + let payload: Data + do { + payload = try itemJSON.jsonEncode() + } catch { + return cancel(withReason: .failedToEncodePersistedItemJSON) + } + + guard !contactCryptoIds.isEmpty || ownedIdentity.devices.count > 1 else { return } + + do { + _ = try obvEngine.post(messagePayload: payload, + extendedPayload: nil, + withUserContent: false, + isVoipMessageForStartingCall: false, + attachmentsToSend: [], + toContactIdentitiesWithCryptoId: contactCryptoIds, + ofOwnedIdentityWithCryptoId: ownCryptoId, + alsoPostToOtherOwnedDevices: true) + } catch { + return cancel(withReason: .couldNotPostMessageWithinEngine) + } + } catch { return cancel(withReason: .coreDataError(error: error)) } - - let deleteDiscussionJSON: DeleteDiscussionJSON - do { - deleteDiscussionJSON = try DeleteDiscussionJSON(persistedDiscussionToDelete: discussion) - } catch { - return cancel(withReason: .couldNotConstructDeleteDiscussionJSON(error: error)) - } - let itemJSON = PersistedItemJSON(deleteDiscussionJSON: deleteDiscussionJSON) - - // Find all the contacts to which this item should be sent. - - let contactCryptoIds: Set - let ownCryptoId: ObvCryptoId - do { - (ownCryptoId, contactCryptoIds) = try discussion.getAllActiveParticipants() - } catch { - return cancel(withReason: .couldNotGetCryptoIdOfDiscussionParticipants(error: error)) - } - - // Create a payload of the PersistedItemJSON we just created and send it. - // We do not keep track of the message identifiers from engine. - - let payload: Data - do { - payload = try itemJSON.jsonEncode() - } catch { - return cancel(withReason: .failedToEncodePersistedItemJSON) - } - - guard !contactCryptoIds.isEmpty else { return } - - do { - _ = try obvEngine.post(messagePayload: payload, - extendedPayload: nil, - withUserContent: false, - isVoipMessageForStartingCall: false, - attachmentsToSend: [], - toContactIdentitiesWithCryptoId: contactCryptoIds, - ofOwnedIdentityWithCryptoId: ownCryptoId) - } catch { - return cancel(withReason: .couldNotPostMessageWithinEngine) - } - } } @@ -112,6 +116,7 @@ enum SendGlobalDeleteDiscussionJSONOperationReasonForCancel: LocalizedErrorWithL case couldNotGetCryptoIdOfDiscussionParticipants(error: Error) case failedToEncodePersistedItemJSON case couldNotPostMessageWithinEngine + case couldNotFindOwnedIdentity var logType: OSLogType { switch self { @@ -120,6 +125,7 @@ enum SendGlobalDeleteDiscussionJSONOperationReasonForCancel: LocalizedErrorWithL .couldNotGetCryptoIdOfDiscussionParticipants, .failedToEncodePersistedItemJSON, .couldNotPostMessageWithinEngine, + .couldNotFindOwnedIdentity, .couldNotConstructDeleteDiscussionJSON: return .fault } @@ -139,6 +145,8 @@ enum SendGlobalDeleteDiscussionJSONOperationReasonForCancel: LocalizedErrorWithL return "We failed to encode the persisted item JSON" case .couldNotPostMessageWithinEngine: return "We failed to post the serialized DeleteMessagesJSON within the engine" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/SendGlobalDeleteMessagesJSONOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/SendGlobalDeleteMessagesJSONOperation.swift index 682636fd..e94f7cb4 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/SendGlobalDeleteMessagesJSONOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/SendGlobalDeleteMessagesJSONOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,6 +26,7 @@ import ObvEngine import ObvUICoreData +/// Called prior the processing the message deletion requested by an owned identity from the current device, when the deletionType is .global. final class SendGlobalDeleteMessagesJSONOperation: OperationWithSpecificReasonForCancel { private let persistedMessageObjectIDs: [NSManagedObjectID] @@ -56,7 +57,7 @@ final class SendGlobalDeleteMessagesJSONOperation: OperationWithSpecificReasonFo let discussion: PersistedDiscussion do { - let discussions = Set(messages.map { $0.discussion }) + let discussions = Set(messages.compactMap { $0.discussion }) guard discussions.count == 1 else { return cancel(withReason: .unexpectedNumberOfDiscussions(discussionCount: discussions.count)) } @@ -99,7 +100,8 @@ final class SendGlobalDeleteMessagesJSONOperation: OperationWithSpecificReasonFo isVoipMessageForStartingCall: false, attachmentsToSend: [], toContactIdentitiesWithCryptoId: contactCryptoIds, - ofOwnedIdentityWithCryptoId: ownCryptoId) + ofOwnedIdentityWithCryptoId: ownCryptoId, + alsoPostToOtherOwnedDevices: true) } catch { return cancel(withReason: .couldNotPostMessageWithinEngine) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation.swift index c2ff0919..5958a491 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,7 @@ import os.log import OlvidUtils import UserNotifications import ObvUICoreData +import ObvSettings /// After too many wrong passcode attempts, we wipe all read once and limited visibility messages until now, if the user decided to choose this option. This wipe is performed by this operation. @@ -57,7 +58,7 @@ final class WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation: Co super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { // If this operation was launched to finish a wipe started by the share extension, we make sure there is indeed a wipe to finish. This is the case iff `userDefaults.getExtensionFailedToWipeAllEphemeralMessagesBeforeDate` is non-nil. Indeed, if a wipe was start, but not finished, by the share extension, this user defaults variable was necessarily set. @@ -66,7 +67,7 @@ final class WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation: Co case .startWipeFromAppOrShareExtension: guard ObvMessengerSettings.Privacy.lockoutCleanEphemeral else { return } - + case .finishIfRequiredWipeStartedByAnExtension: guard userDefaults?.getExtensionFailedToWipeAllEphemeralMessagesBeforeDate != nil else { @@ -75,113 +76,106 @@ final class WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation: Co } - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { + + // Determine the date until which read-once and limited visibility messages must be wiped + + let timestampOfLastMessageToWipe: Date - do { + switch wipeType { - // Determine the date until which read-once and limited visibility messages must be wiped + case .startWipeFromAppOrShareExtension: - let timestampOfLastMessageToWipe: Date + // Get the latest message to wipe in order to get its date - switch wipeType { - - case .startWipeFromAppOrShareExtension: - - // Get the latest message to wipe in order to get its date - - let dateSent = try PersistedMessageSent.getDateOfLatestSentMessageWithLimitedVisibilityOrReadOnce(within: obvContext.context) - let dateReceived = try PersistedMessageReceived.getDateOfLatestReceivedMessageWithLimitedVisibilityOrReadOnce(within: obvContext.context) - - guard dateSent != nil || dateReceived != nil else { - // No message to wipe, we are done - return - } - - timestampOfLastMessageToWipe = max(dateSent ?? .distantPast, dateReceived ?? .distantPast) - - case .finishIfRequiredWipeStartedByAnExtension: - - // When the share extension starts a wipe without finishing it, it sets a date in the user defaults. This date corresponds to the date of the last message to wipe. - // We will use this date here to wipe this message and all those (read-once and with limited visibility) with an earlier date. This makes it possible to preserve messages that may have arrived after this message. - - guard let date = userDefaults?.getExtensionFailedToWipeAllEphemeralMessagesBeforeDate else { - assertionFailure() - return - } - timestampOfLastMessageToWipe = date - + let dateSent = try PersistedMessageSent.getDateOfLatestSentMessageWithLimitedVisibilityOrReadOnce(within: obvContext.context) + let dateReceived = try PersistedMessageReceived.getDateOfLatestReceivedMessageWithLimitedVisibilityOrReadOnce(within: obvContext.context) + + guard dateSent != nil || dateReceived != nil else { + // No message to wipe, we are done + return } - // If we reach this point, we must wipe read-once and limited visibility messages until the date specified in `wipeMessageUntilDate`. + timestampOfLastMessageToWipe = max(dateSent ?? .distantPast, dateReceived ?? .distantPast) - var messagesToDelete = [PersistedMessage]() + case .finishIfRequiredWipeStartedByAnExtension: - if !earlyAbortWipe { - messagesToDelete += try PersistedMessageSent.getAllReadOnceAndLimitedVisibilitySentMessagesToDelete(until: timestampOfLastMessageToWipe, within: obvContext.context) - } + // When the share extension starts a wipe without finishing it, it sets a date in the user defaults. This date corresponds to the date of the last message to wipe. + // We will use this date here to wipe this message and all those (read-once and with limited visibility) with an earlier date. This makes it possible to preserve messages that may have arrived after this message. - if !earlyAbortWipe { - messagesToDelete += try PersistedMessageReceived.getAllReadOnceAndLimitedVisibilityReceivedMessagesToDelete(until: timestampOfLastMessageToWipe, within: obvContext.context) + guard let date = userDefaults?.getExtensionFailedToWipeAllEphemeralMessagesBeforeDate else { + assertionFailure() + return } + timestampOfLastMessageToWipe = date - // Wipe messages - - var infos = [InfoAboutWipedOrDeletedPersistedMessage]() - for message in messagesToDelete { - guard !earlyAbortWipe else { break } - do { - let info = try message.delete(requester: nil) - infos += [info] - } catch { - assertionFailure(error.localizedDescription) - // In production, continue anyway + } + + // If we reach this point, we must wipe read-once and limited visibility messages until the date specified in `wipeMessageUntilDate`. + + var messagesToDelete = [PersistedMessage]() + + if !earlyAbortWipe { + messagesToDelete += try PersistedMessageSent.getAllReadOnceAndLimitedVisibilitySentMessagesToDelete(until: timestampOfLastMessageToWipe, within: obvContext.context) + } + + if !earlyAbortWipe { + messagesToDelete += try PersistedMessageReceived.getAllReadOnceAndLimitedVisibilityReceivedMessagesToDelete(until: timestampOfLastMessageToWipe, within: obvContext.context) + } + + // Wipe messages + + var infos = [InfoAboutWipedOrDeletedPersistedMessage]() + for message in messagesToDelete { + guard !earlyAbortWipe else { break } + do { + let info = try message.deleteExpiredMessage() + infos += [info] + } catch { + assertionFailure(error.localizedDescription) + // In production, continue anyway + } + } + + // If the wipe was aborted early, we want to set an appropriate date in the user defaults. If not, we want to remove any prior date from the user defaults + + let userDefaults = self.userDefaults + let earlyAbortWipe = self.earlyAbortWipe + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + // The following dispatch queue allows to make sure we do not create a deadlock by modifying the user defaults: + // Since these defaults are observed by a coordinator that launches this operation again, we want to make sure the value changes on an independent queue. + DispatchQueue(label: "Queue created in WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation").async { + if earlyAbortWipe { + userDefaults?.setExtensionFailedToWipeAllEphemeralMessagesBeforeDate(with: timestampOfLastMessageToWipe) + } else { + userDefaults?.setExtensionFailedToWipeAllEphemeralMessagesBeforeDate(with: nil) } } - - // If the wipe was aborted early, we want to set an appropriate date in the user defaults. If not, we want to remove any prior date from the user defaults - - let userDefaults = self.userDefaults - let earlyAbortWipe = self.earlyAbortWipe + } + + // If we indeed deleted at least one message, we must refresh the view context + + if !infos.isEmpty { + let viewContext = self.viewContext try obvContext.addContextDidSaveCompletionHandler { error in guard error == nil else { return } - // The following dispatch queue allows to make sure we do not create a deadlock by modifying the user defaults: - // Since these defaults are observed by a coordinator that launches this operation again, we want to make sure the value changes on an independent queue. - DispatchQueue(label: "Queue created in WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation").async { - if earlyAbortWipe { - userDefaults?.setExtensionFailedToWipeAllEphemeralMessagesBeforeDate(with: timestampOfLastMessageToWipe) - } else { - userDefaults?.setExtensionFailedToWipeAllEphemeralMessagesBeforeDate(with: nil) - } - } - } - - // If we indeed deleted at least one message, we must refresh the view context - - if !infos.isEmpty { - let viewContext = self.viewContext - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - // We deleted some persisted messages. We notify about that. - - InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infos) - - // Refresh objects in the view context - - if let viewContext = viewContext { - InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infos) - } + // We deleted some persisted messages. We notify about that. + + InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infos) + + // Refresh objects in the view context + + if let viewContext = viewContext { + InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infos) } } - - } catch { - return cancel(withReason: .coreDataError(error: error)) } + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeExpiredMessagesOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeExpiredMessagesOperation.swift index c05b4bf1..da86da22 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeExpiredMessagesOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeExpiredMessagesOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -35,77 +35,69 @@ final class WipeExpiredMessagesOperation: ContextualOperationWithSpecificReasonF super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + var infos = [InfoAboutWipedOrDeletedPersistedMessage]() - obvContext.performAndWait { - - var infos = [InfoAboutWipedOrDeletedPersistedMessage]() - - // Deal with sent messages - - do { - let now = Date() - let expiredMessages = try PersistedMessageSent.getSentMessagesThatExpired(before: now, within: obvContext.context) - for message in expiredMessages { - if let expirationForSentLimitedExistence = message.expirationForSentLimitedExistence, expirationForSentLimitedExistence.expirationDate < now { - let info = try message.delete(requester: nil) + // Deal with sent messages + + do { + let now = Date() + let expiredMessages = try PersistedMessageSent.getSentMessagesThatExpired(before: now, within: obvContext.context) + for message in expiredMessages { + if let expirationForSentLimitedExistence = message.expirationForSentLimitedExistence, expirationForSentLimitedExistence.expirationDate < now { + let info = try message.deleteExpiredMessage() + infos += [info] + } else if let expirationForSentLimitedVisibility = message.expirationForSentLimitedVisibility, expirationForSentLimitedVisibility.expirationDate < now { + do { + let info = try message.wipeOrDeleteExpiredMessageSent() infos += [info] - } else if let expirationForSentLimitedVisibility = message.expirationForSentLimitedVisibility, expirationForSentLimitedVisibility.expirationDate < now { - do { - let info = try message.wipeOrDelete(requester: nil) - infos += [info] - } catch { - os_log("Could not wipe a message sent with expired visibility", log: log, type: .fault) - assertionFailure() - // Continue anyway - } - } else { - assertionFailure("A message that we fetched because it expired has not expiration before now. Weird.") + } catch { + os_log("Could not wipe a message sent with expired visibility", log: log, type: .fault) + assertionFailure() + // Continue anyway } + } else { + assertionFailure("A message that we fetched because it expired has not expiration before now. Weird.") } - } catch { - cancel(withReason: .coreDataError(error: error)) - return } - - // Deal with received messages - - do { - let expiredMessages = try PersistedMessageReceived.getReceivedMessagesThatExpired(within: obvContext.context) - for message in expiredMessages { - let info = try message.delete(requester: nil) - infos += [info] - } - } catch { - cancel(withReason: .coreDataError(error: error)) - return + } catch { + cancel(withReason: .coreDataError(error: error)) + return + } + + // Deal with received messages + + do { + let expiredMessages = try PersistedMessageReceived.getReceivedMessagesThatExpired(within: obvContext.context) + for message in expiredMessages { + let info = try message.deleteExpiredMessage() + infos += [info] } - - // Notify on context save - - do { - if !infos.isEmpty { - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - // We wiped/deleted some persisted messages. We notify about that. - - InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infos) - - // Refresh objects in the view context - - if let viewContext = self.viewContext { - InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infos) - } + } catch { + cancel(withReason: .coreDataError(error: error)) + return + } + + // Notify on context save + + do { + if !infos.isEmpty { + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + // We wiped/deleted some persisted messages. We notify about that. + + InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infos) + + // Refresh objects in the view context + + if let viewContext = self.viewContext { + InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infos) } } - } catch { - return cancel(withReason: .coreDataError(error: error)) } - + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeFyleMessageJoinsWithStatusOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeFyleMessageJoinsWithStatusOperation.swift index ae67ab45..47137484 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeFyleMessageJoinsWithStatusOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeFyleMessageJoinsWithStatusOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,101 +21,130 @@ import Foundation import OlvidUtils import ObvUICoreData +import ObvTypes +import CoreData /// This operation is typically called when the user selects several "attachments" (more precisely, `FyleMessageJoinWithStatus` instances) in the gallery of a discussion, and then requests their deletion. In practice, these joins are wiped. -final class WipeFyleMessageJoinsWithStatusOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingPersistedMessageObjectIDsToDelete, ObvErrorMaker { +final class WipeFyleMessageJoinsWithStatusOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingPersistedMessageObjectIDsToDelete { private let joinObjectIDs: Set> - static let errorDomain = "WipeFyleMessageJoinsWithStatusOperation" /// When wiping an attachment (aka `FyleMessageJoinWithStatus`), we might end with an "empty" message. In that case we want to delete this message atomically. /// We do *not* delete this message in this operation. Instead we add its objectID to this set. The coordinator is in charge of queueing the appropriate operation that will delete /// the message properly. private(set) var persistedMessageObjectIDsToDelete = Set>() - let requester: RequesterOfMessageDeletion + let ownedCryptoId: ObvCryptoId + let deletionType: DeletionType private let queueForPostingNotifications = DispatchQueue(label: "WipeFyleMessageJoinsWithStatusOperation internal queue for posting notifications") - init(joinObjectIDs: Set>, requester: RequesterOfMessageDeletion) { + init(joinObjectIDs: Set>, ownedCryptoId: ObvCryptoId, deletionType: DeletionType) { self.joinObjectIDs = joinObjectIDs - self.requester = requester + self.ownedCryptoId = ownedCryptoId + self.deletionType = deletionType super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - guard !joinObjectIDs.isEmpty else { return } - switch requester { - case .ownedIdentity: - break - case .contact: - assertionFailure() - return cancel(withReason: .coreDataError(error: Self.makeError(message: "Unexpected deletion requester"))) - } - - obvContext.performAndWait { + do { - do { + for joinObjectID in joinObjectIDs { - for joinObjectID in joinObjectIDs { - - guard let join = try FyleMessageJoinWithStatus.get(objectID: joinObjectID.objectID, within: obvContext.context) else { continue } - - if let sentJoin = join as? SentFyleMessageJoinWithStatus { - do { - try sentJoin.wipe() - if sentJoin.sentMessage.shouldBeDeleted { - persistedMessageObjectIDsToDelete.insert(sentJoin.sentMessage.typedObjectID.downcast) - } - } catch { - assertionFailure() - continue + guard let join = try FyleMessageJoinWithStatus.get(objectID: joinObjectID.objectID, within: obvContext.context) else { continue } + + var messagesToRefreshInViewContext = Set>() + + if let sentJoin = join as? SentFyleMessageJoinWithStatus { + do { + try sentJoin.wipe() + if sentJoin.sentMessage.shouldBeDeleted { + persistedMessageObjectIDsToDelete.insert(sentJoin.sentMessage.typedObjectID.downcast) + } else { + messagesToRefreshInViewContext.insert(sentJoin.sentMessage.typedObjectID.downcast) } - } else if let receivedJoin = join as? ReceivedFyleMessageJoinWithStatus { - do { - try receivedJoin.wipe() - if receivedJoin.receivedMessage.shouldBeDeleted { - persistedMessageObjectIDsToDelete.insert(receivedJoin.receivedMessage.typedObjectID.downcast) - } - } catch { - assertionFailure() - continue + } catch { + assertionFailure() + continue + } + } else if let receivedJoin = join as? ReceivedFyleMessageJoinWithStatus { + do { + try receivedJoin.wipe() + if receivedJoin.receivedMessage.shouldBeDeleted { + persistedMessageObjectIDsToDelete.insert(receivedJoin.receivedMessage.typedObjectID.downcast) + } else { + messagesToRefreshInViewContext.insert(receivedJoin.receivedMessage.typedObjectID.downcast) } - } else { - assertionFailure("Unexpected FyleMessageJoinWithStatus subclass") + } catch { + assertionFailure() continue } - - // If the context is successfully saved, we want to notify that the join was wiped (so as to deleted hard links) - - if let discussionPermanentID = join.message?.discussion.discussionPermanentID, - let messagePermanentID = join.message?.messagePermanentID { - let fyleMessageJoinPermanentID = join.fyleMessageJoinPermanentID - do { - let queueForPostingNotifications = self.queueForPostingNotifications - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - ObvMessengerInternalNotification.fyleMessageJoinWasWiped(discussionPermanentID: discussionPermanentID, - messagePermanentID: messagePermanentID, - fyleMessageJoinPermanentID: fyleMessageJoinPermanentID) - .postOnDispatchQueue(queueForPostingNotifications) + } else { + assertionFailure("Unexpected FyleMessageJoinWithStatus subclass") + continue + } + + // If the context is successfully saved, we want to notify that the join was wiped (so as to deleted hard links) + + if let discussionPermanentID = join.message?.discussion?.discussionPermanentID, + let messagePermanentID = join.message?.messagePermanentID { + let fyleMessageJoinPermanentID = join.fyleMessageJoinPermanentID + do { + let queueForPostingNotifications = self.queueForPostingNotifications + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvMessengerInternalNotification.fyleMessageJoinWasWiped(discussionPermanentID: discussionPermanentID, + messagePermanentID: messagePermanentID, + fyleMessageJoinPermanentID: fyleMessageJoinPermanentID) + .postOnDispatchQueue(queueForPostingNotifications) + } + } catch { + assertionFailure() // Continue anyway + } + } + + // Since we modified attachments, we probably need to refresh their associated messages. + // All the messages that need to be refreshed in the view context are indicated in messagesToRefreshInViewContext. + // In the following completion handler, we look for those that are indeed registered in the view context and refresh them. + // If a refreshed message is an illustrative message for a discussion (and, as such, does appear in the list of recent discussions), + // we also refresh the associated discussion. + + if !messagesToRefreshInViewContext.isEmpty { + do { + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvStack.shared.viewContext.perform { + let messagesInViewContext = ObvStack.shared.viewContext.registeredObjects + .filter({ !$0.isDeleted }) + .compactMap({ $0 as? PersistedMessage }) + .filter({ messagesToRefreshInViewContext.contains($0.typedObjectID) }) + for message in messagesInViewContext { + ObvStack.shared.viewContext.refresh(message, mergeChanges: false) + if let discussion = message.discussion, discussion.illustrativeMessage == message { + // The refreshed message is the illustrative message of its discussion. If that discussion is registered in the view context, we refresh it. + if let discussionInViewContext = ObvStack.shared.viewContext.registeredObjects + .filter({ !$0.isDeleted }) + .first(where: { $0.objectID == discussion.objectID }) { + ObvStack.shared.viewContext.refresh(discussionInViewContext, mergeChanges: false) + } + + } + } } - } catch { - assertionFailure() // Continue anyway } + } catch { + assertionFailure() // Continue anyway } - } - } catch { - return cancel(withReason: .coreDataError(error: error)) } + + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeMessagesOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeMessagesOperation.swift deleted file mode 100644 index e9ddefbd..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeMessagesOperation.swift +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import ObvEngine -import ObvTypes -import OlvidUtils -import ObvCrypto -import ObvUICoreData - - -/// This method is typically called when we receive a request to delete some messages by a contact willing to globally delete these messages -final class WipeMessagesOperation: ContextualOperationWithSpecificReasonForCancel { - - private let groupIdentifier: GroupIdentifier? - private let messagesToDelete: [MessageReferenceJSON] - private let requester: ObvContactIdentity - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: WipeMessagesOperation.self)) - private let saveRequestIfMessageCannotBeFound: Bool - private let messageUploadTimestampFromServer: Date - - init(messagesToDelete: [MessageReferenceJSON], groupIdentifier: GroupIdentifier?, requester: ObvContactIdentity, messageUploadTimestampFromServer: Date, saveRequestIfMessageCannotBeFound: Bool) { - self.messagesToDelete = messagesToDelete - self.groupIdentifier = groupIdentifier - self.requester = requester - self.saveRequestIfMessageCannotBeFound = saveRequestIfMessageCannotBeFound - self.messageUploadTimestampFromServer = messageUploadTimestampFromServer - super.init() - } - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - guard !messagesToDelete.isEmpty else { assertionFailure(); return } - - obvContext.performAndWait { - - // Get the contact and the owned identities - - let contact: PersistedObvContactIdentity - do { - do { - guard let _contact = try PersistedObvContactIdentity.get(persisted: requester, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindContact) - } - contact = _contact - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - } - - guard let ownedIdentity = contact.ownedIdentity else { - return cancel(withReason: .couldNotFindOwnedIdentity) - } - - // Recover the appropriate discussion. In case of a group discussion, make sure the contact is part of the group - - let discussion: PersistedDiscussion - do { - if let groupIdentifier = self.groupIdentifier { - switch groupIdentifier { - case .groupV1(let groupV1Identifier): - guard let group = try PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedIdentity: ownedIdentity) else { - return cancel(withReason: .couldNotFindGroupDiscussion) - } - guard group.contactIdentities.contains(contact) || group.ownerIdentity == requester.cryptoId.getIdentity() else { - return cancel(withReason: .wipeRequestedByNonGroupMember) - } - discussion = group.discussion - case .groupV2(let groupV2Identifier): - guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupV2Identifier) else { - return cancel(withReason: .couldNotFindGroupDiscussion) - } - guard let requester = group.otherMembers.first(where: { $0.identity == requester.cryptoId.getIdentity() }) else { - return cancel(withReason: .wipeRequestedByNonGroupMember) - } - guard requester.isAllowedToRemoteDeleteAnything || requester.isAllowedToEditOrRemoteDeleteOwnMessages else { - assertionFailure() - return cancel(withReason: .wipeRequestedByMemberNotAllowedToRemoteDelete) - } - guard let _discussion = group.discussion else { - return cancel(withReason: .couldNotFindGroupDiscussion) - } - discussion = _discussion - } - } else if let oneToOneDiscussion = contact.oneToOneDiscussion { - discussion = oneToOneDiscussion - } else { - return cancel(withReason: .couldNotFindDiscussion) - } - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) - } - - // Get the sent messages to wipe - - let sentMessagesToWipe = messagesToDelete - .filter({ $0.senderIdentifier == ownedIdentity.cryptoId.getIdentity() }) - .compactMap({ - try? PersistedMessageSent.get(senderSequenceNumber: $0.senderSequenceNumber, - senderThreadIdentifier: $0.senderThreadIdentifier, - ownedIdentity: $0.senderIdentifier, - discussion: discussion) - }) - - // Get received messages to wipe. If a message cannot be found, save the request for later if `saveRequestIfMessageCannotBeFound` is true - - var receivedMessagesToWipe = [PersistedMessageReceived]() - do { - let receivedMessages = messagesToDelete - .filter({ $0.senderIdentifier != ownedIdentity.cryptoId.getIdentity() }) - for receivedMessage in receivedMessages { - if let persistedMessageReceived = try PersistedMessageReceived.get(senderSequenceNumber: receivedMessage.senderSequenceNumber, - senderThreadIdentifier: receivedMessage.senderThreadIdentifier, - contactIdentity: receivedMessage.senderIdentifier, - discussion: discussion) { - receivedMessagesToWipe.append(persistedMessageReceived) - } else if saveRequestIfMessageCannotBeFound { - _ = try RemoteDeleteAndEditRequest.createDeleteRequest(remoteDeleterIdentity: requester.cryptoId.getIdentity(), - messageReference: receivedMessage, - serverTimestamp: messageUploadTimestampFromServer, - discussion: discussion) - } - } - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - // Wipe each message and notify on context change - - var infos = [InfoAboutWipedOrDeletedPersistedMessage]() - - for message in sentMessagesToWipe { - let requesterOfDeletion = RequesterOfMessageDeletion.contact(ownedCryptoId: ownedIdentity.cryptoId, - contactCryptoId: contact.cryptoId, - messageUploadTimestampFromServer: messageUploadTimestampFromServer) - if let info = try? message.wipeOrDelete(requester: requesterOfDeletion) { - infos.append(info) - } - } - - for message in receivedMessagesToWipe { - if let info = try? message.wipeByContact(ownedCryptoId: ownedIdentity.cryptoId, - contactCryptoId: contact.cryptoId, - messageUploadTimestampFromServer: messageUploadTimestampFromServer) { - infos.append(info) - } - } - - // We notify on context save - - do { - if let viewContext, !infos.isEmpty { - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - // We wiped/deleted some persisted messages. We notify about that. - - InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infos) - - // Refresh objects in the view context - InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infos) - } - } - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - } - - } -} - - -enum WipeMessagesOperationReasonForCancel: LocalizedErrorWithLogType { - - case coreDataError(error: Error) - case contextIsNil - case couldNotFindOwnedIdentity - case couldNotFindGroupDiscussion - case couldNotFindContact - case wipeRequestedByNonGroupMember - case wipeRequestedByMemberNotAllowedToRemoteDelete - case couldNotFindDiscussion - - var logType: OSLogType { - switch self { - case .wipeRequestedByMemberNotAllowedToRemoteDelete: - return .error - case .coreDataError, .couldNotFindOwnedIdentity, .couldNotFindGroupDiscussion, .couldNotFindContact, .wipeRequestedByNonGroupMember, .contextIsNil, .couldNotFindDiscussion: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .contextIsNil: - return "The context is not set" - case .couldNotFindOwnedIdentity: - return "Could not find owned identity" - case .couldNotFindGroupDiscussion: - return "Could not find group discussion" - case .couldNotFindContact: - return "Could not find the contact identity" - case .wipeRequestedByNonGroupMember: - return "The message wipe was requested by a contact that is not part of the group" - case .couldNotFindDiscussion: - return "Could not find discussion" - case .wipeRequestedByMemberNotAllowedToRemoteDelete: - return "The message wipe was requested by a member who is not allowed to perform remote delete" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeOrDeleteReadOnceMessagesOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeOrDeleteReadOnceMessagesOperation.swift index e12161c5..3fbbac94 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeOrDeleteReadOnceMessagesOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeOrDeleteReadOnceMessagesOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -43,85 +43,77 @@ final class WipeOrDeleteReadOnceMessagesOperation: ContextualOperationWithSpecif super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) + // We deal with sent messages + + let sentMessages: [PersistedMessageSent] + do { + sentMessages = try PersistedMessageSent.getReadOnceThatWasSent( + restrictToDiscussionWithPermanentID: restrictToDiscussionWithPermanentID, + within: obvContext.context) + } catch { + os_log("Could not get all readOnce sent messages that should be deleted: %{public}@", log: log, type: .fault, error.localizedDescription) + assertionFailure() + cancel(withReason: .coreDataError(error: error)) + return } - obvContext.performAndWait { - - // We deal with sent messages + var infos = [InfoAboutWipedOrDeletedPersistedMessage]() + + for sentMessage in sentMessages { + do { + let info = try sentMessage.wipeOrDeleteExpiredMessageSent() + infos += [info] + } catch { + os_log("Could not wipe readOnce sent message: %{public}@", log: log, type: .fault, error.localizedDescription) + } + } + + // We deal with received messages + + if !preserveReceivedMessages { - let sentMessages: [PersistedMessageSent] + let receivedMessages: [PersistedMessageReceived] do { - sentMessages = try PersistedMessageSent.getReadOnceThatWasSent( + receivedMessages = try PersistedMessageReceived.getReadOnceMarkedAsRead( restrictToDiscussionWithPermanentID: restrictToDiscussionWithPermanentID, within: obvContext.context) } catch { - os_log("Could not get all readOnce sent messages that should be deleted: %{public}@", log: log, type: .fault, error.localizedDescription) + os_log("Could not get all readOnce received messages that should be deleted: %{public}@", log: log, type: .fault, error.localizedDescription) assertionFailure() cancel(withReason: .coreDataError(error: error)) return } - - var infos = [InfoAboutWipedOrDeletedPersistedMessage]() - - for sentMessage in sentMessages { - do { - let info = try sentMessage.wipeOrDelete(requester: nil) - infos += [info] - } catch { - os_log("Could not wipe readOnce sent message: %{public}@", log: log, type: .fault, error.localizedDescription) - } - } - - // We deal with received messages - if !preserveReceivedMessages { - - let receivedMessages: [PersistedMessageReceived] + for receivedMessage in receivedMessages { do { - receivedMessages = try PersistedMessageReceived.getReadOnceMarkedAsRead( - restrictToDiscussionWithPermanentID: restrictToDiscussionWithPermanentID, - within: obvContext.context) + let info = try receivedMessage.deleteExpiredMessage() + infos += [info] } catch { - os_log("Could not get all readOnce received messages that should be deleted: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - cancel(withReason: .coreDataError(error: error)) - return - } - - for receivedMessage in receivedMessages { - do { - let info = try receivedMessage.delete(requester: nil) - infos += [info] - } catch { - os_log("Could not delete readOnce received message: %{public}@", log: log, type: .fault, error.localizedDescription) - } + os_log("Could not delete readOnce received message: %{public}@", log: log, type: .fault, error.localizedDescription) } } - - // We notify on context save - - do { - if !infos.isEmpty { - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - // We wiped/deleted some persisted messages. We notify about that. - - InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infos) - - // Refresh objects in the view context - if let viewContext = self.viewContext { - InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infos) - } + } + + // We notify on context save + + do { + if !infos.isEmpty { + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + // We wiped/deleted some persisted messages. We notify about that. + + InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infos) + + // Refresh objects in the view context + if let viewContext = self.viewContext { + InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infos) } } - } catch { - return cancel(withReason: .coreDataError(error: error)) } - + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/DetermineDiscussionForReportingCallOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/DetermineDiscussionForReportingCallOperation.swift index 281260ae..403896ca 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/DetermineDiscussionForReportingCallOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/DetermineDiscussionForReportingCallOperation.swift @@ -21,6 +21,7 @@ import Foundation import OlvidUtils import os.log import ObvUICoreData +import CoreData final class DetermineDiscussionForReportingCallOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingPersistedDiscussion { @@ -34,67 +35,59 @@ final class DetermineDiscussionForReportingCallOperation: ContextualOperationWit super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { - do { - - guard let item = try PersistedCallLogItem.get(objectID: persistedCallLogItemObjectID, within: obvContext.context) else { - return cancel(withReason: .cannotFindPersistedCallLogItem) + guard let item = try PersistedCallLogItem.get(objectID: persistedCallLogItemObjectID, within: obvContext.context) else { + return cancel(withReason: .cannotFindPersistedCallLogItem) + } + + if let groupId = try item.getGroupIdentifier() { + switch groupId { + case .groupV1(let objectID): + guard let contactGroup = try PersistedContactGroup.get(objectID: objectID.objectID, within: obvContext.context) else { + return cancel(withReason: .cannotFindPersistedContactGroup) + } + persistedDiscussionObjectID = contactGroup.discussion.typedObjectID.downcast + return + case .groupV2(let objectID): + guard let group = try PersistedGroupV2.get(objectID: objectID, within: obvContext.context) else { + return cancel(withReason: .cannotFindPersistedGroupV2) + } + guard let discussion = group.discussion else { + return cancel(withReason: .cannotFindPersistedGroupV2Discussion) + } + persistedDiscussionObjectID = discussion.typedObjectID.downcast + return } - - if let groupId = try item.getGroupIdentifier() { - switch groupId { - case .groupV1(let objectID): - guard let contactGroup = try PersistedContactGroup.get(objectID: objectID.objectID, within: obvContext.context) else { - return cancel(withReason: .cannotFindPersistedContactGroup) - } - persistedDiscussionObjectID = contactGroup.discussion.typedObjectID.downcast - return - case .groupV2(let objectID): - guard let group = try PersistedGroupV2.get(objectID: objectID, within: obvContext.context) else { - return cancel(withReason: .cannotFindPersistedGroupV2) - } - guard let discussion = group.discussion else { - return cancel(withReason: .cannotFindPersistedGroupV2Discussion) - } - persistedDiscussionObjectID = discussion.typedObjectID.downcast - return + } else { + if item.isIncoming { + guard let caller = item.logContacts.first(where: {$0.isCaller}), + let callerIdentity = caller.contactIdentity else { + return cancel(withReason: .cannotFindCaller) } - } else { - if item.isIncoming { - guard let caller = item.logContacts.first(where: {$0.isCaller}), - let callerIdentity = caller.contactIdentity else { - return cancel(withReason: .cannotFindCaller) - } - if let oneToOneDiscussion = callerIdentity.oneToOneDiscussion { - persistedDiscussionObjectID = oneToOneDiscussion.typedObjectID.downcast - return - } else { - // Do not report this call. - return - } - } else if item.logContacts.count == 1, - let contact = item.logContacts.first, - let contactIdentity = contact.contactIdentity, - let oneToOneDiscussion = contactIdentity.oneToOneDiscussion { + if let oneToOneDiscussion = callerIdentity.oneToOneDiscussion { persistedDiscussionObjectID = oneToOneDiscussion.typedObjectID.downcast + return } else { // Do not report this call. return } - + } else if item.logContacts.count == 1, + let contact = item.logContacts.first, + let contactIdentity = contact.contactIdentity, + let oneToOneDiscussion = contactIdentity.oneToOneDiscussion { + persistedDiscussionObjectID = oneToOneDiscussion.typedObjectID.downcast + } else { + // Do not report this call. + return } - } catch { - return cancel(withReason: .coreDataError(error: error)) } + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/AddReplyToOnDraftOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/AddReplyToOnDraftOperation.swift index f55e9ad2..07729cde 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/AddReplyToOnDraftOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/AddReplyToOnDraftOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import OlvidUtils import os.log import CoreData import ObvUICoreData +import CoreData final class AddReplyToOnDraftOperation: ContextualOperationWithSpecificReasonForCancel { @@ -36,30 +37,24 @@ final class AddReplyToOnDraftOperation: ContextualOperationWithSpecificReasonFor } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - do { - guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDraftInDatabase) - } - guard let repliedTo = try PersistedMessage.get(with: messageObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindMessageInDatabase) - } - guard draft.discussion == repliedTo.discussion else { - return cancel(withReason: .incoherentDiscussion) - } - guard repliedTo is PersistedMessageReceived || repliedTo is PersistedMessageSent else { - return cancel(withReason: .repliedToMessageIsNeitherSentOrReceived) - } - draft.setReplyTo(to: repliedTo) - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDraftInDatabase) + } + guard let repliedTo = try PersistedMessage.get(with: messageObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindMessageInDatabase) + } + guard draft.discussion == repliedTo.discussion else { + return cancel(withReason: .incoherentDiscussion) + } + guard repliedTo is PersistedMessageReceived || repliedTo is PersistedMessageSent else { + return cancel(withReason: .repliedToMessageIsNeitherSentOrReceived) } + draft.setReplyTo(to: repliedTo) + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/DeleteAllDraftFyleJoinOfDraftOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/DeleteAllDraftFyleJoinOfDraftOperation.swift index c3c01a0e..cbe806be 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/DeleteAllDraftFyleJoinOfDraftOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/DeleteAllDraftFyleJoinOfDraftOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -35,23 +35,17 @@ final class DeleteAllDraftFyleJoinOfDraftOperation: ContextualOperationWithSpeci super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDraftInDatabase) - } - draft.removeAllDraftFyleJoin() - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDraftInDatabase) } + draft.removeAllDraftFyleJoin() + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/DeleteDraftFyleJoin.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/DeleteDraftFyleJoin.swift index 9f397e4b..66bcca96 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/DeleteDraftFyleJoin.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/DeleteDraftFyleJoin.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/LoadFileRepresentationsThenCreateDraftFyleJoinsCompositeOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/LoadFileRepresentationsThenCreateDraftFyleJoinsCompositeOperation.swift index fa926bc5..c0fa6713 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/LoadFileRepresentationsThenCreateDraftFyleJoinsCompositeOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/LoadFileRepresentationsThenCreateDraftFyleJoinsCompositeOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import os.log import CoreData import ObvCrypto import ObvUICoreData +import UniformTypeIdentifiers /// This is a legacy operation, use `NewLoadFileRepresentationsThenCreateDraftFyleJoinsCompositeOperation` instead @@ -116,7 +117,7 @@ fileprivate final class CreateDraftFyleJoinsFromLoadedFileRepresentationsOperati switch loadedItemProvider { - case .file(tempURL: let tempURL, uti: let uti, filename: let filename): + case .file(tempURL: let tempURL, fileType: let fileType, filename: let filename): // Compute the sha256 of the file let sha256: Data @@ -137,7 +138,7 @@ fileprivate final class CreateDraftFyleJoinsFromLoadedFileRepresentationsOperati // Create a PersistedDraftFyleJoin (if required) do { - try createDraftFyleJoin(draftPermanentID: draftPermanentID, fileName: filename, uti: uti, fyle: fyle, within: context) + try createDraftFyleJoin(draftPermanentID: draftPermanentID, fileName: filename, fileType: fileType, fyle: fyle, within: context) } catch { cancelAndContinue(withReason: .couldNotCreateDraftFyleJoin) tempURLsToDelete.append(tempURL) @@ -195,9 +196,9 @@ fileprivate final class CreateDraftFyleJoinsFromLoadedFileRepresentationsOperati } - private func createDraftFyleJoin(draftPermanentID: ObvManagedObjectPermanentID, fileName: String, uti: String, fyle: Fyle, within context: NSManagedObjectContext) throws { + private func createDraftFyleJoin(draftPermanentID: ObvManagedObjectPermanentID, fileName: String, fileType: UTType, fyle: Fyle, within context: NSManagedObjectContext) throws { if try PersistedDraftFyleJoin.get(draftPermanentID: draftPermanentID, fyleObjectID: fyle.objectID, within: context) == nil { - guard PersistedDraftFyleJoin(draftPermanentID: draftPermanentID, fyleObjectID: fyle.objectID, fileName: fileName, uti: uti, within: context) != nil else { + guard PersistedDraftFyleJoin(draftPermanentID: draftPermanentID, fyleObjectID: fyle.objectID, fileName: fileName, uti: fileType.identifier, within: context) != nil else { throw makeError(message: "Could not create PersistedDraftFyleJoin") } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/NewCreateDraftFyleJoinsFromLoadedFileRepresentationsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/NewCreateDraftFyleJoinsFromLoadedFileRepresentationsOperation.swift index 40f77265..269d5617 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/NewCreateDraftFyleJoinsFromLoadedFileRepresentationsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/NewCreateDraftFyleJoinsFromLoadedFileRepresentationsOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,7 @@ import ObvEngine import ObvCrypto import ObvUICoreData import OlvidUtils +import UniformTypeIdentifiers /// This operation takes an array of loaded file representations as an input. This array is typically the output of a several `LoadFileRepresentationOperation` operations. @@ -69,13 +70,7 @@ final class NewCreateDraftFyleJoinsFromLoadedFileRepresentationsOperation: Conte super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - assertionFailure() - completionHandler?(false) - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { let loadedItemProviders: [LoadedItemProvider] switch loadedItemProvidersType { @@ -85,123 +80,120 @@ final class NewCreateDraftFyleJoinsFromLoadedFileRepresentationsOperation: Conte assert(operations.allSatisfy({$0.isFinished})) loadedItemProviders = operations.compactMap({ $0.loadedItemProvider }) } - + // We add as many attachments as we can - obvContext.performAndWait { - - var tempURLsToDelete = [URL]() - - for loadedItemProvider in loadedItemProviders { + + var tempURLsToDelete = [URL]() + + for loadedItemProvider in loadedItemProviders { + + switch loadedItemProvider { - switch loadedItemProvider { + case .file(tempURL: let tempURL, fileType: let fileType, filename: let filename): - case .file(tempURL: let tempURL, uti: let uti, filename: let filename): - - // Compute the sha256 of the file - let sha256: Data - do { - sha256 = try Sha256.hash(fileAtUrl: tempURL) - } catch { - cancelAndContinue(withReason: .couldNotComputeSha256) - tempURLsToDelete.append(tempURL) - continue - } - - // Get or create a Fyle - guard let fyle: Fyle = try? Fyle.getOrCreate(sha256: sha256, within: obvContext.context) else { - cancelAndContinue(withReason: .couldNotGetOrCreateFyle) - tempURLsToDelete.append(tempURL) - continue - } - - // Create a PersistedDraftFyleJoin (if required) - do { - try createDraftFyleJoin(draftPermanentID: draftPermanentID, fileName: filename, uti: uti, fyle: fyle, within: obvContext.context) - } catch { - cancelAndContinue(withReason: .couldNotCreateDraftFyleJoin) - tempURLsToDelete.append(tempURL) - continue - } - - // We move the received file to a permanent location - - do { - try fyle.moveFileToPermanentURL(from: tempURL, logTo: log) - } catch { - cancelAndContinue(withReason: .couldNotMoveFileToPermanentURL(error: error)) - tempURLsToDelete.append(tempURL) - continue - } - - case .text(content: let textContent): - - let qBegin = Locale.current.quotationBeginDelimiter ?? "\"" - let qEnd = Locale.current.quotationEndDelimiter ?? "\"" - - let textToAppend = [qBegin, textContent, qEnd].joined(separator: "") - - guard let draft = try? PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: obvContext.context) else { - cancelAndContinue(withReason: .couldNotGetDraft) - continue - } - - draft.appendContentToBody(textToAppend) - - case .url(content: let url): - - guard let draft = try? PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: obvContext.context) else { - cancelAndContinue(withReason: .couldNotGetDraft) - continue - } - draft.appendContentToBody(url.absoluteString) - + // Compute the sha256 of the file + let sha256: Data + do { + sha256 = try Sha256.hash(fileAtUrl: tempURL) + } catch { + cancelAndContinue(withReason: .couldNotComputeSha256) + tempURLsToDelete.append(tempURL) + continue + } + + // Get or create a Fyle + guard let fyle: Fyle = try? Fyle.getOrCreate(sha256: sha256, within: obvContext.context) else { + cancelAndContinue(withReason: .couldNotGetOrCreateFyle) + tempURLsToDelete.append(tempURL) + continue + } + + // Create a PersistedDraftFyleJoin (if required) + do { + try createDraftFyleJoin(draftPermanentID: draftPermanentID, fileName: filename, fileType: fileType, fyle: fyle, within: obvContext.context) + } catch { + cancelAndContinue(withReason: .couldNotCreateDraftFyleJoin) + tempURLsToDelete.append(tempURL) + continue + } + + // We move the received file to a permanent location + + do { + try fyle.moveFileToPermanentURL(from: tempURL, logTo: log) + } catch { + cancelAndContinue(withReason: .couldNotMoveFileToPermanentURL(error: error)) + tempURLsToDelete.append(tempURL) + continue } + case .text(content: let textContent): + + let qBegin = Locale.current.quotationBeginDelimiter ?? "\"" + let qEnd = Locale.current.quotationEndDelimiter ?? "\"" + + let textToAppend = [qBegin, textContent, qEnd].joined(separator: "") + + guard let draft = try? PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: obvContext.context) else { + cancelAndContinue(withReason: .couldNotGetDraft) + continue + } + + draft.appendContentToBody(textToAppend) + + case .url(content: let url): + + guard let draft = try? PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: obvContext.context) else { + cancelAndContinue(withReason: .couldNotGetDraft) + continue + } + draft.appendContentToBody(url.absoluteString) + } - for urlToDelete in tempURLsToDelete { - try? urlToDelete.moveToTrash() - } - - if isCancelled { - completionHandler?(false) - } else { - let localCompletionHandler = self.completionHandler - if obvContext.context.hasChanges { - do { - let draftPermanentID = self.draftPermanentID - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { - localCompletionHandler?(false) - return - } - ObvStack.shared.viewContext.perform { - if let draftInViewContext = ObvStack.shared.viewContext.registeredObjects - .filter({ !$0.isDeleted }) - .first(where: { ($0 as? PersistedDraft)?.objectPermanentID == draftPermanentID }) { - ObvStack.shared.viewContext.refresh(draftInViewContext, mergeChanges: true) - } - localCompletionHandler?(true) + } + + for urlToDelete in tempURLsToDelete { + try? urlToDelete.moveToTrash() + } + + if isCancelled { + completionHandler?(false) + } else { + let localCompletionHandler = self.completionHandler + if obvContext.context.hasChanges { + do { + let draftPermanentID = self.draftPermanentID + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { + localCompletionHandler?(false) + return + } + ObvStack.shared.viewContext.perform { + if let draftInViewContext = ObvStack.shared.viewContext.registeredObjects + .filter({ !$0.isDeleted }) + .first(where: { ($0 as? PersistedDraft)?.objectPermanentID == draftPermanentID }) { + ObvStack.shared.viewContext.refresh(draftInViewContext, mergeChanges: true) } + localCompletionHandler?(true) } - } catch { - localCompletionHandler?(false) - } - } else { - obvContext.addEndOfScopeCompletionHandler { - localCompletionHandler?(true) } + } catch { + localCompletionHandler?(false) + } + } else { + obvContext.addEndOfScopeCompletionHandler { + localCompletionHandler?(true) } } - } - + } - private func createDraftFyleJoin(draftPermanentID: ObvManagedObjectPermanentID, fileName: String, uti: String, fyle: Fyle, within context: NSManagedObjectContext) throws { + private func createDraftFyleJoin(draftPermanentID: ObvManagedObjectPermanentID, fileName: String, fileType: UTType, fyle: Fyle, within context: NSManagedObjectContext) throws { if try PersistedDraftFyleJoin.get(draftPermanentID: draftPermanentID, fyleObjectID: fyle.objectID, within: context) == nil { - guard PersistedDraftFyleJoin(draftPermanentID: draftPermanentID, fyleObjectID: fyle.objectID, fileName: fileName, uti: uti, within: context) != nil else { + guard PersistedDraftFyleJoin(draftPermanentID: draftPermanentID, fyleObjectID: fyle.objectID, fileName: fileName, uti: fileType.identifier, within: context) != nil else { throw makeError(message: "Could not create PersistedDraftFyleJoin") } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/RemoveReplyToOnDraftOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/RemoveReplyToOnDraftOperation.swift index 6a618306..2b5951c8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/RemoveReplyToOnDraftOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/RemoveReplyToOnDraftOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -34,21 +34,15 @@ final class RemoveReplyToOnDraftOperation: ContextualOperationWithSpecificReason } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDraftInDatabase) - } - draft.removeReplyTo() - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDraftInDatabase) } + draft.removeReplyTo() + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/RequestedSendingOfDraftOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/RequestedSendingOfDraftOperation.swift index 1591d828..4d1ada3f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/RequestedSendingOfDraftOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/RequestedSendingOfDraftOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -33,24 +33,18 @@ final class RequestedSendingOfDraftOperation: ContextualOperationWithSpecificRea super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - guard let draft = try PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDraftInDatabase) - } - guard draft.isNotEmpty else { - return cancel(withReason: .draftIsEmpty) - } - draft.send() - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let draft = try PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDraftInDatabase) + } + guard draft.isNotEmpty else { + return cancel(withReason: .draftIsEmpty) } + draft.send() + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/SaveBodyTextAndMentionsOfPersistedDraftOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/SaveBodyTextAndMentionsOfPersistedDraftOperation.swift index 0f61de62..ed86540b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/SaveBodyTextAndMentionsOfPersistedDraftOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/SaveBodyTextAndMentionsOfPersistedDraftOperation.swift @@ -42,24 +42,19 @@ final class SaveBodyTextAndMentionsOfPersistedDraftOperation: ContextualOperatio super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - guard let draft = try PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDraftInDatabase) - } - - draft.replaceContentWith(newBody: bodyText, newMentions: mentions) - - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let draft = try PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDraftInDatabase) } + + draft.replaceContentWith(newBody: bodyText, newMentions: mentions) + + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/UpdateDraftBodyAndMentionsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/UpdateDraftBodyAndMentionsOperation.swift index cda30152..e654c95d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/UpdateDraftBodyAndMentionsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Drafts/UpdateDraftBodyAndMentionsOperation.swift @@ -39,24 +39,20 @@ final class UpdateDraftBodyAndMentionsOperation: ContextualOperationWithSpecific super.init() } - override func main() { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDraft) - } - - draft.replaceContentWith(newBody: draftBody, newMentions: mentions) - - } catch { - return cancel(withReason: .coreDataError(error: error)) + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDraft) } + + draft.replaceContentWith(newBody: draftBody, newMentions: mentions) + + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/EditTextBodyOfReceivedMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/EditTextBodyOfReceivedMessageOperation.swift index 2bbe2aed..f804ce67 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/EditTextBodyOfReceivedMessageOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/EditTextBodyOfReceivedMessageOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,176 +27,143 @@ import ObvCrypto import ObvUICoreData -final class EditTextBodyOfReceivedMessageOperation: ContextualOperationWithSpecificReasonForCancel { +final class EditTextBodyOfReceivedMessageOperation: ContextualOperationWithSpecificReasonForCancel { - private let groupIdentifier: GroupIdentifier? - private let requester: ObvContactIdentity - private let newTextBody: String? - private let receivedMessageToEdit: MessageReferenceJSON + enum Requester { + case contact(contactIdentifier: ObvContactIdentifier) + case ownedIdentity(ownedCryptoId: ObvCryptoId) + } + + private let updateMessageJSON: UpdateMessageJSON + private let requester: Requester private let messageUploadTimestampFromServer: Date - private let saveRequestIfMessageCannotBeFound: Bool - private let newMentions: [MessageJSON.UserMention] - init(newTextBody: String?, requester: ObvContactIdentity, groupIdentifier: GroupIdentifier?, receivedMessageToEdit: MessageReferenceJSON, messageUploadTimestampFromServer: Date, saveRequestIfMessageCannotBeFound: Bool, newMentions: [MessageJSON.UserMention]) { - self.newTextBody = newTextBody - self.groupIdentifier = groupIdentifier + init(updateMessageJSON: UpdateMessageJSON, requester: Requester, messageUploadTimestampFromServer: Date) { self.requester = requester + self.updateMessageJSON = updateMessageJSON self.messageUploadTimestampFromServer = messageUploadTimestampFromServer - self.receivedMessageToEdit = receivedMessageToEdit - self.saveRequestIfMessageCannotBeFound = saveRequestIfMessageCannotBeFound - self.newMentions = newMentions super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case processed + } - obvContext.performAndWait { + private(set) var result: Result? + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { - // Get the contact and the owned identities + let updatedMessage: PersistedMessage? - let contact: PersistedObvContactIdentity - do { - do { - guard let _contact = try PersistedObvContactIdentity.get(persisted: requester, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindContact) - } - contact = _contact - } catch { - return cancel(withReason: .coreDataError(error: error)) + switch requester { + + case .contact(contactIdentifier: let contactIdentifier): + + // Get the PersistedObvContactIdentity who requested the edit + + guard let contact = try PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContact) } + + // Process the edit request. If the message is updated, the call returns this updated message + + updatedMessage = try contact.processUpdateMessageRequestFromThisContact( + updateMessageJSON: updateMessageJSON, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .ownedIdentity(ownedCryptoId: let ownedCryptoId): + + // Get the PersistedObvContactIdentity who requested the edit + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + // Process the edit request. If the message is updated, the call returns this updated message + + updatedMessage = try ownedIdentity.processUpdateMessageRequestFromThisOwnedIdentity( + updateMessageJSON: updateMessageJSON, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) + } - guard let ownedIdentity = contact.ownedIdentity else { - return cancel(withReason: .couldNotFindOwnedIdentity) - } - - // Make sure the requester is the one indicated as the identity of the MessageReferenceJSON - - guard contact.cryptoId.getIdentity() == receivedMessageToEdit.senderIdentifier else { - return cancel(withReason: .requesterIsNotTheOneWhoSentTheOriginalMessage) - } - - // Recover the appropriate discussion - - let discussion: PersistedDiscussion - do { - switch groupIdentifier { - case .none: - guard let oneToOneDiscussion = contact.oneToOneDiscussion else { - return cancel(withReason: .couldNotFindAnyDiscussion) - } - discussion = oneToOneDiscussion - case .groupV1(groupV1Identifier: let groupV1Identifier): - guard let group = try PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedIdentity: ownedIdentity) else { - return cancel(withReason: .couldNotFindGroupDiscussion) - } - discussion = group.discussion - case .groupV2(groupV2Identifier: let groupV2Identifier): - guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupV2Identifier) else { - return cancel(withReason: .couldNotFindGroupDiscussion) - } - guard let _discussion = group.discussion else { - return cancel(withReason: .couldNotFindAnyDiscussion) - } - discussion = _discussion - } - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + result = .processed - // If the message to edit can be found, edit it. If not save the request for later if `saveRequestIfMessageCannotBeFound` is true + // If the message appears as a reply-to in some other messages, we must refresh those messages in the view context + // Similarly, if a draft is replying to this message, we must refresh the draft in the view context - do { - if let receivedMessage = try PersistedMessageReceived.get(senderSequenceNumber: receivedMessageToEdit.senderSequenceNumber, - senderThreadIdentifier: receivedMessageToEdit.senderThreadIdentifier, - contactIdentity: contact.cryptoId.getIdentity(), - discussion: discussion) { - try receivedMessage.replaceContentWith(newBody: newTextBody, newMentions: Set(newMentions), requester: contact.cryptoId, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - // If the message appears as a reply-to in some other messages, we must refresh those messages in the view context - // Similarly, if a draft is replying to this message, we must refresh the draft in the view context - - do { - let repliesObjectIDs = receivedMessage.repliesObjectIDs.map({ $0.objectID }) - let draftObjectIDs = try PersistedDraft.getObjectIDsOfAllDraftsReplyingTo(message: receivedMessage).map({ $0.objectID }) - let objectIDsToRefresh = repliesObjectIDs + draftObjectIDs - if !objectIDsToRefresh.isEmpty { - try? obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - DispatchQueue.main.async { - let objectsToRefresh = ObvStack.shared.viewContext.registeredObjects - .filter({ objectIDsToRefresh.contains($0.objectID) }) - objectsToRefresh.forEach { objectID in - ObvStack.shared.viewContext.refresh(objectID, mergeChanges: true) - } + if let updatedMessage { + do { + let repliesObjectIDs = updatedMessage.repliesObjectIDs.map({ $0.objectID }) + let draftObjectIDs = try PersistedDraft.getObjectIDsOfAllDraftsReplyingTo(message: updatedMessage).map({ $0.objectID }) + let objectIDsToRefresh = [updatedMessage.objectID] + repliesObjectIDs + draftObjectIDs + if !objectIDsToRefresh.isEmpty { + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + DispatchQueue.main.async { + let objectsToRefresh = ObvStack.shared.viewContext.registeredObjects + .filter({ objectIDsToRefresh.contains($0.objectID) }) + objectsToRefresh.forEach { objectID in + ObvStack.shared.viewContext.refresh(objectID, mergeChanges: true) } } } - } catch { - assertionFailure() - // In production, continue anyway } - - } else if saveRequestIfMessageCannotBeFound { - try RemoteDeleteAndEditRequest.createEditRequestIfAppropriate(body: newTextBody, - messageReference: receivedMessageToEdit, - serverTimestamp: messageUploadTimestampFromServer, - discussion: discussion) + } catch { + assertionFailure() + // In production, continue anyway + } + } + + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + default: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - } catch { + } else { + assertionFailure() return cancel(withReason: .coreDataError(error: error)) } - } } -} - - -enum EditTextBodyOfReceivedMessageOperationReasonForCancel: LocalizedErrorWithLogType { - case coreDataError(error: Error) - case contextIsNil - case couldNotFindContact - case couldNotFindOwnedIdentity - case couldNotFindGroupDiscussion - case requesterIsNotTheOneWhoSentTheOriginalMessage - case cannotFindMessageReceived - case couldNotEditMessage(error: Error) - case couldNotFindAnyDiscussion - var logType: OSLogType { - switch self { - case .coreDataError, .couldNotFindContact, .couldNotFindOwnedIdentity, .requesterIsNotTheOneWhoSentTheOriginalMessage, .couldNotFindGroupDiscussion, .cannotFindMessageReceived, .couldNotEditMessage, .contextIsNil, .couldNotFindAnyDiscussion: - return .fault + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindContact + case couldNotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, + .couldNotFindContact, + .couldNotFindOwnedIdentity: + return .fault + } } - } - - var errorDescription: String? { - switch self { - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .contextIsNil: - return "The context is not set" - case .couldNotFindOwnedIdentity: - return "Could not find owned identity" - case .couldNotFindContact: - return "Could not find the contact identity" - case .couldNotFindGroupDiscussion: - return "Could not find group discussion" - case .requesterIsNotTheOneWhoSentTheOriginalMessage: - return "The requester is not the one who sent the original message" - case .cannotFindMessageReceived: - return "Could not find received message to edit" - case .couldNotEditMessage(error: let error): - return "Could not edit message: \(error.localizedDescription)" - case .couldNotFindAnyDiscussion: - return "Could not find any discussion" + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .couldNotFindContact: + return "Could not find the contact identity" + } } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/EditTextBodyOfSentMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/EditTextBodyOfSentMessageOperation.swift index 6273c1b4..b9169fb8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/EditTextBodyOfSentMessageOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/EditTextBodyOfSentMessageOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,16 +23,19 @@ import os.log import ObvEngine import OlvidUtils import ObvUICoreData +import ObvTypes -final class EditTextBodyOfSentMessageOperation: ContextualOperationWithSpecificReasonForCancel { +final class EditTextBodyOfSentMessageOperation: ContextualOperationWithSpecificReasonForCancel { - private let persistedSentMessageObjectID: NSManagedObjectID + private let ownedCryptoId: ObvCryptoId + private let persistedSentMessageObjectID: TypeSafeManagedObjectID private let newTextBody: String? private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: EditTextBodyOfSentMessageOperation.self)) - init(persistedSentMessageObjectID: NSManagedObjectID, newTextBody: String?) { + init(ownedCryptoId: ObvCryptoId, persistedSentMessageObjectID: TypeSafeManagedObjectID, newTextBody: String?) { + self.ownedCryptoId = ownedCryptoId self.persistedSentMessageObjectID = persistedSentMessageObjectID if let newTextBody { self.newTextBody = newTextBody.isEmpty ? nil : newTextBody @@ -42,91 +45,75 @@ final class EditTextBodyOfSentMessageOperation: ContextualOperationWithSpecificR super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { - let messageSent: PersistedMessageSent - do { - guard let _messageSent = try PersistedMessageSent.get(with: persistedSentMessageObjectID, within: obvContext.context) as? PersistedMessageSent else { - return cancel(withReason: .cannotFindMessageSent) - } - messageSent = _messageSent - } catch { - return cancel(withReason: .coreDataError(error: error)) + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) } - // If we reach this point, we can edit the text body - // Note that, for now, we do not handle the update of mentions when the users edits the content of a message. We simply remove them. - do { - try messageSent.replaceContentWith(newBody: newTextBody, newMentions: Set()) - } catch { - return cancel(withReason: .failedToEditTextBody(error: error)) - } + let updatedMessage = try ownedIdentity.processLocalUpdateMessageRequestFromThisOwnedIdentity(persistedSentMessageObjectID: persistedSentMessageObjectID, newTextBody: newTextBody) // If the message appears as a reply-to in some other messages, we must refresh those messages in the view context // Similarly, if a draft is replying to this message, we must refresh the draft in the view context - - do { - let repliesObjectIDs = messageSent.repliesObjectIDs.map({ $0.objectID }) - let draftObjectIDs = try PersistedDraft.getObjectIDsOfAllDraftsReplyingTo(message: messageSent).map({ $0.objectID }) - let objectIDsToRefresh = repliesObjectIDs + draftObjectIDs - if !objectIDsToRefresh.isEmpty { - try? obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - DispatchQueue.main.async { - let objectsToRefresh = ObvStack.shared.viewContext.registeredObjects - .filter({ objectIDsToRefresh.contains($0.objectID) }) - objectsToRefresh.forEach { objectID in - ObvStack.shared.viewContext.refresh(objectID, mergeChanges: true) + + if let updatedMessage { + do { + let repliesObjectIDs = updatedMessage.repliesObjectIDs.map({ $0.objectID }) + let draftObjectIDs = try PersistedDraft.getObjectIDsOfAllDraftsReplyingTo(message: updatedMessage).map({ $0.objectID }) + let objectIDsToRefresh = [updatedMessage.objectID] + repliesObjectIDs + draftObjectIDs + if !objectIDsToRefresh.isEmpty { + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + DispatchQueue.main.async { + let objectsToRefresh = ObvStack.shared.viewContext.registeredObjects + .filter({ objectIDsToRefresh.contains($0.objectID) }) + objectsToRefresh.forEach { objectID in + ObvStack.shared.viewContext.refresh(objectID, mergeChanges: true) + } } } } + } catch { + assertionFailure() + // In production, continue anyway } - } catch { - assertionFailure() - // In production, continue anyway } + } catch { + return cancel(withReason: .coreDataError(error: error)) } } - -} - + -enum EditTextBodyOfSentMessageOperationReasonForCancel: LocalizedErrorWithLogType { - - case coreDataError(error: Error) - case cannotFindMessageSent - case failedToEditTextBody(error: Error) - case contextIsNil + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case contextIsNil + case couldNotFindOwnedIdentity - var logType: OSLogType { - switch self { - case .coreDataError, - .cannotFindMessageSent, - .failedToEditTextBody, - .contextIsNil: - return .fault + var logType: OSLogType { + switch self { + case .coreDataError, + .couldNotFindOwnedIdentity, + .contextIsNil: + return .fault + } } - } - - var errorDescription: String? { - switch self { - case .contextIsNil: - return "Context is nil" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .cannotFindMessageSent: - return "Cannot find message sent to edit" - case .failedToEditTextBody(error: let error): - return "Failed to edit text body: \(error.localizedDescription)" + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/SendUpdateMessageJSONOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/SendUpdateMessageJSONOperation.swift index add1f543..8e945474 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/SendUpdateMessageJSONOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Editing sent message/SendUpdateMessageJSONOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,98 +30,104 @@ import ObvUICoreData final class SendUpdateMessageJSONOperation: ContextualOperationWithSpecificReasonForCancel { private let obvEngine: ObvEngine - private let persistedSentMessageObjectID: NSManagedObjectID + private let sentMessageObjectID: TypeSafeManagedObjectID private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SendUpdateMessageJSONOperation.self)) - init(persistedSentMessageObjectID: NSManagedObjectID, obvEngine: ObvEngine) { - self.persistedSentMessageObjectID = persistedSentMessageObjectID + init(sentMessageObjectID: TypeSafeManagedObjectID, obvEngine: ObvEngine) { + self.sentMessageObjectID = sentMessageObjectID self.obvEngine = obvEngine super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - - let messageSent: PersistedMessageSent - do { - guard let _messageSent = try PersistedMessageSent.get(with: persistedSentMessageObjectID, within: obvContext.context) as? PersistedMessageSent else { - return cancel(withReason: .cannotFindMessageSent) - } - messageSent = _messageSent - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - let newTextBody: String? - let userMentions: [MessageJSON.UserMention] - if let textBodyToSend = messageSent.textBodyToSend { - newTextBody = textBodyToSend.isEmpty ? nil : textBodyToSend - userMentions = messageSent - .mentions - .compactMap({ try? $0.userMention }) - } else { - newTextBody = nil - userMentions = [] - } - - let itemJSON: PersistedItemJSON - do { - let updateMessageJSON = try UpdateMessageJSON(persistedMessageSentToEdit: messageSent, - newTextBody: newTextBody, - userMentions: userMentions) - itemJSON = PersistedItemJSON(updateMessageJSON: updateMessageJSON) - } catch { - return cancel(withReason: .couldNotConstructUpdateMessageJSON) + let messageSent: PersistedMessageSent + do { + guard let _messageSent = try PersistedMessageSent.getPersistedMessageSent(objectID: sentMessageObjectID, within: obvContext.context) else { + return cancel(withReason: .cannotFindMessageSent) } - - // Find all the contacts to which this item should be sent. - - let discussion = messageSent.discussion - let contactCryptoIds: Set - let ownCryptoId: ObvCryptoId - do { - (ownCryptoId, contactCryptoIds) = try discussion.getAllActiveParticipants() - } catch { - return cancel(withReason: .couldNotGetCryptoIdOfDiscussionParticipants(error: error)) + messageSent = _messageSent + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + let newTextBody: String? + let userMentions: [MessageJSON.UserMention] + if let textBodyToSend = messageSent.textBodyToSend { + newTextBody = textBodyToSend.isEmpty ? nil : textBodyToSend + userMentions = messageSent + .mentions + .compactMap({ try? $0.userMention }) + } else { + newTextBody = nil + userMentions = [] + } + + let itemJSON: PersistedItemJSON + do { + let updateMessageJSON = try UpdateMessageJSON(persistedMessageSentToEdit: messageSent, + newTextBody: newTextBody, + userMentions: userMentions) + itemJSON = PersistedItemJSON(updateMessageJSON: updateMessageJSON) + } catch { + return cancel(withReason: .couldNotConstructUpdateMessageJSON) + } + + // Find all the contacts to which this item should be sent. + + guard let discussion = messageSent.discussion else { + return cancel(withReason: .couldNotDetermineDiscussion) + } + let contactCryptoIds: Set + let ownCryptoId: ObvCryptoId + do { + (ownCryptoId, contactCryptoIds) = try discussion.getAllActiveParticipants() + } catch { + return cancel(withReason: .couldNotGetCryptoIdOfDiscussionParticipants(error: error)) + } + + // Determine if the owned identity has other owned devices + + let ownedIdentityHasOtherOwnedDevices: Bool + do { + guard let ownedIdentity = discussion.ownedIdentity else { + return cancel(withReason: .cannotFindOwnedIdentity) } - - // Create a payload of the PersistedItemJSON we just created and send it. - // We do not keep track of the message identifiers from engine. - - let payload: Data + ownedIdentityHasOtherOwnedDevices = (ownedIdentity.devices.count > 1) + } + + // Create a payload of the PersistedItemJSON we just created and send it. + // We do not keep track of the message identifiers from engine. + + let payload: Data + do { + payload = try itemJSON.jsonEncode() + } catch { + return cancel(withReason: .failedToEncodePersistedItemJSON) + } + + if !contactCryptoIds.isEmpty || ownedIdentityHasOtherOwnedDevices { + let log = self.log + let obvEngine = self.obvEngine do { - payload = try itemJSON.jsonEncode() - } catch { - return cancel(withReason: .failedToEncodePersistedItemJSON) - } - - if !contactCryptoIds.isEmpty { - let log = self.log - let obvEngine = self.obvEngine - do { - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - do { - _ = try obvEngine.post(messagePayload: payload, - extendedPayload: nil, - withUserContent: false, - isVoipMessageForStartingCall: false, - attachmentsToSend: [], - toContactIdentitiesWithCryptoId: contactCryptoIds, - ofOwnedIdentityWithCryptoId: ownCryptoId) - } catch { - os_log("Could not post message within engine", type: .fault, log) - assertionFailure() - } + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + do { + _ = try obvEngine.post(messagePayload: payload, + extendedPayload: nil, + withUserContent: false, + isVoipMessageForStartingCall: false, + attachmentsToSend: [], + toContactIdentitiesWithCryptoId: contactCryptoIds, + ofOwnedIdentityWithCryptoId: ownCryptoId, + alsoPostToOtherOwnedDevices: true) + } catch { + os_log("Could not post message within engine", type: .fault, log) + assertionFailure() } - } catch { - return cancel(withReason: .couldNotAddContextDidSaveCompletionHandler) } + } catch { + return cancel(withReason: .couldNotAddContextDidSaveCompletionHandler) } } @@ -139,6 +145,8 @@ enum SendUpdateMessageJSONOperationReasonForCancel: LocalizedErrorWithLogType { case failedToEncodePersistedItemJSON case couldNotAddContextDidSaveCompletionHandler case contextIsNil + case couldNotDetermineDiscussion + case cannotFindOwnedIdentity var logType: OSLogType { switch self { @@ -148,6 +156,8 @@ enum SendUpdateMessageJSONOperationReasonForCancel: LocalizedErrorWithLogType { .couldNotAddContextDidSaveCompletionHandler, .failedToEncodePersistedItemJSON, .cannotFindMessageSent, + .cannotFindOwnedIdentity, + .couldNotDetermineDiscussion, .contextIsNil: return .fault } @@ -169,6 +179,10 @@ enum SendUpdateMessageJSONOperationReasonForCancel: LocalizedErrorWithLogType { return "We failed to encode the persisted item JSON" case .couldNotAddContextDidSaveCompletionHandler: return "We failed add a completion handler for sending the serialized DeleteMessagesJSON within the engine" + case .couldNotDetermineDiscussion: + return "Could not determine discussion" + case .cannotFindOwnedIdentity: + return "Cannot find owned identity" } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/PostDiscussionReadJSONEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/PostDiscussionReadJSONEngineOperation.swift new file mode 100644 index 00000000..aa2766d9 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/PostDiscussionReadJSONEngineOperation.swift @@ -0,0 +1,108 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import os.log +import ObvEngine +import ObvUICoreData +import ObvTypes +import CoreData + + +final class PostDiscussionReadJSONEngineOperation: ContextualOperationWithSpecificReasonForCancel { + + let obvEngine: ObvEngine + let op: OperationProvidingDiscussionReadJSON + + init(op: OperationProvidingDiscussionReadJSON, obvEngine: ObvEngine) { + self.obvEngine = obvEngine + self.op = op + super.init() + } + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + assert(op.isFinished) + + guard !op.isCancelled else { return } + guard let discussionReadJSONToSend = op.discussionReadJSONToSend else { return } + guard let ownedCryptoId = op.ownedCryptoId else { assertionFailure(); return } + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + guard ownedIdentity.hasAnotherDeviceWithChannel else { + // No need to propagate the fact that we opened a message with limited visibility since we don't have any other owned device with a secure channel + return + } + + let persistedItemsJSON = PersistedItemJSON(discussionRead: discussionReadJSONToSend) + let payload = try persistedItemsJSON.jsonEncode() + + _ = try obvEngine.post(messagePayload: payload, + extendedPayload: nil, + withUserContent: false, + isVoipMessageForStartingCall: false, + attachmentsToSend: [], + toContactIdentitiesWithCryptoId: Set(), + ofOwnedIdentityWithCryptoId: ownedCryptoId, + alsoPostToOtherOwnedDevices: true) + + + } catch { + return cancel(withReason: .someError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case couldNotFindOwnedIdentity + case someError(error: Error) + + var logType: OSLogType { + return .fault + } + + var errorDescription: String? { + switch self { + case .someError(error: let error): + return "Error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } + } + + } + +} + + +protocol OperationProvidingDiscussionReadJSON: Operation { + + var ownedCryptoId: ObvCryptoId? { get } + var discussionReadJSONToSend: DiscussionReadJSON? { get } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/PostLimitedVisibilityMessageOpenedJSONEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/PostLimitedVisibilityMessageOpenedJSONEngineOperation.swift new file mode 100644 index 00000000..7f29e120 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/PostLimitedVisibilityMessageOpenedJSONEngineOperation.swift @@ -0,0 +1,111 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import os.log +import ObvEngine +import ObvUICoreData +import ObvTypes +import CoreData + + +final class PostLimitedVisibilityMessageOpenedJSONEngineOperation: ContextualOperationWithSpecificReasonForCancel { + + let obvEngine: ObvEngine + let op: OperationProvidingLimitedVisibilityMessageOpenedJSONs + + init(op: OperationProvidingLimitedVisibilityMessageOpenedJSONs, obvEngine: ObvEngine) { + self.obvEngine = obvEngine + self.op = op + super.init() + } + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + assert(op.isFinished) + + guard !op.isCancelled else { return } + guard !op.limitedVisibilityMessageOpenedJSONsToSend.isEmpty else { return } + guard let ownedCryptoId = op.ownedCryptoId else { assertionFailure(); return } + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + guard ownedIdentity.hasAnotherDeviceWithChannel else { + // No need to propagate the fact that we opened a message with limited visibility since we don't have any other owned device with a secure channel + return + } + + for limitedVisibilityMessageOpenedJSON in op.limitedVisibilityMessageOpenedJSONsToSend { + + let persistedItemsJSON = PersistedItemJSON(limitedVisibilityMessageOpenedJSON: limitedVisibilityMessageOpenedJSON) + let payload = try persistedItemsJSON.jsonEncode() + + _ = try obvEngine.post(messagePayload: payload, + extendedPayload: nil, + withUserContent: false, + isVoipMessageForStartingCall: false, + attachmentsToSend: [], + toContactIdentitiesWithCryptoId: Set(), + ofOwnedIdentityWithCryptoId: ownedCryptoId, + alsoPostToOtherOwnedDevices: true) + + } + + } catch { + return cancel(withReason: .someError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case couldNotFindOwnedIdentity + case someError(error: Error) + + var logType: OSLogType { + return .fault + } + + var errorDescription: String? { + switch self { + case .someError(error: let error): + return "Error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } + } + + } + +} + + +protocol OperationProvidingLimitedVisibilityMessageOpenedJSONs: Operation { + + var ownedCryptoId: ObvCryptoId? { get } + var limitedVisibilityMessageOpenedJSONsToSend: [LimitedVisibilityMessageOpenedJSON] { get } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/SendOwnedWebRTCMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/SendOwnedWebRTCMessageOperation.swift new file mode 100644 index 00000000..bf3aa711 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/SendOwnedWebRTCMessageOperation.swift @@ -0,0 +1,96 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import OlvidUtils +import os.log +import ObvEngine +import ObvUICoreData +import ObvTypes +import CoreData + + +final class SendOwnedWebRTCMessageOperation: ContextualOperationWithSpecificReasonForCancel { + + private let webrtcMessage: WebRTCMessageJSON + private let ownedCryptoId: ObvCryptoId + private let obvEngine: ObvEngine + + init(webrtcMessage: WebRTCMessageJSON, ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine) { + self.webrtcMessage = webrtcMessage + self.ownedCryptoId = ownedCryptoId + self.obvEngine = obvEngine + super.init() + } + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + guard ownedIdentity.hasAnotherDeviceWithChannel else { + return + } + + let messageToSend = PersistedItemJSON(webrtcMessage: webrtcMessage) + let messagePayload = try messageToSend.jsonEncode() + + _ = try obvEngine.post( + messagePayload: messagePayload, + extendedPayload: nil, + withUserContent: false, + isVoipMessageForStartingCall: false, + attachmentsToSend: [], + toContactIdentitiesWithCryptoId: [], + ofOwnedIdentityWithCryptoId: ownedCryptoId, + alsoPostToOtherOwnedDevices: true, + completionHandler: nil) + + } catch { + return cancel(withReason: .someError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case couldNotFindOwnedIdentity + case someError(error: Error) + + var logType: OSLogType { + return .fault + } + + var errorDescription: String? { + switch self { + case .someError(error: let error): + return "Error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SendWebRTCMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/SendWebRTCMessageOperation.swift similarity index 58% rename from iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SendWebRTCMessageOperation.swift rename to iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/SendWebRTCMessageOperation.swift index 2b022b6f..40fc0fad 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SendWebRTCMessageOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/EngineOperations/SendWebRTCMessageOperation.swift @@ -23,6 +23,7 @@ import os.log import ObvEngine import ObvTypes import ObvUICoreData +import CoreData final class SendWebRTCMessageOperation: ContextualOperationWithSpecificReasonForCancel { @@ -42,12 +43,7 @@ final class SendWebRTCMessageOperation: ContextualOperationWithSpecificReasonFor super.init() } - override func main() { - - guard let obvContext else { - os_log("☎️ We failed to post a %{public}s WebRTCMessage", log: log, type: .fault, String(describing: webrtcMessage.messageType)) - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { let messageToSend = PersistedItemJSON(webrtcMessage: webrtcMessage) @@ -59,43 +55,40 @@ final class SendWebRTCMessageOperation: ContextualOperationWithSpecificReasonFor return cancel(withReason: .couldNotEncodeMessageToSend) } - obvContext.performAndWait { + do { + guard let contact = try PersistedObvContactIdentity.get(objectID: contactID, within: obvContext.context) else { + os_log("☎️ We failed to post a %{public}s WebRTCMessage", log: log, type: .fault, String(describing: webrtcMessage.messageType)) + return cancel(withReason: .couldNotFindContact) + } + let contactCryptoId = contact.cryptoId + guard let ownedCryptoId = contact.ownedIdentity?.cryptoId else { return } + let messageIdentifierForContactToWhichTheMessageWasSent: [ObvCryptoId : Data] do { - - guard let contact = try PersistedObvContactIdentity.get(objectID: contactID, within: obvContext.context) else { - os_log("☎️ We failed to post a %{public}s WebRTCMessage", log: log, type: .fault, String(describing: webrtcMessage.messageType)) - return cancel(withReason: .couldNotFindContact) - } - let contactCryptoId = contact.cryptoId - guard let ownedCryptoId = contact.ownedIdentity?.cryptoId else { return } - let messageIdentifierForContactToWhichTheMessageWasSent: [ObvCryptoId : Data] - do { - messageIdentifierForContactToWhichTheMessageWasSent = try obvEngine.post( - messagePayload: messagePayload, - extendedPayload: nil, - withUserContent: false, - isVoipMessageForStartingCall: forStartingCall, // True only for starting a call - attachmentsToSend: [], - toContactIdentitiesWithCryptoId: [contactCryptoId], - ofOwnedIdentityWithCryptoId: ownedCryptoId, - completionHandler: nil) - } catch { - os_log("☎️ We failed to post a %{public}s WebRTCMessage", log: log, type: .fault, String(describing: webrtcMessage.messageType)) - return cancel(withReason: .engineFailedToSendMessage(error: error)) - } - if messageIdentifierForContactToWhichTheMessageWasSent[contactCryptoId] != nil { - os_log("☎️ We posted a new %{public}s WebRTCMessage for call %{public}s", log: log, type: .info, String(describing: webrtcMessage.messageType), String(webrtcMessage.callIdentifier)) - } else { - os_log("☎️ We failed to post a %{public}s WebRTCMessage", log: log, type: .fault, String(describing: webrtcMessage.messageType)) - assertionFailure() - } - + messageIdentifierForContactToWhichTheMessageWasSent = try obvEngine.post( + messagePayload: messagePayload, + extendedPayload: nil, + withUserContent: false, + isVoipMessageForStartingCall: forStartingCall, // True only for starting a call + attachmentsToSend: [], + toContactIdentitiesWithCryptoId: [contactCryptoId], + ofOwnedIdentityWithCryptoId: ownedCryptoId, + alsoPostToOtherOwnedDevices: false, + completionHandler: nil) } catch { os_log("☎️ We failed to post a %{public}s WebRTCMessage", log: log, type: .fault, String(describing: webrtcMessage.messageType)) - return cancel(withReason: .coreDataError(error: error)) + return cancel(withReason: .engineFailedToSendMessage(error: error)) } - + if messageIdentifierForContactToWhichTheMessageWasSent[contactCryptoId] != nil { + os_log("☎️ We posted a new %{public}s WebRTCMessage for call %{public}s", log: log, type: .info, String(describing: webrtcMessage.messageType), String(webrtcMessage.callIdentifier)) + } else { + os_log("☎️ We failed to post a %{public}s WebRTCMessage", log: log, type: .fault, String(describing: webrtcMessage.messageType)) + assertionFailure() + } + + } catch { + os_log("☎️ We failed to post a %{public}s WebRTCMessage", log: log, type: .fault, String(describing: webrtcMessage.messageType)) + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/GetAppropriateActiveDiscussionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/GetAppropriateActiveDiscussionOperation.swift deleted file mode 100644 index 23cd3f87..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/GetAppropriateActiveDiscussionOperation.swift +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import ObvEngine -import ObvTypes -import OlvidUtils -import ObvCrypto -import ObvUICoreData - - -/// This operation looks for a persisted discussion (either one2one or for a group) that is the most appropriate given the parameters. In case the groupId is non nil, it looks for a group discussion and makes sure the contact identity is part of the group (but not necessarily owner). -/// If this operation finishes without cancelling, the value of the `discussionObjectID` variable is guaranteed to be set. -final class GetAppropriateActiveDiscussionOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingPersistedDiscussion { - - private let contact: ObvContactIdentity - private let groupIdentifier: GroupIdentifier? - - private(set) var persistedDiscussionObjectID: TypeSafeManagedObjectID? - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: GetAppropriateActiveDiscussionOperation.self)) - - init(contact: ObvContactIdentity, groupIdentifier: GroupIdentifier?) { - self.contact = contact - self.groupIdentifier = groupIdentifier - super.init() - } - - override func main() { - - guard let obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - - guard let persistedContact = try PersistedObvContactIdentity.get(persisted: contact, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindContact) - } - - guard let ownedIdentity = persistedContact.ownedIdentity else { - return cancel(withReason: .couldNotFindOwnedIdentity) - } - - switch groupIdentifier { - - case .none: - - guard let discussion = try PersistedOneToOneDiscussion.get(with: persistedContact, status: .active) else { - return cancel(withReason: .couldNotFindDiscussion) - } - assert(persistedContact.isOneToOne) - // If we reach this point, we found the appropriate one2one discussion - self.persistedDiscussionObjectID = discussion.typedObjectID.downcast - return - - case .groupV1(groupV1Identifier: let groupV1Identifier): - - guard let contactGroup = try PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedIdentity: ownedIdentity) else { - return cancel(withReason: .couldNotFindContactGroup) - } - // We make sure the contact is either owner or part of the group - if let ownedGroup = contactGroup as? PersistedContactGroupOwned { - guard ownedGroup.contactIdentities.contains(persistedContact) else { - assertionFailure() - return cancel(withReason: .contactIsNotPartOfGroup) - } - } else if let joinedGroup = contactGroup as? PersistedContactGroupJoined { - guard joinedGroup.contactIdentities.contains(persistedContact) || - joinedGroup.owner == persistedContact else { - assertionFailure() - return cancel(withReason: .contactIsNotPartOfGroup) - } - } else { - return cancel(withReason: .unexpectedGroupSubclass) - } - // If we reach this point, we found the group and the contact is indeed part of this group - guard contactGroup.discussion.status == .active else { - return cancel(withReason: .couldNotFindDiscussion) - } - self.persistedDiscussionObjectID = contactGroup.discussion.typedObjectID.downcast - return - - case .groupV2(groupV2Identifier: let groupV2Identifier): - - guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupV2Identifier) else { - return cancel(withReason: .couldNotFindContactGroup) - } - // Make sure the contact is part of the group - guard group.contactsAmongOtherPendingAndNonPendingMembers.contains(persistedContact) else { - assertionFailure() - return cancel(withReason: .contactIsNotPartOfGroup) - } - // If we reach this point, we found the group and the contact is indeed part of this group - guard let discussion = group.discussion, discussion.status == .active else { - return cancel(withReason: .couldNotFindDiscussion) - } - self.persistedDiscussionObjectID = discussion.typedObjectID.downcast - return - - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - } - - } - -} - - -enum GetAppropriateDiscussionOperationReasonForCancel: LocalizedErrorWithLogType { - - case coreDataError(error: Error) - case couldNotFindContact - case couldNotFindOwnedIdentity - case couldNotFindContactGroup - case contactIsNotPartOfGroup - case unexpectedGroupSubclass - case couldNotFindDiscussion - case contextIsNil - - var logType: OSLogType { - switch self { - case .coreDataError, - .couldNotFindOwnedIdentity, - .couldNotFindContactGroup, - .contactIsNotPartOfGroup, - .unexpectedGroupSubclass, - .couldNotFindDiscussion, - .contextIsNil, - .couldNotFindContact: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .couldNotFindContact: - return "Could not find contact in database" - case .couldNotFindOwnedIdentity: - return "Could not find owned identity" - case .couldNotFindContactGroup: - return "Could not find contact group" - case .contactIsNotPartOfGroup: - return "The contact is not part of the group" - case .unexpectedGroupSubclass: - return "Unexpected contact group subclass" - case .couldNotFindDiscussion: - return "Could not find discussion" - case .contextIsNil: - return "Context is nil" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/InsertEndToEndEncryptedSystemMessageIfCurrentDiscussionIsEmptyOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/InsertEndToEndEncryptedSystemMessageIfCurrentDiscussionIsEmptyOperation.swift index 0f771ca9..f5cd3e6f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/InsertEndToEndEncryptedSystemMessageIfCurrentDiscussionIsEmptyOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/InsertEndToEndEncryptedSystemMessageIfCurrentDiscussionIsEmptyOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,6 +21,8 @@ import Foundation import OlvidUtils import os.log import ObvUICoreData +import CoreData + final class InsertEndToEndEncryptedSystemMessageIfCurrentDiscussionIsEmptyOperation: ContextualOperationWithSpecificReasonForCancel { @@ -33,23 +35,15 @@ final class InsertEndToEndEncryptedSystemMessageIfCurrentDiscussionIsEmptyOperat super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - - do { - guard let discussion = try PersistedDiscussion.get(objectID: discussionObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDiscussion) - } - try discussion.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: markAsRead, messageTimestamp: Date()) - } catch { - return cancel(withReason: .coreDataError(error: error)) + do { + guard let discussion = try PersistedDiscussion.get(objectID: discussionObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDiscussion) } - + try discussion.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: markAsRead, messageTimestamp: Date()) + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/InsertPersistedMessageSystemIntoDiscussionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/InsertPersistedMessageSystemIntoDiscussionOperation.swift index 61b97138..d0482b12 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/InsertPersistedMessageSystemIntoDiscussionOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/InsertPersistedMessageSystemIntoDiscussionOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -68,11 +68,7 @@ final class InsertPersistedMessageSystemIntoDiscussionOperation: ContextualOpera - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { let persistedDiscussionObjectID: NSManagedObjectID @@ -86,95 +82,94 @@ final class InsertPersistedMessageSystemIntoDiscussionOperation: ContextualOpera } persistedDiscussionObjectID = objectID.objectID } - - obvContext.performAndWait { + + do { - do { - - guard let discussion = try PersistedDiscussion.get(objectID: persistedDiscussionObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedDiscussionInDatabase) + guard let discussion = try PersistedDiscussion.get(objectID: persistedDiscussionObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedDiscussionInDatabase) + } + + switch persistedMessageSystemCategory { + case .ownedIdentityIsPartOfGroupV2Admins: + guard let groupV2Discussion = discussion as? PersistedGroupV2Discussion else { + return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) } - - switch persistedMessageSystemCategory { - case .ownedIdentityIsPartOfGroupV2Admins: - guard let groupV2Discussion = discussion as? PersistedGroupV2Discussion else { - return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) - } - _ = try? PersistedMessageSystem.insertOwnedIdentityIsPartOfGroupV2AdminsMessage(within: groupV2Discussion) - case .ownedIdentityIsNoLongerPartOfGroupV2Admins: - guard let groupV2Discussion = discussion as? PersistedGroupV2Discussion else { - return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) - } - _ = try? PersistedMessageSystem.insertOwnedIdentityIsNoLongerPartOfGroupV2AdminsMessage(within: groupV2Discussion) - case .membersOfGroupV2WereUpdated: - guard let groupV2Discussion = discussion as? PersistedGroupV2Discussion else { - return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) - } - _ = try? PersistedMessageSystem.insertMembersOfGroupV2WereUpdatedSystemMessage(within: groupV2Discussion) - case .contactJoinedGroup, - .contactLeftGroup: - guard let contactIdentityObjectID = self.optionalContactIdentityObjectID else { - return cancel(withReason: .noContactIdentityObjectIDAlthoughItIsRequired(persistedMessageSystemCategory: persistedMessageSystemCategory)) - } - let contactIdentity = try PersistedObvContactIdentity.get(objectID: contactIdentityObjectID, within: obvContext.context) - switch try? discussion.kind { - case .oneToOne, .none: - return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) - case .groupV1, .groupV2: - break - } - _ = try PersistedMessageSystem(persistedMessageSystemCategory, optionalContactIdentity: contactIdentity, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) - case .contactRevokedByIdentityProvider: - // We do not need to pass the optional identity, as it is obvious in this case. And we prevent merge conflicts by doing so. - _ = try PersistedMessageSystem(persistedMessageSystemCategory, optionalContactIdentity: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) - case .callLogItem: - guard let callLogItemObjectID = self.optionalCallLogItemObjectID else { - return cancel(withReason: .noCallLogItemObjectIDAlthoughItIsRequired) - } - - guard let item = try PersistedCallLogItem.get(objectID: callLogItemObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedObvContactIdentityInDatabase) - } - _ = try PersistedMessageSystem(persistedMessageSystemCategory, optionalContactIdentity: nil, optionalCallLogItem: item, discussion: discussion, timestamp: Date()) - case .numberOfNewMessages: - assertionFailure("Not implemented") - case .discussionIsEndToEndEncrypted: - assertionFailure("Not implemented") - case .contactWasDeleted: - assertionFailure("Not implemented") - case .updatedDiscussionSharedSettings: - assertionFailure("Not implemented") - case .notPartOfTheGroupAnymore: - assertionFailure("Not implemented") - case .rejoinedGroup: - assertionFailure("Not implemented") - case .contactIsOneToOneAgain: - assertionFailure("Not implemented") - case .ownedIdentityDidCaptureSensitiveMessages: - assertionFailure("Not implemented") - case .contactIdentityDidCaptureSensitiveMessages: - assertionFailure("Not implemented") - case .discussionWasRemotelyWiped: - switch discussion.status { - case .active: - break - case .preDiscussion, .locked: - return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) - } - guard let contactIdentityObjectID = optionalContactIdentityObjectID else { - return cancel(withReason: .noContactIdentityObjectIDAlthoughItIsRequired(persistedMessageSystemCategory: persistedMessageSystemCategory)) - } - guard let contactIdentity = try PersistedObvContactIdentity.get(objectID: contactIdentityObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedObvContactIdentityInDatabase) - } - assert(messageUploadTimestampFromServer != nil) - try discussion.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: Date()) - try PersistedMessageSystem.insertDiscussionWasRemotelyWipedSystemMessage(within: discussion, byContact: contactIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + _ = try? PersistedMessageSystem.insertOwnedIdentityIsPartOfGroupV2AdminsMessage(within: groupV2Discussion) + case .ownedIdentityIsNoLongerPartOfGroupV2Admins: + guard let groupV2Discussion = discussion as? PersistedGroupV2Discussion else { + return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) + } + _ = try? PersistedMessageSystem.insertOwnedIdentityIsNoLongerPartOfGroupV2AdminsMessage(within: groupV2Discussion) + case .membersOfGroupV2WereUpdated: + guard let groupV2Discussion = discussion as? PersistedGroupV2Discussion else { + return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) + } + _ = try? PersistedMessageSystem.insertMembersOfGroupV2WereUpdatedSystemMessage(within: groupV2Discussion) + case .contactJoinedGroup, + .contactLeftGroup: + guard let contactIdentityObjectID = self.optionalContactIdentityObjectID else { + return cancel(withReason: .noContactIdentityObjectIDAlthoughItIsRequired(persistedMessageSystemCategory: persistedMessageSystemCategory)) + } + let contactIdentity = try PersistedObvContactIdentity.get(objectID: contactIdentityObjectID, within: obvContext.context) + switch try? discussion.kind { + case .oneToOne, .none: + return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) + case .groupV1, .groupV2: + break + } + _ = try PersistedMessageSystem(persistedMessageSystemCategory, optionalContactIdentity: contactIdentity, optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) + case .contactRevokedByIdentityProvider: + // We do not need to pass the optional identity, as it is obvious in this case. And we prevent merge conflicts by doing so. + _ = try PersistedMessageSystem(persistedMessageSystemCategory, optionalContactIdentity: nil, optionalOwnedCryptoId: nil, optionalCallLogItem: nil, discussion: discussion, timestamp: Date()) + case .callLogItem: + guard let callLogItemObjectID = self.optionalCallLogItemObjectID else { + return cancel(withReason: .noCallLogItemObjectIDAlthoughItIsRequired) } - } catch { - return cancel(withReason: .coreDataError(error: error)) + guard let item = try PersistedCallLogItem.get(objectID: callLogItemObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedObvContactIdentityInDatabase) + } + _ = try PersistedMessageSystem(persistedMessageSystemCategory, optionalContactIdentity: nil, optionalOwnedCryptoId: nil, optionalCallLogItem: item, discussion: discussion, timestamp: Date()) + case .numberOfNewMessages: + assertionFailure("Not implemented") + case .discussionIsEndToEndEncrypted: + assertionFailure("Not implemented") + case .contactWasDeleted: + assertionFailure("Not implemented") + case .updatedDiscussionSharedSettings: + assertionFailure("Not implemented") + case .notPartOfTheGroupAnymore: + assertionFailure("Not implemented") + case .rejoinedGroup: + assertionFailure("Not implemented") + case .contactIsOneToOneAgain: + assertionFailure("Not implemented") + case .ownedIdentityDidCaptureSensitiveMessages: + assertionFailure("Not implemented") + case .contactIdentityDidCaptureSensitiveMessages: + assertionFailure("Not implemented") + case .contactWasIntroducedToAnotherContact: + assertionFailure("Not implemented") + case .discussionWasRemotelyWiped: + switch discussion.status { + case .active: + break + case .preDiscussion, .locked: + return cancel(withReason: .inappropriatePersistedMessageSystemCategoryForGivenDiscussion(persistedMessageSystemCategory: persistedMessageSystemCategory)) + } + guard let contactIdentityObjectID = optionalContactIdentityObjectID else { + return cancel(withReason: .noContactIdentityObjectIDAlthoughItIsRequired(persistedMessageSystemCategory: persistedMessageSystemCategory)) + } + guard let contactIdentity = try PersistedObvContactIdentity.get(objectID: contactIdentityObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedObvContactIdentityInDatabase) + } + assert(messageUploadTimestampFromServer != nil) + try discussion.insertSystemMessagesIfDiscussionIsEmpty(markAsRead: false, messageTimestamp: Date()) + try PersistedMessageSystem.insertDiscussionWasRemotelyWipedSystemMessage(within: discussion, byContact: contactIdentity, messageUploadTimestampFromServer: messageUploadTimestampFromServer) } + + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/MergeDiscussionSharedExpirationConfigurationOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/MergeDiscussionSharedExpirationConfigurationOperation.swift index 42c40a8a..92c822cf 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/MergeDiscussionSharedExpirationConfigurationOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/MergeDiscussionSharedExpirationConfigurationOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,149 +23,162 @@ import os.log import ObvEngine import OlvidUtils import ObvUICoreData +import ObvTypes /// When receiving a shared configuration for a discussion, we merge it with our own current configuration. -final class MergeDiscussionSharedExpirationConfigurationOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingPersistedDiscussion { +final class MergeDiscussionSharedExpirationConfigurationOperation: ContextualOperationWithSpecificReasonForCancel { - let discussionSharedConfiguration: DiscussionSharedConfigurationJSON - let fromContactIdentity: ObvContactIdentity - let messageUploadTimestampFromServer: Date - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: MergeDiscussionSharedExpirationConfigurationOperation.self)) - - private(set) var updatedDiscussionObjectID: TypeSafeManagedObjectID? // Set if the operation changes something and finishes without cancelling + private let discussionSharedConfiguration: DiscussionSharedConfigurationJSON + private let origin: Origin + private let messageUploadTimestampFromServer: Date + private let messageLocalDownloadTimestamp: Date + - var persistedDiscussionObjectID: TypeSafeManagedObjectID? { - updatedDiscussionObjectID + enum Origin { + case fromContact(contactIdentifier: ObvContactIdentifier) + case fromOtherDeviceOfOwnedIdentity(ownedCryptoId: ObvCryptoId) } - init(discussionSharedConfiguration: DiscussionSharedConfigurationJSON, fromContactIdentity: ObvContactIdentity, messageUploadTimestampFromServer: Date) { + + init(discussionSharedConfiguration: DiscussionSharedConfigurationJSON, origin: Origin, messageUploadTimestampFromServer: Date, messageLocalDownloadTimestamp: Date) { self.discussionSharedConfiguration = discussionSharedConfiguration - self.fromContactIdentity = fromContactIdentity + self.origin = origin self.messageUploadTimestampFromServer = messageUploadTimestampFromServer + self.messageLocalDownloadTimestamp = messageLocalDownloadTimestamp super.init() } - override func main() { - - guard let obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case couldNotFindContactInDatabase(contactCryptoId: ObvCryptoId) + case contactIsNotOneToOne + case merged + } + + + private(set) var result: Result? - do { + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + switch origin { - guard let persistedContact = try PersistedObvContactIdentity.get(persisted: fromContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .contactCannotBeFound) - } + case .fromContact(contactIdentifier: let contactIdentifier): - let initiator = PersistedDiscussionSharedConfiguration.Initiator.contact(ownedCryptoId: fromContactIdentity.ownedIdentity.cryptoId, - contactCryptoId: fromContactIdentity.cryptoId, - messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - switch discussionSharedConfiguration.groupIdentifier { - - case .none: - - // The configuration concerns the one2one discussion we have with the contact - guard let oneToOneDiscussion = persistedContact.oneToOneDiscussion else { - return cancel(withReason: .discussionCannotBeFound) - } - self.updatedDiscussionObjectID = oneToOneDiscussion.typedObjectID.downcast - let sharedConfiguration = oneToOneDiscussion.sharedConfiguration - try sharedConfiguration.mergePersistedDiscussionSharedConfiguration(with: discussionSharedConfiguration, initiator: initiator) - - case .groupV1(groupV1Identifier: let groupV1Identifier): - - // The configuration concerns a group discussion - guard let persistedOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: fromContactIdentity.ownedIdentity, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedOwnedIdentity) - } - let contactGroup: PersistedContactGroup - guard let _contactGroup = try PersistedContactGroupJoined.getContactGroup(groupId: groupV1Identifier, ownedIdentity: persistedOwnedIdentity) else { - return cancel(withReason: .contactGroupCannotBeFound) - } - contactGroup = _contactGroup - self.updatedDiscussionObjectID = contactGroup.discussion.typedObjectID.downcast - guard contactGroup.ownerIdentity == fromContactIdentity.cryptoId.getIdentity() else { - return cancel(withReason: .sharedConfigWasNotSentByGroupOwner) - } - let sharedConfiguration = contactGroup.discussion.sharedConfiguration - try sharedConfiguration.mergePersistedDiscussionSharedConfiguration(with: discussionSharedConfiguration, initiator: initiator) + guard let persistedOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: contactIdentifier.ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedOwnedIdentity) + } - case .groupV2(groupV2Identifier: let groupV2Identifier): - - // The configuration concerns a group v2 discussion - guard let persistedOwnedIdentity = try PersistedObvOwnedIdentity.get(persisted: fromContactIdentity.ownedIdentity, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedOwnedIdentity) - } - guard let group = try PersistedGroupV2.get(ownIdentity: persistedOwnedIdentity, appGroupIdentifier: groupV2Identifier) else { - return cancel(withReason: .contactGroupCannotBeFound) - } - guard let discussion = group.discussion else { - return cancel(withReason: .discussionCannotBeFound) - } - self.updatedDiscussionObjectID = discussion.typedObjectID.downcast - let sharedConfiguration = discussion.sharedConfiguration - try sharedConfiguration.mergePersistedDiscussionSharedConfiguration(with: discussionSharedConfiguration, initiator: initiator) + let (discussionId, weShouldSendBackOurSharedSettings) = try persistedOwnedIdentity.mergeReceivedDiscussionSharedConfigurationSentByContact( + discussionSharedConfiguration: discussionSharedConfiguration, + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + messageLocalDownloadTimestamp: messageLocalDownloadTimestamp, + contactCryptoId: contactIdentifier.contactCryptoId) + + result = .merged + + if weShouldSendBackOurSharedSettings { + requestSendingDiscussionSharedConfiguration(contactIdentifier: contactIdentifier, discussionId: discussionId, within: obvContext) + } + + case .fromOtherDeviceOfOwnedIdentity(ownedCryptoId: let ownedCryptoId): + + guard let persistedOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedOwnedIdentity) } + + let (discussionId, weShouldSendBackOurSharedSettings) = try persistedOwnedIdentity.mergeReceivedDiscussionSharedConfigurationSentByThisOwnedIdentity( + discussionSharedConfiguration: discussionSharedConfiguration, + messageUploadTimestampFromServer: messageUploadTimestampFromServer) - } catch { + result = .merged + + if weShouldSendBackOurSharedSettings { + ObvMessengerInternalNotification.aDiscussionSharedConfigurationIsNeededByAnotherOwnedDevice( + ownedCryptoId: ownedCryptoId, + discussionId: discussionId) + .postOnDispatchQueue() + } + + } + + } catch { + + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + case .couldNotFindContactWithId(contactIdentifier: let contactIdentifier): + // This can happen if the owned identity performed a mutual scan with the contact from another owned device + result = .couldNotFindContactInDatabase(contactCryptoId: contactIdentifier.contactCryptoId) + return + case .contactIsNotOneToOne: + // This can happen when receiving a shared config from a contact who just accepted our invitation to be a oneToOne contact. We should not fail as this case is handled: + // we will soon turn her into a oneToOne contact, and thus, send her back our own shared config for the discussion. Upon receiving our discussion shared settings, she will + // again send us back her shared settings if required. + result = .contactIsNotOneToOne + return + default: + return cancel(withReason: .coreDataError(error: error)) + } + } else { return cancel(withReason: .coreDataError(error: error)) } - } } -} - -enum MergeDiscussionSharedExpirationConfigurationOperationReasonForCancel: LocalizedErrorWithLogType { - case coreDataError(error: Error) - case discussionCannotBeFound - case contactCannotBeFound - case couldNotFindPersistedOwnedIdentity - case contactGroupCannotBeFound - case sharedConfigWasNotSentByGroupOwner - case unexpectedError - case contextIsNil - var logType: OSLogType { - switch self { - case .coreDataError, - .couldNotFindPersistedOwnedIdentity, - .contextIsNil, - .unexpectedError: - return .fault - case .discussionCannotBeFound, - .contactCannotBeFound, - .contactGroupCannotBeFound, - .sharedConfigWasNotSentByGroupOwner: - return .error + // We had to create a contact, meaning we had to create/unlock a one2one discussion. In that case, we want to (re)send the discussion shared settings to our contact. + // This allows to make sure those settings are in sync. + private func requestSendingDiscussionSharedConfiguration(contactIdentifier: ObvContactIdentifier, discussionId: DiscussionIdentifier, within obvContext: ObvContext) { + do { + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvMessengerInternalNotification.aDiscussionSharedConfigurationIsNeededByContact( + contactIdentifier: contactIdentifier, + discussionId: discussionId) + .postOnDispatchQueue() + } + } catch { + assertionFailure(error.localizedDescription) } } + + - var errorDescription: String? { - switch self { - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .discussionCannotBeFound: - return "Could not find discussion in database" - case .contactCannotBeFound: - return "Could not find contact in database" - case .couldNotFindPersistedOwnedIdentity: - return "Could not find persisted owned identity" - case .contactGroupCannotBeFound: - return "Could not find contact group" - case .sharedConfigWasNotSentByGroupOwner: - return "Group discussion configuration was not sent by the group owner" - case .unexpectedError: - return "Unexpected error. This is a bug." - case .contextIsNil: - return "Context is nil" + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindPersistedOwnedIdentity + case contextIsNil + + var logType: OSLogType { + switch self { + case .coreDataError, + .couldNotFindPersistedOwnedIdentity, + .contextIsNil: + return .fault + } } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindPersistedOwnedIdentity: + return "Could not find persisted owned identity" + case .contextIsNil: + return "Context is nil" + } + } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/RespondToQuerySharedSettingsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/RespondToQuerySharedSettingsOperation.swift index af1b6fd5..68f98ea1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/RespondToQuerySharedSettingsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/RespondToQuerySharedSettingsOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,91 +22,129 @@ import Foundation import OlvidUtils import ObvEngine import ObvUICoreData +import os.log +import ObvTypes +import CoreData -/// The operation processes received QuerySharedSettingsJSON requests for group v2 discussions. +/// The operation processes received QuerySharedSettingsJSON requests by a contact or another device of the owned identity. /// -/// If we consider that our discussion details are more recent than those of the contact who made the request, we send an ``anOldDiscussionSharedConfigurationWasReceived`` notification. -/// This notification will be catched by the coordinator who will eventually send our shared details to the contact who made the request (provided that we have the right to change the group discussion details). -final class RespondToQuerySharedSettingsOperation: ContextualOperationWithSpecificReasonForCancel { +/// If we consider that our discussion details are more recent than those of the contact who made the request, we send an ``aDiscussionSharedConfigurationIsNeededByContact`` +/// or an ``aDiscussionSharedConfigurationIsNeededByAnotherOwnedDevice`` notification. This notification will be catched by the coordinator who will +/// eventually send our shared details to the contact who made the request. +/// +final class RespondToQuerySharedSettingsOperation: ContextualOperationWithSpecificReasonForCancel { - let fromContactIdentity: ObvContactIdentity - let querySharedSettingsJSON: QuerySharedSettingsJSON + enum Requester { + case contact(contactIdentifier: ObvContactIdentifier) + case ownedIdentity(ownedCryptoId: ObvCryptoId) + } + + private let querySharedSettingsJSON: QuerySharedSettingsJSON + private let requester: Requester - init(fromContactIdentity: ObvContactIdentity, querySharedSettingsJSON: QuerySharedSettingsJSON) { - self.fromContactIdentity = fromContactIdentity + init(querySharedSettingsJSON: QuerySharedSettingsJSON, requester: Requester) { self.querySharedSettingsJSON = querySharedSettingsJSON + self.requester = requester super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { - - do { + do { + + let weShouldSendBackOurSharedSettings: Bool + let discussionId: DiscussionIdentifier + + switch requester { - let ownIdentity = fromContactIdentity.ownedIdentity.cryptoId - let groupV2Identifier = querySharedSettingsJSON.groupV2Identifier - let sharedSettingsVersionKnownByContact = querySharedSettingsJSON.knownSharedSettingsVersion ?? Int.min - let sharedExpirationKnownByContact = querySharedSettingsJSON.knownSharedExpiration - - // Try to get the group + case .contact(contactIdentifier: let contactIdentifier): - guard let group = try PersistedGroupV2.get(ownIdentity: ownIdentity, appGroupIdentifier: groupV2Identifier, within: obvContext.context) else { - // We could not get the group, there is not much we can do - return + guard let contact = try PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContact) } - guard let discussion = group.discussion else { - // We could not get the discussion, there is not much we can do - return - } + (weShouldSendBackOurSharedSettings, discussionId) = try contact.processQuerySharedSettingsRequestFromThisContact(querySharedSettingsJSON: querySharedSettingsJSON) - let sharedConfiguration = discussion.sharedConfiguration + case .ownedIdentity(ownedCryptoId: let ownedCryptoId): - // Get the values known locally - - let sharedSettingsVersionKnownLocally = sharedConfiguration.version - let sharedExpirationKnownLocally: ExpirationJSON? - if sharedSettingsVersionKnownLocally >= 0 { - sharedExpirationKnownLocally = sharedConfiguration.toExpirationJSON() - } else { - sharedExpirationKnownLocally = nil + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) } - // If the locally known values are identical to the values known to the contact, we are done, we do not need to answer the query + (weShouldSendBackOurSharedSettings, discussionId) = try ownedIdentity.processQuerySharedSettingsRequestFromThisOwnedIdentity(querySharedSettingsJSON: querySharedSettingsJSON) - guard sharedSettingsVersionKnownByContact <= sharedSettingsVersionKnownLocally || sharedExpirationKnownByContact != sharedExpirationKnownLocally else { - return + } + + if weShouldSendBackOurSharedSettings { + switch requester { + case .contact(contactIdentifier: let contactIdentifier): + requestSendingDiscussionSharedConfigurationToContact(contactIdentifier: contactIdentifier, discussionId: discussionId, within: obvContext) + case .ownedIdentity(ownedCryptoId: let ownedCryptoId): + requestSendingDiscussionSharedConfigurationToAnotherOwnedDevice(ownedCryptoId: ownedCryptoId, discussionId: discussionId, within: obvContext) } - - // If we reach this point, something differed between the shared settings of our contact and ours + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } - var weShouldSentBackTheSharedSettings = false - if sharedSettingsVersionKnownLocally > sharedSettingsVersionKnownByContact { - weShouldSentBackTheSharedSettings = true - } else if sharedSettingsVersionKnownLocally == sharedSettingsVersionKnownByContact && sharedExpirationKnownByContact != sharedExpirationKnownLocally { - weShouldSentBackTheSharedSettings = true - } - - guard weShouldSentBackTheSharedSettings else { - return - } - - // If we reach this point, we must send our shared settings back - - discussion.sendNotificationIndicatingThatAnOldDiscussionSharedConfigurationWasReceived() - - } catch { - return cancel(withReason: .coreDataError(error: error)) + + private func requestSendingDiscussionSharedConfigurationToContact(contactIdentifier: ObvContactIdentifier, discussionId: DiscussionIdentifier, within obvContext: ObvContext) { + do { + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvMessengerInternalNotification.aDiscussionSharedConfigurationIsNeededByContact( + contactIdentifier: contactIdentifier, + discussionId: discussionId) + .postOnDispatchQueue() } + } catch { + assertionFailure(error.localizedDescription) + } + } + + + private func requestSendingDiscussionSharedConfigurationToAnotherOwnedDevice(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, within obvContext: ObvContext) { + do { + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvMessengerInternalNotification.aDiscussionSharedConfigurationIsNeededByAnotherOwnedDevice( + ownedCryptoId: ownedCryptoId, + discussionId: discussionId) + .postOnDispatchQueue() + } + } catch { + assertionFailure(error.localizedDescription) + } + } + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindOwnedIdentity + case couldNotFindContact + + var logType: OSLogType { + return .fault + } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .couldNotFindContact: + return "Could not find the contact identity" + } } } + + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/SendPersistedDiscussionSharedConfigurationIfAllowedToOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/SendPersistedDiscussionSharedConfigurationIfAllowedToOperation.swift index aff10de5..129b4e19 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/SendPersistedDiscussionSharedConfigurationIfAllowedToOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/SendPersistedDiscussionSharedConfigurationIfAllowedToOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,16 +26,26 @@ import ObvTypes import ObvUICoreData -final class SendPersistedDiscussionSharedConfigurationIfAllowedToOperation: OperationWithSpecificReasonForCancel { +final class SendPersistedDiscussionSharedConfigurationIfAllowedToOperation: OperationWithSpecificReasonForCancel { - private let persistedDiscussionObjectID: NSManagedObjectID + private let ownedCryptoId: ObvCryptoId + private let discussionId: DiscussionIdentifier private let obvEngine: ObvEngine + private let sendTo: SendToOption + + enum SendToOption { + case otherOwnedDevices + case specificContact(contactCryptoId: ObvCryptoId) + case allContactsAndOtherOwnedDevices + } private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SendPersistedDiscussionSharedConfigurationIfAllowedToOperation.self)) - init(persistedDiscussionObjectID: NSManagedObjectID, obvEngine: ObvEngine) { - self.persistedDiscussionObjectID = persistedDiscussionObjectID + init(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, sendTo: SendToOption, obvEngine: ObvEngine) { + self.ownedCryptoId = ownedCryptoId + self.discussionId = discussionId self.obvEngine = obvEngine + self.sendTo = sendTo super.init() } @@ -48,19 +58,34 @@ final class SendPersistedDiscussionSharedConfigurationIfAllowedToOperation: Oper } ObvStack.shared.performBackgroundTaskAndWait { (context) in - - // We create the PersistedItemJSON instance to send + // Get the persisted discussion + let discussion: PersistedDiscussion + let ownedIdentityHasAnotherDeviceWithChannel: Bool do { - guard let _discussion = try PersistedDiscussion.get(objectID: persistedDiscussionObjectID, within: context) else { - return cancel(withReason: .configCannotBeFound) + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) } - discussion = _discussion + ownedIdentityHasAnotherDeviceWithChannel = ownedIdentity.hasAnotherDeviceWithChannel + discussion = try ownedIdentity.getPersistedDiscussion(withDiscussionId: discussionId) } catch { - return cancel(withReason: .coreDataError(error: error)) + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindDiscussion: + // This happens when entering in contact as the discussion is not yet available. + // The shared configuration will eventually be re-sent, no need to cancel. + return + default: + return cancel(withReason: .coreDataError(error: error)) + } + } else { + return cancel(withReason: .coreDataError(error: error)) + } } - + + // We create the PersistedItemJSON instance to send + let sharedConfig = discussion.sharedConfiguration // Find all the contacts to which this item should be sent. @@ -68,7 +93,6 @@ final class SendPersistedDiscussionSharedConfigurationIfAllowedToOperation: Oper // If the discussion is a group v2 discussion, we make sure we are allowed to change the settings let contactCryptoIds: Set - let ownCryptoId: ObvCryptoId do { switch try discussion.kind { case .oneToOne(withContactIdentity: let contactIdentity): @@ -77,10 +101,6 @@ final class SendPersistedDiscussionSharedConfigurationIfAllowedToOperation: Oper return cancel(withReason: .couldNotFindContactIdentity) } contactCryptoIds = Set([contactIdentity.cryptoId]) - guard let _ownCryptoId = discussion.ownedIdentity?.cryptoId else { - return cancel(withReason: .couldNotDetermineOwnedCryptoId) - } - ownCryptoId = _ownCryptoId case .groupV1(withContactGroup: let contactGroup): guard let contactGroup = contactGroup else { return cancel(withReason: .couldNotFindContactGroup) @@ -91,10 +111,6 @@ final class SendPersistedDiscussionSharedConfigurationIfAllowedToOperation: Oper return } contactCryptoIds = Set(contactGroup.contactIdentities.map({ $0.cryptoId })) - guard let _ownCryptoId = discussion.ownedIdentity?.cryptoId else { - return cancel(withReason: .couldNotDetermineOwnedCryptoId) - } - ownCryptoId = _ownCryptoId case .groupV2(withGroup: let group): guard let group = group else { return cancel(withReason: .couldNotFindContactGroup) @@ -104,10 +120,6 @@ final class SendPersistedDiscussionSharedConfigurationIfAllowedToOperation: Oper return } contactCryptoIds = Set(group.otherMembers.filter({ !$0.isPending }).compactMap({ $0.cryptoId })) - guard let _ownCryptoId = discussion.ownedIdentity?.cryptoId else { - return cancel(withReason: .couldNotDetermineOwnedCryptoId) - } - ownCryptoId = _ownCryptoId } } catch { return cancel(withReason: .unexpectedDiscussionType) @@ -132,15 +144,33 @@ final class SendPersistedDiscussionSharedConfigurationIfAllowedToOperation: Oper return cancel(withReason: .failedToEncodeSettings) } - if !contactCryptoIds.isEmpty { + // Filter out the contacts/owned devices depending on the sendTo option + + let toContactIdentitiesWithCryptoId: Set + let alsoPostToOtherOwnedDevices: Bool + switch sendTo { + case .allContactsAndOtherOwnedDevices: + toContactIdentitiesWithCryptoId = contactCryptoIds + alsoPostToOtherOwnedDevices = ownedIdentityHasAnotherDeviceWithChannel + case .otherOwnedDevices: + toContactIdentitiesWithCryptoId = Set() + alsoPostToOtherOwnedDevices = ownedIdentityHasAnotherDeviceWithChannel + case .specificContact(contactCryptoId: let contactCryptoId): + guard contactCryptoIds.contains(contactCryptoId) else { return } + toContactIdentitiesWithCryptoId = Set([contactCryptoId]) + alsoPostToOtherOwnedDevices = false + } + + if !toContactIdentitiesWithCryptoId.isEmpty || alsoPostToOtherOwnedDevices { do { _ = try obvEngine.post(messagePayload: payload, extendedPayload: nil, withUserContent: false, isVoipMessageForStartingCall: false, attachmentsToSend: [], - toContactIdentitiesWithCryptoId: contactCryptoIds, - ofOwnedIdentityWithCryptoId: ownCryptoId) + toContactIdentitiesWithCryptoId: toContactIdentitiesWithCryptoId, + ofOwnedIdentityWithCryptoId: ownedCryptoId, + alsoPostToOtherOwnedDevices: alsoPostToOtherOwnedDevices) } catch { return cancel(withReason: .couldNotPostMessageWithinEngine) } @@ -149,63 +179,55 @@ final class SendPersistedDiscussionSharedConfigurationIfAllowedToOperation: Oper } } + -} - - -enum SendPersistedDiscussionSharedConfigurationIfAllowedToOperationReasonForCancel: LocalizedErrorWithLogType { - - case coreDataError(error: Error) - case configCannotBeFound - case failedToEncodeSettings - case couldNotFindContactIdentity - case couldNotFindContactGroup - case unexpectedDiscussionType - case couldNotDetermineOwnedCryptoId - case couldNotPostMessageWithinEngine - case couldNotComputeJSON - case couldNotFindDiscussion - - var logType: OSLogType { - switch self { - case .coreDataError, - .failedToEncodeSettings, - .couldNotFindContactIdentity, - .couldNotFindContactGroup, - .couldNotDetermineOwnedCryptoId, - .couldNotPostMessageWithinEngine, - .couldNotComputeJSON, - .couldNotFindDiscussion: - return .fault - case .configCannotBeFound, - .unexpectedDiscussionType: - return .error + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case failedToEncodeSettings + case couldNotFindContactIdentity + case couldNotFindContactGroup + case unexpectedDiscussionType + case couldNotFindOwnedIdentity + case couldNotPostMessageWithinEngine + case couldNotComputeJSON + + var logType: OSLogType { + switch self { + case .coreDataError, + .failedToEncodeSettings, + .couldNotFindContactIdentity, + .couldNotFindContactGroup, + .couldNotFindOwnedIdentity, + .couldNotPostMessageWithinEngine, + .couldNotComputeJSON: + return .fault + case .unexpectedDiscussionType: + return .error + } } - } - - var errorDescription: String? { - switch self { - case .couldNotFindDiscussion: - return "Could not find discussion" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .configCannotBeFound: - return "Could not find shared configuration in database" - case .failedToEncodeSettings: - return "We failed to encode the discussion shared settings" - case .couldNotFindContactIdentity: - return "Could not find the contact identity of the One2One discussion associated to the shared settings to send" - case .couldNotFindContactGroup: - return "Could not find the contact group of the group discussion associated with the shared settings to send" - case .unexpectedDiscussionType: - return "We are trying to share the settings of a discussion that is not a One2One nor a group discussion" - case .couldNotDetermineOwnedCryptoId: - return "We could not determine the owned crypto identity associated with the discussion" - case .couldNotPostMessageWithinEngine: - return "We failed to post the serialized discussion shared settings within the engine" - case .couldNotComputeJSON: - return "Could not compute JSON" + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .failedToEncodeSettings: + return "We failed to encode the discussion shared settings" + case .couldNotFindContactIdentity: + return "Could not find the contact identity of the One2One discussion associated to the shared settings to send" + case .couldNotFindContactGroup: + return "Could not find the contact group of the group discussion associated with the shared settings to send" + case .unexpectedDiscussionType: + return "We are trying to share the settings of a discussion that is not a One2One nor a group discussion" + case .couldNotFindOwnedIdentity: + return "We could not find the owned identity in database" + case .couldNotPostMessageWithinEngine: + return "We failed to post the serialized discussion shared settings within the engine" + case .couldNotComputeJSON: + return "Could not compute JSON" + } } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/UpdateDiscussionSharedExpirationConfigurationOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/UpdateDiscussionSharedExpirationConfigurationOperation.swift index e603f20a..9abfae87 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/UpdateDiscussionSharedExpirationConfigurationOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Managing Discussion Shared Configuration/UpdateDiscussionSharedExpirationConfigurationOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,77 +24,60 @@ import ObvTypes import OlvidUtils import ObvUICoreData -final class ReplaceDiscussionSharedExpirationConfigurationOperation: OperationWithSpecificReasonForCancel { +final class ReplaceDiscussionSharedExpirationConfigurationOperation: ContextualOperationWithSpecificReasonForCancel { - let persistedDiscussionObjectID: NSManagedObjectID - let expirationJSON: ExpirationJSON - let ownedCryptoIdAsInitiator: ObvCryptoId + private let ownedCryptoIdAsInitiator: ObvCryptoId + private let discussionId: DiscussionIdentifier + private let expirationJSON: ExpirationJSON - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ReplaceDiscussionSharedExpirationConfigurationOperation.self)) - init(persistedDiscussionObjectID: NSManagedObjectID, expirationJSON: ExpirationJSON, ownedCryptoIdAsInitiator: ObvCryptoId) { - self.persistedDiscussionObjectID = persistedDiscussionObjectID - self.expirationJSON = expirationJSON + init(ownedCryptoIdAsInitiator: ObvCryptoId, discussionId: DiscussionIdentifier, expirationJSON: ExpirationJSON) { self.ownedCryptoIdAsInitiator = ownedCryptoIdAsInitiator + self.discussionId = discussionId + self.expirationJSON = expirationJSON super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - ObvStack.shared.performBackgroundTaskAndWait { (context) in - - let discussion: PersistedDiscussion - do { - guard let _discussion = try PersistedDiscussion.get(objectID: persistedDiscussionObjectID, within: context) else { - return cancel(withReason: .discussionCannotBeFound) - } - discussion = _discussion - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + do { - do { - try discussion.sharedConfiguration.replacePersistedDiscussionSharedConfiguration(with: expirationJSON, initiator: .ownedIdentity(ownedCryptoId: ownedCryptoIdAsInitiator)) - } catch { - return cancel(withReason: .failedToReplaceSharedConfiguration(error: error)) + guard let persistedOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoIdAsInitiator, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedOwnedIdentity) } - do { - guard context.hasChanges else { return } - try context.save(logOnFailure: log) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - + try persistedOwnedIdentity.replaceDiscussionSharedConfigurationSentByThisOwnedIdentity( + with: expirationJSON, + inDiscussionWithId: discussionId) + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } -} - -enum UpdateDiscussionSharedExpirationConfigurationOperationReasonForCancel: LocalizedErrorWithLogType { - case coreDataError(error: Error) - case discussionCannotBeFound - case failedToReplaceSharedConfiguration(error: Error) - var logType: OSLogType { - switch self { - case .coreDataError, .failedToReplaceSharedConfiguration: - return .fault - case .discussionCannotBeFound: - return .error + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindPersistedOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, .couldNotFindPersistedOwnedIdentity: + return .fault + } } - } - - var errorDescription: String? { - switch self { - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .discussionCannotBeFound: - return "Could not find discussion in database" - case .failedToReplaceSharedConfiguration(error: let error): - return "Failed to replace shared config: \(error.localizedDescription)" + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindPersistedOwnedIdentity: + return "Could not find owned identity" + } } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServer.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServer.swift index d2c5d39d..64ab3561 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServer.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServer.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,33 +22,30 @@ import CoreData import os.log import OlvidUtils import ObvUICoreData +import ObvTypes /// This operation is typically executed when requesting the download progresses of incomplete attachments that results being absent from the engine's inbox. /// In that case, we know we won't receive the missing bytes of any of the message attachments, so we mark all the incomplete `ReceivedFyleMessageJoinWithStatus` /// of the message as `cancelledByServer`. -final class MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServer: OperationWithSpecificReasonForCancel { +final class MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServer: ContextualOperationWithSpecificReasonForCancel { private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServer.self)) + private let ownedCryptoId: ObvCryptoId private let messageIdentifierFromEngine: Data - init(messageIdentifierFromEngine: Data) { + init(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data) { + self.ownedCryptoId = ownedCryptoId self.messageIdentifierFromEngine = messageIdentifierFromEngine super.init() } - override func main() { - - ObvStack.shared.performBackgroundTaskAndWait { (context) in - - let receivedMessages: [PersistedMessageReceived] - do { - receivedMessages = try PersistedMessageReceived.getAll(messageIdentifierFromEngine: messageIdentifierFromEngine, within: context) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + do { + + let receivedMessages = try PersistedMessageReceived.getAll(ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, within: obvContext.context) guard !receivedMessages.isEmpty else { // No message found, so there is nothing to do @@ -62,41 +59,17 @@ final class MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServe for join in message.fyleMessageJoinWithStatuses { switch join.status { case .downloadable, .downloading: - join.tryToSetStatusTo(.cancelledByServer) + join.tryToSetStatusToCancelledByServer() case .complete, .cancelledByServer: break } } } - do { - try context.save(logOnFailure: log) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - + } catch { + return cancel(withReason: .coreDataError(error: error)) } - - } - -} - -enum MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServerReasonForCancel: LocalizedErrorWithLogType { - case coreDataError(error: Error) - - var logType: OSLogType { - switch self { - case .coreDataError: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAllMessagesAsNotNewWithinDiscussionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAllMessagesAsNotNewWithinDiscussionOperation.swift index 706f8234..62b34c5b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAllMessagesAsNotNewWithinDiscussionOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAllMessagesAsNotNewWithinDiscussionOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,92 +22,149 @@ import CoreData import os.log import OlvidUtils import ObvUICoreData +import ObvTypes -final class MarkAllMessagesAsNotNewWithinDiscussionOperation: ContextualOperationWithSpecificReasonForCancel { +final class MarkAllMessagesAsNotNewWithinDiscussionOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingDiscussionReadJSON { - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: MarkAllMessagesAsNotNewWithinDiscussionOperation.self)) - - private let persistedDiscussionObjectID: TypeSafeManagedObjectID? - private let draftPermanentID: ObvManagedObjectPermanentID? - - init(persistedDiscussionObjectID: TypeSafeManagedObjectID) { - self.persistedDiscussionObjectID = persistedDiscussionObjectID - self.draftPermanentID = nil - super.init() + enum Input { + case persistedDiscussionObjectID(persistedDiscussionObjectID: TypeSafeManagedObjectID) + case draftPermanentID(draftPermanentID: ObvManagedObjectPermanentID) + case discussionReadJSON(ownedCryptoId: ObvCryptoId, discussionRead: DiscussionReadJSON) } - - init(draftPermanentID: ObvManagedObjectPermanentID) { - self.persistedDiscussionObjectID = nil - self.draftPermanentID = draftPermanentID + + private let input: Input + + init(input: Input) { + self.input = input super.init() } - override func main() { + private(set) var ownedCryptoId: ObvCryptoId? + private(set) var discussionReadJSONToSend: DiscussionReadJSON? - os_log("Executing a MarkAllMessagesAsNotNewWithinDiscussionOperation for discussion %{public}@", log: log, type: .debug, persistedDiscussionObjectID.debugDescription) + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case processed + } - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + private(set) var result: Result? + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - obvContext.performAndWait { + do { + + let ownedCryptoId: ObvCryptoId + let discussionId: DiscussionIdentifier + let dateWhenMessageTurnedNotNew: Date + let untilDate: Date? + let requestReceivedFromAnotherOwnedDevice: Bool + switch input { + case .persistedDiscussionObjectID(persistedDiscussionObjectID: let persistedDiscussionObjectID): + (ownedCryptoId, discussionId) = try PersistedObvOwnedIdentity.getDiscussionIdentifiers(from: persistedDiscussionObjectID, within: obvContext.context) + dateWhenMessageTurnedNotNew = Date() + untilDate = nil + requestReceivedFromAnotherOwnedDevice = false + case .draftPermanentID(draftPermanentID: let draftPermanentID): + (ownedCryptoId, discussionId) = try PersistedObvOwnedIdentity.getDiscussionIdentifiers(from: draftPermanentID, within: obvContext.context) + dateWhenMessageTurnedNotNew = Date() + untilDate = nil + requestReceivedFromAnotherOwnedDevice = false + case .discussionReadJSON(ownedCryptoId: let _ownedCryptoId, discussionRead: let discussionRead): + ownedCryptoId = _ownedCryptoId + dateWhenMessageTurnedNotNew = discussionRead.lastReadMessageServerTimestamp + untilDate = discussionRead.lastReadMessageServerTimestamp + discussionId = try discussionRead.getDiscussionId(ownedCryptoId: ownedCryptoId) + requestReceivedFromAnotherOwnedDevice = true + } + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + self.ownedCryptoId = ownedIdentity.cryptoId + + let lastReadMessageServerTimestamp = try ownedIdentity.markAllMessagesAsNotNew(discussionId: discussionId, untilDate: untilDate, dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + do { - - let discussion: PersistedDiscussion - if let persistedDiscussionObjectID = self.persistedDiscussionObjectID { - guard let _discussion = try PersistedDiscussion.get(objectID: persistedDiscussionObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = _discussion - } else if let draftPermanentID = self.draftPermanentID { - guard let draft = try PersistedDraft.getManagedObject(withPermanentID: draftPermanentID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = draft.discussion - } else { - return cancel(withReason: .couldNotFindDiscussion) + let isDiscussionActive = try ownedIdentity.isDiscussionActive(discussionId: discussionId) + let shouldSendDiscussionReadJSON = isDiscussionActive && !requestReceivedFromAnotherOwnedDevice + if let lastReadMessageServerTimestamp, shouldSendDiscussionReadJSON { + discussionReadJSONToSend = try ownedIdentity.getDiscussionReadJSON(discussionId: discussionId, lastReadMessageServerTimestamp: lastReadMessageServerTimestamp) } - - try PersistedMessageReceived.markAllAsNotNew(within: discussion) - try PersistedMessageSystem.markAllAsNotNew(within: discussion) } catch { + assertionFailure(error.localizedDescription) // Continue anyway + } + + result = .processed + + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + case .couldNotFindDiscussionWithId(discussionId: let discussionId): + switch discussionId { + case .groupV2(let id): + switch id { + case .groupV2Identifier(let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + case .objectID: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + case .oneToOne, .groupV1: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + default: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + } else { + assertionFailure() return cancel(withReason: .coreDataError(error: error)) } - } } -} - - -enum MarkAllMessagesAsNotNewWithinDiscussionOperationReasonForCancel: LocalizedErrorWithLogType { - case coreDataError(error: Error) - case couldNotFindDiscussion - case contextIsNil + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindDiscussion + case contextIsNil + case couldNotFindOwnedIdentity - var logType: OSLogType { - switch self { - case .coreDataError, - .contextIsNil: - return .fault - case .couldNotFindDiscussion: - return .error + var logType: OSLogType { + switch self { + case .coreDataError, + .contextIsNil, + .couldNotFindOwnedIdentity: + return .fault + case .couldNotFindDiscussion: + return .error + } } - } - - var errorDescription: String? { - switch self { - case .contextIsNil: - return "Context is nil" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .couldNotFindDiscussion: - return "Could not find discussion in database" + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindDiscussion: + return "Could not find discussion in database" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } } + } - } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAsOpenedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAsOpenedOperation.swift index a3273c93..8e385367 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAsOpenedOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MarkAsOpenedOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -36,25 +36,21 @@ final class MarkAsOpenedOperation: ContextualOperationWithSpecificReasonForCance super.init() } - override func main() { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - guard let fyle = try ReceivedFyleMessageJoinWithStatus.get(objectID: receivedFyleMessageJoinWithStatusID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindReceivedFyleMessageJoinWithStatus) - } - guard !fyle.receivedMessage.readingRequiresUserAction else { - assertionFailure() - return cancel(withReason: .tryToMarkAsOpenedAMessageWithReadingRequiresUserAction) - } - fyle.markAsOpened() - } catch { - return cancel(withReason: .coreDataError(error: error)) + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + guard let fyle = try ReceivedFyleMessageJoinWithStatus.get(objectID: receivedFyleMessageJoinWithStatusID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindReceivedFyleMessageJoinWithStatus) + } + guard !fyle.receivedMessage.readingRequiresUserAction else { + assertionFailure() + return cancel(withReason: .tryToMarkAsOpenedAMessageWithReadingRequiresUserAction) } + fyle.markAsOpened() + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteMessagesWithExpiredCountBasedRetentionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteMessagesWithExpiredCountBasedRetentionOperation.swift index 84862041..fad381cf 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteMessagesWithExpiredCountBasedRetentionOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteMessagesWithExpiredCountBasedRetentionOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteMessagesWithExpiredTimeBasedRetentionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteMessagesWithExpiredTimeBasedRetentionOperation.swift index a11da0ad..6e8eebcb 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteMessagesWithExpiredTimeBasedRetentionOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Message Retention/DeleteMessagesWithExpiredTimeBasedRetentionOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/AllowReadingOfAllMessagesReceivedThatRequireUserActionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/AllowReadingOfAllMessagesReceivedThatRequireUserActionOperation.swift deleted file mode 100644 index a610e890..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/AllowReadingOfAllMessagesReceivedThatRequireUserActionOperation.swift +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import OlvidUtils -import ObvUICoreData - - -/// This operation allows reading of all ephemeral received messages that requires user action (e.g. tap) before displaying its content, within the given discussion, but only if appropriate. -/// -/// This operation allows to implement the auto-read feature. -/// -/// This operation does nothing if the discussion is not the one corresponding to the user current activity, or if the app is not initialized and active. -/// -final class AllowReadingOfAllMessagesReceivedThatRequireUserActionOperation: OperationWithSpecificReasonForCancel { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: AllowReadingOfAllMessagesReceivedThatRequireUserActionOperation.self)) - - let discussionPermanentID: ObvManagedObjectPermanentID - - init(discussionPermanentID: ObvManagedObjectPermanentID) { - self.discussionPermanentID = discussionPermanentID - super.init() - } - - override func main() { - - guard ObvUserActivitySingleton.shared.currentDiscussionPermanentID == discussionPermanentID else { return } - - ObvStack.shared.performBackgroundTaskAndWait { context in - - // If we reach this point, the app is initialized and ative, and the user is in the appropriate discussion. - // We get all received messages that still require autorization before displaying their content. - - let receivedMessagesThatRequireUserActionForReading: [PersistedMessageReceived] - do { - receivedMessagesThatRequireUserActionForReading = try PersistedMessageReceived.getAllReceivedMessagesThatRequireUserActionForReading(discussionPermanentID: discussionPermanentID, within: context) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - /* For each received message that still requires autorization before displaying their content, - * we check whether the discussion has its auto-read configuration set to true (we expect this to - * be true for all messages, or false for all messages, since they come from the same discussion). - * We also check that the ephemerality of the message is at least as permissive as that of the discussion, - * otherwise, we do not auto-read. - */ - - receivedMessagesThatRequireUserActionForReading.forEach { receivedMessageThatRequireUserActionForReading in - guard receivedMessageThatRequireUserActionForReading.discussion.autoRead == true else { return } - // Check that the message ephemerality is at least that of the discussion, otherwise, do not auto read - guard receivedMessageThatRequireUserActionForReading.ephemeralityIsAtLeastAsPermissiveThanDiscussionSharedConfiguration else { - return - } - do { - try receivedMessageThatRequireUserActionForReading.allowReading(now: Date()) - } catch { - os_log("Could not auto-read received message although we should: %{public}@", log: log, type: .fault, error.localizedDescription) - // Continue anyway - } - } - - do { - try context.save(logOnFailure: log) - } catch { - cancel(withReason: .coreDataError(error: error)) - return - } - - } - - } - -} - - -enum AllowReadingOfAllMessagesReceivedThatRequireUserActionOperationReasonForCancel: LocalizedErrorWithLogType { - - case messageDoesNotExist - case coreDataError(error: Error) - - var logType: OSLogType { - switch self { - case .coreDataError: - return .fault - case .messageDoesNotExist: - return .info - } - } - - var errorDescription: String? { - switch self { - case .messageDoesNotExist: - return "We could not find the persisted message in database" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/AllowReadingOfMessagesReceivedThatRequireUserActionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/AllowReadingOfMessagesReceivedThatRequireUserActionOperation.swift index c2486803..9fee4c7d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/AllowReadingOfMessagesReceivedThatRequireUserActionOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/AllowReadingOfMessagesReceivedThatRequireUserActionOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,142 +22,215 @@ import CoreData import os.log import OlvidUtils import ObvUICoreData +import ObvTypes +/// /// This operation allows reading of an ephemeral received message that requires user action (e.g. tap) before displaying its content, but only if appropriate. /// /// This operation shall only be called when the user **explicitely** requested to open a message (in particular, it shall **not** be called for implementing /// the auto-read feature). /// -/// This operation does nothing if the discussion is not the one corresponding to the user current activity, or if the app is not initialized and active. -/// -final class AllowReadingOfMessagesReceivedThatRequireUserActionOperation: OperationWithSpecificReasonForCancel { - +final class AllowReadingOfMessagesReceivedThatRequireUserActionOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingLimitedVisibilityMessageOpenedJSONs { + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: AllowReadingOfMessagesReceivedThatRequireUserActionOperation.self)) - let persistedMessageReceivedObjectIDs: Set> + enum Input { + case requestedOnCurrentDevice(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, messageId: ReceivedMessageIdentifier) + case requestedOnAnotherOwnedDevice(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, messageId: ReceivedMessageIdentifier, messageUploadTimestampFromServer: Date) + } - init(persistedMessageReceivedObjectIDs: Set>) { - self.persistedMessageReceivedObjectIDs = persistedMessageReceivedObjectIDs + let input: Input + + init(_ input: Input) { + self.input = input super.init() } + + var ownedCryptoId: ObvCryptoId? { + switch input { + case .requestedOnAnotherOwnedDevice(ownedCryptoId: let ownedCryptoId, discussionId: _, messageId: _, messageUploadTimestampFromServer: _): + return ownedCryptoId + case .requestedOnCurrentDevice(ownedCryptoId: let ownedCryptoId, discussionId: _, messageId: _): + return ownedCryptoId + } + } + + private(set) var limitedVisibilityMessageOpenedJSONsToSend = [ObvUICoreData.LimitedVisibilityMessageOpenedJSON]() + + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case processed + } - override func main() { + private(set) var result: Result? - var discussionObjectIDsToRefresh = Set() - - ObvStack.shared.performBackgroundTaskAndWait { (context) in + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { - /* The following line was added to solve a recurring merge conflict between the context created here - * and the one one created in ProcessPersistedMessageAsItTurnsNotNewOperation. I do not understand why - * this is required at all since these two operations cannot be executed at the same time. Still, - * if we do not specify this merge policy, it is easy to reproduce a merge conflict: configure a discussion - * with only readOnly messages and auto reading, and let the contact send several messages in a row. - */ - context.mergePolicy = NSMergePolicy.mergeByPropertyStoreTrump + let ownedCryptoId: ObvCryptoId + let discussionId: DiscussionIdentifier + let messageId: ReceivedMessageIdentifier + let dateWhenMessageWasRead: Date + let shouldSendLimitedVisibilityMessageOpenedJSON: Bool + let requestedOnAnotherOwnedDevice: Bool + switch input { + case .requestedOnCurrentDevice(let _ownedCryptoId, let _discussionId, let _messageId): + ownedCryptoId = _ownedCryptoId + discussionId = _discussionId + messageId = _messageId + dateWhenMessageWasRead = Date() + shouldSendLimitedVisibilityMessageOpenedJSON = true + requestedOnAnotherOwnedDevice = false + case .requestedOnAnotherOwnedDevice(let _ownedCryptoId, let _discussionId, let _messageId, let messageUploadTimestampFromServer): + ownedCryptoId = _ownedCryptoId + discussionId = _discussionId + messageId = _messageId + dateWhenMessageWasRead = messageUploadTimestampFromServer + shouldSendLimitedVisibilityMessageOpenedJSON = false + requestedOnAnotherOwnedDevice = true + } - for messageID in persistedMessageReceivedObjectIDs { - - let messageReceived: PersistedMessageReceived - do { - guard let _message = try PersistedMessageReceived.get(with: messageID, within: context) else { - return - } - messageReceived = _message - } catch { - assertionFailure() - os_log("Could not get received message: %{public}@", log: log, type: .fault, error.localizedDescription) - // Continue anyway - return - } - - guard ObvUserActivitySingleton.shared.currentDiscussionPermanentID == messageReceived.discussion.discussionPermanentID else { - assertionFailure("How is it possible that the user requested to read a (say) read once message if she is not currently within the corresponding discussion?") - continue - } + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + let infos = try ownedIdentity.userWantsToReadReceivedMessageWithLimitedVisibility(discussionId: discussionId, messageId: messageId, dateWhenMessageWasRead: dateWhenMessageWasRead, requestedOnAnotherOwnedDevice: requestedOnAnotherOwnedDevice) + + // If we indeed deleted at least one message, we must refresh the view context and notify (to, e.g., delete hard links) + if let infos { + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + // We deleted some persisted messages. We notify about that. + InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted([infos]) + // Refresh objects in the view context + InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, [infos]) + } + } + + // If the user decide to read the message on this device, we must notify other devices. + // To make this possible, we compute a LimitedVisibilityMessageOpenedJSON that will be processed by another operation. + + if shouldSendLimitedVisibilityMessageOpenedJSON { do { - try messageReceived.allowReading(now: Date()) + let limitedVisibilityMessageOpenedJSONToSend = try ownedIdentity.getLimitedVisibilityMessageOpenedJSON(discussionId: discussionId, messageId: messageId) + limitedVisibilityMessageOpenedJSONsToSend = [limitedVisibilityMessageOpenedJSONToSend] } catch { - return cancel(withReason: .couldNotAllowReading) + assertionFailure(error.localizedDescription) } - - discussionObjectIDsToRefresh.insert(messageReceived.discussion.objectID) - } + // The following allows to make sure we properly refresh the discussion's messages in the view context. + // Although this is not required for the read message (thanks the view context's auto refresh feature), this is required to refresh messages that replied to it. + do { - try context.save(logOnFailure: log) + let receivedMessageObjectID = try ownedIdentity.getObjectIDOfReceivedMessage(discussionId: discussionId, messageId: messageId) + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + viewContext.perform { + guard let object = viewContext.registeredObject(for: receivedMessageObjectID) else { return } + viewContext.refresh(object, mergeChanges: false) + // We also look for messages containing a reply-to to the messages that have been interacted with + let registeredMessages = ObvStack.shared.viewContext.registeredObjects.compactMap({ $0 as? PersistedMessage }) + registeredMessages.forEach { replyTo in + switch replyTo.genericRepliesTo { + case .available(message: let message): + if message.objectID == receivedMessageObjectID { + ObvStack.shared.viewContext.refresh(replyTo, mergeChanges: false) + } + case .deleted, .notAvailableYet, .none: + return + } + } + } + } } catch { - cancel(withReason: .coreDataError(error: error)) - return - } - - } - - // The following allows to make sure we properly refresh the discussion in the view context - // For now, it is not required since the viewContext is automatically refreshed. But, some day, we won't rely on automatic refresh. - let messageObjectIDs = persistedMessageReceivedObjectIDs - ObvStack.shared.viewContext.perform { - - for messageID in messageObjectIDs { - if let message = try? PersistedMessageReceived.get(with: messageID, within: ObvStack.shared.viewContext) { - ObvStack.shared.viewContext.refresh(message, mergeChanges: false) + if (error as? ObvUICoreData.PersistedDiscussion.ObvError) == .couldNotFindMessage { + // This is ok as this happens when the message was } else { - assertionFailure() + assertionFailure(error.localizedDescription) } } - // We also look for messages containing a reply-to to the messages that have been interacted with - let registeredMessages = ObvStack.shared.viewContext.registeredObjects.compactMap({ $0 as? PersistedMessage }) - registeredMessages.forEach { replyTo in - switch replyTo.genericRepliesTo { - case .available(message: let message): - if let receivedMessage = message as? PersistedMessageReceived, messageObjectIDs.contains(receivedMessage.typedObjectID) { - ObvStack.shared.viewContext.refresh(replyTo, mergeChanges: false) - } - case .deleted, .notAvailableYet, .none: + result = .processed + + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) return + case .couldNotFindDiscussionWithId(discussionId: let discussionId): + switch discussionId { + case .groupV2(let id): + switch id { + case .groupV2Identifier(let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + case .objectID: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + case .oneToOne, .groupV1: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + default: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - } - - for discussionID in discussionObjectIDsToRefresh { - if let discussion = try? PersistedDiscussion.get(objectID: discussionID, within: ObvStack.shared.viewContext) { - ObvStack.shared.viewContext.refresh(discussion, mergeChanges: false) - } else { + } else if let error = error as? ObvUICoreData.PersistedDiscussion.ObvError { + switch error { + case .couldNotFindMessage: + // This can happen for a read once message, if it has already been deleted + result = .processed + return + default: assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } + } else { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } } } - -} - -enum AllowReadingOfReadOnceMessageOperationReasonForCancel: LocalizedErrorWithLogType { - case messageDoesNotExist - case coreDataError(error: Error) - case couldNotAllowReading - - var logType: OSLogType { - switch self { - case .coreDataError, - .couldNotAllowReading: - return .fault - case .messageDoesNotExist: - return .info + enum ReasonForCancel: LocalizedErrorWithLogType { + + case messageDoesNotExist + case coreDataError(error: Error) + case couldNotAllowReading + case couldNotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, + .couldNotAllowReading, + .couldNotFindOwnedIdentity: + return .fault + case .messageDoesNotExist: + return .info + } } - } - - var errorDescription: String? { - switch self { - case .messageDoesNotExist: - return "We could not find the persisted message in database" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .couldNotAllowReading: - return "Could not allow reading" + + var errorDescription: String? { + switch self { + case .messageDoesNotExist: + return "We could not find the persisted message in database" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotAllowReading: + return "Could not allow reading" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } } + } - + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/TryToAutoReadDiscussionsReceivedMessagesThatRequireUserActionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/TryToAutoReadDiscussionsReceivedMessagesThatRequireUserActionOperation.swift new file mode 100644 index 00000000..9bff703e --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/MessagesThatRequireUserAction/TryToAutoReadDiscussionsReceivedMessagesThatRequireUserActionOperation.swift @@ -0,0 +1,183 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import OlvidUtils +import ObvUICoreData +import ObvTypes + + + +/// This operation allows reading of all ephemeral received messages that requires user action (e.g. tap) before displaying its content, within the given discussion, but only if appropriate. +/// +/// This operation allows to implement the auto-read feature. +/// +/// This operation does nothing if the discussion is not the one corresponding to the user current activity. +/// +final class TryToAutoReadDiscussionsReceivedMessagesThatRequireUserActionOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingLimitedVisibilityMessageOpenedJSONs { + + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: TryToAutoReadDiscussionsReceivedMessagesThatRequireUserActionOperation.self)) + + enum Input { + case discussionPermanentID(discussionPermanentID: DiscussionPermanentID) + case operationProvidingDiscussionPermanentID(op: OperationProvidingDiscussionPermanentID) + } + + let input: Input + + init(input: Input) { + self.input = input + super.init() + } + + /// This array stores all the `LimitedVisibilityMessageOpenedJSON` that should be sent after this operation finishes. + private(set) var limitedVisibilityMessageOpenedJSONsToSend = [ObvUICoreData.LimitedVisibilityMessageOpenedJSON]() + private(set) var ownedCryptoId: ObvCryptoId? + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + let discussionPermanentID: DiscussionPermanentID + switch input { + case .discussionPermanentID(discussionPermanentID: let _discussionPermanentID): + discussionPermanentID = _discussionPermanentID + case .operationProvidingDiscussionPermanentID(op: let op): + guard let _discussionPermanentID = op.discussionPermanentID else { return } + discussionPermanentID = _discussionPermanentID + } + + do { + + let (ownedCryptoId, discussionId) = try PersistedDiscussion.getIdentifiers(for: discussionPermanentID, within: obvContext.context) + + self.ownedCryptoId = ownedCryptoId + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + guard ObvUserActivitySingleton.shared.currentDiscussionPermanentID == discussionPermanentID else { return } + + let dateWhenMessageWasRead = Date() + + let (infos, identifiersOfReadReceivedMessages) = try ownedIdentity.userWantsToAllowReadingAllReceivedMessagesReceivedThatRequireUserAction(discussionId: discussionId, dateWhenMessageWasRead: dateWhenMessageWasRead) + + // If the user decide to read the message on this device, we must notify other devices. + // To make this possible, we compute a LimitedVisibilityMessageOpenedJSON for each message. They will be processed by another operation. + + for messageId in identifiersOfReadReceivedMessages { + do { + let limitedVisibilityMessageOpenedJSON = try ownedIdentity.getLimitedVisibilityMessageOpenedJSON(discussionId: discussionId, messageId: messageId) + limitedVisibilityMessageOpenedJSONsToSend.append(limitedVisibilityMessageOpenedJSON) + } catch { + assertionFailure(error.localizedDescription) // Continue anyway + } + } + + // If we indeed deleted at least one message, we must refresh the view context and notify (to, e.g., delete hard links) + + if !infos.isEmpty { + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + // We deleted some persisted messages. We notify about that. + InfoAboutWipedOrDeletedPersistedMessage.notifyThatMessagesWereWipedOrDeleted(infos) + // Refresh objects in the view context + InfoAboutWipedOrDeletedPersistedMessage.refresh(viewContext: viewContext, infos) + } + } + + // The following allows to make sure we properly refresh the discussion's messages in the view context. + // Although this is not required for the read messages (thanks the view context's auto refresh feature), this is required to refresh messages that replied to it. + + if !identifiersOfReadReceivedMessages.isEmpty { + do { + for messageId in identifiersOfReadReceivedMessages { + let receivedMessageObjectID = try ownedIdentity.getObjectIDOfReceivedMessage(discussionId: discussionId, messageId: messageId) + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + viewContext.perform { + guard let object = viewContext.registeredObject(for: receivedMessageObjectID) else { return } + viewContext.refresh(object, mergeChanges: false) + // We also look for messages containing a reply-to to the messages that have been interacted with + let registeredMessages = ObvStack.shared.viewContext.registeredObjects.compactMap({ $0 as? PersistedMessage }) + registeredMessages.forEach { replyTo in + switch replyTo.genericRepliesTo { + case .available(message: let message): + if message.objectID == receivedMessageObjectID { + ObvStack.shared.viewContext.refresh(replyTo, mergeChanges: false) + } + case .deleted, .notAvailableYet, .none: + return + } + } + } + } + } + } catch { + assertionFailure(error.localizedDescription) + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case messageDoesNotExist + case coreDataError(error: Error) + case discussionDoesNotExist + case couldNotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, .discussionDoesNotExist, .couldNotFindOwnedIdentity: + return .fault + case .messageDoesNotExist: + return .info + } + } + + var errorDescription: String? { + switch self { + case .messageDoesNotExist: + return "We could not find the persisted message in database" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .discussionDoesNotExist: + return "Discussion does not exist" + } + } + + } + +} + + +protocol OperationProvidingDiscussionPermanentID: Operation { + + var discussionPermanentID: DiscussionPermanentID? { get } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ProcessObvReturnReceiptOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ProcessObvReturnReceiptOperation.swift index c021adc8..94e3df8f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ProcessObvReturnReceiptOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ProcessObvReturnReceiptOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -39,74 +39,66 @@ final class ProcessObvReturnReceiptOperation: ContextualOperationWithSpecificRea super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - cancel(withReason: .contextIsNil) - return + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + // Given the nonce and identity in the receipt, we fetch all the corresponding PersistedMessageSentRecipientInfos + + let allMsgSentRcptInfos: Set + do { + allMsgSentRcptInfos = try PersistedMessageSentRecipientInfos.get(withNonce: obvReturnReceipt.nonce, ownedCryptoId: ObvCryptoId(cryptoIdentity: obvReturnReceipt.identity), within: obvContext.context) + } catch let error { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - - obvContext.performAndWait { - - // Given the nonce and identity in the receipt, we fetch all the corresponding PersistedMessageSentRecipientInfos - - let allMsgSentRcptInfos: Set + + guard !allMsgSentRcptInfos.isEmpty else { + return cancel(withReason: .couldNotFindAnyPersistedMessageSentRecipientInfosInDatabase) + } + + for infos in allMsgSentRcptInfos { + guard let elements = infos.returnReceiptElements else { assertionFailure(); continue } + let contactCryptoId: ObvCryptoId + let rawStatus: Int + let attachmentNumber: Int? do { - allMsgSentRcptInfos = try PersistedMessageSentRecipientInfos.get(withNonce: obvReturnReceipt.nonce, ownedCryptoId: ObvCryptoId(cryptoIdentity: obvReturnReceipt.identity), within: obvContext.context) - } catch let error { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + (contactCryptoId, rawStatus, attachmentNumber) = try obvEngine.decryptPayloadOfObvReturnReceipt(obvReturnReceipt, usingElements: elements) + } catch { + os_log("Could not decrypt the return receipt encrypted payload: %{public}@", log: log, type: .error, error.localizedDescription) + continue } - - guard !allMsgSentRcptInfos.isEmpty else { - return cancel(withReason: .couldNotFindAnyPersistedMessageSentRecipientInfosInDatabase) + guard let status = ReturnReceiptJSON.Status(rawValue: rawStatus) else { + os_log("Could not parse the status within the return receipt", log: log, type: .error) + continue } - - for infos in allMsgSentRcptInfos { - guard let elements = infos.returnReceiptElements else { assertionFailure(); continue } - let contactCryptoId: ObvCryptoId - let rawStatus: Int - let attachmentNumber: Int? - do { - (contactCryptoId, rawStatus, attachmentNumber) = try obvEngine.decryptPayloadOfObvReturnReceipt(obvReturnReceipt, usingElements: elements) - } catch { - os_log("Could not decrypt the return receipt encrypted payload: %{public}@", log: log, type: .error, error.localizedDescription) - continue - } - guard let status = ReturnReceiptJSON.Status(rawValue: rawStatus) else { - os_log("Could not parse the status within the return receipt", log: log, type: .error) - continue - } - guard contactCryptoId == infos.recipientCryptoId else { - // The recipient do not concern the contact (but another contact of the discussion), so we continue the for loop - continue + guard contactCryptoId == infos.recipientCryptoId else { + // The recipient do not concern the contact (but another contact of the discussion), so we continue the for loop + continue + } + + // We have all the information we need to set the delivered or read timestamp for this sent message (and for its attachment if the attachment number if non nil) + + let messageSent = infos.messageSent + + if let attachmentNumber = attachmentNumber { + switch status { + case .delivered: + messageSent.attachmentSentWasDeliveredToRecipient(withCryptoId: contactCryptoId, at: obvReturnReceipt.timestamp, deliveredAttachmentNumber: attachmentNumber, andRead: false) + case .read: + messageSent.attachmentSentWasDeliveredToRecipient(withCryptoId: contactCryptoId, at: obvReturnReceipt.timestamp, deliveredAttachmentNumber: attachmentNumber, andRead: true) } - - // We have all the information we need to set the delivered or read timestamp for this sent message (and for its attachment if the attachment number if non nil) - - let messageSent = infos.messageSent - - if let attachmentNumber = attachmentNumber { - switch status { - case .delivered: - messageSent.attachmentSentWasDeliveredToRecipient(withCryptoId: contactCryptoId, at: obvReturnReceipt.timestamp, deliveredAttachmentNumber: attachmentNumber, andRead: false) - case .read: - messageSent.attachmentSentWasDeliveredToRecipient(withCryptoId: contactCryptoId, at: obvReturnReceipt.timestamp, deliveredAttachmentNumber: attachmentNumber, andRead: true) - } - } else { - switch status { - case .delivered: - messageSent.messageSentWasDeliveredToRecipient(withCryptoId: contactCryptoId, noLaterThan: obvReturnReceipt.timestamp, andRead: false) - case .read: - messageSent.messageSentWasDeliveredToRecipient(withCryptoId: contactCryptoId, noLaterThan: obvReturnReceipt.timestamp, andRead: true) - } + } else { + switch status { + case .delivered: + messageSent.messageSentWasDeliveredToRecipient(withCryptoId: contactCryptoId, noLaterThan: obvReturnReceipt.timestamp, andRead: false) + case .read: + messageSent.messageSentWasDeliveredToRecipient(withCryptoId: contactCryptoId, noLaterThan: obvReturnReceipt.timestamp, andRead: true) } - - // If we reach this point, we can break out of the loop since we updated an appropriate PersistedMessageSentRecipientInfos - break } + + // If we reach this point, we can break out of the loop since we updated an appropriate PersistedMessageSentRecipientInfos + break } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ProcessPersistedMessagesAsTheyTurnsNotNewOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ProcessPersistedMessagesAsTheyTurnsNotNewOperation.swift index f8666747..6a355e75 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ProcessPersistedMessagesAsTheyTurnsNotNewOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ProcessPersistedMessagesAsTheyTurnsNotNewOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,82 +22,68 @@ import CoreData import os.log import OlvidUtils import ObvUICoreData +import ObvTypes /// When a discussion displays a new message, we consider it to be "not new" anymore. In the case of a `PersistedMessageReceived` instance, we mark the message as `unread` if it it marked as `readOnce`, and we mark it as `read` otherwise. -final class ProcessPersistedMessagesAsTheyTurnsNotNewOperation: ContextualOperationWithSpecificReasonForCancel { +final class ProcessPersistedMessagesAsTheyTurnsNotNewOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingDiscussionReadJSON { - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ProcessPersistedMessagesAsTheyTurnsNotNewOperation.self)) - private let persistedMessageObjectIDs: Set> + private let _ownedCryptoId: ObvCryptoId + private let discussionId: DiscussionIdentifier + private let messageIds: [MessageIdentifier] - init(persistedMessageObjectIDs: Set>) { - self.persistedMessageObjectIDs = persistedMessageObjectIDs + init(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, messageIds: [MessageIdentifier]) { + self._ownedCryptoId = ownedCryptoId + self.discussionId = discussionId + self.messageIds = messageIds super.init() } + + var ownedCryptoId: ObvCryptoId? { _ownedCryptoId } + private(set) var discussionReadJSONToSend: DiscussionReadJSON? - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - var discussionObjectIDs = Set>() - let now = Date() + do { - obvContext.performAndWait { - - for persistedMessageObjectID in self.persistedMessageObjectIDs { - - let message: PersistedMessage - do { - guard let _message = try PersistedMessage.get(with: persistedMessageObjectID, within: obvContext.context) else { - continue - } - message = _message - } catch { - cancel(withReason: .coreDataError(error: error)) - return - } - - if let messageReceived = message as? PersistedMessageReceived { - do { - try messageReceived.markAsNotNew(now: now) - } catch { - assertionFailure() - continue - } - } else if let systemMessage = message as? PersistedMessageSystem { - systemMessage.status = .read - } else { - assertionFailure("Unhandled message type") - continue - } - - discussionObjectIDs.insert(message.discussion.typedObjectID) - + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: _ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) } + let dateWhenMessageTurnedNotNew = Date() + + let lastReadMessageServerTimestamp = try ownedIdentity.markAllMessagesAsNotNew(discussionId: discussionId, messageIds: messageIds, dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + do { - if !discussionObjectIDs.isEmpty, obvContext.context.hasChanges { + let isDiscussionActive = try ownedIdentity.isDiscussionActive(discussionId: discussionId) + if let lastReadMessageServerTimestamp, isDiscussionActive { + discussionReadJSONToSend = try ownedIdentity.getDiscussionReadJSON(discussionId: discussionId, lastReadMessageServerTimestamp: lastReadMessageServerTimestamp) + } + } catch { + assertionFailure(error.localizedDescription) // Continue anyway + } + + if obvContext.context.hasChanges { + do { + let discussionObjectID = try ownedIdentity.getDiscussionObjectID(discussionId: discussionId) try obvContext.addContextDidSaveCompletionHandler({ error in - guard error == nil else { assertionFailure(error!.localizedDescription); return } + guard error == nil else { return } // The following allows to make sure we properly refresh the discussion in the view context // In particular, this will trigger a proper computation of the new message badges - for objectID in discussionObjectIDs { - ObvStack.shared.viewContext.performAndWait { - guard let discussion = try? PersistedDiscussion.get(objectID: objectID, within: ObvStack.shared.viewContext) else { assertionFailure(); return } - ObvStack.shared.viewContext.refresh(discussion, mergeChanges: false) - } + viewContext.perform { + guard let discussion = viewContext.registeredObject(for: discussionObjectID) else { return } + ObvStack.shared.viewContext.refresh(discussion, mergeChanges: false) } }) + } catch { + assertionFailure(error.localizedDescription) // Continue anyway } - } catch { - os_log("Could not add completion handler to ObvContext: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure(error.localizedDescription) - return cancel(withReason: .coreDataError(error: error)) } - + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } @@ -105,21 +91,21 @@ final class ProcessPersistedMessagesAsTheyTurnsNotNewOperation: ContextualOperat enum ProcessPersistedMessagesAsTheyTurnsNotNewOperationReasonForCancel: LocalizedErrorWithLogType { - case contextIsNil + case couldNotFindOwnedIdentity case coreDataError(error: Error) case couldNotMarkMessageReceivedAsNotNew var logType: OSLogType { switch self { - case .coreDataError, .couldNotMarkMessageReceivedAsNotNew, .contextIsNil: + case .coreDataError, .couldNotMarkMessageReceivedAsNotNew, .couldNotFindOwnedIdentity: return .fault } } var errorDescription: String? { switch self { - case .contextIsNil: - return "Context is nil" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" case .coreDataError(error: let error): return "Core Data error: \(error.localizedDescription)" case .couldNotMarkMessageReceivedAsNotNew: diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing Engine Notifications/DeletePersistedMessageSentRecipientInfosWithoutMessageIdentifierFromEngineAndAssociatedToContactIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing Engine Notifications/DeletePersistedMessageSentRecipientInfosWithoutMessageIdentifierFromEngineAndAssociatedToContactIdentityOperation.swift index e03aa37d..039c8533 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing Engine Notifications/DeletePersistedMessageSentRecipientInfosWithoutMessageIdentifierFromEngineAndAssociatedToContactIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing Engine Notifications/DeletePersistedMessageSentRecipientInfosWithoutMessageIdentifierFromEngineAndAssociatedToContactIdentityOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing Engine Notifications/ProcessContactIntroductionInvitationSentOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing Engine Notifications/ProcessContactIntroductionInvitationSentOperation.swift new file mode 100644 index 00000000..58af95f6 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing Engine Notifications/ProcessContactIntroductionInvitationSentOperation.swift @@ -0,0 +1,86 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvEngine +import OlvidUtils +import ObvUICoreData +import ObvTypes + +final class ProcessContactIntroductionInvitationSentOperation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoId: ObvCryptoId + private let contactCryptoIdA: ObvCryptoId + private let contactCryptoIdB: ObvCryptoId + + init(ownedCryptoId: ObvCryptoId, contactCryptoIdA: ObvCryptoId, contactCryptoIdB: ObvCryptoId) { + self.ownedCryptoId = ownedCryptoId + self.contactCryptoIdA = contactCryptoIdA + self.contactCryptoIdB = contactCryptoIdB + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedOwnedIdentity) + } + + try ownedIdentity.processContactIntroductionInvitationSentByThisOwnedIdentity(contactCryptoIdA: contactCryptoIdA, contactCryptoIdB: contactCryptoIdB) + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindPersistedOwnedIdentity + case contextIsNil + + var logType: OSLogType { + switch self { + case .coreDataError, + .couldNotFindPersistedOwnedIdentity, + .contextIsNil: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindPersistedOwnedIdentity: + return "Could not find persisted owned identity" + case .contextIsNil: + return "Context is nil" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing ObvDialogs/ProcessObvDialogOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing ObvDialogs/ProcessObvDialogOperation.swift index 7f216810..27d0c571 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing ObvDialogs/ProcessObvDialogOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Processing ObvDialogs/ProcessObvDialogOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,143 +23,274 @@ import OlvidUtils import ObvEngine import os.log import ObvUICoreData +import CoreData +import ObvTypes +import ObvSettings -final class ProcessObvDialogOperation: ContextualOperationWithSpecificReasonForCancel { +final class ProcessObvDialogOperation: ContextualOperationWithSpecificReasonForCancel { private let obvDialog: ObvDialog private let obvEngine: ObvEngine + private let syncAtomRequestDelegate: ObvSyncAtomRequestDelegate - init(obvDialog: ObvDialog, obvEngine: ObvEngine) { + init(obvDialog: ObvDialog, obvEngine: ObvEngine, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate) { self.obvDialog = obvDialog self.obvEngine = obvEngine + self.syncAtomRequestDelegate = syncAtomRequestDelegate super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + // In the case the ObvDialog is a group invite, it might be possible to auto-accept the invitation + + switch obvDialog.category { - // In the case the ObvDialog is a group invite, it might be possible to auto-accept the invitation - - switch obvDialog.category { - - case .acceptGroupInvite(groupMembers: _, groupOwner: let groupOwner): - - switch ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom { - case .everyone: - var localDialog = obvDialog - do { - try localDialog.setResponseToAcceptGroupInvite(acceptInvite: true) - } catch { - return cancel(withReason: .couldNotRespondToDialog(error: error)) - } - obvEngine.respondTo(localDialog) - return - case .oneToOneContactsOnly: - do { - let persistedOneToOneContact = try PersistedObvContactIdentity.get(contactCryptoId: groupOwner.cryptoId, ownedIdentityCryptoId: obvDialog.ownedCryptoId, whereOneToOneStatusIs: .oneToOne, within: obvContext.context) - if persistedOneToOneContact != nil { - var localDialog = obvDialog - do { - try localDialog.setResponseToAcceptGroupInvite(acceptInvite: true) - } catch { - return cancel(withReason: .couldNotRespondToDialog(error: error)) - } - obvEngine.respondTo(localDialog) - return + case .acceptGroupInvite(groupMembers: _, groupOwner: let groupOwner): + + switch ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom { + case .everyone: + var localDialog = obvDialog + do { + try localDialog.setResponseToAcceptGroupInvite(acceptInvite: true) + } catch { + return cancel(withReason: .couldNotRespondToDialog(error: error)) + } + let dialogForEngine = localDialog + Task { + try? await obvEngine.respondTo(dialogForEngine) + } + return + case .oneToOneContactsOnly: + do { + let persistedOneToOneContact = try PersistedObvContactIdentity.get(contactCryptoId: groupOwner.cryptoId, ownedIdentityCryptoId: obvDialog.ownedCryptoId, whereOneToOneStatusIs: .oneToOne, within: obvContext.context) + if persistedOneToOneContact != nil { + var localDialog = obvDialog + do { + try localDialog.setResponseToAcceptGroupInvite(acceptInvite: true) + } catch { + return cancel(withReason: .couldNotRespondToDialog(error: error)) + } + let dialogForEngine = localDialog + Task { + try? await obvEngine.respondTo(dialogForEngine) } - } catch { - return cancel(withReason: .coreDataError(error: error)) + return } - case .noOne: - break + } catch { + return cancel(withReason: .coreDataError(error: error)) } - - case .acceptGroupV2Invite(inviter: let inviter, group: _): - - switch ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom { - case .everyone: - var localDialog = obvDialog - do { - try localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: true) - } catch { - return cancel(withReason: .couldNotRespondToDialog(error: error)) - } - obvEngine.respondTo(localDialog) - return - case .oneToOneContactsOnly: - do { - let inviterContact = try PersistedObvContactIdentity.get(contactCryptoId: inviter, ownedIdentityCryptoId: obvDialog.ownedCryptoId, whereOneToOneStatusIs: .oneToOne, within: obvContext.context) - if inviterContact != nil { - var localDialog = obvDialog - do { - try localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: true) - } catch { - return cancel(withReason: .couldNotRespondToDialog(error: error)) - } - obvEngine.respondTo(localDialog) - return + case .noOne: + break + } + + case .acceptGroupV2Invite(inviter: let inviter, group: _): + + switch ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom { + case .everyone: + var localDialog = obvDialog + do { + try localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: true) + } catch { + return cancel(withReason: .couldNotRespondToDialog(error: error)) + } + let dialogForEngine = localDialog + Task { + try? await obvEngine.respondTo(dialogForEngine) + } + return + case .oneToOneContactsOnly: + do { + let inviterContact = try PersistedObvContactIdentity.get(contactCryptoId: inviter, ownedIdentityCryptoId: obvDialog.ownedCryptoId, whereOneToOneStatusIs: .oneToOne, within: obvContext.context) + if inviterContact != nil { + var localDialog = obvDialog + do { + try localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: true) + } catch { + return cancel(withReason: .couldNotRespondToDialog(error: error)) } - } catch { - return cancel(withReason: .coreDataError(error: error)) + let dialogForEngine = localDialog + Task { + try? await obvEngine.respondTo(dialogForEngine) + } + return } - case .noOne: - break + } catch { + return cancel(withReason: .coreDataError(error: error)) } - - default: + case .noOne: break } - // If we reach this point, we could not auto-accept the ObvDialog. - // We persist it. Depending on the category, we create a subentity of - // PersistedInvitation (which is the "new" way of dealing with invitations), - // Or create a "generic" PersistedInvitation. - + default: + break + } + + // In case we receive an ObvSyncAtom from the protocol manager, we can process it immediately + + switch obvDialog.category { + case .syncRequestReceivedFromOtherOwnedDevice(otherOwnedDeviceIdentifier: _, syncAtom: let syncAtom): do { - switch obvDialog.category { - case .oneToOneInvitationSent: - if try PersistedInvitationOneToOneInvitationSent.getPersistedInvitation(uuid: obvDialog.uuid, ownedCryptoId: obvDialog.ownedCryptoId, within: obvContext.context) == nil { - _ = try PersistedInvitationOneToOneInvitationSent(obvDialog: obvDialog, within: obvContext.context) - } - default: - try PersistedInvitation.insertOrUpdate(obvDialog, within: obvContext.context) - } + try process(syncAtom: syncAtom, ownedCryptoId: obvDialog.ownedCryptoId, within: obvContext, viewContext: viewContext) + try syncAtomRequestDelegate.deleteDialog(with: obvDialog.uuid) } catch { - return cancel(withReason: .coreDataError(error: error)) + return cancel(withReason: .couldNotProcessSyncAtom(syncAtom: syncAtom)) } - + // The atom was processed, we can return + return + default: + break + } + + // If we reach this point, we could not auto-accept the ObvDialog. + // We persist it. Depending on the category, we create a subentity of + // PersistedInvitation (which is the "new" way of dealing with invitations), + // Or create a "generic" PersistedInvitation. + + do { + switch obvDialog.category { + case .oneToOneInvitationSent: + if try PersistedInvitationOneToOneInvitationSent.getPersistedInvitation(uuid: obvDialog.uuid, ownedCryptoId: obvDialog.ownedCryptoId, within: obvContext.context) == nil { + _ = try PersistedInvitationOneToOneInvitationSent(obvDialog: obvDialog, within: obvContext.context) + } + default: + try PersistedInvitation.insertOrUpdate(obvDialog, within: obvContext.context) + } + } catch { + return cancel(withReason: .coreDataError(error: error)) } } + + + private func process(syncAtom: ObvSyncAtom, ownedCryptoId: ObvCryptoId, within obvContext: ObvContext, viewContext: NSManagedObjectContext) throws { -} - - -enum ProcessObvDialogOperationReasonForCancel: LocalizedErrorWithLogType { + switch syncAtom { + case .contactNickname(contactCryptoId: let contactCryptoId, contactNickname: let contactNickname): + let contactIdentifier = ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + guard let contact = try PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { assertionFailure(); return } + let op1 = UpdateCustomNicknameAndPictureForContactOperation(persistedContactObjectID: contact.objectID, customDisplayName: contactNickname, customPhoto: .url(url: contact.customPhotoURL), makeSyncAtomRequest: false, syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .groupV1Nickname(groupOwner: let groupOwner, groupUid: let groupUid, groupNickname: let groupNickname): + let groupIdentifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + let op1 = SetCustomNameOfJoinedGroupV1Operation(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, groupNameCustom: groupNickname, makeSyncAtomRequest: false, syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .groupV2Nickname(groupIdentifier: let groupIdentifier, groupNickname: let groupNickname): + let op1 = UpdateCustomNameAndGroupV2PhotoOperation(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, update: .customName(customName: groupNickname), makeSyncAtomRequest: false, syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .contactPersonalNote(contactCryptoId: let contactCryptoId, note: let note): + let contactIdentifier = ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + let op1 = UpdatePersonalNoteOnContactOperation(contactIdentifier: contactIdentifier, newText: note, makeSyncAtomRequest: false, syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .groupV1PersonalNote(groupOwner: let groupOwner, groupUid: let groupUid, note: let note): + let groupIdentifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + let op1 = UpdatePersonalNoteOnGroupV1Operation(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, newText: note, makeSyncAtomRequest: false, syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .groupV2PersonalNote(groupIdentifier: let groupIdentifier, note: let note): + let op1 = UpdatePersonalNoteOnGroupV2Operation(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, newText: note, makeSyncAtomRequest: false, syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .ownProfileNickname(nickname: let nickname): + let op1 = UpdateOwnedCustomDisplayNameOperation(ownedCryptoId: ownedCryptoId, newCustomDisplayName: nickname, makeSyncAtomRequest: false, syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .contactCustomHue(contactCryptoId: _, customHue: _): + // Not implemented under iOS. The protocol manager is not supposed to notify us + assertionFailure() + return + case .contactSendReadReceipt(contactCryptoId: let contactCryptoId, doSendReadReceipt: let doSendReadReceipt): + let contactIdentifier = ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + let op1 = UpdateDiscussionLocalConfigurationOperation( + value: .doSendReadReceipt(doSendReadReceipt), + input: .discussionWithOneToOneContact(contactIdentifier: contactIdentifier), + makeSyncAtomRequest: false, + syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .groupV1ReadReceipt(groupOwner: let groupOwner, groupUid: let groupUid, doSendReadReceipt: let doSendReadReceipt): + let groupIdentifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + let op1 = UpdateDiscussionLocalConfigurationOperation( + value: .doSendReadReceipt(doSendReadReceipt), + input: .groupV1Discussion(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier), + makeSyncAtomRequest: false, + syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .groupV2ReadReceipt(groupIdentifier: let groupIdentifier, doSendReadReceipt: let doSendReadReceipt): + let op1 = UpdateDiscussionLocalConfigurationOperation( + value: .doSendReadReceipt(doSendReadReceipt), + input: .groupV2Discussion(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier), + makeSyncAtomRequest: false, + syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .trustContactDetails: + // This atom should be dealt with by the identity manager and shouldn't have been received here + assertionFailure() + return + case .trustGroupV1Details: + // This atom should be dealt with by the identity manager and shouldn't have been received here + assertionFailure() + return + case .trustGroupV2Details: + // This atom should be dealt with by the identity manager and shouldn't have been received here + assertionFailure() + case .pinnedDiscussions(discussionIdentifiers: let discussionIdentifiers, ordered: let ordered): + let op1 = ReorderDiscussionsOperation(input: .discussionsIdentifiers(discussionIdentifiers: discussionIdentifiers, ordered: ordered), ownedIdentity: ownedCryptoId, makeSyncAtomRequest: false, syncAtomRequestDelegate: nil) + op1.main(obvContext: obvContext, viewContext: viewContext) + assert(!op1.isCancelled) + case .settingDefaultSendReadReceipts(sendReadReceipt: let sendReadReceipt): + ObvMessengerSettings.Discussions.setDoSendReadReceipt(to: sendReadReceipt, changeMadeFromAnotherOwnedDevice: true, ownedCryptoId: ownedCryptoId) + case .settingAutoJoinGroups(category: let category): + let autoAccept = getAutoAcceptGroupInviteFromObvSyncAtomAutoJoinGroupsCategory(category: category) + ObvMessengerSettings.ContactsAndGroups.setAutoAcceptGroupInviteFrom(to: autoAccept, changeMadeFromAnotherOwnedDevice: true, ownedCryptoId: ownedCryptoId) + } + + } + - case coreDataError(error: Error) - case contextIsNil - case couldNotRespondToDialog(error: Error) - - var logType: OSLogType { - .fault + private func getAutoAcceptGroupInviteFromObvSyncAtomAutoJoinGroupsCategory(category: ObvSyncAtom.AutoJoinGroupsCategory) -> ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom { + switch category { + case .everyone: + return .everyone + case .contacts: + return .oneToOneContactsOnly + case .nobody: + return .noOne + } } + - var errorDescription: String? { - switch self { - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .contextIsNil: - return "The context is not set" - case .couldNotRespondToDialog(error: let error): - return "Could not respond to dialog: \(error.localizedDescription)" + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case contextIsNil + case couldNotRespondToDialog(error: Error) + case couldNotProcessSyncAtom(syncAtom: ObvSyncAtom) + + var logType: OSLogType { + .fault + } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .contextIsNil: + return "The context is not set" + case .couldNotRespondToDialog(error: let error): + return "Could not respond to dialog: \(error.localizedDescription)" + case .couldNotProcessSyncAtom(syncAtom: let syncAtom): + return "Could not process syncAtom \(syncAtom.debugDescription)" + } } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Reactions/ProcessSetOrUpdateReactionOnMessageLocalRequestOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Reactions/ProcessSetOrUpdateReactionOnMessageLocalRequestOperation.swift new file mode 100644 index 00000000..ed5a6ff5 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Reactions/ProcessSetOrUpdateReactionOnMessageLocalRequestOperation.swift @@ -0,0 +1,101 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvEngine +import ObvTypes +import OlvidUtils +import ObvCrypto +import ObvUICoreData + + +/// Called when the owned identity decided to set (or replace) a reaction on a message. +final class ProcessSetOrUpdateReactionOnMessageLocalRequestOperation: ContextualOperationWithSpecificReasonForCancel { + + private let ownedCryptoId: ObvCryptoId + private let messageObjectID: TypeSafeManagedObjectID + private let newEmoji: String? + + init(ownedCryptoId: ObvCryptoId, messageObjectID: TypeSafeManagedObjectID, newEmoji: String?) { + self.ownedCryptoId = ownedCryptoId + self.messageObjectID = messageObjectID + self.newEmoji = newEmoji + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + let updatedMessage = try ownedIdentity.processSetOrUpdateReactionOnMessageLocalRequestFromThisOwnedIdentity(messageObjectID: messageObjectID, newEmoji: newEmoji) + + // If the message is registered in the view context, we refresh it + + if let messageObjectID = updatedMessage?.typedObjectID { + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvStack.shared.viewContext.perform { + guard let message = ObvStack.shared.viewContext.registeredObject(for: messageObjectID.objectID) else { return } + ObvStack.shared.viewContext.refresh(message, mergeChanges: false) + } + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case contextIsNil + case coreDataError(error: Error) + case couldNotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .coreDataError, + .contextIsNil, + .couldNotFindOwnedIdentity: + return .error + } + } + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Reactions/ProcessSetOrUpdateReactionOnMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Reactions/ProcessSetOrUpdateReactionOnMessageOperation.swift new file mode 100644 index 00000000..6dfaccea --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Reactions/ProcessSetOrUpdateReactionOnMessageOperation.swift @@ -0,0 +1,150 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvEngine +import ObvTypes +import OlvidUtils +import ObvCrypto +import ObvUICoreData + + +/// Called when receiving a remote request (from a contact or from another owned device) to set or edit the reaction on a message. +final class ProcessSetOrUpdateReactionOnMessageOperation: ContextualOperationWithSpecificReasonForCancel { + + + enum Requester { + case contact(contactIdentifier: ObvContactIdentifier) + case ownedIdentity(ownedCryptoId: ObvCryptoId) + } + + private let reactionJSON: ReactionJSON + private let requester: Requester + private let messageUploadTimestampFromServer: Date + + init(reactionJSON: ReactionJSON, requester: Requester, messageUploadTimestampFromServer: Date) { + self.reactionJSON = reactionJSON + self.requester = requester + self.messageUploadTimestampFromServer = messageUploadTimestampFromServer + super.init() + } + + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case processed + } + + private(set) var result: Result? + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + let updatedMessage: PersistedMessage? + + switch requester { + + case .contact(contactIdentifier: let contactIdentifier): + + // Get the PersistedObvContactIdentity who requested the edit + + guard let contact = try PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContact) + } + + updatedMessage = try contact.processSetOrUpdateReactionOnMessageRequestFromThisContact(reactionJSON: reactionJSON, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + case .ownedIdentity(ownedCryptoId: let ownedCryptoId): + + // Get the PersistedObvContactIdentity who requested the edit + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + updatedMessage = try ownedIdentity.processSetOrUpdateReactionOnMessageRequestFromThisOwnedIdentity(reactionJSON: reactionJSON, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + result = .processed + + // If the message is registered in the view context, we refresh it + + if let messageObjectID = updatedMessage?.typedObjectID, obvContext.context.hasChanges { + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvStack.shared.viewContext.perform { + guard let message = ObvStack.shared.viewContext.registeredObject(for: messageObjectID.objectID) else { return } + ObvStack.shared.viewContext.refresh(message, mergeChanges: false) + } + } + } + + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + default: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + } else { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindOwnedIdentity + case couldNotFindContact + + var logType: OSLogType { + switch self { + case .coreDataError, + .couldNotFindContact, + .couldNotFindOwnedIdentity: + return .error + } + } + + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .couldNotFindContact: + return "Could not find contact" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ApplyExistingRemoteDeleteAndEditRequestOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ApplyExistingRemoteDeleteAndEditRequestOperation.swift deleted file mode 100644 index d756ba22..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ApplyExistingRemoteDeleteAndEditRequestOperation.swift +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import OlvidUtils -import ObvEngine -import os.log -import ObvUICoreData -import ObvTypes - - -/// Given its inputs, this operation looks for an existing `RemoteDeleteAndEditRequest`. If one is found, this operation either executes a `WipeMessagesOperation` or an `EditTextBodyOfReceivedMessageOperation` -/// operation, depending on the nature of the request found. -final class ApplyExistingRemoteDeleteAndEditRequestOperation: ContextualOperationWithSpecificReasonForCancel { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ApplyExistingRemoteDeleteAndEditRequestOperation.self)) - - private let obvMessage: ObvMessage - private let messageJSON: MessageJSON - - init(obvMessage: ObvMessage, messageJSON: MessageJSON) { - self.obvMessage = obvMessage - self.messageJSON = messageJSON - super.init() - } - - override func main() { - - os_log("Executing an ApplyExistingRemoteDeleteAndEditRequestOperation for obvMessage %{public}@", log: log, type: .debug, obvMessage.messageIdentifierFromEngine.debugDescription) - ObvDisplayableLogs.shared.log("🧨 Starting ApplyExistingRemoteDeleteAndEditRequestOperation") - defer { ObvDisplayableLogs.shared.log("🧨 Ending ApplyExistingRemoteDeleteAndEditRequestOperation") } - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - - // Grab the persisted contact and the appropriate discussion - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvMessage.fromContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedObvContactIdentityInDatabase) - } - - guard let ownedIdentity = persistedContactIdentity.ownedIdentity else { - return cancel(withReason: .couldNotDetermineOwnedIdentity) - } - - let discussion: PersistedDiscussion - switch messageJSON.groupIdentifier { - case .none: - guard let oneToOneDiscussion = persistedContactIdentity.oneToOneDiscussion else { - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = oneToOneDiscussion - case .groupV1(groupV1Identifier: let groupV1Identifier): - guard let contactGroup = try PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedIdentity: ownedIdentity) else { - return cancel(withReason: .couldNotFindPersistedContactGroupInDatabase) - } - discussion = contactGroup.discussion - case .groupV2(groupV2Identifier: let groupV2Identifier): - guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupV2Identifier) else { - return cancel(withReason: .couldNotFindPersistedContactGroupInDatabase) - } - guard let groupDiscussion = group.discussion else { - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = groupDiscussion - } - - // Look for an existing RemoteDeleteAndEditRequest for the received message in that discussion - - let remoteRequest = try RemoteDeleteAndEditRequest.getRemoteDeleteAndEditRequest( - discussion: discussion, - senderIdentifier: obvMessage.fromContactIdentity.cryptoId.getIdentity(), - senderThreadIdentifier: messageJSON.senderThreadIdentifier, - senderSequenceNumber: messageJSON.senderSequenceNumber) - - switch remoteRequest { - - case .none: - // We found no existing remote request, there is nothing left to do - return - - case .some(let request): - - // A remote request was found. Depending on its type, we execute a WipeMessagesOperation or an EditTextBodyOfReceivedMessageOperation. - // We do not queue them in order to prevent a deadlock on the obvContext thread, we take advantage of the reentrant feature of performAndWait. - - switch request.requestType { - case .delete: - let op = WipeMessagesOperation(messagesToDelete: [request.messageReferenceJSON], - groupIdentifier: messageJSON.groupIdentifier, - requester: obvMessage.fromContactIdentity, - messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer, - saveRequestIfMessageCannotBeFound: false) - op.obvContext = obvContext - op.main() - guard !op.isCancelled else { - guard let reason = op.reasonForCancel else { return cancel(withReason: .unknownReason) } - return cancel(withReason: .wipeMessagesOperationCancelled(reason: reason)) - } - case .edit: - let op = EditTextBodyOfReceivedMessageOperation(newTextBody: request.body, - requester: obvMessage.fromContactIdentity, - groupIdentifier: messageJSON.groupIdentifier, - receivedMessageToEdit: request.messageReferenceJSON, - messageUploadTimestampFromServer: request.serverTimestamp, - saveRequestIfMessageCannotBeFound: false, - newMentions: messageJSON.userMentions) - op.obvContext = obvContext - op.main() - guard !op.isCancelled else { - guard let reason = op.reasonForCancel else { return cancel(withReason: .unknownReason) } - return cancel(withReason: .editTextBodyOfReceivedMessageOperation(reason: reason)) - } - } - - // If we reach this point, the remote request has been processed, we can delete it - - try request.delete() - - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - } - - } - -} - - -enum ApplyingRemoteDeleteAndEditRequestOperationReasonForCancel: LocalizedErrorWithLogType { - - case unknownReason - case contextIsNil - case couldNotFindPersistedObvContactIdentityInDatabase - case couldNotDetermineOwnedIdentity - case couldNotFindPersistedContactGroupInDatabase - case coreDataError(error: Error) - case couldNotFindPersistedMessageReceived - case wipeMessagesOperationCancelled(reason: WipeMessagesOperationReasonForCancel) - case editTextBodyOfReceivedMessageOperation(reason: EditTextBodyOfReceivedMessageOperationReasonForCancel) - case couldNotFindDiscussion - - var logType: OSLogType { - switch self { - case .couldNotFindPersistedObvContactIdentityInDatabase, - .couldNotFindPersistedContactGroupInDatabase, - .couldNotFindDiscussion: - return .error - case .unknownReason, - .contextIsNil, - .coreDataError, - .couldNotDetermineOwnedIdentity, - .couldNotFindPersistedMessageReceived: - return .fault - case .wipeMessagesOperationCancelled(reason: let reason): - return reason.logType - case .editTextBodyOfReceivedMessageOperation(reason: let reason): - return reason.logType - } - } - - var errorDescription: String? { - switch self { - case .unknownReason: - return "One of the operations cancelled without speciying a reason. This is a bug." - case .contextIsNil: - return "The context is not set" - case .couldNotFindPersistedObvContactIdentityInDatabase: - return "Could not find contact identity of received message in database" - case .couldNotFindPersistedContactGroupInDatabase: - return "Could not find group of received message in database" - case .couldNotDetermineOwnedIdentity: - return "Could not determine owned identity" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .couldNotFindPersistedMessageReceived: - return "Could not find message received although it is expected to be created within this context at this point" - case .wipeMessagesOperationCancelled(reason: let reason): - return reason.errorDescription - case .editTextBodyOfReceivedMessageOperation(reason: let reason): - return reason.errorDescription - case .couldNotFindDiscussion: - return "Could not find discussion" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ApplyPendingReactionsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ApplyPendingReactionsOperation.swift deleted file mode 100644 index 84c0c1ce..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ApplyPendingReactionsOperation.swift +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import OlvidUtils -import ObvEngine -import os.log -import ObvTypes -import ObvUICoreData - - -/// This operation looks for an existing `PendingMessageReaction`. If one is found, this operation executes a `UpdateReactionsOfMessageOperation`. -final class ApplyPendingReactionsOperation: ContextualOperationWithSpecificReasonForCancel { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ApplyPendingReactionsOperation.self)) - - private let obvMessage: ObvMessage - private let messageJSON: MessageJSON - - init(obvMessage: ObvMessage, messageJSON: MessageJSON) { - self.obvMessage = obvMessage - self.messageJSON = messageJSON - super.init() - } - - override func main() { - - os_log("Executing an ApplyPendingReactionsOperation for obvMessage %{public}@", log: log, type: .debug, obvMessage.messageIdentifierFromEngine.debugDescription) - ObvDisplayableLogs.shared.log("🧨 Starting ApplyPendingReactionsOperation") - defer { ObvDisplayableLogs.shared.log("🧨 Ending ApplyPendingReactionsOperation") } - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - - // Grab the persisted contact and the appropriate discussion - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvMessage.fromContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedObvContactIdentityInDatabase) - } - - guard let ownedIdentity = persistedContactIdentity.ownedIdentity else { - return cancel(withReason: .couldNotDetermineOwnedIdentity) - } - - let discussion: PersistedDiscussion - switch messageJSON.groupIdentifier { - - case .none: - - guard let oneToOneDiscussion = persistedContactIdentity.oneToOneDiscussion else { - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = oneToOneDiscussion - - case .groupV1(groupV1Identifier: let groupV1Identifier): - - guard let contactGroup = try PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedIdentity: ownedIdentity) else { - return cancel(withReason: .couldNotFindPersistedContactGroupInDatabase) - } - discussion = contactGroup.discussion - - case .groupV2(groupV2Identifier: let groupV2Identifier): - - guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupV2Identifier) else { - return cancel(withReason: .couldNotFindPersistedContactGroupInDatabase) - } - guard let groupDiscussion = group.discussion else { - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = groupDiscussion - - } - - // Look for an existing PendingMessageReaction for the received message in that discussion - - let pendingReaction = try PendingMessageReaction.getPendingMessageReaction( - discussion: discussion, - senderIdentifier: obvMessage.fromContactIdentity.cryptoId.getIdentity(), - senderThreadIdentifier: messageJSON.senderThreadIdentifier, - senderSequenceNumber: messageJSON.senderSequenceNumber) - - guard let pendingReaction = pendingReaction else { - // We found no existing pending reaction, there is nothing left to do - return - } - - let op = UpdateReactionsOfMessageOperation(emoji: pendingReaction.emoji, - messageReference: pendingReaction.messageReferenceJSON, - groupIdentifier: messageJSON.groupIdentifier, - contactIdentity: obvMessage.fromContactIdentity, - reactionTimestamp: pendingReaction.serverTimestamp, - addPendingReactionIfMessageCannotBeFound: false) - op.obvContext = obvContext - op.main() - guard !op.isCancelled else { - guard let reason = op.reasonForCancel else { return cancel(withReason: .unknownReason) } - return cancel(withReason: .updateReactionsOperationCancelled(reason: reason)) - } - - // If we reach this point, the remote request has been processed, we can delete it - - try pendingReaction.delete() - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - } - - } - - -} - - -enum ApplyPendingReactionsOperationReasonForCancel: LocalizedErrorWithLogType { - - case unknownReason - case contextIsNil - case couldNotFindPersistedObvContactIdentityInDatabase - case couldNotDetermineOwnedIdentity - case couldNotFindPersistedContactGroupInDatabase - case coreDataError(error: Error) - case couldNotFindPersistedMessageReceived - case updateReactionsOperationCancelled(reason: UpdateReactionsOperationReasonForCancel) - case couldNotFindDiscussion - - var logType: OSLogType { - switch self { - case .couldNotFindPersistedObvContactIdentityInDatabase, - .couldNotFindPersistedContactGroupInDatabase, - .couldNotFindDiscussion: - return .error - case .unknownReason, - .contextIsNil, - .coreDataError, - .couldNotDetermineOwnedIdentity, - .couldNotFindPersistedMessageReceived: - return .fault - case .updateReactionsOperationCancelled(reason: let reason): - return reason.logType - } - } - - var errorDescription: String? { - switch self { - case .unknownReason: - return "One of the operations cancelled without speciying a reason. This is a bug." - case .contextIsNil: - return "The context is not set" - case .couldNotFindPersistedObvContactIdentityInDatabase: - return "Could not find contact identity of received message in database" - case .couldNotFindPersistedContactGroupInDatabase: - return "Could not find group of received message in database" - case .couldNotDetermineOwnedIdentity: - return "Could not determine owned identity" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .couldNotFindPersistedMessageReceived: - return "Could not find message received although it is expected to be created within this context at this point" - case .updateReactionsOperationCancelled(reason: let reason): - return reason.errorDescription - case .couldNotFindDiscussion: - return "Could not find discussion" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CleanOrphanedPersistedMessageTimestampedMetadataOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CleanOrphanedPersistedMessageTimestampedMetadataOperation.swift index 2a3236b6..b87cd7f3 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CleanOrphanedPersistedMessageTimestampedMetadataOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CleanOrphanedPersistedMessageTimestampedMetadataOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,28 +22,21 @@ import OlvidUtils import os import Darwin import ObvUICoreData +import CoreData final class CleanOrphanedPersistedMessageTimestampedMetadataOperation: ContextualOperationWithSpecificReasonForCancel { private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "CleanOrphanedPersistedMessageTimestampedMetadataOperation") - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { os_log("Executing an CleanOrphanedPersistedMessageTimestampedMetadataOperation", log: log, type: .debug) - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - try PersistedMessageTimestampedMetadata.deleteOrphanedPersistedMessageTimestampedMetadata(within: obvContext) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - + + do { + try PersistedMessageTimestampedMetadata.deleteOrphanedPersistedMessageTimestampedMetadata(within: obvContext) + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CreatePersistedMessageReceivedFromReceivedObvMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CreatePersistedMessageReceivedFromReceivedObvMessageOperation.swift new file mode 100644 index 00000000..f1bf1821 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CreatePersistedMessageReceivedFromReceivedObvMessageOperation.swift @@ -0,0 +1,177 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvEngine +import ObvCrypto +import OlvidUtils +import ObvUICoreData +import ObvTypes + + +final class CreatePersistedMessageReceivedFromReceivedObvMessageOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingDiscussionPermanentID { + + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "CreatePersistedMessageReceivedFromReceivedObvMessageOperation") + + private let obvMessage: ObvMessage + private let messageJSON: MessageJSON + private let returnReceiptJSON: ReturnReceiptJSON? + private let overridePreviousPersistedMessage: Bool + private let obvEngine: ObvEngine + + init(obvMessage: ObvMessage, messageJSON: MessageJSON, overridePreviousPersistedMessage: Bool, returnReceiptJSON: ReturnReceiptJSON?, obvEngine: ObvEngine) { + self.obvMessage = obvMessage + self.messageJSON = messageJSON + self.returnReceiptJSON = returnReceiptJSON + self.overridePreviousPersistedMessage = overridePreviousPersistedMessage + self.obvEngine = obvEngine + super.init() + } + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case messageCreated(discussionPermanentID: DiscussionPermanentID) + } + + private(set) var result: Result? + + + var discussionPermanentID: ObvUICoreData.DiscussionPermanentID? { + switch result { + case .couldNotFindGroupV2InDatabase, nil: + return nil + case .messageCreated(discussionPermanentID: let discussionPermanentID): + return discussionPermanentID + } + } + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + os_log("Executing a CreatePersistedMessageReceivedFromReceivedObvMessageOperation for obvMessage %{public}@", log: log, type: .debug, obvMessage.messageIdentifierFromEngine.debugDescription) + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: obvMessage.fromContactIdentity.ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + // Create or update the PersistedMessageReceived from that contact + + let attachmentsFullyReceivedOrCancelledByServer: [ObvAttachment] + + do { + + let (discussionPermanentID, _attachmentsFullyReceivedOrCancelledByServer) = try ownedIdentity.createOrOverridePersistedMessageReceived( + obvMessage: obvMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + overridePreviousPersistedMessage: overridePreviousPersistedMessage) + self.result = .messageCreated(discussionPermanentID: discussionPermanentID) + attachmentsFullyReceivedOrCancelledByServer = _attachmentsFullyReceivedOrCancelledByServer + + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + default: + return cancel(withReason: .persistedObvContactIdentityObvError(error: error)) + } + } else if let error = error as? PersistedMessageReceived.ObvError { + return cancel(withReason: .persistedMessageReceivedObvError(error: error)) + } else { + assertionFailure("We should probably add the missing if/let case") + return cancel(withReason: .coreDataError(error: error)) + } + } + + // We ask the engine to delete all the attachments that were fully received + + if !attachmentsFullyReceivedOrCancelledByServer.isEmpty { + let obvEngine = self.obvEngine + let log = self.log + do { + try obvContext.addContextDidSaveCompletionHandler { error in + for obvAttachment in attachmentsFullyReceivedOrCancelledByServer { + do { + try obvEngine.deleteObvAttachment(attachmentNumber: obvAttachment.number, ofMessageWithIdentifier: obvAttachment.messageIdentifier, ownedCryptoId: obvAttachment.fromContactIdentity.ownedCryptoId) + } catch { + os_log("Call to the engine method deleteObvAttachment did fail", log: log, type: .fault) + assertionFailure() // Continue anyway + } + } + } + } catch { + assertionFailure(error.localizedDescription) + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case contextIsNil + case couldNotFindPersistedObvContactIdentityInDatabase + case coreDataError(error: Error) + case persistedObvContactIdentityObvError(error: ObvUICoreDataError) + case persistedMessageReceivedObvError(error: PersistedMessageReceived.ObvError) + case couldNotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .couldNotFindPersistedObvContactIdentityInDatabase: + return .error + case .contextIsNil, + .coreDataError, + .persistedMessageReceivedObvError, + .couldNotFindOwnedIdentity, + .persistedObvContactIdentityObvError: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "The context is not set" + case .couldNotFindPersistedObvContactIdentityInDatabase: + return "Could not find contact identity of received message in database" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .persistedObvContactIdentityObvError(error: let error): + return "PersistedObvContactIdentity error: \(error.localizedDescription)" + case .persistedMessageReceivedObvError(error: let error): + return "PersistedMessageReceived error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CreatePersistedMessageSentFromReceivedObvOwnedMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CreatePersistedMessageSentFromReceivedObvOwnedMessageOperation.swift new file mode 100644 index 00000000..f622f5cb --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/CreatePersistedMessageSentFromReceivedObvOwnedMessageOperation.swift @@ -0,0 +1,164 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvEngine +import ObvCrypto +import OlvidUtils +import ObvUICoreData +import ObvTypes + + + +final class CreatePersistedMessageSentFromReceivedObvOwnedMessageOperation: ContextualOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "CreatePersistedMessageSentFromReceivedObvOwnedMessageOperation") + + private let obvOwnedMessage: ObvOwnedMessage + private let messageJSON: MessageJSON + private let returnReceiptJSON: ReturnReceiptJSON? + private let obvEngine: ObvEngine + + init(obvOwnedMessage: ObvOwnedMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?, obvEngine: ObvEngine) { + self.obvOwnedMessage = obvOwnedMessage + self.messageJSON = messageJSON + self.returnReceiptJSON = returnReceiptJSON + self.obvEngine = obvEngine + super.init() + } + + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case sentMessageCreated + } + + private(set) var result: Result? + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + os_log("Executing a CreatePersistedMessageSentFromReceivedObvOwnedMessageOperation for obvOwnedMessage %{public}@", log: Self.log, type: .debug, obvOwnedMessage.messageIdentifierFromEngine.debugDescription) + + do { + + // Grab the persisted owned identity who sent the message on another owned device + + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: obvOwnedMessage.ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentityInDatabase) + } + + // Create the PersistedMessageSent from that owned identity + + let attachmentFullyReceivedOrCancelledByServer: [ObvOwnedAttachment] + + do { + attachmentFullyReceivedOrCancelledByServer = try persistedObvOwnedIdentity.createPersistedMessageSentFromOtherOwnedDevice( + obvOwnedMessage: obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON) + result = .sentMessageCreated + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + default: + assertionFailure() + return cancel(withReason: .persistedObvOwnedIdentityObvError(error: error)) + } + } else if let error = error as? PersistedMessageSent.ObvError { + assertionFailure() + return cancel(withReason: .persistedMessageSentObvError(error: error)) + } else { + assertionFailure("We should probably add the missing if/let case") + return cancel(withReason: .coreDataError(error: error)) + } + } + + // We ask the engine to delete all the attachments that were fully received + + if !attachmentFullyReceivedOrCancelledByServer.isEmpty { + let obvEngine = self.obvEngine + do { + try obvContext.addContextDidSaveCompletionHandler { error in + for obvOwnedAttachment in attachmentFullyReceivedOrCancelledByServer { + do { + try obvEngine.deleteObvAttachment( + attachmentNumber: obvOwnedAttachment.number, + ofMessageWithIdentifier: obvOwnedAttachment.messageIdentifier, + ownedCryptoId: obvOwnedAttachment.ownedCryptoId) + } catch { + os_log("Call to the engine method deleteObvAttachment did fail", log: Self.log, type: .fault) + assertionFailure() // Continue anyway + } + } + } + } catch { + assertionFailure(error.localizedDescription) + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case contextIsNil + case coreDataError(error: Error) + case couldNotFindOwnedIdentityInDatabase + case persistedObvOwnedIdentityObvError(error: ObvUICoreDataError) + case persistedMessageSentObvError(error: PersistedMessageSent.ObvError) + + var logType: OSLogType { + switch self { + case .couldNotFindOwnedIdentityInDatabase: + return .error + case .contextIsNil, + .coreDataError, + .persistedMessageSentObvError, + .persistedObvOwnedIdentityObvError: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "The context is not set" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentityInDatabase: + return "Could not find owned identity in database" + case .persistedObvOwnedIdentityObvError(error: let error): + return "PersistedObvOwnedIdentity error: \(error.localizedDescription)" + case .persistedMessageSentObvError(error: let error): + return "PersistedMessageSent error: \(error.localizedDescription)" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/DeleteOldOrOrphanedPendingReactionsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/DeleteOldOrOrphanedPendingReactionsOperation.swift deleted file mode 100644 index d1783892..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/DeleteOldOrOrphanedPendingReactionsOperation.swift +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import OlvidUtils -import ObvUICoreData - - -final class DeleteOldOrOrphanedPendingReactionsOperation: ContextualOperationWithSpecificReasonForCancel { - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - let deletionTimeInterval: TimeInterval = TimeInterval(days: 30) - let deletionDate: Date = Date(timeIntervalSinceNow: -deletionTimeInterval) - - do { - try PendingMessageReaction.deleteRequestsOlderThanDate(deletionDate, within: obvContext.context) - try PendingMessageReaction.deleteOrphaned(within: obvContext.context) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - } - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/DeleteOldOrOrphanedRemoteDeleteAndEditRequestsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/DeleteOldOrOrphanedRemoteDeleteAndEditRequestsOperation.swift deleted file mode 100644 index e8c1cc27..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/DeleteOldOrOrphanedRemoteDeleteAndEditRequestsOperation.swift +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import OlvidUtils -import ObvUICoreData - - -final class DeleteOldOrOrphanedRemoteDeleteAndEditRequestsOperation: ContextualOperationWithSpecificReasonForCancel { - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - let deletionTimeInterval: TimeInterval = TimeInterval(30 * 24 * 60 * 60) // 30 days - let deletionDate: Date = Date(timeIntervalSinceNow: -deletionTimeInterval) - - do { - try RemoteDeleteAndEditRequest.deleteRequestsOlderThanDate(deletionDate, within: obvContext.context) - try RemoteDeleteAndEditRequest.deleteOrphaned(within: obvContext.context) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - } - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ExtractReceivedExtendedPayloadOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ExtractReceivedExtendedPayloadOperation.swift index cedf23d7..e367865a 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ExtractReceivedExtendedPayloadOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ExtractReceivedExtendedPayloadOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,18 +22,25 @@ import Foundation import OlvidUtils import os.log import ObvEngine +import ObvTypes import ObvEncoder import CoreGraphics import ObvUICoreData +import CoreData -// Not using context, but contextual to be composed with other contextual operations -final class ExtractReceivedExtendedPayloadOperation: ContextualOperationWithSpecificReasonForCancel { +/// This operation does not need a context and thus, is not a contextual operation. Since it is used in the notification extension at a location where we have no context available, we definitely don't want it to be a contextual operation. +final class ExtractReceivedExtendedPayloadOperation: OperationWithSpecificReasonForCancel { - let obvMessage: ObvMessage + enum Input { + case messageSentByContact(obvMessage: ObvMessage) + case messageSentByOtherDeviceOfOwnedIdentity(obvOwnedMessage: ObvOwnedMessage) + } + + let input: Input - init(obvMessage: ObvMessage) { - self.obvMessage = obvMessage + init(input: Input) { + self.input = input super.init() } @@ -41,7 +48,15 @@ final class ExtractReceivedExtendedPayloadOperation: ContextualOperationWithSpec override func main() { - guard let extendedMessagePayload = obvMessage.extendedMessagePayload else { + let extendedMessagePayload: Data? + switch input { + case .messageSentByContact(obvMessage: let obvMessage): + extendedMessagePayload = obvMessage.extendedMessagePayload + case .messageSentByOtherDeviceOfOwnedIdentity(obvOwnedMessage: let obvOwnedMessage): + extendedMessagePayload = obvOwnedMessage.extendedMessagePayload + } + + guard let extendedMessagePayload else { return cancel(withReason: .extendedMessagePayloadIsNil) } @@ -76,6 +91,7 @@ final class ExtractReceivedExtendedPayloadOperation: ContextualOperationWithSpec case .failure(let reason): return cancel(withReason: reason) } + } private func processExtendedPayloadVersion0(listOfEncodedElements: [ObvEncoded]) -> Result<[NotificationAttachmentImage], ExtractReceivedExtendedPayloadOperationReasonForCancel> { @@ -97,8 +113,16 @@ final class ExtractReceivedExtendedPayloadOperation: ContextualOperationWithSpec guard attachmentNumbers.count == listOfEncodedAttachmentNumbers.count else { return .failure(.decodingError) } + + let expectedAttachmentsCount: Int + switch input { + case .messageSentByContact(obvMessage: let obvMessage): + expectedAttachmentsCount = obvMessage.expectedAttachmentsCount + case .messageSentByOtherDeviceOfOwnedIdentity(obvOwnedMessage: let obvOwnedMessage): + expectedAttachmentsCount = obvOwnedMessage.expectedAttachmentsCount + } - guard let max = attachmentNumbers.max(), let min = attachmentNumbers.min(), max < obvMessage.expectedAttachmentsCount, min >= 0 else { + guard let max = attachmentNumbers.max(), let min = attachmentNumbers.min(), max < expectedAttachmentsCount, min >= 0 else { return .failure(.unexpectedAttachmentNumber) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkAsReadReceivedMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkAsReadReceivedMessageOperation.swift index 8f9ecc90..97e128f7 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkAsReadReceivedMessageOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkAsReadReceivedMessageOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,8 +23,10 @@ import os.log import CoreData import OlvidUtils import ObvUICoreData +import ObvTypes -final class MarkAsReadReceivedMessageOperation: ContextualOperationWithSpecificReasonForCancel { + +final class MarkAsReadReceivedMessageOperation: ContextualOperationWithSpecificReasonForCancel, OperationProvidingDiscussionReadJSON { private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: MarkAsReadReceivedMessageOperation.self)) @@ -39,65 +41,81 @@ final class MarkAsReadReceivedMessageOperation: ContextualOperationWithSpecificR super.init() } - override func main() { + private(set) var ownedCryptoId: ObvCryptoId? + private(set) var discussionReadJSONToSend: DiscussionReadJSON? - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let contactIdentity = try PersistedObvContactIdentity.getManagedObject(withPermanentID: contactPermanentID, within: obvContext.context) else { + assertionFailure() + return cancel(withReason: .couldNotFindContactIdentityInDatabase) + } - obvContext.performAndWait { - do { - guard let contactIdentity = try PersistedObvContactIdentity.getManagedObject(withPermanentID: contactPermanentID, within: obvContext.context) else { - assertionFailure() - return cancel(withReason: .couldNotFindContactIdentityInDatabase) - } + guard let (discussionId, receivedMessageId): (DiscussionIdentifier, ReceivedMessageIdentifier) = try contactIdentity.getReceivedMessageIdentifiers(messageIdentifierFromEngine: messageIdentifierFromEngine) else { + assertionFailure() + return cancel(withReason: .couldNotFindReceivedMessageInDatabase) + } - // Find message to mark as read - guard let message = try PersistedMessageReceived.get(messageIdentifierFromEngine: messageIdentifierFromEngine, from: contactIdentity) else { - assertionFailure() - return cancel(withReason: .couldNotFindReceivedMessageInDatabase) + guard let ownedIdentity = contactIdentity.ownedIdentity else { + assertionFailure() + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + self.ownedCryptoId = ownedIdentity.cryptoId + + let dateWhenMessageTurnedNotNew = Date() + let lastReadMessageServerTimestamp = try ownedIdentity.markReceivedMessageAsNotNew(discussionId: discussionId, receivedMessageId: receivedMessageId, dateWhenMessageTurnedNotNew: dateWhenMessageTurnedNotNew) + + do { + if let lastReadMessageServerTimestamp { + discussionReadJSONToSend = try ownedIdentity.getDiscussionReadJSON(discussionId: discussionId, lastReadMessageServerTimestamp: lastReadMessageServerTimestamp) } + } catch { + assertionFailure(error.localizedDescription) // Continue anyway + } - try message.markAsNotNew(now: Date()) - - persistedMessageReceivedObjectID = message.typedObjectID - - } catch(let error) { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + + do { + persistedMessageReceivedObjectID = try ownedIdentity.getReceivedMessageTypedObjectID(discussionId: discussionId, receivedMessageId: receivedMessageId) + } catch { + assertionFailure(error.localizedDescription) // Continue anyway } + + } catch(let error) { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - + } -} - -enum MarkAsReadReceivedMessageOperationReasonForCancel: LocalizedErrorWithLogType { - - case contextIsNil - case coreDataError(error: Error) - case couldNotFindContactIdentityInDatabase - case couldNotFindReceivedMessageInDatabase - - var logType: OSLogType { - switch self { - case .contextIsNil: - return .fault - case .coreDataError: - return .fault - case .couldNotFindReceivedMessageInDatabase: - return .error - case .couldNotFindContactIdentityInDatabase: - return .error + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotFindContactIdentityInDatabase + case couldNotFindReceivedMessageInDatabase + case couldNotFindOwnedIdentity + + var logType: OSLogType { + switch self { + case .couldNotFindOwnedIdentity, .coreDataError: + return .fault + case .couldNotFindReceivedMessageInDatabase, .couldNotFindContactIdentityInDatabase: + return .error + } } - } - var errorDescription: String? { - switch self { - case .contextIsNil: return "Context is nil" - case .couldNotFindContactIdentityInDatabase: return "Could not obtain persisted contact identity in database" - case .coreDataError(error: let error): return "Core Data error: \(error.localizedDescription)" - case .couldNotFindReceivedMessageInDatabase: return "Could not find received message in database" + var errorDescription: String? { + switch self { + case .couldNotFindContactIdentityInDatabase: return "Could not obtain persisted contact identity in database" + case .coreDataError(error: let error): return "Core Data error: \(error.localizedDescription)" + case .couldNotFindReceivedMessageInDatabase: return "Could not find received message in database" + case .couldNotFindOwnedIdentity: return "Could not find owned identity" + } } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkReceivedJoinAsResumedOrPausedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkReceivedJoinAsResumedOrPausedOperation.swift index a7c47f75..38ef44bf 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkReceivedJoinAsResumedOrPausedOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkReceivedJoinAsResumedOrPausedOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -48,40 +48,34 @@ final class MarkReceivedJoinAsResumedOrPausedOperation: ContextualOperationWithS super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - guard let message = try PersistedMessageReceived.get(messageIdentifierFromEngine: messageIdentifierFromEngine, - ownedCryptoId: ownedCryptoId, - within: obvContext.context) - else { - assertionFailure() - return - } - - guard let join = message.fyleMessageJoinWithStatuses.first(where: { $0.index == attachmentNumber }) else { - assertionFailure() - return - } - - switch resumeOrPause { - case .resume: - join.tryToSetStatusTo(.downloading) - case .pause: - join.tryToSetStatusTo(.downloadable) - } - - } catch(let error) { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let message = try PersistedMessageReceived.get(messageIdentifierFromEngine: messageIdentifierFromEngine, + ownedCryptoId: ownedCryptoId, + within: obvContext.context) + else { assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + return } + + guard let join = message.fyleMessageJoinWithStatuses.first(where: { $0.index == attachmentNumber }) else { + assertionFailure() + return + } + + switch resumeOrPause { + case .resume: + join.tryToSetStatusToDownloading() + case .pause: + join.tryToSetStatusToDownloadable() + } + + } catch(let error) { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkReceivedSentJoinAsResumedOrPausedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkReceivedSentJoinAsResumedOrPausedOperation.swift new file mode 100644 index 00000000..36262cdf --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/MarkReceivedSentJoinAsResumedOrPausedOperation.swift @@ -0,0 +1,74 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import CoreData +import OlvidUtils +import ObvTypes +import ObvUICoreData + + +/// Called when the download of an attachment (sent from another device) was resumed or paused. See also ``MarkReceivedJoinAsResumedOrPausedOperation``. +final class MarkReceivedSentJoinAsResumedOrPausedOperation: ContextualOperationWithSpecificReasonForCancel { + + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: MarkReceivedSentJoinAsResumedOrPausedOperation.self)) + + private let ownedCryptoId: ObvCryptoId + private let messageIdentifierFromEngine: Data + private let attachmentNumber: Int + private let resumeOrPause: ResumeOrPause + + enum ResumeOrPause { + case resume + case pause + } + + init(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int, resumeOrPause: ResumeOrPause) { + self.ownedCryptoId = ownedCryptoId + self.messageIdentifierFromEngine = messageIdentifierFromEngine + self.attachmentNumber = attachmentNumber + self.resumeOrPause = resumeOrPause + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + assertionFailure() + return + } + + switch resumeOrPause { + case .resume: + try ownedIdentity.markAttachmentFromOwnedDeviceAsResumed(messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber) + case .pause: + try ownedIdentity.markAttachmentFromOwnedDeviceAsPaused(messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber) + } + + } catch(let error) { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + + } +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ProcessNewReceivedJoinProgressesReceivedFromEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ProcessNewReceivedJoinProgressesReceivedFromEngineOperation.swift index 26554b76..488e106c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ProcessNewReceivedJoinProgressesReceivedFromEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ProcessNewReceivedJoinProgressesReceivedFromEngineOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ReceivingMessageAndAttachmentsOperations.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ReceivingMessageAndAttachmentsOperations.swift deleted file mode 100644 index 60f946a0..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ReceivingMessageAndAttachmentsOperations.swift +++ /dev/null @@ -1,613 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import ObvEngine -import ObvCrypto -import OlvidUtils -import ObvUICoreData - - -final class CreatePersistedMessageReceivedFromReceivedObvMessageOperation: ContextualOperationWithSpecificReasonForCancel { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "CreatePersistedMessageReceivedFromReceivedObvMessageOperation") - - private let obvMessage: ObvMessage - private let messageJSON: MessageJSON - private let returnReceiptJSON: ReturnReceiptJSON? - private let overridePreviousPersistedMessage: Bool - private let obvEngine: ObvEngine - - init(obvMessage: ObvMessage, messageJSON: MessageJSON, overridePreviousPersistedMessage: Bool, returnReceiptJSON: ReturnReceiptJSON?, obvEngine: ObvEngine) { - self.obvMessage = obvMessage - self.messageJSON = messageJSON - self.returnReceiptJSON = returnReceiptJSON - self.overridePreviousPersistedMessage = overridePreviousPersistedMessage - self.obvEngine = obvEngine - super.init() - } - - - override func main() { - - os_log("Executing a CreatePersistedMessageReceivedFromReceivedObvMessageOperation for obvMessage %{public}@", log: log, type: .debug, obvMessage.messageIdentifierFromEngine.debugDescription) - ObvDisplayableLogs.shared.log("🧨 Starting CreatePersistedMessageReceivedFromReceivedObvMessageOperation") - defer { ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation") } - - guard let obvContext = self.obvContext else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (1)") - return cancel(withReason: .contextIsNil) - } - - let currentUserActivityDiscussionPermanentID = ObvUserActivitySingleton.shared.currentDiscussionPermanentID - - obvContext.performAndWait { - - do { - - // Grab the persisted contact and the appropriate discussion - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvMessage.fromContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (2)") - return cancel(withReason: .couldNotFindPersistedObvContactIdentityInDatabase) - } - - guard let ownedIdentity = persistedContactIdentity.ownedIdentity else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (3)") - return cancel(withReason: .couldNotDetermineOwnedIdentity) - } - - let discussion: PersistedDiscussion - - switch messageJSON.groupIdentifier { - - case .none: - - guard persistedContactIdentity.isOneToOne else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (4)") - return cancel(withReason: .cannotInsertMessageInOneToOneDiscussionFromNonOneToOneContact) - } - guard let oneToOneDiscussion = persistedContactIdentity.oneToOneDiscussion else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (5)") - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = oneToOneDiscussion - - case .groupV1(groupV1Identifier: let groupV1Identifier): - - guard let contactGroup = try PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedIdentity: ownedIdentity) else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (6)") - return cancel(withReason: .couldNotFindPersistedContactGroupInDatabase) - } - discussion = contactGroup.discussion - - case .groupV2(groupV2Identifier: let groupV2Identifier): - - guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupV2Identifier) else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (7)") - return cancel(withReason: .couldNotFindPersistedContactGroupInDatabase) - } - guard let groupDiscussion = group.discussion else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (8)") - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = groupDiscussion - - } - - // Try to insert a EndToEndEncryptedSystemMessage if the discussion is empty - - try? PersistedDiscussion.insertSystemMessagesIfDiscussionIsEmpty(discussionObjectID: discussion.objectID, markAsRead: true, within: obvContext.context) - - /* Determine an appropriate `messageUploadTimestampFromServer`, needed to create the `PersistedMessageReceived` instance. For oneToOne and GroupV1 discussions, this is simply the date indicated in the ObvMessage. For GroupV2 discussions, we look for the original server timestamp that may exist in the messageJSON. If it exists, we use it (this is usefull to properly sort many "old" messages that were sent in a Group v2 discussion before we our acceptance to become a group member). - */ - - let messageUploadTimestampFromServer: Date - switch try discussion.kind { - case .oneToOne, .groupV1: - messageUploadTimestampFromServer = obvMessage.messageUploadTimestampFromServer - case .groupV2: - if let originalServerTimestamp = messageJSON.originalServerTimestamp { - messageUploadTimestampFromServer = min(originalServerTimestamp, obvMessage.messageUploadTimestampFromServer) - } else { - messageUploadTimestampFromServer = obvMessage.messageUploadTimestampFromServer - } - } - - // If overridePreviousPersistedMessage is true, we update any previously stored message from DB. If no such message exists, we create it. - // If overridePreviousPersistedMessage is false, we make sure that no existing PersistedMessageReceived exists in DB. If this is the case, we create the message. - // Note that processing attachments requires overridePreviousPersistedMessage to be true - - if overridePreviousPersistedMessage { - - if let previousMessage = try PersistedMessageReceived.get(messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, from: persistedContactIdentity) { - - guard !previousMessage.isWiped else { - os_log("Trying to update a wiped received message. We don't do that an return immediately.", log: log, type: .info) - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (9)") - return - } - - os_log("Updating a previous received message...", log: log, type: .info) - - do { - try previousMessage.update(withMessageJSON: messageJSON, - messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, - returnReceiptJSON: returnReceiptJSON, - messageUploadTimestampFromServer: messageUploadTimestampFromServer, - downloadTimestampFromServer: obvMessage.downloadTimestampFromServer, - localDownloadTimestamp: obvMessage.localDownloadTimestamp, - discussion: discussion) - } catch { - os_log("Could not update existing received message: %{public}@", log: log, type: .error, error.localizedDescription) - // Continue anyway - } - - } else { - - // Create the PersistedMessageReceived - - os_log("Creating a persisted message (overridePreviousPersistedMessage: %{public}@)", log: log, type: .debug, overridePreviousPersistedMessage.description) - let missedMessageCount = updateNextMessageMissedMessageCountAndGetCurrentMissedMessageCount( - discussion: discussion, - contactIdentity: persistedContactIdentity, - senderThreadIdentifier: messageJSON.senderThreadIdentifier, - senderSequenceNumber: messageJSON.senderSequenceNumber) - - guard (try? PersistedMessageReceived(messageUploadTimestampFromServer: messageUploadTimestampFromServer, - downloadTimestampFromServer: obvMessage.downloadTimestampFromServer, - localDownloadTimestamp: obvMessage.localDownloadTimestamp, - messageJSON: messageJSON, - contactIdentity: persistedContactIdentity, - messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, - returnReceiptJSON: returnReceiptJSON, - missedMessageCount: missedMessageCount, - discussion: discussion, - obvMessageContainsAttachments: !obvMessage.attachments.isEmpty)) != nil - else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (10)") - return cancel(withReason: .couldNotCreatePersistedMessageReceived) - } - - } - - // Process the attachments within the message - - for obvAttachment in obvMessage.attachments { - do { - try ReceivingMessageAndAttachmentsOperationHelper.processFyleWithinDownloadingAttachment(obvAttachment, - newProgress: nil, - obvEngine: obvEngine, - log: log, - within: obvContext) - } catch { - os_log("Could not process one of the message's attachments: %{public}@", log: log, type: .fault, error.localizedDescription) - // We continue anyway - } - } - - } else { - - // Make sure the message does not already exists in DB - - guard try PersistedMessageReceived.get(messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, from: persistedContactIdentity) == nil else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (11)") - return - } - - // We make sure that message has a body (for now, this message comes from the notification extension, and there is no point in creating a `PersistedMessageReceived` if there is no body. - - guard messageJSON.body?.isEmpty == false else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (12)") - return - } - - // Create the PersistedMessageReceived - - os_log("Creating a persisted message (overridePreviousPersistedMessage: %{public}@)", log: log, type: .debug, overridePreviousPersistedMessage.description) - let missedMessageCount = updateNextMessageMissedMessageCountAndGetCurrentMissedMessageCount( - discussion: discussion, - contactIdentity: persistedContactIdentity, - senderThreadIdentifier: messageJSON.senderThreadIdentifier, - senderSequenceNumber: messageJSON.senderSequenceNumber) - - guard (try? PersistedMessageReceived(messageUploadTimestampFromServer: messageUploadTimestampFromServer, - downloadTimestampFromServer: obvMessage.downloadTimestampFromServer, - localDownloadTimestamp: obvMessage.localDownloadTimestamp, - messageJSON: messageJSON, - contactIdentity: persistedContactIdentity, - messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, - returnReceiptJSON: returnReceiptJSON, - missedMessageCount: missedMessageCount, - discussion: discussion, - obvMessageContainsAttachments: !obvMessage.attachments.isEmpty)) != nil - else { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (13)") - return cancel(withReason: .couldNotCreatePersistedMessageReceived) - } - - } - - /* The following block of code objective allows to auto-read ephemeral received messges if appropriate. - * We first check whether the current user activity is to be within a discussion. If not, - * we never auto-read. - * If she is within a discussion, we consider all inserted received messages that are ephemeral and - * that require user action to be read. For each of these messages, we check that its discussion - * is identical to the one corresponding to the user activity, and that this discussion configuration - * has its auto-read setting set to `true`. - * Finally, if the message ephemerality is more restrictive than that of the discussion, we do not auto-read. - * In that case, and in that case only, we immediately allow reading of the message. - */ - - if let currentUserActivityDiscussionPermanentID { - - let insertedReceivedEphemeralMessagesWithUserAction: [PersistedMessageReceived] = obvContext.context.insertedObjects.compactMap({ - guard let receivedMessage = $0 as? PersistedMessageReceived, - receivedMessage.isEphemeralMessageWithUserAction - else { - return nil - } - return receivedMessage - }) - - insertedReceivedEphemeralMessagesWithUserAction.forEach { insertedReceivedEphemeralMessageWithUserAction in - guard insertedReceivedEphemeralMessageWithUserAction.discussion.discussionPermanentID == currentUserActivityDiscussionPermanentID, - insertedReceivedEphemeralMessageWithUserAction.discussion.autoRead == true - else { - return - } - // Check that the message ephemerality is at least that of the discussion, otherwise, do not auto read - guard insertedReceivedEphemeralMessageWithUserAction.ephemeralityIsAtLeastAsPermissiveThanDiscussionSharedConfiguration else { - return - } - // If we reach this point, we are receiving a message that is readOnce, within a discussion with an auto-read setting that is the one currently shown to the user. In that case, we auto-read the message. - do { - try insertedReceivedEphemeralMessageWithUserAction.allowReading(now: Date()) - } catch { - os_log("We received a read-once message within a discussion with auto-read that is shown on screen. We should auto-read the message, but this failed: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - // We continue anyway - } - } - } - - } catch { - ObvDisplayableLogs.shared.log("🧨 Ending CreatePersistedMessageReceivedFromReceivedObvMessageOperation (13)") - return cancel(withReason: .coreDataError(error: error)) - } - - } - - } - - private func updateNextMessageMissedMessageCountAndGetCurrentMissedMessageCount(discussion: PersistedDiscussion, contactIdentity: PersistedObvContactIdentity, senderThreadIdentifier: UUID, senderSequenceNumber: Int) -> Int { - - let latestDiscussionSenderSequenceNumber: PersistedLatestDiscussionSenderSequenceNumber? - do { - latestDiscussionSenderSequenceNumber = try PersistedLatestDiscussionSenderSequenceNumber.get(discussion: discussion, contactIdentity: contactIdentity, senderThreadIdentifier: senderThreadIdentifier) - } catch { - os_log("Could not get PersistedLatestDiscussionSenderSequenceNumber: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return 0 - } - - if let latestDiscussionSenderSequenceNumber = latestDiscussionSenderSequenceNumber { - if senderSequenceNumber < latestDiscussionSenderSequenceNumber.latestSequenceNumber { - guard let nextMessage = PersistedMessageReceived.getNextMessageBySenderSequenceNumber(senderSequenceNumber, senderThreadIdentifier: senderThreadIdentifier, contactIdentity: contactIdentity, within: discussion) else { - return 0 - } - if nextMessage.missedMessageCount < nextMessage.senderSequenceNumber - senderSequenceNumber { - // The message is older than the number of messages missed in the following message --> nothing to do - return 0 - } - let remainingMissedCount = nextMessage.missedMessageCount - (nextMessage.senderSequenceNumber - senderSequenceNumber) - - nextMessage.updateMissedMessageCount(with: nextMessage.senderSequenceNumber - senderSequenceNumber - 1) - - return remainingMissedCount - } else if senderSequenceNumber > latestDiscussionSenderSequenceNumber.latestSequenceNumber { - let missingCount = senderSequenceNumber - latestDiscussionSenderSequenceNumber.latestSequenceNumber - 1 - latestDiscussionSenderSequenceNumber.updateLatestSequenceNumber(with: senderSequenceNumber) - return missingCount - } else { - // Unexpected: senderSequenceNumber == latestSequenceNumber (this should normally not happen...) - return 0 - } - } else { - _ = PersistedLatestDiscussionSenderSequenceNumber(discussion: discussion, - contactIdentity: contactIdentity, - senderThreadIdentifier: senderThreadIdentifier, - latestSequenceNumber: senderSequenceNumber) - return 0 - } - } - - -} - - -enum CreatePersistedMessageReceivedFromReceivedObvMessageOperationReasonForCancel: LocalizedErrorWithLogType { - - case contextIsNil - case couldNotFindPersistedObvContactIdentityInDatabase - case couldNotDetermineOwnedIdentity - case couldNotFindPersistedContactGroupInDatabase - case couldNotCreatePersistedMessageReceived - case coreDataError(error: Error) - case couldNotFindDiscussion - case cannotInsertMessageInOneToOneDiscussionFromNonOneToOneContact - - var logType: OSLogType { - switch self { - case .couldNotFindPersistedObvContactIdentityInDatabase, - .couldNotFindPersistedContactGroupInDatabase, - .couldNotFindDiscussion, - .cannotInsertMessageInOneToOneDiscussionFromNonOneToOneContact: - return .error - case .contextIsNil, - .coreDataError, - .couldNotDetermineOwnedIdentity, - .couldNotCreatePersistedMessageReceived: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .contextIsNil: - return "The context is not set" - case .couldNotFindPersistedObvContactIdentityInDatabase: - return "Could not find contact identity of received message in database" - case .couldNotFindPersistedContactGroupInDatabase: - return "Could not find group of received message in database" - case .couldNotDetermineOwnedIdentity: - return "Could not determine owned identity" - case .couldNotCreatePersistedMessageReceived: - return "Could not create a PersistedMessageReceived instance" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .couldNotFindDiscussion: - return "Could not find discussion" - case .cannotInsertMessageInOneToOneDiscussionFromNonOneToOneContact: - return "The message comes from a non-oneToOne contact. We could not find the appropriate group discussion, and we cannot add the message to a one2one discussion." - } - } - -} - - - -// MARK: - ProcessFyleWithinDownloadingAttachmentOperation - -final class ProcessFyleWithinDownloadingAttachmentOperation: ContextualOperationWithSpecificReasonForCancel { - - private let obvAttachment: ObvAttachment - private let newProgress: (totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64)? - private let obvEngine: ObvEngine - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ProcessFyleWithinDownloadingAttachmentOperation.self)) - - init(obvAttachment: ObvAttachment, newProgress: (totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64)?, obvEngine: ObvEngine) { - self.obvAttachment = obvAttachment - self.newProgress = newProgress - self.obvEngine = obvEngine - super.init() - } - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - /* This notification can arrive very early, even before the NewMessageReceived notification and thus, - * before the PersistedMessageReceived is even created. In that case, trying to process the fyle fails. - * So we check whether the PersistedMessageReceived exists before going any further - */ - - guard (try? PersistedMessageReceived.get(messageIdentifierFromEngine: obvAttachment.messageIdentifier, from: obvAttachment.fromContactIdentity, within: obvContext.context)) != nil else { return } - - // If we reach this point, we can safely process the fyle - - do { - try ReceivingMessageAndAttachmentsOperationHelper.processFyleWithinDownloadingAttachment(obvAttachment, newProgress: newProgress, obvEngine: obvEngine, log: log, within: obvContext) - } catch { - return cancel(withReason: .couldNotProcessFyleWithinDownloadingAttachment(error: error)) - } - - } - - } - - -} - - -enum ProcessFyleWithinDownloadingAttachmentOperationReasonForCancel: LocalizedErrorWithLogType { - - case couldNotProcessFyleWithinDownloadingAttachment(error: Error) - case coreDataError(error: Error) - case contextIsNil - - var logType: OSLogType { - switch self { - case .couldNotProcessFyleWithinDownloadingAttachment: - return .error - case .coreDataError, .contextIsNil: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .contextIsNil: - return "The context is not set" - case .couldNotProcessFyleWithinDownloadingAttachment: - return "Could not process fyle within dowloading attachment" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - } - } - -} - - - - -// MARK: - ReceivingMessageAndAttachmentsOperationHelper - -fileprivate final class ReceivingMessageAndAttachmentsOperationHelper { - - private static func makeError(message: String) -> Error { NSError(domain: "ReceivingMessageAndAttachmentsOperationHelper", code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } - - fileprivate static func processFyleWithinDownloadingAttachment(_ obvAttachment: ObvAttachment, newProgress: (totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64)?, obvEngine: ObvEngine, log: OSLog, within obvContext: ObvContext) throws { - - let metadata = try FyleMetadata.jsonDecode(obvAttachment.metadata) - - // Get or create a ReceivedFyleMessageJoinWithStatus - - let fyle: Fyle - let join: ReceivedFyleMessageJoinWithStatus - do { - if let previousJoin = try ReceivedFyleMessageJoinWithStatus.get(metadata: metadata, obvAttachment: obvAttachment, within: obvContext.context) { - join = previousJoin - if let _fyle = join.fyle { - fyle = _fyle - } else { - guard let newFyle = Fyle(sha256: metadata.sha256, within: obvContext.context) else { - throw makeError(message: "Could not get or create Fyle from/in database") - } - fyle = newFyle - } - } else { - // Since the ReceivedFyleMessageJoinWithStatus must be created, we first get or create a Fyle - do { - if let previousFyle = try Fyle.get(sha256: metadata.sha256, within: obvContext.context) { - fyle = previousFyle - } else { - guard let newFyle = Fyle(sha256: metadata.sha256, within: obvContext.context) else { - throw makeError(message: "Could not get or create Fyle from/in database") - } - fyle = newFyle - } - } catch { - os_log("Could not get or create Fyle from/in database", log: log, type: .error) - return - } - join = try ReceivedFyleMessageJoinWithStatus(metadata: metadata, obvAttachment: obvAttachment, within: obvContext.context) - } - } catch { - throw makeError(message: "Could not get or create ReceivedFyleMessageJoinWithStatus: %{public}@") - } - - // In the end, if the status is downloaded and the fyle is available, we can delete any existing downsized preview - try? obvContext.addContextWillSaveCompletionHandler { - if join.status == .complete && fyle.getFileSize() == join.totalByteCount { - join.deleteDownsizedThumbnail() - } - } - - // If the ReceivedFyleMessageJoinWithStatus is completed, we ask the engine to delete the attachment - if join.status == .complete && join.fyle?.getFileSize() == join.totalByteCount { - - do { - try obvContext.addContextDidSaveCompletionHandler { error in - do { - try obvEngine.deleteObvAttachment(attachmentNumber: obvAttachment.number, ofMessageWithIdentifier: obvAttachment.messageIdentifier, ownedCryptoId: obvAttachment.ownedCryptoId) - } catch { - os_log("Call to the engine method deleteObvAttachment did fail", log: log, type: .fault) - assertionFailure() - } - } - } catch { - throw makeError(message: "Could not add addContextDidSaveCompletionHandler: \(error.localizedDescription)") - } - - return - } - - - // Update the status of the ReceivedFyleMessageJoinWithStatus depending on the status of the ObvAttachment - - switch obvAttachment.status { - case .paused: - join.tryToSetStatusTo(.downloadable) - case .resumed: - join.tryToSetStatusTo(.downloading) - case .downloaded: - join.tryToSetStatusTo(.complete) - case .cancelledByServer: - join.tryToSetStatusTo(.cancelledByServer) - case .markedForDeletion: - break - } - - // If the ReceivedFyleMessageJoinWithStatus is marked as completed, but the Fyle is not, we have work to do - - if obvAttachment.status == .downloaded && fyle.getFileSize() == nil { - - // Compute the sha256 of the (complete) file indicated within the obvAttachment and compare it to what was expected - let realHash: Data - do { - let sha256 = ObvCryptoSuite.sharedInstance.hashFunctionSha256() - realHash = try sha256.hash(fileAtUrl: obvAttachment.url) - } catch { - throw makeError(message: "Could not compute the sha256 of the received file") - } - guard realHash == fyle.sha256 else { - os_log("OMG, the sha256 of the received file does not match the one we expected", log: log, type: .error) - obvContext.context.delete(join) // This also deletes the fyle if possible - do { - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - do { - try obvEngine.deleteObvAttachment(attachmentNumber: obvAttachment.number, - ofMessageWithIdentifier: obvAttachment.messageIdentifier, - ownedCryptoId: obvAttachment.ownedCryptoId) - } catch { - os_log("The engine call to deleteObvAttachment did fail", log: log, type: .fault) - assertionFailure() - } - } - } catch { - throw makeError(message: "The call to addContextDidSaveCompletionHandler did fail") - } - return - } - - // If we reach this point, the sha256 is correct. We move the received file to a permanent location - try fyle.moveFileToPermanentURL(from: obvAttachment.url, logTo: log) - - os_log("We moved a downloaded file to a permanent location", log: log, type: .debug) - - // The fyle is now available, so we set fyle's associated joins' status to "downloaded" - fyle.allFyleMessageJoinWithStatus.forEach({ (fyleMessageJoinWithStatus) in - if let receivedFyleMessageJoinWithStatus = fyleMessageJoinWithStatus as? ReceivedFyleMessageJoinWithStatus { - receivedFyleMessageJoinWithStatus.tryToSetStatusTo(.complete) - } - }) - - } - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ResumeOrPauseAttachmentDownloadOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ResumeOrPauseAttachmentDownloadOperation.swift index 687fe61b..466570c0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ResumeOrPauseAttachmentDownloadOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ResumeOrPauseAttachmentDownloadOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -48,42 +48,36 @@ final class ResumeOrPauseAttachmentDownloadOperation: ContextualOperationWithSpe super.init() } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - guard let attachment = try? ReceivedFyleMessageJoinWithStatus.getReceivedFyleMessageJoinWithStatus(objectID: receivedJoinObjectID.objectID, within: obvContext.context) else { return } - - switch attachment.status { - case .downloading: - guard resumeOrPause == .pause else { return } - case .downloadable: - guard resumeOrPause == .resume else { return } - case .complete, .cancelledByServer: - return - } - - guard let ownedCryptoId = attachment.message?.discussion.ownedIdentity?.cryptoId else { return } - let messageId = attachment.messageIdentifierFromEngine - - switch resumeOrPause { - case .resume: - try obvEngine.resumeDownloadOfAttachment(attachment.index, ofMessageWithIdentifier: messageId, ownedCryptoId: ownedCryptoId) - case .pause: - try obvEngine.pauseDownloadOfAttachment(attachment.index, ofMessageWithIdentifier: messageId, ownedCryptoId: ownedCryptoId) - } - - - } catch(let error) { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let attachment = try? ReceivedFyleMessageJoinWithStatus.getReceivedFyleMessageJoinWithStatus(objectID: receivedJoinObjectID.objectID, within: obvContext.context) else { return } + + switch attachment.status { + case .downloading: + guard resumeOrPause == .pause else { return } + case .downloadable: + guard resumeOrPause == .resume else { return } + case .complete, .cancelledByServer: + return } + + guard let ownedCryptoId = attachment.message?.discussion?.ownedIdentity?.cryptoId else { return } + let messageId = attachment.messageIdentifierFromEngine + + switch resumeOrPause { + case .resume: + try obvEngine.resumeDownloadOfAttachment(attachment.index, ofMessageWithIdentifier: messageId, ownedCryptoId: ownedCryptoId, forceResume: false) + case .pause: + try obvEngine.pauseDownloadOfAttachment(attachment.index, ofMessageWithIdentifier: messageId, ownedCryptoId: ownedCryptoId) + } + + + } catch(let error) { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ResumeOrPauseOwnedAttachmentDownloadOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ResumeOrPauseOwnedAttachmentDownloadOperation.swift new file mode 100644 index 00000000..8afa5734 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ResumeOrPauseOwnedAttachmentDownloadOperation.swift @@ -0,0 +1,92 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import CoreData +import OlvidUtils +import ObvEngine +import ObvUICoreData + + +/// This operation gets executed when the user decides to resume or to pause the download of an attachment sent from another owned device. +/// It does not modify the app database but, instead, requests a resume or a pause of the download to the engine. +final class ResumeOrPauseOwnedAttachmentDownloadOperation: ContextualOperationWithSpecificReasonForCancel { + + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ResumeOrPauseAttachmentDownloadOperation.self)) + + private let sentJoinObjectID: TypeSafeManagedObjectID + private let resumeOrPause: ResumeOrPause + private let obvEngine: ObvEngine + + enum ResumeOrPause { + case resume + case pause + } + + init(sentJoinObjectID: TypeSafeManagedObjectID, resumeOrPause: ResumeOrPause, obvEngine: ObvEngine) { + self.sentJoinObjectID = sentJoinObjectID + self.resumeOrPause = resumeOrPause + self.obvEngine = obvEngine + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + guard let attachment = try? SentFyleMessageJoinWithStatus.getSentFyleMessageJoinWithStatus(objectID: sentJoinObjectID.objectID, within: obvContext.context) else { return } + guard let messageId = attachment.messageIdentifierFromEngine else { + assertionFailure("The messageIdentifierFromEngine for messages sent from another owned device should always be non-nil. It is always nil for messages sent from the current device (for which no resume/pause download makes sense") + return + } + + switch attachment.status { + case .downloading: + guard resumeOrPause == .pause else { return } + case .downloadable: + guard resumeOrPause == .resume else { return } + case .complete, .cancelledByServer: + return + case .uploadable: + assertionFailure("This should never happen for an attachment sent from another owned device") + return + case .uploading: + assertionFailure("This should never happen for an attachment sent from another owned device") + return + } + + guard let ownedCryptoId = attachment.message?.discussion?.ownedIdentity?.cryptoId else { return } + + switch resumeOrPause { + case .resume: + try obvEngine.resumeDownloadOfAttachment(attachment.index, ofMessageWithIdentifier: messageId, ownedCryptoId: ownedCryptoId, forceResume: false) + case .pause: + try obvEngine.pauseDownloadOfAttachment(attachment.index, ofMessageWithIdentifier: messageId, ownedCryptoId: ownedCryptoId) + } + + + } catch(let error) { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + + } +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/SaveReceivedExtendedPayloadOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/SaveReceivedExtendedPayloadOperation.swift index 414c9f9b..56bda892 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/SaveReceivedExtendedPayloadOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/SaveReceivedExtendedPayloadOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import os.log import ObvEngine import ObvEncoder import ObvUICoreData +import CoreData final class SaveReceivedExtendedPayloadOperation: ContextualOperationWithSpecificReasonForCancel { @@ -34,61 +35,67 @@ final class SaveReceivedExtendedPayloadOperation: ContextualOperationWithSpecifi super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - guard let attachementImages = extractReceivedExtendedPayloadOp.attachementImages else { return cancel(withReason: .downsizedImagesIsNil) } - - let obvMessage = extractReceivedExtendedPayloadOp.obvMessage - - obvContext.performAndWait { - - do { - guard let message = try PersistedMessageReceived.get(messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, from: obvMessage.fromContactIdentity, within: obvContext.context) else { - return cancel(withReason: .couldNotFindReceivedMessageInDatabase) + + let input = extractReceivedExtendedPayloadOp.input + + do { + + let permanentIDOfMessageToRefreshInViewContext: TypeSafeManagedObjectID? + + switch input { + case .messageSentByContact(obvMessage: let obvMessage): + + + // Grab the persisted contact who sent the message + + guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvMessage.fromContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedObvContactIdentityInDatabase) } - - var permanentIDOfMessageToRefreshInViewContext: ObvManagedObjectPermanentID? = nil - for attachementImage in attachementImages { - let attachmentNumber = attachementImage.attachmentNumber - guard attachmentNumber < message.fyleMessageJoinWithStatuses.count else { - return cancel(withReason: .unexpectedAttachmentNumber) - } - - guard case .data(let data) = attachementImage.dataOrURL else { - continue - } - - let fyleMessageJoinWithStatus = message.fyleMessageJoinWithStatuses[attachmentNumber] - - if fyleMessageJoinWithStatus.setDownsizedThumbnailIfRequired(data: data) { - // the setDownsizedThumbnailIfRequired returned true, meaning that the downsized thumbnail has been set. We will need to refresh the message in the view context. - permanentIDOfMessageToRefreshInViewContext = message.objectPermanentID - } + // Save the extended payload sent by this contact + + let permanentIDOfSentMessageToRefreshInViewContext = try persistedContactIdentity.saveExtendedPayload(foundIn: attachementImages, for: obvMessage) + + permanentIDOfMessageToRefreshInViewContext = permanentIDOfSentMessageToRefreshInViewContext?.downcast + + case .messageSentByOtherDeviceOfOwnedIdentity(obvOwnedMessage: let obvOwnedMessage): + + // Grab the persisted owned identity who sent the message on another owned device + + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: obvOwnedMessage.ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentityInDatabase) } - if let permanentIDOfMessageToRefreshInViewContext { - try? obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - ObvStack.shared.viewContext.perform { - if let draftInViewContext = ObvStack.shared.viewContext.registeredObjects - .filter({ !$0.isDeleted }) - .first(where: { ($0 as? PersistedMessageReceived)?.objectPermanentID == permanentIDOfMessageToRefreshInViewContext }) { - ObvStack.shared.viewContext.refresh(draftInViewContext, mergeChanges: false) - } + // Save the extended payload sent from another device of the owned identity + + let permanentIDOfMessageReceivedToRefreshInViewContext = try persistedObvOwnedIdentity.saveExtendedPayload(foundIn: attachementImages, for: obvOwnedMessage) + + permanentIDOfMessageToRefreshInViewContext = permanentIDOfMessageReceivedToRefreshInViewContext?.downcast + + } + + // If we saved an extended payload, we refresh the message in the view context + + if let permanentIDOfMessageToRefreshInViewContext { + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvStack.shared.viewContext.perform { + if let draftInViewContext = ObvStack.shared.viewContext.registeredObjects + .filter({ !$0.isDeleted }) + .first(where: { ($0 as? PersistedMessage)?.typedObjectID == permanentIDOfMessageToRefreshInViewContext }) { + ObvStack.shared.viewContext.refresh(draftInViewContext, mergeChanges: false) } } } - - } catch { - return cancel(withReason: .coreDataError(error: error)) } + + } catch { + return cancel(withReason: .coreDataError(error: error)) } } @@ -100,15 +107,15 @@ enum SaveReceivedExtendedPayloadOperationReasonForCancel: LocalizedErrorWithLogT case contextIsNil case coreDataError(error: Error) case downsizedImagesIsNil - case couldNotFindReceivedMessageInDatabase - case unexpectedAttachmentNumber + case couldNotFindPersistedObvContactIdentityInDatabase + case couldNotFindOwnedIdentityInDatabase var logType: OSLogType { switch self { case .coreDataError, .contextIsNil: return .fault - case .downsizedImagesIsNil, .couldNotFindReceivedMessageInDatabase, .unexpectedAttachmentNumber: + case .downsizedImagesIsNil, .couldNotFindPersistedObvContactIdentityInDatabase, .couldNotFindOwnedIdentityInDatabase: return .error } } @@ -117,9 +124,9 @@ enum SaveReceivedExtendedPayloadOperationReasonForCancel: LocalizedErrorWithLogT switch self { case .contextIsNil: return "Context is nil" case .coreDataError(error: let error): return "Core Data error: \(error.localizedDescription)" - case .couldNotFindReceivedMessageInDatabase: return "Could not find received message in database" - case .unexpectedAttachmentNumber: return "Unexpected attachment number" case .downsizedImagesIsNil: return "Downsized images is nil" + case .couldNotFindPersistedObvContactIdentityInDatabase: return "Could not find contact in database" + case .couldNotFindOwnedIdentityInDatabase: return "Could not find owned identity in database" } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/UpdatePersistedMessageReceivedFromReceivedObvAttachmentOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/UpdatePersistedMessageReceivedFromReceivedObvAttachmentOperation.swift new file mode 100644 index 00000000..1ff51add --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/UpdatePersistedMessageReceivedFromReceivedObvAttachmentOperation.swift @@ -0,0 +1,124 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvEngine +import ObvCrypto +import OlvidUtils +import ObvUICoreData +import ObvTypes + + +final class UpdatePersistedMessageReceivedFromReceivedObvAttachmentOperation: ContextualOperationWithSpecificReasonForCancel { + + private let obvAttachment: ObvAttachment + private let obvEngine: ObvEngine + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: UpdatePersistedMessageReceivedFromReceivedObvAttachmentOperation.self)) + + init(obvAttachment: ObvAttachment, obvEngine: ObvEngine) { + self.obvAttachment = obvAttachment + self.obvEngine = obvEngine + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + // Grab the persisted contact who sent the message + + guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: obvAttachment.fromContactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedObvContactIdentityInDatabase) + } + + // Update the attachment sent by this contact + + let attachmentFullyReceivedOrCancelledByServer: Bool + do { + attachmentFullyReceivedOrCancelledByServer = try persistedContactIdentity.process(obvAttachment: obvAttachment) + } catch { + // In rare circumstances, the engine might announce a downloaded attachment although there is no file on disk. + // In that case, we request a re-download of the attachments. + if let error = error as? ObvUICoreData.Fyle.ObvError, error == .couldNotFindSourceFile { + try? obvEngine.resumeDownloadOfAttachment(obvAttachment.number, + ofMessageWithIdentifier: obvAttachment.messageIdentifier, + ownedCryptoId: obvAttachment.fromContactIdentity.ownedCryptoId, + forceResume: true) + } + throw error + } + + // If the attachment was fully received, we ask the engine to delete the attachment + + if attachmentFullyReceivedOrCancelledByServer { + let obvEngine = self.obvEngine + let obvAttachment = self.obvAttachment + let log = self.log + do { + try obvContext.addContextDidSaveCompletionHandler { error in + do { + try obvEngine.deleteObvAttachment(attachmentNumber: obvAttachment.number, ofMessageWithIdentifier: obvAttachment.messageIdentifier, ownedCryptoId: obvAttachment.fromContactIdentity.ownedCryptoId) + } catch { + os_log("Call to the engine method deleteObvAttachment did fail", log: log, type: .fault) + assertionFailure() + } + } + } catch { + assertionFailure(error.localizedDescription) + } + + } + + } catch { + assertionFailure(error.localizedDescription) + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case couldNotFindPersistedObvContactIdentityInDatabase + case coreDataError(error: Error) + case contextIsNil + + var logType: OSLogType { + switch self { + case .coreDataError, .contextIsNil, .couldNotFindPersistedObvContactIdentityInDatabase: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "The context is not set" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindPersistedObvContactIdentityInDatabase: + return "Could not find contact identity of received message in database" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/UpdatePersistedMessageSentFromReceivedObvOwnedAttachmentOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/UpdatePersistedMessageSentFromReceivedObvOwnedAttachmentOperation.swift new file mode 100644 index 00000000..a974e0b0 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/UpdatePersistedMessageSentFromReceivedObvOwnedAttachmentOperation.swift @@ -0,0 +1,112 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log +import ObvEngine +import ObvCrypto +import OlvidUtils +import ObvUICoreData +import ObvTypes + + +final class UpdatePersistedMessageSentFromReceivedObvOwnedAttachmentOperation: ContextualOperationWithSpecificReasonForCancel { + + private let obvOwnedAttachment: ObvOwnedAttachment + private let obvEngine: ObvEngine + private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: UpdatePersistedMessageReceivedFromReceivedObvAttachmentOperation.self)) + + init(obvOwnedAttachment: ObvOwnedAttachment, obvEngine: ObvEngine) { + self.obvOwnedAttachment = obvOwnedAttachment + self.obvEngine = obvEngine + super.init() + } + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + // Grab the persisted owned identity who sent the message on another owned device + + guard let persistedObvOwnedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: obvOwnedAttachment.ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentityInDatabase) + } + + // Update the attachment sent by this owned identity on another of her owned devices + + let attachmentFullyReceivedOrCancelledByServer = try persistedObvOwnedIdentity.processObvOwnedAttachmentFromOtherOwnedDevice(obvOwnedAttachment: obvOwnedAttachment) + + // If the attachment was fully received, we ask the engine to delete the attachment + + if attachmentFullyReceivedOrCancelledByServer { + let obvEngine = self.obvEngine + let obvOwnedAttachment = self.obvOwnedAttachment + let log = self.log + do { + try obvContext.addContextDidSaveCompletionHandler { error in + do { + try obvEngine.deleteObvAttachment(attachmentNumber: obvOwnedAttachment.number, ofMessageWithIdentifier: obvOwnedAttachment.messageIdentifier, ownedCryptoId: obvOwnedAttachment.ownedCryptoId) + } catch { + os_log("Call to the engine method deleteObvAttachment did fail", log: log, type: .fault) + assertionFailure() + } + } + } catch { + assertionFailure(error.localizedDescription) + } + + } + + } catch { + assertionFailure(error.localizedDescription) + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case couldNotFindOwnedIdentityInDatabase + case coreDataError(error: Error) + case contextIsNil + + var logType: OSLogType { + switch self { + case .coreDataError, .contextIsNil, .couldNotFindOwnedIdentityInDatabase: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "The context is not set" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentityInDatabase: + return "Could not find owned identity of attachment (sent for other owned device) in database" + } + } + + } + +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ReorderDiscussionsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ReorderDiscussionsOperation.swift index 653769bc..9a253c3c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ReorderDiscussionsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/ReorderDiscussionsOperation.swift @@ -29,26 +29,100 @@ import ObvUICoreData final class ReorderDiscussionsOperation: ContextualOperationWithSpecificReasonForCancel { - let discussionObjectIDs: [NSManagedObjectID] + let input: Input let ownedIdentity: ObvCryptoId - init(discussionObjectIDs: [NSManagedObjectID], ownedIdentity: ObvCryptoId) { - self.discussionObjectIDs = discussionObjectIDs + private let makeSyncAtomRequest: Bool + private weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? + + enum Input { + case discussionObjectIDs(discussionObjectIDs: [NSManagedObjectID]) + case discussionsIdentifiers(discussionIdentifiers: [ObvSyncAtom.DiscussionIdentifier], ordered: Bool) + } + + init(input: Input, ownedIdentity: ObvCryptoId, makeSyncAtomRequest: Bool, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate?) { + self.input = input self.ownedIdentity = ownedIdentity + self.makeSyncAtomRequest = makeSyncAtomRequest + self.syncAtomRequestDelegate = syncAtomRequestDelegate super.init() } - override func main() { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - try PersistedDiscussion.setPinnedDiscussions(persistedDiscussionObjectIDs: discussionObjectIDs, ownedCryptoId: ownedIdentity, within: obvContext.context) - } catch { - return cancel(withReason: .coreDataError(error: error)) + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + do { + + let discussionObjectIDs: [NSManagedObjectID] + let ordered: Bool + + switch input { + case .discussionObjectIDs(discussionObjectIDs: let objectIDs): + discussionObjectIDs = objectIDs + ordered = true + case .discussionsIdentifiers(discussionIdentifiers: let discussionIdentifiers, ordered: let _ordered): + ordered = _ordered + discussionObjectIDs = discussionIdentifiers.compactMap { discussionIdentifier in + switch discussionIdentifier { + case .oneToOne(contactCryptoId: let contactCryptoId): + let contactIdentifier = ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedIdentity) + guard let contact = try? PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .oneToOne, within: obvContext.context) else { + return nil + } + return contact.oneToOneDiscussion?.objectID + case .groupV1(groupIdentifier: let groupIdentifier): + guard let groupV1 = try? PersistedContactGroup.getContactGroup(groupIdentifier: groupIdentifier, ownedCryptoId: ownedIdentity, within: obvContext.context) else { + return nil + } + return groupV1.discussion.objectID + case .groupV2(groupIdentifier: let groupIdentifier): + guard let groupV2 = try? PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupIdentifier, within: obvContext.context) else { + return nil + } + return groupV2.discussion?.objectID + } + } + } + + let atLeastOnePinnedIndexWasChanged = try PersistedDiscussion.setPinnedDiscussions(persistedDiscussionObjectIDs: discussionObjectIDs, ordered: ordered, ownedCryptoId: ownedIdentity, within: obvContext.context) + + // Propagate the new order to our other owned devices if required + + if makeSyncAtomRequest && atLeastOnePinnedIndexWasChanged { + assert(self.syncAtomRequestDelegate != nil) + if let syncAtomRequestDelegate = self.syncAtomRequestDelegate { + let ownedCryptoId = self.ownedIdentity + guard let pinnedDiscussions = try? PersistedDiscussion.getAllPinnedDiscussions(ownedCryptoId: ownedCryptoId, with: obvContext.context) else { assertionFailure(); return } + let discussionIdentifiers: [ObvSyncAtom.DiscussionIdentifier] = pinnedDiscussions.compactMap { getObvSyncAtomDiscussionIdentifierFrom(persistedDiscussion: $0) } + let syncAtom = ObvSyncAtom.pinnedDiscussions(discussionIdentifiers: discussionIdentifiers, ordered: true) + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + Task.detached { + await syncAtomRequestDelegate.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } + } + } } + + } catch { + return cancel(withReason: .coreDataError(error: error)) } } + + + private func getObvSyncAtomDiscussionIdentifierFrom(persistedDiscussion: PersistedDiscussion) -> ObvSyncAtom.DiscussionIdentifier? { + guard let discussionKind = try? persistedDiscussion.kind else { assertionFailure(); return nil } + switch discussionKind { + case .oneToOne(withContactIdentity: let persistedContact): + guard let persistedContact else { assertionFailure(); return nil } + return .oneToOne(contactCryptoId: persistedContact.cryptoId) + case .groupV1(withContactGroup: let groupV1): + guard let groupV1 else { assertionFailure(); return nil } + guard let groupId = try? groupV1.getGroupId() else { assertionFailure(); return nil } + return .groupV1(groupIdentifier: groupId) + case .groupV2(withGroup: let groupV2): + guard let groupV2 else { assertionFailure(); return nil } + return .groupV2(groupIdentifier: groupV2.groupIdentifier) + } + + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SendReactionJSONOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SendReactionJSONOperation.swift index 224b19f5..541c4d26 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SendReactionJSONOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SendReactionJSONOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -39,65 +39,62 @@ final class SendReactionJSONOperation: ContextualOperationWithSpecificReasonForC super.init() } - override func main() { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - let message: PersistedMessage - do { - guard let _message = try PersistedMessage.get(with: messageObjectID, within: obvContext.context) else { - return cancel(withReason: .cannotFindMessage) - } - message = _message - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - let itemJSON: PersistedItemJSON - do { - let reactionJSON = try ReactionJSON(persistedMessageToReact: message, emoji: emoji) - itemJSON = PersistedItemJSON(reactionJSON: reactionJSON) - } catch { - return cancel(withReason: .couldNotConstructReactionJSON) - } - - // Find all the contacts to which this item should be sent. - - let discussion = message.discussion - let contactCryptoIds: Set - let ownCryptoId: ObvCryptoId - do { - (ownCryptoId, contactCryptoIds) = try discussion.getAllActiveParticipants() - } catch { - return cancel(withReason: .couldNotGetCryptoIdOfDiscussionParticipants(error: error)) - } - - // Create a payload of the PersistedItemJSON we just created and send it. - // We do not keep track of the message identifiers from engine. - - let payload: Data - do { - payload = try itemJSON.jsonEncode() - } catch { - return cancel(withReason: .failedToEncodePersistedItemJSON) - } - - do { - _ = try obvEngine.post(messagePayload: payload, - extendedPayload: nil, - withUserContent: true, - isVoipMessageForStartingCall: false, - attachmentsToSend: [], - toContactIdentitiesWithCryptoId: contactCryptoIds, - ofOwnedIdentityWithCryptoId: ownCryptoId) - } catch { - return cancel(withReason: .couldNotPostMessageWithinEngine) + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + let message: PersistedMessage + do { + guard let _message = try PersistedMessage.get(with: messageObjectID, within: obvContext.context) else { + return cancel(withReason: .cannotFindMessage) } + message = _message + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + + let itemJSON: PersistedItemJSON + do { + let reactionJSON = try ReactionJSON(persistedMessageToReact: message, emoji: emoji) + itemJSON = PersistedItemJSON(reactionJSON: reactionJSON) + } catch { + return cancel(withReason: .couldNotConstructReactionJSON) + } + + // Find all the contacts to which this item should be sent. + + guard let discussion = message.discussion else { + return cancel(withReason: .couldNotDetermineDiscussion) + } + let contactCryptoIds: Set + let ownCryptoId: ObvCryptoId + do { + (ownCryptoId, contactCryptoIds) = try discussion.getAllActiveParticipants() + } catch { + return cancel(withReason: .couldNotGetCryptoIdOfDiscussionParticipants(error: error)) + } + + // Create a payload of the PersistedItemJSON we just created and send it. + // We do not keep track of the message identifiers from engine. + + let payload: Data + do { + payload = try itemJSON.jsonEncode() + } catch { + return cancel(withReason: .failedToEncodePersistedItemJSON) + } + + do { + _ = try obvEngine.post(messagePayload: payload, + extendedPayload: nil, + withUserContent: true, + isVoipMessageForStartingCall: false, + attachmentsToSend: [], + toContactIdentitiesWithCryptoId: contactCryptoIds, + ofOwnedIdentityWithCryptoId: ownCryptoId, + alsoPostToOtherOwnedDevices: true) + } catch { + return cancel(withReason: .couldNotPostMessageWithinEngine) + } + } } @@ -110,6 +107,7 @@ enum SendReactionJSONOperationReasonForCancel: LocalizedErrorWithLogType { case couldNotGetCryptoIdOfDiscussionParticipants(error: Error) case failedToEncodePersistedItemJSON case couldNotPostMessageWithinEngine + case couldNotDetermineDiscussion var logType: OSLogType { .fault } @@ -129,6 +127,8 @@ enum SendReactionJSONOperationReasonForCancel: LocalizedErrorWithLogType { return "We failed to encode the persisted item JSON" case .couldNotPostMessageWithinEngine: return "We failed to post the serialized DeleteMessagesJSON within the engine" + case .couldNotDetermineDiscussion: + return "Could not determine discussion" } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ComputeExtendedPayloadOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ComputeExtendedPayloadOperation.swift index c72924b8..2cf798dc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ComputeExtendedPayloadOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ComputeExtendedPayloadOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,7 +24,6 @@ import OlvidUtils import UIKit import MobileCoreServices import ObvEncoder -import ObvMetaManager import ObvUICoreData @@ -38,9 +37,6 @@ final class ComputeExtendedPayloadOperation: ContextualOperationWithSpecificReas private let input: ComputeExtendedPayloadOperationInput private let maxNumberOfDownsizedImages = 25 - private static let errorDomain = "ComputeExtendedPayloadOperation" - fileprivate static func makeError(message: String) -> Error { NSError(domain: ComputeExtendedPayloadOperation.errorDomain, code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } - init(provider: UnprocessedPersistedMessageSentProvider) { self.input = .unprocessedPersistedMessageSentProvider(provider) super.init() @@ -53,8 +49,8 @@ final class ComputeExtendedPayloadOperation: ContextualOperationWithSpecificReas private(set) var extendedPayload: Data? - override func main() { - + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + let messageSentPermanentID: ObvManagedObjectPermanentID switch input { case .message(let _messageSentPermanentID): @@ -65,77 +61,70 @@ final class ComputeExtendedPayloadOperation: ContextualOperationWithSpecificReas } messageSentPermanentID = _messageSentPermanentID } - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - let persistedMessageSent: PersistedMessageSent - do { - guard let _persistedMessageSent = try PersistedMessageSent.getManagedObject(withPermanentID: messageSentPermanentID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedMessageSentInDatabase) - } - persistedMessageSent = _persistedMessageSent - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - guard persistedMessageSent.status == .unprocessed || persistedMessageSent.status == .processing else { - return - } - - guard !persistedMessageSent.fyleMessageJoinWithStatuses.isEmpty else { return } - - // Compute up to 25 downsized images - - var attachmentNumbersAnddownsizedImages = [(attachmentNumber: Int, downsizedImage: CGImage)]() - for join in persistedMessageSent.fyleMessageJoinWithStatuses { - guard let fyle = join.fyle else { continue } - guard ObvUTIUtils.uti(join.uti, conformsTo: kUTTypeImage) else { continue } - - // Return a centered squared image - guard let squareImage = extractSquaredImageFromImage(at: fyle.url) else { continue } - - // Resize the squared image to a resolution larger, but close to 40x40 pixels - guard let downsizedImage = downsizeImage(squareImage) else { continue } - - attachmentNumbersAnddownsizedImages.append((join.index, downsizedImage)) - - guard attachmentNumbersAnddownsizedImages.count < maxNumberOfDownsizedImages else { break } - } - - guard !attachmentNumbersAnddownsizedImages.isEmpty else { return } - - // Compute a single image composed of the downsized image, from left to right, from down to bottom. - - guard let singleImage = createSingleImageComposedOfImages(attachmentNumbersAnddownsizedImages.map({ $0.downsizedImage })) else { - assertionFailure("Could not compute single image from downsized images") - return - } - - // Export single image to jpeg, try to remove EXIF attributes, and encode the result - - guard let jpegDataOfSingleImage = UIImage(cgImage: singleImage).jpegData(compressionQuality: 0.75) else { - assertionFailure("Could not export single image to Jpeg") - return + + let persistedMessageSent: PersistedMessageSent + do { + guard let _persistedMessageSent = try PersistedMessageSent.getManagedObject(withPermanentID: messageSentPermanentID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedMessageSentInDatabase) } - - let jpegDataOfSingleImageWithoutAttributes = removeJpegAttributesFromJpegDataOfSingleImage(jpegDataOfSingleImage) - - let encodedImageData = (jpegDataOfSingleImageWithoutAttributes ?? jpegDataOfSingleImage).obvEncode() - - let encodedListOfAttachmentNumbers = attachmentNumbersAnddownsizedImages.map({ $0.attachmentNumber }).map({ $0.obvEncode() }).obvEncode() - let encodedExtendedPayload = [ - 0.obvEncode(), - encodedListOfAttachmentNumbers, - encodedImageData, - ].obvEncode() - - self.extendedPayload = encodedExtendedPayload.rawData + persistedMessageSent = _persistedMessageSent + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + + guard persistedMessageSent.status == .unprocessed || persistedMessageSent.status == .processing else { + return + } + + guard !persistedMessageSent.fyleMessageJoinWithStatuses.isEmpty else { return } + + // Compute up to 25 downsized images + + var attachmentNumbersAnddownsizedImages = [(attachmentNumber: Int, downsizedImage: CGImage)]() + for join in persistedMessageSent.fyleMessageJoinWithStatuses { + guard let fyle = join.fyle else { continue } + guard join.contentType.conforms(to: .image) else { continue } + + // Return a centered squared image + guard let squareImage = extractSquaredImageFromImage(at: fyle.url) else { continue } + + // Resize the squared image to a resolution larger, but close to 40x40 pixels + guard let downsizedImage = downsizeImage(squareImage) else { continue } + + attachmentNumbersAnddownsizedImages.append((join.index, downsizedImage)) + + guard attachmentNumbersAnddownsizedImages.count < maxNumberOfDownsizedImages else { break } + } + + guard !attachmentNumbersAnddownsizedImages.isEmpty else { return } + + // Compute a single image composed of the downsized image, from left to right, from down to bottom. + + guard let singleImage = createSingleImageComposedOfImages(attachmentNumbersAnddownsizedImages.map({ $0.downsizedImage })) else { + assertionFailure("Could not compute single image from downsized images") + return + } + + // Export single image to jpeg, try to remove EXIF attributes, and encode the result + + guard let jpegDataOfSingleImage = UIImage(cgImage: singleImage).jpegData(compressionQuality: 0.75) else { + assertionFailure("Could not export single image to Jpeg") + return + } + + let jpegDataOfSingleImageWithoutAttributes = removeJpegAttributesFromJpegDataOfSingleImage(jpegDataOfSingleImage) + + let encodedImageData = (jpegDataOfSingleImageWithoutAttributes ?? jpegDataOfSingleImage).obvEncode() + + let encodedListOfAttachmentNumbers = attachmentNumbersAnddownsizedImages.map({ $0.attachmentNumber }).map({ $0.obvEncode() }).obvEncode() + let encodedExtendedPayload = [ + 0.obvEncode(), + encodedListOfAttachmentNumbers, + encodedImageData, + ].obvEncode() + + self.extendedPayload = encodedExtendedPayload.rawData + } @@ -408,11 +397,12 @@ enum ComputeExtendedPayloadOperationReasonForCancel: LocalizedErrorWithLogType { case coreDataError(error: Error) case persistedMessageSentObjectIDIsNil case couldNotFindPersistedMessageSentInDatabase + case notEnoughBytes var logType: OSLogType { switch self { - case .coreDataError, .contextIsNil, .persistedMessageSentObjectIDIsNil: + case .coreDataError, .contextIsNil, .persistedMessageSentObjectIDIsNil, .notEnoughBytes: return .fault case .couldNotFindPersistedMessageSentInDatabase: return .error @@ -427,6 +417,8 @@ enum ComputeExtendedPayloadOperationReasonForCancel: LocalizedErrorWithLogType { return "persistedMessageSentObjectID is nil" case .couldNotFindPersistedMessageSentInDatabase: return "Could not find the PersistedMessageSent in database" + case .notEnoughBytes: + return "Not enough bytes" } } @@ -448,7 +440,7 @@ private extension Data.Iterator { mutating func skip(numberOfBytes: UInt16) throws { for _ in 0.. { +final class FindAdministratedGroupV2DiscussionsAndOneToOneDiscussionWithContactOperation: ContextualOperationWithSpecificReasonForCancel { enum Input { - case contactDevice(contactDeviceObjectID: NSManagedObjectID) + case contactDevice(contactDeviceObjectID: TypeSafeManagedObjectID) case contact(contactObjectID: TypeSafeManagedObjectID) } @@ -42,75 +44,105 @@ final class FindAdministratedGroupV2DiscussionsAndOneToOneDiscussionWithContactO } /// If this operation finishes without cancelling, this is guaranteed to be set. - /// It will contain the object IDs of all the group V2 discussions where the contact is part of the members and where the corresponding owned identity is an administrator. - /// It will also contain the object ID of the oneToOne discussion. - private(set) var persistedDiscussionObjectIDs = Set>() + /// It will contain the identifiers of all the group V2 discussions where the contact is part of the members and where the corresponding owned identity is an administrator. + /// It will also contain the identifier of the oneToOne discussion. + private(set) var persistedDiscussionIdentifiers = [DiscussionIdentifier]() + private(set) var ownedCryptoId: ObvCryptoId? + private(set) var contactCryptoId: ObvCryptoId? - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { + do { - let contact: PersistedObvContactIdentity + let contact: PersistedObvContactIdentity + + switch input { + case .contactDevice(let contactDeviceObjectID): - switch input { - case .contactDevice(let contactDeviceObjectID): - - // Find the contact device and corresponding contact - - guard let device = try PersistedObvContactDevice.get(contactDeviceObjectID: contactDeviceObjectID, within: obvContext.context) else { - assertionFailure() - return - } - - guard let _contact = device.identity else { - assertionFailure() - return - } - - contact = _contact - - case .contact(let contactObjectID): - - guard let _contact = try PersistedObvContactIdentity.get(objectID: contactObjectID, within: obvContext.context) else { - assertionFailure() - return - } - - contact = _contact - - } - - // Find all group v2 that include this contact and keep those that we administrate + // Find the contact device and corresponding contact - let administratedGroups = try PersistedGroupV2.getAllPersistedGroupV2(whereContactIdentitiesInclude: contact) - .filter({ $0.ownedIdentityIsAllowedToChangeSettings }) + guard let device = try PersistedObvContactDevice.get(contactDeviceObjectID: contactDeviceObjectID.objectID, within: obvContext.context) else { + assertionFailure() + return cancel(withReason: .couldNotFindContactDevice) + } - // Save the object IDs of the corresponding discussions + guard let _contact = device.identity else { + assertionFailure() + return cancel(withReason: .couldNotFindContactIdentity) + } - self.persistedDiscussionObjectIDs = Set(administratedGroups.compactMap({ $0.discussion?.typedObjectID.downcast })) + contact = _contact - // Add the objectID of the one-to-one discussion the owned identity has with the contact + case .contact(let contactObjectID): - if includeOneToOneDiscussionInResult { - if let oneToOneDiscussionObjectID = contact.oneToOneDiscussion?.typedObjectID.downcast { - self.persistedDiscussionObjectIDs.insert(oneToOneDiscussionObjectID) - } else if contact.isOneToOne { - assertionFailure() - // Continue anyway - } + guard let _contact = try PersistedObvContactIdentity.get(objectID: contactObjectID, within: obvContext.context) else { + assertionFailure() + return cancel(withReason: .couldNotFindContactIdentity) } - } catch { - return cancel(withReason: .coreDataError(error: error)) + contact = _contact + + } + + self.contactCryptoId = contact.cryptoId + + guard let _ownedCryptoId = contact.ownedIdentity?.cryptoId else { + return cancel(withReason: .couldNotDetermineOwnedCryptoId) } + self.ownedCryptoId = _ownedCryptoId + + // Find all group v2 that include this contact and keep those that we administrate + + let administratedGroups = try PersistedGroupV2.getAllPersistedGroupV2(whereContactIdentitiesInclude: contact) + .filter({ $0.ownedIdentityIsAllowedToChangeSettings }) + + // Save the object IDs of the corresponding discussions + + self.persistedDiscussionIdentifiers = administratedGroups.compactMap({ try? $0.discussion?.identifier }) + + // Add the objectID of the one-to-one discussion the owned identity has with the contact + + if includeOneToOneDiscussionInResult { + if let oneToOneDiscussionIdentifier = try? contact.oneToOneDiscussion?.identifier { + self.persistedDiscussionIdentifiers.append(oneToOneDiscussionIdentifier) + } else if contact.isOneToOne { + assertionFailure() + // Continue anyway + } + } + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case couldNotDetermineOwnedCryptoId + case couldNotFindContactDevice + case couldNotFindContactIdentity + + var logType: OSLogType { + return .fault } + var errorDescription: String? { + switch self { + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotDetermineOwnedCryptoId: + return "Could not determine owned crypto id" + case .couldNotFindContactDevice: + return "Could not find contact device" + case .couldNotFindContactIdentity: + return "Could not find contact identity" + } + } + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/FindSentMessagesWithPersistedMessageSentRecipientInfosCanNowBeSentByEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/FindSentMessagesWithPersistedMessageSentRecipientInfosCanNowBeSentByEngineOperation.swift index f4821003..a1a469a8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/FindSentMessagesWithPersistedMessageSentRecipientInfosCanNowBeSentByEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/FindSentMessagesWithPersistedMessageSentRecipientInfosCanNowBeSentByEngineOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -65,16 +65,20 @@ final class FindSentMessagesWithPersistedMessageSentRecipientInfosCanNowBeSentBy // Determine the discussion kind + guard let discussion = info.messageSent.discussion else { + throw Self.makeError(message: "Could not determine discussion") + } + let discussionKind: PersistedDiscussion.Kind do { - discussionKind = try info.messageSent.discussion.kind + discussionKind = try discussion.kind } catch { throw Self.makeError(message: "Could not determine discussion kind, cannot send infos") } // Determine the owned identity - guard let ownedCryptoId = info.messageSent.discussion.ownedIdentity?.cryptoId else { + guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId else { throw Self.makeError(message: "Could not determine owned identity") } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/MarkSentFyleMessageJoinWithStatusAsCompleteOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/MarkSentFyleMessageJoinWithStatusAsCompleteOperation.swift index e69c30a0..205ea923 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/MarkSentFyleMessageJoinWithStatusAsCompleteOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/MarkSentFyleMessageJoinWithStatusAsCompleteOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -47,54 +47,46 @@ final class MarkSentFyleMessageJoinWithStatusAsCompleteOperation: ContextualOper self.init(ownedCryptoId: ownedCryptoId, messageIdentifierFromEngineAndAttachmentNumbersToRestrictTo: messageIdentifierFromEngineAndAttachmentNumbersToRestrictTo) } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { - do { + for (messageIdentifierFromEngine, restrictToAttachmentNumbers) in messageIdentifierFromEngineAndAttachmentNumbersToRestrictTo { - for (messageIdentifierFromEngine, restrictToAttachmentNumbers) in messageIdentifierFromEngineAndAttachmentNumbersToRestrictTo { - - let infos = try PersistedMessageSentRecipientInfos.getAllPersistedMessageSentRecipientInfos(messageIdentifierFromEngine: messageIdentifierFromEngine, ownedCryptoId: ownedCryptoId, within: obvContext.context) - guard !infos.isEmpty, let persistedMessageSent = infos.first?.messageSent else { - continue - } - - let attachmentNumbers: [Int] - if let restrictToAttachmentNumbers { - attachmentNumbers = restrictToAttachmentNumbers - } else { - attachmentNumbers = Array(0.. { @@ -37,33 +38,26 @@ final class MarkSentMessageAsCouldNotBeSentToServerOperation: ContextualOperatio } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - - let infos = try PersistedMessageSentRecipientInfos.getAllPersistedMessageSentRecipientInfos(messageIdentifierFromEngine: messageIdentifierFromEngine, - ownedCryptoId: ownedCryptoId, - within: obvContext.context) - - guard !infos.isEmpty else { - // No info found, so there is nothing to do - return - } - - for info in infos { - info.setAsCouldNotBeSentToServer() - } - - } catch { - assertionFailure() - return cancel(withReason: .coreDataError(error: error)) + do { + + let infos = try PersistedMessageSentRecipientInfos.getAllPersistedMessageSentRecipientInfos(messageIdentifierFromEngine: messageIdentifierFromEngine, + ownedCryptoId: ownedCryptoId, + within: obvContext.context) + + guard !infos.isEmpty else { + // No info found, so there is nothing to do + return } - + + for info in infos { + info.setAsCouldNotBeSentToServer() + } + + } catch { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedByContactOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedByContactOperation.swift deleted file mode 100644 index 5161149f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedByContactOperation.swift +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import OlvidUtils -import ObvEngine -import ObvTypes -import ObvUICoreData - - -/// This operation allows to process a received message indicating that one of our contacts did take a screen capture of some sensitive (read-once of with limited visibility) messages within a discussion. If this happen, we want to show this to the owned identity by displaying an appropriate system message within the corresponding discussion. -final class ProcessDetectionThatSensitiveMessagesWereCapturedByContactOperation: ContextualOperationWithSpecificReasonForCancel { - - let contactIdentity: ObvContactIdentity - let screenCaptureDetectionJSON: ScreenCaptureDetectionJSON - - init(contactIdentity: ObvContactIdentity, screenCaptureDetectionJSON: ScreenCaptureDetectionJSON) { - self.contactIdentity = contactIdentity - self.screenCaptureDetectionJSON = screenCaptureDetectionJSON - super.init() - } - - override func main() { - - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - do { - - // Get the contact and the owned identities - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: contactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - // We could not find the contact, we cannot do much - return - } - - guard let ownedIdentity = persistedContactIdentity.ownedIdentity else { - assertionFailure() - return - } - - // Recover the appropriate discussion - - let groupIdentifier = screenCaptureDetectionJSON.groupIdentifier - - let discussion: PersistedDiscussion - switch groupIdentifier { - case .none: - guard let oneToOneDiscussion = persistedContactIdentity.oneToOneDiscussion else { - assertionFailure() - return - } - discussion = oneToOneDiscussion - case .groupV1(groupV1Identifier: let groupV1Identifier): - guard let group = try PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedIdentity: ownedIdentity) else { - assertionFailure() - return - } - discussion = group.discussion - case .groupV2(groupV2Identifier: let groupV2Identifier): - guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupV2Identifier) else { - assertionFailure() - return - } - guard let groupDiscussion = group.discussion else { - assertionFailure() - return - } - discussion = groupDiscussion - } - - // Make sure the discussion is active - - switch discussion.status { - case .active: - break - case .locked, .preDiscussion: - return - } - - // Insert the appropriate system message in the discussion - - _ = try PersistedMessageSystem.insertContactIdentityDidCaptureSensitiveMessages(within: discussion, contact: persistedContactIdentity) - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - } - - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedByOwnedIdentityOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedByOwnedIdentityOperation.swift index 49a78be3..609d2a2d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedByOwnedIdentityOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedByOwnedIdentityOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import OlvidUtils import ObvEngine import ObvTypes import ObvUICoreData +import CoreData /// When the `ScreenCaptureDetector` detects that messages with limited visibility were screenshoted or captured (e.g. with a video capture of the screen), this operation gets called. @@ -38,87 +39,47 @@ final class ProcessDetectionThatSensitiveMessagesWereCapturedByOwnedIdentityOper super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { + + // Find the discussion and owned identity + guard let discussion = try PersistedDiscussion.getManagedObject(withPermanentID: discussionPermanentID, within: obvContext.context) else { + // The discussion could not be found, nothing left to do + assertionFailure() + return + } + + guard let ownedIdentity = discussion.ownedIdentity else { + assertionFailure() + return + } + + // Process the event locally, which returns the JSON to send to contacts and other owned devices + + let (screenCaptureDetectionJSON, recipients) = try ownedIdentity.processLocalDetectionThatSensitiveMessagesWereCapturedByThisOwnedIdentity(discussionPermanentID: discussionPermanentID) + + // Ask the engine to send the JSON to notify contacts and other owned devices + + let payload: Data do { - - // Find the discussion and owned identity - - guard let discussion = try PersistedDiscussion.getManagedObject(withPermanentID: discussionPermanentID, within: obvContext.context) else { - // The discussion could not be found, nothing left to do - assertionFailure() - return - } - - guard let ownCryptoId = discussion.ownedIdentity?.cryptoId else { - assertionFailure() - return - } - - // Make sure the discussion is active - - switch discussion.status { - case .active: - break - case .locked, .preDiscussion: - return - } - - // Determine if the ScreenCaptureDetectionJSON concerns a one2one or a group discussion. Determine the recipients of this JSON message. - - let recipients: Set - let screenCaptureDetectionJSON: ScreenCaptureDetectionJSON - - switch try discussion.kind { - case .oneToOne(withContactIdentity: let contact): - guard let contact else { assertionFailure(); return } - screenCaptureDetectionJSON = ScreenCaptureDetectionJSON() - recipients = Set([contact.cryptoId]) - case .groupV1(withContactGroup: let group): - guard let group else { assertionFailure(); return } - let groupV1Identifier = try group.getGroupId() - screenCaptureDetectionJSON = ScreenCaptureDetectionJSON(groupV1Identifier: groupV1Identifier) - recipients = Set(group.contactIdentities.compactMap({ $0.cryptoId })) - case .groupV2(withGroup: let group): - guard let group else { assertionFailure(); return } - let groupV2Identifier = group.groupIdentifier - screenCaptureDetectionJSON = ScreenCaptureDetectionJSON(groupV2Identifier: groupV2Identifier) - recipients = Set(group.contactsAmongOtherPendingAndNonPendingMembers.map({ $0.cryptoId })) - } - - // Compute the payload to send - - let payload: Data - do { - let itemJSON = PersistedItemJSON(screenCaptureDetectionJSON: screenCaptureDetectionJSON) - payload = try itemJSON.jsonEncode() - } - - // Send the JSON message - - _ = try obvEngine.post(messagePayload: payload, - extendedPayload: nil, - withUserContent: false, - isVoipMessageForStartingCall: false, - attachmentsToSend: [], - toContactIdentitiesWithCryptoId: recipients, - ofOwnedIdentityWithCryptoId: ownCryptoId) - - // Insert an appropriate system message within the discussion - - _ = try PersistedMessageSystem.insertOwnedIdentityDidCaptureSensitiveMessages(within: discussion) - - } catch { - assertionFailure(error.localizedDescription) - return cancel(withReason: .coreDataError(error: error)) + let itemJSON = PersistedItemJSON(screenCaptureDetectionJSON: screenCaptureDetectionJSON) + payload = try itemJSON.jsonEncode() } + _ = try obvEngine.post(messagePayload: payload, + extendedPayload: nil, + withUserContent: false, + isVoipMessageForStartingCall: false, + attachmentsToSend: [], + toContactIdentitiesWithCryptoId: recipients, + ofOwnedIdentityWithCryptoId: ownedIdentity.cryptoId, + alsoPostToOtherOwnedDevices: true) + + } catch { + assertionFailure(error.localizedDescription) + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedOperation.swift new file mode 100644 index 00000000..fe706c15 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessDetectionThatSensitiveMessagesWereCapturedOperation.swift @@ -0,0 +1,137 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + + +import Foundation +import OlvidUtils +import ObvEngine +import ObvTypes +import ObvUICoreData +import os.log +import CoreData + + +/// This operation allows to process a received message indicating that one of our contacts did take a screen capture of some sensitive (read-once of with limited visibility) messages within a discussion. If this happen, we want to show this to the owned identity by displaying an appropriate system message within the corresponding discussion. +final class ProcessDetectionThatSensitiveMessagesWereCapturedOperation: ContextualOperationWithSpecificReasonForCancel { + + enum Requester { + case contact(contactIdentifier: ObvContactIdentifier) + case ownedIdentity(ownedCryptoId: ObvCryptoId) + } + + let screenCaptureDetectionJSON: ScreenCaptureDetectionJSON + private let requester: Requester + private let messageUploadTimestampFromServer: Date + + + init(screenCaptureDetectionJSON: ScreenCaptureDetectionJSON, requester: Requester, messageUploadTimestampFromServer: Date) { + self.screenCaptureDetectionJSON = screenCaptureDetectionJSON + self.requester = requester + self.messageUploadTimestampFromServer = messageUploadTimestampFromServer + super.init() + } + + + enum Result { + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case processed + } + + private(set) var result: Result? + + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + + switch requester { + + case .contact(contactIdentifier: let contactIdentifier): + + guard let contact = try PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .any, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContact) + } + + try contact.processDetectionThatSensitiveMessagesWereCapturedByThisContact(screenCaptureDetectionJSON: screenCaptureDetectionJSON, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + + case .ownedIdentity(ownedCryptoId: let ownedCryptoId): + + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindOwnedIdentity) + } + + try ownedIdentity.processDetectionThatSensitiveMessagesWereCapturedByThisOwnedIdentity(screenCaptureDetectionJSON: screenCaptureDetectionJSON, messageUploadTimestampFromServer: messageUploadTimestampFromServer) + + } + + result = .processed + + } catch { + if let error = error as? ObvUICoreDataError { + switch error { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + result = .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + return + default: + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + } else { + assertionFailure() + return cancel(withReason: .coreDataError(error: error)) + } + } + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case coreDataError(error: Error) + case contextIsNil + case couldNotFindOwnedIdentity + case couldNotFindContact + + var logType: OSLogType { + switch self { + case .coreDataError, + .contextIsNil, + .couldNotFindOwnedIdentity, + .couldNotFindContact: + return .fault + } + } + + var errorDescription: String? { + switch self { + case .contextIsNil: + return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .couldNotFindContact: + return "Could not find contact" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessNewSentJoinProgressesReceivedFromEngineOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessNewSentJoinProgressesReceivedFromEngineOperation.swift index ddadb46e..1a874f7d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessNewSentJoinProgressesReceivedFromEngineOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/ProcessNewSentJoinProgressesReceivedFromEngineOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/SendUnprocessedPersistedMessageSentOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/SendUnprocessedPersistedMessageSentOperation.swift index bbd7cc1b..b832bae7 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/SendUnprocessedPersistedMessageSentOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/SendUnprocessedPersistedMessageSentOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -44,32 +44,36 @@ final class SendUnprocessedPersistedMessageSentOperation: ContextualOperationWit private let input: Input + private let alsoPostToOtherOwnedDevices: Bool private let extendedPayloadProvider: ExtendedPayloadProvider? private let obvEngine: ObvEngine private let completionHandler: (() -> Void)? - init(messageSentPermanentID: ObvManagedObjectPermanentID, extendedPayloadProvider: ExtendedPayloadProvider?, obvEngine: ObvEngine, completionHandler: (() -> Void)? = nil) { + init(messageSentPermanentID: ObvManagedObjectPermanentID, alsoPostToOtherOwnedDevices: Bool, extendedPayloadProvider: ExtendedPayloadProvider?, obvEngine: ObvEngine, completionHandler: (() -> Void)? = nil) { self.input = .messagePermanentID(messageSentPermanentID) self.obvEngine = obvEngine self.completionHandler = completionHandler self.extendedPayloadProvider = extendedPayloadProvider + self.alsoPostToOtherOwnedDevices = alsoPostToOtherOwnedDevices super.init() } - init(unprocessedPersistedMessageSentProvider: UnprocessedPersistedMessageSentProvider, extendedPayloadProvider: ExtendedPayloadProvider?, obvEngine: ObvEngine, completionHandler: (() -> Void)? = nil) { + init(unprocessedPersistedMessageSentProvider: UnprocessedPersistedMessageSentProvider, alsoPostToOtherOwnedDevices: Bool, extendedPayloadProvider: ExtendedPayloadProvider?, obvEngine: ObvEngine, completionHandler: (() -> Void)? = nil) { self.input = .provider(unprocessedPersistedMessageSentProvider) self.obvEngine = obvEngine self.completionHandler = completionHandler self.extendedPayloadProvider = extendedPayloadProvider + self.alsoPostToOtherOwnedDevices = alsoPostToOtherOwnedDevices super.init() } private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SendUnprocessedPersistedMessageSentOperation.self)) - override func main() { + + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { let messageSentPermanentID: ObvManagedObjectPermanentID - + switch input { case .messagePermanentID(let _messageSentPermanentID): messageSentPermanentID = _messageSentPermanentID @@ -81,277 +85,278 @@ final class SendUnprocessedPersistedMessageSentOperation: ContextualOperationWit messageSentPermanentID = _messageSentPermanentID } - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - + do { + + guard let persistedMessageSent = try PersistedMessageSent.getManagedObject(withPermanentID: messageSentPermanentID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindPersistedMessageSentInDatabase) + } + + // Make sure the message is not wiped + + guard !persistedMessageSent.isWiped else { + assertionFailure() + return + } + + // If the message is a read once message, we won't send it to our other owned devices + + let isPersistedMessageSentReadOnce = persistedMessageSent.readOnce + + // Determine the crypto ids of the potential recipients of the message, i.e., those to whom the message shall still be sent. + // We will filter those identities later in this operation to only keep those to whom the message can indeed be sent. + + let cryptoIdsWithoutMessageIdentifierFromEngine = Set(persistedMessageSent.unsortedRecipientsInfos + .filter({ $0.messageIdentifierFromEngine == nil }) + .map({ $0.recipientCryptoId })) + + guard let ownedCryptoId = persistedMessageSent.discussion?.ownedIdentity?.cryptoId else { + return cancel(withReason: .couldNotDetermineOwnedCryptoId) + } + + // Determine the discussion kind + + guard let discussion = persistedMessageSent.discussion else { + return cancel(withReason: .couldNotDetermineDiscussionKind) + } + + let discussionKind: PersistedDiscussion.Kind do { + discussionKind = try discussion.kind + } catch { + return cancel(withReason: .couldNotDetermineDiscussionKind) + } + + /* Create a set of all the cryptoId's to which the message needs to be sent by the engine, + * i.e., that has no identifier from the engine (for group v1 and one2one discussions), or that + * have no identifer from the engine and such that the recipient accepted + * the group invitation (for group v2) + */ + + var contactCryptoIds = Set() + + switch discussionKind { - guard let persistedMessageSent = try PersistedMessageSent.getManagedObject(withPermanentID: messageSentPermanentID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindPersistedMessageSentInDatabase) - } - - // Make sure the message is not wiped - - guard !persistedMessageSent.isWiped else { - assertionFailure() - return - } - - // Determine the crypto ids of the potential recipients of the message, i.e., those to whom the message shall still be sent. - // We will filter those identities later in this operation to only keep those to whom the message can indeed be sent. + case .oneToOne: - let cryptoIdsWithoutMessageIdentifierFromEngine = Set(persistedMessageSent.unsortedRecipientsInfos - .filter({ $0.messageIdentifierFromEngine == nil }) - .map({ $0.recipientCryptoId })) - - guard let ownedCryptoId = persistedMessageSent.discussion.ownedIdentity?.cryptoId else { - return cancel(withReason: .couldNotDetermineOwnedCryptoId) + for contactCryptoId in cryptoIdsWithoutMessageIdentifierFromEngine { + + // We can send the message to the recipient if + // - she is a oneToOne contact + // - with at least one device + + // Determine the contact identity + + guard let contact = try PersistedObvContactIdentity.get( + contactCryptoId: contactCryptoId, + ownedIdentityCryptoId: ownedCryptoId, + whereOneToOneStatusIs: .oneToOne, + within: obvContext.context) else { + assertionFailure() + continue + } + + guard !contact.devices.isEmpty else { + // This may happen, when sending a message before a channel is created + continue + } + + // If we reach this point, we can send the message to the recipient indicated in the infos. + + contactCryptoIds.insert(contactCryptoId) + } - // Determine the discussion kind + case .groupV1(withContactGroup: let group): - let discussionKind: PersistedDiscussion.Kind - do { - discussionKind = try persistedMessageSent.discussion.kind - } catch { - return cancel(withReason: .couldNotDetermineDiscussionKind) + guard let group = group else { + return cancel(withReason: .couldNotFindCorrespondingGroupV1) } - - /* Create a set of all the cryptoId's to which the message needs to be sent by the engine, - * i.e., that has no identifier from the engine (for group v1 and one2one discussions), or that - * have no identifer from the engine and such that the recipient accepted - * the group invitation (for group v2) - */ - - var contactCryptoIds = Set() - switch discussionKind { + for contactCryptoId in cryptoIdsWithoutMessageIdentifierFromEngine { - case .oneToOne: - - for contactCryptoId in cryptoIdsWithoutMessageIdentifierFromEngine { - - // We can send the message to the recipient if - // - she is a oneToOne contact - // - with at least one device - - // Determine the contact identity - - guard let contact = try PersistedObvContactIdentity.get( - contactCryptoId: contactCryptoId, - ownedIdentityCryptoId: ownedCryptoId, - whereOneToOneStatusIs: .oneToOne, - within: obvContext.context) else { - assertionFailure() - continue - } - - guard !contact.devices.isEmpty else { - // This may happen, when sending a message before a channel is created - continue - } - - // If we reach this point, we can send the message to the recipient indicated in the infos. - - contactCryptoIds.insert(contactCryptoId) - - } + // We can send the message to the recipient if + // - she is part of the group + // - with at least one device - case .groupV1(withContactGroup: let group): + // Determine the contact identity - guard let group = group else { - return cancel(withReason: .couldNotFindCorrespondingGroupV1) - } - - for contactCryptoId in cryptoIdsWithoutMessageIdentifierFromEngine { - - // We can send the message to the recipient if - // - she is part of the group - // - with at least one device - - // Determine the contact identity - - guard let contact = try PersistedObvContactIdentity.get( - contactCryptoId: contactCryptoId, - ownedIdentityCryptoId: ownedCryptoId, - whereOneToOneStatusIs: .any, - within: obvContext.context) else { - assertionFailure() - continue - } - - guard !contact.devices.isEmpty else { - // This may happen, when sending a message before a channel is created - continue - } - - guard group.contactIdentities.contains(contact) else { - assertionFailure() - continue - } - - // If we reach this point, we can send the message to the recipient indicated in the infos. - - contactCryptoIds.insert(contactCryptoId) - + guard let contact = try PersistedObvContactIdentity.get( + contactCryptoId: contactCryptoId, + ownedIdentityCryptoId: ownedCryptoId, + whereOneToOneStatusIs: .any, + within: obvContext.context) else { + assertionFailure() + continue } - case .groupV2(withGroup: let group): - - guard let group = group else { - return cancel(withReason: .couldNotFindCorrespondingGroupV2) + guard !contact.devices.isEmpty else { + // This may happen, when sending a message before a channel is created + continue } - for contactCryptoId in cryptoIdsWithoutMessageIdentifierFromEngine { - - // We can send the message to the recipient if - // - she is part of the group - // - she is not pending - // - with at least one device - - // Determine the contact identity - - guard let contact = try PersistedObvContactIdentity.get( - contactCryptoId: contactCryptoId, - ownedIdentityCryptoId: ownedCryptoId, - whereOneToOneStatusIs: .any, - within: obvContext.context) else { - // Can happen when a recipient is a pending member who is not a contact yet - continue - } - - guard !contact.devices.isEmpty else { - // This may happen, when sending a message before a channel is created - continue - } - - // Make sure the contact is a non-pending member of the group - - guard let member = group.otherMembers.first(where: { $0.identity == contactCryptoId.getIdentity() }) else { - assertionFailure() - continue - } - - guard !member.isPending else { - continue - } - - // If we reach this point, we can send the message to the recipient indicated in the infos. - - contactCryptoIds.insert(contactCryptoId) - + guard group.contactIdentities.contains(contact) else { + assertionFailure() + continue } + // If we reach this point, we can send the message to the recipient indicated in the infos. + + contactCryptoIds.insert(contactCryptoId) + } - // Construct the return receipts, payload, etc. + case .groupV2(withGroup: let group): - let returnReceiptElements: (nonce: Data, key: Data) - let messagePayload: Data - let attachmentsToSend: [ObvAttachmentToSend] - do { + guard let group = group else { + return cancel(withReason: .couldNotFindCorrespondingGroupV2) + } + + for contactCryptoId in cryptoIdsWithoutMessageIdentifierFromEngine { + + // We can send the message to the recipient if + // - she is part of the group + // - she is not pending + // - with at least one device - do { - guard let messageJSON = persistedMessageSent.toJSON() else { - return cancel(withReason: .couldNotTurnPersistedMessageSentIntoAMessageJSON) - } - returnReceiptElements = obvEngine.generateReturnReceiptElements() - let returnReceiptJSON = ReturnReceiptJSON(returnReceiptElements: returnReceiptElements) - messagePayload = try PersistedItemJSON(messageJSON: messageJSON, returnReceiptJSON: returnReceiptJSON).jsonEncode() - } catch { - return cancel(withReason: .encodingError(error: error)) + // Determine the contact identity + + guard let contact = try PersistedObvContactIdentity.get( + contactCryptoId: contactCryptoId, + ownedIdentityCryptoId: ownedCryptoId, + whereOneToOneStatusIs: .any, + within: obvContext.context) else { + // Can happen when a recipient is a pending member who is not a contact yet + continue + } + + guard !contact.devices.isEmpty else { + // This may happen, when sending a message before a channel is created + continue } - // For each the of fyles of the SendMessageToProcess, we create a ObvAttachmentToSend + // Make sure the contact is a non-pending member of the group - do { - attachmentsToSend = try persistedMessageSent.fyleMessageJoinWithStatuses.compactMap { - guard let metadata = try $0.getFyleMetadata()?.jsonEncode() else { return nil } - guard let fyle = $0.fyle else { return nil } - guard let totalUnitCount = fyle.getFileSize() else { return nil } - return ObvAttachmentToSend(fileURL: fyle.url, - deleteAfterSend: false, - totalUnitCount: Int(totalUnitCount), - metadata: metadata) - } - } catch { - return cancel(withReason: .couldNotCreateAnObvAttachmentToSendFromASentFyleMessageJoinWithStatus) + guard let member = group.otherMembers.first(where: { $0.identity == contactCryptoId.getIdentity() }) else { + assertionFailure() + continue } + guard !member.isPending else { + continue + } + + // If we reach this point, we can send the message to the recipient indicated in the infos. + + contactCryptoIds.insert(contactCryptoId) + } - - let extendedPayload: Data? - if let extendedPayloadProvider = extendedPayloadProvider { - assert(extendedPayloadProvider.isFinished) - extendedPayload = extendedPayloadProvider.extendedPayload - } else { - extendedPayload = nil - } - - // Post the message + } + + // Construct the return receipts, payload, etc. + + let returnReceiptElements: (nonce: Data, key: Data) + let messagePayload: Data + let attachmentsToSend: [ObvAttachmentToSend] + do { - let messageIdentifierForContactToWhichTheMessageWasSent: [ObvCryptoId: Data] - if !contactCryptoIds.isEmpty { - do { - messageIdentifierForContactToWhichTheMessageWasSent = - try obvEngine.post(messagePayload: messagePayload, - extendedPayload: extendedPayload, - withUserContent: true, - isVoipMessageForStartingCall: false, - attachmentsToSend: attachmentsToSend, - toContactIdentitiesWithCryptoId: contactCryptoIds, - ofOwnedIdentityWithCryptoId: ownedCryptoId, - completionHandler: completionHandler) - } catch { - return cancel(withReason: .couldNotPostMessageWithinEngine) + do { + guard let messageJSON = persistedMessageSent.toJSON() else { + return cancel(withReason: .couldNotTurnPersistedMessageSentIntoAMessageJSON) } - } else { - messageIdentifierForContactToWhichTheMessageWasSent = [:] - completionHandler?() + returnReceiptElements = obvEngine.generateReturnReceiptElements() + let returnReceiptJSON = ReturnReceiptJSON(returnReceiptElements: returnReceiptElements) + messagePayload = try PersistedItemJSON(messageJSON: messageJSON, returnReceiptJSON: returnReceiptJSON).jsonEncode() + } catch { + return cancel(withReason: .encodingError(error: error)) } - // The engine returned a array containing all the contacts to which it could send the message. - // We use this array generated by the engine in order to update the appropriate PersistedMessageSentRecipientInfos. + // For each the of fyles of the SendMessageToProcess, we create a ObvAttachmentToSend - for recipientInfos in persistedMessageSent.unsortedRecipientsInfos { - if let messageIdentifierFromEngine = messageIdentifierForContactToWhichTheMessageWasSent[recipientInfos.recipientCryptoId] { - os_log("🆗 Setting messageIdentifierFromEngine %{public}@ within recipientInfos", log: log, type: .info, messageIdentifierFromEngine.hexString()) - recipientInfos.setMessageIdentifierFromEngine(to: messageIdentifierFromEngine, andReturnReceiptElementsTo: returnReceiptElements) + do { + attachmentsToSend = try persistedMessageSent.fyleMessageJoinWithStatuses.compactMap { + guard let metadata = try $0.getFyleMetadata()?.jsonEncode() else { return nil } + guard let fyle = $0.fyle else { return nil } + guard let totalUnitCount = fyle.getFileSize() else { return nil } + return ObvAttachmentToSend(fileURL: fyle.url, + deleteAfterSend: false, + totalUnitCount: Int(totalUnitCount), + metadata: metadata) } + } catch { + return cancel(withReason: .couldNotCreateAnObvAttachmentToSendFromASentFyleMessageJoinWithStatus) } - - // Make a donation as soon as the message is saved - - if #available(iOS 14.0, *) { - do { - let persistedMessageSentStruct = try persistedMessageSent.toStruct() - let infos = SentMessageIntentInfos(messageSent: persistedMessageSentStruct, - urlForStoringPNGThumbnail: nil, - thumbnailPhotoSide: IntentManagerUtils.thumbnailPhotoSide) - let intent = IntentManagerUtils.getSendMessageIntentForMessageSent(infos: infos) - try obvContext.addContextDidSaveCompletionHandler { error in - if let error { assertionFailure(error.localizedDescription); return } - Task { - await IntentManagerUtils.makeDonation(discussionKind: persistedMessageSentStruct.discussionKind, - intent: intent, - direction: .outgoing) - } - } - } catch { - // In production, this operation should not fail because we could not make a donation - assertionFailure(error.localizedDescription) + + } + + + let extendedPayload: Data? + if let extendedPayloadProvider = extendedPayloadProvider { + assert(extendedPayloadProvider.isFinished) + extendedPayload = extendedPayloadProvider.extendedPayload + } else { + extendedPayload = nil + } + + // Post the message + + let messageIdentifierForContactToWhichTheMessageWasSent: [ObvCryptoId: Data] + // We do not propagate a read once message to our other owned devices + let finalAlsoPostToOtherOwnedDevices = alsoPostToOtherOwnedDevices && !isPersistedMessageSentReadOnce + if !contactCryptoIds.isEmpty || finalAlsoPostToOtherOwnedDevices { + do { + messageIdentifierForContactToWhichTheMessageWasSent = + try obvEngine.post(messagePayload: messagePayload, + extendedPayload: extendedPayload, + withUserContent: true, + isVoipMessageForStartingCall: false, + attachmentsToSend: attachmentsToSend, + toContactIdentitiesWithCryptoId: contactCryptoIds, + ofOwnedIdentityWithCryptoId: ownedCryptoId, + alsoPostToOtherOwnedDevices: finalAlsoPostToOtherOwnedDevices, + completionHandler: completionHandler) + } catch { + return cancel(withReason: .couldNotPostMessageWithinEngine) + } + } else { + messageIdentifierForContactToWhichTheMessageWasSent = [:] + completionHandler?() + } + + // The engine returned a array containing all the contacts to which it could send the message. + // We use this array generated by the engine in order to update the appropriate PersistedMessageSentRecipientInfos. + + for recipientInfos in persistedMessageSent.unsortedRecipientsInfos { + if let messageIdentifierFromEngine = messageIdentifierForContactToWhichTheMessageWasSent[recipientInfos.recipientCryptoId] { + os_log("🆗 Setting messageIdentifierFromEngine %{public}@ within recipientInfos", log: log, type: .info, messageIdentifierFromEngine.hexString()) + recipientInfos.setMessageIdentifierFromEngine(to: messageIdentifierFromEngine, andReturnReceiptElementsTo: returnReceiptElements) + } + } + + // Make a donation as soon as the message is saved + + do { + let persistedMessageSentStruct = try persistedMessageSent.toStruct() + let infos = SentMessageIntentInfos(messageSent: persistedMessageSentStruct, + urlForStoringPNGThumbnail: nil, + thumbnailPhotoSide: IntentManagerUtils.thumbnailPhotoSide) + let intent = IntentManagerUtils.getSendMessageIntentForMessageSent(infos: infos) + try obvContext.addContextDidSaveCompletionHandler { error in + if let error { assertionFailure(error.localizedDescription); return } + Task { + await IntentManagerUtils.makeDonation(discussionKind: persistedMessageSentStruct.discussionKind, + intent: intent, + direction: .outgoing) } } - } catch { - return cancel(withReason: .coreDataError(error: error)) + // In production, this operation should not fail because we could not make a donation + assertionFailure(error.localizedDescription) } - - } // end of obvContext.performAndWait + + } catch { + return cancel(withReason: .coreDataError(error: error)) + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SetTimestampAllAttachmentsSentIfPossibleOfPersistedMessageSentRecipientInfosOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SetTimestampAllAttachmentsSentIfPossibleOfPersistedMessageSentRecipientInfosOperation.swift index 1a78df7c..203ede2a 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SetTimestampAllAttachmentsSentIfPossibleOfPersistedMessageSentRecipientInfosOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SetTimestampAllAttachmentsSentIfPossibleOfPersistedMessageSentRecipientInfosOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -39,35 +39,27 @@ final class SetTimestampAllAttachmentsSentIfPossibleOfPersistedMessageSentRecipi super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { - do { + for messageIdentifierFromEngine in messageIdentifiersFromEngine { - for messageIdentifierFromEngine in messageIdentifiersFromEngine { - - let infos = try PersistedMessageSentRecipientInfos.getAllPersistedMessageSentRecipientInfos(messageIdentifierFromEngine: messageIdentifierFromEngine, ownedCryptoId: ownedCryptoId, within: obvContext.context) - guard !infos.isEmpty else { - continue - } - - for info in infos { - info.setTimestampAllAttachmentsSentIfPossible() - } - + let infos = try PersistedMessageSentRecipientInfos.getAllPersistedMessageSentRecipientInfos(messageIdentifierFromEngine: messageIdentifierFromEngine, ownedCryptoId: ownedCryptoId, within: obvContext.context) + guard !infos.isEmpty else { + continue } - - } catch { - return cancel(withReason: .coreDataError(error: error)) + + for info in infos { + info.setTimestampAllAttachmentsSentIfPossible() + } + } - + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SetTimestampMessageSentOfPersistedMessageSentRecipientInfos.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SetTimestampMessageSentOfPersistedMessageSentRecipientInfos.swift index 7c4845a0..54b9c04d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SetTimestampMessageSentOfPersistedMessageSentRecipientInfos.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SetTimestampMessageSentOfPersistedMessageSentRecipientInfos.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -38,36 +38,28 @@ final class SetTimestampMessageSentOfPersistedMessageSentRecipientInfosOperation super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { + do { - do { + for (messageIdentifierFromEngine, timestampFromServer) in messageIdentifierFromEngineAndTimestampFromServer { - for (messageIdentifierFromEngine, timestampFromServer) in messageIdentifierFromEngineAndTimestampFromServer { - - let infos = try PersistedMessageSentRecipientInfos.getAllPersistedMessageSentRecipientInfosWithoutTimestampDeliveredAndMatching(messageIdentifierFromEngine: messageIdentifierFromEngine, ownedCryptoId: ownedCryptoId, within: obvContext.context) - - // Note that the infos list may be empty for that messageIdentifierFromEngine and owned identity. - // Since we now (2022-02-24) also filter out infos that already have a timestampMessageSent, this is not an issue. - - infos.forEach { - $0.setTimestampMessageSent(to: timestampFromServer) - } - + let infos = try PersistedMessageSentRecipientInfos.getAllPersistedMessageSentRecipientInfosWithoutTimestampDeliveredAndMatching(messageIdentifierFromEngine: messageIdentifierFromEngine, ownedCryptoId: ownedCryptoId, within: obvContext.context) + + // Note that the infos list may be empty for that messageIdentifierFromEngine and owned identity. + // Since we now (2022-02-24) also filter out infos that already have a timestampMessageSent, this is not an issue. + + infos.forEach { + $0.setTimestampMessageSent(to: timestampFromServer) } - - } catch { - return cancel(withReason: .coreDataError(error: error)) } - + + + } catch { + return cancel(withReason: .coreDataError(error: error)) } - + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SynchronizeOneToOneDiscussionTitlesWithContactNameOperation.swift.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SynchronizeOneToOneDiscussionTitlesWithContactNameOperation.swift.swift index 9ecf70a3..434c975c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SynchronizeOneToOneDiscussionTitlesWithContactNameOperation.swift.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/SynchronizeOneToOneDiscussionTitlesWithContactNameOperation.swift.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,36 +21,30 @@ import Foundation import OlvidUtils import os.log import ObvUICoreData +import CoreData final class SynchronizeOneToOneDiscussionTitlesWithContactNameOperation: ContextualOperationWithSpecificReasonForCancel { private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SynchronizeOneToOneDiscussionTitlesWithContactNameOperation.self)) - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - let ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) - for ownedIdentity in ownedIdentities { - ownedIdentity.contacts.forEach { contact in - do { - try contact.resetOneToOneDiscussionTitle() - } catch { - os_log("One of the one2one discussion title could not be reset", log: log, type: .fault) - assertionFailure() - // Continue anyway - } + do { + let ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: obvContext.context) + for ownedIdentity in ownedIdentities { + ownedIdentity.contacts.forEach { contact in + do { + try contact.resetOneToOneDiscussionTitle() + } catch { + os_log("One of the one2one discussion title could not be reset", log: log, type: .fault) + assertionFailure() + // Continue anyway } } - } catch { - return cancel(withReason: .coreDataError(error: error)) } - + } catch { + return cancel(withReason: .coreDataError(error: error)) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateDiscussionLocalConfigurationOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateDiscussionLocalConfigurationOperation.swift index 9c3bfa28..8bc644e0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateDiscussionLocalConfigurationOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateDiscussionLocalConfigurationOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,98 +23,165 @@ import os.log import OlvidUtils import UIKit import ObvUICoreData +import ObvEngine +import ObvTypes +import ObvCrypto -final class UpdateDiscussionLocalConfigurationOperation: ContextualOperationWithSpecificReasonForCancel { + +final class UpdateDiscussionLocalConfigurationOperation: ContextualOperationWithSpecificReasonForCancel { private let value: PersistedDiscussionLocalConfigurationValue private let input: Input + private let makeSyncAtomRequest: Bool + private weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? + fileprivate static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: UpdateDiscussionLocalConfigurationOperation.self)) enum Input { case configurationObjectID(TypeSafeManagedObjectID) case discussionPermanentID(ObvManagedObjectPermanentID) + case discussionWithOneToOneContact(contactIdentifier: ObvContactIdentifier) + case groupV1Discussion(ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV1Identifier) + case groupV2Discussion(ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV2Identifier) } - init(value: PersistedDiscussionLocalConfigurationValue, localConfigurationObjectID: TypeSafeManagedObjectID) { + init(value: PersistedDiscussionLocalConfigurationValue, input: Input, makeSyncAtomRequest: Bool, syncAtomRequestDelegate: ObvSyncAtomRequestDelegate?) { self.value = value - self.input = .configurationObjectID(localConfigurationObjectID) + self.input = input + self.makeSyncAtomRequest = makeSyncAtomRequest + self.syncAtomRequestDelegate = syncAtomRequestDelegate super.init() } - init(value: PersistedDiscussionLocalConfigurationValue, discussionPermanentID: ObvManagedObjectPermanentID) { - self.value = value - self.input = .discussionPermanentID(discussionPermanentID) - super.init() - } - - override func main() { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - let localConfiguration: PersistedDiscussionLocalConfiguration - switch input { - case .configurationObjectID(let objectID): - guard let _localConfiguration = try PersistedDiscussionLocalConfiguration.get(with: objectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDiscussionLocalConfiguration) - } - localConfiguration = _localConfiguration - case .discussionPermanentID(let discussionPermanentID): - guard let discussion = try? PersistedDiscussion.getManagedObject(withPermanentID: discussionPermanentID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDiscussionLocalConfiguration) - } - localConfiguration = discussion.localConfiguration + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + let localConfiguration: PersistedDiscussionLocalConfiguration + switch input { + case .configurationObjectID(let objectID): + guard let _localConfiguration = try PersistedDiscussionLocalConfiguration.get(with: objectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDiscussionLocalConfiguration) } - - localConfiguration.update(with: value) - - let value = self.value - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - if case .muteNotificationsEndDate = value, - let expiration = localConfiguration.currentMuteNotificationsEndDate { - // This is catched by the MuteDiscussionManager in order to schedule a BG operation allowing to remove the mute - ObvMessengerInternalNotification.newMuteExpiration(expirationDate: expiration) - .postOnDispatchQueue() + localConfiguration = _localConfiguration + case .discussionPermanentID(let discussionPermanentID): + guard let discussion = try? PersistedDiscussion.getManagedObject(withPermanentID: discussionPermanentID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDiscussionLocalConfiguration) + } + localConfiguration = discussion.localConfiguration + case .discussionWithOneToOneContact(contactIdentifier: let contactIdentifier): + guard let contact = try PersistedObvContactIdentity.get(persisted: contactIdentifier, whereOneToOneStatusIs: .oneToOne, within: obvContext.context) else { + return cancel(withReason: .couldNotFindContactInDatabase) + } + guard let oneToOneDiscussion = contact.oneToOneDiscussion else { + return cancel(withReason: .couldNotFindDiscussionInDatabase) + } + localConfiguration = oneToOneDiscussion.localConfiguration + case .groupV1Discussion(ownedCryptoId: let ownedCryptoId, groupIdentifier: let groupIdentifier): + guard let groupV1 = try PersistedContactGroup.getContactGroup(groupIdentifier: groupIdentifier, ownedCryptoId: ownedCryptoId, within: obvContext.context) else { + return cancel(withReason: .couldNotFindGroupInDatabase) + } + localConfiguration = groupV1.discussion.localConfiguration + case .groupV2Discussion(ownedCryptoId: let ownedCryptoId, groupIdentifier: let groupIdentifier): + guard let groupV2 = try PersistedGroupV2.get(ownIdentity: ownedCryptoId, appGroupIdentifier: groupIdentifier, within: obvContext.context) else { + return cancel(withReason: .couldNotFindGroupInDatabase) + } + guard let groupV2Discussion = groupV2.discussion else { + return cancel(withReason: .couldNotFindDiscussionInDatabase) + } + localConfiguration = groupV2Discussion.localConfiguration + } + + let doSendReadReceiptBeforeUpdate = localConfiguration.doSendReadReceipt + + localConfiguration.update(with: value) + + let doSendReadReceiptAfterUpdate = localConfiguration.doSendReadReceipt + let doSendReadReceiptWasUpdated = doSendReadReceiptBeforeUpdate != doSendReadReceiptAfterUpdate + + let value = self.value + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + if case .muteNotificationsEndDate = value, + let expiration = localConfiguration.currentMuteNotificationsEndDate { + // This is catched by the MuteDiscussionManager in order to schedule a BG operation allowing to remove the mute + ObvMessengerInternalNotification.newMuteExpiration(expirationDate: expiration) + .postOnDispatchQueue() + } + } + + if makeSyncAtomRequest && doSendReadReceiptWasUpdated { + assert(self.syncAtomRequestDelegate != nil) + if let syncAtomRequestDelegate = self.syncAtomRequestDelegate { + guard let discussion = localConfiguration.discussion else { assertionFailure(); return } + guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId else { assertionFailure(); return } + let syncAtom: ObvSyncAtom + switch try? discussion.kind { + case .oneToOne(withContactIdentity: let contact): + guard let contact else { assertionFailure(); return } + syncAtom = .contactSendReadReceipt(contactCryptoId: contact.cryptoId, doSendReadReceipt: doSendReadReceiptAfterUpdate) + case .groupV1(withContactGroup: let groupV1): + guard let groupV1 else { assertionFailure(); return } + guard let groupId = try? groupV1.getGroupId() else { assertionFailure(); return } + syncAtom = .groupV1ReadReceipt(groupOwner: groupId.groupOwner, groupUid: groupId.groupUid, doSendReadReceipt: doSendReadReceiptAfterUpdate) + case .groupV2(withGroup: let groupV2): + guard let groupV2 else { assertionFailure(); return } + syncAtom = .groupV2ReadReceipt(groupIdentifier: groupV2.groupIdentifier, doSendReadReceipt: doSendReadReceiptAfterUpdate) + case .none: + assertionFailure() + return + } + try? obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + Task.detached { + await syncAtomRequestDelegate.requestPropagationToOtherOwnedDevices(of: syncAtom, for: ownedCryptoId) + } } } - - } catch(let error) { - return cancel(withReason: .coreDataError(error: error)) } + } catch(let error) { + return cancel(withReason: .coreDataError(error: error)) } + } -} - -enum UpdateDiscussionLocalConfigurationOperationReasonForCancel: LocalizedErrorWithLogType { - - case contextIsNil - case coreDataError(error: Error) - case couldNotFindDiscussionLocalConfiguration - - var logType: OSLogType { - switch self { - case .coreDataError, .contextIsNil: - return .fault - case .couldNotFindDiscussionLocalConfiguration: - return .error + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case contextIsNil + case coreDataError(error: Error) + case couldNotFindDiscussionLocalConfiguration + case couldNotFindContactInDatabase + case couldNotFindDiscussionInDatabase + case couldNotFindGroupInDatabase + + var logType: OSLogType { + switch self { + case .coreDataError, .contextIsNil, .couldNotFindContactInDatabase, .couldNotFindDiscussionInDatabase, .couldNotFindGroupInDatabase: + return .fault + case .couldNotFindDiscussionLocalConfiguration: + return .error + } } - } - var errorDescription: String? { - switch self { - case .contextIsNil: return "Context is nil" - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .couldNotFindDiscussionLocalConfiguration: - return "Could not find local configuration in database" + var errorDescription: String? { + switch self { + case .contextIsNil: return "Context is nil" + case .coreDataError(error: let error): + return "Core Data error: \(error.localizedDescription)" + case .couldNotFindDiscussionLocalConfiguration: + return "Could not find local configuration in database" + case .couldNotFindContactInDatabase: + return "Could not find contact in database" + case .couldNotFindDiscussionInDatabase: + return "Could not find discussion in database" + case .couldNotFindGroupInDatabase: + return "Could not find group in database" + } } - } + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateDraftConfigurationOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateDraftConfigurationOperation.swift index c97a74ab..61f1d3ed 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateDraftConfigurationOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateDraftConfigurationOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -36,26 +36,22 @@ final class UpdateDraftConfigurationOperation: ContextualOperationWithSpecificRe super.init() } - override func main() { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDraft) - } - draft.update(with: value) - let draftObjectID = self.draftObjectID - try obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - ObvMessengerInternalNotification.draftExpirationWasBeenUpdated(persistedDraftObjectID: draftObjectID).postOnDispatchQueue() - } - } catch(let error) { - return cancel(withReason: .coreDataError(error: error)) + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + guard let draft = try PersistedDraft.get(objectID: draftObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDraft) + } + draft.update(with: value) + let draftObjectID = self.draftObjectID + try obvContext.addContextDidSaveCompletionHandler { error in + guard error == nil else { return } + ObvMessengerInternalNotification.draftExpirationWasBeenUpdated(persistedDraftObjectID: draftObjectID).postOnDispatchQueue() } + } catch(let error) { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateNormalizedSearchKeyOnPersistedDiscussionsOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateNormalizedSearchKeyOnPersistedDiscussionsOperation.swift index deb42fd2..f6f80834 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateNormalizedSearchKeyOnPersistedDiscussionsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateNormalizedSearchKeyOnPersistedDiscussionsOperation.swift @@ -21,6 +21,7 @@ import Foundation import OlvidUtils import ObvTypes import ObvUICoreData +import CoreData final class UpdateNormalizedSearchKeyOnPersistedDiscussionsOperation: ContextualOperationWithSpecificReasonForCancel { @@ -32,18 +33,14 @@ final class UpdateNormalizedSearchKeyOnPersistedDiscussionsOperation: Contextual super.init() } - override func main() { - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - do { - try PersistedDiscussion.updateNormalizedSearchKeysForOwnedIdentity(ownedIdentity, within: obvContext.context) - } catch { - return cancel(withReason: .coreDataError(error: error)) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + + do { + try PersistedDiscussion.updateNormalizedSearchKeysForOwnedIdentity(ownedIdentity, within: obvContext.context) + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateReactionsOfMessageOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateReactionsOfMessageOperation.swift deleted file mode 100644 index 43555525..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/UpdateReactionsOfMessageOperation.swift +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import CoreData -import os.log -import ObvEngine -import ObvTypes -import OlvidUtils -import ObvCrypto -import ObvUICoreData - - - -fileprivate enum UpdateReactionsOfMessageOperationInput { - - case contact(emoji: String?, - messageReference: MessageReferenceJSON, - groupIdentifier: GroupIdentifier?, - contactIdentity: ObvContactIdentity, - addPendingReactionIfMessageCannotBeFound: Bool) - case owned(emoji: String?, - message: TypeSafeManagedObjectID) - - var emoji: String? { - switch self { - case .contact(let emoji, _, _, _, _), - .owned(let emoji, _): - return emoji - } - } -} - -final class UpdateReactionsOfMessageOperation: ContextualOperationWithSpecificReasonForCancel { - - private let input: UpdateReactionsOfMessageOperationInput - private let reactionTimestamp: Date - - /// Use this initializer when updating the reactions of a message with a reaction made by an owned identity. - init(emoji: String?, messageObjectID: TypeSafeManagedObjectID) { - self.input = .owned(emoji: emoji, message: messageObjectID) - self.reactionTimestamp = Date() - super.init() - } - - init(emoji: String?, - messageReference: MessageReferenceJSON, - groupIdentifier: GroupIdentifier?, - contactIdentity: ObvContactIdentity, - reactionTimestamp: Date, - addPendingReactionIfMessageCannotBeFound: Bool) { - self.input = .contact(emoji: emoji, - messageReference: messageReference, - groupIdentifier: groupIdentifier, - contactIdentity: contactIdentity, - addPendingReactionIfMessageCannotBeFound: addPendingReactionIfMessageCannotBeFound) - self.reactionTimestamp = reactionTimestamp - super.init() - } - - init(contactIdentity: ObvContactIdentity, reactionJSON: ReactionJSON, reactionTimestamp: Date, addPendingReactionIfMessageCannotBeFound: Bool) { - self.input = .contact(emoji: reactionJSON.emoji, - messageReference: reactionJSON.messageReference, - groupIdentifier: reactionJSON.groupIdentifier, - contactIdentity: contactIdentity, - addPendingReactionIfMessageCannotBeFound: addPendingReactionIfMessageCannotBeFound) - self.reactionTimestamp = reactionTimestamp - super.init() - } - - - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } - - obvContext.performAndWait { - - let message: PersistedMessage? - - do { - - switch input { - - case .contact(let emoji, let messageReference, let groupIdentifier, let contactIdentity, let addPendingReactionIfMessageCannotBeFound): - - // Get the contact and the owned identities - - guard let persistedContactIdentity = try PersistedObvContactIdentity.get(persisted: contactIdentity, whereOneToOneStatusIs: .any, within: obvContext.context) else { - return cancel(withReason: .couldNotFindContact) - } - - guard let ownedIdentity = persistedContactIdentity.ownedIdentity else { - return cancel(withReason: .couldNotFindOwnedIdentity) - } - - // Recover the appropriate discussion - - let discussion: PersistedDiscussion - switch groupIdentifier { - case .none: - guard let oneToOneDiscussion = persistedContactIdentity.oneToOneDiscussion else { - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = oneToOneDiscussion - case .groupV1(groupV1Identifier: let groupV1Identifier): - guard let group = try PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedIdentity: ownedIdentity) else { - return cancel(withReason: .couldNotFindGroupDiscussion) - } - discussion = group.discussion - case .groupV2(groupV2Identifier: let groupV2Identifier): - guard let group = try PersistedGroupV2.get(ownIdentity: ownedIdentity, appGroupIdentifier: groupV2Identifier) else { - return cancel(withReason: .couldNotFindGroupDiscussion) - } - guard let groupDiscussion = group.discussion else { - return cancel(withReason: .couldNotFindDiscussion) - } - discussion = groupDiscussion - } - - // Get the message on which we will add a reaction - - if let sentMessage = try PersistedMessageSent.get( - senderSequenceNumber: messageReference.senderSequenceNumber, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - ownedIdentity: messageReference.senderIdentifier, - discussion: discussion) { - message = sentMessage - } else if let receivedMessage = try PersistedMessageReceived.get( - senderSequenceNumber: messageReference.senderSequenceNumber, - senderThreadIdentifier: messageReference.senderThreadIdentifier, - contactIdentity: messageReference.senderIdentifier, - discussion: discussion) { - message = receivedMessage - } else { - message = nil - } - - // If a message was found, we can update its reactions. If not, we create a pending reaction if appropriate. - - if let message { - try message.setReactionFromContact(persistedContactIdentity, withEmoji: emoji, reactionTimestamp: reactionTimestamp) - } else if addPendingReactionIfMessageCannotBeFound { - try PendingMessageReaction.createPendingMessageReactionIfAppropriate( - emoji: emoji, - messageReference: messageReference, - serverTimestamp: reactionTimestamp, - discussion: discussion) - } else { - return cancel(withReason: .couldNotFindMessage) - } - - case .owned(emoji: let emoji, message: let messageObjectID): - guard let _message = try PersistedMessage.get(with: messageObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindMessage) - } - - try _message.setReactionFromOwnedIdentity(withEmoji: emoji, reactionTimestamp: reactionTimestamp) - - message = _message - - } - - } catch { - return cancel(withReason: .coreDataError(error: error)) - } - - // If the message was registered in the view context, we refresh it - - if let messageObjectID = message?.typedObjectID { - try? obvContext.addContextDidSaveCompletionHandler { error in - guard error == nil else { return } - ObvStack.shared.viewContext.perform { - guard let message = ObvStack.shared.viewContext.registeredObject(for: messageObjectID.objectID) else { return } - ObvStack.shared.viewContext.refresh(message, mergeChanges: false) - } - } - } - } - } - -} - -enum UpdateReactionsOperationReasonForCancel: LocalizedErrorWithLogType { - case coreDataError(error: Error) - case contextIsNil - case couldNotFindContact - case couldNotFindOwnedIdentity - case couldNotFindGroupDiscussion - case couldNotFindMessage - case invalidEmoji - case couldNotFindDiscussion - - var logType: OSLogType { .fault } - - var errorDescription: String? { - switch self { - case .coreDataError(error: let error): - return "Core Data error: \(error.localizedDescription)" - case .contextIsNil: - return "The context is not set" - case .couldNotFindOwnedIdentity: - return "Could not find owned identity" - case .couldNotFindContact: - return "Could not find the contact identity" - case .couldNotFindGroupDiscussion: - return "Could not find group discussion" - case .couldNotFindMessage: - return "Could not find message to react" - case .invalidEmoji: - return "Invalid emoji" - case .couldNotFindDiscussion: - return "Could not find discussion" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/PersistedDiscussionsUpdatesCoordinator.swift b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/PersistedDiscussionsUpdatesCoordinator.swift index c503db03..cf393e4c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/PersistedDiscussionsUpdatesCoordinator.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/PersistedDiscussionsUpdatesCoordinator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,6 +26,7 @@ import ObvCrypto import OlvidUtils import ObvTypes import ObvUICoreData +import ObvSettings final class PersistedDiscussionsUpdatesCoordinator { @@ -44,14 +45,17 @@ final class PersistedDiscussionsUpdatesCoordinator { queue.name = "PersistedDiscussionsUpdatesCoordinator queue for long running tasks" return queue }() + private let messagesKeptForLaterManager: MessagesKeptForLaterManager private let userDefaults = UserDefaults(suiteName: ObvMessengerConstants.appGroupIdentifier) private var screenCaptureDetector: ScreenCaptureDetector? + weak var syncAtomRequestDelegate: ObvSyncAtomRequestDelegate? - init(obvEngine: ObvEngine, coordinatorsQueue: OperationQueue, queueForComposedOperations: OperationQueue) { + init(obvEngine: ObvEngine, coordinatorsQueue: OperationQueue, queueForComposedOperations: OperationQueue, messagesKeptForLaterManager: MessagesKeptForLaterManager) { self.obvEngine = obvEngine self.coordinatorsQueue = coordinatorsQueue self.queueForComposedOperations = queueForComposedOperations + self.messagesKeptForLaterManager = messagesKeptForLaterManager listenToNotifications() Task { screenCaptureDetector = await ScreenCaptureDetector() @@ -79,9 +83,7 @@ final class PersistedDiscussionsUpdatesCoordinator { // No need to delete orphaned PersistedMessageTimestampedMetadata, i.e., without message), they are cascade deleted bootstrapMessagesToBeWiped(preserveReceivedMessages: true) bootstrapWipeAllMessagesThatExpiredEarlierThanNow() - deleteOrphanedExpirations() - deleteOldOrOrphanedRemoteDeleteAndEditRequests() - deleteOldOrOrphanedPendingReactions() + deleteOldOrOrphanedDatabaseEntries() cleanExpiredMuteNotificationsSetting() cleanOrphanedPersistedMessageTimestampedMetadata() synchronizeAllOneToOneDiscussionTitlesWithContactNameOperation() @@ -93,7 +95,7 @@ final class PersistedDiscussionsUpdatesCoordinator { // The following bootstrap methods are always called, not only the first time the app appears on screen - bootstrapMessagesDecryptedWithinNotificationExtension() + await bootstrapMessagesDecryptedWithinNotificationExtension() wipeReadOnceAndLimitedVisibilityMessagesThatTheShareExtensionDidNotHaveTimeToWipe() } @@ -179,13 +181,13 @@ final class PersistedDiscussionsUpdatesCoordinator { os_log("☎️ PersistedDiscussionsUpdatesCoordinator is listening to notifications", log: Self.log, type: .info) } - // Internal notifications + // ObvMessengerCoreDataNotification observationTokens.append(contentsOf: [ ObvMessengerCoreDataNotification.observeNewDraftToSend() { [weak self] draftPermanentID in self?.processNewDraftToSendNotification(draftPermanentID: draftPermanentID) }, - ObvMessengerCoreDataNotification.observeNewPersistedObvContactDevice() { [weak self] (contactDeviceObjectID, _) in + ObvMessengerCoreDataNotification.observeASecureChannelWithContactDeviceWasJustCreated { [weak self] contactDeviceObjectID in self?.sendAppropriateDiscussionSharedConfigurationsToContact(input: .contactDevice(contactDeviceObjectID: contactDeviceObjectID), sendSharedConfigOfOneToOneDiscussion: true) self?.processUnprocessedRecipientInfosThatCanNowBeProcessed() }, @@ -195,52 +197,56 @@ final class PersistedDiscussionsUpdatesCoordinator { ObvMessengerCoreDataNotification.observePersistedMessageReceivedWasDeleted() { [weak self] (_, messageIdentifierFromEngine, ownedCryptoId, _, _) in self?.processPersistedMessageReceivedWasDeletedNotification(messageIdentifierFromEngine: messageIdentifierFromEngine, ownedCryptoId: ownedCryptoId) }, - ObvMessengerInternalNotification.observeUserRequestedDeletionOfPersistedMessage() { [weak self] (ownedCryptoId, persistedMessageObjectID, deletionType) in - self?.processUserRequestedDeletionOfPersistedMessageNotification(ownedCryptoId: ownedCryptoId, persistedMessageObjectID: persistedMessageObjectID, deletionType: deletionType) + ObvMessengerCoreDataNotification.observePersistedMessageReceivedWasRead { (persistedMessageReceivedObjectID) in + Task { [weak self] in await self?.processPersistedMessageReceivedWasReadNotification(persistedMessageReceivedObjectID: persistedMessageReceivedObjectID) } }, - ObvMessengerInternalNotification.observeUserRequestedDeletionOfPersistedDiscussion() { [weak self] (persistedDiscussionObjectID, deletionType, completionHandler) in - self?.processUserRequestedDeletionOfPersistedDiscussion(persistedDiscussionObjectID: persistedDiscussionObjectID, deletionType: deletionType, completionHandler: completionHandler) + ObvMessengerCoreDataNotification.observeReceivedFyleJoinHasBeenMarkAsOpened { (receivedFyleJoinID) in + Task { [weak self] in await self?.processReceivedFyleJoinHasBeenMarkAsOpenedNotification(receivedFyleJoinID: receivedFyleJoinID) } }, - ObvMessengerInternalNotification.observeMessagesAreNotNewAnymore() { [weak self] persistedMessageObjectIDs in - self?.processMessagesAreNotNewAnymore(persistedMessageObjectIDs: persistedMessageObjectIDs) + ObvMessengerCoreDataNotification.observeAReadOncePersistedMessageSentWasSent { [weak self] (persistedMessageSentPermanentID, persistedDiscussionPermanentID) in + self?.processAReadOncePersistedMessageSentWasSentNotification(persistedMessageSentPermanentID: persistedMessageSentPermanentID, persistedDiscussionPermanentID: persistedDiscussionPermanentID) }, - ObvMessengerInternalNotification.observeNewObvMessageWasReceivedViaPushKitNotification { [weak self] (obvMessage) in - self?.processNewObvMessageWasReceivedViaPushKitNotification(obvMessage: obvMessage) + ObvMessengerCoreDataNotification.observePersistedContactWasDeleted { [weak self ] _, _ in + self?.processPersistedContactWasDeletedNotification() }, - ObvMessengerInternalNotification.observeNewWebRTCMessageToSend() { [weak self] (webrtcMessage, contactID, forStartingCall) in - self?.processNewWebRTCMessageToSendNotification(webrtcMessage: webrtcMessage, contactID: contactID, forStartingCall: forStartingCall) + ObvMessengerCoreDataNotification.observeADeliveredReturnReceiptShouldBeSentForAReceivedFyleMessageJoinWithStatus { [weak self] (returnReceipt, contactCryptoId, ownedCryptoId, messageIdentifierFromEngine, attachmentNumber) in + self?.processADeliveredReturnReceiptShouldBeSent(returnReceipt: returnReceipt, contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber) }, - ObvMessengerInternalNotification.observeNewCallLogItem() { [weak self] objectID in - self?.processNewCallLogItemNotification(objectID: objectID) + ObvMessengerCoreDataNotification.observeADeliveredReturnReceiptShouldBeSentForPersistedMessageReceived { [weak self] returnReceipt, contactCryptoId, ownedCryptoId, messageIdentifierFromEngine in + self?.processADeliveredReturnReceiptShouldBeSent(returnReceipt: returnReceipt, contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: nil) }, - ObvMessengerInternalNotification.observeWipeAllMessagesThatExpiredEarlierThanNow { [weak self] (launchedByBackgroundTask, completionHandler) in - self?.processWipeAllMessagesThatExpiredEarlierThanNow(launchedByBackgroundTask: launchedByBackgroundTask, completionHandler: completionHandler) + ObvMessengerCoreDataNotification.observePersistedObvOwnedIdentityWasDeleted { [weak self] in + self?.processPersistedObvOwnedIdentityWasDeleted() }, - ObvMessengerInternalNotification.observeCurrentUserActivityDidChange() { [weak self] (previousUserActivity, currentUserActivity) in - if let previousDiscussionPermanentID = previousUserActivity.discussionPermanentID, previousDiscussionPermanentID != currentUserActivity.discussionPermanentID { - self?.userLeftDiscussion(discussionPermanentID: previousDiscussionPermanentID) - } - if let currentDiscussionPermanentID = currentUserActivity.discussionPermanentID, currentDiscussionPermanentID != previousUserActivity.discussionPermanentID { - self?.userEnteredDiscussion(discussionPermanentID: currentDiscussionPermanentID) - } + ObvMessengerCoreDataNotification.observeAPersistedGroupV2MemberChangedFromPendingToNonPending { [weak self] contactObjectID in + self?.sendAppropriateDiscussionSharedConfigurationsToContact(input: .contact(contactObjectID: contactObjectID), sendSharedConfigOfOneToOneDiscussion: false) + self?.processUnprocessedRecipientInfosThatCanNowBeProcessed() }, - ObvMessengerInternalNotification.observeUserWantsToReadReceivedMessagesThatRequiresUserAction { [weak self] (persistedMessageObjectIDs) in - self?.processUserWantsToReadReceivedMessagesThatRequiresUserActionNotification(persistedMessageObjectIDs: persistedMessageObjectIDs) + ObvMessengerCoreDataNotification.observePersistedDiscussionWasInsertedOrReactivated { [weak self] ownedCryptoId, discussionIdentifier in + self?.processPersistedDiscussionWasInsertedOrReactivated(ownedCryptoId: ownedCryptoId, discussionIdentifier: discussionIdentifier) }, - ObvMessengerCoreDataNotification.observePersistedMessageReceivedWasRead { (persistedMessageReceivedObjectID) in - Task { [weak self] in await self?.processPersistedMessageReceivedWasReadNotification(persistedMessageReceivedObjectID: persistedMessageReceivedObjectID) } + ObvMessengerCoreDataNotification.observeAPersistedGroupV2WasInsertedInDatabase { [weak self] ownedCryptoId, groupIdentifier in + Task { [weak self] in await self?.processAPersistedGroupV2WasInsertedInDatabase(ownedCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier) } }, - ObvMessengerCoreDataNotification.observeReceivedFyleJoinHasBeenMarkAsOpened { (receivedFyleJoinID) in - Task { [weak self] in await self?.processReceivedFyleJoinHasBeenMarkAsOpenedNotification(receivedFyleJoinID: receivedFyleJoinID) } + ObvMessengerCoreDataNotification.observePersistedContactWasInserted { [weak self] _, ownedCryptoId, contactCryptoId in + Task { [weak self] in await self?.processPersistedContactWasInserted(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) } }, - ObvMessengerCoreDataNotification.observeAReadOncePersistedMessageSentWasSent { [weak self] (persistedMessageSentPermanentID, persistedDiscussionPermanentID) in - self?.processAReadOncePersistedMessageSentWasSentNotification(persistedMessageSentPermanentID: persistedMessageSentPermanentID, persistedDiscussionPermanentID: persistedDiscussionPermanentID) + ]) + + // Internal notifications (User requests) + + observationTokens.append(contentsOf: [ + ObvMessengerInternalNotification.observeUserRequestedDeletionOfPersistedMessage() { [weak self] (ownedCryptoId, persistedMessageObjectID, deletionType) in + self?.processUserRequestedDeletionOfPersistedMessageNotification(ownedCryptoId: ownedCryptoId, persistedMessageObjectID: persistedMessageObjectID, deletionType: deletionType) }, - ObvMessengerInternalNotification.observeUserWantsToSetAndShareNewDiscussionSharedExpirationConfiguration { [weak self] (persistedDiscussionObjectID, expirationJSON, ownedCryptoId) in - self?.processUserWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(persistedDiscussionObjectID: persistedDiscussionObjectID, expirationJSON: expirationJSON, ownedCryptoId: ownedCryptoId) + ObvMessengerInternalNotification.observeUserRequestedDeletionOfPersistedDiscussion() { [weak self] (ownedCryptoId, discussionObjectID, deletionType, completionHandler) in + self?.processUserRequestedDeletionOfPersistedDiscussion(ownedCryptoId: ownedCryptoId, discussionObjectID: discussionObjectID, deletionType: deletionType, completionHandler: completionHandler) }, - ObvMessengerCoreDataNotification.observeAnOldDiscussionSharedConfigurationWasReceived { [weak self] (persistedDiscussionObjectID) in - self?.processAnOldDiscussionSharedConfigurationWasReceivedNotification(persistedDiscussionObjectID: persistedDiscussionObjectID) + ObvMessengerInternalNotification.observeUserWantsToReadReceivedMessageThatRequiresUserAction { [weak self] (ownedCryptoId, discussionId, messageId) in + self?.processUserWantsToReadReceivedMessageThatRequiresUserActionNotification(ownedCryptoId: ownedCryptoId, discussionId: discussionId, messageId: messageId) + }, + ObvMessengerInternalNotification.observeUserWantsToSetAndShareNewDiscussionSharedExpirationConfiguration { [weak self] ownedCryptoId, discussionId, expirationJSON in + self?.processUserWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(ownedCryptoId: ownedCryptoId, discussionId: discussionId, expirationJSON: expirationJSON) }, ObvMessengerInternalNotification.observeUserWantsToUpdateDiscussionLocalConfiguration { [weak self] (value, localConfigurationObjectID) in self?.processUserWantsToUpdateDiscussionLocalConfigurationNotification(with: value, localConfigurationObjectID: localConfigurationObjectID) @@ -248,11 +254,8 @@ final class PersistedDiscussionsUpdatesCoordinator { ObvMessengerInternalNotification.observeUserWantsToUpdateLocalConfigurationOfDiscussion { [weak self] (value, discussionPermanentID, completionHandler) in self?.processUserWantsToUpdateLocalConfigurationOfDiscussionNotification(with: value, discussionPermanentID: discussionPermanentID, completionHandler: completionHandler) }, - ObvMessengerInternalNotification.observeApplyAllRetentionPoliciesNow { [weak self] (launchedByBackgroundTask, completionHandler) in - self?.processApplyAllRetentionPoliciesNowNotification(launchedByBackgroundTask: launchedByBackgroundTask, completionHandler: completionHandler) - }, - ObvMessengerInternalNotification.observeUserWantsToSendEditedVersionOfSentMessage { [weak self] (sentMessageObjectID, newTextBody) in - self?.processUserWantsToSendEditedVersionOfSentMessage(sentMessageObjectID: sentMessageObjectID, newTextBody: newTextBody) + ObvMessengerInternalNotification.observeUserWantsToSendEditedVersionOfSentMessage { [weak self] (ownedCryptoId, sentMessageObjectID, newTextBody) in + self?.processUserWantsToSendEditedVersionOfSentMessage(ownedCryptoId: ownedCryptoId, sentMessageObjectID: sentMessageObjectID, newTextBody: newTextBody) }, ObvMessengerInternalNotification.observeUserWantsToMarkAllMessagesAsNotNewWithinDiscussion { [weak self] (persistedDiscussionObjectID, completionHandler) in self?.processUserWantsToMarkAllMessagesAsNotNewWithinDiscussionNotification(persistedDiscussionObjectID: persistedDiscussionObjectID, completionHandler: completionHandler) @@ -260,23 +263,8 @@ final class PersistedDiscussionsUpdatesCoordinator { ObvMessengerInternalNotification.observeUserWantsToRemoveDraftFyleJoin { [weak self] (draftFyleJoinObjectID) in self?.processUserWantsToRemoveDraftFyleJoinNotification(draftFyleJoinObjectID: draftFyleJoinObjectID) }, - ObvMessengerCoreDataNotification.observePersistedContactWasDeleted { [weak self ] _, _ in - self?.processPersistedContactWasDeletedNotification() - }, - NewSingleDiscussionNotification.observeInsertDiscussionIsEndToEndEncryptedSystemMessageIntoDiscussionIfEmpty { [weak self] (discussionObjectID, markAsRead) in - self?.processInsertDiscussionIsEndToEndEncryptedSystemMessageIntoDiscussionIfEmpty(discussionObjectID: discussionObjectID, markAsRead: markAsRead) - }, - ObvMessengerInternalNotification.observeUserWantsToUpdateReaction { [weak self] messageObjectID, emoji in - self?.processUserWantsToUpdateReaction(messageObjectID: messageObjectID, emoji: emoji) - }, - ObvMessengerInternalNotification.observeInsertDebugMessagesInAllExistingDiscussions { [weak self] in - self?.processInsertDebugMessagesInAllExistingDiscussions() - }, - ObvMessengerInternalNotification.observeCleanExpiredMuteNotficationsThatExpiredEarlierThanNow { [weak self] in - self?.cleanExpiredMuteNotificationsSetting() - }, ObvMessengerInternalNotification.observeUserRepliedToReceivedMessageWithinTheNotificationExtension { [weak self] contactPermanentID, messageIdentifierFromEngine, textBody, completionHandler in - self?.processUserRepliedToReceivedMessageWithinTheNotificationExtensionNotification(contactPermanentID: contactPermanentID, messageIdentifierFromEngine: messageIdentifierFromEngine, textBody: textBody, completionHandler: completionHandler) + Task { [weak self] in await self?.processUserRepliedToReceivedMessageWithinTheNotificationExtensionNotification(contactPermanentID: contactPermanentID, messageIdentifierFromEngine: messageIdentifierFromEngine, textBody: textBody, completionHandler: completionHandler) } }, ObvMessengerInternalNotification.observeUserRepliedToMissedCallWithinTheNotificationExtension { [weak self] discussionPermanentID, textBody, completionHandler in self?.processUserRepliedToMissedCallWithinTheNotificationExtensionNotification(discussionPermanentID: discussionPermanentID, textBody: textBody, completionHandler: completionHandler) @@ -296,20 +284,14 @@ final class PersistedDiscussionsUpdatesCoordinator { NewSingleDiscussionNotification.observeUserWantsToDownloadReceivedFyleMessageJoinWithStatus { [weak self] joinObjectID in self?.processUserWantsToDownloadReceivedFyleMessageJoinWithStatus(receivedJoinObjectID: joinObjectID) }, + NewSingleDiscussionNotification.observeUserWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice { [weak self] sentJoinObjectID in + self?.processUserWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: sentJoinObjectID) + }, NewSingleDiscussionNotification.observeUserWantsToPauseDownloadReceivedFyleMessageJoinWithStatus { [weak self] joinObjectID in self?.processUserWantsToPauseDownloadReceivedFyleMessageJoinWithStatus(receivedJoinObjectID: joinObjectID) }, - ObvMessengerCoreDataNotification.observeADeliveredReturnReceiptShouldBeSentForAReceivedFyleMessageJoinWithStatus { [weak self] (returnReceipt, contactCryptoId, ownedCryptoId, messageIdentifierFromEngine, attachmentNumber) in - self?.processADeliveredReturnReceiptShouldBeSent(returnReceipt: returnReceipt, contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber) - }, - ObvMessengerCoreDataNotification.observeADeliveredReturnReceiptShouldBeSentForPersistedMessageReceived { [weak self] returnReceipt, contactCryptoId, ownedCryptoId, messageIdentifierFromEngine in - self?.processADeliveredReturnReceiptShouldBeSent(returnReceipt: returnReceipt, contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: nil) - }, - ObvMessengerInternalNotification.observeTooManyWrongPasscodeAttemptsCausedLockOut { [weak self] in - self?.processTooManyWrongPasscodeAttemptsCausedLockOut() - }, - ObvMessengerCoreDataNotification.observePersistedObvOwnedIdentityWasDeleted { [weak self] in - self?.processPersistedObvOwnedIdentityWasDeleted() + NewSingleDiscussionNotification.observeUserWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice { [weak self] sentJoinObjectID in + self?.processUserWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: sentJoinObjectID) }, ObvMessengerInternalNotification.observeUserWantsToReorderDiscussions { [weak self] (discussionObjectIds, ownedIdentity, completionHandler) in self?.processUserWantsToReorderDiscussions(discussionObjectIds: discussionObjectIds, ownedIdentity: ownedIdentity, completionHandler: completionHandler) @@ -323,6 +305,55 @@ final class PersistedDiscussionsUpdatesCoordinator { ObvMessengerInternalNotification.observeUserWantsToUnarchiveDiscussion { [weak self] discussionPermanentID, updateTimestampOfLastMessage, completionHandler in self?.processUserWantsToUnarchiveDiscussion(discussionPermanentID: discussionPermanentID, updateTimestampOfLastMessage: updateTimestampOfLastMessage, completionHandler: completionHandler) }, + ObvMessengerInternalNotification.observeUserWantsToUpdateReaction { [weak self] ownedCryptoId, messageObjectID, newEmoji in + self?.processUserWantsToUpdateReaction(ownedCryptoId: ownedCryptoId, messageObjectID: messageObjectID, newEmoji: newEmoji) + }, + ObvMessengerInternalNotification.observeNewObvEncryptedPushNotificationWasReceivedViaPushKitNotification { [weak self] encryptedPushNotification in + Task { [weak self] in await self?.processNewObvEncryptedPushNotificationWasReceivedViaPushKitNotification(encryptedPushNotification: encryptedPushNotification) } + }, + ]) + + // Internal notifications + + observationTokens.append(contentsOf: [ + ObvMessengerInternalNotification.observeMessagesAreNotNewAnymore() { [weak self] (ownedCryptoId, discussionId, messageIds) in + self?.processMessagesAreNotNewAnymore(ownedCryptoId: ownedCryptoId, discussionId: discussionId, messageIds: messageIds) + }, + ObvMessengerInternalNotification.observeNewCallLogItem() { [weak self] objectID in + self?.processNewCallLogItemNotification(objectID: objectID) + }, + ObvMessengerInternalNotification.observeWipeAllMessagesThatExpiredEarlierThanNow { [weak self] (launchedByBackgroundTask, completionHandler) in + self?.processWipeAllMessagesThatExpiredEarlierThanNow(launchedByBackgroundTask: launchedByBackgroundTask, completionHandler: completionHandler) + }, + ObvMessengerInternalNotification.observeCurrentUserActivityDidChange() { [weak self] (previousUserActivity, currentUserActivity) in + if let previousDiscussionPermanentID = previousUserActivity.discussionPermanentID, previousDiscussionPermanentID != currentUserActivity.discussionPermanentID { + self?.userLeftDiscussion(discussionPermanentID: previousDiscussionPermanentID) + } + if let currentDiscussionPermanentID = currentUserActivity.discussionPermanentID, currentDiscussionPermanentID != previousUserActivity.discussionPermanentID { + self?.userEnteredDiscussion(discussionPermanentID: currentDiscussionPermanentID) + } + }, + ObvMessengerInternalNotification.observeADiscussionSharedConfigurationIsNeededByContact { [weak self] contactIdentifier, discussionId in + self?.processADiscussionSharedConfigurationIsNeededByContact(contactIdentifier: contactIdentifier, discussionId: discussionId) + }, + ObvMessengerInternalNotification.observeADiscussionSharedConfigurationIsNeededByAnotherOwnedDevice { [weak self] ownedCryptoId, discussionId in + self?.processADiscussionSharedConfigurationIsNeededByAnotherOwnedDevice(ownedCryptoId: ownedCryptoId, discussionId: discussionId) + }, + ObvMessengerInternalNotification.observeApplyAllRetentionPoliciesNow { [weak self] (launchedByBackgroundTask, completionHandler) in + self?.processApplyAllRetentionPoliciesNowNotification(launchedByBackgroundTask: launchedByBackgroundTask, completionHandler: completionHandler) + }, + NewSingleDiscussionNotification.observeInsertDiscussionIsEndToEndEncryptedSystemMessageIntoDiscussionIfEmpty { [weak self] (discussionObjectID, markAsRead) in + self?.processInsertDiscussionIsEndToEndEncryptedSystemMessageIntoDiscussionIfEmpty(discussionObjectID: discussionObjectID, markAsRead: markAsRead) + }, + ObvMessengerInternalNotification.observeInsertDebugMessagesInAllExistingDiscussions { [weak self] in + self?.processInsertDebugMessagesInAllExistingDiscussions() + }, + ObvMessengerInternalNotification.observeCleanExpiredMuteNotficationsThatExpiredEarlierThanNow { [weak self] in + self?.cleanExpiredMuteNotificationsSetting() + }, + ObvMessengerInternalNotification.observeTooManyWrongPasscodeAttemptsCausedLockOut { [weak self] in + self?.processTooManyWrongPasscodeAttemptsCausedLockOut() + }, ObvMessengerInternalNotification.observeUpdateNormalizedSearchKeyOnPersistedDiscussions { [weak self] ownedIdentity, completionHandler in self?.processUpdateNormalizedSearchKeyOnPersistedDiscussions(ownedIdentity: ownedIdentity, completionHandler: completionHandler) }, @@ -334,8 +365,14 @@ final class PersistedDiscussionsUpdatesCoordinator { VoIPNotification.observeReportCallEvent { [weak self] (callUUID, callReport, groupIdentifier, ownedCryptoId) in self?.processReportCallEvent(callUUID: callUUID, callReport: callReport, groupIdentifier: groupIdentifier, ownedCryptoId: ownedCryptoId) }, - VoIPNotification.observeCallHasBeenUpdated { [weak self] callUUID, updateKind in - self?.processCallHasBeenUpdated(callUUID: callUUID, updateKind: updateKind) + VoIPNotification.observeCallWasEnded { [weak self] uuidForCallKit in + self?.processCallWasEnded(uuidForCallKit: uuidForCallKit) + }, + VoIPNotification.observeNewWebRTCMessageToSend() { [weak self] (webrtcMessage, contactID, forStartingCall) in + self?.processNewWebRTCMessageToSendNotification(webrtcMessage: webrtcMessage, contactID: contactID, forStartingCall: forStartingCall) + }, + VoIPNotification.observeNewOwnedWebRTCMessageToSend() { [weak self] (ownedCryptoId, webrtcMessage) in + self?.processNewOwnedWebRTCMessageToSend(ownedCryptoId: ownedCryptoId, webrtcMessage: webrtcMessage) }, ]) @@ -371,11 +408,14 @@ final class PersistedDiscussionsUpdatesCoordinator { }, ]) - // ObvEngine Notifications + // ObvEngineNotificationNew Notifications observationTokens.append(contentsOf: [ ObvEngineNotificationNew.observeNewMessageReceived(within: NotificationCenter.default) { [weak self] (obvMessage, completionHandler) in - self?.processNewMessageReceivedNotification(obvMessage: obvMessage, completionHandler: completionHandler) + Task { [weak self] in await self?.processNewMessageReceivedNotification(obvMessage: obvMessage, completionHandler: completionHandler) } + }, + ObvEngineNotificationNew.observeNewOwnedMessageReceived(within: NotificationCenter.default) { [weak self] (obvOwnedMessage, completionHandler) in + Task { [weak self] in await self?.processNewOwnedMessageReceivedNotification(obvOwnedMessage: obvOwnedMessage, completionHandler: completionHandler) } }, ObvEngineNotificationNew.observeMessageWasAcknowledged(within: NotificationCenter.default) { [weak self] (ownedIdentity, messageIdentifierFromEngine, timestampFromServer, isAppMessageWithUserContent, isVoipMessage) in self?.processMessageWasAcknowledgedNotification(ownedIdentity: ownedIdentity, messageIdentifierFromEngine: messageIdentifierFromEngine, timestampFromServer: timestampFromServer, isAppMessageWithUserContent: isAppMessageWithUserContent, isVoipMessage: isVoipMessage) @@ -386,18 +426,30 @@ final class PersistedDiscussionsUpdatesCoordinator { ObvEngineNotificationNew.observeAttachmentDownloadCancelledByServer(within: NotificationCenter.default) { [weak self] (obvAttachment) in self?.processAttachmentDownloadCancelledByServerNotification(obvAttachment: obvAttachment) }, - ObvEngineNotificationNew.observeCannotReturnAnyProgressForMessageAttachments(within: NotificationCenter.default) { [weak self] (messageIdentifierFromEngine) in - self?.processCannotReturnAnyProgressForMessageAttachmentsNotification(messageIdentifierFromEngine: messageIdentifierFromEngine) + ObvEngineNotificationNew.observeOwnedAttachmentDownloadCancelledByServer(within: NotificationCenter.default) { [weak self] obvOwnedAttachment in + self?.processOwnedAttachmentDownloadCancelledByServerNotification(obvOwnedAttachment: obvOwnedAttachment) + }, + ObvEngineNotificationNew.observeCannotReturnAnyProgressForMessageAttachments(within: NotificationCenter.default) { [weak self] ownedCryptoId, messageIdentifierFromEngine in + self?.processCannotReturnAnyProgressForMessageAttachmentsNotification(ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine) }, ObvEngineNotificationNew.observeAttachmentDownloaded(within: NotificationCenter.default) { [weak self] (obvAttachment) in self?.processAttachmentDownloadedNotification(obvAttachment: obvAttachment) }, + ObvEngineNotificationNew.observeOwnedAttachmentDownloaded(within: NotificationCenter.default) { [weak self] (obvOwnedAttachment) in + self?.processOwnedAttachmentDownloadedNotification(obvOwnedAttachment: obvOwnedAttachment) + }, ObvEngineNotificationNew.observeAttachmentDownloadWasResumed(within: NotificationCenter.default) { [weak self] ownCryptoId, messageIdentifierFromEngine, attachmentNumber in self?.processAttachmentDownloadWasResumed(ownedCryptoId: ownCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber) }, + ObvEngineNotificationNew.observeOwnedAttachmentDownloadWasResumed(within: NotificationCenter.default) { [weak self] ownCryptoId, messageIdentifierFromEngine, attachmentNumber in + self?.processOwnedAttachmentDownloadWasResumed(ownedCryptoId: ownCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber) + }, ObvEngineNotificationNew.observeAttachmentDownloadWasPaused(within: NotificationCenter.default) { [weak self] ownCryptoId, messageIdentifierFromEngine, attachmentNumber in self?.processAttachmentDownloadWasPaused(ownedCryptoId: ownCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber) }, + ObvEngineNotificationNew.observeOwnedAttachmentDownloadWasPaused(within: NotificationCenter.default) { [weak self] ownCryptoId, messageIdentifierFromEngine, attachmentNumber in + self?.processOwnedAttachmentDownloadWasPaused(ownedCryptoId: ownCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber) + }, ObvEngineNotificationNew.observeNewObvReturnReceiptToProcess(within: NotificationCenter.default) { [weak self] (obvReturnReceipt) in self?.processNewObvReturnReceiptToProcessNotification(obvReturnReceipt: obvReturnReceipt) }, @@ -410,11 +462,14 @@ final class PersistedDiscussionsUpdatesCoordinator { ObvEngineNotificationNew.observeContactWasDeleted(within: NotificationCenter.default) { [weak self] (ownedCryptoId, contactCryptoId) in self?.processContactWasDeletedNotification(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) }, - ObvEngineNotificationNew.observeMessageExtendedPayloadAvailable(within: NotificationCenter.default) { [weak self] (obvMessage) in - self?.processMessageExtendedPayloadAvailable(obvMessage: obvMessage) + ObvEngineNotificationNew.observeContactMessageExtendedPayloadAvailable(within: NotificationCenter.default) { [weak self] obvMessage in + self?.processContactMessageExtendedPayloadAvailable(obvMessage: obvMessage) }, - ObvEngineNotificationNew.observeContactWasRevokedAsCompromisedWithinEngine(within: NotificationCenter.default) { [weak self] obvContactIdentity in - self?.processContactWasRevokedAsCompromisedWithinEngine(obvContactIdentity: obvContactIdentity) + ObvEngineNotificationNew.observeOwnedMessageExtendedPayloadAvailable(within: NotificationCenter.default) { [weak self] obvOwnedMessage in + self?.processOwnedMessageExtendedPayloadAvailable(obvOwnedMessage: obvOwnedMessage) + }, + ObvEngineNotificationNew.observeContactWasRevokedAsCompromisedWithinEngine(within: NotificationCenter.default) { [weak self] obvContactIdentifier in + self?.processContactWasRevokedAsCompromisedWithinEngine(obvContactIdentifier: obvContactIdentifier) }, ObvEngineNotificationNew.observeNewUserDialogToPresent(within: NotificationCenter.default) { [weak self] obvDialog in self?.processNewUserDialogToPresent(obvDialog: obvDialog) @@ -422,9 +477,8 @@ final class PersistedDiscussionsUpdatesCoordinator { ObvEngineNotificationNew.observeAPersistedDialogWasDeleted(within: NotificationCenter.default) { [weak self] ownedCryptoId, uuid in self?.processAPersistedDialogWasDeleted(uuid: uuid, ownedCryptoId: ownedCryptoId) }, - ObvMessengerCoreDataNotification.observeAPersistedGroupV2MemberChangedFromPendingToNonPending { [weak self] contactObjectID in - self?.sendAppropriateDiscussionSharedConfigurationsToContact(input: .contact(contactObjectID: contactObjectID), sendSharedConfigOfOneToOneDiscussion: false) - self?.processUnprocessedRecipientInfosThatCanNowBeProcessed() + ObvEngineNotificationNew.observeContactIntroductionInvitationSent(within: NotificationCenter.default) { [weak self] ownedIdentity, contactIdentityA, contactIdentityB in + self?.processContactIntroductionInvitationSent(ownedIdentity: ownedIdentity, contactIdentityA: contactIdentityA, contactIdentityB: contactIdentityB) }, ]) @@ -491,27 +545,16 @@ extension PersistedDiscussionsUpdatesCoordinator { } - private func deleteOldOrOrphanedRemoteDeleteAndEditRequests() { - let op1 = DeleteOldOrOrphanedRemoteDeleteAndEditRequestsOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - self.coordinatorsQueue.addOperation(composedOp) - } - - - private func deleteOldOrOrphanedPendingReactions() { - let op1 = DeleteOldOrOrphanedPendingReactionsOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - coordinatorsQueue.addOperation(composedOp) + private func deleteOldOrOrphanedDatabaseEntries() { + let operations = ObvUICoreDataHelper.getOperationsForDeletingOldOrOrphanedDatabaseEntries() + for op1 in operations { + op1.queuePriority = .low + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } } - private func deleteOrphanedExpirations() { - let op = DeleteOrphanedExpirationsOperation() - op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } - coordinatorsQueue.addOperation(op) - } - - private func cleanJsonMessagesSavedByNotificationExtension() { assert(!Thread.isMainThread) let op = DeleteAllJsonMessagesSavedByNotificationExtension() @@ -525,7 +568,7 @@ extension PersistedDiscussionsUpdatesCoordinator { /// Within this method, we loop through all these json files in order to immediately populate the local database of messages. /// Once we are done, we delete all the json files that we have processed. /// Note that if a message with the same uid from server already exists, we do *not* modify it using the content of the json. - private func bootstrapMessagesDecryptedWithinNotificationExtension() { + private func bootstrapMessagesDecryptedWithinNotificationExtension() async { assert(OperationQueue.current != coordinatorsQueue) @@ -558,7 +601,7 @@ extension PersistedDiscussionsUpdatesCoordinator { } for obvMessage in obvMessages { - processReceivedObvMessage(obvMessage, overridePreviousPersistedMessage: false, completionHandler: nil) + _ = await processReceivedObvMessage(obvMessage, overridePreviousPersistedMessage: false) } } @@ -713,50 +756,60 @@ extension PersistedDiscussionsUpdatesCoordinator { assert(!Thread.isMainThread) let op1 = CreateUnprocessedPersistedMessageSentFromPersistedDraftOperation(draftPermanentID: draftPermanentID) let op2 = ComputeExtendedPayloadOperation(provider: op1) - let op3 = SendUnprocessedPersistedMessageSentOperation(unprocessedPersistedMessageSentProvider: op1, extendedPayloadProvider: op2, obvEngine: obvEngine) - let op4 = MarkAllMessagesAsNotNewWithinDiscussionOperation(draftPermanentID: draftPermanentID) - let composedOp = createCompositionOfFourContextualOperation(op1: op1, op2: op2, op3: op3, op4: op4) - coordinatorsQueue.addOperation(composedOp) + let op3 = SendUnprocessedPersistedMessageSentOperation(unprocessedPersistedMessageSentProvider: op1, + alsoPostToOtherOwnedDevices: true, + extendedPayloadProvider: op2, + obvEngine: obvEngine) + let op4 = MarkAllMessagesAsNotNewWithinDiscussionOperation(input: .draftPermanentID(draftPermanentID: draftPermanentID)) + let composedOp1 = createCompositionOfFourContextualOperation(op1: op1, op2: op2, op3: op3, op4: op4) + coordinatorsQueue.addOperation(composedOp1) coordinatorsQueue.addOperation { - guard !composedOp.isCancelled else { + guard !composedOp1.isCancelled else { NewSingleDiscussionNotification.draftCouldNotBeSent(draftPermanentID: draftPermanentID) .postOnDispatchQueue() assertionFailure() return } } + // Notify other owned devices about messages that turned not new + do { + let postOp = PostDiscussionReadJSONEngineOperation(op: op4, obvEngine: obvEngine) + let composedOp2 = createCompositionOfOneContextualOperation(op1: postOp) + composedOp2.addDependency(composedOp1) + coordinatorsQueue.addOperation(composedOp2) + } } private func processInsertDebugMessagesInAllExistingDiscussions() { #if DEBUG - assert(OperationQueue.current != coordinatorsQueue) - var objectIDs = [(discussionObjectID: TypeSafeManagedObjectID, draftPermanentID: ObvManagedObjectPermanentID)]() - ObvStack.shared.performBackgroundTask { [weak self] context in - guard let _self = self else { return } - guard let discussions = try? PersistedDiscussion.getAllSortedByTimestampOfLastMessageForAllOwnedIdentities(within: context) else { assertionFailure(); return } - objectIDs = discussions.map({ ($0.typedObjectID, $0.draft.objectPermanentID) }) - let numberOfMessagesToInsert = 100 - for objectID in objectIDs { - for messageNumber in 0.., draftPermanentID: ObvManagedObjectPermanentID)]() +// ObvStack.shared.performBackgroundTask { [weak self] context in +// guard let _self = self else { return } +// guard let discussions = try? PersistedDiscussion.getAllSortedByTimestampOfLastMessageForAllOwnedIdentities(within: context) else { assertionFailure(); return } +// objectIDs = discussions.map({ ($0.typedObjectID, $0.draft.objectPermanentID) }) +// let numberOfMessagesToInsert = 100 +// for objectID in objectIDs { +// for messageNumber in 0.. Void) { - - ObvStack.shared.performBackgroundTask { [weak self] context in - guard let discussion = try? PersistedDiscussion.get(objectID: persistedDiscussionObjectID, within: context) else { - return - } - guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId else { return } - self?.deletePersistedDiscussion( - withObjectID: persistedDiscussionObjectID, - requester: .ownedIdentity(ownedCryptoId: ownedCryptoId, deletionType: deletionType), - completionHandler: completionHandler) - } - - } - - - /// This methods properly deletes a discussion. It is typically called when the user requests the deletion of all messages within a discussion. But it is also called when a contact performs a global delete of a discussion, in which case `requestedBy` is non `nil`. - private func deletePersistedDiscussion(withObjectID persistedDiscussionObjectID: NSManagedObjectID, requester: RequesterOfMessageDeletion, completionHandler: @escaping (Bool) -> Void) { - - assert(OperationQueue.current != coordinatorsQueue) - - /* - * If Alice sends us a message, then deletes the discussion, the following occurs: - * 1. A user notification is received (and displayed), and a serialized version is saved, ready to be processed next time Olvid is launched - * 2. We receive the delete request in the background and we arrive here. - * 3. If we do not delete the serialized notifications, all the discussions messages included in these serialized notifications would appear. - * So we need to delete these serialized notifications when a discussion is globally deleted. We actually do it even if the deletion is only local, - * since there is no reason to have a serialized notification present after the app is launched. - */ + private func processUserRequestedDeletionOfPersistedDiscussion(ownedCryptoId: ObvCryptoId, discussionObjectID: TypeSafeManagedObjectID, deletionType: DeletionType, completionHandler: @escaping (Bool) -> Void) { cleanJsonMessagesSavedByNotificationExtension() var operationsToQueue = [Operation]() - switch requester { - case .contact: - // We are performing a local deletion, request by a contact. We will do the work below + switch deletionType { + case .local: break - case .ownedIdentity(_, let deletionType): - switch deletionType { - case .local: - break // We will do the work below - case .global: - let op = SendGlobalDeleteDiscussionJSONOperation(persistedDiscussionObjectID: persistedDiscussionObjectID, obvEngine: obvEngine) - op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } - operationsToQueue.append(op) - } + case .global: + let op = SendGlobalDeleteDiscussionJSONOperation(persistedDiscussionObjectID: discussionObjectID.objectID, obvEngine: obvEngine) + op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } + operationsToQueue.append(op) } do { - let op1 = CancelUploadOrDownloadOfPersistedMessagesOperation(persistedDiscussionObjectID: persistedDiscussionObjectID, obvEngine: obvEngine) + let op1 = CancelUploadOrDownloadOfPersistedMessagesOperation( + input: .discussion(persistedDiscussionObjectID: discussionObjectID.objectID), + obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + coordinatorsQueue.addOperation(composedOp) + } + + do { + let op1 = DeletePersistedDiscussionOperation( + ownedCryptoId: ownedCryptoId, + discussionObjectID: discussionObjectID, + deletionType: deletionType) let composedOp = createCompositionOfOneContextualOperation(op1: op1) operationsToQueue.append(composedOp) } - let deleteAllPersistedMessagesWithinDiscussionOperation: DeleteAllPersistedMessagesWithinDiscussionOperation do { - deleteAllPersistedMessagesWithinDiscussionOperation = DeleteAllPersistedMessagesWithinDiscussionOperation(persistedDiscussionObjectID: persistedDiscussionObjectID, requester: requester) - let composedOp = createCompositionOfOneContextualOperation(op1: deleteAllPersistedMessagesWithinDiscussionOperation) - let currentCompletion = composedOp.completionBlock - composedOp.completionBlock = { - currentCompletion?() - composedOp.logReasonIfCancelled(log: Self.log) + let operations = getOperationsForDeletingOrphanedDatabaseItems { success in DispatchQueue.main.async { - completionHandler(!composedOp.isCancelled) + completionHandler(success) } } - operationsToQueue.append(composedOp) + operationsToQueue.append(contentsOf: operations) + } + + guard !operationsToQueue.isEmpty else { return } + operationsToQueue.makeEachOperationDependentOnThePreceedingOne() + coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) + +// ObvStack.shared.performBackgroundTask { [weak self] context in +// guard let discussion = try? PersistedDiscussion.get(objectID: persistedDiscussionObjectID, within: context) else { +// return +// } +// guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId else { return } +// self?.deletePersistedDiscussion( +// withObjectID: persistedDiscussionObjectID, +// requester: .ownedIdentity(ownedCryptoId: ownedCryptoId, deletionType: deletionType), +// completionHandler: completionHandler) +// } + + } + + + private func getOperationsForDeletingOrphanedDatabaseItems(completionHandler: ((Bool) -> Void)? = nil) -> [Operation] { + + var operationsToReturn = [Operation]() + + do { + let op1 = DeleteAllOrphanedPersistedMessagesOperation() + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + operationsToReturn.append(composedOp) } do { let op1 = DeleteAllOrphanedFyleMessageJoinWithStatusOperation() let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) + operationsToReturn.append(composedOp) } do { let op1 = DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation() let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) + operationsToReturn.append(composedOp) } do { let op = BlockOperation() op.completionBlock = { + let oneOperationCancelled = operationsToReturn.reduce(false) { $0 || $1.isCancelled } + let success = !oneOperationCancelled + completionHandler?(success) ObvMessengerInternalNotification.trashShouldBeEmptied .postOnDispatchQueue() } - operationsToQueue.append(op) - } - - // If the requester is a contact (meaning she requested to globally delete the discussion), we insert a discussionWasRemotelyWiped system message in the new discussion, but only if at least one message was deleted. - - switch requester { - case .ownedIdentity: - break - case .contact(_, _, let messageUploadTimestampFromServer): - let op = BlockOperation() - op.completionBlock = { [weak self] in - guard let _self = self else { return } - assert(deleteAllPersistedMessagesWithinDiscussionOperation.isFinished) - guard !deleteAllPersistedMessagesWithinDiscussionOperation.isCancelled else { return } - let newDiscussionObjectID = deleteAllPersistedMessagesWithinDiscussionOperation.newDiscussionObjectID - let atLeastOneIllustrativeMessageWasDeleted = deleteAllPersistedMessagesWithinDiscussionOperation.atLeastOneIllustrativeMessageWasDeleted - let contactIdentityObjectID = deleteAllPersistedMessagesWithinDiscussionOperation.contactRequesterIdentityObjectID - assert(newDiscussionObjectID != nil) - assert(contactIdentityObjectID != nil) - if let newDiscussionObjectID, let contactIdentityObjectID, atLeastOneIllustrativeMessageWasDeleted { - let op1 = InsertPersistedMessageSystemIntoDiscussionOperation( - persistedMessageSystemCategory: .discussionWasRemotelyWiped, - persistedDiscussionObjectID: newDiscussionObjectID, - optionalContactIdentityObjectID: contactIdentityObjectID, optionalCallLogItemObjectID: nil, - messageUploadTimestampFromServer: messageUploadTimestampFromServer) - let composedOp = _self.createCompositionOfOneContextualOperation(op1: op1) - self?.coordinatorsQueue.addOperation(composedOp) - } - } - operationsToQueue.append(op) + operationsToReturn.append(op) } - // We can now queue all operations - - guard !operationsToQueue.isEmpty else { return } - operationsToQueue.makeEachOperationDependentOnThePreceedingOne() - coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) + operationsToReturn.makeEachOperationDependentOnThePreceedingOne() + + return operationsToReturn } - - private func processMessagesAreNotNewAnymore(persistedMessageObjectIDs: Set>) { + + private func processMessagesAreNotNewAnymore(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, messageIds: [MessageIdentifier]) { assert(OperationQueue.current != coordinatorsQueue) - let op1 = ProcessPersistedMessagesAsTheyTurnsNotNewOperation(persistedMessageObjectIDs: persistedMessageObjectIDs) - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - self.coordinatorsQueue.addOperation(composedOp) - } - - - private func processNewObvMessageWasReceivedViaPushKitNotification(obvMessage: ObvMessage) { - processReceivedObvMessage(obvMessage, overridePreviousPersistedMessage: false, completionHandler: nil) + + let op1 = ProcessPersistedMessagesAsTheyTurnsNotNewOperation( + ownedCryptoId: ownedCryptoId, + discussionId: discussionId, + messageIds: messageIds) + let composedOp1 = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp1) + + // Notify other owned devices about messages that turned not new + do { + let postOp = PostDiscussionReadJSONEngineOperation(op: op1, obvEngine: obvEngine) + let composedOp2 = createCompositionOfOneContextualOperation(op1: postOp) + composedOp2.addDependency(composedOp1) + coordinatorsQueue.addOperation(composedOp2) + } + } - + private func processNewWebRTCMessageToSendNotification(webrtcMessage: WebRTCMessageJSON, contactID: TypeSafeManagedObjectID, forStartingCall: Bool) { os_log("☎️ We received an observeNewWebRTCMessageToSend notification", log: Self.log, type: .info) let op1 = SendWebRTCMessageOperation(webrtcMessage: webrtcMessage, contactID: contactID, forStartingCall: forStartingCall, obvEngine: obvEngine, log: Self.log) @@ -1097,6 +1146,13 @@ extension PersistedDiscussionsUpdatesCoordinator { coordinatorsQueue.addOperation(composedOp) } + + private func processNewOwnedWebRTCMessageToSend(ownedCryptoId: ObvCryptoId, webrtcMessage: WebRTCMessageJSON) { + let op1 = SendOwnedWebRTCMessageOperation(webrtcMessage: webrtcMessage, ownedCryptoId: ownedCryptoId, obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + coordinatorsQueue.addOperation(composedOp) + } + private func processNewCallLogItemNotification(objectID: TypeSafeManagedObjectID) { os_log("☎️ We received an NewReportCallItem notification", log: Self.log, type: .info) @@ -1153,39 +1209,31 @@ extension PersistedDiscussionsUpdatesCoordinator { operationsToQueue.append(op) } do { - let op1 = DeleteAllOrphanedFyleMessageJoinWithStatusOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op1 = DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op = BlockOperation() - op.completionBlock = { - ObvMessengerInternalNotification.trashShouldBeEmptied - .postOnDispatchQueue() - } - operationsToQueue.append(op) + let operations = getOperationsForDeletingOrphanedDatabaseItems() + operationsToQueue.append(contentsOf: operations) } operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) } - private func userEnteredDiscussion(discussionPermanentID: ObvManagedObjectPermanentID) { - let op = AllowReadingOfAllMessagesReceivedThatRequireUserActionOperation(discussionPermanentID: discussionPermanentID) - op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } - coordinatorsQueue.addOperation(op) + private func userEnteredDiscussion(discussionPermanentID: DiscussionPermanentID) { + let op1 = TryToAutoReadDiscussionsReceivedMessagesThatRequireUserActionOperation(input: .discussionPermanentID(discussionPermanentID: discussionPermanentID)) + let composedOp1 = createCompositionOfOneContextualOperation(op1: op1) + let op2 = PostLimitedVisibilityMessageOpenedJSONEngineOperation(op: op1, obvEngine: obvEngine) + let composedOp2 = createCompositionOfOneContextualOperation(op1: op2) + composedOp2.addDependency(composedOp1) + self.coordinatorsQueue.addOperations([composedOp1, composedOp2], waitUntilFinished: false) } - private func processUserWantsToReadReceivedMessagesThatRequiresUserActionNotification(persistedMessageObjectIDs: Set>) { - let op = AllowReadingOfMessagesReceivedThatRequireUserActionOperation(persistedMessageReceivedObjectIDs: persistedMessageObjectIDs) - op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } - coordinatorsQueue.addOperation(op) + private func processUserWantsToReadReceivedMessageThatRequiresUserActionNotification(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, messageId: ReceivedMessageIdentifier) { + let op1 = AllowReadingOfMessagesReceivedThatRequireUserActionOperation(.requestedOnCurrentDevice(ownedCryptoId: ownedCryptoId, discussionId: discussionId, messageId: messageId)) + let composedOp1 = createCompositionOfOneContextualOperation(op1: op1) + let op2 = PostLimitedVisibilityMessageOpenedJSONEngineOperation(op: op1, obvEngine: obvEngine) + let composedOp2 = createCompositionOfOneContextualOperation(op1: op2) + composedOp2.addDependency(composedOp1) + self.coordinatorsQueue.addOperations([composedOp1, composedOp2], waitUntilFinished: false) } @@ -1225,37 +1273,23 @@ extension PersistedDiscussionsUpdatesCoordinator { operationsToQueue.append(composedOp) } do { - let op1 = DeleteAllOrphanedFyleMessageJoinWithStatusOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op1 = DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op = BlockOperation() - op.completionBlock = { - ObvMessengerInternalNotification.trashShouldBeEmptied - .postOnDispatchQueue() - } - operationsToQueue.append(op) + let operations = getOperationsForDeletingOrphanedDatabaseItems() + operationsToQueue.append(contentsOf: operations) } operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) } - private func processUserWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(persistedDiscussionObjectID: NSManagedObjectID, expirationJSON: ExpirationJSON, ownedCryptoId: ObvCryptoId) { + private func processUserWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, expirationJSON: ExpirationJSON) { var operationsToQueue = [Operation]() do { - let op = ReplaceDiscussionSharedExpirationConfigurationOperation(persistedDiscussionObjectID: persistedDiscussionObjectID, expirationJSON: expirationJSON, ownedCryptoIdAsInitiator: ownedCryptoId) - op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } - operationsToQueue.append(op) + let op1 = ReplaceDiscussionSharedExpirationConfigurationOperation(ownedCryptoIdAsInitiator: ownedCryptoId, discussionId: discussionId, expirationJSON: expirationJSON) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + operationsToQueue.append(composedOp) } do { - let op = SendPersistedDiscussionSharedConfigurationIfAllowedToOperation(persistedDiscussionObjectID: persistedDiscussionObjectID, obvEngine: obvEngine) + let op = SendPersistedDiscussionSharedConfigurationIfAllowedToOperation(ownedCryptoId: ownedCryptoId, discussionId: discussionId, sendTo: .allContactsAndOtherOwnedDevices, obvEngine: obvEngine) op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } operationsToQueue.append(op) } @@ -1284,63 +1318,67 @@ extension PersistedDiscussionsUpdatesCoordinator { operationsToQueue.append(op) } do { - let op1 = DeleteAllOrphanedFyleMessageJoinWithStatusOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op1 = DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op = BlockOperation() - op.completionBlock = { - ObvMessengerInternalNotification.trashShouldBeEmptied - .postOnDispatchQueue() - let oneOperationCancelled = operationsToQueue.reduce(false) { $0 || $1.isCancelled } - let success = !oneOperationCancelled - completionHandler(success) - } - operationsToQueue.append(op) + let operations = getOperationsForDeletingOrphanedDatabaseItems(completionHandler: completionHandler) + operationsToQueue.append(contentsOf: operations) } operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) } - private func processAnOldDiscussionSharedConfigurationWasReceivedNotification(persistedDiscussionObjectID: NSManagedObjectID) { - let op = SendPersistedDiscussionSharedConfigurationIfAllowedToOperation(persistedDiscussionObjectID: persistedDiscussionObjectID, obvEngine: obvEngine) + private func processADiscussionSharedConfigurationIsNeededByContact(contactIdentifier: ObvContactIdentifier, discussionId: DiscussionIdentifier) { + let op = SendPersistedDiscussionSharedConfigurationIfAllowedToOperation( + ownedCryptoId: contactIdentifier.ownedCryptoId, + discussionId: discussionId, + sendTo: .specificContact(contactCryptoId: contactIdentifier.contactCryptoId), + obvEngine: obvEngine) op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } coordinatorsQueue.addOperation(op) } + + private func processADiscussionSharedConfigurationIsNeededByAnotherOwnedDevice(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier) { + let op = SendPersistedDiscussionSharedConfigurationIfAllowedToOperation(ownedCryptoId: ownedCryptoId, discussionId: discussionId, sendTo: .otherOwnedDevices, obvEngine: obvEngine) + op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } + coordinatorsQueue.addOperation(op) + } + - private func processUserWantsToSendEditedVersionOfSentMessage(sentMessageObjectID: NSManagedObjectID, newTextBody: String) { - let op1 = EditTextBodyOfSentMessageOperation(persistedSentMessageObjectID: sentMessageObjectID, newTextBody: newTextBody) - let op2 = SendUpdateMessageJSONOperation(persistedSentMessageObjectID: sentMessageObjectID, obvEngine: obvEngine) + private func processUserWantsToSendEditedVersionOfSentMessage(ownedCryptoId: ObvCryptoId, sentMessageObjectID: TypeSafeManagedObjectID, newTextBody: String?) { + let op1 = EditTextBodyOfSentMessageOperation(ownedCryptoId: ownedCryptoId, persistedSentMessageObjectID: sentMessageObjectID, newTextBody: newTextBody) + let op2 = SendUpdateMessageJSONOperation(sentMessageObjectID: sentMessageObjectID, obvEngine: obvEngine) let composedOp = createCompositionOfTwoContextualOperation(op1: op1, op2: op2) coordinatorsQueue.addOperation(composedOp) } - private func processUserWantsToUpdateReaction(messageObjectID: TypeSafeManagedObjectID, emoji: String?) { - let op1 = UpdateReactionsOfMessageOperation(emoji: emoji, messageObjectID: messageObjectID) - let op2 = SendReactionJSONOperation(messageObjectID: messageObjectID, obvEngine: obvEngine, emoji: emoji) + private func processUserWantsToUpdateReaction(ownedCryptoId: ObvCryptoId, messageObjectID: TypeSafeManagedObjectID, newEmoji: String?) { + let op1 = ProcessSetOrUpdateReactionOnMessageLocalRequestOperation(ownedCryptoId: ownedCryptoId, messageObjectID: messageObjectID, newEmoji: newEmoji) + let op2 = SendReactionJSONOperation(messageObjectID: messageObjectID, obvEngine: obvEngine, emoji: newEmoji) let composedOp = createCompositionOfTwoContextualOperation(op1: op1, op2: op2) coordinatorsQueue.addOperation(composedOp) } + private func processNewObvEncryptedPushNotificationWasReceivedViaPushKitNotification(encryptedPushNotification: ObvEncryptedPushNotification) async { + do { + let obvMessage = try await obvEngine.decrypt(encryptedPushNotification: encryptedPushNotification) + _ = await processReceivedObvMessage(obvMessage, overridePreviousPersistedMessage: false) + } catch { + os_log("☎️ Could not decrypt encrypted push notification received via PushKit. The start call may have been received via WebScoket", log: Self.log, type: .info) + } + } + + private func processUserWantsToMarkAllMessagesAsNotNewWithinDiscussionNotification(persistedDiscussionObjectID: NSManagedObjectID, completionHandler: @escaping (Bool) -> Void) { os_log("Call to processUserWantsToMarkAllMessagesAsNotNewWithinDiscussionNotification for discussion %{public}@", log: Self.log, type: .debug, persistedDiscussionObjectID.debugDescription) var operationsToQueue = [Operation]() - do { - os_log("Creating a MarkAllMessagesAsNotNewWithinDiscussionOperation for discussion %{public}@", log: Self.log, type: .debug, persistedDiscussionObjectID.debugDescription) - let op1 = MarkAllMessagesAsNotNewWithinDiscussionOperation(persistedDiscussionObjectID: TypeSafeManagedObjectID(objectID: persistedDiscussionObjectID) ) - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } + + os_log("Creating a MarkAllMessagesAsNotNewWithinDiscussionOperation for discussion %{public}@", log: Self.log, type: .debug, persistedDiscussionObjectID.debugDescription) + let op1 = MarkAllMessagesAsNotNewWithinDiscussionOperation(input: .persistedDiscussionObjectID(persistedDiscussionObjectID: TypeSafeManagedObjectID(objectID: persistedDiscussionObjectID))) + let composedOp1 = createCompositionOfOneContextualOperation(op1: op1) + operationsToQueue.append(composedOp1) + do { let op = BlockOperation() op.completionBlock = { @@ -1348,11 +1386,21 @@ extension PersistedDiscussionsUpdatesCoordinator { } operationsToQueue.append(op) } + // Since the operation were user initiated, we increase their priority and quality of service operationsToQueue.forEach { $0.queuePriority = .veryHigh } operationsToQueue.forEach { $0.qualityOfService = .userInteractive } operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) + + // Notify other owned devices about messages that turned not new + do { + let postOp = PostDiscussionReadJSONEngineOperation(op: op1, obvEngine: obvEngine) + let composedOp2 = createCompositionOfOneContextualOperation(op1: postOp) + composedOp2.addDependency(composedOp1) + coordinatorsQueue.addOperation(composedOp2) + } + } @@ -1364,17 +1412,8 @@ extension PersistedDiscussionsUpdatesCoordinator { operationsToQueue.append(op) } do { - let op1 = DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op = BlockOperation() - op.completionBlock = { - ObvMessengerInternalNotification.trashShouldBeEmptied - .postOnDispatchQueue() - } - operationsToQueue.append(op) + let operations = getOperationsForDeletingOrphanedDatabaseItems() + operationsToQueue.append(contentsOf: operations) } operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) @@ -1431,9 +1470,7 @@ extension PersistedDiscussionsUpdatesCoordinator { private func newProgressToAddForTrackingFreeze(draftPermanentID: ObvManagedObjectPermanentID, progress: Progress) { - if #available(iOS 15, *) { - CompositionViewFreezeManager.shared.newProgressToAddForTrackingFreeze(draftPermanentID: draftPermanentID, progress: progress) - } + CompositionViewFreezeManager.shared.newProgressToAddForTrackingFreeze(draftPermanentID: draftPermanentID, progress: progress) } @@ -1469,27 +1506,18 @@ extension PersistedDiscussionsUpdatesCoordinator { private func processUserWantsToDeleteAllAttachmentsToDraft(draftObjectID: TypeSafeManagedObjectID) { var operationsToQueue = [Operation]() + do { let op1 = DeleteAllDraftFyleJoinOfDraftOperation(draftObjectID: draftObjectID) let composedOp = createCompositionOfOneContextualOperation(op1: op1) operationsToQueue.append(composedOp) } - - do { - let op1 = DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - + do { - let op = BlockOperation() - op.completionBlock = { - ObvMessengerInternalNotification.trashShouldBeEmptied - .postOnDispatchQueue() - } - operationsToQueue.append(op) + let operations = getOperationsForDeletingOrphanedDatabaseItems() + operationsToQueue.append(contentsOf: operations) } - + operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) @@ -1572,13 +1600,21 @@ extension PersistedDiscussionsUpdatesCoordinator { } private func processUserWantsToUpdateDiscussionLocalConfigurationNotification(with value: PersistedDiscussionLocalConfigurationValue, localConfigurationObjectID: TypeSafeManagedObjectID) { - let op1 = UpdateDiscussionLocalConfigurationOperation(value: value, localConfigurationObjectID: localConfigurationObjectID) + let op1 = UpdateDiscussionLocalConfigurationOperation( + value: value, + input: .configurationObjectID(localConfigurationObjectID), + makeSyncAtomRequest: true, + syncAtomRequestDelegate: syncAtomRequestDelegate) let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } private func processUserWantsToUpdateLocalConfigurationOfDiscussionNotification(with value: PersistedDiscussionLocalConfigurationValue, discussionPermanentID: ObvManagedObjectPermanentID, completionHandler: @escaping () -> Void) { - let op1 = UpdateDiscussionLocalConfigurationOperation(value: value, discussionPermanentID: discussionPermanentID) + let op1 = UpdateDiscussionLocalConfigurationOperation( + value: value, + input: .discussionPermanentID(discussionPermanentID), + makeSyncAtomRequest: true, + syncAtomRequestDelegate: syncAtomRequestDelegate) let composedOp = createCompositionOfOneContextualOperation(op1: op1) op1.completionBlock = { DispatchQueue.main.async { @@ -1595,18 +1631,139 @@ extension PersistedDiscussionsUpdatesCoordinator { extension PersistedDiscussionsUpdatesCoordinator { - private func processNewMessageReceivedNotification(obvMessage: ObvMessage, completionHandler: @escaping (Set) -> Void) { + private func processNewMessageReceivedNotification(obvMessage: ObvMessage, completionHandler: @escaping (Set) -> Void) async { os_log("🧦 We received a NewMessageReceived notification", log: Self.log, type: .debug) - let attachmentsToDownloadAsap = Set(obvMessage.attachments.filter { - // A negative maxAttachmentSizeForAutomaticDownload means "unlimited" - ObvMessengerSettings.Downloads.maxAttachmentSizeForAutomaticDownload < 0 || $0.totalUnitCount < ObvMessengerSettings.Downloads.maxAttachmentSizeForAutomaticDownload - }) - let localCompletionHandler = { + let result = await processReceivedObvMessage(obvMessage, overridePreviousPersistedMessage: true) + + switch result { + + case .done: + let attachmentsToDownloadAsap = Set(obvMessage.attachments.filter { + // A negative maxAttachmentSizeForAutomaticDownload means "unlimited" + ObvMessengerSettings.Downloads.maxAttachmentSizeForAutomaticDownload < 0 || $0.totalUnitCount < ObvMessengerSettings.Downloads.maxAttachmentSizeForAutomaticDownload + }) + completionHandler(attachmentsToDownloadAsap) + + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + + if Date.now.timeIntervalSince(obvMessage.localDownloadTimestamp) < ObvMessengerConstants.maximumTimeIntervalForKeptForLaterMessages { + + await messagesKeptForLaterManager.keepForLater( + .obvMessageForGroupV2( + groupIdentifier: groupIdentifier, + obvMessage: obvMessage, + completionHandler: completionHandler)) + + } else { + + completionHandler(Set()) + + } + + case .couldNotFindContactInDatabase(contactCryptoId: let contactCryptoId): + + if Date.now.timeIntervalSince(obvMessage.localDownloadTimestamp) < ObvMessengerConstants.maximumTimeIntervalForKeptForLaterMessages { + + await messagesKeptForLaterManager.keepForLater(.obvMessageExpectingContact( + contactCryptoId: contactCryptoId, + obvMessage: obvMessage, + completionHandler: completionHandler)) + + } else { + + completionHandler(Set()) + + } + + } + + } + + + private func processNewOwnedMessageReceivedNotification(obvOwnedMessage: ObvOwnedMessage, completionHandler: @escaping (Set) -> Void) async { + os_log("🧦 We received a NewOwnedMessageReceived notification", log: Self.log, type: .debug) + + let result = await processReceivedObvOwnedMessage(obvOwnedMessage) + + switch result { + + case .done: + + let attachmentsToDownloadAsap = Set(obvOwnedMessage.attachments.filter { + // A negative maxAttachmentSizeForAutomaticDownload means "unlimited" + ObvMessengerSettings.Downloads.maxAttachmentSizeForAutomaticDownload < 0 || $0.totalUnitCount < ObvMessengerSettings.Downloads.maxAttachmentSizeForAutomaticDownload + }) + completionHandler(attachmentsToDownloadAsap) + + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + + if Date.now.timeIntervalSince(obvOwnedMessage.localDownloadTimestamp) < ObvMessengerConstants.maximumTimeIntervalForKeptForLaterMessages { + + await messagesKeptForLaterManager.keepForLater(.obvOwnedMessageForGroupV2( + groupIdentifier: groupIdentifier, + obvOwnedMessage: obvOwnedMessage, + completionHandler: completionHandler)) + + } else { + + completionHandler(Set()) + + } + + case .couldNotFindContactInDatabase(contactCryptoId: let contactCryptoId): + + if Date.now.timeIntervalSince(obvOwnedMessage.localDownloadTimestamp) < ObvMessengerConstants.maximumTimeIntervalForKeptForLaterMessages { + + await messagesKeptForLaterManager.keepForLater(.obvOwnedMessageExpectingContact( + contactCryptoId: contactCryptoId, + obvOwnedMessage: obvOwnedMessage, + completionHandler: completionHandler)) + + } else { + + completionHandler(Set()) + + } + + } + + } + + + private func processAPersistedGroupV2WasInsertedInDatabase(ownedCryptoId: ObvCryptoId, groupIdentifier: GroupV2Identifier) async { + + let messagesKeptForLater = await messagesKeptForLaterManager.getGroupV2MessagesKeptForLaterForOwnedCryptoId(ownedCryptoId, groupIdentifier: groupIdentifier) + + for messageKeptForLater in messagesKeptForLater { + switch messageKeptForLater { + case .obvMessageForGroupV2(_, let obvMessage, let completionHandler): + await processNewMessageReceivedNotification(obvMessage: obvMessage, completionHandler: completionHandler) + case .obvOwnedMessageForGroupV2(_, let obvOwnedMessage, let completionHandler): + await processNewOwnedMessageReceivedNotification(obvOwnedMessage: obvOwnedMessage, completionHandler: completionHandler) + case .obvMessageExpectingContact, .obvOwnedMessageExpectingContact: + assertionFailure("Those messages are not expected to be part of the returned results") + } } + + } + + + private func processPersistedContactWasInserted(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async { + + let messagesKeptForLater = await messagesKeptForLaterManager.getMessagesExpectingContactForOwnedCryptoId(ownedCryptoId, contactCryptoId: contactCryptoId) - processReceivedObvMessage(obvMessage, overridePreviousPersistedMessage: true, completionHandler: localCompletionHandler) + for messageKeptForLater in messagesKeptForLater { + switch messageKeptForLater { + case .obvMessageExpectingContact(contactCryptoId: _, obvMessage: let obvMessage, completionHandler: let completionHandler): + await processNewMessageReceivedNotification(obvMessage: obvMessage, completionHandler: completionHandler) + case .obvOwnedMessageExpectingContact(contactCryptoId: _, obvOwnedMessage: let obvOwnedMessage, completionHandler: let completionHandler): + await processNewOwnedMessageReceivedNotification(obvOwnedMessage: obvOwnedMessage, completionHandler: completionHandler) + case .obvMessageForGroupV2, .obvOwnedMessageForGroupV2: + assertionFailure("Those messages are not expected to be part of the returned results") + } + } } @@ -1656,71 +1813,61 @@ extension PersistedDiscussionsUpdatesCoordinator { os_log("We received an AttachmentDownloadCancelledByServer notification", log: Self.log, type: .debug) let obvEngine = self.obvEngine var operationsToQueue = [Operation]() - let composedOp: CompositionOfOneContextualOperation + let composedOp: CompositionOfOneContextualOperation do { - let op1 = ProcessFyleWithinDownloadingAttachmentOperation(obvAttachment: obvAttachment, newProgress: nil, obvEngine: obvEngine) + let op1 = UpdatePersistedMessageReceivedFromReceivedObvAttachmentOperation(obvAttachment: obvAttachment, obvEngine: obvEngine) composedOp = createCompositionOfOneContextualOperation(op1: op1) operationsToQueue.append(composedOp) } - do { - let op = BlockOperation() - op.completionBlock = { - assert(composedOp.isFinished) - guard !composedOp.isCancelled else { return } - // If we reach this point, we have successfully processed the fyle within the attachment. We can ask the engine to delete the attachment - do { - try obvEngine.deleteObvAttachment(attachmentNumber: obvAttachment.number, - ofMessageWithIdentifier: obvAttachment.messageIdentifier, - ownedCryptoId: obvAttachment.ownedCryptoId) - } catch { - os_log("The engine failed to delete the attachment", log: Self.log, type: .fault) - } - } - operationsToQueue.append(op) - } operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) } - + /// This notification is typically sent when we request progress for attachments that cannot be found anymore within the engine's inbox. /// Typical if the message/attachments were deleted by the sender before they were completely sent. - private func processCannotReturnAnyProgressForMessageAttachmentsNotification(messageIdentifierFromEngine: Data) { - let op = MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServer(messageIdentifierFromEngine: messageIdentifierFromEngine) - op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } - coordinatorsQueue.addOperation(op) + private func processCannotReturnAnyProgressForMessageAttachmentsNotification(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data) { + let op1 = MarkAllIncompleteReceivedFyleMessageJoinWithStatusAsCancelledByServer(ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) } - - private func processAttachmentDownloadedNotification(obvAttachment: ObvAttachment) { + + private func processOwnedAttachmentDownloadCancelledByServerNotification(obvOwnedAttachment: ObvOwnedAttachment) { + os_log("We received an OwnedAttachmentDownloadCancelledByServer notification", log: Self.log, type: .debug) let obvEngine = self.obvEngine var operationsToQueue = [Operation]() - let composedOp: CompositionOfOneContextualOperation + let composedOp: CompositionOfOneContextualOperation do { - let op1 = ProcessFyleWithinDownloadingAttachmentOperation(obvAttachment: obvAttachment, newProgress: nil, obvEngine: obvEngine) + let op1 = UpdatePersistedMessageSentFromReceivedObvOwnedAttachmentOperation(obvOwnedAttachment: obvOwnedAttachment, obvEngine: obvEngine) composedOp = createCompositionOfOneContextualOperation(op1: op1) operationsToQueue.append(composedOp) } + operationsToQueue.makeEachOperationDependentOnThePreceedingOne() + coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) + } + + + private func processAttachmentDownloadedNotification(obvAttachment: ObvAttachment) { + let obvEngine = self.obvEngine + var operationsToQueue = [Operation]() + let composedOp: CompositionOfOneContextualOperation do { - let op = BlockOperation() - op.completionBlock = { - assert(composedOp.isFinished) - guard !composedOp.isCancelled else { return } - // If we reach this point, we have successfully processed the fyle within the attachment. We can ask the engine to delete the attachment - do { - try obvEngine.deleteObvAttachment(attachmentNumber: obvAttachment.number, - ofMessageWithIdentifier: obvAttachment.messageIdentifier, - ownedCryptoId: obvAttachment.ownedCryptoId) - } catch { - os_log("The engine failed to delete the attachment we just persisted", log: Self.log, type: .fault) - assertionFailure() - } - } - operationsToQueue.append(op) + let op1 = UpdatePersistedMessageReceivedFromReceivedObvAttachmentOperation(obvAttachment: obvAttachment, obvEngine: obvEngine) + composedOp = createCompositionOfOneContextualOperation(op1: op1) + operationsToQueue.append(composedOp) } operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) } + + + private func processOwnedAttachmentDownloadedNotification(obvOwnedAttachment: ObvOwnedAttachment) { + let obvEngine = self.obvEngine + let op1 = UpdatePersistedMessageSentFromReceivedObvOwnedAttachmentOperation(obvOwnedAttachment: obvOwnedAttachment, obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } private func processAttachmentDownloadWasResumed(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int) { @@ -1737,6 +1884,20 @@ extension PersistedDiscussionsUpdatesCoordinator { } + private func processOwnedAttachmentDownloadWasResumed(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int) { + let op1 = MarkReceivedSentJoinAsResumedOrPausedOperation(ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber, resumeOrPause: .resume) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } + + + private func processOwnedAttachmentDownloadWasPaused(ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int) { + let op1 = MarkReceivedSentJoinAsResumedOrPausedOperation(ownedCryptoId: ownedCryptoId, messageIdentifierFromEngine: messageIdentifierFromEngine, attachmentNumber: attachmentNumber, resumeOrPause: .pause) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } + + private func processNewObvReturnReceiptToProcessNotification(obvReturnReceipt: ObvReturnReceipt, retryNumber: Int = 0) { guard retryNumber < 10 else { @@ -1871,22 +2032,33 @@ extension PersistedDiscussionsUpdatesCoordinator { } - /// Called when the engine received successfully downloaded and decrypted an extended payload for an application message. - private func processMessageExtendedPayloadAvailable(obvMessage: ObvMessage) { - let op1 = ExtractReceivedExtendedPayloadOperation(obvMessage: obvMessage) + /// Called when the engine received successfully downloaded and decrypted an extended payload for an application message sent by a contact. + private func processContactMessageExtendedPayloadAvailable(obvMessage: ObvMessage) { + let op1 = ExtractReceivedExtendedPayloadOperation(input: .messageSentByContact(obvMessage: obvMessage)) let op2 = SaveReceivedExtendedPayloadOperation(extractReceivedExtendedPayloadOp: op1) - let composedOp = createCompositionOfTwoContextualOperation(op1: op1, op2: op2) - self.coordinatorsQueue.addOperation(composedOp) + let composedOp = createCompositionOfOneContextualOperation(op1: op2) + composedOp.addDependency(op1) + self.coordinatorsQueue.addOperations([op1, composedOp], waitUntilFinished: false) } + + /// Called when the engine received successfully downloaded and decrypted an extended payload for an application message sent from another device of an owned identity. + private func processOwnedMessageExtendedPayloadAvailable(obvOwnedMessage: ObvOwnedMessage) { + let op1 = ExtractReceivedExtendedPayloadOperation(input: .messageSentByOtherDeviceOfOwnedIdentity(obvOwnedMessage: obvOwnedMessage)) + let op2 = SaveReceivedExtendedPayloadOperation(extractReceivedExtendedPayloadOp: op1) + let composedOp = createCompositionOfOneContextualOperation(op1: op2) + composedOp.addDependency(op1) + self.coordinatorsQueue.addOperations([op1, composedOp], waitUntilFinished: false) + } + - private func processContactWasRevokedAsCompromisedWithinEngine(obvContactIdentity: ObvContactIdentity) { + private func processContactWasRevokedAsCompromisedWithinEngine(obvContactIdentifier: ObvContactIdentifier) { // When the engine informs us that a contact has been revoked as compromised, we insert the appropriate system message within the discussion ObvStack.shared.performBackgroundTask { [weak self] context in guard let _self = self else { return } let contact: PersistedObvContactIdentity do { - guard let _contact = try PersistedObvContactIdentity.get(persisted: obvContactIdentity, whereOneToOneStatusIs: .any, within: context) else { assertionFailure(); return } + guard let _contact = try PersistedObvContactIdentity.get(persisted: obvContactIdentifier, whereOneToOneStatusIs: .any, within: context) else { assertionFailure(); return } contact = _contact } catch { os_log("Could not get contact: %{public}", log: Self.log, type: .fault, error.localizedDescription) @@ -1909,7 +2081,8 @@ extension PersistedDiscussionsUpdatesCoordinator { private func processNewUserDialogToPresent(obvDialog: ObvDialog) { assert(OperationQueue.current != coordinatorsQueue) - let op1 = ProcessObvDialogOperation(obvDialog: obvDialog, obvEngine: obvEngine) + guard let syncAtomRequestDelegate else { assertionFailure(); return } + let op1 = ProcessObvDialogOperation(obvDialog: obvDialog, obvEngine: obvEngine, syncAtomRequestDelegate: syncAtomRequestDelegate) let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } @@ -1930,38 +2103,54 @@ extension PersistedDiscussionsUpdatesCoordinator { } } } + + + private func processContactIntroductionInvitationSent(ownedIdentity: ObvCryptoId, contactIdentityA: ObvCryptoId, contactIdentityB: ObvCryptoId) { + let op1 = ProcessContactIntroductionInvitationSentOperation(ownedCryptoId: ownedIdentity, contactCryptoIdA: contactIdentityA, contactCryptoIdB: contactIdentityB) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } - private func processUserRepliedToReceivedMessageWithinTheNotificationExtensionNotification(contactPermanentID: ObvManagedObjectPermanentID, messageIdentifierFromEngine: Data, textBody: String, completionHandler: @escaping () -> Void) { + private func processUserRepliedToReceivedMessageWithinTheNotificationExtensionNotification(contactPermanentID: ObvManagedObjectPermanentID, messageIdentifierFromEngine: Data, textBody: String, completionHandler: @escaping () -> Void) async { // This call will add the received message decrypted by the notification extension into the database to be sure that we will be able to reply to this message. - bootstrapMessagesDecryptedWithinNotificationExtension() + await bootstrapMessagesDecryptedWithinNotificationExtension() let op1 = CreateUnprocessedReplyToPersistedMessageSentFromBodyOperation(contactPermanentID: contactPermanentID, messageIdentifierFromEngine: messageIdentifierFromEngine, textBody: textBody) let op2 = MarkAsReadReceivedMessageOperation(contactPermanentID: contactPermanentID, messageIdentifierFromEngine: messageIdentifierFromEngine) - let op3 = SendUnprocessedPersistedMessageSentOperation(unprocessedPersistedMessageSentProvider: op1, extendedPayloadProvider: nil, obvEngine: obvEngine) { + let op3 = SendUnprocessedPersistedMessageSentOperation(unprocessedPersistedMessageSentProvider: op1, alsoPostToOtherOwnedDevices: true, extendedPayloadProvider: nil, obvEngine: obvEngine) { DispatchQueue.main.async { completionHandler() } } - let composedOp = createCompositionOfThreeContextualOperation(op1: op1, op2: op2, op3: op3) - let currentCompletion = composedOp.completionBlock - composedOp.completionBlock = { + let composedOp1 = createCompositionOfThreeContextualOperation(op1: op1, op2: op2, op3: op3) + let currentCompletion = composedOp1.completionBlock + composedOp1.completionBlock = { currentCompletion?() - if composedOp.isCancelled { + if composedOp1.isCancelled { // One of op1, op2 or op3 cancelled. We call the completion handler DispatchQueue.main.async { completionHandler() } } } - coordinatorsQueue.addOperation(composedOp) + coordinatorsQueue.addOperation(composedOp1) + + // Notify other owned devices about messages that turned not new + do { + let postOp = PostDiscussionReadJSONEngineOperation(op: op2, obvEngine: obvEngine) + let composedOp2 = createCompositionOfOneContextualOperation(op1: postOp) + composedOp2.addDependency(composedOp1) + coordinatorsQueue.addOperation(composedOp2) + } + } private func processUserRepliedToMissedCallWithinTheNotificationExtensionNotification(discussionPermanentID: ObvManagedObjectPermanentID, textBody: String, completionHandler: @escaping () -> Void) { let op1 = CreateUnprocessedPersistedMessageSentFromBodyOperation(discussionPermanentID: discussionPermanentID, textBody: textBody) - let op2 = SendUnprocessedPersistedMessageSentOperation(unprocessedPersistedMessageSentProvider: op1, extendedPayloadProvider: nil, obvEngine: obvEngine) { + let op2 = SendUnprocessedPersistedMessageSentOperation(unprocessedPersistedMessageSentProvider: op1, alsoPostToOtherOwnedDevices: true, extendedPayloadProvider: nil, obvEngine: obvEngine) { DispatchQueue.main.async { completionHandler() } @@ -1984,13 +2173,13 @@ extension PersistedDiscussionsUpdatesCoordinator { // The following method call adds the received message decrypted by the notification extension into the database. // This allows to be sure that we will be able to mark it as read. - bootstrapMessagesDecryptedWithinNotificationExtension() + await bootstrapMessagesDecryptedWithinNotificationExtension() let op1 = MarkAsReadReceivedMessageOperation(contactPermanentID: contactPermanentID, messageIdentifierFromEngine: messageIdentifierFromEngine) - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - let currentCompletion = composedOp.completionBlock + let composedOp1 = createCompositionOfOneContextualOperation(op1: op1) + let currentCompletion = composedOp1.completionBlock - composedOp.completionBlock = { + composedOp1.completionBlock = { currentCompletion?() @@ -2028,32 +2217,30 @@ extension PersistedDiscussionsUpdatesCoordinator { } } - coordinatorsQueue.addOperation(composedOp) + coordinatorsQueue.addOperation(composedOp1) + // Notify other owned devices about messages that turned not new + do { + let postOp = PostDiscussionReadJSONEngineOperation(op: op1, obvEngine: obvEngine) + let composedOp2 = createCompositionOfOneContextualOperation(op1: postOp) + composedOp2.addDependency(composedOp1) + coordinatorsQueue.addOperation(composedOp2) + } + } private func processUserWantsToWipeFyleMessageJoinWithStatus(ownedCryptoId: ObvCryptoId, objectIDs: Set>) { var operationsToQueue = [Operation]() do { - let requester = RequesterOfMessageDeletion.ownedIdentity(ownedCryptoId: ownedCryptoId, deletionType: .local) - let op1 = WipeFyleMessageJoinsWithStatusOperation(joinObjectIDs: objectIDs, requester: requester) + let op1 = WipeFyleMessageJoinsWithStatusOperation(joinObjectIDs: objectIDs, ownedCryptoId: ownedCryptoId, deletionType: .local) let op2 = DeletePersistedMessagesOperation(operationProvidingPersistedMessageObjectIDsToDelete: op1) let composedOp = createCompositionOfTwoContextualOperation(op1: op1, op2: op2) operationsToQueue.append(composedOp) } do { - let op1 = DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op = BlockOperation() - op.completionBlock = { - ObvMessengerInternalNotification.trashShouldBeEmptied - .postOnDispatchQueue() - } - operationsToQueue.append(op) + let operations = getOperationsForDeletingOrphanedDatabaseItems() + operationsToQueue.append(contentsOf: operations) } operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) @@ -2064,7 +2251,7 @@ extension PersistedDiscussionsUpdatesCoordinator { for discussionPermanentID in discussionPermanentIDs { let op1 = CreateUnprocessedForwardPersistedMessageSentFromMessageOperation(messagePermanentID: messagePermanentID, discussionPermanentID: discussionPermanentID) let op2 = ComputeExtendedPayloadOperation(provider: op1) - let op3 = SendUnprocessedPersistedMessageSentOperation(unprocessedPersistedMessageSentProvider: op1, extendedPayloadProvider: op2, obvEngine: obvEngine) + let op3 = SendUnprocessedPersistedMessageSentOperation(unprocessedPersistedMessageSentProvider: op1, alsoPostToOtherOwnedDevices: true, extendedPayloadProvider: op2, obvEngine: obvEngine) let composedOp = createCompositionOfThreeContextualOperation(op1: op1, op2: op2, op3: op3) coordinatorsQueue.addOperation(composedOp) } @@ -2082,6 +2269,11 @@ extension PersistedDiscussionsUpdatesCoordinator { self.coordinatorsQueue.addOperation(composedOp) } + private func processUserWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: TypeSafeManagedObjectID) { + let op1 = ResumeOrPauseOwnedAttachmentDownloadOperation(sentJoinObjectID: sentJoinObjectID, resumeOrPause: .resume, obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } private func processUserWantsToPauseDownloadReceivedFyleMessageJoinWithStatus(receivedJoinObjectID: TypeSafeManagedObjectID) { let op1 = ResumeOrPauseAttachmentDownloadOperation(receivedJoinObjectID: receivedJoinObjectID, resumeOrPause: .pause, obvEngine: obvEngine) @@ -2089,6 +2281,12 @@ extension PersistedDiscussionsUpdatesCoordinator { self.coordinatorsQueue.addOperation(composedOp) } + private func processUserWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: TypeSafeManagedObjectID) { + let op1 = ResumeOrPauseOwnedAttachmentDownloadOperation(sentJoinObjectID: sentJoinObjectID, resumeOrPause: .pause, obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + self.coordinatorsQueue.addOperation(composedOp) + } + /// Call when a return receipt shall be sent. When `attachmentNumber` is nil, the return receipt concerns a `PersistedMessageReceived`, otherwise, it concerns a `ReceivedFyleMessageJoinWithStatus`. private func processADeliveredReturnReceiptShouldBeSent(returnReceipt: ReturnReceiptJSON, contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId, messageIdentifierFromEngine: Data, attachmentNumber: Int?) { @@ -2117,35 +2315,11 @@ extension PersistedDiscussionsUpdatesCoordinator { private func processPersistedObvOwnedIdentityWasDeleted() { - var operationsToQueue = [Operation]() - do { - let op1 = DeleteAllOrphanedFyleMessageJoinWithStatusOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op1 = DeleteAllOrphanedFyleMessageJoinWithStatusOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op1 = DeleteAllOrphanedFylesAndMoveAssociatedFilesToTrashOperation() - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - operationsToQueue.append(composedOp) - } - do { - let op = BlockOperation() - op.completionBlock = { [weak self] in - self?.trashOrphanedFilesFoundInTheFylesDirectory() - self?.deleteOrphanedExpirations() - self?.deleteOldOrOrphanedRemoteDeleteAndEditRequests() - self?.deleteOldOrOrphanedPendingReactions() - self?.cleanExpiredMuteNotificationsSetting() - self?.cleanOrphanedPersistedMessageTimestampedMetadata() - ObvMessengerInternalNotification.trashShouldBeEmptied - .postOnDispatchQueue() - } - operationsToQueue.append(op) + let operationsToQueue = getOperationsForDeletingOrphanedDatabaseItems { [weak self] _ in + self?.trashOrphanedFilesFoundInTheFylesDirectory() + self?.deleteOldOrOrphanedDatabaseEntries() + self?.cleanExpiredMuteNotificationsSetting() + self?.cleanOrphanedPersistedMessageTimestampedMetadata() } operationsToQueue.makeEachOperationDependentOnThePreceedingOne() coordinatorsQueue.addOperations(operationsToQueue, waitUntilFinished: false) @@ -2186,7 +2360,7 @@ extension PersistedDiscussionsUpdatesCoordinator { } private func processUserWantsToReorderDiscussions(discussionObjectIds: [NSManagedObjectID], ownedIdentity: ObvCryptoId, completionHandler: ((Bool) -> Void)?) { - let op1 = ReorderDiscussionsOperation(discussionObjectIDs: discussionObjectIds, ownedIdentity: ownedIdentity) + let op1 = ReorderDiscussionsOperation(input: .discussionObjectIDs(discussionObjectIDs: discussionObjectIds), ownedIdentity: ownedIdentity, makeSyncAtomRequest: true, syncAtomRequestDelegate: syncAtomRequestDelegate) op1.completionBlock = { completionHandler?(!op1.isCancelled) } @@ -2219,7 +2393,7 @@ extension PersistedDiscussionsUpdatesCoordinator { } private func postMessageReadReceiptIfRequired(messageReceived: PersistedMessageReceived) throws { - guard messageReceived.discussion.localConfiguration.doSendReadReceipt ?? ObvMessengerSettings.Discussions.doSendReadReceipt else { return } + guard messageReceived.discussion?.localConfiguration.doSendReadReceipt ?? ObvMessengerSettings.Discussions.doSendReadReceipt else { return } guard let returnReceiptJSON = messageReceived.returnReceipt else { return } guard let contactCryptoId = messageReceived.contactIdentity?.cryptoId else { return } guard let ownedCryptoId = messageReceived.contactIdentity?.ownedIdentity?.cryptoId else { return } @@ -2252,7 +2426,7 @@ extension PersistedDiscussionsUpdatesCoordinator { private func postAttachementReadReceiptIfRequired(receivedFyleJoin: ReceivedFyleMessageJoinWithStatus) throws { let messageReceived = receivedFyleJoin.receivedMessage - guard messageReceived.discussion.localConfiguration.doSendReadReceipt ?? ObvMessengerSettings.Discussions.doSendReadReceipt else { return } + guard messageReceived.discussion?.localConfiguration.doSendReadReceipt ?? ObvMessengerSettings.Discussions.doSendReadReceipt else { return } guard let returnReceiptJSON = messageReceived.returnReceipt else { return } guard let contactCryptoId = messageReceived.contactIdentity?.cryptoId else { return } guard let ownedCryptoId = messageReceived.contactIdentity?.ownedIdentity?.cryptoId else { return } @@ -2266,225 +2440,628 @@ extension PersistedDiscussionsUpdatesCoordinator { } - private func processReceivedObvMessage(_ obvMessage: ObvMessage, overridePreviousPersistedMessage: Bool, completionHandler: (() -> Void)?) { - + + enum ProcessReceivedObvOwnedMessageResult { + case done + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case couldNotFindContactInDatabase(contactCryptoId: ObvCryptoId) + } + + /// Returns `true` if the message can be marked for deletion in the engine, and `false` otherwise. + private func processReceivedObvOwnedMessage(_ obvOwnedMessage: ObvOwnedMessage) async -> ProcessReceivedObvOwnedMessageResult { + assert(OperationQueue.current != coordinatorsQueue) - os_log("Call to processReceivedObvMessage", log: Self.log, type: .debug) + os_log("Call to processReceivedObvOwnedMessage", log: Self.log, type: .debug) let persistedItemJSON: PersistedItemJSON do { - persistedItemJSON = try PersistedItemJSON.jsonDecode(obvMessage.messagePayload) + persistedItemJSON = try PersistedItemJSON.jsonDecode(obvOwnedMessage.messagePayload) } catch { os_log("Could not decode the message payload", log: Self.log, type: .error) - completionHandler?() assertionFailure() - return + return .done } - - let completionHandlerManager = ManagerOfCompletionHandlerFromEngineOnMessageReception(completionHandler: completionHandler) - // Case #1: The ObvMessage contains a WebRTC signaling message + // Case #1: The ObvOwnedMessage contains a WebRTC signaling message if let webrtcMessage = persistedItemJSON.webrtcMessage { - - os_log("☎️ The message is a WebRTC signaling message", log: Self.log, type: .debug) - - completionHandlerManager.addExpectation(.webRTCSignalingMessage) - + os_log("☎️ The owned message is a WebRTC signaling message", log: Self.log, type: .debug) + await self.processReceivedWebRTCMessageJSON(webrtcMessage, obvOwnedMessage: obvOwnedMessage) + return .done + } + + // Case #2: The ObvOwnedMessage contains a message + + if let messageJSON = persistedItemJSON.message { + os_log("The message is an ObvOwnedMessage", log: Self.log, type: .debug) + let returnReceiptJSON = persistedItemJSON.returnReceipt + let result = await self.createPersistedMessageSentFromReceivedObvOwnedMessage( + obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON) + switch result { + case .sentMessageCreated: + return .done + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .sentMessageCreationFailure: + return .done + } + } + + // Case #3: The ObvOwnedMessage contains a shared configuration for a discussion + + if let discussionSharedConfiguration = persistedItemJSON.discussionSharedConfiguration { + os_log("The message is shared discussion configuration", log: Self.log, type: .debug) + let result = await updateSharedConfigurationOfPersistedDiscussion( + using: discussionSharedConfiguration, + fromOtherDeviceOfOwnedId: obvOwnedMessage.ownedCryptoId, + messageUploadTimestampFromServer: obvOwnedMessage.messageUploadTimestampFromServer, + messageLocalDownloadTimestamp: obvOwnedMessage.localDownloadTimestamp) + switch result { + case .done, .failed: + return .done + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .couldNotFindContactInDatabase(contactCryptoId: let contactCryptoId): + return .couldNotFindContactInDatabase(contactCryptoId: contactCryptoId) + } + } + + // Case #4: The ObvOwnedMessage contains a JSON message indicating that some messages should be globally deleted in a discussion + + if let deleteMessagesJSON = persistedItemJSON.deleteMessagesJSON { + os_log("The owned message is a delete message JSON", log: Self.log, type: .debug) + let op1 = ProcessRemoteWipeMessagesRequestOperation(deleteMessagesJSON: deleteMessagesJSON, + requester: .ownedIdentity(ownedCryptoId: obvOwnedMessage.ownedCryptoId), + messageUploadTimestampFromServer: obvOwnedMessage.messageUploadTimestampFromServer) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done + } + } + + // Case #5: The ObvOwnedMessage contains a JSON message indicating that a discussion should be globally deleted + + if let deleteDiscussionJSON = persistedItemJSON.deleteDiscussionJSON { + os_log("The owned message is a delete discussion JSON", log: Self.log, type: .debug) + cleanJsonMessagesSavedByNotificationExtension() + var operationsToQueue = [Operation]() + do { + let op1 = CancelUploadOrDownloadOfPersistedMessagesOperation( + input: .remoteDiscussionDeletionRequestFromOtherOwnedDevice(deleteDiscussionJSON: deleteDiscussionJSON, obvOwnedMessage: obvOwnedMessage), + obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + } + let op1: ProcessRemoteWipeDiscussionRequestOperation + do { + op1 = ProcessRemoteWipeDiscussionRequestOperation( + deleteDiscussionJSON: deleteDiscussionJSON, + requester: .ownedIdentity(ownedCryptoId: obvOwnedMessage.ownedCryptoId), + messageUploadTimestampFromServer: obvOwnedMessage.messageUploadTimestampFromServer) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + let currentCompletion = composedOp.completionBlock + composedOp.completionBlock = { + currentCompletion?() + composedOp.logReasonIfCancelled(log: Self.log) + } + operationsToQueue.append(composedOp) + } + do { + let operations = getOperationsForDeletingOrphanedDatabaseItems() + operationsToQueue.append(contentsOf: operations) + } + guard !operationsToQueue.isEmpty else { assertionFailure(); return .done } + operationsToQueue.makeEachOperationDependentOnThePreceedingOne() + await coordinatorsQueue.addAndAwaitOperations(operationsToQueue) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done + } + } + + // Case #6: The ObvOwnedMessage contains a JSON message indicating that a received message has been edited by the original sender + + if let updateMessageJSON = persistedItemJSON.updateMessageJSON { + os_log("The owned message is an update message JSON", log: Self.log, type: .debug) + let op1 = EditTextBodyOfReceivedMessageOperation( + updateMessageJSON: updateMessageJSON, + requester: .ownedIdentity(ownedCryptoId: obvOwnedMessage.ownedCryptoId), + messageUploadTimestampFromServer: obvOwnedMessage.messageUploadTimestampFromServer) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done + } + } + + // Case #7: The ObvOwnedMessage contains a JSON message indicating that a reaction has been from another owned device + + if let reactionJSON = persistedItemJSON.reactionJSON { + os_log("The owned message is a reaction", log: Self.log, type: .debug) + let op1 = ProcessSetOrUpdateReactionOnMessageOperation( + reactionJSON: reactionJSON, + requester: .ownedIdentity(ownedCryptoId: obvOwnedMessage.ownedCryptoId), + messageUploadTimestampFromServer: obvOwnedMessage.messageUploadTimestampFromServer) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done + } + } + + // Case #8: The ObvOwnedMessage contains a JSON message containing a request for a group v2 discussion shared settings + + if let querySharedSettingsJSON = persistedItemJSON.querySharedSettingsJSON { + os_log("The owned message contains a request for a group v2 discussion share settings", log: Self.log, type: .debug) + let op1 = RespondToQuerySharedSettingsOperation( + querySharedSettingsJSON: querySharedSettingsJSON, + requester: .ownedIdentity(ownedCryptoId: obvOwnedMessage.ownedCryptoId)) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + return .done + } + + // Case #9: The ObvOwnedMessage contains a JSON message indicating that a contact did take a screen capture of sensitive content + + if let screenCaptureDetectionJSON = persistedItemJSON.screenCaptureDetectionJSON { + os_log("The owned message indicates that a contact or a owned identity did take a screen capture of sensitive content", log: Self.log, type: .debug) + let op1 = ProcessDetectionThatSensitiveMessagesWereCapturedOperation( + screenCaptureDetectionJSON: screenCaptureDetectionJSON, + requester: .ownedIdentity(ownedCryptoId: obvOwnedMessage.ownedCryptoId), + messageUploadTimestampFromServer: obvOwnedMessage.messageUploadTimestampFromServer) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done + } + } + + // Case #10: The ObvOwnedMessage contains a JSON message indicating that a received message with limited visibility was read on another owned device + + if let limitedVisibilityMessageOpenedJSON = persistedItemJSON.limitedVisibilityMessageOpenedJSON { + os_log("The owned message indicates that a received message with limited visibility was read on another owned device", log: Self.log, type: .debug) + guard let discussionId = try? limitedVisibilityMessageOpenedJSON.getDiscussionId(ownedCryptoId: obvOwnedMessage.ownedCryptoId) else { + assertionFailure() + return .done + } + guard let messageId = try? limitedVisibilityMessageOpenedJSON.getMessageId(ownedCryptoId: obvOwnedMessage.ownedCryptoId) else { + assertionFailure() + return .done + } + let op1 = AllowReadingOfMessagesReceivedThatRequireUserActionOperation( + .requestedOnAnotherOwnedDevice( + ownedCryptoId: obvOwnedMessage.ownedCryptoId, + discussionId: discussionId, + messageId: messageId, + messageUploadTimestampFromServer: obvOwnedMessage.messageUploadTimestampFromServer)) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done + } + } + + // Case #11: The ObvOwnedMessage contains a JSON message indicating that certain messages must be marked as "not new" within a discussion as they were read on another device + + if let discussionRead = persistedItemJSON.discussionRead { + os_log("The owned message indicates that certain messages must be marked as not new within a discussion as they were read on another device", log: Self.log, type: .debug) + let op1 = MarkAllMessagesAsNotNewWithinDiscussionOperation(input: .discussionReadJSON(ownedCryptoId: obvOwnedMessage.ownedCryptoId, discussionRead: discussionRead)) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done + } + } + + // Unknow case, we mark the message for deletion + + assertionFailure() + return .done + + } + + + private func processReceivedWebRTCMessageJSON(_ webrtcMessage: WebRTCMessageJSON, obvMessage: ObvMessage) async { + guard abs(obvMessage.downloadTimestampFromServer.timeIntervalSince(obvMessage.messageUploadTimestampFromServer)) < 30 else { + // We discard old WebRTC messages + return + } + await withCheckedContinuation { (continuation: CheckedContinuation) in ObvStack.shared.performBackgroundTask { (context) in guard let persistedContactIdentity = try? PersistedObvContactIdentity.get(persisted: obvMessage.fromContactIdentity, whereOneToOneStatusIs: .any, within: context) else { os_log("☎️ Could not find persisted contact associated with received webrtc message", log: Self.log, type: .fault) - completionHandlerManager.removeExpectation(.webRTCSignalingMessage, processingWasASuccess: false) + continuation.resume() return } - let contactId = OlvidUserId.known(contactObjectID: persistedContactIdentity.typedObjectID, - ownCryptoId: obvMessage.fromContactIdentity.ownedIdentity.cryptoId, - remoteCryptoId: obvMessage.fromContactIdentity.cryptoId, - displayName: persistedContactIdentity.fullDisplayName) - ObvMessengerInternalNotification.newWebRTCMessageWasReceived(webrtcMessage: webrtcMessage, - contactId: contactId, - messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer, - messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine) - .postOnDispatchQueue() - completionHandlerManager.removeExpectation(.webRTCSignalingMessage, processingWasASuccess: true) + let contactId = OlvidUserId.known( + contactObjectID: persistedContactIdentity.typedObjectID, + ownCryptoId: obvMessage.fromContactIdentity.ownedCryptoId, + remoteCryptoId: obvMessage.fromContactIdentity.contactCryptoId, + displayName: persistedContactIdentity.fullDisplayName) + ObvMessengerInternalNotification.newWebRTCMessageWasReceived( + webrtcMessage: webrtcMessage, + fromOlvidUser: contactId, + messageUID: obvMessage.messageUID) + .postOnDispatchQueue() + continuation.resume() + } + } + } + + + private func processReceivedWebRTCMessageJSON(_ webrtcMessage: WebRTCMessageJSON, obvOwnedMessage: ObvOwnedMessage) async { + guard abs(obvOwnedMessage.downloadTimestampFromServer.timeIntervalSince(obvOwnedMessage.messageUploadTimestampFromServer)) < 30 else { + // We discard old WebRTC messages + return + } + await withCheckedContinuation { (continuation: CheckedContinuation) in + ObvStack.shared.performBackgroundTask { (context) in + let ownedUser = OlvidUserId.ownedIdentity(ownedCryptoId: obvOwnedMessage.ownedCryptoId) + ObvMessengerInternalNotification.newWebRTCMessageWasReceived( + webrtcMessage: webrtcMessage, + fromOlvidUser: ownedUser, + messageUID: obvOwnedMessage.messageUID) + .postOnDispatchQueue() + continuation.resume() } } + } + + + enum ProcessReceivedObvMessageResult { + case done + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case couldNotFindContactInDatabase(contactCryptoId: ObvCryptoId) + } + + + private func processReceivedObvMessage(_ obvMessage: ObvMessage, overridePreviousPersistedMessage: Bool) async -> ProcessReceivedObvMessageResult { + + assert(OperationQueue.current != coordinatorsQueue) + + os_log("Call to processReceivedObvMessage", log: Self.log, type: .debug) + + let persistedItemJSON: PersistedItemJSON + do { + persistedItemJSON = try PersistedItemJSON.jsonDecode(obvMessage.messagePayload) + } catch { + os_log("Could not decode the message payload", log: Self.log, type: .error) + assertionFailure() + return .done + } + + // Case #1: The ObvMessage contains a WebRTC signaling message + + if let webrtcMessage = persistedItemJSON.webrtcMessage { + os_log("☎️ The message is a WebRTC signaling message", log: Self.log, type: .debug) + await self.processReceivedWebRTCMessageJSON(webrtcMessage, obvMessage: obvMessage) + return .done + } // Case #2: The ObvMessage contains a message if let messageJSON = persistedItemJSON.message { - os_log("The message is an ObvMessage", log: Self.log, type: .debug) - - completionHandlerManager.addExpectation(.standardMessage) - let returnReceiptJSON = persistedItemJSON.returnReceipt - - createPersistedMessageReceivedFromReceivedObvMessage( + let result = await self.createPersistedMessageReceivedFromReceivedObvMessage( obvMessage, messageJSON: messageJSON, overridePreviousPersistedMessage: overridePreviousPersistedMessage, - returnReceiptJSON: returnReceiptJSON, - completionHandlerManager: completionHandlerManager) - + returnReceiptJSON: returnReceiptJSON) + switch result { + case .receivedMessageCreated: + return .done + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .receivedMessageCreationFailure: + return .done + } } // Case #3: The ObvMessage contains a shared configuration for a discussion if let discussionSharedConfiguration = persistedItemJSON.discussionSharedConfiguration { - os_log("The message is shared discussion configuration", log: Self.log, type: .debug) - - completionHandlerManager.addExpectation(.sharedConfigurationForDiscussion) - - updateSharedConfigurationOfPersistedDiscussion( + let result = await updateSharedConfigurationOfPersistedDiscussion( using: discussionSharedConfiguration, - fromContactIdentity: obvMessage.fromContactIdentity, + fromContact: obvMessage.fromContactIdentity, messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer, - completionHandlerManager: completionHandlerManager) - + messageLocalDownloadTimestamp: obvMessage.localDownloadTimestamp) + switch result { + case .done, .failed: + return .done + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .couldNotFindContactInDatabase(contactCryptoId: let contactCryptoId): + return .couldNotFindContactInDatabase(contactCryptoId: contactCryptoId) + } } // Case #4: The ObvMessage contains a JSON message indicating that some messages should be globally deleted in a discussion if let deleteMessagesJSON = persistedItemJSON.deleteMessagesJSON { os_log("The message is a delete message JSON", log: Self.log, type: .debug) - completionHandlerManager.addExpectation(.globalMessageDeletion) - let op1 = WipeMessagesOperation(messagesToDelete: deleteMessagesJSON.messagesToDelete, - groupIdentifier: deleteMessagesJSON.groupIdentifier, - requester: obvMessage.fromContactIdentity, - messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer, - saveRequestIfMessageCannotBeFound: true) + let op1 = ProcessRemoteWipeMessagesRequestOperation(deleteMessagesJSON: deleteMessagesJSON, + requester: .contact(contactIdentifier: obvMessage.fromContactIdentity), + messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer) let composedOp = createCompositionOfOneContextualOperation(op1: op1) - let currentCompletion = composedOp.completionBlock - composedOp.completionBlock = { - currentCompletion?() - completionHandlerManager.removeExpectation(.globalMessageDeletion, processingWasASuccess: !composedOp.isCancelled) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done } - coordinatorsQueue.addOperation(composedOp) } // Case #5: The ObvMessage contains a JSON message indicating that a discussion should be globally deleted if let deleteDiscussionJSON = persistedItemJSON.deleteDiscussionJSON { os_log("The message is a delete discussion JSON", log: Self.log, type: .debug) - completionHandlerManager.addExpectation(.globalDiscussionDeletion) - let op1 = GetAppropriateActiveDiscussionOperation(contact: obvMessage.fromContactIdentity, groupIdentifier: deleteDiscussionJSON.groupIdentifier) - let composedOp = createCompositionOfOneContextualOperation(op1: op1) - let currentCompletion = composedOp.completionBlock - composedOp.completionBlock = { [weak self] in - currentCompletion?() - assert(op1.isFinished) - assert(op1.persistedDiscussionObjectID != nil || op1.isCancelled) - guard let persistedDiscussionObjectID = op1.persistedDiscussionObjectID else { return } - // An appropriate discussion to delete was found, we can delete it - let requester = RequesterOfMessageDeletion.contact(ownedCryptoId: obvMessage.fromContactIdentity.ownedIdentity.cryptoId, - contactCryptoId: obvMessage.fromContactIdentity.cryptoId, - messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer) - self?.deletePersistedDiscussion(withObjectID: persistedDiscussionObjectID.objectID, - requester: requester, - completionHandler: { success in - completionHandlerManager.removeExpectation(.globalDiscussionDeletion, processingWasASuccess: success) - }) + cleanJsonMessagesSavedByNotificationExtension() + var operationsToQueue = [Operation]() + do { + let op1 = CancelUploadOrDownloadOfPersistedMessagesOperation( + input: .remoteDiscussionDeletionRequestFromContact(deleteDiscussionJSON: deleteDiscussionJSON, obvMessage: obvMessage), + obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + } + let op1: ProcessRemoteWipeDiscussionRequestOperation + do { + op1 = ProcessRemoteWipeDiscussionRequestOperation( + deleteDiscussionJSON: deleteDiscussionJSON, + requester: .contact(contactIdentifier: obvMessage.fromContactIdentity), + messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + let currentCompletion = composedOp.completionBlock + composedOp.completionBlock = { + currentCompletion?() + composedOp.logReasonIfCancelled(log: Self.log) + } + operationsToQueue.append(composedOp) + } + do { + let operations = getOperationsForDeletingOrphanedDatabaseItems() + operationsToQueue.append(contentsOf: operations) + } + guard !operationsToQueue.isEmpty else { assertionFailure(); return .done } + operationsToQueue.makeEachOperationDependentOnThePreceedingOne() + await coordinatorsQueue.addAndAwaitOperations(operationsToQueue) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done } - coordinatorsQueue.addOperation(composedOp) } // Case #6: The ObvMessage contains a JSON message indicating that a received message has been edited by the original sender if let updateMessageJSON = persistedItemJSON.updateMessageJSON { os_log("The message is an update message JSON", log: Self.log, type: .debug) - completionHandlerManager.addExpectation(.messageEdition) - let op1 = EditTextBodyOfReceivedMessageOperation(newTextBody: updateMessageJSON.newTextBody, - requester: obvMessage.fromContactIdentity, - groupIdentifier: updateMessageJSON.groupIdentifier, - receivedMessageToEdit: updateMessageJSON.messageToEdit, - messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer, - saveRequestIfMessageCannotBeFound: true, - newMentions: updateMessageJSON.userMentions) + let op1 = EditTextBodyOfReceivedMessageOperation( + updateMessageJSON: updateMessageJSON, + requester: .contact(contactIdentifier: obvMessage.fromContactIdentity), + messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer) let composedOp = createCompositionOfOneContextualOperation(op1: op1) - let currentCompletion = composedOp.completionBlock - composedOp.completionBlock = { - currentCompletion?() - completionHandlerManager.removeExpectation(.messageEdition, processingWasASuccess: !composedOp.isCancelled) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done } - coordinatorsQueue.addOperation(composedOp) } - // Case #7: The ObvMessage contains a JSON message indicating that a reaction has been add by a contact + // Case #7: The ObvMessage contains a JSON message indicating that a reaction has been added by a contact if let reactionJSON = persistedItemJSON.reactionJSON { - completionHandlerManager.addExpectation(.newReaction) - let op1 = UpdateReactionsOfMessageOperation(contactIdentity: obvMessage.fromContactIdentity, - reactionJSON: reactionJSON, - reactionTimestamp: obvMessage.messageUploadTimestampFromServer, - addPendingReactionIfMessageCannotBeFound: true) + let op1 = ProcessSetOrUpdateReactionOnMessageOperation( + reactionJSON: reactionJSON, + requester: .contact(contactIdentifier: obvMessage.fromContactIdentity), + messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer) let composedOp = createCompositionOfOneContextualOperation(op1: op1) - let currentCompletion = composedOp.completionBlock - composedOp.completionBlock = { - currentCompletion?() - completionHandlerManager.removeExpectation(.newReaction, processingWasASuccess: !composedOp.isCancelled) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done } - coordinatorsQueue.addOperation(composedOp) } // Case #8: The ObvMessage contains a JSON message containing a request for a group v2 discussion shared settings if let querySharedSettingsJSON = persistedItemJSON.querySharedSettingsJSON { - completionHandlerManager.addExpectation(.groupv2DiscussionSharedSettings) - let op1 = RespondToQuerySharedSettingsOperation(fromContactIdentity: obvMessage.fromContactIdentity, - querySharedSettingsJSON: querySharedSettingsJSON) + let op1 = RespondToQuerySharedSettingsOperation( + querySharedSettingsJSON: querySharedSettingsJSON, + requester: .contact(contactIdentifier: obvMessage.fromContactIdentity)) let composedOp = createCompositionOfOneContextualOperation(op1: op1) - let currentCompletion = composedOp.completionBlock - composedOp.completionBlock = { - currentCompletion?() - completionHandlerManager.removeExpectation(.groupv2DiscussionSharedSettings, processingWasASuccess: !composedOp.isCancelled) - } - coordinatorsQueue.addOperation(composedOp) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + return .done } // Case #9: The ObvMessage contains a JSON message indicating that a contact did take a screen capture of sensitive content if let screenCaptureDetectionJSON = persistedItemJSON.screenCaptureDetectionJSON { - completionHandlerManager.addExpectation(.screenCapture) - let op1 = ProcessDetectionThatSensitiveMessagesWereCapturedByContactOperation(contactIdentity: obvMessage.fromContactIdentity, - screenCaptureDetectionJSON: screenCaptureDetectionJSON) + let op1 = ProcessDetectionThatSensitiveMessagesWereCapturedOperation( + screenCaptureDetectionJSON: screenCaptureDetectionJSON, + requester: .contact(contactIdentifier: obvMessage.fromContactIdentity), + messageUploadTimestampFromServer: obvMessage.messageUploadTimestampFromServer) let composedOp = createCompositionOfOneContextualOperation(op1: op1) - let currentCompletion = composedOp.completionBlock - composedOp.completionBlock = { - currentCompletion?() - completionHandlerManager.removeExpectation(.screenCapture, processingWasASuccess: !composedOp.isCancelled) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .processed: + return .done + case nil: + assertionFailure() + return .done } - coordinatorsQueue.addOperation(composedOp) } - // The inbox message has been processed, we can call the completion handler. - // This completion handler is typically used to mark the message from deletion within the FetchManager in the engine. + // Unknow case, we decide to mark the message for deletion - completionHandlerManager.callCompletionHandlerAsap() + assertionFailure() + return .done + + } + + enum UpdateSharedConfigurationOfPersistedDiscussionReceivedFromContactResult { + case done + case failed + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case couldNotFindContactInDatabase(contactCryptoId: ObvCryptoId) + } + + /// This method is called when receiving a message from the engine that contains a shared configuration for a persisted discussion (typically, either one2one, or a group discussion owned by the sender of this message). + /// We use this new configuration to update ours. + private func updateSharedConfigurationOfPersistedDiscussion(using discussionSharedConfiguration: DiscussionSharedConfigurationJSON, fromContact: ObvContactIdentifier, messageUploadTimestampFromServer: Date, messageLocalDownloadTimestamp: Date) async -> UpdateSharedConfigurationOfPersistedDiscussionReceivedFromContactResult { + + let op1 = MergeDiscussionSharedExpirationConfigurationOperation( + discussionSharedConfiguration: discussionSharedConfiguration, + origin: .fromContact(contactIdentifier: fromContact), + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + messageLocalDownloadTimestamp: messageLocalDownloadTimestamp) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .couldNotFindContactInDatabase(contactCryptoId: let contactCryptoId): + return .couldNotFindContactInDatabase(contactCryptoId: contactCryptoId) + case .merged, .contactIsNotOneToOne: + return .done + case nil: + assertionFailure() + return .failed + } } + + enum UpdateSharedConfigurationOfPersistedDiscussionReceivedFromOtherOwnedDevice { + case done + case failed + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case couldNotFindContactInDatabase(contactCryptoId: ObvCryptoId) + } + /// This method is called when receiving a message from the engine that contains a shared configuration for a persisted discussion (typically, either one2one, or a group discussion owned by the sender of this message). /// We use this new configuration to update ours. - private func updateSharedConfigurationOfPersistedDiscussion(using discussionSharedConfiguration: DiscussionSharedConfigurationJSON, fromContactIdentity: ObvContactIdentity, messageUploadTimestampFromServer: Date, completionHandlerManager: ManagerOfCompletionHandlerFromEngineOnMessageReception) { + private func updateSharedConfigurationOfPersistedDiscussion(using discussionSharedConfiguration: DiscussionSharedConfigurationJSON, fromOtherDeviceOfOwnedId ownedCryptoId: ObvCryptoId, messageUploadTimestampFromServer: Date, messageLocalDownloadTimestamp: Date) async -> UpdateSharedConfigurationOfPersistedDiscussionReceivedFromOtherOwnedDevice { + let op1 = MergeDiscussionSharedExpirationConfigurationOperation( discussionSharedConfiguration: discussionSharedConfiguration, - fromContactIdentity: fromContactIdentity, - messageUploadTimestampFromServer: messageUploadTimestampFromServer) + origin: .fromOtherDeviceOfOwnedIdentity(ownedCryptoId: ownedCryptoId), + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + messageLocalDownloadTimestamp: messageLocalDownloadTimestamp) let composedOp = createCompositionOfOneContextualOperation(op1: op1) - let currentCompletion = composedOp.completionBlock - composedOp.completionBlock = { - currentCompletion?() - completionHandlerManager.removeExpectation(.sharedConfigurationForDiscussion, processingWasASuccess: !composedOp.isCancelled ) + await coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .couldNotFindContactInDatabase(contactCryptoId: let contactCryptoId): + return .couldNotFindContactInDatabase(contactCryptoId: contactCryptoId) + case .merged, .contactIsNotOneToOne: + return .done + case nil: + assertionFailure() + return .failed } - coordinatorsQueue.addOperation(composedOp) + } - private func processReportCallEvent(callUUID: UUID, callReport: CallReport, groupIdentifier: GroupIdentifierBasedOnObjectID?, ownedCryptoId: ObvCryptoId) { + private func processReportCallEvent(callUUID: UUID, callReport: CallReport, groupIdentifier: GroupIdentifier?, ownedCryptoId: ObvCryptoId) { let op = ReportCallEventOperation(callUUID: callUUID, callReport: callReport, groupIdentifier: groupIdentifier, @@ -2494,23 +3071,26 @@ extension PersistedDiscussionsUpdatesCoordinator { } - private func processCallHasBeenUpdated(callUUID: UUID, updateKind: CallUpdateKind) { - guard case .state(let newState) = updateKind else { return } - guard newState.isFinalState else { return } - let op = ReportEndCallOperation(callUUID: callUUID) + private func processCallWasEnded(uuidForCallKit: UUID) { + let op = ReportEndCallOperation(callUUID: uuidForCallKit) op.completionBlock = { op.logReasonIfCancelled(log: Self.log) } self.coordinatorsQueue.addOperation(op) } private func processInsertDiscussionIsEndToEndEncryptedSystemMessageIntoDiscussionIfEmpty(discussionObjectID: TypeSafeManagedObjectID, markAsRead: Bool) { - assert(OperationQueue.current != coordinatorsQueue) let op1 = InsertEndToEndEncryptedSystemMessageIfCurrentDiscussionIsEmptyOperation(discussionObjectID: discussionObjectID, markAsRead: markAsRead) let composedOp = createCompositionOfOneContextualOperation(op1: op1) self.coordinatorsQueue.addOperation(composedOp) } - + + enum CreatePersistedMessageReceivedFromReceivedObvMessageResult { + case receivedMessageCreated + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case receivedMessageCreationFailure + } + /// This method *must* be called from `processReceivedObvMessage(...)`. /// This method is called when a new (received) ObvMessage is available. This message can come from one of the two followings places: /// - Either it was serialized within the notification extension, and deserialized here, @@ -2518,13 +3098,11 @@ extension PersistedDiscussionsUpdatesCoordinator { /// In the first case, this method is called using `overridePreviousPersistedMessage` set to `false`: we check whether the message already exists in database (using the message uid from server) and, if this is the /// case, we do nothing. If the message does not exist, we create it. In the second case, `overridePreviousPersistedMessage` set to `true` and we override any existing persisted message. In other words, messages /// comming from the engine always superseed messages comming from the notification extension. - private func createPersistedMessageReceivedFromReceivedObvMessage(_ obvMessage: ObvMessage, messageJSON: MessageJSON, overridePreviousPersistedMessage: Bool, returnReceiptJSON: ReturnReceiptJSON?, completionHandlerManager: ManagerOfCompletionHandlerFromEngineOnMessageReception) { + private func createPersistedMessageReceivedFromReceivedObvMessage(_ obvMessage: ObvMessage, messageJSON: MessageJSON, overridePreviousPersistedMessage: Bool, returnReceiptJSON: ReturnReceiptJSON?) async -> CreatePersistedMessageReceivedFromReceivedObvMessageResult { ObvDisplayableLogs.shared.log("🍤 Starting createPersistedMessageReceivedFromReceivedObvMessage") defer { ObvDisplayableLogs.shared.log("🍤 Ending createPersistedMessageReceivedFromReceivedObvMessage") } - assert(OperationQueue.current != coordinatorsQueue) - os_log("Call to createPersistedMessageReceivedFromReceivedObvMessage for obvMessage %{public}@", log: Self.log, type: .debug, obvMessage.messageIdentifierFromEngine.debugDescription) // Create a persisted message received @@ -2533,20 +3111,72 @@ extension PersistedDiscussionsUpdatesCoordinator { overridePreviousPersistedMessage: overridePreviousPersistedMessage, returnReceiptJSON: returnReceiptJSON, obvEngine: obvEngine) - // Check for a previously received delete or edit request and apply it - let op2 = ApplyExistingRemoteDeleteAndEditRequestOperation(obvMessage: obvMessage, messageJSON: messageJSON) - // Look for a previously received reaction for that message. If found, apply it. - let op3 = ApplyPendingReactionsOperation(obvMessage: obvMessage, messageJSON: messageJSON) - - let composedOp = createCompositionOfThreeContextualOperation(op1: op1, op2: op2, op3: op3) - let currentCompletion = composedOp.completionBlock + do { + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await self.coordinatorsQueue.addAndAwaitOperation(composedOp) + } - composedOp.completionBlock = { - currentCompletion?() - completionHandlerManager.removeExpectation(.standardMessage, processingWasASuccess: !composedOp.isCancelled ) + assert(op1.isFinished) + if !op1.isCancelled { + let op1 = TryToAutoReadDiscussionsReceivedMessagesThatRequireUserActionOperation(input: .operationProvidingDiscussionPermanentID(op: op1)) + let op2 = PostLimitedVisibilityMessageOpenedJSONEngineOperation(op: op1, obvEngine: obvEngine) + let composedOp = createCompositionOfTwoContextualOperation(op1: op1, op2: op2) + await self.coordinatorsQueue.addAndAwaitOperation(composedOp) } - self.coordinatorsQueue.addOperation(composedOp) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .messageCreated: + return .receivedMessageCreated + case nil: + return .receivedMessageCreationFailure + } + + } + + + enum CreatePersistedMessageSentFromReceivedObvOwnedMessageResult { + case sentMessageCreated + case couldNotFindGroupV2InDatabase(groupIdentifier: GroupV2Identifier) + case sentMessageCreationFailure + } + + /// This method *must* be called from ``PersistedDiscussionsUpdatesCoordinator.processReceivedObvOwnedMessage(_:completionHandler:)``. + /// This method is called when a new (received) ObvOwnedMessage is available. This message can come from one of the two followings places: + /// - Either it was serialized within the notification extension, and deserialized here, + /// - Either it was received by the main app. + /// In the first case, this method is called using `overridePreviousPersistedMessage` set to `false`: we check whether the message already exists in database (using the message uid from server) and, if this is the + /// case, we do nothing. If the message does not exist, we create it. In the second case, `overridePreviousPersistedMessage` set to `true` and we override any existing persisted message. In other words, messages + /// comming from the engine always superseed messages comming from the notification extension. + private func createPersistedMessageSentFromReceivedObvOwnedMessage(_ obvOwnedMessage: ObvOwnedMessage, messageJSON: MessageJSON, returnReceiptJSON: ReturnReceiptJSON?) async -> CreatePersistedMessageSentFromReceivedObvOwnedMessageResult { + + ObvDisplayableLogs.shared.log("🍤 Starting createPersistedMessageSentFromReceivedObvOwnedMessage") + defer { ObvDisplayableLogs.shared.log("🍤 Ending createPersistedMessageSentFromReceivedObvOwnedMessage") } + + assert(OperationQueue.current != coordinatorsQueue) + + os_log("Call to createPersistedMessageSentFromReceivedObvOwnedMessage for obvOwnedMessage %{public}@", log: Self.log, type: .debug, obvOwnedMessage.messageIdentifierFromEngine.debugDescription) + + // Create a persisted message sent + let op1 = CreatePersistedMessageSentFromReceivedObvOwnedMessageOperation(obvOwnedMessage: obvOwnedMessage, + messageJSON: messageJSON, + returnReceiptJSON: returnReceiptJSON, + obvEngine: obvEngine) + let composedOp = createCompositionOfOneContextualOperation(op1: op1) + await self.coordinatorsQueue.addAndAwaitOperation(composedOp) + assert(op1.isFinished) + + switch op1.result { + case .couldNotFindGroupV2InDatabase(groupIdentifier: let groupIdentifier): + return .couldNotFindGroupV2InDatabase(groupIdentifier: groupIdentifier) + case .sentMessageCreated: + return .sentMessageCreated + case nil: + assertionFailure() + return .sentMessageCreationFailure + } } @@ -2608,77 +3238,6 @@ extension [Operation] { } - -// MARK: - ManagerOfCompletionHandlerFromEngineOnMessageReception - -/// This actor allows to manage completion handlers received from the engine when receiving a message. -/// It makes it possible to call the completion handler only when all operations processing the message are finished. -/// -/// Each expectation corresponds to a kind of internal JSON we can find in a received `ObvMessage`. -private final class ManagerOfCompletionHandlerFromEngineOnMessageReception { - - enum Expectation { - case webRTCSignalingMessage - case standardMessage - case sharedConfigurationForDiscussion - case globalMessageDeletion - case globalDiscussionDeletion - case messageEdition - case newReaction - case groupv2DiscussionSharedSettings - case screenCapture - } - - // Queue shared among `ManagerOfCompletionHandlerFromEngineOnMessageReception` instances - private static let internalQueue = OperationQueue.createSerialQueue(name: "ManagerOfCompletionHandlerFromEngineOnMessageReception internal queue", qualityOfService: .default) - - private let completionHandler: (() -> Void)? - private var expectations = Set() - private var callCompletionHandlerIfExpectationsIsEmpty = false - - init(completionHandler: (() -> Void)?) { - self.completionHandler = completionHandler - } - - deinit { - debugPrint("ManagerOfCompletionHandlerFromEngineOnMessageReception deinit") - } - - func addExpectation(_ expectation: Expectation) { - Self.internalQueue.addOperation { [weak self] in - self?.expectations.insert(expectation) - } - } - - func removeExpectation(_ expectation: Expectation, processingWasASuccess: Bool) { - // We keep a local strong reference to self - // This allows to make sure self is not deallocated during the execution of the operation - let _self = self - Self.internalQueue.addOperation { - assert(processingWasASuccess == true) - _self.expectations.remove(expectation) - if _self.callCompletionHandlerIfExpectationsIsEmpty == true && _self.expectations.isEmpty == true, let completionHandler = _self.completionHandler { - Task { completionHandler() } - } - } - } - - func callCompletionHandlerAsap() { - let _self = self - // We keep a local strong reference to self - // This allows to make sure self is not deallocated during the execution of the operation - Self.internalQueue.addOperation { - assert(_self.callCompletionHandlerIfExpectationsIsEmpty == false) - _self.callCompletionHandlerIfExpectationsIsEmpty = true - if _self.expectations.isEmpty == true, let completionHandler = _self.completionHandler { - Task { completionHandler() } - } - } - } - -} - - // MARK: - Helpers extension PersistedDiscussionsUpdatesCoordinator { diff --git a/iOSClient/ObvMessenger/ObvMessenger/CoreData/DataMigrationManagerForObvMessenger.swift b/iOSClient/ObvMessenger/ObvMessenger/CoreData/DataMigrationManagerForObvMessenger.swift index cb9b92ea..4204a028 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/CoreData/DataMigrationManagerForObvMessenger.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/CoreData/DataMigrationManagerForObvMessenger.swift @@ -96,9 +96,10 @@ final class DataMigrationManagerForObvMessenger: DataMigrationManager. */ - import Foundation import CoreData import ObvCrypto @@ -25,6 +24,7 @@ import ObvEncoder import OlvidUtils import ObvTypes import ObvUICoreData +import ObvSettings final class PersistedContactGroupToDisplayedContactGroupV49ToV50: NSEntityMigrationPolicy, ObvErrorMaker { diff --git a/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v66_to_v67/MigrationAppDatabase_v66_to_v67.md b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v66_to_v67/MigrationAppDatabase_v66_to_v67.md new file mode 100644 index 00000000..5a1be0f6 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v66_to_v67/MigrationAppDatabase_v66_to_v67.md @@ -0,0 +1,107 @@ +# App database migration from v66 to v67 + + +## ReceivedFyleMessageJoinWithStatus - Updated entity + +- + +The value of this attribute to populate the same attribute in FyleMessageJoinWithStatus. +This is done automatically by the migration manager. + + +## FyleMessageJoinWithStatus - Modified entity + ++ + +Optional, does not prevent lightweight migration. We should use the value found in ReceivedFyleMessageJoinWithStatus. +This is done automatically by the migration manager. +And we deleted the attribute for the migration of SentFyleMessageJoinWithStatus entities as a nil value is appropriate. + + +## PendingMessageReaction - Deleted entity + +We will drop the entries. + + +## PendingRepliedTo - Updated entity + +We will drop the entries. + + +## PersistedContactGroup - Updated entity + ++ + +Optional attribute, that does not require any work. + + +## PersistedDiscussion - Updated entity + ++ +- + +No work to do. + + +## PersistedMessage - Updated entity + + + +The discussion relationship is now optional (required to perform an efficient deletion) + ++ + +We shall use the value found in `PersistedMessageReceived` if this message is actually a received one. This attribute is actually a PendingRepliedTo. +In practice, we delete the mapping from all PersistedMessage subclasses and create a simple custom policy for PersistedMessageReceived instances. + + +## PersistedMessageReceived - Updated entity + +- + +The value found, if any, must be set on the same attribute at the PersistedMessage level. +In practice, we won't do it (as we had to drop the PendingRepliedTo entries) + + +## PersistedMessageSent - Updated entity + ++ + +Requires no work as this is used for messages sent from another owned device. + ++ + +We must copy the value found in the senderThreadIdentifier attribute of the associated discussion. +This is the case because we know that all existing messages sent were sent from the current device. + + +## PersistedMessageSystem - Updated entity + ++ + +Nothing to do here (this is only used in new system messages). + + +## PersistedObvContactDevice - Updated entity + ++ + +To be set to 1 (channel created). This value will by synced during bootstrap. + + +## PersistedObvContactIdentity - Updated entity + ++ + +To be set to true. This value will by synced during bootstrap. + + +## PersistedObvOwnedDevice - New entity + +Nothing to do, this will be set during bootstrap. + + +## RemoteDeleteAndEditRequest - Deleted entity +## RemoteRequestSavedForLater - New entity + +We won't try to migrate those entries. diff --git a/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v66_to_v67/MigrationAppDatabase_v66_to_v67.xcmappingmodel/xcmapping.xml b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v66_to_v67/MigrationAppDatabase_v66_to_v67.xcmappingmodel/xcmapping.xml new file mode 100644 index 00000000..992980ab --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v66_to_v67/MigrationAppDatabase_v66_to_v67.xcmappingmodel/xcmapping.xml @@ -0,0 +1,2511 @@ + + + + + + 134481920 + 42923E4F-DC92-4728-B85B-58FB3AAF1AA2 + 614 + + + + NSPersistenceFrameworkVersion + 1251 + NSStoreModelVersionHashes + + XDDevAttributeMapping + + 0plcXXRN7XHKl5CcF+fwriFmUpON3ZtcI/AfK748aWc= + + XDDevEntityMapping + + qeN1Ym3TkWN1G6dU9RfX6Kd2ccEvcDVWHpd3LpLgboI= + + XDDevMappingModel + + EqtMzvRnVZWkXwBHu4VeVGy8UyoOe+bi67KC79kphlQ= + + XDDevPropertyMapping + + XN33V44TTGY4JETlMoOB5yyTKxB+u4slvDIinv0rtGA= + + XDDevRelationshipMapping + + akYY9LhehVA/mCb4ATLWuI9XGLcjpm14wWL1oEBtIcs= + + + NSStoreModelVersionHashesDigest + +Hmc2uYZK6og+Pvx5GUJ7oW75UG4V/ksQanTjfTKUnxyGWJRMtB5tIRgVwGsrd7lz/QR57++wbvWsr6nxwyS0A== + NSStoreModelVersionHashesVersion + 3 + NSStoreModelVersionIdentifiers + + + + + + + + + PendingRepliedTo + Undefined + 8 + PendingRepliedTo + 1 + + + + + + declined + + + + PersistedMessageSystem + Undefined + 35 + PersistedMessageSystem + 1 + + + + + + specifiedName + + + + downsizedThumbnail + + + + 1 + rawContactIdentity + + + + date + + + + sortIndex + + + + rawExistenceDuration + + + + 1 + contactIdentities + + + + 1 + rawMessageRepliedTo + + + + capabilityOneToOneContacts + + + + 1 + reactions + + + + rawPinnedIndex + + + + 1 + displayedContactGroup + + + + PersistedMessageReactionReceived + Undefined + 9 + PersistedMessageReactionReceived + 1 + + + + + + forwarded + + + + isPending + + + + 1 + illustrativeMessageForDiscussion + + + + lastOutboundMessageSequenceNumber + + + + hiddenProfileHash + + + + messageSortIndex + + + + namesOfOtherMembers + + + + isIncoming + + + + rawCategory + + + + 1 + replies + + + + rawPublishedDetailsStatus + + + + 1 + contactIdentity + + + + timestampOfLastMessage + + + + ownerIdentity + + + + body + + + + PersistedPendingGroupMember + Undefined + 13 + PersistedPendingGroupMember + 1 + + + + + + 1 + attachmentInfos + + + + 1 + ownedIdentity + + + + rawDoNotifyWhenMentionnedInMutedDiscussion + + + + date + + + + sortIndex + + + + senderSequenceNumber + + + + aNewReceivedMessageDoesMentionOwnedIdentity + + + + rawOwnedIdentityIdentity + + + + senderSequenceNumber + + + + PersistedAttachmentSentRecipientInfos + Undefined + 17 + PersistedAttachmentSentRecipientInfos + 1 + + + + + + fullDisplayName + + + + PersistedExpirationForSentMessageWithLimitedVisibility + Undefined + 15 + PersistedExpirationForSentMessageWithLimitedVisibility + 1 + + + + + + 1 + rawOwnedIdentity + + + + fileName + + + + 1 + replies + + + + 1 + contactGroupsV2 + + + + encodedObvDialog + + + + 1 + detailsTrusted + + + + timestamp + + + + senderThreadIdentifier + + + + capabilityWebrtcContinuousICE + + + + 1 + messages + + + + rawStatus + + + + 1 + unsortedDraftFyleJoins + + + + index + + + + lastName + + + + isReplyToAnotherMessage + + + + lastSystemMessageSequenceNumber + + + + hiddenProfileSalt + + + + ownPermissionAdmin + + + + permanentUUID + + + + body + + + + rawInitialParticipantCount + + + + 1 + draft + + + + sectionName + + + + title + + + + 1 + latestSenderSequenceNumbers + + + + rawGroupUID + + + + photoURL + + + + permanentUUID + + + + PersistedCallLogItem + Undefined + 23 + PersistedCallLogItem + 1 + + + + + + retainWipedMessageSent + + + + company + + + + 1 + expirationForReceivedLimitedExistence + + + + groupDescription + + + + 1 + contactIdentity + + + + rawExistenceDuration + + + + rawDoSendReadReceipt + + + + encodedObvDialog + + + + 1 + mentions + + + + timestamp + + + + senderThreadIdentifier + + + + isArchived + + + + rawStatus + + + + rawEmoji + + + + senderThreadIdentifier + + + + 1 + localConfiguration + + + + identity + + + + PersistedObvContactIdentity + Undefined + 37 + PersistedObvContactIdentity + 1 + + + + + + index + + + + 1 + draft + + + + rawStatus + + + + body + + + + groupName + + + + 1 + discussion + + + + 1 + rawReactions + + + + customDisplayName + + + + 1 + systemMessages + + + + senderThreadIdentifier + + + + 1 + pendingMembers + + + + ReceivedFyleMessageJoinWithStatus + Undefined + 27 + ReceivedFyleMessageJoinWithStatus + 1 + + + + + + rawStatus + + + + normalizedSearchKey + + + + permanentUUID + + + + 1 + mentions + + + + identity + + + + normalizedSearchKey + + + + rawStatus + + + + ownPermissionChangeSettings + + + + doesMentionOwnedIdentity + + + + rawOwnedCryptoId + + + + groupUidRaw + + + + subtitle + + + + rawStatus + + + + 1 + rawGroupV2 + + + + rawOwnerIdentityIdentity + + + + rawCategory + + + + rawExistenceDuration + + + + PersistedDiscussionLocalConfiguration + Undefined + 4 + PersistedDiscussionLocalConfiguration + 1 + + + + + + creationTimestamp + + + + firstName + + + + 1 + messageSent + + + + name + + + + 1 + remoteRequestsSavedForLater + + + + rawVisibilityDuration + + + + rawNotificationSound + + + + rawStatus + + + + 1 + expirationForSentLimitedExistence + + + + 1 + message + + + + lastOutboundMessageSequenceNumber + + + + serializedIdentityCoreDetails + + + + timestamp + + + + serializedMessageJSON + + + + PersistedExpirationForReceivedMessageWithLimitedExistence + Undefined + 7 + PersistedExpirationForReceivedMessageWithLimitedExistence + 1 + + + + + + rawGroupOwnerIdentity + + + + couldNotBeSentToServer + + + + PersistedMessageTimestampedMetadata + Undefined + 5 + PersistedMessageTimestampedMetadata + 1 + + + + + + isWiped + + + + identifier + + + + 1 + contacts + + + + uuid + + + + 1 + displayedContactGroup + + + + 1 + optionalCallLogItem + + + + doesMentionOwnedIdentity + + + + customPhotoFilename + + + + 1 + ownedIdentity + + + + timestampOfLastMessage + + + + fileName + + + + 1 + messageInfo + + + + normalizedSortKey + + + + rawVisibilityDuration + + + + numberOfNewMessages + + + + isActive + + + + totalByteCount + + + + ownPermissionEditOrRemoteDeleteOwnMessages + + + + forwarded + + + + rawReportKind + + + + note + + + + 1 + illustrativeMessageForDiscussion + + + + title + + + + readOnce + + + + 1 + messages + + + + aNewReceivedMessageDoesMentionOwnedIdentity + + + + rawOwnedIdentityIdentity + + + + 1 + rawContact + + + + rawVisibilityDuration + + + + expirationDate + + + + groupIdentifier + + + + 1 + expirationForReceivedLimitedVisibility + + + + photoURLFromEngine + + + + apiKeyExpirationDate + + + + readOnce + + + + rawPerformInteractionDonation + + + + uuid + + + + 1 + messageRepliedToIdentifier + + + + lastSystemMessageSequenceNumber + + + + sortDisplayName + + + + 1 + contact + + + + serverTimestamp + + + + 1 + messages + + + + rawGroupUidRaw + + + + PersistedMessageReceived + Undefined + 33 + PersistedMessageReceived + 1 + + + + + + messageIdentifierFromEngine + + + + messageSortIndex + + + + rawIdentityIdentity + + + + 1 + illustrativeMessage + + + + 1 + ownedIdentity + + + + forwarded + + + + 1 + displayedContactGroup + + + + normalizedSearchKey + + + + fullDisplayName + + + + mentionRangeLowerBound + + + + title + + + + 1 + rawOwnedIdentity + + + + index + + + + PersistedDiscussionSharedConfiguration + Undefined + 20 + PersistedDiscussionSharedConfiguration + 1 + + + + + + permissionAdmin + + + + 1 + replies + + + + 1 + messageRepliedToIdentifier + + + + permanentUUID + + + + isKeycloakManaged + + + + uti + + + + ownPermissionRemoteDeleteAnything + + + + isReplyToAnotherMessage + + + + startDate + + + + ownerIdentity + + + + updateInProgress + + + + 1 + draft + + + + isArchived + + + + rawStatus + + + + readOnce + + + + DisplayedContactGroup + Undefined + 24 + DisplayedContactGroup + 1 + + + + + + 1 + messageSentWithLimitedVisibility + + + + messageIdentifierFromEngine + + + + 1 + asPublishedDetailsOfGroup + + + + badgeCountForDiscussionsTab + + + + 1 + sharedConfiguration + + + + version + + + + rawRetainWipedOutboundMessages + + + + 1 + ownedIdentity + + + + 1 + expirationForSentLimitedVisibility + + + + date + + + + normalizedSearchKey + + + + 1 + asGroupV2Member + + + + 1 + discussion + + + + PersistedMessageReactionSent + Undefined + 26 + PersistedMessageReactionSent + 1 + + + + + + rawOwnedIdentityIdentity + + + + PersistedContactGroupJoined + Undefined + 38 + PersistedContactGroupJoined + 1 + + + + + + recipientIdentity + + + + permanentUUID + + + + rawOwnedIdentityIdentity + + + + 1 + devices + + + + 1 + rawDiscussion + + + + 1 + optionalContactIdentity + + + + isReplyToAnotherMessage + + + + identity + + + + 1 + remoteRequestsSavedForLater + + + + mentionRangeUpperBound + + + + 1 + rawContactGroup + + + + permanentUUID + + + + expirationDate + + + + permissionChangeSettings + + + + pinnedSectionKeyPath + + + + permanentUUID + + + + 1 + sentMessage + + + + ownPermissionSendMessage + + + + permanentUUID + + + + unknownContactsCount + + + + photoURL + + + + 1 + mentions + + + + 1 + groupV1 + + + + 1 + ownedContactGroups + + + + lastOutboundMessageSequenceNumber + + + + 1 + owner + + + + sendRequested + + + + PersistedContactGroupOwned + Undefined + 29 + PersistedContactGroupOwned + 1 + + + + + + missedMessageCount + + + + 1 + unsortedFyleMessageJoinWithStatus + + + + badgeCountForInvitationsTab + + + + 1 + discussion + + + + rawTimeBasedRetention + + + + 1 + persistedMetadata + + + + rawKind + + + + numberOfNewMessages + + + + 1 + message + + + + 1 + ownedIdentity + + + + PersistedUserMentionInMessage + Undefined + 10 + PersistedUserMentionInMessage + 1 + + + + + + serializedIdentityCoreDetails + + + + PersistedExpirationForSentMessageWithLimitedExistence + Undefined + 8 + PersistedExpirationForSentMessageWithLimitedExistence + 1 + + + + + + returnReceiptKey + + + + YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8Q +D05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGkCwwTFFUkbnVsbNMNDg8QERJfEA9OU0NvbnN0YW50VmFsdWVfEBBOU0V4cHJlc3Npb25UeXBlViRjbGFzc4ACEACAAxAB0hUWFxhaJGNsYXNzbmFtZVgkY2xhc3Nlc18QGU5TQ29uc3RhbnRWYWx1ZUV4cHJlc3Npb26jFxkaXE5TRXhwcmVzc2lvblhOU09iamVjdAgRGiQpMjdJTFFTWF5ld4qRk5WXmZ6pss7S3wAAAAAAAAEBAAAAAAAAABsAAAAAAAAAAAAAAAAAAADo + + rawSecureChannelStatus + + + + rawStatus + + + + 1 + latestSenderSequenceNumbers + + + + defaultEmoji + + + + permanentUUID + + + + 1 + pendingMembers + + + + creationTimestamp + + + + isActive + + + + rawMentionnedIdentity + + + + rawEmoji + + + + uti + + + + PersistedDraftFyleJoin + Undefined + 12 + PersistedDraftFyleJoin + 1 + + + + + + identifier + + + + permissionEditOrRemoteDeleteOwnMessages + + + + 1 + persistedMetadata + + + + rawPinnedIndex + + + + photoURL + + + + personalNote + + + + rawStatus + + + + 1 + logContacts + + + + rawCategory + + + + 1 + illustrativeMessage + + + + 1 + discussion + + + + lastSystemMessageSequenceNumber + + + + Undefined + 18 + PersistedObvOwnedDevice + 1 + + + + + + 1 + discussion + + + + Fyle + Undefined + 16 + Fyle + 1 + + + + + + intrinsicFilename + + + + senderIdentifier + + + + 1 + asTrustedDetailsOfGroup + + + + capabilityGroupsV2 + + + + rawReceptionStatus + + + + 1 + discussion + + + + callUUID + + + + 1 + unsortedFyleMessageJoinWithStatuses + + + + remoteIdentity + + + + 1 + callLogContact + + + + permanentUUID + + + + customPhotoFilename + + + + PersistedCallLogContact + Undefined + 19 + PersistedCallLogContact + 1 + + + + + + 1 + rawContactGroup + + + + PersistedObvContactDevice + Undefined + 36 + PersistedObvContactDevice + 1 + + + + + + returnReceiptNonce + + + + sectionIdentifier + + + + totalByteCount + + + + 1 + rawIdentity + + + + 1 + discussions + + + + muteNotificationsEndDate + + + + 1 + rawOtherMembers + + + + 1 + discussion + + + + rawStatus + + + + expirationDate + + + + isCertifiedByOwnKeycloak + + + + 1 + sharedConfiguration + + + + 1 + draft + + + + 1 + draft + + + + timestamp + + + + 1 + draft + + + + PersistedInvitation + Undefined + 22 + PersistedInvitation + 1 + + + + + + latestRegistrationDate + + + + permissionRemoteDeleteAnything + + + + rawStatus + + + + rawAPIKeyStatus + + + + 1 + fyle + + + + rawOwnedIdentityIdentity + + + + rawVisibilityDuration + + + + rawOwnedIdentityIdentity + + + + 1 + messageRepliedToIdentifier + + + + 1 + groupV2 + + + + 1 + rawOneToOneDiscussion + + + + 1 + contactIdentities + + + + normalizedSearchKey + + + + Undefined + 28 + RemoteRequestSavedForLater + 1 + + + + + + PersistedUserMentionInDraft + Undefined + 25 + PersistedUserMentionInDraft + 1 + + + + + + sha256 + + + + senderThreadIdentifier + + + + 1 + discussion + + + + capabilityOneToOneContacts + + + + downsizedThumbnail + + + + customName + + + + endDate + + + + 1 + rawMessageRepliedTo + + + + normalizedSortKey + + + + 1 + message + + + + pinnedSectionKeyPath + + + + mentionRangeLowerBound + + + + groupNameCustom + + + + 1 + remoteRequestsSavedForLater + + + + PersistedGroupV2Details + Undefined + 2 + PersistedGroupV2Details + 1 + + + + + + PersistedGroupV2Member + Undefined + 1 + PersistedGroupV2Member + 1 + + + + + + timestampAllAttachmentsSent + + + + senderSequenceNumber + + + + uti + + + + 1 + localConfiguration + + + + rawAutoRead + + + + rawVisibilityDuration + + + + 1 + rawOwnedIdentity + + + + 1 + messageReceivedWithLimitedExistence + + + + isOneToOne + + + + 1 + message + + + + objectInsertionDate + + + + PersistedInvitationOneToOneInvitationSent + Undefined + 3 + PersistedInvitationOneToOneInvitationSent + 1 + + + + + + permissionSendMessage + + + + 1 + rawGroup + + + + 1 + rawMessageRepliedTo + + + + senderThreadIdentifier + + + + rawAPIPermissions + + + + rawPublishedDetailsStatus + + + + readOnce + + + + 1 + messageSystem + + + + rawStatus + + + + 1 + latestSenderSequenceNumbers + + + + numberOfNewMessages + + + + ObvMessenger/CoreData/ObvMessenger.xcdatamodeld/ObvMessenger 66.xcdatamodel + YnBsaXN0MDDUAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAApYJHZlcnNpb25ZJGFyY2hp +dmVyVCR0b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEAAAAIAAAACVRyb290gAGvESSwAAAACwAAAAwAAAAbAAAANwAAADgAAAA5AAAAoQAAAKIAAACjAAAApAAAAKUAAACmAAAApwAAAKgAAACpAAAAqgAAAKsAAACsAAAArQAAAK4AAACvAAAAsAAAALEAAACyAAAAswAAALQAAAC1AAAAtgAAALcAAAC4AAAAuQAAALoAAAC7AAAAvAAAAL0AAAC+AAAAvwAAAMAAAADBAAAAwgAAAMMAAADEAAAAxQAAAMYAAADHAAAAyAAAAMkAAADKAAAAywAAAMwAAADNAAAAzgAAAM8AAADQAAAA0QAAANIAAADtAAAA7gAAAO8AAAD1AAAA9gAAAQIAAAEYAAABGQAAARoAAAEbAAABHAAAAR0AAAEeAAABHwAAASAAAAEhAAABOgAAAT0AAAFEAAABSgAAAVkAAAFoAAABawAAAXoAAAGJAAABjAAAAOwAAAGcAAABqwAAAa8AAAGzAAABwgAAAcgAAAHJAAAB0QAAAeAAAAHhAAAB6gAAAfQAAAH1AAAB9gAAAfcAAAIMAAACDQAAAhUAAAIWAAACFwAAAiMAAAI3AAACOAAAAjkAAAI6AAACOwAAAjwAAAI9AAACPgAAAj8AAAJOAAACXQAAAmwAAAJwAAACfwAAAo4AAAKdAAACrAAAArsAAALHAAAC2QAAAtoAAALbAAAC3AAAAt0AAALeAAAC3wAAAuAAAALvAAAC/gAAAw0AAAMcAAADHQAAAywAAAM7AAADSgAAA1IAAANnAAADaAAAA3AAAAN8AAADkAAAA58AAAOuAAADvQAAA8EAAAPQAAAD3wAAA+4AAAP9AAAEDAAABBgAAAQqAAAEOQAABEgAAARXAAAEZgAABHUAAASEAAAEkwAABKgAAASpAAAEsQAABLIAAAS+AAAE0gAABOEAAATwAAAE/wAABQMAAAUSAAAFIQAABSIAAAUxAAAFQAAABU8AAAVbAAAFbQAABW4AAAVvAAAFcAAABXEAAAVyAAAFcwAABXQAAAAxAAAFgwAABZIAAAWTAAAFogAABbEAAAXLAAAFzAAABdIAAAXeAAAF9AAABgMAAAYGAAAGFQAABiQAAAYoAAAGLQAABi4AAAY9AAAGTAAABk8AAAZeAAAGbQAABnEAAAaAAAAGjwAABpAAAAa8AAAGvQAABr4AAAa/AAAGwAAABsEAAAbCAAAGwwAABsQAAAbFAAAGxgAABscAAAbIAAAGyQAABsoAAAbLAAAGzAAABs0AAAbOAAAGzwAABuQAAAblAAAG7QAABvkAAAcNAAAHHAAABysAAAc6AAAHPgAAB00AAAdcAAAHawAAB3oAAAeJAAAHlQAAB6cAAAe2AAAHtwAAB8YAAAfVAAAH5AAAB+UAAAf0AAAIAwAACBIAAAgnAAAIKAAACDAAAAg8AAAIUAAACF8AAAhuAAAIfQAACIEAAAiQAAAInwAACK4AAAi9AAAIzAAACNgAAAjqAAAI+QAACQgAAAkXAAAJJgAACTUAAAlEAAAJUwAACWgAAAlpAAAJcQAACX0AAAmRAAAJoAAACa8AAAm+AAAJwgAACdEAAAngAAAJ7wAACf4AAAoNAAAKGQAACisAAAo6AAAKSQAACkoAAApZAAAKaAAACoIAAAqDAAAKiQAACpUAAAqrAAAKugAACr0AAArMAAAK2wAACt8AAArlAAAK5gAACucAAAr2AAALBQAACwgAAAsXAAALJgAACyoAAAs5AAALSAAAC0kAAAtvAAALcAAAC3EAAAtyAAALcwAAC3QAAAt1AAALdgAAC3cAAAt4AAALeQAAC3oAAAt7AAALfAAAC30AAAt+AAALkwAAC5QAAAucAAALqAAAC7wAAAvLAAAL2gAAC+kAAAvtAAAL/AAADAsAAAwaAAAMKQAADDgAAAxEAAAMVgAADGUAAAx0AAAMgwAADJIAAAyhAAAMsAAADL8AAAzUAAAM1QAADN0AAAzpAAAM/QAADQwAAA0bAAANKgAADS4AAA09AAANTAAADVsAAA1qAAANeQAADYUAAA2XAAANpgAADbUAAA3EAAAN0wAADdQAAA3jAAAN8gAADgEAAA4WAAAOFwAADh8AAA4rAAAOPwAADk4AAA5dAAAObAAADnAAAA5/AAAOjgAADp0AAA6sAAAOuwAADscAAA7ZAAAO6AAADvcAAA8GAAAPFQAADyQAAA8zAAAPQgAAD1cAAA9YAAAPYAAAD2wAAA+AAAAPjwAAD54AAA+tAAAPsQAAD8AAAA/PAAAP3gAAD+0AAA/8AAAQCAAAEBoAABApAAAQOAAAEEcAABBWAAAQZQAAEHQAABCDAAAQmAAAEJkAABChAAAQrQAAEMEAABDQAAAQ3wAAEO4AABDyAAARAQAAERAAABEfAAARLgAAET0AABFJAAARWwAAEWoAABF5AAARiAAAEZcAABGmAAARtQAAEcQAABHZAAAR2gAAEeIAABHuAAASAgAAEhEAABIgAAASLwAAEjMAABJCAAASUQAAEmAAABJvAAASfgAAEooAABKcAAASqwAAEroAABLJAAAS2AAAEucAABL2AAATBQAAExoAABMbAAATIwAAEy8AABNDAAATUgAAE2EAABNwAAATdAAAE4MAABOSAAAToQAAE7AAABO/AAATywAAE90AABPsAAAT+wAAFAoAABQZAAAUKAAAFDcAABRGAAAUWwAAFFwAABRkAAAUcAAAFIQAABSTAAAUogAAFLEAABS1AAAUxAAAFNMAABTiAAAU8QAAFQAAABUMAAAVHgAAFS0AABU8AAAVSwAAFVoAABVpAAAVeAAAFYcAABWcAAAVnQAAFaUAABWxAAAVxQAAFdQAABXjAAAV8gAAFfYAABYFAAAWFAAAFiMAABYyAAAWQQAAFk0AABZfAAAWbgAAFn0AABaMAAAWmwAAFrUAABa2AAAWvAAAFsgAABbeAAAW7QAAFvAAABb/AAAXDgAAFxIAABcXAAAXGAAAFycAABc2AAAXOQAAF0gAABdXAAAXWwAAF2oAABd5AAAXegAAF7YAABe3AAAXuAAAF7kAABe6AAAXuwAAF7wAABe9AAAXvgAAF78AABfAAAAXwQAAF8IAABfDAAAXxAAAF8UAABfGAAAXxwAAF8gAABfJAAAXygAAF8sAABfMAAAXzQAAF84AABfPAAAX0AAAF9EAABfmAAAX5wAAF+8AABf7AAAYDwAAGB4AABgtAAAYPAAAGEAAABhPAAAYXgAAGG0AABh8AAAYiwAAGJcAABipAAAYuAAAGMcAABjWAAAY5QAAGPQAABkDAAAZEgAAGScAABkoAAAZMAAAGTwAABlQAAAZXwAAGW4AABl9AAAZgQAAGZAAABmfAAAZrgAAGb0AABnMAAAZ2AAAGeoAABn5AAAaCAAAGhcAABomAAAaNQAAGkQAABpTAAAaaAAAGmkAABpxAAAafQAAGpEAABqgAAAarwAAGr4AABrCAAAa0QAAGuAAABrvAAAa/gAAGw0AABsZAAAbKwAAGzoAABtJAAAbWAAAG2cAABuBAAAbggAAG4gAABuUAAAbqgAAG7kAABu8AAAbywAAG9oAABvdAAAb7AAAG/sAABv+AAAcDQAAHBwAABwgAAAcLwAAHD4AABw/AAAcSwAAHEwAABxNAAAcTgAAHE8AABxkAAAcZQAAHG0AABx5AAAcjQAAHJwAAByrAAAcugAAHL4AABzNAAAc3AAAHOsAABz6AAAdCQAAHRUAAB0nAAAdNgAAHUUAAB1UAAAdYwAAHXIAAB2BAAAdkAAAHZgAAB2tAAAdrgAAHbYAAB3CAAAd1gAAHeUAAB30AAAeAwAAHgcAAB4WAAAeJQAAHjQAAB5DAAAeUgAAHl4AAB5wAAAefwAAHo4AAB6dAAAerAAAHsYAAB7HAAAezQAAHtkAAB7vAAAe/gAAHwEAAB8QAAAfHwAAHyIAAB8xAAAfQAAAH0MAAB9SAAAfYQAAH2UAAB90AAAfgwAAH4QAAB+iAAAfowAAH6QAAB+lAAAfpgAAH6cAAB+oAAAfqQAAH6oAAB+rAAAfrAAAH60AAB+uAAAfrwAAH8QAAB/FAAAfzQAAH9kAAB/tAAAf/AAAIAsAACAaAAAgHgAAIC0AACA8AAAgSwAAIFoAACBpAAAgdQAAIIcAACCWAAAgpQAAILQAACDDAAAg3QAAIN4AACDkAAAg8AAAIQYAACEVAAAhGAAAIScAACE2AAAhOQAAIUgAACFXAAAhWgAAIWkAACF4AAAhfAAAIYsAACGaAAAhmwAAIakAACGqAAAhqwAAIawAACGtAAAhrgAAIcMAACHEAAAhzAAAIdgAACHsAAAh+wAAIgoAACIZAAAiHQAAIiwAACI7AAAiSgAAIlkAACJoAAAidAAAIoYAACKVAAAipAAAIrMAACLCAAAi0QAAIuAAACLvAAAjBAAAIwUAACMNAAAjGQAAIy0AACM8AAAjSwAAI1oAACNeAAAjbQAAI3wAACOLAAAjmgAAI6kAACO1AAAjxwAAI9YAACPlAAAj9AAAJAMAACQSAAAkIQAAJDAAACRFAAAkRgAAJE4AACRaAAAkbgAAJH0AACSMAAAkmwAAJJ8AACSuAAAkvQAAJMwAACTbAAAk6gAAJPYAACUIAAAlFwAAJSYAACU1AAAlRAAAJVMAACViAAAlcQAAJYYAACWHAAAljwAAJZsAACWvAAAlvgAAJc0AACXOAAAl3QAAJeEAACXwAAAl/wAAJg4AACYdAAAmLAAAJjgAACZKAAAmWQAAJmgAACZ3AAAmhgAAJocAACaWAAAmpQAAJrQAACbJAAAmygAAJtIAACbeAAAm8gAAJwEAACcQAAAnHwAAJyMAACcyAAAnQQAAJ1AAACdfAAAnbgAAJ3oAACeMAAAnmwAAJ6oAACe5AAAnyAAAJ9cAACfmAAAn9QAAKAoAACgLAAAoEwAAKB8AACgzAAAoQgAAKFEAAChgAAAoZAAAKHMAACiCAAAokQAAKKAAACivAAAouwAAKM0AACjcAAAo3QAAKOwAACj7AAApCgAAKRkAACkoAAApNwAAKTgAACk8AAApRQAAKUYAACloAAApaQAAKW8AACl7AAApkQAAKaAAACmjAAApsgAAKcEAACnEAAAp0wAAKeIAACnlAAAp9AAAKgMAACoHAAAqFgAAKiUAAComAAAqVAAAKlUAACpWAAAqVwAAKlgAACpZAAAqWgAAKlsAACpcAAAqXQAAKl4AACpfAAAqYAAAKmEAACpiAAAqYwAAKmQAACplAAAqZgAAKmcAACpoAAAqfQAAKn4AACqGAAAqkgAAKqYAACq1AAAqxAAAKtMAACrXAAAq5gAAKvUAACsEAAArEwAAKyIAACsuAAArQAAAK08AACteAAArbQAAK3wAACuLAAArmgAAK6kAACu+AAArvwAAK8cAACvTAAAr5wAAK/YAACwFAAAsFAAALBgAACwnAAAsNgAALEUAACxUAAAsYwAALG8AACyBAAAskAAALJ8AACyuAAAsvQAALMwAACzbAAAs6gAALP8AAC0AAAAtCAAALRQAAC0oAAAtNwAALUYAAC1VAAAtWQAALWgAAC13AAAthgAALZUAAC2kAAAtsAAALcIAAC3RAAAt4AAALe8AAC3+AAAuDQAALhwAAC4rAAAuQAAALkEAAC5JAAAuVQAALmkAAC54AAAuhwAALpYAAC6aAAAuqQAALrgAAC7HAAAu1gAALuUAAC7xAAAvAwAALxIAAC8hAAAvMAAALz8AAC9AAAAvTwAAL14AAC9tAAAvggAAL4MAAC+LAAAvlwAAL6sAAC+6AAAvyQAAL9gAAC/cAAAv6wAAL/oAADAJAAAwGAAAMCcAADAzAAAwRQAAMFQAADBjAAAwcgAAMIEAADCCAAAwkQAAMKAAADCvAAAwxAAAMMUAADDNAAAw2QAAMO0AADD8AAAxCwAAMRoAADEeAAAxLQAAMTwAADFLAAAxWgAAMWkAADF1AAAxhwAAMZYAADGlAAAxtAAAMcMAADHSAAAx4QAAMfAAADIFAAAyBgAAMg4AADIaAAAyLgAAMj0AADJMAAAyWwAAMl8AADJuAAAyfQAAMowAADKbAAAyqgAAMrYAADLIAAAy1wAAMuYAADL1AAAzBAAAMx4AADMfAAAzJQAAMzEAADNHAAAzVgAAM1kAADNoAAAzdwAAM3oAADOJAAAzmAAAM5sAADOqAAAzuQAAM70AADPMAAAz2wAAM9wAADPiAAAz4wAAM/gAADP5AAA0AQAANA0AADQhAAA0MAAAND8AADROAAA0UgAANGEAADRwAAA0fwAANI4AADSdAAA0qQAANLsAADTKAAA02QAANOgAADT3AAA1BgAANRUAADUkAAA1KAAANS8AADUwAAA1UgAANVMAADVZAAA1ZQAANXsAADWKAAA1jQAANZwAADWrAAA1rgAANb0AADXMAAA1zwAANd4AADXtAAA18QAANgAAADYPAAA2EAAANhoAADYbAAA2HAAANh0AADYyAAA2MwAANjsAADZHAAA2WwAANmoAADZ5AAA2iAAANowAADabAAA2qgAANrkAADbIAAA21wAANuMAADb1AAA3BAAANxMAADciAAA3MQAAN0AAADdPAAA3XgAAN3MAADd0AAA3fAAAN4gAADecAAA3qwAAN7oAADfJAAA3zQAAN9wAADfrAAA3+gAAOAkAADgYAAA4JAAAODYAADhFAAA4VAAAOGMAADhyAAA4gQAAOJAAADifAAA4tAAAOLUAADi9AAA4yQAAON0AADjsAAA4+wAAOQoAADkOAAA5HQAAOSwAADk7AAA5SgAAOVkAADllAAA5dwAAOYYAADmVAAA5pAAAObMAADnCAAA50QAAOeAAADnjAAA56AAAOe8AADoJAAA6CgAAOhAAADocAAA6MgAAOkEAADpEAAA6UwAAOmIAADplAAA6dAAAOoMAADqGAAA6lQAAOqQAADqoAAA6twAAOsYAADrHAAA6zQAAOuIAADrjAAA66wAAOvcAADsLAAA7GgAAOykAADs4AAA7PAAAO0sAADtaAAA7aQAAO3gAADuHAAA7kwAAO6UAADu0AAA7wwAAO9IAADvhAAA7+wAAO/wAADwCAAA8DgAAPCQAADwzAAA8NgAAPEUAADxUAAA8VwAAPGYAADx1AAA8eAAAPIcAADyWAAA8mgAAPKkAADy4AAA8uQAAPNEAADzSAAA80wAAPNQAADzVAAA81gAAPNcAADzsAAA87QAAPPUAAD0BAAA9FQAAPSQAAD0zAAA9QgAAPUYAAD1VAAA9ZAAAPXMAAD2CAAA9kQAAPZ0AAD2vAAA9vgAAPc0AAD3cAAA96wAAPfoAAD4JAAA+GAAAPi0AAD4uAAA+NgAAPkIAAD5WAAA+ZQAAPnQAAD6DAAA+hwAAPpYAAD6lAAA+tAAAPsMAAD7SAAA+3gAAPvAAAD7/AAA/DgAAPx0AAD8sAAA/OwAAP0oAAD9ZAAA/bgAAP28AAD93AAA/gwAAP5cAAD+mAAA/tQAAP8QAAD/IAAA/1wAAP+YAAD/1AABABAAAQBMAAEAfAABAMQAAQEAAAEBPAABAXgAAQG0AAEB8AABAiwAAQJoAAECvAABAsAAAQLgAAEDEAABA2AAAQOcAAED2AABBBQAAQQkAAEEYAABBJwAAQTYAAEFFAABBVAAAQWAAAEFyAABBgQAAQZAAAEGfAABBrgAAQcgAAEHJAABBzwAAQdsAAEHxAABCAAAAQgMAAEISAABCIQAAQiQAAEIzAABCQgAAQkUAAEJUAABCYwAAQmcAAEJ2AABChQAAQoYAAEKWAABClwAAQpgAAEKZAABCmgAAQpsAAEKwAABCsQAAQrkAAELFAABC2QAAQugAAEL3AABDBgAAQwoAAEMZAABDKAAAQzcAAENGAABDVQAAQ2EAAENzAABDggAAQ5EAAEOgAABDrwAAQ74AAEPNAABD3AAAQ/EAAEPyAABD+gAARAYAAEQaAABEKQAARDgAAERHAABESwAARFoAAERpAABEeAAARIcAAESWAABEogAARLQAAETDAABE0gAAROEAAETwAABE/wAARQ4AAEUdAABFMgAARTMAAEU7AABFRwAARVsAAEVqAABFeQAARYgAAEWMAABFmwAARaoAAEW5AABFyAAARdcAAEXjAABF9QAARgQAAEYTAABGIgAARjEAAEZLAABGTAAARlIAAEZeAABGdAAARoMAAEaGAABGlQAARqQAAEaoAABGrAAARq0AAEa8AABGywAARs4AAEbdAABG7AAARvAAAEb/AABHDgAARxoAAEcbAABHHAAARx0AAEcyAABHMwAARzsAAEdHAABHWwAAR2oAAEd5AABHiAAAR4wAAEebAABHqgAAR7kAAEfIAABH1wAAR+MAAEf1AABIBAAASBMAAEgiAABIMQAASEAAAEhPAABIXgAASHMAAEh0AABIfAAASIgAAEicAABIqwAASLoAAEjJAABIzQAASNwAAEjrAABI+gAASQkAAEkYAABJJAAASTYAAElFAABJVAAASWMAAElyAABJlAAASZUAAEmbAABJpwAASb0AAEnMAABJzwAASd4AAEntAABJ8AAASf8AAEoOAABKEQAASiAAAEovAABKMwAASkIAAEpRAABKUgAASm4AAEpvAABKcAAASnEAAEpyAABKcwAASnQAAEp1AABKigAASosAAEqTAABKnwAASrMAAErCAABK0QAASuAAAErkAABK8wAASwIAAEsRAABLIAAASy8AAEs7AABLTQAAS1wAAEtrAABLegAAS4kAAEuYAABLpwAAS7YAAEvLAABLzAAAS9QAAEvgAABL9AAATAMAAEwSAABMIQAATCUAAEw0AABMQwAATFIAAExhAABMcAAATHwAAEyOAABMnQAATKwAAEy7AABMygAATNkAAEzoAABM9wAATQwAAE0NAABNFQAATSEAAE01AABNRAAATVMAAE1iAABNZgAATXUAAE2EAABNkwAATaIAAE2xAABNvQAATc8AAE3eAABN3wAATe4AAE39AABODAAAThsAAE4qAABOOQAATk4AAE5PAABOVwAATmMAAE53AABOhgAATpUAAE6kAABOqAAATrcAAE7GAABO1QAATuQAAE7zAABO/wAATxEAAE8gAABPLwAATz4AAE9NAABPXAAAT2sAAE96AABPjwAAT5AAAE+YAABPpAAAT7gAAE/HAABP1gAAT+UAAE/pAABP+AAAUAcAAFAWAABQJQAAUDQAAFBAAABQUgAAUGEAAFBwAABQfwAAUI4AAFCdAABQrAAAULsAAFDQAABQ0QAAUNkAAFDlAABQ+QAAUQgAAFEXAABRJgAAUSoAAFE5AABRSAAAUVcAAFFmAABRdQAAUYEAAFGTAABRogAAUbEAAFHAAABRzwAAUd4AAFHtAABR/AAAUhEAAFISAABSGgAAUiYAAFI6AABSSQAAUlgAAFJnAABSawAAUnoAAFKJAABSmAAAUqcAAFK2AABSwgAAUtQAAFLjAABS8gAAUwEAAFMQAABTHwAAUy4AAFM9AABTUgAAU1MAAFNbAABTZwAAU3sAAFOKAABTmQAAU6gAAFOsAABTuwAAU8oAAFPZAABT6AAAU/cAAFQDAABUFQAAVCQAAFQzAABUQgAAVFEAAFRgAABUbwAAVH4AAFSTAABUlAAAVJwAAFSoAABUvAAAVMsAAFTaAABU6QAAVO0AAFT8AABVCwAAVRoAAFUpAABVOAAAVUQAAFVWAABVZQAAVXQAAFWDAABVkgAAVaEAAFWwAABVvwAAVdQAAFXVAABV3QAAVekAAFX9AABWDAAAVhsAAFYqAABWLgAAVj0AAFZMAABWWwAAVmoAAFZ5AABWhQAAVpcAAFamAABWtQAAVsQAAFbTAABW4gAAVvEAAFcAAABXFQAAVxYAAFceAABXKgAAVz4AAFdNAABXXAAAV2sAAFdvAABXfgAAV40AAFecAABXqwAAV7oAAFfGAABX2AAAV+cAAFf2AABYBQAAWBQAAFgjAABYMgAAWEEAAFhWAABYVwAAWF8AAFhrAABYfwAAWI4AAFidAABYrAAAWLAAAFi/AABYzgAAWN0AAFjsAABY7QAAWPwAAFkIAABZGgAAWSkAAFk4AABZRwAAWVYAAFllAABZdAAAWYMAAFmGAABZiwAAWZIAAFmsAABZrQAAWbMAAFm/AABZ1QAAWeQAAFnnAABZ9gAAWgUAAFoIAABaFwAAWiYAAFopAABaOAAAWkcAAFpLAABaWgAAWmkAAFpqAABadAAAWnUAAFp2AABadwAAWowAAFqNAABalQAAWqEAAFq1AABaxAAAWtMAAFriAABa5gAAWvUAAFsEAABbEwAAWyIAAFsxAABbPQAAW08AAFteAABbbQAAW3wAAFuLAABbpQAAW6YAAFusAABbuAAAW84AAFvdAABb4AAAW+8AAFv+AABcAQAAXBAAAFwfAABcIgAAXDEAAFxAAABcRAAAXFMAAFxiAABcYwAAXHsAAFx8AABcfQAAXH4AAFx/AABcgAAAXIEAAFyCAABcgwAAXIQAAFyFAABcmgAAXJsAAFyjAABcrwAAXMMAAFzSAABc4QAAXPAAAFz0AABdAwAAXRIAAF0hAABdMAAAXT8AAF1LAABdXQAAXWwAAF17AABdigAAXZkAAF2zAABdtAAAXboAAF3GAABd3AAAXesAAF3uAABd/QAAXgwAAF4PAABeHgAAXi0AAF4wAABePwAAXk4AAF5SAABeYQAAXnAAAF5xAABedwAAXngAAF6NAABejgAAXpYAAF6iAABetgAAXsUAAF7UAABe4wAAXucAAF72AABfBQAAXxQAAF8jAABfMgAAXz4AAF9QAABfXwAAX24AAF99AABfjAAAX5sAAF+qAABfuQAAX70AAF/EAABfxQAAX+cAAF/oAABf7gAAX/oAAGAQAABgHwAAYCIAAGAxAABgQAAAYEMAAGBSAABgYQAAYGQAAGBzAABgggAAYIYAAGCVAABgpAAAYKUAAGCtAABgrgAAYK8AAGDEAABgxQAAYM0AAGDZAABg7QAAYPwAAGELAABhGgAAYR4AAGEtAABhPAAAYUsAAGFaAABhaQAAYXUAAGGHAABhlgAAYaUAAGG0AABhwwAAYcQAAGHTAABh4gAAYfEAAGIGAABiBwAAYg8AAGIbAABiLwAAYj4AAGJNAABiXAAAYmAAAGJvAABifgAAYo0AAGKcAABiqwAAYrcAAGLJAABi2AAAYucAAGL2AABjBQAAYxQAAGMjAABjMgAAYzUAAGM8AABjQwAAY10AAGNeAABjZAAAY3AAAGOGAABjlQAAY5gAAGOnAABjtgAAY7kAAGPIAABj1wAAY9oAAGPpAABj+AAAY/wAAGQLAABkGgAAZBsAAGQhAABkIgAAZDcAAGQ4AABkQAAAZEwAAGRgAABkbwAAZH4AAGSNAABkkQAAZKAAAGSvAABkvgAAZM0AAGTcAABk6AAAZPoAAGUJAABlGAAAZScAAGU2AABlRQAAZVQAAGVjAABleAAAZXkAAGWBAABljQAAZaEAAGWwAABlvwAAZc4AAGXSAABl4QAAZfAAAGX/AABmDgAAZh0AAGYpAABmOwAAZkoAAGZZAABmaAAAZncAAGaGAABmlQAAZqQAAGaoAABmsQAAZrIAAGa4AABmvwAAZtkAAGbaAABm4AAAZuwAAGcCAABnEQAAZxQAAGcjAABnMgAAZzUAAGdEAABnUwAAZ1YAAGdlAABndAAAZ3gAAGeHAABnlgAAZ5cAAGedAABnngAAZ7MAAGe0AABnvAAAZ8gAAGfcAABn6wAAZ/oAAGgJAABoDQAAaBwAAGgrAABoOgAAaEkAAGhYAABoZAAAaHYAAGiFAABolAAAaKMAAGiyAABozAAAaM0AAGjTAABo3wAAaPUAAGkEAABpBwAAaRYAAGklAABpKAAAaTcAAGlGAABpSQAAaVgAAGlnAABpawAAaXoAAGmJAABpigAAaZgAAGmZAABpmgAAaZsAAGmcAABpnQAAabIAAGmzAABpuwAAaccAAGnbAABp6gAAafkAAGoIAABqDAAAahsAAGoqAABqOQAAakgAAGpXAABqYwAAanUAAGqEAABqkwAAaqIAAGqxAABqywAAaswAAGrSAABq3gAAavQAAGsDAABrBgAAaxUAAGskAABrJwAAazYAAGtFAABrSAAAa1cAAGtmAABragAAa3kAAGuIAABriQAAa5EAAGuSAABrkwAAa6gAAGupAABrsQAAa70AAGvRAABr4AAAa+8AAGv+AABsAgAAbBEAAGwgAABsLwAAbD4AAGxNAABsWQAAbGsAAGx6AABsiQAAbJgAAGynAABstgAAbMUAAGzUAABs6QAAbOoAAGzyAABs/gAAbRIAAG0hAABtMAAAbT8AAG1DAABtUgAAbWEAAG1wAABtfwAAbY4AAG2aAABtrAAAbbsAAG3KAABt2QAAbegAAG33AABuBgAAbhUAAG4ZAABuIAAAbiEAAG4wAABuPwAAbk4AAG5jAABuZAAAbmwAAG54AABujAAAbpsAAG6qAABuuQAAbr0AAG7MAABu2wAAbuoAAG75AABvCAAAbxQAAG8mAABvNQAAb0QAAG9TAABvYgAAb3wAAG99AABvgwAAb48AAG+lAABvtAAAb7cAAG/GAABv1QAAb9gAAG/nAABv9gAAb/kAAHAIAABwFwAAcBsAAHAqAABwOQAAcDoAAHBCAABwQwAAcEQAAHBZAABwWgAAcGIAAHBuAABwggAAcJEAAHCgAABwrwAAcLMAAHDCAABw0QAAcOAAAHDvAABw/gAAcQoAAHEcAABxKwAAcToAAHFJAABxWAAAcWcAAHF2AABxhQAAcZoAAHGbAABxowAAca8AAHHDAABx0gAAceEAAHHwAABx9AAAcgMAAHISAAByIQAAcjAAAHI/AABySwAAcl0AAHJsAAByewAAcooAAHKZAAByqAAAcrcAAHLGAAByygAActEAAHLSAABy4QAAcvAAAHL/AABzFAAAcxUAAHMdAABzKQAAcz0AAHN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6AACWiQAAlpgAAJanAACWvAAAlr0AAJbFAACW0QAAluUAAJb0AACXAwAAlxIAAJcWAACXJQAAlzQAAJdDAACXUgAAl2EAAJdtAACXfwAAl44AAJedAACXrAAAl7sAAJfKAACX2QAAl+gAAJf9AACX/gAAmAYAAJgSAACYJgAAmDUAAJhEAACYUwAAmFcAAJhmAACYdQAAmIQAAJiTAACYogAAmK4AAJjAAACYzwAAmN4AAJjtAACY/AAAmQsAAJkaAACZKQAAmT4AAJk/AACZRwAAmVMAAJlnAACZdgAAmYUAAJmUAACZmAAAmacAAJm2AACZxQAAmdQAAJnjAACZ7wAAmgEAAJoQAACaHwAAmi4AAJo9AACaTAAAmlsAAJpqAACafwAAmoAAAJqIAACalAAAmqgAAJq3AACaxgAAmtUAAJrZAACa6AAAmvcAAJsGAACbFQAAmyQAAJswAACbQgAAm1EAAJtgAACbbwAAm34AAJuNAACbnAAAm6sAAJuuAACbvQAAm8wAAJvbAACb8AAAm/EAAJv5AACcBQAAnBkAAJwoAACcNwAAnEYAAJxKAACcWQAAnGgAAJx3AACchgAAnJUAAJyhAACcswAAnMIAAJzRAACc4AAAnO8AAJz+AACdDQAAnRwAAJ0gAACdJwAAnSgAAJ03AACdRgAAnVUAAJ1qAACdawAAnXMAAJ1/AACdkwAAnaIAAJ2xAACdwAAAncQAAJ3TAACd4gAAnfEAAJ4AAACeDwAAnhsAAJ4tAACePAAAnksAAJ5aAACeaQAAnngAAJ6HAACelgAAnqsAAJ6sAACetAAAnsAAAJ7UAACe4wAAnvIAAJ8BAACfBQAAnxQAAJ8jAACfMgAAn0EAAJ9QAACfXAAAn24AAJ99AACfjAAAn5sAAJ+qAACfuQAAn8gAAJ/XAACf2wAAn9wAAJ/rAACf+gAAoAkAAKAeAACgHwAAoCcAAKAzAACgRwAAoFYAAKBlAACgdAAAoHgAAKCHAACglgAAoKUAAKC0AACgwwAAoM8AAKDhAACg8AAAoP8AAKEOAAChHQAAoSwAAKE7AAChSgAAoV8AAKFgAAChaAAAoXQAAKGIAAChlwAAoaYAAKG1AAChuQAAocgAAKHXAACh5gAAofUAAKIEAACiEAAAoiIAAKIxAACiQAAAok8AAKJeAACibQAAonwAAKKLAACijgAAop0AAKKsAACiuwAAotAAAKLRAACi2QAAouUAAKL5AACjCAAAoxcAAKMmAACjKgAAozkAAKNIAACjVwAAo2YAAKN1AACjgQAAo5MAAKOiAACjsQAAo8AAAKPPAACj3gAAo+0AAKP8AACkEQAApBIAAKQaAACkJgAApDoAAKRJAACkWAAApGcAAKRrAACkegAApIkAAKSYAACkpwAApLYAAKTCAACk1AAApOMAAKTyAAClAQAApRAAAKUfAAClLgAApT0AAKVSAAClUwAApVsAAKVnAAClewAApYoAAKWZAAClqAAApawAAKW7AAClygAApdkAAKXoAACl9wAApgMAAKYVAACmJAAApjMAAKZCAACmUQAApmAAAKZvAACmfgAApoEAAKaQAACmnwAApq4AAKbDAACmxAAApswAAKbYAACm7AAApvsAAKcKAACnGQAApx0AAKcsAACnOwAAp0oAAKdZAACnaAAAp3QAAKeGAACnlQAAp6QAAKezAACnwgAAp9EAAKfgAACn7wAAqAQAAKgFAACoDQAAqBkAAKgtAACoPAAAqEsAAKhaAACoXgAAqG0AAKh8AACoiwAAqJoAAKipAACotQAAqMcAAKjWAACo5QAAqPQAAKkDAACpEgAAqSEAAKkwAACpRQAAqUYAAKlOAACpWgAAqW4AAKl9AACpjAAAqZsAAKmfAACprgAAqb0AAKnMAACp2wAAqeoAAKn2AACqCAAAqhcAAKomAACqNQAAqkQAAKpTAACqYgAAqnEAAKqGAACqhwAAqo8AAKqbAACqrwAAqr4AAKrNAACq3AAAquAAAKrvAACq/gAAqw0AAKscAACrKwAAqzcAAKtJAACrWAAAq2cAAKt2AACrhQAAq5QAAKujAACrsgAAq8cAAKvIAACr0AAAq9wAAKvwAACr/wAArA4AAKwdAACsIQAArDAAAKw/AACsTgAArF0AAKxsAACseAAArIoAAKyZAACsqAAArLcAAKzGAACs1QAArOQAAKzzAACtCAAArQkAAK0RAACtHQAArTEAAK1AAACtTwAArV4AAK1iAACtcQAArYAAAK2PAACtngAAra0AAK25AACtywAArdoAAK3pAACt+AAArgcAAK4WAACuJQAArjQAAK5JAACuSgAArlIAAK5eAACucgAAroEAAK6QAACunwAArqMAAK6yAACuwQAArtAAAK7fAACu7gAArvoAAK8MAACvGwAAryoAAK85AACvSAAAr2oAAK9rAACvcQAAr30AAK+TAACvogAAr6UAAK+0AACvwwAAr8YAAK/VAACv5AAAr+cAAK/2AACwBQAAsAkAALAYAACwJwAAsCgAALBaAACwWwAAsFwAALBdAACwXgAAsF8AALBgAACwYQAAsGIAALBjAACwZAAAsGUAALBmAACwZwAAsGgAALBpAACwagAAsGsAALBsAACwbQAAsG4AALCDAACwhAAAsIwAALCYAACwrAAAsLsAALDKAACw2QAAsN0AALDsAACw+wAAsQoAALEZAACxKAAAsTQAALFGAACxVQAAsWQAALFzAACxggAAsZEAALGgAACxrwAAscQAALHFAACxzQAAsdkAALHtAACx/AAAsgsAALIaAACyHgAAsi0AALI8AACySwAAsloAALJpAACydQAAsocAALKWAACypQAAsrQAALLDAACy0gAAsuEAALLwAACzBQAAswYAALMOAACzGgAAsy4AALM9AACzTAAAs1sAALNfAACzbgAAs30AALOMAACzmwAAs6oAALO2AACzyAAAs9cAALPmAACz9QAAtAQAALQTAAC0IgAAtDEAALRGAAC0RwAAtE8AALRbAAC0bwAAtH4AALSNAAC0nAAAtKAAALSvAAC0vgAAtM0AALTcAAC06wAAtPcAALUJAAC1GAAAtScAALU2AAC1RQAAtVQAALVjAAC1cgAAtYcAALWIAAC1kAAAtZwAALWwAAC1vwAAtc4AALXdAAC14QAAtfAAALX/AAC2DgAAth0AALYsAAC2OAAAtkoAALZZAAC2aAAAtncAALaGAAC2lQAAtqQAALazAAC2yAAAtskAALbRAAC23QAAtvEAALcAAAC3DwAAtx4AALciAAC3MQAAt0AAALdPAAC3XgAAt20AALd5AAC3iwAAt5oAALepAAC3uAAAt8cAALfWAAC35QAAt/QAALgJAAC4CgAAuBIAALgeAAC4MgAAuEEAALhQAAC4XwAAuGMAALhyAAC4gQAAuJAAALifAAC4rgAAuLoAALjMAAC42wAAuOoAALj5AAC5CAAAuSIAALkjAAC5KQAAuTUAALlLAAC5WgAAuV0AALlsAAC5ewAAuX4AALmNAAC5nAAAuZ8AALmuAAC5vQAAucEAALn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BAADRUAAA0V8AANFuAADRfQAA0YwAANGhAADRogAA0aoAANG2AADRygAA0dkAANHoAADR9wAA0fsAANIKAADSGQAA0igAANI3AADSRgAA0lIAANJkAADScwAA0oIAANKRAADSoAAA0q8AANK+AADSzQAA0uIAANLjAADS6wAA0vcAANMLAADTGgAA0ykAANM4AADTPAAA00sAANNaAADTaQAA03gAANOHAADTkwAA06UAANO0AADTwwAA09IAANPhAADT8AAA0/8AANQOAADUIwAA1CQAANQsAADUOAAA1EwAANRbAADUagAA1HkAANR9AADUjAAA1JsAANSqAADUuQAA1MgAANTUAADU5gAA1PUAANUEAADVEwAA1SIAANUxAADVQAAA1U8AANVkAADVZQAA1W0AANV5AADVjQAA1ZwAANWrAADVugAA1b4AANXNAADV3AAA1esAANX6AADWCQAA1hUAANYnAADWNgAA1kUAANZUAADWYwAA1nIAANaBAADWkAAA1pMAANaiAADWsQAA1sAAANbVAADW1gAA1t4AANbqAADW/gAA1w0AANccAADXKwAA1y8AANc+AADXTQAA11wAANdrAADXegAA14YAANeYAADXpwAA17YAANfFAADX1AAA1+MAANfyAADYAQAA2BYAANgXAADYHwAA2CsAANg/AADYTgAA2F0AANhsAADYcAAA2H8AANiOAADYnQAA2KwAANi7AADYxwAA2NkAANjoAADY9wAA2QYAANkVAADZJAAA2TMAANlCAADZVwAA2VgAANlgAADZbAAA2YAAANmPAADZngAA2a0AANmxAADZwAAA2c8AANneAADZ7QAA2fwAANoIAADaGgAA2ikAANo4AADaRwAA2lYAANplAADadAAA2oMAANqYAADamQAA2qEAANqtAADawQAA2tAAANrfAADa7gAA2vIAANsBAADbEAAA2x8AANsuAADbPQAA20kAANtbAADbagAA23kAANuIAADblwAA26YAANu1AADbxAAA29kAANvaAADb4gAA2+4AANwCAADcEQAA3CAAANwvAADcMwAA3EIAANxRAADcYAAA3G8AANx+AADcigAA3JwAANyrAADcugAA3MkAANzYAADc8gAA3PMAANz5AADdBQAA3RsAAN0qAADdLQAA3TwAAN1LAADdTgAA3V0AAN1sAADdbwAA3X4AAN2NAADdkQAA3aAAAN2vAADdsAAA3b4AAN2/AADdwAAA3cEAAN3WAADd1wAA3d8AAN3rAADd/wAA3g4AAN4dAADeLAAA3jAAAN4/AADeTgAA3l0AAN5sAADeewAA3ocAAN6ZAADeqAAA3rcAAN7GAADe1QAA3uQAAN7zAADfAgAA3xcAAN8YAADfIAAA3ywAAN9AAADfTwAA314AAN9tAADfcQAA34AAAN+PAADfngAA360AAN+8AADfyAAA39oAAN/pAADf+AAA4AcAAOAWAADgJQAA4DQAAOBDAADgWAAA4FkAAOBhAADgbQAA4IEAAOCQAADgnwAA4K4AAOCyAADgwQAA4NAAAODfAADg7gAA4P0AAOEJAADhGwAA4SoAAOE5AADhSAAA4VcAAOFmAADhdQAA4YQAAOGZAADhmgAA4aIAAOGuAADhwgAA4dEAAOHgAADh7wAA4fMAAOICAADiEQAA4iAAAOIvAADiPgAA4koAAOJcAADiawAA4noAAOKJAADimAAA4qcAAOK2AADixQAA4toAAOLbAADi4wAA4u8AAOMDAADjEgAA4yEAAOMwAADjNAAA40MAAONSAADjYQAA43AAAON/AADjiwAA450AAOOsAADjuwAA48oAAOPZAADj6AAA4/cAAOQGAADkCQAA5BgAAOQnAADkNgAA5EsAAORMAADkVAAA5GAAAOR0AADkgwAA5JIAAOShAADkpQAA5LQAAOTDAADk0gAA5OEAAOTwAADk/AAA5Q4AAOUdAADlLAAA5TsAAOVKAADlWQAA5WgAAOV3AADljAAA5Y0AAOWVAADloQAA5bUAAOXEAADl0wAA5eIAAOXmAADl9QAA5gQAAOYTAADmIgAA5jEAAOY9AADmTwAA5l4AAOZtAADmfAAA5osAAOalAADmpgAA5qwAAOa4AADmzgAA5t0AAObgAADm7wAA5v4AAOcBAADnEAAA5x8AAOciAADnMQAA50AAAOdEAADnUwAA52IAAOdjAADndwAA53gAAOd5AADnegAA53sAAOd8AADnfQAA55IAAOeTAADnmwAA56cAAOe7AADnygAA59kAAOfoAADn7AAA5/sAAOgKAADoGQAA6CgAAOg3AADoQwAA6FUAAOhkAADocwAA6IIAAOiRAADooAAA6K8AAOi+AADo0wAA6NQAAOjcAADo6AAA6PwAAOkLAADpGgAA6SkAAOktAADpPAAA6UsAAOlaAADpaQAA6XgAAOmEAADplgAA6aUAAOm0AADpwwAA6dIAAOnhAADp8AAA6f8AAOoUAADqFQAA6h0AAOopAADqPQAA6kwAAOpbAADqagAA6m4AAOp9AADqjAAA6psAAOqqAADquQAA6sUAAOrXAADq5gAA6vUAAOsEAADrEwAA6yIAAOsxAADrQAAA61UAAOtWAADrXgAA62oAAOt+AADrjQAA65wAAOurAADrrwAA674AAOvNAADr3AAA6+sAAOv6AADsBgAA7BgAAOwnAADsNgAA7EUAAOxUAADsYwAA7HIAAOyBAADslgAA7JcAAOyfAADsqwAA7L8AAOzOAADs3QAA7OwAAOzwAADs/wAA7Q4AAO0dAADtLAAA7TsAAO1HAADtWQAA7WgAAO13AADthgAA7ZUAAO2kAADtswAA7cIAAO3XAADt2AAA7eAAAO3sAADuAAAA7g8AAO4eAADuLQAA7jEAAO5AAADuTwAA7l4AAO5tAADufAAA7ogAAO6aAADuqQAA7rgAAO7HAADu1gAA7uUAAO70AADvAwAA7xgAAO8ZAADvIQAA7y0AAO9BAADvUAAA718AAO9uAADvcgAA74EAAO+QAADvnwAA764AAO+9AADvyQAA79sAAO/qAADv+QAA8AgAAPAXAADwJgAA8DUAAPBEAADwWQAA8FoAAPBiAADwbgAA8IIAAPCRAADwoAAA8K8AAPCzAADwwgAA8NEAAPDgAADw7wAA8P4AAPEKAADxHAAA8SsAAPE6AADxSQAA8VgAAPFnAADxdgAA8YUAAPGIAADxlwAA8aYAAPG1AADxygAA8csAAPHTAADx3wAA8fMAAPICAADyEQAA8iAAAPIkAADyMwAA8kIAAPJRAADyYAAA8m8AAPJ7AADyjQAA8pwAAPKrAADyugAA8skAAPLYAADy5wAA8vYAAPMLAADzDAAA8xQAAPMgAADzNAAA80MAAPNSAADzYQAA82UAAPN0AADzgwAA85IAAPOhAADzsAAA87wAAPPOAADz3QAA8+wAAPP7AAD0CgAA9CQAAPQlAAD0KwAA9DcAAPRNAAD0XAAA9F8AAPRuAAD0fQAA9IEAAPSFAAD0lAAA9KMAAPSmAAD0tQAA9MQAAPTIAAD01wAA9OYAAPTnAAD1GwAA9RwAAPUdAAD1HgAA9R8AAPUgAAD1IQAA9SIAAPUjAAD1JAAA9SUAAPUmAAD1JwAA9SgAAPUpAAD1KgAA9SsAAPUsAAD1LQAA9S4AAPUvAAD1MAAA9UUAAPVGAAD1TgAA9VoAAPVuAAD1fQAA9YwAAPWbAAD1nwAA9a4AAPW9AAD1zAAA9dsAAPXqAAD19gAA9ggAAPYXAAD2JgAA9jUAAPZEAAD2UwAA9mIAAPZxAAD2hgAA9ocAAPaPAAD2mwAA9q8AAPa+AAD2zQAA9twAAPbgAAD27wAA9v4AAPcNAAD3HAAA9ysAAPc3AAD3SQAA91gAAPdnAAD3dgAA94UAAPeUAAD3owAA97IAAPfHAAD3yAAA99AAAPfcAAD38AAA9/8AAPgOAAD4HQAA+CEAAPgwAAD4PwAA+E4AAPhdAAD4bAAA+HgAAPiKAAD4mQAA+KgAAPi3AAD4xgAA+NUAAPjkAAD48wAA+QgAAPkJAAD5EQAA+R0AAPkxAAD5QAAA+U8AAPleAAD5YgAA+XEAAPmAAAD5jwAA+Z4AAPmtAAD5uQAA+csAAPnaAAD56QAA+fgAAPoHAAD6FgAA+iUAAPo0AAD6SQAA+koAAPpSAAD6XgAA+nIAAPqBAAD6kAAA+p8AAPqjAAD6sgAA+sEAAPrQAAD63wAA+u4AAPr6AAD7DAAA+xsAAPsqAAD7OQAA+0gAAPtXAAD7ZgAA+3UAAPuKAAD7iwAA+5MAAPufAAD7swAA+8IAAPvRAAD74AAA++QAAPvzAAD8AgAA/BEAAPwgAAD8LwAA/DsAAPxNAAD8XAAA/GsAAPx6AAD8iQAA/JgAAPynAAD8tgAA/MsAAPzMAAD81AAA/OAAAPz0AAD9AwAA/RIAAP0hAAD9JQAA/TQAAP1DAAD9UgAA/WEAAP1wAAD9fAAA/Y4AAP2dAAD9rAAA/bsAAP3KAAD92QAA/egAAP33AAD+DAAA/g0AAP4VAAD+IQAA/jUAAP5EAAD+UwAA/mIAAP5mAAD+dQAA/oQAAP6TAAD+ogAA/rEAAP69AAD+zwAA/t4AAP7tAAD+/AAA/wsAAP8aAAD/KQAA/zgAAP9NAAD/TgAA/1YAAP9iAAD/dgAA/4UAAP+UAAD/owAA/6cAAP+2AAD/xQAA/9QAAP/jAAD/8gAA//4AAQAQAAEAHwABAC4AAQA9AAEATAABAFsAAQBqAAEAeQABAI4AAQCPAAEAlwABAKMAAQC3AAEAxgABANUAAQDkAAEA6AABAPcAAQEGAAEBFQABASQAAQEzAAEBPwABAVEAAQFgAAEBbwABAX4AAQGNAAEBnAABAasAAQG6AAEBzwABAdAAAQHYAAEB5AABAfgAAQIHAAECFgABAiUAAQIpAAECOAABAkcAAQJWAAECZQABAnQAAQKAAAECkgABAqEAAQKwAAECvwABAs4AAQLdAAEC7AABAvsAAQMQAAEDEQABAxkAAQMlAAEDOQABA0gAAQNXAAEDZgABA2oAAQN5AAEDiAABA5cAAQOmAAEDtQABA8EAAQPTAAED4gABA/EAAQQAAAEEDwABBB4AAQQtAAEEPAABBFEAAQRSAAEEWgABBGYAAQR6AAEEiQABBJgAAQSnAAEEqwABBLoAAQTJAAEE2AABBOcAAQT2AAEFAgABBRQAAQUjAAEFMgABBUEAAQVQAAEFXwABBW4AAQV9AAEFkgABBZMAAQWbAAEFpwABBbsAAQXKAAEF2QABBegAAQXsAAEF+wABBgoAAQYZAAEGKAABBjcAAQZDAAEGVQABBmQAAQZzAAEGggABBpEAAQagAAEGrwABBr4AAQbTAAEG1AABBtwAAQboAAEG/AABBwsAAQcaAAEHKQABBy0AAQc8AAEHSwABB1oAAQdpAAEHeAABB4QAAQeWAAEHpQABB7QAAQfDAAEH0gABB+EAAQfwAAEH/wABCBQAAQgVAAEIHQABCCkAAQg9AAEITAABCFsAAQhqAAEIbgABCH0AAQiMAAEImwABCKoAAQi5AAEIxQABCNcAAQjmAAEI9QABCQQAAQkTAAEJLQABCS4AAQk0AAEJQAABCVYAAQllAAEJaAABCXcAAQmGAAEJiQABCZgAAQmnAAEJqgABCbkAAQnIAAEJzAABCdsAAQnqAAEJ6wABCfEAAQnyAAEKBwABCggAAQoQAAEKHAABCjAAAQo/AAEKTgABCl0AAQphAAEKcAABCn8AAQqOAAEKnQABCqwAAQq4AAEKygABCtkAAQroAAEK9wABCwYAAQsVAAELJAABCzMAAQs3AAELPgABCz8AAQthAAELYgABC2gAAQt0AAELigABC5kAAQucAAELqwABC7oAAQu+AAELxAABC8UAAQvGAAELxwABC9YAAQvlAAEL6AABC/cAAQwGAAEMCgABDBkAAQwoAAEMKQABDEUAAQxGAAEMRwABDEgAAQxJAAEMSgABDEsAAQxMAAEMTQABDE4AAQxjAAEMZAABDGwAAQx4AAEMjAABDJsAAQyqAAEMuQABDL0AAQzMAAEM2wABDOoAAQz5AAENCAABDRQAAQ0mAAENNQABDUQAAQ1TAAENYgABDXEAAQ2AAAENjwABDaQAAQ2lAAENrQABDbkAAQ3NAAEN3AABDesAAQ36AAEN/gABDg0AAQ4cAAEOKwABDjoAAQ5JAAEOVQABDmcAAQ52AAEOhQABDpQAAQ6jAAEOvQABDr4AAQ7EAAEO0AABDuYAAQ71AAEO+AABDwcAAQ8WAAEPGgABDyEAAQ8iAAEPIwABDyQAAQ8zAAEPQgABD0UAAQ9UAAEPYwABD2cAAQ92AAEPhQABD4YAAQ+aAAEPmwABD5wAAQ+dAAEPngABD58AAQ+gAAEPoQABD7YAAQ+3AAEPvwABD8sAAQ/fAAEP7gABD/0AARAMAAEQEAABEB8AARAuAAEQPQABEEwAARBbAAEQZwABEHkAARCIAAEQlwABEKYAARC1AAEQxAABENMAARDiAAEQ9wABEPgAAREAAAERDAABESAAAREvAAERPgABEU0AARFRAAERYAABEW8AARF+AAERjQABEZwAARGoAAERugABEckAARHYAAER5wABEfYAARIFAAESFAABEiMAARI4AAESOQABEkEAARJNAAESYQABEnAAARJ/AAESjgABEpIAARKhAAESsAABEr8AARLOAAES3QABEukAARL7AAETCgABExkAARMoAAETNwABE0YAARNVAAETZAABE3kAARN6AAETggABE44AAROiAAETsQABE8AAARPPAAET0wABE+IAARPxAAEUAAABFA8AARQeAAEUKgABFDwAARRLAAEUWgABFGkAARR4AAEUhwABFJYAARSlAAEUugABFLsAARTDAAEUzwABFOMAARTyAAEVAQABFRAAARUUAAEVIwABFTIAARVBAAEVUAABFV8AARVrAAEVfQABFYwAARWbAAEVqgABFbkAARXIAAEV1wABFeYAARX7AAEV/AABFgQAARYQAAEWJAABFjMAARZCAAEWUQABFlUAARZkAAEWcwABFoIAARaRAAEWoAABFqwAARa+AAEWzQABFtwAARbrAAEW+gABFwkAARcYAAEXJwABFzwAARc9AAEXRQABF1EAARdlAAEXdAABF4MAAReSAAEXlgABF6UAARe0AAEXwwABF9IAARfhAAEX7QABF/8AARgOAAEYHQABGCwAARg7AAEYSgABGFkAARhoAAEYfQABGH4AARiGAAEYkgABGKYAARi1AAEYxAABGNMAARjXAAEY5gABGPUAARkEAAEZEwABGSIAARkuAAEZQAABGU8AARleAAEZbQABGXwAARmLAAEZmgABGakAARmsAAEZuwABGcoAARnZAAEZ7gABGe8AARn3AAEaAwABGhcAARomAAEaNQABGkQAARpIAAEaVwABGmYAARp1AAEahAABGpMAARqfAAEasQABGsAAARrPAAEa3gABGu0AARsHAAEbCAABGw4AARsaAAEbMAABGz8AARtCAAEbUQABG2AAARtjAAEbcgABG4EAARuEAAEbkwABG6IAARumAAEbtQABG8QAARvFAAEb4QABG+IAARvjAAEb5AABG+UAARvmAAEb5wABG+gAARvpAAEb6gABG+sAARwAAAEcAQABHAkAARwVAAEcKQABHDgAARxHAAEcVgABHFoAARxpAAEceAABHIcAARyWAAEcpQABHLEAARzDAAEc0gABHOEAARzwAAEc/wABHQ4AAR0dAAEdLAABHUEAAR1CAAEdSgABHVYAAR1qAAEdeQABHYgAAR2XAAEdmwABHaoAAR25AAEdyAABHdcAAR3mAAEd8gABHgQAAR4TAAEeIgABHjEAAR5AAAEeTwABHl4AAR5tAAEeggABHoMAAR6LAAEelwABHqsAAR66AAEeyQABHtgAAR7cAAEe6wABHvoAAR8JAAEfGAABHycAAR8zAAEfRQABH1QAAR9jAAEfcgABH4EAAR+QAAEfnwABH64AAR/DAAEfxAABH8wAAR/YAAEf7AABH/sAASAKAAEgGQABIB0AASAsAAEgOwABIEoAASBZAAEgaAABIHQAASCGAAEglQABIKQAASCzAAEgwgABINEAASDgAAEg7wABIQQAASEFAAEhDQABIRkAASEtAAEhPAABIUsAASFaAAEhXgABIW0AASF8AAEhiwABIZoAASGpAAEhtQABIccAASHWAAEh5QABIfQAASIDAAEiEgABIiEAASIwAAEiRQABIkYAASJOAAEiWgABIm4AASJ9AAEijAABIpsAASKfAAEirgABIr0AASLMAAEi2wABIuoAASL2AAEjCAABIxcAASMmAAEjNQABI0QAASNTAAEjYgABI3EAASOGAAEjhwABI48AASObAAEjrwABI74AASPNAAEj3AABI+AAASPvAAEj/gABJA0AASQcAAEkKwABJDcAASRJAAEkWAABJGcAASR2AAEkhQABJJQAASSjAAEksgABJMcAASTIAAEk0AABJNwAASTwAAEk/wABJQ4AASUdAAElIQABJTAAASU/AAElTgABJV0AASVsAAEleAABJYoAASWZAAElqAABJbcAASXGAAEl1QABJeQAASXzAAEmCAABJgkAASYRAAEmHQABJjEAASZAAAEmTwABJl4AASZiAAEmcQABJoAAASaPAAEmngABJq0AASa5AAEmywABJtoAASbpAAEm+AABJwcAAScWAAEnJQABJzQAASdJAAEnSgABJ1IAASdeAAEncgABJ4EAASeQAAEnnwABJ6MAASeyAAEnwQABJ9AAASffAAEn7gABJ/oAASgMAAEoGwABKCoAASg5AAEoSAABKFcAAShmAAEodQABKIoAASiLAAEokwABKJ8AASizAAEowgABKNEAASjgAAEo5AABKPMAASkCAAEpEQABKSAAASkvAAEpOwABKU0AASlcAAEpawABKXoAASmJAAEpmAABKacAASm2AAEpywABKcwAASnUAAEp4AABKfQAASoDAAEqEgABKiEAASolAAEqNAABKkMAASpSAAEqYQABKnAAASp8AAEqjgABKp0AASqsAAEquwABKsoAASrZAAEq6AABKvcAASsMAAErDQABKxUAASshAAErNQABK0QAAStTAAErYgABK2YAASt1AAErhAABK5MAASuiAAErsQABK70AASvPAAEr3gABK+0AASv8AAEsCwABLAwAASwbAAEsKgABLDkAASw8AAEsSwABLFoAASxpAAEsfgABLH8AASyHAAEskwABLKcAASy2AAEsxQABLNQAASzYAAEs5wABLPYAAS0FAAEtFAABLSMAAS0vAAEtQQABLVAAAS1fAAEtbgABLX0AAS2MAAEtmwABLaoAAS2/AAEtwAABLcgAAS3UAAEt6AABLfcAAS4GAAEuFQABLhkAAS4oAAEuNwABLkYAAS5VAAEuZAABLnAAAS6CAAEukQABLqAAAS6vAAEuvgABLs0AAS7cAAEu6wABLwAAAS8BAAEvCQABLxUAAS8pAAEvOAABL0cAAS9WAAEvWgABL2kAAS94AAEvhwABL5YAAS+lAAEvsQABL8MAAS/SAAEv4QABL/AAAS//AAEwDgABMB0AATAsAAEwQQABMEIAATBKAAEwVgABMGoAATB5AAEwiAABMJcAATCbAAEwqgABMLkAATDIAAEw1wABMOYAATDyAAExBAABMRMAATEiAAExMQABMUAAATFPAAExXgABMW0AATGCAAExgwABMYsAATGXAAExqwABMboAATHJAAEx2AABMdwAATHrAAEx+gABMgkAATIYAAEyJwABMjMAATJFAAEyVAABMmMAATJyAAEygQABMpAAATKfAAEyrgABMsMAATLEAAEyzAABMtgAATLsAAEy+wABMwoAATMZAAEzHQABMywAATM7AAEzSgABM1kAATNoAAEzdAABM4YAATOVAAEzpAABM7MAATPCAAEz0QABM+AAATPvAAE0BAABNAUAATQNAAE0GQABNC0AATQ8AAE0SwABNFoAATReAAE0bQABNHwAATSLAAE0mgABNKkAATS1AAE0xwABNNYAATTlAAE09AABNQMAATUSAAE1IQABNTAAATVFAAE1RgABNU4AATVaAAE1bgABNX0AATWMAAE1mwABNZ8AATWuAAE1vQABNcwAATXbAAE16gABNfYAATYIAAE2FwABNiYAATY1AAE2RAABNlMAATZiAAE2cQABNoYAATaHAAE2jwABNpsAATavAAE2vgABNs0AATbcAAE24AABNu8AATb+AAE3DQABNxwAATcrAAE3NwABN0kAATdYAAE3ZwABN3YAATeFAAE3lAABN6MAATeyAAE3xwABN8gAATfQAAE33AABN/AAATf/AAE4DgABOB0AATghAAE4MAABOD8AAThOAAE4XQABOGwAATh4AAE4igABOJkAATioAAE4twABOMYAATjVAAE45AABOPMAATkIAAE5CQABOREAATkdAAE5MQABOUAAATlPAAE5XgABOWIAATlxAAE5gAABOY8AATmeAAE5rQABObkAATnLAAE52gABOekAATn4AAE6BwABOiEAAToiAAE6KAABOjQAATpKAAE6WQABOlwAATprAAE6egABOn0AATqMAAE6mwABOp4AATqtAAE6vAABOsAAATrPAAE63gABOt8AATrpAAE66gABOusAATrsAAE7AQABOwIAATsKAAE7FgABOyoAATs5AAE7SAABO1cAATtbAAE7agABO3kAATuIAAE7lwABO6YAATuyAAE7xAABO9MAATviAAE78QABPAAAATwPAAE8HgABPC0AATxCAAE8QwABPEsAATxXAAE8awABPHoAATyJAAE8mAABPJwAATyrAAE8ugABPMkAATzYAAE85wABPPMAAT0FAAE9FAABPSMAAT0yAAE9QQABPVAAAT1fAAE9bgABPYMAAT2EAAE9jAABPZgAAT2sAAE9uwABPcoAAT3ZAAE93QABPewAAT37AAE+CgABPhkAAT4oAAE+NAABPkYAAT5VAAE+ZAABPnMAAT6CAAE+kQABPqAAAT6vAAE+swABProAAT67AAE+ygABPtkAAT7oAAE+6wABPvAAAT73AAE/EQABPxIAAT8YAAE/JAABPzoAAT9JAAE/TAABP1sAAT9qAAE/bQABP3wAAT+LAAE/jgABP50AAT+sAAE/sAABP78AAT/OAAE/zwABP9kAAT/aAAE/2wABP/AAAT/xAAE/+QABQAUAAUAZAAFAKAABQDcAAUBGAAFASgABQFkAAUBoAAFAdwABQIYAAUCVAAFAoQABQLMAAUDCAAFA0QABQOAAAUDvAAFA/gABQQ0AAUEcAAFBMQABQTIAAUE6AAFBRgABQVoAAUFpAAFBeAABQYcAAUGLAAFBmgABQakAAUG4AAFBxwABQdYAAUHiAAFB9AABQgMAAUISAAFCIQABQjAAAUI/AAFCTgABQl0AAUJyAAFCcwABQnsAAUKHAAFCmwABQqoAAUK5AAFCyAABQswAAULbAAFC6gABQvkAAUMIAAFDFwABQyMAAUM1AAFDRAABQ1MAAUNiAAFDcQABQ4AAAUOPAAFDngABQ7MAAUO0AAFDvAABQ8gAAUPcAAFD6wABQ/oAAUQJAAFEDQABRBwAAUQrAAFEOgABREkAAURYAAFEZAABRHYAAUSFAAFElAABRKMAAUSyAAFEwQABRNAAAUTfAAFE4wABROQAAUTzAAFFAgABRREAAUUmAAFFJwABRS8AAUU7AAFFTwABRV4AAUVtAAFFfAABRYAAAUWPAAFFngABRa0AAUW8AAFFywABRdcAAUXpAAFF+AABRgcAAUYWAAFGJQABRjQAAUZ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uAAF0/QABdRIAAXUTAAF1GwABdScAAXU7AAF1SgABdVkAAXVoAAF1bAABdXsAAXWKAAF1mQABdagAAXW3AAF1wwABddUAAXXkAAF18wABdgIAAXYRAAF2IAABdi8AAXY+AAF2QQABdlAAAXZfAAF2bgABdoMAAXaEAAF2jAABdpgAAXasAAF2uwABdsoAAXbZAAF23QABduwAAXb7AAF3CgABdxkAAXcoAAF3NAABd0YAAXdVAAF3ZAABd3MAAXeCAAF3kQABd6AAAXevAAF3xAABd8UAAXfNAAF32QABd+0AAXf8AAF4CwABeBoAAXgeAAF4LQABeDwAAXhLAAF4WgABeGkAAXh1AAF4hwABeJYAAXilAAF4tAABeMMAAXjlAAF45gABeOwAAXj4AAF5DgABeR0AAXkgAAF5LwABeT4AAXlBAAF5UAABeV8AAXliAAF5cQABeYAAAXmEAAF5kwABeaIAAXmjAAF5rQABea4AAXnDAAF5xAABecwAAXnYAAF57AABefsAAXoKAAF6GQABeh0AAXosAAF6OwABekoAAXpZAAF6aAABenQAAXqGAAF6lQABeqQAAXqzAAF6wgABetEAAXrgAAF67wABewQAAXsFAAF7DQABexkAAXstAAF7PAABe0sAAXtaAAF7XgABe20AAXt8AAF7iwABe5oAAXupAAF7tQABe8cAAXvWAAF75QABe/QAAXwDAAF8EgABfCEAAXwwAAF8RQABfEYAAXxOAAF8WgABfG4AAXx9AAF8jAABfJsAAXyfAAF8rgABfL0AAXzMAAF82wABfOoAAXz2AAF9CAABfRcAAX0mAAF9NQABfUQAAX1TAAF9YgABfXEAAX10AAF9eQABfYAAAX2aAAF9mwABfaEAAX2tAAF9wwABfdIAAX3VAAF95AABffMAAX32AAF+BQABfhQAAX4XAAF+JgABfjUAAX45AAF+SAABflcAAX5YAAF+XgABfl8AAX50AAF+dQABfn0AAX6JAAF+nQABfqwAAX67AAF+ygABfs4AAX7dAAF+7AABfvsAAX8KAAF/GQABfyUAAX83AAF/RgABf1UAAX9kAAF/cwABf4IAAX+RAAF/oAABf7UAAX+2AAF/vgABf8oAAX/eAAF/7QABf/wAAYALAAGADwABgB4AAYAtAAGAPAABgEsAAYBaAAGAZgABgHgAAYC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WAAGYpQABmLQAAZjDAAGY2AABmNkAAZjhAAGY7QABmQEAAZkQAAGZHwABmS4AAZkyAAGZQQABmVAAAZlfAAGZbgABmX0AAZmJAAGZmwABmaoAAZm5AAGZyAABmdcAAZnmAAGZ9QABmgQAAZoZAAGaGgABmiIAAZouAAGaQgABmlEAAZpgAAGabwABmnMAAZqCAAGakQABmqAAAZqvAAGavgABmsoAAZrcAAGa6wABmvoAAZsJAAGbGAABmycAAZs2AAGbRQABm0gAAZtXAAGbZgABm3UAAZuKAAGbiwABm5MAAZufAAGbswABm8IAAZvRAAGb4AABm+QAAZvzAAGcAgABnBEAAZwgAAGcLwABnDsAAZxNAAGcXAABnGsAAZx6AAGciQABnJgAAZynAAGctgABnMsAAZzMAAGc1AABnOAAAZz0AAGdAwABnRIAAZ0hAAGdJQABnTQAAZ1DAAGdUgABnWEAAZ1wAAGdfAABnY4AAZ2dAAGdrAABnbsAAZ3KAAGd2QABnegAAZ33AAGd+gABngkAAZ4YAAGeJwABnjwAAZ49AAGeRQABnlEAAZ5lAAGedAABnoMAAZ6SAAGelgABnqUAAZ60AAGewwABntIAAZ7hAAGe7QABnv8AAZ8OAAGfHQABnywAAZ87AAGfSgABn1kAAZ9oAAGffQABn34AAZ+GAAGfkgABn6YAAZ+1AAGfxAABn9MAAZ/XAAGf5gABn/UAAaAEAAGgEwABoCIAAaAuAAGgQAABoE8AAaBeAAGgbQABoHwAAaCLAAGgmgABoKkAAaC+AAGgvwABoMcAAaDTAAGg5wABoPYAAaEFAAGhFAABoRgAAaEnAAGhNgABoUUAAaFUAAGhYwABoW8AAaGBAAGhkAABoZ8AAaGuAAGhvQABocwAAaHbAAGh6gABof8AAaIAAAGiCAABohQAAaIoAAGiNwABokYAAaJVAAGiWQABomgAAaJ3AAGihgABopUAAaKkAAGisAABosIAAaLRAAGi4AABou8AAaL+AAGjDQABoxwAAaMrAAGjQAABo0EAAaNJAAGjVQABo2kAAaN4AAGjhwABo5YAAaOaAAGjqQABo7gAAaPHAAGj1gABo+UAAaPxAAGkAwABpBIAAaQTAAGkIgABpDEAAaRAAAGkTwABpF4AAaRtAAGkggABpIMAAaSLAAGklwABpKsAAaS6AAGkyQABpNgAAaTcAAGk6wABpPoAAaUJAAGlGAABpScAAaUzAAGlRQABpVQAAaVjAAGlcgABpYEAAaWQAAGlnwABpa4AAaXDAAGlxAABpcwAAaXYAAGl7AABpfsAAaYKAAGmGQABph0AAaYsAAGmOwABpkoAAaZZAAGmaAABpnQAAaaGAAGmlQABpqQAAaazAAGmwgABptEAAabgAAGm7wABpwQAAacFAAGnDQABpxkAAactAAGnPAABp0sAAadaAAGnXgABp20AAad8AAGniwABp5oAAaepAAGntQABp8cAAafWAAGn5QABp/QAAagDAAGoHQABqB4AAagkAAGoMAABqEYAAahVAAGoWAABqGcAAah2AAGoegABqIAAAaiBAAGoggABqIMAAaiSAAGooQABqKQAAaizAAGowgABqMYAAajVAAGo5AABqOUAAajxAAGo8gABqPMAAaj0AAGpCQABqQoAAakSAAGpHgABqTIAAalBAAGpUAABqV8AAaljAAGpcgABqYEAAamQAAGpnwABqa4AAam6AAGpzAABqdsAAanqAAGp+QABqggAAaoXAAGqJgABqjUAAapKAAGqSwABqlMAAapfAAGqcwABqoIAAaqRAAGqoAABqqQAAaqzAAGqwgABqtEAAargAAGq7wABqvsAAasNAAGrHAABqysAAas6AAGrSQABq1gAAatnAAGrdgABq4sAAauMAAGrlAABq6AAAau0AAGrwwABq9IAAavhAAGr5QABq/QAAawDAAGsEgABrCEAAawwAAGsPAABrE4AAaxdAAGsbAABrHsAAayKAAGsmQABrKgAAay3AAGszAABrM0AAazVAAGs4QABrPUAAa0EAAGtEwABrSIAAa0mAAGtNQABrUQAAa1TAAGtYgABrXEAAa19AAGtjwABrZ4AAa2tAAGtvAABrcsAAa3aAAGt6QABrfgAAa37AAGuCgABrhkAAa4oAAGuPQABrj4AAa5GAAGuUgABrmYAAa51AAGuhAABrpMAAa6XAAGupgABrrUAAa7EAAGu0wABruIAAa7uAAGvAAABrw8AAa8eAAGvLQABrzwAAa9LAAGvWgABr2kAAa9+AAGvfwABr4cAAa+TAAGvpwABr7YAAa/FAAGv1AABr9gAAa/nAAGv9gABsAUAAbAUAAGwIwABsC8AAbBBAAGwUAABsF8AAbBuAAGwfQABsIwAAbCbAAGwqgABsL8AAbDAAAGwyAABsNQAAbDoAAGw9wABsQYAAbEVAAGxGQABsSgAAbE3AAGxRgABsVUAAbFkAAGxcAABsYIAAbGRAAGxoAABsa8AAbG+AAGxzQABsdwAAbHrAAGyAAABsgEAAbIJAAGyFQABsikAAbI4AAGyRwABslYAAbJaAAGyaQABsngAAbKHAAGylgABsqUAAbKxAAGywwABstIAAbLhAAGy8AABsv8AAbMOAAGzHQABsx4AAbMtAAGzQgABs0MAAbNLAAGzVwABs2sAAbN6AAGziQABs5gAAbOcAAGzqwABs7oAAbPJAAGz2AABs+cAAbPzAAG0BQABtBQAAbQjAAG0MgABtEEAAbRQAAG0XwABtG4AAbSDAAG0hAABtIwAAbSYAAG0rAABtLsAAbTKAAG02QABtN0AAbTsAAG0+wABtQoAAbUZAAG1KAABtTQAAbVGAAG1VQABtWQAAbVzAAG1ggABtZEAAbWgAAG1rwABtcQAAbXFAAG1zQABtdkAAbXtAAG1/AABtgsAAbYaAAG2HgABti0AAbY8AAG2SwABtloAAbZpAAG2dQABtocAAbaWAAG2pQABtrQAAbbDAAG20gABtuEAAbbwAAG3BQABtwYAAbcOAAG3GgABty4AAbc9AAG3TAABt1sAAbdfAAG3bgABt30AAbeMAAG3mwABt6oAAbe2AAG3yAABt9cAAbfmAAG39QABuAQAAbgTAAG4IgABuDEAAbhGAAG4RwABuE8AAbhbAAG4bwABuH4AAbiNAAG4nAABuKAAAbivAAG4vgABuM0AAbjcAAG46wABuPcAAbkJAAG5GAABuScAAbk2AAG5RQABuVQAAbljAAG5cgABuXUAAbmEAAG5kwABuaIAAbm3AAG5uAABucAAAbnMAAG54AABue8AAbn+AAG6DQABuhEAAbogAAG6LwABuj4AAbpNAAG6XAABumgAAbp6AAG6iQABupgAAbqnAAG6tgABusUAAbrUAAG64wABuvgAAbr5AAG7AQABuw0AAbshAAG7MAABuz8AAbtOAAG7UgABu2EAAbtwAAG7fwABu44AAbudAAG7qQABu7sAAbvKAAG72QABu+gAAbv3AAG8BgABvBUAAbwkAAG8OQABvDoAAbxCAAG8TgABvGIAAbxxAAG8gAABvI8AAbyTAAG8ogABvLEAAbzAAAG8zwABvN4AAbzqAAG8/AABvQsAAb0aAAG9KQABvTgAAb1HAAG9VgABvWUAAb16AAG9ewABvYMAAb2PAAG9owABvbIAAb3BAAG90AABvdQAAb3jAAG98gABvgEAAb4QAAG+HwABvisAAb49AAG+TAABvk0AAb5cAAG+awABvnoAAb6JAAG+mAABvqcAAb68AAG+vQABvsUAAb7RAAG+5QABvvQAAb8DAAG/EgABvxYAAb8lAAG/NAABv0MAAb9SAAG/YQABv20AAb9/AAG/jgABv50AAb+sAAG/uwABv8oAAb/ZAAG/6AABv/0AAb/+AAHABgABwBIAAcAmAAHANQABwEQAAcBTAAHAVwABwGYAAcB1AAHAhAABwJMAAcCiAAHArgABwMAAAcDPAAHA3gABwO0AAcD8AAHBCwABwRoAAcEpAAHBPgABwT8AAcFHAAHBUwABwWcAAcF2AAHBhQABwZQAAcGYAAHBpwABwbYAAcHFAAHB1AABweMAAcHvAAHCAQABwhAAAcIfAAHCLgABwj0AAcJMAAHCWwABwmoAAcJ/AAHCgAABwogAAcKUAAHCqAABwrcAAcLGAAHC1QABwtkAAcLoAAHC9wABwwYAAcMVAAHDJAABwzAAAcNCAAHDUQABw2AAAcNvAAHDfgABw40AAcOcAAHDqwABw64AAcO9AAHDzAABw9sAAcPwAAHD8QABw/kAAcQFAAHEGQABxCgAAcQ3AAHERgABxEoAAcRZAAHEaAABxHcAAcSGAAHElQABxKEAAcSzAAHEwgABxNEAAcTgAAHE7wABxP4AAcUNAAHFHAABxTEAAcUyAAHFOgABxUYAAcVaAAHFaQABxXgAAcWHAAHFiwABxZoAAcWpAAHFuAABxccAAcXWAAHF4gABxfQAAcYDAAHGEgABxiEAAcYwAAHGPwABxk4AAcZdAAHGcgABxnMAAcZ7AAHGhwABxpsAAcaqAAHGuQABxsgAAcbMAAHG2wABxuoAAcb5AAHHCAABxxcAAccjAAHHNQABx0QAAcdTAAHHYgABx3EAAceAAAHHjwABx54AAcezAAHHtAABx7wAAcfIAAHH3AABx+sAAcf6AAHICQAByA0AAcgcAAHIKwAByDoAAchJAAHIWAAByGQAAch2AAHIhQAByJQAAcijAAHIsgAByMEAAcjQAAHI3wAByPQAAcj1AAHI/QAByQkAAckdAAHJLAAByTsAAclKAAHJTgAByV0AAclsAAHJewAByYoAAcmZAAHJpQABybcAAcnGAAHJ1QAByeQAAcnzAAHKDQAByg4AAcoUAAHKIAAByjYAAcpFAAHKSAABylcAAcpmAAHKaQAByngAAcqHAAHKigABypkAAcqoAAHKrAAByrsAAcrKAAHKywABytkAAcraAAHK2wABytwAAcrdAAHK3gAByvMAAcr0AAHK/AABywgAAcscAAHLKwAByzoAActJAAHLTQABy1wAActrAAHLegABy4kAAcuYAAHLpAABy7YAAcvFAAHL1AABy+MAAcvyAAHMAQABzBAAAcwfAAHMNAABzDUAAcw9AAHMSQABzF0AAcxsAAHMewABzIoAAcyOAAHMnQABzKwAAcy7AAHMygABzNkAAczlAAHM9wABzQYAAc0VAAHNJAABzTMAAc1CAAHNUQABzWAAAc11AAHNdgABzX4AAc2KAAHNngABza0AAc28AAHNywABzc8AAc3eAAHN7QABzfwAAc4LAAHOGgABziYAAc44AAHORwABzlYAAc5lAAHOdAABzoMAAc6SAAHOoQABzrYAAc63AAHOvwABzssAAc7fAAHO7gABzv0AAc8MAAHPEAABzx8AAc8uAAHPPQABz0wAAc9bAAHPZwABz3kAAc+IAAHPlwABz6YAAc+1AAHPxAABz9MAAc/iAAHP9wABz/gAAdAAAAHQDAAB0CAAAdAvAAHQPgAB0E0AAdBRAAHQYAAB0G8AAdB+AAHQjQAB0JwAAdCoAAHQugAB0MkAAdDYAAHQ5wAB0PYAAdEFAAHRFAAB0SMAAdE4AAHROQAB0UEAAdFNAAHRYQAB0XAAAdF/AAHRjgAB0ZIAAdGhAAHRsAAB0b8AAdHOAAHR3QAB0ekAAdH7AAHSCgAB0hkAAdIoAAHSNwAB0kYAAdJVAAHSZAAB0mcAAdJ2AAHShQAB0pQAAdKpAAHSqgAB0rIAAdK+AAHS0gAB0uEAAdLwAAHS/wAB0wMAAdMSAAHTIQAB0zAAAdM/AAHTTgAB01oAAdNsAAHTewAB04oAAdOZAAHTqAAB07cAAdPGAAHT1QAB0+oAAdPrAAHT8wAB0/8AAdQTAAHUIgAB1DEAAdRAAAHURAAB1FMAAdRiAAHUcQAB1IAAAdSPAAHUmwAB1K0AAdS8AAHUywAB1NoAAdTpAAHU+AAB1QcAAdUWAAHVKwAB1SwAAdU0AAHVQAAB1VQAAdVjAAHVcgAB1YEAAdWFAAHVlAAB1aMAAdWyAAHVwQAB1dAAAdXcAAHV7gAB1f0AAdYMAAHWGwAB1ioAAdY5AAHWSAAB1lcAAdZsAAHWbQAB1nUAAdaBAAHWlQAB1qQAAdazAAHWwgAB1sYAAdbVAAHW5AAB1vMAAdcCAAHXEQAB1x0AAdcvAAHXPgAB100AAddcAAHXawAB13oAAdeJAAHXmAAB160AAdeuAAHXtgAB18IAAdfWAAHX5QAB1/QAAdgDAAHYBwAB2BYAAdglAAHYNAAB2EMAAdhSAAHYXgAB2HAAAdh/AAHYjgAB2J0AAdisAAHYuwAB2MoAAdjZAAHY7gAB2O8AAdj3AAHZAwAB2RcAAdkmAAHZNQAB2UQAAdlIAAHZVwAB2WYAAdl1AAHZhAAB2ZMAAdmfAAHZsQAB2cAAAdnPAAHZ3gAB2e0AAdn8AAHaCwAB2hoAAdovAAHaMAAB2jgAAdpEAAHaWAAB2mcAAdp2AAHahQAB2okAAdqYAAHapwAB2rYAAdrFAAHa1AAB2uAAAdryAAHbAQAB2xAAAdsfAAHbLgAB2z0AAdtMAAHbWwAB23AAAdtxAAHbeQAB24UAAduZAAHbqAAB27cAAdvGAAHbygAB29kAAdvoAAHb9wAB3AYAAdwVAAHcIQAB3DMAAdxCAAHcUQAB3GAAAdxvAAHcfgAB3I0AAdycAAHcsQAB3LIAAdy6AAHcxgAB3NoAAdzpAAHc+AAB3QcAAd0LAAHdGgAB3SkAAd04AAHdRwAB3VYAAd1iAAHddAAB3YMAAd2SAAHdoQAB3bAAAd2/AAHdzgAB3d0AAd3gAAHd7wAB3f4AAd4NAAHeEQAB3hUAAd4ZAAHeHQAB3iUAAd4oAAHeLAAB3i1VJG51bGzXAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAFwAAABpfEA9feGRfcm9vdFBhY2thZ2VWJGNsYXNzXF94ZF9jb21tZW50c18QEF94ZF9tb2RlbE1hbmFnZXJfEBVfY29uZmlndXJhdGlvbnNCeU5hbWVdX3hkX21vZGVsTmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBJK+BJKyAAIEkrYAAgSSu3gAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAOAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAACQAAACkAAAAXAAAALwAAADAAAAAxAAAAMgAAADMAAAApAAAAKQAAABdfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASBJKqBJKiAAYAEgACBJKmBJKsQAIAFgAOABIAEgABQU1lFU9MAAAA6AAAAOwAAAA4AAAA8AAAAbgAAAKBXTlMua2V5c1pOUy5vYmplY3RzrxAxAAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAAAFMAAABUAAAAVQAAAFYAAABXAAAAWAAAAFkAAABaAAAAWwAAAFwAAABdAAAAXgAAAF8AAABgAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbYAGgAeACIAJgAqAC4AMgA2ADoAPgBCAEYASgBOAFIAVgBaAF4AYgBmAGoAbgByAHYAegB+AIIAhgCKAI4AkgCWAJoAngCiAKYAqgCuALIAtgC6AL4AwgDGAMoAzgDSANYA2rxAxAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsAAACMAAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACbAAAAnAAAAJ0AAACeAAAAn4A3gQwSgQfYgQ7QgQohgQ4KgQemgR3bgQSAgRIxgQKVgSMtgQU2gMGBCUuBFUSBBkeBAtmBD7mBFMmBFjOBBgSBBQ6BG1iBFPiBCdeBHZWBB3uBBamBEXiBGZmBGj+BCE+BCMCBAw6BCO2BAiKBBK+BHJeBCJeBGOCBA7iBILGBAS+BCAeBGHuBHTiBEzKBHBmAVV8QGlBlcnNpc3RlZEdyb3VwVjJEaXNjdXNzaW9uXxAQUGVuZGluZ1JlcGxpZWRUb18QOVBlcnNpc3RlZEV4cGlyYXRpb25Gb3JSZWNlaXZlZE1lc3NhZ2VXaXRoTGltaXRlZEV4aXN0ZW5jZV8QFlBlbmRpbmdNZXNzYWdlUmVhY3Rpb25fECVQZXJzaXN0ZWRBdHRhY2htZW50U2VudFJlY2lwaWVudEluZm9zXxATUGVyc2lzdGVkRGlzY3Vzc2lvbl8QGFBlcnNpc3RlZE1lc3NhZ2VSZWNlaXZlZF8QHFBlcnNpc3RlZE1lc3NhZ2VSZWFjdGlvblNlbnRfEB1QZXJzaXN0ZWRVc2VyTWVudGlvbkluTWVzc2FnZV8QGlJlbW90ZURlbGV0ZUFuZEVkaXRSZXF1ZXN0XxAXUGVyc2lzdGVkQ2FsbExvZ0NvbnRhY3RfEBdQZXJzaXN0ZWRHcm91cFYyRGV0YWlsc15QZXJzaXN0ZWREcmFmdF8QEFBlcnNpc3RlZEdyb3VwVjJfEB1TZW50RnlsZU1lc3NhZ2VKb2luV2l0aFN0YXR1c18QG1BlcnNpc3RlZFBlbmRpbmdHcm91cE1lbWJlcl8QGUZ5bGVNZXNzYWdlSm9pbldpdGhTdGF0dXNfEBRQZXJzaXN0ZWRDYWxsTG9nSXRlbV8QJVBlcnNpc3RlZERpc2N1c3Npb25Mb2NhbENvbmZpZ3VyYXRpb25fEBpQZXJzaXN0ZWRDb250YWN0R3JvdXBPd25lZF8QFURpc3BsYXllZENvbnRhY3RHcm91cFRGeWxlXxAbUGVyc2lzdGVkVXNlck1lbnRpb25JbkRyYWZ0XxAtUGVyc2lzdGVkTGF0ZXN0RGlzY3Vzc2lvblNlbmRlclNlcXVlbmNlTnVtYmVyXxAVUGVyc2lzdGVkQ29udGFjdEdyb3VwXxAiUGVyc2lzdGVkTWVzc2FnZVNlbnRSZWNpcGllbnRJbmZvc18QIFBlcnNpc3RlZE1lc3NhZ2VSZWFjdGlvblJlY2VpdmVkXxAhUmVjZWl2ZWRGeWxlTWVzc2FnZUpvaW5XaXRoU3RhdHVzXxAWUGVyc2lzdGVkRHJhZnRGeWxlSm9pbl8QJlBlcnNpc3RlZERpc2N1c3Npb25TaGFyZWRDb25maWd1cmF0aW9uXxATUGVyc2lzdGVkSW52aXRhdGlvbl8QKVBlcnNpc3RlZEludml0YXRpb25PbmVUb09uZUludml0YXRpb25TZW50XxA6UGVyc2lzdGVkRXhwaXJhdGlvbkZvclJlY2VpdmVkTWVzc2FnZVdpdGhMaW1pdGVkVmlzaWJpbGl0eV8QFFBlcnNpc3RlZE1lc3NhZ2VTZW50XxAWUGVyc2lzdGVkTWVzc2FnZVN5c3RlbV8QNlBlcnNpc3RlZEV4cGlyYXRpb25Gb3JTZW50TWVzc2FnZVdpdGhMaW1pdGVkVmlzaWJpbGl0eV8QG1BlcnNpc3RlZE9idkNvbnRhY3RJZGVudGl0eV8QFFBlcnNpc3RlZFVzZXJNZW50aW9uXxAjUGVyc2lzdGVkTWVzc2FnZVRpbWVzdGFtcGVkTWV0YWRhdGFfEDVQZXJzaXN0ZWRFeHBpcmF0aW9uRm9yU2VudE1lc3NhZ2VXaXRoTGltaXRlZEV4aXN0ZW5jZV8QG1BlcnNpc3RlZENvbnRhY3RHcm91cEpvaW5lZF8QEFBlcnNpc3RlZE1lc3NhZ2VfEBlQZXJzaXN0ZWRPYnZDb250YWN0RGV2aWNlXxAWUGVyc2lzdGVkR3JvdXBWMk1lbWJlcl8QGlBlcnNpc3RlZE1lc3NhZ2VFeHBpcmF0aW9uXxAYUGVyc2lzdGVkR3JvdXBEaXNjdXNzaW9uXxAYUGVyc2lzdGVkTWVzc2FnZVJlYWN0aW9uXxAZUGVyc2lzdGVkT2J2T3duZWRJZGVudGl0eV8QG1BlcnNpc3RlZE9uZVRvT25lRGlzY3Vzc2lvbt8QEAAAANMAAADUAAAA1QAAANYAAAAhAAAA1wAAANgAAAAjAAAA2QAAANoAAAAOAAAAJQAAANsAAADcAAAAKAAAAN0AAADeAAAA3wAAACkAAAApAAAAFAAAAOMAAADkAAAAMQAAACkAAADeAAAA5wAAAD0AAADeAAAA6gAAAOsAAADsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gDmAXYAEgASAAoA6gQO0gASAOYEIk4AGgDmBJKeAOAgTAAAAARw/QiBXb3JkZXJlZNMAAAA6AAAAOwAAAA4AAADwAAAA8gAAAKChAAAA8YA7oQAAAPOAPIBVXlhEX1BTdGVyZW90eXBl2QAAACEAAAAlAAAA9wAAAA4AAAAoAAAA+AAAACMAAADdAAAA+QAAAG8AAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAABAV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYA3gDuAOYBcgACABAiAPdMAAAA6AAAAOwAAAA4AAAEDAAABDQAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQAAAQ4AAAEPAAABEAAAAREAAAESAAABEwAAARQAAAEVAAABFoBHgEuATIBOgE+AUYBTgFaAWoBVXxATWERQTUNvbXBvdW5kSW5kZXhlc18QEFhEX1BTS19lbGVtZW50SURfEBlYRFBNVW5pcXVlbmVzc0NvbnN0cmFpbnRzXxAaWERfUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBlYRF9QU0tfZmV0Y2hSZXF1ZXN0c0FycmF5XxARWERfUFNLX2lzQWJzdHJhY3RfEA9YRF9QU0tfdXNlckluZm9fEBNYRF9QU0tfY2xhc3NNYXBwaW5nXxAWWERfUFNLX2VudGl0eUNsYXNzTmFtZd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAEtAAAAFwAAAPMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEEAAAA7AAAAOwAAAAXAAAA7FVfdHlwZVhfZGVmYXVsdFxfYXNzb2NpYXRpb25bX2lzUmVhZE9ubHlZX2lzU3RhdGljWV9pc1VuaXF1ZVpfaXNEZXJpdmVkWl9pc09yZGVyZWRcX2lzQ29tcG9zaXRlV19pc0xlYWaAAIBIgACAPAgICAiASoA+CAiAAAjSAAAAOwAAAA4AAAE7AAABPKCASdIAAAE+AAABPwAAAUAAAAFBWiRjbGFzc25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjAAABQAAAAUIAAAFDV05TQXJyYXlYTlNPYmplY3TSAAABPgAAAT8AAAFFAAABRl8QEFhEVU1MUHJvcGVydHlJbXCkAAABRwAAAUgAAAFJAAABQ18QEFhEVU1MUHJvcGVydHlJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAAPMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIA8CAgICIBKgD8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAFbAAAAFwAAAPMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgE2AAIA8CAgICIBKgEAICIAACNIAAAA7AAAADgAAAWkAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAA8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgDwICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAXwAAAAXAAAA8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACAUIAAgDwICAgIgEqAQggIgAAI0gAAADsAAAAOAAABigAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAADzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACAPAgICAiASoBDCAiAAAgI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAZ4AAAAXAAAA8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACAVIAAgDwICAgIgEqARAgIgAAI0wAAADoAAAA7AAAADgAAAawAAAGtAAAAoKCggFXSAAABPgAAAT8AAAGwAAABsV8QE05TTXV0YWJsZURpY3Rpb25hcnmjAAABsAAAAbIAAAFDXE5TRGljdGlvbmFyed8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAAAPMAAADsAAAA7AAAAOwAAAAxAAA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jAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAAhIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIBmCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAJfAAAAFwAAAhIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgHOAAIBmCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAAJtAAACbgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAACEgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgGYICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAACEgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgGYICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAACEgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgGYICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAACEgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgGYICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAACEgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgGYICAgIgEqAbwgIgAAI2QAAACEAAAAlAAACvAAAAA4AAAAoAAACvQAAACMAAADdAAACvgAAAfAAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAACxl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYBhgGWAOYBcgACABAiAetMAAAA6AAAAOwAAAA4AAALIAAAC0AAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAAtEAAALSAAAC0wAAAtQAAALVAAAC1gAAAteAgoCDgISAhYCHgIiAiYBVXxAdWERfUEF0dEtfZGVmYXVsdFZhbHVlQXNTdHJpbmdfEChYRF9QQXR0S19hbGxvd3NFeHRlcm5hbEJpbmFyeURhdGFTdG9yYWdlXxAXWERfUEF0dEtfbWluVmFsdWVTdHJpbmdfEBZYRF9QQXR0S19hdHRyaWJ1dGVUeXBlXxAXWERfUEF0dEtfbWF4VmFsdWVTdHJpbmdfEB1YRF9QQXR0S192YWx1ZVRyYW5zZm9ybWVyTmFtZV8QIFhEX1BBdHRLX3JlZ3VsYXJFeHByZXNzaW9uU3RyaW5n3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAACEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgHkICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAACEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgHkICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAACEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgHkICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAACEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgHkICAgIgEqAfggIgAAIEQPo3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAACEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgHkICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAACEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgHkICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAACEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgHkICAgIgEqAgQgIgAAI0gAAAT4AAAE/AAADSwAAA0xdWERQTUF0dHJpYnV0ZaYAAANNAAADTgAAA08AAANQAAADUQAAAUNdWERQTUF0dHJpYnV0ZVxYRFBNUHJvcGVydHlfEBBYRFVNTFByb3BlcnR5SW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEBIAAAEiAAABIwAAASQAAANTAAAAIQAAASYAAAEnAAADVAAAACMAAAElAAADVQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAbwAAAOwAAADsAAADXQAAADEAAADsAAAA3gAAAOwAAAIGAAAB7QAAAOwAAADsAAADZQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIA3CAiAjQiAOQiAioBfCAiAjAgSZXz9mtMAAAA6AAAAOwAAAA4AAANpAAADbAAAAKCiAAACDwAAAhCAZIBlogAAA20AAANugI6AmYBV2QAAACEAAAAlAAADcQAAAA4AAAAoAAADcgAAACMAAADdAAADcwAAAfEAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAADe18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYCLgGSAOYBcgACABAiAj9MAAAA6AAAAOwAAAA4AAAN9AAADhgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAA4cAAAOIAAADiQAAA4oAAAOLAAADjAAAA40AAAOOgJCAkYCSgJSAlYCWgJeAmIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAADbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgI4ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAADbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgI4ICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAA7AAAAAXAAADbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACAk4AAgI4ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAA74AAAO/AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAANtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACAjggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAANtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACAjggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAANtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACAjggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAANtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACAjggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAANtAAAA7AAAAOwAAADsAAAAMQA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XAAAF0AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQUAAADsAAAA7AAAABcAAADsgACAAIAAgMQICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABhcAAAAXAAAF0AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACAyoAAgMQICAgIgEqAQAgIgAAI0gAAADsAAAAOAAAGJQAAATyhAAAGJoDLgEnSAAAAOwAAAA4AAAYpAAABPKIAAAYqAAAB7YDMgF+ASV8QGHJhd093bmVkSWRlbnRpdHlJZGVudGl0ed8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAABdAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIDECAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAY/AAAAFwAABdAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgM+AAIDECAgICIBKgEIICIAACNIAAAA7AAAADgAABk0AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAF0AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAUoAAgMQICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABmAAAAAXAAAF0AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACA0oAAgMQICAgIgEqARAgIgAAI0wAAADo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hAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAAI4gAACOMAAAjkAAAI5QAACOYAAAjnAAAI6IEBE4EBFIEBFYEBFoEBF4EBGIEBGYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB6kAAAAXAAAILgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACA+4AAgQERCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAACC4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBEQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAguAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBAREICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAAILgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgQERCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAACC4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBEQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAguAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBAREICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAILgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQERCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAACVQAAAAhAAABJgAAAScAAAlVAAAAIwAAASUAAAlWAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB8AAAA7AAAAOwAAAleAAAAMQAAAOwAAADeAAAA7AAABKIAAAaUAAAA7AAAAOwAAAlmAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgMEICIEBHAiAOQiBAsSA2QgIgQEbCBI/SELw0wAAADoAAAA7AAAADgAACWoAAAltAAAAoKIAAAIPAAAErIBkgKWiAAAJbgAACW+BAR2BASiAVdkAAAAhAAAAJQAACXIAAAAOAAAAKAAACXMAAAAjAAAA3QAACXQAAAapAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAACXxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBARqAZIA5gFyAAIAECIEBHtMAAAA6AAAAOwAAAA4AAAl+AAAJhwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAACYgAAAmJAAAJigAACYsAAAmMAAAJjQAACY4AAAmPgQEfgQEggQEhgQEjgQEkgQElgQEmgQEngFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAAluAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBAR0ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAJbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQEdCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAmxAAAAFwAACW4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQEigACBAR0ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAACb8AAAnAAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAAluAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBAR0ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAJbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQEdCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAACW4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBHQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQ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AAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAACocAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBMggICAiASoBBCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAK+AAAABcAAAqHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCAAAAOwAAADsAAAAFwAAAOyAAIEBPoAAgQEyCAgICIBKgEIICIAACNIAAAA7AAAADgAACwYAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAKhwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAUoAAgQEyCAgICIBKgEMICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAsZAAAAFwAACocAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEKAAAA7AAAAOwAAAAXAAAA7IAAgQFBgACBATIICAgIgEqARAgIgAAI0wAAADoAAAA7AAAADgAACycAAAsoAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABtQAAABcAAAqHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCwAAAOwAAADsAAAAFwAAAOyAAIBXgACBATIICAgIgEqARQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAACzsAAAAXAAAKhwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQwAAADsAAAA7AAAABcAAADsgACBAUSAAIEBMggICAiASoBGCAiAAAhfEBZQZXJzaXN0ZWRHcm91cFYyTWVtYmVy0wAAADoAAAA7AAAADgAAC0oAAAtcAAAAoK8QEQAAC0sAAAtMAAAK4wAAC04AAAtPAAALUAAAC1EAAAtSAAALUwAAC1QAAAtVAAALVgAAC1cAAAHtAAALWQAAC1oAAAtbgQFGgQFHgQE7gQFIgQFJgQFKgQFLgQFMgQFNgQFOgQFPgQFQgQFRgF+BAVKBAVOBAVSvEBEAAAtdAAALXgAAC18AAAtgAAALYQAAC2IAAAtjAAALZAAAC2UAAAtmAAALZwAAC2gAAAtpAAALagAAC2sAAAtsAAALbYEBVYEBbIEBhIEBm4EBsoEByYEB4IEB94ECDoEiAIEiF4EiLoEiRYEiXYEidIEii4EiooBVXxAPcGVybWlzc2lvbkFkbWluWWZpcnN0TmFtZVlpc1BlbmRpbmdYbGFzdE5hbWVfEB5wZXJtaXNzaW9uUmVtb3RlRGVsZXRlQW55dGhpbmdYcG9zaXRpb25XY29tcGFueVpyYXdDb250YWN0XxAYcGVybWlzc2lvbkNoYW5nZVNldHRpbmdzWHJhd0dyb3VwXxAVcGVybWlzc2lvblNlbmRNZXNzYWdlXxATbm9ybWFsaXplZFNlYXJjaEtleV8QJ3Blcm1pc3Npb25FZGl0T3JSZW1vdGVEZWxldGVPd25NZXNzYWdlc18QGHJhd093bmVkSWRlbnRpdHlJZGVudGl0eV8QEW5vcm1hbGl6ZWRTb3J0S2V53xASAAABIgAAASMAAAEkAAALfwAAACEAAAEmAAABJwAAC4AAAAAjAAABJQAAC4EAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJoAAADsAAAA7AAAC4kAAAAxAAAA7AAAAN4AAADsAAACBgAAC0sAAADsAAAA7AAAC5EAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAS8ICIEBVwiAOQiAioEBRggIgQFWCBL8csiv0wAAADoAAAA7AAAADgAAC5UAAAuYAAAAoKIAAAIPAAACEIBkgGWiAAALmQAAC5qBAViBAWOAVdkAAAAhAAAAJQAAC50AAAAOAAAAKAAAC54AAAAjAAAA3QAAC58AAAtdAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAC6dfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAVWAZIA5gFyAAIAECIEBWdMAAAA6AAAAOwAAAA4AAAupAAALsgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAC7MAAAu0AAALtQAAC7YAAAu3AAALuAAAC7kAAAu6gQFagQFbgQFcgQFegQFfgQFggQFhgQFigFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAAuZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBAVgICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAALmQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQFYCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAvcAAAAFwAAC5kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQFdgACBAVgICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAC+oAAAvrAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAAuZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBAVgICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAALmQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQFYCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAC5kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBWAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAuZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBAVgICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAALmQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQFYCAgICIBKgG8ICIAACNkAAAAhAAAAJQAADDkAAAAOAAAAKAAADDoAAAAjAAAA3QAADDsAAAtdAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAADENfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAVWAZYA5gFyAAIAECIEBZNMAAAA6AAAAOwAAAA4AAAxFAAAMTQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAADE4AAAxPAAAMUAAADFEAAAxSAAAMUwAADFSBAWWBAWaBAWeBAWiBAWmBAWqBAWuAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwAAC5oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIEBYwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAAuaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBAWMICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAALmgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQFjCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwAAC5oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEBYwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAuaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBAWMICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAALmgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQFjCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAC5oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBYwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAAzAAAAAIQAAASYAAAEnAAAMwQAAACMAAAElAAAMwgAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAmgAAAOwAAADsAAAMygAAADEAAADsAAAA3gAAAOwAAAIGAAALTAAAAOwAAADsAAAM0gAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEBLwgIgQFuCIA5CICKgQFHCAiBAW0IEqwIq7rTAAAAOgAAADsAAAAOAAAM1gAADNkAAACgogAAAg8AAAIQgGSAZaIAAAzaAAAM24EBb4EBeoBV2QAAACEAAAAlAAAM3gAAAA4AAAAoAAAM3wAAACMAAADdAAAM4AAAC14AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAM6F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBbIBkgDmAXIAAgAQIgQFw0wAAADoAAAA7AAAADgAADOoAAAzzAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAAM9AAADPUAAAz2AAAM9wAADPgAAAz5AAAM+gAADPuBAXGBAXKBAXOBAXWBAXaBAXeBAXiBAXmAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAADNoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBbwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAzaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBAW8ICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADR0AAAAXAAAM2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBAXSAAIEBbwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAANKwAADSwAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAADNoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBbwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAAzaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBAW8ICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAM2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQFvCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAADNoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBbwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAAzaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBAW8ICAgIgEqAbwgIgAAI2QAAACEAAAAlAAANegAAAA4AAAAoAAANewAAACMAAADdAAANfAAAC14AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAANhF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBbIBlgDmAXIAAgAQIgQF70wAAADoAAAA7AAAADgAADYYAAA2OAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAANjwAADZAAAA2RAAANkgAADZMAAA2UAAANlYEBfIEBfYEBfoEBf4EBgYEBgoEBg4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAM2wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQF6CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAADNsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBeggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAzbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBAXoICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAAM2wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEBeggICAiASoB+CAiAAAgRArzfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAzbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBAXoICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAM2wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQF6CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAADNsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBeggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAA4CAAAAIQAAASYAAAEnAAAOAwAAACMAAAElAAAOBAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAmgAAAOwAAADsAAAODAAAADEAAADsAAAA3gAAAOwAAAIGAAAK4wAAAOwAAADsAAAOFAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEBLwgIgQGGCIA5CICKgQE7CAiBAYUIEkBpvk/TAAAAOgAAADsAAAAOAAAOGAAADhsAAACgogAAAg8AAAIQgGSAZaIAAA4cAAAOHYEBh4EBkoBV2QAAACEAAAAlAAAOIAAAAA4AAAAoAAAOIQAAACMAAADdAAAOIgAAC18AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAOKl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBhIBkgDmAXIAAgAQIgQGI0wAAADoAAAA7AAAADgAADiwAAA41AAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAAONgAADjcAAA44AAAOOQAADjoAAA47AAAOPAAADj2BAYmBAYqBAYuBAY2BAY6BAY+BAZCBAZGAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAADhwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBhwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAA4cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBAYcICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADl8AAAAXAAAOHAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBAYyAAIEBhwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAAObQAADm4AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAADhwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBhwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAA4cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBAYcICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAOHAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQGHCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAADhwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBhwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAA4cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBAYcICAgIgEqAbwgIgAAI2QAAACEAAAAlAAAOvAAAAA4AAAAoAAAOvQAAACMAAADdAAAOvgAAC18AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAOxl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBhIBlgDmAXIAAgAQIgQGT0wAAADoAAAA7AAAADgAADsgAAA7QAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAAO0QAADtIAAA7TAAAO1AAADtUAAA7WAAAO14EBlIEBlYEBloEBl4EBmIEBmYEBmoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAOHQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQGSCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAADh0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBkggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAA4dAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBAZIICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAAOHQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgQGSCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAADh0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBkggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASg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AAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAABHgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBAdcICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAR4AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQHXCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwAAEeAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEB1wgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABHgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBAdcICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAR4AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQHXCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAEeAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEB1wgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAABMGAAAAIQAAASYAAAEnAAATBwAAACMAAAElAAA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AFwAAABcAAAAXAAAUYgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQIFCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAFGIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIECBQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABRiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBAgUICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAAUYgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIECBQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABRiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBAgUICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAUYgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQIFCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAFGIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIECBQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAABWIAAAAIQAAASYAAAEnAAAViQAAACMAAAElAAAVigAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAmgAAAOwAAADsAAAVkgAAADEAAADsAAAA3gAAAOwAAASiAAALUwAAAOwAAADsAAAVmgAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEBLwgIgQIQCIA5CIECxIEBTQgIgQIPCBMAAAABEKv9+tMAAAA6AAAAOwAAAA4AABWeAAAVoQAAAKCiAAACDwAABKyAZIClogAAFaIAABWjgQIRgQIcgFXZAAAAIQAAACUAABWmAAAADgAAACgAABWnAAAAIwAAAN0AABWoAAALZQAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAABWwXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQIOgGSAOYBcgACABAiBAhLTAAAAOgAAADsAAAAOAAAVsgAAFbsAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAABW8AAAVvQAAFb4AABW/AAAVwAAAFcEAABXCAAAVw4ECE4ECFIECFYECF4ECGIECGYECGoECG4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAVogAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQIRCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAFaIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIECEQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAV5QAAABcAABWiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIECFoAAgQIRCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AABXzAAAV9AAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAVogAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQIRCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAFaIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIECEQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAABWiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBAhEICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAVogAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQIRCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgA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AAAAXAAAWugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBAjCAAIECJQgICAiASoBCCAiAAAjSAAAAOwAAAA4AABc3AAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAFroAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIECJQgICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAXSgAAABcAABa6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIECM4AAgQIlCAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AABdYAAAXWQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAAAWugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgQIlCAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAABdsAAAAFwAAFroAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgQI2gACBAiUICAgIgEqARggIgAAIXxAbUGVyc2lzdGVkT2J2Q29udGFjdElkZW50aXR50wAAADoAAAA7AAAADgAAF3sAABeYAAAAoK8QHAAAF3wAABd9AAAXfgAAF38AABeAAAAXgQAAF4IAABeDAAAXhAAAF4UAABeGAAAXhwAAF4gAABeJAAAXigAAF4sAABeMAAAXjQAACuMAABePAAAXkAAAF5EAABeSAAAXkwAAF5QAABeVAAAXlgAAF5eBAjiBAjmBAjqBAjuBAjyBAj2BAj6BAj+BAkCBAkGBAkKBAkOBAkSBAkWBAkaBAkeBAkiBAkmBATuBAkqBAkuBAkyBAk2BAk6BAk+BAlCBAlGBAlKvEBwAABeZAAAXmgAAF5sAABecAAAXnQAAF54AABefAAAXoAAAF6EAABeiAAAXowAAF6QAABelAAAXpgAAF6cAABeoAAAXqQAAF6oAABerAAAXrAAAF60AABeuAAAXrwAAF7AAABexAAAXsgAAF7MAABe0gQJTgQJqgQKBgR/7gSASgSApgQuigSBAgR3BgSBXgRkNgSBvgSCGgSCdgSEsgSFDgRxegSFagSFxgSGJgRf0gSGggSG3gSHOgRuGgSHlgRrjgQNVgFVfEB1jYXBhYmlsaXR5V2VicnRjQ29udGludW91c0lDRV8QD3NvcnREaXNwbGF5TmFtZV5jYWxsTG9nQ29udGFjdF8QHXNlcmlhbGl6ZWRJZGVudGl0eUNvcmVEZXRhaWxzXxARY3VzdG9tRGlzcGxheU5hbWVfEBJjYXBhYmlsaXR5R3JvdXBzVjJYbWVzc2FnZXNdcGVybWFuZW50VVVJRFlyZWFjdGlvbnNYaXNBY3RpdmVfEBJvd25lZENvbnRhY3RHcm91cHNaaXNPbmVUb09uZV8QGGlzQ2VydGlmaWVkQnlPd25LZXljbG9ha1dkZXZpY2VzXxATY3VzdG9tUGhvdG9GaWxlbmFtZV8QD2FzR3JvdXBWMk1lbWJlcl8QFXJhd09uZVRvT25lRGlzY3Vzc2lvbllyYXdTdGF0dXNUbm90ZV1jb250YWN0R3JvdXBzXxAYcmF3T3duZWRJZGVudGl0eUlkZW50aXR5WHBob3RvVVJMXxAaY2FwYWJpbGl0eU9uZVRvT25lQ29udGFjdHNfEBtsYXRlc3RTZW5kZXJTZXF1ZW5jZU51bWJlcnNfEA9mdWxsRGlzcGxheU5hbWVfEBByYXdPd25lZElkZW50aXR5XnN5c3RlbU1lc3NhZ2Vz3xASAAABIgAAASMAAAEkAAAX0gAAACEAAAEmAAABJwAAF9MAAAAjAAABJQAAF9QAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJMAAADsAAAA7AAAF9wAAAAxAAAA7AAAAN4AAADsAAACBgAAF3wAAADsAAAA7AAAF+QAAADsXxAgWER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AAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAGS4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIECeAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABkuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBAngICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAAZLgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIECeAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABkuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBAngICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAZLgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQJ4CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAGS4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIECeAgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAABpUAAAAIQAAASYAAAEnAAAaVQAAACMAAAElAAAaVgAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAkwAAAOwAAADsAAAaXgAAADEAAADsAAAA3gAAAOwAAASiAAAXfgAAAOwAAADsAAAaZgAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECIggIgQKDCIA5CIECxIECOggIgQKCCBLri+M+0wAAADoAAAA7AAAADgAAGmoAABptAAAAoKIAAAIPAAAErIBkgKWiAAAabgAAGm+BAoSBAo+AVdkAAAAhAAAAJQAAGnIAAAAOAAAAKAAAGnMAAAAjAAAA3QAAGnQAABebAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAGnxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAoGAZIA5gFyAAIAECIEChdMAAAA6AAAAOwAAAA4AABp+AAAahwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAGogAABqJAAAaigAAGosAABqMAAAajQAAGo4AABqPgQKGgQKHgQKIgQKKgQKLgQKMgQKNgQKOgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAABpuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBAoQICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAabgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQKECAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAABqxAAAAFwAAGm4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQKJgACBAoQICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAGr8AABrAAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAABpuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBAoQICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAAabgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQKECAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAGm4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEChAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABpuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBAoQICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAabgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQKECAgICIBKgG8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agQKcgQKdgQKfgQKggQKigQKjgQKlgQKmgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAbrAAAABcAABuGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBAAAAOwAAADsAAAAFwAAAOyAAIECm4AAgQKYCAgICIBKgD4ICIAACNIAAAA7AAAADgAAG7oAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAbhgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQUAAADsAAAA7AAAABcAAADsgACAAIAAgQKYCAgICIBKgD8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAABvNAAAAFwAAG4YAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgQKegACBApgICAgIgEqAQAgIgAAI0gAAADsAAAAOAAAb2wAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABuGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBApgICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAG+4AAAAXAAAbhgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBAqGAAIECmAgICAiASoBCCAiAAAjSAAAAOwAAAA4AABv8AAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAG4YAAADsAAA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AADoAAAA7AAAADgAAHLsAABy8AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAABxqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBArAICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAAcagAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQKwCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAHGoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIECsAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABxqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBArAICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAcagAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQKwCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAHQoAAAAOAAAAKAAAHQsAAAAjAAAA3QAAHQwAABxGAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAHRRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWR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AAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAACHKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBAzUICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAACjwAAAAXAAAhygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACBASyAAIEDNQgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAACHKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBAzUICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAIAAAAAXAAAhygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBAtmAAIEDNQgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACHKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBAzUICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAhygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQM1CAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABc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AKCoAACgrAAAoLAAAKC0AACguAAAoLwAAKDAAACgxgQOhgQOigQOjgQOlgQOmgQOngQOogQOpgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACgQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBA58ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAoEAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQOfCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAChTAAAAFwAAKBAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQOkgACBA58ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAKGEAAChiAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACgQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBA58ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAoEAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQOfCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAKBAAAADsAAAA7AA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hbIEIlYAAgQMOgQMOgQO3gQO4EpMDe9rfEBQAAADdAAApRwAAKUgAAClJAAApSgAAKUsAAClMAAAAIQAAAA4AAClNAAAAJQAAKU4AAAAoAAApTwAAKVAAAClRAAApUgAAKVMAAClUAAAAIwAABSEAAADeAAAA3gAAKVgAAAApAAAA5AAAAN4AAAAUAAAA5wAAACkAAABmAAApYAAAKWEAAAApAAAAKQAAAN4AACllAAApZgAAAOQAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYA5gDmBA7qABIEDtIA5gAKBCJOABIAvgR6sgQO5gASABIA5gQPLgR6tgQO0Eo5018bTAAAAOgAAADsAAAAOAAApagAAKWwAAACgoQAAAPGAO6EAACltgQO7gFXZAAAAIQAAACUAAClwAAAADgAAACgAAClxAAAAIwAAAN0AAClyAAAAmAAAAPEAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAACl6XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQO4gDuAOYBcgACABAiBA7zTAAAAOgAAADsAAAAOAAApfAAAKYYAAACgqQAAAQQAAAEFAAABBgAAAQcAAAEIAAABCQAAAQoAAAELAAABDIA+gD+AQIBBgEKAQ4BEgEWARqkAACmHAAApiAAAKYkAACmKAAApiwAAKYwAACmNAAApjgAAKY+BA72BA7+BA8CBA8KBA8OBA8WBA8aBA8iBA8mAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACmTAAAAFwAAKW0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEEAAAA7AAAAOwAAAAXAAAA7IAAgQO+gACBA7sICAgIgEqAPggIgAAI0gAAADsAAAAOAAApoQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAACltAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBQAAAOwAAADsAAAAFwAAAOyAAIAAgACBA7sICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAKbQAAAAXAAApbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACBA8GAAIEDuwgICAiASoBACAiAAAjSAAAAOwAAAA4AACnCAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAKW0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEDuwgICAiASoBBCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAp1QAAABcAACltAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCAAAAOwAAADsAAAAFwAAAOyAAIEDxIAAgQO7CAgICIBKgEIICIAACNIAAAA7AAAADgAAKeMAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAApbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAroAAgQO7CAgICIBKgEMICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACn2AAAAFwAAKW0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEKAAAA7AAAAOwAAAAXAAAA7IAAgQPHgACBA7sICAgIgEqARAgIgAAI0wAAADoAAAA7AAAADgAAKgQAACoFAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABtQAAABcAACltAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCwAAAOwAAADsAAAAFwAAAOyAAIBXgACBA7sICAgIgEqARQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAKhgAAAAXAAApbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQwAAADsAAAA7AAAABcAAADsgACBA8qAAIEDuwgICAiASoBGCAiAAAhfEBBQZXJzaXN0ZWRNZXNzYWdl0wAAADoAAAA7AAAADgAAKicAACo9AAAAoK8QFQAAKigAACopAAAqKgAAKisAACosAAAqLQAAKi4AACovAAAqMAAAKjEAACoyAAAqMwAAKjQAABeNAAAqNgAAKjcAACo4AAAqOQAAKjoAACo7AAAqPIEDzIEDzYEDzoEDz4ED0IED0YED0oED04ED1IED1YED1oE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lAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwAAKoQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIED7ggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACqEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBA+4ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAqhAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQPuCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwAAKoQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIED7ggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAACqEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBA+4ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAqhAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQPuCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAKoQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIED7ggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAACuqAAAAIQAAASYAAAEnAAArqwAAACMAAAElAAArrAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAmAAAAOwAAADsAAArtAAAADEAAADsAAAA3gAAAOwAAASiAAAqKQAAAOwAAADsAAArvAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEDuAgIgQP5CIA5CIECxIEDzQgIgQP4CBLTdIet0wAAADoAAAA7AAAADgAAK8AAACvDAAAAoKIAAAIPAAAErIBkgKWiAAArxAAAK8WBA/qBBAWAVdkAAAAhAAAAJQAAK8gAAAAOAAAAKAAAK8kAAAAjAAAA3QAAK8oAACo/AAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAK9JfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA/eAZIA5gFyAAIAECIED+9MAAAA6AAAAOwAAAA4AACvUAAAr3QAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAK94AACvfAAAr4AAAK+EAACviAAAr4wAAK+QAACvlgQP8gQP9gQP+gQQAgQQBgQQCgQQDgQQEgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACvEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBA/oICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAArxAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQP6CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACwHAAAAFwAAK8QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQP/gACBA/oICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAALBUAACwWAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACvEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBA/oICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAArxAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQP6CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAK8QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIED+ggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAACvEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBA/oICAg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AFwAAMMsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEYwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADDLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBBGMICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAAwywAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgQRjCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAMMsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEYwgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADDLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBGMICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAwywAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQRjCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAMfEAAAAhAAABJgAAAScAADHyAAAAIwAAASUAADHzAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACYAAAA7AAAAOw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LgQTMgQTNgQTPgQTQgQTRgQTSgQTTgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADY4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBMkICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA2OAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQTJCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADZ7AAAAFwAANjgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQTOgACBBMkICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAANokAADaKAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADY4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBMkICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAA2OAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQTJCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAANjgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEyQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADY4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBMkICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA2OAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQTJCAgICIBKgG8ICIAACNkAAAAhAAAAJQAANtgAAAAOAAAAKAAANtkAAAAjAAAA3QAANtoAADYWAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAANuJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBMaAZYA5gFyAAIAECIEE1dMAAAA6AAAAOwAAAA4AADbkAAA27AAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAANu0AADbuAAA27wAANvAAADbxAAA28gAANvOBBNaBBNeBBNiBBNmBBNqBBNuBBNyAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACjPAAAAFwAANjkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgQOtgACBBNQICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA2OQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQTUCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAANjkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEE1AgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAmeQAAABcAADY5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDgYAAgQTUCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAANjkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEE1AgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADY5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBNQICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA2OQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQTUCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAN18AAAAhAAABJgAAAScAADdgAAAAIwAAASUAADdhAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACUAAAA7AAAAOwAADdpAAAAMQAAAOwAAADeAAAA7AAAAgYAADYTAAAA7AAAAOwAADdxAAAA7F8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AADjKAAA40wAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAONQAADjVAAA41gAAONcAADjYAAA42QAAONoAADjbgQT5gQT6gQT7gQT9gQT+gQT/gQUAgQUBgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADi6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBPcICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA4ugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQT3CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADj9AAAAFwAAOLoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQT8gACBBPcICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAOQsAADkMAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADi6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBPcICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAA4ugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQT3CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAA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hc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBdmAZYA5gFyAAIAECIEF6NMAAAA6AAAAOwAAAA4AAESjAABEqwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAARKwAAEStAABErgAARK8AAESwAABEsQAARLKBBemBBeqBBeuBBeyBBe2BBe6BBe+AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAQ/gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEF5wgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEP4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBBecICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABD+AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQXnCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAAQ/gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBBecICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABD+AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQXnCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAQ/gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEF5wgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEP4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBecICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAABFHgAAACEAAAEmAAABJwAARR8AAAAjAAABJQAARSAAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIsAAADsAAAA7AAARSgAAAAxAAAA7AAAAN4AAADsAAAEogAAQooAAADsAAAA7AAARTAAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBakICIEF8giAOQiBAsSBBb4ICIEF8QgTAAAAASRt9WnTAAAAOgAAADsAAAAOAABFNAAARTcAAACgogAAAg8AAASsgGSApaIAAEU4AABFOYEF84EF/oBV2QAAACEAAAAlAABFPAAAAA4AAAAoAABFPQAAACMAAADdAABFPgAAQpEAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABFRl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEF8IBkgDmAXIAAgAQIgQX00wAAADoAAAA7AAAADgAARUgAAEVRAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAABFUgAARVMAAEVUAABFVQAARVYAAEVXAABFWAAARVmBBfWBBfaBBfeBBfmBBfqBBfuBBfyBBf2AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAARTgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEF8wgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEU4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBfMICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAARXsAAAAXAABFOAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBBfiAAIEF8wgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABFiQAARYoAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAARTgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEF8wgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAEU4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBBfMICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABFOAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQXzCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAARTgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEF8wgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEU4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBfMICAgIgEqAbwgIgAAI2QAAACEAAAAlAABF2AAAAA4AAAAoAABF2QAAACMAAADdAABF2gAAQpEAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABF4l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEF8IClgDmAXIAAgAQIgQX/0wAAADoAAAA7AAAADgAAReQAAEXsAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAABF7QAARe4AAEXvAABF8AAARfEAAEXyAABF84EGAIEGAYEGAoEGA4ENIIENIYENIoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAABFOQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQX+CAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwAARTkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEF/ggICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAEU5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBBf4ICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAIQAAAAXAABFOQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBBgSAAIEF/ggICAiASoC3CAiAAAjfEBAAAEYyAABGMwAARjQAAEY1AAAAIQAARjYAAEY3AAAAIwAARjgAAEY5AAAADgAAACUAAEY6AABGOwAAACgAAADdAAAA3gAARj0AAAApAAAAKQAAABQAAEZBAAAA5AAAADEAAAApAAAA3gAAAOcAAABSAAAA3gAARkgAAEZJAAAA7F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYA5gQYYgASABIACgQYGgQO0gASAOYEIk4AbgDmBDR+BBgUIEjLvk6bTAAAAOgAAADsAAAAOAABGTQAARk8AAACgoQAAAPGAO6EAAEZQgQYHgFXZAAAAIQAAACUAAEZTAAAADgAAACgAAEZUAAAAIwAAAN0AAEZVAAAAhAAAAPEAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAEZdXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQYEgDuAOYBcgACABAiBBgjTAAAAOgAAADsAAAAOAABGXwAARmkAAACgqQAAAQQAAAEFAAABBgAAAQcAAAEIAAABCQAAAQoAAAELAAABDIA+gD+AQIBBgEKAQ4BEgEWARqkAAEZqAABGawAARmwAAEZtAABGbgAARm8AAEZwAABGcQAARnKBBgmBBguBBgyBBhCBBhGBBhOBBhSBBhaBBheAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAEZ2AAAAFwAARlAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEEAAAA7AAAAOwAAAAXAAAA7IAAgQYKgACBBgcICAgIgEqAPggIgAAI0gAAADsAAAAOAABGhAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEZQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBgcICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAARpcAAAAXAABGUAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACBBg2AAIEGBwgICAiASoBACAiAAAjSAAAAOwAAAA4AAEalAAABPKEAAEamgQYOgEnSAAAAOwAAAA4AAEapAAABPKEAAEaqgQYPgElWc2hhMjU23xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABGUAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQYHCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAEa+AAAAFwAARlAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQYSgACBBgcICAgIgEqAQggIgAAI0gAAADsAAAAOAABGzAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEZQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBgcICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAARt8AAAAXAABGUAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBBhWAAIEGBwgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAABG7QAARu4AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAARlAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEGBwgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAUgAAABcAAEZQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIAbgACBBgcICAgIgEqARggIgAAI0wAAADoAAAA7AAAADgAARw8AAEcUAAAAoKQAAEcQAABHEQAARxIAAEaqgQYZgQYagQYbgQYPpAAARxUAAEcWAABHFwAARxiBBhyBBjOBDPGBDQiAVV8QEWludHJpbnNpY0ZpbGVuYW1lXxAcYWxsRnlsZU1lc3NhZ2VKb2luV2l0aFN0YXR1c18QEWFsbERyYWZ0RnlsZUpvaW5z3xASAAABIgAAASMAAAEkAABHHgAAACEAAAEmAAABJwAARx8AAAAjAAABJQAARyAAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIQAAADsAAAA7AAARygAAAAxAAAA7AAAAN4AAADsAAACBgAARxAAAADsAAAA7AAARzAAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBgQICIEGHgiAOQiAioEGGQgIgQYdCBLmKh+d0wAAADoAAAA7AAAADgAARzQAAEc3AAAAoKIAAAIPAAACEIBkgGWiAABHOAAARzmBBh+BBiqAVdkAAAAhAAAAJQAARzwAAAAOAAAAKAAARz0AAAAjAAAA3QAARz4AAEcVAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAR0ZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBhyAZIA5gFyAAIAECIEGINMAAAA6AAAAOwAAAA4AAEdIAABHUQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAR1IAAEdTAABHVAAAR1UAAEdWAABHVwAAR1gAAEdZgQYhgQYigQYjgQYlgQYmgQYngQYogQYpgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEc4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBh8ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABHOAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQYfCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAEd7AAAAFwAARzgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQYkgACBBh8ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAR4kAAEeKAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEc4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBh8ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAABHOAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQYfCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAARzgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEGHwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEc4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBh8ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABHOAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQYfCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAR9gAAAAOAAAAKAAAR9kAAAAjAAAA3QAAR9oAAEcVAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAR+JfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBhyAZYA5gFyAAIAECIEGK9MAAAA6AAAAOwAAAA4AAEfkAABH7AAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAR+0AAEfuAABH7wAAR/AAAEfxAABH8gAAR/OBBiyBBi2BBi6BBi+BBjCBBjGBBjKAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAARzkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEGKggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEc5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBBioICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABHOQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQYqCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAARzkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBBioICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABHOQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQYqCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAARzkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEGKggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEc5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBioICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAABIXwAAACEAAAEmAAABJwAASGAAAAAjAAABJQAASGEAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIQAAADsAAAA7AAASGkAAAAxAAAA7AAAAN4AAADsAAAEogAARxEAAADsAAAA7AAASHEAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnV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AAOQAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYA5gDmBBkmABIEDtIA5gAKBCJOABIAWgQd4gQZIgASABIA5gQZagQd5gQO0EmUqicDTAAAAOgAAADsAAAAOAABJlgAASZgAAACgoQAAAPGAO6EAAEmZgQZKgFXZAAAAIQAAACUAAEmcAAAADgAAACgAAEmdAAAAIwAAAN0AAEmeAAAAfwAAAPEAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAEmmXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQZHgDuAOYBcgACABAiBBkvTAAAAOgAAADsAAAAOAABJqAAASbIAAACgqQAAAQQAAAEFAAABBgAAAQcAAAEIAAABCQAAAQoAAAELAAABDIA+gD+AQIBBgEKAQ4BEgEWARqkAAEmzAABJtAAASbUAAEm2AABJtwAASbgAAEm5AABJugAASbuBBkyBBk6BBk+BBlGBBlKBBlSBBlWBBleBBliAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAEm/AAAAFwAASZkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEEAAAA7AAAAOwAAAAXAAAA7IAAgQZNgACBBkoICAgIgEqAPggIgAAI0gAAADsAAAAOAABJzQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEmZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBkoICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAASeAAAAAXAABJmQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACBBlCAAIEGSggICAiASoBACAiAAAjSAAAAOwAAAA4AAEnuAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAASZkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEGSggICAiASoBBCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABKAQAAABcAAEmZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCAAAAOwAAADsAAAAFwAAAOyAAIEGU4AAgQZKCAgICIBKgEIICIAACNIAAAA7AAAADgAASg8AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAABJmQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAroAAgQZKCAgICIBKgEMICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAEoiAAAAFwAASZkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEKAAAA7AAAAOwAAAAXAAAA7IAAgQZWgACBBkoICAgIgEqARAgIgAAI0wAAADoAAAA7AAAADgAASjAAAEoxAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABtQAAABcAAEmZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCwAAAOwAAADsAAAAFwAAAOyAAIBXgACBBkoICAgIgEqARQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAASkQAAAAXAABJmQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQwAAADsAAAA7AAAABcAAADsgACBBlmAAIEGSggICAiASoBGCAiAAAhfEBlGeWxlTWVzc2FnZUpvaW5XaXRoU3RhdHVz0wAAADoAAAA7AAAADgAASlMAAEpgAAAAoKwAAEKNAABCiQAASlYAAEpXAABKWAAASlkAAEKMAABCigAASlwAABeNAABKXgAASl+BBcGBBb2BBluBBlyBBl2BBl6BBcCBBb6BBl+BAkmBBmCBBmGsAABKYQAASmIAAEpjAABKZAAASmUAAEpmAABKZwAASmgAAEppAABKagAASmsAAEpsgQZigQZ5gQaQgQaogQa/gQbWgQbtgQcEgQcbgQcygQdJgQdggFVfEBBtZXNzYWdlU29ydEluZGV4WnRocm91Z2hwdXRdcGVybWFuZW50VVVJRF8QFmVzdGltYXRlZFRpbWVSZW1haW5pbmdXaXNXaXBlZF8QEWZyYWN0aW9uQ29tcGxldGVkXnRvdGFsQnl0ZUNvdW503xASAAABIgAAASMAAAEkAABKdgAAACEAAAEmAAABJwAASncAAAAjAAABJQAASngAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH8AAADsAAAA7AAASoAAAAAxAAAA7AAAAN4AAADsAAACBgAAQo0AAADsAAAA7AAASogAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBkcICIEGZAiAOQiAioEFwQgIgQZjCBLoR4g+0wAAADoAAAA7AAAADgAASowAAEqPAAAAoKIAAAIPAAACEIBkgGWiAABKkAAASpGBBmWBBnCAVdkAAAAhAAAAJQAASpQAAAAOAAAAKAAASpUAAAAjAAAA3QAASpYAAEphAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAASp5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBmKAZIA5gFyAAIAECIEGZtMAAAA6AAAAOwAAAA4AAEqgAABKqQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAASqoAAEqrAABKrAAASq0AAEquAABKrwAASrAAAEqxgQZngQZogQZpgQZrgQZsgQZtgQZugQZvgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEqQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBmUICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABKkAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQZlCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAErTAAAAFwAASpAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQZqgACBBmUICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAASuEAAEriAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEqQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBmUICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABKkAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQZlCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAASpAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEGZQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEqQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBmUICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABKkAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQZlCAgICIBKgG8ICIAACNkAAAAhAAAAJQAASzAAAAAOAAAAKAAASzEAAAAjAAAA3QAASzIAAEphAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAASzpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBmKAZYA5gFyAAIAECIEGcdMAAAA6AAAAOwAAAA4AAEs8AABLRAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAS0UAAEtGAABLRwAAS0gAAEtJAABLSgAAS0uBBnKBBnOBBnSBBnWBBnaBBneBBniAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACjPAAAAFwAASpEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgQOtgACBBnAICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABKkQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQZwCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACjPAAAAFwAASpEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgQOtgACBBnAICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAJnkAAAAXAABKkQAAAOwAAADsAAA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mAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABL0gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQaHCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAS9IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEGhwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEvSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBBocICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAABL0gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEGhwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEvSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBocICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABL0gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQaHCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASo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QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEG1oBlgDmAXIAAgAQIgQbl0wAAADoAAAA7AAAADgAAUYIAAFGKAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAABRiwAAUYwAAFGNAABRjgAAUY8AAFGQAABRkYEG5oEG54EG6IEG6YEG6oEG64EG7IBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAATdEAAAAXAABQ1wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBBqGAAIEG5AgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFDXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBBuQICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABQ1wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQbkCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAC8yAAAAFwAAUNcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQQ5gACBBuQICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABQ1wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQbkCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAUNcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEG5AgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFDXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBuQICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAABR/QAAACEAAAEmAAABJwAAUf4AAAAjAAABJQAAUf8AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH8AAADsAAAA7AAAUgcAAAAxAAAA7AAAAN4AAADsAAACBgAAQowAAADsAAAA7AAAUg8AAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBkcICIEG7wiAOQiAioEFwAgIgQbuCBJGNbAB0wAAADoAAAA7AAAADgAAUhMAAFIWAAAAoKIAAAIPAAACEIBkgGWiAABSFwAAUhiBBvCBBvuAVdkAAAAhAAAAJQAAUhsAAAAOAAAAKAAAUhwAAAAjAAAA3QAAUh0AAEpnAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAUiVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBu2AZIA5gFyAAIAECIEG8dMAAAA6AAAAOwAAAA4AAFInAABSMAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAUjEAAFIyAABSMwAAUjQAAFI1AABSNgAAUjcAAFI4gQbygQbzgQb0gQb2gQb3gQb4gQb5gQb6gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFIXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBvAICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABSFwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQbwCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFJaAAAAFwAAUhcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQb1gACBBvAICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAUmgAAFJpAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFIXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBvAICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABSFwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQbwCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAUhcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEG8AgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFIXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBvAICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABSFwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQbwCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAUrcAAAAOAAAAKAAAUrgAAAAjAAAA3QAAUrkAAEpnAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAUsFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBu2AZYA5gFyAAIAECIEG/NMAAAA6AAAAOwAAAA4AAFLDAABSywAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAUswAAFLNAABSzgAAUs8AAFLQAABS0QAAUtKBBv2BBv6BBv+BBwCBBwGBBwKBBwOAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAUhgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEG+wgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFIYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBBvsICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABSGAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQb7CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAAUhgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBBvsICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABSGAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQb7CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAUhgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEG+wgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFIYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBvsICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAABTPgAAACEAAAEmAAABJwAAUz8AAAAjAAABJQAAU0AAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH8AAADsAAAA7AAAU0gAAAAxAAA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AAID7gACBBykICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABUmgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQcpCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAVJoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHKQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAH1wAAABcAAFSaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAID/gACBBykICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABUmgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQcpCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAVJoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHKQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFSaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBykICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAABVwAAAACEAAAEmAAABJwAAVcEAAAAjAAABJQAAVcIAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH8AAADsAAAA7AAAVcoAAAAxAAAA7AAAAN4AAADsAAACBgAAF40AAADsAAAA7AAAVdIAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBkcICIEHNAiAOQiAioECSQgIgQczCBJl0kK70wAAADoAAAA7AAAADgAAVdYAAFXZAAAAoKIAAAIPAAACEIBkgGWiAABV2gAAVduBBzWBB0CAVdkAAAAhAAAAJQAAVd4AAAAOAAAAKAAAVd8AAAAjAAAA3QAAVeAAAEpqAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAVehfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBzKAZIA5gFyAAIAECIEHNtMAAAA6AAAAOwAAAA4AAFXqAABV8wAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAVfQAAFX1AABV9gAAVfcAAFX4AABV+QAAVfoAAFX7gQc3gQc4gQc5gQc7gQc8gQc9gQc+gQc/gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFXaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBzUICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABV2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQc1CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFYdAAAAFwAAVdoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQc6gACBBzUICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAVisAAFYsAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFXaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBzUICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABV2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQc1CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAVdoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHNQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFXaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBzUICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABV2gAAAOwAAADsAAAA7AA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/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABb8QAAABcAAFuqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEHr4AAgQepCAgICIBKgEAICIAACNIAAAA7AAAADgAAW/8AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABbqgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQepCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFwSAAAAFwAAW6oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQeygACBB6kICAgIgEqAQggIgAAI0gAAADsAAAAOAABcIAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFuqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB6kICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAXDMAAAAXAABbqgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBB7WAAIEHqQgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAABcQQAAXEIAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAAW6oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEHqQgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABcVQAAABcAAFuqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEHuIAAgQepCAgICIBKgEYICIAACF8QGFBlcnNpc3RlZE1lc3NhZ2VSZWNlaXZlZNMAAAA6AAAAOwAAAA4AAFxkAABcbwAAAKCqAABcZQAAXGYAAFxnAABcaAAAXGkAAFxqAABcawAAXGwAAFxtAABcboEHuoEHu4EHvIEHvYEHvoEHv4EHwIEHwYEHwoEHw6oAAFxwAABccQAAXHIAAFxzAABcdAAAXHUAAFx2AABcdwAAXHgAAFx5gQfEgQtdgQt0gQuLgQu5gQvQgQh7gQvngQv+gQyhgFVfECVleHBpcmF0aW9uRm9yUmVjZWl2ZWRMaW1pdGVkRXhpc3RlbmNlXxAQc2VuZGVySWRlbnRpZmllcl8QF3NlcmlhbGl6ZWRSZXR1cm5SZWNlaXB0XxAPY29udGFjdElkZW50aXR5XxAWc2VuZGVyVGhyZWFkSWRlbnRpZmllcl8QEm1pc3NlZE1lc3NhZ2VDb3VudF8QJmV4cGlyYXRpb25Gb3JSZWNlaXZlZExpbWl0ZWRWaXNpYmlsaXR5XxAhdW5zb3J0ZWRGeWxlTWVzc2FnZUpvaW5XaXRoU3RhdHVzXxAabWVzc2FnZVJlcGxpZWRUb0lkZW50aWZpZXJfEBttZXNzYWdlSWRlbnRpZmllckZyb21FbmdpbmXfEBIAAAEiAAABIwAAASQAAFyGAAAAIQAAASYAAAEnAABchwAAACMAAAElAABciAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAdQAAAOwAAADsAABckAAAADEAAADsAAAA3gAAAOwAAASiAABcZQAAAOwAAADsAABcmAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEHpggIgQfGCIA5CIECxIEHuggIgQfFCBLib0ir0wAAADoAAAA7AAAADgAAXJwAAFyfAAAAoKIAAAIPAAAErIBkgKWiAABcoAAAXKGBB8eBB9KAVdkAAAAhAAAAJQAAXKQAAAAOAAAAKAAAXKUAAAAjAAAA3QAAXKYAAFxwAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAXK5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB8SAZIA5gFyAAIAECIEHyNMAAAA6AAAAOwAAAA4AAFywAABcuQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAXLoAAFy7AABcvAAAXL0AAFy+AABcvwAAXMAAAFzBgQfJgQfKgQfLgQfNgQfOgQfPgQfQgQfRgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFygAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB8cICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABcoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQfHCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFzjAAAAFwAAXKAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQfMgACBB8cICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAXPEAAFzyAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFygAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBB8cICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAABcoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQfHCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAXKAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHxwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFygAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBB8cICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABcoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQfHCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAXUAAAAAOAAAAKAAAXUEAAAAjAAAA3QAAXUIAAFxwAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAXUpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB8SApYA5gFyAAIAECIEH09MAAAA6AAAAOwAAAA4AAF1MAABdVAAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwAAXVUAAF1WAABdVwAAXVgAAF1ZAABdWgAAXVuBB9SBB9WBB9aBB9eBC1qBC1uBC1yAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAAXKEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEH0ggICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAKPAAAABcAAFyhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIEBLIAAgQfSCAgICIBKgLUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwAAXKEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVfAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEH0ggICAiASoC2CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAcQAAABcAAFyhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYAAAAOwAAADsAAAAFwAAAOyAAIEH2IAAgQfSCAgICIBKgLcICIAACN8QEAAAXZoAAF2bAABdnAAAXZ0AAAAhAABdngAAXZ8AAAAjAABdoAAAXaEAAAAOAAAAJQAAXaIAAF2jAAAAKAAAAN0AAADeAABdpQAAACkAAAApAAAAFAAAXakAAADkAAAAMQAAACkAAADeAAAA5wAAAD8AAADeAABdsAAAXbEAAADsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgDmBB+uABIAEgAKBB9qBA7SABIA5gQiTgAiAOYEIBIEH2QgSzHWiTdMAAAA6AAAAOwAAAA4AAF21AABdtwAAAKChAAAA8YA7oQAAXbiBB9uAVdkAAAAhAAAAJQAAXbsAAAAOAAAAKAAAXbwAAAAjAAAA3QAAXb0AAABxAAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAXcVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB9iAO4A5gFyAAIAECIEH3NMAAAA6AAAAOwAAAA4AAF3HAABd0QAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQAAXdIAAF3TAABd1AAAXdUAAF3WAABd1wAAXdgAAF3ZAABd2oEH3YEH34EH4IEH4oEH44EH5YEH5oEH6IEH6YBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAXd4AAAAXAABduAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBB96AAIEH2wgICAiASoA+CAiAAAjSAAAAOwAAAA4AAF3sAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAXbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEH2wgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABd/wAAABcAAF24AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEH4YAAgQfbCAgICIBKgEAICIAACNIAAAA7AAAADgAAXg0AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABduAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQfbCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAF4gAAAAFwAAXbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQfkgACBB9sICAgIgEqAQggIgAAI0gAAADsAAAAOAABeLgAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAF24AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB9sICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAXkEAAAAXAABduAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBB+eAAIEH2wgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAABeTwAAXlAAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAAXbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEH2wgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABeYwAAABcAAF24AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEH6oAAgQfbCAgICIBKgEYICIAACF8QOVBlcnNpc3RlZEV4cGlyYXRpb25Gb3JSZWNlaXZlZE1lc3NhZ2VXaXRoTGltaXRlZEV4aXN0ZW5jZdMAAAA6AAAAOwAAAA4AAF5yAABedAAAAKChAABec4EH7KEAAF51gQftgFVfECNtZXNzYWdlUmVjZWl2ZWRXaXRoTGltaXRlZEV4aXN0ZW5jZd8QEgAAASIAAAEjAAABJAAAXnkAAAAhAAABJgAAAScAAF56AAAAIwAAASUAAF57AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAABxAAAA7AAAAOwAAF6DAAAAMQAAAOwAAADeAAAA7AAABKIAAF5zAAAA7AAAAOwAAF6LAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQfYCAiBB+8IgDkIgQLEgQfsCAiBB+4IEs6sqHjTAAAAOgAAADsAAAAOAABejwAAXpIAAACgogAAAg8AAASsgGSApaIAAF6TAABelIEH8IEH+4BV2QAAACEAAAAlAABelwAAAA4AAAAoAABemAAAACMAAADdAABemQAAXnUAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABeoV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEH7YBkgDmAXIAAgAQIgQfx0wAAADoAAAA7AAAADgAAXqMAAF6sAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAABerQAAXq4AAF6vAABesAAAXrEAAF6yAABeswAAXrSBB/KBB/OBB/SBB/aBB/eBB/iBB/mBB/qAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAXpMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEH8AgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAF6TAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBB/AICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAXtYAAAAXAABekwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBB/WAAIEH8AgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABe5AAAXuUAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAXpMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEH8AgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAF6TAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBB/AICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABekwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQfwCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAXpMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEH8AgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAF6TAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBB/AICAgIgEqAbwgIgAAI2QAAACEAAAAlAABfMwAAAA4AAAAoAABfNAAAACMAAADdAABfNQAAXnUAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABfPV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEH7YClgDmAXIAAgAQIgQf80wAAADoAAAA7AAAADgAAXz8AAF9HAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAABfSAAAX0kAAF9KAABfSwAAX0wAAF9NAABfToEH/YEH/oEH/4EIAIEIAYEIAoEIA4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAABelAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQf7CAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwAAXpQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEH+wgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAF6UAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBB/sICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAHUAAAAXAABelAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBB6aAAIEH+wgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAF6UAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB/sICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABelAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQf7CAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFxwAAAAFwAAXpQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQfEgACBB/sICAgIgEqAuggIgAAI0gAAADsAAAAOAABfugAAATyhAABfu4EIBYBJ1wAAAA4AAAAlAAApPQAAACEAAAAoAAApPgAAACMAACk/AAAAFwAAAHEAAABxAABfwgAAAJsAAAAxgQiVgACBB9iBB9iBCAaBCAcSLbm7wt8QFAAAAN0AAF/GAABfxwAAX8gAAF/JAABfygAAX8sAAAAhAAAADgAAX8wAAAAlAABfzQAAACgAAF/OAABfzwAAX9AAAF/RAABf0gAAX9MAAAAjAAAFIQAAAN4AAADeAABf1wAAACkAAADkAAAA3gAAABQAAADnAAAAKQAAAGkAAF/fAABf4AAAACkAAAApAAAA3gAAX+QAAF/lAAAA5AAAADFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgDmAOYEICYAEgQO0gDmAAoEIk4A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AAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBCCAICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABgygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQggCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGENAAAAFwAAYMoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQglgACBCCAICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAYRsAAGEcAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAGDKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBCCAICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABgygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQggCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAYMoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEIIAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAGDKAAAA7AAAAOw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AACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAY2IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEIUggICAiASoBBCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABjygAAABcAAGNiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCAAAAOwAAADsAAAAFwAAAOyAAIEIW4AAgQhSCAgICIBKgEIICIAACNIAAAA7AAAADgAAY9gAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABjYgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAUoAAgQhSCAgICIBKgEMICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGPrAAAAFwAAY2IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEKAAAA7AAAAOwAAAAXAAAA7IAAgQhegACBCFIICAgIgEqARAgIgAAI0wAAADoAAAA7AAAADgAAY/kAAGP6AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABtQAAABcAAGNiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCwAAAOwAAADsAAAAFwAAAOyAAIBXgACBCFIICAgIgEqARQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAZA0AAAAXAABjYgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQwAAADsAAAA7AAAABcAAADsgACBCGGAAIEIUggICAiASoB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BKwAAABcAAAAXAAAAFwAAZt4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEImggICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABnJQAAABcAAGbeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEIoIAAgQiaCAgICIBKgEAICIAACNIAAAA7AAAADgAAZzMAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABm3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQiaCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGdGAAAAFwAAZt4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQijgACBCJoICAgIgEqAQggIgAAI0gAAADsAAAAOAABnVAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAGbeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBCJoICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAZ2cAAAAXAABm3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBCKaAAIEImggICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAABndQAAZ3YAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAAZt4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEImggICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABniQAAABcAAGbeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEIqYAAgQiaCAgICIBKgEYICIAACF8QNVBlcnNpc3RlZEV4cGlyYXRpb25Gb3JTZW50TWVzc2FnZVdpdGhMaW1pdGVkRXhpc3RlbmNl0wAAADoAAAA7AAAADgAAZ5gAAGeaAAAAoKEAAGeZgQiroQAAZ5uBCKyAVV8QH21lc3NhZ2VTZW50V2l0aExpbWl0ZWRFeGlzdGVuY2XfEBIAAAEiAAABIwAAASQAAGefAAAAIQAAASYAAAEnAABnoAAAACMAAAElAABnoQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAlgAAAOwAAADsAABnqQAAADEAAADsAAAA3gAAAOwAAASiAABnmQAAAOwAAADsAABnsQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEIlwgIgQiuCIA5CIECxIEIqwgIgQitCBMAAAABI8zQ3NMAAAA6AAAAOwAAAA4AAGe1AABnuAAAAKCiAAACDwAABKyAZIClogAAZ7kAAGe6gQivgQi6gFXZAAAAIQAAACUAAGe9AAAADgAAACgAAGe+AAAAIwAAAN0AAGe/AABnmwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAGfHXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQisgGSAOYBcgACABAiBCLDTAAAAOgAAADsAAAAOAABnyQAAZ9IAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAGfTAABn1AAAZ9UAAGfWAABn1wAAZ9gAAGfZAABn2oEIsYEIsoEIs4EItYEItoEIt4EIuIEIuYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABnuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQivCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAZ7kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEIrwgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABn/AAAABcAAGe5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEItIAAgQivCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAGgKAABoCwAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABnuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQivCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAZ7kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEIrwgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAGe5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBCK8ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABnuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQivCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAZ7kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEIrwgICAiASoBvCAiAAAjZAAAAIQAAACUAAGhZAAAADgAAACgAAGhaAAAAIwAAAN0AAGhbAABnmwAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAGhjXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQisgKWAOYBcgACABAiBCLvTAAAAOgAAADsAAAAOAABoZQAAaG0AAACgpwAABV0AAAVeAAAFXwAABWAAAAVhAAAFYgAABWOAtIC1gLaAt4C4gLmAuqcAAGhuAABobwAAaHAAAGhxAABocgAAaHMAAGh0gQi8gQi9gQi+gQi/gQtVgQtWgQtXgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAGe6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBCLoICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAABnugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACAvoAAgQi6CAgICIBKgLUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwAAZ7oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVfAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEIuggICAiASoC2CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAkAAAABcAAGe6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYAAAAOwAAADsAAAAFwAAAOyAAIEIwIAAgQi6CAgICIBKgLcICIAACN8QEAAAaLMAAGi0AABotQAAaLYAAAAhAABotwAAaLgAAAAjAABouQAAaLoAAAAOAAAAJQAAaLsAAGi8AAAAKAAAAN0AAADeAABovgAAACkAAAApAAAAFAAAaMIAAADkAAAAMQAAACkAAADeAAAA5wAAAF4AAADeAABoyQAAaMoAAADsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgDmBCNOABIAEgAKBCMKBA7SABIA5gQiTgCeAOYELUoEIwQgSbTnD99MAAAA6AAAAOwAAAA4AAGjOAABo0AAAAKChAAAA8YA7oQAAaNGBCMOAVdkAAAAhAAAAJQAAaNQAAAAOAAAAKAAAaNUAAAAjAAAA3QAAaNYAAACQAAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAaN5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBCMCAO4A5gFyAAIAECIEIxNMAAAA6AAAAOwAAAA4AAGjgAABo6gAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQAAaOsAAGjsAABo7QAAaO4AAGjvAABo8AAAaPEAAGjyAABo84EIxYEIx4EIyIEIyoEIy4EIzYEIzoEI0IEI0YBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAaPcAAAAXAABo0QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBCMaAAIEIwwgICAiASoA+CAiAAAjSAAAAOwAAAA4AAGkFAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAaNEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEIwwgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABpGAAAABcAAGjRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEIyYAAgQjDCAgICIBKgEAICIAACNIAAAA7AAAADgAAaSYAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABo0QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQjDCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGk5AAAAFwAAaNEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQjMgACBCMMICAgIgEqAQggIgAAI0gAAADsAAAAOAABpRwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAGjRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBCMMICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAaVoAAAAXAABo0QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBCM+AAIEIwwgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAABpaAAAaWkAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAAaNEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEIwwgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABpfAAAABcAAGjRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEI0oAAgQjDCAgICIBKgEYICIAACF8QFFBlcnNpc3RlZE1lc3NhZ2VTZW500wAAADoAAAA7AAAADgAAaYsAAGmRAAAAoKUAAGmMAABpjQAAaY4AAGmPAABpkIEI1IEI1YEI1oEI14EI2KUAAGmSAABpkwAAaZQAAGmVAABploEI2YEJN4EJlYEJrIEJw4BVXxAiZXhwaXJhdGlvbkZvclNlbnRMaW1pdGVkVmlzaWJpbGl0eV8QI3Vuc29ydGVkRnlsZU1lc3NhZ2VKb2luV2l0aFN0YXR1c2VzXxAhZXhwaXJhdGlvbkZvclNlbnRMaW1pdGVkRXhpc3RlbmNlXxAUcmF3RXhpc3RlbmNlRHVyYXRpb25fEBd1bnNvcnRlZFJlY2lwaWVudHNJbmZvc98QEgAAASIAAAEjAAABJAAAaZ4AAAAhAAABJgAAAScAAGmfAAAAIwAAASUAAGmgAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACQAAAA7AAAAOwAAGmoAAAAMQAAAOwAAADeAAAA7AAABKIAAGmMAAAA7AAAAOwAAGmwAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQjACAiBCNsIgDkIgQLEgQjUCAiBCNoIEo6VCHnTAAAAOgAAADsAAAAOAABptAAAabcAAACgogAAAg8AAASsgGSApaIAAGm4AABpuYEI3IEI54BV2QAAACEAAAAlAABpvAAAAA4AAAAoAABpvQAAACMAAADdAABpvgAAaZIAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABpxl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEI2YBkgDmAXIAAgAQIgQjd0wAAADoAAAA7AAAADgAAacgAAGnRAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAABp0gAAadMAAGnUAABp1QAAadYAAGnXAABp2AAAadmBCN6BCN+BCOCBCOKBCOOBCOSBCOWBCOaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAabgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEI3AgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAGm4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBCNwICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAafsAAAAXAABpuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBCOGAAIEI3AgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABqCQAAagoAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAabgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEI3AgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAGm4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBCNwICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABpuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQjcCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAabgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEI3AgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAGm4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBCNwICAgIgEqAbwgIgAAI2QAAACEAAAAlAABqWAAAAA4AAAAoAABqWQAAACMAAADdAABqWgAAaZIAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABqYl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEI2YClgDmAXIAAgAQIgQjo0wAAADoAAAA7AAAADgAAamQAAGpsAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAABqbQAAam4AAGpvAABqcAAAanEAAGpyAABqc4EI6YEI6oEI64EI7IEJNIEJNYEJNoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAABpuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQjnCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwAAabkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBCOcICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAABpuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQjnCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACSAAAAFwAAabkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQjtgACBCOcICAgIgEqAtwgIgAAI3xAQAABqsgAAarMAAGq0AABqtQAAACEAAGq2AABqtwAAACMAAGq4AABquQAAAA4AAAAlAABqugAAarsAAAAoAAAA3QAAAN4AAGq9AAAAKQAAACkAAAAUAABqwQAAAOQAAAAxAAAAKQAAAN4AAADnAAAAYAAAAN4AAGrIAABqyQAAAOxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAOYEJAIAEgASAAoEI74EDtIAEgDmBCJOAKYA5gQkxgQjuCBLF7N300wAAADoAAAA7AAAADgAAas0AAGrPAAAAoKEAAADxgDuhAABq0IEI8IBV2QAAACEAAAAlAABq0wAAAA4AAAAoAABq1AAAACMAAADdAABq1QAAAJIAAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABq3V8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEI7YA7gDmAXIAAgAQIgQjx0wAAADoAAAA7AAAADgAAat8AAGrpAAAAoKkAAAEEAAABBQAAAQYAAAEHAAABCAAAAQkAAAEKAAABCwAAAQyAPoA/gECAQYBCgEOARIBFgEapAABq6gAAausAAGrsAABq7QAAau4AAGrvAABq8AAAavEAAGrygQjygQj0gQj1gQj3gQj4gQj6gQj7gQj9gQj+gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABq9gAAABcAAGrQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBAAAAOwAAADsAAAAFwAAAOyAAIEI84AAgQjwCAgICIBKgD4ICIAACNIAAAA7AAAADgAAawQAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABq0AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQUAAADsAAAA7AAAABcAAADsgACAAIAAgQjwCAgICIBKgD8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGsXAAAAFwAAatAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgQj2gACBCPAICAgIgEqAQAgIgAAI0gAAADsAAAAOAABrJQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAGrQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBCPAICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAazgAAAAXAABq0AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBCPmAAIEI8AgICAiASoBCCAiAAAjSAAAAOwAAAA4AAGtGAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAatAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEI8AgICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABrWQAAABcAAGrQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIEI/IAAgQjwCAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AAGtnAABraAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAABq0AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgQjwCAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGt7AAAAFwAAatAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgQj/gACBCPAICAgIgEqARggIgAAIXxA2UGVyc2lzdGVkRXhwaXJhdGlvbkZvclNlbnRNZXNzYWdlV2l0aExpbWl0ZWRWaXNpYmlsaXR50wAAADoAAAA7AAAADgAAa4oAAGuNAAAAoKIAAGuLAABrjIEJAYEJAqIAAGuOAABrj4EJA4EJGoBVXxAgbWVzc2FnZVNlbnRXaXRoTGltaXRlZFZpc2liaWxpdHlfEBZyZXRhaW5XaXBlZE1lc3NhZ2VTZW503xASAAABIgAAASMAAAEkAABrlAAAACEAAAEmAAABJwAAa5UAAAAjAAABJQAAa5YAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJIAAADsAAAA7AAAa54AAAAxAAAA7AAAAN4AAADsAAAEogAAa4sAAADsAAAA7AAAa6YAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBCO0ICIEJBQiAOQiBAsSBCQEICIEJBAgS3oaEidMAAAA6AAAAOwAAAA4AAGuqAABrrQAAAKCiAAACDwAABKyAZIClogAAa64AAGuvgQkGgQkRgFXZAAAAIQAAACUAAGuyAAAADgAAACgAAGuzAAAAIwAAAN0AAGu0AABrjgAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAGu8XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQkDgGSAOYBcgACABAiBCQfTAAAAOgAAADsAAAAOAABrvgAAa8cAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAGvIAABryQAAa8oAAGvLAABrzAAAa80AAGvOAABrz4EJCIEJCYEJCoEJDIEJDYEJDoEJD4EJEIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABrrgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQkGCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAa64AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJBggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABr8QAAABcAAGuuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEJC4AAgQkGCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAGv/AABsAAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABrrgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQkGCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAa64AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJBggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAGuuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBCQYICAgIgEqAbQg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AAOwAAAAXAAAA7IAAgACAAIEJOggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABurAAAABcAAG5pAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEJP4AAgQk6CAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAG66AABuuwAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABuaQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQk6CAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAbmkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJOggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAG5pAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBCToICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABuaQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQk6CAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAbmkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJOggICAiASoBvCAiAAAjZAAAAIQAAACUAAG8JAAAADgAAACgAAG8KAAAAIwAAAN0AAG8LAABpkwAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAG8TXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQk3gKWAOYBcgACABAiBCUbTAAAAOgAAADsAAAAOAABvFQAAbx0AAACgpwAABV0AAAVeAAAFXwAABWAAAAVhAAAFYgAABWOAtIC1gLaAt4C4gLmAuqcAAG8eAABvHwAAbyAAAG8hAABvIgAAbyMAAG8kgQlHgQlIgQlJgQlKgQmSgQmTgQmUgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAG5qAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBCUUICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAACjwAAAAXAABuagAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACBASyAAIEJRQgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAG5qAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC8gACBCUUICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAH0AAAAXAABuagAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBCUuAAIEJRQgICAiASoC3CAiAAAjfEBAAAG9jAABvZAAAb2UAAG9mAAAAIQAAb2cAAG9oAAAAIwAAb2kAAG9qAAAADgAAACUAAG9rAABvbAAAACgAAADdAAAA3gAAb24AAAApAAAAKQAAABQAAG9yAAAA5AAAADEAAAApAAAA3gAAAOcAAABLAAAA3gAAb3kAAG96AAAA7F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYA5gQlegASABIACgQlNgQO0gASAOYEIk4AUgDmBCY+BCUwIEu10foLTAAAAOgAAADsAAAAOAABvfgAAb4AAAACgoQAAAPGAO6EAAG+BgQlOgFXZAAAAIQAAACUAAG+EAAAADgAAACgAAG+FAAAAIwAAAN0AAG+GAAAAfQAAAPEAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAG+OXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQlLgDuAOYBcgACABAiBCU/TAAAAOgAAADsAAAAOAABvkAAAb5oAAACgqQAAAQQAAAEFAAABBgAAAQcAAAEIAAABCQAAAQoAAAELAAABDIA+gD+AQIBBgEKAQ4BEgEWARqkAAG+bAABvnAAAb50AAG+eAABvnwAAb6AAAG+hAABvogAAb6OBCVCBCVKBCVOBCVWBCVaBCViBCVmBCVuBCVyAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAG+nAAAAFwAAb4EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEEAAAA7AAAAOwAAAAXAAAA7IAAgQlRgACBCU4ICAgIgEqAPggIgAAI0gAAADsAAAAOAABvtQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAG+BAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBQAAAOwAAADsAAAAFwAAAOyAAIAAgACBCU4ICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAb8gAAAAXAABvgQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACBCVSAAIEJTggICAiASoBACAiAAAjSAAAAOwAAAA4AAG/WAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAb4EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJTggICAiASoBBCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABv6QAAABcAAG+BAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCAAAAOwAAADsAAAAFwAAAOyAAIEJV4AAgQlOCAgICIBKgEIICIAACNIAAAA7AAAADgAAb/cAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABvgQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAUoAAgQlOCAgICIBKgEMICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAHAKAAAAFwAAb4EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEKAAAA7AAAAOwAAAAXAAAA7IAAgQlagACBCU4ICAgIgEqARAgIgAAI0wAAADoAAAA7AAAADgAAcBgAAHAZAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABtQAAABcAAG+BAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCwAAAOwAAADsAAAAFwAAAOyAAIBXgACBCU4ICAgIgEqARQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAcCwAAAAXAABvgQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQwAAADsAAAA7AAAABcAAADsgACBCV2AAIEJTggICAiASoBGCAiAAAhfEB1TZW50RnlsZU1lc3NhZ2VKb2luV2l0aFN0YXR1c9MAAAA6AAAAOwAAAA4AAHA7AABwPgAAAKCiAABwPAAAcD2BCV+BCWCiAABwPwAAcECBCWGBCXiAVV8QEnJhd1JlY2VwdGlvblN0YXR1c1tzZW50TWVzc2FnZd8QEgAAASIAAAEjAAABJAAAcEUAAAAhAAABJgAAAScAAHBGAAAAIwAAASUAAHBHAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB9AAAA7AAAAOwAAHBPAAAAMQAAAOwAAADeAAAA7AAAAgYAAHA8AAAA7AAAAOwAAHBXAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQlLCAiBCWMIgDkIgIqBCV8ICIEJYggS6/lWZtMAAAA6AAAAOwAAAA4AAHBbAABwXgAAAKCiAAACDwAAAhCAZIBlogAAcF8AAHBggQlkgQlvgFXZAAAAIQAAACUAAHBjAAAADgAAACgAAHBkAAAAIwAAAN0AAHBlAABwPwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAHBtXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQlhgGSAOYBcgACABAiBCWXTAAAAOgAAADsAAAAOAABwbwAAcHgAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAHB5AABwegAAcHsAAHB8AABwfQAAcH4AAHB/AABwgIEJZoEJZ4EJaIEJaoEJa4EJbIEJbYEJboBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABwXwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQlkCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAcF8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJZAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABwogAAABcAAHBfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEJaYAAgQlkCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAHCwAABwsQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABwXwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQlkCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAcF8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJZAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAHBfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBCWQICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABwXwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQlkCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAcF8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJZAgICAiASoBvCAiAAAjZAAAAIQAAACUAAHD/AAAADgAAACgAAHEAAAAAIwAAAN0AAHEBAABwPwAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAHEJXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQlhgGWAOYBcgACABAiBCXDTAAAAOgAAADsAAAAOAABxCwAAcRMAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAHEUAABxFQAAcRYAAHEXAABxGAAAcRkAAHEagQlxgQlygQlzgQl0gQl1gQl2gQl3gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAozwAAABcAAHBgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIEDrYAAgQlvCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAcGAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJbwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAHBgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBCW8ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAJnkAAAAXAABwYAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBA4GAAIEJbwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAHBgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBCW8ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABwYAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQlvCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAcGAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJbwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAHGGAAAAIQAAASYAAAEnAABxhwAAACMAAAElAABxiAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfQAAAOwAAADsAABxkAAAADEAAADsAAAA3gAAAOwAAASiAABwPQAAAOwAAADsAABxmAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEJSwgIgQl6CIA5CIECxIEJYAgIgQl5CBJmR8bS0wAAADoAAAA7AAAADgAAcZwAAHGfAAAAoKIAAAIPAAAErIBkgKWiAABxoAAAcaGBCXuBCYaAVdkAAAAhAAAAJQAAcaQAAAAOAAAAKAAAcaUAAAAjAAAA3QAAcaYAAHBAAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAca5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBCXiAZIA5gFyAAIAECIEJfNMAAAA6AAAAOwAAAA4AAHGwAABxuQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAcboAAHG7AABxvAAAcb0AAHG+AABxvwAAccAAAHHBgQl9gQl+gQl/gQmBgQmCgQmDgQmEgQmFgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAHGgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBCXsICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABxoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQl7CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAHHjAAAAFwAAcaAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQmAgACBCXsICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAcfEAAHHyAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAHGgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBCXsICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABxoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQl7CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAcaAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJewgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAHGgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBCXsICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABxoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQl7CAgICIBKgG8ICIAACNkAAAAhAAAAJQAAckAAAAAOAAAAKAAAckEAAAAjAAAA3QAAckIAAHBAAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAckpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBCXiApYA5gFyAAIAECIEJh9MAAAA6AAAAOwAAAA4AAHJMAAByVAAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwAAclUAAHJWAAByVwAAclgAAHJZAAByWgAAcluBCYiBCYmBCYqBCYuBCYyBCY2BCY6AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAAcaEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEJhggICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAHGhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBCYYICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAABxoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQmGCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACQAAAAFwAAcaEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQjAgACBCYYICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABxoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQmGCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAcaEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJhggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABpkwAAABcAAHGhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEJN4AAgQmGCAgICIBKgLoICIAACNIAAAA7AAAADgAAcscAAAE8oQAAWYmBCZCASdcAAAAOAAAAJQAAKT0AAAAhAAAAKAAAKT4AAAAjAAApPwAAABcAAAB9AAAAfQAAcs8AAAB/AAAAMYEIlYAAgQlLgQlLgQmRgQZHEwAAAAEiEbhw3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAABuagAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAroAAgQlFCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAbmoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJRQgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABwQAAAABcAAG5qAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEJeIAAgQlFCAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAAAcwAAAAAhAAABJgAAAScAAHMBAAAAIwAAASUAAHMCAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACQAAAA7AAAAOwAAHMKAAAAMQAAAOwAAADeAAAA7AAABKIAAGmOAAAA7AAAAOwAAHMSAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQjACAiBCZcIgDkIgQLEgQjWCAiBCZYIEqdePMbTAAAAOgAAADsAAAAOAABzFgAAcxkAAACgogAAAg8AAASsgGSApaIAAHMaAABzG4EJmIEJo4BV2QAAACEAAAAlAABzHgAAAA4AAAAoAABzHwAAACMAAADdAABzIAAAaZQAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABzKF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEJlYBkgDmAXIAAgAQIgQmZ0wAAADoAAAA7AAAADgAAcyoAAHMzAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAABzNAAAczUAAHM2AABzNwAAczgAAHM5AABzOgAAczuBCZqBCZuBCZyBCZ6BCZ+BCaCBCaGBCaKAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAcxoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJmAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAHMaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBCZgICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAc10AAAAXAABzGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBCZ2AAIEJmAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABzawAAc2wAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAcxoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJmAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAHMaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBCZgICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABzGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQmYCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAcxoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJmAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAHMaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBCZgICAgIgEqAbwgIgAAI2QAAACEAAAAlAABzugAAAA4AAAAoAABzuwAAACMAAADdAABzvAAAaZQAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABzxF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEJlYClgDmAXIAAgAQIgQmk0wAAADoAAAA7AAAADgAAc8YAAHPOAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAABzzwAAc9AAAHPRAABz0gAAc9MAAHPUAABz1YEJpYEJpoEJp4EJqIEJqYEJqoEJq4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAABzGwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQmjCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwAAcxsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBCaMICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAABzGwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQmjCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACWAAAAFwAAcxsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQiXgACBCaMICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABzGwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQmjCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAcxsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJowgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABnmwAAABcAAHMbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOy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AAHkPgQoSgQoTgQoUgQoWgQoXgQoYgQoZgQoagFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAHjuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBChAICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAB47gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQoQCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAHkxAAAAFwAAeO4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQoVgACBChAICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAeT8AAHlAAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAHjuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBChAICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAB47gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQoQCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAeO4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOw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CKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAgXQAAIF1AACBdgAAgXcAAIF4AACBeQAAgXoAAIF7gQqygQqzgQq0gQq2gQq3gQq4gQq5gQq6gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAIFaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBCrAICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACBWgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQqwCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAIGdAAAAFwAAgVoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQq1gACBCrAICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAgasAAIGsAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAIFaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBCrAICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACBWgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQqwCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAgVoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEKsAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIFaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBCrAICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACBWgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQqwCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAgfoAAAAOAAAAKAAAgfsAAAAjAAAA3QAAgfwAAHd/AAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAggRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBCq2AZYA5gFyAAIAECIEKvNMAAAA6AAAAOwAAAA4AAIIGAACCDgAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAgg8AAIIQAACCEQAAghIAAIITAACCFAAAghWBCr2BCr6BCr+BCsCBCsGBCsKBCsOAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAgVsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEKuwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAIFbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBCrsICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACBWwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQq7CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwAAgVsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEKuwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIFbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBCrsICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACBWwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQq7CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAgVsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEKuwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAIKBAAAAIQAAASYAAAEnAACCggAAACMAAAElAACCgwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAA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BNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQrpCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAg90AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEK6QgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIPdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBCukICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAYbYAAAAXAACD3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBCDGAAIEK6QgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIPdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBCukICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACD3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQrpCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAg90AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIE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AAAAXAAAA7IAAgFKAAIELIwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIefAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBCyMICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAh+IAAAAXAACHnwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBCyiAAIELIwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAACH8AAAh/EAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAh58AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELIwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAIefAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBCyMICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACHnwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQsjCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAh58AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOw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AAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAImVAACJlgAAiZcAAImYAACJmQAAiZoAAImbgQtHgQtIgQtJgQtKgQtLgQtMgQtNgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIjhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBC0UICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACI4QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQtFCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAiOEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIELRQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAIjhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBC0UICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACI4QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQtFCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAiOEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIELRQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIjhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBC0UICAgIgEqAgQgIgAAI0gAAADsAAAAOAACKBwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAHWdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBCdEICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAB1nQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQnRCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAHd7AAAAFwAAdZ0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQn2gACBCdEICAgIgEqAuggIgAAI0gAAADsAAAAOAACKNwAAATyhAACKOIELU4BJ1wAAAA4AAAAlAAApPQAAACEAAAAoAAApPgAAACMAACk/AAAAFwAAAJAAAACQAACKPwAAAJgAAAAxgQiVgACBCMCBCMCBC1SBA7gStry6ht8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAZ7oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVhAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEIuggICAiASoC4CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAGe6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYgAAAOwAAADsAAAAFwAAAOyAAIBSgACBCLoICAgIgEqAuQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAaZQAAAAXAABnugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWMAAADsAAAA7AAAABcAAADsgACBCZWAAIEIuggICAiASoC6CAiAAAjSAAAAOwAAAA4AAIpwAAABPKEAAGM5gQiWgEkTAAAAAQs1RO3fEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFyhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB9IICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABcoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQfSCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAF51AAAAFwAAXKEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQftgACBB9IICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAACKogAAACEAAAEmAAABJwAAiqMAAAAjAAABJQAAiqQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHUAAADsAAAA7AAAiqwAAAAxAAAA7AAAAN4AAAD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AAAAxAAAA7AAAi2ZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC12AZYA5gFyAAIAECIELbNMAAAA6AAAAOwAAAA4AAItoAACLcAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAi3EAAItyAACLcwAAi3QAAIt1AACLdgAAi3eBC22BC26BC2+BC3CBC3GBC3KBC3OAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAir0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIELawgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAIq9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBC2sICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACKvQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQtrCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwAAir0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIELawgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAA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7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAIv+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBC4IICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACL/gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQuCCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwAAi/4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIELgggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIv+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBC4IICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACL/gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQuCCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAi/4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIELgggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAI0kAAAAIQAAASYAAAEnAACNJQAAACMAAAElAACNJgAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAdQAAAOwAAADsAACNLgAAADEAAADsAAAA3gAAAOwAAASiAABcaAAAAOwAAADsAACNNgAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEHpggIgQuNCIA5CIECxIEHvQgIgQuMCBKKNtEz0wAAADoAAAA7AAAADgAAjToAAI09AAAAoKIAAAIPAAAErIBkgKWiAACNPgAAjT+BC46BC5mAVdkAAAAhAAAAJQAAjUIAAAAOAAAAKAAAjUMAAAAjAAAA3QAAjUQAAFxzAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAjUxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC4uAZIA5gFyAAIAECIELj9MAAAA6AAAAOwAAAA4AAI1OAACNVwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAjVgAAI1ZAACNWgAAjVsAAI1cAACNXQAAjV4AAI1fgQuQgQuRgQuSgQuUgQuVgQuWgQuXgQuYgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAI0+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBC44ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACNPgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQuOCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAI2BAAAAFwAAjT4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQuTgACBC44ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAjY8AAI2QAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAI0+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBC44ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAACNPgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQuOCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAjT4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELjggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAI0+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBC44ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACNPgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQuOCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAjd4AAAAOAAAAKAAAjd8AAAAjAAAA3QAAjeAAAFxzAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAjehfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC4uApYA5gFyAAIAECIELmtMAAAA6AAAAOwAAAA4AAI3qAACN8gAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwAAjfMAAI30AACN9QAAjfYAAI33AACN+AAAjfmBC5uBC5yBC52BC56BC5+BC6CBC6GAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAAjT8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIELmQgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAI0/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBC5kICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAACNPwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQuZCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACTAAAAFwAAjT8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQIigACBC5kICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACNPwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQuZCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAjT8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELmQgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAXnwAAABcAAI0/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIELooAAgQuZCAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAAAjmUAAAAhAAABJgAAAScAAI5mAAAAIwAAASUAAI5nAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACTAAAA7AAAAOwAAI5vAAAAMQAAAOwAAADeAAAA7AAABKIAABeCAAAA7AAAAOwAAI53AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQIiCAiBC6QIgDkIgQLEgQI+CAiBC6MIEwAAAAEHfz580wAAADoAAAA7AAAADgAAjnsAAI5+AAAAoKIAAAIPAAAErIBkgKWiAACOfwAAjoCBC6WBC7CAVdkAAAAhAAAAJQAAjoMAAAAOAAAAKAAAjoQAAAAjAAAA3QAAjoUAABefAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAjo1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC6KAZIA5gFyAAIAECIELptMAAAA6AAAAOwAAAA4AAI6PAACOmAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAjpkAAI6aAACOmwAAjpwAAI6dAACOngAAjp8AAI6ggQungQuogQupgQurgQusgQutgQuugQuvgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAI5/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBC6UICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACOfwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQulCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAI7CAAAAFwAAjn8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQuqgACBC6UICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAjtAAAI7RAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAI5/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBC6UICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAACOfwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQulCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAjn8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELpQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAI5/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBC6UICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACOfwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQulCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAjx8AAAAOAAAAKAAAjyAAAAAjAAAA3QAAjyEAABefAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAjylfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC6KApYA5gFyAAIAECIELsdMAAAA6AAAAOwAAAA4AAI8rAACPMwAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwAAjzQAAI81AACPNgAAjzcAAI84AACPOQAAjzqBC7KBC7OBC7SBC7WBC7aBC7eBC7iAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAAjoAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIELsAgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAI6AAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBC7AICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAACOgAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgQuwCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAB1AAAAFwAAjoAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQemgACBC7AICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAACOgAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAroAAgQuwCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAjoAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELsAgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAA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AfIB9gH6Af4CAgIGnAACRtgAAkbcAAJG4AACRuQAAkboAAJG7AACRvIEL4IEL4YEL4oEL44EL5IEL5YEL5oBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAKM8AAAAXAACRAgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBA62AAIEL3ggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJECAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBC94ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACRAgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQveCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACZ5AAAAFwAAkQIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQOBgACBC94ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACRAgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQveCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAkQIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAA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AljYAAJY3AACWOAAAljkAAJY6AACWOwAAljyBDDqBDDuBDDyBDD2BDD6BDD+BDECAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAlYIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMOAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJWCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBDDgICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACVggAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQw4CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwAAlYIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEMOAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJWCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBDDgICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACVggAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgAC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zc3RvcmFnZYEMWIBlgDmAXIAAgAQIgQxn0wAAADoAAAA7AAAADgAAmK8AAJi3AAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAACYuAAAmLkAAJi6AACYuwAAmLwAAJi9AACYvoEMaIEMaYEMaoEMa4EMbIEMbYEMboBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAKM8AAAAXAACYBAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBA62AAIEMZggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJgEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBDGYICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACYBAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQxmCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACZ5AAAAFwAAmAQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQOBgACBDGYICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACYBAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQxmCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgA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XAACahQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBDI6AAIEMiQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAACa1gAAmtcAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAmoUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMiQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAJqFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBDIkICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACahQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQyJCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAmoUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMiQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJqFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBDIkICAgIgEqAbwgIgAAI2QAAACEAAAAlAACbJQAAAA4AAAAoAACbJgAAACMAAADdAACbJwAAlWAAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAACbL18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMhoClgDmAXIAAgAQIgQyV0wAAADoAAAA7AAAADgAAmzEAAJs5AAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAACbOgAAmzsAAJs8AACbPQAAmz4AAJs/AACbQIEMloEMl4EMmIEMmYEMmoEMm4EMnIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAACahgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQyUCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwAAmoYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEMlAgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAJqGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBDJQICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAHUAAAAXAACahgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBB6aAAIEMlAgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJqGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBDJQICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACahgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQyUCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFx4AAAAFwAAmoYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQv+gACBDJQICAgIgEqAuggIgAAI0gAAADsAAAAOAACbrAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJOEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBDAwICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACThAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQwMCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAJVgAAAAFwAAk4QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQyGgACBDAwICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAACb3AAAACEAAAEmAAABJwAAm90AAAAjAAABJQAAm94AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwA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iAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKFmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBDRYICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAChZgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgQ0WCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAoWYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENFggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKFmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBDRYICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAChZgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQ0WCAgICIBKgIEICIAACNIAAAA7AAAADgAAoowAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABFOQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQX+CAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAARTkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEF/ggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABHFwAAABcAAEU5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEM8YAAgQX+CAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAAAorwAAAAhAAABJgAAAScAAKK9AAAAIwAAASUAAKK+AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACLAAAA7AAAAOwAAKLGAAAAMQAAAOwAAADeAAAA7AAAAgYAAEKLAAAA7AAAAOwAAKLOAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQWpCAiBDSUIgDkIgIqBBb8ICIENJAgSdLkkQdMAAAA6AAAAOwAAAA4AAKLSAACi1QAAAKCiAAACDwAAAhCAZIBlogAAotYAAKLXgQ0mgQ0xgFXZAAAAIQAAACUAAKLaAAAADgAAACgAAKLbAAAAIwAAAN0AAKLcAABCkgAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAKLkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQ0jgGSAOYBcgACABAiBDSfTAAAAOgAAADsAAAAOAACi5gAAou8AAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAKLwAACi8QAAovIAAKLzAACi9AAAovUAAKL2AACi94ENKIENKYENKoENLIENLYENLoENL4ENMIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACi1gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQ0mCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAotYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENJggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACjGQAAABcAAKLWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIENK4AAgQ0mCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAKMnAACjKAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACi1gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQ0mCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAotYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENJggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKLWAAAA7AAAAOwAAADsAAAAMQAAAOw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XAACkWgAAABcAAKQXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIENQoAAgQ09CAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAKRoAACkaQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACkFwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQ09CAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAApBcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENPQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKQXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBDT0ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACkFwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQ09CAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAApBcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENPQgICAiASoBvCAiAAAjZAAAAIQAAACUAAKS3AAAADgAAACgAAKS4AAAAIwAAAN0AAKS5AABCkwAAAhAAAADeAAAA/QAAABcAAAApAAAAMQA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cgACABAiBDVXTAAAAOgAAADsAAAAOAAClaAAApXEAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAKVyAAClcwAApXQAAKV1AACldgAApXcAAKV4AACleYENVoENV4ENWIENWoENW4ENXIENXYENXoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAClWAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQ1UCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAApVgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENVAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAClmwAAABcAAKVYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIENWYAAgQ1UCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAKWpAAClqgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAClWAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQ1UCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAApVgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENVAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKVYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBDVQICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAClWAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQ1UCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAApVgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENVAgICAiASoBvCAiAAAjZAAAAIQAAACUAAKX4AAAADgAAACgAAKX5AAAAIwAAAN0AAKX6AABClAAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAKYCXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQ1RgGWAOYBcgACABAiBDWDTAAAAOgAAADsAAAAOAACmBAAApgwAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAKYNAACmDgAApg8AAKYQAACmEQAAphIAAKYTgQ1hgQ1igQ1jgQ1kgQ1lgQ1mgQ1ngFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKVZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBDV8ICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAClWQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQ1fCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACjPAAAAFwAApVkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgQOtgACBDV8ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAJnkAAAAXAAClWQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBA4GAAIENXwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKVZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBDV8ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAClWQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQ1fCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAApVkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENXwgICAiASoCBCAiAAAjSAAAAOwAAAA4AAKZ/AAABPKCASd8QDwAAASIAAAE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AADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACA+4AAgQ16CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAApsoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENeggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKbKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBDXoICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAACmygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgQ16CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAApsoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENeggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKbKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBDXoICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACmygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQ16CAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAp/AAAAAhAAABJgAAAScAAKfxAAAAIwAAASUAAKfyAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB7AAAA7AAAAOwAAKf6AAAAMQAAAOwAAADeAAAA7AAABKIAADzAAAAA7AAAAOwAAKgCAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQU2CAiBDYUIgDkIgQLEgQVNCAiBDYQIEwAAAAEjmLSi0wAAADoAAAA7AAAADgAAqAYAAKgJAAAAoKIAAAIPAAAErIBkgKWiAACoCgAAqAuBDYaBDZGAVdkAAAAhAAAAJQAAqA4AAAAOAAAAKAAAqA8AAAAjAAAA3QAAqBAAADzLAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAqBhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDYOAZIA5gFyAAIAECIENh9MAAAA6AAAAOwAAAA4AAKgaAACoIwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAqCQAAKglAACoJgAAqCcAAKgoAACoKQAAqCoAAKgrgQ2IgQ2JgQ2KgQ2MgQ2NgQ2OgQ2PgQ2QgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKgKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBDYYICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACoCgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQ2GCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAKhNAAAAFwAAqAoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQ2LgACBDYYICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAqFsAAKhcAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKgKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBDYYICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAACoCgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQ2GCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAqAoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENhggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKgKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBDYYICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgA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NroENr4ENsIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAACpTAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQ2oCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwAAqUwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIENqAgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAKlMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBDagICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAHsAAAAXAACpTAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBBTaAAIENqAgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKlMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBDagICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACpTAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQ2oCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADzLAAAAFwAAqUwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQ2DgACBDagICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAACqcgAAACEAAAEmAAABJwAAqnMAAAAjAAABJQAAqnQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHsAAADsAAAA7AAAqnwAAAAxAAAA7AAAAN4AAADsAAACBgAAPMEAAADsAAAA7AAAqoQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBTYICIENswiAOQiAioEFTggIgQ2yCBMAAAABF+pJMdMAAAA6AAAAOwAAAA4AAKqIAACqiwAAAKCiAAACDwAAAhCAZIBlogAAqowAAKqNgQ20gQ2/gFXZAAAAIQAAACUAAKqQAAAADgAAACgAAKqRAAAAIwAAAN0AAKqSAAA8zAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAKqaXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQ2xgGSAOYBcgACABAiBDbXTAAAAOgAAADsAAAAOAACqnAAAqqUAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAKqmAACqpwAAqqgAAKqpAACqqgAAqqsAAKqsAACqrYENtoENt4ENuIENuoENu4ENvIENvYENvoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACqjAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQ20CAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAqowAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENtAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACqzwAAABcAAKqMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIENuYAAgQ20CAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAKrdAACq3gAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACqjAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQ20CAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAqowAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIENtAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKqMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBDbQICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACqjAAAAOwAAADsAAAA7AAAADEAAAD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AABQAAADnAAAAKQAAAEIAAK9iAACvYwAAACkAAAApAAAA3gAAr2cAAK9oAAAA5AAAADFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgDmAOYEODIAEgQO0gDmAAoEIk4AEgAuBHBSBDguABIAEgDmBDh2BHBWBA7QSq6wh1dMAAAA6AAAAOwAAAA4AAK9sAACvbgAAAKChAAAA8YA7oQAAr2+BDg2AVdkAAAAhAAAAJQAAr3IAAAAOAAAAKAAAr3MAAAAjAAAA3QAAr3QAAAB0AAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAr3xfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDgqAO4A5gFyAAIAECIEODtMAAAA6AAAAOwAAAA4AAK9+AACviAAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQAAr4kAAK+KAACviwAAr4wAAK+NAACvjgAAr48AAK+QAACvkYEOD4EOEYEOEoEOFIEOFYEOF4EOGIEOGoEOG4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAr5UAAAAXAACvbwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBDhCAAIEODQgICAiASoA+CAiAAAjSAAAAOwAAAA4AAK+jAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAr28AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEODQgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACvtgAAABcAAK9vAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEOE4AAgQ4NCAgICIBKgEAICIAACNIAAAA7AAAADgAAr8QAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACvbwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQ4NCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAK/XAAAAFwAAr28AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQ4WgACBDg0ICAgIgEqAQggIgAAI0gAAADsAAAAOAACv5QAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAK9vAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAICugACBDg0ICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAr/gAAAAXAACvbwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBDhmAAIEODQgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAACwBgAAsAcAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAAr28AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEODQgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACwGgAAABcAAK9vAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEOHIAAgQ4NCAgICIBKgEYICIAACF8QE1BlcnNpc3RlZERpc2N1c3Npb27TAAAAOgAAADsAAAAOAACwKQAAsEEAAACgrxAXAACwKgAAsCsAALAsAAAXggAAsC4AALAvAACwMAAAsDEAALAyAACwMwAAsDQAALA1AACwNgAAsDcAALA4AACwOQAAsDoAACo3AACwPAAAF40AALA+AACwPwAAsECBDh6BDh+BDiCBAj6BDiGBDiKBDiOBDiSBDiWBDiaBDieBDiiBDimBDiqBDiuBDiyBDi2BA9qBDi6BAkmBDi+BDjCBDjGvEBcAALBCAACwQwAAsEQAALBFAACwRgAAsEcAALBIAACwSQAAsEoAALBLAACwTAAAsE0AALBOAACwTwAAsFAAALBRAACwUgAAsFMAALBUAACwVQAAsFYAALBXAACwWIEOMoEOSYEOYIEOd4EOpYEOvIEPd4EPpYERCIERH4ERNoERTYERZIESBoESHYETB4ETHoEa/oEbFYEbLIEbRIEb5oEb/YBVXxAUcGlubmVkU2VjdGlvbktleVBhdGhfECFsYXN0T3V0Ym91bmRNZXNzYWdlU2VxdWVuY2VOdW1iZXJVdGl0bGVdcGVybWFuZW50VVVJRF8QF3BlbmRpbmdNZXNzYWdlUmVhY3Rpb25zXxATaWxsdXN0cmF0aXZlTWVzc2FnZV8QEmxvY2FsQ29uZmlndXJhdGlvbl8QE25vcm1hbGl6ZWRTZWFyY2hLZXlfECthTmV3UmVjZWl2ZWRNZXNzYWdlRG9lc01lbnRpb25Pd25lZElkZW50aXR5XxAfbGFzdFN5c3RlbU1lc3NhZ2VTZXF1ZW5jZU51bWJlcl8QFnNlbmRlclRocmVhZElkZW50aWZpZXJfEBNzaGFyZWRDb25maWd1cmF0aW9uXxAWdGltZXN0YW1wT2ZMYXN0TWVzc2FnZV8QG3JlbW90ZURlbGV0ZUFuZEVkaXRSZXF1ZXN0c18QE251bWJlck9mTmV3TWVzc2FnZXNdb3duZWRJZGVudGl0eVppc0FyY2hpdmVkXxAbbGF0ZXN0U2VuZGVyU2VxdWVuY2VOdW1iZXJzXG9uQ2hhbmdlRmxhZ15yYXdQaW5uZWRJbmRleN8QEgAAASIAAAEjAAABJAAAsG8AAAAhAAABJgAAAScAALBwAAAAIwAAASUAALBxAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB0AAAA7AAAAOwAALB5AAAAMQAAAOwAAADeAAAA7AAAAgYAALAqAAAA7AAAAOwAALCBAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQ4KCAiBDjQIgDkIgIqBDh4ICIEOMwgSp9JWUdMAAAA6AAAAOwAAAA4AALCFAACwiAAAAKCiAAACDwAAAhCAZIBlogAAsIkAALCKgQ41gQ5AgFXZAAAAIQAAACUAALCNAAAADgAAACgAALCOAAAAIwA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A7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEOTAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAALHKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBDkwICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAsg0AAAAXAACxygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBDlGAAIEOTAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAACyGwAAshwAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAscoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEOTAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAALHKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBDkwICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACxygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQ5MCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAscoAAADsAAAA7AAAAOwAAAAxAAA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OAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAALbPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBDrMICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAC2zwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQ6zCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADB0AAAAFwAAts8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQRRgACBDrMICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAC2zwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQ6zCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAts8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEOswgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAALbPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBDrMICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAC39QAAACEAAAEmAAABJwAAt/YAAAAjAAABJQAAt/cAAAEoAAAADgAAACUAAAEpAAABKgAAACg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AaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAvNUAAAAXAAC8kgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBDx+AAIEPGggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAC84wAAvOQAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAvJIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEPGggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAALySAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBDxoICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAC8kgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQ8aCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAvJIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEPGggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAALySAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBDxoICAgIgEq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XAAC91AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQ88CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAvdQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEPPAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAL3UAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBDzwICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMHQAAAAXAAC91AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBFGAAIEPPAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAL3UAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBDzwICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAC91AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQ88CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAvdQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEPPAgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAL76AAAAIQAAASYAAAEnAAC++wAAACMAAAElAAC+/AAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAcgAAAOwAAADsAAC/BAAAADEAAADsAAAA3gAAAOwAAAIGAAC55gAAAOwAAADsAAC/DAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEO0AgIgQ9HCIA5CICKgQ7oCAiBD0YIEpp0FjrTAAAAOgAAADsAAAAOAAC/EAAAvxMAAACgogAAAg8AAAIQgGSAZaIAAL8UAAC/FYEPSIEPU4BV2QAAACEAAAAlAAC/GAAAAA4AAAAoAAC/GQAAACMAAADdAAC/GgAAue0AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAC/Il8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEPRYBkgDmAXIAAgAQIgQ9J0wAAADoAAAA7AAAADgAAvyQAAL8tAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAC/LgAAvy8AAL8wAAC/MQAAvzIAAL8zAAC/NAAAvzWBD0qBD0uBD0yBD06BD0+BD1CBD1GBD1KAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAvxQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEPSAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAL8UAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBD0gICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAv1cAAAAXAAC/FAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBD02AAIEPSAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAC/ZQAAv2YAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAvxQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEPSAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAL8UAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBD0gICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAC/FAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQ9ICAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAvxQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEPSAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAL8UAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBD0gICAgIgEqAbwgIgAAI2QAAACEAAAAlAAC/tAAAAA4AAAAoAAC/tQAAACMAAADdAAC/tgAAue0AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAC/vl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEPRYBlgDmAXIAAgAQIgQ9U0wAAADoAAAA7AAAADgAAv8AAAL/IAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAC/yQAAv8oAAL/LAAC/zAAAv80AAL/OAAC/z4EPVYEPVoEPV4EPWIEPWYEPWoEPW4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAC/FQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQ9TCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAvxUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEPUwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAL8VAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBD1MICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAYbYAAAAXAAC/FQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBCDGAAIEPUwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAL8VAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBD1MICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAC/FQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQ9TCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAvxUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEPUwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAMA7AAAAIQAAASYAAAEnAADAPAAAACMAAAElAADAPQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAcgAAAOwAAADsAADARQAAADEAAADsAAAA3gAAAOwAAASiAAAqOQAAAOwAAADsAADATQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEO0AgIgQ9eCIA5CIECxIED3AgIgQ9dCBLDnA6x0wAAADoAAAA7AAAADgAAwFEAAMBUAAAAoKIAAAIPAAAErIBkgKWiAADAVQAAwFaBD1+BD2qAVdkAAAAhAAAAJQAAwFkAAAAOAAAAKAAAwFoAAAAjAAAA3QAAwFsAALnuAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAwGNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBD1yAZIA5gFyAAIAECIEPYNMAAAA6AAAAOwAAAA4AAMBlAADAbgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAwG8AAMBwAADAcQAAwHIAAMBzAADAdAAAwHUAAMB2gQ9hgQ9igQ9jgQ9lgQ9mgQ9ngQ9ogQ9pgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAMBVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBD18ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADAVQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQ9fCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAMCYAAAAFwAAwFUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQ9kgACBD18ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAwKYAAMCnAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAMBVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBD18ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADAVQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQ9fCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAwFUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEPXwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAMBVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBD18ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADAVQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQ9fCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAwPUAAAAOAAAAKAAAwPYAAAAjAAAA3QAAwPcAALnuAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAwP9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBD1yApYA5gFyAAIAECIEPa9MAAAA6AAAAOwAAAA4AAMEBAADBCQAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwAAwQoAAMELAADBDAAAwQ0AAMEOAADBDwAAwRCBD2yBD22BD26BD2+BD3CBD3GBD3KAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAAwFYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEPaggICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAMBWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBD2oICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAADAVgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQ9qCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAB0AAAAFwAAwFYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQ4KgACBD2oICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADAVgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQ9qCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAwFYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEPaggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACwRwAAABcAAMBWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEOvIAAgQ9qCAgICIBKgLoICIAACNIAAAA7AAAADgAAwXwAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAC4EAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAroAAgQ7KCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAuBAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEOyggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAC57gAAABcAALgQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEPXIAAgQ7KCAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAAAwawAAAAhAAABJgAAAScAAMGtAAAAIwAAASUAAMGuAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB0AAAA7AAAAOwAAMG2AAAAMQAAAOwAAADeAAAA7AAABKIAALAwAAAA7AAAAOwAAMG+AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQ4KCAiBD3kIgDkIgQLEgQ4jCAiBD3gIEuBbCkjTAAAAOgAAADsAAAAOAADBwgAAwcUAAACgogAAAg8AAASsgGSApaIAAMHGAADBx4EPeoEPhYBV2QAAACEAAAAlAADBygAAAA4AAAAoAADBywAAACMAAADdAADBzAAAsEgAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADB1F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEPd4BkgDmAXIAAgAQIgQ970wAAADoAAAA7AAAADgAAwdYAAMHfAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAADB4AAAweEAAMHiAADB4wAAweQAAMHlAADB5gAAweeBD3yBD32BD36BD4CBD4GBD4KBD4OBD4SAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAwcYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEPeggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAMHGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBD3oICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAwgkAAAAXAADBxgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBD3+AAIEPeggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAADCFwAAwhgAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAwcYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEPeggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAMHGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBD3oICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADBxgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQ96CAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAwcYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEPeggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAMHGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBD3oICAgIgEqAbwgIgAAI2QAAACEAAAAlAADCZgAAAA4AAAAoAADCZwAAACMAAADdAADCaAAAsEgAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADCcF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEPd4ClgDmAXIAAgAQIgQ+G0wAAADoAAAA7AAAADgAAwnIAAMJ6AAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAADCewAAwnwAAMJ9AADCfgAAwn8AAMKAAADCgYEPh4EPiIEPiYEPioEPi4EPjIEPjYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAADBxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQ+FCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwAAwccAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBD4UICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAADBxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQ+FCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACYAAAAFwAAwccAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQO4gACBD4UICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADBxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQ+FCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAwccAAADsAAAA7AAAAOwAAAA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AAAAXAADI4AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRAKCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAyOAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQCggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADJIwAAABcAAMjgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEQD4AAgRAKCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAMkxAADJMgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADI4AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRAKCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAyOAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEQCggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAMjgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEAoICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABc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AAM30AADN/QAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAzf4AAM3/AADOAAAAzgEAAM4CAADOAwAAzgQAAM4FgRBogRBpgRBqgRBsgRBtgRBugRBvgRBwgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAM3kAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEGYICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADN5AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRBmCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAM4nAAAAFwAAzeQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRBrgACBEGYICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAzjUAAM42AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAM3kAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEGYICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADN5AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRBmCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAzeQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQZggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAM3kAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEGYICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADN5AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRBmCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAzoQAAAAOAAAAKAAAzoUAAAAjAAAA3QAAzoYAAMYvAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAzo5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEGOAZYA5gFyAAIAECIEQctMAAAA6AAAAOwAAAA4AAM6QAADOmAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAzpkAAM6aAADOmwAAzpwAAM6dAADOngAAzp+BEHOBEHSBEHWBEHaBEHeBEHiBEHmAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAzeUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQcQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAM3lAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEHEICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADN5QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRBxCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwAAzeUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEQcQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAM3lAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEHEICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADN5QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRBxCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAzeUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQcQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAM8LAAAAIQAAASYAAAEnAADPDAAAACMAAAElAADPDQAAASgAAAA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XAADQZwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRCfCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA0GcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQnwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANBnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBEJ8ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAADQZwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEQnwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANBnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEJ8ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADQZwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRCfCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA0GcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQnwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAANGNAAAAIQAAASYAAAEnAADRjgAAACMAAAElAADRjwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAgQAAAOwAAADsAADRlwAAADEAAADsAAAA3gAAAOwAAAIGAADGJAAAAOwAAADsAADRnwAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEPuQgIgRCqCIA5CICKgQ/WCAiBEKkIEnR7kDfTAAAAOgAAADsAAAAOAADRowAA0aYAAACgogAAAg8AAAIQgGSAZaIAANGnAADRqIEQq4EQtoBV2QAAACEAAAAlAADRqwAAAA4AAAAoAADRrAAAACMAAADdAADRrQAAxjIAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADRtV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEQqIBkgDmAXIAAgAQIgRCs0wAAADoAAAA7AAAADgAA0bcAANHAAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAADRwQAA0cIAANHDAADRxAAA0cUAANHGAADRxwAA0ciBEK2BEK6BEK+BELGBELKBELOBELSBELWAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA0acAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQqwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANGnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEKsICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA0eoAAAAXAADRpwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBELCAAIEQqwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAADR+AAA0fkAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA0acAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQqwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAANGnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBEKsICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADRpwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRCrCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA0acAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQqwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANGnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEKsICAgIgEqAbwgIgAAI2QAAACEAAAAlAADSRwAAAA4AAAAoAADSSAAAACMAAADdAADSSQAAxjIAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADSUV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEQqIBlgDmAXIAAgAQIgRC30wAAADoAAAA7AAAADgAA0lMAANJbAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAADSXAAA0l0AANJeAADSXwAA0mAAANJhAADSYoEQuIEQuYEQuoEQu4EQvIEQvYEQvoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADRqAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRC2CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA0agAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQtggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANGoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBELYICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAJnkAAAAXAADRqAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBA4GAAIEQtggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANGoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBELYICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADRqAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRC2CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA0agAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQtggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAANLOAAAAIQAAASYAAAEnAADSzwAAACMAAAElAADS0AAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAgQAAAOwAAADsAADS2AAAADEAAADsAAAA3gAAAOwAAAIGAADGJQAAAOwAAADsAADS4AAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEPuQgIgRDBCIA5CICKgQ/XCAiBEMAIEwAAAAESvF8+0wAAADoAAAA7AAAADgAA0uQAANLnAAAAoKIAAAIPAAACEIBkgGWiAADS6AAA0umBEMKBEM2AVdkAAAAhAAAAJQAA0uwAAAAOAAAAKAAA0u0AAAAjAAAA3QAA0u4AAMYzAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA0vZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEL+AZIA5gFyAAIAECIEQw9MAAAA6AAAAOwAAAA4AANL4AADTAQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA0wIAANMDAADTBAAA0wUAANMGAADTBwAA0wgAANMJgRDEgRDFgRDGgRDIgRDJgRDKgRDLgRDMgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANLoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEMIICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADS6AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRDCCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAANMrAAAAFwAA0ugAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRDHgACBEMIICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA0zkAANM6AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANLoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEMIICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADS6AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRDCCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA0ugAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQwggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANLoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEMIICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADS6AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRDCCAgICIBKgG8ICIAACNkAAAAhAAAAJQAA04gAAAAOAAAAKAAA04kAAAAjAAAA3QAA04oAAMYzAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA05JfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEL+AZYA5gFyAAIAECIEQztMAAAA6AAAAOwAAAA4AANOUAADTnAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA050AANOeAADTnwAA06AAANOhAADTogAA06OBEM+BENCBENGBENKBENOBENSBENWAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA0ukAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQzQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANLpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEM0ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADS6QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRDNCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACZ5AAAAFwAA0ukAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQOBgACBEM0ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADS6QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRDNCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA0ukAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQzQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANLpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEM0ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADUDwAAACEAAAEmAAABJwAA1BAAAAAjAAABJQAA1BEAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIEAAADsAAAA7AAA1BkAAAAxAAAA7AAAAN4AAADsAAACBgAAxiYAAADsAAAA7AAA1CEAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBD7kICIEQ2AiAOQiAioEP2AgIgRDXCBMAAAABG3YD3tMAAAA6AAAAOwAAAA4AANQlAADUKAAAAKCiAAACDwAAAhCAZIBlogAA1CkAANQqgRDZgRDkgFXZAAAAIQAAACUAANQtAAAADgAAACgAANQuAAAAIwAAAN0AANQvAADGNAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAANQ3XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRDWgGSAOYBcgACABAiBENrTAAAAOgAAADsAAAAOAADUOQAA1EIAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAANRDAADURAAA1EUAANRGAADURwAA1EgAANRJAADUSoEQ24EQ3IEQ3YEQ34EQ4IEQ4YEQ4oEQ44BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADUKQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRDZCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA1CkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQ2QgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADUbAAAABcAANQpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEQ3oAAgRDZCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AANR6AADUewAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADUKQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRDZCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAA1CkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEQ2QgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANQpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBENkICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADUKQAAAOw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AaggIgAAI0wAAADoAAAA7AAAADgAA1ywAANctAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANbbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEQsICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADW2wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRELCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA1tsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERCwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANbbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEQsICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADW2wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRELCAgICIBKgG8ICIAACNkAAAAhAAAAJQAA13sAAAAOAAAAKAAA13wAAAAjAAAA3QAA130AALBKAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA14VfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEQiAZYA5gFyAAIAECIERF9MAAAA6AAAAOwAAAA4AANeHAADXjwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA15AAANeRAADXkgAA15MAANeUAADXlQAA15aBERiBERmBERqBERuBERyBER2BER6AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA1twAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERFggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANbcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBERYICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADW3AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgREWCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAA1twAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBERYICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADW3AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgREWCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA1twAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERFggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANbcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBERYICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADYAgAAACEAAAEmAAABJwAA2AMAAAAjAAABJQAA2AQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHQAAADsAAAA7AAA2AwAAAAxAAAA7AAAAN4AAADsAAACBgAAsDMAAADsAAAA7AAA2BQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBDgoICIERIQiAOQiAioEOJggIgREgCBMAAAABG6kFdtMAAAA6AAAAOwAAAA4AANgYAADYGwAAAKCiAAACDwAAAhCAZIBlogAA2BwAANgdgREigREtgFXZAAAAIQAAACUAANggAAAADgAAACgAANghAAAAIwAAAN0AANgiAACwSwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAANgqXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgREfgGSAOYBcgACABAiBESPTAAAAOgAAADsAAAAOAADYLAAA2DUAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAANg2AADYNwAA2DgAANg5AADYOgAA2DsAANg8AADYPYERJIERJYERJoERKIERKYERKoERK4ERLIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADYHAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgREiCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2BwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERIggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADYXwAAABcAANgcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIERJ4AAgREiCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AANhtAADYbgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADYHAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgREiCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA2BwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERIggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANgcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBESIICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADYHAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgREiCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA2BwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERIggICAiASoBvCAiAAAjZAAAAIQAAACUAANi8AAAADgAAACgAANi9AAAAIwAAAN0AANi+AACwSwAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAANjGXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgREfgGWAOYBcgACABAiBES7TAAAAOgAAADsAAAAOAADYyAAA2NAAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAANjRAADY0gAA2NMAANjUAADY1QAA2NYAANjXgREvgREwgRExgREygREzgRE0gRE1gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAHqQAAABcAANgdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAID7gACBES0ICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADYHQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgREtCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2B0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERLQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAH1wAAABcAANgdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAID/gACBES0ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADYHQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgREtCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2B0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERLQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANgdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBES0ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADZQwAAACEAAAEmAAABJwAA2UQAAAAjAAABJQAA2UUAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHQAAADsAAAA7AAA2U0AAAAxAAAA7AAAAN4AAADsAAACBgAAsDQAAADsAAAA7AAA2VUAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBDgoICIEROAiAOQiAioEOJwgIgRE3CBIr03uL0wAAADoAAAA7AAAADgAA2VkAANlcAAAAoKIAAAIPAAACEIBkgGWiAADZXQAA2V6BETmBEUSAVdkAAAAhAAAAJQAA2WEAAAAOAAAAKAAA2WIAAAAjAAAA3QAA2WMAALBMAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA2WtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBETaAZIA5gFyAAIAECIEROtMAAAA6AAAAOwAAAA4AANltAADZdgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA2XcAANl4AADZeQAA2XoAANl7AADZfAAA2X0AANl+gRE7gRE8gRE9gRE/gRFAgRFBgRFCgRFDgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANldAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBETkICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADZXQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRE5CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAANmgAAAAFwAA2V0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRE+gACBETkICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA2a4AANmvAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANldAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBETkICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADZXQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRE5CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA2V0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEROQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANldAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBETkICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADZXQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRE5CAgICIBKgG8ICIAACNkAAAAhAAAAJQAA2f0AAAAOAAAAKAAA2f4AAAAjAAAA3QAA2f8AALBMAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA2gdfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBETaAZYA5gFyAAIAECIERRdMAAAA6AAAAOwAAAA4AANoJAADaEQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA2hIAANoTAADaFAAA2hUAANoWAADaFwAA2hiBEUaBEUeBEUiBEUmBEUqBEUuBEUyAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACjPAAAAFwAA2V4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgQOtgACBEUQICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADZXgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRFECAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2V4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERRAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAmeQAAABcAANleAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDgYAAgRFECAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2V4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERRAgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANleAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEUQICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADZXgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRFECAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAA2oQAAAAhAAABJgAAAScAANqFAAAAIwAAASUAANqGAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB0AAAA7AAAAOwAANqOAAAAMQAAAOwAAADeAAAA7AAAAgYAALA1AAAA7AAAAOwAANqWAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQ4KCAiBEU8IgDkIgIqBDigICIERTggS8aaCQdMAAAA6AAAAOwAAAA4AANqaAADanQAAAKCiAAACDwAAAhCAZIBlogAA2p4AANqfgRFQgRFbgFXZAAAAIQAAACUAANqiAAAADgAAACgAANqjAAAAIwAAAN0AANqkAACwTQAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAANqsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRFNgGSAOYBcgACABAiBEVHTAAAAOgAAADsAAAAOAADargAA2rcAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAANq4AADauQAA2roAANq7AADavAAA2r0AANq+AADav4ERUoERU4ERVIERVoERV4ERWIERWYERWoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADangAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRFQCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2p4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERUAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADa4QAAABcAANqeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIERVYAAgRFQCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AANrvAADa8AAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADangAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRFQCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA2p4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERUAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANqeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEVAICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADangAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRFQCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA2p4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERUAgICAiASoBvCAiAAAjZAAAAIQAAACUAANs+AAAADgAAACgAANs/AAAAIwAAAN0AANtAAACwTQAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAANtIXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRFNgGWAOYBcgACABAiBEVzTAAAAOgAAADsAAAAOAADbSgAA21IAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAANtTAADbVAAA21UAANtWAADbVwAA21gAANtZgRFdgRFegRFfgRFggRFhgRFigRFjgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANqfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEVsICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADanwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRFbCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2p8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERWwgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAwdAAAABcAANqfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEEUYAAgRFbCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2p8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERWwgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANqfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEVsICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADanwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRFbCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAA28UAAAAhAAABJgAAAScAANvGAAAAIwAAASUAANvHAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB0AAAA7AAAAOwAANvPAAAAMQAAAOwAAADeAAAA7AAABKIAALA2AAAA7AAAAOwAANvXAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQ4KCAiBEWYIgDkIgQLEgQ4pCAiBEWUIElPzPWvTAAAAOgAAADsAAAAOAADb2wAA294AAACgogAAAg8AAASsgGSApaIAANvfAADb4IERZ4ERcoBV2QAAACEAAAAlAADb4wAAAA4AAAAoAADb5AAAACMAAADdAADb5QAAsE4AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADb7V8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYERZIBkgDmAXIAAgAQIgRFo0wAAADoAAAA7AAAADgAA2+8AANv4AAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAADb+QAA2/oAANv7AADb/AAA2/0AANv+AADb/wAA3ACBEWmBEWqBEWuBEW2BEW6BEW+BEXCBEXGAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA298AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERZwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANvfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEWcICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA3CIAAAAXAADb3wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBEWyAAIERZwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAADcMAAA3DEAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA298AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERZwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANvfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEWcICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADb3wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRFnCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA298AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERZwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANvfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEWcICAgIgEqAbwgIgAAI2QAAACEAAAAlAADcfwAAAA4AAAAoAADcgAAAACMAAADdAADcgQAAsE4AAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADciV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYERZIClgDmAXIAAgAQIgRFz0wAAADoAAAA7AAAADgAA3IsAANyTAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAADclAAA3JUAANyWAADclwAA3JgAANyZAADcmoERdIERdYERdoERd4ESA4ESBIESBYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAADb4AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgRFyCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwAA2+AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBEXIICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAADb4AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgRFyCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACMAAAAFwAA2+AAAADsAAA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AASsAAAAXAADeHwAAABcAAN3cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIERl4AAgRGSCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAN4tAADeLgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADd3AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRGSCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAA3dwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIERkggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAN3cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEZIICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADd3AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRGSCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA3dwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERkggICAiASoBvCAiAAAjZAAAAIQAAACUAAN58AAAADgAAACgAAN59AAAAIwAAAN0AAN5+AADduAAAAhAAAADeAAAA/QAAABcAAAA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ASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAN8eAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEbQICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADfHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRG0CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACZ5AAAAFwAA3x4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQOBgACBEbQICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADfHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRG0CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA3x4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERtAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAN8eAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEbQICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADgRAAAACEAAAEmAAABJwAA4EUAAAAjAAABJQAA4EYAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIwAAADsAAAA7AAA4E4AAAAxAAAA7AAAAN4AAADsAAAEogAAKjkAAADsAAAA7AAA4FYAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEXgICIERvwiAOQiBAsSBA9wICIERvggSmpH3T9MAAAA6AAAAOwAAAA4AAOBaAADgXQAAAKCiAAACDwAABKyAZIClogAA4F4AAOBfgRHAgRHLgFXZAAAAIQAAACUAAOBiAAAADgAAACgAAOBjAAAAIwAAAN0AAOBkAADdugAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAOBsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRG9gGSAOYBcgACABAiBEcHTAAAAOgAAADsAAAAOAADgbgAA4HcAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAOB4AADgeQAA4HoAAOB7AADgfAAA4H0AAOB+AADgf4ERwoERw4ERxIERxoERx4ERyIERyYERyoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADgXgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRHACAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA4F4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERwAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADgoQAAABcAAOBeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIERxYAAgRHACAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAOCvAADgsAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADgXgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRHACAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAA4F4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIERwAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOBeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEcAICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADgXgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRHACAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA4F4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQ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oAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADhoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRHiCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA4aAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIER4ggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOGgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBEeIICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAALzIAAAAXAADhoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBDmAAIER4ggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOGgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEeIICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADhoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRHiCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABc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BIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAADi4QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgRH5CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA4uEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIER+QgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOLhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEfkICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADi4QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRH5CAgICIBKgIEICIAACNIAAAA7AAAADgAA5AcAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADb4AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgRFyCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA2+AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERcggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADdugAAABcAANvgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIERvYAAgRFyCAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAAA5DcAAAAhAAABJgAAAScAAOQ4AAAAIwAAASUAAOQ5AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB0AAAA7AAAAOwAAORBAAAAMQAAAOwAAADeAAAA7AAAAgYAALA3AAAA7AAAAOwAAORJAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQ4KCAiBEggIgDkIgIqBDioICIESBwgSwG4aQNMAAAA6AAAAOwAAAA4AAORNAADkUAAAAKCiAAACDwAAAhCAZIBlogAA5FEAAORSgRIJgRIUgFXZAAAAIQAAACUAAORVAAAADgAAACgAAORWAAAAIwAAAN0AAORXAACwTwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAORfXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRIGgGSAOYBcgACABAiBEgrTAAAAOgAAADsAAAAOAADkYQAA5GoAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAORrAADkbAAA5G0AAORuAADkbwAA5HAAAORxAADkcoESC4ESDIESDYESD4ESEIESEYESEoESE4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADkUQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRIJCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5FEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESCQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADklAAAABcAAORRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIESDoAAgRIJCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAOSiAADkowAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADkUQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRIJCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5FEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESCQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAORRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEgkICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADkUQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRIJCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5FEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESCQgICAiASoBvCAiAAAjZAAAAIQAAACUAAOTxAAAADgAAACgAAOTyAAAAIwAAAN0AAOTzAACwTwAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAOT7XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRIGgGWAOYBcgACABAiBEhXTAAAAOgAAADsAAAAOAADk/QAA5QUAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAOUGAADlBwAA5QgAAOUJAADlCgAA5QsAAOUMgRIWgRIXgRIYgRIZgRIagRIbgRIcgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAORSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEhQICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADkUgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRIUCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5FIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESFAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABhtgAAABcAAORSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEIMYAAgRIUCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5FIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESFAgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAORSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEhQICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADkUgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRIUCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAA5XgAAAAhAAABJgAAAScAAOV5AAAAIwAAASUAAOV6AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB0AAAA7AAAAOwAAOWCAAAAMQAAAOwAAADeAAAA7AAABKIAALA4AAAA7AAAAOwAAOWKAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQ4KCAiBEh8IgDkIgQLEgQ4rCAiBEh4IEqL4SFHTAAAAOgAAADsAAAAOAADljgAA5ZEAAACgogAAAg8AAASsgGSApaIAAOWSAADlk4ESIIESK4BV2QAAACEAAAAlAADllgAAAA4AAAAoAADllwAAACMAAADdAADlmAAAsFAAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADloF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYESHYBkgDmAXIAAgAQIgRIh0wAAADoAAAA7AAAADgAA5aIAAOWrAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAADlrAAA5a0AAOWuAADlrwAA5bAAAOWxAADlsgAA5bOBEiKBEiOBEiSBEiaBEieBEiiBEimBEiqAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5ZIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESIAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOWSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEiAICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA5dUAAAAXAADlkgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBEiWAAIESIAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAADl4wAA5eQAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5ZIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESIAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOWSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEiAICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADlkgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRIgCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5ZIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESIAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOWSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEiAICAgIgEqAbwgIgAAI2QAAACEAAAAlAADmMgAAAA4AAAAoAADmMwAAACMAAADdAADmNAAAsFAAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADmPF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYESHYClgDmAXIAAgAQIgRIs0wAAADoAAAA7AAAADgAA5j4AAOZGAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAADmRwAA5kgAAOZJAADmSgAA5ksAAOZMAADmTYESLYESLoESL4ESMIETBIETBYETBoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAADlkwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgRIrCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwAA5ZMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBEisICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAADlkwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgRIrCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAB4AAAAFwAA5ZMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgRIxgACBEisICAgIgEqAtwgIgAAI3xAQAADmjAAA5o0AAOaOAADmjwAAACEAAOaQAADmkQAAACMAAOaSAADmkwAAAA4AAAAlAADmlAAA5pUAAAAoAAAA3QAAAN4AAOaXAAAAKQAAACkAAAAUAADmmwAAAOQAAAAxAAAAKQAAAN4AAADnAAAARgAAAN4AAOaiAADmowAAAOxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECB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AAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA6E0AAOhOAADoTwAA6FAAAOhRAADoUgAA6FOBEluBElyBEl2BEl6BEl+BEmCBEmGAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA55kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESWQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOeZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBElkICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADnmQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRJZCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwAA55kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIESWQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOeZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBElkICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADnmQAAAOwAAAD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zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYESeYBlgDmAXIAAgAQIgRKI0wAAADoAAAA7AAAADgAA6sYAAOrOAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAADqzwAA6tAAAOrRAADq0gAA6tMAAOrUAADq1YESiYESioESi4ESjIESjYESjoESj4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADqGwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRKHCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA6hsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEShwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOobAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBEocICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMHQAAAAXAADqGwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBFGAAIEShwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOobAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEocICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADqGwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRKHCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA6hsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEShwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAOtBAAAAIQAAASYAAAEnAADrQgAAACMAAAElAADrQwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAeAAAAOwAAADsAADrSwAAADEAAADsAAAA3gAAAOwAAAIGAADnaAAAAOwAAADsAADrUwAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIESMQgIgRKSCIA5CICKgRJICAiBEpEIEwAAAAEZmwqF0wAAADoAAAA7AAAADgAA61cAAOtaAAAAoKIAAAIPAAACEIBkgGWiAADrWwAA61yBEpOBEp6AVdkAAAAhAAAAJQAA618AAAAOAAAAKAAA62AAAAAjAAAA3QAA62EAAOdxAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA62lfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEpCAZIA5gFyAAIAECIESlNMAAAA6AAAAOwAAAA4AAOtrAADrdAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA63UAAOt2AADrdwAA63gAAOt5AADregAA63sAAOt8gRKVgRKWgRKXgRKZgRKagRKbgRKcgRKdgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOtbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEpMICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADrWwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRKTCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAOueAAAAFwAA61sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRKYgACBEpMICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA66wAAOutAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOtbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEpMICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADrWwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRKTCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA61sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESkwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOtbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEpMICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADrWwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRKTCAgICIBKgG8ICIAACNkAAAAhAAAAJQAA6/sAAAAOAAAAKAAA6/wAAAAjAAAA3QAA6/0AAOdxAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA7AVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEpCAZYA5gFyAAIAECIESn9MAAAA6AAAAOwAAAA4AAOwHAADsDwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA7BAAAOwRAADsEgAA7BMAAOwUAADsFQAA7BaBEqCBEqGBEqKBEqOBEqSBEqWBEqaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA61wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESnggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOtcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEp4ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADrXAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRKeCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGG2AAAAFwAA61wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQgxgACBEp4ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADrXAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRKeCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA61wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESnggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOtcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEp4ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADsggAAACEAAAEmAAABJwAA7IMAAAAjAAABJQAA7IQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHgAAAD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AAOdyAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA7UZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEqeAZYA5gFyAAIAECIESttMAAAA6AAAAOwAAAA4AAO1IAADtUAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA7VEAAO1SAADtUwAA7VQAAO1VAADtVgAA7VeBEreBEriBErmBErqBEruBEryBEr2AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA7J0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEStQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOydAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBErUICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADsnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRK1CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACZ5AAAAFwAA7J0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQOBgACBErUICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADsnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRK1CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA7J0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEStQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOydAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBErUICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADtwwAAACEAAAEmAAABJwAA7cQAAAAjAAABJQAA7cUAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHgAAADsAAAA7AAA7c0AAAAxAAAA7AAAAN4AAADsAAACBgAA52oAAADsAAAA7AAA7dUAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEjEICIESwAiAOQiAioESSggIgRK/CBMAAAABACzJGtMAAAA6AAAAOwAAAA4AAO3ZAADt3AAAAKCiAAACDwAAAhCAZIBlogAA7d0AAO3egRLBgRLMgFXZAAAAIQAAACUAAO3hAAAADgAAACgAAO3iAAAAIwAAAN0AAO3jAADncwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAO3rXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRK+gGSAOYBcgACABAiBEsLTAAAAOgAAADsAAAAOAADt7QAA7fYAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAO33AADt+AAA7fkAAO36AADt+wAA7fwAAO39AADt/oESw4ESxIESxYESx4ESyIESyYESyoESy4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADt3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRLBCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA7d0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESwQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADuIAAAABcAAO3dAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIESxoAAgRLBCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAO4uAADuLwAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADt3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRLBCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAA7d0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIESwQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAO3dAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEsEICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADt3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRLBCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA7d0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESwQgICAiASoBvCAiAAAjZAAAAIQAAACUAAO59AAAADgAAACgAAO5+AAAAIwAAAN0AAO5/AADncwAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAO6HXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRK+gGWAOYBcgACABAiBEs3TAAAAOgAAADsAAAAOAADuiQAA7pEAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAO6SAADukwAA7pQAAO6VAADulgAA7pcAAO6YgRLOgRLPgRLQgRLRgRLSgRLTgRLUgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAO3eAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEswICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADt3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRLMCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA7d4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESzAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAO3eAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBEswICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADt3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRLMCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA7d4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESzAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAO3eAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEswICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADvBAAAACEAAAEmAAABJwAA7wUAAAAjAAABJQAA7wYAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHgAAADsAAAA7AAA7w4AAAAxAAAA7AAAAN4AAADsAAACBgAAKjEAAADsAAAA7AAA7xYAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEjEICIES1wiAOQiAioED1QgIgRLWCBLSuDU70wAAADoAAAA7AAAADgAA7xoAAO8dAAAAoKIAAAIPAAACEIBkgGWiAADvHgAA7x+BEtiBEuOAVdkAAAAhAAAAJQAA7yIAAAAOAAAAKAAA7yMAAAAjAAAA3QAA7yQAAOd0AAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA7yxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEtWAZIA5gFyAAIAECIES2dMAAAA6AAAAOwAAAA4AAO8uAADvNwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA7zgAAO85AADvOgAA7zsAAO88AADvPQAA7z4AAO8/gRLagRLbgRLcgRLegRLfgRLggRLhgRLigFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAO8eAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEtgICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADvHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRLYCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAO9hAAAAFwAA7x4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRLdgACBEtgICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA728AAO9wAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAO8eAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEtgICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADvHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRLYCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA7x4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIES2AgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAO8eAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEtgICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADvHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRLYCAgICIBKgG8ICIAACNkAAAAhAAAAJQAA774AAAAOAAAAKAAA778AAAAjAAAA3QAA78AAAOd0AAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA78hfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEtWAZYA5gFyAAIAECIES5NMAAAA6AAAAOwAAAA4AAO/KAADv0gAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA79MAAO/UAADv1QAA79YAAO/XAADv2AAA79mBEuWBEuaBEueBEuiBEumBEuqBEuuAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA7x8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIES4wgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAO8fAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEuMICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADvHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRLjCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAA7x8AAAD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yiAAA8okAAPKKAADyi4ETF4ETGIETGYETGoETG4ETHIETHYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAKM8AAAAXAADx0QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBA62AAIETFQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPHRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBExUICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADx0QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRMVCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACZ5AAAAFwAA8dEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQOBgACBExUICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADx0QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRMVCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA8dEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETFQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPHRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBExUICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADy9wAAACEAAAEmAAABJwAA8vgAAAAjAAABJQAA8vkAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHQAAADsAAAA7AAA8wEAAAAxAAAA7AAAAN4AAADsAAAEogAAsDoAAADsAAAA7AAA8wkAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBDgoICIETIAiAOQiBAsSBDi0ICIETHwgSsyTncdMAAAA6AAAAOwAAAA4AAPMNAADzEAAAAKCiAAACDwAABKyAZIClogAA8xEAAPMSgRMhgRMsgFXZAAAAIQAAACUAAPMVAAAADgAAACgAAPMWAAAAIwAAAN0AAPMXAACwUgAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAPMfXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRMegGSAOYBcgACABAiBEyLTAAAAOgAAADsAAAAOAADzIQAA8yoAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAPMrAADzLAAA8y0AAPMuAADzLwAA8zAAAPMxAADzMoETI4ETJIETJYETJ4ETKIETKYETKoETK4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADzEQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRMhCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA8xEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETIQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADzVAAAABcAAPMRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIETJoAAgRMhCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAPNiAADzYwAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADzEQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRMhCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAA8xEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIETIQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPMRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEyEICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAA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AaYBqgGuAbIBtgG6Ab6gAAPamAAD2pwAA9qgAAPapAAD2qgAA9qsAAPasAAD2rYETeIETeYETeoETfIETfYETfoETf4ETgIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD2jAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRN2CAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA9owAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETdggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAD2zwAAABcAAPaMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIETe4AAgRN2CAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAPbdAAD23gAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD2jAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRN2CAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA9owAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETdggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPaMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBE3YICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD2jAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRN2CAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA9owAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETdggICAiASoBvCAiAAAjZAAAAIQAAACUAAPcsAAAADgAAACgAAPctAAAAIwAAAN0AAPcuAAD1AwAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAPc2XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRNzgGWAOYBcgACABAiBE4LTAAAAOgAAADsAAAAOAAD3OAAA90AAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAPdBAAD3QgAA90MAAPdEAAD3RQAA90YAAPdHgRODgROEgROFgROGgROHgROIgROJgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPaNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBE4EICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD2jQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgROBCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA9o0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETgQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAmeQAAABcAAPaNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDgYAAgROBCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA9o0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETgQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPaNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBE4EICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD2jQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgROBCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAA97MAAAAhAAABJgAAAScAAPe0AAAAIwAAASUAAPe1AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACeAAAA7AAAAOwAAPe9AAAAMQAAAOwAAADeAAAA7AAAAgYAAPTrAAAA7AAAAOwAAPfFAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRMyCAiBE4wIgDkIgIqBE0kICIETiwgSPyFFcdMAAAA6AAAAOwAAAA4AAPfJAAD3zAAAAKCiAAACDwAAAhCAZIBlogAA980AAPfOgRONgROYgFXZAAAAIQAAACUAAPfRAAAADgAAACgAAPfSAAAAIwAAAN0AAPfTAAD1BAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAPfbXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgROKgGSAOYBcgACABAiBE47TAAAAOgAAADsAAAAOAAD33QAA9+YAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAPfnAAD36AAA9+kAAPfqAAD36wAA9+wAAPftAAD37oETj4ETkIETkYETk4ETlIETlYETloETl4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD3zQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRONCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA980AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETjQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAD4EAAAABcAAPfNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIETkoAAgRONCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAPgeAAD4HwAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD3zQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRONCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA980AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETjQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPfNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBE40ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD3zQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRONCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA980AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETjQgICAiASoBvCAiAAAjZAAAAIQAAACUAAPhtAAAADgAAACgAAPhuAAAAIwAAAN0AAPhvAAD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AAADsgACAAIAAgROvCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA+Q8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETrwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPkPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBE68ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAD5DwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgROvCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA+Q8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETrwgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPkPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBE68ICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD5DwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgROvCAgICIBKgIEICIAACN8QEgA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AASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAHqQAAABcAAPuRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAID7gACBE90ICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD7kQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRPdCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA+5EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIET3QgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAH1wAAABcAAPuRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAID/gACBE90ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD7kQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRPdCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA+5EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIET3QgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPuRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBE90ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAD8twAAACEAAAEmAAABJwAA/LgAAAAjAAABJQAA/LkAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJ4AAADsAAAA7AAA/MEAAAAxAAAA7AAAAN4AAADsAAACBgAA9O8AAADsAAAA7AAA/MkAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEzIICIET6AiAOQiAioETTQgIgRPnCBLXLBKq0wAAADoAAAA7AAAADgAA/M0AAPzQAAAAoKIAAAIPAAACEIBkgGWiAAD80QAA/NKBE+mBE/SAVdkAAAAhAAAAJQAA/NUAAAAOAAAAKAAA/NYAAAAjAAAA3QAA/NcAAPUIAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA/N9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBE+aAZIA5gFyAAIAECIET6tMAAAA6AAAAOwAAAA4AAPzhAAD86gAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA/OsAAPzsAAD87QAA/O4AAPzvAAD88AAA/PEAAPzygRPrgRPsgRPtgRPvgRPwgRPxgRPygRPzgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPzRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBE+kICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD80QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRPpCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAP0UAAAAFwAA/NEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRPugACBE+kICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA/SIAAP0jAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPzRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBE+kICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD80QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRPpCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA/NEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIET6QgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPzRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBE+kICAgIgEq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AAAA7AAAADgABAOUAAQDmAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQCUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFC4ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEAlAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRQuCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABAJQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEULggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQCUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFC4ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEAlAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRQuCAgICIBKgG8ICIAACNkAAAAhAAAAJQABATQAAAAOAAAAKAABATUAAAAjAAAA3QABATYAAPULAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABAT5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECF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A7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBFFAICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAEB1gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgRRQCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAB8AAAAFwABAdYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgMGAAIEUUAgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAQHWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBFFAICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEB1gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRRQCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAa4AAAAFwABAdYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRRZgACBFFAICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAEC/AAAACEAAAEmAAABJwABAv0AAAAjAAABJQABAv4AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHwAAADsAAAA7AABAwYAAAAxAAA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BFH4ICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEEWAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRR+CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABBFgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEUfggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAH1wAAABcAAQRYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAID/gACBFH4ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEEWAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRR+CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABBFgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEUfggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQRYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFH4ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAE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AAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABBtoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEUrAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQbaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBFKwICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEG2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRSsCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABBtoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEUrAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQbaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFKwICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEG2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRSsCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABBtoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEUrAgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAQgAAAAAIQAAASYAAAEnAAEIAQAAACMAAAElAAEIAgAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAngAAAOwAAADsAAEICgAAADEAAADsAAAA3gAAAOwAAASiAAD09wAAAOwAAADsAAEIEgAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIETMggIgRS3CIA5CIECxIETVAgIgRS2CBJFezV60wAAADoAAAA7AAAADgABCBYAAQgZAAAAoKIAAAIPAAAErIBkgKWiAAEIGgABCBuBFLiBFMOAVdkAAAAhAAAAJQABCB4AAAAOAAAAKAABCB8AAAAjAAAA3QABCCAAAPUQAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABCChfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFLWAZIA5gFyAAIAECIEUudMAAAA6AAAAOwAAAA4AAQgqAAEIMwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABCDQAAQg1AAEINgABCDcAAQg4AAEIOQABCDoAAQg7gRS6gRS7gRS8gRS+gRS/gRTAgRTBgRTCgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQgaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFLgICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEIGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRS4CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAQhdAAAAFwABCBoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRS9gACBFLgICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABCGsAAQhsAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQgaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFLgICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEIGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRS4CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABCBoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEUuAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQgaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFLgICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEIGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRS4CAgICIBKgG8ICIAACNkAAAAhAAAAJQABCLoAAAAOAAAAKAABCLsAAAAjAAAA3QABCLwAAPUQAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABCMRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFLWApYA5gFyAAIAECIEUxNMAAAA6AAAAOwAAAA4AAQjGAAEIzgAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwABCM8AAQjQAAEI0QABCNIAAQjTAAEI1AABCNWBFMWBFMaBFMeBFMiBGVSBGVWBGVaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABCBsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEUwwgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAKPAAAABcAAQgbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIEBLIAAgRTDCAgICIBKgLUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABCBsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVfAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEUwwgICAiASoC2CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAggAAABcAAQgbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYAAAAOwAAADsAAAAFwAAAOyAAIEUyYAAgRTDCAgICIBKgLcICIAACN8QEAABCRQAAQkVAAEJFgABCRcAAAAhAAEJGAABCRkAAAAjAAEJGgABCRsAAAAOAAAAJQABCRwAAQkdAAAAKAAAAN0AAADeAAEJHwAAACkAAAApAAAAFAABCSMAAADkAAAAMQAAACkAAADeAAAA5wAAAFAAAADeAAEJKgABCSsAAADsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgDmBFNyABIAEgAKBFMuBA7SABIA5gQiTgBmAOYEU9YEUyggSbwoAz9MAAAA6AAAAOwAAAA4AAQkvAAEJMQAAAKChAAAA8YA7oQABCTKBFMyAVdkAAAAhAAAAJQABCTUAAAAOAAAAKAABCTYAAAAjAAAA3QABCTcAAACCAAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABCT9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFMmAO4A5gFyAAIAECIEUzdMAAAA6AAAAOwAAAA4AAQlBAAEJSwAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQABCUwAAQlNAAEJTgABCU8AAQlQAAEJUQABCVIAAQlTAAEJVIEUzoEU0IEU0YEU04EU1IEU1oEU14EU2YEU2oBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABCVgAAAAXAAEJMgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBFM+AAIEUzAgICAiASoA+CAiAAAjSAAAAOwAAAA4AAQlmAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABCTIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEUzAgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEJeQAAABcAAQkyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEU0oAAgRTMCAgICIBKgEAICIAACNIAAAA7AAAADgABCYcAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEJMgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRTMCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAQmaAAAAFwABCTIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRTVgACBFMwICAgIgEqAQggIgAAI0gAAADsAAAAOAAEJqAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQkyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFMwICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABCbsAAAAXAAEJMgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBFNiAAIEUzAgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAAEJyQABCcoAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwABCTIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEUzAgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEJ3QAAABcAAQkyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEU24AAgRTMCAgICIBKgEYICIAACF8QGlBlcnNpc3RlZENvbnRhY3RHcm91cE93bmVk0wAAADoAAAA7AAAADgABCewAAQnuAAAAoKEAAQntgRTdoQABCe+BFN6AVVVvd25lct8QEgAAASIAAAEjAAABJAABCfMAAAAhAAABJgAAAScAAQn0AAAAIwAAASUAAQn1AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACCAAAA7AAAAOwAAQn9AAAAMQAAAOwAAADeAAAA7AAABKIAAQntAAAA7AAAAOwAAQoFAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRTJCAiBFOAIgDkIgQLEgRTdCAiBFN8IEusIcy/TAAAAOgAAADsAAAAOAAEKCQABCgwAAACgogAAAg8AAASsgGSApaIAAQoNAAEKDoEU4YEU7IBV2QAAACEAAAAlAAEKEQAAAA4AAAAoAAEKEgAAACMAAADdAAEKEwABCe8AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEKG18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEU3oBkgDmAXIAAgAQIgRTi0wAAADoAAAA7AAAADgABCh0AAQomAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAEKJwABCigAAQopAAEKKgABCisAAQosAAEKLQABCi6BFOOBFOSBFOWBFOeBFOiBFOmBFOqBFOuAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABCg0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEU4QgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQoNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFOEICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABClAAAAAXAAEKDQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFOaAAIEU4QgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAEKXgABCl8AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABCg0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEU4QgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAQoNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBFOEICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEKDQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRThCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABCg0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEU4QgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQoNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFOEICAgIgEqAbwgIgAAI2QAAACEAAAAlAAEKrQAAAA4AAAAoAAEKrgAAACMAAADdAAEKrwABCe8AAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEKt18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEU3oClgDmAXIAAgAQIgRTt0wAAADoAAAA7AAAADgABCrkAAQrBAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAAEKwgABCsMAAQrEAAEKxQABCsYAAQrHAAEKyIEU7oEU74EU8IEU8YEU8oEU84EU9IBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAEKDgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgRTsCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwABCg4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEU7AgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAQoOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBFOwICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAJ4AAAAXAAEKDgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBEzKAAIEU7AgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQoOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFOwICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEKDgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRTsCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAPUQAAAAFwABCg4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRS1gACBFOwICAgIgEqAuggIgAAI0gAAADsAAAAOAAELNAAAATyhAAELNYEU9oBJ1wAAAA4AAAAlAAApPQAAACEAAAAoAAApPgAAACMAACk/AAAAFwAAAIIAAACCAAELPAAAAIcAAAAxgQiVgACBFMmBFMmBFPeBFPgST6ZNGd8QFAAAAN0AAQtAAAELQQABC0IAAQtDAAELRAABC0UAAAAhAAAADgABC0YAAAAlAAELRwAAACgAAQtIAAELSQABC0oAAQtLAAELTAABC00AAAAjAAAFIQAAAN4AAADeAAELUQAAACkAAADkAAAA3gAAABQAAADnAAAAKQAAAFUAAQtZAAELWgAAACkAAAApAAAA3gABC14AAQtfAAAA5AAAADFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgDmAOYEU+oAEgQO0gDmAAoEIk4AEgB6BGN2BFPmABIAEgDmBFQ+BGN6BA7QSaSmQGtMAAAA6AAAAOwAAAA4AAQtjAAELZQAAAKChAAAA8YA7oQABC2aBFPuAVdkAAAAhAAAAJQABC2kAAAAOAAAAKAABC2oAAAAjAAAA3QABC2sAAACHAAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABC3NfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFPiAO4A5gFyAAIAECIEU/NMAAAA6AAAAOwAAAA4AAQt1AAELfwAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQABC4AAAQuBAAELggABC4MAAQuEAAELhQABC4YAAQuHAAELiIEU/YEU/4EVAIEVBoEVB4EVCYEVCoEVDIEVDYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABC4wAAAAXAAELZgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBFP6AAIEU+wgICAiASoA+CAiAAAjSAAAAOwAAAA4AAQuaAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABC2YAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEU+wgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAELrQAAABcAAQtmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEVAYAAgRT7CAgICIBKgEAICIAACNIAAAA7AAAADgABC7sAAAE8oQABC7yBFQKASdIAAAA7AAAADgABC78AAAE8owABC8AAAQvBAAELwoEVA4EVBIEVBYBJXxAYcmF3T3duZWRJZGVudGl0eUlkZW50aXR5XW93bmVySWRlbnRpdHlbZ3JvdXBVaWRSYXffEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQtmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFPsICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABC9gAAAAXAAELZgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBFQiAAIEU+wgICAiASoBCCAiAAAjSAAAAOwAAAA4AAQvmAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwABC2YAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEU+wgICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEL+QAAABcAAQtmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIEVC4AAgRT7CAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AAQwHAAEMCAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAAELZgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgRT7CAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAQwbAAAAFwABC2YAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgRUOgACBFPsICAgIgEqARggIgAAIXxAVUGVyc2lzdGVkQ29udGFjdEdyb3Vw0wAAADoAAAA7AAAADgABDCoAAQw3AAAAoKwAAQwrAAEMLAABDC0AAQwuAAEMLwAAF40AAQwxAAEMMgABDDMAAQw0AAAXkgAAKjmBFRCBFRGBFRKBFROBFRSBAkmBFRWBFRaBFReBFRiBAk2BA9ysAAEMOAABDDkAAQw6AAEMOwABDDwAAQw9AAEMPgABDD8AAQxAAAEMQQABDEIAAQxDgRUZgRUwgRYfgReBgRevgRfGgRfdgRgLgRgigRg5gRhQgRhngFVdb3duZXJJZGVudGl0eV5wZW5kaW5nTWVtYmVyc18QFWRpc3BsYXllZENvbnRhY3RHcm91cF8QEHJhd093bmVkSWRlbnRpdHlbcmF3Q2F0ZWdvcnlfEBFjb250YWN0SWRlbnRpdGllc1lncm91cE5hbWVfEBhyYXdPd25lZElkZW50aXR5SWRlbnRpdHlbZ3JvdXBVaWRSYXffEBIAAAEiAAABIwAAASQAAQxPAAAAIQAAASYAAAEnAAEMUAAAACMAAAElAAEMUQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAhwAAAOwAAADsAAEMWQAAADEAAADsAAAA3gAAAOwAAAIGAAEMKwAAAOwAAADsAAEMYQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEU+AgIgRUbCIA5CICKgRUQCAiBFRoIElnWarbTAAAAOgAAADsAAAAOAAEMZQABDGgAAACgogAAAg8AAAIQgGSAZaIAAQxpAAEMaoEVHIEVJ4BV2QAAACEAAAAlAAEMbQAAAA4AAAAoAAEMbgAAACMAAADdAAEMbwABDDgAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEMd18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEVGYBkgDmAXIAAgAQIgRUd0wAAADoAAAA7AAAADgABDHkAAQyCAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAEMgwABDIQAAQyFAAEMhgABDIcAAQyIAAEMiQABDIqBFR6BFR+BFSCBFSKBFSOBFSSBFSWBFSaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABDGkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVHAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQxpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFRwICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABDKwAAAAXAAEMaQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFSGAAIEVHAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAEMugABDLsAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABDGkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVHAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQxpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFRwICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEMaQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRUcCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABDGkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVHAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQxpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFRwICAgIgEqAbwgIgAAI2QAAACEAAAAlAAENCQAAAA4AAAAoAAENCgAAACMAAADdAAENCwABDDgAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAENE18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEVGYBlgDmAXIAAgAQIgRUo0wAAADoAAAA7AAAADgABDRUAAQ0dAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAENHgABDR8AAQ0gAAENIQABDSIAAQ0jAAENJIEVKYEVKoEVK4EVLIEVLYEVLoEVL4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEMagAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRUnCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABDGoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVJwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQxqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBFScICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAEMagAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgRUnCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABDGoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVJwgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQxqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFScICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEMagAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRUnCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABDZAAAAAhAAABJgAAAScAAQ2RAAAAIwAAASUAAQ2SAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACHAAAA7AAAAOwAAQ2aAAAAMQAAAOwAAADeAAAA7AAABKIAAQwsAAAA7AAAAOwAAQ2iAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRT4CAiBFTIIgDkIgQLEgRURCAiBFTEIEpj92kvTAAAAOgAAADsAAAAOAAENpgABDakAAACgogAAAg8AAASsgGSApaIAAQ2qAAENq4EVM4EVPoBV2QAAACEAAAAlAAENrgAAAA4AAAAoAAENrwAAACMAAADdAAENsAABDDkAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAENuF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEVMIBkgDmAXIAAgAQIgRU00wAAADoAAAA7AAAADgABDboAAQ3DAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAENxAABDcUAAQ3GAAENxwABDcgAAQ3JAAENygABDcuBFTWBFTaBFTeBFTmBFTqBFTuBFTyBFT2AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABDaoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVMwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQ2qAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFTMICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABDe0AAAAXAAENqgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFTiAAIEVMwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAEN+wABDfwAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABDaoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVMwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQ2qAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFTMICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAENqgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRUzCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABDaoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVMwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQ2qAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFTMICAgIgEqAbwgIgAAI2QAAACEAAAAlAAEOSgAAAA4AAAAoAAEOSwAAACMAAADdAAEOTAABDDkAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEOVF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEVMIClgDmAXIAAgAQIgRU/0wAAADoAAAA7AAAADgABDlYAAQ5eAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAAEOXwABDmAAAQ5hAAEOYgABDmMAAQ5kAAEOZYEVQIEVQYEVQoEVQ4EWHIEWHYEWHoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAENqwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgRU+CAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwABDasAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBFT4ICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAENqwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgRU+CAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAB+AAAAFwABDasAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgRVEgACBFT4ICAgIgEqAtwgIgAAI3xAQAAEOpAABDqUAAQ6mAAEOpwAAACEAAQ6oAAEOqQAAACMAAQ6qAAEOqwAAAA4AAAAlAAEOrAABDq0AAAAoAAAA3QAAAN4AAQ6vAAAAKQAAACkAAAAUAAEOswAAAOQAAAAxAAAAKQAAAN4AAADnAAAATAAAAN4AAQ66AAEOuwAAAOxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAOYEVW4AEgASAAoEVRoEDtIAEgDmBCJOAFYA5gRYbgRVFCBJ48CDC0wAAADoAAAA7AAAADgABDr8AAQ7BAAAAoKEAAADxgDuhAAEOwoEVR4BV2QAAACEAAAAlAAEOxQAAAA4AAAAoAAEOxgAAACMAAADdAAEOxwAAAH4AAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEOz18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEVRIA7gDmAXIAAgAQIgRVI0wAAADoAAAA7AAAADgABDtEAAQ7bAAAAoKkAAAEEAAABBQAAAQYAAAEHAAABCAAAAQkAAAEKAAABCwAAAQyAPoA/gECAQYBCgEOARIBFgEapAAEO3AABDt0AAQ7eAAEO3wABDuAAAQ7hAAEO4gABDuMAAQ7kgRVJgRVLgRVMgRVSgRVTgRVVgRVWgRVYgRVZgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEO6AAAABcAAQ7CAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBAAAAOwAAADsAAAAFwAAAOyAAIEVSoAAgRVHCAgICIBKgD4ICIAACNIAAAA7AAAADgABDvYAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEOwgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQUAAADsAAAA7AAAABcAAADsgACAAIAAgRVHCAgICIBKgD8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAQ8JAAAAFwABDsIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgRVNgACBFUcICAgIgEqAQAgIgAAI0gAAADsAAAAOAAEPFwAAATyhAAEPGIEVToBJ0gAAADsAAAAOAAEPGwAAATykAAAK4wABDx0AAQ8eAAEPH4EBO4EVT4EVUIEVUYBJXxAYcmF3T3duZWRJZGVudGl0eUlkZW50aXR5XxAVcmF3R3JvdXBPd25lcklkZW50aXR5XnJhd0dyb3VwVWlkUmF33xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEOwgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRVHCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAQ81AAAAFwABDsIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRVUgACBFUcICAgIgEqAQggIgAAI0gAAADsAAAAOAAEPQwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQ7CAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFUcICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABD1YAAAAXAAEOwgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBFVeAAIEVRwgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAAEPZAABD2UAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwABDsIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEVRwgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEPeAAAABcAAQ7CAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEVWoAAgRVHCAgICIBKgEYICIAACF8QG1BlcnNpc3RlZFBlbmRpbmdHcm91cE1lbWJlctMAAAA6AAAAOwAAAA4AAQ+HAAEPkAAAAKCoAAEPiAABD4kAAQ+KAAEPiwABD4wAAQ+NAAAK4wABD4+BFVyBFV2BFV6BFV+BFWCBFWGBATuBFWKoAAEPkQABD5IAAQ+TAAEPlAABD5UAAQ+WAAEPlwABD5iBFWOBFXqBFZGBFaiBFb+BFdaBFe2BFgSAVVhkZWNsaW5lZF8QD2Z1bGxEaXNwbGF5TmFtZV8QHXNlcmlhbGl6ZWRJZGVudGl0eUNvcmVEZXRhaWxzXxAYcmF3T3duZWRJZGVudGl0eUlkZW50aXR5XxAPcmF3Q29udGFjdEdyb3VwXnJhd0dyb3VwVWlkUmF3XxAVcmF3R3JvdXBPd25lcklkZW50aXR53xASAAABIgAAASMAAAEkAAEPogAAACEAAAEmAAABJwABD6MAAAAjAAABJQABD6QAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH4AAADsAAAA7AABD6wAAAAxAAAA7AAAAN4AAADsAAACBgABD4gAAADsAAAA7AABD7QAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBFUQICIEVZQiAOQiAioEVXAgIgRVkCBL8p0xb0wAAADoAAAA7AAAADgABD7gAAQ+7AAAAoKIAAAIPAAACEIBkgGWiAAEPvAABD72BFWaBFXGAVdkAAAAhAAAAJQABD8AAAAAOAAAAKAABD8EAAAAjAAAA3QABD8IAAQ+RAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABD8pfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFWOAZIA5gFyAAIAECIEVZ9MAAAA6AAAAOwAAAA4AAQ/MAAEP1QAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABD9YAAQ/XAAEP2AABD9kAAQ/aAAEP2wABD9wAAQ/dgRVogRVpgRVqgRVsgRVtgRVugRVvgRVwgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQ+8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFWYICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEPvAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRVmCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAQ//AAAAFwABD7wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRVrgACBFWYICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABEA0AARAOAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQ+8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFWYICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEPvAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRVmCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABD7wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVZggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQ+8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFWYICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEPvAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRVmCAgICIBKgG8ICIAACNkAAAAhAAAAJQABEFwAAAAOAAAAKAABEF0AAAAjAAAA3QABEF4AAQ+RAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABEGZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFWOAZYA5gFyAAIAECIEVctMAAAA6AAAAOwAAAA4AARBoAAEQcAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABEHEAARByAAEQcwABEHQAARB1AAEQdgABEHeBFXOBFXSBFXWBFXaBFXeBFXiBFXmAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABD70AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVcQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQ+9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBFXEICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEPvQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRVxCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwABD70AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEVcQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQ+9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFXEICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEPvQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRVxCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABD70AAADsAAAA7AAAAOwAAAA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BEkIAAAAOAAAAKAABEkMAAAAjAAAA3QABEkQAAQ+TAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABEkxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFZGAZIA5gFyAAIAECIEVldMAAAA6AAAAOwAAAA4AARJOAAESVwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABElgAARJZAAESWgABElsAARJcAAESXQABEl4AARJfgRWWgRWXgRWYgRWagRWbgRWcgRWdgRWegFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARI+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFZQICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAESPgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRWUCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAARKBAAAAFwABEj4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRWZgACBFZQICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABEo8AARKQAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARI+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFZQICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAESPgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRWUCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABEj4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVlAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARI+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFZQICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAESPgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRWUCAgICIBKgG8ICIAACNkAAAAhAAAAJQABEt4AAAAOAAAAKAABEt8AAAAjAAAA3QABEuAAAQ+TAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABEuhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFZGAZYA5gFyAAIAECIEVoNMAAAA6AAAAOwAAAA4AARLqAAES8gAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABEvMAARL0AAES9QABEvY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AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVqwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARN/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFasICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABE8IAAAAXAAETfwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFbCAAIEVqwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAET0AABE9EAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABE38AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVqwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARN/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFasICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAETfwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRWrCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABE38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dgRXfgRXggRXhgRXigRXjgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARYBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFdkICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEWAQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRXZCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAARZEAAAAFwABFgEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRXegACBFdkICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABFlIAARZTAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARYBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFdkICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEWAQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRXZCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABFgEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEV2QgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARYBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFdkICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEWAQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRXZCAgICIBKgG8ICIAACNkAAAAhAAAAJQABFqEAAAAOAAAAKAABFqIAAAAjAAAA3QABFqMAAQ+WAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABFqtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFdaAZYA5gFyAAIAECIEV5dMAAAA6AAAAOwAAAA4AARatAAEWtQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABFrYAARa3AAEWuAABFrkAARa6AAEWuwABFryBFeaBFeeBFeiBFemBFeqBFeuBFeyAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABFgIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEV5AgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARYCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBFeQICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEWAgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRXkCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABFgIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEV5AgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARYCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFeQICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEWAgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRXkCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABFgIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEV5AgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAARcoAAAAIQAAASYAAAEnAAEXKQAAACMAAAElAAEXKgAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfgAAAOwAAADsAAEXMgAAADEAAADsAAAA3gAAAOwAAAIGAAAK4wAAAOwAAADsAAEXOgAAAOxfECBYREJ1Y2t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AAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAARidAAEYngABGJ8AARigAAEYoQABGKIAARijAAEYpIEWCYEWCoEWC4EWDYEWDoEWD4EWEIEWEYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEYgwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRYHCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABGIMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWBwgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEYxgAAABcAARiDAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEWDIAAgRYHCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AARjUAAEY1QAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEYgwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRYHCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABGIMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWBwgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARiDAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFgcICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEYgwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRYHCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABGIMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWBwgICAiASoBvCAiAAAjZAAAAIQAAACUAARkjAAAADgAAACgAARkkAAAAIwAAAN0AARklAAEPmAAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAARktXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRYEgGWAOYBcgACABAiBFhPTAAAAOgAAADsAAAAOAAEZLwABGTcAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAARk4AAEZOQABGToAARk7AAEZPAABGT0AARk+gRYUgRYVgRYWgRYXgRYYgRYZgRYagFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARiEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFhIICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEYhAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRYSCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABGIQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWEggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAARiEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBFhIICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEYhAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRYSCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABGIQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWEggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARiEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFhIICAgIgEqAgQgIgAAI0gAAADsAAAAOAAEZqgAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAQ2rAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBFT4ICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAENqwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRU+CAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAQ+VAAAAFwABDasAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRW/gACBFT4ICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAEZ2gAAACEAAAEmAAABJwABGdsAAAAjAAABJQABGdwAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIcAAADsAAAA7AABGeQAAAAxAAAA7AAAAN4AAADsAAAEogABDC0AAADsAAAA7AABGewAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBFPgICIEWIQiAOQiBAsSBFRIICIEWIAgSjQy1hNMAAAA6AAAAOwAAAA4AARnwAAEZ8wAAAKCiAAACDwAABKyAZIClogABGfQAARn1gRYigRYtgFXZAAAAIQAAACUAARn4AAAADgAAACgAARn5AAAAIwAAAN0AARn6AAEMOgAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAARoCXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRYfgGSAOYBcgACABAiBFiPTAAAAOgAAADsAAAAOAAEaBAABGg0AAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAARoOAAEaDwABGhAAARoRAAEaEgABGhMAARoUAAEaFYEWJIEWJYEWJoEWKIEWKYEWKoEWK4EWLIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEZ9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRYiCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABGfQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWIggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEaNwAAABcAARn0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEWJ4AAgRYiCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AARpFAAEaRgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEZ9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRYiCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwABGfQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEWIggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARn0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFiIICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEZ9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRYiCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABGfQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWIggICAiASoBvCAiAAAjZAAAAIQAAACUAARqUAAAADgAAACgAARqVAAAAIwAAAN0AARqWAAEMOgAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAARqeXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRYfgKWAOYBcgACABAiBFi7TAAAAOgAAADsAAAAOAAEaoAABGqgAAACgpwAABV0AAAVeAAAFXwAABWAAAAVhAAAFYgAABWOAtIC1gLaAt4C4gLmAuqcAARqpAAEaqgABGqsAARqsAAEarQABGq4AARqvgRYvgRYwgRYxgRYygRd+gRd/gReAgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAARn1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBFi0ICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAACjwAAAAXAAEZ9QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACBASyAAIEWLQgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAARn1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBFi0ICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAIMAAAAXAAEZ9QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBFjOAAIEWLQgICAiASoC3CAiAAAjfEBAAARruAAEa7wABGvAAARrxAAAAIQABGvIAARrzAAAAIwABGvQAARr1AAAADgAAACUAARr2AAEa9wAAACgAAADdAAAA3gABGvkAAAApAAAAKQAAABQAARr9AAAA5AAAADEAAAApAAAA3gAAAOcAAABRAAAA3gABGwQAARsFAAAA7F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYA5gRZGgASABIACgRY1gQO0gASAOYEIk4AagDmBF32BFjQIEwAAAAEcIAnH0wAAADoAAAA7AAAADgABGwkAARsLAAAAoKEAAADxgDuhAAEbDIEWNoBV2QAAACEAAAAlAAEbDwAAAA4AAAAoAAEbEAAAACMAAADdAAEbEQAAAIMAAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEbGV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEWM4A7gDmAXIAAgAQIgRY30wAAADoAAAA7AAAADgABGxsAARslAAAAoKkAAAEEAAABBQAAAQYAAAEHAAABCAAAAQkAAAEKAAABCwAAAQyAPoA/gECAQYBCgEOARIBFgEapAAEbJgABGycAARsoAAEbKQABGyoAARsrAAEbLAABGy0AARsugRY4gRY6gRY7gRY9gRY+gRZAgRZBgRZDgRZEgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEbMgAAABcAARsMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBAAAAOwAAADsAAAAFwAAAOyAAIEWOYAAgRY2CAgICIBKgD4ICIAACNIAAAA7AAAADgABG0AAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEbDAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQUAAADsAAAA7AAAABcAAADsgACAAIAAgRY2CAgICIBKgD8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAARtTAAAAFwABGwwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgRY8gACBFjYICAgIgEqAQAgIgAAI0gAAADsAAAAOAAEbYQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARsMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFjYICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABG3QAAAAXAAEbDAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBFj+AAIEWNggICAiASoBCCAiAAAjSAAAAOwAAAA4AARuCAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABGwwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWNggICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEblQAAABcAARsMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIEWQoAAgRY2CAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AARujAAEbpAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAAEbDAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgRY2CAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAARu3AAAAFwABGwwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgRZFgACBFjYICAgIgEqARggIgAAIXxAVRGlzcGxheWVkQ29udGFjdEdyb3Vw0wAAADoAAAA7AAAADgABG8YAARvTAAAAoKwAARvHAAEbyAABG8kAARvKAAEbywABG8wAARvNAACwLAABG88AARvQAAEb0QAAF5KBFkeBFkiBFkmBFkqBFkuBFkyBFk2BDiCBFk6BFk+BFlCBAk2sAAEb1AABG9UAARvWAAEb1wABG9gAARvZAAEb2gABG9sAARvcAAEb3QABG94AARvfgRZRgRZ/gRaWgRatgRbEgRbbgRbygRcJgRcggRc3gRdOgRdlgFVXZ3JvdXBWMl8QEHVwZGF0ZUluUHJvZ3Jlc3NYc3VidGl0bGVbc2VjdGlvbk5hbWVdcGVybWFuZW50VVVJRF8QGXJhd1B1Ymxpc2hlZERldGFpbHNTdGF0dXNXZ3JvdXBWMV8QEm93blBlcm1pc3Npb25BZG1pbl8QE25vcm1hbGl6ZWRTZWFyY2hLZXlfEBFub3JtYWxpemVkU29ydEtled8QEgAAASIAAAEjAAABJAABG+wAAAAhAAABJgAAAScAARvtAAAAIwAAASUAARvuAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACDAAAA7AAAAOwAARv2AAAAMQAAAOwAAADeAAAA7AAABKIAARvHAAAA7AAAAOwAARv+AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRYzCAiBFlMIgDkIgQLEgRZHCAiBFlIIEwAAAAEZjRHJ0wAAADoAAAA7AAAADgABHAIAARwFAAAAoKIAAAIPAAAErIBkgKWiAAEcBgABHAeBFlSBFl+AVdkAAAAhAAAAJQABHAoAAAAOAAAAKAABHAsAAAAjAAAA3QABHAwAARvUAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABHBRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFlGAZIA5gFyAAIAECIEWVdMAAAA6AAAAOwAAAA4AARwWAAEcHwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABHCAAARwhAAEcIgABHCMAARwkAAEcJQABHCYAARwngRZWgRZXgRZYgRZagRZbgRZcgRZdgRZegFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARwGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFlQICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEcBgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRZUCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAARxJAAAAFwABHAYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRZZgACBFlQICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABHFcAARxYAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARwGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFlQICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAEcBgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRZUCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABHAYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWVAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARwGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFlQICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEcBgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRZUCAgICIBKgG8ICIAACNkAAAAhAAAAJQABHKYAAAAOAAAAKAABHKcAAAAjAAAA3QABHKgAARvUAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABHLBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFlGApYA5gFyAAIAECIEWYNMAAAA6AAAAOwAAAA4AARyyAAEcugAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwABHLsAARy8AAEcvQABHL4AARy/AAEcwAABHMGBFmGBFmKBFmOBFmSBFmWBFmaBFmeAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABHAcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEWXwgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAARwHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBFl8ICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAEcBwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgRZfCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAB8AAAAFwABHAcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgMGAAIEWXwgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARwHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFl8ICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEcBwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRZfCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAauAAAAFwABHAcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRZogACBFl8ICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAEdLQAAACEAAAEmAAABJwABHS4AAAAjAAABJQABHS8AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHwAAADsAAAA7AABHTcAAAAxAAAA7AAAAN4AAADsAAAEogAABpkAAADsAAAA7AABHT8AAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAwQgIgRZqCIA5CIECxIDeCAiBFmkIEkAjtFvTAAAAOgAAADsAAAAOAAEdQwABHUYAAACgogAAAg8AAASsgGSApaIAAR1HAAEdSIEWa4EWdoBV2QAAACEAAAAlAAEdSwAAAA4AAAAoAAEdTAAAACMAAADdAAEdTQAABq4AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEdVV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEWaIBkgDmAXIAAgAQIgRZs0wAAADoAAAA7AAAADgABHVcAAR1gAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAEdYQABHWIAAR1jAAEdZAABHWUAAR1mAAEdZwABHWiBFm2BFm6BFm+BFnGBFnKBFnOBFnSBFnWAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABHUcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWawgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAR1HAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFmsICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABHYoAAAAXAAEdRwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFnCAAIEWawgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAEdmAABHZkAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABHUcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWawgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAR1HAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBFmsICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEdRwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRZrCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABHUcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWawgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAA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XAAABjgAAABcAAR/JAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFpkICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEfyQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRaZCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAASAMAAAAFwABH8kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRaegACBFpkICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABIBoAASAbAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAR/JAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFpkICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAEfyQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRaZCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABH8kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWmQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAR/JAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFpkICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEfyQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRaZCAgICIBKgG8ICIAACNkAAAAhAAAAJQABIGkAAAAOAAAAKAABIGoAAAAjAAAA3QABIGsAARvWAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABIHNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFpaAZYA5gFyAAIAECIEWpdMAAAA6AAAAOwAAAA4AASB1AAEgfQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABIH4AASB/AAEggAABIIEAASCCAAEggwABIISBFqaBFqeBFqiBFqmBFqqBFquBFqyAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABH8oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWpAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAR/KAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBFqQICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEfygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRakCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABH8oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBFqQICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEfygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRakCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABH8oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWpAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAR/KAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFqQICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAEg8AAAACEAAAEmAAABJwABIPEAAAAjAAABJQABIPIAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIMAAADsAAAA7AABIPoAAAAxAAAA7AAAAN4AAADsAAACBgABG8oAAADsAAAA7AABIQIAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXN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0ZXNzdG9yYWdlgRatgGWAOYBcgACABAiBFrzTAAAAOgAAADsAAAAOAAEhtgABIb4AAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAASG/AAEhwAABIcEAASHCAAEhwwABIcQAASHFgRa9gRa+gRa/gRbAgRbBgRbCgRbDgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASELAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFrsICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEhCwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRa7CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABIQsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWuwgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAASELAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgRa7CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABIQsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWuwgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASELAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFrsICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEhCwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRa7CAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABIjEAAAAhAAABJgAAAScAASIyAAAAIwAAASUAASIzAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACDAAAA7AAAAOwAASI7AAAAMQAAAOwAAADeAAAA7AAAAgYAARvLAAAA7AAAAOwAASJDAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRYzCAiBFsYIgDkIgIqBFksICIEWxQgS5iDgytMAAAA6AAAAOwAAAA4AASJHAAEiSgAAAKCiAAACDwAAAhCAZIBlogABIksAASJMgRbHgRbSgFXZAAAAIQAAACUAASJPAAAADgAAACgAASJQAAAAIwAAAN0AASJRAAEb2AAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAASJZXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRbEgGSAOYBcgACABAiBFsjTAAAAOgAAADsAAAAOAAEiWwABImQAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAASJlAAEiZgABImcAASJoAAEiaQABImoAASJrAAEibIEWyYEWyoEWy4EWzYEWzoEWz4EW0IEW0YBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEiSwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRbHCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABIksAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWxwgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEijgAAABcAASJLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEWzIAAgRbHCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AASKcAAEinQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEiSwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRbHCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABIksAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWxwgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASJLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFscICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEiSwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRbHCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABIksAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWxwgICAiASoBvCAiAAAjZAAAAIQAAACUAASLrAAAADgAAACgAASLsAAAAIwAAAN0AASLtAAEb2AAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAASL1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRbEgGWAOYBcgACABAiBFtPTAAAAOgAAADsAAAAOAAEi9wABIv8AAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAASMAAAEjAQABIwIAASMDAAEjBAABIwUAASMGgRbUgRbVgRbWgRbXgRbYgRbZgRbagFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASJMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFtIICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEiTAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRbSCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABIkwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEW0ggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAwdAAAABcAASJMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEEUYAAgRbSCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABIkwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEW0ggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASJMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFtIICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEiTAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRbSCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABI3IAAAAhAAABJgAAAScAASNzAAAAIwAAASUAASN0AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACDAAAA7AAAAOwAASN8AAAAMQAAAOwAAADeAAAA7AAAAgYAARvMAAAA7AAAAOwAASOEAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRYzCAiBFt0IgDkIgIqBFkwICIEW3AgSbQOM+dMAAAA6AAAAOwAAAA4AASOIAAEjiwAAAKCiAAACDwAAAhCAZIBlogABI4wAASONgRbegRbpgFXZAAAAIQAAACUAASOQAAAADgAAACgAASORAAAAIwAAAN0AASOSAAEb2QAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAASOaXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRbbgGSAOYBcgACABAiBFt/TAAAAOgAAADsAAAAOAAEjnAABI6UAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAASOmAAEjpwABI6gAASOpAAEjqgABI6sAASOsAAEjrYEW4IEW4YEW4oEW5IEW5YEW5oEW54EW6IBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEjjAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRbeCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABI4wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEW3ggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEjzwAAABcAASOMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEW44AAgRbeCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AASPdAAEj3gAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEjjAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRbeCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABI4wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEW3ggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASOMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFt4ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEjjAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRbeCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABI4wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEW3ggICAiASoBvCAiAAAjZAAAAIQAAACUAASQsAAAADgAAACgAASQtAAAAIwAAAN0AASQuAAEb2QAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAASQ2XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRbbgGWAOYBcgACABAiBFurTAAAAOgAAADsAAAAOAAEkOAABJEAAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAASRBAAEkQgABJEMAASREAAEkRQABJEYAASRHgRbrgRbsgRbtgRbugRbvgRbwgRbxgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAozwAAABcAASONAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIEDrYAAgRbpCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABI40AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEW6QgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASONAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBFukICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAJnkAAAAXAAEjjQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBA4GAAIEW6QgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASONAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFukICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEjjQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRbpCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABI40AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEW6QgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAASSzAAAAIQAAASYAAAEnAAEktAAAACMAAAElAAEktQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAgwAAAOwAAADsAAEkvQAAADEAAADsAAAA3gAAAOwAAASiAAEbzQAAAOwAAADsAAEkxQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEWMwgIgRb0CIA5CIECxIEWTQgIgRbzCBMAAAABGjIR5NMAAAA6AAAAOwAAAA4AASTJAAEkzAAAAKCiAAACDwAABKyAZIClogABJM0AASTOgRb1gRcAgFXZAAAAIQAAACUAASTRAAAADgAAACgAASTSAAAAIwAAAN0AASTTAAEb2gAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAASTbXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRbygGSAOYBcgACABAiBFvbTAAAAOgAAADsAAAAOAAEk3QABJOYAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAASTnAAEk6AABJOkAASTqAAEk6wABJOwAASTtAAEk7oEW94EW+IEW+YEW+4EW/IEW/YEW/oEW/4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEkzQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRb1CAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABJM0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEW9QgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAElEAAAABcAASTNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEW+oAAgRb1CAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AASUeAAElHwAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEkzQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRb1CAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwABJM0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEW9QgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASTNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFvUICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEkzQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRb1CAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABJM0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEW9QgICAiASoBvCAiAAAjZAAAAIQAAACUAASVtAAAADgAAACgAASVuAAAAIwAAAN0AASVvAAEb2gAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAASV3XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRbygKWAOYBcgACABAiBFwHTAAAAOgAAADsAAAAOAAEleQABJYEAAACgpwAABV0AAAVeAAAFXwAABWAAAAVhAAAFYgAABWOAtIC1gLaAt4C4gLmAuqcAASWCAAElgwABJYQAASWFAAElhgABJYcAASWIgRcCgRcDgRcEgRcFgRcGgRcHgRcIgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAASTOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBFwAICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAEkzgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACAvoAAgRcACAgICIBKgLUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwABJM4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVfAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEXAAgICAiASoC2CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAhwAAABcAASTOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYAAAAOwAAADsAAAAFwAAAOyAAIEU+IAAgRcACAgICIBKgLcICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABJM4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVhAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXAAgICAiASoC4CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASTOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFwAICAgIgEqAuQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABDDoAAAAXAAEkzgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWMAAADsAAAA7AAAABcAAADsgACBFh+AAIEXAAgICAiASoC6CAiAAAjfEBIAAAEiAAABIwAAASQAASX0AAAAIQAAASYAAAEnAAEl9QAAACMAAAElAAEl9gAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAgwAAAOwAAADsAAEl/gAAADEAAADsAAAA3gAAAOwAAAIGAACwLAAAAOwAAADsAAEmBgAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEWMwgIgRcLCIA5CICKgQ4gCAiBFwoIEsTjrWDTAAAAOgAAADsAAAAOAAEmCgABJg0AAACgogAAAg8AAAIQgGSAZaIAASYOAAEmD4EXDIEXF4BV2QAAACEAAAAlAAEmEgAAAA4AAAAoAAEmEwAAACMAAADdAAEmFAABG9sAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEmHF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEXCYBkgDmAXIAAgAQIgRcN0wAAADoAAAA7AAAADgABJh4AASYnAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAEmKAABJikAASYqAAEmKwABJiwAASYtAAEmLgABJi+BFw6BFw+BFxCBFxKBFxOBFxSBFxWBFxaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABJg4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXDAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASYOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFwwICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABJlEAAAAXAAEmDgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFxGAAIEXDAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAEmXwABJmAAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABJg4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXDAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAASYOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBFwwICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEmDgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRcMCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABJg4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXDAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASYOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwA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BJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASiQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFzoICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABKNMAAAAXAAEokAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFz+AAIEXOggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAEo4QABKOIAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABKJAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXOggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASiQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFzoICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEokAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRc6CAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABKJAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXOggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAA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AASqIAAEqiQABKooAASqLAAEqjIEXXoEXX4EXYIEXYYEXYoEXY4EXZIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEp0gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRdcCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABKdIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXXAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASnSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBF1wICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAEp0gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEXXAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASnSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBF1wICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEp0gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRdcCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABKdIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXXAgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAASr4AAAAIQAAASYAAAEnAAEq+QAAACMAAAElAAEq+gAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAgwAAAOwAAADsAAErAgAAADEAAADsAAAA3gAAAOwAAAIGAAAXkgAAAOwAAADsAAErCgAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEWMwgIgRdnCIA5CICKgQJNCAiBF2YIEotIa3rTAAAAOgAAADsAAAAOAAErDgABKxEAAACgogAAAg8AAAIQgGSAZaIAASsSAAErE4EXaIEXc4BV2QAAACEAAAAlAAErFgAAAA4AAAAoAAErFwAAACMAAADdAAErGAABG98AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAErIF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEXZYBkgDmAXIAAgAQIgRdp0wAAADoAAAA7AAAADgABKyIAASsrAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAErLAABKy0AASsuAAErLwABKzAAASsxAAErMgABKzOBF2qBF2uBF2yBF26BF2+BF3CBF3GBF3KAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABKxIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXaAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASsSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBF2gICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABK1UAAAAXAAErEgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBF22AAIEXaAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAErYwABK2QAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABKxIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXaAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAASsSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBF2gICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAErEgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRdoCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABKxIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXaAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASsSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBF2gICAgIgEqAbwgIgAAI2QAAACEAAAAlAAErsgAAAA4AAAAoAAErswAAACMAAADdAAErtAABG98AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAErvF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEXZYBlgDmAXIAAgAQIgRd00wAAADoAAAA7AAAADgABK74AASvGAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAErxwABK8gAASvJAAErygABK8sAASvMAAErzYEXdYEXdoEXd4EXeIEXeoEXe4EXfIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAErEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRdzCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABKxMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXcwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASsTAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBF3MICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABK/4AAAAXAAErEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBF3mAAIEXcwgICAiASoB+CAiAAAgRBLDfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASsTAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBF3MICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAErEwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRdzCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABKxMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXcwgICAiASoCBCAiAAAjSAAAAOwAAAA4AASw6AAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABGfUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVhAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWLQgICAiASoC4CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARn1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFi0ICAgIgEqAuQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABG9oAAAAXAAEZ9QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWMAAADsAAAA7AAAABcAAADsgACBFvKAAIEWLQgICAiASoC6CAiAAAjfEBIAAAEiAAABIwAAASQAASxqAAAAIQAAASYAAAEnAAEsawAAACMAAAElAAEsbAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAhwAAAOwAAADsAAEsdAAAADEAAADsAAAA3gAAAOwAAASiAAEMLgAAAOwAAADsAAEsfAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEU+AgIgReDCIA5CIECxIEVEwgIgReCCBJScTVT0wAAADoAAAA7AAAADgABLIAAASyDAAAAoKIAAAIPAAAErIBkgKWiAAEshAABLIWBF4SBF4+AVdkAAAAhAAAAJQABLIgAAAAOAAAAKAABLIkAAAAjAAAA3QABLIoAAQw7AAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABLJJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBF4GAZIA5gFyAAIAECIEXhdMAAAA6AAAAOwAAAA4AASyUAAEsnQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABLJ4AASyfAAEsoAABLKEAASyiAAEsowABLKQAASylgReGgReHgReIgReKgReLgReMgReNgReOgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASyEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBF4QICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEshAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgReECAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAASzHAAAAFwABLIQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgReJgACBF4QICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABLNUAASzWAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASyEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBF4QICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAEshAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgReECAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABLIQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXhAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASyEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBF4QICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEshAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgReECAgICIBKgG8ICIAACNkAAAAhAAAAJQABLSQAAAAOAAAAKAABLSUAAAAjAAAA3QABLSYAAQw7AAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABLS5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBF4GApYA5gFyAAIAECIEXkNMAAAA6AAAAOwAAAA4AAS0wAAEtOAAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwABLTkAAS06AAEtOwABLTwAAS09AAEtPgABLT+BF5GBF5KBF5OBF5SBF5WBF5aBF5eAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABLIUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEXjwgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAASyFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBF48ICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAEshQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgRePCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACeAAAAFwABLIUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgRMygACBF48ICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEshQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgRePCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABLIUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXjwgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAD1FQAAABcAASyFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEXmIAAgRePCAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAABLasAAAAhAAABJgAAAScAAS2sAAAAIwAAASUAAS2tAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACeAAAA7AAAAOwAAS21AAAAMQAAAOwAAADeAAAA7AAABKIAAPT8AAAA7AAAAOwAAS29AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxA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yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEXmIClgDmAXIAAgAQIgRen0wAAADoAAAA7AAAADgABLnEAAS55AAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAAEuegABLnsAAS58AAEufQABLn4AAS5/AAEugIEXqIEXqYEXqoEXq4EXrIEXrYEXroBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAEtxgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgRemCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwABLcYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBF6YICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAEtxgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgRemCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACHAAAAFwABLcYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgRT4gACBF6YICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAEtxgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABc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vZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRfdgGSAOYBcgACABAiBF+HTAAAAOgAAADsAAAAOAAExmAABMaEAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAATGiAAExowABMaQAATGlAAExpgABMacAATGoAAExqYEX4oEX44EX5IEX5oEX54EX6IEX6YEX6oBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAExiAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRfgCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABMYgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEX4AgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAExywAAABcAATGIAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEX5YAAgRfgCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AATHZAAEx2gAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAExiAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRfgCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABMYgAAADsAAAA7AAAAOwAAAAxAAAA7AA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AFwAAABcAAAAXAAEyyQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRf3CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAATMMAAAAFwABMskAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRf8gACBF/cICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABMxoAATMbAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATLJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBF/cICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEyyQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRf3CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABMskAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEX9wgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATLJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBF/cICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAA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A7AAAABcAAADsgACAUoAAgRglCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABNUsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYJQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAE1jgAAABcAATVLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEYKoAAgRglCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AATWcAAE1nQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE1SwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRglCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABNUsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYJQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATVLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBGCUICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE1SwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRglCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABNUsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYJQgICAiASoBvCAiAAAjZAAAAIQAAACUAATXrAAAADgAAACgAATXsAAAAIwAAAN0AATXtAAEMQAAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAATX1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRgigGWAOYBcgACABAiBGDHTAAAAOgAAADsAAAAOAAE19wABNf8AAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAATYAAAE2AQABNgIAATYDAAE2BAABNgUAATYGgRgygRgzgRg0gRg1gRg2gRg3gRg4gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATVMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGDAICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE1TAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRgwCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABNUwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYMAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAATVMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBGDAICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE1TAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRgwCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABNUwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYMAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATVMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGDAICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAE2cgAAACEAAAEmAAABJwABNnMAAAAjAAABJQABNnQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIcAAADsAAAA7AABNnwAAAAxAAAA7AAAAN4AAADsAAACBgABDDQAAADsAAAA7AABNoQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBFPgICIEYOwiAOQiAioEVGAgIgRg6CBJVALSU0wAAADoAAAA7AAAADgABNogAATaLAAAAoKIAAAIPAAACEIBkgGWiAAE2jAABNo2BGDyBGEeAVdkAAAAhAAAAJQABNpAAAAAOAAAAKAABNpEAAAAjAAAA3QABNpIAAQxBAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABNppfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGDmAZIA5gFyAAIAECIEYPdMAAAA6AAAAOwAAAA4AATacAAE2pQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABNqYAATanAAE2qAABNqkAATaqAAE2qwABNqwAATatgRg+gRg/gRhAgRhCgRhDgRhEgRhFgRhGgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATaMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGDwICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE2jAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRg8CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAATbPAAAAFwABNowAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRhBgACBGDwICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABNt0AATbeAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASk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AAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABN80AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYUwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATfNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBGFMICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABOBAAAAAXAAE3zQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBGFiAAIEYUwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAE4HgABOB8AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABN80AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYUwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAATfNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBGFMICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE3zQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRhTCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABN80AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYUwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATfNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGFMICAgIgEqAbwgIgAAI2QAAACEAAAAlAAE4bQAAAA4AAAAoAAE4bgAAACMAAADdAAE4bwABDEIAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAE4d18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEYUIBlgDmAXIAAgAQIgRhf0wAAADoAAAA7AAAADgABOHkAATiBAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAE4ggABOIMAATiEAAE4hQABOIYAATiHAAE4iIEYYIEYYYEYYoEYY4EYZIEYZYEYZoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE3zgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRheCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABN84AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYXggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATfOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBGF4ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABK/4AAAAXAAE3zgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBF3mAAIEYXggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATfOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGF4ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE3zgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRheCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABN84AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYXggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAATj0AAAAIQAAASYAAAEnAAE49QAAACMAAAElAAE49gAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAhwAAAOwAAADsAAE4/gAAADEAAADsAAAA3gAAAOwAAASiAAAqOQAAAOwAAADsAAE5BgAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V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AAQQAAADsAAAA7AAAABcAAADsgACBGIGAAIEYfggICAiASoA+CAiAAAjSAAAAOwAAAA4AATpaAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABOiYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYfggICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAE6bQAAABcAATomAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEYhIAAgRh+CAgICIBKgEAICIAACNIAAAA7AAAADgABOnsAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE6JgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRh+CAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAATqOAAAAFwABOiYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRiHgACBGH4ICAgIgEqAQggIgAAI0gAAADsAAAAOAAE6nAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATomAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGH4ICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABOq8AAAAXAAE6JgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBGIqAAIEYfggICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAAE6vQABOr4AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwABOiYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEYfggICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAE60QAAABcAATomAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEYjYAAgRh+CAgICIBKgEYICIAACF8QGFBlcnNpc3RlZEdyb3VwRGlzY3Vzc2lvbtMAAAA6AAAAOwAAAA4AATrgAAE65AAAAKCjAAE64QABOuIAATrjgRiPgRiQgRiRowABOuUAATrmAAE654EYkoEYqYEYwIBVW3Jhd0dyb3VwVUlEXxAYcmF3T3duZXJJZGVudGl0eUlkZW50aXR5XxAPcmF3Q29udGFjdEdyb3Vw3xASAAABIgAAASMAAAEkAAE67QAAACEAAAEmAAABJwABOu4AAAAjAAABJQABOu8AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJwAAADsAAAA7AABOvcAAAAxAAAA7AAAAN4AAADsAAACBgABOuEAAADsAAAA7AABOv8AAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBGHsICIEYlAiAOQiAioEYjwgIgRiTCBJ5nSf30wAAADoAAAA7AAAADgABOwMAATsGAAAAoKIAAAIPAAACEIBkgGWiAAE7BwABOwiBGJWBGKCAVdkAAAAhAAAAJQABOwsAAAAOAAAAKAABOwwAAAAjAAAA3QABOw0AATrlAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABOxVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGJKAZIA5gFyAAIAECIEYltMAAAA6AAAAOwAAAA4AATsXAAE7IAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABOyEAATsiAAE7IwABOyQAATslAAE7JgABOycAATsogRiXgRiYgRiZgRibgRicgRidgRiegRifgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATsHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGJUICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE7BwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRiVCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAATtKAAAAFwABOwcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRiagACBGJUICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABO1gAATtZAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATsHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGJUICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAE7BwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRiVCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABOwcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYlQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATsHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGJUICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE7BwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRiVCAgICIBKgG8ICIAACNkAAAAhAAAAJQABO6cAAAAOAAAAKAABO6gAAAAjAAAA3QABO6kAATrlAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABO7FfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGJKAZYA5gFyAAIAECIEYodMAAAA6AAAAOwAAAA4AATuzAAE7uwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABO7wAATu9AAE7vgABO78AATvAAAE7wQABO8KBGKKBGKOBGKSBGKWBGKaBGKeBGKiAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABOwgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYoAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATsIAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBGKAICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE7CAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRigCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABOwgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEYoAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATsIAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGKAICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE7CAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRigCAgICIBKgIAICIA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xAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBGRsICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAFBOAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgRkbCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACXAAAAFwABQTgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgRjggACBGRsICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFBOAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAroAAgRkbCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABQTgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZGwgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAE/1QAAABcAAUE4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEY9oAAgRkbCAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAABQl4AAAAhAAABJgAAAScAAUJfAAAAIwAAASUAAUJgAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACXAAAA7AAAAOwAAUJoAAAAMQAAAOwAAADeAAA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IgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFDugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRlJCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABQ7oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZSQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAAUO6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgRlJCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABQ7oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZSQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUO6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBGUkICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFDugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRlJCAgICIBKgIEICIAACNIAAAA7AAAADgABROAAAAE8oQABPu2BGN+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AAUUtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGWUICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFFLQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRllCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABRS0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZZQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAUUtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBGWUICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFFLQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRllCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABRS0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZZQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUUtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGWUICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAFGUwAAACEAAAEmAAABJwABRlQAAAAjAAABJQABRlUAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJ4AAADsAAAA7AABRl0AAAAxAAAA7AAAAN4AAADsAAACBgAA9PkAAADsAAAA7AABRmUAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEzIICIEZcAiAOQiAioETVggIgRlvCBLV2HK00wAAADoAAAA7AAAADgABRmkAAUZsAAAAoKIAAAIPAAACEIBkgGWiAAFGbQABRm6BGXGBGXyAVdkAAAAhAAAAJQABRnEAAAAOAAAAKAABRnIAAAAjAAAA3QABRnMAAPUSAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABRntfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGW6AZIA5gFyAAIAECIEZctMAAAA6AAAAOwAAAA4AAUZ9AAFGhgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABRocAAUaIAAFGiQABRooAAUaLAAFGjAABRo0AAUaOgRlzgRl0gRl1gRl3gRl4gRl5gRl6gRl7gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUZtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGXEICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFGbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRlxCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAUawAAAAFwABRm0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRl2gACBGXEICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABRr4AAUa/AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUZtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGXEICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFGbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRlxCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABRm0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZcQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUZtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGXEICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgA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0ZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIVhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zc3RvcmFnZV8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zZHVwbGljYXRlcwiAOYA5gRmbgASBA7SAOYACgQiTgASAJIEaPIEZmoAEgASAOYEZrIEaPYEDtBMAAAABCry8ItMAAAA6AAAAOwAAAA4AAUjLAAFIzQAAAKChAAAA8YA7oQABSM6BGZyAVdkAAAAhAAAAJQABSNEAAAAOAAAAKAABSNIAAAAjAAAA3QABSNMAAACNAAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABSNtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGZmAO4A5gFyAAIAECIEZndMAAAA6AAAAOwAAAA4AAUjdAAFI5wAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQABSOgAAUjpAAFI6gABSOsAAUjsAAFI7QABSO4AAUjvAAFI8IEZnoEZoIEZoYEZo4EZpIEZpoEZp4EZqYEZqoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABSPQAAAAXAAFIzgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBGZ+AAIEZnAgICAiASoA+CAiAAAjSAAAAOwAAAA4AAUkCAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABSM4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZnAgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFJFQAAABcAAUjOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEZooAAgRmcCAgICIBKgEAICIAACNIAAAA7AAAADgABSSMAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFIzgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRmcCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAUk2AAAAFwABSM4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRmlgACBGZwICAgIgEqAQggIgAAI0gAAADsAAAAOAAFJRAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUjOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGZwICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABSVcAAAAXAAFIzgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBGaiAAIEZnAgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAAFJZQABSWYAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwABSM4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEZnAgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFJeQAAABcAAUjOAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEZq4AAgRmcCAgICIBKgEYICIAACF8QE1BlcnNpc3RlZEludml0YXRpb27TAAAAOgAAADsAAAAOAAFJiAABSY8AAACgpgABSYkAAUmKAAFJiwAAF40AAUmNAAFJjoEZrYEZroEZr4ECSYEZsIEZsaYAAUmQAAFJkQABSZIAAUmTAAFJlAABSZWBGbKBGcmBGeCBGfeBGg6BGiWAVVR1dWlkXW93bmVkSWRlbnRpdHlfEBBlbmNvZGVkT2J2RGlhbG9nXmFjdGlvblJlcXVpcmVkVGRhdGXfEBIAAAEiAAABIwAAASQAAUmdAAAAIQAAASYAAAEnAAFJngAAACMAAAElAAFJnwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAjQAAAOwAAADsAAFJpwAAADEAAADsAAAA3gAAAOwAAAIGAAFJiQAAAOwAAADsAAFJrwAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEZmQgIgRm0CIA5CICKgRmtCAiBGbMIEmis73jTAAAAOgAAADsAAAAOAAFJswABSbYAAACgogAAAg8AAAIQgGSAZaIAAUm3AAFJuIEZtYEZwIBV2QAAACEAAAAlAAFJuwAAAA4AAAAoAAFJvAAAACMAAADdAAFJvQABSZAAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAFJxV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEZsoBkgDmAXIAAgAQIgRm20wAAADoAAAA7AAAADgABSccAAUnQAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAFJ0QABSdIAAUnTAAFJ1AABSdUAAUnWAAFJ1wABSdiBGbeBGbiBGbmBGbuBGbyBGb2BGb6BGb+AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABSbcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZtQgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUm3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBGbUICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABSfoAAAAXAAFJtwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBGbqAAIEZtQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAFKCAABSgkAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABSbcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZtQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUm3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGbUICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFJtwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRm1CAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABSbcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZtQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUm3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGbUICAgIgEqAbwgIgAAI2QAAACEAAAAlAAFKVwAAAA4AAAAoAAFKWAAAACMAAADdAAFKWQABSZAAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAFKYV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEZsoBlgDmAXIAAgAQIgRnB0wAAADoAAAA7AAAADgABSmMAAUprAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAFKbAABSm0AAUpuAAFKbwABSnAAAUpxAAFKcoEZwoEZw4EZxIEZxYEZxoEZx4EZyIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFJuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRnACAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABSbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZwAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUm4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBGcAICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMHQAAAAXAAFJuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBFGAAIEZwAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUm4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGcAICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFJuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRnACAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABSbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZwAgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAUreAAAAIQAAASYAAAEnAAFK3wAAACMAAAElAAFK4AAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAjQAAAOwAAADsAAFK6AAAADEAAADsAAAA3gAAAOwAAASiAAFJigAAAOwAAADsAAFK8AAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEZmQgIgRnLCIA5CIECxIEZrggIgRnKCBI0vwJU0wAAADoAAAA7AAAADgABSvQAAUr3AAAAoKIAAAIPAAAErIBkgKWiAAFK+AABSvmBGcyBGdeAVdkAAAAhAAAAJQABSvwAAAAOAAAAKAABSv0AAAAjAAAA3QABSv4AAUmRAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABSwZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGcmAZIA5gFyAAIAECIEZzdMAAAA6AAAAOwAAAA4AAUsIAAFLEQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABSxIAAUsTAAFLFAABSxUAAUsWAAFLFwABSxgAAUsZgRnOgRnPgRnQgRnSgRnTgRnUgRnVgRnWgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUr4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGcwICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFK+AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRnMCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAUs7AAAAFwABSvgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRnRgACBGcwICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABS0kAAUtKAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUr4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGcwICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFK+AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRnMCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABSvgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZzAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQ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AAAAoAAABKwAAABcAAAGOAAAAFwABTXsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEaBQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAU17AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBGgUICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAJnkAAAAXAAFNewAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBA4GAAIEaBQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAU17AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGgUICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFNewAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRoFCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABTXsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEaBQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAU6hAAAAIQAAASYAAAEnAAFOogAAACMAAAElAAFOowAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwA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BNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRozCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABT/0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEaMwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAU/9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBGjMICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAYbYAAAAXAAFP/QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBCDGAAIEaMwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAU/9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGjMICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFP/QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRozCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABT/0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIE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XAAAA7IAAgRpLgACBGkIICAgIgEqAQggIgAAI0gAAADsAAAAOAAFRxQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVFPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGkIICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABUdgAAAAXAAFRTwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBGk6AAIEaQggICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAAFR5gABUecAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwABUU8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEaQggICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFR+gAAABcAAVFPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEaUYAAgRpCCAgICIBKgEYICIAACF8QKVBlcnNpc3RlZEludml0YXRpb25PbmVUb09uZUludml0YXRpb25TZW500wAAADoAAAA7AAAADgABUgkAAVILAAAAoKEAAVIKgRpToQABUgyBGlSAVV8QEnJhd0NvbnRhY3RJZGVudGl0ed8QEgAAASIAAAEjAAABJAABUhAAAAAhAAABJgAAAScAAVIRAAAAIwAAASUAAVISAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACOAAAA7AAAAOwAAVIaAAAAMQAAAOwAAADeAAAA7AAAAgYAAVIKAAA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AAAAXAAFSKwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRpiCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABUisAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEaYggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVIrAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGmIICAgIgEqAgQgIgAAI0gAAADsAAAAOAAFTUQAAATyhAAFRJ4EaPoBJEoPEVW3fEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAUevAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBGZMICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFHrwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRmTCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAUmRAAAAFwABR68AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRnJgACBGZMICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAFTgwAAACEAAAEmAAABJwABU4QAAAAjAAABJQABU4UAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJ4AAADsAAAA7AABU40AAAAxAAAA7AAAAN4AAADsAAACBgAACuMAAADsAAAA7AABU5UAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEzIICIEacgiAOQiAioEBOwgIgRpxCBKhKruw0wAAADoAAAA7AAAADgABU5kAAVOcAAAAoKIAAAIPAAACEIBkgGWiAAFTnQABU56BGnOBGn6AVdkAAAAhAAAAJQABU6EAAAAOAAAAKAABU6IAAAAjAAAA3QABU6MAAPUUAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABU6tfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGnCAZIA5gFyAAIAECIEadNMAAAA6AAAAOwAAAA4AAVOtAAFTtgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABU7cAAVO4AAFTuQABU7oAAVO7AAFTvAABU70AAVO+gRp1gRp2gRp3gRp5gRp6gRp7gRp8gRp9gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVOdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGnMICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFTnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRpzCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAVPgAAAAFwABU50AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRp4gACBGnMICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABU+4AAVPvAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVOdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGnMICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFTnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRpzCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABU50AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEacwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVOdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGnMICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFTnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRpzCAgICIBKgG8ICIAACNkAAAAhAAA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A7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEalQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVTfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBGpUICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFU3wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRqVCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAASv+AAAAFwABVN8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgRd5gACBGpUICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFU3wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRqVCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABVN8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEalQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVTfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGpUICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAFWBQAAACEAAAEmAAABJwABVgYAAAAjAAABJQABVgcAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJ4AAADsAAAA7AABVg8AAAAxAAAA7AAAAN4AAADsAAACBgAA9P4AAADsAAAA7AABVhcAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEzIICIEaoAiAOQiAioETWQgIgRqfCBLAk+3C0wAAADoAAAA7AAAADgABVhsAAVYeAAAAoKIAAAIPAAACEIBkgGWiAAFWHwABViCBGqGBGqyAVdkAAAAhAAAAJQABViMAAAAOAAAAKAABViQAAAAjAAAA3QABViUAAPUXAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABVi1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGp6AZIA5gFyAAIAECIEaotMAAAA6AAAAOwAAAA4AAVYvAAFWOAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABVjkAAVY6AAFWOwABVjwAAVY9AAFWPgABVj8AAVZAgRqjgRqkgRqlgRqngRqogRqpgRqqgRqrgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVYfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGqEICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFWHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRqhCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAVZiAAAAFwABVh8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRqmgACBGqEICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABVnAAAVZxAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVYfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGqEICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFWHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRqhCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABVh8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEaoQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVYfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGqEICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAA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ayYEayoEay4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFXYQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRrDCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABV2EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEawwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVdhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBGsMICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAFXYQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEawwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVdhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGsMICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFXYQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRrDCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABV2EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEawwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAViHAAAAIQAAASYAAAEnAAFYiAAAACMAAAElAAFYiQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAngAAAOwAAADsAAFYkQAAADEAAADsAAAA3gAAAOwAAASiAAD1AAAAAOwAAADsAAFYmQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIETMggIgRrOCIA5CIECxIETWwgIgRrNCBKAuSXj0wAAADoAAAA7AAAADgABWJ0AAVigAAAAoKIAAAIPAAAErIBkgKWiAAFYoQABWKKBGs+BGtqAVdkAAAAhAAAAJQABWKUAAAAOAAAAKAABWKYAAAAjAAAA3QABWKcAAPUZAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABWK9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGsyAZIA5gFyAAIAECIEa0NMAAAA6AAAAOwAAAA4AAVixAAFYugAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABWLsAAVi8AAFYvQABWL4AAVi/AAFYwAABWMEAAVjCgRrRgRrSgRrTgRrVgRrWgRrXgRrYgRrZgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVihAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGs8ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFYoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRrPCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAVjkAAAAFwABWKEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRrUgACBGs8ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABWPIAAVjzAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVihAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGs8ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFYoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRrPCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABWKEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEazwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVihAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE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AAA4AAVqOAAFalgAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwABWpcAAVqYAAFamQABWpoAAVqbAAFanAABWp2BGvOBGvSBGvWBGvaBGveBGviBGvmAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABWeMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEa8QgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAVnjAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBGvEICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAFZ4wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgRrxCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACeAAAAFwABWeMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgRMygACBGvEICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFZ4wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgRrxCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwA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AboBvqAABXK4AAVyvAAFcsAABXLEAAVyyAAFcswABXLQAAVy1gRsagRsbgRscgRsegRsfgRsggRshgRsigFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVyUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGxgICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFclAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRsYCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAVzXAAAAFwABXJQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRsdgACBGxgICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABXOUAAVzmAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVyUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGxgICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFclAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRsYCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABXJQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEbGAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVyUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGxgICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFclAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRsYCAgICIBKgG8ICIAACNkAAAAhAAAAJQABXTQAAAAOAAAAKAABXTUAAAAjAAAA3QABXTYAALBUAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABXT5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGxWAZYA5gFyAAIAECIEbJNMAAAA6AAAAOwAAAA4AAV1AAAFdSAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABXUkAAV1KAAFdSwABXUwAAV1NAAFdTgABXU+BGyWBGyaBGyeBGyiBGymBGyqBGyuAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwABXJUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIEbIwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVyVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBGyMICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFclQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRsjCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwABXJUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEbIwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVyVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGyMICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFclQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRsjCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABXJUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEbIwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAV27AAAAIQAAASYAAAEnAAFdvAAAACMAAAElAAFdvQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAdAAAAOwAAADsAAFdxQAAADE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AAADsAAAA7AAAABcAAADsgACAAIAAgRu3CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAWUYAAAAFwABZNUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRu8gACBG7cICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABZSYAAWUnAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAWTVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBG7cICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFk1QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRu3CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABZNUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEbtwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAWTVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBG7cICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFk1QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiw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b+YEb+oEb+4Eb/IBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB6kAAAAXAAFniAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACA+4AAgRv0CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABZ4gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEb9AgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAWeIAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBG/QICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAJnkAAAAXAAFniAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBA4GAAIEb9AgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAWeIAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBG/QICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFniAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRv0CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAA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ADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABaksAAAAXAAFqJQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBHB+AAIEcHAgICAiASoA+CAiAAAjSAAAAOwAAAA4AAWpZAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABaiUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEcHAgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFqbAAAABcAAWolAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEcIoAAgRwcCAgICIBKgEAICIAACNIAAAA7AAAADgABanoAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFqJQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRwcCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAWqNAAAAFwABaiUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRwlgACBHBwICAgIgEqAQggIgAAI0gAAADsAAAAOAAFqmwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAWolAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHBwICAgIgEqAQwgIgAAI3xAPAAABIgA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AASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAWxEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHEkICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFsRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRxJCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAWyHAAAAFwABbEQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRxOgACBHEkICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABbJUAAWyWAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAWxEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHEkICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFsRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRxJCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABbEQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEcSQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwA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mgACBHGEICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABbdcAAW3YAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAW2GAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHGEICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFthgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRxhCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABbYYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEcYQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAW2GAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHGEICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFthgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRxhCAgICIBKgG8ICIAACNkAAAAhAAAAJQABbiYAAAAOAAAAKAABbicAAAAjAAAA3QABbigAABepAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABbjBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmV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AABcAAADsgACBA62AAIEdGwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXaKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBHRsICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAKM8AAAAXAAF2igAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACBA62AAIEdGwgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAmeQAAABcAAXaKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDgYAAgR0bCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABdooAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEdGwgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXaKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBHRsICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAF2igAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgR0bCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABd7AAAAAhAAABJgAAAScAAXexAAAAIwAAASUAAXeyAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACYAAAA7AAAAOwAAXe6AAAAMQAAAOwAAADeAAAA7AAABKIAACowAAAA7AAAAOwAAXfCAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQO4CAiBHSYIgDkIgQLEgQPUCAiBHSUIEjRKPcLTAAAAOgAAADsAAAAOAAF3xgABd8kAAACgogAAAg8AAASsgGSApaIAAXfKAAF3y4EdJ4EdMoBV2QAAACEAAAAlAAF3zgAAAA4AAAAoAAF3zwAAACMAAADdAAF30AAAKkYAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAF32F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEdJIBkgDmAXIAAgAQIgR0o0wAAADoAAAA7AAAADgABd9oAAXfjAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAF35AABd+UAAXfmAAF35wABd+gAAXfpAAF36gABd+uBHSmBHSqBHSuBHS2BHS6BHS+BHTCBHTGAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABd8oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEdJwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXfKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBHScICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABeA0AAAAXAAF3ygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBHSyAAIEdJwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAF4GwABeBwAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABd8oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEdJwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAXfKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBHScICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF3ygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgR0nCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABd8oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEdJwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXfKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHScICAgIgEqAbwgIgAAI2QAAACEAAAAlAAF4agAAAA4AAAAoAAF4awAAACMAAADdAAF4bAAAKkYAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAF4dF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEdJIClgDmAXIAAgAQIgR0z0wAAADoAAAA7AAAADgABeHYAAXh+AAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAAF4fwABeIAAAXiBAAF4ggABeIMAAXiEAAF4hYEdNIEdNYEdNoEdN4Ed8YEd8oEd84BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAF3ywAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgR0yCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwABd8sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBHTIICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAF3ywAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgR0yCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACdAAAAFwABd8sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgR04gACBHTIICAgIgEqAtwgIgAAI3xAUAAAA3QABeMQAAXjFAAF4xgABeMcAAXjIAAF4yQAAACEAAAAOAAF4ygAAACUAAXjLAAAAKAABeMwAAXjNAAF4zgABeM8AAXjQAAF40QAAACMAAAUhAAAA3gAAAN4AAXjVAAAAKQAAAOQAAADeAAAAFAAAAOcAAAApAAAAawABeN0AAXjeAAAAKQAAACkAAADeAAF44gABeOMAAADkAAAAMV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zb3JkZXJlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIVhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zc3RvcmFnZV8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zZHVwbGljYXRlcwmAOYA5gR06gASBA7SAOYACgQiTgASANIEdkoEdOYAEgASAOYEdS4Edk4EDtBKLphXm0wAAADoAAAA7AAAADgABeOcAAXjpAAAAoKEAAADxgDuhAAF46oEdO4BV2QAAACEAAAAlAAF47QAAAA4AAAAoAAF47gAAACMAAADdAAF47wAAAJ0AAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAAD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AAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBHVAICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABegwAAAAXAAF5yQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBHVWAAIEdUAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAF6GgABehsAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABeckAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEdUAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAXnJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBHVAICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF5yQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgR1QCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABeckAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEdUAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXnJAAAA7AAAAOwAAADsAAAAMQAAAOw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jAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABewsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEdcggICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAXsLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBHXIICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAF7CwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgR1yCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACYAAAAFwABewsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQO4gACBHXIICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF7CwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgR1yCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABewsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEdcggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASs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AAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEduAgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAX57AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBHbgICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAF+ewAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgR24CAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACTAAAAFwABfnsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQIigACBHbgICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF+ewAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgR24CAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABfnsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEduAgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAXoQAAABcAAX57AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEdwYAAgR2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AAYJZAAAAFwABghYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR38gACBHfcICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABgmcAAYJoAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYIWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHfcICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAGCFgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgR33CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABghYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEd9wgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYIWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHfcICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGCFgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgR33CAgICIBKgG8ICIAACNkAAAAhAAAAJQABgrYAAAAOAAAAKAABgrcAAAAjAAAA3QABgrgAACpHAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABgsBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHfSAZYA5gFyAAIAECIEeA9MAAAA6AAAAOwAAAA4AAYLCAAGCygAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABgssAAYLMAAGCzQABgs4AAYLPAAGC0AABgtGBHgSBHgWBHgaBHgeBHgiBHgmBHgqAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABghcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEeAggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYIXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBHgIICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGCFwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR4CCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABghcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBHgIICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAA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AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYNYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBHhkICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGDWAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR4ZCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGG2AAAAFwABg1gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQgxgACBHhkICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGDWAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgR4ZCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABg1gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEeGQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYNYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHhkICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAGEfgAAACEAAAEmAAABJwABhH8AAAAjAAABJQABhIAAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJgAAADsAAAA7AABhIgAAAAxAAAA7AAAAN4AAADsAAACBgAAKjQAAADsAAAA7AABhJAAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBA7gICIEeJAiAOQiAioED2AgIgR4jCBKFkbNV0wAAADoAAAA7AAAADgABhJQAAYSXAAAAoKIAAAIPAAACEIBkgGWiAAGEmAABhJmBHiWBHjCAVdkAAAAhAAAAJQABhJwAAAAOAAAAKAABhJ0AAAAjAAAA3QABhJ4AACpKAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABhKZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHiKAZIA5gFyAAIAECIEeJtMAAAA6AAAAOwAAAA4AAYSoAAGEsQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABhLIAAYSzAAGEtAABhLUAAYS2AAGEtwABhLgAAYS5gR4ngR4ogR4pgR4rgR4sgR4tgR4ugR4vgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYSYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHiUICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGEmAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR4lCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAYTbAAAAFwABhJgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR4qgACBHiUICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABhOkAAYTqAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYSYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHiUICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGEmAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgR4lCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABhJgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEeJQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYSYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHiUICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGEmAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AA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RAAGJEgABiRMAAYkUAAGJFQABiRaBHneBHniBHnmBHnqBHnuBHnyBHn2AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABiFwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEedQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYhcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBHnUICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGIXAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR51CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAC8yAAAAFwABiFwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQQ5gACBHnUICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGIXAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgR51CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABiFwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEedQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYhcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHnUICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAGJggAAACEAAAEmAAABJwABiYMAAAAjAAABJQABiYQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJgAAADsAAAA7AABiYwAAAAxAAAA7AAAAN4AAADsAAACBgAAKjoAAADsAAAA7AABiZQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBA7gICIEegAiAOQiAioED3QgIgR5/CBKcrQPX0wAAADoAAAA7AAAADgABiZgAAYmbAAAAoKIAAAIPAAACEIBkgGWiAAGJnAABiZ2BHoGBHoyAVdkAAAAhAAAAJQABiaAAAAAOAAAAKAABiaEAAAAjAAAA3QABiaIAACpQAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABiapfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHn6AZIA5gFyAAIAECIEegtMAAAA6AAAAOwAAAA4AAYmsAAGJtQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABibYAAYm3AAGJuAABibkAAYm6AAGJuwABibwAAYm9gR6DgR6EgR6FgR6HgR6IgR6JgR6KgR6LgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYmcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHoEICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGJnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR6BCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAYnfAAAAFwABiZwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR6GgACBHoEICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABie0AAYnuAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYmcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHoEICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGJnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgR6BCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABiZwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEegQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYmcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHoEICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGJnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgR6BCAgICIBKgG8ICIAACNkAAAAhAAAAJQABijwAAAAOAAAAKAABij0AAAAjAAAA3QABij4AACpQAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABikZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHn6AZYA5gFyAAIAECIEejdMAAAA6AAAAOwAAAA4AAYpIAAGKUAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABilEAAYpSAAGKUwABilQAAYpVAAGKVgABileBHo6BHo+BHpCBHpGBHpKBHpOBHpSAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwABiZ0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIEejAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYmdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBHowICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwA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AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYrdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHpgICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGK3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgR6YCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABit0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEemAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYrdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBHpgICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAGK3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAroAAgR6YCAgICIBKgG8ICIAACNkAAAAhAAAAJQABi30AAAAOAAAAKAABi34AAAAjAAAA3QABi38AACpRAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABi4dfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHpWAZYA5gFyAAIAECIEepNMAAAA6AAAAOwAAAA4AAYuJAAGLkQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABi5IAAYuTAAGLlAABi5UAAYuWAAGLlwABi5iBHqWBHqaBHqeBHqiBHqmBHqqBHquAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACjPAAAAFwABit4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgQOtgACBHqMICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGK3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgR6jCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABit4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEeowgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAmeQAAABcAAYreAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDgYAAgR6jCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABit4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEeowgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYreAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBHqMICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGK3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgR6jCAgICIBKgIEICIAACNIAAAA7AAAADgABjAQAAAE8oIBJ0gAAADsAAAAOAAGMBwAAATyjAACdHgAAijgAACk6gQy5gQtTgQO2gEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAB/LAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBAwgICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAfywAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQMICAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACGjAAAAFwAAH8sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQMngACBAwgICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAGMOgAAACEAAAEmAAABJwABjDsAAAAjAAABJQABjDwAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIAAAADsAAAA7AABjEQAAAAxAAAA7AAAAN4AAADsAAACBgAAH4cAAADsAAAA7AABjEw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BJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABjZYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEe1ggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAY2WAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBHtYICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAGNlgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgR7WCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABjZYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEe1ggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAY2WAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBHtYICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGNlgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgR7WCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABjrwAAAAhAAABJgAAAScAAY69AAAAIwAAASU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AABcAAAAXAAAAFwABkBgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEfBAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZAYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBHwQICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGQGAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR8ECAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGG2AAAAFwABkBgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQgxgACBHwQICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGQGAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgR8ECAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABkBgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEfBAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZAYAAAA7AAAAOwAAADsAAA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AAZNRAAGTUgABk1MAAZNUgR80gR81gR82gR83gR84gR85gR86gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZKaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBHzIICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGSmgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgR8yCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABkpoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEfMggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAZKaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBHzIICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGSmgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgR8yCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABkpoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEfMggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZKaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHzIICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAGTwAAAACEAAAEmAAABJwABk8EAAAAjAAABJQABk8IAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIAAAADsAAAA7AABk8oAAAAxAAAA7AAAAN4AAADsAAACBgAAH40AAADsAAAA7AABk9IAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAtkICIEfPQiAOQiAioEC9AgIgR88CBKw8uKa0wAAADoAAAA7AAAADgABk9YAAZPZAAAAoKIAAAIPAAACEIBkgGWiAAGT2gABk9uBHz6BH0mAVdkAAAAhAAAAJQABk94AAAAOAAAAKAABk98AAAAjAAAA3QABk+AAAB+bAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABk+hfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHzuAZIA5gFyAAIAECIEfP9MAAAA6AAAAOwAAAA4AAZPqAAGT8wAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABk/QAAZP1AAGT9gABk/cAAZP4AAGT+QABk/oAAZP7gR9AgR9BgR9CgR9EgR9FgR9GgR9HgR9IgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZPaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHz4ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGT2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR8+CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAZQdAAAAFwABk9oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR9DgACBHz4ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABlCsAAZQsAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZPaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHz4ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAGT2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgR8+CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABk9oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEfPggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABc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uAAGY9wAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABmPgAAZj5AAGY+gABmPsAAZj8AAGY/QABmP4AAZj/gR+cgR+dgR+egR+ggR+hgR+igR+jgR+kgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZjeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBH5oICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGY3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR+aCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAZkhAAAAFwABmN4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR+fgACBH5oICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABmS8AAZkwAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZjeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBH5oICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAGY3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgR+aCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgA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IgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABmmIAAAAXAAGaHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBH7aAAIEfsQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAGacAABmnEAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABmh8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEfsQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZofAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBH7EICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGaHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgR+xCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABmh8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEfsQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZofAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBH7EICAgIgEqAbwg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6AAGe+wABnvwAAZ79gSALgSAMgSANgSAOgSAPgSAQgSARgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZ5DAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIAkICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGeQwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSAJCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABnkMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgCQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAZ5DAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBIAkICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGeQwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSAJCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABnkMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgCQgICAiASoC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YAAGkoQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABpKIAAaSjAAGkpAABpKUAAaSmAAGkpwABpKgAAaSpgSB0gSB1gSB2gSB4gSB5gSB6gSB7gSB8gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAaSIAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIHIICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGkiAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSByCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAaTLAAAAFwABpIgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSB3gACBIHIICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABpNkAAaTaAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAaSIAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIHIICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGkiAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSByCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABpIgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEgcggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAaSIAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIHIICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGkiAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSByCAgICIBKgG8ICIAACNkAAAAhAAAAJQABpSgAAAAOAAAAKAABpSkAAAAjAAAA3QABpSoAABekAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABpTJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIG+AZYA5gFyAAIAECIEgftMAAAA6AAAAOwAAAA4AAaU0AAGlPAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABpT0AAaU+AAGlPwABpUAAAaVBAAGlQgABpUOBIH+BIICBIIGBIIKBIIOBIISBIIWAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwABpIkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIEgfQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAaSJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIH0ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGkiQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSB9CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwABpIkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEgfQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAaSJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIH0ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGkiQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSB9CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABpIkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgfQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAaWvAAAAIQAAASYAAAEnAAGlsAAAACMAAAElAAGlsQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAkwAAAOwAAADsAAGluQAAADEAAADsAAAA3gAAAOwAAAIGAAAXiAAAAOwAAADsAAGlwQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECIggIgSCICIA5CICKgQJECAiBIIcIEoknSi/TAAAAOgAAADsAAAAOAAGlxQABpcgAAACgogAAAg8AAAIQgGSAZaIAAaXJAAGlyoEgiYEglIBV2QAAACEAAAAlAAGlzQAAAA4AAAAoAAGlzgAAACMAAADdAAGlzwAAF6UAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGl118QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEghoBkgDmAXIAAgAQIgSCK0wAAADoAAAA7AAAADgABpdkAAaXiAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAGl4wABpeQAAaXlAAGl5gABpecAAaXoAAGl6QABpeqBIIuBIIyBII2BII+BIJCBIJGBIJKBIJOAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABpckAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEgiQgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAaXJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIIkICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABpgwAAAAXAAGlyQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBII6AAIEgiQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAGmGgABphsAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABpckAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEgiQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAaXJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIIkICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGlyQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgSCJCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABpckAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgiQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAaXJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIIkICAgIgEqAbwgIgAAI2QAAACEAAAAlAAGmaQAAAA4AAAAoAAGmagAAACMAAADdAAGmawAAF6UAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGmc18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEghoBlgDmAXIAAgAQIgSCV0wAAADoAAAA7AAAADgABpnUAAaZ9AAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAGmfgABpn8AAaaAAAGmgQABpoIAAaaDAAGmhIEgloEgl4EgmIEgmYEgmoEgm4EgnIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGlygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgSCUCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABpcoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEglAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAaXKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBIJQICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAGlygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgSCUCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABpcoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEglAgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAaXKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIJQICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGlygAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgSCUCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABpvAAAAAhAAABJgAAAScAAabxAAAAIwAAASUAAabyAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACTAAAA7AAAAOwAAab6AAAAMQAAAOwAAADeAAAA7AAABKIAABeJAAAA7AAAAOwAAacCAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQIiCAiBIJ8IgDkIgQLEgQJFCAiBIJ4IEmc42PPTAAAAOgAAADsAAAAOAAGnBgABpwkAAACgogAAAg8AAASsgGSApaIAAacKAAGnC4EgoIEgq4BV2QAAACEAAAAlAAGnDgAAAA4AAAAoAAGnDwAAACMAAADdAAGnEAAAF6YAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGnGF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEgnYBkgDmAXIAAgAQIgSCh0wAAADoAAAA7AAAADgABpxoAAacjAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAGnJAABpyUAAacmAAGnJwABpygAAacpAAGnKgABpyuBIKKBIKOBIKSBIKaBIKeBIKiBIKmBIKqAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABpwoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEgoAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAacKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIKAICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABp00AAAAXAAGnCgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBIKWAAIEgoAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAGnWwABp1wAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABpwoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEgoAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAacKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIKAICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGnCgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgSCgCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABpwoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgoAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAacKAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIKAICAgIgEqAbwgIgAAI2QAAACEAAAAlAAGnqgAAAA4AAAAoAAGnqwAAACMAAADdAAGnrAAAF6YAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGntF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEgnYClgDmAXIAAgAQIgSCs0wAAADoAAAA7AAAADgABp7YAAae+AAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAAGnvwABp8AAAafBAAGnwgABp8MAAafEAAGnxYEgrYEgroEgr4EgsIEhKYEhKoEhK4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAGnCwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgSCrCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwABpwsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBIKsICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAGnCwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgSCrCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACZAAAAFwABpwsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgSCxgACBIKsICAgIgEqAtwgIgAAI3xAQAAGoBAABqAUAAagGAAGoBwAAACEAAagIAAGoCQAAACMAAagKAAGoCwAAAA4AAAAlAAGoDAABqA0AAAAoAAAA3QAAAN4AAagPAAAAKQAAACkAAAAUAAGoEwAAAOQAAAAxAAAAKQAAAN4AAADnAAAAZwAAAN4AAagaAAGoGwAAAOxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAOYEgyIAEgASAAoEgs4EDtIAEgDmBCJOAMIA5gSEogSCyCBKONbjw0wAAADoAAAA7AAAADgABqB8AAaghAAAAoKEAAADxgDuhAAGoIoEgtIBV2QAAACEAAAAlAAGoJQAAAA4AAAAoAAGoJgAAACMAAADdAAGoJwAAAJkAAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGoL18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEgsYA7gDmAXIAAgAQIgSC10wAAADoAAAA7AAAADgABqDEAAag7AAAAoKkAAAEEAAABBQAAAQYAAAEHAAABCAAAAQkAAAEKAAABCwAAAQyAPoA/gECAQYBCgEOARIBFgEapAAGoPAABqD0AAag+AAGoPwABqEAAAahBAAGoQgABqEMAAahEgSC2gSC4gSC5gSC/gSDAgSDCgSDDgSDFgSDGgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGoSAAAABcAAagiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBAAAAOwAAADsAAAAFwAAAOyAAIEgt4AAgSC0CAgICIBKgD4ICIAACNIAAAA7AAAADgABqFYAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGoIgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQUAAADsAAAA7AAAABcAAADsgACAAIAAgSC0CAgICIBKgD8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAahpAAAAFwABqCIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgSC6gACBILQICAgIgEqAQAgIgAAI0gAAADsAAAAOAAGodwAAATyhAAGoeIEgu4BJ0gAAADsAAAAOAAGoewAAATyjAAGofAABqH0AAah+gSC8gSC9gSC+gElfEBhyYXdPd25lZElkZW50aXR5SWRlbnRpdHlfEBNyYXdJZGVudGl0eUlkZW50aXR5WmlkZW50aWZpZXLfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAagiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBILQICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABqJQAAAAXAAGoIgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBIMGAAIEgtAgICAiASoBCCAiAAAjSAAAAOwAAAA4AAaiiAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABqCIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEgtAgICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGotQAAABcAAagiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIEgxIAAgSC0CAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AAajDAAGoxAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAAGoIgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgSC0CAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAajXAAAAFwABqCIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgSDHgACBILQICAgIgEqARggIgAAIXxAZUGVyc2lzdGVkT2J2Q29udGFjdERldmljZdMAAAA6AAAAOwAAAA4AAajmAAGo6wAAAKCkAAGo5wABqOgAAah+AAGo6oEgyYEgyoEgvoEgy6QAAajsAAGo7QABqO4AAajvgSDMgSDjgSD6gSERgFVfEBNyYXdJZGVudGl0eUlkZW50aXR5XxAYcmF3T3duZWRJZGVudGl0eUlkZW50aXR5W3Jhd0lkZW50aXR53xASAAABIgAAASMAAAEkAAGo9QAAACEAAAEmAAABJwABqPYAAAAjAAABJQABqPcAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJkAAADsAAAA7AABqP8AAAAxAAAA7AAAAN4AAADsAAACBgABqOcAAADsAAAA7AABqQcAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBILEICIEgzgiAOQiAioEgyQgIgSDNCBLX43Lf0wAAADoAAAA7AAAADgABqQsAAakOAAAAoKIAAAIPAAACEIBkgGWiAAGpDwABqRCBIM+BINqAVdkAAAAhAAAAJQABqRMAAAAOAAAAKAABqRQAAAAjAAAA3QABqRUAAajsAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABqR1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIMyAZIA5gFyAAIAECIEg0NMAAAA6AAAAOwAAAA4AAakfAAGpKAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABqSkAAakqAAGpKwABqSwAAaktAAGpLgABqS8AAakwgSDRgSDSgSDTgSDVgSDWgSDXgSDYgSDZgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAakPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIM8ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGpDwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSDPCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAalSAAAAFwABqQ8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSDUgACBIM8ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABqWAAAalhAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAakPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIM8ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGpDwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSDPCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABqQ8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEgzwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAakPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIM8ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGpDwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSDPCAgICIBKgG8ICIAACNkAAAAhAAAAJQABqa8AAAAOAAAAKAABqbAAAAAjAAAA3QABqbEAAajsAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABqblfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIMyAZYA5gFyAAIAECIEg29MAAAA6AAAAOwAAAA4AAam7AAGpwwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABqcQAAanFAAGpxgABqccAAanIAAGpyQABqcqBINyBIN2BIN6BIN+BIOCBIOGBIOKAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABqRAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEg2ggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAakQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBINoICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGpEAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSDaCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABqRAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEg2ggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAakQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBINoICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGpEAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSDaCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABqRAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEg2ggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAao2AAAAIQAAASYAAAEnAAGqNwAAACMAAAElAAGqOAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAmQAAAOwAAADsAAGqQAAAADEAAADsAAAA3gAAAOwAAAIGAAGo6AAAAOwAAADsAAGqSAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEgsQgIgSDlCIA5CICKgSDKCAiBIOQIEwAAAAEkrjXI0wAAADoAAAA7AAAADgABqkwAAapPAAAAoKIAAAIPAAACEIBkgGWiAAGqUAABqlGBIOaBIPGAVdkAAAAhAAAAJQABqlQAAAAOAAAAKAABqlUAAAAjAAAA3QABqlYAAajtAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABql5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIOOAZIA5gFyAAIAECIEg59MAAAA6AAAAOwAAAA4AAapgAAGqaQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABqmoAAaprAAGqbAABqm0AAapuAAGqbwABqnAAAapxgSDogSDpgSDqgSDsgSDtgSDugSDvgSDwgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAapQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIOYICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGqUAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSDmCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAaqTAAAAFwABqlAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSDrgACBIOYICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABqqEAAaqiAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAapQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIOYICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGqUAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSDmCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABqlAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEg5ggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAapQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIOYICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGqUAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSDmCAgICIBKgG8ICIAACNkAAAAhAAAAJQABqvAAAAAOAAAAKAABqvEAAAAjAAAA3QABqvIAAajtAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABqvpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIOOAZYA5gFyAAIAECIEg8tMAAAA6AAAAOwAAAA4AAar8AAGrBAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABqwUAAasGAAGrBwABqwgAAasJAAGrCgABqwuBIPOBIPSBIPWBIPaBIPeBIPiBIPmAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABqlEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEg8QgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAapRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIPEICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGqUQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSDxCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwA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kAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGrkgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgSEICAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABq5IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhCAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAauSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBIQgICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAGrkgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgSEICAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABq5IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhCAgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAauSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIQgICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgA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+gACBIR8ICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAJMAAAAXAAGs0wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBAiKAAIEhHwgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAazTAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIR8ICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGs0wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgSEfCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAABemAAAAFwABrNMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgSCdgACBIR8ICAgIgEqAuggIgAAI0gAAADsAAAAOAAGt+QAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAacLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBIKsICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGnCwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgSCrCAg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AABcAAa5DAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIS8ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGuQwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSEvCAgICIBKgG8ICIAACNkAAAAhAAAAJQABruMAAAAOAAAAKAABruQAAAAjAAAA3QABruUAABenAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABru1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBISyAZYA5gFyAAIAECIEhO9MAAAA6AAAAOwAAAA4AAa7vAAGu9wAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABrvgAAa75AAGu+gABrvsAAa78AAGu/QABrv6BITyBIT2BIT6BIT+BIUCBIUGBIUKAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABrkQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhOggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAa5EAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIToICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGuRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSE6CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABrkQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBIToICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGuRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSE6CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABrkQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhOggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAa5EAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIToICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAGvagAAACEAAAEmAAABJwABr2sAAAAjAAABJQABr2wAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJMAAADsAAAA7AABr3QAAAAxAAAA7AAAAN4AAADsAAAEogAAF4sAAADsAAAA7AABr3wAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmV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ICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABs0kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhlwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbNJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBIZcICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAGzSQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEhlwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbNJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIZcICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGzSQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSGXCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABs0kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhlwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAbRvAAAAIQAAASYAAAEnAAG0cAAAACMAAAElAAG0cQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAkwAAAOwAAADsAAG0eQAAADEAAADsAAAA3gAAAOwAAAIGAAAXkQAAAOwAAADsAAG0gQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECIggIgSGiCIA5CICKgQJMCAiBIaEIEqhvB8DTAAAAOgAAADsAAAAOAAG0hQABtIgAAACgogAAAg8AAAIQgGSAZaIAAbSJAAG0ioEho4EhroBV2QAAACEAAAAlAAG0jQAAAA4AAAAoAAG0jgAAACMAAADdAAG0jwAAF64AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAG0l18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEhoIBkgDmAXIAAgAQIgSGk0wAAADoAAAA7AAAADgABtJkAAbSiAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAG0owABtKQAAbSlAAG0pgABtKcAAbSoAAG0qQABtKqBIaWBIaaBIaeBIamBIaqBIauBIayBIa2AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABtIkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhowgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbSJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIaMICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABtMwAAAAXAAG0iQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBIaiAAIEhowgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAG02gABtNsAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABtIkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhowgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbSJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIaMICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG0iQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgSGjCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABtIkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhowgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbSJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE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AgICBpwABuQEAAbkCAAG5AwABuQQAAbkFAAG5BgABuQeBIfWBIfaBIfeBIfiBIfmBIfqBIfuAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABuE0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEh8wgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbhNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIfMICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG4TQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSHzCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABuE0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBIfMICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG4TQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSHzCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABuE0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEh8wgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbhNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIfMICAgIgEqAgQgIgAAI0gAAADsAAAAOAAG5cwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAABWjAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBAhwICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAVowAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQIcCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAABeoAAAAFwAAFaMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgSFDgACBAhwICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAG5owAAACEAAAEmAAABJwABuaQAAAAjAAABJQABuaUAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJoAAADsAAAA7AABua0AAAAxAAAA7AAAAN4AAADsAAACBgAAC1QAAADsAAAA7AABubUAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAS8ICIEiAgiAOQiAioEBTggIgSIBCBL0d8dH0wAAADoAAAA7AAAADgABubkAAbm8AAAAoKIAAAIPAAACEIBkgGWiAAG5vQABub6BIgOBIg6AVdkAAAAhAAAAJQABucEAAAAOAAAAKAABucIAAAAjAAAA3QABucMAAAtmAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABuctfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIgCAZIA5gFyAAIAECIEiBNMAAAA6AAAAOwAAAA4AAbnNAAG51gAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABudcAAbnYAAG52QABudoAAbnbAAG53AABud0AAbnegSIFgSIGgSIHgSIJgSIKgSILgSIMgSINgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbm9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIgMICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG5vQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSIDCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAboAAAAAFwABub0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSIIgACBIgMICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABug4AAboPAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbm9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIgMICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG5vQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSIDCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABub0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEiAwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbm9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIgMICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG5vQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSIDCAgICIBKgG8ICIAACNkAAAAhAAAAJQABul0AAAAOAAAAKAABul4AAAAjAAAA3QABul8AAAtmAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABumdfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIgCAZYA5gFyAAIAECIEiD9MAAAA6AAAAOwAAAA4AAbppAAG6cQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABunIAAbpzAAG6dAABunUAAbp2AAG6dwABuniBIhCBIhGBIhKBIhOBIhSBIhWBIhaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwABub4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIEiDggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbm+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIg4ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG5vgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSIOCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwABub4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEiDggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbm+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIg4ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAA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nAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABvZoAAb2bAAG9nAABvZ0AAb2eAAG9nwABvaAAAb2hgSJKgSJLgSJMgSJOgSJPgSJQgSJRgSJSgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAb2AAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIkgICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG9gAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSJICAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAb3DAAAAFwABvYAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSJNgACBIkgICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABvdEAAb3SAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAb2AAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIkgICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG9gAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSJICAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABvYAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEiSAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAb2AAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIkgICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG9gAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSJICAgICIBKgG8ICIAACNkAAAAhAAAAJQABviAAAAAOAAAAKAABviEAAAAjAAAA3QABviIAAAtpAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABvipfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIkWAZYA5gFyAAIAECIEiVNMAAAA6AAAAOwAAAA4AAb4sAAG+NAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABvjUAAb42AAG+NwABvjgAAb45AAG+OgABvjuBIlWBIleBIliBIlmBIlqBIluBIlyAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAb4/AAAAFwABvYEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgSJWgACBIlMICAgIgEqAewgIgAAIUiIi3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG9gQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSJTCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABvYEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEiUwgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAAb2BAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgSJTCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABvYEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEiUwgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAb2BAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIlMICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG9gQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgSJTCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABvqgAAAAhAAABJgAAAScAAb6pAAAAIwAAASUAAb6qAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACaAAAA7AAAAOwAAb6yAAAAMQAAAOwAAADeAAAA7AAAAgYAAAHtAAAA7AAAAOwAAb66AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQEvCAiBIl8IgDkIgIqAXwgIgSJeCBJtA9mZ0wAAADoAAAA7AAAADgABvr4AAb7BAAAAoKIAAAIPAAACEIBkgGWiAAG+wgABvsOBImCBImuAVdkAAAAhAAAAJQABvsYAAAAOAAAAKAABvscAAAAjAAAA3QABvsgAAAtqAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABvtBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIl2AZIA5gFyAAIAECIEiYdMAAAA6AAAAOwAAAA4AAb7SAAG+2wAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABvtwAAb7dAAG+3gABvt8AAb7gAAG+4QABvuIAAb7jgSJigSJjgSJkgSJmgSJngSJogSJpgSJqgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAb7CAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBImAICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG+wgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSJgCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAb8FAAAAFwABvsIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSJlgACBImAICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABvxMAAb8UAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAb7CAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBImAICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG+wgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSJgCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABvsIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEiYAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAb7CAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBImAICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG+wgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSJgCAgICIBKgG8ICIAACNkAAAAhAAAAJQABv2IAAAAOAAAAKAABv2MAAAAjAAAA3QABv2QAAAtqAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABv2xfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIl2AZYA5gFyAAIAECIEibNMAAAA6AAAAOwAAAA4AAb9uAAG/dgAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABv3cAAb94AAG/eQABv3oAAb97AAG/fAABv32BIm2BIm6BIm+BInCBInGBInKBInOAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABvsMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEiawgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAb7DAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBImsICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG+wwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSJrCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABvsMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEiawgICAiASoB+CAiAAAjfEA8AAAEiAAABIwA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AAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACA+4AAgSKCCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABwAQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEigggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcAEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBIoIICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAHABAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgSKCCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABwAQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEigggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcAEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIoIICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHABAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgSKCCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABwSoAAAAhAAABJgAAAScAAcErAAAAIwAAASUAAcEsAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACaAAAA7AAAAOwAAcE0AAAAMQAAAOwAAADeAAAA7AAAAgYAAAtaAAAA7AAAAOwAAcE8AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQEvCAiBIo0IgDkIgIqBAVMICIEijAgS5SXCe9MAAAA6AAAAOwAAAA4AAcFAAAHBQwAAAKCiAAACDwAAAhCAZIBlogABwUQAAcFFgSKOgSKZgFXZAAAAIQAAACUAAcFIAAAADgAAACgAAcFJAAAAIwAAAN0AAcFKAAALbAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAcFSXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgSKLgGSAOYBcgACABAiBIo/TAAAAOgAAADsAAAAOAAHBVAABwV0AAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAcFeAAHBXwABwWAAAcFhAAHBYgABwWMAAcFkAAHBZYEikIEikYEikoEilIEilYEiloEil4EimIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHBRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgSKOCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABwUQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEijggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAHBhwAAABcAAcFEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEik4AAgSKOCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAcGVAAHBlgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHBRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgSKOCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABwUQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEijggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcFEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBIo4ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHBRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgSKOCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABwUQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEijggICAiASoBvCAiAAAjZAAAAIQAAACUAAcHkAAAADgAAACgAAcHlAAAAIwAAAN0AAcHmAAALbAAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAcHuXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgSKLgGWAOYBcgACABAiBIprTAAAAOgAAADsAAAAOAAHB8AABwfgAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAcH5AAHB+gABwfsAAcH8AAHB/QABwf4AAcH/gSKbgSKcgSKdgSKegSKfgSKggSKhgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcFFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIpkICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHBRQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSKZCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABwUUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEimQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAcFFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBIpkICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHBRQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSKZCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABwUUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEimQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcFFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIpkICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAHCawAAACEAAAEmAAABJwABwmwAAAAjAAABJQABwm0AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJoAAADsAAAA7AABwnUAAAAxAAAA7AAAAN4AAADsAAACBgAAC1sAAADsAAAA7AABwn0AAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAS8ICIEipAiAOQiAioEBVAgIgSKjCBJvv0yH0wAAADoAAAA7AAAADgABwoEAAcKEAAAAoKIAAAIPAAACEIBkgGWiAAHChQABwoaBIqWBIrCAVdkAAAAhAAAAJQABwokAAAAOAAAAKAABwooAAAAjAAAA3QABwosAAAttAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABwpNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIqKAZIA5gFyAAIAECIEiptMAAAA6AAAAOwAAAA4AAcKVAAHCngAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABwp8AAcKgAAHCoQABwqIAAcKjAAHCpAABwqUAAcKmgSKngSKogSKpgSKrgSKsgSKtgSKugSKvgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcKFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIqUICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHChQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSKlCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAcLIAAAAFwABwoUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSKqgACBIqUICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABwtYAAcLXAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcKFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIqUICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHChQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSKlCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABwoUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEipQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcKFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIqUICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHChQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSKlCAgICIBKgG8ICIAACNkAAAAhAAAAJQABwyUAAAAOAAAAKAABwyYAAAAjAAAA3QABwycAAAttAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABwy9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIqKAZYA5gFyAAIAECIEisdMAAAA6AAAAOwAAAA4AAcMxAAHDOQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABwzoAAcM7AAHDPAABwz0AAcM+AAHDPwABw0CBIrKBIrOBIrSBIrWBIraBIreBIriAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABwoYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEisAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcKGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIrAICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHChgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSKwCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABwoYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBIrAICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHChgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSKwCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABwoYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEisAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAE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AAAAXAAABjgAAABcAAcU3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBItcICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHFNwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSLXCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAcV6AAAAFwABxTcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSLcgACBItcICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABxYgAAcWJAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcU3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBItcICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAHFNwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgSLXCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABxTcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEi1wgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASs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0b3JhZ2WBIuuAZYA5gFyAAIAECIEi+tMAAAA6AAAAOwAAAA4AAcckAAHHLAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABxy0AAccuAAHHLwABxzAAAccxAAHHMgABxzOBIvuBIvyBIv2BIv6BIv+BIwCBIwGAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABxnkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEi+QgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcZ5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIvkICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHGeQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSL5CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABxnkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBIvkICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHGeQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSL5CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAASc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0b3JhZ2WBI0aAZYA5gFyAAIAECIEjVdMAAAA6AAAAOwAAAA4AAculAAHLrQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABy64AAcuvAAHLsAABy7EAAcuyAAHLswABy7SBI1aBI1eBI1iBI1mBI1qBI1uBI1yAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAByvoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEjVAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcr6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBI1QICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHK+gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSNUCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAByvoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBI1QICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHK+gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSNUCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAASc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AAAA6AAAAOwAAAA4AAc7MAAHO1QAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABztYAAc7XAAHO2AABztkAAc7aAAHO2wABztwAAc7dgSOQgSORgSOSgSOUgSOVgSOWgSOXgSOYgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAc68AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBI44ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHOvAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSOOCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAc7/AAAAFwABzrwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSOTgACBI44ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABzw0AAc8OAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAc68AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBI44ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAHOvAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgSOOCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABzrwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEjjggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAc68AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBI44ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHOvAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSOOCAgICIBKgG8ICIAACNkAAAAhAAAAJQABz1wAAAAOAAAAKAABz10AAAAjAAAA3QABz14AAcrWAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABz2ZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBI4uApYA5gFyAAIAECIEjmtMAAAA6AAAAOwAAAA4AAc9oAAHPcAAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwABz3EAAc9yAAHPcwABz3QAAc91AAHPdgABz3eBI5uBI5yBI52BI56BI5+BI6CBI6GAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABzr0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEjmQgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAc69AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBI5kICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAHOvQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgSOZCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAB8AAAAFwABzr0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgMGAAIEjmQgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAc69AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBI5kICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHOvQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgSOZCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAayAAAAFwABzr0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgSOigACBI5kICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAHP4wAAACEAAAEmAAABJwABz+QAAAAjAAA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AACgAAAErAAAAFwAAABcAAAAXAAHRPwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgSPHCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAB0T8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEjxwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdE/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBI8cICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAHRPwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEjxwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdE/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBI8cICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHRPwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSPHCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAB0T8AAADsAAA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AASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwAB0rAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIEj4ggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAdKwAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBI+IICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHSsAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSPiCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwAB0rAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEj4ggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdKwAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBI+IICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHSsAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSPiCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAA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KgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAB23cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEkgwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdt3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBJIMICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAJnkAAAAXAAHbdwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBA4GAAIEkgwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdt3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBJIMICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHbdwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSSDCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAB23cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEkgwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAdydAAA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MAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEkmggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdy4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBJJoICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHcuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSSaCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAB3LgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEkmggICAiASoCBCAiAAAjSAAAAOwAAAA4AAd3eAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAABK8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVhAAAA7AAAAOwAAAAXAAAA7IAAgFKAAICyCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAABK8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAICyCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAarAAAAFwAABK8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgSLUgACAsggICAiASoC6CAiAAAjSAAAAOwAAAA4AAd4OAAABPKEAAWn0gRwWgEnTAAAAOgAAADsAAAAOAAHeEgAB3hMAAACgoKCAVdMAAAA6AAAAOwAAAA4AAd4WAAHeFwAAAKCgoIBV0wAAADoAAAA7AAAADgAB3hoAAd4bAAAAoKCggFXSAAABPgAAAT8AAd4eAAHeH15YRE1vZGVsUGFja2FnZaYAAd4gAAHeIQAB3iIAAd4jAAHeJAAAAUNeWERNb2RlbFBhY2thZ2VfEA9YRFVNTFBhY2thZ2VJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w0gAAADsAAAAOAAHeJgAAATyggEnTAAAAOgAAADsAAAAOAAHeKQAB3ioAAACgoKCAVV8QFU9idk1lc3Nlbmdlck1vZGVsLXY2NtIAAAE+AAABPwAB3i4AAd4vWVhEUE1Nb2RlbKMAAd4uAAHeMAAAAUNXWERNb2RlbAAAAAgAAAApAAAAMgAAADwAAABBAAAASgAAAE8AAABhAAAAagAAAG8AAABxAACTNQAAkzsAAJN0AACThgAAk40AAJOaAACTrQAAk8UAAJPTAACT7QAAk+8AAJPyAACT9QAAk/cAAJP6AACT/AAAk/8AAJRwAACUjwAAlKwAAJTLAACU3QAAlP0AAJUEAACVIgAAlS4AAJVKAACVUAAAlXIAAJWTAACVpgAAlagAAJWrAACVrgAAlbAAAJWyAACVtAAAlbcAAJW6AACVvAAAlb4AAJXAAACVwgAAlcQAAJXGAACVxwAAlcsAAJXkAACV7AAAlfcAAJa+AACWwAAAlsIAAJbEAACWxgAAlsgAAJbKAACWzAAAls4AAJbQAACW0gAAltQAAJbWAACW2AAAltoAAJbcAACW3gAAluAAAJbiAACW5AAAluYAAJboAACW6gAAluwAAJbuAACW8AAAlvIAAJb0AACW9gAAlvgAAJb6AACW/AAAlv4AAJcAAACXAgAAlwQAAJcGAACXCAAAlwoAAJcMAACXDgAAlxAAAJcSAACXFAAAlxYAAJcYAACXGgAAlxwAAJceAACXIAAAl+cAAJfpAACX7AAAl+8AAJfyAACX9QAAl/gAAJf7AACX/gAAmAEAAJgEAACYBwAAmAoAAJgNAACYDwAAmBIAAJgVAACYGAAAmBsAAJgeAACYIQAAmCQAAJgnAACYKgAAmC0AAJgwAACYMwAAmDYAAJg5AACYPAAAmD8AAJhCAACYRQAAmEgAAJhLAACYTgAAmFEAAJhUAACYVwAAmFoAAJhdAACYYAAAmGMAAJhmAACYaQAAmGwAAJhvAACYcgAAmHUAAJh4AACYegAAmJcAAJiqAACY5gAAmP8AAJknAACZPQAAmVgAAJl3AACZlwAAmbQAAJnOAACZ6AAAmfcAAJoKAACaKgAAmkgAAJpkAACaewAAmqMAAJrAAACa2AAAmt0AAJr7AACbKwAAm0MAAJtoAACbiwAAm68AAJvIAACb8QAAnAcAAJwzAACccAAAnIcAAJygAACc2QAAnPcAAJ0OAACdNAAAnWwAAJ2KAACdnQAAnbkAAJ3SAACd7wAAngoAAJ4lAACeQQAAnl8AAJ7iAACfBgAAnyoAAJ9NAACfdAAAn5QAAJ+7AACf4gAAoAIAAKAmAACgSgAAoFYAAKBYAACgWgAAoFwAAKBeAACgYAAAoGIAAKBlAACgZwAAoGkAAKBsAACgbgAAoHAAAKBzAACgdQAAoHYAAKB/AACghwAAoKAAAKClAACgpwAAoKwAAKCuAACgsAAAoL8AAKEIAAChLAAAoVMAAKF3AACheQAAoXsAAKF9AAChfwAAoYEAAKGDAAChhAAAoYYAAKGfAAChxAAAocYAAKHIAAChygAAocwAAKHOAACh0AAAodIAAKHUAACh1gAAofsAAKH9AACh/wAAogEAAKIDAACiBQAAogcAAKIJAACiCwAAog0AAKIPAACiJQAAojgAAKJUAACicQAAoo0AAKKhAACiswAAoskAAKLiAACjXQAAo2MAAKNsAACjeQAAo4UAAKOPAACjmQAAo6QAAKOvAACjvAAAo8QAAKPGAACjyAAAo8oAAKPMAACjzQAAo84AAKPPAACj0AAAo9IAAKPUAACj1QAAo9YAAKPYAACj2QAAo+oAAKPrAACj7QAAo/4AAKQJAACkEgAApCEAAKQuAACkNgAApD8AAKRQAACkYwAApHQAAKSHAACkngAApLAAAKUrAAClLQAApS8AAKUxAAClMwAApTQAAKU1AAClNgAApTcAAKU5AAClOwAApTwAAKU9AAClPwAApUAAAKW7AAClvQAApb8AAKXBAAClwwAApcQAAKXFAAClxgAApccAAKXJAAClywAApcwAAKXNAAClzwAApdAAAKXhAACl4gAApeQAAKZfAACmYQAApmMAAKZlAACmZwAApmgAAKZpAACmagAApmsAAKZtAACmbwAApnAAAKZxAACmcwAApnQAAKbvAACm8QAApvMAAKb1AACm9wAApvgAAKb5AACm+gAApvsAAKb9AACm/wAApwAAAKcBAACnAwAApwQAAKcVAACnFgAApxgAAKeTAACnlQAAp5cAAKeZAACnmwAAp5wAAKedAACnngAAp58AAKehAACnowAAp6QAAKelAACnpwAAp6gAAKepAACoJAAAqCYAAKgoAACoKgAAqCwAAKgtAACoLgAAqC8AAKgwAACoMgAAqDQAAKg1AACoNgAAqDgAAKg5AACoUgAAqFMAAKhUAACoVgAAqGcAAKh9AACoigAAqJcAAKkSAACpFAAAqRYAAKkYAACpGgAAqRsAAKkcAACpHQAAqR4AAKkgAACpIgAAqSMAAKkkAACpJgAAqScAAKlYAACpWgAAqVwAAKleAACpXwAAqWEAAKl4AACpiQAAqZcAAKmwAACpvgAAqdMAAKnnAACp/gAAqhAAAKqLAACqjQAAqo8AAKqRAACqkwAAqpQAAKqVAACqlgAAqpcAAKqZAACqmwAAqpwAAKqdAACqnwAAqqAAAKq9AACqzgAAquMAAKsAAACrFQAAqyMAAKs4AACrTAAAq2MAAKt1AACrjgAAq5sAAKudAACrnwAAq6EAAKuuAACrsAAAq7IAAKu0AACrtgAAq9EAAKvjAACr7gAArIEAAKykAACsxAAArOQAAKzmAACs6AAArOoAAKzsAACs7gAArO8AAKzwAACs8gAArPMAAKz1AACs9gAArPgAAKz6AACs+wAArPwAAKz+AACs/wAArQQAAK0dAACtJgAArSgAAK0qAACtMwAArTUAAK03AACtOQAArU4AAK1jAACtrAAArdAAAK33AACuGwAArh0AAK4fAACuIQAAriMAAK4lAACuJwAArigAAK4qAACuQwAArmQAAK5mAACuaAAArmoAAK5sAACubgAArnAAAK5yAACudAAArpUAAK6XAACumQAArpsAAK6dAACunwAArqEAAK6jAACupQAArqcAAK7FAACu4wAArvYAAK8KAACvHwAArzwAAK9QAACvZgAAr+EAAK/jAACv5QAAr+cAAK/pAACv6gAAr+sAAK/sAACv7QAAr+8AAK/xAACv8gAAr/MAAK/1AACv9gAAsHEAALBzAACwdQAAsHcAALB5AACwegAAsHsAALB8AACwfQAAsH8AALCBAACwggAAsIMAALCFAACwhgAAsQEAALEDAACxBQAAsQcAALEJAACxCgAAsQsAALEMAACxDQAAsQ8AALERAACxEgAAsRMAALEVAACxFgAAsS8AALEwAACxMQAAsTMAALGuAACxsAAAsbIAALG0AACxtgAAsbcAALG4AACxuQAAsboAALG8AACxvgAAsb8AALHAAACxwgAAscMAALI+AACyQAAAskIAALJEAACyRgAAskcAALJIAACySQAAskoAALJMAACyTgAAsk8AALJQAACyUgAAslMAALLOAACy0AAAstIAALLUAACy1gAAstcAALLYAACy2QAAstoAALLcAACy3gAAst8AALLgAACy4gAAsuMAALNeAACzYAAAs2IAALNkAACzZgAAs2cAALNoAACzaQAAs2oAALNsAACzbgAAs28AALNwAACzcgAAs3MAALPuAACz8AAAs/IAALP0AACz9gAAs/cAALP4AACz+QAAs/oAALP8AACz/gAAs/8AALQAAAC0AgAAtAMAALRMAAC0cAAAtJcAALS7AAC0vQAAtL8AALTBAAC0wwAAtMUAALTHAAC0yAAAtMoAALTjAAC1AAAAtQIAALUEAAC1BgAAtQgAALUKAAC1DAAAtQ4AALUrAAC1LQAAtS8AALUxAAC1MwAAtTUAALU3AAC1OQAAtTsAALVbAAC1hgAAtaAAALW5AAC10wAAtfMAALYWAAC2kQAAtpMAALaVAAC2lwAAtpkAALaaAAC2mwAAtpwAALadAAC2nwAAtqEAALaiAAC2owAAtqUAALamAAC3IQAAtyMAALclAAC3JwAAtykAALcqAAC3KwAAtywAALctAAC3LwAAtzEAALcyAAC3MwAAtzUAALc2AAC3sQAAt7MAALe1AAC3twAAt7kAALe6AAC3uwAAt7wAALe9AAC3vwAAt8EAALfCAAC3wwAAt8UAALfGAAC4QQAAuEMAALhFAAC4RwAAuEkAALhKAAC4SwAAuEwAALhNAAC4TwAAuFEAALhSAAC4UwAAuFUAALh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bAADKHAAAyh4AAMofAADKmgAAypwAAMqeAADKoAAAyqIAAMqjAADKpAAAyqUAAMqmAADKqAAAyqoAAMqrAADKrAAAyq4AAMqvAADLKgAAyywAAMsuAADLMAAAyzIAAMszAADLNAAAyzUAAMs2AADLOAAAyzoAAMs7AADLPAAAyz4AAMs/AADLWAAAy1kAAMtaAADLXAAAy9cAAMvZAADL2wAAy90AAMvfAADL4AAAy+EAAMviAADL4wAAy+UAAMvnAADL6AAAy+kAAMvrAADL7AAAzGcAAMxpAADMawAAzG0AAMxvAADMcAAAzHEAAMxyAADMcwAAzHUAAMx3AADMeAAAzHkAAMx7AADMfAAAzH0AAMz4AADM+gAAzPwAAMz+AADNAAAAzQEAAM0CAADNAwAAzQQAAM0GAADNCAAAzQkAAM0KAADNDAAAzQ0AAM2IAADNigAAzYwAAM2OAADNkAAAzZEAAM2SAADNkwAAzZQAAM2WAADNmAAAzZkAAM2aAADNnAAAzZ0AAM4YAADOGgAAzhwAAM4eAADOIAAAziEAAM4iAADOIwAAziQAAM4mAADOKAAAzikAAM4qAADOLAAAzi0AAM52AADOmgAAzsEAAM7lAADO5wAAzukAAM7rAADO7QAAzu8AAM7xAADO8gAAzvQAAM8NAADPKgAAzywAAM8uAADPMAAAzzIAAM80AADPNgAAzzgAAM9VAADPVwAAz1kAAM9bAADPXQAAz2AAAM9jAADPZgAAz2gAAM96AADPjgAAz6AAAM+1AADPxwAAz9YAAM/zAADQbgAA0HAAANByAADQdAAA0HYAANB3AADQeAAA0HkAANB6AADQfAAA0H4AANB/AADQgAAA0IIAANCDAADQ/gAA0QAAANECAADRBAAA0QYAANEHAADRCAAA0QkAANEKAADRDAAA0Q4AANEPAADREAAA0RIAANETAADRFQAA0ZAAANGSAADRlAAA0ZYAANGYAADRmQAA0ZoAANGbAADRnAAA0Z4AANGgAADRoQAA0aIAANGkAADRpQAA0iAAANIiAADSJAAA0iYAANIoAADSKQAA0ioAANIrAADSLAAA0i4AANIwAADSMQAA0jIAANI0AADSNQAA0rgAANLcAADTAAAA0yMAANNKAADTagAA05EAANO4AADT2AAA0/wAANQgAADUIgAA1CQAANQmAADUKAAA1CoAANQsAADULwAA1DEAANQzAADUNgAA1DgAANQ6AADUPQAA1D8AANRAAADURQAA1F4AANRjAADUZQAA1GoAANRsAADUbgAA1LcAANTbAADVAgAA1SYAANUoAADVKgAA1SwAANUuAADVMAAA1TIAANUzAADVNQAA1U4AANVzAADVdQAA1XcAANV5AADVewAA1X0AANV/AADVgQAA1YMAANWFAADVqgAA1awAANWuAADVsAAA1bIAANW0AADVtgAA1bgAANW6AADVvAAA1b4AANY5AADWOwAA1j0AANY/AADWQQAA1kIAANZDAADWRAAA1kUAANZHAADWSQAA1koAANZLAADWTQAA1k4AANZfAADWYAAA1mIAANbdAADW3wAA1uEAANbjAADW5QAA1uYAANbnAADW6AAA1ukAANbrAADW7QAA1u4AANbvAADW8QAA1vIAANdtAADXbwAA13EAANdzAADXdQAA13YAANd3AADXeAAA13kAANd7AADXfQAA134AANd/AADXgQAA14IAANeTAADXmAAA15oAANecAADXrQAA17YAANe4AADXugAA17wAANfXAADYUgAA2FQAANhWAADYWAAA2FoAANhbAADYXAAA2F0AANheAADYYAAA2GIAANhjAADYZAAA2GYAANhnAADY4gAA2OQAANjmAADY6AAA2OoAANjrAADY7AAA2O0AANjuAADY8AAA2PIAANjzAADY9AAA2PYAANj3AADZCAAA2QkAANkLAADZhgAA2YgAANmKAADZjAAA2Y4AANmPAADZkAAA2ZEAANmSAADZlAAA2ZYAANmXAADZmAAA2ZoAANmbAADaFgAA2hgAANoaAADaHAAA2h4AANofAADaIAAA2iEAANoiAADaJAAA2iYAANonAADaKAAA2ioAANorAADaRAAA2kUAANpGAADaSAAA2sMAANrFAADaxwAA2skAANrLAADazAAA2s0AANrOAADazwAA2tEAANrTAADa1AAA2tUAANrXAADa2AAA21MAANtVAADbVwAA21kAANtbAADbXAAA210AANteAADbXwAA22EAANtjAADbZAAA22UAANtnAADbaAAA23sAANuUAADb5wAA2+kAANvrAADb7QAA2+8AANvxAADb8wAA2/UAANv3AADb+QAA2/sAANv9AADb/wAA3AEAANwDAADcBQAA3AcAANwJAADcCwAA3A0AANwPAADcYgAA3GQAANxnAADcagAA3G0AANxwAADccwAA3HYAANx5AADcfAAA3H8AANyCAADchQAA3IgAANyLAADcjgAA3JEAANyUAADclwAA3JoAANydAADcnwAA3LEAANzMAADc3gAA3PQAAN0CAADdDwAA3RoAAN0yAADdRQAA3WMAAN15AADdiAAA3Z0AAN3KAADd7gAA3gEAAN4cAADeLwAA3ksAAN7eAADfAQAA3yEAAN9BAADfQwAA30UAAN9HAADfSQAA30sAAN9MAADfTQAA308AAN9QAADfUgAA31MAAN9VAADfVwAA31gAAN9ZAADfWwAA31wAAN9lAADffgAA34cAAN+JAADfiwAA35QAAN+WAADfmAAA35oAAN/jAADgBwAA4C4AAOBSAADgVAAA4FYAAOBYAADgWgAA4FwAAOBeAADgXwAA4GEAAOB6AADgmwAA4J0AAOCfAADgoQAA4KMAAOClAADgpwAA4KkAAOCrAADgzAAA4M4AAODQAADg0gAA4NQAAODWAADg2AAA4NoAAODcAADg3gAA4VkAAOFbAADhXQAA4V8AAOFhAADhYgAA4WMAAOFkAADhZQAA4WcAAOFpAADhagAA4WsAAOFtAADhbgAA4ekAAOHrAADh7QAA4e8AAOHxAADh8gAA4fMAAOH0AADh9QAA4fcAAOH5AADh+gAA4fsAAOH9AADh/gAA4nkAAOJ7AADifQAA4n8AAOKBAADiggAA4oMAAOKEAADihQAA4ocAAOKJAADiigAA4osAAOKNAADijgAA4qcAAOKoAADiqQAA4qsAAOMmAADjKAAA4yoAAOMsAADjLgAA4y8AAOMwAADjMQAA4zIAAOM0AADjNgAA4zcAAOM4AADjOgAA4zsAAOO2AADjuAAA47oAAOO8AADjvgAA478AAOPAAADjwQAA48IAAOPEAADjxgAA48cAAOPIAADjygAA48sAAORGAADkSAAA5EoAAORMAADkTgAA5E8AAORQAADkUQAA5FIAAORUAADkVgAA5FcAAORYAADkWgAA5FsAAOTWAADk2AAA5NoAAOTcAADk3gAA5N8AAOTgAADk4QAA5OIAAOTkAADk5gAA5OcAAOToAADk6gAA5OsAAOVmAADlaAAA5WoAAOVsAADlbgAA5W8AAOVwAADlcQAA5XIAAOV0AADldgAA5XcAAOV4AADlegAA5XsAAOXEAADl6AAA5g8AAOYzAADmNQAA5jcAAOY5AADmOwAA5j0AAOY/AADmQAAA5kIAAOZbAADmeAAA5noAAOZ8AADmfgAA5oAAAOaCAADmhAAA5oYAAOajAADmpQAA5qcAAOapAADmqwAA5q4AAOaxAADmtAAA5rYAAOcxAADnMwAA5zUAAOc3AADnOQAA5zoAAOc7AADnPAAA5z0AAOc/AADnQQAA50IAAOdDAADnRQAA50YAAOdJAADnxAAA58YAAOfIAADnygAA58wAAOfNAADnzgAA588AAOfQAADn0gAA59QAAOfVAADn1gAA59gAAOfZAADoVAAA6FYAAOhYAADoWgAA6FwAAOhdAADoXgAA6F8AAOhgAADoYgAA6GQAAOhlAADoZgAA6GgAAOhpAADo5AAA6OYAAOjoAADo6gAA6OwAAOjtAADo7gAA6O8AAOjwAADo8gAA6PQAAOj1AADo9gAA6PgAAOj5AADo/AAA6XcAAOl5AADpewAA6X0AAOl/AADpgAAA6YEAAOmCAADpgwAA6YUAAOmHAADpiAAA6YkAAOmLAADpjAAA6gcAAOoJAADqCwAA6g0AAOoPAADqEAAA6hEAAOoSAADqEwAA6hUAAOoXAADqGAAA6hkAAOobAADqHAAA6pcAAOqZAADqmwAA6p0AAOqfAADqoAAA6qEAAOqiAADqowAA6qUAAOqnAADqqAAA6qkAAOqrAADqrAAA6z8AAOtiAADrggAA66IAAOukAADrpgAA66gAAOuqAADrrAAA660AAOuuAADrsQAA67IAAOu0AADrtQAA67cAAOu5AADrugAA67sAAOu+AADrvwAA68QAAOvdAADr5gAA6+gAAOvqAADr8wAA6/YAAOv5AADr+wAA7EQAAOxoAADsjwAA7LMAAOy2AADsuAAA7LoAAOy8AADsvgAA7MAAAOzBAADsxAAA7N0AAOz+AADtAAAA7QIAAO0EAADtBgAA7QgAAO0KAADtDAAA7Q4AAO0vAADtMgAA7TUAAO04AADtOwAA7T4AAO1BAADtRAAA7UcAAO1JAADtxAAA7cYAAO3IAADtygAA7c0AAO3OAADtzwAA7dAAAO3RAADt0wAA7dUAAO3WAADt1wAA7dkAAO3aAADuVQAA7lcAAO5ZAADuWwAA7l4AAO5fAADuYAAA7mEAAO5iAADuZAAA7mYAAO5nAADuaAAA7moAAO5rAADu5gAA7ugAAO7rAADu7QAA7vAAAO7xAADu8gAA7vMAAO70AADu9gAA7vgAAO75AADu+gAA7vwAAO79AADvFgAA7xcAAO8YAADvGgAA75UAAO+XAADvmQAA75sAAO+eAADvnwAA76AAAO+hAADvogAA76QAAO+mAADvpwAA76gAAO+qAADvqwAA8CYAAPAoAADwKgAA8CwAAPAvAADwMAAA8DEAAPAyAADwMwAA8DUAAPA3AADwOAAA8DkAAPA7AADwPAAA8LcAAPC5AADwuwAA8L0AAPDAAADwwQAA8MIAAPDDAADwxAAA8MYAAPDIAADwyQAA8MoAAPDMAADwzQAA8UgAAPFKAADxTAAA8U4AAPFRAADxUgAA8VMAAPFUAADxVQAA8VcAAPFZAADxWgAA8VsAAPFdAADxXgAA8dkAAPHbAADx3QAA8d8AAPHiAADx4wAA8eQAAPHlAADx5gAA8egAAPHqAADx6wAA8ewAAPHuAADx7wAA8jgAAPJcAADygwAA8qcAAPKqAADyrAAA8q4AAPKwAADysgAA8rQAAPK1AADyuAAA8tEAAPLuAADy8AAA8vIAAPL0AADy9gAA8vgAAPL6AADy/AAA8xkAAPMcAADzHwAA8yIAAPMlAADzKAAA8ysAAPMuAADzMAAA86sAAPOtAADzrwAA87EAAPO0AADztQAA87YAAPO3AADzuAAA87oAAPO8AADzvQAA874AAPPAAADzwQAA9DwAAPQ+AAD0QAAA9EIAAPRFAAD0RgAA9EcAAPRIAAD0SQAA9EsAAPRNAAD0TgAA9E8AAPRRAAD0UgAA9M0AAPTPAAD00QAA9NMAAPTWAAD01wAA9NgAAPTZAAD02gAA9NwAAPTeAAD03wAA9OAAAPTiAAD04wAA9V4AAPVgAAD1YgAA9WQAAPVnAAD1aAAA9WkAAPVqAAD1awAA9W0AAPVvAAD1cAAA9XEAAPVzAAD1dAAA9e8AAPXxAAD18wAA9fUAAPX4AAD1+QAA9foAAPX7AAD1/AAA9f4AAPYAAAD2AQAA9gIAAPYEAAD2BQAA9oAAAPaCAAD2hAAA9oYAAPaJAAD2igAA9osAAPaMAAD2jQAA9o8AAPaRAAD2kgAA9pMAAPa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jAAER5AABEeYAARHnAAESAAABEgEAARICAAESBAABEn8AARKBAAESgwABEoUAARKIAAESiQABEooAARKLAAESjAABEo4AARKQAAESkQABEpIAARKUAAESlQABExAAARMSAAETFAABExYAARMZAAETGgABExsAARMcAAETHQABEx8AARMhAAETIgABEyMAARMlAAETJgABE6EAAROjAAETpQABE6cAAROqAAETqwABE6wAAROtAAETrgABE7AAAROyAAETswABE7QAARO2AAETtwABFDIAARQ0AAEUNgABFDgAARQ7AAEUPAABFD0AARQ+AAEUPwABFEEAARRDAAEURAABFEUAARRHAAEUSAABFMMAARTFAAEUxwABFMkAARTMAAEUzQABFM4AARTPAAEU0AABFNIAARTUAAEU1QABFNYAARTYAAEU2QABFSIAARVGAAEVbQABFZEAARWUAAEVlgABFZgAARWaAAEVnAABFZ4AARWfAAEVogABFbsAARXYAAEV2gABFdwAARXeAAEV4AABFeIAARXkAAEV5gABFgMAARYGAAEWCQABFgwAARYPAAEWEgABFhUAARYYAAEWGgABFpUAARaXAAEWmQABFpsAARaeAAEWnwABFqAAARahAAEWogABFqQAARamAAEWpwABFqgAARaqAAEWqwABFyYAARcoAAEXKgABFywAARcvAAEXMAABFzEAARcyAAEXMwABFzUAARc3AAEXOAABFzkAARc7AAEXPAABF7cAARe5AAEXuwABF70AARfAAAEXwQABF8IAARfDAAEXxAABF8YAARfIAAEXyQABF8oAARfMAAEXzQABGEgAARhKAAEYTAABGE4AARhRAAEYUgABGFMAARhUAAEYVQABGFcAARhZAAEYWgABGFsAARhdAAEYXgABGNkAARjbAAEY3QABGN8AARjiAAEY4wABGOQAARjlAAEY5gABGOgAARjqAAEY6wABGOwAARjuAAEY7wABGWoAARlsAAEZbgABGXAAARlzAAEZdAABGXUAARl2AAEZdwABGXkAARl7AAEZfAABGX0AARl/AAEZgAABGfsAARn9AAEZ/wABGgEAARoEAAEaBQABGgYAARoHAAEaCAABGgoAARoMAAEaDQABGg4AARoQAAEaEQABGqQAARrHAAEa5wABGwcAARsJAAEbCwABGw0AARsPAAEbEgABGxMAARsUAAEbFwABGxgAARsaAAEbGwABGx0AARsgAAEbIQABGyIAARslAAEbJgABGysAARtEAAEbTQABG08AARtRAAEbWgABG10AARtgAAEbYgABG6sAARvPAAEb9gABHBoAARwdAAEcHwABHCEAARwjAAEcJQABHCcAARwoAAEcKwABHEQAARxlAAEcZwABHGkAARxrAAEcbQABHG8AARxxAAEccwABHHUAARyWAAEcmQABHJwAARyfAAEcogABHKUAARyoAAEcqwABHK4AARywAAEdKwABHS0AAR0vAAEdMQABHTQAAR01AAEdNgABHTcAAR04AAEdOgABHTwAAR09AAEdPgABHUAAAR1BAAEdvAABHb4AAR3AAAEdwgABHcUAAR3GAAEdxwABHcgAAR3JAAEdywABHc0AAR3OAAEdzwABHdEAAR3SAAEeTQABHk8AAR5SAAEeVAABHlcAAR5YAAEeWQABHloAAR5bAAEeXQABHl8AAR5gAAEeYQABHmMAAR5kAAEefQABHn4AAR5/AAEegQABHvwAAR7+AAEfAAABHwIAAR8FAAEfBgABHwcAAR8IAAEfCQABHwsAAR8NAAEfDgABHw8AAR8RAAEfEgABH40AAR+PAAEfkQABH5MAAR+WAAEflwABH5gAAR+ZAAEfmgABH5wAAR+eAAEfnwABH6AAAR+iAAEfowABIB4AASAgAAEgIgABICQAASAnAAEgKAABICkAASAqAAEgKwABIC0AASAvAAEgMAABIDEAASAzAAEgNAABIK8AASCxAAEgswABILUAASC4AAEguQABILoAASC7AAEgvAABIL4AASDAAAEgwQABIMIAASDEAAEgxQABIUAAASFCAAEhRAABIUYAASFJAAEhSgABIUsAASFMAAEhTQABIU8AASFRAAEhUgABIVMAASFVAAEhVgABIZ8AASHDAAEh6gABIg4AASIRAAEiEwABIhUAASIXAAEiGQABIhsAASIcAAEiHwABIjgAASJVAAEiVwABIlkAASJbAAEiXQABIl8AASJhAAEiYwABIoAAASKDAAEihgABIokAASKMAAEijwABIpIAASKVAAEilwABIxIAASMUAAEjFgABIxgAASMbAAEjHAABIx0AASMeAAEjHwABIyEAASMjAAEjJAABIyUAASMnAAEjKAABI6MAASOlAAEjpwABI6kAASOsAAEjrQABI64AASOvAAEjsAABI7IAASO0AAEjtQABI7YAASO4AAEjuQABJDQAASQ2AAEkOAABJDoAASQ9AAEkPgABJD8AASRAAAEkQQABJEMAASRFAAEkRgABJEcAASRJAAEkSgABJMUAASTHAAEkygABJMwAASTPAAEk0AABJNEAASTSAAEk0wABJNUAASTXAAEk2AABJNkAASTbAAEk3AABJN8AASVaAAElXAABJV4AASVgAAElYwABJWQAASVlAAElZgABJWcAASVpAAElawABJWwAASVtAAElbwABJXAAASXrAAEl7QABJe8AASXxAAEl9AABJfUAASX2AAEl9wABJfgAASX6AAEl/AABJf0AASX+AAEmAAABJgEAASZ8AAEmfgABJoAAASaCAAEmhQABJoYAASaHAAEmiAABJokAASaLAAEmjQABJo4AASaPAAEmkQABJpIAASclAAEnSAABJ2gAASeIAAEnigABJ4wAASeOAAEnkAABJ5MAASeUAAEnlQABJ5gAASeZAAEnmwABJ5wAASeeAAEnoQABJ6IAASejAAEnpgABJ6cAASesAAEnxQABJ84AASfQAAEn0gABJ9sAASfeAAEn4QABJ+MAASgsAAEoUAABKHcAASibAAEongABKKAAASiiAAEopAABKKYAASioAAEoqQABKKwAASjFAAEo5gABKOgAASjqAAEo7AABKO4AASjwAAEo8gABKPQAASj2AAEpFwABKRoAASkdAAEpIAABKSMAASkmAAEpKQABKSwAASkvAAEpMQABKawAASmuAAEpsAABKbIAASm1AAEptgABKbcAASm4AAEpuQABKbsAASm9AAEpvgABKb8AASnBAAEpwgABKj0AASo/AAEqQQABKkMAASpGAAEqRwABKkgAASpJAAEqSgABKkwAASpOAAEqTwABKlAAASpSAAEqUwABKs4AASrQAAEq0wABKtUAASrYAAEq2QABKtoAASrbAAEq3AABKt4AASrgAAEq4QABKuIAASrkAAEq5QABKv4AASr/AAErAAABKwIAASt9AAErfwABK4EAASuDAAErhgABK4cAASuIAAEriQABK4oAASuMAAErjgABK48AASuQAAErkgABK5MAASwOAAEsEAABLBIAASwUAAEsFwABLBgAASwZAAEsGgABLBsAASwdAAEsHwABLCAAASwhAAEsIwABLCQAASyfAAEsoQABLKMAASylAAEsqAABLKkAASyqAAEsqwABLKwAASyuAAEssAABLLEAASyyAAEstAABLLUAAS0wAAEtMgABLTQAAS02AAEtOQABLToAAS07AAEtPAABLT0AAS0/AAEtQQABLUIAAS1DAAEtRQABLUYAAS3BAAEtwwABLcUAAS3HAAEtygABLcsAAS3MAAEtzQABLc4AAS3QAAEt0gABLdMAAS3UAAEt1gABLdcAAS4gAAEuRAABLmsAAS6PAAEukgABLpQAAS6WAAEumAABLpoAAS6cAAEunQABLqAAAS65AAEu1gABLtgAAS7aAAEu3AABLt4AAS7gAAEu4gABLuQAAS8BAAEvBAABLwcAAS8KAAEvDQABLxAAAS8TAAEvFgABLxgAAS+TAAEvlQABL5cAAS+ZAAEvnAABL50AAS+eAAEvnwABL6AAAS+iAAEvpAABL6UAAS+mAAEvqAABL6kAATAkAAEwJgABMCgAATAqAAEwLQABMC4AATAvAAEwMAABMDEAATAzAAEwNQABMDYAATA3AAEwOQABMDoAATC1AAEwtwABMLkAATC7AAEwvgABML8AATDAAAEwwQABMMIAATDEAAEwxgABMMcAATDIAAEwygABMMsAATFGAAExSAABMUoAATFMAAExTwABMVAAATFRAAExUgABMVMAATFVAAExVwABMVgAATFZAAExWwABMVwAATHXAAEx2QABMdsAATHdAAEx4AABMeEAATHiAAEx4wABMeQAATHmAAEx6AABMekAATHqAAEx7AABMe0AATJoAAEyagABMmwAATJuAAEycQABMnIAATJzAAEydAABMnUAATJ3AAEyeQABMnoAATJ7AAEyfQABMn4AATL5AAEy+wABMv0AATL/AAEzAgABMwMAATMEAAEzBQABMwYAATMIAAEzCgABMwsAATMMAAEzDgABMw8AATOiAAEzxQABM+UAATQFAAE0BwABNAkAATQLAAE0DQABNBAAATQRAAE0EgABNBUAATQWAAE0GAABNBkAATQbAAE0HgABNB8AATQgAAE0IwABNCQAATQtAAE0RgABNE8AATRRAAE0UwABNFwAATRfAAE0YgABNGQAATStAAE00QABNPgAATUcAAE1HwABNSEAATUjAAE1JQABNScAATUpAAE1KgABNS0AATVGAAE1ZwABNWkAATVrAAE1bQABNW8AATVxAAE1cwABNXUAATV3AAE1mAABNZsAATWeAAE1oQABNaQAATWnAAE1qgABNa0AATWwAAE1sgABNi0AATYvAAE2MQABNjMAATY2AAE2NwABNjgAATY5AAE2OgABNjwAATY+AAE2PwABNkAAATZCAAE2QwABNr4AATbAAAE2wgABNsQAATbHAAE2yAABNskAATbKAAE2ywABNs0AATbPAAE20AABNtEAATbTAAE21AABN08AATdRAAE3VAABN1YAATdZAAE3WgABN1sAATdcAAE3XQABN18AATdhAAE3YgABN2MAATdlAAE3ZgABN38AATeAAAE3gQABN4MAATf+AAE4AAABOAIAATgEAAE4BwABOAgAATgJAAE4CgABOAsAATgNAAE4DwABOBAAATgRAAE4EwABOBQAATiPAAE4kQABOJMAATiVAAE4mAABOJkAATiaAAE4mwABOJwAATieAAE4oAABOKEAATiiAAE4pAABOKUAATkgAAE5IgABOSQAATkmAAE5KQABOSoAATkrAAE5LAABOS0AATkvAAE5MQABOTIAATkzAAE5NQABOTYAATmxAAE5swABObUAATm3AAE5ugABObsAATm8AAE5vQABOb4AATnAAAE5wgABOcMAATnEAAE5xgABOccAATpCAAE6RAABOkYAATpIAAE6SwABOkwAATpNAAE6TgABOk8AATpRAAE6UwABOlQAATpVAAE6VwABOlgAATqhAAE6xQABOuwAATsQAAE7EwABOxUAATsXAAE7GQABOxsAATsdAAE7HgABOyEAATs6AAE7VwABO1kAATtbAAE7XQABO18AATthAAE7YwABO2UAATuCAAE7hQABO4gAATuLAAE7jgABO5EAATuUAAE7lwABO5kAATwUAAE8FgABPBgAATwaAAE8HQABPB4AATwfAAE8IAABPCEAATwjAAE8JQABPCYAATwnAAE8KQABPCoAATylAAE8pwABPKkAATyrAAE8rgABPK8AATywAAE8sQABPLIAATy0AAE8tgABPLcAATy4AAE8ugABPLsAAT02AAE9OAABPToAAT08AAE9PwABPUAAAT1BAAE9QgABPUMAAT1FAAE9RwABPUgAAT1JAAE9SwABPUwAAT3HAAE9yQABPcsAAT3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3AAFX+AABV/kAAVf7AAFX/QABV/4AAVf/AAFYAQABWAIAAVh9AAFYfwABWIEAAViDAAFYhgABWIcAAViIAAFYiQABWIoAAViMAAFYjgABWI8AAViQAAFYkgABWJMAAVkmAAFZSQABWWkAAVmJAAFZiwABWY0AAVmPAAFZkQABWZQAAVmVAAFZlgABWZkAAVmaAAFZnAABWZ0AAVmfAAFZogABWaMAAVmkAAFZpwABWagAAVmtAAFZxgABWc8AAVnRAAFZ0wABWdwAAVnfAAFZ4gABWeQAAVotAAFaUQABWngAAVqcAAFanwABWqEAAVqjAAFapQABWqcAAVqpAAFaqgABWq0AAVrGAAFa5wABWukAAVrrAAFa7QABWu8AAVrxAAFa8wABWvUAAVr3AAFbGAABWxsAAVseAAFbIQABWyQAAVsnAAFbKgABWy0AAVswAAFbMgABW60AAVuvAAFbsQABW7MAAVu2AAFbtwABW7gAAVu5AAFbugABW7wAAVu+AAFbvwABW8AAAVvCAAFbwwABXD4AAVxAAAFcQgABXEQAAVxHAAFcSAABXEkAAVxKAAFcSwABXE0AAVxPAAFcUAABXFEAAVxTAAFcVAABXM8AAVzRAAFc1AABXNYAAVzZAAFc2gABXNsAAVzcAAFc3QABXN8AAVzhAAFc4gABXOMAAVzlAAFc5gABXP8AAV0AAAFdAQABXQMAAV1+AAFdgAABXYIAAV2EAAFdhwABXYgAAV2JAAFdigABXYsAAV2NAAFdjwABXZAAAV2RAAFdkwABXZQAAV4PAAFeEQABXhMAAV4VAAFeGAABXhkAAV4aAAFeGwABXhwAAV4eAAFeIAABXiEAAV4iAAFeJAABXiUAAV6gAAFeogABXqQAAV6mAAFeqQABXqoAAV6rAAFerAABXq0AAV6vAAFesQABXrIAAV6zAAFetQABXrYAAV8xAAFfMwABXzUAAV83AAFfOgABXzsAAV88AAFfPQABXz4AAV9AAAFfQgABX0MAAV9EAAFfRgABX0cAAV/CAAFfxAABX8YAAV/IAAFfywABX8wAAV/NAAFfzgABX88AAV/RAAFf0wABX9QAAV/VAAFf1wABX9gAAWAhAAFgRQABYGwAAWCQAAFgkwABYJUAAWCXAAFgmQABYJsAAWCdAAFgngABYKEAAWC6AAFg1wABYNkAAWD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RAAFykgABcpUAAXKWAAFymAABcpkAAXKcAAFynwABcqAAAXKhAAFypAABcqUAAXKuAAFyxwABctAAAXLSAAFy1AABct0AAXLgAAFy4wABcuUAAXMuAAFzUgABc3kAAXOdAAFzoAABc6IAAXOkAAFzpgABc6gAAXOqAAFzqwABc64AAXPHAAFz6AABc+oAAXPsAAFz7gABc/AAAXPyAAFz9AABc/YAAXP4AAF0GQABdBwAAXQfAAF0IgABdCUAAXQoAAF0KwABdC4AAXQxAAF0MwABdK4AAXSwAAF0sgABdLQAAXS3AAF0uAABdLkAAXS6AAF0uwABdL0AAXS/AAF0wAABdMEAAXTDAAF0xAABdT8AAXVBAAF1QwABdUUAAXVIAAF1SQABdUoAAXVLAAF1TAABdU4AAXVQAAF1UQABdVIAAXVUAAF1VQABddAAAXXSAAF11QABddcAAXXaAAF12wABddwAAXXdAAF13gABdeAAAXXiAAF14wABdeQAAXXmAAF15wABdgAAAXYBAAF2AgABdgQAAXZ/AAF2gQABdoMAAXaFAAF2iAABdokAAXaKAAF2iwABdowAAXaOAAF2kAABdpEAAXaSAAF2lAABdpUAAXcQAAF3EgABdxQAAXcWAAF3GQABdxoAAXcbAAF3HAABdx0AAXcfAAF3IQABdyIAAXcjAAF3JQABdyYAAXehAAF3owABd6UAAXenAAF3qgABd6sAAXesAAF3rQABd64AAXewAAF3sgABd7MAAXe0AAF3tgABd7cAAXgyAAF4NAABeDYAAXg4AAF4OwABeDwAAXg9AAF4PgABeD8AAXhBAAF4QwABeEQAAXhFAAF4RwABeEgAAXjDAAF4xQABeMcAAXjJAAF4zAABeM0AAXjOAAF4zwABeNAAAXjSAAF41AABeNUAAXjWAAF42AABeNkAAXkiAAF5RgABeW0AAXmRAAF5lAABeZYAAXmYAAF5mgABeZwAAXmeAAF5nwABeaIAAXm7AAF52AABedoAAXncAAF53gABeeAAAXniAAF55AABeeYAAXoDAAF6BgABegkAAXoMAAF6DwABehIAAXoVAAF6GAABehoAAXqVAAF6lwABepkAAXqbAAF6ngABep8AAXqgAAF6oQABeqIAAXqkAAF6pgABeqcAAXqoAAF6qgABeqsAAXsmAAF7KAABeyoAAXs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zAAGW0wABltUAAZbXAAGW2QABltsAAZbeAAGW3wABluAAAZbjAAGW5AABluYAAZbnAAGW6QABluwAAZbtAAGW7gABlvEAAZbyAAGW9wABlxAAAZcZAAGXGwABlx0AAZcmAAGXKQABlywAAZcuAAGXdwABl5sAAZfCAAGX5gABl+kAAZfrAAGX7QABl+8AAZfxAAGX8wABl/QAAZf3AAGYEAABmDEAAZgzAAGYNQABmDcAAZg5AAGYOwABmD0AAZg/AAGYQQABmGIAAZhlAAGYaAABmGsAAZhuAAGYcQABmHQAAZh3AAGYegABmHwAAZj3AAGY+QABmPsAAZj9AAGZAAABmQEAAZkCAAGZAwABmQQAAZkGAAGZCAABmQkAAZkKAAGZDAABmQ0AAZmIAAGZigABmYwAAZmOAAGZkQABmZIAAZmTAAGZlAABmZUAAZmXAAGZmQABmZoAAZmbAAGZnQABmZ4AAZoZAAGaGwABmh4AAZogAAGaIwABmiQAAZolAAGaJgABmicAAZopAAGaKwABmiwAAZotAAGaLwABmjAAAZpJAAGaSgABmksAAZpNAAGayAABmsoAAZrMAAGazgABmtEAAZrSAAGa0wABmtQAAZrVAAGa1wABmtkAAZraAAGa2wABmt0AAZreAAGbWQABm1sAAZtdAAGbXwABm2IAAZtjAAGbZAABm2UAAZtmAAGbaAABm2oAAZtrAAGbbAABm24AAZtvAAGb6gABm+wAAZvuAAGb8AABm/MAAZv0AAGb9QABm/YAAZv3AAGb+QABm/sAAZv8AAGb/QABm/8AAZwAAAGcewABnH0AAZx/AAGcgQABnIQAAZyFAAGchgABnIcAAZyIAAGcigABnIwAAZyNAAGcjgABnJAAAZyRAAGdDAABnQ4AAZ0QAAGdEgABnRUAAZ0WAAGdFwABnRgAAZ0ZAAGdGwABnR0AAZ0eAAGdHwABnSEAAZ0iAAGdawABnY8AAZ22AAGd2gABnd0AAZ3fAAGd4QABneMAAZ3lAAGd5wABnegAAZ3rAAGeBAABniEAAZ4jAAGeJQABnicAAZ4pAAGeKwABni0AAZ4vAAGeTAABnk8AAZ5SAAGeVQABnlgAAZ5bAAGeXgABnmEAAZ5jAAGe3gABnuAAAZ7iAAGe5AABnucAAZ7oAAGe6QABnuoAAZ7rAAGe7QABnu8AAZ7wAAGe8QABnvMAAZ70AAGfbwABn3EAAZ9zAAGfdQABn3gAAZ95AAGfegABn3sAAZ98AAGffgABn4AAAZ+BAAGfggABn4QAAZ+FAAGgAAABoAIAAaAEAAGgBgABoAkAAaAKAAGgCwABoAwAAaANAAGgDwABoBEAAaASAAGgEwABoBUAAaAWAAGgkQABoJMAAaCWAAGgmAABoJsAAaCcAAGgnQABoJ4AAaCfAAGgoQABoKMAAaCkAAGgpQABoKcAAaCoAAGhIwABoSUAAaEnAAGhKQABoSwAAaEtAAGhLgABoS8AAaEwAAGhMgABoTQAAaE1AAGhNgABoTgAAaE5AAGhtAABobYAAaG4AAGhugABob0AAaG+AAGhvwABocAAAaHBAAGhwwABocUAAaHGAAGhxwABockAAaHKAAGiRQABokcAAaJJAAGiSwABok4AAaJPAAGiUAABolEAAaJSAAGiVAABolYAAaJXAAGiWAABoloAAaJbAAGi7gABoxEAAaMxAAGjUQABo1MAAaNVAAGjVwABo1kAAaNcAAGjXQABo14AAaNhAAGjYgABo2QAAaNlAAGjaAABo2sAAaNsAAGjbQABo3AAAaNxAAGjdgABo48AAaOYAAGjmgABo5wAAaOlAAGjqAABo6sAAaOtAAGj9gABpBoAAaRBAAGkZQABpGgAAaRqAAGkbAABpG4AAaRwAAGkcgABpHMAAaR2AAGkjwABpLAAAaSyAAGktAABpLYAAaS4AAGkugABpLwAAaS+AAGkwAABpOEAAaTkAAGk5wABpOoAAaTtAAGk8AABpPMAAaT2AAGk+QABpPsAAaV2AAGleAABpXoAAaV8AAGlfwABpYAAAaWBAAGlggABpYMAAaWFAAGlhwABpYgAAaWJAAGliwABpYwAAaYHAAGmCQABpgsAAaYNAAGmEAABphEAAaYSAAGmEwABphQAAaYWAAGmGAABphkAAaYaAAGmHAABph0AAaaYAAGmmgABpp0AAaafAAGmogABpqMAAaakAAGmpQABpqYAAaaoAAGmqgABpqsAAaasAAGmrgABpq8AAabIAAGmyQABpsoAAabMAAGnRwABp0kAAadLAAGnTQABp1AAAadRAAGnUgABp1MAAadUAAGnVgABp1gAAadZAAGnWgABp1wAAaddAAGn2AABp9oAAafcAAGn3gABp+EAAafiAAGn4wABp+QAAaflAAGn5wABp+kAAafqAAGn6wABp+0AAafuAAGoaQABqGsAAahtAAGobwABqHIAAahzAAGodAABqHUAAah2AAGoeAABqHoAAah7AAGofAABqH4AAah/AAGo+gABqPwAAaj+AAGpAAABqQMAAakEAAGpBQABqQYAAakHAAGpCQABqQsAAakMAAGpDQABqQ8AAakQAAGpiwABqY0AAamPAAGpkQABqZQAAamVAAGplgABqZcAAamYAAGpmgABqZwAAamdAAGpngABqaAAAamhAAGp6gABqg4AAao1AAGqWQABqlwAAapeAAGqYAABqmIAAapkAAGqZgABqmcAAapqAAGqgwABqqAAAaqiAAGqpAABqqYAAaqoAAGqqgABqqwAAaquAAGqywABqs4AAarRAAGq1AABqtcAAaraAAGq3QABquAAAariAAGrXQABq18AAathAAGrYwABq2YAAatnAAGraAABq2kAAatqAAGrbAABq24AAatvAAGrcAABq3IAAatzAAGr7gABq/AAAavyAAGr9AABq/cAAav4AAGr+QABq/oAAav7AAGr/QABq/8AAawAAAGsAQABrAMAAawEAAGsfwABrIEAAayDAAGshQABrIgAAayJAAGsigABrIsAAayMAAGsjgABrJAAAayRAAGskgABrJQAAayVAAGtEAABrRIAAa0VAAGtFwABrRoAAa0bAAGtHAABrR0AAa0eAAGtIAABrSIAAa0jAAGtJAABrSYAAa0nAAGtqgABrc4AAa3yAAGuFQABrjwAAa5cAAGugwABrqoAAa7KAAGu7gABrxIAAa8UAAGvFwABrxkAAa8bAAGvHQABryAAAa8jAAGvJQABrycAAa8qAAGvLAABry4AAa8xAAGvNAABrzUAAa86AAGvUwABr1gAAa9aAAGvXwABr2IAAa9kAAGvrQABr9EAAa/4AAGwHAABsB8AAbAhAAGwIwABsCUAAbAnAAGwKQABsCoAAbAtAAGwRgABsGsAAbBtAAGwbwABsHEAAbBzAAGwdQABsHcAAbB5AAGwewABsH0AAbCiAAGwpQABsKgAAbCrAAGwrgABsLEAAbC0AAGwtwABsLoAAbC9AAGwvwABsToAAbE8AAGxPwABsUEAAbFEAAGxRQABsUYAAbFHAAGxSAABsUoAAbFMAAGxTQABsU4AAbFQAAGxUQABsWIAAbFjAAGxZQABseAAAbHiAAGx5AABseYAAbHpAAGx6gABsesAAbHsAAGx7QABse8AAbHxAAGx8gABsfMAAbH1AAGx9gABsnEAAbJzAAGydgABsngAAbJ7AAGyfAABsn0AAbJ+AAGyfwABsoEAAbKDAAGyhAABsoUAAbKHAAGyiAABspkAAbKaAAGynAABsxcAAbMZAAGzGwABsx0AAbMgAAGzIQABsyIAAbMjAAGzJAABsyYAAbMoAAGzKQABsyoAAbMsAAGzLQABs6gAAbOqAAGzrQABs68AAbOyAAGzswABs7QAAbO1AAGztgABs7gAAbO6AAGzuwABs7wAAbO+AAGzvwABs9AAAbPRAAGz0wABtE4AAbRQAAG0UgABtFQAAbRXAAG0WAABtFkAAbRaAAG0WwABtF0AAbRfAAG0YAABtGEAAbRjAAG0ZAABtN8AAbThAAG05AABtOYAAbTpAAG06gABtOsAAbTsAAG07QABtO8AAbTxAAG08gABtPMAAbT1AAG09gABtQ8AAbUQAAG1EQABtRMAAbWOAAG1kAABtZIAAbWUAAG1lwABtZgAAbWZAAG1mgABtZsAAbWdAAG1nwABtaAAAbWhAAG1owABtaQAAbYfAAG2IQABtiQAAbYmAAG2KQABtioAAbYrAAG2LAABti0AAbYvAAG2MQABtjIAAbYzAAG2NQABtjYAAbZQAAG2aQABtnoAAbZ9AAG2gAABtoMAAbaGAAG2lwABtpoAAbadAAG2oAABtqMAAbalAAG2twABtsMAAbbMAAG22gABt20AAbeQAAG3sAABt9AAAbfSAAG31AABt9YAAbfYAAG32wABt9wAAbfdAAG34AABt+EAAbfjAAG35AABt+cAAbfqAAG36wABt+wAAbfvAAG38AABt/UAAbgOAAG4FwABuBkAAbgbAAG4JAABuCcAAbgqAAG4LAABuHUAAbiZAAG4wAABuOQAAbjnAAG46QABuOsAAbjtAAG47wABuPEAAbjyAAG49QABuQ4AAbkvAAG5MQABuTMAAbk1AAG5NwABuTkAAbk7AAG5PQABuT8AAblgAAG5YwABuWYAAblpAAG5bAABuW8AAblyAAG5dQABuXgAAbl6AAG59QABufcAAbn5AAG5+wABuf4AAbn/AAG6AAABugEAAboCAAG6BAABugYAAbo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SAAHVUwAB1VQAAdVWAAHVVwAB1WgAAdVpAAHVawAB1eYAAdXoAAHV6gAB1ewAAdXvAAHV8AAB1fEAAdXyAAHV8wAB1fUAAdX3AAHV+AAB1fkAAdX7AAHV/AAB1ncAAdZ5AAHWfAAB1n4AAdaBAAHWggAB1oMAAdaEAAHWhQAB1ocAAdaJAAHWigAB1osAAdaNAAHWjgAB1qcAAdaoAAHWqQAB1qsAAdcmAAHXKAAB1yoAAdcsAAHXLwAB1zAAAdcxAAHXMgAB1zMAAdc1AAHXNwAB1zgAAdc5AAHXOwAB1zwAAde3AAHXuQAB17wAAde+AAHXwQAB18IAAdfDAAHXxAAB18UAAdfHAAHXyQAB18oAAdfLAAHXzQAB184AAdflAAHX/gAB2DMAAdg2AAHYOQAB2DwAAdg/AAHYQgAB2EUAAdhIAAHYSwAB2E4AAdhRAAHYVAAB2FcAAdhaAAHYjwAB2JIAAdiVAAHYmAAB2JsAAdieAAHYoQAB2KQAAdinAAHYqgAB2K0AAdiwAAHYswAB2LYAAdi4AAHYxgAB2OMAAdjuAAHZAgAB2QoAAdkWAAHZKwAB2TkAAdlCAAHZTAAB2V8AAdlrAAHZggAB2hUAAdo4AAHaWAAB2ngAAdp6AAHafAAB2n4AAdqAAAHagwAB2oQAAdqFAAHaiAAB2okAAdqLAAHajAAB2o8AAdqSAAHakwAB2pQAAdqXAAHamAAB2p0AAdq2AAHavwAB2sEAAdrDAAHazAAB2s8AAdrSAAHa1AAB2x0AAdtBAAHbaAAB24wAAduPAAHbkQAB25MAAduVAAHblwAB25kAAduaAAHbnQAB27YAAdvXAAHb2QAB29sAAdvdAAHb3wAB2+EAAdvjAAHb5QAB2+cAAdwIAAHcCwAB3A4AAdwRAAHcFAAB3BcAAdwaAAHcHQAB3CAAAdwiAAHcnQAB3J8AAdyhAAHcowAB3KYAAdynAAHcqAAB3KkAAdyqAAHcrAAB3K4AAdyvAAHcsAAB3LIAAdyzAAHdLgAB3TAAAd0yAAHdNAAB3TcAAd04AAHdOQAB3ToAAd07AAHdPQAB3T8AAd1AAAHdQQAB3UMAAd1EAAHdvwAB3cEAAd3EAAHdxgAB3ckAAd3KAAHdywAB3cwAAd3NAAHdzwAB3dEAAd3SAAHd0wAB3dUAAd3WAAHd7wAB3fAAAd3xAAHd8wAB3m4AAd5wAAHecgAB3nQAAd53AAHeeAAB3nkAAd56AAHeewAB3n0AAd5/AAHegAAB3oEAAd6DAAHehAAB3v8AAd8BAAHfAwAB3wUAAd8IAAHfCQAB3woAAd8LAAHfDAAB3w4AAd8QAAHfEQAB3xIAAd8UAAHfFQAB35AAAd+SAAHflAAB35YAAd+ZAAHfmgAB35sAAd+cAAHfnQAB358AAd+hAAHfogAB36MAAd+lAAHfpgAB4CEAAeAjAAHgJQAB4CcAAeAqAAHgKwAB4CwAAeAtAAHgLgAB4DAAAeAyAAHgMwAB4DQAAeA2AAHgNwAB4LIAAeC0AAHgtgAB4LgAAeC7AAHgvAAB4L0AAeC+AAHgvwAB4MEAAeDDAAHgxAAB4MUAAeDHAAHgyAAB4REAAeE1AAHhXAAB4YAAAeGDAAHhhQAB4YcAAeGJAAHhiwAB4Y0AAeGOAAHhkQAB4aoAAeHHAAHhyQAB4csAAeHNAAHhzwAB4dEAAeHTAAHh1QAB4fIAAeH1AAHh+AAB4fsAAeH+AAHiAQAB4gQAAeIHAAHiCQAB4oQAAeKGAAHiiAAB4ooAAeKNAAHijgAB4o8AAeKQAAHikQAB4pMAAeKVAAHilgAB4pcAAeKZAAHimgAB4xUAAeMXAAHjGgAB4xwAAeMfAAHjIAAB4yEAAeMiAAHjIwAB4yUAAeMnAAHjKAAB4ykAAeMrAAHjLAAB46cAAeOpAAHjqwAB460AAeOwAAHjsQAB47IAAeOzAAHjtAAB47YAAeO4AAHjuQAB47oAAeO8AAHjvQAB5DgAAeQ6AAHkPQAB5D8AAeRCAAHkQwAB5EQAAeRFAAHkRgAB5EgAAeRKAAHkSwAB5EwAAeROAAHkTwAB5NIAAeT2AAHlGgAB5T0AAeVkAAHlhAAB5asAAeXSAAHl8gAB5hYAAeY6AAHmPAAB5j8AAeZBAAHmQwAB5kUAAeZIAAHmSwAB5k0AAeZPAAHmUgAB5lQAAeZWAAHmWQAB5lwAAeZdAAHmYgAB5nsAAeaAAAHmggAB5ocAAeaKAAHmjAAB5tUAAeb5AAHnIAAB50QAAedHAAHnSQAB50sAAedNAAHnTwAB51EAAedSAAHnVQAB524AAeeTAAHnlQAB55cAAeeZAAHnmwAB550AAeefAAHnoQAB56MAAeelAAHnygAB580AAefQAAHn0wAB59YAAefZAAHn3AAB598AAefiAAHn5QAB5+cAAehiAAHoZAAB6GcAAehpAAHobAAB6G0AAehuAAHobwAB6HAAAehyAAHodAAB6HUAAeh2AAHoeAAB6HkAAeiKAAHoiwAB6I0AAekIAAHpCgAB6QwAAekOAAHpEQAB6RIAAekTAAHpFAAB6RUAAekXAAHpGQAB6RoAAekbAAHpHQAB6R4AAemZAAHpmwAB6Z4AAemgAAHpowAB6aQAAemlAAHppgAB6acAAempAAHpqwAB6awAAemtAAHprwAB6bAAAenBAAHpwgAB6cQAAeo/AAHqQQAB6kMAAepFAAHqSAAB6kkAAepKAAHqSwAB6kwAAepOAAHqUAAB6lEAAepSAAHqVAAB6lUAAerQAAHq0gAB6tUAAerXAAHq2gAB6tsAAercAAHq3QAB6t4AAergAAHq4gAB6uMAAerkAAHq5gAB6ucAAer4AAHq+QAB6vsAAet2AAHreAAB63oAAet8AAHrfwAB64AAAeuBAAHrggAB64MAAeuFAAHrhwAB64gAAeuJAAHriwAB64wAAewHAAHsCQAB7AwAAewOAAHsEQAB7BIAAewTAAHsFAAB7BUAAewXAAHsGQAB7BoAAewbAAHsHQAB7B4AAew3AAHsOAAB7DkAAew7AAHstgAB7LgAAey6AAHsvAAB7L8AAezAAAHswQAB7MIAAezDAAHsxQAB7McAAezIAAHsyQAB7MsAAezMAAHtRwAB7UkAAe1MAAHtTgAB7VEAAe1SAAHtUwAB7VQAAe1VAAHtVwAB7VkAAe1aAAHtWwAB7V0AAe1eAAHtdwAB7ZAAAe2lAAHtqAAB7asAAe2uAAHtsQAB7bQAAe3JAAHtzAAB7c8AAe3SAAHt1QAB7dgAAe3aAAHt8AAB7goAAe4WAAHuJQAB7kYAAe7ZAAHu/AAB7xwAAe88AAHvPgAB70AAAe9CAAHvRAAB70cAAe9IAAHvSQAB70wAAe9NAAHvTwAB71AAAe9TAAHvVgAB71cAAe9YAAHvWwAB71wAAe9hAAHvegAB74MAAe+FAAHvhwAB75AAAe+TAAHvlgAB75gAAe/hAAHwBQAB8CwAAfBQAAHwUwAB8FUAAfBXAAHwWQAB8FsAAfBdAAHwXgAB8GEAAfB6AAHwmwAB8J0AAfCfAAHwoQAB8KMAAfClAAHwpwAB8KkAAfCrAAHwzAAB8M8AAfDSAAHw1QAB8NgAAfDbAAHw3gAB8OEAAfDkAAHw5gAB8WEAAfFjAAHxZQAB8WcAAfFqAAHxawAB8WwAAfFtAAHxbgAB8XAAAfFyAAHxcwAB8XQAAfF2AAHxdwAB8fIAAfH0AAHx9gAB8fgAAfH7AAHx/AAB8f0AAfH+AAHx/wAB8gEAAfIDAAHyBAAB8gUAAfIHAAHyCAAB8oMAAfKFAAHyiAAB8ooAAfKNAAHyjgAB8o8AAfKQAAHykQAB8pMAAfKVAAHylgAB8pcAAfKZAAHymgAB8rMAAfK0AAHytQAB8rcAAfMyAAHzNAAB8zYAAfM4AAHzOwAB8zwAAfM9AAHzPgAB8z8AAfNBAAHzQwAB80QAAfNFAAHzRwAB80gAAfPDAAHzxQAB88cAAfPJAAHzzAAB880AAfPOAAHzzwAB89AAAfPSAAHz1AAB89UAAfPWAAHz2AAB89kAAfRUAAH0VgAB9FgAAfRaAAH0XQAB9F4AAfRfAAH0YAAB9GEAAfRjAAH0ZQAB9GYAAfRnAAH0aQAB9GoAAfTlAAH05wAB9OkAAfTrAAH07gAB9O8AAfTwAAH08QAB9PIAAfT0AAH09gAB9PcAAfT4AAH0+gAB9PsAAfV2AAH1eAAB9XoAAfV8AAH1fwAB9YAAAfWBAAH1ggAB9YMAAfWFAAH1hwAB9YgAAfWJAAH1iwAB9YwAAfXVAAH1+QAB9iAAAfZEAAH2RwAB9kkAAfZLAAH2TQAB9k8AAfZRAAH2UgAB9lUAAfZuAAH2iwAB9o0AAfaPAAH2kQAB9pMAAfaVAAH2lwAB9pkAAfa2AAH2uQAB9rwAAfa/AAH2wgAB9sUAAfbIAAH2ywAB9s0AAfdIAAH3SgAB90wAAfdOAAH3UQAB91IAAfdTAAH3VAAB91UAAfdXAAH3WQAB91oAAfdbAAH3XQAB914AAffZAAH32wAB994AAffgAAH34wAB9+QAAfflAAH35gAB9+cAAffpAAH36wAB9+wAAfftAAH37wAB9/AAAfhrAAH4bQAB+G8AAfhxAAH4dAAB+HUAAfh2AAH4dwAB+HgAAfh6AAH4fAAB+H0AAfh+AAH4gAAB+IEAAfj8AAH4/gAB+QEAAfkDAAH5BgAB+QcAAfkIAAH5CQAB+QoAAfkMAAH5DgAB+Q8AAfkQAAH5EgAB+RMAAfmOAAH5kAAB+ZIAAfmUAAH5lwAB+ZgAAfmZAAH5mgAB+ZsAAfmdAAH5nwAB+aAAAfmhAAH5owAB+aQAAfofAAH6IQAB+iMAAfolAAH6KAAB+ikAAfoqAAH6KwAB+iwAAfouAAH6MAAB+jEAAfoyAAH6NAAB+jUAAfqwAAH6sgAB+rUAAfq3AAH6ugAB+rsAAfq8AAH6vQAB+r4AAfrAAAH6wgAB+sMAAfrEAAH6xgAB+scAAftaAAH7fQAB+50AAfu9AAH7vwAB+8EAAfvDAAH7xQAB+8gAAfvJAAH7ygAB+80AAfvOAAH70AAB+9EAAfvUAAH71wAB+9gAAfvZAAH73AAB+90AAfviAAH7+wAB/AQAAfwGAAH8CAAB/BEAAfwUAAH8FwAB/BkAAfxiAAH8hgAB/K0AAfzRAAH81AAB/NYAAfzYAAH82gAB/NwAAfzeAAH83wAB/OIAAfz7AAH9HAAB/R4AAf0gAAH9IgAB/SQAAf0mAAH9KAAB/SoAAf0sAAH9TQAB/VAAAf1TAAH9VgAB/VkAAf1cAAH9XwAB/WIAAf1lAAH9ZwAB/eIAAf3kAAH95gAB/egAAf3rAAH97AAB/e0AAf3uAAH97wAB/fEAAf3zAAH99AAB/fUAAf33AAH9+AAB/nMAAf51AAH+dwAB/nkAAf58AAH+fQAB/n4AAf5/AAH+gAAB/oIAAf6EAAH+hQAB/oYAAf6IAAH+iQAB/wQAAf8GAAH/CQAB/wsAAf8OAAH/DwAB/xAAAf8RAAH/EgAB/xQAAf8WAAH/FwAB/xgAAf8aAAH/GwAB/zQAAf81AAH/NgAB/zgAAf+zAAH/tQAB/7cAAf+5AAH/vAAB/70AAf++AAH/vwAB/8AAAf/CAAH/xAAB/8UAAf/GAAH/yAAB/8kAAgBEAAIARgACAEgAAgBKAAIATQACAE4AAgBPAAIAUAACAFEAAgBTAAIAVQACAFYAAgBXAAIAWQACAFoAAgDVAAIA1wACANkAAgDbAAIA3gACAN8AAgDgAAIA4QACAOIAAgDkAAIA5gACAOcAAgDoAAIA6gACAOsAAgFmAAIBaAACAWoAAgFsAAIBbwACAXAAAgFxAAIBcgACAXMAAgF1AAIBdwACAXgAAgF5AAIBewACAXwAAgH3AAIB+QACAfsAAgH9AAICAAACAgEAAgICAAICAwACAgQAAgIGAAICCAACAgkAAgIKAAICDAACAg0AAgJWAAICegACAqEAAgLFAAICyAACAsoAAgLMAAICzgACAtAAAgLSAAIC0wACAtYAAgLvAAIDDAACAw4AAgMQAAIDEgACAxQAAgMWAAIDGAACAxoAAgM3AAIDOgACAz0AAgNAAAIDQwACA0YAAgNJAAIDTAACA04AAgPJAAIDywACA80AAgPPAAID0gACA9MAAgPUAAID1QACA9YAAgPYAAID2gACA9sAAgPcAAID3gACA98AAgRaAAIEXAACBF4AAgRgAAIEYwACBGQAAgRlAAIEZgACBGcAAgRpAAIEawACBGwAAgRtAAIEbwACBHAAAgTrAAIE7QACBO8AAgTxAAIE9AACBPUAAgT2AAIE9wACBPgAAgT6AAIE/AACBP0AAgT+AAIFAAACBQEAAgV8AAIFfgACBYEAAgWDAAIFhgACBYcAAgWIAAIFiQACBYoAAgWMAAIFjgACBY8AAgWQAAIFkgACBZMAAgYOAAIGEAACBhIAAgYUAAIGFwACBhgAAgYZAAIGGgACBhsAAgYdAAIGHwACBiAAAgYhAAIGIwACBiQAAgafAAIGoQACBqMAAgalAAIGqAACBqkAAgaqAAIGqwACBqwAAgauAAIGsAACBrEAAgayAAIGtAACBrUAAgcwAAIHMgACBzUAAgc3AAIHOgACBzsAAgc8AAIHPQACBz4AAgdAAAIHQgACB0MAAgdEAAIHRgACB0cAAgfaAAIH/QACCB0AAgg9AAIIPwACCEEAAghDAAIIRQACCEgAAghJAAIISgACCE0AAghOAAIIUAACCFEAAghUAAIIVwACCFgAAghZAAIIXAACCF0AAghmAAIIfwACCIgAAgiKAAIIjAACCJUAAgiYAAIImwACCJ0AAgjmAAIJCgACCTEAAglVAAIJWAACCVoAAglcAAIJXgACCWAAAgliAAIJYwACCWYAAgl/AAIJoAACCaIAAgmkAAIJpgACCagAAgmqAAIJrAACCa4AAgmwAAIJ0QACCdQAAgnXAAIJ2gACCd0AAgngAAIJ4wACCeYAAgnpAAIJ6wACCmYAAgpoAAIKagACCmwAAgpvAAIKcAACCnEAAgpyAAIKcwACCnUAAgp3AAIKeAACCnkAAgp7AAIKfAACCvcAAgr5AAIK+wACCv0AAgsAAAILAQACCwIAAgsDAAILBAACCwYAAgsIAAILCQACCwoAAgsMAAILDQACC4gAAguKAAILjQACC48AAguSAAILkwACC5QAAguVAAILlgACC5gAAguaAAILmwACC5wAAgueAAILnwACC7gAAgu5AAILugACC7wAAgw3AAIMOQACDDsAAgw9AAIMQAACDEEAAgxCAAIMQwACDEQAAgxGAAIMSAACDEkAAgxKAAIMTAACDE0AAgzIAAIMygACDMwAAgzOAAIM0QACDNIAAgzTAAIM1AACDNUAAgzXAAIM2QACDNoAAgzbAAIM3QACDN4AAg1ZAAINWwACDV0AAg1fAAINYgACDWMAAg1kAAINZQACDWYAAg1oAAINagACDWsAAg1sAAINbgACDW8AAg3qAAIN7AACDe4AAg3wAAIN8wACDfQAAg31AAIN9gACDfcAAg35AAIN+wACDfwAAg39AAIN/wACDgAAAg57AAIOfQACDn8AAg6BAAIOhAACDoUAAg6GAAIOhwACDogAAg6KAAIOjAACDo0AAg6OAAIOkAACDpEAAg7aAAIO/gACDyUAAg9JAAIPTAACD04AAg9QAAIPUgACD1QAAg9WAAIPVwACD1oAAg9zAAIPkAACD5IAAg+UAAIPlgACD5gAAg+aAAIPnAACD54AAg+7AAIPvgACD8EAAg/EAAIPxwACD8oAAg/NAAIP0AACD9IAAhBNAAIQTwACEFEAAhBTAAIQVgACEFcAAhBYAAIQWQACEFoAAhBcAAIQXgACEF8AAhBgAAIQYgACEGMAAhDeAAIQ4AACEOIAAhDkAAIQ5wACEOgAAhDpAAIQ6gACEOsAAhDtAAIQ7wACEPAAAhDxAAIQ8wACEPQAAhFvAAIRcQACEXMAAhF1AAIReAACEXkAAhF6AAIRewACEXwAAhF+AAIRgAACEYEAAhGCAAIRhAACEYUAAhIAAAISAgACEgUAAhIHAAISCgACEgsAAhIMAAISDQACEg4AAhIQAAISEgACEhMAAhIUAAISFgACEhcAAhKSAAISlAACEpYAAhKYAAISmwACEpwAAhKdAAISngACEp8AAhKhAAISowACEqQAAhKlAAISpwACEqgAAhMjAAITJQACEycAAhMpAAITLAACEy0AAhMuAAITLwACEzAAAhMyAAITNAACEzUAAhM2AAITOAACEzkAAhO0AAITtgACE7kAAhO7AAITvgACE78AAhPAAAITwQACE8IAAhPEAAITxgACE8cAAhPIAAITygACE8sAAhReAAIUgQACFKEAAhTBAAIUwwACFMUAAhTHAAIUyQACFMwAAhTNAAIUzgACFNEAAhTSAAIU1AACFNUAAhTXAAIU2gACFNsAAhTcAAIU3wACFOAAAhTlAAIU/gACFQcAAhUJAAIVCwACFRQAAhUXAAIVGgACFRwAAhVlAAIViQACFbAAAhXUAAIV1wACFdkAAhXbAAIV3QACFd8AAhXhAAIV4gACFeUAAhX+AAIWHwACFiEAAhYjAAIWJQACFicAAhYpAAIWKwACFi0AAhYvAAIWUAACFlMAAhZWAAIWWQACFlwAAhZfAAIWYgACFmUAAhZoAAIWagACFuUAAhbnAAIW6QACFusAAhbuAAIW7wACFvAAAhbxAAIW8gACFvQAAhb2AAIW9wACFvgAAhb6AAIW+wACF3YAAhd4AAIXewACF30AAheAAAIXgQACF4IAAheDAAIXhAACF4YAAheIAAIXiQACF4oAAheMAAIXjQACF5EAAhgMAAIYDgACGBEAAhgTAAIYFgACGBcAAhgYAAIYGQACGBoAAhgcAAIYHgACGB8AAhggAAIYIgACGCMAAhg8AAIYPQACGD4AAhhAAAIYuwACGL0AAhi/AAIYwQACGMQAAhjFAAIYxgACGMcAAhjIAAIYygACGMwAAhjNAAIYzgACGNAAAhjRAAIZTAACGU4AAhlQAAIZUgACGVUAAhlWAAIZVwACGVgAAhlZAAIZWwACGV0AAhleAAIZXwACGWEAAhliAAIZ3QACGd8AAhnhAAIZ4wACGeYAAhnnAAIZ6AACGekAAhnqAAIZ7AACGe4AAhnvAAIZ8AACGfIAAhnzAAIabgACGnAAAhpyAAIadAACGncAAhp4AAIaeQACGnoAAhp7AAIafQACGn8AAhqAAAIagQACGoMAAhqEAAIa/wACGwEAAhsDAAIbBQACGwgAAhsJAAIbCgACGwsAAhsMAAIbDgACGxAAAhsRAAIbEgACGxQAAhsVAAIbXgACG4IAAhupAAIbzQACG9AAAhvSAAIb1AACG9YAAhvYAAIb2gACG9sAAhveAAIb9wACHBQAAhwWAAIcGAACHBoAAhwcAAIcHgACHCAAAhwiAAIcPwACHEIAAhxFAAIcSAACHEsAAhxOAAIcUQACHFQAAhxWAAIc0QACHNMAAhzVAAIc1wACHNoAAhzbAAIc3AACHN0AAhzeAAIc4AACHOIAAhzjAAIc5AACHOYAAhznAAIdYgACHWQAAh1mAAIdaAACHWsAAh1sAAIdbQACHW4AAh1vAAIdcQACHXMAAh10AAIddQACHXcAAh14AAId8wACHfUAAh33AAId+QACHfwAAh39AAId/gACHf8AAh4AAAIeAgACHgQAAh4FAAIeBgACHggAAh4JAAIehAACHoYAAh6JAAIeiwACHo4AAh6PAAIekAACHpEAAh6SAAIelAACHpYAAh6XAAIemAACHpoAAh6bAAIengACHxkAAh8bAAIfHQACHx8AAh8iAAIfIwACHyQAAh8lAAIfJgACHygAAh8qAAIfKwACHywAAh8uAAIfLwACH6oAAh+sAAIfrgACH7AAAh+zAAIftAACH7UAAh+2AAIftwACH7kAAh+7AAIfvAACH70AAh+/AAIfwAACIDsAAiA9AAIgPwACIEEAAiBEAAIgRQACIEYAAiBHAAIgSAACIEoAAiBMAAIgTQACIE4AAiBQAAIgUQACIOQAAiEHAAIhJwACIUcAAiFJAAIhSwACIU0AAiFPAAIhUgACIVMAAiFUAAIhVwACIVgAAiFaAAIhWwACIV0AAiFgAAIhYQACIWIAAiFlAAIhZgACIWsAAiGEAAIhjQACIY8AAiGRAAIhmgACIZ0AAiGgAAIhogACIesAAiIPAAIiNgACIloAAiJdAAIiXwACImEAAiJjAAIiZQACImcAAiJoAAIiawACIoQAAiKlAAIipwACIqkAAiKrAAIirQACIq8AAiKxAAIiswACIrUAAiLWAAIi2QACItwAAiLfAAIi4gACIuUAAiLoAAIi6wACIu4AAiLwAAIjawACI20AAiNvAAIjcQACI3QAAiN1AAIjdgACI3cAAiN4AAIjegACI3wAAiN9AAIjfgACI4AAAiOBAAIj/AACI/4AAiQAAAIkAgACJAUAAiQGAAIkBwACJAgAAiQJAAIkCwACJA0AAiQOAAIkDwACJBEAAiQSAAIkjQACJI8AAiSSAAIklAACJJcAAiSYAAIkmQACJJoAAiSbAAIknQACJJ8AAiSgAAIkoQACJKMAAiSkAAIkvQACJL4AAiS/AAIkwQACJTwAAiU+AAIlQAACJUIAAiVFAAIlRgACJUcAAiVIAAIlSQACJUsAAiVNAAIlTgACJU8AAiVRAAIlUgACJc0AAiXPAAIl0QACJdMAAiXWAAIl1wACJdgAAiXZAAIl2gACJdwAAiXeAAIl3wACJeAAAiXiAAIl4wACJl4AAiZgAAImYgACJmQAAiZnAAImaAACJmkAAiZqAAImawACJm0AAiZvAAImcAACJnEAAiZzAAImdAACJu8AAibxAAIm8wACJvUAAib4AAIm+QACJvoAAib7AAIm/AACJv4AAicAAAInAQACJwIAAicEAAInBQACJ4AAAieCAAInhAACJ4YAAieJAAInigACJ4sAAieMAAInjQACJ48AAieRAAInkgACJ5MAAieVAAInlgACJ98AAigDAAIoKgACKE4AAihRAAIoUwACKFUAAihXAAIoWQACKFsAAihcAAIoXwACKHgAAiiVAAIolwACKJkAAiibAAIonQACKJ8AAiihAAIoowACKMAAAijDAAIoxgACKMkAAijMAAIozwACKNIAAijVAAIo1wACKVIAAilUAAIpVgACKVgAAilbAAIpXAACKV0AAileAAIpXwACKWEAAiljAAIpZAACKWUAAilnAAIpaAACKeMAAinlAAIp5wACKekAAinsAAIp7QACKe4AAinvAAIp8AACKfIAAin0AAIp9QACKfYAAin4AAIp+QACKnQAAip2AAIqeAACKnoAAip9AAIqfgACKn8AAiqAAAIqgQACKoMAAiqFAAIqhgACKocAAiqJAAIqigACKwUAAisHAAIrCQACKwsAAisOAAIrDwACKxAAAisRAAIrEgACKxQAAisWAAIrFwACKxgAAisaAAIrGwACK5YAAiuYAAIrmgACK5wAAiufAAIroAACK6EAAiuiAAIrowACK6UAAiunAAIrqAACK6kAAiurAAIrrAACLCcAAiwpAAIsKwACLC0AAiwwAAIsMQACLDIAAiwzAAIsNAACLDYAAiw4AAIsOQACLDoAAiw8AAIsPQACLLgAAiy6AAIsvAACLL4AAizBAAIswgACLMMAAizEAAIsxQACLMcAAizJAAIsygACLMsAAizNAAIszgACLWEAAi2EAAItpAACLcQAAi3GAAItyAACLcoAAi3MAAItzwACLdAAAi3RAAIt1AACLdUAAi3XAAIt2AACLdoAAi3dAAIt3gACLd8AAi3iAAIt4wACLegAAi4BAAIuCgACLgwAAi4OAAIuFwACLhoAAi4dAAIuHwACLmgAAi6MAAIuswACLtcAAi7aAAIu3AACLt4AAi7gAAIu4gACLuQAAi7lAAIu6AACLwEAAi8iAAIvJAACLyYAAi8oAAIvKgACLywAAi8uAAIvMAACLzIAAi9TAAIvVgACL1kAAi9cAAIvXwACL2IAAi9lAAIvaAACL2sAAi9tAAIv6AACL+oAAi/sAAIv7gACL/EAAi/yAAIv8wACL/QAAi/1AAIv9wACL/kAAi/6AAIv+wACL/0AAi/+AAIweQACMHsAAjB9AAIwfwACMIIAAjCDAAIwhAACMIUAAjCGAAIwiAACMIoAAjCLAAIwjAACMI4AAjCPAAIxCgACMQwAAjEPAAIxEQACMRQAAjEVAAIxFgACMRcAAjEYAAIxGgACMRwAAjEdAAIxHgACMSAAAjEhAAIxOgACMTsAAjE8AAIxPgACMbkAAjG7AAIxvQACMb8AAjHCAAIxwwACMcQAAjHFAAIxxgACMcgAAjHKAAIxywACMcwAAjHOAAIxzwACMkoAAjJMAAIyTgACMlAAAjJTAAIyVAACMlUAAjJWAAIyVwACMlkAAjJbAAIyXAACMl0AAjJfAAIyYAACMtsAAjLdAAIy3wACMuEAAjLkAAIy5QACMuYAAjLnAAIy6AACMuoAAjLsAAIy7QACMu4AAjLwAAIy8QACM2wAAjNuAAIzcAACM3IAAjN1AAIzdgACM3cAAjN4AAIzeQACM3sAAjN9AAIzfgACM38AAjOBAAIzggACM/0AAjP/AAI0AQACNAMAAjQGAAI0BwACNAgAAjQJAAI0CgACNAwAAjQOAAI0DwACNBAAAjQSAAI0EwACNFwAAjSAAAI0pwACNMsAAjTOAAI00AACNNIAAjTUAAI01gACNNgAAjTZAAI03AACNPUAAjUSAAI1FAACNRYAAjUYAAI1GgACNRwAAjUeAAI1IAACNT0AAjVAAAI1QwACNUYAAjVJAAI1TAACNU8AAjVSAAI1VAACNc8AAjXRAAI11AACNdYAAjXZAAI12gACNdsAAjXcAAI13QACNd8AAjXhAAI14gACNeMAAjXlAAI15gACNegAAjZjAAI2ZQACNmcAAjZpAAI2bAACNm0AAjZuAAI2bwACNnAAAjZ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AAAJawgACWsQAAlrFAAJayAACWuEAAlr+AAJbAAACWwIAAlsEAAJbBgACWwgAAlsKAAJbDAACWykAAlssAAJbLwACWzIAAls1AAJbOAACWzsAAls+AAJbQAACW7sAAlu9AAJbvwACW8EAAlvEAAJbxQACW8YAAlvHAAJbyAACW8oAAlvMAAJbzQACW84AAlvQAAJb0QACXEwAAlxOAAJcUAACXFIAAlxVAAJcVgACXFcAAlxYAAJcWQACXFsAAlxdAAJcXgACXF8AAlxhAAJcYgACXN0AAlzfAAJc4QACXOMAAlzmAAJc5wACXOgAAlzpAAJc6gACXOwAAlzuAAJc7wACXPAAAlzyAAJc8wACXW4AAl1wAAJdcwACXXUAAl14AAJdeQACXXoAAl17AAJdfAACXX4AAl2AAAJdgQACXYIAAl2EAAJdhQACXgAAAl4CAAJeBAACXgYAAl4JAAJeCgACXgsAAl4MAAJeDQACXg8AAl4RAAJeEgACXhMAAl4VAAJeFgACXpEAAl6TAAJelQACXpcAAl6aAAJemwACXpwAAl6dAAJengACXqAAAl6iAAJeowACXqQAAl6mAAJepwACXyIAAl8kAAJfJwACXykAAl8sAAJfLQACXy4AAl8vAAJfMAACXzIAAl80AAJfNQACXzYAAl84AAJfOQACX8wAAl/vAAJgDwACYC8AAmAxAAJgMwACYDUAAmA3AAJgOgACYDsAAmA8AAJgPwACYEAAAmBCAAJgQwACYEYAAmBJAAJgSgACYEsAAmBOAAJgTwACYFQAAmBtAAJgdgACYHgAAmB6AAJggwACYIYAAmCJAAJgiwACYNQAAmD4AAJhHwACYUMAAmFGAAJhSAACYUoAAmFMAAJhTgACYVAAAmFRAAJhVAACYW0AAmGOAAJhkAACYZIAAmGUAAJhlgACYZgAAmGaAAJhnAACYZ4AAmG/AAJhwgACYcUAAmHIAAJhywACYc4AAmHRAAJh1AACYdcAAmHZAAJiVAACYlYAAmJYAAJiWgACYl0AAmJeAAJiXwACYmAAAmJhAAJiYwACYmUAAmJmAAJiZwACYmkAAmJqAAJi5QACYucAAmLpAAJi6wACYu4AAmLvAAJi8AACYvEAAmLyAAJi9AACYvYAAmL3AAJi+AACYvoAAmL7AAJjdgACY3gAAmN7AAJjfQACY4AAAmOBAAJjggACY4MAAmOEAAJjhgACY4gAAmOJAAJjigACY4wAAmONAAJjpgACY6cAAmOoAAJjqgACZCUAAmQnAAJkKQACZCsAAmQuAAJkLwACZDAAAmQxAAJkMgACZDQAAmQ2AAJkNwACZDgAAmQ6AAJkOwACZLYAAmS4AAJkugACZLwAAmS/AAJkwAACZMEAAmTCAAJkwwACZMUAAmTHAAJkyAACZMkAAmTLAAJkzAACZUcAAmVJAAJlSwACZU0AAmVQAAJlUQACZVIAAmVTAAJlVAACZVYAAmVYAAJlWQACZVoAAmVcAAJlXQACZdgAAmXaAAJl3AACZd4AAmXhAAJl4gACZeMAAmXkAAJl5QACZecAAmXpAAJl6gACZesAAmXtAAJl7gACZmkAAmZrAAJmbQACZm8AAmZyAAJmcwACZnQAAmZ1AAJmdgACZngAAmZ6AAJmewACZnwAAmZ+AAJmfwACZsgAAmbsAAJnEwACZzcAAmc6AAJnPAACZz4AAmdAAAJnQgACZ0QAAmdFAAJnSAACZ2EAAmd+AAJngAACZ4IAAmeEAAJnhgACZ4gAAmeKAAJnjAACZ6kAAmesAAJnrwACZ7IAAme1AAJnuAACZ7sAAme+AAJnwAACaDsAAmg9AAJoPwACaEEAAmhEAAJoRQACaEYAAmhHAAJoSAACaEoAAmhMAAJoTQACaE4AAmhQAAJoUQACaMwAAmjOAAJo0AACaNIAAmjVAAJo1gACaNcAAmjYAAJo2QACaNsAAmjdAAJo3gACaN8AAmjhAAJo4gACaV0AAmlfAAJpYQACaWMAAmlmAAJpZwACaWgAAmlpAAJpagACaWwAAmluAAJpbwACaXAAAmlyAAJpcwACae4AAmnwAAJp8wACafUAAmn4AAJp+QACafoAAmn7AAJp/AACaf4AAmoAAAJqAQACagIAAmoEAAJqBQACaoAAAmqCAAJqhAACaoYAAmqJAAJqigACaosAAmqMAAJqjQACao8AAmqRAAJqkgACapMAAmqVAAJqlgACaxEAAmsTAAJrFQACaxcAAmsaAAJrGwACaxwAAmsdAAJrHgACayAAAmsiAAJrIwACayQAAmsmAAJrJwACa6IAAmukAAJrpwACa6kAAmusAAJrrQACa64AAmuvAAJrsAACa7IAAmu0AAJrtQACa7YAAmu4AAJruQACbEwAAmxvAAJsjwACbK8AAmyxAAJsswACbLUAAmy3AAJsugACbLsAAmy8AAJsvwACbMAAAmzCAAJswwACbMUAAmzIAAJsyQACbMoAAmzNAAJszgACbNcAAmzwAAJs+QACbPsAAmz9AAJtBgACbQkAAm0MAAJtDgACbVcAAm17AAJtogACbcYAAm3JAAJtywACbc0AAm3PAAJt0QACbdMAAm3UAAJt1wACbfAAAm4RAAJuEwACbhUAAm4XAAJuGQACbhsAAm4dAAJuHwACbiEAAm5CAAJuRQACbkgAAm5LAAJuTgACblEAAm5UAAJuVwACbloAAm5cAAJu1wACbtkAAm7bAAJu3QACbuAAAm7hAAJu4gACbuMAAm7kAAJu5gACbugAAm7pAAJu6gACbuwAAm7tAAJvaAACb2oAAm9sAAJvbgACb3EAAm9yAAJvcwACb3QAAm91AAJvdwACb3kAAm96AAJvewACb30AAm9+AAJv+QACb/sAAm/+AAJwAAACcAMAAnAEAAJwBQACcAYAAnAHAAJwCQACcAsAAnAMAAJwDQACcA8AAnAQAAJwKQACcCoAAnArAAJwLQACcKgAAnCqAAJwrAACcK4AAnCxAAJwsgACcLMAAnC0AAJwtQACcLcAAnC5AAJwugACcLsAAnC9AAJwvgACcTkAAnE7AAJxPQACcT8AAnFCAAJxQwACcUQAAnFFAAJxRgACcUgAAnFKAAJxSwACcUwAAnFOAAJxTwACccoAAnHMAAJxzgACcdAAAnHTAAJx1AACcdUAAnHWAAJx1wACcdkAAnHbAAJx3AACcd0AAnHfAAJx4AACclsAAnJdAAJyXwACcmEAAnJkAAJyZQACcmYAAnJnAAJyaAACcmoAAnJsAAJybQACcm4AAnJwAAJycQACcuwAAnLuAAJy8AACcvIAAnL1AAJy9gACcvcAAnL4AAJy+QACcvsAAnL9AAJy/gACcv8AAnMBAAJzAgACc0sAAnNvAAJzlgACc7oAAnO9AAJzvwACc8EAAnPDAAJzxQACc8cAAnPIAAJzywACc+QAAnQBAAJ0AwACdAUAAnQHAAJ0CQACdAsAAnQNAAJ0DwACdCwAAnQvAAJ0MgACdDUAAnQ4AAJ0OwACdD4AAnRBAAJ0QwACdL4AAnTAAAJ0wwACdMUAAnTIAAJ0yQACdMoAAnTLAAJ0zAACdM4AAnT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lAAKGyQAChswAAobOAAKG0AAChtIAAobUAAKG1gAChtcAAobaAAKG8wAChxQAAocWAAKHGAAChxoAAoccAAKHHgAChyAAAociAAKHJAACh0UAAodIAAKHSwACh04AAodRAAKHVAACh1cAAodaAAKHXQACh18AAofaAAKH3AACh94AAofgAAKH4wACh+QAAoflAAKH5gACh+cAAofpAAKH6wACh+wAAoftAAKH7wACh/AAAohrAAKIbQACiG8AAohxAAKIdAACiHUAAoh2AAKIdwACiHgAAoh6AAKIfAACiH0AAoh+AAKIgAACiIEAAoj8AAKI/gACiQEAAokDAAKJBgACiQcAAokIAAKJCQACiQoAAokMAAKJDgACiQ8AAokQAAKJEgACiRMAAoksAAKJLQACiS4AAokwAAKJqwACia0AAomvAAKJsQACibQAAom1AAKJtgACibcAAom4AAKJugACibwAAom9AAKJvgACicAAAonBAAKKPAACij4AAopAAAKKQgACikUAAopGAAKKRwACikgAAopJAAKKSwACik0AAopOAAKKTwACilEAAopSAAKKzQACis8AAorRAAKK0wACitYAAorXAAKK2AACitkAAoraAAKK3AACit4AAorfAAKK4AACiuIAAorjAAKLXgACi2AAAotiAAKLZAACi2cAAotoAAKLaQACi2oAAotrAAKLbQACi28AAotwAAKLcQACi3MAAot0AAKL7wACi/EAAovzAAKL9QACi/gAAov5AAKL+gACi/sAAov8AAKL/gACjAAAAowBAAKMAgACjAQAAowFAAKMTgACjHIAAoyZAAKMvQACjMAAAozCAAKMxAACjMYAAozIAAKMygACjMsAAozOAAKM5wACjQQAAo0GAAKNCAACjQoAAo0MAAKNDgACjRAAAo0SAAKNLwACjTIAAo01AAKNOAACjTsAAo0+AAKNQQACjUQAAo1GAAKNwQACjcMAAo3FAAKNxwACjcoAAo3LAAKNzAACjc0AAo3OAAKN0AACjdIAAo3TAAKN1AACjdYAAo3XAAKOUgACjlQAAo5WAAKOWAACjlsAAo5cAAKOXQACjl4AAo5fAAKOYQACjmMAAo5kAAKOZQACjmcAAo5oAAKO4wACjuUAAo7nAAKO6QACjuwAAo7tAAKO7gACju8AAo7wAAKO8gACjvQAAo71AAKO9gACjvgAAo75AAKPdAACj3YAAo94AAKPegACj30AAo9+AAKPfwACj4AAAo+BAAKPgwACj4UAAo+GAAKPhwACj4kAAo+KAAKQBQACkAcAApAJAAKQCwACkA4AApAPAAKQEAACkBEAApASAAKQFAACkBYAApAXAAKQGAACkBoAApAbAAKQlgACkJgAApCaAAKQnAACkJ8AApCgAAKQoQACkKIAApCjAAKQpQACkKcAApCoAAKQqQACkKsAApCsAAKRJwACkSkAApErAAKRLQACkTAAApExAAKRMgACkTMAApE0AAKRNgACkTgAApE5AAKROgACkTwAApE9AAKR0AACkfMAApITAAKSMwACkjUAApI3AAKSOQACkjsAApI+AAKSPwACkkAAApJDAAKSRAACkkYAApJHAAKSSgACkk0AApJOAAKSTwACklIAApJTAAKSWAACknEAApJ6AAKSfAACkn4AApKHAAKSigACko0AApKPAAKS2AACkvwAApMjAAKTRwACk0oAApNMAAKTTgACk1AAApNSAAKTVAACk1UAApNYAAKTcQACk5IAApOUAAKTlgACk5gAApOaAAKTnAACk54AApOgAAKTogACk8MAApPGAAKTyQACk8wAApPPAAKT0gACk9UAApPYAAKT2wACk90AApRYAAKUWgAClFwAApReAAKUYQAClGIAApRjAAKUZAAClGUAApRnAAKUaQAClGoAApRrAAKUbQAClG4AApTpAAKU6wAClO0AApTvAAKU8gAClPMAApT0AAKU9QAClPYAApT4AAKU+gAClPsAApT8AAKU/gAClP8AApV6AAKVfAAClX8AApWBAAKVhAAClYUAApWGAAKVhwAClYgAApWKAAKVjAAClY0AApWOAAKVkAAClZEAApWqAAKVqwAClawAApWuAAKWKQAClisAApYtAAKWLwACljIAApYzAAKWNAACljUAApY2AAKWOAACljoAApY7AAKWPAAClj4AApY/AAKWugAClrwAApa+AAKWwAAClsMAApbEAAKWxQAClsYAApbHAAKWyQAClssAApbMAAKWzQACls8AApbQAAKXSwACl00AApdPAAKXUQACl1QAApdVAAKXVgACl1cAApdYAAKXWgACl1wAApddAAKXXgACl2AAApdhAAKX3AACl94AApfgAAKX4gACl+UAApfmAAKX5wACl+gAApfpAAKX6wACl+0AApfuAAKX7wACl/EAApfyAAKYbQACmG8AAphxAAKYcwACmHYAAph3AAKYeAACmHkAAph6AAKYfAACmH4AAph/AAKYgAACmIIAApiDAAKYzAACmPAAApkXAAKZOwACmT4AAplAAAKZQgACmUQAAplGAAKZSAACmUkAAplMAAKZZQACmYIAApmEAAKZhgACmYgAApmKAAKZjAACmY4AApmQAAKZrQACmbAAApmzAAKZtgACmbkAApm8AAKZvwACmcIAApnEAAKaPwACmkEAAppDAAKaRQACmkgAAppJAAKaSgACmksAAppMAAKaTgACmlAAAppRAAKaUgACmlQAAppVAAKa0AACmtIAAprVAAKa1wACmtoAAprbAAKa3AACmt0AApreAAKa4AACmuIAAprjAAKa5AACmuYAAprnAAKbYgACm2QAAptmAAKbaAACm2sAAptsAAKbbQACm24AAptvAAKbcQACm3MAApt0AAKbdQACm3cAApt4AAKb8wACm/UAApv4AAKb+gACm/0AApv+AAKb/wACnAAAApwBAAKcAwACnAUAApwGAAKcBwACnAkAApwKAAKcjQACnLEAApzVAAKc+AACnR8AAp0/AAKdZgACnY0AAp2tAAKd0QACnfUAAp33AAKd+gACnfwAAp3+AAKeAAACngMAAp4GAAKeCAACngoAAp4NAAKeDwACnhEAAp4UAAKeFwACnhgAAp4hAAKeOgACnj8AAp5BAAKeRgACnkkAAp5LAAKelAACnrgAAp7fAAKfAwACnwYAAp8IAAKfCgACnwwAAp8OAAKfEAACnxEAAp8UAAKfLQACn1IAAp9UAAKfVgACn1gAAp9aAAKfXAACn14AAp9gAAKfYgACn2QAAp+JAAKfjAACn48AAp+SAAKflQACn5gAAp+bAAKfngACn6EAAp+kAAKfpgACoCEAAqAjAAKgJgACoCgAAqArAAKgLAACoC0AAqAuAAKgLwACoDEAAqAzAAKgNAACoDUAAqA3AAKgOAACoEkAAqBKAAKgTAACoMcAAqDJAAKgywACoM0AAqDQAAKg0QACoNIAAqDTAAKg1AACoNYAAqDYAAKg2QACoNoAAqDcAAKg3QACoVgAAqFaAAKhXQACoV8AAqFiAAKhYwACoWQAAqFlAAKhZgACoWgAAqFqAAKhawACoWwAAqFuAAKhbwACoYAAAqGBAAKhgwACof4AAqIAAAKiAgACogQAAqIHAAKiCAACogkAAqIKAAKiCwACog0AAqIPAAKiEAACohEAAqITAAKiFAACoo8AAqKRAAKilAACopYAAqKZAAKimgACopsAAqKcAAKinQACop8AAqKhAAKiogACoqMAAqKlAAKipgACorcAAqK4AAKiugACozUAAqM3AAKjOQACozsAAqM+AAKjPwACo0AAAqNBAAKjQgACo0QAAqNGAAKjRwACo0gAAqNKAAKjSwACo8YAAqPIAAKjywACo80AAqPQAAKj0QACo9IAAqPTAAKj1AACo9YAAqPYAAKj2QACo9oAAqPcAAKj3QACo/YAAqP3AAKj+AACo/oAAqR1AAKkdwACpHkAAqR7AAKkfgACpH8AAqSAAAKkgQACpIIAAqSEAAKkhgACpIcAAqSIAAKkigACpIsAAqUGAAKlCAACpQsAAqUNAAKlEAACpREAAqUSAAKlEwACpRQAAqUWAAKlGAACpRkAAqUaAAKlHAACpR0AAqU9AAKlVgACpVsAAqVeAAKlYwACpWYAAqVoAAKlcAACpgMAAqYmAAKmRgACpmYAAqZoAAKmagACpmwAAqZuAAKmcQACpnIAAqZzAAKmdgACpncAAqZ5AAKmegACpn0AAqaAAAKmgQACpoIAAqaFAAKmhgACposAAqakAAKmrQACpq8AAqaxAAKmugACpr0AAqbAAAKmwgACpwsAAqcvAAKnVgACp3oAAqd9AAKnfwACp4EAAqeDAAKnhQACp4cAAqeIAAKniwACp6QAAqfFAAKnxwACp8kAAqfLAAKnzQACp88AAqfRAAKn0wACp9UAAqf2AAKn+QACp/wAAqf/AAKoAgACqAUAAqgIAAKoCwACqA4AAqgQAAKoiwACqI0AAqiPAAKokQACqJQAAqiVAAKolgACqJcAAqiYAAKomgACqJwAAqidAAKongACqKAAAqihAAKpHAACqR4AAqkgAAKpIgACqSUAAqkmAAKpJwACqSgAAqkpAAKpKwACqS0AAqkuAAKpLwACqTEAAqkyAAKprQACqa8AAqmyAAKptAACqbcAAqm4AAKpuQACqboAAqm7AAKpvQACqb8AAqnAAAKpwQACqcMAAqnEAAKp3QACqd4AAqnfAAKp4QACqlwAAqpeAAKqYAACqmIAAqplAAKqZgACqmcAAqpoAAKqaQACqmsAAqptAAKqbgACqm8AAqpxAAKqcgACqu0AAqrvAAKq8QACqvMAAqr2AAKq9wACqvgAAqr5AAKq+gACqvwAAqr+AAKq/wACqwAAAqsCAAKrAwACq34AAquAAAKrggACq4QAAquHAAKriAACq4kAAquKAAKriwACq40AAquPAAKrkAACq5EAAquTAAKrlAACrA8AAqwRAAKsEwACrBUAAqwYAAKsGQACrBoAAqwbAAKsHAACrB4AAqwgAAKsIQACrCIAAqwkAAKsJQACrKAAAqyiAAKspAACrKYAAqypAAKsqgACrKsAAqysAAKsrQACrK8AAqyxAAKssgACrLMAAqy1AAKstgACrP8AAq0jAAKtSgACrW4AAq1xAAKtcwACrXUAAq13AAKteQACrXsAAq18AAKtfwACrZgAAq21AAKttwACrbkAAq27AAKtvQACrb8AAq3BAAKtwwACreAAAq3jAAKt5gACrekAAq3sAAKt7wACrfIAAq31AAKt9wACrnIAAq50AAKudgACrngAAq57AAKufAACrn0AAq5+AAKufwACroEAAq6DAAKuhAACroUAAq6HAAKuiAACrwMAAq8FAAKvBwACrwkAAq8MAAKvDQACrw4AAq8PAAKvEAACrxIAAq8UAAKvFQACrxYAAq8YAAKvGQACr5QAAq+WAAKvmAACr5oAAq+dAAKvngACr58AAq+gAAKvoQACr6MAAq+lAAKvpgACr6cAAq+pAAKvqgACsCUAArAnAAKwKgACsCwAArAvAAKwMAACsDEAArAyAAKwMwACsDUAArA3AAKwOAACsDkAArA7AAKwPAACsLcAArC5AAKwuwACsL0AArDAAAKwwQACsMIAArDDAAKwxAACsMYAArDIAAKwyQACsMoAArDMAAKwzQACsUgAArFKAAKxTAACsU4AArFRAAKxUgACsVMAArFUAAKxVQACsVcAArFZAAKxWgACsVsAArFdAAKxXgACsdkAArHbAAKx3gACseAAArHjAAKx5AACseUAArHmAAKx5wACsekAArHrAAKx7AACse0AArHvAAKx8AACsgEAArIGAAKyCQACsgsAArJEAAKyRwACskkAArJMAAKyTwACslIAArJVAAKyWgACsv0AArMhAAKzRQACs2UAArOMAAKzswACs9MAArP6AAK0HgACtEEAArRoAAK0jAACtLAAArTUAAK0+wACtPwAArT+AAK1AAACtQMAArUFAAK1CAACtQoAArUMAAK1DwACtREAArUTAAK1FgACtRkAArUbAAK1HQACtR8AArUiAAK1JQACtSgAArUtAAK1RgACtUsAArVNAAK1UgACtVUAArVXAAK1oAACtcQAArXrAAK2DwACthIAArYUAAK2FgACthgAArYaAAK2HAACth0AArYgAAK2OQACtl4AArZgAAK2YgACtmQAArZmAAK2aAACtmoAArZsAAK2bgACtnAAAraVAAK2mAACtpsAAraeAAK2oQACtqQAAranAAK2qgACtq0AArawAAK2sgACty0AArcvAAK3MgACtzQAArc3AAK3OAACtzkAArc6AAK3OwACtz0AArc/AAK3QAACt0EAArdDAAK3RAACt1UAArdWAAK3WAACt9MAArfVAAK31wACt9kAArfcAAK33QACt94AArffAAK34AACt+IAArfkAAK35QACt+YAArfoAAK36QACuGQAArhmAAK4aQACuGsAArhuAAK4bwACuHAAArhxAAK4cgACuHQAArh2AAK4dwACuHgAArh6AAK4ewACuIwAAriNAAK4jwACuQoAArkMAAK5DgACuRAAArkTAAK5FAACuRUAArkWAAK5FwACuRkAArkbAAK5HAACuR0AArkfAAK5IAACuZsAArmdAAK5oAACuaIAArmlAAK5pgACuacAArmoAAK5qQACuasAArmtAAK5rgACua8AArmxAAK5sgACucMAArnEAAK5xgACukEAArpDAAK6RQACukcAArpKAAK6SwACukwAArpNAAK6TgACulAAArpSAAK6UwACulQAArpWAAK6VwACutIAArrUAAK61wACutkAArrcAAK63QACut4AArrfAAK64AACuuIAArrkAAK65QACuuYAArroAAK66QACuwIAArsDAAK7BAACuwYAAruBAAK7gwACu4UAAruHAAK7igACu4sAAruMAAK7jQACu44AAruQAAK7kgACu5MAAruUAAK7lgACu5cAArwSAAK8FAACvBcAArwZAAK8HAACvB0AArweAAK8HwACvCAAArwiAAK8JAACvCUAArwmAAK8KAACvCkAArxAAAK8WQACvGYAArxpAAK8bAACvG8AArx8AAK8fwACvIIAAryFAAK8hwACvKAAAry4AAK80QACvWQAAr2HAAK9pwACvccAAr3JAAK9ywACvc0AAr3PAAK90gACvdMAAr3UAAK91wACvdgAAr3aAAK92wACvd0AAr3gAAK94QACveIAAr3lAAK95gACvesAAr4EAAK+DQACvg8AAr4RAAK+GgACvh0AAr4gAAK+IgACvmsAAr6PAAK+tgACvtoAAr7dAAK+3wACvuEAAr7jAAK+5QACvucAAr7oAAK+6wACvwQAAr8lAAK/JwACvykAAr8rAAK/LQACvy8AAr8xAAK/MwACvzUAAr9WAAK/WQACv1wAAr9fAAK/YgACv2UAAr9oAAK/awACv24AAr9wAAK/6wACv+0AAr/vAAK/8QACv/QAAr/1AAK/9gACv/cAAr/4AAK/+gACv/wAAr/9AAK//gACwAAAAsABAALAfAACwH4AAsCAAALAggACwIUAAsCGAALAhwACwIgAAsCJAALAiwACwI0AAsCOAALAjwACwJEAAsCSAALBDQACwQ8AAsESAALBFAACwRcAAsEYAALBGQACwRoAAsEbAALBHQACwR8AAsEgAALBIQACwSMAAsEkAALBPQACwT4AAsE/AALBQQACwbwAAsG+AALBwAACwcIAAsHFAALBxgACwccAAsHIAALByQACwcsAAsHNAALBzgACwc8AAsHRAALB0gACwk0AAsJPAALCUQACwlMAAsJWAALCVwACwlgAAsJZAALCWgACwlwAAsJeAALCXwACwmAAAsJiAALCYwACwt4AAsLgAALC4gACwuQAAsLnAALC6AACwukAAsLqAALC6wACwu0AAsLvAALC8AACwvEAAsLzAALC9AACw28AAsNxAALDcwACw3UAAsN4AALDeQACw3oAAsN7AALDfAACw34AAsOAAALDgQACw4IAAsOEAALDhQACxAAAAsQCAALEBAACxAYAAsQJAALECgACxAsAAsQMAALEDQACxA8AAsQRAALEEgACxBMAAsQVAALEFgACxF8AAsSDAALEqgACxM4AAsTRAALE0wACxNUAAsTXAALE2QACxNsAAsTcAALE3wACxPgAAsUVAALFFwACxRkAAsUbAALFHQACxR8AAsUhAALFIwACxUAAAsVDAALFRgACxUkAAsVMAALFTwACxVIAAsVVAALFVwACxdIAAsXUAALF1wACxdkAAsXcAALF3QACxd4AAsXfAALF4AACxeIAAsXkAALF5QACxeYAAsXoAALF6QACxmQAAsZmAALGaAACxmoAAsZtAALGbgACxm8AAsZwAALGcQACxnMAAsZ1AALGdgACxncAAsZ5AALGegACxvUAAsb3AALG+QACxvsAAsb+AALG/wACxwAAAscBAALHAgACxwQAAscGAALHBwACxwgAAscKAALHCwACx4YAAseIAALHiwACx40AAseQAALHkQACx5IAAseTAALHlAACx5YAAseYAALHmQACx5oAAsecAALHnQACyBgAAsgaAALIHAACyB4AAsghAALIIgACyCMAAsgkAALIJQACyCcAAsgpAALIKgACyCsAAsgtAALILgACyKkAAsirAALIrQACyK8AAsiyAALIswACyLQAAsi1AALItgACyLgAAsi6AALIuwACyLwAAsi+AALIvwACyToAAsk8AALJPgACyUAAAslDAALJRAACyUUAAslGAALJRwACyUkAAslLAALJTAACyU0AAslPAALJUAACyeMAAsoGAALKJgACykYAAspIAALKSgACykwAAspOAALKUQACylIAAspTAALKVgACylcAAspZAALKWgACylwAAspfAALKYAACymEAAspkAALKZQACymoAAsqDAALKjAACyo4AAsqQAALKmQACypwAAsqfAALKoQACyuoAAssOAALLNQACy1kAAstcAALLXgACy2AAAstiAALLZAACy2YAAstnAALLagACy4MAAsukAALLpgACy6gAAsuqAALLrAACy64AAsuwAALLsgACy7QAAsvVAALL2AACy9sAAsveAALL4QACy+QAAsvnAALL6gACy+0AAsvvAALMagACzGwAAsxuAALMcAACzHMAAsx0AALMdQACzHYAAsx3AALMeQACzHsAAsx8AALMfQACzH8AAsyAAALM+wACzP0AAsz/AALNAQACzQQAAs0FAALNBgACzQcAAs0IAALNCgACzQwAAs0NAALNDgACzRAAAs0RAALNjAACzY4AAs2RAALNkwACzZYAAs2XAALNmAACzZkAAs2aAALNnAACzZ4AAs2fAALNoAACzaIAAs2jAALNvAACzb0AAs2+AALNwAACzjsAAs49AALOPwACzkEAAs5EAALORQACzkYAAs5HAALOSAACzkoAAs5MAALOTQACzk4AAs5QAALOUQACzswAAs7OAALO0AACztIAAs7VAALO1gACztcAAs7YAALO2QACztsAAs7dAALO3gACzt8AAs7hAALO4gACz10AAs9fAALPYQACz2MAAs9mAALPZwACz2gAAs9pAALPagACz2wAAs9uAALPbwACz3AAAs9yAALPcwACz+4AAs/wAALP8gACz/QAAs/3AALP+AACz/kAAs/6AALP+wACz/0AAs//AALQAAAC0AEAAtADAALQBAAC0H8AAtCBAALQgwAC0IUAAtCIAALQiQAC0IoAAtCLAALQjAAC0I4AAtCQAALQkQAC0JIAAtCUAALQlQAC0N4AAtECAALRKQAC0U0AAtFQAALRUgAC0VQAAtFWAALRWAAC0VoAAtFbAALRXgAC0XcAAtGUAALRlgAC0ZgAAtGaAALRnAAC0Z4AAtGgAALRogAC0b8AAtHCAALRxQAC0cgAAtHLAALRzgAC0dEAAtHUAALR1gAC0lEAAtJTAALSVQAC0lcAAtJaAALSWwAC0lwAAtJdAALSXgAC0mAAAtJiAALSYwAC0mQAAtJmAALSZwAC0uIAAtLkAALS5gAC0ugAAtLrAALS7AAC0u0AAtLuAALS7wAC0vEAAtLzAALS9AAC0vUAAtL3AALS+AAC03MAAtN1AALTdwAC03kAAtN8AALTfQAC034AAtN/AALTgAAC04IAAtOEAALThQAC04YAAtOIAALTiQAC1AQAAtQGAALUCAAC1AoAAtQNAALUDgAC1A8AAtQQAALUEQAC1BMAAtQVAALUFgAC1BcAAtQZAALUGgAC1JUAAtSXAALUmQAC1JsAAtSeAALUnwAC1KAAAtShAALUogAC1KQAAtSmAALUpwAC1KgAAtSqAALUqwAC1SYAAtUoAALVKgAC1SwAAtUvAALVMAAC1TEAAtUyAALVMwAC1TUAAtU3AALVOAAC1TkAAtU7AALVPAAC1bcAAtW5AALVuwAC1b0AAtXAAALVwQAC1cIAAtXDAALVxAAC1cYAAtXIAALVyQAC1coAAtXMAALVzQAC1mAAAtaDAALWowAC1sMAAtbFAALWxwAC1skAAtbLAALWzgAC1s8AAtbQAALW0wAC1tQAAtbWAALW1wAC1tkAAtbcAALW3QAC1t4AAtbhAALW4gAC1ucAAtcAAALXCQAC1wsAAtcNAALXFgAC1xkAAtccAALXHgAC12cAAteLAALXsgAC19YAAtfZAALX2wAC190AAtffAALX4QAC1+MAAtfkAALX5wAC2AAAAtghAALYIwAC2CUAAtgnAALYKQAC2CsAAtgtAALYLwAC2DEAAthSAALYVQAC2FgAAthbAALYXgAC2GEAAthkAALYZwAC2GoAAthsAALY5wAC2OkAAtjrAALY7QAC2PAAAtjxAALY8gAC2PMAAtj0AALY9gAC2PgAAtj5AALY+gAC2PwAAtj9AALZeAAC2XoAAtl8AALZfgAC2YEAAtmCAALZgwAC2YQAAtmFAALZhwAC2YkAAtmKAALZiwAC2Y0AAtmOAALaCQAC2gsAAtoOAALaEAAC2hMAAtoUAALaFQAC2hYAAtoXAALaGQAC2hsAAtocAALaHQAC2h8AAtogAALaOQAC2joAAto7AALaPQAC2rgAAtq6AALavAAC2r4AAtrBAALawgAC2sMAAtrEAALaxQAC2scAAtrJAALaygAC2ssAAtrNAALazgAC20kAAttLAALbTQAC208AAttSAALbUwAC21QAAttVAALbVgAC21gAAttaAALbWwAC21wAAtteAALbXwAC29oAAtvcAALb3gAC2+AAAtvjAALb5AAC2+UAAtvmAALb5wAC2+kAAtvrAALb7AAC2+0AAtvvAALb8AAC3GsAAtxtAALcbwAC3HEAAtx0AALcdQAC3HYAAtx3AALceAAC3HoAAtx8AALcfQAC3H4AAtyAAALcgQAC3PwAAtz+AALdAAAC3QIAAt0FAALdBgAC3QcAAt0IAALdCQAC3QsAAt0NAALdDgAC3Q8AAt0RAALdEgAC3VsAAt1/AALdpgAC3coAAt3NAALdzwAC3dEAAt3TAALd1QAC3dcAAt3YAALd2wAC3fQAAt4RAALeEwAC3hUAAt4XAALeGQAC3hsAAt4dAALeHwAC3jwAAt4/AALeQgAC3kUAAt5IAALeSwAC3k4AAt5RAALeUwAC3s4AAt7QAALe0wAC3tUAAt7YAALe2QAC3toAAt7bAALe3AAC3t4AAt7gAALe4QAC3uIAAt7kAALe5QAC32AAAt9iAALfZAAC32YAAt9pAALfagAC32sAAt9sAALfbQAC328AAt9xAALfcgAC33MAAt91AALfdgAC3/EAAt/zAALf9QAC3/cAAt/6AALf+wAC3/wAAt/9AALf/gAC4AAAAuACAALgAwAC4AQAAuAGAALgBwAC4IIAAuCEAALghwAC4IkAAuCMAALgjQAC4I4AAuCPAALgkAAC4JIAAuCUAALglQAC4JYAAuCYAALgmQAC4RQAAuEWAALhGAAC4RoAAuEdAALhHgAC4R8AAuEgAALhIQAC4SMAAuElAALhJgAC4ScAAuEpAALhKgAC4aUAAuGnAALhqQAC4asAAuGuAALhrwAC4bAAAuGxAALhsgAC4bQAAuG2AALhtwAC4bgAAuG6AALhuwAC4jYAAuI4AALiOgAC4jwAAuI/AALiQAAC4kEAAuJCAALiQwAC4kUAAuJHAALiSAAC4kkAAuJLAALiTAAC4l0AAuJeAALiYAAC4nEAAuJ6AALifQAC4oAAAuKCAALiuwAC4r4AAuLAAALiwwAC4sYAAuLJAALizAAC408AAuNzAALjlwAC47oAAuPhAALkAQAC5CgAAuRPAALkbwAC5JMAAuS3AALkuQAC5LwAAuS+AALkwAAC5MIAAuTFAALkyAAC5MoAAuTMAALkzwAC5NEAAuTTAALk1gAC5NkAAuTaAALk3wAC5PgAAuT9AALk/wAC5QQAAuUHAALlCQAC5VIAAuV2AALlnQAC5cEAAuXEAALlxgAC5cgAAuXKAALlzAAC5c4AAuXPAALl0gAC5esAAuYQAALmEgAC5hQAAuYWAALmGAAC5hoAAuYcAALmHgAC5iAAAuYiAALmRwAC5koAAuZNAALmUAAC5lMAAuZWAALmWQAC5lwAAuZfAALmYgAC5mQAAubfAALm4QAC5uQAAubmAALm6QAC5uoAAubrAALm7AAC5u0AAubvAALm8QAC5vIAAubzAALm9QAC5vYAAucHAALnCAAC5woAAueFAALnhwAC54kAAueLAALnjgAC548AAueQAALnkQAC55IAAueUAALnlgAC55cAAueYAALnmgAC55sAAugWAALoGAAC6BsAAugdAALoIAAC6CEAAugiAALoIwAC6CQAAugmAALoKAAC6CkAAugqAALoLAAC6C0AAug+AALoPwAC6EEAAui8AALovgAC6MAAAujCAALoxQAC6MYAAujHAALoyAAC6MkAAujLAALozQAC6M4AAujPAALo0QAC6NIAAulNAALpTwAC6VIAAulUAALpVwAC6VgAAulZAALpWgAC6VsAAuldAALpXwAC6WAAAulhAALpYwAC6WQAAul1AALpdgAC6XgAAunzAALp9QAC6fcAAun5AALp/AAC6f0AAun+AALp/wAC6gAAAuoCAALqBAAC6gUAAuoGAALqCAAC6gkAAuqEAALqhgAC6okAAuqLAALqjgAC6o8AAuqQAALqkQAC6pIAAuqUAALqlgAC6pcAAuqYAALqmgAC6psAAuq0AALqtQAC6rYAAuq4AALrMwAC6zUAAus3AALrOQAC6zwAAus9AALrPgAC6z8AAutAAALrQgAC60QAAutFAALrRgAC60gAAutJAALrxAAC68YAAuvJAALrywAC684AAuvPAALr0AAC69EAAuvSAALr1AAC69YAAuvXAALr2AAC69oAAuvbAALr+QAC7BIAAuwXAALsGgAC7B8AAuwiAALsJAAC7LcAAuzaAALs+gAC7RoAAu0cAALtHgAC7SAAAu0iAALtJQAC7SYAAu0nAALtKgAC7SsAAu0tAALtLgAC7TEAAu00AALtNQAC7TYAAu05AALtOgAC7T8AAu1YAALtYQAC7WMAAu1lAALtbgAC7XEAAu10AALtdgAC7b8AAu3jAALuCgAC7i4AAu4xAALuMwAC7jUAAu43AALuOQAC7jsAAu48AALuPwAC7lgAAu55AALuewAC7n0AAu5/AALugQAC7oMAAu6FAALuhwAC7okAAu6qAALurQAC7rAAAu6zAALutgAC7rkAAu68AALuvwAC7sIAAu7EAALvPwAC70EAAu9DAALvRQAC70gAAu9JAALvSgAC70sAAu9MAALvTgAC71AAAu9RAALvUgAC71QAAu9VAALv0AAC79IAAu/UAALv1gAC79kAAu/aAALv2wAC79wAAu/dAALv3wAC7+EAAu/iAALv4wAC7+UAAu/mAALwYQAC8GMAAvBmAALwaAAC8GsAAvBsAALwbQAC8G4AAvBvAALwcQAC8HMAAvB0AALwdQAC8HcAAvB4AALwkQAC8JIAAvCTAALwlQAC8RAAAvESAALxFAAC8RYAAvEZAALxGgAC8RsAAvEcAALxHQAC8R8AAvEhAALxIgAC8SMAAvElAALxJgAC8aEAAvGjAALxpQAC8acAAvGqAALxqwAC8awAAvGtAALxrgAC8bAAAvGyAALxswAC8bQAAvG2AALxtwAC8jIAAvI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mAAMV6AADFeoAAxXsAAMV7gADFfAAAxXyAAMV9AADFhEAAxYUAAMWFwADFhoAAxYdAAMWIAADFiMAAxYmAAMWKAADFqMAAxalAAMWpwADFqkAAxasAAMWrQADFq4AAxavAAMWsAADFrIAAxa0AAMWtQADFrYAAxa4AAMWuQADFzQAAxc2AAMXOQADFzsAAxc+AAMXPwADF0AAAxdBAAMXQgADF0QAAxdGAAMXRwADF0gAAxdKAAMXSwADF8YAAxfIAAMXygADF8wAAxfPAAMX0AADF9EAAxfSAAMX0wADF9UAAxfXAAMX2AADF9kAAxfbAAMX3AADGFcAAxhZAAMYXAADGF4AAxhhAAMYYgADGGMAAxhkAAMYZQADGGcAAxhpAAMYagADGGsAAxhtAAMYbgADGOkAAxjrAAMY7QADGO8AAxjyAAMY8wADGPQAAxj1AAMY9gADGPgAAxj6AAMY+wADGPwAAxj+AAMY/wADGXoAAxl8AAMZfgADGYAAAxmDAAMZhAADGYUAAxmGAAMZhwADGYkAAxmLAAMZjAADGY0AAxmPAAMZkAADGgsAAxoNAAMaEAADGhIAAxoVAAMaFgADGhcAAxoYAAMaGQADGhsAAxodAAMaHgADGh8AAxohAAMaIgADGrUAAxrYAAMa+AADGxgAAxsaAAMbHAADGx4AAxsgAAMbIwADGyQAAxslAAMbKAADGykAAxsrAAMbLAADGy4AAxsxAAMbMgADGzMAAxs2AAMbNwADGzwAAxtVAAMbXgADG2AAAxtiAAMbawADG24AAxtxAAMbcwADG7wAAxvgAAMcBwADHCsAAxwuAAMcMAADHDIAAxw0AAMcNgADHDgAAxw5AAMcPAADHFUAAxx2AAMceAADHHoAAxx8AAMcfgADHIAAAxyCAAMchAADHIYAAxynAAMcqgADHK0AAxywAAMcswADHLYAAxy5AAMcvAADHL8AAxzBAAMdPAADHT4AAx1AAAMdQgADHUUAAx1GAAMdRwADHUgAAx1JAAMdSwADHU0AAx1OAAMdTwADHVEAAx1SAAMdzQADHc8AAx3RAAMd0wADHdYAAx3XAAMd2AADHdkAAx3aAAMd3AADHd4AAx3fAAMd4AADHeIAAx3jAAMeXgADHmAAAx5jAAMeZQADHmgAAx5pAAMeagADHmsAAx5sAAMebgADHnAAAx5xAAMecgADHnQAAx51AAMejgADHo8AAx6QAAMekgADHw0AAx8PAAMfEQADHxMAAx8WAAMfFwADHxgAAx8ZAAMfGgADHxwAAx8eAAMfHwADHyAAAx8iAAMfIwADH54AAx+gAAMfogADH6QAAx+nAAMfqAADH6kAAx+qAAMfqwADH60AAx+vAAMfsAADH7EAAx+zAAMftAADIC8AAyAxAAMgMwADIDUAAyA4AAMgOQADIDoAAyA7AAMgPAADID4AAyBAAAMgQQADIEIAAyBEAAMgRQADIMAAAyDCAAMgxAADIMYAAyDJAAMgygADIMsAAyDMAAMgzQADIM8AAyDRAAMg0gADINMAAyDVAAMg1gADIVEAAyFTAAMhVQADIVcAAyFaAAMhWwADIVwAAyFdAAMhXgADIWAAAyFiAAMhYwADIWQAAyFmAAMhZwADIbAAAyHUAAMh+wADIh8AAyIiAAMiJAADIiYAAyIoAAMiKgADIiwAAyItAAMiMAADIkkAAyJmAAMiaAADImoAAyJsAAMibgADInAAAyJyAAMidAADIpEAAyKUAAMilwADIpoAAyKdAAMioAADIqMAAyKmAAMiqAADIyMAAyMlAAMjJwADIykAAyMsAAMjLQADIy4AAyMvAAMjMAADIzIAAyM0AAMjNQADIzYAAyM4AAMjOQADI7QAAyO2AAMjuAADI7oAAyO9AAMjvgADI78AAyPAAAMjwQADI8MAAyPFAAMjxgADI8cAAyPJAAMjygADJEUAAyRHAAMkSQADJEsAAyROAAMkTwADJFAAAyRRAAMkUgADJFQAAyRWAAMkVwADJFgAAyRaAAMkWwADJNYAAyTYAAMk2wADJN0AAyTgAAMk4QADJOIAAyTjAAMk5AADJOYAAyToAAMk6QADJOoAAyTsAAMk7QADJWgAAyVqAAMlbAADJW4AAyVxAAMlcgADJXMAAyV0AAMldQADJXcAAyV5AAMlegADJXsAAyV9AAMlfgADJfkAAyX7AAMl/QADJf8AAyYCAAMmAwADJgQAAyYFAAMmBgADJggAAyYKAAMmCwADJgwAAyYOAAMmDwADJooAAyaMAAMmjgADJpAAAyaTAAMmlAADJpUAAyaWAAMmlwADJpkAAyabAAMmnAADJp0AAyafAAMmoAADJzMAAydWAAMndgADJ5YAAyeYAAMnmgADJ5wAAyeeAAMnoQADJ6IAAyejAAMnpgADJ6cAAyepAAMnqgADJ60AAyewAAMnsQADJ7IAAye1AAMntgADJ7sAAyfUAAMn3QADJ98AAyfhAAMn6gADJ+0AAyfwAAMn8gADKDsAAyhfAAMohgADKKoAAyitAAMorwADKLEAAyizAAMotQADKLcAAyi4AAMouwADKNQAAyj1AAMo9wADKPkAAyj7AAMo/QADKP8AAykBAAMpAwADKQUAAykmAAMpKQADKSwAAykvAAMpMgADKTUAAyk4AAMpOwADKT4AAylAAAMpuwADKb0AAym/AAMpwQADKcQAAynFAAMpxgADKccAAynIAAMpygADKcwAAynNAAMpzgADKdAAAynRAAMqTAADKk4AAypQAAMqUgADKlUAAypWAAMqVwADKlgAAypZAAMqWwADKl0AAypeAAMqXwADKmEAAypiAAMq3QADKt8AAyriAAMq5AADKucAAyroAAMq6QADKuoAAyrrAAMq7QADKu8AAyrwAAMq8QADKvMAAyr0AAMrDQADKw4AAysPAAMrEQADK4wAAyuOAAMrkAADK5IAAyuVAAMrlgADK5cAAyuYAAMrmQADK5sAAyudAAMrngADK58AAyuhAAMrogADLB0AAywfAAMsIQADLCMAAywmAAMsJwADLCgAAywpAAMsKgADLCwAAywuAAMsLwADLDAAAywyAAMsMwADLK4AAyywAAMssgADLLQAAyy3AAMsuAADLLkAAyy6AAMsuwADLL0AAyy/AAMswAADLMEAAyzDAAMsxAADLT8AAy1BAAMtQwADLUUAAy1IAAMtSQADLUoAAy1LAAMtTAADLU4AAy1QAAMtUQADLVIAAy1UAAMtVQADLdAAAy3SAAMt1AADLdYAAy3ZAAMt2gADLdsAAy3cAAMt3QADLd8AAy3hAAMt4gADLeMAAy3lAAMt5gADLi8AAy5TAAMuegADLp4AAy6hAAMuowADLqUAAy6nAAMuqQADLqsAAy6sAAMurwADLsgAAy7lAAMu5wADLukAAy7rAAMu7QADLu8AAy7xAAMu8wADLxAAAy8TAAMvFgADLxkAAy8cAAMvHwADLyIAAy8lAAMvJwADL6IAAy+kAAMvpgADL6gAAy+rAAMvrAADL60AAy+uAAMvrwADL7EAAy+zAAMvtAADL7UAAy+3AAMvuAADMDMAAzA1AAMwOAADMDoAAzA9AAMwPgADMD8AAzBAAAMwQQADMEMAAzBFAAMwRgADMEcAAzBJAAMwSgADMMUAAzDHAAMwyQADMMsAAzDOAAMwzwADMNAAAzDRAAMw0gADMNQAAzDWAAMw1wADMNgAAzDaAAMw2wADMVYAAzFYAAMxWwADMV0AAzFgAAMxYQADMWIAAzFjAAMxZAADMWYAAzFoAAMxaQADMWoAAzFsAAMxbQADMfAAAzIUAAMyOAADMlsAAzKCAAMyogADMskAAzLwAAMzEAADMzQAAzNYAAMzWgADM10AAzNfAAMzYQADM2MAAzNmAAMzaQADM2sAAzNtAAMzcAADM3IAAzN0AAMzdwADM3oAAzN7AAMzgAADM5kAAzOeAAMzoAADM6UAAzOoAAMzqgADM/MAAzQXAAM0PgADNGIAAzRlAAM0ZwADNGkAAzRrAAM0bQADNG8AAzRwAAM0cwADNIwAAzSxAAM0swADNLUAAzS3AAM0uQADNLsAAzS9AAM0vwADNMEAAzTDAAM06AADNOsAAzTuAAM08QADNPQAAzT3AAM0+gADNP0AAzUAAAM1AwADNQUAAzWAAAM1ggADNYUAAzWHAAM1igADNYsAAzWMAAM1jQADNY4AAzWQAAM1kgADNZMAAzWUAAM1lgADNZcAAzWoAAM1qQADNasAAzYmAAM2KAADNioAAzYsAAM2LwADNjAAAzYxAAM2MgADNjMAAzY1AAM2NwADNjgAAzY5AAM2OwADNjwAAza3AAM2uQADNrwAAza+AAM2wQADNsIAAzbDAAM2xAADNsUAAzbHAAM2yQADNsoAAzbLAAM2zQADNs4AAzbfAAM24AADNuIAAzddAAM3XwADN2EAAzdjAAM3ZgADN2cAAzdoAAM3aQADN2oAAzdsAAM3bgADN28AAzdwAAM3cgADN3MAAzfuAAM38AADN/MAAzf1AAM3+AADN/kAAzf6AAM3+wADN/wAAzf+AAM4AAADOAEAAzgCAAM4BAADOAUAAzgWAAM4FwADOBkAAziUAAM4lgADOJgAAziaAAM4nQADOJ4AAzifAAM4oAADOKEAAzijAAM4pQADOKYAAzinAAM4qQADOKoAAzklAAM5JwADOSoAAzksAAM5LwADOTAAAzkxAAM5MgADOTMAAzk1AAM5NwADOTgAAzk5AAM5OwADOTwAAzlVAAM5VgADOVcAAzlZAAM51AADOdYAAznYAAM52gADOd0AAzneAAM53wADOeAAAznhAAM54wADOeUAAznmAAM55wADOekAAznqAAM6ZQADOmcAAzpqAAM6bAADOm8AAzpwAAM6cQADOnIAAzpzAAM6dQADOncAAzp4AAM6eQADOnsAAzp8AAM6lQADOq4AAzrHAAM6ygADOs0AAzrQAAM60wADOtYAAzrZAAM68gADOvUAAzr4AAM6+wADOv4AAzsBAAM7BAADOwYAAzsPAAM7FAADOyIAAzsmAAM7LAADO78AAzviAAM8AgADPCIAAzwkAAM8JgADPCgAAzwqAAM8LQADPC4AAzwvAAM8MgADPDMAAzw1AAM8NgADPDkAAzw8AAM8PQADPD4AAzxBAAM8QgADPEcAAzxgAAM8aQADPGsAAzxtAAM8dgADPHkAAzx8AAM8fgADPMcAAzzrAAM9EgADPTYAAz05AAM9OwADPT0AAz0/AAM9QQADPUMAAz1EAAM9RwADPWAAAz2BAAM9gwADPYUAAz2HAAM9iQADPYsAAz2NAAM9jwADPZEAAz2yAAM9tQADPbgAAz27AAM9vgADPcEAAz3EAAM9xwADPcoAAz3MAAM+RwADPkkAAz5LAAM+TQADPlAAAz5RAAM+UgADPlMAAz5UAAM+VgADPlgAAz5ZAAM+WgADPlwAAz5dAAM+2AADPtoAAz7cAAM+3gADPuEAAz7iAAM+4wADPuQAAz7lAAM+5wADPukAAz7qAAM+6wADPu0AAz7uAAM/aQADP2sAAz9uAAM/cAADP3MAAz90AAM/dQADP3YAAz93AAM/eQADP3sAAz98AAM/fQADP38AAz+AAAM/mQADP5oAAz+bAAM/nQADQBgAA0AaAANAHAADQB4AA0AhAANAIgADQCMAA0AkAANAJQADQCcAA0ApAANAKgADQCsAA0AtAANALgADQKkAA0CrAANArQADQK8AA0CyAANAswADQLQAA0C1AANAtgADQLgAA0C6AANAuwADQLwAA0C+AANAvwADQToAA0E8AANBPgADQUAAA0FDAANBRAADQUUAA0FGAANBRwADQUkAA0FLAANBTAADQU0AA0FPAANBUAADQcsAA0HNAANBzwADQdEAA0HUAANB1QADQdYAA0HXAANB2AADQdoAA0HcAANB3QADQd4AA0HgAANB4QADQlwAA0JeAANCYAADQmIAA0JlAANCZgADQmcAA0JoAANCaQADQmsAA0JtAANCbgADQm8AA0JxAANCcgADQrsAA0LfAANDBgADQyoAA0MtAANDLwADQzEAA0MzAANDNQADQzcAA0M4AANDOwADQ1QAA0NxAANDcwADQ3UAA0N3AANDeQADQ3sAA0N9AANDfwADQ5wAA0OfAANDogADQ6UAA0OoAANDqwADQ64AA0OxAANDswADRC4AA0QwAANEMgADRDQAA0Q3AANEOAADRDkAA0Q6AANEOwADRD0AA0Q/AANEQAADREEAA0RDAANERAADRL8AA0TBAANEwwADRMUAA0TIAANEyQADRMoAA0TLAANEzAADRM4AA0TQAANE0QADRNIAA0TUAANE1QADRVAAA0VSAANFVAADRVYAA0VZAANFWgADRVsAA0VcAANFXQADRV8AA0VhAANFYgADRWMAA0VlAANFZgADReEAA0XjAANF5gADRegAA0XrAANF7AADRe0AA0XuAANF7wADRfEAA0XzAANF9AADRfUAA0X3AANF+AADRnMAA0Z1AANGdwADRnkAA0Z8AANGfQADRn4AA0Z/AANGgAADRoIAA0aEAANGhQADRoYAA0aIAANGiQADRwQAA0cGAANHCAADRwoAA0cNAANHDgADRw8AA0cQAANHEQADRxMAA0cVAANHFgADRxcAA0cZAANHGgADR5UAA0eXAANHmgADR5wAA0efAANHoAADR6EAA0eiAANHowADR6UAA0enAANHqAADR6kAA0erAANHrAADSD8AA0hiAANIggADSKIAA0ikAANIpgADSKgAA0iqAANIrQADSK4AA0ivAANIsgADSLMAA0i1AANItgADSLgAA0i7AANIvAADSL0AA0jAAANIwQADSMYAA0jfAANI6AADSOoAA0jsAANI9QADSPgAA0j7AANI/QADSUYAA0lqAANJkQADSbUAA0m4AANJugADSbwAA0m+AANJwAADScIAA0nDAANJxgADSd8AA0oAAANKAgADSgQAA0oGAANKCAADSgoAA0oMAANKDgADShAAA0oxAANKNAADSjcAA0o6AANKPQADSkAAA0pDAANKRgADSkkAA0pLAANKxgADSsgAA0rKAANKzAADSs8AA0rQAANK0QADStIAA0rTAANK1QADStcAA0rYAANK2QADStsAA0rcAANLVwADS1kAA0tbAANLXQADS2AAA0thAANLYgADS2MAA0tkAANLZgADS2gAA0tpAANLagADS2wAA0ttAANL6AADS+oAA0vtAANL7wADS/IAA0vzAANL9AADS/UAA0v2AANL+AADS/oAA0v7AANL/AADS/4AA0v/AANMGAADTBkAA0waAANMHAADTJcAA0yZAANMmwADTJ0AA0ygAANMoQADTKIAA0yjAANMpAADTKYAA0yoAANMqQADTKoAA0ysAANMrQADTSgAA00qAANNLAADTS4AA00xAANNMgADTTMAA000AANNNQADTTcAA005AANNOgADTTsAA009AANNPgADTbkAA027AANNvQADTb8AA03CAANNwwADTcQAA03FAANNxgADTcgAA03KAANNywADTcwAA03OAANNzwADTkoAA05MAANOTgADTlAAA05TAANOVAADTlUAA05WAANOVwADTlkAA05bAANOXAADTl0AA05fAANOYAADTtsAA07dAANO3wADTuEAA07kAANO5QADTuYAA07nAANO6AADTuoAA07sAANO7QADTu4AA07wAANO8QADTzoAA09eAANPhQADT6kAA0+sAANPrgADT7AAA0+yAANPtAADT7YAA0+3AANPugADT9MAA0/wAANP8gADT/QAA0/2AANP+AADT/oAA0/8AANP/gADUBsAA1AeAANQIQADUCQAA1AnAANQKgADUC0AA1AwAANQMgADUK0AA1CvAANQsQADULMAA1C2AANQtwADULgAA1C5AANQugADULwAA1C+AANQvwADUMAAA1DCAANQwwADUT4AA1FAAANRQgADUUQAA1FHAANRSAADUUkAA1FKAANRSwADUU0AA1FPAANRUAADUVEAA1FTAANRVAADUc8AA1HRAANR0wADUdUAA1HYAANR2QADUdoAA1HbAANR3AADUd4AA1HgAANR4QADUeIAA1HkAANR5QADUmAAA1JiAANSZQADUmcAA1JqAANSawADUmwAA1JtAANSbgADUnAAA1JyAANScwADUnQAA1J2AANSdwADUvIAA1L0AANS9gADUvgAA1L7AANS/AADUv0AA1L+AANS/wADUwEAA1MDAANTBAADUwUAA1MHAANTCAADU4MAA1OFAANThwADU4kAA1OMAANTjQADU44AA1OPAANTkAADU5IAA1OUAANTlQADU5YAA1OYAANTmQADVBQAA1QWAANUGAADVBoAA1QdAANUHgADVB8AA1QgAANUIQADVCMAA1QlAANUJgADVCcAA1QpAANUKgADVL0AA1TgAANVAAADVSAAA1UiAANVJAADVSYAA1UoAANVKwADVSwAA1UtAANVMAADVTEAA1UzAANVNAADVTcAA1U6AANVOwADVTwAA1U/AANVQAADVUkAA1ViAANVawADVW0AA1VvAANVeAADVXsAA1V+AANVgAADVckAA1XtAANWFAADVjgAA1Y7AANWPQADVj8AA1ZBAANWQwADVkUAA1ZGAANWSQADVmIAA1aDAANWhQADVocAA1aJAANWiwADVo0AA1aPAANWkQADVpMAA1a0AANWtwADVroAA1a9AANWwAADVsMAA1bGAANWyQADVswAA1bOAANXSQADV0sAA1dNAANXTwADV1IAA1dTAANXVAADV1UAA1dWAANXWAADV1oAA1dbAANXXAADV14AA1dfAANX2gADV9wAA1feAANX4AADV+MAA1fkAANX5QADV+YAA1fnAANX6QADV+sAA1fsAANX7QADV+8AA1fwAANYawADWG0AA1hwAANYcgADWHUAA1h2AANYdwADWHgAA1h5AANYewADWH0AA1h+AANYfwADWIEAA1iCAANYmwADWJwAA1idAANYnwADWRoAA1kcAANZHgADWSAAA1kjAANZJAADWSUAA1kmAANZJwADWSkAA1krAANZLAADWS0AA1kvAANZMAADWasAA1mtAANZrwADWbEAA1m0AANZtQADWbYAA1m3AANZuAADWboAA1m8AANZvQADWb4AA1nAAANZwQADWjwAA1o+AANaQAADWkIAA1pFAANaRgADWkcAA1pIAANaSQADWksAA1pNAANaTgADWk8AA1pRAANaUgADWs0AA1rPAANa0QADWtMAA1rWAANa1wADWtgAA1rZAANa2gADWtwAA1reAANa3wADWuAAA1riAANa4wADW14AA1tgAANbYgADW2QAA1tnAANbaAADW2kAA1tqAANbawADW20AA1tvAANbcAADW3EAA1tzAANbdAADW70AA1vhAANcCAADXCwAA1wvAANcMQADXDMAA1w1AANcNwADXDkAA1w6AANcPQADXFYAA1xzAANcdQADXHcAA1x5AANcewADXH0AA1x/AANcgQADXJ4AA1yhAANcpAADXKcAA1yqAANcrQADXLAAA1yzAANctQADXTAAA10yAANdNAADXTYAA105AANdOgADXTsAA108AANdPQADXT8AA11BAANdQgADXUMAA11FAANdRgADXcEAA13DAANdxQADXccAA13KAANdywADXcwAA13NAANdzgADXdAAA13SAANd0wADXdQAA13WAANd1wADXlIAA15UAANeVgADXlgAA15bAANeXAADXl0AA15eAANeXwADXmEAA15jAANeZAADXmUAA15nAANeaAADXuMAA17lAANe6AADXuoAA17tAANe7gADXu8AA17wAANe8QADXvMAA171AANe9gADXvcAA175AANe+gADX30AA1+hAANfxQADX+gAA2APAANgLwADYFYAA2B9AANgnQADYMEAA2DlAANg5wADYOoAA2DsAANg7gADYPAAA2DzAANg9gADYPgAA2D6AANg/QADYP8AA2EBAANhBAADYQcAA2EIAANhDQADYSYAA2ErAANhLQADYTIAA2E1AANhNwADYYAAA2GkAANhywADYe8AA2HyAANh9AADYfYAA2H4AANh+gADYfwAA2H9AANiAAADYhkAA2I+AANiQAADYkIAA2JEAANiRgADYkgAA2JKAANiTAADYk4AA2JQAANidQADYngAA2J7AANifgADYoEAA2KEAANihwADYooAA2KNAANikAADYpIAA2MNAANjDwADYxIAA2MUAANjFwADYxgAA2MZAANjGgADYxsAA2MdAANjHwADYyAAA2MhAANjIwADYyQAA2M1AANjNgADYzgAA2OzAANjtQADY7cAA2O5AANjvAADY70AA2O+AANjvwADY8AAA2PCAANjxAADY8UAA2PGAANjyAADY8kAA2REAANkRgADZEkAA2RLAANkTgADZE8AA2RQAANkUQADZFIAA2RUAANkVgADZFcAA2RYAANkWgADZFsAA2RsAANkcQADZHQAA2R2AANkhwADZIwAA2SPAANkkQADZJgAA2UTAANlFQADZRcAA2UZAANlHAADZR0AA2UeAANlHwADZSAAA2UiAANlJAADZSUAA2UmAANlKAADZSkAA2WkAANlpgADZakAA2WrAANlrgADZa8AA2WwAANlsQADZbIAA2W0AANltgADZbcAA2W4AANlugADZbsAA2XMAANlzQADZc8AA2ZKAANmTAADZk4AA2ZQAANmUwADZlQAA2ZVAANmVgADZlcAA2ZZAANmWwADZlwAA2ZdAANmXwADZmAAA2bbAANm3QADZuAAA2biAANm5QADZuYAA2bnAANm6AADZukAA2brAANm7QADZu4AA2bvAANm8QADZvIAA2cLAANnDAADZw0AA2cPAANnigADZ4wAA2eOAANnkAADZ5MAA2eUAANnlQADZ5YAA2eXAANnmQADZ5sAA2ecAANnnQADZ58AA2egAANoGwADaB0AA2gfAANoIQADaCQAA2glAANoJgADaCcAA2goAANoKgADaCwAA2gtAANoLgADaDAAA2gxAANoSgADaFsAA2heAANoYQADaGQAA2hnAANoeAADaHsAA2h+AANogQADaIQAA2iGAANomgADaLkAA2jNAANpYAADaYMAA2mjAANpwwADacUAA2nHAANpyQADacsAA2nOAANpzwADadAAA2nTAANp1AADadYAA2nXAANp2QADadwAA2ndAANp3gADaeEAA2niAANp5wADagAAA2oJAANqCwADag0AA2oWAANqGQADahwAA2oeAANqZwADaosAA2qyAANq1gADatkAA2rbAANq3QADat8AA2rhAANq4wADauQAA2rnAANrAAADayEAA2sjAANrJQADaycAA2spAANrKwADay0AA2svAANrMQADa1IAA2tVAANrWAADa1sAA2teAANrYQADa2QAA2tnAANragADa2wAA2vnAANr6QADa+sAA2vtAANr8AADa/EAA2vyAANr8wADa/QAA2v2AANr+AADa/kAA2v6AANr/AADa/0AA2x4AANsegADbHwAA2x+AANsgQADbIIAA2yDAANshAADbIUAA2yHAANsiQADbIoAA2yLAANsjQADbI4AA20JAANtCwADbQ4AA20QAANtEwADbRQAA20VAANtFgADbRcAA20ZAANtGwADbRwAA20dAANtHwADbSAAA205AANtOgADbTsAA209AANtuAADbboAA228AANtvgADbcEAA23CAANtwwADbcQAA23FAANtxwADbckAA23KAANtywADbc0AA23OAANuSQADbksAA25NAANuTwADblIAA25TAANuVAADblUAA25WAANuWAADbloAA25bAANuXAADbl4AA25fAANu2gADbtwAA27eAANu4AADbuMAA27kAANu5QADbuYAA27nAANu6QADbusAA27sAANu7QADbu8AA27wAANvawADb20AA29vAANvcQADb3QAA291AANvdgADb3cAA294AANvegADb3wAA299AANvfgADb4AAA2+BAANv/AADb/4AA3AAAANwAgADcAUAA3AGAANwBwADcAgAA3AJAANwCwADcA0AA3AOAANwDwADcBEAA3ASAANwWwADcH8AA3CmAANwygADcM0AA3DPAANw0QADcNMAA3DVAANw1wADcNgAA3DbAANw9AADcREAA3ETAANxFQADcRcAA3EZAANxGwADcR0AA3EfAANxPAADcT8AA3FCAANxRQADcUgAA3FLAANxTgADcVEAA3FTAANxzgADcdAAA3HSAANx1AADcdcAA3HYAANx2QADcdoAA3HbAANx3QADcd8AA3HgAANx4QADceMAA3HkAANyXwADcmEAA3JjAANyZQADcmgAA3JpAANyagADcmsAA3JsAANybgADcnAAA3JxAANycgADcnQAA3J1AANy8AADcvIAA3L0AANy9gADcvkAA3L6AANy+wADcvwAA3L9AANy/wADcwEAA3MCAANzAwADcwUAA3MGAANzgQADc4MAA3OGAANziAADc4sAA3OMAANzjQADc44AA3OPAANzkQADc5MAA3OUAANzlQADc5cAA3OYAAN0EwADdBUAA3QXAAN0GQADdBwAA3QdAAN0HgADdB8AA3QgAAN0IgADdCQAA3QlAAN0JgADdCgAA3QpAAN0pAADdKYAA3SoAAN0qgADdK0AA3SuAAN0rwADdLAAA3SxAAN0swADdLUAA3S2AAN0twADdLkAA3S6AAN1NQADdTcAA3U5AAN1OwADdT4AA3U/AAN1QAADdUEAA3VCAAN1RAADdUYAA3VHAAN1SAADdUoAA3VLAAN13gADdgEAA3YhAAN2QQADdkMAA3ZFAAN2RwADdkkAA3ZMAAN2TQADdk4AA3ZRAAN2UgADdlQAA3ZVAAN2WAADdlsAA3ZcAAN2XQADdmAAA3ZhAAN2ZgADdn8AA3aIAAN2igADdowAA3aVAAN2mAADdpsAA3adAAN25gADdwoAA3cxAAN3VQADd1gAA3daAAN3XAADd14AA3dgAAN3YgADd2MAA3dmAAN3fwADd6AAA3eiAAN3pAADd6YAA3eoAAN3qgADd6wAA3euAAN3sAADd9EAA3fUAAN31wADd9oAA3fdAAN34AADd+MAA3fmAAN36QADd+sAA3hmAAN4aAADeGoAA3hsAAN4bwADeHAAA3hxAAN4cgADeHMAA3h1AAN4dwADeHgAA3h5AAN4ewADeHwAA3j3AAN4+QADePsAA3j9AAN5AAADeQEAA3kCAAN5AwADeQQAA3kGAAN5CAADeQkAA3kKAAN5DAADeQ0AA3mIAAN5igADeY0AA3mPAAN5kgADeZMAA3mUAAN5lQADeZYAA3mYAAN5mgADeZsAA3mcAAN5ngADeZ8AA3m4AAN5uQADeboAA3m8AAN6NwADejkAA3o7AAN6PQADekAAA3pBAAN6QgADekMAA3pEAAN6RgADekgAA3pJAAN6SgADekwAA3pNAAN6yAADesoAA3rMAAN6zgADetEAA3rSAAN60wADetQAA3rVAAN61wADetkAA3raAAN62wADet0AA3reAAN7WQADe1sAA3tdAAN7XwADe2IAA3tjAAN7ZAADe2UAA3tmAAN7aAADe2oAA3trAAN7bAADe24AA3tvAAN76gADe+wAA3vuAAN78AADe/MAA3v0AAN79QADe/YAA3v3AAN7+QADe/sAA3v8AAN7/QADe/8AA3wAAAN8ewADfH0AA3x/AAN8gQADfIQAA3yFAAN8hgADfIcAA3yIAAN8igADfIwAA3yNAAN8jgADfJAAA3yRAAN82gADfP4AA30lAAN9SQADfUwAA31OAAN9UAADfVIAA31UAAN9VgADfVcAA31aAAN9cwADfZAAA32SAAN9lAADfZYAA32YAAN9mgADfZwAA32eAAN9uwADfb4AA33BAAN9xAADfccAA33KAAN9zQADfdAAA33SAAN+TQADfk8AA35RAAN+UwADflYAA35XAAN+WAADflkAA35aAAN+XAADfl4AA35fAAN+YAADfmIAA35jAAN+3gADfuAAA37jAAN+5QADfugAA37pAAN+6gADfusAA37sAAN+7gADfvAAA37xAAN+8gADfvQAA371AAN/cAADf3IAA390AAN/dgADf3kAA396AAN/ewADf3wAA399AAN/fwADf4EAA3+CAAN/gwADf4UAA3+GAAOAAQADgAMAA4AGAAOACAADgAsAA4AMAAOADQADgA4AA4APAAOAEQADgBMAA4AUAAOAFQADgBcAA4AYAAOAuwADgN8AA4EDAAOBIwADgUoAA4FxAAOBkQADgbgAA4HcAAOB/wADgiYAA4JKAAOCbgADgpIAA4K5AAOCugADgrwAA4K+AAOCwQADgsMAA4LGAAOCyAADgsoAA4LNAAOCzwADgtEAA4LUAAOC1wADgtkAA4LbAAOC3QADguAAA4LjAAOC5gADgusAA4MEAAODCQADgwsAA4MQAAODEwADgxUAA4NeAAODggADg6kAA4PNAAOD0AADg9IAA4PUAAOD1gADg9gAA4PaAAOD2wADg94AA4P3AAOEHAADhB4AA4QgAAOEIgADhCQAA4QmAAOEKAADhCoAA4QsAAOELgADhFMAA4RWAAOEWQADhFwAA4RfAAOEYgADhGUAA4RoAAOEawADhG4AA4RwAAOE6wADhO0AA4TwAAOE8gADhPUAA4T2AAOE9wADhPgAA4T5AAOE+wADhP0AA4T+AAOE/wADhQEAA4UCAAOFEwADhRQAA4UWAAOFkQADhZMAA4WVAAOFlwADhZoAA4WbAAOFnAADhZ0AA4WeAAOFoAADhaIAA4WjAAOFpAADhaYAA4WnAAOGIgADhiQAA4YnAAOGKQADhiwAA4YtAAOGLgADhi8AA4YwAAOGMgADhjQAA4Y1AAOGNgADhjgAA4Y5AAOGSgADhksAA4ZNAAOGyAADhsoAA4bMAAOGzgADhtEAA4bSAAOG0wADhtQAA4bVAAOG1wADhtkAA4baAAOG2wADht0AA4beAAOHWQADh1sAA4deAAOHYAADh2MAA4dkAAOHZQADh2YAA4dnAAOHaQADh2sAA4dsAAOHbQADh28AA4dwAAOHgQADh4IAA4eEAAOH/wADiAEAA4gDAAOIBQADiAgAA4gJAAOICgADiAsAA4gMAAOIDgADiBAAA4gRAAOIEgADiBQAA4gVAAOIkAADiJIAA4iVAAOIlwADiJoAA4ibAAOInAADiJ0AA4ieAAOIoAADiKIAA4ijAAOIpAADiKYAA4inAAOIwAADiMEAA4jCAAOIxAADiT8AA4lBAAOJQwADiUUAA4lIAAOJSQADiUoAA4lLAAOJTAADiU4AA4lQAAOJUQADiVIAA4lUAAOJVQADidAAA4nSAAOJ1QADidcAA4naAAOJ2wADidwAA4ndAAOJ3gADieAAA4niAAOJ4wADieQAA4nmAAOJ5wADigMAA4ocAAOKTQADilAAA4pTAAOKVgADilkAA4pcAAOKXwADimIAA4plAAOKaAADimsAA4puAAOKcQADiqIAA4qlAAOKqAADiqsAA4quAAOKsQADirQAA4q3AAOKugADir0AA4rAAAOKwwADisYAA4rIAAOK2wADiuYAA4r0AAOLDQADixUAA4spAAOLOAADi8sAA4vuAAOMDgADjC4AA4wwAAOMMgADjDQAA4w2AAOMOQADjDoAA4w7AAOMPgADjD8AA4xBAAOMQgADjEQAA4xHAAOMSAADjEkAA4xMAAOMTQADjFIAA4xrAAOMdAADjHYAA4x4AAOMgQADjIQAA4yHAAOMiQADjNIAA4z2AAONHQADjUEAA41EAAONRgADjUgAA41KAAONTAADjU4AA41PAAONUgADjWsAA42MAAONjgADjZAAA42SAAONlAADjZYAA42YAAONmgADjZwAA429AAONwAADjcMAA43GAAONyQADjcwAA43PAAON0gADjdUAA43XAAOOUgADjlQAA45WAAOOWAADjlsAA45cAAOOXQADjl4AA45fAAOOYQADjmMAA45kAAOOZQADjmcAA45oAAOO4wADjuUAA47nAAOO6QADjuwAA47tAAOO7gADju8AA47wAAOO8gADjvQAA471AAOO9gADjvgAA475AAOPdAADj3YAA495AAOPewADj34AA49/AAOPgAADj4EAA4+CAAOPhAADj4YAA4+HAAOPiAADj4oAA4+LAAOPpAADj6UAA4+mAAOPqAADkCMAA5AlAAOQJwADkCkAA5AsAAOQLQADkC4AA5AvAAOQMAADkDIAA5A0AAOQNQADkDYAA5A4AAOQOQADkLQAA5C2AAOQuAADkLoAA5C9AAOQvgADkL8AA5DAAAOQwQADkMMAA5DFAAOQxgADkMcAA5DJAAOQygADkUUAA5FHAAORSQADkUsAA5FOAAORTwADkVAAA5FRAAORUgADkVQAA5FWAAORVwADkVgAA5FaAAORWwADkdYAA5HYAAOR2gADkdwAA5HfAAOR4AADkeEAA5HiAAOR4wADkeUAA5HnAAOR6AADkekAA5HrAAOR7AADkmcAA5JpAAOSawADkm0AA5JwAAOScQADknIAA5JzAAOSdAADknYAA5J4AAOSeQADknoAA5J8AAOSfQADksYAA5LqAAOTEQADkzUAA5M4AAOTOgADkzwAA5M+AAOTQAADk0IAA5NDAAOTRgADk18AA5N8AAOTfgADk4AAA5OCAAOThAADk4YAA5OIAAOTigADk6cAA5OqAAOTrQADk7AAA5OzAAOTtgADk7kAA5O8AAOTvgADlDkAA5Q7AAOUPgADlEAAA5RDAAOURAADlEUAA5RGAAOURwADlEkAA5RLAAOUTAADlE0AA5RPAAOUUAADlMsAA5TNAAOUzwADlNEAA5TUAAOU1QADlNYAA5TXAAOU2AADlNoAA5TcAAOU3QADlN4AA5TgAAOU4QADlVwAA5VeAAOVYQADlWMAA5VmAAOVZwADlWgAA5VpAAOVagADlWwAA5VuAAOVbwADlXAAA5VyAAOVcwADle4AA5XwAAOV8wADlfUAA5X4AAOV+QADlfoAA5X7AAOV/AADlf4AA5YAAAOWAQADlgIAA5YEAAOWBQADloAAA5aCAAOWhAADloYAA5aJAAOWigADlosAA5aMAAOWjQADlo8AA5aRAAOWkgADlpMAA5aVAAOWlgADlxEAA5cTAAOXFQADlxcAA5caAAOXGwADlxwAA5cdAAOXHgADlyAAA5ciAAOXIwADlyQAA5cmAAOXJwADl6IAA5ekAAOXpgADl6gAA5erAAOXrAADl60AA5euAAOXrwADl7EAA5ezAAOXtAADl7UAA5e3AAOXuAADmEsAA5huAAOYjgADmK4AA5iwAAOYsgADmLQAA5i2AAOYuQADmLoAA5i7AAOYvgADmL8AA5jBAAOYwgADmMQAA5jHAAOYyAADmMkAA5jMAAOYzQADmNIAA5jrAAOY9AADmPYAA5j4AAOZAQADmQQAA5kHAAOZCQADmVIAA5l2AAOZnQADmcEAA5nEAAOZxgADmcgAA5nKAAOZzAADmc4AA5nPAAOZ0gADmesAA5oMAAOaDgADmhAAA5oSAAOaFAADmhYAA5oYAAOaGgADmhwAA5o9AAOaQAADmkMAA5pGAAOaSQADmkwAA5pPAAOaUgADmlUAA5pXAAOa0gADmtQAA5rWAAOa2AADmtsAA5rcAAOa3QADmt4AA5rfAAOa4QADmuMAA5rkAAOa5QADmucAA5roAAObYwADm2UAA5tnAAObaQADm2wAA5ttAAObbgADm28AA5twAAObcgADm3QAA5t1AAObdgADm3gAA5t5AAOb9AADm/YAA5v5AAOb+wADm/4AA5v/AAOcAAADnAEAA5wCAAOcBAADnAYAA5wHAAOcCAADnAoAA5wLAAOcJAADnCUAA5wmAAOcKAADnKMAA5ylAAOcpwADnKkAA5ysAAOcrQADnK4AA5yvAAOcsAADnLIAA5y0AAOctQADnLYAA5y4AAOcuQADnTQAA502AAOdOAADnToAA509AAOdPgADnT8AA51AAAOdQQADnUMAA51FAAOdRgADnUcAA51JAAOdSgADncUAA53HAAOdyQADncsAA53OAAOdzwADndAAA53RAAOd0gADndQAA53WAAOd1wADndgAA53aAAOd2wADnlYAA55YAAOeWgADnlwAA55fAAOeYAADnmEAA55iAAOeYwADnmUAA55nAAOeaAADnmkAA55rAAOebAADnucAA57pAAOe6wADnu0AA57wAAOe8QADnvIAA57zAAOe9AADnvYAA574AAOe+QADnvoAA578AAOe/QADn0YAA59qAAOfkQADn7UAA5+4AAOfugADn7wAA5++AAOfwAADn8IAA5/DAAOfxgADn98AA5/8AAOf/gADoAAAA6ACAAOgBAADoAYAA6AIAAOgCgADoCcAA6AqAAOgLQADoDAAA6AzAAOgNgADoDkAA6A8AAOgPgADoLkAA6C7AAOgvQADoL8AA6DCAAOgwwADoMQAA6DFAAOgxgADoMgAA6DKAAOgywADoMwAA6DOAAOgzwADoUoAA6FMAAOhTgADoVAAA6FTAAOhVAADoVUAA6FWAAOhVwADoVkAA6FbAAOhXAADoV0AA6FfAAOhYAADodsAA6HdAAOh3wADoeEAA6HkAAOh5QADoeYAA6HnAAOh6AADoeoAA6HsAAOh7QADoe4AA6HwAAOh8QADomwAA6JuAAOicQADonMAA6J2AAOidwADongAA6J5AAOiegADonwAA6J+AAOifwADooAAA6KCAAOigwADov4AA6MAAAOjAgADowQAA6MHAAOjCAADowkAA6MKAAOjCwADow0AA6MPAAOjEAADoxEAA6MTAAOjFAADo48AA6ORAAOjkwADo5UAA6OYAAOjmQADo5oAA6ObAAOjnAADo54AA6OgAAOjoQADo6IAA6OkAAOjpQADpCAAA6QiAAOkJAADpCYAA6QpAAOkKgADpCsAA6QsAAOkLQADpC8AA6QxAAOkMgADpDMAA6Q1AAOkNgADpMkAA6TsAAOlDAADpSwAA6UuAAOlMAADpTIAA6U0AAOlNwADpTgAA6U5AAOlPAADpT0AA6U/AAOlQAADpUIAA6VFAAOlRgADpUcAA6VKAAOlSwADpVAAA6VpAAOlcgADpXQAA6V2AAOlfwADpYIAA6WFAAOlhwADpdAAA6X0AAOmGwADpj8AA6ZCAAOmRAADpkYAA6ZIAAOmSgADpkwAA6ZNAAOmUAADpmkAA6aKAAOmjAADpo4AA6aQAAOmkgADppQAA6aWAAOmmAADppoAA6a7AAOmvgADpsEAA6bEAAOmxwADpsoAA6bNAAOm0AADptMAA6bVAAOnUAADp1IAA6dUAAOnVgADp1kAA6daAAOnWwADp1wAA6ddAAOnXwADp2EAA6diAAOnYwADp2UAA6dmAAOn4QADp+MAA6flAAOn5wADp+oAA6frAAOn7AADp+0AA6fuAAOn8AADp/IAA6fzAAOn9AADp/YAA6f3AAOocgADqHQAA6h3AAOoeQADqHwAA6h9AAOofgADqH8AA6iAAAOoggADqIQAA6iFAAOohgADqIgAA6iJAAOoogADqKMAA6ikAAOopgADqSEAA6kjAAOpJQADqScAA6kqAAOpKwADqSwAA6ktAAOpLgADqTAAA6kyAAOpMwADqTQAA6k2AAOpNwADqbIAA6m0AAOptgADqbgAA6m7AAOpvAADqb0AA6m+AAOpvwADqcEAA6nDAAOpxAADqcUAA6nHAAOpyAADqkMAA6pFAAOqRwADqkkAA6pMAAOqTQADqk4AA6pPAAOqUAADqlIAA6pUAAOqVQADqlYAA6pYAAOqWQADqtQAA6rWAAOq2AADqtoAA6rdAAOq3gADqt8AA6rgAAOq4QADquMAA6rlAAOq5gADqucAA6rpAAOq6gADq2UAA6tnAAOraQADq2sAA6tuAAOrbwADq3AAA6txAAOrcgADq3QAA6t2AAOrdwADq3gAA6t6AAOrewADq8QAA6voAAOsDwADrDMAA6w2AAOsOAADrDoAA6w8AAOsPgADrEAAA6xBAAOsRAADrF0AA6x6AAOsfAADrH4AA6yAAAOsggADrIQAA6yGAAOsiAADrKUAA6yoAAOsqwADrK4AA6yxAAOstAADrLcAA6y6AAOsvAADrTcAA605AAOtPAADrT4AA61BAAOtQgADrUMAA61EAAOtRQADrUcAA61JAAOtSgADrUsAA61NAAOtTgADrVIAA63NAAOtzwADrdEAA63TAAOt1gADrdcAA63YAAOt2QADrdoAA63cAAOt3gADrd8AA63gAAOt4gADreMAA65eAAOuYAADrmIAA65kAAOuZwADrmgAA65pAAOuagADrmsAA65tAAOubwADrnAAA65xAAOucwADrnQAA67vAAOu8QADrvQAA672AAOu+QADrvoAA677AAOu/AADrv0AA67/AAOvAQADrwIAA68DAAOvBQADrwYAA6+BAAOvgwADr4UAA6+HAAOvigADr4sAA6+MAAOvjQADr44AA6+QAAOvkgADr5MAA6+UAAOvlgADr5cAA7ASAAOwFAADsBYAA7AYAAOwGwADsBwAA7AdAAOwHgADsB8AA7AhAAOwIwADsCQAA7AlAAOwJwADsCgAA7CjAAOwpQADsKcAA7CpAAOwrAADsK0AA7CuAAOwrwADsLAAA7CyAAOwtAADsLUAA7C2AAOwuAADsLkAA7FMAAOxbwADsY8AA7GvAAOxsQADsbMAA7G1AAOxtwADsboAA7G7AAOxvAADsb8AA7HAAAOxwgADscMAA7HFAAOxyAADsckAA7HKAAOxzQADsc4AA7HTAAOx7AADsfUAA7H3AAOx+QADsgIAA7IFAAOyCAADsgoAA7JTAAOydwADsp4AA7LCAAOyxQADsscAA7LJAAOyywADss0AA7LPAAOy0AADstMAA7LsAAOzDQADsw8AA7MRAAOzEwADsxUAA7MXAAOzGQADsxsAA7MdAAOzPgADs0EAA7NEAAOzRwADs0oAA7NNAAOzUAADs1MAA7NWAAOzWAADs9MAA7PVAAOz1wADs9kAA7PcAAOz3QADs94AA7PfAAOz4AADs+IAA7PkAAOz5QADs+YAA7PoAAOz6QADtGQAA7RmAAO0aAADtGoAA7RtAAO0bgADtG8AA7RwAAO0cQADtHMAA7R1AAO0dgADtHcAA7R5AAO0egADtPUAA7T3AAO0+gADtPwAA7T/AAO1AAADtQEAA7UCAAO1AwADtQUAA7UHAAO1CAADtQkAA7ULAAO1DAADtSUAA7UmAAO1JwADtSkAA7WkAAO1pgADtagAA7WqAAO1rQADta4AA7WvAAO1sAADtbEAA7WzAAO1tQADtbYAA7W3AAO1uQADtboAA7Y1AAO2NwADtjkAA7Y7AAO2PgADtj8AA7ZAAAO2QQADtkIAA7ZEAAO2RgADtkcAA7ZIAAO2SgADtksAA7bGAAO2yAADtsoAA7bMAAO2zwADttAAA7bRAAO20gADttMAA7bVAAO21wADttgAA7bZAAO22wADttwAA7dXAAO3WQADt1sAA7ddAAO3YAADt2EAA7diAAO3YwADt2QAA7dmAAO3aAADt2kAA7dqAAO3bAADt20AA7foAAO36gADt+wAA7fuAAO38QADt/IAA7fzAAO39AADt/UAA7f3AAO3+QADt/oAA7f7AAO3/QADt/4AA7hHAAO4awADuJIAA7i2AAO4uQADuLsAA7i9AAO4vwADuMEAA7jDAAO4xAADuMcAA7jgAAO4/QADuP8AA7kBAAO5AwADuQUAA7kHAAO5CQADuQsAA7koAAO5KwADuS4AA7kxAAO5NAADuTcAA7k6AAO5PQADuT8AA7m6AAO5vAADub8AA7nBAAO5xAADucUAA7nGAAO5xwADucgAA7nKAAO5zAADuc0AA7nOAAO50AADudEAA7pMAAO6TgADulAAA7pSAAO6VQADulYAA7pXAAO6WAADulkAA7pbAAO6XQADul4AA7pfAAO6YQADumIAA7rdAAO63wADuuEAA7rjAAO65gADuucAA7roAAO66QADuuoAA7rsAAO67gADuu8AA7rwAAO68gADuvMAA7tuAAO7cAADu3MAA7t1AAO7eAADu3kAA7t6AAO7ewADu3wAA7t+AAO7gAADu4EAA7uCAAO7hAADu4UAA7wAAAO8AgADvAQAA7wGAAO8CQADvAoAA7wLAAO8DAADvA0AA7wPAAO8EQADvBIAA7wTAAO8FQADvBYAA7yRAAO8kwADvJUAA7yXAAO8mgADvJsAA7ycAAO8nQADvJ4AA7ygAAO8ogADvKMAA7ykAAO8pgADvKcAA70iAAO9JAADvSYAA70oAAO9KwADvSwAA70tAAO9LgADvS8AA70xAAO9MwADvTQAA701AAO9NwADvTgAA73LAAO97gADvg4AA74uAAO+MAADvjIAA740AAO+NgADvjkAA746AAO+OwADvj4AA74/AAO+QQADvkIAA75EAAO+RwADvkgAA75JAAO+TAADvk0AA75SAAO+awADvnQAA752AAO+eAADvoEAA76EAAO+hwADvokAA77SAAO+9gADvx0AA79BAAO/RAADv0YAA79IAAO/SgADv0wAA79OAAO/TwADv1IAA79rAAO/jAADv44AA7+QAAO/kgADv5QAA7+WAAO/mAADv5oAA7+cAAO/vQADv8AAA7/DAAO/xgADv8kAA7/MAAO/zwADv9IAA7/VAAO/1wADwFIAA8BUAAPAVgADwFgAA8BbAAPAXAADwF0AA8BeAAPAXwADwGEAA8BjAAPAZAADwGUAA8BnAAPAaAADwOMAA8DlAAPA5wADwOkAA8DsAAPA7QADwO4AA8DvAAPA8AADwPIAA8D0AAPA9QADwPYAA8D4AAPA+QADwXQAA8F2AAPBeQADwXsAA8F+AAPBfwADwYAAA8GBAAPBggADwYQAA8GGAAPBhwADwYgAA8GKAAPBiwADwaQAA8GlAAPBpgADwagAA8IjAAPCJQADwicAA8IpAAPCLAADwi0AA8IuAAPCLwADwjAAA8IyAAPCNAADwjUAA8I2AAPCOAADwjkAA8K0AAPCtgADwrgAA8K6AAPCvQADwr4AA8K/AAPCwAADwsEAA8LDAAPCxQADwsYAA8LHAAPCyQADwsoAA8NFAAPDRwADw0kAA8NLAAPDTgADw08AA8NQAAPDUQADw1IAA8NUAAPDVgADw1cAA8NYAAPDWgADw1sAA8PWAAPD2AADw9oAA8PcAAPD3wADw+AAA8PhAAPD4gADw+MAA8PlAAPD5wADw+gAA8PpAAPD6wADw+wAA8RnAAPEaQADxGsAA8RtAAPEcAADxHEAA8RyAAPEcwADxHQAA8R2AAPEeAADxHkAA8R6AAPEfAADxH0AA8TGAAPE6gADxREAA8U1AAPFOAADxToAA8U8AAPFPgADxUAAA8VCAAPFQwADxUYAA8VfAAPFfAADxX4AA8WAAAPFggADxYQAA8WGAAPFiAADxYoAA8WnAAPFqgADxa0AA8WwAAPFswADxbYAA8W5AAPFvAADxb4AA8Y5AAPGOwADxj0AA8Y/AAPGQgADxkMAA8ZEAAPGRQADxkYAA8ZIAAPGSgADxksAA8ZMAAPGTgADxk8AA8bKAAPGzAADxs4AA8bQAAPG0wADxtQAA8bVAAPG1gADxtcAA8bZAAPG2wADxtwAA8bdAAPG3wADxuAAA8dbAAPHXQADx18AA8dhAAPHZAADx2UAA8dmAAPHZwADx2gAA8dqAAPHbAADx20AA8duAAPHcAADx3EAA8fsAAPH7gADx/EAA8fzAAPH9gADx/cAA8f4AAPH+QADx/oAA8f8AAPH/gADx/8AA8gAAAPIAgADyAMAA8h+AAPIgAADyIIAA8iEAAPIhwADyIgAA8iJAAPIigADyIsAA8iNAAPIjwADyJAAA8iRAAPIkwADyJQAA8kPAAPJEQADyRMAA8kVAAPJGAADyRkAA8kaAAPJGwADyRwAA8keAAPJIAADySEAA8kiAAPJJAADySUAA8mgAAPJogADyaQAA8mmAAPJqQADyaoAA8mrAAPJrAADya0AA8mvAAPJsQADybIAA8mzAAPJtQADybYAA8pJAAPKbAADyowAA8qsAAPKrgADyrAAA8qyAAPKtAADyrcAA8q4AAPKuQADyrwAA8q9AAPKvwADysAAA8rCAAPKxQADysYAA8rHAAPKygADyssAA8rQAAPK6QADyvIAA8r0AAPK9gADyv8AA8sCAAPLBQADywcAA8tQAAPLdAADy5sAA8u/AAPLwgADy8QAA8vGAAPLyAADy8oAA8vMAAPLzQADy9AAA8vpAAPMCgADzAwAA8wOAAPMEAADzBIAA8wUAAPMFgADzBgAA8waAAPMOwADzD4AA8xBAAPMRAADzEcAA8xKAAPMTQADzFAAA8xTAAPMVQADzNAAA8zSAAPM1AADzNYAA8zZAAPM2gADzNsAA8zcAAPM3QADzN8AA8zhAAPM4gADzOMAA8zlAAPM5gADzWEAA81jAAPNZQADzWcAA81qAAPNawADzWwAA81tAAPNbgADzXAAA81yAAPNcwADzXQAA812AAPNdwADzfIAA830AAPN9wADzfkAA838AAPN/QADzf4AA83/AAPOAAADzgIAA84EAAPOBQADzgYAA84IAAPOCQADziIAA84jAAPOJAADziYAA86hAAPOowADzqUAA86nAAPOqgADzqsAA86sAAPOrQADzq4AA86wAAPOsgADzrMAA860AAPOtgADzrcAA88yAAPPNAADzzYAA884AAPPOwADzzwAA889AAPPPgADzz8AA89BAAPPQwADz0QAA89FAAPPRwADz0gAA8/DAAPPxQADz8cAA8/JAAPPzAADz80AA8/OAAPPzwADz9AAA8/SAAPP1AADz9UAA8/WAAPP2AADz9kAA9BUAAPQVgAD0FgAA9BaAAPQXQAD0F4AA9BfAAPQYAAD0GEAA9BjAAPQZQAD0GYAA9BnAAPQaQAD0GoAA9DlAAPQ5wAD0OkAA9DrAAPQ7gAD0O8AA9DwAAPQ8QAD0PIAA9D0AAPQ9gAD0PcAA9D4AAPQ+gAD0PsAA9FEAAPRaAAD0Y8AA9GzAAPRtgAD0bgAA9G6AAPRvAAD0b4AA9HAAAPRwQAD0cQAA9HdAAPR+gAD0fwAA9H+AAPSAAAD0gIAA9IEAAPSBgAD0ggAA9IlAAPSKAAD0isAA9IuAAPSMQAD0jQAA9I3AAPSOgAD0jwAA9K3AAPSuQAD0rwAA9K+AAPSwQAD0sIAA9LDAAPSxAAD0sUAA9LHAAPSyQAD0soAA9LLAAPSzQAD0s4AA9NJAAPTSwAD000AA9NPAAPTUgAD01MAA9NUAAPTVQAD01YAA9NYAAPTWgAD01sAA9NcAAPTXgAD018AA9PaAAPT3AAD094AA9PgAAPT4wAD0+QAA9PlAAPT5gAD0+cAA9PpAAPT6wAD0+wAA9PtAAPT7wAD0/AAA9RrAAPUbQAD1HAAA9RyAAPUdQAD1HYAA9R3AAPUeAAD1HkAA9R7AAPUfQAD1H4AA9R/AAPUgQAD1IIAA9T9AAPU/wAD1QEAA9UDAAPVBgAD1QcAA9UIAAPVCQAD1QoAA9UMAAPVDgAD1Q8AA9UQAAPVEgAD1RMAA9WOAAPVkAAD1ZIAA9WUAAPVlwAD1ZgAA9WZAAPVmgAD1ZsAA9WdAAPVnwAD1aAAA9WhAAPVowAD1aQAA9YfAAPWIQAD1iMAA9YlAAPWKAAD1ikAA9YqAAPWKwAD1iwAA9YuAAPWMAAD1jEAA9YyAAPWNAAD1jUAA9bIAAPW6wAD1wsAA9crAAPXLQAD1y8AA9cxAAPXMwAD1zYAA9c3AAPXOAAD1zsAA9c8AAPXPgAD1z8AA9dBAAPXRAAD10UAA9dGAAPXSQAD10oAA9dPAAPXaAAD13EAA9dzAAPXdQAD134AA9eBAAPXhAAD14YAA9fPAAPX8wAD2BoAA9g+AAPYQQAD2EMAA9hFAAPYRwAD2EkAA9hLAAPYTAAD2E8AA9hoAAPYiQAD2IsAA9iNAAPYjwAD2JEAA9iTAAPYlQAD2JcAA9iZAAPYugAD2L0AA9jAAAPYwwAD2MYAA9jJAAPYzAAD2M8AA9jSAAPY1AAD2U8AA9lRAAPZUwAD2VUAA9lYAAPZWQAD2VoAA9lbAAPZXAAD2V4AA9lgAAPZYQAD2WIAA9lkAAPZZQAD2eAAA9niAAPZ5AAD2eYAA9npAAPZ6gAD2esAA9nsAAPZ7QAD2e8AA9nxAAPZ8gAD2fMAA9n1AAPZ9gAD2nEAA9pzAAPadgAD2ngAA9p7AAPafAAD2n0AA9p+AAPafwAD2oEAA9qDAAPahAAD2oUAA9qHAAPaiAAD2qEAA9qiAAPaowAD2qUAA9sgAAPbIgAD2yQAA9smAAPbKQAD2yoAA9srAAPbLAAD2y0AA9svAAPbMQAD2zIAA9szAAPbNQAD2zYAA9uxAAPbswAD27UAA9u3AAPbugAD27sAA9u8AAPbvQAD274AA9vAAAPbwgAD28MAA9vEAAPbxgAD28cAA9xCAAPcRAAD3EYAA9xIAAPcSwAD3EwAA9xNAAPcTgAD3E8AA9xRAAPcUwAD3FQAA9xVAAPcVwAD3FgAA9zTAAPc1QAD3NcAA9zZAAPc3AAD3N0AA9zeAAPc3wAD3OAAA9ziAAPc5AAD3OUAA9zmAAPc6AAD3OkAA91kAAPdZgAD3WgAA91qAAPdbQAD3W4AA91vAAPdcAAD3XEAA91zAAPddQAD3XYAA913AAPdeQAD3XoAA93DAAPd5wAD3g4AA94yAAPeNQAD3jcAA945AAPeOwAD3j0AA94/AAPeQAAD3kMAA95cAAPeeQAD3nsAA959AAPefwAD3oEAA96DAAPehQAD3ocAA96kAAPepwAD3qoAA96tAAPesAAD3rMAA962AAPeuQAD3rsAA982AAPfOAAD3zoAA988AAPfPwAD30AAA99BAAPfQgAD30MAA99FAAPfRwAD30gAA99JAAPfSwAD30wAA9/HAAPfyQAD38sAA9/NAAPf0AAD39EAA9/SAAPf0wAD39QAA9/WAAPf2AAD39kAA9/aAAPf3AAD390AA+BYAAPgWgAD4FwAA+BeAAPgYQAD4GIAA+BjAAPgZAAD4GUAA+BnAAPgaQAD4GoAA+BrAAPgbQAD4G4AA+DpAAPg6wAD4O4AA+DwAAPg8wAD4PQAA+D1AAPg9gAD4PcAA+D5AAPg+wAD4PwAA+D9AAPg/wAD4QAAA+F7AAPhfQAD4X8AA+GBAAPhhAAD4YUAA+G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/AAQEwgAEBMMABATEAAQExQAEBMYABATIAAQEygAEBMsABATMAAQEzgAEBM8ABAVKAAQFTAAEBU4ABAVQAAQFUwAEBVQABAVVAAQFVgAEBVcABAVZAAQFWwAEBVwABAVdAAQFXwAEBWAABAXbAAQF3QAEBd8ABAXhAAQF5AAEBeUABAXmAAQF5wAEBegABAXqAAQF7AAEBe0ABAXuAAQF8AAEBfEABAZsAAQGbgAEBnEABAZzAAQGdgAEBncABAZ4AAQGeQAEBnoABAZ8AAQGfgAEBn8ABAaAAAQGggAEBoMABAb+AAQHAAAEBwIABAcEAAQHBwAEBwgABAcJAAQHCgAEBwsABAcNAAQHDwAEBxAABAcRAAQHEwAEBxQABAePAAQHkQAEB5MABAeVAAQHmAAEB5kABAeaAAQHmwAEB5wABAeeAAQHoAAEB6EABAeiAAQHpAAEB6UABAggAAQIIgAECCQABAgmAAQIKQAECCoABAgrAAQILAAECC0ABAgvAAQIMQAECDIABAgzAAQINQAECDYABAjJAAQI7AAECQwABAksAAQJLgAECTAABAkyAAQJNAAECTcABAk4AAQJOQAECTwABAk9AAQJPwAECUAABAlCAAQJRQAECUYABAlHAAQJSgAECUsABAlQAAQJaQAECXIABAl0AAQJdgAECX8ABAmCAAQJhQAECYcABAnQAAQJ9AAEChsABAo/AAQKQgAECkQABApGAAQKSAAECkoABApMAAQKTQAEClAABAppAAQKigAECowABAqOAAQKkAAECpIABAqUAAQKlgAECpgABAqaAAQKuwAECr4ABArBAAQKxAAECscABArKAAQKzQAECtAABArTAAQK1QAEC1AABAtSAAQLVAAEC1YABAtZAAQLWgAEC1sABAtcAAQLXQAEC18ABAthAAQLYgAEC2MABAtlAAQLZgAEC+EABAvjAAQL5QAEC+cABAvqAAQL6wAEC+wABAvtAAQL7gAEC/AABAvyAAQL8wAEC/QABAv2AAQL9wAEDHIABAx0AAQMdwAEDHkABAx8AAQMfQAEDH4ABAx/AAQMgAAEDIIABAyEAAQMhQAEDIYABAyIAAQMiQAEDKIABAyjAAQMpAAEDKYABA0hAAQNIwAEDSUABA0nAAQNKgAEDSsABA0sAAQNLQAEDS4ABA0wAAQNMgAEDTMABA00AAQNNgAEDTcABA2yAAQNtAAEDbYABA24AAQNuwAEDbwABA29AAQNvgAEDb8ABA3BAAQNwwAEDcQABA3FAAQNxwAEDcgABA5DAAQORQAEDkcABA5JAAQOTAAEDk0ABA5OAAQOTwAEDlAABA5SAAQOVAAEDlUABA5WAAQOWAAEDlkABA7UAAQO1gAEDtgABA7aAAQO3QAEDt4ABA7fAAQO4AAEDuEABA7jAAQO5QAEDuYABA7nAAQO6QAEDuoABA9lAAQPZwAED2kABA9rAAQPbgAED28ABA9wAAQPcQAED3IABA90AAQPdgAED3cABA94AAQPegAED3sABA/EAAQP6AAEEA8ABBAzAAQQNgAEEDgABBA6AAQQPAAEED4ABBBAAAQQQQAEEEQABBBdAAQQegAEEHwABBB+AAQQgAAEEIIABBCEAAQQhgAEEIgABBClAAQQqAAEEKsABBCuAAQQsQAEELQABBC3AAQQugAEELwABBE3AAQROQAEETwABBE+AAQRQQAEEUIABBFDAAQRRAAEEUUABBFHAAQRSQAEEUoABBFLAAQRTQAEEU4ABBHJAAQRywAEEc0ABBHPAAQR0gAEEdMABBHUAAQR1QAEEdYABBHYAAQR2gAEEdsABBHcAAQR3gAEEd8ABBJaAAQSXAAEEl4ABBJgAAQSYwAEEmQABBJlAAQSZgAEEmcABBJpAAQSawAEEmwABBJtAAQSbwAEEnAABBLrAAQS7QAEEvAABBLyAAQS9QAEEvYABBL3AAQS+AAEEvkABBL7AAQS/QAEEv4ABBL/AAQTAQAEEwIABBN9AAQTfwAEE4EABBODAAQThgAEE4cABBOIAAQTiQAEE4oABBOMAAQTjgAEE48ABBOQAAQTkgAEE5MABBQOAAQUEAAEFBIABBQUAAQUFwAEFBgABBQZAAQUGgAEFBsABBQdAAQUHwAEFCAABBQhAAQUIwAEFCQABBSfAAQUoQAEFKMABBSlAAQUqAAEFKkABBSqAAQUqwAEFKwABBSuAAQUsAAEFLEABBSyAAQUtAAEFLUABBVIAAQVawAEFYsABBWrAAQVrQAEFa8ABBWxAAQVswAEFbYABBW3AAQVuAAEFbsABBW8AAQVvgAEFb8ABBXBAAQVxAAEFcUABBXGAAQVyQAEFcoABBXTAAQV7AAEFfUABBX3AAQV+QAEFgIABBYFAAQWCAAEFgoABBZTAAQWdwAEFp4ABBbCAAQWxQAEFscABBbJAAQWywAEFs0ABBbPAAQW0AAEFtMABBbsAAQXDQAEFw8ABBcRAAQXEwAEFxUABBcXAAQXGQAEFxsABBcdAAQXPgAEF0EABBdEAAQXRwAEF0oABBdNAAQXUAAEF1MABBdWAAQXWAAEF9MABBfVAAQX1wAEF9kABBfcAAQX3QAEF94ABBffAAQX4AAEF+IABBfkAAQX5QAEF+YABBfoAAQX6QAEGGQABBhmAAQYaAAEGGoABBhtAAQYbgAEGG8ABBhwAAQYcQAEGHMABBh1AAQYdgAEGHcABBh5AAQYegAEGPUABBj3AAQY+gAEGPwABBj/AAQZAAAEGQEABBkCAAQZAwAEGQUABBkHAAQZCAAEGQkABBkLAAQZDAAEGSUABBkmAAQZJwAEGSkABBmkAAQZpgAEGagABBmqAAQZrQAEGa4ABBmvAAQZsAAEGbEABBmzAAQZtQAEGbYABBm3AAQZuQAEGboABBo1AAQaNwAEGjkABBo7AAQaPgAEGj8ABBpAAAQaQQAEGkIABBpEAAQaRgAEGkcABBpIAAQaSgAEGksABBrGAAQayAAEGsoABBrMAAQazwAEGtAABBrRAAQa0gAEGtMABBrVAAQa1wAEGtgABBrZAAQa2wAEGtwABBtXAAQbWQAEG1wABBteAAQbYQAEG2IABBtjAAQbZAAEG2UABBtnAAQbaQAEG2oABBtrAAQbbQAEG24ABBt9AAQb+AAEG/oABBv8AAQb/gAEHAEABBwCAAQcAwAEHAQABBwFAAQcBwAEHAkABBwKAAQcCwAEHA0ABBwOAAQcVwAEHHsABByiAAQcxgAEHMkABBzLAAQczQAEHM8ABBzRAAQc0wAEHNQABBzXAAQc8AAEHQ0ABB0PAAQdEQAEHRMABB0VAAQdFwAEHRkABB0bAAQdOAAEHTsABB0+AAQdQQAEHUQABB1HAAQdSgAEHU0ABB1PAAQdygAEHcwABB3OAAQd0AAEHdMABB3UAAQd1QAEHdYABB3XAAQd2QAEHdsABB3cAAQd3QAEHd8ABB3gAAQeWwAEHl0ABB5fAAQeYQAEHmQABB5lAAQeZgAEHmcABB5oAAQeagAEHmwABB5tAAQebgAEHnAABB5xAAQe7AAEHu4ABB7xAAQe8wAEHvYABB73AAQe+AAEHvkABB76AAQe/AAEHv4ABB7/AAQfAAAEHwIABB8DAAQffgAEH4AABB+DAAQfhQAEH4gABB+JAAQfigAEH4sABB+MAAQfjgAEH5AABB+RAAQfkgAEH5QABB+VAAQgEAAEIBIABCAUAAQgFgAEIBkABCAaAAQgGwAEIBwABCAdAAQgHwAEICEABCAiAAQgIwAEICUABCAmAAQgoQAEIKMABCClAAQgpwAEIKoABCCrAAQgrAAEIK0ABCCuAAQgsAAEILIABCCzAAQgtAAEILYABCC3AAQhMgAEITQABCE2AAQhOAAEITsABCE8AAQhPQAEIT4ABCE/AAQhQQAEIUMABCFEAAQhRQAEIUcABCFIAAQhWQAEIVoABCFcAAQhbQAEIXYABCF5AAQhfAAEIX4ABCG3AAQhugAEIbwABCG/AAQhwgAEIcUABCHIAAQiSwAEIm8ABCKTAAQitgAEIt0ABCL9AAQjJAAEI0sABCNrAAQjjwAEI7MABCO1AAQjuAAEI7oABCO8AAQjvgAEI8EABCPEAAQjxgAEI8gABCPLAAQjzQAEI88ABCPSAAQj1QAEI9YABCPbAAQj9AAEI/kABCP7AAQkAAAEJAMABCQFAAQkTgAEJHIABCSZAAQkvQAEJMAABCTCAAQkxAAEJMYABCTIAAQkygAEJMsABCTOAAQk5wAEJQwABCUOAAQlEAAEJRIABCUUAAQlFgAEJRgABCUaAAQlHAAEJR4ABCVDAAQlRgAEJUkABCVMAAQlTwAEJVIABCVVAAQlWAAEJVsABCVeAAQlYAAEJdsABCXdAAQl4AAEJeIABCXlAAQl5gAEJecABCXoAAQl6QAEJesABCXtAAQl7gAEJe8ABCXxAAQl8gAEJgMABCYEAAQmBgAEJoEABCaDAAQmhQAEJocABCaKAAQmiwAEJowABCaNAAQmjgAEJpAABCaSAAQmkwAEJpQABCaWAAQmlwAEJxIABCcUAAQnFwAEJxkABCccAAQnHQAEJx4ABCcfAAQnIAAEJyIABCckAAQnJQAEJyYABCcoAAQnKQAEJzoABCc7AAQnPQAEJ7gABCe6AAQnvAAEJ74ABCfBAAQnwgAEJ8MABCfEAAQnxQAEJ8cABCfJAAQnygAEJ8sABCfNAAQnzgAEKEkABChLAAQoTgAEKFAABChTAAQoVAAEKFUABChWAAQoVwAEKFkABChbAAQoXAAEKF0ABChfAAQoYAAEKHEABChyAAQodAAEKO8ABCjxAAQo8wAEKPUABCj4AAQo+QAEKPoABCj7AAQo/AAEKP4ABCkAAAQpAQAEKQIABCkEAAQpBQAEKYAABCmCAAQphQAEKYcABCmKAAQpiwAEKYwABCmNAAQpjgAEKZAABCmSAAQpkwAEKZQABCmWAAQplwAEKbAABCmxAAQpsgAEKbQABCovAAQqMQAEKjMABCo1AAQqOAAEKjkABCo6AAQqOwAEKjwABCo+AAQqQAAEKkEABCpCAAQqRAAEKkUABCrAAAQqwgAEKsUABCrHAAQqygAEKssABCrMAAQqzQAEKs4ABCrQAAQq0gAEKtMABCrUAAQq1gAEKtcABCr7AAQrFAAEKyEABCskAAQrJwAEKyoABCs3AAQrOgAEKz0ABCtAAAQrQgAEK1QABCtpAAQrcwAELAYABCwpAAQsSQAELGkABCxrAAQsbQAELG8ABCxxAAQsdAAELHUABCx2AAQseQAELHoABCx8AAQsfQAELIAABCyDAAQshAAELIUABCyIAAQsiQAELI4ABCynAAQssAAELLIABCy0AAQsvQAELMAABCzDAAQsxQAELQ4ABC0yAAQtWQAELX0ABC2AAAQtggAELYQABC2GAAQtiAAELYoABC2LAAQtjgAELacABC3IAAQtygAELcwABC3OAAQt0AAELdIABC3UAAQt1gAELdgABC35AAQt/AAELf8ABC4CAAQuBQAELggABC4LAAQuDgAELhEABC4TAAQujgAELpAABC6SAAQulAAELpcABC6YAAQumQAELpoABC6bAAQunQAELp8ABC6gAAQuoQAELqMABC6kAAQvHwAELyEABC8jAAQvJQAELygABC8pAAQvKgAELysABC8sAAQvLgAELzAABC8xAAQvMgAELzQABC81AAQvsAAEL7IABC+1AAQvtwAEL7oABC+7AAQvvAAEL70ABC++AAQvwAAEL8IABC/DAAQvxAAEL8YABC/HAAQv4AAEL+EABC/iAAQv5AAEMF8ABDBhAAQwYwAEMGUABDBoAAQwaQAEMGoABDBrAAQwbAAEMG4ABDBwAAQwcQAEMHIABDB0AAQwdQAEMPAABDDyAAQw9AAEMPYABDD5AAQw+gAEMPsABDD8AAQw/QAEMP8ABDE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NAARDzwAEREoABERMAARETgAERFAABERTAAREVAAERFUABERWAAREVwAERFkABERbAAREXAAERF0ABERfAAREYAAERNsABETdAARE3wAEROEABETkAARE5QAEROYABETnAARE6AAEROoABETsAARE7QAERO4ABETwAARE8QAERWwABEVuAARFcQAERXMABEV2AARFdwAERXgABEV5AARFegAERXwABEV+AARFfwAERYAABEWCAARFgwAERZwABEWdAARFngAERaAABEYbAARGHQAERh8ABEYhAARGJAAERiUABEYmAARGJwAERigABEYqAARGLAAERi0ABEYuAARGMAAERjEABEasAARGrgAERrAABEayAARGtQAERrYABEa3AARGuAAERrkABEa7AARGvQAERr4ABEa/AARGwQAERsIABEc9AARHPwAER0EABEdDAARHRgAER0cABEdIAARHSQAER0oABEdMAARHTgAER08ABEdQAARHUgAER1MABEfOAARH0AAER9IABEfUAARH1wAER9gABEfZAARH2gAER9sABEfdAARH3wAER+AABEfhAARH4wAER+QABEhfAARIYQAESGMABEhlAARIaAAESGkABEhqAARIawAESGwABEhuAARIcAAESHEABEhyAARIdAAESHUABEi+AARI4gAESQkABEktAARJMAAESTIABEk0AARJNgAESTgABEk6AARJOwAEST4ABElXAARJdAAESXYABEl4AARJegAESXwABEl+AARJgAAESYIABEmfAARJogAESaUABEmoAARJqwAESa4ABEmxAARJtAAESbYABEoxAARKMwAESjUABEo3AARKOgAESjsABEo8AARKPQAESj4ABEpAAARKQgAESkMABEpEAARKRgAESkcABErCAARKxAAESscABErJAARKzAAESs0ABErOAARKzwAEStAABErSAARK1AAEStUABErWAARK2AAEStkABEtUAARLVgAES1gABEtaAARLXQAES14ABEtfAARLYAAES2EABEtjAARLZQAES2YABEtnAARLaQAES2oABEvlAARL5wAES+oABEvsAARL7wAES/AABEvxAARL8gAES/MABEv1AARL9wAES/gABEv5AARL+wAES/wABEx/AARMowAETMcABEzqAARNEQAETTEABE1YAARNfwAETZ8ABE3DAARN5wAETekABE3sAARN7gAETfAABE3yAARN9QAETfgABE36AARN/AAETf8ABE4BAAROAwAETgYABE4JAAROCgAETg8ABE4oAAROLQAETi8ABE40AARONwAETjkABE6CAAROpgAETs0ABE7xAARO9AAETvYABE74AARO+gAETvwABE7+AARO/wAETwIABE8bAARPQAAET0IABE9EAARPRgAET0gABE9KAARPTAAET04ABE9QAARPUgAET3cABE96AARPfQAET4AABE+DAARPhgAET4kABE+MAARPjwAET5IABE+UAARQDwAEUBEABFAUAARQFgAEUBkABFAaAARQGwAEUBwABFAdAARQHwAEUCEABFAiAARQIwAEUCUABFAmAARQNwAEUDgABFA6AARQtQAEULcABFC5AARQuwAEUL4ABFC/AARQwAAEUMEABFDCAARQxAAEUMYABFDHAARQyAAEUMoABFDLAARRRgAEUUgABFFLAARRTQAEUVAABFFRAARRUgAEUVMABFFUAARRVgAEUVgABFFZAARRWgAEUVwABFFdAARRbgAEUW8ABFFxAARR7AAEUe4ABFHwAARR8gAEUfUABFH2AARR9wAEUfgABFH5AARR+wAEUf0ABFH+AARR/wAEUgEABFICAARSfQAEUn8ABFKCAARShAAEUocABFKIAARSiQAEUooABFKLAARSjQAEUo8ABFKQAARSkQAEUpMABFKUAARSpQAEUqYABFKoAARTIwAEUyUABFMnAARTKQAEUywABFMtAARTLgAEUy8ABFMwAARTMgAEUzQABFM1AARTNgAEUzgABFM5AARTtAAEU7YABFO5AARTuwAEU74ABFO/AARTwAAEU8EABFPCAARTxAAEU8YABFPHAARTyAAEU8oABFPLAART5AAEU+UABFPmAART6AAEVGMABFRlAARUZwAEVGkABFRsAARUbQAEVG4ABFRvAARUcAAEVHIABFR0AARUdQAEVHYABFR4AARUeQAEVPQABFT2AARU+QAEVPsABFT+AARU/wAEVQAABFUBAARVAgAEVQQABFUGAARVBwAEVQgABFUKAARVCwAEVUcABFVgAARVZQAEVWgABFVtAARVcAAEVXIABFWYAARWKwAEVk4ABFZuAARWjgAEVpAABFaSAARWlAAEVpYABFaZAARWmgAEVpsABFaeAARWnwAEVqEABFaiAARWpQAEVqgABFapAARWqgAEVq0ABFauAARWswAEVswABFbVAARW1wAEVtkABFbiAARW5QAEVugABFbqAARXMwAEV1cABFd+AARXogAEV6UABFenAARXqQAEV6sABFetAARXrwAEV7AABFezAARXzAAEV+0ABFfvAARX8QAEV/MABFf1AARX9wAEV/kABFf7AARX/QAEWB4ABFghAARYJAAEWCcABFgqAARYLQAEWDAABFgzAARYNgAEWDgABFizAARYtQAEWLcABFi5AARYvAAEWL0ABFi+AARYvwAEWMAABFjCAARYxAAEWMUABFjGAARYyAAEWMkABFlEAARZRgAEWUgABFlKAARZTQAEWU4ABFlPAARZUAAEWVEABFlTAARZVQAEWVYABFlXAARZWQAEWVoABFnVAARZ1wAEWdoABFncAARZ3wAEWeAABFnhAARZ4gAEWeMABFnlAARZ5wAEWegABFnpAARZ6wAEWewABFoFAARaBgAEWgcABFoJAARahAAEWoYABFqIAARaigAEWo0ABFqOAARajwAEWpAABFqRAARakwAEWpUABFqWAARalwAEWpkABFqaAARbFQAEWxcABFsZAARbGwAEWx4ABFsfAARbIAAEWyEABFsiAARbJAAEWyYABFsnAARbKAAEWyoABFsrAARbpgAEW6gABFuqAARbrAAEW68ABFuwAARbsQAEW7IABFuzAARbtQAEW7cABFu4AARbuQAEW7sABFu8AARcNwAEXDkABFw7AARcPQAEXEAABFxBAARcQgAEXEMABFxEAARcRgAEXEgABFxJAARcSgAEXEwABFxNAARcyAAEXMoABFzMAARczgAEXNEABFzSAARc0wAEXNQABFzVAARc1wAEXNkABFzaAARc2wAEXN0ABFzeAARdJwAEXUsABF1yAARdlgAEXZkABF2bAARdnQAEXZ8ABF2hAARdowAEXaQABF2nAARdwAAEXd0ABF3fAARd4QAEXeMABF3lAARd5wAEXekABF3rAAReCAAEXgsABF4OAAReEQAEXhQABF4XAAReGgAEXh0ABF4fAARemgAEXpwABF6eAAReoAAEXqMABF6kAARepQAEXqYABF6nAAReqQAEXqsABF6sAARerQAEXq8ABF6wAARfKwAEXy0ABF8vAARfMQAEXzQABF81AARfNgAEXzcABF84AARfOgAEXzwABF89AARfPgAEX0AABF9BAARfvAAEX74ABF/AAARfwgAEX8UABF/GAARfxwAEX8gABF/JAARfywAEX80ABF/OAARfzwAEX9EABF/SAARgTQAEYE8ABGBSAARgVAAEYFcABGBYAARgWQAEYFoABGBbAARgXQAEYF8ABGBgAARgYQAEYGMABGBkAARg3wAEYOEABGDjAARg5QAEYOgABGDpAARg6gAEYOsABGDsAARg7gAEYPAABGDxAARg8gAEYPQABGD1AARhcAAEYXIABGF0AARhdgAEYXkABGF6AARhewAEYXwABGF9AARhfwAEYYEABGGCAARhgwAEYYUABGGGAARiAQAEYgMABGIGAARiCAAEYgsABGIMAARiDQAEYg4ABGIPAARiEQAEYhMABGIUAARiFQAEYhcABGIYAARiKQAEYi4ABGIxAARiMwAEYmwABGJvAARicQAEYnQABGJ3AARiegAEYn0ABGKCAARjJQAEY0kABGNtAARjjQAEY7QABGPbAARj+wAEZCIABGRGAARkaQAEZJAABGS0AARk2AAEZPwABGUjAARlJAAEZSYABGUoAARlKwAEZS0ABGUwAARlMgAEZTQABGU3AARlOQAEZTsABGU+AARlQQAEZUMABGVFAARlRwAEZUoABGVNAARlUAAEZVkABGVyAARldwAEZXkABGV+AARlgQAEZYMABGXMAARl8AAEZhcABGY7AARmPgAEZkAABGZCAARmRAAEZkYABGZIAARmSQAEZkwABGZlAARmigAEZowABGaOAARmkAAEZpIABGaUAARmlgAEZpgABGaaAARmnAAEZsEABGbEAARmxwAEZsoABGbNAARm0AAEZtMABGbWAARm2QAEZtwABGbeAARnWQAEZ1sABGdeAARnYAAEZ2MABGdkAARnZQAEZ2YABGdnAARnaQAEZ2sABGdsAARnbQAEZ28ABGdwAARngQAEZ4IABGeEAARn/wAEaAEABGgDAARoBQAEaAgABGgJAARoCgAEaAsABGgMAARoDgAEaBAABGgRAARoEgAEaBQABGgVAARokAAEaJIABGiVAARolwAEaJoABGibAARonAAEaJ0ABGieAARooAAEaKIABGijAARopAAEaKYABGinAARouAAEaLkABGi7AARpNgAEaTgABGk6AARpPAAEaT8ABGlAAARpQQAEaUIABGlDAARpRQAEaUcABGlIAARpSQAEaUsABGlMAARpxwAEackABGnMAARpzgAEadEABGnSAARp0wAEadQABGnVAARp1wAEadkABGnaAARp2wAEad0ABGneAARp7wAEafAABGnyAARqbQAEam8ABGpxAARqcwAEanYABGp3AARqeAAEankABGp6AARqfAAEan4ABGp/AARqgAAEaoIABGqDAARq/gAEawAABGsDAARrBQAEawgABGsJAARrCgAEawsABGsMAARrDgAEaxAABGsRAARrEgAEaxQABGsVAARrLgAEay8ABGswAARrMgAEa60ABGuvAARrsQAEa7MABGu2AARrtwAEa7gABGu5AARrugAEa7wABGu+AARrvwAEa8AABGvCAARrwwAEbD4ABGxAAARsQwAEbEUABGxIAARsSQAEbEoABGxLAARsTAAEbE4ABGxQAARsUQAEbFIABGxUAARsVQAEbHIABGyLAARslAAEbJcABGyaAARsowAEbKYABGypAARsqwAEbLoABGzOAARtYQAEbYQABG2kAARtxAAEbcYABG3IAARtygAEbcwABG3PAARt0AAEbdEABG3UAARt1QAEbdcABG3YAARt2gAEbd0ABG3eAARt3wAEbeIABG3jAARt6AAEbgEABG4KAARuDAAEbg4ABG4XAARuGgAEbh0ABG4fAARuaAAEbowABG6zAARu1wAEbtoABG7cAARu3gAEbuAABG7iAARu5AAEbuUABG7oAARvAQAEbyIABG8kAARvJgAEbygABG8qAARvLAAEby4ABG8wAARvMgAEb1MABG9WAARvWQAEb1wABG9fAARvYgAEb2UABG9oAARvawAEb20ABG/oAARv6gAEb+wABG/uAARv8QAEb/IABG/zAARv9AAEb/UABG/3AARv+QAEb/oABG/7AARv/QAEb/4ABHB5AARwewAEcH0ABHB/AARwggAEcIMABHCEAARwhQAEcIYABHCIAARwigAEcIsABHCMAARwjgAEcI8ABHEKAARxDAAEcQ8ABHERAARxFAAEcRUABHEWAARxFwAEcRgABHEaAARxHAAEcR0ABHEeAARxIAAEcSEABHE6AARxOwAEcTwABHE+AARxuQAEcbsABHG9AARxvwAEccIABHHDAARxxAAEccUABHHGAARxyAAEccoABHHLAARxzAAEcc4ABHHPAARySgAEckwABHJOAARyUAAEclMABHJUAARyVQAEclYABHJXAARyWQAEclsABHJcAARyXQAEcl8ABHJgAARy2wAEct0ABHLfAARy4QAEcuQABHLlAARy5gAEcucABHLoAARy6gAEcuwABHLtAARy7gAEcvAABHLxAARzbAAEc24ABHNwAARzcgAEc3UABHN2AARzdwAEc3gABHN5AARzewAEc30ABHN+AARzfwAEc4EABHOCAARz/QAEc/8ABHQBAAR0AwAEdAYABHQHAAR0CAAEdAkABHQKAAR0DAAEdA4ABHQPAAR0EAAEdBIABHQTAAR0XAAEdIAABHSnAAR0ywAEdM4ABHTQAAR00gAEdNQABHTWAAR02AAEdNkABHTcAAR09QAEdRIABHUUAAR1FgAEdRgABHUaAAR1HAAEdR4ABHUgAAR1PQAEdUAABHVDAAR1RgAEdUkABHVMAAR1TwAEdVIABHVUAAR1zwAEddEABHXTAAR11QAEddgABHXZAAR12gAEddsABHXcAAR13gAEdeAABHXhAAR14gAEdeQABHXlAAR2YAAEdmIABHZkAAR2ZgAEdmkABHZqAAR2awAEdmwABHZtAAR2bwAEdnEABHZyAAR2cwAEdnUABHZ2AAR28QAEdvMABHb1AAR29wAEdvoABHb7AAR2/AAEdv0ABHb+AAR3AAAEdwIABHcDAAR3BAAEdwYABHcHAAR3ggAEd4QABHeHAAR3iQAEd4wABHeNAAR3jgAEd48ABHeQAAR3kgAEd5QABHeVAAR3lgAEd5gABHeZAAR3nAAEeBcABHgZAAR4GwAEeB0ABHggAAR4IQAEeCIABHgjAAR4JAAEeCYABHgoAAR4KQAEeCoABHgsAAR4LQAEeKgABHiqAAR4rAAEeK4ABHixAAR4sgAEeLMABHi0AAR4tQAEeLcABHi5AAR4ugAEeLsABHi9AAR4vgAEeTkABHk7AAR5PQAEeT8ABHlCAAR5QwAEeUQABHlFAAR5RgAEeUgABHlKAAR5SwAEeUwABHlOAAR5TwAEeeIABHoFAAR6JQAEekUABHpHAAR6SQAEeksABHpNAAR6UAAEelEABHpSAAR6VQAEelYABHpYAAR6WQAEelsABHpeAAR6XwAEemAABHpjAAR6ZAAEem0ABHqGAAR6jwAEepEABHqTAAR6nAAEep8ABHqiAAR6pAAEeu0ABHsRAAR7OAAEe1wABHtfAAR7YQAEe2MABHtlAAR7ZwAEe2kABHtqAAR7bQAEe4YABHunAAR7qQAEe6sABHutAAR7rwAEe7EABHuzAAR7tQAEe7cABHvYAAR72wAEe94ABHvhAAR75AAEe+cABHvqAAR77QAEe/AABHvyAAR8bQAEfG8ABHxxAAR8cwAEfHYABHx3AAR8eAAEfHkABHx6AAR8fAAEfH4ABHx/AAR8gAAEfIIABHyDAAR8/gAEfQAABH0CAAR9BAAEfQcABH0IAAR9CQAEfQoABH0LAAR9DQAEfQ8ABH0QAAR9EQAEfRMABH0UAAR9jwAEfZEABH2UAAR9lgAEfZkABH2aAAR9mwAEfZwABH2dAAR9nwAEfaEABH2iAAR9owAEfaUABH2mAAR9vwAEfcAABH3BAAR9wwAEfj4ABH5AAAR+QgAEfkQABH5HAAR+SAAEfkkABH5KAAR+SwAEfk0ABH5PAAR+UAAEflEABH5TAAR+VAAEfs8ABH7RAAR+0wAEftUABH7YAAR+2QAEftoABH7bAAR+3AAEft4ABH7gAAR+4QAEfuIABH7kAAR+5QAEf2AABH9iAAR/ZAAEf2YABH9pAAR/agAEf2sABH9sAAR/bQAEf28ABH9xAAR/cgAEf3MABH91AAR/dgAEf/EABH/zAAR/9QAEf/cABH/6AAR/+wAEf/wABH/9AAR//gAEgAAABIACAASAAwAEgAQABIAGAASABwAEgIIABICEAASAhgAEgIgABICLAASAjAAEgI0ABICOAASAjwAEgJEABICTAASAlAAEgJUABICXAASAmAAEgOEABIEFAASBLAAEgVAABIFTAASBVQAEgVcABIFZAASBWwAEgV0ABIFeAASBYQAEgXoABIGXAASBmQAEgZsABIGdAASBnwAEgaEABIGjAASBpQAEgcIABIHFAASByAAEgcsABIHOAASB0QAEgdQABIHXAASB2QAEglQABIJWAASCWAAEgloABIJdAASCXgAEgl8ABIJgAASCYQAEgmMABIJlAASCZgAEgmcABIJpAASCagAEguUABILnAASC6QAEgusABILuAASC7wAEgvAABILxAASC8gAEgvQABIL2AASC9wAEgvgABIL6AASC+wAEg3YABIN4AASDegAEg3wABIN/AASDgAAEg4EABIOCAASDgwAEg4UABIOHAASDiAAEg4kABIOLAASDjAAEhAcABIQJAASEDAAEhA4ABIQRAASEEgAEhBMABIQUAASEFQAEhBcABIQZAASEGgAEhBsABIQdAASEHgAEhJkABISbAASEnQAEhJ8ABISiAASEowAEhKQABISlAASEpgAEhKgABISqAASEqwAEhKwABISuAASErwAEhSoABIUsAASFLgAEhTAABIUzAASFNAAEhTUABIU2AASFNwAEhTkABIU7AASFPAAEhT0ABIU/AASFQAAEhbsABIW9AASFvwAEhcEABIXEAASFxQAEhcYABIXHAASFyAAEhcoABIXMAASFzQAEhc4ABIXQAASF0QAEheIABIXjAASF5QAEhfYABIYHAASGCgAEhg0ABIYQAASGEwAEhhUABIZOAASGUQAEhlMABIZWAASGWQAEhlwABIZfAASG4gAEhwYABIcqAASHTQAEh3QABIeUAASHuwAEh+IABIgCAASIJgAEiEoABIhMAASITwAEiFEABIhTAASIVQAEiFgABIhbAASIXQAEiF8ABIhiAASIZAAEiGYABIhpAASIbAAEiG0ABIhyAASIiwAEiJAABIiSAASIlwAEiJoABIicAASI5QAEiQkABIkwAASJVAAEiVcABIlZAASJWwAEiV0ABIlfAASJYQAEiWIABIllAASJfgAEiaMABImlAASJpwAEiakABImrAASJrQAEia8ABImxAASJswAEibUABInaAASJ3QAEieAABInjAASJ5gAEiekABInsAASJ7wAEifIABIn1AASJ9wAEinIABIp0AASKdwAEinkABIp8AASKfQAEin4ABIp/AASKgAAEioIABIqEAASKhQAEioYABIqIAASKiQAEipoABIqbAASKnQAEixgABIsaAASLHAAEix4ABIshAASLIgAEiyMABIskAASLJQAEiycABIspAASLKgAEiysABIstAASLLgAEi6kABIurAASLrgAEi7AABIuzAASLtAAEi7UABIu2AASLtwAEi7kABIu7AASLvAAEi70ABIu/AASLwAAEi9EABIvSAASL1AAEjE8ABIxRAASMUwAEjFUABIxYAASMWQAEjFoABIxbAASMXAAEjF4ABIxgAASMYQAEjGIABIxkAASMZQAEjOAABIziAASM5QAEjOcABIzqAASM6wAEjOwABIztAASM7gAEjPAABIzyAASM8wAEjPQABIz2AASM9wAEjQgABI0JAASNCwAEjYYABI2IAASNigAEjYwABI2PAASNkAAEjZEABI2SAASNkwAEjZUABI2XAASNmAAEjZkABI2bAASNnAAEjhcABI4ZAASOHAAEjh4ABI4hAASOIgAEjiMABI4kAASOJQAEjicABI4pAASOKgAEjisABI4tAASOLgAEjkcABI5IAASOSQAEjksABI7GAASOyAAEjsoABI7MAASOzwAEjtAABI7RAASO0gAEjtMABI7VAASO1wAEjtgABI7ZAASO2wAEjtwABI9XAASPWQAEj1wABI9eAASPYQAEj2IABI9jAASPZAAEj2UABI9nAASPaQAEj2oABI9rAASPbQAEj24ABI+rAASPxAAEj8kABI/MAASP0QAEj9QABI/WAASP/QAEkJAABJCzAASQ0wAEkPMABJD1AASQ9wAEkPkABJD7AASQ/gAEkP8ABJEAAASRAwAEkQQABJEGAASRBwAEkQoABJENAASRDgAEkQ8ABJESAASREwAEkRwABJE1AASRPgAEkUAABJFCAASRSwAEkU4ABJFRAASRUwAEkZwABJHAAASR5wAEkgsABJIOAASSEAAEkhIABJIUAASSFgAEkhgABJIZAASSHAAEkjUABJJWAASSWAAEkloABJJcAASSXgAEkmAABJJiAASSZAAEkmYABJKHAASSigAEko0ABJKQAASSkwAEkpYABJKZAASSnAAEkp8ABJKhAASTHAAEkx4ABJMgAASTIgAEkyUABJMmAASTJwAEkygABJMpAASTKwAEky0ABJMuAASTLwAEkzEABJMyAASTrQAEk68ABJOxAASTswAEk7YABJO3AASTuAAEk7kABJO6AASTvAAEk74ABJO/AASTwAAEk8IABJPDAASUPgAElEAABJRDAASURQAElEgABJRJAASUSgAElEsABJRMAASUTgAElFAABJRRAASUUgAElFQABJRVAASUbgAElG8ABJRwAASUcgAElO0ABJTvAASU8QAElPMABJT2AASU9wAElPgABJT5AASU+gAElPwABJT+AASU/wAElQAABJUCAASVAwAElX4ABJWAAASVggAElYQABJWHAASViAAElYkABJWKAASViwAElY0ABJWPAASVkAAElZEABJWTAASVlAAElg8ABJYRAASWEwAElhUABJYYAASWGQAElhoABJYbAASWHAAElh4ABJYgAASWIQAEliIABJYkAASWJQAElqAABJaiAASWpAAElqYABJapAASWqgAElqsABJasAASWrQAElq8ABJaxAASWsgAElrMABJa1AASWtgAElzEABJczAASXNQAElzcABJc6AASXOwAElzwABJc9AASXPgAEl0AABJdCAASXQwAEl0QABJdGAASXRwAEl5AABJe0AASX2wAEl/8ABJgCAASYBAAEmAYABJgIAASYCgAEmAwABJgNAASYEAAEmCkABJhGAASYSAAEmEoABJhMAASYTgAEmFAABJhSAASYVAAEmHEABJh0AASYdwAEmHoABJh9AASYgAAEmIMABJiGAASYiAAEmQMABJkFAASZBwAEmQkABJkMAASZDQAEmQ4ABJkPAASZEAAEmRIABJkUAASZFQAEmRYABJkYAASZGQAEmZQABJmWAASZmAAEmZoABJmdAASZngAEmZ8ABJmgAASZoQAEmaMABJmlAASZpgAEmacABJmpAASZqgAEmiUABJonAASaKQAEmisABJouAASaLwAEmjAABJoxAASaMgAEmjQABJo2AASaNwAEmjgABJo6AASaOwAEmrYABJq4AASauwAEmr0ABJrAAASawQAEmsIABJrDAASaxAAEmsYABJrIAASayQAEmsoABJrMAASazQAEm0gABJtKAASbTAAEm04ABJtRAASbUgAEm1MABJtUAASbVQAEm1cABJtZAASbWgAEm1sABJtdAASbXgAEm9kABJvbAASb3QAEm98ABJviAASb4wAEm+QABJvlAASb5gAEm+gABJvqAASb6wAEm+wABJvuAASb7wAEnGoABJxsAAScbwAEnHEABJx0AAScdQAEnHYABJx3AASceAAEnHoABJx8AAScfQAEnH4ABJyAAAScgQAEnRQABJ03AASdVwAEnXcABJ15AASdewAEnX0ABJ1/AASdggAEnYMABJ2EAASdhwAEnYgABJ2KAASdiwAEnY4ABJ2RAASdkgAEnZMABJ2WAASdlwAEnaAABJ25AASdwgAEncQABJ3GAASdzwAEndIABJ3VAASd1wAEniAABJ5EAASeawAEno8ABJ6SAASelAAEnpYABJ6YAASemgAEnpwABJ6dAASeoAAEnrkABJ7aAASe3AAEnt4ABJ7gAASe4gAEnuQABJ7mAASe6AAEnuoABJ8LAASfDgAEnxEABJ8UAASfFwAEnxoABJ8dAASfIAAEnyMABJ8lAASfoAAEn6IABJ+kAASfpgAEn6kABJ+qAASfqwAEn6wABJ+tAASfrwAEn7EABJ+yAASfswAEn7UABJ+2AASgMQAEoDMABKA1AASgNwAEoDoABKA7AASgPAAEoD0ABKA+AASgQAAEoEIABKBDAASgRAAEoEYABKBHAASgwgAEoMQABKDHAASgyQAEoMwABKDNAASgzgAEoM8ABKDQAASg0gAEoNQABKDVAASg1gAEoNgABKDZAASg8gAEoPMABKD0AASg9gAEoXEABKFzAAShdQAEoXcABKF6AAShewAEoXwABKF9AAShfgAEoYAABKGCAAShgwAEoYQABKGGAAShhwAEogIABKIEAASiBgAEoggABKILAASiDAAEog0ABKIOAASiDwAEohEABKITAASiFAAEohUABKIXAASiGAAEopMABKKVAASilwAEopkABKKcAASinQAEop4ABKKfAASioAAEoqIABKKkAASipQAEoqYABKKoAASiqQAEoyQABKMmAASjKAAEoyoABKMtAASjLgAEoy8ABKMwAASjMQAEozMABKM1AASjNgAEozcABKM5AASjOgAEo7UABKO3AASjuQAEo7sABKO+AASjvwAEo8AABKPBAASjwgAEo8QABKPGAASjxwAEo8gABKPKAASjywAEpBQABKQ4AASkXwAEpIMABKSGAASkiAAEpIoABKSMAASkjgAEpJAABKSRAASklAAEpK0ABKTKAASkzAAEpM4ABKTQAASk0gAEpNQABKTWAASk2AAEpPUABKT4AASk+wAEpP4ABKUBAASlBAAEpQcABKUKAASlDAAEpYcABKWJAASliwAEpY0ABKWQAASlkQAEpZIABKWTAASllAAEpZYABKWYAASlmQAEpZoABKWcAASlnQAEphgABKYaAASmHQAEph8ABKYiAASmIwAEpiQABKYlAASmJgAEpigABKYqAASmKwAEpiwABKYuAASmLwAEpqoABKasAASmrgAEprAABKazAASmtAAEprUABKa2AASmtwAEprkABKa7AASmvAAEpr0ABKa/AASmwAAEpzsABKc9AASnQAAEp0IABKdFAASnRgAEp0cABKdIAASnSQAEp0sABKdNAASnTgAEp08ABKdRAASnUgAEp80ABKfPAASn0QAEp9MABKfWAASn1wAEp9gABKfZAASn2gAEp9wABKfeAASn3wAEp+AABKfiAASn4wAEqF4ABKhgAASoYgAEqGQABKhnAASoaAAEqGkABKhqAASoawAEqG0ABKhvAASocAAEqHEABKhzAASodAAEqO8ABKjxAASo9AAEqPYABKj5AASo+gAEqPsABKj8AASo/QAEqP8ABKkBAASpAgAEqQMABKkFAASpBgAEqRcABKkcAASpHwAEqSEABKkyAASpPQAEqVoABKllAASpcwAEqYgABKmcAASpswAEqcUABKnKAASp2wAEqfQABKoFAASqHgAEqjUABKpHAASqgAAEqoMABKqFAASqiAAEqosABKqOAASqkQAEqxQABKs4AASrXAAEq38ABKumAASrxgAEq+0ABKwUAASsNAAErFgABKx8AASsfgAErIEABKyDAASshQAErIcABKyKAASsjQAErI8ABKyRAASslAAErJYABKyYAASsmwAErJ4ABKyfAASspAAErL0ABKzCAASsxAAErMkABKzMAASszgAErRcABK07AAStYgAErYYABK2JAAStiwAErY0ABK2PAAStkQAErZMABK2UAAStlwAErbAABK3VAASt1wAErdkABK3bAASt3QAErd8ABK3hAASt4wAEreUABK3nAASuDAAErg8ABK4SAASuFQAErhgABK4bAASuHgAEriEABK4kAASuJwAErikABK6kAASupgAErqkABK6rAASurgAErq8ABK6wAASusQAErrIABK60AASutgAErrcABK64AASuugAErrsABK7MAASuzQAErs8ABK9KAASvTAAEr04ABK9QAASvUwAEr1QABK9VAASvVgAEr1cABK9ZAASvWwAEr1wABK9dAASvXwAEr2AABK/bAASv3QAEr+AABK/iAASv5QAEr+YABK/nAASv6AAEr+kABK/rAASv7QAEr+4ABK/vAASv8QAEr/IABLADAASwBAAEsAYABLCBAASwgwAEsIUABLCHAASwigAEsIsABLCMAASwjQAEsI4ABLCQAASwkgAEsJMABLCUAASwlgAEsJcABLESAASxFAAEsRcABLEZAASxHAAEsR0ABLEeAASxHwAEsSAABLEiAASxJAAEsSUABLEmAASxKAAEsSkABLE6AASxOwAEsT0ABLG4AASxugAEsbwABLG+AASxwQAEscIABLHDAASxxAAEscUABLHHAASxyQAEscoABLHLAASxzQAEsc4ABLJJAASySwAEsk4ABLJQAASyUwAEslQABLJVAASyVgAEslcABLJZAASyWwAEslwABLJdAASyXwAEsmAABLJ5AASyegAEsnsABLJ9AASy+AAEsvoABLL8AASy/gAEswEABLMCAASzAwAEswQABLMFAASzBwAEswkABLMKAASzCwAEsw0ABLMOAASziQAEs4sABLOOAASzkAAEs5MABLOUAASzlQAEs5YABLOXAASzmQAEs5sABLOcAASznQAEs58ABLOgAASz2AAEs/EABLP2AASz+QAEs/4ABLQBAAS0AwAEtCUABLS4AAS02wAEtPsABLUbAAS1HQAEtR8ABLUhAAS1IwAEtSYABLUnAAS1KAAEtSsABLUsAAS1LgAEtS8ABLUyAAS1NQAEtTYABLU3AAS1OgAEtTsABLVEAAS1XQAEtWYABLVoAAS1agAEtXMABLV2AAS1eQAEtXsABLXEAAS16AAEtg8ABLYzAAS2NgAEtjgABLY6AAS2PAAEtj4ABLZAAAS2QQAEtkQABLZdAAS2fgAEtoAABLaCAAS2hAAEtoYABLaIAAS2igAEtowABLaOAAS2rwAEtrIABLa1AAS2uAAEtrsABLa+AAS2wQAEtsQABLbHAAS2yQAEt0QABLdGAAS3SAAEt0oABLdNAAS3TgAEt08ABLdQAAS3UQAEt1MABLdVAAS3VgAEt1cABLdZAAS3WgAEt9UABLfXAAS32QAEt9sABLfeAAS33wAEt+AABLfhAAS34gAEt+QABLfmAAS35wAEt+gABLfqAAS36wAEuGYABLhoAAS4awAEuG0ABLhwAAS4cQAEuHIABLhzAAS4dAAEuHYABLh4AAS4eQAEuHoABLh8AAS4fQAEuJYABLiXAAS4mAAEuJoABLkVAAS5FwAEuRkABLkbAAS5HgAEuR8ABLkgAAS5IQAEuSIABLkkAAS5JgAEuScABLkoAAS5KgAEuSsABLmmAAS5qAAEuaoABLmsAAS5rwAEubAABLmxAAS5sgAEubMABLm1AAS5twAEubgABLm5AAS5uwAEubwABLo3AAS6OQAEujsABLo9AAS6QAAEukEABLpCAAS6QwAEukQABLpGAAS6SAAEukkABLpKAAS6TAAEuk0ABLrIAAS6ygAEuswABLrOAAS60QAEutIABLrTAAS61AAEutUABLrXAAS62QAEutoABLrbAAS63QAEut4ABLtZAAS7WwAEu10ABLtfAAS7YgAEu2MABLtkAAS7ZQAEu2YABLtoAAS7agAEu2sABLtsAAS7bgAEu28ABLu4AAS73AAEvAMABLwnAAS8KgAEvCwABLwuAAS8MAAEvDIABLw0AAS8NQAEvDgABLxRAAS8bgAEvHAABLxyAAS8dAAEvHYABLx4AAS8egAEvHwABLyZAAS8nAAEvJ8ABLyiAAS8pQAEvKgABLyrAAS8rgAEvLAABL0rAAS9LQAEvS8ABL0xAAS9NAAEvTUABL02AAS9NwAEvTgABL06AAS9PAAEvT0ABL0+AAS9QAAEvUEABL28AAS9vgAEvcAABL3CAAS9xQAEvcYABL3HAAS9yAAEvckABL3LAAS9zQAEvc4ABL3PAAS90QAEvdIABL5NAAS+TwAEvlEABL5TAAS+VgAEvlcABL5YAAS+WQAEvloABL5cAAS+XgAEvl8ABL5gAAS+YgAEvmMABL7eAAS+4AAEvuMABL7lAAS+6AAEvukABL7qAAS+6wAEvuwABL7uAAS+8AAEvvEABL7yAAS+9AAEvvUABL94AAS/nAAEv8AABL/jAATACgAEwCoABMBRAATAeAAEwJgABMC8AATA4AAEwOIABMDlAATA5wAEwOkABMDrAATA7gAEwPEABMDzAATA9QAEwPgABMD6AATA/AAEwP8ABMECAATBAwAEwQgABMEhAATBJgAEwSgABMEtAATBMAAEwTIABMF7AATBnwAEwcYABMHqAATB7QAEwe8ABMHxAATB8wAEwfUABMH3AATB+AAEwfsABMIUAATCOQAEwjsABMI9AATCPwAEwkEABMJDAATCRQAEwkcABMJJAATCSwAEwnAABMJzAATCdgAEwnkABMJ8AATCfwAEwoIABMKFAATCiAAEwosABMKNAATDCAAEwwoABMMNAATDDwAEwxIABMMTAATDFAAEwxUABMMWAATDGAAEwxoABMMbAATDHAAEwx4ABMMfAATDMAAEwzEABMMzAATDrgAEw7AABMOyAATDtAAEw7cABMO4AATDuQAEw7oABMO7AATDvQAEw78ABMPAAATDwQAEw8MABMPEAATEPwAExEEABMREAATERgAExEkABMRKAATESwAExEwABMRNAATETwAExFEABMRSAATEUwAExFUABMRWAATEZwAExGgABMRqAATE5QAExOcABMTpAATE6wAExO4ABMTvAATE8AAExPEABMTyAATE9AAExPYABMT3AATE+AAExPoABMT7AATFdgAExXgABMV7AATFfQAExYAABMWBAATFggAExYMABMWEAATFhgAExYgABMWJAATFigAExYwABMWNAATFngAExZ8ABMWhAATGHAAExh4ABMYgAATGIgAExiUABMYmAATGJwAExigABMYpAATGKwAExi0ABMYuAATGLwAExjEABMYyAATGrQAExq8ABMayAATGtAAExrcABMa4AATGuQAExroABMa7AATGvQAExr8ABMbAAATGwQAExsMABMbEAATG3QAExt4ABMbfAATG4QAEx1wABMdeAATHYAAEx2IABMdlAATHZgAEx2cABMdoAATHaQAEx2sABMdtAATHbgAEx28ABMdxAATHcgAEx+0ABMfvAATH8gAEx/QABMf3AATH+AAEx/kABMf6AATH+wAEx/0ABMf/AATIAAAEyAEABMgDAATIBAAEyBsABMg0AATISQAEyEwABMhPAATIUgAEyFUABMhYAATIbQAEyHAABMhzAATIdgAEyHkABMh8AATIfgAEyKMABMjJAATI7QAEyQQABMkeAATJsQAEydQABMn0AATKFAAEyhYABMoYAATKGgAEyhwABMofAATKIAAEyiEABMokAATKJQAEyicABMooAATKKwAEyi4ABMovAATKMAAEyjMABMo0AATKOQAEylIABMpbAATKXQAEyl8ABMpoAATKawAEym4ABMpwAATKuQAEyt0ABMsEAATLKAAEyysABMstAATLLwAEyzEABMszAATLNQAEyzYABMs5AATLUgAEy3MABMt1AATLdwAEy3kABMt7AATLfQAEy38ABMuBAATLgwAEy6QABMunAATLqgAEy60ABMuwAATLswAEy7YABMu5AATLvAAEy74ABMw5AATMOwAEzD0ABMw/AATMQgAEzEMABMxEAATMRQAEzEYABMxIAATMSgAEzEsABMxMAATMTgAEzE8ABMzKAATMzAAEzM4ABMzQAATM0wAEzNQABMzVAATM1gAEzNcABMzZAATM2wAEzNwABMzdAATM3wAEzOAABM1bAATNXQAEzWAABM1iAATNZQAEzWYABM1nAATNaAAEzWkABM1rAATNbQAEzW4ABM1vAATNcQAEzXIABM2LAATNjAAEzY0ABM2PAATOCgAEzgwABM4OAATOEAAEzhMABM4UAATOFQAEzhYABM4XAATOGQAEzhsABM4cAATOHQAEzh8ABM4gAATOmwAEzp0ABM6fAATOoQAEzqQABM6lAATOpgAEzqcABM6oAATOqgAEzqwABM6tAATOrgAEzrAABM6xAATPLAAEzy4ABM8wAATPMgAEzzUABM82AATPNwAEzzgABM85AATPOwAEzz0ABM8+AATPPwAEz0EABM9CAATPvQAEz78ABM/BAATPwwAEz8YABM/HAATPyAAEz8kABM/KAATPzAAEz84ABM/PAATP0AAEz9IABM/TAATQTgAE0FAABNBSAATQVAAE0FcABNBYAATQWQAE0FoABNBbAATQXQAE0F8ABNBgAATQYQAE0GMABNBkAATQrQAE0NEABND4AATRHAAE0R8ABNEhAATRIwAE0SUABNEnAATRKQAE0SoABNEtAATRRgAE0WMABNFlAATRZwAE0WkABNFrAATRbQAE0W8ABNFxAATRjgAE0ZEABNGUAATRlwAE0ZoABNGdAATRoAAE0aMABNGlAATSIAAE0iIABNIkAATSJgAE0ikABNIqAATSKwAE0iwABNItAATSLwAE0jEABNIyAATSMwAE0jUABNI2AATSsQAE0rMABNK2AATSuAAE0rsABNK8AATSvQAE0r4ABNK/AATSwQAE0sMABNLEAATSxQAE0scABNLIAATTQwAE00UABNNHAATTSQAE00wABNNNAATTTgAE008ABNNQAATTUgAE01QABNNVAATTVgAE01gABNNZAATT1AAE09YABNPZAATT2wAE094ABNPfAATT4AAE0+EABNPiAATT5AAE0+YABNPnAATT6AAE0+oABNPrAATUbgAE1JIABNS2AATU2QAE1QAABNUgAATVRwAE1W4ABNWOAATVsgAE1dYABNXYAATV2wAE1d0ABNXfAATV4QAE1eQABNXnAATV6QAE1esABNXuAATV8AAE1fIABNX1AATV+AAE1fkABNX+AATWFwAE1hwABNYeAATWIwAE1iYABNYoAATWcQAE1pUABNa8AATW4AAE1uMABNblAATW5wAE1ukABNbrAATW7QAE1u4ABNbxAATXCgAE1y8ABNcxAATXMwAE1zUABNc3AATXOQAE1zsABNc9AATXPwAE10EABNdmAATXaQAE12wABNdvAATXcgAE13UABNd4AATXewAE134ABNeBAATXgwAE1/4ABNgAAATYAwAE2AUABNgIAATYCQAE2AoABNgLAATYDAAE2A4ABNgQAATYEQAE2BIABNgUAATYFQAE2CYABNgnAATYKQAE2KQABNimAATYqAAE2KoABNitAATYrgAE2K8ABNiwAATYsQAE2LMABNi1AATYtgAE2LcABNi5AATYugAE2TUABNk3AATZOgAE2TwABNk/AATZQAAE2UEABNlCAATZQwAE2UUABNlHAATZSAAE2UkABNlLAATZTAAE2V0ABNleAATZYAAE2dsABNndAATZ3wAE2eEABNnkAATZ5QAE2eYABNnnAATZ6AAE2eoABNnsAATZ7QAE2e4ABNnwAATZ8QAE2mwABNpuAATacQAE2nMABNp2AATadwAE2ngABNp5AATaegAE2nwABNp+AATafwAE2oAABNqCAATagwAE2pQABNqVAATalwAE2xIABNsUAATbFgAE2xgABNsbAATbHAAE2x0ABNseAATbHwAE2yEABNsjAATbJAAE2yUABNsnAATbKAAE26MABNulAATbqAAE26oABNutAATbrgAE268ABNuwAATbsQAE27MABNu1AATbtgAE27cABNu5AATbugAE29MABNvUAATb1QAE29cABNxSAATcVAAE3FYABNxYAATcWwAE3FwABNxdAATcXgAE3F8ABNxhAATcYwAE3GQABNxlAATcZwAE3GgABNzjAATc5QAE3OgABNzqAATc7QAE3O4ABNzvAATc8AAE3PEABNzzAATc9QAE3PYABNz3AATc+QAE3PoABN0zAATdTAAE3VUABN1YAATdWwAE3WQABN1nAATdagAE3WwABN2PAATdqAAE3jsABN5eAATefgAE3p4ABN6gAATeogAE3qQABN6mAATeqQAE3qoABN6rAATergAE3q8ABN6xAATesgAE3rUABN64AATeuQAE3roABN69AATevgAE3sMABN7cAATe5QAE3ucABN7pAATe8gAE3vUABN74AATe+gAE30MABN9nAATfjgAE37IABN+1AATftwAE37kABN+7AATfvQAE378ABN/AAATfwwAE39wABN/9AATf/wAE4AEABOADAATgBQAE4AcABOAJAATgCwAE4A0ABOAuAATgMQAE4DQABOA3AATgOgAE4D0ABOBAAATgQwAE4EYABOBIAATgwwAE4MUABODHAATgyQAE4MwABODNAATgzgAE4M8ABODQAATg0gAE4NQABODVAATg1gAE4NgABODZAAThVAAE4VYABOFYAAThWgAE4V0ABOFeAAThXwAE4WAABOFhAAThYwAE4WUABOFmAAThZwAE4WkABOFqAATh5QAE4ecABOHqAATh7AAE4e8ABOHwAATh8QAE4fIABOHzAATh9QAE4fcABOH4AATh+QAE4fsABOH8AATiFQAE4hYABOIXAATiGQAE4pQABOKWAATimAAE4poABOKdAATingAE4p8ABOKgAATioQAE4qMABOKlAATipgAE4qcABOKpAATiqgAE4yUABOMnAATjKQAE4ysABOMuAATjLwAE4zAABOMxAATjMgAE4zQABOM2AATjNwAE4zgABOM6AATjOwAE47YABOO4AATjugAE47wABOO/AATjwAAE48EABOPCAATjwwAE48UABOPHAATjyAAE48kABOPLAATjzAAE5EcABORJAATkSwAE5E0ABORQAATkUQAE5FIABORTAATkVAAE5FYABORYAATkWQAE5FoABORcAATkXQAE5NgABOTaAATk3AAE5N4ABOThAATk4gAE5OMABOTkAATk5QAE5OcABOTpAATk6gAE5OsABOTtAATk7gAE5TcABOVbAATlggAE5aYABOWpAATlqwAE5a0ABOWvAATlsQAE5bMABOW0AATltwAE5dAABOXtAATl7wAE5fEABOXzAATl9QAE5fcABOX5AATl+wAE5hgABOYbAATmHgAE5iEABOYkAATmJwAE5ioABOYtAATmLwAE5qoABOasAATmrgAE5rAABOazAATmtAAE5rUABOa2AATmtwAE5rkABOa7AATmvAAE5r0ABOa/AATmwAAE5zsABOc9AATnPwAE50EABOdEAATnRQAE50YABOdHAATnSAAE50oABOdMAATnTQAE504ABOdQAATnUQAE58wABOfOAATn0AAE59IABOfVAATn1gAE59cABOfYAATn2QAE59sABOfdAATn3gAE598ABOfhAATn4gAE6F0ABOhfAAToYgAE6GQABOhnAAToaAAE6GkABOhqAAToawAE6G0ABOhvAATocAAE6HEABOhzAATodAAE6O8ABOjxAATo8wAE6PUABOj4AATo+QAE6PoABOj7AATo/AAE6P4ABOkAAATpAQAE6QIABOkEAATpBQAE6YAABOmCAATphAAE6YYABOmJAATpigAE6YsABOmMAATpjQAE6Y8ABOmRAATpkgAE6ZMABOmVAATplgAE6hEABOoTAATqFgAE6hgABOobAATqHAAE6h0ABOoeAATqHwAE6iEABOojAATqJAAE6iUABOonAATqKAAE6rsABOreAATq/gAE6x4ABOsgAATrIgAE6yQABOsmAATrKQAE6yoABOsrAATrLgAE6y8ABOsxAATrMgAE6zQABOs3AATrOAAE6zkABOs8AATrPQAE60IABOtbAATrZAAE62YABOtoAATrcQAE63QABOt3AATreQAE68IABOvmAATsDQAE7DEABOw0AATsNgAE7DgABOw6AATsPAAE7D4ABOw/AATsQgAE7FsABOx8AATsfgAE7IAABOyCAATshAAE7IYABOyIAATsigAE7IwABOytAATssAAE7LMABOy2AATsuQAE7LwABOy/AATswgAE7MUABOzHAATtQgAE7UQABO1GAATtSAAE7UsABO1MAATtTQAE7U4ABO1PAATtUQAE7VMABO1UAATtVQAE7VcABO1YAATt0wAE7dUABO3XAATt2QAE7dwABO3dAATt3gAE7d8ABO3gAATt4gAE7eQABO3lAATt5gAE7egABO3pAATuZAAE7mYABO5pAATuawAE7m4ABO5vAATucAAE7nEABO5yAATudAAE7nYABO53AATueAAE7noABO57AATulAAE7pUABO6WAATumAAE7xMABO8VAATvFwAE7xkABO8cAATvHQAE7x4ABO8fAATvIAAE7yIABO8kAATvJQAE7yYABO8oAATvKQAE76QABO+mAATvqAAE76oABO+tAATvrgAE768ABO+wAATvsQAE77MABO+1AATvtgAE77cABO+5AATvugAE8DUABPA3AATwOQAE8DsABPA+AATwPwAE8EAABPBBAATwQgAE8EQABPBGAATwRwAE8EgABPBKAATwSwAE8MYABPDIAATwygAE8MwABPDPAATw0AAE8NEABPDSAATw0wAE8NUABPDXAATw2AAE8NkABPDbAATw3AAE8VcABPFZAATxWwAE8V0ABPFgAATxYQAE8WIABPFjAATxZAAE8WYABPFoAATxaQAE8WoABPFsAATxbQAE8bYABPHaAATyAQAE8iUABPIoAATyKgAE8iwABPIuAATyMAAE8jIABPIzAATyNgAE8k8ABPJsAATybgAE8nAABPJyAATydAAE8nYABPJ4AATyegAE8pcABPKaAATynQAE8qAABPKjAATypgAE8qkABPKsAATyrgAE8ykABPMrAATzLQAE8y8ABPMyAATzMwAE8zQABPM1AATzNgAE8zgABPM6AATzOwAE8zwABPM+AATzPwAE87oABPO8AATzvgAE88AABPPDAATzxAAE88UABPPGAATzxwAE88kABPPLAATzzAAE880ABPPPAATz0AAE9EsABPRNAAT0TwAE9FEABPRUAAT0VQAE9FYABPRXAAT0WAAE9FoABPRcAAT0XQAE9F4ABPRgAAT0YQAE9NwABPTeAAT04AAE9OIABPTlAAT05gAE9OcABPToAAT06QAE9OsABPTtAAT07gAE9O8ABPTxAAT08gAE9W0ABPVvAAT1cQAE9XMABPV2AAT1dwAE9XgABPV5AAT1egAE9XwABPV+AAT1fwAE9YAABPWCAAT1gwAE9f4ABPYAAAT2AgAE9gQABPYHAAT2CAAE9gkABPYKAAT2CwAE9g0ABPYPAAT2EAAE9hEABPYTAAT2FAAE9o8ABPaRAAT2kwAE9pUABPaYAAT2mQAE9poABPabAAT2nAAE9p4ABPagAAT2oQAE9qIABPakAAT2pQAE9rYABPa7AAT2vgAE9sAABPb5AAT2/AAE9v4ABPcBAAT3BAAE9wcABPcKAAT3DwAE94oABPeMAAT3jgAE95AABPeTAAT3lAAE95UABPeWAAT3lwAE95kABPebAAT3nAAE950ABPefAAT3oAAE+BsABPgdAAT4HwAE+CEABPgkAAT4JQAE+CYABPgnAAT4KAAE+CoABPgsAAT4LQAE+C4ABPgwAAT4MQAE+KwABPiuAAT4sQAE+LMABPi2AAT4twAE+LgABPi5AAT4ugAE+LwABPi+AAT4vwAE+MAABPjCAAT4wwAE+VYABPl5AAT5mQAE+bkABPm7AAT5vQAE+b8ABPnBAAT5xAAE+cUABPnGAAT5yQAE+coABPnMAAT5zQAE+dAABPnTAAT51AAE+dUABPnYAAT52QAE+d4ABPn3AAT6AAAE+gIABPoEAAT6DQAE+hAABPoTAAT6FQAE+l4ABPqCAAT6qQAE+s0ABPrQAAT60gAE+tQABPrWAAT62AAE+toABPrbAAT63gAE+vcABPsYAAT7GgAE+xwABPseAAT7IAAE+yIABPskAAT7JgAE+ygABPtJAAT7TAAE+08ABPtSAAT7VQAE+1gABPtbAAT7XgAE+2EABPtjAAT73gAE++AABPviAAT75AAE++cABPvoAAT76QAE++oABPvrAAT77QAE++8ABPvwAAT78QAE+/MABPv0AAT8bwAE/HEABPxzAAT8dQAE/HgABPx5AAT8egAE/HsABPx8AAT8fgAE/IAABPyBAAT8ggAE/IQABPyFAAT9AAAE/QIABP0FAAT9BwAE/QoABP0LAAT9DAAE/Q0ABP0OAAT9EAAE/RIABP0TAAT9FAAE/RYABP0XAAT9MAAE/TEABP0yAAT9NAAE/a8ABP2xAAT9swAE/bUABP24AAT9uQAE/boABP27AAT9vAAE/b4ABP3AAAT9wQAE/cIABP3EAAT9xQAE/kAABP5CAAT+RAAE/kYABP5JAAT+SgAE/ksABP5MAAT+TQAE/k8ABP5RAAT+UgAE/lMABP5VAAT+VgAE/tEABP7TAAT+1QAE/tcABP7aAAT+2wAE/twABP7dAAT+3gAE/uAABP7iAAT+4wAE/uQABP7mAAT+5wAE/2IABP9kAAT/ZgAE/2gABP9rAAT/bAAE/20ABP9uAAT/bwAE/3EABP9zAAT/dAAE/3UABP93AAT/eAAE//MABP/1AAT/9wAE//kABP/8AAT//QAE//4ABP//AAUAAAAFAAIABQAEAAUABQAFAAYABQAIAAUACQAFAFIABQB2AAUAnQAFAMEABQDEAAUAxgAFAMgABQDKAAUAzAAFAM4ABQDPAAUA0gAFAOsABQEIAAUBCgAFAQwABQEOAAUBEAAFARIABQEUAAUBFgAFATMABQE2AAUBOQAFATwABQE/AAUBQgAFAUUABQFIAAUBSgAFAcUABQHHAAUByQAFAcsABQHOAAUBzwAFAdAABQHRAAUB0gAFAdQABQHWAAUB1wAFAdgABQHaAAUB2wAFAlYABQJYAAUCWwAFAl0ABQJgAAUCYQAFAmIABQJjAAUCZAAFAmYABQJoAAUCaQAFAmoABQJsAAUCbQAFAugABQLqAAUC7AAFAu4ABQLxAAUC8gAFAvMABQL0AAUC9QAFAvcABQL5AAUC+gAFAvsABQL9AAUC/gAFA3kABQN7AAUDfgAFA4AABQODAAUDhAAFA4UABQOGAAUDhwAFA4kABQOLAAUDjAAFA40ABQOPAAUDkAAFBBMABQQ3AAUEWwAFBH4ABQSlAAUExQAFBOwABQUTAAUFMwAFBVcABQV7AAUFfQAFBYAABQWCAAUFhAAFBYYABQWJAAUFjAAFBY4ABQWQAAUFkwAFBZUABQWXAAUFmgAFBZ0ABQWeAAUFowAFBbwABQXBAAUFwwAFBcgABQXLAAUFzQAFBhYABQY6AAUGYQAFBoUABQaIAAUGigAFBowABQaOAAUGkAAFBpIABQaTAAUGlgAFBq8ABQbUAAUG1gAFBtgABQbaAAUG3AAFBt4ABQbgAAUG4gAFBuQABQbmAAUHCwAFBw4ABQcRAAUHFAAFBxcABQcaAAUHHQAFByAABQcjAAUHJgAFBygABQejAAUHpQAFB6gABQeqAAUHrQAFB64ABQevAAUHsAAFB7EABQezAAUHtQAFB7YABQe3AAUHuQAFB7oABQfLAAUHzAAFB84ABQhJAAUISwAFCE0ABQhPAAUIUgAFCFMABQhUAAUIVQAFCFYABQhYAAUIWgAFCFsABQhcAAUIXgAFCF8ABQjaAAUI3AAFCN8ABQjhAAUI5AAFCOUABQjmAAUI5wAFCOgABQjqAAUI7AAFCO0ABQjuAAUI8AAFCPEABQkCAAUJAwAFCQUABQmAAAUJggAFCYQABQmGAAUJiQAFCYoABQmLAAUJjAAFCY0ABQmPAAUJkQAFCZIABQmTAAUJlQAFCZYABQoRAAUKEwAFChYABQoYAAUKGwAFChwABQodAAUKHgAFCh8ABQohAAUKIwAFCiQABQolAAUKJwAFCigABQo5AAUKOgAFCjwABQq3AAUKuQAFCrsABQq9AAUKwAAFCsEABQrCAAUKwwAFCsQABQrGAAUKyAAFCskABQrKAAUKzAAFCs0ABQtIAAULSgAFC00ABQtPAAULUgAFC1MABQtUAAULVQAFC1YABQtYAAULWgAFC1sABQtcAAULXgAFC18ABQt4AAULeQAFC3oABQt8AAUL9wAFC/kABQv7AAUL/QAFDAAABQwBAAUMAgAFDAMABQwEAAUMBgAFDAgABQwJAAUMCgAFDAwABQwNAAUMiAAFDIoABQyNAAUMjwAFDJIABQyTAAUMlAAFDJUABQyWAAUMmAAFDJoABQybAAUMnAAFDJ4ABQyfAAUMvwAFDNgABQzhAAUM5AAFDOcABQzwAAUM8wAFDPYABQz4AAUNDQAFDRkABQ2sAAUNzwAFDe8ABQ4PAAUOEQAFDhMABQ4VAAUOFwAFDhoABQ4bAAUOHAAFDh8ABQ4gAAUOIgAFDiMABQ4lAAUOKAAFDikABQ4qAAUOLQAFDi4ABQ4zAAUOTAAFDlUABQ5XAAUOWQAFDmIABQ5lAAUOaAAFDmoABQ6zAAUO1wAFDv4ABQ8iAAUPJQAFDycABQ8pAAUPKwAFDy0ABQ8vAAUPMAAFDzMABQ9MAAUPbQAFD28ABQ9xAAUPcwAFD3UABQ93AAUPeQAFD3sABQ99AAUPngAFD6EABQ+kAAUPpwAFD6oABQ+tAAUPsAAFD7MABQ+2AAUPuAAFEDMABRA1AAUQNwAFEDkABRA8AAUQPQAFED4ABRA/AAUQQAAFEEIABRBEAAUQRQAFEEYABRBIAAUQSQAFEMQABRDGAAUQyAAFEMoABRDNAAUQzgAFEM8ABRDQAAUQ0QAFENMABRDVAAUQ1gAFENcABRDZAAUQ2gAFEVUABRFXAAURWgAFEVwABRFfAAURYAAFEWEABRFiAAURYwAFEWUABRFnAAURaAAFEWkABRFrAAURbAAFEYUABRGGAAURhwAFEYkABRIEAAUSBgAFEggABRIKAAUSDQAFEg4ABRIPAAUSEAAFEhEABRITAAUSFQAFEhYABRIXAAUSGQAFEhoABRKVAAUSlwAFEpkABRKbAAUSngAFEp8ABRKgAAUSoQAFEqIABRKkAAUSpgAFEqcABRKoAAUSqgAFEqsABRMmAAUTKAAFEyoABRMsAAUTLwAFEzAABRMxAAUTMgAFEzMABRM1AAUTNwAFEzgABRM5AAUTOwAFEzwABRO3AAUTuQAFE7sABRO9AAUTwAAFE8EABRPCAAUTwwAFE8QABRPGAAUTyAAFE8kABRPKAAUTzAAFE80ABRRIAAUUSgAFFEwABRROAAUUUQAFFFIABRRTAAUUVAAFFFUABRRXAAUUWQAFFFoABRRbAAUUXQAFFF4ABRSnAAUUywAFFPIABRUWAAUVGQAFFRsABRUdAAUVHwAFFSEABRUjAAUVJAAFFScABRVAAAUVXQAFFV8ABRVhAAUVYwAFFWUABRVnAAUVaQAFFWsABRWIAAUViwAFFY4ABRWRAAUVlAAFFZcABRWaAAUVnQAFFZ8ABRYaAAUWHAAFFh8ABRYhAAUWJAAFFiUABRYmAAUWJwAFFigABRYqAAUWLAAFFi0ABRYuAAUWMAAFFjEABRasAAUWrgAFFrAABRayAAUWtQAFFrYABRa3AAUWuAAFFrkABRa7AAUWvQAFFr4ABRa/AAUWwQAFFsIABRc9AAUXPwAFF0EABRdDAAUXRgAFF0cABRdIAAUXSQAFF0oABRdMAAUXTgAFF08ABRdQAAUXUgAFF1MABRfOAAUX0AAFF9MABRfVAAUX2AAFF9kABRfaAAUX2wAFF9wABRfeAAUX4AAFF+EABRfiAAUX5AAFF+UABRhgAAUYYgAFGGQABRhmAAUYaQAFGGoABRhrAAUYbAAFGG0ABRhvAAUYcQAFGHIABRhzAAUYdQAFGHYABRjxAAUY8wAFGPUABRj3AAUY+gAFGPsABRj8AAUY/QAFGP4ABRkAAAUZAgAFGQMABRkEAAUZBgAFGQcABRmCAAUZhAAFGYYABRmIAAUZiwAFGYwABRmNAAUZjgAFGY8ABRmRAAUZkwAFGZQABRmVAAUZlwAFGZgABRorAAUaTgAFGm4ABRqOAAUakAAFGpIABRqUAAUalgAFGpkABRqaAAUamwAFGp4ABRqfAAUaoQAFGqIABRqlAAUaqAAFGqkABRqqAAUarQAFGq4ABRqzAAUazAAFGtUABRrXAAUa2QAFGuIABRrlAAUa6AAFGuoABRszAAUbVwAFG34ABRuiAAUbpQAFG6cABRupAAUbqwAFG60ABRuvAAUbsAAFG7MABRvMAAUb7QAFG+8ABRvxAAUb8wAFG/UABRv3AAUb+QAFG/sABRv9AAUcHgAFHCEABRwkAAUcJwAFHCoABRwtAAUcMAAFHDMABRw2AAUcOAAFHLMABRy1AAUctwAFHLkABRy8AAUcvQAFHL4ABRy/AAUcwAAFHMIABRzEAAUcxQAFHMYABRzIAAUcyQAFHUQABR1GAAUdSAAFHUoABR1NAAUdTgAFHU8ABR1QAAUdUQAFHVMABR1VAAUdVgAFHVcABR1ZAAUdWgAFHdUABR3XAAUd2gAFHdwABR3fAAUd4AAFHeEABR3iAAUd4wAFHeUABR3nAAUd6AAFHekABR3rAAUd7AAFHgUABR4GAAUeBwAFHgkABR6EAAUehgAFHogABR6KAAUejQAFHo4ABR6PAAUekAAFHpEABR6TAAUelQAFHpYABR6XAAUemQAFHpoABR8VAAUfFwAFHxkABR8bAAUfHgAFHx8ABR8gAAUfIQAFHyIABR8kAAUfJgAFHycABR8oAAUfKgAFHysABR+mAAUfqAAFH6oABR+sAAUfrwAFH7AABR+xAAUfsgAFH7MABR+1AAUftwAFH7gABR+5AAUfuwAFH7wABSA3AAUgOQAFIDsABSA9AAUgQAAFIEEABSBCAAUgQwAFIEQABSBGAAUgSAAFIEkABSBKAAUgTAAFIE0ABSDIAAUgygAFIMwABSDOAAUg0QAFINIABSDTAAUg1AAFINUABSDXAAUg2QAFINoABSDbAAUg3QAFIN4ABSEnAAUhSwAFIXIABSGWAAUhmQAFIZsABSGdAAUhnwAFIaEABSGjAAUhpAAFIacABSHAAAUh3QAFId8ABSHhAAUh4wAFIeUABSHnAAUh6QAFIesABSIIAAUiCwAFIg4ABSIRAAUiFAAFIhcABSIaAAUiHQAFIh8ABSKaAAUinAAFIp4ABSKgAAUiowAFIqQABSKlAAUipgAFIqcABSKpAAUiqwAFIqwABSKtAAUirwAFIrAABSMrAAUjLQAFIy8ABSMxAAUjNAAFIzUABSM2AAUjNwAFIzgABSM6AAUjPAAFIz0ABSM+AAUjQAAFI0EABSO8AAUjvgAFI8AABSPCAAUjxQAFI8YABSPHAAUjyAAFI8kABSPLAAUjzQAFI84ABSPPAAUj0QAFI9IABSRNAAUkTwAFJFIABSRUAAUkVwAFJFgABSRZAAUkWgAFJFsABSRdAAUkXwAFJGAABSRhAAUkYwAFJGQABSTfAAUk4QAFJOMABSTlAAUk6AAFJOkABSTqAAUk6wAFJOwABSTuAAUk8AAFJPEABSTyAAUk9AAFJPUABSVwAAUlcgAFJXQABSV2AAUleQAFJXoABSV7AAUlfAAFJX0ABSV/AAUlgQAFJYIABSWDAAUlhQAFJYYABSYBAAUmAwAFJgYABSY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LAAVbxgAFW8gABVvKAAVbzAAFW88ABVvQAAVb0QAFW9IABVvTAAVb1QAFW9cABVvYAAVb2QAFW9sABVvcAAVcVwAFXFkABVxbAAVcXQAFXGAABVxhAAVcYgAFXGMABVxkAAVcZgAFXGgABVxpAAVcagAFXGwABVxtAAVc6AAFXOoABVzsAAVc7gAFXPEABVzyAAVc8wAFXPQABVz1AAVc9wAFXPkABVz6AAVc+wAFXP0ABVz+AAVdeQAFXXsABV19AAVdfwAFXYIABV2DAAVdhAAFXYUABV2GAAVdiAAFXYoABV2LAAVdjAAFXY4ABV2PAAVeCgAFXgwABV4OAAVeEAAFXhMABV4UAAVeFQAFXhYABV4XAAVeGQAFXhsABV4cAAVeHQAFXh8ABV4gAAVeaQAFXo0ABV60AAVe2AAFXtsABV7dAAVe3wAFXuEABV7jAAVe5QAFXuYABV7pAAVfAgAFXx8ABV8hAAVfIwAFXyUABV8nAAVfKQAFXysABV8tAAVfSgAFX00ABV9QAAVfUwAFX1YABV9ZAAVfXAAFX18ABV9hAAVf3AAFX94ABV/gAAVf4gAFX+UABV/mAAVf5wAFX+gABV/pAAVf6wAFX+0ABV/uAAVf7wAFX/EABV/yAAVgbQAFYG8ABWBxAAVgcwAFYHYABWB3AAVgeAAFYHkABWB6AAVgfAAFYH4ABWB/AAVggAAFYIIABWCDAAVg/gAFYQAABWECAAVhBAAFYQcABWEIAAVhCQAFYQoABWELAAVhDQAFYQ8ABWEQAAVhEQAFYRMABWEUAAVhjwAFYZEABWGUAAVhlgAFYZkABWGaAAVhmwAFYZwABWGdAAVhnwAFYaEABWGiAAVhowAFYaUABWGmAAViIQAFYiMABWIlAAViJwAFYioABWIrAAViLAAFYi0ABWIuAAViMAAFYjIABWIzAAViNAAFYjYABWI3AAVisgAFYrQABWK2AAViuAAFYrsABWK8AAVivQAFYr4ABWK/AAViwQAFYsMABWLEAAVixQAFYscABWLIAAVjQwAFY0UABWNIAAVjSgAFY00ABWNOAAVjTwAFY1AABWNRAAVjUwAFY1UABWNWAAVjVwAFY1kABWNaAAVj7QAFZBAABWQwAAVkUAAFZFIABWRUAAVkVgAFZFgABWRbAAVkXAAFZF0ABWRgAAVkYQAFZGMABWRkAAVkZwAFZGoABWRrAAVkbAAFZG8ABWRwAAVkdQAFZI4ABWSXAAVkmQAFZJsABWSkAAVkpwAFZKoABWSsAAVk9QAFZRkABWVAAAVlZAAFZWcABWVpAAVlawAFZW0ABWVvAAVlcQAFZXIABWV1AAVljgAFZa8ABWWxAAVlswAFZbUABWW3AAVluQAFZbsABWW9AAVlvwAFZeAABWXjAAVl5gAFZekABWXsAAVl7wAFZfIABWX1AAVl+AAFZfoABWZ1AAVmdwAFZnkABWZ7AAVmfgAFZn8ABWaAAAVmgQAFZoIABWaEAAVmhgAFZocABWaIAAVmigAFZosABWcGAAVnCAAFZwoABWcMAAVnDwAFZxAABWcRAAVnEgAFZxMABWcVAAVnFwAFZxgABWcZAAVnGwAFZxwABWeXAAVnmQAFZ5wABWeeAAVnoQAFZ6IABWejAAVnpAAFZ6UABWenAAVnqQAFZ6oABWerAAVnrQAFZ64ABWfHAAVnyAAFZ8kABWfLAAVoRgAFaEgABWhKAAVoTAAFaE8ABWhQAAVoUQAFaFIABWhTAAVoVQAFaFcABWhYAAVoWQAFaFsABWhcAAVo1wAFaNkABWjbAAVo3QAFaOAABWjhAAVo4gAFaOMABWjkAAVo5gAFaOgABWjpAAVo6gAFaOwABWjtAAVpaAAFaWoABWlsAAVpbgAFaXEABWlyAAVpcwAFaXQABWl1AAVpdwAFaXkABWl6AAVpewAFaX0ABWl+AAVp+QAFafsABWn9AAVp/wAFagIABWoDAAVqBAAFagUABWoGAAVqCAAFagoABWoLAAVqDAAFag4ABWoPAAVqigAFaowABWqOAAVqkAAFapMABWqUAAVqlQAFapYABWqXAAVqmQAFapsABWqcAAVqnQAFap8ABWqgAAVq6QAFaw0ABWs0AAVrWAAFa1sABWtdAAVrXwAFa2EABWtjAAVrZQAFa2YABWtpAAVrggAFa58ABWuhAAVrowAFa6UABWunAAVrqQAFa6sABWutAAVrygAFa80ABWvQAAVr0wAFa9YABWvZAAVr3AAFa98ABWvhAAVsXAAFbF4ABWxgAAVsYgAFbGUABWxmAAVsZwAFbGgABWxpAAVsawAFbG0ABWxuAAVsbwAFbHEABWxyAAVs7QAFbO8ABWzyAAVs9AAFbPcABWz4AAVs+QAFbPoABWz7AAVs/QAFbP8ABW0AAAVtAQAFbQMABW0EAAVtfwAFbYEABW2DAAVthQAFbYgABW2JAAVtigAFbYsABW2MAAVtjgAFbZAABW2RAAVtkgAFbZQABW2VAAVuEAAFbhIABW4VAAVuFwAFbhoABW4bAAVuHAAFbh0ABW4eAAVuIAAFbiIABW4jAAVuJAAFbiYABW4nAAVuqgAFbs4ABW7yAAVvFQAFbzwABW9cAAVvgwAFb6oABW/KAAVv7gAFcBIABXAUAAVwFwAFcBkABXAbAAVwHQAFcCAABXAjAAVwJQAFcCcABXAqAAVwLAAFcC4ABXAxAAVwNAAFcDUABXA6AAVwUwAFcFgABXBaAAVwXwAFcGIABXBkAAVwrQAFcNEABXD4AAVxHAAFcR8ABXEhAAVxIwAFcSUABXEnAAVxKQAFcSoABXEtAAVxRgAFcWsABXFtAAVxbwAFcXEABXFzAAVxdQAFcXcABXF5AAVxewAFcX0ABXGiAAVxpQAFcagABXGrAAVxrgAFcbEABXG0AAVxtwAFcboABXG9AAVxvwAFcjoABXI8AAVyPwAFckEABXJEAAVyRQAFckYABXJHAAVySAAFckoABXJMAAVyTQAFck4ABXJQAAVyUQAFcmIABXJjAAVyZQAFcuAABXLiAAVy5AAFcuYABXLpAAVy6gAFcusABXLsAAVy7QAFcu8ABXLxAAVy8gAFcvMABXL1AAVy9gAFc3EABXNzAAVzdgAFc3gABXN7AAVzfAAFc30ABXN+AAVzfwAFc4EABXODAAVzhAAFc4UABXOHAAVziAAFc5kABXOaAAVznAAFdBcABXQZAAV0GwAFdB0ABXQgAAV0IQAFdCIABXQjAAV0JAAFdCYABXQoAAV0KQAFdCoABXQsAAV0LQAFdKgABXSqAAV0rQAFdK8ABXSyAAV0swAFdLQABXS1AAV0tgAFdLgABXS6AAV0uwAFdLwABXS+AAV0vwAFdNAABXTRAAV00wAFdU4ABXVQAAV1UgAFdVQABXVXAAV1WAAFdVkABXVaAAV1WwAFdV0ABXVfAAV1YAAFdWEABXVjAAV1ZAAFdd8ABXXhAAV15AAFdeYABXXpAAV16gAFdesABXXsAAV17QAFde8ABXXxAAV18gAFdfMABXX1AAV19gAFdg8ABXYQAAV2EQAFdhMABXaOAAV2kAAFdpIABXa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7AAWZvgAFmb8ABZnAAAWZwQAFmcIABZnEAAWZxgAFmccABZnIAAWZygAFmcsABZpGAAWaSAAFmkoABZpMAAWaTwAFmlAABZpRAAWaUgAFmlMABZpVAAWaVwAFmlgABZpZAAWaWwAFmlwABZrXAAWa2QAFmtsABZrdAAWa4AAFmuEABZriAAWa4wAFmuQABZrmAAWa6AAFmukABZrqAAWa7AAFmu0ABZtoAAWbagAFm20ABZtvAAWbcgAFm3MABZt0AAWbdQAFm3YABZt4AAWbegAFm3sABZt8AAWbfgAFm38ABZv6AAWb/AAFm/4ABZwAAAWcAwAFnAQABZwFAAWcBgAFnAcABZwJAAWcCwAFnAwABZwNAAWcDwAFnBAABZyLAAWcjQAFnI8ABZyRAAWclAAFnJUABZyWAAWclwAFnJgABZyaAAWcnAAFnJ0ABZyeAAWcoAAFnKEABZ0cAAWdHgAFnSEABZ0jAAWdJgAFnScABZ0oAAWdKQAFnSoABZ0sAAWdLgAFnS8ABZ0wAAWdMgAFnTMABZ1EAAWdRQAFnUcABZ3CAAWdxAAFncYABZ3IAAWdywAFncwABZ3NAAWdzgAFnc8ABZ3RAAWd0wAFndQABZ3VAAWd1wAFndgABZ5TAAWeVQAFnlcABZ5ZAAWeXAAFnl0ABZ5eAAWeXwAFnmAABZ5iAAWeZAAFnmUABZ5mAAWeaAAFnmkABZ7kAAWe5gAFnukABZ7rAAWe7gAFnu8ABZ7wAAWe8QAFnvIABZ70AAWe9gAFnvcABZ74AAWe+gAFnvsABZ+OAAWfsQAFn9EABZ/xAAWf8wAFn/UABZ/3AAWf+QAFn/wABZ/9AAWf/gAFoAEABaACAAWgBAAFoAUABaAHAAWgCgAFoAsABaAMAAWgDwAFoBAABaAZAAWgMgAFoDsABaA9AAWgPwAFoEgABaBLAAWgTgAFoFAABaCZAAWgvQAFoOQABaEIAAWhCwAFoQ0ABaEPAAWhEQAFoRMABaEVAAWhFgAFoRkABaEyAAWhUwAFoVUABaFXAAWhWQAFoVsABaFdAAWhXwAFoWEABaFjAAWhhAAFoYcABaGKAAWhjQAFoZAABaGTAAWhlgAFoZkABaGcAAWhngAFohkABaIbAAWiHQAFoh8ABaIiAAWiIwAFoiQABaIlAAWiJgAFoigABaIqAAWiKwAFoiwABaIuAAWiLwAFoqoABaKsAAWirgAForAABaKzAAWitAAForUABaK2AAWitwAForkABaK7AAWivAAFor0ABaK/AAWiwAAFozsABaM9AAWjQAAFo0IABaNFAAWjRgAFo0cABaNIAAWjSQAFo0sABaNNAAWjTgAFo08ABaNRAAWjUgAFo2sABaNsAAWjbQAFo28ABaPqAAWj7AAFo+4ABaPwAAWj8wAFo/QABaP1AAWj9gAFo/cABaP5AAWj+wAFo/wABaP9AAWj/wAFpAAABaR7AAWkfQAFpH8ABaSBAAWkhAAFpIUABaSGAAWkhwAFpIgABaSKAAWkjAAFpI0ABaSOAAWkkAAFpJEABaUMAAWlDgAFpRAABaUSAAWlFQAFpRYABaUXAAWlGAAFpRkABaUbAAWlHQAFpR4ABaUfAAWlIQAFpSIABaWdAAWlnwAFpaEABaWjAAWlpgAFpacABaWoAAWlqQAFpaoABaWsAAWlrgAFpa8ABaWwAAWlsgAFpbMABaYuAAWmMAAFpjIABaY0AAWmNwAFpjgABaY5AAWmOgAFpjsABaY9AAWmPwAFpkAABaZBAAWmQwAFpkQABaaNAAWmsQAFptgABab8AAWm/wAFpwEABacDAAWnBQAFpwcABacJAAWnCgAFpw0ABacmAAWnQwAFp0UABadHAAWnSQAFp0sABadNAAWnTwAFp1EABaduAAWncQAFp3QABad3AAWnegAFp30ABaeAAAWngwAFp4UABagAAAWoAgAFqAQABagGAAWoCQAFqAoABagLAAWoDAAFqA0ABagPAAWoEQAFqBIABagTAAWoFQAFqBYABaiRAAWokwAFqJUABaiXAAWomgAFqJsABaicAAWonQAFqJ4ABaigAAWoogAFqKMABaikAAWopgAFqKcABakiAAWpJAAFqSYABakoAAWpKwAFqSwABaktAAWpLgAFqS8ABakxAAWpMwAFqTQABak1AAWpNwAFqTgABamzAAWptQAFqbcABam5AAWpvAAFqb0ABam+AAWpvwAFqcAABanCAAWpxAAFqcUABanGAAWpyAAFqckABapEAAWqRgAFqkgABapKAAWqTQAFqk4ABapPAAWqUAAFqlEABapTAAWqVQAFqlYABapXAAWqWQAFqloABarVAAWq1wAFqtkABarbAAWq3gAFqt8ABargAAWq4QAFquIABarkAAWq5gAFqucABaroAAWq6gAFqusABatmAAWraAAFq2oABatsAAWrbwAFq3AABatxAAWrcgAFq3MABat1AAWrdwAFq3gABat5AAWrewAFq3wABawPAAWsMgAFrFIABaxyAAWsdAAFrHYABax4AAWsegAFrH0ABax+AAWsfwAFrIIABayDAAWshQAFrIYABayIAAWsiwAFrIwABayNAAWskAAFrJEABayWAAWsrwAFrLgABay6AAWsvAAFrMUABazIAAWsywAFrM0ABa0WAAWtOgAFrWEABa2FAAWtiAAFrYoABa2MAAWtjgAFrZAABa2SAAWtkwAFrZYABa2vAAWt0AAFrdIABa3UAAWt1gAFrdgABa3aAAWt3AAFrd4ABa3gAAWuAQAFrgQABa4HAAWuCgAFrg0ABa4QAAWuEwAFrhYABa4ZAAWuGwAFrpYABa6YAAWumgAFrpwABa6fAAWuoAAFrqEABa6iAAWuowAFrqUABa6nAAWuqAAFrqkABa6rAAWurAAFrycABa8pAAWvKwAFry0ABa8wAAWvMQAFrzIABa8zAAWvNAAFrzYABa84AAWvOQAFrzoABa88AAWvPQAFr7gABa+6AAWvvQAFr78ABa/CAAWvwwAFr8QABa/FAAWvxgAFr8gABa/KAAWvywAFr8wABa/OAAWvzwAFr+gABa/pAAWv6gAFr+wABbBnAAWwaQAFsGsABbBtAAWwcAAFsHEABbByAAWwcwAFsHQABbB2AAWweAAFsHkABbB6AAWwfAAFsH0ABbD4AAWw+gAFsPwABbD+AAWxAQAFsQIABbEDAAWxBAAFsQUABbEHAAWxCQAFsQoABbELAAWxDQAFsQ4ABbGJAAWxiwAFsY0ABbGPAAWxkgAFsZMABbGUAAWxlQAFsZYABbGYAAWxmgAFsZsABbGcAAWxngAFsZ8ABbIaAAWyHAAFsh4ABbIgAAWyIwAFsiQABbIlAAWyJgAFsicABbIpAAWyKwAFsiwABbItAAWyLwAFsjAABbKrAAWyrQAFsq8ABbKxAAWytAAFsrUABbK2AAWytwAFsrgABbK6AAWyvAAFsr0ABbK+AAWywAAFssEABbMKAAWzLgAFs1UABbN5AAWzfAAFs34ABbOAAAWzggAFs4QABbOGAAWzhwAFs4oABbOjAAWzwAAFs8IABbPEAAWzxgAFs8gABbP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CAAXXBAAF1wYABdcIAAXXCwAF1wwABdcNAAXXDgAF1w8ABdcRAAXXEwAF1xQABdcVAAXXFwAF1xgABdeTAAXXlQAF15cABdeZAAXXnAAF150ABdeeAAXXnwAF16AABdeiAAXXpAAF16UABdemAAXXqAAF16kABdgkAAXYJgAF2CgABdgqAAXYLQAF2C4ABdgvAAXYMAAF2DEABdgzAAXYNQAF2DYABdg3AAXYOQAF2DoABdiDAAXYpwAF2M4ABdjyAAXY9QAF2PcABdj5AAXY+wAF2P0ABdj/AAXZAAAF2QMABdkcAAXZOQAF2TsABdk9AAXZPwAF2UEABdlDAAXZRQAF2UcABdlkAAXZZwAF2WoABdltAAXZcAAF2XMABdl2AAXZeQAF2XsABdn2AAXZ+AAF2foABdn8AAXZ/wAF2gAABdoBAAXaAgAF2gMABdoFAAXaBwAF2ggABdoJAAXaCwAF2gwABdqHAAXaiQAF2osABdqNAAXakAAF2pEABdqSAAXakwAF2pQABdqWAAXamAAF2pkABdqaAAXanAAF2p0ABdsYAAXbGgAF2xwABdseAAXbIQAF2yIABdsjAAXbJAAF2yUABdsnAAXbKQAF2yoABdsrAAXbLQAF2y4ABdupAAXbqwAF264ABduwAAXbswAF27QABdu1AAXbtgAF27cABdu5AAXbuwAF27wABdu9AAXbvwAF28AABdw7AAXcPQAF3D8ABdxBAAXcRAAF3EUABdxGAAXcRwAF3EgABdxKAAXcTAAF3E0ABdxOAAXcUAAF3FEABdzMAAXczgAF3NAABdzSAAXc1QAF3NYABdzXAAXc2AAF3NkABdzbAAXc3QAF3N4ABdzfAAXc4QAF3OIABd1dAAXdXwAF3WEABd1jAAXdZgAF3WcABd1oAAXdaQAF3WoABd1sAAXdbgAF3W8ABd1wAAXdcgAF3XMABd4GAAXeKQAF3kkABd5pAAXeawAF3m0ABd5vAAXecQAF3nQABd51AAXedgAF3nkABd56AAXefAAF3n0ABd5/AAXeggAF3oMABd6EAAXehwAF3ogABd6NAAXepgAF3q8ABd6xAAXeswAF3rwABd6/AAXewgAF3sQABd8NAAXfMQAF31gABd98AAXffwAF34EABd+DAAXfhQAF34cABd+JAAXfigAF340ABd+mAAXfxwAF38kABd/LAAXfzQAF388ABd/RAAXf0wAF39UABd/XAAXf+AAF3/sABd/+AAXgAQAF4AQABeAHAAXgCgAF4A0ABeAQAAXgEgAF4I0ABeCPAAXgkQAF4JMABeCWAAXglwAF4JgABeCZAAXgmgAF4JwABeCeAAXgnwAF4KAABeCiAAXgowAF4R4ABeEgAAXhIgAF4SQABeEnAAXhKAAF4SkABeEqAAXhKwAF4S0ABeEvAAXhMAAF4TEABeEzAAXhNAAF4a8ABeGxAAXhtAAF4bYABeG5AAXhugAF4bsABeG8AAXhvQAF4b8ABeHBAAXhwgAF4cMABeHFAAXhxgAF4d8ABeHgAAXh4QAF4eMABeJeAAXiYAAF4mIABeJkAAXiZwAF4mgABeJpAAXiagAF4msABeJtAAXibwAF4nAABeJxAAXicwAF4nQABeLvAAXi8QAF4vMABeL1AAXi+AAF4vkABeL6AAXi+wAF4vwABeL+AAXjAAAF4wEABeMCAAXjBAAF4wUABeOAAAXjggAF44QABeOGAAXjiQAF44oABeOLAAXjjAAF440ABeOPAAXjkQAF45IABeOTAAXjlQAF45YABeQRAAXkEwAF5BUABeQXAAXkGgAF5BsABeQcAAXkHQAF5B4ABeQgAAXkIgAF5CMABeQkAAXkJgAF5CcABeSiAAXkpAAF5KYABeSoAAXkqwAF5KwABeStAAXkrgAF5K8ABeSxAAXkswAF5LQABeS1AAXktwAF5LgABeUBAAXlJQAF5UwABeVwAAXlcwAF5XUABeV3AAXleQAF5XsABeV9AAXlfgAF5YEABeWaAAXltwAF5bkABeW7AAXlvQAF5b8ABeXBAAXlwwAF5cUABeXiAAXl5QAF5egABeXrAAXl7gAF5fEABeX0AAXl9wAF5fkABeZ0AAXmdgAF5ngABeZ6AAXmfQAF5n4ABeZ/AAXmgAAF5oEABeaDAAXmhQAF5oYABeaHAAXmiQAF5ooABecFAAXnBwAF5wkABecLAAXnDgAF5w8ABecQAAXnEQAF5xIABecUAAXnFgAF5xcABecYAAXnGgAF5xsABeeWAAXnmAAF55oABeecAAXnnwAF56AABeehAAXnogAF56MABeelAAXnpwAF56gABeepAAXnqwAF56wABegnAAXoKQAF6CsABegtAAXoMAAF6DEABegyAAXoMwAF6DQABeg2AAXoOAAF6DkABeg6AAXoPAAF6D0ABei4AAXougAF6LwABei+AAXowQAF6MIABejDAAXoxAAF6MUABejHAAXoyQAF6MoABejLAAXozQAF6M4ABelJAAXpSwAF6U0ABelPAAXpUgAF6VMABelUAAXpVQAF6VYABelYAAXpWgAF6VsABelcAAXpXgAF6V8ABenaAAXp3AAF6d4ABengAAXp4wAF6eQABenlAAXp5gAF6ecABenpAAXp6wAF6ewABentAAXp7wAF6fAABeqDAAXqpgAF6sYABermAAXq6AAF6uoABersAAXq7gAF6vEABeryAAXq8wAF6vYABer3AAXq+QAF6voABer8AAXq/wAF6wAABesBAAXrBAAF6wUABesKAAXrIwAF6ywABesuAAXrMAAF6zkABes8AAXrPwAF60EABeuKAAXrrgAF69UABev5AAXr/AAF6/4ABewAAAXsAgAF7AQABewGAAXsBwAF7AoABewjAAXsRAAF7EYABexIAAXsSgAF7EwABexOAAXsUAAF7FIABexUAAXsdQAF7HgABex7AAXsfgAF7IEABeyEAAXshwAF7IoABeyNAAXsjwAF7QoABe0MAAXtDgAF7RAABe0TAAXtFAAF7RUABe0WAAXtFwAF7RkABe0bAAXtHAAF7R0ABe0fAAXtIAAF7ZsABe2dAAXtnwAF7aEABe2kAAXtpQAF7aYABe2nAAXtqAAF7aoABe2sAAXtrQAF7a4ABe2wAAXtsQAF7iwABe4uAAXuMQAF7jMABe42AAXuNwAF7jgABe45AAXuOgAF7jwABe4+AAXuPwAF7kAABe5CAAXuQwAF7lwABe5dAAXuXgAF7mAABe7bAAXu3QAF7t8ABe7hAAXu5AAF7uUABe7mAAXu5wAF7ugABe7qAAXu7AAF7u0ABe7uAAXu8AAF7vEABe9sAAXvbgAF73AABe9yAAXvdQAF73YABe93AAXveAAF73kABe97AAXvfQAF734ABe9/AAXvgQAF74IABe/9AAXv/wAF8AEABfADAAXwBgAF8AcABfAIAAXwCQAF8AoABfAMAAXwDgAF8A8ABfAQAAXwEgAF8BMABfCOAAXwkAAF8JIABfCUAAXwlwAF8JgABfCZAAXwmgAF8JsABfCdAAXwnwAF8KAABfChAAXwowAF8KQABfEfAAXxIQAF8SMABfE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zAAYT9QAGE/cABhP6AAYT+wAGE/wABhP9AAYT/gAGFAAABhQCAAYUAwAGFAQABhQGAAYUBwAGFIIABhSEAAYUhgAGFIgABhSLAAYUjAAGFI0ABhSOAAYUjwAGFJEABhSTAAYUlAAGFJUABhSXAAYUmAAGFRMABhUVAAYVGAAGFRoABhUdAAYVHgAGFR8ABhUgAAYVIQAGFSMABhUlAAYVJgAGFScABhUpAAYVKgAGFb0ABhXgAAYWAAAGFiAABhYiAAYWJAAGFiYABhYoAAYWKwAGFiwABhYtAAYWMAAGFjEABhYzAAYWNAAGFjYABhY5AAYWOgAGFjsABhY+AAYWPwAGFkQABhZdAAYWZgAGFmgABhZqAAYWcwAGFnYABhZ5AAYWewAGFsQABhboAAYXDwAGFzMABhc2AAYXOAAGFzoABhc8AAYXPgAGF0AABhdBAAYXRAAGF10ABhd+AAYXgAAGF4IABheEAAYXhgAGF4gABheKAAYXjAAGF44ABhevAAYXsgAGF7UABhe4AAYXuwAGF74ABhfBAAYXxAAGF8cABhfJAAYYRAAGGEYABhhIAAYYSgAGGE0ABhhOAAYYTwAGGFAABhhRAAYYUwAGGFUABhhWAAYYVwAGGFkABhhaAAYY1QAGGNcABhjZAAYY2wAGGN4ABhjfAAYY4AAGGOEABhjiAAYY5AAGGOYABhjnAAYY6AAGGOoABhjrAAYZZgAGGWgABhlrAAYZbQAGGXAABhlxAAYZcgAGGXMABhl0AAYZdgAGGXgABhl5AAYZegAGGXwABhl9AAYZlgAGGZcABhmYAAYZmgAGGhUABhoXAAYaGQAGGhsABhoeAAYaHwAGGiAABhohAAYaIgAGGiQABhomAAYaJwAGGigABhoqAAYaKwAGGqYABhqoAAYaqgAGGqwABhqvAAYasAAGGrEABhqyAAYaswAGGrUABhq3AAYauAAGGrkABhq7AAYavAAGGzcABhs5AAYbOwAGGz0ABhtAAAYbQQAGG0IABhtDAAYbRAAGG0YABhtIAAYbSQAGG0oABhtMAAYbTQAGG8gABhvKAAYbzAAGG84ABhvRAAYb0gAGG9MABhvUAAYb1QAGG9cABhvZAAYb2gAGG9sABhvdAAYb3gAGHFkABhxbAAYcXQAGHF8ABhxiAAYcYwAGHGQABhxlAAYcZgAGHGgABhxqAAYcawAGHGwABhxuAAYcbwAGHLgABhzcAAYdAwAGHScABh0qAAYdLAAGHS4ABh0wAAYdMgAGHTQABh01AAYdOAAGHVEABh1uAAYdcAAGHXIABh10AAYddgAGHXgABh16AAYdfAAGHZkABh2cAAYdnwAGHaIABh2lAAYdqAAGHasABh2uAAYdsAAGHisABh4tAAYeLwAGHjEABh40AAYeNQAGHjYABh43AAYeOAAGHjoABh48AAYePQAGHj4ABh5AAAYeQQAGHrwABh6+AAYewAAGHsIABh7FAAYexgAGHscABh7IAAYeyQAGHssABh7NAAYezgAGHs8ABh7RAAYe0gAGH00ABh9PAAYfUQAGH1MABh9WAAYfVwAGH1gABh9ZAAYfWgAGH1wABh9eAAYfXwAGH2AABh9iAAYfYwAGH94ABh/gAAYf4gAGH+QABh/nAAYf6AAGH+kABh/qAAYf6wAGH+0ABh/vAAYf8AAGH/EABh/zAAYf9AAGIG8ABiBxAAYgcwAGIHUABiB4AAYgeQAGIHoABiB7AAYgfAAGIH4ABiCAAAYggQAGIIIABiCEAAYghQAGIQAABiECAAYhBAAGIQYABiEJAAYhCgAGIQsABiEMAAYhDQAGIQ8ABiERAAYhEgAGIRMABiEVAAYhFgAGIZEABiGTAAYhlQAGIZcABiGaAAYhmwAGIZwABiGdAAYhngAGIaAABiGiAAYhowAGIaQABiGmAAYhpwAGIjoABiJdAAYifQAGIp0ABiKfAAYioQAGIqMABiKlAAYiqAAGIqkABiKqAAYirQAGIq4ABiKwAAYisQAGIrMABiK2AAYitwAGIrgABiK7AAYivAAGIsUABiLeAAYi5wAGIukABiLrAAYi9AAGIvcABiL6AAYi/AAGI0UABiNpAAYjkAAGI7QABiO3AAYjuQAGI7sABiO9AAYjvwAGI8EABiPCAAYjxQAGI94ABiP/AAYkAQAGJAMABiQFAAYkBwAGJAkABiQLAAYkDQAGJA8ABiQwAAYkMwAGJDYABiQ5AAYkPAAGJD8ABiRCAAYkRQAGJEgABiRKAAYkxQAGJMcABiTJAAYkywAGJM4ABiTPAAYk0AAGJNEABiTSAAYk1AAGJNYABiTXAAYk2AAGJNoABiTbAAYlVgAGJVgABiVaAAYlXAAGJV8ABiVgAAYlYQAGJWIABiVjAAYlZQAGJWcABiVoAAYlaQAGJWsABiVsAAYl5wAGJekABiXsAAYl7gAGJfEABiXyAAYl8wAGJfQABiX1AAYl9wAGJfkABiX6AAYl+wAGJf0ABiX+AAYmFwAGJhgABiYZAAYmGwAGJpYABiaYAAYmmgAGJpwABiafAAYmoAAGJqEABiaiAAYmowAGJqUABianAAYmqAAGJqkABiarAAYmrAAGJycABicpAAYnKwAGJy0ABicwAAYnMQAGJzIABiczAAYnNAAGJzYABic4AAYnOQAGJzoABic8AAYnPQAGJ7gABie6AAYnvAAGJ74ABifBAAYnwgAGJ8MABifEAAYnxQAGJ8cABifJAAYnygAGJ8sABifNAAYnzgAGKEkABihLAAYoTQAGKE8ABihSAAYoUwAGKFQABihVAAYoVgAGKFgABihaAAYoWwAGKFwABiheAAYoXwAGKNoABijcAAYo3gAGKOAABijjAAYo5AAGKOUABijmAAYo5wAGKOkABijrAAYo7AAGKO0ABijvAAYo8AAGKTkABildAAYphAAGKagABimrAAYprQAGKa8ABimxAAYpswAGKbUABim2AAYpuQAGKdIABinvAAYp8QAGKfMABin1AAYp9wAGKfkABin7AAYp/QAGKhoABiodAAYqIAAGKiMABiomAAYqKQAGKiwABiovAAYqMQAGKqwABiquAAYqsAAGKrIABiq1AAYqtgAGKrcABiq4AAYquQAGKrsABiq9AAYqvgAGKr8ABirBAAYqwgAGKz0ABis/AAYrQQAGK0MABitGAAYrRwAGK0gABitJAAYrSgAGK0wABitOAAYrTwAGK1AABitSAAYrUwAGK84ABivQAAYr0gAGK9QABivXAAYr2AAGK9kABivaAAYr2wAGK90ABivfAAYr4AAGK+EABivjAAYr5AAGLF8ABixhAAYsYwAGLGUABixoAAYsaQAGLGoABixrAAYsbAAGLG4ABixwAAYscQAGLHIABix0AAYsdQAGLPAABizyAAYs9AAGLPYABiz5AAYs+gAGLPsABiz8AAYs/QAGLP8ABi0BAAYtAgAGLQMABi0FAAYtBgAGLYEABi2DAAYthQAGLYcABi2KAAYtiwAGLYwABi2NAAYtjgAGLZAABi2SAAYtkwAGLZQABi2WAAYtlwAGLhIABi4UAAYuFgAGLhgABi4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MAAZZzQAGWc4ABlnQAAZZ0QAGWkwABlpOAAZaUAAGWlIABlpVAAZaVgAGWlcABlpYAAZaWQAGWlsABlpdAAZaXgAGWl8ABlphAAZaYgAGWt0ABlrfAAZa4QAGWuMABlrmAAZa5wAGWugABlrpAAZa6gAGWuwABlruAAZa7wAGWvAABlryAAZa8wAGWzwABltgAAZbhwAGW6sABluuAAZbsAAGW7IABlu0AAZbtgAGW7gABlu5AAZbvAAGW9UABlvyAAZb9AAGW/YABlv4AAZb+gAGW/wABlv+AAZcAAAGXB0ABlwgAAZcIwAGXCYABlwpAAZcLAAGXC8ABlwyAAZcNAAGXK8ABlyxAAZctAAGXLYABly5AAZcugAGXLsABly8AAZcvQAGXL8ABlzBAAZcwgAGXMMABlzFAAZcxgAGXUEABl1DAAZdRQAGXUcABl1KAAZdSwAGXUwABl1NAAZdTgAGXVAABl1SAAZdUwAGXVQABl1WAAZdVwAGXdIABl3UAAZd1gAGXdgABl3bAAZd3AAGXd0ABl3eAAZd3wAGXeEABl3jAAZd5AAGXeUABl3nAAZd6AAGXmMABl5lAAZeaAAGXmoABl5tAAZebgAGXm8ABl5wAAZecQAGXnMABl51AAZedgAGXncABl55AAZeegAGXvUABl73AAZe+QAGXvsABl7+AAZe/wAGXwAABl8BAAZfAgAGXwQABl8GAAZfBwAGXwgABl8KAAZfCwAGX4YABl+IAAZfigAGX4wABl+PAAZfkAAGX5EABl+SAAZfkwAGX5UABl+XAAZfmAAGX5kABl+bAAZfnAAGYBcABmAZAAZgGwAGYB0ABmAgAAZgIQAGYCIABmAjAAZgJAAGYCYABmAoAAZgKQAGYCoABmAsAAZgLQAGYMAABmDjAAZhAwAGYSMABmElAAZhJwAGYSkABmErAAZhLgAGYS8ABmEwAAZhMwAGYTQABmE2AAZhNwAGYToABmE9AAZhPgAGYT8ABmFCAAZhQwAGYUgABmFhAAZhagAGYWwABmFuAAZhdwAGYXoABmF9AAZhfwAGYcgABmHsAAZiEwAGYjcABmI6AAZiPAAGYj4ABmJAAAZiQgAGYkQABmJFAAZiSAAGYmEABmKCAAZihAAGYoYABmKIAAZiigAGYowABmKOAAZikAAGYpIABmKzAAZitgAGYrkABmK8AAZivwAGYsIABmLFAAZiyAAGYssABmLNAAZjSAAGY0oABmNMAAZjTgAGY1EABmNSAAZjUwAGY1QABmNVAAZjVwAGY1kABmNaAAZjWwAGY10ABmNeAAZj2QAGY9sABmPdAAZj3wAGY+IABmPjAAZj5AAGY+UABmPmAAZj6AAGY+oABmPrAAZj7AAGY+4ABmPvAAZkagAGZGwABmRvAAZkcQAGZHQABmR1AAZkdgAGZHcABmR4AAZkegAGZHwABmR9AAZkfgAGZIAABmSBAAZkmgAGZJsABmScAAZkngAGZRkABmUbAAZlHQAGZR8ABmUiAAZlIwAGZSQABmUlAAZlJgAGZSgABmUqAAZlKwAGZSwABmUuAAZlLwAGZaoABmWsAAZlrgAGZbAABmWzAAZltAAGZbUABmW2AAZltwAGZbkABmW7AAZlvAAGZb0ABmW/AAZlwAAGZjsABmY9AAZmPwAGZkEABmZEAAZmRQAGZkYABmZHAAZmSAAGZkoABmZMAAZmTQAGZk4ABmZQAAZmUQAGZswABmbOAAZm0AAGZtIABmbVAAZm1gAGZtcABmbYAAZm2QAGZtsABmbdAAZm3gAGZt8ABmbhAAZm4gAGZ10ABmdfAAZnYQAGZ2MABmdmAAZnZwAGZ2gABmdpAAZnagAGZ2wABmduAAZnbwAGZ3AABmdyAAZncwAGZ7wABmfgAAZoBwAGaCsABmguAAZoMAAGaDIABmg0AAZoNgAGaDgABmg5AAZoPAAGaFUABmhyAAZodAAGaHYABmh4AAZoegAGaHwABmh+AAZogAAGaJ0ABmigAAZoowAGaKYABmipAAZorAAGaK8ABmiyAAZotAAGaS8ABmkxAAZpMwAGaTUABmk4AAZpOQAGaToABmk7AAZpPAAGaT4ABmlAAAZpQQAGaUIABmlEAAZpRQAGacAABmnCAAZpxQAGaccABmnKAAZpywAGacwABmnNAAZpzgAGadAABmnSAAZp0wAGadQABmnWAAZp1wAGalIABmpUAAZqVgAGalgABmpbAAZqXAAGal0ABmpeAAZqXwAGamEABmpjAAZqZAAGamUABmpnAAZqaAAGauMABmrlAAZq6AAGauoABmrtAAZq7gAGau8ABmrwAAZq8QAGavMABmr1AAZq9gAGavcABmr5AAZq+gAGa3UABmt3AAZreQAGa3sABmt+AAZrfwAGa4AABmuBAAZrggAGa4QABmuGAAZrhwAGa4gABmuKAAZriwAGbAYABmwIAAZsCgAGbAwABmwPAAZsEAAGbBEABmwSAAZsEwAGbBUABmwXAAZsGAAGbBkABmwbAAZsHAAGbJcABmyZAAZsnAAGbJ4ABmyhAAZsogAGbKMABmykAAZspQAGbKcABmypAAZsqgAGbKsABmytAAZsrgAGbUEABm1kAAZthAAGbaQABm2mAAZtqAAGbaoABm2sAAZtrwAGbbAABm2xAAZttAAGbbUABm23AAZtuAAGbbsABm2+AAZtvwAGbcAABm3DAAZtxAAGbckABm3iAAZt6wAGbe0ABm3vAAZt+AAGbfsABm3+AAZuAAAGbkkABm5tAAZulAAGbrgABm67AAZuvQAGbr8ABm7BAAZuwwAGbsUABm7GAAZuyQAGbuIABm8DAAZvBQAGbwcABm8JAAZvCwAGbw0ABm8PAAZvEQAGbxMABm80AAZvNwAGbzoABm89AAZvQAAGb0MABm9GAAZvSQAGb0wABm9OAAZvyQAGb8sABm/NAAZvzwAGb9IABm/TAAZv1AAGb9UABm/WAAZv2AAGb9oABm/bAAZv3AAGb94ABm/fAAZwWgAGcFwABnBeAAZwYAAGcGMABnBkAAZwZQAGcGYABnBnAAZwaQAGcGsABnBsAAZwbQAGcG8ABnBwAAZw6wAGcO0ABnDwAAZw8gAGcPUABnD2AAZw9wAGcPgABnD5AAZw+wAGcP0ABnD+AAZw/wAGcQEABnECAAZxGwAGcRwABnEdAAZxHwAGcZoABnGcAAZxngAGcaAABnGjAAZxpAAGcaUABnGmAAZxpwAGcakABnGrAAZxrAAGca0ABnGvAAZxsAAGcisABnItAAZyLwAGcjEABnI0AAZyNQAGcjYABnI3AAZyOAAGcjoABnI8AAZyPQAGcj4ABnJAAAZyQQAGcrwABnK+AAZywAAGcsIABnLFAAZyxgAGcscABnLIAAZyyQAGcssABnLNAAZyzgAGcs8ABnLRAAZy0gAGc00ABnNPAAZzUQAGc1MABnNWAAZzVwAGc1gABnNZAAZzWgAGc1wABnNeAAZzXwAGc2AABnNiAAZzYwAGc94ABnPgAAZz4gAGc+QABnPnAAZz6AAGc+kABnPqAAZz6wAGc+0ABnPvAAZz8AAGc/EABnP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UAAaGVQAGhtAABobSAAaG1AAGhtYABobZAAaG2gAGhtsABobcAAaG3QAGht8ABobhAAaG4gAGhuMABoblAAaG5gAGh2EABodjAAaHZQAGh2cABodqAAaHawAGh2wABodtAAaHbgAGh3AABodyAAaHcwAGh3QABod2AAaHdwAGh/IABof0AAaH9gAGh/gABof7AAaH/AAGh/0ABof+AAaH/wAGiAEABogDAAaIBAAGiAUABogHAAaICAAGiIMABoiFAAaIhwAGiIkABoiMAAaIjQAGiI4ABoiPAAaIkAAGiJIABoiUAAaIlQAGiJYABoiYAAaImQAGiOIABokGAAaJLQAGiVEABolUAAaJVgAGiVgABolaAAaJXAAGiV4ABolfAAaJYgAGiXsABomYAAaJmgAGiZwABomeAAaJoAAGiaIABomkAAaJpgAGicMABonGAAaJyQAGicwABonPAAaJ0gAGidUABonYAAaJ2gAGilUABopXAAaKWQAGilsABopeAAaKXwAGimAABophAAaKYgAGimQABopmAAaKZwAGimgABopqAAaKawAGiuYABoroAAaK6gAGiuwABorvAAaK8AAGivEABoryAAaK8wAGivUABor3AAaK+AAGivkABor7AAaK/AAGi3cABot5AAaLewAGi30ABouAAAaLgQAGi4IABouDAAaLhAAGi4YABouIAAaLiQAGi4oABouMAAaLjQAGjAgABowKAAaMDAAGjA4ABowRAAaMEgAGjBMABowUAAaMFQAGjBcABowZAAaMGgAGjBsABowdAAaMHgAGjJkABoybAAaMnQAGjJ8ABoyiAAaMowAGjKQABoylAAaMpgAGjKgABoyqAAaMqwAGjKwABoyuAAaMrwAGjSoABo0sAAaNLgAGjTAABo0zAAaNNAAGjTUABo02AAaNNwAGjTkABo07AAaNPAAGjT0ABo0/AAaNQAAGjbsABo29AAaNvwAGjcEABo3EAAaNxQAGjcYABo3HAAaNyAAGjcoABo3MAAaNzQAGjc4ABo3QAAaN0QAGjmQABo6HAAaOpwAGjscABo7JAAaOywAGjs0ABo7PAAaO0gAGjtMABo7UAAaO1wAGjtgABo7aAAaO2wAGjt0ABo7gAAaO4QAGjuIABo7lAAaO5gAGjusABo8EAAaPDQAGjw8ABo8RAAaPGgAGjx0ABo8gAAaPIgAGj2sABo+PAAaPtgAGj9oABo/dAAaP3wAGj+EABo/jAAaP5QAGj+cABo/oAAaP6wAGkAQABpAlAAaQJwAGkCkABpArAAaQLQAGkC8ABpAxAAaQMwAGkDUABpBWAAaQWQAGkFwABpBfAAaQYgAGkGUABpBoAAaQawAGkG4ABpBwAAaQ6wAGkO0ABpDvAAaQ8QAGkPQABpD1AAaQ9gAGkPcABpD4AAaQ+gAGkPwABpD9AAaQ/gAGkQAABpEBAAaRfAAGkX4ABpGAAAaRggAGkYUABpGGAAaRhwAGkYgABpGJAAaRiwAGkY0ABpGOAAaRjwAGkZEABpGSAAaSDQAGkg8ABpISAAaSFAAGkhcABpIYAAaSGQAGkhoABpIbAAaSHQAGkh8ABpIgAAaSIQAGkiMABpIkAAaSPQAGkj4ABpI/AAaSQQAGkrwABpK+AAaSwAAGksIABpLFAAaSxgAGkscABpLIAAaSyQAGkssABpLNAAaSzgAGks8ABpLRAAaS0gAGk00ABpNPAAaTUQAGk1MABpNWAAaTVwAGk1gABpNZAAaTWgAGk1wABpNeAAaTXwAGk2AABpNiAAaTYwAGk94ABpPgAAaT4gAGk+QABpPnAAaT6AAGk+kABpPqAAaT6wAGk+0ABpPvAAaT8AAGk/EABpPzAAaT9AAGlG8ABpRxAAaUcwAGlHUABpR4AAaUeQAGlHoABpR7AAaUfAAGlH4ABpSAAAaUgQAGlIIABpSEAAaUhQAGlQAABpUCAAaVBAAGlQYABpUJAAaVCgAGlQsABpUMAAaVDQAGlQ8ABpURAAaVEgAGlRMABpUVAAaVFgAGlV8ABpWDAAaVqgAGlc4ABpXRAAaV0wAGldUABpXXAAaV2QAGldsABpXcAAaV3wAGlfgABpYVAAaWFwAGlhkABpYbAAaWHQAGlh8ABpYhAAaWIwAGlkAABpZDAAaWRgAGlkkABpZMAAaWTwAGllIABpZVAAaWVwAGltIABpbUAAaW1gAGltgABpbbAAaW3AAGlt0ABpbeAAaW3wAGluEABpbjAAaW5AAGluUABpbnAAaW6AAGl2MABpdlAAaXZwAGl2kABpdsAAaXbQAGl24ABpdvAAaXcAAGl3IABpd0AAaXdQAGl3YABpd4AAaXeQAGl/QABpf2AAaX+AAGl/oABpf9AAaX/gAGl/8ABpgAAAaYAQAGmAMABpgFAAaYBgAGmAcABpgJAAaYCgAGmIUABpiHAAaYigAGmIwABpiPAAaYkAAGmJEABpiSAAaYkwAGmJUABpiXAAaYmAAGmJkABpibAAaYnAAGmRcABpkZAAaZGwAGmR0ABpkgAAaZIQAGmSIABpkjAAaZJAAGmSYABpkoAAaZKQAGmSoABpksAAaZLQAGmagABpmqAAaZrAAGma4ABpmxAAaZsgAGmbMABpm0AAaZtQAGmbcABpm5AAaZugAGmbsABpm9AAaZvgAGmjkABpo7AAaaPQAGmj8ABppCAAaaQwAGmkQABppFAAaaRgAGmkgABppKAAaaSwAGmkwABppOAAaaTwAGmuIABpsFAAabJQAGm0UABptHAAabSQAGm0sABptNAAabUAAGm1EABptSAAabVQAGm1YABptYAAabWQAGm1sABpteAAabXwAGm2AABptjAAabZAAGm2kABpuCAAabiwAGm40ABpuPAAabmAAGm5sABpueAAaboAAGm+kABpwNAAacNAAGnFgABpxbAAacXQAGnF8ABpxhAAacYwAGnGUABpxmAAacaQAGnIIABpyjAAacpQAGnKcABpypAAacqwAGnK0ABpyvAAacsQAGnLMABpzUAAac1wAGnNoABpzdAAac4AAGnOMABpzmAAac6QAGnOwABpzuAAadaQAGnWsABp1tAAadbwAGnXIABp1zAAaddAAGnXUABp12AAadeAAGnXoABp17AAadfAAGnX4ABp1/AAad+gAGnfwABp3+AAaeAAAGngMABp4EAAaeBQAGngYABp4HAAaeCQAGngsABp4MAAaeDQAGng8ABp4QAAaeiwAGno0ABp6QAAaekgAGnpUABp6WAAaelwAGnpgABp6ZAAaemwAGnp0ABp6eAAaenwAGnqEABp6iAAaeuwAGnrwABp69AAaevwAGnzoABp88AAafPgAGn0AABp9DAAafRAAGn0UABp9GAAafRwAGn0kABp9LAAafTAAGn00ABp9PAAafUAAGn8sABp/NAAafzwAGn9EABp/UAAaf1QAGn9YABp/XAAaf2AAGn9oABp/cAAaf3QAGn94ABp/gAAaf4QAGoFwABqBeAAagYAAGoGIABqBlAAagZgAGoGcABqBoAAagaQAGoGsABqBtAAagbgAGoG8ABqBxAAagcgAGoO0ABqDvAAag8QAGoPMABqD2AAag9wAGoPgABqD5AAag+gAGoPwABqD+AAag/wAGoQAABqECAAahAwAGoX4ABqGAAAahggAGoYQABqGHAAahiAAGoYkABqGKAAahiwAGoY0ABqGPAAahkAAGoZEABqGTAAahlAAGod0ABqIBAAaiKAAGokwABqJPAAaiUQAGolMABqJVAAaiVwAGolkABqJaAAaiXQAGonYABqKTAAailQAGopcABqKZAAaimwAGop0ABqKfAAaioQAGor4ABqLBAAaixAAGoscABqLKAAaizQAGotAABqLTAAai1QAGo1AABqNSAAajVQAGo1cABqNaAAajWwAGo1wABqNdAAajXgAGo2AABqNiAAajYwAGo2QABqNmAAajZwAGo+IABqPkAAaj5gAGo+gABqPrAAaj7AAGo+0ABqPuAAaj7wAGo/EABqPzAAaj9AAGo/UABqP3AAaj+AAGpHMABqR1AAakdwAGpHkABqR8AAakfQAGpH4ABqR/AAakgAAGpIIABqSEAAakhQAGpIYABqSIAAakiQAGpQQABqUGAAalCQAGpQsABqUOAAalDwAGpRAABqURAAalEgAGpRQABqUWAAalFwAGpRgABqUaAAalGwAGpZYABqWYAAalmgAGpZwABqWfAAaloAAGpaEABqWiAAalowAGpaUABqWnAAalqAAGpakABqWrAAalrAAGpicABqYpAAamKwAGpi0ABqYwAAamMQAGpjIABqYzAAamNAAGpjYABqY4AAamOQAGpjoABqY8AAamPQAGprgABqa6AAamvAAGpr4ABqbBAAamwgAGpsMABqbEAAamxQAGpscABqbJAAamygAGpssABqbNAAamzgAGp2EABqeEAAanpAAGp8QABqfGAAanyAAGp8oABqfMAAanzwAGp9AABqfRAAan1AAGp9UABqfXAAan2AAGp9oABqfdAAan3gAGp98ABqfiAAan4wAGp+wABqgFAAaoDgAGqBAABqgSAAaoGwAGqB4ABqghAAaoIwAGqGwABqiQAAaotwAGqNsABqjeAAao4AAGqOIABqjkAAao5gAGqOgABqjpAAao7AAGqQUABqkmAAapKAAGqSoABqksAAapLgAGqTAABqkyAAapNAAGqTYABqlXAAapWgAGqV0ABqlgAAapYwAGqWYABqlpAAapbAAGqW8ABqlxAAap7AAGqe4ABqnwAAap8gAGqfUABqn2AAap9wAGqfgABqn5AAap+wAGqf0ABqn+AAap/wAGqgEABqoCAAaqfQAGqn8ABqqBAAaqgwAGqoYABqqHAAaqiAAGqokABqqKAAaqjAAGqo4ABqqPAAaqkAAGqpIABqqTAAarDgAGqxAABqsTAAarFQAGqxgABqsZAAarGgAGqxsABqscAAarHgAGqyAABqshAAarIgAGqyQABqslAAarPgAGqz8ABqtAAAarQgAGq70ABqu/AAarwQAGq8MABqvGAAarxwAGq8gABqvJAAarygAGq8wABqvOAAarzwAGq9AABqvSAAar0wAGrE4ABqxQAAasUgAGrFQABqxXAAasWAAGrFkABqxaAAasWwAGrF0ABqxfAAasYAAGrGEABqxjAAasZAAGrN8ABqzhAAas4wAGrOUABqzoAAas6QAGrOoABqzrAAas7AAGrO4ABqzwAAas8QAGrPIABqz0AAas9QAGrXAABq1yAAatdAAGrXYABq15AAategAGrXsABq18AAatfQAGrX8ABq2BAAatggAGrYMABq2FAAathgAGrgEABq4DAAauBQAGrgcABq4KAAauCwAGrgwABq4NAAauDgAGrhAABq4SAAauEwAGrhQABq4WAAauFwAGrmAABq6EAAauqwAGrs8ABq7SAAau1AAGrtYABq7YAAau2gAGrtwABq7dAAau4AAGrvkABq8WAAavGAAGrxoABq8cAAavHgAGryAABq8iAAavJAAGr0EABq9EAAavRwAGr0oABq9NAAavUAAGr1MABq9WAAavWAAGr9MABq/VAAav1wAGr9kABq/cAAav3QAGr94ABq/fAAav4AAGr+IABq/kAAav5QAGr+YABq/oAAav6QAGsGQABrBmAAawaAAGsGoABrBtAAawbgAGsG8ABrBwAAawcQAGsHMABrB1AAawdgAGsHcABrB5AAawegAGsPUABrD3AAaw+QAGsPsABrD+AAaw/wAGsQAABrEBAAaxAgAGsQQABrEGAAaxBwAGsQgABrEKAAaxCwAGsYYABrGIAAaxiwAGsY0ABrGQAAaxkQAGsZIABrGTAAaxlAAGsZYABrGYAAaxmQAGsZoABrGcAAaxnQAGshgABrIaAAayHAAGsh4ABrIhAAayIgAGsiMABrIkAAayJQAGsicABrI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qAAbVKwAG1S0ABtUvAAbVMAAG1TEABtUzAAbVNAAG1a8ABtWxAAbVswAG1bUABtW4AAbVuQAG1boABtW7AAbVvAAG1b4ABtXAAAbVwQAG1cIABtXEAAbVxQAG1kAABtZCAAbWRAAG1kYABtZJAAbWSgAG1ksABtZMAAbWTQAG1k8ABtZRAAbWUgAG1lMABtZVAAbWVgAG1tEABtbTAAbW1QAG1tcABtbaAAbW2wAG1twABtbdAAbW3gAG1uAABtbiAAbW4wAG1uQABtbmAAbW5wAG12IABtdkAAbXZgAG12gABtdrAAbXbAAG120ABtduAAbXbwAG13EABtdzAAbXdAAG13UABtd3AAbXeAAG18EABtflAAbYDAAG2DAABtgzAAbYNQAG2DcABtg5AAbYOwAG2D0ABtg+AAbYQQAG2FoABth3AAbYeQAG2HsABth9AAbYfwAG2IEABtiDAAbYhQAG2KIABtilAAbYqAAG2KsABtiuAAbYsQAG2LQABti3AAbYuQAG2TQABtk2AAbZOAAG2ToABtk9AAbZPgAG2T8ABtlAAAbZQQAG2UMABtlFAAbZRgAG2UcABtlJAAbZSgAG2cUABtnHAAbZyQAG2csABtnOAAbZzwAG2dAABtnRAAbZ0gAG2dQABtnWAAbZ1wAG2dgABtnaAAbZ2wAG2lYABtpYAAbaWgAG2lwABtpfAAbaYAAG2mEABtpiAAbaYwAG2mUABtpnAAbaaAAG2mkABtprAAbabAAG2ucABtrpAAba6wAG2u0ABtrwAAba8QAG2vIABtrzAAba9AAG2vYABtr4AAba+QAG2voABtr8AAba/QAG23gABtt6AAbbfAAG234ABtuBAAbbggAG24MABtuEAAbbhQAG24cABtuJAAbbigAG24sABtuNAAbbjgAG3AkABtwLAAbcDQAG3A8ABtwSAAbcEwAG3BQABtwVAAbcFgAG3BgABtwaAAbcGwAG3BwABtweAAbcHwAG3JoABtycAAbcngAG3KAABtyjAAbcpAAG3KUABtymAAbcpwAG3KkABtyrAAbcrAAG3K0ABtyvAAbcsAAG3UMABt1mAAbdhgAG3aYABt2oAAbdqgAG3awABt2uAAbdsQAG3bIABt2zAAbdtgAG3bcABt25AAbdugAG3bwABt2/AAbdwAAG3cEABt3EAAbdxQAG3coABt3jAAbd7AAG3e4ABt3wAAbd+QAG3fwABt3/AAbeAQAG3koABt5uAAbelQAG3rkABt68AAbevgAG3sAABt7CAAbexAAG3sYABt7HAAbeygAG3uMABt8EAAbfBgAG3wgABt8KAAbfDAAG3w4ABt8QAAbfEgAG3xQABt81AAbfOAAG3zsABt8+AAbfQQAG30QABt9HAAbfSgAG300ABt9PAAbfygAG38wABt/OAAbf0AAG39MABt/UAAbf1QAG39YABt/XAAbf2QAG39sABt/cAAbf3QAG398ABt/gAAbgWwAG4F0ABuBfAAbgYQAG4GQABuBlAAbgZgAG4GcABuBoAAbgagAG4GwABuBtAAbgbgAG4HAABuBxAAbg7AAG4O4ABuDxAAbg8wAG4PYABuD3AAbg+AAG4PkABuD6AAbg/AAG4P4ABuD/AAbhAAAG4QIABuEDAAbhHAAG4R0ABuEeAAbhIAAG4ZsABuGdAAbhnwAG4aEABuGkAAbhpQAG4aYABuGnAAbhqAAG4aoABuGsAAbhrQAG4a4ABuGwAAbhsQAG4iwABuIuAAbiMAAG4jIABuI1AAbiNgAG4jcABuI4AAbiOQAG4jsABuI9AAbiPgAG4j8ABuJBAAbiQgAG4r0ABuK/AAbiwQAG4sMABuLGAAbixwAG4sgABuLJAAbiygAG4swABuLOAAbizwAG4tAABuLSAAbi0wAG404ABuNQAAbjUgAG41QABuNXAAbjWAAG41kABuNaAAbjWwAG410ABuNfAAbjYAAG42EABuNjAAbjZAAG498ABuPhAAbj4wAG4+UABuPoAAbj6QAG4+oABuPrAAbj7AAG4+4ABuPwAAbj8QAG4/IABuP0AAbj9QAG5D4ABuRiAAbkiQAG5K0ABuSwAAbksgAG5LQABuS2AAbkuAAG5LoABuS7AAbkvgAG5NcABuT0AAbk9gAG5PgABuT6AAbk/AAG5P4ABuUAAAblAgAG5R8ABuUiAAblJQAG5SgABuUrAAblLgAG5TEABuU0AAblNgAG5bEABuWzAAbltQAG5bcABuW6AAbluwAG5bwABuW9AAblvgAG5cAABuXCAAblwwAG5cQABuXGAAblxwAG5kIABuZEAAbmRgAG5kgABuZLAAbmTAAG5k0ABuZOAAbmTwAG5lEABuZTAAbmVAAG5lUABuZXAAbmWAAG5tMABubVAAbm1wAG5tkABubcAAbm3QAG5t4ABubfAAbm4AAG5uIABubkAAbm5QAG5uYABuboAAbm6QAG52QABudmAAbnaAAG52oABudtAAbnbgAG528ABudwAAbncQAG53MABud1AAbndgAG53cABud5AAbnegAG5/UABuf3AAbn+QAG5/sABuf+AAbn/wAG6AAABugBAAboAgAG6AQABugGAAboBwAG6AgABugKAAboCwAG6IYABuiIAAboigAG6IwABuiPAAbokAAG6JEABuiSAAbokwAG6JUABuiXAAbomAAG6JkABuibAAbonAAG6RcABukZAAbpGwAG6R0ABukgAAbpIQAG6SIABukjAAbpJAAG6SYABukoAAbpKQAG6SoABuksAAbpLQAG6T4ABulDAAbpRgAG6UgABulNAAbpyAAG6coABunMAAbpzgAG6dEABunSAAbp0wAG6dQABunVAAbp1wAG6dkABunaAAbp2wAG6d0ABuneAAbqWQAG6lsABupdAAbqXwAG6mIABupjAAbqZAAG6mUABupmAAbqaAAG6moABuprAAbqbAAG6m4ABupvAAbq6gAG6uwABurvAAbq8QAG6vQABur1AAbq9gAG6vcABur4AAbq+gAG6vwABur9AAbq/gAG6wAABusBAAbrlAAG67cABuvXAAbr9wAG6/kABuv7AAbr/QAG6/8ABuwCAAbsAwAG7AQABuwHAAbsCAAG7AoABuwLAAbsDgAG7BEABuwSAAbsEwAG7BYABuwXAAbsHAAG7DUABuw+AAbsQAAG7EIABuxLAAbsTgAG7FEABuxTAAbsnAAG7MAABuznAAbtCwAG7Q4ABu0QAAbtEgAG7RQABu0WAAbtGAAG7RkABu0cAAbtNQAG7VYABu1YAAbtWgAG7VwABu1eAAbtYAAG7WIABu1kAAbtZgAG7YcABu2KAAbtjQAG7ZAABu2TAAbtlgAG7ZkABu2cAAbtnwAG7aEABu4cAAbuHgAG7iAABu4iAAbuJQAG7iYABu4nAAbuKAAG7ikABu4rAAbuLQAG7i4ABu4vAAbuMQAG7jIABu6tAAburwAG7rEABu6zAAbutgAG7rcABu64AAbuuQAG7roABu68AAbuvgAG7r8ABu7AAAbuwgAG7sMABu8+AAbvQAAG70MABu9FAAbvSAAG70kABu9KAAbvSwAG70wABu9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LAAcbRgAHG0gABxtKAAcbTAAHG08ABxtQAAcbUQAHG1IABxtTAAcbVQAHG1cABxtYAAcbWQAHG1sABxtcAAcb1wAHG9kABxvbAAcb3QAHG+AABxvhAAcb4gAHG+MABxvkAAcb5gAHG+gABxvpAAcb6gAHG+wABxvtAAccaAAHHGoABxxsAAccbgAHHHEABxxyAAcccwAHHHQABxx1AAccdwAHHHkABxx6AAccewAHHH0ABxx+AAcc+QAHHPsABxz+AAcdAAAHHQMABx0EAAcdBQAHHQYABx0HAAcdCQAHHQsABx0MAAcdDQAHHQ8ABx0QAAcdiwAHHY0ABx2PAAcdkQAHHZQABx2VAAcdlgAHHZcABx2YAAcdmgAHHZwABx2dAAcdngAHHaAABx2hAAceHAAHHh4ABx4gAAceIgAHHiUABx4mAAceJwAHHigABx4pAAceKwAHHi0ABx4uAAceLwAHHjEABx4yAAcerQAHHq8ABx6xAAceswAHHrYABx63AAceuAAHHrkABx66AAcevAAHHr4ABx6/AAcewAAHHsIABx7DAAcfVgAHH3kABx+ZAAcfuQAHH7sABx+9AAcfvwAHH8EABx/EAAcfxQAHH8YABx/JAAcfygAHH8wABx/NAAcfzwAHH9IABx/TAAcf1AAHH9cABx/YAAcf3QAHH/YABx//AAcgAQAHIAMAByAMAAcgDwAHIBIAByAUAAcgXQAHIIEAByCoAAcgzAAHIM8AByDRAAcg0wAHINUAByDXAAcg2QAHINoAByDdAAcg9gAHIRcAByEZAAchGwAHIR0AByEfAAchIQAHISMAByElAAchJwAHIUgAByFLAAchTgAHIVEAByFUAAchVwAHIVoAByFdAAchYAAHIWIAByHdAAch3wAHIeEAByHjAAch5gAHIecAByHoAAch6QAHIeoAByHsAAch7gAHIe8AByHwAAch8gAHIfMAByJuAAcicAAHInIAByJ0AAcidwAHIngAByJ5AAciegAHInsAByJ9AAcifwAHIoAAByKBAAcigwAHIoQAByL/AAcjAQAHIwQAByMGAAcjCQAHIwoAByMLAAcjDAAHIw0AByMPAAcjEQAHIxIAByMTAAcjFQAHIxYAByMvAAcjMAAHIzEAByMzAAcjrgAHI7AAByOyAAcjtAAHI7cAByO4AAcjuQAHI7oAByO7AAcjvQAHI78AByPAAAcjwQAHI8MAByPEAAckPwAHJEEAByRDAAckRQAHJEgAByRJAAckSgAHJEsAByRMAAckTgAHJFAAByRRAAckUgAHJFQAByRVAAck0AAHJNIAByTUAAck1gAHJNkAByTaAAck2wAHJNwAByTdAAck3wAHJOEAByTiAAck4wAHJOUAByTmAAclYQAHJWMAByVlAAclZwAHJWoAByVrAAclbAAHJW0AByVuAAclcAAHJXIAByVzAAcldAAHJXYAByV3AAcl8gAHJfQAByX2AAcl+AAHJfsAByX8AAcl/QAHJf4AByX/AAcmAQAHJgMAByYEAAcmBQAHJgcAByYIAAcmUQAHJnUAByacAAcmwAAHJsMABybFAAcmxwAHJskABybLAAcmzQAHJs4ABybRAAcm6gAHJwcABycJAAcnCwAHJw0ABycPAAcnEQAHJxMABycVAAcnMgAHJzUAByc4AAcnOwAHJz4ABydBAAcnRAAHJ0cABydJAAcnxAAHJ8YAByfIAAcnygAHJ80AByfOAAcnzwAHJ9AAByfRAAcn0wAHJ9UAByfWAAcn1wAHJ9kAByfaAAcoVQAHKFcAByhZAAcoWwAHKF4AByhfAAcoYAAHKGEAByhiAAcoZAAHKGYAByhnAAcoaAAHKGoAByhrAAco5gAHKOgAByjrAAco7QAHKPAAByjxAAco8gAHKPMAByj0AAco9gAHKPgAByj5AAco+gAHKPwAByj9AAcpeAAHKXoAByl9AAcpfwAHKYIABymDAAcphAAHKYUABymGAAcpiAAHKYoABymLAAcpjAAHKY4ABymPAAcqCgAHKgwAByoOAAcqEAAHKhMAByoUAAcqFQAHKhYAByoXAAcqGQAHKhsAByocAAcqHQAHKh8AByogAAcqmwAHKp0AByqfAAcqoQAHKqQAByqlAAcqpgAHKqcAByqoAAcqqgAHKqwAByqtAAcqrgAHKrAAByqxAAcrLAAHKy4AByswAAcrMgAHKzUABys2AAcrNwAHKzgABys5AAcrOwAHKz0ABys+AAcrPwAHK0EABytCAAcrUwAHK1QABytWAAcr0QAHK9MAByvVAAcr1wAHK9oAByvbAAcr3AAHK90AByveAAcr4AAHK+IAByvjAAcr5AAHK+YAByvnAAcsYgAHLGQAByxmAAcsaAAHLGsAByxsAAcsbQAHLG4AByxvAAcscQAHLHMAByx0AAcsdQAHLHcAByx4AAcs8wAHLPUAByz4AAcs+gAHLP0AByz+AAcs/wAHLQAABy0BAActAwAHLQUABy0GAActBwAHLQkABy0KAActnQAHLcAABy3gAAcuAAAHLgIABy4EAAcuBgAHLggABy4LAAcuDAAHLg0ABy4QAAcuEQAHLhMABy4UAAcuFgAHLhkABy4aAAcuGwAHLh4ABy4fAAcuJAAHLj0ABy5GAAcuSAAHLkoABy5TAAcuVgAHLlkABy5bAAcupAAHLsgABy7vAAcvEwAHLxYABy8YAAcvGgAHLxwABy8eAAcvIAAHLyEABy8kAAcvPQAHL14ABy9gAAcvYgAHL2QABy9mAAcvaAAHL2oABy9sAAcvbgAHL48ABy+SAAcvlQAHL5gABy+bAAcvngAHL6EABy+kAAcvpwAHL6kABzAkAAcwJgAHMCgABzAqAAcwLQAHMC4ABzAvAAcwMAAHMDEABzAzAAcwNQAHMDYABzA3AAcwOQAHMDoABzC1AAcwtwAHMLkABzC7AAcwvgAHML8ABzDAAAcwwQAHMMIABzDEAAcwxgAHMMcABzDIAAcwygAHMMsABzFGAAcxSAAHMUsABzFNAAcxUAAHMVEABzFSAAcxUwAHMVQABzFWAAcxWAAHMVkABzFaAAcxXAAHMV0ABzF2AAcxdwAHMXgABzF6AAcx9QAHMfcABzH5AAcx+wAHMf4ABzH/AAcyAAAHMgEABzICAAcyBAAHMgYABzIHAAcyCAAHMgoABzILAAcyhgAHMogABzKKAAcyjAAHMo8ABzKQAAcykQAHMpIABzKTAAcylQAHMpcABzKYAAcymQAHMpsABzKcAAczFwAHMxkABzMbAAczHQAHMyAABzMhAAczIgAHMyMABzMkAAczJgAHMygABzMpAAczKgAHMywABzMtAAczqAAHM6oABzOsAAczrgAHM7EABzOyAAczswAHM7QABzO1AAcztwAHM7kABzO6AAczuwAHM70ABzO+AAc0OQAHNDsABzQ9AAc0PwAHNEIABzRDAAc0RAAHNEUABzRGAAc0SAAHNEoABzRLAAc0TAAHNE4ABzRPAAc0mAAHNLwABzTjAAc1BwAHNQoABzUMAAc1DgAHNRAABzUSAAc1FAAHNRUABzUYAAc1MQAHNU4ABzV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dAAdYHgAHWCAAB1ghAAdYnAAHWJ4AB1igAAdYogAHWKUAB1imAAdYpwAHWKgAB1ipAAdYqwAHWK0AB1iuAAdYrwAHWLEAB1iyAAdZLQAHWS8AB1kxAAdZMwAHWTYAB1k3AAdZOAAHWTkAB1k6AAdZPAAHWT4AB1k/AAdZQAAHWUIAB1lDAAdZvgAHWcAAB1nCAAdZxAAHWccAB1nIAAdZyQAHWcoAB1nLAAdZzQAHWc8AB1nQAAdZ0QAHWdMAB1nUAAdaHQAHWkEAB1poAAdajAAHWo8AB1qRAAdakwAHWpUAB1qXAAdamQAHWpoAB1qdAAdatgAHWtMAB1rVAAda1wAHWtkAB1rbAAda3QAHWt8AB1rhAAda/gAHWwEAB1sEAAdbBwAHWwoAB1sNAAdbEAAHWxMAB1sVAAdbkAAHW5IAB1uUAAdblgAHW5kAB1uaAAdbmwAHW5wAB1udAAdbnwAHW6EAB1uiAAdbowAHW6UAB1umAAdcIQAHXCMAB1wlAAdcJwAHXCoAB1wrAAdcLAAHXC0AB1wuAAdcMAAHXDIAB1wzAAdcNAAHXDYAB1w3AAdcsgAHXLQAB1y2AAdcuAAHXLsAB1y8AAdcvQAHXL4AB1y/AAdcwQAHXMMAB1zEAAdcxQAHXMcAB1zIAAddQwAHXUUAB11IAAddSgAHXU0AB11OAAddTwAHXVAAB11RAAddUwAHXVUAB11WAAddVwAHXVkAB11aAAdd1QAHXdcAB13ZAAdd2wAHXd4AB13fAAdd4AAHXeEAB13iAAdd5AAHXeYAB13nAAdd6AAHXeoAB13rAAdeZgAHXmgAB15qAAdebAAHXm8AB15wAAdecQAHXnIAB15zAAdedQAHXncAB154AAdeeQAHXnsAB158AAde9wAHXvkAB177AAde/QAHXwAAB18BAAdfAgAHXwMAB18EAAdfBgAHXwgAB18JAAdfCgAHXwwAB18NAAdfoAAHX8MAB1/jAAdgAwAHYAUAB2AHAAdgCQAHYAsAB2AOAAdgDwAHYBAAB2ATAAdgFAAHYBYAB2AXAAdgGQAHYBwAB2AdAAdgHgAHYCEAB2AiAAdgJwAHYEAAB2BJAAdgSwAHYE0AB2BWAAdgWQAHYFwAB2BeAAdgpwAHYMsAB2DyAAdhFgAHYRkAB2EbAAdhHQAHYR8AB2EhAAdhIwAHYSQAB2E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hAAeXIwAHlyUAB5cmAAeXJwAHlykAB5cqAAeXcwAHl5cAB5e+AAeX4gAHl+UAB5fnAAeX6QAHl+sAB5ftAAeX7wAHl/AAB5fzAAeYDAAHmCkAB5grAAeYLQAHmC8AB5gxAAeYMwAHmDUAB5g3AAeYVAAHmFcAB5haAAeYXQAHmGAAB5hjAAeYZgAHmGkAB5hrAAeY5gAHmOgAB5jrAAeY7QAHmPAAB5jxAAeY8gAHmPMAB5j0AAeY9gAHmPgAB5j5AAeY+gAHmPwAB5j9AAeZeAAHmXoAB5l8AAeZfgAHmYEAB5mCAAeZgwAHmYQAB5mFAAeZhwAHmYkAB5mKAAeZiwAHmY0AB5mOAAeaCQAHmgsAB5oNAAeaDwAHmhIAB5oTAAeaFAAHmhUAB5oWAAeaGAAHmhoAB5obAAeaHAAHmh4AB5ofAAeamgAHmpwAB5qfAAeaoQAHmqQAB5qlAAeapgAHmqcAB5qoAAeaqgAHmqwAB5qtAAeargAHmrAAB5qxAAebLAAHmy4AB5swAAebMgAHmzUAB5s2AAebNwAHmzgAB5s5AAebOwAHmz0AB5s+AAebPwAHm0EAB5tCAAebvQAHm78AB5vBAAebwwAHm8YAB5vHAAebyAAHm8kAB5vKAAebzAAHm84AB5vPAAeb0AAHm9IAB5vTAAecTgAHnFAAB5xSAAecVAAHnFcAB5xYAAecWQAHnFoAB5xbAAecXQAHnF8AB5xgAAecYQAHnGMAB5xkAAec9wAHnRoAB506AAedWgAHnVwAB51eAAedYAAHnWIAB51lAAedZgAHnWcAB51qAAedawAHnW0AB51uAAedcAAHnXMAB510AAeddQAHnXgAB515AAedfgAHnZcAB52gAAedogAHnaQAB52tAAedsAAHnbMAB521AAed/gAHniIAB55JAAeebQAHnnAAB55yAAeedAAHnnYAB554AAeeegAHnnsAB55+AAeelwAHnrgAB566AAeevAAHnr4AB57AAAeewgAHnsQAB57GAAeeyAAHnukAB57sAAee7wAHnvIAB571AAee+AAHnvsAB57+AAefAQAHnwMAB59+AAefgAAHn4IAB5+EAAefhwAHn4gAB5+JAAefigAHn4sAB5+NAAefjwAHn5AAB5+RAAefkwAHn5QAB6APAAegEQAHoBMAB6AVAAegGAAHoBkAB6AaAAegGwAHoBwAB6AeAAegIAAHoCEAB6AiAAegJAAHoCUAB6CgAAegogAHoKUAB6CnAAegqgAHoKsAB6CsAAegrQAHoK4AB6CwAAegsgAHoLMAB6C0AAegtgAHoLcAB6DQAAeg0QAHoNIAB6DUAAehTwAHoVEAB6FTAAehVQAHoVgAB6FZAAehWgAHoVsAB6FcAAehXgAHoWAAB6FhAAehYgAHoWQAB6FlAAeh4AAHoeIAB6HkAAeh5gAHoekAB6HqAAeh6wAHoewAB6HtAAeh7wAHofEAB6HyAAeh8wAHofUAB6H2AAeicQAHonMAB6J1AAeidwAHonoAB6J7AAeifAAHon0AB6J+AAeigAAHooIAB6KDAAeihAAHooYAB6KHAAejAgAHowQAB6MGAAejCAAHowsAB6MMAAejDQAHow4AB6MPAAejEQAHoxMAB6MUAAejFQAHoxcAB6MYAAejkwAHo5UAB6OXAAejmQAHo5wAB6OdAAejngAHo58AB6OgAAejogAHo6QAB6OlAAejpgAHo6gAB6OpAAej8gAHpBYAB6Q9AAekYQAHpGQAB6RmAAekaAAHpGoAB6RsAAekbgAHpG8AB6RyAAekiwAHpKgAB6SqAAekrAAHpK4AB6SwAAeksgAHpLQAB6S2AAek0wAHpNYAB6TZAAek3AAHpN8AB6TiAAek5QAHpOgAB6TqAAelZQAHpWcAB6VqAAelbAAHpW8AB6VwAAelcQAHpXIAB6VzAAeldQAHpXcAB6V4AAeleQAHpXsAB6V8AAel9wAHpfkAB6X7AAel/QAHpgAAB6YBAAemAgAHpgMAB6YEAAemBgAHpggAB6YJAAemCgAHpgwAB6YNAAemiAAHpooAB6aNAAemjwAHppIAB6aTAAemlAAHppUAB6aWAAemmAAHppoAB6abAAemnAAHpp4AB6afAAenGgAHpxwAB6cfAAenIQAHpyQAB6clAAenJgAHpycAB6coAAenKgAHpywAB6ctAAenLgAHpzAAB6cxAAenrAAHp64AB6ewAAensgAHp7UAB6e2AAentwAHp7gAB6e5AAenuwAHp70AB6e+AAenvwAHp8EAB6fCAAeoPQAHqD8AB6hBAAeoQwAHqEYAB6hHAAeoSAAHqEkAB6hKAAeoTAAHqE4AB6hPAAeoUAAHqFIAB6hTAAeozgAHqNAAB6j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9AAfUfwAH1IEAB9SCAAfUgwAH1IUAB9SGAAfVAQAH1QMAB9UFAAfVBwAH1QoAB9ULAAfVDAAH1Q0AB9UOAAfVEAAH1RIAB9UTAAfVFAAH1RYAB9UXAAfVkgAH1ZQAB9WWAAfVmAAH1ZsAB9WcAAfVnQAH1Z4AB9WfAAfVoQAH1aMAB9WkAAfVpQAH1acAB9WoAAfV8QAH1hUAB9Y8AAfWYAAH1mMAB9ZlAAfWZwAH1mkAB9ZrAAfWbQAH1m4AB9ZxAAfWigAH1qcAB9apAAfWqwAH1q0AB9avAAfWsQAH1rMAB9a1AAfW0gAH1tUAB9bYAAfW2wAH1t4AB9bhAAfW5AAH1ucAB9bpAAfXZAAH12YAB9doAAfXagAH120AB9duAAfXbwAH13AAB9dxAAfXcwAH13UAB9d2AAfXdwAH13kAB9d6AAfX9QAH1/cAB9f5AAfX+wAH1/4AB9f/AAfYAAAH2AEAB9gCAAfYBAAH2AYAB9gHAAfYCAAH2AoAB9gLAAfYhgAH2IgAB9iKAAfYjAAH2I8AB9iQAAfYkQAH2JIAB9iTAAfYlQAH2JcAB9iYAAfYmQAH2JsAB9icAAfZFwAH2RkAB9kcAAfZHgAH2SEAB9kiAAfZIwAH2SQAB9klAAfZJwAH2SkAB9kqAAfZKwAH2S0AB9kuAAfZqQAH2asAB9mtAAfZrwAH2bIAB9mzAAfZtAAH2bUAB9m2AAfZuAAH2boAB9m7AAfZvAAH2b4AB9m/AAfaOgAH2jwAB9o+AAfaQAAH2kMAB9pEAAfaRQAH2kYAB9pHAAfaSQAH2ksAB9pMAAfaTQAH2k8AB9pQAAfaywAH2s0AB9rPAAfa0QAH2tQAB9rVAAfa1gAH2tcAB9rYAAfa2gAH2twAB9rdAAfa3gAH2uAAB9rhAAfbdAAH25cAB9u3AAfb1wAH29kAB9vbAAfb3QAH298AB9viAAfb4wAH2+QAB9vnAAfb6AAH2+oAB9vrAAfb7gAH2/EAB9vyAAfb8wAH2/YAB9v3AAfb/AAH3BUAB9weAAfcIAAH3CIAB9wrAAfcLgAH3DEAB9wzAAfcfAAH3KAAB9zHAAfc6wAH3O4AB9zwAAfc8gAH3PQAB9z2AAfc+AAH3PkAB9z8AAfdFQAH3TYAB904AAfdOgAH3TwAB90+AAfdQAAH3UIAB91EAAfdRgAH3WcAB91qAAfdbQAH3XAAB91zAAfddgAH3XkAB918AAfdfwAH3YEAB938AAfd/gAH3gAAB94CAAfeBQAH3gYAB94HAAfeCAAH3gkAB94LAAfeDQAH3g4AB94PAAfeEQAH3hIAB96NAAfejwAH3pEAB96TAAfelgAH3pcAB96YAAfemQAH3poAB96cAAfengAH3p8AB96gAAfeogAH3qMAB98eAAffIAAH3yMAB98lAAffKAAH3ykAB98qAAffKwAH3ywAB98uAAffMAAH3zEAB98yAAffNAAH3zUAB99OAAffTwAH31AAB99SAAffzQAH388AB9/RAAff0wAH39YAB9/XAAff2AAH39kAB9/aAAff3AAH394AB9/fAAff4AAH3+IAB9/jAAfgXgAH4GAAB+BiAAfgZAAH4GcAB+BoAAfgaQAH4GoAB+BrAAfgbQAH4G8AB+BwAAfgcQAH4HMAB+B0AAfg7wAH4PEAB+DzAAfg9QAH4PgAB+D5AAfg+gAH4PsAB+D8AAfg/gAH4QAAB+EBAAfhAgAH4QQAB+EFAAfhgAAH4YIAB+GEAAfhhgAH4YkAB+GKAAfhiwAH4YwAB+GNAAfhjwAH4ZEAB+GSAAfhkwAH4ZUAB+GWAAfiEQAH4hMAB+IVAAfiFwAH4hoAB+IbAAfiHAAH4h0AB+IeAAfiIAAH4iIAB+IjAAfiJAAH4iYAB+InAAficAAH4pQAB+K7AAfi3wAH4uIAB+LkAAfi5gAH4ugAB+LqAAfi7AAH4u0AB+LwAAfjCQAH4yYAB+MoAAfjKgAH4ywAB+MuAAfjMAAH4zIAB+M0AAfjUQAH41QAB+NXAAfjWgAH410AB+NgAAfjYwAH42YAB+NoAAfj4wAH4+UAB+PnAAfj6QAH4+wAB+PtAAfj7gAH4+8AB+PwAAfj8gAH4/QAB+P1AAfj9gAH4/gAB+P5AAfkdAAH5HYAB+R5AAfkewAH5H4AB+R/AAfkgAAH5IEAB+SCAAfkhAAH5IYAB+SHAAfkiAAH5IoAB+SLAAflBgAH5QgAB+UKAAflDAAH5Q8AB+UQAAflEQAH5RIAB+UTAAflFQAH5RcAB+UYAAflGQAH5RsAB+UcAAfllwAH5ZkAB+WcAAflngAH5aEAB+WiAAflowAH5aQAB+WlAAflpwAH5akAB+WqAAflqwAH5a0AB+WuAAfmMQAH5lUAB+Z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bAAgBHQAIAR8ACAEgAAgBIQAIASMACAEkAAgBnwAIAaEACAGjAAgBpQAIAagACAGpAAgBqgAIAasACAGsAAgBrgAIAbAACAGxAAgBsgAIAbQACAG1AAgCMAAIAjIACAI0AAgCNgAIAjkACAI6AAgCOwAIAjwACAI9AAgCPwAIAkEACAJCAAgCQwAIAkUACAJGAAgCwQAIAsMACALFAAgCxwAIAsoACALLAAgCzAAIAs0ACALOAAgC0AAIAtIACALTAAgC1AAIAtYACALXAAgDUgAIA1QACANWAAgDWAAIA1sACANcAAgDXQAIA14ACANfAAgDYQAIA2MACANkAAgDZQAIA2cACANoAAgDsQAIA9UACAP8AAgEIAAIBCMACAQlAAgEJwAIBCkACAQrAAgELQAIBC4ACAQxAAgESgAIBGcACARpAAgEawAIBG0ACARvAAgEcQAIBHMACAR1AAgEkgAIBJUACASYAAgEmwAIBJ4ACAShAAgEpAAIBKcACASpAAgFJAAIBSYACAUpAAgFKwAIBS4ACAUvAAgFMAAIBTEACAUyAAgFNAAIBTYACAU3AAgFOAAIBToACAU7AAgFtgAIBbgACAW6AAgFvAAIBb8ACAXAAAgFwQAIBcIACAXDAAgFxQAIBccACAXIAAgFyQAIBcsACAXMAAgGRwAIBkkACAZLAAgGTQAIBlAACAZRAAgGUgAIBlMACAZUAAgGVgAIBlgACAZZAAgGWgAIBlwACAZdAAgG2AAIBtoACAbdAAgG3wAIBuIACAbjAAgG5AAIBuUACAbmAAgG6AAIBuoACAbrAAgG7AAIBu4ACAbvAAgHagAIB2wACAduAAgHcAAIB3MACAd0AAgHdQAIB3YACAd3AAgHeQAIB3sACAd8AAgHfQAIB38ACAeAAAgH+wAIB/0ACAf/AAgIAQAICAQACAgFAAgIBgAICAcACAgIAAgICgAICAwACAgNAAgIDgAICBAACAgRAAgIjAAICI4ACAiQAAgIkgAICJUACAiWAAgIlwAICJgACAiZAAgImwAICJ0ACAieAAgInwAICKEACAiiAAgJNQAICVgACAl4AAgJmAAICZoACAmcAAgJngAICaAACAmjAAgJpAAICaUACAmoAAgJqQAICasACAmsAAgJrgAICbEACAmyAAgJswAICbYACAm3AAgJwAAICdkACAn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DAAgbRAAIG0YACBtHAAgbwgAIG8QACBvGAAgbyAAIG8sACBvMAAgbzQAIG84ACBvPAAgb0QAIG9MACBvUAAgb1QAIG9cACBvYAAgcUwAIHFUACBxXAAgcWQAIHFwACBxdAAgcXgAIHF8ACBxgAAgcYgAIHGQACBxlAAgcZgAIHGgACBxpAAgcsgAIHNYACBz9AAgdIQAIHSQACB0mAAgdKAAIHSoACB0sAAgdLgAIHS8ACB0yAAgdSwAIHWgACB1qAAgdbAAIHW4ACB1wAAgdcgAIHXQACB12AAgdkwAIHZYACB2ZAAgdnAAIHZ8ACB2iAAgdpQAIHagACB2qAAgeJQAIHicACB4pAAgeKwAIHi4ACB4vAAgeMAAIHjEACB4yAAgeNAAIHjYACB43AAgeOAAIHjoACB47AAgetgAIHrgACB66AAgevAAIHr8ACB7AAAgewQAIHsIACB7DAAgexQAIHscACB7IAAgeyQAIHssACB7MAAgfRwAIH0kACB9LAAgfTQAIH1AACB9RAAgfUgAIH1MACB9UAAgfVgAIH1gACB9ZAAgfWgAIH1wACB9dAAgf2AAIH9oACB/dAAgf3wAIH+IACB/jAAgf5AAIH+UACB/mAAgf6AAIH+oACB/rAAgf7AAIH+4ACB/vAAggagAIIGwACCBuAAggcAAIIHMACCB0AAggdQAIIHYACCB3AAggeQAIIHsACCB8AAggfQAIIH8ACCCAAAgg+wAIIP0ACCD/AAghAQAIIQQACCEFAAghBgAIIQcACCEIAAghCgAIIQwACCENAAghDgAIIRAACCERAAghjAAIIY4ACCGQAAghkgAIIZUACCGWAAghlwAIIZgACCGZAAghmwAIIZ0ACCGeAAghnwAIIaEACCGiAAgiNQAIIlgACCJ4AAgimAAIIpoACCKcAAgingAIIqAACCKjAAgipAAIIqUACCKoAAgiqQAIIqsACCKsAAgirgAIIrEACCKyAAgiswAIIrYACCK3AAgivAAIItUACCLeAAgi4AAIIuIACCLrAAgi7gAIIvEACCLzAAgjPAAII2AACCOHAAgjqwAII64ACCOwAAgjsgAII7QACCO2AAgjuAAII7kACCO8AAgj1QAII/YACCP4AAgj+gAII/wACCP+AAgkAAAIJAIACCQEAAgkBgAIJCcACCQqAAgkLQAIJDAACCQzAAgkNgAIJDkACCQ8AAgkPwAIJEEACCS8AAgkvgAIJMAACCTCAAgkxQAIJMYACCTHAAgkyAAIJMkACCTLAAgkzQAIJM4ACCTPAAgk0QAIJNIACCVNAAglTwAIJVEACCVTAAglVgAIJVcACCVYAAglWQAIJVoACCVcAAglXgAIJV8ACCVgAAglYgAIJWMACCXeAAgl4AAIJeMACCXlAAgl6AAIJekACCXqAAgl6wAIJewACCXuAAgl8AAIJfEACCXyAAgl9AAIJfUACCYOAAgmDwAIJhAACCYSAAgmjQAIJo8ACCaRAAgmkwAIJpYACCaXAAgmmAAIJpkACCaaAAgmnAAIJp4ACCafAAgmoAAIJqIACCajAAgnHgAIJyAACCciAAgnJAAIJycACCcoAAgnKQAIJyoACCcrAAgnLQAIJy8ACCcwAAgnMQAIJzMACCc0AAgnrwAIJ7EACCezAAgntQAIJ7gACCe5AAgnugAIJ7sACCe8AAgnvgAIJ8AACCfBAAgnwgAIJ8QACCfFAAgoQAAIKEIACChEAAgoRgAIKEkACChKAAgoSwAIKEwACChNAAgoTwAIKFEACChSAAgoUwAIKFUACChWAAgo0QAIKNMACCjVAAgo1wAIKNoACCjbAAgo3AAIKN0ACCjeAAgo4AAIKOIACCjjAAgo5AAIKOYACCjnAAgpMAAIKVQACCl7AAgpnwAIKaIACCmkAAgppgAIKagACCmqAAgprAAIKa0ACCmwAAgpyQAIKeYACCnoAAgp6gAIKewACCnuAAgp8AAIKfIACCn0AAgqEQAIKhQACCoXAAgqGgAIKh0ACCogAAgqIwAIKiYACCooAAgqowAIKqUACCqnAAgqqQAIKqwACCqtAAgqrgAIKq8ACCqwAAgqsgAIKrQACCq1AAgqtgAIKrgACCq5AAgrNAAIKzYACCs4AAgrOgAIKz0ACCs+AAgrPwAIK0AACCtBAAgrQwAIK0UACCtGAAgrRwAIK0kACCtKAAgrxQAIK8cACCvJAAgrywAIK84ACCvPAAgr0AAIK9EACCvSAAgr1AAIK9YACCvXAAgr2AAIK9oACCvbAAgsVgAILFgACCxbAAgsXQAILGAACCxhAAgsYgAILGMACCxkAAgsZgAILGgACCxpAAgsagAILGwACCxtAAgs6AAILOoACCzsAAgs7gAILPEACCzyAAgs8wAILPQACCz1AAgs9wAILPkACCz6AAgs+wAILP0ACCz+AAgteQAILXsACC19AAgtfwAILYIACC2DAAgthAAILYUACC2GAAgtiAAILYoACC2LAAgtjAAILY4ACC2PAAguCgAILgwACC4OAAguEAAILhMACC4UAAguFQAILhYACC4XAAguGQAILhsACC4cAAguHQAILh8ACC4gAAguswAILtYACC72AAgvFgAILxgACC8aAAgvHAAILx4ACC8hAAgvIgAILyMACC8mAAgvJwAILykACC8qAAgvLQAILzAACC8xAAgvMgAILzUACC82AAgvOwAIL1QACC9dAAgvXwAIL2EACC9qAAgvbQAIL3AACC9yAAgvuwAIL98ACDAGAAgwKgAIMC0ACDAvAAgwMQAIMDMACDA1AAgwNwAIMDgACDA7AAgwVAAIMHUACDB3AAgweQAIMHsACDB9AAgwfwAIMIEACDCDAAgwhQAIMKYACDCpAAgwrAAIMK8ACDCyAAgwtQAIMLgACDC7AAgwvgAIMMAACDE7AAgxPQAIMT8ACDFBAAgxRAAIMUUACDFGAAgxRwAIMUgACDFKAAgxTAAIMU0ACDFOAAgxUAAIMVEACDHMAAgxzgAIMdAACDHSAAgx1QAIMdYACDHXAAgx2AAIMdkACDHbAAgx3QAIMd4ACDHfAAgx4QAIMeIACDJdAAgyXwAIMmIACDJkAAgyZwAIMmgACDJpAAgyagAIMmsACDJtAAgybwAIMnAACDJxAAgycwAIMnQACDKNAAgyjgAIMo8ACDKRAAgzDAAIMw4ACDMQAAgzEgAIMxUACDMWAAgzFwAIMxgACDMZAAgzGwAIMx0ACDMeAAgzHwAIMyEACDMiAAgznQAIM58ACDOhAAgzowAIM6YACDOnAAgzqAAIM6kACDOqAAgzrAAIM64ACDOvAAgzsAAIM7IACDOzAAg0LgAINDAACDQyAAg0NAAINDcACDQ4AAg0OQAINDoACDQ7AAg0PQAIND8ACDRAAAg0QQAINEMACDREAAg0vwAINMEACDTDAAg0xQAINMgACDTJAAg0ygAINMsACDTMAAg0zgAINNAACDTRAAg00gAINNQACDTVAAg1UAAINVIACDVUAAg1VgAINVkACDVaAAg1WwAINVwACDVdAAg1XwAINWEACDViAAg1YwAINWUACDVmAAg1rwAINdMACDX6AAg2HgAINiEACDYjAAg2JQAINicACDYpAAg2KwAINiwACDYvAAg2SAAINmUACDZnAAg2aQAINmsACDZtAAg2bwAINnEACDZzAAg2kAAINpMACDaWAAg2mQAINpwACDafAAg2ogAINqUACDanAAg3IgAINyQACDcmAAg3KAAINysACDcsAAg3LQAINy4ACDcvAAg3MQAINzMACDc0AAg3NQAINzcACDc4AAg3swAIN7UACDe3AAg3uQAIN7wACDe9AAg3vgAIN78ACDfAAAg3wgAIN8QACDfFAAg3xgAIN8gACDfJAAg4RAAIOEYACDhIAAg4SgAIOE0ACDhOAAg4TwAIOFAACDhRAAg4UwAIOFUACDhWAAg4VwAIOFkACDhaAAg41QAIONcACDjaAAg43AAION8ACDjgAAg44QAIOOIACDjjAAg45QAIOOcACDjoAAg46QAIOOsACDjsAAg5ZwAIOWkACDlrAAg5bQAIOXAACDlxAAg5cgAIOXMACDl0AAg5dgAIOXgACDl5AAg5egAIOXwACDl9AAg5+AAIOfoACDn8AAg5/gAIOgEACDoCAAg6AwAIOgQACDoFAAg6BwAIOgkACDoKAAg6CwAIOg0ACDoOAAg6iQAIOosACDqOAAg6kAAIOpMACDqUAAg6lQAIOpYACDqXAAg6mQAIOpsACDqcAAg6nQAIOp8ACDqgAAg6sQAIOrIACDq0AAg7LwAIOzEACDszAAg7NQAIOzgACDs5AAg7OgAIOzsACDs8AAg7PgAIO0AACDtBAAg7QgAIO0QACDtFAAg7wAAIO8IACDvEAAg7xgAIO8kACDvKAAg7ywAIO8wACDvNAAg7zwAIO9EACDvSAAg70wAIO9UACDvWAAg8UQAIPFMACDxWAAg8WAAIPFsACDxcAAg8XQAIPF4ACDxfAAg8YQAIPGMACDxkAAg8ZQAIPGcACDxoAAg8+wAIPR4ACD0+AAg9XgAIPWAACD1iAAg9ZAAIPWYACD1pAAg9agAIPWsACD1uAAg9bwAIPXEACD1yAAg9dQAIPXgACD15AAg9egAIPX0ACD1+AAg9gwAIPZwACD2lAAg9pwAIPakACD2yAAg9tQAIPbgACD26AAg+AwAIPicACD5OAAg+cgAIPnUACD53AAg+eQAIPnsACD59AAg+fwAIPoAACD6DAAg+nAAIPr0ACD6/AAg+wQAIPsMACD7FAAg+xwAIPskACD7LAAg+zQAIPu4ACD7xAAg+9AAIPvcACD76AAg+/QAIPwAACD8DAAg/BgAIPwgACD+DAAg/hQAIP4cACD+JAAg/jAAIP40ACD+OAAg/jwAIP5AACD+SAAg/lAAIP5UACD+WAAg/mAAIP5kACEAUAAhAFgAIQBgACEAaAAhAHQAIQB4ACEAfAAhAIAAIQCEACEAjAAhAJQAIQCYACEAnAAhAKQAIQCoACEClAAhApwAIQKoACECsAAhArwAIQLAACECxAAhAsgAIQLMACEC1AAhAtwAIQLgACEC5AAhAuwAIQLwACEDVAAhA1gAIQNcACEDZAAhBVAAIQVYACEFYAAhBWgAIQV0ACEFeAAhBXwAIQWAACEFhAAhBYwAIQWUACEFmAAhBZwAIQWkACEFqAAhB5QAIQecACEHpAAhB6wAIQe4ACEHvAAhB8AAIQfEACEHyAAhB9AAIQfYACEH3AAhB+AAIQfoACEH7AAhCdgAIQngACEJ6AAhCfAAIQn8ACEKAAAhCgQAIQoIACEKDAAhChQAIQocACEKIAAhCiQAIQosACEKMAAhDBwAIQwkACEMLAAhDDQAIQxAACEMRAAhDEgAIQxMACEMUAAhDFgAIQxgACEMZAAhDGgAIQxwACEMdAAhDmAAIQ5oACEOcAAhDngAIQ6EACEOiAAhDowAIQ6QACEOlAAhDpwAIQ6kACEOqAAhDqwAIQ60ACEOuAAhD9wAIRBsACERCAAhEZgAIRGkACERrAAhEbQAIRG8ACERxAAhEcwAIRHQACER3AAhEkAAIRK0ACESvAAhEsQAIRLMACES1AAhEtwAIRLkACES7AAhE2AAIRNsACETeAAhE4QAIROQACETnAAhE6gAIRO0ACETvAAhFagAIRWwACEVuAAhFcAAIRXMACEV0AAhFdQAIRXYACEV3AAhFeQAIRXsACEV8AAhFfQAIRX8ACEWAAAhF+wAIRf0ACEYAAAhGAgAIRgUACEYGAAhGBwAIRggACEYJAAhGCwAIRg0ACEYOAAhGDwAIRhEACEYSAAhGjQAIRo8ACEaRAAhGkwAIRpYACEaXAAhGmAAIRpkACEaaAAhGnAAIRp4ACEafAAhGoAAIRqIACEajAAhHHgAIRyAACEcjAAhHJQAIRygACEcpAAhHKgAIRysACEcsAAhHLgAIRzAACEcxAAhHMgAIRzQACEc1AAhHsAAIR7IACEe0AAhHtgAIR7kACEe6AAhHuwAIR7wACEe9AAhHvwAIR8EACEfCAAhHwwAIR8UACEfGAAhIQQAISEMACEhFAAhIRwAISEoACEhLAAhITAAISE0ACEhOAAhIUAAISFIACEhTAAhIVAAISFYACEhXAAhI0gAISNQACEjXAAhI2QAISNwACEjdAAhI3gAISN8ACEjgAAhI4gAISOQACEjlAAhI5gAISOgACEjpAAhJfAAISZ8ACEm/AAhJ3wAISeEACEnjAAhJ5QAISecACEnqAAhJ6wAISewACEnvAAhJ8AAISfIACEnzAAhJ9gAISfkACEn6AAhJ+wAISf4ACEn/AAhKBAAISh0ACEomAAhKKAAISioACEozAAhKNgAISjkACEo7AAhKhAAISqgACErPAAhK8wAISvYACEr4AAhK+gAISvwACEr+AAhLAAAISwEACEsEAAhLHQAISz4ACEtAAAhLQgAIS0QACEtGAAhLSAAIS0oACEtMAAhLTgAIS28ACEtyAAhLdQAIS3gACEt7AAhLfgAIS4EACEuEAAhLhwAIS4kACEwEAAhMBgAITAgACEwKAAhMDQAITA4ACEwPAAhMEAAITBEACEwTAAhMFQAITBYACEwXAAhMGQAITBoACEyVAAhMlwAITJkACEybAAhMngAITJ8ACEygAAhMoQAITKIACEykAAhMpgAITKcACEyoAAhMqgAITKsACE0mAAhNKAAITSsACE0tAAhNMAAITTEACE0yAAhNMwAITTQACE02AAhNOAAITTkACE06AAhNPAAITT0ACE1WAAhNVwAITVgACE1aAAhN1QAITdcACE3ZAAhN2wAITd4ACE3fAAhN4AAITeEACE3iAAhN5AAITeYACE3nAAhN6AAITeoACE3rAAhOZgAITmgACE5qAAhObAAITm8ACE5wAAhOcQAITnIACE5zAAhOdQAITncACE54AAhOeQAITnsACE58AAhO9wAITvkACE77AAhO/QAITwAACE8BAAhPAgAITwMACE8EAAhPBgAITwgACE8JAAhPCgAITwwACE8NAAhPiAAIT4oACE+MAAhPjgAIT5EACE+SAAhPkwAIT5QACE+VAAhPlwAIT5kACE+aAAhPmwAIT50ACE+eAAhQGQAIUBsACFAdAAhQHwAIUCIACFAjAAhQJAAIUCUACFAmAAhQKAAIUCoACFArAAhQLAAIUC4ACFAvAAhQeAAIUJwACFDDAAhQ5wAIUOoACFDsAAhQ7gAIUPAACFDyAAhQ9AAIUPUACFD4AAhREQAIUS4ACFEwAAhRMgAIUTQACFE2AAhROAAIUToACFE8AAhRWQAIUVwACFFfAAhRYgAIUWUACFFoAAhRawAIUW4ACFFwAAhR6wAIUe0ACFHvAAhR8QAIUfQACFH1AAhR9gAIUfcACFH4AAhR+gAIUfwACFH9AAhR/gAIUgAACFIBAAhSfAAIUn4ACFKAAAhSggAIUoUACFKGAAhShwAIUogACFKJAAhSiwAIUo0ACFKOAAhSjwAIUpEACFKSAAhTDQAIUw8ACFMRAAhTEwAIUxYACFMXAAhTGAAIUxkACFMaAAhTHAAIUx4ACFMfAAhTIAAIUyIACFMjAAhTngAIU6AACFOjAAhTpQAIU6gACFOpAAhTqgAIU6sACFOsAAhTrgAIU7AACFOxAAhTsgAIU7QACFO1AAhUMAAIVDIACFQ0AAhUNgAIVDkACFQ6AAhUOwAIVDwACFQ9AAhUPwAIVEEACFRCAAhUQwAIVEUACFRGAAhUwQAIVMMACFTFAAhUxwAIVMoACFTLAAhUzAAIVM0ACFTOAAhU0AAIVNIACFTTAAhU1AAIVNYACFTXAAhVUgAIVVQACFVXAAhVWQAIVVwACFVdAAhVXgAIVV8ACFVgAAhVYgAIVWQACFVlAAhVZgAIVWgACFVpAAhV/AAIVh8ACFY/AAhWXwAIVmEACFZjAAhWZQAIVmcACFZqAAhWawAIVmwACFZvAAhWcAAIVnIACFZzAAhWdgAIVnkACFZ6AAhWewAIVn4ACFZ/AAhWiAAIVqEACFaqAAhWrAAIVq4ACFa3AAhWugAIVr0ACFa/AAhXCAAIVywACFdTAAhXdwAIV3oACFd8AAhXfgAIV4AACFeCAAhXhAAIV4UACFeIAAhXoQAIV8IACFfEAAhXxgAIV8gACFfKAAhXzAAIV84ACFfQAAhX0gAIV/MACFf2AAhX+QAIV/wACFf/AAhYAgAIWAUACFgIAAhYCwAIWA0ACFiIAAhYigAIWIwACFiOAAhYkQAIWJIACFiTAAhYlAAIWJUACFiXAAhYmQAIWJoACFibAAhYnQAIWJ4ACFkZAAhZGwAIWR0ACFkfAAhZIgAIWSMACFkkAAhZJQAIWSYACFkoAAhZKgAIWSsACFksAAhZLgAIWS8ACFmqAAhZrAAIWa8ACFmxAAhZtAAIWbUACFm2AAhZtwAIWbgACFm6AAhZvAAIWb0ACFm+AAhZwAAIWcEACFnaAAhZ2wAIWdwACFneAAhaWQAIWlsACFpdAAhaXwAIWmIACFpjAAhaZAAIWmUACFpmAAhaaAAIWmoACFprAAhabAAIWm4ACFpvAAha6gAIWuwACFruAAha8AAIWvMACFr0AAha9QAIWvYACFr3AAha+QAIWvsACFr8AAha/QAIWv8ACFsAAAhbewAIW30ACFt/AAhbgQAIW4QACFuFAAhbhgAIW4cACFuIAAhbigAIW4wACFuNAAhbjgAIW5AACFuRAAhcDAAIXA4ACFwQAAhcEgAIXBUACFwWAAhcFwAIXBgACFwZAAhcGwAIXB0ACFweAAhcHwAIXCEACFwiAAhcnQAIXJ8ACFyhAAhcowAIXKYACFynAAhcqAAIXKkACFyqAAhcrAAIXK4ACFyvAAhcsAAIXLIACFyzAAhc/AAIXSAACF1HAAhdawAIXW4ACF1wAAhdcgAIXXQACF12AAhdeAAIXXkACF18AAhdlQAIXbIACF20AAhdtgAIXbgACF26AAhdvAAIXb4ACF3AAAhd3QAIXeAACF3jAAhd5gAIXekACF3sAAhd7wAIXfIACF30AAhebwAIXnEACF5zAAhedQAIXngACF55AAheegAIXnsACF58AAhefgAIXoAACF6BAAheggAIXoQACF6FAAhfAAAIXwIACF8FAAhfBwAIXwoACF8LAAhfDAAIXw0ACF8OAAhfEAAIXxIACF8TAAhfFAAIXxYACF8XAAhfkgAIX5QACF+WAAhfmAAIX5sACF+cAAhfnQAIX54ACF+fAAhfoQAIX6MACF+kAAhfpQAIX6cACF+oAAhgIwAIYCUACGAoAAhgKgAIYC0ACGAuAAhgLwAIYDAACGAxAAhgMwAIYDUACGA2AAhgNwAIYDkACGA6AAhgvQAIYOEACGEFAAhhKAAIYU8ACGFvAAhhlgAIYb0ACGHdAAhiAQAIYiUACGInAAhiKgAIYiwACGIuAAhiMAAIYjMACGI2AAhiOAAIYjoACGI9AAhiPwAIYkEACGJEAAhiRwAIYkgACGJNAAhiZgAIYmsACGJtAAhicgAIYnUACGJ3AAhiwAAIYuQACGMLAAhjLwAIYzIACGM0AAhjNgAIYzgACGM6AAhjPAAIYz0ACGNAAAhjWQAIY34ACGOAAAhjggAIY4QACGOGAAhjiAAIY4oACGOMAAhjjgAIY5AACGO1AAhjuAAIY7sACGO+AAhjwQAIY8QACGPHAAhjygAIY80ACGPQAAhj0gAIZE0ACGRPAAhkUgAIZFQACGRXAAhkWAAIZFkACGRaAAhkWwAIZF0ACGRfAAhkYAAIZGEACGRjAAhkZAAIZHUACGR2AAhkeAAIZPMACGT1AAhk9wAIZPkACGT8AAhk/QAIZP4ACGT/AAhlAAAIZQIACGUEAAhlBQAIZQYACGUIAAhlCQAIZYQACGWGAAhliQAIZYsACGWOAAhljwAIZZAACGWRAAhlkgAIZZQACGWWAAhllwAIZZgACGWaAAhlmwAIZawACGWtAAhlrwAIZioACGYsAAhmLgAIZjAACGYzAAhmNAAIZjUACGY2AAhmNwAIZjkACGY7AAhmPAAIZj0ACGY/AAhmQAAIZrsACGa9AAhmwAAIZsIACGbFAAhmxgAIZscACGbIAAhmyQAIZssACGbNAAhmzgAIZs8ACGbRAAhm0gAIZuMACGbkAAhm5gAIZ2EACGdjAAhnZQAIZ2cACGdqAAhnawAIZ2wACGdtAAhnbgAIZ3AACGdyAAhncwAIZ3QACGd2AAhndwAIZ/IACGf0AAhn9wAIZ/kACGf8AAhn/QAIZ/4ACGf/AAhoAAAIaAIACGgEAAhoBQAIaAYACGgIAAhoCQAIaCIACGgjAAhoJAAIaCYACGihAAhoowAIaKUACGinAAhoqgAIaKsACGisAAhorQAIaK4ACGiwAAhosgAIaLMACGi0AAhotgAIaLcACGkyAAhpNAAIaTcACGk5AAhpPAAIaT0ACGk+AAhpPwAIaUAACGlCAAhpRAAIaUUACGlGAAhpSAAIaUkACGlxAAhpigAIab8ACGnCAAhpxQAIacgACGnLAAhpzgAIadEACGnUAAhp1wAIadoACGndAAhp4AAIaeMACGnmAAhqGwAIah4ACGohAAhqJAAIaicACGoqAAhqLQAIajAACGozAAhqNgAIajkACGo8AAhqPwAIakIACGpEAAhqaAAIanQACGqhAAhqugAIatEACGryAAhrCQAIaykACGs2AAhrTgAIa28ACGuKAAhsHQAIbEAACGxgAAhsgAAIbIIACGyEAAhshgAIbIgACGyLAAhsjAAIbI0ACGyQAAhskQAIbJMACGyUAAhslgAIbJkACGyaAAhsmwAIbJ4ACGyfAAhspAAIbL0ACGzGAAhsyAAIbMoACGzTAAhs1gAIbNkACGzbAAhtJAAIbUgACG1vAAhtkwAIbZYACG2YAAhtmgAIbZwACG2eAAhtoAAIbaEACG2kAAhtvQAIbd4ACG3gAAht4gAIbeQACG3mAAht6AAIbeoACG3sAAht7gAIbg8ACG4SAAhuFQAIbhgACG4bAAhuHgAIbiEACG4kAAhuJwAIbikACG6kAAhupgAIbqgACG6qAAhurQAIbq4ACG6vAAhusAAIbrEACG6zAAhutQAIbrYACG63AAhuuQAIbroACG81AAhvNwAIbzkACG87AAhvPgAIbz8ACG9AAAhvQQAIb0IACG9EAAhvRgAIb0cACG9IAAhvSgAIb0sACG/GAAhvyAAIb8sACG/NAAhv0AAIb9EACG/SAAhv0wAIb9QACG/WAAhv2AAIb9kACG/aAAhv3AAIb90ACG/2AAhv9wAIb/gACG/6AAhwdQAIcHcACHB5AAhwewAIcH4ACHB/AAhwgAAIcIEACHCCAAhwhAAIcIYACHCHAAhwiAAIcIoACHCLAAhxBgAIcQgACHEKAAhxDAAIcQ8ACHEQAAhxEQAIcRIACHETAAhxFQAIcRcACHEYAAhxGQAIcRsACHEcAAhxlwAIcZkACHGbAAhxnQAIcaAACHGhAAhxogAIcaMACHGkAAhxpgAIcagACHGpAAhxqgAIcawACHGtAAhyKAAIcioACHIsAAhyLgAIcjEACHIyAAhyMwAIcjQACHI1AAhyNwAIcjkACHI6AAhyOwAIcj0ACHI+AAhyuQAIcrsACHK9AAhyvwAIcsIACHLDAAhyxAAIcsUACHLGAAhyyAAIcsoACHLLAAhyzAAIcs4ACHLPAAhzGAAIczwACHNjAAhzhwAIc4oACHOMAAhzjgAIc5AACHOSAAhzlAAIc5UACHOYAAhzsQAIc84ACHPQAAhz0gAIc9QACHPWAAhz2AAIc9oACHPcAAhz+QAIc/wACHP/AAh0AgAIdAUACHQIAAh0CwAIdA4ACHQ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jAAiXJAAIlyYACJcnAAiXogAIl6QACJemAAiXqAAIl6sACJesAAiXrQAIl64ACJevAAiXsQAIl7MACJe0AAiXtQAIl7cACJe4AAiYMwAImDUACJg3AAiYOQAImDwACJg9AAiYPgAImD8ACJhAAAiYQgAImEQACJhFAAiYRgAImEgACJhJAAiYkgAImLYACJjdAAiZAQAImQQACJkGAAiZCAAImQoACJkMAAiZDgAImQ8ACJkSAAiZKwAImUgACJlKAAiZTAAImU4ACJlQAAiZUgAImVQACJlWAAiZcwAImXYACJl5AAiZfAAImX8ACJmCAAiZhQAImYgACJmKAAiaBQAImgcACJoJAAiaCwAImg4ACJoPAAiaEAAImhEACJoSAAiaFAAImhYACJoXAAiaGAAImhoACJobAAialgAImpgACJqaAAianAAImp8ACJqgAAiaoQAImqIACJqjAAiapQAImqcACJqoAAiaqQAImqsACJqsAAibJwAImykACJsrAAibLQAImzAACJsxAAibMgAImzMACJs0AAibNgAImzgACJs5AAibOgAImzwACJs9AAibuAAIm7oACJu9AAibvwAIm8IACJvDAAibxAAIm8UACJvGAAibyAAIm8oACJvLAAibzAAIm84ACJvPAAicSgAInEwACJxOAAicUAAInFMACJxUAAicVQAInFYACJxXAAicWQAInFsACJxcAAicXQAInF8ACJxgAAic2wAInN0ACJzfAAic4QAInOQACJzlAAic5gAInOcACJzoAAic6gAInOwACJztAAic7gAInPAACJzxAAidbAAInW4ACJ1wAAidcgAInXUACJ12AAiddwAInXgACJ15AAidewAInX0ACJ1+AAidfwAInYEACJ2CAAieFQAInjgACJ5YAAieeAAInnoACJ58AAiefgAInoAACJ6DAAiehAAInoUACJ6IAAieiQAInosACJ6MAAiejgAInpEACJ6SAAiekwAInpYACJ6XAAienAAInrUACJ6+AAiewAAInsIACJ7LAAiezgAIntEACJ7TAAifHAAIn0AACJ9nAAifiwAIn44ACJ+QAAifkgAIn5QACJ+WAAifmAAIn5kACJ+cAAiftQAIn9YACJ/YAAif2gAIn9wACJ/eAAif4AAIn+IACJ/kAAif5gAIoAcACKAKAAigDQAIoBAACKATAAigFgAIoBkACKAcAAigHwAIoCEACKCcAAigngAIoKAACKCiAAigpQAIoKYACKCnAAigqAAIoKkACKCrAAigrQAIoK4ACKCvAAigsQAIoLIACKEtAAihLwAIoTEACKEzAAihNgAIoTcACKE4AAihOQAIoToACKE8AAihPgAIoT8ACKFAAAihQgAIoUMACKG+AAihwAAIocMACKHFAAihyAAIockACKHKAAihywAIocwACKHOAAih0AAIodEACKHSAAih1AAIodUACKHuAAih7wAIofAACKHyAAiibQAIom8ACKJxAAiicwAIonYACKJ3AAiieAAIonkACKJ6AAiifAAIon4ACKJ/AAiigAAIooIACKKDAAii/gAIowAACKMCAAijBAAIowcACKMIAAijCQAIowoACKMLAAijDQAIow8ACKMQAAijEQAIoxMACKMUAAijjwAIo5EACKOTAAijlQAIo5gACKOZAAijmgAIo5sACKOcAAijngAIo6AACKOhAAijogAIo6QACKOlAAikIAAIpCIACKQkAAikJgAIpCkACKQqAAikKwAIpCwACKQtAAikLwAIpDEACKQyAAikMwAIpDUACKQ2AAiksQAIpLMACKS1AAiktwAIpLoACKS7AAikvAAIpL0ACKS+AAikwAAIpMIACKTDAAikxAAIpMYACKTHAAilEAAIpTQACKVbAAilfwAIpYIACKWEAAilhgAIpYgACKWKAAiljAAIpY0ACKWQAAilqQAIpcYACKXIAAilygAIpcwACKXOAAil0AAIpdIACKXUAAil8QAIpfQACKX3AAil+gAIpf0ACKYAAAimAwAIpgYACKYIAAimgwAIpoUACKaHAAimiQAIpowACKaNAAimjgAIpo8ACKaQAAimkgAIppQACKaVAAimlgAIppgACKaZAAinFAAIpxYACKcYAAinGgAIpx0ACKceAAinHwAIpyAACKchAAinIwAIpyUACKcmAAinJwAIpykACKcqAAinpQAIp6cACKepAAinqwAIp64ACKevAAinsAAIp7EACKeyAAintAAIp7YACKe3AAinuAAIp7oACKe7AAioNgAIqDgACKg7AAioPQAIqEAACKhBAAioQgAIqEMACKhEAAioRgAIqEgACKhJAAioSgAIqEwACKhNAAioyAAIqMoACKjMAAiozgAIqNEACKjSAAio0wAIqNQACKjVAAio1wAIqNkACKjaAAio2wAIqN0ACKjeAAipWQAIqVsACKldAAipXwAIqWIACKljAAipZAAIqWUACKlmAAipaAAIqWoACKlrAAipbAAIqW4ACKlvAAip6gAIqewACKnuAAip8AAIqfMACKn0AAip9QAIqfYACKn3AAip+QAIqfsACKn8AAip/QAIqf8ACKoAAAiqkwAIqrYACKrWAAiq9gAIqvgACKr6AAiq/AAIqv4ACKsBAAirAgAIqwMACKsGAAirBwAIqwkACKsKAAirDAAIqw8ACKsQAAirEQAIqxQACKsVAAirGgAIqzMACKs8AAirPgAIq0AACKtJAAirTAAIq08ACKtRAAirmgAIq74ACKvlAAisCQAIrAwACKwOAAisEAAIrBIACKwUAAisFgAIrBcACKwaAAisMwAIrFQACKxWAAisWAAIrFoACKxcAAisXgAIrGAACKxiAAisZAAIrIUACKyIAAisiwAIrI4ACKyRAAislAAIrJcACKyaAAisnQAIrJ8ACK0aAAitHAAIrR4ACK0gAAitIwAIrSQACK0lAAitJgAIrScACK0pAAitKwAIrSwACK0tAAitLwAIrTAACK2rAAitrQAIra8ACK2xAAittAAIrbUACK22AAittwAIrbgACK26AAitvAAIrb0ACK2+AAitwAAIrcEACK48AAiuPgAIrkEACK5DAAiuRgAIrkcACK5IAAiuSQAIrkoACK5MAAiuTgAIrk8ACK5QAAiuUgAIrlMACK5sAAiubQAIrm4ACK5wAAiu6wAIru0ACK7vAAiu8QAIrvQACK71AAiu9gAIrvcACK74AAiu+gAIrvwACK79AAiu/gAIrwAACK8BAAivfAAIr34ACK+AAAivggAIr4UACK+GAAivhwAIr4gACK+JAAiviwAIr40ACK+OAAivjwAIr5EACK+SAAiwDQAIsA8ACLARAAiwEwAIsBYACLAXAAiwGAAIsBkACLAaAAiwHAAIsB4ACLAfAAiwIAAIsCIACLAjAAiwngAIsKAACLCiAAiwpAAIsKcACLCoAAiwqQAIsKoACLCrAAiwrQAIsK8ACLCwAAiwsQAIsLMACLC0AAixLwAIsTEACLEzAAixNQAIsTgACLE5AAixOgAIsTsACLE8AAixPgAIsUAACLFBAAixQgAIsUQACLFFAAixjgAIsbIACLHZAAix/QAIsgAACLICAAiyBAAIsgYACLIIAAiyCgAIsgsACLIOAAiyJwAIskQACLJGAAiySAAIskoACLJMAAiyTgAIslAACLJSAAiybwAIsnIACLJ1AAiyeAAIsnsACLJ+AAiygQAIsoQACLKGAAizAQAIswMACLMFAAizBwAIswoACLMLAAizDAAIsw0ACLMOAAizEAAIsxIACLMTAAizFAAIsxYACLMXAAizkgAIs5QACLOWAAizmAAIs5sACLOcAAiznQAIs54ACLOfAAizoQAIs6MACLOkAAizpQAIs6cACLOoAAi0IwAItCUACLQnAAi0KQAItCwACLQtAAi0LgAItC8ACLQwAAi0MgAItDQACLQ1AAi0NgAItDgACLQ5AAi0tAAItLYACLS4AAi0ugAItL0ACLS+AAi0vwAItMAACLTBAAi0wwAItMUACLTGAAi0xwAItMkACLTKAAi1RQAItUcACLVJAAi1SwAItU4ACLVPAAi1UAAItVEACLVSAAi1VAAItVYACLVXAAi1WAAItVoACLVbAAi11gAItdgACLXaAAi13AAItd8ACLXgAAi14QAIteIACLXjAAi15QAItecACLXoAAi16QAItesACLXsAAi2ZwAItmkACLZrAAi2bQAItnAACLZxAAi2cgAItnMACLZ0AAi2dgAItngACLZ5AAi2egAItnwACLZ9AAi3EAAItzMACLdTAAi3cwAIt3UACLd3AAi3eQAIt3sACLd+AAi3fwAIt4AACLeDAAi3hAAIt4YACLeHAAi3iQAIt4wACLeNAAi3jgAIt5EACLeSAAi3lwAIt7AACLe5AAi3uwAIt70ACLfGAAi3yQAIt8wACLfOAAi4FwAIuDsACLhiAAi4hgAIuIkACLiLAAi4jQAIuI8ACLiRAAi4kwAIuJQACLiXAAi4sAAIuNEACLjTAAi41QAIuNcACLjZAAi42wAIuN0ACLjfAAi44QAIuQIACLkFAAi5CAAIuQsACLkOAAi5EQAIuRQACLkXAAi5GgAIuRwACLmXAAi5mQAIuZsACLmdAAi5oAAIuaEACLmiAAi5owAIuaQACLmmAAi5qAAIuakACLmqAAi5rAAIua0ACLooAAi6KgAIuiwACLouAAi6MQAIujIACLozAAi6NAAIujUACLo3AAi6OQAIujoACLo7AAi6PQAIuj4ACLq5AAi6uwAIur4ACLrAAAi6wwAIusQACLrFAAi6xgAIuscACLrJAAi6ywAIuswACLrNAAi6zwAIutAACLrpAAi66gAIuusACLrtAAi7aAAIu2oACLtsAAi7bgAIu3EACLtyAAi7cwAIu3QACLt1AAi7dwAIu3kACLt6AAi7ewAIu30ACLt+AAi7+QAIu/sACLv9AAi7/wAIvAIACLwDAAi8BAAIvAUACLwGAAi8CAAIvAoACLwLAAi8DAAIvA4ACLwPAAi8igAIvIwACLyOAAi8kAAIvJMACLyUAAi8lQAIvJYACLyXAAi8mQAIvJsACLycAAi8nQAIvJ8ACLygAAi9GwAIvR0ACL0fAAi9IQAIvSQACL0lAAi9JgAIvScACL0oAAi9KgAIvSwACL0tAAi9LgAIvTAACL0xAAi9rAAIva4ACL2wAAi9sgAIvbUACL22AAi9twAIvbgACL25AAi9uwAIvb0ACL2+AAi9vwAIvcEACL3CAAi+CwAIvi8ACL5WAAi+egAIvn0ACL5/AAi+gQAIvoMACL6FAAi+hwAIvogACL6LAAi+pAAIvsEACL7DAAi+xQAIvscACL7JAAi+ywAIvs0ACL7PAAi+7AAIvu8ACL7yAAi+9QAIvvgACL77AAi+/gAIvwEACL8DAAi/fgAIv4AACL+CAAi/hAAIv4cACL+IAAi/iQAIv4oACL+LAAi/jQAIv48ACL+QAAi/kQAIv5MACL+UAAjADwAIwBEACMATAAjAFQAIwBgACMAZAAjAGgAIwBsACMAcAAjAHgAIwCAACMAhAAjAIgAIwCQACMAlAAjAoAAIwKIACMCkAAjApgAIwKkACMCqAAjAqwAIwKwACMCtAAjArwAIwLEACMCyAAjAswAIwLUACMC2AAjBMQAIwTMACME1AAjBNwAIwToACME7AAjBPAAIwT0ACME+AAjBQAAIwUIACMFDAAjBRAAIwUYACMFHAAjBwgAIwcQACMHGAAjByAAIwcsACMHMAAjBzQAIwc4ACMHPAAjB0QAIwdMACMHUAAjB1QAIwdcACMHYAAjCUwAIwlUACMJXAAjCWQAIwlwACMJdAAjCXgAIwl8ACMJgAAjCYgAIwmQACMJlAAjCZgAIwmgACMJpAAjC5AAIwuYACMLoAAjC6gAIwu0ACMLuAAjC7wAIwvAACMLxAAjC8wAIwvUACML2AAjC9wAIwvkACML6AAjDjQAIw7AACMPQAAjD8AAIw/IACMP0AAjD9gAIw/gACMP7AAjD/AAIw/0ACMQAAAjEAQAIxAMACMQEAAjEBgAIxAkACMQKAAjECwAIxA4ACMQPAAjEFAAIxC0ACMQ2AAjEOAAIxDoACMRDAAjERgAIxEkACMRLAAjElAAIxLgACMTfAAjFAwAIxQYACMUIAAjFCgAIxQwACMUOAAjFEAAIxREACMUUAAjFLQAIxU4ACMVQAAjFUgAIxVQACMVWAAjFWAAIxVoACMVcAAjFXgAIxX8ACMWCAAjFhQAIxYgACMWLAAjFjgAIxZEACMWUAAjFlwAIxZkACMYUAAjGFgAIxhgACMYaAAjGHQAIxh4ACMYfAAjGIAAIxiEACMYjAAjGJQAIxiYACMYnAAjGKQAIxioACMalAAjGpwAIxqkACMarAAjGrgAIxq8ACMawAAjGsQAIxrIACMa0AAjGtgAIxrcACMa4AAjGugAIxrsACMc2AAjHOAAIxzsACMc9AAjHQAAIx0EACMdCAAjHQwAIx0QACMdGAAjHSAAIx0kACMdKAAjHTAAIx00ACMdmAAjHZwAIx2gACMdqAAjH5QAIx+cACMfpAAjH6wAIx+4ACMfvAAjH8AAIx/EACMfyAAjH9AAIx/YACMf3AAjH+AAIx/oACMf7AAjIdgAIyHgACMh6AAjIfAAIyH8ACMiAAAjIgQAIyIIACMiDAAjIhQAIyIcACMiIAAjIiQAIyIsACMiMAAjJBwAIyQkACMkLAAjJDQAIyRAACMkRAAjJEgAIyRMACMkUAAjJFgAIyRgACMkZAAjJGgAIyRwACMkdAAjJmAAIyZoACMmcAAjJngAIyaEACMmiAAjJowAIyaQACMmlAAjJpwAIyakACMmqAAjJqwAIya0ACMmuAAjKKQAIyisACMotAAjKLwAIyjIACMozAAjKNAAIyjUACMo2AAjKOAAIyjoACMo7AAjKPAAIyj4ACMo/AAjKiAAIyqwACMrTAAjK9wAIyvoACMr8AAjK/gAIywAACMsCAAjLBAAIywUACMsIAAjLIQAIyz4ACMtAAAjLQgAIy0QACMtGAAjLSAAIy0oACMtMAAjLaQAIy2wACMtvAAjLcgAIy3UACMt4AAjLewAIy34ACMuAAAjL+wAIy/0ACMv/AAjMAQAIzAQACMwFAAjMBgAIzAcACMwIAAjMCgAIzAwACMwNAAjMDgAIzBAACMwRAAjMjAAIzI4ACMyQAAjMkgAIzJUACMyWAAjMlwAIzJgACMyZAAjMmwAIzJ0ACMyeAAjMnwAIzKEACMyiAAjNHQAIzR8ACM0hAAjNIwAIzSYACM0nAAjNKAAIzSkACM0qAAjNLAAIzS4ACM0vAAjNMAAIzTIACM0zAAjNrgAIzbAACM2zAAjNtQAIzbgACM25AAjNugAIzbsACM28AAjNvgAIzcAACM3BAAjNwgAIzcQACM3FAAjOQAAIzkIACM5EAAjORgAIzkkACM5KAAjOSwAIzkwACM5NAAjOTwAIzlEACM5SAAjOUwAIzlUACM5WAAjO0QAIztMACM7VAAjO1wAIztoACM7bAAjO3AAIzt0ACM7eAAjO4AAIzuIACM7jAAjO5AAIzuYACM7nAAjPYgAIz2QACM9mAAjPaAAIz2sACM9sAAjPbQAIz24ACM9vAAjPcQAIz3MACM90AAjPdQAIz3cACM94AAjQCwAI0C4ACNBOAAjQbgAI0HAACNByAAjQdAAI0HYACNB5AAjQegAI0HsACNB+AAjQfwAI0IEACNCCAAjQhAAI0IcACNCIAAjQiQAI0IwACNCNAAjQkgAI0KsACNC0AAjQtgAI0LgACNDBAAjQxAAI0McACNDJAAjREgAI0TYACNFdAAjRgQAI0YQACNGGAAjRiAAI0YoACNGMAAjRjgAI0Y8ACNGSAAjRqwAI0cwACNHOAAjR0AAI0dIACNHUAAjR1gAI0dgACNHaAAjR3AAI0f0ACNIAAAjSAwAI0gYACNIJAAjSDAAI0g8ACNISAAjSFQAI0hcACNKSAAjSlAAI0pYACNKYAAjSmwAI0pwACNKdAAjSngAI0p8ACNKhAAjSowAI0qQACNKlAAjSpwAI0qgACNMjAAjTJQAI0ycACNMpAAjTLAAI0y0ACNMuAAjTLwAI0zAACNMyAAjTNAAI0zUACNM2AAjTOAAI0zkACNO0AAjTtgAI07kACNO7AAjTvgAI078ACNPAAAjTwQAI08IACNPEAAjTxgAI08cACNPIAAjTygAI08sACNPkAAjT5QAI0+YACNPoAAjUYwAI1GUACNRnAAjUaQAI1GwACNRtAAjUbgAI1G8ACNRwAAjUcgAI1HQACNR1AAjUdgAI1HgACNR5AAjU9AAI1PYACNT4AAjU+gAI1P0ACNT+AAjU/wAI1QAACNUBAAjVAwAI1QUACNUGAAjVBwAI1QkACNUKAAjVhQAI1YcACNWJAAjViwAI1Y4ACNWPAAjVkAAI1ZEACNWSAAjVlAAI1ZYACNWXAAjVmAAI1ZoACNWbAAjWFgAI1hgACNYaAAjWHAAI1h8ACNYgAAjWIQAI1iIACNYjAAjWJQAI1icACNYoAAjWKQAI1isACNYsAAjWpwAI1qkACNarAAjWrQAI1rAACNaxAAjWsgAI1rMACNa0AAjWtgAI1rgACNa5AAjWugAI1rwACNa9AAjXBgAI1yoACNdRAAjXdQAI13gACNd6AAjXfAAI134ACNeAAAjXggAI14MACNeGAAjXnwAI17wACNe+AAjXwAAI18IACNfEAAjXxgAI18gACNfKAAjX5wAI1+oACNftAAjX8AAI1/MACNf2AAjX+QAI1/wACNf+AAjYeQAI2HsACNh9AAjYfwAI2IIACNiDAAjYhAAI2IUACNiGAAjYiAAI2IoACNiLAAjYjAAI2I4ACNiPAAjZCgAI2QwACNkOAAjZEAAI2RMACNkUAAjZFQAI2RYACNkXAAjZGQAI2RsACNkcAAjZHQAI2R8ACNkgAAjZmwAI2Z0ACNmfAAjZoQAI2aQACNmlAAjZpgAI2acACNmoAAjZqgAI2awACNmtAAjZrgAI2bAACNmxAAjaLAAI2i4ACNoxAAjaMwAI2jYACNo3AAjaOAAI2jkACNo6AAjaPAAI2j4ACNo/AAjaQAAI2kIACNpDAAjavgAI2sAACNrCAAjaxAAI2scACNrIAAjayQAI2soACNrLAAjazQAI2s8ACNrQAAja0QAI2tMACNrUAAjbTwAI21EACNtTAAjbVQAI21gACNtZAAjbWgAI21sACNtcAAjbXgAI22AACNthAAjbYgAI22QACNtlAAjb4AAI2+IACNvkAAjb5gAI2+kACNvqAAjb6wAI2+wACNvtAAjb7wAI2/EACNvyAAjb8wAI2/UACNv2AAjciQAI3KwACNzMAAjc7AAI3O4ACNzwAAjc8gAI3PQACNz3AAjc+AAI3PkACNz8AAjc/QAI3P8ACN0AAAjdAgAI3QUACN0GAAjdBwAI3QoACN0LAAjdEAAI3SkACN0yAAjdNAAI3TYACN0/AAjdQgAI3UUACN1HAAjdkAAI3bQACN3bAAjd/wAI3gIACN4EAAjeBgAI3ggACN4KAAjeDAAI3g0ACN4QAAjeKQAI3koACN5MAAjeTgAI3lAACN5SAAjeVAAI3lYACN5YAAjeWgAI3nsACN5+AAjegQAI3oQACN6HAAjeigAI3o0ACN6QAAjekwAI3pUACN8QAAjfEgAI3xQACN8WAAjfGQAI3xoACN8bAAjfHAAI3x0ACN8fAAjfIQAI3yIACN8jAAjfJQAI3yYACN+hAAjfowAI36UACN+nAAjfqgAI36sACN+sAAjfrQAI364ACN+wAAjfsgAI37MACN+0AAjftgAI37cACOAyAAjgNAAI4DcACOA5AAjgPAAI4D0ACOA+AAjgPwAI4EAACOBCAAjgRAAI4EUACOBGAAjgSAAI4EkACOBiAAjgYwAI4GQACOBmAAjg4QAI4OMACODlAAjg5wAI4OoACODrAAjg7AAI4O0ACODuAAjg8AAI4PIACODzAAjg9AAI4PYACOD3AAjhcgAI4XQACOF2AAjheAAI4XsACOF8AAjhfQAI4X4ACOF/AAjhgQAI4YMACOGEAAjhhQAI4YcACOGIAAjiAwAI4gUACOIHAAjiCQAI4gwACOINAAjiDgAI4g8ACOIQAAjiEgAI4hQACOIVAAjiFgAI4hgACOIZAAjilAAI4pYACOKYAAjimgAI4p0ACOKeAAjinwAI4qAACOKhAAjiowAI4qUACOKmAAjipwAI4qkACOKqAAjjJQAI4ycACOMpAAjjKwAI4y4ACOMvAAjjMAAI4zEACOMyAAjjNAAI4zYACOM3AAjjOAAI4zoACOM7AAjjhAAI46gACOPPAAjj8wAI4/YACOP4AAjj+gAI4/wACOP+AAjkAAAI5AEACOQEAAjkHQAI5DoACOQ8AAjkPgAI5EAACORCAAjkRAAI5EYACORIAAjkZQAI5GgACORrAAjkbgAI5HEACOR0AAjkdwAI5HoACOR8AAjk9wAI5PkACOT7AAjk/QAI5QAACOUBAAjlAgAI5QMACOUEAAjlBgAI5QgACOUJAAjlCgAI5QwACOUNAAjliAAI5YoACOWMAAjljgAI5ZEACOWSAAjlkwAI5ZQACOWVAAjllwAI5ZkACOWaAAjlmwAI5Z0ACOWeAAjmGQAI5hsACOYdAAjmHwAI5iIACOY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NAAkATwAJAFEACQBSAAkAUwAJAFUACQBWAAkA0QAJANMACQDVAAkA1wAJANoACQDbAAkA3AAJAN0ACQDeAAkA4AAJAOIACQDjAAkA5AAJAOYACQDnAAkBYgAJAWQACQFmAAkBaAAJAWsACQFsAAkBbQAJAW4ACQFvAAkBcQAJAXMACQF0AAkBdQAJAXcACQF4AAkCCwAJAi4ACQJOAAkCbgAJAnAACQJyAAkCdAAJAnYACQJ5AAkCegAJAnsACQJ+AAkCfwAJAoEACQKCAAkChQAJAogACQKJAAkCigAJAo0ACQKOAAkCkwAJAqwACQK1AAkCtwAJArkACQLCAAkCxQAJAsgACQLKAAkDEwAJAzcACQNeAAkDggAJA4UACQOHAAkDiQAJA4sACQONAAkDjwAJA5AACQOTAAkDrAAJA80ACQPPAAkD0QAJA9MACQPVAAkD1wAJA9kACQPbAAkD3QAJA/4ACQQBAAkEBAAJBAcACQQKAAkEDQAJBBAACQQTAAkEFgAJBBgACQSTAAkElQAJBJcACQSZAAkEnAAJBJ0ACQSeAAkEnwAJBKAACQSiAAkEpAAJBKUACQSmAAkEqAAJBKkACQUkAAkFJgAJBSgACQUqAAkFLQAJBS4ACQUvAAkFMAAJBTEACQUzAAkFNQAJBTYACQU3AAkFOQAJBToACQW1AAkFtwAJBboACQW8AAkFvwAJBcAACQXBAAkFwgAJBcMACQXFAAkFxwAJBcgACQXJAAkFywAJBcwACQXlAAkF5gAJBecACQXpAAkGZAAJBmYACQZoAAkGagAJBm0ACQZuAAkGbwAJBnAACQZxAAkGcwAJBnUACQZ2AAkGdwAJBnkACQZ6AAkG9QAJBvcACQb5AAkG+wAJBv4ACQb/AAkHAAAJBwEACQcCAAkHBAAJBwYACQcHAAkHCAAJBwoACQcLAAkHhgAJB4gACQeKAAkHjAAJB48ACQeQAAkHkQAJB5IACQeTAAkHlQAJB5cACQeYAAkHmQAJB5sACQecAAkIFwAJCBkACQgbAAkIHQAJCCAACQghAAkIIgAJCCMACQgkAAkIJgAJCCgACQgpAAkIKgAJCCwACQgtAAkIqAAJCKoACQisAAkIrgAJCLEACQiyAAkIswAJCLQACQi1AAkItwAJCLkACQi6AAkIuwAJCL0ACQi+AAkJBwAJCSsACQl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CAAkahAAJGoYACRqHAAkaiAAJGooACRqLAAkbBgAJGwgACRsKAAkbDAAJGw8ACRsQAAkbEQAJGxIACRsTAAkbFQAJGxcACRsYAAkbGQAJGxsACRscAAkblwAJG5kACRubAAkbnQAJG6AACRuhAAkbogAJG6MACRukAAkbpgAJG6gACRupAAkbqgAJG6wACRutAAkcKAAJHCoACRwsAAkcLgAJHDEACRwyAAkcMwAJHDQACRw1AAkcNwAJHDkACRw6AAkcOwAJHD0ACRw+AAkc0QAJHPQACR0UAAkdNAAJHTYACR04AAkdOgAJHTwACR0/AAkdQAAJHUEACR1EAAkdRQAJHUcACR1IAAkdSgAJHU0ACR1OAAkdTwAJHVIACR1TAAkdXAAJHXUACR1+AAkdgAAJHYIACR2LAAkdjgAJHZEACR2TAAkd3AAJHgAACR4nAAkeSwAJHk4ACR5QAAkeUgAJHlQACR5WAAkeWAAJHlkACR5cAAkedQAJHpYACR6YAAkemgAJHpwACR6eAAkeoAAJHqIACR6kAAkepgAJHscACR7KAAkezQAJHtAACR7TAAke1gAJHtkACR7cAAke3wAJHuEACR9cAAkfXgAJH2AACR9iAAkfZQAJH2YACR9nAAkfaAAJH2kACR9rAAkfbQAJH24ACR9vAAkfcQAJH3IACR/tAAkf7wAJH/EACR/zAAkf9gAJH/cACR/4AAkf+QAJH/oACR/8AAkf/gAJH/8ACSAAAAkgAgAJIAMACSB+AAkggAAJIIMACSCFAAkgiAAJIIkACSCKAAkgiwAJIIwACSCOAAkgkAAJIJEACSCSAAkglAAJIJUACSCuAAkgrwAJILAACSCyAAkhLQAJIS8ACSExAAkhMwAJITYACSE3AAkhOAAJITkACSE6AAkhPAAJIT4ACSE/AAkhQAAJIUIACSFDAAkhvgAJIcAACSHCAAkhxAAJIccACSHIAAkhyQAJIcoACSHLAAkhzQAJIc8ACSHQAAkh0QAJIdMACSHUAAkiTwAJIlEACSJTAAkiVQAJIlgACSJZAAkiWgAJIlsACSJcAAkiXgAJImAACSJhAAkiYgAJImQACSJlAAki4AAJIuIACSLkAAki5gAJIukACSLqAAki6wAJIuwACSLtAAki7wAJIvEACSLyAAki8wAJIvUACSL2AAkjcQAJI3MACSN1AAkjdwAJI3oACSN7AAkjfAAJI30ACSN+AAkjgAAJI4IACSODAAkjhAAJI4YACSOHAAkj0AAJI/QACSQbAAkkPwAJJEIACSREAAkkRgAJJEgACSRKAAkkTAAJJE0ACSRQAAkkaQAJJIYACSSIAAkkigAJJIwACSSOAAkkkAAJJJIACSSUAAkksQAJJLQACSS3AAkkugAJJL0ACSTAAAkkwwAJJMYACSTIAAklQwAJJUUACSVHAAklSQAJJUwACSVNAAklTgAJJU8ACSVQAAklUgAJJVQACSVVAAklVgAJJVgACSVZAAkl1AAJJdYACSXYAAkl2gAJJd0ACSXeAAkl3wAJJeAACSXhAAkl4wAJJeUACSXmAAkl5wAJJekACSXqAAkmZQAJJmcACSZpAAkmawAJJm4ACSZvAAkmcAAJJnEACSZyAAkmdAAJJnYACSZ3AAkmeAAJJnoACSZ7AAkm9gAJJvgACSb6AAkm/AAJJv8ACScAAAknAQAJJwIACScDAAknBQAJJwcACScIAAknCQAJJwsACScMAAknhwAJJ4kACSeLAAknjQAJJ5AACSeRAAknkgAJJ5MACSeUAAknlgAJJ5gACSeZAAknmgAJJ5wACSedAAkoGAAJKBoACSgcAAkoHgAJKCEACSgiAAkoIwAJKCQACSglAAkoJwAJKCkACSgqAAkoKwAJKC0ACSguAAkoqQAJKKsACSitAAkorwAJKLIACSizAAkotAAJKLUACSi2AAkouAAJKLoACSi7AAkovAAJKL4ACSi/AAkpUgAJKXUACSmVAAkptQAJKbcACSm5AAkpuwAJKb0ACSnAAAkpwQAJKcIACSnFAAkpxgAJKcgACSnJAAkpywAJKc4ACSnPAAkp0AAJKdMACSnUAAkp2QAJKfIACSn7AAkp/QAJKf8ACSoIAAkqCwAJKg4ACSoQAAkqWQAJKn0ACSqkAAkqyAAJKssACSrNAAkqzwAJKtEACSrTAAkq1QAJKtYACSrZAAkq8gAJKxMACSsVAAkrFwAJKxkACSsbAAkrHQAJKx8ACSshAAkrIwAJK0QACStHAAkrSgAJK00ACStQAAkrUwAJK1YACStZAAkrXAAJK14ACSvZAAkr2wAJK90ACSvfAAkr4gAJK+MACSvkAAkr5QAJK+YACSvoAAkr6gAJK+sACSvsAAkr7gAJK+8ACSxqAAksbAAJLG4ACSxwAAkscwAJLHQACSx1AAksdgAJLHcACSx5AAksewAJLHwACSx9AAksfwAJLIAACSz7AAks/QAJLQAACS0CAAktBQAJLQYACS0HAAktCAAJLQkACS0LAAktDQAJLQ4ACS0PAAktEQAJLRIACS0rAAktLAAJLS0ACS0vAAktqgAJLawACS2uAAktsAAJLbMACS20AAkttQAJLbYACS23AAktuQAJLbsACS28AAktvQAJLb8ACS3AAAkuOwAJLj0ACS4/AAkuQQAJLkQACS5FAAkuRgAJLkcACS5IAAkuSgAJLkwACS5NAAkuTgAJLlAACS5RAAkuzAAJLs4ACS7QAAku0gAJLtUACS7WAAku1wAJLtgACS7ZAAku2wAJLt0ACS7eAAku3wAJLuEACS7iAAkvXQAJL18ACS9hAAkvYwAJL2YACS9nAAkvaAAJL2kACS9qAAkvbAAJL24ACS9vAAkvcAAJL3IACS9zAAkv7gAJL/AACS/yAAkv9AAJL/cACS/4AAkv+QAJL/oACS/7AAkv/QAJL/8ACTAAAAkwAQAJMAMACTAEAAkwTQAJMHEACTCYAAkwvAAJML8ACTDBAAkwwwAJMMUACTDHAAkwyQAJMMoACTDNAAkw5gAJMQMACTEFAAkxBwAJMQkACTELAAkxDQAJMQ8ACTERAAkxLgAJMTEACTE0AAkxNwAJMToACTE9AAkxQAAJMUMACTFFAAkxwAAJMcIACTHFAAkxxwAJMcoACTHLAAkxzAAJMc0ACTHOAAkx0AAJMdIACTHTAAkx1AAJMdYACTHXAAkyUgAJMlQACTJWAAkyWAAJMlsACTJcAAkyXQAJMl4ACTJfAAkyYQAJMmMACTJkAAkyZQAJMmcACTJoAAky4wAJMuUACTLnAAky6QAJMuwACTLtAAky7gAJMu8ACTLwAAky8gAJMvQACTL1AAky9gAJMvgACTL5AAkzdAAJM3YACTN5AAkzewAJM34ACTN/AAkzgAAJM4EACTOCAAkzhAAJM4YACTOHAAkziAAJM4oACTOLAAk0BgAJNAgACTQKAAk0DAAJNA8ACTQQAAk0EQAJNBIACTQTAAk0FQAJNBcACTQYAAk0GQAJNBsACTQcAAk0lwAJNJkACTSbAAk0nQAJNKAACTShAAk0ogAJNKMACTSkAAk0pgAJNKgACTS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NAAlQEAAJUBMACVAWAAlQGQAJUBwACVAfAAlQIQAJUJwACVCeAAlQoQAJUKMACVCmAAlQpwAJUKgACVCpAAlQqgAJUKwACVCuAAlQrwAJULAACVCyAAlQswAJUMQACVDFAAlQxwAJUUIACVFEAAlRRgAJUUgACVFLAAlRTAAJUU0ACVFOAAlRTwAJUVEACVFTAAlRVAAJUVUACVFXAAlRWAAJUdMACVHVAAlR2AAJUdoACVHdAAlR3gAJUd8ACVHgAAlR4QAJUeMACVHlAAlR5gAJUecACVHpAAlR6gAJUfsACVH8AAlR/gAJUnkACVJ7AAlSfQAJUn8ACVKCAAlSgwAJUoQACVKFAAlShgAJUogACVKKAAlSiwAJUowACVKOAAlSjwAJUwoACVMMAAlTDwAJUxEACVMUAAlTFQAJUxYACVMXAAlTGAAJUxoACVMcAAlTHQAJUx4ACVMgAAlTIQAJUzIACVMzAAlTNQAJU7AACVOyAAlTtAAJU7YACVO5AAlTugAJU7sACVO8AAlTvQAJU78ACVPBAAlTwgAJU8MACVPFAAlTxgAJVEEACVRDAAlURgAJVEgACVRLAAlUTAAJVE0ACVROAAlUTwAJVFEACVRTAAlUVAAJVFUACVRXAAlUWAAJVHEACVRyAAlUcwAJVHUACVTwAAlU8gAJVPQACVT2AAlU+QAJVPoACVT7AAlU/AAJVP0ACVT/AAlVAQAJVQIACVUDAAlVBQAJVQYACVWBAAlVgwAJVYYACVWIAAlViwAJVYwACVWNAAlVjgAJVY8ACVWRAAlVkwAJVZQACVWVAAlVlwAJVZgACVXBAAlV2gAJVe8ACVXyAAlV9QAJVfgACVX7AAlV/gAJVhMACVYWAAlWGQAJVhwACVYfAAlWIgAJViQACVY8AAlWRAAJVlsACVbuAAlXEQAJVzEACVdRAAlXUwAJV1UACVdXAAlXWQAJV1wACVddAAlXXgAJV2EACVdiAAlXZAAJV2UACVdnAAlXagAJV2sACVdsAAlXbwAJV3AACVd5AAlXkgAJV5sACVedAAlXnwAJV6gACVerAAlXrgAJV7AACVf5AAlYHQAJWEQACVhoAAlYawAJWG0ACVhvAAlYcQAJWHMACVh1AAlYdgAJWHkACViSAAlYswAJWLUACVi3AAlYuQAJWLsACVi9AAlYvwAJWMEACVjDAAlY5AAJWOcACVjqAAlY7QAJWPAACVjzAAlY9gAJWPkACVj8AAlY/gAJWXkACVl7AAlZfQAJWX8ACVmCAAlZgwAJWYQACVmFAAlZhgAJWYgACVmKAAlZiwAJWYwACVmOAAlZjwAJWgoACVoMAAlaDgAJWhAACVoTAAlaFAAJWhUACVoWAAlaFwAJWhkACVobAAlaHAAJWh0ACVofAAlaIAAJWpsACVqdAAlaoAAJWqIACVqlAAlapgAJWqcACVqoAAlaqQAJWqsACVqtAAlargAJWq8ACVqxAAlasgAJWssACVrMAAlazQAJWs8ACVtKAAlbTAAJW04ACVtQAAlbUwAJW1QACVtVAAlbVgAJW1cACVtZAAlbWwAJW1wACVtdAAlbXwAJW2AACVvbAAlb3QAJW98ACVvhAAlb5AAJW+UACVvmAAlb5wAJW+gACVvqAAlb7AAJW+0ACVvuAAlb8AAJW/EACVxsAAlcbgAJXHAACVxyAAlcdQAJXHYACVx3AAlceAAJXHkACVx7AAlcfQAJXH4ACVx/AAlcgQAJXIIACVz9AAlc/wAJXQEACV0DAAldBgAJXQcACV0IAAldCQAJXQoACV0MAAldDgAJXQ8ACV0QAAldEgAJXRMACV2OAAldkAAJXZIACV2UAAldlwAJXZgACV2ZAAldmgAJXZsACV2dAAldnwAJXaAACV2hAAldowAJXaQACV3tAAleEQAJXjgACV5cAAleXwAJXmEACV5jAAleZQAJXmcACV5pAAleagAJXm0ACV6GAAleowAJXqUACV6nAAleqQAJXqsACV6tAAlerwAJXrEACV7OAAle0QAJXtQACV7XAAle2gAJXt0ACV7gAAle4wAJXuUACV9gAAlfYgAJX2QACV9mAAlfaQAJX2oACV9rAAlfbAAJX20ACV9vAAlfcQAJX3IACV9zAAlfdQAJX3YACV/xAAlf8wAJX/UACV/3AAlf+gAJX/sACV/8AAlf/QAJX/4ACWAAAAlgAgAJYAMACWAEAAlgBgAJYAcACWCCAAlghAAJYIYACWCIAAlgiwAJYIwACWCNAAlgjgAJYI8ACWCRAAlgkwAJYJQACWCVAAlglwAJYJgACWETAAlhFQAJYRgACWEaAAlhHQAJYR4ACWEfAAlhIAAJYSEACWEjAAlhJQAJYSYACWEnAAlhKQAJYSoACWGlAAlhpwAJYakACWGrAAlhrgAJYa8ACWGwAAlhsQAJYbIACWG0AAlhtgAJYbcACWG4AAlhugAJYbsACWI2AAliOAAJYjoACWI8AAliPwAJYkAACWJBAAliQgAJYkMACWJFAAliRwAJYkgACWJJAAliSwAJYkwACWLHAAliyQAJYssACWLNAAli0AAJYtEACWLSAAli0wAJYtQACWLWAAli2AAJYtkACWLaAAli3AAJYt0ACWNwAAljkwAJY7MACWPTAAlj1QAJY9cACWPZAAlj2wAJY94ACWPfAAlj4AAJY+MACWPkAAlj5gAJY+cACWPpAAlj7AAJY+0ACWPuAAlj8QAJY/IACWP7AAlkFAAJZB0ACWQfAAlkIQAJZCoACWQtAAlkMAAJZDIACWR7AAlknwAJZMYACWTqAAlk7QAJZO8ACWTxAAlk8wAJZPUACWT3AAlk+AAJZPsACWUUAAllNQAJZTcACWU5AAllOwAJZT0ACWU/AAllQQAJZUMACWVFAAllZgAJZWkACWVsAAllbwAJZXIACWV1AAlleAAJZXsACWV+AAllgAAJZfsACWX9AAll/wAJZgEACWYEAAlmBQAJZgYACWYHAAlmCAAJZgoACWYMAAlmDQAJZg4ACWYQAAlmEQAJZowACWaOAAlmkAAJZpIACWaVAAlmlgAJZpcACWaYAAlmmQAJZpsACWadAAlmngAJZp8ACWahAAlmogAJZx0ACWcfAAlnIgAJZyQACWcnAAlnKAAJZykACWcqAAlnKwAJZy0ACWcvAAlnMAAJZzEACWczAAlnNAAJZ00ACWdOAAlnTwAJZ1EACWfMAAlnzgAJZ9AACWfSAAln1QAJZ9YACWfXAAln2AAJZ9kACWfbAAln3QAJZ94ACWffAAln4QAJZ+IACWhdAAloXwAJaGEACWhjAAloZgAJaGcACWhoAAloaQAJaGoACWhsAAlobgAJaG8ACWhwAAlocgAJaHMACWjuAAlo8AAJaPIACWj0AAlo9wAJaPgACWj5AAlo+gAJaPsACWj9AAlo/wAJaQAACWkBAAlpAwAJaQQACWl/AAlpgQAJaYMACWmFAAlpiAAJaYkACWmKAAlpiwAJaYwACWmOAAlpkAAJaZEACWmSAAlplAAJaZUACWoQAAlqEgAJahQACWoWAAlqGQAJahoACWobAAlqHAAJah0ACWofAAlqIQAJaiIACWojAAlqJQAJaiYACWpvAAlqkwAJaroACWreAAlq4QAJauMACWrlAAlq5wAJaukACWrrAAlq7AAJau8ACWsIAAlrJQAJaycACWspAAlrKwAJay0ACWsvAAlrMQAJazMACWtQAAlrUwAJa1YACWtZAAlrXAAJa18ACWtiAAlrZQAJa2cACWviAAlr5AAJa+cACWvpAAlr7AAJa+0ACWvuAAlr7wAJa/AACWvyAAlr9AAJa/UACWv2AAlr+AAJa/kACWx0AAlsdgAJbHgACWx6AAlsfQAJbH4ACWx/AAlsgAAJbIEACWyDAAlshQAJbIYACWyHAAlsiQAJbIoACW0FAAltBwAJbQkACW0LAAltDgAJbQ8ACW0QAAltEQAJbRIACW0UAAltFgAJbRcACW0YAAltGgAJbRsACW2WAAltmAAJbZsACW2dAAltoAAJbaEACW2iAAltowAJbaQACW2mAAltqAAJbakACW2qAAltrAAJba0ACW4oAAluKgAJbiwACW4uAAluMQAJbjIACW4zAAluNAAJbjUACW43AAluOQAJbjoACW47AAluPQAJbj4ACW65AAluuwAJbr0ACW6/AAluwgAJbsMACW7EAAluxQAJbsYACW7IAAluygAJbssACW7MAAluzgAJbs8ACW9KAAlvTAAJb04ACW9QAAlvUwAJb1QACW9VAAlvVgAJb1cACW9ZAAlvWwAJb1wACW9dAAlvXwAJb2AACW/zAAlwFgAJcDYACXBWAAlwWAAJcFoACXBcAAlwXgAJcGEACXBiAAlwYwAJcGYACXBnAAlwaQAJcGoACXBtAAlwcAAJcHEACXByAAlwdQAJcHYACXB7AAlwlAAJcJ0ACXCfAAlwoQAJcKoACXCtAAlwsAAJcLIACXD7AAlxHwAJcUYACXFqAAlxbQAJcW8ACXFxAAlxcwAJcXUACXF3AAlxeAAJcXsACXGUAAlxtQAJcbcACXG5AAlxuwAJcb0ACXG/AAlxwQAJccMACXHFAAlx5gAJcekACXHsAAlx7wAJcfIACXH1AAlx+AAJcfsACXH+AAlyAAAJcnsACXJ9AAlyfwAJcoEACXKEAAlyhQAJcoYACXKHAAlyiAAJcooACXKMAAlyjQAJco4ACXKQAAlykQAJcwwACXMOAAlzEAAJcxIACXMVAAlzFgAJcxcACXMYAAlzGQAJcxsACXMdAAlzHgAJcx8ACXMhAAlzIgAJc50ACXOfAAlzogAJc6QACXOnAAlzqAAJc6kACXOqAAlzqwAJc60ACXOvAAlzsAAJc7EACXOzAAlztAAJc80ACXPOAAlzzwAJc9EACXRMAAl0TgAJdFAACXRSAAl0VQAJdFYACXRXAAl0WAAJdFkACXRbAAl0XQAJdF4ACXRfAAl0YQAJdGIACXTdAAl03wAJdOEACXTjAAl05gAJdOcACXToAAl06QAJdOoACXTsAAl07gAJdO8ACXTwAAl08gAJdPMACXVuAAl1cAAJdXIACXV0AAl1dwAJdXgACXV5AAl1egAJdXsACXV9AAl1fwAJdYAACXWBAAl1gwAJdYQACXX/AAl2AQAJdgMACXYFAAl2CAAJdgkACXYKAAl2CwAJdgwACXYOAAl2EAAJdhEACXYSAAl2FAAJdhUACXaQAAl2kgAJdpQACXaWAAl2mQAJdpoACXabAAl2nAAJdp0ACXafAAl2oQAJdqIACXajAAl2pQAJdqYACXbvAAl3EwAJdzoACXdeAAl3YQAJd2MACXdlAAl3ZwAJd2kACXdrAAl3bAAJd28ACXeIAAl3pQAJd6cACXepAAl3qwAJd60ACXevAAl3sQAJd7MACXfQAAl30wAJd9YACXfZAAl33AAJd98ACXfiAAl35QAJd+cACXhiAAl4ZAAJeGYACXhoAAl4awAJeGwACXhtAAl4bgAJeG8ACXhxAAl4cwAJeHQACXh1AAl4dwAJeHgACXjzAAl49QAJePcACXj5AAl4/AAJeP0ACXj+AAl4/wAJeQAACXkCAAl5BAAJeQUACXkGAAl5CAAJeQkACXmEAAl5hgAJeYgACXmKAAl5jQAJeY4ACXmPAAl5kAAJeZEACXmTAAl5lQAJeZYACXmXAAl5mQAJeZoACXoVAAl6FwAJehoACXocAAl6HwAJeiAACXohAAl6IgAJeiMACXolAAl6JwAJeigACXopAAl6KwAJeiwACXqnAAl6qQAJeqsACXqtAAl6sAAJerEACXqyAAl6swAJerQACXq2AAl6uAAJerkACXq6AAl6vAAJer0ACXs4AAl7OgAJezwACXs+AAl7QQAJe0IACXtDAAl7RAAJe0UACXtHAAl7SQAJe0oACXtLAAl7TQAJe04ACXvJAAl7ywAJe84ACXvQAAl70wAJe9QACXvVAAl71gAJe9cACXvZAAl72wAJe9wACXvdAAl73wAJe+AACXxzAAl8lgAJfLYACXzWAAl82AAJfNoACXzcAAl83gAJfOEACXziAAl84wAJfOYACXznAAl86QAJfOoACXzsAAl87wAJfPAACXzxAAl89AAJfPUACXz6AAl9EwAJfRwACX0eAAl9IAAJfSkACX0sAAl9LwAJfTEACX16AAl9ngAJfcUACX3pAAl97AAJfe4ACX3wAAl98gAJffQACX32AAl99wAJffoACX4TAAl+NAAJfjYACX44AAl+OgAJfjwACX4+AAl+QAAJfkIACX5EAAl+ZQAJfmgACX5rAAl+bgAJfnEACX50AAl+dwAJfnoACX59AAl+fwAJfvoACX78AAl+/gAJfwAACX8DAAl/BAAJfwUACX8GAAl/BwAJfwkACX8LAAl/DAAJfw0ACX8PAAl/EAAJf4sACX+NAAl/jwAJf5EACX+UAAl/lQAJf5YACX+XAAl/mAAJf5oACX+cAAl/nQAJf54ACX+gAAl/oQAJgBwACYAeAAmAIQAJgCMACYAmAAmAJwAJgCgACYApAAmAKgAJgCwACYAuAAmALwAJgDAACYAyAAmAMwAJgEwACYBNAAmATgAJgFAACYDLAAmAzQAJgM8ACYDRAAmA1AAJgNUACYDWAAmA1wAJgNgACYDaAAmA3AAJgN0ACYDeAAmA4AAJgOEACYFcAAmBXgAJgWAACYFiAAmBZQAJgWYACYFnAAmBaAAJgWkACYFrAAmBbQAJgW4ACYFvAAmBcQAJgXIACYHtAAmB7wAJgfEACYHzAAmB9gAJgfcACYH4AAmB+QAJgfoACYH8AAmB/gAJgf8ACYIAAAmCAgAJggMACYJ+AAmCgAAJgoIACYKEAAmChwAJgogACYKJAAmCigAJgosACYKNAAmCjwAJgpAACYKRAAmCkwAJgpQACYMPAAmDEQAJgxMACYMVAAmDGAAJgxkACYMaAAmDGwAJgxwACYMeAAmDIAAJgyEACYMiAAmDJAAJgyUACYNuAAmDkgAJg7kACYPdAAmD4AAJg+IACYPkAAmD5gAJg+gACYPqAAmD6wAJg+4ACYQHAAmEJAAJhCYACYQoAAmEKgAJhCwACYQuAAmEMAAJhDIACYRPAAmEUgAJhFUACYRYAAmEWwAJhF4ACYRhAAmEZAAJhGYACYThAAmE4wAJhOUACYTnAAmE6gAJhOsACYTsAAmE7QAJhO4ACYTwAAmE8gAJhPMACYT0AAmE9gAJhPcACYVyAAmFdAAJhXYACYV4AAmFewAJhXwACYV9AAmFfgAJhX8ACYWBAAmFgwAJhYQACYWFAAmFhwAJhYgACYYDAAmGBQAJhgcACYYJAAmGDAAJhg0ACYYOAAmGDwAJhhAACYYSAAmGFAAJhhUACYYWAAmGGAAJhhkACYaUAAmGlgAJhpkACYabAAmGngAJhp8ACYagAAmGoQAJhqIACYakAAmGpgAJhqcACYaoAAmGqgAJhqsACYcmAAmHKAAJhyoACYcsAAmHLwAJhzAACYcxAAmHMgAJhzMACYc1AAmHNwAJhzgACYc5AAmHOwAJhzwACYe3AAmHuQAJh7sACYe9AAmHwAAJh8EACYfCAAmHwwAJh8QACYfGAAmHyAAJh8kACYfKAAmHzAAJh80ACYhIAAmISgAJiEwACYhOAAmIUQAJiFIACYhTAAmIVAAJiFUACYhXAAmIWQAJiFoACYhbAAmIXQAJiF4ACYjxAAmJFAAJiTQACYlUAAmJVgAJiVgACYlaAAmJXAAJiV8ACYlgAAmJYQAJiWQACYllAAmJZwAJiWgACYlqAAmJbQAJiW4ACYlvAAmJcgAJiXMACYl4AAmJkQAJiZoACYmcAAmJngAJiacACYmqAAmJrQAJia8ACYn4AAmKHAAJikMACYpnAAmKagAJimwACYpuAAmKcAAJinIACYp0AAmKdQAJingACYqRAAmKsgAJirQACYq2AAmKuAAJiroACYq8AAmKvgAJisAACYrCAAmK4wAJiuYACYrpAAmK7AAJiu8ACYryAAmK9QAJivgACYr7AAmK/QAJi3gACYt6AAmLfAAJi34ACYuBAAmLggAJi4MACYuEAAmLhQAJi4cACYuJAAmLigAJi4sACYuNAAmLjgAJjAkACYwLAAmMDQAJjA8ACYwSAAmMEwAJjBQACYwVAAmMFgAJjBgACYwaAAmMGwAJjBwACYweAAmMHwAJjJoACYycAAmMnwAJjKEACYykAAmMpQAJjKYACYynAAmMqAAJjKoACYysAAmMrQAJjK4ACYywAAmMsQAJjMoACYzLAAmMzAAJjM4ACY1JAAmNSwAJjU0ACY1PAAmNUgAJjVMACY1UAAmNVQAJjVYACY1YAAmNWgAJjVsACY1cAAmNXgAJjV8ACY3aAAmN3AAJjd4ACY3gAAmN4wAJjeQACY3lAAmN5gAJjecACY3pAAmN6wAJjewACY3tAAmN7wAJjfAACY5rAAmObQAJjm8ACY5xAAmOdAAJjnUACY52AAmOdwAJjngACY56AAmOfAAJjn0ACY5+AAmOgAAJjoEACY78AAmO/gAJjwAACY8CAAmPBQAJjwYACY8HAAmPCAAJjwkACY8LAAmPDQAJjw4ACY8PAAmPEQAJjxIACY+NAAmPjwAJj5EACY+TAAmPlgAJj5cACY+YAAmPmQAJj5oACY+cAAmPngAJj58ACY+gAAmPogAJj6MACY/sAAmQEAAJkDcACZBbAAmQXgAJkGAACZBiAAmQZAAJkGYACZBoAAmQaQAJkGwACZCFAAmQogAJkKQACZCmAAmQqAAJkKoACZCsAAmQrgAJkLAACZDNAAmQ0AAJkNMACZDWAAmQ2QAJkNwACZDfAAmQ4gAJkOQACZFfAAmRYQAJkWMACZFlAAmRaAAJkWkACZFqAAmRawAJkWwACZFuAAmRcAAJkXEACZFyAAmRdAAJkXUACZHwAAmR8gAJkfQACZH2AAmR+QAJkfoACZH7AAmR/AAJkf0ACZH/AAmSAQAJkgIACZIDAAmSBQAJkgYACZKBAAmSgwAJkoUACZKHAAmSigAJkosACZKMAAmSjQAJko4ACZKQAAmSkgAJkpMACZKUAAmSlgAJkpcACZMSAAmTFAAJkxYACZMYAAmTGwAJkxwACZMdAAmTHgAJkx8ACZMhAAmTIwAJkyQACZMlAAmTJwAJkygACZOjAAmTpQAJk6cACZOpAAmTrAAJk60ACZOuAAmTrwAJk7AACZOyAAmTtAAJk7UACZO2AAmTuAAJk7kACZQ0AAmUNgAJlDgACZQ6AAmUPQAJlD4ACZQ/AAmUQAAJlEEACZRDAAmURQAJlEYACZRHAAmUSQAJlEoACZTFAAmUxwAJlMkACZTLAAmUzgAJlM8ACZTQAAmU0QAJlNIACZTUAAmU1gAJlNcACZTYAAmU2gAJlNsACZTsAAmU7QAJlO8ACZVqAAmVbAAJlW4ACZVwAAmVcwAJlXQACZV1AAmVdgAJlXcACZV5AAmVewAJlXwACZV9AAmVfwAJlYAACZX7AAmV/QAJlf8ACZYBAAmWBAAJlgUACZYGAAmWBwAJlggACZYKAAmWDAAJlg0ACZYOAAmWEAAJlhEACZaMAAmWjgAJlpEACZaTAAmWlgAJlpcACZaYAAmWmQAJlpoACZacAAmWngAJlp8ACZagAAmWogAJlqMACZc2AAmXWQAJl3kACZeZAAmXmwAJl50ACZefAAmXoQAJl6QACZelAAmXpgAJl6kACZeqAAmXrAAJl60ACZevAAmXsgAJl7MACZe0AAmXtwAJl7gACZe9AAmX1gAJl98ACZfhAAmX4wAJl+wACZfvAAmX8gAJl/QACZg9AAmYYQAJmIgACZisAAmYrwAJmLEACZizAAmYtQAJmLcACZi5AAmYugAJmL0ACZjWAAmY9wAJmPkACZj7AAmY/QAJmP8ACZkBAAmZAwAJmQUACZkHAAmZKAAJmSsACZkuAAmZMQAJmTQACZk3AAmZOgAJmT0ACZlAAAmZQgAJmb0ACZm/AAmZwQAJmcMACZnGAAmZxwAJmcgACZnJAAmZygAJmcwACZnOAAmZzwAJmdAACZnSAAmZ0wAJmk4ACZpQAAmaUgAJmlQACZpXAAmaWAAJmlkACZpaAAmaWwAJml0ACZpfAAmaYAAJmmEACZpjAAmaZAAJmt8ACZrhAAma5AAJmuYACZrpAAma6gAJmusACZrsAAma7QAJmu8ACZrxAAma8gAJmvMACZr1AAma9gAJmw8ACZsQAAmbEQAJmxMACZuOAAmbkAAJm5IACZuUAAmblwAJm5gACZuZAAmbmgAJm5sACZudAAmbnwAJm6AACZuhAAmbowAJm6QACZwfAAmcIQAJnCMACZwlAAmcKAAJnCkACZwqAAmcKwAJnCwACZwuAAmcMAAJnDEACZwyAAmcNAAJnDUACZywAAmcsgAJnLQACZy2AAmcuQAJnLoACZy7AAmcvAAJnL0ACZy/AAmcwQAJnMIACZzDAAmcxQAJnMYACZ1BAAmdQwAJnUUACZ1HAAmdSgAJnUsACZ1MAAmdTQAJnU4ACZ1QAAmdUgAJnVMACZ1UAAmdVgAJnVcACZ3SAAmd1AAJndYACZ3YAAmd2wAJndwACZ3dAAmd3gAJnd8ACZ3hAAmd4wAJneQACZ3lAAmd5wAJnegACZ4xAAmeVQAJnnwACZ6gAAmeowAJnqUACZ6nAAmeqQAJnqsACZ6tAAmergAJnrEACZ7KAAme5wAJnukACZ7rAAme7QAJnu8ACZ7xAAme8wAJnvUACZ8SAAmfFQAJnxgACZ8bAAmfHgAJnyEACZ8kAAmfJwAJnykACZ+kAAmfpgAJn6gACZ+qAAmfrQAJn64ACZ+vAAmfsAAJn7EACZ+zAAmftQAJn7YACZ+3AAmfuQAJn7oACaA1AAmgNwAJoDkACaA7AAmgPgAJoD8ACaBAAAmgQQAJoEIACaBEAAmgRgAJoEcACaBIAAmgSgAJoEsACaDGAAmgyAAJoMoACaDMAAmgzwAJoNAACaDRAAmg0gAJoNMACaDVAAmg1wAJoNgACaDZAAmg2wAJoNwACaFXAAmhWQAJoVwACaFeAAmhYQAJoWIACaFjAAmhZAAJoWUACaFnAAmhaQAJoWoACaFrAAmhbQAJoW4ACaHpAAmh6wAJoe0ACaHvAAmh8gAJofMACaH0AAmh9QAJofYACaH4AAmh+gAJofsACaH8AAmh/gAJof8ACaJ6AAmifAAJon4ACaKAAAmigwAJooQACaKFAAmihgAJoocACaKJAAmiiwAJoowACaKNAAmijwAJopAACaMLAAmjDQAJow8ACaMRAAmjFAAJoxUACaMWAAmjFwAJoxgACaMaAAmjHAAJox0ACaMeAAmjIAAJoyEACaO0AAmj1wAJo/cACaQXAAmkGQAJpBsACaQdAAmkHwAJpCIACaQjAAmkJAAJpCcACaQoAAmkKgAJpCsACaQuAAmkMQAJpDIACaQzAAmkNgAJpDcACaQ8AAmkVQAJpF4ACaRgAAmkYgAJpGsACaRuAAmkcQAJpHMACaS8AAmk4AAJpQcACaUrAAmlLgAJpTAACaUyAAmlNAAJpTYACaU4AAmlOQAJpTwACaVVAAmldgAJpXgACaV6AAmlfAAJpX4ACaWAAAmlggAJpYQACaWGAAmlpwAJpaoACaWtAAmlsAAJpbMACaW2AAmluQAJpbwACaW/AAmlwQAJpjwACaY+AAmmQAAJpkIACaZFAAmmRgAJpkcACaZIAAmmSQAJpksACaZNAAmmTgAJpk8ACaZRAAmmUgAJps0ACabPAAmm0QAJptMACabWAAmm1wAJptgACabZAAmm2gAJptwACabeAAmm3wAJpuAACabiAAmm4wAJp14ACadgAAmnYwAJp2UACadoAAmnaQAJp2oACadrAAmnbAAJp24ACadwAAmncQAJp3IACad0AAmndQAJp44ACaePAAmnkAAJp5IACagNAAmoDwAJqBEACagTAAmoFgAJqBcACagYAAmoGQAJqBoACagcAAmoHgAJqB8ACaggAAmoIgAJqCMACaieAAmooAAJqKIACaikAAmopwAJqKgACaipAAmoqgAJqKsACaitAAmorwAJqLAACaixAAmoswAJqLQACakvAAmpMQAJqTMACak1AAmpOAAJqTkACak6AAmpOwAJqTwACak+AAmpQAAJqUEACalCAAmpRAAJqUUACanAAAmpwgAJqcQACanGAAmpyQAJqcoACanLAAmpzAAJqc0ACanPAAmp0QAJqdIACanTAAmp1QAJqdYACapRAAmqUwAJqlUACapXAAmqWgAJqlsACapcAAmqXQAJql4ACapgAAmqYgAJqmMACapkAAmqZgAJqmcACaqwAAmq1AAJqvsACasfAAmrIgAJqyQACasmAAmrKAAJqyoACassAAmrLQAJqzAACatJAAmrZgAJq2gACatqAAmrbAAJq24ACatwAAmrcgAJq3QACauRAAmrlAAJq5cACauaAAmrnQAJq6AACaujAAmrpgAJq6gACawjAAmsJQAJrCcACawpAAmsLAAJrC0ACawuAAmsLwAJrDAACawyAAmsNAAJrDUACaw2AAmsOAAJrDkACay0AAmstgAJrLkACay7AAmsvgAJrL8ACazAAAmswQAJrMIACazEAAmsxgAJrMcACazIAAmsygAJrMsACa1GAAmtSAAJrUoACa1MAAmtTwAJrVAACa1RAAmtUgAJrVMACa1VAAmtVwAJrVgACa1ZAAmtWwAJrVwACa3XAAmt2QAJrdwACa3eAAmt4QAJreIACa3jAAmt5AAJreUACa3nAAmt6QAJreoACa3rAAmt7QAJre4ACa5xAAmulQAJrrkACa7cAAmvAwAJryMACa9KAAmvcQAJr5EACa+1AAmv2QAJr9sACa/eAAmv4AAJr+IACa/kAAmv5wAJr+oACa/sAAmv7gAJr/EACa/zAAmv9QAJr/gACa/7AAmv/AAJsAEACbAaAAmwHwAJsCEACbAmAAmwKQAJsCsACbB0AAmwmAAJsL8ACbDjAAmw5gAJsOgACbDqAAmw7AAJsO4ACbDwAAmw8QAJsPQACbENAAmxMgAJsTQACbE2AAmxOAAJsToACbE8AAmxPgAJsUAACbFCAAmxRAAJsWkACbFsAAmxbwAJsXIACbF1AAmxeAAJsXsACbF+AAmxgQAJsYQACbGGAAmyAQAJsgMACbIGAAmyCAAJsgsACbIMAAmyDQAJsg4ACbIPAAmyEQAJshMACbIUAAmyFQAJshcACbIYAAmyKQAJsioACbIsAAmypwAJsqkACbKrAAmyrQAJsrAACbKxAAmysgAJsrMACbK0AAmytgAJsrgACbK5AAmyugAJsrwACbK9AAmzOAAJszoACbM9AAmzPwAJs0IACbNDAAmzRAAJs0UACbNGAAmzSAAJs0oACbNLAAmzTAAJs04ACbNPAAmzYAAJs2EACbNjAAmz3gAJs+AACbPiAAmz5AAJs+cACbPoAAmz6QAJs+oACbPrAAmz7QAJs+8ACbPwAAmz8QAJs/MACbP0AAm0bwAJtHEACbR0AAm0dgAJtHkACbR6AAm0ewAJtHwACbR9AAm0fwAJtIEACbSCAAm0gwAJtIUACbSGAAm0lwAJtJgACbSaAAm1FQAJtRcACbUZAAm1GwAJtR4ACbUfAAm1IAAJtSEACbUiAAm1JAAJtSYACbUnAAm1KAAJtSoACbUrAAm1pgAJtagACbWrAAm1rQAJtbAACbWxAAm1sgAJtbMACbW0AAm1tgAJtbgACbW5AAm1ugAJtbwACbW9AAm11gAJtdcACbXYAAm12gAJtlUACbZXAAm2WQAJtlsACbZeAAm2XwAJtmAACbZhAAm2YgAJtmQACbZmAAm2ZwAJtmgACbZqAAm2awAJtuYACbboAAm26wAJtu0ACbbwAAm28QAJtvIACbbzAAm29AAJtvYACbb4AAm2+QAJtvoACbb8AAm2/QAJtxoACbczAAm3VAAJt1cACbdaAAm3XQAJt2AACbdjAAm3ZgAJt2kACbdsAAm3jQAJt5AACbeTAAm3lgAJt5kACbecAAm3nwAJt6IACbelAAm3pwAJt7oACbfRAAm36gAJt/wACbgLAAm4IwAJuLYACbjZAAm4+QAJuRkACbkbAAm5HQAJuR8ACbkhAAm5JAAJuSUACbkmAAm5KQAJuSoACbksAAm5LQAJuS8ACbkyAAm5MwAJuTQACbk3AAm5OAAJuT0ACblWAAm5XwAJuWEACbljAAm5bAAJuW8ACblyAAm5dAAJub0ACbnhAAm6CAAJuiwACbovAAm6MQAJujMACbo1AAm6NwAJujkACbo6AAm6PQAJulYACbp3AAm6eQAJunsACbp9AAm6fwAJuoEACbqDAAm6hQAJuocACbqoAAm6qwAJuq4ACbqxAAm6tAAJurcACbq6AAm6vQAJusAACbrCAAm7PQAJuz8ACbtBAAm7QwAJu0YACbtHAAm7SAAJu0kACbtKAAm7TAAJu04ACbtPAAm7UAAJu1IACbtTAAm7zgAJu9AACbvSAAm71AAJu9cACbvYAAm72QAJu9oACbvbAAm73QAJu98ACbvgAAm74QAJu+MACbvkAAm8XwAJvGEACbxkAAm8ZgAJvGkACbxqAAm8awAJvGwACbxtAAm8bwAJvHEACbxyAAm8cwAJvHUACbx2AAm8jwAJvJAACbyRAAm8kwAJvQ4ACb0QAAm9EgAJvRQACb0XAAm9GAAJvRkACb0aAAm9GwAJvR0ACb0fAAm9IAAJvSEACb0jAAm9JAAJvZ8ACb2hAAm9owAJvaUACb2oAAm9qQAJvaoACb2rAAm9rAAJva4ACb2wAAm9sQAJvbIACb20AAm9tQAJvjAACb4yAAm+NAAJvjYACb45AAm+OgAJvjsACb48AAm+PQAJvj8ACb5BAAm+QgAJvkMACb5FAAm+RgAJvsEACb7DAAm+xQAJvscACb7KAAm+ywAJvswACb7NAAm+zgAJvtAACb7SAAm+0wAJvtQACb7WAAm+1wAJv1IACb9UAAm/VgAJv1gACb9bAAm/XAAJv10ACb9eAAm/XwAJv2EACb9jAAm/ZAAJv2UACb9nAAm/aAAJv7EACb/VAAm//AAJwCAACcAjAAnAJQAJwCcACcApAAnAKwAJwC0ACcAuAAnAMQAJwEoACcBnAAnAaQAJwGsACcBtAAnAbwAJwHEACcBzAAnAdQAJwJIACcCVAAnAmAAJwJsACcCeAAnAoQAJwKQACcCnAAnAqQAJwSQACcEmAAnBKAAJwSoACcEtAAnBLgAJwS8ACcEwAAnBMQAJwTMACcE1AAnBNgAJwTcACcE5AAnBOgAJwbUACcG3AAnBuQAJwbsACcG+AAnBvwAJwcAACcHBAAnBwgAJwcQACcHGAAnBxwAJwcgACcHKAAnBywAJwkYACcJIAAnCSgAJwkwACcJPAAnCUAAJwlEACcJSAAnCUwAJwlUACcJXAAnCWAAJwlkACcJbAAnCXAAJwtcACcLZAAnC2wAJwt0ACcLgAAnC4QAJwuIACcLjAAnC5AAJwuYACcLoAAnC6QAJwuoACcLsAAnC7QAJw2gACcNqAAnDbAAJw24ACcNxAAnDcgAJw3MACcN0AAnDdQAJw3cACcN5AAnDegAJw3sACcN9AAnDfgAJw/kACcP7AAnD/QAJw/8ACcQCAAnEAwAJxAQACcQFAAnEBgAJxAgACcQKAAnECwAJxAwACcQOAAnEDwAJxIoACcSMAAnEjgAJxJAACcSTAAnElAAJxJUACcSWAAnElwAJxJkACcSbAAnEnAAJxJ0ACcSfAAnEoAAJxTMACcVWAAnFdgAJxZYACcWYAAnFmgAJxZwACcWeAAnFoQAJxaIACcWjAAnFpgAJxacACcWpAAnFqgAJxawACcWvAAnFsAAJxbEACcW0AAnFtQAJxboACcXTAAnF3AAJxd4ACcXgAAnF6QAJxewACcXvAAnF8QAJxjoACcZeAAnGhQAJxqkACcasAAnGrgAJxrAACcayAAnGtAAJxrYACca3AAnGugAJxtMACcb0AAnG9gAJxvgACcb6AAnG/AAJxv4ACccAAAnHAgAJxwQACcclAAnHKAAJxysACccuAAnHMQAJxzQACcc3AAnHOgAJxz0ACcc/AAnHugAJx7wACce+AAnHwAAJx8MACcfEAAnHxQAJx8YACcfHAAnHyQAJx8sACcfMAAnHzQAJx88ACcfQAAnISwAJyE0ACchPAAnIUQAJyFQACchVAAnIVgAJyFcACchYAAnIWgAJyFwACchdAAnIXgAJyGAACchhAAnI3AAJyN4ACcjhAAnI4wAJyOYACcjnAAnI6AAJyOkACcjqAAnI7AAJyO4ACcjvAAnI8AAJyPIACcjzAAnJDAAJyQ0ACckOAAnJEAAJyYsACcmNAAnJjwAJyZEACcmUAAnJlQAJyZYACcmXAAnJmAAJyZoACcmcAAnJnQAJyZ4ACcmgAAnJoQAJyhwACcoeAAnKIAAJyiIACcolAAnKJgAJyicACcooAAnKKQAJyisACcotAAnKLgAJyi8ACcoxAAnKMgAJyq0ACcqvAAnKsQAJyrMACcq2AAnKtwAJyrgACcq5AAnKugAJyrwACcq+AAnKvwAJysAACcrCAAnKwwAJyz4ACctAAAnLQgAJy0QACctHAAnLSAAJy0kACctKAAnLSwAJy00ACctPAAnLUAAJy1EACctTAAnLVAAJy88ACcvRAAnL0wAJy9UACcvYAAnL2QAJy9oACcvbAAnL3AAJy94ACcvgAAnL4QAJy+IACcvkAAnL5QAJzC4ACcxSAAnMeQAJzJ0ACcygAAnMogAJzKQACcymAAnMqAAJzKoACcyrAAnMrgAJzMcACczkAAnM5gAJzOgACczqAAnM7AAJzO4ACczwAAnM8gAJzQ8ACc0SAAnNFQAJzRgACc0bAAnNHgAJzSEACc0kAAnNJgAJzaEACc2jAAnNpQAJzacACc2qAAnNqwAJzawACc2tAAnNrgAJzbAACc2yAAnNswAJzbQACc22AAnNtwAJzjIACc40AAnONgAJzjgACc47AAnOPAAJzj0ACc4+AAnOPwAJzkEACc5DAAnORAAJzkUACc5HAAnOSAAJzsMACc7FAAnOxwAJzskACc7MAAnOzQAJzs4ACc7PAAnO0AAJztIACc7UAAnO1QAJztYACc7YAAnO2QAJz1QACc9WAAnPWQAJz1sACc9eAAnPXwAJz2AACc9hAAnPYgAJz2QACc9mAAnPZwAJz2gACc9qAAnPawAJz+YACc/oAAnP6gAJz+wACc/vAAnP8AAJz/EACc/yAAnP8wAJz/UACc/3AAnP+AAJz/kACc/7AAnP/AAJ0HcACdB5AAnQewAJ0H0ACdCAAAnQgQAJ0IIACdCDAAnQhAAJ0IYACdCIAAnQiQAJ0IoACdCMAAnQjQAJ0QgACdEKAAnRDAAJ0Q4ACdERAAnREgAJ0RMACdEUAAnRFQAJ0RcACdEZAAnRGgAJ0RsACdEdAAnRHgAJ0bEACdHUAAnR9AAJ0hQACdIWAAnSGAAJ0hoACdIcAAnSHwAJ0iAACdIhAAnSJAAJ0iUACdInAAnSKAAJ0ioACdItAAnSLgAJ0i8ACdIyAAnSMwAJ0jgACdJRAAnSWgAJ0lwACdJeAAnSZwAJ0moACdJtAAnSbwAJ0rgACdLcAAnTAwAJ0ycACdMqAAnTLAAJ0y4ACdMwAAnTMgAJ0zQACdM1AAnTOAAJ01EACdNyAAnTdAAJ03YACdN4AAnTegAJ03wACdN+AAnTgAAJ04IACdOjAAnTpgAJ06kACdOsAAnTrwAJ07IACdO1AAnTuAAJ07sACdO9AAnUOAAJ1DoACdQ8AAnUPgAJ1EEACdRCAAnUQwAJ1EQACdRFAAnURwAJ1EkACdRKAAnUSwAJ1E0ACdROAAnUyQAJ1MsACdTNAAnUzwAJ1NIACdTTAAnU1AAJ1NUACdTWAAnU2AAJ1NoACdTbAAnU3AAJ1N4ACdTfAAnVWgAJ1VwACdVfAAnVYQAJ1WQACdVlAAnVZgAJ1WcACdVoAAnVagAJ1WwACdVtAAnVbgAJ1XAACdVxAAnVigAJ1YsACdWMAAnVjgAJ1gkACdYLAAnWDQAJ1g8ACdYSAAnWEwAJ1hQACdYVAAnWFgAJ1hgACdYaAAnWGwAJ1hwACdYeAAnWHwAJ1poACdacAAnWngAJ1qAACdajAAnWpAAJ1qUACdamAAnWpwAJ1qkACdarAAnWrAAJ1q0ACdavAAnWsAAJ1ysACdctAAnXLwAJ1zEACdc0AAnXNQAJ1zYACdc3AAnXOAAJ1zoACdc8AAnXPQAJ1z4ACddAAAnXQQAJ17wACde+AAnXwAAJ18IACdfFAAnXxgAJ18cACdfIAAnXyQAJ18sACdfNAAnXzgAJ188ACdfRAAnX0gAJ2E0ACdhPAAnYUQAJ2FMACdhWAAnYVwAJ2FgACdhZAAnYWgAJ2FwACdheAAnYXwAJ2GAACdhiAAnYYwAJ2KwACdjQAAnY9wAJ2RsACdkeAAnZIAAJ2SIACdkkAAnZJgAJ2SgACdkpAAnZLAAJ2UUACdliAAnZZAAJ2WYACdloAAnZagAJ2WwACdluAAnZcAAJ2Y0ACdmQAAnZkwAJ2ZYACdmZAAnZnAAJ2Z8ACdmiAAnZpAAJ2h8ACdohAAnaIwAJ2iUACdooAAnaKQAJ2ioACdorAAnaLAAJ2i4ACdowAAnaMQAJ2jIACdo0AAnaNQAJ2rAACdqyAAnatAAJ2rYACdq5AAnaugAJ2rsACdq8AAnavQAJ2r8ACdrBAAnawgAJ2sMACdrFAAnaxgAJ20EACdtDAAnbRQAJ20cACdtKAAnbSwAJ20wACdtNAAnbTgAJ21AACdtSAAnbUwAJ21QACdtWAAnbVwAJ29IACdvUAAnb1wAJ29kACdvcAAnb3QAJ294ACdvfAAnb4AAJ2+IACdvkAAnb5QAJ2+YACdvoAAnb6QAJ3GQACdxmAAncaAAJ3GoACdxtAAncbgAJ3G8ACdxwAAnccQAJ3HMACdx1AAncdgAJ3HcACdx5AAncegAJ3PUACdz3AAnc+QAJ3PsACdz+AAnc/wAJ3QAACd0BAAndAgAJ3QQACd0GAAndBwAJ3QgACd0KAAndCwAJ3YYACd2IAAndigAJ3YwACd2PAAndkAAJ3ZEACd2SAAndkwAJ3ZUACd2XAAndmAAJ3ZkACd2bAAndnAAJ3i8ACd5SAAnecgAJ3pIACd6UAAnelgAJ3pgACd6aAAnenQAJ3p4ACd6fAAneogAJ3qMACd6lAAnepgAJ3qgACd6rAAnerAAJ3q0ACd6wAAnesQAJ3roACd7TAAne3AAJ3t4ACd7gAAne6QAJ3uwACd7vAAne8QAJ3zoACd9eAAnfhQAJ36kACd+sAAnfrgAJ37AACd+yAAnftAAJ37YACd+3AAnfugAJ39MACd/0AAnf9gAJ3/gACd/6AAnf/AAJ3/4ACeAAAAngAgAJ4AQACeAlAAngKAAJ4CsACeAuAAngMQAJ4DQACeA3AAngOgAJ4D0ACeA/AAngugAJ4LwACeC+AAngwAAJ4MMACeDEAAngxQAJ4MYACeDHAAngyQAJ4MsACeDMAAngzQAJ4M8ACeDQAAnhSwAJ4U0ACeFPAAnhUQAJ4VQACeFVAAnhVgAJ4VcACeFYAAnhWgAJ4VwACeFdAAnhXgAJ4WAACeFhAAnh3AAJ4d4ACeHhAAnh4wAJ4eYACeHnAAnh6AAJ4ekACeHqAAnh7AAJ4e4ACeHvAAnh8AAJ4fIACeHzAAniDAAJ4g0ACeIOAAniEAAJ4osACeKNAAnijwAJ4pEACeKUAAnilQAJ4pYACeKXAAnimAAJ4poACeKcAAninQAJ4p4ACeKgAAnioQAJ4xwACeMeAAnjIAAJ4yIACeMlAAnjJgAJ4ycACeMoAAnjKQAJ4ysACeMtAAnjLgAJ4y8ACeMxAAnjMgAJ460ACeOvAAnjsQAJ47MACeO2AAnjtwAJ47gACeO5AAnjugAJ47wACeO+AAnjvwAJ48AACePCAAnjwwAJ5D4ACeRAAAnkQgAJ5EQACeRHAAnkSAAJ5EkACeRKAAnkSwAJ5E0ACeRPAAnkUAAJ5FEACeRTAAnkVAAJ5M8ACeTRAAnk0wAJ5NUACeTYAAnk2QAJ5NoACeTbAAnk3AAJ5N4ACeTgAAnk4QAJ5OIACeTkAAnk5QAJ5S4ACeVSAAnleQAJ5Z0ACeWgAAnlogAJ5aQACeWmAAnlqAAJ5aoACeW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2AAn/twAKADIACgA0AAoANgAKADgACgA7AAoAPAAKAD0ACgA+AAoAPwAKAEEACgBDAAoARAAKAEUACgBHAAoASAAKAMMACgDFAAoAxwAKAMkACgDMAAoAzQAKAM4ACgDPAAoA0AAKANIACgDUAAoA1QAKANYACgDYAAoA2QAKAVQACgFWAAoBWAAKAVoACgFdAAoBXgAKAV8ACgFgAAoBYQAKAWMACgFlAAoBZgAKAWcACgFpAAoBagAKAeUACgHnAAoB6QAKAesACgHuAAoB7wAKAfAACgHxAAoB8gAKAfQACgH2AAoB9wAKAfgACgH6AAoB+wAKAnYACgJ4AAoCegAKAnwACgJ/AAoCgAAKAoEACgKCAAoCgwAKAoUACgKHAAoCiAAKAokACgKLAAoCjAAKAwcACgMJAAoDCwAKAw0ACgMQAAoDEQAKAxIACgMTAAoDFAAKAxYACgMYAAoDGQAKAxoACgMcAAoDHQAKA7AACgPTAAoD8wAKBBMACgQVAAoEFwAKBBkACgQbAAoEHgAKBB8ACgQgAAoEIwAKBCQACgQmAAoEJwAKBCkACgQsAAoELQAKBC4ACgQxAAoEMgAKBDcACgRQAAoEWQAKBFsACgRdAAoEZgAKBGkACgRsAAoEbgAKBLcACgTbAAoFAgAKBSYACgUpAAoFKwAKBS0ACgUvAAoFMQAKBTMACgU0AAoFNwAKBVAACgVxAAoFcwAKBXUACgV3AAoFeQAKBXsACgV9AAoFfwAKBYEACgWiAAoFpQAKBagACgWrAAoFrgAKBbEACgW0AAoFtwAKBboACgW8AAoGNwAKBjkACgY7AAoGPQAKBkAACgZBAAoGQgAKBkMACgZEAAoGRgAKBkgACgZJAAoGSgAKBkwACgZNAAoGyAAKBsoACgbMAAoGzgAKBtEACgbSAAoG0wAKBtQACgbVAAoG1wAKBtkACgbaAAoG2wAKBt0ACgbeAAoHWQAKB1sACgdeAAoHYAAKB2MACgdkAAoHZQAKB2YACgdnAAoHaQAKB2sACgdsAAoHbQAKB28ACgdwAAoHiQAKB4oACgeLAAoHjQAKCAgACggKAAoIDAAKCA4ACggRAAoIEgAKCBMACggUAAoIFQAKCBcACggZAAoIGgAKCBsACggdAAoIHgAKCJkACgibAAoInQAKCJ8ACgiiAAoIowAKCKQACgilAAoIpgAKCKgACgiqAAoIqwAKCKwACgiuAAoIrwAKCSoACgksAAoJLgAKCTAACgkzAAoJNAAKCTUACgk2AAoJNwAKCTkACgk7AAoJPAAKCT0ACgk/AAoJQAAKCbsACgm9AAoJvwAKCcEACgnEAAoJxQAKCcYACgnHAAoJyAAKCcoACgnMAAoJzQAKCc4ACgnQAAoJ0QAKCkwACgpOAAoKUAAKClIACgpVAAoKVgAKClcACgpYAAoKWQAKClsACgpdAAoKXgAKCl8ACgphAAoKYgAKCqsACgrPAAoK9gAKCxoACgsdAAoLHwAKCyEACgsjAAoLJQAKCycACgsoAAoLKwAKC0QACgthAAoLYwAKC2UACgtnAAoLaQAKC2sACgttAAoLbwAKC4wACguPAAoLkgAKC5UACguYAAoLmwAKC54ACguhAAoLowAKDB4ACgwgAAoMIgAKDCQACgwnAAoMKAAKDCkACgwqAAoMKwAKDC0ACgwvAAoMMAAKDDEACgwzAAoMNAAKDK8ACgyxAAoMswAKDLUACgy4AAoMuQAKDLoACgy7AAoMvAAKDL4ACgzAAAoMwQAKDMIACgzEAAoMxQAKDUAACg1CAAoNRAAKDUYACg1JAAoNSgAKDUsACg1MAAoNTQAKDU8ACg1RAAoNUgAKDVMACg1VAAoNVgAKDdEACg3TAAoN1gAKDdgACg3bAAoN3AAKDd0ACg3eAAoN3wAKDeEACg3jAAoN5AAKDeUACg3nAAoN6AAKDmMACg5lAAoOZwAKDmkACg5sAAoObQAKDm4ACg5vAAoOcAAKDnIACg50AAoOdQAKDnYACg54AAoOeQAKDvQACg72AAoO+AAKDvoACg79AAoO/gAKDv8ACg8AAAoPAQAKDwMACg8FAAoPBgAKDwcACg8JAAoPCgAKD4UACg+HAAoPiQAKD4sACg+OAAoPjwAKD5AACg+RAAoPkgAKD5QACg+WAAoPlwAKD5gACg+aAAoPmwAKEC4AChBRAAoQcQAKEJEAChCTAAoQlQAKEJcAChCZAAoQnAAKEJ0AChCeAAoQoQAKEKIAChCkAAoQpQAKEKgAChCrAAoQrAAKEK0AChCwAAoQsQAKELYAChDPAAoQ2AAKENoAChDcAAoQ5QAKEOgAChDrAAoQ7QAKETYAChFaAAoRgQAKEaUAChGoAAoRqgAKEawAChGuAAoRsAAKEbIAChGzAAoRtgAKEc8AChHwAAoR8gAKEfQAChH2AAoR+AAKEfoAChH8AAoR/gAKEgAAChIhAAoSJAAKEicAChIqAAoSLQAKEjAAChIzAAoSNgAKEjkAChI7AAoStgAKErgAChK6AAoSvAAKEr8AChLAAAoSwQAKEsIAChLDAAoSxQAKEscAChLIAAoSyQAKEssAChLMAAoTRwAKE0kAChNLAAoTTQAKE1AAChNRAAoTUgAKE1MAChNUAAoTVgAKE1gAChNZAAoTWgAKE1wAChNdAAoT2AAKE9oAChPdAAoT3wAKE+IAChPjAAoT5AAKE+UAChPmAAoT6AAKE+oAChPrAAoT7AAKE+4AChPvAAoUCAAKFAkAChQKAAoUDAAKFIcAChSJAAoUiwAKFI0AChSQAAoUkQAKFJIAChSTAAoUlAAKFJYAChSYAAoUmQAKFJoAChScAAoUnQAKFRgAChUaAAoVHAAKFR4AChUhAAoVIgAKFSMAChUkAAoVJQAKFScAChUpAAoVKgAKFSsAChUtAAoVLgAKFakAChWrAAoVrQAKFa8AChWyAAoVswAKFbQAChW1AAoVtgAKFbgAChW6AAoVuwAKFbwAChW+AAoVvwAKFjoAChY8AAoWPgAKFkAAChZDAAoWRAAKFkUAChZGAAoWRwAKFkkAChZLAAoWTAAKFk0AChZPAAoWUAAKFssAChbNAAoWzwAKFtEAChbUAAoW1QAKFtYAChbXAAoW2AAKFtoAChbcAAoW3QAKFt4AChbgAAoW4QAKFyoAChdOAAoXdQAKF5kAChecAAoXngAKF6AACheiAAoXpAAKF6YAChenAAoXqgAKF8MAChfgAAoX4gAKF+QAChfmAAoX6AAKF+oAChfsAAoX7gAKGAsAChgOAAoYEQAKGBQAChgXAAoYGgAKGB0AChggAAoYIgAKGJ0AChifAAoYoQAKGKMAChimAAoYpwAKGKgAChipAAoYqgAKGKwAChiuAAoYrwAKGLAAChiyAAoYswAKGS4AChkwAAoZMgAKGTQAChk3AAoZOAAKGTkAChk6AAoZOwAKGT0AChk/AAoZQAAKGUEAChlDAAoZRAAKGb8AChnBAAoZwwAKGcUAChnIAAoZyQAKGcoAChnLAAoZzAAKGc4AChnQAAoZ0QAKGdIAChnUAAoZ1QAKGlAAChpSAAoaVQAKGlcAChpaAAoaWwAKGlwAChpdAAoaXgAKGmAAChpiAAoaYwAKGmQAChpmAAoaZwAKGuIAChrkAAoa5gAKGugAChrrAAoa7AAKGu0AChruAAoa7wAKGvEAChrzAAoa9AAKGvUAChr3AAoa+AAKG3MACht1AAobdwAKG3kACht8AAobfQAKG34ACht/AAobgAAKG4IAChuEAAobhQAKG4YAChuIAAobiQAKHAQAChwGAAocCQAKHAsAChwOAAocDwAKHBAAChwRAAocEgAKHBQAChwWAAocFwAKHBgAChwaAAocGwAKHCwAChwtAAocLwAKHKoAChysAAocrgAKHLAAChyzAAoctAAKHLUAChy2AAoctwAKHLkAChy7AAocvAAKHL0AChy/AAocwAAKHTsACh09AAodPwAKHUEACh1EAAodRQAKHUYACh1HAAodSAAKHUoACh1MAAodTQAKHU4ACh1QAAodUQAKHcwACh3OAAod0QAKHdMACh3WAAod1wAKHdgACh3ZAAod2gAKHdwACh3eAAod3wAKHeAACh3iAAod4wAKHnYACh6ZAAoeuQAKHtkACh7bAAoe3QAKHt8ACh7hAAoe5AAKHuUACh7mAAoe6QAKHuoACh7sAAoe7QAKHu8ACh7yAAoe8wAKHvQACh73AAoe+AAKHv0ACh8WAAofHwAKHyEACh8jAAofLAAKHy8ACh8yAAofNAAKH30ACh+hAAofyAAKH+wACh/vAAof8QAKH/MACh/1AAof9wAKH/kACh/6AAof/QAKIBYACiA3AAogOQAKIDsACiA9AAogPwAKIEEACiBDAAogRQAKIEcACiBoAAogawAKIG4ACiBxAAogdAAKIHcACiB6AAogfQAKIIAACiCCAAog/QAKIP8ACiEBAAohAwAKIQYACiEHAAohCAAKIQkACiEKAAohDAAKIQ4ACiEPAAohEAAKIRIACiETAAohjgAKIZAACiGSAAohlAAKIZcACiGYAAohmQAKIZoACiGbAAohnQAKIZ8ACiGgAAohoQAKIaMACiGkAAoiHwAKIiEACiIkAAoiJgAKIikACiIqAAoiKwAKIiwACiItAAoiLwAKIjEACiIyAAoiMwAKIjUACiI2AAoiTwAKIlAACiJRAAoiUwAKIs4ACiLQAAoi0gAKItQACiLXAAoi2AAKItkACiLaAAoi2wAKIt0ACiLfAAoi4AAKIuEACiLjAAoi5AAKI18ACiNhAAojYwAKI2UACiNoAAojaQAKI2oACiNrAAojbAAKI24ACiNwAAojcQAKI3IACiN0AAojdQAKI/AACiPyAAoj9AAKI/YACiP5AAoj+gAKI/sACiP8AAoj/QAKI/8ACiQBAAokAgAKJAMACiQFAAokBgAKJIEACiSDAAokhQAKJIcACiSKAAokiwAKJIwACiSNAAokjgAKJJAACiSSAAokkwAKJJQACiSWAAoklwAKJRIACiUUAAolFgAKJRgACiUbAAolHAAKJR0ACiUeAAolHwAKJSEACiUjAAolJAAKJSUACiUnAAolKAAKJXEACiWVAAolvAAKJeAACiXjAAol5QAKJecACiXpAAol6wAKJe0ACiXuAAol8QAKJgoACiYnAAomKQAKJisACiYtAAomLwAKJjEACiYzAAomNQAKJlIACiZVAAomWAAKJlsACiZeAAomYQAKJmQACiZnAAomaQAKJuQACibmAAom6QAKJusACibuAAom7wAKJvAACibxAAom8gAKJvQACib2AAom9wAKJvgACib6AAom+wAKJ3YACid4AAonegAKJ3wACid/AAongAAKJ4EACieCAAongwAKJ4UACieHAAoniAAKJ4kACieLAAonjAAKKAcACigJAAooCwAKKA0ACigQAAooEQAKKBIACigTAAooFAAKKBYACigYAAooGQAKKBoACigcAAooHQAKKJgACiiaAAoonQAKKJ8ACiiiAAooowAKKKQACiilAAoopgAKKKgACiiqAAooqwAKKKwACiiuAAoorwAKKSoACiksAAopLgAKKTAACikzAAopNAAKKTUACik2AAopNwAKKTkACik7AAopPAAKKT0ACik/AAopQAAKKbsACim9AAopvwAKKcEACinEAAopxQAKKcYACinHAAopyAAKKcoACinMAAopzQAKKc4ACinQAAop0QAKKkwACipOAAoqUAAKKlIACipVAAoqVgAKKlcACipYAAoqWQAKKlsACipdAAoqXgAKKl8ACiphAAoqYgAKKvUACisYAAorOAAKK1gACitaAAorXAAKK14ACitgAAorYwAKK2QACitlAAoraAAKK2kACitrAAorbAAKK28ACityAAorcwAKK3QACit3AAoreAAKK30ACiuWAAornwAKK6EACiujAAorrAAKK68ACiuyAAortAAKK/0ACiwhAAosSAAKLGwACixvAAoscQAKLHMACix1AAosdwAKLHkACix6AAosfQAKLJYACiy3AAosuQAKLLsACiy9AAosvwAKLMEACizDAAosxQAKLMcACizoAAos6wAKLO4ACizxAAos9AAKLPcACiz6AAos/QAKLQAACi0CAAotfQAKLX8ACi2BAAotgwAKLYYACi2HAAotiAAKLYkACi2KAAotjAAKLY4ACi2PAAotkAAKLZIACi2TAAouDgAKLhAACi4SAAouFAAKLhcACi4YAAouGQAKLhoACi4bAAouHQAKLh8ACi4gAAouIQAKLiMACi4kAAounwAKLqEACi6kAAoupgAKLqkACi6qAAouqwAKLqwACi6tAAourwAKLrEACi6yAAouswAKLrUACi62AAouzwAKLtAACi7RAAou0wAKL04ACi9QAAovUgAKL1QACi9XAAovWAAKL1kACi9aAAovWwAKL10ACi9fAAovYAAKL2EACi9jAAovZAAKL98ACi/hAAov4wAKL+UACi/oAAov6QAKL+oACi/rAAov7AAKL+4ACi/wAAov8QAKL/IACi/0AAov9QAKMHAACjByAAowdAAKMHYACjB5AAowegAKMHsACjB8AAowfQAKMH8ACjCBAAowggAKMIMACjCFAAowhgAKMQEACjEDAAoxBQAKMQcACjEKAAoxCwAKMQwACjENAAoxDgAKMRAACjESAAoxEwAKMRQACjEWAAoxFwAKMZIACjGUAAoxlgAKMZgACjGbAAoxnAAKMZ0ACjGeAAoxnwAKMaEACjGjAAoxpAAKMaUACjGnAAoxqAAKMfEACjIVAAoyPAAKMmAACjJjAAoyZQAKMmcACjJpAAoyawAKMm0ACjJuAAoycQAKMooACjKnAAoyqQAKMqsACjKtAAoyrwAKMrEACjKzAAoytQAKMtIACjLVAAoy2AAKMtsACjLeAAoy4QAKMuQACjLnAAoy6QAKM2QACjNmAAozaAAKM2oACjNtAAozbgAKM28ACjNwAAozcQAKM3MACjN1AAozdgAKM3cACjN5AAozegAKM/UACjP3AAoz+QAKM/sACjP+AAoz/wAKNAAACjQBAAo0AgAKNAQACjQGAAo0BwAKNAgACjQKAAo0CwAKNIYACjSIAAo0igAKNIwACjSPAAo0kAAKNJEACjSSAAo0kwAKNJUACjSXAAo0mAAKNJkACjSbAAo0nAAKNRcACjUZAAo1HAAKNR4ACjUhAAo1IgAKNSMACjUkAAo1JQAKNScACjUpAAo1KgAKNSsACjUtAAo1LgAKNbEACjXVAAo1+QAKNhwACjZDAAo2YwAKNooACjaxAAo20QAKNvUACjcZAAo3GwAKNx4ACjcgAAo3IgAKNyQACjcnAAo3KgAKNywACjcuAAo3MQAKNzMACjc1AAo3OAAKNzsACjc8AAo3QQAKN1oACjdfAAo3YQAKN2YACjdpAAo3awAKN7QACjfYAAo3/wAKOCMACjgmAAo4KAAKOCoACjgsAAo4LgAKODAACjgxAAo4NAAKOE0ACjhyAAo4dAAKOHYACjh4AAo4egAKOHwACjh+AAo4gAAKOIIACjiEAAo4qQAKOKwACjivAAo4sgAKOLUACji4AAo4uwAKOL4ACjjBAAo4xAAKOMYACjlBAAo5QwAKOUYACjlIAAo5SwAKOUwACjlNAAo5TgAKOU8ACjlRAAo5UwAKOVQACjlVAAo5VwAKOVgACjlpAAo5agAKOWwACjnnAAo56QAKOesACjntAAo58AAKOfEACjnyAAo58wAKOfQACjn2AAo5+AAKOfkACjn6AAo5/AAKOf0ACjp4AAo6egAKOn0ACjp/AAo6ggAKOoMACjqEAAo6hQAKOoYACjqIAAo6igAKOosACjqMAAo6jgAKOo8ACjqgAAo6pQAKOqgACjqqAAo6uwAKOsAACjrDAAo6xQAKO0AACjtCAAo7RAAKO0YACjtJAAo7SgAKO0sACjtMAAo7TQAKO08ACjtRAAo7UgAKO1MACjtVAAo7VgAKO9EACjvTAAo71gAKO9gACjvbAAo73AAKO90ACjveAAo73wAKO+EACjvjAAo75AAKO+UACjvnAAo76AAKO/kACjv6AAo7/AAKPHcACjx5AAo8ewAKPH0ACjyAAAo8gQAKPIIACjyDAAo8hAAKPIYACjyIAAo8iQAKPIoACjyMAAo8jQAKPQgACj0KAAo9DQAKPQ8ACj0SAAo9EwAKPRQACj0VAAo9FgAKPRgACj0aAAo9GwAKPRwACj0eAAo9HwAKPTgACj05AAo9OgAKPTwACj23AAo9uQAKPbsACj29AAo9wAAKPcEACj3CAAo9wwAKPcQACj3GAAo9yAAKPckACj3KAAo9zAAKPc0ACj5IAAo+SgAKPk0ACj5PAAo+UgAKPlMACj5UAAo+VQAKPlYACj5YAAo+WgAKPlsACj5cAAo+XgAKPl8ACj57AAo+lAAKPvcACj76AAo+/QAKPwAACj8DAAo/BgAKPwkACj8MAAo/DwAKPxIACj8VAAo/GAAKPxsACj8eAAo/IQAKPyQACj8nAAo/KgAKPy0ACj8wAAo/MwAKPzYACj85AAo/PAAKPz8ACj+iAAo/pQAKP6gACj+rAAo/rgAKP7EACj+0AAo/twAKP7oACj+9AAo/wAAKP8MACj/GAAo/yQAKP8wACj/PAAo/0gAKP9UACj/YAAo/2wAKP94ACj/hAAo/5AAKP+cACj/qAAo/7AAKQAwACkAgAApAPgAKQF4ACkByAApAhwAKQJsACkCpAApAuwAKQNkACkDrAApA9wAKQQsACkEgAApBNAAKQUsACkFXAApBZQAKQYIACkGUAApBnQAKQjAACkJTAApCcwAKQpMACkKVAApClwAKQpkACkKbAApCngAKQp8ACkKgAApCowAKQqQACkKmAApCpwAKQqkACkKsAApCrQAKQq4ACkKxAApCsgAKQrsACkLUAApC3QAKQt8ACkLhAApC6gAKQu0ACkLwAApC8gAKQzsACkNfAApDhgAKQ6oACkOtAApDrwAKQ7EACkOzAApDtQAKQ7cACkO4AApDuwAKQ9QACkP1AApD9wAKQ/kACkP7AApD/QAKQ/8ACkQBAApEAwAKRAUACkQmAApEKQAKRCwACkQvAApEMgAKRDUACkQ4AApEOwAKRD4ACkRAAApEuwAKRL0ACkS/AApEwQAKRMQACkTFAApExgAKRMcACkTIAApEygAKRMwACkTNAApEzgAKRNAACkTRAApFTAAKRU4ACkVQAApFUgAKRVUACkVWAApFVwAKRVgACkVZAApFWwAKRV0ACkVeAApFXwAKRWEACkViAApF3QAKRd8ACkXiAApF5AAKRecACkXoAApF6QAKReoACkXrAApF7QAKRe8ACkXwAApF8QAKRfMACkX0AApGDQAKRg4ACkYPAApGEQAKRowACkaOAApGkAAKRpIACkaVAApGlgAKRpcACkaYAApGmQAKRpsACkadAApGngAKRp8ACkahAApGogAKRx0ACkcfAApHIQAKRyMACkcmAApHJwAKRygACkcpAApHKgAKRywACkcuAApHLwAKRzAACkcyAApHMwAKR64ACkewAApHsgAKR7QACke3AApHuAAKR7kACke6AApHuwAKR70ACke/AApHwAAKR8EACkfDAApHxAAKSD8ACkhBAApIQwAKSEUACkhIAApISQAKSEoACkhLAApITAAKSE4ACkhQAApIUQAKSFIACkhUAApIVQAKSNAACkjSAApI1AAKSNYACkjZAApI2gAKSNsACkjcAApI3QAKSN8ACkjhAApI4gAKSOMACkjlAApI5gAKSS8ACklTAApJegAKSZ4ACkmhAApJowAKSaUACkmnAApJqQAKSasACkmsAApJrwAKScgACknlAApJ5wAKSekACknrAApJ7QAKSe8ACknxAApJ8wAKShAACkoTAApKFgAKShkACkocAApKHwAKSiIACkolAApKJwAKSqIACkqkAApKpgAKSqgACkqrAApKrAAKSq0ACkquAApKrwAKSrEACkqzAApKtAAKSrUACkq3AApKuAAKSzMACks1AApLNwAKSzkACks8AApLPQAKSz4ACks/AApLQAAKS0IACktEAApLRQAKS0YACktIAApLSQAKS8QACkvGAApLyAAKS8oACkvNAApLzgAKS88ACkvQAApL0QAKS9MACkvVAApL1gAKS9cACkvZAApL2gAKTFUACkxXAApMWQAKTFsACkxeAApMXwAKTGAACkxhAApMYgAKTGQACkxmAApMZwAKTGgACkxqAApMawAKTOYACkzoAApM6gAKTOwACkzvAApM8AAKTPEACkzyAApM8wAKTPUACkz3AApM+AAKTPkACkz7AApM/AAKTXcACk15AApNewAKTX0ACk2AAApNgQAKTYIACk2DAApNhAAKTYYACk2IAApNiQAKTYoACk2MAApNjQAKTggACk4KAApODAAKTg4ACk4RAApOEgAKThMACk4UAApOFQAKThcACk4ZAApOGgAKThsACk4dAApOHgAKTrEACk7UAApO9AAKTxQACk8WAApPGAAKTxoACk8cAApPHwAKTyAACk8hAApPJAAKTyUACk8nAApPKAAKTyoACk8tAApPLgAKTy8ACk8yAApPMwAKTzgACk9RAApPWgAKT1wACk9eAApPZwAKT2oACk9tAApPbwAKT7gACk/cAApQAwAKUCcAClAqAApQLAAKUC4AClAwAApQMgAKUDQAClA1AApQOAAKUFEAClByAApQdAAKUHYAClB4AApQegAKUHwAClB+AApQgAAKUIIAClCjAApQpgAKUKkAClCsAApQrwAKULIAClC1AApQuAAKULsAClC9AApROAAKUToAClE8AApRPgAKUUEAClFCAApRQwAKUUQAClFFAApRRwAKUUkAClFKAApRSwAKUU0AClFOAApRyQAKUcsAClHNAApRzwAKUdIAClHTAApR1AAKUdUAClHWAApR2AAKUdoAClHbAApR3AAKUd4AClHfAApSWgAKUlwAClJfAApSYQAKUmQAClJlAApSZgAKUmcAClJoAApSagAKUmwAClJtAApSbgAKUnAAClJxAApSigAKUosAClKMAApSjgAKUwkAClMLAApTDQAKUw8AClMSAApTEwAKUxQAClMVAApTFgAKUxgAClMaAApTGwAKUxwAClMeAApTHwAKU5oAClOcAApTngAKU6AAClOjAApTpAAKU6UAClOmAApTpwAKU6kAClOrAApTrAAKU60AClOvAApTsAAKVCsAClQtAApULwAKVDEAClQ0AApUNQAKVDYAClQ3AApUOAAKVDoAClQ8AApUPQAKVD4AClRAAApUQQAKVLwAClS+AApUwAAKVMIAClTFAApUxgAKVMcAClTIAApUyQAKVMsAClTNAApUzgAKVM8AClTRAApU0gAKVU0AClVPAApVUQAKVVMAClVWAApVVwAKVVgAClVZAApVWgAKVVwAClVeAApVXwAKVWAAClViAApVYwAKVawAClXQAApV9wAKVhsAClYeAApWIAAKViIAClYkAApWJgAKVigAClYpAApWLAAKVkUAClZiAApWZAAKVmYAClZoAApWagAKVmwAClZuAApWcAAKVo0AClaQAApWkwAKVpYAClaZAApWnAAKVp8AClaiAApWpAAKVx8AClchAApXIwAKVyUAClcoAApXKQAKVyoAClcrAApXLAAKVy4AClcwAApXMQAKVzIAClc0AApXNQAKV7AACleyAApXtAAKV7YACle5AApXugAKV7sACle8AApXvQAKV78AClfBAApXwgAKV8MAClfFAApXxgAKWEEAClhDAApYRQAKWEcAClhKAApYSwAKWEwAClhNAApYTgAKWFAAClhSAApYUwAKWFQAClhWAApYVwAKWNIACljUAApY1wAKWNkACljcAApY3QAKWN4ACljfAApY4AAKWOIACljkAApY5QAKWOYACljoAApY6QAKWWQACllmAApZaAAKWWoAClltAApZbgAKWW8ACllwAApZcQAKWXMACll1AApZdgAKWXcACll5AApZegAKWfUACln3AApZ+QAKWfsACln+AApZ/wAKWgAACloBAApaAgAKWgQACloGAApaBwAKWggACloKAApaCwAKWoYAClqIAApaigAKWowAClqPAApakAAKWpEAClqSAApakwAKWpUAClqXAApamAAKWpkAClqbAApanAAKWy8ACltSAApbcgAKW5IACluUAApblgAKW5gACluaAApbnQAKW54AClufAApbogAKW6MAClulAApbpgAKW6gAClurAApbrAAKW60ACluwAApbsQAKW7YAClvPAApb2AAKW9oAClvcAApb5QAKW+gAClvrAApb7QAKXDYAClxaAApcgQAKXKUAClyoAApcqgAKXKwAClyuAApcsAAKXLIAClyzAApctgAKXM8AClzwAApc8gAKXPQAClz2AApc+AAKXPoAClz8AApc/gAKXQAACl0hAApdJAAKXScACl0qAApdLQAKXTAACl0zAApdNgAKXTkACl07AApdtgAKXbgACl26AApdvAAKXb8ACl3AAApdwQAKXcIACl3DAApdxQAKXccACl3IAApdyQAKXcsACl3MAApeRwAKXkkACl5LAApeTQAKXlAACl5RAApeUgAKXlMACl5UAApeVgAKXlgACl5ZAApeWgAKXlwACl5dAApe2AAKXtoACl7dAApe3wAKXuIACl7jAApe5AAKXuUACl7mAApe6AAKXuoACl7rAApe7AAKXu4ACl7vAApfCAAKXwkACl8KAApfDAAKX4cACl+JAApfiwAKX40ACl+QAApfkQAKX5IACl+TAApflAAKX5YACl+YAApfmQAKX5oACl+cAApfnQAKYBgACmAaAApgHAAKYB4ACmAhAApgIgAKYCMACmAkAApgJQAKYCcACmApAApgKgAKYCsACmAtAApgLgAKYKkACmCrAApgrQAKYK8ACmCyAApgswAKYLQACmC1AApgtgAKYLgACmC6AApguwAKYLwACmC+AApgvwAKYToACmE8AAphPgAKYUAACmFDAAphRAAKYUUACmFGAAphRwAKYUkACmFLAAphTAAKYU0ACmFPAAphUAAKYcsACmHNAAphzwAKYdEACmHUAAph1QAKYdYACmHXAAph2AAKYdoACmHcAAph3QAKYd4ACmHgAAph4QAKYioACmJOAApidQAKYpkACmKcAApingAKYqAACmKiAApipAAKYqYACmKnAApiqgAKYsMACmLgAApi4gAKYuQACmLmAApi6AAKYuoACmLsAApi7gAKYwsACmMOAApjEQAKYxQACmMXAApjGgAKYx0ACmMgAApjIgAKY50ACmOfAApjogAKY6QACmOnAApjqAAKY6kACmOqAApjqwAKY60ACmOvAApjsAAKY7EACmOzAApjtAAKZC8ACmQxAApkMwAKZDUACmQ4AApkOQAKZDoACmQ7AApkPAAKZD4ACmRAAApkQQAKZEIACmREAApkRQAKZMAACmTCAApkxAAKZMYACmTJAApkygAKZMsACmTMAApkzQAKZM8ACmTRAApk0gAKZNMACmTVAApk1gAKZVEACmVTAAplVgAKZVgACmVbAAplXAAKZV0ACmVeAAplXwAKZWEACmVjAAplZAAKZWUACmVnAAplaAAKZeMACmXlAApl5wAKZekACmXsAApl7QAKZe4ACmXvAApl8AAKZfIACmX0AApl9QAKZfYACmX4AApl+QAKZnQACmZ2AApmeAAKZnoACmZ9AApmfgAKZn8ACmaAAApmgQAKZoMACmaFAApmhgAKZocACmaJAApmigAKZwUACmcHAApnCQAKZwsACmcOAApnDwAKZxAACmcRAApnEgAKZxQACmcWAApnFwAKZxgACmcaAApnGwAKZ64ACmfRAApn8QAKaBEACmgTAApoFQAKaBcACmgZAApoHAAKaB0ACmgeAApoIQAKaCIACmgkAApoJQAKaCcACmgqAApoKwAKaCwACmgvAApoMAAKaDUACmhOAApoVwAKaFkACmhbAApoZAAKaGcACmhqAApobAAKaLUACmjZAAppAAAKaSQACmknAAppKQAKaSsACmktAAppLwAKaTEACmkyAAppNQAKaU4ACmlvAAppcQAKaXMACml1AAppdwAKaXkACml7AAppfQAKaX8ACmmgAAppowAKaaYACmmpAApprAAKaa8ACmmyAApptQAKabgACmm6AApqNQAKajcACmo5AApqOwAKaj4ACmo/AApqQAAKakEACmpCAApqRAAKakYACmpHAApqSAAKakoACmpLAApqxgAKasgACmrKAApqzAAKas8ACmrQAApq0QAKatIACmrTAApq1QAKatcACmrYAApq2QAKatsACmrcAAprVwAKa1kACmtcAAprXgAKa2EACmtiAAprYwAKa2QACmtlAAprZwAKa2kACmtqAAprawAKa20ACmtuAAprhwAKa4gACmuJAApriwAKbAYACmwIAApsCgAKbAwACmwPAApsEAAKbBEACmwSAApsEwAKbBUACmwXAApsGAAKbBkACmwbAApsHAAKbJcACmyZAApsmwAKbJ0ACmygAApsoQAKbKIACmyjAApspAAKbKYACmyoAApsqQAKbKoACmysAApsrQAKbSgACm0qAAptLAAKbS4ACm0xAAptMgAKbTMACm00AAptNQAKbTcACm05AAptOgAKbTsACm09AAptPgAKbbkACm27AAptvQAKbb8ACm3CAAptwwAKbcQACm3FAAptxgAKbcgACm3KAAptywAKbcwACm3OAAptzwAKbkoACm5MAApuTgAKblAACm5TAApuVAAKblUACm5WAApuVwAKblkACm5bAApuXAAKbl0ACm5fAApuYAAKbqkACm7NAApu9AAKbxgACm8bAApvHQAKbx8ACm8hAApvIwAKbyUACm8mAApvKQAKb0IACm9fAApvYQAKb2MACm9lAApvZwAKb2kACm9rAApvbQAKb4oACm+NAApvkAAKb5MACm+WAApvmQAKb5wACm+fAApvoQAKcBwACnAeAApwIAAKcCIACnAlAApwJgAKcCcACnAoAApwKQAKcCsACnAtAApwLgAKcC8ACnAxAApwMgAKcK0ACnCvAApwsQAKcLMACnC2AApwtwAKcLgACnC5AApwugAKcLwACnC+AApwvwAKcMAACnDCAApwwwAKcT4ACnFAAApxQgAKcUQACnFHAApxSAAKcUkACnFKAApxSwAKcU0ACnFPAApxUAAKcVEACnFTAApxVAAKcc8ACnHRAApx0wAKcdUACnHYAApx2QAKcdoACnHbAApx3AAKcd4ACnHgAApx4QAKceIACnHkAApx5QAKcmAACnJiAApyZAAKcmYACnJpAApyagAKcmsACnJsAApybQAKcm8ACnJxAApycgAKcnMACnJ1AApydgAKcvEACnLzAApy9QAKcvcACnL6AApy+wAKcvwACnL9AApy/gAKcwAACnMCAApzAwAKcwQACnMGAApzBwAKc4IACnOEAApzhgAKc4gACnOLAApzjAAKc40ACnOOAApzjwAKc5EACnOTAApzlAAKc5UACnOXAApzmAAKdCsACnROAAp0bgAKdI4ACnSQAAp0kgAKdJQACnSWAAp0mQAKdJoACnSbAAp0ngAKdJ8ACnShAAp0ogAKdKQACnSnAAp0qAAKdKkACnSsAAp0rQAKdLIACnTLAAp01AAKdNYACnTYAAp04QAKdOQACnTnAAp06QAKdTIACnVWAAp1fQAKdaEACnWkAAp1pgAKdagACnWqAAp1rAAKda4ACnWvAAp1sgAKdcsACnXsAAp17gAKdfAACnXyAAp19AAKdfYACnX4AAp1+gAKdfwACnYdAAp2IAAKdiMACnYmAAp2KQAKdiwACnYvAAp2MgAKdjUACnY3AAp2sgAKdrQACna2AAp2uAAKdrsACna8AAp2vQAKdr4ACna/AAp2wQAKdsMACnbEAAp2xQAKdscACnbIAAp3QwAKd0UACndHAAp3SQAKd0wACndNAAp3TgAKd08ACndQAAp3UgAKd1QACndVAAp3VgAKd1gACndZAAp31AAKd9YACnfZAAp32wAKd94ACnffAAp34AAKd+EACnfiAAp35AAKd+YACnfnAAp36AAKd+oACnfrAAp4BAAKeAUACngGAAp4CAAKeIMACniFAAp4hwAKeIkACniMAAp4jQAKeI4ACniPAAp4kAAKeJIACniUAAp4lQAKeJYACniYAAp4mQAKeRQACnkWAAp5GAAKeRoACnkdAAp5HgAKeR8ACnkgAAp5IQAKeSMACnklAAp5JgAKeScACnkpAAp5KgAKeaUACnmnAAp5qQAKeasACnmuAAp5rwAKebAACnmxAAp5sgAKebQACnm2AAp5twAKebgACnm6AAp5uwAKejYACno4AAp6OgAKejwACno/AAp6QAAKekEACnpCAAp6QwAKekUACnpHAAp6SAAKekkACnpLAAp6TAAKescACnrJAAp6ywAKes0ACnrQAAp60QAKetIACnrTAAp61AAKetYACnrYAAp62QAKetoACnrcAAp63QAKeyYACntKAAp7cQAKe5UACnuYAAp7mgAKe5wACnueAAp7oAAKe6IACnujAAp7pgAKe78ACnvcAAp73gAKe+AACnviAAp75AAKe+YACnvoAAp76gAKfAcACnwKAAp8DQAKfBAACnwTAAp8FgAKfBkACnwcAAp8HgAKfJkACnybAAp8nQAKfJ8ACnyiAAp8owAKfKQACnylAAp8pgAKfKgACnyqAAp8qwAKfKwACnyuAAp8rwAKfSoACn0sAAp9LgAKfTAACn0zAAp9NAAKfTUACn02AAp9NwAKfTkACn07AAp9PAAKfT0ACn0/AAp9QAAKfbsACn29AAp9vwAKfcEACn3EAAp9xQAKfcYACn3HAAp9yAAKfcoACn3MAAp9zQAKfc4ACn3QAAp90QAKfkwACn5OAAp+UQAKflMACn5WAAp+VwAKflgACn5ZAAp+WgAKflwACn5eAAp+XwAKfmAACn5iAAp+YwAKft4ACn7gAAp+4gAKfuQACn7nAAp+6AAKfukACn7qAAp+6wAKfu0ACn7vAAp+8AAKfvEACn7zAAp+9AAKf28ACn9xAAp/cwAKf3UACn94AAp/eQAKf3oACn97AAp/fAAKf34ACn+AAAp/gQAKf4IACn+EAAp/hQAKgAAACoACAAqABAAKgAYACoAJAAqACgAKgAsACoAMAAqADQAKgA8ACoARAAqAEgAKgBMACoAVAAqAFgAKgKkACoDMAAqA7AAKgQwACoEOAAqBEAAKgRIACoEUAAqBFwAKgRgACoEZAAqBHAAKgR0ACoEfAAqBIAAKgSIACoElAAqBJgAKgScACoEqAAqBKwAKgTAACoFJAAqBUgAKgVQACoFWAAqBXwAKgWIACoFlAAqBZwAKgbAACoHUAAqB+wAKgh8ACoIiAAqCJAAKgiYACoIoAAqCKgAKgiwACoItAAqCMAAKgkkACoJqAAqCbAAKgm4ACoJwAAqCcgAKgnQACoJ2AAqCeAAKgnoACoKbAAqCngAKgqEACoKkAAqCpwAKgqoACoKtAAqCsAAKgrMACoK1AAqDMAAKgzIACoM0AAqDNgAKgzkACoM6AAqDOwAKgzwACoM9AAqDPwAKg0EACoNCAAqDQwAKg0UACoNGAAqDwQAKg8MACoPFAAqDxwAKg8oACoPLAAqDzAAKg80ACoPOAAqD0AAKg9IACoPTAAqD1AAKg9YACoPXAAqEUgAKhFQACoRXAAqEWQAKhFwACoRdAAqEXgAKhF8ACoRgAAqEYgAKhGQACoRlAAqEZgAKhGgACoRpAAqEggAKhIMACoSEAAqEhgAKhQEACoUDAAqFBQAKhQcACoUKAAqFCwAKhQwACoUNAAqFDgAKhRAACoUSAAqFEwAKhRQACoUWAAqFFwAKhZIACoWUAAqFlgAKhZgACoWbAAqFnAAKhZ0ACoWeAAqFnwAKhaEACoWjAAqFpAAKhaUACoWnAAqFqAAKhiMACoYlAAqGJwAKhikACoYsAAqGLQAKhi4ACoYvAAqGMAAKhjIACoY0AAqGNQAKhjYACoY4AAqGOQAKhrQACoa2AAqGuAAKhroACoa9AAqGvgAKhr8ACobAAAqGwQAKhsMACobFAAqGxgAKhscACobJAAqGygAKh0UACodHAAqHSQAKh0sACodOAAqHTwAKh1AACodRAAqHUgAKh1QACodWAAqHVwAKh1gACodaAAqHWwAKh6QACofIAAqH7wAKiBMACogWAAqIGAAKiBoACogcAAqIHgAKiCAACoghAAqIJAAKiD0ACohaAAqIXAAKiF4ACohgAAqIYgAKiGQACohmAAqIaAAKiIUACoiIAAqIiwAKiI4ACoiRAAqIlAAKiJcACoiaAAqInAAKiRcACokZAAqJGwAKiR0ACokgAAqJIQAKiSIACokjAAqJJAAKiSYACokoAAqJKQAKiSoACoksAAqJLQAKiagAComqAAqJrAAKia4AComxAAqJsgAKibMACom0AAqJtQAKibcACom5AAqJugAKibsACom9AAqJvgAKijkACoo7AAqKPQAKij8ACopCAAqKQwAKikQACopFAAqKRgAKikgACopKAAqKSwAKikwACopOAAqKTwAKisoACorMAAqKzgAKitAACorTAAqK1AAKitUACorWAAqK1wAKitkACorbAAqK3AAKit0ACorfAAqK4AAKi1sACotdAAqLXwAKi2EACotkAAqLZQAKi2YACotnAAqLaAAKi2oACotsAAqLbQAKi24ACotwAAqLcQAKi+wACovuAAqL8AAKi/IACov1AAqL9gAKi/cACov4AAqL+QAKi/sACov9AAqL/gAKi/8ACowBAAqMAgAKjH0ACox/AAqMgQAKjIMACoyGAAqMhwAKjIgACoyJAAqMigAKjIwACoyOAAqMjwAKjJAACoySAAqMkwAKjSYACo1JAAqNaQAKjYkACo2LAAqNjQAKjY8ACo2RAAqNlAAKjZUACo2WAAqNmQAKjZoACo2cAAqNnQAKjZ8ACo2iAAqNowAKjaQACo2nAAqNqAAKja0ACo3GAAqNzwAKjdEACo3TAAqN3AAKjd8ACo3iAAqN5AAKji0ACo5RAAqOeAAKjpwACo6fAAqOoQAKjqMACo6lAAqOpwAKjqkACo6qAAqOrQAKjsYACo7nAAqO6QAKjusACo7tAAqO7wAKjvEACo7zAAqO9QAKjvcACo8YAAqPGwAKjx4ACo8hAAqPJAAKjycACo8qAAqPLQAKjzAACo8yAAqPrQAKj68ACo+xAAqPswAKj7YACo+3AAqPuAAKj7kACo+6AAqPvAAKj74ACo+/AAqPwAAKj8IACo/DAAqQPgAKkEAACpBCAAqQRAAKkEcACpBIAAqQSQAKkEoACpBLAAqQTQAKkE8ACpBQAAqQUQAKkFMACpBUAAqQzwAKkNEACpDUAAqQ1gAKkNkACpDaAAqQ2wAKkNwACpDdAAqQ3wAKkOEACpDiAAqQ4wAKkOUACpDmAAqQ/wAKkQAACpEBAAqRAwAKkX4ACpGAAAqRggAKkYQACpGHAAqRiAAKkYkACpGKAAqRiwAKkY0ACpGPAAqRkAAKkZEACpGTAAqRlAAKkg8ACpIRAAqSEwAKkhUACpIYAAqSGQAKkhoACpIbAAqSHAAKkh4ACpIgAAqSIQAKkiIACpIkAAqSJQAKkqAACpKiAAqSpAAKkqYACpKpAAqSqgAKkqsACpKsAAqSrQAKkq8ACpKxAAqSsgAKkrMACpK1AAqStgAKkzEACpMzAAqTNQAKkzcACpM6AAqTOwAKkzwACpM9AAqTPgAKk0AACpNCAAqTQwAKk0QACpNGAAqTRwAKk8IACpPEAAqTxgAKk8gACpPLAAqTzAAKk80ACpPOAAqTzwAKk9EACpPTAAqT1AAKk9UACpPXAAqT2AAKlCEACpRFAAqUbAAKlJAACpSTAAqUlQAKlJcACpSZAAqUmwAKlJ0ACpSeAAqUoQAKlLoACpTXAAqU2QAKlNsACpTdAAqU3wAKlOEACpTjAAqU5QAKlQIACpUFAAqVCAAKlQsACpUOAAqVEQAKlRQACpUXAAqVGQAKlZQACpWWAAqVmAAKlZoACpWdAAqVngAKlZ8ACpWgAAqVoQAKlaMACpWlAAqVpgAKlacACpWpAAqVqgAKliUACpYnAAqWKQAKlisACpYuAAqWLwAKljAACpYxAAqWMgAKljQACpY2AAqWNwAKljgACpY6AAqWOwAKlrYACpa4AAqWugAKlrwACpa/AAqWwAAKlsEACpbCAAqWwwAKlsUACpbHAAqWyAAKlskACpbLAAqWzAAKl0cACpdJAAqXSwAKl00ACpdQAAqXUQAKl1IACpdTAAqXVAAKl1YACpdYAAqXWQAKl1oACpdcAAqXXQAKl9gACpfaAAqX3AAKl94ACpfhAAqX4gAKl+MACpfkAAqX5QAKl+cACpfpAAqX6gAKl+sACpftAAqX7gAKmGkACphrAAqYbQAKmG8ACphyAAqYcwAKmHQACph1AAqYdgAKmHgACph6AAqYewAKmHwACph+AAqYfwAKmPoACpj8AAqY/gAKmQAACpkDAAqZBAAKmQUACpkGAAqZBwAKmQkACpkLAAqZDAAKmQ0ACpkPAAqZEAAKmaMACpnGAAqZ5gAKmgYACpoIAAqaCgAKmgwACpoOAAqaEQAKmhIACpoTAAqaFgAKmhcACpoZAAqaGgAKmhwACpofAAqaIAAKmiEACpokAAqaJQAKmioACppDAAqaTAAKmk4ACppQAAqaWQAKmlwACppfAAqaYQAKmqoACprOAAqa9QAKmxkACpscAAqbHgAKmyAACpsiAAqbJAAKmyYACpsnAAqbKgAKm0MACptkAAqbZgAKm2gACptqAAqbbAAKm24ACptwAAqbcgAKm3QACpuVAAqbmAAKm5sACpueAAqboQAKm6QACpunAAqbqgAKm60ACpuvAAqcKgAKnCwACpwuAAqcMAAKnDMACpw0AAqcNQAKnDYACpw3AAqcOQAKnDsACpw8AAqcPQAKnD8ACpxAAAqcuwAKnL0ACpy/AAqcwQAKnMQACpzFAAqcxgAKnMcACpzIAAqcygAKnMwACpzNAAqczgAKnNAACpzRAAqdTAAKnU4ACp1RAAqdUwAKnVYACp1XAAqdWAAKnVkACp1aAAqdXAAKnV4ACp1fAAqdYAAKnWIACp1jAAqdfAAKnX0ACp1+AAqdgAAKnfsACp39AAqd/wAKngEACp4EAAqeBQAKngYACp4HAAqeCAAKngoACp4MAAqeDQAKng4ACp4QAAqeEQAKnowACp6OAAqekAAKnpIACp6VAAqelgAKnpcACp6YAAqemQAKnpsACp6dAAqengAKnp8ACp6hAAqeogAKnx0ACp8fAAqfIQAKnyMACp8mAAqfJwAKnygACp8pAAqfKgAKnywACp8uAAqfLwAKnzAACp8yAAqfMwAKn64ACp+wAAqfsgAKn7QACp+3AAqfuAAKn7kACp+6AAqfuwAKn70ACp+/AAqfwAAKn8EACp/DAAqfxAAKoD8ACqBBAAqgQwAKoEUACqBIAAqgSQAKoEoACqBLAAqgTAAKoE4ACqBQAAqgUQAKoFIACqBUAAqgVQAKoJ4ACqDCAAqg6QAKoQ0ACqEQAAqhEgAKoRQACqEWAAqhGAAKoRoACqEbAAqhHgAKoTcACqFUAAqhVgAKoVgACqFaAAqhXAAKoV4ACqFgAAqhYgAKoX8ACqGCAAqhhQAKoYgACqGLAAqhjgAKoZEACqGUAAqhlgAKohEACqITAAqiFQAKohcACqIaAAqiGwAKohwACqIdAAqiHgAKoiAACqIiAAqiIwAKoiQACqImAAqiJwAKoqIACqKkAAqipgAKoqgACqKrAAqirAAKoq0ACqKuAAqirwAKorEACqKzAAqitAAKorUACqK3AAqiuAAKozMACqM1AAqjNwAKozkACqM8AAqjPQAKoz4ACqM/AAqjQAAKo0IACqNEAAqjRQAKo0YACqNIAAqjSQAKo8QACqPGAAqjyQAKo8sACqPOAAqjzwAKo9AACqPRAAqj0gAKo9QACqPWAAqj1wAKo9gACqPaAAqj2wAKpFYACqRYAAqkWgAKpFwACqRfAAqkYAAKpGEACqRiAAqkYwAKpGUACqRnAAqkaAAKpGkACqRrAAqkbAAKpOcACqTpAAqk6wAKpO0ACqTwAAqk8QAKpPIACqTzAAqk9AAKpPYACqT4AAqk+QAKpPoACqT8AAqk/QAKpXgACqV6AAqlfAAKpX4ACqWBAAqlggAKpYMACqWEAAqlhQAKpYcACqWJAAqligAKpYsACqWNAAqljgAKpiEACqZEAAqmZAAKpoQACqaGAAqmiAAKpooACqaMAAqmjwAKppAACqaRAAqmlAAKppUACqaXAAqmmAAKppoACqadAAqmngAKpp8ACqaiAAqmowAKpqgACqbBAAqmygAKpswACqbOAAqm1wAKptoACqbdAAqm3wAKpygACqdMAAqncwAKp5cACqeaAAqnnAAKp54ACqegAAqnogAKp6QACqelAAqnqAAKp8EACqfiAAqn5AAKp+YACqfoAAqn6gAKp+wACqfuAAqn8AAKp/IACqgTAAqoFgAKqBkACqgcAAqoHwAKqCIACqglAAqoKAAKqCsACqgtAAqoqAAKqKoACqisAAqorgAKqLEACqiyAAqoswAKqLQACqi1AAqotwAKqLkACqi6AAqouwAKqL0ACqi+AAqpOQAKqTsACqk9AAqpPwAKqUIACqlDAAqpRAAKqUUACqlGAAqpSAAKqUoACqlLAAqpTAAKqU4ACqlPAAqpygAKqcwACqnPAAqp0QAKqdQACqnVAAqp1gAKqdcACqnYAAqp2gAKqdwACqndAAqp3gAKqeAACqnhAAqp+gAKqfsACqn8AAqp/gAKqnkACqp7AAqqfQAKqn8ACqqCAAqqgwAKqoQACqqFAAqqhgAKqogACqqKAAqqiwAKqowACqqOAAqqjwAKqwoACqsMAAqrDgAKqxAACqsTAAqrFAAKqxUACqsWAAqrFwAKqxkACqsbAAqrHAAKqx0ACqsfAAqrIAAKq5sACqudAAqrnwAKq6EACqukAAqrpQAKq6YACqunAAqrqAAKq6oACqusAAqrrQAKq64ACquwAAqrsQAKrCwACqwuAAqsMAAKrDIACqw1AAqsNgAKrDcACqw4AAqsOQAKrDsACqw9AAqsPgAKrD8ACqxBAAqsQgAKrL0ACqy/AAqswQAKrMMACqzGAAqsxwAKrMgACqzJAAqsygAKrMwACqzOAAqszwAKrNAACqzSAAqs0wAKrRwACq1AAAqtZwAKrYsACq2OAAqtkAAKrZIACq2UAAqtlgAKrZgACq2ZAAqtnAAKrbUACq3SAAqt1AAKrdYACq3YAAqt2gAKrdwACq3eAAqt4AAKrf0ACq4AAAquAwAKrgYACq4JAAquDAAKrg8ACq4SAAquFAAKro8ACq6RAAqukwAKrpUACq6YAAqumQAKrpoACq6bAAqunAAKrp4ACq6gAAquoQAKrqIACq6kAAqupQAKryAACq8iAAqvJAAKryYACq8pAAqvKgAKrysACq8sAAqvLQAKry8ACq8xAAqvMgAKrzMACq81AAqvNgAKr7EACq+zAAqvtQAKr7cACq+6AAqvuwAKr7wACq+9AAqvvgAKr8AACq/CAAqvwwAKr8QACq/GAAqvxwAKsEIACrBEAAqwRwAKsEkACrBMAAqwTQAKsE4ACrBPAAqwUAAKsFIACrBUAAqwVQAKsFYACrBYAAqwWQAKsNQACrDWAAqw2AAKsNoACrDdAAqw3gAKsN8ACrDgAAqw4QAKsOMACrDlAAqw5gAKsOcACrDpAAqw6gAKsWUACrFnAAqxaQAKsWsACrFuAAqxbwAKsXAACrFxAAqxcgAKsXQACrF2AAqxdwAKsXgACrF6AAqxewAKsfYACrH4AAqx+gAKsfwACrH/AAqyAAAKsgEACrICAAqyAwAKsgUACrIHAAqyCAAKsgkACrILAAqyDAAKsp8ACrLCAAqy4gAKswIACrMEAAqzBgAKswgACrMKAAqzDQAKsw4ACrMPAAqzEgAKsxMACrMVAAqzFgAKsxgACrMbAAqzHAAKsx0ACrMgAAqzIQAKsyoACrNDAAqzTAAKs04ACrNQAAqzWQAKs1wACrNfAAqzYQAKs6oACrPOAAqz9QAKtBkACrQcAAq0HgAKtCAACrQiAAq0JAAKtCYACrQnAAq0KgAKtEMACrRkAAq0ZgAKtGgACrRqAAq0bAAKtG4ACrRwAAq0cgAKtHQACrSVAAq0mAAKtJsACrSeAAq0oQAKtKQACrSnAAq0qgAKtK0ACrSvAAq1KgAKtSwACrUuAAq1MAAKtTMACrU0AAq1NQAKtTYACrU3AAq1OQAKtTsACrU8AAq1PQAKtT8ACrVAAAq1uwAKtb0ACrW/AAq1wQAKtcQACrXFAAq1xgAKtccACrXIAAq1ygAKtcwACrXNAAq1zgAKtdAACrXRAAq2TAAKtk4ACrZRAAq2UwAKtlYACrZXAAq2WAAKtlkACrZaAAq2XAAKtl4ACrZfAAq2YAAKtmIACrZjAAq2fAAKtn0ACrZ+AAq2gAAKtvsACrb9AAq2/wAKtwEACrcEAAq3BQAKtwYACrcHAAq3CAAKtwoACrcMAAq3DQAKtw4ACrcQAAq3EQAKt4wACreOAAq3kAAKt5IACreVAAq3lgAKt5cACreYAAq3mQAKt5sACredAAq3ngAKt58ACrehAAq3ogAKuB0ACrgfAAq4IQAKuCMACrgmAAq4JwAKuCgACrgpAAq4KgAKuCwACrguAAq4LwAKuDAACrgyAAq4MwAKuK4ACriwAAq4sgAKuLQACri3AAq4uAAKuLkACri6AAq4uwAKuL0ACri/AAq4wAAKuMEACrjDAAq4xAAKuT8ACrlBAAq5QwAKuUUACrlIAAq5SQAKuUoACrlLAAq5TAAKuU4ACrlQAAq5UQAKuVIACrlUAAq5VQAKuZ4ACrnCAAq56QAKug0ACroQAAq6EgAKuhQACroWAAq6GAAKuhoACrobAAq6HgAKujcACrpUAAq6VgAKulgACrpaAAq6XAAKul4ACrpgAAq6YgAKun8ACrqCAAq6hQAKuogACrqLAAq6jgAKupEACrqUAAq6lgAKuxEACrsTAAq7FgAKuxgACrsbAAq7HAAKux0ACrseAAq7HwAKuyEACrsjAAq7JAAKuyUACrsnAAq7KAAKu6MACrulAAq7pwAKu6kACrusAAq7rQAKu64ACruvAAq7sAAKu7IACru0AAq7tQAKu7YACru4AAq7uQAKvDQACrw2AAq8OAAKvDoACrw9AAq8PgAKvD8ACrxAAAq8QQAKvEMACrxFAAq8RgAKvEcACrxJAAq8SgAKvMUACrzHAAq8ygAKvMwACrzPAAq80AAKvNEACrzSAAq80wAKvNUACrzXAAq82AAKvNkACrzbAAq83AAKvVcACr1ZAAq9WwAKvV0ACr1gAAq9YQAKvWIACr1jAAq9ZAAKvWYACr1oAAq9aQAKvWoACr1sAAq9bQAKvegACr3qAAq97AAKve4ACr3xAAq98gAKvfMACr30AAq99QAKvfcACr35AAq9+gAKvfsACr39AAq9/gAKvnkACr57AAq+fQAKvn8ACr6CAAq+gwAKvoQACr6FAAq+hgAKvogACr6KAAq+iwAKvowACr6OAAq+jwAKvyIACr9FAAq/ZQAKv4UACr+HAAq/iQAKv4sACr+NAAq/kAAKv5EACr+SAAq/lQAKv5YACr+YAAq/mQAKv5wACr+fAAq/oAAKv6EACr+kAAq/pQAKv6oACr/DAAq/zAAKv84ACr/QAAq/2QAKv9wACr/fAAq/4QAKwCoACsBOAArAdQAKwJkACsCcAArAngAKwKAACsCiAArApAAKwKYACsCnAArAqgAKwMMACsDkAArA5gAKwOgACsDqAArA7AAKwO4ACsDwAArA8gAKwPQACsEVAArBGAAKwRsACsEeAArBIQAKwSQACsEnAArBKgAKwS0ACsEvAArBqgAKwawACsGuAArBsAAKwbMACsG0AArBtQAKwbYACsG3AArBuQAKwbsACsG8AArBvQAKwb8ACsHAAArCOwAKwj0ACsI/AArCQQAKwkQACsJFAArCRgAKwkcACsJIAArCSgAKwkwACsJNAArCTgAKwlAACsJRAArCzAAKws4ACsLRAArC0wAKwtYACsLXAArC2AAKwtkACsLaAArC3AAKwt4ACsLfAArC4AAKwuIACsLjAArC/AAKwv0ACsL+AArDAAAKw3sACsN9AArDfwAKw4EACsOEAArDhQAKw4YACsOHAArDiAAKw4oACsOMAArDjQAKw44ACsOQAArDkQAKxAwACsQOAArEEAAKxBIACsQVAArEFgAKxBcACsQYAArEGQAKxBsACsQdAArEHgAKxB8ACsQhAArEIgAKxJ0ACsSfAArEoQAKxKMACsSmAArEpwAKxKgACsSpAArEqgAKxKwACsSuAArErwAKxLAACsSyAArEswAKxS4ACsUwAArFMgAKxTQACsU3AArFOAAKxTkACsU6AArFOwAKxT0ACsU/AArFQAAKxUEACsVDAArFRAAKxb8ACsXBAArFwwAKxcUACsXIAArFyQAKxcoACsXLAArFzAAKxc4ACsXQAArF0QAKxdIACsXUAArF1QAKxh4ACsZCAArGaQAKxo0ACsaQAArGkgAKxpQACsaWAArGmAAKxpoACsabAArGngAKxrcACsbUAArG1gAKxtgACsbaAArG3AAKxt4ACsbgAArG4gAKxv8ACscCAArHBQAKxwgACscLAArHDgAKxxEACscUAArHFgAKx5EACseTAArHlQAKx5cACseaAArHmwAKx5wACsedAArHngAKx6AACseiAArHowAKx6QACsemAArHpwAKyCIACsgkAArIJwAKyCkACsgsAArILQAKyC4ACsgvAArIMAAKyDIACsg0AArINQAKyDYACsg4AArIOQAKyLQACsi2AArIuAAKyLoACsi9AArIvgAKyL8ACsjAAArIwQAKyMMACsjFAArIxgAKyMcACsjJAArIygAKyUUACslHAArJSQAKyUsACslOAArJTwAKyVAACslRAArJUgAKyVQACslWAArJVwAKyVgACslaAArJWwAKydYACsnYAArJ2gAKydwACsnfAArJ4AAKyeEACsniAArJ4wAKyeUACsnnAArJ6AAKyekACsnrAArJ7AAKymcACsppAArKawAKym0ACspwAArKcQAKynIACspzAArKdAAKynYACsp4AArKeQAKynoACsp8AArKfQAKyvgACsr6AArK/QAKyv8ACssCAArLAwAKywQACssFAArLBgAKywgACssKAArLCwAKywwACssOAArLDwAKy6IACsvFAArL5QAKzAUACswHAArMCQAKzAsACswNAArMDwAKzBAACswRAArMFAAKzBUACswXAArMGAAKzBsACswdAArMHgAKzB8ACswiAArMIwAKzCwACsxFAArMTgAKzFAACsxSAArMWwAKzF4ACsxhAArMYwAKzKwACszQAArM9wAKzRsACs0eAArNIAAKzSIACs0kAArNJgAKzSgACs0pAArNLAAKzUUACs1mAArNaAAKzWoACs1sAArNbgAKzXAACs1yAArNdAAKzXYACs2XAArNmgAKzZ0ACs2gAArNowAKzaYACs2pAArNrAAKza8ACs2xAArOLAAKzi4ACs4wAArOMgAKzjUACs42AArONwAKzjgACs45AArOOwAKzj0ACs4+AArOPwAKzkEACs5CAArOvQAKzr8ACs7BAArOwwAKzsYACs7HAArOyAAKzskACs7KAArOzAAKzs4ACs7PAArO0AAKztIACs7TAArPTgAKz1AACs9TAArPVQAKz1gACs9ZAArPWgAKz1sACs9cAArPXgAKz2AACs9hAArPYgAKz2QACs9lAArPfgAKz38ACs+AAArPggAKz/0ACs//AArQAQAK0AMACtAGAArQBwAK0AgACtAJAArQCgAK0AwACtAOAArQDwAK0BAACtASAArQEwAK0I4ACtCQAArQkgAK0JQACtCXAArQmAAK0JkACtCaAArQmwAK0J0ACtCfAArQoAAK0KEACtCjAArQpAAK0R8ACtEhAArRIwAK0SUACtEoAArRKQAK0SoACtErAArRLAAK0S4ACtEwAArRMQAK0TIACtE0AArRNQAK0bAACtGyAArRtAAK0bYACtG5AArRugAK0bsACtG8AArRvQAK0b8ACtHBAArRwgAK0cMACtHFAArRxgAK0kEACtJDAArSRQAK0kcACtJKAArSSwAK0kwACtJNAArSTgAK0lAACtJSAArSUwAK0lQACtJWAArSVwAK0qAACtLEAArS6wAK0w8ACtMSAArTFAAK0xYACtMYAArTGgAK0xwACtMdAArTIAAK0zkACtNWAArTWAAK01oACtNcAArTXgAK02AACtNiAArTZAAK04EACtOEAArThwAK04oACtONAArTkAAK05MACtOWAArTmAAK1BMACtQVAArUFwAK1BkACtQcAArUHQAK1B4ACtQfAArUIAAK1CIACtQkAArUJQAK1CYACtQoAArUKQAK1KQACtSmAArUqAAK1KoACtStAArUrgAK1K8ACtSwAArUsQAK1LMACtS1AArUtgAK1LcACtS5AArUugAK1TUACtU3AArVOQAK1TsACtU+AArVPwAK1UAACtVBAArVQgAK1UQACtVGAArVRwAK1UgACtVKAArVSwAK1cYACtXIAArVywAK1c0ACtXQAArV0QAK1dIACtXTAArV1AAK1dYACtXYAArV2QAK1doACtXcAArV3QAK1lgACtZaAArWXAAK1l4ACtZhAArWYgAK1mMACtZkAArWZQAK1mcACtZpAArWagAK1msACtZtAArWbgAK1ukACtbrAArW7QAK1u8ACtbyAArW8wAK1vQACtb1AArW9gAK1vgACtb6AArW+wAK1vwACtb+AArW/wAK13oACtd8AArXfwAK14EACteEAArXhQAK14YACteHAArXiAAK14oACteMAArXjQAK144ACteQAArXkQAK2CQACthHAArYZwAK2IcACtiJAArYiwAK2I0ACtiPAArYkgAK2JMACtiUAArYlwAK2JgACtiaAArYmwAK2J0ACtigAArYoQAK2KIACtilAArYpgAK2KsACtjEAArYzQAK2M8ACtjRAArY2gAK2N0ACtjgAArY4gAK2SsACtlPAArZdgAK2ZoACtmdAArZnwAK2aEACtmjAArZpQAK2acACtmoAArZqwAK2cQACtnlAArZ5wAK2ekACtnrAArZ7QAK2e8ACtnxAArZ8wAK2fUACtoWAAraGQAK2hwACtofAAraIgAK2iUACtooAAraKwAK2i4ACtowAAraqwAK2q0ACtqvAArasQAK2rQACtq1AAratgAK2rcACtq4AAraugAK2rwACtq9AAravgAK2sAACtrBAArbPAAK2z4ACttAAArbQgAK20UACttGAArbRwAK20gACttJAArbSwAK200ACttOAArbTwAK21EACttSAArbzQAK288ACtvSAArb1AAK29cACtvYAArb2QAK29oACtvbAArb3QAK298ACtvgAArb4QAK2+MACtvkAArb/QAK2/4ACtv/AArcAQAK3HwACtx+AArcgAAK3IIACtyFAArchgAK3IcACtyIAArciQAK3IsACtyNAArcjgAK3I8ACtyRAArckgAK3Q0ACt0PAArdEQAK3RMACt0WAArdFwAK3RgACt0ZAArdGgAK3RwACt0eAArdHwAK3SAACt0iAArdIwAK3Z4ACt2gAArdogAK3aQACt2nAArdqAAK3akACt2qAArdqwAK3a0ACt2vAArdsAAK3bEACt2zAArdtAAK3i8ACt4xAAreMwAK3jUACt44AAreOQAK3joACt47AArePAAK3j4ACt5AAAreQQAK3kIACt5EAAreRQAK3sAACt7CAArexAAK3sYACt7JAAreygAK3ssACt7MAArezQAK3s8ACt7RAAre0gAK3tMACt7VAAre1gAK3x8ACt9DAArfagAK344ACt+RAArfkwAK35UACt+XAArfmQAK35sACt+cAArfnwAK37gACt/VAArf1wAK39kACt/bAArf3QAK398ACt/hAArf4wAK4AAACuADAArgBgAK4AkACuAMAArgDwAK4BIACuAVAArgFwAK4JIACuCUAArglgAK4JgACuCbAArgnAAK4J0ACuCeAArgnwAK4KEACuCjAArgpAAK4KUACuCnAArgqAAK4SMACuElAArhJwAK4SkACuEsAArhLQAK4S4ACuEvAArhMAAK4TIACuE0AArhNQAK4TYACuE4AArhOQAK4bQACuG2AArhuAAK4boACuG9AArhvgAK4b8ACuHAAArhwQAK4cMACuHFAArhxgAK4ccACuHJAArhygAK4kUACuJHAAriSQAK4ksACuJOAAriTwAK4lAACuJRAAriUgAK4lQACuJWAAriVwAK4lgACuJaAAriWwAK4tYACuLYAAri2gAK4twACuLfAAri4AAK4uEACuLiAAri4wAK4uUACuLnAAri6AAK4ukACuLrAAri7AAK42cACuNpAArjawAK420ACuNwAArjcQAK43IACuNzAArjdAAK43YACuN4AArjeQAK43oACuN8AArjfQAK4/gACuP6AArj/AAK4/4ACuQBAArkAgAK5AMACuQEAArkBQAK5AcACuQJAArkCgAK5AsACuQNAArkDgAK5KEACuTEAArk5AAK5QQACuUGAArlCAAK5QoACuUMAArlDwAK5RAACuURAArlFAAK5RUACuUXAArlGAAK5RsACuUeAArlHwAK5SAACuUjAArlJAAK5SkACuVCAArlSwAK5U0ACuVPAArlWAAK5VsACuVeAArlYAAK5akACuXNAArl9AAK5hgACuYbAArmHQAK5h8ACuYhAArmIwAK5iUACuYmAArmKQAK5kIACuZjAArmZQAK5mcACuZpAArmawAK5m0ACuZvAArmcQAK5nMACuaUAArmlwAK5poACuadAArmoAAK5qMACuamAArmqQAK5qwACuauAArnKQAK5ysACuctAArnLwAK5zIACuczAArnNAAK5zUACuc2AArnOAAK5zoACuc7AArnPAAK5z4ACuc/AArnugAK57wACue+AArnwAAK58MACufEAArnxQAK58YACufHAArnyQAK58sACufMAArnzQAK588ACufQAAroSwAK6E0ACuhQAAroUgAK6FUACuhWAAroVwAK6FgACuhZAAroWwAK6F0ACuheAAroXwAK6GEACuhiAAroewAK6HwACuh9AArofwAK6PoACuj8AAro/gAK6QAACukDAArpBAAK6QUACukGAArpBwAK6QkACukLAArpDAAK6Q0ACukPAArpEAAK6YsACumNAArpjwAK6ZEACumUAArplQAK6ZYACumXAArpmAAK6ZoACumcAArpnQAK6Z4ACumgAArpoQAK6hwACuoeAArqIAAK6iIACuolAArqJgAK6icACuooAArqKQAK6isACuotAArqLgAK6i8ACuoxAArqMgAK6q0ACuqvAArqsQAK6rMACuq2AArqtwAK6rgACuq5AArqugAK6rwACuq+AArqvwAK6sAACurCAArqwwAK6z4ACutAAArrQgAK60QACutHAArrSAAK60kACutKAArrSwAK600ACutPAArrUAAK61EACutTAArrVAAK650ACuvBAArr6AAK7AwACuwPAArsEQAK7BMACuwVAArsFwAK7BkACuwaAArsHQAK7DYACuxTAArsVQAK7FcACuxZAArsWwAK7F0ACuxfAArsYQAK7H4ACuyBAArshAAK7IcACuyKAArsjQAK7JAACuyTAArslQAK7RAACu0SAArtFAAK7RYACu0ZAArtGgAK7RsACu0cAArtHQAK7R8ACu0hAArtIgAK7SMACu0lAArtJgAK7aEACu2jAArtpgAK7agACu2rAArtrAAK7a0ACu2uAArtrwAK7bEACu2zAArttAAK7bUACu23AArtuAAK7jMACu41AAruNwAK7jkACu48AAruPQAK7j4ACu4/AAruQAAK7kIACu5EAAruRQAK7kYACu5IAAruSQAK7sQACu7GAAruyQAK7ssACu7OAAruzwAK7tAACu7RAAru0gAK7tQACu7WAAru1wAK7tgACu7aAAru2wAK71YACu9YAArvWgAK71wACu9fAArvYAAK72EACu9iAArvYwAK72UACu9nAArvaAAK72kACu9rAArvbAAK7+cACu/pAArv6wAK7+0ACu/wAArv8QAK7/IACu/zAArv9AAK7/YACu/4AArv+QAK7/oACu/8AArv/QAK8HgACvB6AArwfQAK8H8ACvCCAArwgwAK8IQACvCFAArwhgAK8IgACvCKAArwiwAK8IwACvCOAArwjwAK8SIACvFFAArxZQAK8YUACvGHAArxiQAK8YsACvGNAArxkAAK8ZEACvGSAArxlQAK8ZYACvGYAArxmQAK8ZsACvGeAArxnwAK8aAACvGjAArxpAAK8akACvHCAArxywAK8c0ACvHPAArx2AAK8dsACvHeAArx4AAK8ikACvJNAArydAAK8pgACvKbAArynQAK8p8ACvKhAAryowAK8qUACvKmAAryqQAK8sIACvLjAAry5QAK8ucACvLpAAry6wAK8u0ACvLvAAry8QAK8vMACvMUAArzFwAK8xoACvMdAArzIAAK8yMACvMmAArzKQAK8ywACvMuAArzqQAK86sACvOtAArzrwAK87IACvOzAArztAAK87UACvO2AArzuAAK87oACvO7AArzvAAK874ACvO/AAr0OgAK9DwACvQ+AAr0QAAK9EMACvREAAr0RQAK9EYACvRHAAr0SQAK9EsACvRMAAr0TQAK9E8ACvRQAAr0ywAK9M0ACvTQAAr00gAK9NUACvTWAAr01wAK9NgACvTZAAr02wAK9N0ACvTeAAr03wAK9OEACvTiAAr0+wAK9PwACvT9AAr0/wAK9XoACvV8AAr1fgAK9YAACvWDAAr1hAAK9YUACvWGAAr1hwAK9YkACvWLAAr1jAAK9Y0ACvWPAAr1kAAK9gsACvYNAAr2DwAK9hEACvYUAAr2FQAK9hYACvYXAAr2GAAK9hoACvYcAAr2HQAK9h4ACvYgAAr2IQAK9pwACvaeAAr2oAAK9qIACvalAAr2pgAK9qcACvaoAAr2qQAK9qsACvatAAr2rgAK9q8ACvaxAAr2sgAK9y0ACvcvAAr3MQAK9zMACvc2AAr3NwAK9zgACvc5AAr3OgAK9zwACvc+AAr3PwAK90AACvdCAAr3QwAK974ACvfAAAr3wgAK98QACvfHAAr3yAAK98kACvfKAAr3ywAK980ACvfPAAr30AAK99EACvfTAAr31AAK+B0ACvhBAAr4aAAK+IwACviPAAr4kQAK+JMACviVAAr4lwAK+JkACviaAAr4nQAK+LYACvjTAAr41QAK+NcACvjZAAr42wAK+N0ACvjfAAr44QAK+P4ACvkBAAr5BAAK+QcACvkKAAr5DQAK+RAACvkTAAr5FQAK+ZAACvmSAAr5lAAK+ZYACvmZAAr5mgAK+ZsACvmcAAr5nQAK+Z8ACvmhAAr5ogAK+aMACvmlAAr5pgAK+iEACvojAAr6JQAK+icACvoqAAr6KwAK+iwACvotAAr6LgAK+jAACvoyAAr6MwAK+jQACvo2AAr6NwAK+rIACvq0AAr6tgAK+rgACvq7AAr6vAAK+r0ACvq+AAr6vwAK+sEACvrDAAr6xAAK+sUACvrHAAr6yAAK+0MACvtFAAr7RwAK+0kACvtMAAr7TQAK+04ACvtPAAr7UAAK+1IACvtUAAr7VQAK+1YACvtYAAr7WQAK+9QACvvWAAr72AAK+9oACvvdAAr73gAK+98ACvvgAAr74QAK++MACvvlAAr75gAK++cACvvpAAr76gAK/GUACvxnAAr8aQAK/GsACvxuAAr8bwAK/HAACvxxAAr8cgAK/HQACvx2AAr8dwAK/HgACvx6AAr8ewAK/PYACvz4AAr8+gAK/PwACvz/AAr9AAAK/QEACv0CAAr9AwAK/QUACv0HAAr9CAAK/QkACv0LAAr9DAAK/Z8ACv3CAAr94gAK/gIACv4EAAr+BgAK/ggACv4KAAr+DQAK/g4ACv4PAAr+EgAK/hMACv4VAAr+FgAK/hkACv4cAAr+HQAK/h4ACv4hAAr+IgAK/icACv5AAAr+SQAK/ksACv5NAAr+VgAK/lkACv5cAAr+XgAK/qcACv7LAAr+8gAK/xYACv8ZAAr/GwAK/x0ACv8fAAr/IQAK/yMACv8kAAr/JwAK/0AACv9hAAr/YwAK/2UACv9nAAr/aQAK/2sACv9tAAr/bwAK/3EACv+SAAr/lQAK/5gACv+bAAr/ngAK/6EACv+kAAr/pwAK/6oACv+sAAsAJwALACkACwArAAsALQALADAACwAxAAsAMgALADMACwA0AAsANgALADgACwA5AAsAOgALADwACwA9AAsAuAALALoACwC8AAsAvgALAMEACwDCAAsAwwALAMQACwDFAAsAxwALAMkACwDKAAsAywALAM0ACwDOAAsBSQALAUsACwFOAAsBUAALAVMACwFUAAsBVQALAVYACwFXAAsBWQALAVsACwFcAAsBXQALAV8ACwFgAAsBeQALAXoACwF7AAsBfQALAfgACwH6AAsB/AALAf4ACwIBAAsCAgALAgMACwIEAAsCBQALAgcACwIJAAsCCgALAgsACwINAAsCDgALAokACwKLAAsCjQALAo8ACwKSAAsCkwALApQACwKVAAsClgALApgACwKaAAsCmwALApwACwKeAAsCnwALAxoACwMcAAsDHgALAyAACwMjAAsDJAALAyUACwMmAAsDJwALAykACwMrAAsDLAALAy0ACwMvAAsDMAALA6sACwOtAAsDrwALA7EACwO0AAsDtQALA7YACwO3AAsDuAALA7oACwO8AAsDvQALA74ACwPAAAsDwQALBDwACwQ+AAsEQAALBEIACwRFAAsERgALBEcACwRIAAsESQALBEsACwRNAAsETgALBE8ACwRRAAsEUgALBJsACwS/AAsE5gALBQoACwUNAAsFDwALBREACwUTAAsFFQALBRcACwUYAAsFGwALBTQACwVRAAsFUwALBVUACwVXAAsFWQALBVsACwVdAAsFXwALBXwACwV/AAsFggALBYUACwWIAAsFiwALBY4ACwWRAAsFkwALBg4ACwYQAAsGEgALBhQACwYXAAsGGAALBhkACwYaAAsGGwALBh0ACwYfAAsGIAALBiEACwYjAAsGJAALBp8ACwahAAsGpAALBqYACwapAAsGqgALBqsACwasAAsGrQALBq8ACwaxAAsGsgALBrMACwa1AAsGtgALBzEACwczAAsHNQALBzcACwc6AAsHOwALBzwACwc9AAsHPgALB0AACwdCAAsHQwALB0QACwdGAAsHRwALB8IACwfEAAsHxwALB8kACwfMAAsHzQALB84ACwfPAAsH0AALB9IACwfUAAsH1QALB9YACwfYAAsH2QALCFwACwiAAAsIpAALCMcACwjuAAsJDgALCTUACwlcAAsJfAALCaAACwnEAAsJxgALCckACwnLAAsJzQALCc8ACwnSAAsJ1QALCdcACwnZAAsJ3AALCd4ACwngAAsJ4wALCeYACwnnAAsJ7AALCgUACwoKAAsKDAALChEACwoUAAsKFgALCl8ACwqDAAsKqgALCs4ACwrRAAsK0wALCtUACwrXAAsK2QALCtsACwrcAAsK3wALCvgACwsdAAsLHwALCyEACwsjAAsLJQALCycACwspAAsLKwALCy0ACwsvAAsLVAALC1cACwtaAAsLXQALC2AACwtjAAsLZgALC2kACwtsAAsLbwALC3EACwvsAAsL7gALC/EACwvzAAsL9gALC/cACwv4AAsL+QALC/oACwv8AAsL/gALC/8ACwwAAAsMAgALDAMACwwUAAsMFQALDBcACwySAAsMlAALDJYACwyYAAsMmwALDJwACwydAAsMngALDJ8ACwyhAAsMowALDKQACwylAAsMpwALDKgACw0jAAsNJQALDSgACw0qAAsNLQALDS4ACw0vAAsNMAALDTEACw0zAAsNNQALDTYACw03AAsNOQALDToACw1LAAsNTAALDU4ACw3JAAsNywALDc0ACw3PAAsN0gALDdMACw3UAAsN1QALDdYACw3YAAsN2gALDdsACw3cAAsN3gALDd8ACw5aAAsOXAALDl8ACw5hAAsOZAALDmUACw5mAAsOZwALDmgACw5qAAsObAALDm0ACw5uAAsOcAALDnEACw6CAAsOgwALDoUACw8AAAsPAgALDwQACw8GAAsPCQALDwoACw8LAAsPDAALDw0ACw8PAAsPEQALDxIACw8TAAsPFQALDxYACw+RAAsPkwALD5YACw+YAAsPmwALD5wACw+dAAsPngALD58ACw+hAAsPowALD6QACw+lAAsPpwALD6gACw/BAAsPwgALD8MACw/FAAsQQAALEEIACxBEAAsQRgALEEkACxBKAAsQSwALEEwACxBNAAsQTwALEFEACxBSAAsQUwALEFUACxBWAAsQ0QALENMACxDWAAsQ2AALENsACxDcAAsQ3QALEN4ACxDfAAsQ4QALEOMACxDkAAsQ5QALEOcACxDoAAsRBQALER4ACxEjAAsRJgALESsACxEuAAsRMAALETYACxHJAAsR7AALEgwACxIsAAsSLgALEjAACxIyAAsSNAALEjcACxI4AAsSOQALEjwACxI9AAsSPwALEkAACxJDAAsSRgALEkcACxJIAAsSSwALEkwACxJRAAsSagALEnMACxJ1AAsSdwALEoAACxKDAAsShgALEogACxLRAAsS9QALExwACxNAAAsTQwALE0UACxNHAAsTSQALE0sACxNNAAsTTgALE1EACxNqAAsTiwALE40ACxOPAAsTkQALE5MACxOVAAsTlwALE5kACxObAAsTvAALE78ACxPCAAsTxQALE8gACxPLAAsTzgALE9EACxPUAAsT1gALFFEACxRTAAsUVQALFFcACxRaAAsUWwALFFwACxRdAAsUXgALFGAACxRiAAsUYwALFGQACxRmAAsUZwALFOIACxTkAAsU5gALFOgACxTrAAsU7AALFO0ACxTuAAsU7wALFPEACxTzAAsU9AALFPUACxT3AAsU+AALFXMACxV1AAsVeAALFXoACxV9AAsVfgALFX8ACxWAAAsVgQALFYMACxWFAAsVhgALFYcACxWJAAsVigALFaMACxWkAAsVpQALFacACxYiAAsWJAALFiYACxYoAAsWKwALFiwACxYtAAsWLgALFi8ACxYxAAsWMwALFjQACxY1AAsWNwALFjgACxazAAsWtQALFrcACxa5AAsWvAALFr0ACxa+AAsWvwALFsAACxbCAAsWxAALFsUACxbGAAsWyAALFskACxdEAAsXRgALF0gACxdKAAsXTQALF04ACxdPAAsXUAALF1EACxdTAAsXVQALF1YACxdXAAsXWQALF1oACxfVAAsX1wALF9kACxfbAAsX3gALF98ACxfgAAsX4QALF+IACxfkAAsX5gALF+cACxfoAAsX6gALF+sACxhmAAsYaAALGGoACxhsAAsYbwALGHAACxhxAAsYcgALGHMACxh1AAsYdwALGHgACxh5AAsYewALGHwACxjFAAsY6QALGRAACxk0AAsZNwALGTkACxk7AAsZPQALGT8ACxlBAAsZQgALGUUACxleAAsZewALGX0ACxl/AAsZgQALGYMACxmFAAsZhwALGYkACxmmAAsZqQALGawACxmvAAsZsgALGbUACxm4AAsZuwALGb0ACxo4AAsaOgALGjwACxo+AAsaQQALGkIACxpDAAsaRAALGkUACxpHAAsaSQALGkoACxpLAAsaTQALGk4ACxrJAAsaywALGs0ACxrPAAsa0gALGtMACxrUAAsa1QALGtYACxrYAAsa2gALGtsACxrcAAsa3gALGt8ACxtaAAsbXAALG14ACxtgAAsbYwALG2QACxtlAAsbZgALG2cACxtpAAsbawALG2wACxttAAsbbwALG3AACxvrAAsb7QALG/AACxvyAAsb9QALG/YACxv3AAsb+AALG/kACxv7AAsb/QALG/4ACxv/AAscAQALHAIACxx9AAscfwALHIEACxyDAAschgALHIcACxyIAAsciQALHIoACxyMAAscjgALHI8ACxyQAAsckgALHJMACx0OAAsdEAALHRIACx0UAAsdFwALHRgACx0ZAAsdGgALHRsACx0dAAsdHwALHSAACx0hAAsdIwALHSQACx2fAAsdoQALHaQACx2mAAsdqQALHaoACx2rAAsdrAALHa0ACx2vAAsdsQALHbIACx2zAAsdtQALHbYACx3HAAsdzAALHc8ACx3RAAseCgALHg0ACx4PAAseEgALHhUACx4YAAseGwALHiAACx7DAAse5wALHwsACx8rAAsfUgALH3kACx+ZAAsfwAALH+QACyAHAAsgLgALIFIACyB2AAsgmgALIMEACyDCAAsgxAALIMYACyDJAAsgywALIM4ACyDQAAsg0gALINUACyDXAAsg2QALINwACyDfAAsg4QALIOMACyDlAAsg6AALIOsACyDuAAsg8wALIQwACyERAAshEwALIRgACyEbAAshHQALIWYACyGKAAshsQALIdUACyHYAAsh2gALIdwACyHeAAsh4AALIeIACyHjAAsh5gALIf8ACyIkAAsiJgALIigACyIqAAsiLAALIi4ACyIwAAsiMgALIjQACyI2AAsiWwALIl4ACyJhAAsiZAALImcACyJqAAsibQALInAACyJzAAsidgALIngACyLzAAsi9QALIvgACyL6AAsi/QALIv4ACyL/AAsjAAALIwEACyMDAAsjBQALIwYACyMHAAsjCQALIwoACyMbAAsjHAALIx4ACyOZAAsjmwALI50ACyOfAAsjogALI6MACyOkAAsjpQALI6YACyOoAAsjqgALI6sACyOsAAsjrgALI68ACyQqAAskLAALJC8ACyQxAAskNAALJDUACyQ2AAskNwALJDgACyQ6AAskPAALJD0ACyQ+AAskQAALJEEACyRSAAskVwALJFoACyRcAAskbQALJHoACyR9AAskgAALJIMACySFAAskoAALJK4ACyS6AAslNQALJTcACyU5AAslOwALJT4ACyU/AAslQAALJUEACyVCAAslRAALJUYACyVHAAslSAALJUoACyVLAAslxgALJcgACyXLAAslzQALJdAACyXRAAsl0gALJdMACyXUAAsl1gALJdgACyXZAAsl2gALJdwACyXdAAsl7gALJe8ACyXxAAsmbAALJm4ACyZwAAsmcgALJnUACyZ2AAsmdwALJngACyZ5AAsmewALJn0ACyZ+AAsmfwALJoEACyaCAAsm/QALJv8ACycCAAsnBAALJwcACycIAAsnCQALJwoACycLAAsnDQALJw8ACycQAAsnEQALJxMACycUAAsnLQALJy4ACycvAAsnMQALJ6wACyeuAAsnsAALJ7IACye1AAsntgALJ7cACye4AAsnuQALJ7sACye9AAsnvgALJ78ACyfBAAsnwgALKD0ACyg/AAsoQgALKEQACyhHAAsoSAALKEkACyhKAAsoSwALKE0ACyhPAAsoUAALKFEACyhTAAsoVAALKGwACyiFAAsotgALKLkACyi8AAsovwALKMIACyjFAAsoyAALKMsACyjOAAso0QALKNQACyjXAAso2gALKQsACykOAAspEQALKRQACykXAAspGgALKR0ACykgAAspIwALKSYACykpAAspLAALKS8ACykxAAspPwALKU4ACylmAAspeQALKYUACymZAAspowALKb4ACynKAAsqXQALKoAACyqgAAsqwAALKsIACyrEAAsqxgALKsgACyrLAAsqzAALKs0ACyrQAAsq0QALKtMACyrUAAsq1gALKtkACyraAAsq2wALKt4ACyrfAAsq5AALKv0ACysGAAsrCAALKwoACysTAAsrFgALKxkACysbAAsrZAALK4gACyuvAAsr0wALK9YACyvYAAsr2gALK9wACyveAAsr4AALK+EACyvkAAsr/QALLB4ACywgAAssIgALLCQACywmAAssKAALLCoACywsAAssLgALLE8ACyxSAAssVQALLFgACyxbAAssXgALLGEACyxkAAssZwALLGkACyzkAAss5gALLOgACyzqAAss7QALLO4ACyzvAAss8AALLPEACyzzAAss9QALLPYACyz3AAss+QALLPoACy11AAstdwALLXkACy17AAstfgALLX8ACy2AAAstgQALLYIACy2EAAsthgALLYcACy2IAAstigALLYsACy4GAAsuCAALLgsACy4NAAsuEAALLhEACy4SAAsuEwALLhQACy4WAAsuGAALLhkACy4aAAsuHAALLh0ACy42AAsuNwALLjgACy46AAsutQALLrcACy65AAsuuwALLr4ACy6/AAsuwAALLsEACy7CAAsuxAALLsYACy7HAAsuyAALLsoACy7LAAsvRgALL0gACy9KAAsvTAALL08ACy9QAAsvUQALL1IACy9TAAsvVQALL1cACy9YAAsvWQALL1sACy9cAAsv1wALL9kACy/bAAsv3QALL+AACy/hAAsv4gALL+MACy/kAAsv5gALL+gACy/pAAsv6gALL+wACy/tAAswaAALMGoACzBsAAswbgALMHEACzByAAswcwALMHQACzB1AAswdwALMHkACzB6AAswewALMH0ACzB+AAsw+QALMPsACzD9AAsw/wALMQIACzEDAAsxBAALMQUACzEGAAsxCAALMQoACzELAAsxDAALMQ4ACzEPAAsxWAALMXwACzGjAAsxxwALMcoACzHMAAsxzgALMdAACzHSAAsx1AALMdUACzHYAAsx8QALMg4ACzIQAAsyEgALMhQACzIWAAsyGAALMhoACzIcAAsyOQALMjwACzI/AAsyQgALMkUACzJIAAsySwALMk4ACzJQAAsyywALMs0ACzLPAAsy0QALMtQACzLVAAsy1gALMtcACzLYAAsy2gALMtwACzLdAAsy3gALMuAACzLhAAszXAALM14ACzNgAAszYgALM2UACzNmAAszZwALM2gACzNpAAszawALM20ACzNuAAszbwALM3EACzNyAAsz7QALM+8ACzPxAAsz8wALM/YACzP3AAsz+AALM/kACzP6AAsz/AALM/4ACzP/AAs0AAALNAIACzQDAAs0fgALNIAACzSCAAs0hAALNIcACzSIAAs0iQALNIoACzSLAAs0jQALNI8ACzSQAAs0kQALNJMACzSUAAs1DwALNREACzUTAAs1FQALNRgACzUZAAs1GgALNRsACzUcAAs1HgALNSAACzUhAAs1IgALNSQACzUlAAs1oAALNaIACzWkAAs1pgALNakACzWqAAs1qwALNawACzWtAAs1rwALNbEACzWyAAs1swALNbUACzW2AAs2MQALNjMACzY1AAs2NwALNjoACzY7AAs2PAALNj0ACzY+AAs2QAALNkIACzZDAAs2RAALNkYACzZHAAs22gALNv0ACzcdAAs3PQALNz8ACzdBAAs3QwALN0UACzdIAAs3SQALN0oACzdNAAs3TgALN1AACzdRAAs3VAALN1cACzdYAAs3WQALN1wACzddAAs3YgALN3sACzeEAAs3hgALN4gACzeRAAs3lAALN5cACzeZAAs34gALOAYACzgtAAs4UQALOFQACzhWAAs4WAALOFoACzhcAAs4XgALOF8ACzhiAAs4ewALOJwACzieAAs4oAALOKIACzikAAs4pgALOKgACziqAAs4rAALOM0ACzjQAAs40wALONYACzjZAAs43AALON8ACzjiAAs45QALOOcACzliAAs5ZAALOWYACzloAAs5awALOWwACzltAAs5bgALOW8ACzlxAAs5cwALOXQACzl1AAs5dwALOXgACznzAAs59QALOfcACzn5AAs5/AALOf0ACzn+AAs5/wALOgAACzoCAAs6BAALOgUACzoGAAs6CAALOgkACzqEAAs6hgALOokACzqLAAs6jgALOo8ACzqQAAs6kQALOpIACzqUAAs6lgALOpcACzqYAAs6mgALOpsACzq0AAs6tQALOrYACzq4AAs7MwALOzUACzs3AAs7OQALOzwACzs9AAs7PgALOz8ACztAAAs7QgALO0QACztFAAs7RgALO0gACztJAAs7xAALO8YACzvIAAs7ygALO80ACzvOAAs7zwALO9AACzvRAAs70wALO9UACzvWAAs71wALO9kACzvaAAs8VQALPFcACzxZAAs8WwALPF4ACzxfAAs8YAALPGEACzxiAAs8ZAALPGYACzxnAAs8aAALPGoACzxrAAs85gALPOgACzzqAAs87AALPO8ACzzwAAs88QALPPIACzzzAAs89QALPPcACzz4AAs8+QALPPsACzz8AAs9dwALPXkACz17AAs9fQALPYAACz2BAAs9ggALPYMACz2EAAs9hgALPYgACz2JAAs9igALPYwACz2NAAs91gALPfoACz4hAAs+RQALPkgACz5KAAs+TAALPk4ACz5QAAs+UgALPlMACz5WAAs+bwALPowACz6OAAs+kAALPpIACz6UAAs+lgALPpgACz6aAAs+twALProACz69AAs+wAALPsMACz7GAAs+yQALPswACz7OAAs/SQALP0sACz9NAAs/TwALP1IACz9TAAs/VAALP1UACz9WAAs/WAALP1oACz9bAAs/XAALP14ACz9fAAs/2gALP9wACz/fAAs/4QALP+QACz/lAAs/5gALP+cACz/oAAs/6gALP+wACz/tAAs/7gALP/AACz/xAAtAbAALQG4AC0BwAAtAcgALQHUAC0B2AAtAdwALQHgAC0B5AAtAewALQH0AC0B+AAtAfwALQIEAC0CCAAtA/QALQP8AC0ECAAtBBAALQQcAC0EIAAtBCQALQQoAC0ELAAtBDQALQQ8AC0EQAAtBEQALQRMAC0EUAAtBlwALQbsAC0HfAAtCAgALQikAC0JJAAtCcAALQpcAC0K3AAtC2wALQv8AC0MBAAtDBAALQwYAC0MIAAtDCgALQw0AC0MQAAtDEgALQxQAC0MXAAtDGQALQxsAC0MeAAtDIQALQyIAC0MnAAtDQAALQ0UAC0NHAAtDTAALQ08AC0NRAAtDmgALQ74AC0PlAAtECQALRAwAC0QOAAtEEAALRBIAC0QUAAtEFgALRBcAC0QaAAtEMwALRFgAC0RaAAtEXAALRF4AC0RgAAtEYgALRGQAC0RmAAtEaAALRGoAC0SPAAtEkgALRJUAC0SYAAtEmwALRJ4AC0ShAAtEpAALRKcAC0SqAAtErAALRScAC0UpAAtFLAALRS4AC0UxAAtFMgALRTMAC0U0AAtFNQALRTcAC0U5AAtFOgALRTsAC0U9AAtFPgALRU8AC0VQAAtFUgALRc0AC0XPAAtF0QALRdMAC0XWAAtF1wALRdgAC0XZAAtF2gALRdwAC0XeAAtF3wALReAAC0XiAAtF4wALRl4AC0ZgAAtGYwALRmUAC0ZoAAtGaQALRmoAC0ZrAAtGbAALRm4AC0ZwAAtGcQALRnIAC0Z0AAtGdQALRoYAC0aLAAtGjgALRpAAC0ahAAtGsgALRrUAC0a4AAtGuwALRr4AC0bAAAtG2wALRvMAC0cCAAtHfQALR38AC0eBAAtHgwALR4YAC0eHAAtHiAALR4kAC0eKAAtHjAALR44AC0ePAAtHkAALR5IAC0eTAAtIDgALSBAAC0gTAAtIFQALSBgAC0gZAAtIGgALSBsAC0gcAAtIHgALSCAAC0ghAAtIIgALSCQAC0glAAtINgALSDcAC0g5AAtItAALSLYAC0i4AAtIugALSL0AC0i+AAtIvwALSMAAC0jBAAtIwwALSMUAC0jGAAtIxwALSMkAC0jKAAtJRQALSUcAC0lKAAtJTAALSU8AC0lQAAtJUQALSVIAC0lTAAtJVQALSVcAC0lYAAtJWQALSVsAC0lcAAtJdQALSXYAC0l3AAtJeQALSfQAC0n2AAtJ+AALSfoAC0n9AAtJ/gALSf8AC0oAAAtKAQALSgMAC0oFAAtKBgALSgcAC0oJAAtKCgALSoUAC0qHAAtKigALSowAC0qPAAtKkAALSpEAC0qSAAtKkwALSpUAC0qXAAtKmAALSpkAC0qbAAtKnAALSroAC0rTAAtK9AALSvcAC0r6AAtK/QALSwAAC0sDAAtLBgALSwkAC0sMAAtLLQALSzAAC0szAAtLNgALSzkAC0s8AAtLPwALS0IAC0tFAAtLRwALS1AAC0tiAAtLggALS50AC0uvAAtLvgALS9YAC0xpAAtMjAALTKwAC0zMAAtMzgALTNAAC0zSAAtM1AALTNcAC0zYAAtM2QALTNwAC0zdAAtM3wALTOAAC0ziAAtM5QALTOYAC0znAAtM6gALTOsAC0zwAAtNCQALTRIAC00UAAtNFgALTR8AC00iAAtNJQALTScAC01wAAtNlAALTbsAC03fAAtN4gALTeQAC03mAAtN6AALTeoAC03sAAtN7QALTfAAC04JAAtOKgALTiwAC04uAAtOMAALTjIAC040AAtONgALTjgAC046AAtOWwALTl4AC05hAAtOZAALTmcAC05qAAtObQALTnAAC05zAAtOdQALTvAAC07yAAtO9AALTvYAC075AAtO+gALTvsAC078AAtO/QALTv8AC08BAAtPAgALTwMAC08FAAtPBgALT4EAC0+DAAtPhQALT4cAC0+KAAtPiwALT4wAC0+NAAtPjgALT5AAC0+SAAtPkwALT5QAC0+WAAtPlwALUBIAC1AUAAtQFwALUBkAC1AcAAtQHQALUB4AC1AfAAtQIAALUCIAC1AkAAtQJQALUCYAC1AoAAtQKQALUEIAC1BDAAtQRAALUEYAC1DBAAtQwwALUMUAC1DHAAtQygALUMsAC1DMAAtQzQALUM4AC1DQAAtQ0gALUNMAC1DUAAtQ1gALUNcAC1FSAAtRVAALUVYAC1FYAAtRWwALUVwAC1FdAAtRXgALUV8AC1FhAAtRYwALUWQAC1FlAAtRZwALUWgAC1HjAAtR5QALUecAC1HpAAtR7AALUe0AC1HuAAtR7wALUfAAC1HyAAtR9AALUfUAC1H2AAtR+AALUfkAC1J0AAtSdgALUngAC1J6AAtSfQALUn4AC1J/AAtSgAALUoEAC1KDAAtShQALUoYAC1KHAAtSiQALUooAC1MFAAtTBwALUwkAC1MLAAtTDgALUw8AC1MQAAtTEQALUxIAC1MUAAtTFgALUxcAC1MYAAtTGgALUxsAC1NkAAtTiAALU68AC1PTAAtT1gALU9gAC1PaAAtT3AALU94AC1PgAAtT4QALU+QAC1P9AAtUGgALVBwAC1QeAAtUIAALVCIAC1QkAAtUJgALVCgAC1RFAAtUSAALVEsAC1ROAAtUUQALVFQAC1RXAAtUWgALVFwAC1TXAAtU2QALVNsAC1TdAAtU4AALVOEAC1TiAAtU4wALVOQAC1TmAAtU6AALVOkAC1TqAAtU7AALVO0AC1VoAAtVagALVWwAC1VuAAtVcQALVXIAC1VzAAtVdAALVXUAC1V3AAtVeQALVXoAC1V7AAtVfQALVX4AC1X5AAtV+wALVf0AC1X/AAtWAgALVgMAC1YEAAtWBQALVgYAC1YIAAtWCgALVgsAC1YMAAtWDgALVg8AC1aKAAtWjAALVo4AC1aQAAtWkwALVpQAC1aVAAtWlgALVpcAC1aZAAtWmwALVpwAC1adAAtWnwALVqAAC1cbAAtXHQALVx8AC1chAAtXJAALVyUAC1cmAAtXJwALVygAC1cqAAtXLAALVy0AC1cuAAtXMAALVzEAC1esAAtXrgALV7AAC1eyAAtXtQALV7YAC1e3AAtXuAALV7kAC1e7AAtXvQALV74AC1e/AAtXwQALV8IAC1g9AAtYPwALWEEAC1hDAAtYRgALWEcAC1hIAAtYSQALWEoAC1hMAAtYTgALWE8AC1hQAAtYUgALWFMAC1jmAAtZCQALWSkAC1lJAAtZSwALWU0AC1lPAAtZUQALWVQAC1lVAAtZVgALWVkAC1laAAtZXAALWV0AC1lfAAtZYgALWWMAC1lkAAtZZwALWWgAC1ltAAtZhgALWY8AC1mRAAtZkwALWZwAC1mfAAtZogALWaQAC1ntAAtaEQALWjgAC1pcAAtaXwALWmEAC1pjAAtaZQALWmcAC1ppAAtaagALWm0AC1qGAAtapwALWqkAC1qrAAtarQALWq8AC1qxAAtaswALWrUAC1q3AAta2AALWtsAC1reAAta4QALWuQAC1rnAAta6gALWu0AC1rwAAta8gALW20AC1tvAAtbcQALW3MAC1t2AAtbdwALW3gAC1t5AAtbegALW3wAC1t+AAtbfwALW4AAC1uCAAtbgwALW/4AC1wAAAtcAgALXAQAC1wHAAtcCAALXAkAC1wKAAtcCwALXA0AC1wPAAtcEAALXBEAC1wTAAtcFAALXI8AC1yRAAtclAALXJYAC1yZAAtcmgALXJsAC1ycAAtcnQALXJ8AC1yhAAtcogALXKMAC1ylAAtcpgALXL8AC1zAAAtcwQALXMMAC10+AAtdQAALXUIAC11EAAtdRwALXUgAC11JAAtdSgALXUsAC11NAAtdTwALXVAAC11RAAtdUwALXVQAC13PAAtd0QALXdMAC13VAAtd2AALXdkAC13aAAtd2wALXdwAC13eAAtd4AALXeEAC13iAAtd5AALXeUAC15gAAteYgALXmQAC15mAAteaQALXmoAC15rAAtebAALXm0AC15vAAtecQALXnIAC15zAAtedQALXnYAC17xAAte8wALXvUAC173AAte+gALXvsAC178AAte/QALXv4AC18AAAtfAgALXwMAC18EAAtfBgALXwcAC1+CAAtfhAALX4YAC1+IAAtfiwALX4wAC1+NAAtfjgALX48AC1+RAAtfkwALX5QAC1+VAAtflwALX5gAC1/hAAtgBQALYCwAC2BQAAtgUwALYFUAC2BXAAtgWQALYFsAC2BdAAtgXgALYGEAC2B6AAtglwALYJkAC2CbAAtgnQALYJ8AC2ChAAtgowALYKUAC2DCAAtgxQALYMgAC2DLAAtgzgALYNEAC2DUAAtg1wALYNkAC2FUAAthVgALYVgAC2FaAAthXQALYV4AC2FfAAthYAALYWEAC2FjAAthZQALYWYAC2FnAAthaQALYWoAC2HlAAth5wALYekAC2HrAAth7gALYe8AC2HwAAth8QALYfIAC2H0AAth9gALYfcAC2H4AAth+gALYfsAC2J2AAtieAALYnoAC2J8AAtifwALYoAAC2KBAAtiggALYoMAC2KFAAtihwALYogAC2KJAAtiiwALYowAC2MHAAtjCQALYwwAC2MOAAtjEQALYxIAC2MTAAtjFAALYxUAC2MXAAtjGQALYxoAC2MbAAtjHQALYx4AC2OZAAtjmwALY50AC2OfAAtjogALY6MAC2OkAAtjpQALY6YAC2OoAAtjqgALY6sAC2OsAAtjrgALY68AC2QqAAtkLAALZC4AC2QwAAtkMwALZDQAC2Q1AAtkNgALZDcAC2Q5AAtkOwALZDwAC2Q9AAtkPwALZEAAC2S7AAtkvQALZL8AC2TBAAtkxAALZMUAC2TGAAtkxwALZMgAC2TKAAtkzAALZM0AC2TOAAtk0AALZNEAC2VkAAtlhwALZacAC2XHAAtlyQALZcsAC2XNAAtlzwALZdIAC2XTAAtl1AALZdcAC2XYAAtl2gALZdsAC2XdAAtl4AALZeEAC2XiAAtl5QALZeYAC2XvAAtmCAALZhEAC2YTAAtmFQALZh4AC2YhAAtmJAALZiYAC2ZvAAtmkwALZroAC2beAAtm4QALZuMAC2blAAtm5wALZukAC2brAAtm7AALZu8AC2cIAAtnKQALZysAC2ctAAtnLwALZzEAC2czAAtnNQALZzcAC2c5AAtnWgALZ10AC2dgAAtnYwALZ2YAC2dpAAtnbAALZ28AC2dyAAtndAALZ+8AC2fxAAtn8wALZ/UAC2f4AAtn+QALZ/oAC2f7AAtn/AALZ/4AC2gAAAtoAQALaAIAC2gEAAtoBQALaIAAC2iCAAtohAALaIYAC2iJAAtoigALaIsAC2iMAAtojQALaI8AC2iRAAtokgALaJMAC2iVAAtolgALaREAC2kTAAtpFgALaRgAC2kbAAtpHAALaR0AC2keAAtpHwALaSEAC2kjAAtpJAALaSUAC2knAAtpKAALaUEAC2lCAAtpQwALaUUAC2nAAAtpwgALacQAC2nGAAtpyQALacoAC2nLAAtpzAALac0AC2nPAAtp0QALadIAC2nTAAtp1QALadYAC2pRAAtqUwALalUAC2pXAAtqWgALalsAC2pcAAtqXQALal4AC2pgAAtqYgALamMAC2pkAAtqZgALamcAC2riAAtq5AALauYAC2roAAtq6wALauwAC2rtAAtq7gALau8AC2rxAAtq8wALavQAC2r1AAtq9wALavgAC2tzAAtrdQALa3cAC2t5AAtrfAALa30AC2t+AAtrfwALa4AAC2uCAAtrhAALa4UAC2uGAAtriAALa4kAC2wEAAtsBgALbAgAC2wKAAtsDQALbA4AC2wPAAtsEAALbBEAC2wTAAtsFQALbBYAC2wXAAtsGQALbBoAC2xjAAtshwALbK4AC2zSAAts1QALbNcAC2zZAAts2wALbN0AC2zfAAts4AALbOMAC2z8AAttGQALbRsAC20dAAttHwALbSEAC20jAAttJQALbScAC21EAAttRwALbUoAC21NAAttUAALbVMAC21WAAttWQALbVsAC23WAAtt2AALbdoAC23cAAtt3wALbeAAC23hAAtt4gALbeMAC23lAAtt5wALbegAC23pAAtt6wALbewAC25nAAtuaQALbmsAC25tAAtucAALbnEAC25yAAtucwALbnQAC252AAtueAALbnkAC256AAtufAALbn0AC274AAtu+gALbvwAC27+AAtvAQALbwIAC28DAAtvBAALbwUAC28HAAtvCQALbwoAC28LAAtvDQALbw4AC2+JAAtviwALb40AC2+PAAtvkgALb5MAC2+UAAtvlQALb5YAC2+YAAtvmgALb5sAC2+cAAtvngALb58AC3AaAAtwHAALcB4AC3AgAAtwIwALcCQAC3AlAAtwJgALcCcAC3ApAAtwKwALcCwAC3AtAAtwLwALcDAAC3CrAAtwrQALcK8AC3CxAAtwtAALcLUAC3C2AAtwtwALcLgAC3C6AAtwvAALcL0AC3C+AAtwwAALcMEAC3E8AAtxPgALcUAAC3FCAAtxRQALcUYAC3FHAAtxSAALcUkAC3FLAAtxTQALcU4AC3FPAAtxUQALcVIAC3HlAAtyCAALcigAC3JIAAtySgALckwAC3JOAAtyUAALclMAC3JUAAtyVQALclgAC3JZAAtyWwALclwAC3JeAAtyYQALcmIAC3JjAAtyZgALcmcAC3JsAAtyhQALco4AC3KQAAtykgALcpsAC3KeAAtyoQALcqMAC3LsAAtzEAALczcAC3NbAAtzXgALc2AAC3NiAAtzZAALc2YAC3NoAAtzaQALc2wAC3OFAAtzpgALc6gAC3OqAAtzrAALc64AC3OwAAtzsgALc7QAC3O2AAtz1wALc9oAC3PdAAtz4AALc+MAC3PmAAtz6QALc+wAC3PvAAtz8QALdGwAC3RuAAt0cAALdHIAC3R1AAt0dgALdHcAC3R4AAt0eQALdHsAC3R9AAt0fgALdH8AC3SBAAt0ggALdP0AC3T/AAt1AQALdQMAC3UGAAt1BwALdQgAC3UJAAt1CgALdQwAC3UOAAt1DwALdRAAC3USAAt1EwALdY4AC3WQAAt1kwALdZUAC3WYAAt1mQALdZoAC3WbAAt1nAALdZ4AC3WgAAt1oQALdaIAC3WkAAt1pQALdb4AC3W/AAt1wAALdcIAC3Y9AAt2PwALdkEAC3ZDAAt2RgALdkcAC3ZIAAt2SQALdkoAC3ZMAAt2TgALdk8AC3ZQAAt2UgALdlMAC3bOAAt20AALdtIAC3bUAAt21wALdtgAC3bZAAt22gALdtsAC3bdAAt23wALduAAC3bhAAt24wALduQAC3dfAAt3YQALd2MAC3dlAAt3aAALd2kAC3dqAAt3awALd2wAC3duAAt3cAALd3EAC3dyAAt3dAALd3UAC3fwAAt38gALd/QAC3f2AAt3+QALd/oAC3f7AAt3/AALd/0AC3f/AAt4AQALeAIAC3gDAAt4BQALeAYAC3iBAAt4gwALeIUAC3iHAAt4igALeIsAC3iMAAt4jQALeI4AC3iQAAt4kgALeJMAC3iUAAt4lgALeJcAC3jgAAt5BAALeSsAC3lPAAt5UgALeVQAC3lWAAt5WAALeVoAC3lcAAt5XQALeWAAC3l5AAt5lgALeZgAC3maAAt5nAALeZ4AC3mgAAt5ogALeaQAC3nBAAt5xAALeccAC3nKAAt5zQALedAAC3nTAAt51gALedgAC3pTAAt6VQALelcAC3pZAAt6XAALel0AC3peAAt6XwALemAAC3piAAt6ZAALemUAC3pmAAt6aAALemkAC3rkAAt65gALeugAC3rqAAt67QALeu4AC3rvAAt68AALevEAC3rzAAt69QALevYAC3r3AAt6+QALevoAC3t1AAt7dwALe3kAC3t7AAt7fgALe38AC3uAAAt7gQALe4IAC3uEAAt7hgALe4cAC3uIAAt7igALe4sAC3wGAAt8CAALfAoAC3wMAAt8DwALfBAAC3wRAAt8EgALfBMAC3wVAAt8FwALfBgAC3wZAAt8GwALfBwAC3yXAAt8mQALfJsAC3ydAAt8oAALfKEAC3yiAAt8owALfKQAC3ymAAt8qAALfKkAC3yqAAt8rAALfK0AC30oAAt9KgALfSwAC30uAAt9MQALfTIAC30zAAt9NAALfTUAC303AAt9OQALfToAC307AAt9PQALfT4AC325AAt9uwALfb0AC32/AAt9wgALfcMAC33EAAt9xQALfcYAC33IAAt9ygALfcsAC33MAAt9zgALfc8AC35iAAt+hQALfqUAC37FAAt+xwALfskAC37LAAt+zQALftAAC37RAAt+0gALftUAC37WAAt+2AALftkAC37cAAt+3wALfuAAC37hAAt+5AALfuUAC37qAAt/AwALfwwAC38OAAt/EAALfxkAC38cAAt/HwALfyEAC39qAAt/jgALf7UAC3/ZAAt/3AALf94AC3/gAAt/4gALf+QAC3/mAAt/5wALf+oAC4ADAAuAJAALgCYAC4AoAAuAKgALgCwAC4AuAAuAMAALgDIAC4A0AAuAVQALgFgAC4BbAAuAXgALgGEAC4BkAAuAZwALgGoAC4BtAAuAbwALgOoAC4DsAAuA7gALgPAAC4DzAAuA9AALgPUAC4D2AAuA9wALgPkAC4D7AAuA/AALgP0AC4D/AAuBAAALgXsAC4F9AAuBfwALgYEAC4GEAAuBhQALgYYAC4GHAAuBiAALgYoAC4GMAAuBjQALgY4AC4GQAAuBkQALggwAC4IOAAuCEQALghMAC4IWAAuCFwALghgAC4IZAAuCGgALghwAC4IeAAuCHwALgiAAC4IiAAuCIwALgjwAC4I9AAuCPgALgkAAC4K7AAuCvQALgr8AC4LBAAuCxAALgsUAC4LGAAuCxwALgsgAC4LKAAuCzAALgs0AC4LOAAuC0AALgtEAC4NMAAuDTgALg1AAC4NSAAuDVQALg1YAC4NXAAuDWAALg1kAC4NbAAuDXQALg14AC4NfAAuDYQALg2IAC4PdAAuD3wALg+EAC4PjAAuD5gALg+cAC4PoAAuD6QALg+oAC4PsAAuD7gALg+8AC4PwAAuD8gALg/MAC4RuAAuEcAALhHIAC4R0AAuEdwALhHgAC4R5AAuEegALhHsAC4R9AAuEfwALhIAAC4SBAAuEgwALhIQAC4T/AAuFAQALhQMAC4UFAAuFCAALhQkAC4UKAAuFCwALhQwAC4UOAAuFEAALhREAC4USAAuFFAALhRUAC4VeAAuFggALhakAC4XNAAuF0AALhdIAC4XUAAuF1gALhdgAC4XaAAuF2wALhd4AC4X3AAuGFAALhhYAC4YYAAuGGgALhhwAC4YeAAuGIAALhiIAC4Y/AAuGQgALhkUAC4ZIAAuGSwALhk4AC4ZRAAuGVAALhlYAC4bRAAuG0wALhtUAC4bXAAuG2gALhtsAC4bcAAuG3QALht4AC4bgAAuG4gALhuMAC4bkAAuG5gALhucAC4diAAuHZAALh2YAC4doAAuHawALh2wAC4dtAAuHbgALh28AC4dxAAuHcwALh3QAC4d1AAuHdwALh3gAC4fzAAuH9QALh/cAC4f5AAuH/AALh/0AC4f+AAuH/wALiAAAC4gCAAuIBAALiAUAC4gGAAuICAALiAkAC4iEAAuIhgALiIkAC4iLAAuIjgALiI8AC4iQAAuIkQALiJIAC4iUAAuIlgALiJcAC4iYAAuImgALiJsAC4kWAAuJGAALiRoAC4kcAAuJHwALiSAAC4khAAuJIgALiSMAC4klAAuJJwALiSgAC4kpAAuJKwALiSwAC4mnAAuJqQALiasAC4mtAAuJsAALibEAC4myAAuJswALibQAC4m2AAuJuAALibkAC4m6AAuJvAALib0AC4o4AAuKOgALij0AC4o/AAuKQgALikMAC4pEAAuKRQALikYAC4pIAAuKSgALiksAC4pMAAuKTgALik8AC4riAAuLBQALiyUAC4tFAAuLRwALi0kAC4tLAAuLTQALi1AAC4tRAAuLUgALi1UAC4tWAAuLWAALi1kAC4tbAAuLXgALi18AC4tgAAuLYwALi2QAC4tpAAuLggALi4sAC4uNAAuLjwALi5gAC4ubAAuLngALi6AAC4vpAAuMDQALjDQAC4xYAAuMWwALjF0AC4xfAAuMYQALjGMAC4xlAAuMZgALjGkAC4yCAAuMowALjKUAC4ynAAuMqQALjKsAC4ytAAuMrwALjLEAC4yzAAuM1AALjNcAC4zaAAuM3QALjOAAC4zjAAuM5gALjOkAC4zsAAuM7gALjWkAC41rAAuNbQALjW8AC41yAAuNcwALjXQAC411AAuNdgALjXgAC416AAuNewALjXwAC41+AAuNfwALjfoAC438AAuN/gALjgAAC44DAAuOBAALjgUAC44GAAuOBwALjgkAC44LAAuODAALjg0AC44PAAuOEAALjosAC46NAAuOkAALjpIAC46VAAuOlgALjpcAC46YAAuOmQALjpsAC46dAAuOngALjp8AC46hAAuOogALjrsAC468AAuOvQALjr8AC486AAuPPAALjz4AC49AAAuPQwALj0QAC49FAAuPRgALj0cAC49JAAuPSwALj0wAC49NAAuPTwALj1AAC4/LAAuPzQALj88AC4/RAAuP1AALj9UAC4/WAAuP1wALj9gAC4/aAAuP3AALj90AC4/eAAuP4AALj+EAC5BcAAuQXgALkGAAC5BiAAuQZQALkGYAC5BnAAuQaAALkGkAC5BrAAuQbQALkG4AC5BvAAuQcQALkHIAC5DtAAuQ7wALkPEAC5DzAAuQ9gALkPcAC5D4AAuQ+QALkPoAC5D8AAuQ/gALkP8AC5EAAAuRAgALkQMAC5F+AAuRgAALkYIAC5GEAAuRhwALkYgAC5GJAAuRigALkYsAC5GNAAuRjwALkZAAC5GRAAuRkwALkZQAC5HdAAuSAQALkigAC5JMAAuSTwALklEAC5JTAAuSVQALklcAC5JZAAuSWgALkl0AC5J2AAuSkwALkpUAC5KXAAuSmQALkpsAC5KdAAuSnwALkqEAC5K+AAuSwQALksQAC5LHAAuSygALks0AC5LQAAuS0wALktUAC5NQAAuTUgALk1QAC5NWAAuTWQALk1oAC5NbAAuTXAALk10AC5NfAAuTYQALk2IAC5NjAAuTZQALk2YAC5PhAAuT4wALk+UAC5PnAAuT6gALk+sAC5PsAAuT7QALk+4AC5PwAAuT8gALk/MAC5P0AAuT9gALk/cAC5RyAAuUdAALlHYAC5R4AAuUewALlHwAC5R9AAuUfgALlH8AC5SBAAuUgwALlIQAC5SFAAuUhwALlIgAC5UDAAuVBQALlQcAC5UJAAuVDAALlQ0AC5UOAAuVDwALlRAAC5USAAuVFAALlRUAC5UWAAuVGAALlRkAC5WUAAuVlgALlZgAC5WaAAuVnQALlZ4AC5WfAAuVoAALlaEAC5WjAAuVpQALlaYAC5WnAAuVqQALlaoAC5YlAAuWJwALlikAC5YrAAuWLgALli8AC5YwAAuWMQALljIAC5Y0AAuWNgALljcAC5Y4AAuWOgALljsAC5a2AAuWuAALlroAC5a8AAuWvwALlsAAC5bBAAuWwgALlsMAC5bFAAuWxwALlsgAC5bJAAuWywALlswAC5dfAAuXggALl6IAC5fCAAuXxAALl8YAC5fIAAuXygALl80AC5fOAAuXzwALl9IAC5fTAAuX1QALl9YAC5fYAAuX2wALl9wAC5fdAAuX4AALl+EAC5fmAAuX/wALmAgAC5gKAAuYDAALmBUAC5gYAAuYGwALmB0AC5hmAAuYigALmLEAC5jVAAuY2AALmNoAC5jcAAuY3gALmOAAC5jiAAuY4wALmOYAC5j/AAuZIAALmSIAC5kkAAuZJgALmSgAC5kqAAuZLAALmS4AC5kwAAuZUQALmVQAC5lXAAuZWgALmV0AC5lgAAuZYwALmWYAC5lpAAuZawALmeYAC5noAAuZ6gALmewAC5nvAAuZ8AALmfEAC5nyAAuZ8wALmfUAC5n3AAuZ+AALmfkAC5n7AAuZ/AALmncAC5p5AAuaewALmn0AC5qAAAuagQALmoIAC5qDAAuahAALmoYAC5qIAAuaiQALmooAC5qMAAuajQALmwgAC5sKAAubDQALmw8AC5sSAAubEwALmxQAC5sVAAubFgALmxgAC5saAAubGwALmxwAC5seAAubHwALmzgAC5s5AAubOgALmzwAC5u3AAubuQALm7sAC5u9AAubwAALm8EAC5vCAAubwwALm8QAC5vGAAubyAALm8kAC5vKAAubzAALm80AC5xIAAucSgALnEwAC5xOAAucUQALnFIAC5xTAAucVAALnFUAC5xXAAucWQALnFoAC5xbAAucXQALnF4AC5zZAAuc2wALnN0AC5zfAAuc4gALnOMAC5zkAAuc5QALnOYAC5zoAAuc6gALnOsAC5zsAAuc7gALnO8AC51qAAudbAALnW4AC51wAAudcwALnXQAC511AAuddgALnXcAC515AAudewALnXwAC519AAudfwALnYAAC537AAud/QALnf8AC54BAAueBAALngUAC54GAAueBwALnggAC54KAAueDAALng0AC54OAAueEAALnhEAC55aAAuefgALnqUAC57JAAuezAALns4AC57QAAue0gALntQAC57WAAue1wALntoAC57zAAufEAALnxIAC58UAAufFgALnxgAC58aAAufHAALnx4AC587AAufPgALn0EAC59EAAufRwALn0oAC59NAAufUAALn1IAC5/NAAufzwALn9EAC5/TAAuf1gALn9cAC5/YAAuf2QALn9oAC5/cAAuf3gALn98AC5/gAAuf4gALn+MAC6BeAAugYAALoGIAC6BkAAugZwALoGgAC6BpAAugagALoGsAC6BtAAugbwALoHAAC6BxAAugcwALoHQAC6DvAAug8QALoPMAC6D1AAug+AALoPkAC6D6AAug+wALoPwAC6D+AAuhAAALoQEAC6ECAAuhBAALoQUAC6GAAAuhggALoYQAC6GGAAuhiQALoYoAC6GLAAuhjAALoY0AC6GPAAuhkQALoZIAC6GTAAuhlQALoZYAC6IRAAuiEwALohUAC6IXAAuiGgALohsAC6IcAAuiHQALoh4AC6IgAAuiIgALoiMAC6IkAAuiJgALoicAC6KiAAuipAALoqYAC6KoAAuiqwALoqwAC6KtAAuirgALoq8AC6KxAAuiswALorQAC6K1AAuitwALorgAC6MzAAujNQALozcAC6M5AAujPAALoz0AC6M+AAujPwALo0AAC6NCAAujRAALo0UAC6NGAAujSAALo0kAC6PcAAuj/wALpB8AC6Q/AAukQQALpEMAC6RFAAukRwALpEoAC6RLAAukTAALpE8AC6RQAAukUgALpFMAC6RVAAukWAALpFkAC6RaAAukXQALpF4AC6RjAAukfAALpIUAC6SHAAukiQALpJIAC6SVAAukmAALpJoAC6TjAAulBwALpS4AC6VSAAulVQALpVcAC6VZAAulWwALpV0AC6VfAAulYAALpWMAC6V8AAulnQALpZ8AC6WhAAulowALpaUAC6WnAAulqQALpasAC6WtAAulzgALpdEAC6XUAAul1wALpdoAC6XdAAul4AALpeMAC6XmAAul6AALpmMAC6ZlAAumZwALpmkAC6ZsAAumbQALpm4AC6ZvAAumcAALpnIAC6Z0AAumdQALpnYAC6Z4AAumeQALpvQAC6b2AAum+AALpvoAC6b9AAum/gALpv8AC6cAAAunAQALpwMAC6cFAAunBgALpwcAC6cJAAunCgALp4UAC6eHAAunigALp4wAC6ePAAunkAALp5EAC6eSAAunkwALp5UAC6eXAAunmAALp5kAC6ebAAunnAALp7UAC6e2AAuntwALp7kAC6g0AAuoNgALqDgAC6g6AAuoPQALqD4AC6g/AAuoQAALqEEAC6hDAAuoRQALqEYAC6hHAAuoSQALqEoAC6jFAAuoxwALqMkAC6jLAAuozgALqM8AC6jQAAuo0QALqNIAC6jUAAuo1gALqNcAC6jYAAuo2gALqNsAC6lWAAupWAALqVoAC6lcAAupXwALqWAAC6lhAAupYgALqWMAC6llAAupZwALqWgAC6lpAAupawALqWwAC6nnAAup6QALqesAC6ntAAup8AALqfEAC6nyAAup8wALqfQAC6n2AAup+AALqfkAC6n6AAup/AALqf0AC6p4AAuqegALqnwAC6p+AAuqgQALqoIAC6qDAAuqhAALqoUAC6qHAAuqiQALqooAC6qLAAuqjQALqo4AC6rXAAuq+wALqyIAC6tGAAurSQALq0sAC6tNAAurTwALq1EAC6tTAAurVAALq1cAC6twAAurjQALq48AC6uRAAurkwALq5UAC6uXAAurmQALq5sAC6u4AAuruwALq74AC6vBAAurxAALq8cAC6vKAAurzQALq88AC6xKAAusTAALrE4AC6xQAAusUwALrFQAC6xVAAusVgALrFcAC6xZAAusWwALrFwAC6xdAAusXwALrGAAC6zbAAus3QALrN8AC6zhAAus5AALrOUAC6zmAAus5wALrOgAC6zqAAus7AALrO0AC6zuAAus8AALrPEAC61sAAutbgALrXAAC61yAAutdQALrXYAC613AAuteAALrXkAC617AAutfQALrX4AC61/AAutgQALrYIAC639AAut/wALrgEAC64DAAuuBgALrgcAC64IAAuuCQALrgoAC64MAAuuDgALrg8AC64QAAuuEgALrhMAC66OAAuukAALrpIAC66UAAuulwALrpgAC66ZAAuumgALrpsAC66dAAuunwALrqAAC66hAAuuowALrqQAC68fAAuvIQALryMAC68lAAuvKAALrykAC68qAAuvKwALrywAC68uAAuvMAALrzEAC68yAAuvNAALrzUAC6+wAAuvsgALr7QAC6+2AAuvuQALr7oAC6+7AAuvvAALr70AC6+/AAuvwQALr8IAC6/DAAuvxQALr8YAC6/XAAuv2AALr9oAC7BVAAuwVwALsFkAC7BbAAuwXgALsF8AC7BgAAuwYQALsGIAC7BkAAuwZgALsGcAC7BoAAuwagALsGsAC7DmAAuw6AALsOoAC7DsAAuw7wALsPAAC7DxAAuw8gALsPMAC7D1AAuw9wALsPgAC7D5AAuw+wALsPwAC7F3AAuxeQALsXwAC7F+AAuxgQALsYIAC7GDAAuxhAALsYUAC7GHAAuxiQALsYoAC7GLAAuxjQALsY4AC7IhAAuyRAALsmQAC7KEAAuyhgALsogAC7KKAAuyjAALso8AC7KQAAuykQALspQAC7KVAAuylwALspgAC7KbAAuyngALsp8AC7KgAAuyowALsqQAC7KpAAuywgALsssAC7LNAAuyzwALstgAC7LbAAuy3gALsuAAC7MpAAuzTQALs3QAC7OYAAuzmwALs50AC7OfAAuzoQALs6MAC7OlAAuzpgALs6kAC7PCAAuz4wALs+UAC7PnAAuz6QALs+sAC7PtAAuz7wALs/EAC7PzAAu0FAALtBcAC7QaAAu0HQALtCAAC7QjAAu0JgALtCkAC7QsAAu0LgALtKkAC7SrAAu0rQALtK8AC7SyAAu0swALtLQAC7S1AAu0tgALtLgAC7S6AAu0uwALtLwAC7S+AAu0vwALtToAC7U8AAu1PgALtUAAC7VDAAu1RAALtUUAC7VGAAu1RwALtUkAC7VLAAu1TAALtU0AC7VPAAu1UAALtcsAC7XNAAu10AALtdIAC7XVAAu11gALtdcAC7XYAAu12QALtdsAC7XdAAu13gALtd8AC7XhAAu14gALtfsAC7X8AAu1/QALtf8AC7Z6AAu2fAALtn4AC7aAAAu2gwALtoQAC7aFAAu2hgALtocAC7aJAAu2iwALtowAC7aNAAu2jwALtpAAC7cLAAu3DQALtw8AC7cRAAu3FAALtxUAC7cWAAu3FwALtxgAC7caAAu3HAALtx0AC7ceAAu3IAALtyEAC7ecAAu3ngALt6AAC7eiAAu3pQALt6YAC7enAAu3qAALt6kAC7erAAu3rQALt64AC7evAAu3sQALt7IAC7gtAAu4LwALuDEAC7gzAAu4NgALuDcAC7g4AAu4OQALuDoAC7g8AAu4PgALuD8AC7hAAAu4QgALuEMAC7i+AAu4wAALuMIAC7jEAAu4xwALuMgAC7jJAAu4ygALuMsAC7jNAAu4zwALuNAAC7jRAAu40wALuNQAC7kdAAu5QQALuWgAC7mMAAu5jwALuZEAC7mTAAu5lQALuZcAC7mZAAu5mgALuZ0AC7m2AAu50wALudUAC7nXAAu52QALudsAC7ndAAu53wALueEAC7n+AAu6AQALugQAC7oHAAu6CgALug0AC7oQAAu6EwALuhUAC7qQAAu6kgALupQAC7qWAAu6mQALupoAC7qbAAu6nAALup0AC7qfAAu6oQALuqIAC7qjAAu6pQALuqYAC7shAAu7IwALuyYAC7soAAu7KwALuywAC7stAAu7LgALuy8AC7sxAAu7MwALuzQAC7s1AAu7NwALuzgAC7uzAAu7tQALu7cAC7u5AAu7vAALu70AC7u+AAu7vwALu8AAC7vCAAu7xAALu8UAC7vGAAu7yAALu8kAC7xEAAu8RgALvEkAC7xLAAu8TgALvE8AC7xQAAu8UQALvFIAC7xUAAu8VgALvFcAC7xYAAu8WgALvFsAC7zeAAu9AgALvSYAC71JAAu9cAALvZAAC723AAu93gALvf4AC74iAAu+RgALvkgAC75LAAu+TQALvk8AC75RAAu+VAALvlcAC75ZAAu+WwALvl4AC75gAAu+YgALvmUAC75oAAu+aQALvnIAC76LAAu+kAALvpIAC76XAAu+mgALvpwAC77lAAu/CQALvzAAC79UAAu/VwALv1kAC79bAAu/XQALv18AC79hAAu/YgALv2UAC79+AAu/owALv6UAC7+nAAu/qQALv6sAC7+tAAu/rwALv7EAC7+zAAu/tQALv9oAC7/dAAu/4AALv+MAC7/mAAu/6QALv+wAC7/vAAu/8gALv/UAC7/3AAvAcgALwHQAC8B3AAvAeQALwHwAC8B9AAvAfgALwH8AC8CAAAvAggALwIQAC8CFAAvAhgALwIgAC8CJAAvAmgALwJsAC8CdAAvBGAALwRoAC8EcAAvBHgALwSEAC8EiAAvBIwALwSQAC8ElAAvBJwALwSkAC8EqAAvBKwALwS0AC8EuAAvBqQALwasAC8GuAAvBsAALwbMAC8G0AAvBtQALwbYAC8G3AAvBuQALwbsAC8G8AAvBvQALwb8AC8HAAAvB0QALwdIAC8HUAAvCTwALwlEAC8JTAAvCVQALwlgAC8JZAAvCWgALwlsAC8JcAAvCXgALwmAAC8JhAAvCYgALwmQAC8JlAAvC4AALwuIAC8LlAAvC5wALwuoAC8LrAAvC7AALwu0AC8L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9AAvUfgAL1H8AC9SCAAvUgwAL1IgAC9ShAAvUqgAL1KwAC9SuAAvUtwAL1LoAC9S9AAvUvwAL1QgAC9UsAAvVUwAL1XcAC9V6AAvVfAAL1X4AC9WAAAvVggAL1YQAC9WFAAvViAAL1aEAC9XCAAvVxAAL1cYAC9XIAAvVygAL1cwAC9XOAAvV0AAL1dIAC9XzAAvV9gAL1fkAC9X8AAvV/wAL1gIAC9YFAAvWCAAL1gsAC9YNAAvWiAAL1ooAC9aMAAvWjgAL1pEAC9aSAAvWkwAL1pQAC9aVAAvWlwAL1pkAC9aaAAvWmwAL1p0AC9aeAAvXGQAL1xsAC9cdAAvXHwAL1yIAC9cjAAvXJAAL1yUAC9cmAAvXKAAL1yoAC9crAAvXLAAL1y4AC9cvAAvXqgAL16wAC9evAAvXsQAL17QAC9e1AAvXtgAL17cAC9e4AAvXugAL17wAC9e9AAvXvgAL18AAC9fBAAvX2gAL19sAC9fcAAvX3gAL2FkAC9hbAAvYXQAL2F8AC9hiAAvYYwAL2GQAC9hlAAvYZgAL2GgAC9hqAAvYawAL2GwAC9huAAvYbwAL2OoAC9jsAAvY7gAL2PAAC9jzAAvY9AAL2PUAC9j2AAvY9wAL2PkAC9j7AAvY/AAL2P0AC9j/AAvZAAAL2XsAC9l9AAvZfwAL2YEAC9mEAAvZhQAL2YYAC9mHAAvZiAAL2YoAC9mMAAvZjQAL2Y4AC9mQAAvZkQAL2gwAC9oOAAvaEAAL2hIAC9oVAAvaFgAL2hcAC9oYAAvaGQAL2hsAC9odAAvaHgAL2h8AC9ohAAvaIgAL2p0AC9qfAAvaoQAL2qMAC9qmAAvapwAL2qgAC9qpAAvaqgAL2qwAC9quAAvarwAL2rAAC9qyAAvaswAL2vwAC9sgAAvbRwAL22sAC9tuAAvbcAAL23IAC9t0AAvbdgAL23gAC9t5AAvbfAAL25UAC9uyAAvbtAAL27YAC9u4AAvbugAL27wAC9u+AAvbwAAL290AC9vgAAvb4wAL2+YAC9vpAAvb7AAL2+8AC9vyAAvb9AAL3G8AC9xxAAvccwAL3HUAC9x4AAvceQAL3HoAC9x7AAvcfAAL3H4AC9yAAAvcgQAL3IIAC9yEAAvchQAL3QAAC90CAAvdBQAL3QcAC90KAAvdCwAL3QwAC90NAAvdDgAL3RAAC90SAAvdEwAL3RQAC90WAAvdFwAL3ZIAC92UAAvdlgAL3ZgAC92bAAvdnAAL3Z0AC92eAAvdnwAL3aEAC92jAAvdpAAL3aUAC92nAAvdqAAL3iMAC94lAAveKAAL3ioAC94tAAveLgAL3i8AC94wAAveMQAL3jMAC941AAveNgAL3jcAC945AAveOgAL3rUAC963AAveuQAL3rsAC96+AAvevwAL3sAAC97BAAvewgAL3sQAC97GAAvexwAL3sgAC97KAAveywAL30YAC99IAAvfSgAL30wAC99PAAvfUAAL31EAC99SAAvfUwAL31UAC99XAAvfWAAL31kAC99bAAvfXAAL39cAC9/ZAAvf3AAL394AC9/hAAvf4gAL3+MAC9/kAAvf5QAL3+cAC9/pAAvf6gAL3+sAC9/tAAvf7gAL4IEAC+CkAAvgxAAL4OQAC+DmAAvg6AAL4OoAC+DsAAvg7wAL4PAAC+DxAAvg9AAL4PUAC+D3AAvg+AAL4PoAC+D9AAvg/gAL4P8AC+ECAAvhAwAL4QgAC+EhAAvhKgAL4SwAC+EuAAvhNwAL4ToAC+E9AAvhPwAL4YgAC+GsAAvh0wAL4fcAC+H6AAvh/AAL4f4AC+IAAAviAgAL4gQAC+IFAAviCAAL4iEAC+JCAAviRAAL4kYAC+JIAAviSgAL4kwAC+JOAAviUAAL4lIAC+JzAAvidgAL4nkAC+J8AAvifwAL4oIAC+KFAAviiAAL4osAC+KNAAvjCAAL4woAC+MMAAvjDgAL4xEAC+MSAAvjEwAL4xQAC+MVAAvjFwAL4xkAC+MaAAvjGwAL4x0AC+MeAAvjmQAL45sAC+OdAAvjnwAL46IAC+OjAAvjpAAL46UAC+OmAAvjqAAL46oAC+OrAAvjrAAL464AC+OvAAvkKgAL5CwAC+QvAAvkMQAL5DQAC+Q1AAvkNgAL5DcAC+Q4AAvkOgAL5DwAC+Q9AAvkPgAL5EAAC+RBAAvkWgAL5FsAC+RcAAvkXgAL5NkAC+TbAAvk3QAL5N8AC+TiAAvk4wAL5OQAC+TlAAvk5gAL5OgAC+TqAAvk6wAL5OwAC+TuAAvk7wAL5WoAC+VsAAvlbgAL5XAAC+VzAAvldAAL5XUAC+V2AAvldwAL5XkAC+V7AAvlfAAL5X0AC+V/AAvlgAAL5fsAC+X9AAvl/wAL5gEAC+Y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kAAwaZwAMGmoADBptAAwabwAMGuoADBrsAAwa7wAMGvEADBr0AAwa9QAMGvYADBr3AAwa+AAMGvoADBr8AAwa/QAMGv4ADBsAAAwbAQAMG3wADBt+AAwbgAAMG4IADBuFAAwbhgAMG4cADBuIAAwbiQAMG4sADBuNAAwbjgAMG48ADBuRAAwbkgAMHA0ADBwPAAwcEQAMHBMADBwWAAwcFwAMHBgADBwZAAwcGgAMHBwADBweAAwcHwAMHCAADBwiAAwcIwAMHJ4ADBygAAwcowAMHKUADByoAAwcqQAMHKoADByrAAwcrAAMHK4ADBywAAwcsQAMHLIADBy0AAwctQAMHTAADB0yAAwdNAAMHTYADB05AAwdOgAMHTsADB08AAwdPQAMHT8ADB1BAAwdQgAMHUMADB1FAAwdRgAMHcEADB3DAAwdxQAMHccADB3KAAwdywAMHcwADB3NAAwdzgAMHdAADB3SAAwd0wAMHdQADB3WAAwd1wAMHlIADB5UAAweVgAMHlgADB5bAAweXAAMHl0ADB5eAAweXwAMHmEADB5jAAweZAAMHmUADB5nAAweaAAMHvsADB8eAAwfPgAMH14ADB9gAAwfYgAMH2QADB9mAAwfaQAMH2oADB9rAAwfbgAMH28ADB9xAAwfcgAMH3UADB94AAwfeQAMH3oADB99AAwffgAMH4cADB+gAAwfqQAMH6sADB+tAAwftgAMH7kADB+8AAwfvgAMIAcADCArAAwgUgAMIHYADCB5AAwgewAMIH0ADCB/AAwggQAMIIMADCCEAAwghwAMIKAADCDBAAwgwwAMIMUADCDHAAwgyQAMIMsADCDNAAwgzwAMINEADCDyAAwg9QAMIPgADCD7AAwg/gAMIQEADCEEAAwhBwAMIQoADCEMAAwhhwAMIYkADCGLAAwhjQAMIZAADCGRAAwhkgAMIZMADCGUAAwhlgAMIZgADCGZAAwhmgAMIZwADCGdAAwiGAAMIhoADCIcAAwiHgAMIiEADCIiAAwiIwAMIiQADCIlAAwiJwAMIikADCIqAAwiKwAMIi0ADCIuAAwiqQAMIqsADCKuAAwisAAMIrMADCK0AAwitQAMIrYADCK3AAwiuQAMIrsADCK8AAwivQAMIr8ADCLAAAwi2QAMItoADCLbAAwi3QAMI1gADCNaAAwjXAAMI14ADCNhAAwjYgAMI2MADCNkAAwjZQAMI2cADCNpAAwjagAMI2sADCNtAAwjbgAMI+kADCPrAAwj7QAMI+8ADCPyAAwj8wAMI/QADCP1AAwj9gAMI/gADCP6AAwj+wAMI/wADCP+AAwj/wAMJHoADCR8AAwkfgAMJIAADCSDAAwkhAAMJIUADCSGAAwkhwAMJIkADCSLAAwkjAAMJI0ADCSPAAwkkAAMJQsADCUNAAwlDwAMJREADCUUAAwlFQAMJRYADCUXAAwlGAAMJRoADCUcAAwlHQAMJR4ADCUgAAwlIQAMJZwADCWeAAwloAAMJaIADCWlAAwlpgAMJacADCWoAAwlqQAMJasADCWtAAwlrgAMJa8ADCWxAAwlsgAMJfsADCYfAAwmRgAMJmoADCZtAAwmbwAMJnEADCZzAAwmdQAMJncADCZ4AAwmewAMJpQADCaxAAwmswAMJrUADCa3AAwmuQAMJrsADCa9AAwmvwAMJtwADCbfAAwm4gAMJuUADCboAAwm6wAMJu4ADCbxAAwm8wAMJ24ADCdwAAwncgAMJ3QADCd3AAwneAAMJ3kADCd6AAwnewAMJ30ADCd/AAwngAAMJ4EADCeDAAwnhAAMJ/8ADCgBAAwoAwAMKAUADCgIAAwoCQAMKAoADCgLAAwoDAAMKA4ADCgQAAwoEQAMKBIADCgUAAwoFQAMKJAADCiSAAwolAAMKJYADCiZAAwomgAMKJsADCicAAwonQAMKJ8ADCihAAwoogAMKKMADCilAAwopgAMKSEADCkjAAwpJgAMKSgADCkrAAwpLAAMKS0ADCkuAAwpLwAMKTEADCkzAAwpNAAMKTUADCk3AAwpOAAMKbMADCm1AAwptwAMKbkADCm8AAwpvQAMKb4ADCm/AAwpwAAMKcIADCnEAAwpxQAMKcYADCnIAAwpyQAMKkQADCpGAAwqSAAMKkoADCpNAAwqTgAMKk8ADCpQAAwqUQAMKlMADCpVAAwqVgAMKlcADCpZAAwqWgAMKtUADCrXAAwq2gAMKtwADCrfAAwq4AAMKuEADCriAAwq4wAMKuUADCrnAAwq6AAMKukADCrrAAwq7AAMK38ADCuiAAwrwgAMK+IADCvkAAwr5gAMK+gADCvqAAwr7QAMK+4ADCvvAAwr8gAMK/MADCv1AAwr9gAMK/gADCv7AAwr/AAMK/0ADCwAAAwsAQAMLAYADCwfAAwsKAAMLCoADCwsAAwsNQAMLDgADCw7AAwsPQAMLIYADCyqAAws0QAMLPUADCz4AAws+gAMLPwADCz+AAwtAAAMLQIADC0DAAwtBgAMLR8ADC1AAAwtQgAMLUQADC1GAAwtSAAMLUoADC1MAAwtTgAMLVAADC1xAAwtdAAMLXcADC16AAwtfQAMLYAADC2DAAwthgAMLYkADC2LAAwuBgAMLggADC4KAAwuDAAMLg8ADC4QAAwuEQAMLhIADC4TAAwuFQAMLhcADC4YAAwuGQAMLhsADC4cAAwulwAMLpkADC6bAAwunQAMLqAADC6hAAwuogAMLqMADC6kAAwupgAMLqgADC6pAAwuqgAMLqwADC6tAAwvKAAMLyoADC8tAAwvLwAMLzIADC8zAAwvNAAMLzUADC82AAwvOAAMLzoADC87AAwvPAAMLz4ADC8/AAwvWAAML1kADC9aAAwvXAAML9cADC/ZAAwv2wAML90ADC/gAAwv4QAML+IADC/jAAwv5AAML+YADC/oAAwv6QAML+oADC/sAAwv7QAMMGgADDBqAAwwbAAMMG4ADDBxAAwwcgAMMHMADDB0AAwwdQAMMHcADDB5AAwwegAMMHsADDB9AAwwfgAMMPkADDD7AAww/QAMMP8ADDECAAwxAwAMMQQADDEFAAwxBgAMMQgADDEKAAwxCwAMMQwADDEOAAwxDwAMMYoADDGMAAwxjgAMMZAADDGTAAwxlAAMMZUADDGWAAwxlwAMMZkADDGbAAwxnAAMMZ0ADDGfAAwxoAAMMhsADDIdAAwyHwAMMiEADDIkAAwyJQAMMiYADDInAAwyKAAMMioADDIsAAwyLQAMMi4ADDIwAAwyMQAMMnoADDKeAAwyxQAMMukADDLsAAwy7gAMMvAADDLyAAwy9AAMMvYADDL3AAwy+gAMMxMADDMwAAwzMgAMMzQADDM2AAwzOAAMMzoADDM8AAwzPgAMM1sADDNeAAwzYQAMM2QADDNnAAwzagAMM20ADDNwAAwzcgAMM+0ADDPvAAwz8QAMM/MADDP2AAwz9wAMM/gADDP5AAwz+gAMM/wADDP+AAwz/wAMNAAADDQCAAw0AwAMNH4ADDSAAAw0ggAMNIQADDSHAAw0iAAMNIkADDSKAAw0iwAMNI0ADDSPAAw0kAAMNJEADDS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pAAxXqgAMV6sADFetAAxXrgAMV/cADFgbAAxYQgAMWGYADFhpAAxYawAMWG0ADFhvAAxYcQAMWHMADFh0AAxYdwAMWJAADFitAAxYrwAMWLEADFizAAxYtQAMWLcADFi5AAxYuwAMWNgADFjbAAxY3gAMWOEADFjkAAxY5wAMWOoADFjtAAxY7wAMWWoADFlsAAxZbgAMWXAADFlzAAxZdAAMWXUADFl2AAxZdwAMWXkADFl7AAxZfAAMWX0ADFl/AAxZgAAMWfsADFn9AAxZ/wAMWgEADFoEAAxaBQAMWgYADFoHAAxaCAAMWgoADFoMAAxaDQAMWg4ADFoQAAxaEQAMWowADFqOAAxakAAMWpIADFqVAAxalgAMWpcADFqYAAxamQAMWpsADFqdAAxangAMWp8ADFqhAAxaogAMWx0ADFsfAAxbIgAMWyQADFsnAAxbKAAMWykADFsqAAxbKwAMWy0ADFsvAAxbMAAMWzEADFszAAxbNAAMW68ADFuxAAxbswAMW7UADFu4AAxbuQAMW7oADFu7AAxbvAAMW74ADFvAAAxbwQAMW8IADFvEAAxbxQAMXEAADFxCAAxcRAAMXEYADFxJAAxcSgAMXEsADFxMAAxcTQAMXE8ADFxRAAxcUgAMXFMADFxVAAxcVgAMXNEADFzTAAxc1QAMXNcADFzaAAxc2wAMXNwADFzdAAxc3gAMXOAADFziAAxc4wAMXOQADFzmAAxc5wAMXXoADF2dAAxdvQAMXd0ADF3fAAxd4QAMXeMADF3lAAxd6AAMXekADF3qAAxd7QAMXe4ADF3wAAxd8QAMXfMADF32AAxd9wAMXfgADF37AAxd/AAMXgEADF4aAAxeIwAMXiUADF4nAAxeMAAMXjMADF42AAxeOAAMXoEADF6lAAxezAAMXvAADF7zAAxe9QAMXvcADF75AAxe+wAMXv0ADF7+AAxfAQAMXxoADF87AAxfPQAMXz8ADF9BAAxfQwAMX0UADF9HAAxfSQAMX0sADF9sAAxfbwAMX3IADF91AAxfeAAMX3sADF9+AAxfgQAMX4QADF+GAAxgAQAMYAMADGAFAAxgBwAMYAoADGALAAxgDAAMYA0ADGAOAAxgEAAMYBIADGATAAxgFAAMYBYADGAXAAxgkgAMYJQADGCWAAxgmAAMYJsADGCcAAxgnQAMYJ4ADGC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BAAyVAgAMlQMADJUFAAyVBgAMlR8ADJUgAAyVIQAMlSMADJWeAAyVoAAMlaIADJWkAAyVpwAMlagADJWpAAyVqgAMlasADJWtAAyVrwAMlbAADJWxAAyVswAMlbQADJYvAAyWMQAMljMADJY1AAyWOAAMljkADJY6AAyWOwAMljwADJY+AAyWQAAMlkEADJZCAAyWRAAMlkUADJbAAAyWwgAMlsQADJbGAAyWyQAMlsoADJbLAAyWzAAMls0ADJbPAAyW0QAMltIADJbTAAyW1QAMltYADJdRAAyXUwAMl1UADJdXAAyXWgAMl1sADJdcAAyXXQAMl14ADJdgAAyXYgAMl2MADJdkAAyXZgAMl2cADJfiAAyX5AAMl+YADJfoAAyX6wAMl+wADJftAAyX7gAMl+8ADJfxAAyX8wAMl/QADJf1AAyX9wAMl/gADJhBAAyYZQAMmIwADJiwAAyYswAMmLUADJi3AAyYuQAMmLsADJi9AAyYvgAMmMEADJjaAAyY9wAMmPkADJj7AAyY/QAMmP8ADJkBAAyZAwAMmQUADJkiAAyZJQAMmSgADJkrAAyZLgAMmTEADJk0AAyZNwAMmTkADJm0AAyZtgAMmbgADJm6AAyZvQAMmb4ADJm/AAyZwAAMmcEADJnDAAyZxQAMmcYADJnHAAyZyQAMmcoADJpFAAyaRwAMmkkADJpLAAyaTgAMmk8ADJpQAAyaUQAMmlIADJpUAAyaVgAMmlcADJpYAAyaWgAMmlsADJrWAAya2AAMmtsADJrdAAya4AAMmuEADJriAAya4wAMmuQADJrmAAya6AAMmukADJrqAAya7AAMmu0ADJtoAAybagAMm20ADJtvAAybcgAMm3MADJt0AAybdQAMm3YADJt4AAybegAMm3sADJt8AAybfgAMm38ADJv6AAyb/AAMm/4ADJwAAAycAwAMnAQADJwFAAycBgAMnAcADJwJAAycCwAMnAwADJwNAAycDwAMnBAADJyLAAycjQAMnI8ADJyRAAyclAAMnJUADJyWAAyclwAMnJgADJyaAAycnAAMnJ0ADJyeAAycoAAMnKEADJ0cAAydHgAMnSAADJ0iAAydJQAMnSYADJ0nAAydKAAMnSkADJ0rAAydLQAMnS4ADJ0vAAydMQAMnTIADJ3FAAyd6AAMnggADJ4oAAyeKgAMniwADJ4uAAyeMAAMnjMADJ40AAyeNQAMnjgADJ45AAyeOwAMnjwADJ4/AAyeQgAMnkMADJ5EAAyeRwAMnkgADJ5NAAyeZgAMnm8ADJ5xAAyecwAMnnwADJ5/AAyeggAMnoQADJ7NAAye8QAMnxgADJ88AAyfPwAMn0EADJ9DAAyfRQAMn0cADJ9JAAyfSgAMn00ADJ9mAAyfhwAMn4kADJ+LAAyfjQAMn48ADJ+RAAyfkwAMn5UADJ+XAAyfuAAMn7sADJ++AAyfwQAMn8QADJ/HAAyfygAMn80ADJ/QAAyf0gAMoE0ADKBPAAygUQAMoFMADKBWAAygVwAMoFgADKBZAAygWgAMoFwADKBeAAygXwAMoGAADKBiAAygYwAMoN4ADKDgAAyg4gAMoOQADKDnAAyg6AAMoOkADKDqAAyg6wAMoO0ADKDvAAyg8AAMoPEADKDzAAyg9AAMoW8ADKFxAAyhdAAMoXYADKF5AAyhegAMoXsADKF8AAyhfQAMoX8ADKGBAAyhggAMoYMADKGFAAyhhgAMoZ8ADKGgAAyhoQAMoaMADKIeAAyiIAAMoiIADKIkAAyiJwAMoigADKIpAAyiKgAMoisADKItAAyiLwAMojAADKIxAAyiMwAMojQADKKvAAyisQAMorMADKK1AAyiuAAMorkADKK6AAyiuwAMorwADKK+AAyiwAAMosEADKLCAAyixAAMosUADKNAAAyjQgAMo0QADKNGAAyjSQAMo0oADKNLAAyjTAAMo00ADKNPAAyjUQAMo1IADKNTAAyjVQAMo1YADKPRAAyj0wAMo9UADKPXAAyj2gAMo9sADKPcAAyj3QAMo94ADKPgAAyj4gAMo+MADKPkAAyj5gAMo+cADKRiAAykZAAMpGYADKRoAAykawAMpGwADKRtAAykbgAMpG8ADKRxAAykcwAMpHQADKR1AAykdwAMpHgADKTBAAyk5QAMpQwADKUwAAylMwAMpTUADKU3AAylOQAMpTsADKU9AAylPgAMpUEADKVaAAyldwAMpXkADKV7AAylfQAMpX8ADKWBAAylgwAMpYUADKWiAAylpQAMpagADKWrAAylrgAMpbEADKW0AAyltwAMpbkADKY0AAymNgAMpjgADKY6AAymPQAMpj4ADKY/AAymQAAMpkEADKZDAAymRQAMpkYADKZHAAymSQAMpkoADKbFAAymxwAMpskADKbLAAymzgAMps8ADKbQAAym0QAMptIADKbUAAym1gAMptcADKbYAAym2gAMptsADKdWAAynWAAMp1oADKdcAAynXwAMp2AADKdhAAynYgAMp2MADKdlAAynZwAMp2gADKdpAAynawAMp2wADKfnAAyn6QAMp+wADKfuAAyn8QAMp/IADKfzAAyn9AAMp/UADKf3AAyn+QAMp/oADKf7AAyn/QAMp/4ADKh5AAyoewAMqH0ADKh/AAyoggAMqIMADKiEAAyohQAMqIYADKiIAAyoigAMqIsADKiMAAyojgAMqI8ADKkKAAypDAAMqQ4ADKkQAAypEwAMqRQADKkVAAypFgAMqRcADKkZAAypGwAMqRwADKkdAAypHwAMqSAADKmbAAypnQAMqaAADKmiAAyppQAMqaYADKmnAAypqAAMqakADKmrAAyprQAMqa4ADKmvAAypsQAMqbIADKpFAAyqaAAMqogADKqoAAyqqgAMqqwADKquAAyqsAAMqrMADKq0AAyqtQAMqrgADKq5AAyquwAMqrwADKq/AAyqwgAMqsMADKrEAAyqxwAMqsgADKrNAAyq5gAMqu8ADKrxAAyq8wAMqvwADKr/AAyrAgAMqwQADKtNAAyrcQAMq5gADKu8AAyrvwAMq8EADKvDAAyrxQAMq8cADKvJAAyrygAMq80ADKvmAAysBwAMrAkADKwLAAysDQAMrA8ADKwRAAysEwAMrBUADKwXAAysOAAMrDsADKw+AAysQQAMrEQADKxHAAysSgAMrE0ADKxQAAysUgAMrM0ADKzPAAys0QAMrNMADKzWAAys1wAMrNgADKzZAAys2gAMrNwADKzeAAys3wAMrOAADKziAAys4wAMrV4ADK1gAAytYgAMrWQADK1nAAytaAAMrWkADK1qAAytawAMrW0ADK1vAAytcAAMrXEADK1zAAytdAAMre8ADK3xAAyt9AAMrfYADK35AAyt+gAMrfsADK38AAyt/QAMrf8ADK4BAAyuAgAMrgMADK4FAAyuBgAMrh8ADK4gAAyuIQAMriMADK6eAAyuoAAMrqIADK6kAAyupwAMrqgADK6pAAyuqgAMrqsADK6tAAyurwAMrrAADK6xAAyuswAMrrQADK8vAAyvMQAMrzMADK81AAyvOAAMrzkADK86AAyvOwAMrzwADK8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OAAzbDwAM2xAADNsSAAzbFAAM2xUADNsWAAzbGAAM2xkADNuUAAzblgAM25gADNuaAAzbnQAM254ADNufAAzboAAM26EADNujAAzbpQAM26YADNunAAzbqQAM26oADNw9AAzcYAAM3IAADNygAAzcogAM3KQADNymAAzcqAAM3KsADNysAAzcrQAM3LAADNyxAAzcswAM3LQADNy2AAzcuQAM3LoADNy7AAzcvgAM3L8ADNzEAAzc3QAM3OYADNzoAAzc6gAM3PMADNz2AAzc+QAM3PsADN1EAAzdaAAM3Y8ADN2zAAzdtgAM3bgADN26AAzdvAAM3b4ADN3AAAzdwQAM3cQADN3dAAzd/gAM3gAADN4CAAzeBAAM3gYADN4IAAzeCgAM3gwADN4OAAzeLwAM3jIADN41AAzeOAAM3jsADN4+AAzeQQAM3kQADN5HAAzeSQAM3sQADN7GAAzeyAAM3soADN7NAAzezgAM3s8ADN7QAAze0QAM3tMADN7VAAze1gAM3tcADN7ZAAze2gAM31UADN9XAAzfWQAM31sADN9eAAzfXwAM32AADN9hAAzfYgAM32QADN9mAAzfZwAM32gADN9qAAzfawAM3+YADN/oAAzf6wAM3+0ADN/wAAzf8QAM3/IADN/zAAzf9AAM3/YADN/4AAzf+QAM3/oADN/8AAzf/QAM4BYADOAXAAzgGAAM4BoADOCVAAzglwAM4JkADOCbAAzgngAM4J8ADOCgAAzgoQAM4KIADOCkAAzgpgAM4KcADOCoAAzgqgAM4KsADOEmAAzhKAAM4SoADOEsAAzhLwAM4TAADOExAAzhMgAM4TMADOE1AAzhNwAM4TgADOE5AAzhOwAM4TwADOG3AAzhuQAM4bsADOG9AAzhwAAM4cEADOHCAAzhwwAM4cQADOHGAAzhyAAM4ckADOHKAAzhzAAM4c0ADOJIAAziSgAM4kwADOJOAAziUQAM4lIADOJTAAziVAAM4lUADOJXAAziWQAM4loADOJbAAziXQAM4l4ADOLZAAzi2wAM4t0ADOLfAAzi4gAM4uMADOLkAAzi5QAM4uYADOLoAAzi6gAM4usADOLsAAzi7gAM4u8ADOM4AAzjXAAM44MADOOnAAzjqgAM46wADOOuAAzjsAAM47IADOO0AAzjtQAM47gADOPRAAzj7gAM4/AADOPyAAzj9AAM4/YADOP4AAzj+gAM4/wADOQZAAzkHAAM5B8ADOQiAAzkJQAM5CgADOQrAAzkLgAM5DAADOSrAAzkrQAM5K8ADOSxAAzktAAM5LUADOS2AAzktwAM5LgADOS6AAzkvAAM5L0ADOS+AAzkwAAM5MEADOU8AAzlPgAM5UAADOVCAAzlRQAM5UYADOVHAAzlSAAM5UkADOVLAAzlTQAM5U4ADOVPAAzlUQAM5VIADOXNAAzlzwAM5dEADOXTAAzl1gAM5dcADOXYAAzl2QAM5doADOXcAAzl3gAM5d8ADOXgAAzl4gAM5eMADOZeAAzmYAAM5mMADOZlAAzmaAAM5mkADOZqAAzmawAM5mwADOZuAAzmcAAM5nEADOZyAAzmdAAM5nUADObwAAzm8gAM5vQADOb2AAzm+QAM5voADOb7AAzm/AAM5v0ADOb/AAznAQAM5wIADOcDAAznBQAM5wYADOeBAAzngwAM54UADOeHAAznigAM54sADOeMAAznjQAM544ADOeQAAznkgAM55MADOeUAAznlgAM55cADOgSAAzoFAAM6BYADOgYAAzoGwAM6BwADOgdAAzoHgAM6B8ADOghAAzoIwAM6CQADOglAAzoJwAM6CgADOi7AAzo3gAM6P4ADOkeAAzpIAAM6SIADOkkAAzpJgAM6SkADOkqAAzpKwAM6S4ADOkvAAzpMQAM6TIADOk1AAzpOAAM6TkADOk6AAzpPQAM6T4ADOlHAAzpYAAM6WkADOlrAAzpbQAM6XYADOl5AAzpfAAM6X4ADOnHAAzp6wAM6hIADOo2AAzqOQAM6jsADOo9AAzqPwAM6kEADOpDAAzqRAAM6kcADOpgAAzqgQAM6oMADOqFAAzqhwAM6okADOqLAAzqjQAM6o8ADOqRAAzqsgAM6rUADOq4AAzquwAM6r4ADOrBAAzqxAAM6scADOrKAAzqzAAM60cADOtJAAzrSwAM600ADOtQAAzrUQAM61IADOtTAAzrVAAM61YADOtYAAzrWQAM61oADOtcAAzrXQAM69gADOvaAAzr3AAM694ADOvhAAzr4gAM6+MADOvkAAzr5QAM6+cADOvpAAzr6gAM6+sADOvtAAzr7gAM7GkADOxrAAzsbgAM7HAADOxzAAzsdAAM7HUADOx2AAzsdwAM7HkADOx7AAzsfAAM7H0ADOx/AAzsgAAM7JkADOyaAAzsmwAM7J0ADO0YAAztGgAM7RwADO0eAAztIQAM7SIADO0jAAztJAAM7SUADO0nAAztKQAM7SoADO0rAAztLQAM7S4ADO2pAAztqwAM7a0ADO2vAAztsgAM7bMADO20AAzttQAM7bYADO24AAztugAM7bsADO28AAztvgAM7b8ADO46AAzuPAAM7j4ADO5AAAzuQwAM7kQADO5FAAzuRgAM7kcADO5JAAzuSwAM7kwADO5NAAzuTwAM7lAADO7LAAzuzQAM7s8ADO7RAAzu1AAM7tUADO7WAAzu1wAM7tgADO7aAAzu3AAM7t0ADO7eAAzu4AAM7uEADO9cAAzvXgAM72AADO9iAAzvZQAM72YADO9nAAzvaAAM72kADO9rAAzvbQAM724ADO9vAAzvcQAM73IADO+7AAzv3wAM8AYADPAqAAzwLQAM8C8ADPAxAAzwMwAM8DUADPA3AAzwOAAM8DsADPBUAAzwcQAM8HMADPB1AAzwdwAM8HkADPB7AAzwfQAM8H8ADPCcAAzwnwAM8KIADPClAAzwqAAM8KsADPCuAAzwsQAM8LMADPEuAAzxMAAM8TIADPE0AAzxNwAM8TgADPE5AAzxOgAM8TsADPE9AAzxPwAM8UAADPFBAAzxQwAM8UQADPG/AAzxwQAM8cMADPHFAAzxyAAM8ckADPHKAAzxywAM8cwADPHOAAzx0AAM8dEADPHSAAzx1AAM8dUADPJQAAzyUgAM8lQADPJWAAzyWQAM8loADPJbAAzyXAAM8l0ADPJfAAzyYQAM8mIADPJjAAzyZQAM8mYADPLhAAzy4wAM8uYADPLoAAzy6wAM8uwADPLtAAzy7gAM8u8ADPLxAAzy8wAM8vQADPL1AAzy9wAM8vgADPN7AAzznwAM88MADPPmAAz0DQAM9C0ADPRUAAz0ewAM9JsADPS/AAz04wAM9OUADPToAAz06gAM9OwADPTuAAz08QAM9PQADPT2AAz0+AAM9PsADPT9AAz0/wAM9QIADPUFAAz1BgAM9QsADPUkAAz1KQAM9SsADPUwAAz1MwAM9TUADPV+AAz1ogAM9ckADPXtAAz18AAM9fIADPX0AAz19gAM9fgADPX6AAz1+wAM9f4ADPYXAAz2PAAM9j4ADPZAAAz2QgAM9kQADPZGAAz2SAAM9koADPZMAAz2TgAM9nMADPZ2AAz2eQAM9nwADPZ/AAz2ggAM9oUADPaIAAz2iwAM9o4ADPaQAAz3CwAM9w0ADPcQAAz3EgAM9xUADPcWAAz3FwAM9xgADPcZAAz3GwAM9x0ADPceAAz3HwAM9yEADPciAAz3MwAM9zQADPc2AAz3sQAM97MADPe1AAz3twAM97oADPe7AAz3vAAM970ADPe+AAz3wAAM98IADPfDAAz3xAAM98YADPfHAAz4QgAM+EQADPhHAAz4SQAM+EwADPhNAAz4TgAM+E8ADPhQAAz4UgAM+FQADPhVAAz4VgAM+FgADPhZAAz4agAM+GsADPhtAAz46AAM+OoADPjsAAz47gAM+PEADPjyAAz48wAM+PQADPj1AAz49wAM+PkADPj6AAz4+wAM+P0ADPj+AAz5eQAM+XsADPl+AAz5gAAM+YMADPmEAAz5hQAM+YYADPmHAAz5iQAM+YsADPmMAAz5jQAM+Y8ADPmQAAz5oQAM+aIADPmkAAz6HwAM+iEADPojAAz6JQAM+igADPopAAz6KgAM+isADPosAAz6LgAM+jAADPoxAAz6MgAM+jQADPo1AAz6sAAM+rIADPq1AAz6twAM+roADPq7AAz6vAAM+r0ADPq+AAz6wAAM+sIADPrDAAz6xAAM+sYADPrHAAz64AAM+uEADPriAAz65AAM+18ADPthAAz7YwAM+2UADPtoAAz7aQAM+2oADPtrAAz7bAAM+24ADPtwAAz7cQAM+3IADPt0AAz7dQAM+/AADPvyAAz79QAM+/cADPv6AAz7+wAM+/wADPv9AAz7/gAM/AAADPwCAAz8AwAM/AQADPwGAAz8BwAM/CIADPw7AAz8SAAM/EsADPxOAAz8UQAM/F4ADPxhAAz8ZAAM/GcADPxpAAz8dQAM/JAADPyiAAz9NQAM/VgADP14AAz9mAAM/ZoADP2cAAz9ngAM/aAADP2jAAz9pAAM/aUADP2oAAz9qQAM/asADP2sAAz9rgAM/bEADP2yAAz9swAM/bYADP23AAz9vAAM/dUADP3eAAz94AAM/eIADP3rAAz97gAM/fEADP3zAAz+PAAM/mAADP6HAAz+qwAM/q4ADP6wAAz+sgAM/rQADP62AAz+uAAM/rkADP68AAz+1QAM/vYADP74AAz++gAM/vwADP7+AAz/AAAM/wIADP8EAAz/BgAM/ycADP8qAAz/LQAM/zAADP8zAAz/NgAM/zkADP88AAz/PwAM/0EADP+8AAz/vgAM/8AADP/CAAz/xQAM/8YADP/HAAz/yAAM/8kADP/LAAz/zQAM/84ADP/PAAz/0QAM/9IADQBNAA0ATwANAFEADQBTAA0AVgANAFcADQBYAA0AWQANAFoADQBcAA0AXgANAF8ADQBgAA0AYgANAGMADQDeAA0A4AANAOMADQDlAA0A6AANAOkADQDqAA0A6wANAOwADQDuAA0A8AANAPEADQDyAA0A9AANAPUADQEOAA0BDwANARAADQESAA0BjQANAY8ADQGRAA0BkwANAZYADQGXAA0BmAANAZkADQGaAA0BnAANAZ4ADQGfAA0BoAANAaIADQGjAA0CHgANAiAADQIiAA0CJAANAicADQIoAA0CKQANAioADQIrAA0CLQANAi8ADQIwAA0CMQANAjMADQI0AA0CrwANArEADQKzAA0CtQANArgADQK5AA0CugANArsADQK8AA0CvgANAsAADQLBAA0CwgANAsQADQLFAA0DQAANA0IADQNEAA0DRgANA0kADQNKAA0DSwANA0wADQNNAA0DTwANA1EADQNSAA0DUwANA1UADQNWAA0D0QANA9MADQPVAA0D1wANA9oADQPbAA0D3AANA90ADQPeAA0D4AANA+IADQPjAA0D5AANA+YADQPnAA0EMAANBFQADQR7AA0EnwANBKIADQSkAA0EpgANBKgADQSqAA0ErAANBK0ADQSwAA0EyQANBOYADQToAA0E6gANBOwADQTuAA0E8AANBPIADQT0AA0FEQANBRQADQUXAA0FGgANBR0ADQUgAA0FIwANBSYADQUoAA0FowANBaUADQWnAA0FqQANBawADQWtAA0FrgANBa8ADQWwAA0FsgANBbQADQW1AA0FtgANBbgADQW5AA0GNAANBjYADQY4AA0GOgANBj0ADQY+AA0GPwANBkAADQZBAA0GQwANBkUADQZGAA0GRwANBkkADQZKAA0GxQANBscADQbJAA0GywANBs4ADQbPAA0G0AANBtEADQbSAA0G1AANBtYADQbXAA0G2AANBtoADQbbAA0HVgANB1gADQdaAA0HXAANB18ADQdgAA0HYQANB2IADQdjAA0HZQANB2cADQdoAA0HaQANB2sADQdsAA0H5wANB+kADQfrAA0H7QANB/AADQfxAA0H8gANB/MADQf0AA0H9gANB/gADQf5AA0H+gANB/wADQf9AA0IeAANCHoADQh8AA0IfgANCIEADQiCAA0IgwANCIQADQiFAA0IhwANCIkADQiKAA0IiwANCI0ADQiOAA0JCQANCQsADQkNAA0JDwANCRIADQkTAA0JFAANCRUADQkWAA0JGAANCRoADQkbAA0JHAANCR4ADQkfAA0JsgANCdUADQn1AA0KFQANChcADQoZAA0KGwANCh0ADQogAA0KIQANCiIADQolAA0KJgANCigADQopAA0KKwANCi4ADQovAA0KMAANCjMADQo0AA0KOQANClIADQpbAA0KXQANCl8ADQpoAA0KawANCm4ADQpwAA0KuQANCt0ADQsEAA0LKAANCysADQstAA0LLwANCzEADQszAA0LNQANCzYADQs5AA0LUgANC3MADQt1AA0LdwANC3kADQt7AA0LfQANC38ADQuBAA0LgwANC6QADQunAA0LqgANC60ADQuwAA0LswANC7YADQu5AA0LvAANC74ADQw5AA0MOwANDD0ADQw/AA0MQgANDEMADQxEAA0MRQANDEYADQxIAA0MSgANDEsADQxMAA0MTgANDE8ADQzKAA0MzAANDM4ADQzQAA0M0wANDNQADQzVAA0M1gANDNcADQzZAA0M2wANDNwADQzdAA0M3wANDOAADQ1bAA0NXQANDWAADQ1iAA0NZQANDWYADQ1nAA0NaAANDWkADQ1rAA0NbQANDW4ADQ1vAA0NcQANDXIADQ2LAA0NjAANDY0ADQ2PAA0OCgANDgwADQ4OAA0OEAANDhMADQ4UAA0OFQANDhYADQ4XAA0OGQANDhsADQ4cAA0OHQANDh8ADQ4gAA0OmwANDp0ADQ6fAA0OoQANDqQADQ6lAA0OpgANDqcADQ6oAA0OqgANDqwADQ6tAA0OrgANDrAADQ6xAA0PLAANDy4ADQ8wAA0PMgANDzUADQ82AA0PNwANDzgADQ85AA0POwANDz0ADQ8+AA0PPwAND0EADQ9CAA0PvQAND78ADQ/BAA0PwwAND8YADQ/HAA0PyAAND8kADQ/KAA0PzAAND84ADQ/PAA0P0AAND9IADQ/TAA0QTgANEFAADRBSAA0QVAANEFcADRBYAA0QWQANEFoADRBbAA0QXQANEF8ADRBgAA0QYQANEGMADRBkAA0QrQANENEADRD4AA0RHAANER8ADREhAA0RIwANESUADREnAA0RKQANESoADREtAA0RRgANEWMADRFlAA0RZwANEWkADRFrAA0RbQANEW8ADRFxAA0RjgANEZEADRGUAA0RlwANEZoADRGdAA0RoAANEaMADRGlAA0SIAANEiIADRIkAA0SJgANEikADRIqAA0SKwANEiwADRItAA0SLwANEjEADRIyAA0SMwANEjUADRI2AA0SsQANErMADRK1AA0StwANEroADRK7AA0SvAANEr0ADRK+AA0SwAANEsIADRLDAA0SxAANEsYADRLHAA0TQgANE0QADRNGAA0TSAANE0sADRNMAA0TTQANE04ADRNPAA0TUQANE1MADRNUAA0TVQANE1cADRNYAA0T0wANE9UADRPXAA0T2QANE9wADRPdAA0T3gANE98ADRPgAA0T4gANE+QADRPlAA0T5gANE+gADRPpAA0UZAANFGYADRRoAA0UagANFG0ADRRuAA0UbwANFHAADRRxAA0UcwANFHUADRR2AA0UdwANFHkADRR6AA0U9QANFPcADRT5AA0U+wANFP4ADRT/AA0VAAANFQEADRUCAA0VBAANFQYADRUHAA0VCAANFQoADRULAA0VhgANFYgADRWKAA0VjAANFY8ADRWQAA0VkQANFZIADRWTAA0VlQANFZcADRWYAA0VmQANFZsADRWcAA0WLwANFlIADRZyAA0WkgANFpQADRaWAA0WmAANFpoADRadAA0WngANFp8ADRaiAA0WowANFqUADRamAA0WqQANFqwADRatAA0WrgANFrEADRayAA0WtwANFtAADRbZAA0W2wANFt0ADRbmAA0W6QANFuwADRbuAA0XNwANF1sADReCAA0XpgANF6kADRerAA0XrQANF68ADRexAA0XswANF7QADRe3AA0X0AANF/EADRfzAA0X9QANF/cADRf5AA0X+wANF/0ADRf/AA0YAQANGCIADRglAA0YKAANGCsADRguAA0YMQANGDQADRg3AA0YOgANGDwADRi3AA0YuQANGLsADRi9AA0YwAANGMEADRjCAA0YwwANGMQADRjGAA0YyAANGMkADRjKAA0YzAANGM0ADRlIAA0ZSgANGUwADRlOAA0ZUQANGVIADRlTAA0ZVAANGVUADRlXAA0ZWQANGVoADRlbAA0ZXQANGV4ADRnZAA0Z2wANGd4ADRngAA0Z4wANGeQADRnlAA0Z5gANGecADRnpAA0Z6wANGewADRntAA0Z7wANGfAADRoJAA0aCgANGgsADRoNAA0aiAANGooADRqMAA0ajgANGpEADRqSAA0akwANGpQADRqVAA0alwANGpkADRqaAA0amwANGp0ADRqeAA0bGQANGxsADRsdAA0bHwANGyIADRsjAA0bJAANGyUADRsmAA0bKAANGyoADRsrAA0bLAANGy4ADRsvAA0bqgANG6wADRuuAA0bsAANG7MADRu0AA0btQANG7YADRu3AA0buQANG7sADRu8AA0bvQANG78ADRvAAA0cOwANHD0ADRw/AA0cQQANHEQADRxFAA0cRgANHEcADRxIAA0cSgANHEwADRxNAA0cTgANHFAADRxRAA0czAANHM4ADRzQAA0c0gANHNUADRzWAA0c1wANHNgADRzZAA0c2wANHN0ADRzeAA0c3wANHOEADRziAA0dKwANHU8ADR12AA0dmgANHZ0ADR2fAA0doQANHaMADR2lAA0dpwANHagADR2rAA0dxAANHeEADR3jAA0d5QANHecADR3pAA0d6wANHe0ADR3vAA0eDAANHg8ADR4SAA0eFQANHhgADR4bAA0eHgANHiEADR4jAA0engANHqAADR6iAA0epAANHqcADR6oAA0eqQANHqoADR6rAA0erQANHq8ADR6wAA0esQANHrMADR60AA0fLwANHzEADR8zAA0fNQANHzgADR85AA0fOgANHzsADR88AA0fPgANH0AADR9BAA0fQgANH0QADR9FAA0fwAANH8IADR/EAA0fxgANH8kADR/KAA0fywANH8wADR/NAA0fzwANH9EADR/SAA0f0wANH9UADR/WAA0gUQANIFMADSBWAA0gWAANIFsADSBcAA0gXQANIF4ADSBfAA0gYQANIGMADSBkAA0gZQANIGcADSBoAA0g4wANIOUADSDnAA0g6QANIOwADSDtAA0g7gANIO8ADSDwAA0g8gANIPQADSD1AA0g9gANIPgADSD5AA0hdAANIXYADSF4AA0hegANIX0ADSF+AA0hfwANIYAADSGBAA0hgwANIYUADSGGAA0hhwANIYkADSGKAA0iBQANIgcADSIKAA0iDAANIg8ADSIQAA0iEQANIhIADSITAA0iFQANIhcADSIYAA0iGQANIhsADSIcAA0iLQANIjIADSI1AA0iNwANInAADSJzAA0idQANIngADSJ7AA0ifgANIoEADSKKAA0jBQANIwcADSMJAA0jCwANIw4ADSMPAA0jEAANIxEADSMSAA0jFAANIxYADSMXAA0jGAANIxoADSMbAA0jlgANI5gADSOaAA0jnAANI58ADSOgAA0joQANI6IADSOjAA0jpQANI6cADSOoAA0jqQANI6sADSOsAA0kJwANJCkADSQsAA0kLgANJDEADSQyAA0kMwANJDQADSQ1AA0kNwANJDkADSQ6AA0kOwANJD0ADSQ+AA0kTwANJFAADSRSAA0kYwANJGwADSRvAA0kcgANJHQADSStAA0ksAANJLIADSS1AA0kuAANJLsADSS+AA0lQQANJWUADSWJAA0lrAANJdMADSXzAA0mGgANJkEADSZhAA0mhQANJqkADSarAA0mrgANJrAADSayAA0mtAANJrcADSa6AA0mvAANJr4ADSbBAA0mwwANJsUADSbIAA0mywANJswADSbRAA0m6gANJu8ADSbxAA0m9gANJvkADSb7AA0nRAANJ2gADSePAA0nswANJ7YADSe4AA0nugANJ7wADSe+AA0nwAANJ8EADSfEAA0n3QANKAIADSgEAA0oBgANKAgADSgKAA0oDAANKA4ADSgQAA0oEgANKBQADSg5AA0oPAANKD8ADShCAA0oRQANKEgADShLAA0oTgANKFEADShUAA0oVgANKNEADSjTAA0o1gANKNgADSjbAA0o3AANKN0ADSjeAA0o3wANKOEADSjjAA0o5AANKOUADSjnAA0o6AANKPkADSj6AA0o/AANKXcADSl5AA0pewANKX0ADSmAAA0pgQANKYIADSmDAA0phAANKYYADSmIAA0piQANKYoADSmMAA0pjQANKggADSoKAA0qDQANKg8ADSoSAA0qEwANKhQADSoVAA0qFgANKhgADSoaAA0qGwANKhwADSoeAA0qHwANKjAADSoxAA0qMwANKq4ADSqwAA0qsgANKrQADSq3AA0quAANKrkADSq6AA0quwANKr0ADSq/AA0qwAANKsEADSrDAA0qxAANKz8ADStBAA0rRAANK0YADStJAA0rSgANK0sADStMAA0rTQANK08ADStRAA0rUgANK1MADStVAA0rVgANK2cADStoAA0ragANK+UADSvnAA0r6QANK+sADSvuAA0r7wANK/AADSvxAA0r8gANK/QADSv2AA0r9wANK/gADSv6AA0r+wANLHYADSx4AA0sewANLH0ADSyAAA0sgQANLIIADSyDAA0shAANLIYADSyIAA0siQANLIoADSyMAA0sjQANLKYADSynAA0sqAANLKoADS0lAA0tJwANLSkADS0rAA0tLgANLS8ADS0wAA0tMQANLTIADS00AA0tNgANLTcADS04AA0tOgANLTsADS22AA0tuAANLbsADS29AA0twAANLcEADS3CAA0twwANLcQADS3GAA0tyAANLckADS3KAA0tzAANLc0ADS3rAA0uBAANLhEADS4UAA0uFwANLhoADS4nAA0uKgANLi0ADS4wAA0uMgANLkgADS5aAA0u7QANLxAADS8wAA0vUAANL1IADS9UAA0vVgANL1gADS9bAA0vXAANL10ADS9gAA0vYQANL2MADS9kAA0vZwANL2oADS9rAA0vbAANL28ADS9wAA0vdQANL44ADS+XAA0vmQANL5sADS+kAA0vpwANL6oADS+sAA0v9QANMBkADTBAAA0wZAANMGcADTBpAA0wawANMG0ADTBvAA0wcQANMHIADTB1AA0wjgANMK8ADTCxAA0wswANMLUADTC3AA0wuQANMLsADTC9AA0wvwANMOAADTDjAA0w5gANMOkADTDsAA0w7wANMPIADTD1AA0w+AANMPoADTF1AA0xdwANMXkADTF7AA0xfgANMX8ADTGAAA0xgQANMYIADTGEAA0xhgANMYcADTGIAA0xigANMYsADTIGAA0yCAANMgoADTIMAA0yDwANMhAADTIRAA0yEgANMhMADTIVAA0yFwANMhgADTIZAA0yGwANMhwADTKXAA0ymQANMpwADTKeAA0yoQANMqIADTKjAA0ypAANMqUADTKnAA0yqQANMqoADTKrAA0yrQANMq4ADTLHAA0yyAANMskADTLLAA0zRgANM0gADTNKAA0zTAANM08ADTNQAA0zUQANM1IADTNTAA0zVQANM1cADTNYAA0zWQANM1sADTNcAA0z1wANM9kADTPbAA0z3QANM+AADTPhAA0z4gANM+MADTPkAA0z5gANM+gADTPpAA0z6gANM+wADTPtAA00aAANNGoADTRsAA00bgANNHEADTRyAA00cwANNHQADTR1AA00dwANNHkADTR6AA00ewANNH0ADTR+AA00+QANNPsADTT9AA00/wANNQIADTUDAA01BAANNQUADTUGAA01CAANNQoADTULAA01DAANNQ4ADTUPAA01igANNYwADTWOAA01kAANNZMADTWUAA01lQANNZYADTWXAA01mQANNZsADTWcAA01nQANNZ8ADTWgAA016QANNg0ADTY0AA02WAANNlsADTZdAA02XwANNmEADTZjAA02ZQANNmYADTZpAA02ggANNp8ADTahAA02owANNqUADTanAA02qQANNqsADTatAA02ygANNs0ADTbQAA020wANNtYADTbZAA023AANNt8ADTbhAA03XAANN14ADTdgAA03YgANN2UADTdmAA03ZwANN2gADTdpAA03awANN20ADTduAA03bwANN3EADTdyAA037QANN+8ADTfxAA038wANN/YADTf3AA03+AANN/kADTf6AA03/AANN/4ADTf/AA04AAANOAIADTgDAA04fgANOIAADTiCAA04hAANOIcADTiIAA04iQANOIoADTiLAA04jQANOI8ADTiQAA04kQANOJMADTiUAA05DwANOREADTkUAA05FgANORkADTkaAA05GwANORwADTkdAA05HwANOSEADTkiAA05IwANOSUADTkmAA05oQANOaMADTmlAA05pwANOaoADTmrAA05rAANOa0ADTmuAA05sAANObIADTmzAA05tAANObYADTm3AA06MgANOjQADTo2AA06OAANOjsADTo8AA06PQANOj4ADTo/AA06QQANOkMADTpEAA06RQANOkcADTpIAA06wwANOsUADTrIAA06ygANOs0ADTrOAA06zwANOtAADTrRAA060wANOtUADTrWAA061wANOtkADTraAA07bQANO5AADTuwAA070AANO9IADTvUAA071gANO9gADTvbAA073AANO90ADTvgAA074QANO+MADTvkAA075wANO+oADTvrAA077AANO+8ADTvwAA079QANPA4ADTwXAA08GQANPBsADTwkAA08JwANPCoADTwsAA08dQANPJkADTzAAA085AANPOcADTzpAA086wANPO0ADTzvAA088QANPPIADTz1AA09DgANPS8ADT0xAA09MwANPTUADT03AA09OQANPTsADT09AA09PwANPWAADT1jAA09ZgANPWkADT1sAA09bwANPXIADT11AA09eAANPXoADT31AA099wANPfkADT37AA09/gANPf8ADT4AAA0+AQANPgIADT4EAA0+BgANPgcADT4IAA0+CgANPgsADT6GAA0+iAANPooADT6MAA0+jwANPpAADT6RAA0+kgANPpMADT6VAA0+lwANPpgADT6ZAA0+mwANPpwADT8XAA0/GQANPxwADT8eAA0/IQANPyIADT8jAA0/JAANPyUADT8nAA0/KQANPyoADT8rAA0/LQANPy4ADT9HAA0/SAANP0kADT9LAA0/xgANP8gADT/KAA0/zAANP88ADT/QAA0/0QANP9IADT/TAA0/1QANP9cADT/YAA0/2QANP9sADT/cAA1AVwANQFkADUBbAA1AXQANQGAADUBhAA1AYgANQGMADUBkAA1AZgANQGgADUBpAA1AagANQGwADUBtAA1A6AANQOoADUDsAA1A7gANQPEADUDyAA1A8wANQPQADUD1AA1A9wANQPkADUD6AA1A+wANQP0ADUD+AA1BeQANQXsADUF9AA1BfwANQYIADUGDAA1BhAANQYUADUGGAA1BiAANQYoADUGLAA1BjAANQY4ADUGPAA1CCgANQgwADUIOAA1CEAANQhMADUIUAA1CFQANQhYADUIXAA1CGQANQhsADUIcAA1CHQANQh8ADUIgAA1CaQANQo0ADUK0AA1C2AANQtsADULdAA1C3wANQuEADULjAA1C5QANQuYADULpAA1DAgANQx8ADUMhAA1DIwANQyUADUMnAA1DKQANQysADUMtAA1DSgANQ00ADUNQAA1DUwANQ1YADUNZAA1DXAANQ18ADUNhAA1D3AANQ94ADUPgAA1D4gANQ+UADUPmAA1D5wANQ+gADUPpAA1D6wANQ+0ADUPuAA1D7wANQ/EADUPyAA1EbQANRG8ADURyAA1EdAANRHcADUR4AA1EeQANRHoADUR7AA1EfQANRH8ADUSAAA1EgQANRIMADUSEAA1E/wANRQEADUUDAA1FBQANRQgADUUJAA1FCgANRQsADUUMAA1FDgANRRAADUURAA1FEgANRRQADUUVAA1FkAANRZIADUWVAA1FlwANRZoADUWbAA1FnAANRZ0ADUWeAA1FoAANRaIADUWjAA1FpAANRaYADUWnAA1GIgANRiQADUYmAA1GKAANRisADUYsAA1GLQANRi4ADUYvAA1GMQANRjMADUY0AA1GNQANRjcADUY4AA1GswANRrUADUa3AA1GuQANRrwADUa9AA1GvgANRr8ADUbAAA1GwgANRsQADUbFAA1GxgANRsgADUbJAA1HRAANR0YADUdJAA1HSwANR04ADUdPAA1HUAANR1EADUdSAA1HVAANR1YADUdXAA1HWAANR1oADUdbAA1H7gANSBEADUgxAA1IUQANSFMADUhVAA1IVwANSFkADUhcAA1IXQANSF4ADUhhAA1IYgANSGQADUhlAA1IZwANSGoADUhrAA1IbAANSG8ADUhwAA1IdQANSI4ADUiXAA1ImQANSJsADUikAA1IpwANSKoADUisAA1I9QANSRkADUlAAA1JZAANSWcADUlpAA1JawANSW0ADUlvAA1JcQANSXIADUl1AA1JjgANSa8ADUmxAA1JswANSbUADUm3AA1JuQANSbsADUm9AA1JvwANSeAADUnjAA1J5gANSekADUnsAA1J7wANSfIADUn1AA1J+AANSfoADUp1AA1KdwANSnkADUp7AA1KfgANSn8ADUqAAA1KgQANSoIADUqEAA1KhgANSocADUqIAA1KigANSosADUsGAA1LCAANSwoADUsMAA1LDwANSxAADUsRAA1LEgANSxMADUsVAA1LFwANSxgADUsZAA1LGwANSxwADUuXAA1LmQANS5wADUueAA1LoQANS6IADUujAA1LpAANS6UADUunAA1LqQANS6oADUurAA1LrQANS64ADUvHAA1LyAANS8kADUvLAA1MRgANTEgADUxKAA1MTAANTE8ADUxQAA1MUQANTFIADUxTAA1MVQANTFcADUxYAA1MWQANTFsADUxcAA1M1wANTNkADUzbAA1M3QANTOAADUzhAA1M4gANTOMADUzkAA1M5gANTOgADUzpAA1M6gANTOwADUztAA1NaAANTWoADU1sAA1NbgANTXEADU1yAA1NcwANTXQADU11AA1NdwANTXkADU16AA1NewANTX0ADU1+AA1N+QANTfsADU39AA1N/wANTgIADU4DAA1OBAANTgUADU4GAA1OCAANTgoADU4LAA1ODAANTg4ADU4PAA1OigANTowADU6OAA1OkAANTpMADU6UAA1OlQANTpYADU6XAA1OmQANTpsADU6cAA1OnQANTp8ADU6gAA1O6QANTw0ADU80AA1PWAANT1sADU9dAA1PXwANT2EADU9jAA1PZQANT2YADU9pAA1PggANT58ADU+hAA1PowANT6UADU+nAA1PqQANT6sADU+tAA1PygANT80ADU/QAA1P0wANT9YADU/ZAA1P3AANT98ADU/hAA1QXAANUF4ADVBgAA1QYgANUGUADVBmAA1QZwANUGgADVBpAA1QawANUG0ADVBuAA1QbwANUHEADVByAA1Q7QANUO8ADVDxAA1Q8wANUPYADVD3AA1Q+AANUPkADVD6AA1Q/AANUP4ADVD/AA1RAAANUQIADVEDAA1RfgANUYAADVGCAA1RhAANUYcADVGIAA1RiQANUYoADVGLAA1RjQANUY8ADVGQAA1RkQANUZMADVGUAA1SDwANUhEADVIUAA1SFgANUhkADVIaAA1SGwANUhwADVIdAA1SHwANUiEADVIiAA1SIwANUiUADVImAA1SoQANUqMADVKlAA1SpwANUqoADVKrAA1SrAANUq0ADVKuAA1SsAANUrIADVKzAA1StAANUrYADVK3AA1TMgANUzQADVM2AA1TOAANUzsADVM8AA1TPQANUz4ADVM/AA1TQQANU0MADVNEAA1TRQANU0cADVNIAA1TwwANU8UADVPHAA1TyQANU8wADVPNAA1TzgANU88ADVPQAA1T0gANU9QADVPVAA1T1gANU9gADVPZAA1UbAANVI8ADVSvAA1UzwANVNEADVTTAA1U1QANVNcADVTaAA1U2wANVNwADVTfAA1U4AANVOIADVTjAA1U5QANVOgADVTpAA1U6gANVO0ADVTuAA1U8wANVQwADVUVAA1VFwANVRkADVUiAA1VJQANVSgADVUqAA1VcwANVZcADVW+AA1V4gANVeUADVXnAA1V6QANVesADVXtAA1V7wANVfAADVXzAA1WDAANVi0ADVYvAA1WMQANVjMADVY1AA1WNwANVjkADVY7AA1WPQANVl4ADVZhAA1WZAANVmcADVZqAA1WbQANVnAADVZzAA1WdgANVngADVbzAA1W9QANVvcADVb5AA1W/AANVv0ADVb+AA1W/wANVwAADVcCAA1XBAANVwUADVcGAA1XCAANVwkADVeEAA1XhgANV4gADVeKAA1XjQANV44ADVePAA1XkAANV5EADVeTAA1XlQANV5YADVeXAA1XmQANV5oADVgVAA1YFwANWBoADVgcAA1YHwANWCAADVghAA1YIgANWCMADVglAA1YJwANWCgADVgpAA1YKwANWCwADVhFAA1YRgANWEcADVhJAA1YxAANWMYADVjIAA1YygANWM0ADVjOAA1YzwANWNAADVjRAA1Y0wANWNUADVjWAA1Y1wANWNkADVjaAA1ZVQANWVcADVlZAA1ZWwANWV4ADVlfAA1ZYAANWWEADVliAA1ZZAANWWYADVlnAA1ZaAANWWoADVlrAA1Z5gANWegADVnqAA1Z7AANWe8ADVnwAA1Z8QANWfIADVnzAA1Z9QANWfcADVn4AA1Z+QANWfsADVn8AA1adwANWnkADVp7AA1afQANWoAADVqBAA1aggANWoMADVqEAA1ahgANWogADVqJAA1aigANWowADVqNAA1bCAANWwoADVsMAA1bDgANWxEADVsSAA1bEwANWxQADVsVAA1bFwANWxkADVsaAA1bGwANWx0ADVseAA1bZwANW4sADVuyAA1b1gANW9kADVvbAA1b3QANW98ADVvhAA1b4wANW+QADVvnAA1cAAANXB0ADVwfAA1cIQANXCMADVwlAA1cJwANXCkADVwrAA1cSAANXEsADVxOAA1cUQANXFQADVxXAA1cWgANXF0ADVxfAA1c2gANXNwADVzeAA1c4AANXOMADVzkAA1c5QANXOYADVznAA1c6QANXOsADVzsAA1c7QANXO8ADVzwAA1dawANXW0ADV1vAA1dcQANXXQADV11AA1ddgANXXcADV14AA1degANXXwADV19AA1dfgANXYAADV2BAA1d/AANXf4ADV4AAA1eAgANXgUADV4GAA1eBwANXggADV4JAA1eCwANXg0ADV4OAA1eDwANXhEADV4SAA1ejQANXo8ADV6SAA1elAANXpcADV6YAA1emQANXpoADV6bAA1enQANXp8ADV6gAA1eoQANXqMADV6kAA1fHwANXyEADV8jAA1fJQANXygADV8pAA1fKgANXysADV8sAA1fLgANXzAADV8xAA1fMgANXzQADV81AA1fsAANX7IADV+0AA1ftgANX7kADV+6AA1fuwANX7wADV+9AA1fvwANX8EADV/CAA1fwwANX8UADV/GAA1gQQANYEMADWBFAA1gRwANYEoADWBLAA1gTAANYE0ADWBOAA1gUAANYFIADWBTAA1gVAANYFYADWBXAA1gaAANYG0ADWBwAA1gcgANYHcADWDyAA1g9AANYPYADWD4AA1g+wANYPwADWD9AA1g/gANYP8ADWEBAA1hAwANYQQADWEFAA1hBwANYQgADWGDAA1hhQANYYcADWGJAA1hjAANYY0ADWGOAA1hjwANYZAADWGSAA1hlAANYZUADWGWAA1hmAANYZkADWIUAA1iFgANYhkADWIbAA1iHgANYh8ADWIgAA1iIQANYiIADWIkAA1iJgANYicADWIoAA1iKgANYisADWK+AA1i4QANYwEADWMhAA1jIwANYyUADWMnAA1jKQANYywADWMtAA1jLgANYzEADWMyAA1jNAANYzUADWM3AA1jOgANYzsADWM8AA1jPwANY0AADWNFAA1jXgANY2cADWNpAA1jawANY3QADWN3AA1jegANY3wADWPFAA1j6QANZBAADWQ0AA1kNwANZDkADWQ7AA1kPQANZD8ADWRBAA1kQgANZEUADWReAA1kfwANZIEADWSDAA1khQANZIcADWSJAA1kiwANZI0ADWSPAA1ksAANZLMADWS2AA1kuQANZLwADWS/AA1kwgANZMUADWTIAA1kygANZUUADWVHAA1lSQANZUsADWVOAA1lTwANZVAADWVRAA1lUgANZVQADWVWAA1lVwANZVgADWVaAA1lWwANZdYADWXYAA1l2gANZdwADWXfAA1l4AANZeEADWXiAA1l4wANZeUADWXnAA1l6AANZekADWXrAA1l7AANZmcADWZpAA1mbAANZm4ADWZxAA1mcgANZnMADWZ0AA1mdQANZncADWZ5AA1megANZnsADWZ9AA1mfgANZpcADWaYAA1mmQANZpsADWcWAA1nGAANZxoADWccAA1nHwANZyAADWchAA1nIgANZyMADWclAA1nJwANZygADWcpAA1nKwANZywADWenAA1nqQANZ6sADWetAA1nsAANZ7EADWeyAA1nswANZ7QADWe2AA1nuAANZ7kADWe6AA1nvAANZ70ADWg4AA1oOgANaDwADWg+AA1oQQANaEIADWhDAA1oRAANaEUADWhHAA1oSQANaEoADWhLAA1oTQANaE4ADWjJAA1oywANaM0ADWjPAA1o0gANaNMADWjUAA1o1QANaNYADWjYAA1o2gANaNsADWjcAA1o3gANaN8ADWlaAA1pXAANaV4ADWlgAA1pYwANaWQADWllAA1pZgANaWcADWlpAA1pawANaWwADWltAA1pbwANaXAADWm5AA1p3QANagQADWooAA1qKwANai0ADWovAA1qMQANajMADWo1AA1qNgANajkADWpSAA1qbwANanEADWpzAA1qdQANancADWp5AA1qewANan0ADWqaAA1qnQANaqAADWqjAA1qpgANaqkADWqsAA1qrwANarEADWssAA1rLgANazAADWsyAA1rNQANazYADWs3AA1rOAANazkADWs7AA1rPQANaz4ADWs/AA1rQQANa0IADWu9AA1rvwANa8EADWvDAA1rxgANa8cADWvIAA1ryQANa8oADWvMAA1rzgANa88ADWvQAA1r0gANa9MADWxOAA1sUAANbFIADWxUAA1sVwANbFgADWxZAA1sWgANbFsADWxdAA1sXwANbGAADWxhAA1sYwANbGQADWzfAA1s4QANbOMADWzlAA1s6AANbOkADWzqAA1s6wANbOwADWzuAA1s8AANbPEADWzyAA1s9AANbPUADW1wAA1tcgANbXQADW12AA1teQANbXoADW17AA1tfAANbX0ADW1/AA1tgQANbYIADW2DAA1thQANbYYADW4BAA1uAwANbgUADW4HAA1uCgANbgsADW4MAA1uDQANbg4ADW4QAA1uEgANbhMADW4UAA1uFgANbhcADW6SAA1ulAANbpYADW6YAA1umwANbpwADW6dAA1ungANbp8ADW6hAA1uowANbqQADW6lAA1upwANbqgADW87AA1vXgANb34ADW+eAA1voAANb6IADW+kAA1vpgANb6kADW+qAA1vqwANb64ADW+vAA1vsQANb7IADW+0AA1vtwANb7gADW+5AA1vvAANb70ADW/CAA1v2wANb+QADW/mAA1v6AANb/EADW/0AA1v9wANb/kADXBCAA1wZgANcI0ADXCxAA1wtAANcLYADXC4AA1wugANcLwADXC+AA1wvwANcMIADXDbAA1w/AANcP4ADXEAAA1xAgANcQQADXEGAA1xCAANcQoADXEMAA1xLQANcTAADXEzAA1xNgANcTkADXE8AA1xPwANcUIADXFFAA1xRwANccIADXHEAA1xxgANccgADXHLAA1xzAANcc0ADXHOAA1xzwANcdEADXHTAA1x1AANcdUADXHXAA1x2AANclMADXJVAA1yVwANclkADXJcAA1yXQANcl4ADXJfAA1yYAANcmIADXJkAA1yZQANcmYADXJoAA1yaQANcuQADXLmAA1y6QANcusADXLuAA1y7wANcvAADXLxAA1y8gANcvQADXL2AA1y9wANcvgADXL6AA1y+wANcxQADXMVAA1zFgANcxgADXOTAA1zlQANc5cADXOZAA1znAANc50ADXOeAA1znwANc6AADXOiAA1zpAANc6UADXOmAA1zqAANc6kADXQkAA10JgANdCgADXQqAA10LQANdC4ADXQvAA10MAANdDEADXQzAA10NQANdDYADXQ3AA10OQANdDoADXS1AA10twANdLkADXS7AA10vgANdL8ADXTAAA10wQANdMIADXTEAA10xgANdMcADXTIAA10ygANdMsADXVGAA11SAANdUoADXVMAA11TwANdVAADXVRAA11UgANdVMADXVVAA11VwANdVgADXVZAA11WwANdVwADXXXAA112QANddsADXXdAA114AANdeEADXXiAA114wANdeQADXXmAA116AANdekADXXqAA117AANde0ADXY2AA12WgANdoEADXalAA12qAANdqoADXasAA12rgANdrAADXayAA12swANdrYADXbPAA127AANdu4ADXbwAA128gANdvQADXb2AA12+AANdvoADXcXAA13GgANdx0ADXcgAA13IwANdyYADXcpAA13LAANdy4ADXepAA13qwANd60ADXevAA13sgANd7MADXe0AA13tQANd7YADXe4AA13ugANd7sADXe8AA13vgANd78ADXg6AA14PAANeD4ADXhAAA14QwANeEQADXhFAA14RgANeEcADXhJAA14SwANeEwADXhNAA14TwANeFAADXjLAA14zQANeM8ADXjRAA141AANeNUADXjWAA141wANeNgADXjaAA143AANeN0ADXjeAA144AANeOEADXlcAA15XgANeWEADXljAA15ZgANeWcADXloAA15aQANeWoADXlsAA15bgANeW8ADXlwAA15cgANeXMADXnuAA158AANefIADXn0AA159wANefgADXn5AA15+gANefsADXn9AA15/wANegAADXoBAA16AwANegQADXp/AA16gQANeoMADXqFAA16iAANeokADXqKAA16iwANeowADXqOAA16kAANepEADXqSAA16lAANepUADXsQAA17EgANexQADXsWAA17GQANexoADXsbAA17HAANex0ADXsfAA17IQANeyIADXsjAA17JQANeyYADXu5AA173AANe/wADXwcAA18HgANfCAADXwiAA18JAANfCcADXwoAA18KQANfCwADXwtAA18LwANfDAADXwzAA18NgANfDcADXw4AA18OwANfDwADXxFAA18XgANfGcADXxpAA18awANfHQADXx3AA18egANfHwADXzFAA186QANfRAADX00AA19NwANfTkADX07AA19PQANfT8ADX1BAA19QgANfUUADX1eAA19fwANfYEADX2DAA19hQANfYcADX2JAA19iwANfY0ADX2PAA19sAANfbMADX22AA19uQANfbwADX2/AA19wgANfcUADX3IAA19ygANfkUADX5HAA1+SQANfksADX5OAA1+TwANflAADX5RAA1+UgANflQADX5WAA1+VwANflgADX5aAA1+WwANftYADX7YAA1+2gANftwADX7fAA1+4AANfuEADX7iAA1+4wANfuUADX7nAA1+6AANfukADX7rAA1+7AANf2cADX9pAA1/bAANf24ADX9xAA1/cgANf3MADX90AA1/dQANf3cADX95AA1/egANf3sADX99AA1/fgANf5cADX+YAA1/mQANf5sADYAWAA2AGAANgBoADYAcAA2AHwANgCAADYAhAA2AIgANgCMADYAlAA2AJwANgCgADYApAA2AKwANgCwADYCnAA2AqQANgKsADYCtAA2AsAANgLEADYCyAA2AswANgLQADYC2AA2AuAANgLkADYC6AA2AvAANgL0ADYE4AA2BOgANgTwADYE+AA2BQQANgUIADYFDAA2BRAANgUUADYFHAA2BSQANgUoADYFLAA2BTQANgU4ADYHJAA2BywANgc0ADYHPAA2B0gANgdMADYHUAA2B1QANgdYADYHYAA2B2gANgdsADYHcAA2B3gANgd8ADYJaAA2CXAANgl4ADYJgAA2CYwANgmQADYJlAA2CZgANgmcADYJpAA2CawANgmwADYJtAA2CbwANgnAADYK5AA2C3QANgwQADYMoAA2DKwANgy0ADYMvAA2DMQANgzMADYM1AA2DNgANgzkADYNSAA2DbwANg3EADYNzAA2DdQANg3cADYN5AA2DewANg30ADYOaAA2DnQANg6AADYOjAA2DpgANg6kADYOsAA2DrwANg7EADYQsAA2ELgANhDAADYQyAA2ENQANhDYADYQ3AA2EOAANhDkADYQ7AA2EPQANhD4ADYQ/AA2EQQANhEIADYS9AA2EvwANhMIADYTEAA2ExwANhMgADYTJAA2EygANhMsADYTNAA2EzwANhNAADYTRAA2E0wANhNQADYVPAA2FUQANhVMADYVVAA2FWAANhVkADYVaAA2FWwANhVwADYVeAA2FYAANhWEADYViAA2FZAANhWUADYXgAA2F4gANheUADYXnAA2F6gANhesADYXsAA2F7QANhe4ADYXwAA2F8gANhfMADYX0AA2F9gANhfcADYaaAA2GvgANhuIADYcCAA2HKQANh1AADYdwAA2HlwANh7sADYfeAA2IBQANiCkADYhNAA2IcQANiJgADYiZAA2ImwANiJ0ADYigAA2IogANiKUADYinAA2IqQANiKwADYiuAA2IsAANiLMADYi2AA2IuAANiLoADYi8AA2IvwANiMIADYjFAA2IzgANiOcADYjsAA2I7gANiPMADYj2AA2I+AANiUEADYllAA2JjAANibAADYmzAA2JtQANibcADYm5AA2JuwANib0ADYm+AA2JwQANidoADYn/AA2KAQANigMADYoFAA2KBwANigkADYoLAA2KDQANig8ADYoRAA2KNgANijkADYo8AA2KPwANikIADYpFAA2KSAANiksADYpOAA2KUQANilMADYrOAA2K0AANitMADYrVAA2K2AANitkADYraAA2K2wANitwADYreAA2K4AANiuEADYriAA2K5AANiuUADYr2AA2K9wANivkADYt0AA2LdgANi3gADYt6AA2LfQANi34ADYt/AA2LgAANi4EADYuDAA2LhQANi4YADYuHAA2LiQANi4oADYwFAA2MBwANjAoADYwMAA2MDwANjBAADYwRAA2MEgANjBMADYwVAA2MFwANjBgADYwZAA2MGwANjBwADYwtAA2MLgANjDAADYyrAA2MrQANjK8ADYyxAA2MtAANjLUADYy2AA2MtwANjLgADYy6AA2MvAANjL0ADYy+AA2MwAANjMEADY08AA2NPgANjUEADY1DAA2NRgANjUcADY1IAA2NSQANjUoADY1MAA2NTgANjU8ADY1QAA2NUgANjVMADY1kAA2NZQANjWcADY3iAA2N5AANjeYADY3oAA2N6wANjewADY3tAA2N7gANje8ADY3xAA2N8wANjfQADY31AA2N9wANjfgADY5zAA2OdQANjngADY56AA2OfQANjn4ADY5/AA2OgAANjoEADY6DAA2OhQANjoYADY6HAA2OiQANjooADY6jAA2OpAANjqUADY6nAA2PIgANjyQADY8mAA2PKAANjysADY8sAA2PLQANjy4ADY8vAA2PMQANjzMADY80AA2PNQANjzcADY84AA2PswANj7UADY+4AA2PugANj70ADY++AA2PvwANj8AADY/BAA2PwwANj8UADY/GAA2PxwANj8kADY/KAA2P4AANj/kADZASAA2QFQANkBgADZAbAA2QHgANkCEADZAkAA2QPQANkEAADZBDAA2QRgANkEkADZBMAA2QTwANkFEADZBWAA2QZAANkHcADZCGAA2QiwANkR4ADZFBAA2RYQANkYEADZGDAA2RhQANkYcADZGJAA2RjAANkY0ADZGOAA2RkQANkZIADZGUAA2RlQANkZcADZGaAA2RmwANkZwADZGfAA2RoAANkaUADZG+AA2RxwANkckADZHLAA2R1AANkdcADZHaAA2R3AANkiUADZJJAA2ScAANkpQADZKXAA2SmQANkpsADZKdAA2SnwANkqEADZKiAA2SpQANkr4ADZLfAA2S4QANkuMADZLlAA2S5wANkukADZLrAA2S7QANku8ADZMQAA2TEwANkxYADZMZAA2THAANkx8ADZMiAA2TJQANkygADZMqAA2TpQANk6cADZOpAA2TqwANk64ADZOvAA2TsAANk7EADZOyAA2TtAANk7YADZO3AA2TuAANk7oADZO7AA2UNgANlDgADZQ6AA2UPAANlD8ADZRAAA2UQQANlEIADZRDAA2URQANlEcADZRIAA2USQANlEsADZRMAA2UxwANlMkADZTMAA2UzgANlNEADZTSAA2U0wANlNQADZTVAA2U1wANlNkADZTaAA2U2wANlN0ADZTeAA2U9wANlPgADZT5AA2U+wANlXYADZV4AA2VegANlXwADZV/AA2VgAANlYEADZWCAA2VgwANlYUADZWHAA2ViAANlYkADZWLAA2VjAANlgcADZYJAA2WCwANlg0ADZYQAA2WEQANlhIADZYTAA2WFAANlhYADZYYAA2WGQANlhoADZYcAA2WHQANlpgADZaaAA2WnAANlp4ADZahAA2WogANlqMADZakAA2WpQANlqcADZapAA2WqgANlqsADZatAA2WrgANlykADZcrAA2XLQANly8ADZcyAA2XMwANlzQADZc1AA2XNgANlzgADZc6AA2XOwANlzwADZc+AA2XPwANl7oADZe8AA2XvgANl8AADZfDAA2XxAANl8UADZfGAA2XxwANl8kADZfLAA2XzAANl80ADZfPAA2X0AANmBkADZg9AA2YZAANmIgADZiLAA2YjQANmI8ADZiRAA2YkwANmJUADZiWAA2YmQANmLIADZjPAA2Y0QANmNMADZjVAA2Y1wANmNkADZjbAA2Y3QANmPoADZj9AA2ZAAANmQMADZkGAA2ZCQANmQwADZkPAA2ZEQANmYwADZmOAA2ZkAANmZIADZmVAA2ZlgANmZcADZmYAA2ZmQANmZsADZmdAA2ZngANmZ8ADZmhAA2ZogANmh0ADZofAA2aIQANmiMADZomAA2aJwANmigADZopAA2aKgANmiwADZouAA2aLwANmjAADZoyAA2aMwANmq4ADZqwAA2asgANmrQADZq3AA2auAANmrkADZq6AA2auwANmr0ADZq/AA2awAANmsEADZrDAA2axAANmz8ADZtBAA2bRAANm0YADZtJAA2bSgANm0sADZtMAA2bTQANm08ADZtRAA2bUgANm1MADZtVAA2bVgANm9EADZvTAA2b1QANm9cADZvaAA2b2wANm9wADZvdAA2b3gANm+AADZviAA2b4wANm+QADZvmAA2b5wANnGIADZxkAA2cZgANnGgADZxrAA2cbAANnG0ADZxuAA2cbwANnHEADZxzAA2cdAANnHUADZx3AA2ceAANnPMADZz1AA2c9wANnPkADZz8AA2c/QANnP4ADZz/AA2dAAANnQIADZ0EAA2dBQANnQYADZ0IAA2dCQANnZwADZ2/AA2d3wANnf8ADZ4BAA2eAwANngUADZ4HAA2eCgANngsADZ4MAA2eDwANnhAADZ4SAA2eEwANnhYADZ4ZAA2eGgANnhsADZ4eAA2eHwANniQADZ49AA2eRgANnkgADZ5KAA2eUwANnlYADZ5ZAA2eWwANnqQADZ7IAA2e7wANnxMADZ8WAA2fGAANnxoADZ8cAA2fHgANnyAADZ8hAA2fJAANnz0ADZ9eAA2fYAANn2IADZ9kAA2fZgANn2gADZ9qAA2fbAANn24ADZ+PAA2fkgANn5UADZ+YAA2fmwANn54ADZ+hAA2fpAANn6cADZ+pAA2gJAANoCYADaAoAA2gKgANoC0ADaAuAA2gLwANoDAADaAxAA2gMwANoDUADaA2AA2gNwANoDkADaA6AA2gtQANoLcADaC5AA2guwANoL4ADaC/AA2gwAANoMEADaDCAA2gxAANoMYADaDHAA2gyAANoMoADaDLAA2hRgANoUgADaFLAA2hTQANoVAADaFRAA2hUgANoVMADaFUAA2hVgANoVgADaFZAA2hWgANoVwADaFdAA2hdgANoXcADaF4AA2hegANofUADaH3AA2h+QANofsADaH+AA2h/wANogAADaIBAA2iAgANogQADaIGAA2iBwANoggADaIKAA2iCwANooYADaKIAA2iigANoowADaKPAA2ikAANopEADaKSAA2ikwANopUADaKXAA2imAANopkADaKbAA2inAANoxcADaMZAA2jGwANox0ADaMgAA2jIQANoyIADaMjAA2jJAANoyYADaMoAA2jKQANoyoADaMsAA2jLQANo6gADaOqAA2jrAANo64ADaOxAA2jsgANo7MADaO0AA2jtQANo7cADaO5AA2jugANo7sADaO9AA2jvgANpDkADaQ7AA2kPQANpD8ADaRCAA2kQwANpEQADaRFAA2kRgANpEgADaRKAA2kSwANpEwADaROAA2kTwANpJgADaS8AA2k4wANpQcADaUKAA2lDAANpQ4ADaUQAA2lEgANpRQADaUVAA2lGAANpTEADaVOAA2lUAANpVIADaVUAA2lVgANpVgADaVaAA2lXAANpXkADaV8AA2lfwANpYIADaWFAA2liAANpYsADaWOAA2lkAANpgsADaYNAA2mDwANphEADaYUAA2mFQANphYADaYXAA2mGAANphoADaYcAA2mHQANph4ADaYgAA2mIQANppwADaaeAA2moAANpqIADaalAA2mpgANpqcADaaoAA2mqQANpqsADaatAA2mrgANpq8ADaaxAA2msgANpy0ADacvAA2nMQANpzMADac2AA2nNwANpzgADac5AA2nOgANpzwADac+AA2nPwANp0AADadCAA2nQwANp74ADafAAA2nwwANp8UADafIAA2nyQANp8oADafLAA2nzAANp84ADafQAA2n0QANp9IADafUAA2n1QANqFAADahSAA2oVAANqFYADahZAA2oWgANqFsADahcAA2oXQANqF8ADahhAA2oYgANqGMADahlAA2oZgANqOEADajjAA2o5QANqOcADajqAA2o6wANqOwADajtAA2o7gANqPAADajyAA2o8wANqPQADaj2AA2o9wANqXIADal0AA2pdwANqXkADal8AA2pfQANqX4ADal/AA2pgAANqYIADamEAA2phQANqYYADamIAA2piQANqhwADao/AA2qXwANqn8ADaqBAA2qgwANqoUADaqHAA2qigANqosADaqMAA2qjwANqpAADaqSAA2qkwANqpUADaqYAA2qmQANqpoADaqdAA2qngANqqcADarAAA2qyQANqssADarNAA2q1gANqtkADarcAA2q3gANqycADatLAA2rcgANq5YADauZAA2rmwANq50ADaufAA2roQANq6MADaukAA2rpwANq8AADavhAA2r4wANq+UADavnAA2r6QANq+sADavtAA2r7wANq/EADawSAA2sFQANrBgADawbAA2sHgANrCEADawkAA2sJwANrCoADawsAA2spwANrKkADayrAA2srQANrLAADayxAA2ssgANrLMADay0AA2stgANrLgADay5AA2sugANrLwADay9AA2tOAANrToADa08AA2tPgANrUEADa1CAA2tQwANrUQADa1FAA2tRwANrUkADa1KAA2tSwANrU0ADa1OAA2tyQANrcsADa3OAA2t0AANrdMADa3UAA2t1QANrdYADa3XAA2t2QANrdsADa3cAA2t3QANrd8ADa3gAA2t+QANrfoADa37AA2t/QANrngADa56AA2ufAANrn4ADa6BAA2uggANroMADa6EAA2uhQANrocADa6JAA2uigANrosADa6NAA2ujgANrwkADa8LAA2vDQANrw8ADa8SAA2vEwANrxQADa8VAA2vFgANrxgADa8aAA2vGwANrxwADa8eAA2vHwANr5oADa+cAA2vngANr6AADa+jAA2vpAANr6UADa+mAA2vpwANr6kADa+rAA2vrAANr60ADa+vAA2vsAANsCsADbAtAA2wLwANsDEADbA0AA2wNQANsDYADbA3AA2wOAANsDoADbA8AA2wPQANsD4ADbBAAA2wQQANsLwADbC+AA2wwAANsMIADbDFAA2wxgANsMcADbDIAA2wyQANsMsADbDNAA2wzgANsM8ADbDRAA2w0gANsRsADbE/AA2xZgANsYoADbGNAA2xjwANsZEADbGTAA2xlQANsZcADbGYAA2xmwANsbQADbHRAA2x0wANsdUADbHXAA2x2QANsdsADbHdAA2x3wANsfwADbH/AA2yAgANsgUADbIIAA2yCwANsg4ADbIRAA2yEwANso4ADbKQAA2ykgANspQADbKXAA2ymAANspkADbKaAA2ymwANsp0ADbKfAA2yoAANsqEADbKjAA2ypAANsx8ADbMhAA2zIwANsyUADbMoAA2zKQANsyoADbMrAA2zLAANsy4ADbMwAA2zMQANszIADbM0AA2zNQANs7AADbOyAA2ztAANs7YADbO5AA2zugANs7sADbO8AA2zvQANs78ADbPBAA2zwgANs8MADbPFAA2zxgANtEEADbRDAA20RQANtEcADbRKAA20SwANtEwADbRNAA20TgANtFAADbRSAA20UwANtFQADbRWAA20VwANtNIADbTUAA201gANtNgADbTbAA203AANtN0ADbTeAA203wANtOEADbTjAA205AANtOUADbTnAA206AANtWMADbVlAA21ZwANtWkADbVsAA21bQANtW4ADbVvAA21cAANtXIADbV0AA21dQANtXYADbV4AA21eQANtfQADbX2AA21+AANtfoADbX9AA21/gANtf8ADbYAAA22AQANtgMADbYFAA22BgANtgcADbYJAA22CgANtp0ADbbAAA224AANtwAADbcCAA23BAANtwYADbcIAA23CwANtwwADbcNAA23EAANtxEADbcTAA23FAANtxYADbcZAA23GgANtxsADbceAA23HwANtygADbdBAA23SgANt0wADbdOAA23VwANt1oADbddAA23XwANt6gADbfMAA238wANuBcADbgaAA24HAANuB4ADbggAA24IgANuCQADbglAA24KAANuEEADbhiAA24ZAANuGYADbhoAA24agANuGwADbhuAA24cAANuHIADbiTAA24lgANuJkADbicAA24nwANuKIADbilAA24qAANuKsADbitAA25KAANuSoADbksAA25LgANuTEADbkyAA25MwANuTQADbk1AA25NwANuTkADbk6AA25OwANuT0ADbk+AA25uQANubsADbm9AA25vwANucIADbnDAA25xAANucUADbnGAA25yAANucoADbnLAA25zAANuc4ADbnPAA26SgANukwADbpPAA26UQANulQADbpVAA26VgANulcADbpYAA26WgANulwADbpdAA26XgANumAADbphAA26egANunsADbp8AA26fgANuvkADbr7AA26/QANuv8ADbsCAA27AwANuwQADbsFAA27BgANuwgADbsKAA27CwANuwwADbsOAA27DwANu4oADbuMAA27jgANu5AADbuTAA27lAANu5UADbuWAA27lwANu5kADbubAA27nAANu50ADbufAA27oAANvBsADbwdAA28HwANvCEADbwkAA28JQANvCYADbwnAA28KAANvCoADbwsAA28LQANvC4ADbwwAA28MQANvKwADbyuAA28sAANvLIADby1AA28tgANvLcADby4AA28uQANvLsADby9AA28vgANvL8ADbzBAA28wgANvT0ADb0/AA29QQANvUMADb1GAA29RwANvUgADb1JAA29SgANvUwADb1OAA29TwANvVAADb1SAA29UwANvZwADb3AAA295wANvgsADb4OAA2+EAANvhIADb4UAA2+FgANvhgADb4ZAA2+HAANvjUADb5SAA2+VAANvlYADb5YAA2+WgANvlwADb5eAA2+YAANvn0ADb6AAA2+gwANvoYADb6JAA2+jAANvo8ADb6SAA2+lAANvw8ADb8RAA2/EwANvxUADb8YAA2/GQANvxoADb8bAA2/HAANvx4ADb8gAA2/IQANvyIADb8kAA2/JQANv6AADb+iAA2/pAANv6YADb+pAA2/qgANv6sADb+sAA2/rQANv68ADb+xAA2/sgANv7MADb+1AA2/tgANwDEADcAzAA3ANQANwDcADcA6AA3AOwANwDwADcA9AA3APgANwEAADcBCAA3AQwANwEQADcBGAA3ARwANwMIADcDEAA3AxwANwMkADcDMAA3AzQANwM4ADcDPAA3A0AANwNIADcDUAA3A1QANwNYADcDYAA3A2QANwVQADcFWAA3BWAANwVoADcFdAA3BXgANwV8ADcFgAA3BYQANwWMADcFlAA3BZgANwWcADcFpAA3BagANweUADcHnAA3B6QANwesADcHuAA3B7wANwfAADcHxAA3B8gANwfQADcH2AA3B9wANwfgADcH6AA3B+wANwnYADcJ4AA3CegANwnwADcJ/AA3CgAANwoEADcKCAA3CgwANwoUADcKHAA3CiAANwokADcKLAA3CjAANwx8ADcNCAA3DYgANw4IADcOEAA3DhgANw4gADcOKAA3DjQANw44ADcOPAA3DkgANw5MADcOVAA3DlgANw5gADcObAA3DnAANw50ADcOgAA3DoQANw6YADcO/AA3DyAANw8oADcPMAA3D1QANw9gADcPbAA3D3QANxCYADcRKAA3EcQANxJUADcSYAA3EmgANxJwADcSeAA3EoAANxKIADcSjAA3EpgANxL8ADcTgAA3E4gANxOQADcTmAA3E6AANxOoADcTsAA3E7gANxPAADcURAA3FFAANxRcADcUaAA3FHQANxSAADcUjAA3FJgANxSkADcUrAA3FpgANxagADcWqAA3FrAANxa8ADcWwAA3FsQANxbIADcWzAA3FtQANxbcADcW4AA3FuQANxbsADcW8AA3GNwANxjkADcY7AA3GPQANxkAADcZBAA3GQgANxkMADcZEAA3GRgANxkgADcZJAA3GSgANxkwADcZNAA3GyAANxsoADcbNAA3GzwANxtIADcbTAA3G1AANxtUADcbWAA3G2AANxtoADcbbAA3G3AANxt4ADcbfAA3G+AANxvkADcb6AA3G/AANx3cADcd5AA3HewANx30ADceAAA3HgQANx4IADceDAA3HhAANx4YADceIAA3HiQANx4oADceMAA3HjQANyAgADcgKAA3IDAANyA4ADcgRAA3IEgANyBMADcgUAA3IFQANyBcADcgZAA3IGgANyBsADcgdAA3IHgANyJkADcibAA3InQANyJ8ADciiAA3IowANyKQADcilAA3IpgANyKgADciqAA3IqwANyKwADciuAA3IrwANySoADcksAA3JLgANyTAADckzAA3JNAANyTUADck2AA3JNwANyTkADck7AA3JPAANyT0ADck/AA3JQAANybsADcm9AA3JvwANycEADcnEAA3JxQANycYADcnHAA3JyAANycoADcnMAA3JzQANyc4ADcnQAA3J0QANyhoADco+AA3KZQANyokADcqMAA3KjgANypAADcqSAA3KlAANypYADcqXAA3KmgANyrMADcrQAA3K0gANytQADcrWAA3K2AANytoADcrcAA3K3gANyvsADcr+AA3LAQANywQADcsHAA3LCgANyw0ADcsQAA3LEgANy40ADcuPAA3LkQANy5MADcuWAA3LlwANy5gADcuZAA3LmgANy5wADcueAA3LnwANy6AADcuiAA3LowANzB4ADcwgAA3MIgANzCQADcwnAA3MKAANzCkADcwqAA3MKwANzC0ADcwvAA3MMAANzDEADcwzAA3MNAANzK8ADcyxAA3MswANzLUADcy4AA3MuQANzLoADcy7AA3MvAANzL4ADczAAA3MwQANzMIADczEAA3MxQANzUAADc1CAA3NRAANzUYADc1JAA3NSgANzUsADc1MAA3NTQANzU8ADc1RAA3NUgANzVMADc1VAA3NVgANzdEADc3TAA3N1QANzdcADc3aAA3N2wANzdwADc3dAA3N3gANzeAADc3iAA3N4wANzeQADc3mAA3N5wANzmIADc5kAA3OZgANzmgADc5rAA3ObAANzm0ADc5uAA3ObwANznEADc5zAA3OdAANznUADc53AA3OeAANzvMADc71AA3O9wANzvkADc78AA3O/QANzv4ADc7/AA3PAAANzwIADc8EAA3PBQANzwYADc8IAA3PCQANz5wADc+/AA3P3wANz/8ADdABAA3QAwAN0AUADdAHAA3QCgAN0AsADdAMAA3QDwAN0BAADdASAA3QEwAN0BUADdAYAA3QGQAN0BoADdAdAA3QHgAN0CcADdBAAA3QSQAN0EsADdBNAA3QVgAN0FkADdBcAA3QXgAN0KcADdDLAA3Q8gAN0RYADdEZAA3RGwAN0R0ADdEfAA3RIQAN0SMADdEkAA3RJwAN0UAADdFhAA3RYwAN0WUADdFnAA3RaQAN0WsADdFtAA3RbwAN0XEADdGSAA3RlQAN0ZgADdGbAA3RngAN0aEADdGkAA3RpwAN0aoADdGsAA3SJwAN0ikADdIrAA3SLQAN0jAADdIxAA3SMgAN0jMADdI0AA3SNgAN0jgADdI5AA3SOgAN0jwADdI9AA3SuAAN0roADdK8AA3SvgAN0sEADdLCAA3SwwAN0sQADdLFAA3SxwAN0skADdLKAA3SywAN0s0ADdLOAA3TSQAN00sADdNOAA3TUAAN01MADdNUAA3TVQAN01YADdNXAA3TWQAN01sADdNcAA3TXQAN018ADdNgAA3TeQAN03oADdN7AA3TfQAN0/gADdP6AA3T/AAN0/4ADdQBAA3UAgAN1AMADdQEAA3UBQAN1AcADdQJAA3UCgAN1AsADdQNAA3UDgAN1IkADdSLAA3UjQAN1I8ADdSSAA3UkwAN1JQADdSVAA3UlgAN1JgADdSaAA3UmwAN1JwADdSeAA3UnwAN1RoADdUcAA3VHgAN1SAADdUjAA3VJAAN1SUADdUmAA3VJwAN1SkADdUrAA3VLAAN1S0ADdUvAA3VMAAN1asADdWtAA3VrwAN1bEADdW0AA3VtQAN1bYADdW3AA3VuAAN1boADdW8AA3VvQAN1b4ADdXAAA3VwQAN1jwADdY+AA3WQAAN1kIADdZFAA3WRgAN1kcADdZIAA3WSQAN1ksADdZNAA3WTgAN1k8ADdZRAA3WUgAN1psADda/AA3W5gAN1woADdcNAA3XDwAN1xEADdcTAA3XFQAN1xcADdcYAA3XGwAN1zQADddRAA3XUwAN11UADddXAA3XWQAN11sADdddAA3XXwAN13wADdd/AA3XggAN14UADdeIAA3XiwAN144ADdeRAA3XkwAN2A4ADdgQAA3YEgAN2BQADdgXAA3YGAAN2BkADdgaAA3YGwAN2B0ADdgfAA3YIAAN2CEADdgjAA3YJAAN2J8ADdihAA3YowAN2KUADdioAA3YqQAN2KoADdirAA3YrAAN2K4ADdiwAA3YsQAN2LIADdi0AA3YtQAN2TAADdkyAA3ZNAAN2TYADdk5AA3ZOgAN2TsADdk8AA3ZPQAN2T8ADdlBAA3ZQgAN2UMADdlFAA3ZRgAN2cEADdnDAA3ZxgAN2cgADdnLAA3ZzAAN2c0ADdnOAA3ZzwAN2dEADdnTAA3Z1AAN2dUADdnXAA3Z2AAN2lMADdpVAA3aVwAN2lkADdpcAA3aXQAN2l4ADdpfAA3aYAAN2mIADdpkAA3aZQAN2mYADdpoAA3aaQAN2uQADdrmAA3a6AAN2uoADdrtAA3a7gAN2u8ADdrwAA3a8QAN2vMADdr1AA3a9gAN2vcADdr5AA3a+gAN23UADdt3AA3beQAN23sADdt+AA3bfwAN24AADduBAA3bggAN24QADduGAA3bhwAN24gADduKAA3biwAN25wADdudAA3bnwAN27AADdu1AA3buAAN27oADdvzAA3b9gAN2/gADdv7AA3b/gAN3AEADdwEAA3chwAN3KsADdzPAA3c8gAN3RkADd05AA3dYAAN3YcADd2nAA3dywAN3e8ADd3xAA3d9AAN3fYADd34AA3d+gAN3f0ADd4AAA3eAgAN3gQADd4HAA3eCQAN3gsADd4OAA3eEQAN3hIADd4bAA3eNAAN3jkADd47AA3eQAAN3kMADd5FAA3ejgAN3rIADd7ZAA3e/QAN3wAADd8CAA3fBAAN3wYADd8IAA3fCgAN3wsADd8OAA3fJwAN30wADd9OAA3fUAAN31IADd9UAA3fVgAN31gADd9aAA3fXAAN314ADd+DAA3fhgAN34kADd+MAA3fjwAN35IADd+VAA3fmAAN35sADd+eAA3foAAN4BsADeAdAA3gIAAN4CIADeAlAA3gJgAN4CcADeAoAA3gKQAN4CsADeAtAA3gLgAN4C8ADeAxAA3gMgAN4EMADeBEAA3gRgAN4MEADeDDAA3gxQAN4McADeDKAA3gywAN4MwADeDNAA3gzgAN4NAADeDSAA3g0wAN4NQADeDWAA3g1wAN4VIADeFUAA3hVwAN4VkADeFcAA3hXQAN4V4ADeFfAA3hYAAN4WIADeFkAA3hZQAN4WYADeFoAA3haQAN4XoADeF7AA3hfQAN4fgADeH6AA3h/AAN4f4ADeIBAA3iAgAN4gMADeIEAA3iBQAN4gcADeIJAA3iCgAN4gsADeINAA3iDgAN4okADeKLAA3ijgAN4pAADeKTAA3ilAAN4pUADeKWAA3ilwAN4pkADeKbAA3inAAN4p0ADeKfAA3ioAAN4rEADeKyAA3itAAN4y8ADeMxAA3jMwAN4zUADeM4AA3jOQAN4zoADeM7AA3jPAAN4z4ADeNAAA3jQQAN40IADeNEAA3jRQAN48AADePCAA3jxQAN48cADePKAA3jywAN48wADePNAA3jzgAN49AADePSAA3j0wAN49QADePWAA3j1wAN4/AADePxAA3j8gAN4/QADeRvAA3kcQAN5HMADeR1AA3keAAN5HkADeR6AA3kewAN5HwADeR+AA3kgAAN5IEADeSCAA3khAAN5IUADeUAAA3lAgAN5QUADeUHAA3lCgAN5QsADeUMAA3lDQAN5Q4ADeUQAA3lEgAN5RMADeUUAA3lFgAN5RcADeVDAA3lXAAN5WEADeVkAA3laQAN5WwADeVuAA3lgwAN5hYADeY5AA3mWQAN5nkADeZ7AA3mfQAN5n8ADeaBAA3mhAAN5oUADeaGAA3miQAN5ooADeaMAA3mjQAN5o8ADeaSAA3mkwAN5pQADeaXAA3mmAAN5p0ADea2AA3mvwAN5sEADebDAA3mzAAN5s8ADebSAA3m1AAN5x0ADedBAA3naAAN54wADeePAA3nkQAN55MADeeVAA3nlwAN55kADeeaAA3nnQAN57YADefXAA3n2QAN59sADefdAA3n3wAN5+EADefjAA3n5QAN5+cADegIAA3oCwAN6A4ADegRAA3oFAAN6BcADegaAA3oHQAN6CAADegiAA3onQAN6J8ADeihAA3oowAN6KYADeinAA3oqAAN6KkADeiqAA3orAAN6K4ADeivAA3osAAN6LIADeizAA3pLgAN6TAADekyAA3pNAAN6TcADek4AA3pOQAN6ToADek7AA3pPQAN6T8ADelAAA3pQQAN6UMADelEAA3pvwAN6cEADenEAA3pxgAN6ckADenKAA3pywAN6cwADenNAA3pzwAN6dEADenSAA3p0wAN6dUADenWAA3p7wAN6fAADenxAA3p8wAN6m4ADepwAA3qcgAN6nQADep3AA3qeAAN6nkADep6AA3qewAN6n0ADep/AA3qgAAN6oEADeqDAA3qhAAN6v8ADesBAA3rAwAN6wUADesIAA3rCQAN6woADesLAA3rDAAN6w4ADesQAA3rEQAN6xIADesUAA3rFQAN65AADeuSAA3rlAAN65YADeuZAA3rmgAN65sADeucAA3rnQAN658ADeuhAA3rogAN66MADeulAA3rpgAN7CEADewjAA3sJQAN7CcADewqAA3sKwAN7CwADewtAA3sLgAN7DAADewyAA3sMwAN7DQADew2AA3sNwAN7LIADey0AA3stgAN7LgADey7AA3svAAN7L0ADey+AA3svwAN7MEADezDAA3sxAAN7MUADezHAA3syAAN7READe01AA3tXAAN7YAADe2DAA3thQAN7YcADe2JAA3tiwAN7Y0ADe2OAA3tkQAN7aoADe3HAA3tyQAN7csADe3NAA3tzwAN7dEADe3TAA3t1QAN7fIADe31AA3t+AAN7fsADe3+AA3uAQAN7gQADe4HAA3uCQAN7oQADe6GAA3uiAAN7ooADe6NAA3ujgAN7o8ADe6QAA3ukQAN7pMADe6VAA3ulgAN7pcADe6ZAA3umgAN7xUADe8XAA3vGQAN7xsADe8eAA3vHwAN7yAADe8hAA3vIgAN7yQADe8mAA3vJwAN7ygADe8qAA3vKwAN76YADe+oAA3vqgAN76wADe+vAA3vsAAN77EADe+yAA3vswAN77UADe+3AA3vuAAN77kADe+7AA3vvAAN8DcADfA5AA3wOwAN8D0ADfBAAA3wQQAN8EIADfBDAA3wRAAN8EYADfBIAA3wSQAN8EoADfBMAA3wTQAN8MgADfDKAA3wzAAN8M4ADfDRAA3w0gAN8NMADfDUAA3w1QAN8NcADfDZAA3w2gAN8NsADfDdAA3w3gAN8VkADfFbAA3xXQAN8V8ADfFiAA3xYwAN8WQADfFlAA3xZgAN8WgADfFqAA3xawAN8WwADfFuAA3xbwAN8eoADfHsAA3x7gAN8fAADfHzAA3x9AAN8fUADfH2AA3x9wAN8fkADfH7AA3x/AAN8f0ADfH/AA3yAAAN8hEADfIWAA3yGQAN8hsADfIgAA3ymwAN8p0ADfKfAA3yoQAN8qQADfKlAA3ypgAN8qcADfKoAA3yqgAN8qwADfKtAA3yrgAN8rAADfKxAA3zLAAN8y4ADfMwAA3zMgAN8zUADfM2AA3zNwAN8zgADfM5AA3zOwAN8z0ADfM+AA3zPwAN80EADfNCAA3zvQAN878ADfPCAA3zxAAN88cADfPIAA3zyQAN88oADfPLAA3zzQAN888ADfPQAA3z0QAN89MADfPUAA30ZwAN9IoADfSqAA30ygAN9MwADfTOAA300AAN9NIADfTVAA301gAN9NcADfTaAA302wAN9N0ADfTeAA304AAN9OMADfTkAA305QAN9OgADfTpAA307gAN9QcADfUQAA31EgAN9RQADfUdAA31IAAN9SMADfUlAA31bgAN9ZIADfW5AA313QAN9eAADfXiAA315AAN9eYADfXoAA316gAN9esADfXuAA32BwAN9igADfYqAA32LAAN9i4ADfYwAA32MgAN9jQADfY2AA32OAAN9lkADfZcAA32XwAN9mIADfZlAA32aAAN9msADfZuAA32cQAN9nMADfbuAA328AAN9vIADfb0AA329wAN9vgADfb5AA32+gAN9vsADfb9AA32/wAN9wAADfcBAA33AwAN9wQADfd/AA33gQAN94MADfeFAA33iAAN94kADfeKAA33iwAN94wADfeOAA33kAAN95EADfeSAA33lAAN95UADfgQAA34EgAN+BUADfgXAA34GgAN+BsADfgcAA34HQAN+B4ADfggAA34IgAN+CMADfgkAA34JgAN+CcADfhAAA34QQAN+EIADfhEAA34vwAN+MEADfjDAA34xQAN+MgADfjJAA34ygAN+MsADfjMAA34zgAN+NAADfjRAA340gAN+NQADfjVAA35UAAN+VIADflUAA35VgAN+VkADflaAA35WwAN+VwADfldAA35XwAN+WEADfliAA35YwAN+WUADflmAA354QAN+eMADfnlAA355wAN+eoADfnrAA357AAN+e0ADfnuAA358AAN+fIADfnzAA359AAN+fYADfn3AA36cgAN+nQADfp2AA36eAAN+nsADfp8AA36fQAN+n4ADfp/AA36gQAN+oMADfqEAA36hQAN+ocADfqIAA37AwAN+wUADfsHAA37CQAN+wwADfsNAA37DgAN+w8ADfsQAA37EgAN+xQADfsVAA37FgAN+xgADfsZAA37YgAN+4YADfutAA370QAN+9QADfvWAA372AAN+9oADfvcAA373gAN+98ADfviAA37+wAN/BgADfwaAA38HAAN/B4ADfwgAA38IgAN/CQADfwmAA38QwAN/EYADfxJAA38TAAN/E8ADfxSAA38VQAN/FgADfxaAA381QAN/NcADfzZAA382wAN/N4ADfzfAA384AAN/OEADfziAA385AAN/OYADfznAA386AAN/OoADfzrAA39ZgAN/WgADf1qAA39bAAN/W8ADf1wAA39cQAN/XIADf1zAA39dQAN/XcADf14AA39eQAN/XsADf18AA399wAN/fkADf37AA39/QAN/gAADf4BAA3+AgAN/gMADf4EAA3+BgAN/ggADf4JAA3+CgAN/gwADf4NAA3+iAAN/ooADf6MAA3+jgAN/pEADf6SAA3+kwAN/pQADf6VAA3+lwAN/pkADf6aAA3+mwAN/p0ADf6eAA3/GQAN/xsADf8dAA3/HwAN/yIADf8jAA3/JAAN/yUADf8mAA3/KAAN/yoADf8rAA3/LAAN/y4ADf8vAA3/qgAN/6wADf+uAA3/sAAN/7MADf+0AA3/tQAN/7YADf+3AA3/uQAN/7sADf+8AA3/vQAN/78ADf/AAA4AOwAOAD0ADgA/AA4AQQAOAEQADgBFAA4ARgAOAEcADgBIAA4ASgAOAEwADgBNAA4ATgAOAFAADgBRAA4A5AAOAQcADgEnAA4BRwAOAUkADgFLAA4BTQAOAU8ADgFSAA4BUwAOAVQADgFXAA4BWAAOAVoADgFbAA4BXQAOAWAADgFhAA4BYgAOAWUADgFmAA4BbwAOAYgADgGRAA4BkwAOAZUADgGeAA4BoQAOAaQADgGmAA4B7wAOAhMADgI6AA4CXgAOAmEADgJjAA4CZQAOAmcADgJpAA4CawAOAmwADgJvAA4CiAAOAqkADgKrAA4CrQAOAq8ADgKxAA4CswAOArUADgK3AA4CuQAOAtoADgLdAA4C4AAOAuMADgLmAA4C6QAOAuwADgLvAA4C8gAOAvQADgNvAA4DcQAOA3MADgN1AA4DeAAOA3kADgN6AA4DewAOA3wADgN+AA4DgAAOA4EADgOCAA4DhAAOA4UADgQAAA4EAgAOBAQADgQGAA4ECQAOBAoADgQLAA4EDAAOBA0ADgQPAA4EEQAOBBIADgQTAA4EFQAOBBYADgSRAA4EkwAOBJYADgSYAA4EmwAOBJwADgSdAA4EngAOBJ8ADgShAA4EowAOBKQADgSlAA4EpwAOBKgADgTBAA4EwgAOBMMADgTFAA4FQAAOBUIADgVEAA4FRgAOBUkADgVKAA4FSwAOBUwADgVNAA4FTwAOBVEADgVSAA4FUwAOBVUADgVWAA4F0QAOBdMADgXVAA4F1wAOBdoADgXbAA4F3AAOBd0ADgXeAA4F4AAOBeIADgXjAA4F5AAOBeYADgXnAA4GYgAOBmQADgZmAA4GaAAOBmsADgZsAA4GbQAOBm4ADgZvAA4GcQAOBnMADgZ0AA4GdQAOBncADgZ4AA4G8wAOBvUADgb3AA4G+QAOBvwADgb9AA4G/gAOBv8ADgcAAA4HAgAOBwQADgcFAA4HBgAOBwgADgcJAA4HhAAOB4YADgeIAA4HigAOB40ADgeOAA4HjwAOB5AADgeRAA4HkwAOB5UADgeWAA4HlwAOB5kADgeaAA4H4wAOCAcADgguAA4IUgAOCFUADghXAA4IWQAOCFsADghdAA4IXwAOCGAADghjAA4IfAAOCJkADgibAA4InQAOCJ8ADgihAA4IowAOCKUADginAA4IxAAOCMcADgjKAA4IzQAOCNAADgjTAA4I1gAOCNkADgjbAA4JVgAOCVgADglaAA4JXAAOCV8ADglgAA4JYQAOCWIADgljAA4JZQAOCWcADgloAA4JaQAOCWsADglsAA4J5wAOCekADgnrAA4J7QAOCfAADgnxAA4J8gAOCfMADgn0AA4J9gAOCfgADgn5AA4J+gAOCfwADgn9AA4KeAAOCnoADgp8AA4KfgAOCoEADgqCAA4KgwAOCoQADgqFAA4KhwAOCokADgqKAA4KiwAOCo0ADgqOAA4LCQAOCwsADgsOAA4LEAAOCxMADgsUAA4LFQAOCxYADgsXAA4LGQAOCxsADgscAA4LHQAOCx8ADgsgAA4LmwAOC50ADgufAA4LoQAOC6QADgulAA4LpgAOC6cADguoAA4LqgAOC6wADgutAA4LrgAOC7AADguxAA4MLAAODC4ADgwwAA4MMgAODDUADgw2AA4MNwAODDgADgw5AA4MOwAODD0ADgw+AA4MPwAODEEADgxCAA4MvQAODL8ADgzBAA4MwwAODMYADgzHAA4MyAAODMkADgzKAA4MzAAODM4ADgzPAA4M0AAODNIADgzTAA4NZgAODYkADg2pAA4NyQAODcsADg3NAA4NzwAODdEADg3UAA4N1QAODdYADg3ZAA4N2gAODdwADg3dAA4N3wAODeIADg3jAA4N5AAODecADg3oAA4N7QAODgYADg4PAA4OEQAODhMADg4cAA4OHwAODiIADg4kAA4ObQAODpEADg64AA4O3AAODt8ADg7hAA4O4wAODuUADg7nAA4O6QAODuoADg7tAA4PBgAODycADg8pAA4PKwAODy0ADg8vAA4PMQAODzMADg81AA4PNwAOD1gADg9bAA4PXgAOD2EADg9kAA4PZwAOD2oADg9tAA4PcAAOD3IADg/tAA4P7wAOD/EADg/zAA4P9gAOD/cADg/4AA4P+QAOD/oADg/8AA4P/gAOD/8ADhAAAA4QAgAOEAMADhB+AA4QgAAOEIIADhCEAA4QhwAOEIgADhCJAA4QigAOEIsADhCNAA4QjwAOEJAADhCRAA4QkwAOEJQADhEPAA4REQAOERQADhEWAA4RGQAOERoADhEbAA4RHAAOER0ADhEfAA4RIQAOESIADhEjAA4RJQAOESYADhE/AA4RQAAOEUEADhFDAA4RvgAOEcAADhHCAA4RxAAOEccADhHIAA4RyQAOEcoADhHLAA4RzQAOEc8ADhHQAA4R0QAOEdMADhHUAA4STwAOElEADhJTAA4SVQAOElgADhJZAA4SWgAOElsADhJcAA4SXgAOEmAADhJhAA4SYgAOEmQADhJlAA4S4AAOEuIADhLkAA4S5gAOEukADhLqAA4S6wAOEuwADhLtAA4S7wAOEvEADhLyAA4S8wAOEvUADhL2AA4TcQAOE3MADhN1AA4TdwAOE3oADhN7AA4TfAAOE30ADhN+AA4TgAAOE4IADhODAA4ThAAOE4YADhOHAA4UAgAOFAQADhQGAA4UCAAOFAsADhQMAA4UDQAOFA4ADhQPAA4UEQAOFBMADhQUAA4UFQAOFBcADhQYAA4UYQAOFIUADhSsAA4U0AAOFNMADhTVAA4U1wAOFNkADhTbAA4U3QAOFN4ADhThAA4U+gAOFRcADhUZAA4VGwAOFR0ADhUfAA4VIQAOFSMADhUlAA4VQgAOFUUADhVIAA4VSwAOFU4ADhVRAA4VVAAOFVcADhVZAA4V1AAOFdYADhXYAA4V2gAOFd0ADhXeAA4V3wAOFeAADhXhAA4V4wAOFeUADhXmAA4V5wAOFekADhXqAA4WZQAOFmcADhZpAA4WawAOFm4ADhZvAA4WcAAOFnEADhZyAA4WdAAOFnYADhZ3AA4WeAAOFnoADhZ7AA4W9gAOFvgADhb6AA4W/AAOFv8ADhcAAA4XAQAOFwIADhcDAA4XBQAOFwcADhcIAA4XCQAOFwsADhcMAA4XhwAOF4kADheLAA4XjQAOF5AADheRAA4XkgAOF5MADheUAA4XlgAOF5gADheZAA4XmgAOF5wADhedAA4YGAAOGBoADhgcAA4YHgAOGCEADhgiAA4YIwAOGCQADhglAA4YJwAOGCkADhgqAA4YKwAOGC0ADhguAA4YqQAOGKsADhitAA4YrwAOGLIADhizAA4YtAAOGLUADhi2AA4YuAAOGLoADhi7AA4YvAAOGL4ADhi/AA4ZOgAOGTwADhk+AA4ZQAAOGUMADhlEAA4ZRQAOGUYADhlHAA4ZSQAOGUsADhlMAA4ZTQAOGU8ADhlQAA4Z4wAOGgYADhomAA4aRgAOGkgADhpKAA4aTAAOGk4ADhpRAA4aUgAOGlMADhpWAA4aVwAOGlkADhpaAA4aXAAOGl8ADhpgAA4aYQAOGmQADhplAA4aagAOGoMADhqMAA4ajgAOGpAADhqZAA4anAAOGp8ADhqhAA4a6gAOGw4ADhs1AA4bWQAOG1wADhteAA4bYAAOG2IADhtkAA4bZgAOG2cADhtqAA4bgwAOG6QADhumAA4bqAAOG6oADhusAA4brgAOG7AADhuyAA4btAAOG9UADhvYAA4b2wAOG94ADhvhAA4b5AAOG+cADhvqAA4b7QAOG+8ADhxqAA4cbAAOHG4ADhxwAA4ccwAOHHQADhx1AA4cdgAOHHcADhx5AA4cewAOHHwADhx9AA4cfwAOHIAADhz7AA4c/QAOHP8ADh0BAA4dBAAOHQUADh0GAA4dBwAOHQgADh0KAA4dDAAOHQ0ADh0OAA4dEAAOHREADh2MAA4djgAOHZEADh2TAA4dlgAOHZcADh2YAA4dmQAOHZoADh2cAA4dngAOHZ8ADh2gAA4dogAOHaMADh28AA4dvQAOHb4ADh3AAA4eOwAOHj0ADh4/AA4eQQAOHkQADh5FAA4eRgAOHkcADh5IAA4eSgAOHkwADh5NAA4eTgAOHlAADh5RAA4ezAAOHs4ADh7QAA4e0gAOHtUADh7WAA4e1wAOHtgADh7ZAA4e2wAOHt0ADh7eAA4e3wAOHuEADh7iAA4fXQAOH18ADh9hAA4fYwAOH2YADh9nAA4faAAOH2kADh9qAA4fbAAOH24ADh9vAA4fcAAOH3IADh9zAA4f7gAOH/AADh/yAA4f9AAOH/cADh/4AA4f+QAOH/oADh/7AA4f/QAOH/8ADiAAAA4gAQAOIAMADiAEAA4gfwAOIIEADiCDAA4ghQAOIIgADiCJAA4gigAOIIsADiCMAA4gjgAOIJAADiCRAA4gkgAOIJQADiCVAA4g3gAOIQIADiEpAA4hTQAOIVAADiFSAA4hVAAOIVYADiFYAA4hWgAOIVsADiFeAA4hdwAOIZQADiGWAA4hmAAOIZoADiGcAA4hngAOIaAADiGiAA4hvwAOIcIADiHFAA4hyAAOIcsADiHOAA4h0QAOIdQADiHWAA4iUQAOIlMADiJVAA4iVwAOIloADiJbAA4iXAAOIl0ADiJeAA4iYAAOImIADiJjAA4iZAAOImYADiJnAA4i4gAOIuQADiLmAA4i6AAOIusADiLsAA4i7QAOIu4ADiLvAA4i8QAOIvMADiL0AA4i9QAOIvcADiL4AA4jcwAOI3UADiN3AA4jeQAOI3wADiN9AA4jfgAOI38ADiOAAA4jggAOI4QADiOFAA4jhgAOI4gADiOJAA4kBAAOJAYADiQJAA4kCwAOJA4ADiQPAA4kEAAOJBEADiQSAA4kFAAOJBYADiQXAA4kGAAOJBoADiQbAA4klgAOJJgADiSaAA4knAAOJJ8ADiSgAA4koQAOJKIADiSjAA4kpQAOJKcADiSoAA4kqQAOJKsADiSsAA4lJwAOJSkADiUrAA4lLQAOJTAADiUxAA4lMgAOJTMADiU0AA4lNgAOJTgADiU5AA4lOgAOJTwADiU9AA4luAAOJboADiW8AA4lvgAOJcEADiXCAA4lwwAOJcQADiXFAA4lxwAOJckADiXKAA4lywAOJc0ADiXOAA4mYQAOJoQADiakAA4mxAAOJsYADibIAA4mygAOJswADibPAA4m0AAOJtEADibUAA4m1QAOJtcADibYAA4m2wAOJt4ADibfAA4m4AAOJuMADibkAA4m6QAOJwIADicLAA4nDQAOJw8ADicYAA4nGwAOJx4ADicgAA4naQAOJ40ADie0AA4n2AAOJ9sADifdAA4n3wAOJ+EADifjAA4n5QAOJ+YADifpAA4oAgAOKCMADiglAA4oJwAOKCkADigrAA4oLQAOKC8ADigxAA4oMwAOKFQADihXAA4oWgAOKF0ADihgAA4oYwAOKGYADihpAA4obAAOKG4ADijpAA4o6wAOKO0ADijvAA4o8gAOKPMADij0AA4o9QAOKPYADij4AA4o+gAOKPsADij8AA4o/gAOKP8ADil6AA4pfAAOKX4ADimAAA4pgwAOKYQADimFAA4phgAOKYcADimJAA4piwAOKYwADimNAA4pjwAOKZAADioLAA4qDQAOKhAADioSAA4qFQAOKhYADioXAA4qGAAOKhkADiobAA4qHQAOKh4ADiofAA4qIQAOKiIADio7AA4qPAAOKj0ADio/AA4qugAOKrwADiq+AA4qwAAOKsMADirEAA4qxQAOKsYADirHAA4qyQAOKssADirMAA4qzQAOKs8ADirQAA4rSwAOK00ADitPAA4rUQAOK1QADitVAA4rVgAOK1cADitYAA4rWgAOK1wADitdAA4rXgAOK2AADithAA4r3AAOK94ADivgAA4r4gAOK+UADivmAA4r5wAOK+gADivpAA4r6wAOK+0ADivuAA4r7wAOK/EADivyAA4sbQAOLG8ADixxAA4scwAOLHYADix3AA4seAAOLHkADix6AA4sfAAOLH4ADix/AA4sgAAOLIIADiyDAA4s/gAOLQAADi0CAA4tBAAOLQcADi0IAA4tCQAOLQoADi0LAA4tDQAOLQ8ADi0QAA4tEQAOLRMADi0UAA4tXQAOLYEADi2oAA4tzAAOLc8ADi3RAA4t0wAOLdUADi3XAA4t2QAOLdoADi3dAA4t9gAOLhMADi4VAA4uFwAOLhkADi4bAA4uHQAOLh8ADi4hAA4uPgAOLkEADi5EAA4uRwAOLkoADi5NAA4uUAAOLlMADi5VAA4u0AAOLtIADi7UAA4u1gAOLtkADi7aAA4u2wAOLtwADi7dAA4u3wAOLuEADi7iAA4u4wAOLuUADi7mAA4vYQAOL2MADi9mAA4vaAAOL2sADi9sAA4vbQAOL24ADi9vAA4vcQAOL3MADi90AA4vdQAOL3cADi94AA4v8wAOL/UADi/3AA4v+QAOL/wADi/9AA4v/gAOL/8ADjAAAA4wAgAOMAQADjAFAA4wBgAOMAgADjAJAA4whAAOMIYADjCJAA4wiwAOMI4ADjCPAA4wkAAOMJEADjCSAA4wlAAOMJYADjCXAA4wmAAOMJoADjCbAA4xFgAOMRgADjEaAA4xHAAOMR8ADjEgAA4xIQAOMSIADjEjAA4xJQAOMScADjEoAA4xKQAOMSsADjEsAA4xpwAOMakADjGrAA4xrQAOMbAADjGxAA4xsgAOMbMADjG0AA4xtgAOMbgADjG5AA4xugAOMbwADjG9AA4yOAAOMjoADjI9AA4yPwAOMkIADjJDAA4yRAAOMkUADjJGAA4ySAAOMkoADjJLAA4yTAAOMk4ADjJPAA4y4gAOMwUADjMlAA4zRQAOM0cADjNJAA4zSwAOM00ADjNQAA4zUQAOM1IADjNVAA4zVgAOM1gADjNZAA4zXAAOM18ADjNgAA4zYQAOM2QADjNlAA4zagAOM4MADjOMAA4zjgAOM5AADjOZAA4znAAOM58ADjOhAA4z6gAONA4ADjQ1AA40WQAONFwADjReAA40YAAONGIADjRkAA40ZgAONGcADjRqAA40gwAONKQADjSmAA40qAAONKoADjSsAA40rgAONLAADjSyAA40tAAONNUADjTYAA402wAONN4ADjThAA405AAONOcADjTqAA407QAONO8ADjVqAA41bAAONW4ADjVwAA41cwAONXQADjV1AA41dgAONXcADjV5AA41ewAONXwADjV9AA41fwAONYAADjX7AA41/QAONf8ADjYBAA42BAAONgUADjYGAA42BwAONggADjYKAA42DAAONg0ADjYOAA42EAAONhEADjaMAA42jgAONpEADjaTAA42lgAONpcADjaYAA42mQAONpoADjacAA42ngAONp8ADjagAA42ogAONqMADja8AA42vQAONr4ADjbAAA43OwAONz0ADjc/AA43QQAON0QADjdFAA43RgAON0cADjdIAA43SgAON0wADjdNAA43TgAON1AADjdRAA43zAAON84ADjfQAA430gAON9UADjfWAA431wAON9gADjfZAA432wAON90ADjfeAA433wAON+EADjfiAA44XQAOOF8ADjhhAA44YwAOOGYADjhnAA44aAAOOGkADjhqAA44bAAOOG4ADjhvAA44cAAOOHIADjhzAA447gAOOPAADjjyAA449AAOOPcADjj4AA44+QAOOPoADjj7AA44/QAOOP8ADjkAAA45AQAOOQMADjkEAA45fwAOOYEADjmDAA45hQAOOYgADjmJAA45igAOOYsADjmMAA45jgAOOZAADjmRAA45kgAOOZQADjmVAA453gAOOgIADjopAA46TQAOOlAADjpSAA46VAAOOlYADjpYAA46WgAOOlsADjpeAA46dwAOOpQADjqWAA46mAAOOpoADjqcAA46ngAOOqAADjqiAA46vwAOOsIADjrFAA46yAAOOssADjrOAA460QAOOtQADjrWAA47UQAOO1MADjtVAA47VwAOO1oADjtbAA47XAAOO10ADjteAA47YAAOO2IADjtjAA47ZAAOO2YADjtnAA474gAOO+QADjvmAA476AAOO+sADjvsAA477QAOO+4ADjvvAA478QAOO/MADjv0AA479QAOO/cADjv4AA48cwAOPHUADjx3AA48eQAOPHwADjx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8AA5WvQAOVr4ADla/AA5WwQAOVsMADlbEAA5WxQAOVscADlbIAA5XQwAOV0UADldHAA5XSQAOV0wADldNAA5XTgAOV08ADldQAA5XUgAOV1QADldVAA5XVgAOV1gADldZAA5X1AAOV9YADlfYAA5X2gAOV90ADlfeAA5X3wAOV+AADlfhAA5X4wAOV+UADlfmAA5X5wAOV+kADlfqAA5YZQAOWGcADlhpAA5YawAOWG4ADlhvAA5YcAAOWHEADlhyAA5YdAAOWHYADlh3AA5YeAAOWHoADlh7AA5Y9gAOWPgADlj6AA5Y/AAOWP8ADlkAAA5ZAQAOWQIADlkDAA5ZBQAOWQcADlkIAA5ZCQAOWQsADlkMAA5ZhwAOWYkADlmLAA5ZjQAOWZAADlmRAA5ZkgAOWZMADlmUAA5ZlgAOWZgADlmZAA5ZmgAOWZwADlmdAA5aMAAOWlMADlpzAA5akwAOWpUADlqXAA5amQAOWpsADlqeAA5anwAOWqAADlqjAA5apAAOWqYADlqnAA5aqQAOWqwADlqtAA5argAOWrEADlqyAA5atwAOWtAADlrZAA5a2wAOWt0ADlrmAA5a6QAOWuwADlruAA5bNwAOW1sADluCAA5bpgAOW6kADlurAA5brQAOW68ADluxAA5bswAOW7QADlu3AA5b0AAOW/EADlvzAA5b9QAOW/cADlv5AA5b+wAOW/0ADlv/AA5cAQAOXCIADlwlAA5cKAAOXCsADlwuAA5cMQAOXDQADlw3AA5cOgAOXDwADly3AA5cuQAOXLsADly9AA5cwAAOXMEADlzCAA5cwwAOXMQADlzGAA5cyAAOXMkADlzKAA5czAAOXM0ADl1IAA5dSgAOXUwADl1OAA5dUQAOXVIADl1TAA5dVAAOXVUADl1XAA5dWQAOXVoADl1bAA5dXQAOXV4ADl3ZAA5d2wAOXd4ADl3gAA5d4wAOXeQADl3lAA5d5gAOXecADl3pAA5d6wAOXewADl3tAA5d7wAOXfAADl4JAA5eCgAOXgsADl4NAA5eiAAOXooADl6MAA5ejgAOXpEADl6SAA5ekwAOXpQADl6VAA5elwAOXpkADl6aAA5emwAOXp0ADl6eAA5fGQAOXxsADl8dAA5fHwAOXyIADl8jAA5fJAAOXyUADl8mAA5fKAAOXyoADl8rAA5fLAAOXy4ADl8vAA5fqgAOX6wADl+uAA5fsAAOX7MADl+0AA5ftQAOX7YADl+3AA5fuQAOX7sADl+8AA5fvQAOX78ADl/AAA5gOwAOYD0ADmA/AA5gQQAOYEQADmBFAA5gRgAOYEcADmBIAA5gSgAOYEwADmBNAA5gTgAOYFAADmBRAA5gzAAOYM4ADmDQAA5g0gAOYNUADmDWAA5g1wAOYNgADmDZAA5g2wAOYN0ADmDeAA5g3wAOYOEADmDiAA5hKwAOYU8ADmF2AA5hmgAOYZ0ADmGfAA5hoQAOYaMADmGlAA5hpwAOYagADmGrAA5hxAAOYeEADmHjAA5h5QAOYecADmHpAA5h6wAOYe0ADmHvAA5iDAAOYg8ADmISAA5iFQAOYhgADmIbAA5iHgAOYiEADmIjAA5ingAOYqAADmKjAA5ipQAOYqgADmKpAA5iqgAOYqsADmKsAA5irgAOYrAADmKxAA5isgAOYrQADmK1AA5itwAOYzIADmM0AA5jNgAOYzgADmM7AA5jPAAOYz0ADmM+AA5jPwAOY0EADmNDAA5jRAAOY0UADmNHAA5jSAAOY8MADmPFAA5jxwAOY8kADmPMAA5jzQAOY84ADmPPAA5j0AAOY9IADmPUAA5j1QAOY9YADmPYAA5j2QAOZFQADmRWAA5kWQAOZFsADmReAA5kXwAOZGAADmRhAA5kYgAOZGQADmRmAA5kZwAOZGgADmRqAA5kawAOZOYADmToAA5k6gAOZOwADmTvAA5k8AAOZPEADmTyAA5k8wAOZPUADmT3AA5k+AAOZPkADmT7AA5k/AAOZXcADmV5AA5lewAOZX0ADmWAAA5lgQAOZYIADmWDAA5lhAAOZYYADmWIAA5liQAOZYoADmWMAA5ljQAOZggADmYKAA5mDAAOZg4ADmYRAA5mEgAOZhMADmYUAA5mFQAOZhcADmYZAA5mGgAOZhsADmYdAA5mHgAOZrEADmbUAA5m9AAOZxQADmcWAA5nGAAOZxoADmccAA5nHwAOZyAADmchAA5nJAAOZyUADmcnAA5nKAAOZysADmcuAA5nLwAOZzAADmczAA5nNAAOZzkADmdSAA5nWwAOZ10ADmdfAA5naAAOZ2sADmduAA5ncAAOZ7kADmfdAA5oBAAOaCgADmgrAA5oLQAOaC8ADmgxAA5oMwAOaDUADmg2AA5oOQAOaFIADmhzAA5odQAOaHcADmh5AA5oewAOaH0ADmh/AA5ogQAOaIMADmikAA5opwAOaKoADmitAA5osAAOaLMADmi2AA5ouQAOaLwADmi+AA5pOQAOaTsADmk9AA5pPwAOaUIADmlDAA5pRAAOaUUADmlGAA5pSAAOaUoADmlLAA5pTAAOaU4ADmlPAA5pygAOacwADmnOAA5p0AAOadMADmnUAA5p1QAOadYADmnXAA5p2QAOadsADmncAA5p3QAOad8ADmngAA5qWwAOal0ADmpgAA5qYgAOamUADmpmAA5qZwAOamgADmppAA5qawAOam0ADmpuAA5qbwAOanEADmpyAA5qiwAOaowADmqNAA5qjwAOawoADmsMAA5rDgAOaxAADmsTAA5rFAAOaxUADmsWAA5rFwAOaxkADmsbAA5rHAAOax0ADmsfAA5rIAAOa5sADmudAA5rnwAOa6EADmukAA5rpQAOa6YADmunAA5rqAAOa6oADmusAA5rrQAOa64ADmuwAA5rsQAObCwADmwuAA5sMAAObDIADmw1AA5sNgAObDcADmw4AA5sOQAObDsADmw9AA5sPgAObD8ADmxBAA5sQgAObL0ADmy/AA5swQAObMMADmzGAA5sxwAObMgADmzJAA5sygAObMwADmzOAA5szwAObNAADmzSAA5s0wAObU4ADm1QAA5tUgAObVQADm1XAA5tWAAObVkADm1aAA5tWwAObV0ADm1fAA5tYAAObWEADm1jAA5tZAAOba0ADm3RAA5t+AAObhwADm4fAA5uIQAObiMADm4lAA5uJwAObikADm4qAA5uLQAObkYADm5jAA5uZQAObmcADm5pAA5uawAObm0ADm5vAA5ucQAObo4ADm6RAA5ulAAObpcADm6aAA5unQAObqAADm6jAA5upQAObyAADm8iAA5vJAAObyYADm8pAA5vKgAObysADm8sAA5vLQAOby8ADm8xAA5vMgAObzMADm81AA5vNgAOb7EADm+zAA5vtgAOb7gADm+7AA5vvAAOb70ADm++AA5vvwAOb8EADm/DAA5vxAAOb8UADm/HAA5vyAAOcEMADnBFAA5wRwAOcEkADnBMAA5wTQAOcE4ADnBPAA5wUAAOcFIADnBUAA5wVQAOcFYADnBYAA5wWQAOcNQADnDWAA5w2QAOcNsADnDeAA5w3wAOcOAADnDhAA5w4gAOcOQADnDmAA5w5wAOcOgADnDqAA5w6wAOcW4ADnGSAA5xtgAOcdkADnIAAA5yIAAOckcADnJuAA5yjgAOcrIADnLWAA5y2AAOctsADnLdAA5y3wAOcuEADnLkAA5y5wAOcukADnLrAA5y7gAOcvAADnLyAA5y9QAOcvgADnL5AA5zAgAOcxsADnMgAA5zIgAOcycADnMqAA5zLAAOc3UADnOZAA5zwAAOc+QADnPnAA5z6QAOc+sADnPtAA5z7wAOc/EADnPyAA5z9QAOdA4ADnQzAA50NQAOdDcADnQ5AA50OwAOdD0ADnQ/AA50QQAOdEMADnRFAA50agAOdG0ADnRwAA50cwAOdHYADnR5AA50fAAOdH8ADnSCAA50hQAOdIcADnUCAA51BAAOdQcADnUJAA51DAAOdQ0ADnUOAA51DwAOdRAADnUSAA51FAAOdRUADnUWAA51GAAOdRkADnUqAA51KwAOdS0ADnWoAA51qgAOdawADnWuAA51sQAOdbIADnWzAA51tAAOdbUADnW3AA51uQAOdboADnW7AA51vQAOdb4ADnY5AA52OwAOdj4ADnZAAA52QwAOdkQADnZFAA52RgAOdkcADnZJAA52SwAOdkwADnZNAA52TwAOdlAADnZhAA52YgAOdmQADnbfAA524QAOduMADnblAA526AAOdukADnbqAA526wAOduwADnbuAA528AAOdvEADnbyAA529AAOdvUADndwAA53cgAOd3UADnd3AA53egAOd3sADnd8AA53fQAOd34ADneAAA53ggAOd4MADneEAA53hgAOd4cADneYAA53mQAOd5sADngWAA54GAAOeBoADngcAA54HwAOeCAADnghAA54IgAOeCMADnglAA54JwAOeCgADngpAA54KwAOeCwADninAA54qQAOeKwADniuAA54sQAOeLIADnizAA54tAAOeLUADni3AA54uQAOeLoADni7AA54vQAOeL4ADnjXAA542AAOeNkADnjbAA55VgAOeVgADnlaAA55XAAOeV8ADnlgAA55YQAOeWIADnljAA55ZQAOeWcADnloAA55aQAOeWsADnlsAA555wAOeekADnnsAA557gAOefEADnnyAA558wAOefQADnn1AA559wAOefkADnn6AA55+wAOef0ADnn+AA56LgAOekcADnpYAA56WwAOel4ADnphAA56ZAAOenUADnp4AA56ewAOen4ADnqBAA56gwAOepUADnquAA56xQAOe1gADnt7AA57mwAOe7sADnu9AA57vwAOe8EADnvDAA57xgAOe8cADnvIAA57ywAOe8wADnvOAA57zwAOe9IADnvVAA571gAOe9cADnvaAA572wAOe+AADnv5AA58AgAOfAQADnwGAA58DwAOfBIADnwVAA58FwAOfGAADnyEAA58qwAOfM8ADnzSAA581AAOfNYADnzYAA582gAOfNwADnzdAA584AAOfPkADn0aAA59HAAOfR4ADn0gAA59IgAOfSQADn0mAA59KAAOfSoADn1LAA59TgAOfVEADn1UAA59VwAOfVoADn1dAA59YAAOfWMADn1lAA594AAOfeIADn3kAA595gAOfekADn3qAA596wAOfewADn3tAA597wAOffEADn3yAA598wAOffUADn32AA5+cQAOfnMADn51AA5+dwAOfnoADn57AA5+fAAOfn0ADn5+AA5+gAAOfoIADn6DAA5+hAAOfoYADn6HAA5/AgAOfwQADn8HAA5/CQAOfwwADn8NAA5/DgAOfw8ADn8QAA5/EgAOfxQADn8VAA5/FgAOfxgADn8ZAA5/MgAOfzMADn80AA5/NgAOf7EADn+zAA5/tQAOf7cADn+6AA5/uwAOf7wADn+9AA5/vgAOf8AADn/CAA5/wwAOf8QADn/GAA5/xwAOgEIADoBEAA6ARgAOgEgADoBLAA6ATAAOgE0ADoBOAA6ATwAOgFEADoBTAA6AVAAOgFUADoBXAA6AWAAOgNMADoDVAA6A1wAOgNkADoDcAA6A3QAOgN4ADoDfAA6A4AAOgOIADoDkAA6A5QAOgOYADoDoAA6A6QAOgWQADoFmAA6BaAAOgWoADoFtAA6BbgAOgW8ADoFwAA6BcQAOgXMADoF1AA6BdgAOgXcADoF5AA6BegAOgfUADoH3AA6B+QAOgfsADoH+AA6B/wAOggAADoIBAA6CAgAOggQADoIGAA6CBwAOgggADoIKAA6CCwAOglQADoJ4AA6CnwAOgsMADoLGAA6CyAAOgsoADoLMAA6CzgAOgtAADoLRAA6C1AAOgu0ADoMKAA6DDAAOgw4ADoMQAA6DEgAOgxQADoMWAA6DGAAOgzUADoM4AA6DOwAOgz4ADoNBAA6DRAAOg0cADoNKAA6DTAAOg8cADoPJAA6DywAOg80ADoPQAA6D0QAOg9IADoPTAA6D1AAOg9YADoPYAA6D2QAOg9oADoPcAA6D3QAOhFgADoRaAA6EXAAOhF4ADoRhAA6EYgAOhGMADoRkAA6EZQAOhGcADoRpAA6EagAOhGsADoRtAA6EbgAOhOkADoTrAA6E7QAOhO8ADoTyAA6E8wAOhPQADoT1AA6E9gAOhPgADoT6AA6E+wAOhPwADoT+AA6E/wAOhXoADoV8AA6FfwAOhYEADoWEAA6FhQAOhYYADoWHAA6FiAAOhYoADoWMAA6FjQAOhY4ADoWQAA6FkQAOhgwADoYOAA6GEAAOhhIADoYVAA6GFgAOhhcADoYYAA6GGQAOhhsADoYdAA6GHgAOhh8ADoYhAA6GIgAOhp0ADoafAA6GoQAOhqMADoamAA6GpwAOhqgADoapAA6GqgAOhqwADoauAA6GrwAOhrAADoayAA6GswAOhy4ADocwAA6HMwAOhzUADoc4AA6HOQAOhzoADoc7AA6HPAAOhz4ADodAAA6HQQAOh0IADodEAA6HRQAOh9gADof7AA6IGwAOiDsADog9AA6IPwAOiEEADohDAA6IRgAOiEcADohIAA6ISwAOiEwADohOAA6ITwAOiFIADohVAA6IVgAOiFcADohaAA6IWwAOiGAADoh5AA6IggAOiIQADoiGAA6IjwAOiJIADoiVAA6IlwAOiOAADokEAA6JKwAOiU8ADolSAA6JVAAOiVYADolYAA6JWgAOiVwADoldAA6JYAAOiXkADomaAA6JnAAOiZ4ADomgAA6JogAOiaQADommAA6JqAAOiaoADonLAA6JzgAOidEADonUAA6J1wAOidoADondAA6J4AAOieMADonlAA6KYAAOimIADopkAA6KZgAOimkADopqAA6KawAOimwADoptAA6KbwAOinEADopyAA6KcwAOinUADop2AA6K8QAOivMADor1AA6K9wAOivoADor7AA6K/AAOiv0ADor+AA6LAAAOiwIADosDAA6LBAAOiwYADosHAA6LggAOi4QADouHAA6LiQAOi4wADouNAA6LjgAOi48ADouQAA6LkgAOi5QADouVAA6LlgAOi5gADouZAA6LsgAOi7MADou0AA6LtgAOjDEADowzAA6MNQAOjDcADow6AA6MOwAOjDwADow9AA6MPgAOjEAADoxCAA6MQwAOjEQADoxGAA6MRwAOjMIADozEAA6MxgAOjMgADozLAA6MzAAOjM0ADozOAA6MzwAOjNEADozTAA6M1AAOjNUADozXAA6M2AAOjVMADo1VAA6NVwAOjVkADo1cAA6NXQAOjV4ADo1fAA6NYAAOjWIADo1kAA6NZQAOjWYADo1oAA6NaQAOjeQADo3mAA6N6AAOjeoADo3tAA6N7gAOje8ADo3wAA6N8QAOjfMADo31AA6N9gAOjfcADo35AA6N+gAOjnUADo53AA6OeQAOjnsADo5+AA6OfwAOjoAADo6BAA6OggAOjoQADo6GAA6OhwAOjogADo6KAA6OiwAOjtQADo74AA6PHwAOj0MADo9GAA6PSAAOj0oADo9MAA6PTgAOj1AADo9RAA6PVAAOj20ADo+KAA6PjAAOj44ADo+QAA6PkgAOj5QADo+WAA6PmAAOj7UADo+4AA6PuwAOj74ADo/BAA6PxAAOj8cADo/KAA6PzAAOkEcADpBJAA6QSwAOkE0ADpBQAA6QUQAOkFIADpBTAA6QVAAOkFYADpBYAA6QWQAOkFoADpBcAA6QXQAOkNgADpDaAA6Q3QAOkN8ADpDiAA6Q4wAOkOQADpDlAA6Q5gAOkOgADpDqAA6Q6wAOkOwADpDuAA6Q7wAOkWoADpFsAA6RbgAOkXAADpFzAA6RdAAOkXUADpF2AA6RdwAOkXkADpF7AA6RfAAOkX0ADpF/AA6RgAAOkfsADpH9AA6SAAAOkgIADpIFAA6SBgAOkgcADpIIAA6SCQAOkgsADpINAA6SDgAOkg8ADpIRAA6SEgAOko0ADpKPAA6SkQAOkpMADpKWAA6SlwAOkpgADpKZAA6SmgAOkpwADpKeAA6SnwAOkqAADpKiAA6SowAOkx4ADpMgAA6TIgAOkyQADpMnAA6TKAAOkykADpMqAA6TKwAOky0ADpMvAA6TMAAOkzEADpMzAA6TNAAOk68ADpOxAA6TtAAOk7YADpO5AA6TugAOk7sADpO8AA6TvQAOk78ADpPBAA6TwgAOk8MADpPFAA6TxgAOlFkADpR8AA6UnAAOlLwADpS+AA6UwAAOlMIADpTEAA6UxwAOlMgADpTJAA6UzAAOlM0ADpTPAA6U0AAOlNIADpTVAA6U1gAOlNcADpTaAA6U2wAOlOAADpT5AA6VAgAOlQQADpUGAA6VDwAOlRIADpUVAA6VFwAOlWAADpWEAA6VqwAOlc8ADpXSAA6V1AAOldYADpXYAA6V2gAOldwADpXdAA6V4AAOlfkADpYaAA6WHAAOlh4ADpYgAA6WIgAOliQADpYmAA6WKAAOlioADpZLAA6WTgAOllEADpZUAA6WVwAOlloADpZdAA6WYAAOlmMADpZlAA6W4AAOluIADpbkAA6W5gAOlukADpbqAA6W6wAOluwADpbtAA6W7wAOlvEADpbyAA6W8wAOlvUADpb2AA6XcQAOl3MADpd1AA6XdwAOl3oADpd7AA6XfAAOl30ADpd+AA6XgAAOl4IADpeDAA6XhAAOl4YADpeHAA6YAgAOmAQADpgHAA6YCQAOmAwADpgNAA6YDgAOmA8ADpgQAA6YEgAOmBQADpgVAA6YFgAOmBgADpgZAA6YMgAOmDMADpg0AA6YNgAOmLEADpizAA6YtQAOmLcADpi6AA6YuwAOmLwADpi9AA6YvgAOmMAADpjCAA6YwwAOmMQADpjGAA6YxwAOmUIADplEAA6ZRgAOmUgADplLAA6ZTAAOmU0ADplOAA6ZTwAOmVEADplTAA6ZVAAOmVUADplXAA6ZWAAOmdMADpnVAA6Z1wAOmdkADpncAA6Z3QAOmd4ADpnfAA6Z4AAOmeIADpnkAA6Z5QAOmeYADpnoAA6Z6QAOmmQADppmAA6aaAAOmmoADpptAA6abgAOmm8ADppwAA6acQAOmnMADpp1AA6adgAOmncADpp5AA6aegAOmvUADpr3AA6a+QAOmvsADpr+AA6a/wAOmwAADpsBAA6bAgAOmwQADpsGAA6bBwAOmwgADpsKAA6bCwAOm1QADpt4AA6bnwAOm8MADpvGAA6byAAOm8oADpvMAA6bzgAOm9AADpvRAA6b1AAOm+0ADpwKAA6cDAAOnA4ADpwQAA6cEgAOnBQADpwWAA6cGAAOnDUADpw4AA6cOwAOnD4ADpxBAA6cRAAOnEcADpxKAA6cTAAOnMcADpzJAA6cywAOnM0ADpzQAA6c0QAOnNIADpzTAA6c1AAOnNYADpzYAA6c2QAOnNoADpzcAA6c3QAOnVgADp1aAA6dXAAOnV4ADp1hAA6dYgAOnWMADp1kAA6dZQAOnWcADp1pAA6dagAOnWsADp1tAA6dbgAOnekADp3rAA6d7QAOne8ADp3yAA6d8wAOnfQADp31AA6d9gAOnfgADp36AA6d+wAOnfwADp3+AA6d/wAOnnoADp58AA6efwAOnoEADp6EAA6ehQAOnoYADp6HAA6eiAAOnooADp6MAA6ejQAOno4ADp6QAA6ekQAOnwwADp8OAA6fEAAOnxIADp8VAA6fFgAOnxcADp8YAA6fGQAOnxsADp8dAA6fHgAOnx8ADp8hAA6fIgAOn50ADp+fAA6foQAOn6MADp+mAA6fpwAOn6gADp+pAA6fqgAOn6wADp+uAA6frwAOn7AADp+yAA6fswAOoC4ADqAwAA6gMgAOoDQADqA3AA6gOAAOoDkADqA6AA6gOwAOoD0ADqA/AA6gQAAOoEEADqBDAA6gRAAOoNcADqD6AA6hGgAOoToADqE8AA6hPgAOoUAADqFCAA6hRQAOoUYADqFHAA6hSgAOoUsADqFNAA6hTgAOoVEADqFUAA6hVQAOoVYADqFZAA6hWgAOoV8ADqF4AA6hgQAOoYMADqGFAA6hjgAOoZEADqGUAA6hlgAOod8ADqIDAA6iKgAOok4ADqJRAA6iUwAOolUADqJXAA6iWQAOolsADqJcAA6iXwAOongADqKZAA6imwAOop0ADqKfAA6ioQAOoqMADqKlAA6ipwAOoqkADqLKAA6izQAOotAADqLTAA6i1gAOotkADqLcAA6i3wAOouIADqLkAA6jXwAOo2EADqNjAA6jZQAOo2gADqNpAA6jagAOo2sADqNsAA6jbgAOo3AADqNxAA6jcgAOo3QADqN1AA6j8AAOo/IADqP0AA6j9gAOo/kADqP6AA6j+wAOo/wADqP9AA6j/wAOpAEADqQCAA6kAwAOpAUADqQGAA6kgQAOpIMADqSGAA6kiAAOpIsADqSMAA6kjQAOpI4ADqSPAA6kkQAOpJMADqSUAA6klQAOpJcADqSYAA6ksQAOpLIADqSzAA6ktQAOpTAADqUyAA6lNAAOpTYADqU5AA6lOgAOpTsADqU8AA6lPQAOpT8ADqVBAA6lQgAOpUMADqVFAA6lRgAOpcEADqXDAA6lxQAOpccADqXKAA6lywAOpcwADqXNAA6lzgAOpdAADqXSAA6l0wAOpdQADqXWAA6l1wAOplIADqZUAA6mVgAOplgADqZbAA6mXAAOpl0ADqZeAA6mXwAOpmEADqZjAA6mZAAOpmUADqZnAA6maAAOpuMADqblAA6m5wAOpukADqbsAA6m7QAOpu4ADqbvAA6m8AAOpvIADqb0AA6m9QAOpvYADqb4AA6m+QAOp3QADqd2AA6neAAOp3oADqd9AA6nfgAOp38ADqeAAA6ngQAOp4MADqeFAA6nhgAOp4cADqeJAA6nigAOp9MADqf3AA6oHgAOqEIADqhFAA6oRwAOqEkADqhLAA6oTQAOqE8ADqhQAA6oUwAOqGwADqiJAA6oiwAOqI0ADqiPAA6okQAOqJMADqiVAA6olwAOqLQADqi3AA6ougAOqL0ADqjAAA6owwAOqMYADqjJAA6oywAOqUYADqlIAA6pSgAOqUwADqlPAA6pUAAOqVEADqlSAA6pUwAOqVUADqlXAA6pWAAOqVkADqlbAA6pXAAOqdcADqnZAA6p2wAOqd0ADqngAA6p4QAOqeIADqnjAA6p5AAOqeYADqnoAA6p6QAOqeoADqnsAA6p7QAOqmgADqpqAA6qbAAOqm4ADqpxAA6qcgAOqnMADqp0AA6qdQAOqncADqp5AA6qegAOqnsADqp9AA6qfgAOqvkADqr7AA6q/gAOqwAADqsDAA6rBAAOqwUADqsGAA6rBwAOqwkADqsLAA6rDAAOqw0ADqsPAA6rEAAOq4sADquNAA6rjwAOq5EADquUAA6rlQAOq5YADquXAA6rmAAOq5oADqucAA6rnQAOq54ADqugAA6roQAOrBwADqweAA6sIAAOrCIADqwlAA6sJgAOrCcADqwoAA6sKQAOrCsADqwtAA6sLgAOrC8ADqwxAA6sMgAOrK0ADqyvAA6ssgAOrLQADqy3AA6suAAOrLkADqy6AA6suwAOrL0ADqy/AA6swAAOrMEADqzDAA6sxAAOrVcADq16AA6tmgAOrboADq28AA6tvgAOrcAADq3CAA6txQAOrcYADq3HAA6tygAOrcsADq3NAA6tzgAOrdAADq3TAA6t1AAOrdUADq3YAA6t2QAOrd4ADq33AA6uAAAOrgIADq4EAA6uDQAOrhAADq4TAA6uFQAOrl4ADq6CAA6uqQAOrs0ADq7QAA6u0gAOrtQADq7WAA6u2AAOrtoADq7bAA6u3gAOrvcADq8YAA6vGgAOrxwADq8eAA6vIAAOryIADq8kAA6vJgAOrygADq9JAA6vTAAOr08ADq9SAA6vVQAOr1gADq9bAA6vXgAOr2EADq9jAA6v3gAOr+AADq/iAA6v5AAOr+cADq/oAA6v6QAOr+oADq/rAA6v7QAOr+8ADq/wAA6v8QAOr/MADq/0AA6wbwAOsHEADrBzAA6wdQAOsHgADrB5AA6wegAOsHsADrB8AA6wfgAOsIAADrCBAA6wggAOsIQADrCFAA6xAAAOsQIADrEFAA6xBwAOsQoADrELAA6xDAAOsQ0ADrEOAA6xEAAOsRIADrETAA6xFAAOsRYADrEXAA6xMAAOsTEADrEyAA6xNAAOsa8ADrGxAA6xswAOsbUADrG4AA6xuQAOsboADrG7AA6xvAAOsb4ADrHAAA6xwQAOscIADrHEAA6xxQAOskAADrJCAA6yRAAOskYADrJJAA6ySgAOsksADrJMAA6yTQAOsk8ADrJRAA6yUgAOslMADrJVAA6yVgAOstEADrLTAA6y1QAOstcADrLaAA6y2wAOstwADrLdAA6y3gAOsuAADrLiAA6y4wAOsuQADrLmAA6y5wAOs2IADrNkAA6zZgAOs2gADrNrAA6zbAAOs20ADrNuAA6zbwAOs3EADrNzAA6zdAAOs3UADrN3AA6zeAAOs/MADrP1AA6z9wAOs/kADrP8AA6z/QAOs/4ADrP/AA60AAAOtAIADrQEAA60BQAOtAYADrQIAA60CQAOtFIADrR2AA60nQAOtMEADrTEAA60xgAOtMgADrTKAA60zAAOtM4ADrTPAA600gAOtOsADrUIAA61CgAOtQwADrUOAA61EAAOtRIADrUUAA61FgAOtTMADrU2AA61OQAOtTwADrU/AA61QgAOtUUADrVIAA61SgAOtcUADrXHAA61ygAOtcwADrXPAA610AAOtdEADrXSAA610wAOtdUADrXXAA612AAOtdkADrXbAA613AAOtlcADrZZAA62WwAOtl0ADrZgAA62YQAOtmIADrZjAA62ZAAOtmYADrZoAA62aQAOtmoADrZsAA62bQAOtugADrbqAA627AAOtu4ADrbxAA628gAOtvMADrb0AA629QAOtvcADrb5AA62+gAOtvsADrb9AA62/gAOt3kADrd7AA63fgAOt4AADreDAA63hAAOt4UADreGAA63hwAOt4kADreLAA63jAAOt40ADrePAA63kAAOuAsADrgNAA64DwAOuBEADrgUAA64FQAOuBYADrgXAA64GAAOuBoADrgcAA64HQAOuB4ADrggAA64IQAOuJwADrieAA64oAAOuKIADrilAA64pgAOuKcADrioAA64qQAOuKsADritAA64rgAOuK8ADrixAA64sgAOuS0ADrkvAA65MQAOuTMADrk2AA65NwAOuTgADrk5AA65OgAOuTwADrk+AA65PwAOuUAADrlCAA65QwAOuVQADrlVAA65VwAOudIADrnUAA651gAOudgADrnbAA653AAOud0ADrneAA653wAOueEADrnjAA655AAOueUADrnnAA656AAOumMADrplAA66ZwAOumkADrpsAA66bQAOum4ADrpvAA66cAAOunIADrp0AA66dQAOunYADrp4AA66eQAOuvQADrr2AA66+QAOuvsADrr+AA66/wAOuwAADrsBAA67AgAOuwQADrsGAA67BwAOuwgADrsKAA67CwAOu54ADrvBAA674QAOvAEADrwDAA68BQAOvAcADrwJAA68DAAOvA0ADrwOAA68EQAOvBIADrwUAA68FQAOvBcADrwaAA68GwAOvBwADrwfAA68IAAOvCUADrw+AA68RwAOvEkADrxLAA68VAAOvFcADrxaAA68XAAOvKUADrzJAA688AAOvRQADr0XAA69GQAOvRsADr0dAA69HwAOvSEADr0iAA69JQAOvT4ADr1fAA69YQAOvWMADr1lAA69ZwAOvWkADr1rAA69bQAOvW8ADr2QAA69kwAOvZYADr2ZAA69nAAOvZ8ADr2iAA69pQAOvagADr2qAA6+JQAOvicADr4pAA6+KwAOvi4ADr4vAA6+MAAOvjEADr4yAA6+NAAOvjYADr43AA6+OAAOvjoADr47AA6+tgAOvrgADr66AA6+vAAOvr8ADr7AAA6+wQAOvsIADr7DAA6+xQAOvscADr7IAA6+yQAOvssADr7MAA6/RwAOv0kADr9MAA6/TgAOv1EADr9SAA6/UwAOv1QADr9VAA6/VwAOv1kADr9aAA6/WwAOv10ADr9eAA6/dwAOv3gADr95AA6/ewAOv/YADr/4AA6/+gAOv/wADr//AA7AAAAOwAEADsACAA7AAwAOwAUADsAHAA7ACAAOwAkADsALAA7ADAAOwIcADsCJAA7AiwAOwI0ADsCQAA7AkQAOwJIADsC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sAA7bbgAO228ADttwAA7bcgAO23MADtuEAA7bhQAO24cADtwCAA7cBAAO3AYADtwIAA7cCwAO3AwADtwNAA7cDgAO3A8ADtwRAA7cEwAO3BQADtwVAA7cFwAO3BgADtyTAA7clQAO3JgADtyaAA7cnQAO3J4ADtyfAA7coAAO3KEADtyjAA7cpQAO3KYADtynAA7cqQAO3KoADtzDAA7cxAAO3MUADtzHAA7dQgAO3UQADt1GAA7dSAAO3UsADt1MAA7dTQAO3U4ADt1PAA7dUQAO3VMADt1UAA7dVQAO3VcADt1YAA7d0wAO3dUADt3YAA7d2gAO3d0ADt3eAA7d3wAO3eAADt3hAA7d4wAO3eUADt3mAA7d5wAO3ekADt3qAA7eCAAO3iEADt4qAA7eLQAO3jAADt45AA7ePAAO3j8ADt5BAA7eXgAO3nMADt8GAA7fKQAO30kADt9pAA7fawAO320ADt9vAA7fcQAO33QADt91AA7fdgAO33kADt96AA7ffAAO330ADt9/AA7fggAO34MADt+EAA7fhwAO34gADt+NAA7fpgAO368ADt+xAA7fswAO37wADt+/AA7fwgAO38QADuANAA7gMQAO4FgADuB8AA7gfwAO4IEADuCDAA7ghQAO4IcADuCJAA7gigAO4I0ADuCmAA7gxwAO4MkADuDLAA7gzQAO4M8ADuDRAA7g0wAO4NUADuDXAA7g+AAO4PsADuD+AA7hAQAO4QQADuEHAA7hCgAO4Q0ADuEQAA7hEgAO4Y0ADuGPAA7hkQAO4ZMADuGWAA7hlwAO4ZgADuGZAA7hmgAO4ZwADuGeAA7hnwAO4aAADuGiAA7howAO4h4ADuIgAA7iIgAO4iQADuInAA7iKAAO4ikADuIqAA7iKwAO4i0ADuIvAA7iMAAO4jEADuIzAA7iNAAO4q8ADuKxAA7itAAO4rYADuK5AA7iugAO4rsADuK8AA7ivQAO4r8ADuLBAA7iwgAO4sMADuLFAA7ixgAO4t8ADuLgAA7i4QAO4uMADuNeAA7jYAAO42IADuNkAA7jZwAO42gADuNpAA7jagAO42sADuNtAA7jbwAO43AADuNxAA7jcwAO43QADuPvAA7j8QAO4/MADuP1AA7j+AAO4/kADuP6AA7j+wAO4/wADuP+AA7kAAAO5AEADuQCAA7kBAAO5AUADuSAAA7kggAO5IQADuSGAA7kiQAO5IoADuSLAA7kjAAO5I0ADuSPAA7kkQAO5JIADuSTAA7klQAO5JYADuURAA7lEwAO5RUADuUXAA7lGgAO5RsADuUcAA7lHQAO5R4ADuUgAA7lIgAO5SMADuUkAA7lJgAO5ScADuWiAA7lpAAO5aYADuWoAA7lqwAO5awADuWtAA7lrgAO5a8ADuWxAA7lswAO5bQADuW1AA7ltwAO5bgADuYBAA7mJQAO5kwADuZwAA7mcwAO5nUADuZ3AA7meQAO5nsADuZ9AA7mfgAO5oEADuaaAA7mtwAO5rkADua7AA7mvQAO5r8ADubBAA7mwwAO5sUADubiAA7m5QAO5ugADubrAA7m7gAO5vEADub0AA7m9wAO5vkADud0AA7ndgAO53gADud6AA7nfQAO534ADud/AA7ngAAO54EADueDAA7nhQAO54YADueHAA7niQAO54oADugFAA7oBwAO6AkADugLAA7oDgAO6A8ADugQAA7oEQAO6BIADugUAA7oFgAO6BcADugYAA7oGgAO6BsADuiWAA7omAAO6JoADuicAA7onwAO6KAADuihAA7oogAO6KMADuilAA7opwAO6KgADuipAA7oqwAO6KwADuknAA7pKQAO6SsADuktAA7pMAAO6TEADukyAA7pMwAO6TQADuk2AA7pOAAO6TkADuk6AA7pPAAO6T0ADum4AA7pugAO6bwADum+AA7pwQAO6cIADunDAA7pxAAO6cUADunHAA7pyQAO6coADunLAA7pzQAO6c4ADupJAA7qSwAO6k0ADupPAA7qUgAO6lMADupUAA7qVQAO6lYADupYAA7qWgAO6lsADupcAA7qXgAO6l8ADuraAA7q3AAO6t4ADurgAA7q4wAO6uQADurlAA7q5gAO6ucADurpAA7q6wAO6uwADurtAA7q7wAO6vAADuuDAA7rpgAO68YADuvmAA7r6AAO6+oADuvsAA7r7gAO6/EADuvyAA7r8wAO6/YADuv3AA7r+QAO6/oADuv9AA7sAAAO7AEADuwCAA7sBQAO7AYADuwLAA7sJAAO7C0ADuwvAA7sMQAO7DoADuw9AA7sQAAO7EIADuyLAA7srwAO7NYADuz6AA7s/QAO7P8ADu0BAA7tAwAO7QUADu0HAA7tCAAO7QsADu0kAA7tRQAO7UcADu1JAA7tSwAO7U0ADu1PAA7tUQAO7VMADu1VAA7tdgAO7XkADu18AA7tfwAO7YIADu2FAA7tiAAO7YsADu2OAA7tkAAO7gsADu4NAA7uDwAO7hEADu4UAA7uFQAO7hYADu4XAA7uGAAO7hoADu4cAA7uHQAO7h4ADu4gAA7uIQAO7pwADu6eAA7uoAAO7qIADu6lAA7upgAO7qcADu6oAA7uqQAO7qsADu6tAA7urgAO7q8ADu6xAA7usgAO7y0ADu8vAA7vMgAO7zQADu83AA7vOAAO7zkADu86AA7vOwAO7z0ADu8/AA7vQAAO70EADu9DAA7vRAAO710ADu9eAA7vXwAO72EADu/cAA7v3gAO7+AADu/iAA7v5QAO7+YADu/nAA7v6AAO7+kADu/rAA7v7QAO7+4ADu/vAA7v8QAO7/IADvBtAA7wbwAO8HEADvBzAA7wdgAO8HcADvB4AA7weQAO8HoADvB8AA7wfgAO8H8ADvCAAA7wggAO8IMADvD+AA7xAAAO8QIADvEEAA7xBwAO8QgADvEJAA7xCgAO8QsADvENAA7xDwAO8RAADvERAA7xEwAO8RQADvGPAA7xkQAO8ZQADvGWAA7xmQAO8ZoADvGbAA7xnAAO8Z0ADvGfAA7xoQAO8aIADvGjAA7xpQAO8aYADvG4AA7yMwAO8jUADvI3AA7yOQAO8jwADvI9AA7yPgAO8j8ADvJAAA7yQgAO8kQADvJFAA7yRgAO8kgADvJJAA7ykgAO8rYADvLdAA7zAQAO8wQADvMGAA7zCAAO8woADvMMAA7zDgAO8w8ADvMSAA7zKwAO80gADvNKAA7zTAAO804ADvNQAA7zUgAO81QADvNWAA7zcwAO83YADvN5AA7zfAAO838ADvOCAA7zhQAO84gADvOKAA70BQAO9AcADvQJAA70CwAO9A4ADvQPAA70EAAO9BEADvQSAA70FAAO9BYADvQXAA70GAAO9BoADvQbAA70lgAO9JgADvSaAA70nAAO9J8ADvSgAA70oQAO9KIADvSjAA70pQAO9KcADvSoAA70qQAO9KsADvSsAA71JwAO9SkADvUrAA71LQAO9TAADvUxAA71MgAO9TMADvU0AA71NgAO9TgADvU5AA71OgAO9TwADvU9AA71uAAO9boADvW9AA71vwAO9cIADvXDAA71xAAO9cUADvXGAA71yAAO9coADvXLAA71zAAO9c4ADvXPAA72SgAO9kwADvZOAA72UAAO9lMADvZUAA72VQAO9lYADvZXAA72WQAO9lsADvZcAA72XQAO9l8ADvZgAA722wAO9t0ADvbfAA724QAO9uQADvblAA725gAO9ucADvboAA726gAO9uwADvbtAA727gAO9vAADvbxAA73bAAO924ADvdxAA73cwAO93YADvd3AA73eAAO93kADvd6AA73fAAO934ADvd/AA73gAAO94IADveDAA74FgAO+DkADvhZAA74eQAO+HsADvh9AA74fwAO+IEADviEAA74hQAO+IYADviJAA74igAO+IwADviNAA74kAAO+JMADviUAA74lQAO+JgADviZAA74ngAO+LcADvjAAA74wgAO+MQADvjNAA740AAO+NMADvjVAA75HgAO+UIADvlpAA75jQAO+ZAADvmSAA75lAAO+ZYADvmYAA75mgAO+ZsADvmeAA75twAO+dgADvnaAA753AAO+d4ADvngAA754gAO+eQADvnmAA756AAO+gkADvoMAA76DwAO+hIADvoVAA76GAAO+hsADvoeAA76IQAO+iMADvqeAA76oAAO+qIADvqkAA76pwAO+qgADvqpAA76qgAO+qsADvqtAA76rwAO+rAADvqxAA76swAO+rQADvsvAA77MQAO+zMADvs1AA77OAAO+zkADvs6AA77OwAO+zwADvs+AA77QAAO+0EADvtCAA77RAAO+0UADvvAAA77wgAO+8UADvvHAA77ygAO+8sADvvMAA77zQAO+84ADvvQAA770gAO+9MADvvUAA771gAO+9cADvvwAA778QAO+/IADvv0AA78bwAO/HEADvxzAA78dQAO/HgADvx5AA78egAO/HsADvx8AA78fgAO/IAADvyBAA78ggAO/IQADvyFAA79AAAO/QIADv0EAA79BgAO/QkADv0KAA79CwAO/QwADv0NAA79DwAO/READv0SAA79EwAO/RUADv0WAA79kQAO/ZMADv2VAA79lwAO/ZoADv2bAA79nAAO/Z0ADv2eAA79oAAO/aIADv2jAA79pAAO/aYADv2nAA7+IgAO/iQADv4mAA7+KAAO/isADv4sAA7+LQAO/i4ADv4vAA7+MQAO/jMADv40AA7+NQAO/jcADv44AA7+swAO/rUADv6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dAA8ZoAAPGaEADxmiAA8ZowAPGaQADxmmAA8ZqAAPGakADxmqAA8ZrAAPGa0ADxm+AA8ZvwAPGcEADxo8AA8aPgAPGkAADxpCAA8aRQAPGkYADxpHAA8aSAAPGkkADxpLAA8aTQAPGk4ADxpPAA8aUQAPGlIADxrNAA8azwAPGtIADxrUAA8a1wAPGtgADxrZAA8a2gAPGtsADxrdAA8a3wAPGuAADxrhAA8a4wAPGuQADxr1AA8a9gAPGvgADxtzAA8bdQAPG3cADxt5AA8bfAAPG30ADxt+AA8bfwAPG4AADxuCAA8bhAAPG4UADxuGAA8biAAPG4kADxwEAA8cBgAPHAkADxwLAA8cDgAPHA8ADxwQAA8cEQAPHBIADxwUAA8cFgAPHBcADxwYAA8cGgAPHBsADxw0AA8cNQAPHDYADxw4AA8cswAPHLUADxy3AA8cuQAPHLwADxy9AA8cvgAPHL8ADxzAAA8cwgAPHMQADxzFAA8cxgAPHMgADxzJAA8dRAAPHUYADx1JAA8dSwAPHU4ADx1PAA8dUAAPHVEADx1SAA8dVAAPHVYADx1XAA8dWAAPHVoADx1bAA8dgQAPHZoADx2rAA8drgAPHbEADx20AA8dtwAPHcgADx3LAA8dzgAPHdEADx3UAA8d1gAPHd4ADx3tAA8egAAPHqMADx7DAA8e4wAPHuUADx7nAA8e6QAPHusADx7uAA8e7wAPHvAADx7zAA8e9AAPHvYADx73AA8e+QAPHvwADx79AA8e/gAPHwEADx8CAA8fBwAPHyAADx8pAA8fKwAPHy0ADx82AA8fOQAPHzwADx8+AA8fhwAPH6sADx/SAA8f9gAPH/kADx/7AA8f/QAPH/8ADyABAA8gAwAPIAQADyAHAA8gIAAPIEEADyBDAA8gRQAPIEcADyBJAA8gSwAPIE0ADyBPAA8gUQAPIHIADyB1AA8geAAPIHsADyB+AA8ggQAPIIQADyCHAA8gigAPIIwADyEHAA8hCQAPIQsADyENAA8hEAAPIREADyESAA8hEwAPIRQADyEWAA8hGAAPIRkADyEaAA8hHAAPIR0ADyGYAA8hmgAPIZwADyGeAA8hoQAPIaIADyGjAA8hpAAPIaUADyGnAA8hqQAPIaoADyGrAA8hrQAPIa4ADyIpAA8iKwAPIi4ADyIwAA8iMwAPIjQADyI1AA8iNgAPIjcADyI5AA8iOwAPIjwADyI9AA8iPwAPIkAADyJZAA8iWgAPIlsADyJdAA8i2AAPItoADyLcAA8i3gAPIuEADyLiAA8i4wAPIuQADyLlAA8i5wAPIukADyLqAA8i6wAPIu0ADyLuAA8jaQAPI2sADyNtAA8jbwAPI3IADyNzAA8jdAAPI3UADyN2AA8jeAAPI3oADyN7AA8jfAAPI34ADyN/AA8j+gAPI/wADyP+AA8kAAAPJAMADyQEAA8kBQAPJAYADyQHAA8kCQAPJAsADyQMAA8kDQAPJA8ADyQQAA8kiwAPJI0ADySPAA8kkQAPJJQADySVAA8klgAPJJcADySYAA8kmgAPJJwADySdAA8kngAPJKAADyShAA8lHAAPJR4ADyUgAA8lIgAPJSUADyUmAA8lJwAPJSgADyUpAA8lKwAPJS0ADyUuAA8lLwAPJTEADyUyAA8lewAPJZ8ADyXGAA8l6gAPJe0ADyXvAA8l8QAPJfMADyX1AA8l9wAPJfgADyX7AA8mFAAPJjEADyYzAA8mNQAPJjcADyY5AA8mOwAPJj0ADyY/AA8mXAAPJl8ADyZiAA8mZQAPJmgADyZrAA8mbgAPJnEADyZzAA8m7gAPJvAADybyAA8m9AAPJvcADyb4AA8m+QAPJvoADyb7AA8m/QAPJv8ADycAAA8nAQAPJwMADycEAA8nfwAPJ4EADyeDAA8nhQAPJ4gADyeJAA8nigAPJ4sADyeMAA8njgAPJ5AADyeRAA8nkgAPJ5QADyeVAA8oEAAPKBIADygUAA8oFgAPKBkADygaAA8oGwAPKBwADygdAA8oHwAPKCEADygiAA8oIwAPKCUADygmAA8ooQAPKKMADyimAA8oqAAPKKsADyisAA8orQAPKK4ADyivAA8osQAPKLMADyi0AA8otQAPKLcADyi4AA8pMwAPKTUADyk3AA8pOQAPKTwADyk9AA8pPgAPKT8ADylAAA8pQgAPKUQADylFAA8pRgAPKUgADylJAA8pxAAPKcYADynIAA8pygAPKc0ADynOAA8pzwAPKdAADynRAA8p0wAPKdUADynWAA8p1wAPKdkADynaAA8qVQAPKlcADypZAA8qWwAPKl4ADypfAA8qYAAPKmEADypiAA8qZAAPKmYADypnAA8qaAAPKmoADyprAA8q/gAPKyEADytBAA8rYQAPK2MADytlAA8rZwAPK2kADytsAA8rbQAPK24ADytxAA8rcgAPK3QADyt1AA8rdwAPK3oADyt7AA8rfAAPK38ADyuAAA8rhQAPK54ADyunAA8rqQAPK6sADyu0AA8rtwAPK7oADyu8AA8sBQAPLCkADyxQAA8sdAAPLHcADyx5AA8sewAPLH0ADyx/AA8sgQAPLIIADyyFAA8sngAPLL8ADyzBAA8swwAPLMUADyzHAA8syQAPLMsADyzNAA8szwAPLPAADyzzAA8s9gAPLPkADyz8AA8s/wAPLQIADy0FAA8tCAAPLQoADy2FAA8thwAPLYkADy2LAA8tjgAPLY8ADy2QAA8tkQAPLZIADy2UAA8tlgAPLZcADy2YAA8tmgAPLZsADy4WAA8uGAAPLhoADy4cAA8uHwAPLiAADy4hAA8uIgAPLiMADy4lAA8uJwAPLigADy4pAA8uKwAPLiwADy6nAA8uqQAPLqwADy6uAA8usQAPLrIADy6zAA8utAAPLrUADy63AA8uuQAPLroADy67AA8uvQAPLr4ADy7XAA8u2AAPLtkADy7bAA8vVgAPL1gADy9aAA8vXAAPL18ADy9gAA8vYQAPL2IADy9jAA8vZQAPL2cADy9oAA8vaQAPL2sADy9sAA8v5wAPL+kADy/rAA8v7QAPL/AADy/xAA8v8gAPL/MADy/0AA8v9gAPL/gADy/5AA8v+gAPL/wADy/9AA8weAAPMHoADzB8AA8wfgAPMIEADzCCAA8wgwAPMIQADzCFAA8whwAPMIkADzCKAA8wiwAPMI0ADzCOAA8xCQAPMQsADzENAA8xDwAPMRIADzETAA8xFAAPMRUADzEWAA8xGAAPMRoADzEbAA8xHAAPMR4ADzEfAA8xmgAPMZwADzGeAA8xoAAPMaMADzGkAA8xpQAPMaYADzGnAA8xqQAPMasADzGsAA8xrQAPMa8ADzGwAA8x+QAPMh0ADzJEAA8yaAAPMmsADzJtAA8ybwAPMnEADzJzAA8ydQAPMnYADzJ5AA8ykgAPMq8ADzKxAA8yswAPMrUADzK3AA8yuQAPMrsADzK9AA8y2gAPMt0ADzLgAA8y4wAPMuYADzLpAA8y7AAPMu8ADzLxAA8zbAAPM24ADzNwAA8zcgAPM3UADzN2AA8zdwAPM3gADzN5AA8zewAPM30ADzN+AA8zfwAPM4EADzOCAA8z/QAPM/8ADzQBAA80AwAPNAYADzQHAA80CAAPNAkADzQKAA80DAAPNA4ADzQPAA80EAAPNBIADzQTAA80jgAPNJAADzSSAA80lAAPNJcADzSYAA80mQAPNJoADzSbAA80nQAPNJ8ADzSgAA80oQAPNKMADzSkAA81HwAPNSEADzUjAA81JQAPNSgADzUpAA81KgAPNSsADzUsAA81LgAPNTAADzUxAA81MgAPNTQADzU1AA81sAAPNbIADzW0AA81tgAPNbkADzW6AA81uwAPNbwADzW9AA81vwAPNcEADzXCAA81wwAPNcUADzXGAA82QQAPNkMADzZFAA82RwAPNkoADzZLAA82TAAPNk0ADzZOAA82UAAPNlIADzZTAA82VAAPNlYADzZXAA820gAPNtQADzbWAA822AAPNtsADzbcAA823QAPNt4ADzbfAA824QAPNuMADzbkAA825QAPNucADzboAA83ewAPN54ADze+AA833gAPN+AADzfiAA835AAPN+YADzfpAA836gAPN+sADzfuAA837wAPN/EADzfyAA839QAPN/gADzf5AA83+gAPN/0ADzf+AA84AwAPOBwADzglAA84JwAPOCkADzgyAA84NQAPODgADzg6AA84gwAPOKcADzjOAA848gAPOPUADzj3AA84+QAPOPsADzj9AA84/wAPOQAADzkDAA85HAAPOT0ADzk/AA85QQAPOUMADzlFAA85RwAPOUkADzlLAA85TQAPOW4ADzlxAA85dAAPOXcADzl6AA85fQAPOYAADzmDAA85hgAPOYgADzoDAA86BQAPOgcADzoJAA86DAAPOg0ADzoOAA86DwAPOhAADzoSAA86FAAPOhUADzoWAA86GAAPOhkADzqUAA86lgAPOpgADzqaAA86nQAPOp4ADzqfAA86oAAPOqEADzqjAA86pQAPOqYADzqnAA86qQAPOqoADzslAA87JwAPOyoADzssAA87LwAPOzAADzsxAA87MgAPOzMADzs1AA87NwAPOzgADzs5AA87OwAPOzwADztVAA87VgAPO1cADztZAA871AAPO9YADzvYAA872gAPO90ADzveAA873wAPO+AADzvhAA874wAPO+UADzvmAA875wAPO+kADzvqAA88ZQAPPGcADzxpAA88awAPPG4ADzx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rAA9WrAAPVq0AD1auAA9WsAAPVrIAD1azAA9WtAAPVrYAD1a3AA9XMgAPVzQAD1c2AA9XOAAPVzsAD1c8AA9XPQAPVz4AD1c/AA9XQQAPV0MAD1dEAA9XRQAPV0cAD1dIAA9XwwAPV8UAD1fHAA9XyQAPV8wAD1fNAA9XzgAPV88AD1fQAA9X0gAPV9QAD1fVAA9X1gAPV9gAD1fZAA9YVAAPWFYAD1hYAA9YWgAPWF0AD1heAA9YXwAPWGAAD1hhAA9YYwAPWGUAD1hmAA9YZwAPWGkAD1hqAA9Y5QAPWOcAD1jpAA9Y6wAPWO4AD1jvAA9Y8AAPWPEAD1jyAA9Y9AAPWPYAD1j3AA9Y+AAPWPoAD1j7AA9ZRAAPWWgAD1mPAA9ZswAPWbYAD1m4AA9ZugAPWbwAD1m+AA9ZwAAPWcEAD1nEAA9Z3QAPWfoAD1n8AA9Z/gAPWgAAD1oCAA9aBAAPWgYAD1oIAA9aJQAPWigAD1orAA9aLgAPWjEAD1o0AA9aNwAPWjoAD1o8AA9atwAPWrkAD1q8AA9avgAPWsEAD1rCAA9awwAPWsQAD1rFAA9axwAPWskAD1rKAA9aywAPWs0AD1rOAA9bSQAPW0sAD1tNAA9bTwAPW1IAD1tTAA9bVAAPW1UAD1tWAA9bWAAPW1oAD1tbAA9bXAAPW14AD1tfAA9b2gAPW9wAD1vfAA9b4QAPW+QAD1vlAA9b5gAPW+cAD1voAA9b6gAPW+wAD1vtAA9b7gAPW/AAD1vxAA9cbAAPXG4AD1xxAA9ccwAPXHYAD1x3AA9ceAAPXHkAD1x6AA9cfAAPXH4AD1x/AA9cgAAPXIIAD1yDAA9c/gAPXQAAD10CAA9dBAAPXQcAD10IAA9dCQAPXQoAD10LAA9dDQAPXQ8AD10QAA9dEQAPXRMAD10UAA9djwAPXZEAD12TAA9dlQAPXZgAD12ZAA9dmgAPXZsAD12cAA9dngAPXaAAD12hAA9dogAPXaQAD12lAA9eIAAPXiIAD14kAA9eJgAPXikAD14qAA9eKwAPXiwAD14tAA9eLwAPXjEAD14yAA9eMwAPXjUAD142AA9eyQAPXuwAD18MAA9fLAAPXy4AD18wAA9fMgAPXzQAD183AA9fOAAPXzkAD188AA9fPQAPXz8AD19AAA9fQwAPX0YAD19HAA9fSAAPX0sAD19MAA9fUQAPX2oAD19zAA9fdQAPX3cAD1+AAA9fgwAPX4YAD1+IAA9f0QAPX/UAD2AcAA9gQAAPYEMAD2BFAA9gRwAPYEkAD2BLAA9gTQAPYE4AD2BRAA9gagAPYIsAD2CNAA9gjwAPYJEAD2CTAA9glQAPYJcAD2CZAA9gmwAPYLwAD2C/AA9gwgAPYMUAD2DIAA9gywAPYM4AD2DRAA9g1AAPYNYAD2FRAA9hUwAPYVUAD2FXAA9hWgAPYVsAD2FcAA9hXQAPYV4AD2FgAA9hYgAPYWMAD2FkAA9hZgAPYWcAD2HiAA9h5AAPYeYAD2HoAA9h6wAPYewAD2HtAA9h7gAPYe8AD2HxAA9h8wAPYfQAD2H1AA9h9wAPYfgAD2JzAA9idQAPYngAD2J6AA9ifQAPYn4AD2J/AA9igAAPYoEAD2KDAA9ihQAPYoYAD2KHAA9iiQAPYooAD2KjAA9ipAAPYqUAD2KnAA9jIgAPYyQAD2MmAA9jKAAPYysAD2MsAA9jLQAPYy4AD2MvAA9jMQAPYzMAD2M0AA9jNQAPYzcAD2M4AA9jswAPY7UAD2O3AA9juQAPY7wAD2O9AA9jvgAPY78AD2PAAA9jwgAPY8QAD2PFAA9jxgAPY8gAD2PJAA9kRAAPZEYAD2RIAA9kSgAPZE0AD2ROAA9kTwAPZFAAD2RRAA9kUwAPZFUAD2RWAA9kVwAPZFkAD2RaAA9k1QAPZNcAD2TZAA9k2wAPZN4AD2TfAA9k4AAPZOEAD2TiAA9k5AAPZOYAD2TnAA9k6AAPZOoAD2TrAA9lZgAPZWgAD2VqAA9lbAAPZW8AD2VwAA9lcQAPZXIAD2VzAA9ldQAPZXcAD2V4AA9leQAPZXsAD2V8AA9lxQAPZekAD2YQAA9mNAAPZjcAD2Y5AA9mOwAPZj0AD2Y/AA9mQQAPZkIAD2ZFAA9mXgAPZnsAD2Z9AA9mfwAPZoEAD2aDAA9mhQAPZocAD2aJAA9mpgAPZqkAD2asAA9mrwAPZrIAD2a1AA9muAAPZrsAD2a9AA9nOAAPZzoAD2c8AA9nPgAPZ0EAD2dCAA9nQwAPZ0QAD2dFAA9nRwAPZ0kAD2dKAA9nSwAPZ00AD2dOAA9nyQAPZ8sAD2fOAA9n0AAPZ9MAD2fUAA9n1QAPZ9YAD2fXAA9n2QAPZ9sAD2fcAA9n3QAPZ98AD2f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+AA+VQAAPlUIAD5VFAA+VRgAPlUcAD5VIAA+VSQAPlUsAD5VNAA+VTgAPlU8AD5VRAA+VUgAPlc0AD5XPAA+V0QAPldMAD5XWAA+V1wAPldgAD5XZAA+V2gAPldwAD5XeAA+V3wAPleAAD5XiAA+V4wAPll4AD5ZgAA+WYgAPlmQAD5ZnAA+WaAAPlmkAD5ZqAA+WawAPlm0AD5ZvAA+WcAAPlnEAD5ZzAA+WdAAPlu8AD5bxAA+W9AAPlvYAD5b5AA+W+gAPlvsAD5b8AA+W/QAPlv8AD5cBAA+XAgAPlwMAD5cFAA+XBgAPl4EAD5eDAA+XhQAPl4cAD5eKAA+XiwAPl4wAD5eNAA+XjgAPl5AAD5eSAA+XkwAPl5QAD5eWAA+XlwAPmBIAD5gUAA+YFgAPmBgAD5gbAA+YHAAPmB0AD5geAA+YHwAPmCEAD5gjAA+YJAAPmCUAD5gnAA+YKAAPmKMAD5ilAA+YpwAPmKkAD5isAA+YrQAPmK4AD5ivAA+YsAAPmLIAD5i0AA+YtQAPmLYAD5i4AA+YuQAPmMoAD5jLAA+YzQAPmN4AD5jnAA+Y6gAPmO0AD5jvAA+ZKAAPmSsAD5ktAA+ZMAAPmTMAD5k2AA+ZOQAPmbwAD5ngAA+aBAAPmicAD5pOAA+abgAPmpUAD5q8AA+a3AAPmwAAD5skAA+bJgAPmykAD5srAA+bLQAPmy8AD5syAA+bNQAPmzcAD5s5AA+bPAAPmz4AD5tAAA+bQwAPm0YAD5tHAA+bTAAPm2UAD5tqAA+bbAAPm3EAD5t0AA+bdgAPm78AD5vjAA+cCgAPnC4AD5wxAA+cMwAPnDUAD5w3AA+cOQAPnDsAD5w8AA+cPwAPnFgAD5x9AA+cfwAPnIEAD5yDAA+chQAPnIcAD5yJAA+ciwAPnI0AD5yPAA+ctAAPnLcAD5y6AA+cvQAPnMAAD5zDAA+cxgAPnMkAD5zMAA+czwAPnNEAD51MAA+dTgAPnVEAD51TAA+dVgAPnVcAD51YAA+dWQAPnVoAD51cAA+dXgAPnV8AD51gAA+dYgAPnWMAD510AA+ddQAPnXcAD53yAA+d9AAPnfYAD534AA+d+wAPnfwAD539AA+d/gAPnf8AD54BAA+eAwAPngQAD54FAA+eBwAPnggAD56DAA+ehQAPnogAD56KAA+ejQAPno4AD56PAA+ekAAPnpEAD56TAA+elQAPnpYAD56XAA+emQAPnpoAD56rAA+erAAPnq4AD58pAA+fKwAPny0AD58vAA+fMgAPnzMAD580AA+fNQAPnzYAD584AA+fOgAPnzsAD588AA+fPgAPnz8AD5+6AA+fvAAPn78AD5/BAA+fxAAPn8UAD5/GAA+fxwAPn8gAD5/KAA+fzAAPn80AD5/OAA+f0AAPn9EAD5/iAA+f4wAPn+UAD6BgAA+gYgAPoGQAD6BmAA+gaQAPoGoAD6BrAA+gbAAPoG0AD6BvAA+gcQAPoHIAD6BzAA+gdQAPoHYAD6DxAA+g8wAPoPYAD6D4AA+g+wAPoPwAD6D9AA+g/gAPoP8AD6EBAA+hAwAPoQQAD6EFAA+hBwAPoQgAD6EhAA+hIgAPoSMAD6ElAA+hoAAPoaIAD6GkAA+hpgAPoakAD6GqAA+hqwAPoawAD6GtAA+hrwAPobEAD6GyAA+hswAPobUAD6G2AA+iMQAPojMAD6I2AA+iOAAPojsAD6I8AA+iPQAPoj4AD6I/AA+iQQAPokMAD6JEAA+iRQAPokcAD6JIAA+iawAPooQAD6KJAA+ijAAPopEAD6KUAA+ilgAPop4AD6MxAA+jVAAPo3QAD6OUAA+jlgAPo5gAD6OaAA+jnAAPo58AD6OgAA+joQAPo6QAD6OlAA+jpwAPo6gAD6OrAA+jrgAPo68AD6OwAA+jswAPo7QAD6O5AA+j0gAPo9sAD6PdAA+j3wAPo+gAD6PrAA+j7gAPo/AAD6Q5AA+kXQAPpIQAD6SoAA+kqwAPpK0AD6SvAA+ksQAPpLMAD6S1AA+ktgAPpLkAD6TSAA+k8wAPpPUAD6T3AA+k+QAPpPsAD6T9AA+k/wAPpQEAD6UDAA+lJAAPpScAD6UqAA+lLQAPpTAAD6UzAA+lNgAPpTkAD6U8AA+lPgAPpbkAD6W7AA+lvQAPpb8AD6XCAA+lwwAPpcQAD6XFAA+lxgAPpcgAD6XKAA+lywAPpcwAD6XOAA+lzwAPpkoAD6ZMAA+mTgAPplAAD6ZTAA+mVAAPplUAD6ZWAA+mVwAPplkAD6ZbAA+mXAAPpl0AD6ZfAA+mYAAPptsAD6bdAA+m4AAPpuIAD6blAA+m5gAPpucAD6boAA+m6QAPpusAD6btAA+m7gAPpu8AD6bxAA+m8gAPpwsAD6c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aAA/TnQAP054AD9OfAA/ToAAP06EAD9OjAA/TpQAP06YAD9OnAA/TqQAP06oAD9Q9AA/UYAAP1IAAD9SgAA/UogAP1KQAD9SmAA/UqAAP1KsAD9SsAA/UrQAP1LAAD9SxAA/UswAP1LQAD9S2AA/UuQAP1LoAD9S7AA/UvgAP1L8AD9TEAA/U3QAP1OYAD9ToAA/U6gAP1PMAD9T2AA/U+QAP1PsAD9VEAA/VaAAP1Y8AD9WzAA/VtgAP1bgAD9W6AA/VvAAP1b4AD9XAAA/VwQAP1cQAD9XdAA/V/gAP1gAAD9YCAA/WBAAP1gYAD9YIAA/WCgAP1gwAD9YOAA/WLwAP1jIAD9Y1AA/WOAAP1jsAD9Y+AA/WQQAP1kQAD9ZHAA/WSQAP1sQAD9bGAA/WyAAP1soAD9bNAA/WzgAP1s8AD9bQAA/W0QAP1tMAD9bVAA/W1gAP1tcAD9bZAA/W2gAP11UAD9dXAA/XWQAP11sAD9deAA/XXwAP12AAD9dhAA/XYgAP12QAD9dmAA/XZwAP12gAD9dqAA/XawAP1+YAD9foAA/X6wAP1+0AD9fwAA/X8QAP1/IAD9fzAA/X9AAP1/YAD9f4AA/X+QAP1/oAD9f8AA/X/QAP2BYAD9gXAA/YGAAP2BoAD9iVAA/YlwAP2JkAD9ibAA/YngAP2J8AD9igAA/YoQAP2KIAD9ikAA/YpgAP2KcAD9ioAA/YqgAP2KsAD9kmAA/ZKAAP2SoAD9ksAA/ZLwAP2TAAD9kxAA/ZMgAP2TMAD9k1AA/ZNwAP2TgAD9k5AA/ZOwAP2TwAD9m3AA/ZuQAP2bsAD9m9AA/ZwAAP2cEAD9nCAA/ZwwAP2cQAD9nGAA/ZyAAP2ckAD9nKAA/ZzAAP2c0AD9pIAA/aSgAP2kwAD9pOAA/aUQAP2lIAD9pTAA/aVAAP2lUAD9pXAA/aWQAP2loAD9pbAA/aXQAP2l4AD9rZAA/a2wAP2t0AD9rfAA/a4gAP2uMAD9rkAA/a5QAP2uYAD9roAA/a6gAP2usAD9rsAA/a7gAP2u8AD9s4AA/bXAAP24MAD9unAA/bqgAP26wAD9uuAA/bsAAP27IAD9u0AA/btQAP27gAD9vRAA/b7gAP2/AAD9vyAA/b9AAP2/YAD9v4AA/b+gAP2/wAD9wZAA/cHAAP3B8AD9wiAA/cJQAP3CgAD9wrAA/cLgAP3DAAD9yrAA/crQAP3K8AD9yxAA/ctAAP3LUAD9y2AA/ctwAP3LgAD9y6AA/cvAAP3L0AD9y+AA/cwAAP3MEAD908AA/dPgAP3UAAD91CAA/dRQAP3UYAD91HAA/dSAAP3UkAD91LAA/dTQAP3U4AD91PAA/dUQAP3VIAD93NAA/dzwAP3dEAD93TAA/d1gAP3dcAD93YAA/d2QAP3doAD93cAA/d3gAP3d8AD93gAA/d4gAP3eMAD95eAA/eYAAP3mMAD95lAA/eaAAP3mkAD95qAA/eawAP3mwAD95uAA/ecAAP3nEAD95yAA/edAAP3nUAD97wAA/e8gAP3vQAD972AA/e+QAP3voAD977AA/e/AAP3v0AD97/AA/fAQAP3wIAD98DAA/fBQAP3wYAD9+BAA/fgwAP34UAD9+HAA/figAP34sAD9+MAA/fjQAP344AD9+QAA/fkgAP35MAD9+UAA/flgAP35cAD+ASAA/gFAAP4BYAD+AYAA/gGwAP4BwAD+AdAA/gHgAP4B8AD+AhAA/gIwAP4CQAD+AlAA/gJwAP4CgAD+C7AA/g3gAP4P4AD+EeAA/hIAAP4SIAD+EkAA/hJgAP4SkAD+EqAA/hKwAP4S4AD+EvAA/hMQAP4TIAD+E0AA/hNwAP4TgAD+E5AA/hPAAP4T0AD+FCAA/hWwAP4WQAD+FmAA/haAAP4XEAD+F0AA/hdwAP4XkAD+HCAA/h5gAP4g0AD+IxAA/iNAAP4jYAD+I4AA/iOgAP4jwAD+I+AA/iPwAP4kIAD+JbAA/ifAAP4n4AD+KAAA/iggAP4oQAD+KGAA/iiAAP4ooAD+KMAA/irQAP4rAAD+KzAA/itgAP4rkAD+K8AA/ivwAP4sIAD+LFAA/ixwAP40IAD+NEAA/jRgAP40gAD+NLAA/jTAAP400AD+NOAA/jTwAP41EAD+NTAA/jVAAP41UAD+NXAA/jWAAP49MAD+PVAA/j1wAP49kAD+PcAA/j3QAP494AD+PfAA/j4AAP4+IAD+PkAA/j5QAP4+YAD+PoAA/j6QAP5GQAD+RmAA/kaQAP5GsAD+RuAA/kbwAP5HAAD+RxAA/kcgAP5HQAD+R2AA/kdwAP5HgAD+R6AA/kewAP5JQAD+SVAA/klgAP5JgAD+UTAA/lFQAP5RcAD+UZAA/lHAAP5R0AD+UeAA/lHwAP5SAAD+UiAA/lJAAP5SUAD+UmAA/lKAAP5SkAD+WkAA/lpgAP5agAD+WqAA/lrQAP5a4AD+WvAA/lsAAP5bEAD+WzAA/ltQAP5bYAD+W3AA/luQAP5boAD+Y1AA/mNwAP5jkAD+Y7AA/mPgAP5j8AD+ZAAA/mQQAP5kIAD+ZEAA/mRgAP5kcAD+ZIAA/mSgAP5ksAD+bGAA/myAAP5soAD+bMAA/mzwAP5tAAD+bRAA/m0gAP5tMAD+bVAA/m1wAP5tgAD+bZAA/m2wAP5twAD+dXAA/nWQAP51sAD+ddAA/nYAAP52EAD+diAA/nYwAP52QAD+dmAA/naAAP52kAD+dqAA/nbAAP520AD+e2AA/n2gAP6AEAD+glAA/oKAAP6CoAD+gsAA/oLgAP6DAAD+gyAA/oMwAP6DYAD+hPAA/obAAP6G4AD+hwAA/ocgAP6HQAD+h2AA/oeAAP6HoAD+iXAA/omgAP6J0AD+igAA/oowAP6KYAD+ipAA/orAAP6K4AD+kpAA/pKwAP6S0AD+kvAA/pMgAP6TMAD+k0AA/pNQAP6TYAD+k4AA/pOgAP6TsAD+k8AA/pPgAP6T8AD+m6AA/pvAAP6b4AD+nAAA/pwwAP6cQAD+nFAA/pxgAP6ccAD+nJAA/pywAP6cwAD+nNAA/pzwAP6dAAD+pLAA/qTQAP6k8AD+pRAA/qVAAP6lUAD+pWAA/qVwAP6lgAD+paAA/qXAAP6l0AD+peAA/qYAAP6mEAD+rcAA/q3gAP6uEAD+rjAA/q5gAP6ucAD+roAA/q6QAP6uoAD+rsAA/q7gAP6u8AD+rwAA/q8gAP6vMAD+tuAA/rcAAP63IAD+t0AA/rdwAP63gAD+t5AA/regAP63sAD+t9AA/rfwAP64AAD+uBAA/rgwAP64QAD+v/AA/sAQAP7AMAD+wFAA/sCAAP7AkAD+wKAA/sCwAP7AwAD+wOAA/sEAAP7BEAD+wSAA/sFAAP7BUAD+yQAA/skgAP7JQAD+yWAA/smQAP7JoAD+ybAA/snAAP7J0AD+yfAA/soQAP7KIAD+yjAA/spQAP7KYAD+05AA/tXAAP7XwAD+2cAA/tngAP7aAAD+2iAA/tpAAP7acAD+2oAA/tqQAP7awAD+2tAA/trwAP7bAAD+2yAA/ttQAP7bYAD+23AA/tugAP7bsAD+3AAA/t2QAP7eIAD+3kAA/t5gAP7e8AD+3yAA/t9QAP7fcAD+5AAA/uZAAP7osAD+6vAA/usgAP7rQAD+62AA/uuAAP7roAD+68AA/uvQAP7sAAD+7ZAA/u+gAP7vwAD+7+AA/vAAAP7wIAD+8EAA/vBgAP7wgAD+8KAA/vKwAP7y4AD+8xAA/vNAAP7zcAD+86AA/vPQAP70AAD+9DAA/vRQAP78AAD+/CAA/vxAAP78YAD+/JAA/vygAP78sAD+/MAA/vzQAP788AD+/RAA/v0gAP79MAD+/VAA/v1gAP8FEAD/BTAA/wVQAP8FcAD/BaAA/wWwAP8FwAD/BdAA/wXgAP8GAAD/BiAA/wYwAP8GQAD/BmAA/wZwAP8OIAD/DkAA/w5wAP8OkAD/DsAA/w7QAP8O4AD/DvAA/w8AAP8PIAD/D0AA/w9QAP8PYAD/D4AA/w+QAP8RIAD/ETAA/xFAAP8RYAD/GRAA/xkwAP8ZUAD/GXAA/xmgAP8ZsAD/GcAA/xnQAP8Z4AD/GgAA/xogAP8aMAD/GkAA/xpgAP8acAD/IiAA/yJAAP8iYAD/IoAA/yKwAP8iwAD/ItAA/yLgAP8i8AD/IxAA/yMwAP8jQAD/I1AA/yNwAP8jgAD/KzAA/ytQAP8rcAD/K5AA/yvAAP8r0AD/K+AA/yvwAP8sAAD/LCAA/yxAAP8sUAD/LGAA/yyAAP8skAD/NEAA/zRgAP80gAD/NKAA/zTQAP804AD/NPAA/zUAAP81EAD/NTAA/zVQAP81YAD/NXAA/zWQAP81oAD/PVAA/z1wAP89kAD/PbAA/z3gAP898AD/PgAA/z4QAP8+IAD/PkAA/z5gAP8+cAD/PoAA/z6gAP8+sAD/Q0AA/0WAAP9H8AD/SjAA/0pgAP9KgAD/SqAA/0rAAP9K4AD/SwAA/0sQAP9LQAD/TNAA/06gAP9OwAD/TuAA/08AAP9PIAD/T0AA/09gAP9PgAD/UVAA/1GAAP9RsAD/UeAA/1IQAP9SQAD/UnAA/1KgAP9SwAD/WnAA/1qQAP9awAD/WuAA/1sQAP9bIAD/WzAA/1tAAP9bUAD/W3AA/1uQAP9boAD/W7AA/1vQAP9b4AD/Y5AA/2OwAP9j0AD/Y/AA/2QgAP9kMAD/ZEAA/2RQAP9kYAD/ZIAA/2SgAP9ksAD/ZMAA/2TgAP9k8AD/bKAA/2zAAP9s4AD/bQAA/20wAP9tQAD/bVAA/21gAP9tcAD/bZAA/22wAP9twAD/bdAA/23wAP9uAAD/dbAA/3XQAP92AAD/diAA/3ZQAP92YAD/dnAA/3aAAP92kAD/drAA/3bQAP924AD/dvAA/3cQAP93IAD/ftAA/37wAP9/EAD/fzAA/39gAP9/cAD/f4AA/3+QAP9/oAD/f8AA/3/gAP9/8AD/gAAA/4AgAP+AMAD/h+AA/4gAAP+IIAD/iEAA/4hwAP+IgAD/iJAA/4igAP+IsAD/iNAA/4jwAP+JAAD/iRAA/4kwAP+JQAD/kPAA/5EQAP+RMAD/kVAA/5GAAP+RkAD/kaAA/5GwAP+RwAD/keAA/5IAAP+SEAD/kiAA/5JAAP+SUAD/m4AA/52wAP+fsAD/obAA/6HQAP+h8AD/ohAA/6IwAP+iYAD/onAA/6KAAP+isAD/osAA/6LgAP+i8AD/oxAA/6NAAP+jUAD/o2AA/6OQAP+joAD/o/AA/6WAAP+mEAD/pjAA/6ZQAP+m4AD/pxAA/6dAAP+nYAD/q/AA/64wAP+woAD/suAA/7MQAP+zMAD/s1AA/7NwAP+zkAD/s7AA/7PAAP+z8AD/tYAA/7eQAP+3sAD/t9AA/7fwAP+4EAD/uDAA/7hQAP+4cAD/uJAA/7qgAP+60AD/uwAA/7swAP+7YAD/u5AA/7vAAP+78AD/vCAA/7xAAP/D8AD/xBAA/8QwAP/EUAD/xIAA/8SQAP/EoAD/xLAA/8TAAP/E4AD/xQAA/8UQAP/FIAD/xUAA/8VQAP/NAAD/zSAA/81AAP/NYAD/zZAA/82gAP/NsAD/zcAA/83QAP/N8AD/zhAA/84gAP/OMAD/zlAA/85gAP/WEAD/1jAA/9ZgAP/WgAD/1rAA/9bAAP/W0AD/1uAA/9bwAP/XEAD/1zAA/9dAAP/XUAD/13AA/9eAAP/ZEAD/2SAA/9kwAP/ZUAD/4QAA/+EgAP/hQAD/4WAA/+GQAP/hoAD/4bAA/+HAAP/h0AD/4fAA/+IQAP/iIAD/4jAA/+JQAP/iYAD/6hAA/+owAP/qUAD/6nAA/+qgAP/qsAD/6sAA/+rQAP/q4AD/6wAA/+sgAP/rMAD/60AA/+tgAP/rcAD/8yAA//NAAP/zYAD/84AA//OwAP/zwAD/89AA//PgAP/z8AD/9BAA//QwAP/0QAD/9FAA//RwAP/0gAD//DAA//xQAP/8cAD//JAA//zAAP/80AD//OAA//zwAP/9AAD//SAA//1AAP/9UAD//WAA//2AAP/9kAEABUABAAVgAQAFgAEABaABAAXQAQAF4AEABfABAAYAAQAGEAEABjABAAZQAQAGYAEABnABAAaQAQAGoAEACzABAA1wAQAP4AEAEiABABJQAQAScAEAEpABABKwAQAS0AEAEvABABMAAQATMAEAFMABABaQAQAWsAEAFtABABbwAQAXEAEAFzABABdQAQAXcAEAGUABABlwAQAZoAEAGdABABoAAQAaMAEAGmABABqQAQAasAEAImABACKAAQAioAEAIsABACLwAQAjAAEAIxABACMgAQAjMAEAI1ABACNwAQAjgAEAI5ABACOwAQAjwAEAK3ABACuQAQArsAEAK9ABACwAAQAsEAEALCABACwwAQAsQAEALGABACyAAQAskAEALKABACzAAQAs0AEANIABADSgAQA0wAEANOABADUQAQA1IAEANTABADVAAQA1UAEANXABADWQAQA1oAEANbABADXQAQA14AEAPZABAD2wAQA90AEAPfABAD4gAQA+MAEAPkABAD5QAQA+YAEAPoABAD6gAQA+sAEAPsABAD7gAQA+8AEARqABAEbAAQBG4AEARwABAEcwAQBHQAEAR1ABAEdgAQBHcAEAR5ABAEewAQBHwAEAR9ABAEfwAQBIAAEAT7ABAE/QAQBP8AEAUBABAFBAAQBQUAEAUGABAFBwAQBQgAEAUKABAFDAAQBQ0AEAUOABAFEAAQBREAEAWMABAFjgAQBZAAEAWSABAFlQAQBZYAEAWXABAFmAAQBZkAEAWbABAFnQAQBZ4AEAWfABAFoQAQBaIAEAY1ABAGWAAQBngAEAaYABAGmgAQBpwAEAaeABAGoAAQBqMAEAakABAGpQAQBqgAEAapABAGqwAQBqwAEAauABAGsQAQBrIAEAazABAGtgAQBrcAEAa8ABAG1QAQBt4AEAbgABAG4gAQBusAEAbuABAG8QAQBvMAEAc8ABAHYAAQB4cAEAerABAHrgAQB7AAEAeyABAHtAAQB7YAEAe4ABAHuQAQB7wAEAfVABAH9gAQB/gAEAf6ABAH/AAQB/4AEAgAABAIAgAQCAQAEAgGABAIJwAQCCoAEAg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iABAZZAAQGWUAEBmuABAZ0gAQGfkAEBodABAaIAAQGiIAEBokABAaJgAQGigAEBoqABAaKwAQGi4AEBpHABAaZAAQGmYAEBpoABAaagAQGmwAEBpuABAacAAQGnIAEBqPABAakgAQGpUAEBqYABAamwAQGp4AEBqhABAapAAQGqYAEBshABAbIwAQGyUAEBsnABAbKgAQGysAEBssABAbLQAQGy4AEBswABAbMgAQGzMAEBs0ABAbNgAQGzcAEBuyABAbtAAQG7YAEBu4ABAbuwAQG7wAEBu9ABAbvgAQG78AEBvBABAbwwAQG8QAEBvFABAbxwAQG8gAEBxDABAcRQAQHEcAEBxJABAcTAAQHE0AEBxOABAcTwAQHFAAEBxSABAcVAAQHFUAEBxWABAcWAAQHFkAEBzUABAc1gAQHNgAEBzaABAc3QAQHN4AEBzfABAc4AAQHOEAEBzjABAc5QAQHOYAEBznABAc6QAQHOoAEB1lABAdZwAQHWkAEB1rABAdbgAQHW8AEB1wABAdcQAQHXIAEB10ABAddgAQHXcAEB14ABAdegAQHXsAEB32ABAd+AAQHfoAEB38ABAd/wAQHgAAEB4BABAeAgAQHgMAEB4FABAeBwAQHggAEB4JABAeCwAQHgwAEB6HABAeiQAQHosAEB6NABAekAAQHpEAEB6SABAekwAQHpQAEB6WABAemAAQHpkAEB6aABAenAAQHp0AEB8wABAfUwAQH3MAEB+TABAflQAQH5cAEB+ZABAfmwAQH54AEB+fABAfoAAQH6MAEB+kABAfpgAQH6cAEB+pABAfrAAQH60AEB+uABAfsQAQH7IAEB+7ABAf1AAQH90AEB/fABAf4QAQH+oAEB/tABAf8AAQH/IAECA7ABAgXwAQIIYAECCqABAgrQAQIK8AECCxABAgswAQILUAECC3ABAguAAQILsAECDUABAg9QAQIPcAECD5ABAg+wAQIP0AECD/ABAhAQAQIQMAECEFABAhJgAQISkAECEsABAhLwAQITIAECE1ABAhOAAQITsAECE+ABAhQAAQIbsAECG9ABAhvwAQIcEAECHEABAhxQAQIcYAECHHABAhyAAQIcoAECHMABAhzQAQIc4AECHQABAh0QAQIkwAECJOABAiUAAQIlIAECJVABAiVgAQIlcAECJYABAiWQAQIlsAECJdABAiXgAQIl8AECJhABAiYgAQIt0AECLfABAi4gAQIuQAECLnABAi6AAQIukAECLqABAi6wAQIu0AECLvABAi8AAQIvEAECLzABAi9AAQIw0AECMOABAjDwAQIxEAECOMABAjjgAQI5AAECOSABAjlQAQI5YAECOXABAjmAAQI5kAECObABAjnQAQI54AECOfABAjoQAQI6IAECQdABAkHwAQJCEAECQjABAkJgAQJCcAECQoABAkKQAQJCoAECQsABAkLgAQJC8AECQwABAkMgAQJDMAECSuABAksAAQJLIAECS0ABAktwAQJLgAECS5ABAkugAQJLsAECS9ABAkvwAQJMAAECTBABAkwwAQJMQAECU/ABAlQQAQJUMAECVFABAlSAAQJUkAECVKABAlSwAQJUwAECVOABAlUAAQJVEAECVSABAlVAAQJVUAECXQABAl0gAQJdQAECXWABAl2QAQJdoAECXbABAl3AAQJd0AECXfABAl4QAQJeIAECXjABAl5QAQJeYAECYvABAmUwAQJnoAECaeABAmoQAQJqMAECalABAmpwAQJqkAECarABAmrAAQJq8AECbIABAm5QAQJucAECbpABAm6wAQJu0AECbvABAm8QAQJvMAECcQABAnEwAQJxYAECcZABAnHAAQJx8AECciABAnJQAQJycAECeiABAnpAAQJ6cAECepABAnrAAQJ60AECeuABAnrwAQJ7AAECeyABAntAAQJ7UAECe2ABAnuAAQJ7kAECg0ABAoNgAQKDgAECg6ABAoPQAQKD4AECg/ABAoQAAQKEEAEChDABAoRQAQKEYAEChHABAoSQAQKEoAECjFABAoxwAQKMkAECjLABAozgAQKM8AECjQABAo0QAQKNIAECjUABAo1gAQKNcAECjYABAo2gAQKNsAEClWABApWAAQKVsAECldABApYAAQKWEAECliABApYwAQKWQAEClmABApaAAQKWkAEClqABApbAAQKW0AECnoABAp6gAQKewAECnuABAp8QAQKfIAECnzABAp9AAQKfUAECn3ABAp+QAQKfoAECn7ABAp/QAQKf4AECp5ABAqewAQKn0AECp/ABAqggAQKoMAECqEABAqhQAQKoYAECqIABAqigAQKosAECqMABAqjgAQKo8AECsKABArDAAQKw4AECsQABArEwAQKxQAECsVABArFgAQKxcAECsZABArGwAQKxwAECsdABArHwAQKyAAECsxABArMgAQKzQAECtFABArUgAQK1UAECtYABArWwAQK10AECvYABAr2gAQK9wAECveABAr4QAQK+IAECvjABAr5AAQK+UAECvnABAr6QAQK+oAECvrABAr7QAQK+4AECxpABAsawAQLG0AECxvABAscgAQLHMAECx0ABAsdQAQLHYAECx4ABAsegAQLHsAECx8ABAsfgAQLH8AECz6ABAs/AAQLP8AEC0BABAtBAAQLQUAEC0GABAtBwAQLQgAEC0KABAtDAAQLQ0AEC0OABAtEAAQLREAEC2kABAtxwAQLecAEC4HABAuCQAQLgsAEC4NABAuDwAQLhIAEC4TABAuFAAQLhcAEC4YABAuGgAQLhsAEC4dABAuIAAQLiEAEC4iABAuJQAQLiYAEC4rABAuRAAQLk0AEC5PABAuUQAQLloAEC5dABAuYAAQLmIAEC6rABAuzwAQLvYAEC8aABAvHQAQLx8AEC8hABAvIwAQLyUAEC8nABAvKAAQLysAEC9EABAvZQAQL2cAEC9pABAvawAQL20AEC9vABAvcQAQL3MAEC91ABAvlgAQL5kAEC+cABAvnwAQL6IAEC+lABAvqAAQL6sAEC+uABAvsAAQMCsAEDAtABAwLwAQMDEAEDA0ABAwNQAQMDYAEDA3ABAwOAAQMDoAEDA8ABAwPQAQMD4AEDBAABAwQQAQMLwAEDC+ABAwwAAQMMIAEDDFABAwxgAQMMcAEDDIABAwyQAQMMsAEDDNABAwzgAQMM8AEDDRABAw0gAQMU0AEDFPABAxUgAQMVQAEDFXABAxWAAQMVkAEDFaABAxWwAQMV0AEDFfABAxYAAQMWEAEDFjABAxZAAQMX0AEDF+ABAxfwAQMYEAEDH8ABAx/gAQMgAAEDICABAyBQAQMgYAEDIHABAyCAAQMgkAEDILABAyDQAQMg4AEDIPABAyEQAQMhIAEDKNABAyjwAQMpEAEDKTABAylgAQMpcAEDKYABAymQAQMpoAEDKcABAyngAQMp8AEDKgABAyogAQMqMAEDMeABAzIAAQMyIAEDMkABAzJwAQMygAEDMpABAzKgAQMysAEDMtABAzLwAQMzAAEDMxABAzMwAQMzQAEDOvABAzsQAQM7MAEDO1ABAzuAAQM7kAEDO6ABAzuwAQM7wAEDO+ABAzwAAQM8EAEDPCABAzxAAQM8UAEDRAABA0QgAQNEQAEDRGABA0SQAQNEoAEDRLABA0TAAQNE0AEDRPABA0UQAQNFIAEDRTABA0VQAQNFYAEDSfABA0wwAQNOoAEDUOABA1EQAQNRMAEDUVABA1FwAQNRkAEDUbABA1HAAQNR8AEDU4ABA1VQAQNVcAEDVZABA1WwAQNV0AEDVfABA1YQAQNWMAEDWAABA1gwAQNYYAEDWJABA1jAAQNY8AEDWSABA1lQAQNZcAEDYSABA2FAAQNhcAEDYZABA2HAAQNh0AEDYeABA2HwAQNiAAEDYiABA2JAAQNiUAEDYmABA2KAAQNikAEDakABA2pgAQNqgAEDaqABA2rQAQNq4AEDavABA2sAAQNrEAEDazABA2tQAQNrYAEDa3ABA2uQAQNroAEDc1ABA3NwAQNzkAEDc7ABA3PgAQNz8AEDdAABA3QQAQN0IAEDdEABA3RgAQN0cAEDdIABA3SgAQN0sAEDfGABA3yAAQN8sAEDfNABA30AAQN9EAEDfSABA30wAQN9QAEDfWABA32AAQN9kAEDfaABA33AAQN90AEDhYABA4WgAQOFwAEDheABA4YQAQOGIAEDhjABA4ZAAQOGUAEDhnABA4aQAQOGoAEDhrABA4bQAQOG4AEDjpABA46wAQOO0AEDjvABA48gAQOPMAEDj0ABA49QAQOPYAEDj4ABA4+gAQOPsAEDj8ABA4/gAQOP8AEDl6ABA5fAAQOX4AEDmAABA5gwAQOYQAEDmFABA5hgAQOYcAEDmJABA5iwAQOYwAEDmNABA5jwAQOZAAEDojABA6RgAQOmYAEDqGABA6iAAQOooAEDqMABA6jgAQOpEAEDqSABA6kwAQOpYAEDqXABA6mQAQOpoAEDqcABA6nwAQOqAAEDqhABA6pAAQOqUAEDquABA6xwAQOtAAEDrSABA61AAQOt0AEDrgABA64wAQOuUAEDsuABA7UgAQO3kAEDudABA7oAAQO6IAEDukABA7pgAQO6gAEDuqABA7qwAQO64AEDvHABA76AAQO+oAEDvsABA77gAQO/AAEDvyABA79AAQO/YAEDv4ABA8GQAQPBwAEDwfABA8IgAQPCUAEDwoABA8KwAQPC4AEDwxABA8MwAQPK4AEDywABA8sgAQPLQAEDy3ABA8uAAQPLkAEDy6ABA8uwAQPL0AEDy/ABA8wAAQPMEAEDzDABA8xAAQPT8AED1BABA9QwAQPUUAED1IABA9SQAQPUoAED1LABA9TAAQPU4AED1QABA9UQAQPVIAED1UABA9VQAQPdAAED3SABA91QAQPdcAED3aABA92wAQPdwAED3dABA93gAQPeAAED3iABA94wAQPeQAED3mABA95wAQPgAAED4BABA+AgAQPgQAED5/ABA+gQAQPoMAED6FABA+iAAQPokAED6KABA+iwAQPowAED6OABA+kAAQPpEAED6SABA+lAAQPpUAED8QABA/EgAQPxQAED8WABA/GQAQPxoAED8bABA/HAAQPx0AED8fABA/IQAQPyIAED8jABA/JQAQPyYAED+hABA/owAQP6UAED+nABA/qgAQP6sAED+sABA/rQAQP64AED+wABA/sgAQP7MAED+0ABA/tgAQP7cAEEAyABBANAAQQDYAEEA4ABBAOwAQQDwAEEA9ABBAPgAQQD8AEEBBABBAQwAQQEQAEEBFABBARwAQQEgAEEDDABBAxQAQQMcAEEDJABBAzAAQQM0AEEDOABBAzwAQQNAAEEDSABBA1AAQQNUAEEDWABBA2AAQQNkAEEEiABBBRgAQQW0AEEGRABBBlAAQQZYAEEGYABBBmgAQQZwAEEGeABBBnwAQQaIAEEG7ABBB2AAQQdoAEEHcABBB3gAQQeAAEEHiABBB5AAQQeYAEEIDABBCBgAQQgkAEEIMABBCDwAQQhIAEEIVABBCGAAQQhoAEEKVABBClwAQQpkAEEKbABBCngAQQp8AEEKgABBCoQAQQqIAEEKkABBCpgAQQqcAEEKoABBCqgAQQqsAEEMmABBDKAAQQyoAEEMsABBDLwAQQzAAEEMxABBDMgAQQzMAEEM1ABBDNwAQQzgAEEM5ABBDOwAQQzwAEEO3ABBDuQAQQ7sAEEO9ABBDwAAQQ8EAEEPCABBDwwAQQ8QAEEPGABBDyAAQQ8kAEEPKABBDzAAQQ80AEERIABBESgAQREwAEEROABBEUQAQRFIAEERTABBEVAAQRFUAEERXABBEWQAQRFoAEERbABBEXQAQRF4AEETZABBE2wAQRN0AEETfABBE4gAQROMAEETkABBE5QAQROYAEEToABBE6gAQROsAEETsABBE7gAQRO8AEEVqABBFbAAQRW4AEEVwABBFcwAQRXQAEEV1ABBFdgAQRXcAEEV5ABBFewAQRXwAEEV9ABBFfwAQRYAAEEX7ABBF/QAQRf8AEEYBABBGBAAQRgUAEEYGABBGBwAQRggAEEYKABBGDAAQRg0AEEYOABBGEAAQRhEAEEakABBGxwAQRucAEEcHABBHCQAQRwsAEEcNABBHDwAQRxIAEEcTABBHFAAQRxcAEEcYABBHGgAQRxsAEEcdABBHIAAQRyEAEEciABBHJQAQRyYAEEcrABBHRAAQR00AEEdPABBHUQAQR1oAEEddABBHYAAQR2IAEEerABBHzwAQR/YAEEgaABBIHQAQSB8AEEghABBIIwAQSCUAEEgnABBIKAAQSCsAEEhEABBIZQAQSGcAEEhpABBIawAQSG0AEEhvABBIcQAQSHMAEEh1ABBIlgAQSJkAEEicABBInwAQSKIAEEilABBIqAAQSKsAEEiuABBIsAAQSSsAEEktABBJLwAQSTEAEEk0ABBJNQAQSTYAEEk3ABBJOAAQSToAEEk8ABBJPQAQST4AEElAABBJQQAQSbwAEEm+ABBJwAAQScIAEEnFABBJxgAQSccAEEnIABBJyQAQScsAEEnNABBJzgAQSc8AEEnRABBJ0gAQSk0AEEpPABBKUgAQSlQAEEpXABBKWAAQSlkAEEpaABBKWwAQSl0AEEpfABBKYAAQSmEAEEpjABBKZAAQSn0AEEp+ABBKfwAQSoEAEEr8ABBK/gAQSwAAEEsCABBLBQAQSwYAEEsHABBLCAAQSwkAEEsLABBLDQAQSw4AEEsPABBLEQAQSxIAEEuNABBLjwAQS5EAEEuTABBLlgAQS5cAEEuYABBLmQAQS5oAEEucABBLngAQS58AEEugABBLogAQS6MAEEweABBMIAAQTCIAEEwkABBMJwAQTCgAEEwpABBMKgAQTCsAEEwtABBMLwAQTDAAEEwxABBMMwAQTDQAEEyvABBMsQAQTLMAEEy1ABBMuAAQTLkAEEy6ABBMuwAQTLwAEEy+ABBMwAAQTMEAEEzCABBMxAAQTMUAEE1AABBNQgAQTUQAEE1GABBNSQAQTUoAEE1LABBNTAAQTU0AEE1PABBNUQAQTVIAEE1TABBNVQAQTVYAEE2fABBNwwAQTeoAEE4OABBOEQAQThMAEE4VABBOFwAQThkAEE4bABBOHAAQTh8AEE44ABBOVQAQTlcAEE5ZABBOWwAQTl0AEE5fABBOYQAQTmMAEE6AABBOgwAQToYAEE6JABBOjAAQTo8AEE6SABBOlQAQTpcAEE8SABBPFAAQTxYAEE8YABBPGwAQTxwAEE8dABBPHgAQTx8AEE8hABBPIwAQTyQAEE8lABBPJwAQTygAEE+jABBPpQAQT6cAEE+pABBPrAAQT60AEE+uABBPrwAQT7AAEE+yABBPtAAQT7UAEE+2ABBPuAAQT7kAEFA0ABBQNgAQUDgAEFA6ABBQPQAQUD4AEFA/ABBQQAAQUEEAEFBDABBQRQAQUEYAEFBHABBQSQAQUEoAEFDFABBQxwAQUMkAEFDLABBQzgAQUM8AEFDQABBQ0QAQUNIAEFDUABBQ1gAQUNcAEFDYABBQ2gAQUNsAEFFWABBRWAAQUVoAEFFcABBRXwAQUWAAEFFhABBRYgAQUWMAEFFlABBRZwAQUWgAEFFpABBRawAQUWwAEFHnABBR6QAQUesAEFHtABBR8AAQUfEAEFHyABBR8wAQUfQAEFH2ABBR+AAQUfkAEFH6ABBR/AAQUf0AEFJ4ABBSegAQUnwAEFJ+ABBSgQAQUoIAEFKDABBShAAQUoUAEFKHABBSiQAQUooAEFKLABBSjQAQUo4AEFMhABBTRAAQU2QAEFOEABBThgAQU4gAEFOKABBTjAAQU48AEFOQABBTkQAQU5QAEFOVABBTlwAQU5gAEFOaABBTnQAQU54AEFOfABBTogAQU6MAEFOoABBTwQAQU8oAEFPMABBTzgAQU9cAEFPaABBT3QAQU98AEFQoABBUTAAQVHMAEFSXABBUmgAQVJwAEFSeABBUoAAQVKIAEFSkABBUpQAQVKgAEFTBABBU4gAQVOQAEFTmABBU6AAQVOoAEFTsABBU7gAQVPAAEFTyABBVEwAQVRYAEFUZABBVHAAQVR8AEFUiABBVJQAQVSgAEFUrABBVLQAQVagAEFWqABBVrAAQVa4AEFWxABBVsgAQVbMAEFW0ABBVtQAQVbcAEFW5ABBVugAQVbsAEFW9ABBVvgAQVjkAEFY7ABBWPQAQVj8AEFZCABBWQwAQVkQAEFZFABBWRgAQVkgAEFZKABBWSwAQVkwAEFZOABBWTwAQVsoAEFbMABBWzwAQVtEAEFbUABBW1QAQVtYAEFbXABBW2AAQVtoAEFbcABBW3QAQVt4AEFbgABBW4QAQVvoAEFb7ABBW/AAQVv4AEFd5ABBXewAQV30AEFd/ABBXggAQV4MAEFeEABBXhQAQV4YAEFeIABBXigAQV4sAEFeMABBXjgAQV48AEFgKABBYDAAQWA4AEFgQABBYEwAQWBQAEFgVABBYFgAQWBcAEFgZABBYGwAQWBwAEFgdABBYHwAQWCAAEFibABBYnQAQWJ8AEFihABBYpAAQWKUAEFimABBYpwAQWKgAEFiqABBYrAAQWK0AEFiuABBYsAAQWLEAEFksABBZLgAQWTAAEFkyABBZNQAQWTYAEFk3ABBZOAAQWTkAEFk7ABBZPQAQWT4AEFk/ABBZQQAQWUIAEFm9ABBZvwAQWcEAEFnDABBZxgAQWccAEFnIABBZyQAQWcoAEFnMABBZzgAQWc8AEFnQABBZ0gAQWdMAEFocABBaQAAQWmcAEFqLABBajgAQWpAAEFqSABBalAAQWpYAEFqYABBamQAQWpwAEFq1ABBa0gAQWtQAEFrWABBa2AAQWtoAEFrcABBa3gAQWuAAEFr9ABBbAAAQWwMAEFsGABBbCQAQWwwAEFsPABBbEgAQWxQAEFuPABBbkQAQW5MAEFuVABBbmAAQW5kAEFuaABBbmwAQW5wAEFueABBboAAQW6EAEFuiABBbpAAQW6UAEFwgABBcIgAQXCQAEFwmABBcKQAQXCoAEFwrABBcLAAQXC0AEFwvABBcMQAQXDIAEFwzABBcNQAQXDYAEFyxABBcswAQXLUAEFy3ABBcugAQXLsAEFy8ABBcvQAQXL4AEFzAABBcwgAQXMMAEFzEABBcxgAQXMcAEF1CABBdRAAQXUcAEF1JABBdTAAQXU0AEF1OABBdTwAQXVAAEF1SABBdVAAQXVUAEF1WABBdWAAQXVkAEF3UABBd1gAQXdgAEF3aABBd3QAQXd4AEF3fABBd4AAQXeEAEF3jABBd5QAQXeYAEF3nABBd6QAQXeoAEF5lABBeZwAQXmkAEF5rABBebgAQXm8AEF5wABBecQAQXnIAEF50ABBedgAQXncAEF54ABBeegAQXnsAEF72ABBe+AAQXvoAEF78ABBe/wAQXwAAEF8BABBfAgAQXwMAEF8FABBfBwAQXwgAEF8JABBfCwAQXwwAEF+fABBfwgAQX+IAEGACABBgBAAQYAYAEGAIABBgCgAQYA0AEGAOABBgDwAQYBIAEGATABBgFQAQYBYAEGAZABBgHAAQYB0AEGAeABBgIQAQYCIAEGAnABBgQAAQYEkAEGBLABBgTQAQYFYAEGBZABBgXAAQYF4AEGCnABBgywAQYPIAEGEWABBhGQAQYRsAEGEdABBhHwAQYSEAEGEjABBhJAAQYScAEGFAABBhYQAQYWMAEGFlABBhZwAQYWkAEGFrABBhbQAQYW8AEGFxABBhkgAQYZUAEGGYABBhmwAQYZ4AEGGhABBhpAAQYacAEGGqABBhrAAQYicAEGIpABBiKwAQYi0AEGIwABBiMQAQYjIAEGIzABBiNAAQYjYAEGI4ABBiOQAQYjoAEGI8ABBiPQAQYrgAEGK6ABBivAAQYr4AEGLBABBiwgAQYsMAEGLEABBixQAQYscAEGLJABBiygAQYssAEGLNABBizgAQY0kAEGNLABBjTgAQY1AAEGNTABBjVAAQY1UAEGNWABBjVwAQY1kAEGNbABBjXAAQY10AEGNfABBjYAAQY3kAEGN6ABBjewAQY30AEGP4ABBj+gAQY/wAEGP+ABBkAQAQZAIAEGQDABBkBAAQZAUAEGQHABBkCQAQZAoAEGQLABBkDQAQZA4AEGSJABBkiwAQZI0AEGSPABBkkgAQZJMAEGSUABBklQAQZJYAEGSYABBkmgAQZJsAEGScABBkngAQZJ8AEGUaABBlHAAQZR4AEGUgABBlIwAQZSQAEGUlABBlJgAQZScAEGUpABBlKwAQZSwAEGUtABBlLwAQZTAAEGWrABBlrQAQZa8AEGWxABBltAAQZbUAEGW2ABBltwAQZbgAEGW6ABBlvAAQZb0AEGW+ABBlwAAQZcEAEGY8ABBmPgAQZkAAEGZCABBmRQAQZkYAEGZHABBmSAAQZkkAEGZLABBmTQAQZk4AEGZPABBmUQAQZlIAEGabABBmvwAQZuYAEGcKABBnDQAQZw8AEGcRABBnEwAQZxUAEGcXABBnGAAQZxsAEGc0ABBnUQAQZ1MAEGdVABBnVwAQZ1kAEGdbABBnXQAQZ18AEGd8ABBnfwAQZ4IAEGeFABBniAAQZ4sAEGeOABBnkQAQZ5MAEGgOABBoEAAQaBIAEGgUABBoFwAQaBgAEGgZABBoGgAQaBsAEGgdABBoHwAQaCAAEGg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xABCUMgAQlDQAEJQ2ABCUNwAQlDgAEJQ6ABCUOwAQlLYAEJS4ABCUugAQlLwAEJS/ABCUwAAQlMEAEJTCABCUwwAQlMUAEJTHABCUyAAQlMkAEJTLABCUzAAQlUcAEJVJABCVTAAQlU4AEJVRABCVUgAQlVMAEJVUABCVVQAQlVcAEJVZABCVWgAQlVsAEJVdABCVXgAQlXcAEJV4ABCVeQAQlXsAEJX2ABCV+AAQlfoAEJX8ABCV/wAQlgAAEJYBABCWAgAQlgMAEJYFABCWBwAQlggAEJYJABCWCwAQlgwAEJaHABCWiQAQlosAEJaNABCWkAAQlpEAEJaSABCWkwAQlpQAEJaWABCWmAAQlpkAEJaaABCWnAAQlp0AEJcYABCXGgAQlxwAEJceABCXIQAQlyIAEJcjABCXJAAQlyUAEJcnABCXKQAQlyoAEJcrABCXLQAQly4AEJepABCXqwAQl60AEJevABCXsgAQl7MAEJe0ABCXtQAQl7YAEJe4ABCXugAQl7sAEJe8ABCXvgAQl78AEJg6ABCYPAAQmD4AEJhAABCYQwAQmEQAEJhFABCYRgAQmEcAEJhJABCYSwAQmEwAEJhNABCYTwAQmFAAEJiZABCYvQAQmOQAEJkIABCZCwAQmQ0AEJkPABCZEQAQmRMAEJkVABCZFgAQmRkAEJkyABCZTwAQmVEAEJlTABCZVQAQmVcAEJlZABCZWwAQmV0AEJl6ABCZfQAQmYAAEJmDABCZhgAQmYkAEJmMABCZjwAQmZEAEJoMABCaDgAQmhAAEJoSABCaFQAQmhYAEJoXABCaGAAQmhkAEJobABCaHQAQmh4AEJofABCaIQAQmiIAEJqdABCanwAQmqEAEJqjABCapgAQmqcAEJqoABCaqQAQmqoAEJqsABCargAQmq8AEJqwABCasgAQmrMAEJsuABCbMAAQmzIAEJs0ABCbNwAQmzgAEJs5ABCbOgAQmzsAEJs9ABCbPwAQm0AAEJtBABCbQwAQm0QAEJu/ABCbwQAQm8QAEJvGABCbyQAQm8oAEJvLABCbzAAQm80AEJvPABCb0QAQm9IAEJvTABCb1QAQm9YAEJxRABCcUwAQnFUAEJxXABCcWgAQnFsAEJxcABCcXQAQnF4AEJxgABCcYgAQnGMAEJxkABCcZgAQnGcAEJziABCc5AAQnOYAEJzoABCc6wAQnOwAEJztABCc7gAQnO8AEJzxABCc8wAQnPQAEJz1ABCc9wAQnPgAEJ1zABCddQAQnXcAEJ15ABCdfAAQnX0AEJ1+ABCdfwAQnYAAEJ2CABCdhAAQnYUAEJ2GABCdiAAQnYkAEJ4cABCePwAQnl8AEJ5/ABCegQAQnoMAEJ6FABCehwAQnooAEJ6LABCejAAQno8AEJ6QABCekgAQnpMAEJ6VABCemAAQnpkAEJ6aABCenQAQnp4AEJ6jABCevAAQnsUAEJ7HABCeyQAQntIAEJ7VABCe2AAQntoAEJ8jABCfRwAQn24AEJ+SABCflQAQn5cAEJ+ZABCfmwAQn50AEJ+fABCfoAAQn6MAEJ+8ABCf3QAQn98AEJ/hABCf4wAQn+UAEJ/nABCf6QAQn+sAEJ/tABCgDgAQoBEAEKAUABCgFwAQoBoAEKAdABCgIAAQoCMAEKAmABCgKAAQoKMAEKClABCgpwAQoKkAEKCsABCgrQAQoK4AEKCvABCgsAAQoLIAEKC0ABCgtQAQoLYAEKC4ABCguQAQoTQAEKE2ABChOAAQoToAEKE9ABChPgAQoT8AEKFAABChQQAQoUMAEKFFABChRgAQoUcAEKFJABChSgAQocUAEKHHABChygAQocwAEKHPABCh0AAQodEAEKHSABCh0wAQodUAEKHXABCh2AAQodkAEKHbABCh3AAQofUAEKH2ABCh9wAQofkAEKJ0ABCidgAQongAEKJ6ABCifQAQon4AEKJ/ABCigAAQooEAEKKDABCihQAQooYAEKKHABCiiQAQoooAEKMFABCjBwAQowkAEKMLABCjDgAQow8AEKMQABCjEQAQoxIAEKMUABCjFgAQoxcAEKMYABCjGgAQoxsAEKOWABCjmAAQo5oAEKOcABCjnwAQo6AAEKOhABCjogAQo6MAEKOlABCjpwAQo6gAEKOpABCjqwAQo6wAEKQnABCkKQAQpCsAEKQtABCkMAAQpDEAEKQyABCkMwAQpDQAEKQ2ABCkOAAQpDkAEKQ6ABCkPAAQpD0AEKS4ABCkugAQpLwAEKS+ABCkwQAQpMIAEKTDABCkxAAQpMUAEKTHABCkyQAQpMoAEKTLABCkzQAQpM4AEKUXABClOwAQpWIAEKWGABCliQAQpYsAEKWNABCljwAQpZEAEKWTABCllAAQpZcAEKWwABClzQAQpc8AEKXRABCl0wAQpdUAEKXXABCl2QAQpdsAEKX4ABCl+wAQpf4AEKYBABCmBAAQpgcAEKYKABCmDQAQpg8AEKaKABCmjAAQpo4AEKaQABCmkwAQppQAEKaVABCmlgAQppcAEKaZABCmmwAQppwAEKadABCmnwAQpqAAEKcbABCnHQAQpx8AEKchABCnJAAQpyUAEKcmABCnJwAQpygAEKcqABCnLAAQpy0AEKcuABCnMAAQpzEAEKesABCnrgAQp7AAEKeyABCntQAQp7YAEKe3ABCnuAAQp7kAEKe7ABCnvQAQp74AEKe/ABCnwQAQp8IAEKg9ABCoPwAQqEEAEKhDABCoRgAQqEcAEKhIABCoSQAQqEoAEKhMABCoTgAQqE8AEKhQABCoUgAQqFMAEKjOABCo0AAQqNIAEKjUABCo1wAQqNgAEKjZABCo2gAQqNsAEKjdABCo3wAQqOAAEKjhABCo4wAQqOQAEKlfABCpYQAQqWMAEKllABCpaAAQqWkAEKlqABCpawAQqWwAEKluABCpcAAQqXEAEKlyABCpdAAQqXUAEKnwABCp8gAQqfQAEKn2ABCp+QAQqfoAEKn7ABCp/AAQqf0AEKn/ABCqAQAQqgIAEKoDABCqBQAQqgYAEKqZABCqvAAQqtwAEKr8ABCq/gAQqwAAEKsCABCrBAAQqwcAEKsIABCrCQAQqwwAEKsNABCrDwAQqxAAEKsSABCrFQAQqxYAEKsXABCrGgAQqxsAEKsgABCrOQAQq0IAEKtEABCrRgAQq08AEKtSABCrVQAQq1cAEKugABCrxAAQq+sAEKwPABCsEgAQrBQAEKwWABCsGAAQrBoAEKwcABCsHQAQrCAAEKw5ABCsWgAQrFwAEKxeABCsYAAQrGIAEKxkABCsZgAQrGgAEKxqABCsiwAQrI4AEKyRABCslAAQrJcAEKyaABCsnQAQrKAAEKyjABCspQAQrSAAEK0iABCtJAAQrSYAEK0pABCtKgAQrSsAEK0sABCtLQAQrS8AEK0xABCtMgAQrTMAEK01ABCtNgAQrbEAEK2zABCttQAQrbcAEK26ABCtuwAQrbwAEK29ABCtvgAQrcAAEK3CABCtwwAQrcQAEK3GABCtxwAQrkIAEK5EABCuRwAQrkkAEK5MABCuTQAQrk4AEK5PABCuUAAQrlIAEK5UABCuVQAQrlYAEK5YABCuWQAQrnIAEK5zABCudAAQrnYAEK7xABCu8wAQrvUAEK73ABCu+gAQrvsAEK78ABCu/QAQrv4AEK8AABCvAgAQrwMAEK8EABCvBgAQrwcAEK+CABCvhAAQr4YAEK+IABCviwAQr4wAEK+NABCvjgAQr48AEK+RABCvkwAQr5QAEK+VABCvlwAQr5gAELATABCwFQAQsBcAELAZABCwHAAQsB0AELAeABCwHwAQsCAAELAiABCwJAAQsCUAELAmABCwKAAQsCkAELCkABCwpgAQsKgAELCqABCwrQAQsK4AELCvABCwsAAQsLEAELCzABCwtQAQsLYAELC3ABCwuQAQsLoAELE1ABCxNwAQsTkAELE7ABCxPgAQsT8AELFAABCxQQAQsUIAELFEABCxRgAQsUcAELFIABCxSgAQsUsAELGUABCxuAAQsd8AELIDABCyBgAQsggAELIKABCyDAAQsg4AELIQABCyEQAQshQAELItABCySgAQskwAELJOABCyUAAQslIAELJUABCyVgAQslgAELJ1ABCyeAAQsnsAELJ+ABCygQAQsoQAELKHABCyigAQsowAELMHABCzCQAQswsAELMNABCzEAAQsxEAELMSABCzEwAQsxQAELMWABCzGAAQsxkAELMaABCzHAAQsx0AELOYABCzmgAQs5wAELOeABCzoQAQs6IAELOjABCzpAAQs6UAELOnABCzqQAQs6oAELOrABCzrQAQs64AELQpABC0KwAQtC0AELQvABC0MgAQtDMAELQ0ABC0NQAQtDYAELQ4ABC0OgAQtDsAELQ8ABC0PgAQtD8AELS6ABC0vAAQtL4AELTAABC0wwAQtMQAELTFABC0xgAQtMcAELTJABC0ywAQtMwAELTNABC0zwAQtNAAELVLABC1TQAQtU8AELVRABC1VAAQtVUAELVWABC1VwAQtVgAELVaABC1XAAQtV0AELVeABC1YAAQtWEAELXcABC13gAQteAAELXiABC15QAQteYAELXnABC16AAQtekAELXrABC17QAQte4AELXvABC18QAQtfIAELZtABC2bwAQtnEAELZzABC2dgAQtncAELZ4ABC2eQAQtnoAELZ8ABC2fgAQtn8AELaAABC2ggAQtoMAELcWABC3OQAQt1kAELd5ABC3ewAQt30AELd/ABC3gQAQt4QAELeFABC3hgAQt4kAELeKABC3jAAQt40AELePABC3kgAQt5MAELeUABC3lwAQt5gAELedABC3tgAQt78AELfBABC3wwAQt8wAELfPABC30gAQt9QAELgdABC4QQAQuGgAELiMABC4jwAQuJEAELiTABC4lQAQuJcAELiZABC4mgAQuJ0AELi2ABC41wAQuNkAELjbABC43QAQuN8AELjhABC44wAQuOUAELjnABC5CAAQuQsAELkOABC5EQAQuRQAELkXABC5GgAQuR0AELkgABC5IgAQuZ0AELmfABC5oQAQuaMAELmmABC5pwAQuagAELmpABC5qgAQuawAELmuABC5rwAQubAAELmyABC5swAQui4AELowABC6MgAQujQAELo3ABC6OAAQujkAELo6ABC6OwAQuj0AELo/ABC6QAAQukEAELpDABC6RAAQur8AELrBABC6xAAQusYAELrJABC6ygAQussAELrMABC6zQAQus8AELrRABC60gAQutMAELrVABC61gAQuu8AELrwABC68QAQuvMAELtuABC7cAAQu3IAELt0ABC7dwAQu3gAELt5ABC7egAQu3sAELt9ABC7fwAQu4AAELuBABC7gwAQu4QAELv/ABC8AQAQvAMAELwFABC8CAAQvAkAELwKABC8CwAQvAwAELwOABC8EAAQvBEAELwSABC8FAAQvBUAELyQABC8kgAQvJQAELyWABC8mQAQvJoAELybABC8nAAQvJ0AELyfABC8oQAQvKIAELyjABC8pQAQvKYAEL0hABC9IwAQvSUAEL0nABC9KgAQvSsAEL0sABC9LQAQvS4AEL0wABC9MgAQvTMAEL00ABC9NgAQvTcAEL2yABC9tAAQvbYAEL24ABC9uwAQvbwAEL29ABC9vgAQvb8AEL3BABC9wwAQvcQAEL3FABC9xwAQvcgAEL4RABC+NQAQvlwAEL6AABC+gwAQvoUAEL6HABC+iQAQvosAEL6NABC+jgAQvpEAEL6qABC+xwAQvskAEL7LABC+zQAQvs8AEL7RABC+0wAQvtUAEL7yABC+9QAQvvgAEL77ABC+/gAQvwEAEL8EABC/BwAQvwkAEL+EABC/hgAQv4kAEL+LABC/jgAQv48AEL+QABC/kQAQv5IAEL+UABC/lgAQv5cAEL+YABC/mgAQv5sAEMA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MABDaTgAQ2lEAENpTABDaVgAQ2lcAENpYABDaWQAQ2loAENpcABDaXgAQ2l8AENpgABDaYgAQ2mMAENreABDa4AAQ2uIAENrkABDa5wAQ2ugAENrpABDa6gAQ2usAENrtABDa7wAQ2vAAENrxABDa8wAQ2vQAENtvABDbcQAQ23MAENt1ABDbeAAQ23kAENt6ABDbewAQ23wAENt+ABDbgAAQ24EAENuCABDbhAAQ24UAENwAABDcAgAQ3AUAENwHABDcCgAQ3AsAENwMABDcDQAQ3A4AENwQABDcEgAQ3BMAENwUABDcFgAQ3BcAENySABDclAAQ3JYAENyYABDcmwAQ3JwAENydABDcngAQ3J8AENyhABDcowAQ3KQAENylABDcpwAQ3KgAEN0jABDdJQAQ3ScAEN0pABDdLAAQ3S0AEN0uABDdLwAQ3TAAEN0yABDdNAAQ3TUAEN02ABDdOAAQ3TkAEN20ABDdtgAQ3bgAEN26ABDdvQAQ3b4AEN2/ABDdwAAQ3cEAEN3DABDdxQAQ3cYAEN3HABDdyQAQ3coAEN3bABDd3AAQ3d4AEN5ZABDeWwAQ3l0AEN5fABDeYgAQ3mMAEN5kABDeZQAQ3mYAEN5oABDeagAQ3msAEN5sABDebgAQ3m8AEN7qABDe7AAQ3u4AEN7wABDe8wAQ3vQAEN71ABDe9gAQ3vcAEN75ABDe+wAQ3vwAEN79ABDe/wAQ3wAAEN97ABDffQAQ34AAEN+CABDfhQAQ34YAEN+HABDfiAAQ34kAEN+LABDfjQAQ344AEN+PABDfkQAQ35IAEOAlABDgSAAQ4GgAEOCIABDgigAQ4IwAEOCOABDgkAAQ4JMAEOCUABDglQAQ4JgAEOCZABDgmwAQ4JwAEOCeABDgoQAQ4KIAEOCjABDgpgAQ4KcAEOCsABDgxQAQ4M4AEODQABDg0gAQ4NsAEODeABDg4QAQ4OMAEOEsABDhUAAQ4XcAEOGbABDhngAQ4aAAEOGiABDhpAAQ4aYAEOGoABDhqQAQ4awAEOHFABDh5gAQ4egAEOHqABDh7AAQ4e4AEOHwABDh8gAQ4fQAEOH2ABDiFwAQ4hoAEOIdABDiIAAQ4iMAEOImABDiKQAQ4iwAEOIvABDiMQAQ4qwAEOKuABDisAAQ4rIAEOK1ABDitgAQ4rcAEOK4ABDiuQAQ4rsAEOK9ABDivgAQ4r8AEOLBABDiwgAQ4z0AEOM/ABDjQQAQ40MAEONGABDjRwAQ40gAEONJABDjSgAQ40wAEONOABDjTwAQ41AAEONSABDjUwAQ484AEOPQABDj0wAQ49UAEOPYABDj2QAQ49oAEOPbABDj3AAQ494AEOPgABDj4QAQ4+IAEOPkABDj5QAQ4/4AEOP/ABDkAAAQ5AIAEOR9ABDkfwAQ5IEAEOSDABDkhgAQ5IcAEOSIABDkiQAQ5IoAEOSMABDkjgAQ5I8AEOSQABDkkgAQ5JMAEOUOABDlEAAQ5RIAEOUUABDlFwAQ5RgAEOUZABDlGgAQ5RsAEOUdABDlHwAQ5SAAEOUhABDlIwAQ5SQAEOWfABDloQAQ5aMAEOWlABDlqAAQ5akAEOWqABDlqwAQ5awAEOWuABDlsAAQ5bEAEOWyABDltAAQ5bUAEOYwABDmMgAQ5jQAEOY2ABDmOQAQ5joAEOY7ABDmPAAQ5j0AEOY/ABDmQQAQ5kIAEOZDABDmRQAQ5kYAEObBABDmwwAQ5sUAEObHABDmygAQ5ssAEObMABDmzQAQ5s4AEObQABDm0gAQ5tMAEObUABDm1gAQ5tcAEOcgABDnRAAQ52sAEOePABDnkgAQ55QAEOeWABDnmAAQ55oAEOecABDnnQAQ56AAEOe5ABDn1gAQ59gAEOfaABDn3AAQ594AEOfgABDn4gAQ5+QAEOgBABDoBAAQ6AcAEOgKABDoDQAQ6BAAEOgTABDoFgAQ6BgAEOiTABDolQAQ6JcAEOiZABDonAAQ6J0AEOieABDonwAQ6KAAEOiiABDopAAQ6KUAEOimABDoqAAQ6KkAEOkkABDpJgAQ6SgAEOkqABDpLQAQ6S4AEOkvABDpMAAQ6TEAEOkzABDpNQAQ6TYAEOk3ABDpOQAQ6ToAEOm1ABDptwAQ6bkAEOm7ABDpvgAQ6b8AEOnAABDpwQAQ6cIAEOnEABDpxgAQ6ccAEOnIABDpygAQ6csAEOpGABDqSAAQ6koAEOpMABDqTwAQ6lAAEOpRABDqUgAQ6lMAEOpVABDqVwAQ6lgAEOpZABDqWwAQ6lwAEOrXABDq2QAQ6tsAEOrdABDq4AAQ6uEAEOriABDq4wAQ6uQAEOrmABDq6AAQ6ukAEOrqABDq7AAQ6u0AEOtoABDragAQ62wAEOtuABDrcQAQ63IAEOtzABDrdAAQ63UAEOt3ABDreQAQ63oAEOt7ABDrfQAQ634AEOv5ABDr+wAQ6/0AEOv/ABDsAgAQ7AMAEOwEABDsBQAQ7AYAEOwIABDsCgAQ7AsAEOwMABDsDgAQ7A8AEOyiABDsxQAQ7OUAEO0FABDtBwAQ7QkAEO0LABDtDQAQ7RAAEO0RABDtEgAQ7RUAEO0WABDtGAAQ7RkAEO0bABDtHgAQ7R8AEO0gABDtIwAQ7SQAEO0pABDtQgAQ7UsAEO1NABDtTwAQ7VgAEO1bABDtXgAQ7WAAEO2pABDtzQAQ7fQAEO4YABDuGwAQ7h0AEO4fABDuIQAQ7iMAEO4lABDuJgAQ7ikAEO5CABDuYwAQ7mUAEO5nABDuaQAQ7msAEO5tABDubwAQ7nEAEO5zABDulAAQ7pcAEO6aABDunQAQ7qAAEO6jABDupgAQ7qkAEO6sABDurgAQ7ykAEO8rABDvLQAQ7y8AEO8yABDvMwAQ7zQAEO81ABDvNgAQ7zgAEO86ABDvOwAQ7zwAEO8+ABDvPwAQ77oAEO+8ABDvvgAQ78AAEO/DABDvxAAQ78UAEO/GABDvxwAQ78kAEO/LABDvzAAQ780AEO/PABDv0AAQ8EsAEPBNABDwUAAQ8FIAEPBVABDwVgAQ8FcAEPBYABDwWQAQ8FsAEPBdABDwXgAQ8F8AEPBhABDwYgAQ8HsAEPB8ABDwfQAQ8H8AEPD6ABDw/AAQ8P4AEPEAABDxAwAQ8QQAEPEFABDxBgAQ8QcAEPEJABDxCwAQ8QwAEPENABDxDwAQ8RAAEPGLABDxjQAQ8Y8AEPGRABDxlAAQ8ZUAEPGWABDxlwAQ8ZgAEPGaABDxnAAQ8Z0AEPGeABDxoAAQ8aEAEPIcABDyHgAQ8iAAEPIiABDyJQAQ8iYAEPInABDyKAAQ8ikAEPIrABDyLQAQ8i4AEPIvABDyMQAQ8jIAEPKtABDyrwAQ8rEAEPKzABDytgAQ8rcAEPK4ABDyuQAQ8roAEPK8ABDyvgAQ8r8AEPLAABDywgAQ8sMAEPM+ABDzQAAQ80IAEPNEABDzRwAQ80gAEPNJABDzSgAQ80sAEPNNABDzTwAQ81AAEPNRABDzUwAQ81QAEPOdABDzwQAQ8+gAEPQMABD0DwAQ9BEAEPQTABD0FQAQ9BcAEPQZABD0GgAQ9B0AEPQ2ABD0UwAQ9FUAEPRXABD0WQAQ9FsAEPRdABD0XwAQ9GEAEPR+ABD0gQAQ9IQAEPSHABD0igAQ9I0AEPSQABD0kwAQ9JUAEPUQABD1EgAQ9RQAEPUWABD1GQAQ9RoAEPUbABD1HAAQ9R0AEPUfABD1IQAQ9SIAEPUjABD1JQAQ9SYAEPWhABD1owAQ9aUAEPWnABD1qgAQ9asAEPWsABD1rQAQ9a4AEPWwABD1sgAQ9bMAEPW0ABD1tgAQ9bcAEPYyABD2NAAQ9jYAEPY4ABD2OwAQ9jwAEPY9ABD2PgAQ9j8AEPZBABD2QwAQ9kQAEPZFABD2RwAQ9kgAEPbDABD2xQAQ9sgAEPbKABD2zQAQ9s4AEPbPABD20AAQ9tEAEPbTABD21QAQ9tYAEPbXABD22QAQ9toAEPdVABD3VwAQ91kAEPdbABD3XgAQ918AEPdgABD3YQAQ92IAEPdkABD3ZgAQ92cAEPdoABD3agAQ92sAEPfmABD36AAQ9+oAEPfsABD37wAQ9/AAEPfxABD38gAQ9/MAEPf1ABD39wAQ9/gAEPf5ABD3+wAQ9/wAEPh3ABD4eQAQ+HsAEPh9ABD4gAAQ+IEAEPiCABD4gwAQ+IQAEPiGABD4iAAQ+IkAEPiKABD4jAAQ+I0AEPkgABD5QwAQ+WMAEPmDABD5hQAQ+YcAEPmJABD5iwAQ+Y4AEPmPABD5kAAQ+ZMAEPmUABD5lgAQ+ZcAEPmZABD5nAAQ+Z0AEPmeABD5oQAQ+aIAEPmnABD5wAAQ+ckAEPnLABD5zQAQ+dYAEPnZABD53AAQ+d4AEPonABD6SwAQ+nIAEPqWABD6mQAQ+psAEPqdABD6nwAQ+qEAEPqjABD6pAAQ+qcAEPrAABD64QAQ+uMAEPrlABD65wAQ+ukAEPrrABD67QAQ+u8AEPrxABD7EgAQ+xUAEPsYABD7GwAQ+x4AEPshABD7JAAQ+ycAEPsqABD7LAAQ+6cAEPupABD7qwAQ+60AEPuwABD7sQAQ+7IAEPuzABD7tAAQ+7YAEPu4ABD7uQAQ+7oAEPu8ABD7vQAQ/DgAEPw6ABD8PAAQ/D4AEPxBABD8QgAQ/EMAEPxEABD8RQAQ/EcAEPxJABD8SgAQ/EsAEPxNABD8TgAQ/MkAEPzLABD8zgAQ/NAAEPzTABD81AAQ/NUAEPzWABD81wAQ/NkAEPzbABD83AAQ/N0AEPzfABD84AAQ/PkAEPz6ABD8+wAQ/P0AEP14ABD9egAQ/XwAEP1+ABD9gQAQ/YIAEP2DABD9hAAQ/YUAEP2HABD9iQAQ/YoAEP2LABD9jQAQ/Y4AEP4JABD+CwAQ/g0AEP4PABD+EgAQ/hMAEP4UABD+FQAQ/hYAEP4YABD+GgAQ/hsAEP4cABD+HgAQ/h8AEP6aABD+nAAQ/p4AEP6gABD+owAQ/qQAEP6lABD+pgAQ/qcAEP6pABD+qwAQ/qwAEP6tABD+rwAQ/rAAEP8rABD/LQAQ/y8AEP8xABD/NAAQ/zUAEP82ABD/NwAQ/zgAEP86ABD/PAAQ/z0AEP8+ABD/QAAQ/0EAEP+8ABD/vgAQ/8AAEP/CABD/xQAQ/8YAEP/HABD/yAAQ/8kAEP/LABD/zQAQ/84AEP/PABD/0QAQ/9IAEQAbABEAPwARAGYAEQCKABEAjQARAI8AEQCRABEAkwARAJUAEQCXABEAmAARAJsAEQC0ABEA0QARANMAEQDVABEA1wARANkAEQDbABEA3QARAN8AEQD8ABEA/wARAQIAEQEFABEBCAARAQsAEQEOABEBEQARARMAEQGOABEBkAARAZIAEQGUABEBlwARAZgAEQGZABEBmgARAZsAEQGdABEBnwARAaAAEQGhABEBowARAaQAEQIfABECIQARAiMAEQIlABECKAARAikAEQIqABECKwARAiwAEQIuABECMAARAjEAEQIyABECNAARAjUAEQKwABECsgARArQAEQK2ABECuQARAroAEQK7ABECvAARAr0AEQK/ABECwQARAsIAEQLDABECxQARAsYAEQNBABEDQwARA0UAEQNHABEDSgARA0sAEQNMABEDTQARA04AEQNQABEDUgARA1MAEQNUABEDVgARA1cAEQPSABED1AARA9YAEQPYABED2wARA9wAEQPdABED3gARA98AEQPhABED4wARA+QAEQPlABED5wARA+gAEQRjABEEZQARBGcAEQRpABEEbAARBG0AEQRuABEEbwARBHAAEQRyABEEdAARBHUAEQR2ABEEeAARBHkAEQT0ABEE9gARBPgAEQT6ABEE/QARBP4AEQT/ABEFAAARBQEAEQUDABEFBQARBQYAEQUHABEFCQARBQoAEQWdABEFwAARBeAAEQYAABEGAgARBgQAEQYGABEGCAARBgsAEQYMABEGDQARBhAAEQYRABEGEwARBhQAEQYWABEGGQARBhoAEQYbABEGHgARBh8AEQYkABEGPQARBkYAEQZIABEGSgARBlMAEQZWABEGWQARBlsAEQakABEGyAARBu8AEQcTABEHFgARBxgAEQcaABEHHAARBx4AEQcgABEHIQARByQAEQc9ABEHXgARB2AAEQdiABEHZAARB2YAEQdoABEHagARB2wAEQduABEHjwARB5IAEQeVABEHmAARB5sAEQeeABEHoQARB6QAEQenABEHqQARCCQAEQgmABEIKAARCCoAEQgtABEILgARCC8AEQgwABEIMQARCDMAEQg1ABEINgARCDcAEQg5ABEIOgARCLUAEQi3ABEIuQARCLsAEQi+ABEIvwARCMAAEQjBABEIwgARCMQAEQjGABEIxwARCMgAEQjKABEIywARCUYAEQlIABEJSwARCU0AEQlQABEJUQARCVIAEQlTABEJVAARCVYAEQlYABEJWQARCVoAEQlcABEJXQARCXYAEQl3ABEJeAARCXoAEQn1ABEJ9wARCfkAEQn7ABEJ/gARCf8AEQoAABEKAQARCgIAEQoEABEKBgARCgcAEQoIABEKCgARCgsAEQqGABEKiAARCooAEQqMABEKjwARCpAAEQqRABEKkgARCpMAEQqVABEKlwARCpgAEQqZABEKmwARCpwAEQsXABELGQARCxsAEQsdABELIAARCyEAEQsiABELIwARCyQAEQsmABELKAARCykAEQsqABELLAARCy0AEQuoABELqgARC6wAEQuuABELsQARC7IAEQuzABELtAARC7UAEQu3ABELuQARC7oAEQu7ABELvQARC74AEQw5ABEMOwARDD0AEQw/ABEMQgARDEMAEQxEABEMRQARDEYAEQxIABEMSgARDEsAEQxMABEMTgARDE8AEQyYABEMvAARDOMAEQ0HABENCgARDQwAEQ0OABENEAARDRIAEQ0UABENFQARDRgAEQ0xABENTgARDVAAEQ1SABENVAARDVYAEQ1YABENWgARDVwAEQ15ABENfAARDX8AEQ2CABENhQARDYgAEQ2LABENjgARDZAAEQ4LABEODQARDg8AEQ4RABEOFAARDhUAEQ4WABEOFwARDhgAEQ4aABEOHAARDh0AEQ4eABEOIAARDiEAEQ6cABEOngARDqAAEQ6iABEOpQARDqYAEQ6nABEOqAARDqkAEQ6rABEOrQARDq4AEQ6vABEOsQARDrIAEQ8tABEPLwARDzEAEQ8zABEPNgARDzcAEQ84ABEPOQARDzoAEQ88ABEPPgARDz8AEQ9AABEPQgARD0MAEQ++ABEPwAARD8MAEQ/FABEPyAARD8kAEQ/KABEPywARD8wAEQ/OABEP0AARD9EAEQ/SABEP1AARD9UAERBQABEQUgAREFQAERBWABEQWQAREFoAERBbABEQXAAREF0AERBfABEQYQAREGIAERBjABEQZQAREGYAERDhABEQ4wAREOUAERDnABEQ6gAREOsAERDsABEQ7QAREO4AERDwABEQ8gAREPMAERD0ABEQ9gAREPcAERFyABERdAAREXYAERF4ABERewAREXwAERF9ABERfgAREX8AERGBABERgwAREYQAERGFABERhwAREYgAERIbABESPgAREl4AERJ+ABESgAAREoIAERKEABEShgAREokAERKKABESiwAREo4AERKPABESkQAREpIAERKUABESlwAREpgAERKZABESnAAREp0AERKiABESuwAREsQAERLGABESyAAREtEAERLUABES1wAREtkAERMiABETRgARE20AERORABETlAARE5YAEROYABETmgARE5wAEROeABETnwARE6IAERO7ABET3AARE94AERPgABET4gARE+QAERPmABET6AARE+oAERPsABEUDQARFBAAERQTABEUFgARFBkAERQcABEUHwARFCIAERQlABEUJwARFKIAERSkABEUpgARFKgAERSrABEUrAARFK0AERSuABEUrwARFLEAERSzABEUtAARFLUAERS3ABEUuAARFTMAERU1ABEVNwARFTkAERU8ABEVPQARFT4AERU/ABEVQAARFUIAERVEABEVRQARFUYAERVIABEVSQARFcQAERXGABEVyQARFcsAERXOABEVzwARFdAAERXRABEV0gARFdQAERXWABEV1wARFdgAERXaABEV2wARFfQAERX1ABEV9gARFfgAERZzABEWdQARFncAERZ5ABEWfAARFn0AERZ+ABEWfwARFoAAERaCABEWhAARFoUAERaGABEWiAARFokAERcEABEXBgARFwgAERcKABEXDQARFw4AERcPABEXEAARFxEAERcTABEXFQARFxYAERcXABEXGQARFxoAEReVABEXlwARF5kAERebABEXngARF58AERegABEXoQARF6IAERekABEXpgARF6cAEReoABEXqgARF6sAERgmABEYKAARGCoAERgsABEYLwARGDAAERgxABEYMgARGDMAERg1ABEYNwARGDgAERg5ABEYOwARGDwAERi3ABEYuQARGLsAERi9ABEYwAARGMEAERjCABEYwwARGMQAERjGABEYyAARGMkAERjKABEYzAARGM0AERkWABEZOgARGWEAERmFABEZiAARGYoAERmMABEZjgARGZAAERmSABEZkwARGZYAERmvABEZzAARGc4AERnQABEZ0gARGdQAERnWABEZ2AARGdoAERn3ABEZ+gARGf0AERoAABEaAwARGgYAERoJABEaDAARGg4AERqJABEaiwARGo4AERqQABEakwARGpQAERqVABEalgARGpcAERqZABEamwARGpwAERqdABEanwARGqAAERqkABEbHwARGyEAERsjABEbJQARGygAERspABEbKgARGysAERssABEbLgARGzAAERsxABEbMgARGzQAERs1ABEbsAARG7IAERu0ABEbtgARG7kAERu6ABEbuwARG7wAERu9ABEbvwARG8EAERvCABEbwwARG8UAERvGABEcQQARHEMAERxFABEcRwARHEoAERxLABEcTAARHE0AERxOABEcUAARHFIAERxTABEcVAARHFYAERxXABEc0gARHNQAERzWABEc2AARHNsAERzcABEc3QARHN4AERzfABEc4QARHOMAERzkABEc5QARHOcAERzoABEdYwARHWUAER1nABEdaQARHWwAER1tABEdbgARHW8AER1wABEdcgARHXQAER11ABEddgARHXgAER15ABEd9AARHfYAER34ABEd+gARHf0AER3+ABEd/wARHgAAER4BABEeAwARHgUAER4GABEeBwARHgkAER4KABEenQARHsAAER7gABEfAAARHwIAER8EABEfBgARHwgAER8LABEfDAARHw0AER8QABEfEQARHxMAER8UABEfFgARHxkAER8aABEfGwARHx4AER8fABEfJAARHz0AER9GABEfSAARH0oAER9TABEfVgARH1kAER9bABEfpAARH8gAER/vABEgEwARIBYAESAYABEgGgARIBwAESAeABEgIAARICEAESAkABEgPQARIF4AESBgABEgYgARIGQAESBmABEgaAARIGoAESBsABEgbgARII8AESCSABEglQARIJgAESCbABEgngARIKEAESCkABEgpwARIKkAESEkABEhJgARISgAESEqABEhLQARIS4AESEvABEhMAARITEAESEzABEhNQARITYAESE3ABEhOQARIToAESG1ABEhtwARIbkAESG7ABEhvgARIb8AESHAABEhwQARIcIAESHEABEhxgARIccAESHIABEhygARIcsAESJGABEiSAARIksAESJNABEiUAARIlEAESJSABEiUwARIlQAESJWABEiWAARIlkAESJaABEiXAARIl0AESJ2ABEidwARIngAESJ6ABEi9QARIvcAESL5ABEi+wARIv4AESL/ABEjAAARIwEAESMCABEjBAARIwYAESMHABEjCAARIwoAESMLABEjhgARI4gAESOKABEjjAARI48AESOQABEjkQARI5IAESOTABEjlQARI5cAESOYABEjmQARI5sAESOcABEkFwARJBkAESQbABEkHQARJCAAESQhABEkIgARJCMAESQkABEkJgARJCgAESQpABEkKgARJCwAESQtABEkqAARJKoAESSsABEkrgARJLEAESSyABEkswARJLQAESS1ABEktwARJLkAESS6ABEkuwARJL0AESS+ABElOQARJTsAESU9ABElPwARJUIAESVDABElRAARJUUAESVGABElSAARJUoAESVLABElTAARJU4AESVPABElmAARJbwAESXjABEmBwARJgoAESYMABEmDgARJhAAESYSABEmFAARJhUAESYYABEmMQARJk4AESZQABEmUgARJlQAESZWABEmWAARJloAESZcABEmeQARJnwAESZ/ABEmggARJoUAESaIABEmiwARJo4AESaQABEnCwARJw0AEScPABEnEQARJxQAEScVABEnFgARJxcAEScYABEnGgARJxwAEScdABEnHgARJyAAESchABEnnAARJ54AESegABEnogARJ6UAESemABEnpwARJ6gAESepABEnqwARJ60AESeuABEnrwARJ7EAESeyABEoLQARKC8AESgxABEoMwARKDYAESg3ABEoOAARKDkAESg6ABEoPAARKD4AESg/ABEoQAARKEIAEShDABEovgARKMAAESjCABEoxAARKMcAESjIABEoyQARKMoAESjLABEozQARKM8AESjQABEo0QARKNMAESjUABEpTwARKVEAESlTABEpVQARKVgAESlZABEpWgARKVsAESlcABEpXgARKWAAESlhABEpYgARKWQAESllABEp4AARKeIAESnkABEp5gARKekAESnqABEp6wARKewAESntABEp7wARKfEAESnyABEp8wARKfUAESn2ABEqcQARKnMAESp1ABEqdwARKnoAESp7ABEqfAARKn0AESp+ABEqgAARKoIAESqDABEqhAARKoYAESqHABErGgARKz0AEStdABErfQARK38AESuBABErgwARK4UAESuIABEriQARK4oAESuNABErjgARK5AAESuRABErkwARK5YAESuXABErmAARK5sAESucABEroQARK7oAESvDABErxQARK8cAESvQABEr0wARK9YAESvYABEsIQARLEUAESxsABEskAARLJMAESyVABEslwARLJkAESybABEsnQARLJ4AESyhABEsugARLNsAESzdABEs3wARLOEAESzjABEs5QARLOcAESzpABEs6wARLQwAES0PABEtEgARLRUAES0YABEtGwARLR4AES0hABEtJAARLSYAES2hABEtowARLaUAES2nABEtqgARLasAES2sABEtrQARLa4AES2wABEtsgARLbMAES20ABEttgARLbcAES4yABEuNAARLjYAES44ABEuOwARLjwAES49ABEuPgARLj8AES5BABEuQwARLkQAES5FABEuRwARLkgAES7DABEuxQARLsgAES7KABEuzQARLs4AES7PABEu0AARLtEAES7TABEu1QARLtYAES7XABEu2QARLtoAES7zABEu9AARLvUAES73ABEvcgARL3QAES92ABEveAARL3sAES98ABEvfQARL34AES9/ABEvgQARL4MAES+EABEvhQARL4cAES+IABEwAwARMAUAETAHABEwCQARMAwAETANABEwDgARMA8AETAQABEwEgARMBQAETAVABEwFgARMBgAETAZABEwlAARMJYAETCYABEwmgARMJ0AETCeABEwnwARMKAAETChABEwowARMKUAETCmABEwpwARMKkAETCqABExJQARMScAETEpABExKwARMS4AETEvABExMAARMTEAETEyABExNAARMTYAETE3ABExOAARMToAETE7ABExtgARMbgAETG6ABExvAARMb8AETHAABExwQARMcIAETHDABExxQARMccAETHIABExyQARMcsAETHMABEyFQARMjkAETJgABEyhAARMocAETKJABEyiwARMo0AETKPABEykQARMpIAETKVABEyrgARMssAETLNABEyzwARMtEAETLTABEy1QARMtcAETLZABEy9gARMvkAETL8ABEy/wARMwIAETMFABEzCAARMwsAETMNABEziAARM4oAETOMABEzjgARM5EAETOSABEzkwARM5QAETOVABEzlwARM5kAETOaABEzmwARM50AETOeABE0GQARNBsAETQdABE0HwARNCIAETQjABE0JAARNCUAETQmABE0KAARNCoAETQrABE0LAARNC4AETQvABE0qgARNKwAETSuABE0sAARNLMAETS0ABE0tQARNLYAETS3ABE0uQARNLsAETS8ABE0vQARNL8AETTAABE1OwARNT0AETU/ABE1QQARNUQAETVFABE1RgARNUcAETVIABE1SgARNUwAETVNABE1TgARNVAAETVRABE1zAARNc4AETXQABE10gARNdUAETXWABE11wARNdgAETXZABE12wARNd0AETXeABE13wARNeEAETXiABE2XQARNl8AETZhABE2YwARNmYAETZnABE2aAARNmkAETZqABE2bAARNm4AETZvABE2cAARNnIAETZzABE27gARNvAAETbyABE29AARNvcAETb4ABE2+QARNvoAETb7ABE2/QARNv8AETcAABE3AQARNwMAETcEABE3lwARN7oAETfaABE3+gARN/wAETf+ABE4AAAROAIAETgFABE4BgAROAcAETgKABE4CwAROA0AETgOABE4EQAROBQAETgVABE4FgAROBkAETgaABE4HwARODgAEThBABE4QwAROEUAEThOABE4UQAROFQAEThWABE4nwAROMMAETjqABE5DgAROREAETkTABE5FQARORcAETkZABE5GwARORwAETkfABE5OAAROVkAETlbABE5XQAROV8AETlhABE5YwAROWUAETlnABE5aQAROYoAETmNABE5kAAROZMAETmWABE5mQAROZwAETmfABE5ogAROaQAETofABE6IQAROiMAETolABE6KAAROikAEToqABE6KwAROiwAETouABE6MAAROjEAEToyABE6NAAROjUAETqwABE6sgAROrQAETq2ABE6uQAROroAETq7ABE6vAAROr0AETq/ABE6wQAROsIAETrDABE6xQAROsYAETtBABE7QwARO0YAETtIABE7SwARO0wAETtNABE7TgARO08AETtRABE7UwARO1QAETtVABE7VwARO1gAETtxABE7cgARO3MAETt1ABE78AARO/IAETv0ABE79gARO/kAETv6ABE7+wARO/wAETv9ABE7/wARPAEAETwCABE8AwARPAUAETwGABE8gQARPIMAETyFABE8hwARPIoAETyLABE8jAARPI0AETyOABE8kAARPJIAETyTABE8lAARPJYAETyXABE9EgARPRQAET0WABE9GAARPRsAET0cABE9HQARPR4AET0fABE9IQARPSMAET0kABE9JQARPScAET0oABE9owARPaUAET2nABE9qQARPawAET2tABE9rgARPa8AET2wABE9sgARPbQAET21ABE9tgARPbgAET25ABE+NAARPjYAET44ABE+OgARPj0AET4+ABE+PwARPkAAET5BABE+QwARPkUAET5GABE+RwARPkkAET5KABE+kwARPrcAET7eABE/AgARPwUAET8HABE/CQARPwsAET8NABE/DwARPxAAET8TABE/LAARP0kAET9LABE/TQARP08AET9RABE/UwARP1UAET9XABE/dAARP3cAET96ABE/fQARP4AAET+DABE/hgARP4kAET+LABFABgARQAgAEUAKABFADAARQA8AEUAQABFAEQARQBIAEUATABFAFQARQBcAEUAYABFAGQARQBsAEUAcABFAlwARQJkAEUCcABFAngARQKEAEUCiABFAowARQKQAEUClABFApwARQKkAEUCqABFAqwARQK0AEUCuABFBKQARQSsAEUEtABFBLwARQTIAEUEzABFBNAARQTUAEUE2ABFBOAARQToAEUE7ABFBPAARQT4AEUE/ABFBugARQbwAEUG/ABFBwQARQcQAEUHFABFBxgARQccAEUHIABFBygARQcwAEUHNABFBzgARQdAAEUHRABFCVAARQngAEUKcABFCvwARQuYAEUMGABFDLQARQ1QAEUN0ABFDmAARQ7wAEUO+ABFDwQARQ8MAEUPFABFDxwARQ8oAEUPNABFDzwARQ9EAEUPUABFD1gARQ9gAEUPbABFD3gARQ98AEUPkABFD/QARRAIAEUQEABFECQARRAwAEUQOABFEVwARRHsAEUSiABFExgARRMkAEUTLABFEzQARRM8AEUTRABFE0wARRNQAEUTXABFE8AARRRUAEUUXABFFGQARRRsAEUUdABFFHwARRSEAEUUjABFFJQARRScAEUVMABFFTwARRVIAEUVVABFFWAARRVsAEUVeABFFYQARRWQAEUVnABFFaQARReQAEUXmABFF6QARResAEUXuABFF7wARRfAAEUXxABFF8gARRfQAEUX2ABFF9wARRfgAEUX6ABFF+wARRgwAEUYNABFGDwARRooAEUaMABFGjgARRpAAEUaTABFGlAARRpUAEUaWABFGlwARRpkAEUabABFGnAARRp0AEUafABFGoAARRxsAEUcdABFHIAARRyIAEUclABFHJgARRycAEUcoABFHKQARRysAEUctABFHLgARRy8AEUcxABFHMgARR0MAEUdIABFHSwARR00AEUdeABFHawARR24AEUdxABFHdAARR3YAEUeRABFHpwARR7IAEUgtABFILwARSDEAEUgzABFINgARSDcAEUg4ABFIOQARSDoAEUg8ABFIPgARSD8AEUhAABFIQgARSEMAEUi+ABFIwAARSMMAEUjFABFIyAARSMkAEUjKABFIywARSMwAEUjOABFI0AARSNEAEUjSABFI1AARSNUAEUjmABFI5wARSOkAEUlkABFJZgARSWgAEUlqABFJbQARSW4AEUlvABFJcAARSXEAEUlzABFJdQARSXYAEUl3ABFJeQARSXoAEUn1ABFJ9wARSfoAEUn8ABFJ/wARSgAAEUoBABFKAgARSgMAEUoFABFKBwARSggAEUoJABFKCwARSgwAEUolABFKJgARSicAEUopABFKpAARSqYAEUqoABFKqgARSq0AEUquABFKrwARSrAAEUqxABFKswARSrUAEUq2ABFKtwARSrkAEUq6ABFLNQARSzcAEUs6ABFLPAARSz8AEUtAABFLQQARS0IAEUtDABFLRQARS0cAEUtIABFLSQARS0sAEUtMABFLaAARS4EAEUuSABFLlQARS5gAEUubABFLngARS68AEUuyABFLtQARS7gAEUu7ABFLvQARS9MAEUvuABFL+gARTI0AEUywABFM0AARTPAAEUzyABFM9AARTPYAEUz4ABFM+wARTPwAEUz9ABFNAAARTQEAEU0DABFNBAARTQYAEU0JABFNCgARTQsAEU0OABFNDwARTRQAEU0tABFNNgARTTgAEU06ABFNQwARTUYAEU1JABFNSwARTZQAEU24ABFN3wARTgMAEU4GABFOCAARTgoAEU4MABFODgARThAAEU4RABFOFAARTi0AEU5OABFOUAARTlIAEU5UABFOVgARTlgAEU5aABFOXAARTl4AEU5/ABFOggARToUAEU6IABFOiwARTo4AEU6RABFOlAARTpcAEU6ZABFPFAARTxYAEU8YABFPGgARTx0AEU8eABFPHwARTyAAEU8hABFPIwARTyUAEU8mABFPJwARTykAEU8qABFPpQART6cAEU+pABFPqwART64AEU+vABFPsAART7EAEU+yABFPtAART7YAEU+3ABFPuAART7oAEU+7ABFQNgARUDgAEVA7ABFQPQARUEAAEVBBABFQQgARUEMAEVBEABFQRgARUEgAEVBJABFQSgARUEwAEVBNABFQZgARUGcAEVBoABFQagARUOUAEVDnABFQ6QARUOsAEVDuABFQ7wARUPAAEVDxABFQ8gARUPQAEVD2ABFQ9wARUPgAEVD6ABFQ+wARUXYAEVF4ABFRegARUXwAEVF/ABFRgAARUYEAEVGCABFRgwARUYUAEVGHABFRiAARUYkAEVGLABFRjAARUgcAEVIJABFSCwARUg0AEVIQABFSEQARUhIAEVITABFSFAARUhYAEVIYABFSGQARUhoAEVIcABFSHQARUpgAEVKaABFSnAARUp4AEVKhABFSogARUqMAEVKkABFSpQARUqcAEVKpABFSqgARUqsAEVKtABFSrgARUykAEVMrABFTLQARUy8AEVMyABFTMwARUzQAEVM1ABFTNgARUzgAEVM6ABFTOwARUzwAEVM+ABFTPwARU4gAEVOsABFT0wARU/cAEVP6ABFT/AARU/4AEVQAABFUAgARVAQAEVQFABFUCAARVCEAEVQ+ABFUQAARVEIAEVREABFURgARVEgAEVRKABFUTAARVGkAEVRsABFUbwARVHIAEVR1ABFUeAARVHsAEVR+ABFUgAARVPsAEVT9ABFU/wARVQEAEVUEABFVBQARVQYAEVUHABFVCAARVQoAEVUMABFVDQARVQ4AEVUQABFVEQARVYwAEVWOABFVkAARVZIAEVWVABFVlgARVZcAEVWYABFVmQARVZsAEVWdABFVngARVZ8AEVWhABFVogARVh0AEVYfABFWIQARViMAEVYmABFWJwARVigAEVYpABFWKgARViwAEVYuABFWLwARVjAAEVYyABFWMwARVq4AEVawABFWsgARVrQAEVa3ABFWuAARVrkAEVa6ABFWuwARVr0AEVa/ABFWwAARVsEAEVbDABFWxAARVz8AEVdBABFXQwARV0UAEVdIABFXSQARV0oAEVdLABFXTAARV04AEVdQABFXUQARV1IAEVdUABFXVQARV9AAEVfSABFX1AARV9YAEVfZABFX2gARV9sAEVfcABFX3QARV98AEVfhABFX4gARV+MAEVflABFX5gARWGEAEVhjABFYZQARWGcAEVhqABFYawARWGwAEVhtABFYbgARWHAAEVhyABFYcwARWHQAEVh2ABFYdwARWQoAEVktABFZTQARWW0AEVlvABFZcQARWXMAEVl1ABFZeAARWXkAEVl6ABFZfQARWX4AEVmAABFZgQARWYMAEVmGABFZhwARWYgAEVmLABFZjAARWZUAEVmuABFZtwARWbkAEVm7ABFZxAARWccAEVnKABFZzAARWhUAEVo5ABFaYAARWoQAEVqHABFaiQARWosAEVqNABFajwARWpEAEVqSABFalQARWq4AEVrPABFa0QARWtMAEVrVABFa1wARWtkAEVrbABFa3QARWt8AEVsAABFbAwARWwYAEVsJABFbDAARWw8AEVsSABFbFQARWxgAEVsaABFblQARW5cAEVuZABFbmwARW54AEVufABFboAARW6EAEVuiABFbpAARW6YAEVunABFbqAARW6oAEVurABFcJgARXCgAEVwqABFcLAARXC8AEVwwABFcMQARXDIAEVwzABFcNQARXDcAEVw4ABFcOQARXDsAEVw8ABFctwARXLkAEVy8ABFcvgARXMEAEVzCABFcwwARXMQAEVzFABFcxwARXMkAEVzKABFcywARXM0AEVzOABFc5wARXOgAEVzpABFc6wARXWYAEV1oABFdagARXWwAEV1vABFdcAARXXEAEV1yABFdcwARXXUAEV13ABFdeAARXXkAEV17ABFdfAARXfcAEV35ABFd+wARXf0AEV4AABFeAQARXgIAEV4DABFeBAARXgYAEV4IABFeCQARXgoAEV4MABFeDQARXogAEV6KABFejAARXo4AEV6RABFekgARXpMAEV6UABFelQARXpcAEV6ZABFemgARXpsAEV6dABFengARXxkAEV8bABFfHQARXx8AEV8iABFfIwARXyQAEV8lABFfJgARXygAEV8qABFfKwARXywAEV8uABFfLwARX6oAEV+sABFfrgARX7AAEV+zABFftAARX7UAEV+2ABFftwARX7kAEV+7ABFfvAARX70AEV+/ABFfwAARYAkAEWAtABFgVAARYHgAEWB7ABFgfQARYH8AEWCBABFggwARYIUAEWCGABFgiQARYKIAEWC/ABFgwQARYMMAEWDFABFgxwARYMkAEWDLABFgzQARYOoAEWDtABFg8AARYPMAEWD2ABFg+QARYPwAEWD/ABFhAQARYXwAEWF+ABFhgAARYYIAEWGFABFhhgARYYcAEWGIABFhiQARYYsAEWGNABFhjgARYY8AEWGRABFhkgARYg0AEWIPABFiEQARYhMAEWIWABFiFwARYhgAEWIZABFiGgARYhwAEWIeABFiHwARYiAAEWIiABFiIwARYp4AEWKgABFiogARYqQAEWKnABFiqAARYqkAEWKqABFiqwARYq0AEWKvABFisAARYrEAEWKzABFitAARYy8AEWMxABFjMwARYzUAEWM4ABFjOQARYzoAEWM7ABFjPAARYz4AEWNAABFjQQARY0IAEWNEABFjRQARY8AAEWPCABFjxAARY8YAEWPJABFjygARY8sAEWPMABFjzQARY88AEWPRABFj0gARY9MAEWPVABFj1gARZFEAEWRTABFkVQARZFcAEWRaABFkWwARZFwAEWRdABFkXgARZGAAEWRiABFkYwARZGQAEWRmABFkZwARZOIAEWTkABFk5gARZOgAEWTrABFk7AARZO0AEWTuABFk7wARZPEAEWTzABFk9AARZPUAEWT3ABFk+AARZYsAEWWuABFlzgARZe4AEWXwABFl8gARZfQAEWX2ABFl+QARZfoAEWX7ABFl/gARZf8AEWYBABFmAgARZgQAEWYHABFmCAARZgkAEWYMABFmDQARZhIAEWYrABFmNAARZjYAEWY4ABFmQQARZkQAEWZHABFmSQARZpIAEWa2ABFm3QARZwEAEWcEABFnBgARZwgAEWcKABFnDAARZw4AEWcPABFnEgARZysAEWdMABFnTgARZ1AAEWdSABFnVAARZ1YAEWdYABFnWgARZ1wAEWd9ABFngAARZ4MAEWeGABFniQARZ4wAEWePABFnkgARZ5UAEWeXABFoEgARaBQAEWgWABFoGAARaBsAEWgcABFoHQARaB4AEWgfABFoIQARaCMAEWgkABFoJQARaCcAEWgoABFoowARaKUAEWinABFoqQARaKwAEWitABForgARaK8AEWiwABFosgARaLQAEWi1ABFotgARaLgAEWi5ABFpNAARaTYAEWk5ABFpOwARaT4AEWk/ABFpQAARaUEAEWlCABFpRAARaUYAEWlHABFpSAARaUoAEWlLABFpZAARaWUAEWlmABFpaAARaeMAEWnlABFp5wARaekAEWnsABFp7QARae4AEWnvABFp8AARafIAEWn0ABFp9QARafYAEWn4ABFp+QARanQAEWp2ABFqeAARanoAEWp9ABFqfgARan8AEWqAABFqgQARaoMAEWqFABFqhgARaocAEWqJABFqigARawUAEWsHABFrCQARawsAEWsOABFrDwARaxAAEWsRABFrEgARaxQAEWsWABFrFwARaxgAEWsaABFrGwARa5YAEWuYABFrmgARa5wAEWufABFroAARa6EAEWuiABFrowARa6UAEWunABFrqAARa6kAEWurABFrrAARbCcAEWwpABFsKwARbC0AEWwwABFsMQARbDIAEWwzABFsNAARbDYAEWw4ABFsOQARbDoAEWw8ABFsPQARbIYAEWyqABFs0QARbPUAEWz4ABFs+gARbPwAEWz+ABFtAAARbQIAEW0DABFtBgARbR8AEW08ABFtPgARbUAAEW1CABFtRAARbUYAEW1IABFtSgARbWcAEW1qABFtbQARbXAAEW1zABFtdgARbXkAEW18ABFtfgARbfkAEW37ABFt/QARbf8AEW4CABFuAwARbgQAEW4FABFuBgARbggAEW4KABFuCwARbgwAEW4OABFuDwARbooAEW6MABFujgARbpAAEW6TABFulAARbpUAEW6WABFulwARbpkAEW6bABFunAARbp0AEW6fABFuoAARbxsAEW8dABFvHwARbyEAEW8kABFvJQARbyYAEW8nABFvKAARbyoAEW8sABFvLQARby4AEW8wABFvMQARb6wAEW+uABFvsAARb7IAEW+1ABFvtgARb7cAEW+4ABFvuQARb7sAEW+9ABFvvgARb78AEW/BABFvwgARcD0AEXA/ABFwQQARcEMAEXBGABFwRwARcEgAEXBJABFwSgARcEwAEXBOABFwTwARcFAAEXBSABFwUwARcM4AEXDQABFw0gARcNQAEXDXABFw2AARcNkAEXDaABFw2wARcN0AEXDfABFw4AARcOEAEXDjABFw5AARcV8AEXFhABFxYwARcWUAEXFoABFxaQARcWoAEXFrABFxbAARcW4AEXFwABFxcQARcXIAEXF0ABFxdQARcggAEXIrABFySwARcmsAEXJtABFybwARcnEAEXJzABFydgARcncAEXJ4ABFyewARcnwAEXJ+ABFyfwARcoIAEXKFABFyhgARcocAEXKKABFyiwARcpAAEXKpABFysgARcrQAEXK2ABFyvwARcsIAEXLFABFyxwARcxAAEXM0ABFzWwARc38AEXOCABFzhAARc4YAEXOIABFzigARc4wAEXONABFzkAARc6kAEXPKABFzzAARc84AEXPQABFz0gARc9QAEXPWABFz2AARc9oAEXP7ABFz/gARdAEAEXQEABF0BwARdAoAEXQNABF0EAARdBMAEXQVABF0kAARdJIAEXSUABF0lgARdJkAEXSaABF0mwARdJwAEXSdABF0nwARdKEAEXSiABF0owARdKUAEXSmABF1IQARdSMAEXUlABF1JwARdSoAEXUrABF1LAARdS0AEXUuABF1MAARdTIAEXUzABF1NAARdTYAEXU3ABF1sgARdbQAEXW3ABF1uQARdbwAEXW9ABF1vgARdb8AEXXAABF1wgARdcQAEXXFABF1xgARdcgAEXXJABF14gARdeMAEXXkABF15gARdmEAEXZjABF2ZQARdmcAEXZqABF2awARdmwAEXZtABF2bgARdnAAEXZyABF2cwARdnQAEXZ2ABF2dwARdvIAEXb0ABF29gARdvgAEXb7ABF2/AARdv0AEXb+ABF2/wARdwEAEXcDABF3BAARdwUAEXcHABF3CAARd4MAEXeFABF3hwARd4kAEXeMABF3jQARd44AEXePABF3kAARd5IAEXeUABF3lQARd5YAEXeYABF3mQAReBQAEXgWABF4GAAReBoAEXgdABF4HgAReB8AEXggABF4IQAReCMAEXglABF4JgAReCcAEXgpABF4KgAReKUAEXinABF4qQAReKsAEXiuABF4rwAReLAAEXixABF4sgAReLQAEXi2ABF4twAReLgAEXi6ABF4uwAReQQAEXkoABF5TwAReXMAEXl2ABF5eAAReXoAEXl8ABF5fgAReYAAEXmBABF5hAAReZ0AEXm6ABF5vAAReb4AEXnAABF5wgARecQAEXnGABF5yAAReeUAEXnoABF56wARee4AEXnxABF59AARefcAEXn6ABF5/AARencAEXp5ABF6ewARen0AEXqAABF6gQAReoIAEXqDABF6hAAReoYAEXqIABF6iQAReooAEXqMABF6jQARewgAEXsKABF7DAARew4AEXsRABF7EgARexMAEXsUABF7FQARexcAEXsZABF7GgARexsAEXsdABF7HgARe5kAEXubABF7nQARe58AEXuiABF7owARe6QAEXulABF7pgARe6gAEXuqABF7qwARe6wAEXuuABF7rwARfCoAEXwsABF8LwARfDEAEXw0ABF8NQARfDYAEXw3ABF8OAARfDoAEXw8ABF8PQARfD4AEXxAABF8QQARfLwAEXy+ABF8wAARfMIAEXzFABF8xgARfMcAEXzIABF8yQARfMsAEXzNABF8zgARfM8AEXzRABF80gARfU0AEX1PABF9UQARfVMAEX1WABF9VwARfVgAEX1ZABF9WgARfVwAEX1eABF9XwARfWAAEX1iABF9YwARfd4AEX3gABF94wARfeUAEX3oABF96QARfeoAEX3rABF97AARfe4AEX3wABF98QARffIAEX30ABF99QARfgYAEX4HABF+CQARfoQAEX6GABF+iAARfooAEX6NABF+jgARfo8AEX6QABF+kQARfpMAEX6VABF+lgARfpcAEX6ZABF+mgARfxUAEX8XABF/GQARfxsAEX8eABF/HwARfyAAEX8hABF/IgARfyQAEX8mABF/JwARfygAEX8qABF/KwARf6YAEX+oABF/qwARf60AEX+wABF/sQARf7IAEX+zABF/tAARf7YAEX+4ABF/uQARf7oAEX+8ABF/vQARgFAAEYBzABGAkwARgLMAEYC1ABGAtwARgLkAEYC7ABGAvgARgL8AEYDAABGAwwARgMQAEYDGABGAxwARgMkAEYDMABGAzQARgM4AEYDRABGA0gARgNcAEYDwABGA+QARgPsAEYD9ABGBBgARgQkAEYEMABGBDgARgVcAEYF7ABGBogARgcYAEYHJABGBywARgc0AEYHPABGB0QARgdMAEYHUABGB1wARgfAAEYIRABGCEwARghUAEYIXABGCGQARghsAEYIdABGCHwARgiEAEYJCABGCRQARgkgAEYJLABGCTgARglEAEYJUABGCVwARgloAEYJcABGC1wARgtkAEYLbABGC3QARguAAEYLhABGC4gARguMAEYLkABGC5gARgugAEYLpABGC6gARguwAEYLtABGDaAARg2oAEYNsABGDbgARg3EAEYNyABGDcwARg3QAEYN1ABGDdwARg3kAEYN6ABGDewARg30AEYN+ABGD+QARg/sAEYP+ABGEAAARhAMAEYQEABGEBQARhAYAEYQHABGECQARhAsAEYQMABGEDQARhA8AEYQQABGEKQARhCoAEYQrABGELQARhKgAEYSqABGErAARhK4AEYSxABGEsgARhLMAEYS0ABGEtQARhLcAEYS5ABGEugARhLsAEYS9ABGEvgARhTkAEYU7ABGFPQARhT8AEYVCABGFQwARhUQAEYVFABGFRgARhUgAEYVKABGFSwARhUwAEYVOABGFTwARhcoAEYXMABGFzgARhdAAEYXTABGF1AARhdUAEYXWABGF1wARhdkAEYXbABGF3AARhd0AEYXfABGF4AARhlsAEYZdABGGXwARhmEAEYZkABGGZQARhmYAEYZnABGGaAARhmoAEYZsABGGbQARhm4AEYZwABGGcQARhuwAEYbuABGG8AARhvIAEYb1ABGG9gARhvcAEYb4ABGG+QARhvsAEYb9ABGG/gARhv8AEYcBABGHAgARh0sAEYdvABGHlgARh7oAEYe9ABGHvwARh8EAEYfDABGHxQARh8cAEYfIABGHywARh+QAEYgBABGIAwARiAUAEYgHABGICQARiAsAEYgNABGIDwARiCwAEYgvABGIMgARiDUAEYg4ABGIOwARiD4AEYhBABGIQwARiL4AEYjAABGIwgARiMQAEYjHABGIyAARiMkAEYjKABGIywARiM0AEYjPABGI0AARiNEAEYjTABGI1AARiU8AEYlRABGJUwARiVUAEYlYABGJWQARiVoAEYlbABGJXAARiV4AEYlgABGJYQARiWIAEYlkABGJZQARieAAEYniABGJ5AARieYAEYnpABGJ6gARiesAEYnsABGJ7QARie8AEYnxABGJ8gARifMAEYn1ABGJ9gARinEAEYpzABGKdgARingAEYp7ABGKfAARin0AEYp+ABGKfwARioEAEYqDABGKhAARioUAEYqHABGKiAARiwMAEYsFABGLBwARiwkAEYsMABGLDQARiw4AEYsPABGLEAARixIAEYsUABGLFQARixYAEYsYABGLGQARi5QAEYuWABGLmAARi5oAEYudABGLngARi58AEYugABGLoQARi6MAEYulABGLpgARi6cAEYupABGLqgARjCUAEYwnABGMKQARjCsAEYwuABGMLwARjDAAEYwxABGMMgARjDQAEYw2ABGMNwARjDgAEYw6ABGMOwARjM4AEYzxABGNEQARjTEAEY0zABGNNQARjTcAEY05ABGNPAARjT0AEY0+ABGNQQARjUIAEY1EABGNRQARjUgAEY1LABGNTAARjU0AEY1QABGNUQARjVYAEY1vABGNeAARjXoAEY18ABGNhQARjYgAEY2LABGNjQARjdYAEY36ABGOIQARjkUAEY5IABGOSgARjkwAEY5OABGOUAARjlIAEY5TABGOVgARjm8AEY6QABGOkgARjpQAEY6WABGOmAARjpoAEY6cABGOngARjqAAEY7BABGOxAARjscAEY7KABGOzQARjtAAEY7TABGO1gARjtkAEY7bABGPVgARj1gAEY9aABGPXAARj18AEY9gABGPYQARj2IAEY9jABGPZQARj2cAEY9oABGPaQARj2sAEY9sABGP5wARj+kAEY/rABGP7QARj/AAEY/xABGP8gARj/MAEY/0ABGP9gARj/gAEY/5ABGP+gARj/wAEY/9ABGQeAARkHoAEZB9ABGQfwARkIIAEZCDABGQhAARkIUAEZCGABGQiAARkIoAEZCLABGQjAARkI4AEZCPABGQqAARkKkAEZCqABGQrAARkScAEZEpABGRKwARkS0AEZEwABGRMQARkTIAEZEzABGRNAARkTYAEZE4ABGROQARkToAEZE8ABGRPQARkbgAEZG6ABGRvAARkb4AEZHBABGRwgARkcMAEZHEABGRxQARkccAEZHJABGRygARkcsAEZHNABGRzgARkkkAEZJLABGSTQARkk8AEZJSABGSUwARklQAEZJVABGSVgARklgAEZJaABGSWwARklwAEZJeABGSXwARktoAEZLcABGS3gARkuAAEZLjABGS5AARkuUAEZLmABGS5wARkukAEZLrABGS7AARku0AEZLvABGS8AARk2sAEZNtABGTbwARk3EAEZN0ABGTdQARk3YAEZN3ABGTeAARk3oAEZN8ABGTfQARk34AEZOAABGTgQARk8oAEZPuABGUFQARlDkAEZQ8ABGUPgARlEAAEZRCABGURAARlEYAEZRHABGUSgARlGMAEZSAABGUggARlIQAEZSGABGUiAARlIoAEZSMABGUjgARlKsAEZSuABGUsQARlLQAEZS3ABGUugARlL0AEZTAABGUwgARlT0AEZU/ABGVQQARlUMAEZVGABGVRwARlUgAEZVJABGVSgARlUwAEZVOABGVTwARlVAAEZVSABGVUwARlc4AEZXQABGV0wARldUAEZXYABGV2QARldoAEZXbABGV3AARld4AEZXgABGV4QARleIAEZXkABGV5QARlmAAEZZiABGWZAARlmYAEZZpABGWagARlmsAEZZsABGWbQARlm8AEZZxABGWcgARlnMAEZZ1ABGWdgARlvEAEZbzABGW9gARlvgAEZb7ABGW/AARlv0AEZb+ABGW/wARlwEAEZcDABGXBAARlwUAEZcHABGXCAARl4MAEZeFABGXhwARl4kAEZeMABGXjQARl44AEZePABGXkAARl5IAEZeUABGXlQARl5YAEZeYABGXmQARmBQAEZgWABGYGAARmBoAEZgdABGYHgARmB8AEZggABGYIQARmCMAEZglABGYJgARmCcAEZgpABGYKgARmKUAEZinABGYqgARmKwAEZivABGYsAARmLEAEZiyABGYswARmLUAEZi3ABGYuAARmLkAEZi7ABGYvAARmU8AEZlyABGZkgARmbIAEZm0ABGZtgARmbgAEZm6ABGZvQARmb4AEZm/ABGZwgARmcMAEZnFABGZxgARmcgAEZnLABGZzAARmc0AEZnQABGZ0QARmdYAEZnvABGZ+AARmfoAEZn8ABGaBQARmggAEZoLABGaDQARmlYAEZp6ABGaoQARmsUAEZrIABGaygARmswAEZrOABGa0AARmtIAEZrTABGa1gARmu8AEZsQABGbEgARmxQAEZsWABGbGAARmxoAEZscABGbHgARmyAAEZtBABGbRAARm0cAEZtKABGbTQARm1AAEZtTABGbVgARm1kAEZtbABGb1gARm9gAEZvaABGb3AARm98AEZvgABGb4QARm+IAEZvjABGb5QARm+cAEZvoABGb6QARm+sAEZvsABGcZwARnGkAEZxrABGcbQARnHAAEZxxABGccgARnHMAEZx0ABGcdgARnHgAEZx5ABGcegARnHwAEZx9ABGc+AARnPoAEZz9ABGc/wARnQIAEZ0DABGdBAARnQUAEZ0GABGdCAARnQoAEZ0LABGdDAARnQ4AEZ0PABGdKAARnSkAEZ0qABGdLAARnacAEZ2pABGdqwARna0AEZ2wABGdsQARnbIAEZ2zABGdtAARnbYAEZ24ABGduQARnboAEZ28ABGdvQARnjgAEZ46ABGePAARnj4AEZ5BABGeQgARnkMAEZ5EABGeRQARnkcAEZ5JABGeSgARnksAEZ5NABGeTgARnskAEZ7LABGezQARns8AEZ7SABGe0wARntQAEZ7VABGe1gARntgAEZ7aABGe2wARntwAEZ7eABGe3wARn1oAEZ9cABGfXgARn2AAEZ9jABGfZAARn2UAEZ9mABGfZwARn2kAEZ9rABGfbAARn20AEZ9vABGfcAARn+sAEZ/tABGf7wARn/EAEZ/0ABGf9QARn/YAEZ/3ABGf+AARn/oAEZ/8ABGf/QARn/4AEaAAABGgAQARoEoAEaBuABGglQARoLkAEaC8ABGgvgARoMAAEaDCABGgxAARoMYAEaDHABGgygARoOMAEaEAABGhAgARoQQAEaEGABGhCAARoQoAEaEMABGhDgARoSsAEaEuABGhMQARoTQAEaE3ABGhOgARoT0AEaFAABGhQgARob0AEaG/ABGhwQARocMAEaHGABGhxwARocgAEaHJABGhygARocwAEaHOABGhzwARodAAEaHSABGh0wARok4AEaJQABGiUgARolQAEaJXABGiWAARolkAEaJaABGiWwARol0AEaJfABGiYAARomEAEaJjABGiZAARot8AEaLhABGi5AARouYAEaLpABGi6gARousAEaLsABGi7QARou8AEaLxABGi8gARovMAEaL1ABGi9gARo3EAEaNzABGjdgARo3gAEaN7ABGjfAARo30AEaN+ABGjfwARo4EAEaODABGjhAARo4UAEaOHABGjiAARpAMAEaQFABGkBwARpAkAEaQMABGkDQARpA4AEaQPABGkEAARpBIAEaQUABGkFQARpBYAEaQYABGkGQARpJQAEaSWABGkmAARpJoAEaSdABGkngARpJ8AEaSgABGkoQARpKMAEaSlABGkpgARpKcAEaSpABGkqgARpSUAEaUnABGlKQARpSsAEaUuABGlLwARpTAAEaUxABGlMgARpTQAEaU2ABGlNwARpTgAEaU6ABGlOwARpc4AEaXxABGmEQARpjEAEaYzABGmNQARpjcAEaY5ABGmPAARpj0AEaY+ABGmQQARpkIAEaZEABGmRQARpkcAEaZKABGmSwARpkwAEaZPABGmUAARplUAEaZuABGmdwARpnkAEaZ7ABGmhAARpocAEaaKABGmjAARptUAEab5ABGnIAARp0QAEadHABGnSQARp0sAEadNABGnTwARp1EAEadSABGnVQARp24AEaePABGnkQARp5MAEaeVABGnlwARp5kAEaebABGnnQARp58AEafAABGnwwARp8YAEafJABGnzAARp88AEafSABGn1QARp9gAEafaABGoVQARqFcAEahZABGoWwARqF4AEahfABGoYAARqGEAEahiABGoZAARqGYAEahnABGoaAARqGoAEahrABGo5gARqOgAEajqABGo7AARqO8AEajwABGo8QARqPIAEajzABGo9QARqPcAEaj4ABGo+QARqPsAEaj8ABGpdwARqXkAEal8ABGpfgARqYEAEamCABGpgwARqYQAEamFABGphwARqYkAEamKABGpiwARqY0AEamOABGppwARqagAEampABGpqwARqiYAEaooABGqKgARqiwAEaovABGqMAARqjEAEaoyABGqMwARqjUAEao3ABGqOAARqjkAEao7ABGqPAARqrcAEaq5ABGquwARqr0AEarAABGqwQARqsIAEarDABGqxAARqsYAEarIABGqyQARqsoAEarMABGqzQARq0gAEatKABGrTAARq04AEatRABGrUgARq1MAEatUABGrVQARq1cAEatZABGrWgARq1sAEatdABGrXgARq9kAEavbABGr3QARq98AEaviABGr4wARq+QAEavlABGr5gARq+gAEavqABGr6wARq+wAEavuABGr7wARrGoAEaxsABGsbgARrHAAEaxzABGsdAARrHUAEax2ABGsdwARrHkAEax7ABGsfAARrH0AEax/ABGsgAARrMkAEaztABGtFAARrTgAEa07ABGtPQARrT8AEa1BABGtQwARrUUAEa1GABGtSQARrWIAEa1/ABGtgQARrYMAEa2FABGthwARrYkAEa2LABGtjQARraoAEa2tABGtsAARrbMAEa22ABGtuQARrbwAEa2/ABGtwQARrjwAEa4+ABGuQAARrkIAEa5FABGuRgARrkcAEa5IABGuSQARrksAEa5NABGuTgARrk8AEa5RABGuUgARrs0AEa7PABGu0QARrtMAEa7WABGu1wARrtgAEa7ZABGu2gARrtwAEa7eABGu3wARruAAEa7iABGu4wARr14AEa9gABGvYgARr2QAEa9nABGvaAARr2kAEa9qABGvawARr20AEa9vABGvcAARr3EAEa9zABGvdAARr+8AEa/xABGv8wARr/UAEa/4ABGv+QARr/oAEa/7ABGv/AARr/4AEbAAABGwAQARsAIAEbAEABGwBQARsIAAEbCCABGwhAARsIYAEbCJABGwigARsIsAEbCMABGwjQARsI8AEbCRABGwkgARsJMAEbCVABGwlgARsREAEbETABGxFgARsRgAEbEbABGxHAARsR0AEbEeABGxHwARsSEAEbEjABGxJAARsSUAEbEnABGxKAARsUcAEbHCABGxxAARscYAEbHIABGxywARscwAEbHNABGxzgARsc8AEbHRABGx0wARsdQAEbHVABGx1wARsdgAEbJrABGyjgARsq4AEbLOABGy0AARstIAEbLUABGy1gARstkAEbLaABGy2wARst4AEbLfABGy4QARsuIAEbLkABGy5wARsugAEbLpABGy7AARsu0AEbLyABGzCwARsxQAEbMWABGzGAARsyEAEbMkABGzJwARsykAEbNyABGzlgARs70AEbPhABGz5AARs+YAEbPoABGz6gARs+wAEbPuABGz7wARs/IAEbQLABG0LAARtC4AEbQwABG0MgARtDQAEbQ2ABG0OAARtDoAEbQ8ABG0XQARtGAAEbRjABG0ZgARtGkAEbRsABG0bwARtHIAEbR1ABG0dwARtPIAEbT0ABG09gARtPgAEbT7ABG0/AARtP0AEbT+ABG0/wARtQEAEbUDABG1BAARtQUAEbUHABG1CAARtYMAEbWFABG1hwARtYkAEbWMABG1jQARtY4AEbWPABG1kAARtZIAEbWUABG1lQARtZYAEbWYABG1mQARthQAEbYWABG2GQARthsAEbYeABG2HwARtiAAEbYhABG2IgARtiQAEbYmABG2JwARtigAEbYqABG2KwARtkQAEbZFABG2RgARtkgAEbbDABG2xQARtscAEbbJABG2zAARts0AEbbOABG2zwARttAAEbbSABG21AARttUAEbbWABG22AARttkAEbdUABG3VgARt1gAEbdaABG3XQARt14AEbdfABG3YAARt2EAEbdjABG3ZQARt2YAEbdnABG3aQARt2oAEbflABG35wARt+kAEbfrABG37gARt+8AEbfwABG38QARt/IAEbf0ABG39gARt/cAEbf4ABG3+gARt/sAEbh2ABG4eAARuHoAEbh8ABG4fwARuIAAEbiBABG4ggARuIMAEbiFABG4hwARuIgAEbiJABG4iwARuIwAEbkHABG5CQARuQsAEbkNABG5EAARuREAEbkSABG5EwARuRQAEbkWABG5GAARuRkAEbkaABG5HAARuR0AEblmABG5igARubEAEbnVABG52AARudoAEbncABG53gARueAAEbniABG54wARueYAEbn/ABG6HAARuh4AEbogABG6IgARuiQAEbomABG6KAARuioAEbpHABG6SgARuk0AEbpQABG6UwARulYAEbpZABG6XAARul4AEbrZABG62wARut0AEbrfABG64gARuuMAEbrkABG65QARuuYAEbroABG66gARuusAEbrsABG67gARuu8AEbtqABG7bAARu24AEbtwABG7cwARu3QAEbt1ABG7dgARu3cAEbt5ABG7ewARu3wAEbt9ABG7fwARu4AAEbv7ABG7/QARu/8AEbwBABG8BAARvAUAEbwGABG8BwARvAgAEbwKABG8DAARvA0AEbwOABG8EAARvBEAEbyMABG8jgARvJEAEbyTABG8lgARvJcAEbyYABG8mQARvJoAEbycABG8ngARvJ8AEbygABG8ogARvKMAEb0eABG9IAARvSIAEb0kABG9JwARvSgAEb0pABG9KgARvSsAEb0tABG9LwARvTAAEb0xABG9MwARvTQAEb2vABG9sQARvbMAEb21ABG9uAARvbkAEb26ABG9uwARvbwAEb2+ABG9wAARvcEAEb3CABG9xAARvcUAEb5AABG+QgARvkQAEb5GABG+SQARvkoAEb5LABG+TAARvk0AEb5PABG+UQARvlIAEb5TABG+VQARvlYAEb7pABG/DAARvywAEb9MABG/TgARv1AAEb9SABG/VAARv1cAEb9YABG/WQARv1wAEb9dABG/XwARv2AAEb9iABG/ZQARv2YAEb9nABG/agARv2sAEb9wABG/iQARv5IAEb+UABG/lgARv58AEb+iABG/pQARv6cAEb/wABHAFAARwDsAEcBfABHAYgARwGQAEcBmABHAaAARwGoAEcBsABHAbQARwHAAEcCJABHAqgARwKwAEcCuABHAsAARwLIAEcC0ABHAtgARwLgAEcC6ABHA2wARwN4AEcDhABHA5AARwOcAEcDqABHA7QARwPAAEcDzABHA9QARwXAAEcFyABHBdAARwXYAEcF5ABHBegARwXsAEcF8ABHBfQARwX8AEcGBABHBggARwYMAEcGFABHBhgARwgEAEcIDABHCBQARwgcAEcIKABHCCwARwgwAEcINABHCDgARwhAAEcISABHCEwARwhQAEcIWABHCFwARwpIAEcKUABHClwARwpkAEcKcABHCnQARwp4AEcKfABHCoAARwqIAEcKkABHCpQARwqYAEcKoABHCqQARwsIAEcLDABHCxAARwsYAEcNBABHDQwARw0UAEcNHABHDSgARw0sAEcNMABHDTQARw04AEcNQABHDUgARw1MAEcNUABHDVgARw1cAEcPSABHD1AARw9YAEcPYABHD2wARw9wAEcPdABHD3gARw98AEcPhABHD4wARw+QAEcPlABHD5wARw+gAEcRjABHEZQARxGcAEcRpABHEbAARxG0AEcRuABHEbwARxHAAEcRyABHEdAARxHUAEcR2ABHEeAARxHkAEcT0ABHE9gARxPgAEcT6ABHE/QARxP4AEcT/ABHFAAARxQEAEcUDABHFBQARxQYAEcUHABHFCQARxQoAEcWFABHFhwARxYkAEcWLABHFjgARxY8AEcWQABHFkQARxZIAEcWUABHFlgARxZcAEcWYABHFmgARxZsAEcXkABHGCAARxi8AEcZTABHGVgARxlgAEcZaABHGXAARxl4AEcZgABHGYQARxmQAEcZ9ABHGmgARxpwAEcaeABHGoAARxqIAEcakABHGpgARxqgAEcbFABHGyAARxssAEcbOABHG0QARxtQAEcbXABHG2gARxtwAEcdXABHHWQARx1sAEcddABHHYAARx2EAEcdiABHHYwARx2QAEcdmABHHaAARx2kAEcdqABHHbAARx20AEcfoABHH6gARx+wAEcfuABHH8QARx/IAEcfzABHH9AARx/UAEcf3ABHH+QARx/oAEcf7ABHH/QARx/4AEch5ABHIewARyH0AEch/ABHIggARyIMAEciEABHIhQARyIYAEciIABHIigARyIsAEciMABHIjgARyI8AEckKABHJDAARyQ4AEckQABHJEwARyRQAEckVABHJFgARyRcAEckZABHJGwARyRwAEckdABHJHwARySAAEcmbABHJnQARyZ8AEcmhABHJpAARyaUAEcmmABHJpwARyagAEcmqABHJrAARya0AEcmuABHJsAARybEAEcosABHKLgARyjAAEcoyABHKNQARyjYAEco3ABHKOAARyjkAEco7ABHKPQARyj4AEco/ABHKQQARykIAEcq9ABHKvwARysEAEcrDABHKxgARyscAEcrIABHKyQARysoAEcrMABHKzgARys8AEcrQABHK0gARytMAEctmABHLiQARy6kAEcvJABHLywARy80AEcvPABHL0QARy9QAEcvVABHL1gARy9kAEcvaABHL3AARy90AEcvfABHL4gARy+MAEcvkABHL5wARy+gAEcvtABHMBgARzA8AEcwRABHMEwARzBwAEcwfABHMIgARzCQAEcxtABHMkQARzLgAEczcABHM3wARzOEAEczjABHM5QARzOcAEczpABHM6gARzO0AEc0GABHNJwARzSkAEc0rABHNLQARzS8AEc0xABHNMwARzTUAEc03ABHNWAARzVsAEc1eABHNYQARzWQAEc1nABHNagARzW0AEc1wABHNcgARze0AEc3vABHN8QARzfMAEc32ABHN9wARzfgAEc35ABHN+gARzfwAEc3+ABHN/wARzgAAEc4CABHOAwARzn4AEc6AABHOggARzoQAEc6HABHOiAARzokAEc6KABHOiwARzo0AEc6PABHOkAARzpEAEc6TABHOlAARzw8AEc8RABHPFAARzxYAEc8ZABHPGgARzxsAEc8cABHPHQARzx8AEc8hABHPIgARzyMAEc8lABHPJgARzz8AEc9AABHPQQARz0MAEc++ABHPwAARz8IAEc/EABHPxwARz8gAEc/JABHPygARz8sAEc/NABHPzwARz9AAEc/RABHP0wARz9QAEdBPABHQUQAR0FMAEdBVABHQWAAR0FkAEdBaABHQWwAR0FwAEdBeABHQYAAR0GEAEdBiABHQZAAR0GUAEdDgABHQ4gAR0OQAEdDmABHQ6QAR0OoAEdDrABHQ7AAR0O0AEdDvABHQ8QAR0PIAEdDzABHQ9QAR0PYAEdFxABHRcwAR0XUAEdF3ABHRegAR0XsAEdF8ABHRfQAR0X4AEdGAABHRggAR0YMAEdGEABHRhgAR0YcAEdICABHSBAAR0gYAEdIIABHSCwAR0gwAEdINABHSDgAR0g8AEdIRABHSEwAR0hQAEdIVABHSFwAR0hgAEdJhABHShQAR0qwAEdLQABHS0wAR0tUAEdLXABHS2QAR0tsAEdLdABHS3gAR0uEAEdL6ABHTFwAR0xkAEdMbABHTHQAR0x8AEdMhABHTIwAR0yUAEdNCABHTRQAR00gAEdNLABHTTgAR01EAEdNUABHTVwAR01kAEdPUABHT1gAR09gAEdPaABHT3QAR094AEdPfABHT4AAR0+EAEdPjABHT5QAR0+YAEdPnABHT6QAR0+oAEdRlABHUZwAR1GkAEdRrABHUbgAR1G8AEdRwABHUcQAR1HIAEdR0ABHUdgAR1HcAEdR4ABHUegAR1HsAEdT2ABHU+AAR1PoAEdT8ABHU/wAR1QAAEdUBABHVAgAR1QMAEdUFABHVBwAR1QgAEdUJABHVCwAR1QwAEdWHABHViQAR1YwAEdWOABHVkQAR1ZIAEdWTABHVlAAR1ZUAEdWXABHVmQAR1ZoAEdWbABHVnQAR1Z4AEdYZABHWGwAR1h0AEdYfABHWIgAR1iMAEdYkABHWJQAR1iYAEdYoABHWKgAR1isAEdYsABHWLgAR1i8AEdaqABHWrAAR1q4AEdawABHWswAR1rQAEda1ABHWtgAR1rcAEda5ABHWuwAR1rwAEda9ABHWvwAR1sAAEdc7ABHXPQAR1z8AEddBABHXRAAR10UAEddGABHXRwAR10gAEddKABHXTAAR100AEddOABHXUAAR11EAEdfkABHYBwAR2CcAEdhHABHYSQAR2EsAEdhNABHYTwAR2FIAEdhTABHYVAAR2FcAEdhYABHYWgAR2FsAEdhdABHYYAAR2GEAEdhiABHYZQAR2GYAEdhrABHYhAAR2I0AEdiPABHYkQAR2JoAEdidABHYoAAR2KIAEdjrABHZDwAR2TYAEdlaABHZXQAR2V8AEdlhABHZYwAR2WUAEdlnABHZaAAR2WsAEdmEABHZpQAR2acAEdmpABHZqwAR2a0AEdmvABHZsQAR2bMAEdm1ABHZ1gAR2dkAEdncABHZ3wAR2eIAEdnlABHZ6AAR2esAEdnuABHZ8AAR2msAEdptABHabwAR2nEAEdp0ABHadQAR2nYAEdp3ABHaeAAR2noAEdp8ABHafQAR2n4AEdqAABHagQAR2vwAEdr+ABHbAAAR2wIAEdsFABHbBgAR2wcAEdsIABHbCQAR2wsAEdsNABHbDgAR2w8AEdsRABHbEgAR240AEduPABHbkgAR25QAEduXABHbmAAR25kAEduaABHbmwAR250AEdufABHboAAR26EAEdujABHbpAAR270AEdu+ABHbvwAR28EAEdw8ABHcPgAR3EAAEdxCABHcRQAR3EYAEdxHABHcSAAR3EkAEdxLABHcTQAR3E4AEdxPABHcUQAR3FIAEdzNABHczwAR3NEAEdzTABHc1gAR3NcAEdzYABHc2QAR3NoAEdzcABHc3gAR3N8AEdzgABHc4gAR3OMAEd1eABHdYAAR3WIAEd1kABHdZwAR3WgAEd1pABHdagAR3WsAEd1tABHdbwAR3XAAEd1xABHdcwAR3XQAEd3vABHd8QAR3fMAEd31ABHd+AAR3fkAEd36ABHd+wAR3fwAEd3+ABHeAAAR3gEAEd4CABHeBAAR3gUAEd6AABHeggAR3oQAEd6GABHeiQAR3ooAEd6LABHejAAR3o0AEd6PABHekQAR3pIAEd6TABHelQAR3pYAEd7fABHfAwAR3yoAEd9OABHfUQAR31MAEd9VABHfVwAR31kAEd9bABHfXAAR318AEd94ABHflQAR35cAEd+ZABHfmwAR350AEd+fABHfoQAR36MAEd/AABHfwwAR38YAEd/JABHfzAAR388AEd/SABHf1QAR39cAEeBSABHgVAAR4FYAEeBYABHgWwAR4FwAEeBdABHgXgAR4F8AEeBhABHgYwAR4GQAEeBlABHgZwAR4GgAEeDjABHg5QAR4OcAEeDpABHg7AAR4O0AEeDuABHg7wAR4PAAEeDyABHg9AAR4PUAEeD2ABHg+AAR4PkAEeF0ABHhdgAR4XgAEeF6ABHhfQAR4X4AEeF/ABHhgAAR4YEAEeGDABHhhQAR4YYAEeGHABHhiQAR4YoAEeIFABHiBwAR4gkAEeILABHiDgAR4g8AEeIQABHiEQAR4hIAEeIUABHiFgAR4hcAEeIYABHiGgAR4hsAEeKWABHimAAR4poAEeKcABHinwAR4qAAEeKhABHiogAR4qMAEeKlABHipwAR4qgAEeKpABHiqwAR4qwAEeMnABHjKQAR4ysAEeMtABHjMAAR4zEAEeMyABHjMwAR4zQAEeM2ABHjOAAR4zkAEeM6ABHjPAAR4z0AEeO4ABHjugAR47wAEeO+ABHjwQAR48IAEePDABHjxAAR48UAEePHABHjyQAR48oAEePLABHjzQAR484AEeRhABHkhAAR5KQAEeTEABHkxgAR5MgAEeTKABHkzAAR5M8AEeTQABHk0QAR5NQAEeTVABHk1wAR5NgAEeTaABHk3QAR5N4AEeTfABHk4gAR5OMAEeToABHlAQAR5QoAEeUMABHlDgAR5RcAEeUaABHlHQAR5R8AEeVoABHljAAR5bMAEeXXABHl2gAR5dwAEeXeABHl4AAR5eIAEeXkABHl5QAR5egAEeYBABHmIgAR5iQAEeYmABHmKAAR5ioAEeYsABHmLgAR5jAAEeYyABHmUwAR5lYAEeZZABHmXAAR5l8AEeZiABHmZQAR5mgAEeZrABHmbQAR5ugAEebqABHm7AAR5u4AEebxABHm8gAR5vMAEeb0ABHm9QAR5vcAEeb5ABHm+gAR5vsAEeb9ABHm/gAR53kAEed7ABHnfQAR538AEeeCABHngwAR54QAEeeFABHnhgAR54gAEeeKABHniwAR54wAEeeOABHnjwAR6AoAEegMABHoDwAR6BEAEegUABHoFQAR6BYAEegXABHoGAAR6BoAEegcABHoHQAR6B4AEeggABHoIQAR6DoAEeg7ABHoPAAR6D4AEei5ABHouwAR6L0AEei/ABHowgAR6MMAEejEABHoxQAR6MYAEejIABHoygAR6MsAEejMABHozgAR6M8AEelKABHpTAAR6U4AEelQABHpUwAR6VQAEelVABHpVgAR6VcAEelZABHpWwAR6VwAEeldABHpXwAR6WAAEenbABHp3QAR6d8AEenhABHp5AAR6eUAEenmABHp5wAR6egAEenqABHp7AAR6e0AEenuABHp8AAR6fEAEep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xABH7sgAR+7MAEfu1ABH7twAR+7gAEfu5ABH7uwAR+7wAEfw3ABH8OQAR/DsAEfw9ABH8QAAR/EEAEfxCABH8QwAR/EQAEfxGABH8SAAR/EkAEfxKABH8TAAR/E0AEfzIABH8ygAR/MwAEfzOABH80QAR/NIAEfzTABH81AAR/NUAEfzXABH82QAR/NoAEfzbABH83QAR/N4AEf1ZABH9WwAR/V0AEf1fABH9YgAR/WMAEf1kABH9ZQAR/WYAEf1oABH9agAR/WsAEf1sABH9bgAR/W8AEf3qABH97AAR/e4AEf3wABH98wAR/fQAEf31ABH99gAR/fcAEf35ABH9+wAR/fwAEf39ABH9/wAR/gAAEf57ABH+fQAR/n8AEf6BABH+hAAR/oUAEf6GABH+hwAR/ogAEf6KABH+jAAR/o0AEf6OABH+kAAR/pEAEf8kABH/RwAR/2cAEf+HABH/iQAR/4sAEf+NABH/jwAR/5IAEf+TABH/lAAR/5cAEf+YABH/mgAR/5sAEf+eABH/oQAR/6IAEf+jABH/pgAR/6cAEf+wABH/yQAR/9IAEf/UABH/1gAR/98AEf/iABH/5QAR/+cAEgAwABIAVAASAHsAEgCfABIAogASAKQAEgCmABIAqAASAKoAEgCsABIArQASALAAEgDJABIA6gASAOwAEgDuABIA8AASAPIAEgD0ABIA9gASAPgAEgD6ABIBGwASAR4AEgEhABIBJAASAScAEgEqABIBLQASATAAEgEzABIBNQASAbAAEgGyABIBtAASAbYAEgG5ABIBugASAbsAEgG8ABIBvQASAb8AEgHBABIBwgASAcMAEgHFABIBxgASAkEAEgJDABICRQASAkcAEgJKABICSwASAkwAEgJNABICTgASAlAAEgJSABICUwASAlQAEgJWABICVwASAtIAEgLUABIC1wASAtkAEgLcABIC3QASAt4AEgLfABIC4AASAuIAEgLkABIC5QASAuYAEgLoABIC6QASAwIAEgMDABIDBAASAwYAEgOBABIDgwASA4UAEgOHABIDigASA4sAEgOMABIDjQASA44AEgOQABIDkgASA5MAEgOUABIDlgASA5cAEgQSABIEFAASBBYAEgQYABIEGwASBBwAEgQdABIEHgASBB8AEgQhABIEIwASBCQAEgQlABIEJwASBCgAEgSjABIEpQASBKcAEgSpABIErAASBK0AEgSuABIErwASBLAAEgSyABIEtAASBLUAEgS2ABIEuAASBLkAEgU0ABIFNgASBTgAEgU6ABIFPQASBT4AEgU/ABIFQAASBUEAEgVDABIFRQASBUYAEgVHABIFSQASBUoAEgXFABIFxwASBckAEgXLABIFzgASBc8AEgXQABIF0QASBdIAEgXUABIF1gASBdcAEgXYABIF2gASBdsAEgYkABIGSAASBm8AEgaTABIGlgASBpgAEgaaABIGnAASBp4AEgagABIGoQASBqQAEga9ABIG2gASBtwAEgbeABIG4AASBuIAEgbkABIG5gASBugAEgcFABIHCAASBwsAEgcOABIHEQASBxQAEgcXABIHGgASBxwAEgeXABIHmQASB5sAEgedABIHoAASB6EAEgeiABIHowASB6QAEgemABIHqAASB6kAEgeqABIHrAASB60AEggoABIIKgASCCwAEgguABIIMQASCDIAEggzABIINAASCDUAEgg3ABIIOQASCDoAEgg7ABIIPQASCD4AEgi5ABIIuwASCL0AEgi/ABIIwgASCMMAEgjEABIIxQASCMYAEgjIABIIygASCMsAEgjMABIIzgASCM8AEglKABIJTAASCU4AEglQABIJUwASCVQAEglVABIJVgASCVcAEglZABIJWwASCVwAEgldABIJXwASCWAAEgnbABIJ3QASCd8AEgnhABIJ5AASCeUAEgnmABIJ5wASCegAEgnqABIJ7AASCe0AEgnuABIJ8AASCfEAEgpsABIKbgASCnAAEgpyABIKdQASCnYAEgp3ABIKeAASCnkAEgp7ABIKfQASCn4AEgp/ABIKgQASCoIAEgr9ABIK/wASCwIAEgsEABILBwASCwgAEgsJABILCgASCwsAEgsNABILDwASCxAAEgsRABILEwASCxQAEgunABILygASC+oAEgwKABIMDAASDA4AEgwQABIMEgASDBUAEgwWABIMFwASDBoAEgwbABIMHQASDB4AEgwgABIMIwASDCQAEgwlABIMKAASDCkAEgwuABIMRwASDFAAEgxSABIMVAASDF0AEgxgABIMYwASDGUAEgyuABIM0gASDPkAEg0dABINIAASDSIAEg0kABINJgASDSgAEg0qABINKwASDS4AEg1HABINaAASDWoAEg1sABINbgASDXAAEg1yABINdAASDXYAEg14ABINmQASDZwAEg2fABINogASDaUAEg2oABINqwASDa4AEg2xABINswASDi4AEg4wABIOMgASDjQAEg43ABIOOAASDjkAEg46ABIOOwASDj0AEg4/ABIOQAASDkEAEg5DABIORAASDr8AEg7BABIOwwASDsUAEg7IABIOyQASDsoAEg7LABIOzAASDs4AEg7QABIO0QASDtIAEg7UABIO1QASD1AAEg9SABIPVQASD1cAEg9aABIPWwASD1wAEg9dABIPXgASD2AAEg9iABIPYwASD2QAEg9mABIPZwASD4AAEg+BABIPggASD4QAEg//ABIQAQASEAMAEhAFABIQCAASEAkAEhAKABIQCwASEAwAEhAOABIQEAASEBEAEhASABIQFAASEBUAEhCQABIQkgASEJQAEhCWABIQmQASEJoAEhCbABIQnAASEJ0AEhCfABIQoQASEKIAEhCjABIQpQASEKYAEhEhABIRIwASESUAEhEnABIRKgASESsAEhEsABIRLQASES4AEhEwABIRMgASETMAEhE0ABIRNgASETcAEhGyABIRtAASEbYAEhG4ABIRuwASEbwAEhG9ABIRvgASEb8AEhHBABIRwwASEcQAEhHFABIRxwASEcgAEhJDABISRQASEkcAEhJJABISTAASEk0AEhJOABISTwASElAAEhJSABISVAASElUAEhJWABISWAASElkAEhKiABISxgASEu0AEhMRABITFAASExYAEhMYABITGgASExwAEhMeABITHwASEyIAEhM7ABITWAASE1oAEhNcABITXgASE2AAEhNiABITZAASE2YAEhODABIThgASE4kAEhOMABITjwASE5IAEhOVABITmAASE5oAEhQVABIUFwASFBkAEhQbABIUHgASFB8AEhQgABIUIQASFCIAEhQkABIUJgASFCcAEhQoABIUKgASFCsAEhSmABIUqAASFKoAEhSsABIUrwASFLAAEhSxABIUsgASFLMAEhS1ABIUtwASFLgAEhS5ABIUuwASFLwAEhU3ABIVOQASFTsAEhU9ABIVQAASFUEAEhVCABIVQwASFUQAEhVGABIVSAASFUkAEhVKABIVTAASFU0AEhXIABIVygASFcwAEhXOABIV0QASFdIAEhXTABIV1AASFdUAEhXXABIV2QASFdoAEhXbABIV3QASFd4AEhZZABIWWwASFl0AEhZfABIWYgASFmMAEhZkABIWZQASFmYAEhZoABIWagASFmsAEhZsABIWbgASFm8AEhbqABIW7AASFu4AEhbwABIW8wASFvQAEhb1ABIW9gASFvcAEhb5ABIW+wASFvwAEhb9ABIW/wASFwAAEhd7ABIXfQASF38AEheBABIXhAASF4UAEheGABIXhwASF4gAEheKABIXjAASF40AEheOABIXkAASF5EAEhgkABIYRwASGGcAEhiHABIYiQASGIsAEhiNABIYjwASGJIAEhiTABIYlAASGJcAEhiYABIYmgASGJsAEhidABIYoAASGKEAEhiiABIYpQASGKYAEhirABIYxAASGM0AEhjPABIY0QASGNoAEhjdABIY4AASGOIAEhkrABIZTwASGXYAEhmaABIZnQASGZ8AEhmhABIZowASGaUAEhmnABIZqAASGasAEhnEABIZ5QASGecAEhnpABIZ6wASGe0AEhnvABIZ8QASGfMAEhn1ABIaFgASGhkAEhocABIaHwASGiIAEholABIaKAASGisAEhouABIaMAASGqsAEhqtABIarwASGrEAEhq0ABIatQASGrYAEhq3ABIauAASGroAEhq8ABIavQASGr4AEhrAABIawQASGzwAEhs+ABIbQAASG0IAEhtFABIbRgASG0cAEhtIABIbSQASG0sAEhtNABIbTgASG08AEhtRABIbUgASG80AEhvPABIb0gASG9QAEhvXABIb2AASG9kAEhvaABIb2wASG90AEhvfABIb4AASG+EAEhvjABIb5AASG/0AEhv+ABIb/wASHAEAEhx8ABIcfgASHIAAEhyCABIchQASHIYAEhyHABIciAASHIkAEhyLABIcjQASHI4AEhyPABIckQASHJIAEh0NABIdDwASHREAEh0TABIdFgASHRcAEh0YABIdGQASHRoAEh0cABIdHgASHR8AEh0gABIdIgASHSMAEh2eABIdoAASHaIAEh2kABIdpwASHagAEh2pABIdqgASHasAEh2tABIdrwASHbAAEh2xABIdswASHbQAEh4vABIeMQASHjMAEh41ABIeOAASHjkAEh46ABIeOwASHjwAEh4+ABIeQAASHkEAEh5CABIeRAASHkUAEh7AABIewgASHsQAEh7GABIeyQASHsoAEh7LABIezAASHs0AEh7PABIe0QASHtIAEh7TABIe1QASHtYAEh8fABIfQwASH2oAEh+OABIfkQASH5MAEh+VABIflwASH5kAEh+bABIfnAASH58AEh+4ABIf1QASH9cAEh/ZABIf2wASH90AEh/fABIf4QASH+MAEiAAABIgAwASIAYAEiAJABIgDAASIA8AEiASABIgFQASIBcAEiCSABIglAASIJcAEiCZABIgnAASIJ0AEiCeABIgnwASIKAAEiCiABIgpAASIKUAEiCmABIgqAASIKkAEiCsABIhJwASISkAEiErABIhLQASITAAEiExABIhMgASITMAEiE0ABIhNgASITgAEiE5ABIhOgASITwAEiE9ABIhuAASIboAEiG8ABIhvgASIcEAEiHCABIhwwASIcQAEiHFABIhxwASIckAEiHKABIhywASIc0AEiHOABIiSQASIksAEiJOABIiUAASIlMAEiJUABIiVQASIlYAEiJXABIiWQASIlsAEiJcABIiXQASIl8AEiJgABIi2wASIt0AEiLfABIi4QASIuQAEiLlABIi5gASIucAEiLoABIi6gASIuwAEiLtABIi7gASIvAAEiLxABIjbAASI24AEiNwABIjcgASI3UAEiN2ABIjdwASI3gAEiN5ABIjewASI30AEiN+ABIjfwASI4EAEiOCABIj/QASI/8AEiQBABIkAwASJAYAEiQHABIkCAASJAkAEiQKABIkDAASJA4AEiQPABIkEAASJBIAEiQTABIkpgASJMkAEiTpABIlCQASJQsAEiUNABIlDwASJREAEiUUABIlFQASJRYAEiUZABIlGgASJRwAEiUdABIlHwASJSEAEiUiABIlIwASJSYAEiUnABIlLAASJUUAEiVOABIlUAASJVIAEiVbABIlXgASJWEAEiVjABIlrAASJdAAEiX3ABImGwASJh4AEiYgABImIgASJiQAEiYmABImKAASJikAEiYsABImRQASJmYAEiZoABImagASJmwAEiZuABImcAASJnIAEiZ0ABImdgASJpcAEiaaABImnQASJqAAEiajABImpgASJqkAEiasABImrwASJrEAEicsABInLgASJzAAEicyABInNQASJzYAEic3ABInOAASJzkAEic7ABInPQASJz4AEic/ABInQQASJ0IAEie9ABInvwASJ8EAEifDABInxgASJ8cAEifIABInyQASJ8oAEifMABInzgASJ88AEifQABIn0gASJ9MAEihOABIoUAASKFMAEihVABIoWAASKFkAEihaABIoWwASKFwAEiheABIoYAASKGEAEihiABIoZAASKGUAEih+ABIofwASKIAAEiiCABIo/QASKP8AEikBABIpAwASKQYAEikHABIpCAASKQkAEikKABIpDAASKQ4AEikPABIpEAASKRIAEikTABIpjgASKZAAEimSABIplAASKZcAEimYABIpmQASKZoAEimbABIpnQASKZ8AEimgABIpoQASKaMAEimkABIqHwASKiEAEiojABIqJQASKigAEiopABIqKgASKisAEiosABIqLgASKjAAEioxABIqMgASKjQAEio1ABIqsAASKrIAEiq0ABIqtgASKrkAEiq6ABIquwASKrwAEiq9ABIqvwASKsEAEirCABIqwwASKsUAEirGABIrQQASK0MAEitFABIrRwASK0oAEitLABIrTAASK00AEitOABIrUAASK1IAEitTABIrVAASK1YAEitXABIroAASK8QAEivrABIsDwASLBIAEiwUABIsFgASLBgAEiwaABIsHAASLB0AEiwgABIsOQASLFYAEixYABIsWgASLFwAEixeABIsYAASLGIAEixkABIsgQASLIQAEiyHABIsigASLI0AEiyQABIskwASLJYAEiyYABItEwASLRUAEi0XABItGQASLRwAEi0dABItHgASLR8AEi0gABItIgASLSQAEi0lABItJgASLSgAEi0pABItpAASLaYAEi2oABItqgASLa0AEi2uABItrwASLbAAEi2xABItswASLbUAEi22ABIttwASLbkAEi26ABIuNQASLjcAEi45ABIuOwASLj4AEi4/ABIuQAASLkEAEi5CABIuRAASLkYAEi5HABIuSAASLkoAEi5LABIuxgASLsgAEi7KABIuzAASLs8AEi7QABIu0QASLtIAEi7TABIu1QASLtcAEi7YABIu2QASLtsAEi7cABIvVwASL1kAEi9bABIvXQASL2AAEi9hABIvYgASL2MAEi9kABIvZgASL2gAEi9pABIvagASL2wAEi9tABIv6AASL+oAEi/sABIv7gASL/EAEi/yABIv8wASL/QAEi/1ABIv9wASL/kAEi/6ABIv+wASL/0AEi/+ABIweQASMHsAEjB9ABIwfwASMIIAEjCDABIwhAASMIUAEjCGABIwiAASMIoAEjCLABIwjAASMI4AEjCPABIxIgASMUUAEjFlABIxhQASMYcAEjGJABIxiwASMY0AEjGQABIxkQASMZIAEjGVABIxlgASMZgAEjGZABIxmwASMZ4AEjGfABIxoAASMaMAEjGkABIxqQASMcIAEjHLABIxzQASMc8AEjHYABIx2wASMd4AEjHgABIyKQASMk0AEjJ0ABIymAASMpsAEjKdABIynwASMqEAEjKjABIypQASMqYAEjKpABIywgASMuMAEjLlABIy5wASMukAEjLrABIy7QASMu8AEjLxABIy8wASMxQAEjMXABIzGgASMx0AEjMgABIzIwASMyYAEjMpABIzLAASMy4AEjOpABIzqwASM60AEjOvABIzsgASM7MAEjO0ABIztQASM7YAEjO4ABIzugASM7sAEjO8ABIzvgASM78AEjQ6ABI0PAASND4AEjRAABI0QwASNEQAEjRFABI0RgASNEcAEjRJABI0SwASNEwAEjRNABI0TwASNFAAEjTLABI0zQASNNAAEjTSABI01QASNNYAEjTXABI02AASNNkAEjTbABI03QASNN4AEjTfABI04QASNOIAEjT7ABI0/AASNP0AEjT/ABI1egASNXwAEjV+ABI1gAASNYMAEjWEABI1hQASNYYAEjWHABI1iQASNYsAEjWMABI1jQASNY8AEjWQABI2CwASNg0AEjYPABI2EQASNhQAEjYVABI2FgASNhcAEjYYABI2GgASNhwAEjYdABI2HgASNiAAEjYhABI2nAASNp4AEjagABI2ogASNqUAEjamABI2pwASNqgAEjapABI2qwASNq0AEjauABI2rwASNrEAEjayABI3LQASNy8AEjcxABI3MwASNzYAEjc3ABI3OAASNzkAEjc6ABI3PAASNz4AEjc/ABI3QAASN0IAEjdDABI3vgASN8AAEjfCABI3xAASN8cAEjfIABI3yQASN8oAEjfLABI3zQASN88AEjfQABI30QASN9MAEjfUABI4HQASOEEAEjhoABI4jAASOI8AEjiRABI4kwASOJUAEjiXABI4mQASOJoAEjidABI4tgASONMAEjjVABI41wASONkAEjjbABI43QASON8AEjjhABI4/gASOQEAEjkEABI5BwASOQoAEjkNABI5EAASORMAEjkVABI5kAASOZIAEjmUABI5lgASOZkAEjmaABI5mwASOZwAEjmdABI5nwASOaEAEjmiABI5owASOaUAEjmmABI6IQASOiMAEjolABI6JwASOioAEjorABI6LAASOi0AEjouABI6MAASOjIAEjozABI6NAASOjYAEjo3ABI6sgASOrQAEjq2ABI6uAASOrsAEjq8ABI6vQASOr4AEjq/ABI6wQASOsMAEjrEABI6xQASOscAEjrIABI7QwASO0UAEjtHABI7SQASO0wAEjtNABI7TgASO08AEjtQABI7UgASO1QAEjtVABI7VgASO1gAEjtZABI71AASO9YAEjvYABI72gASO90AEjveABI73wASO+AAEjvhABI74wASO+UAEjvmABI75wASO+kAEjvqABI8ZQASPGcAEjxpABI8awASPG4AEjxvABI8cAASPHEAEjxyABI8dAASPHYAEjx3ABI8eAASPHoAEjx7ABI89gASPPgAEjz6ABI8/AASPP8AEj0AABI9AQASPQIAEj0DABI9BQASPQcAEj0IABI9CQASPQsAEj0MABI9nwASPcIAEj3iABI+AgASPgQAEj4GABI+CAASPgoAEj4NABI+DgASPg8AEj4SABI+EwASPhUAEj4WABI+GAASPhsAEj4cABI+HQASPiAAEj4hABI+JgASPj8AEj5IABI+SgASPkwAEj5VABI+WAASPlsAEj5dABI+pgASPsoAEj7xABI/FQASPxgAEj8aABI/HAASPx4AEj8gABI/IgASPyMAEj8mABI/PwASP2AAEj9iABI/ZAASP2YAEj9oABI/agASP2wAEj9uABI/cAASP5EAEj+UABI/lwASP5oAEj+dABI/oAASP6MAEj+mABI/qQASP6sAEkAmABJAKAASQCoAEkAsABJALwASQDAAEkAxABJAMgASQDMAEkA1ABJANwASQDgAEkA5ABJAOwASQDwAEkC3ABJAuQASQLsAEkC9ABJAwAASQMEAEkDCABJAwwASQMQAEkDGABJAyAASQMkAEkDKABJAzAASQM0AEkFIABJBSgASQU0AEkFPABJBUgASQVMAEkFUABJBVQASQVYAEkFYABJBWgASQVsAEkFcABJBXgASQV8AEkF4ABJBeQASQXoAEkF8ABJB9wASQfkAEkH7ABJB/QASQgAAEkIBABJCAgASQgMAEkIEABJCBgASQggAEkIJABJCCgASQgwAEkINABJCiAASQooAEkKMABJCjgASQpEAEkKSABJCkwASQpQAEkKVABJClwASQpkAEkKaABJCmwASQp0AEkKeABJDGQASQxsAEkMdABJDHwASQyIAEkMjABJDJAASQyUAEkMmABJDKAASQyoAEkMrABJDLAASQy4AEkMvABJDqgASQ6wAEkOuABJDsAASQ7MAEkO0ABJDtQASQ7YAEkO3ABJDuQASQ7sAEkO8ABJDvQASQ78AEkPAABJEOwASRD0AEkQ/ABJEQQASREQAEkRFABJERgASREcAEkRIABJESgASREwAEkRNABJETgASRFAAEkRRABJEmgASRL4AEkTlABJFCQASRQwAEkUOABJFEAASRRIAEkUUABJFFgASRRcAEkUaABJFMwASRVAAEkVSABJFVAASRVYAEkVYABJFWgASRVwAEkVeABJFewASRX4AEkWBABJFhAASRYcAEkWKABJFjQASRZAAEkWSABJGDQASRg8AEkYRABJGEwASRhYAEkYXABJGGAASRhkAEkYaABJGHAASRh4AEkYfABJGIAASRiIAEkYjABJGngASRqAAEkaiABJGpAASRqcAEkaoABJGqQASRqoAEkarABJGrQASRq8AEkawABJGsQASRrMAEka0ABJHLwASRzEAEkczABJHNQASRzgAEkc5ABJHOgASRzsAEkc8ABJHPgASR0AAEkdBABJHQgASR0QAEkdFABJHwAASR8IAEkfEABJHxgASR8kAEkfKABJHywASR8wAEkfNABJHzwASR9EAEkfSABJH0wASR9UAEkfWABJIUQASSFMAEkhVABJIVwASSFoAEkhbABJIXAASSF0AEkheABJIYAASSGIAEkhjABJIZAASSGYAEkhnABJI4gASSOQAEkjmABJI6AASSOsAEkjsABJI7QASSO4AEkjvABJI8QASSPMAEkj0ABJI9QASSPcAEkj4ABJJcwASSXUAEkl3ABJJeQASSXwAEkl9ABJJfgASSX8AEkmAABJJggASSYQAEkmFABJJhgASSYgAEkmJABJKHAASSj8AEkpfABJKfwASSoEAEkqDABJKhQASSocAEkqKABJKiwASSowAEkqPABJKkAASSpIAEkqTABJKlQASSpgAEkqZABJKmgASSp0AEkqeABJKowASSrwAEkrFABJKxwASSskAEkrSABJK1QASStgAEkraABJLIwASS0cAEktuABJLkgASS5UAEkuXABJLmQASS5sAEkudABJLnwASS6AAEkujABJLvAASS90AEkvfABJL4QASS+MAEkvlABJL5wASS+kAEkvrABJL7QASTA4AEkwRABJMFAASTBcAEkwaABJMHQASTCAAEkwjABJMJgASTCgAEkyjABJMpQASTKcAEkypABJMrAASTK0AEkyuABJMrwASTLAAEkyyABJMtAASTLUAEky2ABJMuAASTLkAEk00ABJNNgASTTgAEk06ABJNPQASTT4AEk0/ABJNQAASTUEAEk1DABJNRQASTUYAEk1HABJNSQASTUoAEk3FABJNxwASTcoAEk3MABJNzwASTdAAEk3RABJN0gASTdMAEk3VABJN1wASTdgAEk3ZABJN2wASTdwAEk31ABJN9gASTfcAEk35ABJOdAASTnYAEk54ABJOegASTn0AEk5+ABJOfwASToAAEk6BABJOgwASToUAEk6GABJOhwASTokAEk6KABJPBQASTwcAEk8JABJPCwASTw4AEk8PABJPEAASTxEAEk8SABJPFAASTxYAEk8XABJPGAASTxoAEk8bABJPlgAST5gAEk+aABJPnAAST58AEk+gABJPoQAST6IAEk+jABJPpQAST6cAEk+oABJPqQAST6sAEk+sABJQJwASUCkAElArABJQLQASUDAAElAxABJQMgASUDMAElA0ABJQNgASUDgAElA5ABJQOgASUDwAElA9ABJQuAASULoAElC8ABJQvgASUMEAElDCABJQwwASUMQAElDFABJQxwASUMkAElDKABJQywASUM0AElDOABJRFwASUTsAElFiABJRhgASUYkAElGLABJRjQASUY8AElGRABJRkwASUZQAElGXABJRsAASUc0AElHPABJR0QASUdMAElHVABJR1wASUdkAElHbABJR+AASUfsAElH+ABJSAQASUgQAElIHABJSCgASUg0AElIPABJSigASUowAElKOABJSkAASUpMAElKUABJSlQASUpYAElKXABJSmQASUpsAElKcABJSnQASUp8AElKgABJTGwASUx0AElMfABJTIQASUyQAElMlABJTJgASUycAElMoABJTKgASUywAElMtABJTLgASUzAAElMxABJTrAASU64AElOwABJTsgASU7UAElO2ABJTtwASU7gAElO5ABJTuwASU70AElO+ABJTvwASU8EAElPCABJUPQASVD8AElRCABJURAASVEcAElRIABJUSQASVEoAElRLABJUTQASVE8AElRQABJUUQASVFMAElRUABJUzwASVNEAElTTABJU1QASVNgAElTZABJU2gASVNsAElTcABJU3gASVOAAElThABJU4gASVOQAElTlABJVYAASVWIAElVkABJVZgASVWkAElVqABJVawASVWwAElVtABJVbwASVXEAElVyABJVcwASVXUAElV2ABJV8QASVfMAElX1ABJV9wASVfoAElX7ABJV/AASVf0AElX+ABJWAAASVgIAElYDABJWBAASVgYAElYHABJWGAASVhkAElYbABJWlgASVpgAElaaABJWnAASVp8AElagABJWoQASVqIAElajABJWpQASVqcAElaoABJWqQASVqsAElasABJXJwASVykAElcrABJXLQASVzAAElcxABJXMgASVzMAElc0ABJXNgASVzgAElc5ABJXOgASVzwAElc9ABJXuAASV7oAEle9ABJXvwASV8IAElfDABJXxAASV8UAElfGABJXyAASV8oAElfLABJXzAASV84AElfPABJYYgASWIUAElilABJYxQASWMcAEljJABJYywASWM0AEljPABJY0AASWNEAEljUABJY1QASWNcAEljYABJY2gASWNwAEljdABJY3gASWOEAEljiABJY5wASWQAAElkJABJZCwASWQ0AElkWABJZGQASWRwAElkeABJZZwASWYsAElmyABJZ1gASWdkAElnbABJZ3QASWd8AElnhABJZ4wASWeQAElnnABJaAAASWiEAElojABJaJQASWicAElopABJaKwASWi0AElovABJaMQASWlIAElpVABJaWAASWlsAElpeABJaYQASWmQAElpnABJaagASWmwAElrnABJa6QASWusAElrtABJa8AASWvEAElryABJa8wASWvQAElr2ABJa+AASWvkAElr6ABJa/AASWv0AElt4ABJbegASW3wAElt+ABJbgQASW4IAEluDABJbhAASW4UAEluHABJbiQASW4oAEluLABJbjQASW44AElwJABJcCwASXA4AElwQABJcEwASXBQAElwVABJcFgASXBcAElwZABJcGwASXBwAElwdABJcHwASXCAAElw5ABJcOgASXDsAElw9ABJcuAASXLoAEly8ABJcvgASXMEAElzCABJcwwASXMQAElzFABJcxwASXMkAElzKABJcywASXM0AElzOABJdSQASXUsAEl1NABJdTwASXVIAEl1TABJdVAASXVUAEl1WABJdWAASXVoAEl1bABJdXAASXV4AEl1fABJd2gASXdwAEl3eABJd4AASXeMAEl3kABJd5QASXeYAEl3nABJd6QASXesAEl3sABJd7QASXe8AEl3wABJeawASXm0AEl5vABJecQASXnQAEl51ABJedgASXncAEl54ABJeegASXnwAEl59ABJefgASXoAAEl6BABJe/AASXv4AEl8AABJfAgASXwUAEl8GABJfBwASXwgAEl8JABJfCwASXw0AEl8OABJfDwASXxEAEl8SABJfWwASX38AEl+mABJfygASX80AEl/PABJf0QASX9MAEl/VABJf1wASX9gAEl/bABJf9AASYBEAEmATABJgFQASYBcAEmAZABJgGwASYB0AEmAfABJgPAASYD8AEmBCABJgRQASYEgAEmBLABJgTgASYFEAEmBTABJgzgASYNAAEmDSABJg1AASYNcAEmDYABJg2QASYNoAEmDbABJg3QASYN8AEmDgABJg4QASYOMAEmDkABJhXwASYWEAEmFjABJhZQASYWgAEmFpABJhagASYWsAEmFsABJhbgASYXAAEmFxABJhcgASYXQAEmF1ABJh8AASYfIAEmH0ABJh9gASYfkAEmH6ABJh+wASYfwAEmH9ABJh/wASYgEAEmICABJiAwASYgUAEmIGABJigQASYoMAEmKGABJiiAASYosAEmKMABJijQASYo4AEmKPABJikQASYpMAEmKUABJilQASYpcAEmKYABJjEwASYxUAEmMXABJjGQASYxwAEmMdABJjHgASYx8AEmMgABJjIgASYyQAEmMlABJjJgASYygAEmMpABJjpAASY6YAEmOoABJjqgASY60AEmOuABJjrwASY7AAEmOxABJjswASY7UAEmO2ABJjtwASY7kAEmO6ABJkNQASZDcAEmQ5ABJkOwASZD4AEmQ/ABJkQAASZEEAEmRCABJkRAASZEYAEmRHABJkSAASZEoAEmRLABJk3gASZQEAEmUhABJlQQASZUMAEmVFABJlRwASZUkAEmVLABJlTAASZU0AEmVQABJlUQASZVMAEmVUABJlVwASZVkAEmVaABJlWwASZV4AEmVfABJlZAASZX0AEmWGABJliAASZYoAEmWTABJllgASZZkAEmWbABJl5AASZggAEmYvABJmUwASZlYAEmZYABJmWgASZlwAEmZeABJmYAASZmEAEmZkABJmfQASZp4AEmagABJmogASZqQAEmamABJmqAASZqoAEmasABJmrgASZs8AEmbSABJm1QASZtgAEmbbABJm3gASZuEAEmbkABJm5wASZukAEmdkABJnZgASZ2gAEmdqABJnbQASZ24AEmdvABJncAASZ3EAEmdzABJndQASZ3YAEmd3ABJneQASZ3oAEmf1ABJn9wASZ/kAEmf7ABJn/gASZ/8AEmgAABJoAQASaAIAEmgEABJoBgASaAcAEmgIABJoCgASaAsAEmiGABJoiAASaIsAEmiNABJokAASaJEAEmiSABJokwASaJQAEmiWABJomAASaJkAEmiaABJonAASaJ0AEmi2ABJotwASaLgAEmi6ABJpNQASaTcAEmk5ABJpOwASaT4AEmk/ABJpQAASaUEAEmlCABJpRAASaUYAEmlHABJpSAASaUoAEmlLABJpxgASacgAEmnKABJpzAASac8AEmnQABJp0QASadIAEmnTABJp1QASadcAEmnYABJp2QASadsAEmncABJqVwASalkAEmpbABJqXQASamAAEmphABJqYgASamMAEmpkABJqZgASamgAEmppABJqagASamwAEmptABJq6AASauoAEmrsABJq7gASavEAEmryABJq8wASavQAEmr1ABJq9wASavkAEmr6ABJq+wASav0AEmr+ABJreQASa3sAEmt9ABJrfwASa4IAEmuDABJrhAASa4UAEmuGABJriAASa4oAEmuLABJrjAASa44AEmuPABJr2AASa/wAEmwjABJsRwASbEoAEmxMABJsTgASbFAAEmxSABJsVAASbFUAEmxYABJscQASbI4AEmyQABJskgASbJQAEmyWABJsmAASbJoAEmycABJsuQASbLwAEmy/ABJswgASbMUAEmzIABJsywASbM4AEmzQABJtSwASbU0AEm1PABJtUQASbVQAEm1VABJtVgASbVcAEm1YABJtWgASbVwAEm1dABJtXgASbWAAEm1hABJt3AASbd4AEm3gABJt4gASbeUAEm3mABJt5wASbegAEm3pABJt6wASbe0AEm3uABJt7wASbfEAEm3yABJubQASbm8AEm5xABJucwASbnYAEm53ABJueAASbnkAEm56ABJufAASbn4AEm5/ABJugAASboIAEm6DABJu/gASbwAAEm8CABJvBAASbwcAEm8IABJvCQASbwoAEm8LABJvDQASbw8AEm8QABJvEQASbxMAEm8UABJvjwASb5EAEm+TABJvlQASb5gAEm+ZABJvmgASb5sAEm+cABJvngASb6AAEm+hABJvogASb6QAEm+lABJwIAAScCIAEnAkABJwJgAScCkAEnAqABJwKwAScCwAEnAtABJwLwAScDEAEnAyABJwMwAScDUAEnA2ABJwsQAScLMAEnC1ABJwtwAScLoAEnC7ABJwvAAScL0AEnC+ABJwwAAScMIAEnDDABJwxAAScMYAEnDHABJxWgAScX0AEnGdABJxvQAScb8AEnHBABJxwwASccUAEnHHABJxyAAScckAEnHMABJxzQAScc8AEnHQABJx0gAScdQAEnHVABJx1gAScdkAEnHaABJx3wAScfgAEnIBABJyAwAScgUAEnIOABJyEQASchQAEnIWABJyXwAScoMAEnKqABJyzgASctEAEnLTABJy1QASctcAEnLZABJy2wASctwAEnLfABJy+AAScxkAEnMbABJzHQAScx8AEnMhABJzIwAScyUAEnMnABJzKQASc0oAEnNNABJzUAASc1MAEnNWABJzWQASc1wAEnNfABJzYgASc2QAEnPfABJz4QASc+MAEnPlABJz6AASc+kAEnPqABJz6wASc+wAEnPuABJz8AASc/EAEnPyABJz9AASc/UAEnRwABJ0cgASdHQAEnR2ABJ0eQASdHoAEnR7ABJ0fAASdH0AEnR/ABJ0gQASdIIAEnSDABJ0hQASdIYAEnUBABJ1AwASdQYAEnUIABJ1CwASdQwAEnUNABJ1DgASdQ8AEnURABJ1EwASdRQAEnUVABJ1FwASdRgAEnUxABJ1MgASdTMAEnU1ABJ1sAASdbIAEnW0ABJ1tgASdbkAEnW6ABJ1uwASdbwAEnW9ABJ1vwASdcEAEnXCABJ1wwASdcUAEnXGABJ2QQASdkMAEnZFABJ2RwASdkoAEnZLABJ2TAASdk0AEnZOABJ2UAASdlIAEnZTABJ2VAASdlYAEnZXABJ20gASdtQAEnbWABJ22AASdtsAEnbcABJ23QASdt4AEnbfABJ24QASduMAEnbkABJ25QASducAEnboABJ3YwASd2UAEndnABJ3aQASd2wAEndtABJ3bgASd28AEndwABJ3cgASd3QAEnd1ABJ3dgASd3gAEnd5ABJ39AASd/YAEnf4ABJ3+gASd/0AEnf+ABJ3/wASeAAAEngBABJ4AwASeAUAEngGABJ4BwASeAkAEngKABJ4UwASeHcAEnieABJ4wgASeMUAEnjHABJ4yQASeMsAEnjNABJ4zwASeNAAEnjTABJ47AASeQkAEnkLABJ5DQASeQ8AEnkRABJ5EwASeRUAEnkXABJ5NAASeTcAEnk6ABJ5PQASeUAAEnlDABJ5RgASeUkAEnlLABJ5xgASecgAEnnKABJ5zAASec8AEnnQABJ50QASedIAEnnTABJ51QASedcAEnnYABJ52QASedsAEnncABJ6VwASelkAEnpbABJ6XQASemAAEnphABJ6YgASemMAEnpkABJ6ZgASemgAEnppABJ6agASemwAEnptABJ66AASeuoAEnrsABJ67gASevEAEnryABJ68wASevQAEnr1ABJ69wASevkAEnr6ABJ6+wASev0AEnr+ABJ7eQASe3sAEnt+ABJ7gAASe4MAEnuEABJ7hQASe4YAEnuHABJ7iQASe4sAEnuMABJ7jQASe48AEnuQABJ8CwASfA0AEnwPABJ8EQASfBQAEnwVABJ8FgASfBcAEnwYABJ8GgASfBwAEnwdABJ8HgASfCAAEnwhABJ8nAASfJ4AEnygABJ8ogASfKUAEnymABJ8pwASfKgAEnypABJ8qwASfK0AEnyuABJ8rwASfLEAEnyyABJ9LQASfS8AEn0xABJ9MwASfTYAEn03ABJ9OAASfTkAEn06ABJ9PAASfT4AEn0/ABJ9QAASfUIAEn1DABJ91gASffkAEn4ZABJ+OQASfjsAEn49ABJ+PwASfkEAEn5DABJ+RAASfkUAEn5IABJ+SQASfksAEn5MABJ+TgASflAAEn5RABJ+UgASflUAEn5WABJ+WwASfnQAEn59ABJ+fwASfoEAEn6KABJ+jQASfpAAEn6SABJ+2wASfv8AEn8mABJ/SgASf00AEn9PABJ/UQASf1MAEn9VABJ/VwASf1gAEn9bABJ/dAASf5UAEn+XABJ/mQASf5sAEn+dABJ/nwASf6EAEn+jABJ/pQASf8YAEn/JABJ/zAASf88AEn/SABJ/1QASf9gAEn/bABJ/3gASf+AAEoBbABKAXQASgF8AEoBhABKAZAASgGUAEoBmABKAZwASgGgAEoBqABKAbAASgG0AEoBuABKAcAASgHEAEoDsABKA7gASgPAAEoDyABKA9QASgPYAEoD3ABKA+AASgPkAEoD7ABKA/QASgP4AEoD/ABKBAQASgQIAEoF9ABKBfwASgYIAEoGEABKBhwASgYgAEoGJABKBigASgYsAEoGNABKBjwASgZAAEoGRABKBkwASgZQAEoGtABKBrgASga8AEoGxABKCLAASgi4AEoIwABKCMgASgjUAEoI2ABKCNwASgjgAEoI5ABKCOwASgj0AEoI+ABKCPwASgkEAEoJCABKCvQASgr8AEoLBABKCwwASgsYAEoLHABKCyAASgskAEoLKABKCzAASgs4AEoLPABKC0AASgtIAEoLTABKDTgASg1AAEoNSABKDVAASg1cAEoNYABKDWQASg1oAEoNbABKDXQASg18AEoNgABKDYQASg2MAEoNkABKD3wASg+EAEoPjABKD5QASg+gAEoPpABKD6gASg+sAEoPsABKD7gASg/AAEoPxABKD8gASg/QAEoP1ABKEcAAShHIAEoR0ABKEdgAShHkAEoR6ABKEewAShHwAEoR9ABKEfwAShIEAEoSCABKEgwAShIUAEoSGABKEzwAShPMAEoUaABKFPgAShUEAEoVDABKFRQAShUcAEoVJABKFSwAShUwAEoVPABKFaAAShYUAEoWHABKFiQAShYsAEoWNABKFjwAShZEAEoWTABKFsAAShbMAEoW2ABKFuQAShbwAEoW/ABKFwgAShcUAEoXHABKGQgAShkQAEoZGABKGSAAShksAEoZMABKGTQAShk4AEoZPABKGUQAShlMAEoZUABKGVQAShlcAEoZYABKG0wAShtUAEobXABKG2QAShtwAEobdABKG3gASht8AEobgABKG4gAShuQAEoblABKG5gAShugAEobpABKHZAASh2YAEodoABKHagASh20AEoduABKHbwASh3AAEodxABKHcwASh3UAEod2ABKHdwASh3kAEod6ABKH9QASh/cAEof6ABKH/AASh/8AEogAABKIAQASiAIAEogDABKIBQASiAcAEogIABKICQASiAsAEogMABKIhwASiIkAEoiLABKIjQASiJAAEoiRABKIkgASiJMAEoiUABKIlgASiJgAEoiZABKImgASiJwAEoidABKJGAASiRoAEokcABKJHgASiSEAEokiABKJIwASiSQAEoklABKJJwASiSkAEokqABKJKwASiS0AEokuABKJqQASiasAEomtABKJrwASibIAEomzABKJtAASibUAEom2ABKJuAASiboAEom7ABKJvAASib4AEom/ABKKUgASinUAEoqVABKKtQASircAEoq5ABKKuwASir0AEoq/ABKKwAASisEAEorEABKKxQASiscAEorIABKKywASis0AEorOABKKzwASitIAEorTABKK2AASivEAEor6ABKK/AASiv4AEosHABKLCgASiw0AEosPABKLWAASi3wAEoujABKLxwASi8oAEovMABKLzgASi9AAEovSABKL1AASi9UAEovYABKL8QASjBIAEowUABKMFgASjBgAEowaABKMHAASjB4AEowgABKMIgASjEMAEoxGABKMSQASjEwAEoxPABKMUgASjFUAEoxYABKMWwASjF0AEozYABKM2gASjNwAEozeABKM4QASjOIAEozjABKM5AASjOUAEoznABKM6QASjOoAEozrABKM7QASjO4AEo1pABKNawASjW0AEo1vABKNcgASjXMAEo10ABKNdQASjXYAEo14ABKNegASjXsAEo18ABKNfgASjX8AEo36ABKN/AASjf8AEo4BABKOBAASjgUAEo4GABKOBwASjggAEo4KABKODAASjg0AEo4OABKOEAASjhEAEo4qABKOKwASjiwAEo4uABKOqQASjqsAEo6tABKOrwASjrIAEo6zABKOtAASjrUAEo62ABKOuAASjroAEo67ABKOvAASjr4AEo6/ABKPOgASjzwAEo8+ABKPQAASj0MAEo9EABKPRQASj0YAEo9HABKPSQASj0sAEo9MABKPTQASj08AEo9QABKPywASj80AEo/PABKP0QASj9QAEo/VABKP1gASj9cAEo/YABKP2gASj9wAEo/dABKP3gASj+AAEo/hABKQXAASkF4AEpBgABKQYgASkGUAEpBmABKQZwASkGgAEpBpABKQawASkG0AEpBuABKQbwASkHEAEpByABKQ7QASkO8AEpDxABKQ8wASkPYAEpD3ABKQ+AASkPkAEpD6ABKQ/AASkP4AEpD/ABKRAAASkQIAEpEDABKRTAASkXAAEpGXABKRuwASkb4AEpHAABKRwgASkcQAEpHGABKRyAASkckAEpHMABKR5QASkgIAEpIEABKSBgASkggAEpIKABKSDAASkg4AEpIQABKSLQASkjAAEpIzABKSNgASkjkAEpI8ABKSPwASkkIAEpJEABKSvwASksEAEpLDABKSxQASksgAEpLJABKSygASkssAEpLMABKSzgASktAAEpLRABKS0gASktQAEpLVABKTUAASk1IAEpNVABKTVwASk1oAEpNbABKTXAASk10AEpNeABKTYAASk2IAEpNjABKTZAASk2YAEpNnABKT4gASk+QAEpPmABKT6AASk+sAEpPsABKT7QASk+4AEpPvABKT8QASk/MAEpP0ABKT9QASk/cAEpP4ABKUcwASlHUAEpR4ABKUegASlH0AEpR+ABKUfwASlIAAEpSBABKUgwASlIUAEpSGABKUhwASlIkAEpSKABKVDQASlTEAEpVVABKVeAASlZ8AEpW/ABKV5gASlg0AEpYtABKWUQASlnUAEpZ3ABKWegASlnwAEpZ+ABKWgAASloMAEpaGABKWiAASlooAEpaNABKWjwASlpEAEpaUABKWlwASlpgAEpadABKWtgASlrsAEpa9ABKWwgASlsUAEpbHABKXEAASlzQAEpdbABKXfwASl4IAEpeEABKXhgASl4gAEpeKABKXjAASl40AEpeQABKXqQASl84AEpfQABKX0gASl9QAEpfWABKX2AASl9oAEpfcABKX3gASl+AAEpgFABKYCAASmAsAEpgOABKYEQASmBQAEpgXABKYGgASmB0AEpggABKYIgASmJ0AEpifABKYogASmKQAEpinABKYqAASmKkAEpiqABKYqwASmK0AEpivABKYsAASmLEAEpizABKYtAASmMUAEpjGABKYyAASmUMAEplFABKZRwASmUkAEplMABKZTQASmU4AEplPABKZUAASmVIAEplUABKZVQASmVYAEplYABKZWQASmdQAEpnWABKZ2QASmdsAEpneABKZ3wASmeAAEpnhABKZ4gASmeQAEpnmABKZ5wASmegAEpnqABKZ6wASmfwAEpn9ABKZ/wASmnoAEpp8ABKafgASmoAAEpqDABKahAASmoUAEpqGABKahwASmokAEpqLABKajAASmo0AEpqPABKakAASmwsAEpsNABKbEAASmxIAEpsVABKbFgASmxcAEpsYABKbGQASmxsAEpsdABKbHgASmx8AEpshABKbIgASmzMAEps0ABKbNgASm7EAEpuzABKbtQASm7cAEpu6ABKbuwASm7wAEpu9ABKbvgASm8AAEpvCABKbwwASm8QAEpvGABKbxwASnEIAEpxEABKcRwASnEkAEpxMABKcTQASnE4AEpxPABKcUAASnFIAEpxUABKcVQASnFYAEpxYABKcWQASnHIAEpxzABKcdAASnHYAEpzxABKc8wASnPUAEpz3ABKc+gASnPsAEpz8ABKc/QASnP4AEp0AABKdAgASnQMAEp0EABKdBgASnQcAEp2CABKdhAASnYcAEp2JABKdjAASnY0AEp2OABKdjwASnZAAEp2SABKdlAASnZUAEp2WABKdmAASnZkAEp2zABKdzAASneEAEp3kABKd5wASneoAEp3tABKd8AASngUAEp4IABKeCwASng4AEp4RABKeFAASnhYAEp4pABKeRQASnloAEp50ABKeeQASnwwAEp8vABKfTwASn28AEp9xABKfcwASn3UAEp93ABKfegASn3sAEp98ABKffwASn4AAEp+CABKfgwASn4UAEp+IABKfiQASn4oAEp+NABKfjgASn5MAEp+sABKftQASn7cAEp+5ABKfwgASn8UAEp/IABKfygASoBMAEqA3ABKgXgASoIIAEqCFABKghwASoIkAEqCLABKgjQASoI8AEqCQABKgkwASoKwAEqDNABKgzwASoNEAEqDTABKg1QASoNcAEqDZABKg2wASoN0AEqD+ABKhAQASoQQAEqEHABKhCgASoQ0AEqEQABKhEwASoRYAEqEYABKhkwASoZUAEqGXABKhmQASoZwAEqGdABKhngASoZ8AEqGgABKhogASoaQAEqGlABKhpgASoagAEqGpABKiJAASoiYAEqIoABKiKgASoi0AEqIuABKiLwASojAAEqIxABKiMwASojUAEqI2ABKiNwASojkAEqI6ABKitQASorcAEqK6ABKivAASor8AEqLAABKiwQASosIAEqLDABKixQASoscAEqLIABKiyQASossAEqLMABKi5QASouYAEqLnABKi6QASo2QAEqNmABKjaAASo2oAEqNtABKjbgASo28AEqNwABKjcQASo3MAEqN1ABKjdgASo3cAEqN5ABKjegASo/UAEqP3ABKj+QASo/sAEqP+ABKj/wASpAAAEqQBABKkAgASpAQAEqQGABKkBwASpAgAEqQKABKkCwASpIYAEqSIABKkigASpIwAEqSPABKkkAASpJEAEqSSABKkkwASpJUAEqSXABKkmAASpJkAEqSbABKknAASpRcAEqUZABKlGwASpR0AEqUgABKlIQASpSIAEqUjABKlJAASpSYAEqUoABKlKQASpSoAEqUsABKlLQASpagAEqWqABKlrAASpa4AEqWxABKlsgASpbMAEqW0ABKltQASpbcAEqW5ABKlugASpbsAEqW9ABKlvgASpgcAEqYrABKmUgASpnYAEqZ5ABKmewASpn0AEqZ/ABKmgQASpoMAEqaEABKmhwASpqAAEqa9ABKmvwASpsEAEqbDABKmxQASpscAEqbJABKmywASpugAEqbrABKm7gASpvEAEqb0ABKm9wASpvoAEqb9ABKm/wASp3oAEqd8ABKnfgASp4AAEqeDABKnhAASp4UAEqeGABKnhwASp4kAEqeLABKnjAASp40AEqePABKnkAASqAsAEqgNABKoDwASqBEAEqgUABKoFQASqBYAEqgXABKoGAASqBoAEqgcABKoHQASqB4AEqggABKoIQASqJwAEqieABKooAASqKIAEqilABKopgASqKcAEqioABKoqQASqKsAEqitABKorgASqK8AEqixABKosgASqS0AEqkvABKpMgASqTQAEqk3ABKpOAASqTkAEqk6ABKpOwASqT0AEqk/ABKpQAASqUEAEqlDABKpRAASqb8AEqnBABKpwwASqcUAEqnIABKpyQASqcoAEqnLABKpzAASqc4AEqnQABKp0QASqdIAEqnUABKp1QASqlAAEqpSABKqVAASqlYAEqpZABKqWgASqlsAEqpcABKqXQASql8AEqphABKqYgASqmMAEqplABKqZgASquEAEqrjABKq5QASqucAEqrqABKq6wASquwAEqrtABKq7gASqvAAEqryABKq8wASqvQAEqr2ABKq9wASq4oAEqutABKrzQASq+0AEqvvABKr8QASq/MAEqv1ABKr+AASq/kAEqv6ABKr/QASq/4AEqwAABKsAQASrAQAEqwHABKsCAASrAkAEqwMABKsDQASrBIAEqwrABKsNAASrDYAEqw4ABKsQQASrEQAEqxHABKsSQASrJIAEqy2ABKs3QASrQEAEq0EABKtBgASrQgAEq0KABKtDAASrQ4AEq0PABKtEgASrSsAEq1MABKtTgASrVAAEq1SABKtVAASrVYAEq1YABKtWgASrVwAEq19ABKtgAASrYMAEq2GABKtiQASrYwAEq2PABKtkgASrZUAEq2XABKuEgASrhQAEq4WABKuGAASrhsAEq4cABKuHQASrh4AEq4fABKuIQASriMAEq4kABKuJQASricAEq4oABKuowASrqUAEq6nABKuqQASrqwAEq6tABKurgASrq8AEq6wABKusgASrrQAEq61ABKutgASrrgAEq65ABKvNAASrzYAEq85ABKvOwASrz4AEq8/ABKvQAASr0EAEq9CABKvRAASr0YAEq9HABKvSAASr0oAEq9LABKvZAASr2UAEq9mABKvaAASr+MAEq/lABKv5wASr+kAEq/sABKv7QASr+4AEq/vABKv8AASr/IAEq/0ABKv9QASr/YAEq/4ABKv+QASsHQAErB2ABKweAASsHoAErB9ABKwfgASsH8AErCAABKwgQASsIMAErCFABKwhgASsIcAErCJABKwigASsQUAErEHABKxCQASsQsAErEOABKxDwASsRAAErERABKxEgASsRQAErEWABKxFwASsRgAErEaABKxGwASsZYAErGYABKxmgASsZwAErGfABKxoAASsaEAErGiABKxowASsaUAErGnABKxqAASsakAErGrABKxrAASsicAErIpABKyKwASsi0AErIwABKyMQASsjIAErIzABKyNAASsjYAErI4ABKyOQASsjoAErI8ABKyPQASsoYAErKqABKy0QASsvUAErL4ABKy+gASsvwAErL+ABKzAAASswIAErMDABKzBgASsx8AErM8ABKzPgASs0AAErNCABKzRAASs0YAErNIABKzSgASs2cAErNqABKzbQASs3AAErNzABKzdgASs3kAErN8ABKzfgASs/kAErP7ABKz/QASs/8AErQCABK0AwAStAQAErQFABK0BgAStAgAErQKABK0CwAStAwAErQOABK0DwAStIoAErSMABK0jgAStJAAErSTABK0lAAStJUAErSWABK0lwAStJkAErSbABK0nAAStJ0AErSfABK0oAAStRsAErUdABK1HwAStSEAErUkABK1JQAStSYAErUnABK1KAAStSoAErUsABK1LQAStS4AErUwABK1MQAStawAErWuABK1sAAStbIAErW1ABK1tgAStbcAErW4ABK1uQAStbsAErW9ABK1vgAStb8AErXBABK1wgAStj0AErY/ABK2QQAStkMAErZGABK2RwAStkgAErZJABK2SgAStkwAErZOABK2TwAStlAAErZSABK2UwASts4AErbQABK20gASttQAErbXABK22AASttkAErbaABK22wAStt0AErbfABK24AAStuEAErbjABK25AASt18AErdhABK3ZAASt2YAErdpABK3agASt2sAErdsABK3bQASt28AErdxABK3cgASt3MAErd1ABK3dgASuAkAErgsABK4TAASuGwAErhuABK4cAASuHIAErh0ABK4dwASuHgAErh5ABK4fAASuH0AErh/ABK4gAASuIIAEriFABK4hgASuIcAEriKABK4iwASuJAAEripABK4sgASuLQAEri2ABK4vwASuMIAErjFABK4xwASuRAAErk0ABK5WwASuX8AErmCABK5hAASuYYAErmIABK5igASuYwAErmNABK5kAASuakAErnKABK5zAASuc4AErnQABK50gASudQAErnWABK52AASudoAErn7ABK5/gASugEAEroEABK6BwASugoAEroNABK6EAASuhMAEroVABK6kAASupIAErqUABK6lgASupkAErqaABK6mwASupwAErqdABK6nwASuqEAErqiABK6owASuqUAErqmABK7IQASuyMAErslABK7JwASuyoAErsrABK7LAASuy0AErsuABK7MAASuzIAErszABK7NAASuzYAErs3ABK7sgASu7QAEru3ABK7uQASu7wAEru9ABK7vgASu78AErvAABK7wgASu8QAErvFABK7xgASu8gAErvJABK74gASu+MAErvkABK75gASvGEAErxjABK8ZQASvGcAErxqABK8awASvGwAErxtABK8bgASvHAAErxyABK8cwASvHQAErx2ABK8dwASvPIAErz0ABK89gASvPgAErz7ABK8/AASvP0AErz+ABK8/wASvQEAEr0DABK9BAASvQUAEr0HABK9CAASvYMAEr2FABK9hwASvYkAEr2MABK9jQASvY4AEr2PABK9kAASvZIAEr2UABK9lQASvZYAEr2YABK9mQASvhQAEr4WABK+GAASvhoAEr4dABK+HgASvh8AEr4gABK+IQASviMAEr4lABK+JgASvicAEr4pABK+KgASvqUAEr6nABK+qQASvqsAEr6uABK+rwASvrAAEr6xABK+sgASvrQAEr62ABK+twASvrgAEr66ABK+uwASvwQAEr8oABK/TwASv3MAEr92ABK/eAASv3oAEr98ABK/fgASv4AAEr+BABK/hAASv50AEr+6ABK/vAASv74AEr/AABK/wgASv8QAEr/GABK/yAASv+UAEr/oABK/6wASv+4AEr/xABK/9AASv/cAEr/6ABK//AASwHcAEsB5ABLAewASwH0AEsCAABLAgQASwIIAEsCDABLAhAASwIYAEsCIABLAiQASwIoAEsCMABLAjQASwQgAEsEKABLBDAASwQ4AEsERABLBEgASwRMAEsEUABLBFQASwRcAEsEZABLBGgASwRsAEsEdABLBHgASwZkAEsGbABLBnQASwZ8AEsGiABLBowASwaQAEsGlABLBpgASwagAEsGqABLBqwASwawAEsGuABLBrwASwioAEsIsABLCLwASwjEAEsI0ABLCNQASwjYAEsI3ABLCOAASwjoAEsI8ABLCPQASwj4AEsJAABLCQQASwrwAEsK+ABLCwAASwsIAEsLFABLCxgASwscAEsLIABLCyQASwssAEsLNABLCzgASws8AEsLRABLC0gASw00AEsNPABLDUQASw1MAEsNWABLDVwASw1gAEsNZABLDWgASw1wAEsNeABLDXwASw2AAEsNiABLDYwASw94AEsPgABLD4gASw+QAEsPnABLD6AASw+kAEsPqABLD6wASw+0AEsPvABLD8AASw/EAEsPzABLD9AASxIcAEsSqABLEygASxOoAEsTsABLE7gASxPAAEsTyABLE9QASxPYAEsT3ABLE+gASxPsAEsT9ABLE/gASxQEAEsUEABLFBQASxQYAEsUJABLFCgASxRMAEsUsABLFNQASxTcAEsU5ABLFQgASxUUAEsVIABLFSgASxZMAEsW3ABLF3gASxgIAEsYFABLGBwASxgkAEsYLABLGDQASxg8AEsYQABLGEwASxiwAEsZNABLGTwASxlEAEsZTABLGVQASxlcAEsZZABLGWwASxl0AEsZ+ABLGgQASxoQAEsaHABLGigASxo0AEsaQABLGkwASxpYAEsaYABLHEwASxxUAEscXABLHGQASxxwAEscdABLHHgASxx8AEscgABLHIgASxyQAEsclABLHJgASxygAEscpABLHpAASx6YAEseoABLHqgASx60AEseuABLHrwASx7AAEsexABLHswASx7UAEse2ABLHtwASx7kAEse6ABLINQASyDcAEsg6ABLIPAASyD8AEshAABLIQQASyEIAEshDABLIRQASyEcAEshIABLISQASyEsAEshMABLIZQASyGYAEshnABLIaQASyOQAEsjmABLI6AASyOoAEsjtABLI7gASyO8AEsjwABLI8QASyPMAEsj1ABLI9gASyPcAEsj5ABLI+gASyXUAEsl3ABLJeQASyXsAEsl+ABLJfwASyYAAEsmBABLJggASyYQAEsmGABLJhwASyYgAEsmKABLJiwASygYAEsoIABLKCgASygwAEsoPABLKEAASyhEAEsoSABLKEwASyhUAEsoXABLKGAASyhkAEsobABLKHAASypcAEsqZABLKmwASyp0AEsqgABLKoQASyqIAEsqjABLKpAASyqYAEsqoABLKqQASyqoAEsqsABLKrQASyygAEssqABLLLAASyy4AEssxABLLMgASyzMAEss0ABLLNQASyzcAEss5ABLLOgASyzsAEss9ABLLPgASy4cAEsurABLL0gASy/YAEsv5ABLL+wASy/0AEsv/ABLMAQASzAMAEswEABLMBwASzCAAEsw9ABLMPwASzEEAEsxDABLMRQASzEcAEsxJABLMSwASzGgAEsxrABLMbgASzHEAEsx0ABLMdwASzHoAEsx9ABLMfwASzPoAEsz8ABLM/gASzQAAEs0DABLNBAASzQUAEs0GABLNBwASzQkAEs0LABLNDAASzQ0AEs0PABLNEAASzYsAEs2NABLNjwASzZEAEs2UABLNlQASzZYAEs2XABLNmAASzZoAEs2cABLNnQASzZ4AEs2gABLNoQASzhwAEs4eABLOIAASziIAEs4lABLOJgASzicAEs4oABLOKQASzisAEs4tABLOLgASzi8AEs4xABLOMgASzq0AEs6vABLOsQASzrMAEs62ABLOtwASzrgAEs65ABLOugASzrwAEs6+ABLOvwASzsAAEs7CABLOwwASzz4AEs9AABLPQgASz0QAEs9HABLPSAASz0kAEs9KABLPSwASz00AEs9PABLPUAASz1EAEs9TABLPVAASz88AEs/RABLP0wASz9UAEs/YABLP2QASz9oAEs/bABLP3AASz94AEs/gABLP4QASz+IAEs/kABLP5QAS0GAAEtBiABLQZQAS0GcAEtBqABLQawAS0GwAEtBtABLQbgAS0HAAEtByABLQcwAS0HQAEtB2ABLQdwAS0QoAEtEtABLRTQAS0W0AEtFvABLRcQAS0XMAEtF1ABLRdwAS0XgAEtF5ABLRfAAS0X0AEtF/ABLRgAAS0YMAEtGFABLRhgAS0YcAEtGKABLRiwAS0ZAAEtGpABLRsgAS0bQAEtG2ABLRvwAS0cIAEtHFABLRxwAS0hAAEtI0ABLSWwAS0n8AEtKCABLShAAS0oYAEtKIABLSigAS0owAEtKNABLSkAAS0qkAEtLKABLSzAAS0s4AEtLQABLS0gAS0tQAEtLWABLS2AAS0toAEtL7ABLS/gAS0wEAEtMEABLTBwAS0woAEtMNABLTEAAS0xMAEtMVABLTkAAS05IAEtOUABLTlgAS05kAEtOaABLTmwAS05wAEtOdABLTnwAS06EAEtOiABLTowAS06UAEtOmABLUIQAS1CMAEtQlABLUJwAS1CoAEtQrABLULAAS1C0AEtQuABLUMAAS1DIAEtQzABLUNAAS1DYAEtQ3ABLUsgAS1LQAEtS3ABLUuQAS1LwAEtS9ABLUvgAS1L8AEtTAABLUwgAS1MQAEtTFABLUxgAS1MgAEtTJABLU4gAS1OMAEtTkABLU5gAS1WEAEtVjABLVZQAS1WcAEtVqABLVawAS1WwAEtVtABLVbgAS1XAAEtVyABLVcwAS1XQAEtV2ABLVdwAS1fIAEtX0ABLV9gAS1fgAEtX7ABLV/AAS1f0AEtX+ABLV/wAS1gEAEtYDABLWBAAS1gUAEtYHABLWCAAS1oMAEtaFABLWhwAS1okAEtaMABLWjQAS1o4AEtaPABLWkAAS1pIAEtaUABLWlQAS1pYAEtaYABLWmQAS1xQAEtcWABLXGAAS1xoAEtcdABLXHgAS1x8AEtcgABLXIQAS1yMAEtclABLXJgAS1ycAEtcpABLXKgAS16UAEtenABLXqQAS16sAEteuABLXrwAS17AAEtexABLXsgAS17QAEte2ABLXtwAS17gAEte6ABLXuwAS2AQAEtgoABLYTwAS2HMAEth2ABLYeAAS2HoAEth8ABLYfgAS2IAAEtiBABLYhAAS2J0AEti6ABLYvAAS2L4AEtjAABLYwgAS2MQAEtjGABLYyAAS2OUAEtjoABLY6wAS2O4AEtjxABLY9AAS2PcAEtj6ABLY/AAS2XcAEtl5ABLZewAS2X0AEtmAABLZgQAS2YIAEtmDABLZhAAS2YYAEtmIABLZiQAS2YoAEtmMABLZjQAS2ggAEtoKABLaDQAS2g8AEtoSABLaEwAS2hQAEtoVABLaFgAS2hgAEtoaABLaGwAS2hwAEtoeABLaHwAS2poAEtqcABLangAS2qAAEtqjABLapAAS2qUAEtqmABLapwAS2qkAEtqrABLarAAS2q0AEtqvABLasAAS2ysAEtstABLbMAAS2zIAEts1ABLbNgAS2zcAEts4ABLbOQAS2zsAEts9ABLbPgAS2z8AEttBABLbQgAS270AEtu/ABLbwQAS28MAEtvGABLbxwAS28gAEtvJABLbygAS28wAEtvOABLbzwAS29AAEtvSABLb0wAS3E4AEtxQABLcUgAS3FQAEtxXABLcWAAS3FkAEtxaABLcWwAS3F0AEtxfABLcYAAS3GEAEtxjABLcZAAS3N8AEtzhABLc5AAS3OYAEtzpABLc6gAS3OsAEtzsABLc7QAS3O8AEtzxABLc8gAS3PMAEtz1ABLc9gAS3YkAEt2sABLdzAAS3ewAEt3uABLd8AAS3fIAEt30ABLd9wAS3fgAEt35ABLd/AAS3f0AEt3/ABLeAAAS3gIAEt4FABLeBgAS3gcAEt4KABLeCwAS3hQAEt4tABLeNgAS3jgAEt46ABLeQwAS3kYAEt5JABLeSwAS3pQAEt64ABLe3wAS3wMAEt8GABLfCAAS3woAEt8MABLfDgAS3xAAEt8RABLfFAAS3y0AEt9OABLfUAAS31IAEt9UABLfVgAS31gAEt9aABLfXAAS314AEt9/ABLfggAS34UAEt+IABLfiwAS344AEt+RABLflAAS35cAEt+ZABLgFAAS4BYAEuAYABLgGgAS4B0AEuAeABLgHwAS4CAAEuA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HABL6SgAS+k0AEvpQABL6UwAS+lYAEvpYABL60wAS+tUAEvrXABL62QAS+twAEvrdABL63gAS+t8AEvrgABL64gAS+uQAEvrlABL65gAS+ugAEvrpABL7ZAAS+2YAEvtoABL7agAS+20AEvtuABL7bwAS+3AAEvtxABL7cwAS+3UAEvt2ABL7dwAS+3kAEvt6ABL79QAS+/cAEvv6ABL7/AAS+/8AEvwAABL8AQAS/AIAEvwDABL8BQAS/AcAEvwIABL8CQAS/AsAEvwMABL8JQAS/CYAEvwnABL8KQAS/KQAEvymABL8qAAS/KoAEvytABL8rgAS/K8AEvywABL8sQAS/LMAEvy1ABL8tgAS/LcAEvy5ABL8ugAS/TUAEv03ABL9OQAS/TsAEv0+ABL9PwAS/UAAEv1BABL9QgAS/UQAEv1GABL9RwAS/UgAEv1KABL9SwAS/cYAEv3IABL9ygAS/cwAEv3PABL90AAS/dEAEv3SABL90wAS/dUAEv3XABL92AAS/dkAEv3bABL93AAS/lcAEv5ZABL+WwAS/l0AEv5gABL+YQAS/mIAEv5jABL+ZAAS/mYAEv5oABL+aQAS/moAEv5sABL+bQAS/ugAEv7qABL+7AAS/u4AEv7xABL+8gAS/vMAEv70ABL+9QAS/vcAEv75ABL++gAS/vsAEv79ABL+/gAS/0cAEv9rABL/kgAS/7YAEv+5ABL/uwAS/70AEv+/ABL/wQAS/8MAEv/EABL/xwAS/+AAEv/9ABL//wATAAEAEwADABMABQATAAcAEwAJABMACwATACgAEwArABMALgATADEAEwA0ABMANwATADoAEwA9ABMAPwATALoAEwC8ABMAvgATAMAAEwDDABMAxAATAMUAEwDGABMAxwATAMkAEwDLABMAzAATAM0AEwDPABMA0AATAUsAEwFNABMBTwATAVEAEwFUABMBVQATAVYAEwFXABMBWAATAVoAEwFcABMBXQATAV4AEwFgABMBYQATAdwAEwHeABMB4AATAeIAEwHlABMB5gATAecAEwHoABMB6QATAesAEwHtABMB7gATAe8AEwHxABMB8gATAm0AEwJvABMCcgATAnQAEwJ3ABMCeAATAnkAEwJ6ABMCewATAn0AEwJ/ABMCgAATAoEAEwKDABMChAATAv8AEwMBABMDAwATAwUAEwMIABMDCQATAwoAEwMLABMDDAATAw4AEwMQABMDEQATAxIAEwMUABMDFQATA5AAEwOSABMDlAATA5YAEwOZABMDmgATA5sAEwOcABMDnQATA58AEwOhABMDogATA6MAEwOlABMDpgATBCEAEwQjABMEJQATBCcAEwQqABMEKwATBCwAEwQtABMELgATBDAAEwQyABMEMwATBDQAEwQ2ABMENwATBMoAEwTtABMFDQATBS0AEwUvABMFMQATBTMAEwU1ABMFNwATBTgAEwU5ABMFPAATBT0AEwU/ABMFQAATBUIAEwVEABMFRQATBUYAEwVJABMFSgATBU8AEwVoABMFcQATBXMAEwV1ABMFfgATBYEAEwWEABMFhgATBc8AEwXzABMGGgATBj4AEwZBABMGQwATBkUAEwZHABMGSQATBksAEwZMABMGTwATBmgAEwaJABMGiwATBo0AEwaPABMGkQATBpMAEwaVABMGlwATBpkAEwa6ABMGvQATBsAAEwbDABMGxgATBskAEwbMABMGzwATBtIAEwbUABMHTwATB1EAEwdTABMHVQATB1gAEwdZABMHWgATB1sAEwdcABMHXgATB2AAEwdhABMHYgATB2QAEwdlABMH4AATB+IAEwfkABMH5gATB+kAEwfqABMH6wATB+wAEwftABMH7wATB/EAEwfyABMH8wATB/UAEwf2ABMIcQATCHMAEwh2ABMIeAATCHsAEwh8ABMIfQATCH4AEwh/ABMIgQATCIMAEwiEABMIhQATCIcAEwiIABMIoQATCKIAEwijABMIpQATCSAAEwkiABMJJAATCSYAEwkpABMJKgATCSsAEwksABMJLQATCS8AEwkxABMJMgATCTMAEwk1ABMJNgATCbEAEwmzABMJtQATCbcAEwm6ABMJuwATCbwAEwm9ABMJvgATCcAAEwnCABMJwwATCcQAEwnGABMJxwATCkIAEwpEABMKRgATCkgAEwpLABMKTAATCk0AEwpOABMKTwATClEAEwpTABMKVAATClUAEwpXABMKWAATCtMAEwrVABMK1wATCtkAEwrcABMK3QATCt4AEwrfABMK4AATCuIAEwrkABMK5QATCuYAEwroABMK6QATC2QAEwtmABMLaAATC2oAEwttABMLbgATC28AEwtwABMLcQATC3MAEwt1ABMLdgATC3cAEwt5ABMLegATC8MAEwvnABMMDgATDDIAEww1ABMMNwATDDkAEww7ABMMPQATDD8AEwxAABMMQwATDFwAEwx5ABMMewATDH0AEwx/ABMMgQATDIMAEwyFABMMhwATDKQAEwynABMMqgATDK0AEwywABMMswATDLYAEwy5ABMMuwATDTYAEw04ABMNOgATDTwAEw0/ABMNQAATDUEAEw1CABMNQwATDUUAEw1HABMNSAATDUkAEw1LABMNTAATDccAEw3JABMNywATDc0AEw3QABMN0QATDdIAEw3TABMN1AATDdYAEw3YABMN2QATDdoAEw3cABMN3QATDlgAEw5aABMOXAATDl4AEw5hABMOYgATDmMAEw5kABMOZQATDmcAEw5pABMOagATDmsAEw5tABMObgATDukAEw7rABMO7QATDu8AEw7yABMO8wATDvQAEw71ABMO9gATDvgAEw76ABMO+wATDvwAEw7+ABMO/wATD3oAEw98ABMPfgATD4AAEw+DABMPhAATD4UAEw+GABMPhwATD4kAEw+LABMPjAATD40AEw+PABMPkAATEAsAExANABMQDwATEBEAExAUABMQFQATEBYAExAXABMQGAATEBoAExAcABMQHQATEB4AExAgABMQIQATEJwAExCeABMQoAATEKIAExClABMQpgATEKcAExCoABMQqQATEKsAExCtABMQrgATEK8AExCxABMQsgATEUUAExFoABMRiAATEagAExGqABMRrAATEa4AExGwABMRsgATEbMAExG0ABMRtwATEbgAExG6ABMRuwATEb0AExG/ABMRwAATEcEAExHEABMRxQATEcoAExHjABMR7AATEe4AExHwABMR+QATEfwAExH/ABMSAQATEkoAExJuABMSlQATErkAExK8ABMSvgATEsAAExLCABMSxAATEsYAExLHABMSygATEuMAExMEABMTBgATEwgAExMKABMTDAATEw4AExMQABMTEgATExQAExM1ABMTOAATEzsAExM+ABMTQQATE0QAExNHABMTSgATE00AExNPABMTygATE8wAExPOABMT0AATE9MAExPUABMT1QATE9YAExPXABMT2QATE9sAExPcABMT3QATE98AExPgABMUWwATFF0AExRfABMUYQATFGQAExRlABMUZgATFGcAExRoABMUagATFGwAExRtABMUbgATFHAAExRxABMU7AATFO4AExTxABMU8wATFPYAExT3ABMU+AATFPkAExT6ABMU/AATFP4AExT/ABMVAAATFQIAExUDABMVHAATFR0AExUeABMVIAATFZsAExWdABMVnwATFaEAExWkABMVpQATFaYAExWnABMVqAATFaoAExWsABMVrQATFa4AExWwABMVsQATFiwAExYuABMWMAATFjIAExY1ABMWNgATFjcAExY4ABMWOQATFjsAExY9ABMWPgATFj8AExZBABMWQgATFr0AExa/ABMWwQATFsMAExbGABMWxwATFsgAExbJABMWygATFswAExbOABMWzwATFtAAExbSABMW0wATF04AExdQABMXUgATF1QAExdXABMXWAATF1kAExdaABMXWwATF10AExdfABMXYAATF2EAExdjABMXZAATF98AExfhABMX4wATF+UAExfoABMX6QATF+oAExfrABMX7AATF+4AExfwABMX8QATF/IAExf0ABMX9QATGD4AExhiABMYiQATGK0AExiwABMYsgATGLQAExi2ABMYuAATGLoAExi7ABMYvgATGNcAExj0ABMY9gATGPgAExj6ABMY/AATGP4AExkAABMZAgATGR8AExkiABMZJQATGSgAExkrABMZLgATGTEAExk0ABMZNgATGbEAExmzABMZtQATGbcAExm6ABMZuwATGbwAExm9ABMZvgATGcAAExnCABMZwwATGcQAExnGABMZxwATGkIAExpEABMaRgATGkgAExpLABMaTAATGk0AExpOABMaTwATGlEAExpTABMaVAATGlUAExpXABMaWAATGtMAExrVABMa1wATGtkAExrcABMa3QATGt4AExrfABMa4AATGuIAExrkABMa5QATGuYAExroABMa6QATG2QAExtmABMbaAATG2oAExttABMbbgATG28AExtwABMbcQATG3MAExt1ABMbdgATG3cAExt5ABMbegATG/UAExv3ABMb+QATG/sAExv+ABMb/wATHAAAExwBABMcAgATHAQAExwGABMcBwATHAgAExwKABMcCwATHIYAExyIABMcigATHIwAExyPABMckAATHJEAExySABMckwATHJUAExyXABMcmAATHJkAExybABMcnAATHRcAEx0ZABMdGwATHR0AEx0gABMdIQATHSIAEx0jABMdJAATHSYAEx0oABMdKQATHSoAEx0sABMdLQATHcAAEx3jABMeAwATHiMAEx4lABMeJwATHikAEx4rABMeLQATHi4AEx4vABMeMgATHjMAEx41ABMeNgATHjgAEx46ABMeOwATHjwAEx4/ABMeQAATHkUAEx5eABMeZwATHmkAEx5rABMedAATHncAEx56ABMefAATHsUAEx7pABMfEAATHzQAEx83ABMfOQATHzsAEx89ABMfPwATH0EAEx9CABMfRQATH14AEx9/ABMfgQATH4MAEx+FABMfhwATH4kAEx+LABMfjQATH48AEx+wABMfswATH7YAEx+5ABMfvAATH78AEx/CABMfxQATH8gAEx/KABMgRQATIEcAEyBJABMgSwATIE4AEyBPABMgUAATIFEAEyBSABMgVAATIFYAEyBXABMgWAATIFoAEyBbABMg1gATINgAEyDaABMg3AATIN8AEyDgABMg4QATIOIAEyDjABMg5QATIOcAEyDoABMg6QATIOsAEyDsABMhZwATIWkAEyFsABMhbgATIXEAEyFyABMhcwATIXQAEyF1ABMhdwATIXkAEyF6ABMhewATIX0AEyF+ABMhlwATIZgAEyGZABMhmwATIhYAEyIYABMiGgATIhwAEyIfABMiIAATIiEAEyIiABMiIwATIiUAEyInABMiKAATIikAEyIrABMiLAATIqcAEyKpABMiqwATIq0AEyKwABMisQATIrIAEyKzABMitAATIrYAEyK4ABMiuQATIroAEyK8ABMivQATIzgAEyM6ABMjPAATIz4AEyNBABMjQgATI0MAEyNEABMjRQATI0cAEyNJABMjSgATI0sAEyNNABMjTgATI8kAEyPLABMjzQATI88AEyPSABMj0wATI9QAEyPVABMj1gATI9gAEyPaABMj2wATI9wAEyPeABMj3wATJFoAEyRcABMkXgATJGAAEyRjABMkZAATJGUAEyRmABMkZwATJGkAEyRrABMkbAATJG0AEyRvABMkcAATJLkAEyTdABMlBAATJSgAEyUrABMlLQATJS8AEyUxABMlMwATJTUAEyU2ABMlOQATJVIAEyVvABMlcQATJXMAEyV1ABMldwATJXkAEyV7ABMlfQATJZoAEyWdABMloAATJaMAEyWmABMlqQATJawAEyWvABMlsQATJiwAEyYuABMmMAATJjIAEyY1ABMmNgATJjcAEyY4ABMmOQATJjsAEyY9ABMmPgATJj8AEyZBABMmQgATJr0AEya/ABMmwQATJsMAEybGABMmxwATJsgAEybJABMmygATJswAEybOABMmzwATJtAAEybSABMm0wATJ04AEydQABMnUgATJ1QAEydXABMnWAATJ1kAEydaABMnWwATJ10AEydfABMnYAATJ2EAEydjABMnZAATJ98AEyfhABMn4wATJ+UAEyfoABMn6QATJ+oAEyfrABMn7AATJ+4AEyfwABMn8QATJ/IAEyf0ABMn9QATKHAAEyhyABModAATKHYAEyh5ABMoegATKHsAEyh8ABMofQATKH8AEyiBABMoggATKIMAEyiFABMohgATKQEAEykDABMpBQATKQcAEykKABMpCwATKQwAEykNABMpDgATKRAAEykSABMpEwATKRQAEykWABMpFwATKZIAEymUABMplgATKZgAEymbABMpnAATKZ0AEymeABMpnwATKaEAEymjABMppAATKaUAEymnABMpqAATKjsAEypeABMqfgATKp4AEyqgABMqogATKqQAEyqmABMqqAATKqkAEyqqABMqrQATKq4AEyqwABMqsQATKrMAEyq1ABMqtgATKrcAEyq6ABMquwATKsAAEyrZABMq4gATKuQAEyrmABMq7wATKvIAEyr1ABMq9wATK0AAEytkABMriwATK68AEyuyABMrtAATK7YAEyu4ABMrugATK7wAEyu9ABMrwAATK9kAEyv6ABMr/AATK/4AEywAABMsAgATLAQAEywGABMsCAATLAoAEywrABMsLgATLDEAEyw0ABMsNwATLDoAEyw9ABMsQAATLEMAEyxFABMswAATLMIAEyzEABMsxgATLMkAEyzKABMsywATLMwAEyzNABMszwATLNEAEyzSABMs0wATLNUAEyzWABMtUQATLVMAEy1VABMtVwATLVoAEy1bABMtXAATLV0AEy1eABMtYAATLWIAEy1jABMtZAATLWYAEy1nABMt4gATLeQAEy3nABMt6QATLewAEy3tABMt7gATLe8AEy3wABMt8gATLfQAEy31ABMt9gATLfgAEy35ABMuEgATLhMAEy4UABMuFgATLpEAEy6TABMulQATLpcAEy6aABMumwATLpwAEy6dABMungATLqAAEy6iABMuowATLqQAEy6mABMupwATLyIAEy8kABMvJgATLygAEy8rABMvLAATLy0AEy8uABMvLwATLzEAEy8zABMvNAATLzUAEy83ABMvOAATL7MAEy+1ABMvtwATL7kAEy+8ABMvvQATL74AEy+/ABMvwAATL8IAEy/EABMvxQATL8YAEy/IABMvyQATMEQAEzBGABMwSAATMEoAEzBNABMwTgATME8AEzBQABMwUQATMFMAEzBVABMwVgATMFcAEzBZABMwWgATMNUAEzDXABMw2QATMNsAEzDeABMw3wATMOAAEzDhABMw4gATMOQAEzDmABMw5wATMOgAEzDqABMw6wATMTQAEzFYABMxfwATMaMAEzGmABMxqAATMaoAEzGsABMxrgATMbAAEzGxABMxtAATMc0AEzHqABMx7AATMe4AEzHwABMx8gATMfQAEzH2ABMx+AATMhUAEzIYABMyGwATMh4AEzIhABMyJAATMicAEzIqABMyLAATMqcAEzKpABMyqwATMq0AEzKwABMysQATMrIAEzKzABMytAATMrYAEzK4ABMyuQATMroAEzK8ABMyvQATMzgAEzM6ABMzPAATMz4AEzNBABMzQgATM0MAEzNEABMzRQATM0cAEzNJABMzSgATM0sAEzNNABMzTgATM8kAEzPLABMzzQATM88AEzPSABMz0wATM9QAEzPVABMz1gATM9gAEzPaABMz2wATM9wAEzPeABMz3wATNFoAEzRcABM0XgATNGAAEzRjABM0ZAATNGUAEzRmABM0ZwATNGkAEzRrABM0bAATNG0AEzRvABM0cAATNOsAEzTtABM07wATNPEAEzT0ABM09QATNPYAEzT3ABM0+AATNPoAEzT8ABM0/QATNP4AEzUAABM1AQATNXwAEzV+ABM1gAATNYIAEzWFABM1hgATNYcAEzWIABM1iQATNYsAEzWNABM1jgATNY8AEzWRABM1kgATNg0AEzYPABM2EQATNhMAEzYWABM2FwATNhgAEzYZABM2GgATNhwAEzYeABM2HwATNiAAEzYiABM2IwATNrYAEzbZABM2+QATNxkAEzcbABM3HQATNx8AEzchABM3IwATNyQAEzclABM3KAATNykAEzcrABM3LAATNy4AEzcwABM3MQATNzIAEzc1ABM3NgATNzsAEzdUABM3XQATN18AEzdhABM3agATN20AEzdwABM3cgATN7sAEzffABM4BgATOCoAEzgtABM4LwATODEAEzgzABM4NQATODcAEzg4ABM4OwATOFQAEzh1ABM4dwATOHkAEzh7ABM4fQATOH8AEziBABM4gwATOIUAEzimABM4qQATOKwAEzivABM4sgATOLUAEzi4ABM4uwATOL4AEzjAABM5OwATOT0AEzk/ABM5QQATOUQAEzlFABM5RgATOUcAEzlIABM5SgATOUwAEzlNABM5TgATOVAAEzlRABM5zAATOc4AEznQABM50gATOdUAEznWABM51wATOdgAEznZABM52wATOd0AEzneABM53wATOeEAEzniABM6XQATOl8AEzpiABM6ZAATOmcAEzpoABM6aQATOmoAEzprABM6bQATOm8AEzpwABM6cQATOnMAEzp0ABM6jQATOo4AEzqPABM6kQATOwwAEzsOABM7EAATOxIAEzsVABM7FgATOxcAEzsYABM7GQATOxsAEzsdABM7HgATOx8AEzshABM7IgATO50AEzufABM7oQATO6MAEzumABM7pwATO6gAEzupABM7qgATO6wAEzuuABM7rwATO7AAEzuyABM7swATPC4AEzwwABM8MgATPDQAEzw3ABM8OAATPDkAEzw6ABM8OwATPD0AEzw/ABM8QAATPEEAEzxDABM8RAATPL8AEzzBABM8wwATPMUAEzzIABM8yQATPMoAEzzLABM8zAATPM4AEzzQABM80QATPNIAEzzUABM81QATPVAAEz1SABM9VAATPVYAEz1ZABM9WgATPVsAEz1cABM9XQATPV8AEz1hABM9YgATPWMAEz1lABM9ZgATPa8AEz3TABM9+gATPh4AEz4hABM+IwATPiUAEz4nABM+KQATPisAEz4sABM+LwATPkgAEz5lABM+ZwATPmkAEz5rABM+bQATPm8AEz5xABM+cwATPpAAEz6TABM+lgATPpkAEz6cABM+nwATPqIAEz6lABM+pwATPyIAEz8kABM/JgATPygAEz8rABM/LAATPy0AEz8uABM/LwATPzEAEz8zABM/NAATPzUAEz83ABM/OAATP7MAEz+1ABM/twATP7kAEz+8ABM/vQATP74AEz+/ABM/wAATP8IAEz/EABM/xQATP8YAEz/IABM/yQATQEQAE0BGABNASAATQEoAE0BNABNATgATQE8AE0BQABNAUQATQFMAE0BVABNAVgATQFcAE0BZABNAWgATQNUAE0DXABNA2QATQNsAE0DeABNA3wATQOAAE0DhABNA4gATQOQAE0DmABNA5wATQOgAE0DqABNA6wATQWYAE0FoABNBagATQWwAE0FvABNBcAATQXEAE0FyABNBcwATQXUAE0F3ABNBeAATQXkAE0F7ABNBfAATQfcAE0H5ABNB+wATQf0AE0IAABNCAQATQgIAE0IDABNCBAATQgYAE0IIABNCCQATQgoAE0IMABNCDQATQogAE0KKABNCjAATQo4AE0KRABNCkgATQpMAE0KUABNClQATQpcAE0KZABNCmgATQpsAE0KdABNCngATQzEAE0NUABNDdAATQ5QAE0OWABNDmAATQ5oAE0OcABNDngATQ58AE0OgABNDowATQ6QAE0OmABNDpwATQ6kAE0OrABNDrAATQ60AE0OwABNDsQATQ7YAE0PPABND2AATQ9oAE0PcABND5QATQ+gAE0PrABND7QATRDYAE0RaABNEgQATRKUAE0SoABNEqgATRKwAE0SuABNEsAATRLIAE0SzABNEtgATRM8AE0TwABNE8gATRPQAE0T2ABNE+AATRPoAE0T8ABNE/gATRQAAE0UhABNFJAATRScAE0UqABNFLQATRTAAE0UzABNFNgATRTkAE0U7ABNFtgATRbgAE0W6ABNFvAATRb8AE0XAABNFwQATRcIAE0XDABNFxQATRccAE0XIABNFyQATRcsAE0XMABNGRwATRkkAE0ZLABNGTQATRlAAE0ZRABNGUgATRlMAE0ZUABNGVgATRlgAE0ZZABNGWgATRlwAE0ZdABNG2AATRtoAE0bdABNG3wATRuIAE0bjABNG5AATRuUAE0bmABNG6AATRuoAE0brABNG7AATRu4AE0bvABNHCAATRwkAE0cKABNHDAATR4cAE0eJABNHiwATR40AE0eQABNHkQATR5IAE0eTABNHlAATR5YAE0eYABNHmQATR5oAE0ecABNHnQATSBgAE0gaABNIHAATSB4AE0ghABNIIgATSCMAE0gkABNIJQATSCcAE0gpABNIKgATSCsAE0gtABNILgATSKkAE0irABNIrQATSK8AE0iyABNIswATSLQAE0i1ABNItgATSLgAE0i6ABNIuwATSLwAE0i+ABNIvwATSToAE0k8ABNJPgATSUAAE0lDABNJRAATSUUAE0lGABNJRwATSUkAE0lLABNJTAATSU0AE0lPABNJUAATScsAE0nNABNJzwATSdEAE0nUABNJ1QATSdYAE0nXABNJ2AATSdoAE0ncABNJ3QATSd4AE0ngABNJ4QATSioAE0pOABNKdQATSpkAE0qcABNKngATSqAAE0qiABNKpAATSqYAE0qnABNKqgATSsMAE0rgABNK4gATSuQAE0rmABNK6AATSuoAE0rsABNK7gATSwsAE0sOABNLEQATSxQAE0sXABNLGgATSx0AE0sgABNLIgATS50AE0ufABNLogATS6QAE0unABNLqAATS6kAE0uqABNLqwATS60AE0uvABNLsAATS7EAE0uzABNLtAATTC8AE0wxABNMMwATTDUAE0w4ABNMOQATTDoAE0w7ABNMPAATTD4AE0xAABNMQQATTEIAE0xEABNMRQATTMAAE0zCABNMxAATTMYAE0zJABNMygATTMsAE0zMABNMzQATTM8AE0zRABNM0gATTNMAE0zVABNM1gATTVEAE01TABNNVgATTVgAE01bABNNXAATTV0AE01eABNNXwATTWEAE01jABNNZAATTWUAE01nABNNaAATTeMAE03lABNN5wATTekAE03sABNN7QATTe4AE03vABNN8AATTfIAE030ABNN9QATTfYAE034ABNN+QATTnQAE052ABNOeAATTnoAE059ABNOfgATTn8AE06AABNOgQATToMAE06FABNOhgATTocAE06JABNOigATTwUAE08HABNPCQATTwsAE08OABNPDwATTxAAE08RABNPEgATTxQAE08WABNPFwATTxgAE08aABNPGwATT64AE0/RABNP8QATUBEAE1ATABNQFQATUBcAE1AZABNQGwATUBwAE1AdABNQIAATUCEAE1AjABNQJAATUCYAE1AoABNQKQATUCoAE1AtABNQLgATUDMAE1BMABNQVQATUFcAE1BZABNQYgATUGUAE1BoABNQagATULMAE1DXABNQ/gATUSIAE1ElABNRJwATUSkAE1ErABNRLQATUS8AE1EwABNRMwATUUwAE1FtABNRbwATUXEAE1FzABNRdQATUXcAE1F5ABNRewATUX0AE1GeABNRoQATUaQAE1GnABNRqgATUa0AE1GwABNRswATUbYAE1G4ABNSMwATUjUAE1I3ABNSOQATUjwAE1I9ABNSPgATUj8AE1JAABNSQgATUkQAE1JFABNSRgATUkgAE1JJABNSxAATUsYAE1LIABNSygATUs0AE1LOABNSzwATUtAAE1LRABNS0wATUtUAE1LWABNS1wATUtkAE1LaABNTVQATU1cAE1NaABNTXAATU18AE1NgABNTYQATU2IAE1NjABNTZQATU2cAE1NoABNTaQATU2sAE1NsABNThQATU4YAE1OHABNTiQATVAQAE1QGABNUCAATVAoAE1QNABNUDgATVA8AE1QQABNUEQATVBMAE1QVABNUFgATVBcAE1QZABNUGgATVJUAE1SXABNUmQATVJsAE1SeABNUnwATVKAAE1ShABNUogATVKQAE1SmABNUpwATVKgAE1SqABNUqwATVSYAE1UoABNVKgATVSwAE1UvABNVMAATVTEAE1UyABNVMwATVTUAE1U3ABNVOAATVTkAE1U7ABNVPAATVbcAE1W5ABNVuwATVb0AE1XAABNVwQATVcIAE1XDABNVxAATVcYAE1XIABNVyQATVcoAE1XMABNVzQATVkgAE1ZKABNWTAATVk4AE1ZRABNWUgATVlMAE1ZUABNWVQATVlcAE1ZZABNWWgATVlsAE1ZdABNWXgATVqcAE1bLABNW8gATVxYAE1cZABNXGwATVx0AE1cfABNXIQATVyMAE1ckABNXJwATV0AAE1ddABNXXwATV2EAE1djABNXZQATV2cAE1dpABNXawATV4gAE1eLABNXjgATV5EAE1eUABNXlwATV5oAE1edABNXnwATWBoAE1gcABNYHgATWCAAE1gjABNYJAATWCUAE1gmABNYJwATWCkAE1grABNYLAATWC0AE1gvABNYMAATWKsAE1itABNYrwATWLEAE1i0ABNYtQATWLYAE1i3ABNYuAATWLoAE1i8ABNYvQATWL4AE1jAABNYwQATWTwAE1k+ABNZQAATWUIAE1lFABNZRgATWUcAE1lIABNZSQATWUsAE1lNABNZTgATWU8AE1lRABNZUgATWc0AE1nPABNZ0QATWdMAE1nWABNZ1wATWdgAE1nZABNZ2gATWdwAE1neABNZ3wATWeAAE1niABNZ4wATWl4AE1pgABNaYgATWmQAE1pnABNaaAATWmkAE1pqABNaawATWm0AE1pvABNacAATWnEAE1pzABNadAATWu8AE1rxABNa8wATWvUAE1r4ABNa+QATWvoAE1r7ABNa/AATWv4AE1sAABNbAQATWwIAE1sEABNbBQATW4AAE1uCABNbhAATW4YAE1uJABNbigATW4sAE1uMABNbjQATW48AE1uRABNbkgATW5MAE1uVABNblgATW6cAE1uoABNbqgATXCUAE1wnABNcKQATXCsAE1wtABNcLgATXC8AE1wwABNcMQATXDMAE1w1ABNcNgATXDcAE1w5ABNcOgATXLUAE1y3ABNcuQATXLsAE1y9ABNcvgATXL8AE1zAABNcwQATXMMAE1zFABNcxgATXMcAE1zJABNcygATXUUAE11HABNdSgATXUwAE11OABNdTwATXVAAE11RABNdUgATXVQAE11WABNdVwATXVgAE11aABNdWwATXWwAE11xABNddAATXXYAE12PABNdkAATXZEAE12TABNdrAATXa0AE12uABNdsAATXckAE13KABNdywATXc0AE13eABNd7QATXgYAE14VABNeJwATXjsAE15SABNeZAATXnUAE152ABNeeAATXpEAE16SABNekwATXpUAE16tABNevgATXsgAE17VAAAAAAAABAQAAAAAAAHeMQAAAAAAAAAAAAAAAAATXt0= + + ObvMessenger/CoreData/ObvMessenger.xcdatamodeld/ObvMessenger 67.xcdatamodel + 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9AAAbTAAAG1sAABtqAAAbhAAAG4UAABuLAAAblwAAG60AABu8AAAbvwAAG84AABvdAAAb4AAAG+8AABv+AAAcAQAAHBAAABwfAAAcIwAAHDIAABxBAAAcQgAAHE4AABxPAAAcUAAAHFEAABxSAAAcZwAAHGgAABxwAAAcfAAAHJAAAByfAAAcrgAAHL0AABzBAAAc0AAAHN8AABzuAAAc/QAAHQwAAB0YAAAdKgAAHTkAAB1IAAAdVwAAHWYAAB11AAAdhAAAHZMAAB2bAAAdsAAAHbEAAB25AAAdxQAAHdkAAB3oAAAd9wAAHgYAAB4KAAAeGQAAHigAAB43AAAeRgAAHlUAAB5hAAAecwAAHoIAAB6RAAAeoAAAHq8AAB7JAAAeygAAHtAAAB7cAAAe8gAAHwEAAB8EAAAfEwAAHyIAAB8lAAAfNAAAH0MAAB9GAAAfVQAAH2QAAB9oAAAfdwAAH4YAAB+HAAAfpQAAH6YAAB+nAAAfqAAAH6kAAB+qAAAfqwAAH6wAAB+tAAAfrgAAH68AAB+wAAAfsQAAH7IAAB/HAAAfyAAAH9AAAB/cAAAf8AAAH/8AACAOAAAgHQAAICEAACAwAAAgPwAAIE4AACBdAAAgbAAAIHgAACCKAAAgmQAAIKgAACC3AAAgxgAAIOAAACDhAAAg5wAAIPMAACEJAAAhGAAAIRsAACEqAAAhOQAAITwAACFLAAAhWgAAIV0AACFsAAAhewAAIX8AACGOAAAhnQAAIZ4AACGuAAAhrwAAIbAAACGxAAAhsgAAIbMAACG0AAAhyQAAIcoAACHSAAAh3gAAIfIAACIBAAAiEAAAIh8AACIjAAAiMgAAIkEAACJQAAAiXwAAIm4AACJ6AAAijAAAIpsAACKcAAAiqwAAIroAACLJAAAiygAAItkAACLoAAAi9wAAIwwAACMNAAAjFQAAIyEAACM1AAAjRAAAI1MAACNiAAAjZgAAI3UAACOEAAAjkwAAI6IAACOxAAAjvQAAI88AACPeAAAj7QAAI/wAACQLAAAkGgAAJCkAACQ4AAAkTQAAJE4AACRWAAAkYgAAJHYAACSFAAAklAAAJKMAACSnAAAktgAAJMUAACTUAAAk4wAAJPIAACT+AAAlEAAAJR8AACUuAAAlPQAAJUwAACVbAAAlagAAJXkAACWOAAAljwAAJZcAACWjAAAltwAAJcYAACXVAAAl5AAAJegAACX3AAAmBgAAJhUAACYkAAAmMwAAJj8AACZRAAAmYAAAJm8AACZ+AAAmjQAAJpwAACarAAAmugAAJs8AACbQAAAm2AAAJuQAACb4AAAnBwAAJxYAACcXAAAnJgAAJyoAACc5AAAnSAAAJ1cAACdmAAAndQAAJ4EAACeTAAAnogAAJ7EAACfAAAAnzwAAJ94AACftAAAn/AAAKBEAACgSAAAoGgAAKCYAACg6AAAoSQAAKFgAAChnAAAoawAAKHoAACiJAAAomAAAKKcAACi2AAAowgAAKNQAACjjAAAo8gAAKQEAACkQAAApHwAAKS4AACk9AAApUgAAKVMAAClbAAApZwAAKXsAACmKAAApmQAAKagAACmsAAApuwAAKcoAACnZAAAp6AAAKfcAACoDAAAqFQAAKiQAACozAAAqQgAAKlEAACpgAAAqbwAAKn4AACp/AAAqgwAAKowAACqNAAAqrwAAKrAAACq2AAAqwgAAKtgAACrnAAAq6gAAKvkAACsIAAArCwAAKxoAACspAAArLAAAKzsAACtKAAArTgAAK10AACtsAAArbQAAK50AACueAAArnwAAK6AAACuhAAArogAAK6MAACukAAArpQAAK6YAACunAAArqAAAK6kAACuqAAArqwAAK6wAACutAAArrgAAK68AACuwAAArsQAAK7IAACvHAAAryAAAK9AAACvcAAAr8AAAK/8AACwOAAAsHQAALCEAACwwAAAsPwAALE4AACxdAAAsbAAALHgAACyKAAAsmQAALKgAACy3AAAsxgAALNUAACzkAAAs8wAALQgAAC0JAAAtEQAALR0AAC0xAAAtQAAALU8AAC1eAAAtYgAALXEAAC2AAAAtjwAALZ4AAC2tAAAtuQAALcsAAC3aAAAt6QAALfgAAC4HAAAuFgAALiUAAC40AAAuSQAALkoAAC5SAAAuXgAALnIAAC6BAAAukAAALp8AAC6jAAAusgAALsEAAC7QAAAu3wAALu4AAC76AAAvDAAALxsAAC8qAAAvOQAAL0gAAC9XAAAvZgAAL3UAAC+KAAAviwAAL5MAAC+fAAAvswAAL8IAAC/RAAAv4AAAL+QAAC/zAAAwAgAAMBEAADAgAAAwLwAAMDsAADBNAAAwXAAAMGsAADB6AAAwiQAAMIoAADCZAAAwqAAAMLcAADDMAAAwzQAAMNUAADDhAAAw9QAAMQQAADETAAAxIgAAMSYAADE1AAAxRAAAMVMAADFiAAAxcQAAMX0AADGPAAAxngAAMa0AADG8AAAxywAAMcwAADHbAAAx6gAAMfkAADIOAAAyDwAAMhcAADIjAAAyNwAAMkYAADJVAAAyZAAAMmgAADJ3AAAyhgAAMpUAADKkAAAyswAAMr8AADLRAAAy4AAAMu8AADL+AAAzDQAAMxwAADMrAAAzOgAAM08AADNQAAAzWAAAM2QAADN4AAAzhwAAM5YAADOlAAAzqQAAM7gAADPHAAAz1gAAM+UAADP0AAA0AAAANBIAADQhAAA0MAAAND8AADROAAA0aAAANGkAADRvAAA0ewAANJEAADSgAAA0owAANLIAADTBAAA0xAAANNMAADTiAAA05QAANPQAADUDAAA1BwAANRYAADUlAAA1JgAANTQAADU1AAA1NgAANTcAADU4AAA1OQAANU4AADVPAAA1VwAANWMAADV3AAA1hgAANZUAADWkAAA1qAAANbcAADXGAAA11QAANeQAADXzAAA1/wAANhEAADYgAAA2LwAANj4AADZNAAA2XAAANmsAADZ6AAA2jwAANpAAADaYAAA2pAAANrgAADbHAAA21gAANuUAADbpAAA2+AAANwcAADcWAAA3JQAANzQAADdAAAA3UgAAN2EAADdwAAA3fwAAN44AADePAAA3ngAAN60AADe8AAA30QAAN9IAADfaAAA35gAAN/oAADgJAAA4GAAAOCcAADgrAAA4OgAAOEkAADhYAAA4ZwAAOHYAADiCAAA4lAAAOKMAADiyAAA4wQAAONAAADjfAAA47gAAOP0AADkSAAA5EwAAORsAADknAAA5OwAAOUoAADlZAAA5aAAAOWwAADl7AAA5igAAOZkAADmoAAA5twAAOcMAADnVAAA55AAAOfMAADoCAAA6EQAAOiAAADovAAA6PgAAOlMAADpUAAA6XAAAOmgAADp8AAA6iwAAOpoAADqpAAA6rQAAOrwAADrLAAA62gAAOukAADr4AAA7BAAAOxYAADslAAA7NAAAO0MAADtSAAA7YQAAO3AAADt/AAA7ggAAO4sAADuaAAA7qQAAO7gAADvNAAA7zgAAO9YAADviAAA79gAAPAUAADwUAAA8IwAAPCcAADw2AAA8RQAAPFQAADxjAAA8cgAAPH4AADyQAAA8nwAAPK4AADy9AAA8zAAAPOYAADznAAA87QAAPPkAAD0PAAA9HgAAPSEAAD0wAAA9PwAAPUIAAD1RAAA9YAAAPWMAAD1yAAA9gQAAPYUAAD2UAAA9owAAPaQAAD2qAAA9vwAAPcAAAD3IAAA91AAAPegAAD33AAA+BgAAPhUAAD4ZAAA+KAAAPjcAAD5GAAA+VQAAPmQAAD5wAAA+ggAAPpEAAD6gAAA+rwAAPr4AAD7NAAA+3AAAPusAAD7vAAA+9gAAPvcAAD8ZAAA/GgAAPyAAAD8sAAA/QgAAP1EAAD9UAAA/YwAAP3IAAD91AAA/hAAAP5MAAD+WAAA/pQAAP7QAAD+4AAA/xwAAP9YAAD/XAAA/4QAAP+IAAD/jAAA/5AAAP/kAAD/6AABAAgAAQA4AAEAiAABAMQAAQEAAAEBPAABAUwAAQGIAAEBxAABAgAAAQI8AAECeAABAqgAAQLwAAEDLAABA2gAAQOkAAED4AABBBwAAQRYAAEElAABBOgAAQTsAAEFDAABBTwAAQWMAAEFyAABBgQAAQZAAAEGUAABBowAAQbIAAEHBAABB0AAAQd8AAEHrAABB/QAAQgwAAEIbAABCKgAAQjkAAEJIAABCVwAAQmYAAEJ7AABCfAAAQoQAAEKQAABCpAAAQrMAAELCAABC0QAAQtUAAELkAABC8wAAQwIAAEMRAABDIAAAQywAAEM+AABDTQAAQ1wAAENrAABDegAAQ4kAAEOYAABDpwAAQ6oAAEOvAABDtgAAQ9AAAEPRAABD1wAAQ+MAAEP5AABECAAARAsAAEQaAABEKQAARCwAAEQ7AABESgAARE0AAERcAABEawAARG8AAER+AABEjQAARI4AAESUAABEqQAARKoAAESyAABEvgAARNIAAEThAABE8AAARP8AAEUDAABFEgAARSEAAEUwAABFPwAARU4AAEVaAABFbAAARXsAAEWKAABFmQAARagAAEXCAABFwwAARckAAEXVAABF6wAARfoAAEX9AABGDAAARhsAAEYeAABGLQAARjwAAEY/AABGTgAARl0AAEZhAABGcAAARn8AAEaAAABGmAAARpkAAEaaAABGmwAARpwAAEadAABGngAARrMAAEa0AABGvAAARsgAAEbcAABG6wAARvoAAEcJAABHDQAARxwAAEcrAABHOgAAR0kAAEdYAABHZAAAR3YAAEeFAABHlAAAR6MAAEeyAABHwQAAR9AAAEffAABH9AAAR/UAAEf9AABICQAASB0AAEgsAABIOwAASEoAAEhOAABIXQAASGwAAEh7AABIigAASJkAAEilAABItwAASMYAAEjVAABI5AAASPMAAEkCAABJEQAASSAAAEk1AABJNgAAST4AAElKAABJXgAASW0AAEl8AABJiwAASY8AAEmeAABJrQAASbwAAEnLAABJ2gAASeYAAEn4AABKBwAAShYAAEolAABKNAAASkMAAEpSAABKYQAASnYAAEp3AABKfwAASosAAEqfAABKrgAASr0AAErMAABK0AAASt8AAEruAABK/QAASwwAAEsbAABLJwAASzkAAEtIAABLVwAAS2YAAEt1AABLjwAAS5AAAEuWAABLogAAS7gAAEvHAABLygAAS9kAAEvoAABL6wAAS/oAAEwJAABMDAAATBsAAEwqAABMLgAATD0AAExMAABMTQAATF0AAExeAABMXwAATGAAAExhAABMYgAATHcAAEx4AABMgAAATIwAAEygAABMrwAATL4AAEzNAABM0QAATOAAAEzvAABM/gAATQ0AAE0cAABNKAAATToAAE1JAABNWAAATWcAAE12AABNhQAATZQAAE2jAABNuAAATbkAAE3BAABNzQAATeEAAE3wAABN/wAATg4AAE4SAABOIQAATjAAAE4/AABOTgAATl0AAE5pAABOewAATooAAE6ZAABOqAAATrcAAE7GAABO1QAATuQAAE75AABO+gAATwIAAE8OAABPIgAATzEAAE9AAABPTwAAT1MAAE9iAABPcQAAT4AAAE+PAABPngAAT6oAAE+8AABPywAAT9oAAE/pAABP+AAAUBIAAFATAABQGQAAUCUAAFA7AABQSgAAUE0AAFBcAABQawAAUG8AAFBzAABQdAAAUIMAAFCSAABQlQAAUKQAAFCzAABQtwAAUMYAAFDVAABQ4QAAUOIAAFDjAABQ5AAAUPkAAFD6AABRAgAAUQ4AAFEiAABRMQAAUUAAAFFPAABRUwAAUWIAAFFxAABRgAAAUY8AAFGeAABRqgAAUbwAAFHLAABR2gAAUekAAFH4AABSBwAAUhYAAFIlAABSOgAAUjsAAFJDAABSTwAAUmMAAFJ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4AACWjQAAlo4AAJaWAACWogAAlrYAAJbFAACW1AAAluMAAJbnAACW9gAAlwUAAJcUAACXIwAAlzIAAJc+AACXUAAAl18AAJduAACXfQAAl4wAAJebAACXqgAAl7kAAJe9AACXxAAAl8UAAJfUAACX4wAAl/IAAJf2AACX9wAAmAYAAJgVAACYJAAAmDkAAJg6AACYQgAAmE4AAJhiAACYcQAAmIAAAJiPAACYkwAAmKIAAJixAACYwAAAmM8AAJjeAACY6gAAmPwAAJkLAACZGgAAmSkAAJk4AACZRwAAmVYAAJllAACZegAAmXsAAJmDAACZjwAAmaMAAJmyAACZwQAAmdAAAJnUAACZ4wAAmfIAAJoBAACaEAAAmh8AAJorAACaPQAAmkwAAJpbAACaagAAmnkAAJqIAACalwAAmqYAAJq7AACavAAAmsQAAJrQAACa5AAAmvMAAJsCAACbEQAAmxUAAJskAACbMwAAm0IAAJtRAACbYAAAm2wAAJt+AACbjQAAm5wAAJurAACbugAAm8kAAJvYAACb5wAAm/wAAJv9AACcBQAAnBEAAJwlAACcNAAAnEMAAJxSAACcVgAAnGUAAJx0AACcgwAAnJIAAJyhAACcrQAAnL8AAJzOAACc3QAAnOwAAJz7AACdCgAAnRkAAJ0oAACdPQAAnT4AAJ1GAACdUgAAnWYAAJ11AACdhAAAnZMAAJ2XAACdpgAAnbUAAJ3EAACd0wAAneIAAJ3uAACeAAAAng8AAJ4eAACeLQAAnjwAAJ5LAACeWgAAnmkAAJ5+AACefwAAnocAAJ6TAACepwAAnrYAAJ7FAACe1AAAntgAAJ7nAACe9gAAnwUAAJ8UAACfIwAAny8AAJ9BAACfUAAAn18AAJ9uAACffQAAn4wAAJ+bAACfqgAAn78AAJ/AAACfyAAAn9QAAJ/oAACf9wAAoAYAAKAVAACgGQAAoCgAAKA3AACgRgAAoFUAAKBkAACgcAAAoIIAAKCRAACgoAAAoK8AAKC+AACgzQAAoNwAAKDrAAChAAAAoQEAAKEJAAChFQAAoSkAAKE4AAChRwAAoVYAAKFaAAChaQAAoXgAAKGHAAChlgAAoaUAAKGxAAChwwAAodIAAKHhAACh8AAAof8AAKIOAACiHQAAoiwAAKIwAACiNwAAojgAAKJHAACiVgAAomUAAKJ6AACiewAAooMAAKKPAACiowAAorIAAKLBAACi0AAAotQAAKLjAACi8gAAowEAAKMQAACjHwAAoysAAKM9AACjTAAAo1sAAKNqAACjeQAAo4gAAKOXAACjpgAAo6oAAKOrAACjugAAo8kAAKPYAACj7QAAo+4AAKP2AACkAgAApBYAAKQlAACkNAAApEMAAKRHAACkVgAApGUAAKR0AACkgwAApJIAAKSeAACksAAApL8AAKTOAACk3QAApOwAAKT7AAClCgAApRkAAKUuAAClLwAApTcAAKVDAAClVwAApWYAAKV1AAClhAAApYgAAKWXAAClpgAApbUAAKXEAACl0wAApd8AAKXxAACmAAAApg8AAKYeAACmLQAApjwAAKZLAACmWgAApl0AAKZsAACmewAApooAAKafAACmoAAApqgAAKa0AACmyAAAptcAAKbmAACm9QAApvkAAKcIAACnFwAApyYAAKc1AACnRAAAp1AAAKdiAACncQAAp4AAAKePAACnngAAp60AAKe8AACnywAAp+AAAKfhAACn6QAAp/UAAKgJAACoGAAAqCcAAKg2AACoOgAAqEkAAKhYAACoZwAAqHYAAKiFAACokQAAqKMAAKiyAACowQAAqNAAAKjfAACo7gAAqP0AAKkMAACpIQAAqSIAAKkqAACpNgAAqUoAAKlZAACpaAAAqXcAAKl7AACpigAAqZkAAKmoAACptwAAqcYAAKnSAACp5AAAqfMAAKoCAACqEQAAqiAAAKovAACqPgAAqk0AAKpQAACqXwAAqm4AAKp9AACqkgAAqpMAAKqbAACqpwAAqrsAAKrKAACq2QAAqugAAKrsAACq+wAAqwoAAKsZAACrKAAAqzcAAKtDAACrVQAAq2QAAKtzAACrggAAq5EAAKugAACrrwAAq74AAKvTAACr1AAAq9wAAKvoAACr/AAArAsAAKwaAACsKQAArC0AAKw8AACsSwAArFoAAKxpAACseAAArIQAAKyWAACspQAArLQAAKzDAACs0gAArOEAAKzwAACs/wAArRQAAK0VAACtHQAArSkAAK09AACtTAAArVsAAK1qAACtbgAArX0AAK2MAACtmwAAraoAAK25AACtxQAArdcAAK3mAACt9QAArgQAAK4TAACuIgAArjEAAK5AAACuVQAArlYAAK5eAACuagAArn4AAK6NAACunAAArqsAAK6vAACuvgAArs0AAK7cAACu6wAArvoAAK8GAACvGAAArycAAK82AACvRQAAr1QAAK9jAACvcgAAr4EAAK+WAACvlwAAr58AAK+rAACvvwAAr84AAK/dAACv7AAAr/AAAK//AACwDgAAsB0AALAsAACwOwAAsEcAALBZAACwaAAAsHcAALCGAACwlQAAsKQAALCzAACwwgAAsNcAALDYAACw4AAAsOwAALEAAACxDwAAsR4AALEtAACxMQAAsUAAALFPAACxXgAAsW0AALF8AACxiAAAsZoAALGpAACxuAAAsccAALHWAACx5QAAsfQAALIDAACyGAAAshkAALIhAACyLQAAskEAALJQAACyXwAAsm4AALJyAACygQAAspAAALKfAACyrgAAsr0AALLJAACy2wAAsuoAALL5AACzCAAAsxcAALM5AACzOgAAs0AAALNMAACzYgAAs3EAALN0AACzgwAAs5IAALOVAACzpAAAs7MAALO2AACzxQAAs9QAALPYAACz5wAAs/YAALP3AAC0JwAAtCgAALQpAAC0KgAAtCsAALQsAAC0LQAAtC4AALQvAAC0MAAAtDEAALQyAAC0MwAAtDQAALQ1AAC0NgAAtDcAALQ4AAC0OQAAtDoAALRPAAC0UAAAtFgAALRkAAC0eAAAtIcAALSWAAC0pQAAtKkAALS4AAC0xwAAtNYAALTlAAC09AAAtQAAALUSAAC1IQAAtTAAALU/AAC1TgAAtV0AALVsAAC1ewAAtZAAALWRAAC1mQAAtaUAALW5AAC1yAAAtdcAALXmAAC16gAAtfkAALYIAAC2FwAAtiYAALY1AAC2QQAAtlMAALZiAAC2cQAAtoAAALaPAAC2ngAAtq0AALa8AAC20QAAttIAALbaAAC25gAAtvoAALcJAAC3GAAAtycAALcrAAC3OgAAt0kAALdYAAC3ZwAAt3YAALeCAAC3lAAAt6MAALeyAAC3wQAAt9AAALffAAC37gAAt/0AALgSAAC4EwAAuBsAALgnAAC4OwAAuEoAALhZAAC4aAAAuGwAALh7AAC4igAAuJkAALioAAC4twAAuMMAALjVAAC45AAAuPMAALkCAAC5EQAAuSAAALkvAAC5PgAAuVMAALlUAAC5XAAAuWgAALl8AAC5iwAAuZoAALmpAAC5rQAAubwAALn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FAADRFAAA0SAAANEyAADRQQAA0VAAANFfAADRbgAA0X0AANGMAADRmwAA0bAAANGxAADRuQAA0cUAANHZAADR6AAA0fcAANIGAADSCgAA0hkAANIoAADSNwAA0kYAANJVAADSYQAA0nMAANKCAADSkQAA0qAAANKvAADSvgAA0s0AANLcAADS8QAA0vIAANL6AADTBgAA0xoAANMpAADTOAAA00cAANNLAADTWgAA02kAANN4AADThwAA05YAANOiAADTtAAA08MAANPSAADT4QAA0/AAANP/AADUDgAA1B0AANQyAADUMwAA1DsAANRHAADUWwAA1GoAANR5AADUiAAA1IwAANSbAADUqgAA1LkAANTIAADU1wAA1OMAANT1AADVBAAA1RMAANUiAADVMQAA1UAAANVPAADVXgAA1XMAANV0AADVfAAA1YgAANWcAADVqwAA1boAANXJAADVzQAA1dwAANXrAADV+gAA1gkAANYYAADWJAAA1jYAANZFAADWVAAA1mMAANZyAADWgQAA1pAAANafAADWtAAA1rUAANa9AADWyQAA1t0AANbsAADW+wAA1woAANcOAADXHQAA1ywAANc7AADXSgAA11kAANdlAADXdwAA14YAANeVAADXpAAA17MAANfCAADX0QAA1+AAANf1AADX9gAA1/4AANgKAADYHgAA2C0AANg8AADYSwAA2E8AANheAADYbQAA2HwAANiLAADYmgAA2KYAANi4AADYxwAA2NYAANjlAADY9AAA2QMAANkSAADZIQAA2TYAANk3AADZPwAA2UsAANlfAADZbgAA2X0AANmMAADZkAAA2Z8AANmuAADZvQAA2cwAANnbAADZ5wAA2fkAANoIAADaFwAA2iYAANo1AADaRAAA2lMAANpiAADadwAA2ngAANqAAADajAAA2qAAANqvAADavgAA2s0AANrRAADa4AAA2u8AANr+AADbDQAA2xwAANsoAADbOgAA20kAANtYAADbZwAA23YAANuFAADblAAA26MAANu4AADbuQAA28EAANvNAADb4QAA2/AAANv/AADcDgAA3BIAANwhAADcMAAA3D8AANxOAADcXQAA3GkAANx7AADcigAA3JkAANyoAADctwAA3MYAANzVAADc5AAA3OcAANz2AADdBQAA3RQAAN0pAADdKgAA3TIAAN0+AADdUgAA3WEAAN1wAADdfwAA3YMAAN2SAADdoQAA3bAAAN2/AADdzgAA3doAAN3sAADd+wAA3goAAN4ZAADeKAAA3jcAAN5GAADeVQAA3moAAN5rAADecwAA3n8AAN6TAADeogAA3rEAAN7AAADexAAA3tMAAN7iAADe8QAA3wAAAN8PAADfGwAA3y0AAN88AADfSwAA31oAAN9pAADfeAAA34cAAN+WAADfqwAA36wAAN+0AADfwAAA39QAAN/jAADf8gAA4AEAAOAFAADgFAAA4CMAAOAyAADgQQAA4FAAAOBcAADgbgAA4H0AAOCMAADgmwAA4KoAAOC5AADgyAAA4NcAAODsAADg7QAA4PUAAOEBAADhFQAA4SQAAOEzAADhQgAA4UYAAOFVAADhZAAA4XMAAOGCAADhkQAA4Z0AAOGvAADhvgAA4c0AAOHcAADh6wAA4foAAOIJAADiGAAA4i0AAOIuAADiNgAA4kIAAOJWAADiZQAA4nQAAOKDAADihwAA4pYAAOKlAADitAAA4sMAAOLSAADi3gAA4vAAAOL/AADjDgAA4x0AAOMsAADjRgAA40cAAONNAADjWQAA428AAON+AADjgQAA45AAAOOfAADjogAA47EAAOPAAADjwwAA49IAAOPhAADj5QAA4/QAAOQDAADkBAAA5BIAAOQTAADkFAAA5BUAAOQqAADkKwAA5DMAAOQ/AADkUwAA5GIAAORxAADkgAAA5IQAAOSTAADkogAA5LEAAOTAAADkzwAA5NsAAOTtAADk/AAA5QsAAOUaAADlKQAA5TgAAOVHAADlVgAA5WsAAOVsAADldAAA5YAAAOWUAADlowAA5bIAAOXBAADlxQAA5dQAAOXjAADl8gAA5gEAAOYQAADmHAAA5i4AAOY9AADmTAAA5lsAAOZqAADmeQAA5ogAAOaXAADmrAAA5q0AAOa1AADmwQAA5tUAAObkAADm8wAA5wIAAOcGAADnFQAA5yQAAOczAADnQgAA51EAAOddAADnbwAA534AAOeNAADnnAAA56sAAOe6AADnyQAA59gAAOftAADn7gAA5/YAAOgCAADoFgAA6CUAAOg0AADoQwAA6EcAAOhWAADoZQAA6HQAAOiDAADokgAA6J4AAOiwAADovwAA6M4AAOjdAADo7AAA6PsAAOkKAADpGQAA6S4AAOkvAADpNwAA6UMAAOlXAADpZgAA6XUAAOmEAADpiAAA6ZcAAOmmAADptQAA6cQAAOnTAADp3wAA6fEAAOoAAADqDwAA6h4AAOotAADqPAAA6ksAAOpaAADqXQAA6mwAAOp7AADqigAA6p8AAOqgAADqqAAA6rQAAOrIAADq1wAA6uYAAOr1AADq+QAA6wgAAOsXAADrJgAA6zUAAOtEAADrUAAA62IAAOtxAADrgAAA648AAOueAADrrQAA67wAAOvLAADr4AAA6+EAAOvpAADr9QAA7AkAAOwYAADsJwAA7DYAAOw6AADsSQAA7FgAAOxnAADsdgAA7IUAAOyRAADsowAA7LIAAOzBAADs0AAA7N8AAOzuAADs/QAA7QwAAO0hAADtIgAA7SoAAO02AADtSgAA7VkAAO1oAADtdwAA7XsAAO2KAADtmQAA7agAAO23AADtxgAA7dIAAO3kAADt8wAA7gIAAO4RAADuIAAA7joAAO47AADuQQAA7k0AAO5jAADucgAA7nUAAO6EAADukwAA7pcAAO6bAADuqgAA7rkAAO68AADuywAA7toAAO7eAADu7QAA7vwAAO79AADvMwAA7zQAAO81AADvNgAA7zcAAO84AADvOQAA7zoAAO87AADvPAAA7z0AAO8+AADvPwAA70AAAO9BAADvQgAA70MAAO9EAADvRQAA70YAAO9HAADvSAAA710AAO9eAADvZgAA73IAAO+GAADvlQAA76QAAO+zAADvtwAA78YAAO/VAADv5AAA7/MAAPACAADwDgAA8CAAAPAvAADwPgAA8E0AAPBcAADwawAA8HoAAPCJAADwngAA8J8AAPCnAADwswAA8McAAPDWAADw5QAA8PQAAPD4AADxBwAA8RYAAPElAADxNAAA8UMAAPFPAADxYQAA8XAAAPF/AADxjgAA8Z0AAPGsAADxuwAA8coAAPHfAADx4AAA8egAAPH0AADyCAAA8hcAAPImAADyNQAA8jkAAPJIAADyVwAA8mYAAPJ1AADyhAAA8pAAAPKiAADysQAA8sAAAPLPAADy3gAA8u0AAPL8AADzCwAA8yAAAPMhAADzKQAA8zUAAPNJAADzWAAA82cAAPN2AADzegAA84kAAPOYAADzpwAA87YAAPPFAADz0QAA8+MAAPPyAAD0AQAA9BAAAPQfAAD0LgAA9D0AAPRMAAD0YQAA9GIAAPRqAAD0dgAA9IoAAPSZAAD0qAAA9LcAAPS7AAD0ygAA9NkAAPToAAD09wAA9QYAAPUSAAD1JAAA9TMAAPVCAAD1UQAA9WAAAPVvAAD1fgAA9Y0AAPWiAAD1owAA9asAAPW3AAD1ywAA9doAAPXpAAD1+AAA9fwAAPYLAAD2GgAA9ikAAPY4AAD2RwAA9lMAAPZlAAD2dAAA9oMAAPaSAAD2oQAA9rAAAPa/AAD2zgAA9uMAAPbkAAD27AAA9vgAAPcMAAD3GwAA9yoAAPc5AAD3PQAA90wAAPdbAAD3agAA93kAAPeIAAD3lAAA96YAAPe1AAD3xAAA99MAAPfiAAD38QAA+AAAAPgPAAD4JAAA+CUAAPgtAAD4OQAA+E0AAPhcAAD4awAA+HoAAPh+AAD4jQAA+JwAAPirAAD4ugAA+MkAAPjVAAD45wAA+PYAAPkFAAD5FAAA+SMAAPkyAAD5QQAA+VAAAPllAAD5ZgAA+W4AAPl6AAD5jgAA+Z0AAPmsAAD5uwAA+b8AAPnOAAD53QAA+ewAAPn7AAD6CgAA+hYAAPooAAD6NwAA+kYAAPpVAAD6ZAAA+nMAAPqCAAD6kQAA+qYAAPqnAAD6rwAA+rsAAPrPAAD63gAA+u0AAPr8AAD7AAAA+w8AAPseAAD7LQAA+zwAAPtLAAD7VwAA+2kAAPt4AAD7hwAA+5YAAPulAAD7tAAA+8MAAPvSAAD75wAA++gAAPvwAAD7/AAA/BAAAPwfAAD8LgAA/D0AAPxBAAD8UAAA/F8AAPxuAAD8fQAA/IwAAPyYAAD8qgAA/LkAAPzIAAD81wAA/OYAAPz1AAD9BAAA/RMAAP0oAAD9KQAA/TEAAP09AAD9UQAA/WAAAP1vAAD9fgAA/YIAAP2RAAD9oAAA/a8AAP2+AAD9zQAA/dkAAP3rAAD9+gAA/gkAAP4YAAD+JwAA/jYAAP5FAAD+VAAA/mkAAP5qAAD+cgAA/n4AAP6SAAD+oQAA/rAAAP6/AAD+wwAA/tIAAP7hAAD+8AAA/v8AAP8OAAD/GgAA/ywAAP87AAD/SgAA/1kAAP9oAAD/dwAA/4YAAP+VAAD/qgAA/6sAAP+zAAD/vwAA/9MAAP/iAAD/8QABAAAAAQAEAAEAEwABACIAAQAxAAEAQAABAE8AAQBbAAEAbQABAHwAAQCLAAEAmgABAKkAAQC4AAEAxwABANYAAQDrAAEA7AABAPQAAQEAAAEBFAABASMAAQEyAAEBQQABAUUAAQFUAAEBYwABAXIAAQGBAAEBkAABAZwAAQGuAAEBvQABAcwAAQHbAAEB6gABAfkAAQIIAAECFwABAiwAAQItAAECNQABAkEAAQJVAAECZAABAnMAAQKCAAEChgABApUAAQKkAAECswABAsIAAQLRAAEC3QABAu8AAQL+AAEDDQABAxwAAQMrAAEDRQABA0YAAQNMAAEDWAABA24AAQN9AAEDgAABA48AAQOeAAEDogABA6cAAQOoAAEDqQABA7gAAQPHAAEDygABA9kAAQPoAAED7AABA/sAAQQKAAEECwABBB8AAQQgAAEEIQABBCIAAQQjAAEEJAABBCUAAQQmAAEEOwABBDwAAQREAAEEUAABBGQAAQRzAAEEggABBJEAAQSVAAEEpAABBLMAAQTCAAEE0QABBOAAAQTsAAEE/gABBQ0AAQUcAAEFKwABBToAAQVJAAEFWAABBWcAAQV8AAEFfQABBYUAAQWRAAEFpQABBbQAAQXDAAEF0gABBdYAAQXlAAEF9AABBgMAAQYSAAEGIQABBi0AAQY/AAEGTgABBl0AAQZsAAEGewABBooAAQaZAAEGqAABBr0AAQa+AAEGxgABBtIAAQbmAAEG9QABBwQAAQcTAAEHFwABByYAAQc1AAEHRAABB1MAAQdiAAEHbgABB4AAAQePAAEHngABB60AAQe8AAEHywABB9oAAQfpAAEH/gABB/8AAQgHAAEIEwABCCcAAQg2AAEIRQABCFQAAQhYAAEIZwABCHYAAQiFAAEIlAABCKMAAQivAAEIwQABCNAAAQjfAAEI7gABCP0AAQkMAAEJGwABCSoAAQk/AAEJQAABCUgAAQlUAAEJaAABCXcAAQmGAAEJlQABCZkAAQmoAAEJtwABCcYAAQnVAAEJ5AABCfAAAQoCAAEKEQABCiAAAQovAAEKPgABCk0AAQpcAAEKawABCoAAAQqBAAEKiQABCpUAAQqpAAEKuAABCscAAQrWAAEK2gABCukAAQr4AAELBwABCxYAAQslAAELMQABC0MAAQtSAAELYQABC3AAAQt/AAELjgABC50AAQusAAELwQABC8IAAQvKAAEL1gABC+oAAQv5AAEMCAABDBcAAQwbAAEMKgABDDkAAQxIAAEMVwABDGYAAQxyAAEMhAABDJMAAQyiAAEMsQABDMAAAQzPAAEM3gABDO0AAQ0CAAENAwABDQsAAQ0XAAENKwABDToAAQ1JAAENWAABDVwAAQ1rAAENegABDYkAAQ2YAAENpwABDbMAAQ3FAAEN1AABDeMAAQ3yAAEOAQABDhAAAQ4fAAEOLgABDjEAAQ5AAAEOTwABDl4AAQ5zAAEOdAABDnwAAQ6IAAEOnAABDqsAAQ66AAEOyQABDs0AAQ7cAAEO6wABDvoAAQ8JAAEPGAABDyQAAQ82AAEPRQABD1QAAQ9jAAEPcgABD4EAAQ+QAAEPnwABD7QAAQ+1AAEPvQABD8kAAQ/dAAEP7AABD/sAARAKAAEQDgABEB0AARAsAAEQOwABEEoAARBZAAEQZQABEHcAARCGAAEQlQABEKQAARCzAAEQwgABENEAARDgAAEQ9QABEPYAARD+AAERCgABER4AAREtAAERPAABEUsAARFPAAERXgABEW0AARF8AAERiwABEZoAARGmAAERuAABEccAARHWAAER5QABEfQAARIWAAESFwABEh0AARIpAAESPwABEk4AARJRAAESYAABEm8AARJyAAESgQABEpAAARKTAAESogABErEAARK1AAESxAABEtMAARLUAAES5AABEuUAARLmAAES5wABEugAARLpAAES/gABEv8AARMHAAETEwABEycAARM2AAETRQABE1QAARNYAAETZwABE3YAAROFAAETlAABE6MAAROvAAETwQABE9AAARPfAAET7gABE/0AARQMAAEUGwABFCoAARQ/AAEUQAABFEgAARRUAAEUaAABFHcAARSGAAEUlQABFJkAARSoAAEUtwABFMYAARTVAAEU5AABFPAAARUCAAEVEQABFSAAARUvAAEVPgABFU0AARVcAAEVawABFYAAARWBAAEViQABFZUAARWpAAEVuAABFccAARXWAAEV2gABFekAARX4AAEWBwABFhYAARYlAAEWMQABFkMAARZSAAEWYQABFnAAARZ/AAEWjgABFp0AARasAAEWwQABFsIAARbKAAEW1gABFuoAARb5AAEXCAABFxcAARcbAAEXKgABFzkAARdIAAEXVwABF2YAARdyAAEXhAABF5MAAReiAAEXsQABF8AAARfPAAEX3gABF+0AARgCAAEYAwABGAsAARgXAAEYKwABGDoAARhJAAEYWAABGFwAARhrAAEYegABGIkAARiYAAEYpwABGLMAARjFAAEY1AABGOMAARjyAAEZAQABGRAAARkfAAEZLgABGUMAARlEAAEZTAABGVgAARlsAAEZewABGYoAARmZAAEZnQABGawAARm7AAEZygABGdkAARnoAAEZ9AABGgYAARoVAAEaJAABGjMAARpCAAEaUQABGmAAARpvAAEacgABGnYAARp9AAEalwABGpgAARqeAAEaqgABGsAAARrPAAEa0gABGuEAARrwAAEa8wABGwIAARsRAAEbFAABGyMAARsyAAEbNgABG0UAARtUAAEbVQABG1sAARtcAAEbcQABG3IAARt6AAEbhgABG5oAARupAAEbuAABG8cAARvLAAEb2gABG+kAARv4AAEcBwABHBYAARwiAAEcNAABHEMAARxSAAEcYQABHHAAARx/AAEcjgABHJ0AARyhAAEcogABHLEAARzAAAEczwABHOQAARzlAAEc7QABHPkAAR0NAAEdHAABHSsAAR06AAEdPgABHU0AAR1cAAEdawABHXoAAR2JAAEdlQABHacAAR22AAEdxQABHdQAAR3jAAEd/QABHf4AAR4EAAEeEAABHiYAAR41AAEeOAABHkcAAR5WAAEeWQABHmgAAR53AAEeegABHokAAR6YAAEenAABHqsAAR66AAEeuwABHsEAAR7CAAEe1wABHtgAAR7gAAEe7AABHwAAAR8PAAEfHgABHy0AAR8xAAEfQAABH08AAR9eAAEfbQABH3wAAR+IAAEfmgABH6kAAR+4AAEfxwABH9YAAR/lAAEf9AABIAMAASAHAAEgDgABIA8AASAxAAEgMgABIDgAASBEAAEgWgABIGkAASBsAAEgewABIIoAASCOAAEglAABIJUAASCWAAEglwABIKYAASC1AAEguAABIMcAASDWAAEg2gABIOkAASD4AAEg+QABIRcAASEYAAEhGQABIRoAASEbAAEhHAABIR0AASEeAAEhHwABISAAASE1AAEhNgABIT4AASFKAAEhXgABIW0AASF8AAEhiwABIY8AASGeAAEhrQABIbwAASHLAAEh2gABIeYAASH4AAEiBwABIhYAASIlAAEiNAABIkMAASJSAAEiYQABInYAASJ3AAEifwABIosAASKfAAEirgABIr0AASLMAAEi0AABIt8AASLuAAEi/QABIwwAASMbAAEjJwABIzkAASNIAAEjVwABI2YAASN1AAEjjwABI5AAASOWAAEjogABI7gAASPHAAEjygABI9kAASPoAAEj7AABI/MAASP0AAEj9QABI/YAASQFAAEkFAABJBcAASQmAAEkNQABJDkAASRIAAEkVwABJFgAASRsAAEkbQABJG4AASRvAAEkcAABJHEAASRyAAEkcwABJIgAASSJAAEkkQABJJ0AASSxAAEkwAABJM8AASTeAAEk4gABJPEAASUAAAElDwABJR4AASUtAAElOQABJUsAASVaAAElaQABJXgAASWHAAEllgABJaUAASW0AAElyQABJcoAASXSAAEl3gABJfIAASYBAAEmEAABJh8AASYjAAEmMgABJkEAASZQAAEmXwABJm4AASZ6AAEmjAABJpsAASaqAAEmuQABJsgAASbXAAEm5gABJvUAAScKAAEnCwABJxMAAScfAAEnMwABJ0IAASdRAAEnYAABJ2QAASdzAAEnggABJ5EAASegAAEnrwABJ7sAASfNAAEn3AABJ+sAASf6AAEoCQABKBgAASgnAAEoNgABKEsAAShMAAEoVAABKGAAASh0AAEogwABKJIAASihAAEopQABKLQAASjDAAEo0gABKOEAASjwAAEo/AABKQ4AASkdAAEpLAABKTsAASlKAAEpWQABKWgAASl3AAEpjAABKY0AASmVAAEpoQABKbUAASnEAAEp0wABKeIAASnmAAEp9QABKgQAASoTAAEqIgABKjEAASo9AAEqTwABKl4AASptAAEqfAABKosAASqaAAEqqQABKrgAASrNAAEqzgABKtYAASriAAEq9gABKwUAASsUAAErIwABKycAASs2AAErRQABK1QAAStjAAErcgABK34AASuQAAErnwABK64AASu9AAErzAABK9sAASvqAAEr+QABLA4AASwPAAEsFwABLCMAASw3AAEsRgABLFUAASxkAAEsaAABLHcAASyGAAEslQABLKQAASyzAAEsvwABLNEAASzgAAEs7wABLP4AAS0NAAEtHAABLSsAAS06AAEtTwABLVAAAS1YAAEtZAABLXgAAS2HAAEtlgABLaUAAS2pAAEtuAABLccAAS3WAAEt5QABLfQAAS4AAAEuEgABLiEAAS4wAAEuPwABLk4AAS5dAAEubAABLnsAAS5+AAEujQABLpwAAS6rAAEuwAABLsEAAS7JAAEu1QABLukAAS74AAEvBwABLxYAAS8aAAEvKQABLzgAAS9HAAEvVgABL2UAAS9xAAEvgwABL5IAAS+hAAEvsAABL78AAS/OAAEv3QABL+wAATABAAEwAgABMAoAATAWAAEwKgABMDkAATBIAAEwVwABMFsAATBqAAEweQABMIgAATCXAAEwpgABMLIAATDEAAEw0wABMOIAATDxAAExAAABMRoAATEbAAExIQABMS0AATFDAAExUgABMVUAATFkAAExcwABMXYAATGFAAExlAABMZcAATGmAAExtQABMbkAATHIAAEx1wABMdgAATH0AAEx9QABMfYAATH3AAEx+AABMfkAATH6AAEx+wABMfwAATH9AAEx/gABMhMAATIUAAEyHAABMigAATI8AAEySwABMloAATJpAAEybQABMnwAATKLAAEymgABMqkAATK4AAEyxAABMtYAATLlAAEy9AABMwMAATMSAAEzIQABMzAAATM/AAEzVAABM1UAATNdAAEzaQABM30AATOMAAEzmwABM6oAATOuAAEzvQABM8wAATPbAAEz6gABM/kAATQFAAE0FwABNCYAATQ1AAE0RAABNFMAATRiAAE0cQABNIAAATSVAAE0lgABNJ4AATSqAAE0vgABNM0AATTcAAE06wABNO8AATT+AAE1DQABNRwAATUrAAE1OgABNUYAATVYAAE1ZwABNXYAATWFAAE1lAABNaMAATWyAAE1wQABNdYAATXXAAE13wABNesAATX/AAE2DgABNh0AATYsAAE2MAABNj8AATZOAAE2XQABNmwAATZ7AAE2hwABNpkAATaoAAE2twABNsYAATbVAAE25AABNvMAATcCAAE3FwABNxgAATcgAAE3LAABN0AAATdPAAE3XgABN20AATdxAAE3gAABN48AATeeAAE3rQABN7wAATfIAAE32gABN+kAATf4AAE4BwABOBYAATglAAE4NAABOEMAAThYAAE4WQABOGEAAThtAAE4gQABOJAAATifAAE4rgABOLIAATjBAAE40AABON8AATjuAAE4/QABOQkAATkbAAE5KgABOTkAATlIAAE5VwABOWYAATl1AAE5hAABOZkAATmaAAE5ogABOa4AATnCAAE50QABOeAAATnvAAE58wABOgIAAToRAAE6IAABOi8AATo+AAE6SgABOlwAATprAAE6egABOokAATqYAAE6pwABOrYAATrFAAE62gABOtsAATrjAAE67wABOwMAATsSAAE7IQABOzAAATs0AAE7QwABO1IAATthAAE7cAABO38AATuLAAE7nQABO6wAATu7AAE7ygABO9kAATvoAAE79wABPAYAATwbAAE8HAABPCQAATwwAAE8RAABPFMAATxiAAE8cQABPHUAATyEAAE8kwABPKIAATyxAAE8wAABPMwAATzeAAE87QABPPwAAT0LAAE9GgABPSkAAT04AAE9RwABPVwAAT1dAAE9ZQABPXEAAT2FAAE9lAABPaMAAT2yAAE9tgABPcUAAT3UAAE94wABPfIAAT4BAAE+DQABPh8AAT4uAAE+PQABPkwAAT5bAAE+agABPnkAAT6IAAE+nQABPp4AAT6mAAE+sgABPsYAAT7VAAE+5AABPvMAAT73AAE/BgABPxUAAT8kAAE/MwABP0IAAT9OAAE/YAABP28AAT9+AAE/jQABP5wAAT+rAAE/ugABP8kAAT/eAAE/3wABP+cAAT/zAAFABwABQBYAAUAlAAFANAABQDgAAUBHAAFAVgABQGUAAUB0AAFAgwABQI8AAUChAAFAsAABQL8AAUDOAAFA3QABQOwAAUD7AAFBCgABQR8AAUEgAAFBKAABQTQAAUFIAAFBVwABQWYAAUF1AAFBeQABQYgAAUGXAAFBpgABQbUAAUHEAAFB0AABQeIAAUHxAAFCAAABQg8AAUIeAAFCHwABQi4AAUI9AAFCTAABQk8AAUJeAAFCbQABQnwAAUKRAAFCkgABQpoAAUKmAAFCugABQskAAULYAAFC5wABQusAAUL6AAFDCQABQxgAAUMnAAFDNgABQ0IAAUNUAAFDYwABQ3IAAUOBAAFDkAABQ58AAUOuAAFDvQABQ9IAAUPTAAFD2wABQ+cAAUP7AAFECgABRBkAAUQoAAFELAABRDsAAURKAAFEWQABRGgAAUR3AAFEgwABRJUAAUSkAAFEswABRMIAAUTRAAFE4AABRO8AAUT+AAFFEwABRRQAAUUcAAFFKAABRTwAAUVLAAFFWgABRWkAAUVtAAFFfAABRYsAAUWaAAFFqQABRbgAAUXEAAFF1gABReUAAUX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rAAGYOgABmEkAAZhYAAGYZAABmHYAAZiFAAGYlAABmKMAAZiyAAGYwQABmNAAAZjfAAGY9AABmPUAAZj9AAGZCQABmR0AAZksAAGZOwABmUoAAZlOAAGZXQABmWwAAZl7AAGZigABmZkAAZmlAAGZtwABmcYAAZnVAAGZ5AABmfMAAZoCAAGaEQABmiAAAZo1AAGaNgABmj4AAZpKAAGaXgABmm0AAZp8AAGaiwABmo8AAZqeAAGarQABmrwAAZrLAAGa2gABmuYAAZr4AAGbBwABmxYAAZslAAGbNAABm0MAAZtSAAGbYQABm3YAAZt3AAGbfwABm4sAAZufAAGbrgABm70AAZvMAAGb0AABm98AAZvuAAGb/QABnAwAAZwbAAGcJwABnDkAAZxIAAGcVwABnGYAAZx1AAGchAABnJMAAZyiAAGctwABnLgAAZzAAAGczAABnOAAAZzvAAGc/gABnQ0AAZ0RAAGdIAABnS8AAZ0+AAGdTQABnVwAAZ1oAAGdegABnYkAAZ2YAAGdpwABnbYAAZ3FAAGd1AABneMAAZ34AAGd+QABngEAAZ4NAAGeIQABnjAAAZ4/AAGeTgABnlIAAZ5hAAGecAABnn8AAZ6OAAGenQABnqkAAZ67AAGeygABntkAAZ7oAAGe9wABnwYAAZ8VAAGfJAABnzkAAZ86AAGfQgABn04AAZ9iAAGfcQABn4AAAZ+PAAGfkwABn6IAAZ+xAAGfwAABn88AAZ/eAAGf6gABn/wAAaALAAGgGgABoCkAAaA4AAGgRwABoFYAAaBlAAGgegABoHsAAaCDAAGgjwABoKMAAaCyAAGgwQABoNAAAaDUAAGg4wABoPIAAaEBAAGhEAABoR8AAaErAAGhPQABoUwAAaFbAAGhagABoXkAAaGIAAGhlwABoaYAAaG7AAGhvAABocQAAaHQAAGh5AABofMAAaICAAGiEQABohUAAaIkAAGiMwABokIAAaJRAAGiYAABomwAAaJ+AAGijQABopwAAaKrAAGiugABoskAAaLYAAGi5wABouoAAaL5AAGjCAABoxcAAaMsAAGjLQABozUAAaNBAAGjVQABo2QAAaNzAAGjggABo4YAAaOVAAGjpAABo7MAAaPCAAGj0QABo90AAaPvAAGj/gABpA0AAaQcAAGkKwABpDoAAaRJAAGkWAABpG0AAaRuAAGkdgABpIIAAaSWAAGkpQABpLQAAaTDAAGkxwABpNYAAaTlAAGk9AABpQMAAaUSAAGlHgABpTAAAaU/AAGlTgABpV0AAaVsAAGlewABpYoAAaWZAAGlnAABpasAAaW6AAGlyQABpd4AAaXfAAGl5wABpfMAAaYHAAGmFgABpiUAAaY0AAGmOAABpkcAAaZWAAGmZQABpnQAAaaDAAGmjwABpqEAAaawAAGmvwABps4AAabdAAGm7AABpvsAAacKAAGnHwABpyAAAacoAAGnNAABp0gAAadXAAGnZgABp3UAAad5AAGniAABp5cAAaemAAGntQABp8QAAafQAAGn4gABp/EAAagAAAGoDwABqB4AAagtAAGoPAABqEsAAahgAAGoYQABqGkAAah1AAGoiQABqJgAAainAAGotgABqLoAAajJAAGo2AABqOcAAaj2AAGpBQABqREAAakjAAGpMgABqUEAAalQAAGpXwABqW4AAal9AAGpjAABqaEAAamiAAGpqgABqbYAAanKAAGp2QABqegAAan3AAGp+wABqgoAAaoZAAGqKAABqjcAAapGAAGqUgABqmQAAapzAAGqggABqpEAAaqgAAGqrwABqr4AAarNAAGq4gABquMAAarrAAGq9wABqwsAAasaAAGrKQABqzgAAas8AAGrSwABq1oAAatpAAGreAABq4cAAauTAAGrpQABq7QAAau1AAGrxAABq9MAAaviAAGr8QABrAAAAawPAAGsJAABrCUAAawtAAGsOQABrE0AAaxcAAGsawABrHoAAax+AAGsjQABrJwAAayrAAGsugABrMkAAazVAAGs5wABrPYAAa0FAAGtFAABrSMAAa0yAAGtQQABrVAAAa1lAAGtZgABrW4AAa16AAGtjgABrZ0AAa2sAAGtuwABrb8AAa3OAAGt3QABrewAAa37AAGuCgABrhYAAa4oAAGuNwABrkYAAa5VAAGuZAABrnMAAa6CAAGukQABrqYAAa6nAAGurwABrrsAAa7PAAGu3gABru0AAa78AAGvAAABrw8AAa8eAAGvLQABrzwAAa9LAAGvVwABr2kAAa94AAGvhwABr5YAAa+lAAGvvwABr8AAAa/GAAGv0gABr+gAAa/3AAGv+gABsAkAAbAYAAGwHAABsCIAAbAjAAGwJAABsDMAAbBCAAGwRQABsFQAAbB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eAAHUrQAB1LAAAdS/AAHUzgAB1NIAAdThAAHU8AAB1PEAAdT/AAHVAAAB1QEAAdUCAAHVAwAB1QQAAdUZAAHVGgAB1SIAAdUuAAHVQgAB1VEAAdVgAAHVbwAB1XMAAdWCAAHVkQAB1aAAAdWvAAHVvgAB1coAAdXcAAHV6wAB1foAAdYJAAHWGAAB1icAAdY2AAHWRQAB1loAAdZbAAHWYwAB1m8AAdaDAAHWkgAB1qEAAdawAAHWtAAB1sMAAdbSAAHW4QAB1vAAAdb/AAHXCwAB1x0AAdcsAAHXOwAB10oAAddZAAHXaAAB13cAAdeGAAHXmwAB15wAAdekAAHXsAAB18QAAdfTAAHX4gAB1/EAAdf1AAHYBAAB2BMAAdgiAAHYMQAB2EAAAdhMAAHYXgAB2G0AAdh8AAHYiwAB2JoAAdipAAHYuAAB2McAAdjcAAHY3QAB2OUAAdjxAAHZBQAB2RQAAdkjAAHZMgAB2TYAAdlFAAHZVAAB2WMAAdlyAAHZgQAB2Y0AAdmfAAHZrgAB2b0AAdnMAAHZ2wAB2eoAAdn5AAHaCAAB2h0AAdoeAAHaJgAB2jIAAdpGAAHaVQAB2mQAAdpzAAHadwAB2oYAAdqVAAHapAAB2rMAAdrCAAHazgAB2uAAAdrvAAHa/gAB2w0AAdscAAHbKwAB2zoAAdtJAAHbXgAB218AAdtnAAHbcwAB24cAAduWAAHbpQAB27QAAdu4AAHbxwAB29YAAdvlAAHb9AAB3AMAAdwPAAHcIQAB3DAAAdw/AAHcTgAB3F0AAdxsAAHcewAB3IoAAdyNAAHcnAAB3KsAAdy6AAHczwAB3NAAAdzYAAHc5AAB3PgAAd0HAAHdFgAB3SUAAd0pAAHdOAAB3UcAAd1WAAHdZQAB3XQAAd2AAAHdkgAB3aEAAd2wAAHdvwAB3c4AAd3dAAHd7AAB3fsAAd4QAAHeEQAB3hkAAd4lAAHeOQAB3kgAAd5XAAHeZgAB3moAAd55AAHeiAAB3pcAAd6mAAHetQAB3sEAAd7TAAHe4gAB3vEAAd8AAAHfDwAB3x4AAd8tAAHfPAAB31EAAd9SAAHfWgAB32YAAd96AAHfiQAB35gAAd+nAAHfqwAB37oAAd/JAAHf2AAB3+cAAd/2AAHgAgAB4BQAAeAjAAHgMgAB4EEAAeBQAAHgXwAB4G4AAeB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AAJ+AN4EEmoEIrYELDYEOU4EIfIEFQIEeboECloEj7oEF9YDBgQnCgRbZgQcGgQLagRAxgRZegRffgQbDgQXNgRvrgRaNgQrDgR4ogQhSgQZogRHwgRVzgRYZgQkjgQmTgQMPgQo3gQIigRRXgR0qgQVugQ8YgQlqgRqMgQPRgSFEgQEvgQjcgRongR3LgRLAgRysgFVfEBpQZXJzaXN0ZWRHcm91cFYyRGlzY3Vzc2lvbl8QEFBlbmRpbmdSZXBsaWVkVG9fEDlQZXJzaXN0ZWRFeHBpcmF0aW9uRm9yUmVjZWl2ZWRNZXNzYWdlV2l0aExpbWl0ZWRFeGlzdGVuY2VfECVQZXJzaXN0ZWRBdHRhY2htZW50U2VudFJlY2lwaWVudEluZm9zXxATUGVyc2lzdGVkRGlzY3Vzc2lvbl8QGFBlcnNpc3RlZE1lc3NhZ2VSZWNlaXZlZF8QHVBlcnNpc3RlZFVzZXJNZW50aW9uSW5NZXNzYWdlXxAcUGVyc2lzdGVkTWVzc2FnZVJlYWN0aW9uU2VudF8QF1BlcnNpc3RlZENhbGxMb2dDb250YWN0XxAXUGVyc2lzdGVkR3JvdXBWMkRldGFpbHNeUGVyc2lzdGVkRHJhZnRfEBBQZXJzaXN0ZWRHcm91cFYyXxAdU2VudEZ5bGVNZXNzYWdlSm9pbldpdGhTdGF0dXNfEBtQZXJzaXN0ZWRQZW5kaW5nR3JvdXBNZW1iZXJfEBlGeWxlTWVzc2FnZUpvaW5XaXRoU3RhdHVzXxAUUGVyc2lzdGVkQ2FsbExvZ0l0ZW1fECVQZXJzaXN0ZWREaXNjdXNzaW9uTG9jYWxDb25maWd1cmF0aW9uXxAaUGVyc2lzdGVkQ29udGFjdEdyb3VwT3duZWRfEBVEaXNwbGF5ZWRDb250YWN0R3JvdXBURnlsZV8QG1BlcnNpc3RlZFVzZXJNZW50aW9uSW5EcmFmdF8QLVBlcnNpc3RlZExhdGVzdERpc2N1c3Npb25TZW5kZXJTZXF1ZW5jZU51bWJlcl8QFVBlcnNpc3RlZENvbnRhY3RHcm91cF8QIlBlcnNpc3RlZE1lc3NhZ2VTZW50UmVjaXBpZW50SW5mb3NfECBQZXJzaXN0ZWRNZXNzYWdlUmVhY3Rpb25SZWNlaXZlZF8QIVJlY2VpdmVkRnlsZU1lc3NhZ2VKb2luV2l0aFN0YXR1c18QFlBlcnNpc3RlZERyYWZ0RnlsZUpvaW5fECZQZXJzaXN0ZWREaXNjdXNzaW9uU2hhcmVkQ29uZmlndXJhdGlvbl8QE1BlcnNpc3RlZEludml0YXRpb25fEClQZXJzaXN0ZWRJbnZpdGF0aW9uT25lVG9PbmVJbnZpdGF0aW9uU2VudF8QOlBlcnNpc3RlZEV4cGlyYXRpb25Gb3JSZWNlaXZlZE1lc3NhZ2VXaXRoTGltaXRlZFZpc2liaWxpdHlfEBRQZXJzaXN0ZWRNZXNzYWdlU2VudF8QFlBlcnNpc3RlZE1lc3NhZ2VTeXN0ZW1fEDZQZXJzaXN0ZWRFeHBpcmF0aW9uRm9yU2VudE1lc3NhZ2VXaXRoTGltaXRlZFZpc2liaWxpdHlfEBtQZXJzaXN0ZWRPYnZDb250YWN0SWRlbnRpdHlfEBdQZXJzaXN0ZWRPYnZPd25lZERldmljZV8QI1BlcnNpc3RlZE1lc3NhZ2VUaW1lc3RhbXBlZE1ldGFkYXRhXxAUUGVyc2lzdGVkVXNlck1lbnRpb25fEBpSZW1vdGVSZXF1ZXN0U2F2ZWRGb3JMYXRlcl8QNVBlcnNpc3RlZEV4cGlyYXRpb25Gb3JTZW50TWVzc2FnZVdpdGhMaW1pdGVkRXhpc3RlbmNlXxAbUGVyc2lzdGVkQ29udGFjdEdyb3VwSm9pbmVkXxAQUGVyc2lzdGVkTWVzc2FnZV8QGVBlcnNpc3RlZE9idkNvbnRhY3REZXZpY2VfEBZQZXJzaXN0ZWRHcm91cFYyTWVtYmVyXxAaUGVyc2lzdGVkTWVzc2FnZUV4cGlyYXRpb25fEBhQZXJzaXN0ZWRHcm91cERpc2N1c3Npb25fEBhQZXJzaXN0ZWRNZXNzYWdlUmVhY3Rpb25fEBlQZXJzaXN0ZWRPYnZPd25lZElkZW50aXR5XxAbUGVyc2lzdGVkT25lVG9PbmVEaXNjdXNzaW9u3xAQAAAA0wAAANQAAADVAAAA1gAAACEAAADXAAAA2AAAACMAAADZAAAA2gAAAA4AAAAlAAAA2wAAANwAAAAoAAAA3QAAAN4AAADfAAAAKQAAACkAAAAUAAAA4wAAAOQAAAAxAAAAKQAAAN4AAADnAAAAPQAAAN4AAADqAAAA6wAAAOxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2VbX2lzQWJzdHJhY3SAOYBdgASABIACgDqBA82ABIA5gQUogAaAOYElaIA4CBJRyKAGV29yZGVyZWTTAAAAOgAAADsAAAAOAAAA8AAAAPIAAACgoQAAAPGAO6EAAADzgDyAVV5YRF9QU3RlcmVvdHlwZdkAAAAhAAAAJQAAAPcAAAAOAAAAKAAAAPgAAAAjAAAA3QAAAPkAAABvAAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAAQFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAN4A7gDmAXIAAgAQIgD3TAAAAOgAAADsAAAAOAAABAwAAAQ0AAACgqQAAAQQAAAEFAAABBgAAAQcAAAEIAAABCQAAAQoAAAELAAABDIA+gD+AQIBBgEKAQ4BEgEWARqkAAAEOAAABDwAAARAAAAERAAABEgAAARMAAAEUAAABFQAAARaAR4BLgEyAToBPgFGAU4BWgFqAVV8QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxA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AA20AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgJOAAICOCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAAO+AAADvwAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAADbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgI4ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAADbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgI4ICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAADbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgI4ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAADbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgI4ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAADbQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgI4ICAgIgEqAbwgIgAAI2QAAACEAAAAlAAAEDQAAAA4AAAAoAAAEDgAAACMAAADdAAAEDwAAAfEAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAEF18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYCLgGWAOYBcgACABAiAmtMAAAA6AAAAOwAAAA4AAAQZAAAEIQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAABCIAAAQjAAAEJAAABCUAAAQmAAAEJwAABCiAm4CcgJ2AnoCfgKCAoYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAADbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgJkICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAADbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgJkICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAADbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgJkICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAADbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgJkICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAADbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgJkICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAADbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgJkICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAADbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgJkICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAAElAAAACEAAAEmAAABJwAABJUAAAAjAAABJQAABJYAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAG8AAADsAAAA7AAABJ4AAAAxAAAA7AAAAN4AAADsAAAEogAAAe4AAADsAAAA7AAABKYAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASANwgIgKQIgDkIgQLFgGAICICjCBK/6Gmn0wAAADoAAAA7AAAADgAABKoAAAStAAAAoKIAAAIPAAAErIBkgKWiAAAErgAABK+ApoCygFVfEBBYRF9QUl9TdGVyZW90eXBl2QAAACEAAAAlAAAEswAAAA4AAAAoAAAEtAAAACMAAADdAAAEtQAAAfIAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAEvV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYCigGSAOYBcgACABAiAp9MAAAA6AAAAOwAAAA4AAAS/AAAEyAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAABMkAAATKAAAEywAABMwAAATNAAAEzgAABM8AAATQgKiAqYCqgKyArYCvgLCAsYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAErgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgKYICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAErgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgKYICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABPIAAAAXAAAErgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACAq4AAgKYICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAABQAAAAUBAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAASuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACApggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAASuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACApggICAiASoBsCAiAAAgJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAE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AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB6kAAAAXAAAILgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACA+4AAgQERCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAACC4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBEQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAguAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBAREICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAAILgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgQERCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAACC4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBEQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAguAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBAREICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAILgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQERCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAACVQAAAAhAAABJgAAAScAAAlVAAAAIwAAASUAAAlWAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB6AAAA7AAAAOwAAAleAAAAMQAAAOwAAADeAAAA7AAABKIAAAaUAAAA7AAAAOwAAAlmAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgMEICIEBHAiAOQiBAsWA2QgIgQEbCBMAAAABIh8C79MAAAA6AAAAOwAAAA4AAAlqAAAJbQAAAKCiAAACDwAABKyAZIClogAACW4AAAlvgQEdgQEogFXZAAAAIQAAACUAAAlyAAAADgAAACgAAAlzAAAAIwAAAN0AAAl0AAAGqQAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAAl8XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQEagGSAOYBcgACABAiBAR7TAAAAOgAAADsAAAAOAAAJfgAACYcAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAAmIAAAJiQAACYoAAAmLAAAJjAAACY0AAAmOAAAJj4EBH4EBIIEBIYEBI4EBJIEBJYEBJoEBJ4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAJbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQEdCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAACW4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBHQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAJsQAAABcAAAluAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEBIoAAgQEdCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAAm/AAAJwAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAJbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQEdCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAACW4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBHQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAAluAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBAR0ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAJbgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQEdCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAACW4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBHQgICAiASoBvCAiAAAjZAAAAIQAAACUAAAoOAAAADgAAACgAAAoPAAAAIwAAAN0AAAoQAAAGqQAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAAoYXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQEagKWAOYBcgACABAiBASnTAAAAOgAAADsAAAAOAAAKGgAACiIAAACgpwAABV0AAAVeAAAFXwAABWAAAAVhAAAFYgAABWOAtIC1gLaAt4C4gLmAuqcAAAojAAAKJAAACiUAAAomAAAKJwAACigAAAopgQEqgQErgQEtgQEugSN7gSN8gSN9gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAAlvAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBASgICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAACjwAAAAXAAAJbwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACBASyAAIEBKAgICAiASoC1CAiAAAgQAt8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAACW8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVfAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEBKAgICAiASoC2CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAmgAAABcAAAlvAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYAAAAOwAAADsAAAAFwAAAOyAAIEBL4AAgQEoCAgICIBKgLcICIAACN8QEAAACmkAAApqAAAKawAACmwAAAAhAAAKbQAACm4AAAAjAAAKbwAACnAAAAAOAAAAJQAACnEAAApyAAAAKAAAAN0AAADeAAAKdAAAACkAAAApAAAAFAAACngAAADkAAAAMQAAACkAAADeAAAA5wAAAGgAAADeAAAKfwAACoAAAADsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgDmBAUWABIAEgAKBATGBA82ABIA5gQUogDGAOYEjeoEBMAgTAAAAARux1GTTAAAAOgAAADsAAAAOAAAKhAAACoYAAACgoQAAAPGAO6EAAAqHgQEygFXZAAAAIQAAACUAAAqKAAAADgAAACgAAAqLAAAAIwAAAN0AAAqMAAAAmgAAAPEAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAAqUXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQEvgDuAOYBcgACABAiBATPTAAAAOgAAADsAAAAOAAAKlgAACqAAAACgqQAAAQQAAAEFAAABBgAAAQcAAAEIAAABCQAAAQoAAAELAAABDIA+gD+AQIBBgEKAQ4BEgEWARqkAAAqhAAAKogAACqMAAAqkAAAKpQAACqYAAAqnAAAKqAAACqmBATSBATaBATeBATyBAT2BAT+BAUCBAUKBAUOAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAqtAAAAFwAACocAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEEAAAA7AAAAOwAAAAXAAAA7IAAgQE1gACBATIICAgIgEqAPggIgAAI0gAAADsAAAAOAAAKuwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAqHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBQAAAOwAAADsAAAAFwAAAOyAAIAAgACBATIICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAACs4AAAAXAAAKhwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACBATiAAIEBMggICAiASoBACAiAAAjSAAAAOwAAAA4AAArcAAABPKEAAArdgQE5gEnSAAAAOwAAAA4AAArgAAABPKMAAArhAAAB7QAACuOBATqAX4EBO4BJXxAYcmF3T3duZWRJZGVudGl0eUlkZW50aXR5WGlkZW50aXR53xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAKhwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQEyCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAE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pAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAM2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQFvCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA0dAAAAFwAADNoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQF0gACBAW8ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAADSsAAA0sAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAAzaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBAW8ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAAM2gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQFvCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAADNoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBbwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAzaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBAW8ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAE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UgQGVgQGWgQGXgQGYgQGZgQGagFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAA4dAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBAZIICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAOHQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQGSCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAADh0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBkggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAA4dAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBAZIICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAOHQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQGSCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAADh0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEBkggICAiASoCACAiAAAjfEA8AAAEiAAA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AAAA7AAAADgAAEUoAABFSAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAARUwAAEVQAABFVAAARVgAAEVcAABFYAAARWYEBwoEBw4EBxIEBxYEBxoEBx4EByIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAQnwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQHACAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAEJ8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEBwAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABCfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBAcAICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAAQnwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEBwAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABCfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBAcAICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACg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AAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAUYgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQIFCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAFGIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIECBQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAABRiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgQIFCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAFGIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIECBQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABRiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBAgUICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAUYgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQIFCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAFYgAAAAhAAABJgAAAScAABWJAAAAIwAAASUAABWKAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACaAAAA7AAAAOwAABWSAAAAMQAAAOwAAADeAAAA7AAABKIAAAtTAAAA7AAAAOwAABWaAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQEvCAiBAhAIgDkIgQLFgQFNCAiBAg8IEjYcYl/TAAAAOgAAADsAAAAOAAAVngAAFaEAAACgogAAAg8AAASsgGSApaIAABWiAAAVo4ECEYECHIBV2QAAACEAAAAlAAAVpgAAAA4AAAAoAAAVpwAAACMAAADdAAAVqAAAC2UAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAVsF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECDoBkgDmAXIAAgAQIgQIS0wAAADoAAAA7AAAADgAAFbIAABW7AAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAAVvAAAFb0AABW+AAAVvwAAFcAAABXBAAAVwgAAFcOBAhOBAhSBAhWBAheBAhiBAhmBAhqBAhuAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAFaIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIECEQgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABWiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBAhEICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAFeUAAAAXAAAVogAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBAhaAAIECEQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAAV8wAAFfQAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAFaIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIECEQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAABWiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBAhEICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAVogAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQIRCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAFaIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIECEQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAABWiAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBAhEICAgIgEqAbwgIgAAI2QAAACEAAAAlAAAWQgAAAA4AAAAoAAAWQwAAACMAAADdAAAWRAAAC2UAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAWTF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECDoClgDmAXIAAgAQIgQId0wAAADoAAAA7AAAADgAAFk4AABZWAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAAAWVwAAFlgAABZZAAAWWgAAFlsAABZcAAAWXYECHoECH4ECIIECIYEivoEiv4EiwIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAAVowAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQIcCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwAAFaMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIECHAgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAABWjAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBAhwICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAJEAAAAXAAAVowAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBAiKAAIECHAgICAiASoC3CAiAAAjfEBAAABacAAAWnQAAFp4AABafAAAAIQAAFqAAABahAAAAIwAAFqIAABajAAAADgAAACUAABakAAAWpQAAACgAAADdAAAA3gAAFqcAAAApAAAAKQAAABQAABarAAAA5AAAADEAAAApAAAA3gAAAOcAAABfAAAA3gAAFrIAABazAAAA7F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYA5gQI3gASABIACgQIkgQPNgASAOYEFKIAogDmBIr2BAiMIEwAAAAEZY3UC0wAAADoAAAA7AAAADgAAFrcAABa5AAAAoKEAAADxgDuhAAAWuoECJYBV2QAAACEAAAAlAAAWvQAAAA4AAAAoAAAWvgAAACMAAADdAAAWvwAAAJEAAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAWx18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECIoA7gDmAXIAAgAQIgQIm0wAAADoAAAA7AAAADgAAFskAABbTAAAAoKkAAAEEAAABBQAAAQYAAAEHAAABCAAAAQkAAAEKAAABCwAAAQyAPoA/gECAQYBCgEOARIBFgEapAAAW1AAAFtUAABbWAAAW1wAAFtgAABbZAAAW2gAAFtsAABbcgQIngQIpgQIqgQIugQIvgQIxgQIygQI0gQI1gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAW4AAAABcAABa6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBAAAAOwAAADsAAAAFwAAAOyAAIECKIAAgQIlCAgICIBKgD4ICIAACNIAAAA7AAAADgAAFu4AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAWugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQUAAADsAAAA7AAAABcAAADsgACAAIAAgQIlCAgICIBKgD8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAABcBAAAAFwAAFroAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgQIrgACBAiUICAgIgEqAQAgIgAAI0gAAADsAAAAOAAAXDwAAATyhAAAXEIECLIBJ0gAAADsAAAAOAAAXEwAAATyiAAAXFAAACuOBAi2BATuASV8QGHJhd093bmVkSWRlbnRpdHlJZGVudGl0ed8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAFroAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIECJQgICAiASoBBCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAXKQAAABcAABa6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCAAAAOwAAADsAAAAFwAAAOyAAIECMIAAgQIlCAgICIBKgEIICIAACNIAAAA7AAAADgAAFzcAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAWugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAUoAAgQIlCAgICIBKgEMICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAABdKAAAAFwAAFroAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEKAAAA7AAAAOwAAAAXAAAA7IAAgQIzgACBAiUICAgIgEqARAgIgAAI0wAAADoAAAA7AAAADgAAF1gAABdZAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABtQAAABcAABa6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCwAAAOwAAADsAAAAFwAAAOyAAIBXgACBAiUICAgIgEqARQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAF2wAAAAXAAAWugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQwAAADsAAAA7AAAABcAAADsgACBAjaAAIECJQgICAiASoBGCAiAAAhfEBtQZXJzaXN0ZWRPYnZDb250YWN0SWRlbnRpdHnTAAAAOgAAADsAAAAOAAAXewAAF5kAAACgrxAdAAAXfAAAF30AABd+AAAXfwAAF4AAABeBAAAXggAAF4MAABeEAAAXhQAAF4YAABeHAAAXiAAAF4kAABeKAAAXiwAAF4wAABeNAAAK4wAAF48AABeQAAAXkQAAF5IAABeTAAAXlAAAF5UAABeWAAAXlwAAF5iBAjiBAjmBAjqBAjuBAjyBAj2BAj6BAj+BAkCBAkGBAkKBAkOBAkSBAkWBAkaBAkeBAkiBAkmBATuBAkqBAkuBAkyBAk2BAk6BAk+BAlCBAlGBAlKBAlOvEB0AABeaAAAXmwAAF5wAABedAAAXngAAF58AABegAAAXoQAAF6IAABejAAAXpAAAF6UAABemAAAXpwAAF6gAABepAAAXqgAAF6sAABesAAAXrQAAF64AABevAAAXsAAAF7EAABeyAAAXswAAF7QAABe1AAAXtoECVIECa4ECgoEgjoEgpYEgvIEMpYEg04EeVIEg6oEauYEhAoEhGYEhMIEh1oEh7YEc8YEiBIEiG4EiM4EiSoEZoIEiYYEieIEcGYEij4EbdoEipoEDcIBVXxAdY2FwYWJpbGl0eVdlYnJ0Y0NvbnRpbnVvdXNJQ0VfEA9zb3J0RGlzcGxheU5hbWVeY2FsbExvZ0NvbnRhY3RfEB1zZXJpYWxpemVkSWRlbnRpdHlDb3JlRGV0YWlsc18QEWN1c3RvbURpc3BsYXlOYW1lXxASY2FwYWJpbGl0eUdyb3Vwc1YyWG1lc3NhZ2VzXXBlcm1hbmVudFVVSURZcmVhY3Rpb25zWGlzQWN0aXZlXxASb3duZWRDb250YWN0R3JvdXBzWmlzT25lVG9PbmVfEBhpc0NlcnRpZmllZEJ5T3duS2V5Y2xvYWtXZGV2aWNlc18QE2N1c3RvbVBob3RvRmlsZW5hbWVfEA9hc0dyb3VwVjJNZW1iZXJfEBVyYXdPbmVUb09uZURpc2N1c3Npb25ZcmF3U3RhdHVzVG5vdGVfEBhyYXdPd25lZElkZW50aXR5SWRlbnRpdHldY29udGFjdEdyb3Vwc1hwaG90b1VSTF8QGmNhcGFiaWxpdHlPbmVUb09uZUNvbnRhY3RzXxAbbGF0ZXN0U2VuZGVyU2VxdWVuY2VOdW1iZXJzXxAPZnVsbERpc3BsYXlOYW1lXxAQcmF3T3duZWRJZGVudGl0eV8QMmF0TGVhc3RPbmVEZXZpY2VBbGxvd3NUaGlzQ29udGFjdFRvUmVjZWl2ZU1lc3NhZ2VzXnN5c3RlbU1lc3NhZ2Vz3xASAAABIgAAASMAAAEkAAAX1QAAACEAAAEmAAABJwAAF9YAAAAjAAABJQAAF9cAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJEAAADsAAAA7AAAF98AAAAxAAAA7AAAAN4AAADsAAACBgAAF3wAAADsAAAA7AAAF+cAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmF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AAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIECeQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABkxAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBAnkICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAAZMQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIECeQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAABkxAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBAnkICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAZMQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQJ5CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAGTEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIECeQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAABpXAAAAIQAAASYAAAEnAAAaWAAAACMAAAElAAAaWQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAkQAAAOwAAADsAAAaYQAAADEAAADsAAA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kQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAymAZIA5gFyAAIAECIEDLdMAAAA6AAAAOwAAAA4AACHfAAAh6AAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAIekAACHqAAAh6wAAIewAACHtAAAh7gAAIe8AACHwgQMugQMvgQMwgQMygQMzgQM0gQM1gQM2gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACHPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBAywICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAhzwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQMsCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACISAAAAFwAAIc8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQMxgACBAywICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAIiAAACIhAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACHPAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBAywICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACU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PAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAjEgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQNFCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACNVAAAAFwAAIxIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQNKgACBA0UICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAI2MAACNkAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACMSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBA0UICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAAjEgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQNFCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAIxIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEDRQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAACMSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBA0UICAgIgEqAbggIgAAI3xA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OAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACWUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBA3MICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAllAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQNzCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACXXAAAAFwAAJZQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQN4gACBA3MICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAJeUAACXmAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACWUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBA3MICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAAllAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQNzCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAJZQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEDcwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAA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fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA4eAZYA5gFyAAIAECIEDl9MAAAA6AAAAOwAAAA4AACeCAAAnigAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAJ4sAACeMAAAnjQAAJ44AACePAAAnkAAAJ5GBA5iBA5mBA5qBA5uBA5yBA52BA56AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAJtYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEDlggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACbWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBA5YICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAm1gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQOWCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwAAJtYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBA5YICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAm1gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQOWCAgICIBKgH8ICIAACN8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AAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQOtCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAKBgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEDrQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAACgYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBA60ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAoGAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQOtCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAKBgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEDrQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAACgYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBA60ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAApPgAAACEAAAEmAAABJwAAKT8AAAAjAAABJQAAKUAAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAI8AAADsAAAA7AAAKUgAAAA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BPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAKrQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIED1AgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAq+wAAABcAACq0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIED2oAAgQPUCAgICIBKgEAICIAACNIAAAA7AAAADgAAKwkAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAqtAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQPUCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACscAAAAFwAAKrQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQPdgACBA9QICAgIgEqAQggIgAAI0gAAADsAAAAOAAArKgAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAACq0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAICugACBA9QICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAKz0AAAAXAAAqtAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBA+CAAIED1AgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAAArSwAAK0wAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAAKrQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIED1AgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAArXwAAABcAACq0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIED44AAgQPUCAgICIBKgEYICIAACF8QEFBlcnNpc3RlZE1lc3NhZ2XTAAAAOgAAADsAAAAOAAArbgAAK4UAAACgrxAWAAArbwAAK3AAACtxAAArcgAAK3MAACt0AAArdQAAK3YAACt3AAAreAAAK3kAACt6AAArewAAK3wAABeNAAArfgAAK38AACuAAAArgQAAK4IAACuDAAArhIED5YED5oED54ED6IED6YED6oED64ED7IED7YED7oED74ED8IED8YED8oECSYED84ED9IED9YED9oED94ED+IED+a8QFgAAK4YAACuHAAAriAAAK4kAACuKAAAriwAAK4wAACuNAAArjgAAK48AACuQAAArkQAAK5IAACuTAAArlAAAK5UAACuWAAArlwAAK5gAACuZAAArmgAAK5uBA/qBBBGBBD+BBFeBBG+BBIaBBSyBHRaBHaCBHbeBHoeBEAaBHp6BHrWBHsyBHuOBDeOBHvqBDtaBHxGBHyiBBCiAVV8QGGRvZXNNZW50aW9uT3duZWRJZGVudGl0eVdyZXBsaWVzWXNvcnRJbmRleF1wZXJtYW5lbnRVVUlEXxAXaXNSZXBseVRvQW5vdGhlck1lc3NhZ2VfEBptZXNzYWdlUmVwbGllZFRvSWRlbnRpZmllclhtZW50aW9uc18QEXBlcnNpc3RlZE1ldGFkYXRhXxAUc2VuZGVyU2VxdWVuY2VOdW1iZXJccmF3UmVhY3Rpb25zVGJvZHlfECBpbGx1c3RyYXRpdmVNZXNzYWdlRm9yRGlzY3Vzc2lvbll0aW1lc3RhbXBfEBFzZWN0aW9uSWRlbnRpZmllclhyZWFkT25jZVVkcmFmdF8QFXJhd1Zpc2liaWxpdHlEdXJhdGlvblpkaXNjdXNzaW9uWWZvcndhcmRlZFxvbkNoYW5nZUZsYWdfEBNyYXdNZXNzYWdlUmVwbGllZFRv3xASAAABIgAAASMAAAEkAAArswAAACEAAAEmAAABJwAAK7QAAAAjAAABJQAAK7UAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJgAAADsAAAA7AAAK70AAAAxAAAA7AAAAN4AAADsAAACBgAAK28AAADsAAAA7AAAK8UAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBA9EICIED/AiAOQiAioED5QgIgQP7CBJIzpy50wAAADoAAAA7AAAADgAAK8kAACvMAAAAoKIAAAIPAAACEIBkgGWiAAArzQAAK86BA/2BBAiAVdkAAAAhAAAAJQAAK9EAAAAOAAAAKAAAK9IAAAAjAAAA3QAAK9MAACuGAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAK9tfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA/qAZIA5gFyAAIAECIED/tMAAAA6AAAAOwAAAA4AACvdAAAr5gAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAK+cAACvoAAAr6QAAK+oAACvrAAAr7AAAK+0AACvugQP/gQQAgQQBgQQDgQQEgQQFgQQGgQQHgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACvNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBA/0ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAArzQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQP9CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACwQAAAAFwAAK80AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQQCgACBA/0ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAALB4AACwfAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAACvNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBA/0ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAArzQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQP9CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAK80AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIED/QgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAACvNAAAA7AAAAOw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xgQQygQQzgQQ0gQQ1gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAC5PAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBCsICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAuTwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQQrCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAC6SAAAAFwAALk8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQQwgACBBCsICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAALqAAAC6hAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAC5PAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBCsICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAAuTwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQQrCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAALk8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEKwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAC5PAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBCsICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAuTwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQQrCAgICIBKgG8ICIAACNkAAAAhAAAAJQAALu8AAAAOAAAAKAAALvAAAAAjAAAA3QAALvEAACubAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAALvlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBCiApYA5gFyAAIAECIEEN9MAAAA6AAAAOwAAAA4AAC77AAAvAwAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwAALwQAAC8FAAAvBgAALwcAAC8IAAAvCQAALwqBBDiBBDmBBDqBBDuBBDyBBD2BBD6AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAALlAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEENggICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAC5QAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBBDYICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAAuUAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQQ2CAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACYAAAAFwAALlAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQPRgACBBDYICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAuUAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQQ2CAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAALlAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEENggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAArhwAAABcAAC5QAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEEEYAAgQQ2CAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAAAL3YAAAAhAAABJgAAAScAAC93AAAAIwAAASUAAC94AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACYAAAA7AAAAOwAAC+AAAAAMQAAAOwAAADeAAAA7AAAAgYAACtxAAAA7AAAAOwAAC+IAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQPRCAiBBEEIgDkIgIqBA+cICIEEQAgS01tcH9MAAAA6AAAAOwAAAA4AAC+MAAAvjwAAAKCiAAACDwAAAhCAZIBlogAAL5AAAC+RgQRCgQRNgFXZAAAAIQAAACUAAC+UAAAADgAAACgAAC+VAAAAIwAAAN0AAC+WAAAriAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAC+eXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQQ/gGSAOYBcgACABAiBBEPTAAAAOgAAADsAAAAOAAAvoAAAL6kAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAC+qAAAvqwAAL6wAAC+tAAAvrgAAL68AAC+wAAAvsYEERIEERYEERoEESIEESYEESoEES4EETIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAvkAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQRCCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAL5AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEQggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAv0wAAABcAAC+QAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEER4AAgQRCCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAC/hAAAv4gAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAvkAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQRCCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAL5AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEQggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAC+QAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBBEIICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAvkAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQRCCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAL5AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEQggICAiASoBvCAiAAAjZAAAAIQAAACUAADAwAAAADgAAACgAADAxAAAAIwAAAN0AADAyAAAriAAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAADA6XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQQ/gGWAOYBcgACABAiBBE7TAAAAOgAAADsAAAAOAAAwPAAAMEQAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAADBFAAAwRgAAMEcAADBIAAAwSQAAMEoAADBLgQRPgQRQgQRRgQRSgQRUgQRVgQRWgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAijgAAABcAAC+RAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIEDOoAAgQRNCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAL5EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEETQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAC+RAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBBE0ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMHwAAAAXAAAvkQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBFOAAIEETQgICAiASoB+CAiAAAgRAfTfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAC+RAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBE0ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAvkQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQRNCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAL5EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEETQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAADC4AAAAIQAAASYAAAEnAAAwuQAAACMAAAElAAAwugAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAmAAAAOwAAADsAAAwwgAAADEAAADsAAAA3gAAAOwAAAIGAAArcgAAAOwAAADsAAAwygAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIED0QgIgQRZCIA5CICKgQPoCAiBBFgIEnLEYrXTAAAAOgAAADsAAAAOAAAwzgAAMNEAAACgogAAAg8AAAIQgGSAZaIAADDSAAAw04EEWoEEZYBV2QAAACEAAAAlAAAw1gAAAA4AAAAoAAAw1wAAACMAAADdAAAw2AAAK4kAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAw4F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEV4BkgDmAXIAAgAQIgQRb0wAAADoAAAA7AAAADgAAMOIAADDrAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAAw7AAAMO0AADDuAAAw7wAAMPAAADDxAAAw8gAAMPOBBFyBBF2BBF6BBGCBBGGBBGKBBGOBBGSAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAMNIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEWggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADDSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBFoICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMRUAAAAXAAAw0gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBBF+AAIEEWggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAAxIwAAMSQAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAMNIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEWggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADDSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBFoICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAw0gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQRaCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAMNIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEWggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADDSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBFoICAgIgEqAbwgIgAAI2QAAACEAAAAlAAAxcgAAAA4AAAAoAAAxcwAAACMAAADdAAAxdAAAK4kAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAxfF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEV4BlgDmAXIAAgAQIgQRm0wAAADoAAAA7AAAADgAAMX4AADGGAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAAxhwAAMYgAADGJAAAxigAAMYsAADGMAAAxjYEEZ4EEaIEEaYEEaoEEbIEEbYEEboBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAw0wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQRlCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAMNMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEZQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADDTAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBBGUICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMb4AAAAXAAAw0wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBGuAAIEEZQgICAiASoB+CAiAAAgRBEzfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADDTAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBGUICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAw0wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQRlCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAMNMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEZQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAADH6AAAAIQAAASYAAAEnAAAx+wAAACMAAAElAAAx/AAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAmAAAAOwAAADsAAAyBAAAADEAAADsAAAA3gAAAOwAAAIGAAArcwAAAOwAAADsAAAyDAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIED0QgIgQRxCIA5CICKgQPpCAiBBHAIEmrvAt/TAAAAOgAAADsAAAAOAAAyEAAAMhMAAACgogAAAg8AAAIQgGSAZaIAADIUAAAyFYEEcoEEfYBV2QAAACEAAAAlAAAyGAAAAA4AAAAoAAAyGQAAACMAAADdAAAyGgAAK4oAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAyIl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEb4BkgDmAXIAAgAQIgQRz0wAAADoAAAA7AAAADgAAMiQAADItAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAAyLgAAMi8AADIwAAAyMQAAMjIAADIzAAAyNAAAMjWBBHSBBHWBBHaBBHiBBHmBBHqBBHuBBHyAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAMhQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEcggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADIUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBHIICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMlcAAAAXAAAyFAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBBHeAAIEEcggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAAyZQAAMmYAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAMhQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEcggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADIUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBHIICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAyFAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQRyCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAMhQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEcggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADIUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBHIICAgIgEqAbwgIgAAI2QAAACEAAAAlAAAytAAAAA4AAAAoAAAytQAAACMAAADdAAAytgAAK4oAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAyvl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEb4BlgDmAXIAAgAQIgQR+0wAAADoAAAA7AAAADgAAMsAAADLIAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAAyyQAAMsoAADLLAAAyzAAAMs0AADLOAAAyz4EEf4EEgIEEgYEEgoEEg4EEhIEEhYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB6kAAAAXAAAyFQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACA+4AAgQR9CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAMhUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEfQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADIVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBBH0ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAAyFQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgQR9CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAMhUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEfQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADIVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBH0ICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAyFQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQR9CAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAMzsAAAAhAAABJgAAAScAADM8AAAAIwAAASUAADM9AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACYAAAA7AAAAOwAADNFAAAAMQAAAOwAAADeAAAA7AAABKIAACt0AAAA7AAAAOwAADNNAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQPRCAiBBIgIgDkIgQLFgQPqCAiBBIcIEv1yR6jTAAAAOgAAADsAAAAOAAAzUQAAM1QAAACgogAAAg8AAASsgGSApaIAADNVAAAzVoEEiYEElIBV2QAAACEAAAAlAAAzWQAAAA4AAAAoAAAzWgAAACMAAADdAAAzWwAAK4sAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAzY18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEhoBkgDmAXIAAgAQIgQSK0wAAADoAAAA7AAAADgAAM2UAADNuAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAAzbwAAM3AAADNxAAAzcgAAM3MAADN0AAAzdQAAM3aBBIuBBIyBBI2BBI+BBJCBBJGBBJKBBJOAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAM1UAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEiQgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADNVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBIkICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAM5gAAAAXAAAzVQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBBI6AAIEEiQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAAzpgAAM6cAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAM1UAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEiQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAADNVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBBIkICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAzVQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQSJCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAM1UAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEiQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADNVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBIkICAgIgEqAbwgIgAAI2QAAACEAAAAlAAAz9QAAAA4AAAAoAAAz9gAAACMAAADdAAAz9wAAK4sAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAAz/18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEhoClgDmAXIAAgAQIgQSV0wAAADoAAAA7AAAADgAANAEAADQJAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAAA0CgAANAsAADQMAAA0DQAANA4AADQPAAA0EIEEloEEl4EEmIEEmYEFKYEFKoEFK4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAAzVgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQSUCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwAAM1YAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBBJQICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAAzVgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQSUCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAABwAAAAFwAAM1YAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQSagACBBJQICAgIgEqAtwgIgAAI3xAQAAA0TwAANFAAADRRAAA0UgAAACEAADRTAAA0VAAAACMAADRVAAA0VgAAAA4AAAAlAAA0VwAANFgAAAAoAAAA3QAAAN4AADRaAAAAKQAAACkAAAAUAAA0XgAAAOQAAAAxAAAAKQAAAN4AAADnAAAAPgAAAN4AADRlAAA0ZgAAAOxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAOYEErYAEgASAAoEEnIEDzYAEgDmBBSiAB4A5gQUngQSbCBJISj9Z0wAAADoAAAA7AAAADgAANGoAADRsAAAAoKEAAADxgDuhAAA0bYEEnYBV2QAAACEAAAAlAAA0cAAAAA4AAAAoAAA0cQAAACMAAADdAAA0cgAAAHAAAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAA0el8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEmoA7gDmAXIAAgAQIgQSe0wAAADoAAAA7AAAADgAANHwAADSGAAAAoKkAAAEEAAABBQAAAQYAAAEHAAABCAAAAQkAAAEKAAABCwAAAQyAPoA/gECAQYBCgEOARIBFgEapAAA0hwAANIgAADSJAAA0igAANIsAADSMAAA0jQAANI4AADSPgQSfgQShgQSigQSkgQSlgQSngQSogQSqgQSrgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAA0kwAAABcAADRtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBAAAAOwAAADsAAAAFwAAAOyAAIEEoIAAgQSdCAgICIBKgD4ICIAACNIAAAA7AAAADgAANKEAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA0bQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQUAAADsAAAA7AAAABcAAADsgACAAIAAgQSdCAgICIBKgD8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADS0AAAAFwAANG0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgQSjgACBBJ0ICAgIgEqAQAgIgAAI0gAAADsAAAAOAAA0wgAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADRtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBJ0ICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAANNUAAAAXAAA0bQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBBKaAAIEEnQgICAiASoBCCAiAAAjSAAAAOwAAAA4AADTjAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAANG0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEnQgICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAA09gAAABcAADRtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIEEqYAAgQSdCAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AADUEAAA1BQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAAA0bQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgQSdCAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADUYAAAAFwAANG0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgQSsgACBBJ0ICAgIgEqARggIgAAIXxAQUGVuZGluZ1JlcGxpZWRUb9MAAAA6AAAAOwAAAA4AADUnAAA1LQAAAKClAAA1KAAANSkAADUqAAA1KwAANSyBBK6BBK+BBLCBBLGBBLKlAAA1LgAANS8AADUwAAA1MQAANTKBBLOBBMqBBOKBBPmBBRCAVV8QEHNlbmRlcklkZW50aWZpZXJcY3JlYXRpb25EYXRlXxAUc2VuZGVyU2VxdWVuY2VOdW1iZXJfEBZzZW5kZXJUaHJlYWRJZGVudGlmaWVyV21lc3NhZ2XfEBIAAAEiAAABIwAAASQAADU6AAAAIQAAASYAAAEnAAA1OwAAACMAAAElAAA1PAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAcAAAAOwAAADsAAA1RAAAADEAAADsAAAA3gAAAOwAAAIGAAA1KAAAAOwAAADsAAA1TAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEEmggIgQS1CIA5CICKgQSuCAiBBLQIEi8t6MHTAAAAOgAAADsAAAAOAAA1UAAANVMAAACgogAAAg8AAAIQgGSAZaIAADVUAAA1VYEEtoEEwYBV2QAAACEAAAAlAAA1WAAAAA4AAAAoAAA1WQAAACMAAADdAAA1WgAANS4AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAA1Yl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEs4BkgDmAXIAAgAQIgQS30wAAADoAAAA7AAAADgAANWQAADVtAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAA1bgAANW8AADVwAAA1cQAANXIAADVzAAA1dAAANXWBBLiBBLmBBLqBBLyBBL2BBL6BBL+BBMCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAANVQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEtggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADVUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBLYICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAANZcAAAAXAAA1VAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBBLuAAIEEtggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAA1pQAANaYAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAANVQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEtggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADVUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBLYICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA1VAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQS2CAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAANVQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEtggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADVUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBLYICAgIgEqAbwgIgAAI2QAAACEAAAAlAAA19AAAAA4AAAAoAAA19QAAACMAAADdAAA19gAANS4AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAA1/l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEs4BlgDmAXIAAgAQIgQTC0wAAADoAAAA7AAAADgAANgAAADYIAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAA2CQAANgoAADYLAAA2DAAANg0AADYOAAA2D4EEw4EExIEExYEExoEEx4EEyIEEyYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA1VQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQTBCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAANVUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEwQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADVVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBBMEICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAA1VQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgQTBCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAANVUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEwQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADVVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBMEICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA1VQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQTBCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAANnsAAAAhAAABJgAAAScAADZ8AAAAIwAAASUAADZ9AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAABwAAAA7AAAAOwAADaFAAAAMQAAAOwAAADeAAAA7AAAAgYAADUpAAAA7AAAAOwAADaNAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQSaCAiBBMwIgDkIgIqBBK8ICIEEywgS7CqIzdMAAAA6AAAAOwAAAA4AADaRAAA2lAAAAKCiAAACDwAAAhCAZIBlogAANpUAADaWgQTNgQTYgFXZAAAAIQAAACUAADaZAAAADgAAACgAADaaAAAAIwAAAN0AADabAAA1LwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAADajXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQTKgGSAOYBcgACABAiBBM7TAAAAOgAAADsAAAAOAAA2pQAANq4AAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAADavAAA2sAAANrEAADayAAA2swAANrQAADa1AAA2toEEz4EE0IEE0YEE04EE1IEE1YEE1oEE14BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA2lQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQTNCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAANpUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEEzQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAA22AAAABcAADaVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEE0oAAgQTNCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AADbmAAA25wAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA2lQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQTNCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAANpUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEzQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADaVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBBM0ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA2lQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQTNCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAANpUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEEzQgICAiASoBvCAiAAAjZAAAAIQAAACUAADc1AAAADgAAACgAADc2AAAAIwAAAN0AADc3AAA1LwAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAADc/XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQTKgGWAOYBcgACABAiBBNnTAAAAOgAAADsAAAAOAAA3QQAAN0kAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAADdKAAA3SwAAN0wAADdNAAA3TgAAN08AADdQgQTagQTbgQTcgQTdgQTfgQTggQThgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADaWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBNgICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA2lgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQTYCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAANpYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEE2AgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAA3gQAAABcAADaWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEE3oAAgQTYCAgICIBKgH4ICIAACBEDhN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAANpYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEE2AgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADaWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBNgICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA2lgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQTYCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAN70AAAAhAAABJgAAAScAADe+AAAAIwAAASUAADe/AAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAABwAAAA7AAAAOwAADfHAAAAMQAAAOwAAADeAAAA7AAAAgYAADUqAAAA7AAAAOwAADfPAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQSaCAiBBOQIgDkIgIqBBLAICIEE4wgSLcV3rtMAAAA6AAAAOwAAAA4AADfTAAA31gAAAKCiAAACDwAAAhCAZIBlogAAN9cAADfYgQTlgQTwgFXZAAAAIQAAACUAADfbAAAADgAAACgAADfcAAAAIwAAAN0AADfdAAA1MAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAADflXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQTigGSAOYBcgACABAiBBObTAAAAOgAAADsAAAAOAAA35wAAN/AAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAADfxAAA38gAAN/MAADf0AAA39QAAN/YAADf3AAA3+IEE54EE6IEE6YEE64EE7IEE7YEE7oEE74BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA31wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQTlCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAN9cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEE5QgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAA4GgAAABcAADfXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEE6oAAgQTlCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AADgoAAA4KQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA31wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQTlCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAN9cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEE5QgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADfXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBBOUICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA31wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQTlCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAN9cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEE5QgICAiASoBvCAiAAAjZAAAAIQAAACUAADh3AAAADgAAACgAADh4AAAAIwAAAN0AADh5AAA1MAAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAADiBXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQTigGWAOYBcgACABAiBBPHTAAAAOgAAADsAAAAOAAA4gwAAOIsAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAADiMAAA4jQAAOI4AADiPAAA4kAAAOJEAADiSgQTygQTzgQT0gQT1gQT2gQT3gQT4gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAijgAAABcAADfYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIEDOoAAgQTwCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAN9gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEE8AgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADfYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBBPAICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIrwAAAAXAAA32AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAz6AAIEE8AgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADfYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBPAICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA32AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQTwCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAN9gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEE8AgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAADj+AAAAIQAAASYAAAEnAAA4/wAAACMAAAElAAA5AAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAcAAAAOwAAADsAAA5CAAAADEAAADsAAAA3gAAAOwAAAIGAAA1KwAAAOwAAADsAAA5EAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEEmggIgQT7CIA5CICKgQSxCAiBBPoIEjDVSobTAAAAOgAAADsAAAAOAAA5FAAAORcAAACgogAAAg8AAAIQgGSAZaIAADkYAAA5GYEE/IEFB4BV2QAAACEAAAAlAAA5HAAAAA4AAAAoAAA5HQAAACMAAADdAAA5HgAANTEAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAA5Jl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEE+YBkgDmAXIAAgAQIgQT90wAAADoAAAA7AAAADgAAOSgAADkxAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAA5MgAAOTMAADk0AAA5NQAAOTYAADk3AAA5OAAAOTmBBP6BBP+BBQCBBQKBBQOBBQSBBQWBBQaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAORgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEE/AgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADkYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBPwICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAOVsAAAAXAAA5GAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBBQGAAIEE/AgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAA5aQAAOWoAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAORgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEE/AgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADkYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBPwICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA5GAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQT8CAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAORgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEE/AgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADkYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBPwICAgIgEqAbwgIgAAI2QAAACEAAAAlAAA5uAAAAA4AAAAoAAA5uQAAACMAAADdAAA5ugAANTEAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAA5wl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEE+YBlgDmAXIAAgAQIgQUI0wAAADoAAAA7AAAADgAAOcQAADnMAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAA5zQAAOc4AADnPAAA50AAAOdEAADnSAAA504EFCYEFCoEFC4EFDIEFDYEFDoEFD4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA5GQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQUHCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAORkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEFBwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADkZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBBQcICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMb4AAAAXAAA5GQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBGuAAIEFBwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADkZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBQcICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA5GQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQUHCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAORkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEFBwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAADo/AAAAIQAAASYAAAEnAAA6QAAAACMAAAElAAA6QQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAcAAAAOwAAADsAAA6SQAAADEAAADsAAAA3gAAAOwAAASiAAA1LAAAAOwAAADsAAA6UQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEEmggIgQUSCIA5CIECxYEEsggIgQURCBJCRD9w0wAAADoAAAA7AAAADgAAOlUAADpYAAAAoKIAAAIPAAAErIBkgKWiAAA6WQAAOlqBBROBBR6AVdkAAAAhAAAAJQAAOl0AAAAOAAAAKAAAOl4AAAAjAAAA3QAAOl8AADUyAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAOmdfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBRCAZIA5gFyAAIAECIEFFNMAAAA6AAAAOwAAAA4AADppAAA6cgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAOnMAADp0AAA6dQAAOnYAADp3AAA6eAAAOnkAADp6gQUVgQUWgQUXgQUZgQUagQUbgQUcgQUdgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADpZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBRMICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA6WQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQUTCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADqcAAAAFwAAOlkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQUYgACBBRMICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAOqoAADqrAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADpZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBRMICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAA6WQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQUTCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAOlkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEFEwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAADpZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBRMICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA6WQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQUTCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAOvkAAAAOAAAAKAAAOvoAAAAjAAAA3QAAOvsAADUyAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAOwNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBRCApYA5gFyAAIAECIEFH9MAAAA6AAAAOwAAAA4AADsFAAA7DQAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwAAOw4AADsPAAA7EAAAOxEAADsSAAA7EwAAOxSBBSCBBSGBBSKBBSOBBSSBBSWBBSaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAAOloAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEFHggICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAADpaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBBR4ICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAA6WgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQUeCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACYAAAAFwAAOloAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQPRgACBBR4ICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA6WgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQUeCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAOloAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEFHggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAriwAAABcAADpaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEEhoAAgQUeCAgICIBKgLoICIAACNIAAAA7AAAADgAAO4AAAAE8oIBJ0gAAAT4AAAE/AAA7gwAAO4RaWERQTUVudGl0eacAADuFAAA7hgAAO4cAADuIAAA7iQAAO4oAAAFDWlhEUE1FbnRpdHldWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADNWAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBJQICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAzVgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQSUCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADUyAAAAFwAAM1YAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQUQgACBBJQICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAA7uQAAACEAAAEmAAABJwAAO7oAAAAjAAABJQAAO7sAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJgAAADsAAAA7AAAO8MAAAAxAAAA7AAAAN4AAADsAAAEogAAK3UAAADsAAAA7AAAO8sAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBA9EICIEFLgiAOQiBAsWBA+sICIEFLQgSblgaRdMAAAA6AAAAOwAAAA4AADvPAAA70gAAAKCiAAACDwAABKyAZIClogAAO9MAADvUgQUvgQU6gFXZAAAAIQAAACUAADvXAAAADgAAACgAADvYAAAAIwAAAN0AADvZAAArjAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAADvhXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQUsgGSAOYBcgACABAiBBTDTAAAAOgAAADsAAAAOAAA74wAAO+wAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAADvtAAA77gAAO+8AADvwAAA78QAAO/IAADvzAAA79IEFMYEFMoEFM4EFNYEFNoEFN4EFOIEFOYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA70wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQUvCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAO9MAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEFLwgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAA8FgAAABcAADvTAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEFNIAAgQUvCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AADwkAAA8JQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA70wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQUvCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAO9MAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEFLwgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAADvTAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBBS8ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA70wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQUvCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAO9MAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEFLwgICAiASoBvCAiAAAjZAAAAIQAAACUAADxzAAAADgAAACgAADx0AAAAIwAAAN0AADx1AAArjAAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAADx9XxAhWERCdWNrZXRGb3JPd25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jAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAAPcYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEFYggICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAD3GAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBBWIICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAA9xgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgQViCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACYAAAAFwAAPcYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQPRgACBBWIICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAA9xgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQViCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAPcYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEFYggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAArjAAAABcAAD3GAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEFLIAAgQViCAgICIBKgLoICIAACNIAAAA7AAAADgAAPuwAAAE8oQAAPu2BBWyASdcAAAAOAAAAJQAAKoQAAAAhAAAAKAAAKoUAAAAjAAAqhgAAABcAAAB1AAAAdQAAPvQAAACUAAAAMYEJaIAAgQVAgQVAgQVtgQVuEmeBBW7fEBQAAADdAAA++AAAPvkAAD76AAA++wAAPvwAAD79AAAAIQAAAA4AAD7+AAAAJQAAPv8AAAAoAAA/AAAAPwEAAD8CAAA/AwAAPwQAAD8FAAAAIwAABSEAAADeAAAA3gAAPwkAAAApAAAA5AAAAN4AAAAUAAAA5wAAACkAAABiAAA/EQAAPxIAAAApAAAAKQAAAN4AAD8WAAA/FwAAAOQAAAAxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYA5gDmBBXCABIEDzYA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AIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAD//AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBYgICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAA//wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQWICAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAEBCAAAAFwAAP/8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQWNgACBBYgICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAQFAAAEBRAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAD//AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBYgICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAA//wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQWICAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAP/8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEFiAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAA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vZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQWcgGWAOYBcgACABAiBBavTAAAAOgAAADsAAAAOAABB7AAAQfQAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAEH1AABB9gAAQfcAAEH4AABB+QAAQfoAAEH7gQWsgQWtgQWugQWvgQWwgQWxgQWygFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEFBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBaoICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABBQQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQWqCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAQUEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEFqggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAEFBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBBaoICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABBQQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQWqCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAQUEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEFqggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEFBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBaoICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAABCZwAAACEAAAEmAAABJwAAQmgAAAAjAAABJQAAQmkAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJQAAADsAAAA7AAAQnEAAAAxAAAA7AAAAN4AAADsAAACBgAAP9sAAADsAAAA7AAAQnkAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBW4ICIEFtQiAOQiAioEFhAgIgQW0CBLns3lV0wAAADoAAAA7AAAADgAAQn0AAEKAAAAAoKIAAAIPAAACEIBkgGWiAABCgQAAQoKBBbaBBcGAVdkAAAAhAAAAJQAAQoUAAAAOAAAAKAAAQoYAAAAjAAAA3QAAQocAAD/fAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAQo9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBbOAZIA5gFyAAIAECIEFt9MAAAA6AAAAOwAAAA4AAEKRAABCmgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAQpsAAEKcAABCnQAAQp4AAEKfAABCoAAAQqEAAEKigQW4gQW5gQW6gQW8gQW9gQW+gQW/gQXAgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEKBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBbYICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABCgQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQW2CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAELEAAAAFwAAQoEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQW7gACBBbYICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAQtIAAELTAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEKBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBbYICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAABCgQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQW2CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAQoEAAAD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AAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEXHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBfgICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAARg4AAAAXAABFxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACBBf6AAIEF+AgICAiASoBACAiAAAjSAAAAOwAAAA4AAEYcAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAARccAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEF+AgICAiASoBBCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABGLwAAABcAAEXHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCAAAAOwAAADsAAAAFwAAAOyAAIEGAYAAgQX4CAgICIBKgEIICIAACNIAAAA7AAAADgAARj0AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABFxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAUoAAgQX4CAgICIBKgEMICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAEZQAAAAFwAARccAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEKAAAA7AAAAOwAAAAXAAAA7IAAgQYEgACBBfgICAgIgEqARAgIgAAI0wAAADoAAAA7AAAADgAARl4AAEZfAAAAoKC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Cz4B7gHyAfYB+gH+AgICBpwAAR24AAEdvAABHcAAAR3EAAEdyAABHcwAAR3SBBh+BBiCBBiGBBiKBBiOBBiSBBiWAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAARroAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEGHQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEa6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBBh0ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABGugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQYdCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADB8AAAAFwAARroAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQRTgACBBh0ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABGugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQYdCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAARroAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAL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OAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAEf7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC8gACBBjQICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAIMAAAAXAABH+wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBBc2AAIEGNAgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAEf7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBBjQICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABH+wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQY0CAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAESSAAAAFwAAR/sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQXhgACBBjQICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAABJIQAAACEAAAEmAAABJwAASSIAAAAjAAABJQAASSMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHkAAADsAAAA7AAASSsAAAAxAAAA7AAAAN4AAADsAAACBgAARoQAAADsAAAA7AAASTMAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBfUICIEGPwiAOQiAioEGCggIgQY+CBLgTKsz0wAAADoAAAA7AAAADgAASTcAAEk6AAAAoKIAAAIPAAACEIBkgGWiAABJOwAASTyBBkCBBkuAVdkAAAAhAAAAJQAAST8AAAAOAAAAKAAASUAAAAAjAAAA3QAASUEAAEaPAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAASUlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBj2AZIA5gFyAAIAECIEGQdMAAAA6AAAAOwAAAA4AAElLAABJVAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAASVUAAElWAABJVwAASVgAAElZAABJWgAASVsAAElcgQZCgQZDgQZEgQZGgQZHgQZIgQZJgQZKgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEk7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBkAICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABJOwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQZACAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAEl+AAAAFwAASTsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQZFgACBBkAICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAASYwAAEmNAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEk7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBBkAICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABJOwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQZACAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAASTsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEGQAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEk7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBkAICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABJOwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQZACAgICIBKgG8ICIAACNkAAAAhAAAAJQAASdsAAAAOAAAAKAAASdwAAAAjAAAA3QAASd0AAEaPAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAASeVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBj2AZYA5gFyAAIAECIEGTNMAAAA6AAAAOwAAAA4AAEnnAABJ7wAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAASfAAAEnxAABJ8gAASfMAAEn0AABJ9QAASfaBBk2BBk6BBk+BBlCBBlGBBlKBBlOAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAASTwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEGSwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEk8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBBksICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABJPAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQZLCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADG+AAAAFwAASTwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQRrgACBBksICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABJPAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQZLCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAASTwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEGSwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEk8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBBksICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAABKYgAAACEAAAEmAAABJwAASmMAAAAjAAABJQAASmQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHkAAADsAAAA7AAASmwAAAAxAAAA7AAAAN4AAADsAAAEogAARoUAAADsAAAA7AAASnQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBfUICIEGVgiAOQiBAsWBBgsICIEGVQgSais0HdMAAAA6AAAAOwAAAA4AAEp4AABKewAAAKCiAAACDwAABKyAZIClogAASnwAAEp9gQZXgQZigFXZAAAAIQAAACUAAEqAAAAADgAAACgAAEqBAAAAIwAAAN0AAEqCAABGkAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAEqKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQZUgGSAOYBcgACABAiBBljTAAAAOgAAADsAAAAOAABKjAAASpUAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAEqWAABKlwAASpgAAEqZAABKmgAASpsAAEqcAABKnYEGWYEGWoEGW4EGXYEGXoEGX4EGYIEGYYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABKfAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQZXCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAASnwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEGVwgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABKvwAAABcAAEp8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEGXIAAgQZXCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAErNAABKzgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABKfAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQZXCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAASnwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEGVwgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEp8AAAA7AAAAOwAAAD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A7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEGhAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAEx9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBoQICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAATMAAAAAXAABMfQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBBomAAIEGhAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABMzgAATM8AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAATH0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEGhAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAEx9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBoQICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABMfQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQaECAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAATH0AAADsAAA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cgACABAiBBqfTAAAAOgAAADsAAAAOAABOagAATnIAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAE5zAABOdAAATnUAAE52AABOdwAATngAAE55gQaogQapgQaqgQargQasgQatgQaugFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAE2/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBBqYICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABNvwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQamCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAATb8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEGpggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAAE2/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgQamCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAATb8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEGpggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAE2/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBqYICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABNvwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQamCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAATuUAAAAhAAABJgAAAScAAE7mAAAAIwAAASUAAE7nAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACJAAAA7AAAAOwAAE7vAAAAMQAAAOwAAADeAAAA7AAABKIAAExRAAAA7AAAAOwAAE73AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQZoCAiBBrEIgDkIgQLFgQZ9CAiBBrAIErhrao/TAAAAOgAAADsAAAAOAABO+wAATv4AAACgogAAAg8AAASsgGSApaIAAE7/AABPAIEGsoEGvYBV2QAAACEAAAAlAABPAwAAAA4AAAAoAABPBAAAACMAAADdAABPBQAATFgAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABPDV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEGr4BkgDmAXIAAgAQIgQaz0wAAADoAAAA7AAAADgAATw8AAE8YAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAABPGQAATxoAAE8bAABPHAAATx0AAE8eAABPHwAATyCBBrSBBrWBBraBBriBBrmBBrqBBruBBryAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAATv8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEGsggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAE7/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBBrIICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAT0IAAAAXAABO/wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBBreAAIEGsggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABPUAAAT1EAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAATv8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEGsggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAE7/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBBrIICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABO/wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoA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BKgAAACgAAAErAAAAFwAAABcAAAAXAABQFwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQbGCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFCFAAAAFwAAUBcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQbRgACBBsYICAgIgEqAQggIgAAI0gAAADsAAAAOAABQkwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFAXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBBsYICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAUKYAAAAXAABQFwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBBtSAAIEGxggICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAABQtAAAULUAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAAUBcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEGxggICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAUAAAABcAAFAXAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIAZgACBBsYICAgIgEqARggIgAAI0wAAADoAAAA7AAAADgAAUNYAAFDbAAAAoKQAAFDXAAB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0Rm9yU3BlY2lhbGl6YXRpb25zb3JkZXJlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIVhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zc3RvcmFnZV8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zZHVwbGljYXRlcwmAOYA5gQcIgASBA82AOYACgQUogASAFIEIT4EHB4AEgASAOYEHGYEIUIEDzRI2qC090wAAADoAAAA7AAAADgAAU10AAFNfAAAAoKEAAADxgDuhAABTYIEHCYBV2QAAACEAAAAlAABTYwAAAA4AAAAoAABTZAAAACMAAADdAABTZQAAAH0AAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABTbV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHBoA7gDmAXIAAgAQIgQcK0wAAADoAAAA7AAAADgAAU28AAFN5AAAAoKkAAAEEAAABBQAAAQYAAAEHAAABCAAAAQkAAAEKAAABCwAAAQyAPoA/gECAQYBCgEOARIBFgEapAABTegAAU3sAAFN8AABTfQAAU34AAFN/AABTgAAAU4EAAFOCgQcLgQcNgQcOgQcQgQcRgQcTgQcUgQcWgQc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sAAAA7AAAABcAAADsgACAAIAAgQclCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFSdAAAAFwAAVFoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQcqgACBByUICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAVKsAAFSsAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFRaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBByUICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABUWgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQclCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAVFoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHJQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFRaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBByUICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABUWgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAAD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AACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABVnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQdHCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAVZwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHRwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFWcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBB0cICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAABVnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEHRwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFWcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBB0cICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABVnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQdHCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAVZwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHRwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAFbCAAAAIQAAASYAAAEnAABWwwAAACMAAAElAABWxAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfQAAAOwAAADsAABWzAAAADEAAADsAAAA3gAAAOwAAAIGAABUHQAAAOwAAADsAABW1AAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEHBggIgQdSCIA5CICKgQcaCAiBB1EIEuPdZtfTAAAAOgAAADsAAAAOAABW2AAAVtsAAACgogAAAg8AAAIQgGSAZaIAAFbcAABW3YEHU4EHXoBV2QAAACEAAAAlAABW4AAAAA4AAAAoAABW4QAAACMAAADdAABW4gAAVCsAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABW6l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHUIBkgDmAXIAAgAQIgQdU0wAAADoAAAA7AAAADgAAVuwAAFb1AAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAABW9gAAVvcAAFb4AABW+QAAVvoAAFb7AABW/AAAVv2BB1WBB1aBB1eBB1mBB1qBB1uBB1yBB12AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAVtwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHUwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFbcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBB1MICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAVx8AAAAXAABW3AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBB1iAAIEHUwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABXLQAAVy4AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAVtwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHUwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFbcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB1MICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABW3AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQdTCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAVtwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHUwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFbcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBB1MICAgIgEqAbwgIgAAI2QAAACEAAAAlAABXfAAAAA4AAAAoAABXfQAAACMAAADdAABXfgAAVCsAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABXhl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHUIBlgDmAXIAAgAQIgQdf0wAAADoAAAA7AAAADgAAV4gAAFeQAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAABXkQAAV5IAAFeTAABXlAAAV5UAAFeWAABXl4EHYIEHYoEHY4EHZIEHZYEHZoEHZ4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAV5sAAAAXAABW3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBB2GAAIEHXggICAiASoB7CAiAAAhTMC4w3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABW3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQdeCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAVt0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHXggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAwfAAAABcAAFbdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEEU4AAgQdeCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAVt0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHXggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFbdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBB14ICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABW3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQdeCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAWAQAAAAhAAABJgAAAScAAFgFAAAAIwAAASUAAFgGAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB9AAAA7AAAAOwAAFgOAAAAMQAAAOwAAADeAAAA7AAAAgYAAFQeAAAA7AAAAOwAAFgWAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQcGCAiBB2oIgDkIgIqBBxsICIEHaQgSnfILSdMAAAA6AAAAOwAAAA4AAFgaAABYHQAAAKCiAAACDwAAAhCAZIBlogAAWB4AAFgfgQdrgQd2gFXZAAAAIQAAACUAAFgiAAAADgAAACgAAFgjAAAAIwAAAN0AAFgkAABULAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAFgsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQdogGSAOYBcgACABAiBB2zTAAAAOgAAADsAAAAOAABYLgAAWDcAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKwAAAioAAAIsgGiAaYBqgGuAbIBugG2Ab6gAAFg4AABYOQAAWDoAAFg7AABYPAAAWD0AAFg+AABYP4EHbYEHboEHb4EHcYEHcoEHc4EHdIEHdYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABYHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQdrCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAWB4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHawgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABYYQAAABcAAFgeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEHcIAAgQdrCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAFhvAABYcAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABYHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQdrCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAWB4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHawgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFgeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBB2sICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABYHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQdrCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAWB4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEHawgICAiASoBvCAiAAAjZAAAAIQAAACUAAFi+AAAADgAAACgAAFi/AAAAIwAAAN0AAFjAAABULAAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAFjIXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQdogGWAOYBcgACABAiBB3fTAAAAOgAAADsAAAAOAABYygAAWNIAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAFjTAABY1AAAWNUAAFjWAABY1wAAWNgAAFjZgQd4gQd5gQd6gQd7gQd8gQd9gQd+gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAijgAAABcAAFgfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIEDOoAAgQd2CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAWB8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHdggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFgfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBB3YICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIrwAAAAXAABYHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAz6AAIEHdggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFgfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBB3YICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABYHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQd2CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAWB8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHdggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAFlFAAAAIQAAASYAAAEnAABZRgAAACMAAAElAABZRwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfQAAAOwAAADsAABZTwAAADEAAADsAAAA3gAAAOwAAAIGAABUHwAAAOwAAADsAABZVwAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEHBggIgQeBCIA5CICKgQccCAiBB4AIEoOxx4bTAAAAOgAAADsAAAAOAABZWwAAWV4AAACgogAAAg8AAAIQgGSAZaIAAFlfAABZYIEHgoEHjYBV2QAAACEAAAAlAABZYwAAAA4AAAAoAABZZAAAACMAAADdAABZZQAAVC0AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABZbV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHf4BkgDmAXIAAgAQIgQeD0wAAADoAAAA7AAAADgAAWW8AAFl4AAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAABZeQAAWXoAAFl7AABZfAAAWX0AAFl+AABZfwAAWYCBB4SBB4WBB4aBB4iBB4mBB4qBB4uBB4yAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAWV8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHgggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFlfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBB4IICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAWaIAAAAXAABZXwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBB4eAAIEHgggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABZsAAAWbEAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAWV8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHgggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFlfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB4IICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABZXwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQeCCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAWV8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHgggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFlfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBB4IICAgIgEqAbwgIgAAI2QAAACEAAAAlAABZ/wAAAA4AAAAoAABaAAAAACMAAADdAABaAQAAVC0AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABaCV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHf4BlgDmAXIAAgAQIgQeO0wAAADoAAAA7AAAADgAAWgsAAFoTAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAABaFAAAWhUAAFoWAABaFwAAWhgAAFoZAABaGoEHj4EHkIEHkYEHkoEHk4EHlIEHlYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABZYAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQeNCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAWWAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHjQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFlgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBB40ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMb4AAAAXAABZYAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBGuAAIEHjQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFlgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBB40ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABZYAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQeNCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAWWAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHjQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAFqGAAAAIQAAASYAAAEnAABahwAAACMAAAElAABaiAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfQAAAOwAAADsAABakAAAADEAAADsAAAA3gAAAOwAAAIGAABUIAAAAOwAAADsAABamAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEHBggIgQeYCIA5CICKgQcdCAiBB5cIEkP3hjPTAAAAOgAAADsAAAAOAABanAAAWp8AAACgogAAAg8AAAIQgGSAZaIAAFqgAABaoYEHmYEHpIBV2QAAACEAAAAlAABapAAAAA4AAAAoAABapQAAACMAAADdAABapgAAVC4AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABarl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHloBkgDmAXIAAgAQIgQea0wAAADoAAAA7AAAADgAAWrAAAFq5AAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAisAAAIqAAACLIBogGmAaoBrgGyAboBtgG+oAABaugAAWrsAAFq8AABavQAAWr4AAFq/AABawAAAWsGBB5uBB5yBB52BB5+BB6CBB6GBB6KBB6OAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAWqAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHmQgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFqgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBB5kICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAWuMAAAAXAABaoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBB56AAIEHmQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABa8QAAWvIAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAWqAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHmQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFqgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB5kICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABaoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQeZCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAWqAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHmQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAFqgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAICugACBB5kICAgIgEqAbwgIgAAI2QAAACEAAAAlAABbQAAAAA4AAAAoAABbQQAAACMAAADdAABbQgAAVC4AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAABbSl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHloBlgDmAXIAAgAQIgQel0wAAADoAAAA7AAAADgAAW0wAAFtUAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAABbVQAAW1YAAFtXAABbWAAAW1kAAFtaAABbW4EHpoEHp4EHqIEHqYEHqoEHq4EHrIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAV5sAAAAXAABaoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBB2GAAIEHpAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFqhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBB6QICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABaoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQekCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADB8AAAAFwAAWqEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQRTgACBB6QICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABaoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQekCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAWqEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHpAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFqhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBB6QICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAABbxwAAACEAAAEmAAABJwAAW8gAAAAjAAABJQAAW8kAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH0AAADsAAAA7AAAW9EAAAAxAAAA7AAAAN4AAADsAAACBgAATFMAAADsAAAA7AAAW9kAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBwYICIEHrwiAOQiAioEGfwgIgQeuCBLhlBug0wAAADoAAAA7AAAADgAAW90AAFvgAAAAoKIAAAIPAAACEIBkgGWiAABb4QAAW+KBB7CBB7uAVdkAAAAhAAAAJQAAW+UAAAAOAAAAKAAAW+YAAAAjAAAA3QAAW+cAAFQvAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAW+9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB62AZIA5gFyAAIAECIEHsdMAAAA6AAAAOwAAAA4AAFvxAABb+gAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAW/sAAFv8AABb/QAAW/4AAFv/AABcAAAAXAEAAFwCgQeygQezgQe0gQe2gQe3gQe4gQe5gQe6gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFvhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB7AICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABb4QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQewCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFwkAAAAFwAAW+EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQe1gACBB7AICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAXDIAAFwzAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFvhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBB7AICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABb4QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQewCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAW+EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEHsAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFvhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBB7AICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABb4QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQewCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAXIEAAAAOAAAAKAAAXIIAAAAjAAAA3QAAXIMAAFQvAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAXItfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB62AZYA5gFyAAIAECIEHvNMAAAA6AAAAOwAAAA4AAFyNAABclQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAXJYAAFyXAABcmAAAXJkAAFyaAABcmwAAXJyBB72BB76BB7+BB8CBB8GBB8KBB8OAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAW+IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHuwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAFviAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBB7sICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABb4gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQe7CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAAW+IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBB7sICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABb4gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQe7CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAW+IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEHuwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAFviAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBB7sICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAABdCAAAACEAAAEmAAABJwAAXQkAAAAjAAABJQAAXQoAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH0AAADsAAAA7AAAXRIAAAAxAAAA7AAAAN4AAADsAAAEogAATFE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5gFyAAIAECIEH39MAAAA6AAAAOwAAAA4AAF5zAABefAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAXn0AAF5+AABefwAAXoAAAF6BAABeggAAXoMAAF6EgQfggQfhgQfigQfkgQflgQfmgQfngQfogFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAF5jAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBB94ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABeYwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQfeCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAF6mAAAAFwAAXmMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQfjgACBB94ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAXrQAAF61AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAF5jAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBB94ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABeYwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQfeCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAXmMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEH3ggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAF5jAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBB94ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABeYwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQfeCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAXwMAAAAOAAAAKAAAXwQAAAAjAAAA3QAAXwUAAFQxAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAXw1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB9uAZYA5gFyAAIAECIEH6tMAAAA6AAAAOwAAAA4AAF8PAABfFwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAXxgAAF8ZAABfGgAAXxsAAF8cAABfHQAAXx6BB+uBB+yBB+2BB+6BB++BB/CBB/GAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwAAXmQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIEH6QgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAF5kAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBB+kICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABeZAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQfpCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwAAXmQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEH6QgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAF5kAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBB+kICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABeZAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQfpCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAXmQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEH6QgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAF+KAAAAIQAAASYAAAE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pAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABg5gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQgXCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAYOYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEIFwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAGDmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBCBcICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAABg5gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgQgXCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAYOYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEIFwgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAGDmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBCBcICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABg5gA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AIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMHwAAAAXAABiJwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBFOAAIEILggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAGInAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBCC4ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABiJwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQguCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAYicAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEILggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAGNNAAAAIQAAASYAAAEnAABjTgAAACMAAAElAABjTwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfQAAAOwAAADsAABjVwAAADEAAADsAAAA3gAAAOwAAAIGAABUJwAAAOwAAADsAABjXwAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEHBggIgQg5CIA5CICKgQchCAiBCDgIEoRbOjXTAAAAOgAAADsAAAAOAABjYwAAY2YAAACgogAAAg8AAAIQgGSAZaIAAGNnAABjaIEIOoEIRoB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AASsAAAAXAAABjgAAABcAAGelAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBCJwICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABnpQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQicCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGfoAAAAFwAAZ6UAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQihgACBCJwICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAZ/YAAGf3AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAGelAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBCJwICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAABnpQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQicCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAZ6UAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEInAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAA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hc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYA5gDmBCN6ABIEDzYA5gAKBBSiABIAygQkggQjdgASABIA5gQjvgQkhgQPNEjvt9mPTAAAAOgAAADsAAAAOAABq7gAAavAAAACgoQAAAPGAO6EAAGrxgQjfgFXZAAAAIQAAACUAAGr0AAAADgAAACgAAGr1AAAAIwAAAN0AAGr2AAAAmwAAAPEAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAGr+XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQjcgDuAOYBcgACABAiBCODTAAAAOgAAADsAAAAOAABrAAAAawoAAACgqQAAAQQAAAEFAAABBgAAAQcAAAEIAAABCQAAAQoAAAELAAABDIA+gD+AQIBBgEKAQ4BEgEWARqkAAGsLAABrDAAAaw0AAGsOAABrDwAAaxAAAGsRAABrEgAAaxOBCOGBCOOBCOSBCOaBCOeBCOmBCOqBCOyBCO2AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAGsXAAAAFwAAavEAAADsAAA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BCQSBCQWBCQaBCQeBCQiAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAa9AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJAAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAGvQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBCQAICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABr0AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQkACAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADeBAAAAFwAAa9AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQTegACBCQAICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABr0AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQkACAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAa9AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJAAgICAiASoCACAiAAAjfEA8AAAEiAAABIwA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AAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQkXCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADeBAAAAFwAAbREAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQTegACBCRcICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABtEQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQkXCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAbREAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJFwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAG0RAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBCRcICAgIgEqAgQgIgAAI0gAAADsAAAAOAABuNwAAATyggEnSAAAAOwAAAA4AAG46AAABPKQAAGrAAABuPAAAbj0AAG4+gQjagQkigQlpgQp8gEnXAAAADgAAACUAACqEAAAAIQAAACgAACqFAAAAIwAAKoYAAAAXAAAAjQAAAI0AAG5FAAAAmwAAADGBCWiAAIEJI4EJI4EJZ4EI3N8QEAAAbkgAAG5JAABuSgAAbksAAAAhAABuTAAAbk0AAAAjAABuTgAAbk8AAAAOAAAAJQAAblAAAG5RAAAAKAAAAN0AAADeAABuUwAAACkAAAApAAAAFAAAblcAAADkAAAAMQAAACkAAADeAAAA5wAAAFsAAADeAABuXgAAbl8AAADsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgDmBCTaABIAEgAKBCSWBA82ABIA5gQUogCSAOYEJZoEJJAgTAAAAAQuC0OrTAAAAOgAAADsAAAAOAABuYwAAbmUAAACgoQAAAPGAO6EAAG5mgQkmgFXZAAAAIQAAACUAAG5pAAAADgAAACgAAG5qAAAAIwAAAN0AAG5rAAAAjQAAAPEAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAG5zXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQkjgDuAOYBcgACABAiBCSfTAAAAOgAAADsAAAAOAABudQAAbn8AAACgqQAAAQQAAAEFAAABBgAAAQcAAAEIAAABCQAAAQoAAAELAAABDIA+gD+AQIBBgEKAQ4BEgEWARqkAAG6AAABugQAAboIAAG6DAABuhAAAboUAAG6GAABuhwAAboiBCSiBCSqBCSuBCS2BCS6BCTCBCTGBCTOBCTSAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAG6MAAAAFwAAbmYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEEAAAA7AAAAOwAAAAXAAAA7IAAgQkpgACBCSYICAgIgEqAPggIgAAI0gAAADsAAAAOAABumgAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAG5mAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBQAAAOwAAADsAAAAFwAAAOyAAIAAgACBCSYICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAbq0AAAAXAABuZgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACBCSyAAIEJJggICAiASoBACAiAAAjSAAAAOwAAAA4AAG67AAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAbmYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJJggICAiASoBBCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABuzgAAABcAAG5mAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCAAAAOwAAADsAAAAFwAAAOyAAIEJL4AAgQkmCAgICIBKgEIICIAACNIAAAA7AAAADgAAbtwAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABuZgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAUoAAgQkmCAgICIBKgEMICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAG7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A7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJUggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAHCCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBCVIICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAcMUAAAAXAABwggAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBCVeAAIEJUggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAABw0wAAcNQAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAcIIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEJUggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAHCCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBCVIICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABwggAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQlSCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAcIIAAADsAAA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BIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAcf8AAAAXAABx2QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBCXCAAIEJbQgICAiASoA+CAiAAAjSAAAAOwAAAA4AAHINAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAcdkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEJbQgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAByIAAAABcAAHHZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEJc4AAgQltCAgICIBKgEAICIAACNIAAAA7AAAADgAAci4AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAABx2QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQltCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAHJBAAAAFwAAcdkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQl2gACBCW0ICAgIgEqAQggIgAAI0gAAADsAAAAOAAByTwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAHHZAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAA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PAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAB5awAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQoaCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADG+AAAAFwAAeWsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQRrgACBChoICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAB5awAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQoaCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAeWsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEKGggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAHlrAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBChoICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAB6kQAAACEAAAEmAAABJwAAepIAAAAjAAABJQAAepMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAI4AAADsAAAA7AAAepsAAAAxAAAA7AAAAN4AAADsAAAEogAAdIkAAADsAAAA7AAAeqMAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0V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CKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAf3YAAH93AAB/eAAAf3kAAH96AAB/ewAAf3wAAH99gQqGgQqHgQqIgQqKgQqLgQqMgQqNgQqOgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAH9cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBCoQICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAB/XAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQqECAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAH+fAAAAFwAAf1wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQqJgACBCoQICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAf60AAH+uAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAH9cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBCoQICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAB/XAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQqECAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQA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AACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAhrAAAAAXAACGSAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBCxmAAIELEAgICAiASoBCCAiAAAjSAAAAOwAAAA4AAIa+AAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAhkgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELEAgICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACG0QAAABcAAIZIAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIELHIAAgQsQCAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AAIbfAACG4AAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAACGSAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgQsQCAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAIbzAAAAFwAAhkgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgQsfgACBCxAICAgIgEqARggIgAAIXxAlUGVyc2lzdGVkQXR0YWNobWVudFNlbnRSZWNpcGllbnRJbmZvc9MAAAA6AAAAOwAAAA4AAIcCAACHBgAAAKCjAABMVAAAF40AAIcFgQaAgQJJgQshowAAhwcAAIcIAACHCYELIoELOYELUIBVW21lc3NhZ2VJbmZv3xASAAABIgAAASMAAAEkAACHDQAAACEAAAEmAAABJwAAhw4AAAAjAAABJQAAhw8AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHIAAADsAAAA7AAAhxcAAAAxAAAA7AAAAN4AAADsAAACBgAATFQAAADsAAAA7AAAhx8AAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBCw0ICIELJAiAOQiAioEGgAgIgQsjCBKwlTgj0wAAADoAAAA7AAAADgAAhyMAAIcmAAAAoKIAAAIPAAACEIBkgGWiAACHJwAAhyiBCyWBCzCAVdkAAAAhAAAAJQAAhysAAAAOAAAAKAAAhywAAAAjAAAA3QAAhy0AAIcHAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAhzVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBCyKAZIA5gFyAAIAECIELJtMAAAA6AAAAOwAAAA4AAIc3AACHQAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAh0EAAIdCAACHQwAAh0QAAIdFAACHRgAAh0cAAIdIgQsngQsogQspgQsrgQssgQstgQsugQsvgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAIcnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBCyUICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACHJwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQslCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAIdqAAAAFwAAhycAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQsqgACBCyUICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAh3gAAId5AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAIcnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBCyUICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACHJwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQslCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAhycAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELJQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIcnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBCyUICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACHJwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AA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AAAEqAAAAKAAAASsAAAAXAAAijgAAABcAAIhpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIEDOoAAgQtHCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAiGkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELRwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIhpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBC0cICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIrwAAAAXAACIaQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAz6AAIELRwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIhpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBC0cICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACIaQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQtHCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAiGkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIELRwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAImPAAAAIQAAASYAAAEnAACJkAAAACMAAAElAACJkQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAcgAAAOwAAADsAACJmQAAADEAAADsAAAA3gAAAOwAAASiAACHBQAAAOwAAADsAACJoQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIELDQgIgQtSCIA5CIECxYELIQgIgQtRCBMAAAABFwf5T9MAAAA6AAAAOwAAAA4AAImlAACJqAAAAKCiAAACDwAABKyAZIClogAAiakAAImqgQtTgQtegFXZAAAAIQAAACUAAImtAAAADgAAACgAAImuAAAAIwAAAN0AAImvAACHCQAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAIm3XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQtQgGSAOYBcgACABAiBC1TTAAAAOgAAADsAAAAOAACJuQAAicIAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAInDAACJxAAAicUAAInGAACJxwAAicgAAInJAACJyoELVYELVoELV4ELWYELWoELW4ELXIELXYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACJqQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQtTCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAiakAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIELUwgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACJ7AAAABcAAImpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIELWIAAgQtTCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAIn6AACJ+wAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACJqQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQtTCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAiakAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIELUwgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAImpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBC1MICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACJqQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQtTCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAA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AAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBC24ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACLGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQtuCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAItdAAAAFwAAixoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQtzgACBC24ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAi2sAAItsAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAIsaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBC24ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACLGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQtuCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAixoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELbggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIsaAAAA7AAAAOwAAADsAAAAMQAAAOw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ADgAAjQcAAI0PAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAACNEAAAjREAAI0SAACNEwAAjRQAAI0VAACNFoELkoELk4ELlIELlYELloELl4ELmIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACMXAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQuQCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAjFwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELkAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIxcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBC5AICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAN4EAAAAXAACMXAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBN6AAIELkAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAIxcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBC5AICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACMXAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQuQCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAjFwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIELkAgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAI2CAAAAIQAAASYAAAEnAACNgwAAACMAAAElAACNhAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAhgAAAOwAAADsAACNjAAAADEAAADsAAAA3gAAAOwAAAIGAACDtQAAAOwAAADsAACNlAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEKwwgIgQubCIA5CICKgQrbCAiBC5oIEwAAAAEYHzxh0wAAADoAAAA7AAAADgAAjZgAAI2bAAAAoKIAAAIPAAACEIBkgGWiAACNnAAAjZ2BC5yBC6eAVdkAAAAhAAAAJQAAjaAAAAAOAAAAKAAAjaEAAAAjAAAA3QAAjaIAAIPBAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAjapfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC5mAZIA5gFyAAIAECIELndMAAAA6AAAAOwAAAA4AAI2sAACNtQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAjbYAAI23AACNuAAAjbkAAI26AACNuwAAjbwAAI29gQuegQufgQuggQuigQujgQukgQulgQumgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAI2cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBC5wICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACNnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQucCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAI3fAAAAFwAAjZwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQuhgACBC5wICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAje0AAI3uAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAI2cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBC5wICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACNnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQucCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAjZwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELnAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAI2cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBC5wICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACNnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQucCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAjjwAAAAOAAAAKAAAjj0AAAAjAAAA3QAAjj4AAIPBAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAjkZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC5mAZYA5gFyAAIAECIELqNMAAAA6AAAAOwAAAA4AAI5IAACOUAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAjlEAAI5SAACOUwAAjlQAAI5VAACOVgAAjleBC6mBC6qBC6uBC6yBC62BC66BC6+AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAjZ0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIELpwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAI2dAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBC6cICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACNnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQunCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwAAjZ0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIELpwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAI2dAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBC6cICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACNnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQunCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAjZ0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIELpwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAI7DAAAAIQAAASYAAAEnAACOxAAAACMAAAElAACOxQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAhgAAAOwAAADsAACOzQAAADEAAADsAAAA3gAAAOwAAAIGAACDtgAAAOwAAADsAACO1QAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2F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AAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAAkDgAAJA5AACQOgAAkDsAAJA8AACQPQAAkD4AAJA/gQvMgQvNgQvOgQvQgQvRgQvSgQvTgQvUgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJAeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBC8oICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACQHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQvKCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAJBhAAAAFwAAkB4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQvPgACBC8oICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAkG8AAJBwAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJAeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBC8oICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAACQHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgQvKCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAkB4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIELyggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJAeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBC8oICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACQHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQvKCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAkL4AAAAOAAAAKAAAkL8AAAAjAAAA3QAAkMAAAIPDAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAkMhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBC8eAZYA5gFyAAIAECIEL1tMAAAA6AAAAOwAAAA4AAJDKAACQ0gAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAkNMAAJDUAACQ1QAAkNYAAJDXAACQ2AAAkNmBC9eBC9iBC9mBC9qBC9uBC9yBC92AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAkB8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEL1QgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJAfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBC9UICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACQHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQvVCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADeBAAAAFwAAkB8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQTegACBC9UICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACQHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQvVCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAkB8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEL1QgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJAfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBC9UICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAACRRQAAACEAAAEmAAABJwAAkUYAAAAjAAABJQAAkUcAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAE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AAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQwDCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAkqEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMAwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJKhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBDAMICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAN4EAAAAXAACSoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBN6AAIEMAwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJKhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBDAMICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACSoQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQwDCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAkqEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IA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/gICAgacAAJdIAACXSQAAl0oAAJdLAACXTAAAl00AAJdOgQxOgQxPgQxQgQxRgQxSgQxTgQxUgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJaUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBDEwICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACWlAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQxMCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAlpQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMTAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAJaUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBDEwICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACWlAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQxMCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAlpQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAA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AmFkAAJhaAACYWwAAmFwAAJhdAACYXgAAmF8AAJhggQxlgQxmgQxngQxpgQxqgQxrgQxsgQxtgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJg/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBDGMICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACYPwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQxjCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAJiCAAAAFwAAmD8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQxogACBDGMICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAmJAAAJiRAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJg/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBDGMICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACYPwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQxjCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAmD8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMYwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJg/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBDGMICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACYPwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgQxjCAgICIBKgG8ICIAACNkAAAAhAAAAJQAAmN8AAAAOAAAAKAAAmOAAAAAjAAAA3QAAmOEAAGd4AAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAAmOlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDGCAZYA5gFyAAIAECIEMb9MAAAA6AAAAOwAAAA4AAJjrAACY8wAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAAmPQAAJj1AACY9gAAmPcAAJj4AACY+QAAmPqBDHCBDHGBDHKBDHOBDHSBDHWBDHaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAmEAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMbggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJhAAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBDG4ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACYQAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQxuCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwAAmEAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEMbggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJhAAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBDG4ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACYQAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQxuCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAmEAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMbggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAJlmAAAAIQAAASYAAAEnAACZZwAAACMAAAElAACZaAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAdAAAAOwAAADsAACZcAAAADEAAADsAAAA3gAAAOwAAAIGAABnbwAAAOwAAADsAACZeAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEIfAgIgQx5CIA5CICKgQiSCAiBDHgIEufzMw/TAAAAOgAAADsAAAAOAACZfAAAmX8AAACgogAAAg8AAAIQgGSAZaIAAJmAAACZgYEMeoEMhYBV2QAAACEAAAAlAACZhAAAAA4AAAAoAACZhQAAACMAAADdAACZhgAAZ3kAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAACZjl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMd4BkgDmAXIAAgAQIgQx70wAAADoAAAA7AAAADgAAmZAAAJmZAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAACZmgAAmZsAAJmcAACZnQAAmZ4AAJmfAACZoAAAmaGBDHyBDH2BDH6BDICBDIGBDIKBDIOBDISAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAmYAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMeggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJmAAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBDHoICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAmcMAAAAXAACZgAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBDH+AAIEMeggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAACZ0QAAmdIAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAmYAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMeggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAJmAAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBDHoICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACZgAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQx6CAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAmYAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMeggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJmAAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBDHoICAgIgEqAbwgIgAAI2QAAACEAAAAlAACaIAAAAA4AAAAoAACaIQAAACMAAADdAACaIgAAZ3kAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAACaKl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMd4BlgDmAXIAAgAQIgQyG0wAAADoAAAA7AAAADgAAmiwAAJo0AAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAACaNQAAmjYAAJo3AACaOAAAmjkAAJo6AACaO4EMh4EMiIEMiYEMioEMi4EMjIEMjYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACZgQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQyFCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAmYEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMhQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJmBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBDIUICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAACZgQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgQyFCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAmYEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMhQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJmBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBDIUICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACZgQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQyFCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAmqcAAAAhAAABJgAAAScAAJqoAAAAIwAAASUAAJqpAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB0AAAA7AAAAOwAAJqxAAAAMQAAAOwAAADeAAAA7AAABKIAAGdwAAAA7AAAAOwAAJq5AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQh8CAiBDJAIgDkIgQLFgQiTCAiBDI8IEuLc5IPTAAAAOgAAADsAAAAOAACavQAAmsAAAACgogAAAg8AAASsgGSApaIAAJrBAACawoEMkYEMnIBV2QAAACEAAAAlAACaxQAAAA4AAAAoAACaxgAAACMAAADdAACaxwAAZ3oAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAACaz18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMjoBkgDmAXIAAgAQIgQyS0wAAADoAAAA7AAAADgAAmtEAAJraAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAACa2wAAmtwAAJrdAACa3gAAmt8AAJrgAACa4QAAmuKBDJOBDJSBDJWBDJeBDJiBDJmBDJqBDJuAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAmsEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMkQgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJrBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBDJEICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAmwQAAAAXAACawQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBDJaAAIEMkQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAACbEgAAmxMAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAmsEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMkQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAJrBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBDJEICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACawQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQyRCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAmsEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMkQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJrBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBDJEICAgIgEqAbwgIgAAI2QAAACEAAAAlAACbYQAAAA4AAAAoAACbYgAAACMAAADdAACbYwAAZ3oAAASsAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAACba18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMjoClgDmAXIAAgAQIgQyd0wAAADoAAAA7AAAADgAAm20AAJt1AAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAACbdgAAm3cAAJt4AACbeQAAm3oAAJt7AACbfIEMnoEMn4EMoIEMoYEMooEMo4EMpIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAACawgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgQycCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwAAmsIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEMnAgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAJrCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBDJwICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAJEAAAAXAACawgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBAiKAAIEMnAgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJrCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBDJwICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACawgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQycCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAABegAAAAFwAAmsIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQylgACBDJwICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAACb6AAAACEAAAEmAAABJwAAm+kAAAAjAAABJQAAm+oAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJEAAADsAAAA7AAAm/IAAAAxAAAA7AAAAN4AAADsAAAEogAAF4IAAADsAAAA7AAAm/oAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAiIICIEMpwiAOQiBAsWBAj4ICIEMpggSU6BOMdMAAAA6AAAAOwAAAA4AAJv+AACcAQAAAKCiAAACDwAABKyAZIClogAAnAIAAJwDgQyogQyzgFXZAAAAIQAAACUAAJwGAAAADgAAACgAAJwHAAAAIwAAAN0AAJwIAAAXoAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAJwQXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQylgGSAOYBcgACABAiBDKnTAAAAOgAAADsAAAAOAACcEgAAnBsAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAJwcAACcHQAAnB4AAJwfAACcIAAAnCEAAJwiAACcI4EMqoEMq4EMrIEMroEMr4EMsIEMsYEMsoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACcAgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQyoCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAnAIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMqAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACcRQAAABcAAJwCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEMrYAAgQyoCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAJxTAACcVAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACcAgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQyoCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAnAIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEMqAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJwCAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBDKgICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACcAgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQyoCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAnAIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMqAgICAiASoBvCAiAAAjZAAAAIQAAACUAAJyiAAAADgAAACgAAJyjAAAAIwAAAN0AAJykAAAXoAAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAJysXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQylgKWAOYBcgACABAiBDLTTAAAAOgAAADsAAAAOAACcrgAAnLYAAACgpwAABV0AAAVeAAAFXwAABWAAAAVhAAAFYgAABWOAtIC1gLaAt4C4gLmAuqcAAJy3AACcuAAAnLkAAJy6AACcuwAAnLwAAJy9gQy1gQy2gQy3gQy4gQy5gQy6gQy7gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAJwDAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBDLMICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAACcAwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACAvoAAgQyzCAgICIBKgLUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwAAnAMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVfAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEMswgICAiASoC2CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAdAAAABcAAJwDAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYAAAAOwAAADsAAAAFwAAAOyAAIEIfIAAgQyzCAgICIBKgLcICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAnAMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVhAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEMswgICAiASoC4CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJwDAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYgAAAOwAAADsAAAAFwAAAOyAAIBSgACBDLMICAgIgEqAuQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAZ3oAAAAXAACcAwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWMAAADsAAAA7AAAABcAAADsgACBDI6AAIEMswgICAiASoC6CAiAAAjfEBIAAAEiAAABIwAAASQAAJ0pAAAAIQAAASYAAAEnAACdKgAAACMAAAElAACdKwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAdAAAAOwAAADsAACdMwAAADEAAADsAAAA3gAAAOwAAAIGAABncQAAAOwAAADsAACdOwAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEIfAgIgQy+CIA5CICKgQiUCAiBDL0IEpgpY23TAAAAOgAAADsAAAAOAACdPwAAnUIAAACgogAAAg8AAAIQgGSAZaIAAJ1DAACdRIEMv4EMyoBV2QAAACEAAAAlAACdRwAAAA4AAAAoAACdSAAAACMAAADdAACdSQAAZ3sAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAACdUV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMvIBkgDmAXIAAgAQIgQzA0wAAADoAAAA7AAAADgAAnVMAAJ1cAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAACdXQAAnV4AAJ1fAACdYAAAnWEAAJ1iAACdYwAAnWSBDMGBDMKBDMOBDMWBDMaBDMeBDMiBDMmAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAnUMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMvwgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJ1DAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBDL8ICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAnYYAAAAXAACdQwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBDMSAAIEMvwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAACdlAAAnZUAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAnUMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMvwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJ1DAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBDL8ICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACdQwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgQy/CAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAnUMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEMvwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAJ1DAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBDL8ICAgIgEqAbwgIgAAI2QAAACEAAAAlAACd4wAAAA4AAAAoAACd5AAAACMAAADdAACd5QAAZ3sAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAACd7V8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEMvIBlgDmAXIAAgAQIgQzL0wAAADoAAAA7AAAADgAAne8AAJ33AAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAACd+AAAnfkAAJ36AACd+wAAnfwAAJ39AACd/oEMzIEMzYEMzoEMz4EM0IEM0YEM0oBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACdRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgQzKCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAnUQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEMyggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJ1EAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBDMoICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMb4AAAAXAACdRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBGuAAIEMyggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAJ1EAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBDMoICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACdRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQzKCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABc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pAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAChBwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQ0PCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwAAoQcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIENDwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKEHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBDQ8ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAChBwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgQ0PCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAoQcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENDwgICAiASoCBCAiAAAjSAAAAOwAAAA4AAKItAAABPKEAAKIugQ0ZgEnXAAAADgAAACUAACqEAAAAIQAAACgAACqFAAAAIwAAKoYAAAAXAAAAdAAAAHQAAKI1AAAAmAAAADGBCWiAAIEIfIEIfIENGoED0RKwZWMS3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABlmwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgQh2CAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAZZsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEIdggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAABnfgAAABcAAGWbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEM6oAAgQh2CAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAAAomYAAAAhAAABJgAAAScAAKJnAAAAIwAAASUAAKJoAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACIAAAA7AAAAOwAAKJwAAAAMQAAAOwAAADeAAAA7AAAAgYAAGV4AAAA7AAAAOwAAKJ4AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQhSCAiBDSAIgDkIgIqBCGcICIENHwgSeNlXzdMAAAA6AAAAOwAAAA4AAKJ8AACifwAAAKCiAAACDwAAAhCAZIBlogAAooAAAKKBgQ0hgQ0sgFXZAAAAIQAAACUAAKKEAAAADgAAACgAAKKFAAAAIwAAAN0AAKKGAABlewAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAKKOXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQ0egGSAOYBcgACABAiBDSLTAAAAOgAAADsAAAAOAACikAAAopkAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAKKaAACimwAAopwAAKKdAACingAAop8AAKKgAACioYENI4ENJIENJYENJ4ENKIENKYENKoENK4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACigAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQ0hCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAooAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENIQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACiwwAAABcAAKKAAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIENJoAAgQ0hCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAKLRAACi0gAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACigAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQ0hCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAooAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENIQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKKAAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBDSEICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACigAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQ0hCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAooAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENIQgICAiASoBvCAiAAAjZAAAAIQAAACUAAKMgAAAADgAAACgAAKMhAAAAIwAAAN0AAKMiAABlewAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAKMqXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQ0egGWAOYBcgACABAiBDS3TAAAAOgAAADsAAAAOAACjLAAAozQAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAKM1AACjNgAAozcAAKM4AACjOQAAozoAAKM7gQ0ugQ0vgQ0wgQ0xgQ0ygQ0zgQ00gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAHqQAAABcAAKKBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAID7gACBDSwICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACigQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQ0sCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAooEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENLAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAH1wAAABcAAKKBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAID/gACBDSwICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACigQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQ0sCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAooEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENLAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKKBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBDSwICAgIgEqAgQgIgAAI0gAAADsAAAAOAACjpwAAATyhAABkk4EIUYBJEn0G9HrfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAFJBAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBBwAICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAABSQQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQcACAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAFQwAAAAFwAAUkEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQfEgACBBwAICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAACj2QAAACEAAAEmAAABJwAAo9oAAAAjAAABJQAAo9sAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIIAAADsAAAA7AAAo+MAAAAxAAAA7AAAAN4AAADsAAAEogAAUNkAAADsAAAA7AAAo+sAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBsMICIENPAiAOQiBAsWBBtoICIENOwgS3AkzRtMAAAA6AAAAOwAAAA4AAKPvAACj8gAAAKCiAAACDwAABKyAZIClogAAo/MAAKP0gQ09gQ1IgFXZAAAAIQAAACUAAKP3AAAADgAAACgAAKP4AAAAIwAAAN0AAKP5AABQ3gAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAKQBXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQ06gGSAOYBcgACABAiBDT7TAAAAOgAAADsAAAAOAACkAwAApAwAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAKQNAACkDgAApA8AAKQQAACkEQAApBIAAKQTAACkFIENP4ENQIENQYENQ4ENRIENRYENRoENR4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACj8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQ09CAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAo/MAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENPQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACkNgAAABcAAKPzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIENQoAAgQ09CAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAKREAACkRQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACj8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQ09CAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAo/MAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENPQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKPzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBDT0ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACj8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgQ09CAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAo/MAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENPQgICAiASoBvCAiAAAjZAAAAIQAAACUAAKSTAAAADgAAACgAAKSUAAAAIwAAAN0AAKSVAABQ3gAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAKSdXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQ06gKWAOYBcgACABAiBDUnTAAAAOgAAADsAAAAOAACknwAApKcAAACgpwAABV0AAAVeAAAFXwAABWAAAAVhAAAFYgAABWOAtIC1gLaAt4C4gLmAuqcAAKSoAACkqQAApKoAAKSrAACkrAAApK0AAKSugQ1KgQ1LgQ1MgQ1NgQ1OgQ1PgQ1QgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAKP0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBDUgICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAACjwAAAAXAACj9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACBASyAAIENSAgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAKP0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC8gACBDUgICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAIkAAAAXAACj9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBBmiAAIENSAgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAKP0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBDUgICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACj9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgQ1ICAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAExYAAAAFwAAo/QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQavgACBDUgICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAC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AACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACmpQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgQ1vCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAKboAAAAFwAApqUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgQ10gACBDW8ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAApvYAAKb3AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKalAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBDW8ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACmpQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgQ1vCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAApqUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIENbwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKalAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBDW8ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgA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BDZSBDZWBDZaBDZeBDZiBDZmAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAp+cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENkQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAKfnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBDZEICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACn5wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQ2RCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAAp+cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBDZEICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACn5wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQ2RCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAp+cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENkQgICAiASoCACAiAAAjfEA8AAAEiAAA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AADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACBAzqAAIENqAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAivAAAABcAAKkoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDPoAAgQ2oCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAqSgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIENqAgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAKkoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBDagICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACpKAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQ2oCAgICIBKgIEICIAACNIAAAA7AAAADgAAqk4AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAABKfQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAroAAgQZiCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAASn0AAADsAAAA7AAAAOwAAAAxAAAA7AA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tgG6Ab6gAAK00AACtNQAArTYAAK03AACtOAAArTkAAK06AACtO4EN6IEN6YEN6oEN7IEN7YEN7oEN74EN8IBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACtGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgQ3mCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAArRoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEN5ggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACtXQAAABcAAK0aAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEN64AAgQ3mCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAK1rAACtbAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAACtGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgQ3mCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAArRoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEN5ggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAK0aAAA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CEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAArwVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBDfqAZYA5gFyAAIAECIEOCdMAAAA6AAAAOwAAAA4AAK8HAACvDwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAArxAAAK8RAACvEgAArxMAAK8UAACvFQAArxaBDgqBDguBDgyBDg2BDg6BDg+BDhCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAArlwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEOCAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAK5cAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBDggICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACuXAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQ4ICAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADB8AAAAFwAArlwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQRTgACBDggICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAA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AgACAAIEOHwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAK+dAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBDh8ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACvnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgQ4fCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAAr50AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBDh8ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACvnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgQ4fCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAr50AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEOHwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAK+dAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBDh8ICAgIgEqAgQgIgAAI3xASAAABIgA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OVggICAiASoA+CAiAAAjSAAAAOwAAAA4AALNyAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAsz4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEOVggICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAACzhQAAABcAALM+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEOXIAAgQ5WCAgICIBKgEAICIAACNIAAAA7AAAADgAAs5MAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAACzPgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgQ5WCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAALOmAAAAFwAAsz4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgQ5fgACBDlYICAgIgEqAQggIgAAI0gAAADsAAAAOAACztAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAALM+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAICugACBDlYICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAs8cAAAAXAACzPgAAAOwAAADsAAAA7AAAADEAAAD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AASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAC22AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgQ62CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAttgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEOtggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAALbYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgQ62CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAttgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEOtggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAALbYAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBDrYICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAC22AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgQ62CAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAt/4AAAAhAAABJgAAAScAALf/AAA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AAADsAAAAFwAAAOyAAIBSgACBEAkICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADJWwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRAJCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAMmeAAAAFwAAyVsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRAOgACBEAkICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAAyawAAMmtAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAMlbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEAkICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADJWwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRAJCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAyVsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQCQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAMlbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOw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QAAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAADLUQAAy1IAAMtTAADLVAAAy1UAAMtWAADLV4EQLYEQLoEQL4EQMIERfYERfoERf4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAADKnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgRArCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwAAyp0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBECsICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAADKnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgRArCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAB/AAAAFwAAyp0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgRAxgACBECsICAgIgEqAtwgIgAAI3xAQAADLlgAAy5cAAMuYAADLmQAAACEAAMuaAADLmwAAACMAAMucAADLnQAAAA4AAAAlAADLngAAy58AAAAoAAAA3QAAAN4AAMuhAAAAKQAAACkAAAAUAADLpQAAAOQAAAAxAAAAKQAAAN4AAADnAAAATQAAAN4AAMusAADLrQAAAOxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAOYEQRIAEgASAAoEQM4EDzYAEgDmBBSiAFoA5gRF8gRAyCBKEL5pN0wAAADoAAAA7AAAADgAAy7EAAMuzAAAAoKEAAADxgDuhAADLtIEQNIBV2QAAACEAAAAlAADLtwAAAA4AAAAoAADLuAAAACMAAADdAADLuQAAAH8AAADxAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADLwV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEQMYA7gDmAXIAAgAQIgRA10wAAADoAAAA7AAAADgAAy8MAAMvNAAAAoKkAAAEEAAABBQAAAQYAAAEHAAABCAAAAQkAAAEKAAABCwAAAQyAPoA/gECAQYBCgEOARIBFgEapAADLzgAAy88AAMvQAADL0QAAy9IAAMvTAADL1AAAy9UAAMvWgRA2gRA4gRA5gRA7gRA8gRA+gRA/gRBBgRBCgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADL2gAAABcAAMu0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBAAAAOwAAADsAAAAFwAAAOyAAIEQN4AAgRA0CAgICIBKgD4ICIAACNIAAAA7AAAADgAAy+gAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADLtAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQUAAADsAAAA7AAAABcAAADsgACAAIAAgRA0CAgICIBKgD8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAMv7AAAAFwAAy7QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgRA6gACBEDQICAgIgEqAQAgIgAAI0gAAADsAAAAOAADMCQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAMu0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEDQICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAzBwAAAAXAADLtAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBED2AAIEQNAgICAiASoBCCAiAAAjSAAAAOwAAAA4AAMwqAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAy7QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQNAgICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADMPQAAABcAAMu0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIEQQIAAgRA0CAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AAMxLAADMTAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAADLtAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgRA0CAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAMxfAAAAFwAAy7QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgRBDgACBEDQICAgIgEqARggIgAAIXxAlUGVyc2lzdGVkRGlzY3Vzc2lvbkxvY2FsQ29uZmlndXJhdGlvbtMAAAA6AAAAOwAAAA4AAMxuAADMfAAAAKCtAADMbwAAzHAAAMxxAADMcgAAzHMAAMx0AADMdQAAzHYAAMx3AADMeAAAzHkAAMx6AAArgYEQRYEQRoEQR4EQSIEQSYEQSoEQS4EQTIEQTYEQToEQT4EQUIED9q0AAMx9AADMfgAAzH8AAMyAAADMgQAAzIIAAMyDAADMhAAAzIUAAMyGAADMhwAAzIgAAMyJgRBRgRBogRB/gRCWgRCtgRDEgRDbgRDygREJgREggRE3gRFOgRFlgFVfECFyYXdEb0ZldGNoQ29udGVudFJpY2hVUkxzTWV0YWRhdGFbcmF3QXV0b1JlYWRfECpyYXdEb05vdGlmeVdoZW5NZW50aW9ubmVkSW5NdXRlZERpc2N1c3Npb25fEBZyYXdDb3VudEJhc2VkUmV0ZW50aW9uXxAUcmF3Tm90aWZpY2F0aW9uU291bmRfEB5yYXdDb3VudEJhc2VkUmV0ZW50aW9uSXNBY3RpdmVfEBRyYXdEb1NlbmRSZWFkUmVjZWlwdF8QHXJhd1BlcmZvcm1JbnRlcmFjdGlvbkRvbmF0aW9uXGRlZmF1bHRFbW9qaV8QFXJhd1RpbWVCYXNlZFJldGVudGlvbl8QHnJhd1JldGFpbldpcGVkT3V0Ym91bmRNZXNzYWdlc18QGG11dGVOb3RpZmljYXRpb25zRW5kRGF0Zd8QEgAAASIAAAEjAAABJAAAzJgAAAAhAAABJgAAAScAAMyZAAAAIwAAASUAAMyaAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB/AAAA7AAAAOwAAMyiAAAAMQAAAOwAAADeAAAA7AAAAgYAAMxvAAAA7AAAAOwAAMyqAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRAxCAiBEFMIgDkIgIqBEEUICIEQUggSuF62wtMAAAA6AAAAOwAAAA4AAMyuAADMsQAAAKCiAAACDwAAAhCAZIBlogAAzLIAAMyzgRBUgRBfgFXZAAAAIQAAACUAAMy2AAAADgAAACgAAMy3AAAAIwAAAN0AAMy4AADMfQAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAMzAXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRBRgGSAOYBcgACABAiBEFXTAAAAOgAAADsAAAAOAADMwgAAzMsAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAMzMAADMzQAAzM4AAMzPAADM0AAAzNEAAMzSAADM04EQVoEQV4EQWIEQWoEQW4EQXIEQXYEQXoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADMsgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRBUCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAzLIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQVAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADM9QAAABcAAMyyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEQWYAAgRBUCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAM0DAADNBAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADMsgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRBUCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAzLIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEQVAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAMyyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEFQICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADMsgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRBUCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAzLIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQVAgICAiASoBvCAiAAAjZAAAAIQAAACUAAM1SAAAADgAAACgAAM1TAAAAIwAAAN0AAM1UAADMfQAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAM1cXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRBRgGWAOYBcgACABAiBEGDTAAAAOgAAADsAAAAOAADNXgAAzWYAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAM1nAADNaAAAzWkAAM1qAADNawAAzWwAAM1tgRBhgRBigRBjgRBkgRBlgRBmgRBngFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAMyzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEF8ICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADMswAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRBfCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAzLMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQXwgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAivAAAABcAAMyzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDPoAAgRBfCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAzLMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQXwgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAMyzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEF8ICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADMswAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRBfCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAzdkAAAAhAAABJgAAAScAAM3aAAAAIwAAASUAAM3bAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB/AAAA7AAAAOwAAM3jAAAAMQAAAOwAAADeAAAA7AAAAgYAAMxwAAAA7AAAAOwAAM3rAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRAxCAiBEGoIgDkIgIqBEEYICIEQaQgSyR898NMAAAA6AAAAOwAAAA4AAM3vAADN8gAAAKCiAAACDwAAAhCAZIBlogAAzfMAAM30gRBrgRB2gFXZAAAAIQAAACUAAM33AAAADgAAACgAAM34AAAAIwAAAN0AAM35AADMfgAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAM4BXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRBogGSAOYBcgACABAiBEGzTAAAAOgAAADsAAAAOAADOAwAAzgwAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAM4NAADODgAAzg8AAM4QAADOEQAAzhIAAM4TAADOFIEQbYEQboEQb4EQcYEQcoEQc4EQdIEQdYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADN8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRBrCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAzfMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQawgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADONgAAABcAAM3zAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEQcIAAgRBrCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAM5EAADORQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADN8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRBrCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAzfMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEQawgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAM3zAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEGsICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADN8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRBrCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAAzfMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQawgICAiASoBvCAiAAAjZAAAAIQAAACUAAM6TAAAADgAAACgAAM6UAAAAIwAAAN0AAM6VAADMfgAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAM6dXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRBogGWAOYBcgACABAiBEHfTAAAAOgAAADsAAAAOAADOnwAAzqcAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAM6oAADOqQAAzqoAAM6rAADOrAAAzq0AAM6ugRB4gRB5gRB6gRB7gRB8gRB9gRB+gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAM30AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEHYICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADN9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRB2CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAzfQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQdggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAivAAAABcAAM30AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDPoAAgRB2CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAzfQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQdggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAM30AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEHYICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADN9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRB2CAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAAzxoAAAAhAAABJgAAAScAAM8bAAAAIwAAASUAAM8cAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAAB/AAAA7AAAAOwAAM8kAAAAMQAAAOwAAADeAAAA7AAAAgYAAMxxAAAA7AAAAOwAAM8sAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRAxCAiBEIEIgDkIgIqBEEcICIEQgAgS03uxJ9MAAAA6AAAAOwAAAA4AAM8wAADPMwAAAKCiAAACDwAAAhCAZIBlogAAzzQAAM81gRCCgRCNgFXZAAAAIQAAACUAAM84AAAADgAAACgAAM85AAAAIwAAAN0AAM86AADMfwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAM9CXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRB/gGSAOYBcgACABAiBEIPTAAAAOgAAADsAAAAOAADPRAAAz00AAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAM9OAADPTwAAz1AAAM9RAADPUgAAz1MAAM9UAADPVYEQhIEQhYEQhoEQiIEQiYEQioEQi4EQjIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADPNAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRCCCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAzzQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQgggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADPdwAAABcAAM80AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEQh4AAgRCCCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAM+FAADPhgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADPNAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRCCCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAAzzQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEQgggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAM80AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEIIICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADPNAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRCCCAgICIBKgG4ICIAACN8QDwAAASIAAAE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AAAAoAAABKwAAABcAAAGOAAAAFwAA0bYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQsAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANG2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBELAICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA0fkAAAAXAADRtgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBELWAAIEQsAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAADSBwAA0ggAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA0bYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQsAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAANG2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBELAICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADRtgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRCwCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA0bYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQsAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANG2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBELAICAgIgEqAbwgIgAAI2QAAACEAAAAlAADSVgAAAA4AAAAoAADSVwAAACMAAADdAADSWAAAzIEAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADSYF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEQrYBlgDmAXIAAgAQIgRC80wAAADoAAAA7AAAADgAA0mIAANJqAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAADSawAA0mwAANJtAADSbgAA0m8AANJwAADScYEQvYEQvoEQv4EQwIEQwYEQwoEQw4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADRtwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRC7CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA0bcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEQuwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANG3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBELsICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAADRtwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEQuwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANG3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBELsICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADRtwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRC7CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA0bcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEQuwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAANLdAAAAIQAAASYAAAEnAADS3gAAACMAAAElAADS3wAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfwAAAOwAAADsAADS5wAAADEAAADsAAAA3gAAAOwAAAIGAADMdAAAAOwAAADsAADS7wAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3J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fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEPKAZYA5gFyAAIAECIERAdMAAAA6AAAAOwAAAA4AANYlAADWLQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA1i4AANYvAADWMAAA1jEAANYyAADWMwAA1jSBEQKBEQOBEQSBEQWBEQaBEQeBEQiAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA1XoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERAAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANV6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEQAICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADVegAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgREACAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwAA1XoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBEQAICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADVegAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgREACAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA1XoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERAAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANV6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEQAICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADWoAAAACEAAAEmAAABJwAA1qEAAAAjAAABJQAA1qIAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH8AAADsAAAA7AAA1qoAAAAxAAAA7AAAAN4AAADsAAACBgAAzHcAAADsAAAA7AAA1rIAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEDEICIERCwiAOQiAioEQTQgIgREKCBJ6BtyF0wAAADoAAAA7AAAADgAA1rYAANa5AAAAoKIAAAIPAAACEIBkgGWiAADWugAA1ruBEQyBEReAVdkAAAAhAAAAJQAA1r4AAAAOAAAAKAAA1r8AAAAjAAAA3QAA1sAAAMyFAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA1shfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEQmAZIA5gFyAAIAECIERDdMAAAA6AAAAOwAAAA4AANbKAADW0wAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA1tQAANbVAADW1gAA1tcAANbYAADW2QAA1toAANbbgREOgREPgREQgRESgRETgREUgREVgREWgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANa6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEQwICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADWugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgREMCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAANb9AAAAFwAA1roAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRERgACBEQwICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA1wsAANcMAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANa6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEQwICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADWugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgREMCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA1roAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERDAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANa6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEQwICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADWugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgREMCAgICIBKgG8ICIAACNkAAAAhAAAAJQAA11oAAAAOAAAAKAAA11sAAAAjAAAA3QAA11wAAMyFAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA12RfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEQmAZYA5gFyAAIAECIERGNMAAAA6AAAAOwAAAA4AANdmAADXbgAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA128AANdwAADXcQAA13IAANdzAADXdAAA13WBERmBERqBERuBERyBER2BER6BER+AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA1rsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERFwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANa7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBERcICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADWuwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgREXCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAA1rsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBERcICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADWuwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgREXCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA1rsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERFwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANa7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBERcICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADX4QAAACEAAAEmAAABJwAA1+IAAAAjAAABJQAA1+MAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH8AAADsAAAA7AAA1+sAAAAxAAAA7AAAAN4AAADsAAACBgAAzHgAAADsAAAA7AAA1/MAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEDEICIERIgiAOQiAioEQTggIgREhCBL8/rym0wAAADoAAAA7AAAADgAA1/cAANf6AAAAoKIAAAIPAAACEIBkgGWiAADX+wAA1/yBESOBES6AVdkAAAAhAAAAJQAA1/8AAAAOAAAAKAAA2AAAAAAjAAAA3QAA2AEAAMyGAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA2AlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBESCAZIA5gFyAAIAECIERJNMAAAA6AAAAOwAAAA4AANgLAADYFAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA2BUAANgWAADYFwAA2BgAANgZAADYGgAA2BsAANgcgRElgREmgREngREpgREqgRErgREsgREtgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANf7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBESMICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADX+wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgREjCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAANg+AAAAFwAA1/sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgREogACBESMICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA2EwAANhNAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANf7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBESMICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADX+wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgREjCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA1/sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERIwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANf7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBESMICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADX+wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgREjCAgICIBKgG8ICIAACNkAAAAhAAAAJQAA2JsAAAAOAAAAKAAA2JwAAAAjAAAA3QAA2J0AAMyGAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA2KVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBESCAZYA5gFyAAIAECIERL9MAAAA6AAAAOwAAAA4AANinAADYrwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA2LAAANixAADYsgAA2LMAANi0AADYtQAA2LaBETCBETGBETKBETOBETSBETWBETaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA1/wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERLggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANf8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBES4ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADX/AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgREuCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwAA1/wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBES4ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADX/AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgREuCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA1/wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERLggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANf8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBES4ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADZIgAAACEAAAEmAAABJwAA2SMAAAAjAAABJQAA2SQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH8AAADsAAAA7AAA2SwAAAAxAAAA7AAAAN4AAADsAAACBgAAzHkAAADsAAAA7AAA2TQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEDEICIEROQiAOQiAioEQTwgIgRE4CBJFjDEq0wAAADoAAAA7AAAADgAA2TgAANk7AAAAoKIAAAIPAAACEIBkgGWiAADZPAAA2T2BETqBEUWAVdkAAAAhAAAAJQAA2UAAAAAOAAAAKAAA2UEAAAAjAAAA3QAA2UIAAMyHAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA2UpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBETeAZIA5gFyAAIAECIERO9MAAAA6AAAAOwAAAA4AANlMAADZVQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA2VYAANlXAADZWAAA2VkAANlaAADZWwAA2VwAANldgRE8gRE9gRE+gRFAgRFBgRFCgRFDgRFEgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANk8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEToICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADZPAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRE6CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAANl/AAAAFwAA2TwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRE/gACBEToICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA2Y0AANmOAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANk8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEToICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADZPAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRE6CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA2TwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEROggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANk8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEToICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADZPAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRE6CAgICIBKgG8ICIAACNkAAAAhAAAAJQAA2dwAAAAOAAAAKAAA2d0AAAAjAAAA3QAA2d4AAMyHAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA2eZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBETeAZYA5gFyAAIAECIERRtMAAAA6AAAAOwAAAA4AANnoAADZ8AAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA2fEAANnyAADZ8wAA2fQAANn1AADZ9gAA2feBEUeBEUiBEUmBEUqBEUuBEUyBEU2AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2T0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERRQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANk9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEUUICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADZPQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRFFCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwAA2T0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBEUUICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADZPQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRFFCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2T0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERRQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANk9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEUUICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADaYwAAACEAAAEmAAABJwAA2mQAAAAjAAABJQAA2mUAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH8AAADsAAAA7AAA2m0AAAAxAAAA7AAAAN4AAADsAAACBgAAzHoAAADsAAAA7AAA2nUAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEDEICIERUAiAOQiAioEQUAgIgRFPCBJVg/Jf0wAAADoAAAA7AAAADgAA2nkAANp8AAAAoKIAAAIPAAACEIBkgGWiAADafQAA2n6BEVGBEVyAVdkAAAAhAAAAJQAA2oEAAAAOAAAAKAAA2oIAAAAjAAAA3QAA2oMAAMyIAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA2otfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEU6AZIA5gFyAAIAECIERUtMAAAA6AAAAOwAAAA4AANqNAADalgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA2pcAANqYAADamQAA2poAANqbAADanAAA2p0AANqegRFTgRFUgRFVgRFXgRFYgRFZgRFagRFbgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANp9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEVEICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADafQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRFRCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAANrAAAAAFwAA2n0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRFWgACBEVEICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA2s4AANrPAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANp9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEVEICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAADafQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRFRCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA2n0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERUQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANp9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEVEICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADafQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRFRCAgICIBKgG8ICIAACNkAAAAhAAAAJQAA2x0AAAAOAAAAKAAA2x4AAAAjAAAA3QAA2x8AAMyIAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA2ydfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEU6AZYA5gFyAAIAECIERXdMAAAA6AAAAOwAAAA4AANspAADbMQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA2zIAANszAADbNAAA2zUAANs2AADbNwAA2ziBEV6BEV+BEWCBEWGBEWKBEWOBEWSAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2n4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERXAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAANp+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEVwICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADafgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRFcCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADeBAAAAFwAA2n4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQTegACBEVwICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADafgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRFcCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA2n4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERXAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAANp+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEVwICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADbpAAAACEAAAEmAAABJwAA26UAAAAjAAABJQAA26YAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH8AAADsAAAA7AAA264AAAAxAAAA7AAAAN4AAADsAAAEogAAK4EAAADsAAAA7AAA27YAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEDEICIERZwiAOQiBAsWBA/YICIERZggSbVuHYdMAAAA6AAAAOwAAAA4AANu6AADbvQAAAKCiAAACDwAABKyAZIClogAA274AANu/gRFogRFzgFXZAAAAIQAAACUAANvCAAAADgAAACgAANvDAAAAIwAAAN0AANvEAADMiQAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAANvMXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRFlgGSAOYBcgACABAiBEWnTAAAAOgAAADsAAAAOAADbzgAA29cAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAANvYAADb2QAA29oAANvbAADb3AAA290AANveAADb34ERaoERa4ERbIERboERb4ERcIERcYERcoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADbvgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRFoCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA274AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERaAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADcAQAAABcAANu+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIERbYAAgRFoCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AANwPAADcEAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADbvgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAig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AAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAADd5AAA3eUAAN3mAADd5wAA3egAAN3pAADd6oERkIERkYERkoERk4ERlIERlYERloBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADdMAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRGOCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA3TAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERjggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAN0wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBEY4ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAADdMAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIERjggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAN0wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEY4ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADdMAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRGOCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA3TAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERjggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAN5WAAAAIQAAASYAAAEnAADeVwAAACMAAAElAADeWAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAcwAAAOwAAADsAADeYAAAADEAAADsAAAA3gAAAOwAAAIGAAC0AgAAAOwAAADsAADeaAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEOUwgIgRGZCIA5CICKgQ5vCAiBEZgIEu42K3DTAAAAOgAAADsAAAAOAADebAAA3m8AAACgogAAAg8AAAIQgGSAZaIAAN5wAADecYERmoERpYBV2QAAACEAAAAlAADedAAAAA4AAAAoAADedQAAACMAAADdAADedgAAtBkAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADefl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYERl4BkgDmAXIAAgAQIgRGb0wAAADoAAAA7AAAADgAA3oAAAN6JAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAADeigAA3osAAN6MAADejQAA3o4AAN6PAADekAAA3pGBEZyBEZ2BEZ6BEaCBEaGBEaKBEaOBEaSAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA3nAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERmggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAN5wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEZoICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA3rMAAAAXAADecAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBEZ+AAIERmggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAADewQAA3sIAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA3nAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERmggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAN5wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEZoICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADecAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRGaCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACE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BdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYERroBlgDmAXIAAgAQIgRG90wAAADoAAAA7AAAADgAA4F0AAOBlAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAADgZgAA4GcAAOBoAADgaQAA4GoAAOBrAADgbIERvoERv4ERwIERwYERwoERw4ERxIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIo4AAAAXAADfsgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBAzqAAIERvAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAN+yAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEbwICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADfsgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRG8CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwAA37IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBEbwICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADfsgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRG8CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA37IAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERvAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAN+yAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEbwICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADg2AAAACEAAAEmAAABJwAA4NkAAAAjAAABJQAA4NoAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHMAAADsAAAA7AAA4OIAAAAxAAAA7AAAAN4AAADsAAACBgAAtAQAAADsAAAA7AAA4OoAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBDlMICIERxwiAOQiAioEOcQgIgRHGCBMAAAABF8rNS9MAAAA6AAAAOwAAAA4AAODuAADg8QAAAKCiAAACDwAAAhCAZIBlogAA4PIAAODzgRHIgRHTgFXZAAAAIQAAACUAAOD2AAAADgAAACgAAOD3AAAAIwAAAN0AAOD4AAC0GwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAOEAXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRHFgGSAOYBcgACABAiBEcnTAAAAOgAAADsAAAAOAADhAgAA4QsAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAOEMAADhDQAA4Q4AAOEPAADhEAAA4REAAOESAADhE4ERyoERy4ERzIERzoERz4ER0IER0YER0oBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADg8gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRHICAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA4PIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIERyAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADhNQAAABcAAODyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIERzYAAgRHICAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAOFDAADhRAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADg8gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRHICAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA4PIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERyAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAODyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEcgICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADg8gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRHICAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA4PIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIERyAgICAiASoBvCAiAAAjZAAAAIQAAACUAAOGSAAAADgAAACgAAOGTAAAAIwAAAN0AAOGUAAC0GwAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAOGcXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRHFgGWAOYBcgACABAiBEdTTAAAAOgAAADsAAAAOAADhngAA4aYAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAOGnAADhqAAA4akAAOGqAADhqwAA4awAAOGtgRHVgRHWgRHXgRHYgRHZgRHagRHbgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAODzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEdMICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADg8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRHTCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA4PMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIER0wgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAxvgAAABcAAODzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEEa4AAgRHTCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA4PMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIER0wgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAODzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEdMICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADg8wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRHTCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAAA4hkAAAAhAAABJgAAAScAAOIaAAAAIwAAASUAAOIbAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwA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V3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA43EAAAAXAADjSwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBEfaAAIER8wgICAiASoA+CAiAAAjSAAAAOwAAAA4AAON/AAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA40sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIER8wgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADjkgAAABcAAONLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIER+YAAgRHzCAgICIBKgEAICIAACNIAAAA7AAAADgAA46AAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADjSwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRHzCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAOOzAAAAFwAA40sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRH8gACBEfMICAgIgEqAQggIgAAI0gAAADsAAAAOAADjwQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAONLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEfMICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA49QAAAAXAADjSwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBEf+AAIER8wgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAADj4gAA4+MAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwAA40sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIER8wgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADj9gAAABcAAONLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIESAoAAgRHzCAgICIBKgEYICIAACF8QJlBlcnNpc3RlZERpc2N1c3Npb25TaGFyZWRDb25maWd1cmF0aW9u0wAAADoAAAA7AAAADgAA5AUAAOQLAAAAoKUAAOQGAADkBwAAK4EAAOQJAAArfoESBIESBYED9oESBoED86UAAOQMAADkDQAA5A4AAOQPAADkEIESB4ESHoESNYESTIESY4BVXxAVcmF3VmlzaWJpbGl0eUR1cmF0aW9uV3ZlcnNpb25fEBRyYXdFeGlzdGVuY2VEdXJhdGlvbt8QEgAAASIAAAEjAAABJAAA5BYAAAAhAAABJgAAAScAAOQXAAAAIwAAASUAAOQYAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACKAAAA7AAAAOwAAOQgAAAAMQAAAOwAAADeAAAA7AAAAgYAAOQGAAAA7AAAAOwAAOQoAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRHwCAiBEgkIgDkIgIqBEgQICIESCAgTAAAAAQg/HZTTAAAAOgAAADsAAAAOAADkLAAA5C8AAACgogAAAg8AAAIQgGSAZaIAAOQwAADkMYESCoESFYBV2QAAACEAAAAlAADkNAAAAA4AAAAoAADkNQAAACMAAADdAADkNgAA5AwAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADkPl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYESB4BkgDmAXIAAgAQIgRIL0wAAADoAAAA7AAAADgAA5EAAAORJAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAADkSgAA5EsAAORMAADkTQAA5E4AAORPAADkUAAA5FGBEgyBEg2BEg6BEhCBEhGBEhKBEhOBEhSAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5DAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESCggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOQwAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEgoICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA5HMAAAAXAADkMAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBEg+AAIESCggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAADkgQAA5IIAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5DAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESCggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAOQwAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBEgoICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADkMAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRIKCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5DAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESCggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOQwAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEgoICAgIgEqAbwgIgAAI2QAAACEAAAAlAADk0AAAAA4AAAAoAADk0QAAACMAAADdAADk0gAA5AwAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADk2l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYESB4BlgDmAXIAAgAQIgRIW0wAAADoAAAA7AAAADgAA5NwAAOTkAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAADk5QAA5OYAAOTnAADk6AAA5OkAAOTqAADk64ESF4ESGIESGYESGoESG4ESHIESHYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADkMQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRIVCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5DEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESFQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOQxAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBEhUICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMHwAAAAXAADkMQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBFOAAIESFQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOQxAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEhUICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADkMQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRIVCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5DEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESFQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAOVXAAAAIQAAASYAAAEnAADlWAAAACMAAAElAADlWQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAigAAAOwAAADsAADlYQAAADEAAADsAAAA3gAAAOwAAAIGAADkBwAAAOwAAADsAADlaQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIER8AgIgRIgCIA5CICKgRIFCAiBEh8IEvot8nTTAAAAOgAAADsAAAAOAADlbQAA5XAAAACgogAAAg8AAAIQgGSAZaIAAOVxAADlcoESIYESLIBV2QAAACEAAAAlAADldQAAAA4AAAAoAADldgAAACMAAADdAADldwAA5A0AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADlf18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYESHoBkgDmAXIAAgAQIgRIi0wAAADoAAAA7AAAADgAA5YEAAOWKAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAADliwAA5YwAAOWNAADljgAA5Y8AAOWQAADlkQAA5ZKBEiOBEiSBEiWBEieBEiiBEimBEiqBEiuAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5XEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESIQgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOVxAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEiEICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA5bQAAAAXAADlcQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBEiaAAIESIQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAADlwgAA5cMAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5XEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESIQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOVxAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEiEICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADlcQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRIhCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5XEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESIQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOVxAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEiEICAgIgEqAbwgIgAAI2QAAACEAAAAlAADmEQAAAA4AAAAoAADmEgAAACMAAADdAADmEwAA5A0AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADmG18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYESHoBlgDmAXIAAgAQIgRIt0wAAADoAAAA7AAAADgAA5h0AAOYlAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAADmJgAA5icAAOYoAADmKQAA5ioAAOYrAADmLIESLoESL4ESMIESMYESMoESM4ESNIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIo4AAAAXAADlcgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBAzqAAIESLAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOVyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEiwICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADlcgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRIsCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwAA5XIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBEiwICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADlcgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRIsCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5XIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESLAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOVyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEiwICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADmmAAAACEAAAEmAAABJwAA5pkAAAAjAAABJQAA5poAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIoAAADsAAAA7AAA5qIAAAAxAAAA7AAAAN4AAADsAAAEogAAK4EAAADsAAAA7AAA5qoAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEfAICIESNwiAOQiBAsWBA/YICIESNggSOp8SltMAAAA6AAAAOwAAAA4AAOauAADmsQAAAKCiAAACDwAABKyAZIClogAA5rIAAOazgRI4gRJDgFXZAAAAIQAAACUAAOa2AAAADgAAACgAAOa3AAAAIwAAAN0AAOa4AADkDgAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAObAXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRI1gGSAOYBcgACABAiBEjnTAAAAOgAAADsAAAAOAADmwgAA5ssAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAObMAADmzQAA5s4AAObPAADm0AAA5tEAAObSAADm04ESOoESO4ESPIESPoESP4ESQIESQYESQoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADmsgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRI4CAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5rIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESOAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADm9QAAABcAAOayAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIESPYAAgRI4CAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAOcDAADnBAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADmsgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRI4CAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAA5rIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIESOAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOayAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEjgICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADmsgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRI4CAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5rIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESOAgICAiASoBvCAiAAAjZAAAAIQAAACUAAOdSAAAADgAAACgAAOdTAAAAIwAAAN0AAOdUAADkDgA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sgACAAIAAgRJaCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA5/QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESWggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOf0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBEloICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAMHwAAAAXAADn9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBBFOAAIESWggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOf0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEloICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADn9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRJaCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA5/QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESWggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAOkaAAAAIQAAASYAAAEnAADpGwAAACMAAAElAADpHAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAigAAAOwAAADsAADpJAAAADEAAADsAAAA3gAAAOwAAAIGAAArfgAAAOwAAADsAADpLAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIER8AgIgRJlCIA5CICKgQPzCAiBEmQIEvFAy+LTAAAAOgAAADsAAAAOAADpMAAA6TMAAACgogAAAg8AAAIQgGSAZaIAAOk0AADpNYESZoEScYBV2QAAACEAAAAlAADpOAAAAA4AAAAoAADpOQAAACMAAADdAADpOgAA5BAAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADpQl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYESY4BkgDmAXIAAgAQIgRJn0wAAADoAAAA7AAAADgAA6UQAAOlNAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAADpTgAA6U8AAOlQAADpUQAA6VIAAOlTAADpVAAA6VWBEmiBEmmBEmqBEmyBEm2BEm6BEm+BEnCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA6TQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESZggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOk0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEmYICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAA6XcAAAAXAADpNAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBEmuAAIESZggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAADphQAA6YYAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA6TQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIESZggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOk0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEmYICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADpNAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRJmCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA6TQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESZggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOk0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEmYICAgIgEqAbwgIgAAI2QAAACEAAAAlAADp1AAAAA4AAAAoAADp1QAAACMAAADdAADp1gAA5BAAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAADp3l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYESY4BlgDmAXIAAgAQIgRJy0wAAADoAAAA7AAAADgAA6eAAAOnoAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAADp6QAA6eoAAOnrAADp7AAA6e0AAOnuAADp74ESc4ESdIESdYESdoESd4ESeIESeYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB6kAAAAXAADpNQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACA+4AAgRJxCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA6TUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEScQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOk1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBEnEICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAADpNQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgRJxCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA6TUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEScQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOk1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBEnEICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADpNQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRJxCAgICIBKgIEICIAACNIAAAA7AAAADgAA6lsAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADiNAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgRHqCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA4jQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIER6ggICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADkDgAAABcAAOI0AAAA7AAAAOwAAADsAAAAMQAAAOw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AAOygAADsoYESpYESpoESp4ESqIESqYESqoESq4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIo4AAAAXAADr5wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBAzqAAIESowgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAOvnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEqMICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADr5wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRKjCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwAA6+cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBEqMICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADr5wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRKjCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA6+cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESowgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAOvnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEqMICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADtDQAAACEAAAEmAAABJwAA7Q4AAAAjAAABJQAA7Q8AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHMAAADsAAAA7AAA7RcAAAAxAAAA7AAAAN4AAADsAAAEogAAtAgAAADsAAAA7AAA7R8AAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBDlMICIESrgiAOQiBAsWBDnUICIESrQgSouBws9MAAAA6AAAAOwAAAA4AAO0jAADtJgAAAKCiAAACDwAABKyAZIClogAA7ScAAO0ogRKvgRK6gFXZAAAAIQAAACUAAO0rAAAADgAAACgAAO0sAAAAIwAAAN0AAO0tAAC0HwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAO01XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRKsgGSAOYBcgACABAiBErDTAAAAOgAAADsAAAAOAADtNwAA7UAAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAO1BAADtQgAA7UMAAO1EAADtRQAA7UYAAO1HAADtSIESsYESsoESs4EStYEStoESt4ESuIESuYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADtJwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRKvCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA7ScAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIESrwgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADtagAAABcAAO0nAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEStIAAgRKvCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAO14AADteQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADtJwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRKvCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAA7ScAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIESrwgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAO0nAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEq8ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADtJwA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CKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA8L4AAPC/AADwwAAA8MEAAPDCAADwwwAA8MQAAPDFgRMGgRMHgRMIgRMKgRMLgRMMgRMNgRMOgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPCkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBEwQICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADwpAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRMECAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAPDnAAAAFwAA8KQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRMJgACBEwQICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA8PUAAPD2AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPCkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBEwQICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADwpAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRMECAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA8KQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETBAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPCkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEwQICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADwpAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRMECAgICIBKgG8ICIAACNkAAAAhAAAAJQAA8UQAAAAOAAAAKAAA8UUAAAAjAAAA3QAA8UYAAO8aAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA8U5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBEwGAZYA5gFyAAIAECIETENMAAAA6AAAAOwAAAA4AAPFQAADxWAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA8VkAAPFaAADxWwAA8VwAAPFdAADxXgAA8V+BExGBExKBExOBExSBExWBExaBExeAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA8KUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETDwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPClAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBEw8ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADwpQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRMPCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwAA8KUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBEw8ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADwpQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRMPCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA8KUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETDwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPClAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEw8ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAADxywAAACEAAAEmAAABJwAA8cwAAAAjAAABJQAA8c0AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQA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rZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRMvgGSAOYBcgACABAiBEzPTAAAAOgAAADsAAAAOAADzNgAA8z8AAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAPNAAADzQQAA80IAAPNDAADzRAAA80UAAPNGAADzR4ETNIETNYETNoETOIETOYETOoETO4ETPIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADzJgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRMyCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA8yYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETMggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAADzaQAAABcAAPMmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIETN4AAgRMyCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAPN3AADzeAAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADzJgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRMyCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA8yYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETMggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPMmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBEzIICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADzJgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRMyCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA8yYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETMggICAiASoBvCAiAAAjZAAAAIQAAACUAAPPGAAAADgAAACgAAPPHAAAAIwAAAN0AAPPIAADvHAAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAPPQXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRMvgGWAOYBcgACABAiBEz7TAAAAOgAAADsAAAAOAADz0gAA89oAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAPPbAADz3AAA890AAPPeAADz3wAA8+AAAPPhgRM/gRNAgRNBgRNCgRNDgRNEgRNFgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPMnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBEz0ICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAADzJwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRM9CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA8ycAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETPQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAPMnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBEz0ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAADzJwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRM9CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA8ycAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETPQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPMnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBEz0ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAD0TQAAACEAAAEmAAABJwAA9E4AAAAjAAABJQAA9E8AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJ4AAADsAAAA7AAA9FcAAAAxAAAA7AAAAN4AAADsAAACBgAA7wMAAADsAAAA7AAA9F8AAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEsAICIETSAiAOQiAioES2QgIgRNHCBLBznRk0wAAADoAAAA7AAAADgAA9GMAAPRmAAAAoKIAAAIPAAACEIBkgGWiAAD0ZwAA9GiBE0mBE1SAVdkAAAAhAAAAJQAA9GsAAAAOAAAAKAAA9GwAAAAjAAAA3QAA9G0AAO8dAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA9HVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBE0aAZIA5gFyAAIAECIETStMAAAA6AAAAOwAAAA4AAPR3AAD0gAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA9IEAAPSCAAD0gwAA9IQAAPSFAAD0hgAA9IcAAPSIgRNLgRNMgRNNgRNPgRNQgRNRgRNSgRNTgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPRnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBE0kICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD0ZwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRNJCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAPSqAAAAFwAA9GcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRNOgACBE0kICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA9LgAAPS5AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPRnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBE0kICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAD0ZwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRNJCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA9GcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETSQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPRnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBE0kICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD0ZwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRNJCAgICIBKgG8ICIAACNkAAAAhAAAAJQAA9QcAAAAOAAAAKAAA9QgAAAAjAAAA3QAA9QkAAO8dAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA9RFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBE0aAZYA5gFyAAIAECIETVdMAAAA6AAAAOwAAAA4AAPUTAAD1GwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA9RwAAPUdAAD1HgAA9R8AAPUgAAD1IQAA9SKBE1aBE1eBE1iBE1mBE1qBE1uBE1yAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA9GgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETVAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPRoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBE1QICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD0aAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRNUCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAA9GgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBE1QICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD0aAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRNUCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA9GgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETVAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPRoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBE1QICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAD1jgAAACEAAAEmAAABJwAA9Y8AAAAjAAABJQAA9ZAAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJ4AAADsAAAA7AAA9ZgAAAAxAAAA7AAAAN4AAADsAAACBgAA7wQAAADsAAAA7AAA9aAAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEsAICIETXwiAOQiAioES2ggIgRNeCBKuWqpB0wAAADoAAAA7AAAADgAA9aQAAPWnAAAAoKIAAAIPAAACEIBkgGWiAAD1qAAA9amBE2CBE2uAVdkAAAAhAAAAJQAA9awAAAAOAAAAKAAA9a0AAAAjAAAA3QAA9a4AAO8eAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA9bZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBE12AZIA5gFyAAIAECIETYdMAAAA6AAAAOwAAAA4AAPW4AAD1wQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAA9cIAAPXDAAD1xAAA9cUAAPXGAAD1xwAA9cgAAPXJgRNigRNjgRNkgRNmgRNngRNogRNpgRNqgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPWoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBE2AICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD1qAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRNgCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAPXrAAAAFwAA9agAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRNlgACBE2AICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAA9fkAAPX6AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPWoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBE2AICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD1qAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRNgCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA9agAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIETYAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPWoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBE2AICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD1qAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRNgCAgICIBKgG8ICIAACNkAAAAhAAAAJQAA9kgAAAAOAAAAKAAA9kkAAAAjAAAA3QAA9koAAO8eAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAA9lJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBE12AZYA5gFyAAIAECIETbNMAAAA6AAAAOwAAAA4AAPZUAAD2XAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAA9l0AAPZeAAD2XwAA9mAAAPZhAAD2YgAA9mOBE22BE26BE2+BE3CBE3GBE3KBE3OAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwAA9akAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIETawgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPWpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBE2sICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD1qQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRNrCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwAA9akAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIETawgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPWpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBE2sICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD1qQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRNrCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAA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jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYETuYBlgDmAXIAAgAQIgRPI0wAAADoAAAA7AAAADgAA+1gAAPtgAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAD7YQAA+2IAAPtjAAD7ZAAA+2UAAPtmAAD7Z4ETyYETyoETy4ETzIETzYETzoETz4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIo4AAAAXAAD6rQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBAzqAAIETxwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPqtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBE8cICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD6rQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRPHCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwAA+q0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBE8cICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD6rQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRPHCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA+q0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIETxwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAPqtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBE8cICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAD70wAAACEAAAEmAAABJwAA+9QAAAAjAAABJQAA+9UAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJ4AAADsAAAA7AAA+90AAAAxAAAA7AAAAN4AAADsAAAEogAA7wkAAADsAAAA7AAA++UAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEsAICIET0giAOQiBAsWBEt8ICIET0QgSpgon3NMAAAA6AAAAOwAAAA4AAPvpAAD77AAAAKCiAAACDwAABKyAZIClogAA++0AAPvugRPTgRPegFXZAAAAIQAAACUAAPvxAAAADgAAACgAAPvyAAAAIwAAAN0AAPvzAADvIwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAPv7XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRPQgGSAOYBcgACABAiBE9TTAAAAOgAAADsAAAAOAAD7/QAA/AYAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAPwHAAD8CAAA/AkAAPwKAAD8CwAA/AwAAPwNAAD8DoET1YET1oET14ET2YET2oET24ET3IET3YBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD77QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRPTCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAA++0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIET0wgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAD8MAAAABcAAPvtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIET2IAAgRPTCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAPw+AAD8PwAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD77QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRPTCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA++0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIET0wgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPvtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBE9MICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAD77QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRPTCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA++0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIET0wgICAiASoBvCAiAAAjZAAAAIQAAACUAAPyNAAAADgAAACgAAPyOAAAAIwAAAN0AAPyPAADvIwAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAPyXXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRPQgKWAOYBcgACABAiBE9/TAAAAOgAAADsAAAAOAAD8mQAA/KEAAACgpwAABV0AAAVeAAAFXwAABWAAAAVhAAAFYgAABWOAtIC1gLaAt4C4gLmAuqcAAPyiAAD8owAA/KQAAPylAAD8pgAA/KcAAPyogRPggRPhgRPigRPjgRPkgRPlgRPmgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAPvuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBE94ICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAACjwAAAAXAAD77gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACBASyAAIET3ggICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAPvuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC8gACBE94ICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAHoAAAAXAAD77gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACAwYAAgRPeCAgICIBKgLcICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwAA++4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVhAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIET3ggICAiASoC4CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAPvuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYgAAAOwAAADsAAAAFwAAAOyAAIBSgACBE94ICAgIgEqAuQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABrgAAAAXAAD77gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWMAAADsAAAA7AAAABcAAADsgACBE+eAAIET3ggICAiASoC6CAiAAAjfEBIAAAEiAAABIwAAASQAAP0UAAAAIQAAASYAAAEnAAD9FQAAACMAAAElAAD9FgAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAegAAAOwAAADsAAD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A7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRQYCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAP/zAAAAFwAA/7AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRQdgACBFBgICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABAAEAAQACAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAP+wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFBgICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAD/sAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRQYCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAA/7AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEUGAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAP+wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFBgICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAD/sAAAAOwAAADsAAA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AAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEA8gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRQ6CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABAPIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEUOggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQDyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBFDoICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAEA8gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgRQ6CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABAPIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEUOggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQDyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFDoICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEA8gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRQ6CAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABAhgAAAAhAAABJgAAAScAAQIZAAAAIwAAASUAAQIaAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACeAAAA7AAAAOwAAQIiAAAAMQAAAOwAAADeAAAA7AAABKIAABeJAAAA7AAAAOwAAQIqAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRLACAiBFEUIgDkIgQLFgQJFCAiBFEQIEjbwzvvTAAAAOgAAADsAAAAOAAECLgABAjEAAACgogAAAg8AAASsgGSApaIAAQIyAAECM4EURoEUUYBV2QAAACEAAAAlAAECNgAAAA4AAAAoAAECNwAAACMAAADdAAECOAAA7ycAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAECQF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEUQ4BkgDmAXIAAgAQIgRRH0wAAADoAAAA7AAAADgABAkIAAQJLAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAECTAABAk0AAQJOAAECTwABAlAAAQJRAAECUgABAlOBFEiBFEmBFEqBFEyBFE2BFE6BFE+BFFCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABAjIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEURggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQIyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFEYICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABAnUAAAAXAAECMgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFEuAAIEURggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAECgwABAoQAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABAjIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEURggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQIyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFEYICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAECMgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRRGCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABAjIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEURggICAi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AAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRSxCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABBsQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEUsQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAQbEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBFLEICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEGxAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRSxCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABBsQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEUsQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQbEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFLEICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAEH6gAAACEAAAEmAAABJwABB+sAAAAjAAABJQABB+wAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJIAAADsAAAA7AABB/QAAAAxAAAA7AAAAN4AAADsAAACBgABBBAAAAD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fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFLqAZYA5gFyAAIAECIEUydMAAAA6AAAAOwAAAA4AAQiwAAEIuAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABCLkAAQi6AAEIuwABCLwAAQi9AAEIvgABCL+BFMqBFMuBFMyBFM2BFM6BFM+BFNCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABCAUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEUyAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQgFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBFMgICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEIBQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRTICAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADeBAAAAFwABCAUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQTegACBFMgICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABc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sgACAAIAAgRTrCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAQrJAAAAFwABCoYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRTwgACBFOsICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABCtcAAQrYAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQqGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFOsICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAEKhgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRTrCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABCoYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEU6wgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQqGAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFOsICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEKhgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAAD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AAADsAAAAFwAAAOyAAIBSgACBFTQICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEOeQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRU0CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAQ68AAAAFwABDnkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRU5gACBFTQICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABDsoAAQ7LAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQ55AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFTQICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAEOeQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRU0CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABDnkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVNAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQ55AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOw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QbgAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABEG8AARBwAAEQcQABEHIAARBzAAEQdAABEHWBFViBFVmBFVqBFVuBFVyBFV2BFV6AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABD7sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVVggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAQ+7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBFVYICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEPuwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRVWCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADeBAAAAFwABD7sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQTegACBFVYICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEPuwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRVWCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABD7sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVVggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAQ+7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFVYICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAEQ4QAAACEAAAEmAAABJwABEOIAAAAjAAABJQABEOMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJ4AAADsAAAA7AABEOsAAAAxAAAA7AAAAN4AAADsAAAEogAA7xAAAADsAAAA7AABEPMAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBEsAICIEVYQiAOQiBAsWBEuQICIEVYAgTAAAAAR8dxPXTAAAAOgAAADsAAAAOAAEQ9wABEPoAAACgogAAAg8AAASsgGSApaIAARD7AAEQ/IEVYoEVbYBV2QAAACEAAAAlAAEQ/wAAAA4AAAAoAAERAAAAACMAAADdAAERAQAA7yoAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAERCV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEVX4BkgDmAXIAAgAQIgRVj0wAAADoAAAA7AAAADgABEQsAAREUAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAERFQABERYAAREXAAERGAABERkAAREaAAERGwABERyBFWSBFWWBFWaBFWiBFWmBFWqBFWuBFWyAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABEPsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVYggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARD7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFWIICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABET4AAAAXAAEQ+wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFWeAAIEVYggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAERTAABEU0AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABEPsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVYggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARD7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFWIICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEQ+wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRViCAgICIBKgG0ICIAACN8QDwAAASI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AAAAxAAAA7AAAATQAAAEGAAAA7AAAAOwAAAAXAAAA7IAAgRV8gACBFXYICAgIgEqAQAgIgAAI0gAAADsAAAAOAAEScAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARIbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFXYICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABEoMAAAAXAAESGwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBFX+AAIEVdggICAiASoBCCAiAAAjSAAAAOwAAAA4AARKRAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABEhsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVdggICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAESpAAAABcAARIbAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIEVgoAAgRV2CAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AARKyAAESswAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAAESGwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgRV2CAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAARLGAAAAFwABEhsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgRWFgACBFXYICAgIgEqARggIgAAIXxATUGVyc2lzdGVkSW52aXRhdGlvbtMAAAA6AAAAOwAAAA4AARLVAAES3AAAAKCmAAES1gABEtcAARLYAAAXjQABEtoAARLbgRWHgRWIgRWJgQJJgRWKgRWLpgABEt0AARLeAAES3wABEuAAARLhAAES4oEVjIEVo4EVuoEV0YEV6IEV/4BVVHV1aWRdb3duZWRJZGVudGl0eV8QEGVuY29kZWRPYnZEaWFsb2deYWN0aW9uUmVxdWlyZWRUZGF0Zd8QEgAAASIAAAEjAAABJAABEuoAAAAhAAABJgAAAScAARLrAAAAIwAAASUAARLsAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACLAAAA7AAAAOwAARL0AAAAMQAAAOwAAADeAAAA7AAAAgYAARLWAAAA7AAAAOwAARL8AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRVzCAiBFY4IgDkIgIqBFYcICIEVjQgSa7r37dMAAAA6AAAAOwAAAA4AARMAAAETAwAAAKCiAAACDwAAAhCAZIBlogABEwQAARMFgRWPgRWagFXZAAAAIQAAACUAARMIAAAADgAAACgAARMJAAAAIwAAAN0AARMKAAES3QAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAARMSXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRWMgGSAOYBcgACABAiBFZDTAAAAOgAAADsAAAAOAAETFAABEx0AAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAARMeAAETHwABEyAAARMhAAETIgABEyMAARMkAAETJYEVkYEVkoEVk4EVlYEVloEVl4EVmIEVmYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAETBAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRWPCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABEwQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVjwgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAETRwAAABcAARMEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEVlIAAgRWPCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AARNVAAETVgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAETBAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRWPCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABEwQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVjwgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARMEAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFY8ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAETBAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRWPCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABEwQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVjwgICAiASoBvCAiAAAjZAAAAIQAAACUAAROkAAAADgAAACgAAROlAAAAIwAAAN0AAROmAAES3QAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAROuXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRWMgGWAOYBcgACABAiBFZvTAAAAOgAAADsAAAAOAAETsAABE7gAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAARO5AAETugABE7sAARO8AAETvQABE74AARO/gRWcgRWdgRWegRWfgRWggRWhgRWigFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARMFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFZoICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAETBQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRWaCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABEwUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVmggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAxvgAAABcAARMFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEEa4AAgRWaCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABEwUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVmggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARMFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFZoICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAETBQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRWaCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABFCsAAAAhAAABJgAAAScAARQsAAAAIwAAASUAARQtAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACLAAAA7AAAAOwAARQ1AAAAMQAAAOwAAADeAAAA7AAABKIAARLXAAAA7AAAAOwAARQ9AAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRVzCAiBFaUIgDkIgQLFgRWICAiBFaQIEm994XPTAAAAOgAAADsAAAAOAAEUQQABFEQAAACgogAAAg8AAASsgGSApaIAARRFAAEURoEVpoEVsYBV2QAAACEAAAAlAAEUSQAAAA4AAAAoAAEUSgAAACMAAADdAAEUSwABEt4AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEUU18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEVo4BkgDmAXIAAgAQIgRWn0wAAADoAAAA7AAAADgABFFUAARReAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAEUXwABFGAAARRhAAEUYgABFGMAARRkAAEUZQABFGaBFaiBFamBFaqBFayBFa2BFa6BFa+BFbCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABFEUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVpggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARRFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFaYICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABFIgAAAAXAAEURQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFauAAIEVpggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAEUlgABFJcAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABFEUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEVpggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAARRFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBFaYICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEURQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRWmCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABFEUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVpggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARRFAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBFaYICAgIgEqAbwgIgAAI2QAAACEAAAAlAAEU5QAAAA4AAAAoAAEU5gAAACMAAADdAAEU5wABEt4AAASsAAAA3gA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VyAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARWHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBFcgICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEVhwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRXICAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABFYcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEVyAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARWHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFcgICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEVhwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRXICAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABFYcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEVyAgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAARatAAAAIQAAASYAAAEnAAEWrgAAACMAAAElAAEWrwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAiwAAAOwAAADsAAEWtwAAADEAAADsAAAA3gAAAOwAAAIGAAAXjQAAAOwAAADsAAEWvwAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEVcwgIgRXTCIA5CICKgQJJCAiBFdIIEoGVp8fTAAAAOgAAADsAAAAOAAEWwwABFsYAAACgogAAAg8AAAIQgGSAZaIAARbHAAEWyIEV1IEV34BV2QAAACEAAAAlAAEWywAAAA4AAAAoAAEWzAAAACMAAADdAAEWzQABEuAAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAEW1V8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEV0YBkgDmAXIAAgAQIgRXV0wAAADoAAAA7AAAADgABFtcAARbgAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAEW4QABFuIAARbjAAEW5AABFuUAARbmAAEW5wABFuiBFdaBFdeBFdiBFdqBFduBFdyBFd2BFd6AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABFscAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEV1AgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARbHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFdQICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABFwoAAAAXAAEWxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBFdmAAIEV1AgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAEXGAABFxkAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABFscAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEV1AgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARbHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBFdQICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEWxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRXUCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABFscAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEV1AgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARbHAAAA7AAAAOwAAADsAAAAMQAAAOw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AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEYCQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRX2CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABGAkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEV9ggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARgJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBFfYICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAEYCQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgRX2CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABGAkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEV9ggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARgJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFfYICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEYCQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRX2CAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABGS8AAAAhAAABJgAAAScAARkwAAAAIwAAASUAARkxAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACLAAAA7AAAAOwAARk5AAAAMQAAAOwAAADeAAAA7AAAAgYAARLbAAAA7AAAAOwAARlBAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgRVzCAiBFgEIgDkIgIqBFYsICIEWAAgScabfEtMAAAA6AAAAOwAAAA4AARlFAAEZSAAAAKCiAAACDwAAAhCAZIBlogABGUkAARlKgRYCgRYNgFXZAAAAIQAAACUAARlNAAAADgAAACgAARlOAAAAIwAAAN0AARlPAAES4gAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAARlXXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRX/gGSAOYBcgACABAiBFgPTAAAAOgAAADsAAAAOAAEZWQABGWIAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAARljAAEZZAABGWUAARlmAAEZZwABGWgAARlpAAEZaoEWBIEWBYEWBoEWCIEWCYEWCoEWC4EWDIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEZSQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRYCCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABGUkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWAggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEZjAAAABcAARlJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEWB4AAgRYCCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AARmaAAEZmwAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEZSQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRYCCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABGUkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWAggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAARlJAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFgIICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEZSQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRYCCAgICIBKgG4ICIAACN8QDwA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AAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARqcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFhwICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABGuMAAAAXAAEanAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACBFiKAAIEWHAgICAiASoBACAiAAAjSAAAAOwAAAA4AARrxAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABGpwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEHAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWHAgICAiASoBBCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEbBAAAABcAARqcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCAAAAOwAAADsAAAAFwAAAOyAAIEWJYAAgRYcCAgICIBKgEIICIAACNIAAAA7AAAADgABGxIAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEanAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQkAAADsAAAA7AAAABcAAADsgACAUoAAgRYcCAgICIBKgEMICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAARslAAAAFwABGpwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEKAAAA7AAAAOwAAAAXAAAA7IAAgRYogACBFhwICAgIgEqARAgIgAAI0wA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AADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRY8CAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABG3gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWPAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARt4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBFjwICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAEbeAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgRY8CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABG3gAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWPAgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAARt4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBFjwICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEbeAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAAD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ADgABIBYAAAAlAAEgFwAAACgAASAYAAEgGQABIBoAASAbAAEgHAABIB0AAAAjAAAFIQAAAN4AAADeAAEgIQAAACkAAADkAAAA3gAAABQAAADnAAAAKQAAAFMAASApAAEgKgAAACkAAAApAAAA3gABIC4AASAvAAAA5AAAADFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgDmAOYEWj4AEgQPNgDmAAoEFKIAEgByBGomBFo6ABIAEgDmBFqSBGoqBA80SajZXAtMAAAA6AAAAOwAAAA4AASAzAAEgNQAAAKChAAAA8YA7oQABIDaBFpCAVdkAAAAhAAAAJQABIDkAAAAOAAAAKAABIDoAAAAjAAAA3QABIDsAAACFAAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABIENfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFo2AO4A5gFyAAIAECIEWkdMAAAA6AAAAOwAAAA4AASBFAAEgTwAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQABIFAAASBRAAEgUgABIFMAASBUAAEgVQABIFYAASBXAAEgWIEWkoEWlIEWlYEWm4EWnIEWnoEWn4EWoYEWooBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABIFwAAAAXAAEgNgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBFpOAAIEWkAgICAiASoA+CAiAAAjSAAAAOwAAAA4AASBqAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABIDYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWkAgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEgfQAAABcAASA2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEWloAAgRaQCAgICIBKgEAICIAACNIAAAA7AAAADgABIIsAAAE8oQABIIyBFpeASdIAAAA7AAAADgABII8AAAE8owABIJAAASCRAAEgkoEWmIEWmYEWmoBJXxAYcmF3T3duZWRJZGVudGl0eUlkZW50aXR5XW93bmVySWRlbnRpdHlbZ3JvdXBVaWRSYXffEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASA2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFpAICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABIKgAAAAXAAEgNgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBFp2AAIEWkAgICAiASoBCCAiAAAjSAAAAOwAAAA4AASC2AAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwABIDYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEJAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEWkAgICAiASoBDCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEgyQAAABcAASA2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCgAAAOwAAADsAAAAFwAAAOyAAIEWoIAAgRaQCAgICIBKgEQICIAACNMAAAA6AAAAOwAAAA4AASDXAAEg2AAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAbUAAAAXAAEgNgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQsAAADsAAAA7AAAABcAAADsgACAV4AAgRaQCAgICIBKgEUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAASDrAAAAFwABIDYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEMAAAA7AAAAOwAAAAXAAAA7IAAgRajgACBFpAICAgIgEqARggIgAAIXxAVUGVyc2lzdGVkQ29udGFjdEdyb3Vw0wAAADoAAAA7AAAADgABIPoAASEIAAAAoK0AASD7AAEg/AAAF48AASD+AAEg/wABIQAAABeNAAEhAgABIQMAASEEAAEhBQAAF5IAACuBgRalgRamgQJKgRangRaogRapgQJJgRa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sAAAA7AAAABcAAADsgACAUoAAgRa8CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABITwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWvAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAASE8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBFrwICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEhPAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRa8CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABITwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWvAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASE8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFrwICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAEiYgAAACEAAAEmAAABJwABImMAAAAjAAABJQABImQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIUAAADsAAAA7AABImwAAAAxAAAA7AAAAN4AAADsAAAEogABIPwAAADsAAAA7AABInQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBFo0ICIEWxwiAOQiBAsWBFqYICIEWxggSaubxmtMAAAA6AAAAOwAAAA4AASJ4AAEiewAAAKCiAAACDwAABKyAZIClogABInwAASJ9gRbIgRbTgFXZAAAAIQAAACUAASKAAAAADgAAACgAASKBAAAAIwAAAN0AASKCAAEhCgAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAASKKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRbFgGSAOYBcgACABAiBFsnTAAAAOgAAADsAAAAOAAEijAABIpUAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAASKWAAEilwABIpgAASKZAAEimgABIpsAASKcAAEinYEWyoEWy4EWzIEWzoEWz4EW0IEW0YEW0oBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEifAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRbICAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABInwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEWyAgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEivwAAABcAASJ8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEWzYAAgRbICAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AASLNAAEizgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEifAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRbICAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABInwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWyAgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASJ8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFsgICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEifAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRbICAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABInwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEWyAgICAiASoBvCAiAAAjZAAAAIQAAACUAASMcAAAADgAAACgAASMdAAAAIwAAAN0AASMeAAEhCgAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAASMmXxAhWER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AAAAoAAABKwAAABcAASO6AAAAFwABI5QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEEAAAA7AAAAOwAAAAXAAAA7IAAgRbfgACBFtwICAgIgEqAPggIgAAI0gAAADsAAAAOAAEjyAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASOUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBQAAAOwAAADsAAAAFwAAAOyAAIAAgACBFtwICAgIgEqAPwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABI9sAAAAXAAEjlAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQYAAADsAAAA7AAAABcAAADsgACBFuKAAIEW3AgICAiASoBACAiAAAjSAAAAOwAAAA4AASPpAAABPKEAASPqgRbjgEnSAAAAOwAAAA4AASPtAAABPKQAAArjAAEj7wABI/AAASPxgQE7gRbkgRblgRbmgElfEBhyYXdPd25lZElkZW50aXR5SWRlbnRpdHlfEBVyYXdHcm91cE93bmVySWRlbnRpdHlecmF3R3JvdXBVaWRSYXffEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASOUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBwAAAOwAAADsAAAAFwAAAOyAAIAAgACBFtwICAgIgEqAQQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABJAcAAAAXAAEjlAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQgAAADsAAAA7AAAABcAAADsgACBFumAAIEW3AgICAiASoBCCAiAAAjSAAAAOwAAAA4AASQVAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAA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jAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABJxAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXKQgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEnUwAAABcAAScQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEXLoAAgRcpCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AASdhAAEnYgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEnEAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRcpCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABJxAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXKQgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAScQAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFykICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEnEAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRcpCAgICIBKgG4ICIAACN8QDwAAASIAAAE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BF0CBF0uAVdkAAAAhAAAAJQABKFUAAAAOAAAAKAABKFYAAAAjAAAA3QABKFcAASRmAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABKF9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFz2AZIA5gFyAAIAECIEXQdMAAAA6AAAAOwAAAA4AAShhAAEoagAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABKGsAAShsAAEobQABKG4AAShvAAEocAABKHEAAShygRdCgRdDgRdEgRdGgRdHgRdIgRdJgRdKgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAShRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBF0AICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEoUQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRdACAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAASiUAAAAFwABKFEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRdFgACBF0AICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABKKIAASijAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAShRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBF0AICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEoUQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRdACAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABKFEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXQAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAShRAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBF0AICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEoUQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRdACAgICIBKgG8ICIAACNkAAAAhAAAAJQABKPEAAAAOAAAAKAABKPIAAAAjAAAA3QABKPMAASRmAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABKPtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBFz2AZYA5gFyAAIAECIEXTNMAAAA6AAAAOwAAAA4AASj9AAEpBQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABKQYAASkHAAEpCAABKQkAASkKAAEpCwABKQyBF02BF06BF0+BF1CBF1GBF1KBF1OAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABKFIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXSwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAShSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBF0sICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEoUgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRdLCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABKFIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEXSwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAShSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBF0sICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEoUgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRdLCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABKFIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXSwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAASl4AAAAIQAAASYAAAEnAAEpeQAAACMAAAElAAEpegAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfAAAAOwAAADsAAEpggAAADEAAADsAAAA3gAAAOwAAASiAAEkXgAAAOwAAADsAAEpigAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEW2QgIgRdWCIA5CIECxYEW9QgIgRdVCBLqUUUv0wAAADoAAAA7AAAADgABKY4AASmRAAAAoKIAAAIPAAAErIBkgKWiAAEpkgABKZOBF1eBF2KAVdkAAAAhAAAAJQABKZYAAAAOAAAAKAABKZcAAAAjAAAA3QABKZgAASRnAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABKaBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBF1SAZIA5gFyAAIAECIEXWNMAAAA6AAAAOwAAAA4AASmiAAEpqwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABKawAASmtAAEprgABKa8AASmwAAEpsQABKbIAASmzgRdZgRdagRdbgRddgRdegRdfgRdggRdhgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASmSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBF1cICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEpkgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRdXCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAASnVAAAAFwABKZIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRdcgACBF1cICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABKeMAASnkAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASmSAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBF1cICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAEpkgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRdXCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABKZIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXVwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAA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pYnV0ZXNzdG9yYWdlgRdrgGWAOYBcgACABAiBF3rTAAAAOgAAADsAAAAOAAErfwABK4cAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAASuIAAEriQABK4oAASuLAAErjAABK40AASuOgRd7gRd8gRd9gRd+gRd/gReAgReBgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASrUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBF3kICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEq1AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRd5CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABKtQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXeQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAASrUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBF3kICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEq1AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRd5CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABKtQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXeQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASrUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBF3kICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAEr+gAAACEAAAEmAAABJwABK/sAAAAjAAABJQABK/wAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAHwAAADsAAAA7AABLAQAAAAxAAAA7AAAAN4AAADsAAACBgAACuMAAADsAAAA7AABLAwAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBFtkICIEXhAiAOQiAioEBOwgIgReDCBKhjJJj0wAAADoAAAA7AAAADgABLBAAASwTAAAAoKIAAAIPAAACEIBkgGWiAAEsFAABLBWBF4WBF5CAVdkAAAAhAAAAJQABLBgAAAAOAAAAKAABLBkAAAAjAAAA3QABLBoAASRpAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABLCJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBF4KAZIA5gFyAAIAECIEXhtMAAAA6AAAAOwAAAA4AASwkAAEsLQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABLC4AASwvAAEsMAABLDEAASwyAAEsMwABLDQAASw1gReHgReIgReJgReLgReMgReNgReOgRePgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASwUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBF4UICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEsFAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgReFCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAASxXAAAAFwABLBQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgReKgACBF4UICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABLGUAASxmAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASwUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBF4UICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEsFAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgReFCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABLBQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEXhQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASwUAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBF4UICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEsFAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgReFCAgICIBKgG8ICIAACNkAAAAhAAAAJQABLLQAAAAOAAAAKAABLLUAAAAjAAAA3QABLLYAASRpAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABLL5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBF4KAZYA5gFyAAIAECIEXkdMAAAA6AAAAOwAAAA4AASzAAAEsyAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABLMkAASzKAAEsywABLMwAASzNAAEszgABLM+BF5KBF5OBF5SBF5WBF5aBF5eBF5iAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABLBUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXkAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASwVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBF5AICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEsFQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgReQCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABLBUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEXkAgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAASwVAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBF5AICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEsFQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgReQCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABLBUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXkAgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAS07AAAAIQAAASYAAAEnAAEtPAAAACMAAAElAAEtPQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfAAAAOwAAADsAAEtRQAAADEAAADsAAAA3gAAAOwAAAIGAAEkYQAAAOwAAAD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AABcAAS1WAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBF6cICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAEtVgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRenCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABLVYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEXpwgICAiASoCBCAiAAAjSAAAAOwAAAA4AAS58AAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwABIn0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVhAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEW0wgICAiASoC4CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAASJ9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYgAAAOwAAADsAAAAFwAAAOyAAIBSgACBFtMICAgIgEqAuQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABJGcAAAAXAAEifQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWMAAADsAAAA7AAAABcAAADsgACBF1SAAIEW0wgICAiASoC6CAiAAAjfEBIAAAEiAAABIwAAASQAAS6sAAAAIQAAASYAAAEnAAEurQAAACMAAAElAAEurgAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAA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AAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEX6IAAgRfiCAgICIBKgEAICIAACNIAAAA7AAAADgABMXQAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAExHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRfiCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAATGHAAAAFwABMR8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRfrgACBF+IICAgIgEqAQggIgAAI0gAAADsAAAAOAAExlQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATEfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBF+IICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABMagAAAAXAAExHwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBF+6AAIEX4ggICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAAExtgABMbcAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwABMR8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEX4ggICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAA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AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATNaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBGBcICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABM50AAAAXAAEzWgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBGByAAIEYFwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAEzqwABM6wAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABM1oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYFwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAATNaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBGBcICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAEzWgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRgXCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABM1oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYFwgICAiASoBuCAiAAAjfEA8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8gH2AfoB/gICAgacAATVQAAE1UQABNVIAATVTAAE1VAABNVUAATVWgRg7gRg8gRg9gRg+gRg/gRhAgRhBgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAHqQAAABcAATScAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAID7gACBGDkICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE0nAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRg5CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABNJwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYOQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAH1wAAABcAATScAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAID/gACBGDkICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE0nAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRg5CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABNJwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYOQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATScAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGDkICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAE1wgAAACEAAAEmAAABJwABNcMAAAAjAAABJQABNcQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIEAAADsAAAA7AABNcwAAAAxAAAA7AAAAN4AAADsAAACBgABMdwAAADsAAAA7AABNdQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBF98ICIEYRAiAOQiAioEX9QgIgRhDCBLB/klM0wAAADoAAAA7AAAADgABNdgAATXbAAAAoKIAAAIPAAACEIBkgGWiAAE13AABNd2BGEWBGFCAVdkAAAAhAAAAJQABNeAAAAAOAAAAKAABNeEAAAAjAAAA3QABNeIAATHpAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABNepfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGEKAZIA5gFyAAIAECIEYRtMAAAA6AAAAOwAAAA4AATXsAAE19QAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABNfYAATX3AAE1+AABNfkAATX6AAE1+wABNfwAATX9gRhHgRhIgRhJgRhLgRhMgRhNgRhOgRhPgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATXcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGEUICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE13AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRhFCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAATYfAAAAFwABNdwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRhKgACBGEUICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABNi0AATYuAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATXcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGEUICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAE13AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRhFCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABNdwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYRQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATXcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGEUICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE13AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRhFCAgICIBKgG8ICIAACNkAAAAhAAAAJQABNnwAAAAOAAAAKAABNn0AAAAjAAAA3QABNn4AATHpAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABNoZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGEKAZYA5gFyAAIAECIEYUdMAAAA6AAAAOwAAAA4AATaIAAE2kAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABNpEAATaSAAE2kwABNpQAATaVAAE2lgABNpeBGFKBGFOBGFSBGFWBGFaBGFeBGFiAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABNd0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYUAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATXdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBGFAICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE13QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRhQCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABNd0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBGFAICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE13QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRhQCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABNd0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYUAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATXdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGFAICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAE3AwAAACEAAAEmAAABJwABNwQAAAAjAAABJQABNwUAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIEAAADsAAAA7AABNw0AAAAxAAAA7AAAAN4AAADsAAACBgABMd0AAADsAAAA7AABNxUAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBF98ICIEYWwiAOQiAioEX9ggIgRhaCBKs+bSW0wAAADoAAAA7AAAADgABNxkAATccAAAAoKIAAAIPAAACEIBkgGWiAAE3HQABNx6BGFyBGGeAVdkAAAAhAAAAJQABNyEAAAAOAAAAKAABNyIAAAAjAAAA3QABNyMAATHqAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABNytfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGFmAZIA5gFyAAIAECIEYXdMAAAA6AAAAOwAAAA4AATctAAE3NgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABNzcAATc4AAE3OQABNzoAATc7AAE3PAABNz0AATc+gRhegRhfgRhggRhigRhjgRhkgRhlgRhmgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATcdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGFwICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE3HQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRhcCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAATdgAAAAFwABNx0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRhhgACBGFwICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABN24AATdvAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATcdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGFwICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAE3HQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRhcCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABNx0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYXAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATcdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGFwICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE3HQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRhcCAgICIBKgG8ICIAACNkAAAAhAAAAJQABN70AAAAOAAAAKAABN74AAAAjAAAA3QABN78AATHqAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABN8dfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGFmAZYA5gFyAAIAECIEYaNMAAAA6AAAAOwAAAA4AATfJAAE30QAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABN9IAATfTAAE31AABN9UAATfWAAE31wABN9iBGGmBGGqBGGuBGGyBGG2BGG6BGG+AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABNx4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYZwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATceAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBGGcICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE3HgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRhnCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABNx4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBGGcICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE3HgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRhnCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABNx4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYZwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATceAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGGcICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAE4RAAAACEAAAEmAAABJwABOEUAAAAjAAABJQABOEYAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIEAAADsAAAA7AABOE4AAAAxAAAA7AAAAN4AAADsAAACBgABMd4AAADsAAAA7AABOFYAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBF98ICIEYcgiAOQiAioEX9wgIgRhxCBKThZU20wAAADoAAAA7AAAADgABOFoAAThdAAAAoKIAAAIPAAACEIBkgGWiAAE4XgABOF+BGHOBGH6AVdkAAAAhAAAAJQABOGIAAAAOAAAAKAABOGMAAAAjAAAA3QABOGQAATHrAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABOGxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGHCAZIA5gFyAAIAECIEYdNMAAAA6AAAAOwAAAA4AAThuAAE4dwAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABOHgAATh5AAE4egABOHsAATh8AAE4fQABOH4AATh/gRh1gRh2gRh3gRh5gRh6gRh7gRh8gRh9gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATheAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGHMICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE4XgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRhzCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAATihAAAAFwABOF4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRh4gACBGHMICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABOK8AATiwAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATheAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGHMICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE4XgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRhzCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABOF4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEYcwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAATheAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGHMICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE4XgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRhzCAgICIBKgG8ICIAACNkAAAAhAAAAJQABOP4AAAAOAAAAKAABOP8AAAAjAAAA3QABOQAAATHrAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABOQhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGHCAZYA5gFyAAIAECIEYf9MAAAA6AAAAOwAAAA4AATkKAAE5EgAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABORMAATkUAAE5FQABORYAATkXAAE5GAABORmBGICBGIGBGIKBGIOBGISBGIWBGIaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABOF8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYfggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAThfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBGH4ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE4XwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRh+CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADG+AAAAFwABOF8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQRrgACBGH4ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE4XwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRh+CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABOF8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYfggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAThfAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGH4ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAE5hQAAACEAAAEmAAABJwABOYYAAAAjAAABJQABOYcAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIEAAADsAAAA7AABOY8AAAAxAAAA7AAAAN4AAADsAAACBgA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A7AABOklfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGIeAZYA5gFyAAIAECIEYltMAAAA6AAAAOwAAAA4AATpLAAE6UwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABOlQAATpVAAE6VgABOlcAATpYAAE6WQABOlqBGJeBGJiBGJmBGJqBGJuBGJyBGJ2AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACKOAAAAFwABOaAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgQM6gACBGJUICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE5oAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRiVCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABOaAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEYlQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAivAAAABcAATmgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDPoAAgRiVCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwA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QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwABOuEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEYrAgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAATrhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBGKwICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAIUAAAAXAAE64QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBFo2AAIEYrAgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAATrhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGKwICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE64QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRisCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAASEMAAAAFwABOuEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRfLgACBGKwICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAE8BwAAACEAAAEmAAA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AJQAAASkAAAEqAAAAKAAAASsAAAAXAAAHqQAAABcAAT1jAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAID7gACBGNoICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE9YwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRjaCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABPWMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEY2ggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAH1wAAABcAAT1jAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAID/gACBGNoICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE9YwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRjaCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABPWMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEY2ggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAT1jAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGNoICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAE+iQAAACEAAAEmAAABJwABPooAAAAjAAABJQABPosAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIEAAADsAAAA7AABPpMAAAAxAAAA7AAAAN4AAADsAAACBgABMeMAAADsAAAA7AABPpsAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBF98ICIEY5QiAOQiAioEX+wgIgRjkCBMAAAABCNfXL9MAAAA6AAAAOwAAAA4AAT6fAAE+ogAAAKCiAAACDwAAAhCAZIBlogABPqMAAT6kgRjmgRjxgFXZAAAAIQAAACUAAT6nAAAADgAAACgAAT6oAAAAIwAAAN0AAT6pAAEx8AAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAT6xXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRjjgGSAOYBcgACABAiBGOfTAAAAOgAAADsAAAAOAAE+swABPrwAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAT69AAE+vgABPr8AAT7AAAE+wQABPsIAAT7DAAE+xIEY6IEY6YEY6oEY7IEY7YEY7oEY74EY8IBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE+owAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRjmCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABPqMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEY5ggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAE+5gAAABcAAT6jAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEY64AAgRjmCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAT70AAE+9QAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAE+owAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRjmCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABPqMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEY5ggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAT6jAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBGOYICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAE+owAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRjmCAgICIBKgG4ICIAACN8QDwAAASIAAAE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AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwABRRoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBGWkICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAFFGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgRlpCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACFAAAAFwABRRoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgRaNgACBGWkICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFFGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAroAAgRlpCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABRRoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZaQgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAEhDgAAABcAAUUaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEZRIAAgRlpCAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAABRkAAAAAhAAABJgAAAScAAUZBAAAAIwAAASUAAUZCAAABKAAAAA4AAAAlAAABKQAAASoAAAA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AAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgRmXCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwABR5wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEZlwgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAUecAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC8gACBGZcICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAJEAAAAXAAFHnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBAiKAAIEZlwgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAUecAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBGZcICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFHnAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRmXCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAABevAAAAFwABR5wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRmggACBGZcICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAFIwgAAACEAAAEmAAABJwABSMMAAAAjAAABJQABSMQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJEAAADsAAAA7AABSMwAAAAxAAAA7AAAAN4AAADsAAAEogAAF5EAAADsAAAA7AABSNQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAiIICIEZogiAOQiBAsWBAkwICIEZoQgS7eXH/NMAAAA6AAAAOwAAAA4AAUjYAAFI2wAAAKCiAAACDwAABKyAZIClogABSNwAAUjdgRmjgRmugFXZAAAAIQAAACUAAUjgAAAADgAAACgAAUjhAAAAIwAAAN0AAUjiAAAXrwAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAUjqXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRmggGSAOYBcgACABAiBGaTTAAAAOgAAADsAAAAOAAFI7AABSPUAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAUj2AAFI9wABSPgAAUj5AAFI+gABSPsAAUj8AAFI/YEZpYEZpoEZp4EZqYEZqoEZq4EZrIEZrYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFI3AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRmjCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABSNwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZowgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFJHwAAABcAAUjcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEZqIAAgRmjCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAUktAAFJLgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFI3AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRmjCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABSNwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZowgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUjcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBGaMICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFI3AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRmjCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABSNwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZowgICAiASoBvCAiAAAjZAAAAIQAAACUAAUl8AAAADgAAACgAAUl9AAAAIwAAAN0AAUl+AAAXrwAABKwAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAUmGXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRmggKWAOYBcgACABAiBGa/TAAAAOgAAADsAAAAOAAFJiAABSZAAAACgpwAABV0AAAVeAAAFXwAABWAAAAVhAAAFYgAABWOAtIC1gLaAt4C4gLmAuqcAAUmRAAFJkgABSZMAAUmUAAFJlQABSZYAAUmXgRmwgRmxgRmygRmzgRm0gRm1gRm2gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAUjdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXQAAAOwAAADsAAAAFwAAAOyAAIC8gACBGa4ICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAFI3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACAvoAAgRmuCAgICIBKgLUICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABSN0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVfAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEZrggICAiASoC2CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAhQAAABcAAUjdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYAAAAOwAAADsAAAAFwAAAOyAAIEWjYAAgRmuCAgICIBKgLcICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwABSN0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVhAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEZrggICAiASoC4CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUjdAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYgAAAOwAAADsAAAAFwAAAOyAAIBSgACBGa4ICAgIgEqAuQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABIRAAAAAXAAFI3QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWMAAADsAAAA7AAAABcAAADsgACBGYmAAIEZrggICAiASoC6CAiAAAjfEBIAAAEiAAABIwAAASQAAUoDAAAAIQAAASYAAAEnAAFKBAAAACMAAAElAAFKBQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAhQAAAOwAAADsAAFKDQAAADEAAADsAAAA3gAAAOwAAAIGAAEhAwAAAOwAAADsAAFKFQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEWjQgIgRm5CIA5CICKgRarCAiBGbgIEkBXFgPTAAAAOgAAADsAAAAOAAFKGQABShwAAACgogAAAg8AAAIQgGSAZaIAAUodAAFKHoEZuoEZxYBV2QAAACEAAAAlAAFKIQAAAA4AAAAoAAFKIgAAACMAAADdAAFKIwABIREAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAFKK18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEZt4BkgDmAXIAAgAQIgRm70wAAADoAAAA7AAAADgABSi0AAUo2AAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAFKNwABSjgAAUo5AAFKOgABSjsAAUo8AAFKPQABSj6BGbyBGb2BGb6BGcCBGcGBGcKBGcOBGcSAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABSh0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZuggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUodAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBGboICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABSmAAAAAXAAFKHQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBGb+AAIEZuggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAFKbgABSm8AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABSh0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZuggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUodAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGboICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFKHQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgRm6CAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABSh0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZuggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAUodAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGboICAgIgEqAbwgIgAAI2QAAACEAAAAlAAFKvQAAAA4AAAAoAAFKvgAAACMAAADdAAFKvwABIREAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAFKx18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEZt4BlgDmAXIAAgAQIgRnG0wAAADoAAAA7AAAADgABSskAAUrRAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAFK0gABStMAAUrUAAFK1QABStYAAUrXAAFK2IEZx4EZyIEZyYEZyoEZy4EZzIEZzYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFKHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgRnFCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABSh4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEZxQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUoeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBGcUICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAFKHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEZxQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUoeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGcUICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFKHgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRnFCAgICIBKgIAICIAACN8QDwAAASIAAAE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AADsAAAAOAAFNSwABTVMAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAU1UAAFNVQABTVYAAU1XAAFNWAABTVkAAU1agRn1gRn2gRn3gRn4gRn5gRn6gRn7gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAUygAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGfMICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFMoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRnzCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABTKAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEZ8wgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAUygAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBGfMICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFMoAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRnzCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAA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I3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFN4QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRoKCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAUIRAAAAFwABTeEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgRklgACBGgoICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFN4QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRoKCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABTeEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEaCggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAU3hAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGgoICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAFPBwAAACEAAAEmAAABJwABTwgAAAAjAAABJQABTwkAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIUAAADsAAAA7AABTxEAAAAxAAAA7AAAAN4AAADsAAAEogAAK4EAAADsAAAA7AABTxkAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3d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A7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBGi2AAIEaKggICAiASoA+CAiAAAjSAAAAOwAAAA4AAVBtAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABUDkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEaKggICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFQgAAAABcAAVA5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEaMIAAgRoqCAgICIBKgEAICIAACNIAAAA7AAAADgABUI4AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFQOQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRoqCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAVChAAAAFwABUDkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRozgACBGioICAgIgEqAQggIgAAI0gAAADsAAAAOAAFQrwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVA5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGioICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgA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AACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFTnQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRp6CAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAASEVAAAAFwABU50AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRoTgACBGnoICAgIgEqAuggIgAAI0gAAADsAAAAOAAFUwwAAATyhAAFUxIEahIBJ1wAAAA4AAAAlAAAqhAAAACEAAAAoAAAqhQAAACMAACqGAAAAFwAAAJwAAACcAAFUywAAAHMAAAAxgQlogACBGieBGieBGoWBDlMSiaKcx98QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABTyIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVhAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEaIQgICAiASoC4CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAU8iAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYgAAAOwAAADsAAAAFwAAAOyAAIBSgACBGiEICAgIgEqAuQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABUPoAAAAXAAFPIgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWMAAADsAAAA7AAAABcAAADsgACBGmyAAIEaIQgICAiASoC6CAiAAAjSAAAAOwAAAA4AAVT8AAABPKCASdIAAAA7AAAADgABVP8AAAE8ogABVQAAASAFgRqLgRaLgEnXAAAADgAAACUAACqEAAAAIQAAACgAACqFAAAAIwAAKoYAAAAXAAAAlwAAAJcAAVUIAAAAhQAAADGBCWiAAIEajIEajIEa/4EWjd8QEAABVQsAAVUMAAFVDQABVQ4AAAAhAAFVDwABVRAAAAAjAAFVEQABVRIAAAAOAAAAJQABVRMAAVUUAAAAKAAAAN0AAADeAAFVFgAAACkAAAApAAAAFAABVRoAAADkAAAAMQAAACkAAADeAAAA5wAAAGUAAADeAAFVIQABVSIAAADsXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgDmBGp+ABIAEgAKBGo6BA82ABIA5gQUogC6AOYEa/oEajQgSrWSzkNMAAAA6AAAAOwAAAA4AAVUmAAFVKAAAAKChAAAA8YA7oQABVSmBGo+AVdkAAAAhAAAAJQABVSwAAAAOAAAAKAABVS0AAAAjAAAA3QABVS4AAACXAAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABVTZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGoyAO4A5gFyAAIAECIEakNMAAAA6AAAAOwAAAA4AAVU4AAFVQgAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQABVUMAAVVEAAFVRQABVUYAAVVHAAFVSAABVUkAAVVKAAFVS4EakYEak4EalIEaloEal4EamYEamoEanIEanYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABVU8AAAAXAAFVKQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBGpKAAIEajwgICAiASoA+CAiAAAjSAAAAOwAAAA4AAVVdAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABVSkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEajwgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFVcAAAABcAAVUpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEalYAAgRqPCAgICIBKgEAICIAACNIAAAA7AAAADgABVX4AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFVKQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRqPCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAVWRAAAAFwABVSkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRqYgACBGo8ICAgIgEqAQggIgAAI0gAAADsAAAAOAAFVnwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASs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AAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACBASyAAIEaxwgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAVdLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC8gACBGscICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAJcAAAAXAAFXSwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBGoyAAIEaxwgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAVdLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBGscICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFXSwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRrHCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAVXoAAAAFwABV0sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRqigACBGscICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAFYcQAAACEAAAEmAAABJwABWHIAAAAjAAABJQABWHMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJcAAADsAAAA7AABWHsAAAAxAAAA7AAAAN4AAADsAAACBgABVeUAAADsAAAA7AABWIMAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBGowICIEa0giAOQiAioEaoAgIgRrRCBJa7V3J0wAAADoAAAA7AAAADgABWIcAAViKAAAAoKIAAAIPAAACEIBkgGWiAAFYiwABWIyBGtOBGt6AVdkAAAAhAAAAJQABWI8AAAAOAAAAKAABWJAAAAAjAAAA3QABWJEAAVXpAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABWJlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGtCAZIA5gFyAAIAECIEa1NMAAAA6AAAAOwAAAA4AAVibAAFYpAAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABWKUAAVimAAFYpwABWKgAAVipAAFYqgABWKsAAVisgRrVgRrWgRrXgRrZgRragRrbgRrcgRrdgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAViLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBGtMICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFYiwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRrTCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAVjOAAAAFwABWIsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRrYgACBGtMICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABWNwAAVjdAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAViLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBGtMICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFYiwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRrTCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABWIsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEa0wgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAViLAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGtMICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFYiwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRrTCAgICIBKgG8ICIAACNkAAAAhAAAAJQABWSsAAAAOAAAAKAABWSwAAAAjAAAA3QABWS0AAVXpAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABWTVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBGtCAZYA5gFyAAIAECIEa39MAAAA6AAAAOwAAAA4AAVk3AAFZPwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABWUAAAVlBAAFZQgABWUMAAVlEAAFZRQABWUaBGuCBGuGBGuKBGuOBGuSBGuWBGuaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABWIwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEa3ggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAViMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBGt4ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFYjAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRreCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABWIwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBGt4ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFYjAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRreCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABWIwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEa3ggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAViMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBGt4ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAFZsgAAACEAAAEmAAABJwABWbMAAAAjAAABJQABWbQAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJcAAADsAAAA7AABWbwAAAAxAAAA7AAAAN4AAADsAAACBgABVeYAAADsAAAA7AABWcQAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBGowICIEa6QiAOQiAioEaoQgIgRroCBMAAAABEn9VYtMAAAA6AAAAOwAAAA4AAVnIAAFZywAAAKCiAAACDwAAAhCAZIBlogABWcwAAVnNgRrqgRr1gFXZAAAAIQAAACUAAVnQAAAADgAAACgAAVnRAAAAIwAAAN0AAVnSAAFV6gAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAVnaXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRrngGSAOYBcgACABAiBGuvTAAAAOgAAADsAAAAOAAFZ3AABWeUAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAVnmAAFZ5wABWegAAVnpAAFZ6gABWesAAVnsAAFZ7YEa7IEa7YEa7oEa8IEa8YEa8oEa84Ea9IBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFZzAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgRrqCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABWcwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEa6ggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFaDwAAABcAAVnMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEa74AAgRrqCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAVodAAFaHgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFZzAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgRrqCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwABWcwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEa6ggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAVnMAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBGuoICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFZzAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgRrqCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABWcwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEa6ggICAiASoBvCAiAAAjZAAAAIQAAACUAAVpsAAAADgAAACgAAVptAAAAIwAAAN0AAVpuAAFV6gAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAVp2XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgRrngGWAOYBcgACABAiBGvbTAAAAOgAAADsAAAAOAAFaeAABWoAAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAVqBAAFaggABWoMAAVqEAAFahQABWoYAAVqHgRr3gRr4gRr5gRr6gRr7gRr8gRr9gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVnNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBGvUICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFZzQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRr1CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABWc0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEa9QgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAAVnNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgRr1CAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABWc0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEa9QgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAVnNAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBGvUICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFZzQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRr1CAgICIBKgIEICIAACNIAAAA7AAAADgA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nZYEbX4ClgDmAXIAAgAQIgRtu0wAAADoAAAA7AAAADgABYO8AAWD3AAAAoKcAAAVdAAAFXgAABV8AAAVgAAAFYQAABWIAAAVjgLSAtYC2gLeAuIC5gLqnAAFg+AABYPkAAWD6AAFg+wABYPwAAWD9AAFg/oEbb4EbcIEbcYEbcoEbc4EbdIEbdYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAFgRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgRttCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAo8AAAAFwABYEQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgQEsgACBG20ICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAFgRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvIAAgRttCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACRAAAAFwABYEQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQIigACBG20ICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFgRAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAroAAgRttCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAA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AAAErAAAAFwAACjwAAAAXAAFi9gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACBASyAAIEbnwgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAWL2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBG58ICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAHkAAAAXAAFi9gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBBfWAAIEbnwgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAWL2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBG58ICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFi9gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRufCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAEaWAAAAFwABYvYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgQ4/gACBG58ICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAFkHAAAACEAAAEmAAABJwABZB0AAAAjAAABJQABZB4AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAA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AAALJAAAA7AAAAOwAAAAXAAAA7IAAgRvQgACBG80ICAgIgEqAewgIgAAIUTHfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAWV4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBG80ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFleAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRvNCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwABZXgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBG80ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFleAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgRvNCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABZXgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEbzQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAWV4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgAC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sAAAAFwAAAOyAAIC8gACBHCcICAgIgEqAtAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAACjwAAAAXAAFp9gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV4AAADsAAAA7AAAABcAAADsgACBASyAAIEcJwgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFdgAAABcAAWn2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC8gACBHCcICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAIQAAAAXAAFp9gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBG+uAAIEcJwgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAWn2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBHCcICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFp9gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRwnCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAWiRAAAAFwABafYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRwCgACBHCcICAgIgEqAugg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AAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABXYAAAAXAAFseAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV0AAADsAAAA7AAAABcAAADsgACAvIAAgRxVCAgICIBKgLQICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAWFAAAAFwABbHgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVeAAAA7AAAAOwAAAAXAAAA7IAAgL6AAIEcVQgICAiASoC1CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAWx4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXwAAAOwAAADsAAAAFwAAAOyAAIC+gACBHFUICAgIgEqAtggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAHMAAAAXAAFseAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWAAAADsAAAA7AAAABcAAADsgACBDlOAAIEcVQgICAiASoC3CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAWx4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHFUICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFseAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABcAAADsgACAUoAAgRxVCAgICIBKgLkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAALQjAAAAFwABbHgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVjAAAA7AAAAOwAAAAXAAAA7IAAgRvXgACBHFUICAgIgEqAuggIgAAI3xASAAABIgAAASMAAAEkAAFtngAAACEAAAEmAAABJwABbZ8AAAAjAAABJQABbaAAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAIQAAADsAAAA7AABbagAAAAxAAAA7AAAAN4AAADsAAACBgABaI8AAADsAAAA7AABbbAAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBG+sICIEcYAiAOQiAioEcAQgIgRxfCBJ+dFlW0wAAADoAAAA7AAAADgABbbQAAW23AAAAoKIAAAIPAAACEIBkgGWiAAFtuAABbbmBHGGBHGyAVdkAAAAhAAAAJQABbbwAAAAOAAAAKAABbb0AAAAjAAAA3QABbb4AAWiUAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABbcZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHF6AZIA5gFyAAIAECIEcYtMAAAA6AAAAOwAAAA4AAW3IAAFt0QAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABbdIAAW3TAAFt1AABbdUAAW3WAAFt1wABbdgAAW3ZgRxjgRxkgRxlgRxngRxogRxpgRxqgRxrgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAW24AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHGEICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFtuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRxhCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAW37AAAAFwABbbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRxmgACBHGEICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABbgkAAW4KAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAW24AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHGEICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFtuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgRxhCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABbbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEcYQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAW24AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHGEICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFtuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRxhCAgICIBKgG8ICIAACNkAAAAhAAAAJQABblgAAAAOAAAAKAABblkAAAAjAAAA3QABbloAAWiUAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABbmJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHF6AZYA5gFyAAIAECIEcbdMAAAA6AAAAOwAAAA4AAW5kAAFubAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABbm0AAW5uAAFubwABbnAAAW5xAAFucgABbnOBHG6BHG+BHHCBHHGBHHKBHHOBHHSAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACKOAAAAFwABbbkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgQM6gACBHGwICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFtuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRxsCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABbbkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEcbAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAivAAAABcAAW25AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDPoAAgRxsCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABbbkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEcbAgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAW25AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBHGwICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFtuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRxsCAgICIBKgIEICIAACNIAAAA7AAAADgABbt8AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFmugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAroAAgRvlCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABZroAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIE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yYWdlgRyQgGWAOYBcgACABAiBHJ/TAAAAOgAAADsAAAAOAAFxFgABcR4AAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAXEfAAFxIAABcSEAAXEiAAFxIwABcSQAAXElgRyggRyhgRyigRyjgRykgRylgRymgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXBrAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBHJ4ICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFwawAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgRyeCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABcGsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEcnggICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAivAAAABcAAXBrAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEDPoAAgRyeCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABcGsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEcnggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXBrAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBHJ4ICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFwawAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgRyeCAgICIBKgIEICIAACNIAAAA7AAAADgABcZEAAAE8oIBJ0gAAADsAAAAOAAFxlAAAATyjAAFUxAABcZYAAXGXgRqEgRypgRyrgEnXAAAADgAAACUAACqEAAAAIQAAACgAACqFAAAAIwAAKoYAAAAXAAAAbwAAAG8AAXGeAAAAcwAAADGBCWiAAIA3gDeBHKqBDlMStkQGv9cAAAAOAAAAJQAAKoQAAAAhAAAAKAAAKoUAAAAjAAAqhgAAABcAAACfAAAAnwABcaYAAABzAAAAMYEJaIAAgRysgRysgR0JgQ5T3xAQAAFxqQABcaoAAXGrAAFxrAAAACEAAXGtAAFxrgAAACMAAXGvAAFxsAAAAA4AAAAlAAFxsQABcbIAAAAoAAAA3QAAAN4AAXG0AAAAKQAAACkAAAAUAAFxuAAAAOQAAAAxAAAAKQAAAN4AAADnAAAAbQAAAN4AAXG/AAFxwAAAAOxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAOYEcv4AEgASAAoEcroEDzYAEgDmBBSiANoA5gR0IgRytCBMAAAABIppTn9MAAAA6AAAAOwAAAA4AAXHEAAFxxgAAAKChAAAA8YA7oQABcceBHK+AVdkAAAAhAAAAJQABccoAAAAOAAAAKAABccsAAAAjAAAA3QABccwAAACfAAAA8QAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABcdRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHKyAO4A5gFyAAIAECIEcsNMAAAA6AAAAOwAAAA4AAXHWAAFx4AAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQABceEAAXHiAAFx4wABceQAAXHlAAFx5gABcecAAXHoAAFx6YEcsYEcs4EctIEctoEct4EcuYEcuoEcvIEcvYBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABce0AAAAXAAFxxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBHLKAAIEcrwgICAiASoA+CAiAAAjSAAAAOwAAAA4AAXH7AAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABcccAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEcrwgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFyDgAAABcAAXHHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEctYAAgRyvCAgICIBKgEAICIAACNIAAAA7AAAADgABchwAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFxxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgRyvCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAXIvAAAAFwABcccAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgRy4gACBHK8ICAgIgEqAQggIgAAI0gAAADsAAAAOAAFyPQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXHHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHK8ICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABclAAAAAXAAFxxwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBHLuAAIEcrwgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAAFyXgABcl8AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwABcccAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEcrwgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAFycgAAABcAAXHHAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEcvoAAgRyvCAgICIBKgEYICIAACF8QG1BlcnNpc3RlZE9uZVRvT25lRGlzY3Vzc2lvbtMAAAA6AAAAOwAAAA4AAXKBAAFyhAAAAKCiAAFyggABcoOBHMCBHMGiAAFyhQABcoaBHMKBHNmAVV8QGnJhd0NvbnRhY3RJZGVudGl0eUlkZW50aXR5XxAScmF3Q29udGFjdElkZW50aXR53xASAAABIgAAASMAAAEkAAFyiwAAACEAAAEmAAABJwABcowAAAAjAAABJQABco0AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJ8AAADsAAAA7AABcpUAAAAxAAAA7AAAAN4AAADsAAACBgABcoIAAADsAAAA7AABcp0AAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBHKwICIEcxAiAOQiAioEcwAgIgRzDCBJeVKTU0wAAADoAAAA7AAAADgABcqEAAXKkAAAAoKIAAAIPAAACEIBkgGWiAAFypQABcqaBHMWBHNCAVdkAAAAhAAAAJQABcqkAAAAOAAAAKAABcqoAAAAjAAAA3QABcqsAAXKFAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABcrNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHMKAZIA5gFyAAIAECIEcxtMAAAA6AAAAOwAAAA4AAXK1AAFyvgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABcr8AAXLAAAFywQABcsIAAXLDAAFyxAABcsUAAXLGgRzHgRzIgRzJgRzLgRzMgRzNgRzOgRzPgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXKlAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHMUICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFypQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRzFCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAXLoAAAAFwABcqUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRzKgACBHMUICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABcvYAAXL3AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXKlAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHMUICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAFypQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRzFCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABcqUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEcxQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXKlAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHMUICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAFypQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgRzFCAgICIBKgG8ICIAACNkAAAAhAAAAJQABc0UAAAAOAAAAKAABc0YAAAAjAAAA3QABc0cAAXKFAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABc09fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHMKAZYA5gFyAAIAECIEc0dMAAAA6AAAAOwAAAA4AAXNRAAFzWQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABc1oAAXNbAAFzXAABc10AAXNeAAFzXwABc2CBHNKBHNOBHNSBHNWBHNaBHNeBHNiAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABcqYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEc0AgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXKmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBHNAICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFypgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgRzQCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABcqYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEc0AgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXKmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBHNAICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAFypgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgRzQCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABcqYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEc0AgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAXPMAAAAIQAAASYAAAEnAAFzzQAAACMAAAElAAFzzgAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAnwAAAOwAAADsAAFz1gAAADEAAADsAAAA3gAAAOwAAASiAAFygwAAAOwAAADsAAFz3gAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2F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4AAF1QQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABdUIAAXVDAAF1RAABdUUAAXVGAAF1RwABdUgAAXVJgRz2gRz3gRz4gRz6gRz7gRz8gRz9gRz+gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXUoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHPQICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAF1KAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgRz0CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAXVrAAAAFwABdSgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgRz5gACBHPQICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABdXkAAXV6AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXUoAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHPQICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAF1KAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgRz0CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgA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AAXkVAAF5FgABeRcAAXkYgR1FgR1GgR1HgR1JgR1KgR1LgR1MgR1NgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXj3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHUMICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAF49wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR1DCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAXk6AAAAFwABePcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR1IgACBHUMICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABeUgAAXlJAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXj3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHUMICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF49wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgR1DCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABePcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEdQwgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXj3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHUMICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF49wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgR1DCAgICIBKgG8ICIAACNkAAAAhAAAAJQABeZcAAAAOAAAAKAABeZgAAAAjAAAA3QABeZkAAXjVAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABeaFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHUCAZYA5gFyAAIAECIEdT9MAAAA6AAAAOwAAAA4AAXmjAAF5qwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABeawAAXmtAAF5rgABea8AAXmwAAF5sQABebKBHVCBHVGBHVKBHVOBHVSBHVWBHVaAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABePgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEdTggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXj4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBHU4ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAF4+AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR1OCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwABePgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBHU4ICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAF4+AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgR1OCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABePgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEdTggICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXj4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHU4ICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAF6HgAAACEAAAEmAAABJwABeh8AAAAjAAABJQABeiAAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJMAAADsAAAA7AABeigAAAAxAAAA7AAAAN4AAADsAAACBgABeNEAAADsAAAA7AABejAAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBHSoICIEdWQiAOQiAioEdPwgIgR1YCBLJljRF0wAAADoAAAA7AAAADgABejQAAXo3AAAAoKIAAAIPAAACEIBkgGWiAAF6OAABejmBHVqBHWWAVdkAAAAhAAAAJQABejwAAAAOAAAAKAABej0AAAAjAAAA3QABej4AAXjWAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABekZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHVeAZIA5gFyAAIAECIEdW9MAAAA6AAAAOwAAAA4AAXpIAAF6UQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABelIAAXpTAAF6VAABelUAAXpWAAF6VwABelgAAXpZgR1cgR1dgR1egR1ggR1hgR1igR1jgR1kgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXo4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHVoICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAF6OAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR1aCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAXp7AAAAFwABejgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR1fgACBHVoICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABeokAAXqKAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXo4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHVoICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAF6OAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgR1aCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABejgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEdWggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXo4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHVoICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF6OAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgR1aCAgICIBKgG8ICIAACNkAAAAhAAAAJQABetgAAAAOAAAAKAABetkAAAAjAAAA3QABetoAAXjWAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABeuJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHVeAZYA5gFyAAIAECIEdZtMAAAA6AAAAOwAAAA4AAXrkAAF67AAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABeu0AAXruAAF67wABevAAAXrxAAF68gABevOBHWeBHWiBHWmBHWqBHWuBHWyBHW2AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABejkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEdZQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXo5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBHWUICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAF6OQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR1lCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABejkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEdZQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXo5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBHWUICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAF6OQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgR1lCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABejkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEdZQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAXtfAAAAIQAAASYAAAEnAAF7YAAAACMAAAElAAF7YQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAkwAAAOwAAADsAAF7aQAAADEAAADsAAAA3gAAAOwAAASiAAA1LAAAAOwAAADsAAF7cQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEdKggIgR1wCIA5CIECxYEEsggIgR1vCBLdznOz0wAAADoAAAA7AAAADgABe3UAAXt4AAAAoKIAAAIPAAAErIBkgKWiAAF7eQABe3qBHXGBHXyAVdkAAAAhAAAAJQABe30AAAAOAAAAKAABe34AAAAjAAAA3QABe38AAXjXAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABe4dfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHW6AZIA5gFyAAIAECIEdctMAAAA6AAAAOwAAAA4AAXuJAAF7kgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABe5MAAXuUAAF7lQABe5YAAXuXAAF7mAABe5kAAXuagR1zgR10gR11gR13gR14gR15gR16gR17gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXt5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHXEICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAF7eQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR1xCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAXu8AAAAFwABe3kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR12gACBHXEICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABe8oAAXvLAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAXt5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHXEICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAF7eQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgR1xCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABe3kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEdcQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAXt5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHXEICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF7eQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgR1xCAgICIBKgG8ICIAACNkAAAAhAAAAJQABfBkAAAAOAAAAKAABfBoAAAAjAAAA3QABfBsAAXjXAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABfCNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHW6ApYA5gFyAAIAECIEdfdMAAAA6AAAAOwAAAA4AAXwlAAF8LQAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwABfC4AAXwvAAF8MAABfDEAAXwyAAF8MwABfDSBHX6BHX+BHYCBHYGBHYKBHYOBHYSAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABe3oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEdfAgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAXt6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBHXwICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAF7egAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgR18CAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACYAAAAFwABe3oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQPRgACBHXwICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF7egAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgR18CAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABe3oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEdfAgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAArjQAAABcAAXt6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEdFoAAgR18CAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAABfKAAAAAhAAABJgAAAScAAXy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AASsAAAAXAAAAFwAAABcAAX4rAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBHaMICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABfm4AAAAXAAF+KwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBHaiAAIEdowgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAF+fAABfn0AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABfisAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEdowgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAX4rAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHaMICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAF+KwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgR2jCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABfisAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEdowgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAA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AAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGBbAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgR3uCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABgWwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEd7ggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYFsAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBHe4ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAGBbAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEd7ggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYFsAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBHe4ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGBbAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgR3uCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABgWwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEd7ggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAYKSAAAAIQAAASYAAAEnAAGCkwAAACMAAAElAAGClAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAnQAAAOwAAADsAAGCnAAAADEAAADsAAAA3gAAAOwAAASiAAA1LAAAAOwAAADsAAGCpAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEdywgIgR35CIA5CIECxYEEsggIgR34CBKUT7l/0wAAADoAAAA7AAAADgABgqgAAYKrAAAAoKIAAAIPAAAErIBkgKWiAAGCrAABgq2BHfqBHgWAVdkAAAAhAAAAJQABgrAAAAAOAAAAKAABgrEAAAAjAAAA3QABgrIAAYFMAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABgrpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHfeAZIA5gFyAAIAECIEd+9MAAAA6AAAAOwAAAA4AAYK8AAGCxQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABgsYAAYLHAAGCyAABgskAAYLKAAGCywABgswAAYLNgR38gR39gR3+gR4AgR4BgR4CgR4DgR4EgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYKsAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHfoICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGCrAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR36CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAYLvAAAAFwABgqwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR3/gACBHfoICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABgv0AAYL+AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYKsAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHfoICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAGCrAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgR36CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABgqwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEd+ggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYKsAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOy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AAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGGHAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR5ACAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAYZfAAAAFwABhhwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR5FgACBHkAICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABhm0AAYZuAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYYcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHkAICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAGGHAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgR5ACAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABhhwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEeQAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYYcAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBHkAICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACU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YREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBHm6AO4A5gFyAAIAECIEectMAAAA6AAAAOwAAAA4AAYi9AAGIxwAAAKCpAAABBAAAAQUAAAEGAAABBwAAAQgAAAEJAAABCgAAAQsAAAEMgD6AP4BAgEGAQoBDgESARYBGqQABiMgAAYjJAAGIygABiMsAAYjMAAGIzQABiM4AAYjPAAGI0IEec4EedYEedoEeeIEeeYEee4EefIEefoEef4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABiNQAAAAXAAGIrgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQQAAADsAAAA7AAAABcAAADsgACBHnSAAIEecQgICAiASoA+CAiAAAjSAAAAOwAAAA4AAYjiAAABPKCASd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABiK4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEFAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEecQgICAiASoA/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGI9QAAABcAAYiuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABBgAAAOwAAADsAAAAFwAAAOyAAIEed4AAgR5xCAgICIBKgEAICIAACNIAAAA7AAAADgABiQMAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGIrgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQcAAADsAAAA7AAAABcAAADsgACAAIAAgR5xCAgICIBKgEEICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAYkWAAAAFwABiK4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAEIAAAA7AAAAOwAAAAXAAAA7IAAgR56gACBHnEICAgIgEqAQggIgAAI0gAAADsAAAAOAAGJJAAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYiuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABCQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHnEICAgIgEqAQwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABiTcAAAAXAAGIrgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAQoAAADsAAAA7AAAABcAAADsgACBHn2AAIEecQgICAiASoBECAiAAAjTAAAAOgAAADsAAAAOAAGJRQABiUYAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAG1AAAAFwABiK4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAELAAAA7AAAAOwAAAAXAAAA7IAAgFeAAIEecQgICAiASoBFCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGJWQAAABcAAYiuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAABDAAAAOwAAADsAAAAFwAAAOyAAIEegIAAgR5xCAgICIBKgEYICIAACF8QHFBlcnNpc3RlZE1lc3NhZ2VSZWFjdGlvblNlbnTTAAAAOgAAADsAAAAOAAGJaAABiWkAAACgoKCAVdIAAAA7AAAADgABiWwAAAE8oQABhRmBHm2ASRJucwPg3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAF/bQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAroAAgR3FCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwABf20AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEdxQgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGBTAAAABcAAX9tAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEd94AAgR3FCAgICIBKgLoICIAACN8QEgAAASIAAAEjAAABJAABiZ4AAAAhAAABJgAAAScAAYmfAAAAIwAAASUAAYmgAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACYAAAA7AAAAOwAAYmoAAAAMQAAAOwAAADeAAAA7AAAAgYAACt5AAAA7AAAAOwAAYmwAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQPRCAiBHokIgDkIgIqBA+8ICIEeiAgSoKOEV9MAAAA6AAAAOwAAAA4AAYm0AAGJtwAAAKCiAAACDwAAAhCAZIBlogABibgAAYm5gR6KgR6VgFXZAAAAIQAAACUAAYm8AAAADgAAACgAAYm9AAAAIwAAAN0AAYm+AAArkAAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAYnGXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgR6HgGSAOYBcgACABAiBHovTAAAAOgAAADsAAAAOAAGJyAABidEAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAYnSAAGJ0wABidQAAYnVAAGJ1gABidcAAYnYAAGJ2YEejIEejYEejoEekIEekYEekoEek4EelIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGJuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgR6KCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABibgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEeiggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGJ+wAAABcAAYm4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEej4AAgR6KCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAYoJAAGKCgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGJuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgR6KCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAUUAAAAFwABibgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgK6AAIEeiggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAYm4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBHooICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGJuAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgR6KCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABibgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEeiggICAiASoBvCAiAAAjZAAAAIQAAACUAAYpYAAAADgAAACgAAYpZAAAAIwAAAN0AAYpaAAArkAAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAYpiXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgR6HgGWAOYBcgACABAiBHpbTAAAAOgAAADsAAAAOAAGKZAABimwAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAYptAAGKbgABim8AAYpwAAGKcQABinIAAYpzgR6XgR6YgR6ZgR6agR6bgR6cgR6dgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYm5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBHpUICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGJuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgR6VCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABibkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEelQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAAYm5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgR6VCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABibkAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEelQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAYm5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBHpUICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGJuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgR6VCAgICIBKgIEICIAACN8QEgA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KgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABjXsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEezwgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGNvgAAABcAAY17AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEe1IAAgR7PCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAY3MAAGNzQAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGNewAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgR7PCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABjXsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEezwgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAY17AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBHs8ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGNewAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgR7PCAgICIB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AAZKaAAGSmwABkpwAAZKdAAGSngABkp8AAZKggR8tgR8ugR8vgR8xgR8ygR8zgR80gR81gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZJ/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBHysICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGSfwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR8rCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAZLCAAAAFwABkn8AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR8wgACBHysICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABktAAAZLRAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZJ/AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBHysICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGSfwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgR8rCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABkn8AAADsAAAA7AAAAOw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ICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABk/cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEfUggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZP3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBH1IICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIrwAAAAXAAGT9wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAz6AAIEfUggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZP3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBH1IICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGT9wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgR9SCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABk/cAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEfUggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAZUdAAAAIQAAASYAAAEnAAGVHgAAACMAAAElAAGVHwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfgAAAOwAAADsAAGVJwAAADEAAADsAAAA3gAAAOwAAAIGAAAfiwAAAOwAAADsAAGVLwAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEC2ggIgR9dCIA5CICKgQLwCAiBH1wIEpV7XDTTAAAAOgAAADsAAAAOAAGVMwABlTYAAACgogAAAg8AAAIQgGSAZaIAAZU3AAGVOIEfXoEfaYBV2QAAACEAAAAlAAGVOwAAAA4AAAAoAAGVPAAAACMAAADdAAGVPQAAH5kAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGVRV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEfW4BkgDmAXIAAgAQIgR9f0wAAADoAAAA7AAAADgABlUcAAZVQAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAGVUQABlVIAAZVTAAGVVAABlVUAAZVWAAGVVwABlViBH2CBH2GBH2KBH2SBH2WBH2aBH2eBH2iAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABlTcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEfXggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZU3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBH14ICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABlXoAAAAXAAGVNwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBH2OAAIEfXggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAGViAABlYkAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABlTcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEfXggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZU3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBH14ICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGVNwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgR9eCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABlTcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEfXggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZU3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE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AASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGXuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR+MCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAZf8AAAAFwABl7kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR+RgACBH4wICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABmAoAAZgLAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZe5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBH4wICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAGXuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgR+MCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABl7kAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEfjAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZe5AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBH4wICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGXuQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgR+MCAgICIBKgG8ICIAACNkAAAAhAAAAJQABmFkAAAAOAAAAKAABmFoAAAAjAAAA3QABmFsAAB+bAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABmGNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBH4mAZYA5gFyAAIAECIEfmNMAAAA6AAAAOwAAAA4AAZhlAAGYbQAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABmG4AAZhvAAGYcAABmHEAAZhyAAGYcwABmHSBH5mBH5qBH5uBH5yBH52BH56BH5+AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABl7oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEflwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZe6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBH5cICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGXugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR+XCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADeBAAAAFwABl7oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQTegACBH5cICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGXugAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgR+XCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABl7oAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEflwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZe6AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBH5cICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAGY4AAAACEAAAEmAAABJwABmOEAAAAjAAABJQABmOIAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH4AAADsAAAA7AABmOoAAAAxAAAA7AAAAN4AAADsAAAEogAAH44AAADsAAAA7AABmPIAAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAtoICIEfogiAOQiBAsWBAvMICIEfoQgS683RhdMAAAA6AAAAOwAAAA4AAZj2AAGY+QAAAKCiAAACDwAABKyAZIClogABmPo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qAAAAKAAAASsAAAAXAAABjgAAABcAAZo7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBH7oICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGaOwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgR+6CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAZp+AAAAFwABmjsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgR+/gACBH7oICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABmowAAZqNAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZo7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBH7oICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAGaOwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgR+6CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABmjsAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEfuggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZo7AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBH7oICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGaOwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgR+6CAgICIBKgG8ICIAACNkAAAAhAAAAJQABmtsAAAAOAAAAKAABmtwAAAAjAAAA3QABmt0AAB+dAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABmuVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBH7eAZYA5gFyAAIAECIEfxtMAAAA6AAAAOwAAAA4AAZrnAAGa7wAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABmvAAAZrxAAGa8gABmvMAAZr0AAGa9QABmvaBH8eBH8iBH8mBH8qBH8uBH8yBH82AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABmjwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEfxQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZo8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBH8UICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGaPAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR/FCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABmjwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEfxQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZo8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBH8UICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGaPAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgR/FCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABmjwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEfxQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAZtiAAAAIQAAASYAAAEnAAGbYwAAACMAAAElAAGbZAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAfgAAAOwAAADsAAGbbAAAADEAAADsAAAA3gAAAOwAAAIGAAAfkAAAAOwAAADsAAGbdAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEC2ggIgR/QCIA5CICKgQL1CAiBH88IEuRD0ZTTAAAAOgAAADsAAAAOAAGbeAABm3sAAACgogAAAg8AAAIQgGSAZaIAAZt8AAGbfYEf0YEf3IBV2QAAACEAAAAlAAGbgAAAAA4AAAAoAAGbgQAAACMAAADdAAGbggAAH54AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGbil8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEfzoBkgDmAXIAAgAQIgR/S0wAAADoAAAA7AAAADgABm4wAAZuVAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAGblgABm5cAAZuYAAGbmQABm5oAAZubAAGbnAABm52BH9OBH9SBH9WBH9eBH9iBH9mBH9qBH9uAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABm3wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEf0QgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZt8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBH9EICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABm78AAAAXAAGbfAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBH9aAAIEf0QgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAGbzQABm84AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABm3wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEf0QgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAAZt8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAICugACBH9EICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGbfAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgR/RCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABm3wAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEf0QgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZt8AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBH9EICAgIgEqAbwgIgAAI2QAAACEAAAAlAAGcHAAAAA4AAAAoAAGcHQAAACMAAADdAAGcHgAAH54AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGcJl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEfzoBlgDmAXIAAgAQIgR/d0wAAADoAAAA7AAAADgABnCgAAZwwAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAGcMQABnDIAAZwzAAGcNAABnDUAAZw2AAGcN4Ef3oEf34Ef4IEf4YEf4oEf44Ef5IBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIo4AAAAXAAGbfQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBAzqAAIEf3AgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZt9AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBH9wICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGbfQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR/cCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwABm30AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBH9wICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGbfQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgR/cCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACE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0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBH/MICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGcvgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgR/zCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAADG+AAAAFwABnL4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQRrgACBH/MICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGcvgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgR/zCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABnL4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEf8wgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZy+AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBH/MICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAGd5AAAACEAAAEmAAABJwABneUAAAAjAAABJQABneYAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAH4AAADsAAAA7AABne4AAAAxAAAA7AAAAN4AAADsAAACBgAAH5I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iAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAZ9AAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBICEICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGfQAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSAhCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABn0AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEgIQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAZ9AAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBICEICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGfQAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSAhCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABn0AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgIQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAaBmAAAAIQAAASYAAAEnAAGgZwA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PAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGjMwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgSBqCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABozMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEgaggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAaMzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBIGoICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAGjMwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgSBqCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABozMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgaggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAaMzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIGoICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwA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sAAAA7AAAABcAAADsgACAAIAAgSCBCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwABpHQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBIIEICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGkdAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSCBCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABpHQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEggQgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAaR0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIIEICAgIgEqAgQgIgAAI0gAAADsAAAAOAAGlmgAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFFAAAABcAABpyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAICugACBApAICAgIgEqAuAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAAacgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWIAAADsAAAA7AAAABc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Pd25lZEF0dHJpYnV0ZXNzdG9yYWdlgSClgGWAOYBcgACABAiBILTTAAAAOgAAADsAAAAOAAGn0QABp9kAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAafaAAGn2wABp9wAAafdAAGn3gABp98AAafggSC1gSC2gSC3gSC4gSC5gSC6gSC7gFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAacmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBILMICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGnJgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSCzCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABpyYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgswgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAAacmAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgSCzCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABpyYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgswgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQ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xAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEgyggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAahnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBIMoICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAB9cAAAAXAAGoZwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACA/4AAgSDKCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABqGcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEgyggICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAahnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIMoICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGoZwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgSDKCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABqY0AAAAhAAABJgAAAScAAamOAAAAIwAAASUAAamPAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACRAAAA7AAAAOwAAamXAAAAMQAAAOwAAADeAAAA7AAAAgYAABeDAAAA7AAAAOwAAamfAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQIiCAiBINUIgDkIgIqBAj8ICIEg1AgSRvZV6dMAAAA6AAAAOwAAAA4AAamjAAGppgAAAKCiAAACDwAAAhCAZIBlogABqacAAamogSDWgSDhgFXZAAAAIQAAACUAAamrAAAADgAAACgAAamsAAAAIwAAAN0AAamtAAAXoQAAAg8AAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAam1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgSDTgGSAOYBcgACABAiBINfTAAAAOgAAADsAAAAOAAGptwABqcAAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAanBAAGpwgABqcMAAanEAAGpxQABqcYAAanHAAGpyIEg2IEg2YEg2oEg3IEg3YEg3oEg34Eg4IBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGppwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgSDWCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABqacAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEg1ggICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGp6gAAABcAAamnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEg24AAgSDWCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAan4AAGp+QAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGppwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgSDWCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABqacAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEg1ggICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAamnAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBINYICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGppwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgSDWCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABqacAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEg1ggICAiASoBvCAiAAAjZAAAAIQAAACUAAapHAAAADgAAACgAAapIAAAAIwAAAN0AAapJAAAXoQAAAhAAAADeAAAA/QAAABcAAAApAAA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AOYBcgACABAiBIO7TAAAAOgAAADsAAAAOAAGq+AABqwEAAACgqAAAAiUAAAImAAACJwAAAigAAAIpAAACKgAAAisAAAIsgGiAaYBqgGuAbIBtgG6Ab6gAAasCAAGrAwABqwQAAasFAAGrBgABqwcAAasIAAGrCYEg74Eg8IEg8YEg84Eg9IEg9YEg9oEg94BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGq6AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiUAAADsAAAA7AAAABcAAADsgACAUoAAgSDtCAgICIBKgGgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABqugAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAImAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEg7QgICAiASoBpCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGrKwAAABcAAaroAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJwAAAOwAAADsAAAAFwAAAOyAAIEg8oAAgSDtCAgICIBKgGoICIAACNMAAAA6AAAAOwAAAA4AAas5AAGrOgAAAKCgoIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGq6AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAigAAADsAAAA7AAAABcAAADsgACAUoAAgSDtCAgICIBKgGsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABqugAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIpAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEg7QgICAiASoBsCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAaroAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKgAAAOwAAADsAAAAFwAAAOyAAIBSgACBIO0ICAgIgEqAbQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGq6AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAisAAADsAAAA7AAAABcAAADsgACAAIAAgSDtCAgICIBKgG4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABqugAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIsAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEg7QgICAiASoBvCAiAAAjZAAAAIQAAACUAAauIAAAADgAAACgAAauJAAAAIwAAAN0AAauKAAAXowAAAhAAAADeAAAA/QAAABcAAAApAAAAMQAAAOwAAauSXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgSDqgGWAOYBcgACABAiBIPnTAAAAOgAAADsAAAAOAAGrlAABq5wAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAaudAAGrngABq58AAaugAAGroQABq6IAAaujgSD6gSD8gSD9gSD+gSD/gSEAgSEBgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAGrpwAAABcAAarpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIEg+4AAgSD4CAgICIBKgHsICIAACFNZRVPfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAarpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIPgICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGq6QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSD4CAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwABqukAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEg+AgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAarpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIPgICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGq6QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSD4CAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABqukAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEg+AgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAawQAAAAIQAAASYAAAEnAAGsEQAAACMAAAElAAGsEgAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAkQAAAOwAAADsAAGsGgAAADEAAADsAAAA3gAAAOwAAAIGAAAXhwAAAOwAAADsAAGsIgAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECIggIgSEECIA5CICKgQJDCAiBIQMIEurim83TAAAAOgAAADsAAAAOAAGsJgABrCkAAACgogAAAg8AAAIQgGSAZaIAAawqAAGsK4EhBYEhEIBV2QAAACEAAAAlAAGsLgAAAA4AAAAoAAGsLwAAACMAAADdAAGsMAAAF6UAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGsOF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEhAoBkgDmAXIAAgAQIgSEG0wAAADoAAAA7AAAADgABrDoAAaxDAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAGsRAABrEUAAaxGAAGsRwABrEgAAaxJAAGsSgABrEuBIQeBIQiBIQmBIQuBIQyBIQ2BIQ6BIQ+AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABrCoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhBQgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAawqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIQUICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABrG0AAAAXAAGsKgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBIQqAAIEhBQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAGsewABrHwAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABrCoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhBQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAawqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIQUICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGsKgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgSEFCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABrCoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhBQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAawqAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAA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AJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAa1sAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIScICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGtbAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSEnCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABrWwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhJwgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAH1wAAABcAAa1sAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAID/gACBIScICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGtbAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSEnCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABrWwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhJwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABc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AASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGwswAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSFiCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAbD2AAAAFwABsLMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSFngACBIWIICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABsQQAAbEFAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbCzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIWIICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGwswAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSFiCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABsLMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhYggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbCzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIWIICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGwswAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSFiCAgICIBKgG8ICIAACNkAAAAhAAAAJQABsVMAAAAOAAAAKAABsVQAAAAjAAAA3QABsVUAAbCOAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABsV1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIV+AZYA5gFyAAIAECIEhbtMAAAA6AAAAOwAAAA4AAbFfAAGxZwAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABsWgAAbFpAAGxagABsWsAAbFsAAGxbQABsW6BIW+BIXCBIXGBIXKBIXOBIXSBIXWAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABsLQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhbQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbC0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIW0ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGwtAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSFtCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAMPAAAAFwABsLQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgIaAAIEhbQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbC0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIW0ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGwtAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSFtCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABsLQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhbQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAbHaAAAAIQAAASYAAAEnAAGx2wAAACMAAAElAAGx3AAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAmQAAAOwAAADsAAGx5AAAADEAAADsAAAA3gAAAOwAAAIGAAGwiQAAAOwAAADsAAGx7AAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEhRAgIgSF4CIA5CICKgSFcCAiBIXcIErLnNw7TAAAAOgAAADsAAAAOAAGx8AABsfMAAACgogAAAg8AAAIQgGSAZaIAAbH0AAGx9YEheYEhhIBV2QAAACEAAAAlAAGx+AAAAA4AAAAoAAGx+QAAACMAAADdAAGx+gABsI8AAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGyAl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEhdoBkgDmAXIAAgAQIgSF60wAAADoAAAA7AAAADgABsgQAAbINAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAGyDgABsg8AAbIQAAGyEQABshIAAbITAAGyFAABshWBIXuBIXyBIX2BIX+BIYCBIYGBIYKBIYOAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABsfQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEheQgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbH0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIXkICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABsjcAAAAXAAGx9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBIX6AAIEheQgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAGyRQABskYAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABsfQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEheQgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbH0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIXkICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGx9AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgSF5CAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABsfQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEheQgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbH0AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIXkICAgIgEqAbwgIgAAI2QAAACEAAAAlAAGylAAAAA4AAAAoAAGylQAAACMAAADdAAGylgABsI8AAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGynl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEhdoBlgDmAXIAAgAQIgSGF0wAAADoAAAA7AAAADgABsqAAAbKoAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAGyqQABsqoAAbKrAAGyrAABsq0AAbKuAAGyr4EhhoEhh4EhiIEhiYEhioEhi4EhjIBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGx9QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgSGECAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABsfUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhhAgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbH1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBIYQICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAGx9QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgSGECAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABsfUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhhAgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbH1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIYQICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGx9QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgSGECAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABsxsAAAAhAAABJgAAAScAAbMcAAAAIwAAASUAAbMdAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAAACkAAACZAAAA7AAAAOwAAbMlAAAAMQAAAOwAAADeAAAA7AAAAgYAAbCKAAAA7AAAAOwAAbMtAAAA7F8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgSFECAiBIY8IgDkIgIqBIV0ICIEhjggTAAAAAREFPr/TAAAAOgAAADsAAAAOAAGzMQABszQAAACgogAAAg8AAAIQgGSAZaIAAbM1AAGzNoEhkIEhm4BV2QAAACEAAAAlAAGzOQAAAA4AAAAoAAGzOgAAACMAAADdAAGzOwABsJAAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGzQ18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEhjYBkgDmAXIAAgAQIgSGR0wAAADoAAAA7AAAADgABs0UAAbNOAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAGzTwABs1AAAbNRAAGzUgABs1MAAbNUAAGzVQABs1aBIZKBIZOBIZSBIZaBIZeBIZiBIZmBIZqAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABszUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhkAgICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbM1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIZAICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABs3gAAAAXAAGzNQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBIZWAAIEhkAgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAGzhgABs4cAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABszUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhkAgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbM1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIZAICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAGzNQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgSGQCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABszUAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhkAgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbM1AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACLAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIZAICAgIgEqAbwgIgAAI2QAAACEAAAAlAAGz1QAAAA4AAAAoAAGz1gAAACMAAADdAAGz1wABsJAAAAIQAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAGz318QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEhjYBlgDmAXIAAgAQIgSGc0wAAADoAAAA7AAAADgABs+EAAbPpAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAGz6gABs+sAAbPsAAGz7QABs+4AAbPvAAGz8IEhnYEhnoEhn4EhoIEhoYEhooEho4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIo4AAAAXAAGzNgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACBAzqAAIEhmwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbM2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIZsICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGzNgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSGbCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACK8AAAAFwABszYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQM+gACBIZsICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAGzNgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSGbCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABszYAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEhmwgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbM2AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIZsICAgIgEqAgQgIgAAI3xASAAABIgAAASMAAAEkAAG0XAAAACEAAAEmAAABJwABtF0AAAAjAAABJQABtF4AAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAAAKQAAAJkAAADsAAAA7AABtGYAAAAxAAAA7AAAAN4AAADsAAACBgABA6UAAADsAAAA7AABtG4AAADsXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXN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AAbXYgSHAgSHBgSHCgSHEgSHFgSHGgSHHgSHIgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbW3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIb4ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG1twAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSG+CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAbX6AAAAFwABtbcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSHDgACBIb4ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABtggAAbYJAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbW3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIb4ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAG1twAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgSG+CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABtbcAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhvggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbW3AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIb4ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG1twAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSG+CAgICIBKgG8ICIAACNkAAAAhAAAAJQABtlcAAAAOAAAAKAABtlgAAAAjAAAA3QABtlkAAbCSAAAErAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABtmFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIbuApYA5gFyAAIAECIEhytMAAAA6AAAAOwAAAA4AAbZjAAG2awAAAKCnAAAFXQAABV4AAAVfAAAFYAAABWEAAAViAAAFY4C0gLWAtoC3gLiAuYC6pwABtmwAAbZtAAG2bgABtm8AAbZwAAG2cQABtnKBIcuBIcyBIc2BIc6BIc+BIdCBIdGAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAV2AAAAFwABtbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVdAAAA7AAAAOwAAAAXAAAA7IAAgLyAAIEhyQgICAiASoC0CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAFhQAAABcAAbW4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFXgAAAOwAAADsAAAAFwAAAOyAAIC+gACBIckICAgIgEqAtQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABYUAAAAXAAG1uAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABV8AAADsAAAA7AAAABcAAADsgACAvoAAgSHJCAgICIBKgLYICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAACRAAAAFwABtbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAVgAAAA7AAAAOwAAAAXAAAA7IAAgQIigACBIckICAgIgEqAtwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG1uAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAADsgACAUoAAgSHJCAgICIBKgLgICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABtbgAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAViAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEhyQgICAiASoC5CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAXpwAAABcAAbW4AAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYwAAAOwAAADsAAAAFwAAAOyAAIEhMIAAgSHJCAgICIBKgLoICIAACNIAAAA7AAAADgABtt4AAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAGurQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAABWEAAADsAAAA7AAAABcAAAD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AAAErAAAAFwAAAY4AAAAXAAG3KQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSHkCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABtykAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEh5AgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAAbcpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgSHkCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABtykAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEh5AgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbcpAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIeQICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG3KQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgSHkCAgICIBKgIEICIAACN8QEgAAASIAAAEjAAABJAABuE8AAAAhAAABJgAAAScAAbhQAAAAIwAAASUAAbhRAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwA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CyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIhIICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG5qwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSISCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAACKOAAAAFwABuasAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgQM6gACBIhIICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAIrwAAAAXAAG5qwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAz6AAIEiEggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbmrAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIhIICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG5qwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSISCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABuasAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEiEggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAbrRAAAAIQAAASYAAAEnAAG60gAAACMAAAElAAG60wAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAkQAAAOwAAADsAAG62wAAADEAAADsAAAA3gAAAOwAAAIGAAAK4wAAAOwAAADsAAG64wAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECIggIgSIdCIA5CICKgQE7CAiBIhwIEtlzqy/TAAAAOgAAADsAAAAOAAG65wABuuoAAACgogAAAg8AAAIQgGSAZaIAAbrrAAG67IEiHoEiKYBV2QAAACEAAAAlAAG67wAAAA4AAAAoAAG68AAAACMAAADdAAG68QAAF6wAAAIPAAAA3gAAAP0AAAAXAAAAKQAAADEAAADsAAG6+V8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEiG4BkgDmAXIAAgAQIgSIf0wAAADoAAAA7AAAADgABuvsAAbsEAAAAoKgAAAIlAAACJgAAAicAAAIoAAACKQAAAioAAAIrAAACLIBogGmAaoBrgGyAbYBugG+oAAG7BQABuwYAAbsHAAG7CAABuwkAAbsKAAG7CwABuwyBIiCBIiGBIiKBIiSBIiWBIiaBIieBIiiAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABuusAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIlAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEiHggICAiASoBoCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbrrAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBIh4ICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABuy4AAAAXAAG66wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBIiOAAIEiHggICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAG7PAABuz0AAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABuusAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEiHggICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbrrAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIh4ICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG66wAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgSIeCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABuusAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEiHggICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgA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AAIBSgACBIjYICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAG8LQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgSI2CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABvC0AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEiNggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAbwtAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIjYICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG8LQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSI2CAgICIBKgG8ICIAACNkAAAAhAAAAJQABvM0AAAAOAAAAKAABvM4AAAAjAAAA3QABvM8AABetAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABvNdfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIjOAZYA5gFyAAIAECIEiQtMAAAA6AAAAOwAAAA4AAbzZAAG84QAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABvOIAAbzjAAG85AABvOUAAbzmAAG85wABvOiBIkOBIkSBIkWBIkaBIkeBIkiBIkmAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABvC4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEiQQgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAbwuAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIkEICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG8LgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSJBCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwABvC4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBIkEICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG8LgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSJBCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABvC4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEiQQgICAiASoCACAiAAAjfEA8AAAE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AADoAAAA7AAAADgABv1sAAb9jAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAG/ZAABv2UAAb9mAAG/ZwABv2gAAb9pAAG/aoEicYEicoEic4EidIEidYEidoEid4BV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG+sAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgSJvCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABvrAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEibwgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAb6wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBIm8ICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwABQhEAAAAXAAG+sAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBGSWAAIEibwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAb6wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIm8ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG+sAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSJvCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABvrAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEibwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAb/WAAAAIQAAASYAAAEnAAG/1wAAACMAAAElAAG/2AAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAkQAAAOwAAADsAAG/4AAAADEAAADsAAAA3gAAAOwAAAIGAAAXkwAAAOwAAADsAAG/6AAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECIggIgSJ6CIA5CICKgQJOCAiBInkIEwAAAAEf8Ob50wAAADoAAAA7AAAADgABv+wAAb/vAAAAoKIAAAIPAAACEIBkgGWiAAG/8AABv/GBInuBIoaAVdkAAAAhAAAAJQABv/QAAAAOAAAAKAABv/UAAAAjAAAA3QABv/YAABexAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABv/5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIniAZIA5gFyAAIAECIEifNMAAAA6AAAAOwAAAA4AAcAAAAHACQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABwAoAAcALAAHADAABwA0AAcAOAAHADwABwBAAAcARgSJ9gSJ+gSJ/gSKBgSKCgSKDgSKEgSKFgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAb/wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBInsICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG/8AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSJ7CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAcAzAAAAFwABv/AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSKAgACBInsICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABwEEAAcBCAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAb/wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBInsICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG/8AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSJ7CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABv/AAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEiewgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAb/wAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBInsICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAG/8AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSJ7CAgICIBKgG8ICIAACNkAAAAhAAAAJQABwJAAAAAOAAAAKAABwJEAAAAjAAAA3QABwJIAABexAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABwJpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIniAZYA5gFyAAIAECIEih9MAAAA6AAAAOwAAAA4AAcCcAAHApAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABwKUAAcCmAAHApwABwKgAAcCpAAHAqgABwKuBIoiBIomBIoqBIouBIoyBIo2BIo6AVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAepAAAAFwABv/EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgPuAAIEihggICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAb/xAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIoYICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG/8QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSKGCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwABv/EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEihggICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAb/xAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIoYICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAG/8QAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSKGCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABv/EAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEihggICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAcEXAAAAIQAAASYAAAEnAAHBGAAAACMAAAElAAHBGQAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAkQAAAOwAAADsAAHBIQAAADEAAADsAAAA3gAAAOwAAAIGAAAXlQAAAOwAAADsAAHBKQAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECIggIgSKRCIA5CICKgQJQCAiBIpAIEwAAAAEpyheJ0wAAADoAAAA7AAAADgABwS0AAcEwAAAAoKIAAAIPAAACEIBkgGWiAAHBMQABwTKBIpKBIp2AVdkAAAAhAAAAJQABwTUAAAAOAAAAKAABwTYAAAAjAAAA3QABwTcAABezAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABwT9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIo+AZIA5gFyAAIAECIEik9MAAAA6AAAAOwAAAA4AAcFBAAHBSgAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABwUsAAcFMAAHBTQABwU4AAcFPAAHBUAABwVEAAcFSgSKUgSKVgSKWgSKYgSKZgSKagSKbgSKcgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcExAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIpIICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHBMQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSKSCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAcF0AAAAFwABwTEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSKXgACBIpIICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABwYIAAcGDAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcExAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIpIICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHBMQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSKSCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABwTEAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEikggICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcExAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIpIICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHBMQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSKSCAgICIBKgG8ICIAACNkAAAAhAAAAJQABwdEAAAAOAAAAKAABwdIAAAAjAAAA3QABwdMAABezAAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABwdtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXR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oAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABwowAAcKNAAHCjgABwo8AAcKQAAHCkQABwpIAAcKTgSKrgSKsgSKtgSKvgSKwgSKxgSKygSKzgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcJyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIqkICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHCcgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSKpCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAcK1AAAAFwABwnIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSKugACBIqkICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABwsMAAcLEAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcJyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIqkICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHCcgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSKpCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABwnIAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEiqQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcJyAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIqkICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHCcgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSKpCAgICIBKgG8ICIAACNkAAAAhAAAAJQABwxIAAAAOAAAAKAABwxMAAAAjAAAA3QABwxQAABe1AAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABwxxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBIqaAZYA5gFyAAIAECIEitdMAAAA6AAAAOwAAAA4AAcMeAAHDJgAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwABwycAAcMoAAHDKQABwyoAAcMrAAHDLAABwy2BIraBIreBIriBIrmBIrqBIruBIryAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAaunAAAAFwABwnMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgSD7gACBIrQICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHCcwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSK0CAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABwnMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEitAgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAH1wAAABcAAcJzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAID/gACBIrQICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHCcwAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSK0CAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABwnMAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEitAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcJzAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBIrQICAgIgEqAgQgIgAAI0gAAADsAAAAOAAHDmQAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAA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AAIEizwgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcPkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBIs8ICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHD5AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSLPCAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAfXAAAAFwABw+QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgP+AAIEizwgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcPkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBIs8ICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHD5AAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSLPCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABw+QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEizwgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAcUKAAAAIQAAASYAAAEnAAHFCwAAACMAAAElAAHFDAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAmgAAAOwAAADsAAHFFAAAADEAAADsAAAA3gAAAOwAAASiAAALVQAAAOwAAADsAAHFHAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEBLwgIgSLaCIA5CIECxYEBTwgIgSLZCBKjiUGs0wAAADoAAAA7AAAADgABxSAAAcUjAAAAoKIAAAIPAAAErIBkgKWiAAHFJAABxSWBItuBIuaAVdkAAAAhAAAAJQABxSgAAAAOAAAAKAABxSkAAAAjAAAA3QABxSoAAAtnAAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AABxTJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBItiAZIA5gFyAAIAECIEi3NMAAAA6AAAAOwAAAA4AAcU0AAHFPQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAABxT4AAcU/AAHFQAABxUEAAcVCAAHFQwABxUQAAcVFgSLdgSLegSLfgSLhgSLigSLjgSLkgSLlgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcUkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBItsICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHFJAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSLbCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAcVnAAAAFwABxSQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSLggACBItsICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABxXUAAcV2AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcUkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBItsICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAHFJAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgSLbCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABxSQAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEi2wgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcUkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBItsICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHFJAAAAOwAAADsAAAA7AAAADE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AAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcopAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBIzgICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHKKQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSM4CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAcpsAAAAFwAByikAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSM9gACBIzgICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgABynoAAcp7AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAcopAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBIzgICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHKKQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAUoAAgSM4CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAByikAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEjOAgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASg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EQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEjTIBlgDmAXIAAgAQIgSNb0wAAADoAAAA7AAAADgABzBYAAcweAAAAoKcAAALJAAACygAAAssAAALMAAACzQAAAs4AAALPgHuAfIB9gH6Af4CAgIGnAAHMHwABzCAAAcwhAAHMIgABzCMAAcwkAAHMJYEjXIEjXYEjXoEjX4EjYIEjYYEjYoBV3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHLawAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgSNaCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwABy2sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEjWggICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAActrAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBI1oICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAw8AAAAXAAHLawAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACAhoAAgSNaCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABy2sAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEjWggICAiASoB/CAiAAAjfEA8AAAE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A7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSNxCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABzKwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEjcQgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAANxgAAABcAAcysAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAIEBgIAAgSNxCAgICIBKgH4ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwABzKwAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALNAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEjcQgICAiASoB/CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAcysAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzgAAAOwAAADsAAAAFwAAAOyAAIAAgACBI3EICAgIgEqAgAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHMrAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs8AAADsAAAA7AAAABcAAADsgACAAIAAgSNxCAgICIBKgIEICIAACNIAAAA7AAAADgABzdIAAAE8oIBJ3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAAJbwAAAOwAAADsAAAA7AAAADEAAAD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sAAAA7AAAADEAAADsAAABNAAAAskAAADsAAAA7AAAABcAAADsgACAAIAAgSQVCAgICIBKgHsICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAB1SAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALKAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEkFQgICAiASoB8CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdUgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACywAAAOwAAADsAAAAFwAAAOyAAIAAgACBJBUICAgIgEqAfQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAADcYAAAAXAAHVIAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAswAAADsAAAA7AAAABcAAADsgACBAYCAAIEkFQgICAiASoB+CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdUgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzQAAAOwAAADsAAAAFwAAAOyAAIAAgACBJBUICAgIgEqAfwgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHVIAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs4AAADsAAAA7AAAABcAAADsgACAAIAAgSQVCAgICIBKgIAICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAB1SAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALPAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEkFQgICAiASoCBCAiAAAjfEBIAAAEiAAABIwAAASQAAdZGAAAAIQAAASYAAAEnAAHWRwAAACMAAAElAAHWSAAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAAApAAAAeAAAAOwAAADsAAHWUAAAADEAAADsAAAA3gAAAOwAAASiAAHU9AAAAOwAAADsAAHWWAAAAOxfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEj7ggIgSQgCIA5CIECxYEkAwgIgSQfCBJRx+eI0wAAADoAAAA7AAAADgAB1lwAAdZfAAAAoKIAAAIPAAAErIBkgKWiAAHWYAAB1mGBJCGBJCyAVdkAAAAhAAAAJQAB1mQAAAAOAAAAKAAB1mUAAAAjAAAA3QAB1mYAAdT6AAACDwAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAB1m5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBJB6AZIA5gFyAAIAECIEkItMAAAA6AAAAOwAAAA4AAdZwAAHWeQAAAKCoAAACJQAAAiYAAAInAAACKAAAAikAAAIqAAACKwAAAiyAaIBpgGqAa4BsgG2AboBvqAAB1noAAdZ7AAHWfAAB1n0AAdZ+AAHWfwAB1oAAAdaBgSQjgSQkgSQlgSQngSQogSQpgSQqgSQrgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAdZgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBJCEICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHWYAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSQhCAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAdajAAAAFwAB1mAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSQmgACBJCEICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAB1rEAAdayAAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAdZgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBJCEICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAHWYAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgSQhCAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAB1mAAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEkIQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdZgAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBJCEICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAA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fEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAdtkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJQAAAOwAAADsAAAAFwAAAOyAAIBSgACBJH0ICAgIgEqAaAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHbZAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiYAAADsAAAA7AAAABcAAADsgACAAIAAgSR9CAgICIBKgGkICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAdunAAAAFwAB22QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAInAAAA7AAAAOwAAAAXAAAA7IAAgSSCgACBJH0ICAgIgEqAaggIgAAI0wAAADoAAAA7AAAADgAB27UAAdu2AAAAoKCggFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAdtkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKAAAAOwAAADsAAAAFwAAAOyAAIBSgACBJH0ICAgIgEqAawgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAABRQAAAAXAAHbZAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAikAAADsAAAA7AAAABcAAADsgACAroAAgSR9CAgICIBKgGwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAB22QAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIqAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIEkfQgICAiASoBtCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdtkAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKwAAAOwAAADsAAAAFwAAAOyAAIAAgACBJH0ICAgIgEqAbggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHbZAAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAiwAAADsAAAA7AAAABcAAADsgACAUoAAgSR9CAgICIBKgG8ICIAACNkAAAAhAAAAJQAB3AQAAAAOAAAAKAAB3AUAAAAjAAAA3QAB3AYAAdT9AAACEAAAAN4AAAD9AAAAFwAAACkAAAAxAAAA7AAB3A5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBJHqAZYA5gFyAAIAECIEkidMAAAA6AAAAOwAAAA4AAdwQAAHcGAAAAKCnAAACyQAAAsoAAALLAAACzAAAAs0AAALOAAACz4B7gHyAfYB+gH+AgICBpwAB3BkAAdwaAAHcGwAB3BwAAdwdAAHcHgAB3B+BJIqBJIuBJIyBJI2BJI6BJI+BJJCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAB22UAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALJAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEkiAgICAiASoB7CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAdtlAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACygAAAOwAAADsAAAAFwAAAOyAAIBSgACBJIgICAgIgEqAfAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHbZQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAssAAADsAAAA7AAAABcAAADsgACAAIAAgSSICAgICIBKgH0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAA3GAAAAFwAB22UAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALMAAAA7AAAAOwAAAAXAAAA7IAAgQGAgACBJIgICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHbZQAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSSICAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAB22UAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALOAAAA7AAAAOwAAAAXAAAA7IAAgACAAIEkiAgICAiASoCACAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAdtlAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzwAAAOwAAADsAAAAFwAAAOyAAIAAgACBJIgICAgIgEqAgQgIgAAI0gAAADsAAAAOAAHciwAAATyggEnfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAdMhAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAAFYQAAAOwAAADsAAAAFwAAAOyAAIBSgACBI+gICAgIgEqAuAgIgAAI3xAPAAABIgA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AAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAeMaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACJgAAAOwAAADsAAAAFwAAAOyAAIAAgACBJQsICAgIgEqAaQgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAB410AAAAXAAHjGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAicAAADsAAAA7AAAABcAAADsgACBJRCAAIElCwgICAiASoBqCAiAAAjTAAAAOgAAADsAAAAOAAHjawAB42wAAACgoKCAVd8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAGOAAAAFwAB4xoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIoAAAA7AAAAOwAAAAXAAAA7IAAgFKAAIElCwgICAiASoBrCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAABjgAAABcAAeMaAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACKQAAAOwAAADsAAAAFwAAAOyAAIBSgACBJQsICAgIgEqAbAgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHjGgAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAioAAADsAAAA7AAAABcAAADsgACAUoAAgSULCAgICIBKgG0ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAB4xoAAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAAIrAAAA7AAAAOwAAAAXAAAA7IAAgACAAIElCwgICAiASoBuCAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASY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ABAiBJVzTAAAAOgAAADsAAAAOAAHniQAB55EAAACgpwAAAskAAALKAAACywAAAswAAALNAAACzgAAAs+Ae4B8gH2AfoB/gICAgacAAeeSAAHnkwAB55QAAeeVAAHnlgAB55cAAeeYgSVdgSVegSVfgSVggSVhgSVigSVjgFXfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAAAFwAAABcAAebeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACyQAAAOwAAADsAAAAFwAAAOyAAIAAgACBJVsICAgIgEqAewgIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAAY4AAAAXAAHm3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAsoAAADsAAAA7AAAABcAAADsgACAUoAAgSVbCAgICIBKgHwICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAABKQAAASoAAAAoAAABKwAAABcAAAAXAAAAFwAB5t4AAADsAAAA7AAAAOwAAAAxAAAA7AAAATQAAALLAAAA7AAAAOwAAAAXAAAA7IAAgACAAIElWwgICAiASoB9CAiAAAjfEA8AAAEiAAABIwAAASQAAAAhAAABJQAAASYAAAEnAAAAIwAAASgAAAAOAAAAJQAAASkAAAEqAAAAKAAAASsAAAAXAAADDwAAABcAAebeAAAA7AAAAOwAAADsAAAAMQAAAOwAAAE0AAACzAAAAOwAAADsAAAAFwAAAOyAAICGgACBJVsICAgIgEqAfggIgAAI3xAPAAABIgAAASMAAAEkAAAAIQAAASUAAAEmAAABJwAAACMAAAEoAAAADgAAACUAAAEpAAABKgAAACgAAAErAAAAFwAAABcAAAAXAAHm3gAAAOwAAADsAAAA7AAAADEAAADsAAABNAAAAs0AAADsAAAA7AAAABcAAADsgACAAIAAgSVbCAgICIBKgH8ICIAACN8QDwAAASIAAAEjAAABJAAAACEAAAElAAABJgAAAScAAAAjAAABKAAAAA4AAAAlAAA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AAJ2mAACdqwAAnckAAJ35AACeEQAAnjYAAJ5ZAACefQAAnpYAAJ6/AACe1QAAnwEAAJ8+AACfVQAAn24AAJ+nAACfxQAAn98AAKAFAACgHAAAoDkAAKBxAACgjwAAoKIAAKC+AACg1wAAoPQAAKEPAAChKgAAoUYAAKFkAACh5wAAogsAAKIvAACiUgAAonkAAKKZAACiwAAAoucAAKMHAACjKwAAo08AAKNbAACjXQAAo18AAKNhAACjYwAAo2UAAKNnAACjagAAo2wAAKNuAACjcQAAo3MAAKN1AACjeAAAo3oAAKN7AACjgAAAo4gAAKOhAACjpgAAo6gAAKOtAACjrwAAo7EAAKPAAACkCQAApC0AAKRUAACkeAAApHoAAKR8AACkfgAApIAAAKSCAACkhAAApIUAAKSHAACkoAAApMUAAKTHAACkyQAApMsAAKTNAACkzwAApNEAAKTTAACk1QAApNcAAKT8AACk/gAApQAAAKUCAAClBAAApQYAAKUIAAClCgAApQwAAKUOAAClEAAApSYAAKU5AAClVQAApXIAAKWOAAClogAApbQAAKXKAACl4wAApl4AAKZkAACmbQAApnoAAKaGAACmkAAAppoAAKalAACmsAAApr0AAKbFAACmxwAApskAAKbLAACmzQAAps4AAKbPAACm0AAAptEAAKbTAACm1QAAptYAAKbXAACm2QAAptoAAKbrAACm7AAApu4AAKb/AACnCgAApxMAAKciAACnLwAApzcAAKdAAACnUQAAp2QAAKd1AACniAAAp58AAKexAACoLAAAqC4AAKgwAACoMgAAqDQAAKg1AACoNgAAqDcAAKg4AACoOgAAqDwAAKg9AACoPgAAqEAAAKhBAACovAAAqL4AAKjAAACowgAAqMQAAKjFAACoxgAAqMcAAKjIAACoygAAqMwAAKjNAACozgAAqNAAAKjRAACo4gAAqOMAAKjlAACpYAAAqWIAAKlkAACpZgAAqWgAAKlpAACpagAAqWsAAKlsAACpbgAAqXAAAKlxAACpcgAAqXQAAKl1AACp8AAAqfIAAKn0AACp9gAAqfgAAKn5AACp+gAAqfsAAKn8AACp/gAAqgAAAKoBAACqAgAAqgQAAKoFAACqFgAAqhcAAKoZAACqlAAAqpYAAKqYAACqmgAAqpwAAKqdAACqngAAqp8AAKqgAACqogAAqqQAAKqlAACqpgAAqqgAAKqpAACqqgAAqyUAAKsnAACrKQAAqysAAKstAACrLgAAqy8AAKswAACrMQAAqzMAAKs1AACrNgAAqzcAAKs5AACrOgAAq1MAAKtUAACrVQAAq1cAAKtoAACrfgAAq4sAAKuYAACsEwAArBUAAKwXAACsGQAArBsAAKwcAACsHQAArB4AAKwfAACsIQAArCMAAKwkAACsJQAArCcAAKwoAACsWQAArFsAAKxdAACsXwAArGAAAKxiAACseQAArIoAAKyYAACssQAArL8AAKzUAACs6AAArP8AAK0RAACtjAAArY4AAK2QAACtkgAArZQAAK2VAACtlgAArZcAAK2YAACtmgAArZwAAK2dAACtngAAraAAAK2hAACtvgAArc8AAK3kAACuAQAArhYAAK4kAACuOQAArk0AAK5kAACudgAAro8AAK6cAACungAArqAAAK6iAACurwAArrEAAK6zAACutQAArrcAAK7SAACu5AAAru8AAK+CAACvpQAAr8UAAK/lAACv5wAAr+kAAK/rAACv7QAAr+8AAK/wAACv8QAAr/MAAK/0AACv9gAAr/cAAK/5AACv+wAAr/wAAK/9AACv/wAAsAAAALAFAACwHgAAsCcAALApAACwKwAAsDQAALA2AACwOAAAsDoAALBPAACwZAAAsK0AALDRAACw+AAAsRwAALEeAACxIAAAsSIAALEkAACxJgAAsSgAALEpAACxKwAAsUQAALFlAACxZwAAsWkAALFrAACxbQAAsW8AALFxAACxcwAAsXUAALGWAACxmAAAsZoAALGcAACxngAAsaAAALGiAACxpAAAsaYAALGoAACxxgAAseQAALH3AACyCwAAsiAAALI9AACyUQAAsmcAALLiAACy5AAAsuYAALLoAACy6gAAsusAALLsAACy7QAAsu4AALLwAACy8gAAsvMAALL0AACy9gAAsvcAALNyAACzdAAAs3YAALN4AACzegAAs3sAALN8AACzfQAAs34AALOAAACzggAAs4MAALOEAACzhgAAs4cAALQCAAC0BAAAtAYAALQIAAC0CgAAtAsAALQMAAC0DQAAtA4AALQQAAC0EgAAtBMAALQUAAC0FgAAtBcAALQwAAC0MQAAtDIAALQ0AAC0rwAAtLEAALSzAAC0tQAAtLcAALS4AAC0uQAAtLoAALS7AAC0vQAAtL8AALTAAAC0wQAAtMMAALTEAAC1PwAAtUEAALVDAAC1RQAAtUcAALVIAAC1SQAAtUoAALVLAAC1TQAAtU8AALVQAAC1UQAAtVMAALVUAAC1zwAAtdEAALXTAAC11QAAtdcAALXYAAC12QAAtdoAALXbAAC13QAAtd8AALXgAAC14QAAteMAALXkAAC2XwAAtmEAALZjAAC2ZQAAtmcAALZoAAC2aQAAtmoAALZrAAC2bQAAtm8AALZwAAC2cQAAtnMAALZ0AAC27wAAtvEAALbzAAC29QAAtvcAALb4AAC2+QAAtvoAALb7AAC2/QAAtv8AALcAAAC3AQAAtwMAALcEAAC3TQAAt3EAALeYAAC3vAAAt74AALfAAAC3wgAAt8QAALfGAAC3yAAAt8kAALfLAAC35AAAuAEAALgDAAC4BQAAuAcAALgJAAC4CwAAuA0AALgPAAC4LAAAuC4AALgwAAC4MgAAuDQAALg2AAC4OAAAuDoAALg8AAC4XAAAuIcAALihAAC4ugAAuNQAALj0AAC5FwAAuZIAALmUAAC5lgAAuZgAALmaAAC5mwAAuZwAALmdAAC5ngAAuaAAALmiAAC5owAAuaQAALmmAAC5pwAAuiIAALokAAC6JgAAuigAALoqAAC6KwAAuiwAALotAAC6LgAAujAAALoyAAC6MwAAujQAALo2AAC6NwAAurIAALq0AAC6tgAAurgAALq6AAC6uwAAurwAALq9AAC6vgAAusAAALrCAAC6wwAAusQAALrGAAC6xwAAu0IAALtEAAC7RgAAu0gAALtKAAC7SwAAu0wAALtNAAC7TgAAu1AAALtSAAC7UwAAu1QAALtWAAC7VwAAu1oAALvVAAC71wAAu9kAALvbAAC73QAAu94AALvfAAC74AAAu+EAALvjAAC75QAAu+YAALvnAAC76QAAu+oAALxlAAC8ZwAAvGkAALxrAAC8bQAAvG4AALxvAAC8cAAAvHEAALxzAAC8dQAAvHYAALx3AAC8eQAAvHoAALz1AAC89wAAvPkAALz7AAC8/QAAvP4AALz/AAC9AAAAvQEAAL0DAAC9BQAAvQYAAL0HAAC9CQAAvQoAAL0bAAC9KQAAvUIAAL1QAAC9XQAAvXAAAL2HAAC9mQAAviwAAL5PAAC+bwAAvo8AAL6RAAC+kwAAvpUAAL6XAAC+mQAAvpoAAL6bAAC+nQAAvp4AAL6gAAC+oQAAvqMAAL6lAAC+pgAAvqcAAL6pAAC+qgAAvq8AAL7IAAC+0QAAvtMAAL7VAAC+3gAAvuAAAL7iAAC+5AAAvy0AAL9RAAC/eAAAv5wAAL+eAAC/oAAAv6IAAL+kAAC/pgAAv6gAAL+pAAC/qwAAv8QAAL/lAAC/5wAAv+kAAL/rAAC/7QAAv+8AAL/xAAC/8wAAv/UAAMAWAADAGAAAwBoAAMAcAADAHgAAwCAAAMAiAADAJAAAwCYAAMAoAADAowAAwKUAAMCnAADAqQAAwKsAAMCsAADArQAAwK4AAMCvAADAsQAAwLMAAMC0AADAtQAAwLcAAMC4AADBMwAAwTUAAME3AADBOQAAwTsAAME8AADBPQAAwT4AAME/AADBQQAAwUMAAMFEAADBRQAAwUcAAMFIAADBwwAAwcUAAMHHAADByQAAwcsAAMHMAADBzQAAwc4AAMHPAADB0QAAwdMAAMHUAADB1QAAwdcAAMHYAADB8QAAwfIAAMHzAADB9QAAwnAAAMJyAADCdAAAwnYAAMJ4AADCeQAAwnoAAMJ7AADCfAAAwn4AAMKAAADCgQAAwoIAAMKEAADChQAAwwAAAMMCAADDBAAAwwYAAMMIAADDCQAAwwoAAMMLAADDDAAAww4AAMMQAADDEQAAwxIAAMMUAADDFQAAw5AAAMOSAADDlAAAw5YAAMOYAADDmQAAw5oAAMObAADDnAAAw54AAMOgAADDoQAAw6IAAMOkAADDpQAAxCAAAMQiAADEJAAAxCYAAMQoAADEKQAAxCoAAMQrAADELAAAxC4AAMQwAADEMQAAxDIAAMQ0AADENQAAxLAAAMSyAADEtAAAxLYAAMS4AADEuQAAxLoAAMS7AADEvAAAxL4AAMTAAADEwQAAxMIAAMTEAADExQAAxQ4AAMUyAADFWQAAxX0AAMV/AADFgQAAxYMAAMWFAADFhwAAxYkAAMWKAADFjAAAxaUAAMXCAADFxAAAxcYAAMXIAADFygAAxcwAAMXOAADF0AAAxe0AAMXvAADF8QAAxfMAAMX1AADF9wAAxfkAAMX7AADF/QAAxngAAMZ6AADGfAAAxn4AAMaAAADGgQAAxoIAAMaDAADGhAAAxoYAAMaIAADGiQAAxooAAMaMAADGjQAAxwgAAMcKAADHDAAAxw4AAMcQAADHEQAAxxIAAMcTAADHFAAAxxYAAMcYAADHGQAAxxoAAMccAADHHQAAx5gAAMeaAADHnAAAx54AAMegAADHoQAAx6IAAMejAADHpAAAx6YAAMeoAADHqQAAx6oAAMesAADHrQAAyCgAAMgqAADILAAAyC4AAMgwAADIMQAAyDIAAMgzAADINAAAyDYAAMg4AADIOQAAyDoAAMg8AADIPQAAyLgAAMi6AADIvAAAyL4AAMjAAADIwQAAyMIAAMjDAADIxAAAyMYAAMjIAADIyQAAyMoAAMjMAADIzQAAyUgAAMlKAADJTAAAyU4AAMlQAADJUQAAyVIAAMlTAADJVAAAyVYAAMlYAADJWQAAyVoAAMlcAADJXQAAydgAAMnaAADJ3AAAyd4AAMngAADJ4QAAyeIAAMnjAADJ5AAAyeYAAMnoAADJ6QAAyeoAAMnsAADJ7QAAyoAAAMqjAADKwwAAyuMAAMrlAADK5wAAyukAAMrrAADK7QAAyu4AAMrvAADK8QAAyvIAAMr0AADK9QAAyvgAAMr6AADK+wAAyvwAAMr+AADK/wAAywQAAMsdAADLJgAAyygAAMsqAADLMwAAyzUAAMs3AADLOQAAy0wAAMuVAADLuQAAy+AAAMwEAADMBgAAzAgAAMwKAADMDAAAzA4AAMwQAADMEQAAzBMAAMwsAADMTQAAzE8AAMxRAADMUwAAzFUAAMxXAADMWQAAzFsAAMxdAADMfgAAzIAAAMyCAADMhAAAzIYAAMyIAADMigAAzIwAAMyOAADMkAAAzQsAAM0NAADNDwAAzREAAM0TAADNFAAAzRUAAM0WAADNFwAAzRkAAM0bAADNHAAAzR0AAM0fAADNIAAAzZsAAM2dAADNnwAAzaEAAM2jAADNpAAAzaUAAM2mAADNpwAAzakAAM2rAADNrAAAza0AAM2vAADNsAAAzisAAM4tAADOLwAAzjEAAM4zAADONAAAzjUAAM42AADONwAAzjkAAM47AADOPAAAzj0AAM4/AADOQAAAzlkAAM5aAADOWwAAzl0AAM7YAADO2gAAztwAAM7eAADO4AAAzuEAAM7iAADO4wAAzuQAAM7mAADO6AAAzukAAM7qAADO7AAAzu0AAM9oAADPagAAz2wAAM9uAADPcAAAz3EAAM9yAADPcwAAz3QAAM92AADPeAAAz3kAAM96AADPfAAAz30AAM9+AADP+QAAz/sAAM/9AADP/wAA0AEAANACAADQAwAA0AQAANAFAADQBwAA0AkAANAKAADQCwAA0A0AANAOAADQiQAA0IsAANCNAADQjwAA0JEAANCSAADQkwAA0JQAANCVAADQlwAA0JkAANCaAADQmwAA0J0AANCeAADRGQAA0RsAANEdAADRHwAA0SEAANEiAADRIwAA0SQAANElAADRJwAA0SkAANEqAADRKwAA0S0AANEuAADRdwAA0ZsAANHCAADR5gAA0egAANHqAADR7AAA0e4AANHwAADR8gAA0fMAANH1AADSDgAA0isAANItAADSLwAA0jEAANIzAADSNQAA0jcAANI5AADSVgAA0lgAANJaAADSXAAA0l4AANJhAADSZAAA0mcAANJpAADSewAA0o8AANKhAADStgAA0sgAANLXAADS9AAA028AANNxAADTcwAA03UAANN3AADTeAAA03kAANN6AADTewAA030AANN/AADTgAAA04EAANODAADThAAA0/8AANQBAADUAwAA1AUAANQHAADUCAAA1AkAANQKAADUCwAA1A0AANQPAADUEAAA1BEAANQTAADUFAAA1BYAANSRAADUkwAA1JUAANSXAADUmQAA1JoAANSbAADUnAAA1J0AANSfAADUoQAA1KIAANSjAADUpQAA1KYAANUhAADVIwAA1SUAANUnAADVKQAA1SoAANUrAADVLAAA1S0AANUvAADVMQAA1TIAANUzAADVNQAA1TYAANW5AADV3QAA1gEAANYkAADWSwAA1msAANaSAADWuQAA1tkAANb9AADXIQAA1yMAANclAADXJwAA1ykAANcrAADXLQAA1zAAANcyAADXNAAA1zcAANc5AADXOwAA1z4AANdAAADXQQAA10YAANdfAADXZAAA12YAANdrAADXbQAA128AANe4AADX3AAA2AMAANgnAADYKQAA2CsAANgtAADYLwAA2DEAANgzAADYNAAA2DYAANhPAADYdAAA2HYAANh4AADYegAA2HwAANh+AADYgAAA2IIAANiEAADYhgAA2KsAANitAADYrwAA2LEAANizAADYtQAA2LcAANi5AADYuwAA2L0AANi/AADZOgAA2TwAANk+AADZQAAA2UIAANlDAADZRAAA2UUAANlGAADZSAAA2UoAANlLAADZTAAA2U4AANlPAADZYAAA2WEAANljAADZ3gAA2eAAANniAADZ5AAA2eYAANnnAADZ6AAA2ekAANnqAADZ7AAA2e4AANnvAADZ8AAA2fIAANnzAADabgAA2nAAANpyAADadAAA2nYAANp3AADaeAAA2nkAANp6AADafAAA2n4AANp/AADagAAA2oIAANqDAADalAAA2pkAANqbAADanQAA2q4AANq3AADauQAA2rsAANq9AADa2AAA21MAANtVAADbVwAA21kAANtbAADbXAAA210AANteAADbXwAA22EAANtjAADbZAAA22UAANtnAADbaAAA2+MAANvlAADb5wAA2+kAANvrAADb7AAA2+0AANvuAADb7wAA2/EAANvzAADb9AAA2/UAANv3AADb+AAA3AkAANwKAADcDAAA3IcAANyJAADciwAA3I0AANyPAADckAAA3JEAANySAADckwAA3JUAANyXAADcmAAA3JkAANybAADcnAAA3RcAAN0ZAADdGwAA3R0AAN0fAADdIAAA3SEAAN0iAADdIwAA3SUAAN0nAADdKAAA3SkAAN0rAADdLAAA3UUAAN1GAADdRwAA3UkAAN3EAADdxgAA3cgAAN3KAADdzAAA3c0AAN3OAADdzwAA3dAAAN3SAADd1AAA3dUAAN3WAADd2AAA3dkAAN5UAADeVgAA3lgAAN5aAADeXAAA3l0AAN5eAADeXwAA3mAAAN5iAADeZAAA3mUAAN5mAADeaAAA3mkAAN58AADelQAA3ugAAN7qAADe7AAA3u4AAN7wAADe8gAA3vQAAN72AADe+AAA3voAAN78AADe/gAA3wAAAN8CAADfBAAA3wYAAN8IAADfCgAA3wwAAN8OAADfEAAA32MAAN9lAADfaAAA32sAAN9uAADfcQAA33QAAN93AADfegAA330AAN+AAADfgwAA34YAAN+JAADfjAAA348AAN+SAADflQAA35gAAN+bAADfngAA36AAAN+yAADfzQAA398AAN/1AADgAwAA4BAAAOAbAADgMwAA4EYAAOBkAADgegAA4IkAAOCeAADgywAA4O8AAOECAADhHQAA4TAAAOFMAADh3wAA4gIAAOIiAADiQgAA4kQAAOJGAADiSAAA4koAAOJMAADiTQAA4k4AAOJQAADiUQAA4lMAAOJUAADiVgAA4lgAAOJZAADiWgAA4lwAAOJdAADiYgAA4nsAAOKEAADihgAA4ogAAOKRAADikwAA4pUAAOKXAADi4AAA4wQAAOMrAADjTwAA41EAAONTAADjVQAA41cAAONZAADjWwAA41wAAONeAADjdwAA45gAAOOaAADjnAAA454AAOOgAADjogAA46QAAOOmAADjqAAA48kAAOPLAADjzQAA488AAOPRAADj0wAA49UAAOPXAADj2QAA49sAAORWAADkWAAA5FoAAORcAADkXgAA5F8AAORgAADkYQAA5GIAAORkAADkZgAA5GcAAORoAADkagAA5GsAAOTmAADk6AAA5OoAAOTsAADk7gAA5O8AAOTwAADk8QAA5PIAAOT0AADk9gAA5PcAAOT4AADk+gAA5PsAAOV2AADleAAA5XoAAOV8AADlfgAA5X8AAOWAAADlgQAA5YIAAOWEAADlhgAA5YcAAOWIAADligAA5YsAAOWkAADlpQAA5aYAAOWoAADmIwAA5iUAAOYnAADmKQAA5isAAOYsAADmLQAA5i4AAOYvAADmMQAA5jMAAOY0AADmNQAA5jcAAOY4AADmswAA5rUAAOa3AADmuQAA5rsAAOa8AADmvQAA5r4AAOa/AADmwQAA5sMAAObEAADmxQAA5scAAObIAADnQwAA50UAAOdHAADnSQAA50sAAOdMAADnTQAA504AAOdPAADnUQAA51MAAOdUAADnVQAA51cAAOdYAADn0wAA59UAAOfXAADn2QAA59sAAOfcAADn3QAA594AAOffAADn4QAA5+MAAOfkAADn5QAA5+cAAOfoAADoYwAA6GUAAOhnAADoaQAA6GsAAOhsAADobQAA6G4AAOhvAADocQAA6HMAAOh0AADodQAA6HcAAOh4AADowQAA6OUAAOkMAADpMAAA6TIAAOk0AADpNgAA6TgAAOk6AADpPAAA6T0AAOk/AADpWAAA6XUAAOl3AADpeQAA6XsAAOl9AADpfwAA6YEAAOmDAADpoAAA6aIAAOmkAADppgAA6agAAOmrAADprgAA6bEAAOmzAADqLgAA6jAAAOoyAADqNAAA6jYAAOo3AADqOAAA6jkAAOo6AADqPAAA6j4AAOo/AADqQAAA6kIAAOpDAADqRgAA6sEAAOrDAADqxQAA6sc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AAQTpAAEE6gABBOsAAQTsAAEE7gABBPAAAQTxAAEE8gABBPQAAQT1AAEFeAABBZwAAQXAAAEF4wABBgoAAQYqAAEGUQABBngAAQaYAAEGvAABBuAAAQbiAAEG5QABBucAAQbpAAEG6wABBu4AAQbxAAEG8wABBvUAAQb4AAEG+gABBvwAAQb/AAEHAgABBwMAAQcMAAEHJQABByoAAQcsAAEHMQABBzQAAQc2AAEHfwABB6MAAQfKAAEH7gABB/EAAQfzAAEH9QABB/cAAQf5AAEH+wABB/wAAQf/AAEIGAABCD0AAQg/AAEIQQABCEMAAQhFAAEIRwABCEkAAQhLAAEITQABCE8AAQh0AAEIdwABCHoAAQh9AAEIgAABCIMAAQiGAAEIiQABCIwAAQiPAAEIkQABCQwAAQkOAAEJEQABCRMAAQkWAAEJFwABCRgAAQkZAAEJGgABCRwAAQkeAAEJHwABCSAAAQkiAAEJIwABCTQAAQk1AAEJNwABCbIAAQm0AAEJtgABCbgAAQm7AAEJvAABCb0AAQm+AAEJvwABCcEAAQnDAAEJxAABCcUAAQnHAAEJyAABCkMAAQpFAAEKSAABCkoAAQpNAAEKTgABCk8AAQpQAAEKUQABClMAAQpVAAEKVgABClcAAQpZAAEKWgABCmsAAQpwAAEKcwABCnUAAQqGAAEKkwABCpYAAQqYAAEKmwABCp0AAQq4AAEKwQABCzwAAQs+AAELQAABC0IAAQtFAAELRgABC0cAAQtIAAELSQABC0sAAQtNAAELTgABC08AAQtRAAELUgABC80AAQvPAAEL0gABC9QAAQvXAAEL2AABC9kAAQvaAAEL2wABC90AAQvfAAEL4AABC+EAAQvjAAEL5AABC/UAAQv2AAEL+AABDHMAAQx1AAEMdwABDHkAAQx8AAEMfQABDH4AAQx/AAEMgAABDIIAAQyEAAEMhQABDIYAAQyIAAEMiQABDQQAAQ0GAAENCQABDQsAAQ0OAAENDwABDRAAAQ0RAAENEgABDRQAAQ0WAAENFwABDRgAAQ0aAAENGwABDTQAAQ01AAENNgABDTgAAQ2zAAENtQABDbcAAQ25AAENvAABDb0AAQ2+AAENvwABDcAAAQ3CAAENxAABDcUAAQ3GAAENyAABDckAAQ5EAAEORgABDkkAAQ5LAAEOTgABDk8AAQ5QAAEOUQABDlIAAQ5UAAEOVgABDlcAAQ5YAAEOWgABDlsAAQ50AAEOjQABDtQAAQ7XAAEO2gABDt0AAQ7gAAEO4wABDuYAAQ7pAAEO7AABDu8AAQ7yAAEO9QABDvgAAQ77AAEO/QABDwAAAQ8DAAEPBgABD00AAQ9QAAEPUwABD1YAAQ9ZAAEPXAABD18AAQ9iAAEPZQABD2gAAQ9rAAEPbgABD3EAAQ90AAEPdwABD3oAAQ99AAEPgAABD4IAAQ+UAAEPngABD6gAAQ+xAAEP0gABD9sAAQ/jAAEP7gABEAkAARASAAEQKgABEEAAARBqAAEQhQABEJkAAREsAAERTwABEW8AARGPAAERkQABEZMAARGVAAERlwABEZoAARGbAAERnAABEZ8AARGgAAERogABEaMAARGlAAERqAABEakAARGqAAERrQABEa4AARG3AAER0AABEdkAARHbAAER3QABEeYAARHpAAER7AABEe4AARI3AAESWwABEoIAARKmAAESqQABEqsAARKtAAESrwABErEAARKzAAEStAABErcAARLQAAES8QABEvMAARL1AAES9wABEvkAARL7AAES/QABEv8AARMBAAETIgABEyUAARMoAAETKwABEy4AARMxAAETNAABEzcAARM6AAETPAABE7cAARO5AAETuwABE70AARPAAAETwQABE8IAARPDAAETxAABE8YAARPIAAETyQABE8oAARPMAAETzQABFEgAARRKAAEUTAABFE4AARRRAAEUUgABFFMAARRUAAEUVQABFFcAARRZAAEUWgABFFsAARRdAAEUXgABFNkAARTbAAEU3gABFOAAARTjAAEU5AABFOUAARTmAAEU5wABFOkAARTrAAEU7AABFO0AARTvAAEU8AABFQkAARUKAAEVCwABFQ0AARWIAAEVigABFYwAARWOAAEVkQABFZIAARWTAAEVlAABFZUAARWXAAEVmQABFZoAARWbAAEVnQABFZ4AARYZAAEWGwABFh0AARYfAAEWIgABFiMAARYkAAEWJQABFiYAARYoAAEWKgABFisAARYsAAEWLgABFi8AARaqAAEWrAABFq4AARawAAEWswABFrQAARa1AAEWtgABFrcAARa5AAEWuwABFrwAARa9AAEWvwABFsAAARc7AAEXPQABFz8AARdBAAEXRAABF0UAARdGAAEXRwABF0gAARdKAAEXTAABF00AARdOAAEXUAABF1EAARfMAAEXzgABF9AAARfSAAEX1QABF9YAARfXAAEX2AABF9kAARfbAAEX3QABF94AARffAAEX4QABF+IAARgrAAEYTwABGHYAARiaAAEYnQABGJ8AARihAAEYowABGKUAARinAAEYqAABGKsAARjEAAEY4QABGOMAARjlAAEY5wABGOkAARjrAAEY7QABGO8AARkMAAEZDwABGRIAARkVAAEZGAABGRsAARkeAAEZIQABGSMAARmeAAEZoAABGaIAARmkAAEZpwABGagAARmpAAEZqgABGasAARmtAAEZrwABGbAAARmxAAEZswABGbQAARovAAEaMQABGjMAARo1AAEaOAABGjkAARo6AAEaOwABGjwAARo+AAEaQAABGkEAARpCAAEaRAABGkUAARrAAAEawgABGsQAARrGAAEayQABGsoAARrLAAEazAABGs0AARrPAAEa0QABGtIAARrTAAEa1QABGtYAARtRAAEbUwABG1UAARtXAAEbWgABG1sAARtcAAEbXQABG14AARtgAAEbYgABG2MAARtkAAEbZgABG2cAARviAAEb5AABG+YAARvoAAEb6wABG+wAARvtAAEb7gABG+8AARvxAAEb8wABG/QAARv1AAEb9wABG/gAARxzAAEcdQABHHcAARx5AAEcfAABHH0AARx+AAEcfwABHIAAARyCAAEchAABHIUAARyGAAEciAABHIkAAR0EAAEdBgABHQgAAR0KAAEdDQABHQ4AAR0PAAEdEAABHREAAR0TAAEdFQABHRYAAR0XAAEdGQABHRoAAR2tAAEd0AABHfAAAR4QAAEeEgABHhQAAR4WAAEeGAABHhsAAR4cAAEeHQABHiAAAR4hAAEeIwABHiQAAR4mAAEeKQABHioAAR4rAAEeLgABHi8AAR44AAEeUQABHloAAR5cAAEeXgABHmcAAR5qAAEebQABHm8AAR64AAEe3AABHwMAAR8nAAEfKgABHywAAR8uAAEfMAABHzIAAR80AAEfNQABHzgAAR9RAAEfcgABH3QAAR92AAEfeAABH3oAAR98AAEffgABH4AAAR+CAAEfowABH6YAAR+pAAEfrAABH68AAR+yAAEftQABH7gAAR+7AAEfvQABIDgAASA6AAEgPAABID4AASBBAAEgQgABIEMAASBEAAEgRQABIEcAASBJAAEgSgABIEsAASBNAAEgTgABIMkAASDLAAEgzQABIM8AASDSAAEg0wABINQAASDVAAEg1gABINgAASDaAAEg2wABINwAASDeAAEg3wABIVoAASFcAAEhXwABIWEAASFkAAEhZQABIWYAASFnAAEhaAABIWoAASFsAAEhbQABIW4AASFwAAEhcQABIYoAASGLAAEhjAABIY4AASIJAAEiCwABIg0AASIPAAEiEgABIhMAASIUAAEiFQABIhYAASIYAAEiGgABIhsAASIcAAEiHgABIh8AASKaAAEinAABIp4AASKgAAEiowABIqQAASKlAAEipgABIqcAASKpAAEiqwABIqwAASKtAAEirwABIrAAASMrAAEjLQABIy8AASMxAAEjNAABIzUAASM2AAEjNwABIzgAASM6AAEjPAABIz0AASM+AAEjQAABI0EAASO8AAEjvgABI8AAASPCAAEjxQABI8YAASPHAAEjyAABI8kAASPLAAEjzQABI84AASPPAAEj0QABI9IAASRNAAEkTwABJFEAASRTAAEkVgABJFcAASRYAAEkWQABJFoAASRcAAEkXgABJF8AASRgAAEkYgABJGMAASSsAAEk0AABJPcAASUbAAElHgABJSAAASUiAAElJAABJSYAASUoAAElKQABJSwAASVFAAElYgABJWQAASVmAAElaAABJWoAASVsAAElbgABJXAAASWNAAElkAABJZMAASWWAAElmQABJZwAASWfAAElogABJaQAASYfAAEmIQABJiMAASYlAAEmKAABJikAASYqAAEmKwABJiwAASYuAAEmMAABJjEAASYyAAEmNAABJjUAASawAAEmsgABJrQAASa2AAEmuQABJroAASa7AAEmvAABJr0AASa/AAEmwQABJsIAASbDAAEmxQABJsYAASdBAAEnQwABJ0UAASdHAAEnSgABJ0sAASdMAAEnTQABJ04AASdQAAEnUgABJ1MAASdUAAEnVgABJ1cAASfSAAEn1AABJ9cAASfZAAEn3AABJ90AASfeAAEn3wABJ+AAASfiAAEn5AABJ+UAASfmAAEn6AABJ+kAASfsAAEoZwABKGkAAShrAAEobQABKHAAAShxAAEocgABKHMAASh0AAEodgABKHgAASh5AAEoegABKHwAASh9AAEo+AABKPoAASj8AAEo/gABKQEAASkCAAEpAwABKQQAASkFAAEpBwABKQkAASkKAAEpCwABKQ0AASkOAAEpiQABKYsAASmNAAEpjwABKZIAASmTAAEplAABKZUAASmWAAEpmAABKZoAASmbAAEpnAABKZ4AASmfAAEqMgABKlUAASp1AAEqlQABKpcAASqZAAEqmwABKp0AASqgAAEqoQABKqIAASqlAAEqpgABKqgAASqpAAEqqwABKq4AASqvAAEqsAABKrMAASq0AAEqvQABKtYAASrfAAEq4QABKuMAASrsAAEq7wABKvIAASr0AAErPQABK2EAASuIAAErrAABK68AASuxAAErswABK7UAASu3AAEruQABK7oAASu9AAEr1gABK/cAASv5AAEr+wABK/0AASv/AAEsAQABLAMAASwFAAEsBwABLCgAASwrAAEsLgABLDEAASw0AAEsNwABLDoAASw9AAEsQAABLEIAASy9AAEsvwABLMEAASzDAAEsxgABLMcAASzIAAEsyQABLMoAASzMAAEszgABLM8AASzQAAEs0gABLNMAAS1OAAEtUAABLVIAAS1UAAEtVwABLVgAAS1ZAAEtWgABLVsAAS1dAAEtXwABLWAAAS1hAAEtYwABLWQAAS3fAAEt4QABLeQAAS3mAAEt6QABLeoAAS3rAAEt7AABLe0AAS3vAAEt8QABLfIAAS3zAAEt9QABLfYAAS4PAAEuEAABLhEAAS4TAAEujgABLpAAAS6SAAEulAABLpcAAS6YAAEumQABLpoAAS6bAAEunQABLp8AAS6gAAEuoQABLqMAAS6kAAEvHwABLyEAAS8jAAEvJQABLygAAS8pAAEvKgABLysAAS8sAAEvLgABLzAAAS8xAAEvMgABLzQAAS81AAEvsAABL7IAAS+0AAEvtgABL7kAAS+6AAEvuwABL7wAAS+9AAEvvwABL8EAAS/CAAEvwwABL8UAAS/GAAEwQQABMEMAATBFAAEwRwABMEoAATBLAAEwTAABME0AATBOAAEwUAABMFIAATBTAAEwVAABMFYAATBXAAEw0gABMNQAATDWAAEw2AABMNsAATDcAAEw3QABMN4AATDfAAEw4QABMOMAATDkAAEw5QABMOcAATDoAAExMQABMVUAATF8AAExoAABMaMAATGlAAExpwABMakAATGrAAExrQABMa4AATGxAAExygABMecAATHpAAEx6wABMe0AATHvAAEx8QABMfMAATH1AAEyEgABMhUAATIYAAEyGwABMh4AATIhAAEyJAABMicAATIpAAEypAABMqYAATKoAAEyqgABMq0AATKuAAEyrwABMrAAATKxAAEyswABMrUAATK2AAEytwABMrkAATK6AAEzNQABMzcAATM5AAEzOwABMz4AATM/AAEzQAABM0EAATNCAAEzRAABM0YAATNHAAEzSAABM0oAATNLAAEzxgABM8gAATPKAAEzzAABM88AATPQAAEz0QABM9IAATPTAAEz1QABM9cAATPYAAEz2QABM9sAATPcAAE0VwABNFkAATRbAAE0XQABNGAAATRhAAE0YgABNGMAATRkAAE0ZgABNGgAATRpAAE0agABNGwAATRtAAE06AABNOoAATTsAAE07gABNPEAATTyAAE08wABNPQAATT1AAE09wABNPkAATT6AAE0+wABNP0AATT+AAE1eQABNXsAATV9AAE1fwABNYIAATWDAAE1hAABNYUAATWGAAE1iAABNYoAATWLAAE1jAABNY4AATWPAAE2CgABNgwAATYOAAE2EAABNhMAATYUAAE2FQABNhYAATYXAAE2GQABNhsAATYcAAE2HQABNh8AATYgAAE2swABNtYAATb2AAE3FgABNxgAATcaAAE3HAABNx4AATchAAE3IgABNyMAATcmAAE3JwABNykAATcqAAE3LAABNy8AATcwAAE3MQABNzQAATc1AAE3OgABN1MAATdcAAE3XgABN2AAATdpAAE3bAABN28AATdxAAE3ugABN94AATgFAAE4KQABOCwAATguAAE4MAABODIAATg0AAE4NgABODcAATg6AAE4UwABOHQAATh2AAE4eAABOHoAATh8AAE4fgABOIAAATiCAAE4hAABOKUAATioAAE4qwABOK4AATixAAE4tAABOLcAATi6AAE4vQABOL8AATk6AAE5PAABOT4AATlAAAE5QwABOUQAATlFAAE5RgABOUcAATlJAAE5SwABOUwAATlNAAE5TwABOVAAATnLAAE5zQABOc8AATnRAAE51AABOdUAATnWAAE51wABOdgAATnaAAE53AABOd0AATneAAE54AABOeEAATpcAAE6XgABOmEAATpjAAE6ZgABOmcAATpoAAE6aQABOmoAATpsAAE6bgABOm8AATpwAAE6cgABOnMAATqMAAE6jQABOo4AATqQAAE7CwABOw0AATsPAAE7EQABOxQAATsVAAE7FgABOxcAATsYAAE7GgABOxwAATsdAAE7HgABOyAAATshAAE7nAABO54AATugAAE7ogABO6UAATumAAE7pwABO6gAATupAAE7qwABO60AATuuAAE7rwABO7EAATuyAAE8LQABPC8AATwxAAE8MwABPDYAATw3AAE8OAABPDkAATw6AAE8PAABPD4AATw/AAE8QAABPEIAATxDAAE8vgABPMAAATzCAAE8xAABPMcAATzIAAE8yQABPMoAATzLAAE8zQABPM8AATzQAAE80QABPNMAATzUAAE9TwABPVEAAT1TAAE9VQABPVgAAT1ZAAE9WgABPVsAAT1cAAE9XgABPWAAAT1hAAE9YgABPWQAAT1lAAE9rgABPdIAAT35AAE+HQABPiAAAT4iAAE+JAABPiYAAT4oAAE+KgABPisAAT4uAAE+RwABPmQAAT5mAAE+aAABPmoAAT5sAAE+bgABPnAAAT5yAAE+jwABPpIAAT6VAAE+mAABPpsAAT6eAAE+oQABPqQAAT6mAAE/IQABPyMAAT8lAAE/JwABPyoAAT8rAAE/LAABPy0AAT8uAAE/MAABPzIAAT8zAAE/NAABPzYAAT83AAE/sgABP7QAAT+2AAE/uAABP7sAAT+8AAE/vQABP74AAT+/AAE/wQABP8MAAT/EAAE/xQABP8cAAT/IAAFAQwABQEUAAUBHAAFASQABQEwAAUBNAAFATgABQE8AAUBQAAFAUgABQFQAAUBVAAFAVgABQFgAAUBZAAFA1AABQNYAAUDYAAFA2gABQN0AAUDeAAFA3wABQOAAAUDhAAFA4wABQOUAAUDmAAFA5wABQOkAAUDqAAFBZQABQWcAAUFpAAFBawABQW4AAUFvAAFBcAABQXEAAUFyAAFBdAABQXYAAUF3AAFBeAABQXoAAUF7AAFB9gABQfgAAUH6AAFB/AABQf8AAUIAAAFCAQABQgIAAUIDAAFCBQABQgcAAUIIAAFCCQABQgsAAUIMAAFChwABQokAAUKLAAFCjQABQpAAAUKRAAFCkgABQpMAAUKUAAFClgABQpgAAUKZAAFCmgABQpwAAUKdAAFDMAABQ1M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AAVShAAFUogABVKMAAVSkAAFUpgABVKgAAVSpAAFUqgABVKwAAVStAAFVKAABVSoAAVUsAAFVLgABVTEAAVUyAAFVMwABVTQAAVU1AAFVNwABVTkAAVU6AAFVOwABVT0AAVU+AAFVuQABVbsAAVW9AAFVvwABVcIAAVXDAAFVxAABVcUAAVXGAAFVyAABVcoAAVXLAAFVzAABVc4AAVXPAAFWSgABVkwAAVZOAAFWUAABVlMAAVZUAAFWVQABVlYAAVZXAAFWWQABVlsAAVZcAAFWXQABVl8AAVZgAAFWqQABVs0AAVb0AAFXGAABVxsAAVcdAAFXHwABVyEAAVcjAAFXJQABVyYAAVcpAAFXQgABV18AAVdhAAFXYwABV2UAAVdnAAFXaQABV2sAAVdtAAFXigABV40AAVeQAAFXkwABV5YAAVeZAAFXnAABV58AAVehAAFYHAABWB4AAVggAAFYIgABWCUAAVgmAAFYJwABWCgAAVgpAAFYKwABWC0AAVguAAFYLwABWDEAAVgyAAFYrQABWK8AAVixAAFYswABWLYAAVi3AAFYuAABWLkAAVi6AAFYvAABWL4AAVi/AAFYwAABWMIAAVjDAAFZPgABWUAAAVlCAAFZRAABWUcAAVlIAAFZSQABWUoAAVlLAAFZTQABWU8AAVlQAAFZUQABWVMAAVlUAAFZzwABWdEAAVnTAAFZ1QABWdgAAVnZAAFZ2gABWdsAAVncAAFZ3gABWeAAAVnhAAFZ4gABWeQAAVnlAAFaYAABWmIAAVpkAAFaZgABWmkAAVpqAAFaawABWmwAAVptAAFabwABWnEAAVpyAAFacwABWnUAAVp2AAFa8QABWvMAAVr1AAFa9wABWvoAAVr7AAFa/AABWv0AAVr+AAFbAAABWwIAAVsDAAFbBAABWwYAAVsHAAFbggABW4QAAVuGAAFbiAABW4sAAVuMAAFbjQABW44AAVuPAAFbkQABW5MAAVuUAAFblQABW5cAAVuYAAFcKwABXE4AAVxuAAFcjgABXJAAAVySAAFclAABXJYAAVyZAAFcmgABXJsAAVyeAAFcnwABXKEAAVyiAAFcpAABXKcAAVyoAAFcqQABXKwAAVytAAFcsgABXMsAAVzUAAFc1gABXNgAAVzhAAFc5AABXOcAAVzpAAFdMgABXVYAAV19AAFdoQABXaQAAV2mAAFdqAABXaoAAV2sAAFdrgABXa8AAV2yAAFdywABXewAAV3uAAFd8AABXfIAAV30AAFd9gABXfgAAV36AAFd/AABXh0AAV4gAAFeIwABXiYAAV4pAAFeLAABXi8AAV4yAAFeNQABXjcAAV6yAAFetAABXrYAAV64AAFeuwABXrwAAV69AAFevgABXr8AAV7BAAFewwABXsQAAV7FAAFexwABXsgAAV9DAAFfRQABX0cAAV9JAAFfTAABX00AAV9OAAFfTwABX1AAAV9SAAFfVAABX1UAAV9WAAFfWAABX1kAAV/UAAFf1gABX9kAAV/bAAFf3gABX98AAV/gAAFf4QABX+IAAV/kAAFf5gABX+cAAV/oAAFf6gABX+sAAWAEAAFgBQABYAYAAWAIAAFggwABYIUAAWCHAAFgiQABYIwAAWCNAAFgjgABYI8AAWCQAAFgkgABYJQAAWCVAAFglgABYJgAAWCZAAFhFAABYRYAAWEYAAFhGgABYR0AAWEeAAFhHwABYSAAAWEhAAFhIwABYSUAAWEmAAFhJwABYSkAAWEqAAFhpQABYacAAWGpAAFhqwABYa4AAWGvAAFhsAABYbEAAWGyAAFhtAABYbYAAWG3AAFhuAABYboAAWG7AAFiNgABYjgAAWI6AAFiPAABYj8AAWJAAAFiQQABYkIAAWJDAAFiRQABYkcAAWJIAAFiSQABYksAAWJMAAFixwABYskAAWLLAAFizQABYtAAAWLRAAFi0gABYtMAAWLUAAFi1gABYtgAAWLZAAFi2gABYtwAAWLdAAFjJgABY0oAAWNxAAFjlQABY5gAAWOaAAFjnAABY54AAWOgAAFjogABY6MAAWOmAAFjvwABY9wAAWPeAAFj4AABY+IAAWPkAAFj5gABY+gAAWPqAAFkBwABZAoAAWQNAAFkEAABZBMAAWQWAAFkGQABZBwAAWQeAAFkmQABZJsAAWSdAAFknwABZKIAAWSjAAFkpAABZKUAAWSmAAFkqAABZKoAAWSrAAFkrAABZK4AAWSvAAFlKgABZSwAAWUuAAFlMAABZTMAAWU0AAFlNQABZTYAAWU3AAFlOQABZTsAAWU8AAFlPQABZT8AAWVAAAFluwABZb0AAWW/AAFlwQABZcQAAWXFAAFlxgABZccAAWXIAAFlygABZcwAAWXNAAFlzgABZdAAAWXRAAFmTAABZk4AAWZRAAFmUwABZlYAAWZXAAFmWAABZlkAAWZaAAFmXAABZl4AAWZfAAFmYAABZmIAAWZjAAFm3gABZuAAAWbiAAFm5AABZucAAWboAAFm6QABZuoAAWbrAAFm7QABZu8AAWbwAAFm8QABZvMAAWb0AAFnbwABZ3EAAWdzAAFndQABZ3gAAWd5AAFnegABZ3sAAWd8AAFnfgABZ4AAAWeBAAFnggABZ4QAAWeFAAFoAAABaAIAAWgEAAFoBgABaAkAAWgKAAFoCwABaAwAAWgNAAFoDwABaBEAAWgSAAFoEwABaBUAAWgWAAFoqQABaMwAAWjsAAFpDAABaQ4AAWkQAAFpEgABaRQAAWkXAAFpGAABaRkAAWkcAAFpHQABaR8AAWkgAAFpIgABaSUAAWkmAAFpJwABaSoAAWkrAAFpMAABaUkAAWlSAAFpVAABaVYAAWlfAAFpYgABaWUAAWlnAAFpsAABadQAAWn7AAFqHwABaiIAAWokAAFqJgABaigAAWoqAAFqLAABai0AAWowAAFqSQABamoAAWpsAAFqbgABanAAAWpyAAFqdAABanYAAWp4AAFqegABapsAAWqeAAFqoQABaqQAAWqnAAFqqgABaq0AAWqwAAFqswABarUAAWswAAFrMgABazQAAWs2AAFrOQABazoAAWs7AAFrPAABaz0AAWs/AAFrQQABa0IAAWtDAAFrRQABa0YAAWvBAAFrwwABa8UAAWvHAAFrygABa8sAAWvMAAFrzQABa84AAWvQAAFr0gABa9MAAWvUAAFr1gABa9cAAWxSAAFsVAABbFcAAWxZAAFsXAABbF0AAWxeAAFsXwABbGAAAWxiAAFsZAABbGUAAWxmAAFsaAABbGkAAWyCAAFsgwABbIQAAWyGAAFtAQABbQMAAW0FAAFtBwABbQoAAW0LAAFtDAABbQ0AAW0OAAFtEAABbRIAAW0TAAFtFAABbRYAAW0XAAFtkgABbZQAAW2WAAFtmAABbZsAAW2cAAFtnQABbZ4AAW2fAAFtoQABbaMAAW2kAAFtpQABbacAAW2oAAFuIwABbiUAAW4nAAFuKQABbiwAAW4tAAFuLgABbi8AAW4wAAFuMgABbjQAAW41AAFuNgABbjgAAW45AAFutAABbrYAAW64AAFuugABbr0AAW6+AAFuvwABbsAAAW7BAAFuwwABbsUAAW7GAAFuxwABbskAAW7KAAFvRQABb0cAAW9JAAFvSwABb04AAW9PAAFvUAABb1EAAW9SAAFvVAABb1YAAW9XAAFvWAABb1oAAW9bAAFvpAABb8gAAW/vAAFwEwABcBYAAXAYAAFwGgABcBwAAXAeAAFwIAABcCEAAXAkAAFwPQABcFoAAXBcAAFwXgABcGAAAXBiAAFwZAABcGYAAXBoAAFwhQABcIgAAXCLAAFwjgABcJEAAXCUAAFwlwABcJoAAXCcAAFxFwABcRkAAXEbAAFxHQABcSAAAXEhAAFxIgABcSMAAXEkAAFxJgABcSgAAXEpAAFxKgABcSwAAXEtAAFxqAABcaoAAXGsAAFxrgABcbEAAXGyAAFxswABcbQAAXG1AAFxtwABcbkAAXG6AAFxuwABcb0AAXG+AAFyOQABcjsAAXI9AAFyPwABckIAAXJDAAFyRAABckUAAXJGAAFySAABckoAAXJLAAFyTAABck4AAXJPAAFyygABcswAAXLPAAFy0QABctQAAXLVAAFy1gABctcAAXLYAAFy2gABctwAAXLdAAFy3gABcuAAAXLhAAFzXAABc14AAXNgAAFzYgABc2UAAXNmAAFzZwABc2gAAXNpAAFzawABc20AAXNuAAFzbwABc3EAAXNyAAFz7QABc+8AAXPxAAFz8wABc/YAAXP3AAFz+AABc/kAAXP6AAFz/AABc/4AAXP/AAF0AAABdAIAAXQDAAF0fgABdIAAAXSCAAF0hAABdIcAAXSIAAF0iQABdIoAAXSLAAF0jQABdI8AAXSQAAF0kQABdJMAAXSUAAF1JwABdUoAAXVqAAF1igABdYwAAXWOAAF1kAABdZIAAXWVAAF1lgABdZcAAXWaAAF1mwABdZ0AAXWeAAF1oQABdaQAAXWlAAF1pgABdakAAXWqAAF1rwABdcgAAXXRAAF10wABddUAAXXeAAF14QABdeQAAXXmAAF2LwABdlMAAXZ6AAF2ngABdqEAAXajAAF2pQABdqcAAXapAAF2qwABdqwAAXavAAF2yAABdukAAXbrAAF27QABdu8AAXbxAAF28wABdvUAAXb3AAF2+QABdxoAAXcdAAF3IAABdyMAAXcmAAF3KQABdywAAXcvAAF3MgABdzQAAXevAAF3sQABd7MAAXe1AAF3uAABd7kAAXe6AAF3uwABd7wAAXe+AAF3wAABd8EAAXfCAAF3xAABd8UAAXhAAAF4QgABeEQAAXhGAAF4SQABeEoAAXhLAAF4TAABeE0AAXhPAAF4UQABeFIAAXhTAAF4VQABeFYAAXjRAAF40wABeNYAAXjYAAF42wABeNwAAXjdAAF43gABeN8AAXjhAAF44wABeOQAAXjlAAF45wABeOgAAXkBAAF5AgABeQMAAXkFAAF5gAABeYIAAXmEAAF5hgABeYkAAXmKAAF5iwABeYwAAXmNAAF5jwABeZEAAXmSAAF5kwABeZUAAXmWAAF6EQABehMAAXoVAAF6FwABehoAAXobAAF6HAABeh0AAXoeAAF6IAABeiIAAXojAAF6JAABeiYAAXonAAF6ogABeqQAAXqmAAF6qAABeqsAAXqsAAF6rQABeq4AAXqvAAF6sQABerMAAXq0AAF6tQABercAAXq4AAF7MwABezUAAXs3AAF7OQABezwAAXs9AAF7PgABez8AAXtAAAF7QgABe0QAAXtFAAF7RgABe0gAAXtJAAF7xAABe8YAAXvIAAF7ygABe80AAXvOAAF7zwABe9AAAXvRAAF70wABe9UAAXvWAAF71wABe9kAAXvaAAF8IwABfEcAAXxuAAF8kgABfJUAAXyXAAF8mQABfJsAAXydAAF8nwABfKAAAXyjAAF8vAABfNkAAXzbAAF83QABfN8AAXzhAAF84wABfOUAAXznAAF9BAABfQcAAX0KAAF9DQABfRAAAX0TAAF9FgABfRkAAX0bAAF9lgABfZgAAX2aAAF9nAABfZ8AAX2gAAF9oQABfaIAAX2jAAF9pQABfacAAX2oAAF9qQABfasAAX2sAAF+JwABfikAAX4rAAF+LQABfjAAAX4xAAF+MgABfjMAAX40AAF+NgABfjgAAX45AAF+OgABfjwAAX49AAF+uAABfroAAX68AAF+vgABfsEAAX7CAAF+wwABfsQAAX7FAAF+xwABfskAAX7KAAF+ywABfs0AAX7OAAF/SQABf0sAAX9OAAF/UAABf1MAAX9UAAF/VQABf1YAAX9XAAF/WQABf1sAAX9cAAF/XQABf18AAX9gAAF/4wABgAcAAYArAAGATgABgHUAAYCVAAGAvAABgOMAAYEDAAGBJwABgUsAAYFNAAGBUAABgVIAAYFUAAGBVgABgVkAAYFcAAGBXgABgWAAAYFjAAGBZQABgWcAAYFqAAGBbQABgW4AAYF3AAGBkAABgZUAAYGXAAGBnAABgZ8AAYGhAAGB6gABgg4AAYI1AAGCWQABglwAAYJeAAGCYAABgmIAAYJkAAGCZgABgmcAAYJqAAGCgwABgqgAAYKqAAGCrAABgq4AAYKwAAGCsgABgrQAAYK2AAGCuAABgroAAYLfAAGC4gABguUAAYLoAAGC6wABgu4AAYLxAAGC9AABgvcAAYL6AAGC/AABg3cAAYN5AAGDfAABg34AAYOBAAGDggABg4MAAYOEAAGDhQABg4cAAYOJAAGDigABg4sAAYONAAGDjgABg58AAYOgAAGDogABhB0AAYQfAAGEIQABhCMAAYQmAAGEJwABhCgAAYQpAAGEKgABhCwAAYQuAAGELwABhDAAAYQyAAGEMwABhK4AAYSwAAGEswABhLUAAYS4AAGEuQABhLoAAYS7AAGEvAABhL4AAYTAAAGEwQABhMIAAYTEAAGExQABhNYAAYTbAAGE3gABhOAAAYTxAAGE+gABhP0AAYUAAAGFAgABhR0AAYWYAAGFmgABhZwAAYWeAAGFoQABhaIAAYWjAAGFpAABhaUAAYWnAAGFqQABhaoAAYWrAAGFrQABha4AAYYpAAGGKwABhi4AAYYwAAGGMwABhjQAAYY1AAGGNgABhjcAAYY5AAGGOwABhjwAAYY9AAGGPwABhkAAAYZRAAGGUgABhlQAAYbPAAGG0QABhtMAAYbVAAGG2AABhtkAAYbaAAGG2wABhtwAAYbeAAGG4AABhuEAAYbiAAGG5AABhuUAAYdgAAGHYgABh2UAAYdnAAGHagABh2sAAYdsAAGHbQABh24AAYdwAAGHcgABh3MAAYd0AAGHdgABh3cAAYeQAAGHkQABh5IAAYeUAAGIDwABiBEAAYgTAAGIFQABiBgAAYgZAAGIGgABiBsAAYgcAAGIHgABiCAAAYghAAGIIgABiCQAAYglAAGIoAABiKIAAYilAAGIpwABiKoAAYirAAGIrAABiK0AAYiuAAGIsAABiLIAAYizAAGItAABiLYAAYi3AAGI1QABiO4AAYllAAGJaAABiWsAAYluAAGJcQABiXQAAYl3AAGJegABiX0AAYmAAAGJgwABiYYAAYmJAAGJjAABiY8AAYmSAAGJlQABiZgAAYmbAAGJngABiaEAAYmkAAGJpwABiaoAAYmtAAGJsAABibMAAYm2AAGJuQABibwAAYozAAGKNgABijkAAYo8AAGKPwABikIAAYpFAAGKSAABiksAAYpOAAGKUQABilQAAYpXAAGKWgABil0AAYpgAAGKYwABimYAAYppAAGKbAABim8AAYpyAAGKdQABingAAYp7AAGKfgABioEAAYqEAAGKhwABiooAAYqMAAGKrAABir4AAYrNAAGK7QABiwEAAYsWAAGLHwABiy0AAYs3AAGLQAABi1UAAYtgAAGLewABi4MAAYuZAAGLqwABi8MAAYvNAAGL0gABi+0AAYv7AAGMBAABjCEAAYw/AAGMUQABjGQAAYyZAAGMqAABjTsAAY1eAAGNfgABjZ4AAY2gAAGNogABjaQAAY2mAAGNqQABjaoAAY2rAAGNrgABja8AAY2xAAGNsgABjbQAAY23AAGNuAABjbkAAY28AAGNvQABjcIAAY3bAAGN5AABjeYAAY3oAAGN8QABjfQAAY33AAGN+QABjkIAAY5mAAGOjQABjrEAAY60AAGOtgABjrgAAY66AAGOvAABjr4AAY6/AAGOwgABjtsAAY78AAGO/gABjwAAAY8CAAGPBAABjwYAAY8IAAGPCgABjwwAAY8tAAGPMAABjzMAAY82AAGPOQABjzwAAY8/AAGPQgABj0UAAY9HAAGPwgABj8QAAY/GAAGPyAABj8sAAY/MAAGPzQABj84AAY/PAAGP0QABj9MAAY/UAAGP1QABj9cAAY/YAAGQUwABkFUAAZBXAAGQWQABkFwAAZBdAAGQXgABkF8AAZBgAAGQYgABkGQAAZBlAAGQZgABkGgAAZBpAAGQ5AABkOYAAZDpAAGQ6wABkO4AAZDvAAGQ8AABkPEAAZDyAAGQ9AABkPYAAZD3AAGQ+AABkPoAAZD7AAGRFAABkRUAAZEWAAGRGAABkZMAAZGVAAGRlwABkZkAAZGcAAGRnQABkZ4AAZGfAAGRoAABkaIAAZGkAAGRpQABkaYAAZGoAAGRqQABkiQAAZImAAGSKAABkioAAZItAAGSLgABki8AAZIwAAGSMQABkjMAAZI1AAGSNgABkjcAAZI5AAGSOgABkrUAAZK3AAGSuQABkrsAAZK+AAGSvwABksAAAZLBAAGSwgABksQAAZLGAAGSxwABksgAAZLKAAGSywABk0YAAZNIAAGTSgABk0wAAZNPAAGTUAABk1EAAZNSAAGTUwABk1UAAZNXAAGTWAABk1kAAZNbAAGTXAABk9cAAZPZAAGT2wABk90AAZPgAAGT4QABk+IAAZPjAAGT5AABk+YAAZPoAAGT6QABk+oAAZPsAAGT7QABlDYAAZRaAAGUgQABlKUAAZSoAAGUqgABlKwAAZSuAAGUsAABlLIAAZSzAAGUtgABlM8AAZTsAAGU7gABlPAAAZTyAAGU9AABlPYAAZT4AAGU+gABlRcAAZUaAAGVHQABlSAAAZUjAAGVJgABlSkAAZUsAAGVLgABlakAAZWrAAGVrQABla8AAZWyAAGVswABlbQAAZW1AAGVtgABlbgAAZW6AAGVuwABlbwAAZW+AAGVvwABljoAAZY8AAGWPgABlkAAAZZDAAGWRAABlkUAAZZGAAGWRwABlkkAAZZLAAGWTAABlk0AAZZPAAGWUAABlssAAZbNAAGWzwABltEAAZbUAAGW1QABltYAAZbXAAGW2AABltoAAZbcAAGW3QABlt4AAZbgAAGW4QABl1wAAZdeAAGXYAABl2IAAZdlAAGXZgABl2cAAZdoAAGXaQABl2sAAZdtAAGXbgABl28AAZdxAAGXcgABl+0AAZfvAAGX8QABl/MAAZf2AAGX9wABl/gAAZf5AAGX+gABl/wAAZf+AAGX/wABmAAAAZgCAAGYAwABmH4AAZiAAAGYggABmIQAAZiHAAGYiAABmIkAAZiKAAGYiwABmI0AAZiPAAGYkAABmJEAAZiTAAGYlAABmQ8AAZkRAAGZEwABmRUAAZkYAAGZGQABmRoAAZkbAAGZHAABmR4AAZkgAAGZIQABmSIAAZkkAAGZJQABmbgAAZnbAAGZ+wABmhsAAZodAAGaHwABmiEAAZojAAGaJgABmicAAZooAAGaKwABmiwAAZouAAGaLwABmjEAAZo0AAGaNQABmjYAAZo5AAGaOgABmj8AAZpYAAGaYQABmmMAAZplAAGabgABmnEAAZp0AAGadgABmr8AAZrjAAGbCgABmy4AAZsxAAGbMwABmzUAAZs3AAGbOQABmzsAAZs8AAGbPwABm1gAAZt5AAGbewABm30AAZt/AAGbgQABm4MAAZuFAAGbhwABm4kAAZuqAAGbrQABm7AAAZuzAAGbtgABm7kAAZu8AAGbvwABm8IAAZvEAAGcPwABnEEAAZxDAAGcRQABnEgAAZxJAAGcSgABnEsAAZxMAAGcTgABnFAAAZxRAAGcUgABnFQAAZxVAAGc0AABnNIAAZzUAAGc1gABnNkAAZzaAAGc2wABnNwAAZzdAAGc3wABnOEAAZziAAGc4wABnOUAAZzmAAGdYQABnWMAAZ1mAAGdaAABnWsAAZ1sAAGdbQABnW4AAZ1vAAGdcQABnXMAAZ10AAGddQABnXcAAZ14AAGdkQABnZIAAZ2TAAGdlQABnhAAAZ4SAAGeFAABnhYAAZ4ZAAGeGgABnhsAAZ4cAAGeHQABnh8AAZ4hAAGeIgABniMAAZ4lAAGeJgABnqEAAZ6jAAGepQABnqcAAZ6qAAGeqwABnqwAAZ6tAAGergABnrAAAZ6yAAGeswABnrQAAZ62AAGetwABnzIAAZ80AAGfNgABnzgAAZ87AAGfPAABnz0AAZ8+AAGfPwABn0EAAZ9DAAGfRAABn0UAAZ9HAAGfSAABn8MAAZ/FAAGfxwABn8kAAZ/MAAGfzQABn84AAZ/PAAGf0AABn9IAAZ/UAAGf1QABn9YAAZ/YAAGf2QABoFQAAaBWAAGgWAABoFoAAaBdAAGgXgABoF8AAaBgAAGgYQABoGMAAaBlAAGgZgABoGcAAaBpAAGgagABoLMAAaDXAAGg/gABoSIAAaElAAGhJwABoSkAAaErAAGhLQABoS8AAaEwAAGhMwABoUwAAaFpAAGhawABoW0AAaFvAAGhcQABoXMAAaF1AAGhdwABoZQAAaGXAAGhmgABoZ0AAaGgAAGhowABoaYAAaGpAAGhqwABoiYAAaIoAAGiKgABoiwAAaIvAAGiMAABojEAAaIyAAGiMwABojUAAaI3AAGiOAABojkAAaI7AAGiPAABorcAAaK5AAGiuwABor0AAaLAAAGiwQABosIAAaLDAAGixAABosYAAaLIAAGiyQABosoAAaLMAAGizQABo0gAAaNKAAGjTAABo04AAaNRAAGjUgABo1MAAaNUAAGjVQABo1cAAaNZAAGjWgABo1sAAaNdAAGjXgABo9kAAaPbAAGj3gABo+AAAaPjAAGj5AABo+UAAaPmAAGj5wABo+kAAaPrAAGj7AABo+0AAaPvAAGj8AABpGsAAaRtAAGkbwABpHEAAaR0AAGkdQABpHYAAaR3AAGkeAABpHoAAaR8AAGkfQABpH4AAaSAAAGkgQABpPwAAaT+AAGlAAABpQIAAaUFAAGlBgABpQcAAaUIAAGlCQABpQsAAaUNAAGlDgABpQ8AAaURAAGlEgABpY0AAaWPAAGlkQABpZMAAaWWAAGllwABpZgAAaWZAAGlmgABpZwAAaWeAAGlnwABpaAAAaWiAAGlowABpjYAAaZZAAGmeQABppkAAaabAAGmnQABpp8AAaahAAGmpAABpqUAAaamAAGmqQABpqoAAaasAAGmrQABprAAAaazAAGmtAABprUAAaa4AAGmuQABpr4AAabXAAGm4AABpuIAAabkAAGm7QABpvAAAabzAAGm9QABpz4AAadiAAGniQABp60AAaewAAGnsgABp7QAAae2AAGnuAABp7oAAae7AAGnvgABp9cAAaf4AAGn+gABp/wAAaf+AAGoAAABqAIAAagEAAGoBgABqAgAAagpAAGoLAABqC8AAagyAAGoNQABqDgAAag7AAGoPgABqEEAAahDAAGovgABqMAAAajCAAGoxAABqMcAAajIAAGoyQABqMoAAajLAAGozQABqM8AAajQAAGo0QABqNMAAajUAAGpTwABqVEAAalTAAGpVQABqVgAAalZAAGpWgABqVsAAalcAAGpXgABqWAAAalhAAGpYgABqWQAAallAAGp4AABqeIAAanlAAGp5wABqeoAAanrAAGp7AABqe0AAanuAAGp8AABqfIAAanzAAGp9AABqfYAAan3AAGqEAABqhEAAaoSAAGqFAABqo8AAaqRAAGqkwABqpUAAaqYAAGqmQABqpoAAaqbAAGqnAABqp4AAaqgAAGqoQABqqIAAaqkAAGqpQABqyAAAasiAAGrJAABqyYAAaspAAGrKgABqysAAassAAGrLQABqy8AAasxAAGrMgABqzMAAas1AAGrNgABq7EAAauzAAGrtQABq7cAAau6AAGruwABq7wAAau9AAGrvgABq8AAAavCAAGrwwABq8QAAavGAAGrxwABrEIAAaxEAAGsRgABrEgAAaxLAAGsTAABrE0AAaxOAAGsTwABrFEAAaxTAAGsVAABrFUAAaxXAAGsWAABrNMAAazVAAGs1wABrNkAAazcAAGs3QABrN4AAazfAAGs4AABrOIAAazkAAGs5QABrOYAAazoAAGs6QABrTIAAa1WAAGtfQABraEAAa2kAAGtpgABragAAa2qAAGtrAABra4AAa2vAAGtsgABrcsAAa3oAAGt6gABrewAAa3uAAGt8AABrfIAAa30AAGt9gABrhMAAa4WAAGuGQABrhwAAa4fAAGuIgABriUAAa4oAAGuKgABrqUAAa6nAAGuqQABrqsAAa6uAAGurwABrrAAAa6xAAGusgABrrQAAa62AAGutwABrrgAAa66AAGuuwABrzYAAa84AAGvOgABrzwAAa8/AAGvQAABr0EAAa9CAAGvQwABr0UAAa9HAAGvSAABr0kAAa9LAAGvTAABr8cAAa/JAAGvywABr80AAa/QAAGv0QABr9IAAa/TAAGv1AABr9YAAa/YAAGv2QABr9oAAa/cAAGv3QABsFgAAbBaAAGwXQABsF8AAbBiAAGwYwABsGQAAbBlAAGwZgABsGgAAbBqAAGwawABsGwAAbBuAAGwbwABsPIAAbEWAAGxOgABsV0AAbGEAAGxpAABscsAAbHyAAGyEgABsjYAAbJaAAGyXAABsl8AAbJhAAGyYwABsmUAAbJoAAGyawABsm0AAbJvAAGycgABsnQAAbJ2AAGyeQABsnwAAbJ9AAGyggABspsAAbKgAAGyogABsqcAAbKqAAGyrAABsvUAAbMZAAGzQAABs2QAAbNnAAGzaQABs2sAAbNtAAGzbwABs3EAAbNyAAGzdQABs44AAbOzAAGztQABs7cAAbO5AAGzuwABs70AAbO/AAGzwQABs8MAAbPFAAGz6gABs+0AAbPwAAGz8wABs/YAAbP5AAGz/AABs/8AAbQCAAG0BQABtAcAAbSCAAG0hAABtIcAAbSJAAG0jAABtI0AAbSOAAG0jwABtJAAAbSSAAG0lAABtJUAAbSWAAG0mAABtJkAAbSqAAG0qwABtK0AAbUoAAG1KgABtSwAAbUuAAG1MQABtTIAAbUzAAG1NAABtTUAAbU3AAG1OQABtToAAbU7AAG1PQABtT4AAbW5AAG1uwABtb4AAbXAAAG1wwABtcQAAbXFAAG1xgABtccAAbXJAAG1ywABtcwAAbXNAAG1zwABtdAAAbXhAAG14gABteQAAbZfAAG2YQABtmMAAbZlAAG2aAABtmkAAbZqAAG2awABtmwAAbZuAAG2cAABtnEAAbZyAAG2dAABtnUAAbbwAAG28gABtvUAAbb3AAG2+gABtvsAAbb8AAG2/QABtv4AAbcAAAG3AgABtwMAAbcEAAG3BgABtwcAAbcYAAG3GQABtxsAAbeWAAG3mAABt5oAAbecAAG3nwABt6AAAbehAAG3ogABt6MAAbelAAG3pwABt6gAAbepAAG3qwABt6wAAbgnAAG4KQABuCwAAbguAAG4MQABuDIAAbgzAAG4NAABuDUAAbg3AAG4OQABuDoAAbg7AAG4PQABuD4AAbhXAAG4WAABuFkAAbhbAAG41gABuNgAAbjaAAG43AABuN8AAbjgAAG44QABuOIAAbjjAAG45QABuOcAAbjoAAG46QABuOsAAbjsAAG5ZwABuWkAAblsAAG5bgABuXEAAblyAAG5cwABuXQAAbl1AAG5dwABuXkAAbl6AAG5ewABuX0AAbl+AAG5mAABubEAAbnCAAG5xQABucgAAbnLAAG5zgABud8AAbniAAG55QABuegAAbnrAAG57QABuf8AAboLAAG6FAABuiIAAbq1AAG62AABuvgAAbsYAAG7GgABuxwAAbseAAG7IAABuyMAAbskAAG7JQABuygAAbspAAG7KwABuywAAbsvAAG7MgABuzMAAbs0AAG7NwABuzgAAbtBAAG7WgABu2MAAbtlAAG7ZwABu3AAAbtzAAG7dgABu3gAAbvBAAG75QABvAwAAbwwAAG8MwABvDUAAbw3AAG8OQABvDsAAbw9AAG8PgABvEEAAbxaAAG8ewABvH0AAbx/AAG8gQABvIMAAbyFAAG8hwABvIkAAbyLAAG8rAABvK8AAbyyAAG8tQABvLgAAby7AAG8vgABvMEAAbzEAAG8xgABvUEAAb1DAAG9RQABvUcAAb1KAAG9SwABvUwAAb1NAAG9TgABvVAAAb1SAAG9UwABvVQAAb1WAAG9VwABvdIAAb3UAAG91gABvdgAAb3bAAG93AABvd0AAb3eAAG93wABveEAAb3jAAG95AABveUAAb3nAAG96AABvmMAAb5lAAG+aAABvmoAAb5tAAG+bgABvm8AAb5wAAG+cQABvnMAAb51AAG+dgABvncAAb55AAG+egABvpMAAb6UAAG+lQABvpcAAb8SAAG/FAABvxYAAb8YAAG/GwABvxwAAb8dAAG/HgABvx8AAb8hAAG/IwABvyQAAb8lAAG/JwABvygAAb+jAAG/pQABv6cAAb+pAAG/rAABv60AAb+uAAG/rwABv7AAAb+yAAG/tAABv7UAAb+2AAG/uAABv7kAAcA0AAHANgABwDgAAcA6AAHAPQABwD4AAcA/AAHAQAABwEEAAcBDAAHARQABwEYAAcBHAAHASQABwEoAAcDFAAHAxwABwMkAAcDLAAHAzgABwM8AAcDQAAHA0QABwNIAAcDUAAHA1gABwNcAAcDYAAHA2gABwNsAAcFWAAHBWAABwVoAAcFcAAHBXwABwWAAAcFhAAHBYgABwWMAAcFlAAHBZwABwWgAAcFpAAHBawABwWwAAcG1AAHB2QABwgAAAcIkAAHCJwABwikAAcIrAAHCLQABwi8AAcIxAAHCMgABwjUAAcJOAAHCawABwm0AAcJvAAHCcQABwnMAAcJ1AAHCdwABwnkAAcKWAAHCmQABwpwAAcKfAAHCogABwqUAAcKoAAHCqwABwq0AAcMoAAHDKgABwywAAcMuAAHDMQABwzIAAcMzAAHDNAABwzUAAcM3AAHDOQABwzoAAcM7AAHDPQABwz4AAcO5AAHDuwABw70AAcO/AAHDwgABw8MAAcPEAAHDxQABw8YAAcPIAAHDygABw8sAAcPMAAHDzgABw88AAcRKAAHETAABxE4AAcRQAAHEUwABxFQAAcRVAAHEVgABxFcAAcRZAAHEWwABxFwAAcRdAAHEXwABxGAAAcTbAAHE3QABxOAAAcTiAAHE5QABxOYAAcTnAAHE6AABxOkAAcTrAAHE7QABxO4AAcTvAAHE8QABxPIAAcVtAAHFbwABxXEAAcVzAAHFdgABxXcAAcV4AAHFeQABxXoAAcV8AAHFfgABxX8AAcWAAAHFggABxYMAAcX+AAHGAAABxgIAAcYEAAHGBwABxggAAcYJAAHGCgABxgsAAcYNAAHGDwABxhAAAcYRAAHGEwABxhQAAcaPAAHGkQABxpQAAcaWAAHGmQABxpoAAcabAAHGnAABxp0AAcafAAHGoQABxqIAAcajAAHGpQABxqYAAca3AAHGygABxuMAAcb2AAHHAwABxxYAAcctAAHHPwABx9IAAcf1AAHIFQAByDUAAcg3AAHIOQAByDsAAcg9AAHIQAAByEEAAchCAAHIRQAByEYAAchIAAHISQAByEwAAchPAAHIUAAByFEAAchUAAHIVQAByF4AAch3AAHIgAAByIIAAciEAAHIjQAByJAAAciTAAHIlQAByN4AAckCAAHJKQAByU0AAclQAAHJUgAByVQAAclWAAHJWAAByVoAAclbAAHJXgAByXcAAcmYAAHJmgAByZwAAcmeAAHJoAAByaIAAcmkAAHJpgAByagAAcnJAAHJzAAByc8AAcnSAAHJ1QABydgAAcnbAAHJ3gAByeEAAcnjAAHKXgABymAAAcpiAAHKZAABymcAAcpoAAHKaQABymoAAcprAAHKbQABym8AAcpwAAHKcQABynMAAcp0AAHK7wAByvEAAcrzAAHK9QAByvgAAcr5AAHK+gAByvsAAcr8AAHK/gABywAAAcsBAAHLAgABywQAAcsFAAHLgAABy4IAAcuFAAHLhwABy4oAAcuLAAHLjAABy40AAcuOAAHLkAABy5IAAcuTAAHLlAABy5YAAcuXAAHLsAABy7EAAcuyAAHLtAABzC8AAcwxAAHMMwABzDUAAcw4AAHMOQABzDoAAcw7AAHMPAABzD4AAcxAAAHMQQABzEIAAcxEAAHMRQABzMAAAczCAAHMxAABzMYAAczJAAHMygABzMsAAczMAAHMzQABzM8AAczRAAHM0gABzNMAAczVAAHM1gABzVEAAc1TAAHNVQABzVcAAc1aAAHNWwABzVwAAc1dAAHNXgABzWAAAc1iAAHNYwABzWQAAc1mAAHNZwABzeIAAc3kAAHN5gABzegAAc3rAAHN7AABze0AAc3uAAHN7wABzfEAAc3zAAHN9AABzfUAAc33AAHN+AABznMAAc51AAHOdwABznkAAc58AAHOfQABzn4AAc5/AAHOgAABzoIAAc6EAAHOhQABzoYAAc6IAAHOiQABztIAAc72AAHPHQABz0EAAc9EAAHPRgABz0gAAc9KAAHPTAABz04AAc9PAAHPUgABz2sAAc+IAAHPigABz4wAAc+OAAHPkAABz5IAAc+UAAHPlgABz7MAAc+2AAHPuQABz7wAAc+/AAHPwgABz8UAAc/IAAHPygAB0EUAAdBHAAHQSQAB0EsAAdBOAAHQTwAB0FAAAdBRAAHQUgAB0FQAAdBWAAHQVwAB0FgAAdBaAAHQWwAB0NYAAdDYAAHQ2gAB0NwAAdDfAAHQ4AAB0OEAAdDiAAHQ4wAB0OUAAdDnAAHQ6AAB0OkAAdDrAAHQ7AAB0WcAAdFpAAHRawAB0W0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AAgdiAAIHZAACB2UAAgfgAAIH4gACB+UAAgfnAAIH6gACB+sAAgfsAAIH7QACB+4AAgfwAAIH8gACB/MAAgf0AAIH9gACB/cAAghyAAIIdAACCHYAAgh4AAIIewACCHwAAgh9AAIIfgACCH8AAgiBAAIIgwACCIQAAgiFAAIIhwACCIgAAgkDAAIJBQACCQgAAgkKAAIJDQACCQ4AAgkPAAIJEAACCREAAgkTAAIJFQACCRYAAgkXAAIJGQACCRoAAgmVAAIJlwACCZkAAgmbAAIJngACCZ8AAgmgAAIJoQACCaIAAgmkAAIJpgACCacAAgmoAAIJqgACCasAAgomAAIKKAACCioAAgosAAIKLwACCjAAAgoxAAIKMgACCjMAAgo1AAIKNwACCjgAAgo5AAIKOwACCjwAAgq3AAIKuQACCrwAAgq+AAIKwQACCsIAAgrDAAIKxAACCsUAAgrHAAIKyQACCsoAAgrLAAIKzQACCs4AAgthAAILhAACC6QAAgvEAAILxgACC8gAAgvKAAILzAACC88AAgvQAAIL0QACC9QAAgvVAAIL1wACC9gAAgvbAAIL3gACC98AAgvgAAIL4wACC+QAAgvtAAIMBgACDA8AAgwRAAIMEwACDBwAAgwfAAIMIgACDCQAAgxtAAIMkQACDLgAAgzcAAIM3wACDOEAAgzjAAIM5QACDOcAAgzpAAIM6gACDO0AAg0GAAINJwACDSkAAg0rAAINLQACDS8AAg0xAAINMwACDTUAAg03AAINWAACDVsAAg1eAAINYQACDWQAAg1nAAINagACDW0AAg1wAAINcgACDe0AAg3vAAIN8QACDfMAAg32AAIN9wACDfgAAg35AAIN+gACDfwAAg3+AAIN/wACDgAAAg4CAAIOAwACDn4AAg6AAAIOggACDoQAAg6HAAIOiAACDokAAg6KAAIOiwACDo0AAg6PAAIOkAACDpEAAg6TAAIOlAACDw8AAg8RAAIPFAACDxYAAg8ZAAIPGgACDxsAAg8cAAIPHQACDx8AAg8hAAIPIgACDyMAAg8lAAIPJgACDz8AAg9AAAIPQQACD0MAAg++AAIPwAACD8IAAg/EAAIPxwACD8gAAg/JAAIPygACD8sAAg/NAAIPzwACD9AAAg/RAAIP0wACD9QAAhBPAAIQUQACEFMAAhBVAAIQWAACEFkAAhBaAAIQWwACEFwAAhBeAAIQYAACEGEAAhBiAAIQZAACEGUAAhDgAAIQ4gACEOQAAhDmAAIQ6QACEOoAAhDrAAIQ7AACEO0AAhDvAAIQ8QACEPIAAhDzAAIQ9QACEPYAAhFxAAIRcwACEXUAAhF3AAIRegACEXsAAhF8AAIRfQACEX4AAhGAAAIRggACEYMAAhGEAAIRhgACEYcAAhICAAISBAACEgYAAhIIAAISCwACEgwAAhINAAISDgACEg8AAhIRAAISEwACEhQAAhIVAAISFwACEhgAAhJhAAIShQACEqwAAhLQAAIS0wACEtUAAhLXAAIS2QACEtsAAhLdAAIS3gACEuEAAhL6AAITFwACExkAAhMbAAITHQACEx8AAhMhAAITIwACEyUAAhNCAAITRQACE0gAAhNLAAITTgACE1EAAhNUAAITVwACE1kAAhPUAAIT1gACE9gAAhPaAAIT3QACE94AAhPfAAIT4AACE+EAAhPjAAIT5QACE+YAAhPnAAIT6QACE+oAAhRlAAIUZwACFGkAAhRrAAIUbgACFG8AAhRwAAIUcQACFHIAAhR0AAIUdgACFHcAAhR4AAIUegACFHsAAhT2AAIU+AACFPoAAhT8AAIU/wACFQAAAhUBAAIVAgACFQMAAhUFAAIVBwACFQgAAhUJAAIVCwACFQwAAhWHAAIViQACFYwAAhWOAAIVkQACFZIAAhWTAAIVlAACFZUAAhWXAAIVmQACFZoAAhWbAAIVnQACFZ4AAhYZAAIWGwACFh0AAhYfAAIWIgACFiMAAhYkAAIWJQACFiYAAhYoAAIWKgACFisAAhYsAAIWLgACFi8AAhaqAAIWrAACFq4AAhawAAIWswACFrQAAha1AAIWtgACFrcAAha5AAIWuwACFrwAAha9AAIWvwACFsAAAhc7AAIXPQACF0AAAhdCAAIXRQACF0YAAhdHAAIXSAACF0kAAhdLAAIXTQACF04AAhdPAAIXUQACF1IAAhflAAIYCAACGCgAAhhIAAIYSgACGEwAAhhOAAIYUAACGFMAAhhUAAIYVQACGFgAAhhZAAIYWwACGFwAAhhfAAIYYgACGGMAAhhkAAIYZwACGGgAAhhtAAIYhgACGI8AAhiRAAIYkwACGJwAAhifAAIYogACGKQAAhjtAAIZEQACGTgAAhlcAAIZXwACGWEAAhljAAIZZQACGWcAAhlpAAIZagACGW0AAhmGAAIZpwACGakAAhmrAAIZrQACGa8AAhmxAAIZswACGbUAAhm3AAIZ2AACGdsAAhneAAIZ4QACGeQAAhnnAAIZ6gACGe0AAhnwAAIZ8gACGm0AAhpvAAIacQACGnMAAhp2AAIadwACGngAAhp5AAIaegACGnwAAhp+AAIafwACGoAAAhqCAAIagwACGv4AAhsAAAIbAgACGwQAAhsHAAIbCAACGwkAAhsKAAIbCwACGw0AAhsPAAIbEAACGxEAAhsTAAIbFAACG48AAhuRAAIblAACG5YAAhuZAAIbmgACG5sAAhucAAIbnQACG58AAhuhAAIbogACG6MAAhulAAIbpgACG78AAhvAAAIbwQACG8MAAhw+AAIcQAACHEIAAhxEAAIcRwACHEgAAhxJAAIcSgACHEsAAhxNAAIcTwACHFAAAhxRAAIcUwACHFQAAhzPAAIc0QACHNMAAhzVAAIc2AACHNkAAhzaAAIc2wACHNwAAhzeAAIc4AACHOEAAhziAAIc5AACHOUAAh1gAAIdYgACHWQAAh1mAAIdaQACHWoAAh1rAAIdbAACHW0AAh1vAAIdcQACHXIAAh1zAAIddQACHXYAAh3xAAId8wACHfUAAh33AAId+gACHfsAAh38AAId/QACHf4AAh4AAAIeAgACHgMAAh4EAAIeBgACHgcAAh6CAAIehAACHoYAAh6IAAIeiwACHowAAh6NAAIejgACHo8AAh6RAAIekwACHpQAAh6VAAIelwACHpgAAh7hAAIfBQACHywAAh9QAAIfUwACH1UAAh9XAAIfWQACH1sAAh9dAAIfXgACH2EAAh96AAIflwACH5kAAh+bAAIfnQACH58AAh+hAAIfowACH6UAAh/CAAIfxQACH8gAAh/LAAIfzgACH9EAAh/UAAIf1wACH9kAAiBUAAIgVgACIFgAAiBaAAIgXQACIF4AAiBfAAIgYAACIGEAAiBjAAIgZQACIGYAAiBnAAIgaQACIGoAAiDlAAIg5wACIOkAAiDrAAIg7gACIO8AAiDwAAIg8QACIPIAAiD0AAIg9gACIPcAAiD4AAIg+gACIPsAAiF2AAIheAACIXoAAiF8AAIhfwACIYAAAiGBAAIhggACIYMAAiGFAAIhhwACIYgAAiGJAAIhiwACIYwAAiIHAAIiCQACIgwAAiIOAAIiEQACIhIAAiITAAIiFAACIhUAAiIXAAIiGQACIhoAAiIbAAIiHQACIh4AAiKZAAIimwACIp0AAiKfAAIiogACIqMAAiKkAAIipQACIqYAAiKoAAIiqgACIqsAAiKsAAIirgACIq8AAiMqAAIjLAACIy4AAiMwAAIjMwACIzQAAiM1AAIjNgACIzcAAiM5AAIjOwACIzwAAiM9AAIjPwACI0AAAiO7AAIjvQACI8AAAiPCAAIjxQACI8YAAiPHAAIjyAACI8kAAiPLAAIjzQACI84AAiPPAAIj0QACI9IAAiRlAAIkiAACJKgAAiTIAAIkygACJMwAAiTOAAIk0AACJNMAAiTUAAIk1QACJNgAAiTZAAIk2wACJNwAAiTeAAIk4QACJOIAAiTjAAIk5gACJOcAAiTsAAIlBQACJQ4AAiUQAAIlEgACJRsAAiUeAAIlIQACJSMAAiVsAAIlkAACJbcAAiXbAAIl3gACJeAAAiXiAAIl5AACJeYAAiXoAAIl6QACJewAAiYFAAImJgACJigAAiYqAAImLAACJi4AAiYwAAImMgACJjQAAiY2AAImVwACJloAAiZdAAImYAACJmMAAiZmAAImaQACJmwAAiZvAAImcQACJuwAAibuAAIm8AACJvIAAib1AAIm9gACJvcAAib4AAIm+QACJvsAAib9AAIm/gACJv8AAicBAAInAgACJ30AAid/AAInggACJ4QAAieHAAIniAACJ4kAAieKAAIniwACJ40AAiePAAInkAACJ5EAAieTAAInlAACJ5gAAigTAAIoFQACKBgAAigaAAIoHQACKB4AAigfAAIoIAACKCEAAigjAAIoJQACKCYAAignAAIoKQACKCoAAihDAAIoRAACKEUAAihHAAIowgACKMQAAijGAAIoyAACKMsAAijMAAIozQACKM4AAijPAAIo0QACKNMAAijUAAIo1QACKNcAAijYAAIpUwACKVUAAilXAAIpWQACKVwAAildAAIpXgACKV8AAilgAAIpYgACKWQAAillAAIpZgACKWgAAilpAAIp5AACKeYAAinoAAIp6gACKe0AAinuAAIp7wACKfAAAinxAAIp8wACKfUAAin2AAIp9wACKfkAAin6AAIqdQACKncAAip5AAIqewACKn4AAip/AAIqgAACKoEAAiqCAAIqhAACKoYAAiqHAAIqiAACKooAAiqLAAIrBgACKwgAAisKAAIrDAACKw8AAisQAAIrEQACKxIAAisTAAIrFQACKxcAAisYAAIrGQACKxsAAiscAAIrZQACK4kAAiuwAAIr1AACK9cAAivZAAIr2wACK90AAivfAAIr4QACK+IAAivlAAIr/gACLBsAAiwdAAIsHwACLCEAAiwjAAIsJQACLCcAAiwpAAIsRgACLEkAAixMAAIsTwACLFIAAixVAAIsWAACLFsAAixdAAIs2AACLNoAAizcAAIs3gACLOEAAiziAAIs4wACLOQAAizlAAIs5wACLOkAAizqAAIs6wACLO0AAizuAAItaQACLWsAAi1tAAItbwACLXIAAi1zAAItdAACLXUAAi12AAIteAACLXoAAi17AAItfAACLX4AAi1/AAIt+gACLfwAAi3+AAIuAAACLgMAAi4EAAIuBQACLgYAAi4HAAIuCQACLgsAAi4MAAIuDQACLg8AAi4QAAIuiwACLo0AAi6QAAIukgACLpUAAi6WAAIulwACLpgAAi6ZAAIumwACLp0AAi6eAAIunwACLqEAAi6iAAIvHQACLx8AAi8hAAIvIwACLyYAAi8nAAIvKAACLykAAi8qAAIvLAACLy4AAi8vAAIvMAACLzIAAi8zAAIvrgACL7AAAi+yAAIvtAACL7cAAi+4AAIvuQACL7oAAi+7AAIvvQACL78AAi/AAAIvwQACL8MAAi/EAAIwPwACMEEAAjBDAAIwRQACMEgAAjBJAAIwSgACMEsAAjBMAAIwTgACMFAAAjBRAAIwUgACMFQAAjBVAAIw6AACMQsAAjErAAIxSwACMU0AAjFPAAIxUQACMVMAAjFWAAIxVwACMVgAAjFbAAIxXAACMV4AAjFfAAIxYQACMWQAAjFlAAIxZgACMWkAAjFqAAIxcwACMYwAAjGVAAIxlwACMZkAAjGiAAIxpQACMagAAjGqAAIx8wACMhcAAjI+AAIyYgACMmUAAjJnAAIyaQACMmsAAjJtAAIybwACMnAAAjJzAAIyjAACMq0AAjKvAAIysQACMrMAAjK1AAIytwACMrkAAjK7AAIyvQACMt4AAjLhAAIy5AACMucAAjLqAAIy7QACMvAAAjLzAAIy9gACMvgAAjNzAAIzdQACM3cAAjN5AAIzfAACM30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AAkTkAAJE/QACRRoAAkUcAAJFHgACRSAAAkUiAAJFJAACRSYAAkUoAAJFRQACRUgAAkVLAAJFTgACRVEAAkVUAAJFVwACRVoAAkVcAAJF1wACRdkAAkXbAAJF3QACReAAAkXhAAJF4gACReMAAkXkAAJF5gACRegAAkXpAAJF6gACRewAAkXtAAJGaAACRmoAAkZsAAJGbgACRnEAAkZyAAJGcwACRnQAAkZ1AAJGdwACRnkAAkZ6AAJGewACRn0AAkZ+AAJG+QACRvsAAkb9AAJG/wACRwIAAkcDAAJHBAACRwUAAkcGAAJHCAACRwoAAkcLAAJHDAACRw4AAkcPAAJHigACR4wAAkeOAAJHkAACR5MAAkeUAAJHlQACR5YAAkeXAAJHmQACR5sAAkecAAJHnQACR58AAkegAAJIGwACSB0AAkgfAAJIIQACSCQAAkglAAJIJgACSCcAAkgoAAJIKgACSCwAAkgtAAJILgACSDAAAkgxAAJIrAACSK4AAkiwAAJIsgACSLUAAki2AAJItwACSLgAAki5AAJIuwACSL0AAki+AAJIvwACSMEAAkjCAAJJPQACST8AAklBAAJJQwACSUYAAklHAAJJSAACSUkAAklKAAJJTAACSU4AAklPAAJJUAACSVIAAklTAAJJXgACSW8AAkl0AAJJdwACSXkAAkmyAAJJvAACScUAAknIAAJJygACSc0AAknQAAJJ0wACSdYAAknbAAJKfgACSqIAAkrGAAJK5gACSw0AAks0AAJLVAACS3sAAkufAAJLwgACS+kAAkwNAAJMMQACTFUAAkx8AAJMfQACTH8AAkyBAAJMhAACTIYAAkyJAAJMiwACTI0AAkyQAAJMkgACTJQAAkyXAAJMmgACTJwAAkyeAAJMoAACTKMAAkymAAJMqQACTLIAAkzLAAJM0AACTNIAAkzXAAJM2gACTNwAAk0lAAJNSQACTXAAAk2UAAJNlwACTZkAAk2bAAJNnQACTZ8AAk2hAAJNogACTaUAAk2+AAJN4wACTeUAAk3nAAJN6QACTesAAk3tAAJN7wACTfEAAk3zAAJN9QACThoAAk4dAAJOIAACTiMAAk4mAAJOKQACTiwAAk4vAAJOMgACTjUAAk43AAJOsgACTrQAAk63AAJOuQACTrwAAk69AAJOvgACTr8AAk7AAAJOwgACTsQAAk7FAAJOxgACTsgAAk7JAAJO2gACTtsAAk7dAAJPWAACT1oAAk9cAAJPXgACT2EAAk9iAAJPYwACT2QAAk9lAAJPZwACT2kAAk9qAAJPawACT20AAk9uAAJP6QACT+sAAk/uAAJP8AACT/MAAk/0AAJP9QACT/YAAk/3AAJP+QACT/sAAk/8AAJP/QACT/8AAlAAAAJQEQACUBIAAlAUAAJQjwACUJEAAlCTAAJQlQACUJgAAlCZAAJQmgACUJsAAlCcAAJQngACUKAAAlChAAJQogACUKQAAlClAAJRIAACUSIAAlElAAJRJwACUSoAAlErAAJRLAACUS0AAlEuAAJRMAACUTIAAlEzAAJRNAACUTYAAlE3AAJRSAACUUkAAlFLAAJRxgACUcgAAlHKAAJRzAACUc8AAlHQAAJR0QACUdIAAlHTAAJR1QACUdcAAlHYAAJR2QACUdsAAlHcAAJSVwACUlkAAlJcAAJSXgACUmEAAlJiAAJSYwACUmQAAlJlAAJSZwACUmkAAlJqAAJSawACUm0AAlJuAAJShwACUogAAlKJAAJSiwACUwYAAlMIAAJTCgACUwwAAlMPAAJTEAACUxEAAlMSAAJTEwACUxUAAlMXAAJTGAACUxkAAlMbAAJTHAACU5cAAlOZAAJTnAACU54AAlOhAAJTogACU6MAAlOkAAJTpQACU6cAAlOpAAJTqgACU6sAAlOtAAJTrgACU8EAAlPaAAJUNQACVDgAAlQ7AAJUPgACVEEAAlREAAJURwACVEoAAlRNAAJUUAACVFMAAlRWAAJUWQACVFwAAlRfAAJUYgACVGUAAlRoAAJUawACVG4AAlRxAAJUdAACVHcAAlTSAAJU1QACVNgAAlTbAAJU3gACVOEAAlTkAAJU5wACVOoAAlTtAAJU8AACVPMAAlT2AAJU+QACVPwAAlT/AAJVAgACVQUAAlUIAAJVCwACVQ4AAlURAAJVFAACVRYAAlUxAAJVOQACVUMAAlVRAAJVawACVYgAAlWRAAJVpQACVbwAAlXJAAJVzgACVfEAAlX7AAJWDwACVhgAAlYeAAJWNgACVkEAAlZLAAJWWAACVm4AAlcBAAJXJAACV0QAAldkAAJXZgACV2gAAldqAAJXbAACV28AAldwAAJXcQACV3QAAld1AAJXdwACV3gAAld6AAJXfQACV34AAld/AAJXggACV4MAAleIAAJXoQACV6oAAlesAAJXrgACV7cAAle6AAJXvQACV78AAlgIAAJYLAACWFMAAlh3AAJYegACWHwAAlh+AAJYgAACWIIAAliEAAJYhQACWIgAAlihAAJYwgACWMQAAljGAAJYyAACWMoAAljMAAJYzgACWNAAAljSAAJY8wACWPYAAlj5AAJY/AACWP8AAlkCAAJZBQACWQgAAlkLAAJZDQACWYgAAlmKAAJZjAACWY4AAlmRAAJZkgACWZMAAlmUAAJZlQACWZcAAlmZAAJZmgACWZsAAlmdAAJZngACWhkAAlobAAJaHQACWh8AAloiAAJaIwACWiQAAlolAAJaJgACWigAAloqAAJaKwACWiwAAlouAAJaLwACWqoAAlqsAAJarwACWrEAAlq0AAJatQACWrYAAlq3AAJauAACWroAAlq8AAJavQACWr4AAlrAAAJawQACWtoAAlrbAAJa3AACWt4AAltZAAJbWwACW10AAltfAAJbYgACW2MAAltkAAJbZQACW2YAAltoAAJbagACW2sAAltsAAJbbgACW28AAlvqAAJb7AACW+4AAlvwAAJb8wACW/QAAlv1AAJb9gACW/cAAlv5AAJb+wACW/wAAlv9AAJb/wACXAAAAlx7AAJcfQACXH8AAlyBAAJchAACXIUAAlyGAAJchwACXIgAAlyKAAJcjAACXI0AAlyOAAJckAACXJEAAl0MAAJdDgACXRAAAl0SAAJdFQACXRYAAl0XAAJdGAACXRkAAl0bAAJdHQACXR4AAl0fAAJdIQACXSIAAl2dAAJdnwACXaEAAl2jAAJdpgACXacAAl2oAAJdqQACXaoAAl2sAAJdrgACXa8AAl2wAAJdsgACXbMAAl38AAJeIAACXkcAAl5rAAJebgACXnAAAl5yAAJedAACXnYAAl54AAJeeQACXnwAAl6VAAJesgACXrQAAl62AAJeuAACXroAAl68AAJevgACXsAAAl7dAAJe4AACXuMAAl7mAAJe6QACXuwAAl7vAAJe8gACXvQAAl9vAAJfcQACX3MAAl91AAJfeAACX3kAAl96AAJfewACX3wAAl9+AAJfgAACX4EAAl+CAAJfhAACX4UAAmAAAAJgAgACYAQAAmAGAAJgCQACYAoAAmALAAJgDAACYA0AAmAPAAJgEQACYBIAAmATAAJgFQACYBYAAmCRAAJgkwACYJUAAmCXAAJgmgACYJsAAmCcAAJgnQACYJ4AAmCgAAJgogACYKMAAmCkAAJgpgACYKcAAmEiAAJhJAACYSYAAmEoAAJhKwACYSwAAmEtAAJhLgACYS8AAmExAAJhMwACYTQAAmE1AAJhNwACYTgAAmGzAAJhtQACYbcAAmG5AAJhvAACYb0AAmG+AAJhvwACYcAAAmHCAAJhxAACYcUAAmHGAAJhyAACYckAAmJEAAJiRgACYkgAAmJKAAJiTQACYk4AAmJPAAJiUAACYlEAAmJTAAJiVQACYlYAAmJXAAJiWQACYloAAmLVAAJi1wACYtkAAmLbAAJi3gACYt8AAmLgAAJi4QACYuIAAmLkAAJi5gACYucAAmLoAAJi6gACYusAAmN+AAJjoQACY8EAAmPhAAJj4wACY+UAAmPnAAJj6QACY+wAAmPtAAJj7gACY/EAAmPyAAJj9AACY/UAAmP4AAJj+wACY/wAAmP9AAJkAAACZAEAAmQGAAJkHwACZCgAAmQqAAJkLAACZDUAAmQ4AAJkOwACZD0AAmSGAAJkqgACZNEAAmT1AAJk+AACZPoAAmT8AAJk/gACZQAAAmUCAAJlAwACZQYAAmUfAAJlQAACZUIAAmVEAAJlRgACZUgAAmVKAAJlTAACZU4AAmVQAAJlcQACZXQAAmV3AAJlegACZX0AAmWAAAJlgwACZYYAAmWJAAJliwACZgYAAmYIAAJmCgACZgwAAmYPAAJmEAACZhEAAmYSAAJmEwACZhUAAmYXAAJmGAACZhkAAmYbAAJmHAACZpcAAmaZAAJmmwACZp0AAmagAAJmoQACZqIAAmajAAJmpAACZqYAAmaoAAJmqQACZqoAAmasAAJmrQACZygAAmcqAAJnLQACZy8AAmcyAAJnMwACZzQAAmc1AAJnNgACZzgAAmc6AAJnOwACZzwAAmc+AAJnPwACZ1gAAmdZAAJnWgACZ1wAAmfXAAJn2QACZ9sAAmfdAAJn4AACZ+EAAmfiAAJn4wACZ+QAAmfmAAJn6AACZ+kAAmfqAAJn7AACZ+0AAmhoAAJoagACaGwAAmhuAAJocQACaHIAAmhzAAJodAACaHUAAmh3AAJoeQACaHoAAmh7AAJofQACaH4AAmj5AAJo+wACaP0AAmj/AAJpAgACaQMAAmkEAAJpBQACaQYAAmkIAAJpCgACaQsAAmkMAAJpDgACaQ8AAmmKAAJpjAACaY4AAmmQAAJpkwACaZQAAmmVAAJplgACaZcAAmmZAAJpmwACaZwAAmmdAAJpnwACaaAAAmobAAJqHQACah8AAmohAAJqJAACaiUAAmomAAJqJwACaigAAmoqAAJqLAACai0AAmouAAJqMAACajEAAmp6AAJqngACasUAAmrpAAJq7AACau4AAmrwAAJq8gACavQAAmr2AAJq9wACavoAAmsTAAJrMAACazIAAms0AAJrNgACazgAAms6AAJrPAACaz4AAmtbAAJrXgACa2EAAmtkAAJrZwACa2oAAmttAAJrcAACa3IAAmvtAAJr7wACa/EAAmvzAAJr9gACa/cAAmv4AAJr+QACa/oAAmv8AAJr/gACa/8AAmwAAAJsAgACbAMAAmx+AAJsgAACbIIAAmyEAAJshwACbIgAAmyJAAJsigACbIsAAmyNAAJsjwACbJAAAmyRAAJskwACbJQAAm0PAAJtEQACbRMAAm0VAAJtGAACbRkAAm0aAAJtGwACbRwAAm0eAAJtIAACbSEAAm0iAAJtJAACbSUAAm2gAAJtogACbaUAAm2nAAJtqgACbasAAm2sAAJtrQACba4AAm2wAAJtsgACbbMAAm20AAJttgACbbcAAm4yAAJuNAACbjYAAm44AAJuOwACbjwAAm49AAJuPgACbj8AAm5BAAJuQwACbkQAAm5FAAJuRwACbkgAAm7DAAJuxQACbscAAm7JAAJuzAACbs0AAm7OAAJuzwACbtAAAm7SAAJu1AACbtUAAm7WAAJu2AACbtkAAm9UAAJvVgACb1kAAm9bAAJvXgACb18AAm9gAAJvYQACb2IAAm9kAAJvZgACb2cAAm9oAAJvagACb2sAAm/+AAJwIQACcEEAAnBhAAJwYwACcGUAAnBnAAJwaQACcGwAAnBtAAJwbgACcHEAAnByAAJwdAACcHUAAnB4AAJwewACcHwAAnB9AAJwgAACcIEAAnCKAAJwowACcKwAAnCuAAJwsAACcLkAAnC8AAJwvwACcMEAAnEKAAJxLgACcVUAAnF5AAJxfAACcX4AAnGAAAJxggACcYQAAnGGAAJxhwACcYoAAnGjAAJxxAACccYAAnHIAAJxygACccwAAnHOAAJx0AACcdIAAnHUAAJx9QACcfgAAnH7AAJx/gACcgEAAnIEAAJyBwACcgoAAnINAAJyDwACcooAAnKMAAJyjgACcpAAAnKTAAJylAACcpUAAnKWAAJylwACcpkAAnKbAAJynAACcp0AAnKfAAJyoAACcxsAAnMdAAJzHwACcyEAAnMkAAJzJQACcyYAAnMnAAJzKAACcyoAAnMsAAJzLQACcy4AAnMwAAJzMQACc6wAAnOuAAJzsQACc7MAAnO2AAJztwACc7gAAnO5AAJzugACc7wAAnO+AAJzvwACc8AAAnPCAAJzwwACc9wAAnPdAAJz3gACc+AAAnRbAAJ0XQACdF8AAnRhAAJ0ZAACdGUAAnRmAAJ0ZwACdGgAAnRqAAJ0bAACdG0AAnRuAAJ0cAACdHEAAnTsAAJ07gACdPAAAnTyAAJ09QACdPYAAnT3AAJ0+AACdPkAAnT7AAJ0/QACdP4AAnT/AAJ1AQACdQIAAnV9AAJ1fwACdYEAAnWDAAJ1hgACdYcAAnWIAAJ1iQACdYoAAnWMAAJ1jgACdY8AAnWQAAJ1kgACdZMAAnYOAAJ2EAACdhIAAnYUAAJ2FwACdhgAAnYZAAJ2GgACdhsAAnYdAAJ2HwACdiAAAnYhAAJ2IwACdiQAAnafAAJ2oQACdqMAAnalAAJ2qAACdqkAAnaqAAJ2qwACdqwAAnauAAJ2sAACdrEAAnayAAJ2tAACdrUAAnb+AAJ3IgACd0kAAndtAAJ3cAACd3IAAnd0AAJ3dgACd3gAAnd6AAJ3ewACd34AAneXAAJ3tAACd7YAAne4AAJ3ugACd7wAAne+AAJ3wAACd8IAAnffAAJ34gACd+UAAnfoAAJ36wACd+4AAnfxAAJ39AACd/YAAnhxAAJ4cwACeHUAAnh3AAJ4egACeHsAAnh8AAJ4fQACeH4AAniAAAJ4ggACeIMAAniEAAJ4hgACeIcAAnkCAAJ5BAACeQYAAnkIAAJ5CwACeQwAAnkNAAJ5DgACeQ8AAnkRAAJ5EwACeRQAAnkVAAJ5FwACeRgAAnmTAAJ5lQACeZcAAnmZAAJ5nAACeZ0AAnmeAAJ5nwACeaAAAnmiAAJ5pAACeaUAAnmmAAJ5qAACeakAAnokAAJ6JgACeikAAnorAAJ6LgACei8AAnowAAJ6MQACejIAAno0AAJ6NgACejcAAno4AAJ6OgACejsAAnq2AAJ6uAACeroAAnq8AAJ6vwACesAAAnrBAAJ6wgACesMAAnrFAAJ6xwACesgAAnrJAAJ6ywACeswAAntHAAJ7SQACe0sAAntNAAJ7UAACe1EAAntSAAJ7UwACe1QAAntWAAJ7WAACe1kAAntaAAJ7XAACe10AAnvYAAJ72gACe90AAnvfAAJ74gACe+MAAnvkAAJ75QACe+YAAnvoAAJ76gACe+sAAnvsAAJ77gACe+8AAnyCAAJ8pQACfMUAAnzlAAJ85wACfOkAAnzrAAJ87QACfPAAAnzxAAJ88gACfPUAAnz2AAJ8+AACfPkAAnz7AAJ8/gACfP8AAn0AAAJ9AwACfQQAAn0JAAJ9IgACfSsAAn0tAAJ9LwACfTgAAn07AAJ9PgACfUAAAn2JAAJ9rQACfdQAAn34AAJ9+wACff0AAn3/AAJ+AQACfgMAAn4FAAJ+BgACfgkAAn4iAAJ+QwACfkUAAn5HAAJ+SQACfksAAn5NAAJ+TwACflEAAn5TAAJ+dAACfncAAn56AAJ+fQACfoAAAn6DAAJ+hgACfokAAn6MAAJ+jgACfwkAAn8LAAJ/DQACfw8AAn8SAAJ/EwACfxQAAn8VAAJ/FgACfxgAAn8aAAJ/GwACfxwAAn8eAAJ/HwACf5oAAn+cAAJ/ngACf6AAAn+jAAJ/pAACf6UAAn+mAAJ/pwACf6kAAn+rAAJ/rAACf60AAn+vAAJ/sAACgCsAAoAtAAKAMAACgDIAAoA1AAKANgACgDcAAoA4AAKAOQACgDsAAoA9AAKAPgACgD8AAoBBAAKAQgACgFsAAoBcAAKAXQACgF8AAoDaAAKA3AACgN4AAoDgAAKA4wACgOQAAoDlAAKA5gACgOcAAoDpAAKA6wACgOwAAoDtAAKA7wACgPAAAoFrAAKBbQACgW8AAoFxAAKBdAACgXUAAoF2AAKBdwACgXgAAoF6AAKBfAACgX0AAoF+AAKBgAACgYEAAoH8AAKB/gACggAAAoICAAKCBQACggYAAoIHAAKCCAACggkAAoILAAKCDQACgg4AAoIPAAKCEQACghIAAoKNAAKCjwACgpEAAoKTAAKClgACgpcAAoKYAAKCmQACgpoAAoKcAAKCngACgp8AAoKgAAKCogACgqMAAoMeAAKDIAACgyIAAoMkAAKDJwACgygAAoMpAAKDKgACgysAAoMtAAKDLwACgzAAAoMxAAKDMwACgzQAAoN9AAKDoQACg8gAAoPsAAKD7wACg/EAAoPzAAKD9QACg/cAAoP5AAKD+gACg/0AAoQWAAKEMwAChDUAAoQ3AAKEOQAChDsAAoQ9AAKEPwAChEEAAoReAAKEYQAChGQAAoRnAAKEagAChG0AAoRwAAKEcwAChHUAAoTwAAKE8gAChPUAAoT3AAKE+gAChPsAAoT8AAKE/QAChP4AAoUAAAKFAgAChQMAAoUEAAKFBgAChQcAAoWCAAKFhAAChYYAAoWIAAKFiwAChYwAAoWNAAKFjgAChY8AAoWRAAKFkwAChZQAAoWVAAKFlwAChZgAAoYTAAKGFQAChhcAAoYZAAKGHAAChh0AAoYeAAKGHwAChiAAAoYiAAKGJAAChiUAAoYmAAKGKAAChikAAoakAAKGpgAChqkAAoarAAKGrgAChq8AAoawAAKGsQAChrIAAoa0AAKGtgAChrcAAoa4AAKGugAChrsAAoa+AAKHOQAChzsAAoc9AAKHPwACh0IAAodDAAKHRAACh0UAAodGAAKHSAACh0oAAodLAAKHTAACh04AAodPAAKHygACh8wAAofOAAKH0AACh9MAAofUAAKH1QACh9YAAofXAAKH2QACh9sAAofcAAKH3QACh98AAofgAAKIWwACiF0AAohfAAKIYQACiGQAAohlAAKIZgACiGcAAohoAAKIagACiGwAAohtAAKIbgACiHAAAohxAAKJBAACiScAAolHAAKJZwACiWkAAolrAAKJbQACiW8AAolyAAKJcwACiXQAAol3AAKJeAACiXoAAol7AAKJfQACiYAAAomBAAKJggACiYUAAomGAAKJiwACiaQAAomtAAKJrwACibEAAom6AAKJvQACicAAAonCAAKKCwACii8AAopWAAKKegACin0AAop/AAKKgQACioMAAoqFAAKKhwACiogAAoqLAAKKpAACisUAAorHAAKKyQACissAAorNAAKKzwACitEAAorTAAKK1QACivYAAor5AAKK/AACiv8AAosCAAKLBQACiwgAAosLAAKLDgACixAAAouLAAKLjQACi48AAouRAAKLlAACi5UAAouWAAKLlwACi5gAAouaAAKLnAACi50AAoueAAKLoAACi6EAAowcAAKMHgACjCAAAowiAAKMJQACjCYAAownAAKMKAACjCkAAowrAAKMLQACjC4AAowvAAKMMQACjDIAAoytAAKMrwACjLIAAoy0AAKMtwACjLgAAoy5AAKMugACjLsAAoy9AAKMvwACjMAAAozBAAKMwwACjMQAAozdAAKM3gACjN8AAozhAAKNXAACjV4AAo1gAAKNYgACjWUAAo1mAAKNZwACjWgAAo1pAAKNawACjW0AAo1uAAKNbwACjXEAAo1yAAKN7QACje8AAo3xAAKN8wACjfYAAo33AAKN+AACjfkAAo36AAKN/AACjf4AAo3/AAKOAAACjgIAAo4DAAKOfgACjoAAAo6CAAKOhAACjocAAo6IAAKOiQACjooAAo6LAAKOjQACjo8AAo6QAAKOkQACjpMAAo6UAAKPDwACjxEAAo8TAAKPFQACjxgAAo8ZAAKPGgACjxsAAo8cAAKPHgACjyAAAo8hAAKPIgACjyQAAo8lAAKPoAACj6IAAo+kAAKPpgACj6kAAo+qAAKPqwACj6wAAo+tAAKPrwACj7EAAo+yAAKPswACj7UAAo+2AAKP/wACkCMAApBKAAKQbgACkHEAApBzAAKQdQACkHcAApB5AAKQewACkHwAApB/AAKQmAACkLUAApC3AAKQuQACkLsAApC9AAKQvwACkMEAApDDAAKQ4AACkOMAApDmAAKQ6QACkOwAApDvAAKQ8gACkPUAApD3AAKRcgACkXQAApF2AAKReAACkXsAApF8AAKRfQACkX4AApF/AAKRgQACkYMAApGEAAKRhQACkYcAApGIAAKSAwACkgUAApIHAAKSCQACkgwAApINAAKSDgACkg8AApIQAAKSEgACkhQAApIVAAKSFgACkhgAApIZAAKSlAACkpYAApKYAAKSmgACkp0AApKeAAKSnwACkqAAApKhAAKSowACkqUAApKmAAKSpwACkqkAApKqAAKTJQACkycAApMqAAKTLAACky8AApMwAAKTMQACkzIAApMzAAKTNQACkzcAApM4AAKTOQACkzsAApM8AAKTPwACk7oAApO8AAKTvgACk8AAApPDAAKTxAACk8UAApPGAAKTxwACk8kAApPLAAKTzAACk80AApPPAAKT0AAClEsAApRNAAKUTwAClFEAApRUAAKUVQAClFYAApRXAAKUWAAClFoAApRcAAKUXQAClF4AApRgAAKUYQAClNwAApTeAAKU4AAClOIAApTlAAKU5gAClOcAApToAAKU6QAClOsAApTtAAKU7gAClO8AApTxAAKU8gAClYUAApWoAAKVyAAClegAApXqAAKV7AACle4AApXwAAKV8wAClfQAApX1AAKV+AAClfkAApX7AAKV/AAClf4AApYBAAKWAgAClgMAApYGAAKWBwAClgwAApYlAAKWLgACljAAApYyAAKWOwAClj4AApZBAAKWQwAClowAApawAAKW1wAClvsAApb+AAKXAAAClwIAApcEAAKXBgAClwgAApcJAAKXDAAClyUAApdGAAKXSAACl0oAApdMAAKXTgACl1AAApdSAAKXVAACl1YAApd3AAKXegACl30AApeAAAKXgwACl4YAApeJAAKXjAACl48AApeRAAKYDAACmA4AApgQAAKYEgACmBUAApgWAAKYFwACmBgAApgZAAKYGwACmB0AApgeAAKYHwACmCEAApgiAAKYnQACmJ8AApihAAKYowACmKYAApinAAKYqAACmKkAApiqAAKYrAACmK4AApivAAKYsAACmLIAApizAAKZLgACmTAAApkzAAKZNQACmTgAApk5AAKZOgACmTsAApk8AAKZPgACmUAAAplBAAKZQgACmUQAAplFAAKZXgACmV8AAplgAAKZYgACmd0AApnfAAKZ4QACmeMAApnmAAKZ5wACmegAApnpAAKZ6gACmewAApnuAAKZ7wACmfAAApnyAAKZ8wACmm4AAppwAAKacgACmnQAApp3AAKaeAACmnkAApp6AAKaewACmn0AApp/AAKagAACmoEAApqDAAKahAACmv8AApsBAAKbAwACmwUAApsIAAKbCQACmwoAApsLAAKbDAACmw4AApsQAAKbEQACmxIAApsUAAKbFQACm5AAApuSAAKblAACm5YAApuZAAKbmgACm5sAApucAAKbnQACm58AApuhAAKbogACm6MAApulAAKbpgACnCEAApwjAAKcJQACnCcAApwqAAKcKwACnCwAApwtAAKcLgACnDAAApwyAAKcMwACnDQAApw2AAKcNwACnIAAApykAAKcywACnO8AApzyAAKc9AACnPYAApz4AAKc+gACnPwAApz9AAKdAAACnRkAAp02AAKdOAACnToAAp08AAKdPgACnUAAAp1CAAKdRAACnWEAAp1kAAKdZwACnWoAAp1tAAKdcAACnXMAAp12AAKdeAACnfMAAp31AAKd9wACnfkAAp38AAKd/QACnf4AAp3/AAKeAAACngIAAp4EAAKeBQACngYAAp4IAAKeCQACnoQAAp6GAAKeiAACnooAAp6NAAKejgACno8AAp6QAAKekQACnpMAAp6VAAKelgACnpcAAp6ZAAKemgACnxUAAp8XAAKfGQACnxsAAp8eAAKfHwACnyAAAp8hAAKfIgACnyQAAp8mAAKfJwACnygAAp8qAAKfKwACn6YAAp+oAAKfqgACn6wAAp+vAAKfsAACn7EAAp+yAAKfswACn7UAAp+3AAKfuAACn7kAAp+7AAKfvAACoDcAAqA5AAKgOwACoD0AAqBAAAKgQQACoEIAAqBDAAKgRAACoEYAAqBIAAKgSQACoEoAAqBMAAKgTQACoMgAAqDKAAKgzAACoM4AAqDRAAKg0gACoNMAAqDUAAKg1QACoNcAAqDZAAKg2gACoNsAAqDdAAKg3gACoVkAAqFbAAKhXQACoV8AAqFiAAKhYwACoWQAAqFlAAKhZgACoWgAAqFqAAKhawACoWwAAqFuAAKhbwACogIAAqIlAAKiRQAComUAAqJnAAKiaQAComsAAqJtAAKicAAConEAAqJyAAKidQAConYAAqJ4AAKieQAConwAAqJ/AAKigAACooEAAqKEAAKihQACoooAAqKjAAKirAACoq4AAqKwAAKiuQACorwAAqK/AAKiwQACowoAAqMuAAKjVQACo3kAAqN8AAKjfgACo4AAAqOCAAKjhAACo4YAAqOHAAKjigACo6MAAqPEAAKjxgACo8gAAqPKAAKjzAACo84AAqPQAAKj0gACo9QAAqP1AAKj+AACo/sAAqP+AAKkAQACpAQAAqQHAAKkCgACpA0AAqQPAAKkigACpIwAAqSOAAKkkAACpJMAAqSUAAKklQACpJYAAqSXAAKkmQACpJsAAqScAAKknQACpJ8AAqSgAAKlGwACpR0AAqUfAAKlIQACpSQAAqUlAAKlJgACpScAAqUoAAKlKgACpSwAAqUtAAKlLgACpTAAAqUxAAKlrAACpa4AAqWxAAKlswACpbYAAqW3AAKluAACpbkAAqW6AAKlvAACpb4AAqW/AAKlwAACpcIAAqXDAAKl3AACpd0AAqXeAAKl4AACplsAAqZdAAKmXwACpmEAAqZkAAKmZQACpmYAAqZnAAKmaAACpmoAAqZsAAKmbQACpm4AAqZwAAKmcQACpuwAAqbuAAKm8AACpvIAAqb1AAKm9gACpvcAAqb4AAKm+QACpvsAAqb9AAKm/gACpv8AAqcBAAKnAgACp30AAqd/AAKngQACp4MAAqeGAAKnhwACp4gAAqeJAAKnigACp4wAAqeOAAKnjwACp5AAAqeSAAKnkwACqA4AAqgQAAKoEgACqBQAAqgXAAKoGAACqBkAAqgaAAKoGwACqB0AAqgfAAKoIAACqCEAAqgjAAKoJAACqJ8AAqihAAKoowACqKUAAqioAAKoqQACqKoAAqirAAKorAACqK4AAqiwAAKosQACqLIAAqi0AAKotQACqP4AAqkiAAKpSQACqW0AAqlwAAKpcgACqXQAAql2AAKpeAACqXoAAql7AAKpfgACqZcAAqm0AAKptgACqbgAAqm6AAKpvAACqb4AAqnAAAKpwgACqd8AAqniAAKp5QACqegAAqnrAAKp7gACqfEAAqn0AAKp9gACqnEAAqpzAAKqdQACqncAAqp6AAKqewACqnwAAqp9AAKqfgACqoAAAqqCAAKqgwACqoQAAqqGAAKqhwACqwIAAqsEAAKrBwACqwkAAqsMAAKrDQACqw4AAqsPAAKrEAACqxIAAqsUAAKrFQACqxYAAqsYAAKrGQACq5QAAquWAAKrmAACq5oAAqudAAKrngACq58AAqugAAKroQACq6MAAqulAAKrpgACq6cAAqupAAKrqgACrCUAAqwnAAKsKgACrCwAAqwvAAKsMAACrDEAAqwyAAKsMwACrDUAAqw3AAKsOAACrDkAAqw7AAKsPAACrL8AAqzjAAKtBwACrSoAAq1RAAKtcQACrZgAAq2/AAKt3wACrgMAAq4nAAKuKQACriwAAq4uAAKuMAACrjIAAq41AAKuOAACrjoAAq48AAKuPwACrkEAAq5DAAKuRgACrkkAAq5KAAKuTwACrmgAAq5tAAKubwACrnQAAq53AAKueQACrsIAAq7mAAKvDQACrzEAAq80AAKvNgACrzgAAq86AAKvPAACrz4AAq8/AAKvQgACr1sAAq+AAAKvggACr4QAAq+GAAKviAACr4oAAq+MAAKvjgACr5AAAq+SAAKvtwACr7oAAq+9AAKvwAACr8MAAq/GAAKvyQACr8wAAq/PAAKv0gACr9QAArBPAAKwUQACsFQAArBWAAKwWQACsFoAArBbAAKwXAACsF0AArBfAAKwYQACsGIAArBjAAKwZQACsGYAArB3AAKweAACsHoAArD1AAKw9wACsPkAArD7AAKw/gACsP8AArEAAAKxAQACsQIAArEEAAKxBgACsQcAArEIAAKxCgACsQsAArGGAAKxiAACsYsAArGNAAKxkAACsZEAArGSAAKxkwACsZQAArGWAAKxmAACsZkAArGaAAKxnAACsZ0AArGuAAKxrwACsbEAArIsAAKyLgACsjAAArIyAAKyNQACsjYAArI3AAKyOAACsjkAArI7AAKyPQACsj4AArI/AAKyQQACskIAArK9AAKyvwACssIAArLEAAKyxwACssgAArLJAAKyygACsssAArLNAAKyzwACstAAArLRAAKy0wACstQAArLlAAKy5gACsugAArNjAAKzZQACs2cAArNpAAKzbAACs20AArNuAAKzbwACs3AAArNyAAKzdAACs3UAArN2AAKzeAACs3kAArP0AAKz9gACs/kAArP7AAKz/gACs/8AArQAAAK0AQACtAIAArQEAAK0BgACtAcAArQIAAK0CgACtAsAArQkAAK0JQACtCYAArQoAAK0owACtKUAArSnAAK0qQACtKwAArStAAK0rgACtK8AArSwAAK0sgACtLQAArS1AAK0tgACtLgAArS5AAK1NAACtTYAArU5AAK1OwACtT4AArU/AAK1QAACtUEAArVCAAK1RAACtUYAArVHAAK1SAACtUoAArVLAAK1XgACtXcAArWMAAK1jwACtZIAArWVAAK1mAACtZsAArWwAAK1swACtbYAArW5AAK1vAACtb8AArXBAAK11AACteEAArX4AAK2EQACthkAArasAAK2zwACtu8AArcPAAK3EQACtxMAArcVAAK3FwACtxoAArcbAAK3HAACtx8AArcgAAK3IgACtyMAArclAAK3KAACtykAArcqAAK3LQACty4AArczAAK3TAACt1UAArdXAAK3WQACt2IAArdlAAK3aAACt2oAArezAAK31wACt/4AArgiAAK4JQACuCcAArgpAAK4KwACuC0AArgvAAK4MAACuDMAArhMAAK4bQACuG8AArhxAAK4cwACuHUAArh3AAK4eQACuHsAArh9AAK4ngACuKEAArikAAK4pwACuKoAAritAAK4sAACuLMAAri2AAK4uAACuTMAArk1AAK5NwACuTkAArk8AAK5PQACuT4AArk/AAK5QAACuUIAArlEAAK5RQACuUYAArlIAAK5SQACucQAArnGAAK5yAACucoAArnNAAK5zgACuc8AArnQAAK50QACudMAArnVAAK51gACudcAArnZAAK52gACulUAArpXAAK6WgACulwAArpfAAK6YAACumEAArpiAAK6YwACumUAArpnAAK6aAACumkAArprAAK6bAACuoUAArqGAAK6hwACuokAArsEAAK7BgACuwgAArsKAAK7DQACuw4AArsPAAK7EAACuxEAArsTAAK7FQACuxYAArsXAAK7GQACuxoAAruVAAK7lwACu5kAArubAAK7ngACu58AArugAAK7oQACu6IAArukAAK7pgACu6cAAruoAAK7qgACu6sAArwmAAK8KAACvCoAArwsAAK8LwACvDAAArwxAAK8MgACvDMAArw1AAK8NwACvDgAArw5AAK8OwACvDwAAry3AAK8uQACvLsAAry9AAK8wAACvMEAArzCAAK8wwACvMQAArzGAAK8yAACvMkAArzKAAK8zAACvM0AAr1IAAK9SgACvUwAAr1OAAK9UQACvVIAAr1TAAK9VAACvVUAAr1XAAK9WQACvVoAAr1bAAK9XQACvV4AAr2nAAK9ywACvfIAAr4WAAK+GQACvhsAAr4dAAK+HwACviEAAr4jAAK+JAACvicAAr5AAAK+XQACvl8AAr5hAAK+YwACvmUAAr5nAAK+aQACvmsAAr6IAAK+iwACvo4AAr6RAAK+lAACvpcAAr6aAAK+nQACvp8AAr8aAAK/HAACvx4AAr8gAAK/IwACvyQAAr8lAAK/JgACvycAAr8pAAK/KwACvywAAr8tAAK/LwACvzAAAr+rAAK/rQACv68AAr+xAAK/tAACv7UAAr+2AAK/twACv7gAAr+6AAK/vAACv70AAr++AAK/wAACv8EAAsA8AALAPgACwEAAAsBCAALARQACwEYAAsBHAALASAACwEkAAsBLAALATQACwE4AAsBPAALAUQACwFIAAsDNAALAzwACwNEAAsDTAALA1gACwNcAAsDYAALA2QACwNoAAsDcAALA3gACwN8AAsDgAALA4gACwOMAAsFeAALBYAACwWIAAsFkAALBZwACwWgAAsFpAALBagACwWsAAsFtAALBbwACwXAAAsFxAALBcwACwXQAAsHvAALB8QACwfMAAsH1AALB+AACwfkAAsH6AALB+wACwfwAAsH+AALCAAACwgEAAsICAALCBAACwgUAAsKAAALCggACwoQAAsKGAALCiQACwooAAsKLAALCjAACwo0AAsKPAALCkQACwpIAAsKTAALClQACwpYAAsMpAALDTAACw2wAAsOMAALDjgACw5AAAsOSAALDlAACw5cAAsOYAALDmQACw5wAAsOdAALDnwACw6AAAsOiAALDpQACw6YAAsOnAALDqgACw6sAAsOwAALDyQACw9IAAsPUAALD1gACw98AAsPiAALD5QACw+cAAsQwAALEVAACxHsAAsSfAALEogACxKQAAsSmAALEqAACxKoAAsSsAALErQACxLAAAsTJAALE6gACxOwAAsTuAALE8AACxPIAAsT0AALE9gACxPgAAsT6AALFGwACxR4AAsUhAALFJAACxScAAsUqAALFLQACxTAAAsUzAALFNQACxbAAAsWyAALFtAACxbYAAsW5AALFugACxbsAAsW8AALFvQACxb8AAsXBAALFwgACxcMAAsXFAALFxgACxkEAAsZDAALGRQACxkcAAsZKAALGSwACxkwAAsZNAALGTgACxlAAAsZSAALGUwACxlQAAsZWAALGVwACxtIAAsbUAALG1wACxtkAAsbcAALG3QACxt4AAsbfAALG4AACxuIAAsbkAALG5QACxuYAAsboAALG6QACxwIAAscDAALHBAACxwYAAseBAALHgwACx4UAAseHAALHigACx4sAAseMAALHjQACx44AAseQAALHkgACx5MAAseUAALHlgACx5cAAsgSAALIFAACyBYAAsgYAALIGwACyBwAAsgdAALIHgACyB8AAsghAALIIwACyCQAAsglAALIJwACyCgAAsijAALIpQACyKcAAsipAALIrAACyK0AAsiuAALIrwACyLAAAsiyAALItAACyLUAAsi2AALIuAACyLkAAsk0AALJNgACyTgAAsk6AALJPQACyT4AAsk/AALJQAACyUEAAslDAALJRQACyUYAAslHAALJSQACyUoAAsnFAALJxwACyckAAsnLAALJzgACyc8AAsnQAALJ0QACydIAAsnUAALJ1gACydcAAsnYAALJ2gACydsAAsokAALKSAACym8AAsqTAALKlgACypgAAsqaAALKnAACyp4AAsqgAALKoQACyqQAAsq9AALK2gACytwAAsreAALK4AACyuIAAsrkAALK5gACyugAAssFAALLCAACywsAAssOAALLEQACyxQAAssXAALLGgACyxwAAsuXAALLmQACy5sAAsudAALLoAACy6EAAsuiAALLowACy6QAAsumAALLqAACy6kAAsuqAALLrAACy60AAswoAALMKgACzCwAAswuAALMMQACzDIAAswzAALMNAACzDUAAsw3AALMOQACzDoAAsw7AALMPQACzD4AAsy5AALMuwACzL0AAsy/AALMwgACzMMAAszEAALMxQACzMYAAszIAALMygACzMsAAszMAALMzgACzM8AAs1KAALNTAACzU8AAs1RAALNVAACzVUAAs1WAALNVwACzVgAAs1aAALNXAACzV0AAs1eAALNYAACzWEAAs1kAALN3wACzeEAAs3jAALN5QACzegAAs3pAALN6gACzesAAs3sAALN7gACzfAAAs3xAALN8gACzfQAAs31AALOcAACznIAAs50AALOdgACznkAAs56AALOewACznwAAs59AALOfwACzoEAAs6CAALOgwACzoUAAs6GAALPAQACzwMAAs8FAALPBwACzwoAAs8LAALPDAACzw0AAs8OAALPEAACzxIAAs8TAALPFAACzxYAAs8XAALPqgACz80AAs/tAALQDQAC0A8AAtARAALQEwAC0BUAAtAYAALQGQAC0BoAAtAdAALQHgAC0CAAAtAhAALQIwAC0CYAAtAnAALQKAAC0CsAAtAsAALQMQAC0EoAAtBTAALQVQAC0FcAAtBgAALQYwAC0GYAAtBoAALQsQAC0NUAAtD8AALRIAAC0SMAAtElAALRJwAC0SkAAtErAALRLQAC0S4AAtExAALRSgAC0WsAAtFtAALRbwAC0XEAAtFzAALRdQAC0XcAAtF5AALRewAC0ZwAAtGfAALRogAC0aUAAtGoAALRqwAC0a4AAtGxAALRtAAC0bYAAtIxAALSMwAC0jUAAtI3AALSOgAC0jsAAtI8AALSPQAC0j4AAtJAAALSQgAC0kMAAtJEAALSRgAC0kcAAtLCAALSxAAC0sYAAtLIAALSywAC0swAAtLNAALSzgAC0s8AAtLRAALS0wAC0tQAAtLVAALS1wAC0tgAAtNTAALTVQAC01gAAtNaAALTXQAC014AAtNfAALTYAAC02EAAtNjAALTZQAC02YAAtNnAALTaQAC02oAAtODAALThAAC04UAAtOHAALUAgAC1AQAAtQGAALUCAAC1AsAAtQMAALUDQAC1A4AAtQPAALUEQAC1BMAAtQUAALUFQAC1BcAAtQYAALUkwAC1JUAAtSXAALUmQAC1JwAAtSdAALUngAC1J8AAtSgAALUogAC1KQAAtSlAALUpgAC1KgAAtSpAALVJAAC1SYAAtUoAALVKgAC1S0AAtUuAALVLwAC1TAAAtUxAALVMwAC1TUAAtU2AALVNwAC1TkAAtU6AALVtQAC1bcAAtW5AALVuwAC1b4AAtW/AALVwAAC1cEAAtXCAALVxAAC1cYAAtXHAALVyAAC1coAAtXLAALWRgAC1kgAAtZKAALWTAAC1k8AAtZQAALWUQAC1lIAAtZTAALWVQAC1lcAAtZYAALWWQAC1lsAAtZcAALWpQAC1skAAtbwAALXFAAC1xcAAtcZAALXGwAC1x0AAtcfAALXIQAC1yIAAtclAALXPgAC11sAAtddAALXXwAC12EAAtdjAALXZQAC12cAAtdpAALXhgAC14kAAteMAALXjwAC15IAAteVAALXmAAC15sAAtedAALYGAAC2BoAAtgdAALYHwAC2CIAAtgjAALYJAAC2CUAAtgmAALYKAAC2CoAAtgrAALYLAAC2C4AAtgvAALYqgAC2KwAAtiuAALYsAAC2LMAAti0AALYtQAC2LYAAti3AALYuQAC2LsAAti8AALYvQAC2L8AAtjAAALZOwAC2T0AAtk/AALZQQAC2UQAAtlFAALZRgAC2UcAAtlIAALZSgAC2UwAAtlNAALZTgAC2VAAAtlRAALZzAAC2c4AAtnRAALZ0wAC2dYAAtnXAALZ2AAC2dkAAtnaAALZ3AAC2d4AAtnfAALZ4AAC2eIAAtnjAALaXgAC2mAAAtpiAALaZAAC2mcAAtpoAALaaQAC2moAAtprAALabQAC2m8AAtpwAALacQAC2nMAAtp0AALa7wAC2vEAAtrzAALa9QAC2vgAAtr5AALa+gAC2vsAAtr8AALa/gAC2wAAAtsBAALbAgAC2wQAAtsFAALbgAAC24IAAtuEAALbhgAC24kAAtuKAALbiwAC24wAAtuNAALbjwAC25EAAtuSAALbkwAC25UAAtuWAALcKQAC3EwAAtxsAALcjAAC3I4AAtyQAALckgAC3JQAAtyXAALcmAAC3JkAAtycAALcnQAC3J8AAtygAALcogAC3KUAAtymAALcpwAC3KoAAtyrAALcsAAC3MkAAtzSAALc1AAC3NYAAtzfAALc4gAC3OUAAtznAALdMAAC3VQAAt17AALdnwAC3aIAAt2kAALdpgAC3agAAt2qAALdrAAC3a0AAt2wAALdyQAC3eoAAt3sAALd7gAC3fAAAt3yAALd9AAC3fYAAt34AALd+gAC3hsAAt4eAALeIQAC3iQAAt4nAALeKgAC3i0AAt4wAALeMwAC3jUAAt6wAALesgAC3rQAAt62AALeuQAC3roAAt67AALevAAC3r0AAt6/AALewQAC3sIAAt7DAALexQAC3sYAAt9BAALfQwAC30UAAt9HAALfSgAC30sAAt9MAALfTQAC304AAt9QAALfUgAC31MAAt9UAALfVgAC31cAAt/SAALf1AAC39cAAt/ZAALf3AAC390AAt/eAALf3wAC3+AAAt/iAALf5AAC3+UAAt/mAALf6AAC3+kAAuACAALgAwAC4AQAAuAGAALggQAC4IMAAuCFAALghwAC4IoAAuCLAALgjAAC4I0AAuCOAALgkAAC4JIAAuCTAALglAAC4JYAAuCXAALhEgAC4RQAAuEWAALhGAAC4RsAAuEcAALhHQAC4R4AAuEfAALhIQAC4SMAAuEkAALhJQAC4ScAAuEoAALhowAC4aUAAuGnAALhqQAC4awAAuGtAALhrgAC4a8AAuGwAALhsgAC4bQAAuG1AALhtgAC4bgAAuG5AALiNAAC4jYAAuI4AALiOgAC4j0AAuI+AALiPwAC4kAAAuJBAALiQwAC4kUAAuJGAALiRwAC4kkAAuJKAALixQAC4scAAuLJAALiywAC4s4AAuLPAALi0AAC4tEAAuLSAALi1AAC4tYAAuLXAALi2AAC4toAAuLbAALjJAAC40gAAuNvAALjkwAC45YAAuOYAALjmgAC45wAAuOeAALjoAAC46EAAuOkAALjvQAC49oAAuPcAALj3gAC4+AAAuPiAALj5AAC4+YAAuPoAALkBQAC5AgAAuQLAALkDgAC5BEAAuQUAALkFwAC5BoAAuQcAALklwAC5JkAAuSbAALknQAC5KAAAuShAALkogAC5KMAAuSkAALkpgAC5KgAAuSpAALkqgAC5KwAAuStAALlKAAC5SoAAuUsAALlLgAC5TEAAuUyAALlMwAC5TQAAuU1AALlNwAC5TkAAuU6AALlOwAC5T0AAuU+AALluQAC5bsAAuW9AALlvwAC5cIAAuXDAALlxAAC5cUAAuXGAALlyAAC5coAAuXLAALlzAAC5c4AAuXPAALmSgAC5kwAAuZPAALmUQAC5lQAAuZVAALmVgAC5lcAAuZYAALmWgAC5lwAAuZdAALmXgAC5mAAAuZhAALm3AAC5t4AAubgAALm4gAC5uUAAubmAALm5wAC5ugAAubpAALm6wAC5u0AAubuAALm7wAC5vEAAubyAALnbQAC528AAudxAALncwAC53YAAud3AALneAAC53kAAud6AALnfAAC534AAud/AALngAAC54IAAueDAALn/gAC6AAAAugCAALoBAAC6AcAAugIAALoCQAC6AoAAugLAALoDQAC6A8AAugQAALoEQAC6BMAAugUAALopwAC6MoAAujqAALpCgAC6QwAAukOAALpEAAC6RIAAukVAALpFgAC6RcAAukaAALpGwAC6R0AAukeAALpIQAC6SQAAuklAALpJgAC6SkAAukqAALpLwAC6UgAAulRAALpUwAC6VUAAuleAALpYQAC6WQAAulmAALprwAC6dMAAun6AALqHgAC6iEAAuojAALqJQAC6icAAuopAALqKwAC6iwAAuovAALqSAAC6mkAAuprAALqbQAC6m8AAupxAALqcwAC6nUAAup3AALqeQAC6poAAuqdAALqoAAC6qMAAuqmAALqqQAC6qwAAuqvAALqsgAC6rQAAusvAALrMQAC6zMAAus1AALrOAAC6zkAAus6AALrOwAC6zwAAus+AALrQAAC60EAAutCAALrRAAC60UAAuvAAALrwgAC68QAAuvGAALryQAC68oAAuvLAALrzAAC680AAuvPAALr0QAC69IAAuvTAALr1QAC69YAAuxRAALsUwAC7FYAAuxYAALsWwAC7FwAAuxdAALsXgAC7F8AAuxhAALsYwAC7GQAAuxlAALsZwAC7GgAAuyBAALsggAC7IMAAuyFAALtAAAC7QIAAu0EAALtBgAC7QkAAu0KAALtCwAC7QwAAu0NAALtDwAC7REAAu0SAALtEwAC7RUAAu0WAALtkQAC7ZMAAu2VAALtlwAC7ZoAAu2bAALtnAAC7Z0AAu2eAALtoAAC7aIAAu2jAALtpAAC7aYAAu2nAALuIgAC7iQAAu4mAALuKAAC7isAAu4sAALuLQAC7i4AAu4vAALuMQAC7jMAAu40AALuNQAC7jcAAu44AALuswAC7rUAAu63AALuuQAC7rwAAu69AALuvgAC7r8AAu7AAALuwgAC7sQAAu7FAALuxgAC7sgAAu7JAALvRAAC70YAAu9IAALvSgAC700AAu9OAALvTwAC71AAAu9RAALvUwAC71UAAu9WAALvVwAC71kAAu9aAALvowAC78cAAu/uAALwEgAC8BUAAvAXAALwGQAC8BsAAvAdAALwHwAC8CAAAvAjAALwPAAC8FkAAvBbAALwXQAC8F8AAvBhAALwYwAC8GUAAvBnAALwhAAC8IcAAvCKAALwjQAC8JAAAvCTAALwlgAC8JkAAvCbAALxFgAC8RgAAvEaAALxHAAC8R8AAvEgAALxIQAC8SIAAvEjAALxJQAC8ScAAvEoAALxKQAC8SsAAvEsAALxpwAC8akAAvGrAALxrQAC8bAAAvGxAALxsgAC8bMAAvG0AALxtgAC8bgAAvG5AALxugAC8bwAAvG9AALyOAAC8joAAvI8AALyPgAC8kEAAvJCAALyQwAC8kQAAvJFAALyRwAC8kkAAvJKAALySwAC8k0AAvJOAALyyQAC8ssAAvLOAALy0AAC8tMAAvLUAALy1QAC8tYAAvLXAALy2QAC8tsAAvLcAALy3QAC8t8AAvLgAALzWwAC810AAvNfAALzYQAC82QAAvNlAALzZgAC82cAAvNoAALzagAC82wAAvNtAALzbgAC83AAAvNxAALz7AAC8+4AAvPwAALz8gAC8/UAAvP2AALz9wAC8/gAAvP5AALz+wAC8/0AAvP+AALz/wAC9AEAAvQCAAL0fQAC9H8AAvSCAAL0hAAC9IcAAvSIAAL0iQAC9IoAAvSLAAL0jQAC9I8AAvSQAAL0kQAC9JMAAvSUAAL0pQAC9KYAAvSoAAL0uQAC9MQAAvThAAL07AAC9PoAAvUPAAL1IwAC9ToAAvVMAAL1xwAC9ckAAvXLAAL1zQAC9dAAAvXRAAL10gAC9dMAAvXUAAL11gAC9dgAAvXZAAL12gAC9dwAAvXdAAL2WAAC9loAAvZcAAL2XgAC9mEAAvZiAAL2YwAC9mQAAvZlAAL2ZwAC9mkAAvZqAAL2awAC9m0AAvZuAAL26QAC9usAAvbuAAL28AAC9vMAAvb0AAL29QAC9vYAAvb3AAL2+QAC9vsAAvb8AAL2/QAC9v8AAvcAAAL3kwAC97YAAvfWAAL39gAC9/gAAvf6AAL3/AAC9/4AAvgBAAL4AgAC+AMAAvgGAAL4BwAC+AkAAvgKAAL4DQAC+BAAAvgRAAL4EgAC+BUAAvgWAAL4GwAC+DQAAvg9AAL4PwAC+EEAAvhKAAL4TQAC+FAAAvhSAAL4mwAC+L8AAvjmAAL5CgAC+Q0AAvkPAAL5EQAC+RMAAvkVAAL5FwAC+RgAAvkbAAL5NAAC+VUAAvlXAAL5WQAC+VsAAvldAAL5XwAC+WEAAvljAAL5ZQAC+YYAAvmJAAL5jAAC+Y8AAvmSAAL5lQAC+ZgAAvmbAAL5ngAC+aAAAvobAAL6HQAC+h8AAvohAAL6JAAC+iUAAvomAAL6JwAC+igAAvoqAAL6LAAC+i0AAvouAAL6MAAC+jEAAvqsAAL6rgAC+rAAAvqyAAL6tQAC+rYAAvq3AAL6uAAC+rkAAvq7AAL6vQAC+r4AAvq/AAL6wQAC+sIAAvs9AAL7PwAC+0IAAvtEAAL7RwAC+0gAAvtJAAL7SgAC+0sAAvtNAAL7TwAC+1AAAvtRAAL7UwAC+1QAAvttAAL7bgAC+28AAvtxAAL77AAC++4AAvvwAAL78gAC+/UAAvv2AAL79wAC+/gAAvv5AAL7+wAC+/0AAvv+AAL7/wAC/AEAAvwCAAL8fQAC/H8AAvyBAAL8gwAC/IYAAvyHAAL8iAAC/IkAAvyKAAL8jAAC/I4AAvyPAAL8kAAC/JIAAvyTAAL9DgAC/RAAAv0SAAL9FAAC/RcAAv0YAAL9GQAC/RoAAv0bAAL9HQAC/R8AAv0gAAL9IQAC/SMAAv0kAAL9nwAC/aEAAv2jAAL9pQAC/agAAv2pAAL9qgAC/asAAv2sAAL9rgAC/bAAAv2xAAL9sgAC/bQAAv21AAL+MAAC/jIAAv40AAL+NgAC/jkAAv46AAL+OwAC/jwAAv49AAL+PwAC/kEAAv5CAAL+QwAC/kUAAv5GAAL+jwAC/rMAAv7aAAL+/gAC/wEAAv8DAAL/BQAC/wcAAv8JAAL/CwAC/wwAAv8PAAL/KAAC/0UAAv9HAAL/SQAC/0sAAv9NAAL/TwAC/1EAAv9TAAL/cAAC/3MAAv92AAL/eQAC/3wAAv9/AAL/ggAC/4UAAv+HAAMAAgADAAQAAwAGAAMACAADAAsAAwAMAAMADQADAA4AAwAPAAMAEQADABMAAwAUAAMAFQADABcAAwAYAAMAkwADAJUAAwCYAAMAmgADAJ0AAwCeAAMAnwADAKAAAwChAAMAowADAKUAAwCmAAMApwADAKkAAwCqAAMBJQADAScAAwEpAAMBKwADAS4AAwEvAAMBMAADATEAAwEyAAMBNAADATYAAwE3AAMBOAADAToAAwE7AAMBtgADAbgAAwG7AAMBvQADAcAAAwHBAAMBwgADAcMAAwHEAAMBxgADAcgAAwHJAAMBygADAcwAAwHNAAMCUAADAnQAAwKYAAMCuwADAuIAAwMCAAMDKQADA1AAAwNwAAMDlAADA7gAAwO6AAMDvQADA78AAwPBAAMDwwADA8YAAwPJAAMDywADA80AAwPQAAMD0gADA9QAAwPXAAMD2gADA9sAAwPgAAMD+QADA/4AAwQAAAMEBQADBAgAAwQKAAMEUwADBHcAAwSeAAMEwgADBMUAAwTHAAMEyQADBMsAAwTNAAMEzwADBNAAAwTTAAME7AADBREAAwUTAAMFFQADBRcAAwUZAAMFGwADBR0AAwUfAAMFIQADBSMAAwVIAAMFSwADBU4AAwVRAAMFVAADBVcAAwVaAAMFXQADBWAAAwVjAAMFZQADBeAAAwXiAAMF5QADBecAAwXqAAMF6wADBewAAwXtAAMF7gADBfAAAwXyAAMF8wADBfQAAwX2AAMF9wADBggAAwYJAAMGCwADBoYAAwaIAAMGigADBowAAwaPAAMGkAADBpEAAwaSAAMGkwADBpUAAwaXAAMGmAADBpkAAwabAAMGnAADBxcAAwcZAAMHHAADBx4AAwchAAMHIgADByMAAwckAAMHJQADBycAAwcpAAMHKgADBysAAwctAAMHLgADBz8AAwdAAAMHQgADB70AAwe/AAMHwQADB8MAAwfGAAMHxwADB8gAAwfJAAMHygADB8wAAwfOAAMHzwADB9AAAwfSAAMH0wADCE4AAwhQAAMIUwADCFUAAwhYAAMIWQADCFoAAwhbAAMIXAADCF4AAwhgAAMIYQADCGIAAwhkAAMIZQADCHYAAwh3AAMIeQADCPQAAwj2AAMI+AADCPoAAwj9AAMI/gADCP8AAwkAAAMJAQADCQMAAwkFAAMJBgADCQcAAwkJAAMJCgADCYUAAwmHAAMJigADCYwAAwmPAAMJkAADCZEAAwmSAAMJkwADCZUAAwmXAAMJmAADCZkAAwmbAAMJnAADCbUAAwm2AAMJtwADCbkAAwo0AAMKNgADCjgAAwo6AAMKPQADCj4AAwo/AAMKQAADCkEAAwpDAAMKRQADCkYAAwpHAAMKSQADCkoAAwrFAAMKxwADCsoAAwrMAAMKzwADCtAAAwrRAAMK0gADCtMAAwrVAAMK1wADCtgAAwrZAAMK2wADCtwAAwr8AAMLFQADCxoAAwsdAAMLIgADCyUAAwsnAAMLugADC90AAwv9AAMMHQADDB8AAwwhAAMMIwADDCUAAwwoAAMMKQADDCoAAwwtAAMMLgADDDAAAwwxAAMMNAADDDcAAww4AAMMOQADDDwAAww9AAMMQgADDFsAAwxkAAMMZgADDGgAAwxxAAMMdAADDHcAAwx5AAMMwgADDOYAAw0NAAMNMQADDTQAAw02AAMNOAADDToAAw08AAMNPgADDT8AAw1CAAMNWwADDXwAAw1+AAMNgAADDYIAAw2EAAMNhgADDYgAAw2KAAMNjAADDa0AAw2wAAMNswADDbYAAw25AAMNvAADDb8AAw3CAAMNxQADDccAAw5CAAMORAADDkYAAw5IAAMOSwADDkwAAw5NAAMOTgADDk8AAw5RAAMOUwADDlQAAw5VAAMOVwADDlgAAw7TAAMO1QADDtcAAw7ZAAMO3AADDt0AAw7eAAMO3wADDuAAAw7iAAMO5AADDuUAAw7mAAMO6AADDukAAw9kAAMPZgADD2kAAw9rAAMPbgADD28AAw9wAAMPcQADD3IAAw90AAMPdgADD3cAAw94AAMPegADD3sAAw+UAAMPlQADD5YAAw+YAAMQEwADEBUAAxAXAAMQGQADEBwAAxAdAAMQHgADEB8AAxAgAAMQIgADECQAAxAlAAMQJgADECgAAxApAAMQpAADEKYAAxCoAAMQqgADEK0AAxCuAAMQrwADELAAAxCxAAMQswADELUAAxC2AAMQtwADELkAAxC6AAMRNQADETcAAxE5AAMROwADET4AAxE/AAMRQAADEUEAAxFCAAMRRAADEUYAAxFHAAMRSAADEUoAAxFLAAMRxgADEcgAAxHKAAMRzAADEc8AAxHQAAMR0QADEdIAAxHTAAMR1QADEdcAAxHYAAMR2QADEdsAAxHcAAMSVwADElkAAxJbAAMSXQADEmAAAxJhAAMSYgADEmMAAxJkAAMSZgADEmgAAxJpAAMSagADEmwAAxJtAAMStgADEtoAAxMBAAMTJQADEygAAxMqAAMTLAADEy4AAxMwAAMTMgADEzMAAxM2AAMTTwADE2wAAxNuAAMTcAADE3IAAxN0AAMTdgADE3gAAxN6AAMTlwADE5oAAxOdAAMToAADE6MAAxOmAAMTqQADE6wAAxOuAAMUKQADFCsAAxQtAAMULwADFDIAAxQzAAMUNAADFDUAAxQ2AAMUOAADFDoAAxQ7AAMUPAADFD4AAxQ/AAMUugADFLwAAxS+AAMUwAADFMMAAxTEAAMUxQADFMYAAxTHAAMUyQADFMsAAxTMAAMUzQADFM8AAxTQAAMVSwADFU0AAxVPAAMVUQADFVQAAxVVAAMVVgADFVcAAxVYAAMVWgADFVwAAxVdAAMVXgADFWAAAxVhAAMV3AADFd4AAxXhAAMV4wADFeYAAxXnAAMV6AADFekAAxXqAAMV7AADFe4AAxXvAAMV8AADFfIAAxXzAAMWbgADFnAAAxZyAAMWdAADFncAAxZ4AAMWeQADFnoAAxZ7AAMWfQADFn8AAxaAAAMWgQADFoMAAxaEAAMW/wADFwEAAxcDAAMXBQADFwgAAxcJAAMXCgADFwsAAxcMAAMXDgADFxAAAxcRAAMXEgADFxQAAxcVAAMXkAADF5IAAxeVAAMXlwADF5oAAxebAAMXnAADF50AAxeeAAMXoAADF6IAAxejAAMXpAADF6YAAxenAAMXuAADF70AAxfAAAMXwgADF/sAAxf+AAMYAAADGAMAAxgGAAMYCQADGAwAAxgRAAMYtAADGNgAAxj8AAMZHAADGUMAAxlqAAMZigADGbEAAxnVAAMZ+AADGh8AAxpDAAMaZwADGosAAxqyAAMaswADGrUAAxq3AAMaugADGrwAAxq/AAMawQADGsMAAxrGAAMayAADGsoAAxrNAAMa0AADGtIAAxrUAAMa1gADGtkAAxrcAAMa3wADGuQAAxr9AAMbAgADGwQAAxsJAAMbDAADGw4AAxtXAAMbewADG6IAAxvGAAMbyQADG8sAAxvNAAMbzwADG9EAAxvTAAMb1AADG9cAAxvwAAMcFQADHBcAAxwZAAMcGwADHB0AAxwfAAMcIQADHCMAAxwlAAMcJwADHEwAAxxPAAMcUgADHFUAAxxYAAMcWwADHF4AAxxhAAMcZAADHGcAAxxpAAMc5AADHOYAAxzpAAMc6wADHO4AAxzvAAMc8AADHPEAAxzyAAMc9AADHPYAAxz3AAMc+AADHPoAAxz7AAMdDAADHQ0AAx0PAAMdigADHYwAAx2OAAMdkAADHZMAAx2UAAMdlQADHZYAAx2XAAMdmQADHZsAAx2cAAMdnQADHZ8AAx2gAAMeGwADHh0AAx4gAAMeIgADHiUAAx4mAAMeJwADHigAAx4pAAMeKwADHi0AAx4uAAMeLwADHjEAAx4yAAMeQwADHkQAAx5GAAMewQADHsMAAx7FAAMexwADHsoAAx7LAAMezAADHs0AAx7OAAMe0AADHtIAAx7TAAMe1AADHtYAAx7XAAMfUgADH1QAAx9XAAMfWQADH1wAAx9dAAMfXgADH18AAx9gAAMfYgADH2QAAx9lAAMfZgADH2gAAx9pAAMfegADH3sAAx99AAMf+AADH/oAAx/8AAMf/gADIAEAAyACAAMgAwADIAQAAyAFAAMgBwADIAkAAyAKAAMgCwADIA0AAyAOAAMgiQADIIsAAyCOAAMgkAADIJMAAyCUAAMglQADIJYAAyCXAAMgmQADIJsAAyCcAAMgnQADIJ8AAyCgAAMguQADILoAAyC7AAMgvQADITgAAyE6AAMhPAADIT4AAyFBAAMhQgADIUMAAyFEAAMhRQADIUcAAyFJAAMhSgADIUsAAyFNAAMhTgADIckAAyHLAAMhzgADIdAAAyHTAAMh1AADIdUAAyHWAAMh1wADIdkAAyHbAAMh3AADId0AAyHfAAMh4AADIfcAAyIQAAMiHQADIiAAAyIjAAMiJgADIjMAAyI2AAMiOQADIjwAAyI+AAMiVwADIm8AAyKIAAMjGwADIz4AAyNeAAMjfgADI4AAAyOCAAMjhAADI4YAAyOJAAMjigADI4sAAyOOAAMjjwADI5EAAyOSAAMjlAADI5cAAyOYAAMjmQADI5wAAyOdAAMjpgADI78AAyPIAAMjygADI8wAAyPVAAMj2AADI9sAAyPdAAMkJgADJEoAAyRxAAMklQADJJgAAySaAAMknAADJJ4AAySgAAMkogADJKMAAySmAAMkvwADJOAAAyTiAAMk5AADJOYAAyToAAMk6gADJOwAAyTuAAMk8AADJREAAyUUAAMlFwADJRoAAyUdAAMlIAADJSMAAyUmAAMlKQADJSsAAyWmAAMlqAADJaoAAyWsAAMlrwADJbAAAyWxAAMlsgADJbMAAyW1AAMltwADJbgAAyW5AAMluwADJbwAAyY3AAMmOQADJjsAAyY9AAMmQAADJkEAAyZCAAMmQwADJkQAAyZGAAMmSAADJkkAAyZKAAMmTAADJk0AAybIAAMmygADJs0AAybPAAMm0gADJtMAAybUAAMm1QADJtYAAybYAAMm2gADJtsAAybcAAMm3gADJt8AAyb4AAMm+QADJvoAAyb8AAMndwADJ3kAAyd7AAMnfQADJ4AAAyeBAAMnggADJ4MAAyeEAAMnhgADJ4gAAyeJAAMnigADJ4wAAyeNAAMoCAADKAoAAygMAAMoDgADKBEAAygSAAMoEwADKBQAAygVAAMoFwADKBkAAygaAAMoGwADKB0AAygeAAMomQADKJsAAyidAAMonwADKKIAAyijAAMopAADKKUAAyimAAMoqAADKKoAAyirAAMorAADKK4AAyivAAMpKgADKSwAAykuAAMpMAADKTMAAyk0AAMpNQADKTYAAyk3AAMpOQADKTsAAyk8AAMpPQADKT8AAylAAAMpuwADKb0AAym/AAMpwQADKcQAAynFAAMpxgADKccAAynIAAMpygADKcwAAynNAAMpzgADKdAAAynRAAMqGgADKj4AAyplAAMqiQADKowAAyqOAAMqkAADKpIAAyqUAAMqlgADKpcAAyqaAAMqswADKtAAAyrSAAMq1AADKtYAAyrYAAMq2gADKtwAAyreAAMq+wADKv4AAysBAAMrBAADKwcAAysKAAMrDQADKxAAAysSAAMrjQADK48AAyuSAAMrlAADK5cAAyuYAAMrmQADK5oAAyubAAMrnQADK58AAyugAAMroQADK6MAAyukAAMsHwADLCEAAywjAAMsJQADLCgAAywpAAMsKgADLCsAAywsAAMsLgADLDAAAywxAAMsMgADLDQAAyw1AAMssAADLLIAAyy0AAMstgADLLkAAyy6AAMsuwADLLwAAyy9AAMsvwADLMEAAyzCAAMswwADLMUAAyzGAAMtQQADLUMAAy1GAAMtSAADLUsAAy1MAAMtTQADLU4AAy1PAAMtUQADLVMAAy1UAAMtVQADLVcAAy1YAAMt0wADLdUAAy3XAAMt2QADLdwAAy3dAAMt3gADLd8AAy3gAAMt4gADLeQAAy3lAAMt5gADLegAAy3pAAMuZAADLmYAAy5oAAMuagADLm0AAy5uAAMubwADLnAAAy5xAAMucwADLnUAAy52AAMudwADLnkAAy56AAMu9QADLvcAAy75AAMu+wADLv4AAy7/AAMvAAADLwEAAy8CAAMvBAADLwYAAy8HAAMvCAADLwoAAy8LAAMvngADL8EAAy/hAAMwAQADMAMAAzAFAAMwBwADMAkAAzAMAAMwDQADMA4AAzARAAMwEgADMBQAAzAVAAMwFwADMBoAAzAbAAMwHAADMB8AAzAgAAMwJQADMD4AAzBHAAMwSQADMEsAAzBUAAMwVwADMFoAAzBcAAMwpQADMMkAAzDwAAMxFAADMRcAAzEZAAMxGwADMR0AAzEfAAMxIQADMSIAAzElAAMxPgADMV8AAzFhAAMxYwADMWUAAzFnAAMxaQADMWsAAzFtAAMxbwADMZAAAzGTAAMxlgADMZkAAzGcAAMxnwADMaIAAzGlAAMxqAADMaoAAzIlAAMyJwADMikAAzIrAAMyLgADMi8AAzIwAAMyMQADMjIAAzI0AAMyNgADMjcAAzI4AAMyOgADMjsAAzK2AAMyuAADMroAAzK8AAMyvwADMsAAAzLBAAMywgADMsMAAzLFAAMyxwADMsgAAzLJAAMyywADMswAAzNHAAMzSQADM0wAAzNOAAMzUQADM1IAAzNTAAMzVAADM1UAAzNXAAMzWQADM1oAAzNbAAMzXQADM14AAzN3AAMzeAADM3kAAzN7AAMz9gADM/gAAzP6AAMz/AADM/8AAzQAAAM0AQADNAIAAzQDAAM0BQADNAcAAzQIAAM0CQADNAsAAzQMAAM0hwADNIkAAzSLAAM0jQADNJAAAzSRAAM0kgADNJMAAzSUAAM0lgADNJgAAzSZAAM0mgADNJwAAzSdAAM1GAADNRoAAzUcAAM1HgADNSEAAzUiAAM1IwADNSQAAzUlAAM1JwADNSkAAzUqAAM1KwADNS0AAzUuAAM1qQADNasAAzWtAAM1rwADNbIAAzWzAAM1tAADNbUAAzW2AAM1uAADNboAAzW7AAM1vAADNb4AAzW/AAM2OgADNjwAAzY+AAM2QAADNkMAAzZEAAM2RQADNkYAAzZHAAM2SQADNksAAzZMAAM2TQADNk8AAzZQAAM2mQADNr0AAzbkAAM3CAADNwsAAzcNAAM3DwADNxEAAzcTAAM3FQADNxYAAzcZAAM3MgADN08AAzdRAAM3UwADN1UAAzdXAAM3WQADN1sAAzddAAM3egADN30AAzeAAAM3gwADN4YAAzeJAAM3jAADN48AAzeRAAM4DAADOA4AAzgQAAM4EgADOBUAAzgWAAM4FwADOBgAAzgZAAM4GwADOB0AAzgeAAM4HwADOCEAAzgiAAM4nQADOJ8AAzihAAM4owADOKYAAzinAAM4qAADOKkAAziqAAM4rAADOK4AAzivAAM4sAADOLIAAzizAAM5LgADOTAAAzkyAAM5NAADOTcAAzk4AAM5OQADOToAAzk7AAM5PQADOT8AAzlAAAM5QQADOUMAAzlEAAM5vwADOcEAAznDAAM5xQADOcgAAznJAAM5ygADOcsAAznMAAM5zgADOdAAAznRAAM50gADOdQAAznVAAM6UAADOlIAAzpUAAM6VgADOlkAAzpaAAM6WwADOlwAAzpdAAM6XwADOmEAAzpiAAM6YwADOmUAAzpmAAM64QADOuMAAzrlAAM65wADOuoAAzrrAAM67AADOu0AAzruAAM68AADOvIAAzrzAAM69AADOvYAAzr3AAM7cgADO3QAAzt2AAM7eAADO3sAAzt8AAM7fQADO34AAzt/AAM7gQADO4MAAzuEAAM7hQADO4cAAzuIAAM8GwADPD4AAzxeAAM8fgADPIAAAzyCAAM8hAADPIYAAzyJAAM8igADPIsAAzyOAAM8jwADPJEAAzySAAM8lAADPJcAAzyYAAM8mQADPJwAAzydAAM8ogADPLsAAzzEAAM8xgADPMgAAzzRAAM81AADPNcAAzzZAAM9IgADPUYAAz1tAAM9kQADPZQAAz2WAAM9mAADPZoAAz2cAAM9ngADPZ8AAz2iAAM9uwADPdwAAz3eAAM94AADPeIAAz3kAAM95gADPegAAz3qAAM97AADPg0AAz4QAAM+EwADPhYAAz4ZAAM+HAADPh8AAz4iAAM+JQADPicAAz6iAAM+pAADPqYAAz6oAAM+qwADPqwAAz6tAAM+rgADPq8AAz6xAAM+swADPrQAAz61AAM+twADPrgAAz8zAAM/NQADPzcAAz85AAM/PAADPz0AAz8+AAM/PwADP0AAAz9CAAM/RAADP0UAAz9GAAM/SAADP0kAAz/EAAM/xgADP8kAAz/LAAM/zgADP88AAz/QAAM/0QADP9IAAz/UAAM/1gADP9cAAz/YAAM/2gADP9sAAz/0AAM/9QADP/YAAz/4AANAcwADQHUAA0B3AANAeQADQHwAA0B9AANAfgADQH8AA0CAAANAggADQIQAA0CFAANAhgADQIgAA0CJAANBBAADQQYAA0EIAANBCgADQQ0AA0EOAANBDwADQRAAA0ERAANBEwADQRUAA0EWAANBFwADQRkAA0EaAANBlQADQZcAA0GZAANBmwADQZ4AA0GfAANBoAADQaEAA0GiAANBpAADQaYAA0GnAANBqAADQaoAA0GrAANCJgADQigAA0IqAANCLAADQi8AA0IwAANCMQADQjIAA0IzAANCNQADQjcAA0I4AANCOQADQjsAA0I8AANCtwADQrkAA0K7AANCvQADQsAAA0LBAANCwgADQsMAA0LEAANCxgADQsgAA0LJAANCygADQswAA0LNAANDFgADQzoAA0NhAANDhQADQ4gAA0OKAANDjAADQ44AA0OQAANDkgADQ5MAA0OWAANDrwADQ8wAA0POAAND0AADQ9IAA0PUAAND1gADQ9gAA0PaAAND9wADQ/oAA0P9AANEAAADRAMAA0QGAANECQADRAwAA0QOAANEiQADRIsAA0SOAANEkAADRJMAA0SUAANElQADRJYAA0SXAANEmQADRJsAA0ScAANEnQADRJ8AA0SgAANFGwADRR0AA0UfAANFIQADRSQAA0UlAANFJgADRScAA0UoAANFKgADRSwAA0UtAANFLgADRTAAA0UxAANFrAADRa4AA0WwAANFsgADRbUAA0W2AANFtwADRbgAA0W5AANFuwADRb0AA0W+AANFvwADRcEAA0XCAANGPQADRj8AA0ZCAANGRAADRkcAA0ZIAANGSQADRkoAA0ZLAANGTQADRk8AA0ZQAANGUQADRlMAA0ZUAANGzwADRtEAA0bTAANG1QADRtgAA0bZAANG2gADRtsAA0bcAANG3gADRuAAA0bhAANG4gADRuQAA0blAANHYAADR2IAA0dkAANHZgADR2kAA0dqAANHawADR2wAA0dtAANHbwADR3EAA0dyAANHcwADR3UAA0d2AANH8QADR/MAA0f1AANH9wADR/oAA0f7AANH/AADR/0AA0f+AANIAAADSAIAA0gDAANIBAADSAYAA0gHAANIGAADSBkAA0gbAANILAADSDUAA0g4AANIOwADSD0AA0h2AANIeQADSHsAA0h+AANIgQADSIQAA0iHAANJCgADSS4AA0lSAANJdQADSZwAA0m8AANJ4wADSgoAA0oqAANKTgADSnIAA0p0AANKdwADSnkAA0p7AANKfQADSoAAA0qDAANKhQADSocAA0qKAANKjAADSo4AA0qRAANKlAADSpUAA0qaAANKswADSrgAA0q6AANKvwADSsIAA0rEAANLDQADSzEAA0tYAANLfAADS38AA0uBAANLgwADS4UAA0uHAANLiQADS4oAA0uNAANLpgADS8sAA0vNAANLzwADS9EAA0vTAANL1QADS9cAA0vZAANL2wADS90AA0wCAANMBQADTAgAA0wLAANMDgADTBEAA0wUAANMFwADTBoAA0wdAANMHwADTJoAA0ycAANMnwADTKEAA0ykAANMpQADTKYAA0ynAANMqAADTKoAA0ysAANMrQADTK4AA0ywAANMsQADTMIAA0zDAANMxQADTUAAA01CAANNRAADTUYAA01JAANNSgADTUsAA01MAANNTQADTU8AA01RAANNUgADTVMAA01VAANNVgADTdEAA03TAANN1gADTdgAA03bAANN3AADTd0AA03eAANN3wADTeEAA03jAANN5AADTeUAA03nAANN6AADTfkAA036AANN/AADTncAA055AANOewADTn0AA06AAANOgQADToIAA06DAANOhAADToYAA06IAANOiQADTooAA06MAANOjQADTwgAA08KAANPDQADTw8AA08SAANPEwADTxQAA08VAANPFgADTxgAA08aAANPGwADTxwAA08eAANPHwADTzAAA08xAANPMwADT64AA0+wAANPsgADT7QAA0+3AANPuAADT7kAA0+6AANPuwADT70AA0+/AANPwAADT8EAA0/DAANPxAADUD8AA1BBAANQRAADUEYAA1BJAANQSgADUEsAA1BMAANQTQADUE8AA1BRAANQUgADUFMAA1BVAANQVgADUG8AA1BwAANQcQADUHMAA1DuAANQ8AADUPIAA1D0AANQ9wADUPgAA1D5AANQ+gADUPsAA1D9AANQ/wADUQAAA1EBAANRAwADUQQAA1F/AANRgQADUYQAA1GGAANRiQADUYoAA1GLAANRjAADUY0AA1GPAANRkQADUZIAA1GTAANRlQADUZYAA1G0AANRzQADUdIAA1HVAANR2gADUd0AA1HfAANScgADUpUAA1K1AANS1QADUtcAA1LZAANS2wADUt0AA1LgAANS4QADUuIAA1LlAANS5gADUugAA1LpAANS7AADUu8AA1LwAANS8QADUvQAA1L1AANS+gADUxMAA1McAANTHgADUyAAA1MpAANTLAADUy8AA1MxAANTegADU54AA1PFAANT6QADU+wAA1PuAANT8AADU/IAA1P0AANT9gADU/cAA1P6AANUEwADVDQAA1Q2AANUOAADVDoAA1Q8AANUPgADVEAAA1RCAANURAADVGUAA1RoAANUawADVG4AA1RxAANUdAADVHcAA1R6AANUfQADVH8AA1T6AANU/AADVP4AA1UAAANVAwADVQQAA1UFAANVBgADVQcAA1UJAANVCwADVQwAA1UNAANVDwADVRAAA1WLAANVjQADVY8AA1WRAANVlAADVZUAA1WWAANVlwADVZgAA1WaAANVnAADVZ0AA1WeAANVoAADVaEAA1YcAANWHgADViEAA1YjAANWJgADVicAA1YoAANWKQADVioAA1YsAANWLgADVi8AA1YwAANWMgADVjMAA1ZMAANWTQADVk4AA1ZQAANWywADVs0AA1bPAANW0QADVtQAA1bVAANW1gADVtcAA1bYAANW2gADVtwAA1bdAANW3gADVuAAA1bhAANXXAADV14AA1dgAANXYgADV2UAA1dmAANXZwADV2gAA1dpAANXawADV20AA1duAANXbwADV3EAA1dyAANX7QADV+8AA1fxAANX8wADV/YAA1f3AANX+AADV/kAA1f6AANX/AADV/4AA1f/AANYAAADWAIAA1gDAANYfgADWIAAA1iCAANYhAADWIcAA1iIAANYiQADWIoAA1iLAANYjQADWI8AA1iQAANYkQADWJMAA1iUAANZDwADWREAA1kTAANZFQADWRgAA1kZAANZGgADWRsAA1kcAANZHgADWSAAA1khAANZIgADWSQAA1klAANZbgADWZIAA1m5AANZ3QADWeAAA1niAANZ5AADWeYAA1noAANZ6gADWesAA1nuAANaBwADWiQAA1omAANaKAADWioAA1osAANaLgADWjAAA1oyAANaTwADWlIAA1pVAANaWAADWlsAA1peAANaYQADWmQAA1pmAANa4QADWuMAA1rlAANa5wADWuoAA1rrAANa7AADWu0AA1ruAANa8AADWvIAA1rzAANa9AADWvYAA1r3AANbcgADW3QAA1t2AANbeAADW3sAA1t8AANbfQADW34AA1t/AANbgQADW4MAA1uEAANbhQADW4cAA1uIAANcAwADXAUAA1wHAANcCQADXAwAA1wNAANcDgADXA8AA1wQAANcEgADXBQAA1wVAANcFgADXBgAA1wZAANclAADXJYAA1yZAANcmwADXJ4AA1yfAANcoAADXKEAA1yiAANcpAADXKYAA1ynAANcqAADXKoAA1yrAANdLgADXVIAA112AANdmQADXcAAA13gAANeBwADXi4AA15OAANecgADXpYAA16YAANemwADXp0AA16fAANeoQADXqQAA16nAANeqQADXqsAA16uAANesAADXrIAA161AANeuAADXrkAA16+AANe1wADXtwAA17eAANe4wADXuYAA17oAANfMQADX1UAA198AANfoAADX6MAA1+lAANfpwADX6kAA1+rAANfrQADX64AA1+xAANfygADX+8AA1/xAANf8wADX/UAA1/3AANf+QADX/sAA1/9AANf/wADYAEAA2AmAANgKQADYCwAA2AvAANgMgADYDUAA2A4AANgOwADYD4AA2BBAANgQwADYL4AA2DAAANgwwADYMUAA2DIAANgyQADYMoAA2DLAANgzAADYM4AA2DQAANg0QADYNIAA2DUAANg1QADYOYAA2DnAANg6QADYWQAA2FmAANhaAADYWoAA2FtAANhbgADYW8AA2FwAANhcQADYXMAA2F1AANhdgADYXcAA2F5AANhegADYfUAA2H3AANh+gADYfwAA2H/AANiAAADYgEAA2ICAANiAwADYgUAA2IHAANiCAADYgkAA2ILAANiDAADYh0AA2IeAANiIAADYpsAA2KdAANinwADYqEAA2KkAANipQADYqYAA2KnAANiqAADYqoAA2KsAANirQADYq4AA2KwAANisQADYywAA2MuAANjMQADYzMAA2M2AANjNwADYzgAA2M5AANjOgADYzwAA2M+AANjPwADY0AAA2NCAANjQwADY1QAA2NVAANjVwADY9IAA2PUAANj1gADY9gAA2PbAANj3AADY90AA2PeAANj3wADY+EAA2PjAANj5AADY+UAA2PnAANj6AADZGMAA2RlAANkaAADZGoAA2RtAANkbgADZG8AA2RwAANkcQADZHMAA2R1AANkdgADZHcAA2R5AANkegADZJMAA2SUAANklQADZJcAA2USAANlFAADZRYAA2UYAANlGwADZRwAA2UdAANlHgADZR8AA2UhAANlIwADZSQAA2UlAANlJwADZSgAA2WjAANlpQADZagAA2WqAANlrQADZa4AA2WvAANlsAADZbEAA2WzAANltQADZbYAA2W3AANluQADZboAA2XJAANl4gADZgsAA2YOAANmEQADZhQAA2YXAANmGgADZh0AA2YgAANmIwADZiYAA2YpAANmUgADZlUAA2ZYAANmWwADZl4AA2ZhAANmZAADZmcAA2ZqAANmbQADZnAAA2ZyAANmiQADZpcAA2awAANmuAADZtAAA2beAANncQADZ5QAA2e0AANn1AADZ9YAA2fYAANn2gADZ9wAA2ffAANn4AADZ+EAA2fkAANn5QADZ+cAA2foAANn6gADZ+0AA2fuAANn7wADZ/IAA2fzAANn+AADaBEAA2gaAANoHAADaB4AA2gnAANoKgADaC0AA2gvAANoeAADaJwAA2jDAANo5wADaOoAA2jsAANo7gADaPAAA2jyAANo9AADaPUAA2j4AANpEQADaTIAA2k0AANpNgADaTgAA2k6AANpPAADaT4AA2lAAANpQgADaWMAA2lmAANpaQADaWwAA2lvAANpcgADaXUAA2l4AANpewADaX0AA2n4AANp+gADafwAA2n+AANqAQADagIAA2oDAANqBAADagUAA2oHAANqCQADagoAA2oLAANqDQADag4AA2qJAANqiwADao0AA2qPAANqkgADapMAA2qUAANqlQADapYAA2qYAANqmgADapsAA2qcAANqngADap8AA2saAANrHAADax8AA2shAANrJAADayUAA2smAANrJwADaygAA2sqAANrLAADay0AA2suAANrMAADazEAA2tKAANrSwADa0wAA2tOAANryQADa8sAA2vNAANrzwADa9IAA2vTAANr1AADa9UAA2vWAANr2AADa9oAA2vbAANr3AADa94AA2vfAANsWgADbFwAA2xeAANsYAADbGMAA2xkAANsZQADbGYAA2xnAANsaQADbGsAA2xsAANsbQADbG8AA2xwAANs6wADbO0AA2zvAANs8QADbPQAA2z1AANs9gADbPcAA2z4AANs+gADbPwAA2z9AANs/gADbQAAA20BAANtfAADbX4AA22AAANtggADbYUAA22GAANthwADbYgAA22JAANtiwADbY0AA22OAANtjwADbZEAA22SAANuDQADbg8AA24RAANuEwADbhYAA24XAANuGAADbhkAA24aAANuHAADbh4AA24fAANuIAADbiIAA24jAANubAADbpAAA263AANu2wADbt4AA27gAANu4gADbuQAA27mAANu6AADbukAA27sAANvBQADbyIAA28kAANvJgADbygAA28qAANvLAADby4AA28wAANvTQADb1AAA29TAANvVgADb1kAA29cAANvXwADb2IAA29kAANv3wADb+EAA2/jAANv5QADb+gAA2/pAANv6gADb+sAA2/sAANv7gADb/AAA2/xAANv8gADb/QAA2/1AANwcAADcHIAA3B0AANwdgADcHkAA3B6AANwewADcHwAA3B9AANwfwADcIEAA3CCAANwgwADcIUAA3CGAANxAQADcQMAA3EFAANxBwADcQoAA3ELAANxDAADcQ0AA3EOAANxEAADcRIAA3ETAANxFAADcRYAA3EXAANxkgADcZQAA3GXAANxmQADcZwAA3GdAANxngADcZ8AA3GgAANxogADcaQAA3GlAANxpgADcagAA3GpAANyJAADciYAA3IoAANyKgADci0AA3IuAANyLwADcjAAA3IxAANyMwADcjUAA3I2AANyNwADcjkAA3I6AANytQADcrcAA3K5AANyuwADcr4AA3K/AANywAADcsEAA3LCAANyxAADcsYAA3LHAANyyAADcsoAA3LLAANzRgADc0gAA3NKAANzTAADc08AA3NQAANzUQADc1IAA3NTAANzVQADc1cAA3NYAANzWQADc1sAA3NcAANz7wADdBIAA3QyAAN0UgADdFQAA3RWAAN0WAADdFoAA3RdAAN0XgADdF8AA3RiAAN0YwADdGUAA3RmAAN0aQADdGwAA3RtAAN0bgADdHEAA3RyAAN0dwADdJAAA3SZAAN0mwADdJ0AA3SmAAN0qQADdKwAA3SuAAN09wADdRsAA3VCAAN1ZgADdWkAA3VrAAN1bQADdW8AA3VxAAN1cwADdXQAA3V3AAN1kAADdbEAA3WzAAN1tQADdbcAA3W5AAN1uwADdb0AA3W/AAN1wQADdeIAA3XlAAN16AADdesAA3XuAAN18QADdfQAA3X3AAN1+gADdfwAA3Z3AAN2eQADdnsAA3Z9AAN2gAADdoEAA3aCAAN2gwADdoQAA3aGAAN2iAADdokAA3aKAAN2jAADdo0AA3cIAAN3CgADdwwAA3cOAAN3EQADdxIAA3cTAAN3FAADdxUAA3cXAAN3GQADdxoAA3cbAAN3HQADdx4AA3eZAAN3mwADd54AA3egAAN3owADd6QAA3elAAN3pgADd6cAA3epAAN3qwADd6wAA3etAAN3rwADd7AAA3fJAAN3ygADd8sAA3fNAAN4SAADeEoAA3hMAAN4TgADeFEAA3hSAAN4UwADeFQAA3hVAAN4VwADeFkAA3haAAN4WwADeF0AA3heAAN42QADeNsAA3jdAAN43wADeOIAA3jjAAN45AADeOUAA3jmAAN46AADeOoAA3jrAAN47AADeO4AA3jvAAN5agADeWwAA3luAAN5cAADeXMAA3l0AAN5dQADeXYAA3l3AAN5eQADeXsAA3l8AAN5fQADeX8AA3mAAAN5+wADef0AA3n/AAN6AQADegQAA3oFAAN6BgADegcAA3oIAAN6CgADegwAA3oNAAN6DgADehAAA3oRAAN6jAADeo4AA3qQAAN6kgADepUAA3qWAAN6lwADepgAA3qZAAN6mwADep0AA3qeAAN6nwADeqEAA3qiAAN66wADew8AA3s2AAN7WgADe10AA3tfAAN7YQADe2MAA3tlAAN7ZwADe2gAA3trAAN7hAADe6EAA3ujAAN7pQADe6cAA3upAAN7qwADe60AA3uvAAN7zAADe88AA3vSAAN71QADe9gAA3vbAAN73gADe+EAA3vjAAN8XgADfGAAA3xiAAN8ZAADfGcAA3xoAAN8aQADfGoAA3xrAAN8bQADfG8AA3xwAAN8cQADfHMAA3x0AAN87wADfPEAA3z0AAN89gADfPkAA3z6AAN8+wADfPwAA3z9AAN8/wADfQEAA30CAAN9AwADfQUAA30GAAN9gQADfYMAA32FAAN9hwADfYoAA32LAAN9jAADfY0AA32OAAN9kAADfZIAA32TAAN9lAADfZYAA32XAAN+EgADfhQAA34XAAN+GQADfhwAA34dAAN+HgADfh8AA34gAAN+IgADfiQAA34lAAN+JgADfigAA34pAAN+pAADfqYAA36oAAN+qgADfq0AA36uAAN+rwADfrAAA36xAAN+swADfrUAA362AAN+twADfrkAA366AAN/NQADfzcAA385AAN/OwADfz4AA38/AAN/QAADf0EAA39CAAN/RAADf0YAA39HAAN/SAADf0oAA39LAAN/xgADf8gAA3/LAAN/zQADf9AAA3/RAAN/0gADf9MAA3/UAAN/1gADf9gAA3/ZAAN/2gADf9wAA3/dAAOAcAADgJMAA4CzAAOA0wADgNUAA4DXAAOA2QADgNsAA4DeAAOA3wADgOAAA4DjAAOA5AADgOYAA4DnAAOA6QADgOwAA4DtAAOA7gADgPEAA4DyAAOA9wADgRAAA4EZAAOBGwADgR0AA4EmAAOBKQADgSwAA4EuAAOBdwADgZsAA4HCAAOB5gADgekAA4HrAAOB7QADge8AA4HxAAOB8wADgfQAA4H3AAOCEAADgjEAA4IzAAOCNQADgjcAA4I5AAOCOwADgj0AA4I/AAOCQQADgmIAA4JlAAOCaAADgmsAA4JuAAOCcQADgnQAA4J3AAOCegADgnwAA4L3AAOC+QADgvsAA4L9AAODAAADgwEAA4MCAAODAwADgwQAA4MGAAODCAADgwkAA4MKAAODDAADgw0AA4OIAAODigADg4wAA4OOAAODkQADg5IAA4OTAAODlAADg5UAA4OXAAODmQADg5oAA4ObAAODnQADg54AA4QZAAOEGwADhB4AA4QgAAOEIwADhCQAA4QlAAOEJgADhCcAA4QpAAOEKwADhCwAA4QtAAOELwADhDAAA4RJAAOESgADhEsAA4RNAAOEyAADhMoAA4TMAAOEzgADhNEAA4TSAAOE0wADhNQAA4TVAAOE1wADhNkAA4TaAAOE2wADhN0AA4TeAAOFWQADhVsAA4VdAAOFXwADhWIAA4VjAAOFZAADhWUAA4VmAAOFaAADhWoAA4VrAAOFbAADhW4AA4VvAAOF6gADhewAA4XuAAOF8AADhfMAA4X0AAOF9QADhfYAA4X3AAOF+QADhfsAA4X8AAOF/QADhf8AA4YAAAOGewADhn0AA4Z/AAOGgQADhoQAA4aFAAOGhgADhocAA4aIAAOGigADhowAA4aNAAOGjgADhpAAA4aRAAOHDAADhw4AA4cQAAOHEgADhxUAA4cWAAOHFwADhxgAA4cZAAOHGwADhx0AA4ceAAOHHwADhyEAA4ciAAOHawADh48AA4e2AAOH2gADh90AA4ffAAOH4QADh+MAA4flAAOH5wADh+gAA4frAAOIBAADiCEAA4gjAAOIJQADiCcAA4gpAAOIKwADiC0AA4gvAAOITAADiE8AA4hSAAOIVQADiFgAA4hbAAOIXgADiGEAA4hjAAOI3gADiOAAA4jiAAOI5AADiOcAA4joAAOI6QADiOoAA4jrAAOI7QADiO8AA4jwAAOI8QADiPMAA4j0AAOJbwADiXEAA4lzAAOJdQADiXgAA4l5AAOJegADiXsAA4l8AAOJfgADiYAAA4mBAAOJggADiYQAA4mFAAOKAAADigIAA4oEAAOKBgADigkAA4oKAAOKCwADigwAA4oNAAOKDwADihEAA4oSAAOKEwADihUAA4oWAAOKkQADipMAA4qWAAOKmAADipsAA4qcAAOKnQADip4AA4qfAAOKoQADiqMAA4qkAAOKpQADiqcAA4qoAAOLIwADiyUAA4snAAOLKQADiywAA4stAAOLLgADiy8AA4swAAOLMgADizQAA4s1AAOLNgADizgAA4s5AAOLtAADi7YAA4u4AAOLugADi70AA4u+AAOLvwADi8AAA4vBAAOLwwADi8UAA4vGAAOLxwADi8kAA4vKAAOMRQADjEcAA4xJAAOMSwADjE4AA4xPAAOMUAADjFEAA4xSAAOMVAADjFYAA4xXAAOMWAADjFoAA4xbAAOM7gADjREAA40xAAONUQADjVMAA41VAAONVwADjVkAA41cAAONXQADjV4AA41hAAONYgADjWQAA41lAAONaAADjWsAA41sAAONbQADjXAAA41xAAONdgADjY8AA42YAAONmgADjZwAA42lAAONqAADjasAA42tAAON9gADjhoAA45BAAOOZQADjmgAA45qAAOObAADjm4AA45wAAOOcgADjnMAA452AAOOjwADjrAAA46yAAOOtAADjrYAA464AAOOugADjrwAA46+AAOOwAADjuEAA47kAAOO5wADjuoAA47tAAOO8AADjvMAA472AAOO+QADjvsAA492AAOPeAADj3oAA498AAOPfwADj4AAA4+BAAOPggADj4MAA4+FAAOPhwADj4gAA4+JAAOPiwADj4wAA5AHAAOQCQADkAsAA5ANAAOQEAADkBEAA5ASAAOQEwADkBQAA5AWAAOQGAADkBkAA5AaAAOQHAADkB0AA5CYAAOQmgADkJ0AA5CfAAOQogADkKMAA5CkAAOQpQADkKYAA5CoAAOQqgADkKsAA5CsAAOQrgADkK8AA5DIAAOQyQADkMoAA5DMAAORRwADkUkAA5FLAAORTQADkVAAA5FRAAORUgADkVMAA5FUAAORVgADkVgAA5FZAAORWgADkVwAA5FdAAOR2AADkdoAA5HcAAOR3gADkeEAA5HiAAOR4wADkeQAA5HlAAOR5wADkekAA5HqAAOR6wADke0AA5HuAAOSaQADkmsAA5JtAAOSbwADknIAA5JzAAOSdAADknUAA5J2AAOSeAADknoAA5J7AAOSfAADkn4AA5J/AAOS+gADkvwAA5L+AAOTAAADkwMAA5MEAAOTBQADkwYAA5MHAAOTCQADkwsAA5MMAAOTDQADkw8AA5MQAAOTiwADk40AA5OPAAOTkQADk5QAA5OVAAOTlgADk5cAA5OYAAOTmgADk5wAA5OdAAOTngADk6AAA5OhAAOT6gADlA4AA5Q1AAOUWQADlFwAA5ReAAOUYAADlGIAA5RkAAOUZgADlGcAA5RqAAOUgwADlKAAA5SiAAOUpAADlKYAA5SoAAOUqgADlKwAA5SuAAOUywADlM4AA5TRAAOU1AADlNcAA5TaAAOU3QADlOAAA5TiAAOVXQADlV8AA5VhAAOVYwADlWYAA5VnAAOVaAADlWkAA5VqAAOVbAADlW4AA5VvAAOVcAADlXIAA5VzAAOV7gADlfAAA5XzAAOV9QADlfgAA5X5AAOV+gADlfsAA5X8AAOV/gADlgAAA5YBAAOWAgADlgQAA5YFAAOWgAADloIAA5aEAAOWhgADlokAA5aKAAOWiwADlowAA5aNAAOWjwADlpEAA5aSAAOWkwADlpUAA5aWAAOXEQADlxMAA5cWAAOXGAADlxsAA5ccAAOXHQADlx4AA5cfAAOXIQADlyMAA5ckAAOXJQADlycAA5coAAOXqwADl88AA5fzAAOYFgADmD0AA5hdAAOYhAADmKsAA5jLAAOY7wADmRMAA5kVAAOZGAADmRoAA5kcAAOZHgADmSEAA5kkAAOZJgADmSgAA5krAAOZLQADmS8AA5kyAAOZNQADmTYAA5k7AAOZVAADmVkAA5lbAAOZYAADmWMAA5llAAOZrgADmdIAA5n5AAOaHQADmiAAA5oiAAOaJAADmiYAA5ooAAOaKgADmisAA5ouAAOaRwADmmwAA5puAAOacAADmnIAA5p0AAOadgADmngAA5p6AAOafAADmn4AA5qjAAOapgADmqkAA5qsAAOarwADmrIAA5q1AAOauAADmrsAA5q+AAOawAADmzsAA5s9AAObQAADm0IAA5tFAAObRgADm0cAA5tIAAObSQADm0sAA5tNAAObTgADm08AA5tRAAObUgADm2MAA5tkAAObZgADm+EAA5vjAAOb5QADm+cAA5vqAAOb6wADm+wAA5vtAAOb7gADm/AAA5vyAAOb8wADm/QAA5v2AAOb9wADnHIAA5x0AAOcdwADnHkAA5x8AAOcfQADnH4AA5x/AAOcgAADnIIAA5yEAAOchQADnIYAA5yIAAOciQADnJoAA5ybAAOcnQADnRgAA50aAAOdHAADnR4AA50hAAOdIgADnSMAA50kAAOdJQADnScAA50pAAOdKgADnSsAA50tAAOdLgADnakAA52rAAOdrgADnbAAA52zAAOdtAADnbUAA522AAOdtwADnbkAA527AAOdvAADnb0AA52/AAOdwAADndEAA53SAAOd1AADnk8AA55RAAOeUwADnlUAA55YAAOeWQADnloAA55bAAOeXAADnl4AA55gAAOeYQADnmIAA55kAAOeZQADnuAAA57iAAOe5QADnucAA57qAAOe6wADnuwAA57tAAOe7gADnvAAA57yAAOe8wADnvQAA572AAOe9wADnxAAA58RAAOfEgADnxQAA5+PAAOfkQADn5MAA5+VAAOfmAADn5kAA5+aAAOfmwADn5wAA5+eAAOfoAADn6EAA5+iAAOfpAADn6UAA6AgAAOgIgADoCUAA6AnAAOgKgADoCsAA6AsAAOgLQADoC4AA6AwAAOgMgADoDMAA6A0AAOgNgADoDcAA6BQAAOgaQADoIIAA6CFAAOgiAADoIsAA6COAAOgkQADoJQAA6CtAAOgsAADoLMAA6C2AAOguQADoLwAA6C/AAOgwQADoMoAA6DPAAOg3QADoOEAA6DnAAOhegADoZ0AA6G9AAOh3QADod8AA6HhAAOh4wADoeUAA6HoAAOh6QADoeoAA6HtAAOh7gADofAAA6HxAAOh9AADofcAA6H4AAOh+QADofwAA6H9AAOiAgADohsAA6IkAAOiJgADoigAA6IxAAOiNAADojcAA6I5AAOiggADoqYAA6LNAAOi8QADovQAA6L2AAOi+AADovoAA6L8AAOi/gADov8AA6MCAAOjGwADozwAA6M+AAOjQAADo0IAA6NEAAOjRgADo0gAA6NKAAOjTAADo20AA6NwAAOjcwADo3YAA6N5AAOjfAADo38AA6OCAAOjhQADo4cAA6QCAAOkBAADpAYAA6QIAAOkCwADpAwAA6QNAAOkDgADpA8AA6QRAAOkEwADpBQAA6QVAAOkFwADpBgAA6STAAOklQADpJcAA6SZAAOknAADpJ0AA6SeAAOknwADpKAAA6SiAAOkpAADpKUAA6SmAAOkqAADpKkAA6UkAAOlJgADpSkAA6UrAAOlLgADpS8AA6UwAAOlMQADpTIAA6U0AAOlNgADpTcAA6U4AAOlOgADpTsAA6VUAAOlVQADpVYAA6VYAAOl0wADpdUAA6XXAAOl2QADpdwAA6XdAAOl3gADpd8AA6XgAAOl4gADpeQAA6XlAAOl5gADpegAA6XpAAOmZAADpmYAA6ZoAAOmagADpm0AA6ZuAAOmbwADpnAAA6ZxAAOmcwADpnUAA6Z2AAOmdwADpnkAA6Z6AAOm9QADpvcAA6b5AAOm+wADpv4AA6b/AAOnAAADpwEAA6cCAAOnBAADpwYAA6cHAAOnCAADpwoAA6cLAAOnhgADp4gAA6eKAAOnjAADp48AA6eQAAOnkQADp5IAA6eTAAOnlQADp5cAA6eYAAOnmQADp5sAA6ecAAOoFwADqBkAA6gbAAOoHQADqCAAA6ghAAOoIgADqCMAA6gkAAOoJgADqCgAA6gpAAOoKgADqCwAA6gtAAOodgADqJoAA6jBAAOo5QADqOgAA6jqAAOo7AADqO4AA6jwAAOo8gADqPMAA6j2AAOpDwADqSwAA6kuAAOpMAADqTIAA6k0AAOpNgADqTgAA6k6AAOpVwADqVoAA6ldAAOpYAADqWMAA6lmAAOpaQADqWwAA6luAAOp6QADqesAA6ntAAOp7wADqfIAA6nzAAOp9AADqfUAA6n2AAOp+AADqfoAA6n7AAOp/AADqf4AA6n/AAOqegADqnwAA6p+AAOqgAADqoMAA6qEAAOqhQADqoYAA6qHAAOqiQADqosAA6qMAAOqjQADqo8AA6qQAAOrCwADqw0AA6sPAAOrEQADqxQAA6sVAAOrFgADqxcAA6sYAAOrGgADqxwAA6sdAAOrHgADqyAAA6shAAOrnAADq54AA6uhAAOrowADq6YAA6unAAOrqAADq6kAA6uqAAOrrAADq64AA6uvAAOrsAADq7IAA6uzAAOsLgADrDAAA6wyAAOsNAADrDcAA6w4AAOsOQADrDoAA6w7AAOsPQADrD8AA6xAAAOsQQADrEMAA6xEAAOsvwADrMEAA6zDAAOsxQADrMgAA6zJAAOsygADrMsAA6zMAAOszgADrNAAA6zRAAOs0gADrNQAA6zVAAOtUAADrVIAA61VAAOtVwADrVoAA61bAAOtXAADrV0AA61eAAOtYAADrWIAA61jAAOtZAADrWYAA61nAAOt+gADrh0AA649AAOuXQADrl8AA65hAAOuYwADrmUAA65oAAOuaQADrmoAA65tAAOubgADrnAAA65xAAOucwADrnYAA653AAOueAADrnsAA658AAOuhQADrp4AA66nAAOuqQADrqsAA660AAOutwADrroAA668AAOvBQADrykAA69QAAOvdAADr3cAA695AAOvewADr30AA69/AAOvgQADr4IAA6+FAAOvngADr78AA6/BAAOvwwADr8UAA6/HAAOvyQADr8sAA6/NAAOvzwADr/AAA6/zAAOv9gADr/kAA6/8AAOv/wADsAIAA7AFAAOwCAADsAoAA7CFAAOwhwADsIkAA7CLAAOwjgADsI8AA7CQAAOwkQADsJIAA7CUAAOwlgADsJcAA7CYAAOwmgADsJsAA7EWAAOxGAADsRoAA7EcAAOxHwADsSAAA7EhAAOxIgADsSMAA7ElAAOxJwADsSgAA7EpAAOxKwADsSwAA7GnAAOxqQADsawAA7GuAAOxsQADsbIAA7GzAAOxtAADsbUAA7G3AAOxuQADsboAA7G7AAOxvQADsb4AA7HXAAOx2AADsdkAA7HbAAOyVgADslgAA7JaAAOyXAADsl8AA7JgAAOyYQADsmIAA7JjAAOyZQADsmcAA7JoAAOyaQADsmsAA7JsAAOy5wADsukAA7LrAAOy7QADsvAAA7LxAAOy8gADsvMAA7L0AAOy9gADsvgAA7L5AAOy+gADsvwAA7L9AAOzeAADs3oAA7N8AAOzfgADs4EAA7OCAAOzgwADs4QAA7OFAAOzhwADs4kAA7OKAAOziwADs40AA7OOAAO0CQADtAsAA7QNAAO0DwADtBIAA7QTAAO0FAADtBUAA7QWAAO0GAADtBoAA7QbAAO0HAADtB4AA7QfAAO0mgADtJwAA7SeAAO0oAADtKMAA7SkAAO0pQADtKYAA7SnAAO0qQADtKsAA7SsAAO0rQADtK8AA7SwAAO0+QADtR0AA7VEAAO1aAADtWsAA7VtAAO1bwADtXEAA7VzAAO1dQADtXYAA7V5AAO1kgADta8AA7WxAAO1swADtbUAA7W3AAO1uQADtbsAA7W9AAO12gADtd0AA7XgAAO14wADteYAA7XpAAO17AADte8AA7XxAAO2bAADtm4AA7ZwAAO2cgADtnUAA7Z2AAO2dwADtngAA7Z5AAO2ewADtn0AA7Z+AAO2fwADtoEAA7aCAAO2/QADtv8AA7cBAAO3AwADtwYAA7cHAAO3CAADtwkAA7cKAAO3DAADtw4AA7cPAAO3EAADtxIAA7cTAAO3jgADt5AAA7eSAAO3lAADt5cAA7eYAAO3mQADt5oAA7ebAAO3nQADt58AA7egAAO3oQADt6MAA7ekAAO4HwADuCEAA7gkAAO4JgADuCkAA7gqAAO4KwADuCwAA7gtAAO4LwADuDEAA7gyAAO4MwADuDUAA7g2AAO4sQADuLMAA7i1AAO4twADuLoAA7i7AAO4vAADuL0AA7i+AAO4wAADuMIAA7jDAAO4xAADuMYAA7jHAAO5QgADuUQAA7lGAAO5SAADuUsAA7lMAAO5TQADuU4AA7lPAAO5UQADuVMAA7lUAAO5VQADuVcAA7lYAAO50wADudUAA7nXAAO52QADudwAA7ndAAO53gADud8AA7ngAAO54gADueQAA7nlAAO55gADuegAA7npAAO6fAADup8AA7q/AAO63wADuuEAA7rjAAO65QADuucAA7rqAAO66wADuuwAA7rvAAO68AADuvIAA7rzAAO69gADuvkAA7r6AAO6+wADuv4AA7r/AAO7BAADux0AA7smAAO7KAADuyoAA7szAAO7NgADuzkAA7s7AAO7hAADu6gAA7vPAAO78wADu/YAA7v4AAO7+gADu/wAA7v+AAO8AAADvAEAA7wEAAO8HQADvD4AA7xAAAO8QgADvEQAA7xGAAO8SAADvEoAA7xMAAO8TgADvG8AA7xyAAO8dQADvHgAA7x7AAO8fgADvIEAA7yEAAO8hwADvIkAA70EAAO9BgADvQgAA70KAAO9DQADvQ4AA70PAAO9EAADvREAA70TAAO9FQADvRYAA70XAAO9GQADvRoAA72VAAO9lwADvZkAA72bAAO9ngADvZ8AA72gAAO9oQADvaIAA72kAAO9pgADvacAA72oAAO9qgADvasAA74mAAO+KAADvisAA74tAAO+MAADvjEAA74yAAO+MwADvjQAA742AAO+OAADvjkAA746AAO+PAADvj0AA75WAAO+VwADvlgAA75aAAO+1QADvtcAA77ZAAO+2wADvt4AA77fAAO+4AADvuEAA77iAAO+5AADvuYAA77nAAO+6AADvuoAA77rAAO/ZgADv2gAA79qAAO/bAADv28AA79wAAO/cQADv3IAA79zAAO/dQADv3cAA794AAO/eQADv3sAA798AAO/9wADv/kAA7/7AAO//QADwAAAA8ABAAPAAgADwAMAA8AEAAPABgADwAgAA8AJAAPACgADwAwAA8ANAAPAiAADwIoAA8CMAAPAjgADwJEAA8CSAAPAkwADwJQAA8CVAAPAlwADwJkAA8CaAAPAmwADwJ0AA8CeAAPBGQADwRsAA8EdAAPBHwADwSIAA8EjAAPBJAADwSUAA8EmAAPBKAADwSoAA8ErAAPBLAADwS4AA8EvAAPBeAADwZwAA8HDAAPB5wADweoAA8HsAAPB7gADwfAAA8HyAAPB9AADwfUAA8H4AAPCEQADwi4AA8IwAAPCMgADwjQAA8I2AAPCOAADwjoAA8I8AAPCWQADwlwAA8JfAAPCYgADwmUAA8JoAAPCawADwm4AA8JwAAPC6wADwu0AA8LvAAPC8QADwvQAA8L1AAPC9gADwvcAA8L4AAPC+gADwvwAA8L9AAPC/gADwwAAA8MBAAPDfAADw34AA8OAAAPDggADw4UAA8OGAAPDhwADw4gAA8OJAAPDiwADw40AA8OOAAPDjwADw5EAA8OSAAPEDQADxA8AA8QRAAPEEwADxBYAA8QXAAPEGAADxBkAA8QaAAPEHAADxB4AA8QfAAPEIAADxCIAA8QjAAPEngADxKAAA8SjAAPEpQADxKgAA8SpAAPEqgADxKsAA8SsAAPErgADxLAAA8SxAAPEsgADxLQAA8S1AAPFOAADxVwAA8WAAAPFowADxcoAA8XqAAPGEQADxjgAA8ZYAAPGfAADxqAAA8aiAAPGpQADxqcAA8apAAPGqwADxq4AA8axAAPGswADxrUAA8a4AAPGugADxrwAA8a/AAPGwgADxsMAA8bIAAPG4QADxuYAA8boAAPG7QADxvAAA8byAAPHOwADx18AA8eGAAPHqgADx60AA8evAAPHsQADx7MAA8e1AAPHtwADx7gAA8e7AAPH1AADx/kAA8f7AAPH/QADx/8AA8gBAAPIAwADyAUAA8gHAAPICQADyAsAA8gwAAPIMwADyDYAA8g5AAPIPAADyD8AA8hCAAPIRQADyEgAA8hLAAPITQADyMgAA8jKAAPIzQADyM8AA8jSAAPI0wADyNQAA8jVAAPI1gADyNgAA8jaAAPI2wADyNwAA8jeAAPI3wADyPAAA8jxAAPI8wADyW4AA8lwAAPJcgADyXQAA8l3AAPJeAADyXkAA8l6AAPJewADyX0AA8l/AAPJgAADyYEAA8mDAAPJhAADyf8AA8oBAAPKBAADygYAA8oJAAPKCgADygsAA8oMAAPKDQADyg8AA8oRAAPKEgADyhMAA8oVAAPKFgADyicAA8osAAPKLwADyjEAA8pCAAPKRwADykoAA8pMAAPKUwADys4AA8rQAAPK0gADytQAA8rXAAPK2AADytkAA8raAAPK2wADyt0AA8rfAAPK4AADyuEAA8rjAAPK5AADy18AA8thAAPLZAADy2YAA8tpAAPLagADy2sAA8tsAAPLbQADy28AA8txAAPLcgADy3MAA8t1AAPLdgADy4cAA8uIAAPLigADzAUAA8wHAAPMCQADzAsAA8wOAAPMDwADzBAAA8wRAAPMEgADzBQAA8wWAAPMFwADzBgAA8waAAPMGwADzJYAA8yYAAPMmwADzJ0AA8ygAAPMoQADzKIAA8yjAAPMpAADzKYAA8yoAAPMqQADzKoAA8ysAAPMrQADzMYAA8zHAAPMyAADzMoAA81FAAPNRwADzUkAA81LAAPNTgADzU8AA81QAAPNUQADzVIAA81UAAPNVgADzVcAA81YAAPNWgADzVsAA83WAAPN2AADzdoAA83cAAPN3wADzeAAA83hAAPN4gADzeMAA83lAAPN5wADzegAA83pAAPN6wADzewAA84FAAPOFgADzhkAA84cAAPOHwADziIAA84zAAPONgADzjkAA848AAPOPwADzkEAA85VAAPOdAADzogAA88bAAPPPgADz14AA89+AAPPgAADz4IAA8+EAAPPhgADz4kAA8+KAAPPiwADz44AA8+PAAPPkQADz5IAA8+UAAPPlwADz5gAA8+ZAAPPnAADz50AA8+iAAPPuwADz8QAA8/GAAPPyAADz9EAA8/UAAPP1wADz9kAA9AiAAPQRgAD0G0AA9CRAAPQlAAD0JYAA9CYAAPQmgAD0JwAA9CeAAPQnwAD0KIAA9C7AAPQ3AAD0N4AA9DgAAPQ4gAD0OQAA9DmAAPQ6AAD0OoAA9DsAAPRDQAD0RAAA9ETAAPRFgAD0RkAA9EcAAPRHwAD0SIAA9ElAAPRJwAD0aIAA9GkAAPRpgAD0agAA9GrAAPRrAAD0a0AA9GuAAPRrwAD0bEAA9GzAAPRtAAD0bUAA9G3AAPRuAAD0jMAA9I1AAPSNwAD0jkAA9I8AAPSPQAD0j4AA9I/AAPSQAAD0kIAA9JEAAPSRQAD0kYAA9JIAAPSSQAD0sQAA9LGAAPSyQAD0ssAA9LOAAPSzwAD0tAAA9LRAAPS0gAD0tQAA9LWAAPS1wAD0tgAA9LaAAPS2wAD0vQAA9L1AAPS9gAD0vgAA9NzAAPTdQAD03cAA9N5AAPTfAAD030AA9N+AAPTfwAD04AAA9OCAAPThAAD04UAA9OGAAPTiAAD04kAA9QEAAPUBgAD1AgAA9QKAAPUDQAD1A4AA9QPAAPUEAAD1BEAA9QTAAPUFQAD1BYAA9QXAAPUGQAD1BoAA9SVAAPUlwAD1JkAA9SbAAPUngAD1J8AA9SgAAPUoQAD1KIAA9SkAAPUpgAD1KcAA9SoAAPUqgAD1KsAA9UmAAPVKAAD1SoAA9UsAAPVLwAD1TAAA9UxAAPVMgAD1TMAA9U1AAPVNwAD1TgAA9U5AAPVOwAD1TwAA9W3AAPVuQAD1bsAA9W9AAPVwAAD1cEAA9XCAAPVwwAD1cQAA9XGAAPVyAAD1ckAA9XKAAPVzAAD1c0AA9YWAAPWOgAD1mEAA9aFAAPWiAAD1ooAA9aMAAPWjgAD1pAAA9aSAAPWkwAD1pYAA9avAAPWzAAD1s4AA9bQAAPW0gAD1tQAA9bWAAPW2AAD1toAA9b3AAPW+gAD1v0AA9cAAAPXAwAD1wYAA9cJAAPXDAAD1w4AA9eJAAPXiwAD140AA9ePAAPXkgAD15MAA9eUAAPXlQAD15YAA9eYAAPXmgAD15sAA9ecAAPXngAD158AA9gaAAPYHAAD2B4AA9ggAAPYIwAD2CQAA9glAAPYJgAD2CcAA9gpAAPYKwAD2CwAA9gtAAPYLwAD2DAAA9irAAPYrQAD2K8AA9ixAAPYtAAD2LUAA9i2AAPYtwAD2LgAA9i6AAPYvAAD2L0AA9i+AAPYwAAD2MEAA9k8AAPZPgAD2UEAA9lDAAPZRgAD2UcAA9lIAAPZSQAD2UoAA9lMAAPZTgAD2U8AA9lQAAPZUgAD2VMAA9nOAAPZ0AAD2dIAA9nUAAPZ1wAD2dgAA9nZAAPZ2gAD2dsAA9ndAAPZ3wAD2eAAA9nhAAPZ4wAD2eQAA9pfAAPaYQAD2mMAA9plAAPaaAAD2mkAA9pqAAPaawAD2mwAA9puAAPacAAD2nEAA9pyAAPadAAD2nUAA9rwAAPa8gAD2vQAA9r2AAPa+QAD2voAA9r7AAPa/AAD2v0AA9r/AAPbAQAD2wIAA9sDAAPbBQAD2wYAA9uZAAPbvAAD29wAA9v8AAPb/gAD3AAAA9wCAAPcBAAD3AcAA9wIAAPcCQAD3AwAA9wNAAPcDwAD3BAAA9wTAAPcFgAD3BcAA9wYAAPcGwAD3BwAA9wlAAPcPgAD3EcAA9xJAAPcSwAD3FQAA9xXAAPcWgAD3FwAA9ylAAPcyQAD3PAAA90UAAPdFwAD3RkAA90bAAPdHQAD3R8AA90hAAPdIgAD3SUAA90+AAPdXwAD3WEAA91jAAPdZQAD3WcAA91pAAPdawAD3W0AA91vAAPdkAAD3ZMAA92WAAPdmQAD3ZwAA92fAAPdogAD3aUAA92oAAPdqgAD3iUAA94nAAPeKQAD3isAA94uAAPeLwAD3jAAA94xAAPeMgAD3jQAA942AAPeNwAD3jg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ABAKPAAQCkAAEApEABAKSAAQClAAEApYABAKXAAQCmAAEApoABAKbAAQDFgAEAxgABAMaAAQDHAAEAx8ABAMgAAQDIQAEAyIABAMjAAQDJQAEAycABAMoAAQDKQAEAysABAMsAAQDpwAEA6kABAOrAAQDrQAEA7AABAOxAAQDsgAEA7MABAO0AAQDtgAEA7gABAO5AAQDugAEA7wABAO9AAQEOAAEBDoABAQ8AAQEPgAEBEEABARCAAQEQwAEBEQABARFAAQERwAEBEkABARKAAQESwAEBE0ABAROAAQEyQAEBMsABATNAAQEzwAEBNIABATTAAQE1AAEBNUABATWAAQE2AAEBNoABATbAAQE3AAEBN4ABATfAAQFKAAEBUwABAVzAAQFlwAEBZoABAWcAAQFngAEBaAABAWiAAQFpAAEBaUABAWoAAQFwQAEBd4ABAXgAAQF4gAEBeQABAXmAAQF6AAEBeoABAXsAAQGCQAEBgwABAYPAAQGEgAEBhUABAYYAAQGGwAEBh4ABAYgAAQGmwAEBp0ABAafAAQGoQAEBqQABAalAAQGpgAEBqcABAaoAAQGqgAEBqwABAatAAQGrgAEBrAABAaxAAQHLAAEBy4ABAcwAAQHMgAEBzUABAc2AAQHNwAEBzgABAc5AAQHOwAEBz0ABAc+AAQHPwAEB0EABAdCAAQHvQAEB78ABAfBAAQHwwAEB8YABAfHAAQHyAAEB8kABAfKAAQHzAAEB84ABAfPAAQH0AAEB9IABAfTAAQITgAECFAABAhTAAQIVQAECFgABAhZAAQIWgAECFsABAhcAAQIXgAECGAABAhhAAQIYgAECGQABAhlAAQI4AAECOIABAjkAAQI5gAECOkABAjqAAQI6wAECOwABAjtAAQI7wAECPEABAjyAAQI8wAECPUABAj2AAQJcQAECXMABAl1AAQJdwAECXoABAl7AAQJfAAECX0ABAl+AAQJgAAECYIABAmDAAQJhAAECYYABAmHAAQKAgAECgQABAoGAAQKCAAECgsABAoMAAQKDQAECg4ABAoPAAQKEQAEChMABAoUAAQKFQAEChcABAoYAAQKqwAECs4ABAruAAQLDgAECxAABAsSAAQLFAAECxYABAsZAAQLGgAECxsABAseAAQLHwAECyEABAsiAAQLJAAECycABAsoAAQLKQAECywABAstAAQLMgAEC0sABAtUAAQLVgAEC1gABAthAAQLZAAEC2cABAtpAAQLsgAEC9YABAv9AAQMIQAEDCQABAwmAAQMKAAEDCoABAwsAAQMLgAEDC8ABAwyAAQMSwAEDGwABAxuAAQMcAAEDHIABAx0AAQMdgAEDHgABAx6AAQMfAAEDJ0ABAygAAQMowAEDKYABAypAAQMrAAEDK8ABAyyAAQMtQAEDLcABA0yAAQNNAAEDTYABA04AAQNOwAEDTwABA09AAQNPgAEDT8ABA1BAAQNQwAEDUQABA1FAAQNRwAEDUgABA3DAAQNxQAEDccABA3JAAQNzAAEDc0ABA3OAAQNzwAEDdAABA3SAAQN1AAEDdUABA3WAAQN2AAEDdkABA5UAAQOVgAEDlkABA5bAAQOXgAEDl8ABA5gAAQOYQAEDmIABA5kAAQOZgAEDmcABA5oAAQOagAEDmsABA6EAAQOhQAEDoYABA6IAAQPAwAEDwUABA8HAAQPCQAEDwwABA8NAAQPDgAEDw8ABA8QAAQPEgAEDxQABA8VAAQPFgAEDxgABA8ZAAQPlAAED5YABA+YAAQPmgAED50ABA+eAAQPnwAED6AABA+hAAQPowAED6UABA+mAAQPpwAED6kABA+qAAQQJQAEECcABBApAAQQKwAEEC4ABBAvAAQQMAAEEDEABBAyAAQQNAAEEDYABBA3AAQQOAAEEDoABBA7AAQQtgAEELgABBC6AAQQvAAEEL8ABBDAAAQQwQAEEMIABBDDAAQQxQAEEMcABBDIAAQQyQAEEMsABBDMAAQRRwAEEUkABBFLAAQRTQAEEVAABBFRAAQRUgAEEVMABBFUAAQRVgAEEVgABBFZAAQRWgAEEVwABBFdAAQRpgAEEcoABBHxAAQSFQAEEhgABBIaAAQSHAAEEh4ABBIgAAQSIgAEEiMABBImAAQSPwAEElwABBJeAAQSYAAEEmIABBJkAAQSZgAEEmgABBJqAAQShwAEEooABBKNAAQSkAAEEpMABBKWAAQSmQAEEpwABBKeAAQTGQAEExsABBMeAAQTIAAEEyMABBMkAAQTJQAEEyYABBMnAAQTKQAEEysABBMsAAQTLQAEEy8ABBMwAAQTNAAEE68ABBOxAAQTswAEE7UABBO4AAQTuQAEE7oABBO7AAQTvAAEE74ABBPAAAQTwQAEE8IABBPEAAQTxQAEFEAABBRCAAQURAAEFEYABBRJAAQUSgAEFEsABBRMAAQUTQAEFE8ABBRRAAQUUgAEFFMABBRVAAQUVgAEFNEABBTTAAQU1gAEFNgABBTbAAQU3AAEFN0ABBTeAAQU3wAEFOEABBTjAAQU5AAEFOUABBTnAAQU6AAEFWMABBVlAAQVZwAEFWkABBVsAAQVbQAEFW4ABBVvAAQVcAAEFXIABBV0AAQVdQAEFXYABBV4AAQVeQAEFfQABBX2AAQV+AAEFfoABBX9AAQV/gAEFf8ABBYAAAQWAQAEFgMABBYFAAQWBgAEFgcABBYJAAQWCgAEFoUABBaHAAQWiQAEFosABBaOAAQWjwAEFpAABBaRAAQWkgAEFpQABBaWAAQWlwAEFpgABBaaAAQWmwAEFy4ABBdRAAQXcQAEF5EABBeTAAQXlQAEF5cABBeZAAQXnAAEF50ABBeeAAQXoQAEF6IABBekAAQXpQAEF6cABBeqAAQXqwAEF6wABBevAAQXsAAEF7UABBfOAAQX1wAEF9kABBfbAAQX5AAEF+cABBfqAAQX7AAEGDUABBhZAAQYgAAEGKQABBinAAQYqQAEGKsABBitAAQYrwAEGLEABBiyAAQYtQAEGM4ABBjvAAQY8QAEGPMABBj1AAQY9wAEGPkABBj7AAQY/QAEGP8ABBkgAAQZIwAEGSYABBkpAAQZLAAEGS8ABBkyAAQZNQAEGTgABBk6AAQZtQAEGbcABBm5AAQZuwAEGb4ABBm/AAQZwAAEGcEABBnCAAQZxAAEGcYABBnHAAQZyAAEGcoABBnLAAQaRgAEGkgABBpKAAQaTAAEGk8ABBpQAAQaUQAEGlIABBpTAAQaVQAEGlcABBpYAAQaWQAEGlsABBpcAAQa1wAEGtkABBrcAAQa3gAEGuEABBriAAQa4wAEGuQABBrlAAQa5wAEGukABBrqAAQa6wAEGu0ABBruAAQbBwAEGwgABBsJAAQbCwAEG4YABBuIAAQbigAEG4wABBuPAAQbkAAEG5EABBuSAAQbkwAEG5UABBuXAAQbmAAEG5kABBubAAQbnAAEHBcABBwZAAQcGwAEHB0ABBwgAAQcIQAEHCIABBwjAAQcJAAEHCYABBwoAAQcKQAEHCoABBwsAAQcLQAEHKgABByqAAQcrAAEHK4ABByxAAQcsgAEHLMABBy0AAQctQAEHLcABBy5AAQcugAEHLsABBy9AAQcvgAEHTkABB07AAQdPQAEHT8ABB1CAAQdQwAEHUQABB1FAAQdRgAEHUgABB1KAAQdSwAEHUwABB1OAAQdTwAEHcoABB3MAAQdzgAEHdAABB3TAAQd1AAEHdUABB3WAAQd1wAEHdkABB3bAAQd3AAEHd0ABB3fAAQd4AAEHikABB5NAAQedAAEHpgABB6bAAQenQAEHp8ABB6hAAQeowAEHqUABB6mAAQeqQAEHsIABB7fAAQe4QAEHuMABB7lAAQe5wAEHukABB7rAAQe7QAEHwoABB8NAAQfEAAEHxMABB8WAAQfGQAEHxwABB8fAAQfIQAEH5wABB+eAAQfoQAEH6MABB+mAAQfpwAEH6gABB+pAAQfqgAEH6wABB+uAAQfrwAEH7AABB+yAAQfswAEIC4ABCAwAAQgMgAEIDQABCA3AAQgOAAEIDkABCA6AAQgOwAEID0ABCA/AAQgQAAEIEEABCBDAAQgRAAEIL8ABCDBAAQgwwAEIMUABCDIAAQgyQAEIMoABCDLAAQgzAAEIM4ABCDQAAQg0QAEINIABCDUAAQg1QAEIVAABCFSAAQhVQAEIVcABCFaAAQhWwAEIVwABCFdAAQhXgAEIWAABCFiAAQhYwAEIWQABCFmAAQhZwAEIeIABCHkAAQh5gAEIegABCHrAAQh7AAEIe0ABCHuAAQh7wAEIfEABCHzAAQh9AAEIfUABCH3AAQh+AAEInMABCJ1AAQidwAEInkABCJ8AAQifQAEIn4ABCJ/AAQigAAEIoIABCKEAAQihQAEIoYABCKIAAQiiQAEIwQABCMGAAQjCAAEIwoABCMNAAQjDgAEIw8ABCMQAAQjEQAEIxMABCMVAAQjFgAEIxcABCMZAAQjGgAEI60ABCPQAAQj8AAEJBAABCQSAAQkFAAEJBYABCQYAAQkGwAEJBwABCQdAAQkIAAEJCEABCQjAAQkJAAEJCYABCQpAAQkKgAEJCsABCQuAAQkLwAEJDQABCRNAAQkVgAEJFgABCRaAAQkYwAEJGYABCRpAAQkawAEJLQABCTYAAQk/wAEJSMABCUmAAQlKAAEJSoABCUsAAQlLgAEJTAABCUxAAQlNAAEJU0ABCVuAAQlcAAEJXIABCV0AAQldgAEJXgABCV6AAQlfAAEJX4ABCWfAAQlogAEJaUABCWoAAQlqwAEJa4ABCWxAAQltAAEJbcABCW5AAQmNAAEJjYABCY4AAQmOgAEJj0ABCY+AAQmPwAEJkAABCZBAAQmQwAEJkUABCZGAAQmRwAEJkkABCZKAAQmxQAEJscABCbJAAQmywAEJs4ABCbPAAQm0AAEJtEABCbSAAQm1AAEJtYABCbXAAQm2AAEJtoABCbbAAQnVgAEJ1gABCdbAAQnXQAEJ2AABCdhAAQnYgAEJ2MABCdkAAQnZgAEJ2gABCdpAAQnagAEJ2wABCdtAAQnhgAEJ4cABCeIAAQnigAEKAUABCgHAAQoCQAEKAsABCgOAAQoDwAEKBAABCgRAAQoEgAEKBQABCgWAAQoFwAEKBgABCgaAAQoGwAEKJYABCiYAAQomgAEKJwABCifAAQooAAEKKEABCiiAAQoowAEKKUABCinAAQoqAAEKKkABCirAAQorAAEKScABCkpAAQpKwAEKS0ABCkwAAQpMQAEKTIABCkzAAQpNAAEKTYABCk4AAQpOQAEKToABCk8AAQpPQAEKbgABCm6AAQpvAAEKb4ABCnBAAQpwgAEKcMABCnEAAQpxQAEKccABCnJAAQpygAEKcsABCnNAAQpzgAEKkkABCpLAAQqTQAEKk8ABCpSAAQqUwAEKlQABCpVAAQqVgAEKlgABCpaAAQqWwAEKlwABCpeAAQqXwAEKqgABCrMAAQq8wAEKxcABCsaAAQrHAAEKx4ABCsgAAQrIgAEKyQABCslAAQrKAAEK0EABCteAAQrYAAEK2IABCtkAAQrZgAEK2gABCtqAAQrbAAEK4kABCuMAAQrjwAEK5IABCuVAAQrmAAEK5sABCueAAQroAAELBsABCwdAAQsHwAELCEABCwkAAQsJQAELCYABCwnAAQsKAAELCoABCwsAAQsLQAELC4ABCwwAAQsMQAELKwABCyuAAQssAAELLIABCy1AAQstgAELLcABCy4AAQsuQAELLsABCy9AAQsvgAELL8ABCzBAAQswgAELT0ABC0/AAQtQQAELUMABC1GAAQtRwAELUgABC1JAAQtSgAELUwABC1OAAQtTwAELVAABC1SAAQtUwAELc4ABC3QAAQt0wAELdUABC3YAAQt2QAELdoABC3bAAQt3AAELd4ABC3gAAQt4QAELeIABC3kAAQt5QAELmA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ABD/PAAQ/0QAEP9MABD/UAAQ/1QAEP9cABD/YAARAUwAEQFUABEBYAARAWgAEQF0ABEBeAARAXwAEQGAABEBhAARAYwAEQGUABEBmAARAZwAEQGkABEBqAARAgwAEQIQABECFAARAhwAEQQIABEEEAARBBgAEQQgABEELAARBDAAEQQ0ABEEOAARBDwAEQREABEETAARBFAAEQRUABEEXAARBGAAEQZMABEGVAARBlwAEQZkABEGcAARBnQAEQZ4ABEGfAARBoAAEQaIABEGkAARBpQAEQaYABEGoAARBqQAEQiQABEImAARCKAAEQioABEItAARCLgAEQi8ABEIwAARCMQAEQjMABEI1AARCNgAEQjcABEI5AARCOgAEQrUABEK3AARCuQAEQrsABEK+AARCvwAEQsAABELBAARCwgAEQsQABELGAARCxwAEQsgABELKAARCywAEQ0YABENIAARDSgAEQ0wABENPAARDUAAEQ1EABENSAARDUwAEQ1UABENXAARDWAAEQ1kABENbAARDXAAEQ6UABEPJAARD8AAERBQABEQXAAREGQAERBsABEQdAAREHwAERCEABEQiAAREJQAERD4ABERbAAREXQAERF8ABERhAAREYwAERGUABERnAAREaQAERIYABESJAAREjAAERI8ABESSAARElQAERJgABESbAAREnQAERRgABEUaAARFHAAERR4ABEUhAARFIgAERSMABEUkAARFJQAERScABEUpAARFKgAERSsABEUtAARFLgAERakABEWrAARFrQAERa8ABEWyAARFswAERbQABEW1AARFtgAERbgABEW6AARFuwAERbwABEW+AARFvwAERjoABEY8AARGPgAERkAABEZDAARGRAAERkUABEZGAARGRwAERkkABEZLAARGTAAERk0ABEZPAARGUAAERssABEbNAARG0AAERtIABEbVAARG1gAERtcABEbYAARG2QAERtsABEbdAARG3gAERt8ABEbhAARG4gAER10ABEdfAARHYQAER2MABEdmAARHZwAER2gABEdpAARHagAER2wABEduAARHbwAER3AABEdyAARHcwAER+4ABEfwAARH8gAER/QABEf3AARH+AAER/kABEf6AARH+wAER/0ABEf/AARIAAAESAEABEgDAARIBAAESH8ABEiBAARIgwAESIUABEiIAARIiQAESIoABEiLAARIjAAESI4ABEiQAARIkQAESJIABEiUAARIlQAESSgABElLAARJawAESYsABEmNAARJjwAESZEABEmTAARJlgAESZcABEmYAARJmwAESZwABEmeAARJnwAESaIABEmlAARJpgAESacABEmqAARJqwAESbAABEnJAARJ0gAESdQABEnWAARJ3wAESeIABEnlAARJ5wAESjAABEpUAARKewAESp8ABEqiAARKpAAESqYABEqoAARKqgAESqwABEqtAARKsAAESskABErqAARK7AAESu4ABErwAARK8gAESvQABEr2AARK+AAESvoABEsbAARLHgAESyEABEskAARLJwAESyoABEstAARLMAAESzMABEs1AARLsAAES7IABEu0AARLtgAES7kABEu6AARLuwAES7wABEu9AARLvwAES8EABEvCAARLwwAES8UABEvGAARMQQAETEMABExFAARMRwAETEoABExLAARMTAAETE0ABExOAARMUAAETFIABExTAARMVAAETFYABExXAARM0gAETNQABEzXAARM2QAETNwABEzdAARM3gAETN8ABEzgAARM4gAETOQABEzlAARM5gAETOgABEzpAARNAgAETQMABE0EAARNBgAETYEABE2DAARNhQAETYcABE2KAARNiwAETYwABE2NAARNjgAETZAABE2SAARNkwAETZQABE2WAARNlwAEThIABE4UAAROFgAEThgABE4bAAROHAAETh0ABE4eAAROHwAETiEABE4jAAROJAAETiUABE4nAAROKAAETqMABE6lAAROpwAETqkABE6sAAROrQAETq4ABE6vAAROsAAETrIABE60AAROtQAETrYABE64AAROuQAETzQABE82AARPOAAETzoABE89AARPPgAETz8ABE9AAARPQQAET0MABE9FAARPRgAET0cABE9JAARPSgAET8UABE/HAARPyQAET8sABE/OAARPzwAET9AABE/RAARP0gAET9QABE/WAARP1wAET9gABE/aAARP2wAEUCQABFBIAARQbwAEUJMABFCWAARQmAAEUJoABFCcAARQngAEUKAABFChAARQpAAEUL0ABFDaAARQ3AAEUN4ABFDgAARQ4gAEUOQABFDmAARQ6AAEUQUABFEIAARRCwAEUQ4ABFERAARRFAAEURcABFEaAARRHAAEUZcABFGZAARRmwAEUZ0ABFGgAARRoQAEUaIABFGjAARRpAAEUaYABFGoAARRqQAEUaoABFGsAARRrQAEUigABFIqAARSLAAEUi4ABFIxAARSMgAEUjMABFI0AARSNQAEUjcABFI5AARSOgAEUjsABFI9AARSPgAEUrkABFK7AARSvQAEUr8ABFLCAARSwwAEUsQABFLFAARSxgAEUsgABFLKAARSywAEUswABFLOAARSzwAEU0oABFNMAARTTwAEU1EABFNUAARTVQAEU1YABFNXAARTWAAEU1oABFNcAARTXQAEU14ABFNgAARTYQAEU9wABFPeAART4AAEU+IABFPlAART5gAEU+cABFPoAART6QAEU+sABFPtAART7gAEU+8ABFPxAART8gAEVG0ABFRvAARUcQAEVHMABFR2AARUdwAEVHgABFR5AARUegAEVHwABFR+AARUfwAEVIAABFSCAARUgwAEVP4ABFUAAARVAwAEVQUABFUIAARVCQAEVQoABFULAARVDAAEVQ4ABFUQAARVEQAEVRIABFUUAARVFQAEVagABFXLAARV6wAEVgsABFYNAARWDwAEVhEABFYTAARWFgAEVhcABFYYAARWGwAEVhwABFYeAARWHwAEViEABFYkAARWJQAEViYABFYpAARWKgAEVjMABFZMAARWVQAEVlcABFZZAARWYgAEVmUABFZoAARWagAEVrMABFbXAARW/gAEVyIABFclAARXJwAEVykABFcrAARXLQAEVy8ABFcwAARXMwAEV0wABFdtAARXbwAEV3EABFdzAARXdQAEV3cABFd5AARXewAEV30ABFeeAARXoQAEV6QABFenAARXqgAEV60ABFewAARXswAEV7YABFe4AARYMwAEWDUABFg3AARYOQAEWDwABFg9AARYPgAEWD8ABFhAAARYQgAEWEQABFhFAARYRgAEWEgABFhJAARYxAAEWMYABFjIAARYygAEWM0ABFjOAARYzwAEWNAABFjRAARY0wAEWNUABFjWAARY1wAEWNkABFjaAARZVQAEWVcABFlaAARZXAAEWV8ABFlgAARZYQAEWWIABFljAARZZQAEWWcABFloAARZaQAEWWsABFlsAARZhQAEWYYABFmHAARZiQAEWgQABFoGAARaCAAEWgoABFoNAARaDgAEWg8ABFoQAARaEQAEWhMABFoVAARaFgAEWhcABFoZAARaGgAEWpUABFqXAARamQAEWpsABFqeAARanwAEWqAABFqhAARaogAEWqQABFqmAARapwAEWqgABFqqAARaqwAEWyYABFsoAARbKgAEWywABFsvAARbMAAEWzEABFsyAARbMwAEWzUABFs3AARbOAAEWzkABFs7AARbPAAEW7cABFu5AARbuwAEW70ABFvAAARbwQAEW8IABFvDAARbxAAEW8YABFvIAARbyQAEW8oABFvMAARbzQAEXEgABFxKAARcTAAEXE4ABFxRAARcUgAEXFMABFxUAARcVQAEXFcABFxZAARcWgAEXFsABFxdAARcXgAEXKcABFzLAARc8gAEXRYABF0ZAARdGwAEXR0ABF0fAARdIQAEXSMABF0kAARdJwAEXUAABF1dAARdXwAEXWEABF1jAARdZQAEXWcABF1pAARdawAEXYgABF2LAARdjgAEXZEABF2UAARdlwAEXZoABF2dAARdnwAEXhoABF4cAAReHgAEXiAABF4jAAReJAAEXiUABF4mAAReJwAEXikABF4rAAReLAAEXi0ABF4vAAReMAAEXqsABF6tAARerwAEXrEABF60AARetQAEXrYABF63AAReuAAEXroABF68AARevQAEXr4ABF7AAARewQAEXzwABF8+AARfQAAEX0IABF9FAARfRgAEX0cABF9IAARfSQAEX0sABF9NAARfTgAEX08ABF9RAARfUgAEX80ABF/PAARf0QAEX9MABF/WAARf1wAEX9gABF/ZAARf2gAEX9wABF/eAARf3wAEX+AABF/iAARf4wAEYF4ABGBgAARgYgAEYGQABGBnAARgaAAEYGkABGBqAARgawAEYG0ABGBvAARgcAAEYHEABGBzAARgdAAEYO8ABGDxAARg8wAEYPUABGD4AARg+QAEYPoABGD7AARg/AAEYP4ABGEAAARhAQAEYQIABGEEAARhBQAEYYAABGGCAARhhAAEYYYABGGJAARhigAEYYsABGGMAARhjQAEYY8ABGGRAARhkgAEYZMABGGVAARhlgAEYikABGJMAARibAAEYowABGKOAARikAAEYpIABGKUAARilwAEYpgABGKZAARinAAEYp0ABGKfAARioAAEYqIABGKlAARipgAEYqcABGKqAARiqwAEYrAABGLJAARi0gAEYtQABGLWAARi3wAEYuIABGLlAARi5wAEYzAABGNUAARjewAEY58ABGOiAARjpAAEY6YABGOoAARjqgAEY6wABGOtAARjsAAEY8kABGPqAARj7AAEY+4ABGPwAARj8gAEY/QABGP2AARj+AAEY/oABGQbAARkHgAEZCEABGQkAARkJwAEZCoABGQtAARkMAAEZDMABGQ1AARksAAEZLIABGS0AARktgAEZLkABGS6AARkuwAEZLwABGS9AARkvwAEZMEABGTCAARkwwAEZMUABGTGAARlQQAEZUMABGVFAARlRwAEZUoABGVLAARlTAAEZU0ABGVOAARlUAAEZVIABGVTAARlVAAEZVYABGVXAARl0gAEZdQABGXXAARl2QAEZdwABGXdAARl3gAEZd8ABGXgAARl4gAEZeQABGXlAARl5gAEZegABGXpAARmAgAEZgMABGYEAARmBgAEZoEABGaDAARmhQAEZocABGaKAARmiwAEZowABGaNAARmjgAEZpAABGaSAARmkwAEZpQABGaWAARmlwAEZxIABGcUAARnFgAEZxgABGcbAARnHAAEZx0ABGceAARnHwAEZyEABGcjAARnJAAEZyUABGcnAARnKAAEZ6MABGelAARnpwAEZ6kABGesAARnrQAEZ64ABGevAARnsAAEZ7IABGe0AARntQAEZ7YABGe4AARnuQAEaDQABGg2AARoOAAEaDoABGg9AARoPgAEaD8ABGhAAARoQQAEaEMABGhFAARoRgAEaEcABGhJAARoSgAEaMUABGjHAARoyQAEaMsABGjOAARozwAEaNAABGjRAARo0gAEaNQABGjWAARo1wAEaNgABGjaAARo2wAEaSQABGlIAARpbwAEaZMABGmWAARpmAAEaZoABGmcAARpngAEaaAABGmhAARppAAEab0ABGnaAARp3AAEad4ABGngAARp4gAEaeQABGnmAARp6AAEagUABGoIAARqCwAEag4ABGoRAARqFAAEahcABGoaAARqHAAEapcABGqZAARqmwAEap0ABGqgAARqoQAEaqIABGqjAARqpAAEaqYABGqoAARqqQAEaqoABGqsAARqrQAEaygABGsqAARrLAAEay4ABGsxAARrMgAEazMABGs0AARrNQAEazcABGs5AARrOgAEazsABGs9AARrPgAEa7kABGu7AARrvQAEa78ABGvCAARrwwAEa8QABGvFAARrxgAEa8gABGvKAARrywAEa8wABGvOAARrzwAEbEoABGxMAARsTwAEbFEABGxUAARsVQAEbFYABGxXAARsWAAEbFoABGxcAARsXQAEbF4ABGxgAARsYQAEbNwABGzeAARs4AAEbOIABGzlAARs5gAEbOcABGzoAARs6QAEbOsABGztAARs7gAEbO8ABGzxAARs8gAEbW0ABG1vAARtcQAEbXMABG12AARtdwAEbXgABG15AARtegAEbXwABG1+AARtfwAEbYAABG2CAARtgwAEbf4ABG4AAARuAgAEbgQABG4HAARuCAAEbgkABG4KAARuCwAEbg0ABG4PAARuEAAEbhEABG4TAARuFAAEbqcABG7KAARu6gAEbwoABG8MAARvDgAEbxAABG8SAARvFQAEbxYABG8XAARvGgAEbxsABG8dAARvHgAEbyAABG8jAARvJAAEbyUABG8oAARvKQAEby4ABG9HAARvUAAEb1IABG9UAARvXQAEb2AABG9jAARvZQAEb64ABG/SAARv+QAEcB0ABHAgAARwIgAEcCQABHAmAARwKAAEcCoABHArAARwLgAEcEcABHBoAARwagAEcGwABHBuAARwcAAEcHIABHB0AARwdgAEcHgABHCZAARwnAAEcJ8ABHCiAARwpQAEcKgABHCrAARwrgAEcLEABHCzAARxLgAEcTAABHEyAARxNAAEcTcABHE4AARxOQAEcToABHE7AARxPQAEcT8ABHFAAARxQQAEcUMABHFEAARxvwAEccEABHHDAARxxQAEccgABHHJAARxygAEccsABHHMAARxzgAEcdAABHHRAARx0gAEcdQABHHVAARyUAAEclIABHJVAARyVwAEcloABHJbAARyXAAEcl0ABHJeAARyYAAEcmIABHJjAARyZAAEcmYABHJnAARygAAEcoEABHKCAARyhAAEcv8ABHMBAARzAwAEcwUABHMIAARzCQAEcwoABHMLAARzDAAEcw4ABHMQAARzEQAEcxIABHMUAARzFQAEc5AABHOSAARzlAAEc5YABHOZAARzmgAEc5sABHOcAARznQAEc58ABHOhAARzogAEc6MABHOlAARzpgAEdCEABHQjAAR0JQAEdCcABHQqAAR0KwAEdCwABHQtAAR0LgAEdDAABHQyAAR0MwAEdDQABHQ2AAR0NwAEdLIABHS0AAR0tgAEdLgABHS7AAR0vAAEdL0ABHS+AAR0vwAEdMEABHTDAAR0xAAEdMUABHTHAAR0yAAEdUMABHVFAAR1RwAEdUkABHVMAAR1TQAEdU4ABHVPAAR1UAAEdVIABHVUAAR1VQAEdVYABHVYAAR1WQAEdaIABHXGAAR17QAEdhEABHYUAAR2FgAEdhgABHYaAAR2HAAEdh4ABHYfAAR2IgAEdjsABHZYAAR2WgAEdlwABHZeAAR2YAAEdmIABHZkAAR2ZgAEdoMABHaGAAR2iQAEdowABHaPAAR2kgAEdpUABHaYAAR2mgAEdxUABHcXAAR3GQAEdxsABHceAAR3HwAEdyAABHchAAR3IgAEdyQABHcmAAR3JwAEdygABHcqAAR3KwAEd6YABHeoAAR3qgAEd6wABHevAAR3sAAEd7EABHeyAAR3swAEd7UABHe3AAR3uAAEd7kABHe7AAR3vAAEeDcABHg5AAR4OwAEeD0ABHhAAAR4QQAEeEIABHhDAAR4RAAEeEYABHhIAAR4SQAEeEoABHhMAAR4TQAEeMgABHjKAAR4zAAEeM4ABHjRAAR40gAEeNMABHjUAAR41QAEeNcABHjZAAR42gAEeNsABHjdAAR43gAEeVkABHlbAAR5XQAEeV8ABHliAAR5YwAEeWQABHllAAR5ZgAEeWgABHlqAAR5awAEeWwABHluAAR5bwAEeeoABHnsAAR57gAEefAABHnzAAR59AAEefUABHn2AAR59wAEefkABHn7AAR5/AAEef0ABHn/AAR6AAAEensABHp9AAR6fwAEeoEABHqEAAR6hQAEeoYABHqHAAR6iAAEeooABHqMAAR6jQAEeo4ABHqQAAR6kQAEeyQABHtHAAR7ZwAEe4cABHuJAAR7iwAEe40ABHuPAAR7kgAEe5MABHuUAAR7lwAEe5gABHuaAAR7mwAEe50ABHugAAR7oQAEe6IABHulAAR7pgAEe6sABHvEAAR7zQAEe88ABHvRAAR72gAEe90ABHvgAAR74gAEfCsABHxPAAR8dgAEfJoABHydAAR8nwAEfKEABHyjAAR8pQAEfKcABHyoAAR8qwAEfMQABHzlAAR85wAEfOkABHzrAAR87QAEfO8ABHzxAAR88wAEfPUABH0WAAR9GQAEfRwABH0fAAR9IgAEfSUABH0oAAR9KwAEfS4ABH0wAAR9qwAEfa0ABH2vAAR9sQAEfbQABH21AAR9tgAEfbcABH24AAR9ugAEfbwABH29AAR9vgAEfcAABH3BAAR+PAAEfj4ABH5AAAR+QgAEfkUABH5GAAR+RwAEfkgABH5JAAR+SwAEfk0ABH5OAAR+TwAEflEABH5SAAR+zQAEfs8ABH7SAAR+1AAEftcABH7YAAR+2QAEftoABH7bAAR+3QAEft8ABH7gAAR+4QAEfuMABH7kAAR+/QAEfv4ABH7/AAR/AQAEf3wABH9+AAR/gAAEf4IABH+FAAR/hgAEf4cABH+IAAR/iQAEf4sABH+NAAR/jgAEf48ABH+RAAR/kgAEgA0ABIAPAASAEQAEgBMABIAWAASAFwAEgBgABIAZAASAGgAEgBwABIAeAASAHwAEgCAABIAiAASAIwAEgJ4ABICgAASAogAEgKQABICnAASAqAAEgKkABICqAASAqwAEgK0ABICvAASAsAAEgLEABICzAASAtAAEgS8ABIExAASBMwAEgTUABIE4AASBOQAEgToABIE7AASBPAAEgT4ABIFAAASBQQAEgUIABIFEAASBRQAEgcAABIHCAASBxAAEgcYABIHJAASBygAEgcsABIHMAASBzQAEgc8ABIHRAASB0gAEgdMABIHVAASB1gAEgh8ABIJDAASCagAEgo4ABIKRAASCkwAEgpUABIKXAASCmQAEgpsABIKcAASCnwAEgrgABILVAASC1wAEgtkABILbAASC3QAEgt8ABILhAASC4wAEgwAABIMDAASDBgAEgwkABIMMAASDDwAEgxIABIMVAASDFwAEg5IABIOUAASDlwAEg5kABIOcAASDnQAEg54ABIOfAASDoAAEg6IABIOkAASDpQAEg6YABIOoAASDqQAEhCQABIQmAASEKAAEhCoABIQtAASELgAEhC8ABIQwAASEMQAEhDMABIQ1AASENgAEhDcABIQ5AASEOgAEhLUABIS3AASEuQAEhLsABIS+AASEvwAEhMAABITBAASEwgAEhMQABITGAASExwAEhMgABITKAASEywAEhUYABIVIAASFSwAEhU0ABIVQAASFUQAEhVIABIVTAASFVAAEhVYABIVYAASFWQAEhVoABIVcAASFXQAEhdgABIXaAASF3AAEhd4ABIXhAASF4gAEheMABIXkAASF5QAEhecABIXpAASF6gAEhesABIXtAASF7gAEhmkABIZrAASGbQAEhm8ABIZyAASGcwAEhnQABIZ1AASGdgAEhngABIZ6AASGewAEhnwABIZ+AASGfwAEhvoABIb8AASG/gAEhwAABIcDAASHBAAEhwUABIcGAASHBwAEhwkABIcLAASHDAAEhw0ABIcPAASHEAAEh6MABIfGAASH5gAEiAYABIgIAASICgAEiAwABIgOAASIEQAEiBIABIgTAASIFgAEiBcABIgZAASIGgAEiBwABIgfAASIIAAEiCEABIgkAASIJQAEiCoABIhDAASITAAEiE4ABIhQAASIWQAEiFwABIhfAASIYQAEiKoABIjOAASI9QAEiRkABIkcAASJHgAEiSAABIkiAASJJAAEiSYABIknAASJKgAEiUMABIlkAASJZgAEiWgABIlqAASJbAAEiW4ABIlwAASJcgAEiXQABImVAASJmAAEiZsABImeAASJoQAEiaQABImnAASJqgAEia0ABImvAASKKgAEiiwABIouAASKMAAEijMABIo0AASKNQAEijYABIo3AASKOQAEijsABIo8AASKPQAEij8ABIpAAASKuwAEir0ABIq/AASKwQAEisQABIrFAASKxgAEiscABIrIAASKygAEiswABIrNAASKzgAEitAABIrRAASLTAAEi04ABItRAASLUwAEi1YABItXAASLWAAEi1kABItaAASLXAAEi14ABItfAASLYAAEi2IABItjAASLfAAEi30ABIt+AASLgAAEi/sABIv9AASL/wAEjAEABIwEAASMBQAEjAYABIwHAASMCAAEjAoABIwMAASMDQAEjA4ABIwQAASMEQAEjIwABIyOAASMkAAEjJIABIyVAASMlgAEjJcABIyYAASMmQAEjJsABIydAASMngAEjJ8ABIyhAASMogAEjR0ABI0fAASNIQAEjSMABI0mAASNJwAEjSgABI0pAASNKgAEjSwABI0uAASNLwAEjTAABI0yAASNMwAEja4ABI2wAASNswAEjbUABI24AASNuQAEjboABI27AASNvAAEjb4ABI3AAASNwQAEjcIABI3EAASNxQAEjdQABI5PAASOUQAEjlMABI5VAASOWAAEjlkABI5aAASOWwAEjlwABI5eAASOYAAEjmEABI5iAASOZAAEjmUABI6uAASO0gAEjvkABI8dAASPIAAEjyIABI8kAASPJgAEjygABI8qAASPKwAEjy4ABI9HAASPZAAEj2YABI9oAASPagAEj2wABI9uAASPcAAEj3IABI+PAASPkgAEj5UABI+YAASPmwAEj54ABI+hAASPpAAEj6YABJAhAASQIwAEkCUABJAnAASQKgAEkCsABJAsAASQLQAEkC4ABJAwAASQMgAEkDMABJA0AASQNgAEkDcABJCyAASQtAAEkLYABJC4AASQuwAEkLwABJC9AASQvgAEkL8ABJDBAASQwwAEkMQABJDFAASQxwAEkMgABJFDAASRRQAEkUgABJFKAASRTQAEkU4ABJFPAASRUAAEkVEABJFTAASRVQAEkVYABJFXAASRWQAEkVoABJHVAASR1wAEkdoABJHcAASR3wAEkeAABJHhAASR4gAEkeMABJHlAASR5wAEkegABJHpAASR6wAEkewABJJnAASSaQAEkmsABJJtAASScAAEknEABJJyAASScwAEknQABJJ2AASSeAAEknkABJJ6AASSfAAEkn0ABJL4AASS+gAEkvwABJL+AASTAQAEkwIABJMDAASTBAAEkwUABJMHAASTCQAEkwoABJMLAASTDQAEkw4ABJOJAASTiwAEk40ABJOPAASTkgAEk5MABJOUAASTlQAEk5YABJOYAASTmgAEk5sABJOcAASTngAEk58ABJOwAASTsQAEk7MABJPEAASTzQAEk9AABJPTAAST1QAElA4ABJQRAASUEwAElBYABJQZAASUHAAElB8ABJSiAASUxgAElOoABJUNAASVNAAElVQABJV7AASVogAElcIABJXmAASWCgAElgwABJYPAASWEQAElhMABJYVAASWGAAElhsABJYdAASWHwAEliIABJYkAASWJgAElikABJYsAASWLQAEljIABJZLAASWUAAEllIABJZXAASWWgAEllwABJalAASWyQAElvAABJcUAASXFwAElxkABJcbAASXHQAElx8ABJchAASXIgAElyUABJc+AASXYwAEl2UABJdnAASXaQAEl2sABJdtAASXbwAEl3EABJdzAASXdQAEl5oABJedAASXoAAEl6MABJemAASXqQAEl6wABJevAASXsgAEl7UABJe3AASYMgAEmDQABJg3AASYOQAEmDwABJg9AASYPgAEmD8ABJhAAASYQgAEmEQABJhFAASYRgAEmEgABJhJAASYWgAEmFsABJhdAASY2AAEmNoABJjcAASY3gAEmOEABJjiAASY4wAEmOQABJjlAASY5wAEmOkABJjqAASY6wAEmO0ABJjuAASZaQAEmWsABJluAASZcAAEmXMABJl0AASZdQAEmXYABJl3AASZeQAEmXsABJl8AASZfQAEmX8ABJmAAASZkQAEmZIABJmUAASaDwAEmhEABJoTAASaFQAEmhgABJoZAASaGgAEmhsABJocAASaHgAEmiAABJohAASaIgAEmiQABJolAASaoAAEmqIABJqlAASapwAEmqoABJqrAASarAAEmq0ABJquAASasAAEmrIABJqzAASatAAEmrYABJq3AASayAAEmskABJrLAASbRgAEm0gABJtKAASbTAAEm08ABJtQAASbUQAEm1IABJtTAASbVQAEm1cABJtYAASbWQAEm1sABJtcAASb1wAEm9kABJvcAASb3gAEm+EABJviAASb4wAEm+QABJvlAASb5wAEm+kABJvqAASb6wAEm+0ABJvuAAScBwAEnAgABJwJAAScCwAEnIYABJyIAAScigAEnIwABJyPAASckAAEnJEABJySAASckwAEnJUABJyXAAScmAAEnJkABJybAAScnAAEnRcABJ0ZAASdHAAEnR4ABJ0hAASdIgAEnSMABJ0kAASdJQAEnScABJ0pAASdKgAEnSsABJ0tAASdLgAEnVIABJ1rAASddAAEnXcABJ16AASdgwAEnYYABJ2JAASdiwAEnZ0ABJ2nAASeOgAEnl0ABJ59AASenQAEnp8ABJ6hAASeowAEnqUABJ6oAASeqQAEnqoABJ6tAASergAEnrAABJ6xAASetAAEnrcABJ64AASeuQAEnrwABJ69AASewgAEntsABJ7kAASe5gAEnugABJ7xAASe9AAEnvcABJ75AASfQgAEn2YABJ+NAASfsQAEn7QABJ+2AASfuAAEn7oABJ+8AASfvgAEn78ABJ/CAASf2wAEn/wABJ/+AASgAAAEoAIABKAEAASgBgAEoAgABKAKAASgDAAEoC0ABKAwAASgMwAEoDYABKA5AASgPAAEoD8ABKBCAASgRQAEoEcABKDCAASgxAAEoMYABKDIAASgywAEoMwABKDNAASgzgAEoM8ABKDRAASg0wAEoNQABKDVAASg1wAEoNgABKFTAAShVQAEoVcABKFZAAShXAAEoV0ABKFeAAShXwAEoWAABKFiAAShZAAEoWUABKFmAAShaAAEoWkABKHkAASh5gAEoekABKHrAASh7gAEoe8ABKHwAASh8QAEofIABKH0AASh9gAEofcABKH4AASh+gAEofsABKIUAASiFQAEohYABKIYAASikwAEopUABKKXAASimQAEopwABKKdAASingAEop8ABKKgAASiogAEoqQABKKlAASipgAEoqgABKKpAASjJAAEoyYABKMoAASjKgAEoy0ABKMuAASjLwAEozAABKMxAASjMwAEozUABKM2AASjNwAEozkABKM6AASjtQAEo7cABKO5AASjuwAEo74ABKO/AASjwAAEo8EABKPCAASjxAAEo8YABKPHAASjyAAEo8oABKPLAASkRgAEpEgABKRKAASkTAAEpE8ABKRQAASkUQAEpFIABKRTAASkVQAEpFcABKRYAASkWQAEpFsABKRcAASk1wAEpNkABKTbAASk3QAEpOAABKThAASk4gAEpOMABKTkAASk5gAEpOgABKTpAASk6gAEpOwABKTtAASlNgAEpVoABKWBAASlpQAEpagABKWqAASlrAAEpa4ABKWwAASlsgAEpbMABKW2AASlzwAEpewABKXuAASl8AAEpfIABKX0AASl9gAEpfgABKX6AASmFwAEphoABKYdAASmIAAEpiMABKYmAASmKQAEpiwABKYuAASmqQAEpqsABKatAASmrwAEprIABKazAASmtAAEprUABKa2AASmuAAEproABKa7AASmvAAEpr4ABKa/AASnOgAEpzwABKc+AASnQAAEp0MABKdEAASnRQAEp0YABKdHAASnSQAEp0sABKdMAASnTQAEp08ABKdQAASnywAEp80ABKfPAASn0QAEp9QABKfVAASn1gAEp9cABKfYAASn2gAEp9wABKfdAASn3gAEp+AABKfhAASoXAAEqF4ABKhhAASoYwAEqGYABKhnAASoaAAEqGkABKhqAASobAAEqG4ABKhvAASocAAEqHIABKhzAASo9gAEqRoABKk+AASpYQAEqYgABKmoAASpzwAEqfYABKoWAASqOgAEql4ABKpgAASqYwAEqmUABKpnAASqaQAEqmwABKpvAASqcQAEqnMABKp2AASqeAAEqnoABKp9AASqgAAEqoEABKqGAASqnwAEqqQABKqmAASqqwAEqq4ABKqwAASq+QAEqx0ABKtEAASraAAEq2sABKttAASrbwAEq3EABKtzAASrdQAEq3YABKt5AASrkgAEq7cABKu5AASruwAEq70ABKu/AASrwQAEq8MABKvFAASrxwAEq8kABKvuAASr8QAEq/QABKv3AASr+gAEq/0ABKwAAASsAwAErAYABKwJAASsCwAErIYABKyIAASsiwAErI0ABKyQAASskQAErJIABKyTAASslAAErJYABKyYAASsmQAErJoABKycAASsnQAErK4ABKyvAASssQAErSwABK0uAAStMAAErTIABK01AAStNgAErTcABK04AAStOQAErTsABK09AAStPgAErT8ABK1BAAStQgAErb0ABK2/AAStwgAErcQABK3HAAStyAAErckABK3KAAStywAErc0ABK3PAASt0AAErdEABK3TAASt1AAEreUABK3mAASt6AAErmMABK5lAASuZwAErmkABK5sAASubQAErm4ABK5vAASucAAErnIABK50AASudQAErnYABK54AASueQAErvQABK72AASu+QAErvsABK7+AASu/wAErwAABK8BAASvAgAErwQABK8GAASvBwAErwgABK8KAASvCwAErxwABK8dAASvHwAEr5oABK+cAASvngAEr6AABK+jAASvpAAEr6UABK+mAASvpwAEr6kABK+rAASvrAAEr60ABK+vAASvsAAEsCsABLAtAASwMAAEsDIABLA1AASwNgAEsDcABLA4AASwOQAEsDsABLA9AASwPgAEsD8ABLBBAASwQgAEsFsABLBcAASwXQAEsF8ABLDaAASw3AAEsN4ABLDgAASw4wAEsOQABLDlAASw5gAEsOcABLDpAASw6wAEsOwABLDtAASw7wAEsPAABLFrAASxbQAEsXAABLFyAASxdQAEsXYABLF3AASxeAAEsXkABLF7AASxfQAEsX4ABLF/AASxgQAEsYIABLGdAASxtgAEsdsABLHeAASx4QAEseQABLHnAASx6gAEse0ABLHwAASx8wAEsfYABLIbAASyHgAEsiEABLIkAASyJwAEsioABLItAASyMAAEsjMABLI2AASyOAAEsmAABLJzAASyjQAEsp8ABLK4AASyzQAEsvYABLMaAASzOAAEs8sABLPuAAS0DgAEtC4ABLQwAAS0MgAEtDQABLQ2AAS0OQAEtDoABLQ7AAS0PgAEtD8ABLRBAAS0QgAEtEUABLRIAAS0SQAEtEoABLRNAAS0TgAEtFMABLRsAAS0dQAEtHcABLR5AAS0ggAEtIUABLSIAAS0igAEtNMABLT3AAS1HgAEtUIABLVFAAS1RwAEtUkABLVLAAS1TQAEtU8ABLVQAAS1UwAEtWwABLWNAAS1jwAEtZEABLWTAAS1lQAEtZcABLWZAAS1mwAEtZ0ABLW+AAS1wQAEtcQABLXHAAS1ygAEtc0ABLXQAAS10wAEtdYABLXYAAS2UwAEtlUABLZXAAS2WQAEtlwABLZdAAS2XgAEtl8ABLZgAAS2YgAEtmQABLZlAAS2ZgAEtmgABLZpAAS25AAEtuYABLboAAS26gAEtu0ABLbuAAS27wAEtvAABLbxAAS28wAEtvUABLb2AAS29wAEtvkABLb6AAS3dQAEt3cABLd6AAS3fAAEt38ABLeAAAS3gQAEt4IABLeDAAS3hQAEt4cABLeIAAS3iQAEt4sABLeMAAS3pQAEt6YABLenAAS3qQAEuCQABLgmAAS4KAAEuCoABLgtAAS4LgAEuC8ABLgwAAS4MQAEuDMABLg1AAS4NgAEuDcABLg5AAS4OgAEuLUABLi3AAS4uQAEuLsABLi+AAS4vwAEuMAABLjBAAS4wgAEuMQABLjGAAS4xwAEuMgABLjKAAS4ywAEuUYABLlIAAS5SgAEuUwABLlPAAS5UAAEuVEABLlSAAS5UwAEuVUABLlXAAS5WAAEuVkABLlbAAS5XAAEudcABLnZAAS52wAEud0ABLngAAS54QAEueIABLnjAAS55AAEueYABLnoAAS56QAEueoABLnsAAS57QAEumgABLpqAAS6bAAEum4ABLpxAAS6cgAEunMABLp0AAS6dQAEuncABLp5AAS6egAEunsABLp9AAS6fgAEuscABLrrAAS7EgAEuzYABLs5AAS7OwAEuz0ABLs/AAS7QQAEu0MABLtEAAS7RwAEu2AABLt9AAS7fwAEu4EABLuDAAS7hQAEu4cABLuJAAS7iwAEu6gABLurAAS7rgAEu7EABLu0AAS7twAEu7oABLu9AAS7vwAEvDoABLw8AAS8PgAEvEAABLxDAAS8RAAEvEUABLxGAAS8RwAEvEkABLxLAAS8TAAEvE0ABLxPAAS8UAAEvMsABLzNAAS80AAEvNIABLzVAAS81gAEvNcABLzYAAS82QAEvNsABLzdAAS83gAEvN8ABLzhAAS84gAEvV0ABL1fAAS9YQAEvWMABL1mAAS9ZwAEvWgABL1pAAS9agAEvWwABL1uAAS9bwAEvXAABL1yAAS9cwAEve4ABL3wAAS98wAEvfUABL34AAS9+QAEvfoABL37AAS9/AAEvf4ABL4AAAS+AQAEvgIABL4EAAS+BQAEvogABL6sAAS+0AAEvvMABL8aAAS/OgAEv2EABL+IAAS/qAAEv8wABL/wAAS/8gAEv/UABL/3AAS/+QAEv/sABL/+AATAAQAEwAMABMAFAATACAAEwAoABMAMAATADwAEwBIABMATAATAGAAEwDEABMA2AATAOAAEwD0ABMBAAATAQgAEwIsABMCvAATA1gAEwPoABMD9AATA/wAEwQEABMEDAATBBQAEwQcABMEIAATBCwAEwSQABMFJAATBSwAEwU0ABMFPAATBUQAEwVMABMFVAATBVwAEwVkABMFbAATBgAAEwYMABMGGAATBiQAEwYwABMGPAATBkgAEwZUABMGYAATBmwAEwZ0ABMIYAATCGgAEwh0ABMIfAATCIgAEwiMABMIkAATCJQAEwiYABMIoAATCKgAEwisABMIsAATCLgAEwi8ABMJAAATCQQAEwkMABMK+AATCwAAEwsIABMLEAATCxwAEwsgABMLJAATCygAEwssABMLNAATCzwAEwtAABMLRAATC0wAEwtQABMNPAATDUQAEw1QABMNWAATDWQAEw1oABMNbAATDXAAEw10ABMNfAATDYQAEw2IABMNjAATDZQAEw2YABMN3AATDeAAEw3oABMP1AATD9wAEw/kABMP7AATD/gAEw/8ABMQAAATEAQAExAIABMQEAATEBgAExAcABMQIAATECgAExAsABMSGAATEiAAExIsABMSNAATEkAAExJEABMSSAATEkwAExJQABMSWAATEmAAExJkABMSaAATEnAAExJ0ABMSuAATErwAExLEABMUsAATFLgAExTAABMUyAATFNQAExTYABMU3AATFOAAExTkABMU7AATFPQAExT4ABMU/AATFQQAExUIABMW9AATFvwAExcIABMXEAATFxwAExcgABMXJAATFygAExcsABMXNAATFzwAExdAABMXRAATF0wAExdQABMXtAATF7gAExe8ABMXxAATGbAAExm4ABMZwAATGcgAExnUABMZ2AATGdwAExngABMZ5AATGewAExn0ABMZ+AATGfwAExoEABMaCAATG/QAExv8ABMcCAATHBAAExwcABMcIAATHCQAExwoABMcLAATHDQAExw8ABMcQAATHEQAExxMABMcUAATHUAAEx2kABMduAATHcQAEx3YABMd5AATHewAEx6EABMg0AATIVwAEyHcABMiXAATImQAEyJsABMidAATInwAEyKIABMijAATIpAAEyKcABMioAATIqgAEyKsABMiuAATIsQAEyLIABMizAATItgAEyLcABMi8AATI1QAEyN4ABMjgAATI4gAEyOsABMjuAATI8QAEyPMABMk8AATJYAAEyYcABMmrAATJrgAEybAABMmyAATJtAAEybYABMm4AATJuQAEybwABMnVAATJ9gAEyfgABMn6AATJ/AAEyf4ABMoAAATKAgAEygQABMoGAATKJwAEyioABMotAATKMAAEyjMABMo2AATKOQAEyjwABMo/AATKQQAEyrwABMq+AATKwAAEysIABMrFAATKxgAEyscABMrIAATKyQAEyssABMrNAATKzgAEys8ABMrRAATK0gAEy00ABMtPAATLUQAEy1MABMtWAATLVwAEy1gABMtZAATLWgAEy1wABMteAATLXwAEy2AABMtiAATLYwAEy94ABMvgAATL4wAEy+UABMvoAATL6QAEy+oABMvrAATL7AAEy+4ABMvwAATL8QAEy/IABMv0AATL9QAEzA4ABMwPAATMEAAEzBIABMyNAATMjwAEzJEABMyTAATMlgAEzJcABMyYAATMmQAEzJoABMycAATMngAEzJ8ABMygAATMogAEzKMABM0eAATNIAAEzSIABM0kAATNJwAEzSgABM0pAATNKgAEzSsABM0tAATNLwAEzTAABM0xAATNMwAEzTQABM2vAATNsQAEzbMABM21AATNuAAEzbkABM26AATNuwAEzbwABM2+AATNwAAEzcEABM3CAATNxAAEzcUABM5AAATOQgAEzkQABM5GAATOSQAEzkoABM5LAATOTAAEzk0ABM5PAATOUQAEzlIABM5TAATOVQAEzlYABM7RAATO0wAEztUABM7XAATO2gAEztsABM7cAATO3QAEzt4ABM7gAATO4gAEzuMABM7kAATO5gAEzucABM8wAATPVAAEz3sABM+fAATPogAEz6QABM+mAATPqAAEz6oABM+sAATPrQAEz7AABM/JAATP5gAEz+gABM/qAATP7AAEz+4ABM/wAATP8gAEz/QABNARAATQFAAE0BcABNAaAATQHQAE0CAABNAjAATQJgAE0CgABNCjAATQpQAE0KcABNCpAATQrAAE0K0ABNCuAATQrwAE0LAABNCyAATQtAAE0LUABNC2AATQuAAE0LkABNE0AATRNgAE0TgABNE6AATRPQAE0T4ABNE/AATRQAAE0UEABNFDAATRRQAE0UYABNFHAATRSQAE0UoABNHFAATRxwAE0ckABNHLAATRzgAE0c8ABNHQAATR0QAE0dIABNHUAATR1gAE0dcABNHYAATR2gAE0dsABNJWAATSWAAE0lsABNJdAATSYAAE0mEABNJiAATSYwAE0mQABNJmAATSaAAE0mkABNJqAATSbAAE0m0ABNLoAATS6gAE0uwABNLuAATS8QAE0vIABNLzAATS9AAE0vUABNL3AATS+QAE0voABNL7AATS/QAE0v4ABNN5AATTewAE030ABNN/AATTggAE04MABNOEAATThQAE04YABNOIAATTigAE04sABNOMAATTjgAE048ABNQKAATUDAAE1A8ABNQRAATUFAAE1BUABNQWAATUFwAE1BgABNQaAATUHAAE1B0ABNQeAATUIAAE1CEABNQyAATUNwAE1DoABNQ8AATUdQAE1HgABNR6AATUfQAE1IAABNSDAATUhgAE1I8ABNUyAATVVgAE1XoABNWaAATVwQAE1egABNYIAATWLwAE1lMABNZ2AATWnQAE1sEABNblAATXCQAE1zAABNcxAATXMwAE1zUABNc4AATXOgAE1z0ABNc/AATXQQAE10QABNdGAATXSAAE10sABNdOAATXUAAE11IABNdUAATXVwAE11oABNddAATXYgAE13sABNeAAATXggAE14cABNeKAATXjAAE19UABNf5AATYIAAE2EQABNhHAATYSQAE2EsABNhNAATYTwAE2FEABNhSAATYVQAE2G4ABNiTAATYlQAE2JcABNiZAATYmwAE2J0ABNifAATYoQAE2KMABNilAATYygAE2M0ABNjQAATY0wAE2NYABNjZAATY3AAE2N8ABNjiAATY5QAE2OcABNliAATZZAAE2WcABNlpAATZbAAE2W0ABNluAATZbwAE2XAABNlyAATZdAAE2XUABNl2AATZeAAE2XkABNmKAATZiwAE2Y0ABNoIAATaCgAE2gwABNoOAATaEQAE2hIABNoTAATaFAAE2hUABNoXAATaGQAE2hoABNobAATaHQAE2h4ABNqZAATamwAE2p4ABNqgAATaowAE2qQABNqlAATapgAE2qcABNqpAATaqwAE2qwABNqtAATarwAE2rAABNrBAATawgAE2sQABNs/AATbQQAE20MABNtFAATbSAAE20kABNtKAATbSwAE20wABNtOAATbUAAE21EABNtSAATbVAAE21UABNvQAATb0gAE29UABNvXAATb2gAE29sABNvcAATb3QAE294ABNvgAATb4gAE2+MABNvkAATb5gAE2+cABNv4AATb+QAE2/sABNx2AATceAAE3HoABNx8AATcfwAE3IAABNyBAATcggAE3IMABNyFAATchwAE3IgABNyJAATciwAE3IwABN0HAATdCQAE3QwABN0OAATdEQAE3RIABN0TAATdFAAE3RUABN0XAATdGQAE3RoABN0bAATdHQAE3R4ABN03AATdOAAE3TkABN07AATdtgAE3bgABN26AATdvAAE3b8ABN3AAATdwQAE3cIABN3DAATdxQAE3ccABN3IAATdyQAE3csABN3MAATeRwAE3kkABN5MAATeTgAE3lEABN5SAATeUwAE3lQABN5VAATeVwAE3lkABN5aAATeWwAE3l0ABN5eAATeewAE3pQABN6dAATeoAAE3qMABN6sAATerwAE3rIABN60AATewwAE3tcABN9qAATfjQAE360ABN/NAATfzwAE39EABN/TAATf1QAE39gABN/ZAATf2gAE390ABN/eAATf4AAE3+EABN/jAATf5gAE3+cABN/oAATf6wAE3+wABN/xAATgCgAE4BMABOAVAATgFwAE4CAABOAjAATgJgAE4CgABOBxAATglQAE4LwABODgAATg4wAE4OUABODnAATg6QAE4OsABODtAATg7gAE4PEABOEKAAThKwAE4S0ABOEvAAThMQAE4TMABOE1AAThNwAE4TkABOE7AAThXAAE4V8ABOFiAAThZQAE4WgABOFrAAThbgAE4XEABOF0AAThdgAE4fEABOHzAATh9QAE4fcABOH6AATh+wAE4fwABOH9AATh/gAE4gAABOICAATiAwAE4gQABOIGAATiBwAE4oIABOKEAATihgAE4ogABOKLAATijAAE4o0ABOKOAATijwAE4pEABOKTAATilAAE4pUABOKXAATimAAE4xMABOMVAATjGAAE4xoABOMdAATjHgAE4x8ABOMgAATjIQAE4yMABOMlAATjJgAE4ycABOMpAATjKgAE40MABONEAATjRQAE40cABOPCAATjxAAE48YABOPIAATjywAE48wABOPNAATjzgAE488ABOPRAATj0wAE49QABOPVAATj1wAE49gABORTAATkVQAE5FcABORZAATkXAAE5F0ABOReAATkXwAE5GAABORiAATkZAAE5GUABORmAATkaAAE5GkABOTkAATk5gAE5OgABOTqAATk7QAE5O4ABOTvAATk8AAE5PEABOTzAATk9QAE5PYABOT3AATk+QAE5PoABOV1AATldwAE5XkABOV7AATlfgAE5X8ABOWAAATlgQAE5YIABOWEAATlhgAE5YcABOWIAATligAE5YsABOYGAATmCAAE5goABOYMAATmDwAE5hAABOYRAATmEgAE5hMABOYVAATmFwAE5hgABOYZAATmGwAE5hwABOZlAATmiQAE5rAABObUAATm1wAE5tkABObbAATm3QAE5t8ABObhAATm4gAE5uUABOb+AATnGwAE5x0ABOcfAATnIQAE5yMABOclAATnJwAE5ykABOdGAATnSQAE50wABOdPAATnUgAE51UABOdYAATnWwAE510ABOfYAATn2gAE59wABOfeAATn4QAE5+IABOfjAATn5AAE5+UABOfnAATn6QAE5+oABOfrAATn7QAE5+4ABOhpAAToawAE6G0ABOhvAATocgAE6HMABOh0AATodQAE6HYABOh4AAToegAE6HsABOh8AATofgAE6H8ABOj6AATo/AAE6P4ABOkAAATpAwAE6QQABOkFAATpBgAE6QcABOkJAATpCwAE6QwABOkNAATpDwAE6RAABOmLAATpjQAE6ZAABOmSAATplQAE6ZYABOmXAATpmAAE6ZkABOmbAATpnQAE6Z4ABOmfAATpoQAE6aIABOodAATqHwAE6iEABOojAATqJgAE6icABOooAATqKQAE6ioABOosAATqLgAE6i8ABOowAATqMgAE6jMABOquAATqsAAE6rIABOq0AATqtwAE6rgABOq5AATqugAE6rsABOq9AATqvwAE6sAABOrBAATqwwAE6sQABOs/AATrQQAE60MABOtFAATrSAAE60kABOtKAATrSwAE60wABOtOAATrUAAE61EABOtSAATrVAAE61UABOvoAATsCwAE7CsABOxLAATsTQAE7E8ABOxRAATsUwAE7FYABOxXAATsWAAE7FsABOxcAATsXgAE7F8ABOxhAATsZAAE7GUABOxmAATsaQAE7GoABOxvAATsiAAE7JEABOyTAATslQAE7J4ABOyhAATspAAE7KYABOzvAATtEwAE7ToABO1eAATtYQAE7WMABO1lAATtZwAE7WkABO1rAATtbAAE7W8ABO2IAATtqQAE7asABO2tAATtrwAE7bEABO2zAATttQAE7bcABO25AATt2gAE7d0ABO3gAATt4wAE7eYABO3pAATt7AAE7e8ABO3yAATt9AAE7m8ABO5xAATucwAE7nUABO54AATueQAE7noABO57AATufAAE7n4ABO6AAATugQAE7oIABO6EAATuhQAE7wAABO8CAATvBAAE7wYABO8JAATvCgAE7wsABO8MAATvDQAE7w8ABO8RAATvEgAE7xMABO8VAATvFgAE75EABO+TAATvlgAE75gABO+bAATvnAAE750ABO+eAATvnwAE76EABO+jAATvpAAE76UABO+nAATvqAAE78EABO/CAATvwwAE78UABPBAAATwQgAE8EQABPBGAATwSQAE8EoABPBLAATwTAAE8E0ABPBPAATwUQAE8FIABPBTAATwVQAE8FYABPDRAATw0wAE8NUABPDXAATw2gAE8NsABPDcAATw3QAE8N4ABPDgAATw4gAE8OMABPDkAATw5gAE8OcABPFiAATxZAAE8WYABPFoAATxawAE8WwABPFtAATxbgAE8W8ABPFxAATxcwAE8XQABPF1AATxdwAE8XgABPHzAATx9QAE8fcABPH5AATx/AAE8f0ABPH+AATx/wAE8gAABPICAATyBAAE8gUABPIGAATyCAAE8gkABPKEAATyhgAE8ogABPKKAATyjQAE8o4ABPKPAATykAAE8pEABPKTAATylQAE8pYABPKXAATymQAE8po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ABQU3AAUFOAAFBbMABQW1AAUFtwAFBbkABQW8AAUFvQAFBb4ABQW/AAUFwAAFBcIABQXEAAUFxQAFBcYABQXIAAUFyQAFBkQABQZGAAUGSQAFBksABQZOAAUGTwAFBlAABQZRAAUGUgAFBlQABQZWAAUGVwAFBlgABQZaAAUGWwAFBnQABQZ1AAUGdgAFBngABQbzAAUG9QAFBvcABQb5AAUG/AAFBv0ABQb+AAUG/wAFBwAABQcCAAUHBAAFBwUABQcGAAUHCAAFBwkABQeEAAUHhgAFB4gABQeKAAUHjQAFB44ABQePAAUHkAAFB5EABQeTAAUHlQAFB5YABQeXAAUHmQAFB5oABQgVAAUIFwAFCBkABQgbAAUIHgAFCB8ABQggAAUIIQAFCCIABQgkAAUIJgAFCCcABQgoAAUIKgAFCCsABQimAAUIqAAFCKoABQisAAUIrwAFCLAABQixAAUIsgAFCLMABQi1AAUItwAFCLgABQi5AAUIuwAFCLwABQk3AAUJOQAFCTsABQk9AAUJQAAFCUEABQlCAAUJQwAFCUQABQlGAAUJSAAFCUkABQlKAAUJTAAFCU0ABQmWAAUJugAFCeEABQoFAAUKCAAFCgoABQoMAAUKDgAFChAABQoSAAUKEwAFChYABQovAAUKTAAFCk4ABQpQAAUKUgAFClQABQpWAAUKWAAFCloABQp3AAUKegAFCn0ABQqAAAUKgwAFCoYABQqJAAUKjAAFCo4ABQsJAAULCwAFCw0ABQsPAAULEgAFCxMABQsUAAULFQAFCxYABQsYAAULGgAFCxsABQscAAULHgAFCx8ABQuaAAULnAAFC54ABQugAAULowAFC6QABQulAAULpgAFC6cABQupAAULqwAFC6wABQutAAULrwAFC7AABQwrAAUMLQAFDC8ABQwxAAUMNAAFDDUABQw2AAUMNwAFDDgABQw6AAUMPAAFDD0ABQw+AAUMQAAFDEEABQy8AAUMvgAFDMEABQzDAAUMxgAFDMcABQzIAAUMyQAFDMoABQzMAAUMzgAFDM8ABQzQAAUM0gAFDNMABQ1OAAUNUAAFDVIABQ1UAAUNVwAFDVgABQ1ZAAUNWgAFDVsABQ1dAAUNXwAFDWAABQ1hAAUNYwAFDWQABQ3fAAUN4QAFDeMABQ3lAAUN6AAFDekABQ3qAAUN6wAFDew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ABUT5AAVE+gAFRPsABUT8AAVE/QAFRP8ABUUBAAVFAgAFRQMABUUFAAVFBgAFRYEABUWDAAVFhgAFRYgABUWLAAVFjAAFRY0ABUWOAAVFjwAFRZEABUWTAAVFlAAFRZUABUWXAAVFmAAFRhsABUY/AAVGYwAFRoYABUatAAVGzQAFRvQABUcbAAVHOwAFR18ABUeDAAVHhQAFR4gABUeKAAVHjAAFR44ABUeRAAVHlAAFR5YABUeYAAVHmwAFR50ABUefAAVHogAFR6UABUemAAVHqwAFR8QABUfJAAVHywAFR9AABUfTAAVH1QAFSB4ABUhCAAVIaQAFSI0ABUiQAAVIkgAFSJQABUiWAAVImAAFSJoABUibAAVIngAFSLcABUjcAAVI3gAFSOAABUjiAAVI5AAFSOYABUjoAAVI6gAFSOwABUjuAAVJEwAFSRYABUkZAAVJHAAFSR8ABUkiAAVJJQAFSSgABUkrAAVJLgAFSTAABUmrAAVJrQAFSbAABUmyAAVJtQAFSbYABUm3AAVJuAAFSbkABUm7AAVJvQAFSb4ABUm/AAVJwQAFScIABUnTAAVJ1AAFSdYABUpRAAVKUwAFSlUABUpXAAVKWgAFSlsABUpcAAVKXQAFSl4ABUpgAAVKYgAFSmMABUpkAAVKZgAFSmcABUriAAVK5AAFSucABUrpAAVK7AAFSu0ABUruAAVK7wAFSvAABUryAAVK9AAFSvUABUr2AAVK+AAFSvkABUsKAAVLCwAFSw0ABUuIAAVLigAFS4wABUuOAAVLkQAFS5IABUuTAAVLlAAFS5UABUuXAAVLmQAFS5oABUubAAVLnQAFS54ABUwZAAVMGwAFTB4ABUwgAAVMIwAFTCQABUwlAAVMJgAFTCcABUwpAAVMKwAFTCwABUwtAAVMLwAFTDAABUxBAAVMQgAFTEQABUy/AAVMwQAFTMMABUzFAAVMyAAFTMkABUzKAAVMywAFTMwABUzOAAVM0AAFTNEABUzSAAVM1AAFTNUABU1QAAVNUgAFTVUABU1XAAVNWgAFTVsABU1cAAVNXQAFTV4ABU1gAAVNYgAFTWMABU1kAAVNZgAFTWcABU2AAAVNgQAFTYIABU2EAAVN/wAFTgEABU4DAAVOBQAFTggABU4JAAVOCgAFTgsABU4MAAVODgAFThAABU4RAAVOEgAFThQABU4VAAVOkAAFTpIABU6VAAVOlwAFTpoABU6bAAVOnAAFTp0ABU6eAAVOoAAFTqIABU6jAAVOpAAFTqYABU6nAAVOxwAFTuAABU7pAAVO7AAFTu8ABU74AAVO+wAFTv4ABU8AAAVPFQAFTyEABU+0AAVP1wAFT/cABVAXAAVQGQAFUBsABVAdAAVQHwAFUCIABVAjAAVQJAAFUCcABVAoAAVQKgAFUCsABVAtAAVQMAAFUDEABVAyAAVQNQAFUDYABVA/AAVQWAAFUGEABVBjAAVQZQAFUG4ABVBxAAVQdAAFUHYABVC/AAVQ4wAFUQoABVEuAAVRMQAFUTMABVE1AAVRNwAFUTkABVE7AAVRPAAFUT8ABVFYAAVReQAFUXsABVF9AAVRfwAFUYEABVGDAAVRhQAFUYcABVGJAAVRqgAFUa0ABVGwAAVRswAFUbYABVG5AAVRvAAFUb8ABVHCAAVRxAAFUj8ABVJBAAVSQwAFUkUABVJIAAVSSQAFUkoABVJLAAVSTAAFUk4ABVJQAAVSUQAFUlIABVJUAAVSVQAFUtAABVLSAAVS1AAFUtYABVLZAAVS2gAFUtsABVLcAAVS3QAFUt8ABVLhAAVS4gAFUuMABVLlAAVS5gAFU2EABVNjAAVTZgAFU2gABVNrAAVTbAAFU20ABVNuAAVTbwAFU3EABVNzAAVTdAAFU3UABVN3AAVTeAAFU5EABVOSAAVTkwAFU5UABVQQAAVUEgAFVBQABVQWAAVUGQAFVBoABVQbAAVUHAAFVB0ABVQfAAVUIQAFVCIABVQjAAVUJQAFVCYABVShAAVUowAFVKUABVSnAAVUqgAFVKsABVSsAAVUrQAFVK4ABVSwAAVUsgAFVLMABVS0AAVUtgAFVLcABVUyAAVVNAAFVTYABVU4AAVVOwAFVTwABVU9AAVVPgAFVT8ABVVBAAVVQwAFVUQABVVFAAVVRwAFVUgABVXDAAVVxQAFVccABVXJAAVVzAAFVc0ABVXOAAVVzwAFVdAABVXSAAVV1AAFVdUABVXWAAVV2AAFVdkABVZUAAVWVgAFVlgABVZaAAVWXQAFVl4ABVZfAAVWYAAFVmEABVZjAAVWZQAFVmYABVZnAAVWaQAFVmoABVazAAVW1wAFVv4ABVciAAVXJQAFVycABVcpAAVXKwAFVy0ABVcvAAVXMAAFVzMABVdMAAVXaQAFV2sABVdtAAVXbwAFV3EABVdzAAVXdQAFV3cABVeUAAVXlwAFV5oABVedAAVXoAAFV6MABVemAAVXqQAFV6sABVgmAAVYKAAFWCsABVgtAAVYMAAFWDEABVgyAAVYMwAFWDQABVg2AAVYOAAFWDkABVg6AAVYPAAFWD0ABVi4AAVYugAFWLwABVi+AAVYwQAFWMIABVjDAAVYxAAFWMUABVjHAAVYyQAFWMoABVjLAAVYzQAFWM4ABVlJAAVZSwAFWU0ABVlPAAVZUgAFWVMABVlUAAVZVQAFWVYABVlYAAVZWgAFWVsABVlcAAVZXgAFWV8ABVnaAAVZ3AAFWd8ABVnhAAVZ5AAFWeUABVnmAAVZ5wAFWegABVnqAAVZ7AAFWe0ABVnuAAVZ8AAFWfEABVpsAAVabgAFWnAABVpyAAVadQAFWnYABVp3AAVaeAAFWnkABVp7AAVafQAFWn4ABVp/AAVagQAFWoIABVr9AAVa/wAFWwEABVsDAAVbBgAFWwcABVsIAAVbCQAFWwoABVsMAAVbDgAFWw8ABVsQAAVbEgAFWxMABVuOAAVbkAAFW5IABVuUAAVblwAFW5gABVuZAAVbmgAFW5sABVudAAVbnwAFW6AABVuhAAVbowAFW6QABVw3AAVcWgAFXHoABVyaAAVcnAAFXJ4ABVygAAVcogAFXKUABVymAAVcpwAFXKoABVyrAAVcrQAFXK4ABVyxAAVctAAFXLUABVy2AAVcuQAFXLoABVy/AAVc2AAFXOEABVzjAAVc5QAFXO4ABVzxAAVc9AAFXPYABV0/AAVdYwAFXYoABV2uAAVdsQAFXbMABV21AAVdtwAFXbkABV27AAVdvAAFXb8ABV3YAAVd+QAFXfsABV39AAVd/wAFXgEABV4DAAVeBQAFXgcABV4JAAVeKgAFXi0ABV4wAAVeMwAFXjYABV45AAVePAAFXj8ABV5CAAVeRAAFXr8ABV7BAAVewwAFXsUABV7IAAVeyQAFXsoABV7LAAVezAAFXs4ABV7QAAVe0QAFXtIABV7UAAVe1QAFX1AABV9SAAVfVAAFX1YABV9ZAAVfWgAFX1sABV9cAAVfXQAFX18ABV9hAAVfYgAFX2MABV9lAAVfZgAFX+EABV/jAAVf5gAFX+gABV/rAAVf7AAFX+0ABV/uAAVf7wAFX/EABV/zAAVf9AAFX/UABV/3AAVf+AAFYBEABWASAAVgEwAFYBUABWCQAAVgkgAFYJQABWCWAAVgmQAFYJoABWCbAAVgnAAFYJ0ABWCfAAVgoQAFYKIABWCjAAVgpQAFYKYABWEhAAVhIwAFYSUABWEnAAVhKgAFYSsABWEsAAVhLQAFYS4ABWEwAAVhMgAFYTMABWE0AAVhNgAFYTcABWGyAAVhtAAFYbYABWG4AAVhuwAFYbwABWG9AAVhvgAFYb8ABWHBAAVhwwAFYcQABWHFAAVhxwAFYcgABWJDAAViRQAFYkcABWJJAAViTAAFYk0ABWJOAAViTwAFYlAABWJSAAViVAAFYlUABWJWAAViWAAFYlkABWLUAAVi1gAFYtgABWLaAAVi3QAFYt4ABWLfAAVi4AAFYuEABWLjAAVi5QAFYuYABWLnAAVi6QAFYuoABWMzAAVjVwAFY34ABWOiAAVjpQAFY6cABWOpAAVjqwAFY60ABWOvAAVjsAAFY7MABWPMAAVj6QAFY+sABWPtAAVj7wAFY/EABWPzAAVj9QAFY/cABWQUAAVkFwAFZBoABWQdAAVkIAAFZCMABWQmAAVkKQAFZCsABWSmAAVkqAAFZKoABWSsAAVkrwAFZLAABWSxAAVksgAFZLMABWS1AAVktwAFZLgABWS5AAVkuwAFZLwABWU3AAVlOQAFZTsABWU9AAVlQAAFZUEABWVCAAVlQwAFZUQABWVGAAVlSAAFZUkABWVKAAVlTAAFZU0ABWXIAAVlygAFZcwABWXOAAVl0QAFZdIABWXTAAVl1AAFZdUABWXXAAVl2QAFZdoABWXbAAVl3QAFZd4ABWZZAAVmWwAFZl4ABWZgAAVmYwAFZmQABWZlAAVmZgAFZmcABWZpAAVmawAFZmwABWZtAAVmbwAFZnAABWbrAAVm7QAFZu8ABWbxAAVm9AAFZvUABWb2AAVm9wAFZvgABWb6AAVm/AAFZv0ABWb+AAVnAAAFZwEABWd8AAVnfgAFZ4AABWeCAAVnhQAFZ4YABWeHAAVniAAFZ4kABWeLAAVnjQAFZ44ABWePAAVnkQAFZ5IABWgNAAVoDwAFaBIABWgUAAVoFwAFaBgABWgZAAVoGgAFaBsABWgdAAVoHwAFaCAABWghAAVoIwAFaCQABWg1AAVoOgAFaD0ABWg/AAVoeAAFaHsABWh9AAVogAAFaIMABWiGAAVoiQAFaI4ABWkJAAVpCwAFaQ0ABWkPAAVpEgAFaRMABWkUAAVpFQAFaRYABWkYAAVpGgAFaRsABWkcAAVpHgAFaR8ABWmaAAVpnAAFaZ4ABWmgAAVpowAFaaQABWmlAAVppgAFaacABWmpAAVpqwAFaawABWmtAAVprwAFabAABWorAAVqLQAFajAABWoyAAVqNQAFajYABWo3AAVqOAAFajkABWo7AAVqPQAFaj4ABWo/AAVqQQAFakIABWrVAAVq+AAFaxgABWs4AAVrOgAFazwABWs+AAVrQAAFa0MABWtEAAVrRQAFa0gABWtJAAVrSwAFa0wABWtOAAVrUQAFa1IABWtTAAVrVgAFa1cABWtcAAVrdQAFa34ABWuAAAVrggAFa4sABWuOAAVrkQAFa5MABWvcAAVsAAAFbCcABWxLAAVsTgAFbFAABWxSAAVsVAAFbFYABWxYAAVsWQAFbFwABWx1AAVslgAFbJgABWyaAAVsnAAFbJ4ABWygAAVsogAFbKQABWymAAVsxwAFbMoABWzNAAVs0AAFbNMABWzWAAVs2QAFbNwABWzfAAVs4QAFbVwABW1eAAVtYAAFbWIABW1lAAVtZgAFbWcABW1oAAVtaQAFbWsABW1tAAVtbgAFbW8ABW1xAAVtcgAFbe0ABW3vAAVt8QAFbfMABW32AAVt9wAFbfgABW35AAVt+gAFbfwABW3+AAVt/wAFbgAABW4CAAVuAwAFbn4ABW6AAAVugwAFboUABW6IAAVuiQAFbooABW6LAAVujAAFbo4ABW6QAAVukQAFbpIABW6UAAVulQAFbq4ABW6vAAVusAAFbrIABW8tAAVvLwAFbzEABW8zAAVvNgAFbzcABW84AAVvOQAFbzoABW88AAVvPgAFbz8ABW9AAAVvQgAFb0MABW++AAVvwAAFb8IABW/EAAVvxwAFb8gABW/JAAVvygAFb8sABW/NAAVvzwAFb9AABW/RAAVv0wAFb9QABXBPAAVwUQAFcFMABXBVAAVwWAAFcFkABXBaAAVwWwAFcFwABXBeAAVwYAAFcGEABXBiAAVwZAAFcGUABXDgAAVw4gAFcOQABXDmAAVw6QAFcOoABXDrAAVw7AAFcO0ABXDvAAVw8QAFcPIABXDzAAVw9QAFcPYABXFxAAVxcwAFcXUABXF3AAVxegAFcXsABXF8AAVxfQAFcX4ABXGAAAVxggAFcYMABXGEAAVxhgAFcYcABXHQAAVx9AAFchsABXI/AAVyQgAFckQABXJGAAVySAAFckoABXJMAAVyTQAFclAABXJpAAVyhgAFcogABXKKAAVyjAAFco4ABXKQAAVykgAFcpQABXKxAAVytAAFcrcABXK6AAVyvQAFcsAABXLDAAVyxgAFcsgABXNDAAVzRQAFc0cABXNJAAVzTAAFc00ABXNOAAVzTwAFc1AABXNSAAVzVAAFc1UABXNWAAVzWAAFc1kABXPUAAVz1gAFc9gABXPaAAVz3QAFc94ABXPfAAVz4AAFc+EABXPjAAVz5QAFc+YABXPnAAVz6QAFc+oABXRlAAV0ZwAFdGkABXRrAAV0bgAFdG8ABXRwAAV0cQAFdHIABXR0AAV0dgAFdHcABXR4AAV0egAFdHsABXT2AAV0+AAFdPsABXT9AAV1AAAFdQEABXUCAAV1AwAFdQQABXUGAAV1CAAFdQkABXUKAAV1DAAFdQ0ABXWIAAV1igAFdYwABXWOAAV1kQAFdZIABXWTAAV1lAAFdZUABXWXAAV1mQAFdZoABXWbAAV1nQAFdZ4ABXYZAAV2GwAFdh0ABXYfAAV2IgAFdiMABXYkAAV2JQAFdiYABXYoAAV2KgAFdisABXYsAAV2LgAFdi8ABXaqAAV2rAAFdq4ABXawAAV2swAFdrQABXa1AAV2tgAFdrcABXa5AAV2uwAFdrwABXa9AAV2vwAFdsAABXdTAAV3dgAFd5YABXe2AAV3uAAFd7oABXe8AAV3vgAFd8EABXfCAAV3wwAFd8YABXfHAAV3yQAFd8oABXfNAAV30AAFd9EABXfSAAV31QAFd9YABXfbAAV39AAFd/0ABXf/AAV4AQAFeAoABXgNAAV4EAAFeBIABXhbAAV4fwAFeKYABXjKAAV4zQAFeM8ABXjRAAV40wAFeNUABXjXAAV42AAFeNsABXj0AAV5FQAFeRcABXkZAAV5GwAFeR0ABXkfAAV5IQAFeSMABXklAAV5RgAFeUkABXlMAAV5TwAFeVIABXlVAAV5WAAFeVsABXleAAV5YAAFedsABXndAAV53wAFeeEABXnkAAV55QAFeeYABXnnAAV56AAFeeoABXnsAAV57QAFee4ABXnwAAV58QAFemwABXpuAAV6cAAFenIABXp1AAV6dgAFencABXp4AAV6eQAFensABXp9AAV6fgAFen8ABXqBAAV6ggAFev0ABXr/AAV7AgAFewQABXsHAAV7CAAFewkABXsKAAV7CwAFew0ABXsPAAV7EAAFexEABXsTAAV7FAAFey0ABXsuAAV7LwAFezEABXusAAV7rgAFe7AABXuyAAV7tQAFe7YABXu3AAV7uAAFe7kABXu7AAV7vQAFe74ABXu/AAV7wQAFe8IABXw9AAV8PwAFfEEABXxDAAV8RgAFfEcABXxIAAV8SQAFfEoABXxMAAV8TgAFfE8ABXxQAAV8UgAFfFMABXzOAAV80AAFfNIABXzUAAV81wAFfNgABXzZAAV82gAFfNsABXzdAAV83wAFfOAABXzhAAV84wAFfOQABX1fAAV9YQAFfWMABX1lAAV9aAAFfWkABX1qAAV9awAFfWwABX1uAAV9cAAFfXEABX1yAAV9dAAFfXUABX3wAAV98gAFffQABX32AAV9+QAFffoABX37AAV9/AAFff0ABX3/AAV+AQAFfgIABX4DAAV+BQAFfgYABX5PAAV+cwAFfpoABX6+AAV+wQAFfsMABX7FAAV+xwAFfskABX7LAAV+zAAFfs8ABX7oAAV/BQAFfwcABX8JAAV/CwAFfw0ABX8PAAV/EQAFfxMABX8wAAV/MwAFfzYABX85AAV/PAAFfz8ABX9CAAV/RQAFf0cABX/CAAV/xAAFf8YABX/IAAV/ywAFf8wABX/NAAV/zgAFf88ABX/RAAV/0wAFf9QABX/VAAV/1wAFf9gABYBTAAWAVQAFgFgABYBaAAWAXQAFgF4ABYBfAAWAYAAFgGEABYBjAAWAZQAFgGYABYBnAAWAaQAFgGoABYDlAAWA5wAFgOkABYDrAAWA7gAFgO8ABYDwAAWA8QAFgPIABYD0AAWA9gAFgPcABYD4AAWA+gAFgPsABYF2AAWBeAAFgXsABYF9AAWBgAAFgYEABYGCAAWBgwAFgYQABYGGAAWBiAAFgYkABYGKAAWBjAAFgY0ABYIQAAWCNAAFglgABYJ7AAWCogAFgsIABYLpAAWDEAAFgzAABYNUAAWDeAAFg3oABYN9AAWDfwAFg4EABYODAAWDhgAFg4kABYOLAAWDjQAFg5AABYOSAAWDlAAFg5cABYOaAAWDmwAFg6AABYO5AAWDvgAFg8AABYPFAAWDyAAFg8oABYQTAAWENwAFhF4ABYSCAAWEhQAFhIcABYSJAAWEiwAFhI0ABYSPAAWEkAAFhJMABYSsAAWE0QAFhNMABYTVAAWE1wAFhNkABYTbAAWE3QAFhN8ABYThAAWE4wAFhQgABYULAAWFDgAFhREABYUUAAWFFwAFhRoABYUdAAWFIAAFhSMABYUlAAWFoAAFhaIABYWlAAWFpwAFhaoABYWrAAWFrAAFha0ABYWuAAWFsAAFhbIABYWzAAWFtAAFhbYABYW3AAWFyAAFhckABYXLAAWGRgAFhkgABYZKAAWGTAAFhk8ABYZQAAWGUQAFhlIABYZTAAWGVQAFhlcABYZYAAWGWQAFhlsABYZcAAWG1wAFhtkABYbcAAWG3gAFhuEABYbiAAWG4wAFhuQABYblAAWG5wAFhukABYbqAAWG6wAFhu0ABYbuAAWG/wAFhwAABYcCAAWHfQAFh38ABYeBAAWHgwAFh4YABYeHAAWHiAAFh4kABYeKAAWHjAAFh44ABYePAAWHkAAFh5IABYeTAAWIDgAFiBAABYgTAAWIFQAFiBgABYgZAAWIGgAFiBsABYgcAAWIHgAFiCAABYghAAWIIgAFiCQABYglAAWINgAFiDcABYg5AAWItAAFiLYABYi4AAWIugAFiL0ABYi+AAWIvwAFiMAABYjBAAWIwwAFiMUABYjGAAWIxwAFiMkABYjKAAWJRQAFiUcABYlKAAWJTAAFiU8ABYlQAAWJUQAFiVIABYlTAAWJVQAFiVcABYlYAAWJWQAFiVsABYlcAAWJdQAFiXYABYl3AAWJeQAFifQABYn2AAWJ+AAFifoABYn9AAWJ/gAFif8ABYoAAAWKAQAFigMABYoFAAWKBgAFigcABYoJAAWKCgAFioUABYqHAAWKigAFiowABYqPAAWKkAAFipEABYqSAAWKkwAFipUABYqXAAWKmAAFipkABYqbAAWKnAAFitUABYruAAWK9wAFivoABYr9AAWLBgAFiwkABYsMAAWLDgAFizEABYtKAAWL3QAFjAAABYwgAAWMQAAFjEIABYxEAAWMRgAFjEgABYxLAAWMTAAFjE0ABYxQAAWMUQAFjFMABYxUAAWMVwAFjFoABYxbAAWMXAAFjF8ABYxgAAWMZQAFjH4ABYyHAAWMiQAFjIsABYyUAAWMlwAFjJoABYycAAWM5QAFjQkABY0wAAWNVAAFjVcABY1ZAAWNWwAFjV0ABY1fAAWNYQAFjWIABY1lAAWNfgAFjZ8ABY2hAAWNowAFjaUABY2nAAWNqQAFjasABY2tAAWNrwAFjdAABY3TAAWN1gAFjdkABY3cAAWN3wAFjeIABY3lAAWN6AAFjeoABY5lAAWOZwAFjmkABY5rAAWObgAFjm8ABY5wAAWOcQAFjnIABY50AAWOdgAFjncABY54AAWOegAFjnsABY72AAWO+AAFjvoABY78AAWO/wAFjwAABY8BAAWPAgAFjwMABY8FAAWPBwAFjwgABY8JAAWPCwAFjwwABY+HAAWPiQAFj4wABY+OAAWPkQAFj5IABY+TAAWPlAAFj5UABY+XAAWPmQAFj5oABY+bAAWPnQAFj54ABY+3AAWPuAAFj7kABY+7AAWQNgAFkDgABZA6AAWQPAAFkD8ABZBAAAWQQQAFkEIABZBDAAWQRQAFkEcABZBIAAWQSQAFkEsABZBMAAWQxwAFkMkABZDLAAWQzQAFkNAABZDRAAWQ0gAFkNMABZDUAAWQ1gAFkNgABZDZAAWQ2gAFkNwABZDdAAWRWAAFkVoABZFcAAWRXgAFkWEABZFiAAWRYwAFkWQABZFlAAWRZwAFkWkABZFqAAWRawAFkW0ABZFuAAWR6QAFkesABZHtAAWR7wAFkfIABZHzAAWR9AAFkfUABZH2AAWR+AAFkfoABZH7AAWR/AAFkf4ABZH/AAWSegAFknwABZJ+AAWSgAAFkoMABZKEAAWShQAFkoYABZKHAAWSiQAFkosABZKMAAWSjQAFko8ABZKQAAWS2QAFkv0ABZMkAAWTSAAFk0sABZNNAAWTTwAFk1EABZNTAAWTVQAFk1YABZNZAAWTcgAFk48ABZORAAWTkwAFk5UABZOXAAWTmQAFk5sABZOdAAWTugAFk70ABZPAAAWTwwAFk8YABZPJAAWTzAAFk88ABZPRAAWUTAAFlE4ABZRQAAWUUgAFlFUABZRWAAWUVwAFlFgABZRZAAWUWwAFlF0ABZReAAWUXwAFlGEABZRiAAWU3QAFlN8ABZThAAWU4wAFlOYABZTnAAWU6AAFlOkABZTqAAWU7AAFlO4ABZTvAAWU8AAFlPIABZTzAAWVbgAFlXAABZVyAAWVdAAFlXcABZV4AAWVeQAFlXoABZV7AAWVfQAFlX8ABZWAAAWVgQAFlYMABZWEAAWV/wAFlgEABZYEAAWWBgAFlgkABZYKAAWWCwAFlgwABZYNAAWWDwAFlhEABZYSAAWWEwAFlhUABZYWAAWWkQAFlpMABZaVAAWWlwAFlpoABZabAAWWnAAFlp0ABZaeAAWWoAAFlqIABZajAAWWpAAFlqYABZanAAWXIgAFlyQABZcmAAWXKAAFlysABZcsAAWXLQAFly4ABZcvAAWXMQAFlzMABZc0AAWXNQAFlzcABZc4AAWXswAFl7UABZe4AAWXugAFl70ABZe+AAWXvwAFl8AABZfBAAWXwwAFl8UABZfGAAWXxwAFl8kABZfKAAWYXQAFmIAABZigAAWYwAAFmMIABZjEAAWYxgAFmMgABZjLAAWYzAAFmM0ABZjQAAWY0QAFmNMABZjUAAWY1gAFmNkABZjaAAWY2wAFmN4ABZjfAAWY5AAFmP0ABZkGAAWZCAAFmQoABZkTAAWZFgAFmRkABZkbAAWZZAAFmYgABZmvAAWZ0wAFmdYABZnYAAWZ2gAFmdwABZneAAWZ4AAFmeEABZnkAAWZ/QAFmh4ABZogAAWaIgAFmiQABZomAAWaKAAFmioABZosAAWaLgAFmk8ABZpSAAWaVQAFmlgABZpbAAWaXgAFmmEABZpkAAWaZwAFmmkABZrkAAWa5gAFmugABZrqAAWa7QAFmu4ABZrvAAWa8AAFmvEABZrzAAWa9QAFmvYABZr3AAWa+QAFmvoABZt1AAWbdwAFm3kABZt7AAWbfgAFm38ABZuAAAWbgQAFm4IABZuEAAWbhgAFm4cABZuIAAWbigAFm4sABZwGAAWcCAAFnAsABZwNAAWcEAAFnBEABZwSAAWcEwAFnBQABZwWAAWcGAAFnBkABZwaAAWcHAAFnB0ABZw2AAWcNwAFnDgABZw6AAWctQAFnLcABZy5AAWcuwAFnL4ABZy/AAWcwAAFnMEABZzCAAWcxAAFnMYABZzHAAWcyAAFnMoABZzLAAWdRgAFnUgABZ1KAAWdTAAFnU8ABZ1QAAWdUQAFnVIABZ1TAAWdVQAFnVcABZ1YAAWdWQAFnVsABZ1cAAWd1wAFndkABZ3bAAWd3QAFneAABZ3hAAWd4gAFneMABZ3kAAWd5gAFnegABZ3pAAWd6gAFnewABZ3tAAWeaAAFnmoABZ5sAAWebgAFnnEABZ5yAAWecwAFnnQABZ51AAWedwAFnnkABZ56AAWeewAFnn0ABZ5+AAWe+QAFnvsABZ79AAWe/wAFnwIABZ8DAAWfBAAFnwUABZ8GAAWfCAAFnwoABZ8LAAWfDAAFnw4ABZ8PAAWfWAAFn3wABZ+jAAWfxwAFn8oABZ/MAAWfzgAFn9AABZ/SAAWf1AAFn9UABZ/YAAWf8QAFoA4ABaAQAAWgEgAFoBQABaAWAAWgGAAFoBoABaAcAAWgOQAFoDwABaA/AAWgQgAFoEUABaBIAAWgSwAFoE4ABaBQAAWgywAFoM0ABaDPAAWg0QAFoNQABaDVAAWg1gAFoNcABaDYAAWg2gAFoNwABaDdAAWg3gAFoOAABaDhAAWhXAAFoV4ABaFgAAWhYgAFoWUABaFmAAWhZwAFoWgABaFpAAWhawAFoW0ABaFuAAWhbwAFoXEABaFyAAWh7QAFoe8ABaHxAAWh8wAFofYABaH3AAWh+AAFofkABaH6AAWh/AAFof4ABaH/AAWiAAAFogIABaIDAAWifgAFooAABaKCAAWihAAFoocABaKIAAWiiQAFoooABaKLAAWijQAFoo8ABaKQAAWikQAFopMABaKUAAWjDwAFoxEABaMTAAWjFQAFoxgABaMZAAWjGgAFoxsABaMcAAWjHgAFoyAABaMhAAWjIgAFoyQABaMlAAWjoAAFo6IABaOkAAWjpgAFo6kABaOqAAWjqwAFo6wABaOtAAWjrwAFo7EABaOyAAWjswAFo7UABaO2AAWkMQAFpDMABaQ1AAWkNwAFpDoABaQ7AAWkPAAFpD0ABaQ+AAWkQAAFpEIABaRDAAWkRAAFpEYABaRHAAWkWAAFpF0ABaRgAAWkYgAFpJsABaSeAAWkoAAFpKMABaSmAAWkqQAFpKwABaSxAAWlLAAFpS4ABaUwAAWlMgAFpTUABaU2AAWlNwAFpTgABaU5AAWlOwAFpT0ABaU+AAWlPwAFpUEABaVCAAWlvQAFpb8ABaXBAAWlwwAFpcYABaXHAAWlyAAFpckABaXKAAWlzAAFpc4ABaXPAAWl0AAFpdIABaXTAAWmTgAFplAABaZTAAWmVQAFplgABaZZAAWmWgAFplsABaZcAAWmXgAFpmAABaZhAAWmYgAFpmQABaZlAAWm+AAFpxsABac7AAWnWwAFp10ABadfAAWnYQAFp2MABadmAAWnZwAFp2gABadrAAWnbAAFp24ABadvAAWncgAFp3UABad2AAWndwAFp3oABad7AAWngAAFp5kABaeiAAWnpAAFp6YABaevAAWnsgAFp7UABae3AAWoAAAFqCQABahLAAWobwAFqHIABah0AAWodgAFqHgABah6AAWofAAFqH0ABaiAAAWomQAFqLoABai8AAWovgAFqMAABajCAAWoxAAFqMYABajIAAWoygAFqOsABajuAAWo8QAFqPQABaj3AAWo+gAFqP0ABakAAAWpAwAFqQUABamAAAWpggAFqYQABamGAAWpiQAFqYoABamLAAWpjAAFqY0ABamPAAWpkQAFqZIABamTAAWplQAFqZYABaoRAAWqEwAFqhUABaoXAAWqGgAFqhsABaocAAWqHQAFqh4ABaogAAWqIgAFqiMABaokAAWqJgAFqicABaqiAAWqpAAFqqcABaqpAAWqrAAFqq0ABaquAAWqrwAFqrAABaqyAAWqtAAFqrUABaq2AAWquAAFqrkABarSAAWq0wAFqtQABarWAAWrUQAFq1MABatVAAWrVwAFq1oABatbAAWrXAAFq10ABateAAWrYAAFq2IABatjAAWrZAAFq2YABatnAAWr4gAFq+QABavmAAWr6AAFq+sABavsAAWr7QAFq+4ABavvAAWr8QAFq/MABav0AAWr9QAFq/cABav4AAWscwAFrHUABax3AAWseQAFrHwABax9AAWsfgAFrH8ABayAAAWsggAFrIQABayFAAWshgAFrIgABayJAAWtBAAFrQYABa0IAAWtCgAFrQ0ABa0OAAWtDwAFrRAABa0RAAWtEwAFrRUABa0WAAWtFwAFrRkABa0aAAWtlQAFrZcABa2ZAAWtmwAFrZ4ABa2fAAWtoAAFraEABa2iAAWtpAAFraYABa2nAAWtqAAFraoABa2rAAWt9AAFrhgABa4/AAWuYwAFrmYABa5oAAWuagAFrmwABa5uAAWucAAFrnEABa50AAWujQAFrqoABa6sAAWurgAFrrAABa6yAAWutAAFrrYABa64AAWu1QAFrtgABa7bAAWu3gAFruEABa7kAAWu5wAFruoABa7sAAWvZwAFr2kABa9rAAWvbQAFr3AABa9xAAWvcgAFr3MABa90AAWvdgAFr3gABa95AAWvegAFr3wABa99AAWv+AAFr/oABa/9AAWv/wAFsAIABbADAAWwBAAFsAUABbAGAAWwCAAFsAoABbALAAWwDAAFsA4ABbAPAAWwigAFsIwABbCOAAWwkAAFsJMABbCUAAWwlQAFsJYABbCXAAWwmQAFsJsABbCcAAWwnQAFsJ8ABbCgAAWxGwAFsR0ABbEgAAWxIgAFsSUABbEmAAWxJwAFsSgABbEpAAWxKwAFsS0ABbEuAAWxLwAFsTEABbEyAAWxrQAFsa8ABbGxAAWxswAFsbYABbG3AAWxuAAFsbkABbG6AAWxvAAFsb4ABbG/AAWxwAAFscIABbHDAAWyPgAFskAABbJCAAWyRAAFskcABbJIAAWySQAFskoABbJLAAWyTQAFsk8ABbJQAAWyUQAFslMABbJUAAWyzwAFstEABbLUAAWy1gAFstkABbLaAAWy2wAFstwABbLdAAWy3wAFsuEABbLiAAWy4wAFsuUABbLmAAWzeQAFs5wABbO8AAWz3AAFs94ABbPgAAWz4gAFs+QABbPnAAWz6AAFs+kABbPsAAWz7QAFs+8ABbPwAAWz8gAFs/UABbP2AAWz9wAFs/oABbP7AAW0BAAFtB0ABbQmAAW0KAAFtCoABbQzAAW0NgAFtDkABbQ7AAW0hAAFtKgABbTPAAW08wAFtPYABbT4AAW0+gAFtPwABbT+AAW1AAAFtQEABbUEAAW1HQAFtT4ABbVAAAW1QgAFtUQABbVGAAW1SAAFtUoABbVMAAW1TgAFtW8ABbVyAAW1dQAFtXgABbV7AAW1fgAFtYEABbWEAAW1hwAFtYkABbYEAAW2BgAFtggABbYKAAW2DQAFtg4ABbYPAAW2EAAFthEABbYTAAW2FQAFthYABbYXAAW2GQAFthoABbaVAAW2lwAFtpkABbabAAW2ngAFtp8ABbagAAW2oQAFtqIABbakAAW2pgAFtqcABbaoAAW2qgAFtqsABbcmAAW3KAAFtysABbctAAW3MAAFtzEABbcyAAW3MwAFtzQABbc2AAW3OAAFtzkABbc6AAW3PAAFtz0ABbdWAAW3VwAFt1gABbdaAAW31QAFt9cABbfZAAW32wAFt94ABbffAAW34AAFt+EABbfiAAW35AAFt+YABbfnAAW36AAFt+oABbfrAAW4ZgAFuGgABbhqAAW4bAAFuG8ABbhwAAW4cQAFuHIABbhzAAW4dQAFuHcABbh4AAW4eQAFuHsABbh8AAW49wAFuPkABbj7AAW4/QAFuQAABbkBAAW5AgAFuQMABbkEAAW5BgAFuQgABbkJAAW5CgAFuQwABbkNAAW5iAAFuYoABbmMAAW5jgAFuZEABbmSAAW5kwAFuZQABbmVAAW5lwAFuZkABbmaAAW5mwAFuZ0ABbmeAAW6GQAFuhsABbodAAW6HwAFuiIABbojAAW6JAAFuiUABbomAAW6KAAFuioABborAAW6LAAFui4ABbovAAW6eAAFupwABbrDAAW65wAFuuoABbrsAAW67gAFuvAABbryAAW69AAFuvUABbr4AAW7EQAFuy4ABbswAAW7MgAFuzQABbs2AAW7OAAFuzoABbs8AAW7WQAFu1wABbtfAAW7YgAFu2UABbtoAAW7awAFu24ABbtwAAW76wAFu+0ABbvvAAW78QAFu/QABbv1AAW79gAFu/cABbv4AAW7+gAFu/wABbv9AAW7/gAFvAAABbwBAAW8fAAFvH4ABbyAAAW8ggAFvIUABbyGAAW8hwAFvIgABbyJAAW8iwAFvI0ABbyOAAW8jwAFvJEABbySAAW9DQAFvQ8ABb0RAAW9EwAFvRYABb0XAAW9GAAFvRkABb0aAAW9HAAFvR4ABb0fAAW9IAAFvSIABb0jAAW9ngAFvaAABb2jAAW9pQAFvagABb2pAAW9qgAFvasABb2sAAW9rgAFvbAABb2xAAW9sgAFvbQABb21AAW+MAAFvjIABb40AAW+NgAFvjkABb46AAW+OwAFvjwABb49AAW+PwAFvkEABb5CAAW+QwAFvkUABb5GAAW+wQAFvsMABb7FAAW+xwAFvsoABb7LAAW+zAAFvs0ABb7OAAW+0AAFvtIABb7TAAW+1AAFvtYABb7XAAW/UgAFv1QABb9WAAW/WAAFv1sABb9cAAW/XQAFv14ABb9fAAW/YQAFv2MABb9kAAW/ZQAFv2cABb9oAAW/+wAFwB4ABcA+AAXAXgAFwGAABcBiAAXAZAAFwGYABcBpAAXAagAFwGsABcBuAAXAbwAFwHEABcByAAXAdQAFwHgABcB5AAXAegAFwH0ABcB+AAXAgwAFwJwABcClAAXApwAFwKkABcCyAAXAtQAFwLgABcC6AAXBAwAFwScABcFOAAXBcgAFwXUABcF3AAXBeQAFwXsABcF9AAXBfwAFwYAABcGDAAXBnAAFwb0ABcG/AAXBwQAFwcMABcHFAAXBxwAFwckABcHLAAXBzQAFwe4ABcHxAAXB9AAFwfcABcH6AAXB/QAFwgAABcIDAAXCBgAFwggABcKDAAXChQAFwocABcKJAAXCjAAFwo0ABcKOAAXCjwAFwpAABcKSAAXClAAFwpUABcKWAAXCmAAFwpkABcMUAAXDFgAFwxgABcMaAAXDHQAFwx4ABcMfAAXDIAAFwyEABcMjAAXDJQAFwyYABcMnAAXDKQAFwyoABcOlAAXDpwAFw6oABcOsAAXDrwAFw7AABcOxAAXDsgAFw7MABcO1AAXDtwAFw7gABcO5AAXDuwAFw7wABcPVAAXD1gAFw9cABcPZAAXEVAAFxFYABcRYAAXEWgAFxF0ABcReAAXEXwAFxGAABcRhAAXEYwAFxGUABcRmAAXEZwAFxGkABcRqAAXE5QAFxOcABcTpAAXE6wAFxO4ABcTvAAXE8AAFxPEABcTyAAXE9AAFxPYABcT3AAXE+AAFxPoABcT7AAXFdgAFxXgABcV6AAXFfAAFxX8ABcWAAAXFgQAFxYIABcWDAAXFhQAFxYcABcWIAAXFiQAFxYsABcWMAAXGBwAFxgkABcYLAAXGDQAFxhAABcYRAAXGEgAFxhMABcYUAAXGFgAFxhgABcYZAAXGGgAFxhwABcYdAAXGmAAFxpoABcacAAXGngAFxqEABcaiAAXGowAFxqQABcalAAXGpwAFxqkABcaqAAXGqwAFxq0ABcauAAXG9wAFxxsABcdCAAXHZgAFx2kABcdrAAXHbQAFx28ABcdxAAXHcwAFx3QABcd3AAXHkAAFx60ABcevAAXHsQAFx7MABce1AAXHtwAFx7kABce7AAXH2AAFx9sABcfeAAXH4QAFx+QABcfnAAXH6gAFx+0ABcfvAAXIagAFyGwABchuAAXIcAAFyHMABch0AAXIdQAFyHYABch3AAXIeQAFyHsABch8AAXIfQAFyH8ABciAAAXI+wAFyP0ABckAAAXJAgAFyQUABckGAAXJBwAFyQgABckJAAXJCwAFyQ0ABckOAAXJDwAFyREABckSAAXJjQAFyY8ABcmRAAXJkwAFyZYABcmXAAXJmAAFyZkABcmaAAXJnAAFyZ4ABcmfAAXJoAAFyaIABcmjAAXKHgAFyiAABcojAAXKJQAFyigABcopAAXKKgAFyisABcosAAXKLgAFyjAABcoxAAXKMgAFyjQABco1AAXKuAAFytwABcsAAAXLIwAFy0oABctqAAXLkQAFy7gABcvYAAXL/AAFzCAABcwiAAXMJQAFzCcABcwpAAXMKwAFzC4ABcwxAAXMMwAFzDUABcw4AAXMOgAFzDwABcw/AAXMQgAFzEMABcxIAAXMYQAFzGYABcxoAAXMbQAFzHAABcxyAAXMuwAFzN8ABc0GAAXNKgAFzS0ABc0vAAXNMQAFzTMABc01AAXNNwAFzTgABc07AAXNVAAFzXkABc17AAXNfQAFzX8ABc2BAAXNgwAFzYUABc2HAAXNiQAFzYsABc2wAAXNswAFzbYABc25AAXNvAAFzb8ABc3CAAXNxQAFzcgABc3LAAXNzQAFzkgABc5KAAXOTQAFzk8ABc5SAAXOUwAFzlQABc5VAAXOVgAFzlgABc5aAAXOWwAFzlwABc5eAAXOXwAFznAABc5xAAXOcwAFzu4ABc7wAAXO8gAFzvQABc73AAXO+AAFzvkABc76AAXO+wAFzv0ABc7/AAXPAAAFzwEABc8DAAXPBAAFz38ABc+BAAXPhAAFz4YABc+JAAXPigAFz4sABc+MAAXPjQAFz48ABc+RAAXPkgAFz5MABc+VAAXPlgAFz6cABc+oAAXPqgAF0CUABdAnAAXQKQAF0CsABdAuAAXQLwAF0DAABdAxAAXQMgAF0DQABdA2AAXQNwAF0DgABdA6AAXQOwAF0LYABdC4AAXQuwAF0L0ABdDAAAXQwQAF0MIABdDDAAXQxAAF0MYABdDIAAXQyQAF0MoABdDMAAXQzQAF0N4ABdDfAAXQ4QAF0VwABdFeAAXRYAAF0WIABdFlAAXRZgAF0WcABdFoAAXRaQAF0WsABdFtAAXRbgAF0W8ABdFxAAXRcgAF0e0ABdHvAAXR8gAF0fQABdH3AAXR+AAF0fkABdH6AAXR+wAF0f0ABdH/AAXSAAAF0gEABdIDAAXSBAAF0h0ABdIeAAXSHwAF0iEABdKcAAXSngAF0qAABdKiAAXSpQAF0qYABdKnAAXSqAAF0qkABdKrAAXSrQAF0q4ABdKvAAXSsQAF0rIABdMtAAXTLwAF0zIABdM0AAXTNwAF0zgABdM5AAXTOgAF0zs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ABeVCAAXlRAAF5UYABeVHAAXlSAAF5UoABeVLAAXlxgAF5cgABeXLAAXlzQAF5dAABeXRAAXl0gAF5dMABeXUAAXl1gAF5dgABeXZAAXl2gAF5dwABeXdAAXl9gAF5fcABeX4AAXl+gAF5nUABeZ3AAXmeQAF5nsABeZ+AAXmfwAF5oAABeaBAAXmggAF5oQABeaGAAXmhwAF5ogABeaKAAXmiwAF5wYABecIAAXnCgAF5wwABecPAAXnEAAF5xEABecSAAXnEwAF5xUABecXAAXnGAAF5xkABecbAAXnHAAF55cABeeZAAXnmwAF550ABeegAAXnoQAF56IABeejAAXnpAAF56YABeeoAAXnqQAF56oABeesAAXnrQAF6CgABegqAAXoLAAF6C4ABegxAAXoMgAF6DMABeg0AAXoNQAF6DcABeg5AAXoOgAF6DsABeg9AAXoPgAF6LkABei7AAXovQAF6L8ABejCAAXowwAF6MQABejFAAXoxgAF6MgABejKAAXoywAF6MwABejOAAXozwAF6RgABek8AAXpYwAF6YcABemKAAXpjAAF6Y4ABemQAAXpkgAF6ZQABemVAAXpmAAF6bEABenOAAXp0AAF6dIABenUAAXp1gAF6dgABenaAAXp3AAF6fkABen8AAXp/wAF6gIABeoFAAXqCAAF6gsABeoOAAXqEAAF6osABeqNAAXqjwAF6pEABeqUAAXqlQAF6pYABeqXAAXqmAAF6poABeqcAAXqnQAF6p4ABeqgAAXqoQAF6xwABeseAAXrIQAF6yMABesmAAXrJwAF6ygABespAAXrKgAF6ywABesuAAXrLwAF6zAABesyAAXrMwAF664ABeuwAAXrsgAF67QABeu3AAXruAAF67kABeu6AAXruwAF670ABeu/AAXrwAAF68EABevDAAXrxAAF7D8ABexBAAXsRAAF7EYABexJAAXsSgAF7EsABexMAAXsTQAF7E8ABexRAAXsUgAF7FMABexVAAXsVgAF7NkABez9AAXtIQAF7UQABe1rAAXtiwAF7bIABe3ZAAXt+QAF7h0ABe5BAAXuQwAF7kYABe5IAAXuSgAF7kwABe5PAAXuUgAF7lQABe5WAAXuWQAF7lsABe5dAAXuYAAF7mMABe5kAAXuaQAF7oIABe6HAAXuiQAF7o4ABe6RAAXukwAF7tw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ABgAWAAYAFwAGABkABgAaAAYAlQAGAJcABgCaAAYAnAAGAJ8ABgCgAAYAoQAGAKIABgCjAAYApQAGAKcABgCoAAYAqQAGAKsABgCsAAYBJwAGASkABgErAAYBLQAGATAABgExAAYBMgAGATMABgE0AAYBNgAGATgABgE5AAYBOgAGATwABgE9AAYBuAAGAboABgG8AAYBvgAGAcEABgHCAAYBwwAGAcQABgHFAAYBxwAGAckABgHKAAYBywAGAc0ABgHOAAYCSQAGAksABgJNAAYCTwAGAlIABgJTAAYCVAAGAlUABgJWAAYCWAAGAloABgJbAAYCXAAGAl4ABgJfAAYC8gAGAxUABgM1AAYDVQAGA1cABgNZAAYDWwAGA10ABgNgAAYDYQAGA2IABgNlAAYDZgAGA2gABgNpAAYDawAGA24ABgNvAAYDcAAGA3MABgN0AAYDeQAGA5IABgObAAYDnQAGA58ABgOoAAYDqwAGA64ABgOwAAYD+QAGBB0ABgREAAYEaAAGBGsABgRtAAYEbwAGBHEABgRzAAYEdQAGBHYABgR5AAYEkgAGBLMABgS1AAYEtwAGBLkABgS7AAYEvQAGBL8ABgTBAAYEwwAGBOQABgTnAAYE6gAGBO0ABgTwAAYE8wAGBPYABgT5AAYE/AAGBP4ABgV5AAYFewAGBX0ABgV/AAYFggAGBYMABgWEAAYFhQAGBYYABgWIAAYFigAGBYsABgWMAAYFjgAGBY8ABgYKAAYGDAAGBg4ABgYQAAYGEwAGBhQABgYVAAYGFgAGBhcABgYZAAYGGwAGBhwABgYdAAYGHwAGBiAABgabAAYGnQAGBqAABgaiAAYGpQAGBqYABganAAYGqAAGBqkABgarAAYGrQAGBq4ABgavAAYGsQAGBrIABgbLAAYGzAAGBs0ABgbPAAYHSgAGB0wABgdOAAYHUAAGB1MABgdUAAYHVQAGB1YABgdXAAYHWQAGB1sABgdcAAYHXQAGB18ABgdgAAYH2wAGB90ABgffAAYH4QAGB+QABgflAAYH5gAGB+cABgfoAAYH6gAGB+wABgftAAYH7gAGB/AABgfxAAYIbAAGCG4ABghwAAYIcgAGCHUABgh2AAYIdwAGCHgABgh5AAYIewAGCH0ABgh+AAYIfwAGCIEABgiCAAYI/QAGCP8ABgkBAAYJAwAGCQY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ABjR2AAY08QAGNPMABjT1AAY09wAGNPoABjT7AAY0/AAGNP0ABjT+AAY1AAAGNQIABjUDAAY1BAAGNQYABjUHAAY1ggAGNYQABjWGAAY1iAAGNYsABjWMAAY1jQAGNY4ABjWPAAY1kQAGNZMABjWUAAY1lQAGNZcABjWYAAY2EwAGNhUABjYXAAY2GQAGNhwABjYdAAY2HgAGNh8ABjYgAAY2IgAGNiQABjYlAAY2JgAGNigABjYpAAY2vAAGNt8ABjb/AAY3HwAGNyEABjcjAAY3JQAGNycABjcqAAY3KwAGNywABjcvAAY3MAAGNzIABjczAAY3NQAGNzgABjc5AAY3OgAGNz0ABjc+AAY3RwAGN2AABjdpAAY3awAGN20ABjd2AAY3eQAGN3wABjd+AAY3xwAGN+sABjgSAAY4NgAGODkABjg7AAY4PQAGOD8ABjhBAAY4QwAGOEQABjhHAAY4YAAGOIEABjiDAAY4hQAGOIcABjiJAAY4iwAGOI0ABjiPAAY4kQAGOLIABji1AAY4uAAGOLsABji+AAY4wQAGOMQABjjHAAY4ygAGOMwABjlHAAY5SQAGOUsABjlNAAY5UAAGOVEABjlSAAY5UwAGOVQABjlWAAY5WAAGOVkABjlaAAY5XAAGOV0ABjnYAAY52gAGOdwABjneAAY54QAGOeIABjnjAAY55AAGOeUABjnnAAY56QAGOeoABjnrAAY57QAGOe4ABjppAAY6awAGOm4ABjpwAAY6cwAGOnQABjp1AAY6dgAGOncABjp5AAY6ewAGOnwABjp9AAY6fwAGOoAABjqZAAY6mgAGOpsABjqdAAY7GAAGOxoABjscAAY7HgAGOyEABjsiAAY7IwAGOyQABjslAAY7JwAGOykABjsqAAY7KwAGOy0ABjsuAAY7qQAGO6sABjutAAY7rwAGO7IABjuzAAY7tAAGO7UABju2AAY7uAAGO7oABju7AAY7vAAGO74ABju/AAY8OgAGPDwABjw+AAY8QAAGPEMABjxEAAY8RQAGPEYABjxHAAY8SQAGPEsABjxMAAY8TQAGPE8ABjxQAAY8ywAGPM0ABjzPAAY80QAGPNQABjzVAAY81gAGPNcABjzYAAY82gAGPNwABjzdAAY83gAGPOAABjzhAAY9XAAGPV4ABj1gAAY9YgAGPWUABj1mAAY9ZwAGPWgABj1pAAY9awAGPW0ABj1uAAY9bwAGPXEABj1yAAY9uwAGPd8ABj4GAAY+KgAGPi0ABj4vAAY+MQAGPjMABj41AAY+NwAGPjgABj47AAY+VAAGPnEABj5zAAY+dQAGPncABj55AAY+ewAGPn0ABj5/AAY+nAAGPp8ABj6iAAY+pQAGPqgABj6rAAY+rgAGPrEABj6zAAY/LgAGPzAABj8yAAY/NAAGPzcABj84AAY/OQAGPzoABj87AAY/PQAGPz8ABj9AAAY/QQAGP0MABj9EAAY/vwAGP8EABj/DAAY/xQAGP8gABj/JAAY/ygAGP8sABj/MAAY/zgAGP9AABj/RAAY/0gAGP9QABj/VAAZAUAAGQFIABkBUAAZAVgAGQFkABkBaAAZAWwAGQFwABkBdAAZAXwAGQGEABkBiAAZAYwAGQGUABkBmAAZA4QAGQOMABkDlAAZA5wAGQOoABkDrAAZA7AAGQO0ABkDuAAZA8AAGQPIABkDzAAZA9AAGQPYABkD3AAZBcgAGQXQABkF2AAZBeAAGQXsABkF8AAZBfQAGQX4ABkF/AAZBgQAGQYMABkGEAAZBhQAGQYcABkGIAAZCAwAGQgUABkIHAAZCCQAGQgwABkINAAZCDgAGQg8ABkIQAAZCEgAGQhQABkIVAAZCFgAGQhgABkIZAAZClAAGQpYABkKYAAZCmgAGQp0ABkKeAAZCnwAGQqAABkKhAAZCowAGQqUABkKmAAZCpwAGQqkABkKqAAZDPQAGQ2AABkOAAAZDoAAGQ6IABkOkAAZDpgAGQ6gABkOrAAZDrAAGQ60ABkOwAAZDsQAGQ7MABkO0AAZDtgAGQ7kABkO6AAZDuwAGQ74ABkO/AAZDxAAGQ90ABkPmAAZD6AAGQ+oABkPzAAZD9gAGQ/kABkP7AAZERAAGRGgABkSPAAZEswAGRLYABkS4AAZEugAGRLwABkS+AAZEwAAGRMEABkTEAAZE3QAGRP4ABkUAAAZFAgAGRQQABkUGAAZFCAAGRQoABkUMAAZFDgAGRS8ABkUyAAZFNQAGRTgABkU7AAZFPgAGRUEABkVEAAZFRwAGRUkABkXEAAZFxgAGRcgABkXKAAZFzQAGRc4ABkXPAAZF0AAGRdEABkXTAAZF1QAGRdYABkXXAAZF2QAGRdoABkZVAAZGVwAGRlkABkZbAAZGXgAGRl8ABkZgAAZGYQAGRmIABkZkAAZGZgAGRmcABkZoAAZGagAGRmsABkbmAAZG6AAGRusABkbtAAZG8AAGRvEABkbyAAZG8wAGRvQABkb2AAZG+AAGRvkABkb6AAZG/AAGRv0ABkcWAAZHFwAGRxgABkcaAAZHlQAGR5cABkeZAAZHmwAGR54ABkefAAZHoAAGR6EABkeiAAZHpAAGR6YABkenAAZHqAAGR6oABkerAAZIJgAGSCgABkgqAAZILAAGSC8ABkgwAAZIMQAGSDIABkgzAAZINQAGSDcABkg4AAZIOQAGSDsABkg8AAZItwAGSLkABki7AAZIvQAGSMAABkjBAAZIwgAGSMMABkjEAAZIxgAGSMgABkjJAAZIygAGSMwABkjNAAZJSAAGSUoABklMAAZJTgAGSVEABklSAAZJUwAGSVQABklVAAZJVwAGSVkABklaAAZJWwAGSV0ABkleAAZJ2QAGSdsABkndAAZJ3wAGSeIABknjAAZJ5AAGSeUABknmAAZJ6AAGSeoABknrAAZJ7AAGSe4ABknvAAZKOAAGSlwABkqDAAZKpwAGSqoABkqsAAZKrgAGSrAABkqyAAZKtAAGSrUABkq4AAZK0QAGSu4ABkrwAAZK8gAGSvQABkr2AAZK+AAGSvoABkr8AAZLGQAGSxwABksfAAZLIgAGSyUABksoAAZLKwAGSy4ABkswAAZLqwAGS60ABkuvAAZLsQAGS7QABku1AAZLtgAGS7cABku4AAZLugAGS7wABku9AAZLvgAGS8AABkvBAAZMPAAGTD4ABkxAAAZMQgAGTEUABkxGAAZMRwAGTEgABkxJAAZMSwAGTE0ABkxOAAZMTwAGTFEABkxSAAZMzQAGTM8ABkzRAAZM0wAGTNYABkzXAAZM2AAGTNkABkzaAAZM3AAGTN4ABkzfAAZM4AAGTOIABkzjAAZNXgAGTWAABk1jAAZNZQAGTWgABk1pAAZNagAGTWsABk1sAAZNbgAGTXAABk1xAAZNcgAGTXQABk11AAZN8AAGTfIABk30AAZN9gAGTfkABk36AAZN+wAGTfwABk39AAZN/wAGTgEABk4CAAZOAwAGTgUABk4GAAZOgQAGToMABk6FAAZOhwAGTooABk6LAAZOjAAGTo0ABk6OAAZOkAAGTpIABk6TAAZOlAAGTpYABk6XAAZPEgAGTxQABk8WAAZPGAAGTxsABk8cAAZPHQAGTx4ABk8fAAZPIQAGTyMABk8kAAZPJQAGTycABk8oAAZPuwAGT94ABk/+AAZQHgAGUCAABlAiAAZQJAAGUCYABlApAAZQKgAGUCsABlAuAAZQLwAGUDEABlAyAAZQNAAGUDcABlA4AAZQOQAGUDwABlA9AAZQRgAGUF8ABlBoAAZQagAGUGwABlB1AAZQeAAGUHsABlB9AAZQxgAGUOoABlERAAZRNQAGUTgABlE6AAZRPAAGUT4ABlFAAAZRQgAGUUMABlFGAAZRXwAGUYAABlGCAAZRhAAGUYYABlGIAAZRigAGUYwABlGOAAZRkAAGUbEABlG0AAZRtwAGUboABlG9AAZRwAAGUcMABlHGAAZRyQAGUcsABlJGAAZSSAAGUkoABlJMAAZSTwAGUlAABlJRAAZSUgAGUlMABlJVAAZSVwAGUlgABlJZAAZSWwAGUlwABlLXAAZS2QAGUtsABlLdAAZS4AAGUuEABlLiAAZS4wAGUuQABlLmAAZS6AAGUukABlLqAAZS7AAGUu0ABlNoAAZTagAGU20ABlNvAAZTcgAGU3MABlN0AAZTdQAGU3YABlN4AAZTegAGU3sABlN8AAZTfgAGU38ABlOYAAZTmQAGU5oABlOcAAZUFwAGVBkABlQbAAZUHQAGVCAABlQhAAZUIgAGVCMABlQkAAZUJgAGVCgABlQpAAZUKgAGVCwABlQtAAZUqAAGVKoABlSsAAZUrgAGVLEABlSyAAZUswAGVLQABlS1AAZUtwAGVLkABlS6AAZUuwAGVL0ABlS+AAZVOQAGVTsABlU9AAZVPwAGVUIABlVDAAZVRAAGVUUABlVGAAZVSAAGVUoABlVLAAZVTAAGVU4ABlVPAAZVygAGVcwABlXOAAZV0AAGVdMABlXUAAZV1QAGVdYABlXXAAZV2QAGVdsABlXcAAZV3QAGVd8ABlXgAAZWWwAGVl0ABlZfAAZWYQAGVmQABlZlAAZWZgAGVmcABlZoAAZWagAGVmwABlZtAAZWbgAGVnAABlZxAAZWugAGVt4ABlcFAAZXKQAGVywABlcuAAZXMAAGVzIABlc0AAZXNgAGVzcABlc6AAZXUwAGV3AABldyAAZXdAAGV3YABld4AAZXegAGV3wABld+AAZXmwAGV54ABlehAAZXpAAGV6cABleqAAZXrQAGV7AABleyAAZYLQAGWC8ABlgxAAZYMwAGWDYABlg3AAZYOAAGWDkABlg6AAZYPAAGWD4ABlg/AAZYQAAGWEIABlhDAAZYvgAGWMAABljCAAZYxAAGWMcABljIAAZYyQAGWMoABljLAAZYzQAGWM8ABljQAAZY0QAGWNMABljUAAZZTwAGWVEABllTAAZZVQAGWVgABllZAAZZWgAGWVsABllcAAZZXgAGWWAABllhAAZZYgAGWWQABlllAAZZ4AAGWeIABlnlAAZZ5wAGWeoABlnrAAZZ7AAGWe0ABlnuAAZZ8AAGWfIABlnzAAZZ9AAGWfYABln3AAZacgAGWnQABlp2AAZaeAAGWnsABlp8AAZafQAGWn4ABlp/AAZagQAGWoMABlqEAAZahQAGWocABlqIAAZbAwAGWwUABlsHAAZbCQAGWwwABlsNAAZbDgAGWw8ABlsQAAZbEgAGWxQABlsVAAZbFgAGWxgABlsZAAZblAAGW5YABluYAAZbmgAGW50ABlueAAZbnwAGW6AABluhAAZbowAGW6UABlumAAZbpwAGW6kABluqAAZcPQAGXGAABlyAAAZcoAAGXKIABlykAAZcpgAGXKgABlyrAAZcrAAGXK0ABlywAAZcsQAGXLMABly0AAZctgAGXLkABly6AAZcuwAGXL4ABly/AAZcxAAGXN0ABlzmAAZc6AAGXOoABlzzAAZc9gAGXPkABlz7AAZdRAAGXWgABl2PAAZdswAGXbYABl24AAZdugAGXbwABl2+AAZdwAAGXcEABl3EAAZd3QAGXf4ABl4AAAZeAgAGXgQABl4GAAZeCAAGXgoABl4MAAZeDgAGXi8ABl4yAAZeNQAGXjgABl47AAZePgAGXkEABl5EAAZeRwAGXkkABl7EAAZexgAGXsgABl7KAAZezQAGXs4ABl7PAAZe0AAGXtEABl7TAAZe1QAGXtYABl7XAAZe2QAGXtoABl9VAAZfVwAGX1kABl9bAAZfXgAGX18ABl9gAAZfYQAGX2IABl9kAAZfZgAGX2cABl9oAAZfagAGX2sABl/mAAZf6AAGX+sABl/tAAZf8AAGX/EABl/yAAZf8wAGX/QABl/2AAZf+AAGX/kABl/6AAZf/AAGX/0ABmAWAAZgFwAGYBgABmAaAAZglQAGYJcABmCZAAZgmwAGYJ4ABmCfAAZgoAAGYKEABmCiAAZgpAAGYKYABmCnAAZgqAAGYKoABmCrAAZhJgAGYSgABmEqAAZhLAAGYS8ABmEwAAZhMQAGYTIABmEzAAZhNQAGYTcABmE4AAZhOQAGYTsABmE8AAZhtwAGYbkABmG7AAZhvQAGYcAABmHBAAZhwgAGYcMABmHEAAZhxgAGYcgABmHJAAZhygAGYcwABmHNAAZiSAAGYkoABmJMAAZiTgAGYlEABmJSAAZiUwAGYlQABmJVAAZiVwAGYlkABmJaAAZiWwAGYl0ABmJeAAZi2QAGYtsABmLdAAZi3wAGYuIABmLjAAZi5AAGYuUABmLmAAZi6AAGYuoABmLrAAZi7AAGYu4ABmLvAAZjOAAGY1wABmODAAZjpwAGY6oABmOsAAZjrgAGY7AABmOyAAZjtAAGY7UABmO4AAZj0QAGY+4ABmPwAAZj8gAGY/QABmP2AAZj+AAGY/oABmP8AAZkGQAGZBwABmQfAAZkIgAGZCUABmQoAAZkKwAGZC4ABmQwAAZkqwAGZK0ABmSvAAZksQAGZLQABmS1AAZktgAGZLcABmS4AAZkugAGZLwABmS9AAZkvgAGZMAABmTBAAZlPAAGZT4ABmVAAAZlQgAGZUUABmVGAAZlRwAGZUgABmVJAAZlSwAGZU0ABmVOAAZlTwAGZVEABmVSAAZlzQAGZc8ABmXRAAZl0wAGZdYABmXXAAZl2AAGZdkABmXaAAZl3AAGZd4ABmXfAAZl4AAGZeIABmXjAAZmXgAGZmAABmZiAAZmZAAGZmcABmZoAAZmaQAGZmoABmZrAAZmbQAGZm8ABmZwAAZmcQAGZnMABmZ0AAZm7wAGZvEABmbzAAZm9QAGZvgABmb5AAZm+gAGZvsABmb8AAZm/gAGZwAABmcBAAZnAgAGZwQABmcFAAZngAAGZ4IABmeEAAZnhgAGZ4kABmeKAAZniwAGZ4wABmeNAAZnjwAGZ5EABmeSAAZnkwAGZ5UABmeWAAZoEQAGaBMABmgVAAZoFwAGaBoABmgbAAZoHAAGaB0ABmgeAAZoIAAGaCIABmgjAAZoJAAGaCYABmgnAAZougAGaN0ABmj9AAZpHQAGaR8ABmkhAAZpIwAGaSUABmkoAAZpKQAGaSoABmktAAZpLgAGaTAABmkxAAZpMwAGaTYABmk3AAZpOAAGaTsABmk8AAZpQQAGaVoABmljAAZpZQAGaWcABmlwAAZpcwAGaXYABml4AAZpwQAGaeUABmoMAAZqMAAGajMABmo1AAZqNwAGajkABmo7AAZqPQAGaj4ABmpBAAZqWgAGansABmp9AAZqfwAGaoEABmqDAAZqhQAGaocABmqJAAZqiwAGaqwABmqvAAZqsgAGarUABmq4AAZquwAGar4ABmrBAAZqxAAGasYABmtBAAZrQwAGa0UABmtHAAZrSgAGa0sABmtMAAZrTQAGa04ABmtQAAZrUgAGa1MABmtUAAZrVgAGa1cABmvSAAZr1AAGa9YABmvYAAZr2wAGa9wABmvdAAZr3gAGa98ABmvhAAZr4wAGa+QABmvlAAZr5wAGa+gABmxjAAZsZQAGbGgABmxqAAZsbQAGbG4ABmxvAAZscAAGbHEABmxzAAZsdQAGbHYABmx3AAZseQAGbHoABmyTAAZslAAGbJUABmyXAAZtEgAGbRQABm0WAAZtGAAGbRsABm0cAAZtHQAGbR4ABm0fAAZtIQAGbSMABm0kAAZtJQAGbScABm0oAAZtowAGbaUABm2nAAZtqQAGbawABm2tAAZtrgAGba8ABm2wAAZtsgAGbbQABm21AAZttgAGbbgABm25AAZuNAAGbjYABm44AAZuOgAGbj0ABm4+AAZuPwAGbkAABm5BAAZuQwAGbkUABm5GAAZuRwAGbkkABm5KAAZuxQAGbscABm7JAAZuywAGbs4ABm7PAAZu0AAGbtEABm7SAAZu1AAGbtYABm7XAAZu2AAGbtoABm7bAAZvVgAGb1gABm9aAAZvXAAGb18ABm9gAAZvYQAGb2IABm9jAAZvZQAGb2cABm9oAAZvaQAGb2sABm9sAAZvtQAGb9kABnAAAAZwJAAGcCcABnApAAZwKwAGcC0ABnAvAAZwMQAGcDIABnA1AAZwTgAGcGsABnBtAAZwbwAGcHEABnBzAAZwdQAGcHcABnB5AAZwlgAGcJkABnCcAAZwnwAGcKIABnClAAZwqAAGcKsABnCtAAZxKAAGcSoABnEsAAZxLgAGcTEABnEyAAZxMwAGcTQABnE1AAZxNwAGcTkABnE6AAZxOwAGcT0ABnE+AAZxuQAGcbsABnG9AAZxvwAGccIABnHDAAZxxAAGccUABnHGAAZxyAAGccoABnHLAAZxzAAGcc4ABnHPAAZySgAGckwABnJOAAZyUAAGclMABnJUAAZyVQAGclYABnJXAAZyWQAGclsABnJcAAZyXQAGcl8ABnJgAAZy2wAGct0ABnLgAAZy4gAGcuUABnLmAAZy5wAGcugABnLpAAZy6wAGcu0ABnLuAAZy7wAGcvEABnLyAAZzbQAGc28ABnNxAAZzcwAGc3YABnN3AAZzeAAGc3kABnN6AAZzfAAGc34ABnN/AAZzgAAGc4IABnODAAZz/gAGdAAABnQCAAZ0BAAGdAcABnQIAAZ0CQAGdAoABnQLAAZ0DQAGdA8ABnQQAAZ0EQAGdBMABnQUAAZ0jwAGdJEABnSTAAZ0lQAGdJgABnSZAAZ0mgAGdJsABnScAAZ0ngAGdKAABnShAAZ0ogAGdKQABnSlAAZ1OAAGdVsABnV7AAZ1mwAGdZ0ABnWfAAZ1oQAGdaMABnWmAAZ1pwAGdagABnWrAAZ1rAAGda4ABnWvAAZ1sQAGdbQABnW1AAZ1tgAGdbkABnW6AAZ1wwAGddwABnXlAAZ15wAGdekABnXyAAZ19QAGdfgABnX6AAZ2QwAGdmcABnaOAAZ2sgAGdrUABna3AAZ2uQAGdrsABna9AAZ2vwAGdsAABnbDAAZ23AAGdv0ABnb/AAZ3AQAGdwMABncFAAZ3BwAGdwkABncLAAZ3DQAGdy4ABncxAAZ3NAAGdzcABnc6AAZ3PQAGd0AABndDAAZ3RgAGd0gABnfDAAZ3xQAGd8cABnfJAAZ3zAAGd80ABnfOAAZ3zwAGd9AABnfSAAZ31AAGd9UABnfWAAZ32AAGd9kABnhUAAZ4VgAGeFgABnhaAAZ4XQAGeF4ABnhfAAZ4YAAGeGEABnhjAAZ4ZQAGeGYABnhnAAZ4aQAGeGoABnjlAAZ45wAGeOoABnjsAAZ47wAGePAABnjxAAZ48gAGePMABnj1AAZ49wAGePgABnj5AAZ4+wAGePwABnkVAAZ5FgAGeRcABnkZAAZ5lAAGeZYABnmYAAZ5mgAGeZ0ABnmeAAZ5nwAGeaAABnmhAAZ5owAGeaUABnmmAAZ5pwAGeakABnmqAAZ6JQAGeicABnopAAZ6KwAGei4ABnovAAZ6MAAGejEABnoyAAZ6NAAGejYABno3AAZ6OAAGejoABno7AAZ6tgAGergABnq6AAZ6vAAGer8ABnrAAAZ6wQAGesIABnrDAAZ6xQAGescABnrIAAZ6yQAGessABnrMAAZ7RwAGe0kABntLAAZ7TQAGe1AABntRAAZ7UgAGe1MABntUAAZ7VgAGe1gABntZAAZ7WgAGe1wABntdAAZ72AAGe9oABnvcAAZ73gAGe+EABnviAAZ74wAGe+QABnvlAAZ75wAGe+kABnvqAAZ76wAGe+0ABnvuAAZ8NwAGfFsABnyCAAZ8pgAGfKkABnyrAAZ8rQAGfK8ABnyxAAZ8swAGfLQABny3AAZ80AAGfO0ABnzvAAZ88QAGfPMABnz1AAZ89wAGfPkABnz7AAZ9GAAGfRsABn0eAAZ9IQAGfSQABn0nAAZ9KgAGfS0ABn0vAAZ9qgAGfawABn2uAAZ9sAAGfbMABn20AAZ9tQAGfbYABn23AAZ9uQAGfbsABn28AAZ9vQAGfb8ABn3AAAZ+OwAGfj0ABn4/AAZ+QQAGfkQABn5FAAZ+RgAGfkcABn5IAAZ+SgAGfkwABn5NAAZ+TgAGflAABn5RAAZ+zAAGfs4ABn7QAAZ+0gAGftUABn7WAAZ+1wAGftgABn7ZAAZ+2wAGft0ABn7eAAZ+3wAGfuEABn7iAAZ/XQAGf18ABn9hAAZ/YwAGf2YABn9nAAZ/aAAGf2kABn9qAAZ/bAAGf24ABn9vAAZ/cAAGf3IABn9zAAZ/7gAGf/AABn/yAAZ/9AAGf/cABn/4AAZ/+QAGf/oABn/7AAZ//QAGf/8ABoAAAAaAAQAGgAMABoAEAAaAfwAGgIEABoCDAAaAhQAGgIgABoCJAAaAigAGgIsABoCMAAaAjgAGgJAABoCRAAaAkgAGgJQABoCVAAaBEAAGgRIABoEUAAaBFgAGgRkABoEaAAaBGwAGgRwABoEdAAaBHwAGgSEABoEiAAaBIwAGgSUABoEmAAaBuQAGgdwABoH8AAaCHAAGgh4ABoIgAAaCIgAGgiQABoInAAaCKAAGgikABoIsAAaCLQAGgi8ABoIwAAaCMgAGgjUABoI2AAaCNwAGgjoABoI7AAaCQAAGglkABoJiAAaCZAAGgmYABoJvAAaCcgAGgnUABoJ3AAaCwAAGguQABoMLAAaDLwAGgzIABoM0AAaDNgAGgzgABoM6AAaDPAAGgz0ABoNAAAaDWQAGg3oABoN8AAaDfgAGg4AABoOCAAaDhAAGg4YABoOIAAaDigAGg6sABoOuAAaDsQAGg7QABoO3AAaDugAGg70ABoPAAAaDwwAGg8UABoRAAAaEQgAGhEQABoRGAAaESQAGhEoABoRLAAaETAAGhE0ABoRPAAaEUQAGhFIABoRTAAaEVQAGhFYABoTRAAaE0wAGhNUABoTXAAaE2gAGhNsABoTcAAaE3QAGhN4ABoTgAAaE4gAGhOMABoTkAAaE5gAGhOcABoViAAaFZAAGhWcABoVpAAaFbAAGhW0ABoVuAAaFbwAGhXAABoVyAAaFdAAGhXUABoV2AAaFeAAGhXkABoWSAAaFkwAGhZQABoWWAAaGEQAGhhMABoYVAAaGFwAGhhoABoYbAAaGHAAGhh0ABoYeAAaGIAAGhiIABoYjAAaGJAAGhiYABoYnAAaGogAGhqQABoamAAaGqAAGhqsABoasAAaGrQAGhq4ABoavAAaGsQAGhrMABoa0AAaGtQAGhrcABoa4AAaHMwAGhzUABoc3AAaHOQAGhzwABoc9AAaHPgAGhz8ABodAAAaHQgAGh0QABodFAAaHRgAGh0gABodJAAaHxAAGh8YABofIAAaHygAGh80ABofOAAaHzwAGh9AABofRAAaH0wAGh9UABofWAAaH1wAGh9kABofaAAaIVQAGiFcABohZAAaIWwAGiF4ABohfAAaIYAAGiGEABohiAAaIZAAGiGYABohnAAaIaAAGiGoABohrAAaItAAGiNgABoj/AAaJIwAGiSYABokoAAaJKgAGiSwABokuAAaJMAAGiTEABok0AAaJTQAGiWoABolsAAaJbgAGiXAABolyAAaJdAAGiXYABol4AAaJlQAGiZgABombAAaJngAGiaEABomkAAaJpwAGiaoABomsAAaKJwAGiikABoorAAaKLQAGijAABooxAAaKMgAGijMABoo0AAaKNgAGijgABoo5AAaKOgAGijwABoo9AAaKuAAGiroABoq8AAaKvgAGisEABorCAAaKwwAGisQABorFAAaKxwAGiskABorKAAaKywAGis0ABorOAAaLSQAGi0sABotNAAaLTwAGi1IABotTAAaLVAAGi1UABotWAAaLWAAGi1oABotbAAaLXAAGi14ABotfAAaL2gAGi9wABoveAAaL4AAGi+MABovkAAaL5QAGi+YABovnAAaL6QAGi+sABovsAAaL7QAGi+8ABovwAAaMawAGjG0ABoxvAAaMcQAGjHQABox1AAaMdgAGjHcABox4AAaMegAGjHwABox9AAaMfgAGjIAABoyBAAaM/AAGjP4ABo0AAAaNAgAGjQUABo0GAAaNBwAGjQgABo0JAAaNCwAGjQ0ABo0OAAaNDwAGjREABo0SAAaNjQAGjY8ABo2RAAaNkwAGjZYABo2XAAaNmAAGjZkABo2aAAaNnAAGjZ4ABo2fAAaNoAAGjaIABo2jAAaNtAAGjbUABo23AAaOMgAGjjQABo42AAaOOAAGjjsABo48AAaOPQAGjj4ABo4/AAaOQQAGjkMABo5EAAaORQAGjkcABo5IAAaOwwAGjsUABo7HAAaOyQAGjswABo7NAAaOzgAGjs8ABo7QAAaO0gAGjtQABo7VAAaO1gAGjtgABo7ZAAaPVAAGj1YABo9ZAAaPWwAGj14ABo9fAAaPYAAGj2EABo9iAAaPZAAGj2YABo9nAAaPaAAGj2oABo9rAAaP/gAGkCEABpBBAAaQYQAGkGMABpBlAAaQZwAGkGkABpBsAAaQbQAGkG4ABpBxAAaQcgAGkHQABpB1AAaQdwAGkHoABpB7AAaQfAAGkH8ABpCAAAaQhQAGkJ4ABpCnAAaQqQAGkKsABpC0AAaQtwAGkLoABpC8AAaRBQAGkSkABpFQAAaRdAAGkXcABpF5AAaRewAGkX0ABpF/AAaRgQAGkYIABpGFAAaRngAGkb8ABpHBAAaRwwAGkcUABpHHAAaRyQAGkcsABpHNAAaRzwAGkfAABpHzAAaR9gAGkfkABpH8AAaR/wAGkgIABpIFAAaSCAAGkgoABpKFAAaShwAGkokABpKLAAaSjgAGko8ABpKQAAaSkQAGkpIABpKUAAaSlgAGkpcABpKYAAaSmgAGkpsABpMWAAaTGAAGkxoABpMcAAaTHwAGkyAABpMhAAaTIgAGkyMABpMlAAaTJwAGkygABpMpAAaTKwAGkywABpOnAAaTqQAGk6wABpOuAAaTsQAGk7IABpOzAAaTtAAGk7UABpO3AAaTuQAGk7oABpO7AAaTvQAGk74ABpPXAAaT2AAGk9kABpPbAAaUVgAGlFgABpRaAAaUXAAGlF8ABpRgAAaUYQAGlGIABpRjAAaUZQAGlGcABpRoAAaUaQAGlGsABpRsAAaU5wAGlOkABpTrAAaU7QAGlPAABpTxAAaU8gAGlPMABpT0AAaU9gAGlPgABpT5AAaU+gAGlPwABpT9AAaVeAAGlXoABpV8AAaVfgAGlYEABpWCAAaVgwAGlYQABpWFAAaVhwAGlYkABpWKAAaViwAGlY0ABpWOAAaWCQAGlgsABpYNAAaWDwAGlhIABpYTAAaWFAAGlhUABpYWAAaWGAAGlhoABpYbAAaWHAAGlh4ABpYfAAaWmgAGlpwABpaeAAaWoAAGlqMABpakAAaWpQAGlqYABpanAAaWqQAGlqsABpasAAaWrQAGlq8ABpawAAaW+QAGlx0ABpdEAAaXaAAGl2sABpdtAAaXbwAGl3EABpdzAAaXdQAGl3YABpd5AAaXkgAGl68ABpexAAaXswAGl7UABpe3AAaXuQAGl7sABpe9AAaX2gAGl90ABpfgAAaX4wAGl+YABpfpAAaX7AAGl+8ABpfxAAaYbAAGmG4ABphwAAaYcgAGmHUABph2AAaYdwAGmHgABph5AAaYewAGmH0ABph+AAaYfwAGmIEABpiCAAaY/QAGmP8ABpkBAAaZAwAGmQYABpkHAAaZCAAGmQkABpkKAAaZDAAGmQ4ABpkPAAaZEAAGmRIABpkTAAaZjgAGmZAABpmSAAaZlAAGmZcABpmYAAaZmQAGmZoABpmbAAaZnQAGmZ8ABpmgAAaZoQAGmaMABpmkAAaaHwAGmiEABpojAAaaJQAGmigABpopAAaaKgAGmisABposAAaaLgAGmjAABpoxAAaaMgAGmjQABpo1AAaasAAGmrIABpq0AAaatgAGmrkABpq6AAaauwAGmrwABpq9AAaavwAGmsEABprCAAaawwAGmsUABprGAAabQQAGm0MABptFAAabRwAGm0oABptLAAabTAAGm00ABptOAAabUAAGm1IABptTAAabVAAGm1YABptXAAab0gAGm9QABpvWAAab2AAGm9sABpvcAAab3QAGm94ABpvfAAab4QAGm+MABpvkAAab5QAGm+cABpvoAAab+QAGm/4ABpwBAAacAwAGnDwABpw/AAacQQAGnEQABpxHAAacSgAGnE0ABpxSAAaczQAGnM8ABpzRAAac0wAGnNYABpzXAAac2AAGnNkABpzaAAac3AAGnN4ABpzfAAac4AAGnOIABpzjAAadXgAGnWAABp1iAAadZAAGnWcABp1oAAadaQAGnWoABp1rAAadbQAGnW8ABp1wAAadcQAGnXMABp10AAad7wAGnfEABp30AAad9gAGnfkABp36AAad+wAGnfwABp39AAad/wAGngEABp4CAAaeAwAGngUABp4GAAaeFwAGnhwABp4fAAaeIQAGnioABp6lAAaepwAGnqkABp6rAAaergAGnq8ABp6wAAaesQAGnrIABp60AAaetgAGnrcABp64AAaeugAGnrsABp82AAafOAAGnzoABp88AAafPwAGn0AABp9BAAafQgAGn0MABp9FAAafRwAGn0gABp9JAAafSwAGn0wABp/HAAafyQAGn8wABp/OAAaf0QAGn9IABp/TAAaf1AAGn9UABp/XAAaf2QAGn9oABp/bAAaf3QAGn94ABqBxAAaglAAGoLQABqDUAAag1gAGoNgABqDaAAag3AAGoN8ABqDgAAag4QAGoOQABqDlAAag5wAGoOgABqDqAAag7QAGoO4ABqDvAAag8gAGoPMABqD4AAahEQAGoRoABqEcAAahHgAGoScABqEqAAahLQAGoS8ABqF4AAahnAAGocMABqHnAAah6gAGoewABqHuAAah8AAGofIABqH0AAah9QAGofgABqIRAAaiMgAGojQABqI2AAaiOAAGojoABqI8AAaiPgAGokAABqJCAAaiYwAGomYABqJpAAaibAAGom8ABqJyAAaidQAGongABqJ7AAaifQAGovgABqL6AAai/AAGov4ABqMBAAajAgAGowMABqMEAAajBQAGowcABqMJAAajCgAGowsABqMNAAajDgAGo4kABqOLAAajjQAGo48ABqOSAAajkwAGo5QABqOVAAajlgAGo5gABqOaAAajmwAGo5wABqOeAAajnwAGpBoABqQcAAakHwAGpCEABqQkAAakJQAGpCYABqQnAAakKAAGpCoABqQsAAakLQAGpC4ABqQwAAakMQAGpEoABqRLAAakTAAGpE4ABqTJAAakywAGpM0ABqTPAAak0gAGpNMABqTUAAak1QAGpNYABqTYAAak2gAGpNsABqTcAAak3gAGpN8ABqVaAAalXAAGpV4ABqVgAAalYwAGpWQABqVlAAalZgAGpWcABqVpAAalawAGpWwABqVtAAalbwAGpXAABqXrAAal7QAGpe8ABqXxAAal9AAGpfUABqX2AAal9wAGpfgABqX6AAal/AAGpf0ABqX+AAamAAAGpgEABqZ8AAamfgAGpoAABqaCAAamhQAGpoYABqaHAAamiAAGpokABqaLAAamjQAGpo4ABqaPAAamkQAGppIABqcNAAanDwAGpxEABqcTAAanFgAGpxcABqcYAAanGQAGpxoABqccAAanHgAGpx8ABqcgAAanIgAGpyMABqdsAAankAAGp7cABqfbAAan3gAGp+AABqfiAAan5AAGp+YABqfoAAan6QAGp+wABqgFAAaoIgAGqCQABqgmAAaoKAAGqCoABqgsAAaoLgAGqDAABqhNAAaoUAAGqFMABqhWAAaoWQAGqFwABqhfAAaoYgAGqGQABqjfAAao4QAGqOMABqjlAAao6AAGqOkABqjqAAao6wAGqOwABqjuAAao8AAGqPEABqjyAAao9AAGqPUABqlwAAapcgAGqXQABql2AAapeQAGqXoABql7AAapfAAGqX0ABql/AAapgQAGqYIABqmDAAaphQAGqYYABqoBAAaqAwAGqgUABqoHAAaqCgAGqgsABqoMAAaqDQAGqg4ABqoQAAaqEgAGqhMABqoUAAaqFgAGqhcABqqSAAaqlAAGqpYABqqYAAaqmwAGqpwABqqdAAaqngAGqp8ABqqhAAaqowAGqqQABqqlAAaqpwAGqqgABqsjAAarJQAGqycABqspAAarLAAGqy0ABqsuAAarLwAGqzAABqsyAAarNAAGqzUABqs2AAarOAAGqzkABqu0AAartgAGq7gABqu6AAarvQAGq74ABqu/AAarwAAGq8EABqvDAAarxQAGq8YABqvHAAaryQAGq8oABqxFAAasRwAGrEkABqxLAAasTgAGrE8ABqxQAAasUQAGrFIABqxUAAasVgAGrFcABqxYAAasWgAGrFsABqzuAAatEQAGrTEABq1RAAatUwAGrVUABq1XAAatWQAGrVwABq1dAAatXgAGrWEABq1iAAatZAAGrWUABq1nAAatagAGrWsABq1sAAatbwAGrXAABq11AAatjgAGrZcABq2ZAAatmwAGraQABq2nAAatqgAGrawABq31AAauGQAGrkAABq5kAAauZwAGrmkABq5rAAaubQAGrm8ABq5xAAaucgAGrnUABq6OAAaurwAGrrEABq6zAAautQAGrrcABq65AAauuwAGrr0ABq6/AAau4AAGruMABq7mAAau6QAGruwABq7vAAau8gAGrvUABq74AAau+gAGr3UABq93AAaveQAGr3sABq9+AAavfwAGr4AABq+BAAavggAGr4QABq+GAAavhwAGr4gABq+KAAaviwAGsAYABrAIAAawCgAGsAwABrAPAAawEAAGsBEABrASAAawEwAGsBUABrAXAAawGAAGsBkABrAbAAawHAAGsJcABrCZAAawnAAGsJ4ABrChAAawogAGsKMABrCkAAawpQAGsKcABrCpAAawqgAGsKsABrCtAAawrgAGsMcABrDIAAawyQAGsMsABrFGAAaxSAAGsUoABrFMAAaxTwAGsVAABrFRAAaxUgAGsVMABrFVAAaxVwAGsVgABrFZAAaxWwAGsVwABrHXAAax2QAGsdsABrHdAAax4AAGseEABrHiAAax4wAGseQABrHmAAax6AAGsekABrHqAAax7AAGse0ABrJoAAayagAGsmwABrJuAAaycQAGsnIABrJzAAaydAAGsnUABrJ3AAayeQAGsnoABrJ7AAayfQAGsn4ABrL5AAay+wAGsv0ABrL/AAazAgAGswMABrMEAAazBQAGswYABrMIAAazCgAGswsABrMMAAazDgAGsw8ABrOKAAazjAAGs44ABrOQAAazkwAGs5QABrOVAAazlgAGs5cABrOZAAazmwAGs5wABrOdAAaznwAGs6AABrPpAAa0DQAGtDQABrRYAAa0WwAGtF0ABrRfAAa0YQAGtGMABrRlAAa0ZgAGtGkABrSCAAa0nwAGtKEABrSjAAa0pQAGtKcABrSpAAa0qwAGtK0ABrTKAAa0zQAGtNAABrTTAAa01gAGtNkABrTcAAa03wAGtOEABrVcAAa1XgAGtWAABrViAAa1ZQAGtWYABrVnAAa1aAAGtWkABrVrAAa1bQAGtW4ABrVvAAa1cQAGtXIABrXtAAa17wAGtfEABrXzAAa19gAGtfcABrX4AAa1+QAGtfoABrX8AAa1/gAGtf8ABrYAAAa2AgAGtgMABrZ+AAa2gAAGtoIABraEAAa2hwAGtogABraJAAa2igAGtosABraNAAa2jwAGtpAABraRAAa2kwAGtpQABrcPAAa3EQAGtxMABrcVAAa3GAAGtxkABrcaAAa3GwAGtxwABrceAAa3IAAGtyEABrciAAa3JAAGtyUABregAAa3ogAGt6QABremAAa3qQAGt6oABrerAAa3rAAGt60ABrevAAa3sQAGt7IABrezAAa3tQAGt7YABrgxAAa4MwAGuDUABrg3AAa4OgAGuDsABrg8AAa4PQAGuD4ABrhAAAa4QgAGuEMABrhEAAa4RgAGuEcABrjCAAa4xAAGuMYABrjIAAa4ywAGuMwABrjNAAa4zgAGuM8ABrjRAAa40wAGuNQABrjVAAa41wAGuNgABrlrAAa5jgAGua4ABrnOAAa50AAGudIABrnUAAa51gAGudkABrnaAAa52wAGud4ABrnfAAa54QAGueIABrnlAAa56AAGuekABrnqAAa57QAGue4ABrnzAAa6DAAGuhUABroXAAa6GQAGuiIABrolAAa6KAAGuioABrpzAAa6lwAGur4ABrriAAa65QAGuucABrrpAAa66wAGuu0ABrrvAAa68AAGuvMABrsMAAa7LQAGuy8ABrsxAAa7MwAGuzUABrs3AAa7OQAGuzsABrs9AAa7XgAGu2EABrtkAAa7ZwAGu2oABrttAAa7cAAGu3MABrt2AAa7eAAGu/MABrv1AAa79wAGu/kABrv8AAa7/QAGu/4ABrv/AAa8AAAGvAIABrwEAAa8BQAGvAYABrwIAAa8CQAGvIQABryGAAa8iAAGvIoABryNAAa8jgAGvI8ABryQAAa8kQAGvJMABryVAAa8lgAGvJcABryZAAa8mgAGvRUABr0XAAa9GgAGvRwABr0fAAa9IAAGvSEABr0iAAa9IwAGvSUABr0nAAa9KAAGvSkABr0rAAa9LAAGvUUABr1GAAa9RwAGvUkABr3EAAa9xgAGvcgABr3KAAa9zQAGvc4ABr3PAAa90AAGvdEABr3TAAa91QAGvdYABr3XAAa92QAGvdoABr5VAAa+VwAGvlkABr5bAAa+XgAGvl8ABr5gAAa+YQAGvmIABr5kAAa+ZgAGvmcABr5oAAa+agAGvmsABr7mAAa+6AAGvuoABr7sAAa+7wAGvvAABr7xAAa+8gAGvvMABr71AAa+9wAGvvgABr75AAa++wAGvvwABr93AAa/eQAGv3sABr99AAa/gAAGv4EABr+CAAa/gwAGv4QABr+GAAa/iAAGv4kABr+KAAa/jAAGv40ABsAIAAbACgAGwAwABsAOAAbAEQAGwBIABsATAAbAFAAGwBUABsAXAAbAGQAGwBoABsAbAAbAHQAGwB4ABsBnAAbAiwAGwLIABsDWAAbA2QAGwNsABsDdAAbA3wAGwOEABsDjAAbA5AAGwOcABsEAAAbBHQAGwR8ABsEhAAbBIwAGwSUABsEnAAbBKQAGwSsABsFIAAbBSwAGwU4ABsFRAAbBVAAGwVcABsFaAAbBXQAGwV8ABsHaAAbB3AAGwd4ABsHgAAbB4wAGweQABsHlAAbB5gAGwecABsHpAAbB6wAGwewABsHtAAbB7wAGwfAABsJrAAbCbQAGwm8ABsJxAAbCdAAGwnUABsJ2AAbCdwAGwngABsJ6AAbCfAAGwn0ABsJ+AAbCgAAGwoEABsL8AAbC/gAGwwAABsMCAAbDBQAGwwYABsMHAAbDCAAGwwkABsMLAAbDDQAGww4ABsMPAAbDEQAGwxIABsONAAbDjwAGw5IABsOUAAbDlwAGw5gABsOZAAbDmgAGw5sABsOdAAbDnwAGw6AABsOhAAbDowAGw6QABsQfAAbEIQAGxCMABsQlAAbEKAAGxCkABsQqAAbEKwAGxCwABsQuAAbEMAAGxDEABsQyAAbENAAGxDUABsSwAAbEsgAGxLQABsS2AAbEuQAGxLoABsS7AAbEvAAGxL0ABsS/AAbEwQAGxMIABsTDAAbExQAGxMYABsVBAAbFQwAGxUYABsVIAAbFSwAGxUwABsVNAAbFTgAGxU8ABsVRAAbFUwAGxVQABsVVAAbFVwAGxVgABsXrAAbGDgAGxi4ABsZOAAbGUAAGxlIABsZUAAbGVgAGxlkABsZaAAbGWwAGxl4ABsZfAAbGYQAGxmIABsZlAAbGaAAGxmkABsZqAAbGbQAGxm4ABsZzAAbGjAAGxpUABsaXAAbGmQAGxqIABsalAAbGqAAGxqoABsbzAAbHFwAGxz4ABsdiAAbHZQAGx2cABsdpAAbHawAGx20ABsdvAAbHcAAGx3MABseMAAbHrQAGx68ABsexAAbHswAGx7UABse3AAbHuQAGx7sABse9AAbH3gAGx+EABsfkAAbH5wAGx+oABsftAAbH8AAGx/MABsf2AAbH+AAGyHMABsh1AAbIdwAGyHkABsh8AAbIfQAGyH4ABsh/AAbIgAAGyIIABsiEAAbIhQAGyIYABsiIAAbIiQAGyQQABskGAAbJCAAGyQoABskNAAbJDgAGyQ8ABskQAAbJEQAGyRMABskVAAbJFgAGyRcABskZAAbJGgAGyZUABsmXAAbJmgAGyZwABsmfAAbJoAAGyaEABsmiAAbJowAGyaUABsmnAAbJqAAGyakABsmrAAbJrAAGycUABsnGAAbJxwAGyckABspEAAbKRgAGykgABspKAAbKTQAGyk4ABspPAAbKUAAGylEABspTAAbKVQAGylYABspXAAbKWQAGyloABsrVAAbK1wAGytkABsrbAAbK3gAGyt8ABsrgAAbK4QAGyuIABsrkAAbK5gAGyucABsroAAbK6gAGyusABstmAAbLaAAGy2oABstsAAbLbwAGy3AABstxAAbLcgAGy3MABst1AAbLdwAGy3gABst5AAbLewAGy3wABsv3AAbL+QAGy/sABsv9AAbMAAAGzAEABswCAAbMAwAGzAQABswGAAbMCAAGzAkABswKAAbMDAAGzA0ABsyIAAbMigAGzIwABsyOAAbMkQAGzJIABsyTAAbMlAAGzJUABsyXAAbMmQAGzJoABsybAAbMnQAGzJ4ABsznAAbNCwAGzTIABs1WAAbNWQAGzVsABs1dAAbNXwAGzWEABs1jAAbNZAAGzWcABs2AAAbNnQAGzZ8ABs2hAAbNowAGzaUABs2nAAbNqQAGzasABs3IAAbNywAGzc4ABs3RAAbN1AAGzdcABs3aAAbN3QAGzd8ABs5aAAbOXAAGzl4ABs5gAAbOYwAGzmQABs5lAAbOZgAGzmcABs5pAAbOawAGzmwABs5tAAbObwAGznAABs7rAAbO7QAGzu8ABs7xAAbO9AAGzvUABs72AAbO9wAGzvgABs76AAbO/AAGzv0ABs7+AAbPAAAGzwEABs98AAbPfgAGz4AABs+CAAbPhQAGz4YABs+HAAbPiAAGz4kABs+LAAbPjQAGz44ABs+PAAbPkQAGz5IABtANAAbQDwAG0BIABtAUAAbQFwAG0BgABtAZAAbQGgAG0BsABtAdAAbQHwAG0CAABtAhAAbQIwAG0CQABtCfAAbQoQAG0KMABtClAAbQqAAG0KkABtCqAAbQqwAG0KwABtCuAAbQsAAG0LEABtCyAAbQtAAG0LUABtEwAAbRMgAG0TQABtE2AAbROQAG0ToABtE7AAbRPAAG0T0ABtE/AAbRQQAG0UIABtFDAAbRRQAG0UYABtHBAAbRwwAG0cYABtHIAAbRywAG0cwABtHNAAbRzgAG0c8ABtHRAAbR0wAG0dQABtHVAAbR1wAG0dgABtJrAAbSjgAG0q4ABtLOAAbS0AAG0tIABtLUAAbS1gAG0tkABtLaAAbS2wAG0t4ABtLfAAbS4QAG0uIABtLkAAbS5wAG0ugABtLpAAbS7AAG0u0ABtLyAAbTCwAG0xQABtMWAAbTGAAG0yEABtMkAAbTJwAG0ykABtNyAAbTlgAG070ABtPhAAbT5AAG0+YABtPoAAbT6gAG0+wABtPuAAbT7wAG0/IABtQLAAbULAAG1C4ABtQwAAbUMgAG1DQABtQ2AAbUOAAG1DoABtQ8AAbUXQAG1GAABtRjAAbUZgAG1GkABtRsAAbUbwAG1HIABtR1AAbUdwAG1PIABtT0AAbU9gAG1PgABtT7AAbU/AAG1P0ABtT+AAbU/wAG1QEABtUDAAbVBAAG1QUABtUHAAbVCAAG1YMABtWFAAbVhwAG1YkABtWMAAbVjQAG1Y4ABtWPAAbVkAAG1ZIABtWUAAbVlQAG1ZYABtWYAAbVmQAG1hQABtYWAAbWGQAG1hsABtYeAAbWHwAG1iAABtYhAAbWIgAG1iQABtYmAAbWJwAG1igABtYqAAbWKwAG1kQABtZFAAbWRgAG1kgABtbDAAbWxQAG1scABtbJAAbWzAAG1s0ABtbOAAbWzwAG1tAABtbSAAbW1AAG1tUABtbWAAbW2AAG1tkABtdUAAbXVgAG11gABtdaAAbXXQAG114ABtdfAAbXYAAG12EABtdjAAbXZQAG12YABtdnAAbXaQAG12oABtflAAbX5wAG1+kABtfrAAbX7gAG1+8ABtfwAAbX8QAG1/IABtf0AAbX9gAG1/cABtf4AAbX+gAG1/sABth2AAbYeAAG2HoABth8AAbYfwAG2IAABtiBAAbYggAG2IMABtiFAAbYhwAG2IgABtiJAAbYiwAG2IwABtkHAAbZCQAG2QsABtkNAAbZEAAG2REABtkSAAbZEwAG2RQABtkWAAbZGAAG2RkABtkaAAbZHAAG2R0ABtlmAAbZigAG2bEABtnVAAbZ2AAG2doABtncAAbZ3gAG2eAABtniAAbZ4wAG2eYABtn/AAbaHAAG2h4ABtogAAbaIgAG2iQABtomAAbaKAAG2ioABtpHAAbaSgAG2k0ABtpQAAbaUwAG2lYABtpZAAbaXAAG2l4ABtrZAAba2wAG2t0ABtrfAAba4gAG2uMABtrkAAba5QAG2uYABtroAAba6gAG2usABtrsAAba7gAG2u8ABttqAAbbbAAG224ABttwAAbbcwAG23QABtt1AAbbdgAG23cABtt5AAbbewAG23wABtt9AAbbfwAG24AABtv7AAbb/QAG2/8ABtwBAAbcBAAG3AUABtwGAAbcBwAG3AgABtwKAAbcDAAG3A0ABtwOAAbcEAAG3BEABtyMAAbcjgAG3JEABtyTAAbclgAG3JcABtyYAAbcmQAG3JoABtycAAbcngAG3J8ABtygAAbcogAG3KMABt0eAAbdIAAG3SIABt0kAAbdJwAG3SgABt0pAAbdKgAG3SsABt0tAAbdLwAG3TAABt0xAAbdMwAG3TQABt2vAAbdsQAG3bMABt21AAbduAAG3bkABt26AAbduwAG3bwABt2+AAbdwAAG3cEABt3CAAbdxAAG3cUABt5AAAbeQgAG3kQABt5GAAbeSQAG3koABt5LAAbeTAAG3k0ABt5PAAbeUQAG3lIABt5TAAbeVQAG3lYABt7pAAbfDAAG3ywABt9MAAbfTgAG31AABt9SAAbfVAAG31cABt9YAAbfWQAG31wABt9dAAbfXwAG32AABt9iAAbfZQAG32YABt9nAAbfagAG32sABt9wAAbfiQAG35IABt+UAAbflgAG358ABt+iAAbfpQAG36cABt/wAAbgFAAG4DsABuBfAAbgYgAG4GQABuBmAAbgaAAG4GoABuBsAAbgbQAG4HAABuCJAAbgqgAG4KwABuCuAAbgsAAG4LIABuC0AAbgtgAG4LgABuC6AAbg2wAG4N4ABuDhAAbg5AAG4OcABuDqAAbg7QAG4PAABuDzAAbg9QAG4XAABuFyAAbhdAAG4XYABuF5AAbhegAG4XsABuF8AAbhfQAG4X8ABuGBAAbhggAG4YMABuGFAAbhhgAG4gEABuIDAAbiBQAG4gcABuIKAAbiCwAG4gwABuINAAbiDgAG4hAABuISAAbiEwAG4hQABuIWAAbiFwAG4pIABuKUAAbilwAG4pkABuKcAAbinQAG4p4ABuKfAAbioAAG4qIABuKkAAbipQAG4qYABuKoAAbiqQAG4sIABuLDAAbixAAG4sYABuNBAAbjQwAG40UABuNHAAbjSgAG40sABuNMAAbjTQAG404ABuNQAAbjUgAG41MABuNUAAbjVgAG41cABuPSAAbj1AAG49YABuPYAAbj2wAG49wABuPdAAbj3gAG498ABuPhAAbj4wAG4+QABuPlAAbj5wAG4+gABuRjAAbkZQAG5GcABuRpAAbkbAAG5G0ABuRuAAbkbwAG5HAABuRyAAbkdAAG5HUABuR2AAbkeAAG5HkABuT0AAbk9gAG5PgABuT6AAbk/QAG5P4ABuT/AAblAAAG5QEABuUDAAblBQAG5QYABuUHAAblCQAG5QoABuWFAAblhwAG5YkABuWLAAbljgAG5Y8ABuWQAAblkQAG5ZIABuWUAAbllgAG5ZcABuWYAAblmgAG5ZsABuXkAAbmCAAG5i8ABuZTAAbmVgAG5lgABuZaAAbmXAAG5l4ABuZgAAbmYQAG5mQABuZ9AAbmmgAG5pwABuaeAAbmoAAG5qIABuakAAbmpgAG5qgABubFAAbmyAAG5ssABubOAAbm0QAG5tQABubXAAbm2gAG5twABudXAAbnWQAG51wABudeAAbnYQAG52IABudjAAbnZAAG52UABudnAAbnaQAG52oABudrAAbnbQAG524ABufpAAbn6wAG5+0ABufvAAbn8gAG5/MABuf0AAbn9QAG5/YABuf4AAbn+gAG5/sABuf8AAbn/gAG5/8ABuh6AAbofAAG6H4ABuiAAAbogwAG6IQABuiFAAbohgAG6IcABuiJAAboiwAG6IwABuiNAAbojwAG6JAABukLAAbpDQAG6RAABukSAAbpFQAG6RYABukXAAbpGAAG6RkABukbAAbpHQAG6R4ABukfAAbpIQAG6SIABumdAAbpnwAG6aEABumjAAbppgAG6acABumoAAbpqQAG6aoABumsAAbprgAG6a8ABumwAAbpsgAG6bMABuouAAbqMAAG6jIABuo0AAbqNwAG6jgABuo5AAbqOgAG6jsABuo9AAbqPwAG6kAABupBAAbqQwAG6kQABuq/AAbqwQAG6sMABurFAAbqyAAG6skABurKAAbqywAG6swABurOAAbq0AAG6tEABurSAAbq1AAG6tUAButoAAbriwAG66sABuvLAAbrzQAG688ABuvRAAbr0wAG69YABuvXAAbr2AAG69sABuvcAAbr3gAG698ABuviAAbr5QAG6+YABuvnAAbr6gAG6+sABuvwAAbsCQAG7BIABuwUAAbsFgAG7B8ABuwiAAbsJQAG7CcABuxwAAbslAAG7LsABuzfAAbs4gAG7OQABuzmAAbs6AAG7OoABuzsAAbs7QAG7PAABu0JAAbtKgAG7SwABu0uAAbtMAAG7TIABu00AAbtNgAG7TgABu06AAbtWwAG7V4ABu1hAAbtZAAG7WcABu1qAAbtbQAG7XAABu1zAAbtdQAG7fAABu3yAAbt9AAG7fYABu35AAbt+gAG7fsABu38AAbt/QAG7f8ABu4BAAbuAgAG7gMABu4FAAbuBgAG7oEABu6DAAbuhQAG7ocABu6KAAbuiwAG7owABu6NAAbujgAG7pAABu6SAAbukwAG7pQABu6WAAbulwAG7xIABu8UAAbvFwAG7xkABu8cAAbvHQAG7x4ABu8fAAbvIAAG7yIABu8kAAbvJQAG7yYABu8oAAbvKQAG70IABu9DAAbvRAAG70YABu/BAAbvwwAG78UABu/HAAbvygAG78sABu/MAAbvzQAG784ABu/QAAbv0gAG79MABu/UAAbv1gAG79cABvBSAAbwVAAG8FYABvBYAAbwWwAG8FwABvBdAAbwXgAG8F8ABvBhAAbwYwAG8GQABvBlAAbwZwAG8GgABvDjAAbw5QAG8OcABvDpAAbw7AAG8O0ABvDuAAbw7wAG8PAABvDyAAbw9AAG8PUABvD2AAbw+AAG8PkABvF0AAbxdgAG8XgABvF6AAbxfQAG8X4ABvF/AAbxgAAG8YEABvGDAAbxhQAG8YYABvGHAAbxiQAG8YoABvIFAAbyBwAG8gkABvILAAbyDgAG8g8ABvIQAAbyEQAG8hIABvIUAAbyFgAG8hcABvIYAAbyGgAG8hsABvJkAAbyiAAG8q8ABvLTAAby1gAG8tgABvLaAAby3AAG8t4ABvLgAAby4QAG8uQABvL9AAbzGgAG8xwABvMeAAbzIAAG8yIABvMkAAbzJgAG8ygABvNFAAbzSAAG80sABvNOAAbzUQAG81QABvNXAAbzWgAG81wABvPXAAbz2QAG89sABvPdAAbz4AAG8+EABvPiAAbz4wAG8+QABvPmAAbz6AAG8+kABvPqAAbz7AAG8+0ABvRoAAb0agAG9G0ABvRvAAb0cgAG9HMABvR0AAb0dQAG9HYABvR4AAb0egAG9HsABvR8AAb0fgAG9H8ABvT6AAb0/AAG9P4ABvUAAAb1AwAG9QQABvUFAAb1BgAG9QcABvUJAAb1CwAG9QwABvUNAAb1DwAG9RAABvWLAAb1jQAG9ZAABvWSAAb1lQAG9ZYABvWXAAb1mAAG9ZkABvWbAAb1nQAG9Z4ABvWfAAb1oQAG9aIABvYdAAb2HwAG9iEABvYjAAb2JgAG9icABvYoAAb2KQAG9ioABvYsAAb2LgAG9i8ABvYwAAb2MgAG9jMABvauAAb2sAAG9rIABva0AAb2twAG9rgABva5AAb2ugAG9rsABva9AAb2vwAG9sAABvbBAAb2wwAG9sQABvc/AAb3QQAG90QABvdGAAb3SQAG90oABvdLAAb3TAAG900ABvdPAAb3UQAG91IABvdTAAb3VQAG91YABvfpAAb4DAAG+CwABvhMAAb4TgAG+FAABvhSAAb4VAAG+FcABvhYAAb4WQAG+FwABvhdAAb4XwAG+GAABvhiAAb4ZQAG+GYABvhnAAb4agAG+GsABvhwAAb4iQAG+JIABviUAAb4lgAG+J8ABviiAAb4pQAG+KcABvjwAAb5FAAG+TsABvlfAAb5YgAG+WQABvlmAAb5aAAG+WoABvlsAAb5bQAG+XAABvmJAAb5qgAG+awABvmuAAb5sAAG+bIABvm0AAb5tgAG+bgABvm6AAb52wAG+d4ABvnhAAb55AAG+ecABvnqAAb57QAG+fAABvnzAAb59QAG+nAABvpyAAb6dAAG+nYABvp5AAb6egAG+nsABvp8AAb6fQAG+n8ABvqBAAb6ggAG+oMABvqFAAb6hgAG+wEABvsDAAb7BQAG+wcABvsKAAb7CwAG+wwABvsNAAb7DgAG+xAABvsSAAb7EwAG+xQABvsWAAb7FwAG+5IABvuUAAb7lwAG+5kABvucAAb7nQAG+54ABvufAAb7oAAG+6IABvukAAb7pQAG+6YABvuoAAb7qQAG+8IABvvDAAb7xAAG+8YABvxBAAb8QwAG/EUABvxHAAb8SgAG/EsABvxMAAb8TQAG/E4ABvxQAAb8UgAG/FMABvxUAAb8VgAG/FcABvzSAAb81AAG/NYABvzYAAb82wAG/NwABvzdAAb83gAG/N8ABvzhAAb84wAG/OQABvzlAAb85wAG/OgABv1jAAb9ZQAG/WcABv1pAAb9bAAG/W0ABv1uAAb9bwAG/XAABv1yAAb9dAAG/XUABv12AAb9eAAG/XkABv30AAb99gAG/fgABv36AAb9/QAG/f4ABv3/AAb+AAAG/gEABv4DAAb+BQAG/gYABv4HAAb+CQAG/goABv6FAAb+hwAG/okABv6LAAb+jgAG/o8ABv6QAAb+kQAG/pIABv6UAAb+lgAG/pcABv6YAAb+mgAG/psABv7kAAb/CAAG/y8ABv9TAAb/VgAG/1gABv9aAAb/XAAG/14ABv9gAAb/YQAG/2QABv99AAb/mgAG/5wABv+eAAb/oAAG/6IABv+kAAb/pgAG/6gABv/FAAb/yAAG/8sABv/OAAb/0QAG/9QABv/XAAb/2gAG/9wABwBXAAcAWQAHAFsABwBdAAcAYAAHAGEABwBiAAcAYwAHAGQABwBmAAcAaAAHAGkABwBqAAcAbAAHAG0ABwDoAAcA6gAHAOwABwDuAAcA8QAHAPIABwDzAAcA9AAHAPUABwD3AAcA+QAHAPoABwD7AAcA/QAHAP4ABwF5AAcBewAHAX0ABwF/AAcBggAHAYMABwGEAAcBhQAHAYYABwGIAAcBigAHAYsABwGMAAcBjgAHAY8ABwIKAAcCDAAHAg4ABwIQAAcCEwAHAhQABwIVAAcCFgAHAhcABwIZAAcCGwAHAhwABwIdAAcCHwAHAiAABwKbAAcCnQAHAp8ABwKhAAcCpAAHAqUABwKmAAcCpwAHAqgABwKqAAcCrAAHAq0ABwKuAAcCsAAHArEABwMsAAcDLgAHAzAABwMyAAcDNQAHAzYABwM3AAcDOAAHAzkABwM7AAcDPQAHAz4ABwM/AAcDQQAHA0IABwO9AAcDvwAHA8EABwPDAAcDxgAHA8cABwPIAAcDyQAHA8oABwPMAAcDzgAHA88ABwPQAAcD0gAHA9MABwPkAAcD6QAHA+wABwPuAAcEJwAHBCoABwQsAAcELwAHBDIABwQ1AAcEOAAHBD0ABwS4AAcEugAHBLwABwS+AAcEwQAHBMIABwTDAAcExAAHBMUABwTHAAcEyQAHBMoABwTLAAcEzQAHBM4ABwVJAAcFSwAHBU0ABwVPAAcFUgAHBVMABwVUAAcFVQAHBVYABwVYAAcFWgAHBVsABwVcAAcFXgAHBV8ABwXaAAcF3AAHBd8ABwXhAAcF5AAHBeUABwXmAAcF5wAHBegABwXqAAcF7AAHBe0ABwXuAAcF8AAHBfEABwaEAAcGpwAHBscABwbnAAcG6QAHBusABwbtAAcG7wAHBvIABwbzAAcG9AAHBvcABwb4AAcG+gAHBvsABwb9AAcHAAAHBwEABwcCAAcHBQAHBwYABwcLAAcHJAAHBy0ABwcvAAcHMQAHBzoABwc9AAcHQAAHB0IABweLAAcHrwAHB9YABwf6AAcH/QAHB/8ABwgBAAcIAwAHCAUABwgHAAcICAAHCAsABwgkAAcIRQAHCEcABwhJAAcISwAHCE0ABwhPAAcIUQAHCFMABwhVAAcIdgAHCHkABwh8AAcIfwAHCIIABwiFAAcIiAAHCIsABwiOAAcIkAAHCQsABwkNAAcJDwAHCREABwkUAAcJFQAHCRYABwkXAAcJGAAHCRoABwkcAAcJHQAHCR4ABwkgAAcJIQAHCZwABwmeAAcJoAAHCaIABwmlAAcJpgAHCacABwmoAAcJqQAHCasABwmtAAcJrgAHCa8ABwmxAAcJsgAHCi0ABwovAAcKMgAHCjQABwo3AAcKOAAHCjkABwo6AAcKOwAHCj0ABwo/AAcKQAAHCkEABwpDAAcKRAAHCl0ABwpeAAcKXwAHCmEABwrcAAcK3gAHCuAABwriAAcK5QAHCuYABwrnAAcK6AAHCukABwrrAAcK7QAHCu4ABwrvAAcK8QAHCvIABwttAAcLbwAHC3EABwtzAAcLdgAHC3cABwt4AAcLeQAHC3oABwt8AAcLfgAHC38ABwuAAAcLggAHC4MABwv+AAcMAAAHDAIABwwEAAcMBwAHDAgABwwJAAcMCgAHDAsABwwNAAcMDwAHDBAABwwRAAcMEwAHDBQABwyPAAcMkQAHDJMABwyVAAcMmAAHDJkABwyaAAcMmwAHDJwABwyeAAcMoAAHDKEABwyiAAcMpAAHDKUABw0gAAcNIgAHDSQABw0mAAcNKQAHDSoABw0rAAcNLAAHDS0ABw0vAAcNMQAHDTIABw0zAAcNNQAHDTYABw1/AAcNowAHDcoABw3uAAcN8QAHDfMABw31AAcN9wAHDfkABw37AAcN/AAHDf8ABw4YAAcONQAHDjcABw45AAcOOwAHDj0ABw4/AAcOQQAHDkMABw5gAAcOYwAHDmYABw5pAAcObAAHDm8ABw5yAAcOdQAHDncABw7yAAcO9AAHDvYABw74AAcO+wAHDvwABw79AAcO/gAHDv8ABw8BAAcPAwAHDwQABw8FAAcPBwAHDwg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AByC2AAcgtwAHILgAByC5AAcgugAHILwAByC+AAcgvwAHIMAAByDCAAcgwwAHIVYAByF5AAchmQAHIbkAByG7AAchvQAHIb8AByHBAAchxAAHIcUAByHGAAchyQAHIcoAByHMAAchzQAHIc8AByHSAAch0wAHIdQAByHXAAch2AAHId0AByH2AAch/wAHIgEAByIDAAciDAAHIg8AByISAAciFAAHIl0AByKBAAciqAAHIswAByLPAAci0QAHItMAByLVAAci1wAHItkAByLaAAci3QAHIvYAByMXAAcjGQAHIxsAByMdAAcjHwAHIyEAByMjAAcjJQAHIycAByNIAAcjSwAHI04AByNRAAcjVAAHI1cAByNaAAcjXQAHI2AAByNiAAcj3QAHI98AByPhAAcj4wAHI+YAByPnAAcj6AAHI+kAByPqAAcj7AAHI+4AByPvAAcj8AAHI/IAByPzAAckbgAHJHAAByRyAAckdAAHJHcAByR4AAckeQAHJHoAByR7AAckfQAHJH8ABySAAAckgQAHJIMABySEAAck/wAHJQEAByUEAAclBgAHJQkAByUKAAclCwAHJQwAByUNAAclDwAHJREAByUSAAclEwAHJRUAByUWAAclLwAHJTAAByUxAAclMwAHJa4AByWwAAclsgAHJbQAByW3AAcluAAHJbkAByW6AAcluwAHJb0AByW/AAclwAAHJcEAByXDAAclxAAHJj8AByZBAAcmQwAHJkUAByZIAAcmSQAHJkoAByZLAAcmTAAHJk4AByZQAAcmUQAHJlIAByZUAAcmVQAHJtAABybSAAcm1AAHJtYABybZAAcm2gAHJtsABybcAAcm3QAHJt8ABybhAAcm4gAHJuMAByblAAcm5gAHJ2EABydjAAcnZQAHJ2cABydqAAcnawAHJ2wABydtAAcnbgAHJ3AABydyAAcncwAHJ3QAByd2AAcndwAHJ/IAByf0AAcn9gAHJ/gAByf7AAcn/AAHJ/0AByf+AAcn/wAHKAEABygDAAcoBAAHKAUABygHAAcoCAAHKFEAByh1AAconAAHKMAAByjDAAcoxQAHKMcAByjJAAcoywAHKM0AByjOAAco0QAHKOoABykHAAcpCQAHKQsABykNAAcpDwAHKREABykTAAcpFQAHKTIAByk1AAcpOAAHKTsAByk+AAcpQQAHKUQABylHAAcpSQAHKcQABynGAAcpyAAHKcoABynNAAcpzgAHKc8ABynQAAcp0QAHKdMABynVAAcp1gAHKdcABynZAAcp2gAHKlUABypXAAcqWQAHKlsABypeAAcqXwAHKmAAByphAAcqYgAHKmQABypmAAcqZwAHKmgABypqAAcqawAHKuYAByroAAcq6gAHKuwAByrvAAcq8AAHKvEAByryAAcq8wAHKvUAByr3AAcq+AAHKvkAByr7AAcq/AAHK3cAByt5AAcrewAHK30AByuAAAcrgQAHK4IAByuDAAcrhAAHK4YAByuIAAcriQAHK4oAByuMAAcrjQAHLAgABywKAAcsDAAHLA4ABywRAAcsEgAHLBMABywUAAcsFQAHLBcABywZAAcsGgAHLBsABywdAAcsHgAHLJkAByybAAcsnQAHLJ8AByyiAAcsowAHLKQAByylAAcspgAHLKgAByyqAAcsqwAHLKwAByyuAAcsrwAHLSoABy0sAActLgAHLTAABy0zAActNAAHLTUABy02AActNwAHLTkABy07AActPAAHLT0ABy0/AActQAAHLVEABy1SAActVAAHLc8ABy3RAAct0wAHLdUABy3YAAct2QAHLdoABy3bAAct3AAHLd4ABy3gAAct4QAHLeIABy3kAAct5QAHLmAABy5iAAcuZAAHLmYABy5pAAcuagAHLmsABy5sAAcubQAHLm8ABy5xAAcucgAHLnMABy51AAcudgAHLvEABy7zAAcu9gAHLvgABy77AAcu/AAHLv0ABy7+AAcu/wAHLwEABy8DAAcvBAAHLwUABy8HAAcvCAAHL5sABy++AAcv3gAHL/4ABzAAAAcwAgAHMAQABzAGAAcwCQAHMAoABzALAAcwDgAHMA8ABzARAAcwEgAHMBQABzAXAAcwGAAHMBkABzAcAAcwHQAHMCYABzA/AAcwSAAHMEoABzBMAAcwVQAHMFgABzBbAAcwXQAHMKYABzDKAAcw8QAHMRUABzEYAAcxGgAHMRwABzEeAAcxIAAHMSIABzEjAAcxJgAHMT8ABzFgAAcxYgAHMWQABzFmAAcxaAAHMWoABzFsAAcxbgAHMXAABzGRAAcxlAAHMZcABzGaAAcxnQAHMaAABzGjAAcxpgAHMakABzGrAAcyJgAHMigABzIqAAcyLAAHMi8ABzIwAAcyMQAHMjI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AB1UfAAdVIAAHVSEAB1UiAAdVIwAHVSUAB1UnAAdVKAAHVSkAB1UrAAdVLAAHVacAB1WpAAdVqwAHVa0AB1WwAAdVsQAHVbIAB1WzAAdVtAAHVbYAB1W4AAdVuQAHVboAB1W8AAdVvQAHVjgAB1Y6AAdWPQAHVj8AB1ZCAAdWQwAHVkQAB1ZFAAdWRgAHVkgAB1ZKAAdWSwAHVkwAB1ZOAAdWTwAHVuIAB1cFAAdXJQAHV0UAB1dHAAdXSQAHV0sAB1dNAAdXUAAHV1EAB1dSAAdXVQAHV1YAB1dYAAdXWQAHV1sAB1deAAdXXwAHV2AAB1djAAdXZAAHV20AB1eGAAdXjwAHV5EAB1eTAAdXnAAHV58AB1eiAAdXpAAHV+0AB1gRAAdYOAAHWFwAB1hfAAdYYQAHWGMAB1hlAAdYZwAHWGkAB1hqAAdYbQAHWIYAB1inAAdYqQAHWKsAB1itAAdYrwAHWLEAB1izAAdYtQAHWLcAB1jYAAdY2wAHWN4AB1jhAAdY5AAHWOcAB1jqAAdY7QAHWPAAB1jyAAdZbQAHWW8AB1lxAAdZcwAHWXYAB1l3AAdZeAAHWXkAB1l6AAdZfAAHWX4AB1l/AAdZgAAHWYIAB1mDAAdZ/gAHWgAAB1oCAAdaBAAHWgcAB1oIAAdaCQAHWgoAB1oLAAdaDQAHWg8AB1oQAAdaEQAHWhMAB1oUAAdajwAHWpEAB1qUAAdalgAHWpkAB1qaAAdamwAHWpwAB1qdAAdanwAHWqEAB1qiAAdaowAHWqUAB1qmAAdavwAHWsAAB1rBAAdawwAHWz4AB1tAAAdbQgAHW0QAB1tHAAdbSAAHW0kAB1tKAAdbSwAHW00AB1tPAAdbUAAHW1EAB1tTAAdbVAAHW88AB1vRAAdb0wAHW9UAB1vYAAdb2QAHW9oAB1vbAAdb3AAHW94AB1vgAAdb4QAHW+IAB1vkAAdb5QAHXGAAB1xiAAdcZAAHXGYAB1xpAAdcagAHXGsAB1xsAAdcbQAHXG8AB1xxAAdccgAHXHMAB1x1AAdcdgAHXPEAB1zzAAdc9QAHXPcAB1z6AAdc+wAHXPwAB1z9AAdc/gAHXQAAB10CAAddAwAHXQQAB10GAAddBwAHXYIAB12EAAddhgAHXYgAB12LAAddjAAHXY0AB12OAAddjwAHXZEAB12TAAddlAAHXZUAB12XAAddmAAHXeEAB14FAAdeLAAHXlAAB15TAAdeVQAHXlcAB15ZAAdeWwAHXl0AB15eAAdeYQAHXnoAB16XAAdemQAHXpsAB16dAAdenwAHXqEAB16jAAdepQAHXsIAB17FAAdeyAAHXssAB17OAAde0QAHXtQAB17XAAde2QAHX1QAB19WAAdfWAAHX1oAB19dAAdfXgAHX18AB19gAAdfYQAHX2MAB19lAAdfZgAHX2cAB19pAAdfagAHX+UAB1/nAAdf6QAHX+sAB1/uAAdf7wAHX/AAB1/xAAdf8gAHX/QAB1/2AAdf9wAHX/gAB1/6AAdf+wAHYHYAB2B4AAdgegAHYHwAB2B/AAdggAAHYIEAB2CCAAdggwAHYIUAB2CHAAdgiAAHYIkAB2CLAAdgjAAHYQcAB2EJAAdhCwAHYQ0AB2EQAAdhEQAHYRIAB2ETAAdhFAAHYRYAB2EYAAdhGQAHYRoAB2EcAAdhHQAHYZgAB2GaAAdhnAAHYZ4AB2GhAAdhogAHYaMAB2GkAAdhpQAHYacAB2GpAAdhqgAHYasAB2GtAAdhrgAHYikAB2IrAAdiLQAHYi8AB2IyAAdiMwAHYjQAB2I1AAdiNgAHYjgAB2I6AAdiOwAHYjwAB2I+AAdiPwAHYroAB2K8AAdivgAHYsAAB2LDAAdixAAHYsUAB2LGAAdixwAHYskAB2LLAAdizAAHYs0AB2LPAAdi0AAHY2MAB2OGAAdjpgAHY8YAB2PIAAdjygAHY8wAB2POAAdj0QAHY9IAB2PTAAdj1gAHY9cAB2PZAAdj2gAHY90AB2PgAAdj4QAHY+IAB2PlAAdj5gAHY+sAB2QEAAdkDQAHZA8AB2QRAAdkGgAHZB0AB2QgAAdkIgAHZGsAB2SPAAdktgAHZNoAB2TdAAdk3wAHZOEAB2TjAAdk5QAHZOcAB2ToAAdk6wAHZQQAB2UlAAdlJwAHZSkAB2UrAAdlLQAHZS8AB2UxAAdlMwAHZTUAB2VWAAdlWQAHZVwAB2VfAAdlYgAHZWUAB2VoAAdlawAHZW4AB2VwAAdl6wAHZe0AB2XvAAdl8QAHZfQAB2X1AAdl9gAHZfcAB2X4AAdl+gAHZfwAB2X9AAdl/gAHZgAAB2YBAAdmfAAHZn4AB2aAAAdmggAHZoUAB2aGAAdmhwAHZogAB2aJAAdmiwAHZo0AB2aOAAdmjwAHZpEAB2aSAAdnDQAHZw8AB2cSAAdnFAAHZxcAB2cYAAdnGQAHZxoAB2cbAAdnHQAHZx8AB2cgAAdnIQAHZyMAB2ckAAdnPQAHZz4AB2c/AAdnQQAHZ7wAB2e+AAdnwAAHZ8IAB2fFAAdnxgAHZ8cAB2fIAAdnyQAHZ8sAB2fNAAdnzgAHZ88AB2fRAAdn0gAHaE0AB2hPAAdoUQAHaFMAB2hWAAdoVwAHaFgAB2hZAAdoWgAHaFwAB2heAAdoXwAHaGAAB2hiAAdoYwAHaN4AB2jgAAdo4gAHaOQAB2jnAAdo6AAHaOkAB2jqAAdo6wAHaO0AB2jvAAdo8AAHaPEAB2jzAAdo9AAHaW8AB2lxAAdpcwAHaXUAB2l4AAdpeQAHaXoAB2l7AAdpfAAHaX4AB2mAAAdpgQAHaYIAB2mEAAdphQAHagAAB2oCAAdqBAAHagYAB2oJAAdqCgAHagsAB2oMAAdqDQAHag8AB2oRAAdqEgAHahMAB2oVAAdqFgAHal8AB2qDAAdqqgAHas4AB2rRAAdq0wAHatUAB2rXAAdq2QAHatsAB2rcAAdq3wAHavgAB2sVAAdrFwAHaxkAB2sbAAdrHQAHax8AB2shAAdrIwAHa0AAB2tDAAdrRgAHa0kAB2tMAAdrTwAHa1IAB2tVAAdrVwAHa9IAB2vUAAdr1gAHa9gAB2vbAAdr3AAHa90AB2veAAdr3wAHa+EAB2vjAAdr5AAHa+UAB2vnAAdr6AAHbGMAB2xlAAdsZwAHbGkAB2xsAAdsbQAHbG4AB2xvAAdscAAHbHIAB2x0AAdsdQAHbHYAB2x4AAdseQAHbPQAB2z2AAds+AAHbPoAB2z9AAds/gAHbP8AB20AAAdtAQAHbQMAB20FAAdtBgAHbQcAB20JAAdtCgAHbYUAB22HAAdtigAHbYwAB22PAAdtkAAHbZEAB22SAAdtkwAHbZUAB22XAAdtmAAHbZkAB22bAAdtnAAHbhcAB24ZAAduGwAHbh0AB24gAAduIQAHbiIAB24jAAduJAAHbiYAB24oAAduKQAHbioAB24sAAduLQAHbqgAB26qAAdurAAHbq4AB26xAAdusgAHbrMAB260AAdutQAHbrcAB265AAduugAHbrsAB269AAduvgAHbzkAB287AAdvPgAHb0AAB29DAAdvRAAHb0UAB29GAAdvRwAHb0kAB29LAAdvTAAHb00AB29PAAdvUAAHb+MAB3AGAAdwJgAHcEYAB3BIAAdwSgAHcEwAB3BOAAdwUQAHcFIAB3BTAAdwVgAHcFcAB3BZAAdwWgAHcF0AB3BgAAdwYQAHcGIAB3BlAAdwZgAHcGsAB3CEAAdwjQAHcI8AB3CRAAdwmgAHcJ0AB3CgAAdwogAHcOsAB3EPAAdxNgAHcVoAB3FdAAdxXwAHcWEAB3FjAAdxZQAHcWcAB3FoAAdxawAHcYQAB3GlAAdxpwAHcakAB3GrAAdxrQAHca8AB3GxAAdxswAHcbUAB3HWAAdx2QAHcdwAB3HfAAdx4gAHceUAB3HoAAdx6wAHce4AB3HwAAdyawAHcm0AB3JvAAdycQAHcnQAB3J1AAdydgAHcncAB3J4AAdyegAHcnwAB3J9AAdyfgAHcoAAB3KBAAdy/AAHcv4AB3MAAAdzAgAHcwUAB3MGAAdzBwAHcwgAB3MJAAdzCwAHcw0AB3MOAAdzDwAHcxEAB3MSAAdzjQAHc48AB3OSAAdzlAAHc5cAB3OYAAdzmQAHc5oAB3ObAAdznQAHc58AB3OgAAdzoQAHc6MAB3OkAAdzvQAHc74AB3O/AAdzwQAHdDwAB3Q+AAd0QAAHdEIAB3RFAAd0RgAHdEcAB3RIAAd0SQAHdEsAB3RNAAd0TgAHdE8AB3RRAAd0UgAHdM0AB3TPAAd00QAHdNMAB3TWAAd01wAHdNgAB3TZAAd02gAHdNwAB3TeAAd03wAHdOAAB3TiAAd04wAHdV4AB3VgAAd1YgAHdWQAB3VnAAd1aAAHdWkAB3VqAAd1awAHdW0AB3VvAAd1cAAHdXEAB3VzAAd1dAAHde8AB3XxAAd18wAHdfUAB3X4AAd1+QAHdfoAB3X7AAd1/AAHdf4AB3YAAAd2AQAHdgIAB3YEAAd2BQAHdoAAB3aCAAd2hAAHdoYAB3aJAAd2igAHdosAB3aMAAd2jQAHdo8AB3aRAAd2kgAHdpMAB3aVAAd2lgAHdt8AB3cDAAd3KgAHd04AB3dRAAd3UwAHd1UAB3dXAAd3WQAHd1sAB3dcAAd3XwAHd3gAB3eVAAd3lwAHd5kAB3ebAAd3nQAHd58AB3ehAAd3owAHd8AAB3fDAAd3xgAHd8kAB3fMAAd3zwAHd9IAB3fVAAd31wAHeFIAB3hUAAd4VgAHeFgAB3hbAAd4XAAHeF0AB3heAAd4XwAHeGEAB3hjAAd4ZAAHeGUAB3hnAAd4aAAHeOMAB3jlAAd45wAHeOkAB3jsAAd47QAHeO4AB3jvAAd48AAHePIAB3j0AAd49QAHePYAB3j4AAd4+QAHeXQAB3l2AAd5eAAHeXoAB3l9AAd5fgAHeX8AB3mAAAd5gQAHeYMAB3mFAAd5hgAHeYcAB3mJAAd5igAHegUAB3oHAAd6CgAHegwAB3oPAAd6EAAHehEAB3oSAAd6EwAHehUAB3oXAAd6GAAHehkAB3obAAd6HAAHepcAB3qZAAd6mwAHep0AB3qgAAd6oQAHeqIAB3qjAAd6pAAHeqYAB3qoAAd6qQAHeqoAB3qsAAd6rQAHeygAB3sqAAd7LAAHey4AB3sxAAd7MgAHezMAB3s0AAd7NQAHezcAB3s5AAd7OgAHezsAB3s9AAd7PgAHe7kAB3u7AAd7vgAHe8AAB3vDAAd7xAAHe8UAB3vGAAd7xwAHe8kAB3vLAAd7zAAHe80AB3vPAAd70AAHfGMAB3yGAAd8pgAHfMYAB3zIAAd8ygAHfMwAB3zOAAd80QAHfNIAB3zTAAd81gAHfNcAB3zZAAd82gAHfNwAB3zfAAd84AAHfOEAB3zkAAd85QAHfO4AB30HAAd9EAAHfRIAB30UAAd9HQAHfSAAB30jAAd9JQAHfW4AB32SAAd9uQAHfd0AB33gAAd94gAHfeQAB33mAAd96AAHfeoAB33rAAd97gAHfgcAB34oAAd+KgAHfiwAB34uAAd+MAAHfjIAB340AAd+NgAHfjgAB35ZAAd+XAAHfl8AB35iAAd+ZQAHfmgAB35rAAd+bgAHfnEAB35zAAd+7gAHfvAAB37yAAd+9AAHfvcAB374AAd++QAHfvoAB377AAd+/QAHfv8AB38AAAd/AQAHfwMAB38EAAd/fwAHf4EAB3+DAAd/hQAHf4gAB3+JAAd/igAHf4sAB3+MAAd/jgAHf5AAB3+RAAd/kgAHf5QAB3+VAAeAEAAHgBIAB4AVAAeAFwAHgBoAB4AbAAeAHAAHgB0AB4AeAAeAIAAHgCIAB4AjAAeAJAAHgCYAB4AnAAeAQAAHgEEAB4BCAAeARAAHgL8AB4DBAAeAwwAHgMUAB4DIAAeAyQAHgMoAB4DLAAeAzAAHgM4AB4DQAAeA0QAHgNIAB4DUAAeA1QAHgVAAB4FSAAeBVAAHgVYAB4FZAAeBWgAHgVsAB4FcAAeBXQAHgV8AB4FhAAeBYgAHgWMAB4FlAAeBZgAHgeEAB4HjAAeB5QAHgecAB4HqAAeB6wAHgewAB4HtAAeB7gAHgfAAB4HyAAeB8wAHgfQAB4H2AAeB9wAHgnIAB4J0AAeCdgAHgngAB4J7AAeCfAAHgn0AB4J+AAeCfwAHgoEAB4KDAAeChAAHgoUAB4KHAAeCiAAHgwMAB4MFAAeDBwAHgwkAB4MMAAeDDQAHgw4AB4MPAAeDEAAHgxIAB4MUAAeDFQAHgxYAB4MYAAeDGQAHg2IAB4OGAAeDrQAHg9EAB4PUAAeD1gAHg9gAB4PaAAeD3AAHg94AB4PfAAeD4gAHg/sAB4QYAAeEGgAHhBwAB4QeAAeEIAAHhCIAB4QkAAeEJgAHhEMAB4RGAAeESQAHhEwAB4RPAAeEUgAHhFUAB4RYAAeEWgAHhNUAB4TXAAeE2QAHhNsAB4TeAAeE3wAHhOAAB4ThAAeE4gAHhOQAB4TmAAeE5wAHhOgAB4TqAAeE6wAHhWYAB4VoAAeFagAHhWwAB4VvAAeFcAAHhXEAB4VyAAeFcwAHhXUAB4V3AAeFeAAHhXkAB4V7AAeFfAAHhfcAB4X5AAeF+wAHhf0AB4YAAAeGAQAHhgIAB4YDAAeGBAAHhgYAB4YIAAeGCQAHhgoAB4YMAAeGDQAHhogAB4aKAAeGjQAHho8AB4aSAAeGkwAHhpQAB4aVAAeGlgAHhpgAB4aaAAeGmwAHhpwAB4aeAAeGnwAHhxoAB4ccAAeHHgAHhyAAB4cjAAeHJAAHhyUAB4cmAAeHJwAHhykAB4crAAeHLAAHhy0AB4cvAAeHMAAHh6sAB4etAAeHrwAHh7EAB4e0AAeHtQAHh7YAB4e3AAeHuAAHh7oAB4e8AAeHvQAHh74AB4fAAAeHwQAHiDwAB4g+AAeIQAAHiEIAB4hFAAeIRgAHiEcAB4hIAAeISQAHiEsAB4hNAAeITgAHiE8AB4hRAAeIUgAHiOUAB4kIAAeJKAAHiUgAB4lKAAeJTAAHiU4AB4lQAAeJUwAHiVQAB4lVAAeJWAAHiVkAB4lbAAeJXAAHiV4AB4lhAAeJYgAHiWMAB4lmAAeJZwAHiWwAB4mFAAeJjgAHiZAAB4mSAAeJmwAHiZ4AB4mhAAeJowAHiewAB4oQAAeKNwAHilsAB4peAAeKYAAHimIAB4pkAAeKZgAHimgAB4ppAAeKbAAHioUAB4qmAAeKqAAHiqoAB4qsAAeKrgAHirAAB4qyAAeKtAAHirYAB4rXAAeK2gAHit0AB4rgAAeK4wAHiuYAB4rpAAeK7AAHiu8AB4rxAAeLbAAHi24AB4twAAeLcgAHi3UAB4t2AAeLdwAHi3gAB4t5AAeLewAHi30AB4t+AAeLfwAHi4EAB4uCAAeL/QAHi/8AB4wBAAeMAwAHjAYAB4wHAAeMCAAHjAkAB4wKAAeMDAAHjA4AB4wPAAeMEAAHjBIAB4wTAAeMjgAHjJAAB4yTAAeMlQAHjJgAB4yZAAeMmgAHjJsAB4ycAAeMngAHjKAAB4yhAAeMogAHjKQAB4ylAAeMvgAHjL8AB4zAAAeMwgAHjT0AB40/AAeNQQAHjUMAB41GAAeNRwAHjUgAB41JAAeNSgAHjUwAB41OAAeNTwAHjVAAB41SAAeNUwAHjc4AB43QAAeN0gAHjdQAB43XAAeN2AAHjdkAB43aAAeN2wAHjd0AB43fAAeN4AAHjeEAB43jAAeN5AAHjl8AB45hAAeOYwAHjmUAB45oAAeOaQAHjmoAB45rAAeObAAHjm4AB45wAAeOcQAHjnIAB450AAeOdQAHjvAAB47yAAeO9AAHjvYAB475AAeO+gAHjvsAB478AAeO/QAHjv8AB48BAAePAgAHjwMAB48FAAePBgAHj4EAB4+DAAePhQAHj4cAB4+KAAePiwAHj4wAB4+NAAePjgAHj5AAB4+SAAePkwAHj5QAB4+WAAePlwAHj+AAB5AEAAeQKwAHkE8AB5BSAAeQVAAHkFYAB5BYAAeQWgAHkFwAB5BdAAeQYAAHkHkAB5CWAAeQmAAHkJoAB5CcAAeQngAHkKAAB5CiAAeQpAAHkMEAB5DEAAeQxwAHkMoAB5DNAAeQ0AAHkNMAB5DWAAeQ2AAHkVMAB5FVAAeRVwAHkVkAB5FcAAeRXQAHkV4AB5FfAAeRYAAHkWIAB5FkAAeRZQAHkWYAB5FoAAeRaQAHkeQAB5HmAAeR6AAHkeoAB5HtAAeR7gAHke8AB5HwAAeR8QAHkfMAB5H1AAeR9gAHkfcAB5H5AAeR+gAHknUAB5J3AAeSeQAHknsAB5J+AAeSfwAHkoAAB5KBAAeSggAHkoQAB5KGAAeShwAHkogAB5KKAAeSiwAHkwYAB5MIAAeTCwAHkw0AB5MQAAeTEQAHkxIAB5MTAAeTFAAHkxYAB5MYAAeTGQAHkxoAB5McAAeTHQAHk5gAB5OaAAeTnAAHk54AB5OhAAeTogAHk6MAB5OkAAeTpQAHk6cAB5OpAAeTqgAHk6sAB5OtAAeTrgAHlCkAB5QrAAeULQAHlC8AB5QyAAeUMwAHlDQAB5Q1AAeUNgAHlDgAB5Q6AAeUOwAHlDwAB5Q+AAeUPwAHlLoAB5S8AAeUvgAHlMAAB5TDAAeUxAAHlMUAB5TGAAeUxwAHlMkAB5TLAAeUzAAHlM0AB5TPAAeU0AAHlWMAB5WGAAeVpgAHlcYAB5XIAAeVygAHlcwAB5XOAAeV0QAHldIAB5XTAAeV1gAHldcAB5XZAAeV2gAHldwAB5XfAAeV4AAHleEAB5XkAAeV5QAHle4AB5YHAAeWEAAHlhIAB5YUAAeWHQAHliAAB5YjAAeWJQAHlm4AB5aSAAeWuQAHlt0AB5bgAAeW4gAHluQAB5bmAAeW6AAHluoAB5brAAeW7gAHlwcAB5coAAeXKgAHlywAB5cuAAeXMAAHlzIAB5c0AAeXNgAHlzgAB5dZAAeXXAAHl18AB5diAAeXZQAHl2gAB5drAAeXbgAHl3EAB5dzAAeX7gAHl/AAB5fyAAeX9AAHl/cAB5f4AAeX+QAHl/oAB5f7AAeX/QAHl/8AB5gAAAeYAQAHmAMAB5gEAAeYfwAHmIEAB5iDAAeYhQAHmIgAB5iJAAeYigAHmIsAB5iMAAeYjgAHmJAAB5iRAAeYkgAHmJQAB5iVAAeZEAAHmRIAB5kVAAeZFwAHmRoAB5kbAAeZHAAHmR0AB5keAAeZIAAHmSIAB5kjAAeZJAAHmSYAB5knAAeZQAAHmUEAB5lCAAeZRAAHmb8AB5nBAAeZwwAHmcUAB5nIAAeZyQAHmcoAB5nLAAeZzAAHmc4AB5nQAAeZ0QAHmdIAB5nUAAeZ1QAHmlAAB5pSAAeaVAAHmlYAB5pZAAeaWgAHmlsAB5pcAAeaXQAHml8AB5phAAeaYgAHmmMAB5plAAeaZgAHmuEAB5rjAAea5QAHmucAB5rqAAea6wAHmuwAB5rtAAea7gAHmvAAB5ryAAea8wAHmvQAB5r2AAea9wAHm3IAB5t0AAebdgAHm3gAB5t7AAebfAAHm30AB5t+AAebfwAHm4EAB5uDAAebhAAHm4UAB5uHAAebiAAHnAMAB5wFAAecBwAHnAkAB5wMAAecDQAHnA4AB5wPAAecEAAHnBIAB5wUAAecFQAHnBYAB5wYAAecGQAHnGIAB5yGAAecrQAHnNEAB5zUAAec1gAHnNgAB5zaAAec3AAHnN4AB5zfAAec4gAHnPsAB50YAAedGgAHnRwAB50eAAedIAAHnSIAB50kAAedJgAHnUMAB51GAAedSQAHnUwAB51PAAedUgAHnVUAB51YAAedWgAHndUAB53XAAed2QAHndsAB53eAAed3wAHneAAB53hAAed4gAHneQAB53mAAed5wAHnegAB53qAAed6wAHnmYAB55oAAeeagAHnmwAB55vAAeecAAHnnEAB55yAAeecwAHnnUAB553AAeeeAAHnnkAB557AAeefAAHnvcAB575AAee+wAHnv0AB58AAAefAQAHnwIAB58DAAefBAAHnwYAB58IAAefCQAHnwoAB58MAAefDQAHn4gAB5+KAAefjAAHn44AB5+RAAefkgAHn5MAB5+UAAeflQAHn5cAB5+ZAAefmgAHn5sAB5+dAAefngAHoBkAB6AbAAegHQAHoB8AB6AiAAegIwAHoCQAB6AlAAegJgAHoCgAB6AqAAegKwAHoCwAB6AuAAegLwAHoKoAB6CsAAegrgAHoLAAB6CzAAegtAAHoLUAB6C2AAegtwAHoLkAB6C7AAegvAAHoL0AB6C/AAegwAAHoTsAB6E9AAehPwAHoUEAB6FEAAehRQAHoUYAB6FHAAehSAAHoUoAB6FMAAehTQAHoU4AB6FQAAehUQAHoeQAB6IHAAeiJwAHokcAB6JJAAeiSwAHok0AB6JPAAeiUgAHolMAB6JUAAeiVwAHolgAB6JaAAeiWwAHol4AB6JhAAeiYgAHomMAB6JmAAeiZwAHomwAB6KFAAeijgAHopAAB6KSAAeimwAHop4AB6KhAAeiowAHouwAB6MQAAejNwAHo1sAB6NeAAejYAAHo2IAB6NkAAejZgAHo2gAB6NpAAejbAAHo4UAB6OmAAejqAAHo6oAB6OsAAejrgAHo7AAB6OyAAejtAAHo7YAB6PXAAej2gAHo90AB6PgAAej4wAHo+YAB6PpAAej7AAHo+8AB6PxAAekbAAHpG4AB6RwAAekcgAHpHUAB6R2AAekdwAHpHgAB6R5AAekewAHpH0AB6R+AAekfwAHpIEAB6SCAAek/QAHpP8AB6UBAAelAwAHpQYAB6UHAAelCAAHpQkAB6UKAAelDAAHpQ4AB6UPAAelEAAHpRIAB6UTAAeljgAHpZAAB6WTAAellQAHpZgAB6WZAAelmgAHpZsAB6WcAAelngAHpaAAB6WhAAelogAHpaQAB6WlAAelvgAHpb8AB6XAAAelwgAHpj0AB6Y/AAemQQAHpkMAB6ZGAAemRwAHpkgAB6ZJAAemSgAHpkwAB6ZOAAemTwAHplAAB6ZSAAemUwAHps4AB6bQAAem0gAHptQAB6bXAAem2AAHptkAB6baAAem2wAHpt0AB6bfAAem4AAHpuEAB6bjAAem5AAHp18AB6dhAAenYwAHp2UAB6doAAenaQAHp2oAB6drAAenbAAHp24AB6dwAAencQAHp3IAB6d0AAendQAHp/AAB6fyAAen9AAHp/YAB6f5AAen+gAHp/sAB6f8AAen/QAHp/8AB6gBAAeoAgAHqAMAB6gFAAeoBgAHqIEAB6iDAAeohQAHqIcAB6iKAAeoiwAHqIwAB6iNAAeojgAHqJAAB6iSAAeokwAHqJQAB6iWAAeolwAHqOAAB6kEAAepKwAHqU8AB6lSAAepVAAHqVYAB6lYAAepWgAHqVwAB6ldAAepYAAHqXkAB6mWAAepmAAHqZoAB6mcAAepngAHqaAAB6miAAeppAAHqcEAB6nEAAepxwAHqcoAB6nNAAep0AAHqdMAB6nWAAep2AAHqlMAB6pVAAeqVwAHqlkAB6pcAAeqXQAHql4AB6pfAAeqYAAHqmIAB6pkAAeqZQAHqmYAB6poAAeqaQAHquQAB6rmAAeq6AAHquoAB6rtAAeq7gAHqu8AB6rwAAeq8QAHqvMAB6r1AAeq9gAHqvcAB6r5AAeq+gAHq3UAB6t3AAereQAHq3sAB6t+AAerfwAHq4AAB6uBAAerggAHq4QAB6uGAAerhwAHq4gAB6uKAAeriwAHrAYAB6wIAAesCwAHrA0AB6wQAAesEQAHrBIAB6wTAAesFAAHrBYAB6wYAAesGQAHrBoAB6wcAAesHQAHrMAAB6zkAAetCAAHrSgAB61PAAetdgAHrZYAB629AAet4QAHrgQAB64rAAeuTwAHrnMAB66XAAeuvgAHrr8AB67BAAeuwwAHrsYAB67IAAeuywAHrs0AB67PAAeu0gAHrtQAB67WAAeu2QAHrtwAB67eAAeu4AAHruIAB67lAAeu6AAHrusAB67wAAevCQAHrw4AB68QAAevFQAHrxgAB68aAAevYwAHr4cAB6+uAAev0gAHr9UAB6/XAAev2QAHr9sAB6/dAAev3wAHr+AAB6/jAAev/AAHsCEAB7AjAAewJQAHsCcAB7ApAAewKwAHsC0AB7AvAAewMQAHsDMAB7BYAAewWwAHsF4AB7BhAAewZAAHsGcAB7BqAAewbQAHsHAAB7BzAAewdQAHsPAAB7DyAAew9QAHsPcAB7D6AAew+wAHsPwAB7D9AAew/gAHsQAAB7ECAAexAwAHsQQAB7EGAAexBwAHsRgAB7EZAAexGwAHsZYAB7GYAAexmgAHsZwAB7GfAAexoAAHsaEAB7GiAAexowAHsaUAB7GnAAexqAAHsakAB7GrAAexrAAHsicAB7IpAAeyLAAHsi4AB7IxAAeyMgAHsjMAB7I0AAeyNQAHsjcAB7I5AAeyOgAHsjsAB7I9AAeyPgAHsk8AB7JQAAeyUgAHss0AB7LPAAey0QAHstMAB7LWAAey1wAHstgAB7LZAAey2gAHstwAB7LeAAey3wAHsuAAB7LiAAey4wAHs14AB7NgAAezYwAHs2UAB7NoAAezaQAHs2oAB7NrAAezbAAHs24AB7NwAAezcQAHs3IAB7N0AAezdQAHs4YAB7OHAAeziQAHtAQAB7QGAAe0CAAHtAoAB7QNAAe0DgAHtA8AB7QQAAe0EQAHtBMAB7QVAAe0FgAHtBcAB7QZAAe0GgAHtJUAB7SXAAe0mgAHtJwAB7SfAAe0oAAHtKEAB7SiAAe0owAHtKUAB7SnAAe0qAAHtKkAB7SrAAe0rAAHtMUAB7TGAAe0xwAHtMkAB7VEAAe1RgAHtUgAB7VKAAe1TQAHtU4AB7VPAAe1UAAHtVEAB7VTAAe1VQAHtVYAB7VXAAe1WQAHtVoAB7XVAAe11wAHtdoAB7XcAAe13wAHteAAB7XhAAe14gAHteMAB7XlAAe15wAHtegAB7XpAAe16wAHtewAB7YCAAe2GwAHtnYAB7Z5AAe2fAAHtn8AB7aCAAe2hQAHtogAB7aLAAe2jgAHtpEAB7aUAAe2lwAHtpoAB7adAAe2oAAHtqMAB7amAAe2qQAHtqwAB7avAAe2sgAHtrUAB7a4AAe3EwAHtxYAB7cZAAe3HAAHtx8AB7ciAAe3JQAHtygAB7crAAe3LgAHtzEAB7c0AAe3NwAHtzoAB7c9AAe3QAAHt0MAB7dGAAe3SQAHt0wAB7dPAAe3UgAHt1UAB7dXAAe3bgAHt5IAB7eYAAe3pgAHt8QAB7faAAe37wAHuAUAB7gzAAe4VQAHuG4AB7iEAAe4nQAHuLMAB7jBAAe4zAAHuOoAB7j3AAe5BgAHuZkAB7m8AAe53AAHufwAB7n+AAe6AAAHugIAB7oEAAe6BwAHuggAB7oJAAe6DAAHug0AB7oPAAe6EAAHuhIAB7oVAAe6FgAHuhcAB7oaAAe6GwAHuiQAB7o9AAe6RgAHukgAB7pKAAe6UwAHulYAB7pZAAe6WwAHuqQAB7rIAAe67wAHuxMAB7sWAAe7GAAHuxoAB7scAAe7HgAHuyAAB7shAAe7JAAHuz0AB7teAAe7YAAHu2IAB7tkAAe7ZgAHu2gAB7tqAAe7bAAHu24AB7uPAAe7kgAHu5UAB7uYAAe7mwAHu54AB7uhAAe7pAAHu6cAB7upAAe8JAAHvCYAB7woAAe8KgAHvC0AB7wuAAe8LwAHvDAAB7wxAAe8MwAHvDUAB7w2AAe8NwAHvDkAB7w6AAe8tQAHvLcAB7y5AAe8uwAHvL4AB7y/AAe8wAAHvMEAB7zCAAe8xAAHvMYAB7zHAAe8yAAHvMoAB7zLAAe9RgAHvUgAB71LAAe9TQAHvVAAB71RAAe9UgAHvVMAB71UAAe9VgAHvVgAB71ZAAe9WgAHvVwAB71dAAe9dgAHvXcAB714AAe9egAHvfUAB733AAe9+QAHvfsAB73+AAe9/wAHvgAAB74BAAe+AgAHvgQAB74GAAe+BwAHvggAB74KAAe+CwAHvoYAB76IAAe+igAHvowAB76PAAe+kAAHvpEAB76SAAe+kwAHvpUAB76XAAe+mAAHvpkAB76bAAe+nAAHvxcAB78ZAAe/GwAHvx0AB78gAAe/IQAHvyIAB78jAAe/JAAHvyYAB78oAAe/KQAHvyoAB78sAAe/LQAHv6gAB7+qAAe/rAAHv64AB7+xAAe/sgAHv7MAB7+0AAe/tQAHv7cAB7+5AAe/ugAHv7sAB7+9AAe/vgAHwDkAB8A7AAfAPQAHwD8AB8BCAAfAQwAHwEQAB8BFAAfARgAHwEgAB8BKAAfASwAHwEwAB8BOAAfATwAHwJgAB8C8AAfA4wAHwQcAB8EKAAfBDAAHwQ4AB8EQAAfBEgAHwRQAB8EVAAfBGAAHwTEAB8FOAAfBUAAHwVIAB8FUAAfBVgAHwVgAB8FaAAfBXAAHwXkAB8F8AAfBfwAHwYIAB8GFAAfBiAAHwYsAB8GOAAfBkAAHwgsAB8INAAfCEAAHwhIAB8IVAAfCFgAHwhcAB8IYAAfCGQAHwhsAB8IdAAfCHgAHwh8AB8IhAAfCIgAHwp0AB8KfAAfCoQAHwqMAB8KmAAfCpwAHwqgAB8KpAAfCqgAHwqwAB8KuAAfCrwAHwrAAB8KyAAfCswAHwy4AB8MwAAfDMgAHwzQAB8M3AAfDOAAHwzkAB8M6AAfDOwAHwz0AB8M/AAfDQAAHw0EAB8NDAAfDRAAHw78AB8PBAAfDxAAHw8YAB8PJAAfDygAHw8sAB8PMAAfDzQAHw88AB8PRAAfD0gAHw9MAB8PVAAfD1gAHxFEAB8RTAAfEVQAHxFcAB8RaAAfEWwAHxFwAB8RdAAfEXgAHxGAAB8RiAAfEYwAHxGQAB8RmAAfEZwAHxOIAB8TkAAfE5gAHxOgAB8TrAAfE7AAHxO0AB8TuAAfE7wAHxPEAB8TzAAfE9AAHxPUAB8T3AAfE+AAHxXMAB8V1AAfFdwAHxXkAB8V8AAfFfQAHxX4AB8V/AAfFgAAHxYIAB8WEAAfFhQAHxYYAB8WIAAfFiQAHxhwAB8Y/AAfGXwAHxn8AB8aBAAfGgwAHxoUAB8aHAAfGigAHxosAB8aMAAfGjwAHxpAAB8aSAAfGkwAHxpUAB8aYAAfGmQAHxpoAB8adAAfGngAHxqMAB8a8AAfGxQAHxscAB8bJAAfG0gAHxtUAB8bYAAfG2gAHxyMAB8dHAAfHbgAHx5IAB8eVAAfHlwAHx5kAB8ebAAfHnQAHx58AB8egAAfHowAHx7wAB8fdAAfH3wAHx+EAB8fjAAfH5QAHx+cAB8fpAAfH6wAHx+0AB8gOAAfIEQAHyBQAB8gXAAfIGgAHyB0AB8ggAAfIIwAHyCYAB8goAAfIowAHyKUAB8inAAfIqQAHyKwAB8itAAfIrgAHyK8AB8iwAAfIsgAHyLQAB8i1AAfItgAHyLgAB8i5AAfJNAAHyTYAB8k4AAfJOgAHyT0AB8k+AAfJPwAHyUAAB8lBAAfJQwAHyUUAB8lGAAfJRwAHyUkAB8lKAAfJxQAHyccAB8nKAAfJzAAHyc8AB8nQAAfJ0QAHydIAB8nTAAfJ1QAHydcAB8nYAAfJ2QAHydsAB8ncAAfJ9QAHyfYAB8n3AAfJ+QAHynQAB8p2AAfKeAAHynoAB8p9AAfKfgAHyn8AB8qAAAfKgQAHyoMAB8qFAAfKhgAHyocAB8qJAAfKigAHywUAB8sHAAfLCQAHywsAB8sOAAfLDwAHyxAAB8sRAAfLEgAHyxQAB8sWAAfLFwAHyxgAB8saAAfLGwAHy5YAB8uYAAfLmgAHy5wAB8ufAAfLoAAHy6EAB8uiAAfLowAHy6UAB8unAAfLqAAHy6kAB8urAAfLrAAHzCcAB8wpAAfMKwAHzC0AB8wwAAfMMQAHzDIAB8wzAAfMNAAHzDYAB8w4AAfMOQAHzDoAB8w8AAfMPQAHzLgAB8y6AAfMvAAHzL4AB8zBAAfMwgAHzMMAB8zEAAfMxQAHzMcAB8zJAAfMygAHzMsAB8zNAAfMzgAHzRcAB807AAfNYgAHzYYAB82JAAfNiwAHzY0AB82PAAfNkQAHzZMAB82UAAfNlwAHzbAAB83NAAfNzwAHzdEAB83TAAfN1QAHzdcAB83ZAAfN2wAHzfgAB837AAfN/gAHzgEAB84EAAfOBwAHzgoAB84NAAfODwAHzooAB86MAAfOjwAHzpEAB86UAAfOlQAHzpYAB86XAAfOmAAHzpoAB86cAAfOnQAHzp4AB86gAAfOoQAHzxwAB88eAAfPIAAHzyIAB88lAAfPJgAHzycAB88oAAfPKQAHzysAB88tAAfPLgAHzy8AB88xAAfPMgAHz60AB8+vAAfPsgAHz7QAB8+3AAfPuAAHz7kAB8+6AAfPuwAHz70AB8+/AAfPwAAHz8EAB8/DAAfPxAAH0D8AB9BBAAfQRAAH0EYAB9BJAAfQSgAH0EsAB9BMAAfQTQAH0E8AB9BRAAfQUgAH0FMAB9BVAAfQVgAH0NEAB9DTAAfQ1QAH0NcAB9DaAAfQ2wAH0NwAB9DdAAfQ3gAH0OAAB9DiAAfQ4wAH0OQAB9DmAAfQ5wAH0WIAB9FkAAfRZgAH0Wg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AB/ShAAf0owAH9KUAB/SoAAf0qQAH9KoAB/SrAAf0rAAH9K4AB/SwAAf0sQAH9LIAB/S0AAf0tQAH9TAAB/UyAAf1NAAH9TYAB/U5AAf1OgAH9TsAB/U8AAf1PQAH9T8AB/VBAAf1QgAH9UMAB/VFAAf1RgAH9cEAB/XDAAf1xgAH9cgAB/XLAAf1zAAH9c0AB/XOAAf1zwAH9dEAB/XTAAf11AAH9dUAB/XXAAf12AAH9lMAB/ZVAAf2VwAH9lkAB/ZcAAf2XQAH9l4AB/ZfAAf2YAAH9mIAB/ZkAAf2ZQAH9mYAB/ZoAAf2aQAH9uQAB/bmAAf26AAH9uoAB/btAAf27gAH9u8AB/bwAAf28QAH9vMAB/b1AAf29gAH9vcAB/b5AAf2+gAH93UAB/d3AAf3egAH93wAB/d/AAf3gAAH94EAB/eCAAf3gwAH94UAB/eHAAf3iAAH94kAB/eLAAf3jAAH+B8AB/hCAAf4YgAH+IIAB/iEAAf4hgAH+IgAB/iKAAf4jQAH+I4AB/iPAAf4kgAH+JMAB/iVAAf4lgAH+JgAB/ibAAf4nAAH+J0AB/igAAf4oQAH+KYAB/i/AAf4yAAH+MoAB/jMAAf41QAH+NgAB/jbAAf43QAH+SYAB/lKAAf5cQAH+ZUAB/mYAAf5mgAH+ZwAB/meAAf5oAAH+aIAB/mjAAf5pgAH+b8AB/ngAAf54gAH+eQAB/nmAAf56AAH+eoAB/nsAAf57gAH+fAAB/oRAAf6FAAH+hcAB/oaAAf6HQAH+iAAB/ojAAf6JgAH+ikAB/orAAf6pgAH+qgAB/qqAAf6rAAH+q8AB/qwAAf6sQAH+rIAB/qzAAf6tQAH+rcAB/q4AAf6uQAH+rsAB/q8AAf7NwAH+zkAB/s7AAf7PQAH+0AAB/tBAAf7QgAH+0MAB/tEAAf7RgAH+0gAB/tJAAf7SgAH+0wAB/tNAAf7yAAH+8oAB/vNAAf7zwAH+9IAB/vTAAf71AAH+9UAB/vWAAf72AAH+9oAB/vbAAf73AAH+94AB/vfAAf7+AAH+/kAB/v6AAf7/AAH/HcAB/x5AAf8ewAH/H0AB/yAAAf8gQAH/IIAB/yDAAf8hAAH/IYAB/yIAAf8iQAH/IoAB/yMAAf8jQAH/QgAB/0KAAf9DAAH/Q4AB/0RAAf9EgAH/RMAB/0UAAf9FQAH/RcAB/0ZAAf9GgAH/RsAB/0dAAf9HgAH/ZkAB/2bAAf9nQAH/Z8AB/2iAAf9owAH/aQAB/2lAAf9pgAH/agAB/2qAAf9qwAH/awAB/2uAAf9rwAH/ioAB/4sAAf+LgAH/jAAB/4zAAf+NAAH/jUAB/42AAf+NwAH/jkAB/47AAf+PAAH/j0AB/4/AAf+QAAH/rsAB/69AAf+vwAH/sEAB/7EAAf+xQAH/sYAB/7HAAf+yAAH/soAB/7MAAf+zQAH/s4AB/7QAAf+0QAH/xoAB/8+AAf/ZQAH/4kAB/+MAAf/jgAH/5AAB/+SAAf/lAAH/5YAB/+XAAf/mgAH/7MAB//QAAf/0gAH/9QAB//WAAf/2AAH/9oAB//cAAf/3gAH//sAB//+AAgAAQAIAAQACAAHAAgACgAIAA0ACAAQAAgAEgAIAI0ACACPAAgAkQAIAJMACACWAAgAlwAIAJgACACZAAgAmgAIAJwACACeAAgAnwAIAKAACACiAAgAowAIAR4ACAEgAAgBIgAIASQACAEnAAgBKAAIASkACAEqAAgBKwAIAS0ACAEvAAgBMAAIATEACAEzAAgBNAAIAa8ACAGxAAgBswAIAbUACAG4AAgBuQAIAboACAG7AAgBvAAIAb4ACAHAAAgBwQAIAcIACAHEAAgBxQAIAkAACAJCAAgCRQAIAkcACAJKAAgCSwAIAkwACAJNAAgCTgAIAlAACAJSAAgCUwAIAlQACAJWAAgCVwAIAtIACALUAAgC1gAIAtgACALbAAgC3AAIAt0ACALeAAgC3wAIAuEACALjAAgC5AAIAuUACALnAAgC6AAIA2MACANlAAgDZwAIA2kACANsAAgDbQAIA24ACANvAAgDcAAIA3IACAN0AAgDdQAIA3YACAN4AAgDeQAIA/QACAP2AAgD+AAIA/oACAP9AAgD/gAIA/8ACAQAAAgEAQAIBAMACAQFAAgEBgAIBAcACAQJAAgECgAIBJ0ACATAAAgE4AAIBQAACAUCAAgFBAAIBQYACAUIAAgFCwAIBQwACAUNAAgFEAAIBREACAUTAAgFFAAIBRcACAUaAAgFGwAIBRwACAUfAAgFIAAIBSUACAU+AAgFRwAIBUkACAVLAAgFVAAIBVcACAVaAAgFXAAIBaUACAXJAAgF8AAIBhQACAYXAAgGGQAIBhsACAYdAAgGHwAIBiEACAYiAAgGJQAIBj4ACAZfAAgGYQAIBmMACAZlAAgGZwAIBmkACAZrAAgGbQAIBm8ACAaQAAgGkwAIBpYACAaZAAgGnAAIBp8ACAaiAAgGpQAIBqgACAaqAAgHJQAIBycACAcpAAgHKwAIBy4ACAcvAAgHMAAIBzEACAcyAAgHNAAIBzYACAc3AAgHOAAIBzoACAc7AAgHtgAIB7gACAe6AAgHvAAIB78ACAfAAAgHwQAIB8IACAfDAAgHxQAIB8cACAfIAAgHyQAIB8sACAfMAAgIRwAICEkACAhMAAgITgAICFEACAhSAAgIUwAICFQACAhVAAgIVwAICFkACAhaAAgIWwAICF0ACAheAAgIdwAICHgACAh5AAgIewAICPYACAj4AAgI+gAICPwACAj/AAgJAAAICQEACAkCAAgJAwAICQUACAkHAAgJCAAICQkACAkLAAgJDAAICYcACAmJAAgJiwAICY0ACAmQAAgJkQAICZIACAmTAAgJlAAICZYACAmYAAgJmQAICZoACAmcAAgJnQAIChgACAoaAAgKHAAICh4ACAohAAgKIgAICiMACAokAAgKJQAICicACAopAAgKKgAICisACAotAAgKLgAICqkACAqrAAgKrQAICq8ACAqyAAgKswAICrQACAq1AAgKtgAICrgACAq6AAgKuwAICrwACAq+AAgKvwAICzoACAs8AAgLPgAIC0AACAtDAAgLRAAIC0UACAtGAAgLRwAIC0kACAtLAAgLTAAIC00ACAtPAAgLUAAIC5kACAu9AAgL5AAIDAgACAwLAAgMDQAIDA8ACAwRAAgMEwAIDBUACAwWAAgMGQAIDDIACAxPAAgMUQAIDFMACAxVAAgMVwAIDFkACAxbAAgMXQAIDHoACAx9AAgMgAAIDIMACAyGAAgMiQAIDIwACAyPAAgMkQAIDQwACA0OAAgNEAAIDRIACA0VAAgNFgAIDRcACA0YAAgNGQAIDRsACA0dAAgNHgAIDR8ACA0hAAgNIgAIDZ0ACA2fAAgNogAIDaQACA2nAAgNqAAIDakACA2qAAgNqwAIDa0ACA2vAAgNsAAIDbEACA2zAAgNtAAIDi8ACA4xAAgOMwAIDjUACA44AAgOOQAIDjoACA47AAgOPAAIDj4ACA5AAAgOQQAIDkIACA5EAAgORQAIDsAACA7CAAgOxQAIDscACA7KAAgOywAIDswACA7NAAgOzgAIDtAACA7SAAgO0wAIDtQACA7WAAgO1wAID1oACA9+AAgPogAID8UACA/sAAgQDAAIEDMACBBaAAgQegAIEJ4ACBDCAAgQxAAIEMcACBDJAAgQywAIEM0ACBDQAAgQ0wAIENUACBDXAAgQ2gAIENwACBDeAAgQ4QAIEOQACBDlAAgQ7gAIEQcACBEMAAgRDgAIERMACBEWAAgRGAAIEWEACBGFAAgRrAAIEdAACBHTAAgR1QAIEdcACBHZAAgR2wAIEd0ACBHeAAgR4QAIEfoACBIfAAgSIQAIEiMACBIlAAgSJwAIEikACBIrAAgSLQAIEi8ACBIxAAgSVgAIElkACBJcAAgSXwAIEmIACBJlAAgSaAAIEmsACBJuAAgScQAIEnMACBLuAAgS8AAIEvMACBL1AAgS+AAIEvkACBL6AAgS+wAIEvwACBL+AAgTAAAIEwEACBMCAAgTBAAIEwUACBMWAAgTFwAIExkACBOUAAgTlgAIE5gACBOaAAgTnQAIE54ACBOfAAgToAAIE6EACBOjAAgTpQAIE6YACBOnAAgTqQAIE6oACBQlAAgUJwAIFCoACBQsAAgULwAIFDAACBQxAAgUMgAIFDMACBQ1AAgUNwAIFDgACBQ5AAgUOwAIFDwACBRNAAgUTgAIFFAACBTLAAgUzQAIFM8ACBTRAAgU1AAIFNUACBTWAAgU1wAIFNgACBTaAAgU3AAIFN0ACBTeAAgU4AAIFOEACBVcAAgVXgAIFWEACBVjAAgVZgAIFWcACBVoAAgVaQAIFWoACBVsAAgVbgAIFW8ACBVwAAgVcgAIFXMACBWEAAgVhQAIFYcACBYCAAgWBAAIFgYACBYIAAgWCwAIFgwACBYNAAgWDgAIFg8ACBYRAAgWEwAIFhQACBYVAAgWFwAIFhgACBaTAAgWlQAIFpgACBaaAAgWnQAIFp4ACBafAAgWoAAIFqEACBajAAgWpQAIFqYACBanAAgWqQAIFqoACBbDAAgWxAAIFsUACBbHAAgXQgAIF0QACBdGAAgXSAAIF0sACBdMAAgXTQAIF04ACBdPAAgXUQAIF1MACBdUAAgXVQAIF1cACBdYAAgX0wAIF9UACBfYAAgX2gAIF90ACBfeAAgX3wAIF+AACBfhAAgX4wAIF+UACBfmAAgX5wAIF+kACBfqAAgYBwAIGCAACBhBAAgYRAAIGEcACBhKAAgYTQAIGFAACBhTAAgYVgAIGFkACBh6AAgYfQAIGIAACBiDAAgYhgAIGIkACBiMAAgYjwAIGJIACBiUAAgYpwAIGL4ACBjXAAgY6QAIGPgACBkPAAgZJwAIGboACBndAAgZ/QAIGh0ACBofAAgaIQAIGiMACBolAAgaKAAIGikACBoqAAgaLQAIGi4ACBowAAgaMQAIGjMACBo2AAgaNwAIGjgACBo7AAgaPAAIGkEACBpaAAgaYwAIGmUACBpnAAgacAAIGnMACBp2AAgaeAAIGsEACBrlAAgbDAAIGzAACBszAAgbNQAIGzcACBs5AAgbOwAIGz0ACBs+AAgbQQAIG1oACBt7AAgbfQAIG38ACBuBAAgbgwAIG4UACBuHAAgbiQAIG4sACBusAAgbrwAIG7IACBu1AAgbuAAIG7sACBu+AAgbwQAIG8QACBvGAAgcQQAIHEMACBxFAAgcRwAIHEoACBxLAAgcTAAIHE0ACBxOAAgcUAAIHFIACBxTAAgcVAAIHFYACBxXAAgc0gAIHNQACBzWAAgc2AAIHNsACBzcAAgc3QAIHN4ACBzfAAgc4QAIHOMACBzkAAgc5QAIHOcACBzoAAgdYwAIHWUACB1oAAgdagAIHW0ACB1uAAgdbwAIHXAACB1xAAgdcwAIHXUACB12AAgddwAIHXkACB16AAgdkwAIHZQACB2VAAgdlwAIHhIACB4UAAgeFgAIHhgACB4bAAgeHAAIHh0ACB4eAAgeHwAIHiEACB4jAAgeJAAIHiUACB4nAAgeKAAIHqMACB6lAAgepwAIHqkACB6sAAgerQAIHq4ACB6vAAgesAAIHrIACB60AAgetQAIHrYACB64AAgeuQAIHzQACB82AAgfOAAIHzoACB89AAgfPgAIHz8ACB9AAAgfQQAIH0MACB9FAAgfRgAIH0cACB9JAAgfSgAIH8UACB/HAAgfyQAIH8sACB/OAAgfzwAIH9AACB/RAAgf0gAIH9QACB/WAAgf1wAIH9gACB/aAAgf2wAIIFYACCBYAAggWgAIIFwACCBfAAggYAAIIGEACCBiAAggYwAIIGUACCBnAAggaAAIIGkACCBrAAggbAAIILUACCDZAAghAAAIISQACCEnAAghKQAIISsACCEtAAghLwAIITEACCEyAAghNQAIIU4ACCFrAAghbQAIIW8ACCFxAAghcwAIIXUACCF3AAgheQAIIZYACCGZAAghnAAIIZ8ACCGiAAghpQAIIagACCGrAAghrQAIIigACCIqAAgiLAAIIi4ACCIxAAgiMgAIIjMACCI0AAgiNQAIIjcACCI5AAgiOgAIIjsACCI9AAgiPgAIIrkACCK7AAgivQAIIr8ACCLCAAgiwwAIIsQACCLFAAgixgAIIsgACCLKAAgiywAIIswACCLOAAgizwAII0oACCNMAAgjTgAII1AACCNTAAgjVAAII1UACCNWAAgjVwAII1kACCNbAAgjXAAII10ACCNfAAgjYAAII9sACCPdAAgj3wAII+EACCPkAAgj5QAII+YACCPnAAgj6AAII+oACCPsAAgj7QAII+4ACCPwAAgj8QAIJGwACCRuAAgkcAAIJHIACCR1AAgkdgAIJHcACCR4AAgkeQAIJHsACCR9AAgkfgAIJH8ACCSBAAgkggAIJP0ACCT/AAglAQAIJQMACCUGAAglBwAIJQgACCUJAAglCgAIJQwACCUOAAglDwAIJRAACCUSAAglEwAIJY4ACCWQAAglkgAIJZQACCWXAAglmAAIJZkACCWaAAglmwAIJZ0ACCWfAAgloAAIJaEACCWjAAglpAAIJjcACCZaAAgmegAIJpoACCacAAgmngAIJqAACCaiAAgmpQAIJqYACCanAAgmqgAIJqsACCatAAgmrgAIJrAACCazAAgmtAAIJrUACCa4AAgmuQAIJr4ACCbXAAgm4AAIJuIACCbkAAgm7QAIJvAACCbzAAgm9QAIJz4ACCdiAAgniQAIJ60ACCewAAgnsgAIJ7QACCe2AAgnuAAIJ7oACCe7AAgnvgAIJ9cACCf4AAgn+gAIJ/wACCf+AAgoAAAIKAIACCgEAAgoBgAIKAgACCgpAAgoLAAIKC8ACCgyAAgoNQAIKDgACCg7AAgoPgAIKEEACChDAAgovgAIKMAACCjCAAgoxAAIKMcACCjIAAgoyQAIKMoACCjLAAgozQAIKM8ACCjQAAgo0QAIKNMACCjUAAgpTwAIKVEACClTAAgpVQAIKVgACClZAAgpWgAIKVsACClcAAgpXgAIKWAACClhAAgpYgAIKWQACCllAAgp4AAIKeIACCnlAAgp5wAIKeoACCnrAAgp7AAIKe0ACCnuAAgp8AAIKfIACCnzAAgp9AAIKfYACCn3AAgqEAAIKhEACCoSAAgqFAAIKo8ACCqRAAgqkwAIKpUACCqYAAgqmQAIKpoACCqbAAgqnAAIKp4ACCqgAAgqoQAIKqIACCqkAAgqpQAIKyAACCsiAAgrJAAIKyYACCspAAgrKgAIKysACCssAAgrLQAIKy8ACCsxAAgrMgAIKzMACCs1AAgrNgAIK7EACCuzAAgrtQAIK7cACCu6AAgruwAIK7wACCu9AAgrvgAIK8AACCvCAAgrwwAIK8QACCvGAAgrxwAILEIACCxEAAgsRgAILEgACCxLAAgsTAAILE0ACCxOAAgsTwAILFEACCxTAAgsVAAILFUACCxXAAgsWAAILNMACCzVAAgs1wAILNkACCzcAAgs3QAILN4ACCzfAAgs4AAILOIACCzkAAgs5QAILOYACCzoAAgs6QAILTIACC1WAAgtfQAILaEACC2kAAgtpgAILagACC2qAAgtrAAILa4ACC2vAAgtsgAILcsACC3oAAgt6gAILewACC3uAAgt8AAILfIACC30AAgt9gAILhMACC4WAAguGQAILhwACC4fAAguIgAILiUACC4oAAguKgAILqUACC6nAAguqgAILqwACC6vAAgusAAILrEACC6yAAguswAILrUACC63AAguuAAILrkACC67AAguvAAILzcACC85AAgvOwAILz0ACC9AAAgvQQAIL0IACC9DAAgvRAAIL0YACC9IAAgvSQAIL0oACC9MAAgvTQAIL8gACC/KAAgvzAAIL84ACC/RAAgv0gAIL9MACC/UAAgv1QAIL9cACC/ZAAgv2gAIL9sACC/dAAgv3gAIMFkACDBbAAgwXgAIMGAACDBjAAgwZAAIMGUACDBmAAgwZwAIMGkACDBrAAgwbAAIMG0ACDBvAAgwcAAIMOsACDDtAAgw7wAIMPEACDD0AAgw9QAIMPYACDD3AAgw+AAIMPoACDD8AAgw/QAIMP4ACDEAAAgxAQAIMXwACDF+AAgxgAAIMYIACDGFAAgxhgAIMYcACDGIAAgxiQAIMYsACDGNAAgxjgAIMY8ACDGRAAgxkgAIMg0ACDIPAAgyEQAIMhMACDIWAAgyFwAIMhgACDIZAAgyGgAIMhwACDIeAAgyHwAIMiAACDIiAAgyIwAIMrYACDLZAAgy+QAIMxkACDMbAAgzHQAIMx8ACDMhAAgzJAAIMyUACDMmAAgzKQAIMyoACDMsAAgzLQAIMy8ACDMyAAgzMwAIMzQACDM3AAgzOAAIM0EACDNaAAgzYwAIM2UACDNnAAgzcAAIM3MACDN2AAgzeAAIM8EACDPlAAg0DAAINDAACDQzAAg0NQAINDcACDQ5AAg0OwAIND0ACDQ+AAg0QQAINFoACDR7AAg0fQAINH8ACDSBAAg0gwAINIUACDSHAAg0iQAINIsACDSsAAg0rwAINLIACDS1AAg0uAAINLsACDS+AAg0wQAINMQACDTGAAg1QQAINUMACDVFAAg1RwAINUoACDVLAAg1TAAINU0ACDVOAAg1UAAINVIACDVTAAg1VAAINVYACDVXAAg10gAINdQACDXWAAg12AAINdsACDXcAAg13QAINd4ACDXfAAg14QAINeMACDXkAAg15QAINecACDXoAAg2YwAINmUACDZoAAg2agAINm0ACDZuAAg2bwAINnAACDZxAAg2cwAINnUACDZ2AAg2dwAINnkACDZ6AAg2kwAINpQACDaVAAg2lwAINxIACDcUAAg3FgAINxgACDcbAAg3HAAINx0ACDceAAg3HwAINyEACDcjAAg3JAAINyUACDcnAAg3KAAIN6MACDelAAg3pwAIN6kACDesAAg3rQAIN64ACDevAAg3sAAIN7IACDe0AAg3tQAIN7YACDe4AAg3uQAIODQACDg2AAg4OAAIODoACDg9AAg4PgAIOD8ACDhAAAg4QQAIOEMACDhFAAg4RgAIOEcACDhJAAg4SgAIOMUACDjHAAg4yQAIOMsACDjOAAg4zwAIONAACDjRAAg40gAIONQACDjWAAg41wAIONgACDjaAAg42wAIOVYACDlYAAg5WgAIOVwACDlfAAg5YAAIOWEACDliAAg5YwAIOWUACDlnAAg5aAAIOWkACDlrAAg5bAAIObUACDnZAAg6AAAIOiQACDonAAg6KQAIOisACDotAAg6LwAIOjEACDoyAAg6NQAIOk4ACDprAAg6bQAIOm8ACDpxAAg6cwAIOnUACDp3AAg6eQAIOpYACDqZAAg6nAAIOp8ACDqiAAg6pQAIOqgACDqrAAg6rQAIOygACDsqAAg7LAAIOy4ACDsxAAg7MgAIOzMACDs0AAg7NQAIOzcACDs5AAg7OgAIOzsACDs9AAg7PgAIO7kACDu7AAg7vQAIO78ACDvCAAg7wwAIO8QACDvFAAg7xgAIO8gACDvKAAg7ywAIO8wACDvOAAg7zwAIPEoACDxMAAg8TgAIPFAACDxTAAg8VAAIPFUACDxWAAg8VwAIPFkACDxbAAg8XAAIPF0ACDxfAAg8YAAIPNsACDzdAAg84AAIPOIACDzlAAg85gAIPOcACDzoAAg86QAIPOsACDztAAg87gAIPO8ACDzxAAg88gAIPW0ACD1vAAg9cQAIPXMACD12AAg9dwAIPXgACD15AAg9egAIPXwACD1+AAg9fwAIPYAACD2CAAg9gwAIPf4ACD4AAAg+AgAIPgQACD4HAAg+CAAIPgkACD4KAAg+CwAIPg0ACD4PAAg+EAAIPhEACD4TAAg+FAAIPo8ACD6RAAg+kwAIPpUACD6YAAg+mQAIPpoACD6bAAg+nAAIPp4ACD6gAAg+oQAIPqIACD6kAAg+pQAIPzgACD9bAAg/ewAIP5sACD+dAAg/nwAIP6EACD+jAAg/pgAIP6cACD+oAAg/qwAIP6wACD+uAAg/rwAIP7EACD+0AAg/tQAIP7YACD+5AAg/ugAIP78ACD/YAAg/4QAIP+MACD/lAAg/7gAIP/EACD/0AAg/9gAIQD8ACEBjAAhAigAIQK4ACECxAAhAswAIQLUACEC3AAhAuQAIQLsACEC8AAhAvwAIQNgACED5AAhA+wAIQP0ACED/AAhBAQAIQQMACEEFAAhBBwAIQQkACEEqAAhBLQAIQTAACEEzAAhBNgAIQTkACEE8AAhBPwAIQUIACEFEAAhBvwAIQcEACEHDAAhBxQAIQcgACEHJAAhBygAIQcsACEHMAAhBzgAIQdAACEHRAAhB0gAIQdQACEHVAAhCUAAIQlIACEJUAAhCVgAIQlkACEJaAAhCWwAIQlwACEJdAAhCXwAIQmEACEJiAAhCYwAIQmUACEJmAAhC4QAIQuMACELmAAhC6AAIQusACELsAAhC7QAIQu4ACELvAAhC8QAIQvMACEL0AAhC9QAIQvcACEL4AAhDEQAIQxIACEMTAAhDFQAIQ5AACEOSAAhDlAAIQ5YACEOZAAhDmgAIQ5sACEOcAAhDnQAIQ58ACEOhAAhDogAIQ6MACEOlAAhDpgAIRCEACEQjAAhEJQAIRCcACEQqAAhEKwAIRCwACEQtAAhELgAIRDAACEQyAAhEMwAIRDQACEQ2AAhENwAIRLIACES0AAhEtgAIRLgACES7AAhEvAAIRL0ACES+AAhEvwAIRMEACETDAAhExAAIRMUACETHAAhEyAAIRUMACEVFAAhFRwAIRUkACEVMAAhFTQAIRU4ACEVPAAhFUAAIRVIACEVUAAhFVQAIRVYACEVYAAhFWQAIRdQACEXWAAhF2AAIRdoACEXdAAhF3gAIRd8ACEXgAAhF4QAIReMACEXlAAhF5gAIRecACEXpAAhF6gAIRjMACEZXAAhGfgAIRqIACEalAAhGpwAIRqkACEarAAhGrQAIRq8ACEawAAhGswAIRswACEbpAAhG6wAIRu0ACEbvAAhG8QAIRvMACEb1AAhG9wAIRxQACEcXAAhHGgAIRx0ACEcgAAhHIwAIRyYACEcpAAhHKwAIR6YACEeoAAhHqgAIR6wACEevAAhHsAAIR7EACEeyAAhHswAIR7UACEe3AAhHuAAIR7kACEe7AAhHvAAISDcACEg5AAhIOwAISD0ACEhAAAhIQQAISEIACEhDAAhIRAAISEYACEhIAAhISQAISEoACEhMAAhITQAISMgACEjKAAhIzAAISM4ACEjRAAhI0gAISNMACEjUAAhI1QAISNcACEjZAAhI2gAISNsACEjdAAhI3gAISVkACElbAAhJXgAISWAACEljAAhJZAAISWUACElmAAhJZwAISWkACElrAAhJbAAISW0ACElvAAhJcAAISesACEntAAhJ7wAISfEACEn0AAhJ9QAISfYACEn3AAhJ+AAISfoACEn8AAhJ/QAISf4ACEoAAAhKAQAISnwACEp+AAhKgAAISoIACEqFAAhKhgAISocACEqIAAhKiQAISosACEqNAAhKjgAISo8ACEqRAAhKkgAISw0ACEsPAAhLEQAISxMACEsWAAhLFwAISxgACEsZAAhLGgAISxwACEseAAhLHwAISyAACEsiAAhLIwAIS7YACEvZAAhL+QAITBkACEwbAAhMHQAITB8ACEwhAAhMJAAITCUACEwmAAhMKQAITCoACEwsAAhMLQAITC8ACEwyAAhMMwAITDQACEw3AAhMOAAITD0ACExWAAhMXwAITGEACExjAAhMbAAITG8ACExyAAhMdAAITL0ACEzhAAhNCAAITSwACE0vAAhNMQAITTMACE01AAhNNwAITTkACE06AAhNPQAITVYACE13AAhNeQAITXsACE19AAhNfwAITYEACE2DAAhNhQAITYcACE2oAAhNqwAITa4ACE2xAAhNtAAITbcACE26AAhNvQAITcAACE3CAAhOPQAITj8ACE5BAAhOQwAITkYACE5HAAhOSAAITkkACE5KAAhOTAAITk4ACE5PAAhOUAAITlIACE5TAAhOzgAITtAACE7SAAhO1AAITtcACE7YAAhO2QAITtoACE7bAAhO3QAITt8ACE7gAAhO4QAITuMACE7kAAhPXwAIT2EACE9kAAhPZgAIT2kACE9qAAhPawAIT2wACE9tAAhPbwAIT3EACE9yAAhPcwAIT3UACE92AAhPjwAIT5AACE+RAAhPkwAIUA4ACFAQAAhQEgAIUBQACFAXAAhQGAAIUBkACFAaAAhQGwAIUB0ACFAfAAhQIAAIUCEACFAjAAhQJAAIUJ8ACFChAAhQowAIUKUACFCoAAhQqQAIUKoACFCrAAhQrAAIUK4ACFCwAAhQsQAIULIACFC0AAhQtQAIUTAACFEyAAhRNAAIUTYACFE5AAhROgAIUTsACFE8AAhRPQAIUT8ACFFBAAhRQgAIUUMACFFFAAhRRgAIUcEACFHDAAhRxQAIUccACFHKAAhRywAIUcwACFHNAAhRzgAIUdAACFHSAAhR0wAIUdQACFHWAAhR1wAIUlIACFJUAAhSVgAIUlgACFJbAAhSXAAIUl0ACFJeAAhSXwAIUmEACFJjAAhSZAAIUmUACFJnAAhSaAAIUrEACFLVAAhS/AAIUyAACFMjAAhTJQAIUycACFMpAAhTKwAIUy0ACFMuAAhTMQAIU0oACFNnAAhTaQAIU2sACFNtAAhTbwAIU3EACFNzAAhTdQAIU5IACFOVAAhTmAAIU5sACFOeAAhToQAIU6QACFOnAAhTqQAIVCQACFQmAAhUKQAIVCsACFQuAAhULwAIVDAACFQxAAhUMgAIVDQACFQ2AAhUNwAIVDgACFQ6AAhUOwAIVLYACFS4AAhUugAIVLwACFS/AAhUwAAIVMEACFTCAAhUwwAIVMUACFTHAAhUyAAIVMkACFTLAAhUzAAIVUcACFVJAAhVSwAIVU0ACFVQAAhVUQAIVVIACFVTAAhVVAAIVVYACFVYAAhVWQAIVVoACFVcAAhVXQAIVdgACFXaAAhV3QAIVd8ACFXiAAhV4wAIVeQACFXlAAhV5gAIVegACFXqAAhV6wAIVewACFXuAAhV7wAIVmoACFZsAAhWbgAIVnAACFZzAAhWdAAIVnUACFZ2AAhWdwAIVnkACFZ7AAhWfAAIVn0ACFZ/AAhWgAAIVvsACFb9AAhW/wAIVwEACFcEAAhXBQAIVwYACFcHAAhXCAAIVwoACFcMAAhXDQAIVw4ACFcQAAhXEQAIV4wACFeOAAhXkAAIV5IACFeVAAhXlgAIV5cACFeYAAhXmQAIV5sACFedAAhXngAIV58ACFehAAhXogAIWDUACFhYAAhYeAAIWJgACFiaAAhYnAAIWJ4ACFigAAhYowAIWKQACFilAAhYqAAIWKkACFirAAhYrAAIWK4ACFixAAhYsgAIWLMACFi2AAhYtwAIWLwACFjVAAhY3gAIWOAACFjiAAhY6wAIWO4ACFjxAAhY8wAIWTwACFlgAAhZhwAIWasACFmuAAhZsAAIWbIACFm0AAhZtgAIWbgACFm5AAhZvAAIWdUACFn2AAhZ+AAIWfoACFn8AAhZ/gAIWgAACFoCAAhaBAAIWgYACFonAAhaKgAIWi0ACFowAAhaMwAIWjYACFo5AAhaPAAIWj8ACFpBAAhavAAIWr4ACFrAAAhawgAIWsUACFrGAAhaxwAIWsgACFrJAAhaywAIWs0ACFrOAAhazwAIWtEACFrSAAhbTQAIW08ACFtRAAhbUwAIW1YACFtXAAhbWAAIW1kACFtaAAhbXAAIW14ACFtfAAhbYAAIW2IACFtjAAhb3gAIW+AACFvjAAhb5QAIW+gACFvpAAhb6gAIW+sACFvsAAhb7gAIW/AACFvxAAhb8gAIW/QACFv1AAhcDgAIXA8ACFwQAAhcEgAIXI0ACFyPAAhckQAIXJMACFyWAAhclwAIXJgACFyZAAhcmgAIXJwACFyeAAhcnwAIXKAACFyiAAhcowAIXR4ACF0gAAhdIgAIXSQACF0nAAhdKAAIXSkACF0qAAhdKwAIXS0ACF0vAAhdMAAIXTEACF0zAAhdNAAIXa8ACF2xAAhdswAIXbUACF24AAhduQAIXboACF27AAhdvAAIXb4ACF3AAAhdwQAIXcIACF3EAAhdxQAIXkAACF5CAAheRAAIXkYACF5JAAheSgAIXksACF5MAAheTQAIXk8ACF5RAAheUgAIXlMACF5VAAheVgAIXtEACF7TAAhe1QAIXtcACF7aAAhe2wAIXtwACF7dAAhe3gAIXuAACF7iAAhe4wAIXuQACF7mAAhe5wAIXzAACF9UAAhfewAIX58ACF+iAAhfpAAIX6YACF+oAAhfqgAIX6wACF+tAAhfsAAIX8kACF/mAAhf6AAIX+oACF/sAAhf7gAIX/AACF/yAAhf9AAIYBEACGAUAAhgFwAIYBoACGAdAAhgIAAIYCMACGAmAAhgKAAIYKMACGClAAhgpwAIYKkACGCsAAhgrQAIYK4ACGCvAAhgsAAIYLIACGC0AAhgtQAIYLYACGC4AAhguQAIYTQACGE2AAhhOAAIYToACGE9AAhhPgAIYT8ACGFAAAhhQQAIYUMACGFFAAhhRgAIYUcACGFJAAhhSgAIYcUACGHHAAhhyQAIYcsACGHOAAhhzwAIYdAACGHRAAhh0gAIYdQACGHWAAhh1wAIYdgACGHaAAhh2wAIYlYACGJYAAhiWgAIYlwACGJfAAhiYAAIYmEACGJiAAhiYwAIYmUACGJnAAhiaAAIYmkACGJrAAhibAAIYucACGLpAAhi6wAIYu0ACGLwAAhi8QAIYvIACGLzAAhi9AAIYvYACGL4AAhi+QAIYvoACGL8AAhi/QAIY3gACGN6AAhjfAAIY34ACGOBAAhjggAIY4MACGOEAAhjhQAIY4cACGOJAAhjigAIY4sACGONAAhjjgAIZAkACGQLAAhkDQAIZA8ACGQSAAhkEwAIZBQACGQVAAhkFgAIZBgACGQaAAhkGwAIZBwACGQeAAhkHwAIZLIACGTVAAhk9QAIZRUACGUXAAhlGQAIZRsACGUdAAhlIAAIZSEACGUiAAhlJQAIZSYACGUoAAhlKQAIZSwACGUvAAhlMAAIZTEACGU0AAhlNQAIZToACGVTAAhlXAAIZV4ACGVgAAhlaQAIZWwACGVvAAhlcQAIZboACGXeAAhmBQAIZikACGYsAAhmLgAIZjAACGYyAAhmNAAIZjYACGY3AAhmOgAIZlMACGZ0AAhmdgAIZngACGZ6AAhmfAAIZn4ACGaAAAhmggAIZoQACGalAAhmqAAIZqsACGauAAhmsQAIZrQACGa3AAhmugAIZr0ACGa/AAhnOgAIZzwACGc+AAhnQAAIZ0MACGdEAAhnRQAIZ0YACGdHAAhnSQAIZ0sACGdMAAhnTQAIZ08ACGdQAAhnywAIZ80ACGfPAAhn0QAIZ9QACGfVAAhn1gAIZ9cACGfYAAhn2gAIZ9wACGfdAAhn3gAIZ+AACGfhAAhoXAAIaF4ACGhhAAhoYwAIaGYACGhnAAhoaAAIaGkACGhqAAhobAAIaG4ACGhvAAhocAAIaHIACGhzAAhojAAIaI0ACGiOAAhokAAIaQsACGkNAAhpDwAIaREACGkUAAhpFQAIaRYACGkXAAhpGAAIaRoACGkcAAhpHQAIaR4ACGkgAAhpIQAIaZwACGmeAAhpoAAIaaIACGmlAAhppgAIaacACGmoAAhpqQAIaasACGmtAAhprgAIaa8ACGmxAAhpsgAIai0ACGovAAhqMQAIajMACGo2AAhqNwAIajgACGo5AAhqOgAIajwACGo+AAhqPwAIakAACGpCAAhqQwAIar4ACGrAAAhqwgAIasQACGrHAAhqyAAIaskACGrKAAhqywAIas0ACGrPAAhq0AAIatEACGrTAAhq1AAIa08ACGtRAAhrUwAIa1UACGtYAAhrWQAIa1oACGtbAAhrXAAIa14ACGtgAAhrYQAIa2IACGtkAAhrZQAIa64ACGvSAAhr+QAIbB0ACGwgAAhsIgAIbCQACGwmAAhsKAAIbCoACGwrAAhsLgAIbEcACGxkAAhsZgAIbGgACGxqAAhsbAAIbG4ACGxwAAhscgAIbI8ACGySAAhslQAIbJgACGybAAhsngAIbKEACGykAAhspgAIbSEACG0jAAhtJQAIbScACG0qAAhtKwAIbSwACG0tAAhtLgAIbTAACG0yAAhtMwAIbTQACG02AAhtNwAIbbIACG20AAhttgAIbbgACG27AAhtvAAIbb0ACG2+AAhtvwAIbcEACG3DAAhtxAAIbcUACG3HAAhtyAAIbkMACG5FAAhuRwAIbkkACG5MAAhuTQAIbk4ACG5PAAhuUAAIblIACG5UAAhuVQAIblYACG5YAAhuWQAIbtQACG7WAAhu2QAIbtsACG7eAAhu3wAIbuAACG7hAAhu4gAIbuQACG7mAAhu5wAIbugACG7qAAhu6wAIb2YACG9oAAhvagAIb2wACG9vAAhvcAAIb3EACG9yAAhvcwAIb3UACG93AAhveAAIb3kACG97AAhvfAAIb/cACG/5AAhv+wAIb/0ACHAAAAhwAQAIcAIACHADAAhwBAAIcAYACHAIAAhwCQAIcAoACHAMAAhwDQAIcIgACHCKAAhwjQAIcI8ACHCSAAhwkwAIcJQACHCVAAhwlgAIcJgACHCaAAhwmwAIcJwACHCeAAhwnwAIcTIACHFVAAhxdQAIcZUACHGXAAhxmQAIcZsACHGdAAhxoAAIcaEACHGiAAhxpQAIcaYACHGoAAhxqQAIcasACHGuAAhxrwAIcbAACHGzAAhxtAAIcbkACHHSAAhx2wAIcd0ACHHfAAhx6AAIcesACHHuAAhx8AAIcjkACHJdAAhyhAAIcqgACHKrAAhyrQAIcq8ACHKxAAhyswAIcrUACHK2AAhyuQAIctIACHLzAAhy9QAIcvcACHL5AAhy+wAIcv0ACHL/AAhzAQAIcwMACHMkAAhzJwAIcyoACHMtAAhzMAAIczMACHM2AAhzOQAIczwACHM+AAhzuQAIc7sACHO9AAhzvwAIc8IACHPDAAhzxAAIc8UACHPGAAhzyAAIc8oACHPLAAhzzAAIc84ACHPPAAh0SgAIdEwACHROAAh0UAAIdFMACHRUAAh0VQAIdFYACHRXAAh0WQAIdFsACHRcAAh0XQAIdF8ACHRgAAh02wAIdN0ACHTgAAh04gAIdOUACHTmAAh05wAIdOgACHTpAAh06wAIdO0ACHTuAAh07wAIdPEACHTyAAh1CwAIdQwACHUNAAh1DwAIdYoACHWMAAh1jgAIdZAACHWTAAh1lAAIdZUACHWWAAh1lwAIdZkACHWbAAh1nAAIdZ0ACHWfAAh1oAAIdhsACHYdAAh2HwAIdiEACHYkAAh2JQAIdiYACHYnAAh2KAAIdioACHYsAAh2LQAIdi4ACHYwAAh2MQAIdqwACHauAAh2sAAIdrIACHa1AAh2tgAIdrcACHa4AAh2uQAIdrsACHa9AAh2vgAIdr8ACHbBAAh2wgAIdz0ACHc/AAh3QQAId0MACHdGAAh3RwAId0gACHdJAAh3SgAId0wACHdOAAh3TwAId1AACHdSAAh3UwAId84ACHfQAAh30gAId9QACHfXAAh32AAId9kACHfaAAh32wAId90ACHffAAh34AAId+EACHfjAAh35AAIeC0ACHhRAAh4eAAIeJwACHifAAh4oQAIeKMACHilAAh4pwAIeKkACHiqAAh4rQAIeMYACHjjAAh45QAIeOcACHjpAAh46wAIeO0ACHjvAAh48QAIeQ4ACHkRAAh5FAAIeRcACHkaAAh5HQAIeSAACHkjAAh5JQAIeaAACHmiAAh5pAAIeaYACHmpAAh5qgAIeasACHmsAAh5rQAIea8ACHmxAAh5sgAIebMACHm1AAh5tgAIejEACHozAAh6NQAIejcACHo6AAh6OwAIejwACHo9AAh6PgAIekAACHpCAAh6QwAIekQACHpGAAh6RwAIesIACHrEAAh6xgAIesgACHrLAAh6zAAIes0ACHrOAAh6zwAIetEACHrTAAh61AAIetUACHrXAAh62AAIe1MACHtVAAh7VwAIe1kACHtcAAh7XQAIe14ACHtfAAh7YAAIe2IACHtkAAh7ZQAIe2YACHtoAAh7aQAIe+QACHvmAAh76AAIe+oACHvtAAh77gAIe+8ACHvwAAh78QAIe/MACHv1AAh79gAIe/cACHv5AAh7+gAIfHUACHx3AAh8eQAIfHsACHx+AAh8fwAIfIAACHyBAAh8ggAIfIQACHyGAAh8hwAIfIgACHyKAAh8iwAIfQYACH0IAAh9CgAIfQwACH0PAAh9EAAIfREACH0SAAh9EwAIfRUACH0XAAh9GAAIfRkACH0bAAh9HAAIfS0ACH0uAAh9MAAIfasACH2tAAh9rwAIfbEACH20AAh9tQAIfbYACH23AAh9uAAIfboACH28AAh9vQAIfb4ACH3AAAh9wQAIfjwACH4+AAh+QAAIfkIACH5FAAh+RgAIfkcACH5IAAh+SQAIfksACH5NAAh+TgAIfk8ACH5RAAh+UgAIfs0ACH7PAAh+0gAIftQACH7XAAh+2AAIftkACH7aAAh+2wAIft0ACH7fAAh+4AAIfuEACH7jAAh+5AAIf3cACH+aAAh/ugAIf9oACH/cAAh/3gAIf+AACH/iAAh/5QAIf+YACH/nAAh/6gAIf+sACH/tAAh/7gAIf/EACH/0AAh/9QAIf/YACH/5AAh/+gAIf/8ACIAYAAiAIQAIgCMACIAlAAiALgAIgDEACIA0AAiANgAIgH8ACICjAAiAygAIgO4ACIDxAAiA8wAIgPUACID3AAiA+QAIgPsACID8AAiA/wAIgRgACIE5AAiBOwAIgT0ACIE/AAiBQQAIgUMACIFFAAiBRwAIgUkACIFqAAiBbQAIgXAACIFzAAiBdgAIgXkACIF8AAiBfwAIgYIACIGEAAiB/wAIggEACIIDAAiCBQAIgggACIIJAAiCCgAIggsACIIMAAiCDgAIghAACIIRAAiCEgAIghQACIIVAAiCkAAIgpIACIKUAAiClgAIgpkACIKaAAiCmwAIgpwACIKdAAiCnwAIgqEACIKiAAiCowAIgqUACIKmAAiDIQAIgyMACIMmAAiDKAAIgysACIMsAAiDLQAIgy4ACIMvAAiDMQAIgzMACIM0AAiDNQAIgzcACIM4AAiDUQAIg1IACINTAAiDVQAIg9AACIPSAAiD1AAIg9YACIPZAAiD2gAIg9sACIPcAAiD3QAIg98ACIPhAAiD4gAIg+MACIPlAAiD5gAIhGEACIRjAAiEZQAIhGcACIRqAAiEawAIhGwACIRtAAiEbgAIhHAACIRyAAiEcwAIhHQACIR2AAiEdwAIhPIACIT0AAiE9gAIhPgACIT7AAiE/AAIhP0ACIT+AAiE/wAIhQEACIUDAAiFBAAIhQUACIUHAAiFCAAIhYMACIWFAAiFhwAIhYkACIWMAAiFjQAIhY4ACIWPAAiFkAAIhZIACIWUAAiFlQAIhZYACIWYAAiFmQAIhhQACIYWAAiGGAAIhhoACIYdAAiGHgAIhh8ACIYgAAiGIQAIhiMACIYlAAiGJgAIhicACIYpAAiGKgAIhnMACIaXAAiGvgAIhuIACIblAAiG5wAIhukACIbrAAiG7QAIhu8ACIbwAAiG8wAIhwwACIcpAAiHKwAIhy0ACIcvAAiHMQAIhzMACIc1AAiHNwAIh1QACIdXAAiHWgAIh10ACIdgAAiHYwAIh2YACIdpAAiHawAIh+YACIfoAAiH6gAIh+wACIfvAAiH8AAIh/EACIfyAAiH8wAIh/UACIf3AAiH+AAIh/kACIf7AAiH/AAIiHcACIh5AAiIfAAIiH4ACIiBAAiIggAIiIMACIiEAAiIhQAIiIcACIiJAAiIigAIiIsACIiNAAiIjgAIiQkACIkLAAiJDQAIiQ8ACIkSAAiJEwAIiRQACIkVAAiJFgAIiRgACIkaAAiJGwAIiRwACIkeAAiJHwAIiZoACImcAAiJnwAIiaEACImkAAiJpQAIiaYACImnAAiJqAAIiaoACImsAAiJrQAIia4ACImwAAiJsQAIiiwACIouAAiKMAAIijIACIo1AAiKNgAIijcACIo4AAiKOQAIijsACIo9AAiKPgAIij8ACIpBAAiKQgAIir0ACIq/AAiKwQAIisMACIrGAAiKxwAIisgACIrJAAiKygAIiswACIrOAAiKzwAIitAACIrSAAiK0wAIi04ACItQAAiLUwAIi1UACItYAAiLWQAIi1oACItbAAiLXAAIi14ACItgAAiLYQAIi2IACItkAAiLZQAIi/gACIwbAAiMOwAIjFsACIxdAAiMXwAIjGEACIxjAAiMZgAIjGcACIxoAAiMawAIjGwACIxuAAiMbwAIjHIACIx1AAiMdgAIjHcACIx6AAiMewAIjIAACIyZAAiMogAIjKQACIymAAiMrwAIjLIACIy1AAiMtwAIjQAACI0kAAiNSwAIjW8ACI1yAAiNdAAIjXYACI14AAiNegAIjXwACI19AAiNgAAIjZkACI26AAiNvAAIjb4ACI3AAAiNwgAIjcQACI3GAAiNyAAIjcoACI3rAAiN7gAIjfEACI30AAiN9wAIjfoACI39AAiOAAAIjgMACI4FAAiOgAAIjoIACI6EAAiOhgAIjokACI6KAAiOiwAIjowACI6NAAiOjwAIjpEACI6SAAiOkwAIjpUACI6WAAiPEQAIjxMACI8VAAiPFwAIjxoACI8bAAiPHAAIjx0ACI8eAAiPIAAIjyIACI8jAAiPJAAIjyYACI8nAAiPogAIj6QACI+nAAiPqQAIj6wACI+tAAiPrgAIj68ACI+wAAiPsgAIj7QACI+1AAiPtgAIj7gACI+5AAiP0gAIj9MACI/UAAiP1gAIkFEACJBTAAiQVQAIkFcACJBaAAiQWwAIkFwACJBdAAiQXgAIkGAACJBiAAiQYwAIkGQACJBmAAiQZwAIkOIACJDkAAiQ5gAIkOgACJDrAAiQ7AAIkO0ACJDuAAiQ7wAIkPEACJDzAAiQ9AAIkPUACJD3AAiQ+AAIkXMACJF1AAiRdwAIkXkACJF8AAiRfQAIkX4ACJF/AAiRgAAIkYIACJGEAAiRhQAIkYYACJGIAAiRiQAIkgQACJIGAAiSCAAIkgoACJINAAiSDgAIkg8ACJIQAAiSEQAIkhMACJIVAAiSFgAIkhcACJIZAAiSGgAIkpUACJKXAAiSmQAIkpsACJKeAAiSnwAIkqAACJKhAAiSogAIkqQACJKmAAiSpwAIkqgACJKqAAiSqwAIkvQACJMYAAiTPwAIk2MACJNmAAiTaAAIk2oACJNsAAiTbgAIk3AACJNxAAiTdAAIk40ACJOqAAiTrAAIk64ACJOwAAiTsgAIk7QACJO2AAiTuAAIk9UACJPYAAiT2wAIk94ACJPhAAiT5AAIk+cACJPqAAiT7AAIlGcACJRpAAiUawAIlG0ACJRwAAiUcQAIlHIACJRzAAiUdAAIlHYACJR4AAiUeQAIlHoACJR8AAiUfQAIlPgACJT6AAiU/AAIlP4ACJUBAAiVAgAIlQMACJUEAAiVBQAIlQcACJUJAAiVCgAIlQsACJUNAAiVDgAIlYkACJWLAAiVjQAIlY8ACJWSAAiVkwAIlZQACJWVAAiVlgAIlZgACJWaAAiVmwAIlZwACJWeAAiVnwAIlhoACJYcAAiWHwAIliEACJYkAAiWJQAIliYACJYnAAiWKAAIlioACJYsAAiWLQAIli4ACJYwAAiWMQAIlqwACJauAAiWsAAIlrIACJa1AAiWtgAIlrcACJa4AAiWuQAIlrsACJa9AAiWvgAIlr8ACJbBAAiWwgAIlz0ACJc/AAiXQQAIl0MACJdGAAiXRwAIl0gACJdJAAiXSgAIl0wACJdOAAiXTwAIl1AACJdSAAiXUwAIl84ACJfQAAiX0wAIl9UACJfYAAiX2QAIl9oACJfbAAiX3AAIl94ACJfgAAiX4QAIl+IACJfkAAiX5QAImHgACJibAAiYuwAImNsACJjdAAiY3wAImOEACJjjAAiY5gAImOcACJjoAAiY6wAImOwACJjuAAiY7wAImPIACJj1AAiY9gAImPcACJj6AAiY+wAImQAACJkZAAiZIgAImSQACJkmAAiZLwAImTIACJk1AAiZNwAImYAACJmkAAiZywAIme8ACJnyAAiZ9AAImfYACJn4AAiZ+gAImfwACJn9AAiaAAAImhkACJo6AAiaPAAImj4ACJpAAAiaQgAImkQACJpGAAiaSAAImkoACJprAAiabgAImnEACJp0AAiadwAImnoACJp9AAiagAAImoMACJqFAAibAAAImwIACJsEAAibBgAImwkACJsKAAibCwAImwwACJsNAAibDwAImxEACJsSAAibEwAImxUACJsWAAibkQAIm5MACJuVAAiblwAIm5oACJubAAibnAAIm50ACJueAAiboAAIm6IACJujAAibpAAIm6YACJunAAicIgAInCQACJwnAAicKQAInCwACJwtAAicLgAInC8ACJwwAAicMgAInDQACJw1AAicNgAInDgACJw5AAicUgAInFMACJxUAAicVgAInNEACJzTAAic1QAInNcACJzaAAic2wAInNwACJzdAAic3gAInOAACJziAAic4wAInOQACJzmAAic5wAInWIACJ1kAAidZgAInWgACJ1rAAidbAAInW0ACJ1uAAidbwAInXEACJ1zAAiddAAInXUACJ13AAideAAInfMACJ31AAid9wAInfkACJ38AAid/QAInf4ACJ3/AAieAAAIngIACJ4EAAieBQAIngYACJ4IAAieCQAInoQACJ6GAAieiAAInooACJ6NAAiejgAIno8ACJ6QAAiekQAInpMACJ6VAAielgAInpcACJ6ZAAiemgAInxUACJ8XAAifGQAInxsACJ8eAAifHwAInyAACJ8hAAifIgAInyQACJ8mAAifJwAInygACJ8qAAifKwAIn3QACJ+YAAifvwAIn+MACJ/mAAif6AAIn+oACJ/sAAif7gAIn/AACJ/xAAif9AAIoA0ACKAqAAigLAAIoC4ACKAwAAigMgAIoDQACKA2AAigOAAIoFUACKBYAAigWwAIoF4ACKBhAAigZAAIoGcACKBqAAigbAAIoOcACKDpAAig6wAIoO0ACKDwAAig8QAIoPIACKDzAAig9AAIoPYACKD4AAig+QAIoPoACKD8AAig/QAIoXgACKF6AAihfQAIoX8ACKGCAAihgwAIoYQACKGFAAihhgAIoYgACKGKAAihiwAIoYwACKGOAAihjwAIogoACKIMAAiiDgAIohAACKITAAiiFAAIohUACKIWAAiiFwAIohkACKIbAAiiHAAIoh0ACKIfAAiiIAAIopsACKKdAAiioAAIoqIACKKlAAiipgAIoqcACKKoAAiiqQAIoqsACKKtAAiirgAIoq8ACKKxAAiisgAIozUACKNZAAijfQAIo6AACKPHAAij5wAIpA4ACKQ1AAikVQAIpHkACKSdAAiknwAIpKIACKSkAAikpgAIpKgACKSrAAikrgAIpLAACKSyAAiktQAIpLcACKS5AAikvAAIpL8ACKTAAAikxQAIpN4ACKTjAAik5QAIpOoACKTtAAik7wAIpTgACKVcAAilgwAIpacACKWqAAilrAAIpa4ACKWwAAilsgAIpbQACKW1AAiluAAIpdEACKX2AAil+AAIpfoACKX8AAil/gAIpgAACKYCAAimBAAIpgYACKYIAAimLQAIpjAACKYzAAimNgAIpjkACKY8AAimPwAIpkIACKZFAAimSAAIpkoACKbFAAimxwAIpsoACKbMAAimzwAIptAACKbRAAim0gAIptMACKbVAAim1wAIptgACKbZAAim2wAIptwACKbtAAim7gAIpvAACKdrAAinbQAIp28ACKdxAAindAAIp3UACKd2AAindwAIp3gACKd6AAinfAAIp30ACKd+AAingAAIp4EACKf8AAin/gAIqAEACKgDAAioBgAIqAcACKgIAAioCQAIqAoACKgMAAioDgAIqA8ACKgQAAioEgAIqBMACKgkAAioJQAIqCcACKiiAAiopAAIqKYACKioAAioqwAIqKwACKitAAiorgAIqK8ACKixAAioswAIqLQACKi1AAiotwAIqLgACKkzAAipNQAIqTgACKk6AAipPQAIqT4ACKk/AAipQAAIqUEACKlDAAipRQAIqUYACKlHAAipSQAIqUoACKlbAAipXAAIqV4ACKnZAAip2wAIqd0ACKnfAAip4gAIqeMACKnkAAip5QAIqeYACKnoAAip6gAIqesACKnsAAip7gAIqe8ACKpqAAiqbAAIqm8ACKpxAAiqdAAIqnUACKp2AAiqdwAIqngACKp6AAiqfAAIqn0ACKp+AAiqgAAIqoEACKqaAAiqmwAIqpwACKqeAAirGQAIqxsACKsdAAirHwAIqyIACKsjAAirJAAIqyUACKsmAAirKAAIqyoACKsrAAirLAAIqy4ACKsvAAirqgAIq6wACKuvAAirsQAIq7QACKu1AAirtgAIq7cACKu4AAirugAIq7wACKu9AAirvgAIq8AACKvBAAir6QAIrAIACKw3AAisOgAIrD0ACKxAAAisQwAIrEYACKxJAAisTAAIrE8ACKxSAAisVQAIrFgACKxbAAisXgAIrJMACKyWAAismQAIrJwACKyfAAisogAIrKUACKyoAAisqwAIrK4ACKyxAAistAAIrLcACKy6AAisvAAIrOAACKzsAAitGQAIrTIACK1JAAitagAIrYEACK2hAAitrgAIrcYACK3nAAiuAgAIrpUACK64AAiu2AAIrvgACK76AAiu/AAIrv4ACK8AAAivAwAIrwQACK8FAAivCAAIrwkACK8LAAivDAAIrw4ACK8RAAivEgAIrxMACK8WAAivFwAIrxwACK81AAivPgAIr0AACK9CAAivSwAIr04ACK9RAAivUwAIr5wACK/AAAiv5wAIsAsACLAOAAiwEAAIsBIACLAUAAiwFgAIsBgACLAZAAiwHAAIsDUACLBWAAiwWAAIsFoACLBcAAiwXgAIsGAACLBiAAiwZAAIsGYACLCHAAiwigAIsI0ACLCQAAiwkwAIsJYACLCZAAiwnAAIsJ8ACLChAAixHAAIsR4ACLEgAAixIgAIsSUACLEmAAixJwAIsSgACLEpAAixKwAIsS0ACLEuAAixLwAIsTEACLEyAAixrQAIsa8ACLGxAAixswAIsbYACLG3AAixuAAIsbkACLG6AAixvAAIsb4ACLG/AAixwAAIscIACLHDAAiyPgAIskAACLJDAAiyRQAIskgACLJJAAiySgAIsksACLJMAAiyTgAIslAACLJRAAiyUgAIslQACLJVAAiybgAIsm8ACLJwAAiycgAIsu0ACLLvAAiy8QAIsvMACLL2AAiy9wAIsvgACLL5AAiy+gAIsvwACLL+AAiy/wAIswAACLMCAAizAwAIs34ACLOAAAizggAIs4QACLOHAAiziAAIs4kACLOKAAiziwAIs40ACLOPAAizkAAIs5EACLOTAAizlAAItA8ACLQRAAi0EwAItBUACLQYAAi0GQAItBoACLQbAAi0HAAItB4ACLQgAAi0IQAItCIACLQkAAi0JQAItKAACLSiAAi0pAAItKYACLSpAAi0qgAItKsACLSsAAi0rQAItK8ACLSxAAi0sgAItLMACLS1AAi0tgAItTEACLUzAAi1NQAItTcACLU6AAi1OwAItTwACLU9AAi1PgAItUAACLVCAAi1QwAItUQACLVGAAi1RwAItZAACLW0AAi12wAItf8ACLYCAAi2BAAItgYACLYIAAi2CgAItgwACLYNAAi2EAAItikACLZGAAi2SAAItkoACLZMAAi2TgAItlAACLZSAAi2VAAItnEACLZ0AAi2dwAItnoACLZ9AAi2gAAItoMACLaGAAi2iAAItwMACLcFAAi3BwAItwkACLcMAAi3DQAItw4ACLcPAAi3EAAItxIACLcUAAi3FQAItxYACLcYAAi3GQAIt5QACLeWAAi3mAAIt5oACLedAAi3ngAIt58ACLegAAi3oQAIt6MACLelAAi3pgAIt6cACLepAAi3qgAIuCUACLgnAAi4KQAIuCsACLguAAi4LwAIuDAACLgxAAi4MgAIuDQACLg2AAi4NwAIuDgACLg6AAi4OwAIuLYACLi4AAi4uwAIuL0ACLjAAAi4wQAIuMIACLjDAAi4xAAIuMYACLjIAAi4yQAIuMoACLjMAAi4zQAIuUgACLlKAAi5TAAIuU4ACLlRAAi5UgAIuVMACLlUAAi5VQAIuVcACLlZAAi5WgAIuVsACLldAAi5XgAIudkACLnbAAi53QAIud8ACLniAAi54wAIueQACLnlAAi55gAIuegACLnqAAi56wAIuewACLnuAAi57wAIumoACLpsAAi6bgAIunAACLpzAAi6dAAIunUACLp2AAi6dwAIunkACLp7AAi6fAAIun0ACLp/AAi6gAAIuxMACLs2AAi7VgAIu3YACLt4AAi7egAIu3wACLt+AAi7gQAIu4IACLuDAAi7hgAIu4cACLuJAAi7igAIu4wACLuPAAi7kAAIu5EACLuUAAi7lQAIu5oACLuzAAi7vAAIu74ACLvAAAi7yQAIu8wACLvPAAi70QAIvBoACLw+AAi8ZQAIvIkACLyMAAi8jgAIvJAACLySAAi8lAAIvJYACLyXAAi8mgAIvLMACLzUAAi81gAIvNgACLzaAAi83AAIvN4ACLzgAAi84gAIvOQACL0FAAi9CAAIvQsACL0OAAi9EQAIvRQACL0XAAi9GgAIvR0ACL0fAAi9mgAIvZwACL2eAAi9oAAIvaMACL2kAAi9pQAIvaYACL2nAAi9qQAIvasACL2sAAi9rQAIva8ACL2wAAi+KwAIvi0ACL4vAAi+MQAIvjQACL41AAi+NgAIvjcACL44AAi+OgAIvjwACL49AAi+PgAIvkAACL5BAAi+vAAIvr4ACL7BAAi+wwAIvsYACL7HAAi+yAAIvskACL7KAAi+zAAIvs4ACL7PAAi+0AAIvtIACL7TAAi+7AAIvu0ACL7uAAi+8AAIv2sACL9tAAi/bwAIv3EACL90AAi/dQAIv3YACL93AAi/eAAIv3oACL98AAi/fQAIv34ACL+AAAi/gQAIv/wACL/+AAjAAAAIwAIACMAFAAjABgAIwAcACMAIAAjACQAIwAsACMANAAjADgAIwA8ACMARAAjAEgAIwI0ACMCPAAjAkQAIwJMACMCWAAjAlwAIwJgACMCZAAjAmgAIwJwACMCeAAjAnwAIwKAACMCiAAjAowAIwR4ACMEgAAjBIgAIwSQACMEnAAjBKAAIwSkACMEqAAjBKwAIwS0ACMEvAAjBMAAIwTEACMEzAAjBNAAIwa8ACMGxAAjBswAIwbUACMG4AAjBuQAIwboACMG7AAjBvAAIwb4ACMHAAAjBwQAIwcIACMHEAAjBxQAIwg4ACMIyAAjCWQAIwn0ACMKAAAjCggAIwoQACMKGAAjCiAAIwooACMKLAAjCjgAIwqcACMLEAAjCxgAIwsgACMLKAAjCzAAIws4ACMLQAAjC0gAIwu8ACMLyAAjC9QAIwvgACML7AAjC/gAIwwEACMMEAAjDBgAIw4EACMODAAjDhQAIw4cACMOKAAjDiwAIw4wACMONAAjDjgAIw5AACMOSAAjDkwAIw5QACMOWAAjDlwAIxBIACMQUAAjEFgAIxBgACMQbAAjEHAAIxB0ACMQeAAjEHwAIxCEACMQjAAjEJAAIxCUACMQnAAjEKAAIxKMACMSlAAjEpwAIxKkACMSsAAjErQAIxK4ACMSvAAjEsAAIxLIACMS0AAjEtQAIxLYACMS4AAjEuQAIxTQACMU2AAjFOQAIxTsACMU+AAjFPwAIxUAACMVBAAjFQgAIxUQACMVGAAjFRwAIxUgACMVKAAjFSwAIxcYACMXIAAjFygAIxcwACMXPAAjF0AAIxdEACMXSAAjF0wAIxdUACMXXAAjF2AAIxdkACMXbAAjF3AAIxlcACMZZAAjGWwAIxl0ACMZgAAjGYQAIxmIACMZjAAjGZAAIxmYACMZoAAjGaQAIxmoACMZsAAjGbQAIxugACMbqAAjG7AAIxu4ACMbxAAjG8gAIxvMACMb0AAjG9QAIxvcACMb5AAjG+gAIxvsACMb9AAjG/gAIx5EACMe0AAjH1AAIx/QACMf2AAjH+AAIx/oACMf8AAjH/wAIyAAACMgBAAjIBAAIyAUACMgHAAjICAAIyAoACMgNAAjIDgAIyA8ACMgSAAjIEwAIyBgACMgxAAjIOgAIyDwACMg+AAjIRwAIyEoACMhNAAjITwAIyJgACMi8AAjI4wAIyQcACMkKAAjJDAAIyQ4ACMkQAAjJEgAIyRQACMkVAAjJGAAIyTEACMlSAAjJVAAIyVYACMlYAAjJWgAIyVwACMleAAjJYAAIyWIACMmDAAjJhgAIyYkACMmMAAjJjwAIyZIACMmVAAjJmAAIyZsACMmdAAjKGAAIyhoACMocAAjKHgAIyiEACMoiAAjKIwAIyiQACMolAAjKJwAIyikACMoqAAjKKwAIyi0ACMouAAjKqQAIyqsACMqtAAjKrwAIyrIACMqzAAjKtAAIyrUACMq2AAjKuAAIyroACMq7AAjKvAAIyr4ACMq/AAjLOgAIyzwACMs/AAjLQQAIy0QACMtFAAjLRgAIy0cACMtIAAjLSgAIy0wACMtNAAjLTgAIy1AACMtRAAjLagAIy2sACMtsAAjLbgAIy+kACMvrAAjL7QAIy+8ACMvyAAjL8wAIy/QACMv1AAjL9gAIy/gACMv6AAjL+wAIy/wACMv+AAjL/wAIzHoACMx8AAjMfgAIzIAACMyDAAjMhAAIzIUACMyGAAjMhwAIzIkACMyLAAjMjAAIzI0ACMyPAAjMkAAIzQsACM0NAAjNDwAIzREACM0UAAjNFQAIzRYACM0XAAjNGAAIzRoACM0cAAjNHQAIzR4ACM0gAAjNIQAIzZwACM2eAAjNoAAIzaIACM2lAAjNpgAIzacACM2oAAjNqQAIzasACM2tAAjNrgAIza8ACM2xAAjNsgAIzi0ACM4vAAjOMQAIzjMACM42AAjONwAIzjgACM45AAjOOgAIzjwACM4+AAjOPwAIzkAACM5CAAjOQwAIzowACM6wAAjO1wAIzvsACM7+AAjPAAAIzwIACM8EAAjPBgAIzwgACM8JAAjPDAAIzyUACM9CAAjPRAAIz0YACM9IAAjPSgAIz0wACM9OAAjPUAAIz20ACM9wAAjPcwAIz3YACM95AAjPfAAIz38ACM+CAAjPhAAIz/8ACNABAAjQBAAI0AYACNAJAAjQCgAI0AsACNAMAAjQDQAI0A8ACNARAAjQEgAI0BMACNAVAAjQFgAI0JEACNCTAAjQlQAI0JcACNCaAAjQmwAI0JwACNCdAAjQngAI0KAACNCiAAjQowAI0KQACNCmAAjQpwAI0SIACNEkAAjRJgAI0SgACNErAAjRLAAI0S0ACNEuAAjRLwAI0TEACNEzAAjRNAAI0TUACNE3AAjROAAI0bMACNG1AAjRtwAI0bkACNG8AAjRvQAI0b4ACNG/AAjRwAAI0cIACNHEAAjRxQAI0cYACNHIAAjRyQAI0kQACNJGAAjSSAAI0koACNJNAAjSTgAI0k8ACNJQAAjSUQAI0lMACNJVAAjSVgAI0lcACNJZAAjSWgAI0tUACNLXAAjS2QAI0tsACNLeAAjS3wAI0uAACNLhAAjS4gAI0uQACNLmAAjS5wAI0ugACNLqAAjS6wAI02YACNNoAAjTagAI02wACNNvAAjTcAAI03EACNNyAAjTcwAI03UACNN3AAjTeAAI03kACNN7AAjTfAAI1A8ACNQyAAjUUgAI1HIACNR0AAjUdgAI1HgACNR6AAjUfQAI1H4ACNR/AAjUggAI1IMACNSFAAjUhgAI1IgACNSLAAjUjAAI1I0ACNSQAAjUkQAI1JYACNSvAAjUuAAI1LoACNS8AAjUxQAI1MgACNTLAAjUzQAI1RYACNU6AAjVYQAI1YUACNWIAAjVigAI1YwACNWOAAjVkAAI1ZIACNWTAAjVlgAI1a8ACNXQAAjV0gAI1dQACNXWAAjV2AAI1doACNXcAAjV3gAI1eAACNYBAAjWBAAI1gcACNYKAAjWDQAI1hAACNYTAAjWFgAI1hkACNYbAAjWlgAI1pgACNaaAAjWnAAI1p8ACNagAAjWoQAI1qIACNajAAjWpQAI1qcACNaoAAjWqQAI1qsACNasAAjXJwAI1ykACNcrAAjXLQAI1zAACNcxAAjXMgAI1zMACNc0AAjXNgAI1zgACNc5AAjXOgAI1zwACNc9AAjXuAAI17oACNe9AAjXvwAI18IACNfDAAjXxAAI18UACNfGAAjXyAAI18oACNfLAAjXzAAI184ACNfPAAjX6AAI1+kACNfqAAjX7AAI2GcACNhpAAjYawAI2G0ACNhwAAjYcQAI2HIACNhzAAjYdAAI2HYACNh4AAjYeQAI2HoACNh8AAjYfQAI2PgACNj6AAjY/AAI2P4ACNkBAAjZAgAI2QMACNkEAAjZBQAI2QcACNkJAAjZCgAI2QsACNkNAAjZDgAI2YkACNmLAAjZjQAI2Y8ACNmSAAjZkwAI2ZQACNmVAAjZlgAI2ZgACNmaAAjZmwAI2ZwACNmeAAjZnwAI2hoACNocAAjaHgAI2iAACNojAAjaJAAI2iUACNomAAjaJwAI2ikACNorAAjaLAAI2i0ACNovAAjaMAAI2qsACNqtAAjarwAI2rEACNq0AAjatQAI2rYACNq3AAjauAAI2roACNq8AAjavQAI2r4ACNrAAAjawQAI2woACNsuAAjbVQAI23kACNt8AAjbfgAI24AACNuCAAjbhAAI24YACNuHAAjbigAI26MACNvAAAjbwgAI28QACNvGAAjbyAAI28oACNvMAAjbzgAI2+sACNvuAAjb8QAI2/QACNv3AAjb+gAI2/0ACNwAAAjcAgAI3H0ACNx/AAjcgQAI3IMACNyGAAjchwAI3IgACNyJAAjcigAI3IwACNyOAAjcjwAI3JAACNySAAjckwAI3Q4ACN0QAAjdEgAI3RQACN0XAAjdGAAI3RkACN0aAAjdGwAI3R0ACN0fAAjdIAAI3SEACN0jAAjdJAAI3Z8ACN2hAAjdowAI3aUACN2oAAjdqQAI3aoACN2rAAjdrAAI3a4ACN2wAAjdsQAI3bIACN20AAjdtQAI3jAACN4yAAjeNQAI3jcACN46AAjeOwAI3jwACN49AAjePgAI3kAACN5CAAjeQwAI3kQACN5GAAjeRwAI3sIACN7EAAjexgAI3sgACN7LAAjezAAI3s0ACN7OAAjezwAI3tEACN7TAAje1AAI3tUACN7XAAje2AAI31MACN9VAAjfVwAI31kACN9cAAjfXQAI314ACN9fAAjfYAAI32IACN9kAAjfZQAI32YACN9oAAjfaQAI3+QACN/mAAjf6AAI3+oACN/tAAjf7gAI3+8ACN/wAAjf8QAI3/MACN/1AAjf9gAI3/cACN/5AAjf+gAI4I0ACOCwAAjg0AAI4PAACODyAAjg9AAI4PYACOD4AAjg+wAI4PwACOD9AAjhAAAI4QEACOEDAAjhBAAI4QYACOEJAAjhCgAI4QsACOEOAAjhDwAI4RgACOExAAjhOgAI4TwACOE+AAjhRwAI4UoACOFNAAjhTwAI4ZgACOG8AAjh4wAI4gcACOIKAAjiDAAI4g4ACOIQAAjiEgAI4hQACOIVAAjiGAAI4jEACOJSAAjiVAAI4lYACOJYAAjiWgAI4lwACOJeAAjiYAAI4mIACOKDAAjihgAI4okACOKMAAjijwAI4pIACOKVAAjimAAI4psACOKdAAjjGAAI4xoACOMcAAjjHgAI4yEACOMiAAjjIwAI4yQACOMlAAjjJwAI4ykACOMqAAjjKwAI4y0ACOMuAAjjqQAI46sACOOtAAjjrwAI47IACOOzAAjjtAAI47UACOO2AAjjuAAI47oACOO7AAjjvAAI474ACOO/AAjkOgAI5DwACOQ/AAjkQQAI5EQACORFAAjkRgAI5EcACORIAAjkSgAI5EwACORNAAjkTgAI5FAACORRAAjkagAI5GsACORsAAjkbgAI5OkACOTrAAjk7QAI5O8ACOTyAAjk8wAI5PQACOT1AAjk9gAI5PgACOT6AAjk+wAI5PwACOT+AAjk/wAI5XoACOV8AAjlfgAI5YAACOWDAAjlhAAI5YUACOWGAAjlhwAI5YkACOWLAAjljAAI5Y0ACOWPAAjlkAAI5gsACOYNAAjmDwAI5hEACOYUAAjmFQAI5hYACOYXAAjmGAAI5hoACOYcAAjmHQAI5h4ACOYgAAjmIQAI5pwACOaeAAjmoAAI5qIACOalAAjmpgAI5qcACOaoAAjmqQAI5qsACOatAAjmrgAI5q8ACOaxAAjmsgAI5y0ACOcvAAjnMQAI5zMACOc2AAjnNwAI5zgACOc5AAjnOgAI5zwACOc+AAjnPwAI50AACOdCAAjnQwAI54wACOewAAjn1wAI5/sACOf+AAjoAAAI6AIACOgEAAjoBgAI6AgACOgJAAjoDAAI6CUACOhCAAjoRAAI6EYACOhIAAjoSgAI6EwACOhOAAjoUAAI6G0ACOhwAAjocwAI6HYACOh5AAjofAAI6H8ACOiCAAjohAAI6P8ACOkBAAjpAwAI6QUACOkIAAjpCQAI6QoACOkLAAjpDAAI6Q4ACOkQAAjpEQAI6RIACOkUAAjpFQAI6ZAACOmSAAjplAAI6ZYACOmZAAjpmgAI6ZsACOmcAAjpnQAI6Z8ACOmhAAjpogAI6aMACOmlAAjppgAI6iEACOojAAjqJQAI6icACOoqAAjqKwAI6iwACOotAAjqLgAI6jAACOoyAAjqMwAI6jQACOo2AAjqNwAI6rIACOq0AAjqtwAI6rkACOq8AAjqvQAI6r4ACOq/AAjqwAAI6sIACOrEAAjqxQAI6sYACOrIAAjqyQAI60QACOtGAAjrSAAI60oACOtNAAjrTgAI608ACOtQAAjrUQAI61MACOtVAAjrVgAI61cACOtZAAjrWgAI69UACOvXAAjr2QAI69sACOveAAjr3wAI6+AACOvhAAjr4gAI6+QACOvmAAjr5wAI6+gACOvqAAjr6wAI7GYACOxoAAjsagAI7GwACOxvAAjscAAI7HEACOxyAAjscwAI7HUACOx3AAjseAAI7HkACOx7AAjsfAAI7Q8ACO0yAAjtUgAI7XIACO10AAjtdgAI7XgACO16AAjtfQAI7X4ACO1/AAjtggAI7YMACO2FAAjthgAI7YgACO2LAAjtjAAI7Y0ACO2QAAjtkQAI7ZYACO2vAAjtuAAI7boACO28AAjtxQAI7cgACO3LAAjtzQAI7hYACO46AAjuYQAI7oUACO6IAAjuigAI7owACO6OAAjukAAI7pIACO6TAAjulgAI7q8ACO7QAAju0gAI7tQACO7WAAju2AAI7toACO7cAAju3gAI7uAACO8BAAjvBAAI7wcACO8KAAjvDQAI7xAACO8TAAjvFgAI7xkACO8bAAjvlgAI75gACO+aAAjvnAAI758ACO+gAAjvoQAI76IACO+jAAjvpQAI76cACO+oAAjvqQAI76sACO+sAAjwJwAI8CkACPArAAjwLQAI8DAACPAxAAjwMgAI8DMACPA0AAjwNgAI8DgACPA5AAjwOgAI8DwACPA9AAjwuAAI8LoACPC9AAjwvwAI8MIACPDDAAjwxAAI8MUACPDGAAjwyAAI8MoACPDLAAjwzAAI8M4ACPDPAAjw6AAI8OkACPDqAAjw7AAI8WcACPFpAAjxawAI8W0ACPFwAAjxcQAI8XIACPFzAAjxdAAI8XYACPF4AAjxeQAI8XoACPF8AAjxfQAI8fgACPH6AAjx/AAI8f4ACPIBAAjyAgAI8gMACPIEAAjyBQAI8gcACPIJAAjyCgAI8gsACPINAAjyDgAI8okACPKLAAjyjQAI8o8ACPKSAAjykwAI8pQACPKVAAjylgAI8pgACPKaAAjymwAI8pwACPKeAAjynwAI8xoACPMcAAjzHgAI8yAACPMjAAjzJAAI8yUACPMmAAjzJwAI8ykACPMrAAjzLAAI8y0ACPMvAAjzMAAI86sACPOtAAjzrwAI87EACPO0AAjztQAI87YACPO3AAjzuAAI87oACPO8AAjzvQAI874ACPPAAAjzwQAI9AoACPQuAAj0VQAI9HkACPR8AAj0fgAI9IAACPSCAAj0hAAI9IYACPSHAAj0igAI9KMACPTAAAj0wgAI9MQACPTGAAj0yAAI9MoACPTMAAj0zgAI9OsACPTuAAj08QAI9PQACPT3AAj0+gAI9P0ACPUAAAj1AgAI9X0ACPV/AAj1gQAI9YMACPWGAAj1hwAI9YgACPWJAAj1igAI9YwACPWOAAj1jwAI9ZAACPWSAAj1kwAI9g4ACPYQAAj2EgAI9hQACPYXAAj2GAAI9hkACPYaAAj2GwAI9h0ACPYfAAj2IAAI9iEACPYjAAj2JAAI9p8ACPahAAj2owAI9qUACPaoAAj2qQAI9qoACParAAj2rAAI9q4ACPawAAj2sQAI9rIACPa0AAj2tQAI9zAACPcyAAj3NAAI9zYACPc5AAj3OgAI9zsACPc8AAj3PQAI9z8ACPdBAAj3QgAI90MACPdFAAj3RgAI98EACPfDAAj3xQAI98cACPfKAAj3ywAI98wACPfNAAj3zgAI99AACPfSAAj30wAI99QACPfWAAj31wAI+FIACPhUAAj4VgAI+FgACPhbAAj4XAAI+F0ACPheAAj4XwAI+GEACPhjAAj4ZAAI+GUACPhnAAj4aAAI+OMACPjlAAj45wAI+OkACPjsAAj47QAI+O4ACPjvAAj48AAI+PIACPj0AAj49QAI+PYACPj4AAj4+QAI+YwACPmvAAj5zwAI+e8ACPnxAAj58wAI+fUACPn3AAj5+gAI+fsACPn8AAj5/wAI+gAACPoCAAj6AwAI+gUACPoIAAj6CQAI+goACPoNAAj6DgAI+hMACPosAAj6NQAI+jcACPo5AAj6QgAI+kUACPpIAAj6SgAI+pMACPq3AAj63gAI+wIACPsFAAj7BwAI+wkACPsLAAj7DQAI+w8ACPsQAAj7EwAI+ywACPtNAAj7TwAI+1EACPtTAAj7VQAI+1cACPtZAAj7WwAI+10ACPt+AAj7gQAI+4QACPuHAAj7igAI+40ACPuQAAj7kwAI+5YACPuYAAj8EwAI/BUACPwXAAj8GQAI/BwACPwdAAj8HgAI/B8ACPwgAAj8IgAI/CQACPwlAAj8JgAI/CgACPwpAAj8pAAI/KYACPyoAAj8qgAI/K0ACPyuAAj8rwAI/LAACPyxAAj8swAI/LUACPy2AAj8twAI/LkACPy6AAj9NQAI/TcACP06AAj9PAAI/T8ACP1AAAj9QQAI/UIACP1DAAj9RQAI/UcACP1IAAj9SQAI/UsACP1MAAj9ZQAI/WYACP1nAAj9aQAI/eQACP3mAAj96AAI/eoACP3tAAj97gAI/e8ACP3wAAj98QAI/fMACP31AAj99gAI/fcACP35AAj9+gAI/nUACP53AAj+eQAI/nsACP5+AAj+fwAI/oAACP6BAAj+ggAI/oQACP6GAAj+hwAI/ogACP6KAAj+iwAI/wYACP8IAAj/CgAI/wwACP8PAAj/EAAI/xEACP8SAAj/EwAI/xUACP8XAAj/GAAI/xkACP8bAAj/HAAI/5cACP+ZAAj/mwAI/50ACP+gAAj/oQAI/6IACP+jAAj/pAAI/6YACP+oAAj/qQAI/6oACP+sAAj/rQAJACgACQAqAAkALAAJAC4ACQAxAAkAMgAJADMACQA0AAkANQAJADcACQA5AAkAOgAJADsACQA9AAkAPgAJAIcACQCrAAkA0gAJAPYACQD5AAkA+wAJAP0ACQD/AAkBAQAJAQMACQEEAAkBBwAJASAACQE9AAkBPwAJAUEACQFDAAkBRQAJAUcACQFJAAkBSwAJAWgACQFrAAkBbgAJAXEACQF0AAkBdwAJAXoACQF9AAkBfwAJAfoACQH8AAkB/gAJAgAACQIDAAkCBAAJAgUACQIGAAkCBwAJAgkACQILAAkCDAAJAg0ACQIPAAkCEAAJAosACQKNAAkCjwAJApEACQKUAAkClQAJApYACQKXAAkCmAAJApoACQKcAAkCnQAJAp4ACQKgAAkCoQAJAxwACQMeAAkDIAAJAyIACQMlAAkDJgAJAycACQMoAAkDKQAJAysACQMtAAkDLgAJAy8ACQMxAAkDMgAJA60ACQOvAAkDsQAJA7MACQO2AAkDtwAJA7gACQO5AAkDugAJA7wACQO+AAkDvwAJA8AACQPCAAkDwwAJBD4ACQRAAAkEQgAJBEQACQRHAAkESAAJBEkACQRKAAkESwAJBE0ACQRPAAkEUAAJBFEACQRTAAkEVAAJBM8ACQTRAAkE0wAJBNUACQTYAAkE2QAJBNoACQTbAAkE3AAJBN4ACQTgAAkE4QAJBOIACQTkAAkE5QAJBWAACQViAAkFZAAJBWYACQVpAAkFagAJBWsACQVsAAkFbQAJBW8ACQVxAAkFcgAJBXMACQV1AAkFdgAJBgkACQYsAAkGTAAJBmwACQZuAAkGcAAJBnIACQZ0AAkGdwAJBngACQZ5AAkGfAAJBn0ACQZ/AAkGgAAJBoIACQaFAAkGhgAJBocACQaKAAkGiwAJBpAACQapAAkGsgAJBrQACQa2AAkGvwAJBsIACQbFAAkGxwAJBxAACQc0AAkHWwAJB38ACQeCAAkHhAAJB4YACQeIAAkHigAJB4wACQeNAAkHkAAJB6kACQfKAAkHzAAJB84ACQfQAAkH0gAJB9QACQfWAAkH2AAJB9oACQf7AAkH/gAJCAEACQgEAAkIBwAJCAoACQgNAAkIEAAJCBMACQgVAAkIkAAJCJIACQiUAAkIlgAJCJkACQiaAAkImwAJCJwACQidAAkInwAJCKEACQiiAAkIowAJCKUACQimAAkJIQAJCSMACQklAAkJJwAJCSoACQkrAAkJLAAJCS0ACQkuAAkJMAAJCTIACQkzAAkJNAAJCTYACQk3AAkJsgAJCbQACQm3AAkJuQAJCbwACQm9AAkJvgAJCb8ACQnAAAkJwgAJCcQACQnFAAkJxgAJCcgACQnJAAkJ4gAJCeMACQnkAAkJ5gAJCmEACQpjAAkKZQAJCmcACQpqAAkKawAJCmwACQptAAkKbgAJCnAACQpyAAkKcwAJCnQACQp2AAkKdwAJCvIACQr0AAkK9gAJCvgACQr7AAkK/AAJCv0ACQr+AAkK/wAJCwEACQsDAAkLBAAJCwUACQsHAAkLCAAJC4MACQuFAAkLhwAJC4kACQuMAAkLjQAJC44ACQuPAAkLkAAJC5IACQuUAAkLlQAJC5YACQuYAAkLmQAJDBQACQwWAAkMGAAJDBoACQwdAAkMHgAJDB8ACQwgAAkMIQAJDCMACQwlAAkMJgAJDCcACQwpAAkMKgAJDKUACQynAAkMqQAJDKsACQyuAAkMrwAJDLAACQyxAAkMsgAJDLQACQy2AAkMtwAJDLgACQy6AAkMuwAJDQQACQ0oAAkNTwAJDXMACQ12AAkNeAAJDXoACQ18AAkNfgAJDYAACQ2BAAkNhAAJDZ0ACQ26AAkNvAAJDb4ACQ3AAAkNwgAJDcQACQ3GAAkNyAAJDeUACQ3oAAkN6wAJDe4ACQ3xAAkN9AAJDfcACQ36AAkN/AAJDncACQ55AAkOewAJDn0ACQ6AAAkOgQAJDoIACQ6DAAkOhAAJDoYACQ6IAAkOiQAJDooACQ6MAAkOjQAJDwgACQ8KAAkPDAAJDw4ACQ8RAAkPEgAJDxMACQ8UAAkPFQAJDxcACQ8ZAAkPGgAJDxsACQ8dAAkPHgAJD5kACQ+bAAkPnQAJD58ACQ+iAAkPowAJD6QACQ+lAAkPpgAJD6gACQ+qAAkPqwAJD6wACQ+uAAkPrwAJECoACRAsAAkQLwAJEDEACRA0AAkQNQAJEDYACRA3AAkQOAAJEDoACRA8AAkQPQAJED4ACRBAAAkQQQAJELwACRC+AAkQwAAJEMIACRDFAAkQxgAJEMcACRDIAAkQyQAJEMsACRDNAAkQzgAJEM8ACRDRAAkQ0gAJEU0ACRFPAAkRUQAJEVMACRFWAAkRVwAJEVgACRFZAAkRWgAJEVwACRFeAAkRXwAJEWAACRFiAAkRYwAJEd4ACRHgAAkR4gAJEeQACRHnAAkR6AAJEekACRHqAAkR6wAJEe0ACRHvAAkR8AAJEfEACRHzAAkR9AAJEocACRKqAAkSygAJEuoACRLsAAkS7gAJEvAACRLyAAkS9QAJEvYACRL3AAkS+gAJEvsACRL9AAkS/gAJEwAACRMDAAkTBAAJEwUACRMIAAkTCQAJEw4ACRMnAAkTMAAJEzIACRM0AAkTPQAJE0AACRNDAAkTRQAJE44ACROyAAkT2QAJE/0ACRQAAAkUAgAJFAQACRQGAAkUCAAJFAoACRQLAAkUDgAJFCcACRRIAAkUSgAJFEwACRROAAkUUAAJFFIACRRUAAkUVgAJFFgACRR5AAkUfAAJFH8ACRSCAAkUhQAJFIgACRSLAAkUjgAJFJEACRSTAAkVDgAJFRAACRUSAAkVFAAJFRcACRUYAAkVGQAJFRoACRUbAAkVHQAJFR8ACRUgAAkVIQAJFSMACRUkAAkVnwAJFaEACRWjAAkVpQAJFagACRWpAAkVqgAJFasACRWsAAkVrgAJFbAACRWxAAkVsgAJFbQACRW1AAkWMAAJFjIACRY1AAkWNwAJFjoACRY7AAkWPAAJFj0ACRY+AAkWQAAJFkIACRZDAAkWRAAJFkYACRZHAAkWYAAJFmEACRZiAAkWZAAJFt8ACRbhAAkW4wAJFuUACRboAAkW6QAJFuoACRbrAAkW7AAJFu4ACRbwAAkW8QAJFvIACRb0AAkW9QAJF3AACRdyAAkXdAAJF3YACRd5AAkXegAJF3sACRd8AAkXfQAJF38ACReBAAkXggAJF4MACReFAAkXhgAJGAEACRgDAAkYBQAJGAcACRgKAAkYCwAJGAwACRgNAAkYDgAJGBAACRgSAAkYEwAJGBQACRgWAAkYFwAJGJIACRiUAAkYlgAJGJgACRibAAkYnAAJGJ0ACRieAAkYnwAJGKEACRijAAkYpAAJGKUACRinAAkYqAAJGSMACRklAAkZJwAJGSkACRksAAkZLQAJGS4ACRkvAAkZMAAJGTIACRk0AAkZNQAJGTYACRk4AAkZOQAJGYIACRmmAAkZzQAJGfEACRn0AAkZ9gAJGfgACRn6AAkZ/AAJGf4ACRn/AAkaAgAJGhsACRo4AAkaOgAJGjwACRo+AAkaQAAJGkIACRpEAAkaRgAJGmMACRpmAAkaaQAJGmwACRpvAAkacgAJGnUACRp4AAkaegAJGvUACRr3AAka+QAJGvsACRr+AAka/wAJGwAACRsBAAkbAgAJGwQACRsGAAkbBwAJGwgACRsKAAkbCwAJG4YACRuIAAkbigAJG4wACRuPAAkbkAAJG5EACRuSAAkbkwAJG5UACRuXAAkbmAAJG5kACRubAAkbnAAJHBcACRwZAAkcGwAJHB0ACRwgAAkcIQAJHCIACRwjAAkcJAAJHCYACRwoAAkcKQAJHCoACRwsAAkcLQAJHKgACRyqAAkcrQAJHK8ACRyyAAkcswAJHLQACRy1AAkctgAJHLgACRy6AAkcuwAJHLwACRy+AAkcvwAJHToACR08AAkdPgAJHUAACR1DAAkdRAAJHUUACR1GAAkdRwAJHUkACR1LAAkdTAAJHU0ACR1PAAkdUAAJHcsACR3NAAkdzwAJHdEACR3UAAkd1QAJHdYACR3XAAkd2AAJHdoACR3cAAkd3QAJHd4ACR3gAAkd4QAJHlwACR5eAAkeYAAJHmIACR5lAAkeZgAJHmcACR5oAAkeaQAJHmsACR5tAAkebgAJHm8ACR5xAAkecgAJHwUACR8oAAkfSAAJH2gACR9qAAkfbAAJH24ACR9wAAkfcwAJH3QACR91AAkfeAAJH3kACR97AAkffAAJH34ACR+BAAkfggAJH4MACR+GAAkfhwAJH4wACR+lAAkfrgAJH7AACR+yAAkfuwAJH74ACR/BAAkfwwAJIAwACSAwAAkgVwAJIHsACSB+AAkggAAJIIIACSCEAAkghgAJIIgACSCJAAkgjAAJIKUACSDGAAkgyAAJIMoACSDMAAkgzgAJINAACSDSAAkg1AAJINYACSD3AAkg+gAJIP0ACSEAAAkhAwAJIQYACSEJAAkhDAAJIQ8ACSERAAkhjAAJIY4ACSGQAAkhkgAJIZUACSGWAAkhlwAJIZgACSGZAAkhmwAJIZ0ACSGeAAkhnwAJIaEACSGiAAkiHQAJIh8ACSIhAAkiIwAJIiYACSInAAkiKAAJIikACSIqAAkiLAAJIi4ACSIvAAkiMAAJIjIACSIzAAkirgAJIrAACSKzAAkitQAJIrgACSK5AAkiugAJIrsACSK8AAkivgAJIsAACSLBAAkiwgAJIsQACSLFAAki3gAJIt8ACSLgAAki4gAJI10ACSNfAAkjYQAJI2MACSNmAAkjZwAJI2gACSNpAAkjagAJI2wACSNuAAkjbwAJI3AACSNyAAkjcwAJI+4ACSPwAAkj8gAJI/QACSP3AAkj+AAJI/kACSP6AAkj+wAJI/0ACSP/AAkkAAAJJAEACSQDAAkkBAAJJH8ACSSBAAkkgwAJJIUACSSIAAkkiQAJJIoACSSLAAkkjAAJJI4ACSSQAAkkkQAJJJIACSSUAAkklQAJJRAACSUSAAklFAAJJRYACSUZAAklGgAJJRsACSUcAAklHQAJJR8ACSUhAAklIgAJJSMACSUlAAklJgAJJaEACSWjAAklpQAJJacACSWqAAklqwAJJawACSWtAAklrgAJJbAACSWyAAklswAJJbQACSW2AAkltwAJJgAACSYkAAkmSwAJJm8ACSZyAAkmdAAJJnYACSZ4AAkmegAJJnwACSZ9AAkmgAAJJpkACSa2AAkmuAAJJroACSa8AAkmvgAJJsAACSbCAAkmxAAJJuEACSbkAAkm5wAJJuoACSbtAAkm8AAJJvMACSb2AAkm+AAJJ3MACSd1AAkndwAJJ3kACSd8AAknfQAJJ34ACSd/AAkngAAJJ4IACSeEAAknhQAJJ4YACSeIAAkniQAJKAQACSgGAAkoCAAJKAoACSgNAAkoDgAJKA8ACSgQAAkoEQAJKBMACSgVAAkoFgAJKBcACSgZAAkoGgAJKJUACSiXAAkomQAJKJsACSieAAkonwAJKKAACSihAAkoogAJKKQACSimAAkopwAJKKgACSiqAAkoqwAJKSYACSkoAAkpKwAJKS0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ACVTLAAlUzgAJVNEACVTTAAlVTgAJVVAACVVSAAlVVAAJVVcACVVYAAlVWQAJVVoACVVbAAlVXQAJVV8ACVVgAAlVYQAJVWMACVVkAAlV3wAJVeEACVXjAAlV5QAJVegACVXpAAlV6gAJVesACVXsAAlV7gAJVfAACVXxAAlV8gAJVfQACVX1AAlWcAAJVnIACVZ1AAlWdwAJVnoACVZ7AAlWfAAJVn0ACVZ+AAlWgAAJVoIACVaDAAlWhAAJVoYACVaHAAlWoAAJVqEACVaiAAlWpAAJVx8ACVchAAlXIwAJVyUACVcoAAlXKQAJVyoACVcrAAlXLAAJVy4ACVcwAAlXMQAJVzIACVc0AAlXNQAJV7AACVeyAAlXtAAJV7YACVe5AAlXugAJV7sACVe8AAlXvQAJV78ACVfBAAlXwgAJV8MACVfFAAlXxgAJWEEACVhDAAlYRQAJWEcACVhKAAlYSwAJWEwACVhNAAlYTgAJWFAACVhSAAlYUwAJWFQACVhWAAlYVwAJWNIACVjUAAlY1gAJWNgACVjbAAlY3AAJWN0ACVjeAAlY3wAJWOEACVjjAAlY5AAJWOUACVjnAAlY6AAJWWMACVllAAlZZwAJWWkACVlsAAlZbQAJWW4ACVlvAAlZcAAJWXIACVl0AAlZdQAJWXYACVl4AAlZeQAJWcIACVnmAAlaDQAJWjEACVo0AAlaNgAJWjgACVo6AAlaPAAJWj4ACVo/AAlaQgAJWlsACVp4AAlaegAJWnwACVp+AAlagAAJWoIACVqEAAlahgAJWqMACVqmAAlaqQAJWqwACVqvAAlasgAJWrUACVq4AAlaugAJWzUACVs3AAlbOQAJWzsACVs+AAlbPwAJW0AACVtBAAlbQgAJW0QACVtGAAlbRwAJW0gACVtKAAlbSwAJW8YACVvIAAlbygAJW8wACVvPAAlb0AAJW9EACVvSAAlb0wAJW9UACVvXAAlb2AAJW9kACVvbAAlb3AAJXFcACVxZAAlcWwAJXF0ACVxgAAlcYQAJXGIACVxjAAlcZAAJXGYACVxoAAlcaQAJXGoACVxsAAlcbQAJXOgACVzqAAlc7QAJXO8ACVzyAAlc8wAJXPQACVz1AAlc9gAJXPgACVz6AAlc+wAJXPwACVz+AAlc/wAJXXoACV18AAldfgAJXYAACV2DAAldhAAJXYUACV2GAAldhwAJXYkACV2LAAldjAAJXY0ACV2PAAldkAAJXgsACV4NAAleDwAJXhEACV4UAAleFQAJXhYACV4XAAleGAAJXhoACV4cAAleHQAJXh4ACV4gAAleIQAJXpwACV6eAAleoAAJXqIACV6lAAlepgAJXqcACV6oAAleqQAJXqsACV6tAAlergAJXq8ACV6xAAlesgAJX0UACV9oAAlfiAAJX6gACV+qAAlfrAAJX64ACV+wAAlfswAJX7QACV+1AAlfuAAJX7kACV+7AAlfvAAJX74ACV/BAAlfwgAJX8MACV/GAAlfxwAJX8wACV/lAAlf7gAJX/AACV/yAAlf+wAJX/4ACWABAAlgAwAJYEwACWBwAAlglwAJYLsACWC+AAlgwAAJYMIACWDEAAlgxgAJYMgACWDJAAlgzAAJYOUACWEGAAlhCAAJYQoACWEMAAlhDgAJYRAACWESAAlhFAAJYRYACWE3AAlhOgAJYT0ACWFAAAlhQwAJYUYACWFJAAlhTAAJYU8ACWFRAAlhzAAJYc4ACWHQAAlh0gAJYdUACWHWAAlh1wAJYdgACWHZAAlh2wAJYd0ACWHeAAlh3wAJYeEACWHiAAliXQAJYl8ACWJhAAliYwAJYmYACWJnAAliaAAJYmkACWJqAAlibAAJYm4ACWJvAAlicAAJYnIACWJzAAli7gAJYvAACWLzAAli9QAJYvgACWL5AAli+gAJYvsACWL8AAli/gAJYwAACWMBAAljAgAJYwQACWMFAAljHgAJYx8ACWMgAAljIgAJY50ACWOfAAljoQAJY6MACWOmAAljpwAJY6gACWOpAAljqgAJY6wACWOuAAljrwAJY7AACWOyAAljswAJZC4ACWQwAAlkMgAJZDQACWQ3AAlkOAAJZDkACWQ6AAlkOwAJZD0ACWQ/AAlkQAAJZEEACWRDAAlkRAAJZL8ACWTBAAlkwwAJZMUACWTIAAlkyQAJZMoACWTLAAlkzAAJZM4ACWTQAAlk0QAJZNIACWTUAAlk1QAJZVAACWVSAAllVAAJZVYACWVZAAllWgAJZVsACWVcAAllXQAJZV8ACWVhAAllYgAJZWMACWVlAAllZgAJZeEACWXjAAll5QAJZecACWXqAAll6wAJZewACWXtAAll7gAJZfAACWXyAAll8wAJZfQACWX2AAll9wAJZkAACWZkAAlmiwAJZq8ACWayAAlmtAAJZrYACWa4AAlmugAJZrwACWa9AAlmwAAJZtkACWb2AAlm+AAJZvoACWb8AAlm/gAJZwAACWcCAAlnBAAJZyEACWckAAlnJwAJZyoACWctAAlnMAAJZzMACWc2AAlnOAAJZ7MACWe1AAlntwAJZ7kACWe8AAlnvQAJZ74ACWe/AAlnwAAJZ8IACWfEAAlnxQAJZ8YACWfIAAlnyQAJaEQACWhGAAloSAAJaEoACWhNAAloTgAJaE8ACWhQAAloUQAJaFMACWhVAAloVgAJaFcACWhZAAloWgAJaNUACWjXAAlo2QAJaNsACWjeAAlo3wAJaOAACWjhAAlo4gAJaOQACWjmAAlo5wAJaOgACWjqAAlo6wAJaWYACWloAAlpagAJaWwACWlvAAlpcAAJaXEACWlyAAlpcwAJaXUACWl3AAlpeAAJaXkACWl7AAlpfAAJafcACWn5AAlp+wAJaf0ACWoAAAlqAQAJagIACWoDAAlqBAAJagYACWoIAAlqCQAJagoACWoMAAlqDQAJaogACWqKAAlqjAAJao4ACWqRAAlqkgAJapMACWqUAAlqlQAJapcACWqZAAlqmgAJapsACWqdAAlqngAJaxkACWsbAAlrHQAJax8ACWsiAAlrIwAJayQACWslAAlrJgAJaygACWsqAAlrKwAJaywACWsuAAlrLwAJa8IACWvlAAlsBQAJbCUACWwnAAlsKQAJbCsACWwtAAlsMAAJbDEACWwyAAlsNQAJbDYACWw4AAlsOQAJbDsACWw+AAlsPwAJbEAACWxDAAlsRAAJbE0ACWxmAAlsbwAJbHEACWxzAAlsfAAJbH8ACWyCAAlshAAJbM0ACWzxAAltGAAJbTwACW0/AAltQQAJbUMACW1FAAltRwAJbUkACW1KAAltTQAJbWYACW2HAAltiQAJbYsACW2NAAltjwAJbZEACW2TAAltlQAJbZcACW24AAltuwAJbb4ACW3BAAltxAAJbccACW3KAAltzQAJbdAACW3SAAluTQAJbk8ACW5RAAluUwAJblYACW5XAAluWAAJblkACW5aAAluXAAJbl4ACW5fAAluYAAJbmIACW5jAAlu3gAJbuAACW7iAAlu5AAJbucACW7oAAlu6QAJbuoACW7rAAlu7QAJbu8ACW7wAAlu8QAJbvMACW70AAlvbwAJb3EACW90AAlvdgAJb3kACW96AAlvewAJb3wACW99AAlvfwAJb4EACW+CAAlvgwAJb4UACW+GAAlvnwAJb6AACW+hAAlvowAJcB4ACXAgAAlwIgAJcCQACXAnAAlwKAAJcCkACXAqAAlwKwAJcC0ACXAvAAlwMAAJcDEACXAzAAlwNAAJcK8ACXCxAAlwswAJcLUACXC4AAlwuQAJcLoACXC7AAlwvAAJcL4ACXDAAAlwwQAJcMIACXDEAAlwxQAJcUAACXFCAAlxRAAJcUYACXFJAAlxSgAJcUsACXFMAAlxTQAJcU8ACXFRAAlxUgAJcVMACXFVAAlxVgAJcdEACXHTAAlx1QAJcdcACXHaAAlx2wAJcdwACXHdAAlx3gAJceAACXHiAAlx4wAJceQACXHmAAlx5wAJcmIACXJkAAlyZgAJcmgACXJrAAlybAAJcm0ACXJuAAlybwAJcnEACXJzAAlydAAJcnUACXJ3AAlyeAAJcsEACXLlAAlzDAAJczAACXMzAAlzNQAJczcACXM5AAlzOwAJcz0ACXM+AAlzQQAJc1oACXN3AAlzeQAJc3sACXN9AAlzfwAJc4EACXODAAlzhQAJc6IACXOlAAlzqAAJc6sACXOuAAlzsQAJc7QACXO3AAlzuQAJdDQACXQ2AAl0OQAJdDsACXQ+AAl0PwAJdEAACXRBAAl0QgAJdEQACXRGAAl0RwAJdEgACXRKAAl0SwAJdMYACXTIAAl0ygAJdMwACXTPAAl00AAJdNEACXTSAAl00wAJdNUACXTXAAl02AAJdNkACXTbAAl03AAJdVcACXVZAAl1WwAJdV0ACXVgAAl1YQAJdWIACXVjAAl1ZAAJdWYACXVoAAl1aQAJdWoACXVsAAl1bQAJdegACXXqAAl17QAJde8ACXXyAAl18wAJdfQACXX1AAl19gAJdfgACXX6AAl1+wAJdfwACXX+AAl1/wAJdnoACXZ8AAl2fgAJdoAACXaDAAl2hAAJdoUACXaGAAl2hwAJdokACXaLAAl2jAAJdo0ACXaPAAl2kAAJdwsACXcNAAl3DwAJdxEACXcUAAl3FQAJdxYACXcXAAl3GAAJdxoACXccAAl3HQAJdx4ACXcgAAl3IQAJd5wACXeeAAl3oAAJd6IACXelAAl3pgAJd6cACXeoAAl3qQAJd6sACXetAAl3rgAJd68ACXexAAl3sgAJeEUACXhoAAl4iAAJeKgACXiqAAl4rAAJeK4ACXiwAAl4swAJeLQACXi1AAl4uAAJeLkACXi7AAl4vAAJeL4ACXjBAAl4wgAJeMMACXjGAAl4xwAJeNAACXjpAAl48gAJePQACXj2AAl4/wAJeQIACXkFAAl5BwAJeVAACXl0AAl5mwAJeb8ACXnCAAl5xAAJecYACXnIAAl5ygAJecwACXnNAAl50AAJeekACXoKAAl6DAAJeg4ACXoQAAl6EgAJehQACXoWAAl6GAAJehoACXo7AAl6PgAJekEACXpEAAl6RwAJekoACXpNAAl6UAAJelMACXpVAAl60AAJetIACXrUAAl61gAJetkACXraAAl62wAJetwACXrdAAl63wAJeuEACXriAAl64wAJeuUACXrmAAl7YQAJe2MACXtlAAl7ZwAJe2oACXtrAAl7bAAJe20ACXtuAAl7cAAJe3IACXtzAAl7dAAJe3YACXt3AAl78gAJe/QACXv3AAl7+QAJe/wACXv9AAl7/gAJe/8ACXwAAAl8AgAJfAQACXwFAAl8BgAJfAgACXwJAAl8IgAJfCMACXwkAAl8JgAJfKEACXyjAAl8pQAJfKcACXyqAAl8qwAJfKwACXytAAl8rgAJfLAACXyyAAl8swAJfLQACXy2AAl8twAJfTIACX00AAl9NgAJfTgACX07AAl9PAAJfT0ACX0+AAl9PwAJfUEACX1DAAl9RAAJfUUACX1HAAl9SAAJfcMACX3FAAl9xwAJfckACX3MAAl9zQAJfc4ACX3PAAl90AAJfdIACX3UAAl91QAJfdYACX3YAAl92QAJflQACX5WAAl+WAAJfloACX5dAAl+XgAJfl8ACX5gAAl+YQAJfmMACX5lAAl+ZgAJfmcACX5pAAl+agAJfuUACX7nAAl+6QAJfusACX7uAAl+7wAJfvAACX7xAAl+8gAJfvQACX72AAl+9wAJfvgACX76AAl++wAJf0QACX9oAAl/jwAJf7MACX+2AAl/uAAJf7oACX+8AAl/vgAJf8AACX/BAAl/xAAJf90ACX/6AAl//AAJf/4ACYAAAAmAAgAJgAQACYAGAAmACAAJgCUACYAoAAmAKwAJgC4ACYAxAAmANAAJgDcACYA6AAmAPAAJgLcACYC5AAmAuwAJgL0ACYDAAAmAwQAJgMIACYDDAAmAxAAJgMYACYDIAAmAyQAJgMoACYDMAAmAzQAJgUgACYFKAAmBTAAJgU4ACYFRAAmBUgAJgVMACYFUAAmBVQAJgVcACYFZAAmBWgAJgVsACYFdAAmBXgAJgdkACYHbAAmB3QAJgd8ACYHiAAmB4wAJgeQACYHlAAmB5gAJgegACYHqAAmB6wAJgewACYHuAAmB7wAJgmoACYJsAAmCbwAJgnEACYJ0AAmCdQAJgnYACYJ3AAmCeAAJgnoACYJ8AAmCfQAJgn4ACYKAAAmCgQAJgvwACYL+AAmDAAAJgwIACYMFAAmDBgAJgwcACYMIAAmDCQAJgwsACYMNAAmDDgAJgw8ACYMRAAmDEgAJg40ACYOPAAmDkQAJg5MACYOWAAmDlwAJg5gACYOZAAmDmgAJg5wACYOeAAmDnwAJg6AACYOiAAmDowAJhB4ACYQgAAmEIgAJhCQACYQnAAmEKAAJhCkACYQqAAmEKwAJhC0ACYQvAAmEMAAJhDEACYQzAAmENAAJhMcACYTqAAmFCgAJhSoACYUsAAmFLgAJhTAACYUyAAmFNQAJhTYACYU3AAmFOgAJhTsACYU9AAmFPgAJhUEACYVEAAmFRQAJhUYACYVJAAmFSgAJhU8ACYVoAAmFcQAJhXMACYV1AAmFfgAJhYEACYWEAAmFhgAJhc8ACYXzAAmGGgAJhj4ACYZBAAmGQwAJhkUACYZHAAmGSQAJhksACYZMAAmGTwAJhmgACYaJAAmGiwAJho0ACYaPAAmGkQAJhpMACYaVAAmGlwAJhpkACYa6AAmGvQAJhsAACYbDAAmGxgAJhskACYbMAAmGzwAJhtIACYbUAAmHTwAJh1EACYdTAAmHVQAJh1gACYdZAAmHWgAJh1sACYdcAAmHXgAJh2AACYdhAAmHYgAJh2QACYdlAAmH4AAJh+IACYfkAAmH5gAJh+kACYfqAAmH6wAJh+wACYftAAmH7wAJh/EACYfyAAmH8wAJh/UACYf2AAmIcQAJiHMACYh2AAmIeAAJiHsACYh8AAmIfQAJiH4ACYh/AAmIgQAJiIMACYiEAAmIhQAJiIcACYiIAAmIoQAJiKIACYijAAmIpQAJiSAACYkiAAmJJAAJiSYACYkpAAmJKgAJiSsACYksAAmJLQAJiS8ACYkxAAmJMgAJiTMACYk1AAmJNgAJibEACYmzAAmJtQAJibcACYm6AAmJuwAJibwACYm9AAmJvgAJicAACYnCAAmJwwAJicQACYnGAAmJxwAJikIACYpEAAmKRgAJikgACYpLAAmKTAAJik0ACYpOAAmKTwAJilEACYpTAAmKVAAJilUACYpXAAmKWAAJitMACYrVAAmK1wAJitkACYrcAAmK3QAJit4ACYrfAAmK4AAJiuIACYrkAAmK5QAJiuYACYroAAmK6QAJi2QACYtmAAmLaAAJi2oACYttAAmLbgAJi28ACYtwAAmLcQAJi3MACYt1AAmLdgAJi3cACYt5AAmLegAJi8MACYvnAAmMDgAJjDIACYw1AAmMNwAJjDkACYw7AAmMPQAJjD8ACYxAAAmMQwAJjFwACYx5AAmMewAJjH0ACYx/AAmMgQAJjIMACYyFAAmMhwAJjKQACYynAAmMqgAJjK0ACYywAAmMswAJjLYACYy5AAmMuwAJjTYACY04AAmNOgAJjTwACY0/AAmNQAAJjUEACY1CAAmNQwAJjUUACY1HAAmNSAAJjUkACY1LAAmNTAAJjccACY3JAAmNzAAJjc4ACY3RAAmN0gAJjdMACY3UAAmN1QAJjdcACY3ZAAmN2gAJjdsACY3dAAmN3gAJjlkACY5bAAmOXQAJjl8ACY5iAAmOYwAJjmQACY5lAAmOZgAJjmgACY5qAAmOawAJjmwACY5uAAmObwAJjuoACY7sAAmO7wAJjvEACY70AAmO9QAJjvYACY73AAmO+AAJjvoACY78AAmO/QAJjv4ACY8AAAmPAQAJj4QACY+oAAmPzAAJj+8ACZAWAAmQNgAJkF0ACZCEAAmQpAAJkMgACZDsAAmQ7gAJkPEACZDzAAmQ9QAJkPcACZD6AAmQ/QAJkP8ACZEBAAmRBAAJkQYACZEIAAmRCwAJkQ4ACZEPAAmRGAAJkTEACZE2AAmROAAJkT0ACZFAAAmRQgAJkYsACZGvAAmR1gAJkfoACZH9AAmR/wAJkgEACZIDAAmSBQAJkgcACZIIAAmSCwAJkiQACZJJAAmSSwAJkk0ACZJPAAmSUQAJklMACZJVAAmSVwAJklkACZJbAAmSgAAJkoMACZKGAAmSiQAJkowACZKPAAmSkgAJkpUACZKYAAmSmwAJkp0ACZMYAAmTGgAJkx0ACZMfAAmTIgAJkyMACZMkAAmTJQAJkyYACZMoAAmTKgAJkysACZMsAAmTLgAJky8ACZNAAAmTQQAJk0MACZO+AAmTwAAJk8IACZPEAAmTxwAJk8gACZPJAAmTygAJk8sACZPNAAmTzwAJk9AACZPRAAmT0wAJk9QACZRPAAmUUQAJlFQACZRWAAmUWQAJlFoACZRbAAmUXAAJlF0ACZRfAAmUYQAJlGIACZRjAAmUZQAJlGYACZR3AAmUeAAJlHoACZT1AAmU9wAJlPkACZT7AAmU/gAJlP8ACZUAAAmVAQAJlQIACZUEAAmVBgAJlQcACZUIAAmVCgAJlQsACZWGAAmViAAJlYsACZWNAAmVkAAJlZEACZWSAAmVkwAJlZQACZWWAAmVmAAJlZkACZWaAAmVnAAJlZ0ACZWuAAmVrwAJlbEACZYsAAmWLgAJljAACZYyAAmWNQAJljYACZY3AAmWOAAJljkACZY7AAmWPQAJlj4ACZY/AAmWQQAJlkIACZa9AAmWvwAJlsIACZbEAAmWxwAJlsgACZbJAAmWygAJlssACZbNAAmWzwAJltAACZbRAAmW0wAJltQACZbtAAmW7gAJlu8ACZbxAAmXbAAJl24ACZdwAAmXcgAJl3UACZd2AAmXdwAJl3gACZd5AAmXewAJl30ACZd+AAmXfwAJl4EACZeCAAmX/QAJl/8ACZgCAAmYBAAJmAcACZgIAAmYCQAJmAoACZgLAAmYDQAJmA8ACZgQAAmYEQAJmBMACZgUAAmYPQAJmFYACZhrAAmYbgAJmHEACZh0AAmYdwAJmHoACZiPAAmYkgAJmJUACZiYAAmYmwAJmJ4ACZigAAmYuAAJmMAACZjXAAmZagAJmY0ACZmtAAmZzQAJmc8ACZnRAAmZ0wAJmdUACZnYAAmZ2QAJmdoACZndAAmZ3gAJmeAACZnhAAmZ4wAJmeYACZnnAAmZ6AAJmesACZnsAAmZ9QAJmg4ACZoXAAmaGQAJmhsACZokAAmaJwAJmioACZosAAmadQAJmpkACZrAAAma5AAJmucACZrpAAma6wAJmu0ACZrvAAma8QAJmvIACZr1AAmbDgAJmy8ACZsxAAmbMwAJmzUACZs3AAmbOQAJmzsACZs9AAmbPwAJm2AACZtjAAmbZgAJm2kACZtsAAmbbwAJm3IACZt1AAmbeAAJm3oACZv1AAmb9wAJm/kACZv7AAmb/gAJm/8ACZwAAAmcAQAJnAIACZwEAAmcBgAJnAcACZwIAAmcCgAJnAsACZyGAAmciAAJnIoACZyMAAmcjwAJnJAACZyRAAmckgAJnJMACZyVAAmclwAJnJgACZyZAAmcmwAJnJwACZ0XAAmdGQAJnRwACZ0eAAmdIQAJnSIACZ0jAAmdJAAJnSUACZ0nAAmdKQAJnSoACZ0rAAmdLQAJnS4ACZ1HAAmdSAAJnUkACZ1LAAmdxgAJncgACZ3KAAmdzAAJnc8ACZ3QAAmd0QAJndIACZ3TAAmd1QAJndcACZ3YAAmd2QAJndsACZ3cAAmeVwAJnlkACZ5bAAmeXQAJnmAACZ5hAAmeYgAJnmMACZ5kAAmeZgAJnmgACZ5pAAmeagAJnmwACZ5tAAme6AAJnuoACZ7sAAme7gAJnvEACZ7yAAme8wAJnvQACZ71AAme9wAJnvkACZ76AAme+wAJnv0ACZ7+AAmfeQAJn3sACZ99AAmffwAJn4IACZ+DAAmfhAAJn4UACZ+GAAmfiAAJn4oACZ+LAAmfjAAJn44ACZ+PAAmgCgAJoAwACaAOAAmgEAAJoBMACaAUAAmgFQAJoBYACaAXAAmgGQAJoBsACaAcAAmgHQAJoB8ACaAgAAmgaQAJoI0ACaC0AAmg2AAJoNsACaDdAAmg3wAJoOEACaDjAAmg5QAJoOYACaDpAAmhAgAJoR8ACaEhAAmhIwAJoSUACaEnAAmhKQAJoSsACaEtAAmhSgAJoU0ACaFQAAmhUwAJoVYACaFZAAmhXAAJoV8ACaFhAAmh3AAJod4ACaHgAAmh4gAJoeUACaHmAAmh5wAJoegACaHpAAmh6wAJoe0ACaHuAAmh7wAJofEACaHyAAmibQAJom8ACaJxAAmicwAJonYACaJ3AAmieAAJonkACaJ6AAmifAAJon4ACaJ/AAmigAAJooIACaKDAAmi/gAJowAACaMCAAmjBAAJowcACaMIAAmjCQAJowoACaMLAAmjDQAJow8ACaMQAAmjEQAJoxMACaMUAAmjjwAJo5EACaOUAAmjlgAJo5kACaOaAAmjmwAJo5wACaOdAAmjnwAJo6EACaOiAAmjowAJo6UACaOmAAmkIQAJpCMACaQlAAmkJwAJpCoACaQrAAmkLAAJpC0ACaQuAAmkMAAJpDIACaQzAAmkNAAJpDYACaQ3AAmksgAJpLQACaS2AAmkuAAJpLsACaS8AAmkvQAJpL4ACaS/AAmkwQAJpMMACaTEAAmkxQAJpMcACaTIAAmlQwAJpUUACaVHAAmlSQAJpUwACaVNAAmlTgAJpU8ACaVQAAmlUgAJpVQACaVVAAmlVgAJpVgACaVZAAml7AAJpg8ACaYvAAmmTwAJplEACaZTAAmmVQAJplcACaZaAAmmWwAJplwACaZfAAmmYAAJpmIACaZjAAmmZQAJpmgACaZpAAmmagAJpm0ACaZuAAmmcwAJpowACaaVAAmmlwAJppkACaaiAAmmpQAJpqgACaaqAAmm8wAJpxcACac+AAmnYgAJp2UACadnAAmnaQAJp2sACadtAAmnbwAJp3AACadzAAmnjAAJp60ACaevAAmnsQAJp7MACae1AAmntwAJp7kACae7AAmnvQAJp94ACafhAAmn5AAJp+cACafqAAmn7QAJp/AACafzAAmn9gAJp/gACahzAAmodQAJqHcACah5AAmofAAJqH0ACah+AAmofwAJqIAACaiCAAmohAAJqIUACaiGAAmoiAAJqIkACakEAAmpBgAJqQgACakKAAmpDQAJqQ4ACakPAAmpEAAJqREACakTAAmpFQAJqRYACakXAAmpGQAJqRoACamVAAmplwAJqZoACamcAAmpnwAJqaAACamhAAmpogAJqaMACamlAAmppwAJqagACampAAmpqwAJqawACanFAAmpxgAJqccACanJAAmqRAAJqkYACapIAAmqSgAJqk0ACapOAAmqTwAJqlAACapRAAmqUwAJqlUACapWAAmqVwAJqlkACapaAAmq1QAJqtcACarZAAmq2wAJqt4ACarfAAmq4AAJquEACariAAmq5AAJquYACarnAAmq6AAJquoACarrAAmrZgAJq2gACatqAAmrbAAJq28ACatwAAmrcQAJq3IACatzAAmrdQAJq3cACat4AAmreQAJq3sACat8AAmr9wAJq/kACav7AAmr/QAJrAAACawBAAmsAgAJrAMACawEAAmsBgAJrAgACawJAAmsCgAJrAwACawNAAmsiAAJrIoACayMAAmsjgAJrJEACaySAAmskwAJrJQACayVAAmslwAJrJkACayaAAmsmwAJrJ0ACayeAAms5wAJrQsACa0yAAmtVgAJrVkACa1bAAmtXQAJrV8ACa1hAAmtYwAJrWQACa1nAAmtgAAJrZ0ACa2fAAmtoQAJraMACa2lAAmtpwAJrakACa2rAAmtyAAJrcsACa3OAAmt0QAJrdQACa3XAAmt2gAJrd0ACa3fAAmuWgAJrlwACa5fAAmuYQAJrmQACa5lAAmuZgAJrmcACa5oAAmuagAJrmwACa5tAAmubgAJrnAACa5xAAmu7AAJru4ACa7wAAmu8gAJrvUACa72AAmu9wAJrvgACa75AAmu+wAJrv0ACa7+AAmu/wAJrwEACa8CAAmvfQAJr38ACa+BAAmvgwAJr4YACa+HAAmviAAJr4kACa+KAAmvjAAJr44ACa+PAAmvkAAJr5IACa+TAAmwDgAJsBAACbATAAmwFQAJsBgACbAZAAmwGgAJsBsACbAcAAmwHgAJsCAACbAhAAmwIgAJsCQACbAlAAmwoAAJsKIACbCkAAmwpgAJsKkACbCqAAmwqwAJsKwACbCtAAmwrwAJsLEACbCyAAmwswAJsLUACbC2AAmxMQAJsTMACbE1AAmxNwAJsToACbE7AAmxPAAJsT0ACbE+AAmxQAAJsUIACbFDAAmxRAAJsUYACbFHAAmxwgAJscQACbHGAAmxyAAJscsACbHMAAmxzQAJsc4ACbHPAAmx0QAJsdMACbHUAAmx1QAJsdcACbHYAAmyawAJso4ACbKuAAmyzgAJstAACbLSAAmy1AAJstYACbLZAAmy2gAJstsACbLeAAmy3wAJsuEACbLiAAmy5QAJsugACbLpAAmy6gAJsu0ACbLuAAmy8wAJswwACbMVAAmzFwAJsxkACbMiAAmzJQAJsygACbMqAAmzcwAJs5cACbO+AAmz4gAJs+UACbPnAAmz6QAJs+sACbPtAAmz7wAJs/AACbPzAAm0DAAJtC0ACbQvAAm0MQAJtDMACbQ1AAm0NwAJtDkACbQ7AAm0PQAJtF4ACbRhAAm0ZAAJtGcACbRqAAm0bQAJtHAACbRzAAm0dgAJtHgACbTzAAm09QAJtPcACbT5AAm0/AAJtP0ACbT+AAm0/wAJtQAACbUCAAm1BAAJtQUACbUGAAm1CAAJtQkACbWEAAm1hgAJtYgACbWKAAm1jQAJtY4ACbWPAAm1kAAJtZEACbWTAAm1lQAJtZYACbWXAAm1mQAJtZoACbYVAAm2FwAJthoACbYcAAm2HwAJtiAACbYhAAm2IgAJtiMACbYlAAm2JwAJtigACbYpAAm2KwAJtiwACbZFAAm2RgAJtkcACbZJAAm2xAAJtsYACbbIAAm2ygAJts0ACbbOAAm2zwAJttAACbbRAAm20wAJttUACbbWAAm21wAJttkACbbaAAm3VQAJt1cACbdZAAm3WwAJt14ACbdfAAm3YAAJt2EACbdiAAm3ZAAJt2YACbdnAAm3aAAJt2oACbdrAAm35gAJt+gACbfqAAm37AAJt+8ACbfwAAm38QAJt/IACbfzAAm39QAJt/cACbf4AAm3+QAJt/sACbf8AAm4dwAJuHkACbh7AAm4fQAJuIAACbiBAAm4ggAJuIMACbiEAAm4hgAJuIgACbiJAAm4igAJuIwACbiNAAm5CAAJuQoACbkMAAm5DgAJuREACbkSAAm5EwAJuRQACbkVAAm5FwAJuRkACbkaAAm5GwAJuR0ACbkeAAm5ZwAJuYsACbmyAAm51gAJudkACbnbAAm53QAJud8ACbnhAAm54wAJueQACbnnAAm6AAAJuh0ACbofAAm6IQAJuiMACbolAAm6JwAJuikACborAAm6SAAJuksACbpOAAm6UQAJulQACbpXAAm6WgAJul0ACbpfAAm62gAJutwACbreAAm64AAJuuMACbrkAAm65QAJuuYACbrnAAm66QAJuusACbrsAAm67QAJuu8ACbrwAAm7awAJu20ACbtvAAm7cQAJu3QACbt1AAm7dgAJu3cACbt4AAm7egAJu3wACbt9AAm7fgAJu4AACbuBAAm7/AAJu/4ACbwAAAm8AgAJvAUACbwGAAm8BwAJvAgACbwJAAm8CwAJvA0ACbwOAAm8DwAJvBEACbwSAAm8jQAJvI8ACbySAAm8lAAJvJcACbyYAAm8mQAJvJoACbybAAm8nQAJvJ8ACbygAAm8oQAJvKMACbykAAm9HwAJvSEACb0jAAm9JQAJvSgACb0pAAm9KgAJvSsACb0sAAm9LgAJvTAACb0xAAm9MgAJvTQACb01AAm9sAAJvbIACb20AAm9tgAJvbkACb26AAm9uwAJvbwACb29AAm9vwAJvcEACb3CAAm9wwAJvcUACb3GAAm+QQAJvkMACb5GAAm+SAAJvksACb5MAAm+TQAJvk4ACb5PAAm+UQAJvlMACb5UAAm+VQAJvlcACb5YAAm+6wAJvw4ACb8uAAm/TgAJv1AACb9SAAm/VAAJv1YACb9ZAAm/WgAJv1sACb9eAAm/XwAJv2EACb9iAAm/ZAAJv2cACb9oAAm/aQAJv2wACb9tAAm/cgAJv4sACb+UAAm/lgAJv5gACb+hAAm/pAAJv6cACb+pAAm/8gAJwBYACcA9AAnAYQAJwGQACcBmAAnAaAAJwGoACcBsAAnAbgAJwG8ACcByAAnAiwAJwKwACcCuAAnAsAAJwLIACcC0AAnAtgAJwLgACcC6AAnAvAAJwN0ACcDgAAnA4wAJwOYACcDpAAnA7AAJwO8ACcDyAAnA9QAJwPcACcFyAAnBdAAJwXYACcF4AAnBewAJwXwACcF9AAnBfgAJwX8ACcGBAAnBgwAJwYQACcGFAAnBhwAJwYgACcIDAAnCBQAJwgcACcIJAAnCDAAJwg0ACcIOAAnCDwAJwhAACcISAAnCFAAJwhUACcIWAAnCGAAJwhkACcKUAAnClgAJwpkACcKbAAnCngAJwp8ACcKgAAnCoQAJwqIACcKkAAnCpgAJwqcACcKoAAnCqgAJwqsACcLEAAnCxQAJwsYACcLIAAnDQwAJw0UACcNHAAnDSQAJw0wACcNNAAnDTgAJw08ACcNQAAnDUgAJw1QACcNVAAnDVgAJw1gACcNZAAnD1AAJw9YACcPYAAnD2gAJw90ACcPeAAnD3wAJw+AACcPhAAnD4wAJw+UACcPmAAnD5wAJw+kACcPqAAnEZQAJxGcACcRpAAnEawAJxG4ACcRvAAnEcAAJxHEACcRyAAnEdAAJxHYACcR3AAnEeAAJxHoACcR7AAnE9gAJxPgACcT6AAnE/AAJxP8ACcUAAAnFAQAJxQIACcUDAAnFBQAJxQcACcUIAAnFCQAJxQsACcUMAAnFhwAJxYkACcWLAAnFjQAJxZAACcWRAAnFkgAJxZMACcWUAAnFlgAJxZgACcWZAAnFmgAJxZwACcWdAAnF5gAJxgoACcYxAAnGVQAJxlgACcZaAAnGXAAJxl4ACcZgAAnGYgAJxmMACcZmAAnGfwAJxpwACcaeAAnGoAAJxqIACcakAAnGpgAJxqgACcaqAAnGxwAJxsoACcbNAAnG0AAJxtMACcbWAAnG2QAJxtwACcbeAAnHWQAJx1sACcddAAnHXwAJx2IACcdjAAnHZAAJx2UACcdmAAnHaAAJx2oACcdrAAnHbAAJx24ACcdvAAnH6gAJx+wACcfuAAnH8AAJx/MACcf0AAnH9QAJx/YACcf3AAnH+QAJx/sACcf8AAnH/QAJx/8ACcgAAAnIewAJyH0ACch/AAnIgQAJyIQACciFAAnIhgAJyIcACciIAAnIigAJyIwACciNAAnIjgAJyJAACciRAAnJDAAJyQ4ACckRAAnJEwAJyRYACckXAAnJGAAJyRkACckaAAnJHAAJyR4ACckfAAnJIAAJySIACckjAAnJngAJyaAACcmiAAnJpAAJyacACcmoAAnJqQAJyaoACcmrAAnJrQAJya8ACcmwAAnJsQAJybMACcm0AAnKLwAJyjEACcozAAnKNQAJyjgACco5AAnKOgAJyjsACco8AAnKPgAJykAACcpBAAnKQgAJykQACcpFAAnKwAAJysIACcrEAAnKxgAJyskACcrKAAnKywAJyswACcrNAAnKzwAJytEACcrSAAnK0wAJytUACcrWAAnLaQAJy4wACcusAAnLzAAJy84ACcvQAAnL0gAJy9QACcvXAAnL2AAJy9kACcvcAAnL3QAJy98ACcvgAAnL4gAJy+UACcvmAAnL5wAJy+oACcvrAAnL8AAJzAkACcwSAAnMFAAJzBYACcwfAAnMIgAJzCUACcwnAAnMcAAJzJQACcy7AAnM3wAJzOIACczkAAnM5gAJzOgACczqAAnM7AAJzO0ACczwAAnNCQAJzSoACc0sAAnNLgAJzTAACc0yAAnNNAAJzTYACc04AAnNOgAJzVsACc1eAAnNYQAJzWQACc1nAAnNagAJzW0ACc1wAAnNcwAJzXUACc3wAAnN8gAJzfQACc32AAnN+QAJzfoACc37AAnN/AAJzf0ACc3/AAnOAQAJzgIACc4DAAnOBQAJzgYACc6BAAnOgwAJzoUACc6HAAnOigAJzosACc6MAAnOjQAJzo4ACc6QAAnOkgAJzpMACc6UAAnOlgAJzpcACc8SAAnPFAAJzxcACc8ZAAnPHAAJzx0ACc8eAAnPHwAJzyAACc8iAAnPJAAJzyUACc8mAAnPKAAJzykACc9CAAnPQwAJz0QACc9GAAnPwQAJz8MACc/FAAnPxwAJz8oACc/LAAnPzAAJz80ACc/OAAnP0AAJz9IACc/TAAnP1AAJz9YACc/XAAnQUgAJ0FQACdBWAAnQWAAJ0FsACdBcAAnQXQAJ0F4ACdBfAAnQYQAJ0GMACdBkAAnQZQAJ0GcACdBoAAnQ4wAJ0OUACdDnAAnQ6QAJ0OwACdDtAAnQ7gAJ0O8ACdDwAAnQ8gAJ0PQACdD1AAnQ9gAJ0PgACdD5AAnRdAAJ0XYACdF4AAnRegAJ0X0ACdF+AAnRfwAJ0YAACdGBAAnRgwAJ0YUACdGGAAnRhwAJ0YkACdGKAAnSBQAJ0gcACdIJAAnSCwAJ0g4ACdIPAAnSEAAJ0hEACdISAAnSFAAJ0hYACdIXAAnSGAAJ0hoACdIbAAnSZAAJ0ogACdKvAAnS0wAJ0tYACdLYAAnS2gAJ0twACdLeAAnS4AAJ0uEACdLkAAnS/QAJ0xoACdMcAAnTHgAJ0yAACdMiAAnTJAAJ0yYACdMoAAnTRQAJ00gACdNLAAnTTgAJ01EACdNUAAnTVwAJ01oACdNcAAnT1wAJ09kACdPbAAnT3QAJ0+AACdPhAAnT4gAJ0+MACdPkAAnT5gAJ0+gACdPpAAnT6gAJ0+wACdPtAAnUaAAJ1GoACdRsAAnUbgAJ1HEACdRyAAnUcwAJ1HQACdR1AAnUdwAJ1HkACdR6AAnUewAJ1H0ACdR+AAnU+QAJ1PsACdT9AAnU/wAJ1QIACdUDAAnVBAAJ1QUACdUGAAnVCAAJ1QoACdULAAnVDAAJ1Q4ACdUPAAnVigAJ1YwACdWOAAnVkAAJ1ZMACdWUAAnVlQAJ1ZYACdWXAAnVmQAJ1ZsACdWcAAnVnQAJ1Z8ACdWgAAnWGwAJ1h0ACdYfAAnWIQAJ1iQACdYlAAnWJgAJ1icACdYoAAnWKgAJ1iwACdYtAAnWLgAJ1jAACdYxAAnWrAAJ1q4ACdawAAnWsgAJ1rUACda2AAnWtwAJ1rgACda5AAnWuwAJ1r0ACda+AAnWvwAJ1sEACdbCAAnXPQAJ1z8ACddBAAnXQwAJ10YACddHAAnXSAAJ10kACddKAAnXTAAJ104ACddPAAnXUAAJ11IACddTAAnXZAAJ12UACddnAAnX4gAJ1+QACdfmAAnX6AAJ1+sACdfsAAnX7QAJ1+4ACdfvAAnX8QAJ1/MACdf0AAnX9QAJ1/cACdf4AAnYcwAJ2HUACdh3AAnYeQAJ2HwACdh9AAnYfgAJ2H8ACdiAAAnYggAJ2IQACdiFAAnYhgAJ2IgACdiJAAnZBAAJ2QYACdkJAAnZCwAJ2Q4ACdkPAAnZEAAJ2REACdkSAAnZFAAJ2RYACdkXAAnZGAAJ2RoACdkbAAnZrgAJ2dEACdnxAAnaEQAJ2hMACdoVAAnaFwAJ2hkACdocAAnaHQAJ2h4ACdohAAnaIgAJ2iQACdolAAnaJwAJ2ioACdorAAnaLAAJ2i8ACdowAAnaOQAJ2lIACdpbAAnaXQAJ2l8ACdpoAAnaawAJ2m4ACdpwAAnauQAJ2t0ACdsEAAnbKAAJ2ysACdstAAnbLwAJ2zEACdszAAnbNQAJ2zYACds5AAnbUgAJ23MACdt1AAnbdwAJ23kACdt7AAnbfQAJ238ACduBAAnbgwAJ26QACdunAAnbqgAJ260ACduwAAnbswAJ27YACdu5AAnbvAAJ274ACdw5AAncOwAJ3D0ACdw/AAncQgAJ3EMACdxEAAncRQAJ3EYACdxIAAncSgAJ3EsACdxMAAncTgAJ3E8ACdzKAAnczAAJ3M4ACdzQAAnc0wAJ3NQACdzVAAnc1gAJ3NcACdzZAAnc2wAJ3NwACdzdAAnc3wAJ3OAACd1bAAndXQAJ3WAACd1iAAndZQAJ3WYACd1nAAndaAAJ3WkACd1rAAndbQAJ3W4ACd1vAAndcQAJ3XIACd2LAAndjAAJ3Y0ACd2PAAneCgAJ3gwACd4OAAneEAAJ3hMACd4UAAneFQAJ3hYACd4XAAneGQAJ3hsACd4cAAneHQAJ3h8ACd4gAAnemwAJ3p0ACd6fAAneoQAJ3qQACd6lAAnepgAJ3qcACd6oAAneqgAJ3qwACd6tAAnergAJ3rAACd6xAAnfLAAJ3y4ACd8wAAnfMgAJ3zUACd82AAnfNwAJ3zgACd85AAnfOwAJ3z0ACd8+AAnfPwAJ30EACd9CAAnfvQAJ378ACd/BAAnfwwAJ38YACd/HAAnfyAAJ38kACd/KAAnfzAAJ384ACd/PAAnf0AAJ39IACd/TAAngTgAJ4FAACeBSAAngVAAJ4FcACeBYAAngWQAJ4FoACeBbAAngXQAJ4F8ACeBgAAngYQAJ4GMACeBkAAngrQAJ4NEACeD4AAnhHAAJ4R8ACeEhAAnhIwAJ4SUACeEnAAnhKQAJ4SoACeEtAAnhRgAJ4WMACeFlAAnhZwAJ4WkACeFrAAnhbQAJ4W8ACeFxAAnhjgAJ4ZEACeGUAAnhlwAJ4ZoACeGdAAnhoAAJ4aMACeGlAAniIAAJ4iIACeIkAAniJgAJ4ikACeIqAAniKwAJ4iwACeItAAniLwAJ4jEACeIyAAniMwAJ4jUACeI2AAnisQAJ4rMACeK1AAnitwAJ4roACeK7AAnivAAJ4r0ACeK+AAniwAAJ4sIACeLDAAnixAAJ4sYACeLHAAnjQgAJ40QACeNGAAnjSAAJ40sACeNMAAnjTQAJ404ACeNPAAnjUQAJ41MACeNUAAnjVQAJ41cACeNYAAnj0wAJ49UACePYAAnj2gAJ490ACePeAAnj3wAJ4+AACePhAAnj4wAJ4+UACePmAAnj5wAJ4+kACePqAAnkZQAJ5GcACeRpAAnkawAJ5G4ACeRvAAnkcAAJ5HEACeRyAAnkdAAJ5HYACeR3AAnkeAAJ5HoACeR7AAnk9gAJ5PgACeT6AAnk/AAJ5P8ACeUAAAnlAQAJ5QIACeUDAAnlBQAJ5QcACeUIAAnlCQAJ5QsACeUMAAnlhwAJ5YkACeWLAAnljQAJ5ZAACeWRAAnlkgAJ5ZMACeWUAAnllgAJ5ZgACeWZAAnlmgAJ5ZwACeWdAAnmMAAJ5lMACeZzAAnmkwAJ5pUACeaXAAnmmQAJ5psACeaeAAnmnwAJ5qAACeajAAnmpAAJ5qYACeanAAnmqQAJ5qwACeatAAnmrgAJ5rEACeayAAnmtwAJ5tAACebZAAnm2wAJ5t0ACebmAAnm6QAJ5uwACebuAAnnNwAJ51sACeeCAAnnpgAJ56kACeerAAnnrQAJ568ACeexAAnnswAJ57QACee3AAnn0AAJ5/EACefzAAnn9QAJ5/cACef5AAnn+wAJ5/0ACef/AAnoAQAJ6CIACeglAAnoKAAJ6CsACeguAAnoMQAJ6DQACeg3AAnoOgAJ6DwACei3AAnouQAJ6LsACei9AAnowAAJ6MEACejCAAnowwAJ6MQACejGAAnoyAAJ6MkACejKAAnozAAJ6M0ACelIAAnpSgAJ6UwACelOAAnpUQAJ6VIACelTAAnpVAAJ6VUACelXAAnpWQAJ6VoACelbAAnpXQAJ6V4ACenZAAnp2wAJ6d4ACengAAnp4wAJ6eQACenlAAnp5gAJ6ecACenpAAnp6wAJ6ewACentAAnp7wAJ6fAACeoJAAnqCgAJ6gsACeoNAAnqiAAJ6ooACeqMAAnqjgAJ6pEACeqSAAnqkwAJ6pQACeqVAAnqlwAJ6pkACeqaAAnqmwAJ6p0ACeqeAAnrGQAJ6xsACesdAAnrHwAJ6yIACesjAAnrJAAJ6yUACesmAAnrKAAJ6yoACesrAAnrLAAJ6y4ACesvAAnrqgAJ66wACeuuAAnrsAAJ67MACeu0AAnrtQAJ67YACeu3AAnruQAJ67sACeu8AAnrvQAJ678ACevAAAnsOwAJ7D0ACew/AAnsQQAJ7EQACexFAAnsRgAJ7EcACexIAAnsSgAJ7EwACexNAAnsTgAJ7FAACexRAAnszAAJ7M4ACezQAAns0gAJ7NUACezWAAns1wAJ7NgACezZAAns2wAJ7N0ACezeAAns3wAJ7OEACeziAAntKwAJ7U8ACe12AAntmgAJ7Z0ACe2fAAntoQAJ7aMACe2lAAntpwAJ7agACe2rAAntxAAJ7eEACe3jAAnt5QAJ7ecACe3pAAnt6wAJ7e0ACe3vAAnuDAAJ7g8ACe4SAAnuFQAJ7hgACe4bAAnuHgAJ7iEACe4jAAnungAJ7qAACe6jAAnupQAJ7qgACe6pAAnuqgAJ7qsACe6sAAnurgAJ7rAACe6xAAnusgAJ7rQACe61AAnvMAAJ7zIACe80AAnvNgAJ7zkACe86AAnvOwAJ7zwACe89AAnvPwAJ70EACe9CAAnvQwAJ70UACe9GAAnvwQAJ78MACe/FAAnvxwAJ78oACe/LAAnvzAAJ780ACe/OAAnv0AAJ79IACe/TAAnv1AAJ79YACe/XAAnwUgAJ8FQACfBXAAnwWQAJ8FwACfBdAAnwXgAJ8F8ACfBgAAnwYgAJ8GQACfBlAAnwZgAJ8GgACfBpAAnw5AAJ8OYACfDoAAnw6gAJ8O0ACfDuAAnw7wAJ8PAACfDxAAnw8wAJ8PUACfD2AAnw9wAJ8PkACfD6AAnxdQAJ8XcACfF5AAnxewAJ8X4ACfF/AAnxgAAJ8YEACfGCAAnxhAAJ8YYACfGHAAnxiAAJ8YoACfGLAAnyBgAJ8ggACfIKAAnyDAAJ8g8ACfIQAAnyEQAJ8hIACfITAAnyFQAJ8hcACfIYAAnyGQAJ8hsACfIcAAnyrwAJ8tIACfLyAAnzEgAJ8xQACfMWAAnzGAAJ8xoACfMdAAnzHgAJ8x8ACfMiAAnzIwAJ8yUACfMmAAnzKQAJ8ywACfMtAAnzLgAJ8zE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ACgV+AAoFfwAKBYAACgWBAAoFggAKBYQACgWGAAoFhwAKBYgACgWKAAoFiwAKBgYACgYIAAoGCwAKBg0ACgYQAAoGEQAKBhIACgYTAAoGFAAKBhYACgYYAAoGGQAKBhoACgYcAAoGHQAKBjkACgZSAAoGuQAKBrwACga/AAoGwgAKBsUACgbIAAoGywAKBs4ACgbRAAoG1AAKBtcACgbaAAoG3QAKBuAACgbjAAoG5gAKBukACgbsAAoG7wAKBvIACgb1AAoG+AAKBvsACgb+AAoHAQAKBwQACgdrAAoHbgAKB3EACgd0AAoHdwAKB3oACgd9AAoHgAAKB4MACgeGAAoHiQAKB4wACgePAAoHkgAKB5UACgeYAAoHmwAKB54ACgehAAoHpAAKB6cACgeqAAoHrQAKB7AACgezAAoHtgAKB7gACgfYAAoH7AAKCAoACggqAAoIPgAKCFMACghnAAoIdQAKCIcACgilAAoItwAKCMMACgjXAAoI6wAKCQIACgkOAAoJIwAKCTEACglOAAoJYAAKCWkACgn8AAoKHwAKCj8ACgpfAAoKYQAKCmMACgplAAoKZwAKCmoACgprAAoKbAAKCm8ACgpwAAoKcgAKCnMACgp1AAoKeAAKCnkACgp6AAoKfQAKCn4ACgqDAAoKnAAKCqUACgqnAAoKqQAKCrIACgq1AAoKuAAKCroACgsDAAoLJwAKC04ACgtyAAoLdQAKC3cACgt5AAoLewAKC30ACgt/AAoLgAAKC4MACgucAAoLvQAKC78ACgvBAAoLwwAKC8UACgvHAAoLyQAKC8sACgvNAAoL7gAKC/EACgv0AAoL9wAKC/oACgv9AAoMAAAKDAMACgwGAAoMCAAKDIMACgyFAAoMhwAKDIkACgyMAAoMjQAKDI4ACgyPAAoMkAAKDJIACgyUAAoMlQAKDJYACgyYAAoMmQAKDRQACg0WAAoNGAAKDRoACg0dAAoNHgAKDR8ACg0gAAoNIQAKDSMACg0lAAoNJgAKDScACg0pAAoNKgAKDaUACg2nAAoNqgAKDawACg2vAAoNsAAKDbEACg2yAAoNswAKDbUACg23AAoNuAAKDbkACg27AAoNvAAKDdUACg3WAAoN1wAKDdkACg5UAAoOVgAKDlgACg5aAAoOXQAKDl4ACg5fAAoOYAAKDmEACg5jAAoOZQAKDmYACg5nAAoOaQAKDmoACg7lAAoO5wAKDukACg7rAAoO7gAKDu8ACg7wAAoO8QAKDvIACg70AAoO9gAKDvcACg74AAoO+gAKDvsACg92AAoPeAAKD3oACg98AAoPfwAKD4AACg+BAAoPggAKD4MACg+FAAoPhwAKD4gACg+JAAoPiwAKD4wAChAHAAoQCQAKEAsAChANAAoQEAAKEBEAChASAAoQEwAKEBQAChAWAAoQGAAKEBkAChAaAAoQHAAKEB0AChCYAAoQmgAKEJwAChCeAAoQoQAKEKIAChCjAAoQpAAKEKUAChCnAAoQqQAKEKoAChCrAAoQrQAKEK4AChD3AAoRGwAKEUIAChFmAAoRaQAKEWsAChFtAAoRbwAKEXEAChFzAAoRdAAKEXcAChGQAAoRrQAKEa8AChGxAAoRswAKEbUAChG3AAoRuQAKEbsAChHYAAoR2wAKEd4AChHhAAoR5AAKEecAChHqAAoR7QAKEe8AChJqAAoSbAAKEm4AChJwAAoScwAKEnQAChJ1AAoSdgAKEncAChJ5AAoSewAKEnwAChJ9AAoSfwAKEoAAChL7AAoS/QAKEv8AChMBAAoTBAAKEwUAChMGAAoTBwAKEwgAChMKAAoTDAAKEw0AChMOAAoTEAAKExEAChOMAAoTjgAKE5AAChOSAAoTlQAKE5YAChOXAAoTmAAKE5kAChObAAoTnQAKE54AChOfAAoToQAKE6IAChQdAAoUHwAKFCEAChQjAAoUJgAKFCcAChQoAAoUKQAKFCoAChQsAAoULgAKFC8AChQwAAoUMgAKFDMAChSuAAoUsAAKFLIAChS0AAoUtwAKFLgAChS5AAoUugAKFLsAChS9AAoUvwAKFMAAChTBAAoUwwAKFMQAChU/AAoVQQAKFUMAChVFAAoVSAAKFUkAChVKAAoVSwAKFUwAChVOAAoVUAAKFVEAChVSAAoVVAAKFVUAChXQAAoV0gAKFdQAChXWAAoV2QAKFdoAChXbAAoV3AAKFd0AChXfAAoV4QAKFeIAChXjAAoV5QAKFeYAChZ5AAoWnAAKFrwAChbcAAoW3gAKFuAAChbiAAoW5AAKFucAChboAAoW6QAKFuwAChbtAAoW7wAKFvAAChbyAAoW9QAKFvYAChb3AAoW+gAKFvsAChcAAAoXGQAKFyIAChckAAoXJgAKFy8AChcyAAoXNQAKFzcACheAAAoXpAAKF8sAChfvAAoX8gAKF/QAChf2AAoX+AAKF/oAChf8AAoX/QAKGAAAChgZAAoYOgAKGDwAChg+AAoYQAAKGEIAChhEAAoYRgAKGEgAChhKAAoYawAKGG4AChhxAAoYdAAKGHcAChh6AAoYfQAKGIAAChiDAAoYhQAKGQAAChkCAAoZBAAKGQYAChkJAAoZCgAKGQsAChkMAAoZDQAKGQ8AChkRAAoZEgAKGRMAChkVAAoZFgAKGZEAChmTAAoZlQAKGZcAChmaAAoZmwAKGZwAChmdAAoZngAKGaAAChmiAAoZowAKGaQAChmmAAoZpwAKGiIAChokAAoaJwAKGikAChosAAoaLQAKGi4AChovAAoaMAAKGjIACho0AAoaNQAKGjYACho4AAoaOQAKGlIAChpTAAoaVAAKGlYAChrRAAoa0wAKGtUAChrXAAoa2gAKGtsAChrcAAoa3QAKGt4AChrgAAoa4gAKGuMAChrkAAoa5gAKGucAChtiAAobZAAKG2YAChtoAAobawAKG2wAChttAAobbgAKG28AChtxAAobcwAKG3QACht1AAobdwAKG3gAChvzAAob9QAKG/cAChv5AAob/AAKG/0AChv+AAob/wAKHAAAChwCAAocBAAKHAUAChwGAAocCAAKHAkAChyEAAochgAKHIgAChyKAAocjQAKHI4AChyPAAockAAKHJEAChyTAAoclQAKHJYAChyXAAocmQAKHJoACh0VAAodFwAKHRkACh0bAAodHgAKHR8ACh0gAAodIQAKHSIACh0kAAodJgAKHScACh0oAAodKgAKHSsACh10AAodmAAKHb8ACh3jAAod5gAKHegACh3qAAod7AAKHe4ACh3wAAod8QAKHfQACh4NAAoeKgAKHiwACh4uAAoeMAAKHjIACh40AAoeNgAKHjgACh5VAAoeWAAKHlsACh5eAAoeYQAKHmQACh5nAAoeagAKHmwACh7nAAoe6QAKHusACh7tAAoe8AAKHvEACh7yAAoe8wAKHvQACh72AAoe+AAKHvkACh76AAoe/AAKHv0ACh94AAofegAKH3wACh9+AAofgQAKH4IACh+DAAofhAAKH4UACh+HAAofiQAKH4oACh+LAAofjQAKH44ACiAJAAogCwAKIA0ACiAPAAogEgAKIBMACiAUAAogFQAKIBYACiAYAAogGgAKIBsACiAcAAogHgAKIB8ACiCaAAognAAKIJ8ACiChAAogpAAKIKUACiCmAAogpwAKIKgACiCqAAogrAAKIK0ACiCuAAogsAAKILEACiEsAAohLgAKITAACiEyAAohNQAKITYACiE3AAohOAAKITkACiE7AAohPQAKIT4ACiE/AAohQQAKIUIACiG9AAohvwAKIcEACiHDAAohxgAKIccACiHIAAohyQAKIcoACiHMAAohzgAKIc8ACiHQAAoh0gAKIdMACiJOAAoiUAAKIlIACiJUAAoiVwAKIlgACiJZAAoiWgAKIlsACiJdAAoiXwAKImAACiJhAAoiYwAKImQACiL3AAojGgAKIzoACiNaAAojXAAKI14ACiNgAAojYgAKI2UACiNmAAojZwAKI2oACiNrAAojbQAKI24ACiNwAAojcwAKI3QACiN1AAojeAAKI3kACiN+AAojlwAKI6AACiOiAAojpAAKI60ACiOwAAojswAKI7UACiP+AAokIgAKJEkACiRtAAokcAAKJHIACiR0AAokdgAKJHgACiR6AAokewAKJH4ACiSXAAokuAAKJLoACiS8AAokvgAKJMAACiTCAAokxAAKJMYACiTIAAok6QAKJOwACiTvAAok8gAKJPUACiT4AAok+wAKJP4ACiUBAAolAwAKJX4ACiWAAAolggAKJYQACiWHAAoliAAKJYkACiWKAAoliwAKJY0ACiWPAAolkAAKJZEACiWTAAollAAKJg8ACiYRAAomEwAKJhUACiYYAAomGQAKJhoACiYbAAomHAAKJh4ACiYgAAomIQAKJiIACiYkAAomJQAKJqAACiaiAAompQAKJqcACiaqAAomqwAKJqwACiatAAomrgAKJrAACiayAAomswAKJrQACia2AAomtwAKJtAACibRAAom0gAKJtQACidPAAonUQAKJ1MACidVAAonWAAKJ1kACidaAAonWwAKJ1wACideAAonYAAKJ2EACidiAAonZAAKJ2UACifgAAon4gAKJ+QACifmAAon6QAKJ+oACifrAAon7AAKJ+0ACifvAAon8QAKJ/IACifzAAon9QAKJ/YACihxAAoocwAKKHUACih3AAooegAKKHsACih8AAoofQAKKH4ACiiAAAooggAKKIMACiiEAAoohgAKKIcACikCAAopBAAKKQYACikIAAopCwAKKQwACikNAAopDgAKKQ8ACikRAAopEwAKKRQACikVAAopFwAKKRgACimTAAoplQAKKZcACimZAAopnAAKKZ0ACimeAAopnwAKKaAACimiAAoppAAKKaUACimmAAopqAAKKakACinyAAoqFgAKKj0ACiphAAoqZAAKKmYACipoAAoqagAKKmwACipuAAoqbwAKKnIACiqLAAoqqAAKKqoACiqsAAoqrgAKKrAACiqyAAoqtAAKKrYACirTAAoq1gAKKtkACircAAoq3wAKKuIACirlAAoq6AAKKuoACitlAAorZwAKK2oACitsAAorbwAKK3AACitxAAorcgAKK3MACit1AAordwAKK3gACit5AAorewAKK3wACiv3AAor+QAKK/sACiv9AAosAAAKLAEACiwCAAosAwAKLAQACiwGAAosCAAKLAkACiwKAAosDAAKLA0ACiyIAAosigAKLIwACiyOAAoskQAKLJIACiyTAAoslAAKLJUACiyXAAosmQAKLJoACiybAAosnQAKLJ4ACi0ZAAotGwAKLR4ACi0gAAotIwAKLSQACi0lAAotJgAKLScACi0pAAotKwAKLSwACi0tAAotLwAKLTAACi2rAAotrQAKLa8ACi2xAAottAAKLbUACi22AAottwAKLbgACi26AAotvAAKLb0ACi2+AAotwAAKLcEACi48AAouPgAKLkAACi5CAAouRQAKLkYACi5HAAouSAAKLkkACi5LAAouTQAKLk4ACi5PAAouUQAKLlIACi7NAAouzwAKLtEACi7TAAou1gAKLtcACi7YAAou2QAKLtoACi7cAAou3gAKLt8ACi7gAAou4gAKLuMACi92AAovmQAKL7kACi/ZAAov2wAKL90ACi/fAAov4QAKL+QACi/lAAov5gAKL+kACi/qAAov7AAKL+0ACi/vAAov8gAKL/MACi/0AAov9wAKL/gACi/9AAowFgAKMB8ACjAhAAowIwAKMCwACjAvAAowMgAKMDQACjB9AAowoQAKMMgACjDsAAow7wAKMPEACjDzAAow9QAKMPcACjD5AAow+gAKMP0ACjEWAAoxNwAKMTkACjE7AAoxPQAKMT8ACjFBAAoxQwAKMUUACjFHAAoxaAAKMWsACjFuAAoxcQAKMXQACjF3AAoxegAKMX0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ACkNdAApDYAAKQ2IACkNkAApDZgAKQ2gACkNqAApDawAKQ24ACkOHAApDpAAKQ6YACkOoAApDqgAKQ6wACkOuAApDsAAKQ7IACkPPAApD0gAKQ9UACkPYAApD2wAKQ94ACkPhAApD5AAKQ+YACkRhAApEYwAKRGUACkRnAApEagAKRGsACkRsAApEbQAKRG4ACkRwAApEcgAKRHMACkR0AApEdgAKRHcACkTyAApE9AAKRPYACkT4AApE+wAKRPwACkT9AApE/gAKRP8ACkUBAApFAwAKRQQACkUFAApFBwAKRQgACkWDAApFhQAKRYcACkWJAApFjAAKRY0ACkWOAApFjwAKRZAACkWSAApFlAAKRZUACkWWAApFmAAKRZkACkYUAApGFgAKRhkACkYbAApGHgAKRh8ACkYgAApGIQAKRiIACkYkAApGJgAKRicACkYoAApGKgAKRisACkamAApGqAAKRqoACkasAApGrwAKRrAACkaxAApGsgAKRrMACka1AApGtwAKRrgACka5AApGuwAKRrwACkc3AApHOQAKRzsACkc9AApHQAAKR0EACkdCAApHQwAKR0QACkdGAApHSAAKR0kACkdKAApHTAAKR00ACkfIAApHygAKR8wACkfOAApH0QAKR9IACkfTAApH1AAKR9UACkfXAApH2QAKR9oACkfbAApH3QAKR94ACkhxAApIlAAKSLQACkjUAApI1gAKSNgACkjaAApI3AAKSN8ACkjgAApI4QAKSOQACkjlAApI5wAKSOgACkjqAApI7QAKSO4ACkjvAApI8gAKSPMACkj4AApJEQAKSRoACkkcAApJHgAKSScACkkqAApJLQAKSS8ACkl4AApJnAAKScMACknnAApJ6gAKSewACknuAApJ8AAKSfIACkn0AApJ9QAKSfgACkoRAApKMgAKSjQACko2AApKOAAKSjoACko8AApKPgAKSkAACkpCAApKYwAKSmYACkppAApKbAAKSm8ACkpyAApKdQAKSngACkp7AApKfQAKSvgACkr6AApK/AAKSv4ACksBAApLAgAKSwMACksEAApLBQAKSwcACksJAApLCgAKSwsACksNAApLDgAKS4kACkuLAApLjQAKS48ACkuSAApLkwAKS5QACkuVAApLlgAKS5gACkuaAApLmwAKS5wACkueAApLnwAKTBoACkwcAApMHwAKTCEACkwkAApMJQAKTCYACkwnAApMKAAKTCoACkwsAApMLQAKTC4ACkwwAApMMQAKTEoACkxLAApMTAAKTE4ACkzJAApMywAKTM0ACkzPAApM0gAKTNMACkzUAApM1QAKTNYACkzYAApM2gAKTNsACkzcAApM3gAKTN8ACk1aAApNXAAKTV4ACk1gAApNYwAKTWQACk1lAApNZgAKTWcACk1pAApNawAKTWwACk1tAApNbwAKTXAACk3rAApN7QAKTe8ACk3xAApN9AAKTfUACk32AApN9wAKTfgACk36AApN/AAKTf0ACk3+AApOAAAKTgEACk58AApOfgAKToAACk6CAApOhQAKToYACk6HAApOiAAKTokACk6LAApOjQAKTo4ACk6PAApOkQAKTpIACk8NAApPDwAKTxEACk8TAApPFgAKTxcACk8YAApPGQAKTxoACk8cAApPHgAKTx8ACk8gAApPIgAKTyMACk9sAApPkAAKT7cACk/bAApP3gAKT+AACk/iAApP5AAKT+YACk/oAApP6QAKT+wAClAFAApQIgAKUCQAClAmAApQKAAKUCoAClAsAApQLgAKUDAAClBNAApQUAAKUFMAClBWAApQWQAKUFwAClBfAApQYgAKUGQAClDfAApQ4QAKUOMAClDlAApQ6AAKUOkAClDqAApQ6wAKUOwAClDuAApQ8AAKUPEAClDyAApQ9AAKUPUAClFwAApRcgAKUXQAClF2AApReQAKUXoAClF7AApRfAAKUX0AClF/AApRgQAKUYIAClGDAApRhQAKUYYAClIBAApSAwAKUgUAClIHAApSCgAKUgsAClIMAApSDQAKUg4AClIQAApSEgAKUhMAClIUAApSFgAKUhcAClKSAApSlAAKUpYAClKYAApSmwAKUpwAClKdAApSngAKUp8AClKhAApSowAKUqQAClKlAApSpwAKUqgAClMjAApTJQAKUycAClMpAApTLAAKUy0AClMuAApTLwAKUzAAClMyAApTNAAKUzUAClM2AApTOAAKUzkAClO0AApTtgAKU7gAClO6AApTvQAKU74AClO/AApTwAAKU8EAClPDAApTxQAKU8YAClPHAApTyQAKU8oAClRFAApURwAKVEkAClRLAApUTgAKVE8AClRQAApUUQAKVFIAClRUAApUVgAKVFcAClRYAApUWgAKVFsAClTuAApVEQAKVTEAClVRAApVUwAKVVUAClVXAApVWQAKVVwAClVdAApVXgAKVWEAClViAApVZAAKVWUAClVnAApVagAKVWsAClVsAApVbwAKVXAAClV1AApVjgAKVZcAClWZAApVmwAKVaQAClWnAApVqgAKVawAClX1AApWGQAKVkAAClZkAApWZwAKVmkAClZrAApWbQAKVm8AClZxAApWcgAKVnUAClaOAApWrwAKVrEAClazAApWtQAKVrcACla5AApWuwAKVr0ACla/AApW4AAKVuMAClbmAApW6QAKVuwAClbvAApW8gAKVvUAClb4AApW+gAKV3UACld3AApXeQAKV3sACld+AApXfwAKV4AACleBAApXggAKV4QACleGAApXhwAKV4gACleKAApXiwAKWAYAClgIAApYCgAKWAwAClgPAApYEAAKWBEAClgSAApYEwAKWBUAClgXAApYGAAKWBkAClgbAApYHAAKWJcACliZAApYnAAKWJ4AClihAApYogAKWKMAClikAApYpQAKWKcAClipAApYqgAKWKsAClitAApYrgAKWMcACljIAApYyQAKWMsACllGAApZSAAKWUoACllMAApZTwAKWVAACllRAApZUgAKWVMACllVAApZVwAKWVgACllZAApZWwAKWVwAClnXAApZ2QAKWdsAClndAApZ4AAKWeEAClniAApZ4wAKWeQAClnmAApZ6AAKWekAClnqAApZ7AAKWe0AClpoAApaagAKWmwAClpuAApacQAKWnIAClpzAApadAAKWnUAClp3AApaeQAKWnoAClp7AApafQAKWn4AClr5AApa+wAKWv0AClr/AApbAgAKWwMAClsEAApbBQAKWwYAClsIAApbCgAKWwsAClsMAApbDgAKWw8ACluKAApbjAAKW44ACluQAApbkwAKW5QACluVAApblgAKW5cACluZAApbmwAKW5wACludAApbnwAKW6AAClvpAApcDQAKXDQAClxYAApcWwAKXF0AClxfAApcYQAKXGMAClxlAApcZgAKXGkAClyCAApcnwAKXKEAClyjAApcpQAKXKcAClypAApcqwAKXK0AClzKAApczQAKXNAAClzTAApc1gAKXNkAClzcAApc3wAKXOEACl1cAApdXgAKXWAACl1iAApdZQAKXWYACl1nAApdaAAKXWkACl1rAApdbQAKXW4ACl1vAApdcQAKXXIACl3tAApd7wAKXfEACl3zAApd9gAKXfcACl34AApd+QAKXfoACl38AApd/gAKXf8ACl4AAApeAgAKXgMACl5+AApegAAKXoIACl6EAApehwAKXogACl6JAApeigAKXosACl6NAApejwAKXpAACl6RAApekwAKXpQACl8PAApfEQAKXxMACl8VAApfGAAKXxkACl8aAApfGwAKXxwACl8eAApfIAAKXyEACl8iAApfJAAKXyUACl+gAApfogAKX6QACl+mAApfqQAKX6oACl+rAApfrAAKX60ACl+vAApfsQAKX7IACl+zAApftQAKX7YACmAxAApgMwAKYDUACmA3AApgOgAKYDsACmA8AApgPQAKYD4ACmBAAApgQgAKYEMACmBEAApgRgAKYEcACmDCAApgxAAKYMYACmDIAApgywAKYMwACmDNAApgzgAKYM8ACmDRAApg0wAKYNQACmDVAApg1wAKYNgACmFrAAphjgAKYa4ACmHOAAph0AAKYdIACmHUAAph1gAKYdkACmHaAAph2wAKYd4ACmHfAAph4QAKYeIACmHkAAph5wAKYegACmHpAAph7AAKYe0ACmHyAApiCwAKYhQACmIWAApiGAAKYiEACmIkAApiJwAKYikACmJyAApilgAKYr0ACmLhAApi5AAKYuYACmLoAApi6gAKYuwACmLuAApi7wAKYvIACmMLAApjLAAKYy4ACmMwAApjMgAKYzQACmM2AApjOAAKYzoACmM8AApjXQAKY2AACmNjAApjZgAKY2kACmNsAApjbwAKY3IACmN1AApjdwAKY/IACmP0AApj9gAKY/gACmP7AApj/AAKY/0ACmP+AApj/wAKZAEACmQDAApkBAAKZAUACmQHAApkCAAKZIMACmSFAApkhwAKZIkACmSMAApkjQAKZI4ACmSPAApkkAAKZJIACmSUAApklQAKZJYACmSYAApkmQAKZRQACmUWAAplGQAKZRsACmUeAAplHwAKZSAACmUhAAplIgAKZSQACmUmAAplJwAKZSgACmUqAAplKwAKZUQACmVFAAplRgAKZUgACmXDAAplxQAKZccACmXJAAplzAAKZc0ACmXOAAplzwAKZdAACmXSAApl1AAKZdUACmXWAApl2AAKZdkACmZUAApmVgAKZlgACmZaAApmXQAKZl4ACmZfAApmYAAKZmEACmZjAApmZQAKZmYACmZnAApmaQAKZmoACmblAApm5wAKZukACmbrAApm7gAKZu8ACmbwAApm8QAKZvIACmb0AApm9gAKZvcACmb4AApm+gAKZvsACmd2AApneAAKZ3oACmd8AApnfwAKZ4AACmeBAApnggAKZ4MACmeFAApnhwAKZ4gACmeJAApniwAKZ4wACmgHAApoCQAKaAsACmgNAApoEAAKaBEACmgSAApoEwAKaBQACmgWAApoGAAKaBkACmgaAApoHAAKaB0ACmhmAApoigAKaLEACmjVAApo2AAKaNoACmjcAApo3gAKaOAACmjiAApo4wAKaOYACmj/AAppHAAKaR4ACmkgAAppIgAKaSQACmkmAAppKAAKaSoACmlHAAppSgAKaU0ACmlQAAppUwAKaVYACmlZAAppXAAKaV4ACmnZAApp2wAKad0ACmnfAApp4gAKaeMACmnkAApp5QAKaeYACmnoAApp6gAKaesACmnsAApp7gAKae8ACmpqAApqbAAKam4ACmpwAApqcwAKanQACmp1AApqdgAKancACmp5AApqewAKanwACmp9AApqfwAKaoAACmr7AApq/QAKav8ACmsBAAprBAAKawUACmsGAAprBwAKawgACmsKAAprDAAKaw0ACmsOAAprEAAKaxEACmuMAAprjgAKa5EACmuTAAprlgAKa5cACmuYAAprmQAKa5oACmucAAprngAKa58ACmugAAprogAKa6MACmweAApsIAAKbCIACmwkAApsJwAKbCgACmwpAApsKgAKbCsACmwtAApsLwAKbDAACmwxAApsMwAKbDQACmyvAApssQAKbLMACmy1AApsuAAKbLkACmy6AApsuwAKbLwACmy+AApswAAKbMEACmzCAApsxAAKbMUACm1AAAptQgAKbUQACm1GAAptSQAKbUoACm1LAAptTAAKbU0ACm1PAAptUQAKbVIACm1TAAptVQAKbVYACm3pAApuDAAKbiwACm5MAApuTgAKblAACm5SAApuVAAKblcACm5YAApuWQAKblwACm5dAApuXwAKbmAACm5iAApuZQAKbmYACm5nAApuagAKbmsACm50AApujQAKbpYACm6YAApumgAKbqMACm6mAApuqQAKbqsACm70AApvGAAKbz8ACm9jAApvZgAKb2gACm9qAApvbAAKb24ACm9wAApvcQAKb3QACm+NAApvrgAKb7AACm+yAApvtAAKb7YACm+4AApvugAKb7wACm++AApv3wAKb+IACm/lAApv6AAKb+sACm/uAApv8QAKb/QACm/3AApv+QAKcHQACnB2AApweAAKcHoACnB9AApwfgAKcH8ACnCAAApwgQAKcIMACnCFAApwhgAKcIcACnCJAApwigAKcQUACnEHAApxCQAKcQsACnEOAApxDwAKcRAACnERAApxEgAKcRQACnEWAApxFwAKcRgACnEaAApxGwAKcZYACnGYAApxmwAKcZ0ACnGgAApxoQAKcaIACnGjAApxpAAKcaYACnGoAApxqQAKcaoACnGsAApxrQAKccYACnHHAApxyAAKccoACnJFAApyRwAKckkACnJLAApyTgAKck8ACnJQAApyUQAKclIACnJUAApyVgAKclcACnJYAApyWgAKclsACnLWAApy2AAKctoACnLcAApy3wAKcuAACnLhAApy4gAKcuMACnLlAApy5wAKcugACnLpAApy6wAKcuwACnNnAApzaQAKc2sACnNtAApzcAAKc3EACnNyAApzcwAKc3QACnN2AApzeAAKc3kACnN6AApzfAAKc30ACnP4AApz+gAKc/wACnP+AAp0AQAKdAIACnQDAAp0BAAKdAUACnQHAAp0CQAKdAoACnQLAAp0DQAKdA4ACnSJAAp0iwAKdI0ACnSPAAp0kgAKdJMACnSUAAp0lQAKdJYACnSYAAp0mgAKdJsACnScAAp0ngAKdJ8ACnToAAp1DAAKdTMACnVXAAp1WgAKdVwACnVeAAp1YAAKdWIACnVkAAp1ZQAKdWgACnWBAAp1ngAKdaAACnWiAAp1pAAKdaYACnWoAAp1qgAKdawACnXJAAp1zAAKdc8ACnXSAAp11QAKddgACnXbAAp13gAKdeAACnZbAAp2XQAKdl8ACnZhAAp2ZAAKdmUACnZmAAp2ZwAKdmgACnZqAAp2bAAKdm0ACnZuAAp2cAAKdnEACnbsAAp27gAKdvAACnbyAAp29QAKdvYACnb3AAp2+AAKdvkACnb7AAp2/QAKdv4ACnb/AAp3AQAKdwIACnd9AAp3fwAKd4EACneDAAp3hgAKd4cACneIAAp3iQAKd4oACneMAAp3jgAKd48ACneQAAp3kgAKd5MACngOAAp4EAAKeBMACngVAAp4GAAKeBkACngaAAp4GwAKeBwACngeAAp4IAAKeCEACngiAAp4JAAKeCUACnigAAp4ogAKeKQACnimAAp4qQAKeKoACnirAAp4rAAKeK0ACnivAAp4sQAKeLIACnizAAp4tQAKeLYACnkxAAp5MwAKeTUACnk3AAp5OgAKeTsACnk8AAp5PQAKeT4ACnlAAAp5QgAKeUMACnlEAAp5RgAKeUcACnnCAAp5xAAKecYACnnIAAp5ywAKecwACnnNAAp5zgAKec8ACnnRAAp50wAKedQACnnVAAp51wAKedgACnprAAp6jgAKeq4ACnrOAAp60AAKetIACnrUAAp61gAKetkACnraAAp62wAKet4ACnrfAAp64QAKeuIACnrkAAp65wAKeugACnrpAAp67AAKeu0ACnryAAp7CwAKexQACnsWAAp7GAAKeyEACnskAAp7JwAKeykACntyAAp7lgAKe70ACnvhAAp75AAKe+YACnvoAAp76gAKe+wACnvuAAp77wAKe/IACnwLAAp8LAAKfC4ACnwwAAp8MgAKfDQACnw2AAp8OAAKfDoACnw8AAp8XQAKfGAACnxjAAp8ZgAKfGkACnxsAAp8bwAKfHIACnx1AAp8dwAKfPIACnz0AAp89gAKfPgACnz7AAp8/AAKfP0ACnz+AAp8/wAKfQEACn0DAAp9BAAKfQUACn0HAAp9CAAKfYMACn2FAAp9hwAKfYkACn2MAAp9jQAKfY4ACn2PAAp9kAAKfZIACn2UAAp9lQAKfZYACn2YAAp9mQAKfhQACn4WAAp+GQAKfhsACn4eAAp+HwAKfiAACn4hAAp+IgAKfiQACn4mAAp+JwAKfigACn4qAAp+KwAKfkQACn5FAAp+RgAKfkgACn7DAAp+xQAKfscACn7JAAp+zAAKfs0ACn7OAAp+zwAKftAACn7SAAp+1AAKftUACn7WAAp+2AAKftkACn9UAAp/VgAKf1gACn9aAAp/XQAKf14ACn9fAAp/YAAKf2EACn9jAAp/ZQAKf2YACn9nAAp/aQAKf2oACn/lAAp/5wAKf+kACn/rAAp/7gAKf+8ACn/wAAp/8QAKf/IACn/0AAp/9gAKf/cACn/4AAp/+gAKf/sACoB2AAqAeAAKgHoACoB8AAqAfwAKgIAACoCBAAqAggAKgIMACoCFAAqAhwAKgIgACoCJAAqAiwAKgIwACoEHAAqBCQAKgQsACoENAAqBEAAKgREACoESAAqBEwAKgRQACoEWAAqBGAAKgRkACoEaAAqBHAAKgR0ACoFmAAqBigAKgbEACoHVAAqB2AAKgdoACoHcAAqB3gAKgeAACoHiAAqB4wAKgeYACoH/AAqCHAAKgh4ACoIgAAqCIgAKgiQACoImAAqCKAAKgioACoJHAAqCSgAKgk0ACoJQAAqCUwAKglYACoJZAAqCXAAKgl4ACoLZAAqC2wAKgt4ACoLgAAqC4wAKguQACoLlAAqC5gAKgucACoLpAAqC6wAKguwACoLtAAqC7wAKgvAACoNrAAqDbQAKg28ACoNxAAqDdAAKg3UACoN2AAqDdwAKg3gACoN6AAqDfAAKg30ACoN+AAqDgAAKg4EACoP8AAqD/gAKhAAACoQCAAqEBQAKhAYACoQHAAqECAAKhAkACoQLAAqEDQAKhA4ACoQPAAqEEQAKhBIACoSNAAqEjwAKhJIACoSUAAqElwAKhJgACoSZAAqEmgAKhJsACoSdAAqEnwAKhKAACoShAAqEowAKhKQACoUfAAqFIQAKhSMACoUlAAqFKAAKhSkACoUqAAqFKwAKhSwACoUuAAqFMAAKhTEACoUyAAqFNAAKhTUACoWwAAqFsgAKhbQACoW2AAqFuQAKhboACoW7AAqFvAAKhb0ACoW/AAqFwQAKhcIACoXDAAqFxQAKhcYACoZBAAqGQwAKhkUACoZHAAqGSgAKhksACoZMAAqGTQAKhk4ACoZQAAqGUgAKhlMACoZUAAqGVgAKhlcACobqAAqHDQAKhy0ACodNAAqHTwAKh1EACodTAAqHVQAKh1gACodZAAqHWgAKh10ACodeAAqHYAAKh2EACodkAAqHZwAKh2gACodpAAqHbAAKh20ACodyAAqHiwAKh5QACoeWAAqHmAAKh6EACoekAAqHpwAKh6kACofyAAqIFgAKiD0ACohhAAqIZAAKiGYACohoAAqIagAKiGwACohuAAqIbwAKiHIACoiLAAqIrAAKiK4ACoiwAAqIsgAKiLQACoi2AAqIuAAKiLoACoi8AAqI3QAKiOAACojjAAqI5gAKiOkACojsAAqI7wAKiPIACoj1AAqI9wAKiXIACol0AAqJdgAKiXgACol7AAqJfAAKiX0ACol+AAqJfwAKiYEAComDAAqJhAAKiYUAComHAAqJiAAKigMACooFAAqKBwAKigkACooMAAqKDQAKig4ACooPAAqKEAAKihIACooUAAqKFQAKihYACooYAAqKGQAKipQACoqWAAqKmQAKipsACoqeAAqKnwAKiqAACoqhAAqKogAKiqQACoqmAAqKpwAKiqgACoqqAAqKqwAKisQACorFAAqKxgAKisgACotDAAqLRQAKi0cACotJAAqLTAAKi00ACotOAAqLTwAKi1AACotSAAqLVAAKi1UACotWAAqLWAAKi1kACovUAAqL1gAKi9gACovaAAqL3QAKi94ACovfAAqL4AAKi+EACovjAAqL5QAKi+YACovnAAqL6QAKi+oACoxlAAqMZwAKjGkACoxrAAqMbgAKjG8ACoxwAAqMcQAKjHIACox0AAqMdgAKjHcACox4AAqMegAKjHsACoz2AAqM+AAKjPoACoz8AAqM/wAKjQAACo0BAAqNAgAKjQMACo0FAAqNBwAKjQgACo0JAAqNCwAKjQwACo2HAAqNiQAKjYsACo2NAAqNkAAKjZEACo2SAAqNkwAKjZQACo2WAAqNmAAKjZkACo2aAAqNnAAKjZ0ACo3mAAqOCgAKjjEACo5VAAqOWAAKjloACo5cAAqOXgAKjmAACo5iAAqOYwAKjmYACo5/AAqOnAAKjp4ACo6gAAqOogAKjqQACo6mAAqOqAAKjqoACo7HAAqOygAKjs0ACo7QAAqO0wAKjtYACo7ZAAqO3AAKjt4ACo9ZAAqPWwAKj10ACo9fAAqPYgAKj2MACo9kAAqPZQAKj2YACo9oAAqPagAKj2sACo9sAAqPbgAKj28ACo/qAAqP7AAKj+8ACo/xAAqP9AAKj/UACo/2AAqP9wAKj/gACo/6AAqP/AAKj/0ACo/+AAqQAAAKkAEACpB8AAqQfgAKkIAACpCCAAqQhQAKkIYACpCHAAqQiAAKkIkACpCLAAqQjQAKkI4ACpCPAAqQkQAKkJIACpENAAqRDwAKkREACpETAAqRFgAKkRcACpEYAAqRGQAKkRoACpEcAAqRHgAKkR8ACpEgAAqRIgAKkSMACpGeAAqRoAAKkaIACpGkAAqRpwAKkagACpGpAAqRqgAKkasACpGtAAqRrwAKkbAACpGxAAqRswAKkbQACpIvAAqSMQAKkjMACpI1AAqSOAAKkjkACpI6AAqSOwAKkjwACpI+AAqSQAAKkkEACpJCAAqSRAAKkkUACpLAAAqSwgAKksUACpLHAAqSygAKkssACpLMAAqSzQAKks4ACpLQAAqS0gAKktMACpLUAAqS1gAKktcACpNqAAqTjQAKk60ACpPNAAqTzwAKk9EACpPTAAqT1QAKk9cACpPYAAqT2QAKk9wACpPdAAqT3wAKk+AACpPjAAqT5QAKk+YACpPnAAqT6gAKk+sACpPwAAqUCQAKlBIACpQUAAqUFgAKlB8ACpQiAAqUJQAKlCcACpRwAAqUlAAKlLsACpTfAAqU4gAKlOQACpTmAAqU6AAKlOoACpTsAAqU7QAKlPAACpUJAAqVKgAKlSwACpUuAAqVMAAKlTIACpU0AAqVNgAKlTgACpU6AAqVWwAKlV4ACpVhAAqVZAAKlWcACpVqAAqVbQAKlXAACpVzAAqVdQAKlfAACpXyAAqV9AAKlfYACpX5AAqV+gAKlfsACpX8AAqV/QAKlf8ACpYBAAqWAgAKlgMACpYFAAqWBgAKloEACpaDAAqWhQAKlocACpaKAAqWiwAKlowACpaNAAqWjgAKlpAACpaSAAqWkwAKlpQACpaWAAqWlwAKlxIACpcUAAqXFwAKlxkACpccAAqXHQAKlx4ACpcfAAqXIAAKlyIACpckAAqXJQAKlyYACpcoAAqXKQAKl0IACpdDAAqXRAAKl0YACpfBAAqXwwAKl8UACpfHAAqXygAKl8sACpfMAAqXzQAKl84ACpfQAAqX0gAKl9MACpfUAAqX1gAKl9cACphSAAqYVAAKmFYACphYAAqYWwAKmFwACphdAAqYXgAKmF8ACphhAAqYYwAKmGQACphlAAqYZwAKmGgACpjjAAqY5QAKmOcACpjpAAqY7AAKmO0ACpjuAAqY7wAKmPAACpjyAAqY9AAKmPUACpj2AAqY+AAKmPkACpl0AAqZdgAKmXgACpl6AAqZfQAKmX4ACpl/AAqZgAAKmYEACpmDAAqZhQAKmYYACpmHAAqZiQAKmYoACpoFAAqaBwAKmgkACpoLAAqaDgAKmg8ACpoQAAqaEQAKmhIACpoUAAqaFgAKmhcACpoYAAqaGgAKmhsACppkAAqaiAAKmq8ACprTAAqa1gAKmtgACpraAAqa3AAKmt4ACprgAAqa4QAKmuQACpr9AAqbGgAKmxwACpseAAqbIAAKmyIACpskAAqbJgAKmygACptFAAqbSAAKm0sACptOAAqbUQAKm1QACptXAAqbWgAKm1wACpvXAAqb2QAKm9sACpvdAAqb4AAKm+EACpviAAqb4wAKm+QACpvmAAqb6AAKm+kACpvqAAqb7AAKm+0ACpxoAAqcagAKnGwACpxuAAqccQAKnHIACpxzAAqcdAAKnHUACpx3AAqceQAKnHoACpx7AAqcfQAKnH4ACpz5AAqc+wAKnP0ACpz/AAqdAgAKnQMACp0EAAqdBQAKnQYACp0IAAqdCgAKnQsACp0MAAqdDgAKnQ8ACp2KAAqdjAAKnY8ACp2RAAqdlAAKnZUACp2WAAqdlwAKnZgACp2aAAqdnAAKnZ0ACp2eAAqdoAAKnaEACp4cAAqeHgAKniAACp4iAAqeJQAKniYACp4nAAqeKAAKnikACp4rAAqeLQAKni4ACp4vAAqeMQAKnjIACp6tAAqerwAKnrEACp6zAAqetgAKnrcACp64AAqeuQAKnroACp68AAqevgAKnr8ACp7AAAqewgAKnsMACp8+AAqfQAAKn0MACp9FAAqfSAAKn0kACp9KAAqfSwAKn0wACp9OAAqfUAAKn1EACp9SAAqfVAAKn1UACp/oAAqgCwAKoCsACqBLAAqgTQAKoE8ACqBRAAqgUwAKoFYACqBXAAqgWAAKoFsACqBcAAqgXgAKoF8ACqBhAAqgZAAKoGUACqBmAAqgaQAKoGoACqBvAAqgiAAKoJEACqCTAAqglQAKoJ4ACqChAAqgpAAKoKYACqDvAAqhEwAKoToACqFeAAqhYQAKoWMACqFlAAqhZwAKoWkACqFrAAqhbAAKoW8ACqGIAAqhqQAKoasACqGtAAqhrwAKobEACqGzAAqhtQAKobcACqG5AAqh2gAKod0ACqHgAAqh4wAKoeYACqHpAAqh7AAKoe8ACqHyAAqh9AAKom8ACqJxAAqicwAKonUACqJ4AAqieQAKonoACqJ7AAqifAAKon4ACqKAAAqigQAKooIACqKEAAqihQAKowAACqMCAAqjBAAKowYACqMJAAqjCgAKowsACqMMAAqjDQAKow8ACqMRAAqjEgAKoxMACqMVAAqjFgAKo5EACqOTAAqjlgAKo5gACqObAAqjnAAKo50ACqOeAAqjnwAKo6EACqOjAAqjpAAKo6UACqOnAAqjqAAKo8EACqPCAAqjwwAKo8UACqRAAAqkQgAKpEQACqRGAAqkSQAKpEoACqRLAAqkTAAKpE0ACqRPAAqkUQAKpFIACqRTAAqkVQAKpFYACqTRAAqk0wAKpNUACqTXAAqk2gAKpNsACqTcAAqk3QAKpN4ACqTgAAqk4gAKpOMACqTkAAqk5gAKpOcACqViAAqlZAAKpWYACqVoAAqlawAKpWwACqVtAAqlbgAKpW8ACqVxAAqlcwAKpXQACqV1AAqldwAKpXgACqXzAAql9QAKpfcACqX5AAql/AAKpf0ACqX+AAql/wAKpgAACqYCAAqmBAAKpgUACqYGAAqmCAAKpgkACqaEAAqmhgAKpogACqaKAAqmjQAKpo4ACqaPAAqmkAAKppEACqaTAAqmlQAKppYACqaXAAqmmQAKppoACqbjAAqnBwAKpy4ACqdSAAqnVQAKp1cACqdZAAqnWwAKp10ACqdfAAqnYAAKp2MACqd8AAqnmQAKp5sACqedAAqnnwAKp6EACqejAAqnpQAKp6cACqfEAAqnxwAKp8oACqfNAAqn0AAKp9MACqfWAAqn2QAKp9sACqhWAAqoWAAKqFoACqhcAAqoXwAKqGAACqhhAAqoYgAKqGMACqhlAAqoZwAKqGgACqhpAAqoawAKqGwACqjnAAqo6QAKqOsACqjtAAqo8AAKqPEACqjyAAqo8wAKqPQACqj2AAqo+AAKqPkACqj6AAqo/AAKqP0ACql4AAqpegAKqXwACql+AAqpgQAKqYIACqmDAAqphAAKqYUACqmHAAqpiQAKqYoACqmLAAqpjQAKqY4ACqoJAAqqCwAKqg0ACqoPAAqqEgAKqhMACqoUAAqqFQAKqhYACqoYAAqqGgAKqhsACqocAAqqHgAKqh8ACqqaAAqqnAAKqp4ACqqgAAqqowAKqqQACqqlAAqqpgAKqqcACqqpAAqqqwAKqqwACqqtAAqqrwAKqrAACqsrAAqrLQAKqy8ACqsxAAqrNAAKqzUACqs2AAqrNwAKqzgACqs6AAqrPAAKqz0ACqs+AAqrQAAKq0EACqu8AAqrvgAKq8AACqvCAAqrxQAKq8YACqvHAAqryAAKq8kACqvLAAqrzQAKq84ACqvPAAqr0QAKq9IACqxlAAqsiAAKrKgACqzIAAqsygAKrMwACqzOAAqs0AAKrNMACqzUAAqs1QAKrNgACqzZAAqs2wAKrNwACqzfAAqs4gAKrOMACqzkAAqs5wAKrOgACqzxAAqtCgAKrRMACq0VAAqtFwAKrSAACq0jAAqtJgAKrSgACq1xAAqtlQAKrbwACq3gAAqt4wAKreUACq3nAAqt6QAKresACq3tAAqt7gAKrfEACq4KAAquKwAKri0ACq4vAAquMQAKrjMACq41AAquNwAKrjkACq47AAquXAAKrl8ACq5iAAquZQAKrmgACq5rAAqubgAKrnEACq50AAqudgAKrvEACq7zAAqu9QAKrvcACq76AAqu+wAKrvwACq79AAqu/gAKrwAACq8CAAqvAwAKrwQACq8GAAqvBwAKr4IACq+EAAqvhgAKr4gACq+LAAqvjAAKr40ACq+OAAqvjwAKr5EACq+TAAqvlAAKr5UACq+XAAqvmAAKsBMACrAVAAqwGAAKsBoACrAdAAqwHgAKsB8ACrAgAAqwIQAKsCMACrAlAAqwJgAKsCcACrApAAqwKgAKsEMACrBEAAqwRQAKsEcACrDCAAqwxAAKsMYACrDIAAqwywAKsMwACrDNAAqwzgAKsM8ACrDRAAqw0wAKsNQACrDVAAqw1wAKsNgACrFTAAqxVQAKsVcACrFZAAqxXAAKsV0ACrFeAAqxXwAKsWAACrFiAAqxZAAKsWUACrFmAAqxaAAKsWkACrHkAAqx5gAKsegACrHqAAqx7QAKse4ACrHvAAqx8AAKsfEACrHzAAqx9QAKsfYACrH3AAqx+QAKsfoACrJ1AAqydwAKsnkACrJ7AAqyfgAKsn8ACrKAAAqygQAKsoIACrKEAAqyhgAKsocACrKIAAqyigAKsosACrMGAAqzCAAKswoACrMMAAqzDwAKsxAACrMRAAqzEgAKsxMACrMVAAqzFwAKsxgACrMZAAqzGwAKsxwACrNlAAqziQAKs7AACrPUAAqz1wAKs9kACrPbAAqz3QAKs98ACrPhAAqz4gAKs+UACrP+AAq0GwAKtB0ACrQfAAq0IQAKtCMACrQlAAq0JwAKtCkACrRGAAq0SQAKtEwACrRPAAq0UgAKtFUACrRYAAq0WwAKtF0ACrTYAAq02gAKtNwACrTeAAq04QAKtOIACrTjAAq05AAKtOUACrTnAAq06QAKtOoACrTrAAq07QAKtO4ACrVpAAq1awAKtW4ACrVwAAq1cwAKtXQACrV1AAq1dgAKtXcACrV5AAq1ewAKtXwACrV9AAq1fwAKtYAACrX7AAq1/QAKtf8ACrYBAAq2BAAKtgUACrYGAAq2BwAKtggACrYKAAq2DAAKtg0ACrYOAAq2EAAKthEACraMAAq2jgAKtpEACraTAAq2lgAKtpcACraYAAq2mQAKtpoACracAAq2ngAKtp8ACragAAq2ogAKtqMACrceAAq3IAAKtyIACrckAAq3JwAKtygACrcpAAq3KgAKtysACrctAAq3LwAKtzAACrcxAAq3MwAKtzQACrevAAq3sQAKt7MACre1AAq3uAAKt7kACre6AAq3uwAKt7wACre+AAq3wAAKt8EACrfCAAq3xAAKt8UACrhAAAq4QgAKuEUACrhHAAq4SgAKuEsACrhMAAq4TQAKuE4ACrhQAAq4UgAKuFMACrhUAAq4VgAKuFcACrjqAAq5DQAKuS0ACrlNAAq5TwAKuVEACrlTAAq5VQAKuVgACrlZAAq5WgAKuV0ACrleAAq5YAAKuWEACrljAAq5ZgAKuWcACrloAAq5awAKuWwACrlxAAq5igAKuZMACrmVAAq5lwAKuaAACrmjAAq5pgAKuagACrnxAAq6FQAKujwACrpgAAq6YwAKumUACrpnAAq6aQAKumsACrptAAq6bgAKunEACrqKAAq6qwAKuq0ACrqvAAq6sQAKurMACrq1AAq6twAKurkACrq7AAq63AAKut8ACrriAAq65QAKuugACrrrAAq67gAKuvEACrr0AAq69gAKu3EACrtzAAq7dQAKu3cACrt6AAq7ewAKu3wACrt9AAq7fgAKu4AACruCAAq7gwAKu4QACruGAAq7hwAKvAIACrwEAAq8BgAKvAgACrwLAAq8DAAKvA0ACrwOAAq8DwAKvBEACrwTAAq8FAAKvBUACrwXAAq8GAAKvJMACryVAAq8mAAKvJoACrydAAq8ngAKvJ8ACrygAAq8oQAKvKMACrylAAq8pgAKvKcACrypAAq8qgAKvMMACrzEAAq8xQAKvMcACr1CAAq9RAAKvUYACr1IAAq9SwAKvUwACr1NAAq9TgAKvU8ACr1RAAq9UwAKvVQACr1VAAq9VwAKvVgACr3TAAq91QAKvdcACr3ZAAq93AAKvd0ACr3eAAq93wAKveAACr3iAAq95AAKveUACr3mAAq96AAKvekACr5kAAq+ZgAKvmgACr5qAAq+bQAKvm4ACr5vAAq+cAAKvnEACr5zAAq+dQAKvnYACr53AAq+eQAKvnoACr71AAq+9wAKvvkACr77AAq+/gAKvv8ACr8AAAq/AQAKvwIACr8EAAq/BgAKvwcACr8IAAq/CgAKvwsACr+GAAq/iAAKv4oACr+MAAq/jwAKv5AACr+RAAq/kgAKv5MACr+VAAq/lwAKv5gACr+ZAAq/mwAKv5wACr/lAArACQAKwDAACsBUAArAVwAKwFkACsBbAArAXQAKwF8ACsBhAArAYgAKwGUACsB+AArAmwAKwJ0ACsCfAArAoQAKwKMACsClAArApwAKwKkACsDGAArAyQAKwMwACsDPAArA0gAKwNUACsDYAArA2wAKwN0ACsFYAArBWgAKwVwACsFeAArBYQAKwWIACsFjAArBZAAKwWUACsFnAArBaQAKwWoACsFrAArBbQAKwW4ACsHpAArB6wAKwe0ACsHvAArB8gAKwfMACsH0AArB9QAKwfYACsH4AArB+gAKwfsACsH8AArB/gAKwf8ACsJ6AArCfAAKwn4ACsKAAArCgwAKwoQACsKFAArChgAKwocACsKJAArCiwAKwowACsKNAArCjwAKwpAACsMLAArDDQAKww8ACsMRAArDFAAKwxUACsMWAArDFwAKwxgACsMaAArDHAAKwx0ACsMeAArDIAAKwyEACsOcAArDngAKw6AACsOiAArDpQAKw6YACsOnAArDqAAKw6kACsOrAArDrQAKw64ACsOvAArDsQAKw7IACsQtAArELwAKxDEACsQzAArENgAKxDcACsQ4AArEOQAKxDoACsQ8AArEPgAKxD8ACsRAAArEQgAKxEMACsS+AArEwAAKxMIACsTEAArExwAKxMgACsTJAArEygAKxMsACsTNAArEzwAKxNAACsTRAArE0wAKxNQACsVnAArFigAKxaoACsXKAArFzAAKxc4ACsXQAArF0gAKxdUACsXWAArF1wAKxdoACsXbAArF3QAKxd4ACsXhAArF5AAKxeUACsXmAArF6QAKxeoACsXvAArGCAAKxhEACsYTAArGFQAKxh4ACsYhAArGJAAKxiYACsZvAArGkwAKxroACsbeAArG4QAKxuMACsblAArG5wAKxukACsbrAArG7AAKxu8ACscIAArHKQAKxysACsctAArHLwAKxzEACsczAArHNQAKxzcACsc5AArHWgAKx10ACsdgAArHYwAKx2YACsdpAArHbAAKx28ACsdyAArHdAAKx+8ACsfxAArH8wAKx/UACsf4AArH+QAKx/oACsf7AArH/AAKx/4ACsgAAArIAQAKyAIACsgEAArIBQAKyIAACsiCAArIhAAKyIYACsiJAArIigAKyIsACsiMAArIjQAKyI8ACsiRAArIkgAKyJMACsiVAArIlgAKyREACskTAArJFgAKyRgACskbAArJHAAKyR0ACskeAArJHwAKySEACskjAArJJAAKySUACsknAArJKAAKyUEACslCAArJQwAKyUUACsnAAArJwgAKycQACsnGAArJyQAKycoACsnLAArJzAAKyc0ACsnPAArJ0QAKydIACsnTAArJ1QAKydYACspRAArKUwAKylUACspXAArKWgAKylsACspcAArKXQAKyl4ACspgAArKYgAKymMACspkAArKZgAKymcACsriAArK5AAKyuYACsroAArK6wAKyuwACsrtAArK7gAKyu8ACsrxAArK8wAKyvQACsr1AArK9wAKyvgACstzAArLdQAKy3cACst5AArLfAAKy30ACst+AArLfwAKy4AACsuCAArLhAAKy4UACsuGAArLiAAKy4kACswEAArMBgAKzAgACswKAArMDQAKzA4ACswPAArMEAAKzBEACswTAArMFQAKzBYACswXAArMGQAKzBoACsxjAArMhwAKzK4ACszSAArM1QAKzNcACszZAArM2wAKzN0ACszfAArM4AAKzOMACsz8AArNGQAKzRsACs0dAArNHwAKzSEACs0jAArNJQAKzScACs1EAArNRwAKzUoACs1NAArNUAAKzVMACs1WAArNWQAKzVsACs3WAArN2AAKzdoACs3cAArN3wAKzeAACs3hAArN4gAKzeMACs3lAArN5wAKzegACs3pAArN6wAKzewACs5nAArOaQAKzmwACs5uAArOcQAKznIACs5zAArOdAAKznUACs53AArOeQAKznoACs57AArOfQAKzn4ACs75AArO+wAKzv0ACs7/AArPAgAKzwMACs8EAArPBQAKzwYACs8IAArPCgAKzwsACs8MAArPDgAKzw8ACs+KAArPjAAKz48ACs+RAArPlAAKz5UACs+WAArPlwAKz5gACs+aAArPnAAKz50ACs+eAArPoAAKz6EACtAkAArQSAAK0GwACtCPAArQtgAK0NYACtD9AArRJAAK0UQACtFoAArRjAAK0Y4ACtGRAArRkwAK0ZUACtGXAArRmgAK0Z0ACtGfAArRoQAK0aQACtGmAArRqAAK0asACtGuAArRrwAK0bQACtHNAArR0gAK0dQACtHZAArR3AAK0d4ACtInAArSSwAK0nIACtKWAArSmQAK0psACtKdAArSnwAK0qEACtKjAArSpAAK0qcACtLAAArS5QAK0ucACtLpAArS6wAK0u0ACtLvAArS8QAK0vMACtL1AArS9wAK0xwACtMfAArTIgAK0yUACtMoAArTKwAK0y4ACtMxAArTNAAK0zcACtM5AArTtAAK07YACtO5AArTuwAK074ACtO/AArTwAAK08EACtPCAArTxAAK08YACtPHAArTyAAK08oACtPLAArT3AAK090ACtPfAArUWgAK1FwACtReAArUYAAK1GMACtRkAArUZQAK1GYACtRnAArUaQAK1GsACtRsAArUbQAK1G8ACtRwAArU6wAK1O0ACtTwAArU8gAK1PUACtT2AArU9wAK1PgACtT5AArU+wAK1P0ACtT+AArU/wAK1QEACtUCAArVEwAK1RgACtUbAArVHQAK1S4ACtU3AArVOgAK1T0ACtU/AArVWgAK1WUACtXgAArV4gAK1eQACtXmAArV6QAK1eoACtXrAArV7AAK1e0ACtXvAArV8QAK1fIACtXzAArV9QAK1fYACtZxAArWcwAK1nYACtZ4AArWewAK1nwACtZ9AArWfgAK1n8ACtaBAArWgwAK1oQACtaFAArWhwAK1ogACtaZAArWmgAK1pwACtcXAArXGQAK1xsACtcdAArXIAAK1yEACtciAArXIwAK1yQACtcmAArXKAAK1ykACtcqAArXLAAK1y0ACteoAArXqgAK160ACtevAArXsgAK17MACte0AArXtQAK17YACte4AArXugAK17sACte8AArXvgAK178ACtfYAArX2QAK19oACtfcAArYVwAK2FkACthbAArYXQAK2GAACthhAArYYgAK2GMACthkAArYZgAK2GgACthpAArYagAK2GwACthtAArY6AAK2OoACtjtAArY7wAK2PIACtjzAArY9AAK2PUACtj2AArY+AAK2PoACtj7AArY/AAK2P4ACtj/AArZGQAK2TIACtlTAArZVgAK2VkACtlcAArZXwAK2WIACtllAArZaAAK2WsACtmMAArZjwAK2ZIACtmVAArZmAAK2ZsACtmeAArZoQAK2aQACtmmAArZtQAK2cMACtneAArZ9AAK2gcACtogAAraOQAK2swACtrvAArbDwAK2y8ACtsxAArbMwAK2zUACts3AArbOgAK2zsACts8AArbPwAK20AACttCAArbQwAK20UACttIAArbSQAK20oACttNAArbTgAK21cACttwAArbeQAK23sACtt9AArbhgAK24kACtuMAArbjgAK29cACtv7AArcIgAK3EYACtxJAArcSwAK3E0ACtxPAArcUQAK3FMACtxUAArcVwAK3HAACtyRAArckwAK3JUACtyXAArcmQAK3JsACtydAArcnwAK3KEACtzCAArcxQAK3MgACtzLAArczgAK3NEACtzUAArc1wAK3NoACtzcAArdVwAK3VkACt1bAArdXQAK3WAACt1hAArdYgAK3WMACt1kAArdZgAK3WgACt1pAArdagAK3WwACt1tAArd6AAK3eoACt3sAArd7gAK3fEACt3yAArd8wAK3fQACt31AArd9wAK3fkACt36AArd+wAK3f0ACt3+AAreeQAK3nsACt5+AAregAAK3oMACt6EAArehQAK3oYACt6HAAreiQAK3osACt6MAArejQAK3o8ACt6QAAreqQAK3qoACt6rAArerQAK3ygACt8qAArfLAAK3y4ACt8xAArfMgAK3zMACt80AArfNQAK3zcACt85AArfOgAK3zsACt89AArfPgAK37kACt+7AArfvQAK378ACt/CAArfwwAK38QACt/FAArfxgAK38gACt/KAArfywAK38wACt/OAArfzwAK4EoACuBMAArgTgAK4FAACuBTAArgVAAK4FUACuBWAArgVwAK4FkACuBbAArgXAAK4F0ACuBfAArgYAAK4NsACuDdAArg3wAK4OEACuDkAArg5QAK4OYACuDnAArg6AAK4OoACuDsAArg7QAK4O4ACuDwAArg8QAK4WwACuFuAArhcAAK4XIACuF1AArhdgAK4XcACuF4AArheQAK4XsACuF9AArhfgAK4X8ACuGBAArhggAK4csACuHvAAriFgAK4joACuI9AAriPwAK4kEACuJDAAriRQAK4kcACuJIAAriSwAK4mQACuKBAArigwAK4oUACuKHAAriiQAK4osACuKNAArijwAK4qwACuKvAArisgAK4rUACuK4AAriuwAK4r4ACuLBAAriwwAK4z4ACuNAAArjQgAK40QACuNHAArjSAAK40kACuNKAArjSwAK400ACuNPAArjUAAK41EACuNTAArjVAAK488ACuPRAArj0wAK49UACuPYAArj2QAK49oACuPbAArj3AAK494ACuPgAArj4QAK4+IACuPkAArj5QAK5GAACuRiAArkZAAK5GYACuRpAArkagAK5GsACuRsAArkbQAK5G8ACuRxAArkcgAK5HMACuR1AArkdgAK5PEACuTzAArk9gAK5PgACuT7AArk/AAK5P0ACuT+AArk/wAK5QEACuUDAArlBAAK5QUACuUHAArlCAAK5YMACuWFAArlhwAK5YkACuWMAArljQAK5Y4ACuWPAArlkAAK5ZIACuWUAArllQAK5ZYACuWYAArlmQAK5hQACuYWAArmGAAK5hoACuYdAArmHgAK5h8ACuYgAArmIQAK5iMACuYlAArmJgAK5icACuYpAArmKgAK5qUACuanAArmqQAK5qsACuauAArmrwAK5rAACuaxAArmsgAK5rQACua2AArmtwAK5rgACua6AArmuwAK504ACudxAArnkQAK57EACuezAArntQAK57cACue5AArnvAAK570ACue+AArnwQAK58IACufEAArnxQAK58cACufKAArnywAK58wACufPAArn0AAK59UACufuAArn9wAK5/kACuf7AAroBAAK6AcACugKAAroDAAK6FUACuh5AArooAAK6MQACujHAAroyQAK6MsACujNAArozwAK6NEACujSAAro1QAK6O4ACukPAArpEQAK6RMACukVAArpFwAK6RkACukbAArpHQAK6R8ACulAAArpQwAK6UYACulJAArpTAAK6U8ACulSAArpVQAK6VgACulaAArp1QAK6dcACunZAArp2wAK6d4ACunfAArp4AAK6eEACuniAArp5AAK6eYACunnAArp6AAK6eoACunrAArqZgAK6mgACupqAArqbAAK6m8ACupwAArqcQAK6nIACupzAArqdQAK6ncACup4AArqeQAK6nsACup8AArq9wAK6vkACur8AArq/gAK6wEACusCAArrAwAK6wQACusFAArrBwAK6wkACusKAArrCwAK6w0ACusOAArrJwAK6ygACuspAArrKwAK66YACuuoAArrqgAK66wACuuvAArrsAAK67EACuuyAArrswAK67UACuu3AArruAAK67kACuu7AArrvAAK7DcACuw5AArsOwAK7D0ACuxAAArsQQAK7EIACuxDAArsRAAK7EYACuxIAArsSQAK7EoACuxMAArsTQAK7MgACuzKAArszAAK7M4ACuzRAArs0gAK7NMACuzUAArs1QAK7NcACuzZAArs2gAK7NsACuzdAArs3gAK7VkACu1bAArtXQAK7V8ACu1iAArtYwAK7WQACu1lAArtZgAK7WgACu1qAArtawAK7WwACu1uAArtbwAK7eoACu3sAArt7gAK7fAACu3zAArt9AAK7fUACu32AArt9wAK7fkACu37AArt/AAK7f0ACu3/AAruAAAK7kkACu5tAArulAAK7rgACu67AAruvQAK7r8ACu7BAAruwwAK7sUACu7GAAruyQAK7uIACu7/AArvAQAK7wMACu8FAArvBwAK7wkACu8LAArvDQAK7yoACu8tAArvMAAK7zMACu82AArvOQAK7zwACu8/AArvQQAK77wACu++AArvwAAK78IACu/FAArvxgAK78cACu/IAArvyQAK78sACu/NAArvzgAK788ACu/RAArv0gAK8E0ACvBPAArwUQAK8FMACvBWAArwVwAK8FgACvBZAArwWgAK8FwACvBeAArwXwAK8GAACvBiAArwYwAK8N4ACvDgAArw4gAK8OQACvDnAArw6AAK8OkACvDqAArw6wAK8O0ACvDvAArw8AAK8PEACvDzAArw9AAK8W8ACvFxAArxdAAK8XYACvF5AArxegAK8XsACvF8AArxfQAK8X8ACvGBAArxggAK8YMACvGFAArxhgAK8gEACvIDAAryBQAK8gcACvIKAAryCwAK8gwACvINAAryDgAK8hAACvISAAryEwAK8hQACvIWAAryFwAK8pIACvKUAArylgAK8pgACvKbAArynAAK8p0ACvKeAArynwAK8qEACvKjAArypAAK8qUACvKnAAryqAAK8yMACvMlAArzJwAK8ykACvMsAArzLQAK8y4ACvMvAArzMAAK8zIACvM0AArzNQAK8zYACvM4AArzOQAK88wACvPvAAr0DwAK9C8ACvQxAAr0MwAK9DUACvQ3AAr0OgAK9DsACvQ8AAr0PwAK9EAACvRCAAr0QwAK9EUACvRIAAr0SQAK9EoACvRNAAr0TgAK9FMACvRsAAr0dQAK9HcACvR5AAr0ggAK9IUACvSIAAr0igAK9NMACvT3AAr1HgAK9UIACvVFAAr1RwAK9UkACvVLAAr1TQAK9U8ACvVQAAr1UwAK9WwACvWNAAr1jwAK9ZEACvWTAAr1lQAK9ZcACvWZAAr1mwAK9Z0ACvW+AAr1wQAK9cQACvXHAAr1ygAK9c0ACvXQAAr10wAK9dYACvXYAAr2UwAK9lUACvZXAAr2WQAK9lwACvZdAAr2XgAK9l8ACvZgAAr2YgAK9mQACvZlAAr2ZgAK9mgACvZpAAr25AAK9uYACvboAAr26gAK9u0ACvbuAAr27wAK9vAACvbxAAr28wAK9vUACvb2AAr29wAK9vkACvb6AAr3dQAK93cACvd6AAr3fAAK938ACveAAAr3gQAK94IACveDAAr3hQAK94cACveIAAr3iQAK94sACveMAAr3pQAK96YACvenAAr3qQAK+CQACvgmAAr4KAAK+CoACvgtAAr4LgAK+C8ACvgwAAr4MQAK+DMACvg1AAr4NgAK+DcACvg5AAr4OgAK+LUACvi3AAr4uQAK+LsACvi+AAr4vwAK+MAACvjBAAr4wgAK+MQACvjGAAr4xwAK+MgACvjKAAr4ywAK+UYACvlIAAr5SgAK+UwACvlPAAr5UAAK+VEACvlSAAr5UwAK+VUACvlXAAr5WAAK+VkACvlbAAr5XAAK+dcACvnZAAr52wAK+d0ACvngAAr54QAK+eIACvnjAAr55AAK+eYACvnoAAr56QAK+eoACvnsAAr57QAK+mgACvpqAAr6bAAK+m4ACvpxAAr6cgAK+nMACvp0AAr6dQAK+ncACvp5AAr6egAK+nsACvp9AAr6fgAK+scACvrrAAr7EgAK+zYACvs5AAr7OwAK+z0ACvs/AAr7QQAK+0MACvtEAAr7RwAK+2AACvt9AAr7fwAK+4EACvuDAAr7hQAK+4cACvuJAAr7iwAK+6gACvurAAr7rgAK+7EACvu0AAr7twAK+7oACvu9AAr7vwAK/DoACvw8AAr8PgAK/EAACvxDAAr8RAAK/EUACvxGAAr8RwAK/EkACvxLAAr8TAAK/E0ACvxPAAr8UAAK/MsACvzNAAr8zwAK/NEACvzUAAr81QAK/NYACvzXAAr82AAK/NoACvzcAAr83QAK/N4ACvzgAAr84QAK/VwACv1eAAr9YAAK/WIACv1lAAr9ZgAK/WcACv1oAAr9aQAK/WsACv1tAAr9bgAK/W8ACv1xAAr9cgAK/e0ACv3vAAr98QAK/fMACv32AAr99wAK/fgACv35AAr9+gAK/fwACv3+AAr9/wAK/gAACv4CAAr+AwAK/n4ACv6AAAr+ggAK/oQACv6HAAr+iAAK/okACv6KAAr+iwAK/o0ACv6PAAr+kAAK/pEACv6TAAr+lAAK/w8ACv8RAAr/EwAK/xUACv8YAAr/GQAK/xoACv8bAAr/HAAK/x4ACv8gAAr/IQAK/yIACv8kAAr/JQAK/6AACv+iAAr/pAAK/6YACv+pAAr/qgAK/6sACv+sAAr/rQAK/68ACv+xAAr/sgAK/7MACv+1AAr/tgALAEkACwBsAAsAjAALAKwACwCuAAsAsAALALIACwC0AAsAtwALALgACwC5AAsAvAALAL0ACwC/AAsAwAALAMIACwDFAAsAxgALAMcACwDKAAsAywALANAACwDpAAsA8gALAPQACwD2AAsA/wALAQIACwEFAAsBBwALAVAACwF0AAsBmwALAb8ACwHCAAsBxAALAcYACwHIAAsBygALAcwACwHNAAsB0AALAekACwIKAAsCDAALAg4ACwIQAAsCEgALAhQACwIWAAsCGAALAhoACwI7AAsCPgALAkEACwJEAAsCRwALAkoACwJNAAsCUAALAlMACwJVAAsC0AALAtIACwLUAAsC1gALAtkACwLaAAsC2wALAtwACwLdAAsC3wALAuEACwLiAAsC4wALAuUACwLmAAsDYQALA2MACwNlAAsDZwALA2oACwNrAAsDbAALA20ACwNuAAsDcAALA3IACwNzAAsDdAALA3YACwN3AAsD8gALA/QACwP3AAsD+QALA/wACwP9AAsD/gALA/8ACwQAAAsEAgALBAQACwQFAAsEBgALBAgACwQJAAsEIgALBCMACwQkAAsEJgALBKEACwSjAAsEpQALBKcACwSqAAsEqwALBKwACwStAAsErgALBLAACwSyAAsEswALBLQACwS2AAsEtwALBTIACwU0AAsFNgALBTgACwU7AAsFPAALBT0ACwU+AAsFPwALBUEACwVDAAsFRAALBUUACwVHAAsFSAALBcMACwXFAAsFxwALBckACwXMAAsFzQALBc4ACwXPAAsF0AALBdIACwXUAAsF1QALBdYACwXYAAsF2QALBlQACwZWAAsGWAALBloACwZdAAsGXgALBl8ACwZgAAsGYQALBmMACwZlAAsGZgALBmcACwZpAAsGagALBuUACwbnAAsG6QALBusACwbuAAsG7wALBvAACwbxAAsG8gALBvQACwb2AAsG9wALBvgACwb6AAsG+wALB0QACwdoAAsHjwALB7MACwe2AAsHuAALB7oACwe8AAsHvgALB8AACwfBAAsHxAALB90ACwf6AAsH/AALB/4ACwgAAAsIAgALCAQACwgGAAsICAALCCUACwgoAAsIKwALCC4ACwgxAAsINAALCDcACwg6AAsIPAALCLcACwi5AAsIuwALCL0ACwjAAAsIwQALCMIACwjDAAsIxAALCMYACwjIAAsIyQALCMoACwjMAAsIzQALCUgACwlKAAsJTAALCU4ACwlRAAsJUgALCVMACwlUAAsJVQALCVcACwlZAAsJWgALCVsACwldAAsJXgALCdkACwnbAAsJ3QALCd8ACwniAAsJ4wALCeQACwnlAAsJ5gALCegACwnqAAsJ6wALCewACwnuAAsJ7wALCmoACwpsAAsKbwALCnEACwp0AAsKdQALCnYACwp3AAsKeAALCnoACwp8AAsKfQALCn4ACwqAAAsKgQALCvwACwr+AAsLAAALCwIACwsFAAsLBgALCwcACwsIAAsLCQALCwsACwsNAAsLDgALCw8ACwsRAAsLEgALC40ACwuPAAsLkQALC5MACwuWAAsLlwALC5gACwuZAAsLmgALC5wACwueAAsLnwALC6AACwuiAAsLowALDB4ACwwgAAsMIgALDCQACwwnAAsMKAALDCkACwwqAAsMKwALDC0ACwwvAAsMMAALDDEACwwzAAsMNAALDMcACwzqAAsNCgALDSoACw0sAAsNLgALDTAACw0yAAsNNQALDTYACw03AAsNOgALDTsACw09AAsNPgALDUAACw1DAAsNRAALDUUACw1IAAsNSQALDU4ACw1nAAsNcAALDXIACw10AAsNfQALDYAACw2DAAsNhQALDc4ACw3yAAsOGQALDj0ACw5AAAsOQgALDkQACw5GAAsOSAALDkoACw5LAAsOTgALDmcACw6IAAsOigALDowACw6OAAsOkAALDpIACw6UAAsOlgALDpgACw65AAsOvAALDr8ACw7CAAsOxQALDsgACw7LAAsOzgALDtEACw7TAAsPTgALD1AACw9SAAsPVAALD1cACw9YAAsPWQALD1oACw9bAAsPXQALD18ACw9gAAsPYQALD2MACw9kAAsP3wALD+EACw/jAAsP5QALD+gACw/pAAsP6gALD+sACw/sAAsP7gALD/AACw/xAAsP8gALD/QACw/1AAsQcAALEHIACxB1AAsQdwALEHoACxB7AAsQfAALEH0ACxB+AAsQgAALEIIACxCDAAsQhAALEIYACxCHAAsQoAALEKEACxCiAAsQpAALER8ACxEhAAsRIwALESUACxEoAAsRKQALESoACxErAAsRLAALES4ACxEwAAsRMQALETIACxE0AAsRNQALEbAACxGyAAsRtAALEbYACxG5AAsRugALEbsACxG8AAsRvQALEb8ACxHBAAsRwgALEcMACxHFAAsRxgALEkEACxJDAAsSRQALEkcACxJKAAsSSwALEkwACxJNAAsSTgALElAACxJSAAsSUwALElQACxJWAAsSVwALEtIACxLUAAsS1gALEtgACxLbAAsS3AALEt0ACxLeAAsS3wALEuEACxLjAAsS5AALEuUACxLnAAsS6AALE2MACxNlAAsTZwALE2kACxNsAAsTbQALE24ACxNvAAsTcAALE3IACxN0AAsTdQALE3YACxN4AAsTeQALE8IACxPmAAsUDQALFDEACxQ0AAsUNgALFDgACxQ6AAsUPAALFD4ACxQ/AAsUQgALFFsACxR4AAsUegALFHwACxR+AAsUgAALFIIACxSEAAsUhgALFKMACxSmAAsUqQALFKwACxSvAAsUsgALFLUACxS4AAsUugALFTUACxU3AAsVOQALFTsACxU+AAsVPwALFUAACxVBAAsVQgALFUQACxVGAAsVRwALFUgACxVKAAsVSwALFcYACxXIAAsVygALFcwACxXPAAsV0AALFdEACxXSAAsV0wALFdUACxXXAAsV2AALFdkACxXbAAsV3AALFlcACxZZAAsWWwALFl0ACxZgAAsWYQALFmIACxZjAAsWZAALFmYACxZoAAsWaQALFmoACxZsAAsWbQALFugACxbqAAsW7AALFu4ACxbxAAsW8gALFvMACxb0AAsW9QALFvcACxb5AAsW+gALFvsACxb9AAsW/gALF3kACxd7AAsXfQALF38ACxeCAAsXgwALF4QACxeFAAsXhgALF4gACxeKAAsXiwALF4wACxeOAAsXjwALGAoACxgMAAsYDgALGBAACxgTAAsYFAALGBUACxgWAAsYFwALGBkACxgbAAsYHAALGB0ACxgfAAsYIAALGJsACxidAAsYnwALGKEACxikAAsYpQALGKYACxinAAsYqAALGKoACxisAAsYrQALGK4ACxiwAAsYsQALGUQACxlnAAsZhwALGacACxmpAAsZqwALGa0ACxmvAAsZsgALGbMACxm0AAsZtwALGbgACxm6AAsZuwALGb4ACxnBAAsZwgALGcMACxnGAAsZxwALGcwACxnlAAsZ7gALGfAACxnyAAsZ+wALGf4ACxoBAAsaAwALGkwACxpwAAsalwALGrsACxq+AAsawAALGsIACxrEAAsaxgALGsgACxrJAAsazAALGuUACxsGAAsbCAALGwoACxsMAAsbDgALGxAACxsSAAsbFAALGxYACxs3AAsbOgALGz0ACxtAAAsbQwALG0YACxtJAAsbTAALG08ACxtRAAsbzAALG84ACxvQAAsb0gALG9UACxvWAAsb1wALG9gACxvZAAsb2wALG90ACxveAAsb3wALG+EACxviAAscXQALHF8ACxxhAAscYwALHGYACxxnAAscaAALHGkACxxqAAscbAALHG4ACxxvAAsccAALHHIACxxzAAsc7gALHPAACxzzAAsc9QALHPgACxz5AAsc+gALHPsACxz8AAsc/gALHQAACx0BAAsdAgALHQQACx0FAAsdHgALHR8ACx0gAAsdIgALHZ0ACx2fAAsdoQALHaMACx2mAAsdpwALHagACx2pAAsdqgALHawACx2uAAsdrwALHbAACx2yAAsdswALHi4ACx4wAAseMgALHjQACx43AAseOAALHjkACx46AAseOwALHj0ACx4/AAseQAALHkEACx5DAAseRAALHr8ACx7BAAsewwALHsUACx7IAAseyQALHsoACx7LAAsezAALHs4ACx7QAAse0QALHtIACx7UAAse1QALH1AACx9SAAsfVAALH1YACx9ZAAsfWgALH1sACx9cAAsfXQALH18ACx9hAAsfYgALH2MACx9lAAsfZgALH+EACx/jAAsf5QALH+cACx/qAAsf6wALH+wACx/tAAsf7gALH/AACx/yAAsf8wALH/QACx/2AAsf9wALIEAACyBkAAsgiwALIK8ACyCyAAsgtAALILYACyC4AAsgugALILwACyC9AAsgwAALINkACyD2AAsg+AALIPoACyD8AAsg/gALIQAACyECAAshBAALISEACyEkAAshJwALISoACyEtAAshMAALITMACyE2AAshOAALIbMACyG1AAshtwALIbkACyG8AAshvQALIb4ACyG/AAshwAALIcIACyHEAAshxQALIcYACyHIAAshyQALIkQACyJGAAsiSAALIkoACyJNAAsiTgALIk8ACyJQAAsiUQALIlMACyJVAAsiVgALIlcACyJZAAsiWgALItUACyLXAAsi2QALItsACyLeAAsi3wALIuAACyLhAAsi4gALIuQACyLmAAsi5wALIugACyLqAAsi6wALI2YACyNoAAsjawALI20ACyNwAAsjcQALI3IACyNzAAsjdAALI3YACyN4AAsjeQALI3oACyN8AAsjfQALI/gACyP6AAsj/AALI/4ACyQBAAskAgALJAMACyQEAAskBQALJAcACyQJAAskCgALJAsACyQNAAskDgALJIkACySLAAskjQALJI8ACySSAAskkwALJJQACySVAAsklgALJJgACySaAAskmwALJJwACySeAAsknwALJRoACyUcAAslHwALJSEACyUkAAslJQALJSYACyUnAAslKAALJSoACyUsAAslLQALJS4ACyUwAAslMQALJcQACyXnAAsmBwALJicACyYpAAsmKwALJi0ACyYvAAsmMgALJjMACyY0AAsmNwALJjgACyY6AAsmOwALJj0ACyZAAAsmQQALJkIACyZFAAsmRgALJksACyZkAAsmbQALJm8ACyZxAAsmegALJn0ACyaAAAsmggALJssACybvAAsnFgALJzoACyc9AAsnPwALJ0EACydDAAsnRQALJ0cACydIAAsnSwALJ2QACyeFAAsnhwALJ4kACyeLAAsnjQALJ48ACyeRAAsnkwALJ5UACye2AAsnuQALJ7wACye/AAsnwgALJ8UACyfIAAsnywALJ84ACyfQAAsoSwALKE0ACyhPAAsoUQALKFQACyhVAAsoVgALKFcACyhYAAsoWgALKFwACyhdAAsoXgALKGAACyhhAAso3AALKN4ACyjgAAso4gALKOUACyjmAAso5wALKOgACyjpAAso6wALKO0ACyjuAAso7wALKPEACyjyAAspbQALKW8ACylyAAspdAALKXcACyl4AAspeQALKXoACyl7AAspfQALKX8ACymAAAspgQALKYMACymEAAspnQALKZ4ACymfAAspoQALKhwACyoeAAsqIAALKiIACyolAAsqJgALKicACyooAAsqKQALKisACyotAAsqLgALKi8ACyoxAAsqMgALKq0ACyqvAAsqsQALKrMACyq2AAsqtwALKrgACyq5AAsqugALKrwACyq+AAsqvwALKsAACyrCAAsqwwALKz4ACytAAAsrQgALK0QACytHAAsrSAALK0kACytKAAsrSwALK00ACytPAAsrUAALK1EACytTAAsrVAALK88ACyvRAAsr0wALK9UACyvYAAsr2QALK9oACyvbAAsr3AALK94ACyvgAAsr4QALK+IACyvkAAsr5QALLGAACyxiAAssZAALLGYACyxpAAssagALLGsACyxsAAssbQALLG8ACyxxAAsscgALLHMACyx1AAssdgALLL8ACyzjAAstCgALLS4ACy0xAAstMwALLTUACy03AAstOQALLTsACy08AAstPwALLVgACy11AAstdwALLXkACy17AAstfQALLX8ACy2BAAstgwALLaAACy2jAAstpgALLakACy2sAAstrwALLbIACy21AAsttwALLjIACy40AAsuNgALLjgACy47AAsuPAALLj0ACy4+AAsuPwALLkEACy5DAAsuRAALLkUACy5HAAsuSAALLsMACy7FAAsuxwALLskACy7MAAsuzQALLs4ACy7PAAsu0AALLtIACy7UAAsu1QALLtYACy7YAAsu2QALL1QACy9WAAsvWAALL1oACy9dAAsvXgALL18ACy9gAAsvYQALL2MACy9lAAsvZgALL2cACy9pAAsvagALL+UACy/nAAsv6gALL+wACy/vAAsv8AALL/EACy/yAAsv8wALL/UACy/3AAsv+AALL/kACy/7AAsv/AALMHcACzB5AAswewALMH0ACzCAAAswgQALMIIACzCDAAswhAALMIYACzCIAAswiQALMIoACzCMAAswjQALMQgACzEKAAsxDAALMQ4ACzERAAsxEgALMRMACzEUAAsxFQALMRcACzEZAAsxGgALMRsACzEdAAsxHgALMZkACzGbAAsxnQALMZ8ACzGiAAsxowALMaQACzGlAAsxpgALMagACzGqAAsxqwALMawACzGuAAsxrwALMkIACzJlAAsyhQALMqUACzKnAAsyqQALMqsACzKtAAsysAALMrEACzKyAAsytQALMrYACzK4AAsyuQALMrsACzK+AAsyvwALMsAACzLDAAsyxAALMskACzLiAAsy6wALMu0ACzLvAAsy+AALMvsACzL+AAszAAALM0kACzNtAAszlAALM7gACzO7AAszvQALM78ACzPBAAszwwALM8UACzPGAAszyQALM+IACzQDAAs0BQALNAcACzQJAAs0CwALNA0ACzQPAAs0EQALNBMACzQ0AAs0NwALNDoACzQ9AAs0QAALNEMACzRGAAs0SQALNEwACzROAAs0yQALNMsACzTNAAs0zwALNNIACzTTAAs01AALNNUACzTWAAs02AALNNoACzTbAAs03AALNN4ACzTfAAs1WgALNVwACzVeAAs1YAALNWMACzVkAAs1ZQALNWYACzVnAAs1aQALNWsACzVsAAs1bQALNW8ACzVwAAs16wALNe0ACzXwAAs18gALNfUACzX2AAs19wALNfgACzX5AAs1+wALNf0ACzX+AAs1/wALNgEACzYCAAs2GwALNhwACzYdAAs2HwALNpoACzacAAs2ngALNqAACzajAAs2pAALNqUACzamAAs2pwALNqkACzarAAs2rAALNq0ACzavAAs2sAALNysACzctAAs3LwALNzEACzc0AAs3NQALNzYACzc3AAs3OAALNzoACzc8AAs3PQALNz4ACzdAAAs3QQALN7wACze+AAs3wAALN8IACzfFAAs3xgALN8cACzfIAAs3yQALN8sACzfNAAs3zgALN88ACzfRAAs30gALOE0ACzhPAAs4UQALOFMACzhWAAs4VwALOFgACzhZAAs4WgALOFwACzheAAs4XwALOGAACzhiAAs4YwALON4ACzjgAAs44gALOOQACzjnAAs46AALOOkACzjqAAs46wALOO0ACzjvAAs48AALOPEACzjzAAs49AALOT0ACzlhAAs5iAALOawACzmvAAs5sQALObMACzm1AAs5twALObkACzm6AAs5vQALOdYACznzAAs59QALOfcACzn5AAs5+wALOf0ACzn/AAs6AQALOh4ACzohAAs6JAALOicACzoqAAs6LQALOjAACzozAAs6NQALOrAACzqyAAs6tQALOrcACzq6AAs6uwALOrwACzq9AAs6vgALOsAACzrCAAs6wwALOsQACzrGAAs6xwALO0IACztEAAs7RgALO0gACztLAAs7TAALO00ACztOAAs7TwALO1EACztTAAs7VAALO1UACztXAAs7WAALO9MACzvVAAs71wALO9kACzvcAAs73QALO94ACzvfAAs74AALO+IACzvkAAs75QALO+YACzvoAAs76QALPGQACzxmAAs8aQALPGsACzxuAAs8bwALPHAACzxxAAs8cgALPHQACzx2AAs8dwALPHgACzx6AAs8ewALPPYACzz4AAs8+gALPPwACzz/AAs9AAALPQEACz0CAAs9AwALPQUACz0HAAs9CAALPQkACz0LAAs9DAALPYcACz2JAAs9iwALPY0ACz2QAAs9kQALPZIACz2TAAs9lAALPZYACz2YAAs9mQALPZoACz2cAAs9nQALPhgACz4aAAs+HAALPh4ACz4hAAs+IgALPiMACz4kAAs+JQALPicACz4pAAs+KgALPisACz4tAAs+LgALPj8ACz5AAAs+QgALPr0ACz6/AAs+wQALPsMACz7GAAs+xwALPsgACz7JAAs+ygALPswACz7OAAs+zwALPtAACz7SAAs+0wALP04ACz9QAAs/UgALP1QACz9XAAs/WAALP1kACz9aAAs/WwALP10ACz9fAAs/YAALP2EACz9jAAs/ZAALP98ACz/hAAs/5AALP+YACz/pAAs/6gALP+sACz/sAAs/7QALP+8ACz/xAAs/8gALP/MACz/1AAs/9gALQIkAC0CsAAtAzAALQOwAC0DuAAtA8AALQPIAC0D0AAtA9wALQPgAC0D5AAtA/AALQP0AC0D/AAtBAAALQQIAC0EFAAtBBgALQQcAC0EKAAtBCwALQRQAC0EtAAtBNgALQTgAC0E6AAtBQwALQUYAC0FJAAtBSwALQZQAC0G4AAtB3wALQgMAC0IGAAtCCAALQgoAC0IMAAtCDgALQhAAC0IRAAtCFAALQi0AC0JOAAtCUAALQlIAC0JUAAtCVgALQlgAC0JaAAtCXAALQl4AC0J/AAtCggALQoUAC0KIAAtCiwALQo4AC0KRAAtClAALQpcAC0KZAAtDFAALQxYAC0MYAAtDGgALQx0AC0MeAAtDHwALQyAAC0MhAAtDIwALQyUAC0MmAAtDJwALQykAC0MqAAtDpQALQ6cAC0OpAAtDqwALQ64AC0OvAAtDsAALQ7EAC0OyAAtDtAALQ7YAC0O3AAtDuAALQ7oAC0O7AAtENgALRDgAC0Q7AAtEPQALREAAC0RBAAtEQgALREMAC0REAAtERgALREgAC0RJAAtESgALREwAC0RNAAtEZgALRGcAC0RoAAtEagALROUAC0TnAAtE6QALROsAC0TuAAtE7wALRPAAC0TxAAtE8gALRPQAC0T2AAtE9wALRPgAC0T6AAtE+wALRXYAC0V4AAtFegALRXwAC0V/AAtFgAALRYEAC0WCAAtFgwALRYUAC0WHAAtFiAALRYkAC0WLAAtFjAALRgcAC0YJAAtGCwALRg0AC0YQAAtGEQALRhIAC0YTAAtGFAALRhYAC0YYAAtGGQALRhoAC0YcAAtGHQALRpgAC0aaAAtGnAALRp4AC0ahAAtGogALRqMAC0akAAtGpQALRqcAC0apAAtGqgALRqsAC0atAAtGrgALRykAC0crAAtHLQALRy8AC0cyAAtHMwALRzQAC0c1AAtHNgALRzgAC0c6AAtHOwALRzwAC0c+AAtHPwALR4gAC0esAAtH0wALR/cAC0f6AAtH/AALR/4AC0gAAAtIAgALSAQAC0gFAAtICAALSCEAC0g+AAtIQAALSEIAC0hEAAtIRgALSEgAC0hKAAtITAALSGkAC0hsAAtIbwALSHIAC0h1AAtIeAALSHsAC0h+AAtIgAALSPsAC0j9AAtI/wALSQEAC0kEAAtJBQALSQYAC0kHAAtJCAALSQoAC0kMAAtJDQALSQ4AC0kQAAtJEQALSYwAC0mOAAtJkAALSZIAC0mVAAtJlgALSZcAC0mYAAtJmQALSZsAC0mdAAtJngALSZ8AC0mhAAtJogALSh0AC0ofAAtKIQALSiMAC0omAAtKJwALSigAC0opAAtKKgALSiwAC0ouAAtKLwALSjAAC0oyAAtKMwALSq4AC0qwAAtKsgALSrQAC0q3AAtKuAALSrkAC0q6AAtKuwALSr0AC0q/AAtKwAALSsEAC0rDAAtKxAALSz8AC0tBAAtLQwALS0UAC0tIAAtLSQALS0oAC0tLAAtLTAALS04AC0tQAAtLUQALS1IAC0tUAAtLVQALS9AAC0vSAAtL1AALS9YAC0vZAAtL2gALS9sAC0vcAAtL3QALS98AC0vhAAtL4gALS+MAC0vlAAtL5gALTGEAC0xjAAtMZQALTGcAC0xqAAtMawALTGwAC0xtAAtMbgALTHAAC0xyAAtMcwALTHQAC0x2AAtMdwALTQoAC00tAAtNTQALTW0AC01vAAtNcQALTXMAC011AAtNeAALTXkAC016AAtNfQALTX4AC02AAAtNgQALTYMAC02GAAtNhwALTYgAC02LAAtNjAALTZUAC02uAAtNtwALTbkAC027AAtNxAALTccAC03KAAtNzAALThUAC045AAtOYAALToQAC06HAAtOiQALTosAC06NAAtOjwALTpEAC06SAAtOlQALTq4AC07PAAtO0QALTtMAC07VAAtO1wALTtkAC07bAAtO3QALTt8AC08AAAtPAwALTwYAC08JAAtPDAALTw8AC08SAAtPFQALTxgAC08aAAtPlQALT5cAC0+ZAAtPmwALT54AC0+fAAtPoAALT6EAC0+iAAtPpAALT6YAC0+nAAtPqAALT6oAC0+rAAtQJgALUCgAC1AqAAtQLAALUC8AC1AwAAtQMQALUDIAC1AzAAtQNQALUDcAC1A4AAtQOQALUDsAC1A8AAtQtwALULkAC1C8AAtQvgALUMEAC1DCAAtQwwALUMQAC1DFAAtQxwALUMkAC1DKAAtQywALUM0AC1DOAAtQ5wALUOgAC1DpAAtQ6wALUWYAC1FoAAtRagALUWwAC1FvAAtRcAALUXEAC1FyAAtRcwALUXUAC1F3AAtReAALUXkAC1F7AAtRfAALUfcAC1H5AAtR+wALUf0AC1IAAAtSAQALUgIAC1IDAAtSBAALUgYAC1IIAAtSCQALUgoAC1IMAAtSDQALUogAC1KKAAtSjAALUo4AC1KRAAtSkgALUpMAC1KUAAtSlQALUpcAC1KZAAtSmgALUpsAC1KdAAtSngALUxkAC1MbAAtTHQALUx8AC1MiAAtTIwALUyQAC1MlAAtTJgALUygAC1MqAAtTKwALUywAC1MuAAtTLwALU6oAC1OsAAtTrgALU7AAC1OzAAtTtAALU7UAC1O2AAtTtwALU7kAC1O7AAtTvAALU70AC1O/AAtTwAALVAkAC1QtAAtUVAALVHgAC1R7AAtUfQALVH8AC1SBAAtUgwALVIUAC1SGAAtUiQALVKIAC1S/AAtUwQALVMMAC1TFAAtUxwALVMkAC1TLAAtUzQALVOoAC1TtAAtU8AALVPMAC1T2AAtU+QALVPwAC1T/AAtVAQALVXwAC1V+AAtVgAALVYIAC1WFAAtVhgALVYcAC1WIAAtViQALVYsAC1WNAAtVjgALVY8AC1WRAAtVkgALVg0AC1YPAAtWEQALVhMAC1YWAAtWFwALVhgAC1YZAAtWGgALVhwAC1YeAAtWHwALViAAC1YiAAtWIwALVp4AC1agAAtWogALVqQAC1anAAtWqAALVqkAC1aqAAtWqwALVq0AC1avAAtWsAALVrEAC1azAAtWtAALVy8AC1cxAAtXNAALVzYAC1c5AAtXOgALVzsAC1c8AAtXPQALVz8AC1dBAAtXQgALV0MAC1dFAAtXRgALV8EAC1fDAAtXxQALV8cAC1fKAAtXywALV8wAC1fNAAtXzgALV9AAC1fSAAtX0wALV9QAC1fWAAtX1wALWFIAC1hUAAtYVgALWFgAC1hbAAtYXAALWF0AC1heAAtYXwALWGEAC1hjAAtYZAALWGUAC1hnAAtYaAALWOMAC1jlAAtY5wALWOkAC1jsAAtY7QALWO4AC1jvAAtY8AALWPIAC1j0AAtY9QALWPYAC1j4AAtY+QALWYwAC1mvAAtZzwALWe8AC1nxAAtZ8wALWfUAC1n3AAtZ+gALWfsAC1n8AAtZ/wALWgAAC1oCAAtaAwALWgYAC1oJAAtaCgALWgsAC1oOAAtaDwALWhgAC1oxAAtaOgALWjwAC1o+AAtaRwALWkoAC1pNAAtaTwALWpgAC1q8AAta4wALWwcAC1sKAAtbDAALWw4AC1sQAAtbEgALWxQAC1sVAAtbGAALWzEAC1tSAAtbVAALW1YAC1tYAAtbWgALW1wAC1teAAtbYAALW2IAC1uDAAtbhgALW4kAC1uMAAtbjwALW5IAC1uVAAtbmAALW5sAC1udAAtcGAALXBoAC1wcAAtcHgALXCEAC1wiAAtcIwALXCQAC1wlAAtcJwALXCkAC1wqAAtcKwALXC0AC1wuAAtcqQALXKsAC1ytAAtcrwALXLIAC1yzAAtctAALXLUAC1y2AAtcuAALXLoAC1y7AAtcvAALXL4AC1y/AAtdOgALXTwAC10/AAtdQQALXUQAC11FAAtdRgALXUcAC11IAAtdSgALXUwAC11NAAtdTgALXVAAC11RAAtdagALXWsAC11sAAtdbgALXekAC13rAAtd7QALXe8AC13yAAtd8wALXfQAC131AAtd9gALXfgAC136AAtd+wALXfwAC13+AAtd/wALXnoAC158AAtefgALXoAAC16DAAtehAALXoUAC16GAAtehwALXokAC16LAAtejAALXo0AC16PAAtekAALXwsAC18NAAtfDwALXxEAC18UAAtfFQALXxYAC18XAAtfGAALXxoAC18cAAtfHQALXx4AC18gAAtfIQALX5wAC1+eAAtfoAALX6IAC1+lAAtfpgALX6cAC1+oAAtfqQALX6sAC1+tAAtfrgALX68AC1+xAAtfsgALYC0AC2AvAAtgMQALYDMAC2A2AAtgNwALYDgAC2A5AAtgOgALYDwAC2A+AAtgPwALYEAAC2BCAAtgQwALYIwAC2CwAAtg1wALYPsAC2D+AAthAAALYQIAC2EEAAthBgALYQgAC2EJAAthDAALYSUAC2FCAAthRAALYUYAC2FIAAthSgALYUwAC2FOAAthUAALYW0AC2FwAAthcwALYXYAC2F5AAthfAALYX8AC2GCAAthhAALYf8AC2IBAAtiAwALYgUAC2IIAAtiCQALYgoAC2ILAAtiDAALYg4AC2IQAAtiEQALYhIAC2IUAAtiFQALYpAAC2KSAAtilQALYpcAC2KaAAtimwALYpwAC2KdAAtingALYqAAC2KiAAtiowALYqQAC2KmAAtipwALYyIAC2MkAAtjJgALYygAC2MrAAtjLAALYy0AC2MuAAtjLwALYzEAC2MzAAtjNAALYzUAC2M3AAtjOAALY7MAC2O1AAtjuAALY7oAC2O9AAtjvgALY78AC2PAAAtjwQALY8MAC2PFAAtjxgALY8cAC2PJAAtjygALZG0AC2SRAAtktQALZNUAC2T8AAtlIwALZUMAC2VqAAtljgALZbEAC2XYAAtl/AALZiAAC2ZEAAtmawALZmwAC2ZuAAtmcAALZnMAC2Z1AAtmeAALZnoAC2Z8AAtmfwALZoEAC2aDAAtmhgALZokAC2aLAAtmjQALZo8AC2aSAAtmlQALZpgAC2adAAtmtgALZrsAC2a9AAtmwgALZsUAC2bHAAtnEAALZzQAC2dbAAtnfwALZ4IAC2eEAAtnhgALZ4gAC2eKAAtnjAALZ40AC2eQAAtnqQALZ84AC2fQAAtn0gALZ9QAC2fWAAtn2AALZ9oAC2fcAAtn3gALZ+AAC2gFAAtoCAALaAsAC2gOAAtoEQALaBQAC2gXAAtoGgALaB0AC2ggAAtoIgALaJ0AC2ifAAtoogALaKQAC2inAAtoqAALaKkAC2iqAAtoqwALaK0AC2ivAAtosAALaLEAC2izAAtotAALaMUAC2jGAAtoyAALaUMAC2lFAAtpRwALaUkAC2lMAAtpTQALaU4AC2lPAAtpUAALaVIAC2lUAAtpVQALaVYAC2lYAAtpWQALadQAC2nWAAtp2QALadsAC2neAAtp3wALaeAAC2nhAAtp4gALaeQAC2nmAAtp5wALaegAC2nqAAtp6wALafwAC2n9AAtp/wALanoAC2p8AAtqfgALaoAAC2qDAAtqhAALaoUAC2qGAAtqhwALaokAC2qLAAtqjAALao0AC2qPAAtqkAALawsAC2sNAAtrEAALaxIAC2sVAAtrFgALaxcAC2sYAAtrGQALaxsAC2sdAAtrHgALax8AC2shAAtrIgALazMAC2s0AAtrNgALa7EAC2uzAAtrtQALa7cAC2u6AAtruwALa7wAC2u9AAtrvgALa8AAC2vCAAtrwwALa8QAC2vGAAtrxwALbEIAC2xEAAtsRwALbEkAC2xMAAtsTQALbE4AC2xPAAtsUAALbFIAC2xUAAtsVQALbFYAC2xYAAtsWQALbHIAC2xzAAtsdAALbHYAC2zxAAts8wALbPUAC2z3AAts+gALbPsAC2z8AAts/QALbP4AC20AAAttAgALbQMAC20EAAttBgALbQcAC22CAAtthAALbYcAC22JAAttjAALbY0AC22OAAttjwALbZAAC22SAAttlAALbZUAC22WAAttmAALbZkAC22vAAttyAALbeEAC23kAAtt5wALbeoAC23tAAtt8AALbfMAC24MAAtuDwALbhIAC24VAAtuGAALbhsAC24eAAtuIAALbiUAC24zAAtuRgALblUAC25aAAtu7QALbxAAC28wAAtvUAALb1IAC29UAAtvVgALb1gAC29bAAtvXAALb10AC29gAAtvYQALb2MAC29kAAtvZgALb2kAC29qAAtvawALb24AC29vAAtvdAALb40AC2+WAAtvmAALb5oAC2+jAAtvpgALb6kAC2+rAAtv9AALcBgAC3A/AAtwYwALcGYAC3BoAAtwagALcGwAC3BuAAtwcAALcHEAC3B0AAtwjQALcK4AC3CwAAtwsgALcLQAC3C2AAtwuAALcLoAC3C8AAtwvgALcN8AC3DiAAtw5QALcOgAC3DrAAtw7gALcPEAC3D0AAtw9wALcPkAC3F0AAtxdgALcXgAC3F6AAtxfQALcX4AC3F/AAtxgAALcYEAC3GDAAtxhQALcYYAC3GHAAtxiQALcYoAC3IFAAtyBwALcgkAC3ILAAtyDgALcg8AC3IQAAtyEQALchIAC3IUAAtyFgALchcAC3IYAAtyGgALchsAC3KWAAtymAALcpsAC3KdAAtyoAALcqEAC3KiAAtyowALcqQAC3KmAAtyqAALcqkAC3KqAAtyrAALcq0AC3LGAAtyxwALcsgAC3LKAAtzRQALc0cAC3NJAAtzSwALc04AC3NPAAtzUAALc1EAC3NSAAtzVAALc1YAC3NXAAtzWAALc1oAC3NbAAtz1gALc9gAC3PaAAtz3AALc98AC3PgAAtz4QALc+IAC3PjAAtz5QALc+cAC3PoAAtz6QALc+sAC3PsAAt0ZwALdGkAC3RrAAt0bQALdHAAC3RxAAt0cgALdHMAC3R0AAt0dgALdHgAC3R5AAt0egALdHwAC3R9AAt0+AALdPoAC3T8AAt0/gALdQEAC3UCAAt1AwALdQQAC3UFAAt1BwALdQkAC3UKAAt1CwALdQ0AC3UOAAt1iQALdYsAC3WNAAt1jwALdZIAC3WTAAt1lAALdZUAC3WWAAt1mAALdZoAC3WbAAt1nAALdZ4AC3WfAAt16AALdgwAC3YzAAt2VwALdloAC3ZcAAt2XgALdmAAC3ZiAAt2ZAALdmUAC3ZoAAt2gQALdp4AC3agAAt2ogALdqQAC3amAAt2qAALdqoAC3asAAt2yQALdswAC3bPAAt20gALdtUAC3bYAAt22wALdt4AC3bgAAt3WwALd10AC3dfAAt3YQALd2QAC3dlAAt3ZgALd2cAC3doAAt3agALd2wAC3dtAAt3bgALd3AAC3dxAAt37AALd+4AC3fwAAt38gALd/UAC3f2AAt39wALd/gAC3f5AAt3+wALd/0AC3f+AAt3/wALeAEAC3gCAAt4fQALeH8AC3iBAAt4gwALeIYAC3iHAAt4iAALeIkAC3iKAAt4jAALeI4AC3iPAAt4kAALeJIAC3iTAAt5DgALeRAAC3kTAAt5FQALeRgAC3kZAAt5GgALeRsAC3kcAAt5HgALeSAAC3khAAt5IgALeSQAC3klAAt5oAALeaIAC3mkAAt5pgALeakAC3mqAAt5qwALeawAC3mtAAt5rwALebEAC3myAAt5swALebUAC3m2AAt6MQALejMAC3o1AAt6NwALejoAC3o7AAt6PAALej0AC3o+AAt6QAALekIAC3pDAAt6RAALekYAC3pHAAt6wgALesQAC3rGAAt6yAALessAC3rMAAt6zQALes4AC3rPAAt60QALetMAC3rUAAt61QALetcAC3rYAAt7awALe44AC3uuAAt7zgALe9AAC3vSAAt71AALe9YAC3vZAAt72gALe9sAC3veAAt73wALe+EAC3viAAt75QALe+gAC3vpAAt76gALe+0AC3vuAAt78wALfAwAC3wVAAt8FwALfBkAC3wiAAt8JQALfCgAC3wqAAt8cwALfJcAC3y+AAt84gALfOUAC3znAAt86QALfOsAC3ztAAt87wALfPAAC3zzAAt9DAALfS0AC30vAAt9MQALfTMAC301AAt9NwALfTkAC307AAt9PQALfV4AC31hAAt9ZAALfWcAC31qAAt9bQALfXAAC31zAAt9dgALfXgAC33zAAt99QALffcAC335AAt9/AALff0AC33+AAt9/wALfgAAC34CAAt+BAALfgUAC34GAAt+CAALfgkAC36EAAt+hgALfogAC36KAAt+jQALfo4AC36PAAt+kAALfpEAC36TAAt+lQALfpYAC36XAAt+mQALfpoAC38VAAt/FwALfxoAC38cAAt/HwALfyAAC38hAAt/IgALfyMAC38lAAt/JwALfygAC38pAAt/KwALfywAC39FAAt/RgALf0cAC39JAAt/xAALf8YAC3/IAAt/ygALf80AC3/OAAt/zwALf9AAC3/RAAt/0wALf9UAC3/WAAt/1wALf9kAC3/aAAuAVQALgFcAC4BZAAuAWwALgF4AC4BfAAuAYAALgGEAC4BiAAuAZAALgGYAC4BnAAuAaAALgGoAC4BrAAuA5gALgOgAC4DqAAuA7AALgO8AC4DwAAuA8QALgPIAC4DzAAuA9QALgPcAC4D4AAuA+QALgPsAC4D8AAuBdwALgXkAC4F7AAuBfQALgYAAC4GBAAuBggALgYMAC4GEAAuBhgALgYgAC4GJAAuBigALgYwAC4GNAAuCCAALggoAC4IMAAuCDgALghEAC4ISAAuCEwALghQAC4IVAAuCFwALghkAC4IaAAuCGwALgh0AC4IeAAuCZwALgosAC4KyAAuC1gALgtkAC4LbAAuC3QALgt8AC4LhAAuC4wALguQAC4LnAAuDAAALgx0AC4MfAAuDIQALgyMAC4MlAAuDJwALgykAC4MrAAuDSAALg0sAC4NOAAuDUQALg1QAC4NXAAuDWgALg10AC4NfAAuD2gALg9wAC4PeAAuD4AALg+MAC4PkAAuD5QALg+YAC4PnAAuD6QALg+sAC4PsAAuD7QALg+8AC4PwAAuEawALhG0AC4RvAAuEcQALhHQAC4R1AAuEdgALhHcAC4R4AAuEegALhHwAC4R9AAuEfgALhIAAC4SBAAuE/AALhP4AC4UAAAuFAgALhQUAC4UGAAuFBwALhQgAC4UJAAuFCwALhQ0AC4UOAAuFDwALhREAC4USAAuFjQALhY8AC4WSAAuFlAALhZcAC4WYAAuFmQALhZoAC4WbAAuFnQALhZ8AC4WgAAuFoQALhaMAC4WkAAuGHwALhiEAC4YjAAuGJQALhigAC4YpAAuGKgALhisAC4YsAAuGLgALhjAAC4YxAAuGMgALhjQAC4Y1AAuGsAALhrIAC4a0AAuGtgALhrkAC4a6AAuGuwALhrwAC4a9AAuGvwALhsEAC4bCAAuGwwALhsUAC4bGAAuHQQALh0MAC4dGAAuHSAALh0sAC4dMAAuHTQALh04AC4dPAAuHUQALh1MAC4dUAAuHVQALh1cAC4dYAAuH6wALiA4AC4guAAuITgALiFAAC4hSAAuIVAALiFYAC4hZAAuIWgALiFsAC4heAAuIXwALiGEAC4hiAAuIZAALiGcAC4hoAAuIaQALiGwAC4htAAuIcgALiIsAC4iUAAuIlgALiJgAC4ihAAuIpAALiKcAC4ipAAuI8gALiRYAC4k9AAuJYQALiWQAC4lmAAuJaAALiWoAC4lsAAuJbgALiW8AC4lyAAuJiwALiawAC4muAAuJsAALibIAC4m0AAuJtgALibgAC4m6AAuJvAALid0AC4ngAAuJ4wALieYAC4npAAuJ7AALie8AC4nyAAuJ9QALifcAC4pyAAuKdAALinYAC4p4AAuKewALinwAC4p9AAuKfgALin8AC4qBAAuKgwALioQAC4qFAAuKhwALiogAC4sDAAuLBQALiwcAC4sJAAuLDAALiw0AC4sOAAuLDwALixAAC4sSAAuLFAALixUAC4sWAAuLGAALixkAC4uUAAuLlgALi5kAC4ubAAuLngALi58AC4ugAAuLoQALi6IAC4ukAAuLpgALi6cAC4uoAAuLqgALi6sAC4vEAAuLxQALi8YAC4vIAAuMQwALjEUAC4xHAAuMSQALjEwAC4xNAAuMTgALjE8AC4xQAAuMUgALjFQAC4xVAAuMVgALjFgAC4xZAAuM1AALjNYAC4zYAAuM2gALjN0AC4zeAAuM3wALjOAAC4zhAAuM4wALjOUAC4zmAAuM5wALjOkAC4zqAAuNZQALjWcAC41pAAuNawALjW4AC41vAAuNcAALjXEAC41yAAuNdAALjXYAC413AAuNeAALjXoAC417AAuN9gALjfgAC436AAuN/AALjf8AC44AAAuOAQALjgIAC44DAAuOBQALjgcAC44IAAuOCQALjgsAC44MAAuOhwALjokAC46LAAuOjQALjpAAC46RAAuOkgALjpMAC46UAAuOlgALjpgAC46ZAAuOmgALjpwAC46dAAuO5gALjwoAC48xAAuPVQALj1gAC49aAAuPXAALj14AC49gAAuPYgALj2MAC49mAAuPfwALj5wAC4+eAAuPoAALj6IAC4+kAAuPpgALj6gAC4+qAAuPxwALj8oAC4/NAAuP0AALj9MAC4/WAAuP2QALj9wAC4/eAAuQWQALkFsAC5BdAAuQXwALkGIAC5BjAAuQZAALkGUAC5BmAAuQaAALkGoAC5BrAAuQbAALkG4AC5BvAAuQ6gALkOwAC5DuAAuQ8AALkPMAC5D0AAuQ9QALkPYAC5D3AAuQ+QALkPsAC5D8AAuQ/QALkP8AC5EAAAuRewALkX0AC5F/AAuRgQALkYQAC5GFAAuRhgALkYcAC5GIAAuRigALkYwAC5GNAAuRjgALkZAAC5GRAAuSDAALkg4AC5IQAAuSEgALkhUAC5IWAAuSFwALkhgAC5IZAAuSGwALkh0AC5IeAAuSHwALkiEAC5IiAAuSnQALkp8AC5KhAAuSowALkqYAC5KnAAuSqAALkqkAC5KqAAuSrAALkq4AC5KvAAuSsAALkrIAC5KzAAuTLgALkzAAC5MyAAuTNAALkzcAC5M4AAuTOQALkzoAC5M7AAuTPQALkz8AC5NAAAuTQQALk0MAC5NEAAuTvwALk8EAC5PDAAuTxQALk8gAC5PJAAuTygALk8sAC5PMAAuTzgALk9AAC5PRAAuT0gALk9QAC5PVAAuUaAALlIsAC5SrAAuUywALlM0AC5TPAAuU0QALlNMAC5TWAAuU1wALlNgAC5TbAAuU3AALlN4AC5TfAAuU4QALlOQAC5TlAAuU5gALlOkAC5TqAAuU7wALlQgAC5URAAuVEwALlRUAC5UeAAuVIQALlSQAC5UmAAuVbwALlZMAC5W6AAuV3gALleEAC5XjAAuV5QALlecAC5XpAAuV6wALlewAC5XvAAuWCAALlikAC5YrAAuWLQALli8AC5YxAAuWMwALljUAC5Y3AAuWOQALlloAC5ZdAAuWYAALlmMAC5ZmAAuWaQALlmwAC5ZvAAuWcgALlnQAC5bvAAuW8QALlvMAC5b1AAuW+AALlvkAC5b6AAuW+wALlvwAC5b+AAuXAAALlwEAC5cCAAuXBAALlwUAC5eAAAuXggALl4QAC5eGAAuXiQALl4oAC5eLAAuXjAALl40AC5ePAAuXkQALl5IAC5eTAAuXlQALl5YAC5gRAAuYEwALmBYAC5gYAAuYGwALmBwAC5gdAAuYHgALmB8AC5ghAAuYIwALmCQAC5glAAuYJwALmCgAC5hBAAuYQgALmEMAC5hFAAuYwAALmMIAC5jEAAuYxgALmMkAC5jKAAuYywALmMwAC5jNAAuYzwALmNEAC5jSAAuY0wALmNUAC5jWAAuZUQALmVMAC5lVAAuZVwALmVoAC5lbAAuZXAALmV0AC5leAAuZYAALmWIAC5ljAAuZZAALmWYAC5lnAAuZ4gALmeQAC5nmAAuZ6AALmesAC5nsAAuZ7QALme4AC5nvAAuZ8QALmfMAC5n0AAuZ9QALmfcAC5n4AAuacwALmnUAC5p3AAuaeQALmnwAC5p9AAuafgALmn8AC5qAAAuaggALmoQAC5qFAAuahgALmogAC5qJAAubBAALmwYAC5sIAAubCgALmw0AC5sOAAubDwALmxAAC5sRAAubEwALmxUAC5sWAAubFwALmxkAC5saAAubYwALm4cAC5uuAAub0gALm9UAC5vXAAub2QALm9sAC5vdAAub3wALm+AAC5vjAAub/AALnBkAC5wbAAucHQALnB8AC5whAAucIwALnCUAC5wnAAucRAALnEcAC5xKAAucTQALnFAAC5xTAAucVgALnFkAC5xbAAuc1gALnNgAC5zaAAuc3AALnN8AC5zgAAuc4QALnOIAC5zjAAuc5QALnOcAC5zoAAuc6QALnOsAC5zsAAudZwALnWkAC51rAAudbQALnXAAC51xAAudcgALnXMAC510AAuddgALnXgAC515AAudegALnXwAC519AAud+AALnfoAC538AAud/gALngEAC54CAAueAwALngQAC54FAAueBwALngkAC54KAAueCwALng0AC54OAAueiQALnosAC56OAAuekAALnpMAC56UAAuelQALnpYAC56XAAuemQALnpsAC56cAAuenQALnp8AC56gAAufGwALnx0AC58fAAufIQALnyQAC58lAAufJgALnycAC58oAAufKgALnywAC58tAAufLgALnzAAC58xAAufrAALn64AC5+wAAufsgALn7UAC5+2AAuftwALn7gAC5+5AAufuwALn70AC5++AAufvwALn8EAC5/CAAugPQALoD8AC6BBAAugQwALoEYAC6BHAAugSAALoEkAC6BKAAugTAALoE4AC6BPAAugUAALoFIAC6BTAAug5gALoQkAC6EpAAuhSQALoUsAC6FNAAuhTwALoVEAC6FUAAuhVQALoVYAC6FZAAuhWgALoVwAC6FdAAuhXwALoWIAC6FjAAuhZAALoWcAC6FoAAuhbQALoYYAC6GPAAuhkQALoZMAC6GcAAuhnwALoaIAC6GkAAuh7QALohEAC6I4AAuiXAALol8AC6JhAAuiYwALomUAC6JnAAuiaQALomoAC6JtAAuihgALoqcAC6KpAAuiqwALoq0AC6KvAAuisQALorMAC6K1AAuitwALotgAC6LbAAui3gALouEAC6LkAAui5wALouoAC6LtAAui8AALovIAC6NtAAujbwALo3EAC6NzAAujdgALo3cAC6N4AAujeQALo3oAC6N8AAujfgALo38AC6OAAAujggALo4MAC6P+AAukAAALpAIAC6QEAAukBwALpAgAC6QJAAukCgALpAsAC6QNAAukDwALpBAAC6QRAAukEwALpBQAC6SPAAukkQALpJQAC6SWAAukmQALpJoAC6SbAAuknAALpJ0AC6SfAAukoQALpKIAC6SjAAukpQALpKYAC6S/AAukwAALpMEAC6TDAAulPgALpUAAC6VCAAulRAALpUcAC6VIAAulSQALpUoAC6VLAAulTQALpU8AC6VQAAulUQALpVMAC6VUAAulzwALpdEAC6XTAAul1QALpdgAC6XZAAul2gALpdsAC6XcAAul3gALpeAAC6XhAAul4gALpeQAC6XlAAumYAALpmIAC6ZkAAumZgALpmkAC6ZqAAumawALpmwAC6ZtAAumbwALpnEAC6ZyAAumcwALpnUAC6Z2AAum8QALpvMAC6b1AAum9wALpvoAC6b7AAum/AALpv0AC6b+AAunAAALpwIAC6cDAAunBAALpwYAC6cHAAunggALp4QAC6eGAAuniAALp4sAC6eMAAunjQALp44AC6ePAAunkQALp5MAC6eUAAunlQALp5cAC6eYAAun4QALqAUAC6gsAAuoUAALqFMAC6hVAAuoVwALqFkAC6hbAAuoXQALqF4AC6hhAAuoegALqJcAC6iZAAuomwALqJ0AC6ifAAuooQALqKMAC6ilAAuowgALqMUAC6jIAAuoywALqM4AC6jRAAuo1AALqNcAC6jZAAupVAALqVYAC6lYAAupWgALqV0AC6leAAupXwALqWAAC6lhAAupYwALqWUAC6lmAAupZwALqWkAC6lqAAup5QALqecAC6npAAup6wALqe4AC6nvAAup8AALqfEAC6nyAAup9AALqfYAC6n3AAup+AALqfoAC6n7AAuqdgALqngAC6p6AAuqfAALqn8AC6qAAAuqgQALqoIAC6qDAAuqhQALqocAC6qIAAuqiQALqosAC6qMAAurBwALqwkAC6sLAAurDQALqxAAC6sRAAurEgALqxMAC6sUAAurFgALqxgAC6sZAAurGgALqxwAC6sdAAurmAALq5oAC6ucAAurngALq6EAC6uiAAurowALq6QAC6ulAAurpwALq6kAC6uqAAurqwALq60AC6uuAAusKQALrCsAC6wtAAusLwALrDIAC6wzAAusNAALrDUAC6w2AAusOAALrDoAC6w7AAusPAALrD4AC6w/AAusugALrLwAC6y+AAuswAALrMMAC6zEAAusxQALrMYAC6zHAAusyQALrMsAC6zMAAuszQALrM8AC6zQAAutYwALrYYAC62mAAutxgALrcgAC63KAAutzAALrc4AC63RAAut0gALrdMAC63WAAut1wALrdkAC63aAAut3AALrd8AC63gAAut4QALreQAC63lAAut6gALrgMAC64MAAuuDgALrhAAC64ZAAuuHAALrh8AC64hAAuuagALro4AC661AAuu2QALrtwAC67eAAuu4AALruIAC67kAAuu5gALrucAC67qAAuvAwALryQAC68mAAuvKAALryoAC68sAAuvLgALrzAAC68yAAuvNAALr1UAC69YAAuvWwALr14AC69hAAuvZAALr2cAC69qAAuvbQALr28AC6/qAAuv7AALr+4AC6/wAAuv8wALr/QAC6/1AAuv9gALr/cAC6/5AAuv+wALr/wAC6/9AAuv/wALsAAAC7B7AAuwfQALsH8AC7CBAAuwhAALsIUAC7CGAAuwhwALsIgAC7CKAAuwjAALsI0AC7COAAuwkAALsJEAC7EMAAuxDgALsREAC7ETAAuxFgALsRcAC7EYAAuxGQALsRoAC7EcAAuxHgALsR8AC7EgAAuxIgALsSMAC7E8AAuxPQALsT4AC7FAAAuxuwALsb0AC7G/AAuxwQALscQAC7HFAAuxxgALsccAC7HIAAuxygALscwAC7HNAAuxzgALsdAAC7HRAAuyTAALsk4AC7JQAAuyUgALslUAC7JWAAuyVwALslgAC7JZAAuyWwALsl0AC7JeAAuyXwALsmEAC7JiAAuy3QALst8AC7LhAAuy4wALsuYAC7LnAAuy6AALsukAC7LqAAuy7AALsu4AC7LvAAuy8AALsvIAC7LzAAuzbgALs3AAC7NyAAuzdAALs3cAC7N4AAuzeQALs3oAC7N7AAuzfQALs38AC7OAAAuzgQALs4MAC7OEAAuz/wALtAEAC7QDAAu0BQALtAgAC7QJAAu0CgALtAsAC7QMAAu0DgALtBAAC7QRAAu0EgALtBQAC7QVAAu0XgALtIIAC7SpAAu0zQALtNAAC7TSAAu01AALtNYAC7TYAAu02gALtNsAC7TeAAu09wALtRQAC7UWAAu1GAALtRoAC7UcAAu1HgALtSAAC7UiAAu1PwALtUIAC7VFAAu1SAALtUsAC7VOAAu1UQALtVQAC7VWAAu10QALtdMAC7XVAAu11wALtdoAC7XbAAu13AALtd0AC7XeAAu14AALteIAC7XjAAu15AALteYAC7XnAAu2YgALtmQAC7ZmAAu2aAALtmsAC7ZsAAu2bQALtm4AC7ZvAAu2cQALtnMAC7Z0AAu2dQALtncAC7Z4AAu28wALtvUAC7b3AAu2+QALtvwAC7b9AAu2/gALtv8AC7cAAAu3AgALtwQAC7cFAAu3BgALtwgAC7cJAAu3hAALt4YAC7eJAAu3iwALt44AC7ePAAu3kAALt5EAC7eSAAu3lAALt5YAC7eXAAu3mAALt5oAC7ebAAu4FgALuBgAC7gaAAu4HAALuB8AC7ggAAu4IQALuCIAC7gjAAu4JQALuCcAC7goAAu4KQALuCsAC7gsAAu4pwALuKkAC7irAAu4rQALuLAAC7ixAAu4sgALuLMAC7i0AAu4tgALuLgAC7i5AAu4ugALuLwAC7i9AAu5OAALuToAC7k8AAu5PgALuUEAC7lCAAu5QwALuUQAC7lFAAu5RwALuUkAC7lKAAu5SwALuU0AC7lOAAu5XwALuWAAC7liAAu5cwALuXgAC7l7AAu5fQALubYAC7m5AAu5uwALub4AC7nBAAu5xAALuccAC7pKAAu6bgALupIAC7q1AAu63AALuvwAC7sjAAu7SgALu2oAC7uOAAu7sgALu7QAC7u3AAu7uQALu7sAC7u9AAu7wAALu8MAC7vFAAu7xwALu8oAC7vMAAu7zgALu9EAC7vUAAu71QALu9oAC7vzAAu7+AALu/oAC7v/AAu8AgALvAQAC7xNAAu8cQALvJgAC7y8AAu8vwALvMEAC7zDAAu8xQALvMcAC7zJAAu8ygALvM0AC7zmAAu9CwALvQ0AC70PAAu9EQALvRMAC70VAAu9FwALvRkAC70bAAu9HQALvUIAC71FAAu9SAALvUsAC71OAAu9UQALvVQAC71XAAu9WgALvV0AC71fAAu92gALvdwAC73fAAu94QALveQAC73lAAu95gALvecAC73oAAu96gALvewAC73tAAu97gALvfAAC73xAAu+AgALvgMAC74FAAu+gAALvoIAC76EAAu+hgALvokAC76KAAu+iwALvowAC76NAAu+jwALvpEAC76SAAu+kwALvpUAC76WAAu/EQALvxMAC78WAAu/GAALvxsAC78cAAu/HQALvx4AC78fAAu/IQALvyMAC78kAAu/JQALvycAC78oAAu/OQALvzoAC788AAu/twALv7kAC7+7AAu/vQALv8AAC7/BAAu/wgALv8MAC7/EAAu/xgALv8gAC7/JAAu/ygALv8wAC7/NAAvASAALwEoAC8BNAAvATwALwFIAC8BTAAvAVAALwFUAC8BWAAvAWAALwFoAC8BbAAvAXAALwF4AC8BfAAvAcAALwHEAC8BzAAvA7gALwPAAC8DyAAvA9AALwPcAC8D4AAvA+QALwPoAC8D7AAvA/QALwP8AC8EAAAvBAQALwQMAC8EEAAvBfwALwYEAC8GEAAvBhgALwYkAC8GKAAvBiwALwYwAC8GNAAvBjwALwZEAC8GSAAvBkwALwZUAC8GWAAvBrwALwbAAC8GxAAvBswALwi4AC8IwAAvCMgALwjQAC8I3AAvCOAALwjkAC8I6AAvCOwALwj0AC8I/AAvCQAALwkEAC8JDAAvCRAALwr8AC8LBAAvCxAALwsYAC8LJAAvCygALwssAC8LMAAvCzQALws8AC8LRAAvC0gALwtMAC8LVAAvC1gALwwIAC8MbAAvDIAALwyMAC8MoAAvDKwALwy0AC8NCAAvD1QALw/gAC8QYAAvEOAALxDoAC8Q8AAvEPgALxEAAC8RDAAvERAALxEUAC8RIAAvESQALxEsAC8RMAAvETgALxFEAC8RSAAvEUwALxFYAC8RXAAvEXAALxHUAC8R+AAvEgAALxIIAC8SLAAvEjgALxJEAC8STAAvE3AALxQAAC8UnAAvFSwALxU4AC8VQAAvFUgALxVQAC8VWAAvFWAALxVkAC8VcAAvFdQALxZYAC8WYAAvFmgALxZwAC8WeAAvFoAALxaIAC8WkAAvFpgALxccAC8XKAAvFzQALxdAAC8XTAAvF1gALxdkAC8XcAAvF3wALxeEAC8ZcAAvGXgALxmAAC8ZiAAvGZQALxmYAC8ZnAAvGaAALxmkAC8ZrAAvGbQALxm4AC8ZvAAvGcQALxnIAC8btAAvG7wALxvEAC8bzAAvG9gALxvcAC8b4AAvG+QALxvoAC8b8AAvG/gALxv8AC8cAAAvHAgALxwMAC8d+AAvHgAALx4MAC8eFAAvHiAALx4kAC8eKAAvHiwALx4wAC8eOAAvHkAALx5EAC8eSAAvHlAALx5UAC8euAAvHrwALx7AAC8eyAAvILQALyC8AC8gxAAvIMwALyDYAC8g3AAvIOAALyDkAC8g6AAvIPAALyD4AC8g/AAvIQAALyEIAC8hDAAvIvgALyMAAC8jCAAvIxAALyMcAC8jIAAvIyQALyMoAC8jLAAvIzQALyM8AC8jQAAvI0QALyNMAC8jUAAvJTwALyVEAC8lTAAvJVQALyVgAC8lZAAvJWgALyVsAC8lcAAvJXgALyWAAC8lhAAvJYgALyWQAC8llAAvJ4AALyeIAC8nkAAvJ5gALyekAC8nqAAvJ6wALyewAC8ntAAvJ7wALyfEAC8nyAAvJ8wALyfUAC8n2AAvKcQALynMAC8p1AAvKdwALynoAC8p7AAvKfAALyn0AC8p+AAvKgAALyoIAC8qDAAvKhAALyoYAC8qHAAvK0AALyvQAC8sbAAvLPwALy0IAC8tEAAvLRgALy0gAC8tKAAvLTAALy00AC8tQAAvLaQALy4YAC8uIAAvLigALy4wAC8uOAAvLkAALy5IAC8uUAAvLsQALy7QAC8u3AAvLugALy70AC8vAAAvLwwALy8YAC8vIAAvMQwALzEUAC8xHAAvMSQALzEwAC8xNAAvMTgALzE8AC8xQAAvMUgALzFQAC8xVAAvMVgALzFgAC8xZAAvM1AALzNYAC8zYAAvM2gALzN0AC8zeAAvM3wALzOAAC8zhAAvM4wALzOUAC8zmAAvM5wALzOkAC8zqAAvNZQALzWcAC81pAAvNawALzW4AC81vAAvNcAALzXEAC81yAAvNdAALzXYAC813AAvNeAALzXoAC817AAvN9gALzfgAC836AAvN/AALzf8AC84AAAvOAQALzgIAC84DAAvOBQALzgcAC84IAAvOCQALzgsAC84MAAvOhwALzokAC86LAAvOjQALzpAAC86RAAvOkgALzpMAC86UAAvOlgALzpgAC86ZAAvOmgALzpwAC86dAAvPGAALzxoAC88cAAvPHgALzyEAC88iAAvPIwALzyQAC88lAAvPJwALzykAC88qAAvPKwALzy0AC88uAAvPqQALz6sAC8+tAAvPrwALz7IAC8+zAAvPtAALz7UAC8+2AAvPuAALz7oAC8+7AAvPvAALz74AC8+/AAvP0AALz9UAC8/YAAvP2gALz98AC9BaAAvQXAAL0F4AC9BgAAvQYwAL0GQAC9BlAAvQZgAL0GcAC9BpAAvQawAL0GwAC9BtAAvQbwAL0HAAC9DrAAvQ7QAL0O8AC9DxAAvQ9AAL0PUAC9D2AAvQ9wAL0PgAC9D6AAvQ/AAL0P0AC9D+AAvRAAAL0QEAC9F8AAvRfgAL0YEAC9GDAAvRhgAL0YcAC9GIAAvRiQAL0YoAC9GMAAvRjgAL0Y8AC9GQAAvRkgAL0ZMAC9ImAAvSSQAL0mkAC9KJAAvSiwAL0o0AC9KPAAvSkQAL0pQAC9KVAAvSlgAL0pkAC9KaAAvSnAAL0p0AC9KgAAvSowAL0qQAC9KlAAvSqAAL0qkAC9KuAAvSxwAL0tAAC9LSAAvS1AAL0t0AC9LgAAvS4wAL0uUAC9MuAAvTUgAL03kAC9OdAAvToAAL06IAC9OkAAvTpgAL06gAC9OqAAvTqwAL064AC9PHAAvT6AAL0+oAC9PsAAvT7gAL0/AAC9PyAAvT9AAL0/YAC9P4AAvUGQAL1BwAC9QfAAvUIgAL1CUAC9QoAAvUKwAL1C4AC9QxAAvUMwAL1K4AC9SwAAvUsgAL1LQAC9S3AAvUuAAL1LkAC9S6AAvUuwAL1L0AC9S/AAvUwAAL1MEAC9TDAAvUxAAL1T8AC9VBAAvVQwAL1UUAC9VIAAvVSQAL1UoAC9VLAAvVTAAL1U4AC9VQAAvVUQAL1VIAC9VUAAvVVQAL1dAAC9XSAAvV1QAL1dcAC9XaAAvV2wAL1dwAC9XdAAvV3gAL1eAAC9XiAAvV4wAL1eQAC9XmAAvV5wAL1gAAC9YBAAvWAgAL1gQAC9Z/AAvWgQAL1oMAC9aFAAvWiAAL1okAC9aKAAvWiwAL1owAC9aOAAvWkAAL1pEAC9aSAAvWlAAL1pUAC9cQAAvXEgAL1xQAC9cWAAvXGQAL1xoAC9cbAAvXHAAL1x0AC9cfAAvXIQAL1yIAC9cjAAvXJQAL1yYAC9ehAAvXowAL16UAC9enAAvXqgAL16sAC9esAAvXrQAL164AC9ewAAvXsgAL17MAC9e0AAvXtgAL17cAC9gyAAvYNAAL2DYAC9g4AAvYOwAL2DwAC9g9AAvYPgAL2D8AC9hBAAvYQwAL2EQAC9hFAAvYRwAL2EgAC9jDAAvYxQAL2McAC9jJAAvYzAAL2M0AC9jOAAvYzwAL2NAAC9jSAAvY1AAL2NUAC9jWAAvY2AAL2NkAC9kiAAvZRgAL2W0AC9mRAAvZlAAL2ZYAC9mYAAvZmgAL2ZwAC9meAAvZnwAL2aIAC9m7AAvZ2AAL2doAC9ncAAvZ3gAL2eAAC9niAAvZ5AAL2eYAC9oDAAvaBgAL2gkAC9oMAAvaDwAL2hIAC9oVAAvaGAAL2hoAC9qVAAvalwAL2pkAC9qbAAvangAL2p8AC9qgAAvaoQAL2qIAC9qkAAvapgAL2qcAC9qoAAvaqgAL2qsAC9smAAvbKAAL2ysAC9stAAvbMAAL2zEAC9syAAvbMwAL2zQAC9s2AAvbOAAL2zkAC9s6AAvbPAAL2z0AC9u4AAvbugAL27wAC9u+AAvbwQAL28IAC9vDAAvbxAAL28UAC9vHAAvbyQAL28oAC9vLAAvbzQAL284AC9xJAAvcSwAL3E4AC9xQAAvcUwAL3FQAC9xVAAvcVgAL3FcAC9xZAAvcWwAL3FwAC9xdAAvcXwAL3GAAC9zjAAvdBwAL3SsAC91OAAvddQAL3ZUAC928AAvd4wAL3gMAC94nAAveSwAL3k0AC95QAAveUgAL3lQAC95WAAveWQAL3lwAC95eAAveYAAL3mMAC95lAAveZwAL3moAC95tAAvebgAL3nMAC96MAAvekQAL3pMAC96YAAvemwAL3p0AC97mAAvfCgAL3zEAC99VAAvfWAAL31oAC99cAAvfXgAL32AAC99iAAvfYwAL32YAC99/AAvfpAAL36YAC9+oAAvfqgAL36wAC9+uAAvfsAAL37IAC9+0AAvftgAL39sAC9/eAAvf4QAL3+QAC9/nAAvf6gAL3+0AC9/wAAvf8wAL3/YAC9/4AAvgcwAL4HUAC+B4AAvgegAL4H0AC+B+AAvgfwAL4IAAC+CBAAvggwAL4IUAC+CGAAvghwAL4IkAC+CKAAvgmwAL4JwAC+CeAAvhGQAL4RsAC+EdAAvhHwAL4SIAC+EjAAvhJAAL4SUAC+EmAAvhKAAL4SoAC+ErAAvhLAAL4S4AC+EvAAvhqgAL4awAC+GvAAvhsQAL4bQAC+G1AAvhtgAL4bcAC+G4AAvhugAL4bwAC+G9AAvhvgAL4cAAC+HBAAvh0gAL4dMAC+HVAAviUAAL4lIAC+JUAAviVgAL4lkAC+JaAAviWwAL4lwAC+JdAAviXwAL4mEAC+JiAAviYwAL4mUAC+JmAAvi4QAL4uMAC+LmAAvi6AAL4usAC+LsAAvi7QAL4u4AC+LvAAvi8QAL4vMAC+L0AAvi9QAL4vcAC+L4AAvjCQAL4woAC+MMAAvjhwAL44kAC+OLAAvjjQAL45AAC+ORAAvjkgAL45MAC+OUAAvjlgAL45gAC+OZAAvjmgAL45wAC+OdAAvkGAAL5BoAC+QdAAvkHwAL5CIAC+QjAAvkJAAL5CUAC+QmAAvkKAAL5CoAC+QrAAvkLAAL5C4AC+QvAAvkSAAL5EkAC+RKAAvkTAAL5McAC+TJAAvkywAL5M0AC+TQAAvk0QAL5NIAC+TTAAvk1AAL5NYAC+TYAAvk2QAL5NoAC+TcAAvk3QAL5VgAC+VaAAvlXQAL5V8AC+ViAAvlYwAL5WQAC+VlAAvlZgAL5WgAC+VqAAvlawAL5WwAC+VuAAvlbwAL5YwAC+WlAAvlqgAL5a0AC+WyAAvltQAL5bcAC+W9AAvmUAAL5nMAC+aTAAvmswAL5rUAC+a3AAvmuQAL5rsAC+a+AAvmvwAL5sAAC+bDAAvmxAAL5sYAC+bHAAvmygAL5s0AC+bOAAvmzwAL5tIAC+bTAAvm3AAL5vUAC+b+AAvnAAAL5wIAC+cLAAvnDgAL5xEAC+cTAAvnXAAL54AAC+enAAvnywAL584AC+fQAAvn0gAL59QAC+fWAAvn2AAL59kAC+fcAAvn9QAL6BYAC+gYAAvoGgAL6BwAC+geAAvoIAAL6CIAC+gkAAvoJgAL6EcAC+hKAAvoTQAL6FAAC+hTAAvoVgAL6FkAC+hcAAvoXwAL6GEAC+jcAAvo3gAL6OAAC+jiAAvo5QAL6OYAC+jnAAvo6AAL6OkAC+jrAAvo7QAL6O4AC+jvAAvo8QAL6PIAC+ltAAvpbwAL6XEAC+lzAAvpdgAL6XcAC+l4AAvpeQAL6XoAC+l8AAvpfgAL6X8AC+mAAAvpggAL6YMAC+n+AAvqAAAL6gMAC+oFAAvqCAAL6gkAC+oKAAvqCwAL6gwAC+oOAAvqEAAL6hEAC+oSAAvqFAAL6hUAC+ouAAvqLwAL6jAAC+oyAAvqrQAL6q8AC+qxAAvqswAL6rYAC+q3AAvquAAL6rkAC+q6AAvqvAAL6r4AC+q/AAvqwAAL6sIAC+rDAAvrPgAL60AAC+tCAAvrRAAL60cAC+tIAAvrSQAL60oAC+tLAAvrTQAL608AC+tQAAvrUQAL61MAC+tUAAvrzwAL69EAC+vTAAvr1QAL69gAC+vZAAvr2gAL69sAC+vcAAvr3gAL6+AAC+vhAAvr4gAL6+QAC+vlAAvsYAAL7GIAC+xkAAvsZgAL7GkAC+xqAAvsawAL7GwAC+xtAAvsbwAL7HEAC+xyAAvscwAL7HUAC+x2AAvs8QAL7PMAC+z1AAvs9wAL7PoAC+z7AAvs/AAL7P0AC+z+AAvtAAAL7QIAC+0DAAvtBAAL7QYAC+0HAAvtUAAL7XQAC+2bAAvtvwAL7cIAC+3EAAvtxgAL7cgAC+3KAAvtzAAL7c0AC+3QAAvt6QAL7gYAC+4IAAvuCgAL7gwAC+4OAAvuEAAL7hIAC+4UAAvuMQAL7jQAC+43AAvuOgAL7j0AC+5AAAvuQwAL7kYAC+5IAAvuwwAL7sUAC+7HAAvuyQAL7swAC+7NAAvuzgAL7s8AC+7QAAvu0gAL7tQAC+7VAAvu1gAL7tgAC+7ZAAvvVAAL71YAC+9YAAvvWgAL710AC+9eAAvvXwAL72AAC+9hAAvvYwAL72UAC+9mAAvvZwAL72kAC+9qAAvv5QAL7+cAC+/pAAvv6wAL7+4AC+/vAAvv8AAL7/EAC+/yAAvv9AAL7/YAC+/3AAvv+AAL7/oAC+/7AAvwdgAL8HgAC/B7AAvwfQAL8IAAC/CBAAvwggAL8IMAC/CEAAvwhgAL8IgAC/CJAAvwigAL8IwAC/CNAAvxCAAL8QoAC/EMAAvxDgAL8REAC/ESAAvxEwAL8RQAC/EVAAvxFwAL8RkAC/EaAAvxGwAL8R0AC/EeAAvxmQAL8ZsAC/GdAAvxnwAL8aIAC/GjAAvxpAAL8aUAC/GmAAvxqAAL8aoAC/GrAAvxrAAL8a4AC/GvAAvyKgAL8iwAC/IvAAvyMQAL8jQAC/I1AAvyNgAL8jcAC/I4AAvyOgAL8jwAC/I9AAvyPgAL8kAAC/JBAAvyUgAL8lcAC/JaAAvyXAAL8pUAC/KYAAvymgAL8p0AC/KgAAvyowAL8qYAC/KrAAvzTgAL83IAC/OWAAvztgAL890AC/QEAAv0JAAL9EsAC/RvAAv0kgAL9LkAC/TdAAv1AQAL9SUAC/VMAAv1TQAL9U8AC/VRAAv1VAAL9VYAC/VZAAv1WwAL9V0AC/VgAAv1YgAL9WQAC/VnAAv1agAL9WwAC/VuAAv1cAAL9XMAC/V2AAv1eQAL9X4AC/WXAAv1nAAL9Z4AC/WjAAv1pgAL9agAC/XxAAv2FQAL9jwAC/ZgAAv2YwAL9mUAC/ZnAAv2aQAL9msAC/ZtAAv2bgAL9nEAC/aKAAv2rwAL9rEAC/azAAv2tQAL9rcAC/a5AAv2uwAL9r0AC/a/AAv2wQAL9uYAC/bpAAv27AAL9u8AC/byAAv29QAL9vgAC/b7AAv2/gAL9wEAC/cDAAv3fgAL94AAC/eDAAv3hQAL94gAC/eJAAv3igAL94sAC/eMAAv3jgAL95AAC/eRAAv3kgAL95QAC/eVAAv3pgAL96cAC/epAAv4JAAL+CYAC/goAAv4KgAL+C0AC/guAAv4LwAL+DAAC/gxAAv4MwAL+DUAC/g2AAv4NwAL+DkAC/g6AAv4tQAL+LcAC/i6AAv4vAAL+L8AC/jAAAv4wQAL+MIAC/jDAAv4xQAL+McAC/jIAAv4yQAL+MsAC/jMAAv43QAL+OIAC/jlAAv45wAL+PgAC/kFAAv5CAAL+QsAC/kOAAv5EAAL+SsAC/k5AAv5RQAL+cAAC/nCAAv5xAAL+cYAC/nJAAv5ygAL+csAC/nMAAv5zQAL+c8AC/nRAAv50gAL+dMAC/nVAAv51gAL+lEAC/pTAAv6VgAL+lgAC/pbAAv6XAAL+l0AC/peAAv6XwAL+mEAC/pjAAv6ZAAL+mUAC/pnAAv6aAAL+nkAC/p6AAv6fAAL+vcAC/r5AAv6+wAL+v0AC/sAAAv7AQAL+wIAC/sDAAv7BAAL+wYAC/sIAAv7CQAL+woAC/sMAAv7DQAL+4gAC/uKAAv7jQAL+48AC/uSAAv7kwAL+5QAC/uVAAv7lgAL+5gAC/uaAAv7mwAL+5wAC/ueAAv7nwAL+7gAC/u5AAv7ugAL+7wAC/w3AAv8OQAL/DsAC/w9AAv8QAAL/EEAC/xCAAv8QwAL/EQAC/xGAAv8SAAL/EkAC/xKAAv8TAAL/E0AC/zIAAv8ygAL/M0AC/zPAAv80gAL/NMAC/zUAAv81QAL/NYAC/zYAAv82gAL/NsAC/zcAAv83gAL/N8AC/z3AAv9EAAL/UUAC/1IAAv9SwAL/U4AC/1RAAv9VAAL/VcAC/1aAAv9XQAL/WAAC/1jAAv9ZgAL/WkAC/1sAAv9oQAL/aQAC/2nAAv9qgAL/a0AC/2wAAv9swAL/bYAC/25AAv9vAAL/b8AC/3CAAv9xQAL/cgAC/3KAAv92AAL/ecAC/3/AAv+CwAL/h4AC/4yAAv+PAAL/lcAC/5jAAv+9gAL/xkAC/85AAv/WQAL/1sAC/9dAAv/XwAL/2EAC/9kAAv/ZQAL/2YAC/9pAAv/agAL/2wAC/9tAAv/bwAL/3IAC/9zAAv/dAAL/3cAC/94AAv/fQAL/5YAC/+fAAv/oQAL/6MAC/+sAAv/rwAL/7IAC/+0AAv//QAMACEADABIAAwAbAAMAG8ADABxAAwAcwAMAHUADAB3AAwAeQAMAHoADAB9AAwAlgAMALcADAC5AAwAuwAMAL0ADAC/AAwAwQAMAMMADADFAAwAxwAMAOgADADrAAwA7gAMAPEADAD0AAwA9wAMAPoADAD9AAwBAAAMAQIADAF9AAwBfwAMAYEADAGDAAwBhgAMAYcADAGIAAwBiQAMAYoADAGMAAwBjgAMAY8ADAGQAAwBkgAMAZMADAIOAAwCEAAMAhIADAIUAAwCFwAMAhgADAIZAAwCGgAMAhsADAIdAAwCHwAMAiAADAIhAAwCIwAMAiQADAKfAAwCoQAMAqQADAKmAAwCqQAMAqoADAKrAAwCrAAMAq0ADAKvAAwCsQAMArIADAKzAAwCtQAMArYADALPAAwC0AAMAtEADALTAAwDTgAMA1AADANSAAwDVAAMA1cADANYAAwDWQAMA1oADANbAAwDXQAMA18ADANgAAwDYQAMA2MADANkAAwD3wAMA+EADAPjAAwD5QAMA+gADAPpAAwD6gAMA+sADAPsAAwD7gAMA/AADAPxAAwD8gAMA/QADAP1AAwEcAAMBHIADAR0AAwEdgAMBHkADAR6AAwEewAMBHwADAR9AAwEfwAMBIEADASCAAwEgwAMBIUADASGAAwFAQAMBQMADAUFAAwFBwAMBQoADAULAAwFDAAMBQ0ADAUOAAwFEAAMBRIADAUTAAwFFAAMBRYADAUXAAwFkgAMBZQADAWWAAwFmAAMBZsADAWcAAwFnQAMBZ4ADAWfAAwFoQAMBaMADAWkAAwFpQAMBacADAWoAAwF8QAMBhUADAY8AAwGYAAMBmMADAZlAAwGZwAMBmkADAZrAAwGbQAMBm4ADAZxAAwGigAMBqcADAapAAwGqwAMBq0ADAavAAwGsQAMBrMADAa1AAwG0gAMBtUADAbYAAwG2wAMBt4ADAbhAAwG5AAMBucADAbpAAwHZAAMB2YADAdoAAwHagAMB20ADAduAAwHbwAMB3AADAdxAAwHcwAMB3UADAd2AAwHdwAMB3kADAd6AAwH9QAMB/cADAf5AAwH+wAMB/4ADAf/AAwIAAAMCAEADAgCAAwIBAAMCAYADAgHAAwICAAMCAoADAgLAAwIhgAMCIgADAiKAAwIjAAMCI8ADAiQAAwIkQAMCJIADAiTAAwIlQAMCJcADAiYAAwImQAMCJsADAicAAwJFwAMCRkADAkbAAwJHQAMCSAADAkhAAwJIgAMCSMADAkkAAwJJgAMCSgADAkpAAwJKgAMCSwADAktAAwJqAAMCaoADAmsAAwJrgAMCbEADAmyAAwJswAMCbQADAm1AAwJtwAMCbkADAm6AAwJuwAMCb0ADAm+AAwKOQAMCjsADAo9AAwKPwAMCkIADApDAAwKRAAMCkUADApGAAwKSAAMCkoADApLAAwKTAAMCk4ADApPAAwKygAMCswADArOAAwK0AAMCtMADArUAAwK1QAMCtYADArXAAwK2QAMCtsADArcAAwK3QAMCt8ADArgAAwLcwAMC5YADAu2AAwL1gAMC9gADAvaAAwL3AAMC94ADAvhAAwL4gAMC+MADAvmAAwL5wAMC+kADAvqAAwL7QAMC/AADAvxAAwL8gAMC/UADAv2AAwL+wAMDBQADAwdAAwMHwAMDCEADAwqAAwMLQAMDDAADAwyAAwMewAMDJ8ADAzGAAwM6gAMDO0ADAzvAAwM8QAMDPMADAz1AAwM9wAMDPgADAz7AAwNFAAMDTUADA03AAwNOQAMDTsADA09AAwNPwAMDUEADA1DAAwNRQAMDWYADA1pAAwNbAAMDW8ADA1yAAwNdQAMDXgADA17AAwNfgAMDYAADA37AAwN/QAMDf8ADA4BAAwOBAAMDgUADA4GAAwOBwAMDggADA4KAAwODAAMDg0ADA4OAAwOEAAMDhEADA6MAAwOjgAMDpAADA6SAAwOlQAMDpYADA6XAAwOmAAMDpkADA6bAAwOnQAMDp4ADA6fAAwOoQAMDqIADA8dAAwPHwAMDyIADA8kAAwPJwAMDygADA8pAAwPKgAMDysADA8tAAwPLwAMDzAADA8xAAwPMwAMDzQADA9NAAwPTgAMD08ADA9RAAwPzAAMD84ADA/QAAwP0gAMD9UADA/WAAwP1wAMD9gADA/ZAAwP2wAMD90ADA/eAAwP3wAMD+EADA/iAAwQXQAMEF8ADBBhAAwQYwAMEGYADBBnAAwQaAAMEGkADBBqAAwQbAAMEG4ADBBvAAwQcAAMEHIADBBzAAwQ7gAMEPAADBDyAAwQ9AAMEPcADBD4AAwQ+QAMEPoADBD7AAwQ/QAMEP8ADBEAAAwRAQAMEQMADBEEAAwRfwAMEYEADBGDAAwRhQAMEYgADBGJAAwRigAMEYsADBGMAAwRjgAMEZAADBGRAAwRkgAMEZQADBGVAAwSEAAMEhIADBIUAAwSFgAMEhkADBIaAAwSGwAMEhwADBIdAAwSHwAMEiEADBIiAAwSIwAMEiUADBImAAwSbwAMEpMADBK6AAwS3gAMEuEADBLjAAwS5QAMEucADBLpAAwS6wAMEuwADBLvAAwTCAAMEyUADBMnAAwTKQAMEysADBMtAAwTLwAMEzEADBMzAAwTUAAME1MADBNWAAwTWQAME1wADBNfAAwTYgAME2UADBNnAAwT4gAME+QADBPmAAwT6AAME+sADBPsAAwT7QAME+4ADBPvAAwT8QAME/MADBP0AAwT9QAME/cADBP4AAwUcwAMFHUADBR4AAwUegAMFH0ADBR+AAwUfwAMFIAADBSBAAwUgwAMFIUADBSGAAwUhwAMFIkADBSKAAwVBQAMFQcADBUJAAwVCwAMFQ4ADBUPAAwVEAAMFREADBUSAAwVFAAMFRYADBUXAAwVGAAMFRoADBUbAAwVlgAMFZgADBWbAAwVnQAMFaAADBWhAAwVogAMFaMADBWkAAwVpgAMFagADBWpAAwVqgAMFawADBWtAAwWMAAMFlQADBZ4AAwWmwAMFsIADBbiAAwXCQAMFzAADBdQAAwXdAAMF5gADBeaAAwXnQAMF58ADBehAAwXowAMF6YADBepAAwXqwAMF60ADBewAAwXsgAMF7QADBe3AAwXugAMF7sADBfAAAwX2QAMF94ADBfgAAwX5QAMF+gADBfqAAwYMwAMGFcADBh+AAwYogAMGKUADBinAAwYqQAMGKsADBitAAwYrwAMGLAADBizAAwYzAAMGPEADBjzAAwY9QAMGPcADBj5AAwY+wAMGP0ADBj/AAwZAQAMGQMADBkoAAwZKwAMGS4ADBkxAAwZNAAMGTcADBk6AAwZPQAMGUAADBlDAAwZRQAMGcAADBnCAAwZxQAMGccADBnKAAwZywAMGcwADBnNAAwZzgAMGdAADBnSAAwZ0wAMGdQADBnWAAwZ1wAMGegADBnpAAwZ6wAMGmYADBpoAAwaagAMGmwADBpvAAwacAAMGnEADBpyAAwacwAMGnUADBp3AAwaeAAMGnkADBp7AAwafAAMGvcADBr5AAwa/AAMGv4ADBsBAAwbAgAMGwMADBsEAAwbBQAMGwcADBsJAAwbCgAMGwsADBsNAAwbDgAMGx8ADBskAAwbJwAMGykADBs6AAwbSwAMG04ADBtRAAwbVAAMG1cADBtZAAwbdAAMG4wADBubAAwcFgAMHBgADBwaAAwcHAAMHB8ADBwgAAwcIQAMHCIADBwjAAwcJQAMHCcADBwoAAwcKQAMHCsADBwsAAwcpwAMHKkADBysAAwcrgAMHLEADByyAAwcswAMHLQADBy1AAwctwAMHLkADBy6AAwcuwAMHL0ADBy+AAwczwAMHNAADBzSAAwdTQAMHU8ADB1RAAwdUwAMHVYADB1XAAwdWAAMHVkADB1aAAwdXAAMHV4ADB1fAAwdYAAMHWIADB1jAAwd3gAMHeAADB3jAAwd5QAMHegADB3pAAwd6gAMHesADB3sAAwd7gAMHfAADB3xAAwd8gAMHfQADB31AAweDgAMHg8ADB4QAAweEgAMHo0ADB6PAAwekQAMHpMADB6WAAwelwAMHpgADB6ZAAwemgAMHpwADB6eAAwenwAMHqAADB6iAAweowAMHx4ADB8gAAwfIwAMHyUADB8oAAwfKQAMHyoADB8rAAwfLAAMHy4ADB8wAAwfMQAMHzIADB80AAwfNQAMH1MADB9sAAwfjQAMH5AADB+TAAwflgAMH5kADB+cAAwfnwAMH6IADB+lAAwfxgAMH8kADB/MAAwfzwAMH9IADB/VAAwf2AAMH9sADB/eAAwf4AAMH+kADB/7AAwgGwAMIDYADCBIAAwgVwAMIG8ADCECAAwhJQAMIUUADCFlAAwhZwAMIWkADCFrAAwhbQAMIXAADCFxAAwhcgAMIXUADCF2AAwheAAMIXkADCF7AAwhfgAMIX8ADCGAAAwhgwAMIYQADCGJAAwhogAMIasADCGtAAwhrwAMIbgADCG7AAwhvgAMIcAADCIJAAwiLQAMIlQADCJ4AAwiewAMIn0ADCJ/AAwigQAMIoMADCKFAAwihgAMIokADCKiAAwiwwAMIsUADCLHAAwiyQAMIssADCLNAAwizwAMItEADCLTAAwi9AAMIvcADCL6AAwi/QAMIwAADCMDAAwjBgAMIwkADCMMAAwjDgAMI4kADCOLAAwjjQAMI48ADCOSAAwjkwAMI5QADCOVAAwjlgAMI5gADCOaAAwjmwAMI5wADCOeAAwjnwAMJBoADCQcAAwkHgAMJCAADCQjAAwkJAAMJCUADCQmAAwkJwAMJCkADCQrAAwkLAAMJC0ADCQvAAwkMAAMJKsADCStAAwksAAMJLIADCS1AAwktgAMJLcADCS4AAwkuQAMJLsADCS9AAwkvgAMJL8ADCTBAAwkwgAMJNsADCTcAAwk3QAMJN8ADCVaAAwlXAAMJV4ADCVgAAwlYwAMJWQADCVlAAwlZgAMJWcADCVpAAwlawAMJWwADCVtAAwlbwAMJXAADCXrAAwl7QAMJe8ADCXxAAwl9AAMJfUADCX2AAwl9wAMJfgADCX6AAwl/AAMJf0ADCX+AAwmAAAMJgEADCZ8AAwmfgAMJoAADCaCAAwmhQAMJoYADCaHAAwmiAAMJokADCaLAAwmjQAMJo4ADCaPAAwmkQAMJpIADCcNAAwnDwAMJxEADCcTAAwnFgAMJxcADCcYAAwnGQAMJxoADCccAAwnHgAMJx8ADCcgAAwnIgAMJyMADCeeAAwnoAAMJ6IADCekAAwnpwAMJ6gADCepAAwnqgAMJ6sADCetAAwnrwAMJ7AADCexAAwnswAMJ7QADCf9AAwoIQAMKEgADChsAAwobwAMKHEADChzAAwodQAMKHcADCh5AAwoegAMKH0ADCiWAAwoswAMKLUADCi3AAwouQAMKLsADCi9AAwovwAMKMEADCjeAAwo4QAMKOQADCjnAAwo6gAMKO0ADCjwAAwo8wAMKPUADClwAAwpcgAMKXQADCl2AAwpeQAMKXoADCl7AAwpfAAMKX0ADCl/AAwpgQAMKYIADCmDAAwphQAMKYYADCoBAAwqAwAMKgUADCoHAAwqCgAMKgsADCoMAAwqDQAMKg4ADCoQAAwqEgAMKhMADCoUAAwqFgAMKhcADCqSAAwqlAAMKpYADCqYAAwqmwAMKpwADCqdAAwqngAMKp8ADCqhAAwqowAMKqQADCqlAAwqpwAMKqgADCsjAAwrJQAMKycADCspAAwrLAAMKy0ADCsuAAwrLwAMKzAADCsyAAwrNAAMKzUADCs2AAwrOAAMKzkADCu0AAwrtgAMK7gADCu6AAwrvQAMK74ADCu/AAwrwAAMK8EADCvDAAwrxQAMK8YADCvHAAwryQAMK8oADCxFAAwsRwAMLEkADCxLAAwsTgAMLE8ADCxQAAwsUQAMLFIADCxUAAwsVgAMLFcADCxYAAwsWgAMLFsADCzWAAws2AAMLNoADCzcAAws3wAMLOAADCzhAAws4gAMLOMADCzlAAws5wAMLOgADCzpAAws6wAMLOwADC1/AAwtogAMLcIADC3iAAwt5AAMLeYADC3oAAwt6gAMLe0ADC3uAAwt7wAMLfIADC3zAAwt9QAMLfYADC34AAwt+wAMLfwADC39AAwuAAAMLgEADC4GAAwuHwAMLigADC4qAAwuLAAMLjUADC44AAwuOwAMLj0ADC6GAAwuqgAMLtEADC71AAwu+AAMLvoADC78AAwu/gAMLwAADC8CAAwvAwAMLwYADC8fAAwvQAAML0IADC9EAAwvRgAML0gADC9KAAwvTAAML04ADC9QAAwvcQAML3QADC93AAwvegAML30ADC+AAAwvgwAML4YADC+JAAwviwAMMAYADDAIAAwwCgAMMAwADDAPAAwwEAAMMBEADDASAAwwEwAMMBUADDAXAAwwGAAMMBkADDAbAAwwHAAMMJcADDCZAAwwmwAMMJ0ADDCgAAwwoQAMMKIADDCjAAwwpAAMMKYADDCoAAwwqQAMMKoADDCsAAwwrQAMMSgADDEqAAwxLQAMMS8ADDEyAAwxMwAMMTQADDE1AAwxNgAMMTgADDE6AAwxOwAMMTwADDE+AAwxPwAMMVgADDFZAAwxWgAMMVwADDHXAAwx2QAMMdsADDHdAAwx4AAMMeEADDHiAAwx4wAMMeQADDHmAAwx6AAMMekADDHqAAwx7AAMMe0ADDJoAAwyagAMMmwADDJuAAwycQAMMnIADDJzAAwydAAMMnUADDJ3AAwyeQAMMnoADDJ7AAwyfQAMMn4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ADEQtAAxELwAMRDAADEQxAAxEMwAMRDQADESvAAxEsQAMRLMADES1AAxEuAAMRLkADES6AAxEuwAMRLwADES+AAxEwAAMRMEADETCAAxExAAMRMUADEVAAAxFQgAMRUQADEVGAAxFSQAMRUoADEVLAAxFTAAMRU0ADEVPAAxFUQAMRVIADEVTAAxFVQAMRVYADEXRAAxF0wAMRdUADEXXAAxF2gAMRdsADEXcAAxF3QAMRd4ADEXgAAxF4gAMReMADEXkAAxF5gAMRecADEZ6AAxGnQAMRr0ADEbdAAxG3wAMRuEADEbjAAxG5QAMRugADEbpAAxG6gAMRu0ADEbuAAxG8AAMRvEADEbzAAxG9gAMRvcADEb4AAxG+wAMRvwADEcBAAxHGgAMRyMADEclAAxHJwAMRzAADEczAAxHNgAMRzgADEeBAAxHpQAMR8wADEfwAAxH8wAMR/UADEf3AAxH+QAMR/sADEf9AAxH/gAMSAEADEgaAAxIOwAMSD0ADEg/AAxIQQAMSEMADEhFAAxIRwAMSEkADEhLAAxIbAAMSG8ADEhyAAxIdQAMSHgADEh7AAxIfgAMSIEADEiEAAxIhgAMSQEADEkDAAxJBQAMSQcADEkKAAxJCwAMSQwADEkNAAxJDgAMSRAADEkSAAxJEwAMSRQADEkWAAxJFwAMSZIADEmUAAxJlgAMSZgADEmbAAxJnAAMSZ0ADEmeAAxJnwAMSaEADEmjAAxJpAAMSaUADEmnAAxJqAAMSiMADEolAAxKKAAMSioADEotAAxKLgAMSi8ADEowAAxKMQAMSjMADEo1AAxKNgAMSjcADEo5AAxKOgAMSlMADEpUAAxKVQAMSlcADErSAAxK1AAMStYADErYAAxK2wAMStwADErdAAxK3gAMSt8ADErhAAxK4wAMSuQADErlAAxK5wAMSugADEtjAAxLZQAMS2cADEtpAAxLbAAMS20ADEtuAAxLbwAMS3AADEtyAAxLdAAMS3UADEt2AAxLeAAMS3kADEv0AAxL9gAMS/gADEv6AAxL/QAMS/4ADEv/AAxMAAAMTAEADEwDAAxMBQAMTAYADEwHAAxMCQAMTAoADEyFAAxMhwAMTIkADEyLAAxMjgAMTI8ADEyQAAxMkQAMTJIADEyUAAxMlgAMTJcADEyYAAxMmgAMTJsADE0WAAxNGAAMTRoADE0cAAxNHwAMTSAADE0hAAxNIgAMTSMADE0lAAxNJwAMTSgADE0pAAxNKwAMTSwADE11AAxNmQAMTcAADE3kAAxN5wAMTekADE3rAAxN7QAMTe8ADE3xAAxN8gAMTfUADE4OAAxOKwAMTi0ADE4vAAxOMQAMTjMADE41AAxONwAMTjkADE5WAAxOWQAMTlwADE5fAAxOYgAMTmUADE5oAAxOawAMTm0ADE7oAAxO6gAMTuwADE7uAAxO8QAMTvIADE7zAAxO9AAMTvUADE73AAxO+QAMTvoADE77AAxO/QAMTv4ADE95AAxPewAMT30ADE9/AAxPggAMT4MADE+EAAxPhQAMT4YADE+IAAxPigAMT4sADE+MAAxPjgAMT48ADFAKAAxQDAAMUA4ADFAQAAxQEwAMUBQADFAVAAxQFgAMUBcADFAZAAxQGwAMUBwADFAdAAxQHwAMUCAADFCbAAxQnQAMUJ8ADFChAAxQpAAMUKUADFCmAAxQpwAMUKgADFCqAAxQrAAMUK0ADFCuAAxQsAAMULEADFEsAAxRLgAMUTAADFEyAAxRNQAMUTYADFE3AAxROAAMUTkADFE7AAxRPQAMUT4ADFE/AAxRQQAMUUIADFG9AAxRvwAMUcEADFHDAAxRxgAMUccADFHIAAxRyQAMUcoADFHMAAxRzgAMUc8ADFHQAAxR0gAMUdMADFJOAAxSUAAMUlIADFJUAAxSVwAMUlgADFJZAAxSWgAMUlsADFJdAAxSXwAMUmAADFJhAAxSYwAMUmQADFL3AAxTGgAMUzoADFNaAAxTXAAMU14ADFNgAAxTYgAMU2UADFNmAAxTZwAMU2oADFNrAAxTbQAMU24ADFNxAAxTdAAMU3UADFN2AAxTeQAMU3oADFN/AAxTmAAMU6EADFOjAAxTpQAMU64ADFOxAAxTtAAMU7YADFP/AAxUIwAMVEoADFRuAAxUcQAMVHMADFR1AAxUdwAMVHkADFR7AAxUfAAMVH8ADFSYAAxUuQAMVLsADFS9AAxUvwAMVMEADFTDAAxUxQAMVMcADFTJAAxU6gAMVO0ADFTwAAxU8wAMVPYADFT5AAxU/AAMVP8ADFUCAAxVBAAMVX8ADFWBAAxVgwAMVYUADFWIAAxViQAMVYoADFWLAAxVjAAMVY4ADFWQAAxVkQAMVZIADFWUAAxVlQAMVhAADFYSAAxWFAAMVhYADFYZAAxWGgAMVhsADFYcAAxWHQAMVh8ADFYhAAxWIgAMViMADFYlAAxWJgAMVqEADFajAAxWpgAMVqgADFarAAxWrAAMVq0ADFauAAxWrwAMVrEADFazAAxWtAAMVrUADFa3AAxWuAAMVtEADFbSAAxW0wAMVtUADFdQAAxXUgAMV1QADFdWAAxXWQAMV1oADFdbAAxXXAAMV10ADFdfAAxXYQAMV2IADFdjAAxXZQAMV2YADFfhAAxX4wAMV+UADFfnAAxX6gAMV+sADFfsAAxX7QAMV+4ADFfwAAxX8gAMV/MADFf0AAxX9gAMV/cADFhyAAxYdAAMWHYADFh4AAxYewAMWHwADFh9AAxYfgAMWH8ADFiBAAxYgwAMWIQADFiFAAxYhwAMWIgADFkDAAxZBQAMWQcADFkJAAxZDAAMWQ0ADFkOAAxZDwAMWRAADFkSAAxZFAAMWRUADFkWAAxZGAAMWRkADFmUAAxZlgAMWZgADFmaAAxZnQAMWZ4ADFmfAAxZoAAMWaEADFmjAAxZpQAMWaYADFmnAAxZqQAMWaoADFnzAAxaFwAMWj4ADFpiAAxaZQAMWmcADFppAAxaawAMWm0ADFpvAAxacAAMWnMADFqMAAxaqQAMWqsADFqtAAxarwAMWrEADFqzAAxatQAMWrcADFrUAAxa1wAMWtoADFrdAAxa4AAMWuMADFrmAAxa6QAMWusADFtmAAxbaAAMW2oADFtsAAxbbwAMW3AADFtxAAxbcgAMW3MADFt1AAxbdwAMW3gADFt5AAxbewAMW3wADFv3AAxb+QAMW/sADFv9AAxcAAAMXAEADFwCAAxcAwAMXAQADFwGAAxcCAAMXAkADFwKAAxcDAAMXA0ADFyIAAxcigAMXIwADFyOAAxckQAMXJIADFyTAAxclAAMXJUADFyXAAxcmQAMXJoADFybAAxcnQAMXJ4ADF0ZAAxdGwAMXR4ADF0gAAxdIwAMXSQADF0lAAxdJgAMXScADF0pAAxdKwAMXSwADF0tAAxdLwAMXTAADF2rAAxdrQAMXa8ADF2xAAxdtAAMXbUADF22AAxdtwAMXbgADF26AAxdvAAMXb0ADF2+AAxdwAAMXcEADF48AAxePgAMXkAADF5CAAxeRQAMXkYADF5HAAxeSAAMXkkADF5LAAxeTQAMXk4ADF5PAAxeUQAMXlIADF7NAAxezwAMXtIADF7UAAxe1wAMXtgADF7ZAAxe2gAMXtsADF7dAAxe3wAMXuAADF7hAAxe4wAMXuQADF93AAxfmgAMX7oADF/aAAxf3AAMX94ADF/gAAxf4gAMX+UADF/mAAxf5wAMX+oADF/rAAxf7QAMX+4ADF/wAAxf8wAMX/QADF/1AAxf+AAMX/kADF/+AAxgFwAMYCAADGAiAAxgJAAMYC0ADGAwAAxgMwAMYDUADGB+AAxgogAMYMkADGDtAAxg8AAMYPIADGD0AAxg9gAMYPgADGD6AAxg+wAMYP4ADGEXAAxhOAAMYToADGE8AAxhPgAMYUAADGFCAAxhRAAMYUYADGFIAAxhaQAMYWwADGFvAAxhcgAMYXUADGF4AAxhewAMYX4ADGGBAAxhgwAMYf4ADGIAAAxiAgAMYgQADGIHAAxiCAAMYgkADGIKAAxiCwAMYg0ADGIPAAxiEAAMYhEADGITAAxiFAAMYo8ADGKRAAxikwAMYpUADGKYAAximQAMYpoADGKbAAxinAAMYp4ADGKgAAxioQAMYqIADGKkAAxipQAMYyAADGMiAAxjJQAMYycADGMqAAxjKwAMYywADGMtAAxjLgAMYzAADGMyAAxjMwAMYzQADGM2AAxjNwAMY1AADGNRAAxjUgAMY1QADGPPAAxj0QAMY9MADGPVAAxj2AAMY9kADGPaAAxj2wAMY9wADGPeAAxj4AAMY+EADGPiAAxj5AAMY+UADGRgAAxkYgAMZGQADGRmAAxkaQAMZGoADGRrAAxkbAAMZG0ADGRvAAxkcQAMZHIADGRzAAxkdQAMZHYADGTxAAxk8wAMZPUADGT3AAxk+gAMZPsADGT8AAxk/QAMZP4ADGUAAAxlAgAMZQMADGUEAAxlBgAMZQcADGWCAAxlhAAMZYYADGWIAAxliwAMZYwADGWNAAxljgAMZY8ADGWRAAxlkwAMZZQADGWVAAxllwAMZZgADGYTAAxmFQAMZhcADGYZAAxmHAAMZh0ADGYeAAxmHwAMZiAADGYiAAxmJAAMZiUADGYmAAxmKAAMZikADGZyAAxmlgAMZr0ADGbhAAxm5AAMZuYADGboAAxm6gAMZuwADGbuAAxm7wAMZvIADGcLAAxnKAAMZyoADGcsAAxnLgAMZzAADGcyAAxnNAAMZzYADGdTAAxnVgAMZ1kADGdcAAxnXwAMZ2IADGdlAAxnaAAMZ2oADGflAAxn5wAMZ+kADGfrAAxn7gAMZ+8ADGfwAAxn8QAMZ/IADGf0AAxn9gAMZ/cADGf4AAxn+gAMZ/sADGh2AAxoeAAMaHoADGh8AAxofwAMaIAADGiBAAxoggAMaIMADGiFAAxohwAMaIgADGiJAAxoiwAMaIwADGkHAAxpCQAMaQsADGkNAAxpEAAMaREADGkSAAxpEwAMaRQADGkWAAxpGAAMaRkADGkaAAxpHAAMaR0ADGmYAAxpmgAMaZwADGmeAAxpoQAMaaIADGmjAAxppAAMaaUADGmnAAxpqQAMaaoADGmrAAxprQAMaa4ADGopAAxqKwAMai0ADGovAAxqMgAMajMADGo0AAxqNQAMajYADGo4AAxqOgAMajsADGo8AAxqPgAMaj8ADGq6AAxqvAAMar4ADGrAAAxqwwAMasQADGrFAAxqxgAMascADGrJAAxqywAMaswADGrNAAxqzwAMatAADGtLAAxrTQAMa08ADGtRAAxrVAAMa1UADGtWAAxrVwAMa1gADGtaAAxrXAAMa10ADGteAAxrYAAMa2EADGv0AAxsFwAMbDcADGxXAAxsWQAMbFsADGxdAAxsXwAMbGIADGxjAAxsZAAMbGcADGxoAAxsagAMbGsADGxtAAxscAAMbHEADGxyAAxsdQAMbHYADGx7AAxslAAMbJ0ADGyfAAxsoQAMbKoADGytAAxssAAMbLIADGz7AAxtHwAMbUYADG1qAAxtbQAMbW8ADG1xAAxtcwAMbXUADG13AAxteAAMbXsADG2UAAxttQAMbbcADG25AAxtuwAMbb0ADG2/AAxtwQAMbcMADG3FAAxt5gAMbekADG3sAAxt7wAMbfIADG31AAxt+AAMbfsADG3+AAxuAAAMbnsADG59AAxufwAMboEADG6EAAxuhQAMboYADG6HAAxuiAAMbooADG6MAAxujQAMbo4ADG6QAAxukQAMbwwADG8OAAxvEAAMbxIADG8VAAxvFgAMbxcADG8YAAxvGQAMbxsADG8dAAxvHgAMbx8ADG8hAAxvIgAMb50ADG+fAAxvogAMb6QADG+nAAxvqAAMb6kADG+qAAxvqwAMb60ADG+vAAxvsAAMb7EADG+zAAxvtAAMb80ADG/OAAxvzwAMb9EADHBMAAxwTgAMcFAADHBSAAxwVQAMcFYADHBXAAxwWAAMcFkADHBbAAxwXQAMcF4ADHBfAAxwYQAMcGIADHDdAAxw3wAMcOEADHDjAAxw5gAMcOcADHDoAAxw6QAMcOoADHDsAAxw7gAMcO8ADHDwAAxw8gAMcPMADHFuAAxxcAAMcXIADHF0AAxxdwAMcXgADHF5AAxxegAMcXsADHF9AAxxfwAMcYAADHGBAAxxgwAMcYQADHH/AAxyAQAMcgMADHIFAAxyCAAMcgkADHIKAAxyCwAMcgwADHIOAAxyEAAMchEADHISAAxyFAAMchUADHKQAAxykgAMcpQADHKWAAxymQAMcpoADHKbAAxynAAMcp0ADHKfAAxyoQAMcqIADHKjAAxypQAMcqYADHLvAAxzEwAMczoADHNeAAxzYQAMc2MADHNlAAxzZwAMc2kADHNrAAxzbAAMc28ADHOIAAxzpQAMc6cADHOpAAxzqwAMc60ADHOvAAxzsQAMc7MADHPQAAxz0wAMc9YADHPZAAxz3AAMc98ADHPiAAxz5QAMc+cADHRiAAx0ZAAMdGYADHRoAAx0awAMdGwADHRtAAx0bgAMdG8ADHRxAAx0cwAMdHQADHR1AAx0dwAMdHgADHTzAAx09QAMdPcADHT5AAx0/AAMdP0ADHT+AAx0/wAMdQAADHUCAAx1BAAMdQUADHUGAAx1CAAMdQkADHWEAAx1hgAMdYgADHWKAAx1jQAMdY4ADHWPAAx1kAAMdZEADHWTAAx1lQAMdZYADHWXAAx1mQAMdZoADHYVAAx2FwAMdhkADHYbAAx2HgAMdh8ADHYgAAx2IQAMdiIADHYkAAx2JgAMdicADHYoAAx2KgAMdisADHamAAx2qAAMdqoADHasAAx2rwAMdrAADHaxAAx2sgAMdrMADHa1AAx2twAMdrgADHa5AAx2uwAMdrwADHc3AAx3OQAMdzsADHc9AAx3QAAMd0EADHdCAAx3QwAMd0QADHdGAAx3SAAMd0kADHdKAAx3TAAMd00ADHfIAAx3ygAMd8wADHfOAAx30QAMd9IADHfTAAx31AAMd9UADHfXAAx32QAMd9oADHfbAAx33QAMd94ADHhxAAx4lAAMeLQADHjUAAx41gAMeNgADHjaAAx43AAMeN8ADHjgAAx44QAMeOQADHjlAAx45wAMeOgADHjqAAx47QAMeO4ADHjvAAx48gAMePMADHj8AAx5FQAMeR4ADHkgAAx5IgAMeSsADHkuAAx5MQAMeTMADHl8AAx5oAAMeccADHnrAAx57gAMefAADHnyAAx59AAMefYADHn4AAx5+QAMefwADHoVAAx6NgAMejgADHo6AAx6PAAMej4ADHpAAAx6QgAMekQADHpGAAx6ZwAMemoADHptAAx6cAAMenMADHp2AAx6eQAMenwADHp/AAx6gQAMevwADHr+AAx7AAAMewIADHsFAAx7BgAMewcADHsIAAx7CQAMewsADHsNAAx7DgAMew8ADHsRAAx7EgAMe40ADHuPAAx7kQAMe5MADHuWAAx7lwAMe5gADHuZAAx7mgAMe5wADHueAAx7nwAMe6AADHuiAAx7owAMfB4ADHwgAAx8IwAMfCUADHwoAAx8KQAMfCoADHwrAAx8LAAMfC4ADHwwAAx8MQAMfDIADHw0AAx8NQAMfE4ADHxPAAx8UAAMfFIADHzNAAx8zwAMfNEADHzTAAx81gAMfNcADHzYAAx82QAMfNoADHzcAAx83gAMfN8ADHzgAAx84gAMfOMADH1eAAx9YAAMfWIADH1kAAx9ZwAMfWgADH1pAAx9agAMfWsADH1tAAx9bwAMfXAADH1xAAx9cwAMfXQADH3vAAx98QAMffMADH31AAx9+AAMffkADH36AAx9+wAMffwADH3+AAx+AAAMfgEADH4CAAx+BAAMfgUADH6AAAx+ggAMfoQADH6GAAx+iQAMfooADH6LAAx+jAAMfo0ADH6PAAx+kQAMfpIADH6TAAx+lQAMfpYADH8RAAx/EwAMfxUADH8XAAx/GgAMfxsADH8cAAx/HQAMfx4ADH8gAAx/IgAMfyMADH8kAAx/JgAMfycADH9wAAx/lAAMf7sADH/fAAx/4gAMf+QADH/mAAx/6AAMf+oADH/sAAx/7QAMf/AADIAJAAyAJgAMgCgADIAqAAyALAAMgC4ADIAwAAyAMgAMgDQADIBRAAyAVAAMgFcADIBaAAyAXQAMgGAADIBjAAyAZgAMgGgADIDjAAyA5QAMgOcADIDpAAyA7AAMgO0ADIDuAAyA7wAMgPAADIDyAAyA9AAMgPUADID2AAyA+AAMgPkADIF0AAyBdgAMgXgADIF6AAyBfQAMgX4ADIF/AAyBgAAMgYEADIGDAAyBhQAMgYYADIGHAAyBiQAMgYoADIIFAAyCBwAMggkADIILAAyCDgAMgg8ADIIQAAyCEQAMghIADIIUAAyCFgAMghcADIIYAAyCGgAMghsADIKWAAyCmAAMgpoADIKcAAyCnwAMgqAADIKhAAyCogAMgqMADIKlAAyCpwAMgqgADIKpAAyCqwAMgqwADIMnAAyDKQAMgysADIMtAAyDMAAMgzEADIMyAAyDMwAMgzQADIM2AAyDOAAMgzkADIM6AAyDPAAMgz0ADIO4AAyDugAMg7wADIO+AAyDwQAMg8IADIPDAAyDxAAMg8UADIPHAAyDyQAMg8oADIPLAAyDzQAMg84ADIRJAAyESwAMhE0ADIRPAAyEUgAMhFMADIRUAAyEVQAMhFYADIRYAAyEWgAMhFsADIRcAAyEXgAMhF8ADIRwAAyEcQAMhHMADITuAAyE8AAMhPIADIT0AAyE9wAMhPgADIT5AAyE+gAMhPsADIT9AAyE/wAMhQAADIUBAAyFAwAMhQQADIV/AAyFgQAMhYMADIWFAAyFiAAMhYkADIWKAAyFiwAMhYwADIWOAAyFkAAMhZEADIWSAAyFlAAMhZUADIYQAAyGEgAMhhUADIYXAAyGGgAMhhsADIYcAAyGHQAMhh4ADIYgAAyGIgAMhiMADIYkAAyGJgAMhicADIa6AAyG3QAMhv0ADIcdAAyHHwAMhyEADIcjAAyHJQAMhygADIcpAAyHKgAMhy0ADIcuAAyHMAAMhzEADIczAAyHNgAMhzcADIc4AAyHOwAMhzwADIdBAAyHWgAMh2MADIdlAAyHZwAMh3AADIdzAAyHdgAMh3gADIfBAAyH5QAMiAwADIgwAAyIMwAMiDUADIg3AAyIOQAMiDsADIg9AAyIPgAMiEEADIhaAAyIewAMiH0ADIh/AAyIgQAMiIMADIiFAAyIhwAMiIkADIiLAAyIrAAMiK8ADIiyAAyItQAMiLgADIi7AAyIvgAMiMEADIjEAAyIxgAMiUEADIlDAAyJRQAMiUcADIlKAAyJSwAMiUwADIlNAAyJTgAMiVAADIlSAAyJUwAMiVQADIlWAAyJVwAMidIADInUAAyJ1gAMidgADInbAAyJ3AAMid0ADIneAAyJ3wAMieEADInjAAyJ5AAMieUADInnAAyJ6AAMimMADIplAAyKaAAMimoADIptAAyKbgAMim8ADIpwAAyKcQAMinMADIp1AAyKdgAMincADIp5AAyKegAMipMADIqUAAyKlQAMipcADIsSAAyLFAAMixYADIsYAAyLGwAMixwADIsdAAyLHgAMix8ADIshAAyLIwAMiyQADIslAAyLJwAMiygADIujAAyLpQAMi6cADIupAAyLrAAMi60ADIuuAAyLrwAMi7AADIuyAAyLtAAMi7UADIu2AAyLuAAMi7kADIw0AAyMNgAMjDgADIw6AAyMPQAMjD4ADIw/AAyMQAAMjEEADIxDAAyMRQAMjEYADIxHAAyMSQAMjEoADIzFAAyMxwAMjMkADIzLAAyMzgAMjM8ADIzQAAyM0QAMjNIADIzUAAyM1gAMjNcADIzYAAyM2gAMjNsADI1WAAyNWAAMjVoADI1cAAyNXwAMjWAADI1hAAyNYgAMjWMADI1lAAyNZwAMjWgADI1pAAyNawAMjWwADI21AAyN2QAMjgAADI4kAAyOJwAMjikADI4rAAyOLQAMji8ADI4xAAyOMgAMjjUADI5OAAyOawAMjm0ADI5vAAyOcQAMjnMADI51AAyOdwAMjnkADI6WAAyOmQAMjpwADI6fAAyOogAMjqUADI6oAAyOqwAMjq0ADI8oAAyPKgAMjywADI8uAAyPMQAMjzIADI8zAAyPNAAMjzUADI83AAyPOQAMjzoADI87AAyPPQAMjz4ADI+5AAyPuwAMj70ADI+/AAyPwgAMj8MADI/EAAyPxQAMj8YADI/IAAyPygAMj8sADI/MAAyPzgAMj88ADJBKAAyQTAAMkE4ADJBQAAyQUwAMkFQADJBVAAyQVgAMkFcADJBZAAyQWwAMkFwADJBdAAyQXwAMkGAADJDbAAyQ3QAMkOAADJDiAAyQ5QAMkOYADJDnAAyQ6AAMkOkADJDrAAyQ7QAMkO4ADJDvAAyQ8QAMkPIADJFtAAyRbwAMkXEADJFzAAyRdgAMkXcADJF4AAyReQAMkXoADJF8AAyRfgAMkX8ADJGAAAyRggAMkYMADJH+AAySAAAMkgIADJIEAAySBwAMkggADJIJAAySCgAMkgsADJINAAySDwAMkhAADJIRAAySEwAMkhQADJKPAAySkQAMkpMADJKVAAySmAAMkpkADJKaAAySmwAMkpwADJKeAAySoAAMkqEADJKiAAySpAAMkqUADJM4AAyTWwAMk3sADJObAAyTnQAMk58ADJOhAAyTowAMk6YADJOnAAyTqAAMk6sADJOsAAyTrgAMk68ADJOyAAyTtQAMk7YADJO3AAyTugAMk7sADJPAAAyT2QAMk+IADJPkAAyT5gAMk+8ADJPyAAyT9QAMk/cADJRAAAyUZAAMlIsADJSvAAyUsgAMlLQADJS2AAyUuAAMlLoADJS8AAyUvQAMlMAADJTZAAyU+gAMlPwADJT+AAyVAAAMlQIADJUEAAyVBgAMlQgADJUKAAyVKwAMlS4ADJUxAAyVNAAMlTcADJU6AAyVPQAMlUAADJVDAAyVRQAMlcAADJXCAAyVxAAMlcYADJXJAAyVygAMlcsADJXMAAyVzQAMlc8ADJXRAAyV0gAMldMADJXVAAyV1gAMllEADJZTAAyWVQAMllcADJZaAAyWWwAMllwADJZdAAyWXgAMlmAADJZiAAyWYwAMlmQADJZmAAyWZwAMluIADJbkAAyW5wAMlukADJbsAAyW7QAMlu4ADJbvAAyW8AAMlvIADJb0AAyW9QAMlvYADJb4AAyW+QAMlxIADJcTAAyXFAAMlxYADJeRAAyXkwAMl5UADJeXAAyXmgAMl5sADJecAAyXnQAMl54ADJegAAyXogAMl6MADJekAAyXpgAMl6cADJgiAAyYJAAMmCYADJgoAAyYKwAMmCwADJgtAAyYLgAMmC8ADJgxAAyYMwAMmDQADJg1AAyYNwAMmDgADJizAAyYtQAMmLcADJi5AAyYvAAMmL0ADJi+AAyYvwAMmMAADJjCAAyYxAAMmMUADJjGAAyYyAAMmMkADJlEAAyZRgAMmUgADJlKAAyZTQAMmU4ADJlPAAyZUAAMmVEADJlTAAyZVQAMmVYADJlXAAyZWQAMmVoADJnVAAyZ1wAMmdkADJnbAAyZ3gAMmd8ADJngAAyZ4QAMmeIADJnkAAyZ5gAMmecADJnoAAyZ6gAMmesADJo0AAyaWAAMmn8ADJqjAAyapgAMmqgADJqqAAyarAAMmq4ADJqwAAyasQAMmrQADJrNAAya6gAMmuwADJruAAya8AAMmvIADJr0AAya9gAMmvgADJsVAAybGAAMmxsADJseAAybIQAMmyQADJsnAAybKgAMmywADJunAAybqQAMm6sADJutAAybsAAMm7EADJuyAAybswAMm7QADJu2AAybuAAMm7kADJu6AAybvAAMm70ADJw4AAycOgAMnD0ADJw/AAycQgAMnEMADJxEAAycRQAMnEYADJxIAAycSgAMnEsADJxMAAycTgAMnE8ADJzKAAyczAAMnM4ADJzQAAyc0wAMnNQADJzVAAyc1gAMnNcADJzZAAyc2wAMnNwADJzdAAyc3wAMnOAADJ1bAAydXQAMnWAADJ1iAAydZQAMnWYADJ1nAAydaAAMnWkADJ1rAAydbQAMnW4ADJ1vAAydcQAMnXIADJ31AAyeGQAMnj0ADJ5gAAyehwAMnqcADJ7OAAye9QAMnxUADJ85AAyfXQAMn18ADJ9iAAyfZAAMn2YADJ9oAAyfawAMn24ADJ9wAAyfcgAMn3UADJ93AAyfeQAMn3wADJ9/AAyfgAAMn4UADJ+eAAyfowAMn6UADJ+qAAyfrQAMn68ADJ/4AAygHAAMoEMADKBnAAygagAMoGwADKBuAAygcAAMoHIADKB0AAygdQAMoHgADKCRAAygtgAMoLgADKC6AAygvAAMoL4ADKDAAAygwgAMoMQADKDGAAygyAAMoO0ADKDwAAyg8wAMoPYADKD5AAyg/AAMoP8ADKECAAyhBQAMoQgADKEKAAyhhQAMoYcADKGKAAyhjAAMoY8ADKGQAAyhkQAMoZIADKGTAAyhlQAMoZcADKGYAAyhmQAMoZsADKGcAAyhrQAMoa4ADKGwAAyiKwAMoi0ADKIvAAyiMQAMojQADKI1AAyiNgAMojcADKI4AAyiOgAMojwADKI9AAyiPgAMokAADKJBAAyivAAMor4ADKLBAAyiwwAMosYADKLHAAyiyAAMoskADKLKAAyizAAMos4ADKLPAAyi0AAMotIADKLTAAyi5AAMouUADKLnAAyjYgAMo2QADKNmAAyjaAAMo2sADKNsAAyjbQAMo24ADKNvAAyjcQAMo3MADKN0AAyjdQAMo3cADKN4AAyj8wAMo/UADKP4AAyj+gAMo/0ADKP+AAyj/wAMpAAADKQBAAykAwAMpAUADKQGAAykBwAMpAkADKQKAAykGwAMpBwADKQeAAykmQAMpJsADKSdAAyknwAMpKIADKSjAAykpAAMpKUADKSmAAykqAAMpKoADKSrAAykrAAMpK4ADKSvAAylKgAMpSwADKUvAAylMQAMpTQADKU1AAylNgAMpTcADKU4AAylOgAMpTwADKU9AAylPgAMpUAADKVBAAylWgAMpVsADKVcAAylXgAMpdkADKXbAAyl3QAMpd8ADKXiAAyl4wAMpeQADKXlAAyl5gAMpegADKXqAAyl6wAMpewADKXuAAyl7wAMpmoADKZsAAymbwAMpnEADKZ0AAymdQAMpnYADKZ3AAymeAAMpnoADKZ8AAymfQAMpn4ADKaAAAymgQAMppkADKayAAym4wAMpuYADKbpAAym7AAMpu8ADKbyAAym9QAMpvgADKb7AAym/gAMpwEADKcEAAynBwAMpzgADKc7AAynPgAMp0EADKdEAAynRwAMp0oADKdNAAynUAAMp1MADKdWAAynWQAMp1wADKdeAAynZgAMp3kADKeCAAynjgAMp5wADKe4AAynwAAMp9UADKfrAAyn/wAMqJIADKi1AAyo1QAMqPUADKj3AAyo+QAMqPsADKj9AAypAAAMqQEADKkCAAypBQAMqQYADKkIAAypCQAMqQwADKkPAAypEAAMqREADKkUAAypFQAMqRoADKkzAAypPAAMqT4ADKlAAAypSQAMqUwADKlPAAypUQAMqZoADKm+AAyp5QAMqgkADKoMAAyqDgAMqhAADKoSAAyqFAAMqhYADKoXAAyqGgAMqjMADKpUAAyqVgAMqlgADKpaAAyqXAAMql4ADKpgAAyqYgAMqmQADKqFAAyqiAAMqosADKqOAAyqkQAMqpQADKqXAAyqmgAMqp0ADKqfAAyrGgAMqxwADKseAAyrIAAMqyMADKskAAyrJQAMqyYADKsnAAyrKQAMqysADKssAAyrLQAMqy8ADKswAAyrqwAMq60ADKuvAAyrsQAMq7QADKu1AAyrtgAMq7cADKu4AAyrugAMq7wADKu9AAyrvgAMq8AADKvBAAysPAAMrD4ADKxBAAysQwAMrEYADKxHAAysSAAMrEkADKxKAAysTAAMrE4ADKxPAAysUAAMrFIADKxTAAysbAAMrG0ADKxuAAyscAAMrOsADKztAAys7wAMrPEADKz0AAys9QAMrPYADKz3AAys+AAMrPoADKz8AAys/QAMrP4ADK0AAAytAQAMrXwADK1+AAytgAAMrYIADK2FAAythgAMrYcADK2IAAytiQAMrYsADK2NAAytjgAMrY8ADK2RAAytkgAMrg0ADK4PAAyuEQAMrhMADK4WAAyuFwAMrhgADK4ZAAyuGgAMrhwADK4eAAyuHwAMriAADK4iAAyuIwAMrp4ADK6gAAyuogAMrqQADK6nAAyuqAAMrqkADK6qAAyuqwAMrq0ADK6vAAyusAAMrrEADK6zAAyutAAMry8ADK8xAAyvMwAMrzUADK84AAyvOQAMrzoADK87AAyvPAAMrz4ADK9AAAyvQQAMr0IADK9EAAyvRQAMr44ADK+yAAyv2QAMr/0ADLAAAAywAgAMsAQADLAGAAywCAAMsAoADLALAAywDgAMsCcADLBEAAywRgAMsEgADLBKAAywTAAMsE4ADLBQAAywUgAMsG8ADLByAAywdQAMsHgADLB7AAywfgAMsIEADLCEAAywhgAMsQEADLEDAAyxBQAMsQcADLEKAAyxCwAMsQwADLENAAyxDgAMsRAADLESAAyxEwAMsRQADLEWAAyxFwAMsZIADLGUAAyxlgAMsZgADLGbAAyxnAAMsZ0ADLGeAAyxnwAMsaEADLGjAAyxpAAMsaUADLGnAAyxqAAMsiMADLIlAAyyJwAMsikADLIsAAyyLQAMsi4ADLIvAAyyMAAMsjIADLI0AAyyNQAMsjYADLI4AAyyOQAMsrQADLK2AAyyuAAMsroADLK9AAyyvgAMsr8ADLLAAAyywQAMssMADLLFAAyyxgAMsscADLLJAAyyygAMs0UADLNHAAyzSQAMs0sADLNOAAyzTwAMs1AADLNRAAyzUgAMs1QADLNWAAyzVwAMs1gADLNaAAyzWwAMs9YADLPYAAyz2gAMs9wADLPfAAyz4AAMs+EADLPiAAyz4wAMs+UADLPnAAyz6AAMs+kADLPrAAyz7AAMtGcADLRpAAy0bAAMtG4ADLRxAAy0cgAMtHMADLR0AAy0dQAMtHcADLR5AAy0egAMtHsADLR9AAy0fgAMtREADLU0AAy1VAAMtXQADLV2AAy1eAAMtXoADLV8AAy1fgAMtX8ADLWAAAy1gwAMtYQADLWGAAy1hwAMtYoADLWMAAy1jQAMtY4ADLWRAAy1kgAMtZcADLWwAAy1uQAMtbsADLW9AAy1xgAMtckADLXMAAy1zgAMthcADLY7AAy2YgAMtoYADLaJAAy2iwAMto0ADLaPAAy2kQAMtpMADLaUAAy2lwAMtrAADLbRAAy20wAMttUADLbXAAy22QAMttsADLbdAAy23wAMtuEADLcCAAy3BQAMtwgADLcLAAy3DgAMtxEADLcUAAy3FwAMtxoADLccAAy3lwAMt5kADLebAAy3nQAMt6AADLehAAy3ogAMt6MADLekAAy3pgAMt6gADLepAAy3qgAMt6wADLetAAy4KAAMuCoADLgsAAy4LgAMuDEADLgyAAy4MwAMuDQADLg1AAy4NwAMuDkADLg6AAy4OwAMuD0ADLg+AAy4uQAMuLsADLi+AAy4wAAMuMMADLjEAAy4xQAMuMYADLjHAAy4yQAMuMsADLjMAAy4zQAMuM8ADLjQAAy46QAMuOoADLjrAAy47QAMuWgADLlqAAy5bAAMuW4ADLlxAAy5cgAMuXMADLl0AAy5dQAMuXcADLl5AAy5egAMuXsADLl9AAy5fgAMufkADLn7AAy5/QAMuf8ADLoCAAy6AwAMugQADLoFAAy6BgAMuggADLoKAAy6CwAMugwADLoOAAy6DwAMuooADLqMAAy6jgAMupAADLqTAAy6lAAMupUADLqWAAy6lwAMupkADLqbAAy6nAAMup0ADLqfAAy6oAAMuxsADLsdAAy7HwAMuyEADLskAAy7JQAMuyYADLsnAAy7KAAMuyoADLssAAy7LQAMuy4ADLswAAy7MQAMu6wADLuuAAy7sAAMu7IADLu1AAy7tgAMu7cADLu4AAy7uQAMu7sADLu9AAy7vgAMu78ADLvBAAy7wgAMvAsADLwvAAy8VgAMvHoADLx9AAy8fwAMvIEADLyDAAy8hQAMvIcADLyIAAy8iwAMvKQADLzBAAy8wwAMvMUADLzHAAy8yQAMvMsADLzNAAy8zwAMvOwADLzvAAy88gAMvPUADLz4AAy8+wAMvP4ADL0BAAy9AwAMvX4ADL2AAAy9ggAMvYQADL2HAAy9iAAMvYkADL2KAAy9iwAMvY0ADL2PAAy9kAAMvZEADL2TAAy9lAAMvg8ADL4RAAy+FAAMvhYADL4ZAAy+GgAMvhsADL4cAAy+HQAMvh8ADL4hAAy+IgAMviMADL4lAAy+JgAMvqEADL6jAAy+pQAMvqcADL6qAAy+qwAMvqwADL6tAAy+rgAMvrAADL6yAAy+swAMvrQADL62AAy+twAMvzIADL80AAy/NwAMvzkADL88AAy/PQAMvz4ADL8/AAy/QAAMv0IADL9EAAy/RQAMv0YADL9IAAy/SQAMv8QADL/GAAy/yAAMv8oADL/NAAy/zgAMv88ADL/QAAy/0QAMv9MADL/VAAy/1gAMv9cADL/ZAAy/2gAMwFUADMBXAAzAWQAMwFsADMBeAAzAXwAMwGAADMBhAAzAYgAMwGQADMBmAAzAZwAMwGgADMBqAAzAawAMwOYADMDoAAzA6wAMwO0ADMDwAAzA8QAMwPIADMDzAAzA9AAMwPYADMD4AAzA+QAMwPoADMD8AAzA/QAMwZAADMGzAAzB0wAMwfMADMH1AAzB9wAMwfkADMH7AAzB/gAMwf8ADMIAAAzCAwAMwgQADMIGAAzCBwAMwgkADMIMAAzCDQAMwg4ADMIRAAzCEgAMwhcADMIwAAzCOQAMwjsADMI9AAzCRgAMwkkADMJMAAzCTgAMwpcADMK7AAzC4gAMwwYADMMJAAzDCwAMww0ADMMPAAzDEQAMwxMADMMUAAzDFwAMwzAADMNRAAzDUwAMw1UADMNXAAzDWQAMw1sADMNdAAzDXwAMw2EADMOCAAzDhQAMw4gADMOLAAzDjgAMw5EADMOUAAzDlwAMw5oADMOcAAzEFwAMxBkADMQbAAzEHQAMxCAADMQhAAzEIgAMxCMADMQkAAzEJgAMxCgADMQpAAzEKgAMxCwADMQtAAzEqAAMxKoADMSsAAzErgAMxLEADMSyAAzEswAMxLQADMS1AAzEtwAMxLkADMS6AAzEuwAMxL0ADMS+AAzFOQAMxTsADMU+AAzFQAAMxUMADMVEAAzFRQAMxUYADMVHAAzFSQAMxUsADMVMAAzFTQAMxU8ADMVQAAzFaQAMxWoADMVrAAzFbQAMxegADMXqAAzF7AAMxe4ADMXxAAzF8gAMxfMADMX0AAzF9QAMxfcADMX5AAzF+gAMxfsADMX9AAzF/gAMxnkADMZ7AAzGfQAMxn8ADMaCAAzGgwAMxoQADMaFAAzGhgAMxogADMaKAAzGiwAMxowADMaOAAzGjwAMxwoADMcMAAzHDgAMxxAADMcTAAzHFAAMxxUADMcWAAzHFwAMxxkADMcbAAzHHAAMxx0ADMcfAAzHIAAMx5sADMedAAzHnwAMx6EADMekAAzHpQAMx6YADMenAAzHqAAMx6oADMesAAzHrQAMx64ADMewAAzHsQAMyCwADMguAAzIMAAMyDIADMg1AAzINgAMyDcADMg4AAzIOQAMyDsADMg9AAzIPgAMyD8ADMhBAAzIQgAMyIsADMivAAzI1gAMyPoADMj9AAzI/wAMyQEADMkDAAzJBQAMyQcADMkIAAzJCwAMySQADMlBAAzJQwAMyUUADMlHAAzJSQAMyUsADMlNAAzJTwAMyWwADMlvAAzJcgAMyXUADMl4AAzJewAMyX4ADMmBAAzJgwAMyf4ADMoAAAzKAgAMygQADMoHAAzKCAAMygkADMoKAAzKCwAMyg0ADMoPAAzKEAAMyhEADMoTAAzKFAAMyo8ADMqRAAzKkwAMypUADMqYAAzKmQAMypoADMqbAAzKnAAMyp4ADMqgAAzKoQAMyqIADMqkAAzKpQAMyyAADMsiAAzLJAAMyyYADMspAAzLKgAMyysADMssAAzLLQAMyy8ADMsxAAzLMgAMyzMADMs1AAzLNgAMy7EADMuzAAzLtQAMy7cADMu6AAzLuwAMy7wADMu9AAzLvgAMy8AADMvCAAzLwwAMy8QADMvGAAzLxwAMzEIADMxEAAzMRgAMzEgADMxLAAzMTAAMzE0ADMxOAAzMTwAMzFEADMxTAAzMVAAMzFUADMxXAAzMWAAMzNMADMzVAAzM1wAMzNkADMzcAAzM3QAMzN4ADMzfAAzM4AAMzOIADMzkAAzM5QAMzOYADMzoAAzM6QAMzWQADM1mAAzNaAAMzWoADM1tAAzNbgAMzW8ADM1wAAzNcQAMzXMADM11AAzNdgAMzXcADM15AAzNegAMzg0ADM4wAAzOUAAMznAADM5yAAzOdAAMznYADM54AAzOewAMznwADM59AAzOgAAMzoEADM6DAAzOhAAMzoYADM6JAAzOigAMzosADM6OAAzOjwAMzpQADM6tAAzOtgAMzrgADM66AAzOwwAMzsYADM7JAAzOywAMzxQADM84AAzPXwAMz4MADM+GAAzPiAAMz4oADM+MAAzPjgAMz5AADM+RAAzPlAAMz60ADM/OAAzP0AAMz9IADM/UAAzP1gAMz9gADM/aAAzP3AAMz94ADM//AAzQAgAM0AUADNAIAAzQCwAM0A4ADNARAAzQFAAM0BcADNAZAAzQlAAM0JYADNCYAAzQmgAM0J0ADNCeAAzQnwAM0KAADNChAAzQowAM0KUADNCmAAzQpwAM0KkADNCqAAzRJQAM0ScADNEpAAzRKwAM0S4ADNEvAAzRMAAM0TEADNEyAAzRNAAM0TYADNE3AAzROAAM0ToADNE7AAzRtgAM0bgADNG7AAzRvQAM0cAADNHBAAzRwgAM0cMADNHEAAzRxgAM0cgADNHJAAzRygAM0cwADNHNAAzR5gAM0ecADNHoAAzR6gAM0mUADNJnAAzSaQAM0msADNJuAAzSbwAM0nAADNJxAAzScgAM0nQADNJ2AAzSdwAM0ngADNJ6AAzSewAM0vYADNL4AAzS+gAM0vwADNL/AAzTAAAM0wEADNMCAAzTAwAM0wUADNMHAAzTCAAM0wkADNMLAAzTDAAM04cADNOJAAzTiwAM040ADNOQAAzTkQAM05IADNOTAAzTlAAM05YADNOYAAzTmQAM05oADNOcAAzTnQAM1BgADNQaAAzUHAAM1B4ADNQhAAzUIgAM1CMADNQkAAzUJQAM1CcADNQpAAzUKgAM1CsADNQtAAzULgAM1KkADNSrAAzUrQAM1K8ADNSyAAzUswAM1LQADNS1AAzUtgAM1LgADNS6AAzUuwAM1LwADNS+AAzUvwAM1QgADNUsAAzVUwAM1XcADNV6AAzVfAAM1X4ADNWAAAzVggAM1YQADNWFAAzViAAM1aEADNW+AAzVwAAM1cIADNXEAAzVxgAM1cgADNXKAAzVzAAM1ekADNXsAAzV7wAM1fIADNX1AAzV+AAM1fsADNX+AAzWAAAM1nsADNZ9AAzWfwAM1oEADNaEAAzWhQAM1oYADNaHAAzWiAAM1ooADNaMAAzWjQAM1o4ADNaQAAzWkQAM1wwADNcOAAzXEAAM1xIADNcVAAzXFgAM1xcADNcYAAzXGQAM1xsADNcdAAzXHgAM1x8ADNchAAzXIgAM150ADNefAAzXoQAM16MADNemAAzXpwAM16gADNepAAzXqgAM16wADNeuAAzXrwAM17AADNeyAAzXswAM2C4ADNgwAAzYMwAM2DUADNg4AAzYOQAM2DoADNg7AAzYPAAM2D4ADNhAAAzYQQAM2EIADNhEAAzYRQAM2MAADNjCAAzYxAAM2MYADNjJAAzYygAM2MsADNjMAAzYzQAM2M8ADNjRAAzY0gAM2NMADNjVAAzY1gAM2VEADNlTAAzZVQAM2VcADNlaAAzZWwAM2VwADNldAAzZXgAM2WAADNliAAzZYwAM2WQADNlmAAzZZwAM2eIADNnkAAzZ5gAM2egADNnrAAzZ7AAM2e0ADNnuAAzZ7wAM2fEADNnzAAzZ9AAM2fUADNn3AAzZ+AAM2osADNquAAzazgAM2u4ADNrwAAza8gAM2vQADNr2AAza+QAM2voADNr7AAza/gAM2v8ADNsBAAzbAgAM2wQADNsHAAzbCAAM2wkADNsMAAzbDQAM2xIADNsrAAzbNAAM2zYADNs4AAzbQQAM20QADNtHAAzbSQAM25IADNu2AAzb3QAM3AEADNwEAAzcBgAM3AgADNwKAAzcDAAM3A4ADNwPAAzcEgAM3CsADNxMAAzcTgAM3FAADNxSAAzcVAAM3FYADNxYAAzcWgAM3FwADNx9AAzcgAAM3IMADNyGAAzciQAM3IwADNyPAAzckgAM3JUADNyXAAzdEgAM3RQADN0WAAzdGAAM3RsADN0cAAzdHQAM3R4ADN0fAAzdIQAM3SMADN0kAAzdJQAM3ScADN0oAAzdowAM3aUADN2nAAzdqQAM3awADN2tAAzdrgAM3a8ADN2wAAzdsgAM3bQADN21AAzdtgAM3bgADN25AAzeNAAM3jYADN45AAzeOwAM3j4ADN4/AAzeQAAM3kEADN5CAAzeRAAM3kYADN5HAAzeSAAM3koADN5LAAzeZAAM3mUADN5mAAzeaAAM3uMADN7lAAze5wAM3ukADN7sAAze7QAM3u4ADN7vAAze8AAM3vIADN70AAze9QAM3vYADN74AAze+QAM33QADN92AAzfeAAM33oADN99AAzffgAM338ADN+AAAzfgQAM34MADN+FAAzfhgAM34cADN+JAAzfigAM4AUADOAHAAzgCQAM4AsADOAOAAzgDwAM4BAADOARAAzgEgAM4BQADOAWAAzgFwAM4BgADOAaAAzgGwAM4JYADOCYAAzgmgAM4JwADOCfAAzgoAAM4KEADOCiAAzgowAM4KUADOCnAAzgqAAM4KkADOCrAAzgrAAM4ScADOEpAAzhKwAM4S0ADOEwAAzhMQAM4TIADOEzAAzhNAAM4TYADOE4AAzhOQAM4ToADOE8AAzhPQAM4YYADOGqAAzh0QAM4fUADOH4AAzh+gAM4fwADOH+AAziAAAM4gIADOIDAAziBgAM4h8ADOI8AAziPgAM4kAADOJCAAziRAAM4kYADOJIAAziSgAM4mcADOJqAAzibQAM4nAADOJzAAzidgAM4nkADOJ8AAzifgAM4vkADOL7AAzi/QAM4v8ADOMCAAzjAwAM4wQADOMFAAzjBgAM4wgADOMKAAzjCwAM4wwADOMOAAzjDwAM44oADOOMAAzjjgAM45AADOOTAAzjlAAM45UADOOWAAzjlwAM45kADOObAAzjnAAM450ADOOfAAzjoAAM5BsADOQdAAzkHwAM5CEADOQkAAzkJQAM5CYADOQnAAzkKAAM5CoADOQsAAzkLQAM5C4ADOQwAAzkMQAM5KwADOSuAAzksQAM5LMADOS2AAzktwAM5LgADOS5AAzkugAM5LwADOS+AAzkvwAM5MAADOTCAAzkwwAM5T4ADOVAAAzlQgAM5UQADOVHAAzlSAAM5UkADOVKAAzlSwAM5U0ADOVPAAzlUAAM5VEADOVTAAzlVAAM5c8ADOXRAAzl0wAM5dUADOXYAAzl2QAM5doADOXbAAzl3AAM5d4ADOXgAAzl4QAM5eIADOXkAAzl5QAM5mAADOZiAAzmZAAM5mYADOZpAAzmagAM5msADOZsAAzmbQAM5m8ADOZxAAzmcgAM5nMADOZ1AAzmdgAM5wkADOcsAAznTAAM52wADOduAAzncAAM53IADOd0AAzndwAM53gADOd5AAznfAAM530ADOd/AAzngAAM54IADOeFAAznhgAM54cADOeKAAzniwAM55AADOepAAznsgAM57QADOe2AAznvwAM58IADOfFAAznxwAM6BAADOg0AAzoWwAM6H8ADOiCAAzohAAM6IYADOiIAAzoigAM6IwADOiNAAzokAAM6KkADOjKAAzozAAM6M4ADOjQAAzo0gAM6NQADOjWAAzo2AAM6NoADOj7AAzo/gAM6QEADOkEAAzpBwAM6QoADOkNAAzpEAAM6RMADOkVAAzpkAAM6ZIADOmUAAzplgAM6ZkADOmaAAzpmwAM6ZwADOmdAAzpnwAM6aEADOmiAAzpowAM6aUADOmmAAzqIQAM6iMADOolAAzqJwAM6ioADOorAAzqLAAM6i0ADOouAAzqMAAM6jIADOozAAzqNAAM6jYADOo3AAzqsgAM6rQADOq3AAzquQAM6rwADOq9AAzqvgAM6r8ADOrAAAzqwgAM6sQADOrFAAzqxgAM6sgADOrJAAzq4gAM6uMADOrkAAzq5gAM62EADOtjAAzrZQAM62cADOtqAAzrawAM62wADOttAAzrbgAM63AADOtyAAzrcwAM63QADOt2AAzrdwAM6/IADOv0AAzr9gAM6/gADOv7AAzr/AAM6/0ADOv+AAzr/wAM7AEADOwDAAzsBAAM7AUADOwHAAzsCAAM7IMADOyFAAzshwAM7IkADOyMAAzsjQAM7I4ADOyPAAzskAAM7JIADOyUAAzslQAM7JYADOyYAAzsmQAM7RQADO0WAAztGAAM7RoADO0dAAztHgAM7R8ADO0gAAztIQAM7SMADO0lAAztJgAM7ScADO0pAAztKgAM7aUADO2nAAztqQAM7asADO2uAAztrwAM7bAADO2xAAztsgAM7bQADO22AAzttwAM7bgADO26AAztuwAM7gQADO4oAAzuTwAM7nMADO52AAzueAAM7noADO58AAzufgAM7oAADO6BAAzuhAAM7p0ADO66AAzuvAAM7r4ADO7AAAzuwgAM7sQADO7GAAzuyAAM7uUADO7oAAzu6wAM7u4ADO7xAAzu9AAM7vcADO76AAzu/AAM73cADO95AAzvewAM730ADO+AAAzvgQAM74IADO+DAAzvhAAM74YADO+IAAzviQAM74oADO+MAAzvjQAM8AgADPAKAAzwDAAM8A4ADPARAAzwEgAM8BMADPAUAAzwFQAM8BcADPAZAAzwGgAM8BsADPAdAAzwHgAM8JkADPCbAAzwnQAM8J8ADPCiAAzwowAM8KQADPClAAzwpgAM8KgADPCqAAzwqwAM8KwADPCuAAzwrwAM8SoADPEsAAzxLwAM8TEADPE0AAzxNQAM8TYADPE3AAzxOAAM8ToADPE8AAzxPQAM8T4ADPFAAAzxQQAM8bwADPG+AAzxwAAM8cIADPHFAAzxxgAM8ccADPHIAAzxyQAM8csADPHNAAzxzgAM8c8ADPHRAAzx0gAM8k0ADPJPAAzyUQAM8lMADPJWAAzyVwAM8lgADPJZAAzyWgAM8lwADPJeAAzyXwAM8mAADPJiAAzyYwAM8t4ADPLgAAzy4gAM8uQADPLnAAzy6AAM8ukADPLqAAzy6wAM8u0ADPLvAAzy8AAM8vEADPLzAAzy9AAM84cADPOqAAzzygAM8+oADPPsAAzz7gAM8/AADPPyAAzz9QAM8/YADPP3AAzz+gAM8/sADPP9AAzz/gAM9AAADPQDAAz0BAAM9AUADPQIAAz0CQAM9A4ADPQnAAz0MAAM9DIADPQ0AAz0PQAM9EAADPRDAAz0RQAM9I4ADPSyAAz02QAM9P0ADPUAAAz1AgAM9QQADPUGAAz1CAAM9QoADPULAAz1DgAM9ScADPVIAAz1SgAM9UwADPVOAAz1UAAM9VIADPVUAAz1VgAM9VgADPV5AAz1fAAM9X8ADPWCAAz1hQAM9YgADPWLAAz1jgAM9ZEADPWTAAz2DgAM9hAADPYSAAz2FAAM9hcADPYYAAz2GQAM9hoADPYbAAz2HQAM9h8ADPYgAAz2IQAM9iMADPYkAAz2nwAM9qEADPajAAz2pQAM9qgADPapAAz2qgAM9qsADPasAAz2rgAM9rAADPaxAAz2sgAM9rQADPa1AAz3MAAM9zIADPc1AAz3NwAM9zoADPc7AAz3PAAM9z0ADPc+AAz3QAAM90IADPdDAAz3RAAM90YADPdHAAz3YAAM92EADPdiAAz3ZAAM998ADPfhAAz34wAM9+UADPfoAAz36QAM9+oADPfrAAz37AAM9+4ADPfwAAz38QAM9/IADPf0AAz39QAM+HAADPhyAAz4dAAM+HYADPh5AAz4egAM+HsADPh8AAz4fQAM+H8ADPiBAAz4ggAM+IMADPiFAAz4hgAM+QEADPkDAAz5BQAM+QcADPkKAAz5CwAM+QwADPkNAAz5DgAM+RAADPkSAAz5EwAM+RQADPkWAAz5FwAM+ZIADPmUAAz5lgAM+ZgADPmbAAz5nAAM+Z0ADPmeAAz5nwAM+aEADPmjAAz5pAAM+aUADPmnAAz5qAAM+iMADPolAAz6JwAM+ikADPosAAz6LQAM+i4ADPovAAz6MAAM+jIADPo0AAz6NQAM+jYADPo4AAz6OQAM+oIADPqmAAz6zQAM+vEADPr0AAz69gAM+vgADPr6AAz6/AAM+v4ADPr/AAz7AgAM+xsADPs4AAz7OgAM+zwADPs+AAz7QAAM+0IADPtEAAz7RgAM+2MADPtmAAz7aQAM+2wADPtvAAz7cgAM+3UADPt4AAz7egAM+/UADPv3AAz7+gAM+/wADPv/AAz8AAAM/AEADPwCAAz8AwAM/AUADPwHAAz8CAAM/AkADPwLAAz8DAAM/IcADPyJAAz8iwAM/I0ADPyQAAz8kQAM/JIADPyTAAz8lAAM/JYADPyYAAz8mQAM/JoADPycAAz8nQAM/RgADP0aAAz9HAAM/R4ADP0hAAz9IgAM/SMADP0kAAz9JQAM/ScADP0pAAz9KgAM/SsADP0tAAz9LgAM/akADP2rAAz9rgAM/bAADP2zAAz9tAAM/bUADP22AAz9twAM/bkADP27AAz9vAAM/b0ADP2/AAz9wAAM/jsADP49AAz+PwAM/kEADP5EAAz+RQAM/kYADP5HAAz+SAAM/koADP5MAAz+TQAM/k4ADP5QAAz+UQAM/swADP7OAAz+0AAM/tIADP7VAAz+1gAM/tcADP7YAAz+2QAM/tsADP7dAAz+3gAM/t8ADP7hAAz+4gAM/10ADP9fAAz/YQAM/2MADP9mAAz/ZwAM/2gADP9pAAz/agAM/2wADP9uAAz/bwAM/3AADP9yAAz/cwANAAYADQApAA0ASQANAGkADQBrAA0AbQANAG8ADQBxAA0AdAANAHUADQB2AA0AeQANAHoADQB8AA0AfQANAIAADQCDAA0AhAANAIUADQCIAA0AiQANAI4ADQCnAA0AsAANALIADQC0AA0AvQANAMAADQDDAA0AxQANAQ4ADQEyAA0BWQANAX0ADQGAAA0BggANAYQADQGGAA0BiAANAYoADQGLAA0BjgANAacADQHIAA0BygANAcwADQHOAA0B0AANAdIADQHUAA0B1gANAdgADQH5AA0B/AANAf8ADQICAA0CBQANAggADQILAA0CDgANAhEADQITAA0CjgANApAADQKSAA0ClAANApcADQKYAA0CmQANApoADQKbAA0CnQANAp8ADQKgAA0CoQANAqMADQKkAA0DHwANAyEADQMjAA0DJQANAygADQMpAA0DKgANAysADQMsAA0DLgANAzAADQMxAA0DMgANAzQADQM1AA0DsAANA7IADQO1AA0DtwANA7oADQO7AA0DvAANA70ADQO+AA0DwAANA8IADQPDAA0DxAANA8YADQPHAA0D4AANA+EADQPiAA0D5AANBF8ADQRhAA0EYwANBGUADQRoAA0EaQANBGoADQRrAA0EbAANBG4ADQRwAA0EcQANBHIADQR0AA0EdQANBPAADQTyAA0E9AANBPYADQT5AA0E+gANBPsADQT8AA0E/QANBP8ADQUBAA0FAgANBQMADQUFAA0FBgANBYEADQWDAA0FhQANBYcADQWKAA0FiwANBYwADQWNAA0FjgANBZAADQWSAA0FkwANBZQADQWWAA0FlwANBhIADQYUAA0GFgANBhgADQYbAA0GHAANBh0ADQYeAA0GHwANBiEADQYjAA0GJAANBiUADQYnAA0GKAANBqMADQalAA0GpwANBqkADQasAA0GrQANBq4ADQavAA0GsAANBrIADQa0AA0GtQANBrYADQa4AA0GuQANBwIADQcmAA0HTQANB3EADQd0AA0HdgANB3gADQd6AA0HfAANB34ADQd/AA0HggANB5sADQe4AA0HugANB7wADQe+AA0HwAANB8IADQfEAA0HxgANB+MADQfmAA0H6QANB+wADQfvAA0H8gANB/UADQf4AA0H+gANCHUADQh3AA0IeQANCHsADQh+AA0IfwANCIAADQiBAA0IggANCIQADQiGAA0IhwANCIgADQiKAA0IiwANCQYADQkIAA0JCgANCQwADQkPAA0JEAANCREADQkSAA0JEwANCRUADQkXAA0JGAANCRkADQkbAA0JHAANCZcADQmZAA0JmwANCZ0ADQmgAA0JoQANCaIADQmjAA0JpAANCaYADQmoAA0JqQANCaoADQmsAA0JrQANCigADQoqAA0KLQANCi8ADQoyAA0KMwANCjQADQo1AA0KNgANCjgADQo6AA0KOwANCjwADQo+AA0KPwANCroADQq8AA0KvgANCsAADQrDAA0KxAANCsUADQrGAA0KxwANCskADQrLAA0KzAANCs0ADQrPAA0K0AANC0sADQtNAA0LTwANC1EADQtUAA0LVQANC1YADQtXAA0LWAANC1oADQtcAA0LXQANC14ADQtgAA0LYQANC9wADQveAA0L4QANC+MADQvmAA0L5wANC+gADQvpAA0L6gANC+wADQvuAA0L7wANC/AADQvyAA0L8wANDIYADQypAA0MyQANDOkADQzrAA0M7QANDO8ADQzxAA0M9AANDPUADQz2AA0M+QANDPoADQz8AA0M/QANDP8ADQ0CAA0NAwANDQQADQ0HAA0NCAANDREADQ0qAA0NMwANDTUADQ03AA0NQAANDUMADQ1GAA0NSAANDZEADQ21AA0N3AANDgAADQ4DAA0OBQANDgcADQ4JAA0OCwANDg0ADQ4OAA0OEQANDioADQ5LAA0OTQANDk8ADQ5RAA0OUwANDlUADQ5XAA0OWQANDlsADQ58AA0OfwANDoIADQ6FAA0OiAANDosADQ6OAA0OkQANDpQADQ6WAA0PEQANDxMADQ8VAA0PFwANDxoADQ8bAA0PHAANDx0ADQ8eAA0PIAANDyIADQ8jAA0PJAANDyYADQ8nAA0PogAND6QADQ+mAA0PqAAND6sADQ+sAA0PrQAND64ADQ+vAA0PsQAND7MADQ+0AA0PtQAND7cADQ+4AA0QMwANEDUADRA4AA0QOgANED0ADRA+AA0QPwANEEAADRBBAA0QQwANEEUADRBGAA0QRwANEEkADRBKAA0QYwANEGQADRBlAA0QZwANEOIADRDkAA0Q5gANEOgADRDrAA0Q7AANEO0ADRDuAA0Q7wANEPEADRDzAA0Q9AANEPUADRD3AA0Q+AANEXMADRF1AA0RdwANEXkADRF8AA0RfQANEX4ADRF/AA0RgAANEYIADRGEAA0RhQANEYYADRGIAA0RiQANEgQADRIGAA0SCAANEgoADRINAA0SDgANEg8ADRIQAA0SEQANEhMADRIVAA0SFgANEhcADRIZAA0SGgANEpUADRKXAA0SmQANEpsADRKeAA0SnwANEqAADRKhAA0SogANEqQADRKmAA0SpwANEqgADRKqAA0SqwANEyYADRMoAA0TKgANEywADRMvAA0TMAANEzEADRMyAA0TMwANEzUADRM3AA0TOAANEzkADRM7AA0TPAANE4UADROpAA0T0AANE/QADRP3AA0T+QANE/sADRP9AA0T/wANFAEADRQCAA0UBQANFB4ADRQ7AA0UPQANFD8ADRRBAA0UQwANFEUADRRHAA0USQANFGYADRRpAA0UbAANFG8ADRRyAA0UdQANFHgADRR7AA0UfQANFPgADRT6AA0U/AANFP4ADRUBAA0VAgANFQMADRUEAA0VBQANFQcADRUJAA0VCgANFQsADRUNAA0VDgANFYkADRWLAA0VjQANFY8ADRWSAA0VkwANFZQADRWVAA0VlgANFZgADRWaAA0VmwANFZwADRWeAA0VnwANFhoADRYcAA0WHgANFiAADRYjAA0WJAANFiUADRYmAA0WJwANFikADRYrAA0WLAANFi0ADRYvAA0WMAANFqsADRatAA0WsAANFrIADRa1AA0WtgANFrcADRa4AA0WuQANFrsADRa9AA0WvgANFr8ADRbBAA0WwgANFz0ADRc/AA0XQQANF0MADRdGAA0XRwANF0gADRdJAA0XSgANF0wADRdOAA0XTwANF1AADRdSAA0XUwANF84ADRfQAA0X0gANF9QADRfXAA0X2AANF9kADRfaAA0X2wANF90ADRffAA0X4AANF+EADRfjAA0X5AANGF8ADRhhAA0YYwANGGUADRhoAA0YaQANGGoADRhrAA0YbAANGG4ADRhwAA0YcQANGHIADRh0AA0YdQANGQgADRkrAA0ZSwANGWsADRltAA0ZbwANGXEADRlzAA0ZdgANGXcADRl4AA0ZewANGXwADRl+AA0ZfwANGYEADRmEAA0ZhQANGYYADRmJAA0ZigANGY8ADRmoAA0ZsQANGbMADRm1AA0ZvgANGcEADRnEAA0ZxgANGg8ADRozAA0aWgANGn4ADRqBAA0agwANGoUADRqHAA0aiQANGosADRqMAA0ajwANGqgADRrJAA0aywANGs0ADRrPAA0a0QANGtMADRrVAA0a1wANGtkADRr6AA0a/QANGwAADRsDAA0bBgANGwkADRsMAA0bDwANGxIADRsUAA0bjwANG5EADRuTAA0blQANG5gADRuZAA0bmgANG5sADRucAA0bngANG6AADRuhAA0bogANG6QADRulAA0cIAANHCIADRwkAA0cJgANHCkADRwqAA0cKwANHCwADRwtAA0cLwANHDEADRwyAA0cMwANHDUADRw2AA0csQANHLMADRy2AA0cuAANHLsADRy8AA0cvQANHL4ADRy/AA0cwQANHMMADRzEAA0cxQANHMcADRzIAA0c4QANHOIADRzjAA0c5QANHWAADR1iAA0dZAANHWYADR1pAA0dagANHWsADR1sAA0dbQANHW8ADR1xAA0dcgANHXMADR11AA0ddgANHfEADR3zAA0d9QANHfcADR36AA0d+wANHfwADR39AA0d/gANHgAADR4CAA0eAwANHgQADR4GAA0eBwANHoIADR6EAA0ehgANHogADR6LAA0ejAANHo0ADR6OAA0ejwANHpEADR6TAA0elAANHpUADR6XAA0emAANHxMADR8VAA0fFwANHxkADR8cAA0fHQANHx4ADR8fAA0fIAANHyIADR8kAA0fJQANHyYADR8oAA0fKQANH6QADR+mAA0fqAANH6oADR+tAA0frgANH68ADR+wAA0fsQANH7MADR+1AA0ftgANH7cADR+5AA0fugANIAMADSAnAA0gTgANIHIADSB1AA0gdwANIHkADSB7AA0gfQANIH8ADSCAAA0ggwANIJwADSC5AA0guwANIL0ADSC/AA0gwQANIMMADSDFAA0gxwANIOQADSDnAA0g6gANIO0ADSDwAA0g8wANIPYADSD5AA0g+wANIXYADSF4AA0hegANIXwADSF/AA0hgAANIYEADSGCAA0hgwANIYUADSGHAA0hiAANIYkADSGLAA0hjAANIgcADSIJAA0iCwANIg0ADSIQAA0iEQANIhIADSITAA0iFAANIhYADSIYAA0iGQANIhoADSIcAA0iHQANIpgADSKaAA0inAANIp4ADSKhAA0iogANIqMADSKkAA0ipQANIqcADSKpAA0iqgANIqsADSKtAA0irgANIykADSMrAA0jLQANIy8ADSMyAA0jMwANIzQADSM1AA0jNgANIzgADSM6AA0jOwANIzwADSM+AA0jPwANI7oADSO8AA0jvgANI8AADSPDAA0jxAANI8UADSPGAA0jxwANI8kADSPLAA0jzAANI80ADSPPAA0j0AANJEsADSRNAA0kTwANJFEADSRUAA0kVQANJFYADSRXAA0kWAANJFoADSRcAA0kXQANJF4ADSRgAA0kYQANJNwADSTeAA0k4AANJOIADSTlAA0k5gANJOcADSToAA0k6QANJOsADSTtAA0k7gANJO8ADSTxAA0k8gANJYUADSWoAA0lyAANJegADSXqAA0l7AANJe4ADSXwAA0l8wANJfQADSX1AA0l+AANJfkADSX7AA0l/AANJf4ADSYBAA0mAgANJgMADSYGAA0mBwANJhAADSYpAA0mMgANJjQADSY2AA0mPwANJkIADSZFAA0mRwANJpAADSa0AA0m2wANJv8ADScCAA0nBAANJwYADScIAA0nCgANJwwADScNAA0nEAANJykADSdKAA0nTAANJ04ADSdQAA0nUgANJ1QADSdWAA0nWAANJ1oADSd7AA0nfgANJ4EADSeEAA0nhwANJ4oADSeNAA0nkAANJ5MADSeVAA0oEAANKBIADSgUAA0oFgANKBkADSgaAA0oGwANKBwADSgdAA0oHwANKCEADSgiAA0oIwANKCUADSgmAA0ooQANKKMADSilAA0opwANKKoADSirAA0orAANKK0ADSiuAA0osAANKLIADSizAA0otAANKLYADSi3AA0pMgANKTQADSk3AA0pOQANKTwADSk9AA0pPgANKT8ADSlAAA0pQgANKUQADSlFAA0pRgANKUgADSlJAA0pYgANKWMADSlkAA0pZgANKeEADSnjAA0p5QANKecADSnqAA0p6wANKewADSntAA0p7gANKfAADSnyAA0p8wANKfQADSn2AA0p9wANKnIADSp0AA0qdgANKngADSp7AA0qfAANKn0ADSp+AA0qfwANKoEADSqDAA0qhAANKoUADSqHAA0qiAANKwMADSsFAA0rBwANKwkADSsMAA0rDQANKw4ADSsPAA0rEAANKxIADSsUAA0rFQANKxYADSsYAA0rGQANK5QADSuWAA0rmAANK5oADSudAA0rngANK58ADSugAA0roQANK6MADSulAA0rpgANK6cADSupAA0rqgANLCUADSwnAA0sKQANLCsADSwuAA0sLwANLDAADSwxAA0sMgANLDQADSw2AA0sNwANLDgADSw6AA0sOwANLIQADSyoAA0szwANLPMADSz2AA0s+AANLPoADSz8AA0s/gANLQAADS0BAA0tBAANLR0ADS06AA0tPAANLT4ADS1AAA0tQgANLUQADS1GAA0tSAANLWUADS1oAA0tawANLW4ADS1xAA0tdAANLXcADS16AA0tfAANLfcADS35AA0t+wANLf0ADS4AAA0uAQANLgIADS4DAA0uBAANLgYADS4IAA0uCQANLgoADS4MAA0uDQANLogADS6KAA0ujAANLo4ADS6RAA0ukgANLpMADS6UAA0ulQANLpcADS6ZAA0umgANLpsADS6dAA0ungANLxkADS8bAA0vHQANLx8ADS8iAA0vIwANLyQADS8lAA0vJgANLygADS8qAA0vKwANLywADS8uAA0vLwANL6oADS+sAA0vrwANL7EADS+0AA0vtQANL7YADS+3AA0vuAANL7oADS+8AA0vvQANL74ADS/AAA0vwQANMDwADTA+AA0wQAANMEIADTBFAA0wRgANMEcADTBIAA0wSQANMEsADTBNAA0wTgANME8ADTBRAA0wUgANMM0ADTDPAA0w0QANMNMADTDWAA0w1wANMNgADTDZAA0w2gANMNwADTDeAA0w3wANMOAADTDiAA0w4wANMV4ADTFgAA0xYgANMWQADTFnAA0xaAANMWkADTFqAA0xawANMW0ADTFvAA0xcAANMXEADTFzAA0xdAANMgcADTIqAA0ySgANMmoADTJsAA0ybgANMnAADTJyAA0ydQANMnYADTJ3AA0yegANMnsADTJ9AA0yfgANMoAADTKDAA0yhAANMoUADTKIAA0yiQANMo4ADTKnAA0ysAANMrIADTK0AA0yvQANMsAADTLDAA0yxQANMw4ADTMyAA0zWQANM30ADTOAAA0zggANM4QADTOGAA0ziAANM4oADTOLAA0zjgANM6cADTPIAA0zygANM8wADTPOAA0z0AANM9IADTPUAA0z1gANM9gADTP5AA0z/AANM/8ADTQCAA00BQANNAgADTQLAA00DgANNBEADTQTAA00jgANNJAADTSSAA00lAANNJcADTSYAA00mQANNJoADTSbAA00nQANNJ8ADTSgAA00oQANNKMADTSkAA01HwANNSEADTUjAA01JQANNSgADTUpAA01KgANNSsADTUsAA01LgANNTAADTUxAA01MgANNTQADTU1AA01sAANNbIADTW1AA01twANNboADTW7AA01vAANNb0ADTW+AA01wAANNcIADTXDAA01xAANNcYADTXHAA014AANNeEADTXiAA015AANNl8ADTZhAA02YwANNmUADTZoAA02aQANNmoADTZrAA02bAANNm4ADTZwAA02cQANNnIADTZ0AA02dQANNvAADTbyAA029AANNvYADTb5AA02+gANNvsADTb8AA02/QANNv8ADTcBAA03AgANNwMADTcFAA03BgANN4EADTeDAA03hQANN4cADTeKAA03iwANN4wADTeNAA03jgANN5AADTeSAA03kwANN5QADTeWAA03lwANOBIADTgUAA04FgANOBgADTgbAA04HAANOB0ADTgeAA04HwANOCEADTgjAA04JAANOCUADTgnAA04KAANOKMADTilAA04pwANOKkADTisAA04rQANOK4ADTivAA04sAANOLIADTi0AA04tQANOLYADTi4AA04uQANOQIADTkmAA05TQANOXEADTl0AA05dgANOXgADTl6AA05fAANOX4ADTl/AA05ggANOZsADTm4AA05ugANObwADTm+AA05wAANOcIADTnEAA05xgANOeMADTnmAA056QANOewADTnvAA058gANOfUADTn4AA05+gANOnUADTp3AA06eQANOnsADTp+AA06fwANOoAADTqBAA06ggANOoQADTqGAA06hwANOogADTqKAA06iwANOwYADTsIAA07CgANOwwADTsPAA07EAANOxEADTsSAA07EwANOxUADTsXAA07GAANOxkADTsbAA07HAANO5cADTuZAA07mwANO50ADTugAA07oQANO6IADTujAA07pAANO6YADTuoAA07qQANO6oADTusAA07rQANPCgADTwqAA08LQANPC8ADTwyAA08MwANPDQADTw1AA08NgANPDgADTw6AA08OwANPDwADTw+AA08PwANPLoADTy8AA08vgANPMAADTzDAA08xAANPMUADTzGAA08xwANPMkADTzLAA08zAANPM0ADTzPAA080AANPUsADT1NAA09TwANPVEADT1UAA09VQANPVYADT1XAA09WAANPVoADT1cAA09XQANPV4ADT1gAA09YQANPdwADT3eAA094AANPeIADT3lAA095gANPecADT3oAA096QANPesADT3tAA097gANPe8ADT3xAA098gANPoUADT6oAA0+yAANPugADT7qAA0+7AANPu4ADT7wAA0+8wANPvQADT71AA0++AANPvkADT77AA0+/AANPv4ADT8BAA0/AgANPwMADT8GAA0/BwANPxAADT8pAA0/MgANPzQADT82AA0/PwANP0IADT9FAA0/RwANP5AADT+0AA0/2wANP/8ADUACAA1ABAANQAYADUAIAA1ACgANQAwADUANAA1AEAANQCkADUBKAA1ATAANQE4ADUBQAA1AUgANQFQADUBWAA1AWAANQFoADUB7AA1AfgANQIEADUCEAA1AhwANQIoADUCNAA1AkAANQJMADUCVAA1BEAANQRIADUEUAA1BFgANQRkADUEaAA1BGwANQRwADUEdAA1BHwANQSEADUEiAA1BIwANQSUADUEmAA1BoQANQaMADUGlAA1BpwANQaoADUGrAA1BrAANQa0ADUGuAA1BsAANQbIADUGzAA1BtAANQbYADUG3AA1CMgANQjQADUI3AA1COQANQjwADUI9AA1CPgANQj8ADUJAAA1CQgANQkQADUJFAA1CRgANQkgADUJJAA1CYgANQmMADUJkAA1CZgANQuEADULjAA1C5QANQucADULqAA1C6wANQuwADULtAA1C7gANQvAADULyAA1C8wANQvQADUL2AA1C9wANQ3IADUN0AA1DdgANQ3gADUN7AA1DfAANQ30ADUN+AA1DfwANQ4EADUODAA1DhAANQ4UADUOHAA1DiAANRAMADUQFAA1EBwANRAkADUQMAA1EDQANRA4ADUQPAA1EEAANRBIADUQUAA1EFQANRBYADUQYAA1EGQANRJQADUSWAA1EmAANRJoADUSdAA1EngANRJ8ADUSgAA1EoQANRKMADUSlAA1EpgANRKcADUSpAA1EqgANRSUADUUnAA1FKQANRSsADUUuAA1FLwANRTAADUUxAA1FMgANRTQADUU2AA1FNwANRTgADUU6AA1FOwANRYQADUWoAA1FzwANRfMADUX2AA1F+AANRfoADUX8AA1F/gANRgAADUYBAA1GBAANRh0ADUY6AA1GPAANRj4ADUZAAA1GQgANRkQADUZGAA1GSAANRmUADUZoAA1GawANRm4ADUZxAA1GdAANRncADUZ6AA1GfAANRvcADUb5AA1G+wANRv0ADUcAAA1HAQANRwIADUcDAA1HBAANRwYADUcIAA1HCQANRwoADUcMAA1HDQANR4gADUeKAA1HjAANR44ADUeRAA1HkgANR5MADUeUAA1HlQANR5cADUeZAA1HmgANR5sADUedAA1HngANSBkADUgbAA1IHQANSB8ADUgiAA1IIwANSCQADUglAA1IJgANSCgADUgqAA1IKwANSCwADUguAA1ILwANSKoADUisAA1IrwANSLEADUi0AA1ItQANSLYADUi3AA1IuAANSLoADUi8AA1IvQANSL4ADUjAAA1IwQANSMQADUk/AA1JQQANSUMADUlFAA1JSAANSUkADUlKAA1JSwANSUwADUlOAA1JUAANSVEADUlSAA1JVAANSVUADUnQAA1J0gANSdQADUnWAA1J2QANSdoADUnbAA1J3AANSd0ADUnfAA1J4QANSeIADUnjAA1J5QANSeYADUphAA1KYwANSmUADUpnAA1KagANSmsADUpsAA1KbQANSm4ADUpwAA1KcgANSnMADUp0AA1KdgANSncADUqIAA1KiQANSosADUsGAA1LCAANSwoADUsMAA1LDwANSxAADUsRAA1LEgANSxMADUsVAA1LFwANSxgADUsZAA1LGwANSxwADUuXAA1LmQANS5sADUudAA1LoAANS6EADUuiAA1LowANS6QADUumAA1LqAANS6kADUuqAA1LrAANS60ADUwoAA1MKgANTC0ADUwvAA1MMgANTDMADUw0AA1MNQANTDYADUw4AA1MOgANTDsADUw8AA1MPgANTD8ADUzSAA1M9QANTRUADU01AA1NNwANTTkADU07AA1NPQANTUAADU1BAA1NQgANTUUADU1GAA1NSAANTUkADU1LAA1NTgANTU8ADU1QAA1NUwANTVQADU1ZAA1NcgANTXsADU19AA1NfwANTYgADU2LAA1NjgANTZAADU3ZAA1N/QANTiQADU5IAA1OSwANTk0ADU5PAA1OUQANTlMADU5VAA1OVgANTlkADU5yAA1OkwANTpUADU6XAA1OmQANTpsADU6dAA1OnwANTqEADU6jAA1OxAANTscADU7KAA1OzQANTtAADU7TAA1O1gANTtkADU7cAA1O3gANT1kADU9bAA1PXQANT18ADU9iAA1PYwANT2QADU9lAA1PZgANT2gADU9qAA1PawANT2wADU9uAA1PbwANT+oADU/sAA1P7gANT/AADU/zAA1P9AANT/UADU/2AA1P9wANT/kADU/7AA1P/AANT/0ADU//AA1QAAANUHsADVB9AA1QgAANUIIADVCFAA1QhgANUIcADVCIAA1QiQANUIsADVCNAA1QjgANUI8ADVCRAA1QkgANUKsADVCsAA1QrQANUK8ADVEqAA1RLAANUS4ADVEwAA1RMwANUTQADVE1AA1RNgANUTcADVE5AA1ROwANUTwADVE9AA1RPwANUUAADVG7AA1RvQANUb8ADVHBAA1RxAANUcUADVHGAA1RxwANUcgADVHKAA1RzAANUc0ADVHOAA1R0AANUdEADVJMAA1STgANUlAADVJSAA1SVQANUlYADVJXAA1SWAANUlkADVJbAA1SXQANUl4ADVJfAA1SYQANUmIADVLdAA1S3wANUuEADVLjAA1S5gANUucADVLoAA1S6QANUuoADVLsAA1S7gANUu8ADVLwAA1S8gANUvMADVNuAA1TcAANU3IADVN0AA1TdwANU3gADVN5AA1TegANU3sADVN9AA1TfwANU4AADVOBAA1TgwANU4QADVPNAA1T8QANVBgADVQ8AA1UPwANVEEADVRDAA1URQANVEcADVRJAA1USgANVE0ADVRmAA1UgwANVIUADVSHAA1UiQANVIsADVSNAA1UjwANVJEADVSuAA1UsQANVLQADVS3AA1UugANVL0ADVTAAA1UwwANVMUADVVAAA1VQgANVUQADVVGAA1VSQANVUoADVVLAA1VTAANVU0ADVVPAA1VUQANVVIADVVTAA1VVQANVVYADVXRAA1V0wANVdUADVXXAA1V2gANVdsADVXcAA1V3QANVd4ADVXgAA1V4gANVeMADVXkAA1V5gANVecADVZiAA1WZAANVmYADVZoAA1WawANVmwADVZtAA1WbgANVm8ADVZxAA1WcwANVnQADVZ1AA1WdwANVngADVbzAA1W9QANVvgADVb6AA1W/QANVv4ADVb/AA1XAAANVwEADVcDAA1XBQANVwYADVcHAA1XCQANVwoADVeFAA1XhwANV4kADVeLAA1XjgANV48ADVeQAA1XkQANV5IADVeUAA1XlgANV5cADVeYAA1XmgANV5sADVgWAA1YGAANWBoADVgcAA1YHwANWCAADVghAA1YIgANWCMADVglAA1YJwANWCgADVgpAA1YKwANWCwADVinAA1YqQANWKsADVitAA1YsAANWLEADViyAA1YswANWLQADVi2AA1YuAANWLkADVi6AA1YvAANWL0ADVlQAA1ZcwANWZMADVmzAA1ZtQANWbcADVm5AA1ZuwANWb4ADVm/AA1ZwAANWcMADVnEAA1ZxgANWccADVnKAA1ZzQANWc4ADVnPAA1Z0gANWdMADVnYAA1Z8QANWfoADVn8AA1Z/gANWgcADVoKAA1aDQANWg8ADVpYAA1afAANWqMADVrHAA1aygANWswADVrOAA1a0AANWtIADVrUAA1a1QANWtgADVrxAA1bEgANWxQADVsWAA1bGAANWxoADVscAA1bHgANWyAADVsiAA1bQwANW0YADVtJAA1bTAANW08ADVtSAA1bVQANW1gADVtbAA1bXQANW9gADVvaAA1b3AANW94ADVvhAA1b4gANW+MADVvkAA1b5QANW+cADVvpAA1b6gANW+sADVvtAA1b7gANXGkADVxrAA1cbQANXG8ADVxyAA1ccwANXHQADVx1AA1cdgANXHgADVx6AA1cewANXHwADVx+AA1cfwANXPoADVz8AA1c/wANXQEADV0EAA1dBQANXQYADV0HAA1dCAANXQoADV0MAA1dDQANXQ4ADV0QAA1dEQANXSoADV0rAA1dLAANXS4ADV2pAA1dqwANXa0ADV2vAA1dsgANXbMADV20AA1dtQANXbYADV24AA1dugANXbsADV28AA1dvgANXb8ADV46AA1ePAANXj4ADV5AAA1eQwANXkQADV5FAA1eRgANXkcADV5JAA1eSwANXkwADV5NAA1eTwANXlAADV7LAA1ezQANXs8ADV7RAA1e1AANXtUADV7WAA1e1wANXtgADV7aAA1e3AANXt0ADV7eAA1e4AANXuEADV9cAA1fXgANX2AADV9iAA1fZQANX2YADV9nAA1faAANX2kADV9rAA1fbQANX24ADV9vAA1fcQANX3IADV/tAA1f7wANX/EADV/zAA1f9gANX/cADV/4AA1f+QANX/oADV/8AA1f/gANX/8ADWAAAA1gAgANYAMADWBMAA1gcAANYJcADWC7AA1gvgANYMAADWDCAA1gxAANYMYADWDIAA1gyQANYMwADWDlAA1hAgANYQQADWEGAA1hCAANYQoADWEMAA1hDgANYRAADWEtAA1hMAANYTMADWE2AA1hOQANYTwADWE/AA1hQgANYUQADWG/AA1hwQANYcMADWHFAA1hyAANYckADWHKAA1hywANYcwADWHOAA1h0AANYdEADWHSAA1h1AANYdUADWJQAA1iUgANYlQADWJWAA1iWQANYloADWJbAA1iXAANYl0ADWJfAA1iYQANYmIADWJjAA1iZQANYmYADWLhAA1i4wANYuUADWLnAA1i6gANYusADWLsAA1i7QANYu4ADWLwAA1i8gANYvMADWL0AA1i9gANYvcADWNyAA1jdAANY3cADWN5AA1jfAANY30ADWN+AA1jfwANY4AADWOCAA1jhAANY4UADWOGAA1jiAANY4kADWQEAA1kBgANZAgADWQKAA1kDQANZA4ADWQPAA1kEAANZBEADWQTAA1kFQANZBYADWQXAA1kGQANZBoADWSVAA1klwANZJkADWSbAA1kngANZJ8ADWSgAA1koQANZKIADWSkAA1kpgANZKcADWSoAA1kqgANZKsADWUmAA1lKAANZSsADWUtAA1lMAANZTEADWUyAA1lMwANZTQADWU2AA1lOAANZTkADWU6AA1lPAANZT0ADWXQAA1l8wANZhMADWYzAA1mNQANZjcADWY5AA1mOwANZj4ADWY/AA1mQAANZkMADWZEAA1mRgANZkcADWZKAA1mTQANZk4ADWZPAA1mUgANZlMADWZYAA1mcQANZnoADWZ8AA1mfgANZocADWaKAA1mjQANZo8ADWbYAA1m/AANZyMADWdHAA1nSgANZ0wADWdOAA1nUAANZ1IADWdUAA1nVQANZ1gADWdxAA1nkgANZ5QADWeWAA1nmAANZ5oADWecAA1nngANZ6AADWeiAA1nwwANZ8YADWfJAA1nzAANZ88ADWfSAA1n1QANZ9gADWfbAA1n3QANaFgADWhaAA1oXAANaF4ADWhhAA1oYgANaGMADWhkAA1oZQANaGcADWhpAA1oagANaGsADWhtAA1obgANaOkADWjrAA1o7QANaO8ADWjyAA1o8wANaPQADWj1AA1o9gANaPgADWj6AA1o+wANaPwADWj+AA1o/wANaXoADWl8AA1pfwANaYEADWmEAA1phQANaYYADWmHAA1piAANaYoADWmMAA1pjQANaY4ADWmQAA1pkQANaaoADWmrAA1prAANaa4ADWopAA1qKwANai0ADWovAA1qMgANajMADWo0AA1qNQANajYADWo4AA1qOgANajsADWo8AA1qPgANaj8ADWq6AA1qvAANar4ADWrAAA1qwwANasQADWrFAA1qxgANascADWrJAA1qywANaswADWrNAA1qzwANatAADWtLAA1rTQANa08ADWtRAA1rVAANa1UADWtWAA1rVwANa1gADWtaAA1rXAANa10ADWteAA1rYAANa2EADWvcAA1r3gANa+AADWviAA1r5QANa+YADWvnAA1r6AANa+kADWvrAA1r7QANa+4ADWvvAA1r8QANa/IADWxtAA1sbwANbHEADWxzAA1sdgANbHcADWx4AA1seQANbHoADWx8AA1sfgANbH8ADWyAAA1sggANbIMADWzMAA1s8AANbRcADW07AA1tPgANbUAADW1CAA1tRAANbUYADW1IAA1tSQANbUwADW1lAA1tggANbYQADW2GAA1tiAANbYoADW2MAA1tjgANbZAADW2tAA1tsAANbbMADW22AA1tuQANbbwADW2/AA1twgANbcQADW4/AA1uQQANbkMADW5FAA1uSAANbkkADW5KAA1uSwANbkwADW5OAA1uUAANblEADW5SAA1uVAANblUADW7QAA1u0gANbtUADW7XAA1u2gANbtsADW7cAA1u3QANbt4ADW7gAA1u4gANbuMADW7kAA1u5gANbucADW9iAA1vZAANb2YADW9oAA1vawANb2wADW9tAA1vbgANb28ADW9xAA1vcwANb3QADW91AA1vdwANb3gADW/zAA1v9QANb/gADW/6AA1v/QANb/4ADW//AA1wAAANcAEADXADAA1wBQANcAYADXAHAA1wCQANcAoADXCFAA1whwANcIkADXCLAA1wjgANcI8ADXCQAA1wkQANcJIADXCUAA1wlgANcJcADXCYAA1wmgANcJsADXEWAA1xGAANcRoADXEcAA1xHwANcSAADXEhAA1xIgANcSMADXElAA1xJwANcSgADXEpAA1xKwANcSwADXGnAA1xqQANcawADXGuAA1xsQANcbIADXGzAA1xtAANcbUADXG3AA1xuQANcboADXG7AA1xvQANcb4ADXJRAA1ydAANcpQADXK0AA1ytgANcrgADXK6AA1yvAANcr8ADXLAAA1ywQANcsQADXLFAA1yxwANcsgADXLKAA1yzQANcs4ADXLPAA1y0gANctMADXLcAA1y9QANcv4ADXMAAA1zAgANcwsADXMOAA1zEQANcxMADXNcAA1zgAANc6cADXPLAA1zzgANc9AADXPSAA1z1AANc9YADXPYAA1z2QANc9wADXP1AA10FgANdBgADXQaAA10HAANdB4ADXQgAA10IgANdCQADXQmAA10RwANdEoADXRNAA10UAANdFMADXRWAA10WQANdFwADXRfAA10YQANdNwADXTeAA104AANdOIADXTlAA105gANdOcADXToAA106QANdOsADXTtAA107gANdO8ADXTxAA108gANdW0ADXVvAA11cQANdXMADXV2AA11dwANdXgADXV5AA11egANdXwADXV+AA11fwANdYAADXWCAA11gwANdf4ADXYAAA12AwANdgUADXYIAA12CQANdgoADXYLAA12DAANdg4ADXYQAA12EQANdhIADXYUAA12FQANdi4ADXYvAA12MAANdjIADXatAA12rwANdrEADXazAA12tgANdrcADXa4AA12uQANdroADXa8AA12vgANdr8ADXbAAA12wgANdsMADXc+AA13QAANd0IADXdEAA13RwANd0gADXdJAA13SgANd0sADXdNAA13TwANd1AADXdRAA13UwANd1QADXfPAA130QANd9MADXfVAA132AANd9kADXfaAA132wANd9wADXfeAA134AANd+EADXfiAA135AANd+UADXhgAA14YgANeGQADXhmAA14aQANeGoADXhrAA14bAANeG0ADXhvAA14cQANeHIADXhzAA14dQANeHYADXjxAA148wANePUADXj3AA14+gANePsADXj8AA14/QANeP4ADXkAAA15AgANeQMADXkEAA15BgANeQcADXlQAA15dAANeZsADXm/AA15wgANecQADXnGAA15yAANecoADXnMAA15zQANedAADXnpAA16BgANeggADXoKAA16DAANeg4ADXoQAA16EgANehQADXoxAA16NAANejcADXo6AA16PQANekAADXpDAA16RgANekgADXrDAA16xQANescADXrJAA16zAANes0ADXrOAA16zwANetAADXrSAA161AANetUADXrWAA162AANetkADXtUAA17VgANe1gADXtaAA17XQANe14ADXtfAA17YAANe2EADXtjAA17ZQANe2YADXtnAA17aQANe2oADXvlAA175wANe+oADXvsAA177wANe/AADXvxAA178gANe/MADXv1AA179wANe/gADXv5AA17+wANe/wADXx3AA18eQANfHwADXx+AA18gQANfIIADXyDAA18hAANfIUADXyHAA18iQANfIoADXyLAA18jQANfI4ADX0JAA19CwANfQ0ADX0PAA19EgANfRMADX0UAA19FQANfRYADX0YAA19GgANfRsADX0cAA19HgANfR8ADX2aAA19nAANfZ4ADX2gAA19owANfaQADX2lAA19pgANfacADX2pAA19qwANfawADX2tAA19rwANfbAADX4rAA1+LQANfi8ADX4xAA1+NAANfjUADX42AA1+NwANfjgADX46AA1+PAANfj0ADX4+AA1+QAANfkEADX7UAA1+9wANfxcADX83AA1/OQANfzsADX89AA1/PwANf0IADX9DAA1/RAANf0cADX9IAA1/SgANf0sADX9OAA1/UQANf1IADX9TAA1/VgANf1cADX9gAA1/eQANf4IADX+EAA1/hgANf48ADX+SAA1/lQANf5cADX/gAA2ABAANgCsADYBPAA2AUgANgFQADYBWAA2AWAANgFoADYBcAA2AXQANgGAADYB5AA2AmgANgJwADYCeAA2AoAANgKIADYCkAA2ApgANgKgADYCqAA2AywANgM4ADYDRAA2A1AANgNcADYDaAA2A3QANgOAADYDjAA2A5QANgWAADYFiAA2BZAANgWYADYFpAA2BagANgWsADYFsAA2BbQANgW8ADYFxAA2BcgANgXMADYF1AA2BdgANgfEADYHzAA2B9QANgfcADYH6AA2B+wANgfwADYH9AA2B/gANggAADYICAA2CAwANggQADYIGAA2CBwANgoIADYKEAA2ChwANgokADYKMAA2CjQANgo4ADYKPAA2CkAANgpIADYKUAA2ClQANgpYADYKYAA2CmQANgrIADYKzAA2CtAANgrYADYMxAA2DMwANgzUADYM3AA2DOgANgzsADYM8AA2DPQANgz4ADYNAAA2DQgANg0MADYNEAA2DRgANg0cADYPCAA2DxAANg8YADYPIAA2DywANg8wADYPNAA2DzgANg88ADYPRAA2D0wANg9QADYPVAA2D1wANg9gADYRTAA2EVQANhFcADYRZAA2EXAANhF0ADYReAA2EXwANhGAADYRiAA2EZAANhGUADYRmAA2EaAANhGkADYTkAA2E5gANhOgADYTqAA2E7QANhO4ADYTvAA2E8AANhPEADYTzAA2E9QANhPYADYT3AA2E+QANhPoADYV1AA2FdwANhXkADYV7AA2FfgANhX8ADYWAAA2FgQANhYIADYWEAA2FhgANhYcADYWIAA2FigANhYsADYXUAA2F+AANhh8ADYZDAA2GRgANhkgADYZKAA2GTAANhk4ADYZQAA2GUQANhlQADYZtAA2GigANhowADYaOAA2GkAANhpIADYaUAA2GlgANhpgADYa1AA2GuAANhrsADYa+AA2GwQANhsQADYbHAA2GygANhswADYdHAA2HSQANh0sADYdNAA2HUAANh1EADYdSAA2HUwANh1QADYdWAA2HWAANh1kADYdaAA2HXAANh10ADYfYAA2H2gANh9wADYfeAA2H4QANh+IADYfjAA2H5AANh+UADYfnAA2H6QANh+oADYfrAA2H7QANh+4ADYhpAA2IawANiG0ADYhvAA2IcgANiHMADYh0AA2IdQANiHYADYh4AA2IegANiHsADYh8AA2IfgANiH8ADYj6AA2I/AANiP8ADYkBAA2JBAANiQUADYkGAA2JBwANiQgADYkKAA2JDAANiQ0ADYkOAA2JEAANiREADYmMAA2JjgANiZAADYmSAA2JlQANiZYADYmXAA2JmAANiZkADYmbAA2JnQANiZ4ADYmfAA2JoQANiaIADYodAA2KHwANiiEADYojAA2KJgANiicADYooAA2KKQANiioADYosAA2KLgANii8ADYowAA2KMgANijMADYquAA2KsAANirMADYq1AA2KuAANirkADYq6AA2KuwANirwADYq+AA2KwAANisEADYrCAA2KxAANisUADYtYAA2LewANi5sADYu7AA2LvQANi78ADYvBAA2LwwANi8YADYvHAA2LyAANi8sADYvMAA2LzgANi88ADYvSAA2L1QANi9YADYvXAA2L2gANi9sADYvgAA2L+QANjAIADYwEAA2MBgANjA8ADYwSAA2MFQANjBcADYxgAA2MhAANjKsADYzPAA2M0gANjNQADYzWAA2M2AANjNoADYzcAA2M3QANjOAADYz5AA2NGgANjRwADY0eAA2NIAANjSIADY0kAA2NJgANjSgADY0qAA2NSwANjU4ADY1RAA2NVAANjVcADY1aAA2NXQANjWAADY1jAA2NZQANjeAADY3iAA2N5AANjeYADY3pAA2N6gANjesADY3sAA2N7QANje8ADY3xAA2N8gANjfMADY31AA2N9gANjnEADY5zAA2OdQANjncADY56AA2OewANjnwADY59AA2OfgANjoAADY6CAA2OgwANjoQADY6GAA2OhwANjwIADY8EAA2PBwANjwkADY8MAA2PDQANjw4ADY8PAA2PEAANjxIADY8UAA2PFQANjxYADY8YAA2PGQANjzIADY8zAA2PNAANjzYADY+xAA2PswANj7UADY+3AA2PugANj7sADY+8AA2PvQANj74ADY/AAA2PwgANj8MADY/EAA2PxgANj8cADZBCAA2QRAANkEYADZBIAA2QSwANkEwADZBNAA2QTgANkE8ADZBRAA2QUwANkFQADZBVAA2QVwANkFgADZDTAA2Q1QANkNcADZDZAA2Q3AANkN0ADZDeAA2Q3wANkOAADZDiAA2Q5AANkOUADZDmAA2Q6AANkOkADZFkAA2RZgANkWgADZFqAA2RbQANkW4ADZFvAA2RcAANkXEADZFzAA2RdQANkXYADZF3AA2ReQANkXoADZH1AA2R9wANkfkADZH7AA2R/gANkf8ADZIAAA2SAQANkgIADZIEAA2SBgANkgcADZIIAA2SCgANkgsADZJUAA2SeAANkp8ADZLDAA2SxgANksgADZLKAA2SzAANks4ADZLQAA2S0QANktQADZLtAA2TCgANkwwADZMOAA2TEAANkxIADZMUAA2TFgANkxgADZM1AA2TOAANkzsADZM+AA2TQQANk0QADZNHAA2TSgANk0wADZPHAA2TyQANk8sADZPNAA2T0AANk9EADZPSAA2T0wANk9QADZPWAA2T2AANk9kADZPaAA2T3AANk90ADZRYAA2UWgANlFwADZReAA2UYQANlGIADZRjAA2UZAANlGUADZRnAA2UaQANlGoADZRrAA2UbQANlG4ADZTpAA2U6wANlO0ADZTvAA2U8gANlPMADZT0AA2U9QANlPYADZT4AA2U+gANlPsADZT8AA2U/gANlP8ADZV6AA2VfAANlX8ADZWBAA2VhAANlYUADZWGAA2VhwANlYgADZWKAA2VjAANlY0ADZWOAA2VkAANlZEADZYMAA2WDgANlhAADZYSAA2WFQANlhYADZYXAA2WGAANlhkADZYbAA2WHQANlh4ADZYfAA2WIQANliIADZadAA2WnwANlqEADZajAA2WpgANlqcADZaoAA2WqQANlqoADZasAA2WrgANlq8ADZawAA2WsgANlrMADZcuAA2XMAANlzMADZc1AA2XOAANlzkADZc6AA2XOwANlzwADZc+AA2XQAANl0EADZdCAA2XRAANl0UADZfYAA2X+wANmBsADZg7AA2YPQANmD8ADZhBAA2YQwANmEYADZhHAA2YSAANmEsADZhMAA2YTgANmE8ADZhRAA2YVAANmFUADZhWAA2YWQANmFoADZhfAA2YeAANmIEADZiDAA2YhQANmI4ADZiRAA2YlAANmJYADZjfAA2ZAwANmSoADZlOAA2ZUQANmVMADZlVAA2ZVwANmVkADZlbAA2ZXAANmV8ADZl4AA2ZmQANmZsADZmdAA2ZnwANmaEADZmjAA2ZpQANmacADZmpAA2ZygANmc0ADZnQAA2Z0wANmdYADZnZAA2Z3AANmd8ADZniAA2Z5AANml8ADZphAA2aYwANmmUADZpoAA2aaQANmmoADZprAA2abAANmm4ADZpwAA2acQANmnIADZp0AA2adQANmvAADZryAA2a9AANmvYADZr5AA2a+gANmvsADZr8AA2a/QANmv8ADZsBAA2bAgANmwMADZsFAA2bBgANm4EADZuDAA2bhgANm4gADZuLAA2bjAANm40ADZuOAA2bjwANm5EADZuTAA2blAANm5UADZuXAA2bmAANm7EADZuyAA2bswANm7UADZwwAA2cMgANnDQADZw2AA2cOQANnDoADZw7AA2cPAANnD0ADZw/AA2cQQANnEIADZxDAA2cRQANnEYADZzBAA2cwwANnMUADZzHAA2cygANnMsADZzMAA2czQANnM4ADZzQAA2c0gANnNMADZzUAA2c1gANnNcADZ1SAA2dVAANnVYADZ1YAA2dWwANnVwADZ1dAA2dXgANnV8ADZ1hAA2dYwANnWQADZ1lAA2dZwANnWgADZ3jAA2d5QANnecADZ3pAA2d7AANne0ADZ3uAA2d7wANnfAADZ3yAA2d9AANnfUADZ32AA2d+AANnfkADZ50AA2edgANnngADZ56AA2efQANnn4ADZ5/AA2egAANnoEADZ6DAA2ehQANnoYADZ6HAA2eiQANnooADZ7TAA2e9wANnx4ADZ9CAA2fRQANn0cADZ9JAA2fSwANn00ADZ9PAA2fUAANn1MADZ9sAA2fiQANn4sADZ+NAA2fjwANn5EADZ+TAA2flQANn5cADZ+0AA2ftwANn7oADZ+9AA2fwAANn8MADZ/GAA2fyQANn8sADaBGAA2gSAANoEoADaBMAA2gTwANoFAADaBRAA2gUgANoFMADaBVAA2gVwANoFgADaBZAA2gWwANoFwADaDXAA2g2QANoNsADaDdAA2g4AANoOEADaDiAA2g4wANoOQADaDmAA2g6AANoOkADaDqAA2g7AANoO0ADaFoAA2hagANoWwADaFuAA2hcQANoXIADaFzAA2hdAANoXUADaF3AA2heQANoXoADaF7AA2hfQANoX4ADaH5AA2h+wANof4ADaIAAA2iAwANogQADaIFAA2iBgANogcADaIJAA2iCwANogwADaINAA2iDwANohAADaKLAA2ijQANoo8ADaKRAA2ilAANopUADaKWAA2ilwANopgADaKaAA2inAANop0ADaKeAA2ioAANoqEADaMcAA2jHgANoyAADaMiAA2jJQANoyYADaMnAA2jKAANoykADaMrAA2jLQANoy4ADaMvAA2jMQANozIADaOtAA2jrwANo7EADaOzAA2jtgANo7cADaO4AA2juQANo7oADaO8AA2jvgANo78ADaPAAA2jwgANo8MADaRWAA2keQANpJkADaS5AA2kuwANpL0ADaS/AA2kwQANpMQADaTFAA2kxgANpMkADaTKAA2kzAANpM0ADaTPAA2k0gANpNMADaTUAA2k1wANpNgADaTdAA2k9gANpP8ADaUBAA2lAwANpQwADaUPAA2lEgANpRQADaVdAA2lgQANpagADaXMAA2lzwANpdEADaXTAA2l1QANpdcADaXZAA2l2gANpd0ADaX2AA2mFwANphkADaYbAA2mHQANph8ADaYhAA2mIwANpiUADaYnAA2mSAANpksADaZOAA2mUQANplQADaZXAA2mWgANpl0ADaZgAA2mYgANpt0ADabfAA2m4QANpuMADabmAA2m5wANpugADabpAA2m6gANpuwADabuAA2m7wANpvAADabyAA2m8wANp24ADadwAA2ncgANp3QADad3AA2neAANp3kADad6AA2newANp30ADad/AA2ngAANp4EADaeDAA2nhAANp/8ADagBAA2oBAANqAYADagJAA2oCgANqAsADagMAA2oDQANqA8ADagRAA2oEgANqBMADagVAA2oFgANqC8ADagwAA2oMQANqDMADaiuAA2osAANqLIADai0AA2otwANqLgADai5AA2ougANqLsADai9AA2ovwANqMAADajBAA2owwANqMQADak/AA2pQQANqUMADalFAA2pSAANqUkADalKAA2pSwANqUwADalOAA2pUAANqVEADalSAA2pVAANqVUADanQAA2p0gANqdQADanWAA2p2QANqdoADanbAA2p3AANqd0ADanfAA2p4QANqeIADanjAA2p5QANqeYADaphAA2qYwANqmUADapnAA2qagANqmsADapsAA2qbQANqm4ADapwAA2qcgANqnMADap0AA2qdgANqncADaryAA2q9AANqvYADar4AA2q+wANqvwADar9AA2q/gANqv8ADasBAA2rAwANqwQADasFAA2rBwANqwgADatRAA2rdQANq5wADavAAA2rwwANq8UADavHAA2ryQANq8sADavNAA2rzgANq9EADavqAA2sBwANrAkADawLAA2sDQANrA8ADawRAA2sEwANrBUADawyAA2sNQANrDgADaw7AA2sPgANrEEADaxEAA2sRwANrEkADazEAA2sxgANrMgADazKAA2szQANrM4ADazPAA2s0AANrNEADazTAA2s1QANrNYADazXAA2s2QANrNoADa1VAA2tVwANrVkADa1bAA2tXgANrV8ADa1gAA2tYQANrWIADa1kAA2tZgANrWcADa1oAA2tagANrWsADa3mAA2t6AANreoADa3sAA2t7wANrfAADa3xAA2t8gANrfMADa31AA2t9wANrfgADa35AA2t+wANrfwADa53AA2ueQANrnsADa59AA2ugAANroEADa6CAA2ugwANroQADa6GAA2uiAANrokADa6KAA2ujAANro0ADa8IAA2vCgANrwwADa8OAA2vEQANrxIADa8TAA2vFAANrxUADa8XAA2vGQANrxoADa8bAA2vHQANrx4ADa+ZAA2vmwANr50ADa+fAA2vogANr6MADa+kAA2vpQANr6YADa+oAA2vqgANr6sADa+sAA2vrgANr68ADbAqAA2wLAANsC4ADbAwAA2wMwANsDQADbA1AA2wNgANsDcADbA5AA2wOwANsDwADbA9AA2wPwANsEAADbDTAA2w9gANsRYADbE2AA2xOAANsToADbE8AA2xPgANsUEADbFCAA2xQwANsUYADbFHAA2xSQANsUoADbFMAA2xTwANsVAADbFRAA2xVAANsVUADbFaAA2xcwANsXwADbF+AA2xgAANsYkADbGMAA2xjwANsZEADbHaAA2x/gANsiUADbJJAA2yTAANsk4ADbJQAA2yUgANslQADbJWAA2yVwANsloADbJzAA2ylAANspYADbKYAA2ymgANspwADbKeAA2yoAANsqIADbKkAA2yxQANssgADbLLAA2yzgANstEADbLUAA2y1wANstoADbLdAA2y3wANs1oADbNcAA2zXgANs2AADbNjAA2zZAANs2UADbNmAA2zZwANs2kADbNrAA2zbAANs20ADbNvAA2zcAANs+sADbPtAA2z7wANs/EADbP0AA2z9QANs/YADbP3AA2z+AANs/oADbP8AA2z/QANs/4ADbQAAA20AQANtHwADbR+AA20gQANtIMADbSGAA20hwANtIgADbSJAA20igANtIwADbSOAA20jwANtJAADbSSAA20kwANtKwADbStAA20rgANtLAADbUrAA21LQANtS8ADbUxAA21NAANtTUADbU2AA21NwANtTgADbU6AA21PAANtT0ADbU+AA21QAANtUEADbW8AA21vgANtcAADbXCAA21xQANtcYADbXHAA21yAANtckADbXLAA21zQANtc4ADbXPAA210QANtdIADbZNAA22TwANtlEADbZTAA22VgANtlcADbZYAA22WQANtloADbZcAA22XgANtl8ADbZgAA22YgANtmMADbbeAA224AANtuIADbbkAA225wANtugADbbpAA226gANtusADbbtAA227wANtvAADbbxAA228wANtvQADbdvAA23cQANt3MADbd1AA23eAANt3kADbd6AA23ewANt3wADbd+AA23gAANt4EADbeCAA23hAANt4UADbfOAA238gANuBkADbg9AA24QAANuEIADbhEAA24RgANuEgADbhKAA24SwANuE4ADbhnAA24hAANuIYADbiIAA24igANuIwADbiOAA24kAANuJIADbivAA24sgANuLUADbi4AA24uwANuL4ADbjBAA24xAANuMYADblBAA25QwANuUUADblHAA25SgANuUsADblMAA25TQANuU4ADblQAA25UgANuVMADblUAA25VgANuVcADbnSAA251AANudYADbnYAA252wANudwADbndAA253gANud8ADbnhAA254wANueQADbnlAA255wANuegADbpjAA26ZQANumcADbppAA26bAANum0ADbpuAA26bwANunAADbpyAA26dAANunUADbp2AA26eAANunkADbr0AA269gANuvgADbr6AA26/QANuv4ADbr/AA27AAANuwEADbsDAA27BQANuwYADbsHAA27CQANuwoADbuFAA27hwANu4kADbuLAA27jgANu48ADbuQAA27kQANu5IADbuUAA27lgANu5cADbuYAA27mgANu5sADbwWAA28GAANvBoADbwcAA28HwANvCAADbwhAA28IgANvCMADbwlAA28JwANvCgADbwpAA28KwANvCwADbynAA28qQANvKsADbytAA28sAANvLEADbyyAA28swANvLQADby2AA28uAANvLkADby6AA28vAANvL0ADb1QAA29cwANvZMADb2zAA29tQANvbcADb25AA29uwANvb4ADb2/AA29wAANvcMADb3EAA29xgANvccADb3JAA29zAANvc0ADb3OAA290QANvdIADb3XAA298AANvfkADb37AA29/QANvgYADb4JAA2+DAANvg4ADb5XAA2+ewANvqIADb7GAA2+yQANvssADb7NAA2+zwANvtEADb7TAA2+1AANvtcADb7wAA2/EQANvxMADb8VAA2/FwANvxkADb8bAA2/HQANvx8ADb8hAA2/QgANv0UADb9IAA2/SwANv04ADb9RAA2/VAANv1cADb9aAA2/XAANv9cADb/ZAA2/2wANv90ADb/gAA2/4QANv+IADb/jAA2/5AANv+YADb/oAA2/6QANv+oADb/sAA2/7QANwGgADcBqAA3AbAANwG4ADcBxAA3AcgANwHMADcB0AA3AdQANwHcADcB5AA3AegANwHsADcB9AA3AfgANwPkADcD7AA3A/gANwQAADcEDAA3BBAANwQUADcEGAA3BBwANwQkADcELAA3BDAANwQ0ADcEPAA3BEAANwSkADcEqAA3BKwANwS0ADcGoAA3BqgANwawADcGuAA3BsQANwbIADcGzAA3BtAANwbUADcG3AA3BuQANwboADcG7AA3BvQANwb4ADcI5AA3COwANwj0ADcI/AA3CQgANwkMADcJEAA3CRQANwkYADcJIAA3CSgANwksADcJMAA3CTgANwk8ADcLKAA3CzAANws4ADcLQAA3C0wANwtQADcLVAA3C1gANwtcADcLZAA3C2wANwtwADcLdAA3C3wANwuAADcNbAA3DXQANw18ADcNhAA3DZAANw2UADcNmAA3DZwANw2gADcNqAA3DbAANw20ADcNuAA3DcAANw3EADcPsAA3D7gANw/AADcPyAA3D9QANw/YADcP3AA3D+AANw/kADcP7AA3D/QANw/4ADcP/AA3EAQANxAIADcRLAA3EbwANxJYADcS6AA3EvQANxL8ADcTBAA3EwwANxMUADcTHAA3EyAANxMsADcTkAA3FAQANxQMADcUFAA3FBwANxQkADcULAA3FDQANxQ8ADcUsAA3FLwANxTIADcU1AA3FOAANxTsADcU+AA3FQQANxUMADcW+AA3FwAANxcIADcXEAA3FxwANxcgADcXJAA3FygANxcsADcXNAA3FzwANxdAADcXRAA3F0wANxdQADcZPAA3GUQANxlMADcZVAA3GWAANxlkADcZaAA3GWwANxlwADcZeAA3GYAANxmEADcZiAA3GZAANxmUADcbgAA3G4gANxuQADcbmAA3G6QANxuoADcbrAA3G7AANxu0ADcbvAA3G8QANxvIADcbzAA3G9QANxvYADcdxAA3HcwANx3YADcd4AA3HewANx3wADcd9AA3HfgANx38ADceBAA3HgwANx4QADceFAA3HhwANx4gADcgDAA3IBQANyAcADcgJAA3IDAANyA0ADcgOAA3IDwANyBAADcgSAA3IFAANyBUADcgWAA3IGAANyBkADciUAA3IlgANyJgADciaAA3InQANyJ4ADcifAA3IoAANyKEADcijAA3IpQANyKYADcinAA3IqQANyKoADcklAA3JJwANySkADckrAA3JLgANyS8ADckwAA3JMQANyTIADck0AA3JNgANyTcADck4AA3JOgANyTsADcnOAA3J8QANyhEADcoxAA3KMwANyjUADco3AA3KOQANyjwADco9AA3KPgANykEADcpCAA3KRAANykUADcpIAA3KSwANykwADcpNAA3KUAANylEADcpWAA3KbwANyngADcp6AA3KfAANyoUADcqIAA3KiwANyo0ADcrWAA3K+gANyyEADctFAA3LSAANy0oADctMAA3LTgANy1AADctSAA3LUwANy1YADctvAA3LkAANy5IADcuUAA3LlgANy5gADcuaAA3LnAANy54ADcugAA3LwQANy8QADcvHAA3LygANy80ADcvQAA3L0wANy9YADcvZAA3L2wANzFYADcxYAA3MWgANzFwADcxfAA3MYAANzGEADcxiAA3MYwANzGUADcxnAA3MaAANzGkADcxrAA3MbAANzOcADczpAA3M6wANzO0ADczwAA3M8QANzPIADczzAA3M9AANzPYADcz4AA3M+QANzPoADcz8AA3M/QANzXgADc16AA3NfQANzX8ADc2CAA3NgwANzYQADc2FAA3NhgANzYgADc2KAA3NiwANzYwADc2OAA3NjwANzagADc2pAA3NqgANzawADc4nAA3OKQANzisADc4tAA3OMAANzjEADc4yAA3OMwANzjQADc42AA3OOAANzjkADc46AA3OPAANzj0ADc64AA3OugANzrwADc6+AA3OwQANzsIADc7DAA3OxAANzsUADc7HAA3OyQANzsoADc7LAA3OzQANzs4ADc9JAA3PSwANz00ADc9PAA3PUgANz1MADc9UAA3PVQANz1YADc9YAA3PWgANz1sADc9cAA3PXgANz18ADc/aAA3P3AANz94ADc/gAA3P4wANz+QADc/lAA3P5gANz+cADc/pAA3P6wANz+wADc/tAA3P7wANz/AADdBrAA3QbQAN0G8ADdBxAA3QdAAN0HUADdB2AA3QdwAN0HgADdB6AA3QfAAN0H0ADdB+AA3QgAAN0IEADdDKAA3Q7gAN0RUADdE5AA3RPAAN0T4ADdFAAA3RQgAN0UQADdFGAA3RRwAN0UoADdFjAA3RgAAN0YIADdGEAA3RhgAN0YgADdGKAA3RjAAN0Y4ADdGrAA3RrgAN0bEADdG0AA3RtwAN0boADdG9AA3RwAAN0cIADdI9AA3SPwAN0kEADdJDAA3SRgAN0kcADdJIAA3SSQAN0koADdJMAA3STgAN0k8ADdJQAA3SUgAN0lMADdLOAA3S0AAN0tIADdLUAA3S1wAN0tgADdLZAA3S2gAN0tsADdLdAA3S3wAN0uAADdLhAA3S4wAN0uQADdNfAA3TYQAN02MADdNlAA3TaAAN02kADdNqAA3TawAN02wADdNuAA3TcAAN03EADdNyAA3TdAAN03UADdPwAA3T8gAN0/UADdP3AA3T+gAN0/sADdP8AA3T/QAN0/4ADdQAAA3UAgAN1AMADdQEAA3UBgAN1AcADdSKAA3UrgAN1NIADdT1AA3VHAAN1TwADdVjAA3VigAN1aoADdXOAA3V8gAN1fQADdX3AA3V+QAN1fsADdX9AA3WAAAN1gMADdYFAA3WBwAN1goADdYMAA3WDgAN1hEADdYUAA3WFQAN1hoADdYzAA3WOAAN1joADdY/AA3WQgAN1kQADdaNAA3WsQAN1tgADdb8AA3W/wAN1wEADdcDAA3XBQAN1wcADdcJAA3XCgAN1w0ADdcmAA3XSwAN100ADddPAA3XUQAN11MADddVAA3XVwAN11kADddbAA3XXQAN14IADdeFAA3XiAAN14sADdeOAA3XkQAN15QADdeXAA3XmgAN150ADdefAA3YGgAN2BwADdgfAA3YIQAN2CQADdglAA3YJgAN2CcADdgoAA3YKgAN2CwADdgtAA3YLgAN2DAADdgxAA3YQgAN2EMADdhFAA3YwAAN2MIADdjEAA3YxgAN2MkADdjKAA3YywAN2MwADdjNAA3YzwAN2NEADdjSAA3Y0wAN2NUADdjWAA3ZUQAN2VMADdlWAA3ZWAAN2VsADdlcAA3ZXQAN2V4ADdlfAA3ZYQAN2WMADdlkAA3ZZQAN2WcADdloAA3ZeQAN2XoADdl8AA3Z9wAN2fkADdn7AA3Z/QAN2gAADdoBAA3aAgAN2gMADdoEAA3aBgAN2ggADdoJAA3aCgAN2gwADdoNAA3aiAAN2ooADdqNAA3ajwAN2pIADdqTAA3alAAN2pUADdqWAA3amAAN2poADdqbAA3anAAN2p4ADdqfAA3asAAN2rEADdqzAA3bLgAN2zAADdsyAA3bNAAN2zcADds4AA3bOQAN2zoADds7AA3bPQAN2z8ADdtAAA3bQQAN20MADdtEAA3bvwAN28EADdvEAA3bxgAN28kADdvKAA3bywAN28wADdvNAA3bzwAN29EADdvSAA3b0wAN29UADdvWAA3b7wAN2/AADdvxAA3b8wAN3G4ADdxwAA3ccgAN3HQADdx3AA3ceAAN3HkADdx6AA3cewAN3H0ADdx/AA3cgAAN3IEADdyDAA3chAAN3P8ADd0BAA3dBAAN3QYADd0JAA3dCgAN3QsADd0MAA3dDQAN3Q8ADd0RAA3dEgAN3RMADd0VAA3dFgAN3TEADd1KAA3dVwAN3VoADd1dAA3dYAAN3W0ADd1wAA3dcwAN3XYADd14AA3dhAAN3Z8ADd2xAA3eRAAN3mcADd6HAA3epwAN3qkADd6rAA3erQAN3q8ADd6yAA3eswAN3rQADd63AA3euAAN3roADd67AA3evQAN3sAADd7BAA3ewgAN3sUADd7GAA3eywAN3uQADd7tAA3e7wAN3vEADd76AA3e/QAN3wAADd8CAA3fSwAN328ADd+WAA3fugAN370ADd+/AA3fwQAN38MADd/FAA3fxwAN38gADd/LAA3f5AAN4AUADeAHAA3gCQAN4AsADeANAA3gDwAN4BEADeATAA3gFQAN4DYADeA5AA3gPAAN4D8ADeBCAA3gRQAN4EgADeBLAA3gTgAN4FAADeDLAA3gzQAN4M8ADeDRAA3g1AAN4NUADeDWAA3g1wAN4NgADeDaAA3g3AAN4N0ADeDeAA3g4AAN4OEADeFcAA3hXgAN4WAADeFiAA3hZQAN4WYADeFnAA3haAAN4WkADeFrAA3hbQAN4W4ADeFvAA3hcQAN4XIADeHtAA3h7wAN4fIADeH0AA3h9wAN4fgADeH5AA3h+gAN4fsADeH9AA3h/wAN4gAADeIBAA3iAwAN4gQADeIdAA3iHgAN4h8ADeIhAA3inAAN4p4ADeKgAA3iogAN4qUADeKmAA3ipwAN4qgADeKpAA3iqwAN4q0ADeKuAA3irwAN4rEADeKyAA3jLQAN4y8ADeMxAA3jMwAN4zYADeM3AA3jOAAN4zkADeM6AA3jPAAN4z4ADeM/AA3jQAAN40IADeNDAA3jvgAN48AADePCAA3jxAAN48cADePIAA3jyQAN48oADePLAA3jzQAN488ADePQAA3j0QAN49MADePUAA3kTwAN5FEADeRTAA3kVQAN5FgADeRZAA3kWgAN5FsADeRcAA3kXgAN5GAADeRhAA3kYgAN5GQADeRlAA3k4AAN5OIADeTkAA3k5gAN5OkADeTqAA3k6wAN5OwADeTtAA3k7wAN5PEADeTyAA3k8wAN5PUADeT2AA3lPwAN5WMADeWKAA3lrgAN5bEADeWzAA3ltQAN5bcADeW5AA3luwAN5bwADeW/AA3l2AAN5fUADeX3AA3l+QAN5fsADeX9AA3l/wAN5gEADeYDAA3mIAAN5iMADeYmAA3mKQAN5iwADeYvAA3mMgAN5jUADeY3AA3msgAN5rQADea2AA3muAAN5rsADea8AA3mvQAN5r4ADea/AA3mwQAN5sMADebEAA3mxQAN5scADebIAA3nQwAN50UADedHAA3nSQAN50wADedNAA3nTgAN508ADedQAA3nUgAN51QADedVAA3nVgAN51gADedZAA3n1AAN59YADefYAA3n2gAN590ADefeAA3n3wAN5+AADefhAA3n4wAN5+UADefmAA3n5wAN5+kADefqAA3oZQAN6GcADehpAA3oawAN6G4ADehvAA3ocAAN6HEADehyAA3odAAN6HYADeh3AA3oeAAN6HoADeh7AA3o9gAN6PgADej6AA3o/AAN6P8ADekAAA3pAQAN6QIADekDAA3pBQAN6QcADekIAA3pCQAN6QsADekMAA3phwAN6YkADemLAA3pjQAN6ZAADemRAA3pkgAN6ZMADemUAA3plgAN6ZgADemZAA3pmgAN6ZwADemdAA3qGAAN6hoADeocAA3qHgAN6iEADeoiAA3qIwAN6iQADeolAA3qJwAN6ikADeoqAA3qKwAN6i0ADeouAA3qwQAN6uQADesEAA3rJAAN6yYADesoAA3rKgAN6ywADesvAA3rMAAN6zEADes0AA3rNQAN6zcADes4AA3rOgAN6z0ADes+AA3rPwAN60IADetDAA3rSAAN62EADetqAA3rbAAN624ADet3AA3regAN630ADet/AA3ryAAN6+wADewTAA3sNwAN7DoADew8AA3sPgAN7EAADexCAA3sRAAN7EUADexIAA3sYQAN7IIADeyEAA3shgAN7IgADeyKAA3sjAAN7I4ADeyQAA3skgAN7LMADey2AA3suQAN7LwADey/AA3swgAN7MUADezIAA3sywAN7M0ADe1IAA3tSgAN7UwADe1OAA3tUQAN7VIADe1TAA3tVAAN7VUADe1XAA3tWQAN7VoADe1bAA3tXQAN7V4ADe3ZAA3t2wAN7d0ADe3fAA3t4gAN7eMADe3kAA3t5QAN7eYADe3oAA3t6gAN7esADe3sAA3t7gAN7e8ADe5qAA3ubAAN7m8ADe5xAA3udAAN7nUADe52AA3udwAN7ngADe56AA3ufAAN7n0ADe5+AA3ugAAN7oEADe6aAA3umwAN7pwADe6eAA3vGQAN7xsADe8dAA3vHwAN7yIADe8jAA3vJAAN7yUADe8mAA3vKAAN7yoADe8rAA3vLAAN7y4ADe8vAA3vqgAN76wADe+uAA3vsAAN77MADe+0AA3vtQAN77YADe+3AA3vuQAN77sADe+8AA3vvQAN778ADe/AAA3wOwAN8D0ADfA/AA3wQQAN8EQADfBFAA3wRgAN8EcADfBIAA3wSgAN8EwADfBNAA3wTgAN8FAADfBRAA3wzAAN8M4ADfDQAA3w0gAN8NUADfDWAA3w1wAN8NgADfDZAA3w2wAN8N0ADfDeAA3w3wAN8OEADfDiAA3xXQAN8V8ADfFhAA3xYwAN8WYADfFnAA3xaAAN8WkADfFqAA3xbAAN8W4ADfFvAA3xcAAN8XIADfFzAA3xvAAN8eAADfIHAA3yKwAN8i4ADfIwAA3yMgAN8jQADfI2AA3yOAAN8jkADfI8AA3yVQAN8nIADfJ0AA3ydgAN8ngADfJ6AA3yfAAN8n4ADfKAAA3ynQAN8qAADfKjAA3ypgAN8qkADfKsAA3yrwAN8rIADfK0AA3zLwAN8zEADfMzAA3zNQAN8zgADfM5AA3zOgAN8zsADfM8AA3zPgAN80AADfNBAA3zQgAN80QADfNFAA3zwAAN88IADfPEAA3zxgAN88kADfPKAA3zywAN88wADfPNAA3zzwAN89EADfPSAA3z0wAN89UADfPWAA30UQAN9FMADfRVAA30VwAN9FoADfRbAA30XAAN9F0ADfReAA30YAAN9GIADfRjAA30ZAAN9GYADfRnAA304gAN9OQADfTmAA306AAN9OsADfTsAA307QAN9O4ADfTvAA308QAN9PMADfT0AA309QAN9PcADfT4AA31cwAN9XUADfV3AA31eQAN9XwADfV9AA31fgAN9X8ADfWAAA31ggAN9YQADfWFAA31hgAN9YgADfWJAA32BAAN9gYADfYIAA32CgAN9g0ADfYOAA32DwAN9hAADfYRAA32EwAN9hUADfYWAA32FwAN9hkADfYaAA32lQAN9pcADfaZAA32mwAN9p4ADfafAA32oAAN9qEADfaiAA32pAAN9qYADfanAA32qAAN9qoADfarAA33PgAN92EADfeBAA33oQAN96MADfelAA33pwAN96kADfesAA33rQAN964ADfexAA33sgAN97QADfe1AA33uAAN97sADfe8AA33vQAN98AADffBAA33xgAN998ADffoAA336gAN9+wADff1AA33+AAN9/sADff9AA34RgAN+GoADfiRAA34tQAN+LgADfi6AA34vAAN+L4ADfjAAA34wgAN+MMADfjGAA343wAN+QAADfkCAA35BAAN+QYADfkIAA35CgAN+QwADfkOAA35EAAN+TEADfk0AA35NwAN+ToADfk9AA35QAAN+UMADflGAA35SQAN+UsADfnGAA35yAAN+coADfnMAA35zwAN+dAADfnRAA350gAN+dMADfnVAA351wAN+dgADfnZAA352wAN+dwADfpXAA36WQAN+lsADfpdAA36YAAN+mEADfpiAA36YwAN+mQADfpmAA36aAAN+mkADfpqAA36bAAN+m0ADfroAA366gAN+u0ADfrvAA368gAN+vMADfr0AA369QAN+vYADfr4AA36+gAN+vsADfr8AA36/gAN+v8ADfsYAA37GQAN+xoADfscAA37lwAN+5kADfubAA37nQAN+6AADfuhAA37ogAN+6MADfukAA37pgAN+6gADfupAA37qgAN+6wADfutAA38KAAN/CoADfwsAA38LgAN/DEADfwyAA38MwAN/DQADfw1AA38NwAN/DkADfw6AA38OwAN/D0ADfw+AA38uQAN/LsADfy9AA38vwAN/MIADfzDAA38xAAN/MUADfzGAA38yAAN/MoADfzLAA38zAAN/M4ADfzPAA39SgAN/UwADf1OAA39UAAN/VMADf1UAA39VQAN/VYADf1XAA39WQAN/VsADf1cAA39XQAN/V8ADf1gAA392wAN/d0ADf3fAA394QAN/eQADf3lAA395gAN/ecADf3oAA396gAN/ewADf3tAA397gAN/fAADf3xAA3+OgAN/l4ADf6FAA3+qQAN/qwADf6uAA3+sAAN/rIADf60AA3+tgAN/rcADf66AA3+0wAN/vAADf7yAA3+9AAN/vYADf74AA3++gAN/vwADf7+AA3/GwAN/x4ADf8hAA3/JAAN/ycADf8qAA3/LQAN/zAADf8yAA3/rQAN/68ADf+xAA3/swAN/7YADf+3AA3/uAAN/7kADf+6AA3/vAAN/74ADf+/AA3/wAAN/8IADf/DAA4APgAOAEAADgBCAA4ARAAOAEcADgBIAA4ASQAOAEoADgBLAA4ATQAOAE8ADgBQAA4AUQAOAFMADgBUAA4AzwAOANEADgDTAA4A1QAOANgADgDZAA4A2gAOANsADgDcAA4A3gAOAOAADgDhAA4A4gAOAOQADgDlAA4BYAAOAWIADgFlAA4BZwAOAWoADgFrAA4BbAAOAW0ADgFuAA4BcAAOAXIADgFzAA4BdAAOAXYADgF3AA4B8gAOAfQADgH2AA4B+AAOAfsADgH8AA4B/QAOAf4ADgH/AA4CAQAOAgMADgIEAA4CBQAOAgcADgIIAA4CgwAOAoUADgKHAA4CiQAOAowADgKNAA4CjgAOAo8ADgKQAA4CkgAOApQADgKVAA4ClgAOApgADgKZAA4DFAAOAxYADgMZAA4DGwAOAx4ADgMfAA4DIAAOAyEADgMiAA4DJAAOAyYADgMnAA4DKAAOAyoADgMrAA4DPAAOA0EADgNEAA4DRgAOA38ADgOCAA4DhAAOA4cADgOKAA4DjQAOA5AADgOVAA4EEAAOBBIADgQUAA4EFgAOBBkADgQaAA4EGwAOBBwADgQdAA4EHwAOBCEADgQiAA4EIwAOBCUADgQmAA4EoQAOBKMADgSlAA4EpwAOBKoADgSrAA4ErAAOBK0ADgSuAA4EsAAOBLIADgSzAA4EtAAOBLYADgS3AA4FMgAOBTQADgU3AA4FOQAOBTwADgU9AA4FPgAOBT8ADgVAAA4FQgAOBUQADgVFAA4FRgAOBUgADgVJAA4FWgAOBVsADgVdAA4FbgAOBXcADgV6AA4FfQAOBX8ADgW4AA4FuwAOBb0ADgXAAA4FwwAOBcYADgXJAA4GTAAOBnAADgaUAA4GtwAOBt4ADgb+AA4HJQAOB0wADgdsAA4HkAAOB7QADge2AA4HuQAOB7sADge9AA4HvwAOB8IADgfFAA4HxwAOB8kADgfMAA4HzgAOB9AADgfTAA4H1gAOB9cADgfcAA4H9QAOB/oADgf8AA4IAQAOCAQADggGAA4ITwAOCHMADgiaAA4IvgAOCMEADgjDAA4IxQAOCMcADgjJAA4IywAOCMwADgjPAA4I6AAOCQ0ADgkPAA4JEQAOCRMADgkVAA4JFwAOCRkADgkbAA4JHQAOCR8ADglEAA4JRwAOCUoADglNAA4JUAAOCVMADglWAA4JWQAOCVwADglfAA4JYQAOCdwADgneAA4J4QAOCeMADgnmAA4J5wAOCegADgnpAA4J6gAOCewADgnuAA4J7wAOCfAADgnyAA4J8wAOCgQADgoFAA4KBwAOCoIADgqEAA4KhgAOCogADgqLAA4KjAAOCo0ADgqOAA4KjwAOCpEADgqTAA4KlAAOCpUADgqXAA4KmAAOCxMADgsVAA4LGAAOCxoADgsdAA4LHgAOCx8ADgsgAA4LIQAOCyMADgslAA4LJgAOCycADgspAA4LKgAOCzsADgs8AA4LPgAOC7kADgu7AA4LvQAOC78ADgvCAA4LwwAOC8QADgvFAA4LxgAOC8gADgvKAA4LywAOC8wADgvOAA4LzwAODEoADgxMAA4MTwAODFEADgxUAA4MVQAODFYADgxXAA4MWAAODFoADgxcAA4MXQAODF4ADgxgAA4MYQAODHIADgxzAA4MdQAODPAADgzyAA4M9AAODPYADgz5AA4M+gAODPsADgz8AA4M/QAODP8ADg0BAA4NAgAODQMADg0FAA4NBgAODYEADg2DAA4NhgAODYgADg2LAA4NjAAODY0ADg2OAA4NjwAODZEADg2TAA4NlAAODZUADg2XAA4NmAAODbEADg2yAA4NswAODbUADg4wAA4OMgAODjQADg42AA4OOQAODjoADg47AA4OPAAODj0ADg4/AA4OQQAODkIADg5DAA4ORQAODkYADg7BAA4OwwAODsYADg7IAA4OywAODswADg7NAA4OzgAODs8ADg7RAA4O0wAODtQADg7VAA4O1wAODtgADg72AA4PDwAODxwADg8fAA4PIgAODyUADg8yAA4PNQAODzgADg87AA4PPQAOD1MADg9lAA4P+AAOEBsADhA7AA4QWwAOEF0ADhBfAA4QYQAOEGMADhBmAA4QZwAOEGgADhBrAA4QbAAOEG4ADhBvAA4QcgAOEHUADhB2AA4QdwAOEHoADhB7AA4QgAAOEJkADhCiAA4QpAAOEKYADhCvAA4QsgAOELUADhC3AA4RAAAOESQADhFLAA4RbwAOEXIADhF0AA4RdgAOEXgADhF6AA4RfAAOEX0ADhGAAA4RmQAOEboADhG8AA4RvgAOEcAADhHCAA4RxAAOEcYADhHIAA4RygAOEesADhHuAA4R8QAOEfQADhH3AA4R+gAOEf0ADhIAAA4SAwAOEgUADhKAAA4SggAOEoQADhKGAA4SiQAOEooADhKLAA4SjAAOEo0ADhKPAA4SkQAOEpIADhKTAA4SlQAOEpYADhMRAA4TEwAOExUADhMXAA4TGgAOExsADhMcAA4THQAOEx4ADhMgAA4TIgAOEyMADhMkAA4TJgAOEycADhOiAA4TpAAOE6cADhOpAA4TrAAOE60ADhOuAA4TrwAOE7AADhOyAA4TtAAOE7UADhO2AA4TuAAOE7kADhPSAA4T0wAOE9QADhPWAA4UUQAOFFMADhRVAA4UVwAOFFoADhRbAA4UXAAOFF0ADhReAA4UYAAOFGIADhRjAA4UZAAOFGYADhRnAA4U4gAOFOQADhTmAA4U6AAOFOsADhTsAA4U7QAOFO4ADhTvAA4U8QAOFPMADhT0AA4U9QAOFPcADhT4AA4VcwAOFXUADhV3AA4VeQAOFXwADhV9AA4VfgAOFX8ADhWAAA4VggAOFYQADhWFAA4VhgAOFYgADhWJAA4WBAAOFgYADhYIAA4WCgAOFg0ADhYOAA4WDwAOFhAADhYRAA4WEwAOFhUADhYWAA4WFwAOFhkADhYaAA4WlQAOFpcADhaZAA4WmwAOFp4ADhafAA4WoAAOFqEADhaiAA4WpAAOFqYADhanAA4WqAAOFqoADharAA4W9AAOFxgADhc/AA4XYwAOF2YADhdoAA4XagAOF2wADhduAA4XcAAOF3EADhd0AA4XjQAOF6oADhesAA4XrgAOF7AADheyAA4XtAAOF7YADhe4AA4X1QAOF9gADhfbAA4X3gAOF+EADhfkAA4X5wAOF+oADhfsAA4YZwAOGGkADhhrAA4YbQAOGHAADhhxAA4YcgAOGHMADhh0AA4YdgAOGHgADhh5AA4YegAOGHwADhh9AA4Y+AAOGPoADhj8AA4Y/gAOGQEADhkCAA4ZAwAOGQQADhkFAA4ZBwAOGQkADhkKAA4ZCwAOGQ0ADhkOAA4ZiQAOGYsADhmNAA4ZjwAOGZIADhmTAA4ZlAAOGZUADhmWAA4ZmAAOGZoADhmbAA4ZnAAOGZ4ADhmfAA4aGgAOGhwADhofAA4aIQAOGiQADholAA4aJgAOGicADhooAA4aKgAOGiwADhotAA4aLgAOGjAADhoxAA4arAAOGq4ADhqwAA4asgAOGrUADhq2AA4atwAOGrgADhq5AA4auwAOGr0ADhq+AA4avwAOGsEADhrCAA4bPQAOGz8ADhtBAA4bQwAOG0YADhtHAA4bSAAOG0kADhtKAA4bTAAOG04ADhtPAA4bUAAOG1IADhtTAA4bzgAOG9AADhvTAA4b1QAOG9gADhvZAA4b2gAOG9sADhvcAA4b3gAOG+AADhvhAA4b4gAOG+QADhvlAA4ceAAOHJsADhy7AA4c2wAOHN0ADhzfAA4c4QAOHOMADhzmAA4c5wAOHOgADhzrAA4c7AAOHO4ADhzvAA4c8gAOHPUADhz2AA4c9wAOHPoADhz7AA4dAAAOHRkADh0iAA4dJAAOHSYADh0vAA4dMgAOHTUADh03AA4dgAAOHaQADh3LAA4d7wAOHfIADh30AA4d9gAOHfgADh36AA4d/AAOHf0ADh4AAA4eGQAOHjoADh48AA4ePgAOHkAADh5CAA4eRAAOHkYADh5IAA4eSgAOHmsADh5uAA4ecQAOHnQADh53AA4eegAOHn0ADh6AAA4egwAOHoUADh8AAA4fAgAOHwQADh8GAA4fCQAOHwoADh8LAA4fDAAOHw0ADh8PAA4fEQAOHxIADh8TAA4fFQAOHxYADh+RAA4fkwAOH5UADh+XAA4fmgAOH5sADh+cAA4fnQAOH54ADh+gAA4fogAOH6MADh+kAA4fpgAOH6cADiAiAA4gJAAOICcADiApAA4gLAAOIC0ADiAuAA4gLwAOIDAADiAyAA4gNAAOIDUADiA2AA4gOAAOIDkADiBSAA4gUwAOIFQADiBWAA4g0QAOINMADiDVAA4g1wAOINoADiDbAA4g3AAOIN0ADiDeAA4g4AAOIOIADiDjAA4g5AAOIOYADiDnAA4hYgAOIWQADiFmAA4haAAOIWsADiFsAA4hbQAOIW4ADiFvAA4hcQAOIXMADiF0AA4hdQAOIXcADiF4AA4h8wAOIfUADiH3AA4h+QAOIfwADiH9AA4h/gAOIf8ADiIAAA4iAgAOIgQADiIFAA4iBgAOIggADiIJAA4ihAAOIoYADiKIAA4iigAOIo0ADiKOAA4ijwAOIpAADiKRAA4ikwAOIpUADiKWAA4ilwAOIpkADiKaAA4jFQAOIxcADiMZAA4jGwAOIx4ADiMfAA4jIAAOIyEADiMiAA4jJAAOIyYADiMnAA4jKAAOIyoADiMrAA4jdAAOI5gADiO/AA4j4wAOI+YADiPoAA4j6gAOI+wADiPuAA4j8AAOI/EADiP0AA4kDQAOJCoADiQsAA4kLgAOJDAADiQyAA4kNAAOJDYADiQ4AA4kVQAOJFgADiRbAA4kXgAOJGEADiRkAA4kZwAOJGoADiRsAA4k5wAOJOkADiTrAA4k7QAOJPAADiTxAA4k8gAOJPMADiT0AA4k9gAOJPgADiT5AA4k+gAOJPwADiT9AA4leAAOJXoADiV9AA4lfwAOJYIADiWDAA4lhAAOJYUADiWGAA4liAAOJYoADiWLAA4ljAAOJY4ADiWPAA4mCgAOJgwADiYOAA4mEAAOJhMADiYUAA4mFQAOJhYADiYXAA4mGQAOJhsADiYcAA4mHQAOJh8ADiYgAA4mmwAOJp0ADiagAA4mogAOJqUADiamAA4mpwAOJqgADiapAA4mqwAOJq0ADiauAA4mrwAOJrEADiayAA4nLQAOJy8ADicxAA4nMwAOJzYADic3AA4nOAAOJzkADic6AA4nPAAOJz4ADic/AA4nQAAOJ0IADidDAA4nvgAOJ8AADifCAA4nxAAOJ8cADifIAA4nyQAOJ8oADifLAA4nzQAOJ88ADifQAA4n0QAOJ9MADifUAA4oTwAOKFEADihUAA4oVgAOKFkADihaAA4oWwAOKFwADihdAA4oXwAOKGEADihiAA4oYwAOKGUADihmAA4o+QAOKRwADik8AA4pXAAOKV4ADilgAA4pYgAOKWQADilnAA4paAAOKWkADilsAA4pbQAOKW8ADilwAA4pcgAOKXUADil2AA4pdwAOKXoADil7AA4pgAAOKZkADimiAA4ppAAOKaYADimvAA4psgAOKbUADim3AA4qAAAOKiQADipLAA4qbwAOKnIADip0AA4qdgAOKngADip6AA4qfAAOKn0ADiqAAA4qmQAOKroADiq8AA4qvgAOKsAADirCAA4qxAAOKsYADirIAA4qygAOKusADiruAA4q8QAOKvQADir3AA4q+gAOKv0ADisAAA4rAwAOKwUADiuAAA4rggAOK4QADiuGAA4riQAOK4oADiuLAA4rjAAOK40ADiuPAA4rkQAOK5IADiuTAA4rlQAOK5YADiwRAA4sEwAOLBUADiwXAA4sGgAOLBsADiwcAA4sHQAOLB4ADiwgAA4sIgAOLCMADiwkAA4sJgAOLCcADiyiAA4spAAOLKcADiypAA4srAAOLK0ADiyuAA4srwAOLLAADiyyAA4stAAOLLUADiy2AA4suAAOLLkADizSAA4s0wAOLNQADizWAA4tUQAOLVMADi1VAA4tVwAOLVoADi1bAA4tXAAOLV0ADi1eAA4tYAAOLWIADi1jAA4tZAAOLWYADi1nAA4t4gAOLeQADi3mAA4t6AAOLesADi3sAA4t7QAOLe4ADi3vAA4t8QAOLfMADi30AA4t9QAOLfcADi34AA4ucwAOLnUADi53AA4ueQAOLnwADi59AA4ufgAOLn8ADi6AAA4uggAOLoQADi6FAA4uhgAOLogADi6JAA4vBAAOLwYADi8IAA4vCgAOLw0ADi8OAA4vDwAOLxAADi8RAA4vEwAOLxUADi8WAA4vFwAOLxkADi8aAA4vlQAOL5cADi+ZAA4vmwAOL54ADi+fAA4voAAOL6EADi+iAA4vpAAOL6YADi+nAA4vqAAOL6oADi+rAA4v9AAOMBgADjA/AA4wYwAOMGYADjBoAA4wagAOMGwADjBuAA4wcAAOMHEADjB0AA4wjQAOMKoADjCsAA4wrgAOMLAADjCyAA4wtAAOMLYADjC4AA4w1QAOMNgADjDbAA4w3gAOMOEADjDkAA4w5wAOMOoADjDsAA4xZwAOMWkADjFrAA4xbQAOMXAADjFxAA4xcgAOMXMADjF0AA4xdgAOMXgADjF5AA4xegAOMXwADjF9AA4x+AAOMfoADjH8AA4x/gAOMgEADjICAA4yAwAOMgQADjIFAA4yBwAOMgkADjIKAA4yCwAOMg0ADjIOAA4yiQAOMosADjKNAA4yjwAOMpIADjKTAA4ylAAOMpUADjKWAA4ymAAOMpoADjKbAA4ynAAOMp4ADjKfAA4zGgAOMxwADjMfAA4zIQAOMyQADjMlAA4zJgAOMycADjMoAA4zKgAOMywADjMtAA4zLgAOMzAADjMxAA4zrAAOM64ADjOwAA4zsgAOM7UADjO2AA4ztwAOM7gADjO5AA4zuwAOM70ADjO+AA4zvwAOM8EADjPCAA40PQAOND8ADjRBAA40QwAONEYADjRHAA40SAAONEkADjRKAA40TAAONE4ADjRPAA40UAAONFIADjRTAA40zgAONNAADjTSAA401AAONNcADjTYAA402QAONNoADjTbAA403QAONN8ADjTgAA404QAONOMADjTkAA41dwAONZoADjW6AA412gAONdwADjXeAA414AAONeIADjXlAA415gAONecADjXqAA416wAONe0ADjXuAA418AAONfMADjX0AA419QAONfgADjX5AA42AgAONhsADjYkAA42JgAONigADjYxAA42NAAONjcADjY5AA42ggAONqYADjbNAA428QAONvQADjb2AA42+AAONvoADjb8AA42/gAONv8ADjcCAA43GwAONzwADjc+AA43QAAON0IADjdEAA43RgAON0gADjdKAA43TAAON20ADjdwAA43cwAON3YADjd5AA43fAAON38ADjeCAA43hQAON4cADjgCAA44BAAOOAYADjgIAA44CwAOOAwADjgNAA44DgAOOA8ADjgRAA44EwAOOBQADjgVAA44FwAOOBgADjiTAA44lQAOOJcADjiZAA44nAAOOJ0ADjieAA44nwAOOKAADjiiAA44pAAOOKUADjimAA44qAAOOKkADjkkAA45JgAOOSkADjkrAA45LgAOOS8ADjkwAA45MQAOOTIADjk0AA45NgAOOTcADjk4AA45OgAOOTsADjlUAA45VQAOOVYADjlYAA450wAOOdUADjnXAA452QAOOdwADjndAA453gAOOd8ADjngAA454gAOOeQADjnlAA455gAOOegADjnpAA46ZAAOOmYADjpoAA46agAOOm0ADjpuAA46bwAOOnAADjpxAA46cwAOOnUADjp2AA46dwAOOnkADjp6AA469QAOOvcADjr5AA46+wAOOv4ADjr/AA47AAAOOwEADjsCAA47BAAOOwYADjsHAA47CAAOOwoADjsLAA47hgAOO4gADjuKAA47jAAOO48ADjuQAA47kQAOO5IADjuTAA47lQAOO5cADjuYAA47mQAOO5sADjucAA48FwAOPBkADjwbAA48HQAOPCAADjwhAA48IgAOPCMADjwkAA48JgAOPCgADjwpAA48KgAOPCwADjwtAA48dgAOPJoADjzBAA485QAOPOgADjzqAA487AAOPO4ADjzwAA488gAOPPMADjz2AA49DwAOPSwADj0uAA49MAAOPTIADj00AA49NgAOPTgADj06AA49VwAOPVoADj1dAA49YAAOPWMADj1mAA49aQAOPWwADj1uAA496QAOPesADj3tAA497wAOPfIADj3zAA499AAOPfUADj32AA49+AAOPfoADj37AA49/AAOPf4ADj3/AA4+egAOPnwADj5+AA4+gAAOPoMADj6EAA4+hQAOPoYADj6HAA4+iQAOPosADj6MAA4+jQAOPo8ADj6QAA4/CwAOPw0ADj8PAA4/EQAOPxQADj8VAA4/FgAOPxcADj8YAA4/GgAOPxwADj8dAA4/HgAOPyAADj8hAA4/nAAOP54ADj+hAA4/owAOP6YADj+nAA4/qAAOP6kADj+qAA4/rAAOP64ADj+vAA4/sAAOP7IADj+zAA5ALgAOQDAADkAyAA5ANAAOQDcADkA4AA5AOQAOQDoADkA7AA5APQAOQD8ADkBAAA5AQQAOQEMADkBEAA5AvwAOQMEADkDDAA5AxQAOQMgADkDJAA5AygAOQMsADkDMAA5AzgAOQNAADkDRAA5A0gAOQNQADkDVAA5BUAAOQVIADkFUAA5BVgAOQVkADkFaAA5BWwAOQVwADkFdAA5BXwAOQWEADkFiAA5BYwAOQWUADkFmAA5BdwAOQXwADkF/AA5BgQAOQYYADkIBAA5CAwAOQgUADkIHAA5CCgAOQgsADkIMAA5CDQAOQg4ADkIQAA5CEgAOQhMADkIUAA5CFgAOQhcADkKSAA5ClAAOQpYADkKYAA5CmwAOQpwADkKdAA5CngAOQp8ADkKhAA5CowAOQqQADkKlAA5CpwAOQqgADkMjAA5DJQAOQygADkMqAA5DLQAOQy4ADkMvAA5DMAAOQzEADkMzAA5DNQAOQzYADkM3AA5DOQAOQzoADkPNAA5D8AAORBAADkQwAA5EMgAORDQADkQ2AA5EOAAORDsADkQ8AA5EPQAOREAADkRBAA5EQwAOREQADkRGAA5ESQAOREoADkRLAA5ETgAORE8ADkRYAA5EcQAORHoADkR8AA5EfgAORIcADkSKAA5EjQAORI8ADkTYAA5E/AAORSMADkVHAA5FSgAORUwADkVOAA5FUAAORVIADkVUAA5FVQAORVgADkVxAA5FkgAORZQADkWWAA5FmAAORZoADkWcAA5FngAORaAADkWiAA5FwwAORcYADkXJAA5FzAAORc8ADkXSAA5F1QAORdgADkXbAA5F3QAORlgADkZaAA5GXAAORl4ADkZhAA5GYgAORmMADkZkAA5GZQAORmcADkZpAA5GagAORmsADkZtAA5GbgAORukADkbrAA5G7QAORu8ADkbyAA5G8wAORvQADkb1AA5G9gAORvgADkb6AA5G+wAORvwADkb+AA5G/wAOR3oADkd8AA5HfwAOR4EADkeEAA5HhQAOR4YADkeHAA5HiAAOR4oADkeMAA5HjQAOR44ADkeQAA5HkQAOR6oADkerAA5HrAAOR64ADkgpAA5IKwAOSC0ADkgvAA5IMgAOSDMADkg0AA5INQAOSDYADkg4AA5IOgAOSDsADkg8AA5IPgAOSD8ADki6AA5IvAAOSL4ADkjAAA5IwwAOSMQADkjFAA5IxgAOSMcADkjJAA5IywAOSMwADkjNAA5IzwAOSNAADklLAA5JTQAOSU8ADklRAA5JVAAOSVUADklWAA5JVwAOSVgADklaAA5JXAAOSV0ADkleAA5JYAAOSWEADkncAA5J3gAOSeAADkniAA5J5QAOSeYADknnAA5J6AAOSekADknrAA5J7QAOSe4ADknvAA5J8QAOSfIADkptAA5KbwAOSnEADkpzAA5KdgAOSncADkp4AA5KeQAOSnoADkp8AA5KfgAOSn8ADkqAAA5KggAOSoMADkrMAA5K8AAOSxcADks7AA5LPgAOS0AADktCAA5LRAAOS0YADktIAA5LSQAOS0wADktlAA5LggAOS4QADkuGAA5LiAAOS4oADkuMAA5LjgAOS5AADkutAA5LsAAOS7MADku2AA5LuQAOS7wADku/AA5LwgAOS8QADkw/AA5MQQAOTEMADkxFAA5MSAAOTEkADkxKAA5MSwAOTEwADkxOAA5MUAAOTFEADkxSAA5MVAAOTFUADkzQAA5M0gAOTNQADkzWAA5M2QAOTNoADkzbAA5M3AAOTN0ADkzfAA5M4QAOTOIADkzjAA5M5QAOTOYADk1hAA5NYwAOTWUADk1nAA5NagAOTWsADk1sAA5NbQAOTW4ADk1wAA5NcgAOTXMADk10AA5NdgAOTXcADk3yAA5N9AAOTfYADk34AA5N+wAOTfwADk39AA5N/gAOTf8ADk4BAA5OAwAOTgQADk4FAA5OBwAOTggADk6DAA5OhQAOTocADk6JAA5OjAAOTo0ADk6OAA5OjwAOTpAADk6SAA5OlAAOTpUADk6WAA5OmAAOTpkADk8UAA5PFgAOTxgADk8aAA5PHQAOTx4ADk8fAA5PIAAOTyEADk8jAA5PJQAOTyYADk8nAA5PKQAOTyoADk+lAA5PpwAOT6kADk+rAA5PrgAOT68ADk+wAA5PsQAOT7IADk+0AA5PtgAOT7cADk+4AA5PugAOT7sADlBOAA5QcQAOUJEADlCxAA5QswAOULUADlC3AA5QuQAOULwADlC9AA5QvgAOUMEADlDCAA5QxAAOUMUADlDHAA5QygAOUMsADlDMAA5QzwAOUNAADlDZAA5Q8gAOUPsADlD9AA5Q/wAOUQgADlELAA5RDgAOURAADlFZAA5RfQAOUaQADlHIAA5RywAOUc0ADlHPAA5R0QAOUdMADlHVAA5R1gAOUdkADlHyAA5SEwAOUhUADlIXAA5SGQAOUhsADlIdAA5SHwAOUiEADlIjAA5SRAAOUkcADlJKAA5STQAOUlAADlJTAA5SVgAOUlkADlJcAA5SXgAOUtkADlLbAA5S3QAOUt8ADlLiAA5S4wAOUuQADlLlAA5S5gAOUugADlLqAA5S6wAOUuwADlLuAA5S7wAOU2oADlNsAA5TbgAOU3AADlNzAA5TdAAOU3UADlN2AA5TdwAOU3kADlN7AA5TfAAOU30ADlN/AA5TgAAOU/sADlP9AA5UAAAOVAIADlQFAA5UBgAOVAcADlQIAA5UCQAOVAsADlQNAA5UDgAOVA8ADlQRAA5UEgAOVCsADlQsAA5ULQAOVC8ADlSqAA5UrAAOVK4ADlSwAA5UswAOVLQADlS1AA5UtgAOVLcADlS5AA5UuwAOVLwADlS9AA5UvwAOVMAADlU7AA5VPQAOVT8ADlVBAA5VRAAOVUUADlVGAA5VRwAOVUgADlVKAA5VTAAOVU0ADlVOAA5VUAAOVVEADlXMAA5VzgAOVdAADlXSAA5V1QAOVdYADlXXAA5V2AAOVdkADlXbAA5V3QAOVd4ADlXfAA5V4QAOVeIADlZdAA5WXwAOVmEADlZjAA5WZgAOVmcADlZoAA5WaQAOVmoADlZsAA5WbgAOVm8ADlZwAA5WcgAOVnMADlbuAA5W8AAOVvIADlb0AA5W9wAOVvgADlb5AA5W+gAOVvsADlb9AA5W/wAOVwAADlcBAA5XAwAOVwQADldNAA5XcQAOV5gADle8AA5XvwAOV8EADlfDAA5XxQAOV8cADlfJAA5XygAOV80ADlfmAA5YAwAOWAUADlgHAA5YCQAOWAsADlgNAA5YDwAOWBEADlguAA5YMQAOWDQADlg3AA5YOgAOWD0ADlhAAA5YQwAOWEUADljAAA5YwgAOWMQADljGAA5YyQAOWMoADljLAA5YzAAOWM0ADljPAA5Y0QAOWNIADljTAA5Y1QAOWNYADllRAA5ZUwAOWVUADllXAA5ZWgAOWVsADllcAA5ZXQAOWV4ADllgAA5ZYgAOWWMADllkAA5ZZgAOWWcADlniAA5Z5AAOWeYADlnoAA5Z6wAOWewADlntAA5Z7gAOWe8ADlnxAA5Z8wAOWfQADln1AA5Z9wAOWfgADlpzAA5adQAOWngADlp6AA5afQAOWn4ADlp/AA5agAAOWoEADlqDAA5ahQAOWoYADlqHAA5aiQAOWooADlsFAA5bBwAOWwkADlsLAA5bDgAOWw8ADlsQAA5bEQAOWxIADlsUAA5bFgAOWxcADlsYAA5bGgAOWxsADluWAA5bmAAOW5oADlucAA5bnwAOW6AADluhAA5bogAOW6MADlulAA5bpwAOW6gADlupAA5bqwAOW6wADlwnAA5cKQAOXCsADlwtAA5cMAAOXDEADlwyAA5cMwAOXDQADlw2AA5cOAAOXDkADlw6AA5cPAAOXD0ADlzQAA5c8wAOXRMADl0zAA5dNQAOXTcADl05AA5dOwAOXT4ADl0/AA5dQAAOXUMADl1EAA5dRgAOXUcADl1JAA5dTAAOXU0ADl1OAA5dUQAOXVIADl1XAA5dcAAOXXkADl17AA5dfQAOXYYADl2JAA5djAAOXY4ADl3XAA5d+wAOXiIADl5GAA5eSQAOXksADl5NAA5eTwAOXlEADl5TAA5eVAAOXlcADl5wAA5ekQAOXpMADl6VAA5elwAOXpkADl6bAA5enQAOXp8ADl6hAA5ewgAOXsUADl7IAA5eywAOXs4ADl7RAA5e1AAOXtcADl7aAA5e3AAOX1cADl9ZAA5fWwAOX10ADl9gAA5fYQAOX2IADl9jAA5fZAAOX2YADl9oAA5faQAOX2oADl9sAA5fbQAOX+gADl/qAA5f7AAOX+4ADl/xAA5f8gAOX/MADl/0AA5f9QAOX/cADl/5AA5f+gAOX/sADl/9AA5f/gAOYHkADmB7AA5gfgAOYIAADmCDAA5ghAAOYIUADmCGAA5ghwAOYIkADmCLAA5gjAAOYI0ADmCPAA5gkAAOYKkADmCqAA5gqwAOYK0ADmEoAA5hKgAOYSwADmEuAA5hMQAOYTIADmEzAA5hNAAOYTUADmE3AA5hOQAOYToADmE7AA5hPQAOYT4ADmG5AA5huwAOYb0ADmG/AA5hwgAOYcMADmHEAA5hxQAOYcYADmHIAA5hygAOYcsADmHMAA5hzgAOYc8ADmJKAA5iTAAOYk4ADmJQAA5iUwAOYlQADmJVAA5iVgAOYlcADmJZAA5iWwAOYlwADmJdAA5iXwAOYmAADmLbAA5i3QAOYt8ADmLhAA5i5AAOYuUADmLmAA5i5wAOYugADmLqAA5i7AAOYu0ADmLuAA5i8AAOYvEADmNsAA5jbgAOY3AADmNyAA5jdQAOY3YADmN3AA5jeAAOY3kADmN7AA5jfQAOY34ADmN/AA5jgQAOY4IADmPLAA5j7wAOZBYADmQ6AA5kPQAOZD8ADmRBAA5kQwAOZEUADmRHAA5kSAAOZEsADmRkAA5kgQAOZIMADmSFAA5khwAOZIkADmSLAA5kjQAOZI8ADmSsAA5krwAOZLIADmS1AA5kuAAOZLsADmS+AA5kwQAOZMMADmU+AA5lQAAOZUIADmVEAA5lRwAOZUgADmVJAA5lSgAOZUsADmVNAA5lTwAOZVAADmVRAA5lUwAOZVQADmXPAA5l0QAOZdMADmXVAA5l2AAOZdkADmXaAA5l2wAOZdwADmXeAA5l4AAOZeEADmXiAA5l5AAOZeUADmZgAA5mYgAOZmQADmZmAA5maQAOZmoADmZrAA5mbAAOZm0ADmZvAA5mcQAOZnIADmZzAA5mdQAOZnYADmbxAA5m8wAOZvUADmb3AA5m+gAOZvsADmb8AA5m/QAOZv4ADmcAAA5nAgAOZwMADmcEAA5nBgAOZwcADmeCAA5nhAAOZ4YADmeIAA5niwAOZ4wADmeNAA5njgAOZ48ADmeRAA5nkwAOZ5QADmeVAA5nlwAOZ5gADmgTAA5oFQAOaBcADmgZAA5oHAAOaB0ADmgeAA5oHwAOaCAADmgiAA5oJAAOaCUADmgmAA5oKAAOaCkADmikAA5opgAOaKgADmiqAA5orQAOaK4ADmivAA5osAAOaLEADmizAA5otQAOaLYADmi3AA5ouQAOaLoADmlNAA5pcAAOaZAADmmwAA5psgAOabQADmm2AA5puAAOabsADmm8AA5pvQAOacAADmnBAA5pwwAOacQADmnGAA5pyQAOacoADmnLAA5pzgAOac8ADmnUAA5p7QAOafYADmn4AA5p+gAOagMADmoGAA5qCQAOagsADmpUAA5qeAAOap8ADmrDAA5qxgAOasgADmrKAA5qzAAOas4ADmrQAA5q0QAOatQADmrtAA5rDgAOaxAADmsSAA5rFAAOaxYADmsYAA5rGgAOaxwADmseAA5rPwAOa0IADmtFAA5rSAAOa0sADmtOAA5rUQAOa1QADmtXAA5rWQAOa9QADmvWAA5r2AAOa9oADmvdAA5r3gAOa98ADmvgAA5r4QAOa+MADmvlAA5r5gAOa+cADmvpAA5r6gAObGUADmxnAA5saQAObGsADmxuAA5sbwAObHAADmxxAA5scgAObHQADmx2AA5sdwAObHgADmx6AA5sewAObPYADmz4AA5s+wAObP0ADm0AAA5tAQAObQIADm0DAA5tBAAObQYADm0IAA5tCQAObQoADm0MAA5tDQAObSYADm0nAA5tKAAObSoADm2lAA5tpwAObakADm2rAA5trgAOba8ADm2wAA5tsQAObbIADm20AA5ttgAObbcADm24AA5tugAObbsADm42AA5uOAAObjoADm48AA5uPwAObkAADm5BAA5uQgAObkMADm5FAA5uRwAObkgADm5JAA5uSwAObkwADm7HAA5uyQAObssADm7NAA5u0AAObtEADm7SAA5u0wAObtQADm7WAA5u2AAObtkADm7aAA5u3AAObt0ADm9YAA5vWgAOb1wADm9eAA5vYQAOb2IADm9jAA5vZAAOb2UADm9nAA5vaQAOb2oADm9rAA5vbQAOb24ADm/pAA5v6wAOb+0ADm/vAA5v8gAOb/MADm/0AA5v9QAOb/YADm/4AA5v+gAOb/sADm/8AA5v/gAOb/8ADnBIAA5wbAAOcJMADnC3AA5wugAOcLwADnC+AA5wwAAOcMIADnDEAA5wxQAOcMgADnDhAA5w/gAOcQAADnECAA5xBAAOcQYADnEIAA5xCgAOcQwADnEpAA5xLAAOcS8ADnEyAA5xNQAOcTgADnE7AA5xPgAOcUAADnG7AA5xvQAOcb8ADnHBAA5xxAAOccUADnHGAA5xxwAOccgADnHKAA5xzAAOcc0ADnHOAA5x0AAOcdEADnJMAA5yTgAOclAADnJSAA5yVQAOclYADnJXAA5yWAAOclkADnJbAA5yXQAOcl4ADnJfAA5yYQAOcmIADnLdAA5y3wAOcuEADnLjAA5y5gAOcucADnLoAA5y6QAOcuoADnLsAA5y7gAOcu8ADnLwAA5y8gAOcvMADnNuAA5zcAAOc3MADnN1AA5zeAAOc3kADnN6AA5zewAOc3wADnN+AA5zgAAOc4EADnOCAA5zhAAOc4UADnQAAA50AgAOdAQADnQGAA50CQAOdAoADnQLAA50DAAOdA0ADnQPAA50EQAOdBIADnQTAA50FQAOdBYADnSRAA50kwAOdJUADnSXAA50mgAOdJsADnScAA50nQAOdJ4ADnSgAA50ogAOdKMADnSkAA50pgAOdKcADnUiAA51JAAOdSYADnUoAA51KwAOdSwADnUtAA51LgAOdS8ADnUxAA51MwAOdTQADnU1AA51NwAOdTgADnXLAA517gAOdg4ADnYuAA52MAAOdjIADnY0AA52NgAOdjkADnY6AA52OwAOdj4ADnY/AA52QQAOdkIADnZFAA52SAAOdkkADnZKAA52TQAOdk4ADnZTAA52bAAOdnUADnZ3AA52eQAOdoIADnaFAA52iAAOdooADnbTAA529wAOdx4ADndCAA53RQAOd0cADndJAA53SwAOd00ADndPAA53UAAOd1MADndsAA53jQAOd48ADneRAA53kwAOd5UADneXAA53mQAOd5sADnedAA53vgAOd8EADnfEAA53xwAOd8oADnfNAA530AAOd9MADnfWAA532AAOeFMADnhVAA54VwAOeFkADnhcAA54XQAOeF4ADnhfAA54YAAOeGIADnhkAA54ZQAOeGYADnhoAA54aQAOeOQADnjmAA546AAOeOoADnjtAA547gAOeO8ADnjwAA548QAOePMADnj1AA549gAOePcADnj5AA54+gAOeXUADnl3AA55egAOeXwADnl/AA55gAAOeYEADnmCAA55gwAOeYUADnmHAA55iAAOeYkADnmLAA55jAAOeaUADnmmAA55pwAOeakADnokAA56JgAOeigADnoqAA56LQAOei4ADnovAA56MAAOejEADnozAA56NQAOejYADno3AA56OQAOejoADnq1AA56twAOerkADnq7AA56vgAOer8ADnrAAA56wQAOesIADnrEAA56xgAOescADnrIAA56ygAOessADntGAA57SAAOe0oADntMAA57TwAOe1AADntRAA57UgAOe1MADntVAA57VwAOe1gADntZAA57WwAOe1wADnvXAA572QAOe9sADnvdAA574AAOe+EADnviAA574wAOe+QADnvmAA576AAOe+kADnvqAA577AAOe+0ADnxoAA58agAOfGwADnxuAA58cQAOfHIADnxzAA58dAAOfHUADnx3AA58eQAOfHoADnx7AA58fQAOfH4ADnzHAA586wAOfRIADn02AA59OQAOfTsADn09AA59PwAOfUEADn1DAA59RAAOfUcADn1gAA59fQAOfX8ADn2BAA59gwAOfYUADn2HAA59iQAOfYsADn2oAA59qwAOfa4ADn2xAA59tAAOfbcADn26AA59vQAOfb8ADn46AA5+PAAOfj4ADn5AAA5+QwAOfkQADn5FAA5+RgAOfkcADn5JAA5+SwAOfkwADn5NAA5+TwAOflAADn7LAA5+zQAOftAADn7SAA5+1QAOftYADn7XAA5+2AAOftkADn7bAA5+3QAOft4ADn7fAA5+4QAOfuIADn9dAA5/XwAOf2EADn9jAA5/ZgAOf2cADn9oAA5/aQAOf2oADn9sAA5/bgAOf28ADn9wAA5/cgAOf3MADn/uAA5/8AAOf/MADn/1AA5/+AAOf/kADn/6AA5/+wAOf/wADn/+AA6AAAAOgAEADoACAA6ABAAOgAUADoCAAA6AggAOgIQADoCGAA6AiQAOgIoADoCLAA6AjAAOgI0ADoCPAA6AkQAOgJIADoCTAA6AlQAOgJYADoERAA6BEwAOgRUADoEXAA6BGgAOgRsADoEcAA6BHQAOgR4ADoEgAA6BIgAOgSMADoEkAA6BJgAOgScADoGiAA6BpAAOgacADoGpAA6BrAAOga0ADoGuAA6BrwAOgbAADoGyAA6BtAAOgbUADoG2AA6BuAAOgbkADoJMAA6CbwAOgo8ADoKvAA6CsQAOgrMADoK1AA6CtwAOgroADoK7AA6CvAAOgr8ADoLAAA6CwgAOgsMADoLGAA6CyQAOgsoADoLLAA6CzgAOgs8ADoLUAA6C7QAOgvYADoL4AA6C+gAOgwMADoMGAA6DCQAOgwsADoNUAA6DeAAOg58ADoPDAA6DxgAOg8gADoPKAA6DzAAOg84ADoPQAA6D0QAOg9QADoPtAA6EDgAOhBAADoQSAA6EFAAOhBYADoQYAA6EGgAOhBwADoQeAA6EPwAOhEIADoRFAA6ESAAOhEsADoROAA6EUQAOhFQADoRXAA6EWQAOhNQADoTWAA6E2AAOhNoADoTdAA6E3gAOhN8ADoTgAA6E4QAOhOMADoTlAA6E5gAOhOcADoTpAA6E6gAOhWUADoVnAA6FaQAOhWsADoVuAA6FbwAOhXAADoVxAA6FcgAOhXQADoV2AA6FdwAOhXgADoV6AA6FewAOhfYADoX4AA6F+wAOhf0ADoYAAA6GAQAOhgIADoYDAA6GBAAOhgYADoYIAA6GCQAOhgoADoYMAA6GDQAOhiYADoYnAA6GKAAOhioADoalAA6GpwAOhqkADoarAA6GrgAOhq8ADoawAA6GsQAOhrIADoa0AA6GtgAOhrcADoa4AA6GugAOhrsADoc2AA6HOAAOhzoADoc8AA6HPwAOh0AADodBAA6HQgAOh0MADodFAA6HRwAOh0gADodJAA6HSwAOh0wADofHAA6HyQAOh8sADofNAA6H0AAOh9EADofSAA6H0wAOh9QADofWAA6H2AAOh9kADofaAA6H3AAOh90ADohYAA6IWgAOiFwADoheAA6IYQAOiGIADohjAA6IZAAOiGUADohnAA6IaQAOiGoADohrAA6IbQAOiG4ADojpAA6I6wAOiO0ADojvAA6I8gAOiPMADoj0AA6I9QAOiPYADoj4AA6I+gAOiPsADoj8AA6I/gAOiP8ADolIAA6JbAAOiZMADom3AA6JugAOibwADom+AA6JwAAOicIADonEAA6JxQAOicgADonhAA6J/gAOigAADooCAA6KBAAOigYADooIAA6KCgAOigwADoopAA6KLAAOii8ADooyAA6KNQAOijgADoo7AA6KPgAOikAADoq7AA6KvQAOir8ADorBAA6KxAAOisUADorGAA6KxwAOisgADorKAA6KzAAOis0ADorOAA6K0AAOitEADotMAA6LTgAOi1AADotSAA6LVQAOi1YADotXAA6LWAAOi1kADotbAA6LXQAOi14ADotfAA6LYQAOi2IADovdAA6L3wAOi+EADovjAA6L5gAOi+cADovoAA6L6QAOi+oADovsAA6L7gAOi+8ADovwAA6L8gAOi/MADoxuAA6McAAOjHMADox1AA6MeAAOjHkADox6AA6MewAOjHwADox+AA6MgAAOjIEADoyCAA6MhAAOjIUADo0AAA6NAgAOjQQADo0GAA6NCQAOjQoADo0LAA6NDAAOjQ0ADo0PAA6NEQAOjRIADo0TAA6NFQAOjRYADo2RAA6NkwAOjZUADo2XAA6NmgAOjZsADo2cAA6NnQAOjZ4ADo2gAA6NogAOjaMADo2kAA6NpgAOjacADo4iAA6OJAAOjicADo4pAA6OLAAOji0ADo4uAA6OLwAOjjAADo4yAA6ONAAOjjUADo42AA6OOAAOjjkADo5KAA6OSwAOjk0ADo7IAA6OygAOjswADo7OAA6O0QAOjtIADo7TAA6O1AAOjtUADo7XAA6O2QAOjtoADo7bAA6O3QAOjt4ADo9ZAA6PWwAOj10ADo9fAA6PYgAOj2MADo9kAA6PZQAOj2YADo9oAA6PagAOj2sADo9sAA6PbgAOj28ADo/qAA6P7AAOj+8ADo/xAA6P9AAOj/UADo/2AA6P9wAOj/gADo/6AA6P/AAOj/0ADo/+AA6QAAAOkAEADpCUAA6QtwAOkNcADpD3AA6Q+QAOkPsADpD9AA6Q/wAOkQIADpEDAA6RBAAOkQcADpEIAA6RCgAOkQsADpEOAA6REQAOkRIADpETAA6RFgAOkRcADpEcAA6RNQAOkT4ADpFAAA6RQgAOkUsADpFOAA6RUQAOkVMADpGcAA6RwAAOkecADpILAA6SDgAOkhAADpISAA6SFAAOkhYADpIYAA6SGQAOkhwADpI1AA6SVgAOklgADpJaAA6SXAAOkl4ADpJgAA6SYgAOkmQADpJmAA6ShwAOkooADpKNAA6SkAAOkpMADpKWAA6SmQAOkpwADpKfAA6SoQAOkxwADpMeAA6TIAAOkyIADpMlAA6TJgAOkycADpMoAA6TKQAOkysADpMtAA6TLgAOky8ADpMxAA6TMgAOk60ADpOvAA6TsQAOk7MADpO2AA6TtwAOk7gADpO5AA6TugAOk7wADpO+AA6TvwAOk8AADpPCAA6TwwAOlD4ADpRAAA6UQwAOlEUADpRIAA6USQAOlEoADpRLAA6UTAAOlE4ADpRQAA6UUQAOlFIADpRUAA6UVQAOlG4ADpRvAA6UcAAOlHIADpTtAA6U7wAOlPEADpTzAA6U9gAOlPcADpT4AA6U+QAOlPoADpT8AA6U/gAOlP8ADpUAAA6VAgAOlQMADpV+AA6VgAAOlYIADpWEAA6VhwAOlYgADpWJAA6VigAOlYsADpWNAA6VjwAOlZAADpWRAA6VkwAOlZQADpYPAA6WEQAOlhMADpYVAA6WGAAOlhkADpYaAA6WGwAOlhwADpYeAA6WIAAOliEADpYiAA6WJAAOliUADpagAA6WogAOlqQADpamAA6WqQAOlqoADparAA6WrAAOlq0ADpavAA6WsQAOlrIADpazAA6WtQAOlrYADpcxAA6XMwAOlzUADpc3AA6XOgAOlzsADpc8AA6XPQAOlz4ADpdAAA6XQgAOl0MADpdEAA6XRgAOl0cADpeQAA6XtAAOl9sADpf/AA6YAgAOmAQADpgGAA6YCAAOmAoADpgMAA6YDQAOmBAADpgpAA6YRgAOmEgADphKAA6YTAAOmE4ADphQAA6YUgAOmFQADphxAA6YdAAOmHcADph6AA6YfQAOmIAADpiDAA6YhgAOmIgADpkDAA6ZBQAOmQcADpkJAA6ZDAAOmQ0ADpkOAA6ZDwAOmRAADpkSAA6ZFAAOmRUADpkWAA6ZGAAOmRkADpmUAA6ZlgAOmZkADpmbAA6ZngAOmZ8ADpmgAA6ZoQAOmaIADpmkAA6ZpgAOmacADpmoAA6ZqgAOmasADpomAA6aKAAOmioADposAA6aLwAOmjAADpoxAA6aMgAOmjMADpo1AA6aNwAOmjgADpo5AA6aOwAOmjwADpq3AA6auQAOmrwADpq+AA6awQAOmsIADprDAA6axAAOmsUADprHAA6ayQAOmsoADprLAA6azQAOms4ADptJAA6bSwAOm00ADptPAA6bUgAOm1MADptUAA6bVQAOm1YADptYAA6bWgAOm1sADptcAA6bXgAOm18ADpvaAA6b3AAOm94ADpvgAA6b4wAOm+QADpvlAA6b5gAOm+cADpvpAA6b6wAOm+wADpvtAA6b7wAOm/AADpxrAA6cbQAOnHAADpxyAA6cdQAOnHYADpx3AA6ceAAOnHkADpx7AA6cfQAOnH4ADpx/AA6cgQAOnIIADp0VAA6dOAAOnVgADp14AA6degAOnXwADp1+AA6dgAAOnYMADp2EAA6dhQAOnYgADp2JAA6diwAOnYwADp2OAA6dkQAOnZIADp2TAA6dlgAOnZcADp2gAA6duQAOncIADp3EAA6dxgAOnc8ADp3SAA6d1QAOndcADp4gAA6eRAAOnmsADp6PAA6ekgAOnpQADp6WAA6emAAOnpoADp6cAA6enQAOnqAADp65AA6e2gAOntwADp7eAA6e4AAOnuIADp7kAA6e5gAOnugADp7qAA6fCwAOnw4ADp8RAA6fFAAOnxcADp8aAA6fHQAOnyAADp8jAA6fJQAOn6AADp+iAA6fpAAOn6YADp+pAA6fqgAOn6sADp+sAA6frQAOn68ADp+xAA6fsgAOn7MADp+1AA6ftgAOoDEADqAzAA6gNQAOoDcADqA6AA6gOwAOoDwADqA9AA6gPgAOoEAADqBCAA6gQwAOoEQADqBGAA6gRwAOoMIADqDEAA6gxwAOoMkADqDMAA6gzQAOoM4ADqDPAA6g0AAOoNIADqDUAA6g1QAOoNYADqDYAA6g2QAOoPIADqDzAA6g9AAOoPYADqFxAA6hcwAOoXUADqF3AA6hegAOoXsADqF8AA6hfQAOoX4ADqGAAA6hggAOoYMADqGEAA6hhgAOoYcADqICAA6iBAAOogYADqIIAA6iCwAOogwADqINAA6iDgAOog8ADqIRAA6iEwAOohQADqIVAA6iFwAOohgADqKTAA6ilQAOopcADqKZAA6inAAOop0ADqKeAA6inwAOoqAADqKiAA6ipAAOoqUADqKmAA6iqAAOoqkADqMkAA6jJgAOoygADqMqAA6jLQAOoy4ADqMvAA6jMAAOozEADqMzAA6jNQAOozYADqM3AA6jOQAOozoADqO1AA6jtwAOo7kADqO7AA6jvgAOo78ADqPAAA6jwQAOo8IADqPEAA6jxgAOo8cADqPIAA6jygAOo8sADqQUAA6kOAAOpF8ADqSDAA6khgAOpIgADqSKAA6kjAAOpI4ADqSQAA6kkQAOpJQADqStAA6kygAOpMwADqTOAA6k0AAOpNIADqTUAA6k1gAOpNgADqT1AA6k+AAOpPsADqT+AA6lAQAOpQQADqUHAA6lCgAOpQwADqWHAA6liQAOpYsADqWNAA6lkAAOpZEADqWSAA6lkwAOpZQADqWWAA6lmAAOpZkADqWaAA6lnAAOpZ0ADqYYAA6mGgAOphwADqYeAA6mIQAOpiIADqYjAA6mJAAOpiUADqYnAA6mKQAOpioADqYrAA6mLQAOpi4ADqapAA6mqwAOpq0ADqavAA6msgAOprMADqa0AA6mtQAOprYADqa4AA6mugAOprsADqa8AA6mvgAOpr8ADqc6AA6nPAAOpz4ADqdAAA6nQwAOp0QADqdFAA6nRgAOp0cADqdJAA6nSwAOp0wADqdNAA6nTwAOp1AADqfLAA6nzQAOp88ADqfRAA6n1AAOp9UADqfWAA6n1wAOp9gADqfaAA6n3AAOp90ADqfeAA6n4AAOp+EADqhcAA6oXgAOqGAADqhiAA6oZQAOqGYADqhnAA6oaAAOqGkADqhrAA6obQAOqG4ADqhvAA6ocQAOqHIADqjtAA6o7wAOqPEADqjzAA6o9gAOqPcADqj4AA6o+QAOqPoADqj8AA6o/gAOqP8ADqkAAA6pAgAOqQMADqmWAA6puQAOqdkADqn5AA6p+wAOqf0ADqn/AA6qAQAOqgQADqoFAA6qBgAOqgkADqoKAA6qDAAOqg0ADqoPAA6qEgAOqhMADqoUAA6qFwAOqhgADqodAA6qNgAOqj8ADqpBAA6qQwAOqkwADqpPAA6qUgAOqlQADqqdAA6qwQAOqugADqsMAA6rDwAOqxEADqsTAA6rFQAOqxcADqsZAA6rGgAOqx0ADqs2AA6rVwAOq1kADqtbAA6rXQAOq18ADqthAA6rYwAOq2UADqtnAA6riAAOq4sADquOAA6rkQAOq5QADquXAA6rmgAOq50ADqugAA6rogAOrB0ADqwfAA6sIQAOrCMADqwmAA6sJwAOrCgADqwpAA6sKgAOrCwADqwuAA6sLwAOrDAADqwyAA6sMwAOrK4ADqywAA6ssgAOrLQADqy3AA6suAAOrLkADqy6AA6suwAOrL0ADqy/AA6swAAOrMEADqzDAA6sxAAOrT8ADq1BAA6tRAAOrUYADq1JAA6tSgAOrUsADq1MAA6tTQAOrU8ADq1RAA6tUgAOrVMADq1VAA6tVgAOrW8ADq1wAA6tcQAOrXMADq3uAA6t8AAOrfIADq30AA6t9wAOrfgADq35AA6t+gAOrfsADq39AA6t/wAOrgAADq4BAA6uAwAOrgQADq5/AA6ugQAOroMADq6FAA6uiAAOrokADq6KAA6uiwAOrowADq6OAA6ukAAOrpEADq6SAA6ulAAOrpUADq8QAA6vEgAOrxQADq8WAA6vGQAOrxoADq8bAA6vHAAOrx0ADq8fAA6vIQAOryIADq8jAA6vJQAOryYADq+hAA6vowAOr6UADq+nAA6vqgAOr6sADq+sAA6vrQAOr64ADq+wAA6vsgAOr7MADq+0AA6vtgAOr7cADrAyAA6wNAAOsDYADrA4AA6wOwAOsDwADrA9AA6wPgAOsD8ADrBBAA6wQwAOsEQADrBFAA6wRwAOsEgADrCRAA6wtQAOsNwADrEAAA6xAwAOsQUADrEHAA6xCQAOsQsADrENAA6xDgAOsREADrEqAA6xRwAOsUkADrFLAA6xTQAOsU8ADrFRAA6xUwAOsVUADrFyAA6xdQAOsXgADrF7AA6xfgAOsYEADrGEAA6xhwAOsYkADrIEAA6yBgAOsgkADrILAA6yDgAOsg8ADrIQAA6yEQAOshIADrIUAA6yFgAOshcADrIYAA6yGgAOshsADrIdAA6ymAAOspoADrKcAA6yngAOsqEADrKiAA6yowAOsqQADrKlAA6ypwAOsqkADrKqAA6yqwAOsq0ADrKuAA6zKQAOsysADrMtAA6zLwAOszIADrMzAA6zNAAOszUADrM2AA6zOAAOszoADrM7AA6zPAAOsz4ADrM/AA6zugAOs7wADrO/AA6zwQAOs8QADrPFAA6zxgAOs8cADrPIAA6zygAOs8wADrPNAA6zzgAOs9AADrPRAA60TAAOtE4ADrRQAA60UgAOtFUADrRWAA60VwAOtFgADrRZAA60WwAOtF0ADrReAA60XwAOtGEADrRiAA603QAOtN8ADrThAA604wAOtOYADrTnAA606AAOtOkADrTqAA607AAOtO4ADrTvAA608AAOtPIADrTzAA61bgAOtXAADrVyAA61dAAOtXcADrV4AA61eQAOtXoADrV7AA61fQAOtX8ADrWAAA61gQAOtYMADrWEAA62FwAOtjoADrZaAA62egAOtnwADrZ+AA62gAAOtoIADraFAA62hgAOtocADraKAA62iwAOto0ADraOAA62kQAOtpQADraVAA62lgAOtpkADraaAA62nwAOtrgADrbBAA62wwAOtsUADrbOAA620QAOttQADrbWAA63HwAOt0MADrdqAA63jgAOt5EADreTAA63lQAOt5cADreZAA63mwAOt5wADrefAA63uAAOt9kADrfbAA633QAOt98ADrfhAA634wAOt+UADrfnAA636QAOuAoADrgNAA64EAAOuBMADrgWAA64GQAOuBwADrgfAA64IgAOuCQADrifAA64oQAOuKMADrilAA64qAAOuKkADriqAA64qwAOuKwADriuAA64sAAOuLEADriyAA64tAAOuLUADrkwAA65MgAOuTQADrk2AA65OQAOuToADrk7AA65PAAOuT0ADrk/AA65QQAOuUIADrlDAA65RQAOuUYADrnBAA65wwAOucYADrnIAA65ywAOucwADrnNAA65zgAOuc8ADrnRAA650wAOudQADrnVAA651wAOudgADrnxAA658gAOufMADrn1AA66cAAOunIADrp0AA66dgAOunkADrp6AA66ewAOunwADrp9AA66fwAOuoEADrqCAA66gwAOuoUADrqGAA67AQAOuwMADrsFAA67BwAOuwoADrsLAA67DAAOuw0ADrsOAA67EAAOuxIADrsTAA67FAAOuxYADrsXAA67kgAOu5QADruWAA67mAAOu5sADrucAA67nQAOu54ADrufAA67oQAOu6MADrukAA67pQAOu6cADruoAA68IwAOvCUADrwnAA68KQAOvCwADrwtAA68LgAOvC8ADrwwAA68MgAOvDQADrw1AA68NgAOvDgADrw5AA68tAAOvLYADry4AA68ugAOvL0ADry+AA68vwAOvMAADrzBAA68wwAOvMUADrzGAA68xwAOvMkADrzKAA69EwAOvTcADr1eAA69ggAOvYUADr2HAA69iQAOvYsADr2NAA69jwAOvZAADr2TAA69rAAOvckADr3LAA69zQAOvc8ADr3RAA690wAOvdUADr3XAA699AAOvfcADr36AA69/QAOvgAADr4DAA6+BgAOvgkADr4LAA6+hgAOvogADr6KAA6+jAAOvo8ADr6QAA6+kQAOvpIADr6TAA6+lQAOvpcADr6YAA6+mQAOvpsADr6cAA6/FwAOvxkADr8cAA6/HgAOvyEADr8iAA6/IwAOvyQADr8lAA6/JwAOvykADr8qAA6/KwAOvy0ADr8uAA6/qQAOv6sADr+tAA6/rwAOv7IADr+zAA6/tAAOv7UADr+2AA6/uAAOv7oADr+7AA6/vAAOv74ADr+/AA7AOgAOwDwADsA/AA7AQQAOwEQADsBFAA7ARgAOwEcADsBIAA7ASgAOwEwADsBNAA7ATgAOwFAADsBRAA7A1AAOwPgADsEcAA7BPwAOwWYADsGGAA7BrQAOwdQADsH0AA7CGAAOwjwADsI+AA7CQQAOwkMADsJFAA7CRwAOwkoADsJNAA7CTwAOwlEADsJUAA7CVgAOwlgADsJbAA7CXgAOwl8ADsJkAA7CfQAOwoIADsKEAA7CiQAOwowADsKOAA7C1wAOwvsADsMiAA7DRgAOw0kADsNLAA7DTQAOw08ADsNRAA7DUwAOw1QADsNXAA7DcAAOw5UADsOXAA7DmQAOw5sADsOdAA7DnwAOw6EADsOjAA7DpQAOw6cADsPMAA7DzwAOw9IADsPVAA7D2AAOw9sADsPeAA7D4QAOw+QADsPnAA7D6QAOxGQADsRmAA7EaQAOxGsADsRuAA7EbwAOxHAADsRxAA7EcgAOxHQADsR2AA7EdwAOxHgADsR6AA7EewAOxIwADsSNAA7EjwAOxQoADsUMAA7FDgAOxRAADsUTAA7FFAAOxRUADsUWAA7FFwAOxRkADsUbAA7FHAAOxR0ADsUfAA7FIAAOxZsADsWdAA7FoAAOxaIADsWlAA7FpgAOxacADsWoAA7FqQAOxasADsWtAA7FrgAOxa8ADsWxAA7FsgAOxcMADsXEAA7FxgAOxkEADsZDAA7GRQAOxkcADsZKAA7GSwAOxkwADsZNAA7GTgAOxlAADsZSAA7GUwAOxlQADsZWAA7GVwAOxtIADsbUAA7G1wAOxtkADsbcAA7G3QAOxt4ADsbfAA7G4AAOxuIADsbkAA7G5QAOxuYADsboAA7G6QAOxvoADsb7AA7G/QAOx3gADsd6AA7HfAAOx34ADseBAA7HggAOx4MADseEAA7HhQAOx4cADseJAA7HigAOx4sADseNAA7HjgAOyAkADsgLAA7IDgAOyBAADsgTAA7IFAAOyBUADsgWAA7IFwAOyBkADsgbAA7IHAAOyB0ADsgfAA7IIAAOyDkADsg6AA7IOwAOyD0ADsi4AA7IugAOyLwADsi+AA7IwQAOyMIADsjDAA7IxAAOyMUADsjHAA7IyQAOyMoADsjLAA7IzQAOyM4ADslJAA7JSwAOyU4ADslQAA7JUwAOyVQADslVAA7JVgAOyVcADslZAA7JWwAOyVwADsldAA7JXwAOyWAADsmQAA7JqQAOyboADsm9AA7JwAAOycMADsnGAA7J1wAOydoADsndAA7J4AAOyeMADsnlAA7J9wAOyhAADsonAA7KugAOyt0ADsr9AA7LHQAOyx8ADsshAA7LIwAOyyUADssoAA7LKQAOyyoADsstAA7LLgAOyzAADssxAA7LNAAOyzcADss4AA7LOQAOyzwADss9AA7LRgAOy18ADstoAA7LagAOy2wADst1AA7LeAAOy3sADst9AA7LxgAOy+oADswRAA7MNQAOzDgADsw6AA7MPAAOzD4ADsxAAA7MQgAOzEMADsxGAA7MXwAOzIAADsyCAA7MhAAOzIYADsyIAA7MigAOzIwADsyOAA7MkAAOzLEADsy0AA7MtwAOzLoADsy9AA7MwAAOzMMADszGAA7MyQAOzMsADs1GAA7NSAAOzUoADs1MAA7NTwAOzVAADs1RAA7NUgAOzVMADs1VAA7NVwAOzVgADs1ZAA7NWwAOzVwADs3XAA7N2QAOzdsADs3dAA7N4AAOzeEADs3iAA7N4wAOzeQADs3mAA7N6AAOzekADs3qAA7N7AAOze0ADs5oAA7OagAOzm0ADs5vAA7OcgAOznMADs50AA7OdQAOznYADs54AA7OegAOznsADs58AA7OfgAOzn8ADs6YAA7OmQAOzpoADs6cAA7PFwAOzxkADs8bAA7PHQAOzyAADs8hAA7PIgAOzyMADs8kAA7PJgAOzygADs8pAA7PKgAOzywADs8tAA7PqAAOz6oADs+sAA7PrgAOz7EADs+yAA7PswAOz7QADs+1AA7PtwAOz7kADs+6AA7PuwAOz70ADs++AA7QOQAO0DsADtA9AA7QPwAO0EIADtBDAA7QRAAO0EUADtBGAA7QSAAO0EoADtBLAA7QTAAO0E4ADtBPAA7QygAO0MwADtDOAA7Q0AAO0NMADtDUAA7Q1QAO0NYADtDXAA7Q2QAO0NsADtDcAA7Q3QAO0N8ADtDgAA7RWwAO0V0ADtFfAA7RYQAO0WQADtFlAA7RZgAO0WcADtFoAA7RagAO0WwADtFtAA7RbgAO0XAADtFxAA7RugAO0d4ADtIFAA7SKQAO0iwADtIuAA7SMAAO0jIADtI0AA7SNgAO0jcADtI6AA7SUwAO0nAADtJyAA7SdAAO0nYADtJ4AA7SegAO0nwADtJ+AA7SmwAO0p4ADtKhAA7SpAAO0qcADtKqAA7SrQAO0rAADtKyAA7TLQAO0y8ADtMxAA7TMwAO0zYADtM3AA7TOAAO0zkADtM6AA7TPAAO0z4ADtM/AA7TQAAO00IADtNDAA7TvgAO08AADtPCAA7TxAAO08cADtPIAA7TyQAO08oADtPLAA7TzQAO088ADtPQAA7T0QAO09MADtPUAA7UTwAO1FEADtRTAA7UVQAO1FgADtRZAA7UWgAO1FsADtRcAA7UXgAO1GAADtRhAA7UYgAO1GQADtRlAA7U4AAO1OIADtTlAA7U5wAO1OoADtTrAA7U7AAO1O0ADtTuAA7U8AAO1PIADtTzAA7U9AAO1PYADtT3AA7VcgAO1XQADtV2AA7VeAAO1XsADtV8AA7VfQAO1X4ADtV/AA7VgQAO1YMADtWEAA7VhQAO1YcADtWIAA7WAwAO1gUADtYHAA7WCQAO1gwADtYNAA7WDgAO1g8ADtYQAA7WEgAO1hQADtYVAA7WFgAO1hgADtYZAA7WlAAO1pYADtaZAA7WmwAO1p4ADtafAA7WoAAO1qEADtaiAA7WpAAO1qYADtanAA7WqAAO1qoADtarAA7XPgAO12EADteBAA7XoQAO16MADtelAA7XpwAO16kADtesAA7XrQAO164ADtexAA7XsgAO17QADte1AA7XuAAO17sADte8AA7XvQAO18AADtfBAA7XxgAO198ADtfoAA7X6gAO1+wADtf1AA7X+AAO1/sADtf9AA7YRgAO2GoADtiRAA7YtQAO2LgADti6AA7YvAAO2L4ADtjAAA7YwgAO2MMADtjGAA7Y3wAO2QAADtkCAA7ZBAAO2QYADtkIAA7ZCgAO2QwADtkOAA7ZEAAO2TEADtk0AA7ZNwAO2ToADtk9AA7ZQAAO2UMADtlGAA7ZSQAO2UsADtnGAA7ZyAAO2coADtnMAA7ZzwAO2dAADtnRAA7Z0gAO2dMADtnVAA7Z1wAO2dgADtnZAA7Z2wAO2dwADtpXAA7aWQAO2lsADtpdAA7aYAAO2mEADtpiAA7aYwAO2mQADtpmAA7aaAAO2mkADtpqAA7abAAO2m0ADtroAA7a6gAO2u0ADtrvAA7a8gAO2vMADtr0AA7a9QAO2vYADtr4AA7a+gAO2vsADtr8AA7a/gAO2v8ADtsYAA7bGQAO2xoADtscAA7blwAO25kADtubAA7bnQAO26AADtuhAA7bogAO26MADtukAA7bpgAO26gADtupAA7bqgAO26wADtutAA7cKAAO3CoADtwsAA7cLgAO3DEADtwyAA7cMwAO3DQADtw1AA7cNwAO3DkADtw6AA7cOwAO3D0ADtw+AA7cuQAO3LsADty9AA7cvwAO3MIADtzDAA7cxAAO3MUADtzGAA7cyAAO3MoADtzLAA7czAAO3M4ADtzPAA7dSgAO3UwADt1OAA7dUAAO3VMADt1UAA7dVQAO3VYADt1XAA7dWQAO3VsADt1cAA7dXQAO3V8ADt1gAA7d2wAO3d0ADt3fAA7d4QAO3eQADt3lAA7d5gAO3ecADt3oAA7d6gAO3ewADt3tAA7d7gAO3fAADt3xAA7eOgAO3l4ADt6FAA7eqQAO3qwADt6uAA7esAAO3rIADt60AA7etgAO3rcADt66AA7e0wAO3vAADt7yAA7e9AAO3vYADt74AA7e+gAO3vwADt7+AA7fGwAO3x4ADt8hAA7fJAAO3ycADt8qAA7fLQAO3zAADt8yAA7frQAO368ADt+xAA7fswAO37YADt+3AA7fuAAO37kADt+6AA7fvAAO374ADt+/AA7fwAAO38IADt/DAA7gPgAO4EAADuBDAA7gRQAO4EgADuBJAA7gSgAO4EsADuBMAA7gTgAO4FAADuBRAA7gUgAO4FQADuBVAA7g0AAO4NIADuDUAA7g1gAO4NkADuDaAA7g2wAO4NwADuDdAA7g3wAO4OEADuDiAA7g4wAO4OUADuDmAA7hYQAO4WMADuFmAA7haAAO4WsADuFsAA7hbQAO4W4ADuFvAA7hcQAO4XMADuF0AA7hdQAO4XcADuF4AA7h8wAO4fUADuH3AA7h+QAO4fwADuH9AA7h/gAO4f8ADuIAAA7iAgAO4gQADuIFAA7iBgAO4ggADuIJAA7ihAAO4oYADuKIAA7iigAO4o0ADuKOAA7ijwAO4pAADuKRAA7ikwAO4pUADuKWAA7ilwAO4pkADuKaAA7jFQAO4xcADuMaAA7jHAAO4x8ADuMgAA7jIQAO4yIADuMjAA7jJQAO4ycADuMoAA7jKQAO4ysADuMsAA7jvwAO4+IADuQCAA7kIgAO5CQADuQmAA7kKAAO5CoADuQtAA7kLgAO5C8ADuQyAA7kMwAO5DUADuQ2AA7kOAAO5DsADuQ8AA7kPQAO5EAADuRBAA7kSgAO5GMADuRsAA7kbgAO5HAADuR5AA7kfAAO5H8ADuSBAA7kygAO5O4ADuUVAA7lOQAO5TwADuU+AA7lQAAO5UIADuVEAA7lRgAO5UcADuVKAA7lYwAO5YQADuWGAA7liAAO5YoADuWMAA7ljgAO5ZAADuWSAA7llAAO5bUADuW4AA7luwAO5b4ADuXBAA7lxAAO5ccADuXKAA7lzQAO5c8ADuZKAA7mTAAO5k4ADuZQAA7mUwAO5lQADuZVAA7mVgAO5lcADuZZAA7mWwAO5lwADuZdAA7mXwAO5mAADubbAA7m3QAO5t8ADubhAA7m5AAO5uUADubmAA7m5wAO5ugADubqAA7m7AAO5u0ADubuAA7m8AAO5vEADudsAA7nbgAO53EADudzAA7ndgAO53cADud4AA7neQAO53oADud8AA7nfgAO538ADueAAA7nggAO54MADuecAA7nnQAO554ADuegAA7oGwAO6B0ADugfAA7oIQAO6CQADuglAA7oJgAO6CcADugoAA7oKgAO6CwADugtAA7oLgAO6DAADugxAA7orAAO6K4ADuiwAA7osgAO6LUADui2AA7otwAO6LgADui5AA7ouwAO6L0ADui+AA7ovwAO6MEADujCAA7pPQAO6T8ADulBAA7pQwAO6UYADulHAA7pSAAO6UkADulKAA7pTAAO6U4ADulPAA7pUAAO6VIADulTAA7pzgAO6dAADunSAA7p1AAO6dcADunYAA7p2QAO6doADunbAA7p3QAO6d8ADungAA7p4QAO6eMADunkAA7qXwAO6mEADupjAA7qZQAO6mgADuppAA7qagAO6msADupsAA7qbgAO6nAADupxAA7qcgAO6nQADup1AA7qvgAO6uIADusJAA7rLQAO6zAADusyAA7rNAAO6zYADus4AA7rOgAO6zsADus+AA7rVwAO63QADut2AA7reAAO63oADut8AA7rfgAO64AADuuCAA7rnwAO66IADuulAA7rqAAO66sADuuuAA7rsQAO67QADuu2AA7sMQAO7DMADuw1AA7sNwAO7DoADuw7AA7sPAAO7D0ADuw+AA7sQAAO7EIADuxDAA7sRAAO7EYADuxHAA7swgAO7MQADuzGAA7syAAO7MsADuzMAA7szQAO7M4ADuzPAA7s0QAO7NMADuzUAA7s1QAO7NcADuzYAA7tUwAO7VUADu1XAA7tWQAO7VwADu1dAA7tXgAO7V8ADu1gAA7tYgAO7WQADu1lAA7tZgAO7WgADu1pAA7t5AAO7eYADu3pAA7t6wAO7e4ADu3vAA7t8AAO7fEADu3yAA7t9AAO7fYADu33AA7t+AAO7foADu37AA7udgAO7ngADu56AA7ufAAO7n8ADu6AAA7ugQAO7oIADu6DAA7uhQAO7ocADu6IAA7uiQAO7osADu6MAA7vBwAO7wkADu8LAA7vDQAO7xAADu8RAA7vEgAO7xMADu8UAA7vFgAO7xgADu8ZAA7vGgAO7xwADu8dAA7vmAAO75oADu+cAA7vngAO76EADu+iAA7vowAO76QADu+lAA7vpwAO76kADu+qAA7vqwAO760ADu+uAA7wQQAO8GQADvCEAA7wpAAO8KYADvCoAA7wqgAO8KwADvCvAA7wsAAO8LEADvC0AA7wtQAO8LcADvC4AA7wuwAO8L4ADvC/AA7wwAAO8MMADvDEAA7wyQAO8OIADvDrAA7w7QAO8O8ADvD4AA7w+wAO8P4ADvEAAA7xSQAO8W0ADvGUAA7xuAAO8bsADvG9AA7xvwAO8cEADvHDAA7xxQAO8cYADvHJAA7x4gAO8gMADvIFAA7yBwAO8gkADvILAA7yDQAO8g8ADvIRAA7yEwAO8jQADvI3AA7yOgAO8j0ADvJAAA7yQwAO8kYADvJJAA7yTAAO8k4ADvLJAA7yywAO8s0ADvLPAA7y0gAO8tMADvLUAA7y1QAO8tYADvLYAA7y2gAO8tsADvLcAA7y3gAO8t8ADvNaAA7zXAAO814ADvNgAA7zYwAO82QADvNlAA7zZgAO82cADvNpAA7zawAO82wADvNtAA7zbwAO83AADvPrAA7z7QAO8/AADvPyAA7z9QAO8/YADvP3AA7z+AAO8/kADvP7AA7z/QAO8/4ADvP/AA70AQAO9AIADvQbAA70HAAO9B0ADvQfAA70mgAO9JwADvSeAA70oAAO9KMADvSkAA70pQAO9KYADvSnAA70qQAO9KsADvSsAA70rQAO9K8ADvSwAA71KwAO9S0ADvUvAA71MQAO9TQADvU1AA71NgAO9TcADvU4AA71OgAO9TwADvU9AA71PgAO9UAADvVBAA71vAAO9b4ADvXAAA71wgAO9cUADvXGAA71xwAO9cgADvXJAA71ywAO9c0ADvXOAA71zwAO9dEADvXSAA72TQAO9k8ADvZRAA72UwAO9lYADvZXAA72WAAO9lkADvZaAA72XAAO9l4ADvZfAA72YAAO9mIADvZjAA723gAO9uAADvbiAA725AAO9ucADvboAA726QAO9uoADvbrAA727QAO9u8ADvbwAA728QAO9vMADvb0AA73PQAO92EADveIAA73rAAO968ADvexAA73swAO97UADve3AA73uQAO97oADve9AA731gAO9/MADvf1AA739wAO9/kADvf7AA73/QAO9/8ADvgBAA74HgAO+CEADvgkAA74JwAO+CoADvgtAA74MAAO+DMADvg1AA74sAAO+LIADvi0AA74tgAO+LkADvi6AA74uwAO+LwADvi9AA74vwAO+MEADvjCAA74wwAO+MUADvjGAA75QQAO+UMADvlFAA75RwAO+UoADvlLAA75TAAO+U0ADvlOAA75UAAO+VIADvlTAA75VAAO+VYADvlXAA750gAO+dQADvnWAA752AAO+dsADvncAA753QAO+d4ADvnfAA754QAO+eMADvnkAA755QAO+ecADvnoAA76YwAO+mUADvpoAA76agAO+m0ADvpuAA76bwAO+nAADvpxAA76cwAO+nUADvp2AA76dwAO+nkADvp6AA769QAO+vcADvr5AA76+wAO+v4ADvr/AA77AAAO+wEADvsCAA77BAAO+wYADvsHAA77CAAO+woADvsLAA77hgAO+4gADvuKAA77jAAO+48ADvuQAA77kQAO+5IADvuTAA77lQAO+5cADvuYAA77mQAO+5sADvucAA78FwAO/BkADvwcAA78HgAO/CEADvwiAA78IwAO/CQADvwlAA78JwAO/CkADvwqAA78KwAO/C0ADvwuAA78wQAO/OQADv0EAA79JAAO/SYADv0oAA79KgAO/SwADv0vAA79MAAO/TEADv00AA79NQAO/TcADv04AA79OgAO/T0ADv0+AA79PwAO/UIADv1DAA79SAAO/WEADv1qAA79bAAO/W4ADv13AA79egAO/X0ADv1/AA79yAAO/ewADv4TAA7+NwAO/joADv48AA7+PgAO/kAADv5CAA7+RAAO/kUADv5IAA7+YQAO/oIADv6EAA7+hgAO/ogADv6KAA7+jAAO/o4ADv6QAA7+kgAO/rMADv62AA7+uQAO/rwADv6/AA7+wgAO/sUADv7IAA7+ywAO/s0ADv9IAA7/SgAO/0wADv9OAA7/UQAO/1IADv9TAA7/VAAO/1UADv9XAA7/WQAO/1oADv9bAA7/XQAO/14ADv/ZAA7/2wAO/90ADv/fAA7/4gAO/+MADv/kAA7/5QAO/+YADv/oAA7/6gAO/+sADv/sAA7/7gAO/+8ADwBqAA8AbAAPAG8ADwBxAA8AdAAPAHUADwB2AA8AdwAPAHgADwB6AA8AfAAPAH0ADwB+AA8AgAAPAIEADwCaAA8AmwAPAJwADwCeAA8BGQAPARsADwEdAA8BHwAPASIADwEjAA8BJAAPASUADwEmAA8BKAAPASoADwErAA8BLAAPAS4ADwEvAA8BqgAPAawADwGuAA8BsAAPAbMADwG0AA8BtQAPAbYADwG3AA8BuQAPAbsADwG8AA8BvQAPAb8ADwHAAA8COwAPAj0ADwI/AA8CQQAPAkQADwJFAA8CRgAPAkcADwJIAA8CSgAPAkwADwJNAA8CTgAPAlAADwJRAA8CzAAPAs4ADwLQAA8C0gAPAtUADwLWAA8C1wAPAtgADwLZAA8C2wAPAt0ADwLeAA8C3wAPAuEADwLiAA8DXQAPA18ADwNhAA8DYwAPA2YADwNnAA8DaAAPA2kADwNqAA8DbAAPA24ADwNvAA8DcAAPA3IADwNzAA8DvAAPA+AADwQHAA8EKwAPBC4ADwQwAA8EMgAPBDQADwQ2AA8EOAAPBDkADwQ8AA8EVQAPBHIADwR0AA8EdgAPBHgADwR6AA8EfAAPBH4ADwSAAA8EnQAPBKAADwSjAA8EpgAPBKkADwSsAA8ErwAPBLIADwS0AA8FLwAPBTEADwU0AA8FNgAPBTkADwU6AA8FOwAPBTwADwU9AA8FPwAPBUEADwVCAA8FQwAPBUUADwVGAA8FwQAPBcMADwXFAA8FxwAPBcoADwXLAA8FzAAPBc0ADwXOAA8F0AAPBdIADwXTAA8F1AAPBdYADwXXAA8GUgAPBlQADwZWAA8GWAAPBlsADwZcAA8GXQAPBl4ADwZfAA8GYQAPBmMADwZkAA8GZQAPBmcADwZoAA8G4wAPBuUADwboAA8G6gAPBu0ADwbuAA8G7wAPBvAADwbxAA8G8wAPBvUADwb2AA8G9wAPBvkADwb6AA8HdQAPB3cADwd5AA8HewAPB34ADwd/AA8HgAAPB4EADweCAA8HhAAPB4YADweHAA8HiAAPB4oADweLAA8IBgAPCAgADwgKAA8IDAAPCA8ADwgQAA8IEQAPCBIADwgTAA8IFQAPCBcADwgYAA8IGQAPCBsADwgcAA8IlwAPCJkADwibAA8InQAPCKAADwihAA8IogAPCKMADwikAA8IpgAPCKgADwipAA8IqgAPCKwADwitAA8IvgAPCL8ADwjBAA8JPAAPCT4ADwlAAA8JQgAPCUUADwlGAA8JRwAPCUgADwlJAA8JSwAPCU0ADwlOAA8JTwAPCVEADwlSAA8JzQAPCc8ADwnRAA8J0wAPCdYADwnXAA8J2AAPCdkADwnaAA8J3AAPCd4ADwnfAA8J4AAPCeIADwnjAA8KXgAPCmAADwpjAA8KZQAPCmgADwppAA8KagAPCmsADwpsAA8KbgAPCnAADwpxAA8KcgAPCnQADwp1AA8LCAAPCysADwtLAA8LawAPC20ADwtvAA8LcQAPC3MADwt2AA8LdwAPC3gADwt7AA8LfAAPC34ADwt/AA8LgQAPC4QADwuFAA8LhgAPC4kADwuKAA8LjwAPC6gADwuxAA8LswAPC7UADwu+AA8LwQAPC8QADwvGAA8MDwAPDDMADwxaAA8MfgAPDIEADwyDAA8MhQAPDIcADwyJAA8MiwAPDIwADwyPAA8MqAAPDMkADwzLAA8MzQAPDM8ADwzRAA8M0wAPDNUADwzXAA8M2QAPDPoADwz9AA8NAAAPDQMADw0GAA8NCQAPDQwADw0PAA8NEgAPDRQADw2PAA8NkQAPDZMADw2VAA8NmAAPDZkADw2aAA8NmwAPDZwADw2eAA8NoAAPDaEADw2iAA8NpAAPDaUADw4gAA8OIgAPDiQADw4mAA8OKQAPDioADw4rAA8OLAAPDi0ADw4vAA8OMQAPDjIADw4zAA8ONQAPDjYADw6xAA8OswAPDrYADw64AA8OuwAPDrwADw69AA8OvgAPDr8ADw7BAA8OwwAPDsQADw7FAA8OxwAPDsgADw7hAA8O4gAPDuMADw7lAA8PYAAPD2IADw9kAA8PZgAPD2kADw9qAA8PawAPD2wADw9tAA8PbwAPD3EADw9yAA8PcwAPD3UADw92AA8P8QAPD/MADw/1AA8P9wAPD/oADw/7AA8P/AAPD/0ADw/+AA8QAAAPEAIADxADAA8QBAAPEAYADxAHAA8QggAPEIQADxCGAA8QiAAPEIsADxCMAA8QjQAPEI4ADxCPAA8QkQAPEJMADxCUAA8QlQAPEJcADxCYAA8REwAPERUADxEXAA8RGQAPERwADxEdAA8RHgAPER8ADxEgAA8RIgAPESQADxElAA8RJgAPESgADxEpAA8RpAAPEaYADxGoAA8RqgAPEa0ADxGuAA8RrwAPEbAADxGxAA8RswAPEbUADxG2AA8RtwAPEbkADxG6AA8SAwAPEicADxJOAA8ScgAPEnUADxJ3AA8SeQAPEnsADxJ9AA8SfwAPEoAADxKDAA8SnAAPErkADxK7AA8SvQAPEr8ADxLBAA8SwwAPEsUADxLHAA8S5AAPEucADxLqAA8S7QAPEvAADxLzAA8S9gAPEvkADxL7AA8TdgAPE3gADxN6AA8TfAAPE38ADxOAAA8TgQAPE4IADxODAA8ThQAPE4cADxOIAA8TiQAPE4sADxOMAA8UBwAPFAkADxQLAA8UDQAPFBAADxQRAA8UEgAPFBMADxQUAA8UFgAPFBgADxQZAA8UGgAPFBwADxQdAA8UmAAPFJoADxScAA8UngAPFKEADxSiAA8UowAPFKQADxSlAA8UpwAPFKkADxSqAA8UqwAPFK0ADxSuAA8VKQAPFSsADxUuAA8VMAAPFTMADxU0AA8VNQAPFTYADxU3AA8VOQAPFTsADxU8AA8VPQAPFT8ADxVAAA8VuwAPFb0ADxW/AA8VwQAPFcQADxXFAA8VxgAPFccADxXIAA8VygAPFcwADxXNAA8VzgAPFdAADxXRAA8WTAAPFk4ADxZQAA8WUgAPFlUADxZWAA8WVwAPFlgADxZZAA8WWwAPFl0ADxZeAA8WXwAPFmEADxZiAA8W3QAPFt8ADxbhAA8W4wAPFuYADxbnAA8W6AAPFukADxbqAA8W7AAPFu4ADxbvAA8W8AAPFvIADxbzAA8XhgAPF6kADxfJAA8X6QAPF+sADxftAA8X7wAPF/EADxf0AA8X9QAPF/YADxf5AA8X+gAPF/wADxf9AA8X/wAPGAIADxgDAA8YBAAPGAcADxgIAA8YDQAPGCYADxgvAA8YMQAPGDMADxg8AA8YPwAPGEIADxhEAA8YjQAPGLEADxjYAA8Y/AAPGP8ADxkBAA8ZAwAPGQUADxkHAA8ZCQAPGQoADxkNAA8ZJgAPGUcADxlJAA8ZSwAPGU0ADxlPAA8ZUQAPGVMADxlVAA8ZVwAPGXgADxl7AA8ZfgAPGYEADxmEAA8ZhwAPGYoADxmNAA8ZkAAPGZIADxoNAA8aDwAPGhEADxoTAA8aFgAPGhcADxoYAA8aGQAPGhoADxocAA8aHgAPGh8ADxogAA8aIgAPGiMADxqeAA8aoAAPGqIADxqkAA8apwAPGqgADxqpAA8aqgAPGqsADxqtAA8arwAPGrAADxqxAA8aswAPGrQADxsvAA8bMQAPGzQADxs2AA8bOQAPGzoADxs7AA8bPAAPGz0ADxs/AA8bQQAPG0IADxtDAA8bRQAPG0YADxtfAA8bYAAPG2EADxtjAA8b3gAPG+AADxviAA8b5AAPG+cADxvoAA8b6QAPG+oADxvrAA8b7QAPG+8ADxvwAA8b8QAPG/MADxv0AA8cbwAPHHEADxxzAA8cdQAPHHgADxx5AA8cegAPHHsADxx8AA8cfgAPHIAADxyBAA8cggAPHIQADxyFAA8dAAAPHQIADx0EAA8dBgAPHQkADx0KAA8dCwAPHQwADx0NAA8dDwAPHREADx0SAA8dEwAPHRUADx0WAA8dkQAPHZMADx2VAA8dlwAPHZoADx2bAA8dnAAPHZ0ADx2eAA8doAAPHaIADx2jAA8dpAAPHaYADx2nAA8eIgAPHiQADx4mAA8eKAAPHisADx4sAA8eLQAPHi4ADx4vAA8eMQAPHjMADx40AA8eNQAPHjcADx44AA8egQAPHqUADx7MAA8e8AAPHvMADx71AA8e9wAPHvkADx77AA8e/QAPHv4ADx8BAA8fGgAPHzcADx85AA8fOwAPHz0ADx8/AA8fQQAPH0MADx9FAA8fYgAPH2UADx9oAA8fawAPH24ADx9xAA8fdAAPH3cADx95AA8f9AAPH/YADx/4AA8f+gAPH/0ADx/+AA8f/wAPIAAADyABAA8gAwAPIAUADyAGAA8gBwAPIAkADyAKAA8ghQAPIIcADyCJAA8giwAPII4ADyCPAA8gkAAPIJEADyCSAA8glAAPIJYADyCXAA8gmAAPIJoADyCbAA8hFgAPIRgADyEaAA8hHAAPIR8ADyEgAA8hIQAPISIADyEjAA8hJQAPIScADyEoAA8hKQAPISsADyEsAA8hpwAPIakADyGsAA8hrgAPIbEADyGyAA8hswAPIbQADyG1AA8htwAPIbkADyG6AA8huwAPIb0ADyG+AA8iOQAPIjsADyI9AA8iPwAPIkIADyJDAA8iRAAPIkUADyJGAA8iSAAPIkoADyJLAA8iTAAPIk4ADyJPAA8iygAPIswADyLOAA8i0AAPItMADyLUAA8i1QAPItYADyLXAA8i2QAPItsADyLcAA8i3QAPIt8ADyLgAA8jWwAPI10ADyNfAA8jYQAPI2QADyNlAA8jZgAPI2cADyNoAA8jagAPI2wADyNtAA8jbgAPI3AADyNxAA8jggAPI4MADyOFAA8jlgAPI6MADyOmAA8jqQAPI6wADyOuAA8j5wAPI+oADyPsAA8j7gAPI/AADyPzAA8j9gAPI/sADyQ0AA8kNwAPJDkADyQ8AA8kPwAPJEIADyRFAA8kyAAPJOwADyUQAA8lMwAPJVoADyV6AA8loQAPJcgADyXoAA8mDAAPJjAADyYyAA8mNQAPJjcADyY5AA8mOwAPJj4ADyZBAA8mQwAPJkUADyZIAA8mSgAPJkwADyZPAA8mUgAPJlMADyZcAA8mdQAPJnoADyZ8AA8mgQAPJoQADyaGAA8mzwAPJvMADycaAA8nPgAPJ0EADydDAA8nRQAPJ0cADydJAA8nSwAPJ0wADydPAA8naAAPJ40ADyePAA8nkQAPJ5MADyeVAA8nlwAPJ5kADyebAA8nnQAPJ58ADyfEAA8nxwAPJ8oADyfNAA8n0AAPJ9MADyfWAA8n2QAPJ9wADyffAA8n4QAPKFwADyheAA8oYQAPKGMADyhmAA8oZwAPKGgADyhpAA8oagAPKGwADyhuAA8obwAPKHAADyhyAA8ocwAPKIQADyiFAA8ohwAPKQIADykEAA8pBgAPKQgADykLAA8pDAAPKQ0ADykOAA8pDwAPKREADykTAA8pFAAPKRUADykXAA8pGAAPKZMADymVAA8pmAAPKZoADymdAA8pngAPKZ8ADymgAA8poQAPKaMADymlAA8ppgAPKacADympAA8pqgAPKbsADym8AA8pvgAPKjkADyo7AA8qPQAPKj8ADypCAA8qQwAPKkQADypFAA8qRgAPKkgADypKAA8qSwAPKkwADypOAA8qTwAPKsoADyrMAA8qzwAPKtEADyrUAA8q1QAPKtYADyrXAA8q2AAPKtoADyrcAA8q3QAPKt4ADyrgAA8q4QAPKvIADyrzAA8q9QAPK3AADytyAA8rdAAPK3YADyt5AA8regAPK3sADyt8AA8rfQAPK38ADyuBAA8rggAPK4MADyuFAA8rhgAPLAEADywDAA8sBgAPLAgADywLAA8sDAAPLA0ADywOAA8sDwAPLBEADywTAA8sFAAPLBUADywXAA8sGAAPLDEADywyAA8sMwAPLDUADyywAA8ssgAPLLQADyy2AA8suQAPLLoADyy7AA8svAAPLL0ADyy/AA8swQAPLMIADyzDAA8sxQAPLMYADy1BAA8tQwAPLUYADy1IAA8tSwAPLUwADy1NAA8tTgAPLU8ADy1RAA8tUwAPLVQADy1VAA8tVwAPLVgADy12AA8tjwAPLZgADy2bAA8tngAPLacADy2qAA8trQAPLa8ADy3MAA8t4QAPLnQADy6XAA8utwAPLtcADy7ZAA8u2wAPLt0ADy7fAA8u4gAPLuMADy7kAA8u5wAPLugADy7qAA8u6wAPLu0ADy7wAA8u8QAPLvIADy71AA8u9gAPLvsADy8UAA8vHQAPLx8ADy8hAA8vKgAPLy0ADy8wAA8vMgAPL3sADy+fAA8vxgAPL+oADy/tAA8v7wAPL/EADy/zAA8v9QAPL/cADy/4AA8v+wAPMBQADzA1AA8wNwAPMDkADzA7AA8wPQAPMD8ADzBBAA8wQwAPMEUADzBmAA8waQAPMGwADzBvAA8wcgAPMHUADzB4AA8wewAPMH4ADzCAAA8w+wAPMP0ADzD/AA8xAQAPMQQADzEFAA8xBgAPMQcADzEIAA8xCgAPMQwADzENAA8xDgAPMRAADzERAA8xjAAPMY4ADzGQAA8xkgAPMZUADzGWAA8xlwAPMZgADzGZAA8xmwAPMZ0ADzGeAA8xnwAPMaEADzGiAA8yHQAPMh8ADzIiAA8yJAAPMicADzIoAA8yKQAPMioADzIrAA8yLQAPMi8ADzIwAA8yMQAPMjMADzI0AA8yTQAPMk4ADzJPAA8yUQAPMswADzLOAA8y0AAPMtIADzLVAA8y1gAPMtcADzLYAA8y2QAPMtsADzLdAA8y3gAPMt8ADzLhAA8y4gAPM10ADzNfAA8zYQAPM2MADzNmAA8zZwAPM2gADzNpAA8zagAPM2wADzNuAA8zbwAPM3AADzNyAA8zcwAPM+4ADzPwAA8z8gAPM/QADzP3AA8z+AAPM/kADzP6AA8z+wAPM/0ADzP/AA80AAAPNAEADzQDAA80BAAPNH8ADzSBAA80gwAPNIUADzSIAA80iQAPNIoADzSLAA80jAAPNI4ADzSQAA80kQAPNJIADzSUAA80lQAPNRAADzUSAA81FAAPNRYADzUZAA81GgAPNRsADzUcAA81HQAPNR8ADzUhAA81IgAPNSMADzUlAA81JgAPNW8ADzWTAA81ugAPNd4ADzXhAA814wAPNeUADzXnAA816QAPNesADzXsAA817wAPNggADzYlAA82JwAPNikADzYrAA82LQAPNi8ADzYxAA82MwAPNlAADzZTAA82VgAPNlkADzZcAA82XwAPNmIADzZlAA82ZwAPNuIADzbkAA825gAPNugADzbrAA827AAPNu0ADzbuAA827wAPNvEADzbzAA829AAPNvUADzb3AA82+AAPN3MADzd1AA83dwAPN3kADzd8AA83fQAPN34ADzd/AA83gAAPN4IADzeEAA83hQAPN4YADzeIAA83iQAPOAQADzgGAA84CAAPOAoADzgNAA84DgAPOA8ADzgQAA84EQAPOBMADzgVAA84FgAPOBcADzgZAA84GgAPOJUADziXAA84mQAPOJsADzieAA84nwAPOKAADzihAA84ogAPOKQADzimAA84pwAPOKgADziqAA84qwAPOSYADzkoAA85KgAPOSwADzkvAA85MAAPOTEADzkyAA85MwAPOTUADzk3AA85OAAPOTkADzk7AA85PAAPObcADzm5AA85uwAPOb0ADznAAA85wQAPOcIADznDAA85xAAPOcYADznIAA85yQAPOcoADznMAA85zQAPOkgADzpKAA86TAAPOk4ADzpRAA86UgAPOlMADzpUAA86VQAPOlcADzpZAA86WgAPOlsADzpdAA86XgAPOvEADzsUAA87NAAPO1QADztWAA87WAAPO1oADztcAA87XwAPO2AADzthAA87ZAAPO2UADztnAA87aAAPO2sADztuAA87bwAPO3AADztzAA87dAAPO3kADzuSAA87mwAPO50ADzufAA87qAAPO6sADzuuAA87sAAPO/kADzwdAA88RAAPPGgADzxrAA88bQAPPG8ADzxxAA88cwAPPHUADzx2AA88eQAPPJIADzyzAA88tQAPPLcADzy5AA88uwAPPL0ADzy/AA88wQAPPMMADzzkAA885wAPPOoADzztAA888AAPPPMADzz2AA88+QAPPPwADzz+AA89eQAPPXsADz19AA89fwAPPYIADz2DAA89hAAPPYUADz2GAA89iAAPPYoADz2LAA89jAAPPY4ADz2PAA8+CgAPPgwADz4OAA8+EAAPPhMADz4UAA8+FQAPPhYADz4XAA8+GQAPPhsADz4cAA8+HQAPPh8ADz4gAA8+mwAPPp0ADz6gAA8+ogAPPqUADz6mAA8+pwAPPqgADz6pAA8+qwAPPq0ADz6uAA8+rwAPPrEADz6yAA8+ywAPPswADz7NAA8+zwAPP0oADz9MAA8/TgAPP1AADz9TAA8/VAAPP1UADz9WAA8/VwAPP1kADz9bAA8/XAAPP10ADz9fAA8/YAAPP9sADz/dAA8/3wAPP+EADz/kAA8/5QAPP+YADz/nAA8/6AAPP+oADz/sAA8/7QAPP+4ADz/wAA8/8QAPQGwAD0BuAA9AcAAPQHIAD0B1AA9AdgAPQHcAD0B4AA9AeQAPQHsAD0B9AA9AfgAPQH8AD0CBAA9AggAPQP0AD0D/AA9BAgAPQQQAD0EHAA9BCAAPQQkAD0EKAA9BCwAPQQ0AD0EPAA9BEAAPQREAD0ETAA9BFAAPQSYAD0GhAA9BowAPQaU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AD1LcAA9S3gAPUt8AD1NaAA9TXAAPU18AD1NhAA9TZAAPU2UAD1NmAA9TZwAPU2gAD1NqAA9TbAAPU20AD1NuAA9TcAAPU3EAD1OCAA9ThwAPU4oAD1OMAA9TkQAPVAwAD1QOAA9UEAAPVBIAD1QVAA9UFgAPVBcAD1QYAA9UGQAPVBsAD1QdAA9UHgAPVB8AD1QhAA9UIgAPVJ0AD1SfAA9UoQAPVKMAD1SmAA9UpwAPVKgAD1SpAA9UqgAPVKwAD1SuAA9UrwAPVLAAD1SyAA9UswAPVS4AD1UwAA9VMwAPVTUAD1U4AA9VOQAPVToAD1U7AA9VPAAPVT4AD1VAAA9VQQAPVUIAD1VEAA9VRQAPVVYAD1VXAA9VWQAPVdQAD1XWAA9V2AAPVdoAD1XdAA9V3gAPVd8AD1XgAA9V4QAPVeMAD1XlAA9V5gAPVecAD1XpAA9V6gAPVmUAD1ZnAA9WaQAPVmsAD1ZuAA9WbwAPVnAAD1ZxAA9WcgAPVnQAD1Z2AA9WdwAPVngAD1Z6AA9WewAPVvYAD1b4AA9W+wAPVv0AD1cAAA9XAQAPVwIAD1cDAA9XBAAPVwYAD1cIAA9XCQAPVwoAD1cMAA9XDQAPVx4AD1cjAA9XJgAPVygAD1ctAA9XqAAPV6oAD1esAA9XrgAPV7EAD1eyAA9XswAPV7QAD1e1AA9XtwAPV7kAD1e6AA9XuwAPV70AD1e+AA9YOQAPWDsAD1g9AA9YPwAPWEIAD1hDAA9YRAAPWEUAD1hGAA9YSAAPWEoAD1hLAA9YTAAPWE4AD1hPAA9YygAPWMwAD1jPAA9Y0QAPWNQAD1jVAA9Y1gAPWNcAD1jYAA9Y2gAPWNwAD1jdAA9Y3gAPWOAAD1jhAA9ZdAAPWZcAD1m3AA9Z1wAPWdkAD1nbAA9Z3QAPWd8AD1niAA9Z4wAPWeQAD1nnAA9Z6AAPWeoAD1nrAA9Z7gAPWfEAD1nyAA9Z8wAPWfYAD1n3AA9Z/AAPWhUAD1oeAA9aIAAPWiIAD1orAA9aLgAPWjEAD1ozAA9afAAPWqAAD1rHAA9a6wAPWu4AD1rwAA9a8gAPWvQAD1r2AA9a+AAPWvkAD1r8AA9bFQAPWzYAD1s4AA9bOgAPWzwAD1s+AA9bQAAPW0IAD1tEAA9bRgAPW2cAD1tqAA9bbQAPW3AAD1tzAA9bdgAPW3kAD1t8AA9bfwAPW4EAD1v8AA9b/gAPXAAAD1wCAA9cBQAPXAYAD1wHAA9cCAAPXAkAD1wLAA9cDQAPXA4AD1wPAA9cEQAPXBIAD1yNAA9cjwAPXJEAD1yTAA9clgAPXJcAD1yYAA9cmQAPXJoAD1ycAA9cngAPXJ8AD1ygAA9cogAPXKMAD10eAA9dIAAPXSMAD10lAA9dKAAPXSkAD10qAA9dKwAPXSwAD10uAA9dMAAPXTEAD10yAA9dNAAPXTUAD11OAA9dTwAPXVAAD11SAA9dzQAPXc8AD13RAA9d0wAPXdYAD13XAA9d2AAPXdkAD13aAA9d3AAPXd4AD13fAA9d4AAPXeIAD13jAA9eXgAPXmAAD15iAA9eZAAPXmcAD15oAA9eaQAPXmoAD15rAA9ebQAPXm8AD15wAA9ecQAPXnMAD150AA9e7wAPXvEAD17zAA9e9QAPXvgAD175AA9e+gAPXvsAD178AA9e/gAPXwAAD18BAA9fAgAPXwQAD18FAA9fgAAPX4IAD1+EAA9fhgAPX4kAD1+KAA9fiwAPX4wAD1+NAA9fjwAPX5EAD1+SAA9fkwAPX5UAD1+WAA9gEQAPYBMAD2AVAA9gFwAPYBoAD2AbAA9gHAAPYB0AD2AeAA9gIAAPYCIAD2AjAA9gJAAPYCYAD2AnAA9gcAAPYJQAD2C7AA9g3wAPYOIAD2DkAA9g5gAPYOgAD2DqAA9g7AAPYO0AD2DwAA9hCQAPYSYAD2EoAA9hKgAPYSwAD2EuAA9hMAAPYTIAD2E0AA9hUQAPYVQAD2FXAA9hWgAPYV0AD2FgAA9hYwAPYWYAD2FoAA9h4wAPYeUAD2HnAA9h6QAPYewAD2HtAA9h7gAPYe8AD2HwAA9h8gAPYfQAD2H1AA9h9gAPYfgAD2H5AA9idAAPYnYAD2J5AA9iewAPYn4AD2J/AA9igAAPYoEAD2KCAA9ihAAPYoYAD2KHAA9iiAAPYooAD2KLAA9jBgAPYwgAD2MKAA9jDAAPYw8AD2MQAA9jEQAPYxIAD2MTAA9jFQAPYxcAD2MYAA9jGQAPYxsAD2McAA9jlwAPY5kAD2OcAA9jngAPY6EAD2OiAA9jowAPY6QAD2OlAA9jpwAPY6kAD2OqAA9jqwAPY60AD2OuAA9kMQAPZFUAD2R5AA9knAAPZMMAD2TjAA9lCgAPZTEAD2VRAA9ldQAPZZkAD2WbAA9lngAPZaAAD2WiAA9lpAAPZacAD2WqAA9lrAAPZa4AD2WxAA9lswAPZbUAD2W4AA9luwAPZbwAD2XBAA9l2gAPZd8AD2XhAA9l5gAPZekAD2XrAA9mNAAPZlgAD2Z/AA9mowAPZqYAD2aoAA9mqgAPZqwAD2auAA9msAAPZrEAD2a0AA9mzQAPZvIAD2b0AA9m9gAPZvgAD2b6AA9m/AAPZv4AD2cAAA9nAgAPZwQAD2cpAA9nLAAPZy8AD2cyAA9nNQAPZzgAD2c7AA9nPgAPZ0EAD2dEAA9nRgAPZ8EAD2fDAA9nxgAPZ8gAD2fLAA9nzAAPZ80AD2fOAA9nzwAPZ9EAD2fTAA9n1AAPZ9UAD2fXAA9n2AAPZ+kAD2fqAA9n7AAPaGcAD2hpAA9oawAPaG0AD2hwAA9ocQAPaHIAD2hzAA9odAAPaHYAD2h4AA9oeQAPaHoAD2h8AA9ofQAPaPgAD2j6AA9o/QAPaP8AD2kCAA9pAwAPaQQAD2kFAA9pBgAPaQgAD2kKAA9pCwAPaQwAD2kOAA9pDwAPaSAAD2khAA9pIwAPaZ4AD2mgAA9pogAPaaQAD2mnAA9pqAAPaakAD2mqAA9pqwAPaa0AD2mvAA9psAAPabEAD2mzAA9ptAAPai8AD2oxAA9qNAAPajYAD2o5AA9qOgAPajsAD2o8AA9qPQAPaj8AD2pBAA9qQgAPakMAD2pFAA9qRgAPalcAD2pYAA9qWgAPatUAD2rXAA9q2QAPatsAD2reAA9q3wAPauAAD2rhAA9q4gAPauQAD2rmAA9q5wAPaugAD2rqAA9q6wAPa2YAD2toAA9rawAPa20AD2twAA9rcQAPa3IAD2tzAA9rdAAPa3YAD2t4AA9reQAPa3oAD2t8AA9rfQAPa5YAD2uXAA9rmAAPa5oAD2wVAA9sFwAPbBkAD2wbAA9sHgAPbB8AD2wgAA9sIQAPbCIAD2wkAA9sJgAPbCcAD2woAA9sKgAPbCsAD2ymAA9sqAAPbKsAD2ytAA9ssAAPbLEAD2yyAA9sswAPbLQAD2y2AA9suAAPbLkAD2y6AA9svAAPbL0AD2zjAA9s/AAPbQ0AD20QAA9tEwAPbRYAD20ZAA9tKgAPbS0AD20wAA9tMwAPbTYAD204AA9tQAAPbU8AD23iAA9uBQAPbiUAD25FAA9uRwAPbkkAD25LAA9uTQAPblAAD25RAA9uUgAPblUAD25WAA9uWAAPblkAD25bAA9uXgAPbl8AD25gAA9uYwAPbmQAD25tAA9uhgAPbo8AD26RAA9ukwAPbpwAD26fAA9uogAPbqQAD27tAA9vEQAPbzgAD29cAA9vXwAPb2EAD29jAA9vZQAPb2cAD29pAA9vagAPb20AD2+GAA9vpwAPb6kAD2+rAA9vrQAPb68AD2+xAA9vswAPb7UAD2+3AA9v2AAPb9sAD2/eAA9v4QAPb+QAD2/nAA9v6gAPb+0AD2/wAA9v8gAPcG0AD3BvAA9wcQAPcHMAD3B2AA9wdwAPcHgAD3B5AA9wegAPcHwAD3B+AA9wfwAPcIAAD3CCAA9wgwAPcP4AD3EAAA9xAgAPcQQAD3EHAA9xCAAPcQkAD3EKAA9xCwAPcQ0AD3EPAA9xEAAPcREAD3ETAA9xFAAPcY8AD3GRAA9xlAAPcZYAD3GZAA9xmgAPcZsAD3GcAA9xnQAPcZ8AD3GhAA9xogAPcaMAD3GlAA9xpgAPcb8AD3HAAA9xwQAPccMAD3I+AA9yQAAPckIAD3JEAA9yRwAPckgAD3JJAA9ySgAPcksAD3JNAA9yTwAPclAAD3JRAA9yUwAPclQAD3LPAA9y0QAPctMAD3LVAA9y2AAPctkAD3LaAA9y2wAPctwAD3LeAA9y4AAPcuEAD3LiAA9y5AAPcuUAD3NgAA9zYgAPc2QAD3NmAA9zaQAPc2oAD3NrAA9zbAAPc20AD3NvAA9zcQAPc3IAD3NzAA9zdQAPc3YAD3PxAA9z8wAPc/UAD3P3AA9z+gAPc/sAD3P8AA9z/QAPc/4AD3QAAA90AgAPdAMAD3QEAA90BgAPdAcAD3SCAA90hAAPdIYAD3SIAA90iwAPdIwAD3SNAA90jgAPdI8AD3SRAA90kwAPdJQAD3SVAA90lwAPdJgAD3ThAA91BQAPdSwAD3VQAA91UwAPdVUAD3VXAA91WQAPdVsAD3VdAA91XgAPdWEAD3V6AA91lwAPdZkAD3WbAA91nQAPdZ8AD3WhAA91owAPdaUAD3XCAA91xQAPdcgAD3XLAA91zgAPddEAD3XUAA911wAPddkAD3ZUAA92VgAPdlgAD3ZaAA92XQAPdl4AD3ZfAA92YAAPdmEAD3ZjAA92ZQAPdmYAD3ZnAA92aQAPdmoAD3blAA925wAPdukAD3brAA927gAPdu8AD3bwAA928QAPdvIAD3b0AA929gAPdvcAD3b4AA92+gAPdvsAD3d2AA93eAAPd3oAD3d8AA93fwAPd4AAD3eBAA93ggAPd4MAD3eFAA93hwAPd4gAD3eJAA93iwAPd4wAD3gHAA94CQAPeAwAD3gOAA94EQAPeBIAD3gTAA94FAAPeBUAD3gXAA94GQAPeBoAD3gbAA94HQAPeB4AD3iZAA94mwAPeJ0AD3ifAA94ogAPeKMAD3ikAA94pQAPeKYAD3ioAA94qgAPeKsAD3isAA94rgAPeK8AD3kqAA95LAAPeS4AD3kwAA95MwAPeTQAD3k1AA95NgAPeTcAD3k5AA95OwAPeTwAD3k9AA95PwAPeUAAD3m7AA95vQAPeb8AD3nBAA95xAAPecUAD3nGAA95xwAPecgAD3nKAA95zAAPec0AD3nOAA950AAPedEAD3pkAA96hwAPeqcAD3rHAA96yQAPessAD3rNAA96zwAPetIAD3rTAA961AAPetcAD3rYAA962gAPetsAD3rdAA964AAPeuEAD3riAA965QAPeuYAD3rrAA97BAAPew0AD3sPAA97EQAPexoAD3sdAA97IAAPeyIAD3trAA97jwAPe7YAD3vaAA973QAPe98AD3vhAA974wAPe+UAD3vnAA976AAPe+sAD3wEAA98JQAPfCcAD3wpAA98KwAPfC0AD3wvAA98MQAPfDMAD3w1AA98VgAPfFkAD3xcAA98XwAPfGIAD3xlAA98aAAPfGsAD3xuAA98cAAPfOsAD3ztAA987wAPfPEAD3z0AA989QAPfPYAD3z3AA98+AAPfPoAD3z8AA98/QAPfP4AD30AAA99AQAPfXwAD31+AA99gAAPfYIAD32FAA99hgAPfYcAD32IAA99iQAPfYsAD32NAA99jgAPfY8AD32RAA99kgAPfg0AD34PAA9+EgAPfhQAD34XAA9+GAAPfhkAD34aAA9+GwAPfh0AD34fAA9+IAAPfiEAD34jAA9+JAAPfj0AD34+AA9+PwAPfkEAD368AA9+vgAPfsAAD37CAA9+xQAPfsYAD37HAA9+yAAPfskAD37LAA9+zQAPfs4AD37PAA9+0QAPftIAD39NAA9/TwAPf1EAD39TAA9/VgAPf1cAD39YAA9/WQAPf1oAD39cAA9/XgAPf18AD39gAA9/YgAPf2MAD3/eAA9/4AAPf+IAD3/kAA9/5wAPf+gAD3/pAA9/6gAPf+sAD3/tAA9/7wAPf/AAD3/xAA9/8wAPf/QAD4BvAA+AcQAPgHMAD4B1AA+AeAAPgHkAD4B6AA+AewAPgHwAD4B+AA+AgAAPgIEAD4CCAA+AhAAPgIUAD4EAAA+BAgAPgQQAD4EGAA+BCQAPgQoAD4ELAA+BDAAPgQ0AD4EPAA+BEQAPgRIAD4ETAA+BFQAPgRYAD4FfAA+BgwAPgaoAD4HOAA+B0QAPgdMAD4HVAA+B1wAPgdkAD4HbAA+B3AAPgd8AD4H4AA+CFQAPghcAD4IZAA+CGwAPgh0AD4IfAA+CIQAPgiMAD4JAAA+CQwAPgkYAD4JJAA+CTAAPgk8AD4JSAA+CVQAPglcAD4LSAA+C1AAPgtYAD4LYAA+C2wAPgtwAD4LdAA+C3gAPgt8AD4LhAA+C4wAPguQAD4LlAA+C5wAPgugAD4NjAA+DZQAPg2cAD4NpAA+DbAAPg20AD4NuAA+DbwAPg3AAD4NyAA+DdAAPg3UAD4N2AA+DeAAPg3kAD4P0AA+D9gAPg/gAD4P6AA+D/QAPg/4AD4P/AA+EAAAPhAEAD4QDAA+EBQAPhAYAD4QHAA+ECQAPhAoAD4SFAA+EhwAPhIkAD4SLAA+EjgAPhI8AD4SQAA+EkQAPhJIAD4SUAA+ElgAPhJcAD4SYAA+EmgAPhJsAD4UWAA+FGAAPhRoAD4UcAA+FHwAPhSAAD4UhAA+FIgAPhSMAD4UlAA+FJwAPhSgAD4UpAA+FKwAPhSwAD4WnAA+FqQAPhasAD4WtAA+FsAAPhbEAD4WyAA+FswAPhbQAD4W2AA+FuAAPhbkAD4W6AA+FvAAPhb0AD4Y4AA+GOgAPhjwAD4Y+AA+GQQAPhkIAD4ZDAA+GRAAPhkUAD4ZHAA+GSQAPhkoAD4ZLAA+GTQAPhk4AD4bhAA+HBAAPhyQAD4dEAA+HRgAPh0gAD4dKAA+HTAAPh08AD4dQAA+HUQAPh1QAD4dVAA+HVwAPh1gAD4dbAA+HXgAPh18AD4dgAA+HYwAPh2QAD4dpAA+HggAPh4sAD4eNAA+HjwAPh5gAD4ebAA+HngAPh6AAD4fpAA+IDQAPiDQAD4hYAA+IWwAPiF0AD4hfAA+IYQAPiGMAD4hlAA+IZgAPiGkAD4iCAA+IowAPiKUAD4inAA+IqQAPiKsAD4itAA+IrwAPiLEAD4izAA+I1AAPiNcAD4jaAA+I3QAPiOAAD4jjAA+I5gAPiOkAD4jsAA+I7gAPiWkAD4lrAA+JbQAPiW8AD4lyAA+JcwAPiXQAD4l1AA+JdgAPiXgAD4l6AA+JewAPiXwAD4l+AA+JfwAPifoAD4n8AA+J/gAPigAAD4oDAA+KBAAPigUAD4oGAA+KBwAPigkAD4oLAA+KDAAPig0AD4oPAA+KEAAPiosAD4qNAA+KkAAPipIAD4qVAA+KlgAPipcAD4qYAA+KmQAPipsAD4qdAA+KngAPip8AD4qhAA+KogAPirsAD4q8AA+KvQAPir8AD4s6AA+LPAAPiz4AD4tAAA+LQwAPi0QAD4tFAA+LRgAPi0cAD4tJAA+LSwAPi0wAD4tNAA+LTwAPi1AAD4vLAA+LzQAPi88AD4vRAA+L1AAPi9UAD4vWAA+L1wAPi9gAD4vaAA+L3AAPi90AD4veAA+L4AAPi+EAD4xcAA+MXgAPjGAAD4xiAA+MZQAPjGYAD4xnAA+MaAAPjGkAD4xrAA+MbQAPjG4AD4xvAA+McQAPjHIAD4ztAA+M7wAPjPEAD4zzAA+M9gAPjPcAD4z4AA+M+QAPjPoAD4z8AA+M/gAPjP8AD40AAA+NAgAPjQMAD41+AA+NgAAPjYIAD42EAA+NhwAPjYgAD42JAA+NigAPjYsAD42NAA+NjwAPjZAAD42RAA+NkwAPjZQAD43dAA+OAQAPjigAD45MAA+OTwAPjlEAD45TAA+OVQAPjlcAD45ZAA+OWgAPjl0AD452AA+OkwAPjpUAD46XAA+OmQAPjpsAD46dAA+OnwAPjqEAD46+AA+OwQAPjsQAD47HAA+OygAPjs0AD47QAA+O0wAPjtUAD49QAA+PUgAPj1QAD49WAA+PWQAPj1oAD49bAA+PXAAPj10AD49fAA+PYQAPj2IAD49jAA+PZQAPj2YAD4/hAA+P4wAPj+UAD4/nAA+P6gAPj+sAD4/sAA+P7QAPj+4AD4/wAA+P8gAPj/MAD4/0AA+P9gAPj/cAD5ByAA+QdAAPkHYAD5B4AA+QewAPkHwAD5B9AA+QfgAPkH8AD5CBAA+QgwAPkIQAD5CFAA+QhwAPkIgAD5EDAA+RBQAPkQgAD5EKAA+RDQAPkQ4AD5EPAA+REAAPkREAD5ETAA+RFQAPkRYAD5EXAA+RGQAPkRoAD5GVAA+RlwAPkZkAD5GbAA+RngAPkZ8AD5GgAA+RoQAPkaIAD5GkAA+RpgAPkacAD5GoAA+RqgAPkasAD5ImAA+SKAAPkioAD5IsAA+SLwAPkjAAD5IxAA+SMgAPkjMAD5I1AA+SNwAPkjgAD5I5AA+SOwAPkjwAD5K3AA+SuQAPkrwAD5K+AA+SwQAPksIAD5LDAA+SxAAPksUAD5LHAA+SyQAPksoAD5LLAA+SzQAPks4AD5NhAA+ThAAPk6QAD5PEAA+TxgAPk8gAD5PKAA+TzAAPk88AD5PQAA+T0QAPk9QAD5PVAA+T1wAPk9gAD5PaAA+T3QAPk94AD5PfAA+T4gAPk+MAD5PsAA+UBQAPlA4AD5QQAA+UEgAPlBsAD5QeAA+UIQAPlCMAD5RsAA+UkAAPlLcAD5TbAA+U3gAPlOAAD5TiAA+U5AAPlOYAD5ToAA+U6QAPlOwAD5UFAA+VJgAPlSgAD5UqAA+VLAAPlS4AD5UwAA+VMgAPlTQAD5U2AA+VVwAPlVoAD5VdAA+VYAAPlWMAD5VmAA+VaQAPlWwAD5VvAA+VcQAPlewAD5XuAA+V8AAPlfIAD5X1AA+V9gAPlfcAD5X4AA+V+QAPlfsAD5X9AA+V/gAPlf8AD5YBAA+WAgAPln0AD5Z/AA+WgQAPloMAD5aGAA+WhwAPlogAD5aJAA+WigAPlowAD5aOAA+WjwAPlpAAD5aSAA+WkwAPlw4AD5cQAA+XEwAPlxUAD5cYAA+XGQAPlxoAD5cbAA+XHAAPlx4AD5cgAA+XIQAPlyIAD5ckAA+XJQAPlz4AD5c/AA+XQAAPl0IAD5e9AA+XvwAPl8EAD5fDAA+XxgAPl8cAD5fIAA+XyQAPl8oAD5fMAA+XzgAPl88AD5fQAA+X0gAPl9MAD5hOAA+YUAAPmFIAD5hUAA+YVwAPmFgAD5hZAA+YWgAPmFsAD5hdAA+YXwAPmGAAD5hhAA+YYwAPmGQAD5jfAA+Y4QAPmOMAD5jlAA+Y6AAPmOkAD5jqAA+Y6wAPmOwAD5juAA+Y8AAPmPEAD5jyAA+Y9AAPmPUAD5lwAA+ZcgAPmXQAD5l2AA+ZeQAPmXoAD5l7AA+ZfAAPmX0AD5l/AA+ZgQAPmYIAD5mDAA+ZhQAPmYYAD5oBAA+aAwAPmgUAD5oHAA+aCgAPmgsAD5oMAA+aDQAPmg4AD5oQAA+aEgAPmhMAD5oUAA+aFgAPmhcAD5pgAA+ahAAPmqsAD5rPAA+a0gAPmtQAD5rWAA+a2AAPmtoAD5rcAA+a3QAPmuAAD5r5AA+bFgAPmxgAD5saAA+bHAAPmx4AD5sgAA+bIgAPmyQAD5tBAA+bRAAPm0cAD5tKAA+bTQAPm1AAD5tTAA+bVgAPm1gAD5vTAA+b1QAPm9cAD5vZAA+b3AAPm90AD5veAA+b3wAPm+AAD5viAA+b5AAPm+UAD5vmAA+b6AAPm+kAD5xkAA+cZgAPnGgAD5xqAA+cbQAPnG4AD5xvAA+ccAAPnHEAD5xzAA+cdQAPnHYAD5x3AA+ceQAPnHoAD5z1AA+c9wAPnPkAD5z7AA+c/gAPnP8AD50AAA+dAQAPnQIAD50EAA+dBgAPnQcAD50IAA+dCgAPnQsAD52GAA+diAAPnYsAD52NAA+dkAAPnZEAD52SAA+dkwAPnZQAD52WAA+dmAAPnZkAD52aAA+dnAAPnZ0AD54YAA+eGgAPnhwAD54eAA+eIQAPniIAD54jAA+eJAAPniUAD54nAA+eKQAPnioAD54rAA+eLQAPni4AD56pAA+eqwAPnq0AD56vAA+esgAPnrMAD560AA+etQAPnrYAD564AA+eugAPnrsAD568AA+evgAPnr8AD586AA+fPAAPnz4AD59AAA+fQwAPn0QAD59FAA+fRgAPn0cAD59JAA+fSwAPn0wAD59NAA+fTwAPn1AAD59hAA+fYgAPn2QAD5/fAA+f4QAPn+MAD5/lAA+f6AAPn+kAD5/qAA+f6wAPn+wAD5/uAA+f8AAPn/EAD5/yAA+f9AAPn/UAD6BwAA+gcgAPoHQAD6B2AA+geQAPoHoAD6B7AA+gfAAPoH0AD6B/AA+ggQAPoIIAD6CDAA+ghQAPoIYAD6EBAA+hAwAPoQYAD6EIAA+hCwAPoQwAD6ENAA+hDgAPoQ8AD6ERAA+hEwAPoRQAD6EVAA+hFwAPoRgAD6GrAA+hzgAPoe4AD6IOAA+iEAAPohIAD6IUAA+iFgAPohkAD6IaAA+iGwAPoh4AD6IfAA+iIQAPoiIAD6IkAA+iJwAPoigAD6IpAA+iLAAPoi0AD6IyAA+iSwAPolQAD6JWAA+iWAAPomEAD6JkAA+iZwAPomkAD6KyAA+i1gAPov0AD6MhAA+jJAAPoyYAD6MoAA+jKgAPoywAD6MuAA+jLwAPozIAD6NLAA+jbAAPo24AD6NwAA+jcgAPo3QAD6N2AA+jeAAPo3oAD6N8AA+jnQAPo6AAD6OjAA+jpgAPo6kAD6OsAA+jrwAPo7IAD6O1AA+jtwAPpDIAD6Q0AA+kNgAPpDgAD6Q7AA+kPAAPpD0AD6Q+AA+kPwAPpEEAD6RDAA+kRAAPpEUAD6RHAA+kSAAPpMMAD6TFAA+kxwAPpMkAD6TMAA+kzQAPpM4AD6TPAA+k0AAPpNIAD6TUAA+k1QAPpNYAD6TYAA+k2QAPpVQAD6VWAA+lWQAPpVsAD6VeAA+lXwAPpWAAD6VhAA+lYgAPpWQAD6VmAA+lZwAPpWgAD6VqAA+lawAPpYQAD6WFAA+lhgAPpYgAD6YDAA+mBQAPpgcAD6YJAA+mDAAPpg0AD6YOAA+mDwAPphAAD6YSAA+mFAAPphUAD6YWAA+mGAAPphkAD6aUAA+mlgAPppgAD6aaAA+mnQAPpp4AD6afAA+moAAPpqEAD6ajAA+mpQAPpqYAD6anAA+mqQAPpqoAD6clAA+nJwAPpykAD6crAA+nLgAPpy8AD6cwAA+nMQAPpzIAD6c0AA+nNgAPpzcAD6c4AA+nOgAPpzsAD6e2AA+nuAAPp7oAD6e8AA+nvwAPp8AAD6fBAA+nwgAPp8MAD6fFAA+nxwAPp8gAD6fJAA+nywAPp8wAD6hHAA+oSQAPqEsAD6hNAA+oUAAPqFEAD6hSAA+oUwAPqFQAD6hWAA+oWAAPqFkAD6haAA+oXAAPqF0AD6imAA+oygAPqPEAD6kVAA+pGAAPqRoAD6kcAA+pHgAPqSAAD6kiAA+pIwAPqSYAD6k/AA+pXAAPqV4AD6lgAA+pYgAPqWQAD6lmAA+paAAPqWoAD6mHAA+pigAPqY0AD6mQAA+pkwAPqZYAD6mZAA+pnAAPqZ4AD6oZAA+qGwAPqh4AD6ogAA+qIwAPqiQAD6olAA+qJgAPqicAD6opAA+qKwAPqiwAD6otAA+qLwAPqjAAD6qrAA+qrQAPqq8AD6qxAA+qtAAPqrUAD6q2AA+qtwAPqrgAD6q6AA+qvAAPqr0AD6q+AA+qwAAPqsEAD6s8AA+rPgAPq0EAD6tDAA+rRgAPq0cAD6tIAA+rSQAPq0oAD6tMAA+rTgAPq08AD6tQAA+rUgAPq1MAD6vOAA+r0AAPq9MAD6vVAA+r2AAPq9kAD6vaAA+r2wAPq9wAD6veAA+r4AAPq+EAD6viAA+r5AAPq+UAD6xgAA+sYgAPrGQAD6xmAA+saQAPrGoAD6xrAA+sbAAPrG0AD6xvAA+scQAPrHIAD6xzAA+sdQAPrHYAD6zxAA+s8wAPrPUAD6z3AA+s+gAPrPsAD6z8AA+s/QAPrP4AD60AAA+tAgAPrQMAD60EAA+tBgAPrQcAD62CAA+thAAPrYYAD62IAA+tiwAPrYwAD62NAA+tjgAPrY8AD62RAA+tkwAPrZQAD62VAA+tlwAPrZgAD64rAA+uTgAPrm4AD66OAA+ukAAPrpIAD66UAA+ulgAPrpkAD66aAA+umwAPrp4AD66fAA+uoQAPrqIAD66lAA+uqAAPrqkAD66qAA+urQAPrq4AD66zAA+uzAAPrtUAD67XAA+u2QAPruIAD67lAA+u6AAPruoAD68zAA+vVwAPr34AD6+iAA+vpQAPr6cAD6+pAA+vqwAPr60AD6+vAA+vsAAPr7MAD6/MAA+v7QAPr+8AD6/xAA+v8wAPr/UAD6/3AA+v+QAPr/sAD6/9AA+wHgAPsCEAD7AkAA+wJwAPsCoAD7AtAA+wMAAPsDMAD7A2AA+wOAAPsLMAD7C1AA+wtwAPsLkAD7C8AA+wvQAPsL4AD7C/AA+wwAAPsMIAD7DEAA+wxQAPsMYAD7DIAA+wyQAPsUQAD7FGAA+xSAAPsUoAD7FNAA+xTgAPsU8AD7FQAA+xUQAPsVMAD7FVAA+xVgAPsVcAD7FZAA+xWgAPsdUAD7HXAA+x2gAPsdwAD7HfAA+x4AAPseEAD7HiAA+x4wAPseUAD7HnAA+x6AAPsekAD7HrAA+x7AAPsgUAD7IGAA+yBwAPsgkAD7KEAA+yhgAPsogAD7KKAA+yjQAPso4AD7KPAA+ykAAPspEAD7KTAA+ylQAPspYAD7KXAA+ymQAPspoAD7MVAA+zFwAPsxkAD7MbAA+zHgAPsx8AD7MgAA+zIQAPsyIAD7MkAA+zJgAPsycAD7MoAA+zKgAPsysAD7OmAA+zqAAPs6oAD7OsAA+zrwAPs7AAD7OxAA+zsgAPs7MAD7O1AA+ztwAPs7gAD7O5AA+zuwAPs7wAD7Q3AA+0OQAPtDsAD7Q9AA+0QAAPtEEAD7RCAA+0QwAPtEQAD7RGAA+0SAAPtEkAD7RKAA+0TAAPtE0AD7TIAA+0ygAPtMwAD7TOAA+00QAPtNIAD7TTAA+01AAPtNUAD7TXAA+02QAPtNoAD7TbAA+03QAPtN4AD7UnAA+1SwAPtXIAD7WWAA+1mQAPtZsAD7WdAA+1nwAPtaEAD7WjAA+1pAAPtacAD7XAAA+13QAPtd8AD7XhAA+14wAPteUAD7XnAA+16QAPtesAD7YIAA+2CwAPtg4AD7YRAA+2FAAPthcAD7YaAA+2HQAPth8AD7aaAA+2nAAPtp4AD7agAA+2owAPtqQAD7alAA+2pgAPtqcAD7apAA+2qwAPtqwAD7atAA+2rwAPtrAAD7crAA+3LQAPtzAAD7cyAA+3NQAPtzYAD7c3AA+3OAAPtzkAD7c7AA+3PQAPtz4AD7c/AA+3QQAPt0IAD7e9AA+3vwAPt8EAD7fDAA+3xgAPt8cAD7fIAA+3yQAPt8oAD7fMAA+3zgAPt88AD7fQAA+30gAPt9MAD7hOAA+4UAAPuFMAD7hVAA+4WAAPuFkAD7haAA+4WwAPuFwAD7heAA+4YAAPuGEAD7hiAA+4ZAAPuGUAD7kIAA+5LAAPuVAAD7lwAA+5lwAPub4AD7neAA+6BQAPuikAD7pMAA+6cwAPupcAD7q7AA+63wAPuwYAD7sHAA+7CQAPuwsAD7sOAA+7EAAPuxMAD7sVAA+7FwAPuxoAD7scAA+7HgAPuyEAD7skAA+7JgAPuygAD7sqAA+7LQAPuzAAD7szAA+7OAAPu1EAD7tWAA+7WAAPu10AD7tgAA+7YgAPu6sAD7vPAA+79gAPvBoAD7wdAA+8HwAPvCEAD7wjAA+8JQAPvCcAD7woAA+8KwAPvEQAD7xpAA+8awAPvG0AD7xvAA+8cQAPvHMAD7x1AA+8dwAPvHkAD7x7AA+8oAAPvKMAD7ymAA+8qQAPvKwAD7yvAA+8sgAPvLUAD7y4AA+8uwAPvL0AD704AA+9OgAPvT0AD70/AA+9QgAPvUMAD71EAA+9RQAPvUYAD71IAA+9SgAPvUsAD71MAA+9TgAPvU8AD71gAA+9YQAPvWMAD73eAA+94AAPveIAD73kAA+95wAPvegAD73pAA+96gAPvesAD73tAA+97wAPvfAAD73xAA+98wAPvfQAD75vAA++cQAPvnQAD752AA++eQAPvnoAD757AA++fAAPvn0AD75/AA++gQAPvoIAD76DAA++hQAPvoYAD76XAA++mAAPvpoAD78VAA+/FwAPvxkAD78bAA+/HgAPvx8AD78gAA+/IQAPvyIAD78kAA+/JgAPvycAD78oAA+/KgAPvysAD7+mAA+/qAAPv6sAD7+tAA+/sAAPv7EAD7+yAA+/swAPv7QAD7+2AA+/uAAPv7kAD7+6AA+/vAAPv70AD7/OAA+/zwAPv9EAD8BMAA/ATgAPwFAAD8BSAA/AVQAPwFYAD8BXAA/AWAAPwFkAD8BbAA/AXQAPwF4AD8BfAA/AYQAPwGIAD8DdAA/A3wAPwOIAD8DkAA/A5wAPwOgAD8DpAA/A6gAPwOsAD8DtAA/A7wAPwPAAD8DxAA/A8wAPwPQAD8ENAA/BDgAPwQ8AD8ERAA/BjAAPwY4AD8GQAA/BkgAPwZUAD8GWAA/BlwAPwZgAD8GZAA/BmwAPwZ0AD8GeAA/BnwAPwaEAD8GiAA/CHQAPwh8AD8IiAA/CJAAPwicAD8IoAA/CKQAPwioAD8IrAA/CLQAPwi8AD8IwAA/CMQAPwjMAD8I0AA/CTwAPwmgAD8J1AA/CeAAPwnsAD8J+AA/CiwAPwo4AD8KRAA/ClAAPwpYAD8KfAA/DMgAPw1UAD8N1AA/DlQAPw5cAD8OZAA/DmwAPw50AD8OgAA/DoQAPw6IAD8OlAA/DpgAPw6gAD8OpAA/DqwAPw64AD8OvAA/DsAAPw7MAD8O0AA/DuQAPw9IAD8PbAA/D3QAPw98AD8PoAA/D6wAPw+4AD8PwAA/EOQAPxF0AD8SEAA/EqAAPxKsAD8StAA/ErwAPxLEAD8SzAA/EtQAPxLYAD8S5AA/E0gAPxPMAD8T1AA/E9wAPxPkAD8T7AA/E/QAPxP8AD8UBAA/FAwAPxSQAD8UnAA/FKgAPxS0AD8UwAA/FMwAPxTYAD8U5AA/FPAAPxT4AD8W5AA/FuwAPxb0AD8W/AA/FwgAPxcMAD8XEAA/FxQAPxcYAD8XIAA/FygAPxcsAD8XMAA/FzgAPxc8AD8ZKAA/GTAAPxk4AD8ZQAA/GUwAPxlQAD8ZVAA/GVgAPxlcAD8ZZAA/GWwAPxlwAD8ZdAA/GXwAPxmAAD8bbAA/G3QAPxuAAD8biAA/G5QAPxuYAD8bnAA/G6AAPxukAD8brAA/G7QAPxu4AD8bvAA/G8QAPxvIAD8cLAA/HDAAPxw0AD8cPAA/HigAPx4wAD8eOAA/HkAAPx5MAD8eUAA/HlQAPx5YAD8eXAA/HmQAPx5sAD8ecAA/HnQAPx58AD8egAA/IGwAPyB0AD8gfAA/IIQAPyCQAD8glAA/IJgAPyCcAD8goAA/IKgAPyCwAD8gtAA/ILgAPyDAAD8gxAA/IrAAPyK4AD8iwAA/IsgAPyLUAD8i2AA/ItwAPyLgAD8i5AA/IuwAPyL0AD8i+AA/IvwAPyMEAD8jCAA/JPQAPyT8AD8lBAA/JQwAPyUYAD8lHAA/JSAAPyUkAD8lKAA/JTAAPyU4AD8lPAA/JUAAPyVIAD8lTAA/JzgAPydAAD8nSAA/J1AAPydcAD8nYAA/J2QAPydoAD8nbAA/J3QAPyd8AD8ngAA/J4QAPyeMAD8nkAA/KLQAPylEAD8p4AA/KnAAPyp8AD8qhAA/KowAPyqUAD8qnAA/KqQAPyqoAD8qtAA/KxgAPyuMAD8rlAA/K5wAPyukAD8rrAA/K7QAPyu8AD8rxAA/LDgAPyxEAD8sUAA/LFwAPyxoAD8sdAA/LIAAPyyMAD8slAA/LoAAPy6IAD8ukAA/LpgAPy6kAD8uqAA/LqwAPy6wAD8utAA/LrwAPy7EAD8uyAA/LswAPy7UAD8u2AA/MMQAPzDMAD8w1AA/MNwAPzDoAD8w7AA/MPAAPzD0AD8w+AA/MQAAPzEIAD8xDAA/MRAAPzEYAD8xHAA/MwgAPzMQAD8zGAA/MyAAPzMsAD8zMAA/MzQAPzM4AD8zPAA/M0QAPzNMAD8zUAA/M1QAPzNcAD8zYAA/NUwAPzVUAD81YAA/NWgAPzV0AD81eAA/NXwAPzWAAD81hAA/NYwAPzWUAD81mAA/NZwAPzWkAD81qAA/N5QAPzecAD83pAA/N6wAPze4AD83vAA/N8AAPzfEAD83yAA/N9AAPzfYAD833AA/N+AAPzfoAD837AA/OdgAPzngAD856AA/OfAAPzn8AD86AAA/OgQAPzoIAD86DAA/OhQAPzocAD86IAA/OiQAPzosAD86MAA/PBwAPzwkAD88LAA/PDQAPzxAAD88RAA/PEgAPzxMAD88UAA/PFgAPzxgAD88ZAA/PGgAPzxwAD88dAA/PsAAPz9MAD8/zAA/QEwAP0BUAD9AXAA/QGQAP0BsAD9AeAA/QHwAP0CAAD9AjAA/QJAAP0CYAD9AnAA/QKgAP0C0AD9AuAA/QLwAP0DIAD9AzAA/QOAAP0FEAD9BaAA/QXAAP0F4AD9BnAA/QagAP0G0AD9BvAA/QuAAP0NwAD9EDAA/RJwAP0SoAD9EsAA/RLgAP0TAAD9EyAA/RNAAP0TUAD9E4AA/RUQAP0XIAD9F0AA/RdgAP0XgAD9F6AA/RfAAP0X4AD9GAAA/RggAP0aMAD9GmAA/RqQAP0awAD9GvAA/RsgAP0bUAD9G4AA/RuwAP0b0AD9I4AA/SOgAP0jwAD9I+AA/SQQAP0kIAD9JDAA/SRAAP0kUAD9JHAA/SSQAP0koAD9JLAA/STQAP0k4AD9LJAA/SywAP0s0AD9LPAA/S0gAP0tMAD9LUAA/S1QAP0tYAD9LYAA/S2gAP0tsAD9LcAA/S3gAP0t8AD9NaAA/TXAAP018AD9NhAA/TZAAP02UAD9NmAA/TZwAP02gAD9NqAA/TbAAP020AD9NuAA/TcAAP03EAD9OKAA/TiwAP04wAD9OOAA/UCQAP1AsAD9QNAA/UDwAP1BIAD9QTAA/UFAAP1BUAD9QWAA/UGAAP1BoAD9QbAA/UHAAP1B4AD9QfAA/UmgAP1JwAD9SeAA/UoAAP1KMAD9SkAA/UpQAP1KYAD9SnAA/UqQAP1KsAD9SsAA/UrQAP1K8AD9SwAA/VKwAP1S0AD9UvAA/VMQAP1TQAD9U1AA/VNgAP1TcAD9U4AA/VOgAP1TwAD9U9AA/VPgAP1UAAD9VBAA/VvAAP1b4AD9XAAA/VwgAP1cUAD9XGAA/VxwAP1cgAD9XJAA/VywAP1c0AD9XOAA/VzwAP1dEAD9XSAA/WTQAP1k8AD9ZRAA/WUwAP1lYAD9ZXAA/WWAAP1lkAD9ZaAA/WXAAP1l4AD9ZfAA/WYAAP1mIAD9ZjAA/WrAAP1tAAD9b3AA/XGwAP1x4AD9cgAA/XIgAP1yQAD9cmAA/XKAAP1ykAD9csAA/XRQAP12IAD9dkAA/XZgAP12gAD9dqAA/XbAAP124AD9dwAA/XjQAP15AAD9eTAA/XlgAP15kAD9ecAA/XnwAP16IAD9ekAA/YHwAP2CEAD9gjAA/YJQAP2CgAD9gpAA/YKgAP2CsAD9gsAA/YLgAP2DAAD9gxAA/YMgAP2DQAD9g1AA/YsAAP2LIAD9i0AA/YtgAP2LkAD9i6AA/YuwAP2LwAD9i9AA/YvwAP2MEAD9jCAA/YwwAP2MUAD9jGAA/ZQQAP2UMAD9lFAA/ZRwAP2UoAD9lLAA/ZTAAP2U0AD9lOAA/ZUAAP2VIAD9lTAA/ZVAAP2VYAD9lXAA/Z0gAP2dQAD9nXAA/Z2QAP2dwAD9ndAA/Z3gAP2d8AD9ngAA/Z4gAP2eQAD9nlAA/Z5gAP2egAD9npAA/aZAAP2mYAD9poAA/aagAP2m0AD9puAA/abwAP2nAAD9pxAA/acwAP2nUAD9p2AA/adwAP2nkAD9p6AA/a9QAP2vcAD9r5AA/a+wAP2v4AD9r/AA/bAAAP2wEAD9sCAA/bBAAP2wYAD9sHAA/bCAAP2woAD9sLAA/bhgAP24gAD9uLAA/bjQAP25AAD9uRAA/bkgAP25MAD9uUAA/blgAP25gAD9uZAA/bmgAP25wAD9udAA/cMAAP3FMAD9xzAA/ckwAP3JUAD9yXAA/cmQAP3JsAD9yeAA/cnwAP3KAAD9yjAA/cpAAP3KYAD9ynAA/cqQAP3KwAD9ytAA/crgAP3LEAD9yyAA/ctwAP3NAAD9zZAA/c2wAP3N0AD9zmAA/c6QAP3OwAD9zuAA/dNwAP3VsAD92CAA/dpgAP3akAD92rAA/drQAP3a8AD92xAA/dswAP3bQAD923AA/d0AAP3fEAD93zAA/d9QAP3fcAD935AA/d+wAP3f0AD93/AA/eAQAP3iIAD94lAA/eKAAP3isAD94uAA/eMQAP3jQAD943AA/eOgAP3jwAD963AA/euQAP3rsAD969AA/ewAAP3sEAD97CAA/ewwAP3sQAD97GAA/eyAAP3skAD97KAA/ezAAP3s0AD99IAA/fSgAP30wAD99OAA/fUQAP31IAD99TAA/fVAAP31UAD99XAA/fWQAP31oAD99bAA/fXQAP314AD9/ZAA/f2wAP394AD9/gAA/f4wAP3+QAD9/lAA/f5gAP3+cAD9/pAA/f6wAP3+wAD9/tAA/f7wAP3/AAD+AJAA/gCgAP4AsAD+ANAA/giAAP4IoAD+CMAA/gjgAP4JEAD+CSAA/gkwAP4JQAD+CVAA/glwAP4JkAD+CaAA/gmwAP4J0AD+CeAA/hGQAP4RsAD+EdAA/hHwAP4SIAD+EjAA/hJAAP4SUAD+EmAA/hKAAP4SoAD+ErAA/hLAAP4S4AD+EvAA/hqgAP4awAD+GuAA/hsAAP4bMAD+G0AA/htQAP4bYAD+G3AA/huQAP4bsAD+G8AA/hvQAP4b8AD+HAAA/iOwAP4j0AD+I/AA/iQQAP4kQAD+JFAA/iRgAP4kcAD+JIAA/iSgAP4kwAD+JNAA/iTgAP4lAAD+JRAA/izAAP4s4AD+LQAA/i0gAP4tUAD+LWAA/i1wAP4tgAD+LZAA/i2wAP4t0AD+LeAA/i3wAP4uEAD+LiAA/jKwAP408AD+N2AA/jmgAP450AD+OfAA/joQAP46MAD+OlAA/jpwAP46gAD+OrAA/jxAAP4+EAD+PjAA/j5QAP4+cAD+PpAA/j6wAP4+0AD+PvAA/kDAAP5A8AD+QSAA/kFQAP5BgAD+QbAA/kHgAP5CEAD+QjAA/kngAP5KAAD+SiAA/kpAAP5KcAD+SoAA/kqQAP5KoAD+SrAA/krQAP5K8AD+SwAA/ksQAP5LMAD+S0AA/lLwAP5TEAD+UzAA/lNQAP5TgAD+U5AA/lOgAP5TsAD+U8AA/lPgAP5UAAD+VBAA/lQgAP5UQAD+VFAA/lwAAP5cIAD+XEAA/lxgAP5ckAD+XKAA/lywAP5cwAD+XNAA/lzwAP5dEAD+XSAA/l0wAP5dUAD+XWAA/mUQAP5lMAD+ZWAA/mWAAP5lsAD+ZcAA/mXQAP5l4AD+ZfAA/mYQAP5mMAD+ZkAA/mZQAP5mcAD+ZoAA/m4wAP5uUAD+bnAA/m6QAP5uwAD+btAA/m7gAP5u8AD+bwAA/m8gAP5vQAD+b1AA/m9gAP5vgAD+b5AA/ndAAP53YAD+d4AA/negAP530AD+d+AA/nfwAP54AAD+eBAA/ngwAP54UAD+eGAA/nhwAP54kAD+eKAA/oBQAP6AcAD+gJAA/oCwAP6A4AD+gPAA/oEAAP6BEAD+gSAA/oFAAP6BYAD+gXAA/oGAAP6BoAD+gbAA/oLAAP6C0AD+gvAA/oQAAP6EkAD+hMAA/oTwAP6FEAD+iKAA/ojQAP6I8AD+iSAA/olQAP6JgAD+ibAA/pHgAP6UIAD+lmAA/piQAP6bAAD+nQAA/p9wAP6h4AD+o+AA/qYgAP6oYAD+qIAA/qiwAP6o0AD+qPAA/qkQAP6pQAD+qXAA/qmQAP6psAD+qeAA/qoAAP6qIAD+qlAA/qqAAP6qkAD+quAA/qxwAP6swAD+rOAA/q0wAP6tYAD+rYAA/rIQAP60UAD+tsAA/rkAAP65MAD+uVAA/rlwAP65kAD+ubAA/rnQAP654AD+uhAA/rugAP698AD+vhAA/r4wAP6+UAD+vnAA/r6QAP6+sAD+vtAA/r7wAP6/EAD+wWAA/sGQAP7BwAD+wfAA/sIgAP7CUAD+woAA/sKwAP7C4AD+wxAA/sMwAP7K4AD+ywAA/sswAP7LUAD+y4AA/suQAP7LoAD+y7AA/svAAP7L4AD+zAAA/swQAP7MIAD+zEAA/sxQAP7NYAD+zXAA/s2QAP7VQAD+1WAA/tWAAP7VoAD+1dAA/tXgAP7V8AD+1gAA/tYQAP7WMAD+1lAA/tZgAP7WcAD+1pAA/tagAP7eUAD+3nAA/t6gAP7ewAD+3vAA/t8AAP7fEAD+3yAA/t8wAP7fUAD+33AA/t+AAP7fkAD+37AA/t/AAP7g0AD+4OAA/uEAAP7osAD+6NAA/ujwAP7pEAD+6UAA/ulQAP7pYAD+6XAA/umAAP7poAD+6cAA/unQAP7p4AD+6gAA/uoQAP7xwAD+8eAA/vIQAP7yMAD+8mAA/vJwAP7ygAD+8pAA/vKgAP7ywAD+8uAA/vLwAP7zAAD+8yAA/vMwAP70QAD+9FAA/vRwAP78IAD+/EAA/vxgAP78gAD+/LAA/vzAAP780AD+/OAA/vzwAP79EAD+/TAA/v1AAP79UAD+/XAA/v2AAP8FMAD/BVAA/wWAAP8FoAD/BdAA/wXgAP8F8AD/BgAA/wYQAP8GMAD/BlAA/wZgAP8GcAD/BpAA/wagAP8IMAD/CEAA/whQAP8IcAD/ECAA/xBAAP8QYAD/EIAA/xCwAP8QwAD/ENAA/xDgAP8Q8AD/ERAA/xEwAP8RQAD/EVAA/xFwAP8RgAD/GTAA/xlQAP8ZgAD/GaAA/xnQAP8Z4AD/GfAA/xoAAP8aEAD/GjAA/xpQAP8aYAD/GnAA/xqQAP8aoAD/HNAA/x5gAP8esAD/HuAA/x8wAP8fYAD/H4AA/yAAAP8pMAD/K2AA/y1gAP8vYAD/L4AA/y+gAP8vwAD/L+AA/zAQAP8wIAD/MDAA/zBgAP8wcAD/MJAA/zCgAP8w0AD/MQAA/zEQAP8xIAD/MVAA/zFgAP8xsAD/M0AA/zPQAP8z8AD/NBAA/zSgAP800AD/NQAA/zUgAP85sAD/O/AA/z5gAP9AoAD/QNAA/0DwAP9BEAD/QTAA/0FQAP9BcAD/QYAA/0GwAP9DQAD/RVAA/0VwAP9FkAD/RbAA/0XQAP9F8AD/RhAA/0YwAP9GUAD/SGAA/0iQAP9IwAD/SPAA/0kgAP9JUAD/SYAA/0mwAP9J4AD/SgAA/1GwAP9R0AD/UfAA/1IQAP9SQAD/UlAA/1JgAP9ScAD/UoAA/1KgAP9SwAD/UtAA/1LgAP9TAAD/UxAA/1rAAP9a4AD/WwAA/1sgAP9bUAD/W2AA/1twAP9bgAD/W5AA/1uwAP9b0AD/W+AA/1vwAP9cEAD/XCAA/2PQAP9j8AD/ZCAA/2RAAP9kcAD/ZIAA/2SQAP9koAD/ZLAA/2TQAP9k8AD/ZQAA/2UQAP9lMAD/ZUAA/2bQAP9m4AD/ZvAA/2cQAP9uwAD/buAA/28AAP9vIAD/b1AA/29gAP9vcAD/b4AA/2+QAP9vsAD/b9AA/2/gAP9v8AD/cBAA/3AgAP930AD/d/AA/3gQAP94MAD/eGAA/3hwAP94gAD/eJAA/3igAP94wAD/eOAA/3jwAP95AAD/eSAA/3kwAP+A4AD/gQAA/4EgAP+BQAD/gXAA/4GAAP+BkAD/gaAA/4GwAP+B0AD/gfAA/4IAAP+CEAD/gjAA/4JAAP+J8AD/ihAA/4owAP+KUAD/ioAA/4qQAP+KoAD/irAA/4rAAP+K4AD/iwAA/4sQAP+LIAD/i0AA/4tQAP+TAAD/kyAA/5NAAP+TYAD/k5AA/5OgAP+TsAD/k8AA/5PQAP+T8AD/lBAA/5QgAP+UMAD/lFAA/5RgAP+Y8AD/mzAA/52gAP+f4AD/oBAA/6AwAP+gUAD/oHAA/6CQAP+gsAD/oMAA/6DwAP+igAD/pFAA/6RwAP+kkAD/pLAA/6TQAP+k8AD/pRAA/6UwAP+nAAD/pzAA/6dgAP+nkAD/p8AA/6fwAP+oIAD/qFAA/6hwAP+wIAD/sEAA/7BgAP+wgAD/sLAA/7DAAP+w0AD/sOAA/7DwAP+xEAD/sTAA/7FAAP+xUAD/sXAA/7GAAP+5MAD/uVAA/7lwAP+5kAD/ucAA/7nQAP+54AD/ufAA/7oAAP+6IAD/ukAA/7pQAP+6YAD/uoAA/7qQAP/CQAD/wmAA/8KAAP/CoAD/wtAA/8LgAP/C8AD/wwAA/8MQAP/DMAD/w1AA/8NgAP/DcAD/w5AA/8OgAP/LUAD/y3AA/8ugAP/LwAD/y/AA/8wAAP/MEAD/zCAA/8wwAP/MUAD/zHAA/8yAAP/MkAD/zLAA/8zAAP/UcAD/1JAA/9SwAP/U0AD/1QAA/9UQAP/VIAD/1TAA/9VAAP/VYAD/1YAA/9WQAP/VoAD/1cAA/9XQAP/dgAD/3aAA/93AAP/d4AD/3hAA/94gAP/eMAD/3kAA/95QAP/ecAD/3pAA/96gAP/esAD/3tAA/97gAP/mkAD/5rAA/+bgAP/nAAD/5zAA/+dAAP/nUAD/52AA/+dwAP/nkAD/57AA/+fAAP/n0AD/5/AA/+gAAP/xMAD/82AA//VgAP/3YAD/94AA//egAP/3wAD/9+AA//gQAP/4IAD/+DAA//hgAP/4cAD/+JAA//igAP/40AD/+QAA//kQAP/5IAD/+VAA//lgAP/58AD/+4AA//wQAP/8MAD//FAA//zgAP/9EAD//UAA//1gAQAB8AEABDABAAagAQAI4AEACRABAAkwAQAJUAEACXABAAmQAQAJsAEACcABAAnwAQALgAEADZABAA2wAQAN0AEADfABAA4QAQAOMAEADlABAA5wAQAOkAEAEKABABDQAQARAAEAETABABFgAQARkAEAEcABABHwAQASIAEAEkABABnwAQAaEAEAGjABABpQAQAagAEAGpABABqgAQAasAEAGsABABrgAQAbAAEAGxABABsgAQAbQAEAG1ABACMAAQAjIAEAI0ABACNgAQAjkAEAI6ABACOwAQAjwAEAI9ABACPwAQAkEAEAJCABACQwAQAkUAEAJGABACwQAQAsMAEALGABACyAAQAssAEALMABACzQAQAs4AEALPABAC0QAQAtMAEALUABAC1QAQAtcAEALYABAC8QAQAvIAEALzABAC9QAQA3AAEANyABADdAAQA3YAEAN5ABADegAQA3sAEAN8ABADfQAQA38AEAOBABADggAQA4MAEAOFABADhgAQBAEAEAQDABAEBQAQBAcAEAQKABAECwAQBAwAEAQNABAEDgAQBBAAEAQSABAEEwAQBBQAEAQWABAEFwAQBJIAEASUABAElgAQBJgAEASbABAEnAAQBJ0AEASeABAEnwAQBKEAEASjABAEpAAQBKUAEASnABAEqAAQBSMAEAUlABAFJwAQBSkAEAUsABAFLQAQBS4AEAUvABAFMAAQBTIAEAU0ABAFNQAQBTYAEAU4ABAFOQAQBbQAEAW2ABAFuAAQBboAEAW9ABAFvgAQBb8AEAXAABAFwQAQBcMAEAXFABAFxgAQBccAEAXJABAFygAQBhMAEAY3ABAGXgAQBoIAEAaFABAGhwAQBokAEAaLABAGjQAQBo8AEAaQABAGkwAQBqwAEAbJABAGywAQBs0AEAbPABAG0QAQBtMAEAbVABAG1wAQBvQAEAb3ABAG+gAQBv0AEAcAABAHAwAQBwYAEAcJABAHCwAQB4YAEAeIABAHigAQB4wAEAePABAHkAAQB5EAEAeSABAHkwAQB5UAEAeXABAHmAAQB5kAEAebABAHnAAQCBcAEAgZABAIHAAQCB4AEAghABAIIgAQCCMAEAgkABAIJQAQCCcAEAgpABAIKgAQCCsAEAgtABAILgAQCKkAEAirABAIrQAQCK8AEAiyABAIswAQCLQAEAi1ABAItgAQCLgAEAi6ABAIuwAQCLwAEAi+ABAIvwAQCToAEAk8ABAJPwAQCUEAEAlEABAJRQAQCUYAEAlHABAJSAAQCUoAEAlMABAJTQAQCU4AEAlQABAJUQAQCcwAEAnOABAJ0AAQCdIAEAnVABAJ1gAQCdcAEAnYABAJ2QAQCdsAEAndABAJ3gAQCd8AEAnhABAJ4gAQCl0AEApfABAKYQAQCmMAEApmABAKZwAQCmgAEAppABAKagAQCmwAEApuABAKbwAQCnAAEApyABAKcwAQCu4AEArwABAK8wAQCvUAEAr4ABAK+QAQCvoAEAr7ABAK/AAQCv4AEAsAABALAQAQCwIAEAsEABALBQAQCxYAEAsbABALHgAQCyAAEAslABALXgAQC2EAEAtjABALZgAQC2kAEAtsABALbwAQC/IAEAwWABAMOgAQDF0AEAyEABAMpAAQDMsAEAzyABANEgAQDTYAEA1aABANXAAQDV8AEA1hABANYwAQDWUAEA1oABANawAQDW0AEA1vABANcgAQDXQAEA12ABANeQAQDXwAEA19ABANhgAQDZ8AEA2kABANpgAQDasAEA2uABANsAAQDfkAEA4dABAORAAQDmgAEA5rABAObQAQDm8AEA5xABAOcwAQDnUAEA52ABAOeQAQDpIAEA63ABAOuQAQDrsAEA69ABAOvwAQDsEAEA7DABAOxQAQDscAEA7JABAO7gAQDvEAEA70ABAO9wAQDvoAEA79ABAPAAAQDwMAEA8GABAPCQAQDwsAEA+GABAPiAAQD4sAEA+NABAPkAAQD5EAEA+SABAPkwAQD5QAEA+WABAPmAAQD5kAEA+aABAPnAAQD50AEA+uABAPrwAQD7EAEBAsABAQLgAQEDAAEBAyABAQNQAQEDYAEBA3ABAQOAAQEDkAEBA7ABAQPQAQED4AEBA/ABAQQQAQEEIAEBC9ABAQvwAQEMIAEBDEABAQxwAQEMgAEBDJABAQygAQEMsAEBDNABAQzwAQENAAEBDRABAQ0wAQENQAEBDlABAQ5gAQEOgAEBFjABARZQAQEWcAEBFpABARbAAQEW0AEBFuABARbwAQEXAAEBFyABARdAAQEXUAEBF2ABAReAAQEXkAEBH0ABAR9gAQEfkAEBH7ABAR/gAQEf8AEBIAABASAQAQEgIAEBIEABASBgAQEgcAEBIIABASCgAQEgsAEBIcABASHQAQEh8AEBKaABASnAAQEp4AEBKgABASowAQEqQAEBKlABASpgAQEqcAEBKpABASqwAQEqwAEBKtABASrwAQErAAEBMrABATLQAQEzAAEBMyABATNQAQEzYAEBM3ABATOAAQEzkAEBM7ABATPQAQEz4AEBM/ABATQQAQE0IAEBNbABATXAAQE10AEBNfABAT2gAQE9wAEBPeABAT4AAQE+MAEBPkABAT5QAQE+YAEBPnABAT6QAQE+sAEBPsABAT7QAQE+8AEBPwABAUawAQFG0AEBRwABAUcgAQFHUAEBR2ABAUdwAQFHgAEBR5ABAUewAQFH0AEBR+ABAUfwAQFIEAEBSCABAUoQAQFLoAEBS7ABAUvAAQFL4AEBTPABAU1AAQFNcAEBTZABAU3gAQFVkAEBVbABAVXQAQFV8AEBViABAVYwAQFWQAEBVlABAVZgAQFWgAEBVqABAVawAQFWwAEBVuABAVbwAQFeoAEBXsABAV7gAQFfAAEBXzABAV9AAQFfUAEBX2ABAV9wAQFfkAEBX7ABAV/AAQFf0AEBX/ABAWAAAQFnsAEBZ9ABAWgAAQFoIAEBaFABAWhgAQFocAEBaIABAWiQAQFosAEBaNABAWjgAQFo8AEBaRABAWkgAQFyUAEBdIABAXaAAQF4gAEBeKABAXjAAQF44AEBeQABAXkwAQF5QAEBeVABAXmAAQF5kAEBebABAXnAAQF54AEBehABAXogAQF6MAEBemABAXpwAQF6wAEBfFABAXzgAQF9AAEBfSABAX2wAQF94AEBfhABAX4wAQGCwAEBhQABAYdwAQGJsAEBieABAYoAAQGKIAEBikABAYpgAQGKgAEBipABAYrAAQGMUAEBjmABAY6AAQGOoAEBjsABAY7gAQGPAAEBjyABAY9AAQGPYAEBkXABAZGgAQGR0AEBkgABAZIwAQGSYAEBkpABAZLAAQGS8AEBkxABAZrAAQGa4AEBmwABAZsgAQGbUAEBm2ABAZtwAQGbgAEBm5ABAZuwAQGb0AEBm+ABAZvwAQGcEAEBnCABAaPQAQGj8AEBpBABAaQwAQGkYAEBpHABAaSAAQGkkAEBpKABAaTAAQGk4AEBpPABAaUAAQGlIAEBpTABAazgAQGtAAEBrTABAa1QAQGtgAEBrZABAa2gAQGtsAEBrcABAa3gAQGuAAEBrhABAa4gAQGuQAEBrlABAa/gAQGv8AEBsAABAbAgAQG30AEBt/ABAbgQAQG4MAEBuGABAbhwAQG4gAEBuJABAbigAQG4wAEBuOABAbjwAQG5AAEBuSABAbkwAQHA4AEBwQABAcEgAQHBQAEBwXABAcGAAQHBkAEBwaABAcGwAQHB0AEBwfABAcIAAQHCEAEBwjABAcJAAQHJ8AEByhABAcowAQHKUAEByoABAcqQAQHKoAEByrABAcrAAQHK4AEBywABAcsQAQHLIAEBy0ABActQAQHTAAEB0yABAdNAAQHTYAEB05ABAdOgAQHTsAEB08ABAdPQAQHT8AEB1BABAdQgAQHUMAEB1FABAdRgAQHcEAEB3DABAdxQAQHccAEB3KABAdywAQHcwAEB3NABAdzgAQHdAAEB3SABAd0wAQHdQAEB3WABAd1wAQHiAAEB5EABAeawAQHo8AEB6SABAelAAQHpYAEB6YABAemgAQHpwAEB6dABAeoAAQHrkAEB7WABAe2AAQHtoAEB7cABAe3gAQHuAAEB7iABAe5AAQHwEAEB8EABAfBwAQHwoAEB8NABAfEAAQHxMAEB8WABAfGAAQH5MAEB+VABAflwAQH5kAEB+cABAfnQAQH54AEB+fABAfoAAQH6IAEB+kABAfpQAQH6YAEB+oABAfqQAQICQAECAmABAgKAAQICoAECAtABAgLgAQIC8AECAwABAgMQAQIDMAECA1ABAgNgAQIDcAECA5ABAgOgAQILUAECC3ABAguQAQILsAECC+ABAgvwAQIMAAECDBABAgwgAQIMQAECDGABAgxwAQIMgAECDKABAgywAQIUYAECFIABAhSwAQIU0AECFQABAhUQAQIVIAECFTABAhVAAQIVYAECFYABAhWQAQIVoAECFcABAhXQAQIdgAECHaABAh3AAQId4AECHhABAh4gAQIeMAECHkABAh5QAQIecAECHpABAh6gAQIesAECHtABAh7gAQImkAECJrABAibQAQIm8AECJyABAicwAQInQAECJ1ABAidgAQIngAECJ6ABAiewAQInwAECJ+ABAifwAQIvoAECL8ABAi/gAQIwAAECMDABAjBAAQIwUAECMGABAjBwAQIwkAECMLABAjDAAQIw0AECMPABAjEAAQI6MAECPGABAj5gAQJAYAECQIABAkCgAQJAwAECQOABAkEQAQJBIAECQTABAkFgAQJBcAECQZABAkGgAQJBwAECQfABAkIAAQJCEAECQkABAkJQAQJCoAECRDABAkTAAQJE4AECRQABAkWQAQJFwAECRfABAkYQAQJKoAECTOABAk9QAQJRkAECUcABAlHgAQJSAAECUiABAlJAAQJSYAECUnABAlKgAQJUMAECVkABAlZgAQJWgAECVqABAlbAAQJW4AECVwABAlcgAQJXQAECWVABAlmAAQJZsAECWeABAloQAQJaQAECWnABAlqgAQJa0AECWvABAmKgAQJiwAECYuABAmMAAQJjMAECY0ABAmNQAQJjYAECY3ABAmOQAQJjsAECY8ABAmPQAQJj8AECZAABAmuwAQJr0AECa/ABAmwQAQJsQAECbFABAmxgAQJscAECbIABAmygAQJswAECbNABAmzgAQJtAAECbRABAnTAAQJ04AECdRABAnUwAQJ1YAECdXABAnWAAQJ1kAECdaABAnXAAQJ14AECdfABAnYAAQJ2IAECdjABAnfAAQJ30AECd+ABAngAAQJ/sAECf9ABAn/wAQKAEAECgEABAoBQAQKAYAECgHABAoCAAQKAoAECgMABAoDQAQKA4AECgQABAoEQAQKIwAECiOABAokAAQKJIAECiVABAolgAQKJcAECiYABAomQAQKJsAECidABAongAQKJ8AECihABAoogAQKR0AECkfABApIQAQKSMAECkmABApJwAQKSgAECkpABApKgAQKSwAECkuABApLwAQKTAAECkyABApMwAQKa4AECmwABApsgAQKbQAECm3ABApuAAQKbkAECm6ABApuwAQKb0AECm/ABApwAAQKcEAECnDABApxAAQKj8AECpBABAqQwAQKkUAECpIABAqSQAQKkoAECpLABAqTAAQKk4AECpQABAqUQAQKlIAECpUABAqVQAQKp4AECrCABAq6QAQKw0AECsQABArEgAQKxQAECsWABArGAAQKxoAECsbABArHgAQKzcAECtUABArVgAQK1gAECtaABArXAAQK14AECtgABArYgAQK38AECuCABArhQAQK4gAECuLABArjgAQK5EAECuUABArlgAQLBEAECwTABAsFQAQLBcAECwaABAsGwAQLBwAECwdABAsHgAQLCAAECwiABAsIwAQLCQAECwmABAsJwAQLKIAECykABAspgAQLKgAECyrABAsrAAQLK0AECyuABAsrwAQLLEAECyzABAstAAQLLUAECy3ABAsuAAQLTMAEC01ABAtNwAQLTkAEC08ABAtPQAQLT4AEC0/ABAtQAAQLUIAEC1EABAtRQAQLUYAEC1IABAtSQAQLcQAEC3GABAtyQAQLcsAEC3OABAtzwAQLdAAEC3RABAt0gAQLdQAEC3WABAt1wAQLdgAEC3aABAt2wAQLlYAEC5YABAuWgAQLlwAEC5fABAuYAAQLmEAEC5iABAuYwAQLmUAEC5nABAuaAAQLmkAEC5rABAubAAQLucAEC7pABAu6wAQLu0AEC7wABAu8QAQLvIAEC7zABAu9AAQLvYAEC74ABAu+QAQLvoAEC78ABAu/QAQL3gAEC96ABAvfAAQL34AEC+BABAvggAQL4MAEC+EABAvhQAQL4cAEC+JABAvigAQL4sAEC+NABAvjgAQMCEAEDBEABAwZAAQMIQAEDCGABAwiAAQMIoAEDCMABAwjwAQMJAAEDCRABAwlAAQMJUAEDCXABAwmAAQMJoAEDCdABAwngAQMJ8AEDCiABAwowAQMKgAEDDBABAwygAQMMwAEDDOABAw1wAQMNoAEDDdABAw3wAQMSgAEDFMABAxcwAQMZcAEDGaABAxnAAQMZ4AEDGgABAxogAQMaQAEDGlABAxqAAQMcEAEDHiABAx5AAQMeYAEDHoABAx6gAQMewAEDHuABAx8AAQMfIAEDITABAyFgAQMhkAEDIcABAyHwAQMiIAEDIlABAyKAAQMisAEDItABAyqAAQMqoAEDKsABAyrgAQMrEAEDKyABAyswAQMrQAEDK1ABAytwAQMrkAEDK6ABAyuwAQMr0AEDK+ABAzOQAQMzsAEDM9ABAzPwAQM0IAEDNDABAzRAAQM0UAEDNGABAzSAAQM0oAEDNLABAzTAAQM04AEDNPABAzygAQM8wAEDPPABAz0QAQM9QAEDPVABAz1gAQM9cAEDPYABAz2gAQM9wAEDPdABAz3gAQM+AAEDPhABAz+gAQM/sAEDP8ABAz/gAQNHkAEDR7ABA0fQAQNH8AEDSCABA0gwAQNIQAEDSFABA0hgAQNIgAEDSKABA0iwAQNIwAEDSOABA0jwAQNQoAEDUMABA1DgAQNRAAEDUTABA1FAAQNRUAEDUWABA1FwAQNRkAEDUbABA1HAAQNR0AEDUfABA1IAAQNZsAEDWdABA1nwAQNaEAEDWkABA1pQAQNaYAEDWnABA1qAAQNaoAEDWsABA1rQAQNa4AEDWwABA1sQAQNiwAEDYuABA2MAAQNjIAEDY1ABA2NgAQNjcAEDY4ABA2OQAQNjsAEDY9ABA2PgAQNj8AEDZBABA2QgAQNr0AEDa/ABA2wQAQNsMAEDbGABA2xwAQNsgAEDbJABA2ygAQNswAEDbOABA2zwAQNtAAEDbSABA20wAQNxwAEDdAABA3ZwAQN4sAEDeOABA3kAAQN5IAEDeUABA3lgAQN5gAEDeZABA3nAAQN7UAEDfSABA31AAQN9YAEDfYABA32gAQN9wAEDfeABA34AAQN/0AEDgAABA4AwAQOAYAEDgJABA4DAAQOA8AEDgSABA4FAAQOI8AEDiRABA4kwAQOJUAEDiYABA4mQAQOJoAEDibABA4nAAQOJ4AEDigABA4oQAQOKIAEDikABA4pQAQOSAAEDkiABA5JAAQOSYAEDkpABA5KgAQOSsAEDksABA5LQAQOS8AEDkxABA5MgAQOTMAEDk1ABA5NgAQObEAEDmzABA5tQAQObcAEDm6ABA5uwAQObwAEDm9ABA5vgAQOcAAEDnCABA5wwAQOcQAEDnGABA5xwAQOkIAEDpEABA6RwAQOkkAEDpMABA6TQAQOk4AEDpPABA6UAAQOlIAEDpUABA6VQAQOlYAEDpYABA6WQAQOtQAEDrWABA62AAQOtoAEDrdABA63gAQOt8AEDrgABA64QAQOuMAEDrlABA65gAQOucAEDrpABA66gAQO2UAEDtnABA7aQAQO2sAEDtuABA7bwAQO3AAEDtxABA7cgAQO3QAEDt2ABA7dwAQO3gAEDt6ABA7ewAQO/YAEDv4ABA7+gAQO/wAEDv/ABA8AAAQPAEAEDwCABA8AwAQPAUAEDwHABA8CAAQPAkAEDwLABA8DAAQPJ8AEDzCABA84gAQPQIAED0EABA9BgAQPQgAED0KABA9DQAQPQ4AED0PABA9EgAQPRMAED0VABA9FgAQPRgAED0bABA9HAAQPR0AED0gABA9IQAQPSYAED0/ABA9SAAQPUoAED1MABA9VQAQPVgAED1bABA9XQAQPaYAED3KABA98QAQPhUAED4YABA+GgAQPhwAED4eABA+IAAQPiIAED4jABA+JgAQPj8AED5gABA+YgAQPmQAED5mABA+aAAQPmoAED5sABA+bgAQPnAAED6RABA+lAAQPpcAED6aABA+nQAQPqAAED6jABA+pgAQPqkAED6rABA/JgAQPygAED8qABA/LAAQPy8AED8wABA/MQAQPzIAED8zABA/NQAQPzcAED84ABA/OQAQPzsAED88ABA/twAQP7kAED+7ABA/vQAQP8AAED/BABA/wgAQP8MAED/EABA/xgAQP8gAED/JABA/ygAQP8wAED/NABBASAAQQEoAEEBNABBATwAQQFIAEEBTABBAVAAQQFUAEEBWABBAWAAQQFoAEEBbABBAXAAQQF4AEEBfABBAeAAQQHkAEEB6ABBAfAAQQPcAEED5ABBA+wAQQP0AEEEAABBBAQAQQQIAEEEDABBBBAAQQQYAEEEIABBBCQAQQQoAEEEMABBBDQAQQYgAEEGKABBBjAAQQY4AEEGRABBBkgAQQZMAEEGUABBBlQAQQZcAEEGZABBBmgAQQZsAEEGdABBBngAQQhkAEEIbABBCHQAQQh8AEEIiABBCIwAQQiQAEEIlABBCJgAQQig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AEFPZABBT2gAQU9sAEFPcABBT3QAQU98AEFPhABBT4gAQU+MAEFPlABBT5gAQVGEAEFRjABBUZQAQVGcAEFRqABBUawAQVGwAEFRtABBUbgAQVHAAEFRyABBUcwAQVHQAEFR2ABBUdwAQVPIAEFT0ABBU9gAQVPgAEFT7ABBU/AAQVP0AEFT+ABBU/wAQVQEAEFUDABBVBAAQVQUAEFUHABBVCAAQVZsAEFW+ABBV3gAQVf4AEFYAABBWAgAQVgQAEFYGABBWCQAQVgoAEFYLABBWDgAQVg8AEFYRABBWEgAQVhQAEFYXABBWGAAQVhkAEFYcABBWHQAQViIAEFY7ABBWRAAQVkYAEFZIABBWUQAQVlQAEFZXABBWWQAQVqIAEFbGABBW7QAQVxEAEFcUABBXFgAQVxgAEFcaABBXHAAQVx4AEFcfABBXIgAQVzsAEFdcABBXXgAQV2AAEFdiABBXZAAQV2YAEFdoABBXagAQV2wAEFeNABBXkAAQV5MAEFeWABBXmQAQV5wAEFefABBXogAQV6UAEFenABBYIgAQWCQAEFgmABBYKAAQWCsAEFgsABBYLQAQWC4AEFgvABBYMQAQWDMAEFg0ABBYNQAQWDcAEFg4ABBYswAQWLUAEFi3ABBYuQAQWLwAEFi9ABBYvgAQWL8AEFjAABBYwgAQWMQAEFjFABBYxgAQWMgAEFjJABBZRAAQWUYAEFlJABBZSwAQWU4AEFlPABBZUAAQWVEAEFlSABBZVAAQWVYAEFlXABBZWAAQWVoAEFlbABBZdAAQWXUAEFl2ABBZeAAQWfMAEFn1ABBZ9wAQWfkAEFn8ABBZ/QAQWf4AEFn/ABBaAAAQWgIAEFoEABBaBQAQWgYAEFoIABBaCQAQWoQAEFqGABBaiAAQWooAEFqNABBajgAQWo8AEFqQABBakQAQWpMAEFqVABBalgAQWpcAEFqZABBamgAQWxUAEFsXABBbGQAQWxsAEFseABBbHwAQWyAAEFshABBbIgAQWyQAEFsmABBbJwAQWygAEFsqABBbKwAQW6YAEFuoABBbqgAQW6wAEFuvABBbsAAQW7EAEFuyABBbswAQW7UAEFu3ABBbuAAQW7kAEFu7ABBbvAAQXDcAEFw5ABBcOwAQXD0AEFxAABBcQQAQXEIAEFxDABBcRAAQXEYAEFxIABBcSQAQXEoAEFxMABBcTQAQXJYAEFy6ABBc4QAQXQUAEF0IABBdCgAQXQwAEF0OABBdEAAQXRIAEF0TABBdFgAQXS8AEF1MABBdTgAQXVAAEF1SABBdVAAQXVYAEF1YABBdWgAQXXcAEF16ABBdfQAQXYAAEF2DABBdhgAQXYkAEF2MABBdjgAQXgkAEF4LABBeDQAQXg8AEF4SABBeEwAQXhQAEF4VABBeFgAQXhgAEF4aABBeGwAQXhwAEF4eABBeHwAQXpoAEF6cABBengAQXqAAEF6jABBepAAQXqUAEF6mABBepwAQXqkAEF6rABBerAAQXq0AEF6vABBesAAQXysAEF8tABBfLwAQXzEAEF80ABBfNQAQXzYAEF83ABBfOAAQXzoAEF88ABBfPQAQXz4AEF9AABBfQQAQX7wAEF++ABBfwQAQX8MAEF/GABBfxwAQX8gAEF/JABBfygAQX8wAEF/OABBfzwAQX9AAEF/SABBf0wAQYE4AEGBQABBgUgAQYFQAEGBXABBgWAAQYFkAEGBaABBgWwAQYF0AEGBfABBgYAAQYGEAEGBjABBgZAAQYN8AEGDhABBg4wAQYOUAEGDoABBg6QAQYOoAEGDrABBg7AAQYO4AEGDwABBg8QAQYPIAEGD0ABBg9QAQYXAAEGFyABBhdAAQYXYAEGF5ABBhegAQYXsAEGF8ABBhfQAQYX8AEGGBABBhggAQYYMAEGGFABBhhgAQYhkAEGI8ABBiXAAQYnwAEGJ+ABBigAAQYoIAEGKEABBihwAQYogAEGKJABBijAAQYo0AEGKPABBikAAQYpIAEGKVABBilgAQYpcAEGKaABBimwAQYqAAEGK5ABBiwgAQYsQAEGLGABBizwAQYtIAEGLVABBi1wAQYyAAEGNEABBjawAQY48AEGOSABBjlAAQY5YAEGOYABBjmgAQY5wAEGOdABBjoAAQY7kAEGPaABBj3AAQY94AEGPgABBj4gAQY+QAEGPmABBj6AAQY+oAEGQLABBkDgAQZBEAEGQUABBkFwAQZBoAEGQdABBkIAAQZCMAEGQlABBkoAAQZKIAEGSkABBkpgAQZKkAEGSqABBkqwAQZKwAEGStABBkrwAQZLEAEGSyABBkswAQZLUAEGS2ABBlMQAQZTMAEGU1ABBlNwAQZToAEGU7ABBlPAAQZT0AEGU+ABBlQAAQZUIAEGVDABBlRAAQZUYAEGVHABBlwgAQZcQAEGXHABBlyQAQZcwAEGXNABBlzgAQZc8AEGXQABBl0gAQZdQAEGXVABBl1gAQZdgAEGXZABBl8gAQZfMAEGX0ABBl9gAQZnEAEGZzABBmdQAQZncAEGZ6ABBmewAQZnwAEGZ9ABBmfgAQZoAAEGaCABBmgwAQZoQAEGaGABBmhwAQZwIAEGcEABBnBgAQZwgAEGcLABBnDAAQZw0AEGcOABBnDwAQZxEAEGcTABBnFAAQZxUAEGcXABBnGAAQZ5MAEGeVABBnlwAQZ5kAEGecABBnnQAQZ54AEGefABBnoAAQZ6IAEGekABBnpQAQZ6YAEGeoABBnqQAQaCQAEGgmABBoKAAQaCoAEGgtABBoLgAQaC8AEGgwABBoMQAQaDMAEGg1ABBoNgAQaDcAEGg5ABBoOgAQaLUAEGi3ABBouQAQaLsAEGi+ABBovwAQaMAAEGjBABBowgAQaMQAEGjGABBoxwAQaMgAEGjKABBoywAQaRQAEGk4ABBpXwAQaYMAEGmGABBpiAAQaYoAEGmMABBpjgAQaZAAEGmRABBplAAQaa0AEGnKABBpzAAQac4AEGnQABBp0gAQadQAEGnWABBp2AAQafUAEGn4ABBp+wAQaf4AEGoBABBqBAAQagcAEGoKABBqDAAQaocAEGqJABBqiwAQao0AEGqQABBqkQAQapIAEGqTABBqlAAQapYAEGqYABBqmQAQapoAEGqcABBqnQAQaxgAEGsaABBrHAAQax4AEGshABBrIgAQayMAEGskABBrJQAQaycAEGspABBrKgAQaysAEGstABBrLgAQa6kAEGurABBrrQAQa68AEGuyABBrswAQa7QAEGu1ABBrtgAQa7gAEGu6ABBruwAQa7wAEGu+ABBrvwAQbDoAEGw8ABBsPgAQbEAAEGxDABBsRAAQbEUAEGxGABBsRwAQbEkAEGxLABBsTAAQbE0AEGxPABBsUAAQbMsAEGzNABBszwAQbNEAEGzUABBs1QAQbNYAEGzXABBs2AAQbNoAEGzcABBs3QAQbN4AEGzgABBs4QAQbVwAEG1eABBtYAAQbWIAEG1lABBtZgAQbWcAEG1oABBtaQAQbWsAEG1tABBtbgAQbW8AEG1xABBtcgAQbe0AEG3vABBt8QAQbfMAEG32ABBt9wAQbfgAEG35ABBt+gAQbfwAEG3+ABBt/wAQbgAAEG4CABBuAwAQbpYAEG65ABBu2QAQbvkAEG77ABBu/QAQbv8AEG8BABBvBAAQbwUAEG8GABBvCQAQbwoAEG8MABBvDQAQbw8AEG8SABBvEwAQbxQAEG8XABBvGAAQbx0AEG82ABBvPwAQb0EAEG9DABBvTAAQb08AEG9SABBvVAAQb50AEG/BABBv6AAQcAwAEHAPABBwEQAQcBMAEHAVABBwFwAQcBkAEHAaABBwHQAQcDYAEHBXABBwWQAQcFsAEHBdABBwXwAQcGEAEHBjABBwZQAQcGcAEHCIABBwiwAQcI4AEHCRABBwlAAQcJcAEHCaABBwnQAQcKAAEHCiABBxHQAQcR8AEHEhABBxIwAQcSYAEHEnABBxKAAQcSkAEHEqABBxLAAQcS4AEHEvABBxMAAQcTIAEHEzABBxrgAQcbAAEHGyABBxtAAQcbcAEHG4ABBxuQAQcboAEHG7ABBxvQAQcb8AEHHAABBxwQAQccMAEHHEABByPwAQckEAEHJEABByRgAQckkAEHJKABBySwAQckwAEHJNABByTwAQclEAEHJSABByUwAQclUAEHJWABBybwAQcnAAEHJxABBycwAQcu4AEHLwABBy8gAQcvQAEHL3ABBy+AAQcvkAEHL6ABBy+wAQcv0AEHL/ABBzAAAQcwEAEHMDABBzBAAQc38AEHOBABBzgwAQc4UAEHOIABBziQAQc4oAEHOLABBzjAAQc44AEHOQABBzkQAQc5IAEHOUABBzlQAQdBAAEHQSABB0FAAQdBYAEHQZABB0GgAQdBsAEHQcABB0HQAQdB8AEHQhABB0IgAQdCMAEHQlABB0JgAQdKEAEHSjABB0pQAQdKcAEHSqABB0qwAQdKwAEHStABB0rgAQdLAAEHSyABB0swAQdLQAEHS2ABB0twAQdTIAEHU0ABB1NgAQdTgAEHU7ABB1PAAQdT0AEHU+ABB1PwAQdUEAEHVDABB1RAAQdUUAEHVHABB1SAAQdZEAEHW1ABB13AAQdgAAEHYDABB2BQAQdgcAEHYJABB2CwAQdg0AEHYOABB2EQAQdioAEHZHABB2SQAQdksAEHZNABB2TwAQdlEAEHZTABB2VQAQdnIAEHZ1ABB2eAAQdnsAEHZ+ABB2gQAQdoQAEHaHABB2iQAQdwQAEHcGABB3CQAQdwsAEHcOABB3DwAQdxAAEHcRABB3EgAQdxQAEHcWABB3FwAQdxgAEHcaABB3GwAQd5YAEHeYABB3mgAQd5wAEHefABB3oAAQd6EAEHeiABB3owAQd6UAEHenABB3qAAQd6kAEHerABB3rAAQeCcAEHgpABB4KwAQeC0AEHgwABB4MQAQeDIAEHgzABB4NAAQeDYAEHg4ABB4OQAQeDoAEHg8ABB4PQAQeLgAEHi6ABB4vQAQeL8AEHjCABB4wwAQeMQAEHjFABB4xgAQeMgAEHjKABB4ywAQeMwAEHjOABB4zwAQeUoAEHlMABB5TgAQeVAAEHlTABB5VAAQeVUAEHlWABB5VwAQeVkAEHlbABB5XAAQeV0AEHlfABB5YAAQedsAEHndABB53wAQeeEAEHnkABB55QAQeeYAEHnnABB56AAQeeoAEHnsABB57QAQee4AEHnwABB58QAQemwAEHpuABB6cAAQenIAEHp1ABB6dgAQencAEHp4ABB6eQAQensAEHp9ABB6fgAQen8AEHqBABB6ggAQepMAEHqUABB6lgAQeqcAEHq0ABB6twAQeroAEHq9ABB6vwAQezoAEHs8ABB7PgAQe0AAEHtDABB7RAAQe0UAEHtGABB7RwAQe0kAEHtLABB7TAAQe00AEHtPABB7UAAQe8sAEHvNABB7zwAQe9EAEHvUABB71QAQe9YAEHvXABB72AAQe9oAEHvcABB73QAQe94AEHvgABB74QAQfFwAEHxeABB8YQAQfGMAEHxmABB8ZwAQfGgAEHxpABB8agAQfGwAEHxuABB8bwAQfHAAEHxyABB8cwAQfQYAEH0pABB9SQAQfWkAEH1rABB9bQAQfW8AEH1xABB9dAAQfXUAEH12ABB9eQAQfXoAEH18ABB9fQAQfX8AEH2CABB9gwAQfYQAEH2HABB9iAAQfZEAEH2qABB9swAQfbUAEH23ABB9wAAQfcMAEH3GABB9yAAQfhEAEH41ABB+XAAQfoAAEH6DABB+hQAQfocAEH6JABB+iwAQfo0AEH6OABB+kQAQfqoAEH7LABB+zQAQfs8AEH7RABB+0wAQftUAEH7XABB+2QAQftsAEH78ABB+/wAQfwIAEH8FABB/CAAQfwsAEH8OABB/EQAQfxQAEH8WABB/kQAQf5MAEH+VABB/lwAQf5oAEH+bABB/nAAQf50AEH+eABB/oAAQf6IAEH+jABB/pAAQf6YAEH+nABCAIgAQgCQAEIAmABCAKAAQgCsAEIAsABCALQAQgC4AEIAvABCAMQAQgDMAEIA0ABCANQAQgDcAEIA4ABCAswAQgLUAEIC4ABCAugAQgL0AEIC+ABCAvwAQgMAAEIDBABCAwwAQgMUAEIDGABCAxwAQgMkAEIDKABCA4wAQgOQAEIDlABCA5wAQgWIAEIFkABCBZgAQgWgAEIFrABCBbAAQgW0AEIFuABCBbwAQgXEAEIFzABCBdAAQgXUAEIF3ABCBeAAQgfMAEIH1ABCB9wAQgfkAEIH8ABCB/QAQgf4AEIH/ABCCAAAQggIAEIIEABCCBQAQggYAEIIIABCCCQAQgoQAEIKGABCCiAAQgooAEIKNABCCjgAQgo8AEIKQABCCkQAQgpMAEIKVABCClgAQgpcAEIKZABCCmgAQgxUAEIMXABCDGQAQgxsAEIMeABCDHwAQgyAAEIMhABCDIgAQgyQAEIMmABCDJwAQgygAEIMqABCDKwAQg6YAEIOoABCDqgAQg6wAEIOvABCDsAAQg7EAEIOyABCDswAQg7UAEIO3ABCDuAAQg7kAEIO7ABCDvAAQhAUAEIQpABCEUAAQhHQAEIR3ABCEeQAQhHsAEIR9ABCEfwAQhIEAEISCABCEhQAQhJ4AEIS7ABCEvQAQhL8AEITBABCEwwAQhMUAEITHABCEyQAQhOYAEITpABCE7AAQhO8AEITyABCE9QAQhPgAEIT7ABCE/QAQhXgAEIV6ABCFfQAQhX8AEIWCABCFgwAQhYQAEIWFABCFhgAQhYgAEIWKABCFiwAQhYwAEIWOABCFjwAQhgoAEIYMABCGDgAQhhAAEIYTABCGFAAQhhUAEIYWABCGFwAQhhkAEIYbABCGHAAQhh0AEIYfABCGIAAQhpsAEIadABCGnwAQhqEAEIakABCGpQAQhqYAEIanABCGqAAQhqoAEIasABCGrQAQhq4AEIawABCGsQAQhywAEIcuABCHMQAQhzMAEIc2ABCHNwAQhzgAEIc5ABCHOgAQhzwAEIc+ABCHPwAQh0AAEIdCABCHQwAQh74AEIfAABCHwgAQh8QAEIfHABCHyAAQh8kAEIfKABCHywAQh80AEIfPABCH0AAQh9EAEIfTABCH1AAQiE8AEIhRABCIUwAQiFUAEIhYABCIWQAQiFoAEIhbABCIXAAQiF4AEIhgABCIYQAQiGIAEIhkABCIZQAQiOAAEIjiABCI5AAQiOYAEIjpABCI6gAQiOsAEIjsABCI7QAQiO8AEIjxABCI8gAQiPMAEIj1ABCI9gAQiYkAEImsABCJzAAQiewAEInuABCJ8AAQifIAEIn0ABCJ9wAQifgAEIn5ABCJ/AAQif0AEIn/ABCKAAAQigIAEIoFABCKBgAQigcAEIoKABCKCwAQihAAEIopABCKMgAQijQAEIo2ABCKPwAQikIAEIpFABCKRwAQipAAEIq0ABCK2wAQiv8AEIsCABCLBAAQiwYAEIsIABCLCgAQiwwAEIsNABCLEAAQiykAEItKABCLTAAQi04AEItQABCLUgAQi1QAEItWABCLWAAQi1oAEIt7ABCLfgAQi4EAEIuEABCLhwAQi4oAEIuNABCLkAAQi5MAEIuVABCMEAAQjBIAEIwUABCMFgAQjBkAEIwaABCMGwAQjBwAEIwdABCMHwAQjCEAEIwiABCMIwAQjCUAEIwmABCMoQAQjKMAEIylABCMpwAQjKoAEIyrABCMrAAQjK0AEIyuABCMsAAQjLIAEIyzABCMtAAQjLYAEIy3ABCNMgAQjTQAEI03ABCNOQAQjTwAEI09ABCNPgAQjT8AEI1AABCNQgAQjUQAEI1FABCNRgAQjUgAEI1JABCNYgAQjWMAEI1kABCNZgAQjeEAEI3jABCN5QAQjecAEI3qABCN6wAQjewAEI3tABCN7gAQjfAAEI3yABCN8wAQjfQAEI32ABCN9wAQjnIAEI50ABCOdgAQjngAEI57ABCOfAAQjn0AEI5+ABCOfwAQjoEAEI6DABCOhAAQjoUAEI6HABCOiAAQjwMAEI8FABCPBwAQjwkAEI8MABCPDQAQjw4AEI8PABCPEAAQjxIAEI8UABCPFQAQjxYAEI8YABCPGQAQj5QAEI+WABCPmAAQj5oAEI+dABCPngAQj58AEI+gABCPoQAQj6MAEI+lABCPpgAQj6cAEI+pABCPqgAQkCUAEJAnABCQKQAQkCsAEJAuABCQLwAQkDAAEJAxABCQMgAQkDQAEJA2ABCQNwAQkDgAEJA6ABCQOwAQkIQAEJCoABCQzwAQkPMAEJD2ABCQ+AAQkPoAEJD8ABCQ/gAQkQAAEJEBABCRBAAQkR0AEJE6ABCRPAAQkT4AEJFAABCRQgAQkUQAEJFGABCRSAAQkWUAEJFoABCRawAQkW4AEJFxABCRdAAQkXcAEJF6ABCRfAAQkfcAEJH5ABCR+wAQkf0AEJIAABCSAQAQkgIAEJIDABCSBAAQkgYAEJIIABCSCQAQkgoAEJIMABCSDQAQkogAEJKKABCSjAAQko4AEJKRABCSkgAQkpMAEJKUABCSlQAQkpcAEJKZABCSmgAQkpsAEJKdABCSngAQkxkAEJMbABCTHQAQkx8AEJMiABCTIwAQkyQAEJMlABCTJgAQkygAEJMqABCTKwAQkywAEJMuABCTLwAQk6oAEJOsABCTrgAQk7AAEJOzABCTtAAQk7UAEJO2ABCTtwAQk7kAEJO7ABCTvAAQk70AEJO/ABCTwAAQlDsAEJQ9ABCUPwAQlEEAEJREABCURQAQlEYAEJRHABCUSAAQlEoAEJRMABCUTQAQlE4AEJRQABCUUQAQlMwAEJTOABCU0AAQlNIAEJTVABCU1gAQlNcAEJTYABCU2QAQlNsAEJTdABCU3gAQlN8AEJThABCU4gAQlV0AEJVfABCVYQAQlWMAEJVmABCVZwAQlWgAEJVpABCVagAQlWwAEJVuABCVbwAQlXAAEJVyABCVcwAQlgYAEJYpABCWSQAQlmkAEJZrABCWbQAQlm8AEJZxABCWdAAQlnUAEJZ2ABCWeQAQlnoAEJZ8ABCWfQAQln8AEJaCABCWgwAQloQAEJaHABCWiAAQlo0AEJamABCWrwAQlrEAEJazABCWvAAQlr8AEJbCABCWxAAQlw0AEJcxABCXWAAQl3wAEJd/ABCXgQAQl4MAEJeFABCXhwAQl4kAEJeKABCXjQAQl6YAEJfHABCXyQAQl8sAEJfNABCXzwAQl9EAEJfTABCX1QAQl9cAEJf4ABCX+wAQl/4AEJgBABCYBAAQmAcAEJgKABCYDQAQmBAAEJgSABCYjQAQmI8AEJiRABCYkwAQmJYAEJiXABCYmAAQmJkAEJiaABCYnAAQmJ4AEJifABCYoAAQmKIAEJijABCZHgAQmSAAEJkiABCZJAAQmScAEJkoABCZKQAQmSoAEJkrABCZLQAQmS8AEJkwABCZMQAQmTMAEJk0ABCZrwAQmbEAEJm0ABCZtgAQmbkAEJm6ABCZuwAQmbwAEJm9ABCZvwAQmcEAEJnCABCZwwAQmcUAEJnGABCZ3wAQmeAAEJnhABCZ4wAQml4AEJpgABCaYgAQmmQAEJpnABCaaAAQmmkAEJpqABCaawAQmm0AEJpvABCacAAQmnEAEJpzABCadAAQmu8AEJrxABCa8wAQmvUAEJr4ABCa+QAQmvoAEJr7ABCa/AAQmv4AEJsAABCbAQAQmwIAEJsEABCbBQAQm4AAEJuCABCbhAAQm4YAEJuJABCbigAQm4sAEJuMABCbjQAQm48AEJuRABCbkgAQm5MAEJuVABCblgAQnBEAEJwTABCcFQAQnBcAEJwaABCcGwAQnBwAEJwdABCcHgAQnCAAEJwiABCcIwAQnCQAEJwmABCcJwAQnKIAEJykABCcpgAQnKgAEJyrABCcrAAQnK0AEJyuABCcrwAQnLEAEJyzABCctAAQnLUAEJy3ABCcuAAQnQEAEJ0lABCdTAAQnXAAEJ1zABCddQAQnXcAEJ15ABCdewAQnX0AEJ1+ABCdgQAQnZoAEJ23ABCduQAQnbsAEJ29ABCdvwAQncEAEJ3DABCdxQAQneIAEJ3lABCd6AAQnesAEJ3uABCd8QAQnfQAEJ33ABCd+QAQnnQAEJ52ABCeeAAQnnoAEJ59ABCefgAQnn8AEJ6AABCegQAQnoMAEJ6FABCehgAQnocAEJ6JABCeigAQnwUAEJ8HABCfCQAQnwsAEJ8OABCfDwAQnxAAEJ8RABCfEgAQnxQAEJ8WABCfFwAQnxgAEJ8aABCfGwAQn5YAEJ+YABCfmgAQn5wAEJ+fABCfoAAQn6EAEJ+iABCfowAQn6UAEJ+nABCfqAAQn6kAEJ+rABCfrAAQoCcAEKApABCgKwAQoC0AEKAwABCgMQAQoDIAEKAzABCgNAAQoDYAEKA4ABCgOQAQoDoAEKA8ABCgPQAQoLgAEKC6ABCgvAAQoL4AEKDBABCgwgAQoMMAEKDEABCgxQAQoMcAEKDJABCgygAQoMsAEKDNABCgzgAQoUkAEKFLABChTQAQoU8AEKFSABChUwAQoVQAEKFVABChVgAQoVgAEKFaABChWwAQoVwAEKFeABChXwAQodoAEKHcABCh3gAQoeAAEKHjABCh5AAQoeUAEKHmABCh5wAQoekAEKHrABCh7AAQoe0AEKHvABCh8AAQooMAEKKmABCixgAQouYAEKLoABCi6gAQouwAEKLuABCi8QAQovIAEKLzABCi9gAQovcAEKL5ABCi+gAQovwAEKL/ABCjAAAQowEAEKMEABCjBQAQowoAEKMjABCjLAAQoy4AEKMwABCjOQAQozwAEKM/ABCjQQAQo4oAEKOuABCj1QAQo/kAEKP8ABCj/gAQpAAAEKQCABCkBAAQpAYAEKQHABCkCgAQpCMAEKREABCkRgAQpEgAEKRKABCkTAAQpE4AEKRQABCkUgAQpFQAEKR1ABCkeAAQpHsAEKR+ABCkgQAQpIQAEKSHABCkigAQpI0AEKSPABClCgAQpQwAEKUOABClEAAQpRMAEKUUABClFQAQpRYAEKUXABClGQAQpRsAEKUcABClHQAQpR8AEKUgABClmwAQpZ0AEKWfABCloQAQpaQAEKWlABClpgAQpacAEKWoABClqgAQpawAEKWtABClrgAQpbAAEKWxABCmLAAQpi4AEKYxABCmMwAQpjYAEKY3ABCmOAAQpjkAEKY6ABCmPAAQpj4AEKY/ABCmQAAQpkIAEKZDABCmXAAQpl0AEKZeABCmYAAQptsAEKbdABCm3wAQpuEAEKbkABCm5QAQpuYAEKbnABCm6AAQpuoAEKbsABCm7QAQpu4AEKbwABCm8QAQp2wAEKduABCncAAQp3IAEKd1ABCndgAQp3cAEKd4ABCneQAQp3sAEKd9ABCnfgAQp38AEKeBABCnggAQp/0AEKf/ABCoAQAQqAMAEKgGABCoBwAQqAgAEKgJABCoCgAQqAwAEKgOABCoDwAQqBAAEKgSABCoEwAQqI4AEKiQABCokgAQqJQAEKiXABComAAQqJkAEKiaABComwAQqJ0AEKifABCooAAQqKEAEKijABCopAAQqR8AEKkhABCpIwAQqSUAEKkoABCpKQAQqSoAEKkrABCpLAAQqS4AEKkwABCpMQAQqTIAEKk0ABCpNQAQqX4AEKmiABCpyQAQqe0AEKnwABCp8gAQqfQAEKn2ABCp+AAQqfoAEKn7ABCp/gAQqhcAEKo0ABCqNgAQqjgAEKo6ABCqPAAQqj4AEKpAABCqQgAQql8AEKpiABCqZQAQqmgAEKprABCqbgAQqnEAEKp0ABCqdgAQqvEAEKrzABCq9QAQqvcAEKr6ABCq+wAQqvwAEKr9ABCq/gAQqwAAEKsCABCrAwAQqwQAEKsGABCrBwAQq4IAEKuEABCrhgAQq4gAEKuLABCrjAAQq40AEKuOABCrjwAQq5EAEKuTABCrlAAQq5UAEKuXABCrmAAQrBMAEKwVABCsFwAQrBkAEKwcABCsHQAQrB4AEKwfABCsIAAQrCIAEKwkABCsJQAQrCYAEKwoABCsKQAQrKQAEKymABCsqQAQrKsAEKyuABCsrwAQrLAAEKyxABCssgAQrLQAEKy2ABCstwAQrLgAEKy6ABCsuwAQrTYAEK04ABCtOgAQrTwAEK0/ABCtQAAQrUEAEK1CABCtQwAQrUUAEK1HABCtSAAQrUkAEK1LABCtTAAQrccAEK3JABCtywAQrc0AEK3QABCt0QAQrdIAEK3TABCt1AAQrdYAEK3YABCt2QAQrdoAEK3cABCt3QAQrlgAEK5aABCuXAAQrl4AEK5hABCuYgAQrmMAEK5kABCuZQAQrmcAEK5pABCuagAQrmsAEK5tABCubgAQrwEAEK8kABCvRAAQr2QAEK9mABCvaAAQr2oAEK9sABCvbwAQr3AAEK9xABCvdAAQr3UAEK93ABCveAAQr3sAEK9+ABCvfwAQr4AAEK+DABCvhAAQr4kAEK+iABCvqwAQr60AEK+vABCvuAAQr7sAEK++ABCvwAAQsAkAELAtABCwVAAQsHgAELB7ABCwfQAQsH8AELCBABCwgwAQsIUAELCGABCwiQAQsKIAELDDABCwxQAQsMcAELDJABCwywAQsM0AELDPABCw0QAQsNMAELD0ABCw9wAQsPoAELD9ABCxAAAQsQMAELEGABCxCQAQsQwAELEOABCxiQAQsYsAELGNABCxjwAQsZIAELGTABCxlAAQsZUAELGWABCxmAAQsZoAELGbABCxnAAQsZ4AELGfABCyGgAQshwAELIeABCyIAAQsiMAELIkABCyJQAQsiYAELInABCyKQAQsisAELIsABCyLQAQsi8AELIwABCyqwAQsq0AELKwABCysgAQsrUAELK2ABCytwAQsrgAELK5ABCyuwAQsr0AELK+ABCyvwAQssEAELLCABCy2wAQstwAELLdABCy3wAQs1oAELNcABCzXgAQs2AAELNjABCzZAAQs2UAELNmABCzZwAQs2kAELNrABCzbAAQs20AELNvABCzcAAQs+sAELPtABCz7wAQs/EAELP0ABCz9QAQs/YAELP3ABCz+AAQs/oAELP8ABCz/QAQs/4AELQAABC0AQAQtHwAELR+ABC0gAAQtIIAELSFABC0hgAQtIcAELSIABC0iQAQtIsAELSNABC0jgAQtI8AELSRABC0kgAQtQ0AELUPABC1EQAQtRMAELUWABC1FwAQtRgAELUZABC1GgAQtRwAELUeABC1HwAQtSAAELUiABC1IwAQtZ4AELWgABC1ogAQtaQAELWnABC1qAAQtakAELWqABC1qwAQta0AELWvABC1sAAQtbEAELWzABC1tAAQtf0AELYhABC2SAAQtmwAELZvABC2cQAQtnMAELZ1ABC2dwAQtnkAELZ6ABC2fQAQtpYAELazABC2tQAQtrcAELa5ABC2uwAQtr0AELa/ABC2wQAQtt4AELbhABC25AAQtucAELbqABC27QAQtvAAELbzABC29QAQt3AAELdyABC3dAAQt3YAELd5ABC3egAQt3sAELd8ABC3fQAQt38AELeBABC3ggAQt4MAELeFABC3hgAQuAEAELgDABC4BgAQuAgAELgLABC4DAAQuA0AELgOABC4DwAQuBEAELgTABC4FAAQuBUAELgXABC4GAAQuJMAELiVABC4lwAQuJkAELicABC4nQAQuJ4AELifABC4oAAQuKIAELikABC4pQAQuKYAELioABC4qQAQuSQAELkmABC5KQAQuSsAELkuABC5LwAQuTAAELkxABC5MgAQuTQAELk2ABC5NwAQuTgAELk6ABC5OwAQubYAELm4ABC5ugAQubwAELm/ABC5wAAQucEAELnCABC5wwAQucUAELnHABC5yAAQuckAELnLABC5zAAQukcAELpJABC6SwAQuk0AELpQABC6UQAQulIAELpTABC6VAAQulYAELpYABC6WQAQuloAELpcABC6XQAQutgAELraABC63QAQut8AELriABC64wAQuuQAELrlABC65gAQuugAELrqABC66wAQuuwAELruABC67wAQu4IAELulABC7xQAQu+UAELvnABC76QAQu+sAELvtABC78AAQu/EAELvyABC79QAQu/YAELv4ABC7+QAQu/sAELv+ABC7/wAQvAAAELwDABC8BAAQvAkAELwiABC8KwAQvC0AELwvABC8OAAQvDsAELw+ABC8QAAQvIkAELytABC81AAQvPgAELz7ABC8/QAQvP8AEL0BABC9AwAQvQUAEL0GABC9CQAQvSIAEL1DABC9RQAQvUcAEL1JABC9SwAQvU0AEL1PABC9UQAQvVMAEL10ABC9dwAQvXoAEL19ABC9gAAQvYMAEL2GABC9iQAQvYwAEL2OABC+CQAQvgsAEL4NABC+DwAQvhIAEL4TABC+FAAQvhUAEL4WABC+GAAQvhoAEL4bABC+HAAQvh4AEL4fABC+mgAQvpwAEL6eABC+oAAQvqMAEL6kABC+pQAQvqYAEL6nABC+qQAQvqsAEL6sABC+rQAQvq8AEL6wABC/KwAQvy0AEL8wABC/MgAQvzUAEL82ABC/NwAQvzgAEL85ABC/OwAQvz0AEL8+ABC/PwAQv0EAEL9CABC/WwAQv1wAEL9dABC/XwAQv9oAEL/cABC/3gAQv+AAEL/jABC/5AAQv+UAEL/mABC/5wAQv+kAEL/rABC/7AAQv+0AEL/vABC/8AAQwGsAEMBtABDAbwAQwHEAEMB0ABDAdQAQwHYAEMB3ABDAeAAQwHoAEMB8ABDAfQAQwH4AEMCAABDAgQAQwPwAEMD+ABDBAAAQwQIAEMEFABDBBgAQwQcAEMEIABDBCQAQwQsAEMENABDBDgAQwQ8AEMERABDBEgAQwY0AEMGPABDBkQAQwZMAEMGWABDBlwAQwZgAEMGZABDBmgAQwZwAEMGeABDBnwAQwaAAEMGiABDBowAQwh4AEMIgABDCIgAQwiQAEMInABDCKAAQwikAEMIqABDCKwAQwi0AEMIvABDCMAAQwjEAEMIzABDCNAAQwn0AEMKhABDCyAAQwuwAEMLvABDC8QAQwvMAEML1ABDC9wAQwvkAEML6ABDC/QAQwxYAEMMzABDDNQAQwzcAEMM5ABDDOwAQwz0AEMM/ABDDQQAQw14AEMNhABDDZAAQw2cAEMNqABDDbQAQw3AAEMNzABDDdQAQw/AAEMPyABDD9AAQw/YAEMP5ABDD+gAQw/sAEMP8ABDD/QAQw/8AEMQBABDEAgAQxAMAEMQFABDEBgAQxIEAEMSDABDEhQAQxIcAEMSKABDEiwAQxIwAEMSNABDEjgAQxJAAEMSSABDEkwAQxJQAEMSWABDElwAQxRIAEMUUABDFFgAQxRgAEMUbABDFHAAQxR0AEMUeABDFHwAQxSEAEMUjABDFJAAQxSUAEMUnABDFKAAQxaMAEMWlABDFpwAQxakAEMWsABDFrQAQxa4AEMWvABDFsAAQxbIAEMW0ABDFtQAQxbYAEMW4ABDFuQAQxjQAEMY2ABDGOAAQxjoAEMY9ABDGPgAQxj8AEMZAABDGQQAQxkMAEMZFABDGRgAQxkcAEMZJABDGSgAQxsUAEMbHABDGyQAQxssAEMbOABDGzwAQxtAAEMbRABDG0gAQxtQAEMbWABDG1wAQxtgAEMbaABDG2wAQx1YAEMdYABDHWgAQx1wAEMdfABDHYAAQx2EAEMdiABDHYwAQx2UAEMdnABDHaAAQx2kAEMdrABDHbAAQx/8AEMgiABDIQgAQyGIAEMhkABDIZgAQyGgAEMhqABDIbQAQyG4AEMhvABDIcgAQyHMAEMh1ABDIdgAQyHgAEMh7ABDIfAAQyH0AEMiAABDIgQAQyIYAEMifABDIqAAQyKoAEMisABDItQAQyLgAEMi7ABDIvQAQyQYAEMkqABDJUQAQyXUAEMl4ABDJegAQyXwAEMl+ABDJgAAQyYIAEMmDABDJhgAQyZ8AEMnAABDJwgAQycQAEMnGABDJyAAQycoAEMnMABDJzgAQydAAEMnxABDJ9AAQyfcAEMn6ABDJ/QAQygAAEMoDABDKBgAQygkAEMoLABDKhgAQyogAEMqKABDKjAAQyo8AEMqQABDKkQAQypIAEMqTABDKlQAQypcAEMqYABDKmQAQypsAEMqcABDLFwAQyxkAEMsbABDLHQAQyyAAEMshABDLIgAQyyMAEMskABDLJgAQyygAEMspABDLKgAQyywAEMstABDLqAAQy6oAEMutABDLrwAQy7IAEMuzABDLtAAQy7UAEMu2ABDLuAAQy7oAEMu7ABDLvAAQy74AEMu/ABDL2AAQy9kAEMvaABDL3AAQzFcAEMxZABDMWwAQzF0AEMxgABDMYQAQzGIAEMxjABDMZAAQzGYAEMxoABDMaQAQzGoAEMxsABDMbQAQzOgAEMzqABDM7AAQzO4AEMzxABDM8gAQzPMAEMz0ABDM9QAQzPcAEMz5ABDM+gAQzPsAEMz9ABDM/gAQzXkAEM17ABDNfQAQzX8AEM2CABDNgwAQzYQAEM2FABDNhgAQzYgAEM2KABDNiwAQzYwAEM2OABDNjwAQzgoAEM4MABDODgAQzhAAEM4TABDOFAAQzhUAEM4WABDOFwAQzhkAEM4bABDOHAAQzh0AEM4fABDOIAAQzpsAEM6dABDOnwAQzqEAEM6kABDOpQAQzqYAEM6nABDOqAAQzqoAEM6sABDOrQAQzq4AEM6wABDOsQAQzvoAEM8eABDPRQAQz2kAEM9sABDPbgAQz3AAEM9yABDPdAAQz3YAEM93ABDPegAQz5MAEM+wABDPsgAQz7QAEM+2ABDPuAAQz7oAEM+8ABDPvgAQz9sAEM/eABDP4QAQz+QAEM/nABDP6gAQz+0AEM/wABDP8gAQ0G0AENBvABDQcgAQ0HQAENB3ABDQeAAQ0HkAENB6ABDQewAQ0H0AENB/ABDQgAAQ0IEAENCDABDQhAAQ0P8AENEBABDRAwAQ0QUAENEIABDRCQAQ0QoAENELABDRDAAQ0Q4AENEQABDREQAQ0RIAENEUABDRFQAQ0ZAAENGSABDRlAAQ0ZYAENGZABDRmgAQ0ZsAENGcABDRnQAQ0Z8AENGhABDRogAQ0aMAENGlABDRpgAQ0iEAENIjABDSJgAQ0igAENIrABDSLAAQ0i0AENIuABDSLwAQ0jEAENIzABDSNAAQ0jUAENI3ABDSOAAQ0rMAENK1ABDStwAQ0rkAENK8ABDSvQAQ0r4AENK/ABDSwAAQ0sIAENLEABDSxQAQ0sYAENLIABDSyQAQ00QAENNGABDTSAAQ00oAENNNABDTTgAQ008AENNQABDTUQAQ01MAENNVABDTVgAQ01cAENNZABDTWgAQ09UAENPXABDT2QAQ09sAENPeABDT3wAQ0+AAENPhABDT4gAQ0+QAENPmABDT5wAQ0+gAENPqABDT6wAQ1H4AENShABDUwQAQ1OEAENTjABDU5QAQ1OcAENTpABDU7AAQ1O0AENTuABDU8QAQ1PIAENT0ABDU9QAQ1PcAENT6ABDU+wAQ1PwAENT/ABDVAAAQ1QUAENUeABDVJwAQ1SkAENUrABDVNAAQ1TcAENU6ABDVPAAQ1YUAENWpABDV0AAQ1fQAENX3ABDV+QAQ1fsAENX9ABDV/wAQ1gEAENYCABDWBQAQ1h4AENY/ABDWQQAQ1kMAENZFABDWRwAQ1kkAENZLABDWTQAQ1k8AENZwABDWcwAQ1nYAENZ5ABDWfAAQ1n8AENaCABDWhQAQ1ogAENaKABDXBQAQ1wcAENcJABDXCwAQ1w4AENcPABDXEAAQ1xEAENcSABDXFAAQ1xYAENcXABDXGAAQ1xoAENcbABDXlgAQ15gAENeaABDXnAAQ158AENegABDXoQAQ16IAENejABDXpQAQ16cAENeoABDXqQAQ16sAENesABDYJwAQ2CkAENgsABDYLgAQ2DEAENgyABDYMwAQ2DQAENg1ABDYNwAQ2DkAENg6ABDYOwAQ2D0AENg+ABDYVwAQ2FgAENhZABDYWwAQ2NYAENjYABDY2gAQ2NwAENjfABDY4AAQ2OEAENjiABDY4wAQ2OUAENjnABDY6AAQ2OkAENjrABDY7AAQ2WcAENlpABDZawAQ2W0AENlwABDZcQAQ2XIAENlzABDZdAAQ2XYAENl4ABDZeQAQ2XoAENl8ABDZfQAQ2fgAENn6ABDZ/AAQ2f4AENoBABDaAgAQ2gMAENoEABDaBQAQ2gcAENoJABDaCgAQ2gsAENoNABDaDgAQ2okAENqLABDajQAQ2o8AENqSABDakwAQ2pQAENqVABDalgAQ2pgAENqaABDamwAQ2pwAENqeABDanwAQ2xoAENscABDbHgAQ2yAAENsjABDbJAAQ2yUAENsmABDbJwAQ2ykAENsrABDbLAAQ2y0AENsvABDbMAAQ23kAENudABDbxAAQ2+gAENvrABDb7QAQ2+8AENvxABDb8wAQ2/UAENv2ABDb+QAQ3BIAENwvABDcMQAQ3DMAENw1ABDcNwAQ3DkAENw7ABDcPQAQ3FoAENxdABDcYAAQ3GMAENxmABDcaQAQ3GwAENxvABDccQAQ3OwAENzuABDc8AAQ3PIAENz1ABDc9gAQ3PcAENz4ABDc+QAQ3PsAENz9ABDc/gAQ3P8AEN0BABDdAgAQ3X0AEN1/ABDdgQAQ3YMAEN2GABDdhwAQ3YgAEN2JABDdigAQ3YwAEN2OABDdjwAQ3ZAAEN2SABDdkwAQ3g4AEN4QABDeEgAQ3hQAEN4XABDeGAAQ3hkAEN4aABDeGwAQ3h0AEN4fABDeIAAQ3iEAEN4jABDeJAAQ3p8AEN6hABDepAAQ3qYAEN6pABDeqgAQ3qsAEN6sABDerQAQ3q8AEN6xABDesgAQ3rMAEN61ABDetgAQ3zEAEN8zABDfNQAQ3zcAEN86ABDfOwAQ3zwAEN89ABDfPgAQ30AAEN9CABDfQwAQ30QAEN9GABDfRwAQ38IAEN/EABDfxgAQ38gAEN/LABDfzAAQ380AEN/OABDfzwAQ39EAEN/TABDf1AAQ39UAEN/XABDf2AAQ4FMAEOBVABDgVwAQ4FkAEOBcABDgXQAQ4F4AEOBfABDgYAAQ4GIAEOBkABDgZQAQ4GYAEOBoABDgaQAQ4PwAEOEfABDhPwAQ4V8AEOFhABDhYwAQ4WUAEOFnABDhagAQ4WsAEOFsABDhbwAQ4XAAEOFyABDhcwAQ4XUAEOF4ABDheQAQ4XoAEOF9ABDhfgAQ4YMAEOGcABDhpQAQ4acAEOGpABDhsgAQ4bUAEOG4ABDhugAQ4gMAEOInABDiTgAQ4nIAEOJ1ABDidwAQ4nkAEOJ7ABDifQAQ4n8AEOKAABDigwAQ4pwAEOK9ABDivwAQ4sEAEOLDABDixQAQ4scAEOLJABDiywAQ4s0AEOLuABDi8QAQ4vQAEOL3ABDi+gAQ4v0AEOMAABDjAwAQ4wYAEOMIABDjgwAQ44UAEOOHABDjiQAQ44wAEOONABDjjgAQ448AEOOQABDjkgAQ45QAEOOVABDjlgAQ45gAEOOZABDkFAAQ5BYAEOQYABDkGgAQ5B0AEOQeABDkHwAQ5CAAEOQhABDkIwAQ5CUAEOQmABDkJwAQ5CkAEOQqABDkpQAQ5KcAEOSqABDkrAAQ5K8AEOSwABDksQAQ5LIAEOSzABDktQAQ5LcAEOS4ABDkuQAQ5LsAEOS8ABDk1QAQ5NYAEOTXABDk2QAQ5VQAEOVWABDlWAAQ5VoAEOVdABDlXgAQ5V8AEOVgABDlYQAQ5WMAEOVlABDlZgAQ5WcAEOVpABDlagAQ5eUAEOXnABDl6QAQ5esAEOXuABDl7wAQ5fAAEOXxABDl8gAQ5fQAEOX2ABDl9wAQ5fgAEOX6ABDl+wAQ5nYAEOZ4ABDmegAQ5nwAEOZ/ABDmgAAQ5oEAEOaCABDmgwAQ5oUAEOaHABDmiAAQ5okAEOaLABDmjAAQ5wcAEOcJABDnCwAQ5w0AEOcQABDnEQAQ5xIAEOcTABDnFAAQ5xYAEOcYABDnGQAQ5xoAEOccABDnHQAQ55gAEOeaABDnnAAQ554AEOehABDnogAQ56MAEOekABDnpQAQ56cAEOepABDnqgAQ56sAEOetABDnrgAQ5/cAEOgbABDoQgAQ6GYAEOhpABDoawAQ6G0AEOhvABDocQAQ6HMAEOh0ABDodwAQ6JA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AEQL4ABEC+gARAvwAEQL/ABEDAAARAwEAEQMCABEDAwARAwUAEQMHABEDCAARAwkAEQMLABEDDAARA4cAEQOJABEDiwARA40AEQOQABEDkQARA5IAEQOTABEDlAARA5YAEQOYABEDmQARA5oAEQOcABEDnQARBBgAEQQaABEEHAARBB4AEQQhABEEIgARBCMAEQQkABEEJQARBCcAEQQpABEEKgARBCsAEQQtABEELgARBKkAEQSrABEErQARBK8AEQSyABEEswARBLQAEQS1ABEEtgARBLgAEQS6ABEEuwARBLwAEQS+ABEEvwARBToAEQU8ABEFPgARBUAAEQVDABEFRAARBUUAEQVGABEFRwARBUkAEQVLABEFTAARBU0AEQVPABEFUAARBcsAEQXNABEFzwARBdEAEQXUABEF1QARBdYAEQXXABEF2AARBdoAEQXcABEF3QARBd4AEQXgABEF4QARBnQAEQaXABEGtwARBtcAEQbZABEG2wARBt0AEQbfABEG4gARBuMAEQbkABEG5wARBugAEQbqABEG6wARBu0AEQbwABEG8QARBvIAEQb1ABEG9gARBvsAEQcUABEHHQARBx8AEQchABEHKgARBy0AEQcwABEHMgARB3sAEQefABEHxgARB+oAEQftABEH7wARB/EAEQfzABEH9QARB/cAEQf4ABEH+wARCBQAEQg1ABEINwARCDkAEQg7ABEIPQARCD8AEQhBABEIQwARCEUAEQhmABEIaQARCGwAEQhvABEIcgARCHUAEQh4ABEIewARCH4AEQiAABEI+wARCP0AEQj/ABEJAQARCQQAEQkFABEJBgARCQcAEQkIABEJCgARCQwAEQkNABEJDgARCRAAEQkRABEJjAARCY4AEQmQABEJkgARCZUAEQmWABEJlwARCZgAEQmZABEJmwARCZ0AEQmeABEJnwARCaEAEQmiABEKHQARCh8AEQoiABEKJAARCicAEQooABEKKQARCioAEQorABEKLQARCi8AEQowABEKMQARCjMAEQo0ABEKTQARCk4AEQpPABEKUQARCswAEQrOABEK0AARCtIAEQrVABEK1gARCtcAEQrYABEK2QARCtsAEQrdABEK3gARCt8AEQrhABEK4gARC10AEQtfABELYQARC2MAEQtmABELZwARC2gAEQtpABELagARC2wAEQtuABELbwARC3AAEQtyABELcwARC+4AEQvwABEL8gARC/QAEQv3ABEL+AARC/kAEQv6ABEL+wARC/0AEQv/ABEMAAARDAEAEQwDABEMBAARDH8AEQyBABEMgwARDIUAEQyIABEMiQARDIoAEQyLABEMjAARDI4AEQyQABEMkQARDJIAEQyUABEMlQARDRAAEQ0SABENFAARDRYAEQ0ZABENGgARDRsAEQ0cABENHQARDR8AEQ0hABENIgARDSMAEQ0lABENJgARDW8AEQ2TABENugARDd4AEQ3hABEN4wARDeUAEQ3nABEN6QARDesAEQ3sABEN7wARDggAEQ4lABEOJwARDikAEQ4rABEOLQARDi8AEQ4xABEOMwARDlAAEQ5TABEOVgARDlkAEQ5cABEOXwARDmIAEQ5lABEOZwARDuIAEQ7kABEO5wARDukAEQ7sABEO7QARDu4AEQ7vABEO8AARDvIAEQ70ABEO9QARDvYAEQ74ABEO+QARD3QAEQ92ABEPeAARD3oAEQ99ABEPfgARD38AEQ+AABEPgQARD4MAEQ+FABEPhgARD4cAEQ+JABEPigAREAUAERAHABEQCQAREAsAERAOABEQDwAREBAAERARABEQEgAREBQAERAWABEQFwAREBgAERAaABEQGwAREJYAERCYABEQmwAREJ0AERCgABEQoQAREKIAERCjABEQpAAREKYAERCoABEQqQAREKoAERCsABEQrQARESgAEREqABERLAARES4AERExABERMgARETMAERE0ABERNQARETcAERE5ABEROgARETsAERE9ABERPgAREbkAERG7ABERvQAREb8AERHCABERwwAREcQAERHFABERxgAREcgAERHKABERywAREcwAERHOABERzwAREkoAERJMABESTgARElAAERJTABESVAARElUAERJWABESVwARElkAERJbABESXAAREl0AERJfABESYAAREnEAERJyABESdAAREu8AERLxABES8wAREvUAERL4ABES+QAREvoAERL7ABES/AAREv4AERMAABETAQAREwIAERMEABETBQARE4AAEROCABEThAARE4YAEROJABETigARE4sAEROMABETjQARE48AERORABETkgARE5MAEROVABETlgARFBEAERQTABEUFgARFBgAERQbABEUHAARFB0AERQeABEUHwARFCEAERQjABEUJAARFCUAERQnABEUKAARFLsAERTeABEU/gARFR4AERUgABEVIgARFSQAERUmABEVKQARFSoAERUrABEVLgARFS8AERUxABEVMgARFTQAERU3ABEVOAARFTkAERU8ABEVPQARFUIAERVbABEVZAARFWYAERVoABEVcQARFXQAERV3ABEVeQARFcIAERXmABEWDQARFjEAERY0ABEWNgARFjgAERY6ABEWPAARFj4AERY/ABEWQgARFlsAERZ8ABEWfgARFoAAERaCABEWhAARFoYAERaIABEWigARFowAERatABEWsAARFrMAERa2ABEWuQARFrwAERa/ABEWwgARFsUAERbHABEXQgARF0QAERdGABEXSAARF0sAERdMABEXTQARF04AERdPABEXUQARF1MAERdUABEXVQARF1cAERdYABEX0wARF9UAERfXABEX2QARF9wAERfdABEX3gARF98AERfgABEX4gARF+QAERflABEX5gARF+gAERfpABEYZAARGGYAERhpABEYawARGG4AERhvABEYcAARGHEAERhyABEYdAARGHYAERh3ABEYeAARGHoAERh7ABEYlAARGJUAERiWABEYmAARGRMAERkVABEZFwARGRkAERkcABEZHQARGR4AERkfABEZIAARGSIAERkkABEZJQARGSYAERkoABEZKQARGaQAERmmABEZqAARGaoAERmtABEZrgARGa8AERmwABEZsQARGbMAERm1ABEZtgARGbcAERm5ABEZugARGjUAERo3ABEaOQARGjsAERo+ABEaPwARGkAAERpBABEaQgARGkQAERpGABEaRwARGkgAERpKABEaSwARGsYAERrIABEaygARGswAERrPABEa0AARGtEAERrSABEa0wARGtUAERrXABEa2AARGtkAERrbABEa3AARG1cAERtZABEbWwARG10AERtgABEbYQARG2IAERtjABEbZAARG2YAERtoABEbaQARG2oAERtsABEbbQARG7YAERvaABEcAQARHCUAERwoABEcKgARHCwAERwuABEcMAARHDIAERwzABEcNgARHE8AERxsABEcbgARHHAAERxyABEcdAARHHYAERx4ABEcegARHJcAERyaABEcnQARHKAAERyjABEcpgARHKkAERysABEcrgARHSkAER0rABEdLQARHS8AER0yABEdMwARHTQAER01ABEdNgARHTgAER06ABEdOwARHTwAER0+ABEdPwARHboAER28ABEdvgARHcAAER3DABEdxAARHcUAER3GABEdxwARHckAER3LABEdzAARHc0AER3PABEd0AARHksAER5NABEeTwARHlEAER5UABEeVQARHlYAER5XABEeWAARHloAER5cABEeXQARHl4AER5gABEeYQARHtwAER7eABEe4AARHuIAER7lABEe5gARHucAER7oABEe6QARHusAER7tABEe7gARHu8AER7xABEe8gARH20AER9vABEfcQARH3MAER92ABEfdwARH3gAER95ABEfegARH3wAER9+ABEffwARH4AAER+CABEfgwARH/4AESAAABEgAgARIAQAESAHABEgCAARIAkAESAKABEgCwARIA0AESAPABEgEAARIBEAESATABEgFAARII8AESCRABEgkwARIJUAESCYABEgmQARIJoAESCbABEgnAARIJ4AESCgABEgoQARIKIAESCkABEgpQARITgAESFbABEhewARIZsAESGdABEhnwARIaEAESGjABEhpgARIacAESGoABEhqwARIawAESGuABEhrwARIbEAESG0ABEhtQARIbYAESG5ABEhugARIcMAESHcABEh5QARIecAESHpABEh8gARIfUAESH4ABEh+gARIkMAESJnABEijgARIrIAESK1ABEitwARIrkAESK7ABEivQARIr8AESLAABEiwwARItwAESL9ABEi/wARIwEAESMDABEjBQARIwcAESMJABEjCwARIw0AESMuABEjMQARIzQAESM3ABEjOgARIz0AESNAABEjQwARI0YAESNIABEjwwARI8UAESPHABEjyQARI8wAESPNABEjzgARI88AESPQABEj0gARI9QAESPVABEj1gARI9gAESPZABEkVAARJFYAESRYABEkWgARJF0AESReABEkXwARJGAAESRhABEkYwARJGUAESRmABEkZwARJGkAESRqABEk5QARJOcAESTqABEk7AARJO8AESTwABEk8QARJPIAESTzABEk9QARJPcAEST4ABEk+QARJPsAEST8ABElFQARJRYAESUXABElGQARJZQAESWWABElmAARJZoAESWdABElngARJZ8AESWgABEloQARJaMAESWlABElpgARJacAESWpABElqgARJiUAESYnABEmKQARJisAESYuABEmLwARJjAAESYxABEmMgARJjQAESY2ABEmNwARJjgAESY6ABEmOwARJrYAESa4ABEmugARJrwAESa/ABEmwAARJsEAESbCABEmwwARJsUAESbHABEmyAARJskAESbLABEmzAARJ0cAESdJABEnSwARJ00AESdQABEnUQARJ1IAESdTABEnVAARJ1YAESdYABEnWQARJ1oAESdcABEnXQARJ9gAESfaABEn3AARJ94AESfhABEn4gARJ+MAESfkABEn5QARJ+cAESfpABEn6gARJ+sAESftABEn7gARKDcAEShbABEoggARKKYAESipABEoqwARKK0AESivABEosQARKLMAESi0ABEotwARKNAAESjtABEo7wARKPEAESjzABEo9QARKPcAESj5ABEo+wARKRgAESkbABEpHgARKSEAESkkABEpJwARKSoAESktABEpLwARKaoAESmsABEprwARKbEAESm0ABEptQARKbYAESm3ABEpuAARKboAESm8ABEpvQARKb4AESnAABEpwQARKjwAESo+ABEqQAARKkIAESpFABEqRgARKkcAESpIABEqSQARKksAESpNABEqTgARKk8AESpRABEqUgARKs0AESrPABEq0QARKtMAESrWABEq1wARKtgAESrZABEq2gARKtwAESreABEq3wARKuAAESriABEq4wARK14AEStgABErYwARK2UAEStoABEraQARK2oAEStrABErbAARK24AEStwABErcQARK3IAESt0ABErdQARK/AAESvyABEr9AARK/YAESv5ABEr+gARK/sAESv8ABEr/QARK/8AESwBABEsAgARLAMAESwFABEsBgARLIEAESyDABEshQARLIcAESyKABEsiwARLIwAESyNABEsjgARLJAAESySABEskwARLJQAESyWABEslwARLRIAES0UABEtFgARLRgAES0bABEtHAARLR0AES0eABEtHwARLSEAES0jABEtJAARLSUAES0nABEtKAARLTkAES06ABEtPAARLbcAES25ABEtuwARLb0AES3AABEtwQARLcIAES3DABEtxAARLcYAES3IABEtyQARLcoAES3MABEtzQARLkgAES5KABEuTAARLk4AES5RABEuUgARLlMAES5UABEuVQARLlcAES5ZABEuWgARLlsAES5dABEuXgARLtkAES7bABEu3gARLuAAES7jABEu5AARLuUAES7mABEu5wARLukAES7rABEu7AARLu0AES7vABEu8AARL4MAES+mABEvxgARL+YAES/oABEv6gARL+wAES/uABEv8QARL/IAES/zABEv9gARL/cAES/5ABEv+gARL/wAES//ABEwAAARMAEAETAEABEwBQARMA4AETAnABEwMAARMDIAETA0ABEwPQARMEAAETBDABEwRQARMI4AETCyABEw2QARMP0AETEAABExAgARMQQAETEGABExCAARMQoAETELABExDgARMScAETFIABExSgARMUwAETFOABExUAARMVIAETFUABExVgARMVgAETF5ABExfAARMX8AETGCABExhQARMYgAETGLABExjgARMZEAETGTABEyDgARMhAAETISABEyFAARMhcAETIYABEyGQARMhoAETIbABEyHQARMh8AETIgABEyIQARMiMAETIkABEynwARMqEAETKjABEypQARMqgAETKpABEyqgARMqsAETKsABEyrgARMrAAETKxABEysgARMrQAETK1ABEzMAARMzIAETM1ABEzNwARMzoAETM7ABEzPAARMz0AETM+ABEzQAARM0IAETNDABEzRAARM0YAETNHABEzYAARM2EAETNiABEzZAARM98AETPhABEz4wARM+UAETPoABEz6QARM+oAETPrABEz7AARM+4AETPwABEz8QARM/IAETP0ABEz9QARNHAAETRyABE0dAARNHYAETR5ABE0egARNHsAETR8ABE0fQARNH8AETSBABE0ggARNIMAETSFABE0hgARNQEAETUDABE1BQARNQcAETUKABE1CwARNQwAETUNABE1DgARNRAAETUSABE1EwARNRQAETUWABE1FwARNZIAETWUABE1lgARNZgAETWbABE1nAARNZ0AETWeABE1nwARNaEAETWjABE1pAARNaUAETWnABE1qAARNiMAETYlABE2JwARNikAETYsABE2LQARNi4AETYvABE2MAARNjIAETY0ABE2NQARNjYAETY4ABE2OQARNoIAETamABE2zQARNvEAETb0ABE29gARNvgAETb6ABE2/AARNv4AETb/ABE3AgARNxsAETc4ABE3OgARNzwAETc+ABE3QAARN0IAETdEABE3RgARN2MAETdmABE3aQARN2wAETdvABE3cgARN3UAETd4ABE3egARN/UAETf3ABE3+QARN/sAETf+ABE3/wAROAAAETgBABE4AgAROAQAETgGABE4BwAROAgAETgKABE4CwAROIYAETiIABE4igAROIwAETiPABE4kAAROJEAETiSABE4kwAROJUAETiXABE4mAAROJkAETibABE4nAARORcAETkZABE5GwAROR0AETkgABE5IQAROSIAETkjABE5JAAROSYAETkoABE5KQAROSoAETksABE5LQAROagAETmqABE5rAAROa4AETmxABE5sgARObMAETm0ABE5tQARObcAETm5ABE5ugARObsAETm9ABE5vgAROjkAETo7ABE6PQAROj8AETpCABE6QwAROkQAETpFABE6RgAROkgAETpKABE6SwAROkwAETpOABE6TwAROsoAETrMABE6zgAROtAAETrTABE61AAROtUAETrWABE61wAROtkAETrbABE63AAROt0AETrfABE64AARO1sAETtdABE7XwARO2EAETtkABE7ZQARO2YAETtnABE7aAARO2oAETtsABE7bQARO24AETtwABE7cQARPAQAETwnABE8RwARPGcAETxpABE8awARPG0AETxvABE8cgARPHMAETx0ABE8dwARPHgAETx6ABE8ewARPH0AETyAABE8gQARPIIAETyFABE8hgARPI8AETyoABE8sQARPLMAETy1ABE8vgARPMEAETzEABE8xgARPQ8AET0zABE9WgARPX4AET2BABE9gwARPYUAET2HABE9iQARPYsAET2MABE9jwARPagAET3JABE9ywARPc0AET3PABE90QARPdMAET3VABE91wARPdkAET36ABE9/QARPgAAET4DABE+BgARPgkAET4MABE+DwARPhIAET4UABE+jwARPpEAET6TABE+lQARPpgAET6ZABE+mgARPpsAET6cABE+ngARPqAAET6hABE+ogARPqQAET6lABE/IAARPyIAET8kABE/JgARPykAET8qABE/KwARPywAET8tABE/LwARPzEAET8yABE/MwARPzUAET82ABE/sQARP7MAET+2ABE/uAARP7sAET+8ABE/vQARP74AET+/ABE/wQARP8MAET/EABE/xQARP8cAET/IABE/4QARP+IAET/jABE/5QARQGAAEUBiABFAZAARQGYAEUBpABFAagARQGsAEUBsABFAbQARQG8AEUBxABFAcgARQHMAEUB1ABFAdgARQPEAEUDzABFA9QARQPcAEUD6ABFA+wARQPwAEUD9ABFA/gARQQAAEUECABFBAwARQQQAEUEGABFBBwARQYIAEUGEABFBhgARQYgAEUGLABFBjAARQY0AEUGOABFBjwARQZEAEUGTABFBlAARQZUAEUGXABFBmAARQhMAEUIVABFCFwARQhkAEUIcABFCHQARQh4AEUIfABFCIAARQiIAEUIkABFCJQARQiYAEUIoABFCKQARQqQAEUKmABFCqAARQqoAEUKtABFCrgARQq8AEUKwABFCsQARQrMAEUK1ABFCtgARQrcAEUK5ABFCugARQwMAEUMnABFDTgARQ3IAEUN1ABFDdwARQ3kAEUN7ABFDfQARQ38AEUOAABFDgwARQ5wAEUO5ABFDuwARQ70AEUO/ABFDwQARQ8MAEUPFABFDxwARQ+QAEUPnABFD6gARQ+0AEUPwABFD8wARQ/YAEUP5ABFD+wARRHYAEUR4ABFEegARRHwAEUR/ABFEgAARRIEAEUSCABFEgwARRIUAEUSHABFEiAARRIkAEUSLABFEjAARRQcAEUUJABFFCwARRQ0AEUUQABFFEQARRRIAEUUTABFFFAARRRYAEUUYABFFGQARRRoAEUUcABFFHQARRZgAEUWaABFFnAARRZ4AEUWhABFFogARRaMAEUWkABFFpQARRacAEUWpABFFqgARRasAEUWtABFFrgARRikAEUYrABFGLgARRjAAEUYzABFGNAARRjUAEUY2ABFGNwARRjkAEUY7ABFGPAARRj0AEUY/ABFGQAARRrsAEUa9ABFGvwARRsEAEUbEABFGxQARRsYAEUbHABFGyAARRsoAEUbMABFGzQARRs4AEUbQABFG0QARR0wAEUdOABFHUAARR1IAEUdVABFHVgARR1cAEUdYABFHWQARR1sAEUddABFHXgARR18AEUdhABFHYgARR90AEUffABFH4QARR+MAEUfmABFH5wARR+gAEUfpABFH6gARR+wAEUfuABFH7wARR/AAEUfyABFH8wARSIYAEUipABFIyQARSOkAEUjrABFI7QARSO8AEUjxABFI9AARSPUAEUj2ABFI+QARSPoAEUj8ABFI/QARSP8AEUkCABFJAwARSQQAEUkHABFJCAARSREAEUkqABFJMwARSTUAEUk3ABFJQAARSUMAEUlGABFJSAARSZEAEUm1ABFJ3AARSgAAEUoDABFKBQARSgcAEUoJABFKCwARSg0AEUoOABFKEQARSioAEUpLABFKTQARSk8AEUpRABFKUwARSlUAEUpXABFKWQARSlsAEUp8ABFKfwARSoIAEUqFABFKiAARSosAEUqOABFKkQARSpQAEUqWABFLEQARSxMAEUsVABFLFwARSxoAEUsbABFLHAARSx0AEUseABFLIAARSyIAEUsjABFLJAARSyYAEUsnABFLogARS6QAEUumABFLqAARS6sAEUusABFLrQARS64AEUuvABFLsQARS7MAEUu0ABFLtQARS7cAEUu4ABFMMwARTDUAEUw4ABFMOgARTD0AEUw+ABFMPwARTEAAEUxBABFMQwARTEUAEUxGABFMRwARTEkAEUxKABFMYwARTGQAEUxlABFMZwARTOIAEUzkABFM5gARTOgAEUzrABFM7AARTO0AEUzuABFM7wARTPEAEUzzABFM9AARTPUAEUz3ABFM+AARTXMAEU11ABFNdwARTXkAEU18ABFNfQARTX4AEU1/ABFNgAARTYIAEU2EABFNhQARTYYAEU2IABFNiQARTgQAEU4GABFOCAARTgoAEU4NABFODgARTg8AEU4QABFOEQARThMAEU4VABFOFgARThcAEU4ZABFOGgARTpUAEU6XABFOmQARTpsAEU6eABFOnwARTqAAEU6hABFOogARTqQAEU6mABFOpwARTqgAEU6qABFOqwARTyYAEU8oABFPKgARTywAEU8vABFPMAARTzEAEU8yABFPMwARTzUAEU83ABFPOAARTzkAEU87ABFPPAART4UAEU+pABFP0AART/QAEU/3ABFP+QART/sAEU/9ABFP/wARUAEAEVACABFQBQARUB4AEVA7ABFQPQARUD8AEVBBABFQQwARUEUAEVBHABFQSQARUGYAEVBpABFQbAARUG8AEVByABFQdQARUHgAEVB7ABFQfQARUPgAEVD6ABFQ/AARUP4AEVEBABFRAgARUQMAEVEEABFRBQARUQcAEVEJABFRCgARUQsAEVENABFRDgARUYkAEVGLABFRjQARUY8AEVGSABFRkwARUZQAEVGVABFRlgARUZgAEVGaABFRmwARUZwAEVGeABFRnwARUhoAEVIcABFSHgARUiAAEVIjABFSJAARUiUAEVImABFSJwARUikAEVIrABFSLAARUi0AEVIvABFSMAARUqsAEVKtABFSrwARUrEAEVK0ABFStQARUrYAEVK3ABFSuAARUroAEVK8ABFSvQARUr4AEVLAABFSwQARUzwAEVM+ABFTQAARU0IAEVNFABFTRgARU0cAEVNIABFTSQARU0sAEVNNABFTTgARU08AEVNRABFTUgARU80AEVPPABFT0QARU9MAEVPWABFT1wARU9gAEVPZABFT2gARU9wAEVPeABFT3wARU+AAEVPiABFT4wARVF4AEVRgABFUYgARVGQAEVRnABFUaAARVGkAEVRqABFUawARVG0AEVRvABFUcAARVHEAEVRzABFUdAARVQcAEVUqABFVSgARVWoAEVVsABFVbgARVXAAEVVyABFVdQARVXYAEVV3ABFVegARVXsAEVV9ABFVfgARVYAAEVWDABFVhAARVYUAEVWIABFViQARVY4AEVWnABFVsAARVbIAEVW0ABFVvQARVcAAEVXDABFVxQARVg4AEVYyABFWWQARVn0AEVaAABFWggARVoQAEVaGABFWiAARVooAEVaLABFWjgARVqcAEVbIABFWygARVswAEVbOABFW0AARVtIAEVbUABFW1gARVtgAEVb5ABFW/AARVv8AEVcCABFXBQARVwgAEVcLABFXDgARVxEAEVcTABFXjgARV5AAEVeSABFXlAARV5cAEVeYABFXmQARV5oAEVebABFXnQARV58AEVegABFXoQARV6MAEVekABFYHwARWCEAEVgjABFYJQARWCgAEVgpABFYKgARWCsAEVgsABFYLgARWDAAEVgxABFYMgARWDQAEVg1ABFYsAARWLIAEVi1ABFYtwARWLoAEVi7ABFYvAARWL0AEVi+ABFYwAARWMIAEVjDABFYxAARWMYAEVjHABFY4AARWOEAEVjiABFY5AARWV8AEVlhABFZYwARWWUAEVloABFZaQARWWoAEVlrABFZbAARWW4AEVlwABFZcQARWXIAEVl0ABFZdQARWfAAEVnyABFZ9AARWfYAEVn5ABFZ+gARWfsAEVn8ABFZ/QARWf8AEVoBABFaAgARWgMAEVoFABFaBgARWoEAEVqDABFahQARWocAEVqKABFaiwARWowAEVqNABFajgARWpAAEVqSABFakwARWpQAEVqWABFalwARWxIAEVsUABFbFgARWxgAEVsbABFbHAARWx0AEVseABFbHwARWyEAEVsjABFbJAARWyUAEVsnABFbKAARW6MAEVulABFbpwARW6kAEVusABFbrQARW64AEVuvABFbsAARW7IAEVu0ABFbtQARW7YAEVu4ABFbuQARXAIAEVwmABFcTQARXHEAEVx0ABFcdgARXHgAEVx6ABFcfAARXH4AEVx/ABFcggARXJsAEVy4ABFcugARXLwAEVy+ABFcwAARXMIAEVzEABFcxgARXOMAEVzmABFc6QARXOwAEVzvABFc8gARXPUAEVz4ABFc+gARXXUAEV13ABFdeQARXXsAEV1+ABFdfwARXYAAEV2BABFdggARXYQAEV2GABFdhwARXYgAEV2KABFdiwARXgYAEV4IABFeCgARXgwAEV4PABFeEAARXhEAEV4SABFeEwARXhUAEV4XABFeGAARXhkAEV4bABFeHAARXpcAEV6ZABFemwARXp0AEV6gABFeoQARXqIAEV6jABFepAARXqYAEV6oABFeqQARXqoAEV6sABFerQARXygAEV8qABFfLQARXy8AEV8yABFfMwARXzQAEV81ABFfNgARXzgAEV86ABFfOwARXzwAEV8+ABFfPwARX7oAEV+8ABFfvgARX8AAEV/DABFfxAARX8UAEV/GABFfxwARX8kAEV/LABFfzAARX80AEV/PABFf0AARYEsAEWBNABFgTwARYFEAEWBUABFgVQARYFYAEWBXABFgWAARYFoAEWBcABFgXQARYF4AEWBgABFgYQARYNwAEWDeABFg4AARYOIAEWDlABFg5gARYOcAEWDoABFg6QARYOsAEWDtABFg7gARYO8AEWDxABFg8gARYYUAEWGoABFhyAARYegAEWHqABFh7AARYe4AEWHwABFh8wARYfQAEWH1ABFh+AARYfkAEWH7ABFh/AARYf4AEWIBABFiAgARYgMAEWIGABFiBwARYgwAEWIlABFiLgARYjAAEWIyABFiOwARYj4AEWJBABFiQwARYowAEWKwABFi1wARYvsAEWL+ABFjAAARYwIAEWMEABFjBgARYwgAEWMJABFjDAARYyUAEWNGABFjSAARY0oAEWNMABFjTgARY1AAEWNSABFjVAARY1YAEWN3ABFjegARY30AEWOAABFjgwARY4YAEWOJABFjjAARY48AEWORABFkDAARZA4AEWQQABFkEgARZBUAEWQWABFkFwARZBgAEWQZABFkGwARZB0AEWQeABFkHwARZCEAEWQiABFknQARZJ8AEWShABFkowARZKYAEWSnABFkqAARZKkAEWSqABFkrAARZK4AEWSvABFksAARZLIAEWSzABFlLgARZTAAEWUzABFlNQARZTgAEWU5ABFlOgARZTsAEWU8ABFlPgARZUAAEWVBABFlQgARZUQAEWVFABFlXgARZV8AEWVgABFlYgARZd0AEWXfABFl4QARZeMAEWXmABFl5wARZegAEWXpABFl6gARZewAEWXuABFl7wARZfAAEWXyABFl8wARZm4AEWZwABFmcgARZnQAEWZ3ABFmeAARZnkAEWZ6ABFmewARZn0AEWZ/ABFmgAARZoEAEWaDABFmhAARZv8AEWcBABFnAwARZwUAEWcIABFnCQARZwoAEWcLABFnDAARZw4AEWcQABFnEQARZxIAEWcUABFnFQARZ5AAEWeSABFnlAARZ5YAEWeZABFnmgARZ5sAEWecABFnnQARZ58AEWehABFnogARZ6MAEWelABFnpgARaCEAEWgjABFoJQARaCcAEWgqABFoKwARaCwAEWgtABFoLgARaDAAEWgyABFoMwARaDQAEWg2ABFoNwARaIAAEWikABFoywARaO8AEWjyABFo9AARaPYAEWj4ABFo+gARaPwAEWj9ABFpAAARaRkAEWk2ABFpOAARaToAEWk8ABFpPgARaUAAEWlCABFpRAARaWEAEWlkABFpZwARaWoAEWltABFpcAARaXMAEWl2ABFpeAARafMAEWn1ABFp+AARafoAEWn9ABFp/gARaf8AEWoAABFqAQARagMAEWoFABFqBgARagcAEWoJABFqCgARag4AEWqJABFqiwARao0AEWqPABFqkgARapMAEWqUABFqlQARapYAEWqYABFqmgARapsAEWqcABFqngARap8AEWsaABFrHAARax4AEWsgABFrIwARayQAEWslABFrJgARaycAEWspABFrKwARaywAEWstABFrLwARazAAEWurABFrrQARa68AEWuxABFrtAARa7UAEWu2ABFrtwARa7gAEWu6ABFrvAARa70AEWu+ABFrwAARa8EAEWw8ABFsPgARbEAAEWxCABFsRQARbEYAEWxHABFsSAARbEkAEWxLABFsTQARbE4AEWxPABFsUQARbFIAEWzNABFszwARbNEAEWzTABFs1gARbNcAEWzYABFs2QARbNoAEWzcABFs3gARbN8AEWzgABFs4gARbOMAEW1eABFtYAARbWIAEW1kABFtZwARbWgAEW1pABFtagARbWsAEW1tABFtbwARbXAAEW1xABFtcwARbXQAEW4HABFuKgARbkoAEW5qABFubAARbm4AEW5wABFucgARbnUAEW52ABFudwARbnoAEW57ABFufQARbn4AEW6AABFugwARboQAEW6FABFuiAARbokAEW6OABFupwARbrAAEW6yABFutAARbr0AEW7AABFuwwARbsUAEW8OABFvMgARb1kAEW99ABFvgAARb4IAEW+EABFvhgARb4gAEW+KABFviwARb44AEW+nABFvyAARb8oAEW/MABFvzgARb9AAEW/SABFv1AARb9YAEW/YABFv+QARb/wAEW//ABFwAgARcAUAEXAIABFwCwARcA4AEXARABFwEwARcI4AEXCQABFwkgARcJQAEXCXABFwmAARcJkAEXCaABFwmwARcJ0AEXCfABFwoAARcKEAEXCjABFwpAARcR8AEXEhABFxIwARcSUAEXEoABFxKQARcSoAEXErABFxLAARcS4AEXEwABFxMQARcTIAEXE0ABFxNQARcbAAEXGyABFxtQARcbcAEXG6ABFxuwARcbwAEXG9ABFxvgARccAAEXHCABFxwwARccQAEXHGABFxxwARceAAEXHhABFx4gARceQAEXJfABFyYQARcmMAEXJlABFyaAARcmkAEXJqABFyawARcmwAEXJuABFycAARcnEAEXJyABFydAARcnUAEXLwABFy8gARcvQAEXL2ABFy+QARcvoAEXL7ABFy/AARcv0AEXL/ABFzAQARcwIAEXMDABFzBQARcwYAEXOBABFzgwARc4UAEXOHABFzigARc4sAEXOMABFzjQARc44AEXOQABFzkgARc5MAEXOUABFzlgARc5cAEXQSABF0FAARdBYAEXQYABF0GwARdBwAEXQdABF0HgARdB8AEXQhABF0IwARdCQAEXQlABF0JwARdCgAEXSjABF0pQARdKcAEXSpABF0rAARdK0AEXSuABF0rwARdLAAEXSyABF0tAARdLUAEXS2ABF0uAARdLkAEXUCABF1JgARdU0AEXVxABF1dAARdXYAEXV4ABF1egARdXwAEXV+ABF1fwARdYIAEXWbABF1uAARdboAEXW8ABF1vgARdcAAEXXCABF1xAARdcYAEXXjABF15gARdekAEXXsABF17wARdfIAEXX1ABF1+AARdfoAEXZ1ABF2dwARdnkAEXZ7ABF2fgARdn8AEXaAABF2gQARdoIAEXaEABF2hgARdocAEXaIABF2igARdosAEXcGABF3CAARdwoAEXcMABF3DwARdxAAEXcRABF3EgARdxMAEXcVABF3FwARdxgAEXcZABF3GwARdxwAEXeXABF3mQARd5sAEXedABF3oAARd6EAEXeiABF3owARd6QAEXemABF3qAARd6kAEXeqABF3rAARd60AEXgoABF4KgAReCwAEXguABF4MQAReDIAEXgzABF4NAAReDUAEXg3ABF4OQAReDoAEXg7ABF4PQAReD4AEXi5ABF4uwAReL0AEXi/ABF4wgAReMMAEXjEABF4xQAReMYAEXjIABF4ygAReMsAEXjMABF4zgAReM8AEXlKABF5TAAReU4AEXlQABF5UwAReVQAEXlVABF5VgAReVcAEXlZABF5WwAReVwAEXldABF5XwAReWAAEXnbABF53QARed8AEXnhABF55AAReeUAEXnmABF55wAReegAEXnqABF57AARee0AEXnuABF58AARefEAEXqEABF6pwARescAEXrnABF66QAReusAEXrtABF67wARevIAEXrzABF69AARevcAEXr4ABF6+gARevsAEXr9ABF7AAARewEAEXsCABF7BQARewYAEXsLABF7JAARey0AEXsvABF7MQARezoAEXs9ABF7QAARe0IAEXuLABF7rwARe9YAEXv6ABF7/QARe/8AEXwBABF8AwARfAUAEXwHABF8CAARfAsAEXwkABF8RQARfEcAEXxJABF8SwARfE0AEXxPABF8UQARfFMAEXxVABF8dgARfHkAEXx8ABF8fwARfIIAEXyFABF8iAARfIsAEXyOABF8kAARfQsAEX0NABF9DwARfREAEX0UABF9FQARfRYAEX0XABF9GAARfRoAEX0cABF9HQARfR4AEX0gABF9IQARfZwAEX2eABF9oAARfaIAEX2lABF9pgARfacAEX2oABF9qQARfasAEX2tABF9rgARfa8AEX2xABF9sgARfi0AEX4vABF+MgARfjQAEX43ABF+OAARfjkAEX46ABF+OwARfj0AEX4/ABF+QAARfkEAEX5DABF+RAARfl0AEX5eABF+XwARfmEAEX7cABF+3gARfuAAEX7iABF+5QARfuYAEX7nABF+6AARfukAEX7rABF+7QARfu4AEX7vABF+8QARfvIAEX9tABF/bwARf3EAEX9zABF/dgARf3cAEX94ABF/eQARf3oAEX98ABF/fgARf38AEX+AABF/ggARf4MAEX/+ABGAAAARgAIAEYAEABGABwARgAgAEYAJABGACgARgAsAEYANABGADwARgBAAEYARABGAEwARgBQAEYCPABGAkQARgJMAEYCVABGAmAARgJkAEYCaABGAmwARgJwAEYCeABGAoAARgKEAEYCiABGApAARgKUAEYEgABGBIgARgSQAEYEmABGBKQARgSoAEYErABGBLAARgS0AEYEvABGBMQARgTIAEYEzABGBNQARgTYAEYF/ABGBowARgcoAEYHuABGB8QARgfMAEYH1ABGB9wARgfkAEYH7ABGB/AARgf8AEYIYABGCNQARgjcAEYI5ABGCOwARgj0AEYI/ABGCQQARgkMAEYJgABGCYwARgmYAEYJpABGCbAARgm8AEYJyABGCdQARgncAEYLyABGC9AARgvYAEYL4ABGC+wARgvwAEYL9ABGC/gARgv8AEYMBABGDAwARgwQAEYMFABGDBwARgwgAEYODABGDhQARg4cAEYOJABGDjAARg40AEYOOABGDjwARg5AAEYOSABGDlAARg5UAEYOWABGDmAARg5kAEYQUABGEFgARhBgAEYQaABGEHQARhB4AEYQfABGEIAARhCEAEYQjABGEJQARhCYAEYQnABGEKQARhCoAEYSlABGEpwARhKkAEYSrABGErgARhK8AEYSwABGEsQARhLIAEYS0ABGEtgARhLcAEYS4ABGEugARhLsAEYU2ABGFOAARhToAEYU8ABGFPwARhUAAEYVBABGFQgARhUMAEYVFABGFRwARhUgAEYVJABGFSwARhUwAEYXHABGFyQARhcsAEYXNABGF0AARhdEAEYXSABGF0wARhdQAEYXWABGF2AARhdkAEYXaABGF3AARhd0AEYZYABGGWgARhlwAEYZeABGGYQARhmIAEYZjABGGZAARhmUAEYZnABGGaQARhmoAEYZrABGGbQARhm4AEYcBABGHJAARh0QAEYdkABGHZgARh2gAEYdqABGHbAARh28AEYdwABGHcQARh3QAEYd1ABGHdwARh3gAEYd7ABGHfgARh38AEYeAABGHgwARh4QAEYeJABGHogARh6sAEYetABGHrwARh7gAEYe7ABGHvgARh8AAEYgJABGILQARiFQAEYh4ABGIewARiH0AEYh/ABGIgQARiIMAEYiFABGIhgARiIkAEYiiABGIwwARiMUAEYjHABGIyQARiMsAEYjNABGIzwARiNEAEYjTABGI9AARiPcAEYj6ABGI/QARiQAAEYkDABGJBgARiQkAEYkMABGJDgARiYkAEYmLABGJjQARiY8AEYmSABGJkwARiZQAEYmVABGJlgARiZgAEYmaABGJmwARiZwAEYmeABGJnwARihoAEYocABGKHgARiiAAEYojABGKJAARiiUAEYomABGKJwARiikAEYorABGKLAARii0AEYovABGKMAARiqsAEYqtABGKsAARirIAEYq1ABGKtgARircAEYq4ABGKuQARirsAEYq9ABGKvgARir8AEYrBABGKwgARitsAEYrcABGK3QARit8AEYtaABGLXAARi14AEYtgABGLYwARi2QAEYtlABGLZgARi2cAEYtpABGLawARi2wAEYttABGLbwARi3AAEYvrABGL7QARi+8AEYvxABGL9AARi/UAEYv2ABGL9wARi/gAEYv6ABGL/AARi/0AEYv+ABGMAAARjAEAEYx8ABGMfgARjIAAEYyCABGMhQARjIYAEYyHABGMiAARjIkAEYyLABGMjQARjI4AEYyPABGMkQARjJIAEY0NABGNDwARjREAEY0TABGNFgARjRcAEY0YABGNGQARjRoAEY0cABGNHgARjR8AEY0gABGNIgARjSMAEY2eABGNoAARjaIAEY2kABGNpwARjagAEY2pABGNqgARjasAEY2tABGNrwARjbAAEY2xABGNswARjbQAEY39ABGOIQARjkgAEY5sABGObwARjnEAEY5zABGOdQARjncAEY55ABGOegARjn0AEY6WABGOswARjrUAEY63ABGOuQARjrsAEY69ABGOvwARjsEAEY7eABGO4QARjuQAEY7nABGO6gARju0AEY7wABGO8wARjvUAEY9wABGPcgARj3QAEY92ABGPeQARj3oAEY97ABGPfAARj30AEY9/ABGPgQARj4IAEY+DABGPhQARj4YAEZABABGQAwARkAYAEZAIABGQCwARkAwAEZANABGQDgARkA8AEZARABGQEwARkBQAEZAVABGQFwARkBgAEZCTABGQlQARkJcAEZCZABGQnAARkJ0AEZCeABGQnwARkKAAEZCiABGQpAARkKUAEZCmABGQqAARkKkAEZEkABGRJgARkSkAEZErABGRLgARkS8AEZEwABGRMQARkTIAEZE0ABGRNgARkTcAEZE4ABGROgARkTsAEZG+ABGR4gARkgYAEZIpABGSUAARknAAEZKXABGSvgARkt4AEZMCABGTJgARkygAEZMrABGTLQARky8AEZMxABGTNAARkzcAEZM5ABGTOwARkz4AEZNAABGTQgARk0UAEZNIABGTSQARk04AEZNnABGTbAARk24AEZNzABGTdgARk3gAEZPBABGT5QARlAwAEZQwABGUMwARlDUAEZQ3ABGUOQARlDsAEZQ9ABGUPgARlEEAEZRaABGUfwARlIEAEZSDABGUhQARlIcAEZSJABGUiwARlI0AEZSPABGUkQARlLYAEZS5ABGUvAARlL8AEZTCABGUxQARlMgAEZTLABGUzgARlNEAEZTTABGVTgARlVAAEZVTABGVVQARlVgAEZVZABGVWgARlVsAEZVcABGVXgARlWAAEZVhABGVYgARlWQAEZVlABGVdgARlXcAEZV5ABGV9AARlfYAEZX4ABGV+gARlf0AEZX+ABGV/wARlgAAEZYBABGWAwARlgUAEZYGABGWBwARlgkAEZYKABGWhQARlocAEZaKABGWjAARlo8AEZaQABGWkQARlpIAEZaTABGWlQARlpcAEZaYABGWmQARlpsAEZacABGWrQARlrIAEZa1ABGWtwARlsgAEZbVABGW2AARltsAEZbeABGW4AARlvsAEZcRABGXjAARl44AEZeQABGXkgARl5UAEZeWABGXlwARl5gAEZeZABGXmwARl50AEZeeABGXnwARl6EAEZeiABGYHQARmB8AEZgiABGYJAARmCcAEZgoABGYKQARmCoAEZgrABGYLQARmC8AEZgwABGYMQARmDMAEZg0ABGYRQARmEYAEZhIABGYwwARmMUAEZjHABGYyQARmMwAEZjNABGYzgARmM8AEZjQABGY0gARmNQAEZjVABGY1gARmNgAEZjZABGZVAARmVYAEZlZABGZWwARmV4AEZlfABGZYAARmWEAEZliABGZZAARmWYAEZlnABGZaAARmWoAEZlrABGZhAARmYUAEZmGABGZiAARmgMAEZoFABGaBwARmgkAEZoMABGaDQARmg4AEZoPABGaEAARmhIAEZoUABGaFQARmhYAEZoYABGaGQARmpQAEZqWABGamQARmpsAEZqeABGanwARmqAAEZqhABGaogARmqQAEZqmABGapwARmqgAEZqqABGaqwARmscAEZrgABGa9QARmvgAEZr7ABGa/gARmwEAEZsEABGbGQARmxwAEZsfABGbIgARmyUAEZsoABGbKgARm0AAEZtbABGbdAARm4AAEZwTABGcNgARnFYAEZx2ABGceAARnHoAEZx8ABGcfgARnIEAEZyCABGcgwARnIYAEZyHABGciQARnIoAEZyMABGcjwARnJAAEZyRABGclAARnJUAEZyaABGcswARnLwAEZy+ABGcwAARnMkAEZzMABGczwARnNEAEZ0aABGdPgARnWUAEZ2JABGdjAARnY4AEZ2QABGdkgARnZQAEZ2WABGdlwARnZoAEZ2zABGd1AARndYAEZ3YABGd2gARndwAEZ3eABGd4AARneIAEZ3kABGeBQARnggAEZ4LABGeDgARnhEAEZ4UABGeFwARnhoAEZ4dABGeHwARnpoAEZ6cABGengARnqAAEZ6jABGepAARnqUAEZ6mABGepwARnqkAEZ6rABGerAARnq0AEZ6vABGesAARnysAEZ8tABGfLwARnzEAEZ80ABGfNQARnzYAEZ83ABGfOAARnzoAEZ88ABGfPQARnz4AEZ9AABGfQQARn7wAEZ++ABGfwQARn8MAEZ/GABGfxwARn8gAEZ/JABGfygARn8wAEZ/OABGfzwARn9AAEZ/SABGf0wARn+wAEZ/tABGf7gARn/AAEaBrABGgbQARoG8AEaBxABGgdAARoHUAEaB2ABGgdwARoHgAEaB6ABGgfAARoH0AEaB+ABGggAARoIEAEaD8ABGg/gARoQAAEaECABGhBQARoQYAEaEHABGhCAARoQkAEaELABGhDQARoQ4AEaEPABGhEQARoRIAEaGNABGhjwARoZEAEaGTABGhlgARoZcAEaGYABGhmQARoZoAEaGcABGhngARoZ8AEaGgABGhogARoaMAEaIeABGiIAARoiIAEaIkABGiJwARoigAEaIpABGiKgARoisAEaItABGiLwARojAAEaIxABGiMwARojQAEaKvABGisQARorMAEaK1ABGiuAARorkAEaK6ABGiuwARorwAEaK+ABGiwAARosEAEaLCABGixAARosUAEaMOABGjMgARo1kAEaN9ABGjgAARo4IAEaOEABGjhgARo4gAEaOKABGjiwARo44AEaOnABGjxAARo8YAEaPIABGjygARo8wAEaPOABGj0AARo9IAEaPvABGj8gARo/UAEaP4ABGj+wARo/4AEaQBABGkBAARpAYAEaSBABGkgwARpIUAEaSHABGkigARpIsAEaSMABGkjQARpI4AEaSQABGkkgARpJMAEaSUABGklgARpJcAEaUSABGlFAARpRYAEaUYABGlGwARpRwAEaUdABGlHgARpR8AEaUhABGlIwARpSQAEaUlABGlJwARpSgAEaWjABGlpQARpacAEaWpABGlrAARpa0AEaWuABGlrwARpbAAEaWyABGltAARpbUAEaW2ABGluAARpbkAEaY0ABGmNgARpjgAEaY6ABGmPQARpj4AEaY/ABGmQAARpkEAEaZDABGmRQARpkYAEaZHABGmSQARpkoAEabFABGmxwARpskAEabLABGmzgARps8AEabQABGm0QARptIAEabUABGm1gARptcAEabYABGm2gARptsAEadWABGnWAARp1oAEadcABGnXwARp2AAEadhABGnYgARp2MAEadlABGnZwARp2gAEadpABGnawARp2wAEafnABGn6QARp+sAEaftABGn8AARp/EAEafyABGn8wARp/QAEaf2ABGn+AARp/kAEaf6ABGn/AARp/0AEaiQABGoswARqNMAEajzABGo9QARqPcAEaj5ABGo+wARqP4AEaj/ABGpAAARqQMAEakEABGpBgARqQcAEakJABGpDAARqQ0AEakOABGpEQARqRIAEakXABGpMAARqTkAEak7ABGpPQARqUYAEalJABGpTAARqU4AEamXABGpuwARqeIAEaoGABGqCQARqgsAEaoNABGqDwARqhEAEaoTABGqFAARqhcAEaowABGqUQARqlMAEapVABGqVwARqlkAEapbABGqXQARql8AEaphABGqggARqoUAEaqIABGqiwARqo4AEaqRABGqlAARqpcAEaqaABGqnAARqxcAEasZABGrGwARqx0AEasgABGrIQARqyIAEasjABGrJAARqyYAEasoABGrKQARqyoAEassABGrLQARq6gAEauqABGrrAARq64AEauxABGrsgARq7MAEau0ABGrtQARq7cAEau5ABGrugARq7sAEau9ABGrvgARrDkAEaw7ABGsPgARrEAAEaxDABGsRAARrEUAEaxGABGsRwARrEkAEaxLABGsTAARrE0AEaxPABGsUAARrGkAEaxqABGsawARrG0AEazoABGs6gARrOwAEazuABGs8QARrPIAEazzABGs9AARrPUAEaz3ABGs+QARrPoAEaz7ABGs/QARrP4AEa15ABGtewARrX0AEa1/ABGtggARrYMAEa2EABGthQARrYYAEa2IABGtigARrYsAEa2MABGtjgARrY8AEa4KABGuDAARrg4AEa4QABGuEwARrhQAEa4VABGuFgARrhcAEa4ZABGuGwARrhwAEa4dABGuHwARriAAEa6bABGunQARrp8AEa6hABGupAARrqUAEa6mABGupwARrqgAEa6qABGurAARrq0AEa6uABGusAARrrEAEa8sABGvLgARrzAAEa8yABGvNQARrzYAEa83ABGvOAARrzkAEa87ABGvPQARrz4AEa8/ABGvQQARr0IAEa+LABGvrwARr9YAEa/6ABGv/QARr/8AEbABABGwAwARsAUAEbAHABGwCAARsAsAEbAkABGwQQARsEMAEbBFABGwRwARsEkAEbBLABGwTQARsE8AEbBsABGwbwARsHIAEbB1ABGweAARsHsAEbB+ABGwgQARsIMAEbD+ABGxAAARsQIAEbEEABGxBwARsQgAEbEJABGxCgARsQsAEbENABGxDwARsRAAEbERABGxEwARsRQAEbGPABGxkQARsZMAEbGVABGxmAARsZkAEbGaABGxmwARsZwAEbGeABGxoAARsaEAEbGiABGxpAARsaUAEbIgABGyIgARsiQAEbImABGyKQARsioAEbIrABGyLAARsi0AEbIvABGyMQARsjIAEbIzABGyNQARsjYAEbKxABGyswARsrUAEbK3ABGyugARsrsAEbK8ABGyvQARsr4AEbLAABGywgARssMAEbLEABGyxgARsscAEbNCABGzRAARs0YAEbNIABGzSwARs0wAEbNNABGzTgARs08AEbNRABGzUwARs1QAEbNVABGzVwARs1gAEbPTABGz1QARs9cAEbPZABGz3AARs90AEbPeABGz3wARs+AAEbPiABGz5AARs+UAEbPmABGz6AARs+kAEbRkABG0ZgARtGgAEbRqABG0bQARtG4AEbRvABG0cAARtHEAEbRzABG0dQARtHYAEbR3ABG0eQARtHoAEbUNABG1MAARtVAAEbVwABG1cgARtXQAEbV2ABG1eAARtXsAEbV8ABG1fQARtYAAEbWBABG1gwARtYQAEbWGABG1iQARtYoAEbWLABG1jgARtY8AEbWYABG1sQARtboAEbW8ABG1vgARtccAEbXKABG1zQARtc8AEbYYABG2PAARtmMAEbaHABG2igARtowAEbaOABG2kAARtpIAEbaUABG2lQARtpgAEbaxABG20gARttQAEbbWABG22AARttoAEbbcABG23gARtuAAEbbiABG3AwARtwYAEbcJABG3DAARtw8AEbcSABG3FQARtxgAEbcbABG3HQARt5gAEbeaABG3nAARt54AEbehABG3ogARt6MAEbekABG3pQARt6cAEbepABG3qgARt6sAEbetABG3rgARuCkAEbgrABG4LQARuC8AEbgyABG4MwARuDQAEbg1ABG4NgARuDgAEbg6ABG4OwARuDwAEbg+ABG4PwARuLoAEbi8ABG4vwARuMEAEbjEABG4xQARuMYAEbjHABG4yAARuMoAEbjMABG4zQARuM4AEbjQABG40QARuOoAEbjrABG47AARuO4AEblpABG5awARuW0AEblvABG5cgARuXMAEbl0ABG5dQARuXYAEbl4ABG5egARuXsAEbl8ABG5fgARuX8AEbn6ABG5/AARuf4AEboAABG6AwARugQAEboFABG6BgARugcAEboJABG6CwARugwAEboNABG6DwARuhAAEbqLABG6jQARuo8AEbqRABG6lAARupUAEbqWABG6lwARupgAEbqaABG6nAARup0AEbqeABG6oAARuqEAEbscABG7HgARuyAAEbsiABG7JQARuyYAEbsnABG7KAARuykAEbsrABG7LQARuy4AEbsvABG7MQARuzIAEbutABG7rwARu7EAEbuzABG7tgARu7cAEbu4ABG7uQARu7oAEbu8ABG7vgARu78AEbvAABG7wgARu8MAEbwMABG8MAARvFcAEbx7ABG8fgARvIAAEbyCABG8hAARvIYAEbyIABG8iQARvIwAEbylABG8wgARvMQAEbzGABG8yAARvMoAEbzMABG8zgARvNAAEbztABG88AARvPMAEbz2ABG8+QARvPwAEbz/ABG9AgARvQQAEb1/ABG9gQARvYQAEb2GABG9iQARvYoAEb2LABG9jAARvY0AEb2PABG9kQARvZIAEb2TABG9lQARvZYAEb4RABG+EwARvhUAEb4XABG+GgARvhsAEb4cABG+HQARvh4AEb4gABG+IgARviMAEb4kABG+JgARvicAEb6iABG+pAARvqYAEb6oABG+qwARvqwAEb6tABG+rgARvq8AEb6xABG+swARvrQAEb61ABG+twARvrgAEb8zABG/NQARvzgAEb86ABG/PQARvz4AEb8/ABG/QAARv0EAEb9DABG/RQARv0YAEb9HABG/SQARv0oAEb/FABG/xwARv8kAEb/LABG/zgARv88AEb/QABG/0QARv9IAEb/UABG/1gARv9cAEb/YABG/2gARv9sAEcBWABHAWAARwFoAEcBcABHAXwARwGAAEcBhABHAYgARwGMAEcBlABHAZwARwGgAEcBpABHAawARwGwAEcDnABHA6QARwOsAEcDtABHA8AARwPEAEcDyABHA8wARwPQAEcD2ABHA+AARwPkAEcD6ABHA/AARwP0AEcGQABHBswARwdMAEcHzABHB9QARwfcAEcH5ABHB+wARwf4AEcH/ABHCAAARwgMAEcIEABHCBgARwgcAEcIJABHCDAARwg0AEcIOABHCEQARwhIAEcIXABHCMAARwjkAEcI7ABHCPQARwkYAEcJJABHCTAARwk4AEcKXABHCuwARwuIAEcMGABHDCQARwwsAEcMNABHDDwARwxEAEcMTABHDFAARwxcAEcMwABHDUQARw1MAEcNVABHDVwARw1kAEcNbABHDXQARw18AEcNhABHDggARw4UAEcOIABHDiwARw44AEcORABHDlAARw5cAEcOaABHDnAARxBcAEcQZABHEGwARxB0AEcQgABHEIQARxCIAEcQjABHEJAARxCYAEcQoABHEKQARxCoAEcQsABHELQARxKgAEcSqABHErAARxK4AEcSxABHEsgARxLMAEcS0ABHEtQARxLcAEcS5ABHEugARxLsAEcS9ABHEvgARxTkAEcU7ABHFPgARxUAAEcVDABHFRAARxUUAEcVGABHFRwARxUkAEcVLABHFTAARxU0AEcVPABHFUAARxWkAEcVqABHFawARxW0AEcXoABHF6gARxewAEcXuABHF8QARxfIAEcXzABHF9AARxfUAEcX3ABHF+QARxfoAEcX7ABHF/QARxf4AEcZ5ABHGewARxn0AEcZ/ABHGggARxoMAEcaEABHGhQARxoYAEcaIABHGigARxosAEcaMABHGjgARxo8AEccKABHHDAARxw4AEccQABHHEwARxxQAEccVABHHFgARxxcAEccZABHHGwARxxwAEccdABHHHwARxyAAEcebABHHnQARx58AEcehABHHpAARx6UAEcemABHHpwARx6gAEceqABHHrAARx60AEceuABHHsAARx7EAEcgsABHILgARyDAAEcgyABHINQARyDYAEcg3ABHIOAARyDkAEcg7ABHIPQARyD4AEcg/ABHIQQARyEIAEciLABHIrwARyNYAEcj6ABHI/QARyP8AEckBABHJAwARyQUAEckHABHJCAARyQsAEckkABHJQQARyUMAEclFABHJRwARyUkAEclLABHJTQARyU8AEclsABHJbwARyXIAEcl1ABHJeAARyXsAEcl+ABHJgQARyYMAEcn+ABHKAAARygIAEcoEABHKBwARyggAEcoJABHKCgARygsAEcoNABHKDwARyhAAEcoRABHKEwARyhQAEcqPABHKkQARypMAEcqVABHKmAARypkAEcqaABHKmwARypwAEcqeABHKoAARyqEAEcqiABHKpAARyqUAEcsgABHLIgARyyQAEcsmABHLKQARyyoAEcsrABHLLAARyy0AEcsvABHLMQARyzIAEcszABHLNQARyzYAEcuxABHLswARy7UAEcu3ABHLugARy7sAEcu8ABHLvQARy74AEcvAABHLwgARy8MAEcvEABHLxgARy8cAEcxCABHMRAARzEYAEcxIABHMSwARzEwAEcxNABHMTgARzE8AEcxRABHMUwARzFQAEcxVABHMVwARzFgAEczTABHM1QARzNcAEczZABHM3AARzN0AEczeABHM3wARzOAAEcziABHM5AARzOUAEczmABHM6AARzOkAEc1kABHNZgARzWgAEc1qABHNbQARzW4AEc1vABHNcAARzXEAEc1zABHNdQARzXYAEc13ABHNeQARzXoAEc4NABHOMAARzlAAEc5wABHOcgARznQAEc52ABHOeAARznsAEc58ABHOfQARzoAAEc6BABHOgwARzoQAEc6HABHOigARzosAEc6MABHOjwARzpAAEc6VABHOrgARzrcAEc65ABHOuwARzsQAEc7HABHOygARzswAEc8VABHPOQARz2AAEc+EABHPhwARz4kAEc+LABHPjQARz48AEc+RABHPkgARz5UAEc+uABHPzwARz9EAEc/TABHP1QARz9cAEc/ZABHP2wARz90AEc/fABHQAAAR0AMAEdAGABHQCQAR0AwAEdAPABHQEgAR0BUAEdAYABHQGgAR0JUAEdCXABHQmQAR0JsAEdCeABHQnwAR0KAAEdChABHQogAR0KQAEdCmABHQpwAR0KgAEdCqABHQqwAR0SYAEdEoABHRKgAR0SwAEdEvABHRMAAR0TEAEdEyABHRMwAR0TUAEdE3ABHROAAR0TkAEdE7ABHRPAAR0bcAEdG5ABHRvAAR0b4AEdHBABHRwgAR0cMAEdHEABHRxQAR0ccAEdHJABHRygAR0csAEdHNABHRzgAR0ecAEdHoABHR6QAR0esAEdJmABHSaAAR0moAEdJsABHSbwAR0nAAEdJxABHScgAR0nMAEdJ1ABHSdwAR0ngAEdJ5ABHSewAR0nwAEdL3ABHS+QAR0vsAEdL9ABHTAAAR0wEAEdMCABHTAwAR0wQAEdMGABHTCAAR0wkAEdMKABHTDAAR0w0AEdOIABHTigAR04wAEdOOABHTkQAR05IAEdOTABHTlAAR05UAEdOXABHTmQAR05oAEdObABHTnQAR054AEdQZABHUGwAR1B0AEdQfABHUIgAR1CMAEdQkABHUJQAR1CYAEdQoABHUKgAR1CsAEdQsABHULgAR1C8AEdSqABHUrAAR1K4AEdSwABHUswAR1LQAEdS1ABHUtgAR1LcAEdS5ABHUuwAR1LwAEdS9ABHUvwAR1MAAEdUJABHVLQAR1VQAEdV4ABHVewAR1X0AEdV/ABHVgQAR1YMAEdWFABHVhgAR1YkAEdWiABHVvwAR1cEAEdXDABHVxQAR1ccAEdXJABHVywAR1c0AEdXqABHV7QAR1fAAEdXzABHV9gAR1fkAEdX8ABHV/wAR1gEAEdZ8ABHWfgAR1oAAEdaCABHWhQAR1oYAEdaHABHWiAAR1okAEdaLABHWjQAR1o4AEdaPABHWkQAR1pIAEdcNABHXDwAR1xEAEdcTABHXFgAR1xcAEdcYABHXGQAR1xoAEdccABHXHgAR1x8AEdcgABHXIgAR1yMAEdeeABHXoAAR16IAEdekABHXpwAR16gAEdepABHXqgAR16sAEdetABHXrwAR17AAEdexABHXswAR17QAEdgvABHYMQAR2DQAEdg2ABHYOQAR2DoAEdg7ABHYPAAR2D0AEdg/ABHYQQAR2EIAEdhDABHYRQAR2EYAEdjBABHYwwAR2MUAEdjHABHYygAR2MsAEdjMABHYzQAR2M4AEdjQABHY0gAR2NMAEdjUABHY1gAR2NcAEdlSABHZVAAR2VYAEdlYABHZWwAR2VwAEdldABHZXgAR2V8AEdlhABHZYwAR2WQAEdllABHZZwAR2WgAEdnjABHZ5QAR2egAEdnqABHZ7QAR2e4AEdnvABHZ8AAR2fEAEdnzABHZ9QAR2fYAEdn3ABHZ+QAR2foAEdoLABHaDAAR2g4AEdqJABHaiwAR2o0AEdqPABHakgAR2pMAEdqUABHalQAR2pYAEdqYABHamgAR2psAEdqcABHangAR2p8AEdsaABHbHAAR2x4AEdsgABHbIwAR2yQAEdslABHbJgAR2ycAEdspABHbKwAR2ywAEdstABHbLwAR2zAAEdurABHbrQAR27AAEduyABHbtQAR27YAEdu3ABHbuAAR27kAEdu7ABHbvQAR274AEdu/ABHbwQAR28IAEdxVABHceAAR3JgAEdy4ABHcugAR3LwAEdy+ABHcwAAR3MMAEdzEABHcxQAR3MgAEdzJABHcywAR3MwAEdzOABHc0QAR3NIAEdzTABHc1gAR3NcAEdzcABHc9QAR3P4AEd0AABHdAgAR3QsAEd0OABHdEQAR3RMAEd1cABHdgAAR3acAEd3LABHdzgAR3dAAEd3SABHd1AAR3dYAEd3YABHd2QAR3dwAEd31ABHeFgAR3hgAEd4aABHeHAAR3h4AEd4gABHeIgAR3iQAEd4mABHeRwAR3koAEd5NABHeUAAR3lMAEd5WABHeWQAR3lwAEd5fABHeYQAR3twAEd7eABHe4AAR3uIAEd7lABHe5gAR3ucAEd7oABHe6QAR3usAEd7tABHe7gAR3u8AEd7xABHe8gAR320AEd9vABHfcQAR33MAEd92ABHfdwAR33gAEd95ABHfegAR33wAEd9+ABHffwAR34AAEd+CABHfgwAR3/4AEeAAABHgAwAR4AUAEeAIABHgCQAR4AoAEeALABHgDAAR4A4AEeAQABHgEQAR4BIAEeAUABHgFQAR4C4AEeAvABHgMAAR4DIAEeCtABHgrwAR4LEAEeCzABHgtgAR4LcAEeC4ABHguQAR4LoAEeC8ABHgvgAR4L8AEeDAABHgwgAR4MMAEeE+ABHhQAAR4UIAEeFEABHhRwAR4UgAEeFJABHhSgAR4UsAEeFNABHhTwAR4VAAEeFRABHhUwAR4VQAEeHPABHh0QAR4dMAEeHVABHh2AAR4dkAEeHaABHh2wAR4dwAEeHeABHh4AAR4eEAEeHiABHh5AAR4eUAEeJgABHiYgAR4mQAEeJmABHiaQAR4moAEeJrABHibAAR4m0AEeJvABHicQAR4nIAEeJzABHidQAR4nYAEeLxABHi8wAR4vUAEeL3ABHi+gAR4vsAEeL8ABHi/QAR4v4AEeMAABHjAgAR4wMAEeMEABHjBgAR4wcAEeNQABHjdAAR45sAEeO/ABHjwgAR48QAEePGABHjyAAR48oAEePMABHjzQAR49AAEePpABHkBgAR5AgAEeQKABHkDAAR5A4AEeQQABHkEgAR5BQAEeQxABHkNAAR5DcAEeQ6ABHkPQAR5EAAEeRDABHkRgAR5EgAEeTDABHkxQAR5McAEeTJABHkzAAR5M0AEeTOABHkzwAR5NAAEeTSABHk1AAR5NUAEeTWABHk2AAR5NkAEeVUABHlVgAR5VgAEeVaABHlXQAR5V4AEeVfABHlYAAR5WEAEeVjABHlZQAR5WYAEeVnABHlaQAR5WoAEeXlABHl5wAR5ekAEeXrABHl7gAR5e8AEeXwABHl8QAR5fIAEeX0ABHl9gAR5fcAEeX4ABHl+gAR5fsAEeZ2ABHmeAAR5nsAEeZ9ABHmgAAR5oEAEeaCABHmgwAR5oQAEeaGABHmiAAR5okAEeaKABHmjAAR5o0AEecIABHnCgAR5wwAEecOABHnEQAR5xIAEecTABHnFAAR5xUAEecXABHnGQAR5xoAEecbABHnHQAR5x4AEeeZABHnmwAR550AEeefABHnogAR56MAEeekABHnpQAR56YAEeeoABHnqgAR56sAEeesABHnrgAR568AEegqABHoLAAR6C4AEegwABHoMwAR6DQAEeg1ABHoNgAR6DcAEeg5ABHoOwAR6DwAEeg9ABHoPwAR6EAAEejTABHo9gAR6RYAEek2ABHpOAAR6ToAEek8ABHpPgAR6UEAEelCABHpQwAR6UYAEelHABHpSQAR6UoAEelNABHpUAAR6VEAEelSABHpVQAR6VYAEelbABHpdAAR6X0AEel/ABHpgQAR6YoAEemNABHpkAAR6ZIAEenbABHp/wAR6iYAEepKABHqTQAR6k8AEepRABHqUwAR6lUAEepXABHqWAAR6lsAEep0ABHqlQAR6pcAEeqZABHqmwAR6p0AEeqfABHqoQAR6qMAEeqlABHqxgAR6skAEerMABHqzwAR6tIAEerVABHq2AAR6tsAEereABHq4AAR61sAEetdABHrXwAR62EAEetkABHrZQAR62YAEetnABHraAAR62oAEetsABHrbQAR624AEetwABHrcQAR6+wAEevuABHr8AAR6/IAEev1ABHr9gAR6/cAEev4ABHr+QAR6/sAEev9ABHr/gAR6/8AEewBABHsAgAR7H0AEex/ABHsggAR7IQAEeyHABHsiAAR7IkAEeyKABHsiwAR7I0AEeyPABHskAAR7JEAEeyTABHslAAR7K0AEeyuABHsrwAR7LEAEe0sABHtLgAR7TAAEe0yABHtNQAR7TYAEe03ABHtOAAR7TkAEe07ABHtPQAR7T4AEe0/ABHtQQAR7UIAEe29ABHtvwAR7cEAEe3DABHtxgAR7ccAEe3IABHtyQAR7coAEe3MABHtzgAR7c8AEe3QABHt0gAR7dMAEe5OABHuUAAR7lIAEe5UABHuVwAR7lgAEe5ZABHuWgAR7lsAEe5dABHuXwAR7mAAEe5hABHuYwAR7mQAEe7fABHu4QAR7uMAEe7lABHu6AAR7ukAEe7qABHu6wAR7uwAEe7uABHu8AAR7vEAEe7yABHu9AAR7vUAEe9wABHvcgAR73QAEe92ABHveQAR73oAEe97ABHvfAAR730AEe9/ABHvgQAR74IAEe+DABHvhQAR74Y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AEgE5ABIBOwASATwAEgE9ABIBPwASAUAAEgHTABIB9gASAhYAEgI2ABICOAASAjoAEgI8ABICPgASAkEAEgJCABICQwASAkYAEgJHABICSQASAkoAEgJMABICTwASAlAAEgJRABICVAASAlUAEgJaABICcwASAnwAEgJ+ABICgAASAokAEgKMABICjwASApEAEgLaABIC/gASAyUAEgNJABIDTAASA04AEgNQABIDUgASA1QAEgNWABIDVwASA1oAEgNzABIDlAASA5YAEgOYABIDmgASA5wAEgOeABIDoAASA6IAEgOkABIDxQASA8gAEgPLABIDzgASA9EAEgPUABID1wASA9oAEgPdABID3wASBFoAEgRcABIEXgASBGAAEgRjABIEZAASBGUAEgRmABIEZwASBGkAEgRrABIEbAASBG0AEgRvABIEcAASBOsAEgTtABIE7wASBPEAEgT0ABIE9QASBPYAEgT3ABIE+AASBPoAEgT8ABIE/QASBP4AEgUAABIFAQASBXwAEgV+ABIFgQASBYMAEgWGABIFhwASBYgAEgWJABIFigASBYwAEgWOABIFjwASBZAAEgWSABIFkwASBawAEgWtABIFrgASBbAAEgYrABIGLQASBi8AEgYxABIGNAASBjUAEgY2ABIGNwASBjgAEgY6ABIGPAASBj0AEgY+ABIGQAASBkEAEga8ABIGvgASBsAAEgbCABIGxQASBsYAEgbHABIGyAASBskAEgbLABIGzQASBs4AEgbPABIG0QASBtIAEgdNABIHTwASB1EAEgdTABIHVgASB1cAEgdYABIHWQASB1oAEgdcABIHXgASB18AEgdgABIHYgASB2MAEgfeABIH4AASB+IAEgfkABIH5wASB+gAEgfpABIH6gASB+sAEgftABIH7wASB/AAEgfxABIH8wASB/QAEghvABIIcQASCHMAEgh1ABIIeAASCHkAEgh6ABIIewASCHwAEgh+ABIIgAASCIEAEgiCABIIhAASCIUAEgjOABII8gASCRkAEgk9ABIJQAASCUIAEglEABIJRgASCUgAEglKABIJSwASCU4AEglnABIJhAASCYYAEgmIABIJigASCYwAEgmOABIJkAASCZIAEgmvABIJsgASCbUAEgm4ABIJuwASCb4AEgnBABIJxAASCcYAEgpBABIKQwASCkUAEgpHABIKSgASCksAEgpMABIKTQASCk4AEgpQABIKUgASClMAEgpUABIKVgASClcAEgrSABIK1AASCtYAEgrYABIK2wASCtwAEgrdABIK3gASCt8AEgrhABIK4wASCuQAEgrlABIK5wASCugAEgtjABILZQASC2cAEgtpABILbAASC20AEgtuABILbwASC3AAEgtyABILdAASC3UAEgt2ABILeAASC3kAEgv0ABIL9gASC/gAEgv6ABIL/QASC/4AEgv/ABIMAAASDAEAEgwDABIMBQASDAYAEgwHABIMCQASDAoAEgyFABIMhwASDIkAEgyLABIMjgASDI8AEgyQABIMkQASDJIAEgyUABIMlgASDJcAEgyYABIMmgASDJsAEg0WABINGAASDRsAEg0dABINIAASDSEAEg0iABINIwASDSQAEg0mABINKAASDSkAEg0qABINLAASDS0AEg1MABINxwASDckAEg3LABINzQASDdAAEg3RABIN0gASDdMAEg3UABIN1gASDdgAEg3ZABIN2gASDdwAEg3dABIOcAASDpMAEg6zABIO0wASDtUAEg7XABIO2QASDtsAEg7eABIO3wASDuAAEg7jABIO5AASDuYAEg7nABIO6QASDuwAEg7tABIO7gASDvEAEg7yABIO9wASDxAAEg8ZABIPGwASDx0AEg8mABIPKQASDywAEg8uABIPdwASD5sAEg/CABIP5gASD+kAEg/rABIP7QASD+8AEg/xABIP8wASD/QAEg/3ABIQEAASEDEAEhAzABIQNQASEDcAEhA5ABIQOwASED0AEhA/ABIQQQASEGIAEhBlABIQaAASEGsAEhBuABIQcQASEHQAEhB3ABIQegASEHwAEhD3ABIQ+QASEPsAEhD9ABIRAAASEQEAEhECABIRAwASEQQAEhEGABIRCAASEQkAEhEKABIRDAASEQ0AEhGIABIRigASEYwAEhGOABIRkQASEZIAEhGTABIRlAASEZUAEhGXABIRmQASEZoAEhGbABIRnQASEZ4AEhIZABISGwASEh4AEhIgABISIwASEiQAEhIlABISJgASEicAEhIpABISKwASEiwAEhItABISLwASEjAAEhJJABISSgASEksAEhJNABISyAASEsoAEhLMABISzgASEtEAEhLSABIS0wASEtQAEhLVABIS1wASEtkAEhLaABIS2wASEt0AEhLeABITWQASE1sAEhNdABITXwASE2IAEhNjABITZAASE2UAEhNmABITaAASE2oAEhNrABITbAASE24AEhNvABIT6gASE+wAEhPuABIT8AASE/MAEhP0ABIT9QASE/YAEhP3ABIT+QASE/sAEhP8ABIT/QASE/8AEhQAABIUewASFH0AEhR/ABIUgQASFIQAEhSFABIUhgASFIcAEhSIABIUigASFIwAEhSNABIUjgASFJAAEhSRABIVDAASFQ4AEhUQABIVEgASFRUAEhUWABIVFwASFRgAEhUZABIVGwASFR0AEhUeABIVHwASFSEAEhUiABIVawASFY8AEhW2ABIV2gASFd0AEhXfABIV4QASFeMAEhXlABIV5wASFegAEhXrABIWBAASFiEAEhYjABIWJQASFicAEhYpABIWKwASFi0AEhYvABIWTAASFk8AEhZSABIWVQASFlgAEhZbABIWXgASFmEAEhZjABIW3gASFuAAEhbiABIW5AASFucAEhboABIW6QASFuoAEhbrABIW7QASFu8AEhbwABIW8QASFvMAEhb0ABIXbwASF3EAEhdzABIXdQASF3gAEhd5ABIXegASF3sAEhd8ABIXfgASF4AAEheBABIXggASF4QAEheFABIYAAASGAIAEhgEABIYBgASGAkAEhgKABIYCwASGAwAEhgNABIYDwASGBEAEhgSABIYEwASGBUAEhgWABIYkQASGJMAEhiWABIYmAASGJsAEhicABIYnQASGJ4AEhifABIYoQASGKMAEhikABIYpQASGKcAEhioABIZIwASGSUAEhknABIZKQASGSwAEhktABIZLgASGS8AEhkwABIZMgASGTQAEhk1ABIZNgASGTgAEhk5ABIZtAASGbYAEhm4ABIZugASGb0AEhm+ABIZvwASGcAAEhnBABIZwwASGcUAEhnGABIZxwASGckAEhnKABIaRQASGkcAEhpJABIaSwASGk4AEhpPABIaUAASGlEAEhpSABIaVAASGlYAEhpXABIaWAASGloAEhpbABIa7gASGxEAEhsxABIbUQASG1MAEhtVABIbVwASG1kAEhtcABIbXQASG14AEhthABIbYgASG2QAEhtlABIbZwASG2oAEhtrABIbbAASG28AEhtwABIbdQASG44AEhuXABIbmQASG5sAEhukABIbpwASG6oAEhusABIb9QASHBkAEhxAABIcZAASHGcAEhxpABIcawASHG0AEhxvABIccQASHHIAEhx1ABIcjgASHK8AEhyxABIcswASHLUAEhy3ABIcuQASHLsAEhy9ABIcvwASHOAAEhzjABIc5gASHOkAEhzsABIc7wASHPIAEhz1ABIc+AASHPoAEh11ABIddwASHXkAEh17ABIdfgASHX8AEh2AABIdgQASHYIAEh2EABIdhgASHYcAEh2IABIdigASHYsAEh4GABIeCAASHgoAEh4MABIeDwASHhAAEh4RABIeEgASHhMAEh4VABIeFwASHhgAEh4ZABIeGwASHhwAEh6XABIemQASHpwAEh6eABIeoQASHqIAEh6jABIepAASHqUAEh6nABIeqQASHqoAEh6rABIerQASHq4AEh7HABIeyAASHskAEh7LABIfRgASH0gAEh9KABIfTAASH08AEh9QABIfUQASH1IAEh9TABIfVQASH1cAEh9YABIfWQASH1sAEh9cABIf1wASH9kAEh/bABIf3QASH+AAEh/hABIf4gASH+MAEh/kABIf5gASH+gAEh/pABIf6gASH+wAEh/tABIgaAASIGoAEiBsABIgbgASIHEAEiByABIgcwASIHQAEiB1ABIgdwASIHkAEiB6ABIgewASIH0AEiB+ABIg+QASIPsAEiD9ABIg/wASIQIAEiEDABIhBAASIQUAEiEGABIhCAASIQoAEiELABIhDAASIQ4AEiEPABIhigASIYwAEiGOABIhkAASIZMAEiGUABIhlQASIZYAEiGXABIhmQASIZsAEiGcABIhnQASIZ8AEiGgABIh6QASIg0AEiI0ABIiWAASIlsAEiJdABIiXwASImEAEiJjABIiZQASImYAEiJpABIiggASIp8AEiKhABIiowASIqUAEiKnABIiqQASIqsAEiKtABIiygASIs0AEiLQABIi0wASItYAEiLZABIi3AASIt8AEiLhABIjXAASI14AEiNgABIjYgASI2UAEiNmABIjZwASI2gAEiNpABIjawASI20AEiNuABIjbwASI3EAEiNyABIj7QASI+8AEiPxABIj8wASI/YAEiP3ABIj+AASI/kAEiP6ABIj/AASI/4AEiP/ABIkAAASJAIAEiQDABIkfgASJIAAEiSCABIkhAASJIcAEiSIABIkiQASJIoAEiSLABIkjQASJI8AEiSQABIkkQASJJMAEiSUABIlDwASJREAEiUTABIlFQASJRgAEiUZABIlGgASJRsAEiUcABIlHgASJSAAEiUhABIlIgASJSQAEiUlABIloAASJaIAEiWkABIlpgASJakAEiWqABIlqwASJawAEiWtABIlrwASJbEAEiWyABIlswASJbUAEiW2ABImMQASJjMAEiY1ABImNwASJjoAEiY7ABImPAASJj0AEiY+ABImQAASJkIAEiZDABImRAASJkYAEiZHABImwgASJsQAEibGABImyAASJssAEibMABImzQASJs4AEibPABIm0QASJtMAEibUABIm1QASJtcAEibYABInawASJ44AEieuABInzgASJ9AAEifSABIn1AASJ9YAEifZABIn2gASJ9sAEifeABIn3wASJ+EAEifiABIn5AASJ+cAEifoABIn6QASJ+wAEiftABIn8gASKAsAEigUABIoFgASKBgAEighABIoJAASKCcAEigpABIocgASKJYAEii9ABIo4QASKOQAEijmABIo6AASKOoAEijsABIo7gASKO8AEijyABIpCwASKSwAEikuABIpMAASKTIAEik0ABIpNgASKTgAEik6ABIpPAASKV0AEilgABIpYwASKWYAEilpABIpbAASKW8AEilyABIpdQASKXcAEinyABIp9AASKfYAEin4ABIp+wASKfwAEin9ABIp/gASKf8AEioBABIqAwASKgQAEioFABIqBwASKggAEiqDABIqhQASKocAEiqJABIqjAASKo0AEiqOABIqjwASKpAAEiqSABIqlAASKpUAEiqWABIqmAASKpkAEisUABIrFgASKxkAEisbABIrHgASKx8AEisgABIrIQASKyIAEiskABIrJgASKycAEisoABIrKgASKysAEitEABIrRQASK0YAEitIABIrwwASK8UAEivHABIryQASK8wAEivNABIrzgASK88AEivQABIr0gASK9QAEivVABIr1gASK9gAEivZABIsVAASLFYAEixYABIsWgASLF0AEixeABIsXwASLGAAEixhABIsYwASLGUAEixmABIsZwASLGkAEixqABIs5QASLOcAEizpABIs6wASLO4AEizvABIs8AASLPEAEizyABIs9AASLPYAEiz3ABIs+AASLPoAEiz7ABItdgASLXgAEi16ABItfAASLX8AEi2AABItgQASLYIAEi2DABIthQASLYcAEi2IABItiQASLYsAEi2MABIuBwASLgkAEi4LABIuDQASLhAAEi4RABIuEgASLhMAEi4UABIuFgASLhgAEi4ZABIuGgASLhwAEi4dABIuZgASLooAEi6xABIu1QASLtgAEi7aABIu3AASLt4AEi7gABIu4gASLuMAEi7mABIu/wASLxwAEi8eABIvIAASLyIAEi8kABIvJgASLygAEi8qABIvRwASL0oAEi9NABIvUAASL1MAEi9WABIvWQASL1wAEi9eABIv2QASL9sAEi/dABIv3wASL+IAEi/jABIv5AASL+UAEi/mABIv6AASL+oAEi/rABIv7AASL+4AEi/vABIwagASMGwAEjBuABIwcAASMHMAEjB0ABIwdQASMHYAEjB3ABIweQASMHsAEjB8ABIwfQASMH8AEjCAABIw+wASMP0AEjD/ABIxAQASMQQAEjEFABIxBgASMQcAEjEIABIxCgASMQwAEjENABIxDgASMRAAEjERABIxjAASMY4AEjGRABIxkwASMZYAEjGXABIxmAASMZkAEjGaABIxnAASMZ4AEjGfABIxoAASMaIAEjGjABIyHgASMiAAEjIiABIyJAASMicAEjIoABIyKQASMioAEjIrABIyLQASMi8AEjIwABIyMQASMjMAEjI0ABIyrwASMrEAEjKzABIytQASMrgAEjK5ABIyugASMrsAEjK8ABIyvgASMsAAEjLBABIywgASMsQAEjLFABIzQAASM0IAEjNEABIzRgASM0kAEjNKABIzSwASM0wAEjNNABIzTwASM1EAEjNSABIzUwASM1UAEjNWABIz6QASNAwAEjQsABI0TAASNE4AEjRQABI0UgASNFQAEjRXABI0WAASNFkAEjRcABI0XQASNF8AEjRgABI0YgASNGUAEjRmABI0ZwASNGoAEjRrABI0dAASNI0AEjSWABI0mAASNJoAEjSjABI0pgASNKkAEjSrABI09AASNRgAEjU/ABI1YwASNWYAEjVoABI1agASNWwAEjVuABI1cAASNXEAEjV0ABI1jQASNa4AEjWwABI1sgASNbQAEjW2ABI1uAASNboAEjW8ABI1vgASNd8AEjXiABI15QASNegAEjXrABI17gASNfEAEjX0ABI19wASNfkAEjZ0ABI2dgASNngAEjZ6ABI2fQASNn4AEjZ/ABI2gAASNoEAEjaDABI2hQASNoYAEjaHABI2iQASNooAEjcFABI3BwASNwkAEjcLABI3DgASNw8AEjcQABI3EQASNxIAEjcUABI3FgASNxcAEjcYABI3GgASNxsAEjeWABI3mAASN5sAEjedABI3oAASN6EAEjeiABI3owASN6QAEjemABI3qAASN6kAEjeqABI3rAASN60AEjfGABI3xwASN8gAEjfKABI4RQASOEcAEjhJABI4SwASOE4AEjhPABI4UAASOFEAEjhSABI4VAASOFYAEjhXABI4WAASOFoAEjhbABI41gASONgAEjjaABI43AASON8AEjjgABI44QASOOIAEjjjABI45QASOOcAEjjoABI46QASOOsAEjjsABI5ZwASOWkAEjlrABI5bQASOXAAEjlxABI5cgASOXMAEjl0ABI5dgASOXgAEjl5ABI5egASOXwAEjl9ABI5+AASOfoAEjn8ABI5/gASOgEAEjoCABI6AwASOgQAEjoFABI6BwASOgkAEjoKABI6CwASOg0AEjoOABI6iQASOosAEjqNABI6jwASOpIAEjqTABI6lAASOpUAEjqWABI6mAASOpoAEjqbABI6nAASOp4AEjqfABI66AASOwwAEjszABI7VwASO1oAEjtcABI7XgASO2AAEjtiABI7ZAASO2UAEjtoABI7gQASO54AEjugABI7ogASO6QAEjumABI7qAASO6oAEjusABI7yQASO8wAEjvPABI70gASO9UAEjvYABI72wASO94AEjvgABI8WwASPF0AEjxfABI8YQASPGQAEjxlABI8ZgASPGcAEjxoABI8agASPGwAEjxtABI8bgASPHAAEjxxABI87AASPO4AEjzwABI88gASPPUAEjz2ABI89wASPPgAEjz5ABI8+wASPP0AEjz+ABI8/wASPQEAEj0CABI9fQASPX8AEj2BABI9gwASPYYAEj2HABI9iAASPYkAEj2KABI9jAASPY4AEj2PABI9kAASPZIAEj2TABI+DgASPhAAEj4SABI+FAASPhcAEj4YABI+GQASPhoAEj4bABI+HQASPh8AEj4gABI+IQASPiMAEj4kABI+nwASPqEAEj6jABI+pQASPqgAEj6pABI+qgASPqsAEj6sABI+rgASPrAAEj6xABI+sgASPrQAEj61ABI/MAASPzIAEj80ABI/NgASPzkAEj86ABI/OwASPzwAEj89ABI/PwASP0EAEj9CABI/QwASP0UAEj9GABI/wQASP8MAEj/FABI/xwASP8oAEj/LABI/zAASP80AEj/OABI/0AASP9IAEj/TABI/1AASP9YAEj/XABJAagASQI0AEkCtABJAzQASQM8AEkDRABJA0wASQNUAEkDYABJA2QASQNoAEkDdABJA3gASQOAAEkDhABJA4wASQOYAEkDnABJA6AASQOsAEkDsABJA9QASQQ4AEkEXABJBGQASQRsAEkEkABJBJwASQSoAEkEsABJBdQASQZkAEkHAABJB5AASQecAEkHpABJB6wASQe0AEkHvABJB8QASQfIAEkH1ABJCDgASQi8AEkIxABJCMwASQjUAEkI3ABJCOQASQjsAEkI9ABJCPwASQmAAEkJjABJCZgASQmkAEkJsABJCbwASQnIAEkJ1ABJCeAASQnoAEkL1ABJC9wASQvkAEkL7ABJC/gASQv8AEkMAABJDAQASQwIAEkMEABJDBgASQwcAEkMIABJDCgASQwsAEkOGABJDiAASQ4oAEkOMABJDjwASQ5AAEkORABJDkgASQ5MAEkOVABJDlwASQ5gAEkOZABJDmwASQ5wAEkQXABJEGQASRBwAEkQeABJEIQASRCIAEkQjABJEJAASRCUAEkQnABJEKQASRCoAEkQrABJELQASRC4AEkRHABJESAASREkAEkRLABJExgASRMgAEkTKABJEzAASRM8AEkTQABJE0QASRNIAEkTTABJE1QASRNcAEkTYABJE2QASRNsAEkTcABJFVwASRVkAEkVbABJFXQASRWAAEkVhABJFYgASRWMAEkVkABJFZgASRWgAEkVpABJFagASRWwAEkVtABJF6AASReoAEkXsABJF7gASRfEAEkXyABJF8wASRfQAEkX1ABJF9wASRfkAEkX6ABJF+wASRf0AEkX+ABJGeQASRnsAEkZ9ABJGfwASRoIAEkaDABJGhAASRoUAEkaGABJGiAASRooAEkaLABJGjAASRo4AEkaPABJHCgASRwwAEkcOABJHEAASRxMAEkcUABJHFQASRxYAEkcXABJHGQASRxsAEkccABJHHQASRx8AEkcgABJHaQASR40AEke0ABJH2AASR9sAEkfdABJH3wASR+EAEkfjABJH5QASR+YAEkfpABJIAgASSB8AEkghABJIIwASSCUAEkgnABJIKQASSCsAEkgtABJISgASSE0AEkhQABJIUwASSFYAEkhZABJIXAASSF8AEkhhABJI3AASSN4AEkjgABJI4gASSOUAEkjmABJI5wASSOgAEkjpABJI6wASSO0AEkjuABJI7wASSPEAEkjyABJJbQASSW8AEklxABJJcwASSXYAEkl3ABJJeAASSXkAEkl6ABJJfAASSX4AEkl/ABJJgAASSYIAEkmDABJJ/gASSgAAEkoCABJKBAASSgcAEkoIABJKCQASSgoAEkoLABJKDQASSg8AEkoQABJKEQASShMAEkoUABJKjwASSpEAEkqUABJKlgASSpkAEkqaABJKmwASSpwAEkqdABJKnwASSqEAEkqiABJKowASSqUAEkqmABJLIQASSyMAEkslABJLJwASSyoAEksrABJLLAASSy0AEksuABJLMAASSzIAEkszABJLNAASSzYAEks3ABJLsgASS7QAEku2ABJLuAASS7sAEku8ABJLvQASS74AEku/ABJLwQASS8MAEkvEABJLxQASS8cAEkvIABJMQwASTEUAEkxHABJMSQASTEwAEkxNABJMTgASTE8AEkxQABJMUgASTFQAEkxVABJMVgASTFgAEkxZABJM7AASTQ8AEk0vABJNTwASTVEAEk1TABJNVQASTVcAEk1aABJNWwASTVwAEk1fABJNYAASTWIAEk1jABJNZQASTWgAEk1pABJNagASTW0AEk1uABJNcwASTYwAEk2VABJNlwASTZkAEk2iABJNpQASTagAEk2qABJN8wASThcAEk4+ABJOYgASTmUAEk5nABJOaQASTmsAEk5tABJObwASTnAAEk5zABJOjAASTq0AEk6vABJOsQASTrMAEk61ABJOtwASTrkAEk67ABJOvQASTt4AEk7hABJO5AASTucAEk7qABJO7QASTvAAEk7zABJO9gASTvgAEk9zABJPdQAST3cAEk95ABJPfAAST30AEk9+ABJPfwAST4AAEk+CABJPhAAST4UAEk+GABJPiAAST4kAElAEABJQBgASUAgAElAKABJQDQASUA4AElAPABJQEAASUBEAElATABJQFQASUBYAElAXABJQGQASUBoAElCVABJQlwASUJoAElCcABJQnwASUKAAElChABJQogASUKMAElClABJQpwASUKgAElCpABJQqwASUKwAElDFABJQxgASUMcAElDJABJRRAASUUYAElFIABJRSgASUU0AElFOABJRTwASUVAAElFRABJRUwASUVUAElFWABJRVwASUVkAElFaABJR1QASUdcAElHZABJR2wASUd4AElHfABJR4AASUeEAElHiABJR5AASUeYAElHnABJR6AASUeoAElHrABJSZgASUmgAElJqABJSbAASUm8AElJwABJScQASUnIAElJzABJSdQASUncAElJ4ABJSeQASUnsAElJ8ABJS9wASUvkAElL7ABJS/QASUwAAElMBABJTAgASUwMAElMEABJTBgASUwgAElMJABJTCgASUwwAElMNABJTiAASU4oAElOMABJTjgASU5EAElOSABJTkwASU5QAElOVABJTlwASU5kAElOaABJTmwASU50AElOeABJT5wASVAsAElQyABJUVgASVFkAElRbABJUXQASVF8AElRhABJUYwASVGQAElRnABJUgAASVJ0AElSfABJUoQASVKMAElSlABJUpwASVKkAElSrABJUyAASVMsAElTOABJU0QASVNQAElTXABJU2gASVN0AElTfABJVWgASVVwAElVfABJVYQASVWQAElVlABJVZgASVWcAElVoABJVagASVWwAElVtABJVbgASVXAAElVxABJV7AASVe4AElXwABJV8gASVfUAElX2ABJV9wASVfgAElX5ABJV+wASVf0AElX+ABJV/wASVgEAElYCABJWfQASVn8AElaBABJWgwASVoYAElaHABJWiAASVokAElaKABJWjAASVo4AElaPABJWkAASVpIAElaTABJXDgASVxAAElcSABJXFAASVxcAElcYABJXGQASVxoAElcbABJXHQASVx8AElcgABJXIQASVyMAElckABJXnwASV6EAElejABJXpQASV6gAElepABJXqgASV6sAElesABJXrgASV7AAElexABJXsgASV7QAEle1ABJYMAASWDIAElg0ABJYNgASWDkAElg6ABJYOwASWDwAElg9ABJYPwASWEEAElhCABJYQwASWEUAElhGABJYwQASWMMAEljFABJYxwASWMoAEljLABJYzAASWM0AEljOABJY0AASWNIAEljTABJY1AASWNYAEljXABJY6AASWOkAEljrABJZZgASWWgAEllqABJZbAASWW8AEllwABJZcQASWXIAEllzABJZdQASWXcAEll4ABJZeQASWXsAEll8ABJZ9wASWfkAEln7ABJZ/QASWgAAEloBABJaAgASWgMAEloEABJaBgASWggAEloJABJaCgASWgwAEloNABJaiAASWooAElqNABJajwASWpIAElqTABJalAASWpUAElqWABJamAASWpoAElqbABJanAASWp4AElqfABJbMgASW1UAElt1ABJblQASW5cAEluZABJbmwASW50AElugABJboQASW6IAElulABJbpgASW6gAElupABJbqwASW64AEluvABJbsAASW7MAElu0ABJbuQASW9IAElvbABJb3QASW98AElvoABJb6wASW+4AElvwABJcOQASXF0AElyEABJcqAASXKsAElytABJcrwASXLEAElyzABJctQASXLYAEly5ABJc0gASXPMAElz1ABJc9wASXPkAElz7ABJc/QASXP8AEl0BABJdAwASXSQAEl0nABJdKgASXS0AEl0wABJdMwASXTYAEl05ABJdPAASXT4AEl25ABJduwASXb0AEl2/ABJdwgASXcMAEl3EABJdxQASXcYAEl3IABJdygASXcsAEl3MABJdzgASXc8AEl5KABJeTAASXk4AEl5QABJeUwASXlQAEl5VABJeVgASXlcAEl5ZABJeWwASXlwAEl5dABJeXwASXmAAEl7bABJe3QASXuAAEl7iABJe5QASXuYAEl7nABJe6AASXukAEl7rABJe7QASXu4AEl7vABJe8QASXvIAEl8LABJfDAASXw0AEl8PABJfigASX4wAEl+OABJfkAASX5MAEl+UABJflQASX5YAEl+XABJfmQASX5sAEl+cABJfnQASX58AEl+gABJgGwASYB0AEmAfABJgIQASYCQAEmAlABJgJgASYCcAEmAoABJgKgASYCwAEmAtABJgLgASYDAAEmAxABJgrAASYK4AEmCwABJgsgASYLUAEmC2ABJgtwASYLgAEmC5ABJguwASYL0AEmC+ABJgvwASYMEAEmDCABJhPQASYT8AEmFBABJhQwASYUYAEmFHABJhSAASYUkAEmFKABJhTAASYU4AEmFPABJhUAASYVIAEmFTABJhzgASYdAAEmHSABJh1AASYdcAEmHYABJh2QASYdoAEmHbABJh3QASYd8AEmHgABJh4QASYeMAEmHkABJiLQASYlEAEmJ4ABJinAASYp8AEmKhABJiowASYqUAEmKnABJiqQASYqoAEmKtABJixgASYuMAEmLlABJi5wASYukAEmLrABJi7QASYu8AEmLxABJjDgASYxEAEmMUABJjFwASYxoAEmMdABJjIAASYyMAEmMlABJjoAASY6IAEmOkABJjpgASY6kAEmOqABJjqwASY6wAEmOtABJjrwASY7EAEmOyABJjswASY7UAEmO2ABJkMQASZDMAEmQ1ABJkNwASZDoAEmQ7ABJkPAASZD0AEmQ+ABJkQAASZEIAEmRDABJkRAASZEYAEmRHABJkwgASZMQAEmTGABJkyAASZMsAEmTMABJkzQASZM4AEmTPABJk0QASZNMAEmTUABJk1QASZNcAEmTYABJlUwASZVUAEmVXABJlWQASZVwAEmVdABJlXgASZV8AEmVgABJlYgASZWQAEmVlABJlZgASZWgAEmVpABJl5AASZeYAEmXoABJl6gASZe0AEmXuABJl7wASZfAAEmXxABJl8wASZfUAEmX2ABJl9wASZfkAEmX6ABJmdQASZncAEmZ5ABJmewASZn4AEmZ/ABJmgAASZoEAEmaCABJmhAASZoYAEmaHABJmiAASZooAEmaLABJnBgASZwgAEmcKABJnDAASZw8AEmcQABJnEQASZxIAEmcTABJnFQASZxcAEmcYABJnGQASZxsAEmccABJnrwASZ9IAEmfyABJoEgASaBQAEmgWABJoGAASaBoAEmgdABJoHgASaB8AEmgiABJoIwASaCUAEmgmABJoKQASaCwAEmgtABJoLgASaDEAEmgyABJoNwASaFAAEmhZABJoWwASaF0AEmhmABJoaQASaGwAEmhuABJotwASaNsAEmkCABJpJgASaSkAEmkrABJpLQASaS8AEmkxABJpMwASaTQAEmk3ABJpUAASaXEAEmlzABJpdQASaXcAEml5ABJpewASaX0AEml/ABJpgQASaaIAEmmlABJpqAASaasAEmmuABJpsQASabQAEmm3ABJpugASabwAEmo3ABJqOQASajsAEmo9ABJqQAASakEAEmpCABJqQwASakQAEmpGABJqSAASakkAEmpKABJqTAASak0AEmrIABJqygASaswAEmrOABJq0QASatIAEmrTABJq1AASatUAEmrXABJq2QASatoAEmrbABJq3QASat4AEmtZABJrWwASa14AEmtgABJrYwASa2QAEmtlABJrZgASa2cAEmtpABJrawASa2wAEmttABJrbwASa3AAEmuJABJrigASa4sAEmuNABJsCAASbAoAEmwMABJsDgASbBEAEmwSABJsEwASbBQAEmwVABJsFwASbBkAEmwaABJsGwASbB0AEmweABJsmQASbJsAEmydABJsnwASbKIAEmyjABJspAASbKUAEmymABJsqAASbKoAEmyrABJsrAASbK4AEmyvABJtKgASbSwAEm0uABJtMAASbTMAEm00ABJtNQASbTYAEm03ABJtOQASbTsAEm08ABJtPQASbT8AEm1AABJtuwASbb0AEm2/ABJtwQASbcQAEm3FABJtxgASbccAEm3IABJtygASbcwAEm3NABJtzgASbdAAEm3RABJuTAASbk4AEm5QABJuUgASblUAEm5WABJuVwASblgAEm5ZABJuWwASbl0AEm5eABJuXwASbmEAEm5iABJuqwASbs8AEm72ABJvGgASbx0AEm8fABJvIQASbyMAEm8lABJvJwASbygAEm8rABJvRAASb2EAEm9jABJvZQASb2cAEm9pABJvawASb20AEm9vABJvjAASb48AEm+SABJvlQASb5gAEm+bABJvngASb6EAEm+jABJwHgAScCAAEnAiABJwJAAScCcAEnAoABJwKQAScCoAEnArABJwLQAScC8AEnAwABJwMQAScDMAEnA0ABJwrwAScLEAEnCzABJwtQAScLgAEnC5ABJwugAScLsAEnC8ABJwvgAScMAAEnDBABJwwgAScMQAEnDFABJxQAAScUIAEnFEABJxRgAScUkAEnFKABJxSwAScUwAEnFNABJxTwAScVEAEnFSABJxUwAScVUAEnFWABJx0QAScdMAEnHVABJx1wAScdoAEnHbABJx3AAScd0AEnHeABJx4AASceIAEnHjABJx5AASceYAEnHnABJyYgAScmQAEnJmABJyaAAScmsAEnJsABJybQAScm4AEnJvABJycQAScnMAEnJ0ABJydQAScncAEnJ4ABJy8wAScvUAEnL3ABJy+QAScvwAEnL9ABJy/gAScv8AEnMAABJzAgAScwQAEnMFABJzBgAScwgAEnMJABJzhAASc4YAEnOJABJziwASc44AEnOPABJzkAASc5EAEnOSABJzlAASc5YAEnOXABJzmAASc5oAEnObABJ0LgASdFEAEnRxABJ0kQASdJMAEnSVABJ0lwASdJkAEnScABJ0nQASdJ4AEnShABJ0ogASdKQAEnSlABJ0pwASdKoAEnSrABJ0rAASdK8AEnSwABJ0tQASdM4AEnTXABJ02QASdNsAEnTkABJ05wASdOoAEnTsABJ1NQASdVkAEnWAABJ1pAASdacAEnWpABJ1qwASda0AEnWvABJ1sQASdbIAEnW1ABJ1zgASde8AEnXxABJ18wASdfUAEnX3ABJ1+QASdfsAEnX9ABJ1/wASdiAAEnYjABJ2JgASdikAEnYsABJ2LwASdjIAEnY1ABJ2OAASdjoAEna1ABJ2twASdrkAEna7ABJ2vgASdr8AEnbAABJ2wQASdsIAEnbEABJ2xgASdscAEnbIABJ2ygASdssAEndGABJ3SAASd0oAEndMABJ3TwASd1AAEndRABJ3UgASd1MAEndVABJ3VwASd1gAEndZABJ3WwASd1wAEnfXABJ32QASd9wAEnfeABJ34QASd+IAEnfjABJ35AASd+UAEnfnABJ36QASd+oAEnfrABJ37QASd+4AEngHABJ4CAASeAkAEngLABJ4hgASeIgAEniKABJ4jAASeI8AEniQABJ4kQASeJIAEniTABJ4lQASeJcAEniYABJ4mQASeJsAEnicABJ5FwASeRkAEnkbABJ5HQASeSAAEnkhABJ5IgASeSMAEnkkABJ5JgASeSgAEnkpABJ5KgASeSwAEnktABJ5qAASeaoAEnmsABJ5rgASebEAEnmyABJ5swASebQAEnm1ABJ5twASebkAEnm6ABJ5uwASeb0AEnm+ABJ6OQASejsAEno9ABJ6PwASekIAEnpDABJ6RAASekUAEnpGABJ6SAASekoAEnpLABJ6TAASek4AEnpPABJ6ygASeswAEnrOABJ60AASetMAEnrUABJ61QASetYAEnrXABJ62QASetsAEnrcABJ63QASet8AEnrgABJ7KQASe00AEnt0ABJ7mAASe5sAEnudABJ7nwASe6EAEnujABJ7pQASe6YAEnupABJ7wgASe98AEnvhABJ74wASe+UAEnvnABJ76QASe+sAEnvtABJ8CgASfA0AEnwQABJ8EwASfBYAEnwZABJ8HAASfB8AEnwhABJ8nAASfJ4AEnygABJ8ogASfKUAEnymABJ8pwASfKgAEnypABJ8qwASfK0AEnyuABJ8rwASfLEAEnyyABJ9LQASfS8AEn0xABJ9MwASfTYAEn03ABJ9OAASfTkAEn06ABJ9PAASfT4AEn0/ABJ9QAASfUIAEn1DABJ9vgASfcAAEn3CABJ9xAASfccAEn3IABJ9yQASfcoAEn3LABJ9zQASfc8AEn3QABJ90QASfdMAEn3UABJ+TwASflEAEn5TABJ+VQASflgAEn5ZABJ+WgASflsAEn5cABJ+XgASfmAAEn5hABJ+YgASfmQAEn5lABJ+4AASfuIAEn7kABJ+5gASfukAEn7qABJ+6wASfuwAEn7tABJ+7wASfvEAEn7yABJ+8wASfvUAEn72ABJ/cQASf3MAEn91ABJ/dwASf3oAEn97ABJ/fAASf30AEn9+ABJ/gAASf4IAEn+DABJ/hAASf4YAEn+HABKAAgASgAQAEoAGABKACAASgAsAEoAMABKADQASgA4AEoAPABKAEQASgBMAEoAUABKAFQASgBcAEoAYABKAqwASgM4AEoDuABKBDgASgRAAEoESABKBFAASgRYAEoEZABKBGgASgRsAEoEeABKBHwASgSEAEoEiABKBJAASgScAEoEoABKBKQASgSwAEoEtABKBMgASgUsAEoFUABKBVgASgVgAEoFhABKBZAASgWcAEoFpABKBsgASgdYAEoH9ABKCIQASgiQAEoImABKCKAASgioAEoIsABKCLgASgi8AEoIyABKCSwASgmwAEoJuABKCcAASgnIAEoJ0ABKCdgASgngAEoJ6ABKCfAASgp0AEoKgABKCowASgqYAEoKpABKCrAASgq8AEoKyABKCtQASgrcAEoMyABKDNAASgzYAEoM4ABKDOwASgzwAEoM9ABKDPgASgz8AEoNBABKDQwASg0QAEoNFABKDRwASg0gAEoPDABKDxQASg8cAEoPJABKDzAASg80AEoPOABKDzwASg9AAEoPSABKD1AASg9UAEoPWABKD2AASg9kAEoRUABKEVgAShFkAEoRbABKEXgAShF8AEoRgABKEYQAShGIAEoRkABKEZgAShGcAEoRoABKEagAShGsAEoSEABKEhQAShIYAEoSIABKFAwAShQUAEoUHABKFCQAShQwAEoUNABKFDgAShQ8AEoUQABKFEgAShRQAEoUVABKFFgAShRgAEoUZABKFlAAShZYAEoWYABKFmgAShZ0AEoWeABKFnwAShaAAEoWhABKFowAShaUAEoWmABKFpwAShakAEoWqABKGJQAShicAEoYpABKGKwAShi4AEoYvABKGMAAShjEAEoYyABKGNAAShjYAEoY3ABKGOAAShjoAEoY7ABKGtgAShrgAEoa6ABKGvAAShr8AEobAABKGwQAShsIAEobDABKGxQAShscAEobIABKGyQAShssAEobMABKHRwASh0kAEodLABKHTQASh1AAEodRABKHUgASh1MAEodUABKHVgASh1gAEodZABKHWgASh1wAEoddABKHpgASh8oAEofxABKIFQASiBgAEogaABKIHAASiB4AEoggABKIIgASiCMAEogmABKIPwASiFwAEoheABKIYAASiGIAEohkABKIZgASiGgAEohqABKIhwASiIoAEoiNABKIkAASiJMAEoiWABKImQASiJwAEoieABKJGQASiRsAEokeABKJIAASiSMAEokkABKJJQASiSYAEoknABKJKQASiSsAEoksABKJLQASiS8AEokwABKJMwASia4AEomwABKJsgASibQAEom3ABKJuAASibkAEom6ABKJuwASib0AEom/ABKJwAASicEAEonDABKJxAASij8AEopBABKKQwASikUAEopIABKKSQASikoAEopLABKKTAASik4AEopQABKKUQASilIAEopUABKKVQASitAAEorSABKK1QASitcAEoraABKK2wASitwAEordABKK3gASiuAAEoriABKK4wASiuQAEormABKK5wASi2IAEotkABKLZgASi2gAEotrABKLbAASi20AEotuABKLbwASi3EAEotzABKLdAASi3UAEot3ABKLeAASi/MAEov1ABKL9wASi/kAEov8ABKL/QASi/4AEov/ABKMAAASjAIAEowEABKMBQASjAYAEowIABKMCQASjIQAEoyGABKMiAASjIoAEoyNABKMjgASjI8AEoyQABKMkQASjJMAEoyVABKMlgASjJcAEoyZABKMmgASjS0AEo1QABKNcAASjZAAEo2SABKNlAASjZYAEo2YABKNmwASjZwAEo2dABKNoAASjaEAEo2jABKNpAASjaYAEo2oABKNqQASjaoAEo2tABKNrgASjbcAEo3QABKN2QASjdsAEo3dABKN5gASjekAEo3sABKN7gASjjcAEo5bABKOggASjqYAEo6pABKOqwASjq0AEo6vABKOsQASjrMAEo60ABKOtwASjtAAEo7xABKO8wASjvUAEo73ABKO+QASjvsAEo79ABKO/wASjwEAEo8iABKPJQASjygAEo8rABKPLgASjzEAEo80ABKPNwASjzoAEo88ABKPtwASj7kAEo+7ABKPvQASj8AAEo/BABKPwgASj8MAEo/EABKPxgASj8gAEo/JABKPygASj8wAEo/NABKQSAASkEoAEpBMABKQTgASkFEAEpBSABKQUwASkFQAEpBVABKQVwASkFkAEpBaABKQWwASkF0AEpBeABKQ2QASkNsAEpDeABKQ4AASkOMAEpDkABKQ5QASkOYAEpDnABKQ6QASkOsAEpDsABKQ7QASkO8AEpDwABKRCQASkQoAEpELABKRDQASkYgAEpGKABKRjAASkY4AEpGRABKRkgASkZMAEpGUABKRlQASkZcAEpGZABKRmgASkZsAEpGdABKRngASkhkAEpIbABKSHQASkh8AEpIiABKSIwASkiQAEpIlABKSJgASkigAEpIqABKSKwASkiwAEpIuABKSLwASkqoAEpKsABKSrgASkrAAEpKzABKStAASkrUAEpK2ABKStwASkrkAEpK7ABKSvAASkr0AEpK/ABKSwAASkzsAEpM9ABKTPwASk0EAEpNEABKTRQASk0YAEpNHABKTSAASk0oAEpNMABKTTQASk04AEpNQABKTUQASk8wAEpPOABKT0AASk9IAEpPVABKT1gASk9cAEpPYABKT2QASk9sAEpPdABKT3gASk98AEpPhABKT4gASlCsAEpRPABKUdgASlJoAEpSdABKUnwASlKEAEpSjABKUpQASlKcAEpSoABKUqwASlMQAEpThABKU4wASlOUAEpTnABKU6QASlOsAEpTtABKU7wASlQwAEpUPABKVEgASlRUAEpUYABKVGwASlR4AEpUhABKVIwASlZ4AEpWgABKVogASlaQAEpWnABKVqAASlakAEpWqABKVqwASla0AEpWvABKVsAASlbEAEpWzABKVtAASli8AEpYxABKWMwASljUAEpY4ABKWOQASljoAEpY7ABKWPAASlj4AEpZAABKWQQASlkIAEpZEABKWRQASlsAAEpbCABKWxAASlsYAEpbJABKWygASlssAEpbMABKWzQASls8AEpbRABKW0gASltMAEpbVABKW1gASl1EAEpdTABKXVQASl1cAEpdaABKXWwASl1wAEpddABKXXgASl2AAEpdiABKXYwASl2QAEpdmABKXZwASl+IAEpfkABKX5gASl+gAEpfrABKX7AASl+0AEpfuABKX7wASl/EAEpfzABKX9AASl/UAEpf3ABKX+AASmHMAEph1ABKYdwASmHkAEph8ABKYfQASmH4AEph/ABKYgAASmIIAEpiEABKYhQASmIYAEpiIABKYiQASmQQAEpkGABKZCAASmQoAEpkNABKZDgASmQ8AEpkQABKZEQASmRMAEpkVABKZFgASmRcAEpkZABKZGgASma0AEpnQABKZ8AASmhAAEpoSABKaFAASmhYAEpoYABKaGwASmhwAEpodABKaIAASmiEAEpojABKaJAASmiYAEpopABKaKgASmisAEpouABKaLwASmjgAEppRABKaWgASmlwAEppeABKaZwASmmoAEpptABKabwASmrgAEprcABKbAwASmycAEpsqABKbLAASmy4AEpswABKbMgASmzQAEps1ABKbOAASm1EAEptyABKbdAASm3YAEpt4ABKbegASm3wAEpt+ABKbgAASm4IAEpujABKbpgASm6kAEpusABKbrwASm7IAEpu1ABKbuAASm7sAEpu9ABKcOAASnDoAEpw8ABKcPgASnEEAEpxCABKcQwASnEQAEpxFABKcRwASnEkAEpxKABKcSwASnE0AEpxOABKcyQASnMsAEpzNABKczwASnNIAEpzTABKc1AASnNUAEpzWABKc2AASnNoAEpzbABKc3AASnN4AEpzfABKdWgASnVwAEp1fABKdYQASnWQAEp1lABKdZgASnWcAEp1oABKdagASnWwAEp1tABKdbgASnXAAEp1xABKdigASnYsAEp2MABKdjgASngkAEp4LABKeDQASng8AEp4SABKeEwASnhQAEp4VABKeFgASnhgAEp4aABKeGwASnhwAEp4eABKeHwASnpoAEp6cABKengASnqAAEp6jABKepAASnqUAEp6mABKepwASnqkAEp6rABKerAASnq0AEp6vABKesAASnysAEp8tABKfLwASnzEAEp80ABKfNQASnzYAEp83ABKfOAASnzoAEp88ABKfPQASnz4AEp9AABKfQQASn7wAEp++ABKfwAASn8IAEp/FABKfxgASn8cAEp/IABKfyQASn8sAEp/NABKfzgASn88AEp/RABKf0gASoE0AEqBPABKgUQASoFMAEqBWABKgVwASoFgAEqBZABKgWgASoFwAEqBeABKgXwASoGAAEqBiABKgYwASoKwAEqDQABKg9wASoRsAEqEeABKhIAASoSIAEqEkABKhJgASoSgAEqEpABKhLAASoUUAEqFiABKhZAASoWYAEqFoABKhagASoWwAEqFuABKhcAASoY0AEqGQABKhkwASoZYAEqGZABKhnAASoZ8AEqGiABKhpAASoh8AEqIhABKiIwASoiUAEqIoABKiKQASoioAEqIrABKiLAASoi4AEqIwABKiMQASojIAEqI0ABKiNQASorAAEqKyABKitAASorYAEqK5ABKiugASorsAEqK8ABKivQASor8AEqLBABKiwgASosMAEqLFABKixgASo0EAEqNDABKjRQASo0cAEqNKABKjSwASo0wAEqNNABKjTgASo1AAEqNSABKjUwASo1QAEqNWABKjVwASo9IAEqPUABKj1gASo9gAEqPbABKj3AASo90AEqPeABKj3wASo+EAEqPjABKj5AASo+UAEqPnABKj6AASpGMAEqRlABKkZwASpGkAEqRsABKkbQASpG4AEqRvABKkcAASpHIAEqR0ABKkdQASpHYAEqR4ABKkeQASpPQAEqT2ABKk+AASpPoAEqT9ABKk/gASpP8AEqUAABKlAQASpQMAEqUFABKlBgASpQcAEqUJABKlCgASpYUAEqWHABKliQASpYsAEqWOABKljwASpZAAEqWRABKlkgASpZQAEqWWABKllwASpZgAEqWaABKlmwASpi4AEqZRABKmcQASppEAEqaTABKmlQASppcAEqaZABKmnAASpp0AEqaeABKmoQASpqIAEqakABKmpQASpqcAEqaqABKmqwASpqwAEqavABKmsAASprUAEqbOABKm1wASptkAEqbbABKm5AASpucAEqbqABKm7AASpzUAEqdZABKngAASp6QAEqenABKnqQASp6sAEqetABKnrwASp7EAEqeyABKntQASp84AEqfvABKn8QASp/MAEqf1ABKn9wASp/kAEqf7ABKn/QASp/8AEqggABKoIwASqCYAEqgpABKoLAASqC8AEqgyABKoNQASqDgAEqg6ABKotQASqLcAEqi5ABKouwASqL4AEqi/ABKowAASqMEAEqjCABKoxAASqMYAEqjHABKoyAASqMoAEqjLABKpRgASqUgAEqlKABKpTAASqU8AEqlQABKpUQASqVIAEqlTABKpVQASqVcAEqlYABKpWQASqVsAEqlcABKp1wASqdkAEqncABKp3gASqeEAEqniABKp4wASqeQAEqnlABKp5wASqekAEqnqABKp6wASqe0AEqnuABKqBwASqggAEqoJABKqCwASqoYAEqqIABKqigASqowAEqqPABKqkAASqpEAEqqSABKqkwASqpUAEqqXABKqmAASqpkAEqqbABKqnAASqxcAEqsZABKrGwASqx0AEqsgABKrIQASqyIAEqsjABKrJAASqyYAEqsoABKrKQASqyoAEqssABKrLQASq6gAEquqABKrrAASq64AEquxABKrsgASq7MAEqu0ABKrtQASq7cAEqu5ABKrugASq7sAEqu9ABKrvgASrDkAEqw7ABKsPQASrD8AEqxCABKsQwASrEQAEqxFABKsRgASrEgAEqxKABKsSwASrEwAEqxOABKsTwASrMoAEqzMABKszgASrNAAEqzTABKs1AASrNUAEqzWABKs1wASrNkAEqzbABKs3AASrN0AEqzfABKs4AASrSkAEq1NABKtdAASrZgAEq2bABKtnQASrZ8AEq2hABKtowASraUAEq2mABKtqQASrcIAEq3fABKt4QASreMAEq3lABKt5wASrekAEq3rABKt7QASrgoAEq4NABKuEAASrhMAEq4WABKuGQASrhwAEq4fABKuIQASrpwAEq6eABKuoAASrqIAEq6lABKupgASrqcAEq6oABKuqQASrqsAEq6tABKurgASrq8AEq6xABKusgASry0AEq8vABKvMQASrzMAEq82ABKvNwASrzgAEq85ABKvOgASrzwAEq8+ABKvPwASr0AAEq9CABKvQwASr74AEq/AABKvwgASr8QAEq/HABKvyAASr8kAEq/KABKvywASr80AEq/PABKv0AASr9EAEq/TABKv1AASsE8AErBRABKwUwASsFUAErBYABKwWQASsFoAErBbABKwXAASsF4AErBgABKwYQASsGIAErBkABKwZQASsOAAErDiABKw5AASsOYAErDpABKw6gASsOsAErDsABKw7QASsO8AErDxABKw8gASsPMAErD1ABKw9gASsXEAErFzABKxdQASsXcAErF6ABKxewASsXwAErF9ABKxfgASsYAAErGCABKxgwASsYQAErGGABKxhwASsgIAErIEABKyBgASsggAErILABKyDAASsg0AErIOABKyDwASshEAErITABKyFAASshUAErIXABKyGAASsqsAErLOABKy7gASsw4AErMQABKzEgASsxQAErMWABKzGQASsxoAErMbABKzHgASsx8AErMhABKzIgASsyQAErMnABKzKAASsykAErMsABKzLQASszIAErNLABKzVAASs1YAErNYABKzYQASs2QAErNnABKzaQASs7IAErPWABKz/QAStCEAErQkABK0JgAStCgAErQqABK0LAAStC4AErQvABK0MgAStEsAErRsABK0bgAStHAAErRyABK0dAAStHYAErR4ABK0egAStHwAErSdABK0oAAStKMAErSmABK0qQAStKwAErSvABK0sgAStLUAErS3ABK1MgAStTQAErU2ABK1OAAStTsAErU8ABK1PQAStT4AErU/ABK1QQAStUMAErVEABK1RQAStUcAErVIABK1wwAStcUAErXHABK1yQAStcwAErXNABK1zgAStc8AErXQABK10gAStdQAErXVABK11gAStdgAErXZABK2VAAStlYAErZZABK2WwAStl4AErZfABK2YAAStmEAErZiABK2ZAAStmYAErZnABK2aAAStmoAErZrABK2hAAStoUAEraGABK2iAAStwMAErcFABK3BwAStwkAErcMABK3DQAStw4AErcPABK3EAAStxIAErcUABK3FQAStxYAErcYABK3GQASt5QAEreWABK3mAASt5oAEredABK3ngASt58AEregABK3oQASt6MAErelABK3pgASt6cAErepABK3qgASuCUAErgnABK4KQASuCsAErguABK4LwASuDAAErgxABK4MgASuDQAErg2ABK4NwASuDgAErg6ABK4OwASuLYAEri4ABK4ugASuLwAEri/ABK4wAASuMEAErjCABK4wwASuMUAErjHABK4yAASuMkAErjLABK4zAASuUcAErlJABK5SwASuU0AErlQABK5UQASuVIAErlTABK5VAASuVYAErlYABK5WQASuVoAErlcABK5XQASuaYAErnKABK58QASuhUAEroYABK6GgASuhwAEroeABK6IAASuiIAErojABK6JgASuj8AErpcABK6XgASumAAErpiABK6ZAASumYAErpoABK6agASuocAErqKABK6jQASupAAErqTABK6lgASupkAErqcABK6ngASuxkAErsbABK7HQASux8AErsiABK7IwASuyQAErslABK7JgASuygAErsqABK7KwASuywAErsuABK7LwASu6oAErusABK7rgASu7AAEruzABK7tAASu7UAEru2ABK7twASu7kAEru7ABK7vAASu70AEru/ABK7wAASvDsAErw9ABK8PwASvEEAErxEABK8RQASvEYAErxHABK8SAASvEoAErxMABK8TQASvE4AErxQABK8UQASvMwAErzOABK80QASvNMAErzWABK81wASvNgAErzZABK82gASvNwAErzeABK83wASvOAAErziABK84wASvV4AEr1gABK9YgASvWQAEr1nABK9aAASvWkAEr1qABK9awASvW0AEr1vABK9cAASvXEAEr1zABK9dAASve8AEr3xABK98wASvfUAEr34ABK9+QASvfoAEr37ABK9/AASvf4AEr4AABK+AQASvgIAEr4EABK+BQASvoAAEr6CABK+hAASvoYAEr6JABK+igASvosAEr6MABK+jQASvo8AEr6RABK+kgASvpMAEr6VABK+lgASvqcAEr6oABK+qgASvyUAEr8nABK/KQASvysAEr8uABK/LwASvzAAEr8xABK/MgASvzQAEr82ABK/NwASvzgAEr86ABK/OwASv7YAEr+4ABK/ugASv7wAEr+/ABK/wAASv8EAEr/CABK/wwASv8UAEr/HABK/yAASv8kAEr/LABK/zAASwEcAEsBJABLATAASwE4AEsBRABLAUgASwFMAEsBUABLAVQASwFcAEsBZABLAWgASwFsAEsBdABLAXgASwPEAEsEUABLBNAASwVQAEsFWABLBWAASwVoAEsFcABLBXgASwV8AEsFgABLBYwASwWQAEsFmABLBZwASwWkAEsFrABLBbAASwW0AEsFwABLBcQASwXYAEsGPABLBmAASwZoAEsGcABLBpQASwagAEsGrABLBrQASwfYAEsIaABLCQQASwmUAEsJoABLCagASwmwAEsJuABLCcAASwnIAEsJzABLCdgASwo8AEsKwABLCsgASwrQAEsK2ABLCuAASwroAEsK8ABLCvgASwsAAEsLhABLC5AASwucAEsLqABLC7QASwvAAEsLzABLC9gASwvkAEsL7ABLDdgASw3gAEsN6ABLDfAASw38AEsOAABLDgQASw4IAEsODABLDhQASw4cAEsOIABLDiQASw4sAEsOMABLEBwASxAkAEsQLABLEDQASxBAAEsQRABLEEgASxBMAEsQUABLEFgASxBgAEsQZABLEGgASxBwAEsQdABLEmAASxJoAEsSdABLEnwASxKIAEsSjABLEpAASxKUAEsSmABLEqAASxKoAEsSrABLErAASxK4AEsSvABLEyAASxMkAEsTKABLEzAASxUcAEsVJABLFSwASxU0AEsVQABLFUQASxVIAEsVTABLFVAASxVYAEsVYABLFWQASxVoAEsVcABLFXQASxdgAEsXaABLF3AASxd4AEsXhABLF4gASxeMAEsXkABLF5QASxecAEsXpABLF6gASxesAEsXtABLF7gASxmkAEsZrABLGbQASxm8AEsZyABLGcwASxnQAEsZ1ABLGdgASxngAEsZ6ABLGewASxnwAEsZ+ABLGfwASxvoAEsb8ABLG/gASxwAAEscDABLHBAASxwUAEscGABLHBwASxwkAEscLABLHDAASxw0AEscPABLHEAASx4sAEseNABLHjwASx5EAEseUABLHlQASx5YAEseXABLHmAASx5oAEsecABLHnQASx54AEsegABLHoQASx+oAEsgOABLINQASyFkAEshcABLIXgASyGAAEshiABLIZAASyGYAEshnABLIagASyIMAEsigABLIogASyKQAEsimABLIqAASyKoAEsisABLIrgASyMsAEsjOABLI0QASyNQAEsjXABLI2gASyN0AEsjgABLI4gASyV0AEslfABLJYQASyWMAEslmABLJZwASyWgAEslpABLJagASyWwAEsluABLJbwASyXAAEslyABLJcwASye4AEsnwABLJ8gASyfQAEsn3ABLJ+AASyfkAEsn6ABLJ+wASyf0AEsn/ABLKAAASygEAEsoDABLKBAASyn8AEsqBABLKgwASyoUAEsqIABLKiQASyooAEsqLABLKjAASyo4AEsqQABLKkQASypIAEsqUABLKlQASyxAAEssSABLLFQASyxcAEssaABLLGwASyxwAEssdABLLHgASyyAAEssiABLLIwASyyQAEssmABLLJwASy6IAEsukABLLpgASy6gAEsurABLLrAASy60AEsuuABLLrwASy7EAEsuzABLLtAASy7UAEsu3ABLLuAASzDMAEsw1ABLMNwASzDkAEsw8ABLMPQASzD4AEsw/ABLMQAASzEIAEsxEABLMRQASzEYAEsxIABLMSQASzMQAEszGABLMyAASzMoAEszNABLMzgASzM8AEszQABLM0QASzNMAEszVABLM1gASzNcAEszZABLM2gASzW0AEs2QABLNsAASzdAAEs3SABLN1AASzdYAEs3YABLN2gASzdsAEs3cABLN3wASzeAAEs3iABLN4wASzeYAEs3oABLN6QASzeoAEs3tABLN7gASzfMAEs4MABLOFQASzhcAEs4ZABLOIgASziUAEs4oABLOKgASznMAEs6XABLOvgASzuIAEs7lABLO5wASzukAEs7rABLO7QASzu8AEs7wABLO8wASzwwAEs8tABLPLwASzzEAEs8zABLPNQASzzcAEs85ABLPOwASzz0AEs9eABLPYQASz2QAEs9nABLPagASz20AEs9wABLPcwASz3YAEs94ABLP8wASz/UAEs/3ABLP+QASz/wAEs/9ABLP/gASz/8AEtAAABLQAgAS0AQAEtAFABLQBgAS0AgAEtAJABLQhAAS0IYAEtCIABLQigAS0I0AEtCOABLQjwAS0JAAEtCRABLQkwAS0JUAEtCWABLQlwAS0JkAEtCaABLRFQAS0RcAEtEaABLRHAAS0R8AEtEgABLRIQAS0SIAEtEjABLRJQAS0ScAEtEoABLRKQAS0SsAEtEsABLRRQAS0UYAEtFHABLRSQAS0cQAEtHGABLRyAAS0coAEtHNABLRzgAS0c8AEtHQABLR0QAS0dMAEtHVABLR1gAS0dcAEtHZABLR2gAS0lUAEtJXABLSWQAS0lsAEtJeABLSXwAS0mAAEtJhABLSYgAS0mQAEtJmABLSZwAS0mgAEtJqABLSawAS0uYAEtLoABLS6gAS0uwAEtLvABLS8AAS0vEAEtLyABLS8wAS0vUAEtL3ABLS+AAS0vkAEtL7ABLS/AAS03cAEtN5ABLTewAS030AEtOAABLTgQAS04IAEtODABLThAAS04YAEtOIABLTiQAS04oAEtOMABLTjQAS1AgAEtQKABLUDAAS1A4AEtQRABLUEgAS1BMAEtQUABLUFQAS1BcAEtQZABLUGgAS1BsAEtQdABLUHgAS1GcAEtSLABLUsgAS1NYAEtTZABLU2wAS1N0AEtTfABLU4QAS1OMAEtTkABLU5wAS1QAAEtUdABLVHwAS1SEAEtUjABLVJQAS1ScAEtUpABLVKwAS1UgAEtVLABLVTgAS1VEAEtVUABLVVwAS1VoAEtVdABLVXwAS1doAEtXcABLV3gAS1eAAEtXjABLV5AAS1eUAEtXmABLV5wAS1ekAEtXrABLV7AAS1e0AEtXvABLV8AAS1msAEtZtABLWbwAS1nEAEtZ0ABLWdQAS1nYAEtZ3ABLWeAAS1noAEtZ8ABLWfQAS1n4AEtaAABLWgQAS1vwAEtb+ABLXAAAS1wIAEtcFABLXBgAS1wcAEtcIABLXCQAS1wsAEtcNABLXDgAS1w8AEtcRABLXEgAS140AEtePABLXkQAS15MAEteWABLXlwAS15gAEteZABLXmgAS15wAEteeABLXnwAS16AAEteiABLXowAS2B4AEtggABLYIgAS2CQAEtgnABLYKAAS2CkAEtgqABLYKwAS2C0AEtgvABLYMAAS2DEAEtgzABLYNAAS2K8AEtixABLYswAS2LUAEti4ABLYuQAS2LoAEti7ABLYvAAS2L4AEtjAABLYwQAS2MIAEtjEABLYxQAS2UAAEtlCABLZRAAS2UYAEtlJABLZSgAS2UsAEtlMABLZTQAS2U8AEtlRABLZUgAS2VMAEtlVABLZVgAS2ekAEtoMABLaLAAS2kwAEtpOABLaUAAS2lIAEtpUABLaVgAS2lcAEtpYABLaWwAS2lwAEtpeABLaXwAS2mEAEtpjABLaZAAS2mUAEtpoABLaaQAS2m4AEtqHABLakAAS2pIAEtqUABLanQAS2qAAEtqjABLapQAS2u4AEtsSABLbOQAS210AEttgABLbYgAS22QAEttmABLbaAAS22oAEttrABLbbgAS24cAEtuoABLbqgAS26wAEtuuABLbsAAS27IAEtu0ABLbtgAS27gAEtvZABLb3AAS298AEtviABLb5QAS2+gAEtvrABLb7gAS2/EAEtvzABLcbgAS3HAAEtxyABLcdAAS3HcAEtx4ABLceQAS3HoAEtx7ABLcfQAS3H8AEtyAABLcgQAS3IMAEtyEABLc/wAS3QEAEt0DABLdBQAS3QgAEt0JABLdCgAS3QsAEt0MABLdDgAS3RAAEt0RABLdEgAS3RQAEt0VABLdkAAS3ZIAEt2VABLdlwAS3ZoAEt2bABLdnAAS3Z0AEt2eABLdoAAS3aIAEt2jABLdpAAS3aYAEt2nABLdwAAS3cEAEt3CABLdxAAS3j8AEt5BABLeQwAS3kUAEt5IABLeSQAS3koAEt5LABLeTAAS3k4AEt5QABLeUQAS3lIAEt5UABLeVQAS3tAAEt7SABLe1AAS3tYAEt7ZABLe2gAS3tsAEt7cABLe3QAS3t8AEt7hABLe4gAS3uMAEt7lABLe5gAS32EAEt9jABLfZQAS32cAEt9qABLfawAS32wAEt9tABLfbgAS33AAEt9yABLfcwAS33QAEt92ABLfdwAS3/IAEt/0ABLf9gAS3/gAEt/7ABLf/AAS3/0AEt/+ABLf/wAS4AEAEuADABLgBAAS4AUAEuAHABLgCAAS4IMAEuCFABLghwAS4IkAEuCMABLgjQAS4I4AEuCPABLgkAAS4JIAEuCUABLglQAS4JYAEuCYABLgmQAS4OIAEuEGABLhLQAS4VEAEuFUABLhVgAS4VgAEuFaABLhXAAS4V4AEuFfABLhYgAS4XsAEuGYABLhmgAS4ZwAEuGeABLhoAAS4aIAEuGkABLhpgAS4cMAEuHGABLhyQAS4cwAEuHPABLh0gAS4dUAEuHYABLh2gAS4lUAEuJXABLiWQAS4lsAEuJeABLiXwAS4mAAEuJhABLiYgAS4mQAEuJmABLiZwAS4mgAEuJqABLiawAS4uYAEuLoABLi6gAS4uwAEuLvABLi8AAS4vEAEuLyABLi8wAS4vUAEuL3ABLi+AAS4vkAEuL7ABLi/AAS43cAEuN5ABLjewAS430AEuOAABLjgQAS44IAEuODABLjhAAS44YAEuOIABLjiQAS44oAEuOMABLjjQAS5AgAEuQKABLkDQAS5A8AEuQSABLkEwAS5BQAEuQVABLkFgAS5BgAEuQaABLkGwAS5BwAEuQeABLkHwAS5JoAEuScABLkngAS5KAAEuSjABLkpAAS5KUAEuSmABLkpwAS5KkAEuSrABLkrAAS5K0AEuSvABLksAAS5SsAEuUtABLlLwAS5TEAEuU0ABLlNQAS5TYAEuU3ABLlOAAS5ToAEuU8ABLlPQAS5T4AEuVAABLlQQAS5bwAEuW+ABLlwAAS5cIAEuXFABLlxgAS5ccAEuXIABLlyQAS5csAEuXNABLlzgAS5c8AEuXRABLl0gAS5mUAEuaIABLmqAAS5sgAEubKABLmzAAS5s4AEubQABLm0gAS5tMAEubUABLm1wAS5tgAEubaABLm2wAS5t0AEubfABLm4AAS5uEAEubkABLm5QAS5uoAEucDABLnDAAS5w4AEucQABLnGQAS5xwAEucfABLnIQAS52oAEueOABLntQAS59kAEufcABLn3gAS5+AAEufiABLn5AAS5+YAEufnABLn6gAS6AMAEugkABLoJgAS6CgAEugqABLoLAAS6C4AEugwABLoMgAS6DQAEuhVABLoWAAS6FsAEuheABLoYQAS6GQAEuhnABLoagAS6G0AEuhvABLo6gAS6OwAEujuABLo8AAS6PMAEuj0ABLo9QAS6PYAEuj3ABLo+QAS6PsAEuj8ABLo/QAS6P8AEukAABLpewAS6X0AEul/ABLpgQAS6YQAEumFABLphgAS6YcAEumIABLpigAS6YwAEumNABLpjgAS6ZAAEumRABLqDAAS6g4AEuoRABLqEwAS6hYAEuoXABLqGAAS6hkAEuoaABLqHAAS6h4AEuofABLqIAAS6iIAEuojABLqPAAS6j0AEuo+ABLqQAAS6rsAEuq9ABLqvwAS6sEAEurEABLqxQAS6sYAEurHABLqyAAS6soAEurMABLqzQAS6s4AEurQABLq0QAS60wAEutOABLrUAAS61IAEutVABLrVgAS61cAEutYABLrWQAS61sAEutdABLrXgAS618AEuthABLrYgAS690AEuvfABLr4QAS6+MAEuvmABLr5wAS6+gAEuvpABLr6gAS6+wAEuvuABLr7wAS6/AAEuvyABLr8wAS7G4AEuxwABLscgAS7HQAEux3ABLseAAS7HkAEux6ABLsewAS7H0AEux/ABLsgAAS7IEAEuyDABLshAAS7P8AEu0BABLtAwAS7QUAEu0IABLtCQAS7QoAEu0LABLtDAAS7Q4AEu0QABLtEQAS7RIAEu0UABLtFQAS7V4AEu2CABLtqQAS7c0AEu3QABLt0gAS7dQAEu3WABLt2AAS7doAEu3bABLt3gAS7fcAEu4UABLuFgAS7hgAEu4aABLuHAAS7h4AEu4gABLuIgAS7j8AEu5CABLuRQAS7kgAEu5LABLuTgAS7lEAEu5UABLuVgAS7tEAEu7TABLu1QAS7tcAEu7aABLu2wAS7twAEu7dABLu3gAS7uAAEu7iABLu4wAS7uQAEu7mABLu5wAS72IAEu9kABLvZgAS72gAEu9rABLvbAAS720AEu9uABLvbwAS73EAEu9zABLvdAAS73UAEu93ABLveAAS7/MAEu/1ABLv9wAS7/kAEu/8ABLv/QAS7/4AEu//ABLwAAAS8AIAEvAEABLwBQAS8AYAEvAIABLwCQAS8IQAEvCGABLwiQAS8IsAEvCOABLwjwAS8JAAEvCRABLwkgAS8JQAEvCWABLwlwAS8JgAEvCaABLwmwAS8RYAEvEYABLxGgAS8RwAEvEfABLxIAAS8SEAEvEiABLxIwAS8SUAEvEnABLxKAAS8SkAEvErABLxLAAS8acAEvGpABLxqwAS8a0AEvGwABLxsQAS8bIAEvGzABLxtAAS8bYAEvG4ABLxuQAS8boAEvG8ABLxvQAS8jgAEvI6ABLyPAAS8j4AEvJBABLyQgAS8kMAEvJEABLyRQAS8kcAEvJJABLySgAS8ksAEvJNABLyTgAS8uEAEvMEABLzJAAS80QAEvNGABLzSAAS80oAEvNMABLzTgAS808AEvNQABLzUwAS81QAEvNWABLzVwAS81oAEvNcABLzXQAS814AEvNhABLzYgAS82cAEvOAABLziQAS84sAEvONABLzlgAS85kAEvOcABLzngAS8+cAEvQLABL0MgAS9FYAEvRZABL0WwAS9F0AEvRfABL0YQAS9GMAEvRkABL0ZwAS9IAAEvShABL0owAS9KUAEvSnABL0qQAS9KsAEvStABL0rwAS9LEAEvTSABL01QAS9NgAEvTbABL03gAS9OEAEvTkABL05wAS9OoAEvTsABL1ZwAS9WkAEvVrABL1bQAS9XAAEvVxABL1cgAS9XMAEvV0ABL1dgAS9XgAEvV5ABL1egAS9XwAEvV9ABL1+AAS9foAEvX8ABL1/gAS9gEAEvYCABL2AwAS9gQAEvYFABL2BwAS9gkAEvYKABL2CwAS9g0AEvYOABL2iQAS9osAEvaOABL2kAAS9pMAEvaUABL2lQAS9pYAEvaXABL2mQAS9psAEvacABL2nQAS9p8AEvagABL2uQAS9roAEva7ABL2vQAS9zgAEvc6ABL3PAAS9z4AEvdBABL3QgAS90MAEvdEABL3RQAS90cAEvdJABL3SgAS90sAEvdNABL3TgAS98kAEvfLABL3zQAS988AEvfSABL30wAS99QAEvfVABL31gAS99gAEvfaABL32wAS99wAEvfeABL33wAS+FoAEvhcABL4XgAS+GAAEvhjABL4ZAAS+GUAEvhmABL4ZwAS+GkAEvhrABL4bAAS+G0AEvhvABL4cAAS+OsAEvjtABL47wAS+PEAEvj0ABL49QAS+PYAEvj3ABL4+AAS+PoAEvj8ABL4/QAS+P4AEvkAABL5AQAS+XwAEvl+ABL5gAAS+YIAEvmFABL5hgAS+YcAEvmIABL5iQAS+YsAEvmNABL5jgAS+Y8AEvmRABL5kgAS+dsAEvn/ABL6JgAS+koAEvpNABL6TwAS+lEAEvpTABL6VQAS+lcAEvpYABL6WwAS+nQAEvqRABL6kwAS+pUAEvqXABL6mQAS+psAEvqdABL6nwAS+rwAEvq/ABL6wgAS+sUAEvrIABL6ywAS+s4AEvrRABL60wAS+04AEvtQABL7UgAS+1QAEvtXABL7WAAS+1kAEvtaABL7WwAS+10AEvtfABL7YAAS+2EAEvtjABL7ZAAS+98AEvvhABL75AAS++YAEvvpABL76gAS++sAEvvsABL77QAS++8AEvvxABL78gAS+/MAEvv1ABL79gAS/HEAEvxzABL8dQAS/HcAEvx6ABL8ewAS/HwAEvx9ABL8fgAS/IAAEvyCABL8gwAS/IQAEvyGABL8hwAS/QIAEv0EABL9BwAS/QkAEv0MABL9DQAS/Q4AEv0PABL9EAAS/RIAEv0UABL9FQAS/RYAEv0YABL9GQAS/ZwAEv3AABL95AAS/gcAEv4uABL+TgAS/nUAEv6cABL+vAAS/uAAEv8EABL/BgAS/wkAEv8LABL/DQAS/w8AEv8SABL/FQAS/xcAEv8ZABL/HAAS/x4AEv8gABL/IwAS/yYAEv8nABL/LAAS/0UAEv9KABL/TAAS/1EAEv9UABL/VgAS/58AEv/DABL/6gATAA4AEwARABMAEwATABUAEwAXABMAGQATABsAEwAcABMAHwATADgAEwBdABMAXwATAGEAEwBjABMAZQATAGcAEwBpABMAawATAG0AEwBvABMAlAATAJcAEwCaABMAnQATAKAAEwCjABMApgATAKkAEwCsABMArwATALEAEwEsABMBLgATATEAEwEzABMBNgATATcAEwE4ABMBOQATAToAEwE8ABMBPgATAT8AEwFAABMBQgATAUMAEwFUABMBVQATAVcAEwHSABMB1AATAdYAEwHYABMB2wATAdwAEwHdABMB3gATAd8AEwHhABMB4wATAeQAEwHlABMB5wATAegAEwJjABMCZQATAmgAEwJqABMCbQATAm4AEwJvABMCcAATAnEAEwJzABMCdQATAnYAEwJ3ABMCeQATAnoAEwKLABMCjAATAo4AEwMJABMDCwATAw0AEwMPABMDEgATAxMAEwMUABMDFQATAxYAEwMYABMDGgATAxsAEwMcABMDHgATAx8AEwOaABMDnAATA58AEwOhABMDpAATA6UAEwOmABMDpwATA6gAEwOqABMDrAATA60AEwOuABMDsAATA7EAEwPCABMDwwATA8UAEwRAABMEQgATBEQAEwRGABMESQATBEoAEwRLABMETAATBE0AEwRPABMEUQATBFIAEwRTABMEVQATBFYAEwTRABME0wATBNYAEwTYABME2wATBNwAEwTdABME3gATBN8AEwThABME4wATBOQAEwTlABME5wATBOgAEwUBABMFAgATBQMAEwUFABMFgAATBYIAEwWEABMFhgATBYkAEwWKABMFiwATBYwAEwWNABMFjwATBZEAEwWSABMFkwATBZUAEwWWABMGEQATBhMAEwYWABMGGAATBhsAEwYcABMGHQATBh4AEwYfABMGIQATBiMAEwYkABMGJQATBicAEwYoABMGQgATBlsAEwZwABMGcwATBnYAEwZ5ABMGfAATBn8AEwaUABMGlwATBpoAEwadABMGoAATBqMAEwalABMGuAATBtQAEwbpABMHAwATBwgAEwebABMHvgATB94AEwf+ABMIAAATCAIAEwgEABMIBgATCAkAEwgKABMICwATCA4AEwgPABMIEQATCBIAEwgUABMIFwATCBgAEwgZABMIHAATCB0AEwgmABMIPwATCEgAEwhKABMITAATCFUAEwhYABMIWwATCF0AEwimABMIygATCPEAEwkVABMJGAATCRoAEwkcABMJHgATCSAAEwkiABMJIwATCSYAEwk/ABMJYAATCWIAEwlkABMJZgATCWgAEwlqABMJbAATCW4AEwlwABMJkQATCZQAEwmXABMJmgATCZ0AEwmgABMJowATCaYAEwmpABMJqwATCiYAEwooABMKKgATCiwAEwovABMKMAATCjEAEwoyABMKMwATCjUAEwo3ABMKOAATCjkAEwo7ABMKPAATCrcAEwq5ABMKuwATCr0AEwrAABMKwQATCsIAEwrDABMKxAATCsYAEwrIABMKyQATCsoAEwrMABMKzQATC0gAEwtKABMLTQATC08AEwtSABMLUwATC1QAEwtVABMLVgATC1gAEwtaABMLWwATC1wAEwteABMLXwATC3gAEwt5ABMLegATC3wAEwv3ABML+QATC/sAEwv9ABMMAAATDAEAEwwCABMMAwATDAQAEwwGABMMCAATDAkAEwwKABMMDAATDA0AEwyIABMMigATDIwAEwyOABMMkQATDJIAEwyTABMMlAATDJUAEwyXABMMmQATDJoAEwybABMMnQATDJ4AEw0ZABMNGwATDR0AEw0fABMNIgATDSMAEw0kABMNJQATDSYAEw0oABMNKgATDSsAEw0sABMNLgATDS8AEw2qABMNrAATDa4AEw2wABMNswATDbQAEw21ABMNtgATDbcAEw25ABMNuwATDbwAEw29ABMNvwATDcAAEw47ABMOPQATDj8AEw5BABMORAATDkUAEw5GABMORwATDkgAEw5KABMOTAATDk0AEw5OABMOUAATDlEAEw6aABMOvgATDuUAEw8JABMPDAATDw4AEw8QABMPEgATDxQAEw8WABMPFwATDxoAEw8zABMPUAATD1IAEw9UABMPVgATD1gAEw9aABMPXAATD14AEw97ABMPfgATD4EAEw+EABMPhwATD4oAEw+NABMPkAATD5IAExANABMQDwATEBEAExATABMQFgATEBcAExAYABMQGQATEBoAExAcABMQHgATEB8AExAgABMQIgATECMAExCeABMQoAATEKIAExCkABMQpwATEKgAExCpABMQqgATEKsAExCtABMQrwATELAAExCxABMQswATELQAExEvABMRMQATETMAExE1ABMROAATETkAExE6ABMROwATETwAExE+ABMRQAATEUEAExFCABMRRAATEUUAExHAABMRwgATEcUAExHHABMRygATEcsAExHMABMRzQATEc4AExHQABMR0gATEdMAExHUABMR1gATEdcAExJSABMSVAATElYAExJYABMSWwATElwAExJdABMSXgATEl8AExJhABMSYwATEmQAExJlABMSZwATEmgAExLjABMS5QATEucAExLpABMS7AATEu0AExLuABMS7wATEvAAExLyABMS9AATEvUAExL2ABMS+AATEvkAExN0ABMTdgATE3gAExN6ABMTfQATE34AExN/ABMTgAATE4EAExODABMThQATE4YAExOHABMTiQATE4oAExQdABMUQAATFGAAExSAABMUggATFIQAExSGABMUiAATFIsAExSMABMUjQATFJAAExSRABMUkwATFJQAExSXABMUmgATFJsAExScABMUnwATFKAAExSlABMUvgATFMcAExTJABMUywATFNQAExTXABMU2gATFNwAExUlABMVSQATFXAAExWUABMVlwATFZkAExWbABMVnQATFZ8AExWhABMVogATFaUAExW+ABMV3wATFeEAExXjABMV5QATFecAExXpABMV6wATFe0AExXvABMWEAATFhMAExYWABMWGQATFhwAExYfABMWIgATFiUAExYoABMWKgATFqUAExanABMWqQATFqsAExauABMWrwATFrAAExaxABMWsgATFrQAExa2ABMWtwATFrgAExa6ABMWuwATFzYAExc4ABMXOgATFzwAExc/ABMXQAATF0EAExdCABMXQwATF0UAExdHABMXSAATF0kAExdLABMXTAATF8cAExfJABMXzAATF84AExfRABMX0gATF9MAExfUABMX1QATF9cAExfZABMX2gATF9sAExfdABMX3gATF/cAExf4ABMX+QATF/sAExh2ABMYeAATGHoAExh8ABMYfwATGIAAExiBABMYggATGIMAExiFABMYhwATGIgAExiJABMYiwATGIwAExkHABMZCQATGQsAExkNABMZEAATGREAExkSABMZEwATGRQAExkWABMZGAATGRkAExkaABMZHAATGR0AExmYABMZmgATGZwAExmeABMZoQATGaIAExmjABMZpAATGaUAExmnABMZqQATGaoAExmrABMZrQATGa4AExopABMaKwATGi0AExovABMaMgATGjMAExo0ABMaNQATGjYAExo4ABMaOgATGjsAExo8ABMaPgATGj8AExq6ABMavAATGr4AExrAABMawwATGsQAExrFABMaxgATGscAExrJABMaywATGswAExrNABMazwATGtAAExsZABMbPQATG2QAExuIABMbiwATG40AExuPABMbkQATG5MAExuVABMblgATG5kAExuyABMbzwATG9EAExvTABMb1QATG9cAExvZABMb2wATG90AExv6ABMb/QATHAAAExwDABMcBgATHAkAExwMABMcDwATHBEAExyMABMcjgATHJAAExySABMclQATHJYAExyXABMcmAATHJkAExybABMcnQATHJ4AExyfABMcoQATHKIAEx0dABMdHwATHSEAEx0jABMdJgATHScAEx0oABMdKQATHSoAEx0sABMdLgATHS8AEx0wABMdMgATHTMAEx2uABMdsAATHbIAEx20ABMdtwATHbgAEx25ABMdugATHbsAEx29ABMdvwATHcAAEx3BABMdwwATHcQAEx4/ABMeQQATHkMAEx5FABMeSAATHkkAEx5KABMeSwATHkwAEx5OABMeUAATHlEAEx5SABMeVAATHlUAEx7QABMe0gATHtQAEx7WABMe2QATHtoAEx7bABMe3AATHt0AEx7fABMe4QATHuIAEx7jABMe5QATHuYAEx9hABMfYwATH2UAEx9nABMfagATH2sAEx9sABMfbQATH24AEx9wABMfcgATH3MAEx90ABMfdgATH3cAEx/yABMf9AATH/cAEx/5ABMf/AATH/0AEx/+ABMf/wATIAAAEyACABMgBAATIAUAEyAGABMgCAATIAkAEyCcABMgvwATIN8AEyD/ABMhAQATIQMAEyEFABMhBwATIQoAEyELABMhDAATIQ8AEyEQABMhEgATIRMAEyEVABMhGAATIRkAEyEaABMhHQATIR4AEyEnABMhQAATIUkAEyFLABMhTQATIVYAEyFZABMhXAATIV4AEyGnABMhywATIfIAEyIWABMiGQATIhsAEyIdABMiHwATIiEAEyIjABMiJAATIicAEyJAABMiYQATImMAEyJlABMiZwATImkAEyJrABMibQATIm8AEyJxABMikgATIpUAEyKYABMimwATIp4AEyKhABMipAATIqcAEyKqABMirAATIycAEyMpABMjKwATIy0AEyMwABMjMQATIzIAEyMzABMjNAATIzYAEyM4ABMjOQATIzoAEyM8ABMjPQATI7gAEyO6ABMjvAATI74AEyPBABMjwgATI8MAEyPEABMjxQATI8cAEyPJABMjygATI8sAEyPNABMjzgATJEkAEyRLABMkTgATJFAAEyRTABMkVAATJFUAEyRWABMkVwATJFkAEyRbABMkXAATJF0AEyRfABMkYAATJHkAEyR6ABMkewATJH0AEyT4ABMk+gATJPwAEyT+ABMlAQATJQIAEyUDABMlBAATJQUAEyUHABMlCQATJQoAEyULABMlDQATJQ4AEyWJABMliwATJY0AEyWPABMlkgATJZMAEyWUABMllQATJZYAEyWYABMlmgATJZsAEyWcABMlngATJZ8AEyYaABMmHAATJh4AEyYgABMmIwATJiQAEyYlABMmJgATJicAEyYpABMmKwATJiwAEyYtABMmLwATJjAAEyarABMmrQATJq8AEyaxABMmtAATJrUAEya2ABMmtwATJrgAEya6ABMmvAATJr0AEya+ABMmwAATJsEAEyc8ABMnPgATJ0AAEydCABMnRQATJ0YAEydHABMnSAATJ0kAEydLABMnTQATJ04AEydPABMnUQATJ1IAEyebABMnvwATJ+YAEygKABMoDQATKA8AEygRABMoEwATKBUAEygXABMoGAATKBsAEyg0ABMoUQATKFMAEyhVABMoVwATKFkAEyhbABMoXQATKF8AEyh8ABMofwATKIIAEyiFABMoiAATKIsAEyiOABMokQATKJMAEykOABMpEAATKRIAEykUABMpFwATKRgAEykZABMpGgATKRsAEykdABMpHwATKSAAEykhABMpIwATKSQAEymfABMpoQATKaMAEymlABMpqAATKakAEymqABMpqwATKawAEymuABMpsAATKbEAEymyABMptAATKbUAEyowABMqMgATKjQAEyo2ABMqOQATKjoAEyo7ABMqPAATKj0AEyo/ABMqQQATKkIAEypDABMqRQATKkYAEyrBABMqwwATKsYAEyrIABMqywATKswAEyrNABMqzgATKs8AEyrRABMq0wATKtQAEyrVABMq1wATKtgAEytTABMrVQATK1cAEytZABMrXAATK10AEyteABMrXwATK2AAEytiABMrZAATK2UAEytmABMraAATK2kAEyvkABMr5gATK+gAEyvqABMr7QATK+4AEyvvABMr8AATK/EAEyvzABMr9QATK/YAEyv3ABMr+QATK/oAEyx1ABMsdwATLHkAEyx7ABMsfgATLH8AEyyAABMsgQATLIIAEyyEABMshgATLIcAEyyIABMsigATLIsAEy0eABMtQQATLWEAEy2BABMtgwATLYUAEy2HABMtiQATLYwAEy2NABMtjgATLZEAEy2SABMtlAATLZUAEy2YABMtmwATLZwAEy2dABMtoAATLaEAEy2mABMtvwATLcgAEy3KABMtzAATLdUAEy3YABMt2wATLd0AEy4mABMuSgATLnEAEy6VABMumAATLpoAEy6cABMungATLqAAEy6iABMuowATLqYAEy6/ABMu4AATLuIAEy7kABMu5gATLugAEy7qABMu7AATLu4AEy7wABMvEQATLxQAEy8XABMvGgATLx0AEy8gABMvIwATLyYAEy8pABMvKwATL6YAEy+oABMvqgATL6wAEy+vABMvsAATL7EAEy+yABMvswATL7UAEy+3ABMvuAATL7kAEy+7ABMvvAATMDcAEzA5ABMwOwATMD0AEzBAABMwQQATMEIAEzBDABMwRAATMEYAEzBIABMwSQATMEoAEzBMABMwTQATMMgAEzDKABMwzQATMM8AEzDSABMw0wATMNQAEzDVABMw1gATMNgAEzDaABMw2wATMNwAEzDeABMw3wATMPgAEzD5ABMw+gATMPwAEzF3ABMxeQATMXsAEzF9ABMxgAATMYEAEzGCABMxgwATMYQAEzGGABMxiAATMYkAEzGKABMxjAATMY0AEzIIABMyCgATMgwAEzIOABMyEQATMhIAEzITABMyFAATMhUAEzIXABMyGQATMhoAEzIbABMyHQATMh4AEzKZABMymwATMp0AEzKfABMyogATMqMAEzKkABMypQATMqYAEzKoABMyqgATMqsAEzKsABMyrgATMq8AEzMqABMzLAATMy4AEzMwABMzMwATMzQAEzM1ABMzNgATMzcAEzM5ABMzOwATMzwAEzM9ABMzPwATM0AAEzO7ABMzvQATM78AEzPBABMzxAATM8UAEzPGABMzxwATM8gAEzPKABMzzAATM80AEzPOABMz0AATM9EAEzQaABM0PgATNGUAEzSJABM0jAATNI4AEzSQABM0kgATNJQAEzSWABM0lwATNJoAEzSzABM00AATNNIAEzTUABM01gATNNgAEzTaABM03AATNN4AEzT7ABM0/gATNQEAEzUEABM1BwATNQoAEzUNABM1EAATNRIAEzWNABM1jwATNZEAEzWTABM1lgATNZcAEzWYABM1mQATNZoAEzWcABM1ngATNZ8AEzWgABM1ogATNaMAEzYeABM2IAATNiIAEzYkABM2JwATNigAEzYpABM2KgATNisAEzYtABM2LwATNjAAEzYxABM2MwATNjQAEzavABM2sQATNrMAEza1ABM2uAATNrkAEza6ABM2uwATNrwAEza+ABM2wAATNsEAEzbCABM2xAATNsUAEzdAABM3QgATN0QAEzdGABM3SQATN0oAEzdLABM3TAATN00AEzdPABM3UQATN1IAEzdTABM3VQATN1YAEzfRABM30wATN9UAEzfXABM32gATN9sAEzfcABM33QATN94AEzfgABM34gATN+MAEzfkABM35gATN+cAEzhiABM4ZAATOGYAEzhoABM4awATOGwAEzhtABM4bgATOG8AEzhxABM4cwATOHQAEzh1ABM4dwATOHgAEzjzABM49QATOPgAEzj6ABM4/QATOP4AEzj/ABM5AAATOQEAEzkDABM5BQATOQYAEzkHABM5CQATOQoAEzmdABM5wAATOeAAEzoAABM6AgATOgQAEzoGABM6CAATOgoAEzoLABM6DAATOg8AEzoQABM6EgATOhMAEzoWABM6GAATOhkAEzoaABM6HQATOh4AEzojABM6PAATOkUAEzpHABM6SQATOlIAEzpVABM6WAATOloAEzqjABM6xwATOu4AEzsSABM7FQATOxcAEzsZABM7GwATOx0AEzsfABM7IAATOyMAEzs8ABM7XQATO18AEzthABM7YwATO2UAEztnABM7aQATO2sAEzttABM7jgATO5EAEzuUABM7lwATO5oAEzudABM7oAATO6MAEzumABM7qAATPCMAEzwlABM8JwATPCkAEzwsABM8LQATPC4AEzwvABM8MAATPDIAEzw0ABM8NQATPDYAEzw4ABM8OQATPLQAEzy2ABM8uAATPLoAEzy9ABM8vgATPL8AEzzAABM8wQATPMMAEzzFABM8xgATPMcAEzzJABM8ygATPUUAEz1HABM9SgATPUwAEz1PABM9UAATPVEAEz1SABM9UwATPVUAEz1XABM9WAATPVkAEz1bABM9XAATPXUAEz12ABM9dwATPXkAEz30ABM99gATPfgAEz36ABM9/QATPf4AEz3/ABM+AAATPgEAEz4DABM+BQATPgYAEz4HABM+CQATPgoAEz6FABM+hwATPokAEz6LABM+jgATPo8AEz6QABM+kQATPpIAEz6UABM+lgATPpcAEz6YABM+mgATPpsAEz8WABM/GAATPxoAEz8cABM/HwATPyAAEz8hABM/IgATPyMAEz8lABM/JwATPygAEz8pABM/KwATPywAEz+nABM/qQATP6sAEz+tABM/sAATP7EAEz+yABM/swATP7QAEz+2ABM/uAATP7kAEz+6ABM/vAATP70AE0A4ABNAOgATQDwAE0A+ABNAQQATQEIAE0BDABNARAATQEUAE0BHABNASQATQEoAE0BLABNATQATQE4AE0CXABNAuwATQOIAE0EGABNBCQATQQsAE0ENABNBDwATQREAE0ETABNBFAATQRcAE0EwABNBTQATQU8AE0FRABNBUwATQVUAE0FXABNBWQATQVsAE0F4ABNBewATQX4AE0GBABNBhAATQYcAE0GKABNBjQATQY8AE0IKABNCDAATQg4AE0IQABNCEwATQhQAE0IVABNCFgATQhcAE0IZABNCGwATQhwAE0IdABNCHwATQiAAE0KbABNCnQATQqAAE0KiABNCpQATQqYAE0KnABNCqAATQqkAE0KrABNCrQATQq4AE0KvABNCsQATQrIAE0MtABNDLwATQzEAE0MzABNDNgATQzcAE0M4ABNDOQATQzoAE0M8ABNDPgATQz8AE0NAABNDQgATQ0MAE0O+ABNDwAATQ8MAE0PFABNDyAATQ8kAE0PKABNDywATQ8wAE0POABND0AATQ9EAE0PSABND1AATQ9UAE0RQABNEUgATRFQAE0RWABNEWQATRFoAE0RbABNEXAATRF0AE0RfABNEYQATRGIAE0RjABNEZQATRGYAE0ThABNE4wATROUAE0TnABNE6gATROsAE0TsABNE7QATRO4AE0TwABNE8gATRPMAE0T0ABNE9gATRPcAE0VyABNFdAATRXcAE0V5ABNFfAATRX0AE0V+ABNFfwATRYAAE0WCABNFhAATRYUAE0WGABNFiAATRYkAE0YcABNGPwATRl8AE0Z/ABNGgQATRoMAE0aFABNGhwATRooAE0aLABNGjAATRo8AE0aQABNGkgATRpMAE0aVABNGmAATRpkAE0aaABNGnQATRp4AE0ajABNGvAATRsUAE0bHABNGyQATRtIAE0bVABNG2AATRtoAE0cjABNHRwATR24AE0eSABNHlQATR5cAE0eZABNHmwATR50AE0efABNHoAATR6MAE0e8ABNH3QATR98AE0fhABNH4wATR+UAE0fnABNH6QATR+sAE0ftABNIDgATSBEAE0gUABNIFwATSBoAE0gdABNIIAATSCMAE0gmABNIKAATSKMAE0ilABNIpwATSKkAE0isABNIrQATSK4AE0ivABNIsAATSLIAE0i0ABNItQATSLYAE0i4ABNIuQATSTQAE0k2ABNJOAATSToAE0k9ABNJPgATST8AE0lAABNJQQATSUMAE0lFABNJRgATSUcAE0lJABNJSgATScUAE0nHABNJygATScwAE0nPABNJ0AATSdEAE0nSABNJ0wATSdUAE0nXABNJ2AATSdkAE0nbABNJ3AATSfUAE0n2ABNJ9wATSfkAE0p0ABNKdgATSngAE0p6ABNKfQATSn4AE0p/ABNKgAATSoEAE0qDABNKhQATSoYAE0qHABNKiQATSooAE0sFABNLBwATSwkAE0sLABNLDgATSw8AE0sQABNLEQATSxIAE0sUABNLFgATSxcAE0sYABNLGgATSxsAE0uWABNLmAATS5oAE0ucABNLnwATS6AAE0uhABNLogATS6MAE0ulABNLpwATS6gAE0upABNLqwATS6wAE0wnABNMKQATTCsAE0wtABNMMAATTDEAE0wyABNMMwATTDQAE0w2ABNMOAATTDkAE0w6ABNMPAATTD0AE0y4ABNMugATTLwAE0y+ABNMwQATTMIAE0zDABNMxAATTMUAE0zHABNMyQATTMoAE0zLABNMzQATTM4AE00XABNNOwATTWIAE02GABNNiQATTYsAE02NABNNjwATTZEAE02TABNNlAATTZcAE02wABNNzQATTc8AE03RABNN0wATTdUAE03XABNN2QATTdsAE034ABNN+wATTf4AE04BABNOBAATTgcAE04KABNODQATTg8AE06KABNOjAATTo4AE06QABNOkwATTpQAE06VABNOlgATTpcAE06ZABNOmwATTpwAE06dABNOnwATTqAAE08bABNPHQATTx8AE08hABNPJAATTyUAE08mABNPJwATTygAE08qABNPLAATTy0AE08uABNPMAATTzEAE0+sABNPrgATT7AAE0+yABNPtQATT7YAE0+3ABNPuAATT7kAE0+7ABNPvQATT74AE0+/ABNPwQATT8IAE1A9ABNQPwATUEIAE1BEABNQRwATUEgAE1BJABNQSgATUEsAE1BNABNQTwATUFAAE1BRABNQUwATUFQAE1DPABNQ0QATUNMAE1DVABNQ2AATUNkAE1DaABNQ2wATUNwAE1DeABNQ4AATUOEAE1DiABNQ5AATUOUAE1FgABNRYgATUWQAE1FmABNRaQATUWoAE1FrABNRbAATUW0AE1FvABNRcQATUXIAE1FzABNRdQATUXYAE1HxABNR8wATUfUAE1H3ABNR+gATUfsAE1H8ABNR/QATUf4AE1IAABNSAgATUgMAE1IEABNSBgATUgcAE1IYABNSGQATUhsAE1KWABNSmAATUpoAE1KcABNSnwATUqAAE1KhABNSogATUqMAE1KlABNSpwATUqgAE1KpABNSqwATUqwAE1MnABNTKQATUysAE1MtABNTMAATUzEAE1MyABNTMwATUzQAE1M2ABNTOAATUzkAE1M6ABNTPAATUz0AE1O4ABNTugATU70AE1O/ABNTwgATU8MAE1PEABNTxQATU8YAE1PIABNTygATU8sAE1PMABNTzgATU88AE1RiABNUhQATVKUAE1TFABNUxwATVMkAE1TLABNUzQATVM8AE1TQABNU0QATVNQAE1TVABNU1wATVNgAE1TaABNU3AATVN0AE1TeABNU4QATVOIAE1TnABNVAAATVQkAE1ULABNVDQATVRYAE1UZABNVHAATVR4AE1VnABNViwATVbIAE1XWABNV2QATVdsAE1XdABNV3wATVeEAE1XjABNV5AATVecAE1YAABNWIQATViMAE1YlABNWJwATVikAE1YrABNWLQATVi8AE1YxABNWUgATVlUAE1ZYABNWWwATVl4AE1ZhABNWZAATVmcAE1ZqABNWbAATVucAE1bpABNW6wATVu0AE1bwABNW8QATVvIAE1bzABNW9AATVvYAE1b4ABNW+QATVvoAE1b8ABNW/QATV3gAE1d6ABNXfAATV34AE1eBABNXggATV4MAE1eEABNXhQATV4cAE1eJABNXigATV4sAE1eNABNXjgATWAkAE1gLABNYDgATWBAAE1gTABNYFAATWBUAE1gWABNYFwATWBkAE1gbABNYHAATWB0AE1gfABNYIAATWDkAE1g6ABNYOwATWD0AE1i4ABNYugATWLwAE1i+ABNYwQATWMIAE1jDABNYxAATWMUAE1jHABNYyQATWMoAE1jLABNYzQATWM4AE1lJABNZSwATWU0AE1lPABNZUgATWVMAE1lUABNZVQATWVYAE1lYABNZWgATWVsAE1lcABNZXgATWV8AE1naABNZ3AATWd4AE1ngABNZ4wATWeQAE1nlABNZ5gATWecAE1npABNZ6wATWewAE1ntABNZ7wATWfAAE1prABNabQATWm8AE1pxABNadAATWnUAE1p2ABNadwATWngAE1p6ABNafAATWn0AE1p+ABNagAATWoEAE1r8ABNa/gATWwAAE1sCABNbBQATWwYAE1sHABNbCAATWwkAE1sLABNbDQATWw4AE1sPABNbEQATWxIAE1tbABNbfwATW6YAE1vKABNbzQATW88AE1vRABNb0wATW9UAE1vXABNb2AATW9sAE1v0ABNcEQATXBMAE1wVABNcFwATXBkAE1wbABNcHQATXB8AE1w8ABNcPwATXEIAE1xFABNcSAATXEsAE1xOABNcUQATXFMAE1zOABNc0AATXNIAE1zUABNc1wATXNgAE1zZABNc2gATXNsAE1zdABNc3wATXOAAE1zhABNc4wATXOQAE11fABNdYQATXWMAE11lABNdaAATXWkAE11qABNdawATXWwAE11uABNdcAATXXEAE11yABNddAATXXUAE13wABNd8gATXfQAE132ABNd+QATXfoAE137ABNd/AATXf0AE13/ABNeAQATXgIAE14DABNeBQATXgYAE16BABNegwATXoUAE16HABNeigATXosAE16MABNejQATXo4AE16QABNekgATXpMAE16UABNelgATXpcAE18SABNfFAATXxYAE18YABNfGwATXxwAE18dABNfHgATXx8AE18hABNfIwATXyQAE18lABNfJwATXygAE1+jABNfpQATX6cAE1+pABNfrAATX60AE1+uABNfrwATX7AAE1+yABNftAATX7UAE1+2ABNfuAATX7kAE2A0ABNgNgATYDgAE2A6ABNgPQATYD4AE2A/ABNgQAATYEEAE2BDABNgRQATYEYAE2BHABNgSQATYEoAE2DdABNhAAATYSAAE2FAABNhQgATYUQAE2FGABNhSAATYUoAE2FLABNhTAATYU8AE2FQABNhUgATYVMAE2FVABNhVwATYVgAE2FZABNhXAATYV0AE2FiABNhewATYYQAE2GGABNhiAATYZEAE2GUABNhlwATYZkAE2HiABNiBgATYi0AE2JRABNiVAATYlYAE2JYABNiWgATYlwAE2JeABNiXwATYmIAE2J7ABNinAATYp4AE2KgABNiogATYqQAE2KmABNiqAATYqoAE2KsABNizQATYtAAE2LTABNi1gATYtkAE2LcABNi3wATYuIAE2LlABNi5wATY2IAE2NkABNjZgATY2gAE2NrABNjbAATY20AE2NuABNjbwATY3EAE2NzABNjdAATY3UAE2N3ABNjeAATY/MAE2P1ABNj9wATY/kAE2P8ABNj/QATY/4AE2P/ABNkAAATZAIAE2QEABNkBQATZAYAE2QIABNkCQATZIQAE2SGABNkiQATZIsAE2SOABNkjwATZJAAE2SRABNkkgATZJQAE2SWABNklwATZJgAE2SaABNkmwATZLQAE2S1ABNktgATZLgAE2UzABNlNQATZTcAE2U5ABNlPAATZT0AE2U+ABNlPwATZUAAE2VCABNlRAATZUUAE2VGABNlSAATZUkAE2XEABNlxgATZcgAE2XKABNlzQATZc4AE2XPABNl0AATZdEAE2XTABNl1QATZdYAE2XXABNl2QATZdoAE2ZVABNmVwATZlkAE2ZbABNmXgATZl8AE2ZgABNmYQATZmIAE2ZkABNmZgATZmcAE2ZoABNmagATZmsAE2bmABNm6AATZuoAE2bsABNm7wATZvAAE2bxABNm8gATZvMAE2b1ABNm9wATZvgAE2b5ABNm+wATZvwAE2d3ABNneQATZ3sAE2d9ABNngAATZ4EAE2eCABNngwATZ4QAE2eGABNniAATZ4kAE2eKABNnjAATZ40AE2fWABNn+gATaCEAE2hFABNoSAATaEoAE2hMABNoTgATaFAAE2hSABNoUwATaFYAE2hvABNojAATaI4AE2iQABNokgATaJQAE2iWABNomAATaJoAE2i3ABNougATaL0AE2jAABNowwATaMYAE2jJABNozAATaM4AE2lJABNpSwATaU0AE2lPABNpUgATaVMAE2lUABNpVQATaVYAE2lYABNpWgATaVsAE2lcABNpXgATaV8AE2naABNp3AATad4AE2ngABNp4wATaeQAE2nlABNp5gATaecAE2npABNp6wATaewAE2ntABNp7wATafAAE2prABNqbQATam8AE2pxABNqdAATanUAE2p2ABNqdwATangAE2p6ABNqfAATan0AE2p+ABNqgAATaoEAE2r8ABNq/gATawEAE2sDABNrBgATawcAE2sIABNrCQATawoAE2sMABNrDgATaw8AE2sQABNrEgATaxMAE2uOABNrkAATa5IAE2uUABNrlwATa5gAE2uZABNrmgATa5sAE2udABNrnwATa6AAE2uhABNrowATa6QAE2wfABNsIQATbCMAE2wlABNsKAATbCkAE2wqABNsKwATbCwAE2wuABNsMAATbDEAE2wyABNsNAATbDUAE2ywABNssgATbLQAE2y2ABNsuQATbLoAE2y7ABNsvAATbL0AE2y/ABNswQATbMIAE2zDABNsxQATbMYAE21ZABNtfAATbZwAE228ABNtvgATbcAAE23CABNtxAATbcYAE23HABNtyAATbcsAE23MABNtzgATbc8AE23RABNt0wATbdQAE23VABNt2AATbdkAE23eABNt9wATbgAAE24CABNuBAATbg0AE24QABNuEwATbhUAE25eABNuggATbqkAE27NABNu0AATbtIAE27UABNu1gATbtgAE27aABNu2wATbt4AE273ABNvGAATbxoAE28cABNvHgATbyAAE28iABNvJAATbyYAE28oABNvSQATb0wAE29PABNvUgATb1UAE29YABNvWwATb14AE29hABNvYwATb94AE2/gABNv4gATb+QAE2/nABNv6AATb+kAE2/qABNv6wATb+0AE2/vABNv8AATb/EAE2/zABNv9AATcG8AE3BxABNwcwATcHUAE3B4ABNweQATcHoAE3B7ABNwfAATcH4AE3CAABNwgQATcIIAE3CEABNwhQATcQAAE3ECABNxBQATcQcAE3EKABNxCwATcQwAE3ENABNxDgATcRAAE3ESABNxEwATcRQAE3EWABNxFwATcTAAE3ExABNxMgATcTQAE3GvABNxsQATcbMAE3G1ABNxuAATcbkAE3G6ABNxuwATcbwAE3G+ABNxwAATccEAE3HCABNxxAATccUAE3JAABNyQgATckQAE3JGABNySQATckoAE3JLABNyTAATck0AE3JPABNyUQATclIAE3JTABNyVQATclYAE3LRABNy0wATctUAE3LXABNy2gATctsAE3LcABNy3QATct4AE3LgABNy4gATcuMAE3LkABNy5gATcucAE3NiABNzZAATc2YAE3NoABNzawATc2wAE3NtABNzbgATc28AE3NxABNzcwATc3QAE3N1ABNzdwATc3gAE3PzABNz9QATc/cAE3P5ABNz/AATc/0AE3P+ABNz/wATdAAAE3QCABN0BAATdAUAE3QGABN0CAATdAkAE3RSABN0dgATdJ0AE3TBABN0xAATdMYAE3TIABN0ygATdMwAE3TOABN0zwATdNIAE3TrABN1CAATdQoAE3UMABN1DgATdRAAE3USABN1FAATdRYAE3UzABN1NgATdTkAE3U8ABN1PwATdUIAE3VFABN1SAATdUoAE3XFABN1xwATdckAE3XLABN1zgATdc8AE3XQABN10QATddIAE3XUABN11gATddcAE3XYABN12gATddsAE3ZWABN2WAATdloAE3ZcABN2XwATdmAAE3ZhABN2YgATdmMAE3ZlABN2ZwATdmgAE3ZpABN2awATdmwAE3bnABN26QATdusAE3btABN28AATdvEAE3byABN28wATdvQAE3b2ABN2+AATdvkAE3b6ABN2/AATdv0AE3d4ABN3egATd3wAE3d+ABN3gQATd4IAE3eDABN3hAATd4UAE3eHABN3iQATd4oAE3eLABN3jQATd44AE3gJABN4CwATeA0AE3gPABN4EgATeBMAE3gUABN4FQATeBYAE3gYABN4GgATeBsAE3gcABN4HgATeB8AE3iaABN4nAATeJ4AE3igABN4owATeKQAE3ilABN4pgATeKcAE3ipABN4qwATeKwAE3itABN4rwATeLAAE3krABN5LQATeS8AE3kxABN5NAATeTUAE3k2ABN5NwATeTgAE3k6ABN5PAATeT0AE3k+ABN5QAATeUEAE3nUABN59wATehcAE3o3ABN6OQATejsAE3o9ABN6PwATekEAE3pCABN6QwATekYAE3pHABN6SQATekoAE3pMABN6TgATek8AE3pQABN6UwATelQAE3pZABN6cgATensAE3p9ABN6fwATeogAE3qLABN6jgATepAAE3rZABN6/QATeyQAE3tIABN7SwATe00AE3tPABN7UQATe1MAE3tVABN7VgATe1kAE3tyABN7kwATe5UAE3uXABN7mQATe5sAE3udABN7nwATe6EAE3ujABN7xAATe8cAE3vKABN7zQATe9AAE3vTABN71gATe9kAE3vcABN73gATfFkAE3xbABN8XQATfF8AE3xiABN8YwATfGQAE3xlABN8ZgATfGgAE3xqABN8awATfGwAE3xuABN8bwATfOoAE3zsABN87gATfPAAE3zzABN89AATfPUAE3z2ABN89wATfPkAE3z7ABN8/AATfP0AE3z/ABN9AAATfXsAE319ABN9gAATfYIAE32FABN9hgATfYcAE32IABN9iQATfYsAE32NABN9jgATfY8AE32RABN9kgATfasAE32sABN9rQATfa8AE34qABN+LAATfi4AE34wABN+MwATfjQAE341ABN+NgATfjcAE345ABN+OwATfjwAE349ABN+PwATfkAAE367ABN+vQATfr8AE37BABN+xAATfsUAE37GABN+xwATfsgAE37KABN+zAATfs0AE37OABN+0AATftEAE39MABN/TgATf1AAE39SABN/VQATf1YAE39XABN/WAATf1kAE39bABN/XQATf14AE39fABN/YQATf2IAE3/dABN/3wATf+EAE3/jABN/5gATf+cAE3/oABN/6QATf+oAE3/sABN/7gATf+8AE3/wABN/8gATf/MAE4BuABOAcAATgHIAE4B0ABOAdwATgHgAE4B5ABOAegATgHsAE4B9ABOAfwATgIAAE4CBABOAgwATgIQAE4DNABOA8QATgRgAE4E8ABOBPwATgUEAE4FDABOBRQATgUcAE4FJABOBSgATgU0AE4FmABOBgwATgYUAE4GHABOBiQATgYsAE4GNABOBjwATgZEAE4GuABOBsQATgbQAE4G3ABOBugATgb0AE4HAABOBwwATgcUAE4JAABOCQgATgkQAE4JGABOCSQATgkoAE4JLABOCTAATgk0AE4JPABOCUQATglIAE4JTABOCVQATglYAE4LRABOC0wATgtUAE4LXABOC2gATgtsAE4LcABOC3QATgt4AE4LgABOC4gATguMAE4LkABOC5gATgucAE4NiABODZAATg2YAE4NoABODawATg2wAE4NtABODbgATg28AE4NxABODcwATg3QAE4N1ABODdwATg3gAE4PzABOD9QATg/cAE4P5ABOD/AATg/0AE4P+ABOD/wAThAAAE4QCABOEBAAThAUAE4QGABOECAAThAkAE4SEABOEhgAThIgAE4SKABOEjQAThI4AE4SPABOEkAAThJEAE4STABOElQAThJYAE4SXABOEmQAThJoAE4UVABOFFwAThRkAE4UbABOFHgAThR8AE4UgABOFIQAThSIAE4UkABOFJgAThScAE4UoABOFKgAThSsAE4WmABOFqAAThaoAE4WsABOFrwAThbAAE4WxABOFsgAThbMAE4W1ABOFtwAThbgAE4W5ABOFuwAThbwAE4ZPABOGcgAThpIAE4ayABOGtAAThrYAE4a4ABOGugAThrwAE4a9ABOGvgAThsEAE4bCABOGxAAThsUAE4bHABOGyQAThsoAE4bLABOGzgAThs8AE4bUABOG7QAThvYAE4b4ABOG+gAThwMAE4cGABOHCQAThwsAE4dUABOHeAATh58AE4fDABOHxgATh8gAE4fKABOHzAATh84AE4fQABOH0QATh9QAE4ftABOIDgATiBAAE4gSABOIFAATiBYAE4gYABOIGgATiBwAE4geABOIPwATiEIAE4hFABOISAATiEsAE4hOABOIUQATiFQAE4hXABOIWQATiNQAE4jWABOI2AATiNoAE4jdABOI3gATiN8AE4jgABOI4QATiOMAE4jlABOI5gATiOcAE4jpABOI6gATiWUAE4lnABOJaQATiWsAE4luABOJbwATiXAAE4lxABOJcgATiXQAE4l2ABOJdwATiXgAE4l6ABOJewATifYAE4n4ABOJ+wATif0AE4oAABOKAQATigIAE4oDABOKBAATigYAE4oIABOKCQATigoAE4oMABOKDQATiiYAE4onABOKKAATiioAE4qlABOKpwATiqkAE4qrABOKrgATiq8AE4qwABOKsQATirIAE4q0ABOKtgATircAE4q4ABOKugATirsAE4s2ABOLOAATizoAE4s8ABOLPwATi0AAE4tBABOLQgATi0MAE4tFABOLRwATi0gAE4tJABOLSwATi0wAE4vHABOLyQATi8sAE4vNABOL0AATi9EAE4vSABOL0wATi9QAE4vWABOL2AATi9kAE4vaABOL3AATi90AE4xYABOMWgATjFwAE4xeABOMYQATjGIAE4xjABOMZAATjGUAE4xnABOMaQATjGoAE4xrABOMbQATjG4AE4zpABOM6wATjO0AE4zvABOM8gATjPMAE4z0ABOM9QATjPYAE4z4ABOM+gATjPsAE4z8ABOM/gATjP8AE41IABONbAATjZMAE423ABONugATjbwAE42+ABONwAATjcIAE43EABONxQATjcgAE43hABON/gATjgAAE44CABOOBAATjgYAE44IABOOCgATjgwAE44pABOOLAATji8AE44yABOONQATjjgAE447ABOOPgATjkAAE467ABOOvQATjr8AE47BABOOxAATjsUAE47GABOOxwATjsgAE47KABOOzAATjs0AE47OABOO0AATjtEAE49MABOPTgATj1AAE49SABOPVQATj1YAE49XABOPWAATj1kAE49bABOPXQATj14AE49fABOPYQATj2IAE4/dABOP3wATj+EAE4/jABOP5gATj+cAE4/oABOP6QATj+oAE4/sABOP7gATj+8AE4/wABOP8gATj/MAE5BuABOQcAATkHIAE5B0ABOQdwATkHgAE5B5ABOQegATkHsAE5B9ABOQfwATkIAAE5CBABOQgwATkIQAE5D/ABORAQATkQMAE5EFABORCAATkQkAE5EKABORCwATkQwAE5EOABOREAATkREAE5ESABORFAATkRUAE5GQABORkgATkZQAE5GWABORmQATkZoAE5GbABORnAATkZ0AE5GfABORoQATkaIAE5GjABORpQATkaYAE5IhABOSIwATkiUAE5InABOSKgATkisAE5IsABOSLQATki4AE5IwABOSMgATkjMAE5I0ABOSNgATkjcAE5LKABOS7QATkw0AE5MtABOTLwATkzEAE5MzABOTNQATkzcAE5M4ABOTOQATkzwAE5M9ABOTPwATk0AAE5NCABOTRAATk0UAE5NGABOTSQATk0oAE5NPABOTaAATk3EAE5NzABOTdQATk34AE5OBABOThAATk4YAE5PPABOT8wATlBoAE5Q+ABOUQQATlEMAE5RFABOURwATlEkAE5RLABOUTAATlE8AE5RoABOUiQATlIsAE5SNABOUjwATlJEAE5STABOUlQATlJcAE5SZABOUugATlL0AE5TAABOUwwATlMYAE5TJABOUzAATlM8AE5TSABOU1AATlU8AE5VRABOVUwATlVUAE5VYABOVWQATlVoAE5VbABOVXAATlV4AE5VgABOVYQATlWIAE5VkABOVZQATleAAE5XiABOV5AATleYAE5XpABOV6gATlesAE5XsABOV7QATle8AE5XxABOV8gATlfMAE5X1ABOV9gATlnEAE5ZzABOWdgATlngAE5Z7ABOWfAATln0AE5Z+ABOWfwATloEAE5aDABOWhAATloUAE5aHABOWiAATlqEAE5aiABOWowATlqUAE5cgABOXIgATlyQAE5cmABOXKQATlyoAE5crABOXLAATly0AE5cvABOXMQATlzIAE5czABOXNQATlzYAE5exABOXswATl7UAE5e3ABOXugATl7sAE5e8ABOXvQATl74AE5fAABOXwgATl8MAE5fEABOXxgATl8cAE5hCABOYRAATmEYAE5hIABOYSwATmEwAE5hNABOYTgATmE8AE5hRABOYUwATmFQAE5hVABOYVwATmFgAE5jTABOY1QATmNcAE5jZABOY3AATmN0AE5jeABOY3wATmOAAE5jiABOY5AATmOUAE5jmABOY6AATmOkAE5lkABOZZgATmWgAE5lqABOZbQATmW4AE5lvABOZcAATmXEAE5lzABOZdQATmXYAE5l3ABOZeQATmXoAE5nDABOZ5wATmg4AE5oyABOaNQATmjcAE5o5ABOaOwATmj0AE5o/ABOaQAATmkMAE5pcABOaeQATmnsAE5p9ABOafwATmoEAE5qDABOahQATmocAE5qkABOapwATmqoAE5qtABOasAATmrMAE5q2ABOauQATmrsAE5s2ABObOAATmzoAE5s8ABObPwATm0AAE5tBABObQgATm0MAE5tFABObRwATm0gAE5tJABObSwATm0wAE5vHABObyQATm8sAE5vNABOb0AATm9EAE5vSABOb0wATm9QAE5vWABOb2AATm9kAE5vaABOb3AATm90AE5xYABOcWgATnFwAE5xeABOcYQATnGIAE5xjABOcZAATnGUAE5xnABOcaQATnGoAE5xrABOcbQATnG4AE5zpABOc6wATnO0AE5zvABOc8gATnPMAE5z0ABOc9QATnPYAE5z4ABOc+gATnPsAE5z8ABOc/gATnP8AE516ABOdfAATnX4AE52AABOdgwATnYQAE52FABOdhgATnYcAE52JABOdiwATnYwAE52NABOdjwATnZAAE54LABOeDQATng8AE54RABOeFAATnhUAE54WABOeFwATnhgAE54aABOeHAATnh0AE54eABOeIAATniEAE56cABOengATnqAAE56iABOepQATnqYAE56nABOeqAATnqkAE56rABOerQATnq4AE56vABOesQATnrIAE59FABOfaAATn4gAE5+oABOfqgATn6wAE5+uABOfsAATn7IAE5+zABOftAATn7cAE5+4ABOfugATn7sAE5+9ABOfvwATn8AAE5/BABOfxAATn8UAE5/KABOf4wATn+wAE5/uABOf8AATn/kAE5/8ABOf/wAToAEAE6BKABOgbgAToJUAE6C5ABOgvAAToL4AE6DAABOgwgAToMQAE6DGABOgxwAToMoAE6DjABOhBAAToQYAE6EIABOhCgAToQwAE6EOABOhEAAToRIAE6EUABOhNQAToTgAE6E7ABOhPgAToUEAE6FEABOhRwAToUoAE6FNABOhTwATocoAE6HMABOhzgATodAAE6HTABOh1AATodUAE6HWABOh1wATodkAE6HbABOh3AATod0AE6HfABOh4AATolsAE6JdABOiXwATomEAE6JkABOiZQATomYAE6JnABOiaAATomoAE6JsABOibQATom4AE6JwABOicQATouwAE6LuABOi8QATovMAE6L2ABOi9wATovgAE6L5ABOi+gATovwAE6L+ABOi/wATowAAE6MCABOjAwAToxwAE6MdABOjHgAToyAAE6ObABOjnQATo58AE6OhABOjpAATo6UAE6OmABOjpwATo6gAE6OqABOjrAATo60AE6OuABOjsAATo7EAE6QsABOkLgATpDAAE6QyABOkNQATpDYAE6Q3ABOkOAATpDkAE6Q7ABOkPQATpD4AE6Q/ABOkQQATpEIAE6S9ABOkvwATpMEAE6TDABOkxgATpMcAE6TIABOkyQATpMoAE6TMABOkzgATpM8AE6TQABOk0gATpNMAE6VOABOlUAATpVIAE6VUABOlVwATpVgAE6VZABOlWgATpVsAE6VdABOlXwATpWAAE6VhABOlYwATpWQAE6XfABOl4QATpeMAE6XlABOl6AATpekAE6XqABOl6wATpewAE6XuABOl8AATpfEAE6XyABOl9AATpfUAE6Y+ABOmYgATpokAE6atABOmsAATprIAE6a0ABOmtgATprgAE6a6ABOmuwATpr4AE6bXABOm9AATpvYAE6b4ABOm+gATpvwAE6b+ABOnAAATpwIAE6cfABOnIgATpyUAE6coABOnKwATpy4AE6cxABOnNAATpzYAE6exABOnswATp7UAE6e3ABOnugATp7sAE6e8ABOnvQATp74AE6fAABOnwgATp8MAE6fEABOnxgATp8cAE6hCABOoRAATqEYAE6hIABOoSwATqEwAE6hNABOoTgATqE8AE6hRABOoUwATqFQAE6hVABOoVwATqFgAE6jTABOo1QATqNcAE6jZABOo3AATqN0AE6jeABOo3wATqOAAE6jiABOo5AATqOUAE6jmABOo6AATqOkAE6lkABOpZgATqWgAE6lqABOpbQATqW4AE6lvABOpcAATqXEAE6lzABOpdQATqXYAE6l3ABOpeQATqXoAE6n1ABOp9wATqfkAE6n7ABOp/gATqf8AE6oAABOqAQATqgIAE6oEABOqBgATqgcAE6oIABOqCgATqgsAE6qGABOqiAATqooAE6qMABOqjwATqpAAE6qRABOqkgATqpMAE6qVABOqlwATqpgAE6qZABOqmwATqpwAE6sXABOrGQATqxsAE6sdABOrIAATqyEAE6siABOrIwATqyQAE6smABOrKAATqykAE6sqABOrLAATqy0AE6vAABOr4wATrAMAE6wjABOsJQATrCcAE6wpABOsKwATrC0AE6wuABOsLwATrDIAE6wzABOsNQATrDYAE6w4ABOsOgATrDsAE6w8ABOsPwATrEAAE6xFABOsXgATrGcAE6xpABOsawATrHQAE6x3ABOsegATrHwAE6zFABOs6QATrRAAE600ABOtNwATrTkAE607ABOtPQATrT8AE61BABOtQgATrUUAE61eABOtfwATrYEAE62DABOthQATrYcAE62JABOtiwATrY0AE62PABOtsAATrbMAE622ABOtuQATrbwAE62/ABOtwgATrcUAE63IABOtygATrkUAE65HABOuSQATrksAE65OABOuTwATrlAAE65RABOuUgATrlQAE65WABOuVwATrlgAE65aABOuWwATrtYAE67YABOu2gATrtwAE67fABOu4AATruEAE67iABOu4wATruUAE67nABOu6AATrukAE67rABOu7AATr2cAE69pABOvbAATr24AE69xABOvcgATr3MAE690ABOvdQATr3cAE695ABOvegATr3sAE699ABOvfgATr5cAE6+YABOvmQATr5sAE7AWABOwGAATsBoAE7AcABOwHwATsCAAE7AhABOwIgATsCMAE7AlABOwJwATsCgAE7ApABOwKwATsCwAE7CnABOwqQATsKsAE7CtABOwsAATsLEAE7CyABOwswATsLQAE7C2ABOwuAATsLkAE7C6ABOwvAATsL0AE7E4ABOxOgATsTwAE7E+ABOxQQATsUIAE7FDABOxRAATsUUAE7FHABOxSQATsUoAE7FLABOxTQATsU4AE7HJABOxywATsc0AE7HPABOx0gATsdMAE7HUABOx1QATsdYAE7HYABOx2gATsdsAE7HcABOx3gATsd8AE7JaABOyXAATsl4AE7JgABOyYwATsmQAE7JlABOyZgATsmcAE7JpABOyawATsmwAE7JtABOybwATsnAAE7K5ABOy3QATswQAE7MoABOzKwATsy0AE7MvABOzMQATszMAE7M1ABOzNgATszkAE7NSABOzbwATs3EAE7NzABOzdQATs3cAE7N5ABOzewATs30AE7OaABOznQATs6AAE7OjABOzpgATs6kAE7OsABOzrwATs7EAE7QsABO0LgATtDEAE7QzABO0NgATtDcAE7Q4ABO0OQATtDoAE7Q8ABO0PgATtD8AE7RAABO0QgATtEMAE7S+ABO0wAATtMIAE7TEABO0xwATtMgAE7TJABO0ygATtMsAE7TNABO0zwATtNAAE7TRABO00wATtNQAE7VPABO1UQATtVMAE7VVABO1WAATtVkAE7VaABO1WwATtVwAE7VeABO1YAATtWEAE7ViABO1ZAATtWUAE7XgABO14gATteUAE7XnABO16gATtesAE7XsABO17QATte4AE7XwABO18gATtfMAE7X0ABO19gATtfcAE7ZyABO2dAATtnYAE7Z4ABO2ewATtnwAE7Z9ABO2fgATtn8AE7aBABO2gwATtoQAE7aFABO2hwATtogAE7cDABO3BQATtwcAE7cJABO3DAATtw0AE7cOABO3DwATtxAAE7cSABO3FAATtxUAE7cWABO3GAATtxkAE7eUABO3lgATt5gAE7eaABO3nQATt54AE7efABO3oAATt6EAE7ejABO3pQATt6YAE7enABO3qQATt6oAE7g9ABO4YAATuIAAE7igABO4ogATuKQAE7imABO4qAATuKoAE7irABO4rAATuK8AE7iwABO4sgATuLMAE7i1ABO4twATuLgAE7i5ABO4vAATuL0AE7jCABO42wATuOQAE7jmABO46AATuPEAE7j0ABO49wATuPkAE7lCABO5ZgATuY0AE7mxABO5tAATubYAE7m4ABO5ugATubwAE7m+ABO5vwATucIAE7nbABO5/AATuf4AE7oAABO6AgATugQAE7oGABO6CAATugoAE7oMABO6LQATujAAE7ozABO6NgATujkAE7o8ABO6PwATukIAE7pFABO6RwATusIAE7rEABO6xgATusgAE7rLABO6zAATus0AE7rOABO6zwATutEAE7rTABO61AATutUAE7rXABO62AATu1MAE7tVABO7VwATu1kAE7tcABO7XQATu14AE7tfABO7YAATu2IAE7tkABO7ZQATu2YAE7toABO7aQATu+QAE7vmABO76QATu+sAE7vuABO77wATu/AAE7vxABO78gATu/QAE7v2ABO79wATu/gAE7v6ABO7+wATvBQAE7wVABO8FgATvBgAE7yTABO8lQATvJcAE7yZABO8nAATvJ0AE7yeABO8nwATvKAAE7yiABO8pAATvKUAE7ymABO8qAATvKkAE70kABO9JgATvSgAE70qABO9LQATvS4AE70vABO9MAATvTEAE70zABO9NQATvTYAE703ABO9OQATvToAE721ABO9twATvbkAE727ABO9vgATvb8AE73AABO9wQATvcIAE73EABO9xgATvccAE73IABO9ygATvcsAE75GABO+SAATvkoAE75MABO+TwATvlAAE75RABO+UgATvlMAE75VABO+VwATvlgAE75ZABO+WwATvlwAE77XABO+2QATvtsAE77dABO+4AATvuEAE77iABO+4wATvuQAE77mABO+6AATvukAE77qABO+7AATvu0AE782ABO/WgATv4EAE7+lABO/qAATv6oAE7+sABO/rgATv7AAE7+yABO/swATv7YAE7/PABO/7AATv+4AE7/wABO/8gATv/QAE7/2ABO/+AATv/oAE8AXABPAGgATwB0AE8AgABPAIwATwCYAE8ApABPALAATwC4AE8CpABPAqwATwK0AE8CvABPAsgATwLMAE8C0ABPAtQATwLYAE8C4ABPAugATwLsAE8C8ABPAvgATwL8AE8E6ABPBPAATwT4AE8FAABPBQwATwUQAE8FFABPBRgATwUcAE8FJABPBSwATwUwAE8FNABPBTwATwVAAE8HLABPBzQATwc8AE8HRABPB1AATwdUAE8HWABPB1wATwdgAE8HaABPB3AATwd0AE8HeABPB4AATweEAE8JcABPCXgATwmAAE8JiABPCZQATwmYAE8JnABPCaAATwmkAE8JrABPCbQATwm4AE8JvABPCcQATwnIAE8LtABPC7wATwvEAE8LzABPC9gATwvcAE8L4ABPC+QATwvoAE8L8ABPC/gATwv8AE8MAABPDAgATwwMAE8N+ABPDgAATw4IAE8OEABPDhwATw4gAE8OJABPDigATw4sAE8ONABPDjwATw5AAE8ORABPDkwATw5QAE8QPABPEEQATxBMAE8QVABPEGAATxBkAE8QaABPEGwATxBwAE8QeABPEIAATxCEAE8QiABPEJAATxCUAE8Q2ABPENwATxDkAE8S0ABPEtgATxLgAE8S6ABPEvAATxL0AE8S+ABPEvwATxMAAE8TCABPExAATxMUAE8TGABPEyAATxMkAE8VEABPFRgATxUgAE8VKABPFTAATxU0AE8VOABPFTwATxVAAE8VSABPFVAATxVUAE8VWABPFWAATxVkAE8XUABPF1gATxdkAE8XbABPF3QATxd4AE8XfABPF4AATxeEAE8XjABPF5QATxeYAE8XnABPF6QATxeoAE8X7ABPGAAATxgMAE8YFABPGHgATxh8AE8YgABPGIgATxjsAE8Y8ABPGPQATxj8AE8ZYABPGWQATxloAE8ZcABPGbQATxnwAE8aVABPGpAATxrYAE8bKABPG4QATxvMAE8cEABPHBQATxwcAE8cgABPHIQATxyIAE8ckABPHPAATx00AE8dXABPHZAAAAAAAAAQEAAAAAAAB6FcAAAAAAAAAAAAAAAAAE8ds + + + + + PersistedGroupV2Discussion + Undefined + 31 + PersistedGroupV2Discussion + 1 + + + + + + 1 + mentions + + + + PersistedLatestDiscussionSenderSequenceNumber + Undefined + 6 + PersistedLatestDiscussionSenderSequenceNumber + 1 + + + + + + 1 + allDraftFyleJoins + + + + serializedReturnReceipt + + + + rawContactIdentityIdentity + + + + capabilityWebrtcContinuousICE + + + + fileName + + + + customPhotoFilename + + + + associatedData + + + + groupOwnerIdentity + + + + 1 + unsortedRecipientsInfos + + + + ownPermissionAdmin + + + + rawPinnedIndex + + + + 1 + contactGroups + + + + mentionRangeUpperBound + + + + groupName + + + + PersistedDraft + Undefined + 11 + PersistedDraft + 1 + + + + + + creationTimestamp + + + + PersistedGroupDiscussion + Undefined + 32 + PersistedGroupDiscussion + 1 + + + + + + timestampDelivered + + + + sortIndex + + + + 1 + receivedMessage + + + + isCaller + + + + 1 + invitations + + + + rawCountBasedRetention + + + + 1 + rawOwnedIdentity + + + + 1 + draft + + + + readOnce + + + + note + + + + creationTimestamp + + + + rawRequesterIdentity + + + + 1 + illustrativeMessage + + + + 1 + fyle + + + + PersistedExpirationForReceivedMessageWithLimitedVisibility + Undefined + 14 + PersistedExpirationForReceivedMessageWithLimitedVisibility + 1 + + + + + + rawOwnedIdentityIdentity + + + + position + + + + serializedIdentityCoreDetails + + + + timestampOfLastMessage + + + + rawContactIdentity + + + + updateInProgress + + + + sectionIdentifier + + + + 1 + owner + + + + 1 + persistedMetadata + + + + YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8Q +D05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGkCwwTFFUkbnVsbNMNDg8QERJfEA9OU0NvbnN0YW50VmFsdWVfEBBOU0V4cHJlc3Npb25UeXBlViRjbGFzc4ACEACAAwnSFRYXGFokY2xhc3NuYW1lWCRjbGFzc2VzXxAZTlNDb25zdGFudFZhbHVlRXhwcmVzc2lvbqMXGRpcTlNFeHByZXNzaW9uWE5TT2JqZWN0CBEaJCkyN0lMUVNYXmV3ipGTlZeYnaixzdHeAAAAAAAAAQEAAAAAAAAAGwAAAAAAAAAAAAAAAAAAAOc= + + atLeastOneDeviceAllowsThisContactToReceiveMessages + + + + 1 + rawOwnedIdentity + + + + permanentUUID + + + + 1 + discussion + + + + PersistedMessageSentRecipientInfos + Undefined + 18 + PersistedMessageSentRecipientInfos + 1 + + + + + + body + + + + 1 + draft + + + + aNewReceivedMessageDoesMentionOwnedIdentity + + + + customDisplayName + + + + index + + + + groupIdentifier + + + + numberOfUnreadReceivedMessages + + + + groupUidRaw + + + + 1 + rawReactions + + + + permanentUUID + + + + latestSequenceNumber + + + + rawStatus + + + + rawMentionnedIdentity + + + + groupUidRaw + + + + 1 + sharedConfiguration + + + + PersistedGroupV2 + Undefined + 21 + PersistedGroupV2 + 1 + + + + + + expirationDate + + + + timestampMessageSent + + + + PersistedObvOwnedIdentity + Undefined + 39 + PersistedObvOwnedIdentity + 1 + + + + + + timestamp + + + + rawReportKind + + + + 1 + messages + + + + rawCountBasedRetentionIsActive + + + + sectionIdentifier + + + + creationDate + + + + groupIdentifier + + + + permanentUUID + + + + expirationDate + + + + rawRequestType + + + + PersistedMessageSentToPersistedMessageSentV66ToV67 + PersistedMessageSent + Undefined + 34 + PersistedMessageSent + 1 + + + + + + rawSecureChannelStatus + + + + rawOwnedIdentityIdentity + + + + 1 + rawReactions + + + + wasOpened + + + + title + + + + 1 + contactGroups + + + + actionRequired + + + + 1 + detailsPublished + + + + senderSequenceNumber + + + + messageIdentifierFromEngine + + + + capabilityGroupsV2 + + + + 1 + localConfiguration + + + + pinnedSectionKeyPath + + + + 1 + replyTo + + + + 1 + allFyleMessageJoinWithStatus + + + + identity + + + + doesMentionOwnedIdentity + + + + isArchived + + + + fullDisplayName + + + + isWiped + + + + keycloakManaged + + + + optionalOwnedIdentityIdentity + + + + groupV2Identifier + + + + 1 + discussion + + + + photoURL + + + + senderThreadIdentifier + + + + senderThreadIdentifier + + + + 1 + devices + + + + 1 + message + + + + note + + + + 1 + messageReceivedWithLimitedVisibility + + + + SentFyleMessageJoinWithStatus + Undefined + 28 + SentFyleMessageJoinWithStatus + 1 + + + + + + PersistedOneToOneDiscussion + Undefined + 30 + PersistedOneToOneDiscussion + 1 + + + + + + timestampRead + + + + 1 + contactIdentity + + + + 1 + fyle + + + + 1 + callLogItem + + + + 1 + ownedContactGroups + + + + rawDoFetchContentRichURLsMetadata + + + + actionRequired + + + + 1 + illustrativeMessageForDiscussion + + + + senderSequenceNumber + + + + senderIdentifier + + + + rawOwnedIdentityIdentity + + + + photoURL + + + + 1 + messageSentWithLimitedExistence + + + + senderIdentifier + + + + 1 + latestSenderSequenceNumbers + + + \ No newline at end of file diff --git a/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v66_to_v67/MigrationPolicies/PersistedMessageSentToPersistedMessageSentV66ToV67.swift b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v66_to_v67/MigrationPolicies/PersistedMessageSentToPersistedMessageSentV66ToV67.swift new file mode 100644 index 00000000..bfabd635 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v66_to_v67/MigrationPolicies/PersistedMessageSentToPersistedMessageSentV66ToV67.swift @@ -0,0 +1,77 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CoreData +import os.log + + +final class PersistedMessageSentToPersistedMessageSentV66ToV67: NSEntityMigrationPolicy { + + private static let errorDomain = "MessengerMigrationV58ToV59" + private static let debugPrintPrefix = "[\(errorDomain)][PersistedMessageSentToPersistedMessageSentV66ToV67]" + + let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "PersistedMessageSentToPersistedMessageSentV66ToV67") + + // Tested + override func createDestinationInstances(forSource sInstance: NSManagedObject, in mapping: NSEntityMapping, manager: NSMigrationManager) throws { + + do { + + debugPrint("\(Self.debugPrintPrefix) createDestinationInstances starts") + defer { + debugPrint("\(Self.debugPrintPrefix) createDestinationInstances ends") + } + + let dInstance = try initializeDestinationInstance(forEntityName: "PersistedMessageSent", + forSource: sInstance, + in: mapping, + manager: manager, + errorDomain: Self.errorDomain) + defer { + manager.associate(sourceInstance: sInstance, withDestinationInstance: dInstance, for: mapping) + } + + // Until now, all sent messages were sent from the current device. + // Consequently, the appropriate senderThreadIdentifier of all sent messages are the one found in the discussion. + + guard let sDiscussion = sInstance.value(forKey: "discussion") as? NSManagedObject else { + throw ObvError.couldNotGetAssociatedSourceDiscussion + } + + guard let senderThreadIdentifier = sDiscussion.value(forKey: "senderThreadIdentifier") as? UUID else { + throw ObvError.couldNotGetSenderThreadIdentifier + } + + dInstance.setValue(senderThreadIdentifier, forKey: "senderThreadIdentifier") + + } catch { + assertionFailure() + throw error + } + + } + + enum ObvError: Error { + case couldNotGetAssociatedSourceDiscussion + case couldNotGetSenderThreadIdentifier + } + +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v6_to_v7/ReceivedFyleMessageJoinWithStatusToReceivedFyleMessageJoinWithStatusMigrationPolicyV6ToV7.swift b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v6_to_v7/ReceivedFyleMessageJoinWithStatusToReceivedFyleMessageJoinWithStatusMigrationPolicyV6ToV7.swift index 2c5d8f7f..1487a1e2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v6_to_v7/ReceivedFyleMessageJoinWithStatusToReceivedFyleMessageJoinWithStatusMigrationPolicyV6ToV7.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v6_to_v7/ReceivedFyleMessageJoinWithStatusToReceivedFyleMessageJoinWithStatusMigrationPolicyV6ToV7.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,6 +19,7 @@ import Foundation import CoreData +import UniformTypeIdentifiers import MobileCoreServices import ObvUICoreData @@ -81,7 +82,7 @@ final class ReceivedFyleMessageJoinWithStatusToReceivedFyleMessageJoinWithStatus let uti: String - if let _uti = ObvUTIUtils.utiOfFile(withName: newReceivedFyleMessageJoinWithStatus.fileName) { + if let _uti = Self.utiOfFile(withName: newReceivedFyleMessageJoinWithStatus.fileName) { // Try 1: Using the filename uti = _uti } else { @@ -96,14 +97,14 @@ final class ReceivedFyleMessageJoinWithStatusToReceivedFyleMessageJoinWithStatus let userInfo = [NSLocalizedFailureReasonErrorKey: message] throw NSError(domain: errorDomain, code: 0, userInfo: userInfo) } - if let _uti = ObvUTIUtils.guessUTIOfBinaryFile(atURL: url) { + if let _uti = Self.guessUTIOfBinaryFile(atURL: url) { uti = _uti - if let ext = ObvUTIUtils.preferredTagWithClass(inUTI: uti, inTagClass: .FilenameExtension) { + if let ext = Self.preferredTagWithClassFilenameExtension(inUTI: uti) { let newFileName = [newReceivedFyleMessageJoinWithStatus.fileName, ext].joined(separator: ".") newReceivedFyleMessageJoinWithStatus.setValue(newFileName, forKey: "fileName") } } else { - uti = kUTTypeData as String + uti = UTType.data.identifier } } @@ -115,4 +116,47 @@ final class ReceivedFyleMessageJoinWithStatusToReceivedFyleMessageJoinWithStatus } + + private static func utiOfFile(withName fileName: String) -> String? { + let fileExtension = NSString(string: fileName).pathExtension + return Self.utiOfFile(withExtension: fileExtension) + } + + + private static func utiOfFile(withExtension fileExtension: String) -> String? { + guard !fileExtension.isEmpty else { return nil } + return UTType(filenameExtension: fileExtension)?.identifier + } + + + private static func guessUTIOfBinaryFile(atURL url: URL) -> String? { + + let jpegPrefix = Data([0xff, 0xd8]) + let pngPrefix = Data([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]) + let pdfPrefix = Data([0x25, 0x50, 0x44, 0x46, 0x2D]) + let mp4Signatures = ["ftyp", "mdat", "moov", "pnot", "udta", "uuid", "moof", "free", "skip", "jP2 ", "wide", "load", "ctab", "imap", "matt", "kmat", "clip", "crgn", "sync", "chap", "tmcd", "scpt", "ssrc", "PICT"].map { Data([UInt8]($0.utf8)) } + + guard let fileData = try? Data(contentsOf: url) else { + return nil + } + + if fileData.starts(with: jpegPrefix) { + return UTType.jpeg.identifier + } else if fileData.starts(with: pngPrefix) { + return UTType.png.identifier + } else if fileData.starts(with: pdfPrefix) { + return UTType.pdf.identifier + } else if mp4Signatures.contains(fileData.advanced(by: 4)[0..<4]) { + return UTType.mpeg4Movie.identifier + } else { + return nil + } + + } + + + private static func preferredTagWithClassFilenameExtension(inUTI uti: String) -> String? { + return UTType(uti)?.preferredFilenameExtension + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v6_to_v7/SentFyleMessageJoinWithStatusToSentFyleMessageJoinWithStatusMigrationPolicyV6ToV7.swift b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v6_to_v7/SentFyleMessageJoinWithStatusToSentFyleMessageJoinWithStatusMigrationPolicyV6ToV7.swift index 3d5261be..8c8ef770 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v6_to_v7/SentFyleMessageJoinWithStatusToSentFyleMessageJoinWithStatusMigrationPolicyV6ToV7.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/CoreData/Migration/v6_to_v7/SentFyleMessageJoinWithStatusToSentFyleMessageJoinWithStatusMigrationPolicyV6ToV7.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,8 +19,8 @@ import Foundation import CoreData -import MobileCoreServices import ObvUICoreData +import UniformTypeIdentifiers fileprivate let errorDomain = "MessengerMigrationV6ToV7" @@ -81,7 +81,7 @@ final class SentFyleMessageJoinWithStatusToSentFyleMessageJoinWithStatusMigratio let uti: String - if let _uti = ObvUTIUtils.utiOfFile(withName: newSentFyleMessageJoinWithStatus.fileName) { + if let _uti = Self.utiOfFile(withName: newSentFyleMessageJoinWithStatus.fileName) { // Try 1: Using the filename uti = _uti } else { @@ -96,14 +96,14 @@ final class SentFyleMessageJoinWithStatusToSentFyleMessageJoinWithStatusMigratio let userInfo = [NSLocalizedFailureReasonErrorKey: message] throw NSError(domain: errorDomain, code: 0, userInfo: userInfo) } - if let _uti = ObvUTIUtils.guessUTIOfBinaryFile(atURL: url) { + if let _uti = Self.guessUTIOfBinaryFile(atURL: url) { uti = _uti - if let ext = ObvUTIUtils.preferredTagWithClass(inUTI: uti, inTagClass: .FilenameExtension) { + if let ext = Self.preferredTagWithClassFilenameExtension(inUTI: uti) { let newFileName = [newSentFyleMessageJoinWithStatus.fileName, ext].joined(separator: ".") newSentFyleMessageJoinWithStatus.setValue(newFileName, forKey: "fileName") } } else { - uti = kUTTypeData as String + uti = UTType.data.identifier } } @@ -115,4 +115,47 @@ final class SentFyleMessageJoinWithStatusToSentFyleMessageJoinWithStatusMigratio } + + private static func utiOfFile(withName fileName: String) -> String? { + let fileExtension = NSString.init(string: fileName).pathExtension + return Self.utiOfFile(withExtension: fileExtension) + } + + + private static func utiOfFile(withExtension fileExtension: String) -> String? { + guard !fileExtension.isEmpty else { return nil } + return UTType(filenameExtension: fileExtension)?.identifier + } + + + private static func guessUTIOfBinaryFile(atURL url: URL) -> String? { + + let jpegPrefix = Data([0xff, 0xd8]) + let pngPrefix = Data([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]) + let pdfPrefix = Data([0x25, 0x50, 0x44, 0x46, 0x2D]) + let mp4Signatures = ["ftyp", "mdat", "moov", "pnot", "udta", "uuid", "moof", "free", "skip", "jP2 ", "wide", "load", "ctab", "imap", "matt", "kmat", "clip", "crgn", "sync", "chap", "tmcd", "scpt", "ssrc", "PICT"].map { Data([UInt8]($0.utf8)) } + + guard let fileData = try? Data(contentsOf: url) else { + return nil + } + + if fileData.starts(with: jpegPrefix) { + return UTType.jpeg.identifier + } else if fileData.starts(with: pngPrefix) { + return UTType.png.identifier + } else if fileData.starts(with: pdfPrefix) { + return UTType.pdf.identifier + } else if mp4Signatures.contains(fileData.advanced(by: 4)[0..<4]) { + return UTType.mpeg4Movie.identifier + } else { + return nil + } + + } + + + private static func preferredTagWithClassFilenameExtension(inUTI uti: String) -> String? { + return UTType(uti)?.preferredFilenameExtension + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessenger.xcdatamodeld/.xccurrentversion b/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessenger.xcdatamodeld/.xccurrentversion index b038f1e5..b0ae74d5 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessenger.xcdatamodeld/.xccurrentversion +++ b/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessenger.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - ObvMessenger 66.xcdatamodel + ObvMessenger 67.xcdatamodel diff --git a/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessenger.xcdatamodeld/ObvMessenger 67.xcdatamodel/contents b/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessenger.xcdatamodeld/ObvMessenger 67.xcdatamodel/contents new file mode 100644 index 00000000..ff098701 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessenger.xcdatamodeld/ObvMessenger 67.xcdatamodel/contents @@ -0,0 +1,507 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessengerPersistentContainer.swift b/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessengerPersistentContainer.swift index 014c18ca..320892d2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessengerPersistentContainer.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/CoreData/ObvMessengerPersistentContainer.swift @@ -20,6 +20,8 @@ import Foundation import CoreData import ObvUICoreData +import ObvSettings + final class ObvMessengerPersistentContainer: NSPersistentContainer { diff --git a/iOSClient/ObvMessenger/ObvMessenger/FileSystemService/FileSystemService.swift b/iOSClient/ObvMessenger/ObvMessenger/FileSystemService/FileSystemService.swift index 7535d8d6..9c5a8da1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/FileSystemService/FileSystemService.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/FileSystemService/FileSystemService.swift @@ -21,6 +21,8 @@ import Foundation import os.log import OlvidUtils import ObvUICoreData +import ObvSettings + final class FileSystemService { diff --git a/iOSClient/ObvMessenger/ObvMessenger/InfoPlist.xcstrings b/iOSClient/ObvMessenger/ObvMessenger/InfoPlist.xcstrings new file mode 100644 index 00000000..9ffe69c1 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/InfoPlist.xcstrings @@ -0,0 +1,192 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "CFBundleDisplayName" : { + "comment" : "Bundle display name", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Olvid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid" + } + } + } + }, + "CFBundleName" : { + "comment" : "Bundle name", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Olvid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Olvid_dev" + } + } + } + }, + "Microsoft Excel document" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Document Microsoft Excel" + } + } + } + }, + "Microsoft Powerpoint document" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Document Microsoft Powerpoint" + } + } + } + }, + "Microsoft Word 97 document" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Document Microsoft Word 97" + } + } + } + }, + "Microsoft Word document" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Document Microsoft Word" + } + } + } + }, + "NSCameraUsageDescription" : { + "comment" : "Privacy - Camera Usage Description", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Access to the camera allows you to scan the QR code of your contacts and to take pictures and videos right from within a discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'accès à l'appareil photo permet de scanner le code QR de vos contacts et de prendre des photos et des vidéos directement au sein d'une discussion." + } + } + } + }, + "NSFaceIDUsageDescription" : { + "comment" : "Privacy - Face ID Usage Description", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Use Face ID to access Olvid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utiliser Face ID pour accéder à Olvid" + } + } + } + }, + "NSHumanReadableCopyright" : { + "comment" : "Copyright (human-readable)", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Copyright © 2019-2023 Olvid SAS" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copyright © 2019-2023 Olvid SAS" + } + } + } + }, + "NSMicrophoneUsageDescription" : { + "comment" : "Privacy - Microphone Usage Description", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Allowing access to the microphone is required to make secure audio calls and to record movies and voice messages." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'accès au micro est nécessaire pour passer des appels sécurisés ainsi que pour enregistrer des films et des messages audios." + } + } + } + }, + "NSPhotoLibraryAddUsageDescription" : { + "comment" : "Privacy - Photo Library Additions Usage Description", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Write access is required to save a picture to your photo library. Please note that Olvid will not have access to the other photos of your photo library." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'accès en écriture à votre librairie de photos permet d'y sauver une image directement. Notez que Olvid n'aura pas accès aux autres photos de votre librairie de photos." + } + } + } + }, + "Olvid Backup" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarde Olvid" + } + } + } + }, + "Web Internet Location" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Site internet" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/iOSClient/ObvMessenger/ObvMessenger/Initialization/InitializerViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Initialization/InitializerViewController.swift index 8b488b95..a065f1ec 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Initialization/InitializerViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Initialization/InitializerViewController.swift @@ -40,6 +40,8 @@ final class InitializerViewController: UIViewController { deinit { observationTokens.forEach { NotificationCenter.default.removeObserver($0) } } + + override var canBecomeFirstResponder: Bool { true } override func viewDidLoad() { super.viewDidLoad() @@ -84,7 +86,8 @@ final class InitializerViewController: UIViewController { override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) - presentedViewController?.dismiss(animated: true) + // 2023-08-03 Commenting this out, to prevent the camera VC to be dismissed. Not clear why this was here" + // presentedViewController?.dismiss(animated: true) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/AddContactFlow.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/AddContactFlow.swift index 3fbe6dfa..aaf0ef93 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/AddContactFlow.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/AddContactFlow.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,29 +24,34 @@ import AVFoundation import ObvTypes import ObvUI import ObvUICoreData +import ObvDesignSystem + + +protocol AddContactHostingViewControllerDelegate: AnyObject { + + func userWantsToAddNewContactViaKeycloak(ownedCryptoId: ObvCryptoId, keycloakUserDetails: ObvKeycloakUserDetails, userCryptoId: ObvCryptoId) async throws + +} final class AddContactHostingViewController: UIHostingController, AddContactHostingViewStoreDelegate, KeycloakSearchViewControllerDelegate { private let store: AddContactHostingViewStore - private let newAvailableApiKeyElements: APIKeyElements private var observationTokens = [NSObjectProtocol]() + private weak var delegate: AddContactHostingViewControllerDelegate? /// The `alreadyScannedOrTappedURL` variable is set when scanning or tapping an URL from outside the app - init?(obvOwnedIdentity: ObvOwnedIdentity, alreadyScannedOrTappedURL: OlvidURL?, dismissAction: @escaping () -> Void, checkSignatureMutualScanUrl: @escaping (ObvMutualScanUrl) -> Bool) { + init?(obvOwnedIdentity: ObvOwnedIdentity, alreadyScannedOrTappedURL: OlvidURL?, dismissAction: @escaping () -> Void, checkSignatureMutualScanUrl: @escaping (ObvMutualScanUrl) -> Bool, obvEngine: ObvEngine, delegate: AddContactHostingViewControllerDelegate) { assert(Thread.isMainThread) - guard let store = AddContactHostingViewStore(obvOwnedIdentity: obvOwnedIdentity) else { assertionFailure(); return nil } + guard let store = AddContactHostingViewStore(obvOwnedIdentity: obvOwnedIdentity, obvEngine: obvEngine, dismissAction: dismissAction) else { assertionFailure(); return nil } self.store = store - let newAvailableApiKeyElements = APIKeyElements() - self.newAvailableApiKeyElements = newAvailableApiKeyElements + self.delegate = delegate let rootView = AddContactMainView(store: store, alreadyScannedOrTappedURL: alreadyScannedOrTappedURL, dismissAction: dismissAction, - checkSignatureMutualScanUrl: checkSignatureMutualScanUrl, - newAvailableApiKeyElements: newAvailableApiKeyElements) + checkSignatureMutualScanUrl: checkSignatureMutualScanUrl) super.init(rootView: rootView) store.delegate = self - observeNotifications() } deinit { @@ -61,21 +66,18 @@ final class AddContactHostingViewController: UIHostingController Void weak var delegate: AddContactHostingViewStoreDelegate? - init?(obvOwnedIdentity: ObvOwnedIdentity) { + init?(obvOwnedIdentity: ObvOwnedIdentity, obvEngine: ObvEngine, dismissAction: @escaping () -> Void) { guard let persistedOwnedIdentity = try? PersistedObvOwnedIdentity.get(persisted: obvOwnedIdentity, within: ObvStack.shared.viewContext) else { assertionFailure(); return nil } self.singleOwnedIdentity = SingleIdentity(ownedIdentity: persistedOwnedIdentity) self.ownedCryptoId = obvOwnedIdentity.cryptoId @@ -157,6 +173,8 @@ final class AddContactHostingViewStore: ObservableObject { self.urlIdentityRepresentation = genericIdentity.getObvURLIdentity().urlRepresentation self.viewForSharingIdentity = AnyView(ActivityViewControllerForSharingIdentity(genericIdentity: genericIdentity)) self.obvOwnedIdentity = obvOwnedIdentity + self.obvEngine = obvEngine + self.dismissAction = dismissAction } fileprivate func installedOlvidAppIsOutdated() { @@ -168,15 +186,6 @@ final class AddContactHostingViewStore: ObservableObject { .postOnDispatchQueue() } - fileprivate func requestAPIKeyElements(_ apiKey: UUID) { - ObvMessengerInternalNotification.userRequestedAPIKeyStatus(ownedCryptoId: ownedCryptoId, apiKey: apiKey) - .postOnDispatchQueue() - } - - fileprivate func userRequestedNewAPIKeyActivation(_ apiKey: UUID) { - ObvMessengerInternalNotification.userRequestedNewAPIKeyActivation(ownedCryptoId: ownedCryptoId, apiKey: apiKey) - .postOnDispatchQueue() - } fileprivate func userWantsToSearchWithinKeycloak() { delegate?.userWantsToSearchWithinKeycloak() @@ -204,25 +213,7 @@ final class AddContactHostingViewStore: ObservableObject { } Task { do { - try await KeycloakManagerSingleton.shared.addContact(ownedCryptoId: ownedCryptoId, userId: userDetailsOfKeycloakContact.id, userIdentity: userIdentity) - await delegate?.userSuccessfullyAddKeycloakContact(ownedCryptoId: ownedCryptoId, newContactCryptoId: userCryptoId) - } catch let addContactError as KeycloakManager.AddContactError { - switch addContactError { - case .authenticationRequired, - .ownedIdentityNotManaged, - .badResponse, - .userHasCancelled, - .keycloakApiRequest, - .invalidSignature, - .unkownError: - addingKeycloakContactFailedAlertIsPresented = true - case .willSyncKeycloakServerSignatureKey: - break - case .ownedIdentityWasRevoked: - ObvMessengerInternalNotification.userOwnedIdentityWasRevokedByKeycloak(ownedCryptoId: ownedCryptoId) - .postOnDispatchQueue() - } - return + try await delegate?.userWantsToAddNewContactViaKeycloak(ownedCryptoId: ownedCryptoId, keycloakUserDetails: userDetailsOfKeycloakContact, userCryptoId: userCryptoId) } catch { assertionFailure() addingKeycloakContactFailedAlertIsPresented = true @@ -230,43 +221,37 @@ final class AddContactHostingViewStore: ObservableObject { } } } -} - - -final class APIKeyElements: ObservableObject { - let id = UUID() - var apiKey: UUID? - @Published var apiKeyStatus: APIKeyStatus? - @Published var apiKeyExpirationDate: Date? - @Published var activated: Bool - - init() { - self.apiKey = nil - self.apiKeyStatus = nil - self.apiKeyExpirationDate = nil - self.activated = false - } + // LicenseActivationViewActionsDelegate - init(apiKey: UUID, apiKeyStatus: APIKeyStatus, apiKeyExpirationDate: Date?) { - self.apiKey = apiKey - self.apiKeyStatus = apiKeyStatus - self.apiKeyExpirationDate = apiKeyExpirationDate - self.activated = false + func userWantsToDismissLicenseActivationView() { + dismissAction() } - func set(apiKeyStatus: APIKeyStatus, apiKeyExpirationDate: Date?, forApiKey: UUID) { - assert(Thread.isMainThread) - guard self.apiKey == apiKey else { return } - withAnimation { - self.apiKeyStatus = apiKeyStatus - self.apiKeyExpirationDate = apiKeyExpirationDate + enum ObvError: Error { + case registerAPIKeyFailed + } + + @MainActor + func userWantsToRegisterAPIKey(ownedCryptoId: ObvTypes.ObvCryptoId, apiKey: UUID) async throws { + let result = try await obvEngine.registerOwnedAPIKeyOnServerNow(ownedCryptoId: ownedCryptoId, apiKey: apiKey) + switch result { + case .success: + return + case .failed: + throw ObvError.registerAPIKeyFailed + case .invalidAPIKey: + throw ObvError.registerAPIKeyFailed } } - func setActive() { - self.activated = true + + @MainActor + func userWantsToQueryServerForAPIKeyElements(ownedCryptoId: ObvTypes.ObvCryptoId, apiKey: UUID) async throws -> ObvTypes.APIKeyElements { + let apiKeyElements = try await obvEngine.queryAPIKeyStatus(for: ownedCryptoId, apiKey: apiKey) + return apiKeyElements } + } @@ -299,27 +284,26 @@ struct AddContactMainView: View { let alreadyScannedOrTappedURL: OlvidURL? let dismissAction: () -> Void let checkSignatureMutualScanUrl: (ObvMutualScanUrl) -> Bool - @ObservedObject var newAvailableApiKeyElements: APIKeyElements + // @ObservedObject var newAvailableApiKeyElements: APIKeyElements var body: some View { - AddContactMainInnerView(contact: store.singleOwnedIdentity, - ownedCryptoId: store.ownedCryptoId, - urlIdentityRepresentation: store.urlIdentityRepresentation, - alreadyScannedOrTappedURL: alreadyScannedOrTappedURL, - viewForSharingIdentity: store.viewForSharingIdentity, - confirmInviteAction: store.userConfirmedSendInvite, - dismissAction: dismissAction, - installedOlvidAppIsOutdated: store.installedOlvidAppIsOutdated, - checkSignatureMutualScanUrl: checkSignatureMutualScanUrl, - requestNewAvailableApiKeyElements: store.requestAPIKeyElements, - userRequestedNewAPIKeyActivation: store.userRequestedNewAPIKeyActivation, - newAvailableApiKeyElements: newAvailableApiKeyElements, - userWantsToSearchWithinKeycloak: store.userWantsToSearchWithinKeycloak, - userDetailsOfKeycloakContact: store.userDetailsOfKeycloakContact, - contactIdentity: store.contactIdentity, - isConfirmAddingKeycloakViewPushed: $store.isConfirmAddingKeycloakViewPushed, - addingKeycloakContactFailedAlertIsPresented: $store.addingKeycloakContactFailedAlertIsPresented, - confirmAddingKeycloakContactViewAction: store.confirmAddingKeycloakContactViewAction) + AddContactMainInnerView( + contact: store.singleOwnedIdentity, + ownedCryptoId: store.ownedCryptoId, + urlIdentityRepresentation: store.urlIdentityRepresentation, + alreadyScannedOrTappedURL: alreadyScannedOrTappedURL, + viewForSharingIdentity: store.viewForSharingIdentity, + confirmInviteAction: store.userConfirmedSendInvite, + dismissAction: dismissAction, + installedOlvidAppIsOutdated: store.installedOlvidAppIsOutdated, + checkSignatureMutualScanUrl: checkSignatureMutualScanUrl, + userWantsToSearchWithinKeycloak: store.userWantsToSearchWithinKeycloak, + userDetailsOfKeycloakContact: store.userDetailsOfKeycloakContact, + contactIdentity: store.contactIdentity, + isConfirmAddingKeycloakViewPushed: $store.isConfirmAddingKeycloakViewPushed, + addingKeycloakContactFailedAlertIsPresented: $store.addingKeycloakContactFailedAlertIsPresented, + confirmAddingKeycloakContactViewAction: store.confirmAddingKeycloakContactViewAction, + licenseActivationViewActions: store) } } @@ -346,6 +330,8 @@ fileprivate struct AddContactMainInnerView: View { @Binding var isConfirmAddingKeycloakViewPushed: Bool @Binding var addingKeycloakContactFailedAlertIsPresented: Bool + let licenseActivationViewActions: LicenseActivationViewActionsDelegate + @State private var isViewForScanningIdPresented = false @State private var isAlertPresented = false @State private var alertType = AlertType.videoDenied @@ -357,14 +343,12 @@ fileprivate struct AddContactMainInnerView: View { @State private var isActionSheetAlternateImportShown = false // Only used/set when show the LicenseActivationView - let requestNewAvailableApiKeyElements: (UUID) -> Void - let userRequestedNewAPIKeyActivation: (UUID) -> Void - @ObservedObject var newAvailableApiKeyElements: APIKeyElements + // @ObservedObject var newAvailableApiKeyElements: APIKeyElements let userWantsToSearchWithinKeycloak: () -> Void let confirmAddingKeycloakContactViewAction: () -> Void /// Set when scanning a new configuration - @State private var serverAndAPIKey: ServerAndAPIKey? + @State private var licenseActivationViewModel: ConcreteLicenseActivationViewModel? @State private var betaConfiguration: BetaConfiguration? @State private var keycloakConfig: KeycloakConfiguration? @@ -416,7 +400,7 @@ fileprivate struct AddContactMainInnerView: View { DispatchQueue.main.async { isAlertPresented = true } } - init(contact: SingleIdentity, ownedCryptoId: ObvCryptoId, urlIdentityRepresentation: URL, alreadyScannedOrTappedURL: OlvidURL?, viewForSharingIdentity: AnyView, confirmInviteAction: @escaping (ObvURLIdentity) -> Void, dismissAction: @escaping () -> Void, installedOlvidAppIsOutdated: @escaping () -> Void, checkSignatureMutualScanUrl: @escaping (ObvMutualScanUrl) -> Bool, requestNewAvailableApiKeyElements: @escaping (UUID) -> Void, userRequestedNewAPIKeyActivation: @escaping (UUID) -> Void, newAvailableApiKeyElements: APIKeyElements, userWantsToSearchWithinKeycloak: @escaping () -> Void, userDetailsOfKeycloakContact: ObvKeycloakUserDetails?, contactIdentity: PersistedObvContactIdentity?, isConfirmAddingKeycloakViewPushed: Binding, addingKeycloakContactFailedAlertIsPresented: Binding, confirmAddingKeycloakContactViewAction: @escaping () -> Void) { + init(contact: SingleIdentity, ownedCryptoId: ObvCryptoId, urlIdentityRepresentation: URL, alreadyScannedOrTappedURL: OlvidURL?, viewForSharingIdentity: AnyView, confirmInviteAction: @escaping (ObvURLIdentity) -> Void, dismissAction: @escaping () -> Void, installedOlvidAppIsOutdated: @escaping () -> Void, checkSignatureMutualScanUrl: @escaping (ObvMutualScanUrl) -> Bool, userWantsToSearchWithinKeycloak: @escaping () -> Void, userDetailsOfKeycloakContact: ObvKeycloakUserDetails?, contactIdentity: PersistedObvContactIdentity?, isConfirmAddingKeycloakViewPushed: Binding, addingKeycloakContactFailedAlertIsPresented: Binding, confirmAddingKeycloakContactViewAction: @escaping () -> Void, licenseActivationViewActions: LicenseActivationViewActionsDelegate) { self.ownedCryptoId = ownedCryptoId self.singleIdentity = contact self.urlIdentityRepresentation = urlIdentityRepresentation @@ -426,15 +410,13 @@ fileprivate struct AddContactMainInnerView: View { self.installedOlvidAppIsOutdated = installedOlvidAppIsOutdated self.checkSignatureMutualScanUrl = checkSignatureMutualScanUrl self.alreadyScannedOrTappedURL = alreadyScannedOrTappedURL - self.requestNewAvailableApiKeyElements = requestNewAvailableApiKeyElements - self.userRequestedNewAPIKeyActivation = userRequestedNewAPIKeyActivation - self.newAvailableApiKeyElements = newAvailableApiKeyElements self.userWantsToSearchWithinKeycloak = userWantsToSearchWithinKeycloak self.userDetailsOfKeycloakContact = userDetailsOfKeycloakContact self.contactIdentity = contactIdentity self._isConfirmAddingKeycloakViewPushed = isConfirmAddingKeycloakViewPushed self._addingKeycloakContactFailedAlertIsPresented = addingKeycloakContactFailedAlertIsPresented self.confirmAddingKeycloakContactViewAction = confirmAddingKeycloakContactViewAction + self.licenseActivationViewActions = licenseActivationViewActions } private func copyOwnedIdentityToClipboard() { @@ -485,8 +467,10 @@ fileprivate struct AddContactMainInnerView: View { // For now, we expect exactly one of the possible config types to be non-nil assert([serverAndAPIKey as Any?, betaConfiguration as Any?, keycloakConfig as Any?].filter({ $0 != nil }).count == 1) - if serverAndAPIKey != nil { - self.serverAndAPIKey = serverAndAPIKey + if let serverAndAPIKey, let ownedIdentity = try? PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: ObvStack.shared.viewContext) { + self.licenseActivationViewModel = ConcreteLicenseActivationViewModel( + ownedIdentity: ownedIdentity, + serverAndAPIKey: serverAndAPIKey) } else if betaConfiguration != nil { self.betaConfiguration = betaConfiguration } else { @@ -543,13 +527,8 @@ fileprivate struct AddContactMainInnerView: View { private func qrCodeScannerWasDismissed() { - if self.scannedUrlIdentity != nil || self.scannedMutualScanUrl != nil || self.serverAndAPIKey != nil || self.betaConfiguration != nil || self.keycloakConfig != nil { - if #available(iOS 14, *) { - withAnimation { - self.isConfirmInviteViewPushed = true - } - } else { - // The iOS 14 code bugs on iOS 13, which performs the animation by default (which is not the case of iOS 14) + if self.scannedUrlIdentity != nil || self.scannedMutualScanUrl != nil || self.licenseActivationViewModel != nil || self.betaConfiguration != nil || self.keycloakConfig != nil { + withAnimation { self.isConfirmInviteViewPushed = true } } else if self.shouldPresentQRCodeScanFailedAlert { @@ -564,9 +543,7 @@ fileprivate struct AddContactMainInnerView: View { } private func useSmallScreenMode(for geometry: GeometryProxy) -> Bool { - if #available(iOS 13.4, *) { - if sizeCategory.isAccessibilityCategory { return true } - } + if sizeCategory.isAccessibilityCategory { return true } // Small screen mode for iPhone 6, iPhone 6S, iPhone 7, iPhone 8, iPhone SE (2016) return max(geometry.size.height, geometry.size.width) < 510 } @@ -613,26 +590,25 @@ fileprivate struct AddContactMainInnerView: View { } .padding(.horizontal, typicalPadding(for: geometry)) .padding(.bottom, typicalPadding(for: geometry)) - AddContactMainInnerViewNavigationLinks(newAvailableApiKeyElements: newAvailableApiKeyElements, - isConfirmInviteViewPushed: $isConfirmInviteViewPushed, - isConfirmAddingKeycloakViewPushed: $isConfirmAddingKeycloakViewPushed, - addingKeycloakContactFailedAlertIsPresented: $addingKeycloakContactFailedAlertIsPresented, - scannedUrlIdentity: scannedUrlIdentity, - scannedMutualScanUrl: scannedMutualScanUrl, - ownedCryptoId: ownedCryptoId, - scannedPersistedContact: scannedPersistedContact, - serverAndAPIKey: serverAndAPIKey, - betaConfiguration: betaConfiguration, - keycloakConfig: keycloakConfig, - userDetailsOfKeycloakContact: userDetailsOfKeycloakContact, - contactIdentity: contactIdentity, - requestNewAvailableApiKeyElements: requestNewAvailableApiKeyElements, - userRequestedNewAPIKeyActivation: userRequestedNewAPIKeyActivation, - dismissAction: dismissAction, - installedOlvidAppIsOutdated: installedOlvidAppIsOutdated, - ownedIdentityIsKeycloakManaged: singleIdentity.isKeycloakManaged, - confirmInviteAction: confirmInviteAction, - confirmAddingKeycloakContactViewAction: confirmAddingKeycloakContactViewAction) + AddContactMainInnerViewNavigationLinks( + isConfirmInviteViewPushed: $isConfirmInviteViewPushed, + isConfirmAddingKeycloakViewPushed: $isConfirmAddingKeycloakViewPushed, + addingKeycloakContactFailedAlertIsPresented: $addingKeycloakContactFailedAlertIsPresented, + scannedUrlIdentity: scannedUrlIdentity, + scannedMutualScanUrl: scannedMutualScanUrl, + ownedCryptoId: ownedCryptoId, + scannedPersistedContact: scannedPersistedContact, + betaConfiguration: betaConfiguration, + keycloakConfig: keycloakConfig, + userDetailsOfKeycloakContact: userDetailsOfKeycloakContact, + contactIdentity: contactIdentity, + dismissAction: dismissAction, + installedOlvidAppIsOutdated: installedOlvidAppIsOutdated, + ownedIdentityIsKeycloakManaged: singleIdentity.isKeycloakManaged, + confirmInviteAction: confirmInviteAction, + confirmAddingKeycloakContactViewAction: confirmAddingKeycloakContactViewAction, + licenseActivationViewModel: licenseActivationViewModel, + licenseActivationViewActions: licenseActivationViewActions) HStack { OlvidButton(style: .blue, title: Text("SCAN"), @@ -641,7 +617,7 @@ fileprivate struct AddContactMainInnerView: View { self.scannedUrlIdentity = nil self.scannedMutualScanUrl = nil self.scannedPersistedContact = nil - self.serverAndAPIKey = nil + self.licenseActivationViewModel = nil self.keycloakConfig = nil self.isConfirmInviteViewPushed = false self.isAlertPresented = false @@ -761,9 +737,8 @@ fileprivate struct AddContactMainInnerView: View { } -fileprivate struct AddContactMainInnerViewNavigationLinks: View { +fileprivate struct AddContactMainInnerViewNavigationLinks: View { - @ObservedObject var newAvailableApiKeyElements: APIKeyElements @Binding var isConfirmInviteViewPushed: Bool @Binding var isConfirmAddingKeycloakViewPushed: Bool @Binding var addingKeycloakContactFailedAlertIsPresented: Bool @@ -771,19 +746,20 @@ fileprivate struct AddContactMainInnerViewNavigationLinks: View { let scannedMutualScanUrl: ObvMutualScanUrl? let ownedCryptoId: ObvCryptoId let scannedPersistedContact: PersistedObvContactIdentity? - let serverAndAPIKey: ServerAndAPIKey? + // let serverAndAPIKey: ServerAndAPIKey? let betaConfiguration: BetaConfiguration? let keycloakConfig: KeycloakConfiguration? let userDetailsOfKeycloakContact: ObvKeycloakUserDetails? /// Only set if the user to invite is a keycloak user let contactIdentity: PersistedObvContactIdentity? /// Set when trying to add a keycloak contact that is already present in the local contacts directory - let requestNewAvailableApiKeyElements: (UUID) -> Void - let userRequestedNewAPIKeyActivation: (UUID) -> Void let dismissAction: () -> Void let installedOlvidAppIsOutdated: () -> Void let ownedIdentityIsKeycloakManaged: Bool let confirmInviteAction: (ObvURLIdentity) -> Void let confirmAddingKeycloakContactViewAction: () -> Void + let licenseActivationViewModel: LicenseActivationViewModel? + let licenseActivationViewActions: LicenseActivationViewActionsDelegate + var body: some View { if let scannedUrlIdentity = self.scannedUrlIdentity { NavigationLink( @@ -813,18 +789,11 @@ fileprivate struct AddContactMainInnerViewNavigationLinks: View { isActive: $isConfirmAddingKeycloakViewPushed, label: { EmptyView() } ) - } else if let serverAndAPIKey = self.serverAndAPIKey, - let persistedOwnedIdentity = try? PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: ObvStack.shared.viewContext) { + } else if let licenseActivationViewModel { NavigationLink( - destination: LicenseActivationView(ownedCryptoId: ownedCryptoId, - serverAndAPIKey: serverAndAPIKey, - currentApiKeyStatus: persistedOwnedIdentity.apiKeyStatus, - currentApiKeyExpirationDate: persistedOwnedIdentity.apiKeyExpirationDate, - ownedIdentityIsKeycloakManaged: ownedIdentityIsKeycloakManaged, - requestNewAvailableApiKeyElements: requestNewAvailableApiKeyElements, - userRequestedNewAPIKeyActivation: userRequestedNewAPIKeyActivation, - newAvailableApiKeyElements: newAvailableApiKeyElements, - dismissAction: dismissAction), + destination: LicenseActivationView( + model: licenseActivationViewModel, + actions: licenseActivationViewActions), isActive: $isConfirmInviteViewPushed, label: { EmptyView() } ) @@ -998,7 +967,7 @@ struct QRCodeBlockView: View { .shadow(color: shadowColor, radius: 10) } } else { - ObvProgressView().onAppear { + ProgressView().onAppear { generateQrCodeUIImage() } } @@ -1009,151 +978,151 @@ struct QRCodeBlockView: View { } -struct AddContactMainInnerView_Previews: PreviewProvider { - - private static let identity1 = SingleIdentity(firstName: "Joyce", - lastName: "Lathrop", - position: "Happiness manager", - company: "Olvid", - isKeycloakManaged: false, - showGreenShield: false, - showRedShield: false, - identityColors: nil, - photoURL: nil) - - private static let identity2 = SingleIdentity(firstName: "Joyce", - lastName: "Lathrop", - position: "Happiness manager", - company: "Olvid", - isKeycloakManaged: false, - showGreenShield: false, - showRedShield: false, - identityColors: nil, - photoURL: nil) - - private static let identityAsURL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! - - private static let identity = ObvURLIdentity(urlRepresentation: identityAsURL)! - - static var previews: some View { - Group { - AddContactMainInnerView(contact: identity2, - ownedCryptoId: identity.cryptoId, - urlIdentityRepresentation: URL(string: "https://olvid.io")!, - alreadyScannedOrTappedURL: nil, - viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), - confirmInviteAction: { _ in }, - dismissAction: {}, - installedOlvidAppIsOutdated: {}, - checkSignatureMutualScanUrl: { _ in false }, - requestNewAvailableApiKeyElements: { _ in }, - userRequestedNewAPIKeyActivation: { _ in }, - newAvailableApiKeyElements: APIKeyElements(), - userWantsToSearchWithinKeycloak: {}, - userDetailsOfKeycloakContact: nil, - contactIdentity: nil, - isConfirmAddingKeycloakViewPushed: .constant(false), - addingKeycloakContactFailedAlertIsPresented: .constant(false), - confirmAddingKeycloakContactViewAction: {}) - AddContactMainInnerView(contact: identity1, - ownedCryptoId: identity.cryptoId, - urlIdentityRepresentation: URL(string: "https://olvid.io")!, - alreadyScannedOrTappedURL: nil, - viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), - confirmInviteAction: { _ in }, - dismissAction: {}, - installedOlvidAppIsOutdated: {}, - checkSignatureMutualScanUrl: { _ in false }, - requestNewAvailableApiKeyElements: { _ in }, - userRequestedNewAPIKeyActivation: { _ in }, - newAvailableApiKeyElements: APIKeyElements(), - userWantsToSearchWithinKeycloak: {}, - userDetailsOfKeycloakContact: nil, - contactIdentity: nil, - isConfirmAddingKeycloakViewPushed: .constant(false), - addingKeycloakContactFailedAlertIsPresented: .constant(false), - confirmAddingKeycloakContactViewAction: {}) - .environment(\.colorScheme, .dark) - AddContactMainInnerView(contact: identity2, - ownedCryptoId: identity.cryptoId, - urlIdentityRepresentation: URL(string: "https://olvid.io")!, - alreadyScannedOrTappedURL: nil, - viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), - confirmInviteAction: { _ in }, - dismissAction: {}, - installedOlvidAppIsOutdated: {}, - checkSignatureMutualScanUrl: { _ in false }, - requestNewAvailableApiKeyElements: { _ in }, - userRequestedNewAPIKeyActivation: { _ in }, - newAvailableApiKeyElements: APIKeyElements(), - userWantsToSearchWithinKeycloak: {}, - userDetailsOfKeycloakContact: nil, - contactIdentity: nil, - isConfirmAddingKeycloakViewPushed: .constant(false), - addingKeycloakContactFailedAlertIsPresented: .constant(false), - confirmAddingKeycloakContactViewAction: {}) - .environment(\.colorScheme, .dark) - AddContactMainInnerView(contact: identity2, - ownedCryptoId: identity.cryptoId, - urlIdentityRepresentation: URL(string: "https://olvid.io")!, - alreadyScannedOrTappedURL: nil, - viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), - confirmInviteAction: { _ in }, - dismissAction: {}, - installedOlvidAppIsOutdated: {}, - checkSignatureMutualScanUrl: { _ in false }, - requestNewAvailableApiKeyElements: { _ in }, - userRequestedNewAPIKeyActivation: { _ in }, - newAvailableApiKeyElements: APIKeyElements(), - userWantsToSearchWithinKeycloak: {}, - userDetailsOfKeycloakContact: nil, - contactIdentity: nil, - isConfirmAddingKeycloakViewPushed: .constant(false), - addingKeycloakContactFailedAlertIsPresented: .constant(false), - confirmAddingKeycloakContactViewAction: {}) - .environment(\.colorScheme, .dark) - .environment(\.locale, .init(identifier: "fr")) - AddContactMainInnerView(contact: identity2, - ownedCryptoId: identity.cryptoId, - urlIdentityRepresentation: URL(string: "https://olvid.io")!, - alreadyScannedOrTappedURL: nil, - viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), - confirmInviteAction: { _ in }, - dismissAction: {}, - installedOlvidAppIsOutdated: {}, - checkSignatureMutualScanUrl: { _ in false }, - requestNewAvailableApiKeyElements: { _ in }, - userRequestedNewAPIKeyActivation: { _ in }, - newAvailableApiKeyElements: APIKeyElements(), - userWantsToSearchWithinKeycloak: {}, - userDetailsOfKeycloakContact: nil, - contactIdentity: nil, - isConfirmAddingKeycloakViewPushed: .constant(false), - addingKeycloakContactFailedAlertIsPresented: .constant(false), - confirmAddingKeycloakContactViewAction: {}) - .environment(\.colorScheme, .dark) - .environment(\.locale, .init(identifier: "fr")) - .previewDevice(PreviewDevice(rawValue: "iPhone XS")) - AddContactMainInnerView(contact: identity2, - ownedCryptoId: identity.cryptoId, - urlIdentityRepresentation: URL(string: "https://olvid.io")!, - alreadyScannedOrTappedURL: nil, - viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), - confirmInviteAction: { _ in }, - dismissAction: {}, - installedOlvidAppIsOutdated: {}, - checkSignatureMutualScanUrl: { _ in false }, - requestNewAvailableApiKeyElements: { _ in }, - userRequestedNewAPIKeyActivation: { _ in }, - newAvailableApiKeyElements: APIKeyElements(), - userWantsToSearchWithinKeycloak: {}, - userDetailsOfKeycloakContact: nil, - contactIdentity: nil, - isConfirmAddingKeycloakViewPushed: .constant(false), - addingKeycloakContactFailedAlertIsPresented: .constant(false), - confirmAddingKeycloakContactViewAction: {}) - .environment(\.sizeCategory, .accessibilityExtraExtraExtraLarge) - .previewLayout(.fixed(width: 320, height: 568)) - } - } -} +//struct AddContactMainInnerView_Previews: PreviewProvider { +// +// private static let identity1 = SingleIdentity(firstName: "Joyce", +// lastName: "Lathrop", +// position: "Happiness manager", +// company: "Olvid", +// isKeycloakManaged: false, +// showGreenShield: false, +// showRedShield: false, +// identityColors: nil, +// photoURL: nil) +// +// private static let identity2 = SingleIdentity(firstName: "Joyce", +// lastName: "Lathrop", +// position: "Happiness manager", +// company: "Olvid", +// isKeycloakManaged: false, +// showGreenShield: false, +// showRedShield: false, +// identityColors: nil, +// photoURL: nil) +// +// private static let identityAsURL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! +// +// private static let identity = ObvURLIdentity(urlRepresentation: identityAsURL)! +// +// static var previews: some View { +// Group { +// AddContactMainInnerView(contact: identity2, +// ownedCryptoId: identity.cryptoId, +// urlIdentityRepresentation: URL(string: "https://olvid.io")!, +// alreadyScannedOrTappedURL: nil, +// viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), +// confirmInviteAction: { _ in }, +// dismissAction: {}, +// installedOlvidAppIsOutdated: {}, +// checkSignatureMutualScanUrl: { _ in false }, +// requestNewAvailableApiKeyElements: { _ in }, +// userRequestedNewAPIKeyActivation: { _ in }, +// newAvailableApiKeyElements: APIKeyElements(), +// userWantsToSearchWithinKeycloak: {}, +// userDetailsOfKeycloakContact: nil, +// contactIdentity: nil, +// isConfirmAddingKeycloakViewPushed: .constant(false), +// addingKeycloakContactFailedAlertIsPresented: .constant(false), +// confirmAddingKeycloakContactViewAction: {}) +// AddContactMainInnerView(contact: identity1, +// ownedCryptoId: identity.cryptoId, +// urlIdentityRepresentation: URL(string: "https://olvid.io")!, +// alreadyScannedOrTappedURL: nil, +// viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), +// confirmInviteAction: { _ in }, +// dismissAction: {}, +// installedOlvidAppIsOutdated: {}, +// checkSignatureMutualScanUrl: { _ in false }, +// requestNewAvailableApiKeyElements: { _ in }, +// userRequestedNewAPIKeyActivation: { _ in }, +// newAvailableApiKeyElements: APIKeyElements(), +// userWantsToSearchWithinKeycloak: {}, +// userDetailsOfKeycloakContact: nil, +// contactIdentity: nil, +// isConfirmAddingKeycloakViewPushed: .constant(false), +// addingKeycloakContactFailedAlertIsPresented: .constant(false), +// confirmAddingKeycloakContactViewAction: {}) +// .environment(\.colorScheme, .dark) +// AddContactMainInnerView(contact: identity2, +// ownedCryptoId: identity.cryptoId, +// urlIdentityRepresentation: URL(string: "https://olvid.io")!, +// alreadyScannedOrTappedURL: nil, +// viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), +// confirmInviteAction: { _ in }, +// dismissAction: {}, +// installedOlvidAppIsOutdated: {}, +// checkSignatureMutualScanUrl: { _ in false }, +// requestNewAvailableApiKeyElements: { _ in }, +// userRequestedNewAPIKeyActivation: { _ in }, +// newAvailableApiKeyElements: APIKeyElements(), +// userWantsToSearchWithinKeycloak: {}, +// userDetailsOfKeycloakContact: nil, +// contactIdentity: nil, +// isConfirmAddingKeycloakViewPushed: .constant(false), +// addingKeycloakContactFailedAlertIsPresented: .constant(false), +// confirmAddingKeycloakContactViewAction: {}) +// .environment(\.colorScheme, .dark) +// AddContactMainInnerView(contact: identity2, +// ownedCryptoId: identity.cryptoId, +// urlIdentityRepresentation: URL(string: "https://olvid.io")!, +// alreadyScannedOrTappedURL: nil, +// viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), +// confirmInviteAction: { _ in }, +// dismissAction: {}, +// installedOlvidAppIsOutdated: {}, +// checkSignatureMutualScanUrl: { _ in false }, +// requestNewAvailableApiKeyElements: { _ in }, +// userRequestedNewAPIKeyActivation: { _ in }, +// newAvailableApiKeyElements: APIKeyElements(), +// userWantsToSearchWithinKeycloak: {}, +// userDetailsOfKeycloakContact: nil, +// contactIdentity: nil, +// isConfirmAddingKeycloakViewPushed: .constant(false), +// addingKeycloakContactFailedAlertIsPresented: .constant(false), +// confirmAddingKeycloakContactViewAction: {}) +// .environment(\.colorScheme, .dark) +// .environment(\.locale, .init(identifier: "fr")) +// AddContactMainInnerView(contact: identity2, +// ownedCryptoId: identity.cryptoId, +// urlIdentityRepresentation: URL(string: "https://olvid.io")!, +// alreadyScannedOrTappedURL: nil, +// viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), +// confirmInviteAction: { _ in }, +// dismissAction: {}, +// installedOlvidAppIsOutdated: {}, +// checkSignatureMutualScanUrl: { _ in false }, +// requestNewAvailableApiKeyElements: { _ in }, +// userRequestedNewAPIKeyActivation: { _ in }, +// newAvailableApiKeyElements: APIKeyElements(), +// userWantsToSearchWithinKeycloak: {}, +// userDetailsOfKeycloakContact: nil, +// contactIdentity: nil, +// isConfirmAddingKeycloakViewPushed: .constant(false), +// addingKeycloakContactFailedAlertIsPresented: .constant(false), +// confirmAddingKeycloakContactViewAction: {}) +// .environment(\.colorScheme, .dark) +// .environment(\.locale, .init(identifier: "fr")) +// .previewDevice(PreviewDevice(rawValue: "iPhone XS")) +// AddContactMainInnerView(contact: identity2, +// ownedCryptoId: identity.cryptoId, +// urlIdentityRepresentation: URL(string: "https://olvid.io")!, +// alreadyScannedOrTappedURL: nil, +// viewForSharingIdentity: AnyView(Text("Placeholder view for sharing my id")), +// confirmInviteAction: { _ in }, +// dismissAction: {}, +// installedOlvidAppIsOutdated: {}, +// checkSignatureMutualScanUrl: { _ in false }, +// requestNewAvailableApiKeyElements: { _ in }, +// userRequestedNewAPIKeyActivation: { _ in }, +// newAvailableApiKeyElements: APIKeyElements(), +// userWantsToSearchWithinKeycloak: {}, +// userDetailsOfKeycloakContact: nil, +// contactIdentity: nil, +// isConfirmAddingKeycloakViewPushed: .constant(false), +// addingKeycloakContactFailedAlertIsPresented: .constant(false), +// confirmAddingKeycloakContactViewAction: {}) +// .environment(\.sizeCategory, .accessibilityExtraExtraExtraLarge) +// .previewLayout(.fixed(width: 320, height: 568)) +// } +// } +//} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/BetaConfigurationActivationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/BetaConfigurationActivationView.swift index fdd3332f..303c8197 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/BetaConfigurationActivationView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/BetaConfigurationActivationView.swift @@ -22,6 +22,8 @@ import ObvTypes import ObvUI import SwiftUI import ObvUICoreData +import ObvSettings +import ObvDesignSystem struct BetaConfigurationActivationView: View { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ConfirmAddContactView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ConfirmAddContactView.swift index d12a065e..4d5a0fe5 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ConfirmAddContactView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ConfirmAddContactView.swift @@ -22,6 +22,7 @@ import ObvTypes import ObvEngine import ObvUI import ObvUICoreData +import ObvDesignSystem struct ConfirmAddContactView: View { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ConfirmAddingKeycloakContactView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ConfirmAddingKeycloakContactView.swift index a1b95011..553ec37c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ConfirmAddingKeycloakContactView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ConfirmAddingKeycloakContactView.swift @@ -21,6 +21,8 @@ import SwiftUI import ObvTypes import ObvUI import ObvUICoreData +import ObvDesignSystem + struct ConfirmAddingKeycloakContactView: View { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakBinding/BindingShowIdentityView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakBinding/BindingShowIdentityView.swift index c4f2abe2..45c67fb4 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakBinding/BindingShowIdentityView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakBinding/BindingShowIdentityView.swift @@ -22,6 +22,7 @@ import ObvTypes import ObvEngine import ObvUI import ObvUICoreData +import ObvDesignSystem struct BindingShowIdentityView: View { @@ -89,9 +90,9 @@ struct BindingShowIdentityInnerView: View { @State private var hudCategory: HUDView.Category? @State private var switchingToManagedIdFailed = false - private var circledTextView: Text? { + private var circledText: String? { if let descriptiveCharacter = self.descriptiveCharacter { - return Text(descriptiveCharacter) + return descriptiveCharacter } else { return nil } @@ -108,23 +109,56 @@ struct BindingShowIdentityInnerView: View { hudCategory = .progress } userWantsToBindOwnedIdentityToKeycloak { success in - assert(Thread.isMainThread) - if success { - withAnimation { - hudCategory = .checkmark - } - DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) { - dismissAction() - } - } else { - withAnimation { - hudCategory = nil - switchingToManagedIdFailed = true + DispatchQueue.main.async { + if success { + withAnimation { + hudCategory = .checkmark + } + DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) { + dismissAction() + } + } else { + withAnimation { + hudCategory = nil + switchingToManagedIdFailed = true + } } } } } + private var textViewModel: TextView.Model { + .init(titlePart1: firstName, + titlePart2: lastName, + subtitle: position, + subsubtitle: company) + } + + private var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: descriptiveCharacter, + icon: .person, + profilePicture: profilePicture, + showGreenShield: true, + showRedShield: false) + } + + private var circleAndTitlesViewModelContent: CircleAndTitlesView.Model.Content { + .init(textViewModel: textViewModel, + profilePictureViewModelContent: profilePictureViewModelContent) + } + + private var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: circleBackgroundColor, + foreground: circleTextColor) + } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContent, + colors: initialCircleViewModelColors, + displayMode: .normal, + editionMode: .none) + } + var body: some View { ZStack { @@ -135,20 +169,7 @@ struct BindingShowIdentityInnerView: View { ObvCardView { VStack(spacing: 16) { HStack { - CircleAndTitlesView( - titlePart1: firstName, - titlePart2: lastName, - subtitle: position, - subsubtitle: company, - circleBackgroundColor: circleBackgroundColor, - circleTextColor: circleTextColor, - circledTextView: circledTextView, - systemImage: .person, - profilePicture: profilePicture, - showGreenShield: true, - showRedShield: false, - editionMode: .none, - displayMode: .normal) + CircleAndTitlesView(model: circleAndTitlesViewModel) Spacer() } OlvidButton( diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakBinding/BindingUseIdentityProviderView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakBinding/BindingUseIdentityProviderView.swift index 008093b1..ea200331 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakBinding/BindingUseIdentityProviderView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakBinding/BindingUseIdentityProviderView.swift @@ -22,6 +22,7 @@ import ObvEngine import ObvTypes import os.log import ObvUI +import ObvDesignSystem final class KeycloakBindingStore { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakSearchView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakSearchView.swift index ccd75efa..19a04837 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakSearchView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/KeycloakSearchView.swift @@ -25,6 +25,7 @@ import ObvEngine import Combine import ObvUICoreData import ObvUI +import ObvDesignSystem protocol KeycloakSearchViewControllerDelegate: AnyObject { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/LicenseActivationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/LicenseActivationView.swift deleted file mode 100644 index 77bc5cd1..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/LicenseActivationView.swift +++ /dev/null @@ -1,260 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import SwiftUI -import ObvTypes -import ObvEngine -import ObvUI -import ObvUICoreData - -struct LicenseActivationView: View { - - let ownedCryptoId: ObvCryptoId - let serverAndAPIKey: ServerAndAPIKey - let currentApiKeyStatus: APIKeyStatus - let currentApiKeyExpirationDate: Date? - let ownedIdentityIsKeycloakManaged: Bool - - let requestNewAvailableApiKeyElements: (UUID) -> Void - let userRequestedNewAPIKeyActivation: (UUID) -> Void - @ObservedObject var newAvailableApiKeyElements: APIKeyElements - - @State private var serverAndAPIKeyIncompatibleWithOwnServer = false - - let dismissAction: () -> Void - - @State private var isNewAPIActivationInProgress = false - - var body: some View { - ZStack { - Color(AppTheme.shared.colorScheme.systemBackground) - .edgesIgnoringSafeArea(.all) - ScrollView { - if ownedIdentityIsKeycloakManaged { - UnableToActivateLicenseView(category: .ownedIdentityIsKeycloakManaged, dismissAction: dismissAction) - } else if serverAndAPIKeyIncompatibleWithOwnServer { - UnableToActivateLicenseView(category: .serverAndAPIKeyIncompatibleWithOwnServer, dismissAction: dismissAction) - } else { - VStack(alignment: .leading, spacing: 16) { - if let newAvailableApiKeyStatus = self.newAvailableApiKeyElements.apiKeyStatus { - SubscriptionStatusView(title: Text("NEW_LICENSE_TO_ACTIVATE"), - apiKeyStatus: newAvailableApiKeyStatus, - apiKeyExpirationDate: newAvailableApiKeyElements.apiKeyExpirationDate, - showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, - showRefreshStatusButton: false, - refreshStatusAction: {}) - if newAvailableApiKeyStatus.canBeActivated || ObvMessengerSettings.Subscription.allowAPIKeyActivationWithBadKeyStatus { - OlvidButton(style: .blue, title: Text("ACTIVATE_NEW_LICENSE"), systemIcon: .checkmarkSealFill) { - isNewAPIActivationInProgress = true - userRequestedNewAPIKeyActivation(serverAndAPIKey.apiKey) - - }.disabled(isNewAPIActivationInProgress) - } - OlvidButton(style: .standard, title: Text("Cancel"), systemIcon: .xmarkCircleFill, action: dismissAction) - } else { - HStack { - Spacer() - if #available(iOS 14.0, *) { - ProgressView("Looking for the new license") - } else { - ObvActivityIndicator(isAnimating: .constant(true), style: .large, color: nil) - } - Spacer() - }.padding(.top) - } - SubscriptionStatusView(title: Text("CURRENT_LICENSE_STATUS"), - apiKeyStatus: currentApiKeyStatus, - apiKeyExpirationDate: currentApiKeyExpirationDate, - showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, - showRefreshStatusButton: false, - refreshStatusAction: {}) - .padding(.top, 40) - Spacer() - } - .padding() - } - }.disabled(isNewAPIActivationInProgress) - if isNewAPIActivationInProgress { - if !newAvailableApiKeyElements.activated { - HUDView(category: .progress) - } else { - HUDView(category: .checkmark) - .onAppear(perform: { - DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) { - dismissAction() - }}) - } - } - } - .navigationBarTitle(Text("License activation"), displayMode: .inline) - .onAppear(perform: { - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(600)) { - if ownedCryptoId.belongsTo(serverURL: serverAndAPIKey.server) { - requestNewAvailableApiKeyElements(serverAndAPIKey.apiKey) - } else { - // The distribution server of the user (indicated in her identity) is incompatible with the server indicated in the licence - withAnimation { serverAndAPIKeyIncompatibleWithOwnServer = true } - } - } - }) - } -} - - -fileprivate struct UnableToActivateLicenseView: View { - - enum Category { - case ownedIdentityIsKeycloakManaged - case serverAndAPIKeyIncompatibleWithOwnServer - } - - let category: Category - let dismissAction: () -> Void - - var body: some View { - ObvCardView { - VStack(alignment: .leading, spacing: 16) { - HStack { - Image(systemIcon: .exclamationmarkCircle) - .foregroundColor(.red) - .font(.system(size: 32, weight: .medium)) - Text("UNABLE_TO_ACTIVATE_LICENSE_TITLE") - .font(.headline) - Spacer() - } - HStack { - switch category { - case .ownedIdentityIsKeycloakManaged: - Text("UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION") - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - .font(.body) - case .serverAndAPIKeyIncompatibleWithOwnServer: - Text("UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION_ALT") - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - .font(.body) - } - Spacer() - } - HStack { - Text("PLEASE_CONTACT_ADMIN_FOR_MORE_DETAILS") - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - .font(.body) - Spacer() - } - OlvidButton(style: .standard, title: Text("Cancel"), systemIcon: .xmarkCircleFill, action: dismissAction) - } - } - .padding() - } - -} - - - - - - - -struct LicenseActivationView_Previews: PreviewProvider { - - private static let identityAsURL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! - private static let identity = ObvURLIdentity(urlRepresentation: identityAsURL)! - - private static let serverAndAPIKey = ServerAndAPIKey(server: URL(string: "https://olvid.io")!, apiKey: UUID()) - - private static func returnNewAPIKeyStatusAndExpirationDate(completion: (APIKeyStatus, Date) -> Void) { - completion(APIKeyStatus.valid, Date()) - } - - static var previews: some View { - Group { - NavigationView { - LicenseActivationView(ownedCryptoId: identity.cryptoId, - serverAndAPIKey: serverAndAPIKey, - currentApiKeyStatus: APIKeyStatus.free, - currentApiKeyExpirationDate: nil, - ownedIdentityIsKeycloakManaged: false, - requestNewAvailableApiKeyElements: {_ in }, - userRequestedNewAPIKeyActivation: {_ in }, - newAvailableApiKeyElements: APIKeyElements(), - dismissAction: {}) - } - NavigationView { - LicenseActivationView(ownedCryptoId: identity.cryptoId, - serverAndAPIKey: serverAndAPIKey, - currentApiKeyStatus: APIKeyStatus.unknown, - currentApiKeyExpirationDate: nil, - ownedIdentityIsKeycloakManaged: false, - requestNewAvailableApiKeyElements: {_ in }, - userRequestedNewAPIKeyActivation: {_ in }, - newAvailableApiKeyElements: APIKeyElements(apiKey: UUID(), apiKeyStatus: APIKeyStatus.valid, apiKeyExpirationDate: Date()), - dismissAction: {}) - } - NavigationView { - LicenseActivationView(ownedCryptoId: identity.cryptoId, - serverAndAPIKey: serverAndAPIKey, - currentApiKeyStatus: APIKeyStatus.free, - currentApiKeyExpirationDate: nil, - ownedIdentityIsKeycloakManaged: false, - requestNewAvailableApiKeyElements: {_ in }, - userRequestedNewAPIKeyActivation: {_ in }, - newAvailableApiKeyElements: APIKeyElements(), - dismissAction: {}) - } - .environment(\.colorScheme, .dark) - NavigationView { - LicenseActivationView(ownedCryptoId: identity.cryptoId, - serverAndAPIKey: serverAndAPIKey, - currentApiKeyStatus: APIKeyStatus.unknown, - currentApiKeyExpirationDate: nil, - ownedIdentityIsKeycloakManaged: false, - requestNewAvailableApiKeyElements: {_ in }, - userRequestedNewAPIKeyActivation: {_ in }, - newAvailableApiKeyElements: APIKeyElements(apiKey: UUID(), apiKeyStatus: APIKeyStatus.valid, apiKeyExpirationDate: Date()), - dismissAction: {}) - } - .environment(\.colorScheme, .dark) - NavigationView { - LicenseActivationView(ownedCryptoId: identity.cryptoId, - serverAndAPIKey: serverAndAPIKey, - currentApiKeyStatus: APIKeyStatus.freeTrial, - currentApiKeyExpirationDate: nil, - ownedIdentityIsKeycloakManaged: false, - requestNewAvailableApiKeyElements: {_ in }, - userRequestedNewAPIKeyActivation: {_ in }, - newAvailableApiKeyElements: APIKeyElements(apiKey: UUID(), apiKeyStatus: APIKeyStatus.valid, apiKeyExpirationDate: Date()), - dismissAction: {}) - } - .environment(\.colorScheme, .dark) - NavigationView { - LicenseActivationView(ownedCryptoId: identity.cryptoId, - serverAndAPIKey: serverAndAPIKey, - currentApiKeyStatus: APIKeyStatus.freeTrial, - currentApiKeyExpirationDate: nil, - ownedIdentityIsKeycloakManaged: true, - requestNewAvailableApiKeyElements: {_ in }, - userRequestedNewAPIKeyActivation: {_ in }, - newAvailableApiKeyElements: APIKeyElements(apiKey: UUID(), apiKeyStatus: APIKeyStatus.valid, apiKeyExpirationDate: Date()), - dismissAction: {}) - } - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/LicenseActivationView/LicenseActivationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/LicenseActivationView/LicenseActivationView.swift new file mode 100644 index 00000000..0e33480f --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/LicenseActivationView/LicenseActivationView.swift @@ -0,0 +1,428 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import ObvEngine +import ObvUI +import ObvUICoreData +import OlvidUtils +import ObvSettings +import ObvDesignSystem + + +protocol LicenseActivationViewModelProtocol: ObservableObject { + associatedtype OwnedIdentityModel: LicenseActivationViewModelOwnedIdentityModelProtocol + var ownedIdentity: OwnedIdentityModel { get } + var serverAndAPIKey: ServerAndAPIKey { get } +} + + +protocol LicenseActivationViewModelOwnedIdentityModelProtocol: ObservableObject { + var ownedCryptoId: ObvCryptoId { get } + var isKeycloakManaged: Bool { get } + var currentAPIKeyElements: ObvTypes.APIKeyElements { get } + var isActive: Bool { get } +} + + +protocol LicenseActivationViewActionsDelegate { + func userWantsToDismissLicenseActivationView() + func userWantsToRegisterAPIKey(ownedCryptoId: ObvCryptoId, apiKey: UUID) async throws + func userWantsToQueryServerForAPIKeyElements(ownedCryptoId: ObvCryptoId, apiKey: UUID) async throws -> ObvTypes.APIKeyElements +} + + +struct LicenseActivationView: View { + + @ObservedObject var model: Model + let actions: LicenseActivationViewActionsDelegate + + + @State private var apiKeyElementsFetchedFromServer: ObvTypes.APIKeyElements? + @State private var isAPIKeyActivationInProgress = false + @State private var shownHUDViewCategory: HUDView.Category? + @State private var isQueryingAPIKeyElementsFromServer = false + @State private var queryingAPIKeyElementsFromServerDidFail = false + @State private var isAPIKeyActivated = false + + + private var apiKeyServerIsCompatibleWithOwnedIdentityServer: Bool { + model.ownedIdentity.ownedCryptoId.belongsTo(serverURL: model.serverAndAPIKey.server) + } + + + @MainActor + private func userWantsToActivateNewLicense() async { + + guard !isAPIKeyActivationInProgress else { return } + withAnimation { isAPIKeyActivationInProgress = true } + defer { withAnimation { isAPIKeyActivationInProgress = false } } + + let ownedCryptoId = model.ownedIdentity.ownedCryptoId + let apiKey = model.serverAndAPIKey.apiKey + + withAnimation { shownHUDViewCategory = .progress } + + var success: Bool + do { + try await actions.userWantsToRegisterAPIKey(ownedCryptoId: ownedCryptoId, apiKey: apiKey) + withAnimation { shownHUDViewCategory = .checkmark } + success = true + } catch { + withAnimation { shownHUDViewCategory = .xmark } + success = false + } + await suspendDuringTimeInterval(2) + withAnimation { + shownHUDViewCategory = nil + isAPIKeyActivated = success + } + } + + + private func activateNewLicenseNow() { + Task { await userWantsToActivateNewLicense() } + } + + @MainActor + private func userWantsToQueryAPIKeyElementsFromServer() async { + do { + let apiKeyElements = try await actions.userWantsToQueryServerForAPIKeyElements(ownedCryptoId: model.ownedIdentity.ownedCryptoId, apiKey: model.serverAndAPIKey.apiKey) + withAnimation { + apiKeyElementsFetchedFromServer = apiKeyElements + } + } catch { + withAnimation { + queryingAPIKeyElementsFromServerDidFail = true + } + } + } + + + private func queryAPIKeyElementsFromServer() { + guard !isQueryingAPIKeyElementsFromServer else { return } + isQueryingAPIKeyElementsFromServer = true + Task { await userWantsToQueryAPIKeyElementsFromServer() } + } + + + private var showCancelButton: Bool { + if apiKeyElementsFetchedFromServer == nil { + return !queryingAPIKeyElementsFromServerDidFail + } else { + return !model.ownedIdentity.isKeycloakManaged && model.ownedIdentity.isActive && apiKeyServerIsCompatibleWithOwnedIdentityServer + } + } + + + var body: some View { + ZStack { + + Color(AppTheme.shared.colorScheme.systemBackground) + .edgesIgnoringSafeArea(.all) + + ScrollView { + + VStack { + + if !isAPIKeyActivated { + + if let apiKeyElementsFetchedFromServer { + + SubscriptionStatusView(title: Text("NEW_LICENSE_TO_ACTIVATE"), + apiKeyStatus: apiKeyElementsFetchedFromServer.status, + apiKeyExpirationDate: apiKeyElementsFetchedFromServer.expirationDate, + showSubscriptionPlansButton: false, + userWantsToSeeSubscriptionPlans: {}, + showRefreshStatusButton: false, + refreshStatusAction: {}, + apiPermissions: apiKeyElementsFetchedFromServer.permissions) + + if !model.ownedIdentity.isActive { + + UnableToActivateLicenseView(category: .ownedIdentityIsInactive, dismissAction: actions.userWantsToDismissLicenseActivationView) + + } else if model.ownedIdentity.isKeycloakManaged { + + UnableToActivateLicenseView(category: .ownedIdentityIsKeycloakManaged, dismissAction: actions.userWantsToDismissLicenseActivationView) + + } else if !apiKeyServerIsCompatibleWithOwnedIdentityServer { + + UnableToActivateLicenseView(category: .serverAndAPIKeyIncompatibleWithOwnServer, dismissAction: actions.userWantsToDismissLicenseActivationView) + + } else if apiKeyElementsFetchedFromServer.status.canBeActivated || ObvMessengerSettings.Subscription.allowAPIKeyActivationWithBadKeyStatus || ObvMessengerConstants.developmentMode { + + OlvidButton(style: .blue, title: Text("ACTIVATE_NEW_LICENSE"), systemIcon: .checkmarkSealFill, action: activateNewLicenseNow) + .disabled(isAPIKeyActivationInProgress) + + } + + } else if queryingAPIKeyElementsFromServerDidFail { + + UnableToActivateLicenseView(category: .queryingAPIKeyElementsFromServerDidFail, dismissAction: actions.userWantsToDismissLicenseActivationView) + + } else { + + HStack { + Spacer() + ProgressView("Looking for the new license") + Spacer() + } + .padding(.vertical, 32) + .onAppear(perform: queryAPIKeyElementsFromServer) + + } + + if showCancelButton { + + OlvidButton(style: .standard, title: Text("Cancel"), systemIcon: .xmarkCircleFill, action: actions.userWantsToDismissLicenseActivationView) + + } + + } + + SubscriptionStatusView(title: Text("CURRENT_LICENSE_STATUS"), + apiKeyStatus: model.ownedIdentity.currentAPIKeyElements.status, + apiKeyExpirationDate: model.ownedIdentity.currentAPIKeyElements.expirationDate, + showSubscriptionPlansButton: false, + userWantsToSeeSubscriptionPlans: {}, + showRefreshStatusButton: false, + refreshStatusAction: {}, + apiPermissions: model.ownedIdentity.currentAPIKeyElements.permissions) + .padding(.top, 32) + + if isAPIKeyActivated { + OlvidButton(style: .blue, title: Text("Ok"), systemIcon: .checkmarkCircle, action: actions.userWantsToDismissLicenseActivationView) + } + + }.padding(.horizontal) + + } // End of ScrollView + + if let shownHUDViewCategory { + HUDView(category: shownHUDViewCategory) + } + + }.onAppear(perform: queryAPIKeyElementsFromServer) + + } + +} + + + +fileprivate struct UnableToActivateLicenseView: View { + + enum Category { + case ownedIdentityIsKeycloakManaged + case serverAndAPIKeyIncompatibleWithOwnServer + case queryingAPIKeyElementsFromServerDidFail + case ownedIdentityIsInactive + } + + let category: Category + let dismissAction: () -> Void + + var body: some View { + ObvCardView { + VStack(alignment: .leading, spacing: 16) { + HStack { + Image(systemIcon: .exclamationmarkCircle) + .foregroundColor(.red) + .font(.system(size: 32, weight: .medium)) + Text("UNABLE_TO_ACTIVATE_LICENSE_TITLE") + .font(.headline) + Spacer() + } + HStack { + switch category { + case .ownedIdentityIsKeycloakManaged: + Text("UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION") + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + .font(.body) + case .serverAndAPIKeyIncompatibleWithOwnServer: + Text("UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION_ALT") + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + .font(.body) + case .queryingAPIKeyElementsFromServerDidFail: + Text("COULD_NOT_QUERY_SERVER_FOR_API_KEY_ELEMENTS") + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + .font(.body) + case .ownedIdentityIsInactive: + Text("UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION_OWNED_IDENTITY_INACTIVE") + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + .font(.body) + } + Spacer() + } + switch category { + case .ownedIdentityIsKeycloakManaged: + HStack { + Text("PLEASE_CONTACT_ADMIN_FOR_MORE_DETAILS") + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + .font(.body) + Spacer() + } + case .serverAndAPIKeyIncompatibleWithOwnServer, + .queryingAPIKeyElementsFromServerDidFail, + .ownedIdentityIsInactive: + EmptyView() + } + OlvidButton(style: .standard, title: Text("Cancel"), systemIcon: .xmarkCircleFill, action: dismissAction) + } + } + } + +} + + + +struct LicenseActivationView_Previews: PreviewProvider { + + + fileprivate final class ModelForPreviews: LicenseActivationViewModelProtocol { + + final class OwnedIdentityModelForPreviews: LicenseActivationViewModelOwnedIdentityModelProtocol { + let ownedCryptoId: ObvCryptoId + let isKeycloakManaged: Bool + let currentAPIKeyElements: ObvTypes.APIKeyElements + let isActive: Bool + init(ownedCryptoId: ObvCryptoId, isActive: Bool, isKeycloakManaged: Bool, currentAPIKeyElements: ObvTypes.APIKeyElements) { + self.ownedCryptoId = ownedCryptoId + self.isActive = isActive + self.isKeycloakManaged = isKeycloakManaged + self.currentAPIKeyElements = currentAPIKeyElements + } + } + + let ownedIdentity: OwnedIdentityModelForPreviews + let serverAndAPIKey: ServerAndAPIKey + init(ownedIdentity: OwnedIdentityModelForPreviews, serverAndAPIKey: ServerAndAPIKey) { + self.ownedIdentity = ownedIdentity + self.serverAndAPIKey = serverAndAPIKey + } + } + + private static let identityAsURL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! + private static let ownedCryptoId = ObvURLIdentity(urlRepresentation: identityAsURL)!.cryptoId + + private static let apiKeyGoodServer = URL(string: "https://server.dev.olvid.io")! + private static let apiKeyWrongServer = URL(string: "https://wrong.olvid.io")! + private static let apiKey = UUID() + + fileprivate static let currentAPIKeyElements = ObvTypes.APIKeyElements(status: .freeTrial, permissions: [.canCall], expirationDate: Date(timeIntervalSinceNow: .init(days: 5))) + + fileprivate static let ownedIdentityModels: [ModelForPreviews.OwnedIdentityModelForPreviews] = [ + ModelForPreviews.OwnedIdentityModelForPreviews( + ownedCryptoId: ownedCryptoId, + isActive: true, + isKeycloakManaged: false, + currentAPIKeyElements: currentAPIKeyElements), + ModelForPreviews.OwnedIdentityModelForPreviews( + ownedCryptoId: ownedCryptoId, + isActive: true, + isKeycloakManaged: true, + currentAPIKeyElements: currentAPIKeyElements), + ModelForPreviews.OwnedIdentityModelForPreviews( + ownedCryptoId: ownedCryptoId, + isActive: false, + isKeycloakManaged: false, + currentAPIKeyElements: currentAPIKeyElements), + ] + + fileprivate static let models: [ModelForPreviews] = [ + ModelForPreviews( + ownedIdentity: ownedIdentityModels[0], + serverAndAPIKey: .init(server: apiKeyGoodServer, apiKey: apiKey)), + ModelForPreviews( + ownedIdentity: ownedIdentityModels[1], + serverAndAPIKey: .init(server: apiKeyGoodServer, apiKey: apiKey)), + ModelForPreviews( + ownedIdentity: ownedIdentityModels[0], + serverAndAPIKey: .init(server: apiKeyWrongServer, apiKey: apiKey)), + ModelForPreviews( + ownedIdentity: ownedIdentityModels[2], + serverAndAPIKey: .init(server: apiKeyGoodServer, apiKey: apiKey)), + ] + + private struct Actions: LicenseActivationViewActionsDelegate { + + let simulateFailToQueryServerForAPIKeyElements: Bool + + @MainActor + func userWantsToQueryServerForAPIKeyElements(ownedCryptoId: ObvTypes.ObvCryptoId, apiKey: UUID) async throws -> ObvTypes.APIKeyElements { + await TaskUtils.suspendDuringTimeInterval(2) + if simulateFailToQueryServerForAPIKeyElements { + throw NSError(domain: "LicenseActivationViewActionsDelegate", code: 0) + } else { + return .init(status: .valid, permissions: [.multidevice, .canCall], expirationDate: .init(timeIntervalSinceNow: .init(days: 10))) + } + } + + func userWantsToDismissLicenseActivationView() {} + + func userWantsToRegisterAPIKey(ownedCryptoId: ObvTypes.ObvCryptoId, apiKey: UUID) async throws { + await TaskUtils.suspendDuringTimeInterval(2) + } + + } + + private static let actions: [Actions] = [ + Actions(simulateFailToQueryServerForAPIKeyElements: false), + Actions(simulateFailToQueryServerForAPIKeyElements: true), + ] + + static var previews: some View { + + Group { + NavigationView { + LicenseActivationView( + model: models[0], + actions: actions[0]) + } + .previewDisplayName("Simulate successful fetch of API key elements") + NavigationView { + LicenseActivationView( + model: models[0], + actions: actions[1]) + } + .previewDisplayName("Simulate failed fetch of API key elements") + NavigationView { + LicenseActivationView( + model: models[1], + actions: actions[0]) + } + .previewDisplayName("Failure (keycloak managed)") + NavigationView { + LicenseActivationView( + model: models[2], + actions: actions[0]) + } + .previewDisplayName("Failure (bad server URL)") + NavigationView { + LicenseActivationView( + model: models[3], + actions: actions[0]) + } + .previewDisplayName("Failure (inactive owned identity)") + } + } + +} diff --git a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/QueryApiKeyStatusDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/LicenseActivationView/ViewModelsForCoreDataEntities/PersistedObvOwnedIdentity+LicenseActivationViewModelOwnedIdentityModelProtocol.swift similarity index 74% rename from Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/QueryApiKeyStatusDelegate.swift rename to iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/LicenseActivationView/ViewModelsForCoreDataEntities/PersistedObvOwnedIdentity+LicenseActivationViewModelOwnedIdentityModelProtocol.swift index 47378175..556c202f 100644 --- a/Engine/ObvNetworkFetchManager/ObvNetworkFetchManager/InternalDelegates/QueryApiKeyStatusDelegate.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/LicenseActivationView/ViewModelsForCoreDataEntities/PersistedObvOwnedIdentity+LicenseActivationViewModelOwnedIdentityModelProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -18,12 +18,12 @@ */ import Foundation +import ObvUICoreData import ObvTypes -import ObvCrypto -import OlvidUtils -protocol QueryApiKeyStatusDelegate: AnyObject { - - func queryAPIKeyStatus(for identity: ObvCryptoIdentity, apiKey: UUID, flowId: FlowIdentifier) +extension PersistedObvOwnedIdentity: LicenseActivationViewModelOwnedIdentityModelProtocol { + var currentAPIKeyElements: ObvTypes.APIKeyElements { + self.apiKeyElements + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ScannerView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ScannerView.swift index a2254366..0baf5f92 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ScannerView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/ScannerView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,12 +20,12 @@ import SwiftUI import AVFoundation import os.log -import ObvUI +import ObvDesignSystem protocol ScannerHostingViewDelegate: AnyObject { - func scannerViewActionButtonWasTapped() - func qrCodeWasScanned(olvidURL: OlvidURL) + func scannerViewActionButtonWasTapped() async + func qrCodeWasScanned(olvidURL: OlvidURL) async } @@ -56,11 +56,15 @@ final class ScannerHostingView: UIHostingController, ScannerViewSto // ScannerViewStoreDelegate func buttonAction() { - delegate?.scannerViewActionButtonWasTapped() + Task { [weak self] in + await self?.delegate?.scannerViewActionButtonWasTapped() + } } func qrCodeWasScanned(olvidURL: OlvidURL) { - delegate?.qrCodeWasScanned(olvidURL: olvidURL) + Task { [weak self] in + await self?.delegate?.qrCodeWasScanned(olvidURL: olvidURL) + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SendInviteOrShowSecondQRCodeView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SendInviteOrShowSecondQRCodeView.swift index 7bccb391..e0a24403 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SendInviteOrShowSecondQRCodeView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SendInviteOrShowSecondQRCodeView.swift @@ -17,13 +17,13 @@ * along with Olvid. If not, see . */ - import ObvEngine import ObvTypes import ObvUI import ObvUICoreData import SwiftUI import UI_SystemIcon +import ObvDesignSystem struct SendInviteOrShowSecondQRCodeView: View { @@ -69,9 +69,7 @@ struct SendInviteOrShowSecondQRCodeView: View { } private func useSmallScreenMode(for geometry: GeometryProxy) -> Bool { - if #available(iOS 13.4, *) { - if sizeCategory.isAccessibilityCategory { return true } - } + if sizeCategory.isAccessibilityCategory { return true } // Small screen mode for iPhone 6, iPhone 6S, iPhone 7, iPhone 8, iPhone SE (2016) return max(geometry.size.height, geometry.size.width) < 510 } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/CircleAndTitlesView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/CircleAndTitlesView.swift index e2b3599e..de8e7824 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/CircleAndTitlesView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/CircleAndTitlesView.swift @@ -20,7 +20,7 @@ import ObvUI import SwiftUI import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials import UI_SystemIcon enum CircleAndTitlesDisplayMode { @@ -38,123 +38,121 @@ enum CircleAndTitlesEditionMode { // Note from TB on 2022-08-04: we probably should be using CircledInitialsConfiguration here struct CircleAndTitlesView: View { - private let titlePart1: String? - private let titlePart2: String? - private let subtitle: String? - private let subsubtitle: String? - private let circleBackgroundColor: UIColor? - private let circleTextColor: UIColor? - private let circledTextView: Text? - private let systemImage: CircledInitialsIcon - private let profilePicture: UIImage? - private let alignment: VerticalAlignment - private let showGreenShield: Bool - private let showRedShield: Bool - private let displayMode: CircleAndTitlesDisplayMode - private let editionMode: CircleAndTitlesEditionMode - - @State private var profilePictureFullScreenIsPresented = false + struct Model { + + struct Content { + let textViewModel: TextView.Model + let profilePictureViewModelContent: ProfilePictureView.Model.Content + + var displayNameForHeader: String { + [textViewModel.titlePart1 ?? "", textViewModel.titlePart2 ?? ""] + .joined(separator: " ") + .trimmingCharacters(in: .whitespacesAndNewlines) + } - init(titlePart1: String?, titlePart2: String?, subtitle: String?, subsubtitle: String?, circleBackgroundColor: UIColor?, circleTextColor: UIColor?, circledTextView: Text?, systemImage: CircledInitialsIcon, profilePicture: UIImage?, alignment: VerticalAlignment = .center, showGreenShield: Bool, showRedShield: Bool, editionMode: CircleAndTitlesEditionMode, displayMode: CircleAndTitlesDisplayMode) { - self.titlePart1 = titlePart1 - self.titlePart2 = titlePart2 - self.subtitle = subtitle - self.subsubtitle = subsubtitle - self.circleBackgroundColor = circleBackgroundColor - self.circleTextColor = circleTextColor - self.circledTextView = circledTextView - self.systemImage = systemImage - self.profilePicture = profilePicture - self.alignment = alignment - self.editionMode = editionMode - self.displayMode = displayMode - self.showGreenShield = showGreenShield - self.showRedShield = showRedShield - } + } + + let content: Content + let colors: InitialCircleView.Model.Colors + let alignment: VerticalAlignment + let displayMode: CircleAndTitlesDisplayMode + let editionMode: CircleAndTitlesEditionMode + + init(content: Content, colors: InitialCircleView.Model.Colors, alignment: VerticalAlignment = .center, displayMode: CircleAndTitlesDisplayMode, editionMode: CircleAndTitlesEditionMode) { + self.content = content + self.colors = colors + self.alignment = alignment + self.displayMode = displayMode + self.editionMode = editionMode + } + + var circleDiameter: CGFloat { + switch displayMode { + case .small: + return 40.0 + case .normal: + return 60.0 + case .header: + return 120.0 + } + } + + static let circledCameraButtonViewSize: CGFloat = 20.0 - private var circleDiameter: CGFloat { - switch displayMode { - case .small: - return 40.0 - case .normal: - return ProfilePictureView.circleDiameter - case .header: - return 120 + var profilePictureViewModel: ProfilePictureView.Model { + .init(content: content.profilePictureViewModelContent, + colors: colors, + circleDiameter: circleDiameter) } + } + + let model: Model - private var pictureViewInner: some View { - ProfilePictureView(profilePicture: profilePicture, circleBackgroundColor: circleBackgroundColor, circleTextColor: circleTextColor, circledTextView: circledTextView, systemImage: systemImage, showGreenShield: showGreenShield, showRedShield: showRedShield, customCircleDiameter: circleDiameter) - } + @State private var profilePictureFullScreenIsPresented = false + init(model: Model) { + self.model = model + } + private func profilePictureBinding(update: @escaping (UIImage?) -> Void) -> Binding { .init { - profilePicture + model.content.profilePictureViewModelContent.profilePicture } set: { image in update(image) } } + private var pictureView: some View { ZStack { - if #available(iOS 14.0, *) { - if case .header = displayMode { - pictureViewInner - .onTapGesture { - guard profilePicture != nil else { - profilePictureFullScreenIsPresented = false - return - } - profilePictureFullScreenIsPresented.toggle() - } - .fullScreenCover(isPresented: $profilePictureFullScreenIsPresented) { - FullScreenProfilePictureView(photo: profilePicture) - .background(BackgroundBlurView() - .edgesIgnoringSafeArea(.all)) + if case .header = model.displayMode { + ProfilePictureView(model: model.profilePictureViewModel) + .onTapGesture { + guard model.content.profilePictureViewModelContent.profilePicture != nil else { + profilePictureFullScreenIsPresented = false + return } - } else { - pictureViewInner - } + profilePictureFullScreenIsPresented.toggle() + } + .fullScreenCover(isPresented: $profilePictureFullScreenIsPresented) { + FullScreenProfilePictureView(photo: model.content.profilePictureViewModelContent.profilePicture) + .background(BackgroundBlurView() + .edgesIgnoringSafeArea(.all)) + } } else { - pictureViewInner + ProfilePictureView(model: model.profilePictureViewModel) } - switch editionMode { + switch model.editionMode { case .none: EmptyView() case .picture(let update): CircledCameraButtonView(profilePicture: profilePictureBinding(update: update)) - .offset(CGSize(width: ProfilePictureView.circleDiameter/3, height: ProfilePictureView.circleDiameter/3)) + .offset(CGSize(width: Model.circledCameraButtonViewSize, height: Model.circledCameraButtonViewSize)) case .custom(let icon, let action): Button(action: action) { CircledSymbolView(systemIcon: icon) } - .offset(CGSize(width: circleDiameter/3, height: circleDiameter/3)) + .offset(CGSize(width: model.circleDiameter/3, height: model.circleDiameter/3)) } } } - private var displayNameForHeader: String { - let _titlePart1 = titlePart1 ?? "" - let _titlePart2 = titlePart2 ?? "" - return [_titlePart1, _titlePart2].joined(separator: " ").trimmingCharacters(in: .whitespacesAndNewlines) - } - + var body: some View { - switch displayMode { + switch model.displayMode { case .normal, .small: - HStack(alignment: self.alignment, spacing: 16) { + HStack(alignment: model.alignment, spacing: 16) { pictureView - TextView(titlePart1: titlePart1, - titlePart2: titlePart2, - subtitle: subtitle, - subsubtitle: subsubtitle) + TextView(model: model.content.textViewModel) } case .header: VStack(spacing: 8) { pictureView - Text(displayNameForHeader) + Text(model.content.displayNameForHeader) .font(.system(.largeTitle, design: .rounded)) .fontWeight(.semibold) + .multilineTextAlignment(.center) } } } @@ -195,3 +193,25 @@ struct BackgroundBlurView: UIViewRepresentable { func updateUIView(_ uiView: UIView, context: Context) {} } + + +// MARK: NSManagedObjects extension + +extension PersistedObvOwnedIdentity { + + var circleAndTitlesViewModelContent: CircleAndTitlesView.Model.Content { + .init(textViewModel: self.textViewModel, + profilePictureViewModelContent: self.profilePictureViewModelContent) + } + +} + + +extension PersistedGroupV2Member { + + var circleAndTitlesViewModelContent: CircleAndTitlesView.Model.Content { + .init(textViewModel: self.textViewModel, + profilePictureViewModelContent: self.profilePictureViewModelContent) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/CircledCameraButtonView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/CircledCameraButtonView.swift index 53ca9e11..b031d9b6 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/CircledCameraButtonView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/CircledCameraButtonView.swift @@ -18,6 +18,7 @@ */ import SwiftUI +import UI_ObvImageEditor struct CircledCameraButtonView: View { @@ -39,120 +40,131 @@ struct CircledCameraButtonView: View { @Binding var profilePicture: UIImage? - @State private var activeSheet: ActiveSheet? = nil - @State private var sheetIsPresented: Bool = false // Only for iOS13 + @State private var activeSheet: ActiveSheet? @State private var pictureState: UIImage? = nil + @State private var isSheetPresented: Bool = false + @State private var isFileImporterPresented: Bool = false @State private var profilePictureMenuIsPresented: Bool = false - var profilePictureEditionActionsSheet: [ActionSheet.Button] { - var result: [ActionSheet.Button] = [] - for action in buildCameraButtonActions() { - result += [Alert.Button.default(Text(action.title), action: action.handler)] - } - result.append(Alert.Button.cancel({ profilePictureMenuIsPresented = false })) - return result + private func userTappedMenuButtonForPhotoLibrary() { + self.activeSheet = .libraryPicker + self.isSheetPresented = true + self.isFileImporterPresented = false } - private func buildCameraButtonActions() -> [ProfilePictureAction] { - var actions: [ProfilePictureAction] = [] - actions += [ProfilePictureAction(title: NSLocalizedString("CHOOSE_PICTURE", comment: "")) { - self.activeSheet = .libraryPicker - if #unavailable(iOS 14.0) { - self.sheetIsPresented = true - } - }] - if UIImagePickerController.isCameraDeviceAvailable(.front) { - actions += [ProfilePictureAction(title: NSLocalizedString("TAKE_PICTURE", comment: "")) { - self.activeSheet = .cameraPicker - if #unavailable(iOS 14.0) { - self.sheetIsPresented = true - } - }] - } - actions += [ProfilePictureAction(title: NSLocalizedString("REMOVE_PICTURE", comment: "")) { - self.profilePicture = nil - }] - return actions + + private func userTappedMenuButtonForFilesApp() { + self.activeSheet = nil + self.isSheetPresented = false + self.isFileImporterPresented = true } - var body: some View { - if #available(iOS 14.0, *) { - iOS14Body - } else { - iOS13Body - } + private func userTappedMenuButtonForCamera() { + self.activeSheet = .cameraPicker + self.isSheetPresented = true + self.isFileImporterPresented = false } - @available(iOS 14, *) - private var iOS14Body: some View { - UIButtonWrapper(title: nil, actions: buildCameraButtonActions().map { $0.toAction }) { - CircledCameraView() - } - .frame(width: 44, height: 44) - .sheet(item: $activeSheet) { item in - switch item { - case .cameraPicker: - ImagePicker(image: $pictureState, useCamera: true) { - activeSheet = .editor - } - case .libraryPicker: - ImagePicker(image: $pictureState, useCamera: false) { - activeSheet = .editor - } - case .editor: - ImageEditor(image: $pictureState) { - activeSheet = nil - if let image = pictureState { - withAnimation { - self.profilePicture = image - } - } - } + + private func userTappedMenuButtonForRemovingPicture() { + self.profilePicture = nil + self.isSheetPresented = false + self.isFileImporterPresented = false + } + + + /// Called when the file importer is dismissed. + @MainActor + private func processFileImporterResult(_ result: Result<[URL], Error>) async { + switch result { + case .success(let urls): + assert(urls.count == 1) + guard let url = urls.first else { return } + let gotAccess = url.startAccessingSecurityScopedResource() + guard gotAccess else { return } + defer { url.stopAccessingSecurityScopedResource() } + guard let image = UIImage(contentsOfFile: url.path) else { return } + withAnimation { + self.pictureState = image + self.activeSheet = .editor + self.isSheetPresented = true } + case .failure(let failure): + assertionFailure(failure.localizedDescription) } } - private var iOS13Body: some View { - Button(action: { profilePictureMenuIsPresented.toggle() }) { - CircledCameraView() + /// Called when the user taps the accept or reject button of the image editor. If the user accepted the edited image, this edited image is passed as a parameter. + @MainActor + private func userAcceptedOrRejectedEditedImage(_ editedImage: UIImage?) async { + withAnimation { + self.activeSheet = nil + self.isSheetPresented = false + if let editedImage { + self.profilePicture = editedImage + } } - .frame(width: 44, height: 44) - .actionSheet(isPresented: $profilePictureMenuIsPresented, content: { - ActionSheet(title: Text("PROFILE_PICTURE"), message: nil, buttons: profilePictureEditionActionsSheet) - }) - .sheet(isPresented: $sheetIsPresented, onDismiss: { - if activeSheet != nil && !sheetIsPresented { - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(700)) { - sheetIsPresented = true + } + + var body: some View { + + Menu { + Button(action: userTappedMenuButtonForPhotoLibrary) { + Label("PHOTO_LIBRARY", systemIcon: .photoOnRectangleAngled) + } + Button(action: userTappedMenuButtonForFilesApp) { + Label("FILES_APP", systemIcon: .doc) + } + if UIImagePickerController.isCameraDeviceAvailable(.front) { + Button(action: userTappedMenuButtonForCamera) { + Label("TAKE_PICTURE", systemIcon: .camera(.none)) } } - }, content: { - if let item = activeSheet { - switch item { - case .cameraPicker: - ImagePicker(image: $pictureState, useCamera: true) { + Button(action: userTappedMenuButtonForRemovingPicture) { + Label("REMOVE_PICTURE", systemIcon: .trash) + } + } label: { + CircledCameraView() + .frame(width: 44, height: 44) + } + .sheet(isPresented: $isSheetPresented) { + switch activeSheet { + case .libraryPicker: + ImagePicker(image: $pictureState, useCamera: false) { + withAnimation { activeSheet = .editor - sheetIsPresented = false } - case .libraryPicker: - ImagePicker(image: $pictureState, useCamera: false) { + } + .ignoresSafeArea() + case .cameraPicker: + ImagePicker(image: $pictureState, useCamera: true) { + withAnimation { activeSheet = .editor - sheetIsPresented = false } - case .editor: - ImageEditor(image: $pictureState) { - activeSheet = nil - sheetIsPresented = false - if let image = pictureState { - withAnimation { - self.profilePicture = image - } - } + } + .ignoresSafeArea() + case .editor: + if let pictureState { + ObvImageEditorViewControllerRepresentable( + originalImage: pictureState, + showZoomButtons: false, + maxReturnedImageSize: (1080, 1080)) + { editedImage in + Task { await userAcceptedOrRejectedEditedImage(editedImage) } } + .ignoresSafeArea() } + case nil: + EmptyView() + } + } + .fileImporter( + isPresented: $isFileImporterPresented, + allowedContentTypes: [.jpeg], + allowsMultipleSelection: false) { result in + Task { await processFileImporterResult(result) } } - }) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/IdentityCardContentView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/IdentityCardContentView.swift index 5b87de79..e9cf6a78 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/IdentityCardContentView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/IdentityCardContentView.swift @@ -21,10 +21,11 @@ import SwiftUI import ObvEngine import CoreData import ObvTypes -import ObvMetaManager import Combine import ObvUI import ObvUICoreData +import ObvSettings +import ObvDesignSystem class SingleIdentity: Identifiable, Hashable, ObservableObject { @@ -173,8 +174,12 @@ class SingleIdentity: Identifiable, Hashable, ObservableObject { convenience init(keycloakDetails: (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff)) { assert(Thread.isMainThread) let keycloakUserDetailsAndStuff = keycloakDetails.keycloakUserDetailsAndStuff - let apiKey = keycloakUserDetailsAndStuff.apiKey ?? ObvMessengerConstants.hardcodedAPIKey! - let serverAndAPIKeyToShow = ServerAndAPIKey(server: keycloakUserDetailsAndStuff.server, apiKey: apiKey) + let serverAndAPIKeyToShow: ServerAndAPIKey? + if let apiKey = keycloakUserDetailsAndStuff.apiKey { + serverAndAPIKeyToShow = ServerAndAPIKey(server: keycloakUserDetailsAndStuff.server, apiKey: apiKey) + } else { + serverAndAPIKeyToShow = nil + } self.init(firstName: keycloakUserDetailsAndStuff.firstName ?? "", lastName: keycloakUserDetailsAndStuff.lastName ?? "", position: keycloakUserDetailsAndStuff.position ?? "", @@ -225,22 +230,30 @@ class SingleIdentity: Identifiable, Hashable, ObservableObject { fileprivate func setTrustedVariables(with contact: PersistedObvContactIdentity) { let coreDetails = contact.identityCoreDetails - self.firstName = coreDetails?.firstName ?? "" - self.lastName = coreDetails?.lastName ?? "" - self.position = coreDetails?.position ?? "" - self.company = coreDetails?.company ?? "" + if self.firstName != coreDetails?.firstName ?? "" { + self.firstName = coreDetails?.firstName ?? "" + } + if self.lastName != coreDetails?.lastName ?? "" { + self.lastName = coreDetails?.lastName ?? "" + } + if self.position != coreDetails?.position ?? "" { + self.position = coreDetails?.position ?? "" + } + if self.company != coreDetails?.company ?? "" { + self.company = coreDetails?.company ?? "" + } if self.photoURL != contact.photoURL { self.photoURL = contact.photoURL } } - func circledTextView(_ components: [String?]) -> Text? { + func circledText(_ components: [String?]) -> String? { let component = components .compactMap({ $0?.trimmingCharacters(in: .whitespacesAndNewlines) }) .filter({ !$0.isEmpty }) .first if let char = component?.first { - return Text(String(char)) + return String(char) } else { return nil } @@ -318,6 +331,8 @@ protocol SingleContactIdentityDelegate: AnyObject { func userWantsToPerformAnIntroduction(forContact: SingleContactIdentity) func userWantsToDeleteContact(_ contact: SingleContactIdentity, completion: @escaping (Bool) -> Void) func userWantsToUpdateTrustedIdentityDetails(ofContact: SingleContactIdentity, usingPublishedDetails: ObvIdentityDetails) + func userWantsToNavigateToListOfContactDevicesView(_ contact: PersistedObvContactIdentity) + func userWantsToNavigateToListOfTrustOriginsView(trustOrigins: [ObvTrustOrigin]) func userWantsToNavigateToSingleGroupView(_ group: DisplayedContactGroup) func userWantsToDisplay(persistedDiscussion: PersistedDiscussion) func userWantsToEditContactNickname() @@ -337,6 +352,7 @@ final class SingleContactIdentity: SingleIdentity { @Published var contactStatus: PersistedObvContactIdentity.Status @Published var customDisplayName: String? @Published var contactHasNoDevice: Bool + @Published var atLeastOneDeviceAllowsThisContactToReceiveMessages: Bool @Published var contactIsOneToOne: Bool @Published var isActive: Bool @Published var showReblockView: Bool @@ -349,7 +365,9 @@ final class SingleContactIdentity: SingleIdentity { private var publishedPhotoURL: URL? var customPhotoURL: URL? { willSet { - self.objectWillChange.send() + DispatchQueue.main.async { [weak self] in + self?.objectWillChange.send() + } } } @@ -360,12 +378,13 @@ final class SingleContactIdentity: SingleIdentity { private let observeChangesMadeToContact: Bool /// For previews only - init(firstName: String?, lastName: String?, position: String?, company: String?, customDisplayName: String? = nil, publishedContactDetails: ObvIdentityDetails?, contactStatus: PersistedObvContactIdentity.Status, contactHasNoDevice: Bool, contactIsOneToOne: Bool, isActive: Bool, trustOrigins: [ObvTrustOrigin] = []) { + init(firstName: String?, lastName: String?, position: String?, company: String?, customDisplayName: String? = nil, publishedContactDetails: ObvIdentityDetails?, contactStatus: PersistedObvContactIdentity.Status, atLeastOneDeviceAllowsThisContactToReceiveMessages: Bool, contactHasNoDevice: Bool, contactIsOneToOne: Bool, isActive: Bool, trustOrigins: [ObvTrustOrigin] = []) { self.publishedContactDetails = publishedContactDetails self.contactStatus = contactStatus self.persistedContact = nil self.customDisplayName = customDisplayName self.contactHasNoDevice = contactHasNoDevice + self.atLeastOneDeviceAllowsThisContactToReceiveMessages = atLeastOneDeviceAllowsThisContactToReceiveMessages self.contactIsOneToOne = contactIsOneToOne self.isActive = isActive self.showReblockView = false @@ -392,6 +411,7 @@ final class SingleContactIdentity: SingleIdentity { self.customDisplayName = persistedContact.customDisplayName self.customPhotoURL = persistedContact.customPhotoURL self.contactHasNoDevice = persistedContact.devices.isEmpty + self.atLeastOneDeviceAllowsThisContactToReceiveMessages = persistedContact.atLeastOneDeviceAllowsThisContactToReceiveMessages self.contactIsOneToOne = persistedContact.isOneToOne self.isActive = persistedContact.isActive self.showReblockView = false @@ -417,6 +437,7 @@ final class SingleContactIdentity: SingleIdentity { showRedShield: !persistedContact.isActive, identityColors: persistedContact.cryptoId.colors, photoURL: persistedContact.photoURL) + observeContactChangedInViewContext() observeUpdateMadesToContactDevices() observeChangesOfCustomDisplayName() observeChangesOfCustomPhotoURL() @@ -544,12 +565,13 @@ final class SingleContactIdentity: SingleIdentity { private func observeChangesOfCustomDisplayName() { guard let persistedContact = self.persistedContact else { assertionFailure(); return } keyValueObservations.append(persistedContact.observe(\.customDisplayName) { [weak self] (_,_) in - assert(Thread.isMainThread) - guard let _self = self else { return } - withAnimation { - _self.customDisplayName = persistedContact.customDisplayName + DispatchQueue.main.async { + guard let _self = self else { return } + withAnimation { + _self.customDisplayName = persistedContact.customDisplayName + } + _self.initialHash = _self.hashValue } - _self.initialHash = _self.hashValue }) } @@ -570,34 +592,59 @@ final class SingleContactIdentity: SingleIdentity { private func observeUpdateMadesToContactDevices() { guard let persistedContact = self.persistedContact else { assertionFailure(); return } observationTokens.append(contentsOf: [ - ObvMessengerCoreDataNotification.observeDeletedPersistedObvContactDevice(queue: OperationQueue.main) { [weak self] (contactCryptoId) in - guard contactCryptoId == persistedContact.cryptoId else { return } - self?.setTrustedVariables(with: persistedContact) + ObvMessengerCoreDataNotification.observeDeletedPersistedObvContactDevice { [weak self] contactCryptoId in + DispatchQueue.main.async { + guard contactCryptoId == persistedContact.cryptoId else { return } + self?.setTrustedVariables(with: persistedContact) + } }, - ObvMessengerCoreDataNotification.observeNewPersistedObvContactDevice(queue: OperationQueue.main) { [weak self] (_, contactCryptoId) in - guard contactCryptoId == persistedContact.cryptoId else { return } - self?.setTrustedVariables(with: persistedContact) + ObvMessengerCoreDataNotification.observeNewPersistedObvContactDevice { [weak self] _, contactCryptoId in + DispatchQueue.main.async { + guard contactCryptoId == persistedContact.cryptoId else { return } + self?.setTrustedVariables(with: persistedContact) + } + }, + ObvMessengerCoreDataNotification.observeASecureChannelWithContactDeviceWasJustCreated { [weak self] persistedDeviceObjectID in + DispatchQueue.main.async { + guard persistedContact.devices.map({ $0.typedObjectID }).contains(where: { $0 == persistedDeviceObjectID }) else { return } + self?.setTrustedVariables(with: persistedContact) + } }, ]) } + private func observeContactChangedInViewContext() { + let NotificationName = Notification.Name.NSManagedObjectContextObjectsDidChange + observationTokens.append(NotificationCenter.default.addObserver(forName: NotificationName, object: nil, queue: nil) { [weak self] (notification) in + guard Thread.isMainThread else { return } + guard let context = notification.object as? NSManagedObjectContext else { assertionFailure(); return } + guard context == ObvStack.shared.viewContext else { return } + guard self?.persistedContact?.managedObjectContext == context else { return } + guard let persistedContact = self?.persistedContact else { assertionFailure(); return } + self?.setTrustedVariables(with: persistedContact) + }) + } + + private func observeObvContactAnswerNotifications() { guard let persistedContact = self.persistedContact else { assertionFailure(); return } - observationTokens.append(ObvMessengerInternalNotification.observeObvContactAnswer(queue: OperationQueue.main) { [weak self] (requestUUID, obvContact) in - guard self?.id == requestUUID else { return } - guard persistedContact.cryptoId == obvContact.cryptoId else { return } - self?.setTrustedVariables(with: persistedContact) - guard obvContact.trustedIdentityDetails != obvContact.publishedIdentityDetails else { return } - withAnimation { - self?.publishedContactDetails = obvContact.publishedIdentityDetails - if let photoURL = self?.publishedContactDetails?.photoURL { - self?.publishedPhotoURL = photoURL + observationTokens.append(ObvMessengerInternalNotification.observeObvContactAnswer { [weak self] (requestUUID, obvContact) in + DispatchQueue.main.async { + guard self?.id == requestUUID else { return } + guard persistedContact.cryptoId == obvContact.cryptoId else { return } + self?.setTrustedVariables(with: persistedContact) + guard obvContact.trustedIdentityDetails != obvContact.publishedIdentityDetails else { return } + withAnimation { + self?.publishedContactDetails = obvContact.publishedIdentityDetails + if let photoURL = self?.publishedContactDetails?.photoURL { + self?.publishedPhotoURL = photoURL + } + self?.contactStatus = persistedContact.status + self?.isActive = persistedContact.isActive + self?.showReblockView = obvContact.isActive && obvContact.isRevokedAsCompromised + self?.showRedShield = !obvContact.isActive } - self?.contactStatus = persistedContact.status - self?.isActive = persistedContact.isActive - self?.showReblockView = obvContact.isActive && obvContact.isRevokedAsCompromised - self?.showRedShield = !obvContact.isActive } }) } @@ -609,10 +656,12 @@ final class SingleContactIdentity: SingleIdentity { guard let currentContactCryptoId = persistedContact?.cryptoId else { assertionFailure(); return } guard let currentOwnedCryptoId = persistedContact?.ownedIdentity?.cryptoId else { return } let id = self.id - observationTokens.append(ObvMessengerCoreDataNotification.observePersistedContactHasNewStatus(queue: OperationQueue.main) { (contactCryptoId, ownedCryptoId) in - guard (currentContactCryptoId, currentOwnedCryptoId) == (contactCryptoId, ownedCryptoId) else { return } - ObvMessengerInternalNotification.obvContactRequest(requestUUID: id, contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) - .postOnDispatchQueue() + observationTokens.append(ObvMessengerCoreDataNotification.observePersistedContactHasNewStatus { (contactCryptoId, ownedCryptoId) in + DispatchQueue.main.async { + guard (currentContactCryptoId, currentOwnedCryptoId) == (contactCryptoId, ownedCryptoId) else { return } + ObvMessengerInternalNotification.obvContactRequest(requestUUID: id, contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + .postOnDispatchQueue() + } }) } @@ -624,34 +673,53 @@ final class SingleContactIdentity: SingleIdentity { guard let currentContactCryptoId = persistedContact?.cryptoId else { assertionFailure(); return } guard let currentOwnedCryptoId = persistedContact?.ownedIdentity?.cryptoId else { return } let id = self.id - observationTokens.append(ObvMessengerInternalNotification.observeContactIdentityDetailsWereUpdated(queue: OperationQueue.main) { (contactCryptoId, ownedCryptoId) in - guard (currentContactCryptoId, currentOwnedCryptoId) == (contactCryptoId, ownedCryptoId) else { return } - ObvMessengerInternalNotification.obvContactRequest(requestUUID: id, contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) - .postOnDispatchQueue() + observationTokens.append(ObvMessengerInternalNotification.observeContactIdentityDetailsWereUpdated { (contactCryptoId, ownedCryptoId) in + DispatchQueue.main.async { + guard (currentContactCryptoId, currentOwnedCryptoId) == (contactCryptoId, ownedCryptoId) else { return } + ObvMessengerInternalNotification.obvContactRequest(requestUUID: id, contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + .postOnDispatchQueue() + } }) } + fileprivate func observeNewSavedCustomContactPictureCandidateNotifications() { observationTokens.append(ObvMessengerInternalNotification.observeNewSavedCustomContactPictureCandidate() { [weak self] (requestUUID, url) in guard self?.id == requestUUID else { return } DispatchQueue.main.async { - withAnimation { - self?.customPhotoURL = url + if self?.customPhotoURL != url { + withAnimation { + self?.customPhotoURL = url + } } } }) } + override func setTrustedVariables(with contact: PersistedObvContactIdentity) { assert(Thread.isMainThread) assert(self.persistedContact == contact) withAnimation { super.setTrustedVariables(with: contact) - self.contactHasNoDevice = contact.devices.isEmpty - self.isActive = contact.isActive - self.contactStatus = contact.status - self.customDisplayName = contact.customDisplayName - self.contactIsOneToOne = contact.isOneToOne + if self.contactHasNoDevice != contact.devices.isEmpty { + self.contactHasNoDevice = contact.devices.isEmpty + } + if self.atLeastOneDeviceAllowsThisContactToReceiveMessages != contact.atLeastOneDeviceAllowsThisContactToReceiveMessages { + self.atLeastOneDeviceAllowsThisContactToReceiveMessages = contact.atLeastOneDeviceAllowsThisContactToReceiveMessages + } + if self.isActive != contact.isActive { + self.isActive = contact.isActive + } + if self.contactStatus != contact.status { + self.contactStatus = contact.status + } + if self.customDisplayName != contact.customDisplayName { + self.customDisplayName = contact.customDisplayName + } + if self.contactIsOneToOne != contact.isOneToOne { + self.contactIsOneToOne = contact.isOneToOne + } } } @@ -677,17 +745,18 @@ final class SingleContactIdentity: SingleIdentity { .postOnDispatchQueue() } - func userWantsToRecreateTheSecureChannel() { - guard let persistedContact = self.persistedContact else { assertionFailure(); return } - let contactCryptoId = persistedContact.cryptoId - guard let ownedCryptoId = persistedContact.ownedIdentity?.cryptoId else { return } - ObvMessengerInternalNotification.userWantsToReCreateChannelEstablishmentProtocol(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) - .postOnDispatchQueue() - } - func userWantsToNavigateToSingleGroupView(_ group: DisplayedContactGroup) { delegate?.userWantsToNavigateToSingleGroupView(group) } + + func userWantsToNavigateToListOfContactDevicesView() { + guard let persistedContact else { assertionFailure(); return } + delegate?.userWantsToNavigateToListOfContactDevicesView(persistedContact) + } + + func userWantsToNavigateToListOfTrustOriginsView() { + delegate?.userWantsToNavigateToListOfTrustOriginsView(trustOrigins: trustOrigins) + } func userWantsToDiscuss() { guard contactIsOneToOne else { assertionFailure(); return } @@ -702,11 +771,12 @@ final class SingleContactIdentity: SingleIdentity { } func userWantsToCallContact() { - guard isActive && !contactHasNoDevice else { return } + guard isActive && atLeastOneDeviceAllowsThisContactToReceiveMessages else { return } guard let persistedContact = persistedContact else { assertionFailure(); return } - let contactID = persistedContact.typedObjectID + let contactCryptoId = persistedContact.cryptoId + guard let ownedCryptoId = persistedContact.ownedIdentity?.cryptoId else { return } - ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: [contactID], groupId: nil) + ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set([contactCryptoId]), groupId: nil) .postOnDispatchQueue() } @@ -871,33 +941,62 @@ struct ProfilePictureAction { struct IdentityCardContentView: View { @ObservedObject var model: SingleIdentity - var displayMode: CircleAndTitlesDisplayMode = .normal - var editionMode: CircleAndTitlesEditionMode = .none + let displayMode: CircleAndTitlesDisplayMode + let editionMode: CircleAndTitlesEditionMode + + init(model: SingleIdentity, displayMode: CircleAndTitlesDisplayMode = .normal, editionMode: CircleAndTitlesEditionMode = .none) { + self.model = model + self.displayMode = displayMode + self.editionMode = editionMode + } + private var textViewModel: TextView.Model { + .init(titlePart1: model.firstName.trimmingWhitespacesAndNewlines(), + titlePart2: model.lastName.trimmingWhitespacesAndNewlines(), + subtitle: model.position.trimmingWhitespacesAndNewlines(), + subsubtitle: model.company.trimmingWhitespacesAndNewlines()) + } + + private var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: model.circledText([model.firstName, model.lastName]), + icon: .person, + profilePicture: model.profilePicture, + showGreenShield: model.showGreenShield, + showRedShield: model.showRedShield) + } + + private var circleAndTitlesViewModelContent: CircleAndTitlesView.Model.Content { + .init(textViewModel: textViewModel, + profilePictureViewModelContent: profilePictureViewModelContent) + } + + private var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: model.identityColors?.background, + foreground: model.identityColors?.text) + } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContent, + colors: initialCircleViewModelColors, + displayMode: displayMode, + editionMode: editionMode) + } + var body: some View { - CircleAndTitlesView(titlePart1: model.firstName.trimmingWhitespacesAndNewlines(), - titlePart2: model.lastName.trimmingWhitespacesAndNewlines(), - subtitle: model.position.trimmingWhitespacesAndNewlines(), - subsubtitle: model.company.trimmingWhitespacesAndNewlines(), - circleBackgroundColor: model.identityColors?.background, - circleTextColor: model.identityColors?.text, - circledTextView: model.circledTextView([model.firstName, model.lastName]), - systemImage: .person, - profilePicture: model.profilePicture, - showGreenShield: model.showGreenShield, - showRedShield: model.showRedShield, - editionMode: editionMode, - displayMode: displayMode) + CircleAndTitlesView(model: circleAndTitlesViewModel) } } + enum PreferredDetails { case trusted case publishedOrTrusted case customOrTrusted } + +/// This view is a legacy view: it is very complex, and uses the `SingleContactIdentity` model which is very complex too. We shall not use this view in new views. struct ContactIdentityCardContentView: View { @ObservedObject var model: SingleContactIdentity @@ -925,24 +1024,40 @@ struct ContactIdentityCardContentView: View { model.getProfilPicture(for: preferredDetails) } - private var titlePart1: String { firstName } - - private var titlePart2: String { lastName } - + private var textViewModel: TextView.Model { + .init(titlePart1: firstName, + titlePart2: lastName, + subtitle: position, + subsubtitle: company) + } + + private var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: model.circledText([firstName, lastName]), + icon: .person, + profilePicture: profilePicture, + showGreenShield: model.showGreenShield, + showRedShield: model.showRedShield) + } + + private var circleAndTitlesViewModelContent: CircleAndTitlesView.Model.Content { + .init(textViewModel: textViewModel, + profilePictureViewModelContent: profilePictureViewModelContent) + } + + private var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: model.identityColors?.background, + foreground: model.identityColors?.text) + } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContent, + colors: initialCircleViewModelColors, + displayMode: displayMode, + editionMode: editionMode) + } + var body: some View { - CircleAndTitlesView(titlePart1: titlePart1, - titlePart2: titlePart2, - subtitle: position, - subsubtitle: company, - circleBackgroundColor: model.identityColors?.background, - circleTextColor: model.identityColors?.text, - circledTextView: model.circledTextView([titlePart1, titlePart2]), - systemImage: .person, - profilePicture: profilePicture, - showGreenShield: model.showGreenShield, - showRedShield: model.showRedShield, - editionMode: editionMode, - displayMode: displayMode) + CircleAndTitlesView(model: circleAndTitlesViewModel) } } @@ -951,35 +1066,61 @@ struct ContactIdentityCardContentView: View { struct GroupCardContentView: View { @ObservedObject var model: ContactGroup - var displayMode: CircleAndTitlesDisplayMode = .normal - var editionMode: CircleAndTitlesEditionMode = .none + let displayMode: CircleAndTitlesDisplayMode + let editionMode: CircleAndTitlesEditionMode + + init(model: ContactGroup, displayMode: CircleAndTitlesDisplayMode = .normal, editionMode: CircleAndTitlesEditionMode = .none) { + self.model = model + self.displayMode = displayMode + self.editionMode = editionMode + } - private var circledTextView: Text? { + private var circledText: String? { let components = [model.name] .compactMap({ $0?.trimmingCharacters(in: .whitespacesAndNewlines) }) .filter({ !$0.isEmpty }) .first if let char = components?.first { - return Text(String(char)) + return String(char) } else { return nil } } + + private var textViewModel: TextView.Model { + .init(titlePart1: model.name, + titlePart2: nil, + subtitle: model.description, + subsubtitle: nil) + } + + private var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: circledText, + icon: .person3Fill, + profilePicture: model.profilePicture, + showGreenShield: false, + showRedShield: false) + } + + private var circleAndTitlesViewModelContent: CircleAndTitlesView.Model.Content { + .init(textViewModel: textViewModel, + profilePictureViewModelContent: profilePictureViewModelContent) + } + + private var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: model.groupColors?.background, + foreground: model.groupColors?.text) + } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContent, + colors: initialCircleViewModelColors, + displayMode: displayMode, + editionMode: editionMode) + } var body: some View { - CircleAndTitlesView(titlePart1: model.name, - titlePart2: nil, - subtitle: model.description, - subsubtitle: nil, - circleBackgroundColor: model.groupColors?.background, - circleTextColor: model.groupColors?.text, - circledTextView: circledTextView, - systemImage: .person3Fill, - profilePicture: model.profilePicture, - showGreenShield: false, - showRedShield: false, - editionMode: editionMode, - displayMode: displayMode) + CircleAndTitlesView(model: circleAndTitlesViewModel) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/OlvidButton.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/OlvidButton.swift index caeb40a4..c8a919b3 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/OlvidButton.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/OlvidButton.swift @@ -21,6 +21,7 @@ import ObvUI import SwiftUI import UI_SystemIcon import UI_SystemIcon_SwiftUI +import ObvDesignSystem fileprivate extension OlvidButton.Style { @@ -36,6 +37,7 @@ fileprivate extension OlvidButton.Style { case .green: return .green case .red: return .red case .redOnTransparentBackground: return .clear + case .text: return .clear } } @@ -51,6 +53,7 @@ fileprivate extension OlvidButton.Style { case .green: return .white case .red: return .white case .redOnTransparentBackground: return .red + case .text: return Color(AppTheme.shared.colorScheme.olvidLight) } } } @@ -72,6 +75,7 @@ struct OlvidButton: View { case green case red case redOnTransparentBackground + case text } let style: Style @@ -114,22 +118,11 @@ struct OlvidButton: View { var body: some View { Button(action: action) { - if #available(iOS 14, *) { - buttonContent { - Label( - title: { title }, - icon: { systemIcon != nil ? Image(systemIcon: systemIcon!) : nil } - ) - } - } else { - buttonContent { - HStack { - if let systemIcon = self.systemIcon { - Image(systemIcon: systemIcon) - } - title - } - } + buttonContent { + Label( + title: { title }, + icon: { systemIcon != nil ? Image(systemIcon: systemIcon!) : nil } + ) } } .fixedSize(horizontal: false, vertical: true) @@ -265,6 +258,12 @@ struct OlvidButton_Previews: PreviewProvider { .background(Color(.systemBackground)) .environment(\.colorScheme, .light) .previewDisplayName("Blue example in light mode without label") + OlvidButton(style: .text, title: Text("Save"), action: {}) + .padding() + .previewLayout(.sizeThatFits) + .background(Color(.systemBackground)) + .environment(\.colorScheme, .light) + .previewDisplayName("Text example in light mode") } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/ProfilePictureView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/ProfilePictureView.swift index 1a6fd1af..7748b29f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/ProfilePictureView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/ProfilePictureView.swift @@ -20,65 +20,102 @@ import ObvUI import SwiftUI import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvDesignSystem +/// Legacy view. Use InitialCircleViewNew instead. struct ProfilePictureView: View { - let profilePicture: UIImage? - let circleBackgroundColor: UIColor? - let circleTextColor: UIColor? - let circledTextView: Text? - let systemImage: CircledInitialsIcon - let customCircleDiameter: CGFloat? - let showGreenShield: Bool - let showRedShield: Bool + struct Model { + + struct Content { + let text: String? + let icon: CircledInitialsIcon + let profilePicture: UIImage? + let showGreenShield: Bool + let showRedShield: Bool + + var initialCircleViewModelContent: InitialCircleView.Model.Content { + .init(text: text, icon: icon) + } + + } + + let content: Content + let colors: InitialCircleView.Model.Colors + let circleDiameter: CGFloat - init(profilePicture: UIImage?, - circleBackgroundColor: UIColor?, - circleTextColor: UIColor?, - circledTextView: Text?, - systemImage: CircledInitialsIcon, - showGreenShield: Bool, - showRedShield: Bool, - customCircleDiameter: CGFloat? = ProfilePictureView.circleDiameter) { - self.profilePicture = profilePicture - self.circleBackgroundColor = circleBackgroundColor - self.circleTextColor = circleTextColor - self.circledTextView = circledTextView - self.systemImage = systemImage - self.showGreenShield = showGreenShield - self.showRedShield = showRedShield - self.customCircleDiameter = customCircleDiameter + init(content: Content, colors: InitialCircleView.Model.Colors, circleDiameter: CGFloat) { + self.content = content + self.colors = colors + self.circleDiameter = circleDiameter + } + + fileprivate var initialCircleViewModel: InitialCircleView.Model { + .init(content: content.initialCircleViewModelContent, + colors: colors, + circleDiameter: circleDiameter) + } + } - static let circleDiameter: CGFloat = 60.0 + + let model: Model + + init(model: Model) { + self.model = model + } var body: some View { Group { - if let profilePicture = profilePicture { + if let profilePicture = model.content.profilePicture { Image(uiImage: profilePicture) .resizable() .scaledToFit() - .frame(width: customCircleDiameter ?? ProfilePictureView.circleDiameter, height: customCircleDiameter ?? ProfilePictureView.circleDiameter) + .frame(width: model.circleDiameter, height: model.circleDiameter) .clipShape(Circle()) } else { - InitialCircleView(circledTextView: circledTextView, - systemImage: systemImage, - circleBackgroundColor: circleBackgroundColor, - circleTextColor: circleTextColor, - circleDiameter: customCircleDiameter ?? ProfilePictureView.circleDiameter) + InitialCircleView(model: model.initialCircleViewModel) } } .overlay(Image(systemName: "checkmark.shield.fill") - .font(.system(size: (customCircleDiameter ?? ProfilePictureView.circleDiameter) / 4)) - .foregroundColor(showGreenShield ? Color(AppTheme.shared.colorScheme.green) : .clear), + .font(.system(size: (model.circleDiameter) / 4)) + .foregroundColor(model.content.showGreenShield ? Color(AppTheme.shared.colorScheme.green) : .clear), alignment: .topTrailing ) .overlay(Image(systemIcon: .exclamationmarkShieldFill) - .font(.system(size: (customCircleDiameter ?? ProfilePictureView.circleDiameter) / 2)) - .foregroundColor(showRedShield ? .red : .clear), + .font(.system(size: (model.circleDiameter) / 2)) + .foregroundColor(model.content.showRedShield ? .red : .clear), alignment: .center ) + + } +} + + +// MARK: - NSManagedObjects extension + +extension PersistedObvOwnedIdentity { + + var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: self.circledInitialsConfiguration.initials?.text ?? "", + icon: .person, + profilePicture: self.circledInitialsConfiguration.photo, + showGreenShield: self.circledInitialsConfiguration.showGreenShield, + showRedShield: self.circledInitialsConfiguration.showRedShield) + } + +} + +extension PersistedGroupV2Member { + + var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: self.circledInitialsConfiguration.initials?.text ?? "", + icon: .person, + profilePicture: self.circledInitialsConfiguration.photo, + showGreenShield: self.circledInitialsConfiguration.showGreenShield, + showRedShield: self.circledInitialsConfiguration.showRedShield) } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/TextView.swift b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/TextView.swift index fd12a8e1..4a45cf3d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/TextView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Invitation Flow/SubViews/TextView.swift @@ -19,19 +19,25 @@ import ObvUI import SwiftUI +import ObvUICoreData +import ObvDesignSystem struct TextView: View { - let titlePart1: String? - let titlePart2: String? - let subtitle: String? - let subsubtitle: String? + struct Model { + let titlePart1: String? + let titlePart2: String? + let subtitle: String? + let subsubtitle: String? + } + + let model: Model - private var titlePart1Count: Int { titlePart1?.count ?? 0 } - private var titlePart2Count: Int { titlePart2?.count ?? 0 } - private var subtitleCount: Int { subtitle?.count ?? 0 } - private var subsubtitleCount: Int { subsubtitle?.count ?? 0 } + private var titlePart1Count: Int { model.titlePart1?.count ?? 0 } + private var titlePart2Count: Int { model.titlePart2?.count ?? 0 } + private var subtitleCount: Int { model.subtitle?.count ?? 0 } + private var subsubtitleCount: Int { model.subsubtitle?.count ?? 0 } /// This variable allows to control when an animation is performed on `titlePart1`. /// @@ -62,9 +68,9 @@ struct TextView: View { var body: some View { VStack(alignment: .leading, spacing: 4) { - if titlePart1 != nil || titlePart2 != nil { + if model.titlePart1 != nil || model.titlePart2 != nil { HStack(spacing: 0) { - if let titlePart1 = self.titlePart1, !titlePart1.isEmpty { + if let titlePart1 = model.titlePart1, !titlePart1.isEmpty { Group { Text(titlePart1) .font(.system(.headline, design: .rounded)) @@ -72,12 +78,12 @@ struct TextView: View { .animation(.spring(), value: animateTitlePart1OnChange) } } - if let titlePart1 = self.titlePart1, let titlePart2 = self.titlePart2, !titlePart1.isEmpty, !titlePart2.isEmpty { + if let titlePart1 = model.titlePart1, let titlePart2 = model.titlePart2, !titlePart1.isEmpty, !titlePart2.isEmpty { Text(" ") .font(.system(.headline, design: .rounded)) .lineLimit(1) } - if let titlePart2 = self.titlePart2, !titlePart2.isEmpty { + if let titlePart2 = model.titlePart2, !titlePart2.isEmpty { Text(titlePart2) .font(.system(.headline, design: .rounded)) .fontWeight(.heavy) @@ -87,14 +93,14 @@ struct TextView: View { } .layoutPriority(0) } - if let subtitle = self.subtitle, !subtitle.isEmpty { + if let subtitle = model.subtitle, !subtitle.isEmpty { Text(subtitle) .font(.footnote) .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) .lineLimit(1) .animation(.spring(), value: animateSubtitleOnChange) } - if let subsubtitle = self.subsubtitle, !subsubtitle.isEmpty { + if let subsubtitle = model.subsubtitle, !subsubtitle.isEmpty { Text(subsubtitle) .font(.footnote) .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) @@ -104,3 +110,29 @@ struct TextView: View { } } } + + +// MARK: NSManagedObjects extension + +extension PersistedObvOwnedIdentity { + + var textViewModel: TextView.Model { + .init(titlePart1: self.identityCoreDetails.firstName, + titlePart2: self.identityCoreDetails.lastName, + subtitle: self.identityCoreDetails.position, + subsubtitle: self.identityCoreDetails.company) + } + +} + + +extension PersistedGroupV2Member { + + var textViewModel: TextView.Model { + .init(titlePart1: self.displayedFirstName, + titlePart2: self.displayedCustomDisplayNameOrLastName, + subtitle: self.displayedPosition, + subsubtitle: self.displayedCompany) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/LaunchScreen.storyboard b/iOSClient/ObvMessenger/ObvMessenger/LaunchScreen.storyboard index da1bfc3f..31b07e07 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/LaunchScreen.storyboard +++ b/iOSClient/ObvMessenger/ObvMessenger/LaunchScreen.storyboard @@ -1,9 +1,9 @@ - + - + @@ -20,9 +20,9 @@ - + - + @@ -32,7 +32,7 @@ - + diff --git a/iOSClient/ObvMessenger/ObvMessenger/LocalAuthentication/LocalAuthenticationViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/LocalAuthentication/LocalAuthenticationViewController.swift index dd39f827..19b0dd56 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/LocalAuthentication/LocalAuthenticationViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/LocalAuthentication/LocalAuthenticationViewController.swift @@ -19,10 +19,12 @@ import UIKit import ObvUI +import ObvUICoreData +import ObvSettings class LocalAuthenticationViewController: UIViewController { - + private enum AuthenticationStatus { case initial case shouldPerformLocalAuthentication @@ -60,11 +62,14 @@ class LocalAuthenticationViewController: UIViewController { fatalError("init(coder:) has not been implemented") } + override var canBecomeFirstResponder: Bool { true } + override func viewDidLoad() { super.viewDidLoad() // Use the LaunchScreen's view to ensure a smooth transition let launchScreenStoryBoard = UIStoryboard(name: "LaunchScreen", bundle: nil) guard let launchViewController = launchScreenStoryBoard.instantiateInitialViewController() else { assertionFailure(); return } + launchViewController.view.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(launchViewController.view) self.view.pinAllSidesToSides(of: launchViewController.view) @@ -91,6 +96,8 @@ class LocalAuthenticationViewController: UIViewController { ] NSLayoutConstraint.activate(constraints) + view.backgroundColor = .red + configure() } @@ -181,7 +188,9 @@ class LocalAuthenticationViewController: UIViewController { @objc private func authenticateButtonTapped() { Task { - await performLocalAuthentication(uptimeAtTheTimeOfChangeoverToNotActiveState: nil) + await performLocalAuthentication( + customPasscodePresentingViewController: self, + uptimeAtTheTimeOfChangeoverToNotActiveState: nil) } } @@ -191,12 +200,17 @@ class LocalAuthenticationViewController: UIViewController { } @MainActor - func performLocalAuthentication(uptimeAtTheTimeOfChangeoverToNotActiveState: TimeInterval?) async { + func performLocalAuthentication(customPasscodePresentingViewController: UIViewController, uptimeAtTheTimeOfChangeoverToNotActiveState: TimeInterval?) async { guard let localAuthenticationDelegate = self.localAuthenticationDelegate else { assertionFailure() return } - let laResult = await localAuthenticationDelegate.performLocalAuthentication(viewController: self, uptimeAtTheTimeOfChangeoverToNotActiveState: uptimeAtTheTimeOfChangeoverToNotActiveState, localizedReason: Strings.startOlvid) + let policy = ObvMessengerSettings.Privacy.localAuthenticationPolicy + let laResult = await localAuthenticationDelegate.performLocalAuthentication( + customPasscodePresentingViewController: customPasscodePresentingViewController, + uptimeAtTheTimeOfChangeoverToNotActiveState: uptimeAtTheTimeOfChangeoverToNotActiveState, + localizedReason: Strings.startOlvid, + policy: policy) switch laResult { case .authenticated(let authenticationWasPerformed): await setAuthenticationStatus(to: .authenticated(authenticationWasPerformed: authenticationWasPerformed)) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localizable.xcstrings b/iOSClient/ObvMessenger/ObvMessenger/Localizable.xcstrings new file mode 100644 index 00000000..7586a105 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Localizable.xcstrings @@ -0,0 +1,19991 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + } + } + }, + " " : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + } + } + }, + "-" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "-" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "-" + } + } + } + }, + "%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + } + } + }, + "%@ (%@)" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@ (%2$@)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + } + } + }, + "%@ invites you to discuss on Olvid" : { + "comment" : "Subject used when inviting another user to Olvid, i.e., when sharing ones owned identity using, e.g., an email", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ would like to discuss with you on Olvid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ aimerait discuter avec vous sur Olvid" + } + } + } + }, + "%@ invites you to discuss on Olvid. To accept, please click the link below:\n\n%@" : { + "comment" : "Body used when inviting another user to Olvid, i.e., when sharing ones owned identity using, e.g., an email or message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ would like to discuss with you on Olvid. To invite them, please click the link below:\n\n%@\n" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ aimerait discuter avec vous sur Olvid. Pour l'y inviter, veuillez cliquer sur le lien suivant :\n\n%@\n" + } + } + } + }, + "%@ is already part of your trusted contacts 🙌. Do you still wish to proceed?" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ is already part of your trusted contacts 🙌. Do you still wish to proceed?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ fait déjà partie de vos contacts 🙌. Voulez-vous quand même poursuivre ?" + } + } + } + }, + "%@ wants to introduce you to %@" : { + "comment" : "Notification body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ wants to introduce you to %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ aimerait vous présenter à %2$@" + } + } + } + }, + "%@_INVITES_YOU_TO_ONE_TO_ONE_DISCUSSION" : { + "comment" : "Notification body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ invites you to have a private discussion. If you accept, this user will be added to your contacts." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ vous invite à discuter en privé. Si vous acceptez, cet utilisateur sera ajouté à vos contacts." + } + } + } + }, + "%@/%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@/%2$@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + } + } + }, + "%lld" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + } + } + }, + "%lld_DELETED_BACKUPS" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "one deleted backup" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld deleted backups" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "no deleted backups" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une sauvegarde supprimée" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld sauvegardes supprimées" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pas de sauvegarde supprimée" + } + } + } + } + } + } + }, + "%lld_GROUP_MEMBERS" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "One other group member:" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld other group members:" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un autre membre dans ce groupe :" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld membres dans ce groupe :" + } + } + } + } + } + } + }, + "%lu_GROUP_MEMBERS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lu members in this group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lu membres dans ce groupe" + } + } + } + }, + "⚠️ Latest failed upload: %@" : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "⚠️ Latest failed upload: %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "⚠️ Dernière erreur : %@" + } + } + } + }, + "😧 Oups..." : { + "comment" : "Oups word, with Emoji, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "😧 Oops..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "😧 Oups..." + } + } + } + }, + "Abort" : { + "comment" : "Abort word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abort" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abandonner" + } + } + } + }, + "About" : { + "comment" : "About word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "About" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "À propos" + } + } + } + }, + "ABOUT_DISKUSAGEVIEW_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This screen allows you to evaluate the storage used by Olvid on your %@. Beware though, the total storage is not the sum of all the values indicated here (as Olvid uses deduplication techniques). To evaluate the total storage, it is in general sufficient to consider the values referenced by the database" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet écran permet d'évaluer l'espace de stockage occupé par Olvid sur votre %@. Attention cependant, le stockage total n'est pas la somme des valeurs indiquées ici (Olvid utilise des techniques de déduplication). Pour évaluer le stockage total, il suffit en général de considérer les valeurs référencées depuis la base de données." + } + } + } + }, + "Accept" : { + "comment" : "Accept word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accept" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accepter" + } + } + } + }, + "ACCESS_TO_ADVANCED_SETTINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Access to advanced settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accès aux paramètres avancés" + } + } + } + }, + "Actions" : { + "comment" : "Actions word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actions" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actions" + } + } + } + }, + "ACTIVATE_NEW_LICENSE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activate new license" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer la licence" + } + } + } + }, + "ACTIVATE_THIS_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activate this device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer cet appareil" + } + } + } + }, + "Active" : { + "comment" : "Active word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Active" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Active" + } + } + } + }, + "Add new contact" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add new contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un nouveau contact" + } + } + } + }, + "ADD_A_NEW_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add a device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un appareil" + } + } + } + }, + "ADD_ANOTHER_PROFILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add another profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un autre profil" + } + } + } + }, + "ADD_CONTACT_BUTTON" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un contact" + } + } + } + }, + "ADD_CONTACT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add a contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un contact" + } + } + } + }, + "ADD_GROUP_MEMBERS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add group members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter des membres" + } + } + } + }, + "ADD_MEMBER_BY_TAPPING_EDIT_GROUP_MEMBERS_BUTTON" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are the only member of this group 😅. Start adding group members by tapping the \"Edit members\" button above ☝️." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous êtes le seul membre de ce groupe 😅. Ajoutez des membres en touchant le bouton \"Modifier les membres\" ☝️." + } + } + } + }, + "ADD_OWNED_IDENTITY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add a profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un profil" + } + } + } + }, + "ADD_SELECTED_CONTACTS_TO_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add contacts to call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter les contacts à l'appel" + } + } + } + }, + "ADD_TO_CONTACTS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add to contacts" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter aux contacts" + } + } + } + }, + "ADDING_KEYCLOAK_CONTACT_FAILED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Failed to add contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'ajout de contact a échoué" + } + } + } + }, + "Admin" : { + "comment" : "Admin word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Admin" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Administrateur" + } + } + } + }, + "Advanced" : { + "comment" : "Advanced word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Advanced" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Avancé" + } + } + } + }, + "After" : { + "comment" : "After word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "After" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Après" + } + } + } + }, + "AFTER_FIVE_MINUTE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "after 5 minutes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "après 5 minutes" + } + } + } + }, + "AFTER_ONE_MINUTE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "after 1 minute" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "après 1 minute" + } + } + } + }, + "AFTER_TEN_SECONDS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "after 10 seconds" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "après 10 secondes" + } + } + } + }, + "AFTER_THIRTY_SECONDS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "after 30 seconds" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "après 30 secondes" + } + } + } + }, + "AFTER_TWO_MINUTE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "after 2 minutes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "après 2 minutes" + } + } + } + }, + "ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_BACKGROUND" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When Olvid enters background" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quand Olvid passe en arrière-plan" + } + } + } + }, + "ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_MANUAL_SWITCHING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When manually switching profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "En changeant de profil manuellement" + } + } + } + }, + "ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_SCREEN_LOCK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When Olvid lock screen activates" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Au verrouillage de l'écran d'Olvid" + } + } + } + }, + "ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please choose when an open profile should be closed. By default, hidden profiles will be closed when manually switching to another profile." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez choisir le bon moment pour fermer un profil masqué. Par défaut, un profil masqué est fermé quand vous basculez manuellement vers un autre profil." + } + } + } + }, + "ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When to close an open hidden profile?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quand désirez-vous fermer un profil masqué ?" + } + } + } + }, + "ALERT_FOR_EDITING_NICKNAME_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your nickname is for your eyes only and allows you to easily distinguish your profiles from each other." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre pseudo n'est visible que par vous et vous permet de facilement distinguer vos profils les uns des autres." + } + } + } + }, + "ALERT_FOR_EDITING_NICKNAME_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit my nickname" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Éditer mon pseudo" + } + } + } + }, + "ALERT_MSG_OUTGOING_CALL_FAILED_USER_DENIED_RECORDING" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To make this call, you need to allow Olvid to access the microphone. Open Settings and turn on the Microphone" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour passer cet appel, vous devez autoriser Olvid à accéder au micro. Allez dans les Réglages et activez le Micro." + } + } + } + }, + "ALERT_SHOULD_ACTIVATE_SCREEN_LOCK_AFTER_CREATING_HIDDEN_PROFILE_ACTION_GOTO_PRIVACY_SETTINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Go to privacy settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aller dans les paramètres" + } + } + } + }, + "ALERT_SHOULD_ACTIVATE_SCREEN_LOCK_AFTER_CREATING_HIDDEN_PROFILE_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You chose to close any open hidden profile when the Olvid lock screen activate. However you have not configured any lock screen.\n\nIn the current setting, hidden profiles will only be closed when manually switching to another profile.\n\nPlease go to the privacy settings to configure a lock screen." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez choisi de fermer les profils masqués ouverts au verrouillage de l'écran d'Olvid. Cependant, vous n'avez pas configuré d'écran de verrouillage.\n\nAvec le réglage actuel, les profils masqués ne seront fermés que si vous basculez manuellement vers un autre profil.\n\nPour configurer un écran de verrouillage, allez dans les paramètres de « Vie privée »." + } + } + } + }, + "ALERT_SHOULD_ACTIVATE_SCREEN_LOCK_AFTER_CREATING_HIDDEN_PROFILE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid lock screen not configured" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Écran de verrouillage non configuré" + } + } + } + }, + "ALERT_VOICE_MESSAGE_FAILED_USER_DENIED_RECORDING" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To record a voice message, you need to allow Olvid to access the microphone. Open Settings and turn on the Microphone" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour enregistrer un message vocal, vous devez autoriser Olvid à accéder au micro. Allez dans les Réglages et activez le Micro." + } + } + } + }, + "All logs" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All logs" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tous les logs" + } + } + } + }, + "ALL_ATTACHMENTS_WILL_BE_AUTOMATICALLY_DOWNLOADED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All attachments will be automatically downloaded." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toutes les pièces jointes seront téléchargées automatiquement." + } + } + } + }, + "Allow all api key activations" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow all api key activations" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permettre l'activation de toute clé d'API" + } + } + } + }, + "ALLOW_CUSTOM_KEYBOARDS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow custom keyboards" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autoriser les claviers personnalisés" + } + } + } + }, + "Always" : { + "comment" : "Always word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Always" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toujours" + } + } + } + }, + "An invitation requires your attention!" : { + "comment" : "Notification title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "An invitation requires your attention!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une invitation requiert votre attention !" + } + } + } + }, + "ANOTHER_PROFILE_HAS_VALID_API_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This profile benefits from the license of another profile." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce profil bénéficie de la licence d'un autre profil." + } + } + } + }, + "ANSWERED_ON_ANOTHER_OWNED_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Answered on another device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accepté sur un autre appareil" + } + } + } + }, + "API Key" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "API Key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clé d'API" + } + } + } + }, + "APP_DIRECTORIES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Directories within the app" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Répertoires de l'app" + } + } + } + }, + "ARCHIVE" : { + "comment" : "Archive word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Archive" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Archiver" + } + } + } + }, + "ARE_YOU_SURE_CREATE_NEW_OWNED_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you wish to create this new group now?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous créer ce nouveau groupe maintenant ?" + } + } + } + }, + "ARE_YOU_SURE_PUBLISH_EDITED_OWNED_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you you wish to publish the group changes?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous publier les modifications ou les annuler ?" + } + } + } + }, + "ARE_YOU_SURE_PUBLISH_NEW_OWNED_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Once published, all your contacts will receive your new ID." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une fois publiée, la nouvelle version de votre ID s'affichera chez tous vos contacts." + } + } + } + }, + "ARE_YOU_SURE_YOU_WANT_TO_ABORT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Are you sure you want to abort?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous vraiment abandonner ?" + } + } + } + }, + "ARE_YOU_SURE_YOU_WANT_TO_DECLINE_THIS_INVITATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Are you sure you want to decline this invitation?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous vraiment décliner cette invitation ?" + } + } + } + }, + "ARE_YOU_SURE_YOU_WANT_TO_IGNORE_THIS_INVITATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Are you sure you want to ignore this invitation?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous vraiment ignorer cette invitation ?" + } + } + } + }, + "At least one of the channel establishment failed to restart" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "At least one of the channel establishment failed to restart" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erreur lors du redémarrage de l'établissement d'un canal sécurisé" + } + } + } + }, + "AT_LEAST_ONE_UNHIDDEN_PROFILE_MUST_EXIST_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You must have at least one visible profile. Since this profile is the only one you have, you cannot hide it. Nonetheless, you can create a new profile and try again." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous devez toujours avoir au moins un profil visible. Comme ce profil est le seul que vous ayez, vous ne pouvez pas le masquer. Vous pouvez néanmoins créer un nouveau profil et essayer à nouveau." + } + } + } + }, + "AT_LEAST_ONE_UNHIDDEN_PROFILE_MUST_EXIST_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This profile cannot be hidden at the moment" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible de masquer ce profil pour le moment" + } + } + } + }, + "Attachments smaller than %@ will be automatically downloaded. Larger attachments will require manual download." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attachments smaller than %@ will be automatically downloaded. Larger attachments will require manual download." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les pièces jointes de taille inférieure à %@ seront téléchargées automatiquement. Les pièces jointes de plus grande taille devront être téléchargées manuellement." + } + } + } + }, + "ATTACHMENTS_INFO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attachments" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pièces jointes" + } + } + } + }, + "AUDIO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Audio" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Audio" + } + } + } + }, + "Authenticate" : { + "comment" : "Authenticate word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authenticate" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier" + } + } + } + }, + "AUTHENTICATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authenticate" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier" + } + } + } + }, + "AUTHENTICATION_FAILED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authentication failed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'authentification a échoué" + } + } + } + }, + "AUTHENTICATION_REQUIRED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authentication Required" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authentification Requise" + } + } + } + }, + "AUTHENTICATION_REQUIRED_TOKEN_EXPIRED_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your Olvid identity is managed by your company's identity provider. You need to re-authenticate with this identity provider to continue." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre identité Olvid est gérée par le fournisseur d'identité de votre entreprise. Il faut vous réauthentifier auprès de ce fournisseur d'identité pour continuer." + } + } + } + }, + "AUTHENTICATION_REQUIRED_USER_ID_CHANGED_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You Olvid ID is managed by your company's identity provider. It seems you authenticated as a different user than usual. This is not supported.\n\nPlease contact your administrator or re-authenticate as the correct user." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre ID Olvid est géré par le fournisseur d'identité de votre entreprise. Il semblerait que vous vous soyez authentifié avec un compte différent du compte habituel. Ceci n'est pas supporté.\n\nContactez votre adminisrateur ou réauthentifiez-vous avec le compte habituel." + } + } + } + }, + "Authorization Required" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authorization Required" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autorisation Requise" + } + } + } + }, + "AUTO_ACCEPT_GROUP_%llu_INVITATIONS_ALERT_ACCEPT_ACTION_TITLE" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accept the pending group invitation now" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accept the %llu pending group invitations now" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accepter l'invitation de groupe maintenant" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accepter les %llu invitations de groupe maintenant" + } + } + } + } + } + } + }, + "AUTO_ACCEPT_GROUP_%llu_INVITATIONS_ALERT_MESSAGE" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifying this setting requires you to accept one pending group invitation." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifying this setting requires you to accept %llu pending group invitations." + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour changer ce paramètre, vous devez accepter une invitation de groupe en attente." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour changer ce paramètre, vous devez accepter %llu invitations de groupe en attente." + } + } + } + } + } + } + }, + "AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Heads up!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Avant d'aller plus loin…" + } + } + } + }, + "AUTO_ACCEPT_GROUP_INVITES_FROM" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatically accept group invitations from…" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accepter automatiquement les invitations de groupe de…" + } + } + } + }, + "AUTO_READ_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auto read" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouverture automatique" + } + } + } + }, + "AUTO_READ_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatically open ephemeral messages. This only applies to messages whose ephemerality was set at the discussion level and not to messages for which the sender chooses a specific ephemerality." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir automatiquement les messages éphémères. Cette ouverture automatique ne s'applique qu'aux messages dont l'éphémérité est due aux paramètres choisis pour la discussion entière, et pas aux messages dont l'éphémérité est spécifiquement choisie par l'envoyeur." + } + } + } + }, + "Automatic iCloud backup cleaning" : { + "comment" : "Button title allowing to enable automatic backup cleaning", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatic old iCloud backups deletion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suppression automatique des anciennes sauvegardes iCloud" + } + } + } + }, + "AUTOMATIC_BACKUP" : { + "comment" : "Table view section header", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatic backup to iCloud" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarde automatique vers iCloud" + } + } + } + }, + "AUTOMATIC_BACKUP_COULD_NOT_BE_ENABLED_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatic backup could not be enabled" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il n'a pas été possible d'activer les sauvegardes automatiques" + } + } + } + }, + "AUTOMATIC_BACKUP_EXPLANATION" : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activating this option allows to perform an automatic encrypted backup of your contacts, groups, and settings (messages and attachments are not backuped). Do not worry, this backup is encrypted 😇." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer cette option permet d'effectuer une sauvegarde automatique de vos contacts, groupes et paramètres (les messages et pièces jointes ne sont pas sauvegardés)." + } + } + } + }, + "AUTOMATIC_ICLOUD_BACKUPS" : { + "comment" : "Cell title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatic iCloud backups" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegardes iCloud automatiques" + } + } + } + }, + "Available subscription plans" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Available subscription plans" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Offres d'abonnement" + } + } + } + }, + "Back" : { + "comment" : "Back word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Back" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retour" + } + } + } + }, + "Background App Refresh is disabled" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Background App Refresh is disabled" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'actualisation en arrière-plan est désactivée" + } + } + } + }, + "Backup" : { + "comment" : "Backup word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Backup" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarde" + } + } + } + }, + "BACKUP_%llu_COUNT" : { + "comment" : "Header for n backups", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "One backup" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%llu backups" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No backups" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une sauvegarde" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%llu sauvegardes" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune sauvegarde" + } + } + } + } + } + } + }, + "BACKUP_AND_SHARE_NOW" : { + "comment" : "Button title allowing to backup now", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Backup and share now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarder et partager" + } + } + } + }, + "BACKUP_AND_UPLOAD_NOW" : { + "comment" : "Button title allowing to backup and upload now", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Backup and upload to iCloud now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarder et télécharger vers iCloud" + } + } + } + }, + "Bad QR code" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bad QR code" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mauvais code QR" + } + } + } + }, + "BILLING_GRACE_PERIOD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Billing Grace Period" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Délai de grâce" + } + } + } + }, + "BIOMETRY_NOT_ENROLLED_ERROR_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To use this feature, you need to set up either Face ID or Touch ID in the Settings app." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour utiliser cette fonctionnalité, vous devez configurer Face ID ou Touch ID dans l'app Réglages de votre appareil." + } + } + } + }, + "BIOMETRY_NOT_ENROLLED_ERROR_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please set up Face ID or Touch ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il vous faut configurer Face ID ou Touch ID" + } + } + } + }, + "BUILT_IN_SPEAKER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Speaker" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Haut-parleur" + } + } + } + }, + "BUTON_TITLE_ACTIVATE_NOTIFICATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow notifications" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer les notifications" + } + } + } + }, + "BUTON_TITLE_REQUEST_RECORD_PERMISSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grant access to the microphone" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autoriser le micro" + } + } + } + }, + "BUTTON_LABEL_CHECK_SUBSCRIPTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Check subscription status" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vérifier votre abonnement" + } + } + } + }, + "BUTTON_LABEL_MANAGE_KEYCLOAK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Switch to a managed ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Passer à un ID géré" + } + } + } + }, + "BUTTON_LABEL_REMIND_ME_LATER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remind me later" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Me rappeler plus tard" + } + } + } + }, + "BUTTON_LABEL_UPDATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mettre à jour" + } + } + } + }, + "BUTTON_LABEL_UPDATE_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mettre la clé à jour" + } + } + } + }, + "BUTTON_TITLE_AUTHENTICATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authenticate" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier" + } + } + } + }, + "BUY_FAILED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The subscription failed." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La demande d'abonnement a échoué." + } + } + } + }, + "BUY_SUCCEEDED_BUT_SUBSCRIPTION_EXPIRED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Although the subscription was successful, it seems your subscription expired." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La demande d'abonnement a été traitée, mais votre abonnement a expiré." + } + } + } + }, + "Cache management" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cache management" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gestion du cache" + } + } + } + }, + "Call" : { + "comment" : "Call word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appeler" + } + } + } + }, + "CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appeler" + } + } + } + }, + "CALL_BACK" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Call back" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rappeler" + } + } + } + }, + "CALL_STATE_BUSY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Busy" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Occupé" + } + } + } + }, + "CALL_STATE_CALL_REJECTED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Call rejected" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel refusé" + } + } + } + }, + "CALL_STATE_CONNECTING_TO_PEER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connection..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connexion..." + } + } + } + }, + "CALL_STATE_CONNECTION_TIMEOUT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connection timeout" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Délai de connexion expiré" + } + } + } + }, + "CALL_STATE_GETTING_TURN_CREDENTIALS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authentication..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authentification..." + } + } + } + }, + "CALL_STATE_HANGED_UP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hanged up" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel raccroché" + } + } + } + }, + "CALL_STATE_INCOMING_CALL_MESSAGE_WAS_POSTED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connecting..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connexion..." + } + } + } + }, + "CALL_STATE_INITIALIZING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Initializing call..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Initialisation de l'appel..." + } + } + } + }, + "CALL_STATE_KICKED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Excluded" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exclue" + } + } + } + }, + "CALL_STATE_NEW" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New call..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvel appel..." + } + } + } + }, + "CALL_STATE_RECONNECTING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reconnection" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reconnexion" + } + } + } + }, + "CALL_STATE_RINGING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ringing..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sonnerie..." + } + } + } + }, + "Camera" : { + "comment" : "Camera word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Camera" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appareil photo" + } + } + } + }, + "Cancel" : { + "comment" : "Cancel word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancel" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuler" + } + } + } + }, + "CANCEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "CANCEL" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuler" + } + } + } + }, + "CANNOT_FETCH_LATEST_UPLOAD" : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cannot fetch latest upload. You might need to configure your iCloud account." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible de récuperer la dernière sauvegarde. Avez-vous bien configuré iCloud ?" + } + } + } + }, + "CAPABILITIES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Capabilities" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Capacités" + } + } + } + }, + "CAPABILITY_GROUPS_V2" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groups v2" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groupes v2" + } + } + } + }, + "CAPABILITY_ONE_TO_ONE_CONTACTS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "One2One contacts " + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contacts One2One" + } + } + } + }, + "CAPABILITY_WEBRTC_CONTINUOUS_ICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "VoIP v2" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "VoIP v2" + } + } + } + }, + "Category" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Category" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Catégorie" + } + } + } + }, + "CERTIFIED_BY_IDENTITY_PROVIDER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Certified by identity provider" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Certifiée par un fournisseur d'identité" + } + } + } + }, + "Chat" : { + "comment" : "Chat word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chat" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discuter" + } + } + } + }, + "Choose Discussion" : { + "comment" : "Used within a HUD to indicate to the user that she should choose a discussion for AirDrop'ed files", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose a Discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir une Discussion" + } + } + } + }, + "CHOOSE_ACTIVE_DEVICE_SUBTITLE_WHEN_MULTIDEVICE_FALSE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Other devices will be deactivated within 30 days." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les autres appareils seront désactivés dans les 30 jours." + } + } + } + }, + "CHOOSE_ACTIVE_DEVICE_SUBTITLE_WHEN_MULTIDEVICE_TRUE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Here is your current device list, including the device you are about to add." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voici vos appareils actuels, ainsi que celui que vous vous apprêtez à ajouter." + } + } + } + }, + "CHOOSE_ACTIVE_DEVICE_TITLE_WHEN_MULTIDEVICE_FALSE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose which device you wish to keep active" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisissez quel appareil vous souhaitez maintenir actif" + } + } + } + }, + "CHOOSE_ACTIVE_DEVICE_TITLE_WHEN_MULTIDEVICE_TRUE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You have a multi-device subscription" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous disposez d'un abonnement multi-appareils" + } + } + } + }, + "CHOOSE_BETWEEN_GLOBAL_AND_LOCAL_OWNED_IDENTITY_DELETION_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you choose to delete your profile from all your devices, your profile will also be deleted from your contact devices, the groups you created will be disbanded if you are the only administrator, you will leave other groups.\n\nIf you choose to only delete your profile from this device, your other devices (if you have any) won't be affected (and you'll get a chance to restore an existing backup if you wish)." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous choisissez de supprimer votre profil sur tous vos appareils, ce profil n'apparaîtra plus dans le carnet d'adresses de vos contacts, les groupes que vous gérez seront dissous si vous en êtes le seul administrateur, vous quitterez les groupes dont vous êtes membre.\n\nSi vous choisissez de supprimer votre profil sur cet appareil uniquement, vos autres appareils (si vous en avez) ne seront pas affectés (et vous pourrez encore restaurer une sauvegarde existante)." + } + } + } + }, + "CHOOSE_BETWEEN_GLOBAL_AND_LOCAL_OWNED_IDENTITY_DELETION_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you wish to delete your profile from all your devices or from this device only?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous supprimer ce profil sur tous vos appareils ou seulement sur celui-ci ?" + } + } + } + }, + "CHOOSE_DEVICE_NAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose a device name" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisissez un nom pour l'appareil" + } + } + } + }, + "CHOOSE_GLOBAL_OWNED_IDENTITY_DELETION_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete this profile from all my devices" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer sur tous mes appareils" + } + } + } + }, + "CHOOSE_GROUP_CUSTOM_NAME_AND_PHOTO_TITLE" : { + "comment" : "View controller title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Custom photo and group name" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Photo et nom personalisés" + } + } + } + }, + "CHOOSE_GROUP_MEMBERS" : { + "comment" : "View controller title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose group members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir les participants" + } + } + } + }, + "CHOOSE_GROUP_TYPE_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose between legacy or new groups" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir entre les anciens et les nouveaux groupes" + } + } + } + }, + "CHOOSE_GROUP_TYPE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose group type" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir le type de groupe" + } + } + } + }, + "CHOOSE_GROUP_V1" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group V1" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groupe V1" + } + } + } + }, + "CHOOSE_GROUP_V2" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group V2" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groupe V2" + } + } + } + }, + "CHOOSE_LOCAL_OWNED_IDENTITY_DELETION_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete this profile from this device only" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer sur cet appareil uniquement" + } + } + } + }, + "CHOOSE_OR_%lld_CHOSEN_DISCUSSION" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "one selected" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld selected" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "choose" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "une sélectionnée" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld sélectionnées" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "choisir" + } + } + } + } + } + } + }, + "CHOOSE_PASSWORD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose a password" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisissez un mot de passe" + } + } + } + }, + "CHOOSE_PICTURE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose a photo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir une photo" + } + } + } + }, + "CHOOSE_YOUR_BACKUP_FILE_ONBOARDING_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose your backup file" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisissez votre fichier de sauvegarde" + } + } + } + }, + "CHOSEN_GROUP_MEMBERS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chosen group members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Participants choisis" + } + } + } + }, + "Clean" : { + "comment" : "Clean word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clean" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nettoyer" + } + } + } + }, + "CLEAN_LATEST_BACKUP_FOR_CURRENT_DEVICE_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please note that you are about to delete the latest iCloud backup." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attention, vous vous apprêtez à supprimer la sauvegarde iCloud la plus récente." + } + } + } + }, + "CLEAN_LATEST_BACKUP_FOR_CURRENT_DEVICE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete the latest iCloud backup?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer la sauvegarde iCloud la plus récente ?" + } + } + } + }, + "CLEAN_LATEST_BACKUP_FOR_OTHER_DEVICE_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please note that you are about to delete the latest iCloud backup of another device." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attention, vous vous apprêtez à supprimer la sauvegarde iCloud la plus récente d'un autre appareil." + } + } + } + }, + "CLEAN_LATEST_BACKUP_FOR_OTHER_DEVICE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete the latest iCloud backup of another device?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer la sauvegarde iCloud la plus récente d'un autre appareil ?" + } + } + } + }, + "CLEAN_OLD_BACKUPS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete old iCloud backups" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer les anciennes sauvegardes iCloud" + } + } + } + }, + "CLEAN_OLD_BACKUPS_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete all iCloud backups but the last one." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer les anciennes sauvegardes iCloud pour ne garder que la plus récente." + } + } + } + }, + "CLEAN_OLD_BACKUPS_ON_ALL_DEVICES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete backups for all devices" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer pour tous les appareils" + } + } + } + }, + "CLEAN_OLD_BACKUPS_ON_CURRENT_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete backups for this device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer pour cet appareil" + } + } + } + }, + "CLEAN_OLD_BACKUPS_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete old iCloud backups?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer les anciennes sauvegardes iCloud ?" + } + } + } + }, + "Clear cache" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clear cache" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer le cache" + } + } + } + }, + "CLEAR_ALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clear" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recommencer" + } + } + } + }, + "CLEAR_ALL_DEVICES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clear all devices" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser tous les appareils" + } + } + } + }, + "CLEAR_ALL_OTHER_OWNED_DEVICES_ALERT_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clearing all devices will reset all secure channels with them, perform a fresh discovery of your devices, then re-create all secure channels with them. Although all these steps are automatic, they may require some time. Recreating the secure channels requires your other devices to be online." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette réinitialisation va détruire les canaux sécurisés avec vos autres appareils, rafraîchir la liste de vos appareils et recréer les canaux sécurisés. Bien que tout ceci soit automatique, il se peut que cela demande un peu de temps. La création des canaux sécurisés nécessite que vos autres appareils soient en ligne." + } + } + } + }, + "CLEAR_ALL_OTHER_OWNED_DEVICES_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clear all devices?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser tous les appareils ?" + } + } + } + }, + "CLIENT_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Client Id" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Client Id" + } + } + } + }, + "CLIENT_SECRET" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Client secret" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Secret client" + } + } + } + }, + "CLONE_THIS_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clone this group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cloner ce groupe" + } + } + } + }, + "CLONE_THIS_GROUP_V1_TO_GROUP_V2" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clone this group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cloner ce groupe" + } + } + } + }, + "CLONED_GROUP_NAME_FROM_ORIGINAL_NAME_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy of %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copie de %@" + } + } + } + }, + "CLOSE_OPEN_HIDDEN_PROFILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Close open hidden profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fermer un profil masqué ouvert" + } + } + } + }, + "Completely" : { + "comment" : "Completely word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Completely" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Totalement" + } + } + } + }, + "COMPUTE_CKRECORD_COUNT" : { + "comment" : "Button title allowing to show backup list", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Compute iCloud record count" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calculer le nombre d'entrées iCloud" + } + } + } + }, + "CONFIGURATION_SCAN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration scan" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scan de configuration" + } + } + } + }, + "CONFIGURE_BACKUPS_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Setup backups" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramétrer les sauvegardes" + } + } + } + }, + "CONFIGURE_YOUR_IDENTITY_PROVIDER_MANUALLY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manual configuration of your identity provider" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration manuelle de votre fournisseur d'identité" + } + } + } + }, + "Confirm invite" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirm invite" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirmer l'invitation" + } + } + } + }, + "CONFIRM_PASSWORD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirm password" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirmez le mot de passe" + } + } + } + }, + "CONFIRM_YOUR_PASSCODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirm your passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirmez votre code personnalisé" + } + } + } + }, + "Confirmation" : { + "comment" : "Confirmation word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirmation" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirmation" + } + } + } + }, + "Congratulations!" : { + "comment" : "View controller title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Congratulations!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bravo !" + } + } + } + }, + "Contact cannot be deleted for now" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This user cannot be deleted for now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet utilisateur ne peut pas être supprimé pour le moment" + } + } + } + }, + "Contact Introduction Performed" : { + "comment" : "UIAlert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contact Introduction Performed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les présentations sont faites" + } + } + } + }, + "CONTACT_HAS_N_DEVICES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ has %#@count@" + }, + "substitutions" : { + "count" : { + "formatSpecifier" : "d", + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "one device" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%arg devices" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "no device" + } + } + } + } + } + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ %#@count@" + }, + "substitutions" : { + "count" : { + "formatSpecifier" : "d", + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "a un appareil" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "a %arg appareils" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "n'a aucun appareil" + } + } + } + } + } + } + } + } + }, + "CONTACT_IS_NOT_ACTIVE_EXPLANATION_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This contact was revoked by your company's identity provider. Their Olvid ID may have been compromised and the security of your communications cannot be guaranteed.\n\nIf you are sure your contact's Olvid ID was never compromised you may manually unblock them.\nPlease contact your administrator for more details." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce contact a été révoqué par le fournisseur d'identité de votre société. Son ID Olvid a peut-être été compromis et la sécurité de vos communications ne peut être garantie.\n\nSi vous êtes certain que l'ID Olvid de votre contact n'a jamais été compromis, vous pouvez le débloquer manuellement.\nVeuillez contacter votre administrateur pour plus d'informations." + } + } + } + }, + "CONTACT_IS_NOT_ACTIVE_EXPLANATION_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contact revoked by your company's identity provider" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contact révoqué par le fournisseur d'identité de votre société" + } + } + } + }, + "CONTACT_SORT_ORDER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contact sort order..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordre de tri des contacts..." + } + } + } + }, + "Contacts" : { + "comment" : "Contacts word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contacts" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contacts" + } + } + } + }, + "CONTACTS_AND_GROUPS" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contacts & Groups" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contacts & Groupes" + } + } + } + }, + "CONTACTS_SORT_ORDER" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contact sort order" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordre de tri des contacts" + } + } + } + }, + "Copy" : { + "comment" : "Copy word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier" + } + } + } + }, + "Copy App Database URL" : { + "comment" : "Button title, only in dev mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy App Database URL" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier l'URL des bases de données" + } + } + } + }, + "Copy Documents URL" : { + "comment" : "Button title, only in dev mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy Documents URL" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier l'URL des Documents" + } + } + } + }, + "Copy text" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy text" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier le texte" + } + } + } + }, + "Copy your Id" : { + "comment" : "Action of an alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy your ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier votre ID" + } + } + } + }, + "COPY_ERROR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy error" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier l'erreur" + } + } + } + }, + "COPY_ERROR_TO_PASTEBOARD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy error to clipboard" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier l'erreur dans le presse-papiers" + } + } + } + }, + "COPY_MY_ID_TO_CLIPBOARD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy my ID to clipboard" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier mon ID dans le presse-papiers" + } + } + } + }, + "Could not delete group" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Could not delete group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le groupe n'a pas pu être supprimé" + } + } + } + }, + "COULD_NOT_PERFORM_OWNED_IDENTITY_TRANSFER_ALERT_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The profile could not be transfered. Please try again. If the problem persists, please contact %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le profil n'a pas pu être transféré. Si ce problème persisted, contactez %@." + } + } + } + }, + "COULD_NOT_PERFORM_OWNED_IDENTITY_TRANSFER_ALERT_%@_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The profile could not be transfered. Please try again. If the problem persists, please contact %@. The error is: %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le profil n'a pas pu être transféré. Si ce problème persisted, contactez %@. L'erreur est : %@" + } + } + } + }, + "COULD_NOT_QUERY_SERVER_FOR_API_KEY_ELEMENTS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We could not obtain the permissions associated to the API key. Please check your network connection and try again." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous n'avons pas réussi à déterminer les permissions associées à la clé d'API. Veuillez vérifier votre connexion internet et essayer à nouveau." + } + } + } + }, + "COULD_NOT_SWITCH_TO_MANAGED_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Could not switch to a managed ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il n'a pas été possible de passer à un ID géré" + } + } + } + }, + "count attachments" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "One attachment" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u attachments" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No attachment" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une pièce jointe" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u pièces jointes" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune pièce jointe" + } + } + } + } + } + } + }, + "COUNT_BASED_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Count based" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "En nombre" + } + } + } + }, + "COUNT_BASED_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Old messages will be regularly deleted, so as to keep the number of message per discussion less than the value you enter here." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les anciens messages de vos discussions seront régulièrement supprimés afin que le nombre maximal de messages par discussion reste inférieur à la limite que vous indiquez ici." + } + } + } + }, + "COUNT_BASED_SINGLE_DISCUSSION_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Old messages will be regularly deleted from this discussion, so as to keep the number of message less than the value you enter here." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les anciens messages de cette discussion seront régulièrement supprimés afin que leur nombre reste inférieur à la limite que vous indiquez ici." + } + } + } + }, + "Create" : { + "comment" : "Create word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer" + } + } + } + }, + "Create groups" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create groups" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer des groupes" + } + } + } + }, + "CREATE_FIRST_GROUP_WITH_OWN_PERMISSION_ADMIN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create your first group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créez votre premier groupe" + } + } + } + }, + "CREATE_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create the group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer le groupe" + } + } + } + }, + "CREATE_GROUP_WITH_OWN_PERMISSION_ADMIN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create a group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer un groupe" + } + } + } + }, + "CREATE_MY_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create the group now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer le groupe" + } + } + } + }, + "CREATE_MY_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create my profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer mon profil" + } + } + } + }, + "CREATE_MY_PASSCODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create my passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer mon code personnalisé" + } + } + } + }, + "CREATE_PASSWORD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create password" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer le mot de passe" + } + } + } + }, + "CREATE_YOUR_PASSCODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create your passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créez votre code personnalisé" + } + } + } + }, + "Current backup key generated: %@" : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Current backup key generated: %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clé de sauvegarde générée: %@" + } + } + } + }, + "CURRENT_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet appareil" + } + } + } + }, + "CURRENT_DEVICE_LOWERCAES_WITH_PARENTHESES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "(this device)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "(cet appareil)" + } + } + } + }, + "CURRENT_LICENSE_STATUS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Current license status" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Licence actuelle" + } + } + } + }, + "CUSTOM_KEYBOARD_MANAGEMENT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Custom keyboards management" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gestion des claviers personnalisés" + } + } + } + }, + "CUSTOM_KEYBOARD_MANAGEMENT_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Any change to this parameter will require a complete restart of Olvid before it can take effect." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tout changement de ce paramètre ne prendra effet qu'après un redémarrage complet d'Olvid." + } + } + } + }, + "DATE" : { + "comment" : "Date word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Date" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Date" + } + } + } + }, + "day" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "day" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "jour" + } + } + } + }, + "DEACTIVATE" : { + "comment" : "Deactivate word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deactivate" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désactiver" + } + } + } + }, + "DEACTIVATE_%@_AND_ACTIVATE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deactivate %@ and activate %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désactiver %@ et activer %@" + } + } + } + }, + "DEACTIVATE_SELECTED_DEVICE_AND_ACTIVATE_THIS_ONE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deactivate selected device and activate this one" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désactiver l'appareil sélectionné et activer celui-ci" + } + } + } + }, + "Debug" : { + "comment" : "Debug word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Debug" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Debug" + } + } + } + }, + "Decline" : { + "comment" : "Decline word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Decline" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Décliner" + } + } + } + }, + "Default" : { + "comment" : "Default word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Default" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Par défaut" + } + } + } + }, + "DEFAULT_DISCUSSION_SETTINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Default settings for this discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres par défaut pour cette discussion" + } + } + } + }, + "DEFAULT_EMOJI" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Default quick emoji" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Emoji rapide par défaut" + } + } + } + }, + "DEFAULT_EMOJI_AT_APP_LEVEL" : { + "comment" : "Section header", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quick emoji" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Emoji rapide" + } + } + } + }, + "Delete" : { + "comment" : "Delete word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer" + } + } + } + }, + "Delete all messages" : { + "comment" : "Alert action title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete all messages" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer tous les messages" + } + } + } + }, + "Delete all messages for all users" : { + "comment" : "Alert action title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete all messages for all users" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer tous les messages chez tous les utilisateurs" + } + } + } + }, + "Delete all messages for all users?" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete all messages for all users?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer tous les messages chez tous les utilisateurs ?" + } + } + } + }, + "Delete all messages?" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete all messages?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer tous les messages ?" + } + } + } + }, + "Delete group" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer le groupe" + } + } + } + }, + "Delete Message" : { + "comment" : "Title of alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete Message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer le message" + } + } + } + }, + "Delete Message and Attachments" : { + "comment" : "Title of alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete Message and Attachments" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer le message et les pièces jointes" + } + } + } + }, + "Delete this contact?" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete this user?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer cet utilisateur ?" + } + } + } + }, + "DELETE_ALL_MSGS_ON_ALL_DEVICES__ACTION_IRREVERSIBLE" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you wish to delete all the messages on all the devices of all the users of this discussion? This action is irreversible." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous supprimer tous les messages des appareils de tous les participants de cette discussion ? Attention, cette opération est irréversible." + } + } + } + }, + "DELETE_CONTACT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer le contact" + } + } + } + }, + "DELETE_ITEMS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete items" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer les éléments" + } + } + } + }, + "DELETE_OLVID_USER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete this user" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer cet utilisateur" + } + } + } + }, + "DELETE_OWN_REACTION" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete my reaction" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer ma réaction" + } + } + } + }, + "DELETE_THIS_IDENTITY_BUTTON" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete this profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer ce profil" + } + } + } + }, + "DELETE_THIS_IDENTITY_QUESTION_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deleting this profile will delete any information related to it from your device. This includes the contacts, groups, and the content of all your discussions (messages and attachments) for this profile. Your other profiles will not be affected by this operation.\nIf you have enabled backups in Olvid, your future backups will not contain any trace of this profile and you will not be able to restore it." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer un profil effacera toute information associée à ce profil de votre appareil. Cela inclut vos contacts, vos groupes et le contenu de toutes vos discussions pour ce profil. Vos autres profils ne seront pas affectés par cette opération.\nSi vous avez activé les sauvegardes Olvid, vos futures sauvegardes ne contiendront aucune trace de ce profil et vous ne serez pas en mesure de le restaurer." + } + } + } + }, + "DELETE_THIS_IDENTITY_QUESTION_TITLE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete the profile \"%@\"?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer le profil « %@ » ?" + } + } + } + }, + "DELETE_THIS_LAST_UNHIDDEN_IDENTITY_QUESTION_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deleting this profile will delete any information related to it from your device. This includes the contacts, groups, and the content of all your discussions (messages and attachments) for this profile.\n\nThis is your only visible profile and if you have any hidden profile, they will be deleted simultaneously.\nIf you have enabled backups in Olvid, your future backups will not contain any trace of this profile and you will not be able to restore it." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer un profil effacera toute information associée à ce profil de votre appareil. Cela inclut vos contacts, vos groupes et le contenu de toutes vos discussions pour ce profil.\n\nCe profil est votre seul profil visible et si vous avez des profils masqués, ceux-ci seront également supprimés.\nSi vous avez activé les sauvegardes Olvid, vos futures sauvegardes ne contiendront aucune trace de ce profil et vous ne serez pas en mesure de le restaurer." + } + } + } + }, + "DELETE_THIS_LAST_UNHIDDEN_IDENTITY_QUESTION_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete this last profile?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer ce dernier profil ?" + } + } + } + }, + "DELETE_USER_ACTION_TITLE" : { + "comment" : "Action title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete this user now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer cet utilisateur maintenant" + } + } + } + }, + "Deleted" : { + "comment" : "Deleted word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deleted" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimé" + } + } + } + }, + "Deleted message" : { + "comment" : "Body displayed when a reply-to message was deleted.", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deleted message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message supprimé" + } + } + } + }, + "DELETION_IN_PROGRESS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deletion in progress" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suppression en cours" + } + } + } + }, + "DELETION_TERMINATED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deletion done" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suppression terminée" + } + } + } + }, + "Delivered" : { + "comment" : "Delivered word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delivered" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Distribué" + } + } + } + }, + "Details" : { + "comment" : "Details word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Details" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Détails" + } + } + } + }, + "DETAILS_SIGNED_BY_IDENTITY_PROVIDER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Details signed by the identity provider" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Détails signés par le fournisseur d'identité" + } + } + } + }, + "DEVICE %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Device %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appareil %@" + } + } + } + }, + "DEVICE %lld" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Device %lld" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dispositif %lld" + } + } + } + }, + "DEVICE_DEACTIVATED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deactivated" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désactivé" + } + } + } + }, + "DEVICE_DEACTIVATED_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deactivation %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désactivé %@" + } + } + } + }, + "DEVICE_LAST_ONLINE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Last online %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dernière présence en ligne %@" + } + } + } + }, + "DEVICE_WONT_BE_DEACTIVATED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No deactivation planned" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune désactivation prévue" + } + } + } + }, + "Devices" : { + "comment" : "Devices word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Devices" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appareils" + } + } + } + }, + "DIALOG_MESSAGE_FAILED_TO_UPLOAD_IDENTITY_TO_KEYCLOAK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid was unable to upload your Olvid ID to your company's identity provider. It will be retried in the background." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid n'a pas réussi à transmettre votre ID Olvid au fournisseur d'identité de votre entreprise. De nouveaux essais seront réalisés en tâche de fond." + } + } + } + }, + "DIALOG_MESSAGE_KEYCLOAK_IDENTITY_WAS_REVOKED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "It seems that your account was removed from your company's identity provider. If you left your company, this is normal and you may continue using Olvid as a free user.\n\nIf you believe this is an error, please contact your administrator to re-register this identity provider with Olvid." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il semble que votre compte a été supprimé du fournisseur d'identité de votre société. Si vous avez quitté votre entreprise, ceci est normal et vous pouvez continuer à utiliser Olvid en tant qu'utilisateur gratuit.\n\nSi vous pensez que c'est une erreur, veuillez contacter votre administrateur pour enregistrer à nouveau ce fournisseur d'identité dans Olvid." + } + } + } + }, + "DIALOG_MESSAGE_KEYCLOAK_SIGNATURE_KEY_CHANGED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid detected a change in the cryptographic signature key of your identity provider. This should normally never happen.\n\nPlease contact your administrator and only press \"Update Key\" if she can confirm the key change was intentional. If unsure, press \"Cancel\"." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid a détecté une modification de la clé de signature cryptographique de votre fournisseur d'identité. Cela ne devrait normalement jamais arriver.\n\nVeuillez contacter votre administrateur et n'appuyer sur « Mettre la clé à jour » que s'il peut confirmer que cette modification est intentionnelle. En cas de doute, appuyez sur « Annuler »." + } + } + } + }, + "DIALOG_MESSAGE_OUTDATED_VERSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your version of Olvid is outdated and needs to be updated.\n\nYou are probably missing out on many new features and we cannot guarantee the compatibility of your version with newer versions of the app that your contacts may use." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre version d'Olvid est dépassée et doit être mise à jour.\n\nVous passez probablement à côté de nombreuses nouvelles fonctionnalités et nous ne pouvons pas vous garantir la compatibilité de votre version avec les versions plus récentes utilisées par vos contacts." + } + } + } + }, + "DIALOG_MESSAGE_UNBIND_FROM_KEYCLOAK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your Olvid ID is currently managed by your company's identity provider. You are about to switch to a normal, un-managed, Olvid ID.\n\nIf you proceed, you will no longer be able to seamlessly add contacts from your company to Olvid. Please contact your administrator for more details.\n\nDo you wish to proceed?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre ID Olvid est actuellement géré par le fournisseur d'identité de votre société. Vous êtes sur le point de passer à un ID Olvid normal, non-géré.\n\nSi vous continuez, vous ne pourrez plus ajouter automatiquement d'autres employés à vos contacts. Veuillez contacter votre administrateur pour plus de détails.\n\nSouhaitez-vous continuer ?" + } + } + } + }, + "DIALOG_MISSING_MESSAGES_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This missing message indicator tells you that a gap was detected in the numbering sequence of messages received from your contact.\n\nThis can either be that the sending of a message was cancelled (the message will never reach you), or that a larger message (typically with attachment) has not finished uploading yet (you should receive it soon)." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet indicateur de message manquant vous prévient qu'un trou a été détecté dans la séquence de numérotation des messages reçus de votre contact.\n\nCeci est soit dû à l'annulation d'envoi d'un message (vous ne recevrez jamais ce message), soit à l'envoi d'un message plus gros (en général, avec des pièces jointes) qui n'a pas encore été entièrement déposé sur le serveur (vous devriez le recevoir prochainement)." + } + } + } + }, + "DIALOG_MISSING_MESSAGES_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Missing messages" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Messages manquants" + } + } + } + }, + "DIALOG_OWNED_IDENTITY_WAS_REVOKED_BY_KEYCLOAK_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your company's identity provider revoked your Olvid ID. Please contact your administrator." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le fournisseur d'identité de votre entreprise a révoqué votre ID Olvid. Nous vous recommandons de contacter votre administrateur." + } + } + } + }, + "DIALOG_OWNED_IDENTITY_WAS_REVOKED_BY_KEYCLOAK_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your Olvid ID was revoked" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre ID Olvid a été révoqué" + } + } + } + }, + "DIALOG_TITLE_IDENTITY_PROVIDER_ERROR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity provider error" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erreur du fournisseur d'identité" + } + } + } + }, + "DIALOG_TITLE_KEYCLOAK_IDENTITY_WAS_REVOKED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity provider removed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "fournisseur d'identité supprimé" + } + } + } + }, + "DIALOG_TITLE_KEYCLOAK_SIGNATURE_KEY_CHANGED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity provider key change" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Changement de clé du fournisseur d'identité" + } + } + } + }, + "DIALOG_TITLE_OUTDATED_VERSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update required" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour requise" + } + } + } + }, + "Directory" : { + "comment" : "Directory word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Directory" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuaire" + } + } + } + }, + "DISBAND_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Disband this group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer ce groupe" + } + } + } + }, + "Discard" : { + "comment" : "Discard word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discard" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer" + } + } + } + }, + "Discard changes" : { + "comment" : "Alert button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discard changes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abandonner les modifications" + } + } + } + }, + "DISCUSS_WITH_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discuss with %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discuter avec %@" + } + } + } + }, + "Discussion" : { + "comment" : "Discussion word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discussion" + } + } + } + }, + "DISCUSSION_QUICK_EMOJI" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quick emoji for this discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Emoji rapide pour cette discussion" + } + } + } + }, + "DISCUSSION_SETTINGS" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discussion settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres de la discussion" + } + } + } + }, + "discussion-default-settings-view.mention-notification-mode.picker.footer.title" : { + "comment" : "Picker footer for the default mention notification mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Global Setting to be notified when being mentioned within a Discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réglage global pour être notifié lorsqu’on est mentionné dans une Discussion" + } + } + } + }, + "discussion-default-settings-view.mention-notification-mode.picker.mode.always" : { + "comment" : "Display title for the `always` value for mention notification mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Always" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toujours" + } + } + } + }, + "discussion-default-settings-view.mention-notification-mode.picker.mode.never" : { + "comment" : "Display title for the `never` value for mention notification mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Never" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jamais" + } + } + } + }, + "discussion-default-settings-view.mention-notification-mode.picker.title" : { + "comment" : "Picker title for the default mention notification mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mention Notification Mode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mode de notification pour les mentions" + } + } + } + }, + "discussion-expiration-settings-view.body.section.mention-notification-mode.picker.footer.title" : { + "comment" : "Picker footer for the mention notification mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Setting to be notified when being mentioned within this Discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réglage pour être notifié lorsqu’on est mentionné dans cette Discussion" + } + } + } + }, + "discussion-expiration-settings-view.body.section.mention-notification-mode.picker.title" : { + "comment" : "Picker title for the mention notification mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mention Notification Mode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mode de notification pour les mentions" + } + } + } + }, + "Discussions" : { + "comment" : "Discussions word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discussions" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discussions" + } + } + } + }, + "DISK_USAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Storage used" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Espace de stockage occupé" + } + } + } + }, + "Dismiss" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dismiss" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fermer" + } + } + } + }, + "Do you really wish to restart the channel establishment?" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you really wish to restart the channel establishment?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez vous redémarrer l'établissement du canal sécurisé ?" + } + } + } + }, + "Do you want to send a new invitation to your contact?" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you want to send a new invitation to your contact?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous envoyer une nouvelle invitation à votre contact ?" + } + } + } + }, + "Do you want to send an invitation to %@?" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you want add %@ to your contacts?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Souhaitez-vous entrer en contact avec %@ ?" + } + } + } + }, + "Do you wish to add %@ to your contacts?" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you wish to add %@ to your contacts?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous ajouter %@ à vos contacts ?" + } + } + } + }, + "Do you wish to delete all the messages within this discussion? This action is irreversible." : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you wish to delete all the messages within this discussion? This action is irreversible." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous supprimer tous les messages de cette discussion ? Attention, cette opération est irréversible." + } + } + } + }, + "Do you wish to open %@ in Safari?" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you wish to open %@ in Safari?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous ouvrir %@ dans Safari ?" + } + } + } + }, + "DO_STOP_ONE_TO_ONE_DISCUSSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove from contacts" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retirer des contacts" + } + } + } + }, + "DO_YOU_HAVE_OTHER_PROFILES_TO_ADD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you have multiple profiles on your other device, would you like to add them too?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous avez plusieurs profils sur votre deuxième appareil, voulez-vous les ajouter aussi ?" + } + } + } + }, + "DO_YOU_WANT_ALL_YOUR_DEVICE_TO_STAY_ACTIVE_[THIS_WAY](_)" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you want all your devices to stay active? [This way](_)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous que tous vos appareils restent actifs ? [Par ici](_)" + } + } + } + }, + "DO_YOU_WISH_TO_STOP_ONE_TO_ONE_DISCUSSION_WITH_@_ALERT_MESSAGE" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Removing %1$@ from your contacts will end the private discussion you have with this user (in other words, you will no longer be able to exchange messages in your private discussion with %1$@). You will still be able to exchange messages in groups you have in common." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "En retirant %1$@ de vos contacts, vous mettez fin à la discussion privée avec cet utilisateur (autrement dit, vous ne pourrez plus échanger de messages dans votre discussion privée avec %1$@). Cela ne vous empêchera pas d'échanger des messages dans vos groupes communs." + } + } + } + }, + "Documents" : { + "comment" : "Documents word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Documents" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Documents" + } + } + } + }, + "DOWNGRADE_CONTACT_TO_NON_ONE_TO_ONE_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove from contacts" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retirer des contacts" + } + } + } + }, + "DOWNLOAD_MISSING_PROFILE_PICTURES_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download missing profile pictures" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Télécharger les photos de profils manquantes" + } + } + } + }, + "DOWNLOAD_MISSING_PROFILE_PICTURES_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you believe that certain profile pictures are missing (for contacts, groups, or your own profiles), you may try to (re)download them." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous pensez que certaines photos de profils sont manquantes (que ce soit pour vos contacts, groupes ou profils personnels), vous pouvez essayer de les télécharger à nouveau." + } + } + } + }, + "Downloading File..." : { + "comment" : "Displayed in QuickLook when showing a downloading file", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "File not downloaded yet 😕" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le téléchargement n'est pas terminé 😕" + } + } + } + }, + "Downloads" : { + "comment" : "Downloads word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Downloads" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Téléchargements" + } + } + } + }, + "DRAFT_EXPIRATION_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Use the settings below to modify the visibility and existence durations of your next message. You may only use more restrictive settings than the discussion's default." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utilisez les paramètres ci-dessous pour modifier les durées de visibilité et d'existence de votre prochain message. Vous ne pouvez pas choisir des paramètres moins restrictifs que les paramètres par défaut de la discussion." + } + } + } + }, + "DRAG_AND_DROP_TO_CONFIGURE_PREFERRED_EMOJIS_LIST" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Drop your favorite reactions here!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Déposez ici vos réactions préférés !" + } + } + } + }, + "Edit" : { + "comment" : "Edit word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier" + } + } + } + }, + "EDIT_CURRENT_IDENTITY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manage current profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gérer le profil courant" + } + } + } + }, + "EDIT_GROUP" : { + "comment" : "View controller title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier le groupe" + } + } + } + }, + "EDIT_GROUP_DETAILS_AS_ADMINISTRATOR_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit title" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier le titre" + } + } + } + }, + "EDIT_GROUP_MEMBERS_AS_ADMINISTRATOR_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier les membres" + } + } + } + }, + "EDIT_MY_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit my ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier mon ID" + } + } + } + }, + "EDIT_NICKNAME_AND_CUSTOM_PHOTO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit custom name and photo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Éditer le surnom et la photo personalisée" + } + } + } + }, + "EDIT_NICKNAME_AND_CUSTOM_PICTURE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit nickname and custom picture" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Editer le surnom et la photo personnalisée" + } + } + } + }, + "EDIT_NICKNAME_AND_CUSTOM_PICTURE_EXPLANATION_FOR_CONTACT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You can choose a nickname and a custom profile picture for your contact. They will only appear on your devices, and won't be shared with anyone." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous pouvez choisir un surnom et une photo de profil personnalisée pour votre contact. Ils apparaîtront sur vos appareils uniquement, et ne seront partagés avec personne." + } + } + } + }, + "EDIT_NICKNAME_AND_CUSTOM_PICTURE_EXPLANATION_FOR_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You can choose a nickname and a custom profile picture for this group. They will only appear on your devices, and won't be shared with anyone." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous pouvez choisir un surnom et une photo de profil personnalisée pour ce groupe. Ils apparaîtront sur vos appareils uniquement, et ne seront partagés avec personne." + } + } + } + }, + "EDIT_OWNED_IDENTITY_NICKNAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit my nickname" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Éditer mon pseudo" + } + } + } + }, + "EDIT_PERSONAL_NOTE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit personal note" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Éditer la note personnelle" + } + } + } + }, + "EDIT_YOUR_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit your message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifiez votre message" + } + } + } + }, + "Edited" : { + "comment" : "Edited word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edited" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifié" + } + } + } + }, + "ENABLE" : { + "comment" : "Enable word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enable" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer" + } + } + } + }, + "ENABLE_AUTOMATIC_BACKUP" : { + "comment" : "Table view section header", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enable automatic backups to iCloud" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer la sauvegarde automatique vers iCloud" + } + } + } + }, + "ENABLE_AUTOMATIC_BACKUP_AND_CONTINUE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activate automatic backup" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer les sauvegardes automatiques" + } + } + } + }, + "ENABLE_AUTOMATIC_BACKUP_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backup was successfully restored. To make sure you can restore a fresh backup the next time you need to, we recommend to activate automatic iCloud backups." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La sauvegarde a été restaurée avec succès. Pour vous assurer de pouvoir restaurer à nouveau une sauvegarde la prochaine fois que vous en aurez besoin, nous vous recommandons d'activer les sauvegardes automatiques vers iCloud." + } + } + } + }, + "ENABLE_RUNNING_LOGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enable in-app logs" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer les logs intégrés" + } + } + } + }, + "End" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "End" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fin" + } + } + } + }, + "ENGINE_DIRECTORIES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Directories within the engine" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Répertoires de l'engine" + } + } + } + }, + "Enter backup key" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter backup key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clé de sauvegarde" + } + } + } + }, + "Enter your personal details" : { + "comment" : "Section title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter your personal details" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre identité" + } + } + } + }, + "ENTER_GROUP_DETAILS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New group details" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Détails du nouveau groupe" + } + } + } + }, + "ENTER_PASSWORD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter a password" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entrez un mot de passe" + } + } + } + }, + "ENTER_YOUR_PASSCODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter your passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entrez votre code personnalisé" + } + } + } + }, + "EPHEMERAL_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ephemeral message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message éphémère" + } + } + } + }, + "EPHEMERAL_MESSAGES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ephemeral messages" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Messages éphémères" + } + } + } + }, + "ERROR" : { + "comment" : "Error word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Error" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erreur" + } + } + } + }, + "ERROR_DESCRIPTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Error description:" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Description de l'erreur:" + } + } + } + }, + "ESTABLISHING_SECURE_CHANNEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Establishing a secure discussion channel" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Établissement d'un canal de discussion sécurisé" + } + } + } + }, + "ESTABLISHING_SECURE_CHANNEL_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A secure discussion channel is currently being created. This process should take a few seconds if both you and your contact are online.\n\nIf you believe that something went wrong, you can restart the channel creation." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un canal sécurisé est actuellement en cours de création. Ce processus ne demande que quelques secondes si vous et votre contact êtes tous deux en ligne.\n\nSi vous pensez que quelque chose s'est mal passé, vous pouvez redémarrer la création de ce canal." + } + } + } + }, + "ESTIMATING_TIME_REMAINING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Estimating remaining time..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Estimation du temps restant..." + } + } + } + }, + "Everyone" : { + "comment" : "Everyone word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Everyone" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tout le monde" + } + } + } + }, + "Exclude" : { + "comment" : "Exclude word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exclude" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exclure" + } + } + } + }, + "EXPECTED_DELETION_DATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deletion date" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Date de suppression" + } + } + } + }, + "Expiration" : { + "comment" : "Expiration word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Expiration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Expiration" + } + } + } + }, + "EXPIRATION_SETTINGS_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The settings below are shared between all participants in this discussion. Changing them will affect the default visibility and existence duration of messages sent by all participants." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les paramètres ci-dessous sont partagés par l'ensemble des participants à la discussion. En cas de modification, la nouvelle durée de visibilité et d'existence sera envoyée à tous les participants." + } + } + } + }, + "EXPIRATION_SETTINGS_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ephemeral messages" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Messages éphémères" + } + } + } + }, + "Expired" : { + "comment" : "Expired word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Expired" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Expiré" + } + } + } + }, + "Expired since %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Expired since %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Expirée depuis le %@" + } + } + } + }, + "EXPLANATION_CONTACT_REVOKED_AND_UNBLOCKED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This contact was revoked by your company's identity provider. Their Olvid ID may have been compromised and the security of your communications cannot be guaranteed.\n\nYou previously decided to manually unblock them. If you are unsure about your decision, it is recommended you re-block this contact.\nPlease contact your administrator for more details." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce contact a été révoqué par le fournisseur d'identité de votre société. Leur ID Olvid a peut-être été compromis et la sécurité de vos communications ne peut être garantie.\n\nVous avez précédemment décidé de le débloquer manuellement. Si vous n'êtes pas certain de votre décision, il est recommandé de bloquer ce contact à nouveau.\nVeuillez contacter votre administrateur pour plus d'informations." + } + } + } + }, + "EXPLANATION_FOR_CLONING_A_GROUP_V1_TO_GROUP_V2" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This group does not support more than one administrator. But you can clone this group into a new one that will 🚀!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce groupe ne permet pas d'avoir plusieurs administrateurs. Mais vous pouvez le cloner en un nouveau groupe de dernière génération qui le permettra 🚀 !" + } + } + } + }, + "EXPLANATION_KEYCLOAK_BIND" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The name above was retrieved from your company's identity provider. Once your Olvid ID is managed by your this provider, this is how your contacts will see you in Olvid." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le nom ci-dessus à été récupéré depuis le fournisseur d'identité de votre société.\nUne fois votre ID Olvid géré par ce fournisseur, c'est comme cela que vos contacts vous verront dans Olvid." + } + } + } + }, + "EXPLANATION_KEYCLOAK_UPDATE_BAD_SERVER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid was unable to configure your company's identity provider with your current Olvid ID because your ID was generated on a different Olvid server." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid ne peut pas configurer le fournisseur d'identité de votre société avec votre ID Olvid actuel. Votre ID a été généré sur un serveur Olvid différent." + } + } + } + }, + "EXPLANATION_KEYCLOAK_UPDATE_NEW" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to configure your company's identity provider in Olvid. Once configured, you can authenticate with this server and Olvid will let you to seamlessly add other employees to your contacts." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous êtes sur le point de configurer le fournisseur d'identité de votre société au sein d'Olvid. Une fois configuré, vous pourrez vous authentifier auprès de ce serveur et Olvid vous permettra d'ajouter automatiquement d'autres employés à vos contacts." + } + } + } + }, + "EXPLANATION_MANAGED_IDENTITY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The name above was retrieved from your Identity provider and can't be changed. You may still choose a profile picture. These details will never be sent to Olvid's servers." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le nom ci-dessus a été obtenu via votre fournisseur d'identité et ne peut être modifié. Vous pouvez néanmoins choisir une photo de profil. Ces informations ne seront jamais envoyées aux serveurs d'Olvid." + } + } + } + }, + "EXPLANATION_PLACED_ABOVE_LIST_OF_NON_ONE_TO_ONE_CONTACTS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The following users are not part of your contacts (yet), so you cannot have a private discussion with them. But you can invite them easily 🚀!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les utilisateurs ci-dessous ne font pas (encore) partie de vos contacts, et vous ne pouvez donc pas encore avoir de discussion privée avec eux. Mais vous pouvez les y inviter facilement 🚀 !" + } + } + } + }, + "EXPLANATION_WHY_RECORD_PERMISSION_IS_IMPORTANT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To place or receive secure calls ☎️, and to record voice messages 🎵, Olvid needs access to the microphone.\n\nTo make sure you never miss a secure call, we recommend you grant access now 🤓." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour passer ou recevoir des appels sécurisés ☎️ et pour enregistrer des messages audio 🎵, il faut accorder à Olvid le droit d'accéder au micro.\n\nAfin de ne rater aucun appel, nous vous recommandons de le faire maintenant 🤓." + } + } + } + }, + "Export App Database" : { + "comment" : "only in dev mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Export App Database" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exporter la base de données de l'App" + } + } + } + }, + "Export Engine Database" : { + "comment" : "only in dev mode", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Export Engine Database" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exporter la base de données de l'Engine" + } + } + } + }, + "Export to File App" : { + "comment" : "Alert button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Export to File App" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exporter vers l'App Fichiers" + } + } + } + }, + "EXPORT_TMP_DIRECTORY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Export the tmp directory" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exporter le répertoire tmp" + } + } + } + }, + "Failed" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Failed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Échoué" + } + } + } + }, + "FAILED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Failed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Échec" + } + } + } + }, + "FAILED_TO_HIDE_OWNED_ID_ALERT_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please try again. When choosing the password, please make sure it is not a prefix of an existing hidden profile password." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous pouvez essayer à nouveau, en prenant garde à choisir un mot de passe qui ne soit pas le préfixe d'un mot de passe d'un autre profil masqué." + } + } + } + }, + "FAILED_TO_HIDE_OWNED_ID_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The profile could not be hidden" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le profil n'a pas pu être masqué" + } + } + } + }, + "FAILED_TO_RESTORE_PURCHASES_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Previous purchases could not be restored: %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les achats n'ont pas pu être restaurés : %@." + } + } + } + }, + "FAILED_TO_START_FREE_TRIAL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your free trial could not be started. Please try again later." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'essai gratuit n'a pas pu être activé. N'hésitez pas à essayer à nouveau plus tard." + } + } + } + }, + "Fetching latest upload" : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fetching latest upload..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Récupération de la dernière sauvegarde..." + } + } + } + }, + "File exported to Files App" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "File exported to Files App" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fichier exporté vers l'app Fichiers" + } + } + } + }, + "FILES_APP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Files" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fichiers" + } + } + } + }, + "FIRST_NAME_LAST_NAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "First, Last" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prénom Nom" + } + } + } + }, + "FOLLOWING_MEMBERS_MUST_UPGRADE_BEFORE_CREATING_GROUP_V2_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "In order to create a group V2, all group members must use a recent version of Olvid 🤓. Please try again after asking the following members to upgrade to the latest version of Olvid:\n%@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour pouvoir créer un groupe v2, tous les membres doivent utiliser une version récente d'Olvid 🤓. Avant d'essayer à nouveau, demandez aux contacts suivants de mettre Olvid à jour:\n%@." + } + } + } + }, + "Forgot your backup key?" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Forgot your backup key?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clé de sauvegarde oubliée ?" + } + } + } + }, + "FORM_COMPANY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Company" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Société" + } + } + } + }, + "FORM_FIRST_NAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "First name" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prénom" + } + } + } + }, + "FORM_LAST_NAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Last name" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nom de famille" + } + } + } + }, + "FORM_NICKNAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nickname" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Surnom" + } + } + } + }, + "FORM_POSITION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Position" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Poste" + } + } + } + }, + "Forwarded" : { + "comment" : "Forward word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Forwarded" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Transféré" + } + } + } + }, + "Free" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Free" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gratuit" + } + } + } + }, + "Free features" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Free features" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fonctionnalités gratuites" + } + } + } + }, + "FREE_TRIAL_ENDED_ON_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The free trial expired on %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La période d'essai a expiré le %@" + } + } + } + }, + "FREE_TRIAL_EXPIRED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Free trial expired" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Période d'essai expirée" + } + } + } + }, + "Gallery" : { + "comment" : "Gallery word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gallery" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Galerie" + } + } + } + }, + "Generate new backup key now" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Generate new backup key now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Regénérer une clé de sauvegarde maintenant" + } + } + } + }, + "Generate new backup key?" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Generate new backup key?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Générer une nouvelle clé de sauvegarde ?" + } + } + } + }, + "GENERATE_BACKUP_KEY_SECTION_TITLE" : { + "comment" : "Table view section header", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Backup key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clé de sauvegarde" + } + } + } + }, + "GENERATE_NEW_BACKUP_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Generate a backup key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Générer une clé de sauvegarde" + } + } + } + }, + "GLOBAL_EXPIRATION_SETTINGS_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The settings below will be applied to all new one-to-one discussions and to all new group discussions that you create. Please note that these settings will be shared among all the participant of the discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les paramètres ci-dessous seront appliqués à toute nouvelle discussion « one-to-one » ainsi qu'à toute nouvelle discussion de groupe que vous créerez. Veuillez noter que ces paramètres de discussion seront partagés avec tous les participants." + } + } + } + }, + "GLOBAL_LOCAL_EPHEMERAL_SETTINGS_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The settings below allow you to locally customize the default behavior of ephemeral messages. These settings are not shared with other discussion participants." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les réglages ci-dessous vous permettent d'ajuster localement le comportement par défaut des messages éphémères. Ces paramètres ne sont pas partagés avec les autres participants aux discussions." + } + } + } + }, + "GLOBAL_RETENTION_SETTINGS_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The settings below allow you to automatically delete old messages in your discussions. They can be overidden in each discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les réglages ci-dessous vous permettent de supprimer automatiquement de vieux messages dans vos discussions. Ces paramètres par défaut peuvent être modifiés indépendamment pour chaque discussion." + } + } + } + }, + "GO_TO_APP_STORE_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open the App Store" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir l'App Store" + } + } + } + }, + "GRACE_PERIOD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Require authentication" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exiger l'authentification" + } + } + } + }, + "GRACE_PERIOD_ENDED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grace period ended" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le délai de grâce est échu" + } + } + } + }, + "GRACE_PERIOD_ENDED_ON_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grace period ended on %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La période de grâce a pris fin le %@" + } + } + } + }, + "GRACE_PERIOD_ENDS_ON_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grace period ends on %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La période de grâce prendra fin le %@" + } + } + } + }, + "GRACE_PERIOD_EXPLANATION_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "After being closed, Olvid will be locked after %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une fois fermée, Olvid se verrouillera après %@." + } + } + } + }, + "GRACE_PERIOD_TITLE_%@" : { + "comment" : "Notification body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "after %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "après %@" + } + } + } + }, + "GRANT_PERMISSION_TO_RECORD_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow microphone access" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autoriser l'accès au micro" + } + } + } + }, + "GRANT_PERMISSION_TO_RECORD_IN_SETTINGS_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Go to Settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aller dans les Réglages" + } + } + } + }, + "Group Card" : { + "comment" : "Olvid card corner text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card" + } + } + } + }, + "Group Card - New" : { + "comment" : "Olvid card corner text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - New" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - Nouvelle" + } + } + } + }, + "Group Card - On My iPhone" : { + "comment" : "Olvid card corner text", + "localizations" : { + "en" : { + "variations" : { + "device" : { + "ipad" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - On My iPad" + } + }, + "mac" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - On My Mac" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - On My iPhone" + } + } + } + } + }, + "fr" : { + "variations" : { + "device" : { + "ipad" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - Sur mon iPad" + } + }, + "mac" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - Sur mon Mac" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - Sur mon iPhone" + } + } + } + } + } + } + }, + "Group Card - Published" : { + "comment" : "Olvid card corner text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - Published" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - Publiée" + } + } + } + }, + "Group Card - Unpublished Draft" : { + "comment" : "Olvid card corner text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - Unpublished Draft" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group Card - Brouillon non publié" + } + } + } + }, + "GROUP_DESCRIPTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group description" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Description du groupe" + } + } + } + }, + "GROUP_NAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Group name" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nom du groupe" + } + } + } + }, + "GROUP_UPDATE_IN_PROGRESS_EXPLANATION_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "An update of this group is in progress. Please wait until it is done to make further modifications." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une mise à jour du groupe est en cours. Merci de patienter jusqu'à son terme pour faire de nouvelles modifications." + } + } + } + }, + "GROUP_UPDATE_IN_PROGRESS_EXPLANATION_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update in progress" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour en cours" + } + } + } + }, + "GROUP_V2_PUBLISHED_DETAILS_EXPLANATION_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The group details were updated. If you wish to use these new details instead of the ones on your %@, please tap the button bellow." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les détails du groupe ont été mis à jour. Si vous désirez utiliser ces nouveaux détails au lieu de ceux sur votre %@, touchez le bouton ci-dessous." + } + } + } + }, + "Groups" : { + "comment" : "Groups word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groups" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groupes" + } + } + } + }, + "Groups joined" : { + "comment" : "Table View section title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groups joined" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groupes rejoints" + } + } + } + }, + "GROUPS_THAT_YOU_ADMINISTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groups that you administer" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groupes que vous administrez" + } + } + } + }, + "HIDDEN_PROFILES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hidden profiles" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Profils masqués" + } + } + } + }, + "Hide notifications" : { + "comment" : "Cell label", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hide notifications" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cacher les notifications" + } + } + } + }, + "Hide notifications content" : { + "comment" : "Cell label", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hide content" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cacher le contenu" + } + } + } + }, + "HIDE_PROFILE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hidden profiles are protected by a password and do not appear in you profile list until you enter this password.\nAccessing a hidden profile requires a long press on the top left button shown on each tab.\nIf you forget this password, you will permanently lose access to this profile 😱!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les profils masqués sont protégés par un mot de passe et n'apparaissent dans la liste de profils qu'après avoir saisi ce mot de passe.\nFaites un appui long sur le bouton supérieur gauche affiché sur chaque onglet pour accéder à un profil masqué.\nSi vous oubliez ce mot de passe, vous perdrez définitivement accès à ce profil 😱 !" + } + } + } + }, + "HIDE_THIS_IDENTITY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hide this profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Masquer ce profil" + } + } + } + }, + "HOW_DO_YOU_WANT_TO_SHARE_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "How do you want to share your ID?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comment voulez-vous partager votre ID ?" + } + } + } + }, + "HOW_TO_ADD_MESSAGE_REACTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Double tap a message to add a reaction." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tapez deux fois sur le message pour ajouter votre réaction." + } + } + } + }, + "HOW_TO_ADD_REACTION_TO_PREFFERED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add a star to a reaction to add it to your favorite reactions." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajoutez une étoile à une réaction pour l'ajouter à vos réactions préférées." + } + } + } + }, + "HOW_TO_REMOVE_OWN_REACTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap to remove your reaction." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tapez pour supprimer votre réaction." + } + } + } + }, + "I have copied the key" : { + "comment" : "Button title shown to the user", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "I have copied the key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "J'ai bien copié la clé" + } + } + } + }, + "iCloud access is restricted" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud access is restricted" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accès restreint à iCloud" + } + } + } + }, + "iCloud backups list" : { + "comment" : "Button title allowing to show backup list", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud backups list" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Liste des sauvegardes iCloud" + } + } + } + }, + "iCloud error" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud error" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erreur iCloud" + } + } + } + }, + "iCloud status is unclear" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud status is unclear" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le statut de iCloud n'est pas clair" + } + } + } + }, + "ICLOUD_ACCOUNT_TEMPORARILY_UNAVAILABLE" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud account temporarily unavailable" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Compte iCloud indisponible pour le moment" + } + } + } + }, + "ICLOUD_ACCOUNT_TRY_AGAIN_LATER" : { + "comment" : "Alert body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please try again later" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez essayer à nouveau plus tard" + } + } + } + }, + "Identity" : { + "comment" : "Identity word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identité" + } + } + } + }, + "Identity color style" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity color style" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Couleurs pour les identités" + } + } + } + }, + "IDENTITY_PROVIDER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity provider" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fournisseur d'identité" + } + } + } + }, + "IDENTITY_PROVIDER_CONFIGURATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity provider configuration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration du fournisseur d'identité" + } + } + } + }, + "IDENTITY_PROVIDER_CONFIGURED_FAILURE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The identity provider of your company does not seem to be available. Please contact your administrator." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le fournisseur d'identité de votre société ne semble pas disponible. Veuillez contacter votre administrateur." + } + } + } + }, + "IDENTITY_PROVIDER_CONFIGURED_SUCCESS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The identity provider of your company was successfully configured. Press \"Authenticate\" to log in and retrieve your personal information." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le fournisseur d'identité de votre société a été configuré avec succès. Appuyez sur « S'authentifier » pour vous y connecter et récupérer vos informations personnelles." + } + } + } + }, + "IDENTITY_PROVIDER_OPTION_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This screen lets you to manually configure your company's identity provider. If you received a configuration link (or QR code), please tap on \"Back\" and tap the link or scan the code. This will make the onboarding process much easier 😇.\n\nPlease contact your administrator for more details." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet écran vous permet de configurer manuellement le fournisseur d'identité de votre entreprise. Si vous avez reçu un lien (ou un code QR) de configuration, appuyez sur « Retour » et appuyez sur le lien ou scannez le code. Le processus de démarrage n'en sera que plus simple 😇.\n\nVeuillez contacter votre administrateur pour plus de détails." + } + } + } + }, + "IDENTITY_SERVER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity server" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Serveur d'identités" + } + } + } + }, + "IDENTITY_SETTINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres de l'identité" + } + } + } + }, + "If you wish, you can help the development team by tapping the button below. This will share (only) the above message with them." : { + "comment" : "Body text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you wish, you can help the development team by tapping the button below. This will share (only) the following message with them." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous le désirez, vous pouvez aider l'équipe de développement via la bouton ci-dessous. Vous partagerez (uniquement) le message encadré ci-dessous avec elle." + } + } + } + }, + "Ignore" : { + "comment" : "Button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ignore" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ignorer" + } + } + } + }, + "Immediately" : { + "comment" : "Immediately word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Immediately" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Immédiatement" + } + } + } + }, + "IMPOSSIBLE_TO_ADD_%@_WITH_THIS_QR_CODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This QR code cannot be used to add %1$@ to your contacts. Please try again, making sure %1$@ scans your QR code before you scan their's." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce code QR ne peut pas être utilisé pour ajouter %1$@ à vos contacts. Veuillez essayer à nouveau, en vous assurant que %1$@ scanne votre code QR avant que vous ne scanniez le sien." + } + } + } + }, + "In order to invite another Olvid user, you can copy your identity in order to paste it in an email, SMS, and so forth. If you receive an identity, you can paste it here." : { + "comment" : "Message of an alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "In order to invite another Olvid user, you can copy your identity in order to paste it in an email, SMS, and so forth. If you receive the identity of another user, you can paste it here." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour inviter un autre utilisateur, vous pouvez copier votre identité puis la coller dans un courriel, un SMS, etc. Si vous recevez l'identité d'un autre utilisateur, vous pouvez la coller ici." + } + } + } + }, + "In order to invite another Olvid user, you can either scan their QR code or show them your own QR code." : { + "comment" : "Message of an alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "In order to add another Olvid user to your contacts, you can send an invitation, scan their QR code, or show them your own QR code." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afin d'entrer en contact avec un autre utilisateur d'Olvid, vous pouvez lui envoyer une invitation, scanner son code QR, ou afficher le vôtre pour qu'il le scanne." + } + } + } + }, + "IN_APP_LOGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "In-app logs" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Logs intégrés" + } + } + } + }, + "INACTIVE_PROFILE_EXPLANATION_ON_MY_PROFILE_VIEW" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your profile is not active on this device but you can reactivate it now." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre profil est inactif sur cet appareil mais vous pouvez le réactiver maintenant." + } + } + } + }, + "INCLUDE_CALL_IN_RECENTS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Include calls in iOS call log" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager liste appels avec le système" + } + } + } + }, + "Incorrect code" : { + "comment" : "Title of an alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Incorrect code" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Code incorrect" + } + } + } + }, + "INSTALLED_APP_IS_OUTDATED_ALERT_BODY" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "But don't worry 😊. You can upgrade now to the latest version of Olvid and discover its amazing new features 🤓! We recommend you upgrade now 🚀." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mais ne vous inquiétez pas 😊. Vous pouvez mettre à jour Olvid dès maintenant et ainsi découvrir les dernières nouveautés 🤓. Nous vous recommandons de mettre à jour maintenant 🚀." + } + } + } + }, + "INSTALLED_APP_IS_OUTDATED_ALERT_TITLE" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your Olvid version is obsolete 😱!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre version d'Olvid est obsolète 😱 !" + } + } + } + }, + "Interface" : { + "comment" : "Introduce word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Interface" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Interface" + } + } + } + }, + "INTERNAL_STORAGE_EXPLORER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Storage explorer" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Explorateur interne" + } + } + } + }, + "Introduce" : { + "comment" : "Introduce word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduce" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenter" + } + } + } + }, + "Introduce %@ to..." : { + "comment" : "Title of the table listing all identities but the one to introduce", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduce %@ to..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenter %@ à..." + } + } + } + }, + "INTRODUCE_%@_TO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduce %@ to..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenter %@ à..." + } + } + } + }, + "INTRODUCE_CONTACT_%@_TO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduce %@ to..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenter %@ à..." + } + } + } + }, + "Introduced as part of a group discussion" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduced as part of a group discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenté lors d'une création de groupe" + } + } + } + }, + "Introduced by %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduced by %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenté par %@" + } + } + } + }, + "Introduced by a former contact" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduced by a former contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenté par un ancien contact" + } + } + } + }, + "Introduced by keycloak server %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduced by keycloak server %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenté par le serveur d'identité %@" + } + } + } + }, + "INTRODUCED_BY_FORMER_CONTACT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduced by a former contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenté par un ancien contact" + } + } + } + }, + "Invalid subscription" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invalid subscription" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement non valide" + } + } + } + }, + "INVALID_QR_CODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This QR code is invalid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce code QR n'est pas valide" + } + } + } + }, + "Invitation" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitation" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitation" + } + } + } + }, + "Invitation\nDeclined" : { + "comment" : "Two lines label indicating that a contact declined a group invitation", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitation\nDeclined" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitation Refusée" + } + } + } + }, + "Invitation to join a group" : { + "comment" : "Invitation subtitle, Notification title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitation to join a group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitation à rejoindre un groupe" + } + } + } + }, + "INVITATION_BODY_ACCEPT_GROUP_INVITE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are invited to join a group created by %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous êtes invité a rejoindre un groupe créé par %@." + } + } + } + }, + "INVITATION_BODY_ACCEPT_GROUP_V2_INVITE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are invited to join a group." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez reçu une invitation à rejoindre un groupe." + } + } + } + }, + "INVITATION_BODY_ACCEPT_GROUP_V2_INVITE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are invited to join the group \"%@\"." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez reçu une invitation à rejoindre le groupe « %@ »." + } + } + } + }, + "INVITATION_BODY_ACCEPT_INVITE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you ignore this invitation, %@ won't be notified." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous ignorez cette invitation, aucune notification ne sera envoyée à %@." + } + } + } + }, + "INVITATION_BODY_ACCEPT_MEDIATOR_INVITE_%@_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ would like to introduce you to %2$@. If you accept, %2$@ will be part of your contacts and you will have a private discussion with them." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ aimerait vous présenter à %2$@. Si vous acceptez, %2$@ fera partie de vos contacts et vous aurez une discussion privée." + } + } + } + }, + "INVITATION_BODY_FREEZE_GROUP_V2_INVITE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please wait while the group is updated..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez attendre pendant que le groupe est mis à jour..." + } + } + } + }, + "INVITATION_BODY_INVITATION_ACCEPTED_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please wait until %@ is back online." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez attendre que %@ se connecte à nouveau..." + } + } + } + }, + "INVITATION_BODY_INVITE_SENT_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please wait until %@ accepts your invitation to have a private discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez attendre que %@ accepte d'avoir une discussion privée." + } + } + } + }, + "INVITATION_BODY_MEDIATOR_INVITE_ACCEPTED_%@_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You accepted to be introduced to %2$@ by %1$@. Please wait until %2$@ also accepts this invitation." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez accepté la présentation de %1$@. Veuillez attendre que %2$@ l'accepte également." + } + } + } + }, + "INVITATION_BODY_MUTUAL_TRUST_CONFIRMED_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ is now part of your contacts and you can have a private discussion with them." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ fait maintenant partie de vos contacts et vous pouvez commencer la discussion privée." + } + } + } + }, + "INVITATION_BODY_ONE_TO_ONE_INVITATION_RECEIVED_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you accept, %@ will be added to your contacts and you will have a private discussion with them." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous acceptez, %@ fera partie de vos contacts et vous aurez une discussion privée." + } + } + } + }, + "INVITATION_BODY_ONE_TO_ONE_INVITATION_SENT_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please wait until they accept it 🤞." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez patienter jusqu'à ce que %@ l'accepte 🤞." + } + } + } + }, + "INVITATION_BODY_SAS_CONFIRMED_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Almost there! Please give your code to %@ to have a private discussion with them." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous y sommes presque ! Transmettez votre code à %@ pour avoir une discussion privée." + } + } + } + }, + "INVITATION_BODY_SAS_EXCHANGE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "In order to have a private discussion with %@, you must give them your code and enter theirs. Those codes are not secret, but please make sure that %1$@ is indeed the one giving you the code." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour avoir une discussion privée avec %@, vous devez lui transmettre votre code et saisir le sien. Ces codes ne sont pas secrets, mais assurez-vous que c'est bien %1$@ qui vous transmet son code." + } + } + } + }, + "INVITATION_TITLE_ACCEPT_GROUP_INVITE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ invites you to a group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ vous invite dans un groupe" + } + } + } + }, + "INVITATION_TITLE_ACCEPT_GROUP_V2_INVITE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are invited to join a group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez reçu une invitation à rejoindre un groupe" + } + } + } + }, + "INVITATION_TITLE_ACCEPT_INVITE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ would like to discuss with you" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ aimerait discuter avec vous" + } + } + } + }, + "INVITATION_TITLE_ACCEPT_MEDIATOR_INVITE_%@_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ introduces you to %2$@ " + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ vous présente %2$@" + } + } + } + }, + "INVITATION_TITLE_FREEZE_GROUP_V2_INVITE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are invited to join a group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez reçu une invitation à rejoindre un groupe" + } + } + } + }, + "INVITATION_TITLE_INVITATION_ACCEPTED_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You accepted %@'s invitation" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez accepté l'invitation de %@" + } + } + } + }, + "INVITATION_TITLE_INVITE_SENT_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You sent an invitation to %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez envoyé une invitation à %@" + } + } + } + }, + "INVITATION_TITLE_MEDIATOR_INVITE_ACCEPTED_%@_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ introduces you to %2$@ " + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ vous présente %2$@" + } + } + } + }, + "INVITATION_TITLE_MUTUAL_TRUST_CONFIRMED_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Well done!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Formidable !" + } + } + } + }, + "INVITATION_TITLE_ONE_TO_ONE_INVITATION_RECEIVED_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ would like to have a private discussion with you" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ aimerait avoir une discussion privée avec vous" + } + } + } + }, + "INVITATION_TITLE_ONE_TO_ONE_INVITATION_SENT_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You invited %@ to have a private discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez envoyé une invitation à discuter en privé à %@" + } + } + } + }, + "INVITATION_TITLE_SAS_CONFIRMED_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Give your code to %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Donnez votre code à %@" + } + } + } + }, + "INVITATION_TITLE_SAS_EXCHANGE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Give your code to %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Donnez votre code à %@" + } + } + } + }, + "Invitations" : { + "comment" : "Invitations word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitations" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitations" + } + } + } + }, + "Invite" : { + "comment" : "Invite word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invite" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inviter" + } + } + } + }, + "Invite another Olvid user" : { + "comment" : "Title of an alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose how to add a contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisissez comment inviter un contact" + } + } + } + }, + "Invite Members" : { + "comment" : "Button title for inviting new members to an owned contact group", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invite Members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inviter des participants" + } + } + } + }, + "INVITE_%@_IF_YOU_WANT_ONE_TO_ONE_DISCUSSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To have a private discussion with %@ and add them to your contacts, touch \"Invite\"." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour discuter en privé avec %@ et l'ajouter à vos contacts, touchez « Inviter »." + } + } + } + }, + "INVITE_%@_LOCALLY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If %@ is next to you, have them scan this QR code to add them to your contacts directly." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si %@ est à côté de vous, faites-lui scanner ce code QR pour l'ajouter à vos contacts immédiatement." + } + } + } + }, + "INVITE_ALL_GROUP_MEMBERS_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invite all at once" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inviter tous en une fois" + } + } + } + }, + "INVITE_ALL_GROUP_MEMBERS_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To initiate a private conversation with a group member who is not yet in your contacts, tap on their name, and then choose the \"Invite\" button. If you want to invite all group members at the same time, tap the \"Invite all at once\" button. Please note that the group member must accept your invitation." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour engager une conversation privée avec un membre du groupe qui n'est pas encore dans vos contacts, appuyez sur son nom, puis sélectionnez le bouton \"Inviter\". Si vous souhaitez inviter tous les membres du groupe simultanément, appuyez sur le bouton \"Inviter tous en une seule fois\". Veuillez noter que le membre du groupe doit accepter votre invitation." + } + } + } + }, + "INVITE_REQUIRED_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitation required" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitation requise" + } + } + } + }, + "IS_ADMIN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Admin" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Admin" + } + } + } + }, + "IS_DELETING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "is deleting" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "suppression en cours" + } + } + } + }, + "IS_NOT_ADMIN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Not admin" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pas admin" + } + } + } + }, + "IS_PENDING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pending" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "En attente" + } + } + } + }, + "IS_PENDING_ADMIN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pending\nadmin" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Admin\nen attente" + } + } + } + }, + "KEEP_%@_ACTIVE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Keep %@ active" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maintenir %@ actif" + } + } + } + }, + "KEEP_%lld_MESSAGES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Keep %lld messages" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Conserver %lld messages" + } + } + } + }, + "KEEP_DEVICE_%@_ACTIVE_AND_ACCEPT_TO_DEACTIVATE_DEVICE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "It appears you did not subscribe to the multidevice feature, allowing to use Olvid on multiple devices simultaneously. Keeping the device %@ active implies that the device %@ will be deactivated instead. If you want to keep all your devices active, please explore the subscriptions plans." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il semblerait que vous n'ayez pas souscrit à la fonctionnalité multi-appareils, permettant d'utiliser Olvid sur plusieurs appareils simultanément. Garder l'appareil %@ actif implique de désactiver l'appareil %@. Si vous désirez conserver tous vos appareils actifs, nous vous recommandons d'explorer les offres d'abonnement." + } + } + } + }, + "KEEP_SELECTED_DEVICE_ACTIVE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Keep selected device active" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maintenir l'appareil sélectionné actif" + } + } + } + }, + "KEEP_THIS_DEVICE_ACTIVE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Keep active" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Garder actif" + } + } + } + }, + "KEYCLOAK_AUTHENTICATION_FAILED_ALERT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authentication failed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'authentification a échoué" + } + } + } + }, + "KEYCLOAK_AUTHENTICATION_FAILED_ALERT_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authentication failed: %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'authentification a échoué : %@" + } + } + } + }, + "KEYCLOAK_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Keycloak ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Keycloak ID" + } + } + } + }, + "KEYCLOAK_MISSING_SEARCH_RESULT" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "One additional search result is available. Please refine your search." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u additional search results are available. Please refine your search." + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un résultat supplémentaire est disponible. Veuillez affiner votre recherche." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u résultats supplémentaires sont disponibles. Veuillez affiner votre recherche." + } + } + } + } + } + } + }, + "KEYCLOAK_REVOCATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Revoke previous Olvid ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Révoquer l'ID Olvid précédent" + } + } + } + }, + "KEYCLOAK_REVOCATION_BUTTON" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Revoke previous ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Révoquer ID précédent" + } + } + } + }, + "KEYCLOAK_REVOCATION_FAILURE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Failed to revoke previous Olvid ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'ID Olvid précédent n'a pas pu être révoqué" + } + } + } + }, + "KEYCLOAK_REVOCATION_FORBIDDEN_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please contact your administrator." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous vous recommandons de contacter votre administrateur." + } + } + } + }, + "KEYCLOAK_REVOCATION_FORBIDDEN_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You cannot revoke your identity" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous ne pouvez pas révoquer votre identité" + } + } + } + }, + "KEYCLOAK_REVOCATION_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Another Olvid ID is associated with your account on your company's identity provider. If you generated a new ID you need to revoke the previous one." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un autre ID Olvid est associé avec le compte géré par le fournisseur d'identité de votre entreprise. Si vous avez généré un nouvel ID Olvid, il vous faut révoquer le précédent." + } + } + } + }, + "KEYCLOAK_REVOCATION_SUCCESSFUL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Successfully revoked previous Olvid ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'ID Olvid précédent a été révoqué" + } + } + } + }, + "LABEL_BIND_KEYCLOAK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Use an identity provider" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utiliser un serveur d'identités" + } + } + } + }, + "LAST_NAME_FIRST_NAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Last, First" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nom Prénom" + } + } + } + }, + "Later" : { + "comment" : "Later word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Later" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plus tard" + } + } + } + }, + "Latest export: %@" : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Latest export: %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dernier export: %@" + } + } + } + }, + "Latest upload: %@" : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Latest upload: %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dernier téléchargement : %@" + } + } + } + }, + "Leave group" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Leave group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quitter le groupe" + } + } + } + }, + "LEAVE_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Leave this group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quitter ce groupe" + } + } + } + }, + "Left Tone" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Left Tone" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + } + } + }, + "LETS_CREATE_YOUR_PROFILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Let's create your profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créons votre profil" + } + } + } + }, + "LICENSE_ACTIVATION_CODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "License activation code" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Code d'activation de licence" + } + } + } + }, + "LIMITED_EXISTENCE_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When activated, messages and attachments are auto-deleted after a limited period of time." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ce réglage est activé, les messages et leurs pièces jointes sont automatiquement supprimés après une certaine durée." + } + } + } + }, + "LIMITED_EXISTENCE_SECTION_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Existence duration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Durée d'existence" + } + } + } + }, + "LIMITED_VISIBILITY_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Visibility duration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Durée de visibilité" + } + } + } + }, + "LIMITED_VISIBILITY_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When activated, messages and attachments are visible for a limited period of time after they have been read." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ce réglage est activé, les messages et leurs pièces jointes sont affichés pour une durée limitée après avoir été lus." + } + } + } + }, + "Loading" : { + "comment" : "Loading word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Loading" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chargement" + } + } + } + }, + "LOCAL_CONFIG" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Local configuration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration locale" + } + } + } + }, + "LOCAL_EPHEMERAL_SETTINGS_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The settings below allow you to locally customize how ephemeral messages behave within this discussion. These settings are not shared with other participants." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les réglages ci-dessous vous permettent d'ajuster localement le comportement des messages éphémères. Ces paramètres ne sont pas partagés avec les autres participants." + } + } + } + }, + "LOCAL_RETENTION_SETTINGS_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The settings below allow you to automatically delete old messages in this discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les réglages ci-dessous vous permettent de supprimer automatiquement de vieux messages dans cette discussion." + } + } + } + }, + "LOCKED_OUT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Locked Out" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bloqué" + } + } + } + }, + "LOCKED_OUT_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid is locked following too many wrong passcode attempts." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid est verrouillée suite à la saisie d'un nombre trop important de mauvais codes." + } + } + } + }, + "LOCKED_OUT_FOR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Locked for " + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bloqué pour " + } + } + } + }, + "LOCKOUT_CLEAN_EPHEMERAL_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When activated, entering a wrong passcode 3 times in a row will silently erase all read once and limited visibility messages." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quand cette option est activée, saisir 3 mauvais codes d'affilée entraîne l'effacement silencieux de tous les messages à visibilité limitée." + } + } + } + }, + "LOCKOUT_CLEAN_EPHEMERAL_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erase sensitive messages after 3 bad passcode attempts" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Effacer les messages sensibles après 3 mauvais codes" + } + } + } + }, + "LOGIN_WITH_CUSTOM_PASSCODE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This option allows you to protect Olvid using a custom passcode." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette option vous permet de protéger l'accès à Olvid grâce au code personnalisé." + } + } + } + }, + "LOGIN_WITH_CUSTOM_PASSCODE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Log in with a custom passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier avec un code personnalisé" + } + } + } + }, + "LOGIN_WITH_FACE_ID_CUSTOM_PASSCODE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This option allows you to protect Olvid using Face ID or a custom passcode." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette option vous permet de protéger l'accès à Olvid grâce à Face ID ou au code personnalisé." + } + } + } + }, + "LOGIN_WITH_FACE_ID_CUSTOM_PASSCODE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Log in with Face ID or a custom passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier avec Face ID ou un code personnalisé" + } + } + } + }, + "LOGIN_WITH_FACE_ID_SYSTEM_PASSCODE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This option allows you to protect Olvid using Face ID or your device's passcode." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette option vous permet de protéger l'accès à Olvid grâce à Face ID ou au code d’accès de votre appareil." + } + } + } + }, + "LOGIN_WITH_FACE_ID_SYSTEM_PASSCODE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Log in with Face ID or your device's passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier avec Face ID ou le code d’accès de votre appareil" + } + } + } + }, + "LOGIN_WITH_SYSTEM_PASSCODE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This option allows you to protect Olvid using your device's passcode." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette option vous permet de protéger l'accès à Olvid grâce au code d’accès de votre appareil." + } + } + } + }, + "LOGIN_WITH_SYSTEM_PASSCODE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Log in with your device's passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier avec le code d’accès de votre appareil" + } + } + } + }, + "LOGIN_WITH_TOUCH_ID_CUSTOM_PASSCODE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This option allows you to protect Olvid using Touch ID or a custom passcode." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette option vous permet de protéger l'accès à Olvid grâce à Touch ID ou au code personnalisé." + } + } + } + }, + "LOGIN_WITH_TOUCH_ID_CUSTOM_PASSCODE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Log in with Touch ID or a custom passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier avec Touch ID ou un code personnalisé" + } + } + } + }, + "LOGIN_WITH_TOUCH_ID_FACE_ID_CUSTOM_PASSCODE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This option allows you to protect Olvid using Touch ID, Face ID, or a custom passcode." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette option vous permet de protéger l'accès à Olvid grâce à Touch/Face ID ou au code personnalisé." + } + } + } + }, + "LOGIN_WITH_TOUCH_ID_FACE_ID_CUSTOM_PASSCODE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Log in with Touch ID, Face ID, or a custom passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier avec Touch ID, Face ID ou un code personnalisé" + } + } + } + }, + "LOGIN_WITH_TOUCH_ID_FACE_ID_SYSTEM_PASSCODE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This option allows you to protect Olvid using Touch ID, Face ID, or your device's passcode." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette option vous permet de protéger l'accès à Olvid grâce à Face ID, Touch ID ou au code d’accès de votre appareil." + } + } + } + }, + "LOGIN_WITH_TOUCH_ID_FACE_ID_SYSTEM_PASSCODE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Log in with Touch ID, Face ID, or your device's passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier avec Touch ID, Face ID ou le code d’accès de votre appareil" + } + } + } + }, + "LOGIN_WITH_TOUCH_ID_SYSTEM_PASSCODE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This option allows you to protect Olvid using Touch ID or your device's passcode." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cette option vous permet de protéger l'accès à Olvid grâce à Touch ID ou au code d’accès de votre appareil." + } + } + } + }, + "LOGIN_WITH_TOUCH_ID_SYSTEM_PASSCODE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Log in with Touch ID or your device's passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'authentifier avec Touch ID ou le code d’accès de votre appareil" + } + } + } + }, + "Looking for available subscription plans" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Looking for available subscription plans" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recherche des offres d'abonnement" + } + } + } + }, + "Looking for the new license" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Looking for the new license" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous recherchons la nouvelle licence" + } + } + } + }, + "MAIL_BODY_COULD_NOT_TRANSFER_PROFILE_ERROR$@" : { + "comment" : "mail body text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hello Olvid!\n\nI could not transfer my profile. Could you please look into this issue? Here is the error:\n\n$@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bonjour Olvid !\n\nJe n'ai pas pu transférer mon profil. Pourriez-vous étudier la question ? Voici l'erreur :\n\n%@" + } + } + } + }, + "MAIL_SUBJECT_COULD_NOT_TRANSFER_PROFILE_ERROR" : { + "comment" : "Mail subject", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "I could not tranfer my profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il n'a pas été possible de transférer mon profil" + } + } + } + }, + "MAKE_SECURE_CALLS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Make secure calls with iPhone and iPad" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Émettre des appels sécurisés avec iPhone et iPad" + } + } + } + }, + "Manage payments" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manage payments" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modes de paiement" + } + } + } + }, + "Manage your subscription" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manage your subscription" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gérer vos abonnements" + } + } + } + }, + "MANUAL_BACKUP_EXPLANATION_FOOTER" : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allows to export an encrypted backup of your contacts, groups, and settings (messages and attachments are not backuped). You can either share it (email it, save it to Files,...) or upload it directely to iCloud. Do not worry, this backup is encrypted 😇." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permet d'exporter une sauvegarde chiffrée de vos contacts, groupes et paramètres (les messages et pièces jointes ne sont pas sauvegardés). Vous pouvez la partager (l'envoyer par mail, la sauvegarder dans Fichiers, etc.) ou la sauvegarder directement vers iCloud. Ne vous en faites pas, cette sauvegarde est chiffrée 😇." + } + } + } + }, + "MANUAL_BACKUP_TITLE" : { + "comment" : "Table view section header", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manual backup" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarde manuelle" + } + } + } + }, + "MANUAL_CONFIGURATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manual configuration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration manuelle" + } + } + } + }, + "MANUAL_RESYNC_OF_GROUP_V2" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Resynchronize this group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Resynchroniser ce groupe" + } + } + } + }, + "MARK_AS_READ" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mark as read" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Marquer comme lu" + } + } + } + }, + "MAX_AVG_BITRATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Max. average bitrate" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Débit moyen maximal" + } + } + } + }, + "Maximum size for automatic downloads" : { + "comment" : "Table view group header", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maximum size for automatic downloads" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Taille maximale pour téléchargement automatique" + } + } + } + }, + "MAYBE_LATER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maybe later" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plus tard" + } + } + } + }, + "MAYBE_ME_LATER_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maybe later" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plus tard" + } + } + } + }, + "Medias" : { + "comment" : "Medias word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Medias" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Médias" + } + } + } + }, + "Members" : { + "comment" : "Stack view title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Membres" + } + } + } + }, + "Members of %@" : { + "comment" : "Title of the table listing all members of a discussion group.", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Members of %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Membres de %@" + } + } + } + }, + "MENU_ACTION_TITLE_ARCHIVE_DISCUSSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Archive discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Archiver la discussion" + } + } + } + }, + "MENU_ACTION_TITLE_DELETE_ALL_MESSAGES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete all messages" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer tous les messages" + } + } + } + }, + "MENU_ACTION_TITLE_MARK_ALL_MESSAGES_AS_READ" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mark all messages as read" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Marquer tous les messages comme lus" + } + } + } + }, + "MENU_ACTION_TITLE_PIN_DISCUSSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pin discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Épingler la discussion" + } + } + } + }, + "MENU_ACTION_TITLE_UNPIN_DISCUSSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unpin discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Détacher la discussion" + } + } + } + }, + "Message" : { + "comment" : "Message word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message" + } + } + } + }, + "MESSAGE_INFO" : { + "comment" : "Title of the screen displaying informations about a specific message within a discussion", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message informations" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Informations sur le message" + } + } + } + }, + "MESSAGE_REACTION_NOTIFICATION_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reacted %@ to your message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "A réagi %@ à votre message" + } + } + } + }, + "MESSAGE_REACTION_NOTIFICATION_%@_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reacted %@ to: %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "A réagi %@ à : %@" + } + } + } + }, + "MESSAGE_SUBSCRIPTION_REQUIRED_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Initiating secure phone calls with Olvid requires a subscription.\n\nYou can check your current subscription status and see available subscription plans on the \"My ID\" page." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'émission d'appels téléphoniques sécurisés avec Olvid nécessite un abonnement.\n\nVous pouvez vérifier le statut de votre abonnement et les options d'abonnement disponibles depuis la page « Mon ID »." + } + } + } + }, + "MESSAGE_SUBSCRIPTION_REQUIRED_GENERIC" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Th requested feature requires a subscription.\n\nYou can check your current subscription status and see available subscription plans on the \"My ID\" page." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La fonctionnalité demandée nécessite un abonnement.\n\nVous pouvez vérifier le statut de votre abonnement et les options d'abonnement disponibles depuis la page « Mon ID »." + } + } + } + }, + "Metadata" : { + "comment" : "Metadata word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Metadata" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Métadonnées" + } + } + } + }, + "MINIMUM_RECOMMENDED_VERSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Minimum recommended version" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Version minimale recommandée" + } + } + } + }, + "MINIMUM_SUPPORTED_VERSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Minimum supported version" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Version minimale prise en charge" + } + } + } + }, + "Misconfiguration" : { + "comment" : "View Controller title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Misconfiguration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration" + } + } + } + }, + "missed messages count" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "One missing message" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u missing messages" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 message manquant" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u messages manquants" + } + } + } + } + } + } + }, + "MISSED_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Missed Call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel manqué" + } + } + } + }, + "MISSING_CHANNEL_FOR_CALL_MESSAGE_%@" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You will be able to call %@ once a secure channel is established with them. Please try again later." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous pourrez appeler %@ dès que le canal sécurisé sera établi. Veuillez essayer à nouveau plus tard." + } + } + } + }, + "MISSING_CHANNEL_FOR_CALL_TITLE_%@" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ cannot be called yet" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ ne peut pas encore être appelé" + } + } + } + }, + "MODIFIED_SHARED_SETTINGS_CONFIRMATION_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You have modified the message settings for this discussion.\n\nDo you want to update these settings for you and all other discussion participants, or do you want to discard your changes?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez modifié les paramètres partagés de cette discussion.\n\nVoulez-vous mettre à jour ces paramètres pour vous et tous les participants à la discussion, ou préférez-vous supprimer vos modifications ?" + } + } + } + }, + "MODIFIED_SHARED_SETTINGS_CONFIRMATION_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modified shared ephemeral message settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les paramètres partagés ont été modifiés" + } + } + } + }, + "month" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "month" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "mois" + } + } + } + }, + "More invitations methods" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Additional methods for adding a contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autres méthodes d'ajout de contact" + } + } + } + }, + "More..." : { + "comment" : "UIAlert action title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "More..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Avancé..." + } + } + } + }, + "MULTIDEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Multidevice" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Multi-appareils" + } + } + } + }, + "Mute" : { + "comment" : "Metadata word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mute" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Silence" + } + } + } + }, + "MUTE_NOTIFICATIONS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mute notifications" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désactiver les notifications" + } + } + } + }, + "MUTED_NOTIFICATIONS_CONFIRMATION_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New message notifications muted until %@.\nDo you want to unmute them?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications de nouveau message désactivées jusqu'à %@.\n Souhaitez-vous les réactiver ?" + } + } + } + }, + "MUTED_NOTIFICATIONS_FOOTER_INDEFINITELY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New message notifications muted indefinitely" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications de nouveau message désactivées indéfiniment." + } + } + } + }, + "MUTED_NOTIFICATIONS_FOOTER_UNTIL_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New message notifications muted until %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications de nouveau message désactivées jusqu'à %@" + } + } + } + }, + "Mutual Introduction" : { + "comment" : "UIAlertController title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mutual Introduction" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Faire les présentations" + } + } + } + }, + "Mutual trust confirmed!" : { + "comment" : "Notification title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Secure channel in progress" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Canal sécurisé en cours" + } + } + } + }, + "My Id" : { + "comment" : "Title of a tab, Title of the MyIdViewController, View Controller title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "My profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mon profil" + } + } + } + }, + "My Olvid Card" : { + "comment" : "Table View section title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "My profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mon ID" + } + } + } + }, + "MY_DEVICE_NAME_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@" + } + } + } + }, + "MY_DEVICES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "My devices" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mes appareils" + } + } + } + }, + "MY_OWN_IDS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "My profiles" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mes profils" + } + } + } + }, + "Name update available" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Name update available" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour disponible" + } + } + } + }, + "Never" : { + "comment" : "Never word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Never" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jamais" + } + } + } + }, + "New" : { + "comment" : "Chip title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouveau" + } + } + } + }, + "New backup key" : { + "comment" : "Title of the view showing a new backup key", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New backup key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvelle clé de sauvegarde" + } + } + } + }, + "New contact" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouveau contact" + } + } + } + }, + "New group details" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New group details" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouveaux détails de groupe" + } + } + } + }, + "New invitation" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New invitation" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvelle invitation" + } + } + } + }, + "New Invitation!" : { + "comment" : "Notification title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New Invitation!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvelle Invitation !" + } + } + } + }, + "New message" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouveau message" + } + } + } + }, + "New Suggested Introduction" : { + "comment" : "Invitation subtitle, Notification title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New Suggested Introduction" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise en relation" + } + } + } + }, + "NEW_COMPOSE_MESSAGE_VIEW_ACTION_ORDER_FOOTER" : { + "comment" : "Section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The first button will be located next to the text field allowing to compose messages. The buttons you use the most should be put at the top of this list so that you can access them in one tap." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le premier bouton apparaîtra juste à côté de la zone de composition du message de vos messages. Nous vous recommandons de placer les boutons que vous utilisez le plus au sommet de la liste, de façon à les atteindre en une touche." + } + } + } + }, + "NEW_COMPOSE_MESSAGE_VIEW_ACTION_ORDER_HEADER" : { + "comment" : "Section header", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preferred message buttons order" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordre préféré des boutons de composition de message" + } + } + } + }, + "NEW_COMPOSE_MESSAGE_VIEW_PREFERENCES" : { + "comment" : "ComposeMessageViewSettingsViewController title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Customize the message compose area" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personnaliser la composition de message" + } + } + } + }, + "NEW_DETAILS_EXPLANATION_%@_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ updated their details. If you wish to use these new details instead of those currently on your %2$@, please tap the button bellow." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ a mis à jour ses informations. Si vous voulez utiliser ces nouveaux détails à la place de ceux actuellement stockés sur votre %2$@, touchez le bouton ci-dessous." + } + } + } + }, + "NEW_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvel appareil" + } + } + } + }, + "NEW_LICENSE_TO_ACTIVATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New license to activate" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvelle licence à activer" + } + } + } + }, + "NEW_REACTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New reaction" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvelle réaction" + } + } + } + }, + "Next" : { + "comment" : "Next word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Next" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suivant" + } + } + } + }, + "No" : { + "comment" : "No word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non" + } + } + } + }, + "NO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non" + } + } + } + }, + "No active subscription" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No active subscription" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun abonnement actif" + } + } + } + }, + "No backup was exported yet." : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No backup was exported yet." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune sauvegarde exportée pour le moment." + } + } + } + }, + "No backup was uploaded yet." : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No backup was uploaded yet." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune sauvegarde pour le moment." + } + } + } + }, + "No one" : { + "comment" : "No one word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No one" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personne" + } + } + } + }, + "NO_AUTHENTICATION_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid's screen won't be locked." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'écran d'Olvid ne sera pas verrouillé." + } + } + } + }, + "NO_BACKUP_KEY_GENERATED_YET" : { + "comment" : "Table view section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "In order to perform encrypted backups of your contacts, groups, and settings, you first need to generate a backup key 🔐. No backup key has been generated yet." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour effectuer une sauvegarde chiffrée de vos contacts, groupes et paramètres, la première étape est de générer une clé de sauvegarde 🔐. Aucune clé de sauvegarde n'a été générée pour le moment." + } + } + } + }, + "NO_DEVICE_WILL_EXPIRE_SINCE_YOUR_SUBSCRIPTION_INCLUDES_MULTIDEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All your devices will stay active since your subscription includes the multi-device feature 🙌." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tous vos appareils vont rester actifs car votre abonnement inclu la fonctionnalité multi-appareils 🙌." + } + } + } + }, + "NO_GRACE_PERIOD_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid will be locked immediately after being closed." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une fois fermée, Olvid se verrouillera immédiatement." + } + } + } + }, + "NO_INVITATION_FOR_NOW_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Received or sent invitations will appear here." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les invitations envoyées et reçues apparaîtront ici." + } + } + } + }, + "NO_INVITATION_FOR_NOW_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No invitations for now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pas d'invitation pour le moment" + } + } + } + }, + "NO_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun message" + } + } + } + }, + "NO_OTHER_MEMBER_FOR_NOW" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No other group member for now." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun autre membre pour le moment." + } + } + } + }, + "NO_OTHER_PROFILE_TO_ADD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Done" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terminer" + } + } + } + }, + "NON_EPHEMERAL_MESSAGES_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non-ephemeral messages" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message non-éphémère" + } + } + } + }, + "None" : { + "comment" : "None word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "None" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun" + } + } + } + }, + "NOTIFICATION_SOUNDS_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notification sound" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Son de notification" + } + } + } + }, + "NOTIFICATION_SOUNDS_SUBTITLE_POLYPHONIC" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When receiving a message, a random note of the selected instrument will be played. Give it a try by tapping your preferred choice several times 😉." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lorsque vous recevrez un message, vous entendrez une note aléatoire de l'instrument choisi. N'hésitez pas à essayer en appuyant plusieurs fois sur votre instrument préféré 😉." + } + } + } + }, + "NOTIFICATION_SOUNDS_TITLE_POLYPHONIC" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Polyphonic tones" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sons polyphoniques" + } + } + } + }, + "Notifications" : { + "comment" : "Notifications word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications" + } + } + } + }, + "Notifications will not preview any message content nor any invitation content. Instead, they will display the number of new messages as well as the number of new invitations." : { + "comment" : "Cell label", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications will not preview any message content nor any invitation content. It will be possible to distinguish between a new message notification and new invitation notification." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les notifications n'afficheront pas le contenu des nouveaux messages ni des nouvelles invitations. Il sera néanmoins possible de distinguer une notification de nouveau message d'une notification de nouvelle invitation." + } + } + } + }, + "Notifications will not provide any information about messages nor invitations. A minimal static notification will show to indicate that Olvid requires your attention." : { + "comment" : "Cell label", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications will not provide any information about messages nor invitations. A minimal static notification will show to indicate that Olvid requires your attention." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les notifications n'afficheront aucune information concernant les messages ou les invitations. À la place, elles afficheront un texte standard indiquant qu'Olvid requiert votre attention." + } + } + } + }, + "Notifications will preview new messages and new invitations content." : { + "comment" : "Cell label", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications will preview new messages and new invitations content." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les notifications afficheront une prévisualisation du contenu des nouveaux messages ainsi que des nouvelles invitations." + } + } + } + }, + "Now" : { + "comment" : "Now word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maintenant" + } + } + } + }, + "NUMBER_OF_ELEMENTS" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 element" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u elements" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No element" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 élément" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u éléments" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun élément" + } + } + } + } + } + } + }, + "NUMBER_OF_ITEMS_SELECTED" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 item selected" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u items selected" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose items" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "1 élément sélectionné" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u éléments sélectionnés" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionner des éléments" + } + } + } + } + } + } + }, + "NUMBER_OF_MESSAGES_BEFORE_DELETION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Number of new messages before deletion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nombre de nouveaux messages avant suppression" + } + } + } + }, + "Off" : { + "comment" : "Off word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Off" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Off" + } + } + } + }, + "Ok" : { + "comment" : "Ok word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ok" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ok" + } + } + } + }, + "OK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ok" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ok" + } + } + } + }, + "Olvid" : { + "comment" : "Name of application", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid" + } + } + } + }, + "Olvid failed to initialize with the following error message:\n\n%1$@" : { + "comment" : "mail body text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid failed to initialize with the following error message:\n\n%1$@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid n'a pas pu démarrer correctement. Voici le message d'erreur:\n\n%1$@" + } + } + } + }, + "Olvid failed to start properly. This is a terrible experience, we deeply appologize about this." : { + "comment" : "Body text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid failed to start properly. This is a terrible experience, we deeply appologize about this. Please be reassured, none of your data was lost." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid n'a pas pu démarrer correctement. Nous en sommes désolés. Mais rassurez-vous, aucune de vos données n'a été perdue." + } + } + } + }, + "Olvid is not authorized to access the camera. Because your settings are restricted, there is nothing we can do about this. Please contact your administrator." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid is not authorized to access the camera. Because your settings are restricted, there is nothing we can do about this. Please contact your administrator." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid n'a pas l'autorisation d'accéder à l'appareil photo 😱. Vos paramètres étant restreints, il n'y a rien que nous ne puissions faire. Nous vous recommandons de contacter votre administrateur." + } + } + } + }, + "Olvid is not authorized to access the camera. You can change this setting within the Settings app." : { + "comment" : "Body of an alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid is not authorized to access the camera 😱. You can change this setting within the Settings app." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid n'a pas l'autorisation d'accéder à l'appareil photo 😱. Vous pouvez changer ce paramètre dans l'application Réglages." + } + } + } + }, + "Olvid requires the Background App Refresh to be turned on. Unfortunately it appears to be off. If you wish to use Olvid, please turn it back on.\n\nThe reason why this is required lies in the fact that Olvid regularly executes complex, multipass, cryptographic protocols in order to achieve a security level no other app can compete with. These protocols happen in the background and could not work if you had to manually launch Olvid each time a cryptographic computation has to be performed." : { + "comment" : "Long explanation", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid requires the Background App Refresh to be turned on. Unfortunately it appears to be off. If you wish to use Olvid, please turn it back on.\n\nThe reason why this is required lies in the fact that Olvid regularly executes complex, multipass, cryptographic protocols in order to achieve a security level no other app can compete with. These protocols happen in the background and could not work if you had to manually launch Olvid each time a cryptographic computation has to be performed." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid nécessite que l'actualisation en arrière-plan soit activée. Malheureusement, cela ne semble pas être le cas sur cet appareil." + } + } + } + }, + "Olvid requires your attention" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid requires your attention." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid requiert votre attention." + } + } + } + }, + "OLVID_AUDIO" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "End-to-end encrypted call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel chiffré de bout en bout" + } + } + } + }, + "ON_MY_DEVICE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "On my %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sur mon %@" + } + } + } + }, + "ONBOARDING_ADD_PROFILE_CREATE_BUTTON" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create a new profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer un nouveau profil" + } + } + } + }, + "ONBOARDING_ADD_PROFILE_IMPORT_BUTTON" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Import a profile from another device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Importer un profil depuis un autre appareil" + } + } + } + }, + "ONBOARDING_ADD_PROFILE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add a new profile on this device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un nouveau profil sur cet appareil" + } + } + } + }, + "ONBOARDING_BAD_INFORMATIONS_RETURNED_BY_IDENTITY_PROVIDER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The informations retrieved from the identity provider are incomplete and do not allow to created an Olvid profile. Please contact your administrator." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les informations récupérées depuis le fournisseur d'identités sont incomplètes et ne permettent pas de créer de profil Olvid. Nous vous recommandons de contacter votre administrateur." + } + } + } + }, + "ONBOARDING_BUTTON_CHOOSE_BACKUP_FILE_FROM_FILES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "From File" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Depuis Fichiers" + } + } + } + }, + "ONBOARDING_BUTTON_CHOOSE_BACKUP_FILE_FROM_ICLOUD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "From iCloud" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Depuis iCloud" + } + } + } + }, + "ONBOARDING_BUTTON_TITLE_ACTIVATE_MY_PROFILE_ON_THIS_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Import a profile from another device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Importer un profil depuis un autre appareil" + } + } + } + }, + "ONBOARDING_BUTTON_TITLE_I_DO_NOT_HAVE_AN_OLVID_PROFILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "I am a new Olvid user" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je suis un nouvel utilisateur" + } + } + } + }, + "ONBOARDING_BUTTON_TITLE_I_HAVE_AN_OLVID_PROFILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "I already have an Olvid profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "J'ai déjà un profil Olvid" + } + } + } + }, + "ONBOARDING_BUTTON_TITLE_RESTORE_BACKUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore a backup" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurer une sauvegarde" + } + } + } + }, + "ONBOARDING_DEVICE_NAME_CHOOSER_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirm" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valider" + } + } + } + }, + "ONBOARDING_DEVICE_NAME_CHOOSER_SUBTITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This will help you distinguish between your devices. Device names are only visible to you." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cela vous permettra de reconnaître vos appareils facilement. Les surnoms ne sont visibles que par vous." + } + } + } + }, + "ONBOARDING_DEVICE_NAME_CHOOSER_TEXTFIELD_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Example: %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exemple: %@" + } + } + } + }, + "ONBOARDING_DEVICE_NAME_CHOOSER_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Give a name to this device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Donnez un surnom à cet appareil" + } + } + } + }, + "ONBOARDING_DROP_A_BACKUP_FILE_HERE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "or drop it here" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "ou déposez le ici" + } + } + } + }, + "ONBOARDING_ENTER_BACKUP_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please enter the backup key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez entrer votre clé de sauvegarde" + } + } + } + }, + "ONBOARDING_KEYCLOAK_MANUAL_CONFIGURATION_TITLE_CLIENT_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Server client ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Server client ID" + } + } + } + }, + "ONBOARDING_KEYCLOAK_MANUAL_CONFIGURATION_TITLE_CLIENT_SECRET" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Server client secret" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Server client secret" + } + } + } + }, + "ONBOARDING_KEYCLOAK_MANUAL_CONFIGURATION_TITLE_URL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity provider server" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity provider server" + } + } + } + }, + "ONBOARDING_MANAGED_IDENTITY_SUBTITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The informations below were retrieved from the identity provider of your company." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les informations ci-dessous ont été récupérées depuis le fournisseur d’identités de votre société." + } + } + } + }, + "ONBOARDING_NAME_CHOOSER_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create a profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer un profil" + } + } + } + }, + "ONBOARDING_NAME_CHOOSER_MANAGED_PROFILE_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This way" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Par ici" + } + } + } + }, + "ONBOARDING_NAME_CHOOSER_MANAGED_PROFILE_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Profile managed by your organisation?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Profil fourni par votre organisation ?" + } + } + } + }, + "ONBOARDING_NAME_CHOOSER_TEXTFIELD_COMPANY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Organisation" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Organisation" + } + } + } + }, + "ONBOARDING_NAME_CHOOSER_TEXTFIELD_FIRSTNAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "First name" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prénom" + } + } + } + }, + "ONBOARDING_NAME_CHOOSER_TEXTFIELD_LASTNAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Last name" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nom" + } + } + } + }, + "ONBOARDING_NAME_CHOOSER_TEXTFIELD_POSITION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Job title" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Poste" + } + } + } + }, + "ONBOARDING_NAME_CHOOSER_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Welcome to Olvid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bienvenue parmi nous" + } + } + } + }, + "ONBOARDING_WHICH_BACKUP_DO_YOU_WANT_TO_RESTORE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Which backup do you want to restore?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quelle sauvegarde voulez-vous restaurer ?" + } + } + } + }, + "ONE_TO_ONE_DISCUSSION_INVITATION_SENT_TO_%@" : { + "comment" : "Invitation details", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You invited %@ to have a private discussion. Please wait until they accept it 🤞." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez envoyé une invitation à discuter en privé à %@, qui doit encore l'accepter 🤞." + } + } + } + }, + "One-to-one verification" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "One-to-one verification" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vérification face-à-face" + } + } + } + }, + "ONLY_GROUP_OWNER_CAN_MODIFY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Only a group administrator can modify these settings." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seul un administrateur du groupe peut modifier ces paramètres." + } + } + } + }, + "Oops..." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oops..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oups..." + } + } + } + }, + "Open" : { + "comment" : "Aloert button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir" + } + } + } + }, + "Open in Safari?" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open in Safari?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir dans Safari ?" + } + } + } + }, + "Open Settings" : { + "comment" : "Button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aller dans les Réglages" + } + } + } + }, + "OPEN_HIDDEN_PROFILE_ALERT_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you created a hidden profile, please enter its password to open it." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous avez créé un profil masqué, veuillez entrer son mot de passe pour l'afficher." + } + } + } + }, + "OPEN_HIDDEN_PROFILE_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open a hidden profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher un profil masqué" + } + } + } + }, + "OPEN_SOURCE_LICENCES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Source Licenses" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Licences Open Source" + } + } + } + }, + "OPTION_%@_FROM_A_DISTANCE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Option %@: Invite remotely" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Option %@ : Inviter à distance" + } + } + } + }, + "OPTION_%@_LOCALLY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Option %@: Invite locally" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Option %@ : Inviter localement" + } + } + } + }, + "OTHER_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Other device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autre appareil" + } + } + } + }, + "OTHER_GROUP_MEMBERS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Other group members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autres membres du groupe" + } + } + } + }, + "OTHER_KNOWN_USERS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Other known users" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autres utilisateurs" + } + } + } + }, + "Oups" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oups" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oups" + } + } + } + }, + "OUTGOING_CALL_IS_CONNECTING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connecting..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connextion..." + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_FAILED_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You may still reactivate this device, but beware that this might deactivate another of your other devices (if you have any). If unsure, we recommend that you cancel and try again later." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous pouvez néanmoins décider de réactiver cet appareil, mais il se pourrait qu'un autre de vos appareils soit alors désactivé (si vous en avez un). En cas de doute, nous vous recommandons d'annuler et d'essayer à nouveau plus tard." + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_FAILED_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Check failed 😢" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La vérification a échoué 😢" + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_MULTIDEVICE_AVAILABLE_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Since you have a valid subscription to the premium multidevice feature 😎, you can safely reactivate this device now. Do you wish to do so?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comme vous avez accès à la fonctionalité premium de multi-appareils 😎, vous pouvez réactiver cet appareil dès maintenant. Souhaitez-vous le faire ?" + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_MULTIDEVICE_AVAILABLE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This device can be reactivated now 🙌" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet appareil peut être réactivé maintenant 🙌" + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_ACTIVE_DEVICE_FOUND_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "It appears you currently have no active device. You can safely reactivate this device now. Do you wish to do so?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il semblerait que vous n'ayez pas d'appareil activé pour le moment. Vous pouvez réactiver cet appareil dès maintenant. Souhaitez-vous le faire ?" + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_ACTIVE_DEVICE_FOUND_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This device can be reactivated now 🙌" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet appareil peut être réactivé maintenant 🙌" + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_MULTIDEVICE_ALL_DEVICES_EXPIRE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This device can be reactivated now 🙌" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet appareil peut être réactivé maintenant 🙌" + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_MULTIDEVICE_AT_LEAST_ONE_NON_EXPIRING_DEVICE_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "It appears you did not subscribe to the multidevice feature, allowing to use Olvid on multiple devices simultaneously. Activating this device requires to deactivate another of your devices.\n\nIf you wish to do so, please select the device you wish to deactivate from the list below." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il semblerait que vous n'ayez pas souscrit à la fonctionnalité multi-appareils, permettant d'utiliser Olvid sur plusieurs appareils simultanément. Activer cet appareil nécessite de désactiver un autre de vos appareils.\n\nSi vous le souhaitez, choisissez un appareil à désactiver dans la liste ci-dessous." + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_MULTIDEVICE_AT_LEAST_ONE_NON_EXPIRING_DEVICE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choose the device that will be deactivated" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisissez l'appareil à désactiver" + } + } + } + }, + "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_MULTIDEVICE_N_DEVICES_EXPIRE_BODY" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "You already have one active device. Since it will be deactivated at some point in the future, you can safely reactivate this device now. Do you wish to do so?" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "You already have %d active devices. Since they will be deactivated at some point in the future, you can safely reactivate this device now. Do you wish to do so?" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "It appears you currently have no active device. You can safely reactivate this device now. Do you wish to do so?" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez déjà un autre appareil actif. Comme il est prévu qu'il soit désactivé, vous pouvez réactiver cet appareil dès maintenant. Souhaitez-vous le faire ?" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez déjà %d autres appareils actifs. Comme il est prévu qu'ils soient désactivés, vous pouvez réactiver cet appareil dès maintenant. Souhaitez-vous le faire ?" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il semblerait que vous n'ayez pas d'appareil activé pour le moment. Vous pouvez réactiver cet appareil dès maintenant. Souhaitez-vous le faire ?" + } + } + } + } + } + } + }, + "OWNED_IDENTITY_GENERATED_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You just finished Olvid's configuration!\n\nNo data (first name, last name,...) was ever transmitted to our servers. Everything stays on your device.\n\nDid you notice that we did not ask for your phone number nor your email address?\n\nAnd unlike your previous messenger, Olvid will never request access to your address book." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous venez de terminer la configuration d'Olvid !\n\nAucune donnée (nom, prénom, etc.) n'a été transmise à nos serveurs. Tout reste sur votre appareil.\n\nAvez-vous remarqué que nous ne vous avons pas demandé votre numéro de téléphone ni votre adresse email ?\n\nEt contrairement à votre messagerie précédente, Olvid ne demandera jamais l’accès à votre carnet d’adresses." + } + } + } + }, + "OWNED_IDENTITY_SUMMARY_VIEW_SUBTITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Let's make sure everything's right" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Assurons-nous que tout est correct" + } + } + } + }, + "OWNED_IDENTITY_SUMMARY_VIEW_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ready to add your profile on a new device?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre profil est prêt à être ajouté à votre nouvel appareil" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_CONTACTING_SERVER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please wait..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez patienter..." + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_ENTER_CODE_FROM_NEW_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter the code displayed on your new device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tapez ici le code affiché votre nouvel appareil" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_ENTER_CODE_FROM_OTHER_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter the code displayed on your other device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tapez ici le code affiché sur l'autre appareil" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_ENTER_CODE_FROM_OTHER_DEVICE_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "**1.** Start Olvid on your other device.\n\n**2.** Tap your profile picture at the top left.\n\n**3.** Select the profile you wish to import and tap the \"manage\" button.\n\n**4.** Tap \"Add a device\" to display the code." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "**1.** Démarrez Olvid sur l'autre appareil.\n\n**2.** Touchez votre photo de profil en haut à gauche.\n\n**3.** Sélectionnez le profil que vous souhaitez importer et touchez le bouton « Gérer ».\n\n**4.** Touchez « Ajouter un appareil » pour afficher le code." + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_ENTER_CODE_FROM_OTHER_DEVICE_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirm" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valider" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_ENTER_CODE_ON_NEW_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter this code on your new device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tapez ce code sur votre nouvel appareil" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_ENTER_CODE_ON_OTHER_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enter this code on your other device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tapez ce code sur l'autre appareil" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_ENTER_CODE_ON_OTHER_DEVICE_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "**1.** Start Olvid on your new device.\n\n**2.** If this device has no profile yet, follow the instructions to import a profile.\n\n**3.** Otherwise, tap your profile picture at the top left and select \"Add a profile\"." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "**1.** Démarrez Olvid sur votre nouvel appareil.\n\n**2.** Si vous n'avez pas de profil sur cet appareil, suivez les instructions pour importer un profil.\n\n**3.** Sinon, touchez votre photo de profil en haut à gauche et choisissez « Ajouter un profil »." + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_FAILED_BODY_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please try again. If the problem persists, please send the following error to [%@](mailto:%@). We will do our best to help you out!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez essayer à nouveau. Si le problème persiste, n'hésitez pas à envoyer l'erreur ci-dessous à [%@](mailto:%@). Nous ferons tout notre possible pour vous aider !" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_FAILED_SUBTITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "But please try again" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mais n'hésitez pas à essayer à nouveau" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_FAILED_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We could not transfer your profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il n'a pas été possible de transférer votre profil" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_INCORRECT_SERIOUS_ERROR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Something went wrong 😳. Please try again." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quelque chose s'est mal passé 😳. Veuillez réessayer." + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_INCORRECT_TRANSFER_SESSION_NUMBER" : { + "comment" : "This string is used twice (on the source and on the target device)", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The code seems to be incorrect 🥲. Please double-check it and try again." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le code semble être incorrect 🥲. Veuillez le vérifier avant d'essayer à nouveau." + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_KINDA_FAILED_BODY_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please send the following error to [%@](mailto:%@). We will do our best to help you out!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "N'hésitez pas à envoyer l'erreur ci-dessous à [%@](mailto:%@). Nous ferons tout notre possible pour vous aider !" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_KINDA_FAILED_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your profile's preferences could not be fully restored on this device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les préférences de votre profil n'ont pas pu être restaurées complètement" + } + } + } + }, + "OWNED_IDENTITY_TRANSFER_TARGET_LAST_STEP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Almost there! The remaining steps are perfomed on your second device." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous y sommes presque ! Les dernières étapes se passent sur votre deuxième appareil." + } + } + } + }, + "Partially" : { + "comment" : "Oups word, with Emoji, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partially" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partiellement" + } + } + } + }, + "Passcode" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Passcode" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Passcode" + } + } + } + }, + "PASSWORD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Password" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mot de passe" + } + } + } + }, + "Paste" : { + "comment" : "Paste word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paste" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coller" + } + } + } + }, + "Paste an Id" : { + "comment" : "Action of an alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paste an ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coller un ID" + } + } + } + }, + "PASTE_CONFIGURATION_LINK" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paste a configuration from the clipboard" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coller une configuration depuis le presse-papiers" + } + } + } + }, + "PASTE_CONTACT_ID_FROM_CLIPBOARD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paste contact ID from clipboard" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coller un ID de contact depuis le presse-papiers" + } + } + } + }, + "PASTED_STRING_IS_NOT_VALID_OLVID_CONFIG" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "What you just pasted does not seem to be a valid Olvid configuration link 🤔." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce que vous venez de coller ne semble pas être une URL de configuration d'Olvid 🤔." + } + } + } + }, + "Pending" : { + "comment" : "Pending word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pending" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "En attente" + } + } + } + }, + "Pending members" : { + "comment" : "Stack view title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pending members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Membres en attente" + } + } + } + }, + "Perform the deletion" : { + "comment" : "Alert button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Perform the deletion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suppression" + } + } + } + }, + "Perform the deletion for all users" : { + "comment" : "Alert button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Perform the deletion for all users" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suppression chez tous les utilisateurs" + } + } + } + }, + "Perform the introduction" : { + "comment" : "UIAlertController action", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Perform the introduction" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Faire les présentations" + } + } + } + }, + "PERFORM_CONTACT_INTRODUCTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Perform contact introduction" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Faire les présentations" + } + } + } + }, + "PERFORM_INTERACTION_DONATION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you activate this option, your Olvid discussions will be suggested when sharing from another app. This choice can be overridden at the discussion level." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous activez cette option, les discussions Olvid apparaîtront directement lorsque vous partagerez du contenu depuis une autre app. Ce paramètre peut être modifié indépendamment pour chaque discussion." + } + } + } + }, + "PERFORM_INTERACTION_DONATION_FOR_THIS_DISCUSSION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you activate this option, this discussion will be suggested when sharing from another app." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous activez cette option, cette discussion apparaîtra directement lorsque vous partagerez du contenu depuis une autre app." + } + } + } + }, + "PERFORM_INTERACTION_DONATION_FOR_THIS_DISCUSSION_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suggest this discussion when sharing" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suggérer cette discussion pendant un partage" + } + } + } + }, + "PERFORM_INTERACTION_DONATION_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suggest Olvid's discussions when sharing" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suggérer les discussions Olvid pendant un partage" + } + } + } + }, + "PERMUTE_DEVICE_EXPIRATION_CONFIRMATION_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Keep device active and deactivate other device?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Garder l'appareil actif et désactiver un autre appareil ?" + } + } + } + }, + "PERSONAL_NOTE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal note" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Note personnelle" + } + } + } + }, + "PHOTO_LIBRARY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Photo library" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Librairie de photos" + } + } + } + }, + "Pin" : { + "comment" : "Pin word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pin" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pin" + } + } + } + }, + "PIN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "PIN" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "PIN" + } + } + } + }, + "Please authenticate in order to change this setting." : { + "comment" : "Cell label", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please authenticate in order to change this setting." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authentifiez-vous pour changer ce paramètre." + } + } + } + }, + "Please authenticate to start Olvid" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please authenticate to start Olvid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Authentifiez-vous pour démarrer Olvid" + } + } + } + }, + "Please enter all the characters of your backup key." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please enter all the characters of your backup key." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entrez tous les caractères de votre clé de sauvegarde." + } + } + } + }, + "Please fix this serious issue with Olvid" : { + "comment" : "Mail subject", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please fix this serious issue with Olvid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Merci de corriger cette erreur dans Olvid" + } + } + } + }, + "Please note that generating a new backup key will invalidate all your previous backups. If you generate a new backup key, please create a fresh backup right afterwards." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please note that generating a new backup key will invalidate all your previous backups. If you generate a new backup key, please create a fresh backup right afterwards." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Générer une nouvelle clé de sauvegarde invalide vos sauvegardes précédentes. Si vous décidez de générer une nouvelle clé, nous vous recommandons d'effectuer une sauvegarde juste après." + } + } + } + }, + "Please open settings and enable Background App Refresh. Hint: If the button is grayed out, you may have turned off the general setting which can be found within:\n\n Settings > General > Background App Refresh" : { + "comment" : "Long solution", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please open settings and enable Background App Refresh.\n\nHint: If the button is grayed out, you may have turned off the general setting which can be found within:\n\nSettings > General > Background App Refresh" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allez dans les Réglages et activez l'actualisation en arrière-plan.\n\nAstuce : Si le bouton est grisé, vous avez probablement désactivé le réglage global qui se trouve ici :\n \nRéglages > Général > Actualiser en arrière-plan" + } + } + } + }, + "Please remove any pending/group member and try again." : { + "comment" : "Alert body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please remove any pending/group member and try again." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retirez tous les membres et membres en attente et essayez à nouveau." + } + } + } + }, + "Please report this error to %1$@ so we can fix this issue as fast as possible." : { + "comment" : "body text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restarting your device may fix this issue. If it does not, please report this error to %1$@ so we can fix this issue as fast as possible." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il se peut qu'un redémarrage de votre iPhone corrige ce problème. Sinon, nous vous serions reconnaissant d'envoyer cette erreur à %1$@ pour que nous puissions la corriger le plus vite possible." + } + } + } + }, + "Please sign in to your iCloud account to enable automatic backups. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on. If you don't have an iCloud account, tap Create a new Apple ID." : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please sign in to your iCloud account to enable automatic backups. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on. If you don't have an iCloud account, tap Create a new Apple ID." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connectez-vous à iCloud pour activer les sauvegardes automatiques. Sur l'écran d'accueil, démarrez l'App Réglages, touchez iCloud et entrez votre Apple ID. Activez iCloud Drive. Si vous n'avez pas de compte iCloud, touchez Créer un nouvel Apple ID." + } + } + } + }, + "Please sign in to your iCloud account. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please sign in to your iCloud account. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connectez-vous à iCloud. Sur l'écran d'accueil, démarrez l'App Réglages, touchez iCloud et entrez votre Apple ID. Activez iCloud Drive." + } + } + } + }, + "PLEASE_CHOOSE_PROFILE_TO_PROCESS_OLVID_URL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please choose the profile you wish to use." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez choisir le profil avec lequel vous désirez continuer." + } + } + } + }, + "PLEASE_CONTACT_ADMIN_FOR_MORE_DETAILS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please contact your administrator for more details." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez contacter votre administrateur pour plus d'informations." + } + } + } + }, + "PLEASE_LAUNCH_OLVID_FROM_MAIN_APP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please launch the Olvid App to be able to share content 😉." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il vous faut lancer l'app Olvid avant de pouvoir partager du contenu 😉." + } + } + } + }, + "PLEASE_NOTE_THAT_YOUR_CUSTOM_PASSCODE_CANNOT_BE_RECOVERED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please note that if you forget your passcode, it cannot be recovered and you won't be able to access Olvid anymore." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez noter que si vous oubliez votre code personnalisé, il ne sera pas possible de le récupérer, et vous ne pourrez plus accéder à Olvid." + } + } + } + }, + "PLEASE_NOTE_THIS_CODE_WORKS_ONLY_ONCE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please note that this code will work only once." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce code n'est utilisable qu'une seul fois." + } + } + } + }, + "PLEASE_TRY_AGAIN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please try again" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Essayez à nouveau" + } + } + } + }, + "PLEASE_TRY_AGAIN_LATER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please try again later" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez essayer à nouveau plus tard" + } + } + } + }, + "PLEASE_UPDATE_OLVID_FROM_MAIN_APP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please launch the Olvid App in order to finalize its update 🚀. You will be able to share content once this is done 😉." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez lancer l'app Olvid afin de terminer la mise à jour 🚀. Vous pourrez à nouveau partager du contenu une fois que ce sera fait 😉." + } + } + } + }, + "PLEASE_WAIT_DURING_UPDATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update in progress. Please do not quit Olvid." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour en cours. Veuillez ne pas quitter Olvid." + } + } + } + }, + "PLEASE_WAIT_WHILE_WE_CHECK_WHETHER_YOUR_DEVICE_%@_CAN_BE_REACTIVATED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please stand by while we check whether your device \"%@\" can be reactivated..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veuillez patienter pendant que nous verifions si votre appareil « %@ » peut être réactivé..." + } + } + } + }, + "Premium features" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Premium features" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fonctionnalités premium" + } + } + } + }, + "Premium features are available for a limited period of time" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Premium features are available for a limited period of time." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les fonctionnalités premium sont disponibles pour une durée limitée." + } + } + } + }, + "Premium features are available for free until %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Premium features are available for free until %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les fonctionnalités premium sont disponibles gratuitement jusqu'au %@" + } + } + } + }, + "Premium features available for free" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Premium features available for free" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fonctionnalités premiums disponibles gratuitement" + } + } + } + }, + "Premium features available until %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Premium features available until %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fonctionnalités premiums disponibles jusqu'au %@" + } + } + } + }, + "Premium features free trial" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Premium features free trial" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Période d'essai gratuite des fonctionnalités premiums" + } + } + } + }, + "Premium features tryout" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Premium features tryout" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Essai des fonctionnalités premium" + } + } + } + }, + "Premium subscription" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Premium subscription" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement premium" + } + } + } + }, + "Privacy" : { + "comment" : "Privacy word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vie Privée" + } + } + } + }, + "PRIVACY_POLICY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy policy" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Politique de confidentialité" + } + } + } + }, + "Problem" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Problem" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Problème" + } + } + } + }, + "Proceed" : { + "comment" : "Proceed word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Proceed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Poursuivre" + } + } + } + }, + "Processing" : { + "comment" : "Processing word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Processing" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Traitement" + } + } + } + }, + "PROFILE_ADDED_SUCCESSFULLY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your profile was added on this device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre profil a été ajouté sur cet appareil" + } + } + } + }, + "PROFILE_YOU_ARE_ABOUT_TO_ADD_TO_NEW_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This profile:" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce profil:" + } + } + } + }, + "Publish" : { + "comment" : "Publish word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publish" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publier" + } + } + } + }, + "PUBLISH" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publish" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publier" + } + } + } + }, + "PUBLISH_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publish group changes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publier les modifications" + } + } + } + }, + "PUBLISH_MY_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publish group changes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publier les modifications" + } + } + } + }, + "PUBLISH_MY_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publish my ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publier mon ID" + } + } + } + }, + "PUBLISH_NEW_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publish this new group?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publier ce nouveau groupe ?" + } + } + } + }, + "PUBLISH_NEW_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publish your new ID?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Publier votre nouvel ID ?" + } + } + } + }, + "QR code" : { + "comment" : "Button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "QR code" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Code QR" + } + } + } + }, + "QUICK_EMOJI_EXPLANATION" : { + "comment" : "Section footer", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The quick emoji is available when the text field allowing to compose messages is empty. Tapping this emoji sends it emmediately. Tapping this emoji twice (or three times) sends it twice (or three times). Here, you can customize the default quick emoji for all discussions. This choice can be overriden at the discussion level, by customizing the quick emoji of the discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'emoji rapide est accessible quand la zone de composition de message ne contient pas de texte. Appuyer sur cet emoji l'envoie immédiatement. Appuyer deux (ou trois) fois en envoie deux (ou trois). Vous pouvez personnaliser ici l'emoji rapide par défaut pour toutes les discussions. Ce choix peut être outrepassé au niveau de chaque discussion, en personnalisant l'emoji rapide de la discussion." + } + } + } + }, + "REACTIVATE_PROFILE_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reactivate my profile on this device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réactiver mon profil sur cet appareil" + } + } + } + }, + "Read" : { + "comment" : "Read word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Read" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lu" + } + } + } + }, + "READ_ONCE_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Read once" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lecture unique" + } + } + } + }, + "READ_ONCE_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When activated, messages and attachments are displayed only once, and are deleted when exiting the discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ce réglage est activé, les messages et leurs pièces jointes ne sont affichés qu'une seule fois. Il sont supprimés au sortir de la discussion." + } + } + } + }, + "REBLOCK_CONTACT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Re-block contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rebloquer le contact" + } + } + } + }, + "REBLOCK_CONTACT_CONFIRMATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you really want to re-block the contact?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous rebloquer le contact ?" + } + } + } + }, + "RECEIVE_CALLS_ON_THIS_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Receive secure calls on this device" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recevoir des appels sécurisés sur cet appareil" + } + } + } + }, + "RECEIVE_SECURE_CALLS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Receive secure calls with iPhone and iPad" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recevoir des appels sécurisés avec iPhone et iPad" + } + } + } + }, + "Received" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Received" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reçu" + } + } + } + }, + "recent backups count" : { + "comment" : "Header for n recent backups", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "One backup" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u most recent backups" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No backups" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une sauvegarde" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%u sauvegardes les plus récentes" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune sauvegarde" + } + } + } + } + } + } + }, + "RECONNECTING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reconnecting" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reconnexion" + } + } + } + }, + "RECREATE_SECURE_CHANNEL_WITH_THIS_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recreate the secure channel" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recréer le canal sécurisé" + } + } + } + }, + "REFERENCED_BY_DATABASE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Referenced by database" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Référencés depuis la base de données" + } + } + } + }, + "Refresh group" : { + "comment" : "Button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Refresh group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actualiser le groupe" + } + } + } + }, + "Refresh status" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Refresh status" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actualiser le statut" + } + } + } + }, + "Reinvite contact?" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reinvite contact?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inviter à nouveau ?" + } + } + } + }, + "Reject" : { + "comment" : "Reject word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reject" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Refuser" + } + } + } + }, + "REJECTED_INCOMING_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rejected incoming call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel entrant rejeté" + } + } + } + }, + "REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_DENIED" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The incoming call was rejected because Olvid is not allowed to access the Microphone. To never miss a call again, please go to Settings and grant Olvid access to the microphone." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'appel entrant n'a pas abouti car Olvid n'a pas l'autorisation d'accéder au micro. Pour ne plus rater d'appel, allez dans les Réglages et autorisez l'accès au micro pour Olvid." + } + } + } + }, + "REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_DENIED_NOTIFICATION_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The incoming call was rejected because Olvid was not allowed to access the Microphone. To never miss a call again, please go to Settings and grant Olvid access to the microphone." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour recevoir des appels, vous devez autoriser Olvid à accéder au micro. Pour ne plus rater d'appel, allez dans les Réglages et autorisez l'accès au micro pour Olvid." + } + } + } + }, + "REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_UNDETERMINED_NOTIFICATION_BODY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To received a call, you need to allow Olvid to access the microphone. Please tap on this notification to allow Olvid to access the microphone." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour recevoir des appels, vous devez autoriser Olvid à accéder au micro. Cliquez sur la notification et autorisez l'accès au micro." + } + } + } + }, + "REMIND_ME_LATER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remind me later" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Me rappeler plus tard" + } + } + } + }, + "Remotely wiped" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remotely wiped" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Éliminé à distance" + } + } + } + }, + "Remotely wiped by %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remotely wiped by %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Éliminé à distance par %@" + } + } + } + }, + "REMOTELY_WIPED_BY_YOU" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remotely wiped by you" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimé à distance par vous" + } + } + } + }, + "Remove Members" : { + "comment" : "Button title for removing members from an owned contact groupe", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove Members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retirer des Participants" + } + } + } + }, + "Remove nickname" : { + "comment" : "UIAlertController action", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove nickname" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer le surnom" + } + } + } + }, + "REMOVE_IDENTITY_PROVIDER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove identity provider" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer le fournisseur d'identité" + } + } + } + }, + "REMOVE_OWNED_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deactivate now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désactiver maintenant" + } + } + } + }, + "REMOVE_OWNED_DEVICE_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deactivate device?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désactiver cet appareil ?" + } + } + } + }, + "REMOVE_PICTURE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove the photo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer la photo" + } + } + } + }, + "RENAME_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rename" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Renommer" + } + } + } + }, + "Reply" : { + "comment" : "Reply word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reply" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Répondre" + } + } + } + }, + "REPLYING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Replying" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réponse" + } + } + } + }, + "REPLYING_TO_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Replying to %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réponse à %@" + } + } + } + }, + "REPLYING_TO_CONTACT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Replying to a contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réponse à un contact" + } + } + } + }, + "REPLYING_TO_YOU" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Replying to you" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réponse à vous" + } + } + } + }, + "REPLYING_TO_YOURSELF" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Replying to yourself" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réponse à vous-même" + } + } + } + }, + "Reset" : { + "comment" : "Reset word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser" + } + } + } + }, + "RESET_COMPOSE_MESSAGE_VIEW_ACTIONS_ORDER" : { + "comment" : "reset compose view message action title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset buttons order to default" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser l'ordre des boutons" + } + } + } + }, + "RESET_DISCUSSION_EMOJI_TO_DEFAULT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser" + } + } + } + }, + "RESET_DISCUSSION_EMOJI_TO_DEFAULT_DISCUSSION_LEVEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser" + } + } + } + }, + "Restart" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restart" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Redémarrer" + } + } + } + }, + "RESTART_CHANNEL_CREATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restart secure channel creation" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Redémarrer la création du canal sécurisé" + } + } + } + }, + "Restore" : { + "comment" : "Restore word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurer" + } + } + } + }, + "Restore a backup" : { + "comment" : "Button title, Navigation controller title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore a backup" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurer une sauvegarde" + } + } + } + }, + "Restore failed 🥺" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore failed 🥺" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La restauration a échoué 🥺" + } + } + } + }, + "Restore Purchases" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore Purchases" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurer les achats" + } + } + } + }, + "Restore this backup" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restore this backup" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurer la sauvegarde" + } + } + } + }, + "RESTORE_BACKUP_FAILED_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backup could not be restored. If you can, we recommend you try to restore another backup." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La sauvegarde n'a malheureusement pas pu être restaurée. Si vous le pouvez, nous vous recommandons d'essayer de restaurer une autre sauvegarde." + } + } + } + }, + "RESTORING_BACKUP_PLEASE_WAIT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restoring backup. Please Wait." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restauration en cours..." + } + } + } + }, + "RETAIN_WIPED_OUTBOUND_MESSAGES_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retain wiped ephemeral outbound messages" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Conserver une trace des messages éphémères envoyés" + } + } + } + }, + "RETAIN_WIPED_OUTBOUND_MESSAGES_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When activated, outbound ephemeral messages are not deleted when they expire, but replaced by a static text." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ce réglage est activé, les messages éphémères sortants ne sont pas supprimés à expiration, mais remplacés par un texte fixe." + } + } + } + }, + "RETENTION_INFO_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message retention information" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Informations de rétention de message" + } + } + } + }, + "RETENTION_SETTINGS_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message retention policy" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Politique de rétention des messages" + } + } + } + }, + "Rich link preview" : { + "comment" : "Cell title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rich link preview" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prévisualisation des liens" + } + } + } + }, + "Right Tone" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Right Tone" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + } + } + }, + "Save" : { + "comment" : "Save word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Save" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enregistrer" + } + } + } + }, + "Save changes" : { + "comment" : "Alert button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Save changes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauver les modifications" + } + } + } + }, + "save count attachments" : { + "comment" : "Localized dict string allowing to display a title", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Save attachment" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Save %u attachments" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No attachment to save" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarder la pièce jointe" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarder les %u pièces jointes" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune pièce jointe" + } + } + } + } + } + } + }, + "SCAN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scan" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scanner" + } + } + } + }, + "Scan another user's QR code" : { + "comment" : "Title of an alert action", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scan another user's QR code" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scanner le code QR d'un autre utilisateur" + } + } + } + }, + "Scan document" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scan document" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scanner un document" + } + } + } + }, + "Scan QR code" : { + "comment" : "View controller title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scan QR code" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scannez un code QR" + } + } + } + }, + "SCAN_QR_CODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scan a QR code" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scanner un code QR" + } + } + } + }, + "SCANNING_CONTACT_ID_ALLOWS_YOU_TO_INVITE_THEM_NOW" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scanning the ID of another user allows you to invite them." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scanner l'ID d'un autre utilisateur vous permet de l'inviter." + } + } + } + }, + "Screen Lock" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Screen Lock" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verrouillage d'écran" + } + } + } + }, + "Search" : { + "comment" : "Search word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Search" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rechercher" + } + } + } + }, + "SEARCH_FOR_NEW_DEVICES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Search for missing devices" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rechercher des appareils manquants" + } + } + } + }, + "SEARCH_HERE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Search for a contact within your company 🔎" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recherchez un contact de votre entreprise 🔎" + } + } + } + }, + "SECURE_CALL_IN_PROGRESS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Secure call in progress" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appel sécurisé en cours" + } + } + } + }, + "SECURE_CHANNEL_CREATED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Secure channel created" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Canal sécurisé créé" + } + } + } + }, + "SECURE_CHANNEL_CREATION_IN_PROGRESS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Secure channel creation in progress" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Canal sécurisé en cours de création" + } + } + } + }, + "see count attachments" : { + "comment" : "Number of attachments", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "→ See the attachment" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "→ See %u attachments" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No attachment" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "→ Voir la pièce jointe" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "→ Voir les %u pièces jointes" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune pièce jointe" + } + } + } + } + } + } + }, + "See subscription plans" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "See subscription plans" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voir les offres d'abonnement" + } + } + } + }, + "Select" : { + "comment" : "Select word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Select" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir" + } + } + } + }, + "SELECT_NEW_CALL_PARTICIPANTS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Select participants to add to the ongoing call." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionnez les utilisateurs à ajouter à l'appel" + } + } + } + }, + "Send" : { + "comment" : "Send word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Send" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer" + } + } + } + }, + "Send invite" : { + "comment" : "title of an alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Send invitation" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer une invitation" + } + } + } + }, + "Send Read Receipts" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Send Read Receipts" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirmation de lecture" + } + } + } + }, + "Send this to the development team" : { + "comment" : "Button title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Send this to the development team" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer à l'équipe de développement" + } + } + } + }, + "SEND_ERROR_BY_EMAIL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Send error by email" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer l'erreur par mail" + } + } + } + }, + "SEND_INVITE_TO_%@_TO_ADD_THEM_TO_YOUR_CONTACTS_FROM_A_DISTANCE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Send an invitation to %@ to add them to your contacts from a distance." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyez une invitation à %@ pour l'ajouter à vos contacts à distance." + } + } + } + }, + "SEND_MESSAGE" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Send message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer un message" + } + } + } + }, + "SEND_READ_RECEIPT_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When activated, your contacts will be notified when you have read their messages within this discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ce réglage est activé, vos correspondants recevront une confirmation lorsque vous aurez lu leurs messages dans le cadre de cette discussion." + } + } + } + }, + "SEND_READ_RECEIPTS_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Send read receipts" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirmation de lecture" + } + } + } + }, + "Sending & receiving messages and attachments" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sending & receiving messages and attachments" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer & recevoir des messages et des pièces jointes" + } + } + } + }, + "Sent" : { + "comment" : "Sent word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sent" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyé" + } + } + } + }, + "Sent messages only" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sent messages only" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Messages envoyés uniquement" + } + } + } + }, + "SERVER_DOES_NOT_SUPPORT_CALLS" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The server does not support calls." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le serveur ne permet pas de passer des appels" + } + } + } + }, + "SERVER_URL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Server URL" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "URL du serveur" + } + } + } + }, + "Set Group Name" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Set Group Name" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisir un nom pour ce groupe" + } + } + } + }, + "Settings" : { + "comment" : "Settings word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres" + } + } + } + }, + "SETTINGS_UPDATE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings update" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour de la configuration" + } + } + } + }, + "Share" : { + "comment" : "Share word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Share" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager" + } + } + } + }, + "share count attachments" : { + "comment" : "Localized dict string allowing to display a title", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Share attachment" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Share %u attachments" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No attachment to share" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager la pièce jointe" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager les %u pièces jointes" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune pièce jointe" + } + } + } + } + } + } + }, + "share count photos" : { + "comment" : "Localized dict string allowing to display a title", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Share the photo" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Share the %u photos" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No photo to share" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager la photo" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager les %u photos" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucune photo à partager" + } + } + } + } + } + } + }, + "SHARE_MSG_OLVID_TAKES_TOO_LONG_TO_START" : { + "comment" : "Body text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If the problem persists, you can help the development team by tapping the button below. This will share (only) the following message with them." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si le problème persiste, vous pouvez aider l'équipe de développement à résoudre votre problème via la bouton ci-dessous. Vous partagerez (uniquement) le message encadré ci-dessous avec elle." + } + } + } + }, + "SHARE_MY_ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Share my ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager mon ID" + } + } + } + }, + "SHARE_VIEW_PROFILE_SELECTION_BAR_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Profil" + } + } + } + }, + "SHARED_CONFIG" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shared configuration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration partagée" + } + } + } + }, + "SHARING_YOUR_ID_ALLOWS_OTHERS_TO_INVITE_YOU_REMOTELY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sharing your ID allows another Olvid user to invite you." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager votre ID permet à un autre utilisateur de vous inviter." + } + } + } + }, + "Show" : { + "comment" : "Show word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher" + } + } + } + }, + "Show my Id" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show my ID" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Montrer mon ID" + } + } + } + }, + "Show my QR code" : { + "comment" : "Title of an alert action", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show my QR code" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher mon code QR" + } + } + } + }, + "SHOW_BACKUP_SCREEN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Backup settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres de sauvegarde" + } + } + } + }, + "SHOW_CONTACT_DETAILS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show all contact details" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voir tous les détails du contact" + } + } + } + }, + "SHOW_CURRENT_COORDINATORS_OPS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show current coordinators operations" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voir les opérations courantes" + } + } + } + }, + "SHOW_IN_DISCUSSION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show in discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher dans la discussion" + } + } + } + }, + "SHOW_OWNED_IDENTITY_DETAILS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show profile informations" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher les détails de ce profil" + } + } + } + }, + "SHOW_RICH_LINK_PREVIEW_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show rich link previews" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prévisualiser" + } + } + } + }, + "SHOW_SETTINGS_SCREEN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All settings" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tous les paramètres" + } + } + } + }, + "Sign in to iCloud" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sign in to iCloud" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connectez-vous à iCloud" + } + } + } + }, + "SIGNED_DETAILS_DATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Signature date" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Date de la signature" + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_AS_KEYCLOAK_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Since this group a managed by your company's server, you cannot leave it." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comme ce groupe et géré par le serveur de votre entreprise, il ne vous est pas possible de le quitter." + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_AS_KEYCLOAK_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You cannot leave the group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous ne pouvez pas quitter le groupe" + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Since you are the only administrator of this group, you cannot leave it now (you would leave the group with no administrator). You can name another administrator among the other group members and try again." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comme vous êtes le seul administrateur de ce groupe, il vous est impossible de le quitter (vous laisseriez le groupe sans administrateur). Une fois que vous aurez nommé un autre administrateur, vous pourrez essayer à nouveau." + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You cannot leave the group for now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous ne pouvez pas quitter le groupe pour le moment" + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete this group for all members" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer ce groupe chez tous les utilisateurs" + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please note that this action is irreversible. I you confirm, this group will be deleted for all members." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer un groupe est une opération irréversible. Si vous continuez, le groupe sera supprimé chez tous les membres." + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Heads-up! Do you really wish to disband this group?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attention ! Voulez-vous vraiment supprimer ce groupe ?" + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_BUTTON_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Leave this group" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quitter ce groupe" + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please note that this action is irreversible (unless a group administrator decides to invite you again later on)." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attention, cette action est irréversible (sauf si un administrateur du groupe vous y invite à nouveau après que vous l'ayez quitté)." + } + } + } + }, + "SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you really wish to leave this group?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous vraiment quitter le groupe ?" + } + } + } + }, + "Size" : { + "comment" : "Size word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Size" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Taille" + } + } + } + }, + "SNACK_BAR_BODY_CREATE_BACKUP_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "It's time to setup backups!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il est temps de configurer les sauvegardes !" + } + } + } + }, + "SNACK_BAR_BODY_GRANT_PERMISSION_TO_RECORD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You missed a call!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez raté un appel !" + } + } + } + }, + "SNACK_BAR_BODY_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You missed a call!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez raté un appel !" + } + } + } + }, + "SNACK_BAR_BODY_INACTIVE_PROFILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your profile is inactive" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre profil est inactif" + } + } + } + }, + "SNACK_BAR_BODY_IOS_VERSION_ACCEPTABLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iOS upgrade recommended." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour d'iOS recommandée." + } + } + } + }, + "SNACK_BAR_BODY_IOS_VERSION_SHOULD_UPGRADE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iOS upgrade recommended." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour d'iOS recommandée." + } + } + } + }, + "SNACK_BAR_BODY_IOS_VERSION_WILL_BE_UNSUPPORTED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "⚠️ Support for your iOS version will soon be dropped." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "⚠️ Le support pour votre version d'iOS sera bientôt abandonné." + } + } + } + }, + "SNACK_BAR_BODY_LAST_UPLOAD_BACKUP_HAS_FAILED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The last backup failed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La dernière sauvegarde a échoué" + } + } + } + }, + "SNACK_BAR_BODY_NEW_APP_VERSION_AVAILABLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A new version of Olvid is available 🥳!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une nouvelle version d'Olvid est disponible 🥳 !" + } + } + } + }, + "SNACK_BAR_BODY_SHOULD_PERFORM_BACKUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "It's backup time!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il est temps de faire une sauvegarde !" + } + } + } + }, + "SNACK_BAR_BODY_SHOULD_VERIFY_BACKUP_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you remember your backup key?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous souvenez-vous de votre clé de sauvegarde ?" + } + } + } + }, + "SNACK_BAR_BUTTON_TITLE_CREATE_BACKUP_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show me" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_BUTTON_TITLE_GRANT_PERMISSION_TO_RECORD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show me" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_BUTTON_TITLE_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show me" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_BUTTON_TITLE_INACTIVE_PROFILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show me" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_BUTTON_TITLE_NEW_APP_VERSION_AVAILABLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_BUTTON_TITLE_SHOULD_PERFORM_BACKUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show me" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_BUTTON_TITLE_SHOULD_VERIFY_BACKUP_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show me" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_CREATE_BACKUP_KEY_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you were to lose your %@, or to uninstall Olvid by mistake, you would lose your Olvid ID, all your contacts, and all your groups 😱. Luckily for you, it is possible to setup secure backups 😅.\n\nPress \"Setup backups\" to begin." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous veniez à égarer votre %@, ou à désinstaller Olvid par erreur, vous perdriez votre ID Olvid, l'intégralité de vos contacts et tous vos groupes 😱. Fort heureusement, il est possible de les sauvegarder de façon sécurisée 😅. Appuyez sur « Paramétrer les sauvegardes » pour commencer." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_GRANT_PERMISSION_TO_RECORD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To received a call, you need to allow Olvid to access the microphone." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour recevoir des appels, vous devez autoriser Olvid à accéder au micro." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To received a call, you need to allow Olvid to access the microphone. To never miss a call again, please go to Settings and grant Olvid access to the microphone." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour recevoir des appels, vous devez autoriser Olvid à accéder au micro. Pour ne plus rater d'appel, allez dans les Réglages et autorisez l'accès au micro pour Olvid." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_INACTIVE_PROFILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your profile is not active on this device but you can reactivate it now." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre profil est inactif sur cet appareil mais vous pouvez le réactiver maintenant." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_IOS_VERSION_ACCEPTABLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To make sure you use the latest version of iOS, go to Settings > General, then tap Software Update." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour vous assurer que vous utilisez la dernière version d'iOS, accédez à l'App Réglages sur votre appareil. Allez dans Général puis touchez Mise à jour logicielle." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_IOS_VERSION_SHOULD_UPGRADE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We detected that you are not using the latest version of iOS. You are missing out on important features of Olvid. To make the most out of Olvid, you should upgrade iOS.\nTo do so, open the Settings App on your device. Go to General and tap Software Update." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous avons détecté que vous n'utilisez pas la dernière version d'iOS. Vous être en train de passer à côté de fonctionnalités importantes d'Olvid. Pour profiter d'Olvid au maximum, vous devriez mettre à jour iOS.\nPour ce faire, accédez à l'App Réglages sur votre appareil. Allez dans Général puis touchez Mise à jour logicielle." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_IOS_VERSION_WILL_BE_UNSUPPORTED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We detected that you use an iOS version that Olvid will not support anymore, starting with the next update. We appologize for this. If possible, we recommend you upgrade to the latest iOS version.\nTo do so, open the Settings App on your device. Go to General and tap Software Update." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous avons détecté que vous utilisez une version d'iOS que Olvid ne supportera plus dès la prochaine mise à jour. Nous vous présentons toutes nos excuses. Si possible, nous vous recommandons de mettre à jour iOS.\nPour ce faire, accédez à l'App Réglages sur votre appareil. Allez dans Général puis touchez Mise à jour logicielle." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_LAST_UPLOAD_BACKUP_HAS_FAILED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You should make sure your iCloud account is properly configured on this device. Once this is done, we can try again." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous vous recommandons de vérifier que vous avez bien configuré votre compte iCloud sur cet appareil. Ensuite, vous pourrez essayer à nouveau." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_NEW_APP_VERSION_AVAILABLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A new version of Olvid is available from the App Store. You are missing out amazing new features 🤓! We recommend you upgrade now 🚀." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une nouvelle version d'Olvid est disponible dès maintenant sur l'App Store. Pour ne pas rater les dernières nouveautés d'Olvid 🤓, nous vous recommandons de mettre à jour maintenant 🚀." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_SHOULD_PERFORM_BACKUP_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "In order not to lose any contact, we recommend you activate automatic backups to iCloud. Don't worry, these backups are encrypted 🤓!\nOtherwise, you may also perform manual backups on a regular basis.\n\nPress \"Setup backups\" to begin." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour ne perdre aucun contact, nous vous recommandons d'activer les sauvegardes automatiques vers iCloud. Rassurez-vous, elles sont chiffrées 🤓 ! Sinon, vous pouvez aussi effectuer des sauvegardes manuelles régulièrement. Appuyez sur « Paramétrer les sauvegardes » pour commencer." + } + } + } + }, + "SNACK_BAR_DETAILS_BODY_SHOULD_VERIFY_BACKUP_KEY_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Having an up to date Olvid backup is essential, but you need your backup key to restore it!\n\nPress \"Setup backups\" to verify your key. If you lost it, don't worry, you can generate a new one 🤗." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Avoir une sauvegarde à jour est essentiel, mais il vous faut votre clé de sauvegarde pour la restaurer ! Appuyez sur « Paramétrer les sauvegardes » pour vérifier votre clé. Si vous avez perdu cette clé, pas d'inquiétude, vous pourrez en générer une nouvelle 🤗." + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_CREATE_BACKUP_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Why should I setup backups 🧐?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pourquoi configurer les sauvegardes 🧐 ?" + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_GRANT_PERMISSION_TO_RECORD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You missed a call because Olvid is not allowed to access the microphone" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez raté un appel car Olvid n'a pas accès au micro" + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You missed a call because Olvid is not allowed to access the microphone" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez raté un appel car Olvid n'a pas accès au micro" + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_INACTIVE_PROFILE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your profile is inactive" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre profil est inactif" + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_IOS_VERSION_ACCEPTABLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iOS upgrade recommended" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour d'iOS recommandée" + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_IOS_VERSION_SHOULD_UPGRADE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iOS upgrade recommended" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise à jour d'iOS recommandée" + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_IOS_VERSION_WILL_BE_UNSUPPORTED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Support for your iOS version will soon be dropped" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le support pour votre version d'iOS sera bientôt abandonné." + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_LAST_UPLOAD_BACKUP_HAS_FAILED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Why should I fix this?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Que puis-je faire ?" + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_NEW_APP_VERSION_AVAILABLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A new version of Olvid is available 🥳!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une nouvelle version d'Olvid est disponible 🥳 !" + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_SHOULD_PERFORM_BACKUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Why should I create a backup 🧐?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pourquoi faire une sauvegarde 🧐 ?" + } + } + } + }, + "SNACK_BAR_DETAILS_TITLE_SHOULD_VERIFY_BACKUP_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Why should I remember my backup key 🧐?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pourquoi vérifier sa clé de sauvegarde 🧐 ?" + } + } + } + }, + "SNACK_BAR_TITLE_IOS_VERSION_ACCEPTABLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "More" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_TITLE_IOS_VERSION_SHOULD_UPGRADE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "More" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_TITLE_IOS_VERSION_WILL_BE_UNSUPPORTED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "More" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "SNACK_BAR_TITLE_LAST_UPLOAD_BACKUP_HAS_FAILED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show me" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Info" + } + } + } + }, + "Solution" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Solution" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Solution" + } + } + } + }, + "SOME_GROUP_MEMBERS_MUST_UPGRADE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Some members must upgrade Olvid" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Certains membres doivent mettre à jour Olvid" + } + } + } + }, + "SOME_OF_YOUR_CONTACTS_MAY_NOT_APPEAR_AS_GROUP_V2_CANDIDATES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please choose who to add to this group. Can't find the user you are looking for? Please ask them to upgrade to the latest version of Olvid 🚀." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Choisissez qui ajouter à ce groupe. Vous ne trouvez pas la personne que vous cherchez ? Demandez-lui de mettre à jour Olvid 🚀 !" + } + } + } + }, + "Sorry, the product is not available in your store 😢." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sorry, the product is not available in your store 😢." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désolé, le produit n'est pas disponible dans votre Store 😢." + } + } + } + }, + "Sorry, the purchase failed 😢. Please try again later or contact us if this problem is recurring. %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sorry, the purchase failed 😢. Please try again later or contact us if this problem is recurring.\n%@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désolé, l'achat a échoué 😢. N'hésitez pas à essayer plus tard ou à nous contacter si le problème est récurrent.\n%@" + } + } + } + }, + "Sorry..." : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sorry..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désolé..." + } + } + } + }, + "Speaker" : { + "comment" : "Speaker word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Speaker" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Haut-parleur" + } + } + } + }, + "SPEAKER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Speaker" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Haut-parleur" + } + } + } + }, + "Start free trial now" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Start free trial now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Commencer l'essai maintenant" + } + } + } + }, + "START_HERE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add your first contact!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajoutez votre premier contact !" + } + } + } + }, + "START_USING_OLVID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Welcome to Olvid 😇" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bienvenue sur Olvid 😇" + } + } + } + }, + "STD_MSG_OLVID_TAKES_TOO_LONG_TO_START" : { + "comment" : "Body text", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid seems to take longer than usual to start. This typically occurs after installing a new version. Please be reassured, none of your data was lost." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid semble prendre plus de temps que d'habitude pour démarrer. Cela peut arriver après une mise à jour. Rassurez-vous, même si le problème persiste, aucune de vos données n'a été perdue." + } + } + } + }, + "STOP_ONE_TO_ONE_DISCUSSION_WITH_CONTACT_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove from contacts?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retirer des contacts ?" + } + } + } + }, + "Stored" : { + "comment" : "Stored word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stored" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stocké" + } + } + } + }, + "Subscribe now" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscribe now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'abonner maintenant" + } + } + } + }, + "SUBSCRIBING_TO_USER_NOTIFICATIONS_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid works best if you are notified of new messages & invitations! On the next screen, you will get a chance to subscribe to user notifications.\n\nYou can always change your mind later 😇." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid est plus agréable à utiliser si vous acceptez d'être notifié à chaque nouveau message & invitation ! Le prochain écran vous donnera la possibilité de souscrire aux notifications.\n\nVous pourrez toujours changer d'avis plus tard 😇." + } + } + } + }, + "Subscription expired" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscription expired" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement expiré" + } + } + } + }, + "SUBSCRIPTION_REQUIRED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscription required" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement requis" + } + } + } + }, + "SUBSCRIPTION_STATUS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscription status" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "État de l'abonnement" + } + } + } + }, + "SYNC" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sync" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sync" + } + } + } + }, + "SYNC_REQUEST_SENT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sync request sent" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronisation envoyée" + } + } + } + }, + "TAKE_PICTURE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Take a photo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prendre une photo" + } + } + } + }, + "Tap to see the invitation" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap to see the invitation." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appuyez pour voir l'invitation." + } + } + } + }, + "Tap to see the message" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap to see the message." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appuyez pour voir le message." + } + } + } + }, + "TAP_TO_SEE_THE_REACTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap to see the reaction." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appuyez pour voir la réaction." + } + } + } + }, + "TERMS_OF_USE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terms of use" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Conditions générales d'utilisation" + } + } + } + }, + "TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_IMPOSSIBLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your identity provider indicates that an Olvid ID is already associated to the user you signed in as. You cannot proceed with the creation of your identity.\n\nPlease contact your administrator for more details." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre serveur d'identités indique qu'un ID Olvid est déjà associé avec votre compte utilisateur. Vous ne pouvez pas procéder à la création de votre identité Olvid.\nVeuillez contacter votre administrateur pour plus d'informations." + } + } + } + }, + "TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_NEEDED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your identity provider indicates that an Olvid ID is already associated to the user you signed in as. If you proceed, this Olvid ID will be revoked and your new one will be associated to this user.\n\nPlease contact your administrator for more details." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre serveur d'identités indique qu'un ID Olvid est déjà associé avec votre compte utilisateur. Si vous continuez, cet ID Olvid sera révoqué et remplacé par votre nouvel ID.\nVeuillez contacter votre administrateur si vous désirez plus d'informations." + } + } + } + }, + "Thank you!" : { + "comment" : "Body with title font", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thank you!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Merci !" + } + } + } + }, + "The backup could not be recovered" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backup could not be recovered" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La sauvegarde n'a pas pu être restaurée" + } + } + } + }, + "The backup could not be recovered (error code: %@)." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backup could not be recovered (error code: %@)." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La sauvegarde n'a pas pu être restaurée (code d'erreur : %@)." + } + } + } + }, + "The backup could not be recovered (error code: %lld)." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backup could not be recovered (error code: %lld)." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La sauvegarde n'a pas pu être récupérée (code d'erreur: %lld)" + } + } + } + }, + "The backup file could not be read" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backup file could not be read" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le fichier de sauvegarde n'a pas pu être lu" + } + } + } + }, + "The backup key below will be used to encrypt all your Olvid backups. Please keep it in a safe place.\nOlvid will periodically check you are able to enter this key to ensure you do note lose access to your backups." : { + "comment" : "Explanation shown on on top of a backup key shown to the user.", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backup key below will be used to encrypt all your Olvid backups. Please keep it in a safe place.\nOlvid will periodically check you are able to enter this key to ensure you do note lose access to your backups." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La clé de sauvegarde ci-dessous sera utilisée pour chiffrer toutes vos sauvegardes d'Olvid. Gardez-la précieusement.\nIl vous sera périodiquement demandé d'entrer cette clé pour vous assurer de ne pas perdre l'accès à vos sauvegardes." + } + } + } + }, + "The backup key is correct" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backup key is correct" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La clé de sauvegarde est correcte" + } + } + } + }, + "The backup key is incorrect" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backup key is incorrect" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La clé de sauvegarde est incorrecte" + } + } + } + }, + "The backuped data could not be decrypted." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The backuped data could not be decrypted." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La sauvegarde n'a pas pu être déchiffrée." + } + } + } + }, + "The channel establishment was restarted" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The channel establishment was restarted" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'établissement du canal sécurisé a redémarré" + } + } + } + }, + "The core you entered is incorrect. The code you need to enter is the one displayed on your contact's device." : { + "comment" : "Message of an alert", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The code you entered is incorrect. The one you need to enter is the displayed on your contact's device." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le code que vous avez entré est incorrect. Celui que vous devez entrer est affiché sur l'écran de votre contact." + } + } + } + }, + "The group owner published a new version of Group Card. Both the old and new versions are shown below.\n\nClick to update the group informations with the new version." : { + "comment" : "Body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The group owner published a new version of Group Card. Both the old and new versions are shown below.\n\nClick to update the group informations with the new version." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le propriétaire du groupe a publié une nouvelle version de la Group Card. L'ancienne et la nouvelle version se trouvent ci-dessous.\n\nCliquez pour mettre à jour les informations du groupe en utilisant la nouvelle version." + } + } + } + }, + "The integrity check of the backuped data failed." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Are you sure this is the correct backup key?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Êtes-vous certain d'avoir utilisé la bonne clé de sauvegarde ?" + } + } + } + }, + "The scanned identity is already part of your trusted contacts 🙌. Do you still wish to proceed?" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The scanned identity is already part of your trusted contacts 🙌. Do you still wish to proceed?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'identité scannée fait déjà partie de vos contacts 🙌. Voulez-vous quand même poursuivre ?" + } + } + } + }, + "The scanned identity is one of your own 😇." : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The scanned identity is one of your own 😇." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'identité scannée vous appartient 😇." + } + } + } + }, + "The scanned QR code does not appear to be an Olvid identity." : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The scanned QR code does not appear to be an Olvid identity." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le code QR ne semble pas correspondre à une identité Olvid." + } + } + } + }, + "THE_CALL_AUDIO_CONFIG_FOR_MAC_IS_AVAILABLE_IN_MENU_BAR" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Audio input/output can be configured from the menu bar or from System Settings." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les entrées/sorties audio peuvent être configurées depuis la barre de menu ou depuis les Réglages Système." + } + } + } + }, + "THE_FOLLOWING_DEVICE_WILL_REMAIN_ACTIVE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This device will remain active:" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet appareil restera actif:" + } + } + } + }, + "THE_SUBSCRIPTION_REQUEST_FAILED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The subscription request failed 😞. Please try again later." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La demande d'abonnement a échoué 😞. N'hésitez pas à essayer à nouveau plus tard." + } + } + } + }, + "THEIR_CODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Their code:" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Son code :" + } + } + } + }, + "This is the only time this key will be displayed. If you lose it, you will need to generate a new one." : { + "comment" : "Explanation shown below a backup key shown to the user.", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This is the only time this key will be displayed. If you lose it, you will need to generate a new one." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "C'est votre seule occasion de noter cette clé puisqu'elle ne sera plus jamais réaffichée. Si vous la perdez, vous devrez en générer une nouvelle." + } + } + } + }, + "This subscription is already associated to another user" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This subscription is already associated to another user" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet abonnement est déjà associé à un autre utilisateur" + } + } + } + }, + "THIS_ID_IS_THE_ONE_YOU_OWN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This ID is the one you own 😇." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cet ID est le vôtre 😇." + } + } + } + }, + "TIME_BASED_LABEL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Time based" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "En temps" + } + } + } + }, + "TIME_BASED_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If activated, messages older than the specified time will be regularly deleted." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ce réglage est activé, les messages plus anciens que le temps spécifié seront régulièrement supprimés." + } + } + } + }, + "TIME_BASED_SINGLE_DISCUSSION_SECTION_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If activated, messages older than the specified time will be regularly deleted from this discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ce réglage est activé, les messages plus anciens que le temps spécifié seront régulièrement supprimés de cette discussion." + } + } + } + }, + "TIME_INTERVAL_FOR_BG_HIDDEN_PROFILE_CLOSE_POLICY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Close hidden profile when Olvid enters background..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fermer un profil masqué quand Olvid passe en arrière plan..." + } + } + } + }, + "Timer" : { + "comment" : "Timer word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Timer" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Minuteur" + } + } + } + }, + "TITLE_BACKUP_RESTORED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Backup restored 🤩" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sauvegarde restaurée 🤩" + } + } + } + }, + "TITLE_NEVER_MISS_A_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Never miss a message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ne ratez aucun message" + } + } + } + }, + "TITLE_NEVER_MISS_A_SECURE_CALL" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Never miss a call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ne ratez aucun appel" + } + } + } + }, + "TITLE_RESET_ALL_ALERTS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset all alerts" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser les alertes" + } + } + } + }, + "TOGGLE_EDIT_PINNED_STATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit pinned discussions" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier les discussions épinglées" + } + } + } + }, + "Touch to return to call" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Touch to return to call" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Touchez pour revenir à l'appel" + } + } + } + }, + "TRUST_ORIGIN_TITLE_DIRECT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "One-to-one verification" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vérification face-à-face" + } + } + } + }, + "TRUST_ORIGIN_TITLE_GROUP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduced as part of a group discussion" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenté lors d'une création de groupe" + } + } + } + }, + "TRUST_ORIGIN_TITLE_INTRODUCTION_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduced by %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Présenté par %@" + } + } + } + }, + "TRUST_ORIGINS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trust origins" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Origines de confiance" + } + } + } + }, + "TRY_SECURE_CALLS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Try secure calls" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Essayer les appels sécurisés gratuitement" + } + } + } + }, + "TRY_SECURE_CALLS_DESCRIPTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Try secure calls for free during 30 days. This free trial can be activated only once." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Essayez les appels sécurisés gratuitement pendant 30 jours. Cette offre d'essai ne peut être activée qu'une seule fois." + } + } + } + }, + "TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_DO_DELETE_ACTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete my profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer mon profil" + } + } + } + }, + "TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To confirm the deletion of your profile, please type 'DELETE' to proceed." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour confirmer la suppression de votre profil, veuillez taper le mot 'SUPPRIMER'." + } + } + } + }, + "TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_TITLE_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirm the deletion of the profile \"%@\"" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confirmez la suppression du profil « %@ »" + } + } + } + }, + "TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_WORD_TO_TYPE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "DELETE" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "SUPPRIMER" + } + } + } + }, + "TYPE_PERSONAL_NOTE_HERE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Type a personal note here..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entrez votre note personnelle..." + } + } + } + }, + "UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your Olvid ID is currently managed by your company's identity provider. You cannot manually activate an Olvid license." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre ID Olvid est actuellement géré par le fournisseur d'identité de votre entreprise. À ce titre, vous ne pouvez pas activer de license Olvid manuellement." + } + } + } + }, + "UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION_ALT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The message distribution server associated with your Olvid ID is incompatible with the server indicated within the license." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le serveur de distribution de message spécifié dans votre ID Olvid est incompatible avec le serveur indiqué dans la licence." + } + } + } + }, + "UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION_OWNED_IDENTITY_INACTIVE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You identity is inactive on this device." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre identité est inactive sur cet appareil." + } + } + } + }, + "UNABLE_TO_ACTIVATE_LICENSE_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unable to activate license" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible d'activer la licence" + } + } + } + }, + "UNABLE_TO_PERFORM_KEYCLOAK_SEARCH" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Search could not be performed." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La recherche n'a pas pu s'effectuer." + } + } + } + }, + "UNANSWERED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unanswered" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sans réponse" + } + } + } + }, + "Unarchive" : { + "comment" : "Unarchive word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unarchive" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désarchiver" + } + } + } + }, + "Unavailable" : { + "comment" : "Unavailable word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unavailable" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Indisponible" + } + } + } + }, + "UNAVAILABLE_MESSAGE" : { + "comment" : "Body displayed when a reply-to message cannot be found.", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unavailable message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message non disponible" + } + } + } + }, + "UNBLOCK_CONTACT" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unblock contact" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Débloquer le contact" + } + } + } + }, + "UNBLOCK_CONTACT_CONFIRMATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you really wish to unblock the contact?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous débloquer le contact ?" + } + } + } + }, + "UNHIDE_OWNED_IDENTITY_ALERT_ACTION_STAY_HIDDEN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do not unhide" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ne pas démasquer" + } + } + } + }, + "UNHIDE_OWNED_IDENTITY_ALERT_ACTION_UNHIDE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unhide" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Démasquer" + } + } + } + }, + "UNHIDE_OWNED_IDENTITY_ALERT_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to unhide a profile. If you do so, the profile will be systematically shown in the profile switcher, with no need for a specific password." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous êtes sur le point de démasquer un profil. Si vous confirmez, ce profil sera sytématiquement visible, sans mot de passe spécifique." + } + } + } + }, + "UNHIDE_OWNED_IDENTITY_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unhide this profile?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Démasquer ce profil ?" + } + } + } + }, + "UNHIDE_THIS_IDENTITY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unhide this profile" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Démasquer ce profil" + } + } + } + }, + "UNKNOWN_GROUP_MEMBER_NAME" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unknown name" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nom inconnu" + } + } + } + }, + "Unlimited" : { + "comment" : "Unlimited word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unlimited" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Illimité" + } + } + } + }, + "Unlock all premium features in Olvid" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unlock all premium features in Olvid." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accès à toutes les fonctionnalités premium." + } + } + } + }, + "Unmute" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unmute" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer" + } + } + } + }, + "UNMUTE_NOTIFICATIONS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unmute notifications" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réactiver les notifications" + } + } + } + }, + "UNMUTED_NOTIFICATIONS_FOOTER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "When activated, you won't be notified of new messages in this discussion." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activez cette option pour ne plus recevoir de notifications de nouveau message dans cette discussion." + } + } + } + }, + "Unpin" : { + "comment" : "Unpin word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unpin" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Décrocher" + } + } + } + }, + "Unprocessed" : { + "comment" : "Unprocessed word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unprocessed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "À traiter" + } + } + } + }, + "Unread" : { + "comment" : "Unread word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unread" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non lu" + } + } + } + }, + "Update" : { + "comment" : "Update word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mettre à jour" + } + } + } + }, + "UPDATE_DETAILS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Use new details" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utiliser les nouveaux détails" + } + } + } + }, + "UPDATE_YOUR_ALREADY_SENT_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update your already sent message" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mettez à jour le message déjà envoyé" + } + } + } + }, + "UPGRADE_NOW" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upgrade now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mettre à jour maintenant" + } + } + } + }, + "UPGRADE_OLVID_NOW" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upgrade Olvid now" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mettre à jour Olvid maintenant" + } + } + } + }, + "Use application default" : { + "comment" : "Title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Use application default" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réglage par défaut" + } + } + } + }, + "USE_CUSTOM_API_KEY_AND_SERVER_ALERT_BODY_%@_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you wish to create a profile configured to use the server %@ and the API Key %@?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voulez-vous que le nouveau profil soit configuré avec le serveur %@ et la clé d'API %@ ?" + } + } + } + }, + "USE_CUSTOM_API_KEY_AND_SERVER_ALERT_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Use a custom API key and Server?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utiliser une clé d'API et un serveur personnalisés ?" + } + } + } + }, + "USE_OLD_DISCUSSION_INTERFACE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Use old discussion interface" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utiliser l'ancien style de discussions" + } + } + } + }, + "USER_CANNOT_MAKE_PAYMENT_DESCRIPTION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Olvid paid options are made available through the App Store in-app purchases. It seems that you cannot make a payment right now. This may happen if your credit card has expired, or if your iPhone is restricted from accessing the Apple App Store (through parental control or enterprise management)." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les options payantes d'Olvid sont disponibles via les achats intégrés de l'App Store. Il semblerait que vous ne puissiez pas y faire d'achat. Ceci peut arriver si votre moyen de paiement est invalide ou si votre compte est restreint (contrôle parental ou compte entreprise)." + } + } + } + }, + "USER_CHANGE_DETECTED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "User change detected" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Changement d'utilisateur détecté" + } + } + } + }, + "Valid license" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valid license" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Licence valide" + } + } + } + }, + "Valid until %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valid until %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valide jusqu'au %@" + } + } + } + }, + "VALIDATE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Proceed" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valider" + } + } + } + }, + "VALIDATE_SERVER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Validate server" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valider le serveur" + } + } + } + }, + "VALIDATING_ENTERPRISE_CONFIGURATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Performing an automatic configuration..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration automatique en cours..." + } + } + } + }, + "VALUE_COPIED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Value copied" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valeur copiée" + } + } + } + }, + "VERIFIY_OR_GENERATE_NEW_BACKUP_KEY" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verify or generate new backup key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vérifier ou générer une nouvelle clé" + } + } + } + }, + "Verify backup key" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verify backup key" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vérifier la clé de sauvegarde" + } + } + } + }, + "Version" : { + "comment" : "Version word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Version" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Version" + } + } + } + }, + "VoIP" : { + "comment" : "VoIP word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "VoIP" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "VoIP" + } + } + } + }, + "WARNING" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Warning" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attention" + } + } + } + }, + "WE_COULD_NOT_LOOK_FOR_AVAILABLE_SUBSCRIPTION_PLANS" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We could find any available subscription plan as an error occurred 😢. Please try again later." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous n'avons trouvé aucune offre d'abonnement... une erreur est survenue 😢. N'hésitez pas à essayer à nouveau plus tard." + } + } + } + }, + "Websocket status" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Websocket connexion status" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "État de la connexion de la websocket" + } + } + } + }, + "week" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "week" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "semaine" + } + } + } + }, + "WELCOME_ONBOARDING_SUBTITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Have we met before?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Est-ce qu'on se connaît ?" + } + } + } + }, + "WELCOME_ONBOARDING_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Welcome!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bien le bonjour !" + } + } + } + }, + "What you pasted doesn't seem to be an Olvid identity 🧐" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "What you pasted doesn't seem to be an Olvid ID 🧐" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce que vous venez de coller ne semble pas être un ID Olvid 🧐" + } + } + } + }, + "WHAT_DO_YOU_WANT_TO_DO_ONBOARDING_TITLE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "What do you want to do?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Que souhaitez-vous faire ?" + } + } + } + }, + "WILL_BE_ADDED_TO_THIS_DEVICE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Will be added to this device:" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Va être ajouté à cet appareil :" + } + } + } + }, + "WILL_SOON_BE_DELETED" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This message will soon be deleted" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ce message sera prochainement supprimé" + } + } + } + }, + "Wiped" : { + "comment" : "Wiped word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wiped" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Expiré" + } + } + } + }, + "WIPED_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wiped message 🧹" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contenu expiré 🧹" + } + } + } + }, + "WIPED_MESSAGE_BY_%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Message deleted by %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contenu supprimé par %@" + } + } + } + }, + "X" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "X" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "X" + } + } + } + }, + "XXXX" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "XXXX" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "XXXX" + } + } + } + }, + "year" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "year" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "année" + } + } + } + }, + "Yes" : { + "comment" : "Yes word, capitalized", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Yes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oui" + } + } + } + }, + "YES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Yes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oui" + } + } + } + }, + "You are about to delete a message together with its count attachments" : { + "comment" : "Message of alert", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to delete a message together with its attachment." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to delete a message together with its %u attachments." + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to delete a message." + } + } + } + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%#@Variable@" + }, + "substitutions" : { + "Variable" : { + "formatSpecifier" : "u", + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous vous apprêtez à supprimer un message et sa pièce jointe." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous vous apprêtez à supprimer un message et ses %d pièces jointes." + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous vous apprêtez à supprimer un message." + } + } + } + } + } + } + } + } + }, + "You are about to introduce X to Y and count other contacts." : { + "comment" : "UIAlertController message", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to introduce %2$@ to %3$@ and one other contact." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to introduce %2$@ to %3$@ and %1$u other contacts." + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to introduce %2$@ to %3$@." + } + } + } + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%#@Variable@" + }, + "substitutions" : { + "Variable" : { + "formatSpecifier" : "u", + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous allez présenter %2$@ à %3$@ et un autre contact." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous allez présenter %2$@ à %3$@ et %1$d autres contacts." + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous allez présenter %2$@ à %3$@." + } + } + } + } + } + } + } + } + }, + "You are about to remove %1$@ from your contacts. You will no longer be able to exchange messages with them.\n\nNote that %1$@ is a pending member in at least one group you belong to. %1$@ might get added back to your contacts in a near future. You may want to leave these groups to avoid this.\n\nReally delete this contact?" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to remove %1$@ from your contacts. You will no longer be able to exchange messages with them.\n\nNote that %1$@ is a pending member in at least one group you belong to. %1$@ might get added back to your contacts in a near future. You may want to leave these groups to avoid this.\n\nReally delete this contact?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous êtes sur le point de retirer %1$@ de vos contacts. Vous ne pourrez plus échanger de message avec cette personne.\n\nNotez que %1$@ est un membre en attente dans certains groupes auxquel vous appartenez. Il risque d'être ajouté à vos contacts à nouveau dans un futur proche. Vous pouvez vous prémunir de cela en quittant ces groupes.\n\nSouhaitez-vous supprimer ce contact ?" + } + } + } + }, + "You are about to remove %1$@ from your contacts. You will no longer be able to exchange messages with them.\n\nReally delete this contact?" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are about to delete the user %1$@.\n\nReally delete this contact?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous êtes sur le point de supprimer l'utilisateur %1$@." + } + } + } + }, + "You are invited to join a group created by %@." : { + "comment" : "Notification body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You are invited to join a group created by %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous êtes invité à rejoindre un groupe créé par %@." + } + } + } + }, + "You cannot remove %@ from your contacts as both of you belong to some common groups. You will need to leave these groups to proceed." : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You cannot delete the user %@ as both of you belong to some common groups. You will need to leave these groups to proceed." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous ne pouvez pas supprimer l'utilisateur %@ car vous appartenez à certains groupes en commun. Vous devrez quitter ces groupes pour pouvoir continuer." + } + } + } + }, + "You now appear in %@'s contacts list. A secure channel is being established. When this is done, you will be able to exchange confidential messages and more!" : { + "comment" : "Notification body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You now appear in %@'s contacts list. A secure channel is being established. When this is done, you will be able to exchange confidential messages and more!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous apparaissez dans les contacts de %@. Un canal sécurisé s'établit. Une fois fini, vous pourrez communiquer." + } + } + } + }, + "You receive a new invitation from %@. You can accept or silently discard it." : { + "comment" : "Notification body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You received a new invitation from %@. You can accept or silently discard it." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez reçu une invitation de la part de %@. Vous pouvez accepter cette invitation ou l'écarter sans notifier votre correspondant." + } + } + } + }, + "You selected to add %@ to your contacts. Do you want to proceed?" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You selected to add %@ to your contacts. Do you want to proceed?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez choisi d'ajouter %@ à vos contacts. Voulez-vous continuer ?" + } + } + } + }, + "You successfully introduced X to Y and count other contacts." : { + "comment" : "UIAlertController message", + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "You successfully introduced %2$@ to %3$@ and one other contact." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "You successfully introduced %2$@ to %3$@ and %1$u other contacts." + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "You successfully introduced %2$@ to %3$@." + } + } + } + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%#@Variable@" + }, + "substitutions" : { + "Variable" : { + "formatSpecifier" : "u", + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez présenté %2$@ à %3$@ et un autre contact." + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez présenté %2$@ à %3$@ et %1$d autres contacts." + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous avez présenté %2$@ à %3$@." + } + } + } + } + } + } + } + } + }, + "YOU_HAVE_N_DEVICES" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You have %#@count@" + }, + "substitutions" : { + "count" : { + "formatSpecifier" : "d", + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "one device" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%arg devices" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "no device" + } + } + } + } + } + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous %#@count@" + }, + "substitutions" : { + "count" : { + "formatSpecifier" : "d", + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "avez un appareil" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "avez %arg appareils" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "n'avez aucun appareil" + } + } + } + } + } + } + } + } + }, + "YOU_NEED_TO_INVITE_%@_BEFORE_HAVING_DISCUSSION_ALERT_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You cannot have a private discussion with %@ until they are part of your contacts. Do you wish to invite them now?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous ne pouvez pas discuter en privé avec %@ tant que cet utilisateur ne fait pas partie de vos contacts. Vous pouvez l'y inviter maintenant." + } + } + } + }, + "Your are about to leave a group." : { + "comment" : "Explanation", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your are about to permanently leave a group." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous vous apprêtez à quitter définitivement un groupe." + } + } + } + }, + "Your are about to permanently delete a group." : { + "comment" : "Explanation", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your are about to permanently delete a group." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous vous apprêtez à supprimer définitivement un groupe." + } + } + } + }, + "Your are one step away to create a secure channel with %@!" : { + "comment" : "Notification body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your are one step away to create a secure channel with %@!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plus qu'une étape pour établir un canal sécurisé avec %@!" + } + } + } + }, + "Your contacts will be notified when you have read their messages. This settting can be overriden on a per discussion basis." : { + "comment" : "Explantation", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your contacts will be notified when you have read their messages. This settting can be overriden on a per discussion basis." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vos correspondants recevront une confirmation lorsque vous aurez lu leurs messages. Ce paramètre peut être modifié indépendamment pour chaque discussion." + } + } + } + }, + "Your contacts won't be notified when you read their messages. This settting can be overriden on a per discussion basis." : { + "comment" : "Explantation", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your contacts won't be notified when you read their messages. This settting can be overriden on a per discussion basis." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vos correspondants ne recevront pas de confirmation lorsque vous lirez leurs messages. Ce paramètre peut être modifié indépendamment pour chaque discussion." + } + } + } + }, + "Your iCloud account is not available. Access was denied due to Parental Controls or Mobile Device Management restrictions" : { + "comment" : "Alert body", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your iCloud account is not available. Access was denied due to Parental Controls or Mobile Device Management restrictions" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre compte iCloud n'est pas accessible. L'accès a été refusé suite à des restrictions liées à du contrôle parental ou à la gestion des terminaux mobiles (MDM) de votre entreprise." + } + } + } + }, + "YOUR_CODE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your code:" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre code :" + } + } + } + }, + "YOUR_ID_WAS_COPIED" : { + "comment" : "Alert title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your ID was copied" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre ID a été copié" + } + } + } + }, + "YOUR_ID_WAS_COPIED_TO_CLIPBOARD" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your ID was copied to clipboard" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre ID a été copié dans le presse-papiers" + } + } + } + }, + "YOUR_ID_WAS_COPIED_TO_CLIPBOARD_YOU_CAN_WRITE_EMAIL_AND_COPY_IT_THERE" : { + "comment" : "Alert message", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your ID was copied to the clipboard. You can now write an email or sms and copy it there." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre ID a été copié dans le presse-papiers. Vous pouvez préparer un courriel ou un SMS et l'y copier directement." + } + } + } + }, + "YOUR_MESSAGE" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your message..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre message..." + } + } + } + }, + "YOUR_OTHER_DEVICES" : { + "localizations" : { + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your other device" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your other %d devices" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No other device" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre autre appareil" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vos %d autres appareils" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun autre appareil" + } + } + } + } + } + } + }, + "YOUR_OTHER_DEVICES_WILL_BE_DEACTIVATED_EXPLANATION" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your other devices will be deactivated within 30 days." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les autres appareils seront désactivés dans les 30 jours." + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localization/CommonString.swift b/iOSClient/ObvMessenger/ObvMessenger/Localization/CommonString.swift index 2f2a50fe..6694f52c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Localization/CommonString.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Localization/CommonString.swift @@ -45,6 +45,7 @@ extension CommonString.Word { static let Copy = NSLocalizedString("Copy", comment: "Copy word, capitalized") static let Create = NSLocalizedString("Create", comment: "Create word, capitalized") static let Date = NSLocalizedString("DATE", comment: "Date word, capitalized") + static let Deactivate = NSLocalizedString("DEACTIVATE", comment: "Deactivate word, capitalized") static let Debug = NSLocalizedString("Debug", comment: "Debug word, capitalized") static let Decline = NSLocalizedString("Decline", comment: "Decline word, capitalized") static let Default = NSLocalizedString("Default", comment: "Default word, capitalized") @@ -128,7 +129,6 @@ extension CommonString.Word { static let VoIP = NSLocalizedString("VoIP", comment: "VoIP word, capitalized") static let Wiped = NSLocalizedString("Wiped", comment: "Wiped word, capitalized") static let Yes = NSLocalizedString("Yes", comment: "Yes word, capitalized") - static let You = NSLocalizedString("You", comment: "You word, capitalized") } extension CommonString { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localization/ComposeMessageViewDocumentPickerAdapterWithDraft+Strings.swift b/iOSClient/ObvMessenger/ObvMessenger/Localization/ComposeMessageViewDocumentPickerAdapterWithDraft+Strings.swift deleted file mode 100644 index 9b4b0dbf..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Localization/ComposeMessageViewDocumentPickerAdapterWithDraft+Strings.swift +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation - -extension ComposeMessageViewDocumentPickerAdapterWithDraft { - - struct Strings { - - static let addAttachment = NSLocalizedString("Add attachment", comment: "Title of the UIAlertController allowing to add an attachment within a message to send.") - static let addAttachmentDocument = NSLocalizedString("Document", comment: "Title of the UIAlertAction allowing to add a document as an attachment within a message to send") - - static let addAttachmentPhotoAndVideoLibrary = NSLocalizedString("Photo & Video Library", comment: "Title of the UIAlertAction allowing to add a photo as an attachment within a message to send") - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localization/DiscussionsFlowViewController+Strings.swift b/iOSClient/ObvMessenger/ObvMessenger/Localization/DiscussionsFlowViewController+Strings.swift index 60ed268e..546d5c32 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Localization/DiscussionsFlowViewController+Strings.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Localization/DiscussionsFlowViewController+Strings.swift @@ -25,14 +25,14 @@ extension DiscussionsFlowViewController { struct AlertConfirmAllDiscussionMessagesDeletion { static let title = NSLocalizedString("Delete all messages?", comment: "Alert title") - static let message = NSLocalizedString("Do you wish to delete all the messages within this discussion? This action is irrevisble.", comment: "Alert message") + static let message = NSLocalizedString("Do you wish to delete all the messages within this discussion? This action is irreversible.", comment: "Alert message") static let actionDeleteAll = NSLocalizedString("Delete all messages", comment: "Alert action title") static let actionDeleteAllGlobally = NSLocalizedString("Delete all messages for all users", comment: "Alert action title") } struct AlertConfirmAllDiscussionMessagesDeletionGlobally { static let title = NSLocalizedString("Delete all messages for all users?", comment: "Alert title") - static let message = NSLocalizedString("Do you wish to delete all the messages on all the devices of all the users of this discussion? This action is irrevisble.", comment: "Alert message") + static let message = NSLocalizedString("DELETE_ALL_MSGS_ON_ALL_DEVICES__ACTION_IRREVERSIBLE", comment: "Alert message") static let actionDeleteAllGlobally = NSLocalizedString("Delete all messages for all users", comment: "Alert action title") } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localization/DiscussionsSettingsTableViewController+Strings.swift b/iOSClient/ObvMessenger/ObvMessenger/Localization/DiscussionsSettingsTableViewController+Strings.swift deleted file mode 100644 index dc2dbca7..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Localization/DiscussionsSettingsTableViewController+Strings.swift +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation - -extension DiscussionsSettingsTableViewController { - - struct Strings { - struct SendReadRecceipts { - static let explanationWhenYes = NSLocalizedString("Your contacts will be notified when you have read their messages. This settting can be overriden on a per discussion basis.", comment: "Explantation") - static let explanationWhenNo = NSLocalizedString("Your contacts won't be notified when you read their messages. This settting can be overriden on a per discussion basis.", comment: "Explantation") - } - struct RichLinks { - static let title = NSLocalizedString("Rich link preview", comment: "Cell title") - static let sentMessagesOnly = NSLocalizedString("Sent messages only", comment: "") - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localization/MetaFlowController+Strings.swift b/iOSClient/ObvMessenger/ObvMessenger/Localization/MetaFlowController+Strings.swift index 18328241..a577e8f1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Localization/MetaFlowController+Strings.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Localization/MetaFlowController+Strings.swift @@ -19,6 +19,8 @@ import Foundation import ObvUICoreData +import ObvSettings + extension MetaFlowController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localization/SingleDiscussionViewController+Strings.swift b/iOSClient/ObvMessenger/ObvMessenger/Localization/SingleDiscussionViewController+Strings.swift deleted file mode 100644 index 58979a11..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Localization/SingleDiscussionViewController+Strings.swift +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation - -extension SingleDiscussionViewController { - - struct Strings { - - static let whatToDoWithFileTitle = NSLocalizedString("File Management", comment: "Title of alert") - static let whatToDoWithFileMessage = NSLocalizedString("What do you want to do with this file?", comment: "Message of alert") - static let whatToDoWithFileActionExport = NSLocalizedString("Export to the system's File App", comment: "Action of alert") - static let whatToDoWithFileActionDelete = NSLocalizedString("Delete file", comment: "Action of alert") - - static let deleteMessageTitle = NSLocalizedString("Delete Message", comment: "Title of alert") - - static let deleteFileTitle = NSLocalizedString("Delete File", comment: "Title of alert") - static let deleteFileMessage = NSLocalizedString("You are about to delete a file.", comment: "Message of alert") - static let deleteFileActionDelete = NSLocalizedString("Delete file", comment: "Action of alert") - - - static let deleteMessageAndAttachmentsTitle = NSLocalizedString("Delete Message and Attachments", comment: "Title of alert") - static let deleteMessageAndAttachmentsMessage = { (numberOfAttachedFyles: Int) in - String.localizedStringWithFormat(NSLocalizedString("You are about to delete a message together with its count attachments", comment: "Message of alert"), numberOfAttachedFyles) - } - - struct Alerts { - struct WaitingForChannel { - - static let title = NSLocalizedString("Your Messages are on hold", comment: "Alert title") - static let message = NSLocalizedString("Your messages will be automatically sent once a secure channel is established for this discussion. Until then, they will remain on hold.", comment: "Text used within the footer in a discussion.") - } - struct WaitingForFirstGroupMember { - static let title = WaitingForChannel.title - static let message = NSLocalizedString("Your messages will be automatically sent once a contact accepts to join this group discussion. Until then, they will remain on hold.", comment: "Text used within the footer in a discussion.") - } - struct EditSentMessageBody { - static let title = NSLocalizedString("EDIT_YOUR_MESSAGE", comment: "") - static let message = NSLocalizedString("UPDATE_YOUR_ALREADY_SENT_MESSAGE", comment: "") - } - } - - static let sharePhotos = { (count: Int) in - return String.localizedStringWithFormat(NSLocalizedString("share count photos", comment: "Localized dict string allowing to display a title"), count) - } - - static let shareAttachments = { (count: Int) in - return String.localizedStringWithFormat(NSLocalizedString("share count attachments", comment: "Localized dict string allowing to display a title"), count) - } - - static let mutedNotificationsConfirmation = { (date: String) in String.localizedStringWithFormat(NSLocalizedString("MUTED_NOTIFICATIONS_CONFIRMATION_%@", comment: ""), date)} - - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localization/UserNotificationCreator+Strings.swift b/iOSClient/ObvMessenger/ObvMessenger/Localization/UserNotificationCreator+Strings.swift index bbd9a868..af88f895 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Localization/UserNotificationCreator+Strings.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Localization/UserNotificationCreator+Strings.swift @@ -97,20 +97,6 @@ extension UserNotificationCreator { } } - struct AutoconfirmedContactIntroduction { - static let title = CommonString.Title.newContact - static let body = { (mediatorName: String, contactName: String) in - String.localizedStringWithFormat(NSLocalizedString("%@ was added to your contacts following an introduction by %@.", comment: "Invitation details"), contactName, mediatorName) - } - } - - struct IncreaseMediatorTrustLevelRequired { - static let title = NSLocalizedString("Invitation received", comment: "Invitation subtitle") - static let body = { (mediatorName: String, contactName: String) in - String.localizedStringWithFormat(NSLocalizedString("%1$@ wants to introduce you to %2$@.", comment: "Invitation details"), mediatorName, contactName) - } - } - struct MissedCall { static let title = NSLocalizedString("MISSED_CALL", comment: "") } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/CallBannerView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/CallBannerView.swift index 39f9dd5d..6e59ddd4 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/CallBannerView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/CallBannerView.swift @@ -21,6 +21,8 @@ import Foundation import ObvUI import UIKit import ObvUICoreData +import ObvDesignSystem + final class CallBannerView: UIView { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/AllContacts/AllContactsViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/AllContacts/AllContactsViewController.swift index c78e213f..587bd845 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/AllContacts/AllContactsViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/AllContacts/AllContactsViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,8 @@ import ObvUI import ObvTypes import UIKit import ObvUICoreData +import ObvSettings +import ObvDesignSystem final class AllContactsViewController: ShowOwnedIdentityButtonUIViewController, OlvidMenuProvider, ViewControllerWithEllipsisCircleRightBarButtonItem { @@ -89,18 +91,8 @@ extension AllContactsViewController { addAndConfigureContactsTableViewController() definesPresentationContext = true - if #available(iOS 14, *) { - navigationItem.rightBarButtonItem = getConfiguredEllipsisCircleRightBarButtonItem() - } else { - navigationItem.rightBarButtonItem = getConfiguredEllipsisCircleRightBarButtonItem(selector: #selector(ellipsisButtonTappedSelector)) - } - - } + navigationItem.rightBarButtonItem = getConfiguredEllipsisCircleRightBarButtonItem() - - @available(iOS, introduced: 13.0, deprecated: 14.0, message: "Used because iOS 13 does not support UIMenu on UIBarButtonItem") - @objc private func ellipsisButtonTappedSelector() { - ellipsisButtonTapped(sourceBarButtonItem: navigationItem.rightBarButtonItem) } @@ -184,32 +176,14 @@ extension AllContactsViewController { } - @available(iOS, introduced: 13, deprecated: 14, message: "Use getFirstParentMenuAvailable() instead") - func provideAlertActions() -> [UIAlertAction] { - - // Update the parents alerts - var alertActions = [UIAlertAction]() - if let parentAlertActions = parent?.getFirstAlertActionsAvailable() { - alertActions.append(contentsOf: parentAlertActions) - } - - // We do not provide the option to change the sort order under iOS 13 - - return alertActions - - } - - private func observeContactsSortOrderDidChangeNotifications() { - if #available(iOS 14.0, *) { - let token = ObvMessengerSettingsNotifications.observeContactsSortOrderDidChange(queue: OperationQueue.main) { [weak self] in - guard let _self = self else { return } - _self.sortButtonItemTimer?.invalidate() - _self.sortButtonItem?.menu = _self.provideMenu() - _self.sortButtonItem?.isEnabled = true - } - notificationTokens.append(token) + let token = ObvMessengerSettingsNotifications.observeContactsSortOrderDidChange(queue: OperationQueue.main) { [weak self] in + guard let _self = self else { return } + _self.sortButtonItemTimer?.invalidate() + _self.sortButtonItem?.menu = _self.provideMenu() + _self.sortButtonItem?.isEnabled = true } + notificationTokens.append(token) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/CommonViews/OlvidCardView/OlvidCardView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/CommonViews/OlvidCardView/OlvidCardView.swift index e19f2628..aa27d946 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/CommonViews/OlvidCardView/OlvidCardView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/CommonViews/OlvidCardView/OlvidCardView.swift @@ -22,6 +22,9 @@ import ObvEngine import ObvTypes import ObvCrypto import ObvUI +import ObvDesignSystem +import ObvSettings + class OlvidCardView: UIView { @@ -76,7 +79,7 @@ extension OlvidCardView { self.titleLabel.text = groupDetails.coreDetails.name self.subtitleLabel.text = groupDetails.coreDetails.description - circledInitials.identityColors = AppTheme.shared.groupColors(forGroupUid: groupUid) + circledInitials.identityColors = AppTheme.shared.groupColors(forGroupUid: groupUid, using: ObvMessengerSettings.Interface.identityColorStyle) if let photoURL = groupDetails.photoURL { circledInitials.showPhoto(fromUrl: photoURL) } else { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SingleContactDetailedInfos/ContactDetailedInfosView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SingleContactDetailedInfos/ContactDetailedInfosView.swift index 7b5a757f..224ca6ed 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SingleContactDetailedInfos/ContactDetailedInfosView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SingleContactDetailedInfos/ContactDetailedInfosView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,6 +21,7 @@ import SwiftUI import ObvTypes import ObvUI import ObvUICoreData +import ObvDesignSystem struct ContactDetailedInfosView: View { @@ -41,13 +42,13 @@ struct ContactDetailedInfosView: View { .trimmingCharacters(in: .whitespacesAndNewlines) } - private var circledTextView: Text? { + private var circledText: String? { let component = [titlePart1, titlePart2] .compactMap({ $0?.trimmingCharacters(in: .whitespacesAndNewlines) }) .filter({ !$0.isEmpty }) .first if let char = component?.first { - return Text(String(char)) + return String(char) } else { return nil } @@ -58,6 +59,38 @@ struct ContactDetailedInfosView: View { return UIImage(contentsOfFile: url.path) } + private var textViewModel: TextView.Model { + .init(titlePart1: titlePart1, + titlePart2: titlePart2, + subtitle: contact.identityCoreDetails?.position, + subsubtitle: contact.identityCoreDetails?.company) + } + + private var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: circledText, + icon: .person, + profilePicture: profilePicture, + showGreenShield: contact.isCertifiedByOwnKeycloak, + showRedShield: !contact.isActive) + } + + private var circleAndTitlesViewModelContent: CircleAndTitlesView.Model.Content { + .init(textViewModel: textViewModel, + profilePictureViewModelContent: profilePictureViewModelContent) + } + + private var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: contact.cryptoId.colors.background, + foreground: contact.cryptoId.colors.text) + } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContent, + colors: initialCircleViewModelColors, + displayMode: .normal, + editionMode: .none) + } + var body: some View { ZStack { Color(AppTheme.shared.colorScheme.systemBackground) @@ -68,21 +101,8 @@ struct ContactDetailedInfosView: View { ObvCardView(padding: 0) { VStack(alignment: .leading, spacing: 0) { - - CircleAndTitlesView( - titlePart1: titlePart1, - titlePart2: titlePart2, - subtitle: contact.identityCoreDetails?.position, - subsubtitle: contact.identityCoreDetails?.company, - circleBackgroundColor: contact.cryptoId.colors.background, - circleTextColor: contact.cryptoId.colors.text, - circledTextView: circledTextView, - systemImage: .person, - profilePicture: profilePicture, - showGreenShield: contact.isCertifiedByOwnKeycloak, - showRedShield: !contact.isActive, - editionMode: .none, - displayMode: .normal) + + CircleAndTitlesView(model: circleAndTitlesViewModel) .padding() OlvidButton(style: .blue, title: Text(CommonString.Word.Back), systemIcon: .arrowshapeTurnUpBackwardFill) { @@ -155,9 +175,7 @@ struct ContactDetailedInfosView: View { Text("None") } else { ForEach(contact.sortedDevices.indices, id: \.self) { index in - ObvSimpleListItemView( - title: Text("DEVICE \(index+1)"), - value: contact.sortedDevices[index].identifier.hexString()) + SingleContactDeviceView(index: index, device: contact.sortedDevices[index]) } } } header: { @@ -176,7 +194,7 @@ struct ContactDetailedInfosView: View { } else { HStack { Spacer() - ObvProgressView() + ProgressView() Spacer() } } @@ -209,3 +227,42 @@ struct ContactDetailedInfosView: View { } + + + +fileprivate struct SingleContactDeviceView: View { + + let index: Int + @ObservedObject var device: PersistedObvContactDevice + + private var secureChannelStatus: LocalizedStringKey { + switch device.secureChannelStatus { + case .creationInProgress, .none: + return "SECURE_CHANNEL_CREATION_IN_PROGRESS" + case .created: + return "SECURE_CHANNEL_CREATED" + } + } + + var body: some View { + HStack(alignment: .center, spacing: 0) { + VStack(alignment: .leading, spacing: 0) { + Text("DEVICE \(index+1)") + .foregroundColor(Color(AppTheme.shared.colorScheme.label)) + .font(.headline) + .padding(.bottom, 4.0) + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + .font(.body) + Text(secureChannelStatus) + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + .font(.body) + .padding(.bottom, 4.0) + Text(device.identifier.hexString()) + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + .font(.body) + HStack { Spacer() } + } + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SingleContactDetailedInfos/SingleContactDetailedInfosViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SingleContactDetailedInfos/SingleContactDetailedInfosViewController.swift deleted file mode 100644 index a4e14eb2..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SingleContactDetailedInfos/SingleContactDetailedInfosViewController.swift +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import ObvEngine -import ObvUI -import ObvUICoreData - - -class SingleContactDetailedInfosViewController: UIViewController { - - private let persistedObvContactIdentity: PersistedObvContactIdentity - - private let scrollView = UIScrollView() - private let mainStackView = UIStackView() - private let obvEngine: ObvEngine - - init(persistedObvContactIdentity: PersistedObvContactIdentity, obvEngine: ObvEngine) { - self.persistedObvContactIdentity = persistedObvContactIdentity - self.obvEngine = obvEngine - super.init(nibName: nil, bundle: nil) - } - - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - - override func viewDidLoad() { - - scrollView.translatesAutoresizingMaskIntoConstraints = false - scrollView.backgroundColor = AppTheme.shared.colorScheme.systemBackground - scrollView.alwaysBounceHorizontal = false - scrollView.isScrollEnabled = true - self.view.addSubview(scrollView) - - mainStackView.translatesAutoresizingMaskIntoConstraints = false - mainStackView.axis = .vertical - mainStackView.alignment = .leading - mainStackView.spacing = 8 - scrollView.addSubview(mainStackView) - - addTitleAndValueLabels(title: Strings.customDisplayName, value: persistedObvContactIdentity.customDisplayName ?? CommonString.Word.None) - addTitleAndValueLabels(title: Strings.fullDisplayName, value: persistedObvContactIdentity.fullDisplayName) - addTitleAndValueLabels(title: CommonString.Word.Identity, value: persistedObvContactIdentity.cryptoId.getIdentity().hexString()) - - // Get the number of known devices for this contact - if let ownedIdentity = persistedObvContactIdentity.ownedIdentity { - let allContactDeviceIdentifiers: Set - let contactDevicesIdentifiersWithChannel: Set - let contactDeviceIdentifiersWithChannelCreation: Set - do { - allContactDeviceIdentifiers = try obvEngine.getContactDeviceIdentifiersOfContactIdentity(with: persistedObvContactIdentity.cryptoId, ofOwnedIdentityWith: ownedIdentity.cryptoId) - let contactDevicesWithChannel = try obvEngine.getAllObliviousChannelsEstablishedWithContactIdentity(with: persistedObvContactIdentity.cryptoId, ofOwnedIdentyWith: ownedIdentity.cryptoId) - contactDevicesIdentifiersWithChannel = Set(contactDevicesWithChannel.map({ $0.identifier })) - contactDeviceIdentifiersWithChannelCreation = try obvEngine.getContactDeviceIdentifiersForWhichAChannelCreationProtocolExists(with: persistedObvContactIdentity.cryptoId, ofOwnedIdentityWith: ownedIdentity.cryptoId) - } catch { - assertionFailure() - return - } - let values: [String] = allContactDeviceIdentifiers.map({ - let deviceName = String($0.hexString().prefix(16)) - let status: String - if contactDevicesIdentifiersWithChannel.contains($0) { - status = "✔︎" - } else if contactDeviceIdentifiersWithChannelCreation.contains($0) { - status = "⚙︎" - } else { - status = "⨉" - } - return [status, deviceName].joined(separator: " ") - }) - addTitleAndValuesLabels(title: CommonString.Word.Devices, values: values) - } - - setupConstraints() - - } - - - private func addTitleAndValueLabels(title: String, value: String) { - let titleLabel = UILabel() - titleLabel.font = UIFont.preferredFont(forTextStyle: .headline) - titleLabel.textColor = AppTheme.shared.colorScheme.label - titleLabel.text = title - mainStackView.addArrangedSubview(titleLabel) - - let valueLabel = UILabel() - valueLabel.font = UIFont.preferredFont(forTextStyle: .body) - valueLabel.numberOfLines = 0 - valueLabel.textColor = AppTheme.shared.colorScheme.secondaryLabel - valueLabel.text = value - mainStackView.addArrangedSubview(valueLabel) - } - - private func addTitleAndValuesLabels(title: String, values: [String]) { - let titleLabel = UILabel() - titleLabel.font = UIFont.preferredFont(forTextStyle: .headline) - titleLabel.textColor = AppTheme.shared.colorScheme.label - titleLabel.text = title - mainStackView.addArrangedSubview(titleLabel) - - for value in values { - let valueLabel = UILabel() - valueLabel.font = UIFont.preferredFont(forTextStyle: .body) - valueLabel.numberOfLines = 0 - valueLabel.textColor = AppTheme.shared.colorScheme.secondaryLabel - valueLabel.text = value - mainStackView.addArrangedSubview(valueLabel) - } - } - - - - private func setupConstraints() { - - let constraints = [ - scrollView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 0), - scrollView.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: 0), - scrollView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 0), - scrollView.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 0), - mainStackView.widthAnchor.constraint(equalTo: self.view.widthAnchor, constant: -32), - mainStackView.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: 16), - mainStackView.rightAnchor.constraint(equalTo: scrollView.rightAnchor, constant: 16), - mainStackView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor, constant: 16), - mainStackView.leftAnchor.constraint(equalTo: scrollView.leftAnchor, constant: 16), - ] - NSLayoutConstraint.activate(constraints) - - } - -} - -private extension SingleContactDetailedInfosViewController { - - private struct Strings { - - static let customDisplayName = NSLocalizedString("Custom Display Name", comment: "") - static let fullDisplayName = NSLocalizedString("Full Display Name", comment: "") - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/EditSingleContactIdentityNicknameNavigationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/EditSingleContactIdentityNicknameNavigationView.swift deleted file mode 100644 index 548bedb8..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/EditSingleContactIdentityNicknameNavigationView.swift +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import ObvUI -import SwiftUI - - -struct EditSingleContactIdentityNicknameNavigationView: View { - - @ObservedObject var singleIdentity: SingleContactIdentity - let saveAction: () -> Void - let dismissAction: () -> Void - - var body: some View { - NavigationView { - EditSingleContactIdentityNicknameView(singleIdentity: singleIdentity, saveAction: saveAction) - .navigationBarTitle(Text("EDIT_CONTACT_NICKNAME"), displayMode: .inline) - .navigationBarItems(leading: - Button(action: dismissAction, - label: { - Image(systemName: "xmark.circle.fill") - .font(Font.system(size: 24, weight: .semibold, design: .default)) - }) - .foregroundColor(Color(AppTheme.shared.colorScheme.tertiaryLabel))) - } - .navigationViewStyle(StackNavigationViewStyle()) - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/EditSingleContactIdentityNicknameView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/EditSingleContactIdentityNicknameView.swift deleted file mode 100644 index 97144993..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/EditSingleContactIdentityNicknameView.swift +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import ObvUICoreData -import SwiftUI - - - -struct EditSingleContactIdentityNicknameView: View { - - @ObservedObject var singleIdentity: SingleContactIdentity - let saveAction: () -> Void - /// Used to prevent small screen settings when the keyboard appears on a large screen - @State private var largeScreenUsedOnce = false - - private var canSave: Bool { - return singleIdentity.hasChanged - } - - private var disableSaveButton: Bool { - !canSave - } - - private var disableResetButton: Bool { - singleIdentity.customDisplayName == nil && singleIdentity.customPhotoURL == nil - } - - private var deviceName: String { - UIDevice.current.name - } - - var body: some View { - ZStack { - Color(AppTheme.shared.colorScheme.systemBackground) - .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) - .edgesIgnoringSafeArea(.all) - VStack(alignment: .leading, spacing: 0) { - VStack(spacing: 0) { - ObvCardView { - HStack { - /// REMARK the given singleIdentity does not allow to modify its picture, but here in nickname editor we want to force the picture edition) - ContactIdentityCardContentView( - model: singleIdentity, - preferredDetails: .customOrTrusted, - editionMode: singleIdentity.editCustomPictureMode) - Spacer() - } - } - } - .padding(.horizontal) - .padding(.top) - .fixedSize(horizontal: false, vertical: true) - Form { - Section(footer: - VStack(spacing: 16) { - Text("EDIT_CONTACT_NICKNAME_EXPLANATION_\(deviceName)") - HStack(spacing: 16) { - OlvidButton(style: .standard, - title: Text(CommonString.Word.Reset), - systemIcon: .pencilSlash, - action: { - withAnimation { - singleIdentity.customDisplayName = nil - singleIdentity.customPhotoURL = nil - } - }) - .disabled(disableResetButton) - OlvidButton(style: .blue, - title: Text(CommonString.Word.Save), - systemIcon: .checkmarkSquareFill, - action: { - saveAction() - }) - .disabled(disableSaveButton) - } - } - ) { - TextField(LocalizedStringKey("FORM_NICKNAME"), text: Binding.init( - get: { singleIdentity.customDisplayName ?? "" }, - set: { - singleIdentity.customDisplayName = $0.isEmpty ? nil : $0 - })) - .disableAutocorrection(true) - } - } - } - } - } -} - - -struct EditSingleContactIdentityNicknameView_Previews: PreviewProvider { - - static let testData = [ - SingleContactIdentity( - firstName: "Marco", - lastName: "Polo", - position: "Traveler", - company: "Venezia", - publishedContactDetails: nil, - contactStatus: .seenPublishedDetails, - contactHasNoDevice: false, - contactIsOneToOne: true, - isActive: true), - SingleContactIdentity(firstName: "Marco", - lastName: "Polo", - position: "Traveler", - company: "Venezia", - customDisplayName: "Il Milione", - publishedContactDetails: nil, - contactStatus: .seenPublishedDetails, - contactHasNoDevice: false, - contactIsOneToOne: true, - isActive: true), - ] - - static var previews: some View { - Group { - ForEach(testData) { - EditSingleContactIdentityNicknameView(singleIdentity: $0, - saveAction: {}) - } - ForEach(testData) { - EditSingleContactIdentityNicknameView(singleIdentity: $0, - saveAction: {}) - .environment(\.colorScheme, .dark) - } - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ContactDeviceView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ContactDeviceView.swift new file mode 100644 index 00000000..56993193 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ContactDeviceView.swift @@ -0,0 +1,211 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvUICoreData +import ObvUI +import UI_SystemIcon +import ObvTypes +import ObvEngine +import ObvDesignSystem + + +// MARK: - ContactDeviceViewModelProtocol + +protocol ContactDeviceViewModelProtocol: ObservableObject { + + var contactIdentifier: ObvContactIdentifier { get throws } + var secureChannelStatus: PersistedObvContactDevice.SecureChannelStatus? { get } + var deviceIdentifier: Data { get } + var name: String { get } + +} + + +// MARK: - ContactDeviceViewActionDelegate + +protocol ContactDeviceViewActionsDelegate { + + func userWantsToRestartChannelCreationWithContactDevice(contactIdentifier: ObvContactIdentifier, deviceIdentifier: Data) async + +} + +// MARK: - ContactDeviceView + +struct ContactDeviceView: View { + + @ObservedObject var model: Model + let actions: ContactDeviceViewActionsDelegate + + + private var textForSecureChannelStatus: LocalizedStringKey { + switch model.secureChannelStatus { + case .creationInProgress, .none: + return "SECURE_CHANNEL_CREATION_IN_PROGRESS" + case .created: + return "SECURE_CHANNEL_CREATED" + } + } + + + private var systemIconForSecureChannelStatus: SystemIcon { + switch model.secureChannelStatus { + case .creationInProgress, .none: + return .arrowTriangle2CirclepathCircle + case .created: + return .checkmarkShield + } + } + + + private var colorForSecureChannelStatus: Color { + switch model.secureChannelStatus { + case .creationInProgress, .none: + return .primary + case .created: + return .green + } + } + + + private func userWantsToRestartChannelCreationWithThisDevice() { + guard let contactIdentifier = try? model.contactIdentifier else { assertionFailure(); return } + let deviceIdentifier = model.deviceIdentifier + Task { + await actions.userWantsToRestartChannelCreationWithContactDevice(contactIdentifier: contactIdentifier, deviceIdentifier: deviceIdentifier) + } + } + + + var body: some View { + VStack(alignment: .leading) { + HStack { + Text("DEVICE \(model.name)") + .font(.headline) + .foregroundColor(Color(AppTheme.shared.colorScheme.label)) + Spacer() + } + .padding(.bottom, 4.0) + HStack { + Label { + Text(textForSecureChannelStatus) + .font(.body) + .foregroundColor(.primary) + } icon: { + Image(systemIcon: systemIconForSecureChannelStatus) + .foregroundColor(colorForSecureChannelStatus) + } + } + .padding(.bottom, 2.0) + Button(action: userWantsToRestartChannelCreationWithThisDevice) { + Label(LocalizedStringKey("RECREATE_SECURE_CHANNEL_WITH_THIS_DEVICE"), systemIcon: .restartCircle) + } + .padding(.bottom, 4.0) + } + } + +} + + + + + + + +// MARK: - Previews + + +struct ContactDeviceView_Previews: PreviewProvider { + + private class ContactDeviceViewModelForPreviews: ContactDeviceViewModelProtocol { + + let contactIdentifier: ObvContactIdentifier + let secureChannelStatus: ObvUICoreData.PersistedObvContactDevice.SecureChannelStatus? + let deviceIdentifier: Data + let name: String + + init(contactIdentifier: ObvContactIdentifier, secureChannelStatus: ObvUICoreData.PersistedObvContactDevice.SecureChannelStatus?, deviceIdentifier: Data, name: String) { + self.contactIdentifier = contactIdentifier + self.secureChannelStatus = secureChannelStatus + self.deviceIdentifier = deviceIdentifier + self.name = name + } + + } + + + private struct ContactDeviceViewActionsForPreviews: ContactDeviceViewActionsDelegate { + func userWantsToRestartChannelCreationWithContactDevice(contactIdentifier: ObvContactIdentifier, deviceIdentifier: Data) async {} + } + + private static let identitiesAsURLs: [URL] = [ + URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")!, + URL(string: "https://invitation.olvid.io/#AwAAAHAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAAVZx8aqikpCe4h3ayCwgKBf-2nDwz-a6vxUo3-ep5azkBUjimUf3J--GXI8WTc2NIysQbw5fxmsY9TpjnDsZMW-AAAAAACEJvYiBXb3Jr")!, + ] + + private static let contactIdentifier: ObvContactIdentifier = { + let ownedCryptoId = ObvURLIdentity(urlRepresentation: identitiesAsURLs[0])!.cryptoId + let contactCryptoId = ObvURLIdentity(urlRepresentation: identitiesAsURLs[1])!.cryptoId + return ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + }() + + + private static let models: [ContactDeviceViewModelForPreviews] = { + [ + ContactDeviceViewModelForPreviews( + contactIdentifier: contactIdentifier, + secureChannelStatus: .creationInProgress, + deviceIdentifier: Data(repeating: 0, count: 16), + name: String("1234")), + ContactDeviceViewModelForPreviews( + contactIdentifier: contactIdentifier, + secureChannelStatus: .created, + deviceIdentifier: Data(repeating: 0, count: 16), + name: String("5678")), + ContactDeviceViewModelForPreviews( + contactIdentifier: contactIdentifier, + secureChannelStatus: nil, + deviceIdentifier: Data(repeating: 0, count: 16), + name: String("5678")), + ] + }() + + static var previews: some View { + Group { + ContactDeviceView( + model: models[0], + actions: ContactDeviceViewActionsForPreviews()) + .previewLayout(PreviewLayout.sizeThatFits) + .previewDisplayName("Creation in progress") + + ContactDeviceView( + model: models[1], + actions: ContactDeviceViewActionsForPreviews()) + .previewLayout(PreviewLayout.sizeThatFits) + .previewDisplayName("Channel created") + + ContactDeviceView( + model: models[2], + actions: ContactDeviceViewActionsForPreviews()) + .previewLayout(PreviewLayout.sizeThatFits) + .previewDisplayName("Channel status not specified") + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ContactDevicesListView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ContactDevicesListView.swift new file mode 100644 index 00000000..29218cfa --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ContactDevicesListView.swift @@ -0,0 +1,190 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvUICoreData +import CoreData +import ObvTypes +import ObvEngine + + + +// MARK: - ContactDevicesListViewModelProtocol + +protocol ContactDevicesListViewModelProtocol: ObservableObject { + + associatedtype ContactDeviceViewModel: ContactDeviceViewModelProtocol + + var contactIdentifier: ObvContactIdentifier { get throws } + var contactDevices: [ContactDeviceViewModel] { get } + +} + + +protocol ContactDevicesListViewActionsDelegate: AnyObject, ContactDeviceViewActionsDelegate { + + func userWantsToClearAllContactDevices(contactIdentifier: ObvContactIdentifier) async + func userWantsToSearchForNewContactDevices(contactIdentifier: ObvContactIdentifier) async + +} + + +// MARK: - ContactDevicesListView + +struct ContactDevicesListView: View { + + @ObservedObject var model: Model + let actions: ContactDevicesListViewActionsDelegate + + + private func userWantsToSearchForNewDevicesOfThisContact() { + guard let contactIdentifier = try? model.contactIdentifier else { assertionFailure(); return } + Task { + await actions.userWantsToSearchForNewContactDevices(contactIdentifier: contactIdentifier) + } + } + + + private func userWantsToClearAllDevicesOfThisContact() { + guard let contactIdentifier = try? model.contactIdentifier else { assertionFailure(); return } + Task { + await actions.userWantsToClearAllContactDevices(contactIdentifier: contactIdentifier) + } + } + + + var body: some View { + ScrollView { + VStack { + ObvCardView { + ForEach(model.contactDevices, id: \.deviceIdentifier) { device in + ContactDeviceView(model: device, actions: actions) + } + } + OlvidButton( + style: .standard, + title: Text("SEARCH_FOR_NEW_DEVICES"), + systemIcon: .magnifyingglass, + action: userWantsToSearchForNewDevicesOfThisContact) + OlvidButton( + style: .red, + title: Text("CLEAR_ALL_DEVICES"), + systemIcon: .trash, + action: userWantsToClearAllDevicesOfThisContact) + Spacer() + }.padding() + } + } + +} + + +// MARK: - Previews + + +struct ContactDevicesListView_Previews: PreviewProvider { + + private class ContactDeviceViewModelForPreviews: ContactDeviceViewModelProtocol { + + let contactIdentifier: ObvContactIdentifier + let secureChannelStatus: ObvUICoreData.PersistedObvContactDevice.SecureChannelStatus? + let deviceIdentifier: Data + let name: String + + init(contactIdentifier: ObvContactIdentifier, secureChannelStatus: ObvUICoreData.PersistedObvContactDevice.SecureChannelStatus?, deviceIdentifier: Data, name: String) { + self.contactIdentifier = contactIdentifier + self.secureChannelStatus = secureChannelStatus + self.deviceIdentifier = deviceIdentifier + self.name = name + } + + } + + + private class ContactDevicesListViewForPreviews: ContactDevicesListViewModelProtocol { + + let contactIdentifier: ObvContactIdentifier + let contactDevices: [ContactDeviceViewModelForPreviews] + + init(contactIdentifier: ObvContactIdentifier, contactDevices: [ContactDeviceViewModelForPreviews]) { + self.contactIdentifier = contactIdentifier + self.contactDevices = contactDevices + } + + } + + + private final class ContactDevicesListViewActionsForPreviews: ContactDevicesListViewActionsDelegate { + func userWantsToClearAllContactDevices(contactIdentifier: ObvContactIdentifier) {} + func userWantsToSearchForNewContactDevices(contactIdentifier: ObvContactIdentifier) {} + func userWantsToRestartChannelCreationWithContactDevice(contactIdentifier: ObvContactIdentifier, deviceIdentifier: Data) async {} + } + + + private static let identitiesAsURLs: [URL] = [ + URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")!, + URL(string: "https://invitation.olvid.io/#AwAAAHAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAAVZx8aqikpCe4h3ayCwgKBf-2nDwz-a6vxUo3-ep5azkBUjimUf3J--GXI8WTc2NIysQbw5fxmsY9TpjnDsZMW-AAAAAACEJvYiBXb3Jr")!, + ] + + private static let contactIdentifier: ObvContactIdentifier = { + let ownedCryptoId = ObvURLIdentity(urlRepresentation: identitiesAsURLs[0])!.cryptoId + let contactCryptoId = ObvURLIdentity(urlRepresentation: identitiesAsURLs[1])!.cryptoId + return ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + }() + + + private static let contactDevices: [ContactDeviceViewModelForPreviews] = { + [ + ContactDeviceViewModelForPreviews( + contactIdentifier: contactIdentifier, + secureChannelStatus: .creationInProgress, + deviceIdentifier: Data(repeating: 0, count: 16), + name: String("1234")), + ContactDeviceViewModelForPreviews( + contactIdentifier: contactIdentifier, + secureChannelStatus: .created, + deviceIdentifier: Data(repeating: 1, count: 16), + name: String("5678")), + ContactDeviceViewModelForPreviews( + contactIdentifier: contactIdentifier, + secureChannelStatus: nil, + deviceIdentifier: Data(repeating: 2, count: 16), + name: String("5678")), + ] + }() + + + private static let model: ContactDevicesListViewForPreviews = { + ContactDevicesListViewForPreviews( + contactIdentifier: contactIdentifier, + contactDevices: contactDevices) + }() + + + static var previews: some View { + Group { + ContactDevicesListView( + model: model, + actions: ContactDevicesListViewActionsForPreviews()) + .previewLayout(PreviewLayout.sizeThatFits) + .previewDisplayName("Three devices") + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ListOfContactDevicesViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ListOfContactDevicesViewController.swift new file mode 100644 index 00000000..2643e11c --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ListOfContactDevicesViewController.swift @@ -0,0 +1,93 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import ObvUICoreData +import ObvUI +import ObvEngine +import ObvTypes + + +final class ListOfContactDevicesViewController: UIHostingController>, ContactDevicesListViewActionsDelegate { + + private let obvEngine: ObvEngine + + init(persistedContact: PersistedObvContactIdentity, obvEngine: ObvEngine) { + self.obvEngine = obvEngine + let actions = ContactDevicesListViewActions() + let rootView = ContactDevicesListView(model: persistedContact, actions: actions) + super.init(rootView: rootView) + actions.delegate = self + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + // MARK: - ContactDevicesListViewActionsDelegate + + func userWantsToClearAllContactDevices(contactIdentifier: ObvContactIdentifier) async { + DispatchQueue(label: "Background queue for deleteAllContactDevicesAndChannelsThenPerformContactDeviceDiscovery").async { [weak self] in + try? self?.obvEngine.deleteAllContactDevicesAndChannelsThenPerformContactDeviceDiscovery(contactIdentifier: contactIdentifier) + } + } + + func userWantsToSearchForNewContactDevices(contactIdentifier: ObvContactIdentifier) async { + DispatchQueue(label: "Background queue for performContactDeviceDiscovery").async { [weak self] in + try? self?.obvEngine.performContactDeviceDiscovery(contactIdentifier: contactIdentifier) + DispatchQueue.main.async { [weak self] in + self?.showHUD(type: .checkmark) + DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2)) { + self?.hideHUD() + } + } + } + } + + func userWantsToRestartChannelCreationWithContactDevice(contactIdentifier: ObvContactIdentifier, deviceIdentifier: Data) async { + DispatchQueue(label: "Background queue for recreateChannelWithContactDevice").async { [weak self] in + try? self?.obvEngine.recreateChannelWithContactDevice(contactIdentifier: contactIdentifier, contactDeviceIdentifier: deviceIdentifier) + } + } + +} + + + + +fileprivate final class ContactDevicesListViewActions: ContactDevicesListViewActionsDelegate { + + weak var delegate: ContactDevicesListViewActionsDelegate? + + func userWantsToClearAllContactDevices(contactIdentifier: ObvContactIdentifier) async { + await delegate?.userWantsToClearAllContactDevices(contactIdentifier: contactIdentifier) + } + + func userWantsToSearchForNewContactDevices(contactIdentifier: ObvContactIdentifier) async { + await delegate?.userWantsToSearchForNewContactDevices(contactIdentifier: contactIdentifier) + } + + func userWantsToRestartChannelCreationWithContactDevice(contactIdentifier: ObvContactIdentifier, deviceIdentifier: Data) async { + await delegate?.userWantsToRestartChannelCreationWithContactDevice(contactIdentifier: contactIdentifier, deviceIdentifier: deviceIdentifier) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingSasAcceptedView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ViewModelsForCoreDataEntities/PersistedObvContactDevice+ContactDeviceViewModelProtocol.swift similarity index 70% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingSasAcceptedView.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ViewModelsForCoreDataEntities/PersistedObvContactDevice+ContactDeviceViewModelProtocol.swift index fcf2ddf8..e325333a 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingSasAcceptedView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ViewModelsForCoreDataEntities/PersistedObvContactDevice+ContactDeviceViewModelProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -17,18 +17,18 @@ * along with Olvid. If not, see . */ -import UIKit +import ObvUICoreData +import ObvTypes -protocol CellContainingSasAcceptedView { - - var sasAcceptedView: SasAcceptedView! { get } - -} -extension CellContainingSasAcceptedView { +extension PersistedObvContactDevice: ContactDeviceViewModelProtocol { + + var deviceIdentifier: Data { + self.identifier + } - func setOwnSas(ownSas: Data) throws { - try sasAcceptedView.setOwnSas(ownSas: ownSas) + var name: String { + return String(deviceIdentifier.hexString().prefix(4)) } diff --git a/Modules/Discussions/AttachmentsDropView/UIDropInteraction+AttachmentsDropView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+ContactDevicesListViewModelProtocol.swift similarity index 66% rename from Modules/Discussions/AttachmentsDropView/UIDropInteraction+AttachmentsDropView.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+ContactDevicesListViewModelProtocol.swift index 4dee6472..6b6cd923 100644 --- a/Modules/Discussions/AttachmentsDropView/UIDropInteraction+AttachmentsDropView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfContactDevices/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+ContactDevicesListViewModelProtocol.swift @@ -17,13 +17,20 @@ * along with Olvid. If not, see . */ -import class UIKit.UIDropInteraction +import ObvUICoreData +import ObvTypes +import ObvEngine -@available(iOS 14, *) -public extension UIDropInteraction { - /// Initializes an instance of `UIDropInteraction` with a given instance of `AttachmentsDropView` - /// - Parameter dropView: An instance of `AttachmentsDropView` - convenience init(_ dropView: AttachmentsDropView) { - self.init(delegate: dropView) + +extension PersistedObvContactIdentity: ContactDevicesListViewModelProtocol { + + var contactDevices: [ObvUICoreData.PersistedObvContactDevice] { + self.sortedDevices + } + + var contactIdentifier: ObvContactIdentifier { + get throws { + try obvContactIdentifier + } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfTrustOrigins/ListOfTrustOriginsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfTrustOrigins/ListOfTrustOriginsView.swift new file mode 100644 index 00000000..f2d78870 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfTrustOrigins/ListOfTrustOriginsView.swift @@ -0,0 +1,64 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvEngine + + +struct ListOfTrustOriginsView: View { + + let trustOrigins: [ObvTrustOrigin] + + var body: some View { + ScrollView { + ObvCardView { + VStack(alignment: .leading) { + ForEach(trustOrigins, id: \.self) { trustOrigin in + TrustOriginCellView(trustOrigin: trustOrigin) + if trustOrigin != trustOrigins.last { + SeparatorView() + } + } + } + }.padding() + Spacer() + } + } + +} + + + +// MARK: - Previews + +struct ListOfTrustOriginsView_Previews: PreviewProvider { + + private static let someDate = Date(timeIntervalSince1970: 1_600_000_000) + + static var previews: some View { + Group { + ListOfTrustOriginsView(trustOrigins: [ + .direct(timestamp: someDate), + .introduction(timestamp: someDate, mediator: nil), + .group(timestamp: someDate, groupOwner: nil), + ]) + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallViewHostingController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfTrustOrigins/ListOfTrustOriginsViewController.swift similarity index 61% rename from iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallViewHostingController.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfTrustOrigins/ListOfTrustOriginsViewController.swift index 8cd00a31..607d6a71 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallViewHostingController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfTrustOrigins/ListOfTrustOriginsViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,23 +19,23 @@ import UIKit import SwiftUI +import ObvEngine -final class CallViewHostingController: UIHostingController { - - let wrappedCall: ObservableCallWrapper - let callUUID: UUID - init(call: GenericCall) { - self.callUUID = call.uuid - self.wrappedCall = ObservableCallWrapper(call: call) - super.init(rootView: CallView(wrappedCall: wrappedCall)) - } +final class ListOfTrustOriginsViewController: UIHostingController { - @objc required dynamic init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") + init(trustOrigins: [ObvTrustOrigin]) { + let view = ListOfTrustOriginsView(trustOrigins: trustOrigins) + super.init(rootView: view) } - deinit { - debugPrint("CallViewHostingController deinit") + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") } + + override func viewDidLoad() { + super.viewDidLoad() + self.title = NSLocalizedString("TRUST_ORIGINS", comment: "") + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/TrustOriginsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfTrustOrigins/TrustOriginCellView.swift similarity index 62% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/TrustOriginsView.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfTrustOrigins/TrustOriginCellView.swift index 248135fb..abc3cd65 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/TrustOriginsView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/ListOfTrustOrigins/TrustOriginCellView.swift @@ -21,32 +21,12 @@ import ObvEngine import ObvUI import SwiftUI +import ObvDesignSystem -struct TrustOriginsView: View { - - let trustOrigins: [ObvTrustOrigin] - let dateFormatter: DateFormatter - - var body: some View { - VStack(alignment: .leading) { - ForEach(trustOrigins, id: \.self) { trustOrigin in - TrustOriginCell(trustOrigin: trustOrigin, dateFormatter: dateFormatter) - if trustOrigin != trustOrigins.last { - SeparatorView() - } - } - } - } - -} - - - -fileprivate struct TrustOriginCell: View { +struct TrustOriginCellView: View { let trustOrigin: ObvTrustOrigin - let dateFormatter: DateFormatter private var image: Image? { switch trustOrigin { @@ -104,19 +84,14 @@ fileprivate struct TrustOriginCell: View { .fixedSize(horizontal: false, vertical: true) .font(.system(.headline, design: .rounded)) .foregroundColor(Color(AppTheme.shared.colorScheme.label)) - if #available(iOS 14, *) { - Text(dateFormatter.string(from: trustOrigin.date)) - .lineLimit(2) - .fixedSize(horizontal: false, vertical: true) - .font(.subheadline) - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - } else { - Text(dateFormatter.string(from: trustOrigin.date)) - .lineLimit(2) - .fixedSize(horizontal: false, vertical: true) - .font(.footnote) - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + HStack { + Text(trustOrigin.date, style: .date) + Text(trustOrigin.date, style: .time) } + .lineLimit(2) + .fixedSize(horizontal: false, vertical: true) + .font(.subheadline) + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) } Spacer() } @@ -126,66 +101,47 @@ fileprivate struct TrustOriginCell: View { +// MARK: - Previews struct TrustOriginsView_Previews: PreviewProvider { - static let dateFormatter: DateFormatter = { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = true - df.dateStyle = .long - df.timeStyle = .short - return df - }() - static let someDate = Date(timeIntervalSince1970: 1_600_000_000) static var previews: some View { Group { - TrustOriginCell(trustOrigin: ObvTrustOrigin.direct(timestamp: someDate), - dateFormatter: dateFormatter) + TrustOriginCellView(trustOrigin: ObvTrustOrigin.direct(timestamp: someDate)) .previewLayout(.sizeThatFits) .padding() .frame(width: 300, height: 110, alignment: .leading) .background(Color(.systemBackground)) - TrustOriginCell(trustOrigin: ObvTrustOrigin.introduction(timestamp: someDate, mediator: nil), - dateFormatter: dateFormatter) + TrustOriginCellView(trustOrigin: ObvTrustOrigin.introduction(timestamp: someDate, mediator: nil)) .previewLayout(.sizeThatFits) .padding() .frame(width: 300, height: 110, alignment: .leading) .background(Color(.systemBackground)) - TrustOriginCell(trustOrigin: ObvTrustOrigin.group(timestamp: someDate, groupOwner: nil), - dateFormatter: dateFormatter) + TrustOriginCellView(trustOrigin: ObvTrustOrigin.group(timestamp: someDate, groupOwner: nil)) .previewLayout(.sizeThatFits) .padding() .frame(width: 300, height: 110, alignment: .leading) .background(Color(.systemBackground)) - TrustOriginCell(trustOrigin: ObvTrustOrigin.direct(timestamp: someDate), - dateFormatter: dateFormatter) + TrustOriginCellView(trustOrigin: ObvTrustOrigin.direct(timestamp: someDate)) .previewLayout(.sizeThatFits) .padding() .frame(width: 300, height: 110, alignment: .leading) .background(Color(.systemBackground)) .environment(\.colorScheme, .dark) - TrustOriginCell(trustOrigin: ObvTrustOrigin.introduction(timestamp: someDate, mediator: nil), - dateFormatter: dateFormatter) + TrustOriginCellView(trustOrigin: ObvTrustOrigin.introduction(timestamp: someDate, mediator: nil)) .previewLayout(.sizeThatFits) .padding() .frame(width: 300, height: 110, alignment: .leading) .background(Color(.systemBackground)) .environment(\.colorScheme, .dark) - TrustOriginCell(trustOrigin: ObvTrustOrigin.group(timestamp: someDate, groupOwner: nil), - dateFormatter: dateFormatter) + TrustOriginCellView(trustOrigin: ObvTrustOrigin.group(timestamp: someDate, groupOwner: nil)) .previewLayout(.sizeThatFits) .padding() .frame(width: 300, height: 110, alignment: .leading) .background(Color(.systemBackground)) .environment(\.colorScheme, .dark) - TrustOriginsView(trustOrigins: [.direct(timestamp: someDate), - .introduction(timestamp: someDate, mediator: nil), - .group(timestamp: someDate, groupOwner: nil) - ], - dateFormatter: dateFormatter) } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/SingleContactIdentityView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/SingleContactIdentityView.swift index 659a92ae..4e586975 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/SingleContactIdentityView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/SingleContactIdentityView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import ObvEngine import ObvUI import ObvUICoreData import SwiftUI +import ObvDesignSystem struct SingleContactIdentityView: View { @@ -53,83 +54,96 @@ struct SingleContactIdentityInnerView: View { @Environment(\.presentationMode) var presentationMode var body: some View { - ZStack { - Color(AppTheme.shared.colorScheme.systemBackground) - .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) - .edgesIgnoringSafeArea(.all) - ScrollView { - VStack { - ContactIdentityHeaderView(singleIdentity: contact, - editionMode: .custom(icon: .pencil(), action: { contact.userWantsToEditContactNickname() })) - .padding(.top, 16) - - - if contact.isActive { - if contact.contactHasNoDevice { - CreatingChannelExplanationView(restartChannelCreationButtonTapped: contact.userWantsToRestartChannelCreation) - .padding(.top, 16) - } else { - HStack { - OlvidButton(style: contact.contactIsOneToOne ? .standardWithBlueText : .standard, - title: Text(CommonString.Word.Chat), - systemIcon: .textBubbleFill, - action: { - if contact.contactIsOneToOne { - contact.userWantsToDiscuss() - } else { - showAlertCannotDiscussWithNonOneToOne.toggle() - } - }) - OlvidButton(style: .standardWithBlueText, - title: Text(CommonString.Word.Call), - systemIcon: .phoneFill, - action: contact.userWantsToCallContact) - .disabled(contact.contactHasNoDevice) - } + ScrollView { + VStack { + ContactIdentityHeaderView(singleIdentity: contact, + editionMode: .custom(icon: .pencil(), action: { contact.userWantsToEditContactNickname() })) + .padding(.top, 16) + + + if contact.isActive { + if !contact.contactHasNoDevice && !contact.atLeastOneDeviceAllowsThisContactToReceiveMessages { + CreatingChannelExplanationView(restartChannelCreationButtonTapped: contact.userWantsToRestartChannelCreation) .padding(.top, 16) + } else { + HStack { + OlvidButton(style: contact.contactIsOneToOne ? .standardWithBlueText : .standard, + title: Text(CommonString.Word.Chat), + systemIcon: .textBubbleFill, + action: { + if contact.contactIsOneToOne { + contact.userWantsToDiscuss() + } else { + showAlertCannotDiscussWithNonOneToOne.toggle() + } + }) + OlvidButton(style: .standardWithBlueText, + title: Text(CommonString.Word.Call), + systemIcon: .phoneFill, + action: contact.userWantsToCallContact) + .disabled(!contact.atLeastOneDeviceAllowsThisContactToReceiveMessages) } - if contact.showReblockView, let contactCryptoId = contact.persistedContact?.cryptoId, let ownedCryptoId = contact.persistedContact?.ownedIdentity?.cryptoId { - ContactCanBeReblockedExplanationView(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) - .padding(.top, 16) - } - } else if let contactCryptoId = contact.persistedContact?.cryptoId, let ownedCryptoId = contact.persistedContact?.ownedIdentity?.cryptoId { - ContactIsNotActiveExplanationView(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) - } - - ContactIdentityCardViews(contact: contact, - contactStatus: $contact.contactStatus) - .padding(.top, 16) - .padding(.bottom, 16) - - if !displayedContactGroupFetchRequest.wrappedValue.isEmpty { - GroupsCardView(displayedContactGroups: displayedContactGroupFetchRequest.wrappedValue, - userWantsToNavigateToSingleGroupView: contact.userWantsToNavigateToSingleGroupView, - tappedGroup: $contact.tappedGroup) .padding(.top, 16) } - - TrustOriginsCardView(trustOrigins: contact.trustOrigins) - .padding(.top, 16) - - BottomButtonsView(contact: contact, - userWantsToDeleteContact: {contact.userWantsToDeleteContact { success in - guard success else { return } - presentationMode.wrappedValue.dismiss() - }}) + if contact.showReblockView, let contactCryptoId = contact.persistedContact?.cryptoId, let ownedCryptoId = contact.persistedContact?.ownedIdentity?.cryptoId { + ContactCanBeReblockedExplanationView(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) + .padding(.top, 16) + } + } else if let contactCryptoId = contact.persistedContact?.cryptoId, let ownedCryptoId = contact.persistedContact?.ownedIdentity?.cryptoId { + ContactIsNotActiveExplanationView(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) + } + + if let persistedContact = contact.persistedContact, let textOfNote = persistedContact.note, !textOfNote.isEmpty { + PersonalNoteView(model: persistedContact) .padding(.top, 16) - Spacer() } - .padding(.horizontal, 16) - .padding(.bottom, 32) - .alert(isPresented: $showAlertCannotDiscussWithNonOneToOne) { - Alert(title: Text("INVITE_REQUIRED_ALERT_TITLE"), - message: Text("YOU_NEED_TO_INVITE_\(contact.getFirstName(for: .trusted))_BEFORE_HAVING_DISCUSSION_ALERT_MESSAGE"), - primaryButton: .cancel(Text("Cancel")), - secondaryButton: .default(Text("Invite")) { - contact.userWantsToInviteContactToOneToOne() - }) + + ContactIdentityCardViews(contact: contact, + contactStatus: $contact.contactStatus) + .padding(.top, 16) + .padding(.bottom, 16) + + if !displayedContactGroupFetchRequest.wrappedValue.isEmpty { + GroupsCardView(displayedContactGroups: displayedContactGroupFetchRequest.wrappedValue, + userWantsToNavigateToSingleGroupView: contact.userWantsToNavigateToSingleGroupView, + tappedGroup: $contact.tappedGroup) + .padding(.top, 16) } + + if let persistedContact = contact.persistedContact { + ContactDevicesCardView( + contact: persistedContact, + userWantsToNavigateToListOfContactDevicesView: contact.userWantsToNavigateToListOfContactDevicesView) + .padding(.top, 16) + } + + TrustOriginsCardView( + trustOrigins: contact.trustOrigins, + userWantsToNavigateToListOfTrustOriginsView: contact.userWantsToNavigateToListOfTrustOriginsView) + .padding(.top, 16) + + BottomButtonsView(contact: contact, + userWantsToDeleteContact: {contact.userWantsToDeleteContact { success in + guard success else { return } + presentationMode.wrappedValue.dismiss() + }}) + .padding(.top, 16) + Spacer() + } + .padding(.horizontal, 16) + .padding(.bottom, 32) + .alert(isPresented: $showAlertCannotDiscussWithNonOneToOne) { + Alert(title: Text("INVITE_REQUIRED_ALERT_TITLE"), + message: Text("YOU_NEED_TO_INVITE_\(contact.getFirstName(for: .trusted))_BEFORE_HAVING_DISCUSSION_ALERT_MESSAGE"), + primaryButton: .cancel(Text("Cancel")), + secondaryButton: .default(Text("Invite")) { + contact.userWantsToInviteContactToOneToOne() + }) } + }.background { + Color(AppTheme.shared.colorScheme.systemBackground) + .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) + .edgesIgnoringSafeArea(.all) } } } @@ -225,23 +239,43 @@ private struct GroupCellView: View { @ObservedObject var group: DisplayedContactGroup let showChevron: Bool let selected: Bool - + + private var textViewModel: TextView.Model { + .init(titlePart1: group.displayedTitle, + titlePart2: nil, + subtitle: group.subtitle, + subsubtitle: nil) + } + + private var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: nil, + icon: .person3Fill, + profilePicture: group.displayedImage, + showGreenShield: group.isKeycloakManaged, + showRedShield: false) + } + + private var circleAndTitlesViewModelContent: CircleAndTitlesView.Model.Content { + .init(textViewModel: textViewModel, + profilePictureViewModelContent: profilePictureViewModelContent) + } + + private var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: group.circledInitialsConfiguration.backgroundColor(appTheme: AppTheme.shared), + foreground: group.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared)) + } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContent, + colors: initialCircleViewModelColors, + displayMode: .normal, + editionMode: .none) + } + var body: some View { HStack { - CircleAndTitlesView(titlePart1: group.displayedTitle, - titlePart2: nil, - subtitle: group.subtitle, - subsubtitle: nil, - circleBackgroundColor: group.circledInitialsConfiguration.backgroundColor(appTheme: AppTheme.shared), - circleTextColor: group.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared), - circledTextView: nil, - systemImage: .person3Fill, - profilePicture: group.displayedImage, - showGreenShield: group.isKeycloakManaged, - showRedShield: false, - editionMode: .none, - displayMode: .normal) + CircleAndTitlesView(model: circleAndTitlesViewModel) Spacer() @@ -276,27 +310,103 @@ private struct GroupCellView: View { fileprivate struct TrustOriginsCardView: View { let trustOrigins: [ObvTrustOrigin] + let userWantsToNavigateToListOfTrustOriginsView: () -> Void + @State private var selected = false + + var body: some View { + VStack(alignment: .leading) { + ObvCardView { + HStack(alignment: .firstTextBaseline) { + Image(systemIcon: .checkmarkShield) + .foregroundColor(Color(.systemGreen)) + .font(.system(size: 22)) + .frame(width: 40) + + Text("TRUST_ORIGINS") + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + .font(.system(.headline, design: .rounded)) + .foregroundColor(Color(AppTheme.shared.colorScheme.label)) + + Spacer() + + ObvChevron(selected: selected) + + } + .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped + .onTapGesture { + withAnimation { + selected = true + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { + userWantsToNavigateToListOfTrustOriginsView() + } + } + } + .onAppear { + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { + withAnimation { + selected = false + } + } + } + } + } + } - private let dateFormatter: DateFormatter = { - let df = DateFormatter() - df.timeStyle = .short - df.dateStyle = .short - df.doesRelativeDateFormatting = true - return df - }() +} + +fileprivate struct ContactDevicesCardView: View { + + let contact: PersistedObvContactIdentity + let userWantsToNavigateToListOfContactDevicesView: () -> Void + @State private var selected = false + var body: some View { VStack(alignment: .leading) { HStack { - Text("TRUST_ORIGINS") + Text("Devices") .font(.system(.headline, design: .rounded)) Spacer() } ObvCardView { - TrustOriginsView(trustOrigins: trustOrigins, dateFormatter: dateFormatter) + HStack(alignment: .firstTextBaseline) { + Image(systemIcon: .laptopcomputerAndIphone) + .foregroundColor(Color(.systemBlue)) + .font(.system(size: 22)) + .frame(width: 40) + + Text(String.localizedStringWithFormat(NSLocalizedString("CONTACT_HAS_N_DEVICES", comment: ""), contact.customOrShortDisplayName, contact.devices.count)) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + .font(.system(.headline, design: .rounded)) + .foregroundColor(Color(AppTheme.shared.colorScheme.label)) + + Spacer() + + ObvChevron(selected: selected) + + } + .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped + .onTapGesture { + withAnimation { + selected = true + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { + userWantsToNavigateToListOfContactDevicesView() + } + } + } + .onAppear { + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { + withAnimation { + selected = false + } + } + } } } } + } @@ -339,7 +449,7 @@ fileprivate struct ContactIdentityCardViews: View { } private func actionsForMainCard(hasOneToOneInvitationSent: Bool) -> [OlvidButtonAction] { - guard !contact.contactHasNoDevice && contact.isActive else { return [] } + guard contact.atLeastOneDeviceAllowsThisContactToReceiveMessages && contact.isActive else { return [] } if contact.contactIsOneToOne { return [introduceAction] } else if hasOneToOneInvitationSent { @@ -350,7 +460,10 @@ fileprivate struct ContactIdentityCardViews: View { } private func explanationForMainCard(hasOneToOneInvitationSent: Bool) -> Text? { - guard !contact.contactHasNoDevice && contact.isActive else { return nil } + // This test in correct only because we do not use this SingleIdentityView to show keycloak-only users. + // Instead of this simple test, we should query the MainFlowViewController to see if there is a one2one invitation + // that can be sent to the user (keycloak and/or protocol). + guard contact.atLeastOneDeviceAllowsThisContactToReceiveMessages && contact.isActive else { return nil } if contact.contactIsOneToOne { return nil } else if hasOneToOneInvitationSent { @@ -407,19 +520,6 @@ fileprivate struct BottomButtonsView: View { var body: some View { VStack(spacing: 8) { - if !contact.contactHasNoDevice { - OlvidButton(style: .standard, - title: Text("RECREATE_CHANNEL"), - systemIcon: .restartCircle, - action: { confirmRecreateTheSecureChannelSheetPresented.toggle() }) - .actionSheet(isPresented: $confirmRecreateTheSecureChannelSheetPresented) { - ActionSheet(title: Text("RECREATE_CHANNEL"), message: Text("Do you really wish to recreate the secure channel?"), buttons: [ - .default(Text("Yes"), action: contact.userWantsToRecreateTheSecureChannel), - .cancel(), - ]) - } - } - if let persistedContact = contact.persistedContact { OlvidButton(style: .standard, title: Text("SHOW_CONTACT_DETAILS"), @@ -457,7 +557,7 @@ fileprivate struct CreatingChannelExplanationView: View { .font(.headline) .fontWeight(.semibold) Spacer() - ObvActivityIndicator(isAnimating: .constant(true), style: .medium, color: nil) + ProgressView() } HStack { Text("ESTABLISHING_SECURE_CHANNEL_EXPLANATION") @@ -624,6 +724,7 @@ struct SingleContactIdentityView_Previews: PreviewProvider { company: "Apple", publishedContactDetails: nil, contactStatus: .noNewPublishedDetails, + atLeastOneDeviceAllowsThisContactToReceiveMessages: true, contactHasNoDevice: false, contactIsOneToOne: true, isActive: true, @@ -635,6 +736,7 @@ struct SingleContactIdentityView_Previews: PreviewProvider { company: "NeXT", publishedContactDetails: otherIdentityDetails, contactStatus: .seenPublishedDetails, + atLeastOneDeviceAllowsThisContactToReceiveMessages: true, contactHasNoDevice: false, contactIsOneToOne: true, isActive: true, @@ -646,7 +748,8 @@ struct SingleContactIdentityView_Previews: PreviewProvider { company: "Olvid", publishedContactDetails: nil, contactStatus: .noNewPublishedDetails, - contactHasNoDevice: true, + atLeastOneDeviceAllowsThisContactToReceiveMessages: false, + contactHasNoDevice: false, contactIsOneToOne: true, isActive: true, trustOrigins: trustOrigins) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/SingleContactIdentityViewHostingController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/SingleContactIdentityViewHostingController.swift index c5b6fbd6..112cf1d1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/SingleContactIdentityViewHostingController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleContact/SwiftUI/SingleContactIdentityViewHostingController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,16 +27,17 @@ import ObvUICoreData protocol SingleContactIdentityViewHostingControllerDelegate: AnyObject { + func userWantsToNavigateToListOfContactDevicesView(_ contact: PersistedObvContactIdentity, within nav: UINavigationController?) + func userWantsToNavigateToListOfTrustOriginsView(_ trustOrigins: [ObvTrustOrigin], within nav: UINavigationController?) func userWantsToNavigateToSingleGroupView(_ group: DisplayedContactGroup, within nav: UINavigationController?) func userWantsToDisplay(persistedDiscussion discussion: PersistedDiscussion) - func userWantsToEditContactNickname(persistedContactObjectId: NSManagedObjectID) - func userWantsToInviteContactToOneToOne(persistedContactObjectID: TypeSafeManagedObjectID) + func userWantsToInviteContactToOneToOne(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) func userWantsToCancelSentInviteContactToOneToOne(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) func userWantsToSyncOneToOneStatusOfContact(persistedContactObjectID: TypeSafeManagedObjectID) } -final class SingleContactIdentityViewHostingController: UIHostingController, SingleContactIdentityDelegate, SomeSingleContactViewController, ObvErrorMaker { +final class SingleContactIdentityViewHostingController: UIHostingController, SingleContactIdentityDelegate, SomeSingleContactViewController, ObvErrorMaker, PersonalNoteEditorViewActionsDelegate, EditNicknameAndCustomPictureViewControllerDelegate { let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "SingleContactIdentityViewHostingController") static let errorDomain = "SingleContactIdentityViewHostingController" @@ -44,7 +45,6 @@ final class SingleContactIdentityViewHostingController: UIHostingController. - */ - - -import ObvEngine -import os.log -import ObvTypes -import ObvUI -import StoreKit -import SwiftUI -import UI_SystemIcon -import UI_SystemIcon_SwiftUI - -final class AvailableSubscriptionPlans: ObservableObject { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "AvailableSubscriptionPlans") - - let ownedCryptoId: ObvCryptoId - private let fetchSubscriptionPlanAction: () -> Void - private let userWantsToStartFreeTrialNow: () -> Void - private let userWantsToFallbackOnFreeVersion: () -> Void - private let userWantsToBuy: (SKProduct) -> Void - private let userWantsToRestorePurchases: () -> Void - @Published private(set) var freePlanIsAvailable: Bool? = nil // Nil until we know whether a free plan is available or not - @Published private(set) var skProducts: [SKProduct]? // Nil until store plans are known - @Published private(set) var requestedListOfSKProductsError: SubscriptionManager.RequestedListOfSKProductsError? // Nil until an error occurs when fetching skProducts - @Published private(set) var shownHUD: HUDView.Category? = nil - @Published var buttonsAreDisabled = false - @Published private(set) var errorMessage = Text("") - @Published var showErrorMessage = false - - - private var notificationsTokens = [NSObjectProtocol]() - - init(ownedCryptoId: ObvCryptoId, fetchSubscriptionPlanAction: @escaping () -> Void, userWantsToStartFreeTrialNow: @escaping () -> Void, userWantsToFallbackOnFreeVersion: @escaping () -> Void, userWantsToBuy: @escaping (SKProduct) -> Void, userWantsToRestorePurchases: @escaping () -> Void) { - self.freePlanIsAvailable = nil - self.skProducts = nil - self.ownedCryptoId = ownedCryptoId - self.fetchSubscriptionPlanAction = fetchSubscriptionPlanAction - self.userWantsToStartFreeTrialNow = userWantsToStartFreeTrialNow - self.userWantsToFallbackOnFreeVersion = userWantsToFallbackOnFreeVersion - self.userWantsToBuy = userWantsToBuy - self.userWantsToRestorePurchases = userWantsToRestorePurchases - } - - // Used within SwiftUI previews - fileprivate init(ownedCryptoId: ObvCryptoId, freePlanIsAvailable: Bool, skProducts: [SKProduct]) { - self.freePlanIsAvailable = freePlanIsAvailable - self.skProducts = skProducts - self.ownedCryptoId = ownedCryptoId - self.fetchSubscriptionPlanAction = {} - self.userWantsToStartFreeTrialNow = {} - self.userWantsToFallbackOnFreeVersion = {} - self.userWantsToBuy = { _ in } - self.userWantsToRestorePurchases = {} - } - - deinit { - notificationsTokens.forEach { NotificationCenter.default.removeObserver($0) } - } - - var canShowPlans: Bool { - freePlanIsAvailable != nil && (skProducts != nil || requestedListOfSKProductsError != nil) - } - - func startFreeTrialNow() { - guard freePlanIsAvailable == true else { return } - // We observe engine notifications informing us that the current api key of the owned identity has new elements. - // When this happens, we assume that the free trial has started. In that case, we can display an appropriate HUD and dismiss this view. We know that, in parallel, the owned identity view has been updated and displays the free trial key elements. - notificationsTokens.append(ObvEngineNotificationNew.observeNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(within: NotificationCenter.default, queue: OperationQueue.main) { [weak self] (ownedIdentity, apiKeyStatus, apiPermissions, apiKeyExpirationDate) in - guard self?.ownedCryptoId == ownedIdentity else { return } - guard apiKeyStatus == .freeTrial else { return } - self?.shownHUD = .checkmark - }) - shownHUD = .progress - userWantsToStartFreeTrialNow() - } - - func buySKProductNow(product: SKProduct) { - notificationsTokens.append(ObvEngineNotificationNew.observeNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(within: NotificationCenter.default, queue: OperationQueue.main) { [weak self] (ownedIdentity, apiKeyStatus, apiPermissions, apiKeyExpirationDate) in - guard self?.ownedCryptoId == ownedIdentity else { return } - guard apiKeyStatus == .valid else { return } - self?.shownHUD = .checkmark - }) - notificationsTokens.append(SubscriptionNotification.observeUserDecidedToCancelToTheSKProductPurchase(queue: OperationQueue.main) { [weak self] in - withAnimation { - self?.shownHUD = nil - self?.buttonsAreDisabled = false - } - }) - notificationsTokens.append(SubscriptionNotification.observeSkProductPurchaseFailed(queue: OperationQueue.main) { [weak self] (error) in - withAnimation { - self?.shownHUD = nil - self?.buttonsAreDisabled = false - self?.errorMessage = error.text - self?.showErrorMessage = true - } - }) - notificationsTokens.append(SubscriptionNotification.observeSkProductPurchaseWasDeferred(queue: OperationQueue.main) { [weak self] in - self?.shownHUD = nil - self?.buttonsAreDisabled = false - self?.errorMessage = Text("Your purchase must be approved before it can go through.") - self?.showErrorMessage = true - }) - shownHUD = .progress - userWantsToBuy(product) - } - - func restorePurchaseNow() { - notificationsTokens.append(SubscriptionNotification.observeThereWasNoAppStorePurchaseToRestore(queue: OperationQueue.main) { [weak self] in - self?.shownHUD = nil - self?.buttonsAreDisabled = false - self?.errorMessage = Text("We found no purchase to restore.") - self?.showErrorMessage = true - }) - notificationsTokens.append(ObvEngineNotificationNew.observeNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(within: NotificationCenter.default, queue: OperationQueue.main) { [weak self] (ownedIdentity, apiKeyStatus, apiPermissions, apiKeyExpirationDate) in - guard self?.ownedCryptoId == ownedIdentity else { return } - guard apiKeyStatus == .valid else { return } - self?.shownHUD = .checkmark - }) - notificationsTokens.append(SubscriptionNotification.observeAllPurchaseTransactionsSentToEngineWereProcessed(queue: OperationQueue.main) { [weak self] in - self?.shownHUD = nil - self?.buttonsAreDisabled = false - }) - shownHUD = .progress - userWantsToRestorePurchases() - } - - func startFetchingSubscriptionPlans() { - // Before calling the fetchSubscriptionPlanAction, we observe the engine notifications allowing to be notified whether there is a free trial or not - notificationsTokens.append(ObvEngineNotificationNew.observeFreeTrialIsStillAvailableForOwnedIdentity(within: NotificationCenter.default, queue: OperationQueue.main) { [weak self] (obvCryptoId) in - guard let _self = self else { return } - guard _self.ownedCryptoId == obvCryptoId else { return } - guard _self.freePlanIsAvailable == nil else { return } - withAnimation(.spring()) { - _self.freePlanIsAvailable = true - } - }) - notificationsTokens.append(ObvEngineNotificationNew.observeNoMoreFreeTrialAPIKeyAvailableForOwnedIdentity(within: NotificationCenter.default, queue: OperationQueue.main) { [weak self] (obvCryptoId) in - guard let _self = self else { return } - guard _self.ownedCryptoId == obvCryptoId else { return } - guard _self.freePlanIsAvailable == nil else { return } - withAnimation(.spring()) { - _self.freePlanIsAvailable = false - } - }) - notificationsTokens.append(SubscriptionNotification.observeNewListOfSKProducts(queue: OperationQueue.main) { [weak self] result in - guard let _self = self else { return } - switch result { - case .failure(let error): - withAnimation(.spring()) { - _self.requestedListOfSKProductsError = error - } - case .success(let skProducts): - for skProduct in skProducts { - os_log("Received skProduct with localizedTitle %{public}@", log: _self.log, type: .info, skProduct.localizedTitle) - } - withAnimation(.spring()) { - _self.skProducts = skProducts - } - } - }) - DispatchQueue(label: "Queue for fetching subscription plans").asyncAfter(deadline: .now() + .seconds(1)) { [weak self] in - self?.fetchSubscriptionPlanAction() - } - } - - func fallbackOnFreeVersionNow() { - // We observe engine notifications informing us that the current api key of the owned identity has new elements. - // When this happens, we assume that the free trial has started. In that case, we can display an appropriate HUD and dismiss this view. We know that, in parallel, the owned identity view has been updated and displays the free trial key elements. - notificationsTokens.append(ObvEngineNotificationNew.observeNewAPIKeyElementsForCurrentAPIKeyOfOwnedIdentity(within: NotificationCenter.default, queue: OperationQueue.main) { [weak self] (ownedIdentity, apiKeyStatus, apiPermissions, apiKeyExpirationDate) in - guard self?.ownedCryptoId == ownedIdentity else { return } - guard apiKeyStatus == .free else { return } - self?.shownHUD = .checkmark - }) - shownHUD = .progress - userWantsToFallbackOnFreeVersion() - } -} - - -struct AvailableSubscriptionPlansView: View { - - @ObservedObject var plans: AvailableSubscriptionPlans - let dismissAction: () -> Void - - private let priceFormatter: NumberFormatter = { - let formatter = NumberFormatter() - formatter.numberStyle = .currency - formatter.locale = Locale.current - return formatter - }() - - var body: some View { - NavigationView { - ZStack { - - Color(AppTheme.shared.colorScheme.systemBackground) - .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) - .edgesIgnoringSafeArea(.all) - - ScrollView { - VStack(spacing: 0) { - if plans.canShowPlans { - if plans.freePlanIsAvailable == true { - SKProductCardView(title: Text("Free Trial"), - price: Text("Free"), - description: Text("Get access to premium features for free for one month. This free trial can be activated only once."), - buttonTitle: Text("Start free trial now"), - buttonSystemIcon: .handThumbsupFill, - buttonAction: plans.startFreeTrialNow, - buttonIsDisabled: $plans.buttonsAreDisabled) - .transition(AnyTransition.move(edge: .trailing)) - .padding(.bottom, 32) - } - if let skProducts = plans.skProducts { - ForEach(skProducts, id: \.self) { skProduct in - SKProductCardView(skProduct: skProduct, - buttonTitle: Text("Subscribe now"), - buttonSystemIcon: .cartFill, - buttonAction: { plans.buySKProductNow(product: skProduct) }, - buttonIsDisabled: $plans.buttonsAreDisabled) - .transition(AnyTransition.move(edge: .leading)) - .padding(.bottom, 32) - } - } else if let error = plans.requestedListOfSKProductsError { - SKProductErrorCardView(error: error) - .transition(AnyTransition.move(edge: .leading)) - .padding(.bottom, 32) - } - if ObvMessengerConstants.developmentMode { - OlvidButton(style: .standardWithBlueText, - title: Text("Fallback to free version"), - systemIcon: .giftcardFill, - action: { - plans.buttonsAreDisabled = true - plans.fallbackOnFreeVersionNow() - }) - .padding(.bottom, 16) - .disabled(plans.buttonsAreDisabled) - .transition(AnyTransition.move(edge: .bottom)) - } - OlvidButton(style: .standardWithBlueText, - title: Text("Manage your subscription"), - systemIcon: .link, - action: { - let url = ObvMessengerConstants.urlForManagingSubscriptionWithTheAppStore - UIApplication.shared.open(url, options: [:], completionHandler: nil) - }) - .padding(.bottom, 16) - .disabled(plans.buttonsAreDisabled) - .animation(Animation.default.delay(0.025)) - .transition(AnyTransition.move(edge: .bottom)) - OlvidButton(style: .standardWithBlueText, - title: Text("Manage payments"), - systemIcon: .creditcardFill, - action: { - let url = ObvMessengerConstants.urlForManagingPaymentsOnTheAppStore - UIApplication.shared.open(url, options: [:], completionHandler: nil) - }) - .padding(.bottom, 16) - .disabled(plans.buttonsAreDisabled) - .animation(Animation.default.delay(0.025)) - .transition(AnyTransition.move(edge: .bottom)) - OlvidButton(style: .standardWithBlueText, - title: Text("Restore Purchases"), - systemIcon: .arrowUturnForwardCircleFill, - action: { - plans.buttonsAreDisabled = true - plans.restorePurchaseNow() - }) - .disabled(plans.buttonsAreDisabled) - .animation(Animation.default.delay(0.05)) - .transition(AnyTransition.move(edge: .bottom)) - } else { - HStack { - Spacer() - if #available(iOS 14.0, *) { - ProgressView("Looking for available subscription plans") - } else { - ObvActivityIndicator(isAnimating: .constant(true), style: .large, color: nil) - } - Spacer() - }.padding(.top) - } - Spacer() - } - .padding(.horizontal) - .padding(.top, 32) - } - if let shownHUD = plans.shownHUD { - if shownHUD == .progress { - HUDView(category: .progress) - } else if shownHUD == .checkmark { - HUDView(category: .checkmark) - .onAppear(perform: { - DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) { - dismissAction() - }}) - } - } - } - .alert(isPresented: $plans.showErrorMessage) { - Alert(title: Text("😧 Oups..."), message: plans.errorMessage, dismissButton: Alert.Button.default(Text("Ok"))) - } - .navigationBarTitle(Text("Available subscription plans"), displayMode: .inline) - .navigationBarItems(leading: Button(action: dismissAction, - label: { - Image(systemName: "xmark.circle.fill") - .font(Font.system(size: 24, weight: .semibold, design: .default)) - .foregroundColor(Color(AppTheme.shared.colorScheme.tertiaryLabel)) - })) - } - .navigationViewStyle(StackNavigationViewStyle()) - .onAppear(perform: { - plans.startFetchingSubscriptionPlans() - }) - } -} - - - -struct SKProductErrorCardView: View { - - let error: SubscriptionManager.RequestedListOfSKProductsError - - private var title: Text { - switch error { - case .userCannotMakePayments: - return Text("USER_CANNOT_MAKE_PAYMENT_TITLE") - } - } - - private var description: Text { - switch error { - case .userCannotMakePayments: - return Text("USER_CANNOT_MAKE_PAYMENT_DESCRIPTION") - } - } - - var body: some View { - ObvCardView { - VStack(spacing: 16.0) { - HStack(alignment: .firstTextBaseline) { - title - .fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/) - .font(.system(.headline, design: .rounded)) - Spacer() - Image(systemIcon: .xmarkOctagonFill) - .font(.system(.title, design: .rounded)) - .foregroundColor(.red) - } - HStack { - description - .font(.body) - .lineLimit(nil) - .multilineTextAlignment(.leading) - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - Spacer() - }.fixedSize(horizontal: false, vertical: true) - OlvidButton(style: .standardWithBlueText, - title: Text("Manage payments"), - systemIcon: .creditcardFill, - action: { - let url = ObvMessengerConstants.urlForManagingPaymentsOnTheAppStore - UIApplication.shared.open(url, options: [:], completionHandler: nil) - }) - .padding(.bottom, 16) - } - } - } - -} - - -struct SKProductCardView: View { - - let title: Text - let price: Text - let description: Text - let buttonTitle: Text - let buttonSystemIcon: SystemIcon? - let buttonAction: () -> Void - @Binding var buttonIsDisabled: Bool - - init(title: Text, price: Text, description: Text, buttonTitle: Text, buttonSystemIcon: SystemIcon?, buttonAction: @escaping () -> Void, buttonIsDisabled: Binding) { - self.title = title - self.price = price - self.description = description - self.buttonTitle = buttonTitle - self.buttonSystemIcon = buttonSystemIcon - self.buttonAction = buttonAction - self._buttonIsDisabled = buttonIsDisabled - } - - init(skProduct: SKProduct, buttonTitle: Text, buttonSystemIcon: SystemIcon?, buttonAction: @escaping () -> Void, buttonIsDisabled: Binding) { - let price: Text - if let subscriptionPeriod = skProduct.subscriptionPeriod { - price = Text("\(skProduct.localizedPrice)/\(subscriptionPeriod.unit.localizedDescription)") - } else { - assertionFailure() - price = Text("\(skProduct.localizedPrice)") - } - let subscription = AvailableSubscription(productIdentifier: skProduct.productIdentifier) - assert(subscription != nil) - self.init(title: Text(subscription?.localizedTitle ?? skProduct.localizedTitle), - price: price, - description: Text(subscription?.localizedDescription ?? skProduct.localizedDescription), - buttonTitle: buttonTitle, - buttonSystemIcon: buttonSystemIcon, - buttonAction: buttonAction, - buttonIsDisabled: buttonIsDisabled) - } - - var body: some View { - ObvCardView { - VStack(spacing: 16.0) { - HStack(alignment: .firstTextBaseline) { - title - .fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/) - .font(.system(.headline, design: .rounded)) - Spacer() - price - .fontWeight(.bold) - .font(.system(.title, design: .rounded)) - } - HStack { - description - .font(.body) - .lineLimit(nil) - .multilineTextAlignment(.leading) - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - Spacer() - }.fixedSize(horizontal: false, vertical: true) - FeatureListView(title: NSLocalizedString("Premium features", comment: ""), - features: SubscriptionStatusView.premiumFeatures, - available: true) - OlvidButton(style: .blue, - title: buttonTitle, - systemIcon: buttonSystemIcon, - action: { - buttonIsDisabled = true - buttonAction() - }) - .disabled(buttonIsDisabled) - } - } - } - -} - - - -extension SKProduct { - - var localizedPrice: String { - let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "SKProduct") - os_log("💰 Price locale is %{public}@", log: log, type: .info, priceLocale.description) - let formatter = NumberFormatter() - formatter.numberStyle = .currency - formatter.locale = priceLocale - return formatter.string(from: price)! - } - -} - - - -fileprivate extension SKError { - - - var text: Text { - let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "SKProduct") - os_log("💰 SKError code is %d", log: log, type: .error, self.code.rawValue) - switch self.code { - case .clientInvalid: return Text("Sorry, it seems you are not allowed to issue the request 😢.") - case .paymentCancelled: return Text("Ok, the payment was successfully cancelled.") - case .paymentNotAllowed: return Text("Sorry, it seems you are not allowed to make the payment 😢.") - case .storeProductNotAvailable: return Text("Sorry, the product is not available in your store 😢.") - case .cloudServicePermissionDenied: return Text("The purchase failed because you did not allowed access to cloud service information 😢.") - case .cloudServiceNetworkConnectionFailed: return Text("Sorry, the purchase failed because we could not connect to the nework 😢. Please try again later.") - case .privacyAcknowledgementRequired: return Text("Sorry, the purchase failed because you still need to acknowledge Apple's privacy policy 😢.") - default: return Text("Sorry, the purchase failed 😢. Please try again later or contact us if this problem is recurring.") - } - } - -} - - - - - - - -struct AvailableSubscriptionPlansView_Previews: PreviewProvider { - - private static let identityAsURL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! - private static let testOwnedCryptoId = ObvURLIdentity(urlRepresentation: identityAsURL)!.cryptoId - - static var previews: some View { - Group { - AvailableSubscriptionPlansView(plans: AvailableSubscriptionPlans(ownedCryptoId: testOwnedCryptoId, fetchSubscriptionPlanAction: {}, userWantsToStartFreeTrialNow: {}, userWantsToFallbackOnFreeVersion: {}, userWantsToBuy: { _ in }, userWantsToRestorePurchases: {}), dismissAction: {}) - AvailableSubscriptionPlansView(plans: AvailableSubscriptionPlans(ownedCryptoId: testOwnedCryptoId, freePlanIsAvailable: true, skProducts: []), dismissAction: {}) - AvailableSubscriptionPlansView(plans: AvailableSubscriptionPlans(ownedCryptoId: testOwnedCryptoId, freePlanIsAvailable: true, skProducts: []), dismissAction: {}) - SKProductErrorCardView(error: .userCannotMakePayments) - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ChooseDeviceToReactivate/ChooseDeviceToReactivateHostingViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ChooseDeviceToReactivate/ChooseDeviceToReactivateHostingViewController.swift new file mode 100644 index 00000000..9eaec9c2 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ChooseDeviceToReactivate/ChooseDeviceToReactivateHostingViewController.swift @@ -0,0 +1,169 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import UIKit +import SwiftUI +import ObvTypes +import ObvEngine + + +protocol ChooseDeviceToReactivateHostingViewControllerDelegate: AnyObject { + func userWantsToDismissChooseDeviceToReactivateHostingViewController() async +} + + +final class ChooseDeviceToReactivateHostingViewController: UIHostingController>, ChooseDeviceToReactivateViewActionsDelegate { + + let obvEngine: ObvEngine + let model: ChooseDeviceToReactivateViewModel + weak var delegate: ChooseDeviceToReactivateHostingViewControllerDelegate? + + init(model: ChooseDeviceToReactivateViewModel, obvEngine: ObvEngine, delegate: ChooseDeviceToReactivateHostingViewControllerDelegate) { + self.obvEngine = obvEngine + self.model = model + self.delegate = delegate + let actions = ChooseDeviceToReactivateViewActions() + let rootView = ChooseDeviceToReactivateView(model: model, actions: actions) + super.init(rootView: rootView) + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + // MARK: ChooseDeviceToReactivateViewActionsDelegate + + + func theReactivationProgressViewDidAppear(ownedCryptoId: ObvCryptoId) async { + do { + let ownedDeviceDiscoveryResult = try await obvEngine.performOwnedDeviceDiscoveryNow(ownedCryptoId: ownedCryptoId) + model.updateStatusWith(ownedDeviceDiscoveryResult: ownedDeviceDiscoveryResult) + } catch { + assertionFailure() + model.updateStatusAsServerQueryFailed() + } + + } + + + @MainActor + func userWantsToCancelReactivationOfCurrentDevice() async { + await delegate?.userWantsToDismissChooseDeviceToReactivateHostingViewController() + } + + + @MainActor + func userWantsToActivateCurrentDevice(ownedCryptoId: ObvCryptoId, currentDeviceIdentifier: Data, deviceIdentifierOfOtherDeviceToDeactivate: Data?) async { + showHUD(type: .spinner) + do { + try await ObvPushNotificationManager.shared.userRequestedReactivationOf(ownedCryptoId: ownedCryptoId, replacedDeviceIdentifier: deviceIdentifierOfOtherDeviceToDeactivate) + showHUD(type: .checkmark) + await suspendDuringTimeInterval(1.5) + hideHUD() + await delegate?.userWantsToDismissChooseDeviceToReactivateHostingViewController() + } catch { + showHUD(type: .xmark) + await suspendDuringTimeInterval(1.5) + hideHUD() + } + } + +} + + + +// MARK: - ChooseDeviceToReactivateViewModel + +final class ChooseDeviceToReactivateViewModel: ObservableObject, ChooseDeviceToReactivateViewModelProtocol { + + struct Device: DeviceCardViewModelProtocol { + let deviceIdentifier: Data + let deviceName: String + let expirationDate: Date? + let latestRegistrationDate: Date? + } + + let ownedCryptoId: ObvCryptoId + let currentDeviceName: String + let currentDeviceIdentifier: Data + @Published var status: ChooseDeviceToReactivateViewStatus + + init(ownedCryptoId: ObvCryptoId, currentDeviceName: String, currentDeviceIdentifier: Data) { + self.ownedCryptoId = ownedCryptoId + self.currentDeviceName = currentDeviceName + self.currentDeviceIdentifier = currentDeviceIdentifier + self.status = .queryingServer + } + + + fileprivate func updateStatusWith(ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult) { + + let devicesFromServer = ownedDeviceDiscoveryResult.devices.map { + Device(deviceIdentifier: $0.identifier, deviceName: $0.name ?? String($0.identifier.hexString().prefix(4)), expirationDate: $0.expirationDate, latestRegistrationDate: $0.latestRegistrationDate) + } + + let serverAnswerReceivedStatus: ChooseDeviceToReactivateViewStatus.ServerAnswerReceivedStatus + if ownedDeviceDiscoveryResult.devices.isEmpty { + serverAnswerReceivedStatus = .noActiveDeviceFoundOnServer + } else if ownedDeviceDiscoveryResult.isMultidevice { + serverAnswerReceivedStatus = .multideviceFeatureAvailable(devicesFromServer: devicesFromServer) + } else if ownedDeviceDiscoveryResult.devices.allSatisfy({ $0.expirationDate != nil }) { + serverAnswerReceivedStatus = .multideviceFeatureUnavailableAndAllActiveDevicesExpire(devicesFromServer: devicesFromServer) + } else { + serverAnswerReceivedStatus = .multideviceFeatureUnavailableAndAtLeastOneNonExpiringActiveDeviceFound(devicesFromServer: devicesFromServer) + } + + withAnimation { + self.status = .serverAnswerReceived(status: serverAnswerReceivedStatus) + } + + } + + + fileprivate func updateStatusAsServerQueryFailed() { + withAnimation { + self.status = .serverQueryFailed + } + } + +} + + + + + +fileprivate final class ChooseDeviceToReactivateViewActions: ChooseDeviceToReactivateViewActionsDelegate { + + var delegate: ChooseDeviceToReactivateViewActionsDelegate? + + func theReactivationProgressViewDidAppear(ownedCryptoId: ObvCryptoId) async { + await delegate?.theReactivationProgressViewDidAppear(ownedCryptoId: ownedCryptoId) + } + + func userWantsToCancelReactivationOfCurrentDevice() async { + await delegate?.userWantsToCancelReactivationOfCurrentDevice() + } + + func userWantsToActivateCurrentDevice(ownedCryptoId: ObvTypes.ObvCryptoId, currentDeviceIdentifier: Data, deviceIdentifierOfOtherDeviceToDeactivate: Data?) async { + await delegate?.userWantsToActivateCurrentDevice(ownedCryptoId: ownedCryptoId, currentDeviceIdentifier: currentDeviceIdentifier, deviceIdentifierOfOtherDeviceToDeactivate: deviceIdentifierOfOtherDeviceToDeactivate) + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ChooseDeviceToReactivate/ChooseDeviceToReactivateView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ChooseDeviceToReactivate/ChooseDeviceToReactivateView.swift new file mode 100644 index 00000000..9fddc820 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ChooseDeviceToReactivate/ChooseDeviceToReactivateView.swift @@ -0,0 +1,597 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import ObvTypes +import ObvEngine + + +protocol ChooseDeviceToReactivateViewModelProtocol: ObservableObject { + + associatedtype DeviceCardViewModel: DeviceCardViewModelProtocol + + var ownedCryptoId: ObvCryptoId { get } + var currentDeviceName: String { get } + var currentDeviceIdentifier: Data { get } + var status: ChooseDeviceToReactivateViewStatus { get } + +} + + +protocol ChooseDeviceToReactivateViewActionsDelegate: ReactivationProgressViewActionsDelegate { + func theReactivationProgressViewDidAppear(ownedCryptoId: ObvCryptoId) async + func userWantsToActivateCurrentDevice(ownedCryptoId: ObvCryptoId, currentDeviceIdentifier: Data, deviceIdentifierOfOtherDeviceToDeactivate: Data?) async +} + + +enum ChooseDeviceToReactivateViewStatus { + + case queryingServer + case serverAnswerReceived(status: ServerAnswerReceivedStatus) + case serverQueryFailed + + enum ServerAnswerReceivedStatus { + case noActiveDeviceFoundOnServer // ok + case multideviceFeatureAvailable(devicesFromServer: [Model]) // ok + case multideviceFeatureUnavailableAndAtLeastOneNonExpiringActiveDeviceFound(devicesFromServer: [Model]) // ok + case multideviceFeatureUnavailableAndAllActiveDevicesExpire(devicesFromServer: [Model]) + } + +} + + +// MARK: - ChooseDeviceToReactivateView + +struct ChooseDeviceToReactivateView: View { + + @ObservedObject var model: Model + let actions: ChooseDeviceToReactivateViewActionsDelegate? + + @State private var onAppearActionPerformed = false + @State private var deviceIdentifierOfSelectedDeviceToDeactivate: Data? + @State private var shouldDisableButtons = false + + private func theReactivationProgressViewDidAppear() { + guard !onAppearActionPerformed else { return } + onAppearActionPerformed = true + let ownedCryptoId = model.ownedCryptoId + Task { + await actions?.theReactivationProgressViewDidAppear(ownedCryptoId: ownedCryptoId) + } + } + + private var aDeviceIsCurrentlySelected: Bool { + deviceIdentifierOfSelectedDeviceToDeactivate != nil + } + + private func userWantsToActivateThisDevice() { + Task { + shouldDisableButtons = true + await actions?.userWantsToActivateCurrentDevice( + ownedCryptoId: model.ownedCryptoId, + currentDeviceIdentifier: model.currentDeviceIdentifier, + deviceIdentifierOfOtherDeviceToDeactivate: deviceIdentifierOfSelectedDeviceToDeactivate) + shouldDisableButtons = false + } + } + + + private func userWantsToCancel() { + Task { + await actions?.userWantsToCancelReactivationOfCurrentDevice() + } + } + + + var body: some View { + + switch model.status { + + case .queryingServer: + + ReactivationProgressView( + nameOfCurrentDevice: model.currentDeviceName, + actions: actions) + .padding() + .onAppear(perform: theReactivationProgressViewDidAppear) + + case .serverQueryFailed: + + ScrollView { + VStack { + + TitleView(title: "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_FAILED_TITLE") + .padding(.bottom) + + ExplanationView(text: "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_FAILED_BODY") + .padding(.bottom) + + Group { + OlvidButton( + style: .red, + title: Text("ACTIVATE_THIS_DEVICE"), + action: userWantsToActivateThisDevice) + OlvidButton( + style: .blue, + title: Text("MAYBE_LATER"), + action: userWantsToCancel) + }.disabled(shouldDisableButtons) + + }.padding() + } + + case .serverAnswerReceived(status: let serverAnswerReceivedStatus): + + ScrollView { + VStack { + + switch serverAnswerReceivedStatus { + + case .noActiveDeviceFoundOnServer: + + TitleView(title: "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_ACTIVE_DEVICE_FOUND_TITLE") + .padding(.bottom) + + ExplanationView(text: "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_ACTIVE_DEVICE_FOUND_BODY") + .padding(.bottom) + + Group { + OlvidButton( + style: .blue, + title: Text("ACTIVATE_THIS_DEVICE"), + action: userWantsToActivateThisDevice) + OlvidButton( + style: .standardWithBlueText, + title: Text("MAYBE_LATER"), + action: userWantsToCancel) + }.disabled(shouldDisableButtons) + + case .multideviceFeatureAvailable(let devicesFromServer): + + TitleView(title: "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_MULTIDEVICE_AVAILABLE_TITLE") + .padding(.bottom) + + ExplanationView(text: "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_MULTIDEVICE_AVAILABLE_BODY") + .padding(.bottom) + + Group { + OlvidButton( + style: .blue, + title: Text("ACTIVATE_THIS_DEVICE"), + action: userWantsToActivateThisDevice) + OlvidButton( + style: .standardWithBlueText, + title: Text("MAYBE_LATER"), + action: userWantsToCancel) + }.disabled(shouldDisableButtons) + + if !devicesFromServer.isEmpty { + + HStack { + Text(String.localizedStringWithFormat(NSLocalizedString("YOUR_OTHER_DEVICES", comment: ""), devicesFromServer.count)) + .font(.headline) + Spacer() + }.padding(.top, 32) + + ForEach(devicesFromServer, id: \.deviceIdentifier) { deviceFromServer in + DeviceCardView(model: deviceFromServer) + } + + } + + case .multideviceFeatureUnavailableAndAllActiveDevicesExpire(let devicesFromServer): + + TitleView(title: "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_MULTIDEVICE_ALL_DEVICES_EXPIRE_TITLE") + .padding(.bottom) + + ExplanationViewAlt(text: String.localizedStringWithFormat(NSLocalizedString("OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_MULTIDEVICE_N_DEVICES_EXPIRE_BODY", comment: ""), devicesFromServer.count)) + .padding(.bottom) + + Group { + OlvidButton( + style: .blue, + title: Text("ACTIVATE_THIS_DEVICE"), + action: userWantsToActivateThisDevice) + OlvidButton( + style: .standardWithBlueText, + title: Text("MAYBE_LATER"), + action: userWantsToCancel) + }.disabled(shouldDisableButtons) + + HStack { + Text(String.localizedStringWithFormat(NSLocalizedString("YOUR_OTHER_DEVICES", comment: ""), devicesFromServer.count)) + .font(.headline) + Spacer() + }.padding(.top, 32) + + ForEach(devicesFromServer, id: \.deviceIdentifier) { deviceFromServer in + DeviceCardView(model: deviceFromServer) + } + + + case .multideviceFeatureUnavailableAndAtLeastOneNonExpiringActiveDeviceFound(let devicesFromServer): + + TitleView(title: "OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_MULTIDEVICE_AT_LEAST_ONE_NON_EXPIRING_DEVICE_TITLE") + .padding(.bottom) + + ExplanationViewAlt(text: String.localizedStringWithFormat(NSLocalizedString("OWNED_DEVICE_DISCOVERY_SERVER_QUERY_NO_MULTIDEVICE_AT_LEAST_ONE_NON_EXPIRING_DEVICE_BODY", comment: ""), devicesFromServer.count)) + .padding(.bottom) + + ForEach(devicesFromServer, id: \.deviceIdentifier) { deviceFromServer in + SelectableDeviceCardView(model: deviceFromServer, deviceIdentifierOfSelectedDevice: $deviceIdentifierOfSelectedDeviceToDeactivate) + } + + Group { + OlvidButton( + style: .blue, + title: Text("DEACTIVATE_SELECTED_DEVICE_AND_ACTIVATE_THIS_ONE"), + action: userWantsToActivateThisDevice) + .disabled(!aDeviceIsCurrentlySelected) + OlvidButton( + style: .standardWithBlueText, + title: Text("MAYBE_LATER"), + action: userWantsToCancel) + }.disabled(shouldDisableButtons) + + } + + }.padding() + } + + } + + } + +} + + +fileprivate struct TitleView: View { + + let title: LocalizedStringKey + + var body: some View { + HStack { + Text(title) + .font(.title) + Spacer() + } + } + +} + + +fileprivate struct ExplanationView: View { + + let text: LocalizedStringKey + + var body: some View { + ObvCardView { + HStack { + Text(text) + Spacer() + } + } + } + +} + + +fileprivate struct ExplanationViewAlt: View { + + let text: String + + var body: some View { + ObvCardView { + HStack { + Text(text) + Spacer() + } + } + } + +} + + +protocol DeviceCardViewModelProtocol { + + var deviceIdentifier: Data { get } + var deviceName: String { get } + var expirationDate: Date? { get } + var latestRegistrationDate: Date? { get } + +} + + +fileprivate struct DeviceCardView: View { + + let model: Model + + var body: some View { + + ObvCardView { + HStack { + VStack(alignment: .leading, spacing: 4) { + Text(verbatim: model.deviceName) + .font(.headline) + if let expirationDate = model.expirationDate { + Text("DEVICE_DEACTIVATED_\(expirationDate.relativeFormatted)") + } else { + Text("DEVICE_WONT_BE_DEACTIVATED") + } + } + Spacer() + } + } + + } + +} + + +fileprivate struct SelectableDeviceCardView: View { + + let model: Model + @Binding var deviceIdentifierOfSelectedDevice: Data? + + private var thisDeviceIsSelected: Bool { + model.deviceIdentifier == deviceIdentifierOfSelectedDevice + } + + var body: some View { + + ObvCardView { + HStack(alignment: .center, spacing: 16) { + Image(systemIcon: thisDeviceIsSelected ? .checkmarkCircleFill : .circle) + .foregroundColor(thisDeviceIsSelected ? Color(.systemRed) : .secondary) + VStack(alignment: .leading) { + HStack { + Text(verbatim: model.deviceName) + .font(.headline) + Spacer() + } + if let latestRegistrationDate = model.latestRegistrationDate { + Text("DEVICE_LAST_ONLINE_\(latestRegistrationDate.relativeFormatted)") + .foregroundColor(.secondary) + } + } + } + + + } + .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped + .onTapGesture { + withAnimation { + if deviceIdentifierOfSelectedDevice == model.deviceIdentifier { + deviceIdentifierOfSelectedDevice = nil + } else { + deviceIdentifierOfSelectedDevice = model.deviceIdentifier + } + } + } + + } + +} + + +protocol ReactivationProgressViewActionsDelegate { + func userWantsToCancelReactivationOfCurrentDevice() async +} + + +fileprivate struct ReactivationProgressView: View { + + let nameOfCurrentDevice: String + let actions: ReactivationProgressViewActionsDelegate? + + private func userWantsToCancelReactivationOfCurrentDevice() { + Task { + await actions?.userWantsToCancelReactivationOfCurrentDevice() + } + } + + var body: some View { + + VStack { + Spacer() + Text("PLEASE_WAIT_WHILE_WE_CHECK_WHETHER_YOUR_DEVICE_\(nameOfCurrentDevice)_CAN_BE_REACTIVATED") + .multilineTextAlignment(.center) + .font(.body) + .foregroundColor(.primary) + ProgressView() + Spacer() + OlvidButton(style: .blue, title: Text("Cancel"), action: userWantsToCancelReactivationOfCurrentDevice) + } + + } + +} + + + +// MARK: - Previews + +struct ChooseDeviceToReactivateView_Previews: PreviewProvider { + + final class DeviceCardViewModelForPreviews: DeviceCardViewModelProtocol { + + let deviceIdentifier: Data + let deviceName: String + let expirationDate: Date? + let latestRegistrationDate: Date? + + init(deviceIdentifier: Data, deviceName: String, expirationDate: Date?, latestRegistrationDate: Date?) { + self.deviceIdentifier = deviceIdentifier + self.deviceName = deviceName + self.expirationDate = expirationDate + self.latestRegistrationDate = latestRegistrationDate + } + + } + + private static let identityAsURL: URL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! + + private static let ownedCryptoId = ObvURLIdentity(urlRepresentation: identityAsURL)!.cryptoId + + + final class ChooseDeviceToReactivateViewModelForPreviews: ChooseDeviceToReactivateViewModelProtocol { + + let ownedCryptoId: ObvCryptoId + let currentDeviceName: String + let currentDeviceIdentifier: Data + let status: ChooseDeviceToReactivateViewStatus + + init(ownedCryptoId: ObvCryptoId, currentDeviceName: String, currentDeviceIdentifier: Data, status: ChooseDeviceToReactivateViewStatus) { + self.ownedCryptoId = ownedCryptoId + self.currentDeviceName = currentDeviceName + self.currentDeviceIdentifier = currentDeviceIdentifier + self.status = status + } + + } + + + private static let devices: [DeviceCardViewModelForPreviews] = { + [ + .init(deviceIdentifier: Data(repeating: 0, count: 16), + deviceName: "iPhone 14", + expirationDate: Date(timeIntervalSinceNow: 2_000), + latestRegistrationDate: Date(timeIntervalSinceNow: -300)), + .init(deviceIdentifier: Data(repeating: 1, count: 16), + deviceName: "iPad Pro", + expirationDate: Date(timeIntervalSinceNow: 3_000), + latestRegistrationDate: Date(timeIntervalSinceNow: -400)), + .init(deviceIdentifier: Data(repeating: 2, count: 16), + deviceName: "iPod", + expirationDate: nil, + latestRegistrationDate: Date(timeIntervalSinceNow: -500)), + ] + }() + + + private static let models: [ChooseDeviceToReactivateViewModelForPreviews] = { + [ + .init(ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .queryingServer), + .init(ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .serverQueryFailed), + .init(ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .serverAnswerReceived(status: .noActiveDeviceFoundOnServer)), + .init(ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .serverAnswerReceived( + status: .multideviceFeatureUnavailableAndAtLeastOneNonExpiringActiveDeviceFound(devicesFromServer: [devices[1]]) + )), + .init(ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .serverAnswerReceived( + status: .multideviceFeatureUnavailableAndAtLeastOneNonExpiringActiveDeviceFound(devicesFromServer: [devices[0], devices[1]]) + )), + ] + }() + + + private struct ChooseDeviceToReactivateViewActionsForPreviews: ChooseDeviceToReactivateViewActionsDelegate { + func userWantsToActivateCurrentDevice(ownedCryptoId: ObvTypes.ObvCryptoId, currentDeviceIdentifier: Data, deviceIdentifierOfOtherDeviceToDeactivate: Data?) async {} + func theReactivationProgressViewDidAppear(ownedCryptoId: ObvCryptoId) async {} + func userWantsToCancelReactivationOfCurrentDevice() async {} + } + + private static let actions = ChooseDeviceToReactivateViewActionsForPreviews() + + static var previews: some View { + Group { + + ChooseDeviceToReactivateView(model: models[0], actions: actions) + .previewDisplayName("Querying server") + + ChooseDeviceToReactivateView(model: models[1], actions: actions) + .previewDisplayName("Server query failed") + + ChooseDeviceToReactivateView(model: models[2], actions: actions) + .previewDisplayName("No active device found on server") + + ChooseDeviceToReactivateView( + model: ChooseDeviceToReactivateViewModelForPreviews( + ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .serverAnswerReceived( + status: .multideviceFeatureAvailable(devicesFromServer: []) + )), + actions: actions) + .previewDisplayName("Multidevice available (no other device)") + + ChooseDeviceToReactivateView( + model: ChooseDeviceToReactivateViewModelForPreviews( + ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .serverAnswerReceived( + status: .multideviceFeatureAvailable(devicesFromServer: [devices[2]]) + )), + actions: actions) + .previewDisplayName("Multidevice available (one other non-expiring device)") + + ChooseDeviceToReactivateView( + model: ChooseDeviceToReactivateViewModelForPreviews( + ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .serverAnswerReceived( + status: .multideviceFeatureUnavailableAndAllActiveDevicesExpire(devicesFromServer: [devices[0]]) + )), + actions: actions) + .previewDisplayName("No multidevice but the other active device expires") + + ChooseDeviceToReactivateView( + model: ChooseDeviceToReactivateViewModelForPreviews( + ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .serverAnswerReceived( + status: .multideviceFeatureUnavailableAndAllActiveDevicesExpire(devicesFromServer: [devices[0], devices[1]]) + )), + actions: actions) + .previewDisplayName("No multidevice but both other active devices expire") + + ChooseDeviceToReactivateView( + model: ChooseDeviceToReactivateViewModelForPreviews( + ownedCryptoId: ownedCryptoId, + currentDeviceName: devices[0].deviceName, + currentDeviceIdentifier: devices[0].deviceIdentifier, + status: .serverAnswerReceived( + status: .multideviceFeatureUnavailableAndAtLeastOneNonExpiringActiveDeviceFound(devicesFromServer: [devices[2]]) + )), + actions: actions) + .previewDisplayName("No multidevice and the other device does not expire") + + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/EditSingleOwnedIdentityNavigationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/EditSingleOwnedIdentityNavigationView.swift index 97acf34d..45165de8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/EditSingleOwnedIdentityNavigationView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/EditSingleOwnedIdentityNavigationView.swift @@ -20,6 +20,7 @@ import ObvUI import SwiftUI import ObvTypes +import ObvDesignSystem struct EditSingleOwnedIdentityNavigationView: View { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/EditSingleOwnedIdentityView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/EditSingleOwnedIdentityView.swift index e34a1e65..95b69ebd 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/EditSingleOwnedIdentityView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/EditSingleOwnedIdentityView.swift @@ -20,6 +20,8 @@ import ObvUI import SwiftUI import ObvTypes +import ObvUICoreData +import ObvDesignSystem struct EditSingleOwnedIdentityView: View { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/IdentityHeaderView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/IdentityHeaderView.swift index 44fb6113..b8679a14 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/IdentityHeaderView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/IdentityHeaderView.swift @@ -18,18 +18,7 @@ */ import SwiftUI - - -struct OwnedIdentityHeaderView: View { - - @ObservedObject var singleIdentity: SingleIdentity - - var body: some View { - IdentityCardContentView(model: singleIdentity, - displayMode: .header) - } - -} +import ObvUICoreData struct ContactIdentityHeaderView: View { @@ -50,16 +39,6 @@ struct ContactIdentityHeaderView: View { struct IdentityHeaderView_Previews: PreviewProvider { - static let ownedIdentity = SingleIdentity( - firstName: "Steve", - lastName: "Job", - position: "CEO", - company: "Apple", - isKeycloakManaged: false, - showGreenShield: false, - showRedShield: false, - identityColors: nil, - photoURL: nil) static let contactIdentity = SingleContactIdentity( firstName: "Steve", lastName: "Job", @@ -68,13 +47,13 @@ struct IdentityHeaderView_Previews: PreviewProvider { customDisplayName: nil, publishedContactDetails: nil, contactStatus: .noNewPublishedDetails, + atLeastOneDeviceAllowsThisContactToReceiveMessages: true, contactHasNoDevice: false, contactIsOneToOne: true, isActive: true) static var previews: some View { Group { - OwnedIdentityHeaderView(singleIdentity: ownedIdentity) ContactIdentityHeaderView(singleIdentity: contactIdentity, editionMode: .none) ContactIdentityHeaderView(singleIdentity: contactIdentity, editionMode: .custom(icon: .pencil(), action: { })) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/OwnedDeviceView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/OwnedDeviceView.swift new file mode 100644 index 00000000..b5fe9907 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/OwnedDeviceView.swift @@ -0,0 +1,414 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvUI +import ObvUICoreData +import UI_SystemIcon +import ObvTypes +import ObvEngine + + +// MARK: - OwnedDeviceViewModel + +protocol OwnedDeviceViewModelProtocol: ObservableObject { + + var ownedCryptoId: ObvCryptoId { get throws } + var deviceIdentifier: Data { get } + var name: String { get } + var secureChannelStatus: PersistedObvOwnedDevice.SecureChannelStatus? { get } + var expirationDate: Date? { get } + var latestRegistrationDate: Date? { get } + var ownedIdentityIsActive: Bool { get } + +} + + +// MARK: - OwnedDeviceViewActionsDelegate + +protocol OwnedDeviceViewActionsDelegate { + + func userWantsToRestartChannelCreationWithOtherOwnedDevice(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async + func userWantsToRenameOwnedDevice(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async + func userWantsToDeactivateOtherOwnedDevice(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async + func userWantsToKeepThisDeviceActive(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async + +} + + +// MARK: - OwnedDeviceView + +struct OwnedDeviceView: View { + + @ObservedObject var ownedDevice: Model + let actions: OwnedDeviceViewActionsDelegate + + + private var textForSecureChannelStatus: LocalizedStringKey { + switch ownedDevice.secureChannelStatus { + case .currentDevice: + return "CURRENT_DEVICE" + case .creationInProgress, .none: + return "SECURE_CHANNEL_CREATION_IN_PROGRESS" + case .created: + return "SECURE_CHANNEL_CREATED" + } + } + + + private func userWantsToRestartChannelCreationWithThisOwnedDevice() { + guard let ownedCryptoId = try? ownedDevice.ownedCryptoId else { assertionFailure(); return } + guard ownedDevice.secureChannelStatus != .currentDevice else { assertionFailure(); return } + let deviceIdentifier = ownedDevice.deviceIdentifier + Task { + await actions.userWantsToRestartChannelCreationWithOtherOwnedDevice(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceIdentifier) + } + } + + + private func userWantsToRenameThisDevice() { + guard let ownedCryptoId = try? ownedDevice.ownedCryptoId else { assertionFailure(); return } + let deviceIdentifier = ownedDevice.deviceIdentifier + Task { + await actions.userWantsToRenameOwnedDevice(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceIdentifier) + } + } + + + private func userWantsToDeactivateOtherOwnedDevice() { + guard let ownedCryptoId = try? ownedDevice.ownedCryptoId else { assertionFailure(); return } + let deviceIdentifier = ownedDevice.deviceIdentifier + Task { + await actions.userWantsToDeactivateOtherOwnedDevice(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceIdentifier) + } + } + + + private func userWantsToKeepThisDeviceActive() { + guard let ownedCryptoId = try? ownedDevice.ownedCryptoId else { assertionFailure(); return } + let deviceIdentifier = ownedDevice.deviceIdentifier + Task { + await actions.userWantsToKeepThisDeviceActive(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceIdentifier) + } + } + + + private var systemIconForSecureChannelStatus: SystemIcon { + switch ownedDevice.secureChannelStatus { + case .currentDevice: + switch UIDevice.current.userInterfaceIdiom { + case .pad: + return .ipadLandscape + case .mac: + return .laptopcomputer + default: + return .iphone + } + case .creationInProgress, .none: + return .arrowTriangle2CirclepathCircle + case .created: + return .checkmarkShield + } + } + + + private var colorForSecureChannelStatus: Color { + switch ownedDevice.secureChannelStatus { + case .creationInProgress, .none, .currentDevice: + return .primary + case .created: + return .green + } + } + + @Environment(\.sizeCategory) var sizeCategory + + private var heuristicIconSize: CGFloat { + switch sizeCategory { + case .accessibilityExtraLarge, .accessibilityExtraExtraLarge, .accessibilityExtraExtraExtraLarge: + return 70 + case .accessibilityMedium, .accessibilityLarge: + return 50 + default: + return 35 + } + } + + + private var isCurrentDevice: Bool { + switch ownedDevice.secureChannelStatus { + case .currentDevice: + return true + case .creationInProgress, .created, .none: + return false + } + } + + + var body: some View { + VStack(alignment: .leading) { + + // Title + + HStack(alignment: .firstTextBaseline) { + Text(verbatim: ownedDevice.name) + .font(.headline) + .foregroundColor(.primary) + .lineLimit(nil) + if isCurrentDevice { + Text("CURRENT_DEVICE_LOWERCAES_WITH_PARENTHESES") + .font(.footnote) + .foregroundColor(.secondary) + } + Spacer() + Text(verbatim: String("(\(ownedDevice.deviceIdentifier.hexString().prefix(4)))")) + .font(.footnote) + .foregroundColor(.secondary) + }.padding(.bottom, 4.0) + + Group { + + // Button for renaming this device + + Button(action: userWantsToRenameThisDevice) { + InternalLabel("RENAME_DEVICE", systemIcon: .rectangleAndPencilAndEllipsis, systemIconIconWidth: heuristicIconSize, systemIconColor: Color(UIColor.systemBlue), labelColor: Color(UIColor.systemBlue)) + } + .padding(.bottom, 4.0) + + // Last online date + + if let latestRegistrationDate = ownedDevice.latestRegistrationDate, ownedDevice.secureChannelStatus != .currentDevice { + InternalLabel("DEVICE_LAST_ONLINE_\(latestRegistrationDate.relativeFormatted)", systemIcon: .eyes, systemIconIconWidth: heuristicIconSize, systemIconColor: Color(UIColor.systemGreen)) + .padding(.bottom, 4.0) + } + + } + + Divider() + .padding(.leading, heuristicIconSize + 8) + .padding(.vertical, 4.0) + + // Deactivation informations and actions + + Group { + + // Deactivation date + + Group { + if !ownedDevice.ownedIdentityIsActive { + InternalLabel("DEVICE_DEACTIVATED", systemIcon: .poweroff, systemIconIconWidth: heuristicIconSize, systemIconColor: Color(UIColor.systemRed)) + } else if let expirationDate = ownedDevice.expirationDate { + InternalLabel("DEVICE_DEACTIVATED_\(expirationDate.relativeFormatted)", systemIcon: .poweroff, systemIconIconWidth: heuristicIconSize, systemIconColor: Color(UIColor.systemRed)) + } else { + InternalLabel("DEVICE_WONT_BE_DEACTIVATED", systemIcon: .poweroff, systemIconIconWidth: heuristicIconSize, systemIconColor: Color(UIColor.systemGreen)) + } + }.padding(.bottom, 4.0) + + + // Button for keeping the device active + + if ownedDevice.expirationDate != nil && ownedDevice.ownedIdentityIsActive { + Button(action: userWantsToKeepThisDeviceActive) { + InternalLabel("KEEP_THIS_DEVICE_ACTIVE", systemIcon: .poweroff, systemIconIconWidth: heuristicIconSize, systemIconColor: Color(UIColor.systemGreen), labelColor: Color(UIColor.systemBlue)) + .padding(.bottom, 4.0) + } + } + + // Button for deactivating this device + + switch ownedDevice.secureChannelStatus { + case .currentDevice: + EmptyView() + case .created, .creationInProgress, .none: + Button(action: userWantsToDeactivateOtherOwnedDevice) { + InternalLabel("REMOVE_OWNED_DEVICE", systemIcon: .poweroff, systemIconIconWidth: heuristicIconSize, systemIconColor: Color(UIColor.systemRed), labelColor: Color(UIColor.systemRed)) + } + .padding(.bottom, 4.0) + } + + } + + // Secure channel informations and actions (for other owned devices) + + switch ownedDevice.secureChannelStatus { + case .currentDevice: + EmptyView() + case .created, .creationInProgress, .none: + + Group { + + Divider() + .padding(.leading, heuristicIconSize + 8) + .padding(.vertical, 4.0) + + // Secure channel status (for other owned devices) + + InternalLabel(textForSecureChannelStatus, systemIcon: systemIconForSecureChannelStatus, systemIconIconWidth: heuristicIconSize, systemIconColor: colorForSecureChannelStatus) + .padding(.bottom, 4.0) + + // Button for reacreating channel + + switch ownedDevice.secureChannelStatus { + case .currentDevice: + EmptyView() + case .created, .creationInProgress, .none: + Button(action: userWantsToRestartChannelCreationWithThisOwnedDevice) { + InternalLabel("RECREATE_SECURE_CHANNEL_WITH_THIS_DEVICE", systemIcon: .restartCircle, systemIconIconWidth: heuristicIconSize, systemIconColor: Color(UIColor.systemBlue), labelColor: Color(UIColor.systemBlue)) + } + .padding(.bottom, 4.0) + } + + } + + } + + } + } + +} + + +// MARK: - InternalLabel + +fileprivate struct InternalLabel: View { + + let localizedStringKey: LocalizedStringKey + let systemIcon: SystemIcon + let systemIconIconWidth: CGFloat + let systemIconColor: Color + let labelColor: Color + + init(_ localizedStringKey: LocalizedStringKey, systemIcon: SystemIcon, systemIconIconWidth: CGFloat, systemIconColor: Color = .primary, labelColor: Color = .primary) { + self.localizedStringKey = localizedStringKey + self.systemIcon = systemIcon + self.systemIconIconWidth = systemIconIconWidth + self.systemIconColor = systemIconColor + self.labelColor = labelColor + } + + var body: some View { + Label { + Text(localizedStringKey) + .foregroundColor(labelColor) + } icon: { + HStack(alignment: .firstTextBaseline) { + Spacer() + Image(systemIcon: systemIcon) + .foregroundColor(systemIconColor) + Spacer() + } + .frame(width: systemIconIconWidth) + } + } +} + + + + + + + + + + +// MARK: - Previews + +struct OwnedDeviceView_Previews: PreviewProvider { + + private class OwnedDeviceViewModelForPreviews: OwnedDeviceViewModelProtocol { + + let ownedCryptoId: ObvCryptoId + let deviceIdentifier: Data + let name: String + let secureChannelStatus: PersistedObvOwnedDevice.SecureChannelStatus? + let expirationDate: Date? + let latestRegistrationDate: Date? + let ownedIdentityIsActive: Bool + + init(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data, name: String, secureChannelStatus: PersistedObvOwnedDevice.SecureChannelStatus?, expirationDate: Date?, latestRegistrationDate: Date?, ownedIdentityIsActive: Bool) { + self.ownedCryptoId = ownedCryptoId + self.deviceIdentifier = deviceIdentifier + self.name = name + self.secureChannelStatus = secureChannelStatus + self.expirationDate = expirationDate + self.latestRegistrationDate = latestRegistrationDate + self.ownedIdentityIsActive = ownedIdentityIsActive + } + + } + + private struct OwnedDeviceViewActions: OwnedDeviceViewActionsDelegate { + func userWantsToKeepThisDeviceActive(ownedCryptoId: ObvTypes.ObvCryptoId, deviceIdentifier: Data) async {} + func userWantsToRestartChannelCreationWithOtherOwnedDevice(ownedCryptoId: ObvTypes.ObvCryptoId, deviceIdentifier: Data) async {} + func userWantsToRenameOwnedDevice(ownedCryptoId: ObvTypes.ObvCryptoId, deviceIdentifier: Data) async {} + func userWantsToDeactivateOtherOwnedDevice(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async {} + } + + private static let identitiesAsURLs: [URL] = [ + URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")!, + URL(string: "https://invitation.olvid.io/#AwAAAHAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAAVZx8aqikpCe4h3ayCwgKBf-2nDwz-a6vxUo3-ep5azkBUjimUf3J--GXI8WTc2NIysQbw5fxmsY9TpjnDsZMW-AAAAAACEJvYiBXb3Jr")!, + ] + + private static let ownedCryptoIds = identitiesAsURLs.map({ ObvURLIdentity(urlRepresentation: $0)!.cryptoId }) + + static var previews: some View { + Group { + + OwnedDeviceView( + ownedDevice: OwnedDeviceViewModelForPreviews( + ownedCryptoId: ownedCryptoIds[0], + deviceIdentifier: Data(repeating: 0, count: 16), + name: "iPhone 14", + secureChannelStatus: .currentDevice, + expirationDate: nil, + latestRegistrationDate: nil, + ownedIdentityIsActive: true), + actions: OwnedDeviceViewActions()) + .previewLayout(.sizeThatFits) + .padding() + + OwnedDeviceView( + ownedDevice: OwnedDeviceViewModelForPreviews( + ownedCryptoId: ownedCryptoIds[1], + deviceIdentifier: Data(repeating: 1, count: 16), + name: "iPad pro", + secureChannelStatus: .created, + expirationDate: Date(timeIntervalSinceNow: 1_000), + latestRegistrationDate: Date(timeIntervalSinceNow: -500), + ownedIdentityIsActive: true), + actions: OwnedDeviceViewActions()) + .previewLayout(.sizeThatFits) + .padding() + + OwnedDeviceView( + ownedDevice: OwnedDeviceViewModelForPreviews( + ownedCryptoId: ownedCryptoIds[0], + deviceIdentifier: Data(repeating: 0, count: 16), + name: "iPhone 14", + secureChannelStatus: .currentDevice, + expirationDate: nil, + latestRegistrationDate: nil, + ownedIdentityIsActive: false), + actions: OwnedDeviceViewActions()) + .previewLayout(.sizeThatFits) + .padding() + + } + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/OwnedDevicesListView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/OwnedDevicesListView.swift new file mode 100644 index 00000000..99f17cbf --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/OwnedDevicesListView.swift @@ -0,0 +1,202 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvUI +import ObvUICoreData +import UI_SystemIcon +import ObvTypes +import ObvEngine + + +// MARK: - OwnedDevicesListViewModelProtocol + +protocol OwnedDevicesListViewModelProtocol: ObservableObject { + + associatedtype OwnedDeviceViewModel: OwnedDeviceViewModelProtocol + + var ownedCryptoId: ObvCryptoId { get } + var ownedDevices: [OwnedDeviceViewModel] { get } + +} + + +// MARK: - OwnedDevicesListViewActionsDelegate + +protocol OwnedDevicesListViewActionsDelegate: OwnedDeviceViewActionsDelegate { + + func userWantsToSearchForNewOwnedDevices(ownedCryptoId: ObvCryptoId) async + func userWantsToClearAllOtherOwnedDevices(ownedCryptoId: ObvCryptoId) async + +} + + +// MARK: - OwnedDevicesListView + +struct OwnedDevicesListView: View { + + @ObservedObject var model: Model + let actions: OwnedDevicesListViewActionsDelegate + + @State private var alertKind = AlertKind.clearAllDevices + @State private var isAlertPresented = false + + private enum AlertKind { + case clearAllDevices + } + + private func userWantsToSearchForNewOwnedDevices() { + Task { await actions.userWantsToSearchForNewOwnedDevices(ownedCryptoId: model.ownedCryptoId) } + } + + private func userWantsToClearAllOtherOwnedDevicesAndHasConfirmed() { + Task { await actions.userWantsToClearAllOtherOwnedDevices(ownedCryptoId: model.ownedCryptoId) } + } + + private func userWantsToClearAllOtherOwnedDevicesAndMustConfirm() { + alertKind = .clearAllDevices + withAnimation { + isAlertPresented = true + } + } + + var body: some View { + ScrollView { + VStack { + ForEach(model.ownedDevices, id: \.deviceIdentifier) { ownedDevice in + ObvCardView { + OwnedDeviceView( + ownedDevice: ownedDevice, + actions: actions) + }.padding(.bottom) + } + OlvidButton( + style: .standard, + title: Text("SEARCH_FOR_NEW_DEVICES"), + systemIcon: .magnifyingglass, + action: userWantsToSearchForNewOwnedDevices) + OlvidButton( + style: .red, + title: Text("CLEAR_ALL_DEVICES"), + systemIcon: .trash, + action: userWantsToClearAllOtherOwnedDevicesAndMustConfirm) + Spacer() + }.padding() + } + .alert(isPresented: $isAlertPresented) { + switch self.alertKind { + case .clearAllDevices: + return Alert(title: Text("CLEAR_ALL_OTHER_OWNED_DEVICES_ALERT_TITLE"), + message: Text("CLEAR_ALL_OTHER_OWNED_DEVICES_ALERT_MESSAGE"), + primaryButton: Alert.Button.destructive(Text("Yes"), action: userWantsToClearAllOtherOwnedDevicesAndHasConfirmed), + secondaryButton: Alert.Button.cancel()) + } + } + } + +} + + +// MARK: - Previews + + +struct OwnedDevicesListView_Previews: PreviewProvider { + + private class OwnedDeviceViewModelForPreviews: OwnedDeviceViewModelProtocol { + + let ownedCryptoId: ObvCryptoId + let deviceIdentifier: Data + let name: String + let secureChannelStatus: PersistedObvOwnedDevice.SecureChannelStatus? + let expirationDate: Date? + let latestRegistrationDate: Date? + let ownedIdentityIsActive: Bool + + init(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data, name: String, secureChannelStatus: PersistedObvOwnedDevice.SecureChannelStatus?, expirationDate: Date?, latestRegistrationDate: Date?, ownedIdentityIsActive: Bool) { + self.ownedCryptoId = ownedCryptoId + self.deviceIdentifier = deviceIdentifier + self.name = name + self.secureChannelStatus = secureChannelStatus + self.expirationDate = expirationDate + self.latestRegistrationDate = latestRegistrationDate + self.ownedIdentityIsActive = ownedIdentityIsActive + } + + } + + private class OwnedDevicesListViewModelForPreviews: OwnedDevicesListViewModelProtocol { + let ownedCryptoId: ObvCryptoId + let ownedDevices: [OwnedDeviceViewModelForPreviews] + + init(ownedCryptoId: ObvCryptoId, ownedDevices: [OwnedDeviceViewModelForPreviews]) { + self.ownedCryptoId = ownedCryptoId + self.ownedDevices = ownedDevices + } + } + + + private struct OwnedDevicesListViewActions: OwnedDevicesListViewActionsDelegate { + func userWantsToKeepThisDeviceActive(ownedCryptoId: ObvTypes.ObvCryptoId, deviceIdentifier: Data) async {} + func userWantsToSearchForNewOwnedDevices(ownedCryptoId: ObvTypes.ObvCryptoId) async {} + func userWantsToClearAllOtherOwnedDevices(ownedCryptoId: ObvTypes.ObvCryptoId) async {} + func userWantsToRestartChannelCreationWithOtherOwnedDevice(ownedCryptoId: ObvTypes.ObvCryptoId, deviceIdentifier: Data) async {} + func userWantsToRenameOwnedDevice(ownedCryptoId: ObvTypes.ObvCryptoId, deviceIdentifier: Data) async {} + func userWantsToDeactivateOtherOwnedDevice(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async {} + } + + + private static let identitiesAsURLs: [URL] = [ + URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")!, + URL(string: "https://invitation.olvid.io/#AwAAAHAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAAVZx8aqikpCe4h3ayCwgKBf-2nDwz-a6vxUo3-ep5azkBUjimUf3J--GXI8WTc2NIysQbw5fxmsY9TpjnDsZMW-AAAAAACEJvYiBXb3Jr")!, + ] + + private static let ownedCryptoIds = identitiesAsURLs.map({ ObvURLIdentity(urlRepresentation: $0)!.cryptoId }) + + private static let ownedDevices: [OwnedDeviceViewModelForPreviews] = { + let ownedCryptoId = ownedCryptoIds[0] + return [ + OwnedDeviceViewModelForPreviews( + ownedCryptoId: ownedCryptoId, + deviceIdentifier: Data(repeating: 0, count: 16), + name: "iPhone 14", + secureChannelStatus: .currentDevice, + expirationDate: nil, + latestRegistrationDate: nil, + ownedIdentityIsActive: true), + OwnedDeviceViewModelForPreviews( + ownedCryptoId: ownedCryptoId, + deviceIdentifier: Data(repeating: 1, count: 16), + name: "iPad pro", + secureChannelStatus: .created, + expirationDate: Date(timeIntervalSinceNow: 1_000), + latestRegistrationDate: Date(timeIntervalSinceNow: -500), + ownedIdentityIsActive: true), + ] + }() + + static var previews: some View { + Group { + OwnedDevicesListView( + model: OwnedDevicesListViewModelForPreviews( + ownedCryptoId: ownedCryptoIds[0], + ownedDevices: ownedDevices), + actions: OwnedDevicesListViewActions()) + } + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/ViewModelsForCoreDataEntities/PersistedObvOwnedDevice+OwnedDeviceViewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/ViewModelsForCoreDataEntities/PersistedObvOwnedDevice+OwnedDeviceViewModelProtocol.swift new file mode 100644 index 00000000..8ce6b2df --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/ViewModelsForCoreDataEntities/PersistedObvOwnedDevice+OwnedDeviceViewModelProtocol.swift @@ -0,0 +1,34 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import ObvUICoreData +import ObvTypes + + +extension PersistedObvOwnedDevice: OwnedDeviceViewModelProtocol { + + var deviceIdentifier: Data { + self.identifier + } + + var ownedIdentityIsActive: Bool { + ownedIdentity?.isActive ?? false + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/ViewModelsForCoreDataEntities/PersistedObvOwnedIdentity+OwnedDevicesListViewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/ViewModelsForCoreDataEntities/PersistedObvOwnedIdentity+OwnedDevicesListViewModelProtocol.swift new file mode 100644 index 00000000..45ac655b --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/ListOfOwnedDevices/ViewModelsForCoreDataEntities/PersistedObvOwnedIdentity+OwnedDevicesListViewModelProtocol.swift @@ -0,0 +1,34 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import ObvUICoreData +import ObvTypes + + +extension PersistedObvOwnedIdentity: OwnedDevicesListViewModelProtocol { + + var ownedCryptoId: ObvTypes.ObvCryptoId { + self.cryptoId + } + + var ownedDevices: [ObvUICoreData.PersistedObvOwnedDevice] { + self.sortedDevices + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/OwnedIdentityDetailedInfosView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/OwnedIdentityDetailedInfosView.swift index 4b5d5b18..503e1e71 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/OwnedIdentityDetailedInfosView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/OwnedIdentityDetailedInfosView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -16,16 +16,17 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import SwiftUI import ObvTypes import ObvUI import ObvUICoreData +import ObvDesignSystem protocol OwnedIdentityDetailedInfosViewDelegate: AnyObject { func userWantsToDismissOwnedIdentityDetailedInfosView() async + func getKeycloakAPIKey(ownedCryptoId: ObvCryptoId) async throws -> UUID? } @@ -34,6 +35,7 @@ struct OwnedIdentityDetailedInfosView: View { @ObservedObject var ownedIdentity: PersistedObvOwnedIdentity weak var delegate: OwnedIdentityDetailedInfosViewDelegate? @State private var signedContactDetails: SignedObvKeycloakUserDetails? = nil + @State private var ownedIdentityKeycloakApiKey: UUID? private var titlePart1: String? { ownedIdentity.identityCoreDetails.firstName?.trimmingCharacters(in: .whitespacesAndNewlines) @@ -43,13 +45,13 @@ struct OwnedIdentityDetailedInfosView: View { ownedIdentity.identityCoreDetails.lastName?.trimmingCharacters(in: .whitespacesAndNewlines) } - private var circledTextView: Text? { + private var circledText: String? { let component = [titlePart1, titlePart2] .compactMap({ $0?.trimmingCharacters(in: .whitespacesAndNewlines) }) .filter({ !$0.isEmpty }) .first if let char = component?.first { - return Text(String(char)) + return String(char) } else { return nil } @@ -60,6 +62,38 @@ struct OwnedIdentityDetailedInfosView: View { return UIImage(contentsOfFile: url.path) } + private var textViewModel: TextView.Model { + .init(titlePart1: titlePart1, + titlePart2: titlePart2, + subtitle: ownedIdentity.identityCoreDetails.position, + subsubtitle: ownedIdentity.identityCoreDetails.company) + } + + private var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: circledText, + icon: .person, + profilePicture: profilePicture, + showGreenShield: ownedIdentity.isKeycloakManaged, + showRedShield: false) + } + + private var circleAndTitlesViewModelContent: CircleAndTitlesView.Model.Content { + .init(textViewModel: textViewModel, + profilePictureViewModelContent: profilePictureViewModelContent) + } + + private var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: ownedIdentity.cryptoId.colors.background, + foreground: ownedIdentity.cryptoId.colors.text) + } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContent, + colors: initialCircleViewModelColors, + displayMode: .normal, + editionMode: .none) + } + var body: some View { ZStack { Color(AppTheme.shared.colorScheme.systemBackground) @@ -70,21 +104,8 @@ struct OwnedIdentityDetailedInfosView: View { ObvCardView(padding: 0) { VStack(alignment: .leading, spacing: 0) { - - CircleAndTitlesView( - titlePart1: titlePart1, - titlePart2: titlePart2, - subtitle: ownedIdentity.identityCoreDetails.position, - subsubtitle: ownedIdentity.identityCoreDetails.company, - circleBackgroundColor: ownedIdentity.cryptoId.colors.background, - circleTextColor: ownedIdentity.cryptoId.colors.text, - circledTextView: circledTextView, - systemImage: .person, - profilePicture: profilePicture, - showGreenShield: ownedIdentity.isKeycloakManaged, - showRedShield: false, - editionMode: .none, - displayMode: .normal) + + CircleAndTitlesView(model: circleAndTitlesViewModel) .padding() OlvidButton(style: .blue, title: Text(CommonString.Word.Back), systemIcon: .arrowshapeTurnUpBackwardFill) { @@ -148,6 +169,16 @@ struct OwnedIdentityDetailedInfosView: View { Text("CAPABILITIES") } + if !ownedIdentity.devices.isEmpty { + Section { + ForEach(ownedIdentity.sortedDevices) { ownedDevice in + OwnedDeviceInfosView(ownedDevice: ownedDevice) + } + } header: { + Text("Devices") + } + } + if ownedIdentity.isKeycloakManaged { Section { if let signedContactDetails = signedContactDetails { @@ -160,10 +191,13 @@ struct OwnedIdentityDetailedInfosView: View { } else { HStack { Spacer() - ObvProgressView() + ProgressView() Spacer() } } + ObvSimpleListItemView( + title: Text("API Key"), + value: ownedIdentityKeycloakApiKey?.uuidString ?? CommonString.Word.None) } header: { Text("DETAILS_SIGNED_BY_IDENTITY_PROVIDER") } @@ -185,8 +219,30 @@ struct OwnedIdentityDetailedInfosView: View { } }) .postOnDispatchQueue() + let ownedCryptoId = ownedIdentity.ownedCryptoId + Task { + self.ownedIdentityKeycloakApiKey = try? await self.delegate?.getKeycloakAPIKey(ownedCryptoId: ownedCryptoId) + } } } } + + +private struct OwnedDeviceInfosView: View { + + let ownedDevice: PersistedObvOwnedDevice + + private var title: String { + return ownedDevice.name + } + + var body: some View { + ObvSimpleListItemView( + title: Text(title), + value: ownedDevice.identifier.hexString()) + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/PermuteDeviceExpiration/PermuteDeviceExpirationHostingViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/PermuteDeviceExpiration/PermuteDeviceExpirationHostingViewController.swift new file mode 100644 index 00000000..7bffca8e --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/PermuteDeviceExpiration/PermuteDeviceExpirationHostingViewController.swift @@ -0,0 +1,55 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import UIKit +import ObvTypes +import SwiftUI + + +protocol PermuteDeviceExpirationHostingViewControllerDelegate: PermuteDeviceExpirationViewActionsDelegate {} + + + +final class PermuteDeviceExpirationHostingViewController: UIHostingController> { + + init(model: PermuteDeviceExpirationViewModel, delegate: PermuteDeviceExpirationHostingViewControllerDelegate) { + let rootView = PermuteDeviceExpirationView(model: model, actions: delegate) + super.init(rootView: rootView) + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + + + + + +struct PermuteDeviceExpirationViewModel: PermuteDeviceExpirationViewModelProtocol { + + let ownedCryptoId: ObvCryptoId + let identifierOfDeviceToKeepActive: Data + let nameOfDeviceToKeepActive: String + let identifierOfDeviceWithoutExpiration: Data + let nameOfDeviceWithoutExpiration: String + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/PermuteDeviceExpiration/PermuteDeviceExpirationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/PermuteDeviceExpiration/PermuteDeviceExpirationView.swift new file mode 100644 index 00000000..bf24c4d2 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/PermuteDeviceExpiration/PermuteDeviceExpirationView.swift @@ -0,0 +1,156 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import ObvTypes +import ObvEngine + + +protocol PermuteDeviceExpirationViewModelProtocol { + + var ownedCryptoId: ObvCryptoId { get } + var identifierOfDeviceToKeepActive: Data { get } + var nameOfDeviceToKeepActive: String { get } + var identifierOfDeviceWithoutExpiration: Data { get } + var nameOfDeviceWithoutExpiration: String { get } + +} + + +// MARK: - PermuteDeviceExpirationViewActionsDelegate + +protocol PermuteDeviceExpirationViewActionsDelegate { + + func userWantsToCancelAndDismissPermuteDeviceExpirationView() async + func userWantsToSeeSubscriptionPlansFromPermuteDeviceExpirationView() async + func userConfirmedFromPermuteDeviceExpirationView(ownedCryptoId: ObvCryptoId, identifierOfDeviceToKeepActive: Data, identifierOfDeviceWithoutExpiration: Data) async + +} + + +struct PermuteDeviceExpirationView: View { + + let model: Model + let actions: PermuteDeviceExpirationViewActionsDelegate + + private func userWantsToCancel() { + Task { + await actions.userWantsToCancelAndDismissPermuteDeviceExpirationView() + } + } + + private func userWantsToSeeSubscriptionPlans() { + Task { + await actions.userWantsToSeeSubscriptionPlansFromPermuteDeviceExpirationView() + } + } + + private func userConfirmed() { + let ownedCryptoId = model.ownedCryptoId + let identifierOfDeviceToKeepActive = model.identifierOfDeviceToKeepActive + let identifierOfDeviceWithoutExpiration = model.identifierOfDeviceWithoutExpiration + Task { + await actions.userConfirmedFromPermuteDeviceExpirationView( + ownedCryptoId: ownedCryptoId, + identifierOfDeviceToKeepActive: identifierOfDeviceToKeepActive, + identifierOfDeviceWithoutExpiration: identifierOfDeviceWithoutExpiration) + } + } + + var body: some View { + ScrollView { + VStack { + + // Title + + Text("PERMUTE_DEVICE_EXPIRATION_CONFIRMATION_ALERT_TITLE") + .font(.headline) + .foregroundColor(.primary) + .multilineTextAlignment(.center) + .lineLimit(nil) + .padding(.top, 32) + + // Explanation + + ObvCardView { + HStack { + Text("KEEP_DEVICE_\(model.nameOfDeviceToKeepActive)_ACTIVE_AND_ACCEPT_TO_DEACTIVATE_DEVICE_\(model.nameOfDeviceWithoutExpiration)") + .font(.body) + .foregroundColor(.primary) + .multilineTextAlignment(.leading) + .lineLimit(nil) + Spacer() + } + } + .padding(.vertical, 32) + + // Buttons + + OlvidButton(style: .blue, title: Text("DEACTIVATE_\(model.nameOfDeviceWithoutExpiration)_AND_ACTIVATE_\(model.nameOfDeviceToKeepActive)"), systemIcon: .arrow2Squarepath, action: userConfirmed) + + OlvidButton(style: .blue, title: Text("See subscription plans"), systemIcon: .flameFill, action: userWantsToSeeSubscriptionPlans) + + OlvidButton(style: .standardWithBlueText, title: Text("Cancel"), action: userWantsToCancel) + + Spacer() + + }.padding() + } + } + +} + + +// MARK: - Previews + +struct PermuteDeviceExpirationView_Previews: PreviewProvider { + + private struct PermuteDeviceExpirationViewModelForPreviews: PermuteDeviceExpirationViewModelProtocol { + let ownedCryptoId: ObvCryptoId + let identifierOfDeviceToKeepActive: Data + let nameOfDeviceToKeepActive: String + let identifierOfDeviceWithoutExpiration: Data + let nameOfDeviceWithoutExpiration: String + } + + private struct PermuteDeviceExpirationViewActionsDelegateForPreviews: PermuteDeviceExpirationViewActionsDelegate { + func userWantsToCancelAndDismissPermuteDeviceExpirationView() async {} + func userWantsToSeeSubscriptionPlansFromPermuteDeviceExpirationView() async {} + func userConfirmedFromPermuteDeviceExpirationView(ownedCryptoId: ObvTypes.ObvCryptoId, identifierOfDeviceToKeepActive: Data, identifierOfDeviceWithoutExpiration: Data) async {} + } + + private static let identityAsURL: URL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! + + private static let ownedCryptoId = ObvURLIdentity(urlRepresentation: identityAsURL)!.cryptoId + + static var previews: some View { + Group { + PermuteDeviceExpirationView( + model: PermuteDeviceExpirationViewModelForPreviews( + ownedCryptoId: ownedCryptoId, + identifierOfDeviceToKeepActive: Data(repeating: 0, count: 16), + nameOfDeviceToKeepActive: "iPhone 14", + identifierOfDeviceWithoutExpiration: Data(repeating: 1, count: 16), + nameOfDeviceWithoutExpiration: "iPad Pro"), + actions: PermuteDeviceExpirationViewActionsDelegateForPreviews()) + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SingleOwnedIdentityFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SingleOwnedIdentityFlowViewController.swift index ad4fcca2..308801fa 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SingleOwnedIdentityFlowViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SingleOwnedIdentityFlowViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -27,21 +27,34 @@ import CoreData import ObvUICoreData -protocol SingleOwnedIdentityFlowViewControllerDelegate: AnyObject { +protocol SingleOwnedIdentityFlowViewControllerDelegate: AnyObject, StoreKitDelegate { func userWantsToDismissSingleOwnedIdentityFlowViewController(_ viewController: SingleOwnedIdentityFlowViewController) + func userWantsToAddNewDevice(_ viewController: SingleOwnedIdentityFlowViewController, ownedCryptoId: ObvCryptoId) async } -final class SingleOwnedIdentityFlowViewController: UIHostingController, SingleOwnedIdentityViewModelDelegate, HiddenProfilePasswordChooserViewControllerDelegate, OwnedIdentityDetailedInfosViewDelegate { +enum StoreKitDelegatePurchaseResult { + case purchaseSucceeded(serverVerificationResult: ObvAppStoreReceipt.VerificationStatus) + case userCancelled + case pending +} + +protocol StoreKitDelegate: AnyObject { + func userRequestedListOfSKProducts() async throws -> [Product] + func userWantsToBuy(_ product: Product) async throws -> StoreKitDelegatePurchaseResult + func userWantsToRestorePurchases() async throws +} + +final class SingleOwnedIdentityFlowViewController: UIHostingController, HiddenProfilePasswordChooserViewControllerDelegate, OwnedIdentityDetailedInfosViewDelegate, SingleOwnedIdentityViewActionsDelegate, OwnedDevicesListViewActionsDelegate, PermuteDeviceExpirationHostingViewControllerDelegate, ChooseDeviceToReactivateHostingViewControllerDelegate { + let ownedIdentity: PersistedObvOwnedIdentity let ownedCryptoId: ObvCryptoId let obvEngine: ObvEngine weak var delegate: SingleOwnedIdentityFlowViewControllerDelegate? private var editedOwnedIdentity: SingleIdentity? - private var availableSubscriptionPlans: AvailableSubscriptionPlans? private var apiKeyStatusAndExpiry: APIKeyStatusAndExpiry - private let model: SingleOwnedIdentityViewModel + private let actions: SingleOwnedIdentityViewActions private var rightBarButtonItem: UIBarButtonItem? private var legacyConfigureNavigationBarAndObserveNotificationsNeedsToBeCalled = true @@ -49,7 +62,7 @@ final class SingleOwnedIdentityFlowViewController: UIHostingController UUID? { + return try await obvEngine.getKeycloakAPIKey(ownedCryptoId: ownedCryptoId) + } + +} + + +// MARK: - OwnedDevicesListViewActionsDelegate + +extension SingleOwnedIdentityFlowViewController { + func userWantsToSearchForNewOwnedDevices(ownedCryptoId: ObvTypes.ObvCryptoId) async { + Task { + do { + try await obvEngine.performOwnedDeviceDiscovery(ownedCryptoId: ownedCryptoId) + } catch { + assertionFailure(error.localizedDescription) + } + DispatchQueue.main.async { [weak self] in + self?.navigationController?.topViewController?.showHUD(type: .checkmark) + DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2)) { [weak self] in + self?.navigationController?.topViewController?.hideHUD() + } + } + } + } - // MARK: - SingleOwnedIdentityViewModelDelegate + func userWantsToClearAllOtherOwnedDevices(ownedCryptoId: ObvTypes.ObvCryptoId) async { + // No need to require a confirmation, this confirmation was required in the SwiftUI OwnedDevicesListView. + Task { + do { + try await obvEngine.deleteAllOtherOwnedDevicesAndChannelsThenPerformOwnedDeviceDiscovery(ownedCryptoId: ownedCryptoId) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + func userWantsToRestartChannelCreationWithOtherOwnedDevice(ownedCryptoId: ObvTypes.ObvCryptoId, deviceIdentifier: Data) async { + do { + try await obvEngine.restartChannelEstablishmentProtocolsWithOwnedDevice(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceIdentifier) + } catch { + assertionFailure(error.localizedDescription) + } + } + @MainActor - func dismiss() async { - delegate?.userWantsToDismissSingleOwnedIdentityFlowViewController(self) + func userWantsToRenameOwnedDevice(ownedCryptoId: ObvTypes.ObvCryptoId, deviceIdentifier: Data) async { + guard ownedIdentity.cryptoId == ownedCryptoId else { assertionFailure(); return } + guard let ownedDevice = ownedIdentity.devices.first(where: { $0.identifier == deviceIdentifier }) else { assertionFailure(); return } + let obvEngine = self.obvEngine + let alert = UIAlertController(title: NSLocalizedString("CHOOSE_DEVICE_NAME", comment: ""), message: nil, preferredStyle: .alert) + alert.addTextField { (textField) in + textField.text = ownedDevice.name + } + alert.addAction(.init(title: CommonString.Word.Cancel, style: .cancel)) + alert.addAction(.init(title: CommonString.Word.Ok, style: .default) { [weak alert] _ in + guard let ownedDeviceName = alert?.textFields?.first?.text else { assertionFailure(); return } + Task { + try? await obvEngine.requestChangeOfOwnedDeviceName(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceIdentifier, ownedDeviceName: ownedDeviceName) + } + }) + present(alert, animated: true) + } + + + @MainActor + internal func userWantsToDeactivateOtherOwnedDevice(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async { + let obvEngine = self.obvEngine + let alert = UIAlertController(title: NSLocalizedString("REMOVE_OWNED_DEVICE_ALERT_TITLE", comment: ""), message: nil, preferredStyle: .alert) + alert.addAction(.init(title: CommonString.Word.Cancel, style: .cancel)) + alert.addAction(.init(title: CommonString.Word.Deactivate, style: .destructive) { _ in + Task { + try? await obvEngine.requestDeactivationOfOtherOwnedDevice(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceIdentifier) + } + }) + present(alert, animated: true) + } + + + @MainActor + func userWantsToKeepThisDeviceActive(ownedCryptoId: ObvCryptoId, deviceIdentifier: Data) async { + guard ownedCryptoId == ownedIdentity.cryptoId else { assertionFailure(); return } + guard ownedIdentity.isActive else { assertionFailure(); return } + + // If the device is not active, this request makes no sense. + + guard ownedIdentity.isActive else { assertionFailure(); return } + + // If the device requested has no expiry, this request makes no sense. + + guard let deviceToKeepActive = ownedIdentity.devices.first(where: { $0.identifier == deviceIdentifier }) else { assertionFailure(); return } + guard deviceToKeepActive.expirationDate != nil else { assertionFailure(); return } + + // We have two cases to consider: either the owned identity is allowed to have multiple devices, or not. + + if ownedIdentity.effectiveAPIPermissions.contains(.multidevice) { + + // Since the owned identity is allowed to have multiple devices, keeping this device active will have no impact on other devices. + // Therefore, no need to alert the user, we can process the request immediately. + Task { + try? await obvEngine.requestSettingUnexpiringDevice(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceIdentifier) + } + + } else { + + // Since the owned identity is not allowed to have multiple device, keeping this device active will necessarily transfer the expiration to the device that currently has no expiration. + + guard let deviceWithoutExpiration = ownedIdentity.devices.first(where: { $0.expirationDate == nil }) else { + // We found no other device, which is unexpected. In production, we process the user request immediately. + assertionFailure() + Task { + try? await obvEngine.requestSettingUnexpiringDevice(ownedCryptoId: ownedCryptoId, deviceIdentifier: deviceIdentifier) + } + return + } + + // If we reach this point, we alert the user, allowing her to decide whether she wants to indeed keep the device active (and add an expiration to the other device) or not. + + let model = PermuteDeviceExpirationViewModel( + ownedCryptoId: ownedCryptoId, + identifierOfDeviceToKeepActive: deviceToKeepActive.identifier, + nameOfDeviceToKeepActive: deviceToKeepActive.name, + identifierOfDeviceWithoutExpiration: deviceWithoutExpiration.identifier, + nameOfDeviceWithoutExpiration: deviceWithoutExpiration.name) + let vc = PermuteDeviceExpirationHostingViewController(model: model, delegate: self) + + if traitCollection.userInterfaceIdiom == .phone { + vc.modalPresentationStyle = .popover + if let popover = vc.popoverPresentationController { + let sheet = popover.adaptiveSheetPresentationController + sheet.detents = [.large()] + sheet.prefersGrabberVisible = true + sheet.preferredCornerRadius = 16.0 + assert(rightBarButtonItem != nil) + } + } else { + vc.modalPresentationStyle = .formSheet + } + present(vc, animated: true) + + } + } @MainActor - func userWantsToEditOwnedIdentity() async { - assert(Thread.isMainThread) - // We are about to show a ViewController allowing to edit the owned identity. - // We load a new instance of the PersistedObvOwnedIdentity in a child view context: we want to prevent the view to be refreshed while the user is editing it. - // Not doing so would reset the edited text field if a message is received in the mean time (since this refreshes the view context). + func userWantsToReactivateThisDevice(ownedCryptoId: ObvCryptoId) async { + guard ownedIdentity.cryptoId == ownedCryptoId else { assertionFailure(); return } + + // If the device is active, this request makes no sense. + + guard !ownedIdentity.isActive else { assertionFailure(); return } + + // Get the required information about the current device + + guard let currentDeviceObj = ownedIdentity.devices + .first(where: { $0.secureChannelStatus == .currentDevice }) else { assertionFailure(); return } + let currentDevice = ChooseDeviceToReactivateViewModel.Device(deviceIdentifier: currentDeviceObj.deviceIdentifier, deviceName: currentDeviceObj.name, expirationDate: nil, latestRegistrationDate: nil) + + // Present the view controller + + let vc = ChooseDeviceToReactivateHostingViewController(model: .init(ownedCryptoId: ownedCryptoId, currentDeviceName: currentDevice.deviceName, currentDeviceIdentifier: currentDevice.deviceIdentifier), obvEngine: obvEngine, delegate: self) + present(vc, animated: true) + + } + + +} + + +// MARK: - ChooseDeviceToReactivateHostingViewControllerDelegate + +extension SingleOwnedIdentityFlowViewController { + + @MainActor + func userWantsToDismissChooseDeviceToReactivateHostingViewController() async { + if let vc = presentedViewController as? ChooseDeviceToReactivateHostingViewController { + vc.dismiss(animated: true) + } + } + +} + + +// MARK: - PermuteDeviceExpirationHostingViewControllerDelegate + +extension SingleOwnedIdentityFlowViewController { + + @MainActor + func userWantsToCancelAndDismissPermuteDeviceExpirationView() async { + guard presentedViewController is PermuteDeviceExpirationHostingViewController else { assertionFailure(); return } + presentedViewController?.dismiss(animated: true) + } + + + @MainActor + func userWantsToSeeSubscriptionPlansFromPermuteDeviceExpirationView() async { + guard presentedViewController is PermuteDeviceExpirationHostingViewController else { assertionFailure(); return } + presentedViewController?.dismiss(animated: true) { [weak self] in + Task { [weak self] in await self?.userWantsToSeeSubscriptionPlans() } + } + } + + + @MainActor + func userConfirmedFromPermuteDeviceExpirationView(ownedCryptoId: ObvCryptoId, identifierOfDeviceToKeepActive: Data, identifierOfDeviceWithoutExpiration: Data) async { + guard presentedViewController is PermuteDeviceExpirationHostingViewController else { assertionFailure(); return } + presentedViewController?.dismiss(animated: true) { [weak self] in + Task { [weak self] in + try? await self?.obvEngine.requestSettingUnexpiringDevice(ownedCryptoId: ownedCryptoId, deviceIdentifier: identifierOfDeviceToKeepActive) + } + } + } + + +} + + +// MARK: - SingleOwnedIdentityViewActionsDelegate + +extension SingleOwnedIdentityFlowViewController { + + /// We are about to show a ViewController allowing to edit the owned identity. + /// We load a new instance of the PersistedObvOwnedIdentity in a child view context: we want to prevent the view to be refreshed while the user is editing it. + /// Not doing so would reset the edited text field if a message is received in the mean time (since this refreshes the view context). + @MainActor + func userWantsToEditOwnedIdentity(ownedCryptoId: ObvCryptoId) async { + guard ownedCryptoId == ownedIdentity.cryptoId else { assertionFailure(); return } let childViewContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) childViewContext.parent = ObvStack.shared.viewContext childViewContext.automaticallyMergesChangesFromParent = false @@ -492,62 +676,128 @@ final class SingleOwnedIdentityFlowViewController: UIHostingController (freePlanIsAvailable: Bool, products: [Product]) { + + // Step 1: Ask the engine (i.e., Olvid's server) whether a free trial is still available for this identity + let freePlanIsAvailable: Bool + if alsoFetchFreePlan { + freePlanIsAvailable = try await obvEngine.queryServerForFreeTrial(for: ownedCryptoId) + } else { + freePlanIsAvailable = false + } + + // Step 2: As StoreKit about available products + assert(delegate != nil) + let products = try await delegate?.userRequestedListOfSKProducts() ?? [] + + return (freePlanIsAvailable, products) + } + + func userWantsToStartFreeTrialNow(ownedCryptoId: ObvCryptoId) async throws -> APIKeyElements { + let newAPIKeyElements = try await obvEngine.startFreeTrial(for: ownedCryptoId) + return newAPIKeyElements + } + + + func userWantsToBuy(_ product: Product) async throws -> StoreKitDelegatePurchaseResult { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNil } + return try await delegate.userWantsToBuy(product) + } - @MainActor func userChosePasswordForHidingOwnedIdentity(_ ownedCryptoId: ObvCryptoId, password: String) async { - presentedViewController?.dismiss(animated: true) { - ObvMessengerInternalNotification.userWantsToHideOwnedIdentity(ownedCryptoId: ownedCryptoId, password: password) - .postOnDispatchQueue() - } + + func userWantsToRestorePurchases() async throws { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNil } + return try await delegate.userWantsToRestorePurchases() } } -// MARK: - OwnedIdentityDetailedInfosViewDelegate +// MARK: - SubscriptionPlansViewDismissActionsProtocol -extension SingleOwnedIdentityFlowViewController { +extension SingleOwnedIdentityFlowViewController: SubscriptionPlansViewDismissActionsProtocol { - @MainActor func userWantsToDismissOwnedIdentityDetailedInfosView() async { + @MainActor + func userWantsToDismissSubscriptionPlansView() async { + presentedViewController?.dismiss(animated: true) + } + + + @MainActor + func dismissSubscriptionPlansViewAfterPurchaseWasMade() async { presentedViewController?.dismiss(animated: true) } } +extension SingleOwnedIdentityFlowViewController { + + enum ObvError: Error { + case theDelegateIsNil + } + +} + + // MARK: - Strings extension SingleOwnedIdentityFlowViewController { @@ -570,7 +820,7 @@ extension SingleOwnedIdentityFlowViewController { struct AtLeastOneUnhiddenProfileMustExistAlert { static let title = NSLocalizedString("AT_LEAST_ONE_UNHIDDEN_PROFILE_MUST_EXIST_TITLE", comment: "") static let message = NSLocalizedString("AT_LEAST_ONE_UNHIDDEN_PROFILE_MUST_EXIST_MESSAGE", comment: "") - static let actionCreateNewProfile = NSLocalizedString("CREATE_NEW_OWNED_IDENTITY", comment: "") + static let actionAddProfile = NSLocalizedString("ADD_OWNED_IDENTITY", comment: "") } struct AlertForEditingNickname { static let title = NSLocalizedString("ALERT_FOR_EDITING_NICKNAME_TITLE", comment: "") @@ -581,32 +831,33 @@ extension SingleOwnedIdentityFlowViewController { } -fileprivate protocol SingleOwnedIdentityViewModelDelegate: AnyObject { - func dismiss() async - func userWantsToEditOwnedIdentity() async - func userWantsToSeeSubscriptionPlans() async - func userWantsToRefreshSubscriptionStatus() async -} -fileprivate final class SingleOwnedIdentityViewModel { +fileprivate final class SingleOwnedIdentityViewActions: SingleOwnedIdentityViewActionsDelegate { - weak var delegate: SingleOwnedIdentityViewModelDelegate? + weak var delegate: SingleOwnedIdentityViewActionsDelegate? + + func userWantsToEditOwnedIdentity(ownedCryptoId: ObvTypes.ObvCryptoId) async { + await delegate?.userWantsToEditOwnedIdentity(ownedCryptoId: ownedCryptoId) + } + + func userWantsToSeeSubscriptionPlans() async { + await delegate?.userWantsToSeeSubscriptionPlans() + } - func dismiss() { - Task { await delegate?.dismiss() } + func userWantsToRefreshSubscriptionStatus() async { + await delegate?.userWantsToRefreshSubscriptionStatus() } - func userWantsToEditOwnedIdentity() { - Task { await delegate?.userWantsToEditOwnedIdentity() } + func userWantsToNavigateToListOfContactDevicesView(ownedCryptoId: ObvCryptoId) async { + await delegate?.userWantsToNavigateToListOfContactDevicesView(ownedCryptoId: ownedCryptoId) } - - func userWantsToSeeSubscriptionPlans() { - Task { await delegate?.userWantsToSeeSubscriptionPlans() } + + func userWantsToReactivateThisDevice(ownedCryptoId: ObvCryptoId) async { + await delegate?.userWantsToReactivateThisDevice(ownedCryptoId: ownedCryptoId) } - func userWantsToRefreshSubscriptionStatus() { - Task { await delegate?.userWantsToRefreshSubscriptionStatus() } + func userWantsToAddNewDevice(ownedCryptoId: ObvCryptoId) async { + await delegate?.userWantsToAddNewDevice(ownedCryptoId: ownedCryptoId) } - } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SingleOwnedIdentityView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SingleOwnedIdentityView.swift index acaad085..8742a897 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SingleOwnedIdentityView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SingleOwnedIdentityView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import ObvEngine import CoreData import ObvUI import ObvUICoreData +import ObvDesignSystem final class APIKeyStatusAndExpiry: ObservableObject { @@ -30,13 +31,15 @@ final class APIKeyStatusAndExpiry: ObservableObject { let id = UUID() private let ownedIdentity: PersistedObvOwnedIdentity! @Published var apiKeyStatus: APIKeyStatus + @Published var apiPermissions: APIPermissions @Published var apiKeyExpirationDate: Date? private var observationTokens = [NSObjectProtocol]() // For SwiftUI previews - fileprivate init(ownedCryptoId: ObvCryptoId, apiKeyStatus: APIKeyStatus, apiKeyExpirationDate: Date?) { + fileprivate init(ownedCryptoId: ObvCryptoId, apiKeyStatus: APIKeyStatus, apiPermissions: APIPermissions, apiKeyExpirationDate: Date?) { self.ownedIdentity = nil self.apiKeyStatus = apiKeyStatus + self.apiPermissions = apiPermissions self.apiKeyExpirationDate = apiKeyExpirationDate } @@ -45,6 +48,7 @@ final class APIKeyStatusAndExpiry: ObservableObject { assert(ownedIdentity.managedObjectContext == ObvStack.shared.viewContext) self.ownedIdentity = ownedIdentity self.apiKeyStatus = ownedIdentity.apiKeyStatus + self.apiPermissions = ownedIdentity.effectiveAPIPermissions self.apiKeyExpirationDate = ownedIdentity.apiKeyExpirationDate observeViewContextDidChange() } @@ -61,6 +65,7 @@ final class APIKeyStatusAndExpiry: ObservableObject { guard context == ObvStack.shared.viewContext else { return } guard let ownedIdentity = self?.ownedIdentity else { assertionFailure(); return } self?.apiKeyStatus = ownedIdentity.apiKeyStatus + self?.apiPermissions = ownedIdentity.effectiveAPIPermissions self?.apiKeyExpirationDate = ownedIdentity.apiKeyExpirationDate }) } @@ -68,23 +73,52 @@ final class APIKeyStatusAndExpiry: ObservableObject { } +// MARK: - SingleOwnedIdentityViewActionsDelegate + +protocol SingleOwnedIdentityViewActionsDelegate: AnyObject, OwnedDevicesCardViewActionsDelegate, OwnedIdentityCardViewActionsDelegate, InactiveOwnedIdentityViewActionsDelegate { + func userWantsToEditOwnedIdentity(ownedCryptoId: ObvCryptoId) async + func userWantsToSeeSubscriptionPlans() async + func userWantsToRefreshSubscriptionStatus() async +} + + +// MARK: - SingleOwnedIdentityView struct SingleOwnedIdentityView: View { - @ObservedObject var singleIdentity: SingleIdentity + @ObservedObject var ownedIdentity: PersistedObvOwnedIdentity @ObservedObject var apiKeyStatusAndExpiry: APIKeyStatusAndExpiry - let dismissAction: () -> Void - let editOwnedIdentityAction: () -> Void - let subscriptionPlanAction: () -> Void - let refreshStatusAction: () -> Void - + let actions: SingleOwnedIdentityViewActionsDelegate? + private var apiKeyStatus: APIKeyStatus { apiKeyStatusAndExpiry.apiKeyStatus } private var apiKeyExpirationDate: Date? { apiKeyStatusAndExpiry.apiKeyExpirationDate } + private var apiPermissions: APIPermissions { apiKeyStatusAndExpiry.apiPermissions } private var showSubscriptionPlansButton: Bool { - !singleIdentity.isKeycloakManaged + !ownedIdentity.isKeycloakManaged + } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: ownedIdentity.circleAndTitlesViewModelContent, + colors: ownedIdentity.initialCircleViewModelColors, + displayMode: .header, + editionMode: .none) + } + + private func userWantsToEditOwnedIdentity() { + Task { await actions?.userWantsToEditOwnedIdentity(ownedCryptoId: ownedIdentity.cryptoId) } } + private func userWantsToSeeSubscriptionPlans() { + Task { await actions?.userWantsToSeeSubscriptionPlans() } + } + + private func userWantsToRefreshSubscriptionStatus() { + Task { await actions?.userWantsToRefreshSubscriptionStatus() } + } + + + var body: some View { ZStack { @@ -94,20 +128,33 @@ struct SingleOwnedIdentityView: View { ScrollView { VStack { - OwnedIdentityHeaderView(singleIdentity: singleIdentity) + + CircleAndTitlesView(model: circleAndTitlesViewModel) .padding(.top, 16) - OwnedIdentityCardView(singleIdentity: singleIdentity, - editOwnedIdentityAction: editOwnedIdentityAction) - .padding(.top, 40) + + OwnedIdentityCardView(ownedIdentity: ownedIdentity, actions: actions) + .padding(.top, 40) + + if !ownedIdentity.isActive { + InactiveOwnedIdentityView(ownedCryptoId: ownedIdentity.cryptoId, actions: actions) + .padding(.top, 20) + } else { + OwnedDevicesCardView(model: .init(ownedCryptoId: ownedIdentity.cryptoId, numberOfOwnedDevices: ownedIdentity.sortedDevices.count), actions: actions) + .padding(.top, 40) + } + SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: apiKeyStatus, apiKeyExpirationDate: apiKeyExpirationDate, showSubscriptionPlansButton: showSubscriptionPlansButton, - subscriptionPlanAction: subscriptionPlanAction, + userWantsToSeeSubscriptionPlans: userWantsToSeeSubscriptionPlans, showRefreshStatusButton: true, - refreshStatusAction: refreshStatusAction) + refreshStatusAction: userWantsToRefreshSubscriptionStatus, + apiPermissions: apiPermissions) .padding(.top, 40) + Spacer() + }.padding(.horizontal, 16) } @@ -117,17 +164,78 @@ struct SingleOwnedIdentityView: View { +// MARK: - InactiveOwnedIdentityView + +protocol InactiveOwnedIdentityViewActionsDelegate { + func userWantsToReactivateThisDevice(ownedCryptoId: ObvCryptoId) async +} + +fileprivate struct InactiveOwnedIdentityView: View { + + let ownedCryptoId: ObvCryptoId + let actions: InactiveOwnedIdentityViewActionsDelegate? + + @State private var reactivationRequested = false + + private func userWantsToReactivateThisDevice() { + guard !reactivationRequested else { return } + reactivationRequested = true + Task { + await actions?.userWantsToReactivateThisDevice(ownedCryptoId: ownedCryptoId) + reactivationRequested = false + } + } + + var body: some View { + ObvCardView { + VStack(alignment: .leading) { + Text("INACTIVE_PROFILE_EXPLANATION_ON_MY_PROFILE_VIEW") + .font(.body) + .foregroundColor(Color(AppTheme.shared.colorScheme.label)) + OlvidButton(style: .blue, + title: Text("REACTIVATE_PROFILE_BUTTON_TITLE"), + systemIcon: .checkmarkCircleFill, + action: userWantsToReactivateThisDevice) + .disabled(reactivationRequested) + .padding(.top, 8) + } + } + } + +} + + + +// MARK: - OwnedIdentityCardViewActionsDelegate + +protocol OwnedIdentityCardViewActionsDelegate { + func userWantsToEditOwnedIdentity(ownedCryptoId: ObvCryptoId) async +} + +// MARK: - OwnedIdentityCardView fileprivate struct OwnedIdentityCardView: View { - @ObservedObject var singleIdentity: SingleIdentity - let editOwnedIdentityAction: () -> Void + @ObservedObject var ownedIdentity: PersistedObvOwnedIdentity + let actions: OwnedIdentityCardViewActionsDelegate? + + private func editOwnedIdentityAction() { + let ownedCryptoId = ownedIdentity.cryptoId + Task { await actions?.userWantsToEditOwnedIdentity(ownedCryptoId: ownedCryptoId) } + } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: ownedIdentity.circleAndTitlesViewModelContent, + colors: ownedIdentity.initialCircleViewModelColors, + displayMode: .normal, + editionMode: .none) + } var body: some View { ObvCardView { VStack(alignment: .leading) { - IdentityCardContentView(model: singleIdentity) + CircleAndTitlesView(model: circleAndTitlesViewModel) OlvidButton(style: .blue, title: Text("EDIT_MY_ID"), systemIcon: .squareAndPencil, @@ -141,47 +249,180 @@ fileprivate struct OwnedIdentityCardView: View { -struct SingleOwnedIdentityView_Previews: PreviewProvider { +//struct SingleOwnedIdentityView_Previews: PreviewProvider { +// +// private static let singleIdentities = [ +// SingleIdentity(firstName: "Steve", +// lastName: "Jobs", +// position: "CEO", +// company: "Apple", +// isKeycloakManaged: false, +// showGreenShield: false, +// showRedShield: false, +// identityColors: nil, +// photoURL: nil), +// ] +// +// private static let identityAsURL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! +// private static let testOwnedCryptoId = ObvURLIdentity(urlRepresentation: identityAsURL)!.cryptoId +// +// private static let testApiKeyStatusAndExpiry = APIKeyStatusAndExpiry(ownedCryptoId: testOwnedCryptoId, +// apiKeyStatus: .free, +// apiKeyExpirationDate: Date()) +// +// static var previews: some View { +// Group { +// ForEach(singleIdentities) { +// SingleOwnedIdentityView(singleIdentity: $0, +// apiKeyStatusAndExpiry: testApiKeyStatusAndExpiry, +// dismissAction: {}, +// editOwnedIdentityAction: {}, +// subscriptionPlanAction: {}, +// refreshStatusAction: {}) +// .environment(\.colorScheme, .dark) +// } +// ForEach(singleIdentities) { +// SingleOwnedIdentityView(singleIdentity: $0, +// apiKeyStatusAndExpiry: testApiKeyStatusAndExpiry, +// dismissAction: {}, +// editOwnedIdentityAction: {}, +// subscriptionPlanAction: {}, +// refreshStatusAction: {}) +// .environment(\.colorScheme, .light) +// } +// } +// } +//} + + +// MARK: - OwnedDevicesCardViewActionsDelegate + +protocol OwnedDevicesCardViewActionsDelegate { - private static let singleIdentities = [ - SingleIdentity(firstName: "Steve", - lastName: "Jobs", - position: "CEO", - company: "Apple", - isKeycloakManaged: false, - showGreenShield: false, - showRedShield: false, - identityColors: nil, - photoURL: nil), - ] + func userWantsToNavigateToListOfContactDevicesView(ownedCryptoId: ObvCryptoId) async + func userWantsToAddNewDevice(ownedCryptoId: ObvCryptoId) async + +} + + +// MARK: - OwnedDevicesCardView + +struct OwnedDevicesCardView: View { + + struct Model { + let ownedCryptoId: ObvCryptoId + let numberOfOwnedDevices: Int + } - private static let identityAsURL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! - private static let testOwnedCryptoId = ObvURLIdentity(urlRepresentation: identityAsURL)!.cryptoId + let model: Model + let actions: OwnedDevicesCardViewActionsDelegate? + @State private var selected = false - private static let testApiKeyStatusAndExpiry = APIKeyStatusAndExpiry(ownedCryptoId: testOwnedCryptoId, - apiKeyStatus: .free, - apiKeyExpirationDate: Date()) + private func userWantsToNavigateToListOfContactDevicesView() { + Task { await actions?.userWantsToNavigateToListOfContactDevicesView(ownedCryptoId: model.ownedCryptoId) } + } - static var previews: some View { - Group { - ForEach(singleIdentities) { - SingleOwnedIdentityView(singleIdentity: $0, - apiKeyStatusAndExpiry: testApiKeyStatusAndExpiry, - dismissAction: {}, - editOwnedIdentityAction: {}, - subscriptionPlanAction: {}, - refreshStatusAction: {}) - .environment(\.colorScheme, .dark) - } - ForEach(singleIdentities) { - SingleOwnedIdentityView(singleIdentity: $0, - apiKeyStatusAndExpiry: testApiKeyStatusAndExpiry, - dismissAction: {}, - editOwnedIdentityAction: {}, - subscriptionPlanAction: {}, - refreshStatusAction: {}) - .environment(\.colorScheme, .light) + private func userWantsToAddNewDevice() { + Task { await actions?.userWantsToAddNewDevice(ownedCryptoId: model.ownedCryptoId) } + } + + var body: some View { + VStack(alignment: .leading) { + Text("MY_DEVICES") + .font(.headline) + .foregroundColor(Color(AppTheme.shared.colorScheme.label)) + ObvCardView { + VStack { + + HStack(alignment: .firstTextBaseline) { + + Label { + Text(String.localizedStringWithFormat(NSLocalizedString("YOU_HAVE_N_DEVICES", comment: ""), model.numberOfOwnedDevices)) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + .font(.system(.headline, design: .rounded)) + .foregroundColor(Color(AppTheme.shared.colorScheme.label)) + } icon: { + Image(systemIcon: .laptopcomputerAndIphone) + .foregroundColor(Color(.systemBlue)) + .font(.system(size: 22)) + .frame(width: 40) + + } + + Spacer() + + ObvChevron(selected: selected) + + } + .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped + .onTapGesture { + withAnimation { + selected = true + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { + userWantsToNavigateToListOfContactDevicesView() + } + } + } + .onAppear { + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { + withAnimation { + selected = false + } + } + } + + Divider() + .padding(.leading, 48) + .padding(.bottom, 4) + + HStack(alignment: .firstTextBaseline) { + Label { + Text("ADD_A_NEW_DEVICE") + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + .font(.system(.headline, design: .rounded)) + .foregroundColor(Color(AppTheme.shared.colorScheme.label)) + } icon: { + Image(systemIcon: .plusCircle) + .foregroundColor(Color(.systemBlue)) + .font(.system(size: 22)) + .frame(width: 40) + } + + Spacer() + } + .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped + .onTapGesture { + userWantsToAddNewDevice() + } + + } + } + } } + +} + + + + + + +// MARK: - Previews + +struct OwnedDevicesCardView_Previews: PreviewProvider { + + private static let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + static private let model = OwnedDevicesCardView.Model( + ownedCryptoId: ownedCryptoId, + numberOfOwnedDevices: 1) + + static var previews: some View { + OwnedDevicesCardView(model: model, actions: nil) + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SubscriptionPlansView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SubscriptionPlansView.swift new file mode 100644 index 00000000..5bf5df20 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/SubscriptionPlansView.swift @@ -0,0 +1,734 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import StoreKit +import ObvTypes +import UI_SystemIcon +import ObvUI + + +final class SubscriptionPlansViewModel: SubscriptionPlansViewModelProtocol { + + let ownedCryptoId: ObvCryptoId + let showFreePlanIfAvailable: Bool + @Published private(set) var freePlanIsAvailable: Bool? = nil + @Published private(set) var products: [Product]? = nil + + init(ownedCryptoId: ObvCryptoId, showFreePlanIfAvailable: Bool) { + self.ownedCryptoId = ownedCryptoId + self.showFreePlanIfAvailable = showFreePlanIfAvailable + } + + @MainActor + func setSubscriptionPlans(freePlanIsAvailable: Bool, products: [Product]) async { + withAnimation(.bouncy) { + self.freePlanIsAvailable = freePlanIsAvailable + self.products = products + } + } + +} + + +protocol SubscriptionPlansViewModelProtocol: ObservableObject { + + var ownedCryptoId: ObvCryptoId { get } + var freePlanIsAvailable: Bool? { get } // Nil until we know whether a free plan is available or not + var products: [Product]? { get } // Nil until store plans are known + var showFreePlanIfAvailable: Bool { get } + + func setSubscriptionPlans(freePlanIsAvailable: Bool, products: [Product]) async + +} + + +protocol SubscriptionPlansViewActionsProtocol: AnyObject { + func fetchSubscriptionPlans(for ownedCryptoId: ObvCryptoId, alsoFetchFreePlan: Bool) async throws -> (freePlanIsAvailable: Bool, products: [Product]) + func userWantsToStartFreeTrialNow(ownedCryptoId: ObvCryptoId) async throws -> APIKeyElements + func userWantsToBuy(_ product: Product) async throws -> StoreKitDelegatePurchaseResult + func userWantsToRestorePurchases() async throws +} + + +protocol SubscriptionPlansViewDismissActionsProtocol { + func userWantsToDismissSubscriptionPlansView() async + func dismissSubscriptionPlansViewAfterPurchaseWasMade() async +} + +struct SubscriptionPlansView: View, NewSKProductCardViewActionsProtocol, BottomButtonsViewActionsProtocol { + + @ObservedObject var model: Model + let actions: SubscriptionPlansViewActionsProtocol + let dismissActions: SubscriptionPlansViewDismissActionsProtocol + + // Avoid calling the method twice + @State private var isFetchSubscriptionPlansCalled = false + @State private var shownHUDCategory: HUDView.Category? = nil + @State private var isInterfaceDisabled = false + @State private var fetchErrorShown: Error? + @State private var buyErrorShown: BuyError? + + private var currentlyFetchingSubscriptionPlans: Bool { + return model.freePlanIsAvailable != nil && model.products != nil + } + + private var canShowPlans: Bool { + model.freePlanIsAvailable != nil && model.products != nil + } + + + /// When the view appears, we immediately request our delegate to fetch subscriptions plans. + /// When receiving the plans from our delegate, we set them in the model, and this will update the UI. + private func viewDidAppear() { + Task { + do { + let result = try await actions.fetchSubscriptionPlans(for: model.ownedCryptoId, alsoFetchFreePlan: model.showFreePlanIfAvailable) + await model.setSubscriptionPlans(freePlanIsAvailable: result.freePlanIsAvailable, products: result.products) + } catch { + withAnimation { + fetchErrorShown = error + } + } + } + } + + + private var featuresForFreeTrial: [NewFeatureView.Model] {[ + .init(feature: .startSecureCalls, showAsAvailable: true), + ]} + + private var featuresForSKProduct: [NewFeatureView.Model] {[ + .init(feature: .startSecureCalls, showAsAvailable: true), + .init(feature: .multidevice, showAsAvailable: true) + ]} + + + func dismissAction() { + Task { + await dismissActions.userWantsToDismissSubscriptionPlansView() + } + } + + + // NewSKProductCardViewActionsProtocol + + func userWantsToStartFreeTrial() { + isInterfaceDisabled = true + withAnimation { + shownHUDCategory = .progress + } + Task { + do { + // The following call returns APIKeyElements updated after a successful start of a free trial. + // We discard them since we don't display this information here. + _ = try await actions.userWantsToStartFreeTrialNow(ownedCryptoId: model.ownedCryptoId) + await enableInterfaceAndShowHUD(category: .checkmark, duringTimeInterval: 1) + await dismissActions.dismissSubscriptionPlansViewAfterPurchaseWasMade() + } catch { + assertionFailure() + await enableInterfaceAndShowHUD(category: .xmark, duringTimeInterval: 1) + buyErrorShown = BuyError.failedToStartFreeTrial + } + } + } + + + @MainActor + private func setShownHUDCategory(category: HUDView.Category?) async { + guard shownHUDCategory != category else { return } + withAnimation { + shownHUDCategory = category + } + } + + + @MainActor + private func enableInterface() async { + guard isInterfaceDisabled else { return } + withAnimation { + isInterfaceDisabled = false + } + } + + + @MainActor + private func enableInterfaceAndShowHUD(category: HUDView.Category, duringTimeInterval: TimeInterval) async { + await enableInterface() + await setShownHUDCategory(category: category) + try? await Task.sleep(seconds: duringTimeInterval) + await setShownHUDCategory(category: nil) + } + + + func userWantsToBuy(_ product: Product) { + isInterfaceDisabled = true + shownHUDCategory = .progress + buyErrorShown = nil + Task { + do { + let result = try await actions.userWantsToBuy(product) + switch result { + case .purchaseSucceeded(let serverVerificationResult): + switch serverVerificationResult { + case .succeededAndSubscriptionIsValid: + await enableInterfaceAndShowHUD(category: .checkmark, duringTimeInterval: 1) + await dismissActions.dismissSubscriptionPlansViewAfterPurchaseWasMade() + case .succeededButSubscriptionIsExpired: + buyErrorShown = BuyError.buySucceededButSubscriptionIsExpired + await enableInterfaceAndShowHUD(category: .xmark, duringTimeInterval: 1) + case .failed: + buyErrorShown = BuyError.buyFailed + await enableInterfaceAndShowHUD(category: .xmark, duringTimeInterval: 1) + } + case .userCancelled, .pending: + await enableInterface() + await setShownHUDCategory(category: nil) + } + } catch { + if let error = error as? StoreKit.Product.PurchaseError { + switch error { + case .invalidQuantity: + buyErrorShown = .otherError(error: error) + case .productUnavailable: + buyErrorShown = .productUnavailable + case .purchaseNotAllowed: + buyErrorShown = .purchaseNotAllowed + case .ineligibleForOffer: + buyErrorShown = .otherError(error: error) + case .invalidOfferIdentifier: + buyErrorShown = .otherError(error: error) + case .invalidOfferPrice: + buyErrorShown = .otherError(error: error) + case .invalidOfferSignature: + buyErrorShown = .otherError(error: error) + case .missingOfferParameters: + buyErrorShown = .otherError(error: error) + @unknown default: + buyErrorShown = .otherError(error: error) + } + } else { + buyErrorShown = .otherError(error: error) + } + await enableInterfaceAndShowHUD(category: .xmark, duringTimeInterval: 1) + } + } + } + + + private func dismissBuyErrorView() { + withAnimation { + buyErrorShown = nil + } + } + + // BottomButtonsViewActionsProtocol + + func userWantsToRestorePurchaseNow() { + isInterfaceDisabled = true + shownHUDCategory = .progress + Task { + do { + try await actions.userWantsToRestorePurchases() + await enableInterfaceAndShowHUD(category: .checkmark, duringTimeInterval: 1) + } catch { + await enableInterfaceAndShowHUD(category: .xmark, duringTimeInterval: 1) + buyErrorShown = BuyError.couldNotRestorePurchases(error: error) + } + } + } + + + // View + + var body: some View { + NavigationView { + + ZStack { + + ScrollView { + VStack { + + // Make sure the VStack is nevery empty (otherwise, animations don't work) + EmptyView() + + if let fetchErrorShown { + + ErrorView(title: "WE_COULD_NOT_LOOK_FOR_AVAILABLE_SUBSCRIPTION_PLANS", error: fetchErrorShown, dismissAction: nil) + .padding(.bottom) + + BottomButtonsView(actions: self) + + } else if let freePlanIsAvailable = model.freePlanIsAvailable, let products = model.products { + + if let buyErrorShown { + + ErrorView(title: "THE_SUBSCRIPTION_REQUEST_FAILED", error: buyErrorShown, dismissAction: dismissBuyErrorView) + .padding(.bottom) + + } else { + + if freePlanIsAvailable && model.showFreePlanIfAvailable { + NewSKProductCardView(model: .init(title: NSLocalizedString("TRY_SECURE_CALLS", comment: ""), + price: NSLocalizedString("Free", comment: ""), + description: NSLocalizedString("TRY_SECURE_CALLS_DESCRIPTION", comment: ""), + buttonTitle: NSLocalizedString("Start free trial now", comment: ""), + buttonSystemIcon: .handThumbsupFill, + features: featuresForFreeTrial), + actions: self) + .transition(AnyTransition.move(edge: .trailing)) + .padding(.bottom, 32) + } + + ForEach(products, id: \.self) { product in + NewSKProductCardView(model: .init(product: product, + features: featuresForSKProduct, + buttonTitle: NSLocalizedString("Subscribe now", comment: ""), + buttonSystemIcon: .cartFill), + actions: self) + .transition(AnyTransition.move(edge: .leading)) + .padding(.bottom, 32) + } + + } + + BottomButtonsView(actions: self) + + } else { + + HStack { + Spacer() + ProgressView("Looking for available subscription plans") + Spacer() + }.padding(.top, 64) + + } + + } + .padding() + } + .disabled(isInterfaceDisabled) + .navigationBarTitle(Text("Available subscription plans"), displayMode: .inline) + .toolbar { + ToolbarItemGroup { + Button.init(action: dismissAction, label: { + Image(systemIcon: .xmarkCircleFill) + }) + } + } + .onAppear(perform: viewDidAppear) + + if let shownHUDCategory { + HUDView(category: shownHUDCategory) + .zIndex(1) + } + + } + } + } + +} + + +// MARK: ErrorView + +private struct ErrorView: View { + + let title: LocalizedStringKey + let error: Error + let dismissAction: (() -> Void)? + + var body: some View { + ObvCardView { + VStack { + HStack { + Label { + VStack(alignment: .leading) { + Text(title) + .foregroundStyle(.primary) + Text(verbatim: (error as? BuyError)?.localizedDescription ?? error.localizedDescription) + .foregroundStyle(.secondary) + } + } icon: { + Image(systemIcon: .xmarkCircleFill) + .foregroundStyle(Color(UIColor.systemRed)) + .font(.system(size: 36)) + } + Spacer() + } + if let dismissAction { + OlvidButton(style: .blue, title: Text("Dismiss"), action: dismissAction) + } + } + } + } + +} + + + + +// MARK: BottomButtonsView + +protocol BottomButtonsViewActionsProtocol { + func userWantsToRestorePurchaseNow() +} + +private struct BottomButtonsView: View { + + let actions: BottomButtonsViewActionsProtocol + + var body: some View { + VStack(spacing: 16) { + + OlvidButton(style: .standardWithBlueText, + title: Text("Manage your subscription"), + systemIcon: .link, + action: { + let url = ObvMessengerConstants.urlForManagingSubscriptionWithTheAppStore + UIApplication.shared.open(url, options: [:], completionHandler: nil) + }) + + OlvidButton(style: .standardWithBlueText, + title: Text("Manage payments"), + systemIcon: .creditcardFill, + action: { + let url = ObvMessengerConstants.urlForManagingPaymentsOnTheAppStore + UIApplication.shared.open(url, options: [:], completionHandler: nil) + }) + + OlvidButton(style: .standardWithBlueText, + title: Text("Restore Purchases"), + systemIcon: .arrowUturnForwardCircleFill, + action: actions.userWantsToRestorePurchaseNow) + + } + } + +} + + + +// MARK: NewSKProductCardView + +protocol NewSKProductCardViewActionsProtocol { + func userWantsToStartFreeTrial() + func userWantsToBuy(_: Product) +} + + +private struct NewSKProductCardView: View { + + struct Model { + let title: String + let price: String + let description: String + let buttonTitle: String + let buttonSystemIcon: SystemIcon? + let features: [NewFeatureView.Model] + let product: Product? // App Store product + + init(title: String, price: String, description: String, buttonTitle: String, buttonSystemIcon: SystemIcon?, features: [NewFeatureView.Model]) { + self.title = title + self.price = price + self.description = description + self.buttonTitle = buttonTitle + self.buttonSystemIcon = buttonSystemIcon + self.features = features + self.product = nil + } + + init(product: Product, features: [NewFeatureView.Model], buttonTitle: String, buttonSystemIcon: SystemIcon?) { + let subscription = AvailableSubscription(productIdentifier: product.id) + assert(subscription != nil) + self.title = subscription?.localizedTitle ?? product.displayName + if let subscription = product.subscription { + self.price = "\(product.displayPrice)/\(subscription.subscriptionPeriod.unit)" + } else { + assertionFailure() + self.price = "\(product.displayPrice)" + } + self.description = subscription?.localizedDescription ?? product.description + self.buttonTitle = buttonTitle + self.buttonSystemIcon = buttonSystemIcon + self.features = features + self.product = product + } + + + } + + let model: Model + let actions: NewSKProductCardViewActionsProtocol + + + private func buttonTapped() { + if let product = model.product { + actions.userWantsToBuy(product) + } else { + actions.userWantsToStartFreeTrial() + } + } + + + var body: some View { + ObvCardView { + VStack(spacing: 16.0) { + HStack(alignment: .firstTextBaseline, spacing: 0) { + Text(model.title) + .fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/) + .font(.system(.headline, design: .rounded)) + Spacer() + Text(verbatim: model.price) + .fontWeight(.bold) + .font(.system(.title, design: .rounded)) + } + HStack { + Text(model.description) + .font(.body) + .lineLimit(nil) + .multilineTextAlignment(.leading) + .foregroundColor(Color(UIColor.secondaryLabel)) + Spacer() + } + .fixedSize(horizontal: false, vertical: true) + NewFeatureListView(model: .init(title: "Premium features", features: model.features)) + OlvidButton(style: .blue, + title: Text(verbatim: model.buttonTitle), + systemIcon: model.buttonSystemIcon, + action: buttonTapped) + } + } + } + +} + + +// MARK: - NewFeatureListView + +private struct NewFeatureListView: View { + + struct Model { + let title: String + let features: [NewFeatureView.Model] + } + + let model: Model + + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + HStack { + Text(model.title) + .font(.headline) + } + .padding(.bottom, 16) + ForEach(model.features) { feature in + NewFeatureView(model: feature) + .padding(.bottom, 16) + } + } + } + +} + + +// MARK: - FeatureView + +private struct NewFeatureView: View { + + let model: Model + + + struct Model: Identifiable { + let feature: NewFeatureView.Feature + let showAsAvailable: Bool + var id: Int { self.feature.rawValue } + } + + + enum Feature: Int, Identifiable { + case startSecureCalls = 0 + case multidevice + case sendAndReceiveMessagesAndAttachments + case createGroupChats + case receiveSecureCalls + var id: Int { self.rawValue } + } + + + private var systemIcon: SystemIcon { + switch model.feature { + case .startSecureCalls: return .phoneArrowUpRightFill + case .multidevice: return .macbookAndIphone + case .sendAndReceiveMessagesAndAttachments: return .bubbleLeftAndBubbleRightFill + case .createGroupChats: return .person3Fill + case .receiveSecureCalls: return .phoneArrowDownLeftFill + } + } + + + private var systemIconColor: Color { + switch model.feature { + case .startSecureCalls: return Color(.displayP3, red: 253.0/255, green: 56.0/255, blue: 95.0/255, opacity: 1.0) + case .multidevice: return Color(UIColor.systemBlue) + case .sendAndReceiveMessagesAndAttachments: return Color(.displayP3, red: 1.0, green: 0.35, blue: 0.39, opacity: 1.0) + case .createGroupChats: return Color(.displayP3, red: 7.0/255, green: 132.0/255, blue: 254.0/255, opacity: 1.0) + case .receiveSecureCalls: return Color(.displayP3, red: 253.0/255, green: 56.0/255, blue: 95.0/255, opacity: 1.0) + } + } + + + private var description: LocalizedStringKey { + switch model.feature { + case .startSecureCalls: return "MAKE_SECURE_CALLS" + case .multidevice: return "MULTIDEVICE" + case .sendAndReceiveMessagesAndAttachments: return "Sending & receiving messages and attachments" + case .createGroupChats: return "Create groups" + case .receiveSecureCalls: return "RECEIVE_SECURE_CALLS" + } + } + + + private var systemIconForAvailability: SystemIcon { + model.showAsAvailable ? .checkmarkSealFill : .xmarkSealFill + } + + + private var systemIconForAvailabilityColor: Color { + model.showAsAvailable ? Color(UIColor.systemGreen) : Color(UIColor.secondaryLabel) + } + + + var body: some View { + HStack(alignment: .firstTextBaseline) { + Image(systemIcon: systemIcon) + .font(.system(size: 16)) + .foregroundColor(systemIconColor) + .frame(minWidth: 30) + Text(description) + .foregroundColor(Color(UIColor.label)) + .font(.body) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + Spacer() + Image(systemIcon: systemIconForAvailability) + .font(.system(size: 16)) + .foregroundColor(systemIconForAvailabilityColor) + } + } + +} + + +// MARK: - Errors occuring during a subscription, free trial activation, or restore + +fileprivate enum BuyError: Error, LocalizedError { + case buySucceededButSubscriptionIsExpired + case buyFailed + case failedToStartFreeTrial + case couldNotRestorePurchases(error: Error) + case purchaseNotAllowed + case productUnavailable + case otherError(error: Error) + var localizedDescription: String { + switch self { + case .buySucceededButSubscriptionIsExpired: + return NSLocalizedString("BUY_SUCCEEDED_BUT_SUBSCRIPTION_EXPIRED", comment: "") + case .buyFailed: + return NSLocalizedString("BUY_FAILED", comment: "") + case .failedToStartFreeTrial: + return NSLocalizedString("FAILED_TO_START_FREE_TRIAL", comment: "") + case .couldNotRestorePurchases(error: let error): + return String(format: NSLocalizedString("FAILED_TO_RESTORE_PURCHASES_%@", comment: ""), error.localizedDescription) + case .purchaseNotAllowed: + return NSLocalizedString("USER_CANNOT_MAKE_PAYMENT_DESCRIPTION", comment: "") + case .otherError(error: let error): + return String(format: NSLocalizedString("Sorry, the purchase failed 😢. Please try again later or contact us if this problem is recurring. %@", comment: ""), error.localizedDescription) + case .productUnavailable: + return NSLocalizedString("Sorry, the product is not available in your store 😢.", comment: "") + } + } +} + + + +// MARK: - Previews + + +struct SubscriptionPlansView_Previews: PreviewProvider { + + private final class ModelForPreviews: SubscriptionPlansViewModelProtocol { + + let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + let showFreePlanIfAvailable = false + + @Published var freePlanIsAvailable: Bool? = nil // Nil until we know whether a free plan is available or not + @Published var products: [Product]? = nil // Nil until store plans are known + + @MainActor + func setSubscriptionPlans(freePlanIsAvailable: Bool, products: [Product]) async { + DispatchQueue.main.async { + withAnimation(.spring) { + self.freePlanIsAvailable = freePlanIsAvailable + self.products = products + } + } + } + + } + + private final class ActionsForPreviews: SubscriptionPlansViewActionsProtocol, SubscriptionPlansViewDismissActionsProtocol { + + func fetchSubscriptionPlans(for ownedCryptoId: ObvCryptoId, alsoFetchFreePlan: Bool) async throws -> (freePlanIsAvailable: Bool, products: [Product]) { + try! await Task.sleep(seconds: 1) + return (alsoFetchFreePlan, []) + } + + func userWantsToStartFreeTrialNow(ownedCryptoId: ObvTypes.ObvCryptoId) async throws -> APIKeyElements { + try! await Task.sleep(seconds: 2) + return .init(status: .freeTrial, permissions: [.canCall], expirationDate: Date().addingTimeInterval(.init(days: 30))) + } + + func userWantsToBuy(_: Product) async -> StoreKitDelegatePurchaseResult { + try! await Task.sleep(seconds: 2) + return .userCancelled + } + + func userWantsToRestorePurchases() async { + try! await Task.sleep(seconds: 2) + } + + func userWantsToDismissSubscriptionPlansView() async {} + + func dismissSubscriptionPlansViewAfterPurchaseWasMade() async {} + + } + + private static let model = ModelForPreviews() + private static let actions = ActionsForPreviews() + + + static var previews: some View { + SubscriptionPlansView(model: model, actions: actions, dismissActions: actions) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/UserTriesToAccessPaidFeatureView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/UserTriesToAccessPaidFeatureView.swift index 4aac2ca1..a6524cac 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/UserTriesToAccessPaidFeatureView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Contacts/SingleOwnedIdentity/UserTriesToAccessPaidFeatureView.swift @@ -21,6 +21,7 @@ import SwiftUI import ObvTypes import ObvEngine import ObvUI +import ObvDesignSystem final class UserTriesToAccessPaidFeatureHostingController: UIHostingController { @@ -79,8 +80,6 @@ struct UserTriesToAccessPaidFeatureView: View { maxHeight: .none, alignment: .center) .font(.body) - .padding(.horizontal, 16) - .padding(.vertical, 16) } .padding(.bottom) OlvidButton(style: .blue, title: Text("BUTTON_LABEL_CHECK_SUBSCRIPTION"), systemIcon: .eyesInverse) { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/DebugLogStringViewerViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/DebugLogStringViewerViewController.swift index 78deca22..52bef1c5 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/DebugLogStringViewerViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/DebugLogStringViewerViewController.swift @@ -52,11 +52,9 @@ struct DebugLogStringViewerView: View { }.padding() } .onTapGesture(count: 1) { - if #available(iOS 14, *) { - UIPasteboard.general.setValue(logString, forPasteboardType: UTType.plainText.identifier) - let impactHeavy = UIImpactFeedbackGenerator(style: .medium) - impactHeavy.impactOccurred() - } + UIPasteboard.general.setValue(logString, forPasteboardType: UTType.plainText.identifier) + let impactHeavy = UIImpactFeedbackGenerator(style: .medium) + impactHeavy.impactOccurred() } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/DelegatesAndProtocols/OlvidMenuProvider.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/DelegatesAndProtocols/OlvidMenuProvider.swift index d2624b30..b87f7940 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/DelegatesAndProtocols/OlvidMenuProvider.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/DelegatesAndProtocols/OlvidMenuProvider.swift @@ -22,19 +22,14 @@ import SwiftUI protocol OlvidMenuProvider: UIViewController { - - + func provideMenu() -> UIMenu - - @available(iOS, introduced: 13, deprecated: 14, message: "Use provideMenu() instead") - func provideAlertActions() -> [UIAlertAction] } extension UIViewController { - func getFirstMenuAvailable() -> UIMenu? { assert(Thread.isMainThread) var currentViewController: UIViewController? = self @@ -46,19 +41,5 @@ extension UIViewController { } return nil } - - @available(iOS, introduced: 13, deprecated: 14, message: "Use getFirstParentMenuAvailable() instead") - func getFirstAlertActionsAvailable() -> [UIAlertAction] { - assert(Thread.isMainThread) - var currentViewController: UIViewController? = self - while let candidate = currentViewController { - if let parentMenuProvider = candidate as? OlvidMenuProvider { - return parentMenuProvider.provideAlertActions() - } - currentViewController = currentViewController?.parent - } - return [] - } - } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/DelegatesAndProtocols/ViewControllerWithEllipsisCircleRightBarButtonItem.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/DelegatesAndProtocols/ViewControllerWithEllipsisCircleRightBarButtonItem.swift index cade3560..f1c99fb8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/DelegatesAndProtocols/ViewControllerWithEllipsisCircleRightBarButtonItem.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/DelegatesAndProtocols/ViewControllerWithEllipsisCircleRightBarButtonItem.swift @@ -38,32 +38,5 @@ extension ViewControllerWithEllipsisCircleRightBarButtonItem { menu: menu) return ellipsisButton } - - @available(iOS, introduced: 13.0, deprecated: 14.0, message: "Used because iOS 13 does not support UIMenu on UIBarButtonItem") - func getConfiguredEllipsisCircleRightBarButtonItem(selector: Selector) -> UIBarButtonItem { - let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 20.0, weight: .bold) - let ellipsisImage = UIImage(systemIcon: .ellipsisCircle, withConfiguration: symbolConfiguration) - let ellipsisButton = UIBarButtonItem.init(image: ellipsisImage, style: UIBarButtonItem.Style.plain, target: self, action: selector) - return ellipsisButton - } - - - @available(iOS, introduced: 13.0, deprecated: 14.0, message: "Used because iOS 13 does not support UIMenu on UIBarButtonItem") - func ellipsisButtonTapped(sourceBarButtonItem: UIBarButtonItem?) { - let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) - alert.popoverPresentationController?.barButtonItem = sourceBarButtonItem - let alertActions = getFirstAlertActionsAvailable() - assert(!alertActions.isEmpty) - alertActions.forEach { alert.addAction($0) } - alert.addAction(UIAlertAction(title: CommonString.Word.Cancel, style: .cancel)) - if let presentedViewController = presentedViewController { - presentedViewController.dismiss(animated: true) { [weak self] in - self?.present(alert, animated: true) - } - } else { - present(alert, animated: true) - } - } - } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/DiscussionsFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/DiscussionsFlowViewController.swift index 62a5441b..4292883b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/DiscussionsFlowViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/DiscussionsFlowViewController.swift @@ -135,7 +135,12 @@ extension DiscussionsFlowViewController: RecentDiscussionsViewControllerDelegate // Local delete action alert.addAction(UIAlertAction(title: Strings.AlertConfirmAllDiscussionMessagesDeletion.actionDeleteAll, style: .destructive, handler: { (action) in - ObvMessengerInternalNotification.userRequestedDeletionOfPersistedDiscussion(persistedDiscussionObjectID: persistedDiscussion.objectID, deletionType: .local, completionHandler: completionHandler) + guard let ownedCryptoId = persistedDiscussion.ownedIdentity?.cryptoId else { return } + ObvMessengerInternalNotification.userRequestedDeletionOfPersistedDiscussion( + ownedCryptoId: ownedCryptoId, + discussionObjectID: persistedDiscussion.typedObjectID, + deletionType: .local, + completionHandler: completionHandler) .postOnDispatchQueue() })) @@ -156,7 +161,12 @@ extension DiscussionsFlowViewController: RecentDiscussionsViewControllerDelegate message: Strings.AlertConfirmAllDiscussionMessagesDeletionGlobally.message, preferredStyleForTraitCollection: self.traitCollection) alert.addAction(UIAlertAction(title: Strings.AlertConfirmAllDiscussionMessagesDeletion.actionDeleteAllGlobally, style: .destructive, handler: { (action) in - ObvMessengerInternalNotification.userRequestedDeletionOfPersistedDiscussion(persistedDiscussionObjectID: discussion.objectID, deletionType: .global, completionHandler: completionHandler) + guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId else { return } + ObvMessengerInternalNotification.userRequestedDeletionOfPersistedDiscussion( + ownedCryptoId: ownedCryptoId, + discussionObjectID: discussion.typedObjectID, + deletionType: .global, + completionHandler: completionHandler) .postOnDispatchQueue() })) alert.addAction(UIAlertAction.init(title: CommonString.Word.Cancel, style: .cancel) { (action) in diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/BodyEditViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/BodyEditViewController.swift similarity index 99% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/BodyEditViewController.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/BodyEditViewController.swift index 6d024583..478b143a 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/BodyEditViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/BodyEditViewController.swift @@ -19,6 +19,7 @@ import ObvUI import SwiftUI +import ObvDesignSystem final class BodyEditViewController: UIHostingController, BodyEditViewStoreDelegate { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/NewComposeMessageView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/NewComposeMessageView.swift index 480e1784..2e111de4 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/NewComposeMessageView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/NewComposeMessageView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -30,8 +30,11 @@ import ObvUI import Platform_Base import ObvUICoreData import Components_TextInputShortcutsResultView -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials import Discussions_Mentions_ComposeMessageBuilder +import ObvSettings +import ObvDesignSystem + /// Namespace for everything `NewComposeMessageView` related enum NewComposeMessageViewTypes { @@ -242,6 +245,7 @@ final class NewComposeMessageView: UIView, UITextViewDelegate, ViewShowingHardLi return df }() + private func button(for action: NewComposeMessageViewAction) -> UIButton? { switch action { case .oneTimeEphemeralMessage: @@ -284,12 +288,13 @@ final class NewComposeMessageView: UIView, UITextViewDelegate, ViewShowingHardLi guard !draft.isDeleted else { return false } switch action { case .oneTimeEphemeralMessage, - .scanDocument, .shootPhotoOrMovie, .chooseImageFromLibrary, .choseFile, .composeMessageSettings: return true + case .scanDocument: + return !ObvMessengerConstants.targetEnvironmentIsMacCatalyst case .introduceThisContact: switch try? draft.discussion.kind { case .oneToOne(withContactIdentity: let contactIdentity): @@ -369,6 +374,15 @@ final class NewComposeMessageView: UIView, UITextViewDelegate, ViewShowingHardLi CompositionViewFreezeManager.shared.unregister(self) } + override var isHidden: Bool { + get { + super.isHidden + } + set { + shortcutsView.isHidden = newValue + super.isHidden = newValue + } + } override func layoutSubviews() { super.layoutSubviews() @@ -1126,7 +1140,7 @@ extension NewComposeMessageView { assert(Thread.isMainThread) let imagePicker = UIImagePickerController() imagePicker.sourceType = .camera - imagePicker.mediaTypes = [kUTTypeImage, kUTTypeMovie] as [String] + imagePicker.mediaTypes = [UTType.image, UTType.movie].map(\.identifier) imagePicker.delegate = self imagePicker.allowsEditing = false animatedEndEditing { [weak self] _ in @@ -1177,8 +1191,7 @@ extension NewComposeMessageView { animatedEndEditing { [weak self] _ in guard let _self = self else { return } ObvAudioRecorder.shared.delegate = _self - let uti = AVFileType.m4a.rawValue - guard let fileExtention = ObvUTIUtils.preferredTagWithClass(inUTI: uti, inTagClass: .FilenameExtension) else { return } + guard let fileExtention = UTType.m4a.preferredFilenameExtension else { assertionFailure(); return } let name = "Recording @ \(_self.dateFormatter.string(from: Date()))" let tempFileName = [name, fileExtention].joined(separator: ".") let url = ObvUICoreDataConstants.ContainerURL.forTempFiles.appendingPathComponent(tempFileName) @@ -1926,7 +1939,9 @@ extension NewComposeMessageView: AutoGrowingTextViewDelegate { func userPastedItemProviders(in autoGrowingTextView: AutoGrowingTextView, itemProviders: [NSItemProvider]) { guard autoGrowingTextView == self.textViewForTyping else { assertionFailure(); return } - addAttachments(from: itemProviders) + Task { + await addAttachments(from: itemProviders) + } } func autoGrowingTextView(_ textView: AutoGrowingTextView, perform action: AutoGrowingTextViewTypes.DelegateTypes.Action) { @@ -2110,7 +2125,7 @@ extension NewComposeMessageView { /// Appends an array of `NSItemProvider`s to the current draft, either as text pasted in the text view, or as attachments. /// - Parameters: /// - itemProviders: An array of item providers to append - func addAttachments(from itemProviders: [NSItemProvider]) { + func addAttachments(from itemProviders: [NSItemProvider], attachAllItems: Bool = false) async { let draftPermanentID = draft.objectPermanentID @@ -2118,14 +2133,18 @@ extension NewComposeMessageView { // - One for the items we want to paste as text in the text view // - One for the items we want to add as attachments - let itemProvidersToPaste = itemProviders.filter({ $0.registeredTypeIdentifiers.contains(where: { $0.utiConformsTo(kUTTypeText) } ) }) - let itemProvidersToAttach = itemProviders.filter({ !itemProvidersToPaste.contains($0) }) + let itemProvidersToPaste = attachAllItems ? [] : itemProviders.filter { + $0.obvRegisteredContentTypes.contains(where: { $0.conforms(to: .text) } ) + } + let itemProvidersToAttach = itemProviders.filter { + !itemProvidersToPaste.contains($0) + } // Process the item providers that we want to paste as text (i.e. Strings and URLs) itemProvidersToPaste.forEach { itemProviderToPaste in let textViewForTyping = self.textViewForTyping - itemProviderToPaste.loadItem(forTypeIdentifier: String(kUTTypeText)) { item, error in + itemProviderToPaste.loadItem(forTypeIdentifier: UTType.text.identifier) { item, error in if let error { assertionFailure(error.localizedDescription) return @@ -2139,9 +2158,12 @@ extension NewComposeMessageView { } } } else { - DispatchQueue.main.async { - textViewForTyping.paste(itemProviders: [itemProviderToPaste]) - } + // 2023-08-03 As we made the NewComposeMessageView.addAttachments(from:) async, we commented this code + // that should never be executed anyway + assertionFailure() +// DispatchQueue.main.async { +// textViewForTyping.paste(itemProviders: [itemProviderToPaste]) +// } } } } @@ -2152,12 +2174,24 @@ extension NewComposeMessageView { delegateViewController?.showHUD(type: .spinner) do { try CompositionViewFreezeManager.shared.freeze(self) } catch { assertionFailure() } - NewSingleDiscussionNotification.userWantsToAddAttachmentsToDraft(draftPermanentID: draftPermanentID, itemProviders: itemProvidersToAttach) { success in - do { try CompositionViewFreezeManager.shared.unfreeze(draftPermanentID, success: success) } catch { assertionFailure() } - } - .postOnDispatchQueue(self.internalQueue) + let success = await sendUserWantsToAddAttachmentsToDraftNotification(draftPermanentID: draftPermanentID, itemProviders: itemProvidersToAttach) + do { try CompositionViewFreezeManager.shared.unfreeze(draftPermanentID, success: success) } catch { assertionFailure() } } + + + private func sendUserWantsToAddAttachmentsToDraftNotification(draftPermanentID: ObvManagedObjectPermanentID, itemProviders: [NSItemProvider]) async -> Bool { + return await withCheckedContinuation { (continuation: CheckedContinuation) in + NewSingleDiscussionNotification.userWantsToAddAttachmentsToDraft( + draftPermanentID: draftPermanentID, + itemProviders: itemProviders) + { success in + continuation.resume(returning: success) + } + .postOnDispatchQueue(self.internalQueue) + } + } + } // MARK: - AirDrop files @@ -2198,7 +2232,7 @@ extension NewComposeMessageView: UIImagePickerControllerDelegate, UINavigationCo do { try CompositionViewFreezeManager.shared.unfreeze(draftPermanentID, success: false) } catch { assertionFailure() } return } - guard ([kUTTypeImage, kUTTypeMovie] as [String]).contains(chosenMediaType) else { + guard ([UTType.image, .movie].map(\.identifier)).contains(chosenMediaType) else { do { try CompositionViewFreezeManager.shared.unfreeze(draftPermanentID, success: false) } catch { assertionFailure() } return } @@ -2232,13 +2266,9 @@ extension NewComposeMessageView: UIImagePickerControllerDelegate, UINavigationCo } .postOnDispatchQueue() } else if let originalImage = info[.originalImage] as? UIImage { - let uti = String(kUTTypeJPEG) - guard let fileExtention = ObvUTIUtils.preferredTagWithClass(inUTI: uti, inTagClass: .FilenameExtension) else { - do { try CompositionViewFreezeManager.shared.unfreeze(draftPermanentID, success: false) } catch { assertionFailure() } - return - } + let fileExtension = UTType.jpeg.preferredFilenameExtension ?? "jpeg" let name = "Photo @ \(dateFormatter.string(from: Date()))" - let tempFileName = [name, fileExtention].joined(separator: ".") + let tempFileName = [name, fileExtension].joined(separator: ".") let url = ObvUICoreDataConstants.ContainerURL.forTempFiles.appendingPathComponent(tempFileName) guard let pickedImageJpegData = originalImage.jpegData(compressionQuality: 1.0) else { do { try CompositionViewFreezeManager.shared.unfreeze(draftPermanentID, success: false) } catch { assertionFailure() } @@ -2302,7 +2332,7 @@ extension NewComposeMessageView: VNDocumentCameraViewControllerDelegate { // Write the pdf to a temporary location let name = "Scan @ \(dateFormatter.string(from: Date()))" - let tempFileName = [name, String(kUTTypePDF)].joined(separator: ".") + let tempFileName = [name, UTType.pdf.preferredFilenameExtension ?? "pdf"].joined(separator: ".") let url = ObvUICoreDataConstants.ContainerURL.forTempFiles.appendingPathComponent(tempFileName) guard pdfDocument.write(to: url) else { do { try CompositionViewFreezeManager.shared.unfreeze(draftPermanentID, success: false) } catch { assertionFailure() } @@ -2380,10 +2410,3 @@ extension Optional where Wrapped == TextInputShortcutsResultView.TextShortcutIte } } } - - -fileprivate extension String { - func utiConformsTo(_ otherUTI: CFString) -> Bool { - UTTypeConformsTo(self as CFString, otherUTI) - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/Subviews/AutoGrowingTextView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/Subviews/AutoGrowingTextView.swift index a5d12286..07a2d2f2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/Subviews/AutoGrowingTextView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/Subviews/AutoGrowingTextView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,9 +22,7 @@ import MobileCoreServices import OSLog import Platform_Base import Discussions_Mentions_AutoGrowingTextView_TextViewDelegateProxy -#if DEBUG import UniformTypeIdentifiers -#endif import Platform_UIKit_Additions import ObvUICoreData import Components_TextInputShortcutsResultView @@ -86,9 +84,7 @@ final class AutoGrowingTextView: UITextViewFixed { action: #selector(handleKeyCommand))..{ $0.title = NSLocalizedString("Send", comment: "Send word, capitalized") - if #available(iOS 15.0, *) { - $0.wantsPriorityOverSystemBehavior = true - } + $0.wantsPriorityOverSystemBehavior = true } private var __userIsEnteringAShortcut = false @@ -589,7 +585,26 @@ extension AutoGrowingTextView { override func paste(_ sender: Any?) { assert(autoGrowingTextViewDelegate != nil) guard !UIPasteboard.general.itemProviders.isEmpty else { return } - autoGrowingTextViewDelegate?.userPastedItemProviders(in: self, itemProviders: UIPasteboard.general.itemProviders) + // When performing a copy/paste of an URL (e.g., share a webpage from Safari, tap on Copy in the share sheet, then paste here), + // the NSItemProvider provided by the UIPasteboard cannot be loaded as text and is thus eventually sent to the LoadItemProviderOperation (that fails to load it as an URL). + // Consequently, was cannot just transfer the UIPasteboard.general.itemProviders. + // We thus decided to apply the following strategy: + // For each pasteboard item: + // - if the item has only one representation, and it is of type kUTTypeText or kUTTypeURL, we load it as text, create an NSItemProvider for that text and use it instead of the one provided by UIPasteboard.general.itemProviders + // - otherwise, we keep the NSItemProvider provided in UIPasteboard.general.itemProviders + var pastedItemProviders = [NSItemProvider]() + for (itemNumber, item) in UIPasteboard.general.items.enumerated() { + if let pastedString = (item[UTType.text.identifier] as? String) ?? (item[UTType.plainText.identifier] as? String) ?? (item[UTType.utf8PlainText.identifier] as? String) { + let itemProvider = NSItemProvider(item: pastedString as NSString, typeIdentifier: UTType.text.identifier) + pastedItemProviders.append(itemProvider) + } else if item.keys.count == 1, let pastedURL = item[UTType.url.identifier] as? URL, UIApplication.shared.canOpenURL(pastedURL) { + let itemProvider = NSItemProvider(item: pastedURL.absoluteString as NSString, typeIdentifier: UTType.text.identifier) + pastedItemProviders.append(itemProvider) + } else if UIPasteboard.general.itemProviders.count > itemNumber { + pastedItemProviders.append(UIPasteboard.general.itemProviders[itemNumber]) + } + } + autoGrowingTextViewDelegate?.userPastedItemProviders(in: self, itemProviders: pastedItemProviders) } #if DEBUG //allow copying the attributed text for debugging purposes; will need to be refactored to work with `AttributedString` and get a JSON representation, much better for debugging compared to RTF diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/Subviews/UITextInput+Shortcuts.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/Subviews/UITextInput+Shortcuts.swift index 6f37a871..2601e107 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/Subviews/UITextInput+Shortcuts.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Compose/Subviews/UITextInput+Shortcuts.swift @@ -36,7 +36,7 @@ protocol OlvidTextInput: UITextInput { func olvid_word(at nsRange: NSRange) -> (result: String, range: Range)? - func olvid_word(at range: Range) -> (result: String, range: Range)? + //func olvid_word(at range: Range) -> (result: String, range: Range)? func olvid_lookup(for prefixes: Set, excludedRanges: Set) -> OlvidTextInputTypes.LookupResult? } @@ -71,45 +71,45 @@ extension UITextView: OlvidTextInput { return (result.word, result.range) } - func olvid_word(at range: Range) -> (result: String, range: Range)? { - guard let text, - text.isEmpty == false else { - return nil - } - - let lhs = text[.. text.startIndex { - let characterBeforeCursor = text[text.index(before: range.lowerBound)..(uncheckedBounds: (lower: range.lowerBound, upper: text.index(range.lowerBound, offsetBy: rhsWord.count))) - - return (rhsWord, rhsRange) - } - } - - let word = lhsWord.appending(rhsWord) - - if word.contains("\n") { - return (word.components(separatedBy: .newlines).last!, text.range(of: word)!) - } - - let range = text.index(range.lowerBound, offsetBy: -lhsWord.count)..) -> (result: String, range: Range)? { +// guard let text, +// text.isEmpty == false else { +// return nil +// } +// +// let lhs = text[.. text.startIndex { +// let characterBeforeCursor = text[text.index(before: range.lowerBound)..(uncheckedBounds: (lower: range.lowerBound, upper: text.index(range.lowerBound, offsetBy: rhsWord.count))) +// +// return (rhsWord, rhsRange) +// } +// } +// +// let word = lhsWord.appending(rhsWord) +// +// if word.contains("\n") { +// return (word.components(separatedBy: .newlines).last!, text.range(of: word)!) +// } +// +// let range = text.index(range.lowerBound, offsetBy: -lhsWord.count).., excludedRanges: Set) -> OlvidTextInputTypes.LookupResult? { guard prefixes.isEmpty == false else { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/DiscussionCacheManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/DiscussionCacheManager.swift index edee7415..a3bf8647 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/DiscussionCacheManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/DiscussionCacheManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,7 @@ import ObvUICoreData import os.log import QuickLook import UIKit +import ObvDesignSystem @available(iOS 15.0, *) @@ -54,8 +55,8 @@ final class DiscussionCacheManager: DiscussionCacheDelegate { private var replyToCache = [TypeSafeManagedObjectID: ReplyToBubbleView.Configuration]() private var replyToCacheCompletions = [TypeSafeManagedObjectID: [() -> Void]]() - private var downsizedThumbnailCache = [TypeSafeManagedObjectID: UIImage]() - private var downsizedThumbnailCacheCompletions = [TypeSafeManagedObjectID: [(Result) -> Void]]() + private var downsizedThumbnailCache = [TypeSafeManagedObjectID: UIImage]() + private var downsizedThumbnailCacheCompletions = [TypeSafeManagedObjectID: [(Result) -> Void]]() private let internalQueue = DispatchQueue(label: "DiscussionCacheManager internal queue") private let queueForPostingNotifications = DispatchQueue(label: "DiscussionCacheManager internal queue for posting notifications") @@ -435,7 +436,7 @@ final class DiscussionCacheManager: DiscussionCacheDelegate { if replyTo.isRemoteWiped { var deleterName: String? - if let ownedCryptoId = replyTo.discussion.ownedIdentity?.cryptoId, + if let ownedCryptoId = replyTo.discussion?.ownedIdentity?.cryptoId, let deleterCryptoId = replyTo.deleterCryptoId, let contact = try? PersistedObvContactIdentity.get(contactCryptoId: deleterCryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) { deleterName = contact.customOrShortDisplayName @@ -560,17 +561,17 @@ final class DiscussionCacheManager: DiscussionCacheDelegate { // MARK: - Downsized thumbnails - func getCachedDownsizedThumbnail(objectID: TypeSafeManagedObjectID) -> UIImage? { + func getCachedDownsizedThumbnail(objectID: TypeSafeManagedObjectID) -> UIImage? { return downsizedThumbnailCache[objectID] } - func removeCachedDownsizedThumbnail(objectID: TypeSafeManagedObjectID) { + func removeCachedDownsizedThumbnail(objectID: TypeSafeManagedObjectID) { _ = downsizedThumbnailCache.removeValue(forKey: objectID) } - func requestDownsizedThumbnail(objectID: TypeSafeManagedObjectID, data: Data, completionWhenImageCached: @escaping ((Result) -> Void)) { + func requestDownsizedThumbnail(objectID: TypeSafeManagedObjectID, data: Data, completionWhenImageCached: @escaping ((Result) -> Void)) { assert(Thread.isMainThread) @@ -595,7 +596,7 @@ final class DiscussionCacheManager: DiscussionCacheDelegate { } } - private func requestDownsizedThumbnailFailed(objectID: TypeSafeManagedObjectID, errorMessage: String) { + private func requestDownsizedThumbnailFailed(objectID: TypeSafeManagedObjectID, errorMessage: String) { assert(!Thread.isMainThread) DispatchQueue.main.async { [weak self] in guard let _self = self else { return } @@ -607,7 +608,7 @@ final class DiscussionCacheManager: DiscussionCacheDelegate { } - private func requestDownsizedThumbnailFailedSucceeded(objectID: TypeSafeManagedObjectID, imageToCache: UIImage) { + private func requestDownsizedThumbnailFailedSucceeded(objectID: TypeSafeManagedObjectID, imageToCache: UIImage) { assert(!Thread.isMainThread) DispatchQueue.main.async { [weak self] in guard let _self = self else { return } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/DiscussionGallery/DiscussionGalleryViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/DiscussionGallery/DiscussionGalleryViewController.swift index d43be513..344d71e1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/DiscussionGallery/DiscussionGalleryViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/DiscussionGallery/DiscussionGalleryViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,6 +29,7 @@ import QuickLook import UIKit import UniformTypeIdentifiers import UI_SystemIcon +import ObvDesignSystem fileprivate enum JoinKind: Int, CaseIterable { @@ -508,7 +509,7 @@ extension JoinGalleryViewController { do { try await cacheDelegate.requestPreparedImage(objectID: join.typedObjectID, size: thumbnailSize) } catch { - cell.updateWith(join: join, thumbnail: .error(uti: join.uti)) + cell.updateWith(join: join, thumbnail: .error(contentType: join.contentType)) return } joinNeedsUpdate(objectID: join.typedObjectID) @@ -758,7 +759,7 @@ extension JoinGalleryViewController { // Show in discussion action - if let messagePermanentID = join.message?.messagePermanentID, let ownedCryptoId = join.message?.discussion.ownedIdentity?.cryptoId { + if let messagePermanentID = join.message?.messagePermanentID, let ownedCryptoId = join.message?.discussion?.ownedIdentity?.cryptoId { let action = UIAction(title: NSLocalizedString("SHOW_IN_DISCUSSION", comment: "")) { (_) in let deepLink = ObvDeepLink.message(ownedCryptoId: ownedCryptoId, objectPermanentID: messagePermanentID) ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) @@ -798,7 +799,7 @@ fileprivate protocol GalleryViewCell: UICollectionViewCell { enum ThumbnailValue: Hashable { case computing case computed(_: UIImage) - case error(uti: String) + case error(contentType: UTType) } @available(iOS 15.0, *) @@ -940,10 +941,10 @@ final class DocumentViewCell: UICollectionViewListCell, GalleryViewCell { let dateString = dateFormatter.string(from: date) subtitleElements.append(dateString) } - let uti = join.uti + let contentType = join.contentType let fileSize = Int(join.totalByteCount) subtitleElements.append(byteCountFormatter.string(fromByteCount: Int64(fileSize))) - if let uti = UTType(uti), let type = uti.localizedDescription { + if let type = contentType.localizedDescription { subtitleElements.append(type) } content.secondaryText = subtitleElements.joined(separator: " - ") @@ -957,7 +958,7 @@ final class DocumentViewCell: UICollectionViewListCell, GalleryViewCell { listContentView.configuration = content let joinIsPlayable: Bool - joinIsPlayable = ObvUTIUtils.uti(uti, conformsTo: kUTTypeAudio) + joinIsPlayable = contentType.conforms(to: .audio) let imageConfiguration = DocumentCellConfiguration(thumbnail: self.thumbnail, readingRequiresUserAction: self.readingRequiresUserAction, @@ -1118,8 +1119,8 @@ extension ImageCellConfiguration { switch thumbnail { case .computing: return nil - case .error(uti: let uti): - let icon = ObvUTIUtils.getIcon(forUTI: uti) + case .error(contentType: let contentType): + let icon = contentType.systemIcon return IconView.Configuration(icon: icon, tintColor: .secondaryLabel) case .computed: return nil diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSectionInfos.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSectionInfos.swift similarity index 98% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSectionInfos.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSectionInfos.swift index f22b0b24..0e5a18a6 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSectionInfos.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSectionInfos.swift @@ -20,8 +20,8 @@ import UIKit struct ObvCollectionViewLayoutSectionInfos { - + let frame: CGRect let largestItemWithValidOrigin: Int? - + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSupplementaryViewInfos.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSupplementaryViewInfos.swift similarity index 100% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSupplementaryViewInfos.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutSupplementaryViewInfos.swift diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/HostingViewControllers/ReceivedMessageInfosHostingViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/HostingViewControllers/ReceivedMessageInfosHostingViewController.swift similarity index 96% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/HostingViewControllers/ReceivedMessageInfosHostingViewController.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/HostingViewControllers/ReceivedMessageInfosHostingViewController.swift index f5b5e9f8..db412a45 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/HostingViewControllers/ReceivedMessageInfosHostingViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/HostingViewControllers/ReceivedMessageInfosHostingViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,7 +24,6 @@ import ObvTypes import ObvUICoreData - final class ReceivedMessageInfosHostingViewController: UIHostingController { private var store: ReceivedMessageInfosViewStore! @@ -79,7 +78,7 @@ fileprivate final class ReceivedMessageInfosViewStore: ObservableObject { let messageReceivedObjectID: NSManagedObjectID init?(messageReceived: PersistedMessageReceived) { - guard let ownedCryptoId = messageReceived.discussion.ownedIdentity?.cryptoId else { return nil } + guard let ownedCryptoId = messageReceived.discussion?.ownedIdentity?.cryptoId else { return nil } self.ownedCryptoId = ownedCryptoId self.messageReceivedObjectID = messageReceived.objectID self.timeBasedDeletionDateString = nil @@ -118,14 +117,14 @@ fileprivate final class ReceivedMessageInfosViewStore: ObservableObject { private func computeTimeBasedDeletionDate(within context: NSManagedObjectContext) -> String? { guard let messageReceived = try? PersistedMessageReceived.get(with: messageReceivedObjectID, within: context) as? PersistedMessageReceived else { return nil } - guard let timeInterval = messageReceived.discussion.effectiveTimeIntervalRetention else { return nil } + guard let timeInterval = messageReceived.discussion?.effectiveTimeIntervalRetention else { return nil } let deletionDate = Date(timeInterval: timeInterval, since: messageReceived.timestamp) return ReceivedMessageInfosViewStore.dateFormater.string(from: deletionDate) } private func computeNumberOfNewMessagesBeforeSuppression(within context: NSManagedObjectContext) -> Int? { guard let messageReceived = try? PersistedMessageReceived.get(with: messageReceivedObjectID, within: context) as? PersistedMessageReceived else { return nil } - let discussion = messageReceived.discussion + guard let discussion = messageReceived.discussion else { return nil } guard let countBasedRetention = discussion.effectiveCountBasedRetention else { return nil } var totalNumberOfMessagesInDiscussionAfterThisMessage = 0 do { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/HostingViewControllers/SentMessageInfosHostingViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/HostingViewControllers/SentMessageInfosHostingViewController.swift similarity index 97% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/HostingViewControllers/SentMessageInfosHostingViewController.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/HostingViewControllers/SentMessageInfosHostingViewController.swift index 4d697f3b..0bbb4e1f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/HostingViewControllers/SentMessageInfosHostingViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/HostingViewControllers/SentMessageInfosHostingViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,7 +24,6 @@ import ObvTypes import ObvUICoreData - final class SentMessageInfosHostingViewController: UIHostingController { private var store: SentMessageInfosViewStore! @@ -80,7 +79,7 @@ fileprivate final class SentMessageInfosViewStore: ObservableObject { @MainActor init?(messageSent: PersistedMessageSent) { - guard let ownedCryptoId = messageSent.discussion.ownedIdentity?.cryptoId else { return nil } + guard let ownedCryptoId = messageSent.discussion?.ownedIdentity?.cryptoId else { return nil } self.ownedCryptoId = ownedCryptoId self.sortedInfos = SentMessageInfosViewStore.computeRecipientAndInfos(from: messageSent.unsortedRecipientsInfos) self.messageSentObjectID = messageSent.objectID @@ -185,7 +184,7 @@ fileprivate final class SentMessageInfosViewStore: ObservableObject { private func computeTimeBasedDeletionDate(within context: NSManagedObjectContext) -> String? { guard let messageSent = try? PersistedMessageSent.get(with: messageSentObjectID, within: context) as? PersistedMessageSent else { return nil } guard messageSent.wasSentOrCouldNotBeSentToOneOrMoreRecipients else { return nil } - guard let timeInterval = messageSent.discussion.effectiveTimeIntervalRetention else { return nil } + guard let timeInterval = messageSent.discussion?.effectiveTimeIntervalRetention else { return nil } let deletionDate = Date(timeInterval: timeInterval, since: messageSent.timestamp) return SentMessageInfosViewStore.dateFormater.string(from: deletionDate) } @@ -194,7 +193,7 @@ fileprivate final class SentMessageInfosViewStore: ObservableObject { private func computeNumberOfNewMessagesBeforeSuppression(within context: NSManagedObjectContext) -> Int? { guard let messageSent = try? PersistedMessageSent.get(with: messageSentObjectID, within: context) as? PersistedMessageSent else { return nil } guard messageSent.wasSentOrCouldNotBeSentToOneOrMoreRecipients else { return nil } - let discussion = messageSent.discussion + guard let discussion = messageSent.discussion else { assertionFailure(); return nil } guard let countBasedRetention = discussion.effectiveCountBasedRetention else { return nil } var totalNumberOfMessagesInDiscussionAfterThisMessage = 0 do { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToManyContacts.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToManyContacts.swift similarity index 89% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToManyContacts.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToManyContacts.swift index b808cb6d..d7e886f0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToManyContacts.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToManyContacts.swift @@ -45,7 +45,7 @@ struct DateInfosOfSentMessageToManyContactsInnerView: View { var body: some View { if !read.isEmpty { - Section(header: ObvLabel("Read", systemIcon: .eyeFill), content: { + Section(header: Label("Read", systemIcon: .eyeFill), content: { ForEach(read) { info in HorizontalTitleAndSubtitle(title: info.recipientName, subtitle: info.timestampAsString) @@ -53,7 +53,7 @@ struct DateInfosOfSentMessageToManyContactsInnerView: View { }) } if !delivered.isEmpty { - Section(header: ObvLabel("Delivered", systemIcon: .checkmarkCircleFill), content: { + Section(header: Label("Delivered", systemIcon: .checkmarkCircleFill), content: { ForEach(delivered) { info in HorizontalTitleAndSubtitle(title: info.recipientName, subtitle: info.timestampAsString) @@ -61,7 +61,7 @@ struct DateInfosOfSentMessageToManyContactsInnerView: View { }) } if !sent.isEmpty { - Section(header: ObvLabel("Sent", systemIcon: .checkmarkCircle), content: { + Section(header: Label("Sent", systemIcon: .checkmarkCircle), content: { ForEach(sent) { info in HorizontalTitleAndSubtitle(title: info.recipientName, subtitle: info.timestampAsString) @@ -69,7 +69,7 @@ struct DateInfosOfSentMessageToManyContactsInnerView: View { }) } if !pending.isEmpty { - Section(header: ObvLabel("Pending", systemIcon: .hourglass), content: { + Section(header: Label("Pending", systemIcon: .hourglass), content: { ForEach(pending) { info in HorizontalTitleAndSubtitle(title: info.recipientName, subtitle: "") @@ -77,7 +77,7 @@ struct DateInfosOfSentMessageToManyContactsInnerView: View { }) } if !failed.isEmpty { - Section(header: ObvLabel("Failed", systemIcon: .exclamationmarkCircle), content: { + Section(header: Label("Failed", systemIcon: .exclamationmarkCircle), content: { ForEach(failed) { info in HorizontalTitleAndSubtitle(title: info.recipientName, subtitle: "") diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToSingleContact.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToSingleContact.swift similarity index 100% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToSingleContact.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/DateInfosOfSentMessageToSingleContact.swift diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/HorizontalTitleAndSubtitle.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/HorizontalTitleAndSubtitle.swift similarity index 98% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/HorizontalTitleAndSubtitle.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/HorizontalTitleAndSubtitle.swift index 93d0a0df..5a6f30d8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/HorizontalTitleAndSubtitle.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/HorizontalTitleAndSubtitle.swift @@ -19,6 +19,7 @@ import ObvUI import SwiftUI +import ObvDesignSystem struct HorizontalTitleAndSubtitle: View { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/MessageMetadatasSectionView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/MessageMetadatasSectionView.swift similarity index 90% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/MessageMetadatasSectionView.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/MessageMetadatasSectionView.swift index 466b39b3..e9859ea0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/MessageMetadatasSectionView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/MessageMetadatasSectionView.swift @@ -24,6 +24,7 @@ import ObvTypes import SwiftUI import UI_SystemIcon import UI_SystemIcon_SwiftUI +import ObvDesignSystem struct MessageMetadatasSectionView: View { @@ -80,7 +81,9 @@ fileprivate struct MetadataView: View { case .read: return NSLocalizedString("Read", comment: "") case .wiped: return NSLocalizedString("Wiped", comment: "") case .remoteWiped(remoteCryptoId: let cryptoId): - if let contact = try? PersistedObvContactIdentity.get(contactCryptoId: cryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) { + if cryptoId == ownedCryptoId { + return String.localizedStringWithFormat(NSLocalizedString("REMOTELY_WIPED_BY_YOU", comment: "")) + } else if let contact = try? PersistedObvContactIdentity.get(contactCryptoId: cryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) { return String.localizedStringWithFormat(NSLocalizedString("Remotely wiped by %@", comment: ""), contact.customDisplayName ?? contact.fullDisplayName) } else { return NSLocalizedString("Remotely wiped", comment: "") diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/MessageRetentionInfoSectionView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/MessageRetentionInfoSectionView.swift similarity index 89% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/MessageRetentionInfoSectionView.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/MessageRetentionInfoSectionView.swift index a8f0dd95..d75f7f0e 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/MessageRetentionInfoSectionView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/MessageRetentionInfoSectionView.swift @@ -19,6 +19,7 @@ import ObvUI import SwiftUI +import ObvDesignSystem struct MessageRetentionInfoSectionView: View { @@ -30,7 +31,7 @@ struct MessageRetentionInfoSectionView: View { Section(header: Text("RETENTION_INFO_LABEL")) { if let dateString = timeBasedDeletionDateString { HStack(alignment: .firstTextBaseline) { - ObvLabel("EXPECTED_DELETION_DATE", systemImage: "calendar.badge.clock") + Label("EXPECTED_DELETION_DATE", systemImage: "calendar.badge.clock") Spacer() Text(dateString) .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) @@ -39,13 +40,13 @@ struct MessageRetentionInfoSectionView: View { if let number = numberOfNewMessagesBeforeSuppression { if number >= 0 { HStack(alignment: .firstTextBaseline) { - ObvLabel("NUMBER_OF_MESSAGES_BEFORE_DELETION", systemImage: "number") + Label("NUMBER_OF_MESSAGES_BEFORE_DELETION", systemImage: "number") Spacer() Text("\(number)") .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) } } else { - ObvLabel("WILL_SOON_BE_DELETED", systemImage: "number") + Label("WILL_SOON_BE_DELETED", systemImage: "number") } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/ReceivedAttachementInfosView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/ReceivedAttachementInfosView.swift similarity index 96% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/ReceivedAttachementInfosView.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/ReceivedAttachementInfosView.swift index 116015ff..0bfcac29 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/ReceivedAttachementInfosView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/ReceivedAttachementInfosView.swift @@ -55,8 +55,10 @@ fileprivate extension ReceivedFyleMessageJoinWithStatus { var isProgressShown: Bool { switch self.status { - case .downloading: return true - case .downloadable, .complete, .cancelledByServer: return false + case .downloading: + return true + case .downloadable, .complete, .cancelledByServer: + return false } } @@ -107,7 +109,7 @@ struct ReceivedFyleMessageJoinWithStatusView: View { var body: some View { // The ObvLabelAlt view is replicated to prevent an animation glitch when the progress disappears - if #available(iOS 15, *), isProgressShown { + if isProgressShown { VStack(alignment: .leading) { ObvLabelAlt(title: filename, systemIcon: systemIcon) VStack(alignment: .leading) { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/ReceivedMessageStatusView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/ReceivedMessageStatusView.swift similarity index 98% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/ReceivedMessageStatusView.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/ReceivedMessageStatusView.swift index b0508a0c..5a67afdf 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/ReceivedMessageStatusView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/ReceivedMessageStatusView.swift @@ -21,6 +21,7 @@ import ObvUI import ObvUICoreData import SwiftUI import UI_SystemIcon +import ObvDesignSystem struct ReceivedMessageStatusView: View { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/SentAttachementInfosView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/SentAttachementInfosView.swift similarity index 94% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/SentAttachementInfosView.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/SentAttachementInfosView.swift index 9bc42569..dbebb7ba 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/SentAttachementInfosView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/SentAttachementInfosView.swift @@ -53,13 +53,18 @@ fileprivate extension SentFyleMessageJoinWithStatus { case .uploadable: return .circleDashed case .uploading: return .arrowUpCircle case .complete: return .checkmarkCircle + case .downloadable: return .arrowDownCircle + case .downloading: return .arrowDownCircle + case .cancelledByServer: return .exclamationmarkCircle } } var isProgressShown: Bool { switch self.status { - case .uploadable, .uploading: return true - case .complete: return false + case .uploadable, .uploading, .downloading: + return true + case .complete, .downloadable, .cancelledByServer: + return false } } @@ -125,7 +130,7 @@ struct SentFyleMessageJoinWithStatusView: View { allPersistedAttachmentSentRecipientInfos: attachmentInfosForThisSentFyleMessageJoinWithStatusView) } label: { // The ObvLabelAlt view is replicated to prevent an animation glitch when the progress disappears - if #available(iOS 15, *), isProgressShown { + if isProgressShown { VStack(alignment: .leading) { ObvLabelAlt(title: filename, systemIcon: systemIcon) VStack(alignment: .leading) { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/SentMessageStatusView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/SentMessageStatusView.swift similarity index 94% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/SentMessageStatusView.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/SentMessageStatusView.swift index 96b7453b..ef842da8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/MessageDetails/SwiftUIViews/SentMessageStatusView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageDetails/SwiftUIViews/SentMessageStatusView.swift @@ -21,6 +21,8 @@ import ObvUI import ObvUICoreData import SwiftUI import UI_SystemIcon +import ObvDesignSystem + struct SentMessageStatusView: View { @@ -43,6 +45,8 @@ struct SentMessageStatusView: View { return .exclamationmarkCircle case .hasNoRecipient: return .iphoneGen3CircleFill + case .sentFromAnotherOwnedDevice: + return .iphoneGen3CircleFill } } @@ -55,6 +59,7 @@ struct SentMessageStatusView: View { case .read: return CommonString.Word.Read case .couldNotBeSentToOneOrMoreRecipients: return NSLocalizedString("FAILED", comment: "") case .hasNoRecipient: return CommonString.Word.Stored + case .sentFromAnotherOwnedDevice: return "" } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageReactionsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageReactionsView.swift index e8ad0246..4d894711 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageReactionsView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/MessageReactionsView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,6 +25,8 @@ import ObvUICoreData import SwiftUI import UI_SystemIcon import UI_SystemIcon_SwiftUI +import ObvSettings + final class MessageReactionsListHostingViewController: UIHostingController, MessageReactionsListViewModelDelegate { @@ -40,6 +42,17 @@ final class MessageReactionsListHostingViewController: UIHostingController>() + private var messagesToMarkAsNotNewWhenScrollingEnds = [MessageIdentifier]() private var atLeastOneSnapshotWasApplied = false private var isRegisteredToKeyboardNotifications = false private var visibilityTrackerForSensitiveMessages: VisibilityTrackerForSensitiveMessages private lazy var scrollToBottomButton = ScrollToBottomButton(observing: collectionView, initialVerticalVisibilityThreshold: 0) private let viewDidLayoutSubviewsSubject = PassthroughSubject() + private var isDragSessionInProgress = false /// We must adapt the collection view's insets when the frame of the main content view of the composition view changes, when the keyboard shows/hides, but only when we are not scrolling. /// To do so, we three values representing those states, and adapt the insets when appropriate. We use the ``NewComposeMessageView`` published main content view frame, the published ``currentScrolling`` value, and the following ``toggledWhenKeyboardDidHideOrShow`` variable, toggled whenever the keyboard changes state. @@ -104,13 +106,6 @@ final class NewSingleDiscussionViewController: UIViewController, NSFetchedResult private var filesViewer: FilesViewer? - private lazy var attachmentsDropView = AttachmentsDropView( - allowedTypes: [.image, .movie, .pdf, .data, .item], - directoryForTemporaryFiles: ObvUICoreDataConstants.ContainerURL.forTemporaryDroppedItems.url - )..{ - $0.delegate = self - } - /// Allows to keep track of the message the user wants to forward until she chose the appropriate discussions. private var messageToForward: PersistedMessage? @@ -376,7 +371,7 @@ final class NewSingleDiscussionViewController: UIViewController, NSFetchedResult } collectionView.adjustedScrollToItem(at: indexPath, at: .centeredVertically, completion: completionAndAnimate) case .newMessageSystemOrLastMessage: - if let unreadMessagesSystemMessage = unreadMessagesSystemMessage { + if let unreadMessagesSystemMessage { guard let indexPath = frc.indexPath(forObject: unreadMessagesSystemMessage) else { assertionFailure(); return } collectionView.adjustedScrollToItem(at: indexPath, at: .centeredVertically, completion: completion) } else { @@ -420,7 +415,7 @@ final class NewSingleDiscussionViewController: UIViewController, NSFetchedResult self?.configureNewComposeMessageViewVisibility(animate: true) } }, - ObvMessengerCoreDataNotification.observePersistedGroupV2UpdateIsFinished { [weak self] groupV2ObjectID in + ObvMessengerCoreDataNotification.observePersistedGroupV2UpdateIsFinished { [weak self] groupV2ObjectID, _, _ in OperationQueue.main.addOperation { guard let group = try? PersistedGroupV2.get(objectID: groupV2ObjectID, within: ObvStack.shared.viewContext) else { return } guard group.discussion?.typedObjectID.downcast == discussionObjectID else { return } @@ -458,6 +453,11 @@ final class NewSingleDiscussionViewController: UIViewController, NSFetchedResult os_log("🛫 End call to theUserLeftTheDiscussion as scene enters background", log: log, type: .info) } }, + ObvMessengerCoreDataNotification.observeStatusOfSentFyleMessageJoinDidChange { [weak self] (sentJoinID, messageID, discussionID) in + Task { + await self?.processStatusOfSentFyleMessageJoinDidChange(sentJoinID: sentJoinID, messageID: messageID, discussionID: discussionID) + } + }, ]) } @@ -586,6 +586,8 @@ extension NewSingleDiscussionViewController { collectionView.alwaysBounceVertical = true collectionView.scrollsToTop = false collectionView.contentInsetAdjustmentBehavior = .automatic + collectionView.dropDelegate = self + collectionView.dragDelegate = self NSLayoutConstraint.activate([ collectionView.topAnchor.constraint(equalTo: view.topAnchor), @@ -611,7 +613,6 @@ extension NewSingleDiscussionViewController { spinner.startAnimating() view.addSubview(scrollToBottomButton) - view.addSubview(attachmentsDropView) let attachmentsDropViewLayoutGuide = UILayoutGuide() @@ -630,14 +631,6 @@ extension NewSingleDiscussionViewController { composeMessageView!.topAnchor.constraint(equalToSystemSpacingBelow: attachmentsDropViewLayoutGuide.bottomAnchor, multiplier: 1), ]) - NSLayoutConstraint.activate([ - attachmentsDropView.topAnchor.constraint(equalTo: attachmentsDropViewLayoutGuide.topAnchor), - attachmentsDropView.trailingAnchor.constraint(equalTo: attachmentsDropViewLayoutGuide.trailingAnchor), - attachmentsDropView.bottomAnchor.constraint(equalTo: attachmentsDropViewLayoutGuide.bottomAnchor), - attachmentsDropView.leadingAnchor.constraint(equalTo: attachmentsDropViewLayoutGuide.leadingAnchor), - ]) - - view.addInteraction(UIDropInteraction(attachmentsDropView)) } @@ -819,24 +812,30 @@ extension NewSingleDiscussionViewController { @objc func callButtonTapped() { + // Dismiss the keyboard (since we will most probably switch to the call view controller) + // Then try to call guard let discussion = try? PersistedDiscussion.get(objectID: discussionObjectID, within: ObvStack.shared.viewContext) else { assertionFailure(); return } switch try? discussion.kind { case .oneToOne(withContactIdentity: let contactIdentity): - guard let contactID = contactIdentity?.typedObjectID else { return } - ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: [contactID], groupId: nil) + guard let contactCryptoId = contactIdentity?.cryptoId, + let ownedCryptoId = contactIdentity?.ownedIdentity?.cryptoId else { + return + } + ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set([contactCryptoId]), groupId: nil) .postOnDispatchQueue(internalQueue) case .groupV1(withContactGroup: let contactGroup): - if let contactGroup = contactGroup { - let objecID = contactGroup.typedObjectID - let contactIdentities = contactGroup.contactIdentities - ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(contactIDs: contactIdentities.map({ $0.typedObjectID }), groupId: .groupV1(objecID)) + if let contactGroup = contactGroup, let groupV1Identifier = try? contactGroup.getGroupId() { + let contactCryptoIds = contactGroup.contactIdentities.compactMap { $0.cryptoId } + guard let ownedCryptoId = contactGroup.ownedIdentity?.cryptoId else { return } + ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set(contactCryptoIds), groupId: .groupV1(groupV1Identifier: groupV1Identifier)) .postOnDispatchQueue(internalQueue) } case .groupV2(withGroup: let group): if let group { - let groupObjectID = group.typedObjectID - let contactObjectIDs = group.contactsAmongNonPendingOtherMembers.map({ $0.typedObjectID }) - ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(contactIDs: contactObjectIDs, groupId: .groupV2(groupObjectID)) + guard let ownedCryptoId = try? group.ownCryptoId else { return } + let contactCryptoIds = group.contactsAmongNonPendingOtherMembers.compactMap { $0.cryptoId } + let groupV2Identifier = group.groupIdentifier + ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set(contactCryptoIds), groupId: .groupV2(groupV2Identifier: groupV2Identifier)) .postOnDispatchQueue(internalQueue) } case .none: @@ -1044,7 +1043,6 @@ extension NewSingleDiscussionViewController { cancellables.append( $messagesToReconfigure .filter { !$0.isEmpty } - .removeDuplicates() .debounce(for: 0.3, scheduler: RunLoop.main) .map { [weak self] messageObjectIDs -> [NSManagedObjectID] in assert(Thread.isMainThread) @@ -1054,7 +1052,9 @@ extension NewSingleDiscussionViewController { .receive(on: queueForApplyingSnapshots) .sink { [weak self] objectIDs in guard var snapshot = self?.dataSource.snapshot() else { return } - snapshot.reconfigureItems(objectIDs) + let messageObjectIDsToReconfigure = objectIDs.filter({ snapshot.itemIdentifiers.contains($0)}) + guard !messageObjectIDsToReconfigure.isEmpty else { return } + snapshot.reconfigureItems(messageObjectIDsToReconfigure) self?.dataSource.apply(snapshot, animatingDifferences: false) } ) @@ -1068,6 +1068,13 @@ extension NewSingleDiscussionViewController { } + /// When the status of an attachment sent from another owned device changes, we reconfigure de cell of the corresponding message. This, e.g., makes it possible to actually see the photo once it is fully downloaded. + @MainActor + private func processStatusOfSentFyleMessageJoinDidChange(sentJoinID: TypeSafeManagedObjectID, messageID: TypeSafeManagedObjectID, discussionID: TypeSafeManagedObjectID) async { + guard self.discussionObjectID == discussionID else { return } + cellNeedsToBeReconfiguredAndResized(messageID: messageID.downcast) + } + } @@ -1146,7 +1153,7 @@ extension NewSingleDiscussionViewController { guard let insertedObjects = notification.userInfo?[NSInsertedObjectsKey] as? Set else { return } let newSentMessages = insertedObjects .compactMap({ $0 as? PersistedMessageSent }) - .filter({ $0.discussion.typedObjectID == _self.discussionObjectID }) + .filter({ $0.discussion?.typedObjectID == _self.discussionObjectID }) guard !newSentMessages.isEmpty else { return } _self.objectIDsOfMessagesToConsiderInNewMessagesCell.removeAll() // We asynchronously call `insertOrUpdateSystemMessageCountingNewMessages`. @@ -1170,7 +1177,7 @@ extension NewSingleDiscussionViewController { guard let insertedObjects = notification.userInfo?[NSInsertedObjectsKey] as? Set else { return } let insertedReceivedMessages = insertedObjects .compactMap({ $0 as? PersistedMessageReceived }) - .filter({ $0.discussion.typedObjectID == _self.discussionObjectID }) + .filter({ $0.discussion?.typedObjectID == _self.discussionObjectID }) let objectIDsOfInsertedReceivedMessages = Set(insertedReceivedMessages.map({ $0.typedObjectID.downcast })) guard !objectIDsOfInsertedReceivedMessages.isSubset(of: _self.objectIDsOfMessagesToConsiderInNewMessagesCell) else { return } _self.objectIDsOfMessagesToConsiderInNewMessagesCell.formUnion(objectIDsOfInsertedReceivedMessages) @@ -1191,7 +1198,7 @@ extension NewSingleDiscussionViewController { guard let insertedObjects = notification.userInfo?[NSInsertedObjectsKey] as? Set else { return } let insertedSystemMessages = insertedObjects .compactMap({ $0 as? PersistedMessageSystem }) - .filter({ $0.discussion.typedObjectID == _self.discussionObjectID }) + .filter({ $0.discussion?.typedObjectID == _self.discussionObjectID }) let insertedRelevantSystemMessages = insertedSystemMessages .filter({ $0.isRelevantForCountingUnread }) .filter({ $0.optionalContactIdentity != nil }) @@ -1273,12 +1280,12 @@ extension NewSingleDiscussionViewController { // This will allow to mark visible messages as not new. guard windowSceneActivationState == .foregroundActive else { return } - let messageObjectId: TypeSafeManagedObjectID + let messageId: MessageIdentifier if let receivedCell = cell as? ReceivedMessageCell, let receivedMessage = receivedCell.message, receivedMessage.status == .new { - messageObjectId = receivedMessage.typedObjectID.downcast + messageId = .received(id: .objectID(objectID: receivedMessage.objectID)) } else if let systemCell = cell as? SystemMessageCell, let systemMessage = systemCell.message, systemMessage.status == .new { if systemMessage.isRelevantForCountingUnread { - messageObjectId = systemMessage.typedObjectID.downcast + messageId = .system(id: .objectID(objectID: systemMessage.objectID)) } else { return } @@ -1290,11 +1297,18 @@ extension NewSingleDiscussionViewController { // This would introduce animation glitches. Instead, we postpone the notification if currentScrolling == .none { // ObvDisplayableLogs.shared.log("[NewSingleDiscussionViewController] Posting messagesAreNotNewAnymore notification in markAsNotNewTheMessageInCell for \([messageObjectId].count) messages") - ObvMessengerInternalNotification.messagesAreNotNewAnymore(persistedMessageObjectIDs: [messageObjectId]) + guard let discussionId = try? discussion.identifier else { assertionFailure(); return } + ObvMessengerInternalNotification.messagesAreNotNewAnymore( + ownedCryptoId: currentOwnedCryptoId, + discussionId: discussionId, + messageIds: [messageId]) .postOnDispatchQueue() } else { // ObvDisplayableLogs.shared.log("[NewSingleDiscussionViewController] As currentScrolling is \(currentScrolling.debugDescription), we do not post messagesAreNotNewAnymore notification for \([messageObjectId].count) messages") - messagesToMarkAsNotNewWhenScrollingEnds.insert(messageObjectId) + // We insert the messageId in the list only if it does not already exists init (note that this code works because the messageIds have a well defined objectID in our particular case). + if messagesToMarkAsNotNewWhenScrollingEnds.first(where: { $0.objectID == messageId.objectID }) == nil { + messagesToMarkAsNotNewWhenScrollingEnds.append(messageId) + } } } @@ -1320,14 +1334,18 @@ extension NewSingleDiscussionViewController { let visibleNewReceivedMessages = visibleReceivedCells.compactMap({ $0.message }).filter({ $0.status == .new }) let visibleNewSystemMessages = visibleSystemCells.compactMap({ $0.message }).filter({ $0.status == .new }) - let objectIDsOfNewVisibleReceivedMessages = Set(visibleNewReceivedMessages.map({ $0.typedObjectID.downcast })) - let objectIDsOfNewVisibleSystemMessages = Set(visibleNewSystemMessages.map({ $0.typedObjectID.downcast })) + let messageIdsOfNewVisibleReceivedMessages = visibleNewReceivedMessages.map({ $0.identifier }) + let messageIdsOfNewVisibleSystemMessages = visibleNewSystemMessages.map({ $0.identifier }) - let objectIDsOfNewVisibleMessages = objectIDsOfNewVisibleReceivedMessages.union(objectIDsOfNewVisibleSystemMessages) + let messageIdsOfNewVisibleMessages = messageIdsOfNewVisibleReceivedMessages + messageIdsOfNewVisibleSystemMessages - if !objectIDsOfNewVisibleMessages.isEmpty { + if !messageIdsOfNewVisibleMessages.isEmpty { // ObvDisplayableLogs.shared.log("[NewSingleDiscussionViewController] Posting messagesAreNotNewAnymore notification in markNewVisibleReceivedAndRelevantSystemMessagesAsNotNew for \(objectIDsOfNewVisibleMessages.count) messages") - ObvMessengerInternalNotification.messagesAreNotNewAnymore(persistedMessageObjectIDs: objectIDsOfNewVisibleMessages) + guard let discussionId = try? discussion.identifier else { assertionFailure(); return } + ObvMessengerInternalNotification.messagesAreNotNewAnymore( + ownedCryptoId: currentOwnedCryptoId, + discussionId: discussionId, + messageIds: messageIdsOfNewVisibleMessages) .postOnDispatchQueue(internalQueue) } @@ -1413,7 +1431,11 @@ extension NewSingleDiscussionViewController { guard !messagesToMarkAsNotNewWhenScrollingEnds.isEmpty else { return } guard currentScrolling == .none else { return } // ObvDisplayableLogs.shared.log("[NewSingleDiscussionViewController] Posting messagesAreNotNewAnymore notification in processReceivedMessagesThatBecameNotNewDuringScrolling for \(messagesToMarkAsNotNewWhenScrollingEnds.count) messages") - ObvMessengerInternalNotification.messagesAreNotNewAnymore(persistedMessageObjectIDs: messagesToMarkAsNotNewWhenScrollingEnds) + guard let discussionId = try? discussion.identifier else { assertionFailure(); return } + ObvMessengerInternalNotification.messagesAreNotNewAnymore( + ownedCryptoId: currentOwnedCryptoId, + discussionId: discussionId, + messageIds: messagesToMarkAsNotNewWhenScrollingEnds) .postOnDispatchQueue(internalQueue) messagesToMarkAsNotNewWhenScrollingEnds.removeAll() } @@ -1514,7 +1536,7 @@ extension NewSingleDiscussionViewController { } // Share all attachments (photos and other) at once - if let itemProvidersForAllAttachments = cell.itemProvidersForAllAttachments, !itemProvidersForAllAttachments.isEmpty, cell.itemProvidersForImages?.count != itemProvidersForAllAttachments.count { + if let itemProvidersForAllAttachments = cell.activityItemProvidersForAllAttachments, !itemProvidersForAllAttachments.isEmpty, cell.itemProvidersForImages?.count != itemProvidersForAllAttachments.count { let action = UIAction(title: Strings.shareAttachments(itemProvidersForAllAttachments.count)) { [weak self] (_) in let uiActivityVC = UIActivityViewController(activityItems: itemProvidersForAllAttachments, applicationActivities: nil) uiActivityVC.popoverPresentationController?.sourceView = cell @@ -1531,6 +1553,22 @@ extension NewSingleDiscussionViewController { } } + // Save to Files (iOS/iPadOS) or present a standard save panel (macOS) + + if persistedMessage.shareActionCanBeMadeAvailable { + + if let hardlinkURLsForAllAttachments = cell.hardlinkURLsForAllAttachments, !hardlinkURLsForAllAttachments.isEmpty { + let action = UIAction(title: Strings.saveAttachments(hardlinkURLsForAllAttachments.count)) { [weak self] (_) in + let picker = UIDocumentPickerViewController(forExporting: hardlinkURLsForAllAttachments, asCopy: true) + picker.shouldShowFileExtensions = true + self?.present(picker, animated: true) + } + action.image = UIImage(systemIcon: .squareAndArrowDownOnSquare) + children.append(action) + } + + } + // Reply to message action if let draftObjectID = cell.persistedDraftObjectID, persistedMessage.replyToActionCanBeMadeAvailable { let action = UIAction(title: CommonString.Word.Reply) { [weak self] _ in @@ -1543,9 +1581,9 @@ extension NewSingleDiscussionViewController { } // Edit message action - if persistedMessage.editBodyActionCanBeMadeAvailable { + if persistedMessage.editBodyActionCanBeMadeAvailable, let sentMessage = persistedMessage as? PersistedMessageSent { let action = UIAction(title: CommonString.Word.Edit) { [weak self] (_) in - let sentMessageObjectID = persistedMessage.objectID + guard let ownedCryptoId = self?.currentOwnedCryptoId else { assertionFailure(); return } let currentTextBody = persistedMessage.textBody let vc = BodyEditViewController(currentBody: currentTextBody) { [weak self] in self?.presentedViewController?.dismiss(animated: true) @@ -1553,8 +1591,10 @@ extension NewSingleDiscussionViewController { guard let _self = self else { return } self?.presentedViewController?.dismiss(animated: true, completion: { guard newTextBody != currentTextBody else { return } - ObvMessengerInternalNotification.userWantsToSendEditedVersionOfSentMessage(sentMessageObjectID: sentMessageObjectID, - newTextBody: newTextBody ?? "") + ObvMessengerInternalNotification.userWantsToSendEditedVersionOfSentMessage( + ownedCryptoId: ownedCryptoId, + sentMessageObjectID: sentMessage.typedObjectID, + newTextBody: newTextBody ?? "") .postOnDispatchQueue(_self.internalQueue) }) } @@ -1568,7 +1608,7 @@ extension NewSingleDiscussionViewController { // Forward message action if persistedMessage.forwardActionCanBeMadeAvailable { let action = UIAction(title: CommonString.Word.Forward) { [weak self] (_) in - guard let ownedCryptoId = persistedMessage.discussion.ownedIdentity?.cryptoId else { return } + guard let ownedCryptoId = persistedMessage.discussion?.ownedIdentity?.cryptoId else { return } let vc: UIViewController if #available(iOS 16, *) { let viewModel = NewDiscussionsSelectionViewController.ViewModel( @@ -1605,18 +1645,19 @@ extension NewSingleDiscussionViewController { let action = UIAction(title: CommonString.Word.Call) { (_) in guard let systemMessage = persistedMessage as? PersistedMessageSystem else { return } guard let item = systemMessage.optionalCallLogItem else { return } - let groupId = try? item.getGroupIdentifier() + let groupId = item.groupIdentifier - var contactsToCall = [TypeSafeManagedObjectID]() - for logContact in item.logContacts { - guard let contactIdentity = logContact.contactIdentity else { continue } - contactsToCall.append(contactIdentity.typedObjectID) - } - - if contactsToCall.count == 1 { - ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: contactsToCall, groupId: groupId).postOnDispatchQueue() + let contactCryptoIds = item.logContacts.compactMap { $0.contactIdentity?.cryptoId } + let ownedCryptoIds = item.logContacts.compactMap { $0.contactIdentity?.ownedIdentity?.cryptoId } + guard ownedCryptoIds.count == 1 else { assertionFailure(); return } + guard let ownedCryptoId = ownedCryptoIds.first else { return } + + if contactCryptoIds.count == 1 { + ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set(contactCryptoIds), groupId: groupId) + .postOnDispatchQueue() } else { - ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(contactIDs: contactsToCall, groupId: groupId).postOnDispatchQueue() + ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set(contactCryptoIds), groupId: groupId) + .postOnDispatchQueue() } } action.image = UIImage(systemIcon: .phoneFill) @@ -1626,8 +1667,9 @@ extension NewSingleDiscussionViewController { // Delete reaction action if persistedMessage.deleteOwnReactionActionCanBeMadeAvailable { let action = UIAction(title: CommonString.Title.deleteOwnReaction) { (_) in - guard let messageID = cell.persistedMessageObjectID else { return } - ObvMessengerInternalNotification.userWantsToUpdateReaction(messageObjectID: messageID, emoji: nil).postOnDispatchQueue() + guard let ownedCryptoId = persistedMessage.discussion?.ownedIdentity?.cryptoId else { assertionFailure(); return } + ObvMessengerInternalNotification.userWantsToUpdateReaction(ownedCryptoId: ownedCryptoId, messageObjectID: persistedMessage.typedObjectID, newEmoji: nil) + .postOnDispatchQueue() } action.image = UIImage(systemIcon: .heartSlashFill) children.append(action) @@ -1653,10 +1695,11 @@ extension NewSingleDiscussionViewController { /// Helper method called after the user decided to forward a message from this discussion to another. In case the message was forwarded to exactly one discussion, we navigate to that discussion. private func navigateIfAppropriateToDiscussionWhereMessageWasForwarded(discussionPermanentIDs: Set>, persistedMessage: PersistedMessage) { + guard let persistedMessageDiscussion = persistedMessage.discussion else { assertionFailure(); return } if discussionPermanentIDs.count == 1, let discussionPermanentID = discussionPermanentIDs.first, - discussionPermanentID != persistedMessage.discussion.discussionPermanentID, - let ownedCryptoId = persistedMessage.discussion.ownedIdentity?.cryptoId { + discussionPermanentID != persistedMessageDiscussion.discussionPermanentID, + let ownedCryptoId = persistedMessageDiscussion.ownedIdentity?.cryptoId { // We assume the discussion belongs the current owned identity let deepLink = ObvDeepLink.singleDiscussion(ownedCryptoId: ownedCryptoId, objectPermanentID: discussionPermanentID) ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) @@ -1683,7 +1726,7 @@ extension NewSingleDiscussionViewController { case .none: guard let persistedMessage = try? PersistedMessage.get(with: objectId, within: ObvStack.shared.viewContext) else { return } - guard persistedMessage.discussion.typedObjectID == self.discussionObjectID else { return } + guard persistedMessage.discussion?.typedObjectID == self.discussionObjectID else { return } let numberOfAttachedFyles: Int if let persistedMessageSent = persistedMessage as? PersistedMessageSent { @@ -2047,7 +2090,11 @@ extension NewSingleDiscussionViewController { static let shareAttachments = { (count: Int) in return String.localizedStringWithFormat(NSLocalizedString("share count attachments", comment: "Localized dict string allowing to display a title"), count) } - + + static let saveAttachments = { (count: Int) in + return String.localizedStringWithFormat(NSLocalizedString("save count attachments", comment: "Localized dict string allowing to display a title"), count) + } + static var replyingToYourself: String { NSLocalizedString("REPLYING_TO_YOURSELF", comment: "") } @@ -2132,7 +2179,11 @@ extension NewSingleDiscussionViewController { userDidTapOnFyleMessageJoinWithHardLink(hardlinkTapped: hardLink) case .messageThatRequiresUserAction(messageObjectID: let messageObjectID): - ObvMessengerInternalNotification.userWantsToReadReceivedMessagesThatRequiresUserAction(persistedMessageObjectIDs: Set([messageObjectID])) + guard let discussionId = try? discussion.identifier else { assertionFailure(); return } + ObvMessengerInternalNotification.userWantsToReadReceivedMessageThatRequiresUserAction( + ownedCryptoId: currentOwnedCryptoId, + discussionId: discussionId, + messageId: .objectID(objectID: messageObjectID.objectID)) .postOnDispatchQueue() case .receivedFyleMessageJoinWithStatusToResumeDownload(receivedJoinObjectID: let receivedJoinObjectID): @@ -2141,6 +2192,12 @@ extension NewSingleDiscussionViewController { case .receivedFyleMessageJoinWithStatusToPauseDownload(receivedJoinObjectID: let receivedJoinObjectID): NewSingleDiscussionNotification.userWantsToPauseDownloadReceivedFyleMessageJoinWithStatus(receivedJoinObjectID: receivedJoinObjectID).postOnDispatchQueue() + case .sentFyleMessageJoinWithStatusReceivedFromOtherOwnedDeviceToResumeDownload(sentJoinObjectID: let sentJoinObjectID): + NewSingleDiscussionNotification.userWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: sentJoinObjectID).postOnDispatchQueue() + + case .sentFyleMessageJoinWithStatusReceivedFromOtherOwnedDeviceToPauseDownload(sentJoinObjectID: let sentJoinObjectID): + NewSingleDiscussionNotification.userWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: sentJoinObjectID).postOnDispatchQueue() + case .reaction(messageObjectID: let messageObjectID): userTappedOnReactionView(messageObjectID: messageObjectID) @@ -2158,6 +2215,10 @@ extension NewSingleDiscussionViewController { case .systemCellShowingCallLogItemRejectedIncomingCallBecauseOfDeniedRecordPermission: systemCellShowingCallLogItemRejectedIncomingCallBecauseOfDeniedRecordPermissionWasTapped() + case .systemCellShowingCallLogItemRejectedBecauseOfVoIPSettings: + ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: ObvDeepLink.voipSettings) + .postOnDispatchQueue() + case .systemCellShowingUpdatedDiscussionSharedSettings: settingsButtonTapped() @@ -2221,6 +2282,7 @@ extension NewSingleDiscussionViewController { private func userDoubleTappedOnMessage(messageID: TypeSafeManagedObjectID) { guard let message = try? PersistedMessage.get(with: messageID, within: ObvStack.shared.viewContext) else { return } + guard let ownedCryptoId = message.discussion?.ownedIdentity?.cryptoId else { return } guard !message.isWiped else { return } guard (try? message.ownedIdentityIsAllowedToSetReaction) == true else { return } var selectedEmoji: String? @@ -2228,15 +2290,27 @@ extension NewSingleDiscussionViewController { selectedEmoji = ownReaction.emoji } let model = EmojiPickerViewModel(selectedEmoji: selectedEmoji) { emoji in - ObvMessengerInternalNotification.userWantsToUpdateReaction(messageObjectID: messageID, emoji: emoji).postOnDispatchQueue() + ObvMessengerInternalNotification.userWantsToUpdateReaction(ownedCryptoId: ownedCryptoId, messageObjectID: messageID, newEmoji: emoji) + .postOnDispatchQueue() } let vc = EmojiPickerHostingViewController(model: model) - if let sheet = vc.sheetPresentationController { - sheet.detents = [ .medium() ] - sheet.prefersGrabberVisible = true - sheet.preferredCornerRadius = 30.0 + + if ObvMessengerConstants.targetEnvironmentIsMacCatalyst { + + let nav = UINavigationController(rootViewController: vc) + present(nav, animated: true) + + } else { + + if let sheet = vc.sheetPresentationController { + sheet.detents = [ .medium() ] + sheet.prefersGrabberVisible = true + sheet.preferredCornerRadius = 30.0 + } + present(vc, animated: true) + } - present(vc, animated: true) + } @@ -2247,12 +2321,23 @@ extension NewSingleDiscussionViewController { assertionFailure() return } - if let sheet = vc.sheetPresentationController { - sheet.detents = [ .medium(), .large() ] - sheet.prefersGrabberVisible = true - sheet.preferredCornerRadius = 30.0 + + if ObvMessengerConstants.targetEnvironmentIsMacCatalyst { + + let nav = UINavigationController(rootViewController: vc) + present(nav, animated: true) + + } else { + + if let sheet = vc.sheetPresentationController { + sheet.detents = [ .medium(), .large() ] + sheet.prefersGrabberVisible = true + sheet.preferredCornerRadius = 30.0 + } + present(vc, animated: true) + } - present(vc, animated: true) + } @@ -2404,8 +2489,7 @@ extension NewSingleDiscussionViewController: AudioPlayerViewDelegate { // MARK: - TextBubbleDelegate -@available(iOS 15.0, *) -extension NewSingleDiscussionViewController: TextBubbleDelegate { +extension NewSingleDiscussionViewController { func textBubble(_ textBubble: TextBubble, userDidTapOn mentionableIdentity: any MentionableIdentity) { delegate?.singleDiscussionViewController(self, userDidTapOn: mentionableIdentity) } @@ -2564,26 +2648,51 @@ extension NewSingleDiscussionViewController: DiscussionsSelectionViewControllerD } -@available(iOS 15.0, *) -extension NewSingleDiscussionViewController: AttachmentsDropViewDelegate { - func attachmentsDropViewShouldBegingDropSession(_ view: AttachmentsDropView) -> Bool { - assert(Thread.isMainThread) - - guard let discussion = try? PersistedDiscussion.get(objectID: discussionObjectID, within: ObvStack.shared.viewContext) else { return false } - switch discussion.status { - case .preDiscussion, - .locked: - return false +// MARK: - UICollectionViewDropDelegate - case .active: - return true +extension NewSingleDiscussionViewController { + + func collectionView(_ collectionView: UICollectionView, canHandle session: UIDropSession) -> Bool { + debugPrint("🫵 \(self.debugDescription) canHandle") + guard !isDragSessionInProgress else { return false } + return true + } + + func collectionView(_ collectionView: UICollectionView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -> UICollectionViewDropProposal { + guard !isDragSessionInProgress else { + return UICollectionViewDropProposal(operation: .forbidden) } + return UICollectionViewDropProposal(operation: .copy) } - func attachmentsDropView(_ view: AttachmentsDropView, didDrop items: [NSItemProvider]) { - assert(Thread.isMainThread) - composeMessageView.addAttachments(from: items) + func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator) { + + let itemProviders = coordinator.items.map(\.dragItem.itemProvider) + Task { + await composeMessageView.addAttachments(from: itemProviders, attachAllItems: true) + } + + } + +} + + +// MARK: - UICollectionViewDragDelegate + +extension NewSingleDiscussionViewController { + + func collectionView(_ collectionView: UICollectionView, dragSessionWillBegin session: UIDragSession) { + isDragSessionInProgress = true + } + + func collectionView(_ collectionView: UICollectionView, dragSessionDidEnd session: UIDragSession) { + isDragSessionInProgress = false + } + + func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] { + guard let cell = collectionView.cellForItem(at: indexPath) as? CellWithMessage else { return [] } + return cell.uiDragItemsForAllAttachments ?? [] } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionSettings/DiscussionSettingsHostingViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionSettings/DiscussionSettingsHostingViewController.swift similarity index 92% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionSettings/DiscussionSettingsHostingViewController.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionSettings/DiscussionSettingsHostingViewController.swift index 6c59d70a..1009dfcd 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionSettings/DiscussionSettingsHostingViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionSettings/DiscussionSettingsHostingViewController.swift @@ -17,7 +17,6 @@ * along with Olvid. If not, see . */ - import CoreData import Combine import os.log @@ -26,6 +25,8 @@ import SwiftUI import ObvUICoreData import UI_SystemIcon import UI_SystemIcon_SwiftUI +import ObvSettings +import ObvDesignSystem final class DiscussionSettingsHostingViewController: UIHostingController, DiscussionExpirationSettingsViewModelDelegate { @@ -99,7 +100,13 @@ final class DiscussionExpirationSettingsViewModel: ObservableObject { } func updateSharedConfiguration(with value: PersistedDiscussionSharedConfigurationValue) { - try? value.updatePersistedDiscussionSharedConfigurationValue(with: sharedConfigurationInScratchViewContext, initiatorAsOwnedCryptoId: ownedIdentityInViewContext.cryptoId) + guard let discussionId = try? sharedConfigurationInScratchViewContext.discussion?.identifier else { + assertionFailure() + return + } + _ = try? ownedIdentityInViewContext.replaceDiscussionSharedConfigurationSentByThisOwnedIdentity( + with: value.toExpirationJSON(overriding: sharedConfigurationInScratchViewContext), + inDiscussionWithId: discussionId) withAnimation { self.changed.toggle() } @@ -107,7 +114,7 @@ final class DiscussionExpirationSettingsViewModel: ObservableObject { func dismissAction(sendNewSharedConfiguration: Bool?) { assert(Thread.isMainThread) - guard let discussionObjectID = sharedConfigurationInScratchViewContext.discussion?.objectID else { + guard let discussionId = try? sharedConfigurationInScratchViewContext.discussion?.identifier else { delegate?.dismissAction() return } @@ -134,9 +141,9 @@ final class DiscussionExpirationSettingsViewModel: ObservableObject { if confirmed { let expirationJSON = sharedConfigurationInScratchViewContext.toExpirationJSON() ObvMessengerInternalNotification.userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration( - persistedDiscussionObjectID: discussionObjectID, - expirationJSON: expirationJSON, - ownedCryptoId: ownedIdentityInViewContext.cryptoId) + ownedCryptoId: ownedIdentityInViewContext.cryptoId, + discussionId: discussionId, + expirationJSON: expirationJSON) .postOnDispatchQueue() } delegate?.dismissAction() @@ -402,13 +409,13 @@ fileprivate struct DiscussionExpirationSettingsView: View { muteNotificationsDuration.set(nil) } }) { - ObvLabel("MUTE_NOTIFICATIONS", systemImage: ObvMessengerConstants.muteIcon.systemName) + Label("MUTE_NOTIFICATIONS", systemImage: ObvMessengerConstants.muteIcon.systemName) } } Section(footer: Text("discussion-expiration-settings-view.body.section.mention-notification-mode.picker.footer.title")) { Picker(selection: mentionNotificationMode.binding, - label: ObvLabel("discussion-expiration-settings-view.body.section.mention-notification-mode.picker.title", systemIcon: .bell(.fill))) { + label: Label("discussion-expiration-settings-view.body.section.mention-notification-mode.picker.title", systemIcon: .bell(.fill))) { ForEach(DiscussionMentionNotificationMode.allCases) { value in Text(value.displayTitle(globalOptions: ObvMessengerSettings.Discussions.notificationOptions)) @@ -418,7 +425,7 @@ fileprivate struct DiscussionExpirationSettingsView: View { } Section(footer: Text("SEND_READ_RECEIPT_SECTION_FOOTER")) { - Picker(selection: doSendReadReceipt.binding, label: ObvLabel("SEND_READ_RECEIPTS_LABEL", systemImage: "eye.fill")) { + Picker(selection: doSendReadReceipt.binding, label: Label("SEND_READ_RECEIPTS_LABEL", systemImage: "eye.fill")) { ForEach(OptionalBoolType.allCases) { optionalBool in switch optionalBool { case .none: @@ -433,7 +440,7 @@ fileprivate struct DiscussionExpirationSettingsView: View { } } Section { - Picker(selection: doFetchContentRichURLsMetadata.binding, label: ObvLabel("SHOW_RICH_LINK_PREVIEW_LABEL", systemImage: "text.below.photo.fill")) { + Picker(selection: doFetchContentRichURLsMetadata.binding, label: Label("SHOW_RICH_LINK_PREVIEW_LABEL", systemImage: "text.below.photo.fill")) { ForEach(OptionalFetchContentRichURLsMetadataChoice.allCases) { value in switch value { case .none: @@ -448,9 +455,7 @@ fileprivate struct DiscussionExpirationSettingsView: View { } } } - if #available(iOS 15.0, *) { - ChangeDefaultEmojiView(defaultEmoji: defaultEmoji.binding) - } + ChangeDefaultEmojiView(defaultEmoji: defaultEmoji.binding) Section { NotificationSoundPicker(selection: notificationSound.binding, showDefault: true) { sound -> Text in switch sound { @@ -458,7 +463,8 @@ fileprivate struct DiscussionExpirationSettingsView: View { if let globalNotificationSound = ObvMessengerSettings.Discussions.notificationSound { return Text("\(CommonString.Word.Default) (\(globalNotificationSound.description))") } else { - return Text("\(CommonString.Word.Default) (_\(CommonString.Title.systemSound)_)") + let systemSound = (try? AttributedString(markdown: "_\(CommonString.Title.systemSound)_")) ?? AttributedString(CommonString.Title.systemSound) + return Text("\(CommonString.Word.Default) (\(systemSound))") } case .some(let sound): if sound == .system { @@ -471,7 +477,7 @@ fileprivate struct DiscussionExpirationSettingsView: View { } } Section(footer: Text("PERFORM_INTERACTION_DONATION_FOR_THIS_DISCUSSION_FOOTER")) { - Picker(selection: performInteractionDonation.binding, label: ObvLabel("PERFORM_INTERACTION_DONATION_FOR_THIS_DISCUSSION_LABEL", systemIcon: .squareAndArrowUp)) { + Picker(selection: performInteractionDonation.binding, label: Label("PERFORM_INTERACTION_DONATION_FOR_THIS_DISCUSSION_LABEL", systemIcon: .squareAndArrowUp)) { ForEach(OptionalBoolType.allCases) { optionalBool in switch optionalBool { case .none: @@ -495,7 +501,7 @@ fileprivate struct DiscussionExpirationSettingsView: View { .font(.callout) } Section(footer: Text("COUNT_BASED_SINGLE_DISCUSSION_SECTION_FOOTER")) { - Picker(selection: countBasedRetentionIsActive.binding, label: ObvLabel("COUNT_BASED_LABEL", systemImage: "number")) { + Picker(selection: countBasedRetentionIsActive.binding, label: Label("COUNT_BASED_LABEL", systemImage: "number")) { ForEach(OptionalBoolType.allCases) { optionalBool in switch optionalBool { case .none: @@ -528,7 +534,7 @@ fileprivate struct DiscussionExpirationSettingsView: View { } } Section(footer: Text("TIME_BASED_SINGLE_DISCUSSION_SECTION_FOOTER")) { - Picker(selection: timeBasedRetention.binding, label: ObvLabel("TIME_BASED_LABEL", systemImage: "calendar.badge.clock")) { + Picker(selection: timeBasedRetention.binding, label: Label("TIME_BASED_LABEL", systemImage: "calendar.badge.clock")) { ForEach(DurationOptionAltOverride.allCases) { durationOverride in switch durationOverride { case .useAppDefault: @@ -555,7 +561,7 @@ fileprivate struct DiscussionExpirationSettingsView: View { .font(.callout) } Section(footer: Text("AUTO_READ_SECTION_FOOTER")) { - Picker(selection: autoRead.binding, label: ObvLabel("AUTO_READ_LABEL", systemImage: "hand.tap.fill")) { + Picker(selection: autoRead.binding, label: Label("AUTO_READ_LABEL", systemImage: "hand.tap.fill")) { ForEach(OptionalBoolType.allCases) { optionalBool in switch optionalBool { case .none: @@ -570,7 +576,7 @@ fileprivate struct DiscussionExpirationSettingsView: View { } } Section(footer: Text("RETAIN_WIPED_OUTBOUND_MESSAGES_SECTION_FOOTER")) { - Picker(selection: retainWipedOutboundMessages.binding, label: ObvLabel("RETAIN_WIPED_OUTBOUND_MESSAGES_LABEL", systemImage: "trash.slash")) { + Picker(selection: retainWipedOutboundMessages.binding, label: Label("RETAIN_WIPED_OUTBOUND_MESSAGES_LABEL", systemImage: "trash.slash")) { ForEach(OptionalBoolType.allCases) { optionalBool in switch optionalBool { case .none: @@ -604,18 +610,18 @@ fileprivate struct DiscussionExpirationSettingsView: View { } Section(footer: Text("READ_ONCE_SECTION_FOOTER")) { Toggle(isOn: readOnce.binding) { - ObvLabel("READ_ONCE_LABEL", systemImage: "flame.fill") + Label("READ_ONCE_LABEL", systemImage: "flame.fill") }.disabled(!sharedConfigCanBeModified) } Section(footer: Text("LIMITED_VISIBILITY_SECTION_FOOTER")) { - Picker(selection: visibilityDurationOption.binding, label: ObvLabel("LIMITED_VISIBILITY_LABEL", systemImage: "eyes")) { + Picker(selection: visibilityDurationOption.binding, label: Label("LIMITED_VISIBILITY_LABEL", systemImage: "eyes")) { ForEach(DurationOption.allCases) { duration in Text(duration.description).tag(duration) } }.disabled(!sharedConfigCanBeModified) } Section(footer: Text("LIMITED_EXISTENCE_SECTION_FOOTER")) { - Picker(selection: existenceDurationOption.binding, label: ObvLabel("LIMITED_EXISTENCE_SECTION_LABEL", systemImage: "timer")) { + Picker(selection: existenceDurationOption.binding, label: Label("LIMITED_EXISTENCE_SECTION_LABEL", systemImage: "timer")) { ForEach(DurationOption.allCases) { duration in Text(duration.description).tag(duration) } @@ -754,58 +760,17 @@ struct DiscussionExpirationSettingsView_Previews: PreviewProvider { } -struct ObvLabel: View { - - let title: LocalizedStringKey - let systemImage: String - - init(_ title: LocalizedStringKey, systemImage: String) { - self.title = title - self.systemImage = systemImage - } - - init(_ title: LocalizedStringKey, systemIcon: SystemIcon) { - self.title = title - self.systemImage = systemIcon.systemName - } - - var body: some View { - Group { - if #available(iOS 14, *) { - Label(title, systemImage: systemImage) - } else { - HStack(alignment: .firstTextBaseline) { - Image(systemName: systemImage) - .foregroundColor(.blue) - Text(title) - } - } - } - } - -} - - struct ObvLabelAlt: View { let title: String let systemIcon: SystemIcon var body: some View { - if #available(iOS 14, *) { - HStack(alignment: .firstTextBaseline) { - Label(title, systemIcon: systemIcon) - Spacer(minLength: 0) - } - .font(.body) - } else { - HStack(alignment: .firstTextBaseline) { - Image(systemIcon: systemIcon) - Text(title) - Spacer(minLength: 0) - } - .font(.body) + HStack(alignment: .firstTextBaseline) { + Label(title, systemImage: systemIcon.systemName) + Spacer(minLength: 0) } + .font(.body) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionSettings/DraftExpirationSettings.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionSettings/DraftExpirationSettings.swift similarity index 97% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionSettings/DraftExpirationSettings.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionSettings/DraftExpirationSettings.swift index 43ba9f85..6f16b2c9 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionSettings/DraftExpirationSettings.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionSettings/DraftExpirationSettings.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,6 +21,7 @@ import Foundation import SwiftUI import CoreData import ObvUICoreData +import ObvSettings @available(iOS 15, *) @@ -253,16 +254,16 @@ fileprivate struct DraftExpirationSettingsView: View { Section { Toggle(isOn: readOnce.binding) { - ObvLabel("READ_ONCE_LABEL", systemImage: "flame.fill") + Label("READ_ONCE_LABEL", systemImage: "flame.fill") }.disabled(discussionReadOnce) - Picker(selection: visibilityDurationOption.binding, label: ObvLabel("LIMITED_VISIBILITY_LABEL", systemImage: "eyes")) { + Picker(selection: visibilityDurationOption.binding, label: Label("LIMITED_VISIBILITY_LABEL", systemImage: "eyes")) { ForEach(filterDuration(maximum: maximumVisiblityDuration)) { duration in Text(duration.description).tag(duration) } } - Picker(selection: existenceDurationOption.binding, label: ObvLabel("LIMITED_EXISTENCE_SECTION_LABEL", systemImage: "timer")) { + Picker(selection: existenceDurationOption.binding, label: Label("LIMITED_EXISTENCE_SECTION_LABEL", systemImage: "timer")) { ForEach(filterDuration(maximum: maximumExistenceDuration)) { duration in Text(duration.description).tag(duration) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionTitleView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionTitleView.swift index 144c0beb..989fe46b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionTitleView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionTitleView.swift @@ -70,11 +70,7 @@ final class SingleDiscussionTitleView: UIView { let names = group.contactIdentities .sorted { $0.customOrShortDisplayName < $1.customOrShortDisplayName } .compactMap({ $0.customOrShortDisplayName }) - if #available(iOS 15, *) { - subtitle = names.formatted(.list(type: .and, width: .short)) - } else { - subtitle = names.joined(separator: ", ") - } + subtitle = names.formatted(.list(type: .and, width: .short)) self.init(title: title, subtitle: subtitle) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionViewControllerDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionViewControllerDelegate.swift similarity index 100% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionViewControllerDelegate.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SingleDiscussionViewControllerDelegate.swift diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SomeSingleDiscussionViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SomeSingleDiscussionViewController.swift index ef0fe0cb..358e2476 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SomeSingleDiscussionViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/SomeSingleDiscussionViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/CellWithMessage.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CellWithMessage.swift similarity index 77% rename from iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/CellWithMessage.swift rename to iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CellWithMessage.swift index 0c840ffb..7d6db194 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/CellWithMessage.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CellWithMessage.swift @@ -32,8 +32,18 @@ protocol CellWithMessage: UICollectionViewCell { var fyleMessagesJoinWithStatus: [FyleMessageJoinWithStatus]? { get } // Legacy, used within the old discussion screen, replaced by itemProvidersForAllAttachments var imageAttachments: [FyleMessageJoinWithStatus]? { get } // Legacy, used within the old discussion screen, replaced by itemProvidersForImages var itemProvidersForImages: [UIActivityItemProvider]? { get } - var itemProvidersForAllAttachments: [UIActivityItemProvider]? { get } + var activityItemProvidersForAllAttachments: [UIActivityItemProvider]? { get } + var itemProvidersForAllAttachments: [NSItemProvider]? { get } + var uiDragItemsForAllAttachments: [UIDragItem]? { get } + var sizeForUIDragItemPreview: CGSize { get } + var hardlinkURLsForAllAttachments: [URL]? { get } var infoViewController: UIViewController? { get } } + +extension CellWithMessage { + + var sizeForUIDragItemPreview: CGSize { .init(width: 50, height: 50) } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/AttachmentsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/AttachmentsView.swift index 3bcb1057..7f952686 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/AttachmentsView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/AttachmentsView.swift @@ -34,6 +34,9 @@ final class AttachmentsView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithE case downloading(receivedJoinObjectID: TypeSafeManagedObjectID, progress: Progress, fileSize: Int, uti: String, filename: String?) case completeButReadRequiresUserInteraction(messageObjectID: TypeSafeManagedObjectID, fileSize: Int, uti: String) case cancelledByServer(fileSize: Int, uti: String, filename: String?) + // For received attachments sent from other owned device + case downloadableSent(sentJoinObjectID: TypeSafeManagedObjectID, progress: Progress, fileSize: Int, uti: String, filename: String?) + case downloadingSent(sentJoinObjectID: TypeSafeManagedObjectID, progress: Progress, fileSize: Int, uti: String, filename: String?) // For both case complete(hardlink: HardLinkToFyle?, thumbnail: UIImage?, fileSize: Int, uti: String, filename: String?, wasOpened: Bool?) @@ -42,7 +45,7 @@ final class AttachmentsView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithE case .complete(hardlink: let hardlink, thumbnail: _, fileSize: _, uti: _, filename: _, wasOpened: _), .uploadableOrUploading(hardlink: let hardlink, thumbnail: _, fileSize: _, uti: _, filename: _, progress: _): return hardlink - case .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer: + case .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer, .downloadableSent, .downloadingSent: return nil } } @@ -137,6 +140,13 @@ final class AttachmentsView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithE imageView.reset() setTitleOnSubtitleView(titleView, filename: filename) setSubtitleOnSubtitleView(subtitleView, fileSize: fileSize, uti: uti) + case .downloadableSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, fileSize: let fileSize, uti: let uti, filename: let filename): + tapToReadView.isHidden = true + fyleProgressView.setConfiguration(.downloadableSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + tapToReadView.messageObjectID = nil + imageView.reset() + setTitleOnSubtitleView(titleView, filename: filename) + setSubtitleOnSubtitleView(subtitleView, fileSize: fileSize, uti: uti) case .downloading(receivedJoinObjectID: let receivedJoinObjectID, progress: let progress, fileSize: let fileSize, uti: let uti, filename: let filename): tapToReadView.isHidden = true fyleProgressView.setConfiguration(.downloading(receivedJoinObjectID: receivedJoinObjectID, progress: progress)) @@ -144,6 +154,13 @@ final class AttachmentsView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithE imageView.reset() setTitleOnSubtitleView(titleView, filename: filename) setSubtitleOnSubtitleView(subtitleView, fileSize: fileSize, uti: uti) + case .downloadingSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, fileSize: let fileSize, uti: let uti, filename: let filename): + tapToReadView.isHidden = true + fyleProgressView.setConfiguration(.downloadingSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + tapToReadView.messageObjectID = nil + imageView.reset() + setTitleOnSubtitleView(titleView, filename: filename) + setSubtitleOnSubtitleView(subtitleView, fileSize: fileSize, uti: uti) case .completeButReadRequiresUserInteraction(messageObjectID: let messageObjectID, fileSize: let fileSize, uti: let uti): tapToReadView.isHidden = false fyleProgressView.setConfiguration(.complete) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/AudioPlayerView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/AudioPlayerView.swift index 721bc5df..76126369 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/AudioPlayerView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/AudioPlayerView.swift @@ -27,23 +27,28 @@ fileprivate extension AudioPlayerView.Configuration { var canReadAudio: Bool { switch self { - case .complete: return true - case .uploadableOrUploading, .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer: + case .complete: + return true + case .uploadableOrUploading, .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer, .downloadableSent, .downloadingSent: return false } } var tapToReadViewIsHidden: Bool { switch self { - case .completeButReadRequiresUserInteraction: return false - case .uploadableOrUploading, .downloadable, .downloading, .cancelledByServer, .complete: return true + case .completeButReadRequiresUserInteraction: + return false + case .uploadableOrUploading, .downloadable, .downloading, .cancelledByServer, .complete, .downloadableSent, .downloadingSent: + return true } } var messageObjectID: TypeSafeManagedObjectID? { switch self { - case .completeButReadRequiresUserInteraction(messageObjectID: let messageObjectID, fileSize: _, uti: _): return messageObjectID - case .uploadableOrUploading, .downloadable, .downloading, .cancelledByServer, .complete: return nil + case .completeButReadRequiresUserInteraction(messageObjectID: let messageObjectID, fileSize: _, uti: _): + return messageObjectID + case .uploadableOrUploading, .downloadable, .downloading, .cancelledByServer, .complete, .downloadableSent, .downloadingSent: + return nil } } @@ -52,7 +57,8 @@ fileprivate extension AudioPlayerView.Configuration { case .complete(hardlink: let hardlink, _, _, _, _, _): guard let url = hardlink?.hardlinkURL else { return nil } return ObvAudioPlayer.duration(of: url) - case .uploadableOrUploading, .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer: return nil + case .uploadableOrUploading, .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer, .downloadableSent, .downloadingSent: + return nil } } @@ -60,7 +66,7 @@ fileprivate extension AudioPlayerView.Configuration { switch self { case .complete(_, _, _, _, _, wasOpened: let wasOpened): return wasOpened - case .uploadableOrUploading, .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer: + case .uploadableOrUploading, .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer, .downloadableSent, .downloadingSent: return nil } } @@ -166,10 +172,18 @@ final class AudioPlayerView: ViewForOlvidStack, ObvAudioPlayerDelegate, ViewWith fyleProgressView.setConfiguration(.downloadable(receivedJoinObjectID: receivedJoinObjectID, progress: progress)) setTitle(filename: filename) setSubtitle(fileSize: fileSize, uti: uti) + case .downloadableSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, fileSize: let fileSize, uti: let uti, filename: let filename): + fyleProgressView.setConfiguration(.downloadableSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + setTitle(filename: filename) + setSubtitle(fileSize: fileSize, uti: uti) case .downloading(receivedJoinObjectID: let receivedJoinObjectID, progress: let progress, fileSize: let fileSize, uti: let uti, filename: let filename): fyleProgressView.setConfiguration(.downloading(receivedJoinObjectID: receivedJoinObjectID, progress: progress)) setTitle(filename: filename) setSubtitle(fileSize: fileSize, uti: uti) + case .downloadingSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, fileSize: let fileSize, uti: let uti, filename: let filename): + fyleProgressView.setConfiguration(.downloadingSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + setTitle(filename: filename) + setSubtitle(fileSize: fileSize, uti: uti) case .completeButReadRequiresUserInteraction(messageObjectID: _, fileSize: let fileSize, uti: let uti): fyleProgressView.setConfiguration(.complete) setTitle(filename: nil) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MissedMessageBubbleView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MissedMessageBubbleView.swift index 7613bc15..6e093098 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MissedMessageBubbleView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MissedMessageBubbleView.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + /// This view displays the count of missed messages. final class MissedMessageBubble: ViewForOlvidStack, ViewWithMaskedCorners, UIViewWithTappableStuff { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MultipleImagesView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MultipleImagesView.swift index d53cd6ba..ab8e26ad 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MultipleImagesView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MultipleImagesView.swift @@ -133,6 +133,15 @@ final class MultipleImagesView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWi } else { imageView.reset() } + case .downloadableSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, downsizedThumbnail: let downsizedThumbnail): + tapToReadView.isHidden = true + fyleProgressView.setConfiguration(.downloadableSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + tapToReadView.messageObjectID = nil + if let downsizedThumbnail = downsizedThumbnail { + imageView.setDownsizedThumbnail(withImage: downsizedThumbnail) + } else { + imageView.reset() + } case .downloading(receivedJoinObjectID: let receivedJoinObjectID, progress: let progress, downsizedThumbnail: let downsizedThumbnail): tapToReadView.isHidden = true fyleProgressView.setConfiguration(.downloading(receivedJoinObjectID: receivedJoinObjectID, progress: progress)) @@ -142,6 +151,15 @@ final class MultipleImagesView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWi } else { imageView.reset() } + case .downloadingSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, downsizedThumbnail: let downsizedThumbnail): + tapToReadView.isHidden = true + fyleProgressView.setConfiguration(.downloadingSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + tapToReadView.messageObjectID = nil + if let downsizedThumbnail = downsizedThumbnail { + imageView.setDownsizedThumbnail(withImage: downsizedThumbnail) + } else { + imageView.reset() + } case .completeButReadRequiresUserInteraction(messageObjectID: let messageObjectID): tapToReadView.isHidden = false fyleProgressView.setConfiguration(.complete) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MultipleReactionsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MultipleReactionsView.swift index 38816d8e..829db675 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MultipleReactionsView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/MultipleReactionsView.swift @@ -20,6 +20,7 @@ import ObvUI import UIKit import ObvUICoreData +import ObvDesignSystem struct ReactionAndCount: Equatable, Hashable, Comparable, Identifiable { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/ReplyToBubbleView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/ReplyToBubbleView.swift index 135728ef..5e9f2f38 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/ReplyToBubbleView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/ReplyToBubbleView.swift @@ -105,7 +105,7 @@ final class ReplyToBubbleView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWit switch config { case .loading: - bodyLabel.text = MessageCollectionViewCell.Strings.replyToMessageUnavailable + bodyLabel.text = Self.Strings.replyToMessageUnavailable bodyLabel.textColor = UIColor.secondaryLabel bodyLabel.showInStack = true nameLabel.text = nil @@ -116,7 +116,7 @@ final class ReplyToBubbleView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWit imageView.reset() imageView.showInStack = false case .messageWasDeleted: - bodyLabel.text = MessageCollectionViewCell.Strings.replyToMessageWasDeleted + bodyLabel.text = Self.Strings.replyToMessageWasDeleted bodyLabel.textColor = UIColor.secondaryLabel bodyLabel.showInStack = true nameLabel.text = nil @@ -333,6 +333,14 @@ final class ReplyToBubbleView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWit } } +// static let seeAttachments = { (count: Int) in +// return String.localizedStringWithFormat(NSLocalizedString("see count attachments", comment: "Number of attachments"), count) +// } + + static let replyToMessageWasDeleted = NSLocalizedString("Deleted message", comment: "Body displayed when a reply-to message was deleted.") + + static let replyToMessageUnavailable = NSLocalizedString("UNAVAILABLE_MESSAGE", comment: "Body displayed when a reply-to message cannot be found.") + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SentMessageStatusAndDateView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SentMessageStatusAndDateView.swift index 9db733cb..f259cc68 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SentMessageStatusAndDateView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SentMessageStatusAndDateView.swift @@ -57,6 +57,7 @@ final class SentMessageStatusAndDateView: ViewForOlvidStack { case .read: return .eyeFill case .couldNotBeSentToOneOrMoreRecipients: return .exclamationmarkCircle case .hasNoRecipient: return .iphoneGen3CircleFill + case .sentFromAnotherOwnedDevice: return .iphoneGen3CircleFill } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SingleGifView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SingleGifView.swift index e12f483b..b268549d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SingleGifView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SingleGifView.swift @@ -66,12 +66,24 @@ final class SingleGifView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithExp tapToReadView.messageObjectID = nil removeImageURL() bubble.backgroundColor = .systemFill + case .downloadableSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, downsizedThumbnail: _): + tapToReadView.isHidden = true + fyleProgressView.setConfiguration(.downloadableSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + tapToReadView.messageObjectID = nil + removeImageURL() + bubble.backgroundColor = .systemFill case .downloading(receivedJoinObjectID: let receivedJoinObjectID, progress: let progress, downsizedThumbnail: _): tapToReadView.isHidden = true fyleProgressView.setConfiguration(.downloading(receivedJoinObjectID: receivedJoinObjectID, progress: progress)) tapToReadView.messageObjectID = nil removeImageURL() bubble.backgroundColor = .systemFill + case .downloadingSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, downsizedThumbnail: _): + tapToReadView.isHidden = true + fyleProgressView.setConfiguration(.downloadingSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + tapToReadView.messageObjectID = nil + removeImageURL() + bubble.backgroundColor = .systemFill case .completeButReadRequiresUserInteraction(messageObjectID: let messageObjectID): tapToReadView.isHidden = false fyleProgressView.setConfiguration(.complete) @@ -176,12 +188,7 @@ final class SingleGifView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithExp return } let duration = gifDelayTimes.map({ $0.doubleValue }).reduce(0, +) - let animatedImage: UIImage? - if #available(iOS 15.0, *) { - animatedImage = await UIImage.animatedImage(with: images, duration: duration)?.byPreparingForDisplay() - } else { - animatedImage = UIImage.animatedImage(with: images, duration: duration) - } + let animatedImage = await UIImage.animatedImage(with: images, duration: duration)?.byPreparingForDisplay() DispatchQueue.main.async { [weak self] in guard localRefreshId == self?.currentRefreshId else { return } self?.imageView.image = animatedImage diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SingleImageView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SingleImageView.swift index a85d186d..29b739d4 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SingleImageView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/SingleImageView.swift @@ -34,6 +34,9 @@ final class SingleImageView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithE case downloading(receivedJoinObjectID: TypeSafeManagedObjectID, progress: Progress, downsizedThumbnail: UIImage?) case completeButReadRequiresUserInteraction(messageObjectID: TypeSafeManagedObjectID) case cancelledByServer // Also used when there is an error with the Fyle URL + // For received attachments sent from other owned device + case downloadableSent(sentJoinObjectID: TypeSafeManagedObjectID, progress: Progress, downsizedThumbnail: UIImage?) + case downloadingSent(sentJoinObjectID: TypeSafeManagedObjectID, progress: Progress, downsizedThumbnail: UIImage?) // For both (downsizedThumbnail always nil for sent attachments) case complete(downsizedThumbnail: UIImage?, hardlink: HardLinkToFyle?, thumbnail: UIImage?) @@ -41,7 +44,7 @@ final class SingleImageView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithE switch self { case .complete(downsizedThumbnail: _, hardlink: let hardlink, thumbnail: _), .uploadableOrUploading(hardlink: let hardlink, thumbnail: _, progress: _): return hardlink - case .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer: + case .downloadable, .downloading, .completeButReadRequiresUserInteraction, .cancelledByServer, .downloadableSent, .downloadingSent: return nil } } @@ -89,6 +92,18 @@ final class SingleImageView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithE imageView.reset() } bubble.backgroundColor = .systemFill + case .downloadableSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, downsizedThumbnail: let downsizedThumbnail): + tapToReadView.isHidden = true + fyleProgressView.setConfiguration(.downloadableSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + tapToReadView.messageObjectID = nil + if let downsizedThumbnail = downsizedThumbnail { + hidingView.isHidden = true + imageView.setDownsizedThumbnail(withImage: downsizedThumbnail) + } else { + hidingView.isHidden = false + imageView.reset() + } + bubble.backgroundColor = .systemFill case .downloading(receivedJoinObjectID: let receivedJoinObjectID, progress: let progress, downsizedThumbnail: let downsizedThumbnail): tapToReadView.isHidden = true fyleProgressView.setConfiguration(.downloading(receivedJoinObjectID: receivedJoinObjectID, progress: progress)) @@ -101,6 +116,18 @@ final class SingleImageView: ViewForOlvidStack, ViewWithMaskedCorners, ViewWithE imageView.reset() } bubble.backgroundColor = .systemFill + case .downloadingSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress, downsizedThumbnail: let downsizedThumbnail): + tapToReadView.isHidden = true + fyleProgressView.setConfiguration(.downloadingSent(sentJoinObjectID: sentJoinObjectID, progress: progress)) + tapToReadView.messageObjectID = nil + if let downsizedThumbnail = downsizedThumbnail { + hidingView.isHidden = true + imageView.setDownsizedThumbnail(withImage: downsizedThumbnail) + } else { + hidingView.isHidden = false + imageView.reset() + } + bubble.backgroundColor = .systemFill case .completeButReadRequiresUserInteraction(messageObjectID: let messageObjectID): tapToReadView.isHidden = false hidingView.isHidden = false diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/TextBubble.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/TextBubble.swift index 5d046ef4..0679b09a 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/TextBubble.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/CommonCellSubviews/TextBubble.swift @@ -286,7 +286,6 @@ private extension UITextView { return _textkit1_userIdentity(for: point) } - @available(iOS, deprecated: 15, message: "Please remove me and use the TextKit 2 implementation") private func _textkit1_userIdentity(for point: CGPoint) -> MentionableIdentity? { let glyphIndex = layoutManager.glyphIndex(for: point, in: textContainer) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/Protocols/DiscussionCacheDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/Protocols/DiscussionCacheDelegate.swift index dfb1a755..6cf0d6f6 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/Protocols/DiscussionCacheDelegate.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/Protocols/DiscussionCacheDelegate.swift @@ -44,9 +44,9 @@ protocol DiscussionCacheDelegate: AnyObject { func requestReplyToBubbleViewConfiguration(message: PersistedMessage, completionWhenCellNeedsUpdateConfiguration: @escaping () -> Void) -> ReplyToBubbleView.Configuration? // Downsized thumbnails - func getCachedDownsizedThumbnail(objectID: TypeSafeManagedObjectID) -> UIImage? - func removeCachedDownsizedThumbnail(objectID: TypeSafeManagedObjectID) - func requestDownsizedThumbnail(objectID: TypeSafeManagedObjectID, data: Data, completionWhenImageCached: @escaping ((Result) -> Void)) + func getCachedDownsizedThumbnail(objectID: TypeSafeManagedObjectID) -> UIImage? + func removeCachedDownsizedThumbnail(objectID: TypeSafeManagedObjectID) + func requestDownsizedThumbnail(objectID: TypeSafeManagedObjectID, data: Data, completionWhenImageCached: @escaping ((Result) -> Void)) // Images (and thumbnails) for FyleMessageJoinWithStatus func getCachedPreparedImage(for objectID: TypeSafeManagedObjectID, size: CGSize) -> UIImage? diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/ReceivedMessageCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/ReceivedMessageCell.swift index b9e9e19e..0f1e57a5 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/ReceivedMessageCell.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/ReceivedMessageCell.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,7 +23,10 @@ import CoreData import os.log import ObvUI import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvSettings +import ObvDesignSystem + @available(iOS 14.0, *) final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageCellShowingHardLinks, UIViewWithTappableStuff, CellWithPersistedMessageReceived { @@ -94,7 +97,8 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC override func updateConfiguration(using state: UICellConfigurationState) { // 2022-06-20 We used to check here whether the app is initialized and active. The app should always be initialized at this point, but not necessarilly active.. guard let message = self.message else { assertionFailure(); return } - guard message.managedObjectContext != nil else { return } // Happens if the message has recently been deleted. Going further would crash the app. + guard message.managedObjectContext != nil && !message.isDeleted else { return } // Happens if the message has recently been deleted. Going further would crash the app. + guard let messageDiscussion = message.discussion, !messageDiscussion.isDeleted else { return } var content = ReceivedMessageCellCustomContentConfiguration().updated(for: state) content.messageObjectID = message.typedObjectID @@ -102,13 +106,19 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC do { let messageObjectID = message.typedObjectID.downcast + printDebugLog2(message: message) cacheDelegate?.requestAllHardlinksForMessage(with: messageObjectID) { [weak self] needsUpdateConfiguration in - guard needsUpdateConfiguration && messageObjectID == self?.message?.typedObjectID.downcast else { return } + self?.printDebugLog3(messageObjectID: messageObjectID, needsUpdateConfiguration: needsUpdateConfiguration) + guard needsUpdateConfiguration && messageObjectID == self?.message?.typedObjectID.downcast else { + self?.printDebugLog4(messageObjectID: messageObjectID, willCallSetNeedsUpdateConfiguration: false) + return + } + self?.printDebugLog4(messageObjectID: messageObjectID, willCallSetNeedsUpdateConfiguration: true) self?.setNeedsUpdateConfiguration() } } - switch try? message.discussion.kind { + switch try? message.discussion?.kind { case .oneToOne: content.alwaysHideContactPictureAndNameView = true case .groupV1, .groupV2, .none: @@ -143,10 +153,14 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC if message.isLocallyWiped { content.wipedViewConfiguration = .locallyWiped } else if message.isRemoteWiped { - if let ownedCryptoId = message.discussion.ownedIdentity?.cryptoId, + if let ownedCryptoId = message.discussion?.ownedIdentity?.cryptoId, let deleterCryptoId = message.deleterCryptoId, let contact = try? PersistedObvContactIdentity.get(contactCryptoId: deleterCryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) { content.wipedViewConfiguration = .remotelyWiped(deleterName: contact.customOrShortDisplayName) + } else if let ownedCryptoId = message.discussion?.ownedIdentity?.cryptoId, + let deleterCryptoId = message.deleterCryptoId, + deleterCryptoId == ownedCryptoId { + content.wipedViewConfiguration = .remotelyWiped(deleterName: CommonString.Word.You.lowercased()) } else { content.wipedViewConfiguration = .remotelyWiped(deleterName: nil) } @@ -237,7 +251,7 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC // Look for an https URL within the text content.singleLinkConfiguration = nil - let doFetchContentRichURLsMetadataSetting = message.discussion.localConfiguration.doFetchContentRichURLsMetadata ?? ObvMessengerSettings.Discussions.doFetchContentRichURLsMetadata + let doFetchContentRichURLsMetadataSetting = message.discussion?.localConfiguration.doFetchContentRichURLsMetadata ?? ObvMessengerSettings.Discussions.doFetchContentRichURLsMetadata switch doFetchContentRichURLsMetadataSetting { case .never, .withinSentMessagesOnly: break @@ -300,7 +314,7 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC progress: imageAttachment.progressObject, downsizedThumbnail: nil) } - } else if let downsizedThumbnail = cacheDelegate?.getCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID), !message.readingRequiresUserAction { + } else if let downsizedThumbnail = cacheDelegate?.getCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast), !message.readingRequiresUserAction { if imageAttachment.status == .downloadable { config = .downloadable(receivedJoinObjectID: imageAttachment.typedObjectID, progress: imageAttachment.progressObject, @@ -321,7 +335,7 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC downsizedThumbnail: nil) } if let data = imageAttachment.downsizedThumbnail { - cacheDelegate?.requestDownsizedThumbnail(objectID: imageAttachment.typedObjectID, data: data, completionWhenImageCached: { [weak self] result in + cacheDelegate?.requestDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast, data: data, completionWhenImageCached: { [weak self] result in switch result { case .failure: break @@ -339,15 +353,17 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC if message.readingRequiresUserAction { config = .completeButReadRequiresUserInteraction(messageObjectID: message.typedObjectID) } else { + printDebugLog(message: message, hardlink: hardlink) if let hardlink = hardlink, hardlink.hardlinkURL != nil { if let image = cacheDelegate?.getCachedImageForHardlink(hardlink: hardlink, size: size) { - cacheDelegate?.removeCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID) + cacheDelegate?.removeCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast) config = .complete(downsizedThumbnail: nil, hardlink: hardlink, thumbnail: image) } else { - let downsizedThumbnail = cacheDelegate?.getCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID) + let downsizedThumbnail = cacheDelegate?.getCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast) config = .complete(downsizedThumbnail: downsizedThumbnail, hardlink: hardlink, thumbnail: nil) Task { do { + try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: sizeForUIDragItemPreview) try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: size) setNeedsUpdateConfiguration() } catch { @@ -355,7 +371,7 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC } } } - } else if let downsizedThumbnail = cacheDelegate?.getCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID) { + } else if let downsizedThumbnail = cacheDelegate?.getCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast) { config = .downloading(receivedJoinObjectID: imageAttachment.typedObjectID, progress: imageAttachment.progressObject, downsizedThumbnail: downsizedThumbnail) @@ -364,7 +380,7 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC progress: imageAttachment.progressObject, downsizedThumbnail: nil) if let data = imageAttachment.downsizedThumbnail { - cacheDelegate?.requestDownsizedThumbnail(objectID: imageAttachment.typedObjectID, data: data, completionWhenImageCached: { [weak self] result in + cacheDelegate?.requestDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast, data: data, completionWhenImageCached: { [weak self] result in switch result { case .failure: break @@ -381,6 +397,35 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC return config } + + private func printDebugLog(message: PersistedMessageReceived, hardlink: HardLinkToFyle?) { + let hardlinkIsNonNil = (hardlink != nil) + let hardlinkURLIsNonNil = (hardlink?.hardlinkURL != nil) + let fileIsAvailableOnDisk: Bool + if let hardlinkURL = hardlink?.hardlinkURL { + if FileManager.default.fileExists(atPath: hardlinkURL.path) { + fileIsAvailableOnDisk = true + } else { + fileIsAvailableOnDisk = false + } + } else { + fileIsAvailableOnDisk = false + } + os_log("🧷 [%{public}@][%{public}@] hardlinkIsNonNil=%{public}@ hardlinkURLIsNonNil=%{public}@ fileIsAvailableOnDisk=%{public}@", log: Self.log, type: .info, message.objectID.hashValue.description, String(message.textBody?.prefix(8) ?? "None"), hardlinkIsNonNil.description, hardlinkURLIsNonNil.description, fileIsAvailableOnDisk.description) + + } + + private func printDebugLog2(message: PersistedMessageReceived) { + os_log("🧷 [%{public}@][%{public}@] Call to requestAllHardlinksForMessage", log: Self.log, type: .info, message.objectID.hashValue.description, String(message.textBody?.prefix(8) ?? "None")) + } + + private func printDebugLog3(messageObjectID: TypeSafeManagedObjectID, needsUpdateConfiguration: Bool) { + os_log("🧷 [%{public}@] requestAllHardlinksForMessage completion needsUpdateConfiguration=%{public}@", log: Self.log, type: .info, messageObjectID.hashValue.description, needsUpdateConfiguration.description) + } + + private func printDebugLog4(messageObjectID: TypeSafeManagedObjectID, willCallSetNeedsUpdateConfiguration: Bool) { + os_log("🧷 [%{public}@] requestAllHardlinksForMessage completion willCallSetNeedsUpdateConfiguration=%{public}@", log: Self.log, type: .info, messageObjectID.hashValue.description, willCallSetNeedsUpdateConfiguration.description) + } private func attachmentViewConfigurationForAttachment(_ attachment: ReceivedFyleMessageJoinWithStatus) -> AttachmentsView.Configuration { let message = attachment.receivedMessage @@ -417,6 +462,7 @@ final class ReceivedMessageCell: UICollectionViewCell, CellWithMessage, MessageC } else { Task { do { + try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: sizeForUIDragItemPreview) try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: size) setNeedsUpdateConfiguration() } catch { @@ -505,12 +551,39 @@ extension ReceivedMessageCell { .compactMap({ $0.activityItemProvider }) } - var itemProvidersForAllAttachments: [UIActivityItemProvider]? { + var activityItemProvidersForAllAttachments: [UIActivityItemProvider]? { message?.fyleMessageJoinWithStatuses .compactMap({ cacheDelegate?.getCachedHardlinkForFyleMessageJoinWithStatus(with: ($0 as FyleMessageJoinWithStatus).typedObjectID) }) .compactMap({ $0.activityItemProvider }) } + var itemProvidersForAllAttachments: [NSItemProvider]? { + message?.fyleMessageJoinWithStatuses + .compactMap({ cacheDelegate?.getCachedHardlinkForFyleMessageJoinWithStatus(with: ($0 as FyleMessageJoinWithStatus).typedObjectID) }) + .compactMap({ $0.itemProvider }) + } + + var uiDragItemsForAllAttachments: [UIDragItem]? { + message?.fyleMessageJoinWithStatuses + .compactMap({ cacheDelegate?.getCachedHardlinkForFyleMessageJoinWithStatus(with: ($0 as FyleMessageJoinWithStatus).typedObjectID) }) + .compactMap({ $0 }) + .compactMap({ ($0, $0.uiDragItem) }) + .compactMap({ (hardLinkToFyle, uiDragItem) in + if let image = cacheDelegate?.getCachedImageForHardlink(hardlink: hardLinkToFyle, size: sizeForUIDragItemPreview) { + uiDragItem?.previewProvider = { + UIDragPreview(view: UIImageView(image: image)) + } + } + return uiDragItem + }) + } + + var hardlinkURLsForAllAttachments: [URL]? { + message?.fyleMessageJoinWithStatuses + .compactMap({ cacheDelegate?.getCachedHardlinkForFyleMessageJoinWithStatus(with: ($0 as FyleMessageJoinWithStatus).typedObjectID) }) + .compactMap({ $0.hardlinkURL }) + } + var infoViewController: UIViewController? { guard let message = message else { return nil } guard message.infoActionCanBeMadeAvailable == true else { return nil } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/SentMessageCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/SentMessageCell.swift index 50f97a98..d7c53aed 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/SentMessageCell.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/SentMessageCell.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,8 @@ import CoreData import os.log import ObvUI import ObvUICoreData +import ObvSettings +import ObvDesignSystem @available(iOS 14.0, *) @@ -140,7 +142,7 @@ final class SentMessageCell: UICollectionViewCell, CellWithMessage, MessageCellS // Look for an https URL within the text content.singleLinkConfiguration = nil - let doFetchContentRichURLsMetadataSetting = message.discussion.localConfiguration.doFetchContentRichURLsMetadata ?? ObvMessengerSettings.Discussions.doFetchContentRichURLsMetadata + let doFetchContentRichURLsMetadataSetting = message.discussion?.localConfiguration.doFetchContentRichURLsMetadata ?? ObvMessengerSettings.Discussions.doFetchContentRichURLsMetadata switch doFetchContentRichURLsMetadataSetting { case .never: break @@ -165,10 +167,14 @@ final class SentMessageCell: UICollectionViewCell, CellWithMessage, MessageCellS if message.isLocallyWiped { content.wipedViewConfiguration = .locallyWiped } else if message.isRemoteWiped { - if let ownedCryptoId = message.discussion.ownedIdentity?.cryptoId, + if let ownedCryptoId = message.discussion?.ownedIdentity?.cryptoId, let deleterCryptoId = message.deleterCryptoId, let contact = try? PersistedObvContactIdentity.get(contactCryptoId: deleterCryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) { content.wipedViewConfiguration = .remotelyWiped(deleterName: contact.customOrShortDisplayName) + } else if let ownedCryptoId = message.discussion?.ownedIdentity?.cryptoId, + let deleterCryptoId = message.deleterCryptoId, + deleterCryptoId == ownedCryptoId { + content.wipedViewConfiguration = .remotelyWiped(deleterName: CommonString.Word.You) } else { content.wipedViewConfiguration = .remotelyWiped(deleterName: nil) } @@ -257,12 +263,49 @@ final class SentMessageCell: UICollectionViewCell, CellWithMessage, MessageCellS contentView.textBubble.delegate = textBubbleDelegate } - + private func singleImageViewConfigurationForImageAttachment(_ imageAttachment: SentFyleMessageJoinWithStatus, size: CGSize, requiresCellSizing: Bool) -> SingleImageView.Configuration { let imageAttachmentObjectID = (imageAttachment as FyleMessageJoinWithStatus).typedObjectID let hardlink = cacheDelegate?.getCachedHardlinkForFyleMessageJoinWithStatus(with: imageAttachmentObjectID) let config: SingleImageView.Configuration + let message = imageAttachment.sentMessage switch imageAttachment.status { + case .downloadable, .downloading: + if let downsizedThumbnail = cacheDelegate?.getCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast) { + if imageAttachment.status == .downloadable { + config = .downloadableSent(sentJoinObjectID: imageAttachment.typedObjectID, + progress: imageAttachment.progressObject, + downsizedThumbnail: downsizedThumbnail) + } else { + config = .downloadingSent(sentJoinObjectID: imageAttachment.typedObjectID, + progress: imageAttachment.progressObject, + downsizedThumbnail: downsizedThumbnail) + } + } else { + if imageAttachment.status == .downloadable { + config = .downloadableSent(sentJoinObjectID: imageAttachment.typedObjectID, + progress: imageAttachment.progressObject, + downsizedThumbnail: nil) + } else { + config = .downloadingSent(sentJoinObjectID: imageAttachment.typedObjectID, + progress: imageAttachment.progressObject, + downsizedThumbnail: nil) + } + if let data = imageAttachment.downsizedThumbnail { + cacheDelegate?.requestDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast, data: data, completionWhenImageCached: { [weak self] result in + switch result { + case .failure: + break + case .success: + if requiresCellSizing { + self?.cellReconfigurator?.cellNeedsToBeReconfiguredAndResized(messageID: message.typedObjectID.downcast) + } else { + self?.setNeedsUpdateConfiguration() + } + } + }) + } + } case .uploading, .uploadable: assert(cacheDelegate != nil) if let hardlink = hardlink { @@ -272,6 +315,7 @@ final class SentMessageCell: UICollectionViewCell, CellWithMessage, MessageCellS config = .uploadableOrUploading(hardlink: hardlink, thumbnail: nil, progress: imageAttachment.progressObject) Task { do { + try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: sizeForUIDragItemPreview) try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: size) if requiresCellSizing { cellReconfigurator?.cellNeedsToBeReconfiguredAndResized(messageID: imageAttachment.sentMessage.typedObjectID.downcast) @@ -287,13 +331,16 @@ final class SentMessageCell: UICollectionViewCell, CellWithMessage, MessageCellS config = .uploadableOrUploading(hardlink: nil, thumbnail: nil, progress: imageAttachment.progressObject) } case .complete: - if let hardlink = hardlink { + if let hardlink = hardlink, hardlink.hardlinkURL != nil { if let image = cacheDelegate?.getCachedImageForHardlink(hardlink: hardlink, size: size) { + cacheDelegate?.removeCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast) config = .complete(downsizedThumbnail: nil, hardlink: hardlink, thumbnail: image) } else { - config = .complete(downsizedThumbnail: nil, hardlink: hardlink, thumbnail: nil) + let downsizedThumbnail = cacheDelegate?.getCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast) + config = .complete(downsizedThumbnail: downsizedThumbnail, hardlink: hardlink, thumbnail: nil) Task { do { + try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: sizeForUIDragItemPreview) try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: size) if requiresCellSizing { cellReconfigurator?.cellNeedsToBeReconfiguredAndResized(messageID: imageAttachment.sentMessage.typedObjectID.downcast) @@ -305,9 +352,27 @@ final class SentMessageCell: UICollectionViewCell, CellWithMessage, MessageCellS } } } + } else if let downsizedThumbnail = cacheDelegate?.getCachedDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast) { + config = .downloadingSent(sentJoinObjectID: imageAttachment.typedObjectID, + progress: imageAttachment.progressObject, + downsizedThumbnail: downsizedThumbnail) } else { - config = .complete(downsizedThumbnail: nil, hardlink: nil, thumbnail: nil) + config = .downloadingSent(sentJoinObjectID: imageAttachment.typedObjectID, + progress: imageAttachment.progressObject, + downsizedThumbnail: nil) + if let data = imageAttachment.downsizedThumbnail { + cacheDelegate?.requestDownsizedThumbnail(objectID: imageAttachment.typedObjectID.downcast, data: data, completionWhenImageCached: { [weak self] result in + switch result { + case .failure: + break + case .success: + self?.setNeedsUpdateConfiguration() + } + }) + } } + case .cancelledByServer: + config = .cancelledByServer } return config } @@ -327,6 +392,7 @@ final class SentMessageCell: UICollectionViewCell, CellWithMessage, MessageCellS config = .uploadableOrUploading(hardlink: hardlink, thumbnail: nil, fileSize: Int(attachment.totalByteCount), uti: attachment.uti, filename: attachment.fileName, progress: attachment.progressObject) Task { do { + try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: sizeForUIDragItemPreview) try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: size) setNeedsUpdateConfiguration() } catch { @@ -346,6 +412,7 @@ final class SentMessageCell: UICollectionViewCell, CellWithMessage, MessageCellS config = .complete(hardlink: hardlink, thumbnail: nil, fileSize: Int(attachment.totalByteCount), uti: attachment.uti, filename: attachment.fileName, wasOpened: nil) Task { do { + try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: sizeForUIDragItemPreview) try await cacheDelegate?.requestImageForHardlink(hardlink: hardlink, size: size) setNeedsUpdateConfiguration() } catch { @@ -356,6 +423,12 @@ final class SentMessageCell: UICollectionViewCell, CellWithMessage, MessageCellS } else { config = .complete(hardlink: nil, thumbnail: nil, fileSize: Int(attachment.totalByteCount), uti: attachment.uti, filename: attachment.fileName, wasOpened: nil) } + case .cancelledByServer: + config = .cancelledByServer(fileSize: Int(attachment.totalByteCount), uti: attachment.uti, filename: attachment.fileName) + case .downloadable: + config = .downloadableSent(sentJoinObjectID: attachment.typedObjectID, progress: attachment.progressObject, fileSize: Int(attachment.totalByteCount), uti: attachment.uti, filename: attachment.fileName) + case .downloading: + config = .downloadingSent(sentJoinObjectID: attachment.typedObjectID, progress: attachment.progressObject, fileSize: Int(attachment.totalByteCount), uti: attachment.uti, filename: attachment.fileName) } return config } @@ -421,12 +494,39 @@ extension SentMessageCell { .compactMap({ $0.activityItemProvider }) } - var itemProvidersForAllAttachments: [UIActivityItemProvider]? { + var activityItemProvidersForAllAttachments: [UIActivityItemProvider]? { message?.fyleMessageJoinWithStatuses .compactMap({ cacheDelegate?.getCachedHardlinkForFyleMessageJoinWithStatus(with: ($0 as FyleMessageJoinWithStatus).typedObjectID) }) .compactMap({ $0.activityItemProvider }) } + var itemProvidersForAllAttachments: [NSItemProvider]? { + message?.fyleMessageJoinWithStatuses + .compactMap({ cacheDelegate?.getCachedHardlinkForFyleMessageJoinWithStatus(with: ($0 as FyleMessageJoinWithStatus).typedObjectID) }) + .compactMap({ $0.itemProvider }) + } + + var uiDragItemsForAllAttachments: [UIDragItem]? { + message?.fyleMessageJoinWithStatuses + .compactMap({ cacheDelegate?.getCachedHardlinkForFyleMessageJoinWithStatus(with: ($0 as FyleMessageJoinWithStatus).typedObjectID) }) + .compactMap({ $0 }) + .compactMap({ ($0, $0.uiDragItem) }) + .compactMap({ (hardLinkToFyle, uiDragItem) in + if let image = cacheDelegate?.getCachedImageForHardlink(hardlink: hardLinkToFyle, size: sizeForUIDragItemPreview) { + uiDragItem?.previewProvider = { + UIDragPreview(view: UIImageView(image: image)) + } + } + return uiDragItem + }) + } + + var hardlinkURLsForAllAttachments: [URL]? { + message?.fyleMessageJoinWithStatuses + .compactMap({ cacheDelegate?.getCachedHardlinkForFyleMessageJoinWithStatus(with: ($0 as FyleMessageJoinWithStatus).typedObjectID) }) + .compactMap({ $0.hardlinkURL }) + } + var infoViewController: UIViewController? { guard let message = message else { return nil } guard message.infoActionCanBeMadeAvailable == true else { return nil } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/SystemMessageCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/SystemMessageCell.swift index dd8275e9..6127102d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/SystemMessageCell.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/SystemMessageCell.swift @@ -98,6 +98,8 @@ final class SystemMessageCell: UICollectionViewCell, CellWithMessage, UIViewWith content.backgroundColor = appTheme.colorScheme.green case .contactIsOneToOneAgain: content.backgroundColor = appTheme.colorScheme.green + case .contactWasIntroducedToAnotherContact: + content.backgroundColor = appTheme.colorScheme.green case .callLogItem: content.backgroundColor = appTheme.colorScheme.purple case .updatedDiscussionSharedSettings: @@ -151,6 +153,8 @@ final class SystemMessageCell: UICollectionViewCell, CellWithMessage, UIViewWith switch callReportKind { case .rejectedIncomingCallBecauseOfDeniedRecordPermission: return .systemCellShowingCallLogItemRejectedIncomingCallBecauseOfDeniedRecordPermission + case .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse: + return .systemCellShowingCallLogItemRejectedBecauseOfVoIPSettings default: return nil } @@ -167,6 +171,7 @@ final class SystemMessageCell: UICollectionViewCell, CellWithMessage, UIViewWith .rejoinedGroup, .contactIsOneToOneAgain, .ownedIdentityDidCaptureSensitiveMessages, + .contactWasIntroducedToAnotherContact, .contactIdentityDidCaptureSensitiveMessages: return nil } @@ -191,8 +196,11 @@ extension SystemMessageCell { var fyleMessagesJoinWithStatus: [FyleMessageJoinWithStatus]? { nil } var imageAttachments: [FyleMessageJoinWithStatus]? { nil } // Legacy, replaced by itemProvidersForImages var itemProvidersForImages: [UIActivityItemProvider]? { nil } - var itemProvidersForAllAttachments: [UIActivityItemProvider]? { nil } - + var activityItemProvidersForAllAttachments: [UIActivityItemProvider]? { nil } + var itemProvidersForAllAttachments: [NSItemProvider]? { nil } + var uiDragItemsForAllAttachments: [UIDragItem]? { nil } + var hardlinkURLsForAllAttachments: [URL]? { nil } + var infoViewController: UIViewController? { guard message?.infoActionCanBeMadeAvailable == true else { return nil } if let item = message?.optionalCallLogItem { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/FyleProgressView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/FyleProgressView.swift index 109c6acb..01c458dc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/FyleProgressView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/FyleProgressView.swift @@ -31,6 +31,9 @@ final class FyleProgressView: UIView, UIViewWithTappableStuff { case downloadable(receivedJoinObjectID: TypeSafeManagedObjectID, progress: Progress) case downloading(receivedJoinObjectID: TypeSafeManagedObjectID, progress: Progress) case cancelled + // For received attachments sent from other owned device + case downloadableSent(sentJoinObjectID: TypeSafeManagedObjectID, progress: Progress) + case downloadingSent(sentJoinObjectID: TypeSafeManagedObjectID, progress: Progress) // For both case complete var debugDescription: String { @@ -39,8 +42,12 @@ final class FyleProgressView: UIView, UIViewWithTappableStuff { return "FyleProgressViewConfiguration.uploadableOrUploading" case .downloadable(receivedJoinObjectID: let receivedJoinObjectID, progress: let progress): return "FyleProgressViewConfiguration.downloadable" + case .downloadableSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress): + return "FyleProgressViewConfiguration.downloadableSent" case .downloading(receivedJoinObjectID: let receivedJoinObjectID, progress: let progress): return "FyleProgressViewConfiguration.downloading" + case .downloadingSent(sentJoinObjectID: let sentJoinObjectID, progress: let progress): + return "FyleProgressViewConfiguration.downloadingSent" case .cancelled: return "FyleProgressViewConfiguration.cancelled" case .complete: @@ -69,7 +76,7 @@ final class FyleProgressView: UIView, UIViewWithTappableStuff { progressView.isHidden = false progressView.observedProgress = progress isUserInteractionEnabled = false - case .downloadable(_, progress: let progress): + case .downloadable(_, progress: let progress), .downloadableSent(_, progress: let progress): imageViewWhenPaused.isHidden = false imageViewWhenDownloading.isHidden = true imageViewWhenCancelled.isHidden = true @@ -77,7 +84,7 @@ final class FyleProgressView: UIView, UIViewWithTappableStuff { progressView.isHidden = (progress.completedUnitCount == 0) progressView.observedProgress = progress isUserInteractionEnabled = true - case .downloading(_, progress: let progress): + case .downloading(_, progress: let progress), .downloadingSent(_, progress: let progress): imageViewWhenPaused.isHidden = true imageViewWhenDownloading.isHidden = false imageViewWhenCancelled.isHidden = true @@ -110,12 +117,14 @@ final class FyleProgressView: UIView, UIViewWithTappableStuff { guard !self.isHidden else { return nil } switch currentConfiguration { case .downloading(receivedJoinObjectID: let receivedJoinObjectID, progress: _): - debugPrint("☸️ Tap received to pause") return .receivedFyleMessageJoinWithStatusToPauseDownload(receivedJoinObjectID: receivedJoinObjectID) case .downloadable(receivedJoinObjectID: let receivedJoinObjectID, progress: _): - debugPrint("☸️ Tap received to download") return .receivedFyleMessageJoinWithStatusToResumeDownload(receivedJoinObjectID: receivedJoinObjectID) - default: + case .downloadingSent(sentJoinObjectID: let sentJoinObjectID, progress: _): + return .sentFyleMessageJoinWithStatusReceivedFromOtherOwnedDeviceToPauseDownload(sentJoinObjectID: sentJoinObjectID) + case .downloadableSent(sentJoinObjectID: let sentJoinObjectID, progress: _): + return .sentFyleMessageJoinWithStatusReceivedFromOtherOwnedDeviceToResumeDownload(sentJoinObjectID: sentJoinObjectID) + case .uploadableOrUploading, .cancelled, .complete, .none: return nil } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/TappedStuffForCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/TappedStuffForCell.swift index 204e18fe..484c6632 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/TappedStuffForCell.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/TappedStuffForCell.swift @@ -27,12 +27,15 @@ enum TappedStuffForCell { case messageThatRequiresUserAction(messageObjectID: TypeSafeManagedObjectID) case receivedFyleMessageJoinWithStatusToResumeDownload(receivedJoinObjectID: TypeSafeManagedObjectID) case receivedFyleMessageJoinWithStatusToPauseDownload(receivedJoinObjectID: TypeSafeManagedObjectID) + case sentFyleMessageJoinWithStatusReceivedFromOtherOwnedDeviceToResumeDownload(sentJoinObjectID: TypeSafeManagedObjectID) + case sentFyleMessageJoinWithStatusReceivedFromOtherOwnedDeviceToPauseDownload(sentJoinObjectID: TypeSafeManagedObjectID) case reaction(messageObjectID: TypeSafeManagedObjectID) case missedMessageBubble case circledInitials(contactObjectID: TypeSafeManagedObjectID) case replyTo(replyToMessageObjectID: NSManagedObjectID) case systemCellShowingUpdatedDiscussionSharedSettings case systemCellShowingCallLogItemRejectedIncomingCallBecauseOfDeniedRecordPermission + case systemCellShowingCallLogItemRejectedBecauseOfVoIPSettings case behaveAsIfTheDiscussionTitleWasTapped } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/UIImageViewForHardLink.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/UIImageViewForHardLink.swift index ed9016ab..40aa10b1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/UIImageViewForHardLink.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/NewSingleDiscussion/cells/utils/UIImageViewForHardLink.swift @@ -24,7 +24,6 @@ import MobileCoreServices import ObvUICoreData -@available(iOS 14.0, *) final class UIImageViewForHardLink: UIImageView, UIViewWithTappableStuff { private(set) var hardlink: HardLinkToFyle? @@ -62,18 +61,18 @@ final class UIImageViewForHardLink: UIImageView, UIViewWithTappableStuff { self.isHidden = false } - private var imageForUTI = [String: UIImage]() + private var imageForContentType = [UTType: UIImage]() private func setDefaultImageForUTIWithinHardlink(_ newHardlink: HardLinkToFyle) { assert(Thread.isMainThread) - let uti = newHardlink.uti - if let image = imageForUTI[uti] { + let contentType = newHardlink.contentType + if let image = imageForContentType[contentType] { setImageAndHardlink(newImage: image, newHardlink: newHardlink, contentMode: .center) } else { let configuration = UIImage.SymbolConfiguration(pointSize: 20) - let icon = ObvUTIUtils.getIcon(forUTI: uti) + let icon = contentType.systemIcon let image = UIImage(systemIcon: icon, withConfiguration: configuration)! - imageForUTI[uti] = image + imageForContentType[contentType] = image setImageAndHardlink(newImage: image, newHardlink: newHardlink, contentMode: .center) } self.alpha = 1.0 @@ -99,7 +98,6 @@ final class UIImageViewForHardLink: UIImageView, UIViewWithTappableStuff { -@available(iOS 14.0, *) final class UIImageViewForHardLinkForOlvidStack: ViewForOlvidStack, UIViewWithTappableStuff { var hardlink: HardLinkToFyle? { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/RecentDiscussions/RecentDiscussionsViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/RecentDiscussions/RecentDiscussionsViewController.swift index 3fbf1206..a6fa06e0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/RecentDiscussions/RecentDiscussionsViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/RecentDiscussions/RecentDiscussionsViewController.swift @@ -30,7 +30,7 @@ import UIKit final class RecentDiscussionsViewController: ShowOwnedIdentityButtonUIViewController, ViewControllerWithEllipsisCircleRightBarButtonItem, OlvidMenuProvider, DiscussionsTableViewControllerDelegate, NewDiscussionsViewControllerDelegate { weak var delegate: RecentDiscussionsViewControllerDelegate? - + // MARK: - Switching current owned identity @MainActor @@ -59,13 +59,8 @@ extension RecentDiscussionsViewController { var rightBarButtonItems = [UIBarButtonItem]() - if #available(iOS 14, *) { - let ellipsisButton = getConfiguredEllipsisCircleRightBarButtonItem() - rightBarButtonItems.append(ellipsisButton) - } else { - let ellipsisButton = getConfiguredEllipsisCircleRightBarButtonItem(selector: #selector(ellipsisButtonTappedSelector)) - rightBarButtonItems.append(ellipsisButton) - } + let ellipsisButton = getConfiguredEllipsisCircleRightBarButtonItem() + rightBarButtonItems.append(ellipsisButton) #if DEBUG rightBarButtonItems.append(UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(insertDebugMessagesInAllExistingDiscussions))) @@ -74,13 +69,7 @@ extension RecentDiscussionsViewController { navigationItem.rightBarButtonItems = rightBarButtonItems } - - @available(iOS, introduced: 13.0, deprecated: 14.0, message: "Used because iOS 13 does not support UIMenu on UIBarButtonItem") - @objc private func ellipsisButtonTappedSelector() { - ellipsisButtonTapped(sourceBarButtonItem: navigationItem.rightBarButtonItem) - } - - + #if DEBUG @objc private func insertDebugMessagesInAllExistingDiscussions() { // ObvMessengerInternalNotification.insertDebugMessagesInAllExistingDiscussions @@ -197,18 +186,4 @@ extension RecentDiscussionsViewController { return menu } - @available(iOS, introduced: 13, deprecated: 14, message: "Use provideMenu() instead") - func provideAlertActions() -> [UIAlertAction] { - - // Update the parents alerts - var alertActions = [UIAlertAction]() - if let parentAlertActions = parent?.getFirstAlertActionsAvailable() { - alertActions.append(contentsOf: parentAlertActions) - } - - // We do not show the edit pinned discussions action since they are only supported in iOS16+ - - return alertActions - - } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/CollectionOfFylesView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/CollectionOfFylesView.swift deleted file mode 100644 index 47e60d7e..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/CollectionOfFylesView.swift +++ /dev/null @@ -1,439 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import MobileCoreServices -import CoreData -import ObvUI -import ObvUICoreData - - -final class CollectionOfFylesView: ObvRoundedRectView { - - let imageAttachments: [(attachment: FyleMessageJoinWithStatus, worker: ThumbnailWorker, imagePlaceholder: UIView)] - let nonImageAttachments: [(attachment: FyleMessageJoinWithStatus, worker: ThumbnailWorker, backgroundView: UIView)] - let hideProgresses: Bool - - private var progressObservationTokens = Set() - - private let byteCountFormatter = ByteCountFormatter() - - private let mainStackView = UIStackView() - - /// The `FyleMessageJoinWithStatus` items, ordered as displayed to the user - var fyleMessagesJoinWithStatus: [FyleMessageJoinWithStatus] { - let images = imageAttachments.map { $0.attachment } - let nonImages = nonImageAttachments.map { $0.attachment } - return images + nonImages - } - - init(attachments: [FyleMessageJoinWithStatus], hideProgresses: Bool) { - assert(!attachments.isEmpty) - self.hideProgresses = hideProgresses - self.imageAttachments = attachments.compactMap { - guard ObvUTIUtils.uti($0.uti, conformsTo: kUTTypeImage) else { return nil } - guard let fyleElement = $0.fyleElement else { return nil } - let worker = ThumbnailWorker(fyleElement: fyleElement) - let imageViewPlaceholder = UIView() - return ($0, worker, imageViewPlaceholder) - } - self.nonImageAttachments = attachments.compactMap { - guard !ObvUTIUtils.uti($0.uti, conformsTo: kUTTypeImage) else { return nil} - guard let fyleElement = $0.fyleElement else { return nil } - let worker = ThumbnailWorker(fyleElement: fyleElement) - let backgroundView = UIView() - return ($0, worker, backgroundView) - } - super.init(frame: CGRect.zero) - setup() - } - - deinit { - progressObservationTokens.forEach({ $0.invalidate() }) - } - - private static func thumbnailTypeFor(attachment: FyleMessageJoinWithStatus) -> ThumbnailType { - if attachment.isWiped { - return .wiped - } else if (attachment.message as? PersistedMessageReceived)?.readingRequiresUserAction == true { - return .visibilityRestricted - } else { - return .normal - } - } - - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - - /// This is typically called when the user taps on a readOnce message. In that case, we want to refresh the thumbnails. - func refresh() { - for thing in imageAttachments { - let thumbnailType = CollectionOfFylesView.thumbnailTypeFor(attachment: thing.attachment) - let fyleIsAvailable = thing.attachment.fullFileIsAvailable - showThumbnail(in: thing.imagePlaceholder, thumbnailType: thumbnailType, fyleIsAvailable: fyleIsAvailable, using: thing.worker) - } - } - - - private func setup() { - - self.accessibilityIdentifier = "CollectionOfFylesView" - self.translatesAutoresizingMaskIntoConstraints = false - self.clipsToBounds = true - - mainStackView.accessibilityIdentifier = "mainStackView" - mainStackView.translatesAutoresizingMaskIntoConstraints = false - mainStackView.alignment = .fill - mainStackView.axis = .vertical - mainStackView.spacing = 4.0 - self.addSubview(mainStackView) - - if !imageAttachments.isEmpty { - setupImageFyleStackView() - } - - if !nonImageAttachments.isEmpty { - setupNonImageAttachmentStackView() - } - - setupConstraints() - } - - - private func setupImageFyleStackView() { - - for index in stride(from: 0, to: imageAttachments.count, by: 2) { - - let imageFyleStackView = UIStackView() - imageFyleStackView.accessibilityIdentifier = "imageFyleStackView for index \(index)" - imageFyleStackView.translatesAutoresizingMaskIntoConstraints = false - imageFyleStackView.alignment = .fill - imageFyleStackView.axis = .horizontal - imageFyleStackView.spacing = 4.0 - mainStackView.addArrangedSubview(imageFyleStackView) - - let numberPhotosInRow = min(2, imageAttachments.count - index) // 1 or 2 - - var imagePlaceHolderConstraints = [NSLayoutConstraint]() - - for subindex in 0.. FyleMessageJoinWithStatus? { - - // Detect taps on imageView - for (attachment, _, imagePlaceholder) in imageAttachments { - let newPoint = convert(point, to: imagePlaceholder) - if imagePlaceholder.bounds.contains(newPoint) { - return attachment - } - } - - // Detect taps on non-image attachments - for (attachment, _, backgroundView) in nonImageAttachments { - let newPoint = convert(point, to: backgroundView) - if backgroundView.bounds.contains(newPoint) { - return attachment - } - } - - return nil - } - - func thumbnailViewOfFyleMessageJoinWithStatus(_ attachment: FyleMessageJoinWithStatus) -> UIView? { - for imageAttachment in imageAttachments { - if imageAttachment.attachment == attachment { - return imageAttachment.imagePlaceholder.subviews.first - } - } - for nonImageAttachment in nonImageAttachments { - if nonImageAttachment.attachment == attachment { - let backgroundView = nonImageAttachment.backgroundView - guard let nonImageAttachmentStackView = backgroundView.subviews.first as? UIStackView else { return nil } - guard let square = nonImageAttachmentStackView.arrangedSubviews.first else { return nil } - return square.subviews.first - } - } - return nil - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/LinkViewPlaceHolderView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/LinkViewPlaceHolderView.swift deleted file mode 100644 index 830755a7..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/LinkViewPlaceHolderView.swift +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -final class LinkViewPlaceHolderView: UIView { - - private let stackView = UIStackView() - let label = UILabel() - let spinner: UIActivityIndicatorView - - var link: URL? { - didSet { - guard let link = self.link else { - label.text = nil - return - } - var components = URLComponents() - components.host = link.host - components.scheme = link.scheme - label.text = components.url?.absoluteString - } - } - - override init(frame: CGRect) { - - spinner = UIActivityIndicatorView(style: .medium) - - super.init(frame: frame) - - resetBackgroundColor() - layer.cornerRadius = 8.0 - - stackView.accessibilityIdentifier = "stackView" - stackView.translatesAutoresizingMaskIntoConstraints = false - stackView.axis = .horizontal - stackView.backgroundColor = .blue - stackView.alignment = .center - stackView.spacing = 8.0 - - spinner.accessibilityIdentifier = "spinner" - stackView.addArrangedSubview(spinner) - spinner.startAnimating() - - label.accessibilityIdentifier = "label" - label.font = UIFont.preferredFont(forTextStyle: .footnote) - stackView.addArrangedSubview(label) - - self.addSubview(stackView) - - setupConstraints() - } - - func resetBackgroundColor() { - backgroundColor = UIColor.white.withAlphaComponent(0.5) - } - - - private func setupConstraints() { - let constraints = [ - stackView.centerXAnchor.constraint(equalTo: self.centerXAnchor), - stackView.centerYAnchor.constraint(equalTo: self.centerYAnchor), - stackView.widthAnchor.constraint(equalTo: self.widthAnchor, multiplier: 0.8) - ] - NSLayoutConstraint.activate(constraints) - } - - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageCollectionViewCell.swift deleted file mode 100644 index f42aa2f4..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageCollectionViewCell.swift +++ /dev/null @@ -1,910 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import MobileCoreServices -import LinkPresentation -import ObvUI -import ObvUICoreData -import UIKit - - -class MessageCollectionViewCell: UICollectionViewCell { - - weak var delegate: MessageCollectionViewCellDelegate? - - let initialFrameWidth: CGFloat - - let mainStackView = UIStackView() - let roundedRectView = ObvRoundedRectView() - let roundedRectStackView = UIStackView() - let bodyTextViewPaddingView = UIView() - let bodyTextView = UITextView() - let dateLabel = UILabel() - let replyToRoundedRectView = ObvRoundedRectView() - let replyToRoundedRectContentView = UIView() - let replyToStackView = UIStackView() - let replyToLabel = UILabelWithLineFragmentPadding() - let replyToTextView = UITextView() - let replyToFylesLabel = UILabelWithLineFragmentPadding() - let fyleRoundedRectView = ObvRoundedRectView() - var roundedRectStackViewWidthConstraintWhenShowingFyles: NSLayoutConstraint! - var collectionOfFylesView: CollectionOfFylesView! - let collectionOfFylesViewTopPadding = UIView() - var linkView: UIView? - let linkViewConstant: CGFloat = 250 - let messageEditedStatusImageView = UIImageView() - let bottomStackView = UIStackView() - - // For ephemeral message, displays an image and a countdown in the top left or right corner - let countdownStack = UIStackView() - let countdownImageViewReadOnce = UIImageView() - let countdownImageViewExpiration = UIImageView() - let countdownImageViewVisibility = UIImageView() - let countdownLabel = UILabel() - let countdownColorReadOnce = UIColor.red - let countdownColorExpiration = UIColor.gray - let countdownColorVisibility = UIColor.orange - - - // Views for displaying ephemerality parameters - let containerViewForEphemeralInfos = UIView() - let vStackForEphemeralConfig = UIStackView() - let hStackForEphemeralConfig = UIStackView() - static let expirationFontTextStyle = UIFont.TextStyle.footnote - let limitedVisibilityStack = UIStackView() - let limitedExistenceStack = UIStackView() - let readOnceStack = UIStackView() - static let tapToReadColor = AppTheme.shared.colorScheme.tapToRead - - static let durationFormatter = DurationFormatter() - - let numberOfColumnsForMultipleImages = 2 // Settting this to 3 does not work yet - - private static let defaultBodyFont = UIFont.preferredFont(forTextStyle: .callout) - private static let emojiBodyFont: UIFont = UIFont.systemFont(ofSize: 50.0) - private static let maxNumberOfLargeEmojis = 3 - - var message: PersistedMessage? - var repliedMessage: PersistedMessage? - var attachments = [FyleMessageJoinWithStatus]() - - private static let counterOfLayoutIfNeededCallsInitialValue = 10 - private var counterOfLayoutIfNeededCalls = MessageCollectionViewCell.counterOfLayoutIfNeededCallsInitialValue - - override init(frame: CGRect) { - self.initialFrameWidth = frame.size.width - super.init(frame: frame) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - /// The `FyleMessageJoinWithStatus` items, ordered as displayed to the user - var fyleMessagesJoinWithStatus: [FyleMessageJoinWithStatus]? { - guard let collectionOfFylesView = self.collectionOfFylesView else { return nil } - return collectionOfFylesView.fyleMessagesJoinWithStatus - } - - var imageAttachments: [FyleMessageJoinWithStatus]? { - guard let collectionOfFylesView = self.collectionOfFylesView else { return nil } - return collectionOfFylesView.imageAttachments.map({$0.attachment}) - } - - var itemProvidersForImages: [UIActivityItemProvider]? { - return nil // Just to conform to CellWithMessage, not used by the old discussion screen (`imageAttachments` is used instead). - } - - var itemProvidersForAllAttachments: [UIActivityItemProvider]? { - return nil // Just to conform to CellWithMessage, not used by the old discussion screen (`fyleMessagesJoinWithStatus` is used instead). - } - - - func setup() { - - self.clipsToBounds = false - self.autoresizesSubviews = true - - mainStackView.accessibilityIdentifier = "mainStackView" - mainStackView.translatesAutoresizingMaskIntoConstraints = false - mainStackView.axis = .vertical - mainStackView.spacing = 2.0 - self.addSubview(mainStackView) - - roundedRectView.accessibilityIdentifier = "roundedRectView" - roundedRectView.translatesAutoresizingMaskIntoConstraints = false - mainStackView.addArrangedSubview(roundedRectView) - - bottomStackView.accessibilityIdentifier = "bottomStackView" - bottomStackView.axis = .horizontal - bottomStackView.spacing = 4.0 - mainStackView.addArrangedSubview(bottomStackView) - - dateLabel.accessibilityIdentifier = "dateLabel" - dateLabel.translatesAutoresizingMaskIntoConstraints = false - dateLabel.font = UIFont.preferredFont(forTextStyle: .caption2) - dateLabel.textColor = AppTheme.shared.colorScheme.cellDate - - messageEditedStatusImageView.accessibilityIdentifier = "messageEditedStatusImageView" - messageEditedStatusImageView.tintColor = dateLabel.textColor - - let configuration = UIImage.SymbolConfiguration(textStyle: UIFont.TextStyle.footnote, scale: .small) - messageEditedStatusImageView.image = UIImage(systemName: "pencil.circle.fill", withConfiguration: configuration) - - roundedRectStackView.accessibilityIdentifier = "roundedRectStackView" - roundedRectStackView.translatesAutoresizingMaskIntoConstraints = false - roundedRectStackView.axis = .vertical - roundedRectStackView.alignment = .fill - roundedRectStackView.spacing = 0.0 - roundedRectView.addSubview(roundedRectStackView) - - replyToRoundedRectView.accessibilityIdentifier = "replyToRoundedRectView" - replyToRoundedRectView.translatesAutoresizingMaskIntoConstraints = false - replyToRoundedRectView.clipsToBounds = true - - replyToRoundedRectContentView.accessibilityIdentifier = "replyToRoundedRectContentView" - replyToRoundedRectContentView.translatesAutoresizingMaskIntoConstraints = false - replyToRoundedRectView.addSubview(replyToRoundedRectContentView) - - replyToStackView.accessibilityIdentifier = "replyToStackView" - replyToStackView.translatesAutoresizingMaskIntoConstraints = false - replyToStackView.axis = .vertical - replyToStackView.spacing = 4.0 - replyToRoundedRectContentView.addSubview(replyToStackView) - - replyToLabel.accessibilityIdentifier = "replyToLabel" - replyToLabel.font = UIFont.preferredFont(forTextStyle: .headline) - replyToStackView.addArrangedSubview(replyToLabel) - - replyToTextView.accessibilityIdentifier = "replyToTextView" - replyToTextView.translatesAutoresizingMaskIntoConstraints = false - replyToTextView.isScrollEnabled = false - replyToTextView.backgroundColor = .clear - replyToTextView.textContainerInset = .zero - replyToTextView.isEditable = false - replyToTextView.dataDetectorTypes = .all - replyToTextView.textContainer.maximumNumberOfLines = 3 - replyToTextView.textContainer.lineBreakMode = .byTruncatingTail - replyToTextView.delegate = self - - // Remove all the gesture recognizers on the body text view, except the link tap gesture recognizer - for recognizer in replyToTextView.gestureRecognizers! { - if let name = recognizer.name, name == "UITextInteractionNameLinkTap" { - continue - } else { - recognizer.isEnabled = false - } - } - replyToStackView.addArrangedSubview(replyToTextView) - - replyToFylesLabel.accessibilityIdentifier = "replyToFylesLabel" - replyToFylesLabel.translatesAutoresizingMaskIntoConstraints = false - replyToFylesLabel.textColor = AppTheme.shared.colorScheme.secondaryLabel - replyToFylesLabel.font = MessageCollectionViewCell.defaultBodyFont - replyToStackView.addArrangedSubview(replyToFylesLabel) - - bodyTextViewPaddingView.accessibilityIdentifier = "bodyTextViewPaddingView" - bodyTextViewPaddingView.translatesAutoresizingMaskIntoConstraints = false - bodyTextViewPaddingView.backgroundColor = .clear - roundedRectStackView.addArrangedSubview(bodyTextViewPaddingView) - - bodyTextView.accessibilityIdentifier = "bodyTextView" - bodyTextView.translatesAutoresizingMaskIntoConstraints = false - bodyTextView.isScrollEnabled = false - bodyTextView.textContainerInset = .zero - bodyTextView.isEditable = false - bodyTextView.dataDetectorTypes = .all - bodyTextView.delegate = self - // Remove all the gesture recognizers on the body text view, except the link tap gesture recognizer - for recognizer in bodyTextView.gestureRecognizers! { - if let name = recognizer.name, name == "UITextInteractionNameLinkTap" { - continue - } else { - recognizer.isEnabled = false - } - } - bodyTextView.backgroundColor = .clear - bodyTextViewPaddingView.addSubview(bodyTextView) - - dateLabel.accessibilityIdentifier = "dateLabel" - dateLabel.font = UIFont.preferredFont(forTextStyle: .caption2) - dateLabel.textColor = AppTheme.shared.colorScheme.cellDate - - fyleRoundedRectView.accessibilityIdentifier = "fyleRoundedRectView" - fyleRoundedRectView.translatesAutoresizingMaskIntoConstraints = false - fyleRoundedRectView.backgroundColor = AppTheme.shared.colorScheme.surfaceLight - - collectionOfFylesViewTopPadding.accessibilityIdentifier = "collectionOfFylesViewTopPadding" - collectionOfFylesViewTopPadding.translatesAutoresizingMaskIntoConstraints = false - - // Configure the horizontal stack view with informations about ephemeral settings of the message - - containerViewForEphemeralInfos.translatesAutoresizingMaskIntoConstraints = false - containerViewForEphemeralInfos.accessibilityIdentifier = "vStackPaddingView" - - vStackForEphemeralConfig.translatesAutoresizingMaskIntoConstraints = false - vStackForEphemeralConfig.accessibilityIdentifier = "vStackForEphemeralConfig" - vStackForEphemeralConfig.axis = .vertical - vStackForEphemeralConfig.distribution = .fill - vStackForEphemeralConfig.alignment = .center - containerViewForEphemeralInfos.addSubview(vStackForEphemeralConfig) - - hStackForEphemeralConfig.translatesAutoresizingMaskIntoConstraints = false - hStackForEphemeralConfig.accessibilityIdentifier = "hStackForEphemeralConfig" - hStackForEphemeralConfig.axis = .horizontal - hStackForEphemeralConfig.spacing = 8.0 - hStackForEphemeralConfig.distribution = .fillProportionally - hStackForEphemeralConfig.alignment = .firstBaseline - hStackForEphemeralConfig.backgroundColor = .clear - vStackForEphemeralConfig.addArrangedSubview(hStackForEphemeralConfig) - - // Configure the image view that can be inserted in the hStackForEphemeralConfig in case the message is read once - - do { - countdownImageViewReadOnce.translatesAutoresizingMaskIntoConstraints = false - countdownImageViewReadOnce.accessibilityIdentifier = "countdownImageViewReadOnce" - let configuration = UIImage.SymbolConfiguration(textStyle: MessageCollectionViewCell.expirationFontTextStyle) - let image = UIImage(systemName: "flame.fill", withConfiguration: configuration) - countdownImageViewReadOnce.image = image - countdownImageViewReadOnce.tintColor = countdownColorReadOnce - countdownImageViewReadOnce.contentMode = .scaleAspectFit - countdownImageViewReadOnce.setContentHuggingPriority(.defaultHigh, for: .horizontal) - } - - do { - countdownImageViewExpiration.translatesAutoresizingMaskIntoConstraints = false - countdownImageViewExpiration.accessibilityIdentifier = "countdownImageViewExpiration" - let configuration = UIImage.SymbolConfiguration(textStyle: MessageCollectionViewCell.expirationFontTextStyle) - let image = UIImage(systemName: "timer", withConfiguration: configuration) - countdownImageViewExpiration.image = image - countdownImageViewExpiration.tintColor = countdownColorExpiration - countdownImageViewExpiration.contentMode = .scaleAspectFit - countdownImageViewExpiration.setContentHuggingPriority(.defaultHigh, for: .horizontal) - } - - do { - countdownImageViewVisibility.translatesAutoresizingMaskIntoConstraints = false - countdownImageViewVisibility.accessibilityIdentifier = "countdownImageViewVisibility" - let configuration = UIImage.SymbolConfiguration(textStyle: MessageCollectionViewCell.expirationFontTextStyle) - let image = UIImage(systemName: "eyes", withConfiguration: configuration) - countdownImageViewVisibility.image = image - countdownImageViewVisibility.tintColor = countdownColorVisibility - countdownImageViewVisibility.contentMode = .scaleAspectFit - countdownImageViewVisibility.setContentHuggingPriority(.defaultHigh, for: .horizontal) - } - - // Configure the countdown label - - do { - countdownLabel.translatesAutoresizingMaskIntoConstraints = false - countdownLabel.accessibilityIdentifier = "countdownLabel" - countdownLabel.font = UIFont.preferredFont(forTextStyle: MessageCollectionViewCell.expirationFontTextStyle) - } - - // Configure the stack to show for messages with limited visibility - - do { - limitedVisibilityStack.translatesAutoresizingMaskIntoConstraints = false - limitedVisibilityStack.accessibilityIdentifier = "limitedVisibilityStack" - limitedVisibilityStack.axis = .horizontal - limitedVisibilityStack.alignment = .firstBaseline - limitedVisibilityStack.spacing = 4.0 - - let imageLimitedVisibility = UIImageView() - imageLimitedVisibility.translatesAutoresizingMaskIntoConstraints = false - imageLimitedVisibility.accessibilityIdentifier = "imageLimitedVisibility" - let configuration = UIImage.SymbolConfiguration(textStyle: MessageCollectionViewCell.expirationFontTextStyle) - let image = UIImage(systemName: "eyes", withConfiguration: configuration) - imageLimitedVisibility.image = image - imageLimitedVisibility.tintColor = .orange - imageLimitedVisibility.contentMode = .scaleAspectFit - limitedVisibilityStack.addArrangedSubview(imageLimitedVisibility) - - let labelLimitedVisibility = UILabel() - labelLimitedVisibility.translatesAutoresizingMaskIntoConstraints = false - labelLimitedVisibility.accessibilityIdentifier = "labelLimitedVisibility" - labelLimitedVisibility.textColor = .orange - labelLimitedVisibility.font = UIFont.preferredFont(forTextStyle: MessageCollectionViewCell.expirationFontTextStyle) - limitedVisibilityStack.addArrangedSubview(labelLimitedVisibility) - } - - do { - limitedExistenceStack.translatesAutoresizingMaskIntoConstraints = false - limitedExistenceStack.accessibilityIdentifier = "limitedExistenceStack" - limitedExistenceStack.axis = .horizontal - limitedExistenceStack.alignment = .firstBaseline - limitedExistenceStack.spacing = 4.0 - - let imageLimitedExistence = UIImageView() - imageLimitedExistence.translatesAutoresizingMaskIntoConstraints = false - imageLimitedExistence.accessibilityIdentifier = "imageLimitedExistence" - let configuration = UIImage.SymbolConfiguration(textStyle: MessageCollectionViewCell.expirationFontTextStyle) - let image = UIImage(systemName: "timer", withConfiguration: configuration) - imageLimitedExistence.image = image - imageLimitedExistence.tintColor = .systemGray - imageLimitedExistence.contentMode = .scaleAspectFit - limitedExistenceStack.addArrangedSubview(imageLimitedExistence) - - let labelLimitedExistence = UILabel() - labelLimitedExistence.translatesAutoresizingMaskIntoConstraints = false - labelLimitedExistence.accessibilityIdentifier = "labelLimitedExistence" - labelLimitedExistence.textColor = .systemGray - labelLimitedExistence.font = UIFont.preferredFont(forTextStyle: MessageCollectionViewCell.expirationFontTextStyle) - limitedExistenceStack.addArrangedSubview(labelLimitedExistence) - } - - do { - readOnceStack.translatesAutoresizingMaskIntoConstraints = false - readOnceStack.accessibilityIdentifier = "readOnceStack" - readOnceStack.axis = .horizontal - readOnceStack.alignment = .firstBaseline - readOnceStack.spacing = 4.0 - - let imageReadOnce = UIImageView() - imageReadOnce.translatesAutoresizingMaskIntoConstraints = false - imageReadOnce.accessibilityIdentifier = "imageReadOnce" - let configuration = UIImage.SymbolConfiguration(textStyle: MessageCollectionViewCell.expirationFontTextStyle) - let image = UIImage(systemName: "flame.fill", withConfiguration: configuration) - imageReadOnce.image = image - imageReadOnce.tintColor = .red - imageReadOnce.contentMode = .scaleAspectFit - readOnceStack.addArrangedSubview(imageReadOnce) - - let labelReadOnce = UILabel() - labelReadOnce.translatesAutoresizingMaskIntoConstraints = false - labelReadOnce.accessibilityIdentifier = "labelReadOnce" - labelReadOnce.textColor = .red - labelReadOnce.font = UIFont.preferredFont(forTextStyle: MessageCollectionViewCell.expirationFontTextStyle) - labelReadOnce.text = NSLocalizedString("READ_ONCE_LABEL", comment: "") - labelReadOnce.textAlignment = .center - readOnceStack.addArrangedSubview(labelReadOnce) - } - - // Setup the countdown to be shown for certain ephemeral messages in the top left or right corner - - countdownStack.translatesAutoresizingMaskIntoConstraints = false - countdownStack.accessibilityIdentifier = "countdownStack" - countdownStack.axis = .vertical - countdownStack.distribution = .fill - // The countdownStack.alignment value is set in subclasses - countdownStack.spacing = 2.0 - - setupConstraints() - } - - - private func setupConstraints() { - - let constraints = [ - mainStackView.topAnchor.constraint(equalTo: self.topAnchor), - mainStackView.bottomAnchor.constraint(equalTo: self.bottomAnchor), - roundedRectStackView.topAnchor.constraint(equalTo: roundedRectView.topAnchor, constant: 4.0), - roundedRectStackView.trailingAnchor.constraint(equalTo: roundedRectView.trailingAnchor, constant: -4.0), - roundedRectStackView.bottomAnchor.constraint(equalTo: roundedRectView.bottomAnchor, constant: -4.0), - roundedRectStackView.leadingAnchor.constraint(equalTo: roundedRectView.leadingAnchor, constant: 4.0), - replyToRoundedRectView.topAnchor.constraint(equalTo: replyToRoundedRectContentView.topAnchor, constant: 0), - replyToRoundedRectView.trailingAnchor.constraint(equalTo: replyToRoundedRectContentView.trailingAnchor, constant: 0), - replyToRoundedRectView.bottomAnchor.constraint(equalTo: replyToRoundedRectContentView.bottomAnchor, constant: 0), - replyToRoundedRectView.leadingAnchor.constraint(equalTo: replyToRoundedRectContentView.leadingAnchor, constant: -4.0), - replyToStackView.topAnchor.constraint(equalTo: replyToRoundedRectContentView.topAnchor, constant: 8.0), - replyToStackView.trailingAnchor.constraint(equalTo: replyToRoundedRectContentView.trailingAnchor, constant: -8.0), - replyToStackView.bottomAnchor.constraint(equalTo: replyToRoundedRectContentView.bottomAnchor, constant: -8.0), - replyToStackView.leadingAnchor.constraint(equalTo: replyToRoundedRectContentView.leadingAnchor, constant: 8.0), - bodyTextView.topAnchor.constraint(equalTo: bodyTextViewPaddingView.topAnchor, constant: 4.0), - bodyTextView.trailingAnchor.constraint(equalTo: bodyTextViewPaddingView.trailingAnchor, constant: -4.0), - bodyTextView.bottomAnchor.constraint(equalTo: bodyTextViewPaddingView.bottomAnchor, constant: -4.0), - bodyTextView.leadingAnchor.constraint(equalTo: bodyTextViewPaddingView.leadingAnchor, constant: 4.0), - roundedRectStackView.widthAnchor.constraint(lessThanOrEqualTo: self.widthAnchor, multiplier: 0.8), - collectionOfFylesViewTopPadding.heightAnchor.constraint(equalToConstant: 6.0), - containerViewForEphemeralInfos.topAnchor.constraint(equalTo: vStackForEphemeralConfig.topAnchor, constant: -4.0), - containerViewForEphemeralInfos.rightAnchor.constraint(equalTo: vStackForEphemeralConfig.rightAnchor, constant: 4.0), - containerViewForEphemeralInfos.bottomAnchor.constraint(equalTo: vStackForEphemeralConfig.bottomAnchor), - containerViewForEphemeralInfos.leftAnchor.constraint(equalTo: vStackForEphemeralConfig.leftAnchor, constant: -8.0), - ] - NSLayoutConstraint.activate(constraints) - - self.roundedRectStackViewWidthConstraintWhenShowingFyles = roundedRectStackView.widthAnchor.constraint(equalTo: self.widthAnchor, multiplier: 0.8) - - bodyTextView.setContentCompressionResistancePriority(.required, for: .horizontal) - replyToTextView.setContentCompressionResistancePriority(.required, for: .horizontal) - replyToLabel.setContentCompressionResistancePriority(.required, for: .horizontal) - replyToFylesLabel.setContentCompressionResistancePriority(.required, for: .horizontal) - - } - - - override func layoutSubviews() { - super.layoutSubviews() - } - - override func prepareForReuse() { - super.prepareForReuse() - message = nil - repliedMessage = nil - attachments.removeAll() - bodyTextView.text = nil - bodyTextView.font = MessageCollectionViewCell.defaultBodyFont - dateLabel.text = nil - prepareReplyToForReuse() - roundedRectStackView.removeArrangedSubview(replyToRoundedRectView) - replyToRoundedRectView.removeFromSuperview() - bodyTextView.isHidden = true - bodyTextViewPaddingView.isHidden = true - fyleRoundedRectView.removeFromSuperview() - roundedRectStackViewWidthConstraintWhenShowingFyles.isActive = false - collectionOfFylesViewTopPadding.removeFromSuperview() - collectionOfFylesView?.removeFromSuperview() - collectionOfFylesView = nil - linkView?.removeFromSuperview() - linkView = nil - while let view = hStackForEphemeralConfig.arrangedSubviews.first { - hStackForEphemeralConfig.removeArrangedSubview(view) - view.removeFromSuperview() - } - roundedRectStackView.removeArrangedSubview(containerViewForEphemeralInfos) - containerViewForEphemeralInfos.removeFromSuperview() - removeCountdownStack() - messageEditedStatusImageView.isHidden = true - counterOfLayoutIfNeededCalls = MessageCollectionViewCell.counterOfLayoutIfNeededCallsInitialValue - resetCounterOfLayoutIfNeededCalls() - } - - - private func resetCounterOfLayoutIfNeededCalls() { - counterOfLayoutIfNeededCalls = MessageCollectionViewCell.counterOfLayoutIfNeededCallsInitialValue - } - - enum MessageElement { - case text(_ text: String) - case onlyAttachments(count: Int) - case wiped - case remoteWiped - case tapToRead - - var text: String? { - switch self { - case .text(let text): return text - case .wiped: return NSLocalizedString("WIPED_MESSAGE", comment: "") - case .remoteWiped: return NSLocalizedString("REMOTE_WIPED_MESSAGE", comment: "") - case .tapToRead: return NSLocalizedString("TAP_TO_READ", comment: "") - case .onlyAttachments: return nil - } - } - - /// This is used in ComposeMessageView#loadReplyTo to give information about the message to reply - var replyToDescription: String { - switch self { - case .text(let text): return text - case .wiped: return NSLocalizedString("WIPED_MESSAGE", comment: "") - case .remoteWiped: return NSLocalizedString("REMOTE_WIPED_MESSAGE", comment: "") - case .tapToRead: return NSLocalizedString("TAP_TO_READ", comment: "") - case .onlyAttachments(count: let count): - return PersistedMessage.Strings.countAttachments(count) - } - } - - var font: UIFont { - switch self { - case .text(let text): - if text.count <= maxNumberOfLargeEmojis, text.containsOnlyEmoji { - return emojiBodyFont - } else { - return defaultBodyFont - } - case .wiped, .remoteWiped, .onlyAttachments: - let descriptor = defaultBodyFont.fontDescriptor.withSymbolicTraits(.traitItalic) ?? defaultBodyFont.fontDescriptor - return UIFont(descriptor: descriptor, size: 0) - case .tapToRead: - let descriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: expirationFontTextStyle) - return UIFont(descriptor: descriptor, size: 0) - } - } - - var centered: Bool { - switch self { - case .tapToRead: return true - default: return false - } - } - } - - static func extractMessageElements(from message: PersistedMessage) -> MessageElement? { - if let messageSent = message as? PersistedMessageSent, messageSent.isLocallyWiped { - return .wiped - } else if message.isRemoteWiped { - return .remoteWiped - } else if let receivedMessage = message as? PersistedMessageReceived, receivedMessage.readingRequiresUserAction { - return .tapToRead - } else { - if let textBody = message.textBody, !textBody.isEmpty { - return .text(textBody) - } else if let fyleMessageJoinWithStatus = message.fyleMessageJoinWithStatus, - !fyleMessageJoinWithStatus.isEmpty { - return .onlyAttachments(count: fyleMessageJoinWithStatus.count) - } else { - /// No text, no attachements -> should not happend - return nil - } - } - } - - - private func prepareReplyToForReuse() { - replyToLabel.text = nil - replyToLabel.textColor = .clear - replyToTextView.text = nil - replyToTextView.font = MessageCollectionViewCell.defaultBodyFont - replyToTextView.isHidden = true - replyToFylesLabel.text = nil - replyToFylesLabel.isHidden = true - replyToRoundedRectView.backgroundColor = AppTheme.shared.colorScheme.receivedCellReplyToBackground - } - - - - func prepare(with message: PersistedMessage, attachments: [FyleMessageJoinWithStatus], withDateFormatter dateFormatter: DateFormatter, hideProgresses: Bool) { - - resetCounterOfLayoutIfNeededCalls() - - self.message = message - self.attachments = attachments - - refreshBody(with: message) - - dateLabel.text = dateFormatter.string(from: message.timestamp) - refreshReplyTo(with: message) - - refreshEditedStatus() - - if !attachments.isEmpty { - insertCollectionOfFylesViewForShowingAttachments(hideProgresses: hideProgresses) - } - - // Display any preview link - let doFetchContentRichURLsMetadataSetting = message.discussion.localConfiguration.doFetchContentRichURLsMetadata ?? ObvMessengerSettings.Discussions.doFetchContentRichURLsMetadata - let doFetchContentRichURLsMetadata: Bool - switch doFetchContentRichURLsMetadataSetting { - case .never: doFetchContentRichURLsMetadata = false - case .withinSentMessagesOnly: doFetchContentRichURLsMetadata = message is PersistedMessageSent - case .always: doFetchContentRichURLsMetadata = true - } - if doFetchContentRichURLsMetadata { - if let urls = message.textBody?.extractURLs(), - !urls.isEmpty { - // Fetch the metadata - let firstURL = urls.first! - switch CachedLPMetadataProvider.shared.getCachedMetada(for: firstURL) { - case .metadataCached(metadata: let metadata): - displayLinkMetadata(metadata, for: message, animate: false) - case .siteDoesNotProvideMetada, .failureOccuredWhenFetchingOrCachingMetadata: - break - case .metadaNotCachedYet: - CachedLPMetadataProvider.shared.fetchAndCacheMetadata(for: firstURL) { [weak self] in - guard let _self = self else { return } - guard self?.message == message else { return } - self?.delegate?.reloadCell(_self) - } - } - } - } - - // If the message is ephemeral, show appropriate information - refreshEphemeralInformation(with: message) - - // 2020-12-11: The following line was removed to prevent a freeze - // 2020-12-23: This line was commented out to try to solve the "empty cell" issue. For now, no more freeze. - // 2020-01-10: It appears that the following line does lead to occasion freezes. We should do something about this. - if counterOfLayoutIfNeededCalls > 0 { - counterOfLayoutIfNeededCalls -= 1 - self.layoutIfNeeded() - } - } - - - private func refreshEditedStatus() { - guard let message = self.message else { return } - messageEditedStatusImageView.isHidden = !message.isEdited - } - - - private func insertCollectionOfFylesViewForShowingAttachments(hideProgresses: Bool) { - let allAttachmentsAreWiped = attachments.allSatisfy { $0.isWiped } - guard !allAttachmentsAreWiped else { return } - roundedRectStackViewWidthConstraintWhenShowingFyles.isActive = true - assert(collectionOfFylesView == nil) - self.collectionOfFylesView = CollectionOfFylesView(attachments: attachments, hideProgresses: hideProgresses) - if !roundedRectStackView.arrangedSubviews.filter({ !$0.isHidden }).isEmpty { - roundedRectStackView.addArrangedSubview(collectionOfFylesViewTopPadding) - } - roundedRectStackView.addArrangedSubview(collectionOfFylesView) - } - - - func refreshReplyTo(with message: PersistedMessage) { - resetCounterOfLayoutIfNeededCalls() - switch message.genericRepliesTo { - case .none: - self.repliedMessage = nil - case .notAvailableYet: - if roundedRectStackView.subviews.filter({ $0.accessibilityIdentifier == "replyToRoundedRectView" }).isEmpty { - roundedRectStackView.insertArrangedSubview(replyToRoundedRectView, at: max(0, roundedRectStackView.arrangedSubviews.count-1)) - } - prepareReplyToForReuse() - replyToTextView.isHidden = false - replyToTextView.text = Strings.replyToMessageUnavailable - case .available(message: let repliedMessage): - self.repliedMessage = repliedMessage - // Make sure we do *not* insert the replyToRoundedRectView twice - // If there already is a replyToRoundedRectView, we asssume it contains the appropriate values, so we return immediately - guard roundedRectStackView.subviews.filter({ $0.accessibilityIdentifier == "replyToRoundedRectView" }).isEmpty else { return } - // We can insert the replyToRoundedRectView and configure it - roundedRectStackView.insertArrangedSubview(replyToRoundedRectView, at: max(0, roundedRectStackView.arrangedSubviews.count-1)) - if let repliedMessageElement = MessageCollectionViewCell.extractMessageElements(from: repliedMessage), - let text = repliedMessageElement.text { - replyToTextView.isHidden = false - replyToTextView.text = text - replyToTextView.font = repliedMessageElement.font - if repliedMessageElement.centered { - replyToTextView.textAlignment = .center - } - } - if let rcvMsg = repliedMessage as? PersistedMessageReceived { - if let rcvMsgContactIdentity = rcvMsg.contactIdentity { - replyToLabel.text = rcvMsgContactIdentity.customDisplayName ?? rcvMsgContactIdentity.identityCoreDetails?.getDisplayNameWithStyle(.firstNameThenLastName) ?? rcvMsgContactIdentity.fullDisplayName - } else { - replyToLabel.text = CommonString.deletedContact - } - replyToLabel.textColor = rcvMsg.contactIdentity?.cryptoId.colors.text ?? appTheme.colorScheme.secondaryLabel - if !rcvMsg.fyleMessageJoinWithStatuses.isEmpty { - let numberOfAttachments = rcvMsg.fyleMessageJoinWithStatuses.count - replyToFylesLabel.isHidden = false - replyToFylesLabel.text = Strings.seeAttachments(numberOfAttachments) - } - } else if let sntMsg = repliedMessage as? PersistedMessageSent { - replyToLabel.text = sntMsg.discussion.ownedIdentity?.identityCoreDetails.getDisplayNameWithStyle(.firstNameThenLastName) - replyToLabel.textColor = sntMsg.discussion.ownedIdentity?.cryptoId.colors.text - if !sntMsg.fyleMessageJoinWithStatuses.isEmpty { - let numberOfAttachments = sntMsg.fyleMessageJoinWithStatuses.count - replyToFylesLabel.isHidden = false - replyToFylesLabel.text = Strings.seeAttachments(numberOfAttachments) - } - } - replyToRoundedRectView.backgroundColor = replyToLabel.textColor - case .deleted: - if roundedRectStackView.subviews.filter({ $0.accessibilityIdentifier == "replyToRoundedRectView" }).isEmpty { - roundedRectStackView.insertArrangedSubview(replyToRoundedRectView, at: max(0, roundedRectStackView.arrangedSubviews.count-1)) - } - prepareReplyToForReuse() - replyToTextView.isHidden = false - replyToTextView.text = Strings.replyToMessageWasDeleted - } - } - - - private func refreshBody(with message: PersistedMessage) { - guard !message.isWiped && !message.isDeleted else { return } - if let messageElement = MessageCollectionViewCell.extractMessageElements(from: message), - let text = messageElement.text { - bodyTextView.text = text - bodyTextView.font = messageElement.font - if messageElement.centered { - bodyTextView.textAlignment = .center - } - bodyTextViewPaddingView.isHidden = false - bodyTextView.isHidden = false - } else { - bodyTextView.text = nil - bodyTextViewPaddingView.isHidden = true - bodyTextView.isHidden = true - } - bodyTextView.layoutIfNeeded() - } - - private func refreshEphemeralInformation(with message: PersistedMessage) { - var addContainerViewForEphemeralInfos = false - guard !message.isWiped && !message.isDeleted else { return } - if case .tapToRead = MessageCollectionViewCell.extractMessageElements(from: message) { - if message.readOnce { - hStackForEphemeralConfig.addArrangedSubview(readOnceStack) - addContainerViewForEphemeralInfos = true - } - if let timeInterval = message.visibilityDuration, let duration = DurationOption(rawValue: Int(timeInterval)) { - (limitedVisibilityStack.arrangedSubviews.last as? UILabel)?.text = duration.description - hStackForEphemeralConfig.addArrangedSubview(limitedVisibilityStack) - addContainerViewForEphemeralInfos = true - } - assert(addContainerViewForEphemeralInfos) /// guarantees that tap to read must shows an additional information. - } - if addContainerViewForEphemeralInfos { - roundedRectStackView.addArrangedSubview(containerViewForEphemeralInfos) - } else { - roundedRectStackView.removeArrangedSubview(containerViewForEphemeralInfos) - containerViewForEphemeralInfos.removeFromSuperview() - } - } - - func refresh() { - guard let message = self.message else { return } - resetCounterOfLayoutIfNeededCalls() - refreshReplyTo(with: message) - refreshBody(with: message) - refreshEphemeralInformation(with: message) - if let collectionOfFylesView = self.collectionOfFylesView { - collectionOfFylesView.refresh() - } else if !attachments.isEmpty { - // This happens when the messages was obtained through a user notification. In that case, the attachments are initially nil. - // When the message is eventually downloaded from the server, we get the attachments that we update here (note that the attachments were set in the refresh method of MessageReceivedCollectionViewCell). - insertCollectionOfFylesViewForShowingAttachments(hideProgresses: false) - } - refreshCellCountdown() - refreshEditedStatus() - } - - - func refreshCellCountdown() { - (self as? MessageReceivedCollectionViewCell)?.refreshMessageReceivedCellCountdown() - (self as? MessageSentCollectionViewCell)?.refreshMessageReceivedCellCountdown() - } - - - - private func displayLinkMetadata(_ metadata: LPLinkMetadata, for message: PersistedMessage, animate: Bool) { - guard linkView == nil else { return } - linkView = LPLinkView(metadata: metadata) - if linkView?.traitCollection.userInterfaceStyle == .dark { - if self is MessageReceivedCollectionViewCell { - // Keep dark mode - } else { - linkView?.overrideUserInterfaceStyle = .light - } - } else { - // Keep light mode - } - roundedRectStackView.addArrangedSubview(linkView!) - linkView!.sizeToFit() - } - - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - - // 2020-12-11: The following line was removed to prevent a freeze - if counterOfLayoutIfNeededCalls > 0 { - counterOfLayoutIfNeededCalls -= 1 - self.layoutIfNeeded() - } - - var fittingSize = UIView.layoutFittingCompressedSize - fittingSize.width = layoutAttributes.size.width - let size = systemLayoutSizeFitting(fittingSize, withHorizontalFittingPriority: .defaultHigh, verticalFittingPriority: .defaultLow) - var adjustedFrame = layoutAttributes.frame - adjustedFrame.size.height = size.height - layoutAttributes.frame = adjustedFrame - - return layoutAttributes - - } - - - /// The received point shall be in the coordinate space of this cell - private func fyleMessageJoinWithStatus(at point: CGPoint) -> FyleMessageJoinWithStatus? { - guard let collectionOfFylesView = collectionOfFylesView else { return nil } - let newPoint = convert(point, to: collectionOfFylesView) - return collectionOfFylesView.fyleMessageJoinWithStatus(at: newPoint) - } - - func indexOfFyleMessageJoinWithStatus(at point: CGPoint) -> Int? { - guard let fyleMessageJoinWithStatus = fyleMessageJoinWithStatus(at: point) else { return nil } - return self.fyleMessagesJoinWithStatus?.firstIndex(of: fyleMessageJoinWithStatus) - } - - func thumbnailViewOfFyleMessageJoinWithStatus(_ attachment: FyleMessageJoinWithStatus) -> UIView? { - return collectionOfFylesView?.thumbnailViewOfFyleMessageJoinWithStatus(attachment) - } - - var countdownStackIsShown: Bool { - roundedRectView.subviews.first(where: { $0 == countdownStack }) != nil - } - -} - - -extension MessageCollectionViewCell: UITextViewDelegate { - - func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { - - // If the URL is an invite or a configuration, we navigate to the deep link - do { - guard var urlComponents = URLComponents(url: URL, resolvingAgainstBaseURL: true) else { return false } - urlComponents.scheme = "https" - guard let newUrl = urlComponents.url else { return false } - if let olvidURL = OlvidURL(urlRepresentation: newUrl) { - Task { await NewAppStateManager.shared.handleOlvidURL(olvidURL) } - return false - } - } - - // If we reach this point, the URL is not an Olvid URL - if self is MessageSentCollectionViewCell && textView == self.bodyTextView { - // In case the user tapped a link she sent, no need to ask for a confirmation - return true - } - if URL.absoluteString.lowercased().starts(with: "http") || URL.absoluteString.lowercased().starts(with: "https") { - delegate?.userSelectedURL(URL) - return false - } else { - return true - } - } - -} - - -// MARK: - Refreshing countdowns for ephemeral messages - -extension MessageCollectionViewCell { - - // None of the methods/variables declared within this extension are expected to be called directely. - // They are declared here so as to be used by both `MessageReceivedCollectionViewCell` and `MessageSentCollectionViewCell` - - /// Do not call this method directly. It is shared between `MessageReceivedCollectionViewCell` and `MessageSentCollectionViewCell` - func removeCurrentCountdownImageView() { - let imageViews = countdownStack.arrangedSubviews.filter({ $0 is UIImageView }) - for imageView in imageViews { - countdownStack.removeArrangedSubview(imageView) - imageView.removeFromSuperview() - } - } - - - /// Do not call this method directly. It is shared between `MessageReceivedCollectionViewCell` and `MessageSentCollectionViewCell` - func refreshCellCountdownForReadOnce() { - replaceCountdownImageView(with: countdownImageViewReadOnce) - countdownLabel.text = nil - } - - - /// Do not call this method directly. It is shared between `MessageReceivedCollectionViewCell` and `MessageSentCollectionViewCell` - func replaceCountdownImageView(with imageView: UIImageView) { - guard currentCountdownImageView != imageView else { return } - removeCurrentCountdownImageView() - countdownStack.insertArrangedSubview(imageView, at: 0) - } - - - var currentCountdownImageView: UIImageView? { - countdownStack.arrangedSubviews.first as? UIImageView - } - - - /// Do not call this method directly. It is shared between `MessageReceivedCollectionViewCell` and `MessageSentCollectionViewCell` - func refreshCellCount(expirationDate: Date, countdownImageView: UIImageView) { - replaceCountdownImageView(with: countdownImageView) - let duration = expirationDate.timeIntervalSinceNow - countdownLabel.text = MessageCollectionViewCell.durationFormatter.string(from: duration) - countdownLabel.textColor = countdownImageView.tintColor - } - - - func removeCountdownStack() { - removeCurrentCountdownImageView() - countdownStack.removeFromSuperview() - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageCollectionViewCellDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageCollectionViewCellDelegate.swift deleted file mode 100644 index 8f7d7f64..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageCollectionViewCellDelegate.swift +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -protocol MessageCollectionViewCellDelegate: AnyObject { - func userSelectedURL(_: URL) - func reloadCell(_ cell: UICollectionViewCell) -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageReceivedCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageReceivedCollectionViewCell.swift deleted file mode 100644 index 4c1c0ca5..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageReceivedCollectionViewCell.swift +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import CoreData -import ObvUI -import ObvUICoreData - - -final class MessageReceivedCollectionViewCell: MessageCollectionViewCell, CellWithPersistedMessageReceived { - - static let identifier = "MessageReceivedCollectionViewCell" - - let authorNameLabel = UILabelWithLineFragmentPadding() - let authorNameLabelPaddingView = UIView() - - var messageReceived: PersistedMessageReceived? { message as? PersistedMessageReceived } - - override init(frame: CGRect) { - super.init(frame: frame) - setup() - } - - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - setup() - } - - - override func setup() { - super.setup() - - mainStackView.alignment = .leading - - roundedRectView.backgroundColor = AppTheme.shared.colorScheme.receivedCellBackground - - replyToRoundedRectContentView.backgroundColor = AppTheme.shared.colorScheme.receivedCellReplyToBackground - replyToRoundedRectView.backgroundColor = AppTheme.shared.colorScheme.receivedCellReplyToBackground - replyToTextView.textColor = AppTheme.shared.colorScheme.receivedCellReplyToBody - replyToTextView.linkTextAttributes = [NSAttributedString.Key.foregroundColor: AppTheme.shared.colorScheme.receivedCellReplyToBody, - NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue, - NSAttributedString.Key.underlineColor: AppTheme.shared.colorScheme.receivedCellReplyToBody] - - bodyTextView.textColor = AppTheme.shared.colorScheme.receivedCellBody - bodyTextView.linkTextAttributes = [NSAttributedString.Key.foregroundColor: AppTheme.shared.colorScheme.receivedCellLink, - NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue, - NSAttributedString.Key.underlineColor: AppTheme.shared.colorScheme.receivedCellLink] - - authorNameLabelPaddingView.accessibilityIdentifier = "authorNameLabelPaddingView" - authorNameLabelPaddingView.translatesAutoresizingMaskIntoConstraints = false - authorNameLabelPaddingView.backgroundColor = .clear - roundedRectStackView.insertArrangedSubview(authorNameLabelPaddingView, at: 0) - - authorNameLabel.accessibilityIdentifier = "authorNameLabel" - authorNameLabel.translatesAutoresizingMaskIntoConstraints = false - authorNameLabel.font = UIFont.preferredFont(forTextStyle: .headline) - authorNameLabelPaddingView.addSubview(authorNameLabel) - - countdownStack.alignment = .leading - - bottomStackView.addArrangedSubview(dateLabel) - bottomStackView.addArrangedSubview(messageEditedStatusImageView) - - setupConstraints() - prepareForReuse() - } - - - func setupConstraints() { - let constraints = [ - mainStackView.leadingAnchor.constraint(equalTo: self.leadingAnchor), - mainStackView.leadingAnchor.constraint(equalTo: roundedRectView.leadingAnchor), - authorNameLabel.topAnchor.constraint(equalTo: authorNameLabelPaddingView.topAnchor, constant: 2.0), - authorNameLabel.trailingAnchor.constraint(equalTo: authorNameLabelPaddingView.trailingAnchor, constant: -4.0), - authorNameLabel.bottomAnchor.constraint(equalTo: authorNameLabelPaddingView.bottomAnchor, constant: 0.0), - authorNameLabel.leadingAnchor.constraint(equalTo: authorNameLabelPaddingView.leadingAnchor, constant: 4.0), - ] - NSLayoutConstraint.activate(constraints) - - authorNameLabel.setContentCompressionResistancePriority(.required, for: .horizontal) - - } - - - override func prepareForReuse() { - super.prepareForReuse() - authorNameLabelPaddingView.isHidden = true - authorNameLabel.text = nil - authorNameLabel.textColor = .clear - } - - - func prepare(with message: PersistedMessageReceived, withDateFormatter dateFormatter: DateFormatter) { - switch try? message.discussion.kind { - case .oneToOne, .none: - authorNameLabel.isHidden = true - case .groupV1, .groupV2: - authorNameLabelPaddingView.isHidden = false - if let messageContactIdentity = message.contactIdentity { - authorNameLabel.text = messageContactIdentity.customDisplayName ?? messageContactIdentity.identityCoreDetails?.getDisplayNameWithStyle(.firstNameThenLastName) ?? messageContactIdentity.fullDisplayName - authorNameLabel.textColor = messageContactIdentity.cryptoId.colors.text - } else { - authorNameLabel.text = CommonString.deletedContact - authorNameLabel.textColor = appTheme.colorScheme.secondaryLabel - } - } - super.prepare(with: message, attachments: message.fyleMessageJoinWithStatuses, withDateFormatter: dateFormatter, hideProgresses: false) - refreshMessageReceivedCellCountdown() - refreshBodyTextViewColor() - } - - - /// Calling this method refreshes this cell's subviews, using the same message - override func refresh() { - if let refreshedAttachments = message?.fyleMessageJoinWithStatus, !refreshedAttachments.isEmpty, self.attachments.isEmpty { - // This happens when the messages was obtained through a user notification. In that case, the attachments are initially nil. - // When the message is eventually downloaded from the server, we get the attachments that we set now. - // The actual update of the collection view showing these attachments is done in the superclass. - self.attachments = refreshedAttachments - } - refreshBodyTextViewColor() - super.refresh() - } - - private func refreshBodyTextViewColor() { - if let message = message, !message.isWiped, !message.isDeleted, - case .tapToRead = MessageCollectionViewCell.extractMessageElements(from: message) { - bodyTextView.textColor = AppTheme.shared.colorScheme.tapToRead - } else { - bodyTextView.textColor = AppTheme.shared.colorScheme.receivedCellBody - } - } - -} - -// MARK: - Refreshing countdowns for ephemeral messages - -extension MessageReceivedCollectionViewCell { - - func refreshMessageReceivedCellCountdown() { - guard let message = self.message as? PersistedMessageReceived else { assertionFailure(); return } - guard message.isEphemeralMessage else { return } - if message.status == .read { - // Make sure the countdownStack is shown - showCountdownStack() - // After interaction, we always display a countdown image and possibly a countdown - switch (message.readOnce, message.expirationForReceivedLimitedVisibility, message.expirationForReceivedLimitedExistence) { - case (true, .none, .none): - refreshCellCountdownForReadOnce() - case (false, .some(let visibilityExpiration), .none): - refreshCellCount(expirationDate: visibilityExpiration.expirationDate, countdownImageView: countdownImageViewVisibility) - case (true, .some(let visibilityExpiration), .none): - refreshCellCount(expirationDate: visibilityExpiration.expirationDate, countdownImageView: countdownImageViewReadOnce) - case (false, .none, .some(let existenceExpiration)): - refreshCellCount(expirationDate: existenceExpiration.expirationDate, countdownImageView: countdownImageViewExpiration) - case (true, .none, .some(let existenceExpiration)): - refreshCellCount(expirationDate: existenceExpiration.expirationDate, countdownImageView: countdownImageViewReadOnce) - case (false, .some(let visibilityExpiration), .some(let existenceExpiration)): - if existenceExpiration.expirationDate > visibilityExpiration.expirationDate { - refreshCellCount(expirationDate: visibilityExpiration.expirationDate, countdownImageView: countdownImageViewVisibility) - } else { - refreshCellCount(expirationDate: existenceExpiration.expirationDate, countdownImageView: countdownImageViewExpiration) - } - case (true, .some(let visibilityExpiration), .some(let existenceExpiration)): - let expirationDate = min(visibilityExpiration.expirationDate, existenceExpiration.expirationDate) - refreshCellCount(expirationDate: expirationDate, countdownImageView: countdownImageViewReadOnce) - default: - removeCurrentCountdownImageView() - countdownLabel.text = nil - } - } else { - // Before interaction, display expiration countdown if appropriate or remove any - guard let existenceExpiration = message.expirationForReceivedLimitedExistence else { - removeCurrentCountdownImageView() - countdownLabel.text = nil - return - } - // Make sure the countdownStack is shown - showCountdownStack() - refreshCellCount(expirationDate: existenceExpiration.expirationDate, countdownImageView: countdownImageViewExpiration) - } - } - - - private func showCountdownStack() { - guard !countdownStackIsShown else { return } - roundedRectView.addSubview(countdownStack) - NSLayoutConstraint.activate([ - countdownStack.topAnchor.constraint(equalTo: roundedRectView.topAnchor), - countdownStack.leadingAnchor.constraint(equalTo: roundedRectView.trailingAnchor, constant: 4.0), - ]) - removeCurrentCountdownImageView() - if countdownStack.subviews.isEmpty { - countdownStack.addArrangedSubview(countdownLabel) - } - } - -} - - -extension MessageReceivedCollectionViewCell: CellWithMessage { - - var viewForTargetedPreview: UIView { - self.roundedRectView - } - - var persistedMessage: PersistedMessage? { message } - - public var persistedMessageObjectID: TypeSafeManagedObjectID? { - message?.typedObjectID - } - - var persistedDraftObjectID: TypeSafeManagedObjectID? { nil } // Not used within the old discussion screen - - var textToCopy: String? { - guard let text = bodyTextView.text else { return nil } - guard !text.isEmpty else { return nil } - return text - } - - var infoViewController: UIViewController? { - guard let messageReceived = message as? PersistedMessageReceived else { assertionFailure(); return nil } - guard messageReceived.infoActionCanBeMadeAvailable else { return nil } - let rcv = ReceivedMessageInfosHostingViewController(messageReceived: messageReceived) - return rcv - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageSentCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageSentCollectionViewCell.swift deleted file mode 100644 index f6d3de4f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageSentCollectionViewCell.swift +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import CoreData -import ObvUI -import ObvUICoreData - - -final class MessageSentCollectionViewCell: MessageCollectionViewCell, CellWithPersistedMessageSent { - - static let identifier = "MessageSentCollectionViewCell" - - let sentStatusImageView = UIImageView() - private var hideProgresses = false - - var messageSent: PersistedMessageSent? { message as? PersistedMessageSent } - - override init(frame: CGRect) { - super.init(frame: frame) - setup() - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - - override func setup() { - super.setup() - - mainStackView.alignment = .trailing - - roundedRectView.backgroundColor = appTheme.colorScheme.sentCellBackground - - replyToRoundedRectContentView.backgroundColor = AppTheme.shared.colorScheme.sentCellReplyToBackground - replyToRoundedRectView.backgroundColor = AppTheme.shared.colorScheme.sentCellReplyToBackground - replyToTextView.textColor = AppTheme.shared.colorScheme.sentCellReplyToBody - replyToTextView.linkTextAttributes = [NSAttributedString.Key.foregroundColor: AppTheme.shared.colorScheme.sentCellReplyToLink, - NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue, - NSAttributedString.Key.underlineColor: AppTheme.shared.colorScheme.sentCellReplyToLink] - - - bodyTextView.textColor = AppTheme.shared.colorScheme.sentCellBody - bodyTextView.backgroundColor = .clear - bodyTextView.linkTextAttributes = [NSAttributedString.Key.foregroundColor: AppTheme.shared.colorScheme.sentCellLink, - NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue, - NSAttributedString.Key.underlineColor: AppTheme.shared.colorScheme.sentCellLink] - - - sentStatusImageView.accessibilityIdentifier = "sentStatusImageView" - sentStatusImageView.tintColor = dateLabel.textColor - bottomStackView.insertArrangedSubview(sentStatusImageView, at: 0) - - bottomStackView.insertArrangedSubview(messageEditedStatusImageView, at: 0) - bottomStackView.addArrangedSubview(dateLabel) - - countdownStack.alignment = .trailing - - setupConstraints() - prepareForReuse() - } - - - func setupConstraints() { - let constraints = [ - mainStackView.trailingAnchor.constraint(equalTo: self.trailingAnchor), - mainStackView.trailingAnchor.constraint(equalTo: roundedRectView.trailingAnchor) - ] - NSLayoutConstraint.activate(constraints) - } - - - override func prepareForReuse() { - super.prepareForReuse() - hideProgresses = false - } - - - func prepare(with message: PersistedMessageSent, withDateFormatter dateFormatter: DateFormatter, hideProgresses: Bool) { - self.hideProgresses = hideProgresses - if hideProgresses { - sentStatusImageView.isHidden = true - } else { - refreshSentStatus(with: message) - } - super.prepare(with: message, attachments: message.fyleMessageJoinWithStatuses, withDateFormatter: dateFormatter, hideProgresses: hideProgresses) - refreshMessageReceivedCellCountdown() - } - - /// Calling this method refreshes this cell's subviews, using the same message - override func refresh() { - debugPrint("Refresh MessageSentCollectionViewCell") - if let messageSent = super.message as? PersistedMessageSent { - refreshSentStatus(with: messageSent) - } - super.refresh() - } - - - private func refreshSentStatus(with message: PersistedMessageSent) { - sentStatusImageView.image = imageForMessageStatus(message.status) - } - - - private func characterForMessageStatus(_ status: PersistedMessageSent.MessageStatus) -> String { - switch status { - case .unprocessed: - return "⌚︎" - case .processing: - return "⇮" - case .sent: - return "✓" - case .delivered: - return "✓✓" - case .read: - return "read" - case .couldNotBeSentToOneOrMoreRecipients: - return "!" - case .hasNoRecipient: - return "✓" - } - } - - - private func imageForMessageStatus(_ status: PersistedMessageSent.MessageStatus) -> UIImage { - let configuration = UIImage.SymbolConfiguration(textStyle: UIFont.TextStyle.footnote, scale: .small) - switch status { - case .unprocessed: - return UIImage(systemName: "hourglass", withConfiguration: configuration)! - case .processing: - return UIImage(systemName: "hare", withConfiguration: configuration)! - case .sent: - return UIImage(systemName: "checkmark.circle", withConfiguration: configuration)! - case .delivered: - return UIImage(systemName: "checkmark.circle.fill", withConfiguration: configuration)! - case .read: - return UIImage(systemName: "eye.fill", withConfiguration: configuration)! - case .couldNotBeSentToOneOrMoreRecipients: - return UIImage(systemIcon: .exclamationmarkCircle)! - case .hasNoRecipient: - return UIImage(systemIcon: .iphoneGen3CircleFill, withConfiguration: configuration)! - } - } -} - - -// MARK: - Refreshing countdowns for ephemeral messages - -extension MessageSentCollectionViewCell { - - func refreshMessageReceivedCellCountdown() { - guard let message = self.message as? PersistedMessageSent else { assertionFailure(); return } - assert(message.managedObjectContext?.concurrencyType == .mainQueueConcurrencyType) - guard message.isEphemeralMessage else { return } - guard !message.isWiped else { - removeCountdownStack() - return - } - // Make sure the countdownStack is shown - showCountdownStack() - // Show appropriate countdown - switch (message.readOnce, message.expirationForSentLimitedVisibility, message.expirationForSentLimitedExistence) { - case (true, .none, .none): - refreshCellCountdownForReadOnce() - case (false, .some(let visibilityExpiration), .none): - refreshCellCount(expirationDate: visibilityExpiration.expirationDate, countdownImageView: countdownImageViewVisibility) - case (true, .some(let visibilityExpiration), .none): - refreshCellCount(expirationDate: visibilityExpiration.expirationDate, countdownImageView: countdownImageViewReadOnce) - case (false, .none, .some(let existenceExpiration)): - refreshCellCount(expirationDate: existenceExpiration.expirationDate, countdownImageView: countdownImageViewExpiration) - case (true, .none, .some(let existenceExpiration)): - refreshCellCount(expirationDate: existenceExpiration.expirationDate, countdownImageView: countdownImageViewReadOnce) - case (false, .some(let visibilityExpiration), .some(let existenceExpiration)): - if existenceExpiration.expirationDate > visibilityExpiration.expirationDate { - refreshCellCount(expirationDate: visibilityExpiration.expirationDate, countdownImageView: countdownImageViewVisibility) - } else { - refreshCellCount(expirationDate: existenceExpiration.expirationDate, countdownImageView: countdownImageViewExpiration) - } - case (true, .some(let visibilityExpiration), .some(let existenceExpiration)): - let expirationDate = min(visibilityExpiration.expirationDate, existenceExpiration.expirationDate) - refreshCellCount(expirationDate: expirationDate, countdownImageView: countdownImageViewReadOnce) - default: - removeCurrentCountdownImageView() - countdownLabel.text = nil - } - } - - - private func showCountdownStack() { - guard !countdownStackIsShown else { return } - roundedRectView.addSubview(countdownStack) - NSLayoutConstraint.activate([ - countdownStack.topAnchor.constraint(equalTo: roundedRectView.topAnchor), - countdownStack.trailingAnchor.constraint(equalTo: roundedRectView.leadingAnchor, constant: -4.0), - ]) - removeCurrentCountdownImageView() - if countdownStack.subviews.isEmpty { - countdownStack.addArrangedSubview(countdownLabel) - } - } - -} - -extension MessageSentCollectionViewCell: CellWithMessage { - - var viewForTargetedPreview: UIView { - self.roundedRectView - } - - var persistedMessage: PersistedMessage? { message } - - public var persistedMessageObjectID: TypeSafeManagedObjectID? { - message?.typedObjectID - } - - var persistedDraftObjectID: TypeSafeManagedObjectID? { nil } // Not used within the old discussion screen - - var textToCopy: String? { - guard let text = bodyTextView.text else { return nil } - guard !text.isEmpty else { return nil } - return text - } - - var infoViewController: UIViewController? { - guard let messageSent = message as? PersistedMessageSent else { assertionFailure(); return nil } - guard messageSent.infoActionCanBeMadeAvailable == true else { return nil } - let rcv = SentMessageInfosHostingViewController(messageSent: messageSent) - return rcv - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageSystemCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageSystemCollectionViewCell.swift deleted file mode 100644 index 0c4d1943..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Cells/MessageSystemCollectionViewCell.swift +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import CoreData -import ObvUI -import UIKit -import ObvUICoreData - -class MessageSystemCollectionViewCell: UICollectionViewCell { - - static let identifier = "MessageSystemCollectionViewCell" - - let label = UILabel() - let mainStack = UIStackView() - let roundedView = ObvRoundedRectView() - let roundedViewPadding: CGFloat = 8 - - let hStackForEphemeralConfig = UIStackView() - let readOnceStack = UIStackView() - let limitedVisibilityStack = UIStackView() - let limitedExistenceStack = UIStackView() - let expirationFontTextStyle = UIFont.TextStyle.footnote - let nonEphemeralLabel = UILabel() - - private(set) var messageSystem: PersistedMessageSystem? - - var messageSystemCategory: PersistedMessageSystem.Category? { - messageSystem?.category - } - - override init(frame: CGRect) { - super.init(frame: frame) - setup() - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - func setup() { - - self.clipsToBounds = true - self.autoresizesSubviews = true - - roundedView.translatesAutoresizingMaskIntoConstraints = false - roundedView.accessibilityIdentifier = "roundedView" - roundedView.backgroundColor = appTheme.colorScheme.quaternarySystemFill - self.addSubview(roundedView) - - mainStack.translatesAutoresizingMaskIntoConstraints = false - mainStack.accessibilityIdentifier = "vStackForEphemeralConfig" - mainStack.axis = .vertical - mainStack.alignment = .center - mainStack.spacing = 4.0 - roundedView.addSubview(mainStack) - - label.translatesAutoresizingMaskIntoConstraints = false - label.accessibilityIdentifier = "label" - label.font = UIFont.preferredFont(forTextStyle: .footnote) - label.textColor = AppTheme.shared.colorScheme.label - label.textAlignment = .center - label.numberOfLines = 0 - label.lineBreakMode = .byWordWrapping - mainStack.addArrangedSubview(label) - - hStackForEphemeralConfig.translatesAutoresizingMaskIntoConstraints = false - hStackForEphemeralConfig.accessibilityIdentifier = "hStackForEphemeralConfig" - hStackForEphemeralConfig.axis = .horizontal - hStackForEphemeralConfig.spacing = 12.0 - - // Configure the stack containing a symbol and the text for the read once configuration - - do { - readOnceStack.translatesAutoresizingMaskIntoConstraints = false - readOnceStack.accessibilityIdentifier = "readOnceStack" - readOnceStack.axis = .horizontal - readOnceStack.alignment = .firstBaseline - readOnceStack.spacing = 4.0 - - let imageViewReadOnce = UIImageView() - imageViewReadOnce.translatesAutoresizingMaskIntoConstraints = false - imageViewReadOnce.accessibilityIdentifier = "imageViewReadOnce" - let configuration = UIImage.SymbolConfiguration(textStyle: expirationFontTextStyle) - let image = UIImage(systemName: "flame.fill", withConfiguration: configuration) - imageViewReadOnce.image = image - imageViewReadOnce.tintColor = .red - readOnceStack.addArrangedSubview(imageViewReadOnce) - - let labelReadOnce = UILabel() - labelReadOnce.translatesAutoresizingMaskIntoConstraints = false - labelReadOnce.accessibilityIdentifier = "labelReadOnce" - labelReadOnce.text = NSLocalizedString("READ_ONCE_LABEL", comment: "") - labelReadOnce.textColor = .red - labelReadOnce.font = UIFont.preferredFont(forTextStyle: expirationFontTextStyle) - readOnceStack.addArrangedSubview(labelReadOnce) - } - - // Configure the stack containing a symbol and the text for the limited visibility setting - - do { - limitedVisibilityStack.translatesAutoresizingMaskIntoConstraints = false - limitedVisibilityStack.accessibilityIdentifier = "limitedVisibilityStack" - limitedVisibilityStack.axis = .horizontal - limitedVisibilityStack.alignment = .firstBaseline - limitedVisibilityStack.spacing = 4.0 - - let imageLimitedVisibility = UIImageView() - imageLimitedVisibility.translatesAutoresizingMaskIntoConstraints = false - imageLimitedVisibility.accessibilityIdentifier = "imageLimitedVisibility" - let configuration = UIImage.SymbolConfiguration(textStyle: expirationFontTextStyle) - let image = UIImage(systemName: "eyes", withConfiguration: configuration) - imageLimitedVisibility.image = image - imageLimitedVisibility.tintColor = .orange - limitedVisibilityStack.addArrangedSubview(imageLimitedVisibility) - - let labelLimitedVisibility = UILabel() - labelLimitedVisibility.translatesAutoresizingMaskIntoConstraints = false - labelLimitedVisibility.accessibilityIdentifier = "labelLimitedVisibility" - labelLimitedVisibility.textColor = .orange - labelLimitedVisibility.font = UIFont.preferredFont(forTextStyle: expirationFontTextStyle) - limitedVisibilityStack.addArrangedSubview(labelLimitedVisibility) - } - - // Configure the stack containing a symbol and the text for the limited existence setting - - do { - limitedExistenceStack.translatesAutoresizingMaskIntoConstraints = false - limitedExistenceStack.accessibilityIdentifier = "limitedExistenceStack" - limitedExistenceStack.axis = .horizontal - limitedExistenceStack.alignment = .firstBaseline - limitedExistenceStack.spacing = 4.0 - - let imageLimitedExistence = UIImageView() - imageLimitedExistence.translatesAutoresizingMaskIntoConstraints = false - imageLimitedExistence.accessibilityIdentifier = "imageLimitedExistence" - let configuration = UIImage.SymbolConfiguration(textStyle: expirationFontTextStyle) - let image = UIImage(systemName: "timer", withConfiguration: configuration) - imageLimitedExistence.image = image - imageLimitedExistence.tintColor = .systemGray - limitedExistenceStack.addArrangedSubview(imageLimitedExistence) - - let labelLimitedExistence = UILabel() - labelLimitedExistence.translatesAutoresizingMaskIntoConstraints = false - labelLimitedExistence.accessibilityIdentifier = "labelLimitedExistence" - labelLimitedExistence.textColor = .systemGray - labelLimitedExistence.font = UIFont.preferredFont(forTextStyle: expirationFontTextStyle) - limitedExistenceStack.addArrangedSubview(labelLimitedExistence) - } - - // Configure the label to display when there is no ephemeral setting - - do { - nonEphemeralLabel.translatesAutoresizingMaskIntoConstraints = false - nonEphemeralLabel.accessibilityIdentifier = "nonEphemeralLabel" - nonEphemeralLabel.textColor = .systemGray - let descriptor = UIFont.preferredFont(forTextStyle: expirationFontTextStyle).fontDescriptor - let preferredDescriptor = descriptor.withSymbolicTraits(.traitItalic) ?? descriptor - nonEphemeralLabel.font = UIFont(descriptor: preferredDescriptor, size: 0) - nonEphemeralLabel.text = NSLocalizedString("NON_EPHEMERAL_MESSAGES_LABEL", comment: "") - } - - setupConstraints() - } - - - private func setupConstraints() { - let constraints = [ - roundedView.topAnchor.constraint(equalTo: self.topAnchor), - roundedView.bottomAnchor.constraint(equalTo: self.bottomAnchor), - roundedView.centerXAnchor.constraint(equalTo: self.centerXAnchor), - mainStack.topAnchor.constraint(equalTo: roundedView.topAnchor, constant: roundedViewPadding), - mainStack.bottomAnchor.constraint(equalTo: roundedView.bottomAnchor, constant: -roundedViewPadding), - mainStack.trailingAnchor.constraint(equalTo: roundedView.trailingAnchor, constant: -roundedViewPadding), - mainStack.leadingAnchor.constraint(equalTo: roundedView.leadingAnchor, constant: roundedViewPadding), - ] - NSLayoutConstraint.activate(constraints) - } - - - override func prepareForReuse() { - super.prepareForReuse() - messageSystem = nil - roundedView.backgroundColor = appTheme.colorScheme.quaternarySystemFill - self.label.textAlignment = .center - label.textColor = AppTheme.shared.colorScheme.label - while mainStack.arrangedSubviews.count > 1 { - let last = mainStack.arrangedSubviews.last! - mainStack.removeArrangedSubview(last) - last.removeFromSuperview() - } - while let view = hStackForEphemeralConfig.arrangedSubviews.last { - hStackForEphemeralConfig.removeArrangedSubview(view) - view.removeFromSuperview() - } - } - - - func prepare(with message: PersistedMessageSystem) { - - messageSystem = message - - switch message.category { - case .ownedIdentityDidCaptureSensitiveMessages, .contactIdentityDidCaptureSensitiveMessages: - self.label.text = message.textBody - self.label.textAlignment = .natural - roundedView.backgroundColor = AppTheme.shared.colorScheme.orange - label.textColor = .white - case .contactJoinedGroup, .contactLeftGroup, .contactWasDeleted, .contactRevokedByIdentityProvider, .notPartOfTheGroupAnymore, .rejoinedGroup, .contactIsOneToOneAgain: - self.label.text = message.textBody?.localizedUppercase - case .discussionIsEndToEndEncrypted: - self.label.text = message.textBody - self.label.textAlignment = .natural - roundedView.backgroundColor = AppTheme.shared.colorScheme.green - label.textColor = .white - case .numberOfNewMessages: - self.label.text = message.textBody?.localizedUppercase - self.label.textAlignment = .center - roundedView.backgroundColor = AppTheme.appleBadgeRedColor - label.textColor = .white - case .membersOfGroupV2WereUpdated, .ownedIdentityIsPartOfGroupV2Admins, .ownedIdentityIsNoLongerPartOfGroupV2Admins: - self.label.text = message.textBody - self.label.textAlignment = .center - roundedView.backgroundColor = AppTheme.shared.colorScheme.green - label.textColor = .white - case .callLogItem: - self.label.text = message.textBody?.localizedUppercase - case .updatedDiscussionSharedSettings: - self.label.text = message.textBody?.localizedUppercase - if let expirationJSON = message.expirationJSON { - var addHStackForEphemeralConfig = false - if expirationJSON.readOnce { - hStackForEphemeralConfig.addArrangedSubview(readOnceStack) - addHStackForEphemeralConfig = true - } - if let timeInterval = expirationJSON.visibilityDuration, let duration = DurationOption(rawValue: Int(timeInterval)) { - (limitedVisibilityStack.arrangedSubviews.last as? UILabel)?.text = duration.description - hStackForEphemeralConfig.addArrangedSubview(limitedVisibilityStack) - addHStackForEphemeralConfig = true - } - if let timeInterval = expirationJSON.existenceDuration, let duration = DurationOption(rawValue: Int(timeInterval)) { - (limitedExistenceStack.arrangedSubviews.last as? UILabel)?.text = duration.description - hStackForEphemeralConfig.addArrangedSubview(limitedExistenceStack) - addHStackForEphemeralConfig = true - } - if addHStackForEphemeralConfig { - mainStack.addArrangedSubview(hStackForEphemeralConfig) - } else { - mainStack.addArrangedSubview(nonEphemeralLabel) - } - } else { - mainStack.addArrangedSubview(nonEphemeralLabel) - } - case .discussionWasRemotelyWiped: - self.label.text = message.textBody?.localizedUppercase - } - - } - -} - - -extension MessageSystemCollectionViewCell { - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - - self.label.preferredMaxLayoutWidth = layoutAttributes.size.width - 2*roundedViewPadding - - var fittingSize = UIView.layoutFittingCompressedSize - fittingSize.width = layoutAttributes.size.width - let size = systemLayoutSizeFitting(fittingSize, withHorizontalFittingPriority: .defaultHigh, verticalFittingPriority: .defaultLow) - var adjustedFrame = layoutAttributes.frame - adjustedFrame.size.height = size.height - layoutAttributes.frame = adjustedFrame - - return layoutAttributes - - } - -} - - -extension MessageSystemCollectionViewCell: CellWithMessage { - - var persistedMessage: PersistedMessage? { messageSystem } - - public var persistedMessageObjectID: TypeSafeManagedObjectID? { - persistedMessage?.typedObjectID - } - - var persistedDraftObjectID: TypeSafeManagedObjectID? { nil } // Not used within the old discussion screen - - var viewForTargetedPreview: UIView { self.roundedView } - - var textToCopy: String? { nil } - var fyleMessagesJoinWithStatus: [FyleMessageJoinWithStatus]? { nil } - var imageAttachments: [FyleMessageJoinWithStatus]? { nil } - var itemProvidersForImages: [UIActivityItemProvider]? { nil } - var itemProvidersForAllAttachments: [UIActivityItemProvider]? { nil } - - var infoViewController: UIViewController? { - guard messageSystem?.infoActionCanBeMadeAvailable == true else { return nil } - if let item = messageSystem?.optionalCallLogItem { - print("item.callReportKind = \(item.callReportKind.debugDescription)") - print("item.unknownContactsCount = \(item.unknownContactsCount)") - print("item.isIncoming = \(item.isIncoming)") - - var idx = 0 - for contact in item.logContacts { - print("item.contact[\(idx)].callReportKind = \(contact.callReportKind)") - print("item.contact[\(idx)].isCaller = \(contact.isCaller)") - print("item.contact[\(idx)].contactIdentity = \(contact.contactIdentity == nil ? "nil" : "some")") - idx += 1 - } - } - - return nil - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageDataSource/ComposeMessageDataSource.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageDataSource/ComposeMessageDataSource.swift deleted file mode 100644 index d70df5bb..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageDataSource/ComposeMessageDataSource.swift +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUICoreData -import UIKit - - -protocol ComposeMessageDataSource: AnyObject { - - var body: String? { get } - var replyTo: (displayName: String, messageElement: MessageCollectionViewCell.MessageElement)? { get } - - func saveBodyText(body: String) - - func deleteReplyTo(completionHandler: @escaping (Error?) -> Void) throws - - var collectionView: UICollectionView? { get set } - - var draft: PersistedDraft { get } // The current draft value - - var collectionViewIsEmpty: Bool { get } - - func tapPerformed(on: IndexPath) - - func longPress(on: IndexPath) -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageDataSource/ComposeMessageDataSourceWithDraft.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageDataSource/ComposeMessageDataSourceWithDraft.swift deleted file mode 100644 index 7fc176d3..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageDataSource/ComposeMessageDataSourceWithDraft.swift +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import os.log -import CoreData -import ObvUICoreData -import OlvidUtils - - -final class ComposeMessageDataSourceWithDraft: NSObject, ComposeMessageDataSource, ObvErrorMaker { - - weak var collectionView: UICollectionView? { - didSet { - configureCollectionView() - } - } - weak var filesViewer: FilesViewer? - - static let errorDomain = "ComposeMessageDataSourceWithDraft" - - private let persistedDraft: PersistedDraft - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ComposeMessageDataSourceWithDraft.self)) - private let fetchedResultsController: NSFetchedResultsController - private var itemChanges = [(type: NSFetchedResultsChangeType, indexPath: IndexPath?, newIndexPath: IndexPath?)]() - - - - init(draft: PersistedDraft) { - self.persistedDraft = draft - self.fetchedResultsController = ComposeMessageDataSourceWithDraft.configureTheFetchedResultsController(draft: draft) - super.init() - - fetchedResultsController.delegate = self - do { - try fetchedResultsController.performFetch() - } catch let error { - fatalError("Failed to fetch entities: \(error.localizedDescription)") - } - - } - - var draft: PersistedDraft { - return persistedDraft - } - - var body: String? { - return draft.body - } - - private func configureCollectionView() { - guard let collectionView = self.collectionView else { return } - collectionView.register(UINib(nibName: FyleCollectionViewCell.nibName, bundle: nil), - forCellWithReuseIdentifier: FyleCollectionViewCell.identifier) - collectionView.dataSource = self - collectionView.delegate = self - } - - - var replyTo: (displayName: String, messageElement: MessageCollectionViewCell.MessageElement)? { - guard let msg = draft.replyTo else { return nil } - let displayName: String - if let sentMsg = msg as? PersistedMessageSent { - displayName = sentMsg.discussion.ownedIdentity?.identityCoreDetails.getDisplayNameWithStyle(.firstNameThenLastName) ?? "" - } else if let receivedMsg = msg as? PersistedMessageReceived { - if let receivedMsgContactIdentity = receivedMsg.contactIdentity { - displayName = receivedMsgContactIdentity.customDisplayName ?? receivedMsgContactIdentity.identityCoreDetails?.getDisplayNameWithStyle(.firstNameThenLastName) ?? receivedMsgContactIdentity.fullDisplayName - } else { - displayName = CommonString.deletedContact - } - } else { - assertionFailure(); return nil - } - if let messageElement = MessageCollectionViewCell.extractMessageElements(from: msg) { - return (displayName, messageElement) - } else { - return nil - } - } - - - func saveBodyText(body: String) { - let draftObjectID = persistedDraft.typedObjectID - let log = self.log - ObvStack.shared.performBackgroundTask { (context) in - do { - guard let writableDraft = try PersistedDraft.get(objectID: draftObjectID, within: context) else { throw Self.makeError(message: "Could not find persisted draft") } - writableDraft.replaceContentWith(newBody: body, newMentions: Set()) - try context.save(logOnFailure: log) - } catch { - os_log("Could not save draft", log: log, type: .error) - } - } - - } - - - func deleteReplyTo(completionHandler: @escaping (Error?) -> Void) throws { - var error: Error? = nil - let draftObjectID = persistedDraft.typedObjectID - let log = self.log - ObvStack.shared.performBackgroundTask { (context) in - do { - guard let writableDraft = try PersistedDraft.get(objectID: draftObjectID, within: context) else { return } - writableDraft.removeReplyTo() - try context.save(logOnFailure: log) - } catch let _error { - error = _error - } - completionHandler(error) - } - } - - var collectionViewIsEmpty: Bool { - return fetchedResultsController.fetchedObjects?.isEmpty ?? true - } -} - - -// MARK: - NSFetchedResultsControllerDelegate - -extension ComposeMessageDataSourceWithDraft: NSFetchedResultsControllerDelegate { - - private static func configureTheFetchedResultsController(draft: PersistedDraft) -> NSFetchedResultsController { - - let fetchRequest: NSFetchRequest = PersistedDraftFyleJoin.fetchRequest() - fetchRequest.predicate = PersistedDraftFyleJoin.Predicate.withPersistedDraft(draft) - fetchRequest.sortDescriptors = [NSSortDescriptor(key: PersistedDraftFyleJoin.Predicate.Key.index.rawValue, ascending: true)] - - let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, - managedObjectContext: ObvStack.shared.viewContext, - sectionNameKeyPath: nil, - cacheName: nil) - - return fetchedResultsController - } - - - func controller(_ controller: NSFetchedResultsController, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) { - itemChanges.append((type, indexPath, newIndexPath)) - } - - - func controllerDidChangeContent(_ controller: NSFetchedResultsController) { - - guard let collectionView = self.collectionView else { return } - - collectionView.performBatchUpdates({ - - while let (type, indexPath, newIndexPath) = itemChanges.popLast() { - - switch type { - case .delete: - collectionView.deleteItems(at: [indexPath!]) - case .insert: - collectionView.insertItems(at: [newIndexPath!]) - case .move: - collectionView.moveItem(at: indexPath!, to: newIndexPath!) - case .update: - collectionView.reloadItems(at: [indexPath!]) - @unknown default: - assertionFailure() - } - - - } - }) - } - -} - - -// MARK: - UICollectionViewDataSource - -extension ComposeMessageDataSourceWithDraft: UICollectionViewDataSource { - - func numberOfSections(in collectionView: UICollectionView) -> Int { - return 1 - } - - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - guard section == 0 else { return 0 } - return fetchedResultsController.fetchedObjects?.count ?? 0 - } - - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let join = fetchedResultsController.object(at: indexPath) - let fyleCell = collectionView.dequeueReusableCell(withReuseIdentifier: FyleCollectionViewCell.identifier, for: indexPath) as! FyleCollectionViewCell - fyleCell.configure(with: join) - fyleCell.layoutIfNeeded() - return fyleCell - } -} - - -// MARK: - UICollectionViewDelegateFlowLayout - -extension ComposeMessageDataSourceWithDraft: UICollectionViewDelegateFlowLayout { - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - return FyleCollectionViewCell.intrinsicSize - } - -} - - -// MARK: - Deleting draft fyle joins - -extension ComposeMessageDataSourceWithDraft { - - func longPress(on indexPath: IndexPath) { - let objectID = fetchedResultsController.object(at: indexPath).typedObjectID - self.deleteDraftFyleJoin(draftFyleJoinObjectId: objectID) - } - - func tapPerformed(on indexPath: IndexPath) { - let objectID = fetchedResultsController.object(at: indexPath).typedObjectID - self.deleteDraftFyleJoin(draftFyleJoinObjectId: objectID) - } - - private func deleteDraftFyleJoin(draftFyleJoinObjectId: TypeSafeManagedObjectID) { - ObvMessengerInternalNotification.userWantsToRemoveDraftFyleJoin(draftFyleJoinObjectID: draftFyleJoinObjectId).postOnDispatchQueue() - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageView.swift deleted file mode 100644 index dc224169..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageView.swift +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -class ComposeMessageView: UIView { - - static let nibName = "ComposeMessageView" - - // Views - - @IBOutlet weak var visualEffectView: UIVisualEffectView! - @IBOutlet weak var containerView: UIView! - @IBOutlet weak var textViewContainerView: UIView! - @IBOutlet weak var textFieldBackgroundView: TextFieldBackgroundView! - @IBOutlet weak var textView: ObvAutoGrowingTextView! - @IBOutlet weak var sendButton: ObvButtonBorderless! - @IBOutlet weak var placeholderTextView: UITextView! - @IBOutlet weak var collectionView: UICollectionView! - @IBOutlet weak var plusButton: UIButton! - @IBOutlet weak var replyToStackView: UIStackView! - @IBOutlet weak var replyToNameLabel: UILabel! - @IBOutlet weak var replyToBodyLabel: UILabel! - @IBOutlet weak var replyToCancelButton: UIButton! - @IBOutlet weak var textViewBottomPaddingHeightConstraint: NSLayoutConstraint! - - // Constraints - - @IBOutlet weak var textViewHeightConstraint: NSLayoutConstraint! - @IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint! - @IBOutlet weak var visualEffectViewWidthConstraint: NSLayoutConstraint! - @IBOutlet weak var containerViewWidthConstraint: NSLayoutConstraint! - - // Variables - - private var observationTokens = [NSKeyValueObservation]() - private var isFreezed = false - - // Delegates - - weak var documentPickerDelegate: ComposeMessageViewDocumentPickerDelegate? { - didSet { - plusButton.isHidden = (documentPickerDelegate == nil) - } - } - - weak var sendMessageDelegate: ComposeMessageViewSendMessageDelegate? { - didSet { - sendButton.isHidden = (sendMessageDelegate == nil) - } - } - - var dataSource: ComposeMessageDataSource? { - didSet { - loadDataSource() - } - } - - // Computed variables - - override var intrinsicContentSize: CGSize { - return CGSize.zero // Use autolayout ;-) - } - - @IBAction func deleteReplyToTapped(_ sender: Any) { - try? dataSource?.deleteReplyTo(completionHandler: { [weak self] (error) in - DispatchQueue.main.async { - self?.loadReplyTo() - } - }) - } - - deinit { - dataSource?.saveBodyText(body: self.textView.text) - } - - func setWidth(to width: CGFloat) { - visualEffectViewWidthConstraint.constant = width - // We substract the right safeAreaInsets to the container width, since its right side is pinned to the safe arrea. This is important, e.g., on an iPhone 11 Pro Max in landscape. - containerViewWidthConstraint.constant = width - 4 - (window?.safeAreaInsets.right ?? 0) - self.setNeedsLayout() - } - -} - - -// MARK: View lifecycle - -extension ComposeMessageView { - - override func awakeFromNib() { - super.awakeFromNib() - self.autoresizingMask = [.flexibleHeight] - configureViews() - - containerView.accessibilityIdentifier = "containerView" - } - - - override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { - // This method is particularly important when displaying the compose message view in an iPad in split view. - // In that case, this view does not span the entire screen since its width is equal to that of the detail view. - // This method allows to let the user interaction "pass through" when she did not touch a view located in the container view (which corresponds to the "visible" portion of this compose message view). - guard containerView.frame.contains(point) else { return nil } - return super.hitTest(point, with: event) - } - - - private func configureViews() { - tintColor = AppTheme.shared.colorScheme.olvidLight - - visualEffectView.effect = UIBlurEffect(style: .regular) - - plusButton.isHidden = true - plusButton.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) - - textViewContainerView.backgroundColor = .clear - textFieldBackgroundView.backgroundColor = .clear - textFieldBackgroundView.fillColor = appTheme.colorScheme.secondarySystemBackground - textFieldBackgroundView.strokeColor = appTheme.colorScheme.systemFill - - textView.maxHeight = 100 - textViewHeightConstraint.constant = 0 // Must be set here, will be reset by the ObvAutoGrowingTextView - textView.heightConstraint = self.textViewHeightConstraint - textView.textColor = AppTheme.shared.colorScheme.secondaryLabel - textView.delegate = self - textView.growingTextViewDelegate = self - - textViewBottomPaddingHeightConstraint.constant = 3 - - placeholderTextView.isEditable = false - placeholderTextView.text = Strings.placeholderText - placeholderTextView.textColor = appTheme.colorScheme.placeholderText - placeholderTextView.isSelectable = false - - sendButton.isHidden = true - sendButton.isEnabled = false - sendButton.setTitle(nil, for: .normal) - sendButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) - let configuration = UIImage.SymbolConfiguration(scale: .large) - let image = UIImage(systemName: "paperplane.fill", withConfiguration: configuration) - sendButton.setImage(image, for: .normal) - sendButton.tintColor = nil //reset it to inherit our `tintColor` defined on `self` - - RunLoop.main.perform { // for some reason, the `tintColor` gets reset to the old yellow value after initialization - self.sendButton.tintColor = nil - } - - replyToStackView.isHidden = true - - collectionView.contentInsetAdjustmentBehavior = .never - collectionView.isHidden = dataSource?.collectionViewIsEmpty ?? true - let token = collectionView.observe(\.contentSize) { [weak self] (_, _) in - self?.collectionViewContentSizeChanged() - } - observationTokens.append(token) - collectionViewHeightConstraint.constant = FyleCollectionViewCell.intrinsicHeight - - replyToCancelButton.tintColor = .red - - configureGestureRecognizers() - - self.setNeedsLayout() - self.layoutIfNeeded() - } - - - private func configureGestureRecognizers() { - - let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapPerformed(recognizer:))) - self.addGestureRecognizer(tapGesture) - - let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressPerformed(recognizer:))) - self.addGestureRecognizer(longPress) - - } - - @objc func tapPerformed(recognizer: UITapGestureRecognizer) { - guard recognizer.state == .ended else { return } - let location = recognizer.location(in: collectionView) - guard let indexPath = collectionView.indexPathForItem(at: location) else { return } - dataSource?.tapPerformed(on: indexPath) - } - - @objc func longPressPerformed(recognizer: UILongPressGestureRecognizer) { - guard recognizer.state == .began else { return } - let location = recognizer.location(in: collectionView) - guard let indexPath = collectionView.indexPathForItem(at: location) else { return } - dataSource?.longPress(on: indexPath) - } - -} - - -// MARK: - Reacting to collection view changes - -extension ComposeMessageView { - - private func collectionViewContentSizeChanged() { - refreshSendButton() - let collectionShouldHide = dataSource?.collectionViewIsEmpty ?? true - guard collectionView.isHidden != collectionShouldHide else { return } - // If we reach this point, we should toggle the isHidden property of the collection view - // We do not use a UIViewPropertyAnimator here, under iOS 12.1.4, this creates an improper computation of the bottom safeAreInset - UIView.animate(withDuration: 0.5, delay: 0.0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.0, options: [], animations: { [weak self] in - self?.collectionView.isHidden = collectionShouldHide - }) - } - -} - -// MARK: - UITextViewDelegate - -extension ComposeMessageView: UITextViewDelegate { - - func textViewDidChange(_ textView: UITextView) { - placeholderTextView.isHidden = !textView.text.isEmpty - refreshSendButton() - } - - - private func refreshSendButton() { - - if !textView.text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).isEmpty { - sendButton.isEnabled = true - } else if collectionView.numberOfItems(inSection: 0) > 0 { - sendButton.isEnabled = true - } else { - sendButton.isEnabled = false - } - - } - - - func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { - return !self.isFreezed - } - -} - - -// MARK: - User actions - -extension ComposeMessageView { - - @IBAction func plusButtonTapped(_ sender: Any) { - guard let button = sender as? UIButton else { return } - assert(button == plusButton) - self.textView.resignFirstResponder() - documentPickerDelegate?.addAttachment(button) - } - - @IBAction func sendButtonTapped(_ sender: Any) { - sendMessageDelegate?.userWantsToSendMessageInComposeMessageView(self) - } - -} - - -// MARK: - Freezing/Unfreezing - -extension ComposeMessageView { - - func freeze() { - self.isFreezed = true - self.plusButton.isEnabled = false - self.sendButton.isEnabled = false - } - - - func unfreeze() { - refreshSendButton() - self.plusButton.isEnabled = true - self.isFreezed = false - } - - - func clearText() { - self.textView.text = "" - textViewDidChange(self.textView) - } -} - - -// MARK: - Using the ComposeMessageDataSource - -extension ComposeMessageView { - - func loadDataSource() { - guard let dataSource = self.dataSource else { return } - if dataSource.collectionView == nil { - dataSource.collectionView = self.collectionView - } - self.textView.text = dataSource.body - self.textViewDidChange(textView) - loadReplyTo() - } - - func loadReplyTo() { - guard let dataSource = self.dataSource else { return } - if let (displayName, messageElement) = dataSource.replyTo { - replyToStackView.isHidden = false - replyToNameLabel.text = displayName - replyToBodyLabel.text = messageElement.replyToDescription - replyToBodyLabel.font = messageElement.font - } else { - replyToStackView.isHidden = true - replyToNameLabel.text = nil - replyToBodyLabel.text = nil - replyToBodyLabel.font = nil - } - } - -} - - -// MARK: - ObvAutoGrowingTextViewDelegate - -extension ComposeMessageView: ObvAutoGrowingTextViewDelegate { - - func userPasted(itemProviders: [NSItemProvider]) { - documentPickerDelegate?.addAttachments(itemProviders: itemProviders) - } - - func userPastedItemsWithoutText(in: ObvAutoGrowingTextView) { - documentPickerDelegate?.addAttachmentFromPasteboard() - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageView.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageView.xib deleted file mode 100644 index 26c97e5c..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageView.xib +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageViewDocumentPickerAdapterWithDraft.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageViewDocumentPickerAdapterWithDraft.swift deleted file mode 100644 index 12dae4e5..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageViewDocumentPickerAdapterWithDraft.swift +++ /dev/null @@ -1,425 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import CoreData -import MobileCoreServices -import os.log -import ObvCrypto -import PDFKit -import AVFoundation -import VisionKit -import PhotosUI -import OlvidUtils -import ObvUICoreData - - -final class ComposeMessageViewDocumentPickerAdapterWithDraft: NSObject { - - // API - - private let draft: PersistedDraft - - // Delegate - - weak var delegate: UIViewController? - - // Variables - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ComposeMessageViewDocumentPickerAdapterWithDraft.self)) - private let internalOperationQueue: OperationQueue = { - let queue = OperationQueue() - queue.maxConcurrentOperationCount = 1 - queue.name = "ComposeMessageViewDocumentPickerAdapterWithDraft internal queue" - return queue - }() - - private let dateFormatter: DateFormatter = { - let df = DateFormatter() - df.locale = Locale(identifier: "en_US_POSIX") - df.dateFormat = "yyyy-MM-dd HH-mm-ss" - return df - }() - - // Initializer - - init(draft: PersistedDraft) { - self.draft = draft - super.init() - } - -} - -extension ComposeMessageViewDocumentPickerAdapterWithDraft { - - func addAttachmentFromAirDropFile(at url: URL) { - - // Get the filename - let fileName = url.lastPathComponent - - // Save the file to a temp location - let tempURL = ObvUICoreDataConstants.ContainerURL.forTempFiles.appendingPathComponent(fileName) - do { - _ = url.startAccessingSecurityScopedResource() - try FileManager.default.copyItem(at: url, to: tempURL) - url.stopAccessingSecurityScopedResource() - } catch { - os_log("Could not save AirDrop file to temp URL", log: log, type: .error) - return - } - - // Add an attachment - - self.delegate?.showHUD(type: .spinner) - - let op = LoadFileRepresentationsThenCreateDraftFyleJoinsCompositeOperation(draftPermanentID: draft.objectPermanentID, fileURLs: [tempURL], log: log) - op.completionBlock = { [weak self] in - DispatchQueue.main.async { - self?.delegate?.hideHUD() - } - } - internalOperationQueue.addOperation(op) - - } - -} - -extension ComposeMessageViewDocumentPickerAdapterWithDraft: ComposeMessageViewDocumentPickerDelegate { - - // This method is typically called when performing a drop on the growing text field. - func addAttachments(itemProviders: [NSItemProvider]) { - assert(Thread.isMainThread) - guard !itemProviders.isEmpty else { return } - self.delegate?.showHUD(type: .spinner) - let op = LoadFileRepresentationsThenCreateDraftFyleJoinsCompositeOperation(draftPermanentID: draft.objectPermanentID, itemProviders: itemProviders, log: log) - op.completionBlock = { [weak self] in - DispatchQueue.main.async { - self?.delegate?.hideHUD() - } - } - internalOperationQueue.addOperation(op) - } - - - func addAttachmentFromPasteboard() { - os_log("Adding %d attachments from the pasteboard", log: log, type: .info, UIPasteboard.general.itemProviders.count) - addAttachments(itemProviders: UIPasteboard.general.itemProviders) - } - - - private func addAttachment(atURL url: URL) { - assert(Thread.isMainThread) - self.delegate?.showHUD(type: .spinner) - let op = LoadFileRepresentationsThenCreateDraftFyleJoinsCompositeOperation(draftPermanentID: draft.objectPermanentID, fileURLs: [url], log: log) - op.completionBlock = { [weak self] in - DispatchQueue.main.async { - self?.delegate?.hideHUD() - } - } - internalOperationQueue.addOperation(op) - } - - - func addAttachment(_ sender: UIView) { - - let alert = UIAlertController(title: Strings.addAttachment, message: nil, preferredStyle: .actionSheet) - - alert.addAction(UIAlertAction(title: Strings.addAttachmentDocument, style: .default, handler: { [weak self] (action) in - // See UTCoreTypes.h for types - // Since we have kUTTypeItem, other elements in the array may be useless - let documentTypes = [kUTTypeImage, kUTTypeMovie, kUTTypePDF, kUTTypeData, kUTTypeItem] as [String] - let documentPicker = UIDocumentPickerViewController(documentTypes: documentTypes, in: .import) - documentPicker.delegate = self - documentPicker.allowsMultipleSelection = true - DispatchQueue.main.async { - self?.delegate?.present(documentPicker, animated: true) - } - })) - - if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { - alert.addAction(UIAlertAction(title: Strings.addAttachmentPhotoAndVideoLibrary, style: .default, handler: { [weak self] (action) in - if #available(iOS 14.0, *) { - var configuration = PHPickerConfiguration() - configuration.selectionLimit = 0 - let picker = PHPickerViewController(configuration: configuration) - picker.delegate = self - assert(Thread.isMainThread) - self?.delegate?.present(picker, animated: true) - } else { - let imagePicker = UIImagePickerController() - imagePicker.sourceType = .photoLibrary - imagePicker.mediaTypes = [kUTTypeImage, kUTTypeMovie] as [String] - imagePicker.delegate = self - imagePicker.allowsEditing = false - imagePicker.videoExportPreset = AVAssetExportPresetPassthrough - DispatchQueue.main.async { - self?.delegate?.present(imagePicker, animated: true) - } - } - })) - } - - if UIImagePickerController.isSourceTypeAvailable(.camera) { - alert.addAction(UIAlertAction(title: CommonString.Word.Camera, style: .default, handler: { [weak self] (action) in - switch AVCaptureDevice.authorizationStatus(for: AVMediaType.video) { - case .authorized: - self?.setupAndPresentCaptureSession() - case .notDetermined: - AVCaptureDevice.requestAccess(for: .video) { granted in - if granted { - DispatchQueue.main.async { - self?.setupAndPresentCaptureSession() - } - } - } - case .denied, - .restricted: - let NotificationType = MessengerInternalNotification.UserTriedToAccessCameraButAccessIsDenied.self - NotificationCenter.default.post(name: NotificationType.name, object: nil) - @unknown default: - assertionFailure("A recent AVCaptureDevice.authorizationStatus is not properly handled") - return - } - })) - } - - if UIImagePickerController.isSourceTypeAvailable(.camera), VNDocumentCameraViewController.isSupported { - alert.addAction(UIAlertAction(title: CommonString.Title.scanDocument, style: .default, handler: { [weak self] (action) in - switch AVCaptureDevice.authorizationStatus(for: AVMediaType.video) { - case .authorized: - self?.setupAndPresentDocumentCameraViewController() - case .notDetermined: - AVCaptureDevice.requestAccess(for: .video) { granted in - if granted { - DispatchQueue.main.async { - self?.setupAndPresentDocumentCameraViewController() - } - } - } - case .denied, - .restricted: - let NotificationType = MessengerInternalNotification.UserTriedToAccessCameraButAccessIsDenied.self - NotificationCenter.default.post(name: NotificationType.name, object: nil) - @unknown default: - assertionFailure("A recent AVCaptureDevice.authorizationStatus is not properly handled") - return - } - })) - } - - alert.addAction(UIAlertAction(title: CommonString.Word.Cancel, style: .cancel)) - - DispatchQueue.main.async { [weak self] in - alert.popoverPresentationController?.sourceView = sender - self?.delegate?.present(alert, animated: true) - } - - } - - - - private func setupAndPresentDocumentCameraViewController() { - assert(Thread.isMainThread) - let documentCameraViewController = VNDocumentCameraViewController() - documentCameraViewController.delegate = self - DispatchQueue.main.async { [weak self] in - self?.delegate?.present(documentCameraViewController, animated: true) - } - } - - - private func setupAndPresentCaptureSession() { - let imagePicker = UIImagePickerController() - imagePicker.sourceType = .camera - imagePicker.mediaTypes = [kUTTypeImage, kUTTypeMovie] as [String] - imagePicker.delegate = self - imagePicker.allowsEditing = false - DispatchQueue.main.async { [weak self] in - self?.delegate?.present(imagePicker, animated: true) - } - } - -} - - -// MARK: - UIDocumentPickerDelegate - -extension ComposeMessageViewDocumentPickerAdapterWithDraft: UIDocumentPickerDelegate { - - func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { - - self.delegate?.showHUD(type: .spinner) - - let op = LoadFileRepresentationsThenCreateDraftFyleJoinsCompositeOperation(draftPermanentID: draft.objectPermanentID, fileURLs: urls, log: log) - op.completionBlock = { [weak self] in - DispatchQueue.main.async { - self?.delegate?.hideHUD() - } - } - internalOperationQueue.addOperation(op) - - } - -} - - -// MARK: - PHPickerViewControllerDelegate (for iOS >= 14.0) - -@available(iOS 14, *) -extension ComposeMessageViewDocumentPickerAdapterWithDraft: PHPickerViewControllerDelegate { - - func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { - picker.dismiss(animated: true) - guard !results.isEmpty else { return } - let itemProviders = results.map { $0.itemProvider } - addAttachments(itemProviders: itemProviders) - } - -} - -// MARK: - UIImagePickerControllerDelegate (for iOS < 14.0 and for the Camera) - -extension ComposeMessageViewDocumentPickerAdapterWithDraft: UIImagePickerControllerDelegate, UINavigationControllerDelegate { - - func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) { - - picker.dismiss(animated: true) - delegate?.showHUD(type: .spinner) - - let dateFormatter = self.dateFormatter - let log = self.log - - DispatchQueue(label: "Queue for processing the UIImagePickerController result").async { [weak self] in - - defer { - DispatchQueue.main.async { - self?.delegate?.hideHUD() - } - } - - // Fow now, we only authorize images and videos - - guard let chosenMediaType = info[.mediaType] as? String else { return } - guard ([kUTTypeImage, kUTTypeMovie] as [String]).contains(chosenMediaType) else { return } - - let pickerURL: URL? - if let imageURL = info[.imageURL] as? URL { - pickerURL = imageURL - } else if let mediaURL = info[.mediaURL] as? URL { - pickerURL = mediaURL - } else { - // This should only happen when shooting a photo - pickerURL = nil - } - - if let url = pickerURL { - // Copy the file to a temporary location. This does not seems to be required the pickerURL comes from an info[.imageURL], but this seems to be required when it comes from a info[.mediaURL]. Nevertheless, we do it for both, since the filename provided by the picker is terrible in both cases. - let fileExtension = url.pathExtension.lowercased() - let filename = ["Media @ \(dateFormatter.string(from: Date()))", fileExtension].joined(separator: ".") - let localURL = ObvUICoreDataConstants.ContainerURL.forTempFiles.appendingPathComponent(filename) - do { - try FileManager.default.copyItem(at: url, to: localURL) - } catch { - os_log("Could not copy file provided by the Photo picker to a local URL: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - assert(!localURL.path.contains("PluginKitPlugin")) // This is a particular case, but we know the loading won't work in that case - DispatchQueue.main.async { - self?.addAttachment(atURL: localURL) - } - } else if let originalImage = info[.originalImage] as? UIImage { - let uti = String(kUTTypeJPEG) - guard let fileExtention = ObvUTIUtils.preferredTagWithClass(inUTI: uti, inTagClass: .FilenameExtension) else { return } - let name = "Photo @ \(dateFormatter.string(from: Date()))" - let tempFileName = [name, fileExtention].joined(separator: ".") - let url = ObvUICoreDataConstants.ContainerURL.forTempFiles.appendingPathComponent(tempFileName) - guard let pickedImageJpegData = originalImage.jpegData(compressionQuality: 1.0) else { return } - do { - try pickedImageJpegData.write(to: url) - } catch let error { - os_log("Could not save file to temp location: %@", log: log, type: .error, error.localizedDescription) - return - } - DispatchQueue.main.async { - self?.addAttachment(atURL: url) - } - } else { - assertionFailure() - } - - } - - } - -} - - -// MARK: - VNDocumentCameraViewControllerDelegate - - -extension ComposeMessageViewDocumentPickerAdapterWithDraft: VNDocumentCameraViewControllerDelegate { - - - func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) { - - controller.dismiss(animated: true) - - guard scan.pageCount > 0 else { return } - - self.delegate?.showHUD(type: .spinner) - - let dateFormatter = self.dateFormatter - - DispatchQueue(label: "Queue for creating a pdf from scanned document").async { - - let pdfDocument = PDFDocument() - for pageNumber in 0... - */ - -import UIKit - -protocol ComposeMessageViewDocumentPickerDelegate: AnyObject { - - func addAttachmentFromPasteboard() - func addAttachment(_ sender: UIView) - func addAttachments(itemProviders: [NSItemProvider]) - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageViewSendMessageAdapterWithDraft.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageViewSendMessageAdapterWithDraft.swift deleted file mode 100644 index 75f1e117..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageViewSendMessageAdapterWithDraft.swift +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import ObvUICoreData - - -final class ComposeMessageViewSendMessageAdapterWithDraft: ComposeMessageViewSendMessageDelegate { - - // API - - private let draft: PersistedDraft - - // Variables - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ComposeMessageViewSendMessageAdapterWithDraft.self)) - private var observationTokens = [NSObjectProtocol]() - private weak var composeMessageView: ComposeMessageView? - - // Initializer - - init(draft: PersistedDraft) { - self.draft = draft - observeDraftWasSentNotifications() - } - - deinit { - observationTokens.forEach { NotificationCenter.default.removeObserver($0) } - } - - - func userWantsToSendMessageInComposeMessageView(_ composeMessageView: ComposeMessageView) { - - assert(self.draft.managedObjectContext == ObvStack.shared.viewContext) - - let log = self.log - - // We keep a weak reference to the compose message view so as to clear it when we receive a notification that the message has been sent. - self.composeMessageView = composeMessageView - - composeMessageView.freeze() - let textToSend = composeMessageView.textView.text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) - let draftObjectID = self.draft.typedObjectID - - ObvStack.shared.performBackgroundTask { (context) in - - let writableDraft: PersistedDraft - do { - guard let _writableDraft = try PersistedDraft.get(objectID: draftObjectID, within: context) else { return } - writableDraft = _writableDraft - } catch { - DispatchQueue.main.async { - composeMessageView.unfreeze() - } - return - } - - guard !textToSend.isEmpty || !writableDraft.fyleJoins.isEmpty else { - DispatchQueue.main.async { - composeMessageView.unfreeze() - } - return - } - writableDraft.replaceContentWith(newBody: textToSend, newMentions: Set()) - writableDraft.send() - do { - try context.save(logOnFailure: log) - } catch { - // We wait for the reception of the DraftWasSent notification to unfreeze the compose message view - return - } - - } - - } - - - private func observeDraftWasSentNotifications() { - let token = ObvMessengerCoreDataNotification.observeDraftWasSent(queue: OperationQueue.main) { (draftObjectID) in - guard self.draft.typedObjectID == draftObjectID else { return } - ObvStack.shared.viewContext.refresh(self.draft, mergeChanges: false) - self.composeMessageView?.loadDataSource() - self.composeMessageView?.unfreeze() - } - observationTokens.append(token) - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageViewSendMessageDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageViewSendMessageDelegate.swift deleted file mode 100644 index f2a47dd8..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/ComposeMessageViewSendMessageDelegate.swift +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation - -protocol ComposeMessageViewSendMessageDelegate: AnyObject { - func userWantsToSendMessageInComposeMessageView(_: ComposeMessageView) -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/TextFieldBackgroundView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/TextFieldBackgroundView.swift deleted file mode 100644 index eec68268..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/ComposeMessage/TextFieldBackgroundView.swift +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -class TextFieldBackgroundView: UIView { - - private let cornerRadius: CGFloat = 9.5 - private var shapeLayer: CAShapeLayer! - - var fillColor: UIColor = AppTheme.shared.colorScheme.secondarySystemBackground - var strokeColor: UIColor = AppTheme.shared.colorScheme.secondarySystemBackground - - override func layoutSubviews() { - super.layoutSubviews() - - shapeLayer?.removeFromSuperlayer() - shapeLayer = CAShapeLayer() - shapeLayer.fillColor = self.fillColor.cgColor - shapeLayer.strokeColor = self.strokeColor.cgColor - shapeLayer.lineWidth = 1.0 - shapeLayer.path = CGPath(roundedRect: self.bounds, - cornerWidth: 2*cornerRadius, - cornerHeight: 2*cornerRadius, - transform: nil) - self.layer.addSublayer(shapeLayer) - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutItemInfos.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutItemInfos.swift deleted file mode 100644 index 2306d4ed..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ElementInfos/ObvCollectionViewLayoutItemInfos.swift +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -struct ObvCollectionViewLayoutItemInfos { - - let frameInSection: CGRect - - /// Return the frame of the item in the collection view - /// - /// - Parameter sectionInfos: The section infos of the section containing this item - /// - Returns: The frame of this item in the collection view - func getFrame(using sectionInfos: ObvCollectionViewLayoutSectionInfos) -> CGRect { - let origin = CGPoint(x: sectionInfos.frame.origin.x + frameInSection.origin.x, - y: sectionInfos.frame.origin.y + frameInSection.origin.y) - let size = frameInSection.size - let frame = CGRect(origin: origin, size: size) - return frame - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ObvCollectionView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ObvCollectionView.swift deleted file mode 100644 index 5ae254b3..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ObvCollectionView.swift +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -final class ObvCollectionView: UICollectionView { - - - override func deleteItems(at indexPaths: [IndexPath]) { - (collectionViewLayout as? ObvCollectionViewLayout)?.deletedIndexPathBeforeUpdate.append(contentsOf: indexPaths) - super.deleteItems(at: indexPaths) - } - - - override func deleteSections(_ sections: IndexSet) { - (collectionViewLayout as? ObvCollectionViewLayout)?.deletedSectionsBeforeUpdate.formUnion(sections) - super.deleteSections(sections) - } - - - override func insertSections(_ sections: IndexSet) { - (collectionViewLayout as? ObvCollectionViewLayout)?.insertedSectionsAfterUpdate.formUnion(sections) - super.insertSections(sections) - } - - - override func insertItems(at indexPaths: [IndexPath]) { - (collectionViewLayout as? ObvCollectionViewLayout)?.insertedIndexPathsAfterUpdate.append(contentsOf: indexPaths) - super.insertItems(at: indexPaths) - } - - override func moveItem(at indexPath: IndexPath, to newIndexPath: IndexPath) { - (collectionViewLayout as? ObvCollectionViewLayout)?.movedIndexPaths[newIndexPath] = indexPath - super.moveItem(at: indexPath, to: newIndexPath) - } - -} - - -extension ObvCollectionView { - - var lastIndexPathIsVisible: Bool { - guard numberOfSections > 0 else { return true } - let lastSection = numberOfSections-1 - guard numberOfItems(inSection: lastSection) != 0 else { return true } - let lastIndexPath = IndexPath(item: numberOfItems(inSection: lastSection)-1, section: lastSection) - return indexPathsForVisibleItems.contains(lastIndexPath) - } - - func adjustedScrollToItem(at indexPath: IndexPath, at scrollPosition: UICollectionView.ScrollPosition, animated: Bool, completionHandler: (() -> Void)? = nil) { - - let animationDuration: TimeInterval = animated ? 0.1 : 0 - let animator = UIViewPropertyAnimator(duration: animationDuration, curve: .linear) - animator.addAnimations { [weak self] in - self?.scrollToItem(at: indexPath, at: scrollPosition, animated: false) - } - animator.addCompletion { [weak self] (position) in - guard position == .end else { return } - if self?.indexPathsForVisibleItems.contains(indexPath) == true { - // We scroll one last time to make sure the cell is at the right location - self?.scrollToItem(at: indexPath, at: scrollPosition, animated: animated) - completionHandler?() - } else { - self?.adjustedScrollToItem(at: indexPath, at: scrollPosition, animated: animated, completionHandler: completionHandler) - } - } - animator.startAnimation() - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ObvCollectionViewLayout.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ObvCollectionViewLayout.swift deleted file mode 100644 index ddbddadc..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ObvCollectionViewLayout.swift +++ /dev/null @@ -1,968 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -final class ObvCollectionViewLayout: UICollectionViewLayout { - - private var needsInitialPrepare = true - - private var largestSectionWithValidOrigin: Int? = nil - private var cachedSectionInfos = [ObvCollectionViewLayoutSectionInfos]() - private var cachedSupplementaryViewInfos = [ObvCollectionViewLayoutSupplementaryViewInfos]() - private var cachedItemInfos = [[ObvCollectionViewLayoutItemInfos]]() - - private(set) var knownCollectionViewSafeAreaWidth: CGFloat = CGFloat.zero // Computed later - private var availableWidth: CGFloat = 0.0 // Computed later - private var sectionWidth: CGFloat = 0.0 // Computed later - private var sectionXOrigin: CGFloat = 0.0 // Computed later - private let defaultHeightForSupplementaryView: CGFloat = 20.0 - private let defaultHeightForCell: CGFloat = 59.0 - private let defaultSectionXOrigin: CGFloat = 10.0 - - var interitemSpacing: CGFloat = 10 - var spaceBetweenSections: CGFloat = 10 - - weak var delegate: ObvCollectionViewLayoutDelegate? - - var deletedIndexPathBeforeUpdate = [IndexPath]() - var deletedSectionsBeforeUpdate = IndexSet() - var insertedSectionsAfterUpdate = IndexSet() - var insertedIndexPathsAfterUpdate = [IndexPath]() - var movedIndexPaths = [IndexPath: IndexPath]() - - var indexPathOfPinnedHeader: IndexPath? = nil - var sectionHeadersPinToVisibleBounds = true - -} - - -// MARK: - Preparing & reseting the layout, returning the content size - -extension ObvCollectionViewLayout { - - override func prepare() { - guard let collectionView = collectionView else { return } - - guard !needsInitialPrepare else { - initialPrepare(collectionView: collectionView) - needsInitialPrepare = false - return - } - - updateCache() - - } - - - func reset() { - needsInitialPrepare = true - } - - - private func initialPrepare(collectionView: UICollectionView, forBoundsChange newBounds: CGRect? = nil) { - - debugPrint("🥶 Layout considers safeAreaInsets: \(collectionView.safeAreaInsets)") - knownCollectionViewSafeAreaWidth = (newBounds ?? collectionView.bounds).inset(by: collectionView.safeAreaInsets).width - - availableWidth = knownCollectionViewSafeAreaWidth - sectionXOrigin = defaultSectionXOrigin - sectionWidth = availableWidth - 2 * defaultSectionXOrigin - - // Reset cached information. - cachedSectionInfos.removeAll() - cachedSupplementaryViewInfos.removeAll() - cachedItemInfos.removeAll() - - var previousSectionFrame = CGRect.zero - - for section in 0.. 0) - let sectionHeight = defaultHeightForSupplementaryView + CGFloat(collectionView.numberOfItems(inSection: section)) * (defaultHeightForCell + interitemSpacing) - let size = CGSize(width: sectionWidth, height: sectionHeight) - let frame = CGRect(origin: origin, size: size) - let sectionInfos = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: collectionView.numberOfItems(inSection: section)-1) - cachedSectionInfos.append(sectionInfos) - - previousSectionFrame = frame - } - - // Cache estimated infos for the supplementary view of this section - - let supplementaryViewFrame: CGRect - - do { - let origin = CGPoint.zero - let size = CGSize(width: sectionWidth, height: defaultHeightForSupplementaryView) - supplementaryViewFrame = CGRect(origin: origin, size: size) - let svInfos = ObvCollectionViewLayoutSupplementaryViewInfos(frameInSection: supplementaryViewFrame) - cachedSupplementaryViewInfos.append(svInfos) - } - - // Cache estimated infos for all the items within this section - - var cachedItemInfosInSection = [ObvCollectionViewLayoutItemInfos]() - var previousElementFrame = supplementaryViewFrame - - for _ in 0.. 0 { - largestSectionWithValidOrigin = collectionView.numberOfSections-1 - } - - if collectionView.bounds.height < collectionViewContentSize.height { - collectionView.contentOffset = CGPoint(x: 0, y: collectionViewContentSize.height - collectionView.bounds.height) - } - - } - - - override var collectionViewContentSize: CGSize { - guard !cachedSectionInfos.isEmpty else { return .zero } - adjustOriginOfLayoutSectionInfos(untilSection: cachedSectionInfos.count-1) - guard let lastSectionFrame = cachedSectionInfos.last?.frame else { return .zero } - return CGSize(width: sectionWidth, height: lastSectionFrame.maxY) - } - -} - - -// MARK: - Deciding and processing layout invalidation - -extension ObvCollectionViewLayout { - - override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool { - guard let collectionView = collectionView else { return false } - if sectionHeadersPinToVisibleBounds { - return !newBounds.equalTo(collectionView.bounds) - } else { - return !newBounds.size.equalTo(collectionView.bounds.size) - } - } - - - override func shouldInvalidateLayout(forPreferredLayoutAttributes preferredAttributes: UICollectionViewLayoutAttributes, withOriginalAttributes originalAttributes: UICollectionViewLayoutAttributes) -> Bool { - if preferredAttributes.frame == originalAttributes.frame { - return false - } else { - return true - } - } - -} - - -// MARK: - Returning invalidation context - -extension ObvCollectionViewLayout { - - override func invalidationContext(forBoundsChange newBounds: CGRect) -> UICollectionViewLayoutInvalidationContext { - let context = super.invalidationContext(forBoundsChange: newBounds) - if let collectionView = self.collectionView, - newBounds.width != collectionView.bounds.width { - initialPrepare(collectionView: collectionView, forBoundsChange: newBounds) - } - return context - } - -} - - -// MARK: - Returning layout attributes - -extension ObvCollectionViewLayout { - - override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - adjustOriginOfLayoutSectionInfos(untilSection: indexPath.section) - adjustOriginOfLayoutItemInfos(at: indexPath) - - let sectionInfos = cachedSectionInfos[indexPath.section] - let itemInfos = cachedItemInfos[indexPath.section][indexPath.item] - let frame = itemInfos.getFrame(using: sectionInfos) - let attributes = UICollectionViewLayoutAttributes(forCellWith: indexPath) - attributes.frame = frame - return attributes - } - - - override func layoutAttributesForSupplementaryView(ofKind elementKind: String, at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - assert(indexPath.item == 0) - - guard elementKind == UICollectionView.elementKindSectionHeader else { return nil } - - adjustOriginOfLayoutSectionInfos(untilSection: indexPath.section) - - let topFrame = topFrameForSupplementaryView(atSection: indexPath.section) - let bottomFrame = bottomFrameForSupplementaryView(atSection: indexPath.section) - - let attributes = UICollectionViewLayoutAttributes(forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, with: indexPath) - attributes.zIndex = Int.max - - guard sectionHeadersPinToVisibleBounds else { - indexPathOfPinnedHeader = nil - attributes.frame = topFrame - return attributes - } - - let spaceAboveSection = spaceBetweenSections - - if bottomFrame.origin.y > collectionView!.bounds.origin.y + collectionView!.adjustedContentInset.top + spaceAboveSection { - attributes.frame = CGRect(origin: CGPoint(x: bottomFrame.origin.x, y: collectionView!.bounds.origin.y + collectionView!.adjustedContentInset.top + spaceAboveSection), size: bottomFrame.size) - } else { - attributes.frame = bottomFrame - } - - if attributes.frame.origin.y <= topFrame.origin.y { - attributes.frame = topFrame - if indexPathOfPinnedHeader == indexPath { - indexPathOfPinnedHeader = nil - } - } else { - indexPathOfPinnedHeader = indexPath - } - - return attributes - } - - - func topFrameForSupplementaryView(atSection section: Int) -> CGRect { - let sectionInfos = cachedSectionInfos[section] - let svInfos = cachedSupplementaryViewInfos[section] - let frame = svInfos.getFrame(using: sectionInfos) - return frame - } - - - func bottomFrameForSupplementaryView(atSection section: Int) -> CGRect { - let sectionInfos = cachedSectionInfos[section] - let svInfos = cachedSupplementaryViewInfos[section] - let frame = svInfos.getFrame(using: sectionInfos) - let newOrigin = CGPoint(x: frame.origin.x, y: frame.origin.y + sectionInfos.frame.size.height - frame.size.height) - let newFrame = CGRect(origin: newOrigin, size: frame.size) - return newFrame - } - - - override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { - var attributesArray = [UICollectionViewLayoutAttributes]() - - // Find any section that sits within the query rect - - guard let lastIndex = cachedSectionInfos.indices.last, - let firstMatchIndex = binSearchSectionInfos(rect, start: 0, end: lastIndex) else { return attributesArray } - - var sectionsIntersectingRect = [firstMatchIndex] - - // Starting from the match, loop up and down through the array until all the sections that intersect the rect have been found - - for section in (0..= rect.minY else { break } - sectionsIntersectingRect.insert(section, at: 0) - } - - for section in firstMatchIndex..= rect.minY && attributes.frame.minY <= rect.maxY { - attributesArray.append(attributes) - } - } - } - - // Continue with the items - - let sectionItemInfos = cachedItemInfos[section] - - for item in 0..= rect.minY && frame.minY <= rect.maxY else { continue } - let attributes = UICollectionViewLayoutAttributes(forCellWith: IndexPath(item: item, section: section)) - attributes.frame = frame - attributesArray.append(attributes) - - } - - } - - return attributesArray - - } - -} - - -// MARK: - Self sizing cells - -extension ObvCollectionViewLayout { - - override func invalidationContext(forPreferredLayoutAttributes preferredAttributes: UICollectionViewLayoutAttributes, withOriginalAttributes originalAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutInvalidationContext { - - let context = super.invalidationContext(forPreferredLayoutAttributes: preferredAttributes, withOriginalAttributes: originalAttributes) - - let currentIndexPath = preferredAttributes.indexPath - - // Update the cached size of the current element and get the height adjustment (to be used to set both contentOffsetAdjustment and contentSizeAdjustment of the context) - - let heightAdjustment: CGFloat - - switch originalAttributes.representedElementCategory { - - case .cell: - - let infos = cachedItemInfos[currentIndexPath.section][currentIndexPath.item] - let origin = infos.frameInSection.origin - heightAdjustment = preferredAttributes.frame.size.height - infos.frameInSection.size.height - let size = CGSize(width: sectionWidth, height: preferredAttributes.frame.size.height) - let frame = CGRect(origin: origin, size: size) - let updatedInfos = ObvCollectionViewLayoutItemInfos(frameInSection: frame) - cachedItemInfos[currentIndexPath.section][currentIndexPath.item] = updatedInfos - - case .supplementaryView: - - let infos = cachedSupplementaryViewInfos[currentIndexPath.section] - let origin = infos.frameInSection.origin - heightAdjustment = preferredAttributes.frame.size.height - infos.frameInSection.size.height - let size = CGSize(width: sectionWidth, height: preferredAttributes.frame.size.height) - let frame = CGRect(origin: origin, size: size) - let updatedInfos = ObvCollectionViewLayoutSupplementaryViewInfos(frameInSection: frame) - cachedSupplementaryViewInfos[currentIndexPath.section] = updatedInfos - - case .decorationView: - assertionFailure("Unexpected element category") - return context - - @unknown default: - fatalError() - } - - // Update the section infos - - do { - let sectionInfos = cachedSectionInfos[currentIndexPath.section] - - let origin = sectionInfos.frame.origin - let size = CGSize(width: sectionWidth, height: sectionInfos.frame.size.height + heightAdjustment) - let frame = CGRect(origin: origin, size: size) - - let largestItemWithValidOrigin: Int? - switch originalAttributes.representedElementCategory { - case .cell: - if let currentLargestItemWithValidOrigin = sectionInfos.largestItemWithValidOrigin { - largestItemWithValidOrigin = min(currentLargestItemWithValidOrigin, currentIndexPath.item) - } else { - largestItemWithValidOrigin = nil - } - case .supplementaryView: - largestItemWithValidOrigin = nil - case .decorationView: - assertionFailure("Unexpected element category") - return context - @unknown default: - fatalError() - } - - let updatedSectionInfos = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: largestItemWithValidOrigin) - - cachedSectionInfos[currentIndexPath.section] = updatedSectionInfos - } - - // Update the index of largest section with valid origin - - if largestSectionWithValidOrigin != nil { - largestSectionWithValidOrigin = min(largestSectionWithValidOrigin!, currentIndexPath.section) - } - - // Adjust the context - - context.contentOffsetAdjustment = getContentOffsetAdjustment(from: heightAdjustment, ofElementWithCategoy: originalAttributes.representedElementCategory, atIndexPath: currentIndexPath) - context.contentSizeAdjustment = CGSize(width: 0.0, height: heightAdjustment) - - return context - } - - - private func getContentOffsetAdjustment(from heightAdjustment: CGFloat, ofElementWithCategoy categoy: UICollectionView.ElementCategory, atIndexPath indexPath: IndexPath) -> CGPoint { - - guard let collectionView = collectionView else { return .zero } - guard let delegate = delegate else { return .zero } - - let contentOffsetAdjustment: CGPoint - - // Always adjust while the collection is not on screen yet - guard delegate.collectionViewDidAppear() else { - return CGPoint(x: 0, y: heightAdjustment) - } - - if collectionViewContentSize.height <= collectionView.bounds.height { - - // After self-sizing the cell, the content size happens to be smaller than the collection view bound. - // We adjust the content offset to to make it (0,0). - let heightAdjustment = -collectionView.contentOffset.y - contentOffsetAdjustment = CGPoint(x: 0, y: heightAdjustment) - - } else { - - switch getElementPositionWithRespectToContentView(elementCategory: categoy, indexPath: indexPath, collectionView: collectionView) { - case .above: - contentOffsetAdjustment = CGPoint(x: 0, y: heightAdjustment) - case .under: - contentOffsetAdjustment = .zero - case .visible: - contentOffsetAdjustment = .zero - } - - } - - return contentOffsetAdjustment - - } - -} - - -// MARK: - Updating cache before collection view updates - -extension ObvCollectionViewLayout { - - func updateCache() { - - // Order mattters - updateCacheFromDeletedItems() - updateCacheFromDeletedSections() - updateCacheFromInsertedSections() - updateCacheFromInsertedItems() - updateCacheForMovedItems() - - deletedIndexPathBeforeUpdate.removeAll() - deletedSectionsBeforeUpdate.removeAll() - insertedSectionsAfterUpdate.removeAll() - insertedIndexPathsAfterUpdate.removeAll() - movedIndexPaths.removeAll() - - } - - - private func updateCacheFromDeletedItems() { - - // Delete cached infos of deleted items in descending order - - let deletedIndexPaths = self.deletedIndexPathBeforeUpdate.sorted { $0 > $1 } - - for indexPath in deletedIndexPaths { - - // Remove the deleted item from the cache - - let deletedItemInfos = cachedItemInfos[indexPath.section].remove(at: indexPath.item) - - // Update the section infos - - do { - let sectionInfos = cachedSectionInfos[indexPath.section] - let origin = sectionInfos.frame.origin - let topSpaceAboveDeletedItem = interitemSpacing - let size = CGSize(width: sectionInfos.frame.size.width, height: sectionInfos.frame.size.height - topSpaceAboveDeletedItem - deletedItemInfos.frameInSection.height) - let frame = CGRect(origin: origin, size: size) - if let largestItemWithValidOrigin = (indexPath.item == 0) ? nil : indexPath.item-1, - let previousLargestItemWithValidOrigin = sectionInfos.largestItemWithValidOrigin { - let newLargestItemWithValidOrigin = min(previousLargestItemWithValidOrigin, largestItemWithValidOrigin) - cachedSectionInfos[indexPath.section] = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: newLargestItemWithValidOrigin) - } else { - cachedSectionInfos[indexPath.section] = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: nil) - } - } - - // Update the largest index of the section with valid origin - - if largestSectionWithValidOrigin != nil { - largestSectionWithValidOrigin = min(largestSectionWithValidOrigin!, indexPath.section) - } - - // Update the from index paths of moved items - - for (toIndexPath, fromIndexPath) in movedIndexPaths { - guard fromIndexPath.section == indexPath.section else { continue } - guard fromIndexPath.item > indexPath.item else { continue } - let newFromIndexPath = IndexPath(item: fromIndexPath.item-1, section: fromIndexPath.section) - movedIndexPaths[toIndexPath] = newFromIndexPath - } - - } - - } - - - private func updateCacheFromDeletedSections() { - - let deletedSections = Array(self.deletedSectionsBeforeUpdate.sorted { $0 > $1 }) - for deletedSection in deletedSections { - - // Delete cached infos about the deleted section and update the index of the largest section with a valid origin - - cachedSectionInfos.remove(at: deletedSection) - cachedSupplementaryViewInfos.remove(at: deletedSection) - assert(cachedItemInfos[deletedSection].isEmpty) - cachedItemInfos.remove(at: deletedSection) - - if largestSectionWithValidOrigin != nil { - if deletedSection == 0 { - largestSectionWithValidOrigin = nil - } else { - largestSectionWithValidOrigin = min(largestSectionWithValidOrigin!, deletedSection-1) - } - } - - // Update the from index paths of moved items - - for (toIndexPath, fromIndexPath) in movedIndexPaths { - guard fromIndexPath.section > deletedSection else { continue } - let newFromIndexPath = IndexPath(item: fromIndexPath.item, section: fromIndexPath.section-1) - movedIndexPaths[toIndexPath] = newFromIndexPath - } - - } - - } - - - private func updateCacheFromInsertedSections() { - - // Add cached infos for inserted sections (cells will be added later) - - if let lastInsertedSection = self.insertedSectionsAfterUpdate.max() { - - let firstInsertedSection = cachedItemInfos.count - var previousSectionFrame = (cachedItemInfos.count == 0) ? CGRect.zero : cachedSectionInfos.last!.frame - - for section in firstInsertedSection...lastInsertedSection { - - guard let delegate = delegate else { break } - - // Insert infos for the supplementary view of this section (ask for the appropriate size to the delegate) - - let height: CGFloat - do { - let indexPath = IndexPath(item: 0, section: section) - let layoutAttributes = UICollectionViewLayoutAttributes(forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, with: indexPath) - let size = CGSize(width: sectionWidth, height: defaultHeightForSupplementaryView) - layoutAttributes.frame = CGRect(origin: .zero, size: size) - let preferredLayoutAttributes = delegate.preferredLayoutAttributesFitting(layoutAttributes) - let supplementaryViewFrame = preferredLayoutAttributes.frame - let svInfos = ObvCollectionViewLayoutSupplementaryViewInfos(frameInSection: supplementaryViewFrame) - cachedSupplementaryViewInfos.append(svInfos) - - height = preferredLayoutAttributes.frame.size.height - } - - // Cache infos for this section - - do { - let topSpace = spaceBetweenSections - let origin = CGPoint(x: sectionXOrigin, y: previousSectionFrame.maxY + topSpace) - let size = CGSize(width: sectionWidth, height: height) - let frame = CGRect(origin: origin, size: size) - let sectionInfos = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: nil) - cachedSectionInfos.append(sectionInfos) - - previousSectionFrame = frame - } - - // Prepare array for cache estimated infos - - cachedItemInfos.append([]) - - } - } - - // Update the from index paths of moved items - - let insertedSections = Array(self.insertedSectionsAfterUpdate.sorted { $0 < $1 }) - for insertedSection in insertedSections { - for (toIndexPath, fromIndexPath) in movedIndexPaths { - guard fromIndexPath.section > insertedSection else { continue } - let newFromIndexPath = IndexPath(item: fromIndexPath.item, section: fromIndexPath.section+1) - movedIndexPaths[toIndexPath] = newFromIndexPath - } - } - } - - - private func updateCacheFromInsertedItems() { - - // Add cached infos for inserted items in ascending order - - let insertedIndexPaths = self.insertedIndexPathsAfterUpdate.sorted { $0 < $1 } - - for indexPath in insertedIndexPaths { - - guard let delegate = delegate else { break } - - // Insert the item into the cache (ask for the appropriate size to the delegate) - - let height: CGFloat - do { - let layoutAttributes = UICollectionViewLayoutAttributes(forCellWith: indexPath) - let size = CGSize(width: sectionWidth, height: defaultHeightForCell) - layoutAttributes.frame = CGRect(origin: .zero, size: size) - let preferredLayoutAttributes = delegate.preferredLayoutAttributesFitting(layoutAttributes) - let itemFrame = preferredLayoutAttributes.frame - let itemInfos = ObvCollectionViewLayoutItemInfos(frameInSection: itemFrame) - cachedItemInfos[indexPath.section].insert(itemInfos, at: indexPath.item) - - height = preferredLayoutAttributes.frame.size.height - } - - // Update the section infos - - do { - let sectionInfos = cachedSectionInfos[indexPath.section] - let origin = sectionInfos.frame.origin - let topSpaceAboveNewItem = interitemSpacing - let size = CGSize(width: sectionInfos.frame.size.width, height: sectionInfos.frame.size.height + topSpaceAboveNewItem + height) - let frame = CGRect(origin: origin, size: size) - if let largestItemWithValidOrigin = (indexPath.item == 0) ? nil : indexPath.item-1, - let previousLargestItemWithValidOrigin = sectionInfos.largestItemWithValidOrigin { - let newLargestItemWithValidOrigin = min(previousLargestItemWithValidOrigin, largestItemWithValidOrigin) - cachedSectionInfos[indexPath.section] = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: newLargestItemWithValidOrigin) - } else { - cachedSectionInfos[indexPath.section] = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: nil) - } - } - - // Update the largest index of the section with valid origin - - if largestSectionWithValidOrigin != nil { - largestSectionWithValidOrigin = min(largestSectionWithValidOrigin!, indexPath.section) - } - - // Update the from index paths of moved items - - for (toIndexPath, fromIndexPath) in movedIndexPaths { - guard fromIndexPath.section == indexPath.section else { continue } - guard fromIndexPath.item >= indexPath.item else { continue } - let newFromIndexPath = IndexPath(item: fromIndexPath.item+1, section: fromIndexPath.section) - movedIndexPaths[toIndexPath] = newFromIndexPath - } - - } - - } - - - private func updateCacheForMovedItems() { - - // Step 1: Delete the moved items in descending order and keep a reference to the items to insert - - var itemsToInsert = [IndexPath: CGRect]() - - do { - - let movedIndexPaths = self.movedIndexPaths.sorted { (val1, val2) in val1.value > val2.value } - - for (toIndexPath, fromIndexPath) in movedIndexPaths { - - // Remove the deleted item from the cache - - let deletedItemInfos = cachedItemInfos[fromIndexPath.section].remove(at: fromIndexPath.item) - itemsToInsert[toIndexPath] = deletedItemInfos.frameInSection - - // Update the section infos - - do { - let sectionInfos = cachedSectionInfos[fromIndexPath.section] - let origin = sectionInfos.frame.origin - let topSpaceAboveDeletedItem = interitemSpacing - let size = CGSize(width: sectionInfos.frame.size.width, height: sectionInfos.frame.size.height - topSpaceAboveDeletedItem - deletedItemInfos.frameInSection.height) - let frame = CGRect(origin: origin, size: size) - if let largestItemWithValidOrigin = (fromIndexPath.item == 0) ? nil : fromIndexPath.item-1, - let previousLargestItemWithValidOrigin = sectionInfos.largestItemWithValidOrigin { - let newLargestItemWithValidOrigin = min(previousLargestItemWithValidOrigin, largestItemWithValidOrigin) - cachedSectionInfos[fromIndexPath.section] = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: newLargestItemWithValidOrigin) - } else { - cachedSectionInfos[fromIndexPath.section] = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: nil) - } - } - - // Update the largest index of the section with valid origin - - if largestSectionWithValidOrigin != nil { - largestSectionWithValidOrigin = min(largestSectionWithValidOrigin!, fromIndexPath.section) - } - - } - - } - - // Step 2: Insert the moved items in ascending order - - do { - - let itemsToInsert = itemsToInsert.sorted { (val1, val2) in val1.key < val2.key } - - for (toIndexPath, oldFrameInSection) in itemsToInsert { - - // Insert the item into the cache - - let height: CGFloat - do { - let itemInfos = ObvCollectionViewLayoutItemInfos(frameInSection: oldFrameInSection) - cachedItemInfos[toIndexPath.section].insert(itemInfos, at: toIndexPath.item) - - height = oldFrameInSection.size.height - } - - // Update the section infos - - do { - let sectionInfos = cachedSectionInfos[toIndexPath.section] - let origin = sectionInfos.frame.origin - let topSpaceAboveNewItem = interitemSpacing - let size = CGSize(width: sectionInfos.frame.size.width, height: sectionInfos.frame.size.height + topSpaceAboveNewItem + height) - let frame = CGRect(origin: origin, size: size) - if let largestItemWithValidOrigin = (toIndexPath.item == 0) ? nil : toIndexPath.item-1, - let previousLargestItemWithValidOrigin = sectionInfos.largestItemWithValidOrigin { - let newLargestItemWithValidOrigin = min(previousLargestItemWithValidOrigin, largestItemWithValidOrigin) - cachedSectionInfos[toIndexPath.section] = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: newLargestItemWithValidOrigin) - } else { - cachedSectionInfos[toIndexPath.section] = ObvCollectionViewLayoutSectionInfos(frame: frame, largestItemWithValidOrigin: nil) - } - } - - // Update the largest index of the section with valid origin - - if largestSectionWithValidOrigin != nil { - largestSectionWithValidOrigin = min(largestSectionWithValidOrigin!, toIndexPath.section) - } - - // Update the from index paths of moved items - - for (toIndexPath, fromIndexPath) in movedIndexPaths { - guard fromIndexPath.section == toIndexPath.section else { continue } - guard fromIndexPath.item >= toIndexPath.item else { continue } - let newFromIndexPath = IndexPath(item: fromIndexPath.item+1, section: fromIndexPath.section) - movedIndexPaths[toIndexPath] = newFromIndexPath - } - - } - - } - - - } - -} - -// MARK: - Utils: Searching the cachedAttributes array - -extension ObvCollectionViewLayout { - - /// The returned section always has a valid origin - private func binSearchSectionInfos(_ rect: CGRect, start: Int, end: Int) -> Int? { - guard start <= end else { - return nil - } - - let mid = (start + end) / 2 - adjustOriginOfLayoutSectionInfos(untilSection: mid) - let frame = cachedSectionInfos[mid].frame - - if frame.intersects(rect) { - return mid - } else { - if frame.maxY < rect.minY { - return binSearchSectionInfos(rect, start: (mid + 1), end: end) - } else { - return binSearchSectionInfos(rect, start: start, end: (mid - 1)) - } - } - - } - - - private func getElementPositionWithRespectToContentView(elementCategory: UICollectionView.ElementCategory, indexPath: IndexPath, collectionView: UICollectionView) -> ElementPositionWithRespectToContentView { - - let elementFrame: CGRect - - switch elementCategory { - - case .cell: - - if collectionView.indexPathsForVisibleItems.contains(indexPath) { - return .visible - } - let sectionInfos = cachedSectionInfos[indexPath.section] - let infos = cachedItemInfos[indexPath.section][indexPath.item] - elementFrame = infos.getFrame(using: sectionInfos) - - case .supplementaryView: - - if collectionView.indexPathsForVisibleSupplementaryElements(ofKind: UICollectionView.elementKindSectionHeader).contains(indexPath) { - return .visible - } - let sectionInfos = cachedSectionInfos[indexPath.section] - let infos = cachedSupplementaryViewInfos[indexPath.section] - elementFrame = infos.getFrame(using: sectionInfos) - - case .decorationView: - - fatalError() - - @unknown default: - fatalError() - } - - if elementFrame.midY < collectionView.contentOffset.y + collectionView.bounds.height/2 { - return .above - } else { - return .under - } - - } - - - enum ElementPositionWithRespectToContentView { - case above - case under - case visible - } -} - - -// MARK: - Utils: Adjusting the origin of elements layout - -extension ObvCollectionViewLayout { - - - /// This method adjusts the origin of the cached infos of all the section between the largest one - /// having a valid origin until the one passed as a parameter (included). - /// - /// - Parameter section: The section to adjust. - private func adjustOriginOfLayoutSectionInfos(untilSection section: Int) { - - guard largestSectionWithValidOrigin == nil || section > largestSectionWithValidOrigin! else { return } - - // Adjust the origin of all the sections between the first section having a valid origin and the section passed as a parameter - - var previousSectionFrame = (largestSectionWithValidOrigin == nil) ? CGRect.zero : cachedSectionInfos[largestSectionWithValidOrigin!].frame - - let firstSection = (largestSectionWithValidOrigin == nil) ? 0 : largestSectionWithValidOrigin!+1 - - for sec in firstSection.. sectionInfos.largestItemWithValidOrigin! else { return } - - let firstItemToAdjust: Int - var previousElementFrame: CGRect - if let item = sectionInfos.largestItemWithValidOrigin { - previousElementFrame = cachedItemInfos[indexPath.section][item].frameInSection - firstItemToAdjust = item+1 - } else { - previousElementFrame = cachedSupplementaryViewInfos[indexPath.section].frameInSection - firstItemToAdjust = 0 - } - - for item in firstItemToAdjust...indexPath.item { - - let infos = cachedItemInfos[indexPath.section][item] - let topSpace = interitemSpacing - let origin = CGPoint(x: 0, y: previousElementFrame.maxY + topSpace) - let size = infos.frameInSection.size - let frame = CGRect(origin: origin, size: size) - let updatedInfos = ObvCollectionViewLayoutItemInfos(frameInSection: frame) - cachedItemInfos[indexPath.section][item] = updatedInfos - - previousElementFrame = frame - - } - - cachedSectionInfos[indexPath.section] = ObvCollectionViewLayoutSectionInfos(frame: sectionInfos.frame, largestItemWithValidOrigin: indexPath.item) - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ObvCollectionViewLayoutDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ObvCollectionViewLayoutDelegate.swift deleted file mode 100644 index cb0da508..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/Layout/ObvCollectionViewLayoutDelegate.swift +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -protocol ObvCollectionViewLayoutDelegate: AnyObject { - func collectionViewDidAppear() -> Bool - func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionViewController.swift deleted file mode 100644 index 6e4372f0..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SingleDiscussionViewController.swift +++ /dev/null @@ -1,2034 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import AVFoundation -import CoreData -import MobileCoreServices -import ObvUI -import OlvidUtils -import ObvTypes -import os.log -import QuickLook -import UIKit -import ObvUICoreData -import UI_SystemIcon - - -final class SingleDiscussionViewController: UICollectionViewController, SomeSingleDiscussionViewController, ObvErrorMaker { - - let currentOwnedCryptoId: ObvCryptoId - var discussion: PersistedDiscussion! - /// If `true`, all message statuses and attachment progresses are hidden - var hideProgresses = false - var composeMessageViewDataSource: ComposeMessageDataSource! - var composeMessageViewDocumentPickerDelegate: ComposeMessageViewDocumentPickerDelegate! - weak var weakComposeMessageViewSendMessageDelegate: ComposeMessageViewSendMessageDelegate? - var strongComposeMessageViewSendMessageDelegate: ComposeMessageViewSendMessageDelegate? - var composeMessageViewSendMessageDelegate: ComposeMessageViewSendMessageDelegate! { - return strongComposeMessageViewSendMessageDelegate ?? weakComposeMessageViewSendMessageDelegate - } - weak var uiApplication: UIApplication? - weak var delegate: SingleDiscussionViewControllerDelegate? - - static let errorDomain = "SingleDiscussionViewController" - - var discussionObjectID: TypeSafeManagedObjectID { discussion.typedObjectID } - var discussionPermanentID: ObvManagedObjectPermanentID { discussion.discussionPermanentID } - - private var fetchedResultsController: NSFetchedResultsController! - - private var composeMessageView: ComposeMessageView! - - private var viewDidAppearWasCalled = false - private var scrollToSystemMessageIndicatingNewMesssagesWasCalled = false - private var userIsPullingTheSingleDiscussionViewControllerBack = false - - // The following variables allow to get around ponctual issues related to keyboard appearance - private var counterOfCallsToAdjustCollectionViewContentOffsetToIgnore = 0 - private var counterOfCallsToAdjustCollectionViewContentInsetsToIgnore = 0 - - private let animatorForHidingHeaders = UIViewPropertyAnimator(duration: 0.3, curve: .linear) - - private var filesViewer: FilesViewer? - - private var lastCollectionViewItemShouldBeVisible = true - private let typicalDurationKbdAnimation: TimeInterval = 0.25 - private let animatorForScrollingCollectionView = UIViewPropertyAnimator(duration: typicalDurationKbdAnimation*2.3, dampingRatio: 0.65) - - private var hideHeaderTimer: Timer? = nil - - private let navigationTitleLabel = UILabel() - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SingleDiscussionViewController.self)) - - private var visibilityTrackerForSensitiveMessages: VisibilityTrackerForSensitiveMessages? - - private var accessoryViewIsShown = false - private var accessoryViewWasRequested = false - - private var showingAccessoryViewIsAppropriate: Bool { - assert(Thread.isMainThread) - // We only show the accessory view if it has been requested - guard accessoryViewWasRequested else { return false } - // We do not show the accessory view for locked discussions - guard discussion.status == .active else { return false } - // We do no not show the accessory view if we have no one to write to in a group discussion - switch try? discussion.kind { - case .oneToOne: - return true - case .groupV1(withContactGroup: let contactGroup): - return contactGroup?.hasAtLeastOneRemoteContactDevice() ?? false - case .groupV2(withGroup: let group): - return group != nil - case .none: - assertionFailure() - return false - } - } - - private var currentKbdHeight: CGFloat = 0.0 - private var observationTokens = [NSObjectProtocol]() - private var objectIDsOfNewMessages = Set() // Allows to properly update the "new message" system message - - private var sectionChanges = [(type: NSFetchedResultsChangeType, sectionIndex: Int)]() - private var itemChanges = [(type: NSFetchedResultsChangeType, indexPath: IndexPath?, newIndexPath: IndexPath?)]() - - private static let typicalDurationKbdAnimation: TimeInterval = 0.25 - private let animatorForCollectionViewContent = UIViewPropertyAnimator(duration: typicalDurationKbdAnimation*2.3, dampingRatio: 0.65) - - private var urlsOfTempFilesToDeleteOnUIDocumentPickerViewControllerDismissal = [URL]() - - private let queueForReadReceiptNotifications = DispatchQueue(label: "Queue for read receipt notifications") - - private var selectedGroupMembers = Set() - - private var cellsShowingCallLogItemRejectedIncomingCallBecauseOfDeniedRecordPermissionNeedToBeReconfigured = false - - private func markAsNotNewTheReceivedMessage(_ messageReceived: PersistedMessageReceived) { - guard messageReceived.status == .new else { return } - ObvMessengerInternalNotification.messagesAreNotNewAnymore(persistedMessageObjectIDs: [messageReceived.typedObjectID.downcast]) - .postOnDispatchQueue() - } - - private func markAsNotNewTheSystemMessage(_ messageSystem: PersistedMessageSystem) { - guard messageSystem.status != .read else { return } - ObvMessengerInternalNotification.messagesAreNotNewAnymore(persistedMessageObjectIDs: [messageSystem.typedObjectID.downcast]) - .postOnDispatchQueue() - } - - private let dateFormaterForHeaders: DateFormatter = { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = false - df.timeStyle = .none - df.setLocalizedDateFormatFromTemplate("EEE d MMMM yyyy") - return df - }() - - private let dateFormaterForHeadersCurrentYear: DateFormatter = { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = false - df.timeStyle = .none - df.setLocalizedDateFormatFromTemplate("EEE d MMMM") - return df - }() - - private let dateFormaterForHeadersCurrentMonth: DateFormatter = { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = false - df.timeStyle = .none - df.setLocalizedDateFormatFromTemplate("EEEEd") - return df - }() - - private let dateFormaterForHeadersTodayOrYesterday: DateFormatter = { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = true - df.timeStyle = .none - df.dateStyle = .short - return df - }() - - private let dateFormaterForHeadersWeekday: DateFormatter = { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = true - df.timeStyle = .none - df.timeStyle = .none - df.setLocalizedDateFormatFromTemplate("EEEE") - return df - }() - - private let dateFormaterForHeadersDay: DateFormatter = { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = true - df.timeStyle = .none - df.timeStyle = .none - df.setLocalizedDateFormatFromTemplate("d") - return df - }() - - let dateFormaterForMessages: DateFormatter = { - let df = DateFormatter() - df.doesRelativeDateFormatting = true - df.dateStyle = .none - df.timeStyle = .short - df.locale = Locale.current - return df - }() - - - override func didReceiveMemoryWarning() { - os_log("didReceiveMemoryWarning (SingleDiscussionViewController)", log: log, type: .fault) - } - - - override var inputAccessoryView: UIView? { - assert(Thread.current == Thread.main) - guard showingAccessoryViewIsAppropriate else { - accessoryViewIsShown = false - return nil - } - accessoryViewIsShown = true - return self.composeMessageView - } - - - override var canBecomeFirstResponder: Bool { - return true - } - - init(ownedCryptoId: ObvCryptoId, collectionViewLayout: UICollectionViewLayout) { - self.currentOwnedCryptoId = ownedCryptoId - super.init(collectionViewLayout: collectionViewLayout) - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - deinit { - observationTokens.forEach { NotificationCenter.default.removeObserver($0) } - } - - /// This should be properly dealocated each time the view will disappear. - private var timerForRefreshingCellCountdowns: Timer? - - func addAttachmentFromAirDropFile(at fileURL: URL) { - guard let composeMessageViewDocumentPickerAdapterWithDraft = self.composeMessageViewDocumentPickerDelegate as? ComposeMessageViewDocumentPickerAdapterWithDraft else { assertionFailure(); return } - composeMessageViewDocumentPickerAdapterWithDraft.addAttachmentFromAirDropFile(at: fileURL) - } -} - - -// MARK: - View controller lifecycle - -extension SingleDiscussionViewController { - - override func viewDidLoad() { - super.viewDidLoad() - - self.visibilityTrackerForSensitiveMessages = VisibilityTrackerForSensitiveMessages(discussionPermanentID: discussionPermanentID) - - self.fetchedResultsController = PersistedMessage.getFetchedResultsControllerForAllMessagesWithinDiscussion(discussionObjectID: discussion.typedObjectID, within: ObvStack.shared.viewContext) - - self.composeMessageView = Bundle.main.loadNibNamed(ComposeMessageView.nibName, owner: nil, options: nil)!.first as? ComposeMessageView - self.composeMessageView.dataSource = self.composeMessageViewDataSource - self.composeMessageView.documentPickerDelegate = self.composeMessageViewDocumentPickerDelegate - self.composeMessageView.sendMessageDelegate = self.composeMessageViewSendMessageDelegate - - configureNavigationBarTitle() - - self.fetchedResultsController.delegate = self - (self.composeMessageViewDocumentPickerDelegate as? ComposeMessageViewDocumentPickerAdapterWithDraft)?.delegate = self - - let layout = ObvCollectionViewLayout() - - collectionView = ObvCollectionView(frame: self.view.bounds, collectionViewLayout: layout) - collectionView.backgroundColor = AppTheme.shared.colorScheme.discussionScreenBackground - collectionView.alwaysBounceVertical = true - collectionView.keyboardDismissMode = .interactive - collectionView.indicatorStyle = .white - collectionView.contentInsetAdjustmentBehavior = .never - collectionView.scrollsToTop = false - collectionView.register(MessageSentCollectionViewCell.self, forCellWithReuseIdentifier: MessageSentCollectionViewCell.identifier) - collectionView.register(MessageReceivedCollectionViewCell.self, forCellWithReuseIdentifier: MessageReceivedCollectionViewCell.identifier) - collectionView.register(MessageSystemCollectionViewCell.self, forCellWithReuseIdentifier: MessageSystemCollectionViewCell.identifier) - collectionView.register(DateCollectionReusableView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: DateCollectionReusableView.identifier) - - layout.delegate = self - collectionView.dataSource = self - - do { - try self.fetchedResultsController.performFetch() - } catch let error { - fatalError("Could not perform fetch: \(error.localizedDescription)") - } - - registerKeyboardNotifications() - configureGestureRecognizers() - observeDeletedFyleMessageJoinNotifications() - observeCertainMessageDeletionToUpdateNumberOfNewMessagesSystemMessage() - observePersistedDiscussionHasNewTitleNotifications() - observePersistedContactHasNewCustomDisplayNameNotifications() - observePersistedContactGroupHasUpdatedContactIdentitiesNotifications() - observeCallLogItemWasUpdatedNotifications() - observeDiscussionLocalConfigurationHasBeenUpdatedNotifications() - showAccessoryView() - } - - - private func configureNavigationBarTitle() { - navigationTitleLabel.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.headline) - navigationTitleLabel.textAlignment = .center - navigationTitleLabel.text = discussion.title - navigationTitleLabel.isUserInteractionEnabled = true - let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(titleTapped)) - navigationTitleLabel.addGestureRecognizer(tapGestureRecognizer) - navigationItem.titleView = navigationTitleLabel - navigationItem.largeTitleDisplayMode = .never - - if discussion.status == .active { - var items: [UIBarButtonItem] = [] - let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 18.0, weight: .bold) - let ellipsisImage = UIImage(systemIcon: .ellipsisCircle, withConfiguration: symbolConfiguration) - items += [UIBarButtonItem(image: ellipsisImage, style: .plain, target: self, action: #selector(settingsButtonTapped))] - - if discussion.isCallAvailable { - let phoneImage = UIImage(systemIcon: .phoneFill, withConfiguration: symbolConfiguration) - items += [UIBarButtonItem(image: phoneImage, style: .plain, target: self, action: #selector(callButtonTapped))] - } - if #available(iOS 14.0, *), let muteNotificationEndDate = discussion.localConfiguration.currentMuteNotificationsEndDate { - let unmuteDateFormatted = PersistedDiscussionLocalConfiguration.formatDateForMutedNotification(muteNotificationEndDate) - let muteIcon = UIImage(systemIcon: ObvMessengerConstants.muteIcon, withConfiguration: symbolConfiguration) - let unmuteButton = UIBarButtonItem( - image: muteIcon, - style: .plain, - title: Strings.mutedNotificationsConfirmation(unmuteDateFormatted), - actions: [UIAction(title: - NSLocalizedString("UNMUTE_NOTIFICATIONS", comment: "") - ) { _ in - ObvMessengerInternalNotification.userWantsToUpdateDiscussionLocalConfiguration(value: .muteNotificationsEndDate(nil), localConfigurationObjectID: self.discussion.localConfiguration.typedObjectID).postOnDispatchQueue() - }]) - items += [unmuteButton] - } - navigationItem.rightBarButtonItems = items - } - } - - - @objc func settingsButtonTapped() { - composeMessageView.textView.resignFirstResponder() - guard let vc = DiscussionSettingsHostingViewController(discussionSharedConfiguration: self.discussion.sharedConfiguration, discussionLocalConfiguration: self.discussion.localConfiguration) else { - assertionFailure() - return - } - present(vc, animated: true) - } - - @objc func callButtonTapped() { - switch try? discussion.kind { - case .oneToOne(withContactIdentity: let contactIdentity): - guard let contactID = contactIdentity?.typedObjectID else { return } - ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: [contactID], groupId: nil) - .postOnDispatchQueue() - case .groupV1(withContactGroup: let contactGroup): - if let contactGroup = contactGroup { - let objectID = contactGroup.typedObjectID - let contactIdentities = contactGroup.contactIdentities - ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(contactIDs: contactIdentities.map({ $0.typedObjectID }), groupId: .groupV1(objectID)) - .postOnDispatchQueue() - } - case .groupV2(withGroup: let group): - guard let group = group else { return } - let objectID = group.typedObjectID - let contactIDs = group.contactsAmongNonPendingOtherMembers.filter({ $0.isActive }).map({ $0.typedObjectID }) - ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(contactIDs: contactIDs, groupId: .groupV2(objectID)) - .postOnDispatchQueue() - case .none: - assertionFailure() - } - } - - @objc func titleTapped() { - self.delegate?.userTappedTitleOfDiscussion(self.discussion) - } - - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - - insertSystemMessageIndicatingNewMesssages() - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(300)) { [weak self] in - self?.scrollToSystemMessageIndicatingNewMesssages() - } - - // If there is a system message indicating the number of new messages, we need to keep track of those messages in order to make it possible to update this system message. - if let numberOfNewMessagesSystemMessage = try? PersistedMessageSystem.getNumberOfNewMessagesSystemMessage(in: discussion) { - do { - objectIDsOfNewMessages.removeAll() - if let newReceivedMessages = try? PersistedMessageReceived.getAllNew(in: discussion) { - objectIDsOfNewMessages.formUnion(Set(newReceivedMessages.map({ $0.objectID }))) - } - if let newSystemMessages = try? PersistedMessageSystem.getAllNewRelevantSystemMessages(in: discussion) { - objectIDsOfNewMessages.formUnion(Set(newSystemMessages.map({ $0.objectID }))) - } - } - assert(numberOfNewMessagesSystemMessage.numberOfUnreadReceivedMessages == objectIDsOfNewMessages.count) - } - - if timerForRefreshingCellCountdowns == nil { - timerForRefreshingCellCountdowns = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(refreshCellCountdowns), userInfo: nil, repeats: true) - } - - } - - - private func insertSystemMessageIndicatingNewMesssages() { - assert(Thread.isMainThread) - assert(discussion.managedObjectContext == ObvStack.shared.viewContext) - os_log("Inserting system message indicating new messages", log: log, type: .info) - do { - try PersistedMessageSystem.removeAnyNewMessagesSystemMessages(withinDiscussion: discussion) - _ = try PersistedMessageSystem.insertNumberOfNewMessagesSystemMessage(within: discussion) - } catch let error { - os_log("Could not insert number of new message within the discussion: %{public}@", log: log, type: .error, error.localizedDescription) - } - } - - - override func viewWillLayoutSubviews() { - super.viewWillLayoutSubviews() - } - - override func viewSafeAreaInsetsDidChange() { - super.viewSafeAreaInsetsDidChange() - - /* Note that this called is required because - * func viewSafeAreaInsetsDidChange() - * is called before - * func viewDidAppear(_ animated: Bool) - * which is not the case of - * func viewDidLayoutSubviews(). - */ - resetCollectionViewLayoutIfRequired() - - // If the accessory is not shown (e.g., for locked discussions), we adjust the insets of the collection view by hand - if composeMessageView.window == nil { - adjustCollectionViewContentInset(nextKbdAndComposeViewHeight: 0) - } - - } - - - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - - resetCollectionViewLayoutIfRequired() - if !viewDidAppearWasCalled { - hideTopHeaderIfRequired(animate: false) - } - - self.composeMessageView.setWidth(to: self.view.bounds.width) - - // If the discussion is locked, or if the group is empty, the keyboard won't show. - // In that case, we manually adjust the inset of the collection view. - if discussion.status != .active || discussionHasNoRemoteContactDevice { - adjustCollectionViewContentInset(nextKbdAndComposeViewHeight: 0) - DispatchQueue.main.async { [weak self] in - self?.performInitialScrollToBottomIfRequired() - } - } - - - - } - - - private func resetCollectionViewLayoutIfRequired() { - // In case the width of the safe area of the collection view is different from the one that the layout used to size all the cells, we invalidate the layout to force re-layout. - let layout = collectionView.collectionViewLayout as! ObvCollectionViewLayout - if layout.knownCollectionViewSafeAreaWidth != collectionView.bounds.inset(by: collectionView.safeAreaInsets).width { - collectionView.collectionViewLayout.invalidateLayout() - (collectionView.collectionViewLayout as? ObvCollectionViewLayout)?.reset() - collectionView.layoutIfNeeded() - } - } - - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - performInitialScrollToBottomIfRequired() // To be called before setting viewDidAppearWasCalled to true. This call is required on iPad. - viewDidAppearWasCalled = true - - scrollToSystemMessageIndicatingNewMesssages() - - insertSystemMessageIfCurrentDiscussionIsEmpty() - - if scrollToSystemMessageIndicatingNewMesssagesWasCalled { - // This call is necessary when the user navigated to another discussion from this one, i.e., this discussion is part of the navigation but is not the last one, i.e., not visible on screen. - // Then, the user comes back to this discussion. We want to mark the visible messages as "read" at that moment. - markAllVisibleMessageReceivedAsNotNew() - markAllVisibleMessageSystemAsNotNew() - } - - self.becomeFirstResponder() - - showAccessoryView() - } - - - private func performInitialScrollToBottomIfRequired() { - guard !viewDidAppearWasCalled else { return } - let x = collectionView.contentOffset.x - // This does not always work... there is still a glitch on iPhone 11 Pro Max in landscape. - let y: CGFloat - if composeMessageView.window == nil { - // The keyboard is not on screen so we do not take its height into account - y = collectionView.contentSize.height - collectionView.bounds.height + collectionView.safeAreaInsets.bottom - } else { - // The keyboard is on screen - y = collectionView.contentSize.height - collectionView.bounds.height + composeMessageView.frame.height - } - guard y + collectionView.safeAreaInsets.top > 0 else { return } - let newOffset = CGPoint(x: x, y: y) - guard collectionView.contentOffset.distance(to: newOffset) > 0.01 else { return } // No need to scroll in that case - UIView.performWithoutAnimation { - collectionView.setContentOffset(newOffset, animated: false) - } - } - - - private func insertSystemMessageIfCurrentDiscussionIsEmpty() { - let discussionObjectID = discussion.objectID - let log = self.log - ObvStack.shared.performBackgroundTask { (context) in - do { - try PersistedDiscussion.insertSystemMessagesIfDiscussionIsEmpty(discussionObjectID: discussionObjectID, markAsRead: true, within: context) - try context.save(logOnFailure: log) - } catch { - os_log("Could not insert DiscussionIsEndToEndEncryptedSystemMessage within discussion", log: log, type: .error) - } - } - } - - - private func scrollToSystemMessageIndicatingNewMesssages() { - assert(Thread.isMainThread) - guard !scrollToSystemMessageIndicatingNewMesssagesWasCalled else { return } - scrollToSystemMessageIndicatingNewMesssagesWasCalled = true - if let messageObjectID = try? PersistedMessageSystem.getNewMessageSystemMessageObjectID(withinDiscussion: self.discussion), - let message = try? fetchedResultsController.managedObjectContext.existingObject(with: messageObjectID) as? PersistedMessageSystem, - let indexPath = fetchedResultsController.indexPath(forObject: message), let collectionView = self.collectionView as? ObvCollectionView { - // Only scroll if the cell is not already visible on screen (this techniques works better than calling indexPathsForVisibleItems) - guard let cell = collectionView.cellForItem(at: indexPath) else { - // The cell might be to high... - collectionView.adjustedScrollToItem(at: indexPath, at: .top, animated: true) { [weak self] in - self?.markAllVisibleMessageReceivedAsNotNew() - self?.markAllVisibleMessageSystemAsNotNew() - } - return - } - let cellRect = cell.contentView.convert(cell.contentView.bounds, to: collectionView) - guard !collectionView.bounds.inset(by: collectionView.safeAreaInsets).contains(cellRect) else { - return - } - // The system cell is not visible --> scroll - collectionView.adjustedScrollToItem(at: indexPath, at: .top, animated: true) { [weak self] in - self?.markAllVisibleMessageReceivedAsNotNew() - self?.markAllVisibleMessageSystemAsNotNew() - } - } - } - - func scrollTo(message: PersistedMessage) { - if let message = try? fetchedResultsController.managedObjectContext.existingObject(with: message.objectID) as? PersistedMessage, - let indexPath = fetchedResultsController.indexPath(forObject: message), - let collectionView = self.collectionView as? ObvCollectionView { - guard let cell = collectionView.cellForItem(at: indexPath) else { - // The cell might be to high... - collectionView.adjustedScrollToItem(at: indexPath, at: .top, animated: true) - return - } - let cellRect = cell.contentView.convert(cell.contentView.bounds, to: collectionView) - guard !collectionView.bounds.inset(by: collectionView.safeAreaInsets).contains(cellRect) else { - return - } - collectionView.adjustedScrollToItem(at: indexPath, at: .top, animated: true) - } - } - - private func markAllVisibleMessageReceivedAsNotNew() { - do { - let visibleMessageReceivedCells = collectionView.visibleCells.compactMap { $0 as? MessageReceivedCollectionViewCell} - for cell in visibleMessageReceivedCells { - guard let indexPath = collectionView.indexPath(for: cell) else { continue } - guard let messageReceived = fetchedResultsController.object(at: indexPath) as? PersistedMessageReceived else { continue } - guard messageReceived.status == .new else { continue } - markAsNotNewTheReceivedMessage(messageReceived) - } - } - } - - - private func markAllVisibleMessageSystemAsNotNew() { - let visibleMessageReceivedCells = collectionView.visibleCells.compactMap { $0 as? MessageReceivedCollectionViewCell} - for cell in visibleMessageReceivedCells { - guard let indexPath = collectionView.indexPath(for: cell) else { continue } - guard let messageSystem = fetchedResultsController.object(at: indexPath) as? PersistedMessageSystem else { continue } - guard messageSystem.status == .new else { continue } - markAsNotNewTheSystemMessage(messageSystem) - } - } - - private func observePersistedContactGroupHasUpdatedContactIdentitiesNotifications() { - let token = ObvMessengerCoreDataNotification.observePersistedContactGroupHasUpdatedContactIdentities(queue: OperationQueue.main) { [weak self] (_, _, _) in - self?.reloadInputViews() - } - observationTokens.append(token) - } - - private func observeCallLogItemWasUpdatedNotifications() { - let token = VoIPNotification.observeCallHasBeenUpdated(queue: OperationQueue.main) { [weak self] _, _ in - self?.collectionView.reloadData() - } - observationTokens.append(token) - } - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated) - - timerForRefreshingCellCountdowns?.invalidate() - timerForRefreshingCellCountdowns = nil - - if self.filesViewer == nil { - if let discussion = self.discussion { - try? PersistedMessageSystem.removeAnyNewMessagesSystemMessages(withinDiscussion: discussion) - } - } - } - - - private func dismissAccessoryView() { - assert(Thread.current == Thread.main) - accessoryViewWasRequested = false - composeMessageView.textView.resignFirstResponder() - self.becomeFirstResponder() - reloadInputViews() - } - - - private func showAccessoryView() { - assert(Thread.current == Thread.main) - guard !accessoryViewIsShown else { return } - accessoryViewWasRequested = true - guard showingAccessoryViewIsAppropriate else { return } - becomeFirstResponder() - reloadInputViews() - } - - @objc(refreshCellCountdowns) - private func refreshCellCountdowns() { - collectionView?.visibleCells.forEach { - ($0 as? MessageCollectionViewCell)?.refreshCellCountdown() - } - } - -} - - -// MARK: - UICollectionViewDataSource - -extension SingleDiscussionViewController { - - override func numberOfSections(in collectionView: UICollectionView) -> Int { - return fetchedResultsController.sections?.count ?? 0 - } - - - override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - guard let sections = fetchedResultsController.sections else { - fatalError("No sections in fetchedResultsController") - } - let sectionInfo = sections[section] - return sectionInfo.numberOfObjects - } - - - override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - - let message = fetchedResultsController.object(at: indexPath) - - if let message = message as? PersistedMessageReceived { - - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: MessageReceivedCollectionViewCell.identifier, for: indexPath) as! MessageReceivedCollectionViewCell - cell.prepare(with: message, withDateFormatter: dateFormaterForMessages) - cell.delegate = self - return cell - - } else if let message = message as? PersistedMessageSent { - - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: MessageSentCollectionViewCell.identifier, for: indexPath) as! MessageSentCollectionViewCell - cell.prepare(with: message, withDateFormatter: dateFormaterForMessages, hideProgresses: self.hideProgresses) - cell.delegate = self - return cell - - } else if let message = message as? PersistedMessageSystem { - - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: MessageSystemCollectionViewCell.identifier, for: indexPath) as! MessageSystemCollectionViewCell - cell.prepare(with: message) - return cell - - } else { - - return UICollectionViewCell() - - } - - } - - - override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { - guard kind == UICollectionView.elementKindSectionHeader else { fatalError() } - let header = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: DateCollectionReusableView.identifier, for: indexPath) as! DateCollectionReusableView - let sectionTitle = getSectionTitle(at: indexPath) - header.label.text = sectionTitle - return header - } - - - private func getSectionTitle(at indexPath: IndexPath) -> String { - guard let sections = fetchedResultsController.sections else { - fatalError("No sections in fetchedResultsController") - } - let sectionInfo = sections[indexPath.section] - let sectionIdentifier = sectionInfo.name - guard let components = PersistedMessage.getDateComponents(fromSectionIdentifier: sectionIdentifier), let date = components.date else { - assertionFailure() - return "" - } - let calendar = Calendar.current - let sectionTitle: String - if calendar.isDateInToday(date) || calendar.isDateInYesterday(date) { - sectionTitle = dateFormaterForHeadersTodayOrYesterday.string(from: date).capitalized - } else if let year = components.year, year == calendar.component(.year, from: Date()) { - if let month = components.month, month == calendar.component(.month, from: Date()) { - sectionTitle = [dateFormaterForHeadersWeekday.string(from: date).capitalized, dateFormaterForHeadersDay.string(from: date)].joined(separator: " ") - } else { - sectionTitle = dateFormaterForHeadersCurrentYear.string(from: date).capitalized - } - } else { - sectionTitle = dateFormaterForHeaders.string(from: date).capitalized - } - return sectionTitle - } -} - - -// MARK: - ObvCollectionViewLayoutDelegate - -extension SingleDiscussionViewController: ObvCollectionViewLayoutDelegate { - - func collectionViewDidAppear() -> Bool { - return viewDidAppearWasCalled - } - - - func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - - switch layoutAttributes.representedElementCategory { - case .cell: - let message = fetchedResultsController.object(at: layoutAttributes.indexPath) - if let receivedMessage = message as? PersistedMessageReceived { - let cell = MessageReceivedCollectionViewCell() - cell.prepare(with: receivedMessage, withDateFormatter: dateFormaterForMessages) - return cell.preferredLayoutAttributesFitting(layoutAttributes) - } else if let sentMessage = message as? PersistedMessageSent { - let cell = MessageSentCollectionViewCell() - cell.prepare(with: sentMessage, withDateFormatter: dateFormaterForMessages, hideProgresses: self.hideProgresses) - return cell.preferredLayoutAttributesFitting(layoutAttributes) - } else if let systemMessage = message as? PersistedMessageSystem { - let cell = MessageSystemCollectionViewCell() - cell.prepare(with: systemMessage) - return cell.preferredLayoutAttributesFitting(layoutAttributes) - } else { - assertionFailure() - return layoutAttributes - } - case .supplementaryView: - guard layoutAttributes.representedElementKind == UICollectionView.elementKindSectionHeader else { return layoutAttributes } - let header = DateCollectionReusableView() - let sectionTitle = getSectionTitle(at: layoutAttributes.indexPath) - header.label.text = sectionTitle - return header.preferredLayoutAttributesFitting(layoutAttributes) - case .decorationView: - assertionFailure() - return layoutAttributes - @unknown default: - assertionFailure() - return layoutAttributes - } - - } - -} - - -// MARK: - UIScrollViewDelegate - -extension SingleDiscussionViewController { - - override func scrollViewDidScroll(_ scrollView: UIScrollView) { - - guard let collectionView = self.collectionView as? ObvCollectionView else { - assertionFailure() - return - } - - let isFingerScrolling = scrollView.isTracking || scrollView.isDragging || scrollView.isDecelerating - - if isFingerScrolling { - let visibleHeaders = collectionView.visibleSupplementaryViews(ofKind: UICollectionView.elementKindSectionHeader) - for header in visibleHeaders { - (header as? DateCollectionReusableView)?.alphaIsLocked = false - } - - lastCollectionViewItemShouldBeVisible = collectionView.lastIndexPathIsVisible - } - - if scrollView.isDragging { - showTopHeader() - } - - hideTopHeaderInTheFuture() - - } - - private func showTopHeader() { - // Show all headers when scrolling - let headersToShow = collectionView.visibleSupplementaryViews(ofKind: UICollectionView.elementKindSectionHeader).filter { $0.isHidden == true } - for header in headersToShow { - header.alpha = 0.0 - } - animatorForHidingHeaders.addAnimations { - for header in headersToShow { - header.isHidden = false - header.alpha = 1.0 - } - } - animatorForHidingHeaders.startAnimation() - - } - - private func hideTopHeaderInTheFuture() { - hideHeaderTimer?.invalidate() - hideHeaderTimer = Timer.scheduledTimer(withTimeInterval: 0.3, repeats: false, block: { [weak self] (timer) in - guard timer.isValid else { return } - self?.hideTopHeaderIfRequired(animate: true) - }) - } - - - private func hideTopHeaderIfRequired(animate: Bool) { - guard collectionView.bounds.inset(by: collectionView.adjustedContentInset).height < collectionView.contentSize.height else { return } - guard let layout = collectionView.collectionViewLayout as? ObvCollectionViewLayout else { return } - guard let currentStickyHeader = layout.indexPathOfPinnedHeader else { return } - guard let header = collectionView.supplementaryView(forElementKind: UICollectionView.elementKindSectionHeader, at: currentStickyHeader) else { return } - guard !header.isHidden else { return } - if let firstCell = collectionView.cellForItem(at: IndexPath(item: 0, section: currentStickyHeader.section)) { - guard firstCell.frame.intersects(header.frame) || firstCell.frame.maxY <= header.frame.minY else { return } - } - - if animate { - animatorForHidingHeaders.addAnimations { - header.alpha = 0.0 - } - animatorForHidingHeaders.addCompletion { (position) in - switch position { - case .end: - header.isHidden = header.alpha.isZero - default: - header.isHidden = false - } - } - animatorForHidingHeaders.startAnimation() - } else { - header.alpha = 0.0 - header.isHidden = true - } - - } - -} - - -// MARK: - UICollectionViewDelegate - -extension SingleDiscussionViewController { - - override func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { - - // Check that the discussion is on screen, otherwise we do not mark the messages as "not new" - guard isViewLoaded && view.window != nil else { return } - - // If the scene is not foreground active, we do not mark visible messages as not new. - // When going back to the `active` state, a call to `markAsNotNewTheReceivedMessageInCell()` will be made for all visible cells. - // This will allow to mark visible messages as not new. - guard windowSceneActivationState == .foregroundActive else { return } - - markAsNotNewTheReceivedMessageInCell(cell) - - visibilityTrackerForSensitiveMessages?.refreshObjectIDsOfVisibleMessagesWithLimitedVisibility(in: collectionView) - - } - - - override func collectionView(_ collectionView: UICollectionView, didEndDisplaying cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { - visibilityTrackerForSensitiveMessages?.refreshObjectIDsOfVisibleMessagesWithLimitedVisibility(in: collectionView) - } - - /// We observe app states changes to mark as "not new" all the messages that are visible when the app enters the active state. - private func observeSceneStateChanges() { - let sceneDidActivateNotification = UIScene.didActivateNotification - observationTokens.append(contentsOf: [ - NotificationCenter.default.addObserver(forName: sceneDidActivateNotification, object: nil, queue: .main) { [weak self] _ in - // When the scene activates, we want to mark as not new the messages that were received while in background and that are now visible on screen. - guard let _self = self else { return } - _self.insertSystemMessageIndicatingNewMesssages() - _self.scrollToSystemMessageIndicatingNewMesssages() - for cell in _self.collectionView.visibleCells { - _self.markAsNotNewTheReceivedMessageInCell(cell) - } - if _self.cellsShowingCallLogItemRejectedIncomingCallBecauseOfDeniedRecordPermissionNeedToBeReconfigured { - _self.fetchedResultsController.managedObjectContext.refreshAllObjects() - let visibleIps = _self.collectionView.indexPathsForVisibleItems.filter { _self.collectionView.cellForItem(at: $0) is MessageSystemCollectionViewCell } - _self.collectionView.reloadItems(at: visibleIps) - self?.cellsShowingCallLogItemRejectedIncomingCallBecauseOfDeniedRecordPermissionNeedToBeReconfigured = false - } - }, - ]) - - } - - - @MainActor - private func markAsNotNewTheReceivedMessageInCell(_ cell: UICollectionViewCell) { - if let msgReceivedCell = cell as? MessageReceivedCollectionViewCell, - let messageReceived = msgReceivedCell.message as? PersistedMessageReceived { - guard messageReceived.status == .new else { return } - markAsNotNewTheReceivedMessage(messageReceived) - } - if let msgSystemCell = cell as? MessageSystemCollectionViewCell, - let messageSystem = msgSystemCell.messageSystem { - guard messageSystem.status == .new else { return } - markAsNotNewTheSystemMessage(messageSystem) - } - } - - - override func collectionView(_ collectionView: UICollectionView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { - // This describes what should be done when the user taps *in* the cell. For now, we simply dismiss the preview. - animator.preferredCommitStyle = .dismiss - } - - - override func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { - - guard let cell = collectionView.cellForItem(at: indexPath) as? CellWithMessage else { return nil } - - if currentKbdHeight > composeMessageView.frame.height { - // When the keyboard is up, we use the usual technique in order to avoid animation glitches. - counterOfCallsToAdjustCollectionViewContentInsetsToIgnore = 3 - counterOfCallsToAdjustCollectionViewContentOffsetToIgnore = 3 - } - - let actionProvider = makeActionProvider(for: cell) - - let menuConfiguration = UIContextMenuConfiguration(indexPath: indexPath, - previewProvider: nil, - actionProvider: actionProvider) - - return menuConfiguration - } - - - - override func collectionView(_ collectionView: UICollectionView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - return getUITargetedPreviewInCollectionView(collectionView, previewForContextMenuWithConfiguration: configuration) - } - - - - override func collectionView(_ collectionView: UICollectionView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - return getUITargetedPreviewInCollectionView(collectionView, previewForContextMenuWithConfiguration: configuration) - } - - - - private func getUITargetedPreviewInCollectionView(_ collectionView: UICollectionView, previewForContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - guard let indexPath = configuration.indexPath else { return nil } - guard let cell = collectionView.cellForItem(at: indexPath) as? CellWithMessage else { return nil } - var targetedPreview = UITargetedPreview(view: cell.viewForTargetedPreview) - // A bug was introduced in iOS 13.2. It seems that the framework is not able to behave properly if the UIPreviewTarget of the `targetedPreview` is different from the cell itself. By default, using the above constructor, the target is set to be the main stack view of the cell. In the following block, we re-target the `targetedPreview` so as to make the cell the UIPreviewTarget. This requires to compute the center of the cell.roundedRectView in the coordinate system of the cell. - do { - let centerOfRoundedRectView = CGPoint(x: cell.viewForTargetedPreview.bounds.width / 2, y: cell.viewForTargetedPreview.bounds.height / 2) - let centerOfRoundedRectViewInCellCoordinateSpace = cell.viewForTargetedPreview.convert(centerOfRoundedRectView, to: cell) - let previewTarget = UIPreviewTarget(container: cell, center: centerOfRoundedRectViewInCellCoordinateSpace) - targetedPreview = targetedPreview.retargetedPreview(with: previewTarget) - } - return targetedPreview - } - - - - private func makeActionProvider(for cell: CellWithMessage) -> (([UIMenuElement]) -> UIMenu?) { - return { (suggestedActions) in - - var children = [UIMenuElement]() - - guard let persistedMessageObjectID = cell.persistedMessageObjectID else { assertionFailure(); return nil } - guard let message = try? PersistedMessage.get(with: persistedMessageObjectID, within: ObvStack.shared.viewContext) else { assertionFailure(); return nil } - - // Message infos action - if message.infoActionCanBeMadeAvailable { - let action = UIAction(title: "Info") { [weak self] (_) in - // The following lines is useful when the keyboard is up at the time the user performs a long press on a sent message, then chooses infos. - // In that case, the counter is equal to 2 when arriving here, which is inappropriate. So we set it back to one. - if let vc = cell.infoViewController { - self?.counterOfCallsToAdjustCollectionViewContentInsetsToIgnore = min(1, self?.counterOfCallsToAdjustCollectionViewContentInsetsToIgnore ?? 0) - let nav = UINavigationController(rootViewController: vc) - nav.presentationController?.delegate = self - if #available(iOS 15, *) { - let appearance = UINavigationBarAppearance() - appearance.configureWithOpaqueBackground() - nav.navigationBar.standardAppearance = appearance - nav.navigationBar.scrollEdgeAppearance = appearance - } - self?.navigationController?.present(nav, animated: true) - } - } - action.image = UIImage(systemName: "info.circle") - children.append(action) - } - - // Copy Text action - if message.copyActionCanBeMadeAvailable, let bodyText = cell.textToCopy, !bodyText.isEmpty { - let action = UIAction(title: CommonString.Title.copyText) { (_) in - UIPasteboard.general.string = bodyText - } - action.image = UIImage(systemName: "doc.on.doc") - children.append(action) - } - - if message.shareActionCanBeMadeAvailable { - // Share all photos at once - if let imageAttachments = cell.imageAttachments, imageAttachments.count > 0 { - let action = UIAction(title: Strings.sharePhotos(imageAttachments.count)) { (_) in - let completionHandlerForRequestAllHardLinksToFyles = { [weak self] (hardlinks: [HardLinkToFyle?]) in - guard let _self = self else { return } - let activityItemProviders = hardlinks.compactMap({ $0?.activityItemProvider }) - guard activityItemProviders.count == hardlinks.count else { - os_log("Could not get all activity item providers from the hard links", log: _self.log, type: .fault) - return - } - let uiActivityVC = UIActivityViewController(activityItems: activityItemProviders, applicationActivities: nil) - DispatchQueue.main.async { [weak self] in - uiActivityVC.popoverPresentationController?.sourceView = cell - self?.present(uiActivityVC, animated: true) - } - } - let fyleElements: [FyleElement] = imageAttachments.compactMap { - $0.fyleElement - } - HardLinksToFylesNotifications.requestAllHardLinksToFyles(fyleElements: fyleElements, completionHandler: completionHandlerForRequestAllHardLinksToFyles).postOnDispatchQueue() - } - action.image = UIImage(systemName: "square.and.arrow.up") - children.append(action) - } - - // Share all attachments at once - if let fyleMessagesJoinWithStatus = cell.fyleMessagesJoinWithStatus, !fyleMessagesJoinWithStatus.isEmpty, cell.imageAttachments?.count != fyleMessagesJoinWithStatus.count { - let action = UIAction(title: Strings.shareAttachments(fyleMessagesJoinWithStatus.count)) { (_) in - let completionHandlerForRequestAllHardLinksToFyles = { [weak self] (hardlinks: [HardLinkToFyle?]) in - guard let _self = self else { return } - let activityItemProviders = hardlinks.compactMap({ $0?.activityItemProvider }) - guard activityItemProviders.count == hardlinks.count else { - os_log("Could not get all activity item providers from the hard links", log: _self.log, type: .fault) - return - } - let uiActivityVC = UIActivityViewController(activityItems: activityItemProviders, applicationActivities: nil) - DispatchQueue.main.async { [weak self] in - uiActivityVC.popoverPresentationController?.sourceView = cell - self?.present(uiActivityVC, animated: true) - } - } - let fyleElements: [FyleElement] = fyleMessagesJoinWithStatus.compactMap { - $0.fyleElement - } - HardLinksToFylesNotifications.requestAllHardLinksToFyles(fyleElements: fyleElements, completionHandler: completionHandlerForRequestAllHardLinksToFyles).postOnDispatchQueue() - } - action.image = UIImage(systemName: "square.and.arrow.up") - children.append(action) - } - } - - // Reply to message action - if message.replyToActionCanBeMadeAvailable { - let action = UIAction(title: CommonString.Word.Reply) { [weak self] (_) in - guard let discussion = self?.discussion else { return } - guard let log = self?.log else { return } - ObvStack.shared.performBackgroundTask { context in - do { - guard let writableDraft = try PersistedDraft.getPersistedDraft(of: discussion, within: context) else { throw Self.makeError(message: "Could not find PersistedDraft") } - guard let writableMessage = try PersistedMessage.get(with: persistedMessageObjectID, within: context) else { throw Self.makeError(message: "Could not find PersistedMessage") } - writableDraft.setReplyTo(to: writableMessage) - try context.save(logOnFailure: log) - } catch { - os_log("Could not attach message as a replyTo to the draft", log: log, type: .error) - return - } - os_log("We added a replyTo to the draft", log: log, type: .debug) - DispatchQueue.main.async { - self?.composeMessageView.loadReplyTo() - } - } - } - action.image = UIImage(systemName: "arrowshape.turn.up.left.2") - children.append(action) - } - - // Delete message action - if message.deleteMessageActionCanBeMadeAvailable { - let action = UIAction(title: CommonString.Word.Delete) { [weak self] (_) in - // Do not show any confirmation if the user deletes a wiped message. - let confirmedDeletionType: DeletionType? = message.isWiped ? .local : nil - self?.deletePersistedMessage(objectId: persistedMessageObjectID.objectID, confirmedDeletionType: confirmedDeletionType, withinCell: cell) - self?.counterOfCallsToAdjustCollectionViewContentInsetsToIgnore = 1 - } - action.image = UIImage(systemName: "trash") - action.attributes = [.destructive] - children.append(action) - } - - // Edit message action - if message.editBodyActionCanBeMadeAvailable { - let action = UIAction(title: CommonString.Word.Edit) { [weak self] (_) in - let currentTextBody = message.textBody - self?.dismissAccessoryView() - let vc = BodyEditViewController(currentBody: currentTextBody) { [weak self] in - self?.presentedViewController?.dismiss(animated: true, completion: { - self?.showAccessoryView() - }) - } send: { [weak self] (newTextBody) in - self?.presentedViewController?.dismiss(animated: true, completion: { - self?.showAccessoryView() - guard newTextBody != currentTextBody else { return } - ObvMessengerInternalNotification.userWantsToSendEditedVersionOfSentMessage(sentMessageObjectID: persistedMessageObjectID.objectID, - newTextBody: newTextBody ?? "") - .postOnDispatchQueue() - }) - } - self?.present(vc, animated: true) - return - } - action.image = UIImage(systemName: "pencil.circle") - children.append(action) - } - - if message.callActionCanBeMadeAvailable { - let action = UIAction(title: CommonString.Word.Call) { (_) in - guard let messageSystem = message as? PersistedMessageSystem else { return } - guard let item = messageSystem.optionalCallLogItem else { return } - let groupId = try? item.getGroupIdentifier() - - var contactsToCall = [TypeSafeManagedObjectID]() - for logContact in item.logContacts { - guard let contactIdentity = logContact.contactIdentity else { continue } - contactsToCall.append(contactIdentity.typedObjectID) - } - - ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(contactIDs: contactsToCall, groupId: groupId).postOnDispatchQueue() - } - action.image = UIImage(systemName: SystemIcon.phoneFill.systemName) - children.append(action) - } - - return UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: children) - } - } -} - -// MARK: - NSFetchedResultsControllerDelegate - -extension SingleDiscussionViewController: NSFetchedResultsControllerDelegate { - - func controller(_ controller: NSFetchedResultsController, didChange sectionInfo: NSFetchedResultsSectionInfo, atSectionIndex sectionIndex: Int, for type: NSFetchedResultsChangeType) { - sectionChanges.insert((type, sectionIndex), at: 0) - } - - - func controller(_ controller: NSFetchedResultsController, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) { - itemChanges.append((type, indexPath, newIndexPath)) - } - - - func controllerDidChangeContent(_ controller: NSFetchedResultsController) { - - let visibleHeaders = collectionView.visibleSupplementaryViews(ofKind: UICollectionView.elementKindSectionHeader) - - for header in visibleHeaders { - // Locking the alpha of the headers prevents animation glitches due to the layout attributes returned with a 1.0 alpha - (header as? DateCollectionReusableView)?.alphaIsLocked = true - } - - var anItemWasInserted = false - // The "bug" (?) can be reproduced by sending a message in a oneToOne discussion prior channel creation. - // Then create the channel, the message status in not updated. - // For now, we adopt an ugly patch - var indexPathsToReload = Set() - - collectionView.performBatchUpdates({ - - while let (type, sectionIndex) = sectionChanges.popLast() { - switch type { - case .insert: - collectionView.insertSections(IndexSet(integer: sectionIndex)) - case .delete: - collectionView.deleteSections(IndexSet(integer: sectionIndex)) - case .move, .update: - break - @unknown default: - assertionFailure() - } - } - while let (type, indexPath, newIndexPath) = itemChanges.popLast() { - switch type { - case .insert: - collectionView.insertItems(at: [newIndexPath!]) - anItemWasInserted = true - if fetchedResultsController.object(at: newIndexPath!) is PersistedMessageSent { - lastCollectionViewItemShouldBeVisible = true - } - case .delete: - collectionView.deleteItems(at: [indexPath!]) - let cellsToRefresh = visibleCellsWithReplyToMessageInCell(at: indexPath!) - for cell in cellsToRefresh { - cell.refresh() - } - - case .update: - if let messageCell = collectionView.cellForItem(at: indexPath!) as? MessageCollectionViewCell { - messageCell.refresh() - } else { - collectionView.reloadItems(at: [indexPath!]) - } - case .move: - // 2020-12-06: We add the 'if' statement. Given the new operations, the collection view has a tendency to call - // 'move' instead of 'update'. - if indexPath! == newIndexPath!, let messageCell = collectionView.cellForItem(at: indexPath!) as? MessageCollectionViewCell { - messageCell.refresh() - } else { - collectionView.moveItem(at: indexPath!, to: newIndexPath!) - indexPathsToReload.insert(newIndexPath!) - } - @unknown default: - assertionFailure() - } - } - - }) { [weak self] (_) in - - guard let _self = self else { return } - let collectionView = _self.collectionView! - - defer { - if !indexPathsToReload.isEmpty { - collectionView.reloadItems(at: [IndexPath](indexPathsToReload)) - } - if anItemWasInserted { - _self.showNoChannelAlertIfRequired() - } - } - - guard collectionView.bounds.inset(by: collectionView.adjustedContentInset).height < collectionView.contentSize.height && _self.lastCollectionViewItemShouldBeVisible else { - for header in visibleHeaders { - (header as? DateCollectionReusableView)?.alphaIsLocked = false - } - return - } - - _self.animatorForScrollingCollectionView.addAnimations { - collectionView.contentOffset = CGPoint(x: 0, y: collectionView.contentSize.height - collectionView.bounds.height + collectionView.adjustedContentInset.bottom) - } - _self.animatorForScrollingCollectionView.addCompletion { (_) in - for header in visibleHeaders { - (header as? DateCollectionReusableView)?.alphaIsLocked = false - } - _self.hideTopHeaderIfRequired(animate: true) - } - _self.animatorForScrollingCollectionView.startAnimation() - - } - - } - - - private func visibleCellsWithReplyToMessageInCell(at indexPAth: IndexPath) -> [MessageCollectionViewCell] { - guard let cell = collectionView.cellForItem(at: indexPAth) else { return [] } - assert(Thread.current == Thread.main) - guard let messageCell = cell as? MessageCollectionViewCell else { return [] } - guard let message = messageCell.message else { return [] } - let cells = collectionView.visibleCells - .compactMap { $0 as? MessageCollectionViewCell } - .filter { $0.message == message } - return cells - } - -} - - -// MARK: - Handling Gestures - -extension SingleDiscussionViewController { - - private func configureGestureRecognizers() { - - let hedgeGesture = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(screenEdgePanPerformed)) - hedgeGesture.edges = [.left] - self.collectionView.addGestureRecognizer(hedgeGesture) - - let tap = UITapGestureRecognizer(target: self, action: #selector(tapPerformed)) - self.collectionView.addGestureRecognizer(tap) - - } - - - @objc func screenEdgePanPerformed(recognizer: UIScreenEdgePanGestureRecognizer) { - guard recognizer.state == .ended else { return } - let percent = max(recognizer.translation(in: view).x, 0) / view.frame.width - let velocity = recognizer.velocity(in: view).x - if percent > 0.5 || velocity > 1000 { - self.dismiss(animated: true) - } - } - - - @objc func tapPerformed(recognizer: UITapGestureRecognizer) { - - guard recognizer.state == .ended else { return } - let location = recognizer.location(in: collectionView) - guard let indexPath = collectionView.indexPathForItem(at: location) else { return } - let cell = collectionView.cellForItem(at: indexPath) - - // Detect tap on a "reply-to" cell - do { - if let receivedCell = cell as? MessageCollectionViewCell { - let replyToRoundedRectView = receivedCell.replyToRoundedRectView - if replyToRoundedRectView.superview != nil { - // The replyToRoundedRectView exists in the view hierarchy, we check whether it was tapped - if replyToRoundedRectView.bounds.contains(recognizer.location(in: replyToRoundedRectView)) { - // The user tapped on the reply-to cell. Find the corresponding message - switch fetchedResultsController.object(at: indexPath).genericRepliesTo { - case .none, .notAvailableYet, .deleted: - return - case .available(let replyToMessage): - tapPerformedOnReplyToRoundedRectView(replyToMessage: replyToMessage) - } - } - - } - } - } - - // Detect tap on a new received message that cannot be read (yet) - do { - if let receivedMessage = (cell as? MessageCollectionViewCell)?.message as? PersistedMessageReceived, receivedMessage.readingRequiresUserAction { - ObvMessengerInternalNotification.userWantsToReadReceivedMessagesThatRequiresUserAction(persistedMessageObjectIDs: Set([receivedMessage.typedObjectID])) - .postOnDispatchQueue() - return - } - } - - // Detect tap on a FyleMessageJoinWithStatus - do { - if let messageCell = cell as? MessageCollectionViewCell { - if let index = messageCell.indexOfFyleMessageJoinWithStatus(at: recognizer.location(in: messageCell)) { - tapPerformedOnFyleMessageJoinWithStatus(atIndex: index, within: messageCell) - return // We detected an appropriate tap, we can return - } - } - } - - // Detact tap on a group v2 cell indicating that members changed - - if let systemMessage = (cell as? MessageSystemCollectionViewCell)?.messageSystem { - switch systemMessage.category { - case .membersOfGroupV2WereUpdated: - titleTapped() - default: - break - } - } - - // Detect tap on CallLog Item - if let systemMessage = (cell as? MessageSystemCollectionViewCell)?.messageSystem, - let callLogItem = systemMessage.optionalCallLogItem, - let callReportKind = callLogItem.callReportKind { - switch callReportKind { - case .rejectedIncomingCallBecauseOfDeniedRecordPermission: - systemCellShowingCallLogItemRejectedIncomingCallBecauseOfDeniedRecordPermissionWasTapped() - case .missedIncomingCall, - .filteredIncomingCall, - .rejectedIncomingCall, - .acceptedIncomingCall, - .acceptedOutgoingCall, - .rejectedOutgoingCall, - .busyOutgoingCall, - .unansweredOutgoingCall, - .uncompletedOutgoingCall, - .newParticipantInIncomingCall, - .newParticipantInOutgoingCall, - .anyIncomingCall, - .anyOutgoingCall: - break - } - } - } - - - /// Called when we detect that the user tapped on a view showing a "replied-to" message. - private func tapPerformedOnReplyToRoundedRectView(replyToMessage: PersistedMessage) { - - guard let replyToIndexPath = fetchedResultsController.indexPath(forObject: replyToMessage) else { return } - - if let collectionView = self.collectionView as? ObvCollectionView { - collectionView.adjustedScrollToItem(at: replyToIndexPath, at: .centeredVertically, animated: true) { [weak self] in - self?.highlightItem(at: replyToIndexPath) - } - } - - } - - private func highlightItem(at indexPath: IndexPath) { - guard let cell = collectionView.cellForItem(at: indexPath) as? MessageCollectionViewCell else { return } - - switch cell { - case is MessageSentCollectionViewCell: - cell.roundedRectView.applyRippleEffect(withColor: AppTheme.shared.colorScheme.primary300) - case is MessageReceivedCollectionViewCell: - let effectColor = AppTheme.shared.colorScheme.tertiarySystemBackground - cell.roundedRectView.applyRippleEffect(withColor: effectColor) - default: - return - } - - } - - - private func tapPerformedOnFyleMessageJoinWithStatus(atIndex index: Int, within messageCell: MessageCollectionViewCell) { - - if let fyleMessagesJoinWithStatus = messageCell.fyleMessagesJoinWithStatus as? [ReceivedFyleMessageJoinWithStatus] { - - let fyleMessageJoinWithStatus = fyleMessagesJoinWithStatus[index] - - switch fyleMessageJoinWithStatus.status { - - case .downloadable: - NewSingleDiscussionNotification.userWantsToDownloadReceivedFyleMessageJoinWithStatus(receivedJoinObjectID: fyleMessageJoinWithStatus.typedObjectID) - .postOnDispatchQueue() - - case .downloading: - NewSingleDiscussionNotification.userWantsToPauseDownloadReceivedFyleMessageJoinWithStatus(receivedJoinObjectID: fyleMessageJoinWithStatus.typedObjectID) - .postOnDispatchQueue() - - case .complete: - - guard let message = messageCell.message else { assertionFailure(); return } - showFilesViewerForFyleMessageJoinWithStatusOfMessage(message, firstShownIndex: index) - return - - case .cancelledByServer: - break // We do nothing if the attachment cannot be downloaded because it was cancelled by the server - } - - } else if let fyleMessagesJoinWithStatus = messageCell.fyleMessagesJoinWithStatus as? [SentFyleMessageJoinWithStatus] { - - let fyleMessageJoinWithStatus = fyleMessagesJoinWithStatus[index] - - switch fyleMessageJoinWithStatus.status { - case .uploadable, .uploading, .complete: - - guard let message = messageCell.message else { assertionFailure(); return } - showFilesViewerForFyleMessageJoinWithStatusOfMessage(message, firstShownIndex: index) - return - - } - - - } - - } - - - private func showFilesViewerForFyleMessageJoinWithStatusOfMessage(_ message: PersistedMessage, firstShownIndex: Int) { - guard let frc = try? FyleMessageJoinWithStatus.getFetchedResultsControllerForAllJoinsWithinMessage(message) else { assertionFailure(); return } - try? frc.performFetch() - self.filesViewer = FilesViewer(frc: frc, qlPreviewControllerDelegate: self) - dismissAccessoryView() // Shown back in func previewControllerDidDismiss(_ controller: QLPreviewController) - counterOfCallsToAdjustCollectionViewContentOffsetToIgnore = 2 - counterOfCallsToAdjustCollectionViewContentInsetsToIgnore = 2 - self.filesViewer?.tryToShowFile(atIndexPath: IndexPath(item: firstShownIndex, section: 0), within: self) - } - - - func systemCellShowingCallLogItemRejectedIncomingCallBecauseOfDeniedRecordPermissionWasTapped() { - switch AVAudioSession.sharedInstance().recordPermission { - case .undetermined: - AVAudioSession.sharedInstance().requestRecordPermission { [weak self] (granted) in - self?.collectionView.reloadData() - } - case .denied: - ObvMessengerInternalNotification.rejectedIncomingCallBecauseUserDeniedRecordPermission - .postOnDispatchQueue() - case .granted: - break - @unknown default: - assertionFailure() - } - } - -} - - -// MARK: - UIDocumentPickerDelegate - -extension SingleDiscussionViewController: UIDocumentPickerDelegate { - - func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { - deleteTempFilesToDeleteOnUIDocumentPickerViewControllerDismissal() - } - - - func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { - deleteTempFilesToDeleteOnUIDocumentPickerViewControllerDismissal() - } - - - private func deleteTempFilesToDeleteOnUIDocumentPickerViewControllerDismissal() { - while let tempURL = urlsOfTempFilesToDeleteOnUIDocumentPickerViewControllerDismissal.popLast() { - let container = ObvUICoreDataConstants.ContainerURL.forTempFiles.url - guard tempURL.absoluteString.starts(with: container.absoluteString) else { - return - } - try? FileManager.default.removeItem(at: tempURL) - } - } - -} - - -// MARK: - Handling keyboard appearance - -extension SingleDiscussionViewController { - - func registerKeyboardNotifications() { - do { - let token = NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillChangeFrameNotification, object: nil, queue: nil) { [weak self] (notification) in - self?.keyboardWillChangeFrame(notification) - } - observationTokens.append(token) - } - do { - let token = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidHideNotification, object: nil, queue: nil) { [weak self] (notification) in - self?.keyboardDidHideNotification(notification) - } - observationTokens.append(token) - } - } - - - private func keyboardDidHideNotification(_ notification: Notification) { - accessoryViewIsShown = false - } - - - private func keyboardWillChangeFrame(_ notification: Notification) { - - let visibleHeaders = collectionView.visibleSupplementaryViews(ofKind: UICollectionView.elementKindSectionHeader) - - for header in visibleHeaders { - (header as? DateCollectionReusableView)?.alphaIsLocked = true - } - animatorForCollectionViewContent.addCompletion { [weak self] (_) in - for header in visibleHeaders { - (header as? DateCollectionReusableView)?.alphaIsLocked = false - } - self?.hideTopHeaderIfRequired(animate: true) - } - - let kbdHeight = getKeyboardHeight(notification) - guard kbdHeight != currentKbdHeight else { return } - adjustCollectionViewContentOffset(nextKbdAndComposeViewHeight: kbdHeight) - adjustCollectionViewContentInset(nextKbdAndComposeViewHeight: kbdHeight) - currentKbdHeight = kbdHeight - - - } - - - private func getKeyboardHeight(_ notification: Notification) -> CGFloat { - let userInfo = notification.userInfo! - let kbSize = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as! CGRect).size - return kbSize.height - } - - - private func adjustCollectionViewContentInset(nextKbdAndComposeViewHeight: CGFloat) { - - guard counterOfCallsToAdjustCollectionViewContentInsetsToIgnore == 0 else { - counterOfCallsToAdjustCollectionViewContentInsetsToIgnore -= 1 - debugPrint("🥶 \(discussion.title) counterOfCallsToAdjustCollectionViewInsetsOffsetToIgnore: \(counterOfCallsToAdjustCollectionViewContentInsetsToIgnore+1) --> \(counterOfCallsToAdjustCollectionViewContentInsetsToIgnore)") - return - } - - let bottomInset = (nextKbdAndComposeViewHeight == 0) ? collectionView.safeAreaInsets.bottom : nextKbdAndComposeViewHeight - let currentInset = collectionView.contentInset - let newInset = UIEdgeInsets(top: collectionView.safeAreaInsets.top, - left: collectionView.safeAreaInsets.left, - bottom: bottomInset, - right: collectionView.safeAreaInsets.right) - if newInset != currentInset { - debugPrint("🥶 \(discussion.title) Changing insets: \(currentInset) --> \(newInset)") - if viewDidAppearWasCalled { - collectionView.contentInset = newInset - } else { - UIView.performWithoutAnimation { - collectionView.contentInset = newInset - } - } - } - } - - - private func adjustCollectionViewContentOffset(nextKbdAndComposeViewHeight: CGFloat) { - - guard viewDidAppearWasCalled else { - // If viewDidAppear has not been called already, we scroll to the bottom of the collection view - performInitialScrollToBottomIfRequired() - return - } - - // This is a hack. This is usefull when dismissing the preview of an attachment to avoid animation glitches. - guard counterOfCallsToAdjustCollectionViewContentOffsetToIgnore == 0 else { - counterOfCallsToAdjustCollectionViewContentOffsetToIgnore -= 1 - debugPrint("🥵 \(discussion.title) counterOfCallsToAdjustCollectionViewContentOffsetToIgnore: \(counterOfCallsToAdjustCollectionViewContentOffsetToIgnore+1) --> \(counterOfCallsToAdjustCollectionViewContentOffsetToIgnore)") - return - } - - // If the keyboard size increases, scroll - - guard nextKbdAndComposeViewHeight > currentKbdHeight else { return } - - let previousAvailableHeightForContent = collectionView.bounds.height - collectionView.safeAreaInsets.top - currentKbdHeight - let nextAvailableHeightForContent = collectionView.bounds.height - collectionView.safeAreaInsets.top - nextKbdAndComposeViewHeight - let currentOffset = self.collectionView.contentOffset - - let deltaVerticalContentOffset: CGFloat - - if collectionView.contentSize.height > previousAvailableHeightForContent { - - // Case 1 : The collection view's content size is larger than the previous available height for for content. Typical when there are a lot of messages. - deltaVerticalContentOffset = nextKbdAndComposeViewHeight - currentKbdHeight - - } else if collectionView.contentSize.height > nextAvailableHeightForContent { - - // Case 2 : The collection view's content size is smaller than the previous available height for for content, but larger than the next available height. Typical when there are a few messages. - deltaVerticalContentOffset = collectionView.contentSize.height - nextAvailableHeightForContent - - } else { - - // Case 3 : The collection view's content size is smaller than the next available height for for content. - deltaVerticalContentOffset = 0 - - } - - let newContentOffset = CGPoint(x: currentOffset.x, y: currentOffset.y + deltaVerticalContentOffset) - - debugPrint("🥵 \(discussion.title) collectionView contentOffset: \(collectionView.contentOffset) --> \(newContentOffset)") - - animatorForCollectionViewContent.addAnimations { [weak self] in - self?.collectionView.setContentOffset(newContentOffset, animated: false) - } - - if animatorForCollectionViewContent.state != .active { - animatorForCollectionViewContent.startAnimation() - } - - } - -} - - -// MARK: - Handling overlay windows - -extension SingleDiscussionViewController { - - @objc private func dismissOverlayWindow() { - guard let uiApplication = self.uiApplication else { return } - for window in uiApplication.windows.reversed() { - let overlays = window.subviews.filter { $0 is OverlayWindow } - let animator = UIViewPropertyAnimator(duration: 0.2, curve: .easeInOut) - for overlayWindow in overlays { - animator.addAnimations { - overlayWindow.backgroundColor = .clear - _ = overlayWindow.subviews.map { $0.isHidden = true } - } - animator.addCompletion({ (_) in - overlayWindow.removeFromSuperview() - }) - } - animator.startAnimation() - } - } - - - private func deletePersistedMessage(objectId: NSManagedObjectID, confirmedDeletionType: DeletionType?, withinCell cell: CellWithMessage) { - - switch confirmedDeletionType { - - case .none: - - guard let persistedMessage = try? PersistedMessage.get(with: objectId, within: ObvStack.shared.viewContext) else { return } - guard persistedMessage.discussion == self.discussion else { return } - - let numberOfAttachedFyles: Int - if let persistedMessageSent = persistedMessage as? PersistedMessageSent { - numberOfAttachedFyles = persistedMessageSent.fyleMessageJoinWithStatuses.filter({ !$0.isWiped }).count - } else if let persistedMessageReceived = persistedMessage as? PersistedMessageReceived { - numberOfAttachedFyles = persistedMessageReceived.fyleMessageJoinWithStatuses.filter({ !$0.isWiped }).count - } else { - numberOfAttachedFyles = 0 - } - - let userAlertTitle: String - if numberOfAttachedFyles > 0 { - userAlertTitle = Strings.deleteMessageAndAttachmentsTitle - } else { - userAlertTitle = Strings.deleteMessageTitle - } - let userAlertMessage = Strings.deleteMessageAndAttachmentsMessage(numberOfAttachedFyles) - - let alert = UIAlertController(title: userAlertTitle, message: userAlertMessage, preferredStyle: .actionSheet) - - alert.addAction(UIAlertAction(title: CommonString.AlertButton.performDeletionAction, style: .default, handler: { [weak self] (action) in - self?.deletePersistedMessage(objectId: objectId, confirmedDeletionType: .local, withinCell: cell) - })) - - if persistedMessage.globalDeleteMessageActionCanBeMadeAvailable { - alert.addAction(UIAlertAction(title: CommonString.AlertButton.performGlobalDeletionAction, style: .destructive, handler: { [weak self] (action) in - self?.deletePersistedMessage(objectId: objectId, confirmedDeletionType: .global, withinCell: cell) - })) - } - - alert.addAction(UIAlertAction(title: CommonString.Word.Cancel, style: .cancel)) - DispatchQueue.main.async { - alert.popoverPresentationController?.sourceView = cell.viewForTargetedPreview - self.present(alert, animated: true, completion: nil) - } - - case .some(let deletionType): - - assert(Thread.isMainThread) - guard let discussion = try? PersistedDiscussion.get(objectID: discussionObjectID, within: ObvStack.shared.viewContext) else { - return - } - guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId else { assertionFailure(); return } - - ObvMessengerInternalNotification.userRequestedDeletionOfPersistedMessage(ownedCryptoId: ownedCryptoId, persistedMessageObjectID: objectId, deletionType: deletionType) - .postOnDispatchQueue() - - } - - } - -} - - -// MARK: - Handling notifications - -extension SingleDiscussionViewController { - - // Refresh the discussion title if it is updated - private func observePersistedDiscussionHasNewTitleNotifications() { - let token = ObvMessengerCoreDataNotification.observePersistedDiscussionHasNewTitle(queue: OperationQueue.main) { [weak self] (objectID, title) in - assert(self?.discussion?.managedObjectContext == ObvStack.shared.viewContext) - guard objectID == self?.discussion?.typedObjectID else { return } - self?.navigationTitleLabel.text = title - } - observationTokens.append(token) - } - - - private func observePersistedContactHasNewCustomDisplayNameNotifications() { - let log = self.log - let token = ObvMessengerCoreDataNotification.observePersistedContactHasNewCustomDisplayName(queue: OperationQueue.main) { [weak self] (contactCryptoId) in - guard let _self = self else { return } - switch try? _self.discussion.kind { - case .oneToOne, .none: - return - case .groupV1(withContactGroup: let contactGroup): - guard let contactGroup = contactGroup else { - os_log("Could find contact group (this is ok if it was just deleted)", log: log, type: .error) - return - } - let contactsCryptoIds = contactGroup.contactIdentities.map { $0.cryptoId } - guard contactsCryptoIds.contains(contactCryptoId) else { return } - // If we reach this point, we simply reload all visible cells that correspond to a received message - // We need to refresh the context since the changed object is not among the one that are fetcheded - _self.fetchedResultsController.managedObjectContext.refreshAllObjects() - let visibleIps = _self.collectionView.indexPathsForVisibleItems.filter { _self.collectionView.cellForItem(at: $0) is MessageReceivedCollectionViewCell } - _self.collectionView.reloadItems(at: visibleIps) - case .groupV2(withGroup: let group): - guard let group = group else { - os_log("Could find group v2 (this is ok if it was just deleted)", log: log, type: .error) - return - } - let contactsCryptoIds = group.otherMembers.compactMap({ $0.cryptoId }) - guard contactsCryptoIds.contains(contactCryptoId) else { return } - // If we reach this point, we simply reload all visible cells that correspond to a received message - // We need to refresh the context since the changed object is not among the one that are fetcheded - _self.fetchedResultsController.managedObjectContext.refreshAllObjects() - let visibleIps = _self.collectionView.indexPathsForVisibleItems.filter { _self.collectionView.cellForItem(at: $0) is MessageReceivedCollectionViewCell } - _self.collectionView.reloadItems(at: visibleIps) - } - } - observationTokens.append(token) - } - - private func observeDiscussionLocalConfigurationHasBeenUpdatedNotifications() { - let token = ObvMessengerCoreDataNotification.observeDiscussionLocalConfigurationHasBeenUpdated { [weak self] value, objectId in - DispatchQueue.main.async { - guard let _self = self else { return } - guard case .muteNotificationsEndDate = value else { return } - guard _self.discussion.localConfiguration.typedObjectID == objectId else { return } - _self.configureNavigationBarTitle() - } - } - observationTokens.append(token) - } -} - - -// MARK: - MessageReceivedCollectionViewCellDelegate - -extension SingleDiscussionViewController: MessageCollectionViewCellDelegate { - func userSelectedURL(_ url: URL) { - delegate?.userSelectedURL(url, within: self) - } - - func reloadCell(_ cell: UICollectionViewCell) { - assert(Thread.current == Thread.main) - guard let indexPath = collectionView.indexPath(for: cell) else { return } - collectionView.reloadItems(at: [indexPath]) - } -} - - -// MARK: - Showing an alert when no channel is available - -extension SingleDiscussionViewController { - - private func showNoChannelAlertIfRequired() { - - guard discussionHasNoRemoteContactDevice else { return } - - let alert: UIAlertController - switch try? discussion.kind { - case .oneToOne: - alert = UIAlertController(title: Strings.Alerts.WaitingForChannel.title, - message: Strings.Alerts.WaitingForChannel.message, - preferredStyle: .alert) - case .groupV1: - alert = UIAlertController(title: Strings.Alerts.WaitingForFirstGroupMember.title, - message: Strings.Alerts.WaitingForFirstGroupMember.message, - preferredStyle: .alert) - case .groupV2: - // We do not show an alert for group v2 (since we sometimes want to write a message to self in an empty group v2) - return - case .none: - assertionFailure() - return - } - alert.addAction(UIAlertAction(title: CommonString.Word.Ok, style: .default, handler: nil)) - present(alert, animated: true) - - } - - - private var discussionHasNoRemoteContactDevice: Bool { - guard !discussion.isDeleted else { - return true - } - switch try? discussion.kind { - case .oneToOne(withContactIdentity: let contactIdentity): - guard let contactIdentity = contactIdentity else { assertionFailure(); return true } - return !contactIdentity.hasAtLeastOneRemoteContactDevice() - case .groupV1(withContactGroup: let contactGroup): - guard let contactGroup = contactGroup else { assertionFailure(); return true } - return !contactGroup.hasAtLeastOneRemoteContactDevice() - case .groupV2(withGroup: let group): - guard let group = group else { assertionFailure(); return true } - return group.otherMembers.isEmpty - case .none: - assertionFailure() - return true - } - } - -} - - -// MARK: - CustomQLPreviewControllerDelegate - -extension SingleDiscussionViewController: CustomQLPreviewControllerDelegate { - - func previewController(_ controller: QLPreviewController, transitionViewFor item: QLPreviewItem) -> UIView? { - guard let filesViewer = self.filesViewer else { assertionFailure(); return nil } - let attachmentIndex = controller.currentPreviewItemIndex - switch filesViewer.frcType { - case .fyleMessageJoinWithStatus(frc: let frc): - guard let join = frc.fetchedObjects?.first else { return nil } - guard let message = join.message else { return nil } - guard let messageCell = collectionView.visibleCells.compactMap({ $0 as? MessageCollectionViewCell }).first(where: { $0.message == message }) else { return nil } - guard let frcSections = frc.sections else { assertionFailure(); return nil } - guard frcSections.count == 1 else { assertionFailure(); return nil } - guard let frcFetchedObjects = frc.fetchedObjects else { assertionFailure(); return nil } - guard attachmentIndex < frcFetchedObjects.count else { assertionFailure(); return nil } - let dismissedFyleMessageJoin = frcFetchedObjects[attachmentIndex] - let thumbnailView = messageCell.thumbnailViewOfFyleMessageJoinWithStatus(dismissedFyleMessageJoin) - return thumbnailView - case .persistedDraftFyleJoin: - return nil - } - } - - - func previewControllerDidDismiss(_ controller: QLPreviewController) { - showAccessoryView() - self.filesViewer = nil - } - - func previewController(hasDisplayed joinID: TypeSafeManagedObjectID) { - ObvMessengerInternalNotification.userHasOpenedAReceivedAttachment(receivedFyleJoinID: joinID).postOnDispatchQueue() - } -} - - -// MARK: - UIAdaptivePresentationControllerDelegate - -extension SingleDiscussionViewController: UIAdaptivePresentationControllerDelegate { - - func presentationControllerDidDismiss(_ presentationController: UIPresentationController) { - // This method is typically called when the user dismissed the modal VC presented in order to show the infos of a particular message. - // This method is also called when the user the user dismissed the SentMessageInfosViewController by tapping the back button, since we call this method "by hand" in that case. - showAccessoryView() - } -} - - -// MARK: Stuff - -extension SingleDiscussionViewController { - - - /// We observe notifications of deleted fyle message joins (i.e., attachments) so as to be able to dismiss the File Viewer if: - /// - there is one presented ;-) - /// - it is currently configured to show one of the deleted attachments - /// This typically occurs for attachments with limited visibility. The first time we tap on such an attachment, the counter starts. When it is over, we delete de whole message, including the attachments. - /// In that case, we do not allow the user to continue viewing any of those attachments so we dismiss the file viewer. - private func observeDeletedFyleMessageJoinNotifications() { - let NotificationName = NSNotification.Name.NSManagedObjectContextObjectsDidChange - let token = NotificationCenter.default.addObserver(forName: NotificationName, object: nil, queue: nil) { [weak self] (notification) in - - // Make sure we are considering changes made in the view context, i.e., posted on the main thread - - guard Thread.isMainThread else { return } - - // Construc a set of FyleMessageJoinWithStatus currently shown by the file viewer - - guard let filesViewer = self?.filesViewer else { return } - guard case .fyleMessageJoinWithStatus(frc: let frcOfFilesViewer) = filesViewer.frcType else { return } - guard let shownObjectIDs = frcOfFilesViewer.fetchedObjects?.map({ $0.objectID }) else { return } - - // Construct a set of deleted/wiped FyleMessageJoinWithStatus - - var objectIDs = Set() - do { - if let deletedObjects = notification.userInfo?[NSDeletedObjectsKey] as? Set, !deletedObjects.isEmpty { - let deletedFyleMessageJoinWithStatuses = deletedObjects.compactMap({ $0 as? FyleMessageJoinWithStatus }) - objectIDs.formUnion(Set(deletedFyleMessageJoinWithStatuses.map({ $0.objectID }))) - } - if let updatedObjects = notification.userInfo?[NSUpdatedObjectsKey] as? Set, !updatedObjects.isEmpty { - let wipedFyleMessageJoinWithStatuses = updatedObjects - .compactMap { $0 as? FyleMessageJoinWithStatus } - .filter { $0.isWiped } - objectIDs.formUnion(Set(wipedFyleMessageJoinWithStatuses.map({ $0.objectID }))) - } - } - - // Construct a set of FyleMessageJoinWithStatus shown by the file viewer - - guard !objectIDs.isDisjoint(with: shownObjectIDs) else { return } - DispatchQueue.main.async { - (self?.presentedViewController as? QLPreviewController)?.dismiss(animated: true, completion: { - self?.filesViewer = nil - }) - } - } - observationTokens.append(token) - } - - - /// If a received message gets deleted (e.g., after its visibility expires), we check whether it was "under" the - /// system message indicating the number of new messages. If this is the case, we must update (potentially delete) - /// the system message. - private func observeCertainMessageDeletionToUpdateNumberOfNewMessagesSystemMessage() { - observationTokens.append(ObvMessengerCoreDataNotification.observePersistedMessageReceivedWasDeleted(queue: OperationQueue.main) { [weak self] (objectID, _, _, sortIndex, _) in - guard let _self = self else { return } - guard let numberOfNewMessagesSystemMessage = try? PersistedMessageSystem.getNumberOfNewMessagesSystemMessage(in: _self.discussion) else { return } - guard _self.objectIDsOfNewMessages.contains(objectID) else { return } - // If we reach this point, the system message of type 'numberOfNewMessages' should be updated (potentially deleted). - _self.objectIDsOfNewMessages.remove(objectID) - numberOfNewMessagesSystemMessage.updateAndPotentiallyDeleteNumberOfUnreadReceivedMessagesSystemMessage(newNumberOfUnreadReceivedMessages: _self.objectIDsOfNewMessages.count) - }) - observationTokens.append(ObvMessengerCoreDataNotification.observePersistedMessageSystemWasDeleted(queue: OperationQueue.main) { [weak self] (objectID, _) in - guard let _self = self else { return } - guard let numberOfNewMessagesSystemMessage = try? PersistedMessageSystem.getNumberOfNewMessagesSystemMessage(in: _self.discussion) else { return } - guard _self.objectIDsOfNewMessages.contains(objectID) else { return } - // If we reach this point, the system message of type 'numberOfNewMessages' should be updated (potentially deleted). - _self.objectIDsOfNewMessages.remove(objectID) - numberOfNewMessagesSystemMessage.updateAndPotentiallyDeleteNumberOfUnreadReceivedMessagesSystemMessage(newNumberOfUnreadReceivedMessages: _self.objectIDsOfNewMessages.count) - }) - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SupplementaryViews/DateCollectionReusableView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SupplementaryViews/DateCollectionReusableView.swift deleted file mode 100644 index 0d798810..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SupplementaryViews/DateCollectionReusableView.swift +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -final class DateCollectionReusableView: UICollectionReusableView { - - static let identifier = "DateCollectionReusableView" - - let bodyCell = UIView() - let label = UILabel() - var alphaIsLocked = false - - override init(frame: CGRect) { - super.init(frame: frame) - setup() - } - - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - setup() - } - - - private func setup() { - - self.clipsToBounds = true - self.autoresizesSubviews = true - self.isUserInteractionEnabled = false - - bodyCell.translatesAutoresizingMaskIntoConstraints = false - bodyCell.layer.cornerRadius = 13.0 - bodyCell.backgroundColor = AppTheme.shared.colorScheme.primary400.withAlphaComponent(0.9) - self.addSubview(bodyCell) - - label.translatesAutoresizingMaskIntoConstraints = false - label.numberOfLines = 1 - label.backgroundColor = .clear - label.textColor = AppTheme.shared.colorScheme.whiteTextHighEmphasis - label.font = UIFont.preferredFont(forTextStyle: .subheadline) - bodyCell.addSubview(label) - - setupConstraints() - - } - - - private func setupConstraints() { - let constraints = [ - label.topAnchor.constraint(equalTo: bodyCell.topAnchor, constant: 8.0), - label.trailingAnchor.constraint(equalTo: bodyCell.trailingAnchor, constant: -8.0), - label.bottomAnchor.constraint(equalTo: bodyCell.bottomAnchor, constant: -8.0), - label.leadingAnchor.constraint(equalTo: bodyCell.leadingAnchor, constant: 8.0), - bodyCell.centerXAnchor.constraint(equalTo: self.centerXAnchor), - bodyCell.topAnchor.constraint(equalTo: self.topAnchor), - bodyCell.bottomAnchor.constraint(equalTo: self.bottomAnchor), - bodyCell.centerYAnchor.constraint(equalTo: self.centerYAnchor) - ] - NSLayoutConstraint.activate(constraints) - - } - - override func prepareForReuse() { - super.prepareForReuse() - label.text = nil - alphaIsLocked = false - } - - override var alpha: CGFloat { - get { - return super.alpha - } - set { - guard !alphaIsLocked else { return } - super.alpha = newValue - } - } - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - - var fittingSize = UIView.layoutFittingCompressedSize - fittingSize.width = layoutAttributes.size.width - let size = systemLayoutSizeFitting(fittingSize, withHorizontalFittingPriority: .defaultHigh, verticalFittingPriority: .defaultLow) - var adjustedFrame = layoutAttributes.frame - adjustedFrame.size.height = size.height - layoutAttributes.frame = adjustedFrame - - return layoutAttributes - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SupplementaryViews/NoChannelCollectionReusableView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SupplementaryViews/NoChannelCollectionReusableView.swift deleted file mode 100644 index 9bc1efc6..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Discussions/SingleDiscussion/SupplementaryViews/NoChannelCollectionReusableView.swift +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - - -class NoChannelCollectionReusableView: UICollectionReusableView { - - static let identifier = "NoChannelCollectionReusableView" - - let label = UILabel() - - override init(frame: CGRect) { - super.init(frame: frame) - setup() - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - func setup() { - - self.clipsToBounds = true - self.autoresizesSubviews = true - - label.translatesAutoresizingMaskIntoConstraints = false - label.font = UIFont.preferredFont(forTextStyle: .footnote) - label.textColor = AppTheme.shared.colorScheme.label - label.textAlignment = .center - self.addSubview(label) - - setupConstraints() - } - - - private func setupConstraints() { - let constraints = [ - label.topAnchor.constraint(equalTo: self.topAnchor), - label.trailingAnchor.constraint(equalTo: self.trailingAnchor), - label.bottomAnchor.constraint(equalTo: self.bottomAnchor), - label.leadingAnchor.constraint(equalTo: self.leadingAnchor) - ] - NSLayoutConstraint.activate(constraints) - } - - func configure(with text: String) { - self.label.text = text - } - -} - - -extension NoChannelCollectionReusableView { - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - - var fittingSize = UIView.layoutFittingCompressedSize - fittingSize.width = layoutAttributes.size.width - let size = systemLayoutSizeFitting(fittingSize, withHorizontalFittingPriority: .defaultHigh, verticalFittingPriority: .defaultLow) - var adjustedFrame = layoutAttributes.frame - adjustedFrame.size.height = size.height - layoutAttributes.frame = adjustedFrame - - return layoutAttributes - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/AllGroups/NewAllGroupsViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/AllGroups/NewAllGroupsViewController.swift index dc692b44..4b687513 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/AllGroups/NewAllGroupsViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/AllGroups/NewAllGroupsViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -17,15 +17,14 @@ * along with Olvid. If not, see . */ - - import CoreData import ObvUI import ObvUICoreData import ObvTypes import UIKit -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials import UI_SystemIcon +import ObvDesignSystem /// We implement the list of groups using a plain collection view. Since we require this view controller to be used under iOS 13, we cannot use modern techniques (such as list in collection views or UIContentConfiguration). @@ -91,13 +90,8 @@ final class NewAllGroupsViewController: ShowOwnedIdentityButtonUIViewController, var rightBarButtonItems = [UIBarButtonItem]() - if #available(iOS 14, *) { - let ellipsisButton = getConfiguredEllipsisCircleRightBarButtonItem() - rightBarButtonItems.append(ellipsisButton) - } else { - let ellipsisButton = getConfiguredEllipsisCircleRightBarButtonItem(selector: #selector(ellipsisButtonTappedSelector)) - rightBarButtonItems.append(ellipsisButton) - } + let ellipsisButton = getConfiguredEllipsisCircleRightBarButtonItem() + rightBarButtonItems.append(ellipsisButton) navigationItem.rightBarButtonItems = rightBarButtonItems @@ -139,12 +133,6 @@ final class NewAllGroupsViewController: ShowOwnedIdentityButtonUIViewController, } - @available(iOS, introduced: 13.0, deprecated: 14.0, message: "Used because iOS 13 does not support UIMenu on UIBarButtonItem") - @objc private func ellipsisButtonTappedSelector() { - ellipsisButtonTapped(sourceBarButtonItem: navigationItem.rightBarButtonItem) - } - - func clearSelection(animated: Bool) { collectionView.indexPathsForSelectedItems?.forEach({ (indexPath) in collectionView.deselectItem(at: indexPath, animated: animated) @@ -248,7 +236,7 @@ final class NewAllGroupsViewController: ShowOwnedIdentityButtonUIViewController, if let displayedContactGroup = try? DisplayedContactGroup.get(objectID: objectID, within: ObvStack.shared.viewContext) { self?.configure(groupCell: groupCell, with: displayedContactGroup) } else { - assertionFailure() + self?.configureWhenNoDisplayedContactGroupCanBeFound(groupCell: groupCell) } return groupCell } @@ -271,6 +259,18 @@ final class NewAllGroupsViewController: ShowOwnedIdentityButtonUIViewController, try? frc.performFetch() } + + + /// This is generally called when a cell must be refreshed while a DisplayedContactGroup is deleted + private func configureWhenNoDisplayedContactGroupCanBeFound(groupCell: ObvSubtitleCollectionViewCell) { + let configuration = ObvSubtitleCollectionViewCell.Configuration( + title: nil, + subtitle: nil, + circledInitialsConfiguration: .icon(.person3Fill), + badge: .none + ) + groupCell.configure(with: configuration) + } private func configure(groupCell: ObvSubtitleCollectionViewCell, with displayedContactGroup: DisplayedContactGroup) { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupCreation/SwiftUI/GroupEditionFlowViewHostingController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupCreation/SwiftUI/GroupEditionFlowViewHostingController.swift index cc14ddc2..c38cd598 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupCreation/SwiftUI/GroupEditionFlowViewHostingController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupCreation/SwiftUI/GroupEditionFlowViewHostingController.swift @@ -20,6 +20,7 @@ import SwiftUI import ObvTypes import ObvUI +import ObvDesignSystem final class GroupEditionFlowViewHostingController: UIHostingController { @@ -29,7 +30,6 @@ final class GroupEditionFlowViewHostingController: UIHostingController Void) { @@ -85,8 +85,6 @@ struct OwnedGroupEditionFlowView: View { return contactGroup.hasChanged case .editGroupV2AsAdmin: return contactGroup.hasChanged - case .editGroupV2CustomNameAndCustomPhoto: - return contactGroup.hasChanged } } @@ -99,14 +97,13 @@ struct OwnedGroupEditionFlowView: View { switch editionType { case .createGroupV1, .createGroupV2: return NSLocalizedString("CREATE_GROUP", comment: "") case .editGroupV1, .editGroupV2AsAdmin: return NSLocalizedString("PUBLISH_GROUP", comment: "") - case .editGroupV2CustomNameAndCustomPhoto: return NSLocalizedString("SAVE_CUSTOM_GROUP_VALUES", comment: "") } } var actionTitle: String { switch editionType { case .createGroupV1, .createGroupV2: return NSLocalizedString("PUBLISH_NEW_GROUP", comment: "") - case .editGroupV1, .editGroupV2AsAdmin, .editGroupV2CustomNameAndCustomPhoto: return NSLocalizedString("EDIT_GROUP", comment: "") + case .editGroupV1, .editGroupV2AsAdmin: return NSLocalizedString("EDIT_GROUP", comment: "") } } @@ -114,7 +111,6 @@ struct OwnedGroupEditionFlowView: View { switch editionType { case .createGroupV1, .createGroupV2: return NSLocalizedString("ARE_YOU_SURE_CREATE_NEW_OWNED_GROUP", comment: "") case .editGroupV1, .editGroupV2AsAdmin: return NSLocalizedString("ARE_YOU_SURE_PUBLISH_EDITED_OWNED_GROUP", comment: "") - case .editGroupV2CustomNameAndCustomPhoto: assertionFailure(); return "" } } @@ -122,7 +118,6 @@ struct OwnedGroupEditionFlowView: View { switch editionType { case .createGroupV1, .createGroupV2: return NSLocalizedString("CREATE_MY_GROUP", comment: "") case .editGroupV1, .editGroupV2AsAdmin: return NSLocalizedString("PUBLISH_MY_GROUP", comment: "") - case .editGroupV2CustomNameAndCustomPhoto: assertionFailure(); return "" } } @@ -161,9 +156,6 @@ struct OwnedGroupEditionFlowView: View { switch editionType { case .createGroupV1, .createGroupV2, .editGroupV1, .editGroupV2AsAdmin: isPublishActionSheetShown = true - case .editGroupV2CustomNameAndCustomPhoto: - publishingInProgress = true - userConfirmedPublishAction() } }) .padding(.all, 10) @@ -179,10 +171,6 @@ struct OwnedGroupEditionFlowView: View { TextField(LocalizedStringKey("GROUP_NAME"), text: $contactGroup.name) TextField(LocalizedStringKey("GROUP_DESCRIPTION"), text: $contactGroup.description) }.disabled(isPublishActionSheetShown) - case .editGroupV2CustomNameAndCustomPhoto: - Section(header: Text("CHOOSE_GROUP_NICKNAME")) { - TextField(LocalizedStringKey("FORM_NICKNAME"), text: $contactGroup.name) - }.disabled(isPublishActionSheetShown) } if !contactGroup.members.isEmpty { Section(header: Text("CHOSEN_GROUP_MEMBERS")) { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupCreation/UIKit/GroupEditionFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupCreation/UIKit/GroupEditionFlowViewController.swift index c4548ad1..7611ef48 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupCreation/UIKit/GroupEditionFlowViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupCreation/UIKit/GroupEditionFlowViewController.swift @@ -24,6 +24,8 @@ import ObvTypes import ObvCrypto import ObvUI import ObvUICoreData +import ObvSettings +import ObvDesignSystem final class GroupEditionFlowViewController: UIViewController { @@ -34,7 +36,6 @@ final class GroupEditionFlowViewController: UIViewController { case addGroupV1Members(groupUid: UID, currentGroupMembers: Set) case removeGroupV1Members(groupUid: UID, currentGroupMembers: Set) case editGroupV1Details(obvContactGroup: ObvContactGroup) - case editGroupV2CustomNameAndCustomPhoto(groupIdentifier: Data) case editGroupV2AsAdmin(groupIdentifier: Data) case cloneGroup(initialGroupMembers: Set, initialGroupName: String?, initialGroupDescription: String?, initialPhotoURL: URL?) @@ -175,38 +176,6 @@ extension GroupEditionFlowViewController { groupEditionVC.navigationItem.setLeftBarButton(cancelButtonItem, animated: false) flowNavigationController = ObvNavigationController(rootViewController: groupEditionVC) - case .editGroupV2CustomNameAndCustomPhoto(groupIdentifier: let groupIdentifier): - - guard let group = try? PersistedGroupV2.getWithPrimaryKey(ownCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, within: ObvStack.shared.viewContext) else { - assertionFailure() - dismiss(animated: true) - return - } - let circleConfig = group.circledInitialsConfiguration - let groupColors = (circleConfig.backgroundColor(appTheme: AppTheme.shared, using: ObvMessengerSettings.Interface.identityColorStyle), circleConfig.foregroundColor(appTheme: AppTheme.shared, using: ObvMessengerSettings.Interface.identityColorStyle)) - - let contactGroup = ContactGroup(name: group.customName ?? "", - description: "", // cannot be edited anyway in that case - members: [], - photoURL: group.customPhotoURL, - groupColors: groupColors) - let groupEditionVC = GroupEditionFlowViewHostingController(contactGroup: contactGroup, editionType: .editGroupV2CustomNameAndCustomPhoto) { [weak self] in - assert(Thread.isMainThread) - let customName: String? = contactGroup.name.isEmpty ? nil : contactGroup.name - let customPhotoURL: URL? = (contactGroup.photoURL == group.enginePhotoURL) ? nil : contactGroup.photoURL - ObvMessengerInternalNotification.userWantsToUpdateCustomNameAndGroupV2Photo(groupObjectID: group.typedObjectID, - customName: customName, - customPhotoURL: customPhotoURL) - .postOnDispatchQueue() - self?.flowNavigationController.dismiss(animated: true) - } - - groupEditionVC.title = Strings.groupV2CustomNameAndPhotoEditionTitle - let cancelButtonItem = UIBarButtonItem.forClosing(target: self, action: #selector(cancelButtonTapped)) - groupEditionVC.navigationItem.setLeftBarButton(cancelButtonItem, animated: false) - flowNavigationController = ObvNavigationController(rootViewController: groupEditionVC) - - case .editGroupV2AsAdmin(groupIdentifier: let groupIdentifier): guard let group = try? PersistedGroupV2.getWithPrimaryKey(ownCryptoId: ownedCryptoId, groupIdentifier: groupIdentifier, within: ObvStack.shared.viewContext) else { @@ -308,8 +277,6 @@ extension GroupEditionFlowViewController { break case .editGroupV1Details: doneButtonItem?.isEnabled = groupName != nil && !groupName!.isEmpty - case .editGroupV2CustomNameAndCustomPhoto: - break case .editGroupV2AsAdmin: break } @@ -360,8 +327,6 @@ extension GroupEditionFlowViewController { break case .editGroupV1Details: break - case .editGroupV2CustomNameAndCustomPhoto: - break case .editGroupV2AsAdmin: break } @@ -403,11 +368,6 @@ extension GroupEditionFlowViewController { assertionFailure() return - case .editGroupV2CustomNameAndCustomPhoto: - - assertionFailure() - return - case .editGroupV2AsAdmin: assertionFailure() @@ -505,7 +465,6 @@ extension GroupEditionFlowViewController { case .addGroupV1Members, .removeGroupV1Members, .editGroupV1Details, - .editGroupV2CustomNameAndCustomPhoto, .editGroupV2AsAdmin: break } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupsFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupsFlowViewController.swift index bf60318c..e382a846 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupsFlowViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/GroupsFlowViewController.swift @@ -23,6 +23,7 @@ import ObvEngine import ObvTypes import ObvUI import ObvUICoreData +import ObvDesignSystem final class GroupsFlowViewController: UINavigationController, ObvFlowController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroup/SingleGroupViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroup/SingleGroupViewController.swift index 70efe05b..6dffc1d6 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroup/SingleGroupViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroup/SingleGroupViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,12 +23,13 @@ import os.log import ObvEngine import ObvTypes import SwiftUI -import ObvMetaManager import ObvUI import ObvUICoreData +import ObvDesignSystem +import ObvSettings -class SingleGroupViewController: UIViewController { +class SingleGroupViewController: UIViewController, PersonalNoteEditorViewActionsDelegate { // Views @@ -44,6 +45,11 @@ class SingleGroupViewController: UIViewController { private let cloneExplanationLabel = UILabel() private let cloneButton = ObvImageButton() + @IBOutlet weak var personalNoteContainerView: UIView! + private let personalNoteBackgroundView = UIView() + private let personalNoteTitle = UILabel() + private let personalNoteBody = UILabel() + @IBOutlet weak var membersStackView: UIStackView! @IBOutlet weak var membersLabel: UILabel! @IBOutlet weak var membersLeadingPaddingConstraint: NSLayoutConstraint! @@ -112,6 +118,7 @@ class SingleGroupViewController: UIViewController { // Other constants private var notificationTokens = [NSObjectProtocol]() + private var keyValueObservations = [NSKeyValueObservation]() private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SingleGroupViewController.self)) private let customSpacingBetweenSections: CGFloat = 24.0 @@ -177,6 +184,7 @@ class SingleGroupViewController: UIViewController { deinit { notificationTokens.forEach { NotificationCenter.default.removeObserver($0) } + keyValueObservations.forEach { $0.invalidate() } } } @@ -226,6 +234,26 @@ extension SingleGroupViewController { cloneButton.setTitle(NSLocalizedString("CLONE_THIS_GROUP_V1_TO_GROUP_V2", comment: ""), for: .normal) cloneButton.setImage(.docOnDoc, for: .normal) + personalNoteContainerView.addSubview(personalNoteBackgroundView) + personalNoteBackgroundView.translatesAutoresizingMaskIntoConstraints = false + personalNoteBackgroundView.backgroundColor = AppTheme.shared.colorScheme.secondarySystemBackground + personalNoteBackgroundView.layer.cornerCurve = .continuous + personalNoteBackgroundView.layer.cornerRadius = 16.0 + + personalNoteBackgroundView.addSubview(personalNoteTitle) + personalNoteTitle.translatesAutoresizingMaskIntoConstraints = false + personalNoteTitle.textColor = AppTheme.shared.colorScheme.label + personalNoteTitle.font = UIFont.preferredFont(forTextStyle: .headline) + personalNoteTitle.text = NSLocalizedString("PERSONAL_NOTE", comment: "") + personalNoteTitle.numberOfLines = 1 + + personalNoteBackgroundView.addSubview(personalNoteBody) + personalNoteBody.translatesAutoresizingMaskIntoConstraints = false + personalNoteBody.textColor = AppTheme.shared.colorScheme.secondaryLabel + personalNoteBody.font = UIFont.preferredFont(forTextStyle: .body) + personalNoteBody.text = "-" + personalNoteBody.numberOfLines = 0 + membersLabel.textColor = AppTheme.shared.colorScheme.label membersLabel.text = Strings.members membersLeadingPaddingConstraint.constant = sectionLabelsLeadingPaddingConstraint @@ -327,6 +355,15 @@ extension SingleGroupViewController { observeEngineNotifications() observeIdentityColorStyleDidChangeNotifications() + keyValueObservations.append(persistedContactGroup.observe(\.note, options: [.new]) { object, change in + guard let newPersonalNote = change.newValue else { assertionFailure(); return } + if let newPersonalNote, !newPersonalNote.isEmpty { + self.personalNoteBody.text = newPersonalNote + } else { + self.personalNoteBody.text = "-" + } + }) + // We refresh the group each time we load this view controller if obvContactGroup.groupType == .joined { refreshGroup() @@ -369,25 +406,88 @@ extension SingleGroupViewController { cloneBackgroundView.heightAnchor.constraint(equalToConstant: 0), ]) } + + NSLayoutConstraint.activate([ + personalNoteBackgroundView.leadingAnchor.constraint(equalTo: personalNoteContainerView.leadingAnchor, constant: 16), + personalNoteBackgroundView.trailingAnchor.constraint(equalTo: personalNoteContainerView.trailingAnchor, constant: -16), + personalNoteBackgroundView.topAnchor.constraint(equalTo: personalNoteContainerView.topAnchor, constant: 0), + personalNoteBackgroundView.bottomAnchor.constraint(equalTo: personalNoteContainerView.bottomAnchor, constant: -16), + + personalNoteTitle.topAnchor.constraint(equalTo: personalNoteBackgroundView.topAnchor, constant: 16), + personalNoteTitle.trailingAnchor.constraint(equalTo: personalNoteBackgroundView.trailingAnchor, constant: -16), + personalNoteTitle.bottomAnchor.constraint(equalTo: personalNoteBody.topAnchor, constant: -4), + personalNoteTitle.leadingAnchor.constraint(equalTo: personalNoteBackgroundView.leadingAnchor, constant: 16), + + personalNoteBody.trailingAnchor.constraint(equalTo: personalNoteBackgroundView.trailingAnchor, constant: -16), + personalNoteBody.leadingAnchor.constraint(equalTo: personalNoteBackgroundView.leadingAnchor, constant: 16), + personalNoteBody.bottomAnchor.constraint(equalTo: personalNoteBackgroundView.bottomAnchor, constant: -16), + ]) + } + private func configureNavigationBarTitle() { - var items: [UIBarButtonItem] = [] - - items += [UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.compose, target: self, action: #selector(editGroupButtonTapped))] - + addRightBarButtonMenu() + } + + + @available(iOS 15.0, *) + private func addRightBarButtonMenu() { + + let actionEditNote = UIAction( + title: NSLocalizedString("EDIT_PERSONAL_NOTE", comment: ""), + image: UIImage(systemIcon: .pencil(.circle)), + handler: userWantsToShowPersonalNoteEditor) + + let actionEditGroup = UIAction( + title: NSLocalizedString("EDIT_GROUP", comment: ""), + image: UIImage(systemIcon: .pencil(.circle)), + handler: userWantsToEditGroupNickname) + + let actionCall: UIAction? if !persistedContactGroup.contactIdentities.isEmpty { - items += [BlockBarButtonItem(systemIcon: .phoneFill) { - let groupId = self.persistedContactGroup.typedObjectID - let contactIdentities = self.persistedContactGroup.contactIdentities - ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(contactIDs: contactIdentities.map({ $0.typedObjectID }), groupId: .groupV1(groupId)).postOnDispatchQueue() - }] + actionCall = UIAction( + title: NSLocalizedString("CALL", comment: ""), + image: UIImage(systemIcon: .phoneFill), + handler: { [weak self] _ in + guard let self else { return } + guard let context = persistedContactGroup.managedObjectContext else { return } + context.perform { [weak self] in + guard let self else { return } + guard let ownedCryptoId = persistedContactGroup.ownedIdentity?.cryptoId else { return } + let contactCryptoIds = persistedContactGroup.contactIdentities.map { $0.cryptoId } + guard let groupV1Identifier = try? persistedContactGroup.getGroupV1Identifier() else { assertionFailure(); return } + ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set(contactCryptoIds), groupId: .groupV1(groupV1Identifier: groupV1Identifier)) + .postOnDispatchQueue() + } + }) + } else { + actionCall = nil } - - self.navigationItem.rightBarButtonItems = items + + let menu = UIMenu(children: [actionEditNote, actionEditGroup, actionCall].compactMap{ $0 }) + + let barButtonItem = UIBarButtonItem(image: UIImage(systemIcon: .ellipsisCircle), menu: menu) + + navigationItem.rightBarButtonItems = [barButtonItem] } + @available(iOS 15.0, *) + private func userWantsToShowPersonalNoteEditor(_ action: UIAction) { + let personalNote = persistedContactGroup.note + let viewControllerToPresent = PersonalNoteEditorHostingController(model: .init(initialText: personalNote), actions: self) + if let sheet = viewControllerToPresent.sheetPresentationController { + sheet.detents = [.medium()] + sheet.prefersScrollingExpandsWhenScrolledToEdge = false + sheet.prefersEdgeAttachedInCompactHeight = true + sheet.widthFollowsPreferredContentSizeWhenEdgeAttached = true + sheet.preferredCornerRadius = 16.0 + } + present(viewControllerToPresent, animated: true, completion: nil) + } + + override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) @@ -423,8 +523,13 @@ extension SingleGroupViewController { } else { circledInitials.showImage(fromImage: AppTheme.shared.images.groupImage) } - circledInitials.identityColors = AppTheme.shared.groupColors(forGroupUid: persistedContactGroup.groupUid) + circledInitials.identityColors = AppTheme.shared.groupColors(forGroupUid: persistedContactGroup.groupUid, using: ObvMessengerSettings.Interface.identityColorStyle) titleLabel.text = self.persistedContactGroup.displayName + if let newPersonalNote = self.persistedContactGroup.note, !newPersonalNote.isEmpty { + self.personalNoteBody.text = newPersonalNote + } else { + self.personalNoteBody.text = "-" + } } private func configureAndAddMembersTVC() throws { @@ -595,8 +700,18 @@ extension SingleGroupViewController { extension SingleGroupViewController { + private func userWantsToEditGroupNickname(_ action: UIAction) { + editGroupButtonTapped() + } + @objc func editGroupButtonTapped() { + guard let ownedCryptoId = self.persistedContactGroup.ownedIdentity?.cryptoId, + let groupId = try? self.persistedContactGroup.getGroupId() else { + assertionFailure() + return + } + switch obvContactGroup.groupType { case .joined: @@ -608,13 +723,15 @@ extension SingleGroupViewController { textField.text = _self.persistedContactGroup.displayName } guard let textField = alert.textFields?.first else { return } - let removeNickname = UIAlertAction(title: CommonString.removeNickname, style: .destructive) { [weak self] (_) in - self?.removeGroupNameCustom() + let removeNickname = UIAlertAction(title: CommonString.removeNickname, style: .destructive) { _ in + ObvMessengerInternalNotification.userWantsToSetCustomNameOfJoinedGroupV1(ownedCryptoId: ownedCryptoId, groupId: groupId, groupNameCustom: nil) + .postOnDispatchQueue() } let cancelAction = UIAlertAction(title: CommonString.Word.Cancel, style: UIAlertAction.Style.cancel) - let okAction = UIAlertAction(title: CommonString.Word.Ok, style: UIAlertAction.Style.default) { [weak self] (action) in + let okAction = UIAlertAction(title: CommonString.Word.Ok, style: UIAlertAction.Style.default) { _ in if let newGroupName = textField.text, !newGroupName.isEmpty { - self?.setGroupNameCustom(to: newGroupName) + ObvMessengerInternalNotification.userWantsToSetCustomNameOfJoinedGroupV1(ownedCryptoId: ownedCryptoId, groupId: groupId, groupNameCustom: newGroupName) + .postOnDispatchQueue() } } alert.addAction(removeNickname) @@ -633,33 +750,6 @@ extension SingleGroupViewController { } - private func setGroupNameCustom(to groupNameCustom: String) { - guard obvContactGroup.groupType == .joined else { return } - ObvStack.shared.performBackgroundTask { [weak self] (context) in - guard let _self = self else { return } - do { - guard let writablePersistedContactGroupJoined = try PersistedContactGroupJoined.get(objectID: _self.persistedContactGroup.objectID, within: context) as? PersistedContactGroupJoined else { return } - try writablePersistedContactGroupJoined.setGroupNameCustom(to: groupNameCustom) - try context.save(logOnFailure: _self.log) - } catch { - os_log("Could not change group name", log: _self.log, type: .error) - } - } - } - - private func removeGroupNameCustom() { - guard obvContactGroup.groupType == .joined else { return } - ObvStack.shared.performBackgroundTask { [weak self] (context) in - guard let _self = self else { return } - do { - guard let writablePersistedContactGroupJoined = try PersistedContactGroupJoined.get(objectID: _self.persistedContactGroup.objectID, within: context) as? PersistedContactGroupJoined else { return } - try writablePersistedContactGroupJoined.removeGroupNameCustom() - try context.save(logOnFailure: _self.log) - } catch { - os_log("Could not change group name", log: _self.log, type: .error) - } - } - } } @@ -740,10 +830,8 @@ extension SingleGroupViewController { @objc func deleteGroupButtonTapped() { guard obvContactGroup.groupType == .owned else { return } - let NotificationType = MessengerInternalNotification.UserWantsToDeleteOwnedContactGroup.self - let userInfo = [NotificationType.Key.ownedCryptoId: obvContactGroup.ownedIdentity.cryptoId, - NotificationType.Key.groupUid: obvContactGroup.groupUid] as [String: Any] - NotificationCenter.default.post(name: NotificationType.name, object: nil, userInfo: userInfo) + ObvMessengerInternalNotification.userWantsToDeleteOwnedContactGroup(ownedCryptoId: obvContactGroup.ownedIdentity.cryptoId, groupUid: obvContactGroup.groupUid) + .postOnDispatchQueue() } @objc func leaveGroupButtonTapped() { @@ -782,13 +870,19 @@ extension SingleGroupViewController { extension SingleGroupViewController { @objc func acceptPublishedCardButtonTapped() { + guard let obvContactGroup else { return } guard obvContactGroup.groupType == .joined else { return } - do { - try obvEngine.trustPublishedDetailsOfJoinedContactGroup(ownedCryptoId: obvContactGroup.ownedIdentity.cryptoId, - groupUid: obvContactGroup.groupUid, - groupOwner: obvContactGroup.groupOwner.cryptoId) - } catch { - os_log("Could not accept published details of contact group joined", log: log, type: .error) + let obvEngine = self.obvEngine + let log = self.log + Task.detached { + do { + try await obvEngine.trustPublishedDetailsOfJoinedContactGroup( + ownedCryptoId: obvContactGroup.ownedIdentity.cryptoId, + groupUid: obvContactGroup.groupUid, + groupOwner: obvContactGroup.groupOwner.cryptoId) + } catch { + os_log("Could not accept published details of contact group joined: %{public}@", log: log, type: .error, error.localizedDescription) + } } } @@ -993,4 +1087,22 @@ extension SingleGroupViewController { } + + // MARK: - PersonalNoteEditorViewActionsDelegate + + func userWantsToDismissPersonalNoteEditorView() async { + guard presentedViewController is PersonalNoteEditorHostingController else { return } + presentedViewController?.dismiss(animated: true) + } + + + @MainActor + func userWantsToUpdatePersonalNote(with newText: String?) async { + guard let ownedCryptoId = persistedContactGroup.ownedIdentity?.cryptoId else { return } + guard let groupId = try? persistedContactGroup.getGroupId() else { return } + ObvMessengerInternalNotification.userWantsToUpdatePersonalNoteOnGroupV1(ownedCryptoId: ownedCryptoId, groupId: groupId, newText: newText) + .postOnDispatchQueue() + presentedViewController?.dismiss(animated: true) + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroup/SingleGroupViewController.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroup/SingleGroupViewController.xib index 2bdb17c7..aa80b721 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroup/SingleGroupViewController.xib +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroup/SingleGroupViewController.xib @@ -1,9 +1,9 @@ - + - + @@ -35,6 +35,7 @@ + @@ -57,7 +58,7 @@ - + @@ -97,8 +98,15 @@ - + + + + + + + + @@ -130,19 +138,19 @@ - + - + - + - + @@ -200,7 +208,7 @@ - + @@ -258,7 +266,7 @@ - + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroupV2/SingleGroupV2ViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroupV2/SingleGroupV2ViewController.swift index 02331c72..c47cf86f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroupV2/SingleGroupV2ViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Groups/SingleGroupV2/SingleGroupV2ViewController.swift @@ -16,8 +16,6 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - - import os.log import CoreData @@ -27,16 +25,18 @@ import ObvTypes import ObvUI import SwiftUI import ObvUICoreData +import ObvDesignSystem protocol SingleGroupV2ViewControllerDelegate: AnyObject { func userWantsToDisplay(persistedContact: PersistedObvContactIdentity, within: UINavigationController?) func userWantsToDisplay(persistedDiscussion discussion: PersistedDiscussion) func userWantsToCloneGroup(displayedContactGroupObjectID: TypeSafeManagedObjectID) + func userWantsToInviteContactToOneToOne(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set) async throws } -final class SingleGroupV2ViewController: UIHostingController, SingleGroupV2ViewDelegate, ObvErrorMaker { +final class SingleGroupV2ViewController: UIHostingController, SingleGroupV2ViewDelegate, ObvErrorMaker, PersonalNoteEditorViewActionsDelegate, EditNicknameAndCustomPictureViewControllerDelegate { let persistedGroupV2ObjectID: TypeSafeManagedObjectID let currentOwnedCryptoId: ObvCryptoId @@ -91,16 +91,72 @@ final class SingleGroupV2ViewController: UIHostingController, super.viewDidLoad() title = scratchGroup.displayName - let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 18.0, weight: .bold) - let image = UIImage(systemIcon: .squareAndPencil, withConfiguration: symbolConfiguration) - let buttonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(editGroupCustomNameAndCustomPhotoButtonItemTapped)) - buttonItem.tintColor = AppTheme.shared.colorScheme.olvidLight - - navigationItem.rightBarButtonItem = buttonItem + addRightBarButtonMenu() } + private func addRightBarButtonMenu() { + + let actionEditNote = UIAction( + title: NSLocalizedString("EDIT_PERSONAL_NOTE", comment: ""), + image: UIImage(systemIcon: .pencil(.none)), + handler: userWantsToShowPersonalNoteEditor) + + let actionEditCustomDetails = UIAction( + title: NSLocalizedString("EDIT_NICKNAME_AND_CUSTOM_PHOTO", comment: ""), + image: UIImage(systemIcon: .camera(.none)), + handler: userWantsToEditPersonalGroupDetails) + + let menu = UIMenu(children: [actionEditNote, actionEditCustomDetails]) + + let barButtonItem = UIBarButtonItem(image: UIImage(systemIcon: .ellipsisCircle), menu: menu) + + navigationItem.rightBarButtonItems = [barButtonItem] + } + + + private func userWantsToShowPersonalNoteEditor(_ action: UIAction) { + let personalNote = referenceGroup.personalNote + let viewControllerToPresent = PersonalNoteEditorHostingController(model: .init(initialText: personalNote), actions: self) + if let sheet = viewControllerToPresent.sheetPresentationController { + sheet.detents = [.medium()] + sheet.prefersScrollingExpandsWhenScrolledToEdge = false + sheet.prefersEdgeAttachedInCompactHeight = true + sheet.widthFollowsPreferredContentSizeWhenEdgeAttached = true + sheet.preferredCornerRadius = 16.0 + } + present(viewControllerToPresent, animated: true, completion: nil) + } + + + private func userWantsToEditPersonalGroupDetails(_ action: UIAction) { + assert(Thread.isMainThread) + let groupV2Identifier = scratchGroup.groupIdentifier + let defaultPhoto: UIImage? + if let url = scratchGroup.trustedPhotoURL { + defaultPhoto = UIImage(contentsOfFile: url.path) + } else { + defaultPhoto = nil + } + let currentCustomPhoto: UIImage? + if let url = scratchGroup.customPhotoURL { + currentCustomPhoto = UIImage(contentsOfFile: url.path) + } else { + currentCustomPhoto = nil + } + let currentNickname = scratchGroup.customName ?? "" + let vc = EditNicknameAndCustomPictureViewController( + model: .init(identifier: .groupV2(groupV2Identifier: groupV2Identifier), + currentInitials: "", // No initials needed for groups + defaultPhoto: defaultPhoto, + currentCustomPhoto: currentCustomPhoto, + currentNickname: currentNickname), + delegate: self) + present(vc, animated: true) + } + + override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) ObvMessengerInternalNotification.userHasSeenPublishedDetailsOfGroupV2(groupObjectID: persistedGroupV2ObjectID) @@ -124,7 +180,7 @@ final class SingleGroupV2ViewController: UIHostingController, self?.referenceViewContext.mergeChanges(fromContextDidSave: notification) } }, - ObvMessengerCoreDataNotification.observePersistedGroupV2UpdateIsFinished(queue: OperationQueue.main) { [weak self] objectID in + ObvMessengerCoreDataNotification.observePersistedGroupV2UpdateIsFinished(queue: OperationQueue.main) { [weak self] objectID, _, _ in guard let _self = self else { return } guard objectID == _self.scratchGroup.typedObjectID else { return } // At the end of an update of the group in database, we rollback all changes we made. @@ -145,16 +201,6 @@ final class SingleGroupV2ViewController: UIHostingController, } - @objc func editGroupCustomNameAndCustomPhotoButtonItemTapped() { - guard let ownedCryptoId = try? scratchGroup.ownCryptoId else { assertionFailure(); return } - let ownedGroupEditionFlowVC = GroupEditionFlowViewController( - ownedCryptoId: ownedCryptoId, - editionType: .editGroupV2CustomNameAndCustomPhoto(groupIdentifier: scratchGroup.groupIdentifier), - obvEngine: obvEngine) - present(ownedGroupEditionFlowVC, animated: true) - } - - @MainActor required dynamic init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } @@ -200,6 +246,9 @@ final class SingleGroupV2ViewController: UIHostingController, func userWantsToCloneThisGroup() { delegate?.userWantsToCloneThisGroup() } + func userWantsToInviteAllMembersWithChannelToOneToOne() async throws { + try await delegate?.userWantsToInviteAllMembersWithChannelToOneToOne() + } } @@ -269,8 +318,10 @@ final class SingleGroupV2ViewController: UIHostingController, assertionFailure() return } - let contactIDs = group.contactsAmongNonPendingOtherMembers.filter({ $0.isActive }).map({ $0.typedObjectID }) - ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(contactIDs: contactIDs, groupId: .groupV2(persistedGroupV2ObjectID)) + guard let ownedCryptoId = try? group.ownCryptoId else { return } + let contactCryptoIds = group.contactsAmongNonPendingOtherMembers.filter({ $0.isActive }).map({ $0.cryptoId }) + let groupV2Identifier = group.groupIdentifier + ObvMessengerInternalNotification.userWantsToSelectAndCallContacts(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set(contactCryptoIds), groupId: .groupV2(groupV2Identifier: groupV2Identifier)) .postOnDispatchQueue() } catch { assertionFailure(error.localizedDescription) @@ -278,6 +329,30 @@ final class SingleGroupV2ViewController: UIHostingController, } + func userWantsToInviteAllMembersWithChannelToOneToOne() async throws { + let persistedGroupV2ObjectID = self.persistedGroupV2ObjectID + let currentOwnedCryptoId = self.currentOwnedCryptoId + let contactCryptoIds: [ObvCryptoId] = try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<[ObvCryptoId], Error>) in + ObvStack.shared.performBackgroundTask { context in + do { + guard let group = try PersistedGroupV2.get(objectID: persistedGroupV2ObjectID, within: context) else { + throw Self.makeError(message: "Could not find group") + } + guard try group.ownCryptoId == currentOwnedCryptoId else { + throw Self.makeError(message: "Unexpected owned identity") + } + let contactCryptoIds = group.otherMembers + .compactMap { $0.contact?.cryptoId } + continuation.resume(returning: contactCryptoIds) + } catch { + continuation.resume(throwing: error) + } + } + } + try await delegate?.userWantsToInviteContactToOneToOne(ownedCryptoId: currentOwnedCryptoId, contactCryptoIds: Set(contactCryptoIds)) + } + + @MainActor func userWantsToPublishAllModifications() { assert(Thread.isMainThread) @@ -396,19 +471,64 @@ final class SingleGroupV2ViewController: UIHostingController, scratchGroup.removeUpdateInProgress() navigationItem.rightBarButtonItem?.isEnabled = true } + + // MARK: - PersonalNoteEditorViewActionsDelegate + + func userWantsToDismissPersonalNoteEditorView() async { + guard presentedViewController is PersonalNoteEditorHostingController else { return } + presentedViewController?.dismiss(animated: true) + } + + + @MainActor + func userWantsToUpdatePersonalNote(with newText: String?) async { + ObvMessengerInternalNotification.userWantsToUpdatePersonalNoteOnGroupV2(ownedCryptoId: currentOwnedCryptoId, groupIdentifier: referenceGroup.groupIdentifier, newText: newText) + .postOnDispatchQueue() + presentedViewController?.dismiss(animated: true) + } + + + // MARK: - EditNicknameAndCustomPictureViewControllerDelegate + + func userWantsToSaveNicknameAndCustomPicture(controller: EditNicknameAndCustomPictureViewController, identifier: EditNicknameAndCustomPictureView.Model.IdentifierKind, nickname: String, customPhoto: UIImage?) async { + let ownedCryptoId: ObvCryptoId + let groupV2Identifier: GroupV2Identifier + switch identifier { + case .contact: + assertionFailure("The controller is expected to be configured with an identifier corresponding to the group shown by this view controller") + return + case .groupV2(let _groupV2Identifier): + guard scratchGroup.groupIdentifier == _groupV2Identifier else { assertionFailure(); return } + guard let _ownedCryptoId = try? scratchGroup.ownCryptoId else { assertionFailure(); return } + groupV2Identifier = _groupV2Identifier + ownedCryptoId = _ownedCryptoId + } + let sanitizedNickname = nickname.trimmingWhitespacesAndNewlines() + ObvMessengerInternalNotification.userWantsToUpdateCustomNameAndGroupV2Photo( + ownedCryptoId: ownedCryptoId, + groupIdentifier: groupV2Identifier, + customName: sanitizedNickname, + customPhoto: customPhoto) + .postOnDispatchQueue() + controller.dismiss(animated: true) + } + + + func userWantsToDismissEditNicknameAndCustomPictureViewController(controller: EditNicknameAndCustomPictureViewController) async { + controller.dismiss(animated: true) + } + } // MARK: - SingleGroupV2ViewDelegate -protocol SingleGroupV2ViewDelegate: AnyObject { +protocol SingleGroupV2ViewDelegate: AnyObject, GroupMembersViewActionsProtocol { func userWantsToAddGroupMembers() - func rollbackAllModifications() func userWantsToNavigateToPersistedObvContactIdentity(_ contact: PersistedObvContactIdentity) func userWantsToNavigateToDiscussion() func userWantsToCall() async - func userWantsToPublishAllModifications() func userWantsToReplaceTrustedDetailsByPublishedDetails() func userWantsToPerformReDownloadOfGroupV2() func userWantsToLeaveGroup() @@ -423,7 +543,7 @@ protocol SingleGroupV2ViewDelegate: AnyObject { struct SingleGroupV2View: View { @ObservedObject var group: PersistedGroupV2 - let delegate: SingleGroupV2ViewDelegate? + let delegate: SingleGroupV2ViewDelegate @State private var presentedAlertType = AlertType.cannotLeaveGroupAsWeAreTheOnlyAdmin @State private var isAlertPresented = false @@ -441,6 +561,77 @@ struct SingleGroupV2View: View { case confirmDisbandGroup } + private var textViewModelForHeaderOrTrustedDetails: TextView.Model { + .init(titlePart1: group.displayName, + titlePart2: nil, + subtitle: group.displayedDescription, + subsubtitle: nil) + } + + private var profilePictureViewModelContentForHeaderOrTrustedDetails: ProfilePictureView.Model.Content { + .init(text: nil, + icon: .person3Fill, + profilePicture: group.circledInitialsConfiguration.photo, + showGreenShield: group.keycloakManaged, + showRedShield: false) + } + + private var circleAndTitlesViewModelContentForHeaderOrTrustedDetails: CircleAndTitlesView.Model.Content { + .init(textViewModel: textViewModelForHeaderOrTrustedDetails, + profilePictureViewModelContent: profilePictureViewModelContentForHeaderOrTrustedDetails) + } + + private var initialCircleViewModelColorsForHeaderOrTrustedDetails: InitialCircleView.Model.Colors { + .init(background: group.circledInitialsConfiguration.backgroundColor(appTheme: AppTheme.shared), + foreground: group.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared)) + } + + private var circleAndTitlesViewModelForHeader: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContentForHeaderOrTrustedDetails, + colors: initialCircleViewModelColorsForHeaderOrTrustedDetails, + displayMode: .header, + editionMode: .none) + } + + private var textViewModelForPublishedDetails: TextView.Model { + .init(titlePart1: group.displayNamePublished, + titlePart2: nil, + subtitle: group.displayedDescriptionPublished, + subsubtitle: nil) + } + + private var profilePictureViewModelContentForPublishedDetails: ProfilePictureView.Model.Content { + .init(text: nil, + icon: .person3Fill, + profilePicture: group.circledInitialsConfigurationPublished.photo, + showGreenShield: group.keycloakManaged, + showRedShield: false) + } + + private var circleAndTitlesViewModelContentForPublishedDetails: CircleAndTitlesView.Model.Content { + .init(textViewModel: textViewModelForPublishedDetails, + profilePictureViewModelContent: profilePictureViewModelContentForPublishedDetails) + } + + private var initialCircleViewModelColorsForPublishedDetails: InitialCircleView.Model.Colors { + .init(background: group.circledInitialsConfigurationPublished.backgroundColor(appTheme: AppTheme.shared), + foreground: group.circledInitialsConfigurationPublished.foregroundColor(appTheme: AppTheme.shared)) + } + + private var circleAndTitlesViewModelForPublishedDetails: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContentForPublishedDetails, + colors: initialCircleViewModelColorsForPublishedDetails, + displayMode: .normal, + editionMode: .none) + } + + private var circleAndTitlesViewModelForTrustedDetails: CircleAndTitlesView.Model { + .init(content: circleAndTitlesViewModelContentForHeaderOrTrustedDetails, + colors: initialCircleViewModelColorsForHeaderOrTrustedDetails, + displayMode: .normal, + editionMode: .none) + } + var body: some View { ZStack { Color(AppTheme.shared.colorScheme.systemBackground) @@ -451,22 +642,8 @@ struct SingleGroupV2View: View { // Header - - CircleAndTitlesView(titlePart1: group.displayName, - titlePart2: nil, - subtitle: nil, - subsubtitle: nil, - circleBackgroundColor: group.circledInitialsConfiguration.backgroundColor(appTheme: AppTheme.shared), - circleTextColor: group.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared), - circledTextView: nil, - systemImage: .person3Fill, - profilePicture: group.circledInitialsConfiguration.photo, - alignment: .top, - showGreenShield: group.keycloakManaged, - showRedShield: false, - editionMode: .none, - displayMode: .header) - .padding(.top, 16) + CircleAndTitlesView(model: circleAndTitlesViewModelForHeader) + .padding(.top, 16) // Chat and call buttons @@ -475,23 +652,28 @@ struct SingleGroupV2View: View { OlvidButton(style: .standardWithBlueText, title: Text(CommonString.Word.Chat), systemIcon: .textBubbleFill, - action: { delegate?.userWantsToNavigateToDiscussion() }) + action: { delegate.userWantsToNavigateToDiscussion() }) OlvidButton(style: .standardWithBlueText, title: Text(CommonString.Word.Call), systemIcon: .phoneFill, - action: { Task { await delegate?.userWantsToCall() } }) + action: { Task { await delegate.userWantsToCall() } }) } .padding(.top, 16) + // Personal note viewer + + if let personalNote = group.personalNote, !personalNote.isEmpty { + PersonalNoteView(model: group) + .padding(.top, 16) + } + // View shown when an update is in progress if group.updateInProgress { ObvCardView(padding: 0) { HStack(alignment: .top, spacing: 8) { - if #available(iOS 14, *) { - ProgressView() - .progressViewStyle(.circular) - } + ProgressView() + .progressViewStyle(.circular) VStack(alignment: .leading, spacing: 6) { Text("GROUP_UPDATE_IN_PROGRESS_EXPLANATION_TITLE") .font(.system(.headline, design: .rounded)) @@ -515,26 +697,14 @@ struct SingleGroupV2View: View { VStack(alignment: .leading, spacing: 0) { TopLeftTextForCardView(text: Text("New")) VStack(alignment: .leading, spacing: 0) { - CircleAndTitlesView(titlePart1: group.displayNamePublished, - titlePart2: nil, - subtitle: group.displayedDescriptionPublished, - subsubtitle: nil, - circleBackgroundColor: group.circledInitialsConfigurationPublished.backgroundColor(appTheme: AppTheme.shared), - circleTextColor: group.circledInitialsConfigurationPublished.foregroundColor(appTheme: AppTheme.shared), - circledTextView: nil, - systemImage: .person3Fill, - profilePicture: group.circledInitialsConfigurationPublished.photo, - showGreenShield: group.keycloakManaged, - showRedShield: false, - editionMode: .none, - displayMode: .normal) + CircleAndTitlesView(model: circleAndTitlesViewModelForPublishedDetails) HStack { Spacer() } Text("GROUP_V2_PUBLISHED_DETAILS_EXPLANATION_\(UIDevice.current.name)") .font(.callout) .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) .padding(.top, 16) OlvidButton(olvidButtonAction: OlvidButtonAction(action: { - delegate?.userWantsToReplaceTrustedDetailsByPublishedDetails() + delegate.userWantsToReplaceTrustedDetailsByPublishedDetails() }, title: Text("UPDATE_DETAILS"), systemIcon: .checkmarkCircleFill)) .padding(.top, 16) } @@ -550,19 +720,7 @@ struct SingleGroupV2View: View { VStack(alignment: .leading, spacing: 0) { TopLeftTextForCardView(text: Text("ON_MY_DEVICE_\(UIDevice.current.name)")) VStack(alignment: .leading, spacing: 0) { - CircleAndTitlesView(titlePart1: group.displayName, - titlePart2: nil, - subtitle: group.displayedDescription, - subsubtitle: nil, - circleBackgroundColor: group.circledInitialsConfiguration.backgroundColor(appTheme: AppTheme.shared), - circleTextColor: group.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared), - circledTextView: nil, - systemImage: .person3Fill, - profilePicture: group.circledInitialsConfiguration.photo, - showGreenShield: group.keycloakManaged, - showRedShield: false, - editionMode: .none, - displayMode: .normal) + CircleAndTitlesView(model: circleAndTitlesViewModelForTrustedDetails) HStack { Spacer() } } .padding() @@ -576,8 +734,7 @@ struct SingleGroupV2View: View { otherMembers: Array(group.otherMembersSorted), delegate: delegate, updateInProgress: group.updateInProgress, - rollbackAllModifications: delegate?.rollbackAllModifications, - publishAllModifications: delegate?.userWantsToPublishAllModifications) + actions: delegate) .padding(.bottom, 16) Spacer() @@ -586,11 +743,11 @@ struct SingleGroupV2View: View { // Button for manual resync (always enabled) - OlvidButton(style: .standard, title: Text("MANUAL_RESYNC_OF_GROUP_V2"), systemIcon: .arrowTriangle2CirclepathCircleFill) { delegate?.userWantsToPerformReDownloadOfGroupV2() } - + OlvidButton(style: .standardWithBlueText, title: Text("MANUAL_RESYNC_OF_GROUP_V2"), systemIcon: .arrowTriangle2CirclepathCircleFill) { delegate.userWantsToPerformReDownloadOfGroupV2() } + // Button for cloning the group - OlvidButton(style: .standard, title: Text("CLONE_THIS_GROUP"), systemIcon: .docOnDoc) { delegate?.userWantsToCloneThisGroup() } + OlvidButton(style: .standardWithBlueText, title: Text("CLONE_THIS_GROUP"), systemIcon: .docOnDoc) { delegate.userWantsToCloneThisGroup() } .disabled(group.updateInProgress) // Button for leaving the group @@ -646,7 +803,7 @@ struct SingleGroupV2View: View { message: Text("SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_MESSAGE"), buttons: [ .destructive(Text("SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_BUTTON_TITLE")) { - delegate?.userWantsToLeaveGroup() + delegate.userWantsToLeaveGroup() }, .cancel() ]) @@ -655,7 +812,7 @@ struct SingleGroupV2View: View { message: Text("SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_MESSAGE"), buttons: [ .destructive(Text("SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_BUTTON_TITLE")) { - delegate?.userWantsToPerformDisbandOfGroupV2() + delegate.userWantsToPerformDisbandOfGroupV2() }, .cancel() ]) @@ -666,134 +823,207 @@ struct SingleGroupV2View: View { } + + + +// MARK: - GroupMembersView + +protocol GroupMembersViewActionsProtocol { + + func rollbackAllModifications() + func userWantsToPublishAllModifications() + func userWantsToInviteAllMembersWithChannelToOneToOne() async throws + +} + + fileprivate struct GroupMembersView: View { let ownedIdentityIsAdmin: Bool let otherMembers: [PersistedGroupV2Member] let delegate: SingleGroupV2ViewDelegate? let updateInProgress: Bool - let rollbackAllModifications: (() -> Void)? // Expected to be non nil - let publishAllModifications: (() -> Void)? // Expected to be non nil + let actions: GroupMembersViewActionsProtocol // Expected to be non nil +// let rollbackAllModifications: (() -> Void)? // Expected to be non nil +// let publishAllModifications: (() -> Void)? // Expected to be non nil @State private var editMode = false @State private var tappedContact: PersistedObvContactIdentity? = nil + @State private var isInviteAllAlertPresented = false + @State private var hudCategory: HUDView.Category? + + private func userWantsToInviteAllGroupMembersToOneToOne() { + withAnimation { + hudCategory = .progress + } + Task { + do { + try await actions.userWantsToInviteAllMembersWithChannelToOneToOne() + await dismissHUD(success: true) + } catch { + await dismissHUD(success: false) + } + } + } + + + @MainActor + private func dismissHUD(success: Bool) async { + withAnimation { hudCategory = success ? .checkmark : .xmark } + try? await Task.sleep(for: 2) + withAnimation { hudCategory = nil } + } + + var body: some View { - HStack { - Text("OTHER_GROUP_MEMBERS") - .font(.system(.body, design: .rounded)) - .fontWeight(.bold) - Spacer() - } - .padding(.top, 16) - - ObvCardView(padding: 0) { - VStack(alignment: .leading, spacing: 0) { - - if ownedIdentityIsAdmin { - - if !editMode { - - HStack { - - OlvidButton(olvidButtonAction: OlvidButtonAction( - action: { withAnimation { editMode.toggle() } }, - title: Text("EDIT_GROUP_MEMBERS_AS_ADMINISTRATOR_BUTTON_TITLE"), - systemIcon: .person2Circle)) - .disabled(updateInProgress) - - OlvidButton(olvidButtonAction: OlvidButtonAction( - action: { delegate?.userWantsToEditDetailsOfGroupAsAdmin() }, - title: Text("EDIT_GROUP_DETAILS_AS_ADMINISTRATOR_BUTTON_TITLE"), - systemIcon: .pencil(.circle))) - .disabled(updateInProgress) - - } - - } else { - - VStack { - OlvidButton(olvidButtonAction: OlvidButtonAction( - action: { delegate?.userWantsToAddGroupMembers() }, - title: Text("ADD_GROUP_MEMBERS"), - systemIcon: .personCropCircleBadgePlus)) - HStack { - OlvidButton(style: .red, - title: Text(CommonString.Word.Cancel), - systemIcon: .xmarkCircle, - action: { withAnimation { rollbackAllModifications?(); editMode.toggle() } }) - .transition(.asymmetric(insertion: .move(edge: .leading), removal: .scale)) - OlvidButton(style: .green, - title: Text("PUBLISH"), - systemIcon: .checkmarkCircle, - action: { withAnimation { publishAllModifications?(); editMode.toggle() } }) - .disabled(updateInProgress) - .transition(.asymmetric(insertion: .scale, removal: .scale)) - } - } - - } - - Divider() - .padding(.vertical, 16) - + ZStack { + + VStack { + + HStack { + Text("OTHER_GROUP_MEMBERS") + .font(.system(.body, design: .rounded)) + .fontWeight(.bold) + Spacer() } + .padding(.top, 16) - if otherMembers.isEmpty { - - if ownedIdentityIsAdmin { - - HStack { - Text("ADD_MEMBER_BY_TAPPING_EDIT_GROUP_MEMBERS_BUTTON") - .font(.callout) - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - Spacer() - } - - } else { + ObvCardView(padding: 0) { + VStack(alignment: .leading, spacing: 0) { - HStack { - Text("NO_OTHER_MEMBER_FOR_NOW") - .font(.callout) - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - Spacer() + if ownedIdentityIsAdmin { + + if !editMode { + + HStack { + + OlvidButton(olvidButtonAction: OlvidButtonAction( + action: { withAnimation { editMode.toggle() } }, + title: Text("EDIT_GROUP_MEMBERS_AS_ADMINISTRATOR_BUTTON_TITLE"), + systemIcon: .person2Circle)) + .disabled(updateInProgress) + + OlvidButton(olvidButtonAction: OlvidButtonAction( + action: { delegate?.userWantsToEditDetailsOfGroupAsAdmin() }, + title: Text("EDIT_GROUP_DETAILS_AS_ADMINISTRATOR_BUTTON_TITLE"), + systemIcon: .pencil(.circle))) + .disabled(updateInProgress) + + } + + } else { + + VStack { + OlvidButton(olvidButtonAction: OlvidButtonAction( + action: { delegate?.userWantsToAddGroupMembers() }, + title: Text("ADD_GROUP_MEMBERS"), + systemIcon: .personCropCircleBadgePlus)) + HStack { + OlvidButton(style: .red, + title: Text(CommonString.Word.Cancel), + systemIcon: .xmarkCircle, + action: { withAnimation { actions.rollbackAllModifications(); editMode.toggle() } }) + .transition(.asymmetric(insertion: .move(edge: .leading), removal: .scale)) + OlvidButton(style: .green, + title: Text("PUBLISH"), + systemIcon: .checkmarkCircle, + action: { withAnimation { actions.userWantsToPublishAllModifications(); editMode.toggle() } }) + .disabled(updateInProgress) + .transition(.asymmetric(insertion: .scale, removal: .scale)) + } + } + + } + + Divider() + .padding(.vertical, 16) + } - } - - } else { - - ForEach(otherMembers) { otherMember in - SingleGroupMemberView(otherMember: otherMember, editMode: editMode, selected: tappedContact != nil && tappedContact == otherMember.contact) - .onTapGesture { - guard !editMode else { return } - guard let contact = otherMember.contact else { return } - withAnimation { - tappedContact = contact + if otherMembers.isEmpty { + + if ownedIdentityIsAdmin { + + HStack { + Text("ADD_MEMBER_BY_TAPPING_EDIT_GROUP_MEMBERS_BUTTON") + .font(.callout) + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + Spacer() } - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { - delegate?.userWantsToNavigateToPersistedObvContactIdentity(contact) + + } else { + + HStack { + Text("NO_OTHER_MEMBER_FOR_NOW") + .font(.callout) + .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) + Spacer() } + } - .onAppear { - withAnimation { - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { - tappedContact = nil + + } else { + + ForEach(otherMembers) { otherMember in + SingleGroupMemberView(otherMember: otherMember, editMode: editMode, selected: tappedContact != nil && tappedContact == otherMember.contact) + .onTapGesture { + guard !editMode else { return } + guard let contact = otherMember.contact else { return } + withAnimation { + tappedContact = contact + } + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { + delegate?.userWantsToNavigateToPersistedObvContactIdentity(contact) + } + } + .onAppear { + withAnimation { + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) { + tappedContact = nil + } + } } + if otherMember != otherMembers.last { + Divider() + .padding(.vertical, 16) + .padding(.leading, 76) } } - if otherMember != otherMembers.last { - Divider() - .padding(.vertical, 16) - .padding(.leading, 76) + + if !editMode { + OlvidButton(style: .blue, title: Text("INVITE_ALL_GROUP_MEMBERS_BUTTON_TITLE"), systemIcon: .personCropCircleBadgePlus) { + isInviteAllAlertPresented.toggle() + } + .padding(.top) + .confirmationDialog( + "INVITE_ALL_GROUP_MEMBERS_BUTTON_TITLE", + isPresented: $isInviteAllAlertPresented + ) { + Button(action: userWantsToInviteAllGroupMembersToOneToOne ) { + Label("INVITE_ALL_GROUP_MEMBERS_BUTTON_TITLE", systemIcon: .personCropCircleBadgePlus) + } + Button("Cancel", role: .cancel, action: {}) + } message: { + Text("INVITE_ALL_GROUP_MEMBERS_EXPLANATION") + } + + } + } - } - + + }.padding() } - - }.padding() + + } // End of VStack + + if let hudCategory { + HUDView(category: hudCategory) + } + } + } } @@ -818,15 +1048,15 @@ struct SingleGroupMemberView: View { } } - private var circledTextView: Text? { - let string = otherMember.displayedFirstName ?? otherMember.displayedCustomDisplayNameOrLastName - if let char = string?.first { - return Text(String(char)) - } else { - return nil - } + + private var circleAndTitlesViewModel: CircleAndTitlesView.Model { + .init(content: otherMember.circleAndTitlesViewModelContent, + colors: otherMember.initialCircleViewModelColors, + displayMode: .normal, + editionMode: .none) } + var body: some View { HStack(alignment: .center, spacing: 0) { OlvidButtonSquare(style: .redOnTransparentBackground, systemIcon: .trash, action: { @@ -836,19 +1066,7 @@ struct SingleGroupMemberView: View { }) .opacity(editMode ? 1.0 : 0.0) .frame(width: editMode ? nil : 0.0, height: editMode ? nil : 0.0) - CircleAndTitlesView(titlePart1: otherMember.displayedFirstName, - titlePart2: otherMember.displayedCustomDisplayNameOrLastName, - subtitle: otherMember.displayedPosition, - subsubtitle: otherMember.displayedCompany, - circleBackgroundColor: otherMember.contact?.circledInitialsConfiguration.backgroundColor(appTheme: AppTheme.shared), - circleTextColor: otherMember.contact?.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared), - circledTextView: circledTextView, - systemImage: .person, - profilePicture: otherMember.displayedProfilePicture, - showGreenShield: otherMember.isKeycloakManaged, - showRedShield: false, - editionMode: .none, - displayMode: .normal) + CircleAndTitlesView(model: circleAndTitlesViewModel) Spacer() VStack(alignment: .center, spacing: 0) { Toggle("", isOn: Binding( @@ -866,6 +1084,9 @@ struct SingleGroupMemberView: View { .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) } .frame(width: 60) // Heuristic, width of "Not admin" + if let persistedContact = otherMember.contact { + SpinnerViewForContactCell(model: persistedContact) + } if !editMode { ObvChevron(selected: selected) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/AllInvitationsHostingController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/AllInvitationsHostingController.swift new file mode 100644 index 00000000..e078fdbc --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/AllInvitationsHostingController.swift @@ -0,0 +1,89 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import ObvTypes +import ObvUICoreData + + +protocol AllInvitationsHostingControllerDelegate: AnyObject { + func userWantsToRespondToDialog(controller: AllInvitationsHostingController, obvDialog: ObvDialog) async throws + func userWantsToAbortProtocol(controller: AllInvitationsHostingController, obvDialog: ObvTypes.ObvDialog) async throws + func userWantsToDeleteDialog(controller: AllInvitationsHostingController, obvDialog: ObvTypes.ObvDialog) async throws + func userWantsToDiscussWithContact(controller: AllInvitationsHostingController, ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async throws +} + + +final class AllInvitationsHostingController: UIHostingController>, AllInvitationsViewActionsProtocol { + + private weak var delegate: AllInvitationsHostingControllerDelegate? + + init(ownedIdentity: PersistedObvOwnedIdentity, delegate: AllInvitationsHostingControllerDelegate) { + let actions = AllInvitationsViewActions() + let view = AllInvitationsView(actions: actions, model: ownedIdentity) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // AllInvitationsViewActionsProtocol + + func userWantsToRespondToDialog(_ obvDialog: ObvDialog) async throws { + try await delegate?.userWantsToRespondToDialog(controller: self, obvDialog: obvDialog) + } + + func userWantsToAbortProtocol(associatedTo obvDialog: ObvTypes.ObvDialog) async throws { + try await delegate?.userWantsToAbortProtocol(controller: self, obvDialog: obvDialog) + } + + func userWantsToDeleteDialog(_ obvDialog: ObvDialog) async throws { + try await delegate?.userWantsToDeleteDialog(controller: self, obvDialog: obvDialog) + } + + func userWantsToDiscussWithContact(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async throws { + try await delegate?.userWantsToDiscussWithContact(controller: self, ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) + } +} + + +private final class AllInvitationsViewActions: AllInvitationsViewActionsProtocol { + + weak var delegate: AllInvitationsViewActionsProtocol? + + func userWantsToRespondToDialog(_ obvDialog: ObvDialog) async throws { + try await delegate?.userWantsToRespondToDialog(obvDialog) + } + + func userWantsToAbortProtocol(associatedTo obvDialog: ObvTypes.ObvDialog) async throws { + try await delegate?.userWantsToAbortProtocol(associatedTo: obvDialog) + } + + func userWantsToDeleteDialog(_ obvDialog: ObvDialog) async throws { + try await delegate?.userWantsToDeleteDialog(obvDialog) + } + + func userWantsToDiscussWithContact(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async throws { + try await delegate?.userWantsToDiscussWithContact(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/AllInvitationsViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/AllInvitationsViewController.swift new file mode 100644 index 00000000..66cd810b --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/AllInvitationsViewController.swift @@ -0,0 +1,119 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import ObvUICoreData +import ObvTypes + + +protocol AllInvitationsViewControllerDelegate: AnyObject { + func userWantsToRespondToDialog(controller: AllInvitationsViewController, obvDialog: ObvDialog) async throws + func userWantsToAbortProtocol(controller: AllInvitationsViewController, obvDialog: ObvTypes.ObvDialog) async throws + func userWantsToDeleteDialog(controller: AllInvitationsViewController, obvDialog: ObvTypes.ObvDialog) async throws + func userWantsToDiscussWithContact(controller: AllInvitationsViewController, ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async throws +} + + +final class AllInvitationsViewController: ShowOwnedIdentityButtonUIViewController, ViewControllerWithEllipsisCircleRightBarButtonItem { + + weak var delegate: AllInvitationsViewControllerDelegate? + private var viewDidLoadWasCalled = false + + init(ownedCryptoId: ObvCryptoId) { + super.init(ownedCryptoId: ownedCryptoId, logCategory: "AllInvitationsViewController") + self.setTitle(CommonString.Word.Invitations) + } + + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + viewDidLoadWasCalled = true + // Set navigationItem.title instead of title: this prevents showing a title on the tabbar button item + navigationItem.title = CommonString.Word.Invitations + navigationItem.rightBarButtonItem = getConfiguredEllipsisCircleRightBarButtonItem() + addAndConfigureAllInvitationsHostingController() + definesPresentationContext = true + } + + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + ObvMessengerInternalNotification.allPersistedInvitationCanBeMarkedAsOld(ownedCryptoId: currentOwnedCryptoId) + .postOnDispatchQueue() + } + + // MARK: - Switching current owned identity + + @MainActor + override func switchCurrentOwnedCryptoId(to newOwnedCryptoId: ObvCryptoId) async { + await super.switchCurrentOwnedCryptoId(to: newOwnedCryptoId) + guard viewDidLoadWasCalled else { return } + for multipleContactsHostingViewController in children.compactMap({ $0 as? AllInvitationsHostingController }) { + multipleContactsHostingViewController.view.removeFromSuperview() + multipleContactsHostingViewController.willMove(toParent: nil) + multipleContactsHostingViewController.removeFromParent() + multipleContactsHostingViewController.didMove(toParent: nil) + } + addAndConfigureAllInvitationsHostingController() + } + + + /// Called the first time the view is loaded, and each time the user switches her owned identity. + private func addAndConfigureAllInvitationsHostingController() { + if let ownedIdentity = try? PersistedObvOwnedIdentity.get(cryptoId: currentOwnedCryptoId, within: ObvStack.shared.viewContext) { + let vc = AllInvitationsHostingController(ownedIdentity: ownedIdentity, delegate: self) + vc.willMove(toParent: self) + self.addChild(vc) + vc.didMove(toParent: self) + vc.view.translatesAutoresizingMaskIntoConstraints = false + self.view.insertSubview(vc.view, at: 0) + self.view.pinAllSidesToSides(of: vc.view) + } + } + +} + + +// MARK: - AllInvitationsHostingControllerDelegate + +extension AllInvitationsViewController: AllInvitationsHostingControllerDelegate { + + func userWantsToRespondToDialog(controller: AllInvitationsHostingController, obvDialog: ObvDialog) async throws { + try await delegate?.userWantsToRespondToDialog(controller: self, obvDialog: obvDialog) + } + + + func userWantsToAbortProtocol(controller: AllInvitationsHostingController, obvDialog: ObvDialog) async throws { + try await delegate?.userWantsToAbortProtocol(controller: self, obvDialog: obvDialog) + } + + + func userWantsToDeleteDialog(controller: AllInvitationsHostingController, obvDialog: ObvDialog) async throws { + try await delegate?.userWantsToDeleteDialog(controller: self, obvDialog: obvDialog) + } + + func userWantsToDiscussWithContact(controller: AllInvitationsHostingController, ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async throws { + try await delegate?.userWantsToDiscussWithContact(controller: self, ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/AcceptGroupInviteCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/AcceptGroupInviteCollectionViewCell.swift deleted file mode 100644 index a3e04fb5..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/AcceptGroupInviteCollectionViewCell.swift +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -class AcceptGroupInviteCollectionViewCell: ObvCardCollectionViewCell, InvitationCollectionCell, CellContainingHeaderView, CellContainingTwoButtonsView, CellContainingOneColumnView { - - static let nibName = "AcceptGroupInviteCollectionViewCell" - static let identifier = "AcceptGroupInviteCollectionViewCell" - - // Views - - @IBOutlet weak var placeholderView: UIView! - @IBOutlet weak var topPlaceholderView: UIView! - @IBOutlet weak var middlePlaceholderView: UIView! - @IBOutlet weak var bottomPlaceholderView: UIView! - - // Constraints - - private var widthConstraint: NSLayoutConstraint! - - // Subviews set in awakeFromNib - - var cellHeaderView: CellHeaderView! - var oneColumnView: OneColumnView! - var twoButtonsView: TwoButtonsView! - -} - - -// MARK: - awakeFromNib - -extension AcceptGroupInviteCollectionViewCell { - - override func awakeFromNib() { - super.awakeFromNib() - self.accessibilityIdentifier = "AcceptGroupInviteCollectionViewCell" - self.contentView.translatesAutoresizingMaskIntoConstraints = false - backgroundColor = AppTheme.shared.colorScheme.tertiarySystemBackground - self.widthConstraint = self.contentView.widthAnchor.constraint(equalToConstant: 50.0) - self.widthConstraint.isActive = true - configurePlaceholdersAttributes() - instantiateAndPlaceTheCellHeaderView() - instantiateAndPlaceTheTwoColumnsView() - instantiateAndPlaceTheTwoButtonsView() - } - - - private func configurePlaceholdersAttributes() { - placeholderView.backgroundColor = .clear - topPlaceholderView.backgroundColor = .clear - middlePlaceholderView.backgroundColor = .clear - bottomPlaceholderView.backgroundColor = .clear - } - - - private func instantiateAndPlaceTheCellHeaderView() { - cellHeaderView = (Bundle.main.loadNibNamed(CellHeaderView.nibName, owner: nil, options: nil)!.first as! CellHeaderView) - topPlaceholderView.addSubview(cellHeaderView) - topPlaceholderView.pinAllSidesToSides(of: cellHeaderView) - } - - - private func instantiateAndPlaceTheTwoColumnsView() { - oneColumnView = (Bundle.main.loadNibNamed(OneColumnView.nibName, owner: nil, options: nil)!.first as! OneColumnView) - middlePlaceholderView.addSubview(oneColumnView) - middlePlaceholderView.pinAllSidesToSides(of: oneColumnView) - } - - - private func instantiateAndPlaceTheTwoButtonsView() { - twoButtonsView = Bundle.main.loadNibNamed(TwoButtonsView.nibName, owner: nil, options: nil)!.first as! TwoButtonsView? - bottomPlaceholderView?.addSubview(twoButtonsView!) - bottomPlaceholderView?.pinAllSidesToSides(of: twoButtonsView!) - } - - override func prepareForReuse() { - super.prepareForReuse() - cellHeaderView.prepareForReuse() - unfreeze() - } - - func freeze() { - self.twoButtonsView.button1?.isEnabled = false - } - - func unfreeze() { - self.twoButtonsView.button1?.isEnabled = true - } - -} - - -// MARK: - Setting the width and accessing the size - -extension AcceptGroupInviteCollectionViewCell { - - func setWidth(to newWidth: CGFloat) { - widthConstraint.constant = newWidth - setNeedsLayout() - } - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - setNeedsLayout() - layoutIfNeeded() - let size = contentView.systemLayoutSizeFitting(layoutAttributes.size) - var newFrame = layoutAttributes.frame - newFrame.size = size - layoutAttributes.frame = newFrame - return layoutAttributes - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/AcceptGroupInviteCollectionViewCell.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/AcceptGroupInviteCollectionViewCell.xib deleted file mode 100644 index 7b1b1c0b..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/AcceptGroupInviteCollectionViewCell.xib +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/Base.lproj/HelpCardCollectionViewCell.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/Base.lproj/HelpCardCollectionViewCell.xib deleted file mode 100644 index fef17b3d..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/Base.lproj/HelpCardCollectionViewCell.xib +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/ButtonsCardCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/ButtonsCardCollectionViewCell.swift deleted file mode 100644 index cc73d0f2..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/ButtonsCardCollectionViewCell.swift +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -class ButtonsCardCollectionViewCell: ObvCardCollectionViewCell, InvitationCollectionCell, CellContainingHeaderView, CellContainingTwoButtonsView { - - static let nibName = "ButtonsCardCollectionViewCell" - static let identifier = "buttonsCardCollectionViewCellIdentifier" - - // Views - - @IBOutlet weak var placeholderView: UIView! - @IBOutlet weak var topPlaceholderView: UIView! - @IBOutlet weak var bottomPlaceholderView: UIView! - - // Constraints - - private var widthConstraint: NSLayoutConstraint! - - // Subviews set in awakeFromNib - - var cellHeaderView: CellHeaderView! - var twoButtonsView: TwoButtonsView! - -} - - -// MARK: - awakeFromNib - -extension ButtonsCardCollectionViewCell { - - override func awakeFromNib() { - super.awakeFromNib() - self.accessibilityIdentifier = "ButtonsCardCollectionViewCell" - self.contentView.translatesAutoresizingMaskIntoConstraints = false - backgroundColor = AppTheme.shared.colorScheme.tertiarySystemBackground - self.widthConstraint = self.contentView.widthAnchor.constraint(equalToConstant: 50.0) - self.widthConstraint.isActive = true - instantiateAndPlaceTheCellHeaderView() - instantiateAndPlaceTheTwoButtonsView() - } - - private func instantiateAndPlaceTheCellHeaderView() { - topPlaceholderView.backgroundColor = .clear - cellHeaderView = (Bundle.main.loadNibNamed(CellHeaderView.nibName, owner: nil, options: nil)!.first as! CellHeaderView) - topPlaceholderView.addSubview(cellHeaderView) - topPlaceholderView.pinAllSidesToSides(of: cellHeaderView) - } - - private func instantiateAndPlaceTheTwoButtonsView() { - bottomPlaceholderView?.backgroundColor = .clear - twoButtonsView = (Bundle.main.loadNibNamed(TwoButtonsView.nibName, owner: nil, options: nil)!.first as! TwoButtonsView) - bottomPlaceholderView.addSubview(twoButtonsView) - bottomPlaceholderView.pinAllSidesToSides(of: twoButtonsView) - } - - override func prepareForReuse() { - super.prepareForReuse() - cellHeaderView.prepareForReuse() - } - -} - -// MARK: - Setting the width and accessing the size - -extension ButtonsCardCollectionViewCell { - - func setWidth(to newWidth: CGFloat) { - widthConstraint.constant = newWidth - } - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - setNeedsLayout() - layoutIfNeeded() - let size = contentView.systemLayoutSizeFitting(layoutAttributes.size) - var newFrame = layoutAttributes.frame - newFrame.size = size - layoutAttributes.frame = newFrame - return layoutAttributes - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/ButtonsCardCollectionViewCell.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/ButtonsCardCollectionViewCell.xib deleted file mode 100644 index a7cf963f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/ButtonsCardCollectionViewCell.xib +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/HelpCardCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/HelpCardCollectionViewCell.swift deleted file mode 100644 index 1a6d6aa8..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/HelpCardCollectionViewCell.swift +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - - -class HelpCardCollectionViewCell: ObvCardCollectionViewCell, InvitationCollectionCell { - - static let nibName = "HelpCardCollectionViewCell" - static let identifier = "HelpCardCollectionViewCellIdentifier" - - private var widthConstraint: NSLayoutConstraint! - @IBOutlet weak var titleLabel: UILabel! - @IBOutlet weak var explanationLabel: UILabel! - -} - -// MARK: - awakeFromNib - -extension HelpCardCollectionViewCell { - - override func awakeFromNib() { - super.awakeFromNib() - self.contentView.translatesAutoresizingMaskIntoConstraints = false - backgroundColor = AppTheme.shared.colorScheme.tertiarySystemBackground - self.widthConstraint = self.contentView.widthAnchor.constraint(equalToConstant: 50.0) - self.widthConstraint.isActive = true - - titleLabel.textColor = AppTheme.shared.colorScheme.label - explanationLabel.textColor = AppTheme.shared.colorScheme.secondaryLabel - } -} - -// MARK: - Configuring the cell - -extension HelpCardCollectionViewCell { - - func setWidth(to newWidth: CGFloat) { - widthConstraint.constant = newWidth - } - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - setNeedsLayout() - layoutIfNeeded() - let size = contentView.systemLayoutSizeFitting(layoutAttributes.size) - var newFrame = layoutAttributes.frame - newFrame.size = size - layoutAttributes.frame = newFrame - return layoutAttributes - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/MultipleButtonsCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/MultipleButtonsCollectionViewCell.swift deleted file mode 100644 index 5cca0bcc..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/MultipleButtonsCollectionViewCell.swift +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -class MultipleButtonsCollectionViewCell: ObvCardCollectionViewCell, InvitationCollectionCell, CellContainingHeaderView { - - static let nibName = "MultipleButtonsCollectionViewCell" - static let identifier = "MultipleButtonsCollectionViewCell" - - // Views - - @IBOutlet weak var placeholderView: UIView! - @IBOutlet weak var topPlaceholderView: UIView! - @IBOutlet weak var bottomPlaceholderView: UIView! - - // Constraints - - private var widthConstraint: NSLayoutConstraint! - - // Subviews set in awakeFromNib - - var cellHeaderView: CellHeaderView! - var buttonsStackView: UIStackView! - private var buttonAction = [UIButton: () -> Void]() - -} - - -// MARK: - awakeFromNib - -extension MultipleButtonsCollectionViewCell { - - override func awakeFromNib() { - super.awakeFromNib() - self.accessibilityIdentifier = "MultipleButtonsCollectionViewCell" - self.contentView.translatesAutoresizingMaskIntoConstraints = false - backgroundColor = AppTheme.shared.colorScheme.tertiarySystemBackground - self.widthConstraint = self.contentView.widthAnchor.constraint(equalToConstant: 50.0) - self.widthConstraint.isActive = true - instantiateAndPlaceTheCellHeaderView() - instantiateAndPlaceTheButtonsStackView() - } - - private func instantiateAndPlaceTheCellHeaderView() { - topPlaceholderView.backgroundColor = .clear - cellHeaderView = (Bundle.main.loadNibNamed(CellHeaderView.nibName, owner: nil, options: nil)!.first as! CellHeaderView) - topPlaceholderView.addSubview(cellHeaderView) - topPlaceholderView.pinAllSidesToSides(of: cellHeaderView) - } - - private func instantiateAndPlaceTheButtonsStackView() { - bottomPlaceholderView?.backgroundColor = .clear - self.buttonsStackView = UIStackView() - self.buttonsStackView.translatesAutoresizingMaskIntoConstraints = false - self.buttonsStackView.axis = .vertical - self.buttonsStackView.spacing = 16.0 - bottomPlaceholderView.addSubview(buttonsStackView) - let constraints = [bottomPlaceholderView.topAnchor.constraint(equalTo: buttonsStackView.topAnchor, constant: 0.0), - bottomPlaceholderView.trailingAnchor.constraint(equalTo: buttonsStackView.trailingAnchor, constant: 16.0), - bottomPlaceholderView.bottomAnchor.constraint(equalTo: buttonsStackView.bottomAnchor, constant: 16.0), - bottomPlaceholderView.leadingAnchor.constraint(equalTo: buttonsStackView.leadingAnchor, constant: -16.0)] - NSLayoutConstraint.activate(constraints) - } - - override func prepareForReuse() { - super.prepareForReuse() - cellHeaderView.prepareForReuse() - buttonAction.removeAll() - for view in buttonsStackView.arrangedSubviews { - buttonsStackView.removeArrangedSubview(view) - view.removeFromSuperview() - } - } - -} - - -// MARK: - Setting the width and accessing the size - -extension MultipleButtonsCollectionViewCell { - - func setWidth(to newWidth: CGFloat) { - widthConstraint.constant = newWidth - } - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - setNeedsLayout() - layoutIfNeeded() - let size = contentView.systemLayoutSizeFitting(layoutAttributes.size) - var newFrame = layoutAttributes.frame - newFrame.size = size - layoutAttributes.frame = newFrame - return layoutAttributes - } -} - - -// MARK: - Adding buttons - -extension MultipleButtonsCollectionViewCell { - - enum ButtonStyle { - case obvButton - case obvButtonBorderless - } - - func addButton(title: String, style: ButtonStyle, action: @escaping (() -> Void)) { - let button: ObvButton - switch style { - case .obvButton: - button = ObvButton() - case .obvButtonBorderless: - button = ObvButtonBorderless() - } - button.setTitle(title, for: .normal) - buttonAction[button] = action - button.addTarget(self, action: #selector(buttonTapped), for: UIControl.Event.touchUpInside) - buttonsStackView.addArrangedSubview(button) - } - - @objc func buttonTapped(button: UIButton) { - guard let action = buttonAction[button] else { return } - action() - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/MultipleButtonsCollectionViewCell.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/MultipleButtonsCollectionViewCell.xib deleted file mode 100644 index 8d27a7a7..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/MultipleButtonsCollectionViewCell.xib +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasAcceptedCardCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasAcceptedCardCollectionViewCell.swift deleted file mode 100644 index 6ae9d533..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasAcceptedCardCollectionViewCell.swift +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -class SasAcceptedCardCollectionViewCell: ObvCardCollectionViewCell, InvitationCollectionCell, CellContainingHeaderView, CellContainingSasAcceptedView, CellContainingOneButtonView { - - static let nibName = "SasAcceptedCardCollectionViewCell" - static let identifier = "sasAcceptedCardCollectionViewCellIdentifier" - - // Views - - @IBOutlet weak var placeholderView: UIView! - @IBOutlet weak var topPlaceholderView: UIView! - @IBOutlet weak var middlePlaceholderView: UIView! - @IBOutlet weak var bottomPlaceholderView: UIView! - - // Constraints - - private var widthConstraint: NSLayoutConstraint! - - // Subviews set in awakeFromNib - - var cellHeaderView: CellHeaderView! - var sasAcceptedView: SasAcceptedView! - var oneButtonView: OneButtonView? - -} - -// MARK: - awakeFromNib - -extension SasAcceptedCardCollectionViewCell { - - override func awakeFromNib() { - super.awakeFromNib() - self.accessibilityIdentifier = "SasAcceptedCardCollectionViewCell" - self.contentView.translatesAutoresizingMaskIntoConstraints = false - backgroundColor = AppTheme.shared.colorScheme.tertiarySystemBackground - self.widthConstraint = self.contentView.widthAnchor.constraint(equalToConstant: 50.0) - self.widthConstraint.isActive = true - instantiateAndPlaceTheCellHeaderView() - instantiateAndPlaceTheSasAcceptedView() - instantiateAndPlaceTheOneButtonView() - } - - private func instantiateAndPlaceTheCellHeaderView() { - topPlaceholderView.backgroundColor = .clear - cellHeaderView = (Bundle.main.loadNibNamed(CellHeaderView.nibName, owner: nil, options: nil)!.first as! CellHeaderView) - topPlaceholderView.addSubview(cellHeaderView) - topPlaceholderView.pinAllSidesToSides(of: cellHeaderView) - } - - private func instantiateAndPlaceTheSasAcceptedView() { - middlePlaceholderView.backgroundColor = .clear - sasAcceptedView = (Bundle.main.loadNibNamed(SasAcceptedView.nibName, owner: nil, options: nil)!.first as! SasAcceptedView) - middlePlaceholderView.addSubview(sasAcceptedView) - middlePlaceholderView.pinAllSidesToSides(of: sasAcceptedView) - } - - private func instantiateAndPlaceTheOneButtonView() { - bottomPlaceholderView?.backgroundColor = .clear - oneButtonView = Bundle.main.loadNibNamed(OneButtonView.nibName, owner: nil, options: nil)!.first as! OneButtonView? - bottomPlaceholderView?.addSubview(oneButtonView!) - bottomPlaceholderView?.pinAllSidesToSides(of: oneButtonView!) - } - - override func prepareForReuse() { - super.prepareForReuse() - cellHeaderView.prepareForReuse() - } - -} - -// MARK: - Setting the width and accessing the size - -extension SasAcceptedCardCollectionViewCell { - - func setWidth(to newWidth: CGFloat) { - widthConstraint.constant = newWidth - } - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - setNeedsLayout() - layoutIfNeeded() - let size = contentView.systemLayoutSizeFitting(layoutAttributes.size) - var newFrame = layoutAttributes.frame - newFrame.size = size - layoutAttributes.frame = newFrame - return layoutAttributes - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasAcceptedCardCollectionViewCell.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasAcceptedCardCollectionViewCell.xib deleted file mode 100644 index 5244bf88..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasAcceptedCardCollectionViewCell.xib +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasCardCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasCardCollectionViewCell.swift deleted file mode 100644 index 00a3a7e8..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasCardCollectionViewCell.swift +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -class SasCardCollectionViewCell: ObvCardCollectionViewCell, InvitationCollectionCell, CellContainingHeaderView, CellContainingSasView { - - static let nibName = "SasCardCollectionViewCell" - static let identifier = "sasCardCollectionViewCellIdentifier" - - // Views - - @IBOutlet weak var placeholderView: UIView! - @IBOutlet weak var topPlaceholderView: UIView! - @IBOutlet weak var bottomPlaceholderView: UIView! - - // Constraints - - private var widthConstraint: NSLayoutConstraint! - - // Subviews set in awakeFromNib - - var cellHeaderView: CellHeaderView! - var sasView: SasView! - -} - - -// MARK: - awakeFromNib - -extension SasCardCollectionViewCell { - - override func awakeFromNib() { - super.awakeFromNib() - self.accessibilityIdentifier = "SasCardCollectionViewCell" - self.contentView.translatesAutoresizingMaskIntoConstraints = false - backgroundColor = AppTheme.shared.colorScheme.tertiarySystemBackground - self.widthConstraint = self.contentView.widthAnchor.constraint(equalToConstant: 50.0) - self.widthConstraint.isActive = true - instantiateAndPlaceTheCellHeaderView() - instantiateAndPlaceTheSasView() - - let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(cellWasTapped)) - self.addGestureRecognizer(tapGestureRecognizer) - } - - private func instantiateAndPlaceTheCellHeaderView() { - topPlaceholderView.backgroundColor = .clear - cellHeaderView = (Bundle.main.loadNibNamed(CellHeaderView.nibName, owner: nil, options: nil)!.first as! CellHeaderView) - topPlaceholderView.addSubview(cellHeaderView) - topPlaceholderView.pinAllSidesToSides(of: cellHeaderView) - } - - private func instantiateAndPlaceTheSasView() { - bottomPlaceholderView?.backgroundColor = .clear - sasView = (Bundle.main.loadNibNamed(SasView.nibName, owner: nil, options: nil)!.first as! SasView) - bottomPlaceholderView.addSubview(sasView) - bottomPlaceholderView.pinAllSidesToSides(of: sasView) - } - - @objc func cellWasTapped() { - _ = sasView.resignFirstResponder() - } - - override func prepareForReuse() { - super.prepareForReuse() - cellHeaderView.prepareForReuse() - } - -} - - -// MARK: - Setting the width and accessing the size - -extension SasCardCollectionViewCell { - - func setWidth(to newWidth: CGFloat) { - widthConstraint.constant = newWidth - } - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - setNeedsLayout() - layoutIfNeeded() - let size = contentView.systemLayoutSizeFitting(layoutAttributes.size) - var newFrame = layoutAttributes.frame - newFrame.size = size - layoutAttributes.frame = newFrame - return layoutAttributes - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasCardCollectionViewCell.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasCardCollectionViewCell.xib deleted file mode 100644 index 0c51f24a..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/SasCardCollectionViewCell.xib +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/TitledCardCollectionViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/TitledCardCollectionViewCell.swift deleted file mode 100644 index 1f1ed154..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/TitledCardCollectionViewCell.swift +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -final class TitledCardCollectionViewCell: ObvCardCollectionViewCell, InvitationCollectionCell, CellContainingHeaderView, CellContainingOneButtonView { - - static let nibName = "TitledCardCollectionViewCell" - static let identifier = "titledCardCollectionViewCellIdentifier" - - // Views - - @IBOutlet weak var placeholderView: UIView! - @IBOutlet weak var topPlaceholderView: UIView! - @IBOutlet weak var bottomPlaceholderView: UIView? - - // Vars set in awakeFromNib - - private var widthConstraint: NSLayoutConstraint! - var cellHeaderView: CellHeaderView! - var oneButtonView: OneButtonView? -} - -// MARK: - awakeFromNib - -extension TitledCardCollectionViewCell { - - override func awakeFromNib() { - super.awakeFromNib() - self.contentView.translatesAutoresizingMaskIntoConstraints = false - backgroundColor = AppTheme.shared.colorScheme.tertiarySystemBackground - self.widthConstraint = self.contentView.widthAnchor.constraint(equalToConstant: 50.0) - self.widthConstraint.isActive = true - instantiateAndPlaceTheCellHeaderView() - instantiateAndPlaceTheOneButtonView() - } - - - private func instantiateAndPlaceTheCellHeaderView() { - // We add a CellHeaderView and pin it to the 4 hedges of the main placeholder view - topPlaceholderView.backgroundColor = .clear - cellHeaderView = (Bundle.main.loadNibNamed(CellHeaderView.nibName, owner: nil, options: nil)!.first as! CellHeaderView) - topPlaceholderView.addSubview(cellHeaderView) - topPlaceholderView.pinAllSidesToSides(of: cellHeaderView) - } - - - private func instantiateAndPlaceTheOneButtonView() { - bottomPlaceholderView?.backgroundColor = .clear - oneButtonView = Bundle.main.loadNibNamed(OneButtonView.nibName, owner: nil, options: nil)!.first as! OneButtonView? - bottomPlaceholderView?.addSubview(oneButtonView!) - bottomPlaceholderView?.pinAllSidesToSides(of: oneButtonView!) - } - - override func prepareForReuse() { - super.prepareForReuse() - cellHeaderView.prepareForReuse() - } - -} - -// MARK: - Setting the width and accessing the size - -extension TitledCardCollectionViewCell { - - func setWidth(to newWidth: CGFloat) { - widthConstraint.constant = newWidth - } - - - override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { - setNeedsLayout() - layoutIfNeeded() - let size = contentView.systemLayoutSizeFitting(layoutAttributes.size) - var newFrame = layoutAttributes.frame - newFrame.size = size - layoutAttributes.frame = newFrame - return layoutAttributes - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/TitledCardCollectionViewCell.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/TitledCardCollectionViewCell.xib deleted file mode 100644 index 7b751466..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/TitledCardCollectionViewCell.xib +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/en.lproj/HelpCardCollectionViewCell.strings b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/en.lproj/HelpCardCollectionViewCell.strings deleted file mode 100644 index c2971095..00000000 Binary files a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/en.lproj/HelpCardCollectionViewCell.strings and /dev/null differ diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/fr.lproj/HelpCardCollectionViewCell.strings b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/fr.lproj/HelpCardCollectionViewCell.strings deleted file mode 100644 index 34e84655..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Cells/fr.lproj/HelpCardCollectionViewCell.strings +++ /dev/null @@ -1,6 +0,0 @@ -/* Class = "UILabel"; text = "You don't have any invitation yet"; ObjectID = "0WL-Lh-bzC"; */ -"0WL-Lh-bzC.text" = "Vous n'avez aucune invitation pour le moment."; - -/* Class = "UILabel"; text = "You can either invite others to join your network, or be invited. In both cases, an invitation card will be displayed here (and replace this message)."; ObjectID = "tKK-a5-DNx"; */ -"tKK-a5-DNx.text" = "Afin d'envoyer une invitation, veuillez cliquer sur le bouton bleu en bas au centre."; - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/InvitationsCollectionViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/InvitationsCollectionViewController.swift deleted file mode 100644 index 553d56ca..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/InvitationsCollectionViewController.swift +++ /dev/null @@ -1,1351 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import CoreData -import os.log -import ObvTypes -import ObvEngine -import ObvUI -import ObvUICoreData - - -final class InvitationsCollectionViewController: ShowOwnedIdentityButtonUIViewController, ViewControllerWithEllipsisCircleRightBarButtonItem { - - private static let nibName = "InvitationsCollectionViewController" - - @IBOutlet weak var collectionViewPlaceholder: UIView! - private let collectionViewLayout: UICollectionViewLayout - private let collectionView: UICollectionView - private var collectionViewSizeChanged = false - private var viewDidLoadWasCalled = false - - private let obvEngine: ObvEngine - - // All insets *must* have the same left and right values - private let collectionViewLayoutInsetFirstSection = UIEdgeInsets(top: 8, left: 8, bottom: 0, right: 8) - private let collectionViewLayoutInsetSecondSection = UIEdgeInsets(top: 0, left: 8, bottom: 8, right: 8) - - private var notificationTokens = [NSObjectProtocol]() - - var fetchedResultsController: NSFetchedResultsController! = nil - - var currentNumberOfInvitations: Int { - guard let fetchedResultsController = self.fetchedResultsController else { return 0 } - guard let sections = fetchedResultsController.sections else { return 0 } - guard sections.count > 0 else { return 0 } - return sections[0].numberOfObjects - } - - private var doDisplayHelpCell = false - - private var keyboardIsShown = false - - weak var delegate: InvitationsCollectionViewControllerDelegate? - - private var contactsForWhichASASWasEntered = Set() // Allows to track when bad SAS are entered - - // Required within the implementation of NSFetchedResultsControllerDelegate - private var sectionChanges = [(cvSectionIndex: Int, type: NSFetchedResultsChangeType)]() - private var itemChanges = [(persistedInvitation: PersistedInvitation, indexPath: IndexPath?, type: NSFetchedResultsChangeType, newIndexPath: IndexPath?)]() - - private var observationTokens = [NSObjectProtocol]() - private var currentKbdHeight: CGFloat = 0.0 - private static let typicalDurationKbdAnimation: TimeInterval = 0.25 - let animatorForCollectionViewContent = UIViewPropertyAnimator(duration: typicalDurationKbdAnimation*2.3, dampingRatio: 0.65) - private var activeTextField: UITextField? - - var extraBottomInset: CGFloat = 0.0 - - // MARK: - Initializer - - init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine, collectionViewLayout: UICollectionViewLayout) { - self.obvEngine = obvEngine - self.collectionViewLayout = collectionViewLayout - self.collectionView = UICollectionView.init(frame: CGRect.zero, collectionViewLayout: collectionViewLayout) - super.init(ownedCryptoId: ownedCryptoId, logCategory: "InvitationsCollectionViewController") - self.setTitle(CommonString.Word.Invitations) - } - - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - deinit { - observationTokens.forEach { NotificationCenter.default.removeObserver($0) } - notificationTokens.forEach { NotificationCenter.default.removeObserver($0) } - } - - - // MARK: - Switching current owned identity - - @MainActor - override func switchCurrentOwnedCryptoId(to newOwnedCryptoId: ObvCryptoId) async { - await super.switchCurrentOwnedCryptoId(to: newOwnedCryptoId) - guard viewDidLoadWasCalled else { return } - configureTheFetchedResultsController() - performFetch() - collectionView.reloadData() - } - -} - -// MARK: - Mappings between IndexPath - -extension InvitationsCollectionViewController { - - func frcIndexPathFrom(cvIndexPath: IndexPath) -> IndexPath { - return IndexPath(item: cvIndexPath.item, section: cvIndexPath.section-1) - } - - func cvIndexPathFrom(frcIndexPath: IndexPath) -> IndexPath { - return IndexPath(item: frcIndexPath.item, section: frcIndexPath.section+1) - } - - func cvSectionIndexFrom(frcSectionIndex: Int) -> Int { - return frcSectionIndex + 1 - } -} - -// MARK: - View controller life cycle - -extension InvitationsCollectionViewController { - - override func viewDidLoad() { - super.viewDidLoad() - viewDidLoadWasCalled = true - - registerCells() - configureFlowLayoutForAutoSizingCells() - configureTheFetchedResultsController() - - self.view.backgroundColor = AppTheme.shared.colorScheme.systemBackground - self.collectionViewPlaceholder.backgroundColor = AppTheme.shared.colorScheme.systemFill - - self.collectionViewPlaceholder.addSubview(self.collectionView) - self.collectionViewPlaceholder.pinAllSidesToSides(of: self.collectionView) - - self.collectionView.translatesAutoresizingMaskIntoConstraints = false - self.collectionView.backgroundColor = AppTheme.shared.colorScheme.systemBackground - self.collectionView.keyboardDismissMode = .interactive - - self.collectionView.alwaysBounceVertical = true - self.extraBottomInset = 16 + 56 // It's height + bottom margin - self.collectionView.delegate = self - self.collectionView.dataSource = self - - registerTextDidBeginEditingNotification() - registerTextDidEndEditingNotification() - registerKeyboardNotifications() - observeIdentityColorStyleDidChangeNotifications() - - if #available(iOS 14, *) { - navigationItem.rightBarButtonItem = getConfiguredEllipsisCircleRightBarButtonItem() - } else { - navigationItem.rightBarButtonItem = getConfiguredEllipsisCircleRightBarButtonItem(selector: #selector(ellipsisButtonTappedSelector)) - } - - } - - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - performFetch() - } - - - @available(iOS, introduced: 13.0, deprecated: 14.0, message: "Used because iOS 13 does not support UIMenu on UIBarButtonItem") - @objc private func ellipsisButtonTappedSelector() { - ellipsisButtonTapped(sourceBarButtonItem: navigationItem.rightBarButtonItem) - } - - - override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { - super.viewWillTransition(to: size, with: coordinator) - coordinator.animate(alongsideTransition: nil) { [weak self] (_) in - self?.collectionView.collectionViewLayout.invalidateLayout() - self?.collectionView.reloadData() - } - } - - private func observeIdentityColorStyleDidChangeNotifications() { - let token = ObvMessengerSettingsNotifications.observeIdentityColorStyleDidChange { - DispatchQueue.main.async { [weak self] in - self?.collectionView.reloadData() - } - } - self.notificationTokens.append(token) - } - - - private func configureFlowLayoutForAutoSizingCells() { - if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout { - flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize - } - } - - - private func registerCells() { - self.collectionView.register(UINib(nibName: HelpCardCollectionViewCell.nibName, bundle: nil), forCellWithReuseIdentifier: HelpCardCollectionViewCell.identifier) - self.collectionView.register(UINib(nibName: TitledCardCollectionViewCell.nibName, bundle: nil), forCellWithReuseIdentifier: TitledCardCollectionViewCell.identifier) - self.collectionView.register(UINib(nibName: ButtonsCardCollectionViewCell.nibName, bundle: nil), forCellWithReuseIdentifier: ButtonsCardCollectionViewCell.identifier) - self.collectionView.register(UINib(nibName: SasCardCollectionViewCell.nibName, bundle: nil), forCellWithReuseIdentifier: SasCardCollectionViewCell.identifier) - self.collectionView.register(UINib(nibName: SasAcceptedCardCollectionViewCell.nibName, bundle: nil), forCellWithReuseIdentifier: SasAcceptedCardCollectionViewCell.identifier) - self.collectionView.register(UINib(nibName: AcceptGroupInviteCollectionViewCell.nibName, bundle: nil), forCellWithReuseIdentifier: AcceptGroupInviteCollectionViewCell.identifier) - self.collectionView.register(UINib(nibName: MultipleButtonsCollectionViewCell.nibName, bundle: nil), forCellWithReuseIdentifier: MultipleButtonsCollectionViewCell.identifier) - } - - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated) - - // Mark all the invitations as "old" - - let ownCryptoId = self.currentOwnedCryptoId - let log = self.log - ObvStack.shared.performBackgroundTask { (context) in - guard let persistedOwnedIdentity = try? PersistedObvOwnedIdentity.get(cryptoId: ownCryptoId, within: context) else { return } - do { - try PersistedInvitation.markAllAsOld(for: persistedOwnedIdentity) - try context.save(logOnFailure: log) - } catch { - os_log("Could not mark invitations as old", log: log, type: .error) - } - } - - } -} - - -// MARK: - NSFetchedResultsControllerDelegate - -extension InvitationsCollectionViewController: NSFetchedResultsControllerDelegate { - - private func configureTheFetchedResultsController() { - fetchedResultsController = PersistedInvitation.getFetchedResultsControllerForOwnedIdentity(with: currentOwnedCryptoId, within: ObvStack.shared.viewContext) - fetchedResultsController.delegate = self - } - - - private func performFetch() { - do { - try fetchedResultsController.performFetch() - } catch let error { - fatalError("Failed to fetch entities: \(error.localizedDescription)") - } - doDisplayHelpCell = (currentNumberOfInvitations == 0) - } - - - func controller(_ controller: NSFetchedResultsController, didChange sectionInfo: NSFetchedResultsSectionInfo, atSectionIndex sectionIndex: Int, for type: NSFetchedResultsChangeType) { - let cvSectionIndex = cvSectionIndexFrom(frcSectionIndex: sectionIndex) - sectionChanges.append((cvSectionIndex, type)) - } - - func controller(_ controller: NSFetchedResultsController, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) { - guard let persistedInvitation = anObject as? PersistedInvitation else { return } - var cvIndexPath: IndexPath? = nil - if let ip = indexPath { - cvIndexPath = cvIndexPathFrom(frcIndexPath: ip) - } - var cvNewIndexPath: IndexPath? = nil - if let ip = newIndexPath { - cvNewIndexPath = cvIndexPathFrom(frcIndexPath: ip) - } - itemChanges.append((persistedInvitation, cvIndexPath, type, cvNewIndexPath)) - } - - - func controllerDidChangeContent(_ controller: NSFetchedResultsController) { - - var objectsToReload = Set() - - collectionView.performBatchUpdates({ - - while let (cvSectionIndex, type) = sectionChanges.popLast() { - - switch type { - case .insert: - collectionView.insertSections(IndexSet(integer: cvSectionIndex)) - case .delete: - collectionView.deleteSections(IndexSet(integer: cvSectionIndex)) - case .move, .update: - break - @unknown default: - assertionFailure() - } - - } - - while let (persistedInvitation, indexPath, type, newIndexPath) = itemChanges.popLast() { - - switch type { - case .insert: - collectionView.insertItems(at: [newIndexPath!]) - case .delete: - collectionView.deleteItems(at: [indexPath!]) - case .update: - collectionView.deleteItems(at: [indexPath!]) - collectionView.insertItems(at: [indexPath!]) - case .move: - // It is likely that the current cell does not correpond to the one required by the updated invitation. We cannot simply configure the cell again. So we add it the the set of objects to reload - collectionView.moveItem(at: indexPath!, to: newIndexPath!) - objectsToReload.insert(persistedInvitation) - @unknown default: - assertionFailure() - } - - - } - }, completion: { [weak self] (_) -> Void in - guard let _self = self else { return } - // Display or hide the help cell, depending on the number of current inventations - if _self.doDisplayHelpCell && _self.currentNumberOfInvitations > 0 { - _self.doDisplayHelpCell = false - _self.collectionView.reloadSections([0]) - } else if !_self.doDisplayHelpCell && _self.currentNumberOfInvitations == 0 { - _self.doDisplayHelpCell = true - _self.collectionView.reloadSections([0]) - } - - // Update the objects that require it - var cvIndexPathsToReload = Set() - for persistedInvitation in objectsToReload { - guard let frcIndexPath = _self.fetchedResultsController.indexPath(forObject: persistedInvitation) else { continue } - let cvIndexPath = _self.cvIndexPathFrom(frcIndexPath: frcIndexPath) - cvIndexPathsToReload.insert(cvIndexPath) - } - DispatchQueue(label: "ReloadPersistedInvitationsQueue").asyncAfter(deadline: DispatchTime.now() + .milliseconds(200), execute: { - DispatchQueue.main.async { - _self.collectionView.reloadItems(at: Array(cvIndexPathsToReload)) - } - }) - }) - } -} - - -// MARK: - UICollectionViewDataSource - -extension InvitationsCollectionViewController: UICollectionViewDataSource { - - - func numberOfSections(in collectionView: UICollectionView) -> Int { - return 2 - } - - - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - switch section { - case 0: - return doDisplayHelpCell ? 1 : 0 - case 1: - return currentNumberOfInvitations - default: - return 0 - } - } - - - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - - switch indexPath.section { - case 0: - let helpCell = collectionView.dequeueReusableCell(withReuseIdentifier: HelpCardCollectionViewCell.identifier, for: indexPath) - if let cell = helpCell as? InvitationCollectionCell { - configureHelpCell(cell, in: collectionView) - } - return helpCell - case 1: - let frcIndexPath = frcIndexPathFrom(cvIndexPath: indexPath) - let persistedInvitation = fetchedResultsController.object(at: frcIndexPath) - guard let obvDialog = persistedInvitation.obvDialog else { - return fakeCell(indexPath: indexPath) - } - let cell = dequeueReusableCell(for: obvDialog.category, in: collectionView, at: indexPath) - if let cell = cell as? InvitationCollectionCell { - configure(cell, with: persistedInvitation) - } - return cell - default: - return UICollectionViewCell() - } - } - - - /// In case we cannot parse the ObvDialog of a PersistedInvitation, we display a fake cell. It won't last for long anyway, since the corresponding - /// PersistedInvitation is going to be deleted during bottstrap. - private func fakeCell(indexPath: IndexPath) -> UICollectionViewCell { - assertionFailure() - var cell = collectionView.dequeueReusableCell(withReuseIdentifier: TitledCardCollectionViewCell.identifier, for: indexPath) as! TitledCardCollectionViewCell - cell.title = "" - cell.subtitle = "" - cell.date = Date() - cell.identityColors = nil - cell.details = "" - cell.buttonTitle = CommonString.Word.Abort - cell.buttonAction = {} - cell.useLeadingButton() - return cell - } - - - private func dequeueReusableCell(for category: ObvDialog.Category, in collectionView: UICollectionView, at indexPath: IndexPath) -> UICollectionViewCell { - switch category { - case .inviteSent: - return collectionView.dequeueReusableCell(withReuseIdentifier: TitledCardCollectionViewCell.identifier, for: indexPath) - case .invitationAccepted: - return collectionView.dequeueReusableCell(withReuseIdentifier: TitledCardCollectionViewCell.identifier, for: indexPath) - case .mutualTrustConfirmed: - return collectionView.dequeueReusableCell(withReuseIdentifier: MultipleButtonsCollectionViewCell.identifier, for: indexPath) - case .acceptInvite: - return collectionView.dequeueReusableCell(withReuseIdentifier: ButtonsCardCollectionViewCell.identifier, for: indexPath) - case .sasExchange: - return collectionView.dequeueReusableCell(withReuseIdentifier: SasCardCollectionViewCell.identifier, for: indexPath) - case .sasConfirmed: - return collectionView.dequeueReusableCell(withReuseIdentifier: SasAcceptedCardCollectionViewCell.identifier, for: indexPath) - case .acceptMediatorInvite: - return collectionView.dequeueReusableCell(withReuseIdentifier: ButtonsCardCollectionViewCell.identifier, for: indexPath) - case .mediatorInviteAccepted: - return collectionView.dequeueReusableCell(withReuseIdentifier: TitledCardCollectionViewCell.identifier, for: indexPath) - case .acceptGroupInvite: - return collectionView.dequeueReusableCell(withReuseIdentifier: AcceptGroupInviteCollectionViewCell.identifier, for: indexPath) - case .increaseMediatorTrustLevelRequired: - return collectionView.dequeueReusableCell(withReuseIdentifier: MultipleButtonsCollectionViewCell.identifier, for: indexPath) - case .increaseGroupOwnerTrustLevelRequired: - return collectionView.dequeueReusableCell(withReuseIdentifier: MultipleButtonsCollectionViewCell.identifier, for: indexPath) - case .autoconfirmedContactIntroduction: - return collectionView.dequeueReusableCell(withReuseIdentifier: MultipleButtonsCollectionViewCell.identifier, for: indexPath) - case .oneToOneInvitationSent: - return collectionView.dequeueReusableCell(withReuseIdentifier: TitledCardCollectionViewCell.identifier, for: indexPath) - case .oneToOneInvitationReceived: - return collectionView.dequeueReusableCell(withReuseIdentifier: MultipleButtonsCollectionViewCell.identifier, for: indexPath) - case .acceptGroupV2Invite: - return collectionView.dequeueReusableCell(withReuseIdentifier: AcceptGroupInviteCollectionViewCell.identifier, for: indexPath) - case .freezeGroupV2Invite: - return collectionView.dequeueReusableCell(withReuseIdentifier: AcceptGroupInviteCollectionViewCell.identifier, for: indexPath) - } - } - - - private func configureCell(atIndexPath indexPath: IndexPath, with persistedInvitation: PersistedInvitation) { - guard indexPath.section == 1 else { - return - } - let cell = collectionView.cellForItem(at: indexPath) - if let cell = cell as? InvitationCollectionCell { - configure(cell, with: persistedInvitation) - } - } - - - private func configure(_ cellToConfigure: InvitationCollectionCell, with persistedInvitation: PersistedInvitation) { - - let newWidth = collectionView.bounds.width - collectionViewLayoutInsetFirstSection.left - collectionViewLayoutInsetFirstSection.right - - cellToConfigure.setWidth(to: newWidth) - - guard let obvDialog = persistedInvitation.obvDialog else { assertionFailure(); return } - - switch obvDialog.category { - - case .inviteSent(contactIdentity: let contactURLIdentity): - guard var cell = cellToConfigure as? TitledCardCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = contactURLIdentity.fullDisplayName - cell.subtitle = Strings.InviteSent.subtitle - cell.date = persistedInvitation.date - cell.identityColors = contactURLIdentity.cryptoId.colors - cell.details = Strings.InviteSent.details(contactURLIdentity.fullDisplayName) - cell.buttonTitle = CommonString.Word.Abort - cell.buttonAction = { [weak self] in - self?.abandonInvitation(dialog: obvDialog, confirmed: false) - } - cell.useLeadingButton() - - case .acceptInvite(contactIdentity: let contactIdentity): - guard var cell = cellToConfigure as? ButtonsCardCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) - cell.subtitle = Strings.AcceptInvite.subtitle - cell.date = persistedInvitation.date - cell.identityColors = contactIdentity.cryptoId.colors - cell.details = Strings.AcceptInvite.details(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) - cell.buttonTitle1 = CommonString.Word.Accept - cell.buttonTitle2 = Strings.AcceptInvite.buttonTitle2 - cell.button1Action = { [weak self] in - self?.acceptInvitation(dialog: obvDialog) - } - cell.button2Action = { [weak self] in - self?.rejectInvitation(dialog: obvDialog, confirmed: false) - } - - case .invitationAccepted(contactIdentity: let contactIdentity): - guard var cell = cellToConfigure as? TitledCardCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) - cell.subtitle = Strings.InvitationAccepted.subtitle - cell.date = persistedInvitation.date - cell.identityColors = contactIdentity.cryptoId.colors - cell.details = Strings.InvitationAccepted.details(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) - cell.buttonTitle = CommonString.Word.Abort - cell.buttonAction = { [weak self] in - self?.abandonInvitation(dialog: obvDialog, confirmed: false) - } - cell.useLeadingButton() - - case .sasExchange(contactIdentity: let contactIdentity, sasToDisplay: let sasToDisplay, numberOfBadEnteredSas: let numberOfBadEnteredSas): - guard var cell = cellToConfigure as? SasCardCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - let sas = String.init(data: sasToDisplay, encoding: .utf8) ?? "" - cell.title = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) - cell.subtitle = Strings.SasExchange.subtitle - cell.date = persistedInvitation.date - cell.identityColors = contactIdentity.cryptoId.colors - cell.details = Strings.SasExchange.details(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.firstNameThenLastName), sas) - try? cell.setOwnSas(ownSas: sasToDisplay) - cell.resetContactSas() - cell.onSasInput = { [weak self] (enteredDigits) in - self?.contactsForWhichASASWasEntered.insert(contactIdentity.cryptoId) - self?.onSasInput(dialog: obvDialog, enteredDigits) - } - cell.onAbort = { [weak self] in - self?.abandonInvitation(dialog: obvDialog, confirmed: false) - } - if numberOfBadEnteredSas > 0 && contactsForWhichASASWasEntered.contains(contactIdentity.cryptoId) { - contactsForWhichASASWasEntered.remove(contactIdentity.cryptoId) - let alert = UIAlertController(title: Strings.IncorrectSASAlert.title, message: Strings.IncorrectSASAlert.message, preferredStyle: .alert) - let okAction = UIAlertAction(title: CommonString.Word.Ok, style: .default) - alert.addAction(okAction) - self.present(alert, animated: true) - } - - case .sasConfirmed(contactIdentity: let contactIdentity, sasToDisplay: let sasToDisplay, sasEntered: _): - guard var cell = cellToConfigure as? SasAcceptedCardCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - let sas = String.init(data: sasToDisplay, encoding: .utf8) ?? "" - cell.title = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) - cell.subtitle = Strings.SasConfirmed.subtitle - cell.date = persistedInvitation.date - cell.identityColors = contactIdentity.cryptoId.colors - cell.details = Strings.SasConfirmed.details(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.firstNameThenLastName), sas) - try? cell.setOwnSas(ownSas: sasToDisplay) - cell.buttonTitle = CommonString.Word.Abort - cell.buttonAction = { [weak self] in - self?.abandonInvitation(dialog: obvDialog, confirmed: false) - } - cell.useLeadingButton() - - case .mutualTrustConfirmed(contactIdentity: let contactIdentity): - guard var cell = cellToConfigure as? MultipleButtonsCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) - cell.subtitle = Strings.MutualTrustConfirmed.subtitle - cell.date = persistedInvitation.date - cell.identityColors = contactIdentity.cryptoId.colors - cell.details = Strings.MutualTrustConfirmed.details(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.firstNameThenLastName)) - // Button for showing the new contact - cell.addButton(title: Strings.showContactButtonTitle, style: .obvButtonBorderless) { [weak self] in - guard let _self = self else { return } - ObvStack.shared.performBackgroundTask { (context) in - guard let ownedIdentityObject = try? PersistedObvOwnedIdentity.get(cryptoId: _self.currentOwnedCryptoId, within: context) else { return } - guard let contactIdendityObject = try? PersistedObvContactIdentity.get(cryptoId: contactIdentity.cryptoId, ownedIdentity: ownedIdentityObject, whereOneToOneStatusIs: .any) else { return } - let deepLink = ObvDeepLink.contactIdentityDetails(ownedCryptoId: _self.currentOwnedCryptoId, objectPermanentID: contactIdendityObject.objectPermanentID) - ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) - .postOnDispatchQueue() - } - } - // Button for discarding the invitation - cell.addButton(title: CommonString.Word.Ok, style: .obvButton) { [weak self] in - try? self?.obvEngine.deleteDialog(with: persistedInvitation.uuid) - } - - case .acceptMediatorInvite(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): - guard var cell = cellToConfigure as? ButtonsCardCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = "\(mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) → \(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full))" - cell.subtitle = Strings.AcceptMediatorInvite.subtitle - cell.date = persistedInvitation.date - cell.identityColors = mediatorIdentity.cryptoId.colors - cell.details = Strings.AcceptMediatorInvite.details(mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full), contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) - cell.buttonTitle1 = CommonString.Word.Accept - cell.buttonTitle2 = Strings.AcceptMediatorInvite.buttonTitle2 - cell.button1Action = { [weak self] in - self?.respondToAcceptMediatorInvite(dialog: obvDialog, acceptInvite: true) - } - cell.button2Action = { [weak self] in - self?.respondToAcceptMediatorInvite(dialog: obvDialog, acceptInvite: false) - } - - case .increaseMediatorTrustLevelRequired(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): - guard var cell = cellToConfigure as? MultipleButtonsCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = "\(mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) → \(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full))" - cell.subtitle = Strings.IncreaseMediatorTrustLevelRequired.subtitle - cell.date = persistedInvitation.date - cell.identityColors = mediatorIdentity.cryptoId.colors - cell.details = Strings.IncreaseMediatorTrustLevelRequired.details(mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full), contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) - // Button for increasing the mediator TL - do { - let mediatorName = mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.firstNameThenLastName) - let title = Strings.IncreaseMediatorTrustLevelRequired.buttonTitle1(mediatorName) - cell.addButton(title: title, style: .obvButton) { [weak self] in - self?.delegate?.rePerformTrustEstablishmentProtocolOfContactIdentity(contactCryptoId: mediatorIdentity.cryptoId, contactFullDisplayName: mediatorName) - - } - } - // Button for inviting the introduced identity - do { - let remoteFullDisplayName = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.firstNameThenLastName) - let title = Strings.IncreaseMediatorTrustLevelRequired.buttonTitle2(remoteFullDisplayName) - cell.addButton(title: title, style: .obvButton) { [weak self] in - self?.delegate?.performTrustEstablishmentProtocolOfRemoteIdentity(remoteCryptoId: contactIdentity.cryptoId, remoteFullDisplayName: remoteFullDisplayName) - } - } - // Button for aborting - cell.addButton(title: CommonString.Word.Abort, style: .obvButtonBorderless) { [weak self] in - self?.abandonInvitation(dialog: obvDialog, confirmed: false) - } - - case .mediatorInviteAccepted(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): - guard var cell = cellToConfigure as? TitledCardCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = "\(mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) → \(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full))" - cell.subtitle = Strings.MediatorInviteAccepted.subtitle - cell.date = persistedInvitation.date - cell.identityColors = mediatorIdentity.cryptoId.colors - cell.details = Strings.MediatorInviteAccepted.details(mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full), contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) - cell.buttonTitle = CommonString.Word.Abort - cell.buttonAction = { [weak self] in - self?.abandonInvitation(dialog: obvDialog, confirmed: false) - } - cell.useLeadingButton() - - case .autoconfirmedContactIntroduction(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): - guard var cell = cellToConfigure as? MultipleButtonsCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = "\(mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) → \(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full))" - cell.subtitle = Strings.AutoconfirmedContactIntroduction.subtitle - cell.date = persistedInvitation.date - cell.identityColors = contactIdentity.cryptoId.colors - cell.details = Strings.AutoconfirmedContactIntroduction.details(mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full), contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) - // Button for showing the new contact - cell.addButton(title: Strings.showContactButtonTitle, style: .obvButtonBorderless) { [weak self] in - guard let _self = self else { return } - ObvStack.shared.performBackgroundTask { (context) in - guard let ownedIdentityObject = try? PersistedObvOwnedIdentity.get(cryptoId: _self.currentOwnedCryptoId, within: context) else { return } - guard let contactIdendityObject = try? PersistedObvContactIdentity.get(cryptoId: contactIdentity.cryptoId, ownedIdentity: ownedIdentityObject, whereOneToOneStatusIs: .any) else { return } - let deepLink = ObvDeepLink.contactIdentityDetails(ownedCryptoId: _self.currentOwnedCryptoId, objectPermanentID: contactIdendityObject.objectPermanentID) - ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) - .postOnDispatchQueue() - } - } - // Button for discarding the invitation - cell.addButton(title: CommonString.Word.Ok, style: .obvButton) { [weak self] in - try? self?.obvEngine.deleteDialog(with: persistedInvitation.uuid) - } - - case .acceptGroupInvite(groupMembers: let groupMembers, groupOwner: let groupOwner): - guard var cell = cellToConfigure as? AcceptGroupInviteCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = "\(groupOwner.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full))" - cell.subtitle = Strings.AcceptGroupInvite.subtitle - cell.date = persistedInvitation.date - cell.identityColors = groupOwner.cryptoId.colors - cell.details = Strings.AcceptGroupInvite.details(groupOwner.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) - cell.buttonTitle1 = CommonString.Word.Accept - cell.buttonTitle2 = CommonString.Word.Decline - cell.button1Action = { [weak self] in - self?.acceptGroupInvite(dialog: obvDialog) - } - cell.button2Action = { [weak self] in - self?.rejectGroupInvite(dialog: obvDialog, confirmed: false) - } - cell.setTitle(with: Strings.AcceptGroupInvite.subsubTitle) - cell.setList(with: groupMembers.map { $0.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) }) - - case .increaseGroupOwnerTrustLevelRequired(groupOwner: let groupOwner): - guard var cell = cellToConfigure as? MultipleButtonsCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = "\(groupOwner.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full))" - cell.subtitle = Strings.IncreaseGroupOwnerTrustLevelRequired.subtitle - cell.date = persistedInvitation.date - cell.identityColors = groupOwner.cryptoId.colors - cell.details = Strings.IncreaseGroupOwnerTrustLevelRequired.details(groupOwner.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full)) - // Button for increasing the group owner TL - do { - let groupOwnerName = groupOwner.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.firstNameThenLastName) - let title = Strings.IncreaseGroupOwnerTrustLevelRequired.buttonTitle(groupOwnerName) - cell.addButton(title: title, style: .obvButton) { [weak self] in - self?.delegate?.rePerformTrustEstablishmentProtocolOfContactIdentity(contactCryptoId: groupOwner.cryptoId, contactFullDisplayName: groupOwnerName) - - } - } - // Button for aborting - cell.addButton(title: CommonString.Word.Reject, style: .obvButtonBorderless) { [weak self] in - self?.rejectGroupInvite(dialog: obvDialog, confirmed: false) - } - - case .oneToOneInvitationSent(contactIdentity: let contactIdentity): - guard var cell = cellToConfigure as? TitledCardCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = "\(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full))" - cell.subtitle = Strings.OneToOneInvitationSent.subtitle - cell.date = persistedInvitation.date - cell.identityColors = contactIdentity.cryptoId.colors - cell.details = Strings.OneToOneInvitationSent.details(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.short)) - // Button for aborting - cell.buttonTitle = CommonString.Word.Abort - cell.buttonAction = { [weak self] in - assert(Thread.isMainThread) - guard let ownCryptoId = self?.currentOwnedCryptoId else { return } - self?.delegate?.userWantsToCancelSentInviteContactToOneToOne(ownedCryptoId: ownCryptoId, contactCryptoId: contactIdentity.cryptoId) - } - cell.useLeadingButton() - - case .oneToOneInvitationReceived(contactIdentity: let contactIdentity): - guard var cell = cellToConfigure as? MultipleButtonsCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - cell.title = "\(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full))" - cell.subtitle = Strings.OneToOneInvitationReceived.subtitle - cell.date = persistedInvitation.date - cell.identityColors = contactIdentity.cryptoId.colors - cell.details = Strings.OneToOneInvitationReceived.details(contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.short)) - // Button for increasing the group owner TL - do { - let title = CommonString.Word.Accept - cell.addButton(title: title, style: .obvButton) { [weak self] in - var localDialog = obvDialog - try? localDialog.setResponseToOneToOneInvitationReceived(invitationAccepted: true) - guard let obvEngine = self?.obvEngine else { assertionFailure(); return } - DispatchQueue(label: "Queue for responding to dialog").async { - obvEngine.respondTo(localDialog) - } - } - } - // Button for aborting - cell.addButton(title: CommonString.Word.Reject, style: .obvButtonBorderless) { [weak self] in - var localDialog = obvDialog - try? localDialog.setResponseToOneToOneInvitationReceived(invitationAccepted: false) - guard let obvEngine = self?.obvEngine else { assertionFailure(); return } - DispatchQueue(label: "Queue for responding to dialog").async { - obvEngine.respondTo(localDialog) - } - } - - case .acceptGroupV2Invite(inviter: let inviter, group: let group), - .freezeGroupV2Invite(inviter: let inviter, group: let group): - guard var cell = cellToConfigure as? AcceptGroupInviteCollectionViewCell else { - os_log("The cell type (%{public}@) does not correspond to the dialog's category of the invitation (%{public}@)", log: log, type: .fault, String(describing: cellToConfigure), obvDialog.category.description) - return - } - guard let inviterContact = try? PersistedObvContactIdentity.get(contactCryptoId: inviter, ownedIdentityCryptoId: currentOwnedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) else { - assertionFailure() - return - } - cell.title = inviterContact.customOrNormalDisplayName - cell.subtitle = Strings.AcceptGroupInvite.subtitle - cell.date = persistedInvitation.date - cell.identityColors = inviterContact.cryptoId.colors - cell.details = Strings.AcceptGroupInvite.details(inviterContact.customOrNormalDisplayName) - cell.buttonTitle1 = CommonString.Word.Accept - cell.buttonTitle2 = CommonString.Word.Decline - cell.button1Action = { [weak self] in - self?.acceptGroupInvite(dialog: obvDialog) - } - cell.button2Action = { [weak self] in - self?.rejectGroupInvite(dialog: obvDialog, confirmed: false) - } - cell.setTitle(with: Strings.AcceptGroupInvite.subsubTitle) - let list: [String] = group.otherMembers.map { - if let memberContact = try? PersistedObvContactIdentity.get(contactCryptoId: $0.identity, ownedIdentityCryptoId: currentOwnedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) { - return memberContact.customOrNormalDisplayName - } else if let details = try? ObvIdentityCoreDetails($0.serializedIdentityCoreDetails) { - return details.getDisplayNameWithStyle(.firstNameThenLastName) - } else { - assertionFailure() - return Strings.unknownGroupMemberName - } - } - cell.setList(with: list.sorted()) - // If the invite should be freezed, do it now - switch obvDialog.category { - case .freezeGroupV2Invite: - cell.freeze() - default: - cell.unfreeze() - } - } - - - if let cell = cellToConfigure as? InvitationCollectionCell & CellContainingHeaderView { - if persistedInvitation.actionRequired { - cell.addChip(withText: Strings.chipTitleActionRequired) - } - switch persistedInvitation.status { - case .new: - cell.addChip(withText: Strings.chipTitleNew) - case .updated: - cell.addChip(withText: Strings.chipTitleUpdated) - case .old: - break - } - } - - (cellToConfigure as! UICollectionViewCell).layoutIfNeeded() - - } - - - private func configureHelpCell(_ cell: InvitationCollectionCell, in collectionView: UICollectionView) { - let newWidth = collectionView.bounds.width - collectionViewLayoutInsetFirstSection.left - collectionViewLayoutInsetFirstSection.right - collectionView.contentInset.left - collectionView.contentInset.right - cell.setWidth(to: newWidth) - (cell as! UICollectionViewCell).layoutIfNeeded() - } - - - private func acceptInvitation(dialog: ObvDialog) { - switch dialog.category { - case .acceptInvite: - var localDialog = dialog - try? localDialog.setResponseToAcceptInvite(acceptInvite: true) - let obvEngine = self.obvEngine - DispatchQueue(label: "Queue for responding to dialog").async { - obvEngine.respondTo(localDialog) - } - default: - break - } - } - - - private func rejectInvitation(dialog: ObvDialog, confirmed: Bool) { - let currentTraitCollection = self.traitCollection - switch dialog.category { - case .acceptInvite: - if confirmed { - var localDialog = dialog - try? localDialog.setResponseToAcceptInvite(acceptInvite: false) - let obvEngine = self.obvEngine - DispatchQueue(label: "Queue for responding to dialog").async { - obvEngine.respondTo(localDialog) - } - } else { - let alert = UIAlertController(title: Strings.AbandonInvitation.title, message: nil, preferredStyleForTraitCollection: currentTraitCollection) - alert.addAction(UIAlertAction(title: Strings.AbandonInvitation.actionTitleDiscard, style: .destructive, handler: { [weak self] _ in - self?.rejectInvitation(dialog: dialog, confirmed: true) - })) - alert.addAction(UIAlertAction(title: Strings.AbandonInvitation.actionTitleDontDiscard, style: .default)) - alert.addAction(UIAlertAction(title: CommonString.Word.Cancel, style: .cancel)) - present(alert, animated: true, completion: nil) - } - default: - break - } - } - - - private func respondToAcceptMediatorInvite(dialog: ObvDialog, acceptInvite: Bool) { - DispatchQueue(label: "RespondingToMediatorInvitationDialog").async { [weak self] in - switch dialog.category { - case .acceptMediatorInvite: - var localDialog = dialog - try? localDialog.setResponseToAcceptMediatorInvite(acceptInvite: acceptInvite) - guard let obvEngine = self?.obvEngine else { assertionFailure(); return } - DispatchQueue(label: "Queue for responding to dialog").async { - obvEngine.respondTo(localDialog) - } - default: - break - } - } - } - - - private func acceptGroupInvite(dialog: ObvDialog) { - DispatchQueue(label: "RespondingToGroupInvitationDialog").async { [weak self] in - switch dialog.category { - case .acceptGroupInvite: - var localDialog = dialog - try? localDialog.setResponseToAcceptGroupInvite(acceptInvite: true) - guard let obvEngine = self?.obvEngine else { assertionFailure(); return } - DispatchQueue(label: "Queue for responding to dialog").async { - obvEngine.respondTo(localDialog) - } - case .acceptGroupV2Invite: - var localDialog = dialog - try? localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: true) - guard let obvEngine = self?.obvEngine else { assertionFailure(); return } - DispatchQueue(label: "Queue for responding to dialog").async { - obvEngine.respondTo(localDialog) - } - default: - break - } - } - } - - - private func rejectGroupInvite(dialog: ObvDialog, confirmed: Bool) { - let currentTraitCollection = self.traitCollection - DispatchQueue(label: "RespondingToGroupInvitationDialog").async { [weak self] in - switch dialog.category { - case .acceptGroupInvite, - .increaseGroupOwnerTrustLevelRequired, - .acceptGroupV2Invite: - if confirmed { - var localDialog = dialog - switch dialog.category { - case .acceptGroupInvite: - try? localDialog.setResponseToAcceptGroupInvite(acceptInvite: false) - case .increaseGroupOwnerTrustLevelRequired: - try? localDialog.rejectIncreaseGroupOwnerTrustLevelRequired() - case .acceptGroupV2Invite: - try? localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: false) - default: - assertionFailure() - return - } - self?.obvEngine.respondTo(localDialog) - } else { - let alert = UIAlertController(title: Strings.AbandonInvitation.title, message: nil, preferredStyleForTraitCollection: currentTraitCollection) - alert.addAction(UIAlertAction(title: Strings.AbandonInvitation.actionTitleDiscard, style: .destructive, handler: { [weak self] _ in - self?.rejectGroupInvite(dialog: dialog, confirmed: true) - })) - alert.addAction(UIAlertAction(title: Strings.AbandonInvitation.actionTitleDontDiscard, style: .default)) - alert.addAction(UIAlertAction(title: CommonString.Word.Cancel, style: .cancel)) - DispatchQueue.main.async { [weak self] in - self?.present(alert, animated: true, completion: nil) - } - } - default: - break - } - } - } - - - private func onSasInput(dialog: ObvDialog, _ enteredDigits: String) { - switch dialog.category { - case .sasExchange: - var localDialog = dialog - try? localDialog.setResponseToSasExchange(otherSas: enteredDigits.data(using: .utf8)!) - let obvEngine = self.obvEngine - DispatchQueue(label: "Queue for responding to dialog").async { - obvEngine.respondTo(localDialog) - } - default: - break - } - } - - private func abandonInvitation(dialog: ObvDialog, confirmed: Bool) { - if confirmed { - DispatchQueue(label: "AbandonInvitation").async { [weak self] in - ((try? self?.obvEngine.abortProtocol(associatedTo: dialog)) as ()??) - } - } else { - let alert = UIAlertController(title: Strings.AbandonInvitation.title, message: nil, preferredStyleForTraitCollection: self.traitCollection) - alert.addAction(UIAlertAction(title: Strings.AbandonInvitation.actionTitleDiscard, style: .destructive, handler: { [weak self] _ in - self?.abandonInvitation(dialog: dialog, confirmed: true) - })) - alert.addAction(UIAlertAction(title: Strings.AbandonInvitation.actionTitleDontDiscard, style: .default)) - alert.addAction(UIAlertAction(title: CommonString.Word.Cancel, style: .cancel)) - DispatchQueue.main.async { [weak self] in - self?.present(alert, animated: true, completion: nil) - } - } - } - - - private func deletePersistedInvitation(_ persistedInvitation: PersistedInvitation) { - DispatchQueue(label: "Queue for deleting invitation").async { [weak self] in - guard let _self = self else { return } - do { - try _self.obvEngine.deleteDialog(with: persistedInvitation.uuid) - } catch { - os_log("Could not delete persisted invitation", log: _self.log, type: .error) - } - } - } - -} - - -// MARK: - UICollectionViewDelegateFlowLayout - -extension InvitationsCollectionViewController: UICollectionViewDelegateFlowLayout { - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { - switch section { - case 0: - return collectionViewLayoutInsetFirstSection - case 1: - return UIEdgeInsets.init(top: collectionViewLayoutInsetSecondSection.top, - left: collectionViewLayoutInsetSecondSection.left, - bottom: collectionViewLayoutInsetSecondSection.bottom + extraBottomInset, - right: collectionViewLayoutInsetSecondSection.right) - default: - // Never occurs - return UIEdgeInsets.zero - } - } -} - - -// MARK: - Handling keyboard appearance - -extension InvitationsCollectionViewController { - - func registerTextDidBeginEditingNotification() { - let NotificationType = MessengerInternalNotification.TextFieldDidBeginEditing.self - let token = NotificationCenter.default.addObserver(forName: NotificationType.name, object: nil, queue: nil) { [weak self] (notification) in - guard let activeTextField = NotificationType.parse(notification) else { return } - self?.activeTextField = activeTextField - } - observationTokens.append(token) - } - - func registerTextDidEndEditingNotification() { - let NotificationType = MessengerInternalNotification.TextFieldDidEndEditing.self - let token = NotificationCenter.default.addObserver(forName: NotificationType.name, object: nil, queue: nil) { [weak self] (notification) in - guard let fieldThatEndEditing = NotificationType.parse(notification) else { return } - guard let activeTextField = self?.activeTextField else { return } - guard activeTextField == fieldThatEndEditing else { return } - guard let activeSasView = self?.getSasViewCorrespondingToActiveTextField() else { return } - _ = activeSasView.resignFirstResponder() - self?.activeTextField = nil - } - observationTokens.append(token) - } - - - func registerKeyboardNotifications() { - - do { - let token = NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: nil) { [weak self] (notification) in - self?.keyboardWillShow(notification) - } - observationTokens.append(token) - } - - do { - let token = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidShowNotification, object: nil, queue: nil) { [weak self] (notification) in - self?.keyboardIsShown = true - } - observationTokens.append(token) - } - - do { - let token = NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillHideNotification, object: nil, queue: nil) { [weak self] (notification) in - guard self?.keyboardIsShown == true else { return } - self?.keyboardWillHide(notification) - } - observationTokens.append(token) - } - - } - - - private func keyboardWillShow(_ notification: Notification) { - - defer { - if animatorForCollectionViewContent.state != .active { - animatorForCollectionViewContent.startAnimation() - } - } - - let kbdHeight = getKeyboardHeight(notification) - let tabbarHeight = tabBarController?.tabBar.frame.height ?? 0.0 - - guard let activeTextField = self.activeTextField else { return } - guard let activeCell = getCellCorrespondingToActiveTextField() else { return } - - // If the active text field is visible on screen, do not scroll any further. Otherwise, scroll. - - var aRect = self.view.frame - aRect.size.height -= kbdHeight - let bottomLeftCornerOfActiveTextField = activeTextField.convert(CGPoint(x: 0, y: activeTextField.bounds.height), to: view) - let doScrollAfterSettingTheCollectionViewBottomInset = !aRect.contains(bottomLeftCornerOfActiveTextField) - - setCollectionViewBottomInset(to: kbdHeight - tabbarHeight) - - guard doScrollAfterSettingTheCollectionViewBottomInset else { return } - - let cellOrigin = activeCell.convert(CGPoint.zero, to: self.collectionView) - let cellHeight = activeCell.frame.height - let collectionViewHeight = collectionView.bounds.height - let newY = cellOrigin.y + cellHeight - collectionViewHeight + kbdHeight + collectionViewLayoutInsetSecondSection.bottom - let newContentOffset = CGPoint(x: collectionView.contentOffset.x, - y: max(0, newY)) - animatorForCollectionViewContent.addAnimations { [weak self] in - self?.collectionView.contentOffset = newContentOffset - } - - } - - private func keyboardWillHide(_ notification: Notification) { - - defer { - if animatorForCollectionViewContent.state != .active { - animatorForCollectionViewContent.startAnimation() - } - } - - animatorForCollectionViewContent.addAnimations { [weak self] in - self?.setCollectionViewBottomInset(to: 0.0) - } - } - - - private func getKeyboardHeight(_ notification: Notification) -> CGFloat { - let userInfo = notification.userInfo! - let kbSize = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as! CGRect).size - return kbSize.height - } - - - private func setCollectionViewBottomInset(to bottom: CGFloat) { - collectionView.contentInset = UIEdgeInsets(top: collectionView.contentInset.top, - left: collectionView.contentInset.left, - bottom: bottom + extraBottomInset, - right: collectionView.contentInset.right) - collectionView.scrollIndicatorInsets = UIEdgeInsets( - top: collectionView.verticalScrollIndicatorInsets.top, - left: collectionView.horizontalScrollIndicatorInsets.left, - bottom: bottom + extraBottomInset, - right: collectionView.horizontalScrollIndicatorInsets.right) - - } - - - private func getCellCorrespondingToActiveTextField() -> UICollectionViewCell? { - guard let activeTextField = self.activeTextField else { return nil } - var currentSuperView = activeTextField.superview - while currentSuperView != nil { - if currentSuperView! is UICollectionViewCell { - return (currentSuperView! as! UICollectionViewCell) - } else { - currentSuperView = currentSuperView!.superview - } - } - return nil - } - - - private func getSasViewCorrespondingToActiveTextField() -> SasView? { - guard let activeTextField = self.activeTextField else { return nil } - var currentSuperView = activeTextField.superview - while currentSuperView != nil { - if currentSuperView! is SasView { - return (currentSuperView! as! SasView) - } else { - currentSuperView = currentSuperView!.superview - } - } - return nil - } -} - - -// MARK: - Localized strings - -extension InvitationsCollectionViewController { - - struct Strings { - - static let unknownGroupMemberName = NSLocalizedString("UNKNOWN_GROUP_MEMBER_NAME", comment: "") - - struct InviteSent { - static let subtitle = NSLocalizedString("Your invitation was sent", comment: "Invitation subtitle") - static let details = { (name: String) in - String.localizedStringWithFormat(NSLocalizedString("If %@ accepts your invitation, you will be notified here.", comment: "Invitation details"), name) - } - } - - struct AcceptInvite { - static let subtitle = NSLocalizedString("Invitation received", comment: "Invitation subtitle") - static let details = { (name: String) in - String.localizedStringWithFormat(NSLocalizedString("The invitation appears to come from %@. If you accept this invitation you will guided through the process allowing to make sure that this is the case.", comment: "Invitation details"), name) - } - static let buttonTitle2 = NSLocalizedString("Ignore", comment: "Button title") - } - - struct InvitationAccepted { - static let subtitle = NSLocalizedString("Invitation accepted", comment: "Invitation subtitle") - static let details = { (name: String) in - String.localizedStringWithFormat(NSLocalizedString("We are bootstraping the secure channel between you and %@. Please note that this requires %@'s device to be online.", comment: "Invitation details"), name, name) - } - } - - struct SasExchange { - static let subtitle = NSLocalizedString("Exchange digits", comment: "Invitation subtitle") - static let details = { (name: String, sas: String) in - String.localizedStringWithFormat(NSLocalizedString("You should communicate your four digits to %@. Your digits are %@. You should also enter the 4 digits of %@.", comment: "Invitation details"), name, sas, name) - } - } - - struct SasConfirmed { - static let subtitle = NSLocalizedString("Digits confirmed", comment: "Invitation subtitle") - static let details = { (name: String, sas: String) in - String.localizedStringWithFormat(NSLocalizedString("You have successfully entered the 4 digits of %1$@. You should communicate your four digits to %1$@. Your digits are %2$@.", comment: "Invitation details"), name, sas) - } - } - - struct MutualTrustConfirmed { - static let subtitle = NSLocalizedString("MUTUAL_TRUST_CONFIRMED", comment: "Invitation subtitle") - static let details = { (name: String) in - String.localizedStringWithFormat(NSLocalizedString("MUTUAL_TRUST_CONFIRMED_DETAILS_%@", comment: "Invitation details"), name) - } - - } - - static let showContactButtonTitle = NSLocalizedString("Show Contact", comment: "Button title allowing to navigation towards a contact") - - struct AutoconfirmedContactIntroduction { - static let subtitle = CommonString.Title.newContact - static let details = { (mediatorName: String, contactName: String) in - String.localizedStringWithFormat(NSLocalizedString("%@ was added to your contacts following an introduction by %@.", comment: "Invitation details"), contactName, mediatorName) - } - } - - struct AcceptMediatorInvite { - static let subtitle = CommonString.Title.newSuggestedIntroduction - static let details = { (mediatorName: String, contactName: String) in - String.localizedStringWithFormat(NSLocalizedString("%@ wants to introduce you to %@. If you do trust %@ for this, you may accept this invitation and %@ will soon appear in your contacts, with no further actions from your part (provided that %@ also accepts the invitation). If you don't trust %@ or if you simply do not want to be introduced to %@ you can ignore this invitation (neither %@ nor %@ will be notified of this).", comment: "Invitation details"), mediatorName, contactName, mediatorName, contactName, contactName, mediatorName, contactName, contactName, mediatorName) - } - static let buttonTitle2 = NSLocalizedString("Ignore", comment: "Button title") - } - - struct MediatorInviteAccepted { - static let subtitle = NSLocalizedString("Introduction Accepted", comment: "Invitation subtitle") - static let details = { (mediatorName: String, contactName: String) in - String.localizedStringWithFormat(NSLocalizedString("You accepted to be introduced to %@ by %@. Please wait until %@ also accepts this invitation.", comment: "Invitation details"), contactName, mediatorName, contactName) - } - } - - struct IncreaseMediatorTrustLevelRequired { - static let subtitle = AcceptInvite.subtitle - static let details = { (mediatorName: String, contactName: String) in - String.localizedStringWithFormat(NSLocalizedString("%1@ wants to introduce you to %2@.\n\nOlvid\'s security policy requires you to re-validate the identity of %2@ by exchanging 4-digit codes with them, or to invite %1@ directly.", comment: "Invitation details"), contactName, mediatorName, contactName) - } - static let buttonTitle1 = { (mediatorName: String) in String.localizedStringWithFormat(NSLocalizedString("Exchange digits with %@", comment: "Button title"), mediatorName) } - static let buttonTitle2 = { (contactName: String) in String.localizedStringWithFormat(NSLocalizedString("Invite %@", comment: "Button title"), contactName) } - } - - struct AcceptGroupInvite { - static let subtitle = CommonString.Title.invitationToJoinGroup - static let details = { (groupOwnerName: String) in - String.localizedStringWithFormat(NSLocalizedString("YOU_ARE_INVITED_TO_JOIN_A_GROUP_CREATED_BY_%@_EXPLANATION", comment: "Invitation details"), groupOwnerName) - } - static let subsubTitle = NSLocalizedString("Group Members:", comment: "Title before the list of group members.") - } - - struct GroupJoined { - static let subtitle = NSLocalizedString("New Group Joined", comment: "Invitation subtitle") - static let details = { (groupOwnerName: String) in - String.localizedStringWithFormat(NSLocalizedString("You have joined a group created by %@.", comment: "Invitation details"), groupOwnerName) - } - static let showGroupButtonTitle = NSLocalizedString("Show Group", comment: "Button title allowing to navigation towards a contact group") - } - - struct IncreaseGroupOwnerTrustLevelRequired { - static let subtitle = AcceptInvite.subtitle - static let details = { (groupOwnerName: String) in - String.localizedStringWithFormat(NSLocalizedString("%1$@ is inviting you to a discussion group.\n\nOlvid\'s security policy requires you to re-validate the identity of %1$@ by exchanging 4-digit codes with them.", comment: "Invitation details"), groupOwnerName) - } - static let buttonTitle = { (groupOwnerName: String) in String.localizedStringWithFormat(NSLocalizedString("Exchange digits with %@", comment: "Button title"), groupOwnerName) } - } - - struct OneToOneInvitationSent { - static let subtitle = NSLocalizedString("ONE_TO_ONE_INVITATION_SENT", comment: "") - static let details = { (contactName: String) in - String.localizedStringWithFormat(NSLocalizedString("ONE_TO_ONE_DISCUSSION_INVITATION_SENT_TO_%@", comment: "Invitation details"), contactName) - } - } - - struct OneToOneInvitationReceived { - static let subtitle = NSLocalizedString("ONE_TO_ONE_INVITATION_RECEIVED", comment: "") - static let details = { (contactName: String) in - String.localizedStringWithFormat(NSLocalizedString("ONE_TO_ONE_DISCUSSION_INVITATION_RECEIVED_FROM_%@", comment: "Invitation details"), contactName) - } - } - - struct GroupCreated { - static let subtitle = NSLocalizedString("Group Created", comment: "Invitation subtitle") - static let details = { (groupOwnerName: String) in - String.localizedStringWithFormat(NSLocalizedString("All the members of the group created by %@ have accepted the invitation.", comment: "Invitation details"), groupOwnerName) - } - static let subsubTitle = NSLocalizedString("Confirmed Group Members:", comment: "Title before the list of group members.") - } - - struct AbandonInvitation { - static let title = NSLocalizedString("Discard this invitation?", comment: "Action title") - static let actionTitleDiscard = NSLocalizedString("Discard invitation", comment: "Action title") - static let actionTitleDontDiscard = NSLocalizedString("Do not discard invitation", comment: "Action title") - } - - struct AbandonGroupCreation { - static let title = NSLocalizedString("Discard this group creation?", comment: "Action title") - static let message = NSLocalizedString("The other group members will not be notified.", comment: "Action message") - static let actionTitleDiscard = NSLocalizedString("Discard group creation", comment: "Action title") - static let actionTitleDontDiscard = NSLocalizedString("Do not discard group creation", comment: "Action title") - } - - static let chipTitleActionRequired = NSLocalizedString("Action Required", comment: "Chip title") - static let chipTitleNew = NSLocalizedString("New", comment: "Chip title") - static let chipTitleUpdated = NSLocalizedString("Updated", comment: "Chip title") - - struct IncorrectSASAlert { - static let title = NSLocalizedString("Incorrect code", comment: "Title of an alert") - static let message = NSLocalizedString("The core you entered is incorrect. The code you need to enter is the one displayed on your contact's device.", comment: "Message of an alert") - } - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/InvitationsCollectionViewController.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/InvitationsCollectionViewController.xib deleted file mode 100644 index 14f4c413..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/InvitationsCollectionViewController.xib +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/InvitationsCollectionViewControllerDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/InvitationsCollectionViewControllerDelegate.swift deleted file mode 100644 index a8a73520..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/InvitationsCollectionViewControllerDelegate.swift +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import ObvTypes - -protocol InvitationsCollectionViewControllerDelegate: AnyObject { - - func performTrustEstablishmentProtocolOfRemoteIdentity(remoteCryptoId: ObvCryptoId, remoteFullDisplayName: String) - func rePerformTrustEstablishmentProtocolOfContactIdentity(contactCryptoId: ObvCryptoId, contactFullDisplayName: String) - - func userWantsToCancelSentInviteContactToOneToOne(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingHeaderView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingHeaderView.swift deleted file mode 100644 index 46292ea7..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingHeaderView.swift +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -protocol CellContainingHeaderView { - - var cellHeaderView: CellHeaderView! { get } - -} - -extension CellContainingHeaderView where Self: InvitationCollectionCell { - - var title: String { - get { return cellHeaderView.title } - set { cellHeaderView.title = newValue } - } - - var subtitle: String { - get { return cellHeaderView.subtitle } - set { cellHeaderView.subtitle = newValue } - } - - var details: String { - get { return cellHeaderView.details } - set { cellHeaderView.details = newValue } - } - - var date: Date? { - get { return cellHeaderView.date } - set { cellHeaderView.date = newValue } - } - - var identityColors: (background: UIColor, text: UIColor)? { - get { return cellHeaderView.identityColors } - set { cellHeaderView.identityColors = newValue } - } - - func addChip(withText text: String) { - cellHeaderView.addChip(withText: text) - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingOneButtonView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingOneButtonView.swift deleted file mode 100644 index fa8972a6..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingOneButtonView.swift +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -protocol CellContainingOneButtonView { - - var oneButtonView: OneButtonView? { get } - - var buttonTitle: String? { get set } - var buttonAction: (() -> Void)? { get set } -} - -extension CellContainingOneButtonView { - - var buttonTitle: String? { - get { return oneButtonView?.buttonTitle } - set { oneButtonView?.buttonTitle = newValue } - } - - var buttonAction: (() -> Void)? { - get { return oneButtonView?.buttonAction } - set { oneButtonView?.buttonAction = newValue } - } - - func useLeadingButton() { - oneButtonView?.useLeadingButton() - } - - func useTrailingButton() { - oneButtonView?.useTrailingButton() - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingOneColumnView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingOneColumnView.swift deleted file mode 100644 index 751109fa..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingOneColumnView.swift +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -protocol CellContainingOneColumnView { - - var oneColumnView: OneColumnView! { get } - -} - -extension CellContainingOneColumnView { - - func setTitle(with title: String) { - oneColumnView.setTitle(with: title) - } - - func setList(with list: [String]) { - oneColumnView.setList(with: list) - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingSasView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingSasView.swift deleted file mode 100644 index d94b41fb..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingSasView.swift +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -protocol CellContainingSasView { - - var sasView: SasView! { get } - - var onSasInput: ((String) -> Void)? { get set } - var onAbort: (() -> Void)? { get set } - - func setOwnSas(ownSas: Data) throws - -} - -extension CellContainingSasView { - - func resetContactSas() { - sasView.resetContactSas() - } - - var onSasInput: ((String) -> Void)? { - get { - return sasView.onSasInput - } - set { - sasView.onSasInput = newValue - } - } - - var onAbort: (() -> Void)? { - get { - return sasView.onAbort - } - set { - sasView.onAbort = newValue - } - } - - func setOwnSas(ownSas: Data) throws { - try sasView.setOwnSas(ownSas: ownSas) - } - - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingTwoButtonsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingTwoButtonsView.swift deleted file mode 100644 index 681f434a..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingTwoButtonsView.swift +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation - -protocol CellContainingTwoButtonsView { - - var twoButtonsView: TwoButtonsView! { get } - - var buttonTitle1: String { get set } - var buttonTitle2: String { get set } - - var button1Action: (() -> Void)? { get set } - var button2Action: (() -> Void)? { get set } - -} - -extension CellContainingTwoButtonsView { - - var buttonTitle1: String { - get { return twoButtonsView.buttonTitle1 } - set { twoButtonsView.buttonTitle1 = newValue } - } - - var buttonTitle2: String { - get { return twoButtonsView.buttonTitle2 } - set { twoButtonsView.buttonTitle2 = newValue } - } - - var button1Action: (() -> Void)? { - get { return twoButtonsView.button1Action } - set { twoButtonsView.button1Action = newValue } - } - - var button2Action: (() -> Void)? { - get { return twoButtonsView.button2Action } - set { twoButtonsView.button2Action = newValue } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingTwoColumnsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingTwoColumnsView.swift deleted file mode 100644 index 1d325f65..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/CellContainingTwoColumnsView.swift +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -protocol CellContainingTwoColumnsView { - - var oneColumnView: TwoColumnsView! { get } - -} - -extension CellContainingTwoColumnsView { - - func setLeftTile(with title: String) { - oneColumnView.setLeftTile(with: title) - } - - func setRightTile(with title: String) { - oneColumnView.setRightTile(with: title) - } - - func setLeftList(with list: [String]) { - oneColumnView.setLeftList(with: list) - } - - func setRightList(with list: [String]) { - oneColumnView.setRightList(with: list) - } - - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/InvitationCollectionCell.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/InvitationCollectionCell.swift deleted file mode 100644 index 2ad66577..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/Protocols/InvitationCollectionCell.swift +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - - -protocol InvitationCollectionCell { - - static var nibName: String { get } - static var identifier: String { get } - - func setWidth(to: CGFloat) - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/Base.lproj/SasAcceptedView.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/Base.lproj/SasAcceptedView.xib deleted file mode 100644 index 57aabeff..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/Base.lproj/SasAcceptedView.xib +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/Base.lproj/SasView.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/Base.lproj/SasView.xib deleted file mode 100644 index 0a14aa6f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/Base.lproj/SasView.xib +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/CellHeaderView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/CellHeaderView.swift deleted file mode 100644 index d1540a66..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/CellHeaderView.swift +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - -final class CellHeaderView: UIView { - - static let nibName = "CellHeaderView" - - var title = "" { didSet { setTitleViewText(); setCircledText() } } - var subtitle = "" { didSet { setSubtitleViewText() } } - var details = "" { didSet { setDetailsTextViewText() } } - var date: Date? { didSet { setDateLabelText() } } - var identityColors: (background: UIColor, text: UIColor)? { didSet { setIdentityColors() } } - - // Views - - @IBOutlet weak var circlePlaceholder: UIView! { didSet { circlePlaceholder.backgroundColor = .clear }} - @IBOutlet weak var titleLabel: UILabel! { didSet { titleLabel.textColor = AppTheme.shared.colorScheme.label } } - @IBOutlet weak var subtitleLabel: UILabel! { didSet { subtitleLabel?.textColor = AppTheme.shared.colorScheme.secondaryLabel } } - @IBOutlet weak var detailsLabel: UILabel! { didSet { detailsLabel?.textColor = AppTheme.shared.colorScheme.secondaryLabel } } - @IBOutlet weak var dateLabel: UILabel! { didSet { dateLabel?.textColor = AppTheme.shared.colorScheme.tertiaryLabel } } - @IBOutlet weak var titleStackView: UIStackView! - private var chipsStack: UIStackView? = nil - - // Subviews set in awakeFromNib - - var circledInitials: CircledInitials! - var leadingTextAnchor: NSLayoutXAxisAnchor! - - let dateFormater: DateFormatter = { - let df = DateFormatter() - df.doesRelativeDateFormatting = true - df.dateStyle = .short - df.timeStyle = .short - df.locale = Locale.current - return df - }() - - - func addChip(withText text: String) { - let obvChipView = ObvChipLabel() - obvChipView.chipColor = appTheme.colorScheme.systemFill - obvChipView.text = text - obvChipView.textColor = ObvChipLabel.defaultTextColor - if let chipsStack = self.chipsStack { - chipsStack.addArrangedSubview(obvChipView) - } else { - self.chipsStack = UIStackView(arrangedSubviews: [obvChipView]) - self.chipsStack?.spacing = 4 - if let titleStackView = self.titleStackView { - titleStackView.addArrangedSubview(self.chipsStack!) - } - } - } - - - func prepareForReuse() { - if let chipsStack = self.chipsStack { - titleStackView.removeArrangedSubview(chipsStack) - chipsStack.removeFromSuperview() - self.setNeedsDisplay() - } - self.chipsStack = nil - } -} - -// MARK: - awakeFromNib - -extension CellHeaderView { - - override func awakeFromNib() { - super.awakeFromNib() - translatesAutoresizingMaskIntoConstraints = false - leadingTextAnchor = titleLabel.leadingAnchor - instantiateAndPlaceCircledInitials() - - if let chipsStack = self.chipsStack { - titleStackView.addArrangedSubview(chipsStack) - } - } - - private func instantiateAndPlaceCircledInitials() { - - circledInitials = (Bundle.main.loadNibNamed(CircledInitials.nibName, owner: nil, options: nil)!.first as! CircledInitials) - circlePlaceholder.addSubview(circledInitials) - circledInitials.topAnchor.constraint(equalTo: circlePlaceholder.topAnchor).isActive = true - circledInitials.bottomAnchor.constraint(equalTo: circlePlaceholder.bottomAnchor).isActive = true - circledInitials.leadingAnchor.constraint(equalTo: circlePlaceholder.leadingAnchor).isActive = true - circledInitials.trailingAnchor.constraint(equalTo: circlePlaceholder.trailingAnchor).isActive = true - - } - -} - -// MARK: - Setting the view's texts and sizes - -extension CellHeaderView { - - private func setTitleViewText() { - titleLabel.text = title - } - - private func setSubtitleViewText() { - subtitleLabel.text = subtitle - } - - private func setDetailsTextViewText() { - detailsLabel.text = details - } - - private func setDateLabelText() { - if let date = date { - dateLabel.text = dateFormater.string(from: date) - } - } - -} - -// MARK: - Drawing the circle - -extension CellHeaderView { - - private func setCircledText() { - circledInitials.showCircledText(from: title) - } - - private func setIdentityColors() { - circledInitials.identityColors = identityColors - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/CellHeaderView.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/CellHeaderView.xib deleted file mode 100644 index 242979ef..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/CellHeaderView.xib +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneButtonView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneButtonView.swift deleted file mode 100644 index d55beb7a..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneButtonView.swift +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -class OneButtonView: UIView { - - static let nibName = "OneButtonView" - - var buttonTitle: String? = "" { - didSet { - trailingButton.setTitle(buttonTitle, for: .normal) - leadingButton.setTitle(buttonTitle, for: .normal) - } - } - var buttonAction: (() -> Void)? = nil - - // Views - - @IBOutlet weak var leadingButton: UIButton! - @IBOutlet weak var trailingButton: UIButton! - -} - -// MARK: - awakeFromNib - -extension OneButtonView { - - override func awakeFromNib() { - super.awakeFromNib() - translatesAutoresizingMaskIntoConstraints = false - useTrailingButton() - } - - func useLeadingButton() { - leadingButton.isHidden = false - trailingButton.isHidden = true - } - - func useTrailingButton() { - leadingButton.isHidden = true - trailingButton.isHidden = false - } -} - - -extension OneButtonView { - - @IBAction func buttonPressed(_ sender: UIButton) { - buttonAction?() - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneButtonView.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneButtonView.xib deleted file mode 100644 index 0279e675..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneButtonView.xib +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneColumnView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneColumnView.swift deleted file mode 100644 index 820a8148..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneColumnView.swift +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit - - -class OneColumnView: UIView { - - static let nibName = "OneColumnView" - - // Views - - @IBOutlet weak var titleLabel: UILabel! - @IBOutlet weak var listLabel: UILabel! - -} - -// MARK: - awakeFromNib - -extension OneColumnView { - - override func awakeFromNib() { - super.awakeFromNib() - translatesAutoresizingMaskIntoConstraints = false - configureAttributes() - } - - - private func configureAttributes() { - titleLabel.textColor = AppTheme.shared.colorScheme.label - listLabel.textColor = AppTheme.shared.colorScheme.secondaryLabel - } - -} - - -// MARK: - API - -extension OneColumnView { - - func setTitle(with title: String) { - titleLabel.text = title - } - - - func setList(with list: [String]) { - var s = "" - for (index, item) in list.enumerated() { - s += "∙ \(item)" - if index != list.count-1 { - s += "\n" - } - } - if s == "" { - s = "None" - } - listLabel.text = s - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneColumnView.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneColumnView.xib deleted file mode 100644 index d5da1047..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/OneColumnView.xib +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/SasAcceptedView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/SasAcceptedView.swift deleted file mode 100644 index 7c3df3c0..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/SasAcceptedView.swift +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import OlvidUtils -import ObvUI - -class SasAcceptedView: UIView, ObvErrorMaker { - - static let nibName = "SasAcceptedView" - - private let expectedSasLength = 4 - private let sasFont = UIFont.preferredFont(forTextStyle: .title2) - - static let errorDomain = "SasAcceptedView" - - @IBOutlet weak var ownSasTitleLabel: UILabel! { didSet { ownSasTitleLabel.textColor = AppTheme.shared.colorScheme.label } } - @IBOutlet weak var contactSasTitleLabel: UILabel! { didSet { contactSasTitleLabel.textColor = AppTheme.shared.colorScheme.label }} - - @IBOutlet weak var ownSasLabel: UILabel! { - didSet { - ownSasLabel.textColor = AppTheme.shared.colorScheme.secondaryLabel - ownSasLabel.font = sasFont - } - } - @IBOutlet weak var contactSasLabel: UILabel! { - didSet { - contactSasLabel.textColor = AppTheme.shared.colorScheme.secondaryLabel - contactSasLabel.font = sasFont - contactSasLabel.text = "✓" - } - } - -} - -// MARK: - awakeFromNib, configuration and responding to external events - -extension SasAcceptedView { - - override func awakeFromNib() { - super.awakeFromNib() - translatesAutoresizingMaskIntoConstraints = false - } - -} - -// MARK: - SAS related stuff - -fileprivate extension String { - - func isValidSas(ofLength length: Int) -> Bool { - guard self.count == length else { return false } - return self.allSatisfy { $0.isValidSasCharacter() } - } - -} - -fileprivate extension Character { - - func isValidSasCharacter() -> Bool { - return self >= "0" && self <= "9" - } - -} - -extension SasAcceptedView { - - func setOwnSas(ownSas: Data) throws { - guard let sas = String(data: ownSas, encoding: .utf8) else { throw Self.makeError(message: "Could not turn SAS into string") } - guard sas.isValidSas(ofLength: expectedSasLength) else { throw Self.makeError(message: "SAS is not valid") } - ownSasLabel.text = sas - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/SasView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/SasView.swift deleted file mode 100644 index fc749918..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/SasView.swift +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import OlvidUtils -import ObvUI - - -class SasView: UIView, ObvErrorMaker { - - static let nibName = "SasView" - - private let expectedSasLength = 4 - private let sasFont = UIFont.preferredFont(forTextStyle: .title2) - static let errorDomain = "SasView" - - // Views - - @IBOutlet weak var ownSasTitleLabel: UILabel! { didSet { ownSasTitleLabel.textColor = AppTheme.shared.colorScheme.label } } - @IBOutlet weak var contactSasTitleLabel: UILabel! { didSet { contactSasTitleLabel.textColor = AppTheme.shared.colorScheme.label }} - - @IBOutlet weak var ownSasLabel: UILabel! { - didSet { - ownSasLabel.textColor = AppTheme.shared.colorScheme.secondaryLabel - ownSasLabel.font = sasFont - } - } - - @IBOutlet weak var contactSasTextField: ObvTextField! { - didSet { - contactSasTextField.delegate = self - contactSasTextField.font = sasFont - contactSasTextField.textColor = appTheme.colorScheme.secondaryLabel - NotificationCenter.default.addObserver(forName: UITextField.textDidChangeNotification, object: contactSasTextField, queue: OperationQueue.main, using: self.textFieldDidChange) - } - } - - @IBOutlet weak var contactSasTextFieldWidth: NSLayoutConstraint! { - didSet { - let width = computeWidthOfContactSasTextField() - if contactSasTextFieldWidth.constant != width { - contactSasTextFieldWidth.constant = width - setNeedsLayout() - } - } - } - - @IBOutlet weak var doneButton: ObvButtonBorderless! - - var onSasInput: ((_ enteredDigits: String) -> Void)? - var onAbort: (() -> Void)? -} - -// MARK: - awakeFromNib, configuration and responding to external events - -extension SasView { - - override func awakeFromNib() { - super.awakeFromNib() - translatesAutoresizingMaskIntoConstraints = false - evaluateEnteredContactSasAndUpdateUI() - } - - @IBAction func doneButtonTapped(_ sender: UIButton) { - if let sas = evaluateEnteredContactSasAndUpdateUI() { - onSasInput?(sas) - } - } - - @IBAction func abortButtonTapped(_ sender: Any) { - onAbort?() - } - - - private func computeWidthOfContactSasTextField() -> CGFloat { - let typicalSas = String(repeating: "X", count: expectedSasLength) as NSString - let minimumWidth = typicalSas.size(withAttributes: [NSAttributedString.Key.font: sasFont]).width - let finalWidth = minimumWidth * 1.1 - return finalWidth - } - - override func resignFirstResponder() -> Bool { - if let enteredSas = contactSasTextField.text { - if enteredSas.isEmpty { - resetContactSas() - } - } else { - resetContactSas() - } - return contactSasTextField.resignFirstResponder() - } - -} - -// MARK: - SAS related stuff - -fileprivate extension String { - - func isValidSas(ofLength length: Int) -> Bool { - guard self.count == length else { return false } - return self.allSatisfy { $0.isValidSasCharacter() } - } - -} - -fileprivate extension Character { - - func isValidSasCharacter() -> Bool { - return self >= "0" && self <= "9" - } - -} - -extension SasView { - - func setOwnSas(ownSas: Data) throws { - guard let sas = String(data: ownSas, encoding: .utf8) else { throw Self.makeError(message: "Could not turn SAS into string") } - guard sas.isValidSas(ofLength: expectedSasLength) else { throw Self.makeError(message: "Invalid SAS") } - ownSasLabel.text = sas - - } - - func resetContactSas() { - contactSasTextField.text = "" - contactSasTextField.placeholder = String(repeating: "X", count: expectedSasLength) - evaluateEnteredContactSasAndUpdateUI() - } - - // Returns a SAS as a String iff it may be a valid SAS - @discardableResult - private func evaluateEnteredContactSasAndUpdateUI() -> String? { - var sas: String? = nil - doneButton.isEnabled = false - if let text = contactSasTextField.text { - if text.isValidSas(ofLength: expectedSasLength) { - sas = text - doneButton.isEnabled = true - } - } - return sas - } - -} - -// MARK: - UITextFieldDelegate - -extension SasView: UITextFieldDelegate { - - func textFieldDidBeginEditing(_ textField: UITextField) { - let NotificationType = MessengerInternalNotification.TextFieldDidBeginEditing.self - let userInfo = [NotificationType.Key.textField: textField] - NotificationCenter.default.post(name: NotificationType.name, - object: nil, - userInfo: userInfo) - contactSasTextField.placeholder = "" - } - - func textFieldDidEndEditing(_ textField: UITextField) { - let NotificationType = MessengerInternalNotification.TextFieldDidEndEditing.self - let userInfo = [NotificationType.Key.textField: textField] - NotificationCenter.default.post(name: NotificationType.name, - object: nil, - userInfo: userInfo) - - } - - func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { - - defer { - evaluateEnteredContactSasAndUpdateUI() - } - - // Validate the string - guard range.location >= 0 && range.location < expectedSasLength else { return false } - guard string.isValidSas(ofLength: string.count) else { return false } - - return true - } - - func textFieldDidChange(notification: Notification) { - debugPrint(contactSasTextField.text ?? "Vide") - evaluateEnteredContactSasAndUpdateUI() - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoButtonsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoButtonsView.swift deleted file mode 100644 index dab7666a..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoButtonsView.swift +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit - -class TwoButtonsView: UIView { - - static let nibName = "TwoButtonsView" - - // Vars - - var buttonTitle1: String = "" { didSet { button1?.setTitle(buttonTitle1.uppercased(), for: .normal) }} - var buttonTitle2: String = "" { didSet { button2?.setTitle(buttonTitle2.uppercased(), for: .normal) }} - var button1Action: (() -> Void)? = nil - var button2Action: (() -> Void)? = nil - - // Views - - @IBOutlet weak var stackView: UIStackView! - @IBOutlet weak var button1: UIButton! - @IBOutlet weak var button2: UIButton! - -} - -// MARK: - awakeFromNib - -extension TwoButtonsView { - - override func awakeFromNib() { - super.awakeFromNib() - translatesAutoresizingMaskIntoConstraints = false - } - -} - - -extension TwoButtonsView { - - @IBAction func button1Pressed(_ sender: UIButton) { - button1Action?() - } - - @IBAction func button2Pressed(_ sender: UIButton) { - button2Action?() - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoButtonsView.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoButtonsView.xib deleted file mode 100644 index 132ed7bb..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoButtonsView.xib +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoColumnsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoColumnsView.swift deleted file mode 100644 index 6bca22f1..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoColumnsView.swift +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit -import ObvUICoreData - -class TwoColumnsView: UIView { - - static let nibName = "TwoColumnsView" - - // Views - - @IBOutlet weak var titleLeft: UILabel! - @IBOutlet weak var titleRight: UILabel! - @IBOutlet weak var listLeft: UILabel! - @IBOutlet weak var listRight: UILabel! - -} - - -// MARK: - awakeFromNib - -extension TwoColumnsView { - - override func awakeFromNib() { - super.awakeFromNib() - translatesAutoresizingMaskIntoConstraints = false - configureAttributes() - } - - - private func configureAttributes() { - titleLeft.textColor = AppTheme.shared.colorScheme.label - titleRight.textColor = AppTheme.shared.colorScheme.label - listLeft.textColor = AppTheme.shared.colorScheme.secondaryLabel - listRight.textColor = AppTheme.shared.colorScheme.secondaryLabel - } - -} - - -// MARK: - API - -extension TwoColumnsView { - - func setLeftTile(with title: String) { - titleLeft.text = title - } - - func setRightTile(with title: String) { - titleRight.text = title - } - - func setLeftList(with list: [String]) { - var s = "" - for (index, item) in list.enumerated() { - s += "✓ \(item)" - if index != list.count-1 { - s += "\n" - } - } - if s == "" { - s = CommonString.Word.None - } - listLeft.text = s - } - - func setRightList(with list: [String]) { - var s = "" - for (index, item) in list.enumerated() { - s += "∙ \(item)" - if index != list.count-1 { - s += "\n" - } - } - if s == "" { - s = "None" - } - listRight.text = s - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoColumnsView.xib b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoColumnsView.xib deleted file mode 100644 index bdcba942..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/TwoColumnsView.xib +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/en.lproj/SasAcceptedView.strings b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/en.lproj/SasAcceptedView.strings deleted file mode 100644 index 2e293355..00000000 Binary files a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/en.lproj/SasAcceptedView.strings and /dev/null differ diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/en.lproj/SasView.strings b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/en.lproj/SasView.strings deleted file mode 100644 index bd76dcbb..00000000 Binary files a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/en.lproj/SasView.strings and /dev/null differ diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/fr.lproj/SasAcceptedView.strings b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/fr.lproj/SasAcceptedView.strings deleted file mode 100644 index 6b3f80a7..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/fr.lproj/SasAcceptedView.strings +++ /dev/null @@ -1,12 +0,0 @@ -/* Class = "UILabel"; text = "Their code"; ObjectID = "8VV-sN-VLn"; */ -"8VV-sN-VLn.text" = "Son code"; - -/* Class = "UILabel"; text = "Label"; ObjectID = "Dqg-5W-RKw"; */ -"Dqg-5W-RKw.text" = "Label"; - -/* Class = "UILabel"; text = "1234"; ObjectID = "l4W-cB-lm0"; */ -"l4W-cB-lm0.text" = "1234"; - -/* Class = "UILabel"; text = "Your code"; ObjectID = "tME-dH-zW5"; */ -"tME-dH-zW5.text" = "Votre code"; - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/fr.lproj/SasView.strings b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/fr.lproj/SasView.strings deleted file mode 100644 index c16e7dd9..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsCollection/ViewsForCells/fr.lproj/SasView.strings +++ /dev/null @@ -1,18 +0,0 @@ -/* Class = "UILabel"; text = "Their code"; ObjectID = "7HI-Rw-quu"; */ -"7HI-Rw-quu.text" = "Son code"; - -/* Class = "UIButton"; normalTitle = "Abort"; ObjectID = "bh5-eA-0JV"; */ -"bh5-eA-0JV.normalTitle" = "Abandonner"; - -/* Class = "UILabel"; text = "Your code"; ObjectID = "d5j-tO-pm0"; */ -"d5j-tO-pm0.text" = "Votre code"; - -/* Class = "UILabel"; text = "1234"; ObjectID = "eCh-VR-X2b"; */ -"eCh-VR-X2b.text" = "1234"; - -/* Class = "UIButton"; normalTitle = "Done"; ObjectID = "evp-tE-c8V"; */ -"evp-tE-c8V.normalTitle" = "Ok"; - -/* Class = "UITextField"; placeholder = "XXXX"; ObjectID = "nC3-u6-ULt"; */ -"nC3-u6-ULt.placeholder" = "XXXX"; - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsFlowViewController.swift deleted file mode 100644 index 3971a64e..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/InvitationsFlowViewController.swift +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import os.log -import ObvTypes -import ObvEngine -import ObvUICoreData - -final class InvitationsFlowViewController: UINavigationController, ObvFlowController { - - private(set) var currentOwnedCryptoId: ObvCryptoId - let obvEngine: ObvEngine - - let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: InvitationsFlowViewController.self)) - - var observationTokens = [NSObjectProtocol]() - - static let errorDomain = "InvitationsFlowViewController" - - weak var flowDelegate: ObvFlowControllerDelegate? - - // MARK: - Factory - - init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine) { - - self.currentOwnedCryptoId = ownedCryptoId - self.obvEngine = obvEngine - - let layout = UICollectionViewFlowLayout() - let invitationsCollectionViewController = InvitationsCollectionViewController(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine, collectionViewLayout: layout) - super.init(rootViewController: invitationsCollectionViewController) - - invitationsCollectionViewController.delegate = self - - } - - override var delegate: UINavigationControllerDelegate? { - get { - super.delegate - } - set { - // The ObvUserActivitySingleton properly iff it is the delegate of this UINavigationController - guard newValue is ObvUserActivitySingleton else { assertionFailure(); return } - super.delegate = newValue - } - } - - - required init?(coder aDecoder: NSCoder) { fatalError("die") } - - deinit { - observationTokens.forEach { NotificationCenter.default.removeObserver($0) } - } - -} - -// MARK: - Lifecycle - -extension InvitationsFlowViewController { - - override func viewDidLoad() { - super.viewDidLoad() - - title = CommonString.Word.Invitations - - let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 20.0, weight: .bold) - let image = UIImage(systemName: "tray.and.arrow.down", withConfiguration: symbolConfiguration) - tabBarItem = UITabBarItem(title: nil, image: image, tag: 0) - - delegate = ObvUserActivitySingleton.shared - - let appearance = UINavigationBarAppearance() - appearance.configureWithOpaqueBackground() - navigationBar.standardAppearance = appearance - - } - -} - - -// MARK: - Switching current owned identity - -extension InvitationsFlowViewController { - - @MainActor - func switchCurrentOwnedCryptoId(to newOwnedCryptoId: ObvCryptoId) async { - popToRootViewController(animated: false) - guard let invitationsCollectionViewController = viewControllers.first as? InvitationsCollectionViewController else { assertionFailure(); return } - await invitationsCollectionViewController.switchCurrentOwnedCryptoId(to: newOwnedCryptoId) - } - -} - - -// MARK: - InvitationsDelegate - -extension InvitationsFlowViewController { - - private func respondToInvitation(dialog: ObvDialog, acceptInvite: Bool) { - var localDialog = dialog - do { - try localDialog.setResponseToAcceptInvite(acceptInvite: acceptInvite) - } catch { - assertionFailure() - return - } - obvEngine.respondTo(localDialog) - } - - private func confirmDigits(dialog: ObvDialog, enteredDigits: String) { - var localDialog = dialog - guard let sas = enteredDigits.data(using: .utf8) else { return } - try? localDialog.setResponseToSasExchange(otherSas: sas) - obvEngine.respondTo(localDialog) - } -} - - -// MARK: - InvitationsCollectionViewControllerDelegate - -extension InvitationsFlowViewController: InvitationsCollectionViewControllerDelegate { - - func performTrustEstablishmentProtocolOfRemoteIdentity(remoteCryptoId: ObvCryptoId, remoteFullDisplayName: String) { - flowDelegate?.performTrustEstablishmentProtocolOfRemoteIdentity(remoteCryptoId: remoteCryptoId, remoteFullDisplayName: remoteFullDisplayName) - } - - func rePerformTrustEstablishmentProtocolOfContactIdentity(contactCryptoId: ObvCryptoId, contactFullDisplayName: String) { - flowDelegate?.rePerformTrustEstablishmentProtocolOfContactIdentity(contactCryptoId: contactCryptoId, contactFullDisplayName: contactFullDisplayName) - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/NewInvitationsFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/NewInvitationsFlowViewController.swift new file mode 100644 index 00000000..9449ca94 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/NewInvitationsFlowViewController.swift @@ -0,0 +1,123 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import os.log +import ObvTypes +import ObvEngine +import ObvUICoreData + + + +final class NewInvitationsFlowViewController: UINavigationController, ObvFlowController { + + private(set) var currentOwnedCryptoId: ObvCryptoId + let obvEngine: ObvEngine + + let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: NewInvitationsFlowViewController.self)) + static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: NewInvitationsFlowViewController.self)) + + static let errorDomain = "" + + weak var flowDelegate: ObvFlowControllerDelegate? + + var observationTokens = [NSObjectProtocol]() + + init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine) { + self.currentOwnedCryptoId = ownedCryptoId + self.obvEngine = obvEngine + let vc = AllInvitationsViewController(ownedCryptoId: ownedCryptoId) + super.init(rootViewController: vc) + vc.delegate = self + } + + + required init?(coder aDecoder: NSCoder) { fatalError("die") } + + + override var delegate: UINavigationControllerDelegate? { + get { + super.delegate + } + set { + // The ObvUserActivitySingleton property iff it is the delegate of this UINavigationController + guard newValue is ObvUserActivitySingleton else { assertionFailure(); return } + super.delegate = newValue + } + } + + + func switchCurrentOwnedCryptoId(to newOwnedCryptoId: ObvCryptoId) async { + popToRootViewController(animated: false) + guard let allInvitationsVC = viewControllers.first as? AllInvitationsViewController else { assertionFailure(); return } + await allInvitationsVC.switchCurrentOwnedCryptoId(to: newOwnedCryptoId) + } + +} + + +// MARK: - Lifecycle + +extension NewInvitationsFlowViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 20.0, weight: .bold) + let image = UIImage(systemName: "tray.and.arrow.down", withConfiguration: symbolConfiguration) + tabBarItem = UITabBarItem(title: nil, image: image, tag: 0) + + delegate = ObvUserActivitySingleton.shared + + } + +} + + +// MARK: - AllInvitationsViewControllerDelegate + +extension NewInvitationsFlowViewController: AllInvitationsViewControllerDelegate { + + func userWantsToRespondToDialog(controller: AllInvitationsViewController, obvDialog: ObvDialog) async throws { + try await obvEngine.respondTo(obvDialog) + } + + func userWantsToAbortProtocol(controller: AllInvitationsViewController, obvDialog: ObvTypes.ObvDialog) async throws { + try obvEngine.abortProtocol(associatedTo: obvDialog) + } + + func userWantsToDeleteDialog(controller: AllInvitationsViewController, obvDialog: ObvDialog) async throws { + try obvEngine.deleteDialog(with: obvDialog.uuid) + } + + @MainActor + func userWantsToDiscussWithContact(controller: AllInvitationsViewController, ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async throws { + guard let contact = try? PersistedObvContactIdentity.get(contactCryptoId: contactCryptoId, + ownedIdentityCryptoId: ownedCryptoId, + whereOneToOneStatusIs: .oneToOne, + within: ObvStack.shared.viewContext), + let discussionId = contact.oneToOneDiscussion?.discussionPermanentID else { + return + } + let deepLink = ObvDeepLink.singleDiscussion(ownedCryptoId: ownedCryptoId, objectPermanentID: discussionId) + ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) + .postOnDispatchQueue() + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/AllInvitationsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/AllInvitationsView.swift new file mode 100644 index 00000000..71c59f5e --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/AllInvitationsView.swift @@ -0,0 +1,153 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import UI_SystemIcon + + +/// Is expected to be implemented by ``PersistedObvOwnedIdentity``. +protocol AllInvitationsViewModelProtocol: ObservableObject { + + associatedtype InvitationViewModel: InvitationViewModelProtocol + + var sortedInvitations: [InvitationViewModel] { get } + +} + + +protocol AllInvitationsViewActionsProtocol: AnyObject, InvitationViewActionsProtocol {} + +struct AllInvitationsView: View { + + let actions: AllInvitationsViewActionsProtocol + @ObservedObject var model: Model + + var body: some View { + if !model.sortedInvitations.isEmpty { + ScrollView { + VStack { + ForEach(model.sortedInvitations, id: \.invitationUUID) { invitation in + ObvCardView { + InvitationView(actions: actions, model: invitation) + } + .padding(.bottom) + } + } + .padding() + } + } else { + VStack(alignment: .center) { + HStack { + Spacer() + VStack { + Image(systemIcon: .tray) + .font(.system(size: 50)) + .foregroundStyle(.secondary) + .padding(.bottom) + Text("NO_INVITATION_FOR_NOW_TITLE") + .font(.headline) + .foregroundStyle(.primary) + Text("NO_INVITATION_FOR_NOW_BODY") + .font(.subheadline) + .foregroundStyle(.secondary) + } + Spacer() + } + } + } + } +} + + +// MARK: - Previews + +struct AllInvitationsView_Previews: PreviewProvider { + + private static let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + private static let otherCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + private final class InvitationModelForPreviews: InvitationViewModelProtocol { + + private static let someDialog = ObvDialog( + uuid: UUID(), + encodedElements: 0.obvEncode(), + ownedCryptoId: AllInvitationsView_Previews.ownedCryptoId, + category: .acceptInvite(contactIdentity: .init( + cryptoId: otherCryptoId, + currentIdentityDetails: .init(coreDetails: try! .init(firstName: "Steve", + lastName: "Jobs", + company: nil, + position: nil, + signedUserDetails: nil), + photoURL: nil)))) + + let ownedCryptoId: ObvCryptoId? = AllInvitationsView_Previews.ownedCryptoId + let title = "Invitation title" + let subtitle = "Invitation subtitle" + let body: String? = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam placerat dignissim nulla. Nullam sed felis nec purus maximus ultricies vitae non mauris. Maecenas quis volutpat lectus." + let invitationUUID = UUID() + var dismissDialog: ObvDialog? { Self.someDialog } + var sasToExchange: (sasToShow: [Character], onSASInput: ((String) -> ObvTypes.ObvDialog?)?)? { + return nil + } + + var buttons: [InvitationViewButtonKind] { + return [] + } + + var numberOfBadEnteredSas = 0 + + var groupMembers: [String] { + ["Steve Jobs"] + } + + var showRedDot: Bool { true } + + var titleSystemIcon: SystemIcon? { return .person } + + var titleSystemIconColor: Color { Color(UIColor.systemPink) } + + } + + + private final class ModelForPreviews: AllInvitationsViewModelProtocol { + let sortedInvitations: [InvitationModelForPreviews] = [ + InvitationModelForPreviews(), + InvitationModelForPreviews(), + ] + } + + private static let model = ModelForPreviews() + + final class ActionsForPreviews: AllInvitationsViewActionsProtocol { + func userWantsToRespondToDialog(_ obvDialog: ObvDialog) {} + func userWantsToAbortProtocol(associatedTo obvDialog: ObvDialog) async throws {} + func userWantsToDeleteDialog(_ obvDialog: ObvDialog) async throws {} + func userWantsToDiscussWithContact(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async throws {} + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + AllInvitationsView(actions: actions, model: model) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/Cells/InvitationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/Cells/InvitationView.swift new file mode 100644 index 00000000..f6de1768 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/Cells/InvitationView.swift @@ -0,0 +1,686 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import Combine +import UI_SystemIcon + + +protocol InvitationViewModelProtocol: ObservableObject { + var ownedCryptoId: ObvCryptoId? { get } // Expected to be non-nil + var title: String { get } + var titleSystemIcon: SystemIcon? { get } + var titleSystemIconColor: Color { get } + var subtitle: String { get } + var body: String? { get } + var invitationUUID: UUID { get } + var sasToExchange: (sasToShow: [Character], onSASInput: ((String) -> ObvDialog?)?)? { get } + var buttons: [InvitationViewButtonKind] { get } + var numberOfBadEnteredSas: Int { get } + var groupMembers: [String] { get } + var showRedDot: Bool { get } +} + + +protocol InvitationViewActionsProtocol { + func userWantsToRespondToDialog(_ obvDialog: ObvDialog) async throws + func userWantsToAbortProtocol(associatedTo obvDialog: ObvDialog) async throws + func userWantsToDeleteDialog(_ obvDialog: ObvDialog) async throws + func userWantsToDiscussWithContact(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async throws +} + + +enum InvitationViewButtonKind: Identifiable, Equatable { + case blueForRespondingToDialog(obvDialog: ObvDialog, localizedTitle: String) + case plainForRespondingToDialog(obvDialog: ObvDialog, localizedTitle: String, confirmationTitle: LocalizedStringKey?) + case plainForAbortingProtocol(obvDialog: ObvDialog, localizedTitle: String) + case plainForDeletingDialog(obvDialog: ObvDialog, localizedTitle: String) + case discussWithContact(contact: ObvGenericIdentity) + case spacer + var id: String { + switch self { + case .blueForRespondingToDialog(let obvDialog, let localizedTitle), + .plainForRespondingToDialog(obvDialog: let obvDialog, localizedTitle: let localizedTitle, _), + .plainForAbortingProtocol(obvDialog: let obvDialog, localizedTitle: let localizedTitle), + .plainForDeletingDialog(obvDialog: let obvDialog, localizedTitle: let localizedTitle): + return [obvDialog.uuid.uuidString, localizedTitle].joined(separator: "|") + case .discussWithContact(contact: let contact): + return ["discussWithContact", contact.cryptoId.getIdentity().hexString()].joined(separator: "|") + case .spacer: + return UUID().uuidString + } + } +} + + +struct InvitationView: View, SASTextFieldActions { + + let actions: InvitationViewActionsProtocol + @ObservedObject var model: Model + + @State private var isInterfaceDisabled = false + @State private var isAbortConfirmationShown = false + @State private var isRespondingToDialogConfirmationShown = false + + + private func respondButtonTapped(dialog: ObvDialog) { + Task { + do { + try await actions.userWantsToRespondToDialog(dialog) + } catch { + assertionFailure() + } + } + } + + + private func abortButtonTapped(obvDialog: ObvDialog) { + Task { + do { + try await actions.userWantsToAbortProtocol(associatedTo: obvDialog) + } catch { + assertionFailure() + } + } + } + + + private func dismissButtonTapped(obvDialog: ObvDialog) { + Task { + do { + try await actions.userWantsToDeleteDialog(obvDialog) + } catch { + assertionFailure() + } + } + } + + + private func discussWithContactButtonTapped(contactCryptoId: ObvCryptoId) { + guard let ownedCryptoId = model.ownedCryptoId else { return } + Task { + do { + try await actions.userWantsToDiscussWithContact(ownedCryptoId: ownedCryptoId, contactCryptoId: contactCryptoId) + } catch { + assertionFailure() + } + } + } + + // SASTextFieldActions + + func userEnteredSAS(in dialog: ObvDialog) { + isInterfaceDisabled = true + Task { + do { + try await actions.userWantsToRespondToDialog(dialog) + } catch { + assertionFailure() + } + } + } + + + func userNeedsToTypeSASAgain() { + withAnimation { + isInterfaceDisabled = false + } + } + + + // Body + + var body: some View { + VStack { + + HStack { + if let titleSystemIcon = model.titleSystemIcon { + Image(systemIcon: titleSystemIcon) + .font(.title) + .foregroundStyle(model.titleSystemIconColor) + } + VStack(alignment: .leading) { + Text(model.title) + .font(.headline) + Text(model.subtitle) + .font(.subheadline) + .foregroundStyle(.secondary) + } + Spacer() + if model.showRedDot { + Image(systemIcon: .circleFill) + .foregroundStyle(Color(UIColor.systemRed)) + } + } + .padding(.bottom, 4) + + if let body = model.body { + HStack { + Text(body) + .font(.body) + .foregroundStyle(.secondary) + Spacer() + }.padding(.bottom, 4) + } + + if let (sasToShow, onSASInput) = model.sasToExchange { + HStack(alignment: .top) { + VStack(alignment: .leading, spacing: 4) { + Text("YOUR_CODE") + .font(.headline) + SASTextField(actions: self, model: .init(mode: .showSAS(sas: sasToShow))) + }.frame(maxWidth: .infinity) + Spacer() + VStack(alignment: .leading, spacing: 4) { + Text("THEIR_CODE") + .font(.headline) + if let onSASInput { + SASTextField(actions: self, model: .init(mode: .enterSAS(numberOfBadEnteredSAS: model.numberOfBadEnteredSas, onSASInput: onSASInput))) + } else { + SASTextField(actions: self, model: .init(mode: .showCheckMark)) + } + }.frame(maxWidth: .infinity) + }.padding(.top) + } + + if !model.groupMembers.isEmpty { + VStack(alignment: .leading) { + HStack { + Text("\(model.groupMembers.count)_GROUP_MEMBERS") + .font(.subheadline) + Spacer() + } + ForEach(model.groupMembers) { groupMember in + Text(verbatim: ["·", groupMember].joined(separator: " ")) + .foregroundStyle(.secondary) + } + } + } + + HStack { + Spacer() + ForEach(model.buttons) { button in + switch button { + + case .plainForRespondingToDialog(obvDialog: let obvDialog, localizedTitle: let localizedTitle, confirmationTitle: let confirmationTitle): + if let confirmationTitle { + Button(action: { isRespondingToDialogConfirmationShown = true }, label: { + Text(verbatim: localizedTitle) + }) + .confirmationDialog(confirmationTitle, isPresented: $isRespondingToDialogConfirmationShown, titleVisibility: .visible) { + Button("YES", action: { respondButtonTapped(dialog: obvDialog) }) + Button("NO", role: .cancel, action: {}) + } + } else { + Button(action: { respondButtonTapped(dialog: obvDialog) }, label: { + Text(verbatim: localizedTitle) + }) + } + + case .blueForRespondingToDialog(obvDialog: let obvDialog, localizedTitle: let localizedTitle): +// if let confirmationLocalizedTitle { +// BlueButtonView(localizedTitle, action: { isRespondingConfirmationShown = true }) +// .confirmationDialog(confirmationLocalizedTitle, isPresented: $isRespondingConfirmationShown, titleVisibility: .visible) { +// Button("YES") { +// respondButtonTapped(obvDialog: obvDialog) +// } +// Button("NO", role: .cancel, action: {}) +// } +// } else { + BlueButtonView(localizedTitle, action: { respondButtonTapped(dialog: obvDialog) }) + // } + + case .plainForAbortingProtocol(obvDialog: let obvDialog, localizedTitle: let localizedTitle): + Button(action: { isAbortConfirmationShown = true }, label: { Text(verbatim: localizedTitle) }) + .confirmationDialog("ARE_YOU_SURE_YOU_WANT_TO_ABORT", isPresented: $isAbortConfirmationShown, titleVisibility: .visible) { + Button("YES") { abortButtonTapped(obvDialog: obvDialog) } + Button("NO", role: .cancel, action: {}) + } + + case .plainForDeletingDialog(obvDialog: let obvDialog, localizedTitle: let localizedTitle): + Button(action: { dismissButtonTapped(obvDialog: obvDialog) }, label: { Text(verbatim: localizedTitle) }) + + case .discussWithContact(contact: let contact): + OtherBlueButtonView("DISCUSS_WITH_\(contact.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.short))", action: { discussWithContactButtonTapped(contactCryptoId: contact.cryptoId) }) + + case .spacer: + Spacer() + + } + } + } + + } + .disabled(isInterfaceDisabled) + .onChange(of: model.buttons) { _ in + isInterfaceDisabled = false + } + } +} + + +protocol SASTextFieldActions { + func userEnteredSAS(in dialog: ObvDialog) + func userNeedsToTypeSASAgain() +} + + +private struct SASTextField: View, SingleSASDigitTextFielddActions { + + let actions: SASTextFieldActions + let model: Model + + @State private var shownAlert: AlertKind = .badSAS + @State private var isAlertShown = false + + private enum AlertKind { + case badSAS + } + + enum Mode { + case showSAS(sas: [Character]) + case enterSAS(numberOfBadEnteredSAS: Int, onSASInput: (String) -> ObvDialog?) + case showCheckMark + } + + struct Model { + let mode: Mode + } + + @State private var textValue0: String = "" + @State private var textValue1: String = "" + @State private var textValue2: String = "" + @State private var textValue3: String = "" + + private var textValues: [String] { + [textValue0, textValue1, textValue2, textValue3] + } + + @FocusState private var indexOfFocusedField: Int? + + private func clearAll() { + textValue0 = "" + textValue1 = "" + textValue2 = "" + textValue3 = "" + indexOfFocusedField = nil + } + + + private var showClearButton: Bool { + switch model.mode { + case .enterSAS: + return true + case .showSAS, .showCheckMark: + return false + } + } + + // SingleTextFieldActions + + /// Called by the ``SingleTextField`` at index `index` each time its text value changes. + func singleTextFieldDidChangeAtIndex(_ index: Int) { + switch model.mode { + case .showSAS, .showCheckMark: + return + case .enterSAS(numberOfBadEnteredSAS: _, onSASInput: let onSASInput): + gotoNextTextFieldIfPossible(fromIndex: index) + if let enteredSAS { + indexOfFocusedField = nil + guard let obvDialog = onSASInput(enteredSAS) else { return } + actions.userEnteredSAS(in: obvDialog) + } + } + } + + // Helpers + + /// Returns an 4 characters SAS if the texts in the text fields allow to compute one. + /// Returns `nil` otherwise. + private var enteredSAS: String? { + let concatenation = textValues + .reduce("", { $0 + $1 }) + .removingAllCharactersNotInCharacterSet(.decimalDigits) + return concatenation.count == 4 ? concatenation : nil + } + + private func gotoNextTextFieldIfPossible(fromIndex: Int) { + guard fromIndex < 3 else { return } + let toIndex = fromIndex + 1 + if textValues[fromIndex].count == 1, textValues[toIndex].count < 1 { + indexOfFocusedField = toIndex + } + } + + + private var isCheckMarkShown: Bool { + switch model.mode { + case .showSAS, .enterSAS: + return false + case .showCheckMark: + return true + } + } + + private var numberOfBadEnteredSAS: Int { + switch model.mode { + case .showSAS, .showCheckMark: + return 0 + case .enterSAS(let numberOfBadEnteredSAS, _): + return numberOfBadEnteredSAS + } + } + + private func alertOkButtonTapped() { + clearAll() + actions.userNeedsToTypeSASAgain() + } + + // Body + + var body: some View { + VStack { + HStack(spacing: 0) { + + switch model.mode { + + case .showSAS(let sas): + ForEach((0.. + private let actions: SingleSASDigitTextFielddActions? // Not needed when the this text field stays disabled + private let model: Model? // Not needed when the this text field stays disabled + + @Environment(\.isEnabled) var isEnabled + + struct Model { + let index: Int // Index of this text field in the BackupKeyTextField + } + + @State private var previousText: String? = nil + + private static let maxLength = 1 + + /// Both `actions` and `model` must be set, unless this text field is disabled by default (just used to show some existing value). + init(_ key: LocalizedStringKey, text: Binding, actions: SingleSASDigitTextFielddActions?, model: Model?) { + self.key = key + self.text = text + self.actions = actions + self.model = model + } + + private let myFont = Font + .system(size: 18) + .monospaced() + .weight(.bold) + + var body: some View { + TextField(key, text: text) + .keyboardType(.decimalPad) + .textContentType(.none) + .multilineTextAlignment(.center) + .font(myFont) + .padding(.vertical, 8) + .overlay(content: { + RoundedRectangle(cornerRadius: 12, style: .continuous) + .stroke(Color(UIColor.systemGray2), lineWidth: 1) + .padding(.horizontal, 1) + }) + .background( + RoundedRectangle(cornerRadius: 12) + .fill(Color(UIColor.systemGray5)) + .padding(.horizontal, 1) + .opacity(isEnabled ? 0 : 1) + ) + .onReceive(Just(text)) { _ in + guard let actions, let model else { return } + guard previousText != text.wrappedValue else { return } + previousText = text.wrappedValue + // We limit the string length to maxLength characters. + let newText = String(text.wrappedValue.removingAllCharactersNotInCharacterSet(.decimalDigits).prefix(Self.maxLength)) + if text.wrappedValue != newText { + text.wrappedValue = newText + } + actions.singleTextFieldDidChangeAtIndex(model.index) + } + } + +} + + + + + + +// MARK: - Button used in this view only + +private struct OtherBlueButtonView: View { + + private let action: () -> Void + private let key: LocalizedStringKey + + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Text(key) + .foregroundStyle(.white) + .padding() + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + +private struct BlueButtonView: View { + + private let action: () -> Void + private let localizedTitle: String + + @Environment(\.isEnabled) var isEnabled + + init(_ localizedTitle: String, action: @escaping () -> Void) { + self.localizedTitle = localizedTitle + self.action = action + } + + var body: some View { + Button(action: action) { + Text(verbatim: localizedTitle) + .foregroundStyle(.white) + .padding() + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + +// MARK: - Private helpers + +fileprivate extension String { + func removingAllCharactersNotInCharacterSet(_ characterSet: CharacterSet) -> String { + return String(self + .trimmingWhitespacesAndNewlines() + .unicodeScalars + .filter({ + characterSet.contains($0) + })) + } +} + + + + + + + + + +// MARK: - Previews + +struct InvitationView_Previews: PreviewProvider { + + private static let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + private static let otherCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + private final class ModelForPreviews: InvitationViewModelProtocol { + + @Published var numberOfBadEnteredSas = 0 + + private static let someDialog = ObvDialog( + uuid: UUID(), + encodedElements: 0.obvEncode(), + ownedCryptoId: InvitationView_Previews.ownedCryptoId, + category: .acceptInvite(contactIdentity: .init( + cryptoId: otherCryptoId, + currentIdentityDetails: .init(coreDetails: try! .init(firstName: "Steve", + lastName: "Jobs", + company: nil, + position: nil, + signedUserDetails: nil), + photoURL: nil)))) + + let ownedCryptoId: ObvCryptoId? = InvitationView_Previews.ownedCryptoId + let title = "Invitation title" + let subtitle = "Invitation subtitle" + let body: String? = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam placerat dignissim nulla. Nullam sed felis nec purus maximus ultricies vitae non mauris. Maecenas quis volutpat lectus." + let invitationUUID = UUID() + var sasToExchange: (sasToShow: [Character], onSASInput: ((String) -> ObvTypes.ObvDialog?)?)? { + let sasToShow = "1234".map { $0 } + let onSASInput: (String) -> ObvTypes.ObvDialog? = { inputSAS in + guard inputSAS == "0000" else { + self.numberOfBadEnteredSas += 1 + return nil + } + return Self.someDialog + } + return (sasToShow, onSASInput) + } + + var buttons: [InvitationViewButtonKind] { + return [ + .plainForAbortingProtocol(obvDialog: Self.someDialog, localizedTitle: "Abort"), + .spacer, + ] + } + + var groupMembers: [String] { + ["Steve Jobs", "Tim Cook"] + } + + var showRedDot: Bool { true } + + var titleSystemIcon: SystemIcon? { return .person } + + var titleSystemIconColor: Color { Color(UIColor.systemCyan) } + + } + + private static let model = ModelForPreviews() + + final class ActionsForPreviews: InvitationViewActionsProtocol { + func userWantsToAbortProtocol(associatedTo obvDialog: ObvTypes.ObvDialog) async throws {} + func userWantsToRespondToDialog(_ obvDialog: ObvDialog) {} + func userWantsToDeleteDialog(_ obvDialog: ObvDialog) async throws {} + func userWantsToDiscussWithContact(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) async throws {} + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + InvitationView(actions: actions, model: model) + .previewLayout(PreviewLayout.sizeThatFits) + .padding() + .previewDisplayName("InvitationView") + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/ViewModelsFromCoreDataEntities/PersistedInvitation+InvitationViewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/ViewModelsFromCoreDataEntities/PersistedInvitation+InvitationViewModelProtocol.swift new file mode 100644 index 00000000..dab336ba --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/ViewModelsFromCoreDataEntities/PersistedInvitation+InvitationViewModelProtocol.swift @@ -0,0 +1,411 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import ObvUICoreData +import ObvTypes +import UI_SystemIcon + + +extension PersistedInvitation: InvitationViewModelProtocol { + + var ownedCryptoId: ObvCryptoId? { + self.ownedIdentity?.cryptoId + } + + var invitationUUID: UUID { + self.uuid + } + + var showRedDot: Bool { + if actionRequired { + return true + } + switch status { + case .old: + return false + case .updated, .new: + return true + } + } + + var titleSystemIcon: SystemIcon? { + guard let category = obvDialog?.category else { return nil } + switch category { + case .inviteSent, .acceptInvite, .invitationAccepted, .sasExchange, .sasConfirmed: + return .person + case .mutualTrustConfirmed: + return .personBadgeShieldCheckmark + case .acceptMediatorInvite, .mediatorInviteAccepted: + return .personLineDottedPerson + case .acceptGroupInvite, .acceptGroupV2Invite, .freezeGroupV2Invite: + return .person3 + case .oneToOneInvitationSent, .oneToOneInvitationReceived: + return .person + case .syncRequestReceivedFromOtherOwnedDevice: + return nil + } + } + + + var titleSystemIconColor: Color { + guard let category = obvDialog?.category else { return .primary } + switch category { + case .inviteSent, .acceptInvite, .invitationAccepted, .sasExchange, .sasConfirmed: + return Color(UIColor.systemPink) + case .mutualTrustConfirmed: + return Color(UIColor.systemGreen) + case .acceptMediatorInvite, .mediatorInviteAccepted: + return Color(UIColor.systemOrange) + case .acceptGroupInvite, .acceptGroupV2Invite, .freezeGroupV2Invite: + return Color(UIColor.systemIndigo) + case .oneToOneInvitationSent, .oneToOneInvitationReceived: + return Color(UIColor.systemTeal) + case .syncRequestReceivedFromOtherOwnedDevice: + return .primary + } + } + + + var title: String { + switch obvDialog?.category { + + case .inviteSent(let contactIdentity): + return String(format: NSLocalizedString("INVITATION_TITLE_INVITE_SENT_%@", comment: ""), + contactIdentity.fullDisplayName) + + case .acceptInvite(let contactIdentity): + return String(format: NSLocalizedString("INVITATION_TITLE_ACCEPT_INVITE_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.short)) + + case .invitationAccepted(let contactIdentity): + return String(format: NSLocalizedString("INVITATION_TITLE_INVITATION_ACCEPTED_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.short)) + + case .sasExchange(let contactIdentity, _, _): + return String(format: NSLocalizedString("INVITATION_TITLE_SAS_EXCHANGE_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.short)) + + case .sasConfirmed(let contactIdentity, _, _): + return String(format: NSLocalizedString("INVITATION_TITLE_SAS_CONFIRMED_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.short)) + + case .mutualTrustConfirmed(let contactIdentity): + return String(format: NSLocalizedString("INVITATION_TITLE_MUTUAL_TRUST_CONFIRMED_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.short)) + + case .acceptMediatorInvite(let contactIdentity, let mediatorIdentity): + return String(format: NSLocalizedString("INVITATION_TITLE_ACCEPT_MEDIATOR_INVITE_%@_%@", comment: ""), + mediatorIdentity.getDisplayNameWithStyle(.short), + contactIdentity.getDisplayNameWithStyle(.firstNameThenLastName)) + + case .mediatorInviteAccepted(let contactIdentity, let mediatorIdentity): + return String(format: NSLocalizedString("INVITATION_TITLE_MEDIATOR_INVITE_ACCEPTED_%@_%@", comment: ""), + mediatorIdentity.getDisplayNameWithStyle(.short), + contactIdentity.getDisplayNameWithStyle(.firstNameThenLastName)) + + case .acceptGroupInvite(_, let groupOwner): + return String(format: NSLocalizedString("INVITATION_TITLE_ACCEPT_GROUP_INVITE_%@", comment: ""), + groupOwner.getDisplayNameWithStyle(.short)) + + case .acceptGroupV2Invite: + return NSLocalizedString("INVITATION_TITLE_ACCEPT_GROUP_V2_INVITE", comment: "") + + case .freezeGroupV2Invite: + return NSLocalizedString("INVITATION_TITLE_FREEZE_GROUP_V2_INVITE", comment: "") + + case .oneToOneInvitationSent(let contactIdentity): + return String(format: NSLocalizedString("INVITATION_TITLE_ONE_TO_ONE_INVITATION_SENT_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.short)) + + case .oneToOneInvitationReceived(let contactIdentity): + return String(format: NSLocalizedString("INVITATION_TITLE_ONE_TO_ONE_INVITATION_RECEIVED_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.short)) + + case nil, .syncRequestReceivedFromOtherOwnedDevice: + return NSLocalizedString("-", comment: "") + } + } + + var subtitle: String { + let df = DateFormatter() + df.dateStyle = .short + df.timeStyle = .short + return self.date.formatted(date: .abbreviated, time: .shortened) + } + + + var body: String? { + guard let obvDialog else { return nil } + switch obvDialog.category { + + case .invitationAccepted(let contactIdentity): + return String(format: NSLocalizedString("INVITATION_BODY_INVITATION_ACCEPTED_%@", comment: ""), contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.short)) + + case .sasExchange(let contactIdentity, _, _): + return String(format: NSLocalizedString("INVITATION_BODY_SAS_EXCHANGE_%@", comment: ""), contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.short)) + + case .sasConfirmed(contactIdentity: let contactIdentity, _, _): + return String(format: NSLocalizedString("INVITATION_BODY_SAS_CONFIRMED_%@", comment: ""), contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.short)) + + case .mutualTrustConfirmed(let contactIdentity): + return String(format: NSLocalizedString("INVITATION_BODY_MUTUAL_TRUST_CONFIRMED_%@", comment: ""), contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.short)) + + case .acceptMediatorInvite(let contactIdentity, let mediatorIdentity): + return String(format: NSLocalizedString("INVITATION_BODY_ACCEPT_MEDIATOR_INVITE_%@_%@", comment: ""), + mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.firstNameThenLastName), + contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.firstNameThenLastName)) + + case .mediatorInviteAccepted(let contactIdentity, let mediatorIdentity): + return String(format: NSLocalizedString("INVITATION_BODY_MEDIATOR_INVITE_ACCEPTED_%@_%@", comment: ""), + mediatorIdentity.getDisplayNameWithStyle(.short), + contactIdentity.getDisplayNameWithStyle(.firstNameThenLastName)) + + case .acceptGroupInvite(groupMembers: _, groupOwner: let groupOwner): + return String(format: NSLocalizedString("INVITATION_BODY_ACCEPT_GROUP_INVITE_%@", comment: ""), + groupOwner.getDisplayNameWithStyle(.firstNameThenLastName)) + + case .acceptGroupV2Invite(_, let group): + guard let coreDetails = try? GroupV2CoreDetails.jsonDecode(serializedGroupCoreDetails: group.trustedDetailsAndPhoto.serializedGroupCoreDetails), + let groupName = coreDetails.groupName else { + return NSLocalizedString("INVITATION_BODY_ACCEPT_GROUP_V2_INVITE", comment: "") + } + return String(format: NSLocalizedString("INVITATION_BODY_ACCEPT_GROUP_V2_INVITE_%@", comment: ""), groupName) + + case .freezeGroupV2Invite: + return NSLocalizedString("INVITATION_BODY_FREEZE_GROUP_V2_INVITE", comment: "") + + case .oneToOneInvitationSent(let contactIdentity): + return String(format: NSLocalizedString("INVITATION_BODY_ONE_TO_ONE_INVITATION_SENT_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.short)) + + case .oneToOneInvitationReceived(contactIdentity: let contactIdentity): + return String(format: NSLocalizedString("INVITATION_BODY_ONE_TO_ONE_INVITATION_RECEIVED_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.full)) + + case .inviteSent(contactIdentity: let contactIdentity): + return String(format: NSLocalizedString("INVITATION_BODY_INVITE_SENT_%@", comment: ""), + contactIdentity.fullDisplayName) + + case .acceptInvite(contactIdentity: let contactIdentity): + return String(format: NSLocalizedString("INVITATION_BODY_ACCEPT_INVITE_%@", comment: ""), + contactIdentity.getDisplayNameWithStyle(.full)) + + case .syncRequestReceivedFromOtherOwnedDevice: + assertionFailure("This category should not end up here") + return nil + + } + } + + + var buttons: [InvitationViewButtonKind] { + guard let obvDialog else { return [] } + switch obvDialog.category { + + case .acceptInvite(contactIdentity: _): + guard let dialogForAccepting = try? obvDialog.settingResponseToAcceptInvite(acceptInvite: true), + let dialogForIgnoring = try? obvDialog.settingResponseToAcceptInvite(acceptInvite: false) else { + assertionFailure() + return [] + } + return [ + .plainForRespondingToDialog(obvDialog: dialogForIgnoring, + localizedTitle: NSLocalizedString("Ignore", comment: ""), + confirmationTitle: "ARE_YOU_SURE_YOU_WANT_TO_IGNORE_THIS_INVITATION"), + .blueForRespondingToDialog(obvDialog: dialogForAccepting, + localizedTitle: NSLocalizedString("Accept", comment: "")), + ] + + case .invitationAccepted: + return [ + .plainForAbortingProtocol(obvDialog: obvDialog, localizedTitle: NSLocalizedString("Abort", comment: "")), + ] + + case .sasExchange(contactIdentity: _, sasToDisplay: _, numberOfBadEnteredSas: _): + return [ + .plainForAbortingProtocol(obvDialog: obvDialog, localizedTitle: NSLocalizedString("Abort", comment: "")), + .spacer, + ] + + case .sasConfirmed: + return [ + .plainForAbortingProtocol(obvDialog: obvDialog, localizedTitle: NSLocalizedString("Abort", comment: "")), + ] + + case .inviteSent(contactIdentity: _): + return [ + .plainForAbortingProtocol(obvDialog: obvDialog, localizedTitle: NSLocalizedString("Abort", comment: "")), + ] + + case .mutualTrustConfirmed(contactIdentity: let contactIdentity): + return [ + .plainForDeletingDialog(obvDialog: obvDialog, localizedTitle: NSLocalizedString("Dismiss", comment: "")), + .discussWithContact(contact: contactIdentity), + ] + + case .acceptMediatorInvite: + guard let dialogForAccepting = try? obvDialog.settingResponseToAcceptMediatorInvite(acceptInvite: true), + let dialogForIgnoring = try? obvDialog.settingResponseToAcceptMediatorInvite(acceptInvite: false) else { + assertionFailure() + return [] + } + return [ + .plainForRespondingToDialog(obvDialog: dialogForIgnoring, + localizedTitle: NSLocalizedString("Ignore", comment: ""), + confirmationTitle: "ARE_YOU_SURE_YOU_WANT_TO_IGNORE_THIS_INVITATION"), + .blueForRespondingToDialog(obvDialog: dialogForAccepting, + localizedTitle: NSLocalizedString("Accept", comment: "")), + ] + + case .mediatorInviteAccepted: + return [ + .plainForAbortingProtocol(obvDialog: obvDialog, localizedTitle: NSLocalizedString("Abort", comment: "")), + ] + + case .acceptGroupInvite: + guard let dialogForAccepting = try? obvDialog.settingResponseToAcceptGroupInvite(acceptInvite: true), + let dialogForIgnoring = try? obvDialog.settingResponseToAcceptGroupInvite(acceptInvite: false) else { + assertionFailure() + return [] + } + return [ + .plainForRespondingToDialog(obvDialog: dialogForIgnoring, + localizedTitle: NSLocalizedString("Decline", comment: ""), + confirmationTitle: "ARE_YOU_SURE_YOU_WANT_TO_DECLINE_THIS_INVITATION"), + .blueForRespondingToDialog(obvDialog: dialogForAccepting, + localizedTitle: NSLocalizedString("Accept", comment: "")), + ] + + case .acceptGroupV2Invite: + guard let dialogForAccepting = try? obvDialog.settingResponseToAcceptGroupV2Invite(acceptInvite: true), + let dialogForIgnoring = try? obvDialog.settingResponseToAcceptGroupV2Invite(acceptInvite: false) else { + assertionFailure() + return [] + } + return [ + .plainForRespondingToDialog(obvDialog: dialogForIgnoring, + localizedTitle: NSLocalizedString("Decline", comment: ""), + confirmationTitle: "ARE_YOU_SURE_YOU_WANT_TO_DECLINE_THIS_INVITATION"), + .blueForRespondingToDialog(obvDialog: dialogForAccepting, + localizedTitle: NSLocalizedString("Accept", comment: "")), + ] + + case .oneToOneInvitationSent: + guard let dialogForAborting = try? obvDialog.cancellingOneToOneInvitationSent() else { + assertionFailure() + return [] + } + return [ + .plainForRespondingToDialog(obvDialog: dialogForAborting, + localizedTitle: NSLocalizedString("Abort", comment: ""), + confirmationTitle: "ARE_YOU_SURE_YOU_WANT_TO_ABORT"), + ] + + case .oneToOneInvitationReceived: + guard let dialogForAccepting = try? obvDialog.settingResponseToOneToOneInvitationReceived(invitationAccepted: true), + let dialogForIgnoring = try? obvDialog.settingResponseToOneToOneInvitationReceived(invitationAccepted: false) else { + assertionFailure() + return [] + } + return [ + .plainForRespondingToDialog(obvDialog: dialogForIgnoring, + localizedTitle: NSLocalizedString("Decline", comment: ""), + confirmationTitle: "ARE_YOU_SURE_YOU_WANT_TO_DECLINE_THIS_INVITATION"), + .blueForRespondingToDialog(obvDialog: dialogForAccepting, + localizedTitle: NSLocalizedString("Accept", comment: "")), + ] + + case .freezeGroupV2Invite: + return [ + .plainForAbortingProtocol(obvDialog: obvDialog, localizedTitle: NSLocalizedString("Abort", comment: "")), + ] + + case .syncRequestReceivedFromOtherOwnedDevice: + assertionFailure("This category should never end up here") + return [] + + } + } + + + var groupMembers: [String] { + assert(Thread.isMainThread) + guard let obvDialog else { return [] } + switch obvDialog.category { + case .acceptGroupInvite(groupMembers: let groupMembers, groupOwner: _): + return groupMembers + .map({ $0.getDisplayNameWithStyle(.firstNameThenLastName) }) + .sorted() + case .acceptGroupV2Invite(inviter: _, group: let group): + guard let ownedCryptoId else { return [] } + return group.otherMembers.map { + if let memberContact = try? PersistedObvContactIdentity.get(contactCryptoId: $0.identity, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) { + return memberContact.customOrNormalDisplayName + } else if let details = try? ObvIdentityCoreDetails($0.serializedIdentityCoreDetails) { + return details.getDisplayNameWithStyle(.firstNameThenLastName) + } else { + assertionFailure() + return NSLocalizedString("UNKNOWN_GROUP_MEMBER_NAME", comment: "") + } + } + default: + return [] + } + } + + + var numberOfBadEnteredSas: Int { + guard let obvDialog else { return 0 } + switch obvDialog.category { + case .sasExchange(contactIdentity: _, sasToDisplay: _, numberOfBadEnteredSas: let numberOfBadEnteredSas): + return numberOfBadEnteredSas + default: + return 0 + } + } + + + var sasToExchange: (sasToShow: [Character], onSASInput: ((String) -> ObvDialog?)?)? { + guard var obvDialog = self.obvDialog else { return nil } + switch obvDialog.category { + case .sasExchange(contactIdentity: _, sasToDisplay: let sasToDisplay, numberOfBadEnteredSas: _): + guard let sasAsString = String(data: sasToDisplay, encoding: .utf8)?.trimmingWhitespacesAndNewlines(), + sasAsString.count == 4 else { assertionFailure(); return nil } + let onSASInput: (String) -> ObvDialog? = { inputSAS in + guard let data = inputSAS.data(using: .utf8) else { assertionFailure(); return nil } + do { + try obvDialog.setResponseToSasExchange(otherSas: data) + return obvDialog + } catch { + return nil + } + } + return (sasAsString.map({ $0 }), onSASInput) + case .sasConfirmed(contactIdentity: _, sasToDisplay: let sasToDisplay, sasEntered: _): + guard let sasAsString = String(data: sasToDisplay, encoding: .utf8)?.trimmingWhitespacesAndNewlines(), + sasAsString.count == 4 else { assertionFailure(); return nil } + return (sasAsString.map({ $0 }), nil) + default: + return nil + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/ViewModelsFromCoreDataEntities/PersistedObvOwnedIdentity+AllInvitationsViewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/ViewModelsFromCoreDataEntities/PersistedObvOwnedIdentity+AllInvitationsViewModelProtocol.swift new file mode 100644 index 00000000..390b6a4a --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Invitations/SwiftUI/ViewModelsFromCoreDataEntities/PersistedObvOwnedIdentity+AllInvitationsViewModelProtocol.swift @@ -0,0 +1,31 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvUICoreData + + +extension PersistedObvOwnedIdentity: AllInvitationsViewModelProtocol { + + var sortedInvitations: [PersistedInvitation] { + self.invitations.sorted(by: \.date) + } + + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/MainFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/MainFlowViewController.swift index 48b53e7a..71ed89a3 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/MainFlowViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/MainFlowViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,6 +19,7 @@ import UIKit import os.log +import StoreKit import CoreData import ObvEngine import ObvTypes @@ -27,6 +28,13 @@ import LinkPresentation import SwiftUI import ObvCrypto import ObvUICoreData +import ObvUI +import ObvSettings + + +protocol MainFlowViewControllerDelegate: AnyObject { + func userWantsToAddNewDevice(_ viewController: MainFlowViewController, ownedCryptoId: ObvCryptoId) async +} final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvFlowControllerDelegate { @@ -37,7 +45,10 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF private let splitDelegate: MainFlowViewControllerSplitDelegate // Strong reference to the delegate private weak var createPasscodeDelegate: CreatePasscodeDelegate? + private weak var localAuthenticationDelegate: LocalAuthenticationDelegate? private weak var appBackupDelegate: AppBackupDelegate? + private weak var mainFlowViewControllerDelegate: MainFlowViewControllerDelegate? + private weak var storeKitDelegate: StoreKitDelegate? fileprivate let mainTabBarController = ObvSubTabBarController() fileprivate let navForDetailsView = UINavigationController(rootViewController: OlvidPlaceholderViewController()) @@ -45,15 +56,13 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF fileprivate let discussionsFlowViewController: DiscussionsFlowViewController private let contactsFlowViewController: ContactsFlowViewController private let groupsFlowViewController: GroupsFlowViewController - private let invitationsFlowViewController: InvitationsFlowViewController + private let invitationsFlowViewController: NewInvitationsFlowViewController private var shouldPopViewController = false private var shouldScrollToTop = false private var observationTokens = [NSObjectProtocol]() - private var ownedIdentityIsNotActiveViewControllerWasShowAtLeastOnce = false - private var secureCallsInBetaModalWasShown = false /// This variable is set when Olvid is started because an invite or configuration link was opened. @@ -78,14 +87,17 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: MainFlowViewController.self)) - init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine, createPasscodeDelegate: CreatePasscodeDelegate, appBackupDelegate: AppBackupDelegate) { + init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine, createPasscodeDelegate: CreatePasscodeDelegate, localAuthenticationDelegate: LocalAuthenticationDelegate, appBackupDelegate: AppBackupDelegate, mainFlowViewControllerDelegate: MainFlowViewControllerDelegate, storeKitDelegate: StoreKitDelegate) { os_log("🥏🏁 Call to the initializer of MainFlowViewController", log: log, type: .info) self.obvEngine = obvEngine self.currentOwnedCryptoId = ownedCryptoId self.createPasscodeDelegate = createPasscodeDelegate + self.localAuthenticationDelegate = localAuthenticationDelegate self.appBackupDelegate = appBackupDelegate + self.storeKitDelegate = storeKitDelegate + self.mainFlowViewControllerDelegate = mainFlowViewControllerDelegate self.splitDelegate = MainFlowViewControllerSplitDelegate() discussionsFlowViewController = DiscussionsFlowViewController(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine) @@ -97,13 +109,15 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF groupsFlowViewController = GroupsFlowViewController(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine) mainTabBarController.addChild(groupsFlowViewController) - invitationsFlowViewController = InvitationsFlowViewController(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine) + //invitationsFlowViewController = InvitationsFlowViewController(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine) + invitationsFlowViewController = NewInvitationsFlowViewController(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine) mainTabBarController.addChild(invitationsFlowViewController) super.init(nibName: nil, bundle: nil) self.delegate = splitDelegate - self.preferredDisplayMode = .allVisible + #warning("This single discussion view controller looks bad in split view under iPad. It looked ok when using .allVisible") + self.preferredDisplayMode = .oneBesideSecondary // .allVisible navForDetailsView.delegate = ObvUserActivitySingleton.shared let appearance = UINavigationBarAppearance() @@ -132,20 +146,9 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF observeUserWantsToCallNotifications() observeServerDoesNotSupportCall() observeUserWantsToSelectAndCallContactsNotifications() - observeCallHasBeenUpdated() observationTokens.append(contentsOf: [ - // ObvMessengerCoreDataNotification - ObvMessengerCoreDataNotification.observeOwnedIdentityWasDeactivated(queue: .main) { [weak self] _ in - self?.presentOwnedIdentityIsNotActiveViewControllerIfRequired() - }, - - // ObvEngineNotificationNew - ObvEngineNotificationNew.observeNetworkOperationFailedSinceOwnedIdentityIsNotActive(within: NotificationCenter.default, queue: .main) { [weak self] (_) in - self?.presentOwnedIdentityIsNotActiveViewControllerIfRequired() - }, - // ObvMessengerInternalNotification ObvMessengerInternalNotification.observeUserWantsToDisplayContactIntroductionScreen(queue: .main) { [weak self] contactObjectID, viewController in self?.processUserWantsToDisplayContactIntroductionScreen(contactObjectID: contactObjectID, viewController: viewController) @@ -191,7 +194,6 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF if viewDidAppearWasCalled == true { presentOneOfTheModalViewControllersIfRequired() } - presentOwnedIdentityIsNotActiveViewControllerIfRequired() } @@ -243,6 +245,10 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF case .newerAppVersionAvailable: guard UIApplication.shared.canOpenURL(ObvMessengerConstants.shortLinkToOlvidAppIniTunes) else { assertionFailure(); return } UIApplication.shared.open(ObvMessengerConstants.shortLinkToOlvidAppIniTunes, options: [:], completionHandler: nil) + case .ownedIdentityIsInactive: + let deepLink = ObvDeepLink.myId(ownedCryptoId: ownedCryptoId) + ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) + .postOnDispatchQueue() } } }, @@ -259,16 +265,17 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF case .newerAppVersionAvailable: ObvMessengerInternalNotification.UserDismissedSnackBarForLater(ownedCryptoId: ownedCryptoId, snackBarCategory: snackBarCategory) .postOnDispatchQueue() + case .ownedIdentityIsInactive: + ObvMessengerInternalNotification.UserDismissedSnackBarForLater(ownedCryptoId: ownedCryptoId, snackBarCategory: snackBarCategory) + .postOnDispatchQueue() } } }) vc.modalPresentationStyle = .pageSheet - if #available(iOS 15, *) { - if let sheet = vc.sheetPresentationController { - sheet.detents = [.medium(), .large()] - sheet.prefersGrabberVisible = true - sheet.preferredCornerRadius = 16.0 - } + if let sheet = vc.sheetPresentationController { + sheet.detents = [.medium(), .large()] + sheet.prefersGrabberVisible = true + sheet.preferredCornerRadius = 16.0 } self.present(vc, animated: true) @@ -331,10 +338,10 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF externallyScannedOrTappedOlvidURL = nil Task { await processExternallyScannedOrTappedOlvidURL(olvidURL: olvidURL) } } - if !ownedIdentityIsNotActiveViewControllerWasShowAtLeastOnce { - presentOwnedIdentityIsNotActiveViewControllerIfRequired() + guard let obvOwnedIdentity = try? obvEngine.getOwnedIdentity(with: currentOwnedCryptoId) else { + assertionFailure() + return } - guard let obvOwnedIdentity = try? obvEngine.getOwnedIdentity(with: currentOwnedCryptoId) else { assertionFailure(); return } if obvOwnedIdentity.isKeycloakManaged { Task { await KeycloakManagerSingleton.shared.registerKeycloakManagedOwnedIdentity(ownedCryptoId: currentOwnedCryptoId, firstKeycloakBinding: false) @@ -343,33 +350,6 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF } - @MainActor - private func presentOwnedIdentityIsNotActiveViewControllerIfRequired() { - guard viewDidAppearWasCalled else { return } - guard !anOwnedIdentityWasJustCreatedOrRestored else { return } - let log = self.log - ObvStack.shared.performBackgroundTask { [weak self] (context) in - guard let _self = self else { return } - guard let ownedIdentityObv = try? PersistedObvOwnedIdentity.get(cryptoId: _self.currentOwnedCryptoId, within: context) else { - os_log("Could not find persisted owned identity", log: log, type: .fault) - return - } - guard !ownedIdentityObv.isActive else { return } - // If we reach this point, the current owned identity is not active. So we should present the appropriate view controller. - DispatchQueue.main.async { - // Check that we are not presenting an OwnedIdentityIsNotActiveViewController already - if let presentedVC = self?.presentedViewController as? UINavigationController, presentedVC.children.filter({ $0 is OwnedIdentityIsNotActiveViewController }).isEmpty { - return - } - let ownedIdentityIsNotActiveVC = OwnedIdentityIsNotActiveViewController() - let nav = ObvNavigationController(rootViewController: ownedIdentityIsNotActiveVC) - self?.present(nav, animated: true) - self?.ownedIdentityIsNotActiveViewControllerWasShowAtLeastOnce = true - } - } - } - - @MainActor private func processUserWantsToDisplayContactIntroductionScreen(contactObjectID: TypeSafeManagedObjectID, viewController: UIViewController) { assert(Thread.isMainThread) @@ -412,11 +392,13 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF @MainActor private func presentUserNotificationsSubscriberHostingController() async { - self.dismiss(animated: true) { [weak self] in - guard let _self = self else { return } - let vc = AutorisationRequesterHostingController(autorisationCategory: .localNotifications, delegate: _self) - _self.present(vc, animated: true) + guard presentedViewController == nil else { + // We are already presengtin a view controller (e.g., a keycloak authentication view controller) + // We do not present the NewAutorisationRequesterViewController + return } + let vc = NewAutorisationRequesterViewController(autorisationCategory: .localNotifications, delegate: self) + present(vc, animated: true) } @@ -447,12 +429,10 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF self?.dismissPresentedViewController() }) vc.modalPresentationStyle = .pageSheet - if #available(iOS 15, *) { - if let sheet = vc.sheetPresentationController { - sheet.detents = [.large()] - sheet.prefersGrabberVisible = true - sheet.preferredCornerRadius = 16.0 - } + if let sheet = vc.sheetPresentationController { + sheet.detents = [.large()] + sheet.prefersGrabberVisible = true + sheet.preferredCornerRadius = 16.0 } self.present(vc, animated: true) return @@ -466,16 +446,6 @@ final class MainFlowViewController: UISplitViewController, OlvidURLHandler, ObvF extension MainFlowViewController { - /// This methods makes sure the interface stays consistent when a `PersistedDiscussion` instance gets deleted. - /// - /// When a `PersistedDiscussion` instance gets deleted, we are in one of the two following cases: - /// - The user (or a contact) deleted all messages of the discussion. In that case, a new `PersistedDiscussion` instance has been created, with the same permanent ID, but with a different `objectID`. - /// In that case: - /// - If the new `PersistedDiscussion` instance, representing the same logical discussion (i.e., with the same permanent ID) is archived, we **remove** all `SomeSingleContactViewController` for that discussion from the view hierarchy. - /// - If the new `PersistedDiscussion` instance is not archived, we **replace** any `SomeSingleContactViewController` instance by a new one, representing the same logical discussion. - /// - The user deleted all messages from a locked discussion. In that case, no new `PersistedDiscussion` instance was created. We remove all `SomeSingleContactViewController` instance from the view hierarchy. - /// - /// Moreover, we must deal with both situations, under iPad and iPhone (where the split view interface is collapsed). @MainActor func processPersistedDiscussionWasDeletedOrArchived(discussionPermanentID: ObvManagedObjectPermanentID) async { @@ -513,7 +483,7 @@ extension MainFlowViewController { } - /// Helper method for `processPersistedDiscussionWasInserted()` + /// Helper method @MainActor private func removeFromTheObvFlowControllersAllSomeSingleDiscussionViewControllerForDiscussionWithPermanentID(_ discussionPermanentID: ObvManagedObjectPermanentID) async { let allFlowViewControllers = self.mainTabBarController.viewControllers?.compactMap { $0 as? ObvFlowController } ?? [] @@ -532,20 +502,11 @@ extension MainFlowViewController { if someSingleDiscussionVC.discussionPermanentID != discussion.discussionPermanentID { return someSingleDiscussionVC } else { - if #available(iOS 15.0, *), !ObvMessengerSettings.Interface.useOldDiscussionInterface { - do { - return try currentFlow?.getNewSingleDiscussionViewController(for: discussion, initialScroll: .newMessageSystemOrLastMessage) - } catch { - assertionFailure(error.localizedDescription) // In production, continue anyway - return nil - } - } else { - do { - return try currentFlow?.getSingleDiscussionViewController(for: discussion) - } catch { - assertionFailure(error.localizedDescription) // In production, continue anyway - return nil - } + do { + return try currentFlow?.getNewSingleDiscussionViewController(for: discussion, initialScroll: .newMessageSystemOrLastMessage) + } catch { + assertionFailure(error.localizedDescription) // In production, continue anyway + return nil } } } @@ -611,13 +572,13 @@ extension MainFlowViewController { } -// MARK: - AutorisationRequesterHostingControllerDelegate +// MARK: - NewAutorisationRequesterViewControllerDelegate -extension MainFlowViewController: AutorisationRequesterHostingControllerDelegate { +extension MainFlowViewController: NewAutorisationRequesterViewControllerDelegate { @MainActor - func requestAutorisation(now: Bool, for autorisationCategory: AutorisationRequesterHostingController.AutorisationCategory) async { - assert(Thread.isMainThread) + func requestAutorisation(autorisationRequester: NewAutorisationRequesterViewController, now: Bool, for autorisationCategory: NewAutorisationRequesterViewController.AutorisationCategory) async { + preventPrivacyWindowSceneFromShowingOnNextWillResignActive() switch autorisationCategory { case .localNotifications: if now { @@ -632,7 +593,7 @@ extension MainFlowViewController: AutorisationRequesterHostingControllerDelegate case .recordPermission: if now { let granted = await AVAudioSession.sharedInstance().requestRecordPermission() - os_log("User granted access to audio: %@", log: log, type: .error, String(describing: granted)) + os_log("User granted access to audio: %@", log: log, type: .info, String(describing: granted)) } dismiss(animated: true) } @@ -699,35 +660,68 @@ extension MainFlowViewController { assertionFailure() return } + let deleteAction = UIAlertAction(title: Strings.AlertConfirmProfileDeletion.actionDeleteProfile, style: .destructive) { [weak self] _ in + Task { [weak self] in await self?.processUserWantsToDeleteOwnedIdentityButMustChooseBetweenLocalAndGlobalDeletion(ownedCryptoId: ownedCryptoId) } + } + + let cancelAction = UIAlertAction(title: CommonString.Word.Cancel, style: .default) + + alert.addAction(deleteAction) + alert.addAction(cancelAction) + + present(alert, animated: true) + + } + + + @MainActor + private func processUserWantsToDeleteOwnedIdentityButMustChooseBetweenLocalAndGlobalDeletion(ownedCryptoId: ObvCryptoId) async { + + assert(Thread.isMainThread) + dismissPresentedViewController() + let traitCollection = self.traitCollection + + guard let ownedIdentityToDelete = try? PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: ObvStack.shared.viewContext) else { return } + + if ownedIdentityToDelete.isActive { - let alert = UIAlertController(title: Strings.AlertNotifyContactsOnOwnedIdentityDeletion.title, - message: Strings.AlertNotifyContactsOnOwnedIdentityDeletion.message, - preferredStyleForTraitCollection: traitCollection) + let alert = UIAlertController( + title: Strings.AlertChooseBetweenGlobalAndLocalOnOwnedIdentityDeletion.title, + message: Strings.AlertChooseBetweenGlobalAndLocalOnOwnedIdentityDeletion.message, + preferredStyleForTraitCollection: traitCollection) - let notifyContactsAction = UIAlertAction(title: Strings.AlertNotifyContactsOnOwnedIdentityDeletion.notifyContactsAction, style: .default) { _ in - self?.processUserWantsToDeleteOwnedIdentityAfterHavingConfirmed(ownedCryptoId: ownedCryptoId, notifyContacts: true) + let globalDeletionAction = UIAlertAction( + title: Strings.AlertChooseBetweenGlobalAndLocalOnOwnedIdentityDeletion.globalDeletionAction, style: .destructive) + { [weak self] _ in + Task { [weak self] in await self?.processUserWantsToDeleteOwnedIdentityAfterHavingConfirmed(ownedCryptoId: ownedCryptoId, globalOwnedIdentityDeletion: true) } } - let doNotNotifyContactsAction = UIAlertAction(title: Strings.AlertNotifyContactsOnOwnedIdentityDeletion.doNotNotifyContactsAction, style: .default) { _ in - self?.processUserWantsToDeleteOwnedIdentityAfterHavingConfirmed(ownedCryptoId: ownedCryptoId, notifyContacts: false) + let localDeletionAction = UIAlertAction( + title: Strings.AlertChooseBetweenGlobalAndLocalOnOwnedIdentityDeletion.localDeletionAction, style: .destructive) + { [weak self] _ in + Task { [weak self] in await self?.processUserWantsToDeleteOwnedIdentityAfterHavingConfirmed(ownedCryptoId: ownedCryptoId, globalOwnedIdentityDeletion: false) } } let cancelAction = UIAlertAction(title: CommonString.Word.Cancel, style: .default) - alert.addAction(notifyContactsAction) - alert.addAction(doNotNotifyContactsAction) + alert.addAction(globalDeletionAction) + alert.addAction(localDeletionAction) alert.addAction(cancelAction) - self?.present(alert, animated: true) + present(alert, animated: true) + + } else { + + // Since the identity is not active, a global delete makes no sense. + // We immediately go to the last step, assuming a local delete. + + await processUserWantsToDeleteOwnedIdentityAfterHavingConfirmed(ownedCryptoId: ownedCryptoId, globalOwnedIdentityDeletion: false) } - let cancelAction = UIAlertAction(title: CommonString.Word.Cancel, style: .default) - alert.addAction(deleteAction) - alert.addAction(cancelAction) - present(alert, animated: true) } /// This method is called last during the UI process allowing to delete an owned identity. It allows to make sure that the does want to delete her owned identity by asking her to write the DELETE word. - private func processUserWantsToDeleteOwnedIdentityAfterHavingConfirmed(ownedCryptoId: ObvCryptoId, notifyContacts: Bool) { + @MainActor + private func processUserWantsToDeleteOwnedIdentityAfterHavingConfirmed(ownedCryptoId: ObvCryptoId, globalOwnedIdentityDeletion: Bool) async { guard let ownedIdentityToDelete = try? PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: ObvStack.shared.viewContext) else { return } let profileName = ownedIdentityToDelete.customDisplayName ?? ownedIdentityToDelete.identityCoreDetails.getFullDisplayName() @@ -735,21 +729,20 @@ extension MainFlowViewController { message: Strings.AlertTypeDeleteToProceedWithOwnedIdentityDeletion.message, preferredStyle: .alert) alert.addTextField { textField in - textField.text = NSLocalizedString("", comment: "") + textField.text = "" textField.autocapitalizationType = .allCharacters } alert.addAction(UIAlertAction(title: Strings.AlertTypeDeleteToProceedWithOwnedIdentityDeletion.doDelete, style: .destructive, handler: { [unowned alert] _ in guard let textField = alert.textFields?.first else { assertionFailure(); return } guard textField.text?.trimmingWhitespacesAndNewlines() == Strings.AlertTypeDeleteToProceedWithOwnedIdentityDeletion.wordToType else { return } - ObvMessengerInternalNotification.userWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: ownedCryptoId, notifyContacts: notifyContacts) + ObvMessengerInternalNotification.userWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: ownedCryptoId, globalOwnedIdentityDeletion: globalOwnedIdentityDeletion) .postOnDispatchQueue() })) alert.addAction(UIAlertAction(title: CommonString.Word.Cancel, style: .cancel)) present(alert, animated: true) - - } + } @@ -819,7 +812,9 @@ extension MainFlowViewController { checkSignatureMutualScanUrl: { [weak self] mutualScanUrl in guard let _self = self else { return false } return _self.checkSignatureMutualScanUrl(mutualScanUrl) - }) + }, + obvEngine: obvEngine, + delegate: self) else { assertionFailure() return @@ -870,10 +865,15 @@ extension MainFlowViewController { func userWantsToUpdateTrustedIdentityDetailsOfContactIdentity(with contactCryptoId: ObvCryptoId, using newContactIdentityDetails: ObvIdentityDetails) { - do { - try obvEngine.updateTrustedIdentityDetailsOfContactIdentity(with: contactCryptoId, ofOwnedIdentityWithCryptoId: currentOwnedCryptoId, with: newContactIdentityDetails) - } catch { - os_log("Could not update trusted identity details of a contact", log: log, type: .error) + let obvEngine = self.obvEngine + let log = self.log + let currentOwnedCryptoId = self.currentOwnedCryptoId + Task.detached { + do { + try await obvEngine.updateTrustedIdentityDetailsOfContactIdentity(with: contactCryptoId, ofOwnedIdentityWithCryptoId: currentOwnedCryptoId, with: newContactIdentityDetails) + } catch { + os_log("Could not update trusted identity details of a contact", log: log, type: .error) + } } } @@ -898,6 +898,157 @@ extension MainFlowViewController { .postOnDispatchQueue() } + + /// Helper enum used in ``userWantsToInviteContactsToOneToOne(ownedCryptoId:users:)`` + private enum OneToOneInvitationKind { + case oneToOneInvitationProtocol(ownedCryptoId: ObvCryptoId, userCryptoId: ObvCryptoId) + case keycloak(ownedCryptoId: ObvCryptoId, userCryptoId: ObvCryptoId, userIdOrSignedDetails: KeycloakAddContactInfo) + } + + + /// Central method to call to invite a contact to be one2one. In most cases, this only triggers a `OneToOneContactInvitationProtocol`. In the case the owned identity is keycloak managed by the same server as the contact, this *also* triggers a Keycloak invitation. + func userWantsToInviteContactsToOneToOne(ownedCryptoId: ObvCryptoId, users: [(cryptoId: ObvCryptoId, keycloakDetails: ObvKeycloakUserDetails?)]) async throws { + + let invitationsToSend = try await computeListOfOneToOneInvitationsToSend(ownedCryptoId: ownedCryptoId, users: users) + + for invitationToSend in invitationsToSend { + + switch invitationToSend { + + case .oneToOneInvitationProtocol(ownedCryptoId: let ownedCryptoId, userCryptoId: let userCryptoId): + + do { + try obvEngine.sendOneToOneInvitation(ownedIdentity: ownedCryptoId, contactIdentity: userCryptoId) + } catch { + assertionFailure(error.localizedDescription) + continue // In production, do not fail the whole process because something went wrong for one invitation + } + + case .keycloak(ownedCryptoId: let ownedCryptoId, userCryptoId: let userCryptoId, userIdOrSignedDetails: let userIdOrSignedDetails): + + do { + try await KeycloakManagerSingleton.shared.addContact(ownedCryptoId: ownedCryptoId, userIdOrSignedDetails: userIdOrSignedDetails, userIdentity: userCryptoId.getIdentity()) + } catch let addContactError as KeycloakManager.AddContactError { + switch addContactError { + case .authenticationRequired, + .ownedIdentityNotManaged, + .badResponse, + .userHasCancelled, + .keycloakApiRequest, + .invalidSignature, + .unkownError: + throw addContactError + case .willSyncKeycloakServerSignatureKey: + break + case .ownedIdentityWasRevoked: + ObvMessengerInternalNotification.userOwnedIdentityWasRevokedByKeycloak(ownedCryptoId: ownedCryptoId) + .postOnDispatchQueue() + } + } catch { + assertionFailure(error.localizedDescription) + continue // In production, do not fail the whole process because something went wrong for one invitation + } + + } + + } + + } + + + /// Helper methods for ``userWantsToInviteContactsToOneToOne(ownedCryptoId:users:)``. Returns a list of one2one invitations to send. Note that we might return two invitation types for the same user. This is intended. + /// + /// If the owned identity is Keycloak managed and the contact is managed by the same keycloak: + /// - if there is a corresponding PersistedObvContactIdentity: + /// - if one2one, don't start a keycloak invitation + /// - otherwise, check whether she's keycloak managed. In that case, start a keycloak invitation. + /// - If there is no contact and this method caller provided JSON signed details, start a keycloak invitation. + private func computeListOfOneToOneInvitationsToSend(ownedCryptoId: ObvCryptoId, users: [(cryptoId: ObvCryptoId, keycloakDetails: ObvKeycloakUserDetails?)]) async throws -> [OneToOneInvitationKind] { + + // In case the owned identity is keycloak managed, we augment the received list of users using the keycloak details available from the engine + + let usersWithAllKeyclakInfos: [(cryptoId: ObvCryptoId, userIdOrSignedDetails: KeycloakAddContactInfo?)] + + if try await ownedIdentityIsKeycloakManaged(ownedCryptoId: ownedCryptoId) { + + var constructedListOfUsers = [(cryptoId: ObvCryptoId, userIdOrSignedDetails: KeycloakAddContactInfo?)]() + for user in users { + if let userId = user.keycloakDetails?.id { + constructedListOfUsers.append((user.cryptoId, .userId(userId: userId))) + } else if let keycloakSignedDetails = try? await obvEngine.getSignedContactDetailsAsync(ownedIdentity: ownedCryptoId, contactIdentity: user.cryptoId) { + constructedListOfUsers.append((user.cryptoId, .signedDetails(signedDetails: keycloakSignedDetails))) + } else { + constructedListOfUsers.append((user.cryptoId, nil)) + } + } + + usersWithAllKeyclakInfos = constructedListOfUsers + + } else { + + usersWithAllKeyclakInfos = users.map { ($0.cryptoId, nil) } + + } + + // Now that we have a list of users to invite (and all the available info concerning their keycloak details), we can compute a list of one2one invitations to send. + + return await withCheckedContinuation { (continuation: CheckedContinuation<[OneToOneInvitationKind], Never>) in + + ObvStack.shared.performBackgroundTask { context in + + var invitationsToPerform = [OneToOneInvitationKind]() + + for user in usersWithAllKeyclakInfos { + + do { + + if let contact = try PersistedObvContactIdentity.get(contactCryptoId: user.cryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: context) { + + if !contact.isOneToOne && contact.isActive && contact.hasAtLeastOneRemoteContactDevice() { + invitationsToPerform.append(.oneToOneInvitationProtocol(ownedCryptoId: ownedCryptoId, userCryptoId: user.cryptoId)) + } + + if !contact.isOneToOne && contact.isActive, let userIdOrSignedDetails = user.userIdOrSignedDetails { + invitationsToPerform.append(.keycloak(ownedCryptoId: ownedCryptoId, userCryptoId: user.cryptoId, userIdOrSignedDetails: userIdOrSignedDetails)) + } + + } else if let userIdOrSignedDetails = user.userIdOrSignedDetails { + + invitationsToPerform.append(.keycloak(ownedCryptoId: ownedCryptoId, userCryptoId: user.cryptoId, userIdOrSignedDetails: userIdOrSignedDetails)) + + } + + } catch { + assertionFailure(error.localizedDescription) + continue + } + + } + + continuation.resume(returning: invitationsToPerform) + } + + } + + } + + + /// Helper method for ``computeListOfOneToOneInvitationsToSend(ownedCryptoId:users:)`` + private func ownedIdentityIsKeycloakManaged(ownedCryptoId: ObvCryptoId) async throws -> Bool { + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + ObvStack.shared.performBackgroundTask { context in + do { + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: context) else { + throw ObvFlowControllerError.couldNotFindOwnedIdentity + } + continuation.resume(returning: ownedIdentity.isKeycloakManaged) + } catch { + continuation.resume(throwing: error) + } + } + } + } + } @@ -955,6 +1106,17 @@ extension MainFlowViewController: UITabBarControllerDelegate, ObvSubTabBarContro } +// MARK: - AddContactHostingViewControllerDelegate + +extension MainFlowViewController: AddContactHostingViewControllerDelegate { + + func userWantsToAddNewContactViaKeycloak(ownedCryptoId: ObvCryptoId, keycloakUserDetails: ObvKeycloakUserDetails, userCryptoId: ObvCryptoId) async throws { + try await userWantsToInviteContactsToOneToOne(ownedCryptoId: ownedCryptoId, users: [(userCryptoId, keycloakUserDetails)]) + } + +} + + // MARK: - Handling DeepLinks extension MainFlowViewController { @@ -973,22 +1135,24 @@ extension MainFlowViewController { /// Otherwise, we show the subscription plans. private func observeUserWantsToCallNotifications() { os_log("📲 Observing UserWantsToCall notifications", log: log, type: .info) - observationTokens.append(ObvMessengerInternalNotification.observeUserWantsToCallButWeShouldCheckSheIsAllowedTo(queue: .main) { [weak self] (contactIDs, groupId) in - self?.processUserWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: contactIDs, groupId: groupId) + + observationTokens.append(ObvMessengerInternalNotification.observeUserWantsToCallButWeShouldCheckSheIsAllowedTo { ownedCryptoId, contactCryptoIds, groupId in + Task { [weak self] in await self?.processUserWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ownedCryptoId, contactCryptoIds: contactCryptoIds, groupId: groupId) } }) + } @MainActor - private func processUserWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: [TypeSafeManagedObjectID], groupId: GroupIdentifierBasedOnObjectID?) { + private func processUserWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set, groupId: GroupIdentifier?) async { assert(Thread.isMainThread) // Check access to the microphone guard AVAudioSession.sharedInstance().recordPermission == .granted else { AVAudioSession.sharedInstance().requestRecordPermission { [weak self] granted in if granted { - DispatchQueue.main.async { - self?.processUserWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: contactIDs, groupId: groupId) + Task { [weak self] in + await self?.processUserWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ownedCryptoId, contactCryptoIds: contactCryptoIds, groupId: groupId) } } else { ObvMessengerInternalNotification.requestUserDeniedRecordPermissionAlert.postOnDispatchQueue() @@ -997,9 +1161,9 @@ extension MainFlowViewController { return } - guard !contactIDs.isEmpty else { assertionFailure(); return } - let contacts = contactIDs.compactMap({try? PersistedObvContactIdentity.get(objectID: $0, within: ObvStack.shared.viewContext)}) - guard contacts.count == contactIDs.count else { + guard !contactCryptoIds.isEmpty else { assertionFailure(); return } + let contacts = contactCryptoIds.compactMap({try? PersistedObvContactIdentity.get(contactCryptoId: $0, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) }) + guard contacts.count == contactCryptoIds.count else { os_log("One of the contacts to be called could not be fetched from database", log: log, type: .fault) assertionFailure() return @@ -1026,22 +1190,21 @@ extension MainFlowViewController { } let ownedIdentity = ownedIdentities.first! - let contactIds = contacts.map({ OlvidUserId.known(contactObjectID: $0.typedObjectID, ownCryptoId: ownedIdentity.cryptoId, remoteCryptoId: $0.cryptoId, displayName: $0.fullDisplayName) }) + let contactCryptoIds = Set(contacts.map({ $0.cryptoId })) // If the owned identity is allowed to make outgoing calls, we use it to request turn credentials. If it is not, we look for another owned identity that is allowed to and use it (exclusively) to request turn credentials. // This way, if one identity it allowed to make outgoing calls, all other owned identity are as well. - let ownedIdentityForRequestingTurnCredentials: ObvCryptoId? - if ownedIdentity.apiPermissions.contains(.canCall) { - ownedIdentityForRequestingTurnCredentials = ownedIdentity.cryptoId - } else if let ownedIdentityAllowedToCall = try? PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: ObvStack.shared.viewContext).first(where: { $0.apiPermissions.contains(.canCall) }) { - ownedIdentityForRequestingTurnCredentials = ownedIdentityAllowedToCall.cryptoId - } else { - ownedIdentityForRequestingTurnCredentials = nil - } + let ownedIdentityForRequestingTurnCredentials = ownedIdentity.ownedCryptoIdAllowedToEmitSecureCall if let ownedIdentityForRequestingTurnCredentials { - ObvMessengerInternalNotification.userWantsToCallAndIsAllowedTo(contactIds: contactIds, ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, groupId: groupId) + do { + ObvMessengerInternalNotification.userWantsToCallAndIsAllowedTo( + ownedCryptoId: ownedCryptoId, + contactCryptoIds: contactCryptoIds, + ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, + groupId: groupId) .postOnDispatchQueue() + } } else { let vc = UserTriesToAccessPaidFeatureHostingController(requestedPermission: .canCall, ownedCryptoId: ownedIdentity.cryptoId) dismiss(animated: true) { [weak self] in @@ -1050,62 +1213,54 @@ extension MainFlowViewController { } } - + private func observeUserWantsToSelectAndCallContactsNotifications() { - observationTokens.append(ObvMessengerInternalNotification.observeUserWantsToSelectAndCallContacts(queue: OperationQueue.main) { [weak self] (allContactsID, groupId) in - guard !allContactsID.isEmpty else { return } - var contacts: [PersistedObvContactIdentity] = [] - for contactID in allContactsID { - guard let contact = try? PersistedObvContactIdentity.get(objectID: contactID, within: ObvStack.shared.viewContext) else { assertionFailure(); return } - guard !contact.devices.isEmpty else { continue } - contacts += [contact] - } - guard !contacts.isEmpty else { return } - guard let ownedIdentity = contacts.first?.ownedIdentity else { assertionFailure(); return } - - var contactCryptoIds = Set() - if let groupId = groupId { - switch groupId { - case .groupV1(let objectID): - if let contactGroup = try? PersistedContactGroup.get(objectID: objectID.objectID, within: ObvStack.shared.viewContext) { - contactGroup.contactIdentities.forEach { contactCryptoIds.insert($0.cryptoId) } - } - case .groupV2(let objectID): - if let group = try? PersistedGroupV2.get(objectID: objectID, within: ObvStack.shared.viewContext) { - group.contactsAmongNonPendingOtherMembers.forEach { contactCryptoIds.insert($0.cryptoId) } - } - } - } else { - contacts.forEach { contactCryptoIds.insert($0.cryptoId) } - } - - let button = MultipleContactsButton.floating(title: CommonString.Word.Call, systemIcon: .phoneFill) - - let vc = MultipleContactsViewController(ownedCryptoId: ownedIdentity.cryptoId, - mode: .restricted(to: contactCryptoIds, oneToOneStatus: .any), - button: button, defaultSelectedContacts: Set(contacts), - disableContactsWithoutDevice: true, - allowMultipleSelection: true, - showExplanation: false, - allowEmptySetOfContacts: false, - textAboveContactList: nil, - selectionStyle: .checkmark) { selectedContacts in - - ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: selectedContacts.map({ $0.typedObjectID }), groupId: groupId).postOnDispatchQueue() + observationTokens.append(ObvMessengerInternalNotification.observeUserWantsToSelectAndCallContacts { ownedCryptoId, contactCryptoIds, groupId in + Task { [weak self] in await self?.processUserWantsToSelectAndCallContacts(ownedCryptoId: ownedCryptoId, contactCryptoIds: contactCryptoIds, groupId: groupId) } + }) + } + + + @MainActor + private func processUserWantsToSelectAndCallContacts(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set, groupId: GroupIdentifier?) async { + guard !contactCryptoIds.isEmpty else { return } + + let persistedContacts = contactCryptoIds + .compactMap { try? PersistedObvContactIdentity.get(contactCryptoId: $0, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) } + .filter { !$0.devices.isEmpty } + + guard !persistedContacts.isEmpty else { return } + + let button = MultipleContactsButton.floating(title: CommonString.Word.Call, systemIcon: .phoneFill) + + let vc = MultipleContactsViewController(ownedCryptoId: ownedCryptoId, + mode: .restricted(to: contactCryptoIds, oneToOneStatus: .any), + button: button, + defaultSelectedContacts: Set(persistedContacts), + disableContactsWithoutDevice: true, + allowMultipleSelection: true, + showExplanation: false, + allowEmptySetOfContacts: false, + textAboveContactList: nil, + selectionStyle: .checkmark) { [weak self] selectedContacts in + + let selectedContactCryptoIs = selectedContacts.map { $0.cryptoId } + ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set(selectedContactCryptoIs), groupId: groupId) + .postOnDispatchQueue() - self?.dismiss(animated: true) - } dismissAction: { - self?.dismiss(animated: true) - } - let nav = ObvNavigationController(rootViewController: vc) + self?.dismiss(animated: true) + } dismissAction: { [weak self] in + self?.dismiss(animated: true) + } + let nav = ObvNavigationController(rootViewController: vc) - if let presentedViewController = self?.presentedViewController { - presentedViewController.present(nav, animated: true) - } else { - self?.present(nav, animated: true) - } - }) + if let presentedViewController { + presentedViewController.present(nav, animated: true) + } else { + present(nav, animated: true) + } } + private func observeServerDoesNotSupportCall() { observationTokens.append(VoIPNotification.observeServerDoesNotSupportCall(queue: OperationQueue.main) { [weak self] in @@ -1119,21 +1274,7 @@ extension MainFlowViewController { }) } - private func observeCallHasBeenUpdated() { - observationTokens.append(VoIPNotification.observeCallHasBeenUpdated(queue: OperationQueue.main) { [weak self] _, updateKind in - guard case .state(let newState) = updateKind else { return } - guard newState == .kicked else { return } - let alert = UIAlertController(title: Strings.UserHasBeenKilled.title, message: nil, preferredStyle: .alert) - alert.addAction(UIAlertAction(title: CommonString.Word.Ok, style: .default)) - if let presentedViewController = self?.presentedViewController { - presentedViewController.present(alert, animated: true) - } else { - self?.present(alert, animated: true) - } - }) - } - @MainActor private func presentUIActivityViewControllerForSharingOwnPublishedDetails(sourceView: UIView) { guard let obvOwnedIdentity = try? obvEngine.getOwnedIdentity(with: currentOwnedCryptoId) else { return } @@ -1179,7 +1320,7 @@ extension MainFlowViewController { os_log("🥏 The current deep link is a myId", log: log, type: .info) guard let ownedIdentity = try? PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: ObvStack.shared.viewContext) else { assertionFailure(); return } presentedViewController?.dismiss(animated: true) - let vc = SingleOwnedIdentityFlowViewController(ownedIdentity: ownedIdentity, obvEngine: obvEngine) + let vc = SingleOwnedIdentityFlowViewController(ownedIdentity: ownedIdentity, obvEngine: obvEngine, delegate: self) let nav = UINavigationController(rootViewController: vc) vc.delegate = self present(nav, animated: true) @@ -1242,24 +1383,30 @@ extension MainFlowViewController { } case .airDrop(fileURL: let fileURL): - if let discussionVC = currentDiscussionViewControllerShownToUser() { - // The user is currently within a discussion. We add the AirDrop'ed files within that discussion - discussionVC.addAttachmentFromAirDropFile(at: fileURL) - } else { - // The user is not within a discussion. Go to the list of latest discussions and wait until a discussion is chosen - // We save the file URL - mainTabBarController.selectedIndex = ChildTypes.latestDiscussions - _ = discussionsFlowViewController.children.first?.navigationController?.popViewController(animated: true) - DispatchQueue.main.async { [weak self] in - guard let _self = self else { return } - _self.airDroppedFileURLs.append(fileURL) - guard !_self.hudIsShown() else { return } - _self.showHUD(type: ObvHUDType.text(text: Strings.chooseDiscussion), completionHandler: nil) - DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2)) { [weak self] in - self?.hideHUD() - } - } + + #if targetEnvironment(macCatalyst) + + // For catalyst, we copy the file to a tmp folder in order to prevent it to be deleted by future operations + + let targetFileURL = ObvUICoreDataConstants.ContainerURL.forTemporaryDroppedItems.appendingPathComponent(fileURL.lastPathComponent) + let fileManager = FileManager.default + if fileManager.fileExists(atPath: fileURL.path) { + // copy the file + do { + try fileManager.copyItem(at: fileURL, to: targetFileURL) + addAttachmentFromFile(at: targetFileURL) + } catch { + os_log("Unable to copy file to tmp Folder", log: log, type: .info) + } } + + #else + + let targetFileURL = fileURL + addAttachmentFromFile(at: targetFileURL) + + #endif + case .requestRecordPermission: switch AVAudioSession.sharedInstance().recordPermission { case .undetermined: @@ -1299,6 +1446,16 @@ extension MainFlowViewController { presentSettingsFlowViewController(specificSetting: .backup) } + case .voipSettings: + assert(Thread.isMainThread) + if let presentedViewController = self.presentedViewController { + presentedViewController.dismiss(animated: true) { [weak self] in + self?.presentSettingsFlowViewController(specificSetting: .voip) + } + } else { + presentSettingsFlowViewController(specificSetting: .voip) + } + case .privacySettings: assert(Thread.isMainThread) if let presentedViewController = self.presentedViewController { @@ -1318,17 +1475,36 @@ extension MainFlowViewController { } + + @MainActor + private func addAttachmentFromFile(at fileURL: URL) { + if let discussionVC = currentDiscussionViewControllerShownToUser() { + // The user is currently within a discussion. We add the AirDrop'ed files within that discussion + discussionVC.addAttachmentFromAirDropFile(at: fileURL) + } else { + // The user is not within a discussion. Go to the list of latest discussions and wait until a discussion is chosen + // We save the file URL + mainTabBarController.selectedIndex = ChildTypes.latestDiscussions + _ = discussionsFlowViewController.children.first?.navigationController?.popViewController(animated: true) + DispatchQueue.main.async { [weak self] in + guard let _self = self else { return } + _self.airDroppedFileURLs.append(fileURL) + guard !_self.hudIsShown() else { return } + _self.showHUD(type: ObvHUDType.text(text: Strings.chooseDiscussion), completionHandler: nil) + DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2)) { [weak self] in + self?.hideHUD() + } + } + } + } @MainActor private func presentSettingsFlowViewController() { assert(Thread.isMainThread) - guard let createPasscodeDelegate = self.createPasscodeDelegate else { - assertionFailure(); return - } - guard let appBackupDelegate = self.appBackupDelegate else { + guard let createPasscodeDelegate, let appBackupDelegate, let localAuthenticationDelegate else { assertionFailure(); return } - let vc = SettingsFlowViewController(ownedCryptoId: currentOwnedCryptoId, obvEngine: obvEngine, createPasscodeDelegate: createPasscodeDelegate, appBackupDelegate: appBackupDelegate) + let vc = SettingsFlowViewController(ownedCryptoId: currentOwnedCryptoId, obvEngine: obvEngine, createPasscodeDelegate: createPasscodeDelegate, localAuthenticationDelegate: localAuthenticationDelegate, appBackupDelegate: appBackupDelegate) let closeButton = UIBarButtonItem.forClosing(target: self, action: #selector(dismissPresentedViewController)) vc.viewControllers.first?.navigationItem.setLeftBarButton(closeButton, animated: false) present(vc, animated: true) @@ -1338,13 +1514,10 @@ extension MainFlowViewController { @MainActor private func presentSettingsFlowViewController(specificSetting: AllSettingsTableViewController.Setting) { assert(Thread.isMainThread) - guard let createPasscodeDelegate = self.createPasscodeDelegate else { + guard let createPasscodeDelegate, let appBackupDelegate, let localAuthenticationDelegate else { assertionFailure(); return } - guard let appBackupDelegate = self.appBackupDelegate else { - assertionFailure(); return - } - let vc = SettingsFlowViewController(ownedCryptoId: currentOwnedCryptoId, obvEngine: obvEngine, createPasscodeDelegate: createPasscodeDelegate, appBackupDelegate: appBackupDelegate) + let vc = SettingsFlowViewController(ownedCryptoId: currentOwnedCryptoId, obvEngine: obvEngine, createPasscodeDelegate: createPasscodeDelegate, localAuthenticationDelegate: localAuthenticationDelegate, appBackupDelegate: appBackupDelegate) let closeButton = UIBarButtonItem.forClosing(target: self, action: #selector(dismissPresentedViewController)) vc.viewControllers.first?.navigationItem.setLeftBarButton(closeButton, animated: false) present(vc, animated: true) { @@ -1390,14 +1563,14 @@ extension MainFlowViewController { extension MainFlowViewController { - func handleOlvidURL(_ olvidURL: OlvidURL) { + @MainActor + func handleOlvidURL(_ olvidURL: OlvidURL) async { // When receiving an OlvidURL, we store it in the externallyScannedOrTappedOlvidURL variable. This URL will be processed when the viewDidAppear lifecycle method is called. // We do not process the URL here to prevent a race condition between the alert presented to process the link, and the alert presented when authenticating (when the user decided to activate this option). // This only exception to the above is when viewDidAppear was already called, in which case we process the link immediately. - assert(Thread.isMainThread) assert(externallyScannedOrTappedOlvidURL == nil) if viewDidAppearWasCalled { - Task { await processExternallyScannedOrTappedOlvidURL(olvidURL: olvidURL) } + await processExternallyScannedOrTappedOlvidURL(olvidURL: olvidURL) } else { externallyScannedOrTappedOlvidURL = olvidURL } @@ -1405,7 +1578,8 @@ extension MainFlowViewController { /// Lets the user choose which of her identities she wants to use before proceeding with the processing of an an external OlvidURL. - @MainActor private func processExternallyScannedOrTappedOlvidURL(olvidURL: OlvidURL) async { + @MainActor + private func processExternallyScannedOrTappedOlvidURL(olvidURL: OlvidURL) async { os_log("Processing an externally scanned or tapped Olvid URL", log: log, type: .info) do { let ownedIdentities = try PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: ObvStack.shared.viewContext) @@ -1453,14 +1627,19 @@ extension MainFlowViewController { let ownedIdentityChooserVC = OwnedIdentityChooserViewController(currentOwnedCryptoId: currentOwnedCryptoId, ownedIdentities: ownedIdentities, delegate: self) - ownedIdentityChooserVC.modalPresentationStyle = .popover - if let popover = ownedIdentityChooserVC.popoverPresentationController { - if #available(iOS 15, *) { + + // Under iPhone, we use a popover presentation style. Since we have no source view, we cannot do the same under iPad or mac. + // Note that this method gets also called when the user taps an invitation link in a Safari window. In that case, we cannot have a source view anyway. + if traitCollection.userInterfaceIdiom == .phone { + ownedIdentityChooserVC.modalPresentationStyle = .popover + if let popover = ownedIdentityChooserVC.popoverPresentationController { let sheet = popover.adaptiveSheetPresentationController sheet.detents = [.medium(), .large()] sheet.prefersGrabberVisible = true sheet.preferredCornerRadius = 16.0 } + } else { + ownedIdentityChooserVC.modalPresentationStyle = .formSheet } // In case the OwnedIdentityChooserViewController gets dismissed without choosing a profile, we simply want to discard the externallyScannedOrTappedOlvidURLExpectingAnOwnedIdentityToBeChosen ownedIdentityChooserVC.callbackOnViewDidDisappear = { [weak self] in @@ -1626,11 +1805,43 @@ extension MainFlowViewController: ScannerHostingViewDelegate { // MARK: - SingleOwnedIdentityFlowViewControllerDelegate extension MainFlowViewController: SingleOwnedIdentityFlowViewControllerDelegate { - + func userWantsToDismissSingleOwnedIdentityFlowViewController(_ viewController: SingleOwnedIdentityFlowViewController) { assert(Thread.isMainThread) viewController.dismiss(animated: true) } + + + @MainActor + func userWantsToAddNewDevice(_ viewController: SingleOwnedIdentityFlowViewController, ownedCryptoId: ObvCryptoId) async { + guard let mainFlowViewControllerDelegate else { assertionFailure(); return } + viewController.dismiss(animated: true) { + Task { await mainFlowViewControllerDelegate.userWantsToAddNewDevice(self, ownedCryptoId: ownedCryptoId) } + } + } + + + func userRequestedListOfSKProducts() async throws -> [Product] { + assert(storeKitDelegate != nil) + return try await storeKitDelegate?.userRequestedListOfSKProducts() ?? [] + } + + + func userWantsToBuy(_ product: Product) async throws -> StoreKitDelegatePurchaseResult { + guard let storeKitDelegate else { + throw ObvError.storeKitDelegateIsNil + } + return try await storeKitDelegate.userWantsToBuy(product) + } + + + func userWantsToRestorePurchases() async throws { + guard let storeKitDelegate else { + throw ObvError.storeKitDelegateIsNil + } + return try await storeKitDelegate.userWantsToRestorePurchases() + } + } @@ -1798,12 +2009,21 @@ private final class MainFlowViewControllerSplitDelegate: UISplitViewControllerDe mainFlowViewController.mainTabBarController.selectedIndex = MainFlowViewController.ChildTypes.latestDiscussions } - // Push the discussionsVCs onto the stack of the flow + // Push the discussionsVCs onto the stack of the flow: + // Remove the discussionsVCs from their parent, then add them to the flow. + // We perform this last step asynchronously as failing to do so leads to a crash under certain iPhones (e.g., iPhone XR). for vc in discussionsVCs { - obvFlowViewController.pushViewController(vc, animated: false) + vc.view.removeFromSuperview() + vc.willMove(toParent: nil) + vc.removeFromParent() + vc.didMove(toParent: nil) } - + + DispatchQueue.main.async { + obvFlowViewController.setViewControllers(obvFlowViewController.viewControllers + discussionsVCs, animated: false) + } + // We dealt with the discussionsVCs, we do not want the split view controller to do anything with the secondary view controller so we return true return true @@ -1849,7 +2069,7 @@ extension MainFlowViewController { static let message = NSLocalizedString("In order to invite another Olvid user, you can either scan their QR code or show them your own QR code.", comment: "Message of an alert") static let actionShowMyQRCode = NSLocalizedString("Show my QR code", comment: "Title of an alert action") static let actionScanQRCode = NSLocalizedString("Scan another user's QR code", comment: "Title of an alert action") - static let messageAdvanced = NSLocalizedString("In order to invite another Olvid user, you can copy your identity in order to paste it in an email, sms, and so forth. If you receive an identity, you can paste it here.", comment: "Message of an alert") + static let messageAdvanced = NSLocalizedString("In order to invite another Olvid user, you can copy your identity in order to paste it in an email, SMS, and so forth. If you receive an identity, you can paste it here.", comment: "Message of an alert") static let copyYourIdentity = NSLocalizedString("Copy your Id", comment: "Action of an alert") static let pastAnotherIdentity = NSLocalizedString("Paste an Id", comment: "Action of an alert") } @@ -1878,10 +2098,6 @@ extension MainFlowViewController { static let title = NSLocalizedString("SERVER_DOES_NOT_SUPPORT_CALLS", comment: "Alert title") } - struct UserHasBeenKilled { - static let title = NSLocalizedString("USER_HAS_BEEN_KICKED", comment: "Alert title") - } - struct MissingChannelForCallAlert { static let title = { (contactName: String) in String.localizedStringWithFormat(NSLocalizedString("MISSING_CHANNEL_FOR_CALL_TITLE_%@", comment: "Alert title"), contactName) @@ -1910,11 +2126,11 @@ extension MainFlowViewController { static let message = NSLocalizedString("DELETE_THIS_LAST_UNHIDDEN_IDENTITY_QUESTION_MESSAGE", comment: "") } - struct AlertNotifyContactsOnOwnedIdentityDeletion { - static let title = NSLocalizedString("NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_TITLE", comment: "") - static let message = NSLocalizedString("NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_MESSAGE", comment: "") - static let notifyContactsAction = NSLocalizedString("NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_DO_NOTIFY_CONTACTS_ACTION", comment: "") - static let doNotNotifyContactsAction = NSLocalizedString("NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_DO_NOT_NOTIFY_CONTACTS_ACTION", comment: "") + struct AlertChooseBetweenGlobalAndLocalOnOwnedIdentityDeletion { + static let title = NSLocalizedString("CHOOSE_BETWEEN_GLOBAL_AND_LOCAL_OWNED_IDENTITY_DELETION_TITLE", comment: "") + static let message = NSLocalizedString("CHOOSE_BETWEEN_GLOBAL_AND_LOCAL_OWNED_IDENTITY_DELETION_MESSAGE", comment: "") + static let globalDeletionAction = NSLocalizedString("CHOOSE_GLOBAL_OWNED_IDENTITY_DELETION_BUTTON_TITLE", comment: "") + static let localDeletionAction = NSLocalizedString("CHOOSE_LOCAL_OWNED_IDENTITY_DELETION_BUTTON_TITLE", comment: "") } struct AlertTypeDeleteToProceedWithOwnedIdentityDeletion { @@ -1929,3 +2145,14 @@ extension MainFlowViewController { } } + + +// MARK: - Errors + +extension MainFlowViewController { + + enum ObvError: Error { + case storeKitDelegateIsNil + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/MetaFlowController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/MetaFlowController.swift index 1afd93f5..f19db944 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/MetaFlowController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/MetaFlowController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,6 +20,7 @@ import UIKit import os.log import CoreData +import StoreKit import ObvEngine import ObvCrypto import ObvTypes @@ -27,12 +28,19 @@ import SwiftUI import AVFAudio import ObvUI import ObvUICoreData +import UniformTypeIdentifiers +import ObvSettings +import ObvDesignSystem +import JWS +import AppAuth +import Contacts @MainActor -final class MetaFlowController: UIViewController, OlvidURLHandler { +final class MetaFlowController: UIViewController, OlvidURLHandler, MainFlowViewControllerDelegate { private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: MetaFlowController.self)) + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: MetaFlowController.self)) var observationTokens = [NSObjectProtocol]() @@ -46,10 +54,18 @@ final class MetaFlowController: UIViewController, OlvidURLHandler { // Coordinators and Services private var mainFlowViewController: MainFlowViewController? - private var onboardingFlowViewController: OnboardingFlowViewController? + private var onboardingFlowViewController: NewOnboardingFlowViewController? private weak var createPasscodeDelegate: CreatePasscodeDelegate? + private weak var localAuthenticationDelegate: LocalAuthenticationDelegate? private weak var appBackupDelegate: AppBackupDelegate? + private weak var storeKitDelegate: StoreKitDelegate? + private weak var singleOwnedIdentityStoreKitDelegate: StoreKitDelegate? + + /// To ensure a smooth transistion during a cold boot, we add the launcscreen's view as the first child view. + /// Once the other child views are show, we hide this view to prevent glitches (e.g., when switch back and forth between the call and the main view). + /// So we keep a reference to it to make this hiding easy. + private var launchView: UIView? private let callBannerView = CallBannerView() private let viewOnTopOfCallBannerView = UIView() @@ -60,6 +76,7 @@ final class MetaFlowController: UIViewController, OlvidURLHandler { private var currentOwnedCryptoId: ObvCryptoId? = nil private var viewDidLoadWasCalled = false + private var shouldShowCallBannerOnViewDidLoad = false private var viewDidAppearWasCalledAtLeastOnce = false private var completionHandlersToCallOnViewDidAppear = [() -> Void]() @@ -69,14 +86,24 @@ final class MetaFlowController: UIViewController, OlvidURLHandler { private let obvEngine: ObvEngine - init(obvEngine: ObvEngine, createPasscodeDelegate: CreatePasscodeDelegate, appBackupDelegate: AppBackupDelegate) { + init(obvEngine: ObvEngine, createPasscodeDelegate: CreatePasscodeDelegate, localAuthenticationDelegate: LocalAuthenticationDelegate, appBackupDelegate: AppBackupDelegate, storeKitDelegate: StoreKitDelegate, shouldShowCallBanner: Bool) { self.obvEngine = obvEngine self.createPasscodeDelegate = createPasscodeDelegate + self.localAuthenticationDelegate = localAuthenticationDelegate self.appBackupDelegate = appBackupDelegate + self.storeKitDelegate = storeKitDelegate super.init(nibName: nil, bundle: nil) + // If the RootViewController indicates that there is a call in progress, show the call banner. + // This happens when the app was force quitted before receiving a CallKit incoming call. In that case, + // if the user launches the app from the CallKit UI, this MetFlowController is not instantiated during launch + // as the in-hous call view is shown instead. As a consequence, this MetaFlowController did not receive the + // notification about the call. So we need to have the information about this call at init time. + + shouldShowCallBannerOnViewDidLoad = shouldShowCallBanner + observeDidBecomeActiveNotifications() // Internal notifications @@ -110,6 +137,9 @@ final class MetaFlowController: UIViewController, OlvidURLHandler { ObvEngineNotificationNew.observeWellKnownUpdatedSuccess(within: NotificationCenter.default) { [weak self] _, appInfo in self?.processWellKnownAppInfo(appInfo) }, + ObvEngineNotificationNew.observeAnOwnedIdentityTransferProtocolFailed(within: NotificationCenter.default) { [weak self] ownedCryptoId, protocolInstanceUID, error in + Task { [weak self] in await self?.processAnOwnedIdentityTransferProtocolFailed(ownedCryptoId: ownedCryptoId, protocolInstanceUID: protocolInstanceUID, error: error) } + }, ]) // App notifications @@ -118,22 +148,17 @@ final class MetaFlowController: UIViewController, OlvidURLHandler { ObvMessengerInternalNotification.observeUserWantsToRestartChannelEstablishmentProtocol { [weak self] (contactCryptoId, ownedCryptoId) in self?.processUserWantsToRestartChannelEstablishmentProtocol(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) }, - ObvMessengerInternalNotification.observeUserWantsToReCreateChannelEstablishmentProtocol() { [weak self] (contactCryptoId, ownedCryptoId) in - self?.processUserWantsToReCreateChannelEstablishmentProtocol(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) - }, ObvMessengerInternalNotification.observeUserWantsToCreateNewGroupV1(queue: OperationQueue.main) { [weak self] (groupName, groupDescription, groupMembersCryptoIds, ownedCryptoId, photoURL) in self?.processUserWantsToCreateNewGroupV1(groupName: groupName, groupDescription: groupDescription, groupMembersCryptoIds: groupMembersCryptoIds, ownedCryptoId: ownedCryptoId, photoURL: photoURL) }, ObvMessengerInternalNotification.observeUserWantsToCreateNewGroupV2(queue: OperationQueue.main) { [weak self] (groupCoreDetails, ownPermissions, otherGroupMembers, ownedCryptoId, photoURL) in self?.processUserWantsToCreateNewGroupV2(groupCoreDetails: groupCoreDetails, ownPermissions: ownPermissions, otherGroupMembers: otherGroupMembers, ownedCryptoId: ownedCryptoId, photoURL: photoURL) }, - ObvMessengerCoreDataNotification.observeDisplayedContactGroupWasJustCreated { permanentID in - OperationQueue.main.addOperation { [weak self] in - self?.processDisplayedContactGroupWasJustCreated(permanentID: permanentID) - } + ObvMessengerCoreDataNotification.observeDisplayedContactGroupWasJustCreated { [weak self] permanentID in + Task { await self?.processDisplayedContactGroupWasJustCreated(permanentID: permanentID) } }, - ObvMessengerInternalNotification.observeUserWantsToCreateNewOwnedIdentity { [weak self] in - Task { await self?.processUserWantsToCreateNewOwnedIdentityNotification() } + ObvMessengerInternalNotification.observeUserWantsToAddOwnedProfile { [weak self] in + Task { await self?.processUserWantsToAddOwnedProfileNotification() } }, ObvMessengerInternalNotification.observeUserWantsToSwitchToOtherOwnedIdentity { [weak self] ownedCryptoId in Task { await self?.processUserWantsToSwitchToOtherOwnedIdentity(ownedCryptoId: ownedCryptoId) } @@ -165,17 +190,23 @@ final class MetaFlowController: UIViewController, OlvidURLHandler { // VoIP notifications observationTokens.append(contentsOf: [ - VoIPNotification.observeShowCallViewControllerForAnsweringNonCallKitIncomingCall(queue: .main) { [weak self] _ in - self?.setupAndShowAppropriateCallBanner(shouldShowCallBanner: true) - }, - VoIPNotification.observeNewOutgoingCall(queue: .main) { [weak self] _ in - self?.setupAndShowAppropriateCallBanner(shouldShowCallBanner: true) +// VoIPNotification.observeShowCallViewControllerForAnsweringNonCallKitIncomingCall(queue: .main) { [weak self] _ in +// self?.setupAndShowAppropriateCallBanner(shouldShowCallBanner: true) +// }, + VoIPNotification.observeNewCallToShow { [weak self] _ in + Task { [weak self] in await self?.setupAndShowAppropriateCallBanner(shouldShowCallBanner: true, animate: true) } }, - VoIPNotification.observeAnIncomingCallShouldBeShownToUser(queue: .main) { [weak self] _ in - self?.setupAndShowAppropriateCallBanner(shouldShowCallBanner: true) - }, - VoIPNotification.observeNoMoreCallInProgress(queue: .main) { [weak self] in - self?.setupAndShowAppropriateCallBanner(shouldShowCallBanner: false) +// VoIPNotification.observeNewOutgoingCall { [weak self] _ in +// self?.setupAndShowAppropriateCallBanner(shouldShowCallBanner: true) +// }, +// VoIPNotification.observeAnIncomingCallShouldBeShownToUser(queue: .main) { [weak self] _ in +// self?.setupAndShowAppropriateCallBanner(shouldShowCallBanner: true) +// }, + VoIPNotification.observeNoMoreCallInProgress { [weak self] in + Task(priority: .userInitiated) { [weak self] in + os_log("☎️🔚 Observed observeNoMoreCallInProgress notification", log: Self.log, type: .info) + await self?.setupAndShowAppropriateCallBanner(shouldShowCallBanner: false, animate: true) + } } ]) } @@ -208,6 +239,18 @@ final class MetaFlowController: UIViewController, OlvidURLHandler { os_log("Latest recommended app build version from server: %{public}@", log: log, type: .info, String(describing: ObvMessengerSettings.AppVersionAvailable.latest)) os_log("Installed app build version: %{public}@", log: log, type: .info, ObvMessengerConstants.bundleVersion) } + + + private func processAnOwnedIdentityTransferProtocolFailed(ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID, error: Error) async { + if let onboardingFlowViewController { + await onboardingFlowViewController.anOwnedIdentityTransferProtocolFailed(ownedCryptoId: ownedCryptoId, protocolInstanceUID: protocolInstanceUID, error: error) + } else if let onboardingFlowViewController = presentedViewController as? NewOnboardingFlowViewController { + await onboardingFlowViewController.anOwnedIdentityTransferProtocolFailed(ownedCryptoId: ownedCryptoId, protocolInstanceUID: protocolInstanceUID, error: error) + } else { + debugPrint("Could not find onboarding") + } + } + private func observePastedStringIsNotValidOlvidURLNotifications() { observationTokens.append(ObvMessengerInternalNotification.observePastedStringIsNotValidOlvidURL(queue: OperationQueue.main) { [weak self] in @@ -312,7 +355,6 @@ final class MetaFlowController: UIViewController, OlvidURLHandler { let toExecuteAfterViewDidAppear = { [weak self] in guard let _self = self else { return } VoIPNotification.hideCallView.postOnDispatchQueue() - assert(_self.mainFlowViewController != nil) Task { await _self.mainFlowViewController?.performCurrentDeepLinkInitialNavigation(deepLink: deepLink) } @@ -331,12 +373,22 @@ final class MetaFlowController: UIViewController, OlvidURLHandler { // MARK: - Implementing MetaFlowDelegate -extension MetaFlowController: OnboardingFlowViewControllerDelegate { +extension MetaFlowController: NewOnboardingFlowViewControllerDelegate { override func viewDidLoad() { super.viewDidLoad() viewDidLoadWasCalled = true + // Since ``MetaFlowController.setupAndShowAppropriateChildViewControllers(ownedCryptoIdGeneratedDuringOnboarding:completion:)`` is async, + // we need to add an appropriate background view identical to the one shown in the ``InitializerViewController`` to prevent a quick transition + // through a black screen. + let launchScreenStoryBoard = UIStoryboard(name: "LaunchScreen", bundle: nil) + guard let launchViewController = launchScreenStoryBoard.instantiateInitialViewController() else { assertionFailure(); return } + self.launchView = launchViewController.view + self.view.addSubview(launchViewController.view) + launchViewController.view.translatesAutoresizingMaskIntoConstraints = false + self.view.pinAllSidesToSides(of: launchViewController.view) + self.view.addSubview(callBannerView) callBannerView.translatesAutoresizingMaskIntoConstraints = false callBannerView.isHidden = true @@ -354,6 +406,11 @@ extension MetaFlowController: OnboardingFlowViewControllerDelegate { assertionFailure() return } + + // See the comment in the initializer + if shouldShowCallBannerOnViewDidLoad { + await setupAndShowAppropriateCallBanner(shouldShowCallBanner: true, animate: false) + } } } @@ -409,31 +466,9 @@ extension MetaFlowController: OnboardingFlowViewControllerDelegate { mainFlowViewController?.sceneWillResignActive(scene) } - - func onboardingIsFinished(ownedCryptoIdGeneratedDuringOnboarding: ObvCryptoId?, olvidURLScannedDuringOnboarding: OlvidURL?) async { - let log = self.log - do { - try await setupAndShowAppropriateChildViewControllers(ownedCryptoIdGeneratedDuringOnboarding: ownedCryptoIdGeneratedDuringOnboarding) { result in - assert(Thread.isMainThread) - switch result { - case .failure(let error): - assertionFailure(error.localizedDescription) - case .success: - os_log("Did setup and show the appropriate child view controller", log: log, type: .info) - } - // In all cases, we handle the OlvidURL scanned during the onboarding - if let olvidURL = olvidURLScannedDuringOnboarding { - Task { await NewAppStateManager.shared.handleOlvidURL(olvidURL) } - } - } - } catch { - assertionFailure() - } - } - @MainActor - private func setupAndShowAppropriateCallBanner(shouldShowCallBanner: Bool) { + private func setupAndShowAppropriateCallBanner(shouldShowCallBanner: Bool, animate: Bool) async { assert(Thread.isMainThread) guard viewDidLoadWasCalled else { return } @@ -454,8 +489,10 @@ extension MetaFlowController: OnboardingFlowViewControllerDelegate { } view.setNeedsUpdateConstraints() - UIView.animate(withDuration: 0.3) { [weak self] in - self?.view.layoutIfNeeded() + if animate { + UIView.animate(withDuration: 0.3) { [weak self] in + self?.view.layoutIfNeeded() + } } } @@ -578,13 +615,17 @@ extension MetaFlowController: OnboardingFlowViewControllerDelegate { if let ownedCryptoId = appropriateOwnedCryptoIdToShow { if mainFlowViewController == nil { - guard let createPasscodeDelegate = self.createPasscodeDelegate else { - assertionFailure(); return - } - guard let appBackupDelegate = self.appBackupDelegate else { + guard let createPasscodeDelegate, let appBackupDelegate, let localAuthenticationDelegate, let storeKitDelegate else { assertionFailure(); return } - mainFlowViewController = MainFlowViewController(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine, createPasscodeDelegate: createPasscodeDelegate, appBackupDelegate: appBackupDelegate) + mainFlowViewController = MainFlowViewController( + ownedCryptoId: ownedCryptoId, + obvEngine: obvEngine, + createPasscodeDelegate: createPasscodeDelegate, + localAuthenticationDelegate: localAuthenticationDelegate, + appBackupDelegate: appBackupDelegate, + mainFlowViewControllerDelegate: self, + storeKitDelegate: storeKitDelegate) } guard let mainFlowViewController else { @@ -644,6 +685,8 @@ extension MetaFlowController: OnboardingFlowViewControllerDelegate { setupMainFlowViewControllerConstraintsWithoutCallBannerViewIfNecessary() NSLayoutConstraint.activate(mainFlowViewControllerConstraintsWithoutCallBannerView) callBannerView.isHidden = true + launchView?.removeFromSuperview() + launchView = nil internalCompletion(.success(())) @@ -663,11 +706,16 @@ extension MetaFlowController: OnboardingFlowViewControllerDelegate { assertionFailure() } } else { - onboardingFlowViewController = OnboardingFlowViewController(obvEngine: obvEngine, appBackupDelegate: appBackupDelegate) + //onboardingFlowViewController = OnboardingFlowViewController(obvEngine: obvEngine, appBackupDelegate: appBackupDelegate) + let mdmConfig = getMDMConfigurationForOnboarding() + onboardingFlowViewController = NewOnboardingFlowViewController( + logSubsystem: ObvMessengerConstants.logSubsystem, + directoryForTempFiles: ObvUICoreDataConstants.ContainerURL.forTempFiles.url, + mode: .initialOnboarding(mdmConfig: mdmConfig)) onboardingFlowViewController?.delegate = self } - guard let onboardingFlowViewController = onboardingFlowViewController else { + guard let onboardingFlowViewController else { assertionFailure() internalCompletion(.failure(makeError(message: "No onboarding flow view controller"))) return @@ -710,6 +758,28 @@ extension MetaFlowController: OnboardingFlowViewControllerDelegate { } + /// Helper method called to configure the very first onboarding + private func getMDMConfigurationForOnboarding() -> Onboarding.MDMConfiguration? { + + if ObvMessengerSettings.MDM.isConfiguredFromMDM, + let mdmConfigurationURI = ObvMessengerSettings.MDM.Configuration.uri, + let olvidURL = OlvidURL(urlRepresentation: mdmConfigurationURI) { + + switch olvidURL.category { + case .configuration(_, _, let keycloakConfig): + guard let keycloakConfig else { return nil } + return .init(keycloakConfiguration: .init(keycloakServerURL: keycloakConfig.serverURL, clientId: keycloakConfig.clientId, clientSecret: keycloakConfig.clientSecret)) + default: + assertionFailure() + return nil + } + } + + return nil + + } + + /// Returns the most appropriate owned identity to show. Returns `nil` if no owned identity exists. @MainActor private func getMostAppropriateOwnedCryptoIdToShow() async -> ObvCryptoId? { guard let latestCurrentOWnedIdentityStored = await LatestCurrentOwnedIdentityStorage.shared.getLatestCurrentOwnedIdentityStored() else { @@ -778,41 +848,385 @@ extension MetaFlowController: OnboardingFlowViewControllerDelegate { } + +// MARK: - NewOnboardingFlowViewControllerDelegate + +extension MetaFlowController { + + func onboardingRequiresKeycloakToSyncAllManagedIdentities() async { + do { + try await KeycloakManagerSingleton.shared.syncAllManagedIdentities() + } catch { + assertionFailure(error.localizedDescription) + } + } + + + @MainActor + func userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice(onboardingFlow: NewOnboardingFlowViewController, transferredOwnedCryptoId: ObvCryptoId, userWantsToAddAnotherProfile: Bool) async { + if mainFlowViewController != nil { + await switchToOwnedIdentity(ownedCryptoId: transferredOwnedCryptoId) + onboardingFlow.dismiss(animated: true) + } else { + do { + try await setupAndShowAppropriateChildViewControllers(ownedCryptoIdGeneratedDuringOnboarding: transferredOwnedCryptoId) { result in + switch result { + case .success: + onboardingFlow.dismiss(animated: true) { + if userWantsToAddAnotherProfile { + ObvMessengerInternalNotification.userWantsToAddOwnedProfile + .postOnDispatchQueue() + } + } + case .failure: + assertionFailure() + } + } + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + + func onboardingRequiresToPerformOwnedDeviceDiscoveryNow(for ownedCryptoId: ObvCryptoId) async throws -> (ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data) { + let ownedDeviceDiscoveryResult = try await obvEngine.performOwnedDeviceDiscoveryNow(ownedCryptoId: ownedCryptoId) + let currentDeviceIdentifier = try await obvEngine.getCurrentDeviceIdentifier(ownedCryptoId: ownedCryptoId) + return (ownedDeviceDiscoveryResult, currentDeviceIdentifier) + } + + + + + func onboardingIsShowingSasAndExpectingEndOfProtocol(onboardingFlow: NewOnboardingFlowViewController, protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async { + await obvEngine.appIsShowingSasAndExpectingEndOfProtocol( + protocolInstanceUID: protocolInstanceUID, + onSyncSnapshotReception: onSyncSnapshotReception, + onSuccessfulTransfer: onSuccessfulTransfer) + } + + + func onboardingRequiresToInitiateOwnedIdentityTransferProtocolOnTargetDevice(onboardingFlow: NewOnboardingFlowViewController, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, currentDeviceName: String, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void) async throws { + try await obvEngine.initiateOwnedIdentityTransferProtocolOnTargetDevice( + currentDeviceName: currentDeviceName, + transferSessionNumber: transferSessionNumber, + onIncorrectTransferSessionNumber: onIncorrectTransferSessionNumber, + onAvailableSas: onAvailableSas) + } + + + func onboardingRequiresToInitiateOwnedIdentityTransferProtocolOnSourceDevice(onboardingFlow: NewOnboardingFlowViewController, ownedCryptoId: ObvCryptoId, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void) async throws { + try await obvEngine.initiateOwnedIdentityTransferProtocolOnSourceDevice( + ownedCryptoId: ownedCryptoId, + onAvailableSessionNumber: onAvailableSessionNumber, + onAvailableSASExpectedOnInput: onAvailableSASExpectedOnInput) + } + + + func userWishesToFinalizeOwnedIdentityTransferFromSourceDevice(onboardingFlow: NewOnboardingFlowViewController, enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws { + try await obvEngine.userEnteredValidSASOnSourceDeviceForOwnedIdentityTransferProtocol( + enteredSAS: enteredSAS, + deviceToKeepActive: deviceToKeepActive, + ownedCryptoId: ownedCryptoId, + protocolInstanceUID: protocolInstanceUID) + onboardingFlow.dismiss(animated: true) + } + + + func userWantsToCloseOnboardingAndCancelAnyOwnedTransferProtocol(onboardingFlow: NewOnboardingFlowViewController) async { + do { + try await obvEngine.userWantsToCancelAllOwnedIdentityTransferProtocols() + } catch { + assertionFailure() + } + + onboardingFlow.dismiss(animated: true) + + } + + + func onboardingRequiresToRegisterAndUploadOwnedIdentityToKeycloakServer(ownedCryptoId: ObvCryptoId) async throws { + await KeycloakManagerSingleton.shared.registerKeycloakManagedOwnedIdentity(ownedCryptoId: ownedCryptoId, firstKeycloakBinding: true) + try await KeycloakManagerSingleton.shared.uploadOwnIdentity(ownedCryptoId: ownedCryptoId) + } + + + func onboardingRequiresKeycloakAuthentication(onboardingFlow: NewOnboardingFlowViewController, keycloakConfiguration: Onboarding.KeycloakConfiguration, keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration)) async throws -> (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff, keycloakState: ObvKeycloakState) { + let authState = try await KeycloakManagerSingleton.shared.authenticate(configuration: keycloakServerKeyAndConfig.serviceConfig, + clientId: keycloakConfiguration.clientId, + clientSecret: keycloakConfiguration.clientSecret, + ownedCryptoId: nil) + let keycloakConfig = KeycloakConfiguration(serverURL: keycloakConfiguration.keycloakServerURL, clientId: keycloakConfiguration.clientId, clientSecret: keycloakConfiguration.clientSecret) + return try await getOwnedDetailsAfterSucessfullAuthentication(keycloakConfiguration: keycloakConfig, keycloakServerKeyAndConfig: keycloakServerKeyAndConfig, authState: authState) + } + + + @MainActor + private func getOwnedDetailsAfterSucessfullAuthentication(keycloakConfiguration: KeycloakConfiguration, keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration), authState: OIDAuthState) async throws -> (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff, keycloakState: ObvKeycloakState) { + + let (keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff) = try await KeycloakManagerSingleton.shared.getOwnDetails( + keycloakServer: keycloakConfiguration.serverURL, + authState: authState, + clientSecret: keycloakConfiguration.clientSecret, + jwks: keycloakServerKeyAndConfig.jwks, + latestLocalRevocationListTimestamp: nil) + + if let minimumBuildVersion = keycloakServerRevocationsAndStuff.minimumIOSBuildVersion { + guard ObvMessengerConstants.bundleVersionAsInt >= minimumBuildVersion else { + throw ObvError.installedOlvidAppIsOutdated + } + } + + let rawAuthState = try authState.serialize() + + let keycloakState = ObvKeycloakState( + keycloakServer: keycloakConfiguration.serverURL, + clientId: keycloakConfiguration.clientId, + clientSecret: keycloakConfiguration.clientSecret, + jwks: keycloakServerKeyAndConfig.jwks, + rawAuthState: rawAuthState, + signatureVerificationKey: keycloakUserDetailsAndStuff.serverSignatureVerificationKey, + latestLocalRevocationListTimestamp: nil, + latestGroupUpdateTimestamp: nil) + + return (keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff, keycloakState) + + } + + + func onboardingRequiresToDiscoverKeycloakServer(onboardingFlow: NewOnboardingFlowViewController, keycloakServerURL: URL) async throws -> (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration) { + return try await KeycloakManagerSingleton.shared.discoverKeycloakServer(for: keycloakServerURL) + } + + + func userWantsToEnableAutomaticBackup(onboardingFlow: NewOnboardingFlowViewController) async throws { + + guard !ObvMessengerSettings.Backup.isAutomaticBackupEnabled else { return } + + guard let appBackupDelegate else { + throw ObvError.theAppBackupDelegateIsNotSet + } + + // The user wants to activate automatic backup. + // We must check whether it's possible. + let defaultTitleAndMessageOnError = (title: "AUTOMATIC_BACKUP_COULD_NOT_BE_ENABLED_TITLE", message: "PLEASE_TRY_AGAIN_LATER") + do { + let accountStatus = try await appBackupDelegate.getAccountStatus() + if case .available = accountStatus { + obvEngine.userJustActivatedAutomaticBackup() + ObvMessengerSettings.Backup.isAutomaticBackupEnabled = true + return + } else { + let titleAndMessage = AppBackupManager.CKAccountStatusMessage(accountStatus) ?? AppBackupManager.CKAccountStatusMessage(.couldNotDetermine) ?? defaultTitleAndMessageOnError + throw ObvError.ckAccountStatusError(title: titleAndMessage.title, message: titleAndMessage.message) + } + } catch { + let titleAndMessage = AppBackupManager.CKAccountStatusMessage(.noAccount) ?? defaultTitleAndMessageOnError + throw ObvError.ckAccountStatusError(title: titleAndMessage.title, message: titleAndMessage.message) + } + + } + + + @MainActor + func onboardingRequiresToRestoreBackup(onboardingFlow: NewOnboardingFlowViewController, backupRequestIdentifier: UUID) async throws -> ObvCryptoId { + let ownedDeviceName = UIDevice.current.preciseModel + let cryptoIdsOfRestoredOwnedIdentities = try await obvEngine.restoreFullBackup(backupRequestIdentifier: backupRequestIdentifier, nameToGiveToCurrentDevice: ownedDeviceName) + guard let randomCryptoId = cryptoIdsOfRestoredOwnedIdentities.first else { + assertionFailure() + throw ObvError.couldNotFindOwnedIdentity + } + // We obtained a list of restored owned identities. We only need to return one. We search for a non-hidden one + do { + let nonHiddenOwnedIdentities = try PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: ObvStack.shared.viewContext) + let cryptoIdsOfNonHiddenOwnedIdentities = Set(nonHiddenOwnedIdentities.map { $0.cryptoId }) + return cryptoIdsOfNonHiddenOwnedIdentities.intersection(cryptoIdsOfRestoredOwnedIdentities).first ?? randomCryptoId + } catch { + // If something goes wrong, we return a "random" restored owned identity + assertionFailure() + return randomCryptoId + } + } + + + func onboardingRequiresToRecoverBackupFromEncryptedBackup(onboardingFlow: NewOnboardingFlowViewController, encryptedBackup: Data, backupKey: String) async throws -> (backupRequestIdentifier: UUID, backupDate: Date) { + return try await obvEngine.recoverBackupData(encryptedBackup, withBackupKey: backupKey) + } + + + func onboardingRequiresAcceptableCharactersForBackupKeyString() async -> CharacterSet { + return obvEngine.getAcceptableCharactersForBackupKeyString() + } + + + func onboardingRequiresToGenerateOwnedIdentity(onboardingFlow: NewOnboardingFlowViewController, identityDetails: ObvIdentityDetails, nameForCurrentDevice: String, keycloakState: ObvKeycloakState?, customServerAndAPIKey: ServerAndAPIKey?) async throws -> ObvCryptoId { + let usedCustomServerAndAPIKey: ServerAndAPIKey? + if keycloakState != nil { + usedCustomServerAndAPIKey = nil + } else { + usedCustomServerAndAPIKey = customServerAndAPIKey // nil, most of the time + } + let generatedOwnedCryptoId = try await obvEngine.generateOwnedIdentity( + onServerURL: usedCustomServerAndAPIKey?.server ?? ObvMessengerConstants.serverURL, + with: identityDetails, + nameForCurrentDevice: nameForCurrentDevice, + keycloakState: keycloakState) + if let apiKey = usedCustomServerAndAPIKey?.apiKey { + _ = try await obvEngine.registerOwnedAPIKeyOnServerNow(ownedCryptoId: generatedOwnedCryptoId, apiKey: apiKey) + } + return generatedOwnedCryptoId + } + + + func onboardingIsFinished(onboardingFlow: NewOnboardingFlowViewController, ownedCryptoIdGeneratedDuringOnboarding: ObvTypes.ObvCryptoId) async { + let log = self.log + do { + try await setupAndShowAppropriateChildViewControllers(ownedCryptoIdGeneratedDuringOnboarding: ownedCryptoIdGeneratedDuringOnboarding) { result in + assert(Thread.isMainThread) + switch result { + case .failure(let error): + assertionFailure(error.localizedDescription) + case .success: + os_log("Did setup and show the appropriate child view controller", log: log, type: .info) + } + } + } catch { + assertionFailure() + } + } + + + func onboardingNeedsToPreventPrivacyWindowSceneFromShowingOnNextWillResignActive(onboardingFlow: NewOnboardingFlowViewController) async { + preventPrivacyWindowSceneFromShowingOnNextWillResignActive() + } + + + func onboardingRequiresToSyncAppDatabasesWithEngine(onboardingFlow: NewOnboardingFlowViewController) async throws { + try await requestSyncAppDatabasesWithEngine() + } + + + @MainActor + private func requestSyncAppDatabasesWithEngine() async throws { + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + ObvMessengerInternalNotification.requestSyncAppDatabasesWithEngine(queuePriority: .veryHigh) { result in + switch result { + case .failure(let error): + continuation.resume(throwing: error) + case .success: + continuation.resume() + } + }.postOnDispatchQueue() + } + } + +} + + +// MARK: - SubscriptionPlansViewActionsProtocol (required for NewOnboardingFlowViewControllerDelegate) + +extension MetaFlowController { + + func fetchSubscriptionPlans(for ownedCryptoId: ObvCryptoId, alsoFetchFreePlan: Bool) async throws -> (freePlanIsAvailable: Bool, products: [Product]) { + + // Step 1: Ask the engine (i.e., Olvid's server) whether a free trial is still available for this identity + let freePlanIsAvailable: Bool + if alsoFetchFreePlan { + freePlanIsAvailable = try await obvEngine.queryServerForFreeTrial(for: ownedCryptoId) + } else { + freePlanIsAvailable = false + } + + // Step 2: As StoreKit about available products + assert(storeKitDelegate != nil) + let products = try await storeKitDelegate?.userRequestedListOfSKProducts() ?? [] + + return (freePlanIsAvailable, products) + } + + + func userWantsToStartFreeTrialNow(ownedCryptoId: ObvCryptoId) async throws -> APIKeyElements { + let newAPIKeyElements = try await obvEngine.startFreeTrial(for: ownedCryptoId) + return newAPIKeyElements + } + + + func userWantsToBuy(_ product: Product) async throws -> StoreKitDelegatePurchaseResult { + guard let storeKitDelegate else { assertionFailure(); throw ObvError.storeKitDelegateIsNil } + return try await storeKitDelegate.userWantsToBuy(product) + } + + + func userWantsToRestorePurchases() async throws { + guard let storeKitDelegate else { assertionFailure(); throw ObvError.storeKitDelegateIsNil } + return try await storeKitDelegate.userWantsToRestorePurchases() + } + +} + + +// MARK: - MainFlowViewControllerDelegate + +extension MetaFlowController { + + func userWantsToAddNewDevice(_ viewController: MainFlowViewController, ownedCryptoId: ObvCryptoId) async { + guard let ownedDetails = try? await getOwnedIdentityDetails(ownedCryptoId: ownedCryptoId) else { assertionFailure(); return } + let newOnboardingFlowViewController = NewOnboardingFlowViewController( + logSubsystem: ObvMessengerConstants.logSubsystem, + directoryForTempFiles: ObvUICoreDataConstants.ContainerURL.forTempFiles.url, + mode: .addNewDevice(ownedCryptoId: ownedCryptoId, ownedDetails: ownedDetails)) + newOnboardingFlowViewController.delegate = self + present(newOnboardingFlowViewController, animated: true) + } + + + private func getOwnedIdentityDetails(ownedCryptoId: ObvCryptoId) async throws -> CNContact? { + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + ObvStack.shared.performBackgroundTask { context in + do { + let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: context) + let ownedDetails = ownedIdentity?.asCNContact + continuation.resume(returning: ownedDetails) + } catch { + continuation.resume(throwing: error) + } + } + } + } + + +} + + // MARK: - Feeding the contact database extension MetaFlowController { private func observeUserWantsToDeleteOwnedContactGroupNotifications() { - let NotificationType = MessengerInternalNotification.UserWantsToDeleteOwnedContactGroup.self - let token = NotificationCenter.default.addObserver(forName: NotificationType.name, object: nil, queue: nil) { [weak self] (notification) in - guard let (groupUid, ownedCryptoId) = NotificationType.parse(notification) else { return } - guard self?.currentOwnedCryptoId == ownedCryptoId else { return } - self?.deleteOwnedContactGroup(groupUid: groupUid, ownedCryptoId: ownedCryptoId, confirmed: false) - } - observationTokens.append(token) + observationTokens.append(ObvMessengerInternalNotification.observeUserWantsToDeleteOwnedContactGroup { [weak self] ownedCryptoId, groupUid in + Task { await self?.deleteOwnedContactGroup(groupUid: groupUid, ownedCryptoId: ownedCryptoId, confirmed: false) } + }) } - private func deleteOwnedContactGroup(groupUid: UID, ownedCryptoId: ObvCryptoId, confirmed: Bool) { + @MainActor + private func deleteOwnedContactGroup(groupUid: UID, ownedCryptoId: ObvCryptoId, confirmed: Bool) async { if confirmed { do { - try obvEngine.deleteOwnedContactGroup(ownedCryptoId: ownedCryptoId, groupUid: groupUid) + try await obvEngine.disbandGroupV1(groupUid: groupUid, ownedCryptoId: ownedCryptoId) } catch { - // We could not delete the group owned. For now, we just display an alert indicating that a non-empty owned group cannot be deleted - let uiAlert = UIAlertController(title: Strings.AlertDeleteOwnedGroupFailed.title, message: Strings.AlertDeleteOwnedGroupFailed.message, preferredStyle: .alert) let okAction = UIAlertAction(title: CommonString.Word.Ok, style: .default, handler: nil) uiAlert.addAction(okAction) - if let presentedViewController = presentedViewController { + if let presentedViewController { presentedViewController.present(uiAlert, animated: true) } else { present(uiAlert, animated: true) } - } } else { @@ -821,7 +1235,7 @@ extension MetaFlowController { message: Strings.deleteGroupExplanation, preferredStyleForTraitCollection: self.traitCollection) alert.addAction(UIAlertAction(title: CommonString.AlertButton.performDeletionAction, style: .destructive, handler: { [weak self] (action) in - self?.deleteOwnedContactGroup(groupUid: groupUid, ownedCryptoId: ownedCryptoId, confirmed: true) + Task { await self?.deleteOwnedContactGroup(groupUid: groupUid, ownedCryptoId: ownedCryptoId, confirmed: true) } })) alert.addAction(UIAlertAction(title: CommonString.Word.Cancel, style: .cancel)) @@ -1070,24 +1484,7 @@ extension MetaFlowController { observationTokens.append(token) } - - private func processUserWantsToReCreateChannelEstablishmentProtocol(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) { - let obvEngine = self.obvEngine - DispatchQueue(label: "Background queue for recreating secure channel with contact").async { - do { - try obvEngine.reCreateAllChannelEstablishmentProtocolsWithContactIdentity(with: contactCryptoId, ofOwnedIdentyWith: ownedCryptoId) - } catch { - DispatchQueue.main.async { [weak self] in - let alert = UIAlertController(title: Strings.AlertChannelEstablishementRestartedFailed.title, message: "", preferredStyle: .alert) - alert.addAction(UIAlertAction(title: CommonString.Word.Ok, style: .default)) - self?.present(alert, animated: true) - } - } - // No feedback alert in case of success - } - } - private func processUserWantsToCreateNewGroupV1(groupName: String, groupDescription: String?, groupMembersCryptoIds: Set, ownedCryptoId: ObvCryptoId, photoURL: URL?) { assert(Thread.isMainThread) // Required because we access automaticallyNavigateToCreatedDisplayedContactGroup automaticallyNavigateToCreatedDisplayedContactGroup = true @@ -1127,7 +1524,8 @@ extension MetaFlowController { } - private func processDisplayedContactGroupWasJustCreated(permanentID: ObvManagedObjectPermanentID) { + @MainActor + private func processDisplayedContactGroupWasJustCreated(permanentID: ObvManagedObjectPermanentID) async { assert(Thread.isMainThread) // Required because we access automaticallyNavigateToCreatedDisplayedContactGroup guard automaticallyNavigateToCreatedDisplayedContactGroup else { return } guard let currentOwnedCryptoId else { return } @@ -1145,11 +1543,14 @@ extension MetaFlowController { @MainActor - private func processUserWantsToCreateNewOwnedIdentityNotification() async { + private func processUserWantsToAddOwnedProfileNotification() async { presentedViewController?.dismiss(animated: true) - let onboardingFlowViewController = OnboardingFlowViewController(obvEngine: obvEngine, appBackupDelegate: nil) - onboardingFlowViewController.delegate = self - present(onboardingFlowViewController, animated: true) + let newOnboardingFlowViewController = NewOnboardingFlowViewController( + logSubsystem: ObvMessengerConstants.logSubsystem, + directoryForTempFiles: ObvUICoreDataConstants.ContainerURL.forTempFiles.url, + mode: .addProfile) + newOnboardingFlowViewController.delegate = self + present(newOnboardingFlowViewController, animated: true) } } @@ -1233,11 +1634,26 @@ extension MetaFlowController { extension MetaFlowController { - nonisolated func handleOlvidURL(_ olvidURL: OlvidURL) { - DispatchQueue.main.async { [weak self] in - guard let _self = self else { return } - guard let olvidURLHandler = _self.children.compactMap({ $0 as? OlvidURLHandler }).first else { assertionFailure(); return } - olvidURLHandler.handleOlvidURL(olvidURL) + func handleOlvidURL(_ olvidURL: OlvidURL) async { + // If the OlvidURL is an openId redirect, we handle it immediately. + // Otherwise, we passe it down to the olvidURLHandler + if let opendIdRedirectURL = olvidURL.isOpenIdRedirectWithURL { + do { + _ = try await KeycloakManagerSingleton.shared.resumeExternalUserAgentFlow(with: opendIdRedirectURL) + os_log("Successfully resumed the external user agent flow", log: Self.log, type: .info) + } catch { + os_log("Failed to resume external user agent flow: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + } else { + if let olvidURLHandler = self.presentedViewController as? OlvidURLHandler { + // When the onboarding is presented (e.g., to create a second profile), this allows to pass any scanned URL to it (in particular, keycloak configurations) + await olvidURLHandler.handleOlvidURL(olvidURL) + } else { + guard let olvidURLHandler = self.children.compactMap({ $0 as? OlvidURLHandler }).first else { assertionFailure(); return } + await olvidURLHandler.handleOlvidURL(olvidURL) + } } } @@ -1269,3 +1685,54 @@ extension MetaFlowController { } } + + +// MARK: - Errors + +extension MetaFlowController { + + enum ObvError: LocalizedError { + case couldNotFindOwnedIdentity + case couldNotCompressImage + case theAppBackupDelegateIsNotSet + case ckAccountStatusError(title: String, message: String?) + case installedOlvidAppIsOutdated + case storeKitDelegateIsNil + + var errorDescription: String? { + switch self { + case .couldNotFindOwnedIdentity: + return "Could not find owned identity" + case .couldNotCompressImage: + return "Could not compress image" + case .theAppBackupDelegateIsNotSet: + return "The app backup delegate is not set" + case .ckAccountStatusError(title: let title, message: _): + return title + case .installedOlvidAppIsOutdated: + return "The installed Olvid App is outdated" + case .storeKitDelegateIsNil: + return "The store kit delegate is nil" + } + } + + var recoverySuggestion: String? { + switch self { + case .couldNotFindOwnedIdentity: + return nil + case .couldNotCompressImage: + return nil + case .theAppBackupDelegateIsNotSet: + return nil + case .ckAccountStatusError(_, let message): + return message + case .installedOlvidAppIsOutdated: + return nil + case .storeKitDelegateIsNil: + return nil + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/ObvSubTabBarController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/ObvSubTabBarController.swift index 032c20bb..2f85c589 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/ObvSubTabBarController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/ObvSubTabBarController.swift @@ -19,6 +19,8 @@ import UIKit import ObvTypes +import ObvEngine +import ObvUICoreData protocol ObvSubTabBarControllerDelegate: AnyObject { var currentOwnedCryptoId: ObvCryptoId { get } @@ -65,21 +67,6 @@ final class ObvSubTabBarController: UITabBarController, ObvSubTabBarDelegate, Ol return menu } - @available(iOS, introduced: 13, deprecated: 14, message: "Use provideMenu() instead") - func provideAlertActions() -> [UIAlertAction] { - let actions: [UIAlertAction] = [ - UIAlertAction(title: Strings.showBackupScreen, style: .default) { _ in - ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: .backupSettings) - .postOnDispatchQueue() - }, - UIAlertAction(title: Strings.showSettingsScreen, style: .default) { _ in - ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: .settings) - .postOnDispatchQueue() - }, - ] - return actions - } - @objc func dismissPresentedViewController() { presentedViewController?.dismiss(animated: true) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/About/AboutSettingsTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/About/AboutSettingsTableViewController.swift index c8e88767..40c9bea6 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/About/AboutSettingsTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/About/AboutSettingsTableViewController.swift @@ -20,6 +20,9 @@ import ObvUI import UIKit import ObvUICoreData +import ObvSettings +import ObvDesignSystem + final class AboutSettingsTableViewController: UITableViewController { @@ -111,58 +114,32 @@ final class AboutSettingsTableViewController: UITableViewController { case .minimumSupportedVersion: let cell = tableView.dequeueReusableCell(withIdentifier: "AboutSettingsTableViewControllerCell") ?? UITableViewCell(style: .value1, reuseIdentifier: "AboutSettingsTableViewControllerCell") cell.selectionStyle = .none - if #available(iOS 14, *) { - var configuration = cell.defaultContentConfiguration() - configuration.text = Strings.minimumSupportedVersion - if let version = ObvMessengerSettings.AppVersionAvailable.minimum { - configuration.secondaryText = String(describing: version) - } else { - configuration.secondaryText = CommonString.Word.Unavailable - } - cell.contentConfiguration = configuration + var configuration = cell.defaultContentConfiguration() + configuration.text = Strings.minimumSupportedVersion + if let version = ObvMessengerSettings.AppVersionAvailable.minimum { + configuration.secondaryText = String(describing: version) } else { - cell.textLabel?.text = Strings.minimumSupportedVersion - if let version = ObvMessengerSettings.AppVersionAvailable.minimum { - cell.detailTextLabel?.text = String(describing: version) - } else { - cell.detailTextLabel?.text = CommonString.Word.Unavailable - } - cell.selectionStyle = .none + configuration.secondaryText = CommonString.Word.Unavailable } + cell.contentConfiguration = configuration return cell case .minimumRecommendedVersion: let cell = tableView.dequeueReusableCell(withIdentifier: "AboutSettingsTableViewControllerCell") ?? UITableViewCell(style: .value1, reuseIdentifier: "AboutSettingsTableViewControllerCell") - if #available(iOS 14, *) { - var configuration = cell.defaultContentConfiguration() - configuration.text = Strings.minimumRecommendedVersion - if let version = ObvMessengerSettings.AppVersionAvailable.latest { - configuration.secondaryText = String(describing: version) - } else { - configuration.secondaryText = CommonString.Word.Unavailable - } - cell.contentConfiguration = configuration + var configuration = cell.defaultContentConfiguration() + configuration.text = Strings.minimumRecommendedVersion + if let version = ObvMessengerSettings.AppVersionAvailable.latest { + configuration.secondaryText = String(describing: version) } else { - cell.textLabel?.text = Strings.minimumRecommendedVersion - if let version = ObvMessengerSettings.AppVersionAvailable.latest { - cell.detailTextLabel?.text = String(describing: version) - } else { - cell.detailTextLabel?.text = CommonString.Word.Unavailable - } - cell.selectionStyle = .none + configuration.secondaryText = CommonString.Word.Unavailable } + cell.contentConfiguration = configuration return cell case .goToAppStore: let cell = tableView.dequeueReusableCell(withIdentifier: "AboutSettingsTableViewControllerCell") ?? UITableViewCell(style: .value1, reuseIdentifier: "AboutSettingsTableViewControllerCell") - if #available(iOS 14, *) { - var configuration = cell.defaultContentConfiguration() - configuration.text = Strings.upgradeOlvidNow - configuration.textProperties.color = AppTheme.shared.colorScheme.link - cell.contentConfiguration = configuration - } else { - cell.textLabel?.text = Strings.upgradeOlvidNow - cell.detailTextLabel?.text = nil - cell.textLabel?.textColor = AppTheme.shared.colorScheme.link - } + var configuration = cell.defaultContentConfiguration() + configuration.text = Strings.upgradeOlvidNow + configuration.textProperties.color = AppTheme.shared.colorScheme.link + cell.contentConfiguration = configuration cell.selectionStyle = .default return cell } @@ -175,22 +152,18 @@ final class AboutSettingsTableViewController: UITableViewController { cell.textLabel?.text = Strings.termsOfUse cell.textLabel?.textColor = AppTheme.shared.colorScheme.link cell.selectionStyle = .default - if #available(iOS 14.0, *) { - let icon = NSTextAttachment() - icon.image = UIImage(systemIcon: .network)?.withTintColor(AppTheme.shared.colorScheme.link) - cell.detailTextLabel?.attributedText = NSMutableAttributedString(attachment: icon) - } + let icon = NSTextAttachment() + icon.image = UIImage(systemIcon: .network)?.withTintColor(AppTheme.shared.colorScheme.link) + cell.detailTextLabel?.attributedText = NSMutableAttributedString(attachment: icon) return cell case .privacyPolicy: let cell = tableView.dequeueReusableCell(withIdentifier: "AboutSettingsTableViewControllerCell") ?? UITableViewCell(style: .value1, reuseIdentifier: "AboutSettingsTableViewControllerCell") cell.textLabel?.text = Strings.privacyPolicy cell.textLabel?.textColor = AppTheme.shared.colorScheme.link cell.selectionStyle = .default - if #available(iOS 14.0, *) { - let icon = NSTextAttachment() - icon.image = UIImage(systemIcon: .network)?.withTintColor(AppTheme.shared.colorScheme.link) - cell.detailTextLabel?.attributedText = NSMutableAttributedString(attachment: icon) - } + let icon = NSTextAttachment() + icon.image = UIImage(systemIcon: .network)?.withTintColor(AppTheme.shared.colorScheme.link) + cell.detailTextLabel?.attributedText = NSMutableAttributedString(attachment: icon) return cell case .acknowlegments: let cell = tableView.dequeueReusableCell(withIdentifier: "AboutSettingsTableViewControllerCell") ?? UITableViewCell(style: .value1, reuseIdentifier: "AboutSettingsTableViewControllerCell") diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/About/ExternalLibrariesViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/About/ExternalLibrariesViewController.swift index 6258d883..76a8ed1f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/About/ExternalLibrariesViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/About/ExternalLibrariesViewController.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + private enum Licence { case webrtc diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupKeyAllTextFields.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupKeyAllTextFields.swift index 46a8f1ea..bba5c72c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupKeyAllTextFields.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupKeyAllTextFields.swift @@ -34,7 +34,7 @@ struct BackupKeyAllTextFields: View { BackupKeyPartTextField(index: index, textFieldWasCreatedAction: { textField in internalTextFieldWasCreatedAction(index, textField) }) if index < 3 { - Text("-") + Text(verbatim: "-") } } Spacer(minLength: 0) @@ -45,7 +45,7 @@ struct BackupKeyAllTextFields: View { BackupKeyPartTextField(index: index, textFieldWasCreatedAction: { textField in internalTextFieldWasCreatedAction(index, textField) }) if index < 7 { - Text("-") + Text(verbatim: "-") } } Spacer(minLength: 0) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupKeyVerifierView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupKeyVerifierView.swift index 272dcfd6..a26e31e7 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupKeyVerifierView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupKeyVerifierView.swift @@ -24,6 +24,7 @@ import ObvEngine import ObvTypes import ObvUI import ObvUICoreData +import ObvDesignSystem final class BackupKeyVerifierViewHostingController: UIHostingController { @@ -359,7 +360,7 @@ fileprivate struct BackupKeyVerifierInnerView: View { if let keyStatusReport = self.keyStatusReport { KeyStatusReportView(keyStatusReport: keyStatusReport) .transition(.scale) - .animation(.spring()) + .animation(.spring(), value: 0.3) } if isInBackupRecoveryMode { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupTableViewController.swift index abc912ff..6aa4d895 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/BackupTableViewController.swift @@ -25,6 +25,9 @@ import CloudKit import OlvidUtils import ObvUI import ObvUICoreData +import ObvSettings +import ObvDesignSystem + /// First table view controller shown when navigating to the backup settings. @MainActor @@ -643,24 +646,20 @@ extension BackupTableViewController { private func updateComputeCKRecordCountCell(cell: UITableViewCell) { - if #available(iOS 14, *) { - var configuration = UIListContentConfiguration.valueCell() - configuration.text = Strings.computeCKRecordCount - configuration.textProperties.color = AppTheme.shared.colorScheme.link - if let ckRecordCountState = ckRecordCountState { - switch ckRecordCountState { - case .count(let count): - configuration.secondaryText = String(count) - case .error: - configuration.secondaryText = CommonString.Word.Error - } - } else { - configuration.secondaryText = nil + var configuration = UIListContentConfiguration.valueCell() + configuration.text = Strings.computeCKRecordCount + configuration.textProperties.color = AppTheme.shared.colorScheme.link + if let ckRecordCountState = ckRecordCountState { + switch ckRecordCountState { + case .count(let count): + configuration.secondaryText = String(count) + case .error: + configuration.secondaryText = CommonString.Word.Error } - cell.contentConfiguration = configuration } else { - cell.textLabel?.text = Strings.computeCKRecordCount + configuration.secondaryText = nil } + cell.contentConfiguration = configuration } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/ICloudBackupListView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/ICloudBackupListView.swift index 6212f06e..bdbb4d38 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/ICloudBackupListView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Backup/ICloudBackupListView.swift @@ -17,7 +17,6 @@ * along with Olvid. If not, see . */ - import CloudKit import Combine import ObvUI @@ -25,6 +24,7 @@ import SwiftUI import ObvUICoreData import UI_SystemIcon import UI_SystemIcon_SwiftUI +import ObvDesignSystem protocol ICloudBackupListViewControllerDelegate: AnyObject { @@ -308,14 +308,14 @@ struct ICloudBackupListView: View { private func numberOfRecordTitle(count: Int, canHaveMoreRecords: Bool) -> String { if canHaveMoreRecords { - return String.localizedStringWithFormat(NSLocalizedString("recent backups count", comment: "Header for n recent backups"), count) + return String(format: NSLocalizedString("recent backups count", comment: "Header for n recent backups"), count) } else { - return String.localizedStringWithFormat(NSLocalizedString("backups count", comment: "Header for n backups"), count) + return String(format: NSLocalizedString("BACKUP_%llu_COUNT", comment: "Header for n backups"), count) } } private func cleanInProgressTitle(count: Int64) -> String { - String.localizedStringWithFormat(NSLocalizedString("clean in progress count", comment: "Header for n backups"), count) + return String(format: NSLocalizedString("%lld_DELETED_BACKUPS", comment: ""), count) } @@ -388,35 +388,22 @@ struct ICloudBackupListView: View { model.loadMoreRecords(appendResult: true) } } - if #available(iOS 15.0, *) { - cell - .swipeActions { - Button(role: .destructive) { - deleteAction(record: record) - } label: { - Label(CommonString.Word.Delete, systemImage: SystemIcon.trash.systemName) - } - } - } else { - HStack { - cell - Spacer() - Button { + cell + .swipeActions { + Button(role: .destructive) { deleteAction(record: record) } label: { - Image(systemIcon: .trash) + Label(CommonString.Word.Delete, systemImage: SystemIcon.trash.systemName) } - .foregroundColor(.red) } - } } if model.isLoadingMoreRecords { - ObvActivityIndicator(isAnimating: .constant(true), style: .medium, color: nil) + ProgressView() .frame(idealWidth: .infinity, maxWidth: .infinity, alignment: .center) } } } - .obvListStyle() + .listStyle(InsetGroupedListStyle()) .disabled(model.isFetching || actionSheet != nil) } } @@ -439,7 +426,7 @@ struct ICloudBackupListView: View { Spacer() } } else { - let progressView = ObvProgressView() + let progressView = ProgressView() .foregroundColor(.secondary) .padding() ZStack { @@ -454,9 +441,7 @@ struct ICloudBackupListView: View { Text(model.fractionCompletedString ?? "") } VStack(alignment: .leading) { - if #available(iOS 15, *) { - ProgressView(value: model.fractionCompleted) - } + ProgressView(value: model.fractionCompleted) Text(model.estimatedTimeRemainingString ?? "") } case .terminate: @@ -476,12 +461,8 @@ struct ICloudBackupListView: View { Spacer() HStack { Spacer() - if #available(iOS 15.0, *) { - progressView - .background(.ultraThinMaterial) - } else { - progressView - } + progressView + .background(.ultraThinMaterial) Spacer() } Spacer() diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/ContactsAndGroups/ContactsAndGroupsSettingsTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/ContactsAndGroups/ContactsAndGroupsSettingsTableViewController.swift index 01d5c3a4..4154de55 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/ContactsAndGroups/ContactsAndGroupsSettingsTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/ContactsAndGroups/ContactsAndGroupsSettingsTableViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,6 +22,8 @@ import UIKit import ObvTypes import ObvEngine import ObvUICoreData +import Combine +import ObvSettings final class ContactsAndGroupsSettingsTableViewController: UITableViewController { @@ -29,6 +31,9 @@ final class ContactsAndGroupsSettingsTableViewController: UITableViewController private let ownedCryptoId: ObvCryptoId private let obvEngine: ObvEngine + /// Allows to observe changes made to certain settings made from other owned devices + private var cancellables = Set() + init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine) { self.ownedCryptoId = ownedCryptoId self.obvEngine = obvEngine @@ -39,9 +44,15 @@ final class ContactsAndGroupsSettingsTableViewController: UITableViewController fatalError("init(coder:) has not been implemented") } + deinit { + cancellables.forEach { $0.cancel() } + cancellables.removeAll() + } + override func viewDidLoad() { super.viewDidLoad() title = CommonString.Title.contactsAndGroups + observeChangesMadeFromOtherOwnedDevices() } override func viewWillAppear(_ animated: Bool) { @@ -65,6 +76,23 @@ final class ContactsAndGroupsSettingsTableViewController: UITableViewController } private var shownGroupsRows = [GroupsRow.autoAcceptGroupInvitesFrom] + + private func observeChangesMadeFromOtherOwnedDevices() { + + ObvMessengerSettingsObservableObject.shared.$autoAcceptGroupInviteFrom + .compactMap { (autoAcceptGroupInviteFrom, changeMadeFromAnotherOwnedDevice, ownedCryptoId) in + // We only observe changes made from other owned devices + guard changeMadeFromAnotherOwnedDevice else { return nil } + return autoAcceptGroupInviteFrom + } + .receive(on: DispatchQueue.main) + .sink { [weak self] (autoAcceptGroupInviteFrom: ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom) in + self?.tableView.reloadData() + } + .store(in: &cancellables) + + } + } @@ -99,42 +127,26 @@ extension ContactsAndGroupsSettingsTableViewController { guard indexPath.row < shownContactsRows.count else { assertionFailure(); return UITableViewCell() } switch shownContactsRows[indexPath.row] { case .contactSortOrder: - if #available(iOS 14, *) { - let cell = UITableViewCell(style: .default, reuseIdentifier: nil) - var configuration = UIListContentConfiguration.valueCell() - configuration.text = CommonString.Title.contactsSortOrder - configuration.secondaryText = ObvMessengerSettings.Interface.contactsSortOrder.description - cell.contentConfiguration = configuration - cell.accessoryType = .disclosureIndicator - return cell - } else { - let cell = UITableViewCell(style: .value1, reuseIdentifier: nil) - cell.textLabel?.text = CommonString.Title.contactsSortOrder - cell.detailTextLabel?.text = ObvMessengerSettings.Interface.contactsSortOrder.description - cell.accessoryType = .disclosureIndicator - return cell - } + let cell = UITableViewCell(style: .default, reuseIdentifier: nil) + var configuration = UIListContentConfiguration.valueCell() + configuration.text = CommonString.Title.contactsSortOrder + configuration.secondaryText = ObvMessengerSettings.Interface.contactsSortOrder.description + cell.contentConfiguration = configuration + cell.accessoryType = .disclosureIndicator + return cell } case .groups: guard indexPath.row < shownGroupsRows.count else { assertionFailure(); return UITableViewCell() } switch shownGroupsRows[indexPath.row] { case .autoAcceptGroupInvitesFrom: - if #available(iOS 14, *) { - let cell = UITableViewCell(style: .default, reuseIdentifier: nil) - var configuration = UIListContentConfiguration.valueCell() - configuration.text = DetailedSettingForAutoAcceptGroupInvitesViewController.Strings.autoAcceptGroupInvitesFrom - configuration.secondaryText = ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom.localizedDescription - cell.contentConfiguration = configuration - cell.accessoryType = .disclosureIndicator - return cell - } else { - let cell = UITableViewCell(style: .value1, reuseIdentifier: nil) - cell.textLabel?.text = DetailedSettingForAutoAcceptGroupInvitesViewController.Strings.autoAcceptGroupInvitesFrom - cell.detailTextLabel?.text = ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom.localizedDescription - cell.accessoryType = .disclosureIndicator - return cell - } + let cell = UITableViewCell(style: .default, reuseIdentifier: nil) + var configuration = UIListContentConfiguration.valueCell() + configuration.text = DetailedSettingForAutoAcceptGroupInvitesViewController.Strings.autoAcceptGroupInvitesFrom + configuration.secondaryText = ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom.localizedDescription + cell.contentConfiguration = configuration + cell.accessoryType = .disclosureIndicator + return cell } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/ContactsAndGroups/DetailedSettingForAutoAcceptGroupInvitesViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/ContactsAndGroups/DetailedSettingForAutoAcceptGroupInvitesViewController.swift index 238a857c..564a004e 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/ContactsAndGroups/DetailedSettingForAutoAcceptGroupInvitesViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/ContactsAndGroups/DetailedSettingForAutoAcceptGroupInvitesViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,8 @@ import ObvTypes import ObvEngine import OlvidUtils import ObvUICoreData +import Combine +import ObvSettings final class DetailedSettingForAutoAcceptGroupInvitesViewController: UITableViewController, ObvErrorMaker { @@ -35,6 +37,11 @@ final class DetailedSettingForAutoAcceptGroupInvitesViewController: UITableViewC self.obvEngine = obvEngine super.init(style: Self.settingsTableStyle) } + + deinit { + cancellables.forEach { $0.cancel() } + cancellables.removeAll() + } static let errorDomain = "DetailedSettingForAutoAcceptGroupInvitesViewController" @@ -44,10 +51,31 @@ final class DetailedSettingForAutoAcceptGroupInvitesViewController: UITableViewC override func viewDidLoad() { super.viewDidLoad() + observeChangesMadeFromOtherOwnedDevices() } private var shownRows = ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom.allCases + /// Allows to observe changes made to certain settings made from other owned devices + private var cancellables = Set() + + + private func observeChangesMadeFromOtherOwnedDevices() { + + ObvMessengerSettingsObservableObject.shared.$autoAcceptGroupInviteFrom + .compactMap { (autoAcceptGroupInviteFrom, changeMadeFromAnotherOwnedDevice, ownedCryptoId) in + // We only observe changes made from other owned devices + guard changeMadeFromAnotherOwnedDevice else { return nil } + return autoAcceptGroupInviteFrom + } + .receive(on: DispatchQueue.main) + .sink { [weak self] (autoAcceptGroupInviteFrom: ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom) in + self?.tableView.reloadData() + } + .store(in: &cancellables) + + } + } @@ -95,7 +123,7 @@ extension DetailedSettingForAutoAcceptGroupInvitesViewController { let acceptableAutoAcceptType = try await suggestAutoAcceptingCurrentGroupInvitationsNowIfRequired( selectedAutoAcceptType: selectedAutoAcceptType, currentAutoAcceptType: ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom) - ObvMessengerSettings.ContactsAndGroups.autoAcceptGroupInviteFrom = acceptableAutoAcceptType + ObvMessengerSettings.ContactsAndGroups.setAutoAcceptGroupInviteFrom(to: acceptableAutoAcceptType, changeMadeFromAnotherOwnedDevice: false, ownedCryptoId: ownedCryptoId) tableView.reloadData() } catch { assertionFailure(error.localizedDescription) @@ -152,12 +180,13 @@ extension DetailedSettingForAutoAcceptGroupInvitesViewController { assert(Thread.isMainThread) guard !groupInvites.isEmpty else { return true } let traitCollection = self.traitCollection + let obvEngine = self.obvEngine return try await withCheckedThrowingContinuation { [weak self] (continuation: CheckedContinuation) in assert(Thread.isMainThread) let alert = UIAlertController(title: Strings.Alert.title, message: Strings.Alert.message(numberOfInvitations: groupInvites.count), preferredStyleForTraitCollection: traitCollection) - let okAction = UIAlertAction(title: Strings.Alert.AcceptAction.title(numberOfInvitations: groupInvites.count), style: .default) { [weak self] _ in + let okAction = UIAlertAction(title: Strings.Alert.AcceptAction.title(numberOfInvitations: groupInvites.count), style: .default) { _ in do { var dialogsForEngine = [ObvDialog]() for groupInvite in groupInvites { @@ -173,10 +202,9 @@ extension DetailedSettingForAutoAcceptGroupInvitesViewController { assertionFailure() } } - let queueForRespondingToDialog = DispatchQueue(label: "Queue for responding to dialog") for dialog in dialogsForEngine { - queueForRespondingToDialog.async { [weak self] in - self?.obvEngine.respondTo(dialog) + Task { + try? await obvEngine.respondTo(dialog) } } } catch { @@ -205,9 +233,9 @@ extension DetailedSettingForAutoAcceptGroupInvitesViewController { static let autoAcceptGroupInvitesFrom = NSLocalizedString("AUTO_ACCEPT_GROUP_INVITES_FROM", comment: "") struct Alert { static let title = NSLocalizedString("AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_TITLE", comment: "") - static func message(numberOfInvitations: Int) -> String { String.localizedStringWithFormat(NSLocalizedString("AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_MESSAGE", comment: ""), numberOfInvitations) } + static func message(numberOfInvitations: Int) -> String { String(format: NSLocalizedString("AUTO_ACCEPT_GROUP_%llu_INVITATIONS_ALERT_MESSAGE", comment: ""), numberOfInvitations) } struct AcceptAction { - static func title(numberOfInvitations: Int) -> String { String.localizedStringWithFormat(NSLocalizedString("AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_ACCEPT_ACTION_TITLE", comment: ""), numberOfInvitations) } + static func title(numberOfInvitations: Int) -> String { String(format: NSLocalizedString("AUTO_ACCEPT_GROUP_%llu_INVITATIONS_ALERT_ACCEPT_ACTION_TITLE", comment: ""), numberOfInvitations) } } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/AdvancedSettingsViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/AdvancedSettingsViewController.swift index 6be149e8..9d233680 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/AdvancedSettingsViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/AdvancedSettingsViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,17 +24,22 @@ import OlvidUtils import os.log import ObvUI import ObvUICoreData +import ObvEngine +import ObvSettings +import ObvDesignSystem @MainActor final class AdvancedSettingsViewController: UITableViewController { let ownedCryptoId: ObvCryptoId + let obvEngine: ObvEngine let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: AdvancedSettingsViewController.self)) - init(ownedCryptoId: ObvCryptoId) { + init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine) { self.ownedCryptoId = ownedCryptoId + self.obvEngine = obvEngine super.init(style: Self.settingsTableStyle) } @@ -65,6 +70,7 @@ final class AdvancedSettingsViewController: UITableViewController { private enum Section: CaseIterable { case clearCache + case downloadMissingProfilePictures case customKeyboards case websockedStatus case diskUsage @@ -72,7 +78,7 @@ final class AdvancedSettingsViewController: UITableViewController { case exportsDatabasesAndCopyURLs static var shown: [Section] { - var result = [Section.clearCache, .customKeyboards, .websockedStatus, .diskUsage] + var result = [Section.clearCache, .downloadMissingProfilePictures, .customKeyboards, .websockedStatus, .diskUsage] if ObvMessengerConstants.showExperimentalFeature { result += [Section.logs, .exportsDatabasesAndCopyURLs] } @@ -82,6 +88,7 @@ final class AdvancedSettingsViewController: UITableViewController { var numberOfItems: Int { switch self { case .clearCache: return ClearCacheItem.shown.count + case .downloadMissingProfilePictures: return DownloadMissingProfilePicturesItem.shown.count case .customKeyboards: return CustomKeyboardsItem.shown.count case .websockedStatus: return WebsockedStatusItem.shown.count case .diskUsage: return DiskUsageItem.shown.count @@ -113,7 +120,23 @@ final class AdvancedSettingsViewController: UITableViewController { } } } - + + private enum DownloadMissingProfilePicturesItem: CaseIterable { + case downloadMissingProfilePictures + static var shown: [Self] { + return self.allCases + } + static func shownItemAt(item: Int) -> Self? { + guard item < shown.count else { assertionFailure(); return nil } + return shown[item] + } + var cellIdentifier: String { + switch self { + case .downloadMissingProfilePictures: return "DownloadMissingProfilePicturesCell" + } + } + } + private enum CustomKeyboardsItem: CaseIterable { case customKeyboards static var shown: [CustomKeyboardsItem] { @@ -148,8 +171,9 @@ final class AdvancedSettingsViewController: UITableViewController { private enum DiskUsageItem: CaseIterable { case diskUsage + case internalStorageExplorer static var shown: [DiskUsageItem] { - return self.allCases + return ObvMessengerConstants.showExperimentalFeature ? self.allCases : [.diskUsage] } static func shownItemAt(item: Int) -> DiskUsageItem? { guard item < shown.count else { assertionFailure(); return nil } @@ -157,6 +181,7 @@ final class AdvancedSettingsViewController: UITableViewController { } var cellIdentifier: String { switch self { + case .internalStorageExplorer: return "InternalStorageExplorer" case .diskUsage: return "DiskUsage" } } @@ -246,6 +271,18 @@ extension AdvancedSettingsViewController { return cell } + case .downloadMissingProfilePictures: + guard let item = DownloadMissingProfilePicturesItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return cellInCaseOfError } + switch item { + case .downloadMissingProfilePictures: + let cell = tableView.dequeueReusableCell(withIdentifier: item.cellIdentifier) ?? UITableViewCell(style: .default, reuseIdentifier: item.cellIdentifier) + var content = cell.defaultContentConfiguration() + content.text = Strings.downloadMissingProfilePictures + content.textProperties.color = AppTheme.shared.colorScheme.link + cell.contentConfiguration = content + return cell + } + case .customKeyboards: guard let item = CustomKeyboardsItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return cellInCaseOfError } switch item { @@ -285,11 +322,7 @@ extension AdvancedSettingsViewController { DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(AdvancedSettingsViewController.websocketRefreshTimeInterval)) { guard let tableView = self?.tableView else { return } guard tableView.numberOfSections > indexPath.section && tableView.numberOfRows(inSection: indexPath.section) > indexPath.row else { return } - if #available(iOS 15, *) { - tableView.reconfigureRows(at: [indexPath]) - } else { - tableView.reloadRows(at: [indexPath], with: .none) - } + tableView.reconfigureRows(at: [indexPath]) } } let ownedCryptoId = self.ownedCryptoId @@ -300,11 +333,7 @@ extension AdvancedSettingsViewController { DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(AdvancedSettingsViewController.websocketRefreshTimeInterval)) { [weak self] in guard let tableView = self?.tableView else { return } guard tableView.numberOfSections > indexPath.section && tableView.numberOfRows(inSection: indexPath.section) > indexPath.row else { return } - if #available(iOS 15, *) { - tableView.reconfigureRows(at: [indexPath]) - } else { - tableView.reloadRows(at: [indexPath], with: .none) - } + tableView.reconfigureRows(at: [indexPath]) } } return cell @@ -318,6 +347,11 @@ extension AdvancedSettingsViewController { cell.textLabel?.text = Strings.diskUsageTitle cell.accessoryType = .disclosureIndicator return cell + case .internalStorageExplorer: + let cell = tableView.dequeueReusableCell(withIdentifier: item.cellIdentifier) ?? UITableViewCell(style: .default, reuseIdentifier: item.cellIdentifier) + cell.textLabel?.text = Strings.internalStorageExplorer + cell.accessoryType = .disclosureIndicator + return cell } case .logs: @@ -395,6 +429,7 @@ extension AdvancedSettingsViewController { override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { guard let section = Section.shownSectionAt(section: indexPath.section) else { assertionFailure(); return } switch section { + case .clearCache: guard let item = ClearCacheItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return } switch item { @@ -404,15 +439,45 @@ extension AdvancedSettingsViewController { tableView.deselectRow(at: indexPath, animated: true) } return + + case .downloadMissingProfilePictures: + guard let item = DownloadMissingProfilePicturesItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return } + switch item { + case .downloadMissingProfilePictures: + showHUD(type: .spinner) + Task { + var finalHUDTypeToShow = ObvHUDType.checkmark + do { try await obvEngine.downloadMissingProfilePicturesForContacts() } catch { finalHUDTypeToShow = .xmark } + do { try await obvEngine.downloadMissingProfilePicturesForGroupsV1() } catch { finalHUDTypeToShow = .xmark } + do { try await obvEngine.downloadMissingProfilePicturesForGroupsV2() } catch { finalHUDTypeToShow = .xmark } + do { try await obvEngine.downloadMissingProfilePicturesForOwnedIdentities() } catch { finalHUDTypeToShow = .xmark } + await showThenHideHUD(type: finalHUDTypeToShow, andDeselectRowAt: indexPath) + } + } + case .customKeyboards: return case .websockedStatus: return + case .diskUsage: - let vc = DiskUsageViewController() - present(vc, animated: true) { - tableView.deselectRow(at: indexPath, animated: true) + guard let item = DiskUsageItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return } + switch item { + case .diskUsage: + let vc = DiskUsageViewController() + present(vc, animated: true) { + tableView.deselectRow(at: indexPath, animated: true) + } + case .internalStorageExplorer: + let vc = InternalStorageExplorerViewController(root: ObvUICoreDataConstants.ContainerURL.securityApplicationGroupURL) + let nav = UINavigationController(rootViewController: vc) + present(nav, animated: true) { + tableView.deselectRow(at: indexPath, animated: true) + } + break } + + case .logs: guard let item = LogsItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return } switch (item) { @@ -471,10 +536,20 @@ extension AdvancedSettingsViewController { } + @MainActor + private func showThenHideHUD(type: ObvHUDType, andDeselectRowAt indexPath: IndexPath) async { + showHUD(type: type) + try? await Task.sleep(seconds: 2) + hideHUD() + tableView.deselectRow(at: indexPath, animated: true) + } + + override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { guard let section = Section.shownSectionAt(section: section) else { assertionFailure(); return nil } switch section { case .clearCache: return Strings.cacheManagement + case .downloadMissingProfilePictures: return nil case .customKeyboards: return Strings.customKeyboardsManagement case .websockedStatus: return Strings.webSocketStatus case .logs: return Strings.inAppLogs @@ -487,6 +562,7 @@ extension AdvancedSettingsViewController { guard let section = Section.shownSectionAt(section: section) else { assertionFailure(); return nil } switch section { case .clearCache: return nil + case .downloadMissingProfilePictures: return Strings.downloadMissingProfilePicturesExplanation case .customKeyboards: return Strings.customKeyboardsManagementExplanation case .websockedStatus: return nil case .diskUsage: return nil @@ -503,6 +579,8 @@ extension AdvancedSettingsViewController { struct Strings { static let clearCache = NSLocalizedString("Clear cache", comment: "") + static let downloadMissingProfilePictures = NSLocalizedString("DOWNLOAD_MISSING_PROFILE_PICTURES_BUTTON_TITLE", comment: "") + static let downloadMissingProfilePicturesExplanation = NSLocalizedString("DOWNLOAD_MISSING_PROFILE_PICTURES_EXPLANATION", comment: "") static let copyDocumentsURL = NSLocalizedString("Copy Documents URL", comment: "Button title, only in dev mode") static let copyAppDatabaseURL = NSLocalizedString("Copy App Database URL", comment: "Button title, only in dev mode") static let cacheManagement = NSLocalizedString("Cache management", comment: "") @@ -516,6 +594,7 @@ extension AdvancedSettingsViewController { static let allowAPIKeyActivationWithBadKeyStatusTitle = NSLocalizedString("Allow all api key activations", comment: "") static let webSocketStatus = NSLocalizedString("Websocket status", comment: "") static let diskUsageTitle = NSLocalizedString("DISK_USAGE", comment: "") + static let internalStorageExplorer = NSLocalizedString("INTERNAL_STORAGE_EXPLORER", comment: "") static let enableRunningLogs = NSLocalizedString("ENABLE_RUNNING_LOGS", comment: "") static let inAppLogs = NSLocalizedString("IN_APP_LOGS", comment: "") static let showCoordinatorsQueue = NSLocalizedString("SHOW_CURRENT_COORDINATORS_OPS", comment: "") diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DiskUsageViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DiskUsageViewController.swift index 3be18e08..40ba1673 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DiskUsageViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DiskUsageViewController.swift @@ -20,6 +20,8 @@ import ObvUI import ObvUICoreData import SwiftUI +import ObvSettings +import ObvDesignSystem final class DiskUsageViewController: UIHostingController { @@ -216,7 +218,7 @@ private struct DiskInfoView: View { private var valueView: some View { switch info.computationStatus { case .computing: - ObvActivityIndicator(isAnimating: .constant(true), style: .medium, color: nil) + ProgressView() case .failed: Image(systemIcon: .exclamationmarkCircle) case .computed(size: let size, count: let count): diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DisplayableLogs/DisplayableLogsHostingViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DisplayableLogs/DisplayableLogsHostingViewController.swift index 94f26c10..6f20a503 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DisplayableLogs/DisplayableLogsHostingViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DisplayableLogs/DisplayableLogsHostingViewController.swift @@ -141,22 +141,17 @@ struct DisplayableLogsListInnerView: View { } } } - if #available(iOS 15.0, *) { - navigationLink.swipeActions { - Button(role: .destructive) { - deleteLogAction(filename) - } label: { - Image(systemIcon: .trash) - } - Button { - shareAction(filename) - } label: { - Image(systemIcon: .squareAndArrowUp) - } + navigationLink.swipeActions { + Button(role: .destructive) { + deleteLogAction(filename) + } label: { + Image(systemIcon: .trash) + } + Button { + shareAction(filename) + } label: { + Image(systemIcon: .squareAndArrowUp) } - } else { - // Delete and share actions are in SingleDisplayableLogView - navigationLink } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DisplayableLogs/SingleDisplayableLogView.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DisplayableLogs/SingleDisplayableLogView.swift index 4fa938fd..4cbbbaf5 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DisplayableLogs/SingleDisplayableLogView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/DisplayableLogs/SingleDisplayableLogView.swift @@ -20,6 +20,8 @@ import SwiftUI import QuickLook import ObvUICoreData +import ObvSettings + struct SingleDisplayableLogView: UIViewControllerRepresentable { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/InternalStorageExplorerViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/InternalStorageExplorerViewController.swift new file mode 100644 index 00000000..5892ab61 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Debug/InternalStorageExplorerViewController.swift @@ -0,0 +1,300 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import ObvUICoreData + + +final class InternalStorageExplorerViewController: UIViewController, UICollectionViewDelegate { + + private enum Section: Int, CaseIterable { + case directories + case files + } + + private enum Item: Hashable { + case directory(name: String, creationDate: Date, url: URL) + case file(name: String, creationDate: Date, byteSize: Int, url: URL) + + var text: String { + switch self { + case .directory(name: let name, creationDate: _, url: _): + return name + case .file(name: let name, creationDate: _, byteSize: _, url: _): + return name + } + } + + func secondaryText(dateFormater df: DateFormatter, byteCountFormatter bf: ByteCountFormatter) -> String { + switch self { + case .directory(name: _, creationDate: let creationDate, url: _): + return df.string(from: creationDate) + case .file(name: _, creationDate: let creationDate, byteSize: let byteSize, url: _): + return [df.string(from: creationDate), bf.string(fromByteCount: Int64(byteSize))].joined(separator: " - ") + } + } + + var url: URL { + switch self { + case .directory(name: _, creationDate: _, url: let url): + return url + case .file(name: _, creationDate: _, byteSize: _, url: let url): + return url + } + } + + } + + private typealias DataSource = UICollectionViewDiffableDataSource + private typealias Snapshot = NSDiffableDataSourceSnapshot + + private let root: URL + private weak var collectionView: UICollectionView! + private var dataSource: DataSource! + + private static let dateFormater: DateFormatter = { + let df = DateFormatter() + df.dateStyle = .short + df.timeStyle = .short + return df + }() + + private static let byteCountFormatter: ByteCountFormatter = { + let bf = ByteCountFormatter() + bf.countStyle = .file + return bf + }() + + init(root: URL) { + self.root = root + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .systemBackground + title = root.lastPathComponent + configureHierarchy() + configureDataSource() + setInitialData() + + let action = UIAction(handler: { [weak self] _ in self?.dismiss(animated: true) }) + let doneBarButtomItem = UIBarButtonItem(systemItem: .done, primaryAction: action, menu: nil) + navigationItem.rightBarButtonItem = doneBarButtomItem + + } + + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + guard let indexPathsForSelectedItems = collectionView?.indexPathsForSelectedItems else { return } + for indexPath in indexPathsForSelectedItems { + collectionView.deselectItem(at: indexPath, animated: true) + } + } + + // MARK: - Configuring the collection view + + private func configureHierarchy() { + let collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: createLayout()) + collectionView.translatesAutoresizingMaskIntoConstraints = false + collectionView.backgroundColor = .systemBackground + collectionView.delegate = self + + view.addSubview(collectionView) + + self.collectionView = collectionView + + NSLayoutConstraint.activate([ + collectionView.topAnchor.constraint(equalTo: view.topAnchor), + collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + } + + + private func createLayout() -> UICollectionViewLayout { + let sectionProvider = { (sectionIndex: Int, layoutEnvironment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection? in + let configuration = UICollectionLayoutListConfiguration(appearance: .plain) + let section = NSCollectionLayoutSection.list(using: configuration, layoutEnvironment: layoutEnvironment) + return section + } + return UICollectionViewCompositionalLayout(sectionProvider: sectionProvider) + } + + + private func configureDataSource() { + + let cellRegistrationForDirectories = UICollectionView.CellRegistration { cell, _, item in + var content = cell.defaultContentConfiguration() + content.text = item.text + content.secondaryText = item.secondaryText(dateFormater: Self.dateFormater, byteCountFormatter: Self.byteCountFormatter) + content.image = UIImage(systemIcon: .folder) + content.textProperties.font = UIFont.preferredFont(forTextStyle: .footnote) + content.secondaryTextProperties.color = .secondaryLabel + cell.contentConfiguration = content + cell.accessories = [.disclosureIndicator()] + } + + let cellRegistrationForFiles = UICollectionView.CellRegistration { cell, _, item in + var content = cell.defaultContentConfiguration() + content.text = item.text + content.secondaryText = item.secondaryText(dateFormater: Self.dateFormater, byteCountFormatter: Self.byteCountFormatter) + content.image = UIImage(systemIcon: .doc) + content.textProperties.font = UIFont.preferredFont(forTextStyle: .footnote) + content.secondaryTextProperties.color = .secondaryLabel + cell.contentConfiguration = content + } + + dataSource = DataSource(collectionView: collectionView) { (collectionView: UICollectionView, indexPath: IndexPath, item: Item) -> UICollectionViewCell? in + switch item { + case .directory: + return collectionView.dequeueConfiguredReusableCell(using: cellRegistrationForDirectories, for: indexPath, item: item) + case .file: + return collectionView.dequeueConfiguredReusableCell(using: cellRegistrationForFiles, for: indexPath, item: item) + } + } + + } + + + private func setInitialData() { + do { + let keys: [URLResourceKey] = [ + .isDirectoryKey, + .nameKey, + .creationDateKey, + .fileSizeKey, + ] + let urls = try FileManager.default.contentsOfDirectory(at: root, includingPropertiesForKeys: keys) + + var snapshot = NSDiffableDataSourceSnapshot() + + // Populate the directories section + + do { + snapshot.appendSections([.directories]) + let items: [Item] = urls + .compactMap { url in + guard let values = try? url.resourceValues(forKeys: Set(keys)) else { assertionFailure(); return nil } + guard let isDirectory = values.isDirectory else { assertionFailure(); return nil } + guard isDirectory else { return nil } + guard let name = values.name, let creationDate = values.creationDate else { assertionFailure(); return nil } + return Item.directory(name: name, creationDate: creationDate, url: url) + } + snapshot.appendItems(items) + } + + // Populate the files section + + do { + snapshot.appendSections([.files]) + let items: [Item] = urls + .compactMap { url in + guard let values = try? url.resourceValues(forKeys: Set(keys)) else { assertionFailure(); return nil } + guard let isDirectory = values.isDirectory else { assertionFailure(); return nil } + guard !isDirectory else { return nil } + guard let name = values.name, let creationDate = values.creationDate, let fileSize = values.fileSize else { assertionFailure(); return nil } + return Item.file(name: name, creationDate: creationDate, byteSize: fileSize, url: url) + } + snapshot.appendItems(items) + } + + // Apply the snapshot + + dataSource.apply(snapshot) + + } catch { + assertionFailure(error.localizedDescription) + } + } + + + // MARK: - UICollectionViewDelegate + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + + guard let item = self.dataSource.itemIdentifier(for: indexPath) else { return } + + switch item { + + case .directory(name: _, creationDate: _, url: let url): + let vc = InternalStorageExplorerViewController(root: url) + navigationController?.pushViewController(vc, animated: true) + + case .file(name: _, creationDate: _, byteSize: _, url: _): + collectionView.deselectItem(at: indexPath, animated: true) + + } + + + } + + + func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemsAt indexPaths: [IndexPath], point: CGPoint) -> UIContextMenuConfiguration? { + guard indexPaths.count == 1, let indexPath = indexPaths.first else { return nil } + guard let cell = collectionView.cellForItem(at: indexPath) else { return nil } + + guard let item = self.dataSource.itemIdentifier(for: indexPath) else { return nil } + let url = item.url + guard FileManager.default.fileExists(atPath: url.path) else { return nil } + + + let actionProvider = makeActionProvider(collectionView, cell: cell, url: url) + + let menuConfiguration = UIContextMenuConfiguration(indexPath: indexPath, + previewProvider: nil, + actionProvider: actionProvider) + + return menuConfiguration + + } + + + private func makeActionProvider(_ collectionView: UICollectionView, cell: UICollectionViewCell, url: URL) -> (([UIMenuElement]) -> UIMenu?) { + return { (suggestedActions) in + + var children = [UIMenuElement]() + + // Share action + + do { + + let action = UIAction(title: CommonString.Word.Share) { [weak self] (_) in + let ativityController = UIActivityViewController(activityItems: [url], applicationActivities: nil) + ativityController.popoverPresentationController?.sourceView = cell + self?.present(ativityController, animated: true) + } + action.image = UIImage(systemIcon: .squareAndArrowUp) + children.append(action) + + } + + return UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: children) + + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/SwiftUI/DiscussionsDefaultSettingsHostingViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/SwiftUI/DiscussionsDefaultSettingsHostingViewController.swift index c44942da..04e221bc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/SwiftUI/DiscussionsDefaultSettingsHostingViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/SwiftUI/DiscussionsDefaultSettingsHostingViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,15 +23,18 @@ import Combine import ObvUI import ObvUICoreData import UI_SystemIcon +import ObvTypes +import ObvSettings +import ObvDesignSystem final class DiscussionsDefaultSettingsHostingViewController: UIHostingController { fileprivate let model: DiscussionsDefaultSettingsViewModel - init() { + init(ownedCryptoId: ObvCryptoId) { assert(Thread.isMainThread) - let model = DiscussionsDefaultSettingsViewModel() + let model = DiscussionsDefaultSettingsViewModel(ownedCryptoId: ownedCryptoId) let view = DiscussionsDefaultSettingsWrapperView(model: model) self.model = model super.init(rootView: view) @@ -52,6 +55,7 @@ final class DiscussionsDefaultSettingsHostingViewController: UIHostingController final fileprivate class DiscussionsDefaultSettingsViewModel: ObservableObject { + let ownedCryptoId: ObvCryptoId var doSendReadReceipt: Binding! var alwaysShowNotificationsWhenMentioned: Binding! var doFetchContentRichURLsMetadata: Binding! @@ -68,7 +72,11 @@ final fileprivate class DiscussionsDefaultSettingsViewModel: ObservableObject { @Published var changed: Bool // This allows to "force" the refresh of the view - init() { + /// Allows to observe changes made to certain settings made from other owned devices + private var cancellables = Set() + + init(ownedCryptoId: ObvCryptoId) { + self.ownedCryptoId = ownedCryptoId self.changed = false self.doSendReadReceipt = Binding(get: getDoSendReadReceipt, set: setDoSendReadReceipt) alwaysShowNotificationsWhenMentioned = Binding { @@ -95,8 +103,32 @@ final fileprivate class DiscussionsDefaultSettingsViewModel: ObservableObject { self.retainWipedOutboundMessages = Binding(get: getRetainWipedOutboundMessages, set: setRetainWipedOutboundMessages) self.notificationSound = Binding(get: getNotificationSound, set: setNotificationSound) self.performInteractionDonation = Binding(get: getPerformInteractionDonation, set: setPerformInteractionDonation) + observeChangesMadeFromOtherOwnedDevices() } + deinit { + cancellables.forEach { $0.cancel() } + cancellables.removeAll() + } + + private func observeChangesMadeFromOtherOwnedDevices() { + + ObvMessengerSettingsObservableObject.shared.$doSendReadReceipt + .compactMap { (doSendReadReceipt, changeMadeFromAnotherOwnedDevice, ownedCryptoId) in + // We only observe changes made from other owned devices + guard changeMadeFromAnotherOwnedDevice else { return nil } + return doSendReadReceipt + } + .receive(on: DispatchQueue.main) + .sink { [weak self] (doSendReadReceipt: Bool) in + withAnimation { + self?.changed.toggle() + } + } + .store(in: &cancellables) + + } + private func getTimeBasedRetention() -> DurationOptionAlt { ObvMessengerSettings.Discussions.timeBasedRetentionPolicy } @@ -135,7 +167,7 @@ final fileprivate class DiscussionsDefaultSettingsViewModel: ObservableObject { } private func setDoSendReadReceipt(_ newValue: Bool) { - ObvMessengerSettings.Discussions.doSendReadReceipt = newValue + ObvMessengerSettings.Discussions.setDoSendReadReceipt(to: newValue, changeMadeFromAnotherOwnedDevice: false, ownedCryptoId: ownedCryptoId) withAnimation { self.changed.toggle() } @@ -278,7 +310,14 @@ fileprivate struct DiscussionsDefaultSettingsView: View { @State private var presentChooseNotificationSoundSheet: Bool = false private var sendReadReceiptSectionFooter: Text { - Text(doSendReadReceipt ? DiscussionsSettingsTableViewController.Strings.SendReadRecceipts.explanationWhenYes : DiscussionsSettingsTableViewController.Strings.SendReadRecceipts.explanationWhenNo) + Text(doSendReadReceipt ? Strings.SendReadRecceipts.explanationWhenYes : Strings.SendReadRecceipts.explanationWhenNo) + } + + private struct Strings { + struct SendReadRecceipts { + static let explanationWhenYes = NSLocalizedString("Your contacts will be notified when you have read their messages. This settting can be overriden on a per discussion basis.", comment: "Explantation") + static let explanationWhenNo = NSLocalizedString("Your contacts won't be notified when you read their messages. This settting can be overriden on a per discussion basis.", comment: "Explantation") + } } private func countBasedRetentionIncrement() { @@ -293,12 +332,12 @@ fileprivate struct DiscussionsDefaultSettingsView: View { Form { Section(footer: sendReadReceiptSectionFooter) { Toggle(isOn: $doSendReadReceipt) { - ObvLabel("SEND_READ_RECEIPTS_LABEL", systemImage: "eye.fill") + Label("SEND_READ_RECEIPTS_LABEL", systemImage: "eye.fill") } } Section(footer: Text("discussion-default-settings-view.mention-notification-mode.picker.footer.title")) { Picker(selection: $alwaysShowNotificationsWhenMentioned, - label: ObvLabel("discussion-default-settings-view.mention-notification-mode.picker.title", systemIcon: .bell(.fill))) { + label: Label("discussion-default-settings-view.mention-notification-mode.picker.title", systemIcon: .bell(.fill))) { Text(NSLocalizedString("discussion-default-settings-view.mention-notification-mode.picker.mode.always", comment: "Display title for the `always` value for mention notification mode")) .tag(true) @@ -310,7 +349,7 @@ fileprivate struct DiscussionsDefaultSettingsView: View { } Section { Picker(selection: $doFetchContentRichURLsMetadata, label: - ObvLabel("SHOW_RICH_LINK_PREVIEW_LABEL", systemImage: "text.below.photo.fill")) { + Label("SHOW_RICH_LINK_PREVIEW_LABEL", systemImage: "text.below.photo.fill")) { ForEach(ObvMessengerSettings.Discussions.FetchContentRichURLsMetadataChoice.allCases) { value in switch value { case .never: @@ -341,7 +380,7 @@ fileprivate struct DiscussionsDefaultSettingsView: View { } Section(footer: Text("PERFORM_INTERACTION_DONATION_FOOTER")) { Toggle(isOn: $performInteractionDonation) { - ObvLabel("PERFORM_INTERACTION_DONATION_LABEL", systemIcon: .squareAndArrowUp) + Label("PERFORM_INTERACTION_DONATION_LABEL", systemIcon: .squareAndArrowUp) } } Group { @@ -353,7 +392,7 @@ fileprivate struct DiscussionsDefaultSettingsView: View { } Section(footer: Text("COUNT_BASED_SECTION_FOOTER")) { Toggle(isOn: $countBasedRetentionIsActive) { - ObvLabel("COUNT_BASED_LABEL", systemImage: "number") + Label("COUNT_BASED_LABEL", systemImage: "number") } if countBasedRetentionIsActive { Stepper(onIncrement: countBasedRetentionIncrement, @@ -363,7 +402,7 @@ fileprivate struct DiscussionsDefaultSettingsView: View { } } Section(footer: Text("TIME_BASED_SECTION_FOOTER")) { - Picker(selection: $timeBasedRetention, label: ObvLabel("TIME_BASED_LABEL", systemIcon: .calendarBadgeClock)) { + Picker(selection: $timeBasedRetention, label: Label("TIME_BASED_LABEL", systemIcon: .calendarBadgeClock)) { ForEach(DurationOptionAlt.allCases) { duration in Text(duration.description).tag(duration) } @@ -384,12 +423,12 @@ fileprivate struct DiscussionsDefaultSettingsView: View { } Section(footer: Text("AUTO_READ_SECTION_FOOTER")) { Toggle(isOn: $autoRead) { - ObvLabel("AUTO_READ_LABEL", systemImage: "hand.tap.fill") + Label("AUTO_READ_LABEL", systemImage: "hand.tap.fill") } } Section(footer: Text("RETAIN_WIPED_OUTBOUND_MESSAGES_SECTION_FOOTER")) { Toggle(isOn: $retainWipedOutboundMessages) { - ObvLabel("RETAIN_WIPED_OUTBOUND_MESSAGES_LABEL", systemImage: "trash.slash") + Label("RETAIN_WIPED_OUTBOUND_MESSAGES_LABEL", systemImage: "trash.slash") } } } @@ -407,18 +446,18 @@ fileprivate struct DiscussionsDefaultSettingsView: View { } Section(footer: Text("READ_ONCE_SECTION_FOOTER")) { Toggle(isOn: $readOnce) { - ObvLabel("READ_ONCE_LABEL", systemImage: "flame.fill") + Label("READ_ONCE_LABEL", systemImage: "flame.fill") } } Section(footer: Text("LIMITED_VISIBILITY_SECTION_FOOTER")) { - Picker(selection: $visibilityDuration, label: ObvLabel("LIMITED_VISIBILITY_LABEL", systemIcon: .eyes)) { + Picker(selection: $visibilityDuration, label: Label("LIMITED_VISIBILITY_LABEL", systemIcon: .eyes)) { ForEach(DurationOption.allCases) { duration in Text(duration.description).tag(duration) } } } Section(footer: Text("LIMITED_EXISTENCE_SECTION_FOOTER")) { - Picker(selection: $existenceDuration, label: ObvLabel("LIMITED_EXISTENCE_SECTION_LABEL", systemImage: "timer")) { + Picker(selection: $existenceDuration, label: Label("LIMITED_EXISTENCE_SECTION_LABEL", systemImage: "timer")) { ForEach(DurationOption.allCases) { duration in Text(duration.description).tag(duration) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/SwiftUI/NotificationSoundPicker.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/SwiftUI/NotificationSoundPicker.swift index 3172118e..1883ce36 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/SwiftUI/NotificationSoundPicker.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/SwiftUI/NotificationSoundPicker.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -16,7 +16,6 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import AudioToolbox import ObvUI @@ -24,6 +23,8 @@ import ObvUICoreData import SwiftUI import UI_SystemIcon import UI_SystemIcon_SwiftUI +import ObvSettings +import ObvDesignSystem struct NotificationSoundPicker: View { @@ -37,7 +38,7 @@ struct NotificationSoundPicker: View { content: content, showDefault: showDefault)) { HStack { - ObvLabel("NOTIFICATION_SOUNDS_LABEL", systemIcon: .musicNoteList) + Label("NOTIFICATION_SOUNDS_LABEL", systemIcon: .musicNoteList) Spacer() content(selection) .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) @@ -114,7 +115,7 @@ struct NotificationSoundList: View { selection: $selection, content: content) } - .obvNavigationTitle(Text("NOTIFICATION_SOUNDS_LABEL")) + .navigationTitle(Text("NOTIFICATION_SOUNDS_LABEL")) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/DiscussionsSettingsTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/DiscussionsSettingsTableViewController.swift deleted file mode 100644 index 167223af..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/DiscussionsSettingsTableViewController.swift +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import ObvUICoreData - -final class DiscussionsSettingsTableViewController: UITableViewController { - - init() { - super.init(style: Self.settingsTableStyle) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - - override func viewDidLoad() { - super.viewDidLoad() - title = CommonString.Word.Discussions - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - tableView.reloadData() - } - -} - -// MARK: - UITableViewDataSource - -extension DiscussionsSettingsTableViewController { - - override func numberOfSections(in tableView: UITableView) -> Int { - return 2 - } - - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - switch section { - case 0: return 1 - case 1: return 1 - default: return 0 - } - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - - let cell: UITableViewCell - - switch indexPath { - case IndexPath(row: 0, section: 0): - let _cell = ObvTitleAndSwitchTableViewCell(reuseIdentifier: "SendReadReceiptCell") - _cell.selectionStyle = .none - _cell.title = CommonString.Title.sendReadRecceipts - _cell.switchIsOn = ObvMessengerSettings.Discussions.doSendReadReceipt - _cell.blockOnSwitchValueChanged = { (value) in - ObvMessengerSettings.Discussions.doSendReadReceipt = value - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(400)) { - tableView.reloadData() - } - } - cell = _cell - case IndexPath(row: 0, section: 1): - cell = UITableViewCell(style: .value1, reuseIdentifier: nil) - cell.textLabel?.text = Strings.RichLinks.title - switch ObvMessengerSettings.Discussions.doFetchContentRichURLsMetadata { - case .never: - cell.detailTextLabel?.text = CommonString.Word.Never - case .withinSentMessagesOnly: - cell.detailTextLabel?.text = Strings.RichLinks.sentMessagesOnly - case .always: - cell.detailTextLabel?.text = CommonString.Word.Always - } - cell.accessoryType = .disclosureIndicator - - default: - cell = UITableViewCell(style: .value1, reuseIdentifier: nil) - assert(false) - } - - return cell - } - - - override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? { - guard section == 0 else { return nil } - return ObvMessengerSettings.Discussions.doSendReadReceipt ? Strings.SendReadRecceipts.explanationWhenYes : Strings.SendReadRecceipts.explanationWhenNo - } - - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - switch indexPath { - case IndexPath(row: 0, section: 1): - let vc = FetchContentRichURLsMetadataChooserTableViewController() - self.navigationController?.pushViewController(vc, animated: true) - default: - break - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/FetchContentRichURLsMetadataChooserTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/FetchContentRichURLsMetadataChooserTableViewController.swift index f3a16f95..74e34025 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/FetchContentRichURLsMetadataChooserTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/FetchContentRichURLsMetadataChooserTableViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,8 +19,11 @@ import UIKit import ObvUICoreData +import ObvSettings -class FetchContentRichURLsMetadataChooserTableViewController: UITableViewController { + + +final class FetchContentRichURLsMetadataChooserTableViewController: UITableViewController { init() { super.init(style: Self.settingsTableStyle) @@ -32,7 +35,7 @@ class FetchContentRichURLsMetadataChooserTableViewController: UITableViewControl override func viewDidLoad() { super.viewDidLoad() - title = DiscussionsSettingsTableViewController.Strings.RichLinks.title + title = Strings.RichLinks.title } // MARK: - Table view data source @@ -54,7 +57,7 @@ class FetchContentRichURLsMetadataChooserTableViewController: UITableViewControl case .never: cell.textLabel?.text = CommonString.Word.Never case .withinSentMessagesOnly: - cell.textLabel?.text = DiscussionsSettingsTableViewController.Strings.RichLinks.sentMessagesOnly + cell.textLabel?.text = Strings.RichLinks.sentMessagesOnly case .always: cell.textLabel?.text = CommonString.Word.Always } @@ -79,3 +82,15 @@ class FetchContentRichURLsMetadataChooserTableViewController: UITableViewControl } + + +extension FetchContentRichURLsMetadataChooserTableViewController { + + struct Strings { + struct RichLinks { + static let title = NSLocalizedString("Rich link preview", comment: "Cell title") + static let sentMessagesOnly = NSLocalizedString("Sent messages only", comment: "") + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/SizeChooserForAutomaticDownloadsTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/SizeChooserForAutomaticDownloadsTableViewController.swift index 8bb24e01..aba7660f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/SizeChooserForAutomaticDownloadsTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Discussions/UIKit/SizeChooserForAutomaticDownloadsTableViewController.swift @@ -19,6 +19,8 @@ import UIKit import ObvUICoreData +import ObvSettings + class SizeChooserForAutomaticDownloadsTableViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Downloads/DownloadsSettingsTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Downloads/DownloadsSettingsTableViewController.swift index 7f12947a..748dab79 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Downloads/DownloadsSettingsTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Downloads/DownloadsSettingsTableViewController.swift @@ -19,6 +19,8 @@ import UIKit import ObvUICoreData +import ObvSettings + final class DownloadsSettingsTableViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/ChangeNewComposeMessageViewActionOrderViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/ChangeNewComposeMessageViewActionOrderViewController.swift index badeb7c2..3d1a06a8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/ChangeNewComposeMessageViewActionOrderViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/ChangeNewComposeMessageViewActionOrderViewController.swift @@ -20,6 +20,8 @@ import ObvUI import ObvUICoreData import UIKit +import ObvSettings +import ObvDesignSystem enum ComposeMessageViewSettingsViewControllerInput { @@ -27,7 +29,6 @@ enum ComposeMessageViewSettingsViewControllerInput { case global } -@available(iOS 15, *) final class ComposeMessageViewSettingsViewController: UITableViewController { var notificationTokens = [NSObjectProtocol]() diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/ContactsSortOrderChooserTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/ContactsSortOrderChooserTableViewController.swift index 8ee790e7..4a1b8334 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/ContactsSortOrderChooserTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/ContactsSortOrderChooserTableViewController.swift @@ -20,6 +20,8 @@ import UIKit import ObvTypes import ObvUICoreData +import ObvSettings + class ContactsSortOrderChooserTableViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/IdentityColorStyleChooserTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/IdentityColorStyleChooserTableViewController.swift index e50582bf..e16a8d0c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/IdentityColorStyleChooserTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/IdentityColorStyleChooserTableViewController.swift @@ -20,6 +20,9 @@ import ObvUI import UIKit import ObvUICoreData +import ObvSettings +import ObvDesignSystem + class IdentityColorStyleChooserTableViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/InterfaceSettingsTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/InterfaceSettingsTableViewController.swift index d31b4236..96237e59 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/InterfaceSettingsTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Interface/InterfaceSettingsTableViewController.swift @@ -20,6 +20,7 @@ import UIKit import ObvTypes import ObvUICoreData +import ObvSettings class InterfaceSettingsTableViewController: UITableViewController { @@ -49,21 +50,13 @@ class InterfaceSettingsTableViewController: UITableViewController { private enum Section: CaseIterable { case customizeMessageComposeArea - case interfaceOptions case identityColorStyle static var shown: [Section] { - var result = [Section]() - if #available(iOS 15, *) { - result += [customizeMessageComposeArea] - result += [interfaceOptions] - } - result += [identityColorStyle] - return result + Section.allCases } var numberOfItems: Int { switch self { case .customizeMessageComposeArea: return CustomizeMessageComposeAreaItem.shown.count - case .interfaceOptions: return InterfaceOptionsItem.shown.count case .identityColorStyle: return IdentityColorStyleItem.shown.count } } @@ -77,9 +70,7 @@ class InterfaceSettingsTableViewController: UITableViewController { case customizeMessageComposeArea static var shown: [CustomizeMessageComposeAreaItem] { var result = [CustomizeMessageComposeAreaItem]() - if #available(iOS 15, *) { - result += [customizeMessageComposeArea] - } + result += [customizeMessageComposeArea] return result } static func shownItemAt(item: Int) -> CustomizeMessageComposeAreaItem? { @@ -93,26 +84,6 @@ class InterfaceSettingsTableViewController: UITableViewController { } - private enum InterfaceOptionsItem: CaseIterable { - case useOldDiscussionInterface - static var shown: [InterfaceOptionsItem] { - var result = [InterfaceOptionsItem]() - if #available(iOS 15, *) { - result += [useOldDiscussionInterface] - } - return result - } - static func shownItemAt(item: Int) -> InterfaceOptionsItem? { - return shown[safe: item] - } - var cellIdentifier: String { - switch self { - case .useOldDiscussionInterface: return "useOldDiscussionInterface" - } - } - } - - private enum IdentityColorStyleItem: CaseIterable { case identityColorStyle static var shown: [IdentityColorStyleItem] { @@ -160,46 +131,21 @@ extension InterfaceSettingsTableViewController { switch item { case .customizeMessageComposeArea: let cell = UITableViewCell(style: .default, reuseIdentifier: item.cellIdentifier) - if #available(iOS 14, *) { - var configuration = cell.defaultContentConfiguration() - configuration.text = Strings.newComposeMessageViewActionOrder - cell.contentConfiguration = configuration - } else { - cell.textLabel?.text = Strings.newComposeMessageViewActionOrder - } + var configuration = cell.defaultContentConfiguration() + configuration.text = Strings.newComposeMessageViewActionOrder + cell.contentConfiguration = configuration cell.accessoryType = .disclosureIndicator return cell } - case .interfaceOptions: - guard let item = InterfaceOptionsItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return cellInCaseOfError } - switch item { - case .useOldDiscussionInterface: - let cell = ObvTitleAndSwitchTableViewCell(reuseIdentifier: item.cellIdentifier) - cell.selectionStyle = .none - cell.title = Strings.useOldDiscussionInterface - cell.switchIsOn = ObvMessengerSettings.Interface.useOldDiscussionInterface - cell.blockOnSwitchValueChanged = { (value) in - ObvMessengerSettings.Interface.useOldDiscussionInterface = value - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(400)) { - tableView.reloadData() - } - } - return cell - } case .identityColorStyle: guard let item = IdentityColorStyleItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return cellInCaseOfError } switch item { case .identityColorStyle: let cell = UITableViewCell(style: .value1, reuseIdentifier: nil) - if #available(iOS 14, *) { - var configuration = cell.defaultContentConfiguration() - configuration.text = Strings.identityColorStyle - configuration.secondaryText = ObvMessengerSettings.Interface.identityColorStyle.description - cell.contentConfiguration = configuration - } else { - cell.textLabel?.text = Strings.identityColorStyle - cell.detailTextLabel?.text = ObvMessengerSettings.Interface.identityColorStyle.description - } + var configuration = cell.defaultContentConfiguration() + configuration.text = Strings.identityColorStyle + configuration.secondaryText = ObvMessengerSettings.Interface.identityColorStyle.description + cell.contentConfiguration = configuration cell.accessoryType = .disclosureIndicator return cell } @@ -214,13 +160,9 @@ extension InterfaceSettingsTableViewController { guard let item = CustomizeMessageComposeAreaItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return } switch item { case .customizeMessageComposeArea: - if #available(iOS 15, *) { - let vc = ComposeMessageViewSettingsViewController(input: .global) - navigationController?.pushViewController(vc, animated: true) - } + let vc = ComposeMessageViewSettingsViewController(input: .global) + navigationController?.pushViewController(vc, animated: true) } - case .interfaceOptions: - return case .identityColorStyle: guard let item = IdentityColorStyleItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return } switch item { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/CreatePasscodeViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/CreatePasscodeViewController.swift index 455fbea5..0ff428a5 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/CreatePasscodeViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/CreatePasscodeViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -17,11 +17,12 @@ * along with Olvid. If not, see . */ - import Foundation import SwiftUI import Combine import ObvUI +import ObvDesignSystem + enum CreatePasscodeViewResult { case passcode(passcode: String, passcodeIsPassword: Bool) @@ -171,23 +172,21 @@ fileprivate struct InnerCreatePasscodeView: View { secureFocus: $model.secureFocus, textFocus: $model.textFocus, remainingLockoutTime: .constant(nil)) - if #available(iOS 15.0, *) { - Picker("Passcode", selection: $model.passcodeKind.animation()) { - ForEach(PasscodeKind.allCases) { kind in - Text(kind.localizedDescription) - } - } - .pickerStyle(.segmented) - .onChange(of: model.passcodeKind) { _ in - let secureFocus = model.secureFocus - let textFocus = model.textFocus - model.secureFocus = false - model.textFocus = false - model.passcode = "" - model.secureFocus = secureFocus - model.textFocus = textFocus + Picker("Passcode", selection: $model.passcodeKind.animation()) { + ForEach(PasscodeKind.allCases) { kind in + Text(kind.localizedDescription) } } + .pickerStyle(.segmented) + .onChange(of: model.passcodeKind) { _ in + let secureFocus = model.secureFocus + let textFocus = model.textFocus + model.secureFocus = false + model.textFocus = false + model.passcode = "" + model.secureFocus = secureFocus + model.textFocus = textFocus + } NavigationLink(destination: VerifyCreatedPasscodeView(model: model), isActive: $showVerificationView) { OlvidButton(style: .blue, title: Text("CREATE_MY_PASSCODE")) { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/GracePeriodsChooserTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/GracePeriodsChooserTableViewController.swift index 5a603a71..1647eb6c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/GracePeriodsChooserTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/GracePeriodsChooserTableViewController.swift @@ -21,6 +21,8 @@ import Foundation import UIKit import ObvUICoreData +import ObvSettings + class GracePeriodsChooserTableViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/HiddenProfileClosePolicyChooserViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/HiddenProfileClosePolicyChooserViewController.swift index 59cec9c1..a6d29d64 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/HiddenProfileClosePolicyChooserViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/HiddenProfileClosePolicyChooserViewController.swift @@ -20,6 +20,8 @@ import UIKit import ObvUICoreData +import ObvSettings + class HiddenProfileClosePolicyChooserViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/NotificationContentPrivacyStyleChooserTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/NotificationContentPrivacyStyleChooserTableViewController.swift index 92d6a1a5..e163bcd7 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/NotificationContentPrivacyStyleChooserTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/NotificationContentPrivacyStyleChooserTableViewController.swift @@ -19,6 +19,8 @@ import UIKit import ObvUICoreData +import ObvSettings + class NotificationContentPrivacyStyleChooserTableViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/PrivacyTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/PrivacyTableViewController.swift index cb0c55e2..e7efc52e 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/PrivacyTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/PrivacyTableViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,8 +23,11 @@ import OlvidUtils import ObvTypes import ObvUI import ObvUICoreData +import ObvSettings +import ObvDesignSystem +@MainActor final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { static let errorDomain = "PrivacyTableViewController" @@ -35,6 +38,7 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { private var observationTokens = [NSObjectProtocol]() private(set) weak var createPasscodeDelegate: CreatePasscodeDelegate? + private(set) weak var localAuthenticationDelegate: LocalAuthenticationDelegate? let dateComponentsFormatter: DateComponentsFormatter = { let df = DateComponentsFormatter() @@ -43,9 +47,10 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { return df }() - init(ownedCryptoId: ObvCryptoId, createPasscodeDelegate: CreatePasscodeDelegate) { + init(ownedCryptoId: ObvCryptoId, createPasscodeDelegate: CreatePasscodeDelegate, localAuthenticationDelegate: LocalAuthenticationDelegate) { self.ownedCryptoId = ownedCryptoId self.createPasscodeDelegate = createPasscodeDelegate + self.localAuthenticationDelegate = localAuthenticationDelegate self.authenticationMethod = AuthenticationMethod.bestAvailableAuthenticationMethod() super.init(style: Self.settingsTableStyle) @@ -57,8 +62,10 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { } private func observeNotifications() { - let token = NotificationCenter.default.addObserver(forName: UIApplication.didBecomeActiveNotification, object: nil, queue: .main) { [weak self] _ in - self?.reload() + let token = NotificationCenter.default.addObserver(forName: UIApplication.didBecomeActiveNotification, object: nil, queue: nil) { _ in + Task { [weak self] in + await self?.reload() + } } observationTokens += [token] } @@ -138,7 +145,7 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { case biometricsWithCustomPasscodeFallback case customPasscode static var shown: [LocalAuthenticationPolicyItem] { - assert(LocalAuthenticationPolicy.allCases.count == LocalAuthenticationPolicyItem.allCases.count) + assert(ObvLocalAuthenticationPolicy.allCases.count == LocalAuthenticationPolicyItem.allCases.count) return LocalAuthenticationPolicyItem.allCases } static func shownItemAt(item: Int) -> LocalAuthenticationPolicyItem? { @@ -152,7 +159,7 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { case .customPasscode: return "customPasscode" } } - var localAuthenticationPolicy: LocalAuthenticationPolicy { + var localAuthenticationPolicy: ObvLocalAuthenticationPolicy { switch self { case .none: return .none case .deviceOwnerAuthentication: return .deviceOwnerAuthentication @@ -259,15 +266,10 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { let cell = UITableViewCell(style: .default, reuseIdentifier: item.cellIdentifier) let isPolicyAvailable = policy.isAvailable(whenBestAvailableAuthenticationMethodIs: authenticationMethod) let title = policy.title(authenticationMethod: authenticationMethod) - if #available(iOS 14, *) { - var configuration = cell.defaultContentConfiguration() - configuration.text = title - configuration.textProperties.color = isPolicyAvailable ? AppTheme.shared.colorScheme.label : AppTheme.shared.colorScheme.secondaryLabel - cell.contentConfiguration = configuration - } else { - cell.textLabel?.text = title - cell.textLabel?.isEnabled = isPolicyAvailable - } + var configuration = cell.defaultContentConfiguration() + configuration.text = title + configuration.textProperties.color = isPolicyAvailable ? AppTheme.shared.colorScheme.label : AppTheme.shared.colorScheme.secondaryLabel + cell.contentConfiguration = configuration if ObvMessengerSettings.Privacy.localAuthenticationPolicy == policy { cell.accessoryType = .checkmark } else { @@ -288,15 +290,10 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { } else if let duration = dateComponentsFormatter.string(from: gracePeriod) { details = CommonString.gracePeriodTitle(duration) } - if #available(iOS 14, *) { - var configuration = cell.defaultContentConfiguration() - configuration.text = title - configuration.secondaryText = details - cell.contentConfiguration = configuration - } else { - cell.textLabel?.text = title - cell.detailTextLabel?.text = details - } + var configuration = cell.defaultContentConfiguration() + configuration.text = title + configuration.secondaryText = details + cell.contentConfiguration = configuration cell.accessoryType = .disclosureIndicator return cell } @@ -332,15 +329,10 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { case .background: details = NSLocalizedString("ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_BACKGROUND", comment: "") } - if #available(iOS 14, *) { - var configuration = cell.defaultContentConfiguration() - configuration.text = title - configuration.secondaryText = details - cell.contentConfiguration = configuration - } else { - cell.textLabel?.text = title - cell.detailTextLabel?.text = details - } + var configuration = cell.defaultContentConfiguration() + configuration.text = title + configuration.secondaryText = details + cell.contentConfiguration = configuration cell.accessoryType = .disclosureIndicator return cell } @@ -348,7 +340,7 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { } - private func localAuthenticationPolicy(changeTo newPolicy: LocalAuthenticationPolicy, completionHandler: @escaping () -> Void) { + private func localAuthenticationPolicy(changeTo newPolicy: ObvLocalAuthenticationPolicy, completionHandler: @escaping () -> Void) { let currentPolicy = ObvMessengerSettings.Privacy.localAuthenticationPolicy guard currentPolicy != newPolicy else { DispatchQueue.main.async { @@ -368,7 +360,7 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { try await requestLocalAuthentication(with: .deviceOwnerAuthentication) case .biometricsWithCustomPasscodeFallback: - try await requestLocalAuthentication(with: .deviceOwnerAuthenticationWithBiometrics) + try await requestLocalAuthentication(with: newPolicy) try await startCustomPasscodeDefinitionWorkflow() case .customPasscode: @@ -420,7 +412,7 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { case .biometricsWithCustomPasscodeFallback: try await requestCustomPasscode() - try await requestLocalAuthentication(with: .deviceOwnerAuthenticationWithBiometrics) + try await requestLocalAuthentication(with: .biometricsWithCustomPasscodeFallback) case .customPasscode: assertionFailure(); return } @@ -513,19 +505,23 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { } - private func requestLocalAuthentication(with policy: LAPolicy) async throws { - let laContext = LAContext() - var error: NSError? - guard laContext.canEvaluatePolicy(policy, error: &error) else { - if let error = error { - throw error - } else { - assertionFailure() - throw ObvLAError.internalError - } + private func requestLocalAuthentication(with policy: ObvLocalAuthenticationPolicy) async throws { + + preventPrivacyWindowSceneFromShowingOnNextWillResignActive() + + let result = await localAuthenticationDelegate?.performLocalAuthentication( + customPasscodePresentingViewController: self, + uptimeAtTheTimeOfChangeoverToNotActiveState: nil, + localizedReason: Strings.changingSettingRequiresAuthentication, + policy: policy) + + switch result { + case .authenticated: + return + case .cancelled, .lockedOut, .none: + throw ObvLAError.internalError } - try await laContext.evaluatePolicy(policy, localizedReason: Strings.changingSettingRequiresAuthentication) - + } @@ -554,7 +550,7 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { assertionFailure() throw ObvLAError.internalError } - let laResult = await createPasscodeDelegate.requestCustomPasscode(viewController: self) + let laResult = await createPasscodeDelegate.requestCustomPasscode(customPasscodePresentingViewController: self) switch laResult { case .authenticated: return @@ -662,53 +658,92 @@ final class PrivacyTableViewController: UITableViewController, ObvErrorMaker { } -fileprivate extension LocalAuthenticationPolicy { - private func localizedString(for method: AuthenticationMethod, systemOrCustom: Bool, titleOrExplanation: Bool) -> String { - var component = ["LOGIN_WITH"] - switch method { - case .none: - // Biometry method is unknown we show both. - component += ["TOUCH_ID", "FACE_ID"] - case .passcode: - break - case .touchID: - component += ["TOUCH_ID"] - case .faceID: - component += ["FACE_ID"] +fileprivate extension ObvLocalAuthenticationPolicy { + + + private enum PasscodeKind { + case system + case custom + } + + + private enum LocalizedStringKind { + case title + case explanation + } + + + private func localizedString(for method: AuthenticationMethod, passcodeKind: PasscodeKind, localizedStringKind: LocalizedStringKind) -> String { + switch (method, passcodeKind, localizedStringKind) { + + case (.none, .system, .title): + return NSLocalizedString("LOGIN_WITH_TOUCH_ID_FACE_ID_SYSTEM_PASSCODE_TITLE", comment: "") + case (.none, .system, .explanation): + return NSLocalizedString("LOGIN_WITH_TOUCH_ID_FACE_ID_SYSTEM_PASSCODE_EXPLANATION", comment: "") + case (.none, .custom, .title): + return NSLocalizedString("LOGIN_WITH_TOUCH_ID_FACE_ID_CUSTOM_PASSCODE_TITLE", comment: "") + case (.none, .custom, .explanation): + return NSLocalizedString("LOGIN_WITH_TOUCH_ID_FACE_ID_CUSTOM_PASSCODE_EXPLANATION", comment: "") + + case (.passcode, .system, .title): + return NSLocalizedString("LOGIN_WITH_SYSTEM_PASSCODE_TITLE", comment: "") + case (.passcode, .system, .explanation): + return NSLocalizedString("LOGIN_WITH_SYSTEM_PASSCODE_EXPLANATION", comment: "") + case (.passcode, .custom, .title): + return NSLocalizedString("LOGIN_WITH_CUSTOM_PASSCODE_TITLE", comment: "") + case (.passcode, .custom, .explanation): + return NSLocalizedString("LOGIN_WITH_CUSTOM_PASSCODE_EXPLANATION", comment: "") + + case (.touchID, .system, .title): + return NSLocalizedString("LOGIN_WITH_TOUCH_ID_SYSTEM_PASSCODE_TITLE", comment: "") + case (.touchID, .system, .explanation): + return NSLocalizedString("LOGIN_WITH_TOUCH_ID_SYSTEM_PASSCODE_EXPLANATION", comment: "") + case (.touchID, .custom, .title): + return NSLocalizedString("LOGIN_WITH_TOUCH_ID_CUSTOM_PASSCODE_TITLE", comment: "") + case (.touchID, .custom, .explanation): + return NSLocalizedString("LOGIN_WITH_TOUCH_ID_CUSTOM_PASSCODE_EXPLANATION", comment: "") + + case (.faceID, .system, .title): + return NSLocalizedString("LOGIN_WITH_FACE_ID_SYSTEM_PASSCODE_TITLE", comment: "") + case (.faceID, .system, .explanation): + return NSLocalizedString("LOGIN_WITH_FACE_ID_SYSTEM_PASSCODE_EXPLANATION", comment: "") + case (.faceID, .custom, .title): + return NSLocalizedString("LOGIN_WITH_FACE_ID_CUSTOM_PASSCODE_TITLE", comment: "") + case (.faceID, .custom, .explanation): + return NSLocalizedString("LOGIN_WITH_FACE_ID_CUSTOM_PASSCODE_EXPLANATION", comment: "") + } - component += systemOrCustom ? ["SYSTEM"] : ["CUSTOM"] - component += ["PASSCODE"] - component += titleOrExplanation ? ["TITLE"] : ["EXPLANATION"] - return NSLocalizedString(component.joined(separator: "_"), comment: "") } + func title(authenticationMethod method: AuthenticationMethod) -> String { switch self { case .none: return CommonString.Word.None case .deviceOwnerAuthentication: - return localizedString(for: method, systemOrCustom: true, titleOrExplanation: true) + return localizedString(for: method, passcodeKind: .system, localizedStringKind: .title) case .biometricsWithCustomPasscodeFallback: var method = method if method == .passcode { method = .none // We only want biometry in this case } - return localizedString(for: method, systemOrCustom: false, titleOrExplanation: true) + return localizedString(for: method, passcodeKind: .custom, localizedStringKind: .title) case .customPasscode: - return localizedString(for: .passcode, systemOrCustom: false, titleOrExplanation: true) + return localizedString(for: .passcode, passcodeKind: .custom, localizedStringKind: .title) } } + func explanation(authenticationMethod method: AuthenticationMethod) -> String { switch self { case .none: return NSLocalizedString("NO_AUTHENTICATION_EXPLANATION", comment: "") case .deviceOwnerAuthentication: - return localizedString(for: method, systemOrCustom: true, titleOrExplanation: false) + return localizedString(for: method, passcodeKind: .system, localizedStringKind: .explanation) case .biometricsWithCustomPasscodeFallback: - return localizedString(for: method, systemOrCustom: false, titleOrExplanation: false) + return localizedString(for: method, passcodeKind: .custom, localizedStringKind: .explanation) case .customPasscode: - return localizedString(for: .passcode, systemOrCustom: false, titleOrExplanation: false) + return localizedString(for: .passcode, passcodeKind: .custom, localizedStringKind: .explanation) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/VerifyPasscodeViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/VerifyPasscodeViewController.swift index d508da05..a2b398d1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/VerifyPasscodeViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/Privacy/VerifyPasscodeViewController.swift @@ -17,13 +17,15 @@ * along with Olvid. If not, see . */ - import Foundation import SwiftUI import Combine import os.log import ObvUI import ObvUICoreData +import ObvSettings +import ObvDesignSystem + enum VerifyPasscodeViewResult { case succeed diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/VoIP/MaxAverageBitrateChooserTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/VoIP/MaxAverageBitrateChooserTableViewController.swift index 64ff6d64..21d57b03 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/VoIP/MaxAverageBitrateChooserTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/VoIP/MaxAverageBitrateChooserTableViewController.swift @@ -20,6 +20,8 @@ import UIKit import OlvidUtils import ObvUICoreData +import ObvSettings + class MaxAverageBitrateChooserTableViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/VoIP/VoIPSettingsTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/VoIP/VoIPSettingsTableViewController.swift index d930b8d4..584545fd 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/VoIP/VoIPSettingsTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/AllSettings/VoIP/VoIPSettingsTableViewController.swift @@ -20,6 +20,8 @@ import UIKit import OlvidUtils import ObvUICoreData +import ObvSettings + class VoIPSettingsTableViewController: UITableViewController { @@ -44,6 +46,83 @@ class VoIPSettingsTableViewController: UITableViewController { private let kbsFormatter = KbsFormatter() + + private enum Section: CaseIterable { + + case normal + case experimental + + static var shown: [Section] { + if ObvMessengerConstants.showExperimentalFeature { + return Section.allCases + } else { + return [.normal] + } + } + + var numberOfItems: Int { + switch self { + case .normal: return NormalItem.shown.count + case .experimental: return ExperimentalItem.shown.count + } + } + + static func shownSectionAt(section: Int) -> Section? { + guard section < shown.count else { assertionFailure(); return nil } + return shown[section] + } + + } + + + private enum NormalItem: CaseIterable { + case receiveCallsOnThisDevice + case includesCallsInRecents + + static var shown: [NormalItem] { + if ObvMessengerConstants.targetEnvironmentIsMacCatalyst { + return [.receiveCallsOnThisDevice] + } else { + return [.receiveCallsOnThisDevice, .includesCallsInRecents] + } + } + + static func shownItemAt(item: Int) -> NormalItem? { + guard item < shown.count else { assertionFailure(); return nil } + return shown[item] + } + + var cellIdentifier: String { + switch self { + case .receiveCallsOnThisDevice: return "ReceiveCallsOnThisDeviceCell" + case .includesCallsInRecents: return "IncludesCallsInRecentsCell" + } + } + + } + + + private enum ExperimentalItem: CaseIterable { + + case maxaveragebitrate + + static var shown: [ExperimentalItem] { + return ExperimentalItem.allCases + } + + static func shownItemAt(item: Int) -> ExperimentalItem? { + guard item < shown.count else { assertionFailure(); return nil } + return shown[item] + } + + var cellIdentifier: String { + switch self { + case .maxaveragebitrate: return "MaxAverageBitrateCell" + } + } + + } + } // MARK: - UITableViewDataSource @@ -51,80 +130,106 @@ class VoIPSettingsTableViewController: UITableViewController { extension VoIPSettingsTableViewController { override func numberOfSections(in tableView: UITableView) -> Int { - return ObvMessengerConstants.showExperimentalFeature ? 3 : 2 + return Section.shown.count } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - switch section { - case 0: - var rows = 1 - if isCallKitEnabled { rows += 1 } // For includesCallsInRecents - return rows - case 1: - return 1 // Maxaveragebitrate - default: - return 0 - } - } - - private var isCallKitEnabled: Bool { - get { ObvMessengerSettings.VoIP.isCallKitEnabled } - set { ObvMessengerSettings.VoIP.isCallKitEnabled = newValue } + guard let section = Section.shownSectionAt(section: section) else { return 0 } + return section.numberOfItems } + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell: UITableViewCell - - switch indexPath { - case IndexPath(row: 0, section: 0): - let _cell = ObvTitleAndSwitchTableViewCell(reuseIdentifier: "UseCallKitCell") - _cell.selectionStyle = .none - _cell.title = Strings.useCallKit - _cell.switchIsOn = isCallKitEnabled - _cell.blockOnSwitchValueChanged = { (value) in - ObvMessengerSettings.VoIP.isCallKitEnabled = value - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(400)) { - tableView.reloadData() + let cellInCaseOfError = UITableViewCell(style: .default, reuseIdentifier: nil) + + guard let section = Section.shownSectionAt(section: indexPath.section) else { + assertionFailure() + return cellInCaseOfError + } + + switch section { + + case .normal: + + guard let item = NormalItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return cellInCaseOfError } + + switch item { + + case .receiveCallsOnThisDevice: + let cell = tableView.dequeueReusableCell(withIdentifier: item.cellIdentifier) as? ObvTitleAndSwitchTableViewCell ?? ObvTitleAndSwitchTableViewCell(reuseIdentifier: item.cellIdentifier) + cell.title = Strings.receiveCallsOnThisDevice + cell.switchIsOn = ObvMessengerSettings.VoIP.receiveCallsOnThisDevice + cell.blockOnSwitchValueChanged = { (value) in + ObvMessengerSettings.VoIP.receiveCallsOnThisDevice = value + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(400)) { + tableView.reloadData() + } } + return cell + + case .includesCallsInRecents: + let cell = tableView.dequeueReusableCell(withIdentifier: item.cellIdentifier) as? ObvTitleAndSwitchTableViewCell ?? ObvTitleAndSwitchTableViewCell(reuseIdentifier: item.cellIdentifier) + cell.title = Strings.includesCallsInRecents + cell.switchIsOn = ObvMessengerSettings.VoIP.isIncludesCallsInRecentsEnabled + cell.blockOnSwitchValueChanged = { (value) in + ObvMessengerSettings.VoIP.isIncludesCallsInRecentsEnabled = value + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(400)) { + tableView.reloadData() + } + } + return cell + } - cell = _cell - case IndexPath(row: 1, section: 0): - let _cell = ObvTitleAndSwitchTableViewCell(reuseIdentifier: "IncludesCallsInRecents") - _cell.selectionStyle = .none - _cell.title = Strings.includesCallsInRecents - _cell.switchIsOn = ObvMessengerSettings.VoIP.isIncludesCallsInRecentsEnabled - _cell.blockOnSwitchValueChanged = { (value) in - ObvMessengerSettings.VoIP.isIncludesCallsInRecentsEnabled = value - } - cell = _cell - case IndexPath(row: 0, section: 1): - cell = UITableViewCell(style: .value1, reuseIdentifier: nil) - cell.textLabel?.text = Strings.maxaveragebitrate - if let maxaveragebitrate = ObvMessengerSettings.VoIP.maxaveragebitrate { - cell.detailTextLabel?.text = kbsFormatter.string(from: maxaveragebitrate as NSNumber) - } else { - cell.detailTextLabel?.text = CommonString.Word.None + + case .experimental: + + guard let item = ExperimentalItem.shownItemAt(item: indexPath.item) else { assertionFailure(); return cellInCaseOfError } + + switch item { + + case .maxaveragebitrate: + let cell = tableView.dequeueReusableCell(withIdentifier: item.cellIdentifier) ?? UITableViewCell(style: .value1, reuseIdentifier: nil) + cell.textLabel?.text = Strings.maxaveragebitrate + if let maxaveragebitrate = ObvMessengerSettings.VoIP.maxaveragebitrate { + cell.detailTextLabel?.text = kbsFormatter.string(from: maxaveragebitrate as NSNumber) + } else { + cell.detailTextLabel?.text = CommonString.Word.None + } + cell.accessoryType = .disclosureIndicator + return cell + } - cell.accessoryType = .disclosureIndicator - default: - cell = UITableViewCell(style: .value1, reuseIdentifier: nil) - assert(false) + + } - - return cell + } override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - switch indexPath { - case IndexPath(row: 0, section: 1): - let vc = MaxAverageBitrateChooserTableViewController() - self.navigationController?.pushViewController(vc, animated: true) - default: - break + + guard let section = Section.shownSectionAt(section: indexPath.section) else { assertionFailure(); return } + + switch section { + + case .normal: + + return + + case .experimental: + + guard let item = ExperimentalItem.shownItemAt(item: indexPath.item) else { return } + + switch item { + case .maxaveragebitrate: + let vc = MaxAverageBitrateChooserTableViewController() + self.navigationController?.pushViewController(vc, animated: true) + } + } + } } @@ -133,9 +238,8 @@ extension VoIPSettingsTableViewController { extension VoIPSettingsTableViewController { private struct Strings { - static let useCallKit = NSLocalizedString("USE_CALLKIT", comment: "") + static let receiveCallsOnThisDevice = NSLocalizedString("RECEIVE_CALLS_ON_THIS_DEVICE", comment: "") static let includesCallsInRecents = NSLocalizedString("INCLUDE_CALL_IN_RECENTS", comment: "") - static let useLoadBalancedTurnServers = NSLocalizedString("USE_LOAD_BALANCED_TURN_SERVERS", comment: "") static let maxaveragebitrate = NSLocalizedString("MAX_AVG_BITRATE", comment: "") } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/ObvMessengerSettings+Utils.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/ObvMessengerSettings+Utils.swift index caf414fc..56376365 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/ObvMessengerSettings+Utils.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/ObvMessengerSettings+Utils.swift @@ -19,6 +19,7 @@ import Foundation import ObvUICoreData +import ObvSettings extension ObvMessengerSettings.ContactsAndGroups.AutoAcceptGroupInviteFrom { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/SettingsFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/SettingsFlowViewController.swift index e3965816..37753962 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/SettingsFlowViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Main/Settings/SettingsFlowViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -29,9 +29,10 @@ final class SettingsFlowViewController: UINavigationController { private(set) var obvEngine: ObvEngine! private weak var createPasscodeDelegate: CreatePasscodeDelegate? + private weak var localAuthenticationDelegate: LocalAuthenticationDelegate? private weak var appBackupDelegate: AppBackupDelegate? - init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine, createPasscodeDelegate: CreatePasscodeDelegate, appBackupDelegate: AppBackupDelegate) { + init(ownedCryptoId: ObvCryptoId, obvEngine: ObvEngine, createPasscodeDelegate: CreatePasscodeDelegate, localAuthenticationDelegate: LocalAuthenticationDelegate, appBackupDelegate: AppBackupDelegate) { let allSettingsTableViewController = AllSettingsTableViewController(ownedCryptoId: ownedCryptoId) super.init(rootViewController: allSettingsTableViewController) @@ -39,6 +40,7 @@ final class SettingsFlowViewController: UINavigationController { self.ownedCryptoId = ownedCryptoId self.obvEngine = obvEngine self.createPasscodeDelegate = createPasscodeDelegate + self.localAuthenticationDelegate = localAuthenticationDelegate self.appBackupDelegate = appBackupDelegate allSettingsTableViewController.delegate = self @@ -85,18 +87,21 @@ extension SettingsFlowViewController: AllSettingsTableViewControllerDelegate { case .interface: settingViewController = InterfaceSettingsTableViewController(ownedCryptoId: ownedCryptoId) case .discussions: - settingViewController = DiscussionsDefaultSettingsHostingViewController() + settingViewController = DiscussionsDefaultSettingsHostingViewController(ownedCryptoId: ownedCryptoId) case .privacy: - guard let createPasscodeDelegate = self.createPasscodeDelegate else { + guard let createPasscodeDelegate, let localAuthenticationDelegate else { assertionFailure(); return } - settingViewController = PrivacyTableViewController(ownedCryptoId: ownedCryptoId, createPasscodeDelegate: createPasscodeDelegate) + settingViewController = PrivacyTableViewController( + ownedCryptoId: ownedCryptoId, + createPasscodeDelegate: createPasscodeDelegate, + localAuthenticationDelegate: localAuthenticationDelegate) case .backup: settingViewController = BackupTableViewController(obvEngine: obvEngine, appBackupDelegate: appBackupDelegate) case .about: settingViewController = AboutSettingsTableViewController() case .advanced: - settingViewController = AdvancedSettingsViewController(ownedCryptoId: ownedCryptoId) + settingViewController = AdvancedSettingsViewController(ownedCryptoId: ownedCryptoId, obvEngine: obvEngine) case .voip: settingViewController = VoIPSettingsTableViewController() } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/AppBackupManager/AppBackupManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/AppBackupManager/AppBackupManager.swift index 5521e40c..aae69aca 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/AppBackupManager/AppBackupManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/AppBackupManager/AppBackupManager.swift @@ -26,6 +26,7 @@ import OlvidUtils import ObvCrypto import ObvUICoreData import CoreData +import ObvSettings @@ -499,12 +500,13 @@ private extension CKDatabase { return try await withCheckedThrowingContinuation({ cont in let operation = CKModifyRecordsOperation(recordsToSave: recordsToSave, recordIDsToDelete: recordIDsToDelete) - operation.modifyRecordsCompletionBlock = { (savedRecords, deletedRecordIDs, error) in - if let error = error { + operation.modifyRecordsResultBlock = { result in + switch result { + case .failure(let error): cont.resume(throwing: CloudKitError.operationError(error)) - return + case .success: + cont.resume() } - cont.resume() } self.add(operation) }) @@ -687,7 +689,7 @@ extension AppBackupManager: ObvBackupable { try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in - ObvMessengerInternalNotification.requestSyncAppDatabasesWithEngine { result in + ObvMessengerInternalNotification.requestSyncAppDatabasesWithEngine(queuePriority: .veryHigh) { result in switch result { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/AppMainManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/AppMainManager.swift index 20674bc5..67a943d6 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/AppMainManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/AppMainManager.swift @@ -25,6 +25,8 @@ import OlvidUtils import ObvTypes import ObvUI import ObvUICoreData +import ObvSettings +import ObvDesignSystem final actor AppMainManager: ObvErrorMaker { @@ -207,6 +209,7 @@ final actor AppMainManager: ObvErrorMaker { migrationToV0_12_5() migrationToV0_12_6() migrationToV0_12_8() + migrationToV1_4() } @@ -348,7 +351,7 @@ extension AppMainManager { os_log("🍎✅ We received a remote notification device token: %{public}@", log: Self.log, type: .info, deviceToken.hexString()) _ = await NewAppStateManager.shared.waitUntilAppIsInitialized() await ObvPushNotificationManager.shared.setCurrentDeviceToken(to: deviceToken) - await ObvPushNotificationManager.shared.tryToRegisterToPushNotifications() + await ObvPushNotificationManager.shared.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() } @@ -358,7 +361,7 @@ extension AppMainManager { if ObvMessengerConstants.areRemoteNotificationsAvailable == true { os_log("%@", log: Self.log, type: .error, error.localizedDescription) } - Task { await ObvPushNotificationManager.shared.tryToRegisterToPushNotifications() } + await ObvPushNotificationManager.shared.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() } @@ -403,6 +406,23 @@ extension AppMainManager { os_log("🌊 We sucessfully synced all managed identities with the keycloak server, calling the completion handler of the background notification with tag %{public}@", log: Self.log, type: .info, tag.uuidString) completionHandler(.newData) return + + } else if userInfo["ownedDevices"] != nil { + + os_log("🧥 The received notification is an ownedDevices notification targeted for our owned identity", log: Self.log, type: .debug) + + Task { + do { + try await obvEngine.performOwnedDeviceDiscoveryForAllOwnedIdentities() + await ObvPushNotificationManager.shared.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() + completionHandler(.newData) + } catch { + completionHandler(.failed) + return + } + } + + return } else { @@ -455,6 +475,16 @@ extension AppMainManager { // MARK: AppCoreDataStackInitialization utils extension AppMainManager { + + private func migrationToV1_4() { + guard let userDefaults = UserDefaults(suiteName: ObvMessengerConstants.appGroupIdentifier) else { return } + userDefaults.removeObject(forKey: "settings.voip.isCallKitEnabled") + } + + private func migrationToV0_12_12() { + guard let userDefaults = UserDefaults(suiteName: ObvMessengerConstants.appGroupIdentifier) else { return } + userDefaults.removeObject(forKey: "settings.interface.useOldDiscussionInterface") + } private func migrationToV0_12_8() { guard let userDefaults = UserDefaults(suiteName: ObvMessengerConstants.appGroupIdentifier) else { return } @@ -712,6 +742,12 @@ extension AppMainManager { } } + var storeKitDelegate: StoreKitDelegate? { + get async { + await appManagersHolder?.storeKitDelegate + } + } + } @@ -994,23 +1030,20 @@ final actor NewAppStateManager { // MARK: Handling Olvid URLs - func setOlvidURLHandler(to olvidURLHandler: OlvidURLHandler) { + func setOlvidURLHandler(to olvidURLHandler: OlvidURLHandler) async { assert(self.olvidURLHandler == nil) self.olvidURLHandler = olvidURLHandler - olvidURLsOnHold.forEach { - _ = olvidURLHandler.handleOlvidURL($0) + while let olvidURLOnHold = olvidURLsOnHold.popLast() { + _ = await olvidURLHandler.handleOlvidURL(olvidURLOnHold) } - olvidURLsOnHold.removeAll() } /// Can be called from anywhere within the app. This methods forwards the `OlvidURL` to the appropriate handler, /// at the appropriate time (i.e., when a handler is available). - func handleOlvidURL(_ olvidURL: OlvidURL) { + func handleOlvidURL(_ olvidURL: OlvidURL) async { if let olvidURLHandler = self.olvidURLHandler { - DispatchQueue.main.async { - olvidURLHandler.handleOlvidURL(olvidURL) - } + await olvidURLHandler.handleOlvidURL(olvidURL) } else { olvidURLsOnHold.append(olvidURL) } @@ -1023,5 +1056,5 @@ final actor NewAppStateManager { // MARK: - OlvidURLHandler protocol protocol OlvidURLHandler: AnyObject { - func handleOlvidURL(_ olvidURL: OlvidURL) + func handleOlvidURL(_ olvidURL: OlvidURL) async } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/AppManagersHolder.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/AppManagersHolder.swift index 2f71d335..4e4bd97b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/AppManagersHolder.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/AppManagersHolder.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -38,7 +38,8 @@ final actor AppManagersHolder { private let appBackupManager: AppBackupManager private let expirationMessagesManager: ExpirationMessagesManager private let retentionMessagesManager: RetentionMessagesManager - private let callManager: CallManager + //private let callManager: CallManager + private let callProvider: CallProviderDelegate private let profilePictureManager: ProfilePictureManager private let subscriptionManager: SubscriptionManager private let muteDiscussionManager: MuteDiscussionManager @@ -48,13 +49,7 @@ final actor AppManagersHolder { private let backgroundTasksManager: BackgroundTasksManager private let webSocketManager: WebSocketManager private let localAuthenticationManager: LocalAuthenticationManager - private let intentManager: IntentDelegate? = { - if #available(iOS 14, *) { - return IntentManager() - } else { - return nil - } - }() + private let intentManager: IntentDelegate = IntentManager() private var observationTokens = [NSObjectProtocol]() @@ -67,6 +62,10 @@ final actor AppManagersHolder { var appBackupDelegate: AppBackupDelegate { appBackupManager } + + var storeKitDelegate: StoreKitDelegate { + subscriptionManager + } init(obvEngine: ObvEngine, backgroundTasksManager: BackgroundTasksManager, userNotificationsManager: UserNotificationsManager) { @@ -80,7 +79,8 @@ final actor AppManagersHolder { self.appBackupManager = AppBackupManager(obvEngine: obvEngine) self.expirationMessagesManager = ExpirationMessagesManager() self.retentionMessagesManager = RetentionMessagesManager() - self.callManager = CallManager(obvEngine: obvEngine) + //self.callManager = CallManager(obvEngine: obvEngine) + self.callProvider = CallProviderDelegate(obvEngine: obvEngine) self.profilePictureManager = ProfilePictureManager() self.subscriptionManager = SubscriptionManager(obvEngine: obvEngine) self.muteDiscussionManager = MuteDiscussionManager() @@ -103,15 +103,14 @@ final actor AppManagersHolder { // Observe app lifecycle events await observeAppBasedLifeCycleEvents() // Subscribe to notifications - await callManager.performPostInitialization() + // await callManager.performPostInitialization() + callProvider.performPostInitialization() // Initialize the Keycloak manager singleton await keycloakManager.performPostInitialization() await webSocketManager.performPostInitialization() await localAuthenticationManager.performPostInitialization() await snackBarManager.performPostInitialization() - if #available(iOS 14, *) { - (intentManager as? IntentManager)?.performPostInitialization() - } + (intentManager as? IntentManager)?.performPostInitialization() } @@ -121,7 +120,7 @@ final actor AppManagersHolder { await expirationMessagesManager.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) await userNotificationsBadgesManager.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) await snackBarManager.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) - await callManager.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) + //await callManager.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) await webSocketManager.applicationAppearedOnScreen(forTheFirstTime: forTheFirstTime) } @@ -132,11 +131,11 @@ final actor AppManagersHolder { let didEnterBackgroundNotification = UIApplication.didEnterBackgroundNotification let tokens = [ NotificationCenter.default.addObserver(forName: didEnterBackgroundNotification, object: nil, queue: .main) { _ in - os_log("🧦 didEnterBackgroundNotification", log: Self.log, type: .info) + os_log("didEnterBackgroundNotification", log: Self.log, type: .info) Task { [weak self] in - os_log("🧦 Call to cancelThenScheduleBackgroundTasksWhenAppDidEnterBackground starts", log: Self.log, type: .info) + os_log("Call to cancelThenScheduleBackgroundTasksWhenAppDidEnterBackground starts", log: Self.log, type: .info) await self?.cancelThenScheduleBackgroundTasksWhenAppDidEnterBackground() - os_log("🧦 Call to cancelThenScheduleBackgroundTasksWhenAppDidEnterBackground ends", log: Self.log, type: .info) + os_log("Call to cancelThenScheduleBackgroundTasksWhenAppDidEnterBackground ends", log: Self.log, type: .info) } }, ] diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/HardLinksToFylesManager/HardLinksToFylesManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/HardLinksToFylesManager/HardLinksToFylesManager.swift index 01ca9d17..1aef2f97 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/HardLinksToFylesManager/HardLinksToFylesManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/HardLinksToFylesManager/HardLinksToFylesManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,7 @@ import QuickLook import MobileCoreServices import CoreData import ObvUICoreData +import ObvSettings /// The purpose of this coordinator is to manage all the hard links to fyles within Olvid. It subscribes to `RequestHardLinkToFyle` notifications. @@ -255,24 +256,26 @@ final class HardLinksToFylesManager { final class HardLinkToFyle: NSObject, QLPreviewItem { let creationDate = Date() - let uti: String + let contentType: UTType let fyleURL: URL let fileName: String private(set) var hardlinkURL: URL? private(set) var activityItemProvider: ActivityItemProvider? + private (set) var itemProvider: NSItemProvider? + private (set) var uiDragItem: UIDragItem? override func isEqual(_ object: Any?) -> Bool { guard let otherObject = object as? HardLinkToFyle else { return false } - return self.uti == otherObject.uti && self.fyleURL == otherObject.fyleURL && self.fileName == otherObject.fileName && self.hardlinkURL == otherObject.hardlinkURL + return self.contentType == otherObject.contentType && self.fyleURL == otherObject.fyleURL && self.fileName == otherObject.fileName && self.hardlinkURL == otherObject.hardlinkURL } override var debugDescription: String { - "HardLinkToFyle(creationDate: \(creationDate.debugDescription) uti: \(uti), fileName: \(fileName), fyleURL: \(fyleURL), hardlinkURL: \(hardlinkURL?.path ?? "nil")" + "HardLinkToFyle(creationDate: \(creationDate.debugDescription) contentType: \(contentType.debugDescription), fileName: \(fileName), fyleURL: \(fyleURL), hardlinkURL: \(hardlinkURL?.path ?? "nil")" } override var hash: Int { var hasher = Hasher() - hasher.combine(uti) + hasher.combine(contentType) hasher.combine(fyleURL) hasher.combine(fileName) hasher.combine(hardlinkURL) @@ -286,11 +289,11 @@ final class HardLinkToFyle: NSObject, QLPreviewItem { final class ActivityItemProvider: UIActivityItemProvider { private let hardlinkURL: URL - private let uti: String + private let contentType: UTType - fileprivate init(hardlinkURL: URL, uti: String) { + fileprivate init(hardlinkURL: URL, contentType: UTType) { self.hardlinkURL = hardlinkURL - self.uti = uti + self.contentType = contentType super.init(placeholderItem: hardlinkURL) } @@ -299,7 +302,7 @@ final class HardLinkToFyle: NSObject, QLPreviewItem { } var excludedActivityTypes: [UIActivity.ActivityType]? { - if ObvUTIUtils.uti(self.uti, conformsTo: kUTTypeImage) { + if contentType.conforms(to: .image) { return [.openInIBooks] } else { return [] @@ -311,9 +314,11 @@ final class HardLinkToFyle: NSObject, QLPreviewItem { fileprivate init(fyleElement: FyleElement, currentSessionDirectoryForHardlinks: URL, log: OSLog) throws { let log = HardLinksToFylesManager.log os_log("Starting creation of HardLinkToFyle for fyle %{public}@", log: log, type: .info, fyleElement.fyleURL.lastPathComponent) - self.uti = fyleElement.uti + self.contentType = fyleElement.contentType self.fyleURL = fyleElement.fyleURL self.fileName = fyleElement.fileName + self.itemProvider = NSItemProvider(fyleElement: fyleElement) + self.uiDragItem = UIDragItem(fyleElement: fyleElement) guard fyleElement.fullFileIsAvailable else { os_log("Since the full file for fyle %{public}@ is not available, the hardlink won't contain a hardlink URL", log: log, type: .info, fyleElement.fyleURL.lastPathComponent) self.hardlinkURL = nil @@ -324,31 +329,32 @@ final class HardLinkToFyle: NSObject, QLPreviewItem { os_log("Since the full file for fyle %{public}@ is available, we create a hardlink on disk now", log: log, type: .info, fyleElement.fyleURL.lastPathComponent) let directoryForHardLink = fyleElement.directoryForHardLink(in: currentSessionDirectoryForHardlinks) try FileManager.default.createDirectory(at: directoryForHardLink, withIntermediateDirectories: true, attributes: nil) - let appropriateFilename = HardLinkToFyle.determineAppropriateFilename(originalFilename: fyleElement.fileName, uti: fyleElement.uti) + let appropriateFilename = HardLinkToFyle.determineAppropriateFilename(originalFilename: fyleElement.fileName, contentType: fyleElement.contentType) let hardlinkURL = directoryForHardLink.appendingPathComponent(appropriateFilename, isDirectory: false) try HardLinkToFyle.linkOrCopyItem(at: fyleElement.fyleURL, to: hardlinkURL, log: log) self.hardlinkURL = hardlinkURL - self.activityItemProvider = ActivityItemProvider(hardlinkURL: hardlinkURL, uti: fyleElement.uti) + self.activityItemProvider = ActivityItemProvider(hardlinkURL: hardlinkURL, contentType: fyleElement.contentType) super.init() } - private static func determineAppropriateFilename(originalFilename: String, uti: String) -> String { + + private static func determineAppropriateFilename(originalFilename: String, contentType: UTType) -> String { let escapedFilename = originalFilename.replacingOccurrences(of: "/", with: "_") // We have a specific case of .m4a files to fix the issue where Android sends audio/mpeg as a MIME type of .m4a files - if let utiFromFilename = ObvUTIUtils.utiOfFile(withName: escapedFilename), (utiFromFilename == uti || ObvUTIUtils.uti(utiFromFilename, conformsTo: kUTTypeMPEG4Audio)) { + if let contentTypeFromFilename = UTType(filenameExtension: (originalFilename as NSString).pathExtension), (contentTypeFromFilename == contentType || contentTypeFromFilename.conforms(to: .mpeg4Audio)) { return escapedFilename + } else if let preferredFilenameExtension = contentType.preferredFilenameExtension { + return [escapedFilename, preferredFilenameExtension].joined(separator: ".") } else { - if let filenameExtension = ObvUTIUtils.preferredTagWithClass(inUTI: uti, inTagClass: .FilenameExtension) { - return [escapedFilename, filenameExtension].joined(separator: ".") - } else { - return escapedFilename - } + return escapedFilename } } + + private static func linkOrCopyItem(at fyleURL: URL, to hardlinkURL: URL, log: OSLog) throws { let log = HardLinksToFylesManager.log - os_log("Trying to link or copy item to disk during the creaton of the HardLinkToFyle for fyle %{public}@ to the following hardlink URL: %{public}@", log: log, type: .info, fyleURL.lastPathComponent, hardlinkURL.description) + os_log("Trying to link or copy item to disk during the creation of the HardLinkToFyle for fyle %{public}@ to the following hardlink URL: %{public}@", log: log, type: .info, fyleURL.lastPathComponent, hardlinkURL.description) guard !FileManager.default.fileExists(atPath: hardlinkURL.path) else { os_log("The hardlink URL already exists for the HardLinkToFyle for fyle %{public}@", log: log, type: .info, fyleURL.lastPathComponent) return @@ -392,7 +398,8 @@ extension FyleJoin { struct FyleElementForDraftFyleJoin: FyleElement { let fileName: String - let uti: String + let contentType: UTType + //let uti: String let fullFileIsAvailable: Bool let fyleURL: URL let sha256: Data @@ -400,15 +407,15 @@ struct FyleElementForDraftFyleJoin: FyleElement { init?(_ fyleJoin: FyleJoin) { guard let fyle = fyleJoin.fyle else { return nil } self.fileName = fyleJoin.fileName - self.uti = fyleJoin.uti + self.contentType = fyleJoin.contentType self.fullFileIsAvailable = true self.fyleURL = fyle.url self.sha256 = fyle.sha256 } - private init(fileName: String, uti: String, fullFileIsAvailable: Bool, fyleURL: URL, sha256: Data) { + private init(fileName: String, contentType: UTType, fullFileIsAvailable: Bool, fyleURL: URL, sha256: Data) { self.fileName = fileName - self.uti = uti + self.contentType = contentType self.fullFileIsAvailable = fullFileIsAvailable self.fyleURL = fyleURL self.sha256 = sha256 @@ -423,6 +430,30 @@ struct FyleElementForDraftFyleJoin: FyleElement { } func replacingFullFileIsAvailable(with newFullFileIsAvailable: Bool) -> FyleElement { - FyleElementForDraftFyleJoin(fileName: fileName, uti: uti, fullFileIsAvailable: newFullFileIsAvailable, fyleURL: fyleURL, sha256: sha256) + Self.init(fileName: fileName, contentType: contentType, fullFileIsAvailable: newFullFileIsAvailable, fyleURL: fyleURL, sha256: sha256) } } + + +// MARK: - System types' extensions + +fileprivate extension NSItemProvider { + + convenience init?(fyleElement: FyleElement) { + guard fyleElement.fullFileIsAvailable else { return nil } + self.init(item: fyleElement.fyleURL as NSURL, typeIdentifier: fyleElement.contentType.identifier) + self.suggestedName = fyleElement.fileName + } + +} + + +fileprivate extension UIDragItem { + + convenience init?(fyleElement: FyleElement) { + guard fyleElement.fullFileIsAvailable else { return nil } + guard let itemProvider = NSItemProvider(fyleElement: fyleElement) else { return nil } + self.init(itemProvider: itemProvider) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/IntentManager/IntentManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/IntentManager/IntentManager.swift index 56f9b750..ab871ca5 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/IntentManager/IntentManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/IntentManager/IntentManager.swift @@ -16,7 +16,6 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import Foundation import CoreData @@ -25,6 +24,7 @@ import os.log import ObvUI import UIKit import ObvUICoreData +import ObvSettings protocol IntentDelegate: AnyObject { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/IntentManager/IntentManagerUtils.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/IntentManager/IntentManagerUtils.swift index 3c7874b5..62fb94ca 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/IntentManager/IntentManagerUtils.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/IntentManager/IntentManagerUtils.swift @@ -25,6 +25,9 @@ import os.log import ObvUI import ObvUICoreData import UI_SystemIcon +import ObvSettings +import ObvDesignSystem + /// IntentManager utilities that can be used by all extentions. @available(iOS 14.0, *) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/KeycloakManager/KeycloakManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/KeycloakManager/KeycloakManager.swift index 61d99b45..142732a0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/KeycloakManager/KeycloakManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/KeycloakManager/KeycloakManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -33,7 +33,23 @@ import ObvUICoreData final class KeycloakManagerSingleton: ObvErrorMaker { static var shared = KeycloakManagerSingleton() - private init() {} + private init() { + observeNotifications() + } + + private var observationTokens = [NSObjectProtocol]() + + deinit { + observationTokens.forEach { NotificationCenter.default.removeObserver($0) } + } + + private func observeNotifications() { + observationTokens = [ + ObvMessengerInternalNotification.observeNetworkInterfaceTypeChanged { isConnected in + Task { [weak self] in await self?.processNetworkInterfaceTypeChangedNotification(isConnected: isConnected) } + }, + ] + } static let errorDomain = "KeycloakManagerSingleton" @@ -124,12 +140,12 @@ final class KeycloakManagerSingleton: ObvErrorMaker { /// If the manager is not set, this function throws an `Error`. If any other error occurs, it can be casted to a `KeycloakManager.AddContactError`. - func addContact(ownedCryptoId: ObvCryptoId, userId: String, userIdentity: Data) async throws { + func addContact(ownedCryptoId: ObvCryptoId, userIdOrSignedDetails: KeycloakAddContactInfo, userIdentity: Data) async throws { guard let manager = manager else { assertionFailure() throw Self.makeError(message: "The internal manager is not set") } - try await manager.addContact(ownedCryptoId: ownedCryptoId, userId: userId, userIdentity: userIdentity) + try await manager.addContact(ownedCryptoId: ownedCryptoId, userIdOrSignedDetails: userIdOrSignedDetails, userIdentity: userIdentity) } @@ -152,6 +168,19 @@ final class KeycloakManagerSingleton: ObvErrorMaker { } return try await manager.syncAllManagedIdentities(ignoreSynchronizationInterval: true) } + + + private func processNetworkInterfaceTypeChangedNotification(isConnected: Bool) async { + guard isConnected else { return } + do { + os_log("🧥🛜 Call to syncAllManagedIdentities as network connexion is available", log: KeycloakManager.log, type: .info) + try await manager?.syncAllManagedIdentities(ignoreSynchronizationInterval: false) + os_log("🧥🛜 Call to syncAllManagedIdentities was successful", log: KeycloakManager.log, type: .info) + } catch { + os_log("🧥🛜 Call to syncAllManagedIdentities failed: %{public}@", log: KeycloakManager.log, type: .error, error.localizedDescription) + } + } + } @@ -173,6 +202,7 @@ actor KeycloakManager: NSObject { private var currentAuthorizationFlow: OIDExternalUserAgentSession? private func setCurrentAuthorizationFlow(to newCurrentAuthorizationFlow: OIDExternalUserAgentSession?) { + self.currentAuthorizationFlow?.cancel() self.currentAuthorizationFlow = newCurrentAuthorizationFlow } @@ -184,7 +214,7 @@ actor KeycloakManager: NSObject { private static var groupsPath = "olvid-rest/groups" private static let errorDomain = "KeycloakManager" - private static var log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "KeycloakManager") + fileprivate static var log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "KeycloakManager") static func makeError(message: String) -> Error { NSError(domain: KeycloakManager.errorDomain, code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) } private func makeError(message: String) -> Error { KeycloakManager.makeError(message: message) } @@ -237,7 +267,7 @@ actor KeycloakManager: NSObject { os_log("🧥 Call to unregisterKeycloakManagedOwnedIdentity", log: KeycloakManager.log, type: .info) do { setLastSynchronizationDate(forOwnedIdentity: ownedCryptoId, to: nil) - try await obvEngine.unbindOwnedIdentityFromKeycloakServer(ownedCryptoId: ownedCryptoId) + try await obvEngine.unbindOwnedIdentityFromKeycloak(ownedCryptoId: ownedCryptoId) } catch { guard failedAttempts < maxFailCount else { assertionFailure() @@ -305,6 +335,7 @@ actor KeycloakManager: NSObject { throw UploadOwnedIdentityError.ownedIdentityWasRevoked case .authenticationRequired: do { + ObvDisplayableLogs.shared.log("🧥[OpenKeycloakAuthentication][2]") try await openKeycloakAuthenticationRequiredTokenExpired(internalKeycloakState: iks, ownedCryptoId: ownedCryptoId) return try await uploadOwnIdentity(ownedCryptoId: ownedCryptoId) } catch let error as KeycloakDialogError { @@ -397,77 +428,89 @@ actor KeycloakManager: NSObject { /// Throws a AddContactError - fileprivate func addContact(ownedCryptoId: ObvCryptoId, userId: String, userIdentity: Data) async throws { + fileprivate func addContact(ownedCryptoId: ObvCryptoId, userIdOrSignedDetails: KeycloakAddContactInfo, userIdentity: Data) async throws { os_log("🧥 Call to addContact", log: KeycloakManager.log, type: .info) - let iks: InternalKeycloakState - do { - iks = try await getInternalKeycloakState(for: ownedCryptoId) - } catch { - throw AddContactError.unkownError(error) - } - - let addContactJSON = AddContactJSON(userId: userId) - let encoder = JSONEncoder() - let dataToSend: Data - do { - dataToSend = try encoder.encode(addContactJSON) - } catch { - throw AddContactError.unkownError(error) - } - - let result: KeycloakManager.ApiResultForGetKeyPath - do { - result = try await keycloakApiRequest(serverURL: iks.keycloakServer, path: KeycloakManager.getKeyPath, accessToken: iks.accessToken, dataToSend: dataToSend) - } catch let error as KeycloakApiRequestError { - switch error { - case .permissionDenied: - throw AddContactError.authenticationRequired - case .internalError, .invalidRequest, .identityAlreadyUploaded, .badResponse, .decodingFailed: - throw AddContactError.badResponse - case .ownedIdentityWasRevoked: - throw AddContactError.ownedIdentityWasRevoked - } - } catch { - assertionFailure("Unexpected error") - throw AddContactError.unkownError(error) - } - let signedUserDetails: SignedObvKeycloakUserDetails - do { - guard let signatureVerificationKey = iks.signatureVerificationKey else { - // We did not save the signature key used to sign our own details, se we cannot make sure the details of our future contact are signed with the appropriate key. - // We fail and force a resync that will eventually store this server signature verification key - Task { - setLastSynchronizationDate(forOwnedIdentity: ownedCryptoId, to: nil) - currentlySyncingOwnedIdentities.remove(ownedCryptoId) - await synchronizeOwnedIdentityWithKeycloakServer(ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: false, failedAttempts: 0) - } - throw AddContactError.willSyncKeycloakServerSignatureKey + switch userIdOrSignedDetails { + case .userId(let userId): + + let iks: InternalKeycloakState + do { + iks = try await getInternalKeycloakState(for: ownedCryptoId) + } catch { + throw AddContactError.unkownError(error) } - // The signature key used to sign our own details is available, we use it to check the details of our future contact + + let addContactJSON = AddContactJSON(userId: userId) + let encoder = JSONEncoder() + let dataToSend: Data do { - signedUserDetails = try SignedObvKeycloakUserDetails.verifySignedUserDetails(result.signature, with: signatureVerificationKey) + dataToSend = try encoder.encode(addContactJSON) } catch { - // The signature verification failed when using the key used to signed our own details. We check if the signature is valid using the key sent by the server + throw AddContactError.unkownError(error) + } + + let result: KeycloakManager.ApiResultForGetKeyPath + do { + result = try await keycloakApiRequest(serverURL: iks.keycloakServer, path: KeycloakManager.getKeyPath, accessToken: iks.accessToken, dataToSend: dataToSend) + } catch let error as KeycloakApiRequestError { + switch error { + case .permissionDenied: + throw AddContactError.authenticationRequired + case .internalError, .invalidRequest, .identityAlreadyUploaded, .badResponse, .decodingFailed: + throw AddContactError.badResponse + case .ownedIdentityWasRevoked: + throw AddContactError.ownedIdentityWasRevoked + } + } catch { + assertionFailure("Unexpected error") + throw AddContactError.unkownError(error) + } + + do { + guard let signatureVerificationKey = iks.signatureVerificationKey else { + // We did not save the signature key used to sign our own details, se we cannot make sure the details of our future contact are signed with the appropriate key. + // We fail and force a resync that will eventually store this server signature verification key + Task { + setLastSynchronizationDate(forOwnedIdentity: ownedCryptoId, to: nil) + currentlySyncingOwnedIdentities.remove(ownedCryptoId) + await synchronizeOwnedIdentityWithKeycloakServer(ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: false, failedAttempts: 0) + } + throw AddContactError.willSyncKeycloakServerSignatureKey + } + // The signature key used to sign our own details is available, we use it to check the details of our future contact do { - _ = try JWSUtil.verifySignature(jwks: iks.jwks, signature: result.signature) + signedUserDetails = try SignedObvKeycloakUserDetails.verifySignedUserDetails(result.signature, with: signatureVerificationKey) } catch { - // The signature is definitively invalid, we fail - throw AddContactError.invalidSignature(error) - } - // If we reach this point, the signature is valid but with the wrong signature key --> we force a resync to detect key change and prompt user with a dialog - Task { - setLastSynchronizationDate(forOwnedIdentity: ownedCryptoId, to: nil) - currentlySyncingOwnedIdentities.remove(ownedCryptoId) - await synchronizeOwnedIdentityWithKeycloakServer(ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: false, failedAttempts: 0) + // The signature verification failed when using the key used to signed our own details. We check if the signature is valid using the key sent by the server + do { + _ = try JWSUtil.verifySignature(jwks: iks.jwks, signature: result.signature) + } catch { + // The signature is definitively invalid, we fail + throw AddContactError.invalidSignature(error) + } + // If we reach this point, the signature is valid but with the wrong signature key --> we force a resync to detect key change and prompt user with a dialog + Task { + setLastSynchronizationDate(forOwnedIdentity: ownedCryptoId, to: nil) + currentlySyncingOwnedIdentities.remove(ownedCryptoId) + await synchronizeOwnedIdentityWithKeycloakServer(ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: false, failedAttempts: 0) + } + throw AddContactError.willSyncKeycloakServerSignatureKey } - throw AddContactError.willSyncKeycloakServerSignatureKey } + + + case .signedDetails(let signedDetails): + + signedUserDetails = signedDetails + } + guard signedUserDetails.identity == userIdentity else { throw AddContactError.badResponse } + do { try obvEngine.addKeycloakContact(with: ownedCryptoId, signedContactDetails: signedUserDetails) } catch(let error) { @@ -780,7 +823,9 @@ actor KeycloakManager: NSObject { assert(Date().timeIntervalSince(lastSynchronizationDate) > 0) - guard Date().timeIntervalSince(lastSynchronizationDate) > self.synchronizationInterval || ignoreSynchronizationInterval else { + let timeIntervalSinceLastSynchronizationDate = Date().timeIntervalSince(lastSynchronizationDate) + guard timeIntervalSinceLastSynchronizationDate > self.synchronizationInterval || ignoreSynchronizationInterval else { + os_log("🧥 No need to sync as the last sync occured %{public}d seconds ago", log: KeycloakManager.log, type: .info, Int(timeIntervalSinceLastSynchronizationDate)) return } @@ -804,6 +849,7 @@ actor KeycloakManager: NSObject { switch error { case .authenticationRequired: do { + ObvDisplayableLogs.shared.log("🧥[OpenKeycloakAuthentication][3]") try await openKeycloakAuthenticationRequiredTokenExpired(internalKeycloakState: iks, ownedCryptoId: ownedCryptoId) return await retrySynchronizeOwnedIdentityWithKeycloakServerOnError(error: error, ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: ignoreSynchronizationInterval, currentFailedAttempts: failedAttempts) } catch let error as KeycloakDialogError { @@ -962,6 +1008,7 @@ actor KeycloakManager: NSObject { break // Do nothing case .authenticationRequired: do { + ObvDisplayableLogs.shared.log("🧥[OpenKeycloakAuthentication][4]") try await openKeycloakAuthenticationRequiredTokenExpired(internalKeycloakState: iks, ownedCryptoId: ownedCryptoId) return await retrySynchronizeOwnedIdentityWithKeycloakServerOnError(error: error, ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: ignoreSynchronizationInterval, currentFailedAttempts: failedAttempts) } catch let error as KeycloakDialogError { @@ -1051,11 +1098,11 @@ actor KeycloakManager: NSObject { // If we reach this point, the details on the server are identical to the ones stored locally. // We update the current API key if needed - let apiKey: UUID + let apiKey: UUID? do { - apiKey = try obvEngine.getApiKeyForOwnedIdentity(with: ownedCryptoId) + apiKey = try await obvEngine.getKeycloakAPIKey(ownedCryptoId: ownedCryptoId) } catch { - os_log("🧥 Could not retrieve the current API key from the owned identity.", log: KeycloakManager.log, type: .fault) + os_log("🧥 Could not retrieve the current API key from the owned identity: %{public}@", log: KeycloakManager.log, type: .fault, error.localizedDescription) return await retrySynchronizeOwnedIdentityWithKeycloakServerOnError(error: error, ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: ignoreSynchronizationInterval, currentFailedAttempts: failedAttempts) } @@ -1063,7 +1110,7 @@ actor KeycloakManager: NSObject { guard apiKey == apiKeyOnServer else { // The api key returned by the server differs from the one store locally. We update the local key do { - try obvEngine.setAPIKey(for: ownedCryptoId, apiKey: apiKeyOnServer, keycloakServerURL: iks.keycloakServer) + _ = try await obvEngine.registerThenSaveKeycloakAPIKey(ownedCryptoId: ownedCryptoId, apiKey: apiKeyOnServer) return await retrySynchronizeOwnedIdentityWithKeycloakServerOnError(error: nil, ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: ignoreSynchronizationInterval, currentFailedAttempts: 0) } catch { os_log("🧥 Could not update the local API key with the new one returned by the server.", log: KeycloakManager.log, type: .fault) @@ -1077,7 +1124,7 @@ actor KeycloakManager: NSObject { // We update the Keycloak push topics stored within the engine do { - try obvEngine.updateKeycloakPushTopicsIfNeeded(ownedCryptoId: ownedCryptoId, pushTopics: keycloakUserDetailsAndStuff.pushTopics) + try await ObvPushNotificationManager.shared.updateKeycloakPushTopicsIfNeeded(ownedCryptoId: ownedCryptoId, pushTopics: keycloakUserDetailsAndStuff.pushTopics) } catch { os_log("🧥 Could not update the engine using the push topics returned by the server.", log: KeycloakManager.log, type: .fault) return await retrySynchronizeOwnedIdentityWithKeycloakServerOnError(error: error, ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: ignoreSynchronizationInterval, currentFailedAttempts: failedAttempts) @@ -1128,6 +1175,7 @@ actor KeycloakManager: NSObject { switch error { case .authenticationRequired: do { + ObvDisplayableLogs.shared.log("🧥[OpenKeycloakAuthentication][5]") try await openKeycloakAuthenticationRequiredTokenExpired(internalKeycloakState: iks, ownedCryptoId: ownedCryptoId) return await retrySynchronizeOwnedIdentityWithKeycloakServerOnError(error: error, ownedCryptoId: ownedCryptoId, ignoreSynchronizationInterval: ignoreSynchronizationInterval, currentFailedAttempts: failedAttempts) } catch let error as KeycloakDialogError { @@ -1193,7 +1241,7 @@ actor KeycloakManager: NSObject { guard currentFailedAttempts < self.maxFailCount else { currentlySyncingOwnedIdentities.remove(ownedCryptoId) - assertionFailure("Unexpected error") + //assertionFailure("Unexpected error. This also happens when the keycloak cannot be reached. When testing this scenario, this line can be commented out.") return } @@ -1231,7 +1279,7 @@ actor KeycloakManager: NSObject { // We use the core details from the server, but keep the local photo URL let updatedIdentityDetails = ObvIdentityDetails(coreDetails: coreDetailsOnServer, photoURL: obvOwnedIdentity.currentIdentityDetails.photoURL) do { - try obvEngine.updatePublishedIdentityDetailsOfOwnedIdentity(with: ownedCryptoId, with: updatedIdentityDetails) + try await obvEngine.updatePublishedIdentityDetailsOfOwnedIdentity(with: ownedCryptoId, with: updatedIdentityDetails) } catch { os_log("🧥 Could not updated published identity details of owned identity: %{public}@", log: KeycloakManager.log, type: .fault, error.localizedDescription) assertionFailure() @@ -1267,7 +1315,9 @@ actor KeycloakManager: NSObject { authState.isAuthorized, let (accessToken, _) = try? await authState.performAction(), let accessToken = accessToken else { + do { + ObvDisplayableLogs.shared.log("🧥[OpenKeycloakAuthentication][1] \(String(describing: obvKeycloakState.rawAuthState))") try await openKeycloakAuthenticationRequiredTokenExpired(obvKeycloakState: obvKeycloakState, ownedCryptoId: ownedCryptoId) } catch let error as KeycloakDialogError { switch error { @@ -1276,9 +1326,12 @@ actor KeycloakManager: NSObject { case .keycloakManagerError(let error): throw GetObvKeycloakStateError.unkownError(error) } + } catch { - assertionFailure("Unexpected error") + + //assertionFailure("Unexpected error. This also happens when the keycloak cannot be reached. When testing this scenario, this line can be commented out.") throw GetObvKeycloakStateError.unkownError(error) + } guard failedAttempts < maxFailCount else { @@ -1308,21 +1361,8 @@ actor KeycloakManager: NSObject { private func getJkws(url: URL) async throws -> Data { os_log("🧥 Call to getJkws", log: KeycloakManager.log, type: .info) - if #available(iOS 15, *) { - let (data, _) = try await URLSession.shared.data(from: url) - return data - } else { - return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in - let task = URLSession.shared.dataTask(with: url) { (data, response, error) in - if let data = data { - continuation.resume(returning: data) - } else { - continuation.resume(throwing: error ?? KeycloakManager.makeError(message: "No data received")) - } - } - task.resume() - } - } + let (data, _) = try await URLSession.shared.data(from: url) + return data } @@ -1619,6 +1659,11 @@ extension KeycloakManager { // Before authenticating, we test whether we have been revoked by the keycloak server guard let selfRevocationTestNonceFromEngine = try obvEngine.getOwnedIdentityKeycloakSelfRevocationTestNonce(ownedCryptoId: ownedCryptoId) else { + + // If reach this point, we make sure we can reach the keycloak server. To so, we perform a selfRevocationTest with a empty nonce. + // If this test throws, the user is not prompted to authenticate. + _ = try await selfRevocationTest(serverURL: serverURL, selfRevocationTestNonce: "") + // If we reach this point, we have no selfRevocationTestNonceFromEngine, we can immediately prompt for authentication try await openKeycloakAuthenticationRequired(serverURL: serverURL, clientId: clientId, clientSecret: clientSecret, ownedCryptoId: ownedCryptoId, title: title, message: message) return @@ -1631,7 +1676,7 @@ extension KeycloakManager { // We unbind it at the engine level and display an alert to the user setLastSynchronizationDate(forOwnedIdentity: ownedCryptoId, to: nil) do { - try await obvEngine.unbindOwnedIdentityFromKeycloakServer(ownedCryptoId: ownedCryptoId) + try await obvEngine.unbindOwnedIdentityFromKeycloak(ownedCryptoId: ownedCryptoId) try await openAppDialogKeycloakIdentityRevoked() } catch { os_log("Could not unbind revoked owned identity: %{public}@", log: KeycloakManager.log, type: .fault, error.localizedDescription) @@ -1675,13 +1720,18 @@ extension KeycloakManager { os_log("🧥 Call to openKeycloakAuthenticationRequired", log: KeycloakManager.log, type: .info) assert(Thread.isMainThread) + os_log("🧥 In openKeycloakAuthenticationRequired: Will request keycloakSceneDelegate", log: KeycloakManager.log, type: .debug) guard let keycloakSceneDelegate = await keycloakSceneDelegate else { + os_log("🧥 In openKeycloakAuthenticationRequired: could not get keycloakSceneDelegate", log: KeycloakManager.log, type: .error) assertionFailure() throw Self.makeError(message: "The keycloakSceneDelegate is not set") } - + os_log("🧥 In openKeycloakAuthenticationRequired: Did obtain keycloakSceneDelegate", log: KeycloakManager.log, type: .debug) + + os_log("🧥 In openKeycloakAuthenticationRequired: Will request view controller for presenting", log: KeycloakManager.log, type: .debug) let viewController = try await keycloakSceneDelegate.requestViewControllerForPresenting() - + os_log("🧥 In openKeycloakAuthenticationRequired: Did obtain view controller for presenting", log: KeycloakManager.log, type: .debug) + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in assert(Thread.isMainThread) @@ -1711,6 +1761,7 @@ extension KeycloakManager { menu.addAction(authenticateAction) menu.addAction(cancelAction) + os_log("🧥 In openKeycloakAuthenticationRequired: Will present alert", log: KeycloakManager.log, type: .debug) viewController.present(menu, animated: true, completion: nil) } @@ -1862,54 +1913,6 @@ extension KeycloakManager { } - /// Throws a KeycloakDialogError - @MainActor - func openAddContact(userDetail: ObvKeycloakUserDetails, ownedCryptoId: ObvCryptoId) async throws { - os_log("🧥 Call to openAddContact", log: KeycloakManager.log, type: .info) - - assert(Thread.isMainThread) - - guard let identity = userDetail.identity else { return } - - guard let keycloakSceneDelegate = await keycloakSceneDelegate else { - assertionFailure() - throw Self.makeError(message: "The keycloakSceneDelegate is not set") - } - - let viewController = try await keycloakSceneDelegate.requestViewControllerForPresenting() - - try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in - - assert(Thread.isMainThread) - - let menu = UIAlertController(title: Strings.AddContactTitle, message: Strings.AddContactMessage(userDetail.firstNameAndLastName), preferredStyle: UIDevice.current.actionSheetIfPhoneAndAlertOtherwise) - - let addContactAction = UIAlertAction(title: Strings.AddContactButton, style: .default) { _ in - Task { [weak self] in - guard let _self = self else { return } - do { - try await _self.addContact(ownedCryptoId: ownedCryptoId, userId: userDetail.id, userIdentity: identity) - continuation.resume() - } catch { - continuation.resume(throwing: KeycloakDialogError.keycloakManagerError(error)) - } - } - } - - let cancelAction = UIAlertAction(title: CommonString.Word.Cancel, style: .cancel) { _ in - continuation.resume(throwing: KeycloakDialogError.userHasCancelled) - } - - menu.addAction(addContactAction) - menu.addAction(cancelAction) - - viewController.present(menu, animated: true, completion: nil) - - } - - } - - /// This method is called each time the user re-authenticates succesfully. It saves the fresh jwks and auth state both in cache and within the engine. /// It also forces a new sychronization with the keycloak server. private func reAuthenticationSuccessful(ownedCryptoId: ObvCryptoId, jwks: ObvJWKSet, authState: OIDAuthState) { @@ -2087,3 +2090,9 @@ extension OIDAuthState: ObvErrorMaker { } } + + +enum KeycloakAddContactInfo { + case userId(userId: String) + case signedDetails(signedDetails: SignedObvKeycloakUserDetails) +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/LocalAuthenticationManager/LocalAuthenticationManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/LocalAuthenticationManager/LocalAuthenticationManager.swift index 54239b27..7b28527d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/LocalAuthenticationManager/LocalAuthenticationManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/LocalAuthenticationManager/LocalAuthenticationManager.swift @@ -23,6 +23,8 @@ import ObvCrypto import LocalAuthentication import UIKit import ObvUICoreData +import ObvSettings + enum VerifyPasscodeResult { case valid @@ -46,14 +48,14 @@ protocol VerifyPasscodeDelegate: AnyObject { protocol CreatePasscodeDelegate: AnyObject { func clearPasscode() async func savePasscode(_ passcode: String, passcodeIsPassword: Bool) async throws - func requestCustomPasscode(viewController: UIViewController) async -> LocalAuthenticationResult + func requestCustomPasscode(customPasscodePresentingViewController: UIViewController) async -> LocalAuthenticationResult } protocol LocalAuthenticationDelegate: AnyObject { var remainingLockoutTime: TimeInterval? { get async } var isLockedOut: Bool { get async } - func performLocalAuthentication(viewController: UIViewController, uptimeAtTheTimeOfChangeoverToNotActiveState: TimeInterval?, localizedReason: String) async -> LocalAuthenticationResult + func performLocalAuthentication(customPasscodePresentingViewController: UIViewController, uptimeAtTheTimeOfChangeoverToNotActiveState: TimeInterval?, localizedReason: String, policy: ObvLocalAuthenticationPolicy) async -> LocalAuthenticationResult } @@ -122,8 +124,13 @@ final actor LocalAuthenticationManager: LocalAuthenticationDelegate, VerifyPassc ObvMessengerSettings.Privacy.passcodeIsPassword = passcodeIsPassword } - func performLocalAuthentication(viewController: UIViewController, uptimeAtTheTimeOfChangeoverToNotActiveState: TimeInterval?, localizedReason: String) async -> LocalAuthenticationResult { - let result = await self.internalPerformLocalAuthentication(viewController: viewController, uptimeAtTheTimeOfChangeoverToNotActiveState: uptimeAtTheTimeOfChangeoverToNotActiveState, localizedReason: localizedReason) + + func performLocalAuthentication(customPasscodePresentingViewController: UIViewController, uptimeAtTheTimeOfChangeoverToNotActiveState: TimeInterval?, localizedReason: String, policy: ObvLocalAuthenticationPolicy) async -> LocalAuthenticationResult { + let result = await self.internalPerformLocalAuthentication( + customPasscodePresentingViewController: customPasscodePresentingViewController, + uptimeAtTheTimeOfChangeoverToNotActiveState: uptimeAtTheTimeOfChangeoverToNotActiveState, + localizedReason: localizedReason, + policy: policy) switch result { case .authenticated: ObvMessengerSettings.Privacy.userHasBeenLockedOut = false @@ -133,7 +140,8 @@ final actor LocalAuthenticationManager: LocalAuthenticationDelegate, VerifyPassc return result } - private func internalPerformLocalAuthentication(viewController: UIViewController, uptimeAtTheTimeOfChangeoverToNotActiveState: TimeInterval?, localizedReason: String) async -> LocalAuthenticationResult { + + private func internalPerformLocalAuthentication(customPasscodePresentingViewController: UIViewController, uptimeAtTheTimeOfChangeoverToNotActiveState: TimeInterval?, localizedReason: String, policy: ObvLocalAuthenticationPolicy) async -> LocalAuthenticationResult { guard !isLockedOut else { return .lockedOut } @@ -151,7 +159,8 @@ final actor LocalAuthenticationManager: LocalAuthenticationDelegate, VerifyPassc guard !userIsAlreadyAuthenticated else { return .authenticated(authenticationWasPerformed: false) } - switch ObvMessengerSettings.Privacy.localAuthenticationPolicy { + // switch ObvMessengerSettings.Privacy.localAuthenticationPolicy { + switch policy { case .none: return .authenticated(authenticationWasPerformed: false) case .deviceOwnerAuthentication: @@ -173,23 +182,27 @@ final actor LocalAuthenticationManager: LocalAuthenticationDelegate, VerifyPassc case .biometricsWithCustomPasscodeFallback: let laContext = LAContext() var error: NSError? + debugPrint("🔐 LocalAuthenticationManager laContext.evaluatePolicy") guard laContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else { - return await requestCustomPasscode(viewController: viewController) + return await requestCustomPasscode(customPasscodePresentingViewController: customPasscodePresentingViewController) } do { + debugPrint("🔐 LocalAuthenticationManager laContext.evaluatePolicy") try await laContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: localizedReason) return .authenticated(authenticationWasPerformed: true) } catch { - return await requestCustomPasscode(viewController: viewController) + return await requestCustomPasscode(customPasscodePresentingViewController: customPasscodePresentingViewController) } case .customPasscode: - return await requestCustomPasscode(viewController: viewController) + return await requestCustomPasscode(customPasscodePresentingViewController: customPasscodePresentingViewController) } } - func requestCustomPasscode(viewController: UIViewController) async -> LocalAuthenticationResult { + func requestCustomPasscode(customPasscodePresentingViewController: UIViewController) async -> LocalAuthenticationResult { let passcodeViewController = await VerifyPasscodeViewController(verifyPasscodeDelegate: self) - await viewController.present(passcodeViewController, animated: true) + // Since we are about to present the VerifyPasscodeViewController, we dismiss any presented view controller + await customPasscodePresentingViewController.presentedViewController?.dismiss(animated: false) + await customPasscodePresentingViewController.present(passcodeViewController, animated: true) switch await passcodeViewController.getResult() { case .succeed: return .authenticated(authenticationWasPerformed: true) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/ProfilePictureManager/ProfilePictureManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/ProfilePictureManager/ProfilePictureManager.swift index 854afc05..327eb6bd 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/ProfilePictureManager/ProfilePictureManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/ProfilePictureManager/ProfilePictureManager.swift @@ -22,6 +22,7 @@ import CoreData import UIKit import os.log import ObvUICoreData +import ObvSettings final class ProfilePictureManager { @@ -58,6 +59,9 @@ final class ProfilePictureManager { try! FileManager.default.createDirectory(at: profilePicturesCacheDirectory, withIntermediateDirectories: true, attributes: nil) } + + /// Legacy method. We should move away from the pattern where this `ProfilePictureManager` is used to save files. + /// For example, we chose a different approach in the new view controller allowing to choose a custom contact photo (where we only manipulate an UIImage, until the user requests a save). private func saveImage(_ image: UIImage, into url: URL) -> URL? { guard let jpegData = image.jpegData(compressionQuality: 0.75) else { assertionFailure() @@ -139,7 +143,7 @@ final class ProfilePictureManager { } private func getAllCustomPhotoURLOnDisk() throws -> Set { - Set(try FileManager.default.contentsOfDirectory(at: self.customContactProfilePicturesDirectory, includingPropertiesForKeys: nil)) + return Set(try FileManager.default.contentsOfDirectory(at: self.customContactProfilePicturesDirectory, includingPropertiesForKeys: nil).map({ $0.resolvingSymlinksInPath() })) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/SnackBarManager/OlvidSnackBarCategory.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/SnackBarManager/OlvidSnackBarCategory.swift index e637d593..8090d668 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/SnackBarManager/OlvidSnackBarCategory.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/SnackBarManager/OlvidSnackBarCategory.swift @@ -32,6 +32,7 @@ enum OlvidSnackBarCategory: CaseIterable { case upgradeIOS case newerAppVersionAvailable case lastUploadBackupHasFailed + case ownedIdentityIsInactive static func removeAllLastDisplayDate() { for category in OlvidSnackBarCategory.allCases { @@ -76,6 +77,8 @@ enum OlvidSnackBarCategory: CaseIterable { return NSLocalizedString("SNACK_BAR_BODY_NEW_APP_VERSION_AVAILABLE", comment: "") case .lastUploadBackupHasFailed: return NSLocalizedString("SNACK_BAR_BODY_LAST_UPLOAD_BACKUP_HAS_FAILED", comment: "") + case .ownedIdentityIsInactive: + return NSLocalizedString("SNACK_BAR_BODY_INACTIVE_PROFILE", comment: "") } } @@ -103,6 +106,8 @@ enum OlvidSnackBarCategory: CaseIterable { return NSLocalizedString("SNACK_BAR_BUTTON_TITLE_NEW_APP_VERSION_AVAILABLE", comment: "") case .lastUploadBackupHasFailed: return NSLocalizedString("SNACK_BAR_TITLE_LAST_UPLOAD_BACKUP_HAS_FAILED", comment: "") + case .ownedIdentityIsInactive: + return NSLocalizedString("SNACK_BAR_BUTTON_TITLE_INACTIVE_PROFILE", comment: "") } } @@ -124,6 +129,8 @@ enum OlvidSnackBarCategory: CaseIterable { return "io.olvid.snackBarCoordinator.lastDisplayDate.newerAppVersionAvailable" case .lastUploadBackupHasFailed: return "io.olvid.snackBarCoordinator.lastDisplayDate.lastUploadBackupHasFailed" + case .ownedIdentityIsInactive: + return "io.olvid.snackBarCoordinator.lastDisplayDate.ownedIdentityIsInactive" } } @@ -139,6 +146,8 @@ enum OlvidSnackBarCategory: CaseIterable { return .forwardFill case .lastUploadBackupHasFailed: return .icloud() + case .ownedIdentityIsInactive: + return .exclamationmarkCircle } } @@ -166,6 +175,8 @@ enum OlvidSnackBarCategory: CaseIterable { return NSLocalizedString("SNACK_BAR_DETAILS_TITLE_NEW_APP_VERSION_AVAILABLE", comment: "") case .lastUploadBackupHasFailed: return NSLocalizedString("SNACK_BAR_DETAILS_TITLE_LAST_UPLOAD_BACKUP_HAS_FAILED", comment: "") + case .ownedIdentityIsInactive: + return NSLocalizedString("SNACK_BAR_DETAILS_TITLE_INACTIVE_PROFILE", comment: "") } } @@ -193,6 +204,8 @@ enum OlvidSnackBarCategory: CaseIterable { return NSLocalizedString("SNACK_BAR_DETAILS_BODY_NEW_APP_VERSION_AVAILABLE", comment: "") case .lastUploadBackupHasFailed: return NSLocalizedString("SNACK_BAR_DETAILS_BODY_LAST_UPLOAD_BACKUP_HAS_FAILED", comment: "") + case .ownedIdentityIsInactive: + return NSLocalizedString("SNACK_BAR_DETAILS_BODY_INACTIVE_PROFILE", comment: "") } } @@ -214,6 +227,8 @@ enum OlvidSnackBarCategory: CaseIterable { return NSLocalizedString("GO_TO_APP_STORE_BUTTON_TITLE", comment: "") case .lastUploadBackupHasFailed: return NSLocalizedString("CONFIGURE_BACKUPS_BUTTON_TITLE", comment: "") + case .ownedIdentityIsInactive: + return NSLocalizedString("REACTIVATE_PROFILE_BUTTON_TITLE", comment: "") } } @@ -235,6 +250,8 @@ enum OlvidSnackBarCategory: CaseIterable { return NSLocalizedString("REMIND_ME_LATER", comment: "") case .lastUploadBackupHasFailed: return NSLocalizedString("REMIND_ME_LATER", comment: "") + case .ownedIdentityIsInactive: + return NSLocalizedString("MAYBE_ME_LATER_BUTTON_TITLE", comment: "") } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/SnackBarManager/SnackBarManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/SnackBarManager/SnackBarManager.swift index fe0dfecc..7465c89c 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/SnackBarManager/SnackBarManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/SnackBarManager/SnackBarManager.swift @@ -24,6 +24,7 @@ import UIKit import AVFAudio import ObvEngine import ObvUICoreData +import ObvSettings actor SnackBarManager { @@ -63,7 +64,31 @@ actor SnackBarManager { await listenToUIApplicationNotifications() observationTokens.append(contentsOf: [ ObvMessengerInternalNotification.observeMetaFlowControllerDidSwitchToOwnedIdentity { newOwnedCryptoId in - Task { [weak self] in await self?.replaceCurrentCryptoId(by: newOwnedCryptoId) } + Task { [weak self] in + await self?.removeAllAlreadyCheckedIdentities() + await self?.replaceCurrentCryptoId(by: newOwnedCryptoId) + if let currentCryptoId = await self?.currentCryptoId { + await self?.determineSnackBarToDisplay(for: currentCryptoId) + } + } + }, + ObvMessengerCoreDataNotification.observeOwnedIdentityWasReactivated { _ in + Task { [weak self] in + await self?.removeAllAlreadyCheckedIdentities() + if let currentCryptoId = await self?.currentCryptoId { + // Since a backup is not linked to a specific owned identity, we use the current one for the snack bar + await self?.determineSnackBarToDisplay(for: currentCryptoId) + } + } + }, + ObvMessengerCoreDataNotification.observeOwnedIdentityWasDeactivated { _ in + Task { [weak self] in + await self?.removeAllAlreadyCheckedIdentities() + if let currentCryptoId = await self?.currentCryptoId { + // Since a backup is not linked to a specific owned identity, we use the current one for the snack bar + await self?.determineSnackBarToDisplay(for: currentCryptoId) + } + } }, ObvMessengerInternalNotification.observeUserDismissedSnackBarForLater { [weak self] ownedCryptoId, snackBarCategory in Task { [weak self] in await self?.processUserDismissedSnackBarForLater(ownedCryptoId: ownedCryptoId, snackBarCategory: snackBarCategory) } @@ -198,6 +223,7 @@ actor SnackBarManager { let obvEngine = self.obvEngine var ownedIdentityHasAtLeastOneContact: Bool = false + var ownedIdentityIsActive = true ObvStack.shared.performBackgroundTaskAndWait { context in do { guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: currentCryptoId, within: context) else { @@ -206,12 +232,22 @@ actor SnackBarManager { } ownedIdentityHasAtLeastOneContact = !ownedIdentity.contacts.isEmpty + ownedIdentityIsActive = ownedIdentity.isActive } catch { os_log("SnackBarManager error: %{public}@", log: Self.log, type: .fault, error.localizedDescription) assertionFailure() return } } + + // If the owned identity (profile) is inactive, inform the user + + guard ownedIdentityIsActive else { + ObvMessengerInternalNotification.olvidSnackBarShouldBeShown(ownedCryptoId: currentCryptoId, snackBarCategory: OlvidSnackBarCategory.ownedIdentityIsInactive) + .postOnDispatchQueue() + return + } + // We never display a snackbar if the owned identity has no contact diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/SubscriptionManager/Operations/ProcessPurchasedOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/SubscriptionManager/Operations/ProcessPurchasedOperation.swift deleted file mode 100644 index 141d2823..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/SubscriptionManager/Operations/ProcessPurchasedOperation.swift +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import StoreKit -import os.log -import OlvidUtils - -final class ProcessPurchasedOperation: OperationWithSpecificReasonForCancel { - - private let transaction: SKPaymentTransaction - private weak var delegate: PaymentOperationsDelegate? - - - init(transaction: SKPaymentTransaction, delegate: PaymentOperationsDelegate) { - self.transaction = transaction - self.delegate = delegate - super.init() - } - - override func main() { - - guard let transactionIdentifier = transaction.transactionIdentifier else { return cancel(withReason: .paymentTransactionHasNoIdentifier) } - guard let appStoreReceiptURL = Bundle.main.appStoreReceiptURL else { return cancel(withReason: .noAppStoreReceiptURL) } - guard FileManager.default.fileExists(atPath: appStoreReceiptURL.path) else { return cancel(withReason: .noFileAtAppStoreReceiptURL) } - let rawReceiptData: Data - do { - rawReceiptData = try Data(contentsOf: appStoreReceiptURL, options: .alwaysMapped) - } catch { - return cancel(withReason: .couldNotReadReceipt(error: error)) - } - let receiptData = rawReceiptData.base64EncodedString(options: []) - delegate?.processAppStorePurchase(receiptData: receiptData, transactionIdentifier: transactionIdentifier, transaction: transaction) - } - -} - -enum ProcessPurchasedOperationReasonForCancel: LocalizedErrorWithLogType { - case noAppStoreReceiptURL - case noFileAtAppStoreReceiptURL - case couldNotReadReceipt(error: Error) - case paymentTransactionHasNoIdentifier - - var logType: OSLogType { - switch self { - case .noAppStoreReceiptURL, .noFileAtAppStoreReceiptURL, .couldNotReadReceipt, .paymentTransactionHasNoIdentifier: - return .fault - } - } - - var errorDescription: String? { - switch self { - case .noAppStoreReceiptURL: return "The AppStoreReceiptURL is nil" - case .noFileAtAppStoreReceiptURL: return "Could not find receipt file at the AppStoreReceiptURL" - case .couldNotReadReceipt(error: let error): return "Could not read receipt data: \(error.localizedDescription)" - case .paymentTransactionHasNoIdentifier: return "The Payment transaction has no identifier, which is unexpected for a purchase" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/SubscriptionManager/SubscriptionManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/SubscriptionManager/SubscriptionManager.swift index dfee2734..03963b3b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/SubscriptionManager/SubscriptionManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/SubscriptionManager/SubscriptionManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,356 +25,192 @@ import ObvTypes import ObvUICoreData -final class SubscriptionManager: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate { +final class SubscriptionManager: NSObject, StoreKitDelegate { private static let allProductIdentifiers = Set(["io.olvid.premium_2020_monthly"]) private let obvEngine: ObvEngine - private var notificationTokens = [NSObjectProtocol]() private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: SubscriptionManager.self)) - private var currentProductRequest: SKProductsRequest? - private var currentPurchaseTransactionsSentToEngine = [String: PurchaseTransactionForToEngine]() - private var numberOfTransactionsToRestore = 0 - private let internalQueue: OperationQueue = { - let queue = OperationQueue() - queue.maxConcurrentOperationCount = 1 - queue.name = "SubscriptionManager internal queue" - return queue - }() + private var updates: Task? = nil + init(obvEngine: ObvEngine) { self.obvEngine = obvEngine super.init() - observeNotifications() } deinit { - notificationTokens.forEach { NotificationCenter.default.removeObserver($0) } + updates?.cancel() } - - struct PurchaseTransactionForToEngine { - - let transactionIdentifier: String - let transaction: SKPaymentTransaction - var ownedCryptoIds: Set - - mutating func wasProcessedByEngineForOwnedCryptoId(_ ownedCryptoId: ObvCryptoId) { - ownedCryptoIds.remove(ownedCryptoId) - } - - var wasProcessedByEngineForAllOwnedIdentities: Bool { - ownedCryptoIds.isEmpty - } - - } - - private func observeNotifications() { - notificationTokens.append(contentsOf: [ - // ObvMessengerInternalNotification - ObvMessengerInternalNotification.observeUserRequestedAPIKeyStatus(queue: internalQueue) { [weak self] (ownedCryptoId, apiKey) in - self?.obvEngine.queryAPIKeyStatus(for: ownedCryptoId, apiKey: apiKey) - }, - ObvMessengerInternalNotification.observeUserRequestedNewAPIKeyActivation(queue: internalQueue) { [weak self] (ownedCryptoId, apiKey) in - try? self?.obvEngine.setAPIKey(for: ownedCryptoId, apiKey: apiKey) - }, - - // SubscriptionNotification - SubscriptionNotification.observeUserRequestedListOfSKProducts { [weak self] in - self?.processUserRequestedListOfSKProducts() - }, - SubscriptionNotification.observeUserRequestedToBuySKProduct { [weak self] (product) in - self?.processUserRequestedToBuySKProduct(product: product) - }, - SubscriptionNotification.observeUserRequestedToRestoreAppStorePurchases { [weak self] in - self?.processUserRequestedToRestoreAppStorePurchasesNotification() - }, - - // ObvEngineNotificationNew - ObvEngineNotificationNew.observeAppStoreReceiptVerificationSucceededAndSubscriptionIsValid(within: NotificationCenter.default, queue: internalQueue) { [weak self] (ownedIdentity, transactionIdentifier) in - self?.processAppStoreReceiptVerificationSucceededAndSubscriptionIsValidNotification(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier) - }, - ObvEngineNotificationNew.observeAppStoreReceiptVerificationFailed(within: NotificationCenter.default, queue: internalQueue) { [weak self] (ownedIdentity, transactionIdentifier) in - self?.processAppStoreReceiptVerificationFailedNotification(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier) - }, - ObvEngineNotificationNew.observeAppStoreReceiptVerificationSucceededButSubscriptionIsExpired(within: NotificationCenter.default, queue: internalQueue) { [weak self] (ownedIdentity, transactionIdentifier) in - self?.processAppStoreReceiptVerificationSucceededButSubscriptionIsExpiredNotification(ownedIdentity: ownedIdentity, transactionIdentifier: transactionIdentifier) - }, - ]) - } - + // Called at an appropriate time by the AppManagersHolder func listenToSKPaymentTransactions() { guard SKPaymentQueue.canMakePayments() else { return } - SKPaymentQueue.default().add(self) - notificationTokens.append(NotificationCenter.default.addObserver(forName: UIApplication.willTerminateNotification, object: nil, queue: nil, using: { (_) in - DispatchQueue.main.async { - SKPaymentQueue.default().remove(self) - } - })) + self.updates = listenForTransactions() } - enum RequestedListOfSKProductsError: Error { - case userCannotMakePayments + + private func listenForTransactions() -> Task { + return Task(priority: .background) { + for await verificationResult in Transaction.updates { + do { + _ = try await self.handle(updatedTransaction: verificationResult) + } catch { + assertionFailure() + os_log("💰 Could not handle the updated transaction: %{public}@", log: log, type: .fault, error.localizedDescription) + } + } + } } + +} + +// MARK: - StoreKitDelegate + +extension SubscriptionManager { - private func processUserRequestedListOfSKProducts() { - + func userRequestedListOfSKProducts() async throws -> [Product] { + os_log("💰 User requested a list of available SKProducts", log: log, type: .info) guard SKPaymentQueue.canMakePayments() else { os_log("💰 User is *not* allowed to make payments, returning an empty list of SKProducts", log: log, type: .error) - SubscriptionNotification.newListOfSKProducts(result: .failure(.userCannotMakePayments)) - .postOnDispatchQueue() - return + throw ObvError.userCannotMakePayments } - internalQueue.addOperation { [weak self] in - guard self?.currentProductRequest == nil else { return } - self?.currentProductRequest = SKProductsRequest(productIdentifiers: SubscriptionManager.allProductIdentifiers) - self?.currentProductRequest?.delegate = self - self?.currentProductRequest?.start() - } + let storeProducts = try await Product.products(for: SubscriptionManager.allProductIdentifiers) - } - - - private func processUserRequestedToBuySKProduct(product: SKProduct) { - let log = self.log - os_log("💰 User requested purchase of the SKProduct with identifier %{public}@", log: log, type: .info, product.productIdentifier) - internalQueue.addOperation { - let payment = SKMutablePayment(product: product) - payment.quantity = 1 - os_log("💰 Adding the payment for SKProduct with identifier %{public}@ to the payment queue", log: log, type: .info, product.productIdentifier) - SKPaymentQueue.default().add(payment) - } - } - - - private func processUserRequestedToRestoreAppStorePurchasesNotification() { - os_log("💰 User requested to restore AppStore purchases", log: log, type: .info) - internalQueue.addOperation { [weak self] in - self?.numberOfTransactionsToRestore = 0 - let refresh = SKReceiptRefreshRequest() - refresh.delegate = self - refresh.start() - } - } - -} - + return storeProducts -// MARK: - Implementing SKPaymentTransactionObserver + } -extension SubscriptionManager { - func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { + func userWantsToBuy(_ product: Product) async throws -> StoreKitDelegatePurchaseResult { - os_log("💰 Receiving an updated transactions callback with %d transactions", log: log, type: .info, transactions.count) + let log = self.log + os_log("💰 User requested purchase of the SKProduct with identifier %{public}@", log: log, type: .info, product.id) - var originalTransactionsToRestore = [String: SKPaymentTransaction]() + // Make sure the user has at least one active (non-hidden) identity - for transaction in transactions { - - os_log("💰 Updated transaction state is %{public}@", log: log, type: .info, transaction.transactionState.debugDescription) - - switch transaction.transactionState { - case .purchasing: - // Nothing to do - break - case .purchased: - let op = ProcessPurchasedOperation(transaction: transaction, delegate: self) - internalQueue.addOperation(op) - internalQueue.waitUntilAllOperationsAreFinished() - op.logReasonIfCancelled(log: log) - case .restored: - numberOfTransactionsToRestore += 1 - os_log("💰 Transaction to restore identified by %{public}@, transactionDate: %{public}@", log: log, type: .info, transaction.transactionIdentifier ?? "None", transaction.transactionDate?.debugDescription ?? "None") - os_log("💰 Transaction to restore identified by %{public}@, original: %{public}@", log: log, type: .info, transaction.transactionIdentifier ?? "None", transaction.original?.debugDescription ?? "None") - if let original = transaction.original, let transactionIdentifier = original.transactionIdentifier { - os_log("💰 Transaction to restore identified by %{public}@, original.transactionDate: %{public}@", log: log, type: .info, original.transactionIdentifier ?? "None", original.transactionDate?.debugDescription ?? "None") - originalTransactionsToRestore[transactionIdentifier] = original - } else { - os_log("💰 Could not find the original transaction!") - } - queue.finishTransaction(transaction) - case .failed: - guard let error = transaction.error as? SKError else { assertionFailure(); return } - switch error.code { - case .paymentCancelled: - SubscriptionNotification.userDecidedToCancelToTheSKProductPurchase - .postOnDispatchQueue() - default: - SubscriptionNotification.skProductPurchaseFailed(error: error) - .postOnDispatchQueue() - } - case .deferred: - SubscriptionNotification.skProductPurchaseWasDeferred - .postOnDispatchQueue() - @unknown default: - assertionFailure() + do { + guard try await userHasAtLeastOneActiveNonKeycloakNonHiddenIdentity() else { + os_log("💰 User requested a purchase but has no active non-hidden non-keycloak identity. Aborting.", log: log, type: .error) + throw ObvError.userHasNoActiveIdentity } - + } catch { + assertionFailure() + os_log("💰 User requested a purchase but we could not check if she has at least one active non-hidden non-keycloak identity. Aborting", log: log, type: .error) + throw ObvError.userHasNoActiveIdentity } - if !originalTransactionsToRestore.isEmpty { - os_log("💰 We have found %d candidate(s) for the restore process. We process them now", log: log, type: .info, originalTransactionsToRestore.count) - for original in originalTransactionsToRestore.values { - let op = ProcessPurchasedOperation(transaction: original, delegate: self) - internalQueue.addOperation(op) - internalQueue.waitUntilAllOperationsAreFinished() - op.logReasonIfCancelled(log: log) - } - } - } - - - private func processAppStoreReceiptVerificationSucceededAndSubscriptionIsValidNotification(ownedIdentity: ObvCryptoId, transactionIdentifier: String) { - assert(OperationQueue.current == internalQueue) - assert(currentPurchaseTransactionsSentToEngine.keys.contains(transactionIdentifier)) - os_log("💰 The AppStore receipt was successfully verified by Olvid's server for the transaction identifier by %{public}@ for identity %{public}@", log: log, type: .info, transactionIdentifier, ownedIdentity.debugDescription) - defer { - if currentPurchaseTransactionsSentToEngine.isEmpty { - SubscriptionNotification.allPurchaseTransactionsSentToEngineWereProcessed - .postOnDispatchQueue() - } - } - guard var transactionSentToEngine = currentPurchaseTransactionsSentToEngine.removeValue(forKey: transactionIdentifier) else { - os_log("💰 Could not find the transaction with identifier %{public}@", log: log, type: .fault, transactionIdentifier) + // Proceed with the purchase + + let result = try await product.purchase() + + switch result { + + case .success(let verificationResult): + + return try await handle(updatedTransaction: verificationResult) + + case .userCancelled: + // No need to throw + return .userCancelled + + case .pending: + // The purchase requires action from the customer (e.g., parents approval). + // If the transaction completes, it's available through Transaction.updates. + // To listen to these updates, we iterate over `SubscriptionManager.listenForTransactions()`. + return .pending + + @unknown default: assertionFailure() - return - } - transactionSentToEngine.wasProcessedByEngineForOwnedCryptoId(ownedIdentity) - if transactionSentToEngine.wasProcessedByEngineForAllOwnedIdentities { - os_log("💰 Finishing the transaction with identifier %{public}@", log: log, type: .info, transactionIdentifier) - SKPaymentQueue.default().finishTransaction(transactionSentToEngine.transaction) - } else { - currentPurchaseTransactionsSentToEngine[transactionIdentifier] = transactionSentToEngine + return .userCancelled } + } - - /// This happens when the server fails to process the receipt (most probably because it is invalid, or because of a bug). - /// We do *not* finish the transaction in this case, but display an error message to the user, inviting her to cancel her subscription - /// if the problem persists. - private func processAppStoreReceiptVerificationFailedNotification(ownedIdentity: ObvCryptoId, transactionIdentifier: String) { - assert(OperationQueue.current == internalQueue) - os_log("💰 The AppStore receipt with identifier by %{public}@ verification failed for owned identity %{public}@", log: log, type: .info, transactionIdentifier, ownedIdentity.debugDescription) - // If the verification fails for one identity, we consider it fails for all identities - _ = currentPurchaseTransactionsSentToEngine.removeValue(forKey: transactionIdentifier) - if currentPurchaseTransactionsSentToEngine.isEmpty { - SubscriptionNotification.allPurchaseTransactionsSentToEngineWereProcessed - .postOnDispatchQueue() - } - } - - private func processAppStoreReceiptVerificationSucceededButSubscriptionIsExpiredNotification(ownedIdentity: ObvCryptoId, transactionIdentifier: String) { - os_log("💰 The AppStore receipt with identifier by %{public}@ verification succeed but the subscription has expired for owned identity %{public}@", log: log, type: .info, transactionIdentifier, ownedIdentity.debugDescription) - defer { - if currentPurchaseTransactionsSentToEngine.isEmpty { - SubscriptionNotification.allPurchaseTransactionsSentToEngineWereProcessed - .postOnDispatchQueue() - } - } - guard var transactionSentToEngine = currentPurchaseTransactionsSentToEngine.removeValue(forKey: transactionIdentifier) else { - os_log("💰 Could not find the transaction with identifier %{public}@", log: log, type: .fault, transactionIdentifier) - assertionFailure() - return - } - transactionSentToEngine.wasProcessedByEngineForOwnedCryptoId(ownedIdentity) - if transactionSentToEngine.wasProcessedByEngineForAllOwnedIdentities { - os_log("💰 Finishing the transaction with identifier %{public}@", log: log, type: .info, transactionIdentifier) - SKPaymentQueue.default().finishTransaction(transactionSentToEngine.transaction) + /// Called either when the user makes a purchase in the app, or when a transaction is obtained in `SubscriptionManager.listenForTransactions()`. + private func handle(updatedTransaction verificationResult: VerificationResult) async throws -> StoreKitDelegatePurchaseResult { + + let (transaction, signedAppStoreTransactionAsJWS) = try checkVerified(verificationResult) + + let results = try await obvEngine.processAppStorePurchase(signedAppStoreTransactionAsJWS: signedAppStoreTransactionAsJWS, transactionIdentifier: transaction.id) + + await transaction.finish() + + // Since the same receipt data was used for all appropriate owned identities, we expect all results to be the same. Yet, we have to take into account exceptional circumstances ;-) + // So we globally fail if any of the results is distinct from `.succeededAndSubscriptionIsValid`. + + if results.values.allSatisfy({ $0 == .succeededAndSubscriptionIsValid }) { + + os_log("💰 The AppStore receipt was successfully verified by Olvid's server", log: log, type: .info) + return .purchaseSucceeded(serverVerificationResult: .succeededAndSubscriptionIsValid) + + } else if results.values.first(where: { $0 == .succeededButSubscriptionIsExpired }) != nil { + + os_log("💰 The AppStore receipt verification succeeded but the subscription has expired", log: log, type: .info) + return .purchaseSucceeded(serverVerificationResult: .succeededButSubscriptionIsExpired) + } else { - currentPurchaseTransactionsSentToEngine[transactionIdentifier] = transactionSentToEngine + + os_log("💰 The AppStore receipt verification failed", log: log, type: .error) + return .purchaseSucceeded(serverVerificationResult: .failed) + } - } - -} - -// MARK: - PaymentOperationsDelegate and its implementation -protocol PaymentOperationsDelegate: AnyObject { - func processAppStorePurchase(receiptData: String, transactionIdentifier: String, transaction: SKPaymentTransaction) -} + } -extension SubscriptionManager: PaymentOperationsDelegate { - func processAppStorePurchase(receiptData: String, transactionIdentifier: String, transaction: SKPaymentTransaction) { - assert(OperationQueue.current == internalQueue) - assert(!currentPurchaseTransactionsSentToEngine.keys.contains(transactionIdentifier)) - os_log("💰 Processing AppStore purchase transaction with identifier %{public}@", log: log, type: .info, transactionIdentifier) - ObvStack.shared.performBackgroundTaskAndWait { (context) in - let ownedCryptoIds: Set - do { - let ownedIdentities = try PersistedObvOwnedIdentity.getAll(within: context) - ownedCryptoIds = Set(ownedIdentities.map({ $0.cryptoId })) - } catch { - assertionFailure(error.localizedDescription) - return - } - let transactionSentToEngine = PurchaseTransactionForToEngine(transactionIdentifier: transactionIdentifier, - transaction: transaction, - ownedCryptoIds: ownedCryptoIds) - currentPurchaseTransactionsSentToEngine[transactionIdentifier] = transactionSentToEngine - - os_log("💰 Sending the receipt data to the engine for verification. Transaction identifier is %{public}@ and it concerns %d identitie(s)", log: log, type: .info, transactionIdentifier, ownedCryptoIds.count) - obvEngine.processAppStorePurchase(for: ownedCryptoIds, receiptData: receiptData, transactionIdentifier: transactionIdentifier) - } + func userWantsToRestorePurchases() async throws { + try await AppStore.sync() } + } -// MARK: - Implementing SKProductsRequestDelegate + +// MARK: - Helpers extension SubscriptionManager { - - func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) { - internalQueue.addOperation { [weak self] in - guard let _self = self else { return } - guard _self.currentProductRequest != nil else { assertionFailure(); return } - _self.currentProductRequest = nil - assert(response.invalidProductIdentifiers.isEmpty) - let products = response.products - os_log("💰 New list of SKProduct is available with %d products.", log: _self.log, type: .info, products.count) - SubscriptionNotification.newListOfSKProducts(result: .success(products)) - .postOnDispatchQueue() - } - } - - func requestDidFinish(_ request: SKRequest) { - if request is SKReceiptRefreshRequest { - // The only case when we perform an SKReceiptRefreshRequest is when we want to restore purhcases. We do this now. - SKPaymentQueue.default().restoreCompletedTransactions() + + private func checkVerified(_ result: VerificationResult) throws -> (transaction: Transaction, jwsRepresentation: String) { + switch result { + case .unverified: + throw ObvError.failedVerification + case .verified(let signedType): + let jwsRepresentation = result.jwsRepresentation + return (signedType, jwsRepresentation) } } + - func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) { - os_log("💰 Payment queue restore completed transactions finished", log: log, type: .info) - if numberOfTransactionsToRestore == 0 { - SubscriptionNotification.thereWasNoAppStorePurchaseToRestore - .postOnDispatchQueue() + private func userHasAtLeastOneActiveNonKeycloakNonHiddenIdentity() async throws -> Bool { + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + ObvStack.shared.performBackgroundTask { context in + do { + let count = try PersistedObvOwnedIdentity.countCryptoIdsOfAllActiveNonHiddenNonKeycloakOwnedIdentities(within: context) + continuation.resume(returning: count > 0) + } catch { + continuation.resume(throwing: error) + } + } } } -} - - -extension SKPaymentTransactionState: CustomDebugStringConvertible { - public var debugDescription: String { - switch self { - case .deferred: return "deferred" - case .failed: return "failed" - case .purchased: return "purchased" - case .purchasing: return "purchasing" - case .restored: return "restored" - @unknown default: - return "unknown default" - } + enum ObvError: LocalizedError { + case transactionHasNoIdentifier + case couldNotRetrieveAppStoreReceiptURL + case thereIsNoFileAtTheURLIndicatedInTheTransaction + case couldReadDataAtTheURLIndicatedInTheTransaction + case userHasNoActiveIdentity + case failedVerification + case userCannotMakePayments } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/ThumbnailManager/ThumbnailManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/ThumbnailManager/ThumbnailManager.swift index b33460c9..8d6adaf0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/ThumbnailManager/ThumbnailManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/ThumbnailManager/ThumbnailManager.swift @@ -22,6 +22,7 @@ import os.log import QuickLookThumbnailing import MobileCoreServices import ObvUICoreData +import ObvSettings enum ThumbnailType { @@ -139,9 +140,9 @@ final class ThumbnailManager { case .normal: guard fyleElement.fullFileIsAvailable else { - self?.createSymbolThumbnail(uti: fyleElement.uti) { (image) in + self?.createSymbolThumbnail(contentType: fyleElement.contentType) { (image) in guard let image = image else { - os_log("Could not generate an appropriate thumbnail for uti %{public}@", log: log, type: .fault, fyleElement.uti) + os_log("Could not generate an appropriate thumbnail for content type %{public}@", log: log, type: .fault, fyleElement.contentType.debugDescription) assertionFailure() return } @@ -166,7 +167,7 @@ final class ThumbnailManager { guard let _self = self else { return } switch result { case .success(let hardLinkToFyle): - _self.createThumbnail(hardLinkToFyle: hardLinkToFyle, size: size, uti: hardLinkToFyle.uti) { (image, isSymbol) in + _self.createThumbnail(hardLinkToFyle: hardLinkToFyle, size: size, contentType: hardLinkToFyle.contentType) { (image, isSymbol) in let thumbnail = Thumbnail(fyleURL: hardLinkToFyle.fyleURL, fileName: hardLinkToFyle.fileName, size: size, image: image, isSymbol: isSymbol) if !isSymbol { self?.thumbnails.insert(thumbnail) @@ -186,7 +187,7 @@ final class ThumbnailManager { } - private func createThumbnail(hardLinkToFyle: HardLinkToFyle, size: CGSize, uti: String, completionHandler: @escaping (UIImage, Bool) -> Void) { + private func createThumbnail(hardLinkToFyle: HardLinkToFyle, size: CGSize, contentType: UTType, completionHandler: @escaping (UIImage, Bool) -> Void) { assert(size != CGSize.zero) guard let hardlinkURL = hardLinkToFyle.hardlinkURL else { os_log("The hardlink within the hardLinkToFyle is nil, which is unexpected", log: log, type: .fault) @@ -200,9 +201,9 @@ final class ThumbnailManager { guard let log = self?.log else { return } if thumbnail == nil || error != nil { os_log("The thumbnail generation failed. We try to set an appropriate generic thumbnail", log: log, type: .error) - self?.createSymbolThumbnail(uti: uti) { (thumbnail) in + self?.createSymbolThumbnail(contentType: contentType) { (thumbnail) in guard let thumbnail = thumbnail else { - os_log("Could not generate an appropriate thumbnail for uti %{public}@", log: log, type: .fault, uti) + os_log("Could not generate an appropriate thumbnail for content type %{public}@", log: log, type: .fault, contentType.debugDescription) return } self?.queueForNotifications.addOperation { @@ -220,17 +221,17 @@ final class ThumbnailManager { } - private func createSymbolThumbnail(uti: String, completionHandler: @escaping (UIImage?) -> Void) { + private func createSymbolThumbnail(contentType: UTType, completionHandler: @escaping (UIImage?) -> Void) { // See CoreServices > UTCoreTypes - if ObvUTIUtils.uti(uti, conformsTo: "org.openxmlformats.wordprocessingml.document" as CFString) { + if contentType.conforms(to: UTType.OpenXML.docx) { // Word (docx) document let image = UIImage(systemName: "doc.fill") completionHandler(image) - } else if ObvUTIUtils.uti(uti, conformsTo: kUTTypeArchive) { + } else if contentType.conforms(to: .archive) { // Zip archive let image = UIImage(systemName: "rectangle.compress.vertical") completionHandler(image) - } else if ObvUTIUtils.uti(uti, conformsTo: kUTTypeWebArchive) { + } else if contentType.conforms(to: .webArchive) { // Web archive let image = UIImage(systemName: "archivebox.fill") completionHandler(image) @@ -239,7 +240,7 @@ final class ThumbnailManager { completionHandler(image) } } - + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/NotificationSoundPlayer.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/NotificationSoundPlayer.swift index 5a01ee02..b6925af1 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/NotificationSoundPlayer.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/NotificationSoundPlayer.swift @@ -18,7 +18,7 @@ */ import Foundation -import ObvUICoreData +import ObvSettings @MainActor diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/ObvUserNotificationIdentifier.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/ObvUserNotificationIdentifier.swift index 63f22cac..0002336b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/ObvUserNotificationIdentifier.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/ObvUserNotificationIdentifier.swift @@ -35,8 +35,6 @@ enum ObvUserNotificationID: Int { case mutualTrustConfirmed case acceptMediatorInvite case acceptGroupInvite - case autoconfirmedContactIntroduction - case increaseMediatorTrustLevelRequired case oneToOneInvitationReceived case missedCall case shouldGrantRecordPermissionToReceiveIncomingCalls @@ -68,8 +66,6 @@ enum ObvUserNotificationIdentifier { case mutualTrustConfirmed(persistedInvitationUUID: UUID) case acceptMediatorInvite(persistedInvitationUUID: UUID) case acceptGroupInvite(persistedInvitationUUID: UUID) - case autoconfirmedContactIntroduction(persistedInvitationUUID: UUID) - case increaseMediatorTrustLevelRequired(persistedInvitationUUID: UUID) case oneToOneInvitationReceived(persistedInvitationUUID: UUID) case missedCall(callUUID: UUID) // When a called was missed because of record permission is either denied or undetermined @@ -95,10 +91,6 @@ enum ObvUserNotificationIdentifier { return "acceptMediatorInvite_\(uuid.uuidString)" case .acceptGroupInvite(persistedInvitationUUID: let uuid): return "acceptGroupInvite_\(uuid.uuidString)" - case .autoconfirmedContactIntroduction(persistedInvitationUUID: let uuid): - return "autoconfirmedContactIntroduction_\(uuid.uuidString)" - case .increaseMediatorTrustLevelRequired(persistedInvitationUUID: let uuid): - return "increaseMediatorTrustLevelRequired_\(uuid.uuidString)" case .missedCall(callUUID: let uuid): return "missedCall_\(uuid.uuidString)" case .newReaction(messagePermanentID: let messagePermanentID, contactPermanentId: let contactPermanentId): @@ -125,8 +117,6 @@ enum ObvUserNotificationIdentifier { case .mutualTrustConfirmed: return .mutualTrustConfirmed case .acceptMediatorInvite: return .acceptMediatorInvite case .acceptGroupInvite: return .acceptGroupInvite - case .autoconfirmedContactIntroduction: return .autoconfirmedContactIntroduction - case .increaseMediatorTrustLevelRequired: return .increaseMediatorTrustLevelRequired case .missedCall: return .missedCall case .oneToOneInvitationReceived: return .oneToOneInvitationReceived case .shouldGrantRecordPermissionToReceiveIncomingCalls: return .shouldGrantRecordPermissionToReceiveIncomingCalls @@ -138,7 +128,7 @@ enum ObvUserNotificationIdentifier { switch self { case .newMessage, .newMessageNotificationWithHiddenContent: return "MessageThread" - case .acceptInvite, .sasExchange, .mutualTrustConfirmed, .acceptMediatorInvite, .acceptGroupInvite, .autoconfirmedContactIntroduction, .increaseMediatorTrustLevelRequired, .oneToOneInvitationReceived: + case .acceptInvite, .sasExchange, .mutualTrustConfirmed, .acceptMediatorInvite, .acceptGroupInvite, .oneToOneInvitationReceived: return "InvitationThread" case .missedCall, .shouldGrantRecordPermissionToReceiveIncomingCalls: return "CallThread" @@ -163,7 +153,7 @@ enum ObvUserNotificationIdentifier { return .missedCallCategory case .newReaction, .newReactionNotificationWithHiddenContent: return .newReactionCategory - case .sasExchange, .mutualTrustConfirmed, .autoconfirmedContactIntroduction, .increaseMediatorTrustLevelRequired, .staticIdentifier: + case .sasExchange, .mutualTrustConfirmed, .staticIdentifier: return nil } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/OptionalNotificationSound.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/OptionalNotificationSound.swift index 5ed51d51..dc0fb772 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/OptionalNotificationSound.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/OptionalNotificationSound.swift @@ -18,7 +18,7 @@ */ import Foundation -import ObvUICoreData +import ObvSettings enum OptionalNotificationSound: Identifiable, Hashable { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationAction.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationAction.swift index 011a7eed..db2780cb 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationAction.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationAction.swift @@ -91,12 +91,8 @@ extension UserNotificationAction { extension UNNotificationAction { convenience init(identifier: String, title: String, options: UNNotificationActionOptions = [], icon: SystemIcon) { - if #available(iOS 15.0, *) { - let actionIcon = UNNotificationActionIcon(systemImageName: icon.systemName) - self.init(identifier: identifier, title: title, options: options, icon: actionIcon) - } else { - self.init(identifier: identifier, title: title, options: options) - } + let actionIcon = UNNotificationActionIcon(systemImageName: icon.systemName) + self.init(identifier: identifier, title: title, options: options, icon: actionIcon) } } @@ -104,11 +100,7 @@ extension UNNotificationAction { extension UNTextInputNotificationAction { convenience init(identifier: String, title: String, options: UNNotificationActionOptions = [], icon: SystemIcon, textInputButtonTitle: String, textInputPlaceholder: String) { - if #available(iOS 15.0, *) { - let actionIcon = UNNotificationActionIcon(systemImageName: icon.systemName) - self.init(identifier: identifier, title: title, options: options, icon: actionIcon, textInputButtonTitle: textInputButtonTitle, textInputPlaceholder: textInputPlaceholder) - } else { - self.init(identifier: identifier, title: title, options: options, textInputButtonTitle: textInputButtonTitle, textInputPlaceholder: textInputPlaceholder) - } + let actionIcon = UNNotificationActionIcon(systemImageName: icon.systemName) + self.init(identifier: identifier, title: title, options: options, icon: actionIcon, textInputButtonTitle: textInputButtonTitle, textInputPlaceholder: textInputPlaceholder) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationCenterDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationCenterDelegate.swift index 65c668c1..93a8cafb 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationCenterDelegate.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationCenterDelegate.swift @@ -90,7 +90,7 @@ extension UserNotificationCenterDelegate { guard let rawId = notification.request.content.userInfo[UserNotificationKeys.id] as? Int, let id = ObvUserNotificationID(rawValue: rawId) else { assertionFailure() - return .alert + return [.list, .banner] } // If we reach this point, we know we are initialized and active. We decide what to show depending on the current activity of the user. @@ -99,23 +99,23 @@ extension UserNotificationCenterDelegate { switch id { case .newReactionNotificationWithHiddenContent, .newReaction: // Always show reaction notification even if it is a reaction for the current discussion. - return .alert + return [.list, .banner] case .newMessageNotificationWithHiddenContent, .newMessage, .missedCall: // The current activity type is `continueDiscussion`. We check whether the notification concerns the current "single discussion". If this is the case, we do not display the notification, otherwise, we do. guard let persistedDiscussionPermanentIDDescription = notification.request.content.userInfo[UserNotificationKeys.persistedDiscussionPermanentIDDescription] as? String, let expectedEntityName = PersistedDiscussion.entity().name, let notificationPersistedDiscussionPermanentID = ObvManagedObjectPermanentID(persistedDiscussionPermanentIDDescription, expectedEntityName: expectedEntityName) else { assertionFailure() - return .alert + return [.list, .banner] } if notificationPersistedDiscussionPermanentID == currentDiscussionPermanentID { return [] } else { - return .alert + return [.list, .banner] } - case .acceptInvite, .sasExchange, .mutualTrustConfirmed, .acceptMediatorInvite, .acceptGroupInvite, .autoconfirmedContactIntroduction, .increaseMediatorTrustLevelRequired, .oneToOneInvitationReceived, .shouldGrantRecordPermissionToReceiveIncomingCalls: - return .alert + case .acceptInvite, .sasExchange, .mutualTrustConfirmed, .acceptMediatorInvite, .acceptGroupInvite, .oneToOneInvitationReceived, .shouldGrantRecordPermissionToReceiveIncomingCalls: + return [.list, .banner] case .staticIdentifier: assertionFailure() return [] @@ -131,8 +131,8 @@ extension UserNotificationCenterDelegate { requestIdentifiersThatPlayedSound.insert(notification.request.identifier) return .sound } - case .newReactionNotificationWithHiddenContent, .newReaction, .acceptInvite, .sasExchange, .mutualTrustConfirmed, .acceptMediatorInvite, .acceptGroupInvite, .autoconfirmedContactIntroduction, .increaseMediatorTrustLevelRequired, .missedCall, .oneToOneInvitationReceived, .staticIdentifier, .shouldGrantRecordPermissionToReceiveIncomingCalls: - return .alert + case .newReactionNotificationWithHiddenContent, .newReaction, .acceptInvite, .sasExchange, .mutualTrustConfirmed, .acceptMediatorInvite, .acceptGroupInvite, .missedCall, .oneToOneInvitationReceived, .staticIdentifier, .shouldGrantRecordPermissionToReceiveIncomingCalls: + return [.list, .banner] } case .displayInvitations: /* The user is currently looking at the invitiation tab. @@ -141,7 +141,7 @@ extension UserNotificationCenterDelegate { * or if it concerned a sas exchange or a mutual trust confirmation. * Now, we always show it */ - return .alert + return [.list, .banner] case .other, .displaySingleContact, .displayContacts, @@ -149,7 +149,7 @@ extension UserNotificationCenterDelegate { .displaySingleGroup, .displaySettings, .unknown: - return .alert + return [.list, .banner] } } @@ -265,10 +265,10 @@ extension UserNotificationCenterDelegate { @MainActor private func handleCallBackAction(callUUID: UUID) async throws { guard let item = try PersistedCallLogItem.get(callUUID: callUUID, within: ObvStack.shared.viewContext) else { assertionFailure(); return } - let contacts = item.logContacts.compactMap { $0.contactIdentity?.typedObjectID } - ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo( - contactIDs: contacts, - groupId: try? item.getGroupIdentifier()) + let contactCryptoIds = item.logContacts.compactMap { $0.contactIdentity?.cryptoId } + guard let ownedCryptoId = item.ownedCryptoId else { return } + let groupId = item.groupIdentifier + ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set(contactCryptoIds), groupId: groupId) .postOnDispatchQueue() } @@ -305,37 +305,27 @@ extension UserNotificationCenterDelegate { var localDialog = obvDialog try localDialog.setResponseToAcceptInvite(acceptInvite: acceptInvite) let dialogForResponse = localDialog - DispatchQueue(label: "Background queue for responding to a dialog").async { - obvEngine.respondTo(dialogForResponse) - } + try await obvEngine.respondTo(dialogForResponse) case .acceptMediatorInvite: var localDialog = obvDialog try localDialog.setResponseToAcceptMediatorInvite(acceptInvite: acceptInvite) let dialogForResponse = localDialog - DispatchQueue(label: "Background queue for responding to a dialog").async { - obvEngine.respondTo(dialogForResponse) - } + try await obvEngine.respondTo(dialogForResponse) case .acceptGroupInvite: var localDialog = obvDialog try localDialog.setResponseToAcceptGroupInvite(acceptInvite: acceptInvite) let dialogForResponse = localDialog - DispatchQueue(label: "Background queue for responding to a dialog").async { - obvEngine.respondTo(dialogForResponse) - } + try await obvEngine.respondTo(dialogForResponse) case .acceptGroupV2Invite: var localDialog = obvDialog try localDialog.setResponseToAcceptGroupV2Invite(acceptInvite: acceptInvite) let dialogForResponse = localDialog - DispatchQueue(label: "Background queue for responding to a dialog").async { - obvEngine.respondTo(dialogForResponse) - } + try await obvEngine.respondTo(dialogForResponse) case .oneToOneInvitationReceived: var localDialog = obvDialog try localDialog.setResponseToOneToOneInvitationReceived(invitationAccepted: acceptInvite) let dialogForResponse = localDialog - DispatchQueue(label: "Background queue for responding to a dialog").async { - obvEngine.respondTo(dialogForResponse) - } + try await obvEngine.respondTo(dialogForResponse) default: assertionFailure() return diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationCreator.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationCreator.swift index 43625a7a..a9a8413a 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationCreator.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationCreator.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,6 +26,7 @@ import os.log import MobileCoreServices import ObvTypes import ObvUICoreData +import ObvSettings struct UserNotificationKeys { @@ -51,18 +52,14 @@ struct UserNotificationCreator { let ownedCryptoId: ObvCryptoId let discussionPermanentID: ObvManagedObjectPermanentID let contactCustomOrFullDisplayName: String - let receivedMessageIntentInfos: ReceivedMessageIntentInfos? // Only used for iOS14+ + let receivedMessageIntentInfos: ReceivedMessageIntentInfos let discussionNotificationSound: NotificationSound? init(contact: PersistedObvContactIdentity.Structure, discussionKind: PersistedDiscussion.StructureKind, urlForStoringPNGThumbnail: URL?) { self.ownedCryptoId = contact.ownedIdentity.cryptoId self.discussionPermanentID = discussionKind.discussionPermanentID self.contactCustomOrFullDisplayName = contact.customOrFullDisplayName - if #available(iOS 14.0, *) { - receivedMessageIntentInfos = ReceivedMessageIntentInfos.init(contact: contact, discussionKind: discussionKind, urlForStoringPNGThumbnail: urlForStoringPNGThumbnail) - } else { - receivedMessageIntentInfos = nil - } + receivedMessageIntentInfos = ReceivedMessageIntentInfos.init(contact: contact, discussionKind: discussionKind, urlForStoringPNGThumbnail: urlForStoringPNGThumbnail) discussionNotificationSound = discussionKind.localConfiguration.notificationSound } @@ -97,11 +94,7 @@ struct UserNotificationCreator { notificationContent.userInfo[UserNotificationKeys.persistedDiscussionPermanentIDDescription] = infos.discussionPermanentID.description notificationContent.userInfo[UserNotificationKeys.callUUID] = callUUID.uuidString - if #available(iOS 14.0, *) { - if let receivedMessageIntentInfos = infos.receivedMessageIntentInfos { - sendMessageIntent = IntentManager.getSendMessageIntentForMessageReceived(infos: receivedMessageIntentInfos, showGroupName: true) - } - } + sendMessageIntent = IntentManager.getSendMessageIntentForMessageReceived(infos: infos.receivedMessageIntentInfos, showGroupName: true) setNotificationSound(discussionNotificationSound: infos.discussionNotificationSound, notificationContent: notificationContent) @@ -125,8 +118,7 @@ struct UserNotificationCreator { setThreadAndCategory(notificationId: notificationId, notificationContent: notificationContent) - if #available(iOS 15.0, *), - let sendMessageIntent = sendMessageIntent, + if let sendMessageIntent = sendMessageIntent, let updatedNotificationContent = try? notificationContent.updating(from: sendMessageIntent) { return (notificationId, updatedNotificationContent) } else { @@ -189,7 +181,7 @@ struct UserNotificationCreator { let groupDiscussionTitle: String? let discussionNotificationSound: NotificationSound? public let isEphemeralMessageWithUserAction: Bool - let receivedMessageIntentInfos: ReceivedMessageIntentInfos? // Only used for iOS14+ + let receivedMessageIntentInfos: ReceivedMessageIntentInfos let attachmentLocation: NotificationAttachmentLocation let attachmentsCount: Int let attachementImages: [NotificationAttachmentImage]? @@ -213,11 +205,7 @@ struct UserNotificationCreator { } self.discussionNotificationSound = messageReceived.discussionKind.localConfiguration.notificationSound self.isEphemeralMessageWithUserAction = messageReceived.isReplyToAnotherMessage - if #available(iOS 14.0, *) { - self.receivedMessageIntentInfos = ReceivedMessageIntentInfos(messageReceived: messageReceived, urlForStoringPNGThumbnail: urlForStoringPNGThumbnail) - } else { - self.receivedMessageIntentInfos = nil - } + self.receivedMessageIntentInfos = ReceivedMessageIntentInfos(messageReceived: messageReceived, urlForStoringPNGThumbnail: urlForStoringPNGThumbnail) self.attachmentLocation = attachmentLocation self.attachmentsCount = messageReceived.attachmentsCount self.attachementImages = messageReceived.attachementImages @@ -248,11 +236,7 @@ struct UserNotificationCreator { } self.discussionNotificationSound = discussionKind.localConfiguration.notificationSound self.isEphemeralMessageWithUserAction = isEphemeralMessageWithUserAction - if #available(iOS 14.0, *) { - self.receivedMessageIntentInfos = ReceivedMessageIntentInfos(contact: contact, discussionKind: discussionKind, urlForStoringPNGThumbnail: urlForStoringPNGThumbnail) - } else { - self.receivedMessageIntentInfos = nil - } + self.receivedMessageIntentInfos = ReceivedMessageIntentInfos(contact: contact, discussionKind: discussionKind, urlForStoringPNGThumbnail: urlForStoringPNGThumbnail) self.attachmentLocation = attachmentLocation self.attachmentsCount = attachmentsCount self.attachementImages = attachementImages @@ -313,11 +297,7 @@ struct UserNotificationCreator { notificationContent.userInfo[UserNotificationKeys.persistedContactPermanentIDDescription] = infos.contactPermanentID.description notificationContent.userInfo[UserNotificationKeys.messageIdentifierFromEngine] = infos.messageIdentifierFromEngine.hexString() - if #available(iOS 14.0, *) { - if let receivedMessageIntentInfos = infos.receivedMessageIntentInfos { - incomingMessageIntent = IntentManager.getSendMessageIntentForMessageReceived(infos: receivedMessageIntentInfos, showGroupName: true) - } - } + incomingMessageIntent = IntentManager.getSendMessageIntentForMessageReceived(infos: infos.receivedMessageIntentInfos, showGroupName: true) setNotificationSound(discussionNotificationSound: infos.discussionNotificationSound, notificationContent: notificationContent) @@ -348,8 +328,7 @@ struct UserNotificationCreator { setThreadAndCategory(notificationId: notificationId, notificationContent: notificationContent) - if #available(iOS 15.0, *), - let incomingMessageIntent = incomingMessageIntent, + if let incomingMessageIntent = incomingMessageIntent, let updatedNotificationContent = try? notificationContent.updating(from: incomingMessageIntent) { return (notificationId, updatedNotificationContent) } else { @@ -395,16 +374,6 @@ struct UserNotificationCreator { let contactDisplayName = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) notificationContent.title = Strings.AcceptGroupInvite.title notificationContent.body = Strings.AcceptGroupInvite.body(contactDisplayName) - case .autoconfirmedContactIntroduction(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): - let contactDisplayName = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) - let mediatorDisplayName = mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) - notificationContent.title = Strings.AutoconfirmedContactIntroduction.title - notificationContent.body = Strings.AutoconfirmedContactIntroduction.body(mediatorDisplayName, contactDisplayName) - case .increaseMediatorTrustLevelRequired(contactIdentity: let contactIdentity, mediatorIdentity: let mediatorIdentity): - let contactDisplayName = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) - let mediatorDisplayName = mediatorIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) - notificationContent.title = Strings.IncreaseMediatorTrustLevelRequired.title - notificationContent.body = Strings.IncreaseMediatorTrustLevelRequired.body(mediatorDisplayName, contactDisplayName) case .oneToOneInvitationReceived(contactIdentity: let contactIdentity): let contactDisplayName = contactIdentity.currentIdentityDetails.coreDetails.getDisplayNameWithStyle(.full) notificationContent.title = Strings.AcceptOneToOneInvite.title @@ -425,7 +394,7 @@ struct UserNotificationCreator { .sasConfirmed, .mediatorInviteAccepted, .oneToOneInvitationSent, - .increaseGroupOwnerTrustLevelRequired, + .syncRequestReceivedFromOtherOwnedDevice, .freezeGroupV2Invite: // For now, we do not notify when receiving these dialogs return nil @@ -476,10 +445,6 @@ struct UserNotificationCreator { case .acceptGroupInvite: notificationId = ObvUserNotificationIdentifier.acceptGroupInvite(persistedInvitationUUID: persistedInvitationUUID) notificationContent.userInfo[UserNotificationKeys.persistedInvitationUUID] = persistedInvitationUUID.uuidString - case .autoconfirmedContactIntroduction: - notificationId = ObvUserNotificationIdentifier.autoconfirmedContactIntroduction(persistedInvitationUUID: persistedInvitationUUID) - case .increaseMediatorTrustLevelRequired: - notificationId = ObvUserNotificationIdentifier.increaseMediatorTrustLevelRequired(persistedInvitationUUID: persistedInvitationUUID) case .oneToOneInvitationReceived: notificationId = ObvUserNotificationIdentifier.oneToOneInvitationReceived(persistedInvitationUUID: persistedInvitationUUID) notificationContent.userInfo[UserNotificationKeys.persistedInvitationUUID] = persistedInvitationUUID.uuidString @@ -491,7 +456,7 @@ struct UserNotificationCreator { .sasConfirmed, .mediatorInviteAccepted, .oneToOneInvitationSent, - .increaseGroupOwnerTrustLevelRequired, + .syncRequestReceivedFromOtherOwnedDevice, .freezeGroupV2Invite: // For now, we do not notify when receiving these dialogs return nil @@ -560,7 +525,7 @@ struct UserNotificationCreator { let discussionNotificationSound: NotificationSound? let isEphemeralPersistedMessageSentWithLimitedVisibility: Bool let messageTextBody: String? - let receivedMessageIntentInfos: ReceivedMessageIntentInfos? // Only used for iOS14+ + let receivedMessageIntentInfos: ReceivedMessageIntentInfos init(messageSent: PersistedMessageSent.Structure, contact: PersistedObvContactIdentity.Structure, urlForStoringPNGThumbnail: URL?) { let discussionKind = messageSent.discussionKind @@ -572,11 +537,7 @@ struct UserNotificationCreator { self.discussionNotificationSound = discussionKind.localConfiguration.notificationSound self.isEphemeralPersistedMessageSentWithLimitedVisibility = messageSent.isEphemeralMessageWithLimitedVisibility self.messageTextBody = messageSent.textBody - if #available(iOS 14.0, *) { - self.receivedMessageIntentInfos = ReceivedMessageIntentInfos(contact: contact, discussionKind: discussionKind, urlForStoringPNGThumbnail: urlForStoringPNGThumbnail) - } else { - self.receivedMessageIntentInfos = nil - } + self.receivedMessageIntentInfos = ReceivedMessageIntentInfos(contact: contact, discussionKind: discussionKind, urlForStoringPNGThumbnail: urlForStoringPNGThumbnail) } } @@ -607,12 +568,7 @@ struct UserNotificationCreator { notificationContent.body = String.localizedStringWithFormat(NSLocalizedString("MESSAGE_REACTION_NOTIFICATION_%@", comment: ""), emoji) } - if #available(iOS 14.0, *), let receivedMessageIntentInfos = infos.receivedMessageIntentInfos { - sendMessageIntent = IntentManager.getSendMessageIntentForMessageReceived(infos: receivedMessageIntentInfos, showGroupName: false) - } else { - notificationContent.title = infos.contactCustomOrFullDisplayName - notificationContent.subtitle = "" - } + sendMessageIntent = IntentManager.getSendMessageIntentForMessageReceived(infos: infos.receivedMessageIntentInfos, showGroupName: false) let deepLink = ObvDeepLink.message(ownedCryptoId: infos.ownedCryptoId, objectPermanentID: infos.messagePermanentID.downcast) notificationContent.userInfo[UserNotificationKeys.deepLinkDescription] = deepLink.description @@ -641,8 +597,7 @@ struct UserNotificationCreator { setThreadAndCategory(notificationId: notificationId, notificationContent: notificationContent) - if #available(iOS 15.0, *), - let sendMessageIntent = sendMessageIntent, + if let sendMessageIntent = sendMessageIntent, let updatedNotificationContent = try? notificationContent.updating(from: sendMessageIntent) { return (notificationId, updatedNotificationContent) } else { @@ -734,11 +689,7 @@ struct UserNotificationCreator { url.appendPathComponent(location) url.appendPathComponent(quality) url.appendPathComponent(String(attachmentNumber)) - if #available(iOS 14.0, *) { - url.appendPathExtension(for: .jpeg) - } else { - url.appendPathExtension("jpeg") - } + url.appendPathExtension(for: .jpeg) return url } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationsManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationsManager.swift index c217f758..e612b639 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationsManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationsManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,6 +25,8 @@ import ObvTypes import CoreData import AVFAudio import ObvUICoreData +import ObvSettings + final class UserNotificationsManager: NSObject { @@ -145,13 +147,13 @@ extension UserNotificationsManager { let discussion: PersistedDiscussion? switch groupId { - case .groupV1(let objectID): - guard let contactGroup = try? PersistedContactGroup.get(objectID: objectID.objectID, within: context) else { return } + case .groupV1(groupV1Identifier: let groupV1Identifier): + guard let contactGroup = try? PersistedContactGroup.getContactGroup(groupIdentifier: groupV1Identifier, ownedCryptoId: ownedCryptoId, within: context) else { return } discussion = contactGroup.discussion - case .groupV2(let objectID): - guard let group = try? PersistedGroupV2.get(objectID: objectID, within: context) else { return } + case .groupV2(groupV2Identifier:let groupV2Identifier): + guard let group = try? PersistedGroupV2.get(ownIdentity: ownedCryptoId, appGroupIdentifier: groupV2Identifier, within: context) else { return } discussion = group.discussion - case .none: + case nil: discussion = contactIdentity.oneToOneDiscussion } guard let discussion = discussion, discussion.status == .active else { return } @@ -195,7 +197,7 @@ extension UserNotificationsManager { @unknown default: break } - case .acceptedOutgoingCall, .acceptedIncomingCall, .rejectedOutgoingCall, .rejectedIncomingCall, .busyOutgoingCall, .unansweredOutgoingCall, .uncompletedOutgoingCall, .newParticipantInIncomingCall, .newParticipantInOutgoingCall: + case .acceptedOutgoingCall, .acceptedIncomingCall, .rejectedOutgoingCall, .rejectedIncomingCall, .busyOutgoingCall, .unansweredOutgoingCall, .uncompletedOutgoingCall, .newParticipantInIncomingCall, .newParticipantInOutgoingCall, .answeredOrRejectedOnOtherDevice, .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse: // Do nothing break } @@ -234,7 +236,7 @@ extension UserNotificationsManager { ObvStack.shared.performBackgroundTask { (context) in let notificationCenter = UNUserNotificationCenter.current() guard let messageReceived = try? PersistedMessageReceived.get(with: persistedMessageReceivedObjectID, within: context) as? PersistedMessageReceived else { assertionFailure(); return } - let discussion = messageReceived.discussion + guard let discussion = messageReceived.discussion else { assertionFailure(); return } do { let notificationId = ObvUserNotificationIdentifier.newMessage(messageIdentifierFromEngine: messageReceived.messageIdentifierFromEngine) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationsScheduler.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationsScheduler.swift index 9d6d6d35..227795c3 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationsScheduler.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/UserNotificationManager/UserNotificationsScheduler.swift @@ -21,6 +21,7 @@ import Foundation import UserNotifications import os.log import ObvUICoreData +import ObvSettings final class UserNotificationsScheduler { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Managers/WebSocketManager/WebSocketManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Managers/WebSocketManager/WebSocketManager.swift index dd1bffd9..6c5cd3bb 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Managers/WebSocketManager/WebSocketManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Managers/WebSocketManager/WebSocketManager.swift @@ -75,14 +75,14 @@ actor WebSocketManager { Task { [weak self] in await self?.setiOSLifecycleStateRequiresWebSocket(to: true) } }, NotificationCenter.default.addObserver(forName: didEnterBackgroundNotification, object: nil, queue: nil) { _ in - os_log("🧦 didEnterBackgroundNotification", log: Self.log, type: .info) + os_log("didEnterBackgroundNotification", log: Self.log, type: .info) Task { [weak self] in await self?.setiOSLifecycleStateRequiresWebSocket(to: false) } }, NotificationCenter.default.addObserver(forName: willTerminateNotification, object: nil, queue: nil) { _ in os_log("🧦 willTerminateNotification", log: Self.log, type: .info) Task { [weak self] in await self?.setiOSLifecycleStateRequiresWebSocket(to: false) } }, - VoIPNotification.observeNewIncomingCall { incomingCall in + VoIPNotification.observeNewCallToShow { _ in os_log("🧦 observeNewIncomingCall", log: Self.log, type: .info) Task { [weak self] in await self?.setAnIncomingCallRequiresWebSocket(to: true) } }, @@ -136,7 +136,7 @@ actor WebSocketManager { private func disconnectWebsockets() async { assert(!Thread.isMainThread) - os_log("🧦🏁☎️🏓 Will request the engine to disconnect websockets", log: Self.log, type: .info) + os_log("🏁☎️🏓 Will request the engine to disconnect websockets", log: Self.log, type: .info) do { try await obvEngine.disconnectWebsockets() } catch { diff --git a/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/BadConfiguration/BadConfigurationViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/BadConfiguration/BadConfigurationViewController.swift index 694f29a2..d18bd567 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/BadConfiguration/BadConfigurationViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/BadConfiguration/BadConfigurationViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + class BadConfigurationViewController: UIViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/InitializationFailure/InitializationFailureViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/InitializationFailure/InitializationFailureViewController.swift index bc41c4c4..5067721e 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/InitializationFailure/InitializationFailureViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/InitializationFailure/InitializationFailureViewController.swift @@ -42,6 +42,8 @@ class InitializationFailureViewController: UIViewController { } } + override var canBecomeFirstResponder: Bool { true } + private var errorMessage: String? { guard let error = self.error else { return nil } let exactModel = UIDevice.current.exactModel diff --git a/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/OwnedIdentityIsNotActive/OwnedIdentityIsNotActiveViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/OwnedIdentityIsNotActive/OwnedIdentityIsNotActiveViewController.swift deleted file mode 100644 index 8021284f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/OwnedIdentityIsNotActive/OwnedIdentityIsNotActiveViewController.swift +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUICoreData -import UIKit - - -class OwnedIdentityIsNotActiveViewController: UIViewController { - - @IBOutlet weak var explanationBodyLabel: UILabel! - @IBOutlet weak var whatToDoLabel: UILabel! - @IBOutlet weak var whatToDoBodyLabel: UILabel! - @IBOutlet weak var reactivateButton: UIButton! - - private var notificationTokens = [NSObjectProtocol]() - - deinit { - notificationTokens.forEach { NotificationCenter.default.removeObserver($0) } - } - - override func viewDidLoad() { - super.viewDidLoad() - self.navigationController?.navigationBar.prefersLargeTitles = true - self.title = Strings.title - let closeButton = UIBarButtonItem.forClosing(target: self, action: #selector(dismissPresentedViewController)) - self.navigationItem.setLeftBarButton(closeButton, animated: false) - - explanationBodyLabel.text = Strings.explanationBody - whatToDoLabel.text = Strings.whatToDo - whatToDoBodyLabel.text = Strings.whatToDoBody - reactivateButton.setTitle(Strings.reactivateIdentity, for: .normal) - - // Always dismiss this view controller if the identity is reactivated - notificationTokens.append(ObvMessengerCoreDataNotification.observeOwnedIdentityWasReactivated(queue: OperationQueue.main, block: { [weak self] (_) in - self?.dismissPresentedViewController() - })) - - } - - @objc private func dismissPresentedViewController() { - self.navigationController?.dismiss(animated: true) - } - - @IBAction func reactivateButtonTapped(_ sender: Any) { - Task { - await ObvPushNotificationManager.shared.doKickOtherDevicesOnNextRegister() - await ObvPushNotificationManager.shared.tryToRegisterToPushNotifications() - } - } - -} - - -// MARK: Localized Strings - -extension OwnedIdentityIsNotActiveViewController { - - private struct Strings { - static let title = NSLocalizedString("Oups...", comment: "Title displayed on the VC shown when an owned identity is deactivated") - static let explanationBody = NSLocalizedString("Your identity is deactivated on this device since it is active on another device. This tipically happens when you restore a backup on a device: this deactivates your previous device.", comment: "Explanation shown on the VC shown when an owned identity is deactivated") - static let whatToDo = NSLocalizedString("What can I do?", comment: "Subtitle shown on the VC shown when an owned identity is deactivated") - static let whatToDoBody = NSLocalizedString("You can still access your old discussions on this device, but you cannot send nor receive new messages. If you want to do so, you can tap on Reactivate this device. Please note that this will deactivate your other device.", comment: "Body text shown on the VC shown when an owned identity is deactivated") - static let reactivateIdentity = NSLocalizedString("Reactivate my identity on this device", comment: "Button title") - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/OwnedIdentityIsNotActive/OwnedIdentityIsNotActiveViewController.xib b/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/OwnedIdentityIsNotActive/OwnedIdentityIsNotActiveViewController.xib deleted file mode 100644 index 779e0853..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/ModalViewControllers/OwnedIdentityIsNotActive/OwnedIdentityIsNotActiveViewController.xib +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Notifications/HardLinksToFylesNotifications.yml b/iOSClient/ObvMessenger/ObvMessenger/Notifications/HardLinksToFylesNotifications.yml deleted file mode 100644 index 3760fb1f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Notifications/HardLinksToFylesNotifications.yml +++ /dev/null @@ -1,12 +0,0 @@ -import: - - Foundation - - ObvUICoreData -notifications: -- name: requestHardLinkToFyle - params: - - {name: fyleElement, type: FyleElement} - - {name: completionHandler, type: "((Result) -> Void)", escaping: true} -- name: requestAllHardLinksToFyles - params: - - {name: fyleElements, type: [FyleElement]} - - {name: completionHandler, type: "(([HardLinkToFyle?]) -> Void)", escaping: true} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Notifications/MessengerInternalNotification.swift b/iOSClient/ObvMessenger/ObvMessenger/Notifications/MessengerInternalNotification.swift index 389fc77a..c15c0541 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Notifications/MessengerInternalNotification.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Notifications/MessengerInternalNotification.swift @@ -82,22 +82,22 @@ struct MessengerInternalNotification { static let name = NSNotification.Name("MessengerInternalNotification.UserTriedToAccessCameraButAccessIsDenied") } - // MARK: - UserWantsToDeleteOwnedContactGroup - - struct UserWantsToDeleteOwnedContactGroup { - static let name = NSNotification.Name("MessengerInternalNotification.UserWantsToDeleteOwnedContactGroup") - struct Key { - static let groupUid = "groupUid" - static let ownedCryptoId = "ownedCryptoId" - } - static func parse(_ notification: Notification) -> (groupUid: UID, ownedCryptoId: ObvCryptoId)? { - guard notification.name == name else { return nil } - guard let userInfo = notification.userInfo else { return nil } - guard let groupUid = userInfo[Key.groupUid] as? UID else { return nil } - guard let ownedCryptoId = userInfo[Key.ownedCryptoId] as? ObvCryptoId else { return nil } - return (groupUid, ownedCryptoId) - } - } +// // MARK: - UserWantsToDeleteOwnedContactGroup +// +// struct UserWantsToDeleteOwnedContactGroup { +// static let name = NSNotification.Name("MessengerInternalNotification.UserWantsToDeleteOwnedContactGroup") +// struct Key { +// static let groupUid = "groupUid" +// static let ownedCryptoId = "ownedCryptoId" +// } +// static func parse(_ notification: Notification) -> (groupUid: UID, ownedCryptoId: ObvCryptoId)? { +// guard notification.name == name else { return nil } +// guard let userInfo = notification.userInfo else { return nil } +// guard let groupUid = userInfo[Key.groupUid] as? UID else { return nil } +// guard let ownedCryptoId = userInfo[Key.ownedCryptoId] as? ObvCryptoId else { return nil } +// return (groupUid, ownedCryptoId) +// } +// } // MARK: - UserWantsToLeaveJoinedContactGroup diff --git a/iOSClient/ObvMessenger/ObvMessenger/Notifications/NewSingleDiscussionNotification.swift b/iOSClient/ObvMessenger/ObvMessenger/Notifications/NewSingleDiscussionNotification.swift index c0785bf7..d440f4e2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Notifications/NewSingleDiscussionNotification.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Notifications/NewSingleDiscussionNotification.swift @@ -48,6 +48,8 @@ enum NewSingleDiscussionNotification { case userWantsToPauseDownloadReceivedFyleMessageJoinWithStatus(receivedJoinObjectID: TypeSafeManagedObjectID) case userWantsToDownloadReceivedFyleMessageJoinWithStatus(receivedJoinObjectID: TypeSafeManagedObjectID) case updatedSetOfCurrentlyDisplayedMessagesWithLimitedVisibility(discussionPermanentID: ObvManagedObjectPermanentID, messagePermanentIDs: Set>) + case userWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: TypeSafeManagedObjectID) + case userWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: TypeSafeManagedObjectID) private enum Name { case userWantsToReadReceivedMessagesThatRequiresUserAction @@ -65,6 +67,8 @@ enum NewSingleDiscussionNotification { case userWantsToPauseDownloadReceivedFyleMessageJoinWithStatus case userWantsToDownloadReceivedFyleMessageJoinWithStatus case updatedSetOfCurrentlyDisplayedMessagesWithLimitedVisibility + case userWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice + case userWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice private var namePrefix: String { String(describing: NewSingleDiscussionNotification.self) } @@ -92,6 +96,8 @@ enum NewSingleDiscussionNotification { case .userWantsToPauseDownloadReceivedFyleMessageJoinWithStatus: return Name.userWantsToPauseDownloadReceivedFyleMessageJoinWithStatus.name case .userWantsToDownloadReceivedFyleMessageJoinWithStatus: return Name.userWantsToDownloadReceivedFyleMessageJoinWithStatus.name case .updatedSetOfCurrentlyDisplayedMessagesWithLimitedVisibility: return Name.updatedSetOfCurrentlyDisplayedMessagesWithLimitedVisibility.name + case .userWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice: return Name.userWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice.name + case .userWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice: return Name.userWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice.name } } } @@ -171,6 +177,14 @@ enum NewSingleDiscussionNotification { "discussionPermanentID": discussionPermanentID, "messagePermanentIDs": messagePermanentIDs, ] + case .userWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: let sentJoinObjectID): + info = [ + "sentJoinObjectID": sentJoinObjectID, + ] + case .userWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice(sentJoinObjectID: let sentJoinObjectID): + info = [ + "sentJoinObjectID": sentJoinObjectID, + ] } return info } @@ -334,4 +348,20 @@ enum NewSingleDiscussionNotification { } } + static func observeUserWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (TypeSafeManagedObjectID) -> Void) -> NSObjectProtocol { + let name = Name.userWantsToDownloadSentFyleMessageJoinWithStatusFromOtherOwnedDevice.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let sentJoinObjectID = notification.userInfo!["sentJoinObjectID"] as! TypeSafeManagedObjectID + block(sentJoinObjectID) + } + } + + static func observeUserWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (TypeSafeManagedObjectID) -> Void) -> NSObjectProtocol { + let name = Name.userWantsToPauseSentFyleMessageJoinWithStatusFromOtherOwnedDevice.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let sentJoinObjectID = notification.userInfo!["sentJoinObjectID"] as! TypeSafeManagedObjectID + block(sentJoinObjectID) + } + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Notifications/NewSingleDiscussionNotification.yml b/iOSClient/ObvMessenger/ObvMessenger/Notifications/NewSingleDiscussionNotification.yml deleted file mode 100644 index 6402fcfd..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Notifications/NewSingleDiscussionNotification.yml +++ /dev/null @@ -1,65 +0,0 @@ -import: - - Foundation - - CoreData - - PhotosUI - - ObvUICoreData -notifications: -- name: userWantsToReadReceivedMessagesThatRequiresUserAction - params: - - {name: persistedMessageObjectIDs, type: Set} -- name: userWantsToAddAttachmentsToDraft - params: - - {name: draftPermanentID, type: ObvManagedObjectPermanentID} - - {name: itemProviders, type: [NSItemProvider]} - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: userWantsToAddAttachmentsToDraftFromURLs - params: - - {name: draftPermanentID, type: ObvManagedObjectPermanentID} - - {name: urls, type: [URL]} - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: userWantsToDeleteAllAttachmentsToDraft - params: - - {name: draftObjectID, type: TypeSafeManagedObjectID} -- name: userWantsToReplyToMessage - params: - - {name: messageObjectID, type: TypeSafeManagedObjectID} - - {name: draftObjectID, type: TypeSafeManagedObjectID} -- name: userWantsToRemoveReplyToMessage - params: - - {name: draftObjectID, type: TypeSafeManagedObjectID} -- name: userWantsToSendDraft - params: - - {name: draftPermanentID, type: ObvManagedObjectPermanentID} - - {name: textBody, type: String} - - {name: mentions, type: Set} -- name: userWantsToSendDraftWithOneAttachment - params: - - {name: draftPermanentID, type: ObvManagedObjectPermanentID} - - {name: attachmentURL, type: URL} -- name: insertDiscussionIsEndToEndEncryptedSystemMessageIntoDiscussionIfEmpty - params: - - {name: discussionObjectID, type: TypeSafeManagedObjectID} - - {name: markAsRead, type: Bool} -- name: userWantsToUpdateDraftExpiration - params: - - {name: draftObjectID, type: TypeSafeManagedObjectID} - - {name: value, type: "PersistedDiscussionSharedConfigurationValue?"} -- name: userWantsToUpdateDraftBodyAndMentions - params: - - {name: draftObjectID, type: TypeSafeManagedObjectID} - - {name: body, type: String} - - {name: mentions, type: Set} -- name: draftCouldNotBeSent - params: - - {name: draftPermanentID, type: ObvManagedObjectPermanentID} -- name: userWantsToPauseDownloadReceivedFyleMessageJoinWithStatus - params: - - {name: receivedJoinObjectID, type: TypeSafeManagedObjectID} -- name: userWantsToDownloadReceivedFyleMessageJoinWithStatus - params: - - {name: receivedJoinObjectID, type: TypeSafeManagedObjectID} -- name: updatedSetOfCurrentlyDisplayedMessagesWithLimitedVisibility - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: messagePermanentIDs, type: Set>} - diff --git a/iOSClient/ObvMessenger/ObvMessenger/Notifications/ObvMessengerInternalNotification.swift b/iOSClient/ObvMessenger/ObvMessenger/Notifications/ObvMessengerInternalNotification.swift index cc52b78f..dec69d08 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Notifications/ObvMessengerInternalNotification.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Notifications/ObvMessengerInternalNotification.swift @@ -24,6 +24,7 @@ import ObvEngine import OlvidUtils import ObvCrypto import ObvUICoreData +import ObvSettings fileprivate struct OptionalWrapper { let value: T? @@ -36,18 +37,16 @@ fileprivate struct OptionalWrapper { } enum ObvMessengerInternalNotification { - case messagesAreNotNewAnymore(persistedMessageObjectIDs: Set>) + case messagesAreNotNewAnymore(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, messageIds: [MessageIdentifier]) case userWantsToRefreshContactGroupJoined(obvContactGroup: ObvContactGroup) case externalTransactionsWereMergedIntoViewContext case newMuteExpiration(expirationDate: Date) case wipeAllMessagesThatExpiredEarlierThanNow(launchedByBackgroundTask: Bool, completionHandler: (Bool) -> Void) - case userWantsToCallAndIsAllowedTo(contactIds: [OlvidUserId], ownedIdentityForRequestingTurnCredentials: ObvCryptoId, groupId: GroupIdentifierBasedOnObjectID?) - case userWantsToSelectAndCallContacts(contactIDs: [TypeSafeManagedObjectID], groupId: GroupIdentifierBasedOnObjectID?) - case userWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: [TypeSafeManagedObjectID], groupId: GroupIdentifierBasedOnObjectID?) - case newWebRTCMessageWasReceived(webrtcMessage: WebRTCMessageJSON, contactId: OlvidUserId, messageUploadTimestampFromServer: Date, messageIdentifierFromEngine: Data) - case newObvMessageWasReceivedViaPushKitNotification(obvMessage: ObvMessage) - case newWebRTCMessageToSend(webrtcMessage: WebRTCMessageJSON, contactID: TypeSafeManagedObjectID, forStartingCall: Bool) - case isCallKitEnabledSettingDidChange + case userWantsToCallAndIsAllowedTo(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set, ownedIdentityForRequestingTurnCredentials: ObvCryptoId, groupId: GroupIdentifier?) + case userWantsToSelectAndCallContacts(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set, groupId: GroupIdentifier?) + case userWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set, groupId: GroupIdentifier?) + case newWebRTCMessageWasReceived(webrtcMessage: WebRTCMessageJSON, fromOlvidUser: OlvidUserId, messageUID: UID) + case newObvEncryptedPushNotificationWasReceivedViaPushKitNotification(encryptedNotification: ObvEncryptedPushNotification) case isIncludesCallsInRecentsEnabledSettingDidChange case networkInterfaceTypeChanged(isConnected: Bool) case outgoingCallFailedBecauseUserDeniedRecordPermission @@ -55,26 +54,24 @@ enum ObvMessengerInternalNotification { case rejectedIncomingCallBecauseUserDeniedRecordPermission case userRequestedDeletionOfPersistedMessage(ownedCryptoId: ObvCryptoId, persistedMessageObjectID: NSManagedObjectID, deletionType: DeletionType) case trashShouldBeEmptied - case userRequestedDeletionOfPersistedDiscussion(persistedDiscussionObjectID: NSManagedObjectID, deletionType: DeletionType, completionHandler: (Bool) -> Void) + case userRequestedDeletionOfPersistedDiscussion(ownedCryptoId: ObvCryptoId, discussionObjectID: TypeSafeManagedObjectID, deletionType: DeletionType, completionHandler: (Bool) -> Void) case newCallLogItem(objectID: TypeSafeManagedObjectID) case callLogItemWasUpdated(objectID: TypeSafeManagedObjectID) case userWantsToIntroduceContactToAnotherContact(ownedCryptoId: ObvCryptoId, firstContactCryptoId: ObvCryptoId, secondContactCryptoIds: Set) case userWantsToShareOwnPublishedDetails(ownedCryptoId: ObvCryptoId, sourceView: UIView) case userWantsToSendInvite(ownedIdentity: ObvOwnedIdentity, urlIdentity: ObvURLIdentity) - case userRequestedAPIKeyStatus(ownedCryptoId: ObvCryptoId, apiKey: UUID) - case userRequestedNewAPIKeyActivation(ownedCryptoId: ObvCryptoId, apiKey: UUID) case userWantsToNavigateToDeepLink(deepLink: ObvDeepLink) case useLoadBalancedTurnServersDidChange - case userWantsToReadReceivedMessagesThatRequiresUserAction(persistedMessageObjectIDs: Set>) + case userWantsToReadReceivedMessageThatRequiresUserAction(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, messageId: ReceivedMessageIdentifier) case requestThumbnail(fyleElement: FyleElement, size: CGSize, thumbnailType: ThumbnailType, completionHandler: ((Thumbnail) -> Void)) case userHasOpenedAReceivedAttachment(receivedFyleJoinID: TypeSafeManagedObjectID) - case userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(persistedDiscussionObjectID: NSManagedObjectID, expirationJSON: ExpirationJSON, ownedCryptoId: ObvCryptoId) + case userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier, expirationJSON: ExpirationJSON) case userWantsToDeleteContact(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId, viewController: UIViewController, completionHandler: ((Bool) -> Void)) case cleanExpiredMessagesBackgroundTaskWasLaunched(completionHandler: (Bool) -> Void) case applyRetentionPoliciesBackgroundTaskWasLaunched(completionHandler: (Bool) -> Void) case updateBadgeBackgroundTaskWasLaunched(completionHandler: (Bool) -> Void) case applyAllRetentionPoliciesNow(launchedByBackgroundTask: Bool, completionHandler: (Bool) -> Void) - case userWantsToSendEditedVersionOfSentMessage(sentMessageObjectID: NSManagedObjectID, newTextBody: String) + case userWantsToSendEditedVersionOfSentMessage(ownedCryptoId: ObvCryptoId, sentMessageObjectID: TypeSafeManagedObjectID, newTextBody: String) case newProfilePictureCandidateToCache(requestUUID: UUID, profilePicture: UIImage) case newCachedProfilePictureCandidate(requestUUID: UUID, url: URL) case newCustomContactPictureCandidateToSave(requestUUID: UUID, profilePicture: UIImage) @@ -82,15 +79,13 @@ enum ObvMessengerInternalNotification { case obvContactRequest(requestUUID: UUID, contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) case obvContactAnswer(requestUUID: UUID, obvContact: ObvContactIdentity) case userWantsToMarkAllMessagesAsNotNewWithinDiscussion(persistedDiscussionObjectID: NSManagedObjectID, completionHandler: (Bool) -> Void) - case resyncContactIdentityDevicesWithEngine(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) - case resyncContactIdentityDetailsStatusWithEngine(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) + case resyncContactIdentityDevicesWithEngine(obvContactIdentifier: ObvContactIdentifier) case serverDoesNotSuppoortCall case pastedStringIsNotValidOlvidURL case userWantsToRestartChannelEstablishmentProtocol(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) - case userWantsToReCreateChannelEstablishmentProtocol(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) case contactIdentityDetailsWereUpdated(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) case userDidSeeNewDetailsOfContact(contactCryptoId: ObvCryptoId, ownedCryptoId: ObvCryptoId) - case userWantsToEditContactNicknameAndPicture(persistedContactObjectID: NSManagedObjectID, customDisplayName: String?, customPhotoURL: URL?) + case userWantsToEditContactNicknameAndPicture(persistedContactObjectID: NSManagedObjectID, customDisplayName: String?, customPhoto: UIImage?) case userWantsToBindOwnedIdentityToKeycloak(ownedCryptoId: ObvCryptoId, obvKeycloakState: ObvKeycloakState, keycloakUserId: String, completionHandler: (Bool) -> Void) case userWantsToUnbindOwnedIdentityFromKeycloak(ownedCryptoId: ObvCryptoId, completionHandler: (Bool) -> Void) case userWantsToRemoveDraftFyleJoin(draftFyleJoinObjectID: TypeSafeManagedObjectID) @@ -110,7 +105,7 @@ enum ObvMessengerInternalNotification { case UserDismissedSnackBarForLater(ownedCryptoId: ObvCryptoId, snackBarCategory: OlvidSnackBarCategory) case UserRequestedToResetAllAlerts case olvidSnackBarShouldBeHidden(ownedCryptoId: ObvCryptoId) - case userWantsToUpdateReaction(messageObjectID: TypeSafeManagedObjectID, emoji: String?) + case userWantsToUpdateReaction(ownedCryptoId: ObvCryptoId, messageObjectID: TypeSafeManagedObjectID, newEmoji: String?) case currentUserActivityDidChange(previousUserActivity: ObvUserActivityType, currentUserActivity: ObvUserActivityType) case displayedSnackBarShouldBeRefreshed case requestUserDeniedRecordPermissionAlert @@ -122,7 +117,7 @@ enum ObvMessengerInternalNotification { case installedOlvidAppIsOutdated(presentingViewController: UIViewController?) case userOwnedIdentityWasRevokedByKeycloak(ownedCryptoId: ObvCryptoId) case uiRequiresSignedContactDetails(ownedIdentityCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId, completion: (SignedObvKeycloakUserDetails?) -> Void) - case requestSyncAppDatabasesWithEngine(completion: (Result) -> Void) + case requestSyncAppDatabasesWithEngine(queuePriority: Operation.QueuePriority, completion: (Result) -> Void) case uiRequiresSignedOwnedDetails(ownedIdentityCryptoId: ObvCryptoId, completion: (SignedObvKeycloakUserDetails?) -> Void) case listMessagesOnServerBackgroundTaskWasLaunched(completionHandler: (Bool) -> Void) case userWantsToSendOneToOneInvitationToContact(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) @@ -140,16 +135,16 @@ enum ObvMessengerInternalNotification { case badgeForInvitationsHasBeenUpdated(ownedCryptoId: ObvCryptoId, newCount: Int) case requestRunningLog(completion: (RunningLogError) -> Void) case metaFlowControllerViewDidAppear - case userWantsToUpdateCustomNameAndGroupV2Photo(groupObjectID: TypeSafeManagedObjectID, customName: String?, customPhotoURL: URL?) + case userWantsToUpdateCustomNameAndGroupV2Photo(ownedCryptoId: ObvCryptoId, groupIdentifier: Data, customName: String?, customPhoto: UIImage?) case userHasSeenPublishedDetailsOfGroupV2(groupObjectID: TypeSafeManagedObjectID) case tooManyWrongPasscodeAttemptsCausedLockOut case backupForExportWasExported case backupForUploadWasUploaded case backupForUploadFailedToUpload - case userWantsToCreateNewOwnedIdentity + case userWantsToAddOwnedProfile case userWantsToSwitchToOtherOwnedIdentity(ownedCryptoId: ObvCryptoId) case userWantsToDeleteOwnedIdentityButHasNotConfirmedYet(ownedCryptoId: ObvCryptoId) - case userWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: ObvCryptoId, notifyContacts: Bool) + case userWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: ObvCryptoId, globalOwnedIdentityDeletion: Bool) case userWantsToHideOwnedIdentity(ownedCryptoId: ObvCryptoId, password: String) case failedToHideOwnedIdentity(ownedCryptoId: ObvCryptoId) case userWantsToSwitchToOtherHiddenOwnedIdentity(password: String) @@ -169,6 +164,15 @@ enum ObvMessengerInternalNotification { case userWantsToUnarchiveDiscussion(discussionPermanentID: ObvManagedObjectPermanentID, updateTimestampOfLastMessage: Bool, completionHandler: ((Bool) -> Void)?) case userWantsToRefreshDiscussions(completionHandler: (() -> Void)) case updateNormalizedSearchKeyOnPersistedDiscussions(ownedIdentity: ObvCryptoId, completionHandler: (() -> Void)?) + case aDiscussionSharedConfigurationIsNeededByContact(contactIdentifier: ObvContactIdentifier, discussionId: DiscussionIdentifier) + case aDiscussionSharedConfigurationIsNeededByAnotherOwnedDevice(ownedCryptoId: ObvCryptoId, discussionId: DiscussionIdentifier) + case userWantsToDeleteOwnedContactGroup(ownedCryptoId: ObvCryptoId, groupUid: UID) + case singleOwnedIdentityFlowViewControllerDidAppear(ownedCryptoId: ObvCryptoId) + case userWantsToSetCustomNameOfJoinedGroupV1(ownedCryptoId: ObvCryptoId, groupId: GroupV1Identifier, groupNameCustom: String?) + case userWantsToUpdatePersonalNoteOnContact(contactIdentifier: ObvContactIdentifier, newText: String?) + case userWantsToUpdatePersonalNoteOnGroupV1(ownedCryptoId: ObvCryptoId, groupId: GroupV1Identifier, newText: String?) + case userWantsToUpdatePersonalNoteOnGroupV2(ownedCryptoId: ObvCryptoId, groupIdentifier: Data, newText: String?) + case allPersistedInvitationCanBeMarkedAsOld(ownedCryptoId: ObvCryptoId) private enum Name { case messagesAreNotNewAnymore @@ -180,9 +184,7 @@ enum ObvMessengerInternalNotification { case userWantsToSelectAndCallContacts case userWantsToCallButWeShouldCheckSheIsAllowedTo case newWebRTCMessageWasReceived - case newObvMessageWasReceivedViaPushKitNotification - case newWebRTCMessageToSend - case isCallKitEnabledSettingDidChange + case newObvEncryptedPushNotificationWasReceivedViaPushKitNotification case isIncludesCallsInRecentsEnabledSettingDidChange case networkInterfaceTypeChanged case outgoingCallFailedBecauseUserDeniedRecordPermission @@ -196,11 +198,9 @@ enum ObvMessengerInternalNotification { case userWantsToIntroduceContactToAnotherContact case userWantsToShareOwnPublishedDetails case userWantsToSendInvite - case userRequestedAPIKeyStatus - case userRequestedNewAPIKeyActivation case userWantsToNavigateToDeepLink case useLoadBalancedTurnServersDidChange - case userWantsToReadReceivedMessagesThatRequiresUserAction + case userWantsToReadReceivedMessageThatRequiresUserAction case requestThumbnail case userHasOpenedAReceivedAttachment case userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration @@ -218,11 +218,9 @@ enum ObvMessengerInternalNotification { case obvContactAnswer case userWantsToMarkAllMessagesAsNotNewWithinDiscussion case resyncContactIdentityDevicesWithEngine - case resyncContactIdentityDetailsStatusWithEngine case serverDoesNotSuppoortCall case pastedStringIsNotValidOlvidURL case userWantsToRestartChannelEstablishmentProtocol - case userWantsToReCreateChannelEstablishmentProtocol case contactIdentityDetailsWereUpdated case userDidSeeNewDetailsOfContact case userWantsToEditContactNicknameAndPicture @@ -281,7 +279,7 @@ enum ObvMessengerInternalNotification { case backupForExportWasExported case backupForUploadWasUploaded case backupForUploadFailedToUpload - case userWantsToCreateNewOwnedIdentity + case userWantsToAddOwnedProfile case userWantsToSwitchToOtherOwnedIdentity case userWantsToDeleteOwnedIdentityButHasNotConfirmedYet case userWantsToDeleteOwnedIdentityAndHasConfirmed @@ -304,6 +302,15 @@ enum ObvMessengerInternalNotification { case userWantsToUnarchiveDiscussion case userWantsToRefreshDiscussions case updateNormalizedSearchKeyOnPersistedDiscussions + case aDiscussionSharedConfigurationIsNeededByContact + case aDiscussionSharedConfigurationIsNeededByAnotherOwnedDevice + case userWantsToDeleteOwnedContactGroup + case singleOwnedIdentityFlowViewControllerDidAppear + case userWantsToSetCustomNameOfJoinedGroupV1 + case userWantsToUpdatePersonalNoteOnContact + case userWantsToUpdatePersonalNoteOnGroupV1 + case userWantsToUpdatePersonalNoteOnGroupV2 + case allPersistedInvitationCanBeMarkedAsOld private var namePrefix: String { String(describing: ObvMessengerInternalNotification.self) } @@ -325,9 +332,7 @@ enum ObvMessengerInternalNotification { case .userWantsToSelectAndCallContacts: return Name.userWantsToSelectAndCallContacts.name case .userWantsToCallButWeShouldCheckSheIsAllowedTo: return Name.userWantsToCallButWeShouldCheckSheIsAllowedTo.name case .newWebRTCMessageWasReceived: return Name.newWebRTCMessageWasReceived.name - case .newObvMessageWasReceivedViaPushKitNotification: return Name.newObvMessageWasReceivedViaPushKitNotification.name - case .newWebRTCMessageToSend: return Name.newWebRTCMessageToSend.name - case .isCallKitEnabledSettingDidChange: return Name.isCallKitEnabledSettingDidChange.name + case .newObvEncryptedPushNotificationWasReceivedViaPushKitNotification: return Name.newObvEncryptedPushNotificationWasReceivedViaPushKitNotification.name case .isIncludesCallsInRecentsEnabledSettingDidChange: return Name.isIncludesCallsInRecentsEnabledSettingDidChange.name case .networkInterfaceTypeChanged: return Name.networkInterfaceTypeChanged.name case .outgoingCallFailedBecauseUserDeniedRecordPermission: return Name.outgoingCallFailedBecauseUserDeniedRecordPermission.name @@ -341,11 +346,9 @@ enum ObvMessengerInternalNotification { case .userWantsToIntroduceContactToAnotherContact: return Name.userWantsToIntroduceContactToAnotherContact.name case .userWantsToShareOwnPublishedDetails: return Name.userWantsToShareOwnPublishedDetails.name case .userWantsToSendInvite: return Name.userWantsToSendInvite.name - case .userRequestedAPIKeyStatus: return Name.userRequestedAPIKeyStatus.name - case .userRequestedNewAPIKeyActivation: return Name.userRequestedNewAPIKeyActivation.name case .userWantsToNavigateToDeepLink: return Name.userWantsToNavigateToDeepLink.name case .useLoadBalancedTurnServersDidChange: return Name.useLoadBalancedTurnServersDidChange.name - case .userWantsToReadReceivedMessagesThatRequiresUserAction: return Name.userWantsToReadReceivedMessagesThatRequiresUserAction.name + case .userWantsToReadReceivedMessageThatRequiresUserAction: return Name.userWantsToReadReceivedMessageThatRequiresUserAction.name case .requestThumbnail: return Name.requestThumbnail.name case .userHasOpenedAReceivedAttachment: return Name.userHasOpenedAReceivedAttachment.name case .userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration: return Name.userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration.name @@ -363,11 +366,9 @@ enum ObvMessengerInternalNotification { case .obvContactAnswer: return Name.obvContactAnswer.name case .userWantsToMarkAllMessagesAsNotNewWithinDiscussion: return Name.userWantsToMarkAllMessagesAsNotNewWithinDiscussion.name case .resyncContactIdentityDevicesWithEngine: return Name.resyncContactIdentityDevicesWithEngine.name - case .resyncContactIdentityDetailsStatusWithEngine: return Name.resyncContactIdentityDetailsStatusWithEngine.name case .serverDoesNotSuppoortCall: return Name.serverDoesNotSuppoortCall.name case .pastedStringIsNotValidOlvidURL: return Name.pastedStringIsNotValidOlvidURL.name case .userWantsToRestartChannelEstablishmentProtocol: return Name.userWantsToRestartChannelEstablishmentProtocol.name - case .userWantsToReCreateChannelEstablishmentProtocol: return Name.userWantsToReCreateChannelEstablishmentProtocol.name case .contactIdentityDetailsWereUpdated: return Name.contactIdentityDetailsWereUpdated.name case .userDidSeeNewDetailsOfContact: return Name.userDidSeeNewDetailsOfContact.name case .userWantsToEditContactNicknameAndPicture: return Name.userWantsToEditContactNicknameAndPicture.name @@ -426,7 +427,7 @@ enum ObvMessengerInternalNotification { case .backupForExportWasExported: return Name.backupForExportWasExported.name case .backupForUploadWasUploaded: return Name.backupForUploadWasUploaded.name case .backupForUploadFailedToUpload: return Name.backupForUploadFailedToUpload.name - case .userWantsToCreateNewOwnedIdentity: return Name.userWantsToCreateNewOwnedIdentity.name + case .userWantsToAddOwnedProfile: return Name.userWantsToAddOwnedProfile.name case .userWantsToSwitchToOtherOwnedIdentity: return Name.userWantsToSwitchToOtherOwnedIdentity.name case .userWantsToDeleteOwnedIdentityButHasNotConfirmedYet: return Name.userWantsToDeleteOwnedIdentityButHasNotConfirmedYet.name case .userWantsToDeleteOwnedIdentityAndHasConfirmed: return Name.userWantsToDeleteOwnedIdentityAndHasConfirmed.name @@ -449,15 +450,26 @@ enum ObvMessengerInternalNotification { case .userWantsToUnarchiveDiscussion: return Name.userWantsToUnarchiveDiscussion.name case .userWantsToRefreshDiscussions: return Name.userWantsToRefreshDiscussions.name case .updateNormalizedSearchKeyOnPersistedDiscussions: return Name.updateNormalizedSearchKeyOnPersistedDiscussions.name + case .aDiscussionSharedConfigurationIsNeededByContact: return Name.aDiscussionSharedConfigurationIsNeededByContact.name + case .aDiscussionSharedConfigurationIsNeededByAnotherOwnedDevice: return Name.aDiscussionSharedConfigurationIsNeededByAnotherOwnedDevice.name + case .userWantsToDeleteOwnedContactGroup: return Name.userWantsToDeleteOwnedContactGroup.name + case .singleOwnedIdentityFlowViewControllerDidAppear: return Name.singleOwnedIdentityFlowViewControllerDidAppear.name + case .userWantsToSetCustomNameOfJoinedGroupV1: return Name.userWantsToSetCustomNameOfJoinedGroupV1.name + case .userWantsToUpdatePersonalNoteOnContact: return Name.userWantsToUpdatePersonalNoteOnContact.name + case .userWantsToUpdatePersonalNoteOnGroupV1: return Name.userWantsToUpdatePersonalNoteOnGroupV1.name + case .userWantsToUpdatePersonalNoteOnGroupV2: return Name.userWantsToUpdatePersonalNoteOnGroupV2.name + case .allPersistedInvitationCanBeMarkedAsOld: return Name.allPersistedInvitationCanBeMarkedAsOld.name } } } private var userInfo: [AnyHashable: Any]? { let info: [AnyHashable: Any]? switch self { - case .messagesAreNotNewAnymore(persistedMessageObjectIDs: let persistedMessageObjectIDs): + case .messagesAreNotNewAnymore(ownedCryptoId: let ownedCryptoId, discussionId: let discussionId, messageIds: let messageIds): info = [ - "persistedMessageObjectIDs": persistedMessageObjectIDs, + "ownedCryptoId": ownedCryptoId, + "discussionId": discussionId, + "messageIds": messageIds, ] case .userWantsToRefreshContactGroupJoined(obvContactGroup: let obvContactGroup): info = [ @@ -474,41 +486,35 @@ enum ObvMessengerInternalNotification { "launchedByBackgroundTask": launchedByBackgroundTask, "completionHandler": completionHandler, ] - case .userWantsToCallAndIsAllowedTo(contactIds: let contactIds, ownedIdentityForRequestingTurnCredentials: let ownedIdentityForRequestingTurnCredentials, groupId: let groupId): + case .userWantsToCallAndIsAllowedTo(ownedCryptoId: let ownedCryptoId, contactCryptoIds: let contactCryptoIds, ownedIdentityForRequestingTurnCredentials: let ownedIdentityForRequestingTurnCredentials, groupId: let groupId): info = [ - "contactIds": contactIds, + "ownedCryptoId": ownedCryptoId, + "contactCryptoIds": contactCryptoIds, "ownedIdentityForRequestingTurnCredentials": ownedIdentityForRequestingTurnCredentials, "groupId": OptionalWrapper(groupId), ] - case .userWantsToSelectAndCallContacts(contactIDs: let contactIDs, groupId: let groupId): + case .userWantsToSelectAndCallContacts(ownedCryptoId: let ownedCryptoId, contactCryptoIds: let contactCryptoIds, groupId: let groupId): info = [ - "contactIDs": contactIDs, + "ownedCryptoId": ownedCryptoId, + "contactCryptoIds": contactCryptoIds, "groupId": OptionalWrapper(groupId), ] - case .userWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: let contactIDs, groupId: let groupId): + case .userWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: let ownedCryptoId, contactCryptoIds: let contactCryptoIds, groupId: let groupId): info = [ - "contactIDs": contactIDs, + "ownedCryptoId": ownedCryptoId, + "contactCryptoIds": contactCryptoIds, "groupId": OptionalWrapper(groupId), ] - case .newWebRTCMessageWasReceived(webrtcMessage: let webrtcMessage, contactId: let contactId, messageUploadTimestampFromServer: let messageUploadTimestampFromServer, messageIdentifierFromEngine: let messageIdentifierFromEngine): + case .newWebRTCMessageWasReceived(webrtcMessage: let webrtcMessage, fromOlvidUser: let fromOlvidUser, messageUID: let messageUID): info = [ "webrtcMessage": webrtcMessage, - "contactId": contactId, - "messageUploadTimestampFromServer": messageUploadTimestampFromServer, - "messageIdentifierFromEngine": messageIdentifierFromEngine, + "fromOlvidUser": fromOlvidUser, + "messageUID": messageUID, ] - case .newObvMessageWasReceivedViaPushKitNotification(obvMessage: let obvMessage): + case .newObvEncryptedPushNotificationWasReceivedViaPushKitNotification(encryptedNotification: let encryptedNotification): info = [ - "obvMessage": obvMessage, + "encryptedNotification": encryptedNotification, ] - case .newWebRTCMessageToSend(webrtcMessage: let webrtcMessage, contactID: let contactID, forStartingCall: let forStartingCall): - info = [ - "webrtcMessage": webrtcMessage, - "contactID": contactID, - "forStartingCall": forStartingCall, - ] - case .isCallKitEnabledSettingDidChange: - info = nil case .isIncludesCallsInRecentsEnabledSettingDidChange: info = nil case .networkInterfaceTypeChanged(isConnected: let isConnected): @@ -529,9 +535,10 @@ enum ObvMessengerInternalNotification { ] case .trashShouldBeEmptied: info = nil - case .userRequestedDeletionOfPersistedDiscussion(persistedDiscussionObjectID: let persistedDiscussionObjectID, deletionType: let deletionType, completionHandler: let completionHandler): + case .userRequestedDeletionOfPersistedDiscussion(ownedCryptoId: let ownedCryptoId, discussionObjectID: let discussionObjectID, deletionType: let deletionType, completionHandler: let completionHandler): info = [ - "persistedDiscussionObjectID": persistedDiscussionObjectID, + "ownedCryptoId": ownedCryptoId, + "discussionObjectID": discussionObjectID, "deletionType": deletionType, "completionHandler": completionHandler, ] @@ -559,25 +566,17 @@ enum ObvMessengerInternalNotification { "ownedIdentity": ownedIdentity, "urlIdentity": urlIdentity, ] - case .userRequestedAPIKeyStatus(ownedCryptoId: let ownedCryptoId, apiKey: let apiKey): - info = [ - "ownedCryptoId": ownedCryptoId, - "apiKey": apiKey, - ] - case .userRequestedNewAPIKeyActivation(ownedCryptoId: let ownedCryptoId, apiKey: let apiKey): - info = [ - "ownedCryptoId": ownedCryptoId, - "apiKey": apiKey, - ] case .userWantsToNavigateToDeepLink(deepLink: let deepLink): info = [ "deepLink": deepLink, ] case .useLoadBalancedTurnServersDidChange: info = nil - case .userWantsToReadReceivedMessagesThatRequiresUserAction(persistedMessageObjectIDs: let persistedMessageObjectIDs): + case .userWantsToReadReceivedMessageThatRequiresUserAction(ownedCryptoId: let ownedCryptoId, discussionId: let discussionId, messageId: let messageId): info = [ - "persistedMessageObjectIDs": persistedMessageObjectIDs, + "ownedCryptoId": ownedCryptoId, + "discussionId": discussionId, + "messageId": messageId, ] case .requestThumbnail(fyleElement: let fyleElement, size: let size, thumbnailType: let thumbnailType, completionHandler: let completionHandler): info = [ @@ -590,11 +589,11 @@ enum ObvMessengerInternalNotification { info = [ "receivedFyleJoinID": receivedFyleJoinID, ] - case .userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(persistedDiscussionObjectID: let persistedDiscussionObjectID, expirationJSON: let expirationJSON, ownedCryptoId: let ownedCryptoId): + case .userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(ownedCryptoId: let ownedCryptoId, discussionId: let discussionId, expirationJSON: let expirationJSON): info = [ - "persistedDiscussionObjectID": persistedDiscussionObjectID, - "expirationJSON": expirationJSON, "ownedCryptoId": ownedCryptoId, + "discussionId": discussionId, + "expirationJSON": expirationJSON, ] case .userWantsToDeleteContact(contactCryptoId: let contactCryptoId, ownedCryptoId: let ownedCryptoId, viewController: let viewController, completionHandler: let completionHandler): info = [ @@ -620,8 +619,9 @@ enum ObvMessengerInternalNotification { "launchedByBackgroundTask": launchedByBackgroundTask, "completionHandler": completionHandler, ] - case .userWantsToSendEditedVersionOfSentMessage(sentMessageObjectID: let sentMessageObjectID, newTextBody: let newTextBody): + case .userWantsToSendEditedVersionOfSentMessage(ownedCryptoId: let ownedCryptoId, sentMessageObjectID: let sentMessageObjectID, newTextBody: let newTextBody): info = [ + "ownedCryptoId": ownedCryptoId, "sentMessageObjectID": sentMessageObjectID, "newTextBody": newTextBody, ] @@ -661,15 +661,9 @@ enum ObvMessengerInternalNotification { "persistedDiscussionObjectID": persistedDiscussionObjectID, "completionHandler": completionHandler, ] - case .resyncContactIdentityDevicesWithEngine(contactCryptoId: let contactCryptoId, ownedCryptoId: let ownedCryptoId): - info = [ - "contactCryptoId": contactCryptoId, - "ownedCryptoId": ownedCryptoId, - ] - case .resyncContactIdentityDetailsStatusWithEngine(contactCryptoId: let contactCryptoId, ownedCryptoId: let ownedCryptoId): + case .resyncContactIdentityDevicesWithEngine(obvContactIdentifier: let obvContactIdentifier): info = [ - "contactCryptoId": contactCryptoId, - "ownedCryptoId": ownedCryptoId, + "obvContactIdentifier": obvContactIdentifier, ] case .serverDoesNotSuppoortCall: info = nil @@ -680,11 +674,6 @@ enum ObvMessengerInternalNotification { "contactCryptoId": contactCryptoId, "ownedCryptoId": ownedCryptoId, ] - case .userWantsToReCreateChannelEstablishmentProtocol(contactCryptoId: let contactCryptoId, ownedCryptoId: let ownedCryptoId): - info = [ - "contactCryptoId": contactCryptoId, - "ownedCryptoId": ownedCryptoId, - ] case .contactIdentityDetailsWereUpdated(contactCryptoId: let contactCryptoId, ownedCryptoId: let ownedCryptoId): info = [ "contactCryptoId": contactCryptoId, @@ -695,11 +684,11 @@ enum ObvMessengerInternalNotification { "contactCryptoId": contactCryptoId, "ownedCryptoId": ownedCryptoId, ] - case .userWantsToEditContactNicknameAndPicture(persistedContactObjectID: let persistedContactObjectID, customDisplayName: let customDisplayName, customPhotoURL: let customPhotoURL): + case .userWantsToEditContactNicknameAndPicture(persistedContactObjectID: let persistedContactObjectID, customDisplayName: let customDisplayName, customPhoto: let customPhoto): info = [ "persistedContactObjectID": persistedContactObjectID, "customDisplayName": OptionalWrapper(customDisplayName), - "customPhotoURL": OptionalWrapper(customPhotoURL), + "customPhoto": OptionalWrapper(customPhoto), ] case .userWantsToBindOwnedIdentityToKeycloak(ownedCryptoId: let ownedCryptoId, obvKeycloakState: let obvKeycloakState, keycloakUserId: let keycloakUserId, completionHandler: let completionHandler): info = [ @@ -784,10 +773,11 @@ enum ObvMessengerInternalNotification { info = [ "ownedCryptoId": ownedCryptoId, ] - case .userWantsToUpdateReaction(messageObjectID: let messageObjectID, emoji: let emoji): + case .userWantsToUpdateReaction(ownedCryptoId: let ownedCryptoId, messageObjectID: let messageObjectID, newEmoji: let newEmoji): info = [ + "ownedCryptoId": ownedCryptoId, "messageObjectID": messageObjectID, - "emoji": OptionalWrapper(emoji), + "newEmoji": OptionalWrapper(newEmoji), ] case .currentUserActivityDidChange(previousUserActivity: let previousUserActivity, currentUserActivity: let currentUserActivity): info = [ @@ -830,8 +820,9 @@ enum ObvMessengerInternalNotification { "contactCryptoId": contactCryptoId, "completion": completion, ] - case .requestSyncAppDatabasesWithEngine(completion: let completion): + case .requestSyncAppDatabasesWithEngine(queuePriority: let queuePriority, completion: let completion): info = [ + "queuePriority": queuePriority, "completion": completion, ] case .uiRequiresSignedOwnedDetails(ownedIdentityCryptoId: let ownedIdentityCryptoId, completion: let completion): @@ -926,11 +917,12 @@ enum ObvMessengerInternalNotification { ] case .metaFlowControllerViewDidAppear: info = nil - case .userWantsToUpdateCustomNameAndGroupV2Photo(groupObjectID: let groupObjectID, customName: let customName, customPhotoURL: let customPhotoURL): + case .userWantsToUpdateCustomNameAndGroupV2Photo(ownedCryptoId: let ownedCryptoId, groupIdentifier: let groupIdentifier, customName: let customName, customPhoto: let customPhoto): info = [ - "groupObjectID": groupObjectID, + "ownedCryptoId": ownedCryptoId, + "groupIdentifier": groupIdentifier, "customName": OptionalWrapper(customName), - "customPhotoURL": OptionalWrapper(customPhotoURL), + "customPhoto": OptionalWrapper(customPhoto), ] case .userHasSeenPublishedDetailsOfGroupV2(groupObjectID: let groupObjectID): info = [ @@ -944,7 +936,7 @@ enum ObvMessengerInternalNotification { info = nil case .backupForUploadFailedToUpload: info = nil - case .userWantsToCreateNewOwnedIdentity: + case .userWantsToAddOwnedProfile: info = nil case .userWantsToSwitchToOtherOwnedIdentity(ownedCryptoId: let ownedCryptoId): info = [ @@ -954,10 +946,10 @@ enum ObvMessengerInternalNotification { info = [ "ownedCryptoId": ownedCryptoId, ] - case .userWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: let ownedCryptoId, notifyContacts: let notifyContacts): + case .userWantsToDeleteOwnedIdentityAndHasConfirmed(ownedCryptoId: let ownedCryptoId, globalOwnedIdentityDeletion: let globalOwnedIdentityDeletion): info = [ "ownedCryptoId": ownedCryptoId, - "notifyContacts": notifyContacts, + "globalOwnedIdentityDeletion": globalOwnedIdentityDeletion, ] case .userWantsToHideOwnedIdentity(ownedCryptoId: let ownedCryptoId, password: let password): info = [ @@ -1043,6 +1035,52 @@ enum ObvMessengerInternalNotification { "ownedIdentity": ownedIdentity, "completionHandler": OptionalWrapper(completionHandler), ] + case .aDiscussionSharedConfigurationIsNeededByContact(contactIdentifier: let contactIdentifier, discussionId: let discussionId): + info = [ + "contactIdentifier": contactIdentifier, + "discussionId": discussionId, + ] + case .aDiscussionSharedConfigurationIsNeededByAnotherOwnedDevice(ownedCryptoId: let ownedCryptoId, discussionId: let discussionId): + info = [ + "ownedCryptoId": ownedCryptoId, + "discussionId": discussionId, + ] + case .userWantsToDeleteOwnedContactGroup(ownedCryptoId: let ownedCryptoId, groupUid: let groupUid): + info = [ + "ownedCryptoId": ownedCryptoId, + "groupUid": groupUid, + ] + case .singleOwnedIdentityFlowViewControllerDidAppear(ownedCryptoId: let ownedCryptoId): + info = [ + "ownedCryptoId": ownedCryptoId, + ] + case .userWantsToSetCustomNameOfJoinedGroupV1(ownedCryptoId: let ownedCryptoId, groupId: let groupId, groupNameCustom: let groupNameCustom): + info = [ + "ownedCryptoId": ownedCryptoId, + "groupId": groupId, + "groupNameCustom": OptionalWrapper(groupNameCustom), + ] + case .userWantsToUpdatePersonalNoteOnContact(contactIdentifier: let contactIdentifier, newText: let newText): + info = [ + "contactIdentifier": contactIdentifier, + "newText": OptionalWrapper(newText), + ] + case .userWantsToUpdatePersonalNoteOnGroupV1(ownedCryptoId: let ownedCryptoId, groupId: let groupId, newText: let newText): + info = [ + "ownedCryptoId": ownedCryptoId, + "groupId": groupId, + "newText": OptionalWrapper(newText), + ] + case .userWantsToUpdatePersonalNoteOnGroupV2(ownedCryptoId: let ownedCryptoId, groupIdentifier: let groupIdentifier, newText: let newText): + info = [ + "ownedCryptoId": ownedCryptoId, + "groupIdentifier": groupIdentifier, + "newText": OptionalWrapper(newText), + ] + case .allPersistedInvitationCanBeMarkedAsOld(ownedCryptoId: let ownedCryptoId): + info = [ + "ownedCryptoId": ownedCryptoId, + ] } return info } @@ -1072,11 +1110,13 @@ enum ObvMessengerInternalNotification { } } - static func observeMessagesAreNotNewAnymore(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (Set>) -> Void) -> NSObjectProtocol { + static func observeMessagesAreNotNewAnymore(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, DiscussionIdentifier, [MessageIdentifier]) -> Void) -> NSObjectProtocol { let name = Name.messagesAreNotNewAnymore.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let persistedMessageObjectIDs = notification.userInfo!["persistedMessageObjectIDs"] as! Set> - block(persistedMessageObjectIDs) + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let discussionId = notification.userInfo!["discussionId"] as! DiscussionIdentifier + let messageIds = notification.userInfo!["messageIds"] as! [MessageIdentifier] + block(ownedCryptoId, discussionId, messageIds) } } @@ -1112,70 +1152,55 @@ enum ObvMessengerInternalNotification { } } - static func observeUserWantsToCallAndIsAllowedTo(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping ([OlvidUserId], ObvCryptoId, GroupIdentifierBasedOnObjectID?) -> Void) -> NSObjectProtocol { + static func observeUserWantsToCallAndIsAllowedTo(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Set, ObvCryptoId, GroupIdentifier?) -> Void) -> NSObjectProtocol { let name = Name.userWantsToCallAndIsAllowedTo.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let contactIds = notification.userInfo!["contactIds"] as! [OlvidUserId] + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let contactCryptoIds = notification.userInfo!["contactCryptoIds"] as! Set let ownedIdentityForRequestingTurnCredentials = notification.userInfo!["ownedIdentityForRequestingTurnCredentials"] as! ObvCryptoId - let groupIdWrapper = notification.userInfo!["groupId"] as! OptionalWrapper + let groupIdWrapper = notification.userInfo!["groupId"] as! OptionalWrapper let groupId = groupIdWrapper.value - block(contactIds, ownedIdentityForRequestingTurnCredentials, groupId) + block(ownedCryptoId, contactCryptoIds, ownedIdentityForRequestingTurnCredentials, groupId) } } - static func observeUserWantsToSelectAndCallContacts(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping ([TypeSafeManagedObjectID], GroupIdentifierBasedOnObjectID?) -> Void) -> NSObjectProtocol { + static func observeUserWantsToSelectAndCallContacts(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Set, GroupIdentifier?) -> Void) -> NSObjectProtocol { let name = Name.userWantsToSelectAndCallContacts.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let contactIDs = notification.userInfo!["contactIDs"] as! [TypeSafeManagedObjectID] - let groupIdWrapper = notification.userInfo!["groupId"] as! OptionalWrapper + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let contactCryptoIds = notification.userInfo!["contactCryptoIds"] as! Set + let groupIdWrapper = notification.userInfo!["groupId"] as! OptionalWrapper let groupId = groupIdWrapper.value - block(contactIDs, groupId) + block(ownedCryptoId, contactCryptoIds, groupId) } } - static func observeUserWantsToCallButWeShouldCheckSheIsAllowedTo(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping ([TypeSafeManagedObjectID], GroupIdentifierBasedOnObjectID?) -> Void) -> NSObjectProtocol { + static func observeUserWantsToCallButWeShouldCheckSheIsAllowedTo(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Set, GroupIdentifier?) -> Void) -> NSObjectProtocol { let name = Name.userWantsToCallButWeShouldCheckSheIsAllowedTo.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let contactIDs = notification.userInfo!["contactIDs"] as! [TypeSafeManagedObjectID] - let groupIdWrapper = notification.userInfo!["groupId"] as! OptionalWrapper + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let contactCryptoIds = notification.userInfo!["contactCryptoIds"] as! Set + let groupIdWrapper = notification.userInfo!["groupId"] as! OptionalWrapper let groupId = groupIdWrapper.value - block(contactIDs, groupId) + block(ownedCryptoId, contactCryptoIds, groupId) } } - static func observeNewWebRTCMessageWasReceived(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (WebRTCMessageJSON, OlvidUserId, Date, Data) -> Void) -> NSObjectProtocol { + static func observeNewWebRTCMessageWasReceived(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (WebRTCMessageJSON, OlvidUserId, UID) -> Void) -> NSObjectProtocol { let name = Name.newWebRTCMessageWasReceived.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in let webrtcMessage = notification.userInfo!["webrtcMessage"] as! WebRTCMessageJSON - let contactId = notification.userInfo!["contactId"] as! OlvidUserId - let messageUploadTimestampFromServer = notification.userInfo!["messageUploadTimestampFromServer"] as! Date - let messageIdentifierFromEngine = notification.userInfo!["messageIdentifierFromEngine"] as! Data - block(webrtcMessage, contactId, messageUploadTimestampFromServer, messageIdentifierFromEngine) - } - } - - static func observeNewObvMessageWasReceivedViaPushKitNotification(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvMessage) -> Void) -> NSObjectProtocol { - let name = Name.newObvMessageWasReceivedViaPushKitNotification.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let obvMessage = notification.userInfo!["obvMessage"] as! ObvMessage - block(obvMessage) - } - } - - static func observeNewWebRTCMessageToSend(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (WebRTCMessageJSON, TypeSafeManagedObjectID, Bool) -> Void) -> NSObjectProtocol { - let name = Name.newWebRTCMessageToSend.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let webrtcMessage = notification.userInfo!["webrtcMessage"] as! WebRTCMessageJSON - let contactID = notification.userInfo!["contactID"] as! TypeSafeManagedObjectID - let forStartingCall = notification.userInfo!["forStartingCall"] as! Bool - block(webrtcMessage, contactID, forStartingCall) + let fromOlvidUser = notification.userInfo!["fromOlvidUser"] as! OlvidUserId + let messageUID = notification.userInfo!["messageUID"] as! UID + block(webrtcMessage, fromOlvidUser, messageUID) } } - static func observeIsCallKitEnabledSettingDidChange(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.isCallKitEnabledSettingDidChange.name + static func observeNewObvEncryptedPushNotificationWasReceivedViaPushKitNotification(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvEncryptedPushNotification) -> Void) -> NSObjectProtocol { + let name = Name.newObvEncryptedPushNotificationWasReceivedViaPushKitNotification.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - block() + let encryptedNotification = notification.userInfo!["encryptedNotification"] as! ObvEncryptedPushNotification + block(encryptedNotification) } } @@ -1232,13 +1257,14 @@ enum ObvMessengerInternalNotification { } } - static func observeUserRequestedDeletionOfPersistedDiscussion(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (NSManagedObjectID, DeletionType, @escaping (Bool) -> Void) -> Void) -> NSObjectProtocol { + static func observeUserRequestedDeletionOfPersistedDiscussion(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, TypeSafeManagedObjectID, DeletionType, @escaping (Bool) -> Void) -> Void) -> NSObjectProtocol { let name = Name.userRequestedDeletionOfPersistedDiscussion.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let persistedDiscussionObjectID = notification.userInfo!["persistedDiscussionObjectID"] as! NSManagedObjectID + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let discussionObjectID = notification.userInfo!["discussionObjectID"] as! TypeSafeManagedObjectID let deletionType = notification.userInfo!["deletionType"] as! DeletionType let completionHandler = notification.userInfo!["completionHandler"] as! (Bool) -> Void - block(persistedDiscussionObjectID, deletionType, completionHandler) + block(ownedCryptoId, discussionObjectID, deletionType, completionHandler) } } @@ -1286,24 +1312,6 @@ enum ObvMessengerInternalNotification { } } - static func observeUserRequestedAPIKeyStatus(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, UUID) -> Void) -> NSObjectProtocol { - let name = Name.userRequestedAPIKeyStatus.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId - let apiKey = notification.userInfo!["apiKey"] as! UUID - block(ownedCryptoId, apiKey) - } - } - - static func observeUserRequestedNewAPIKeyActivation(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, UUID) -> Void) -> NSObjectProtocol { - let name = Name.userRequestedNewAPIKeyActivation.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId - let apiKey = notification.userInfo!["apiKey"] as! UUID - block(ownedCryptoId, apiKey) - } - } - static func observeUserWantsToNavigateToDeepLink(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvDeepLink) -> Void) -> NSObjectProtocol { let name = Name.userWantsToNavigateToDeepLink.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in @@ -1319,11 +1327,13 @@ enum ObvMessengerInternalNotification { } } - static func observeUserWantsToReadReceivedMessagesThatRequiresUserAction(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (Set>) -> Void) -> NSObjectProtocol { - let name = Name.userWantsToReadReceivedMessagesThatRequiresUserAction.name + static func observeUserWantsToReadReceivedMessageThatRequiresUserAction(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, DiscussionIdentifier, ReceivedMessageIdentifier) -> Void) -> NSObjectProtocol { + let name = Name.userWantsToReadReceivedMessageThatRequiresUserAction.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let persistedMessageObjectIDs = notification.userInfo!["persistedMessageObjectIDs"] as! Set> - block(persistedMessageObjectIDs) + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let discussionId = notification.userInfo!["discussionId"] as! DiscussionIdentifier + let messageId = notification.userInfo!["messageId"] as! ReceivedMessageIdentifier + block(ownedCryptoId, discussionId, messageId) } } @@ -1346,13 +1356,13 @@ enum ObvMessengerInternalNotification { } } - static func observeUserWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (NSManagedObjectID, ExpirationJSON, ObvCryptoId) -> Void) -> NSObjectProtocol { + static func observeUserWantsToSetAndShareNewDiscussionSharedExpirationConfiguration(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, DiscussionIdentifier, ExpirationJSON) -> Void) -> NSObjectProtocol { let name = Name.userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let persistedDiscussionObjectID = notification.userInfo!["persistedDiscussionObjectID"] as! NSManagedObjectID - let expirationJSON = notification.userInfo!["expirationJSON"] as! ExpirationJSON let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId - block(persistedDiscussionObjectID, expirationJSON, ownedCryptoId) + let discussionId = notification.userInfo!["discussionId"] as! DiscussionIdentifier + let expirationJSON = notification.userInfo!["expirationJSON"] as! ExpirationJSON + block(ownedCryptoId, discussionId, expirationJSON) } } @@ -1400,12 +1410,13 @@ enum ObvMessengerInternalNotification { } } - static func observeUserWantsToSendEditedVersionOfSentMessage(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (NSManagedObjectID, String) -> Void) -> NSObjectProtocol { + static func observeUserWantsToSendEditedVersionOfSentMessage(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, TypeSafeManagedObjectID, String) -> Void) -> NSObjectProtocol { let name = Name.userWantsToSendEditedVersionOfSentMessage.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let sentMessageObjectID = notification.userInfo!["sentMessageObjectID"] as! NSManagedObjectID + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let sentMessageObjectID = notification.userInfo!["sentMessageObjectID"] as! TypeSafeManagedObjectID let newTextBody = notification.userInfo!["newTextBody"] as! String - block(sentMessageObjectID, newTextBody) + block(ownedCryptoId, sentMessageObjectID, newTextBody) } } @@ -1473,21 +1484,11 @@ enum ObvMessengerInternalNotification { } } - static func observeResyncContactIdentityDevicesWithEngine(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, ObvCryptoId) -> Void) -> NSObjectProtocol { + static func observeResyncContactIdentityDevicesWithEngine(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentifier) -> Void) -> NSObjectProtocol { let name = Name.resyncContactIdentityDevicesWithEngine.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let contactCryptoId = notification.userInfo!["contactCryptoId"] as! ObvCryptoId - let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId - block(contactCryptoId, ownedCryptoId) - } - } - - static func observeResyncContactIdentityDetailsStatusWithEngine(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, ObvCryptoId) -> Void) -> NSObjectProtocol { - let name = Name.resyncContactIdentityDetailsStatusWithEngine.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let contactCryptoId = notification.userInfo!["contactCryptoId"] as! ObvCryptoId - let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId - block(contactCryptoId, ownedCryptoId) + let obvContactIdentifier = notification.userInfo!["obvContactIdentifier"] as! ObvContactIdentifier + block(obvContactIdentifier) } } @@ -1514,15 +1515,6 @@ enum ObvMessengerInternalNotification { } } - static func observeUserWantsToReCreateChannelEstablishmentProtocol(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, ObvCryptoId) -> Void) -> NSObjectProtocol { - let name = Name.userWantsToReCreateChannelEstablishmentProtocol.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let contactCryptoId = notification.userInfo!["contactCryptoId"] as! ObvCryptoId - let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId - block(contactCryptoId, ownedCryptoId) - } - } - static func observeContactIdentityDetailsWereUpdated(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, ObvCryptoId) -> Void) -> NSObjectProtocol { let name = Name.contactIdentityDetailsWereUpdated.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in @@ -1541,15 +1533,15 @@ enum ObvMessengerInternalNotification { } } - static func observeUserWantsToEditContactNicknameAndPicture(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (NSManagedObjectID, String?, URL?) -> Void) -> NSObjectProtocol { + static func observeUserWantsToEditContactNicknameAndPicture(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (NSManagedObjectID, String?, UIImage?) -> Void) -> NSObjectProtocol { let name = Name.userWantsToEditContactNicknameAndPicture.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in let persistedContactObjectID = notification.userInfo!["persistedContactObjectID"] as! NSManagedObjectID let customDisplayNameWrapper = notification.userInfo!["customDisplayName"] as! OptionalWrapper let customDisplayName = customDisplayNameWrapper.value - let customPhotoURLWrapper = notification.userInfo!["customPhotoURL"] as! OptionalWrapper - let customPhotoURL = customPhotoURLWrapper.value - block(persistedContactObjectID, customDisplayName, customPhotoURL) + let customPhotoWrapper = notification.userInfo!["customPhoto"] as! OptionalWrapper + let customPhoto = customPhotoWrapper.value + block(persistedContactObjectID, customDisplayName, customPhoto) } } @@ -1716,13 +1708,14 @@ enum ObvMessengerInternalNotification { } } - static func observeUserWantsToUpdateReaction(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (TypeSafeManagedObjectID, String?) -> Void) -> NSObjectProtocol { + static func observeUserWantsToUpdateReaction(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, TypeSafeManagedObjectID, String?) -> Void) -> NSObjectProtocol { let name = Name.userWantsToUpdateReaction.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId let messageObjectID = notification.userInfo!["messageObjectID"] as! TypeSafeManagedObjectID - let emojiWrapper = notification.userInfo!["emoji"] as! OptionalWrapper - let emoji = emojiWrapper.value - block(messageObjectID, emoji) + let newEmojiWrapper = notification.userInfo!["newEmoji"] as! OptionalWrapper + let newEmoji = newEmojiWrapper.value + block(ownedCryptoId, messageObjectID, newEmoji) } } @@ -1816,11 +1809,12 @@ enum ObvMessengerInternalNotification { } } - static func observeRequestSyncAppDatabasesWithEngine(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (@escaping (Result) -> Void) -> Void) -> NSObjectProtocol { + static func observeRequestSyncAppDatabasesWithEngine(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (Operation.QueuePriority, @escaping (Result) -> Void) -> Void) -> NSObjectProtocol { let name = Name.requestSyncAppDatabasesWithEngine.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let queuePriority = notification.userInfo!["queuePriority"] as! Operation.QueuePriority let completion = notification.userInfo!["completion"] as! (Result) -> Void - block(completion) + block(queuePriority, completion) } } @@ -1988,15 +1982,16 @@ enum ObvMessengerInternalNotification { } } - static func observeUserWantsToUpdateCustomNameAndGroupV2Photo(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (TypeSafeManagedObjectID, String?, URL?) -> Void) -> NSObjectProtocol { + static func observeUserWantsToUpdateCustomNameAndGroupV2Photo(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Data, String?, UIImage?) -> Void) -> NSObjectProtocol { let name = Name.userWantsToUpdateCustomNameAndGroupV2Photo.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let groupObjectID = notification.userInfo!["groupObjectID"] as! TypeSafeManagedObjectID + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let groupIdentifier = notification.userInfo!["groupIdentifier"] as! Data let customNameWrapper = notification.userInfo!["customName"] as! OptionalWrapper let customName = customNameWrapper.value - let customPhotoURLWrapper = notification.userInfo!["customPhotoURL"] as! OptionalWrapper - let customPhotoURL = customPhotoURLWrapper.value - block(groupObjectID, customName, customPhotoURL) + let customPhotoWrapper = notification.userInfo!["customPhoto"] as! OptionalWrapper + let customPhoto = customPhotoWrapper.value + block(ownedCryptoId, groupIdentifier, customName, customPhoto) } } @@ -2036,8 +2031,8 @@ enum ObvMessengerInternalNotification { } } - static func observeUserWantsToCreateNewOwnedIdentity(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.userWantsToCreateNewOwnedIdentity.name + static func observeUserWantsToAddOwnedProfile(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { + let name = Name.userWantsToAddOwnedProfile.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in block() } @@ -2063,8 +2058,8 @@ enum ObvMessengerInternalNotification { let name = Name.userWantsToDeleteOwnedIdentityAndHasConfirmed.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId - let notifyContacts = notification.userInfo!["notifyContacts"] as! Bool - block(ownedCryptoId, notifyContacts) + let globalOwnedIdentityDeletion = notification.userInfo!["globalOwnedIdentityDeletion"] as! Bool + block(ownedCryptoId, globalOwnedIdentityDeletion) } } @@ -2236,4 +2231,90 @@ enum ObvMessengerInternalNotification { } } + static func observeADiscussionSharedConfigurationIsNeededByContact(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentifier, DiscussionIdentifier) -> Void) -> NSObjectProtocol { + let name = Name.aDiscussionSharedConfigurationIsNeededByContact.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let contactIdentifier = notification.userInfo!["contactIdentifier"] as! ObvContactIdentifier + let discussionId = notification.userInfo!["discussionId"] as! DiscussionIdentifier + block(contactIdentifier, discussionId) + } + } + + static func observeADiscussionSharedConfigurationIsNeededByAnotherOwnedDevice(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, DiscussionIdentifier) -> Void) -> NSObjectProtocol { + let name = Name.aDiscussionSharedConfigurationIsNeededByAnotherOwnedDevice.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let discussionId = notification.userInfo!["discussionId"] as! DiscussionIdentifier + block(ownedCryptoId, discussionId) + } + } + + static func observeUserWantsToDeleteOwnedContactGroup(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, UID) -> Void) -> NSObjectProtocol { + let name = Name.userWantsToDeleteOwnedContactGroup.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let groupUid = notification.userInfo!["groupUid"] as! UID + block(ownedCryptoId, groupUid) + } + } + + static func observeSingleOwnedIdentityFlowViewControllerDidAppear(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId) -> Void) -> NSObjectProtocol { + let name = Name.singleOwnedIdentityFlowViewControllerDidAppear.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + block(ownedCryptoId) + } + } + + static func observeUserWantsToSetCustomNameOfJoinedGroupV1(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, GroupV1Identifier, String?) -> Void) -> NSObjectProtocol { + let name = Name.userWantsToSetCustomNameOfJoinedGroupV1.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let groupId = notification.userInfo!["groupId"] as! GroupV1Identifier + let groupNameCustomWrapper = notification.userInfo!["groupNameCustom"] as! OptionalWrapper + let groupNameCustom = groupNameCustomWrapper.value + block(ownedCryptoId, groupId, groupNameCustom) + } + } + + static func observeUserWantsToUpdatePersonalNoteOnContact(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvContactIdentifier, String?) -> Void) -> NSObjectProtocol { + let name = Name.userWantsToUpdatePersonalNoteOnContact.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let contactIdentifier = notification.userInfo!["contactIdentifier"] as! ObvContactIdentifier + let newTextWrapper = notification.userInfo!["newText"] as! OptionalWrapper + let newText = newTextWrapper.value + block(contactIdentifier, newText) + } + } + + static func observeUserWantsToUpdatePersonalNoteOnGroupV1(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, GroupV1Identifier, String?) -> Void) -> NSObjectProtocol { + let name = Name.userWantsToUpdatePersonalNoteOnGroupV1.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let groupId = notification.userInfo!["groupId"] as! GroupV1Identifier + let newTextWrapper = notification.userInfo!["newText"] as! OptionalWrapper + let newText = newTextWrapper.value + block(ownedCryptoId, groupId, newText) + } + } + + static func observeUserWantsToUpdatePersonalNoteOnGroupV2(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, Data, String?) -> Void) -> NSObjectProtocol { + let name = Name.userWantsToUpdatePersonalNoteOnGroupV2.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let groupIdentifier = notification.userInfo!["groupIdentifier"] as! Data + let newTextWrapper = notification.userInfo!["newText"] as! OptionalWrapper + let newText = newTextWrapper.value + block(ownedCryptoId, groupIdentifier, newText) + } + } + + static func observeAllPersistedInvitationCanBeMarkedAsOld(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId) -> Void) -> NSObjectProtocol { + let name = Name.allPersistedInvitationCanBeMarkedAsOld.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + block(ownedCryptoId) + } + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Notifications/ObvMessengerInternalNotification.yml b/iOSClient/ObvMessenger/ObvMessenger/Notifications/ObvMessengerInternalNotification.yml deleted file mode 100644 index 4b9abbe7..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Notifications/ObvMessengerInternalNotification.yml +++ /dev/null @@ -1,464 +0,0 @@ -import: - - Foundation - - CoreData - - ObvTypes - - ObvEngine - - OlvidUtils - - ObvCrypto - - ObvUICoreData -notifications: -- name: messagesAreNotNewAnymore - params: - - {name: persistedMessageObjectIDs, type: Set>} -- name: userWantsToRefreshContactGroupJoined - params: - - {name: obvContactGroup, type: ObvContactGroup} -- name: externalTransactionsWereMergedIntoViewContext -- name: newMuteExpiration - params: - - {name: expirationDate, type: Date} -- name: wipeAllMessagesThatExpiredEarlierThanNow - params: - - {name: launchedByBackgroundTask, type: Bool} - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: userWantsToCallAndIsAllowedTo - params: - - {name: contactIds, type: [OlvidUserId]} - - {name: ownedIdentityForRequestingTurnCredentials, type: ObvCryptoId} - - {name: groupId, type: "GroupIdentifierBasedOnObjectID?"} -- name: userWantsToSelectAndCallContacts - params: - - {name: contactIDs, type: [TypeSafeManagedObjectID]} - - {name: groupId, type: "GroupIdentifierBasedOnObjectID?"} -- name: userWantsToCallButWeShouldCheckSheIsAllowedTo - params: - - {name: contactIDs, type: [TypeSafeManagedObjectID]} - - {name: groupId, type: "GroupIdentifierBasedOnObjectID?"} -- name: newWebRTCMessageWasReceived - params: - - {name: webrtcMessage, type: WebRTCMessageJSON} - - {name: contactId, type: OlvidUserId} - - {name: messageUploadTimestampFromServer, type: Date} - - {name: messageIdentifierFromEngine, type: Data} -- name: newObvMessageWasReceivedViaPushKitNotification - params: - - {name: obvMessage, type: ObvMessage} -- name: newWebRTCMessageToSend - params: - - {name: webrtcMessage, type: WebRTCMessageJSON} - - {name: contactID, type: TypeSafeManagedObjectID} - - {name: forStartingCall, type: Bool} -- name: isCallKitEnabledSettingDidChange -- name: isIncludesCallsInRecentsEnabledSettingDidChange -- name: networkInterfaceTypeChanged - params: - - {name: isConnected, type: Bool} -- name: outgoingCallFailedBecauseUserDeniedRecordPermission -- name: voiceMessageFailedBecauseUserDeniedRecordPermission -- name: rejectedIncomingCallBecauseUserDeniedRecordPermission -- name: userRequestedDeletionOfPersistedMessage - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: persistedMessageObjectID, type: NSManagedObjectID} - - {name: deletionType, type: DeletionType} -- name: trashShouldBeEmptied -- name: userRequestedDeletionOfPersistedDiscussion - params: - - {name: persistedDiscussionObjectID, type: NSManagedObjectID} - - {name: deletionType, type: DeletionType} - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: newCallLogItem - params: - - {name: objectID, type: TypeSafeManagedObjectID} -- name: callLogItemWasUpdated - params: - - {name: objectID, type: TypeSafeManagedObjectID} -- name: userWantsToIntroduceContactToAnotherContact - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: firstContactCryptoId, type: ObvCryptoId} - - {name: secondContactCryptoIds, type: Set} -- name: userWantsToShareOwnPublishedDetails - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: sourceView, type: UIView} -- name: userWantsToSendInvite - params: - - {name: ownedIdentity, type: ObvOwnedIdentity} - - {name: urlIdentity, type: ObvURLIdentity} -- name: userRequestedAPIKeyStatus - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: apiKey, type: UUID} -- name: userRequestedNewAPIKeyActivation - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: apiKey, type: UUID} -- name: userWantsToNavigateToDeepLink - params: - - {name: deepLink, type: ObvDeepLink} -- name: useLoadBalancedTurnServersDidChange -- name: userWantsToReadReceivedMessagesThatRequiresUserAction - params: - - {name: persistedMessageObjectIDs, type: Set>} -- name: requestThumbnail - params: - - {name: fyleElement, type: FyleElement} - - {name: size, type: CGSize} - - {name: thumbnailType, type: ThumbnailType} - - {name: completionHandler, type: ((Thumbnail) -> Void), escaping: true} -- name: userHasOpenedAReceivedAttachment - params: - - {name: receivedFyleJoinID, type: TypeSafeManagedObjectID} -- name: userWantsToSetAndShareNewDiscussionSharedExpirationConfiguration - params: - - {name: persistedDiscussionObjectID, type: NSManagedObjectID} - - {name: expirationJSON, type: ExpirationJSON} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: userWantsToDeleteContact - params: - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: viewController, type: UIViewController} - - {name: completionHandler, type: ((Bool) -> Void), escaping: true} -- name: cleanExpiredMessagesBackgroundTaskWasLaunched - params: - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: applyRetentionPoliciesBackgroundTaskWasLaunched - params: - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: updateBadgeBackgroundTaskWasLaunched - params: - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: applyAllRetentionPoliciesNow - params: - - {name: launchedByBackgroundTask, type: Bool} - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: userWantsToSendEditedVersionOfSentMessage - params: - - {name: sentMessageObjectID, type: NSManagedObjectID} - - {name: newTextBody, type: String} -- name: newProfilePictureCandidateToCache - params: - - {name: requestUUID, type: UUID} - - {name: profilePicture, type: UIImage} -- name: newCachedProfilePictureCandidate - params: - - {name: requestUUID, type: UUID} - - {name: url, type: URL} -- name: newCustomContactPictureCandidateToSave - params: - - {name: requestUUID, type: UUID} - - {name: profilePicture, type: UIImage} -- name: newSavedCustomContactPictureCandidate - params: - - {name: requestUUID, type: UUID} - - {name: url, type: URL} -- name: obvContactRequest - params: - - {name: requestUUID, type: UUID} - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: obvContactAnswer - params: - - {name: requestUUID, type: UUID} - - {name: obvContact, type: ObvContactIdentity} -- name: userWantsToMarkAllMessagesAsNotNewWithinDiscussion - params: - - {name: persistedDiscussionObjectID, type: NSManagedObjectID} - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: resyncContactIdentityDevicesWithEngine - params: - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: resyncContactIdentityDetailsStatusWithEngine - params: - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: serverDoesNotSuppoortCall -- name: pastedStringIsNotValidOlvidURL -- name: userWantsToRestartChannelEstablishmentProtocol - params: - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: userWantsToReCreateChannelEstablishmentProtocol - params: - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: contactIdentityDetailsWereUpdated - params: - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: userDidSeeNewDetailsOfContact - params: - - {name: contactCryptoId, type: ObvCryptoId} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: userWantsToEditContactNicknameAndPicture - params: - - {name: persistedContactObjectID, type: NSManagedObjectID} - - {name: customDisplayName, type: "String?"} - - {name: customPhotoURL, type: "URL?"} -- name: userWantsToBindOwnedIdentityToKeycloak - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: obvKeycloakState, type: ObvKeycloakState} - - {name: keycloakUserId, type: String} - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: userWantsToUnbindOwnedIdentityFromKeycloak - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: userWantsToRemoveDraftFyleJoin - params: - - {name: draftFyleJoinObjectID, type: TypeSafeManagedObjectID} -- name: userWantsToChangeContactsSortOrder - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: sortOrder, type: ContactsSortOrder} -- name: userWantsToUpdateLocalConfigurationOfDiscussion - params: - - {name: value, type: PersistedDiscussionLocalConfigurationValue} - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: completionHandler, type: () -> Void, escaping: true} -- name: audioInputHasBeenActivated - params: - - {name: label, type: String} - - {name: activate, type: () -> Void, escaping: true} -- name: aViewRequiresObvMutualScanUrl - params: - - {name: remoteIdentity, type: Data} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: completionHandler, type: ((ObvMutualScanUrl) -> Void), escaping: true} -- name: userWantsToStartTrustEstablishmentWithMutualScanProtocol - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: mutualScanUrl, type: ObvMutualScanUrl} -- name: insertDebugMessagesInAllExistingDiscussions -- name: draftExpirationWasBeenUpdated - params: - - {name: persistedDraftObjectID, type: TypeSafeManagedObjectID} -- name: cleanExpiredMuteNotficationsThatExpiredEarlierThanNow -- name: needToRecomputeAllBadges - params: - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: userWantsToDisplayContactIntroductionScreen - params: - - {name: contactObjectID, type: TypeSafeManagedObjectID} - - {name: viewController, type: UIViewController} -- name: userDidTapOnMissedMessageBubble -- name: olvidSnackBarShouldBeShown - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: snackBarCategory, type: OlvidSnackBarCategory} -- name: UserWantsToSeeDetailedExplanationsOfSnackBar - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: snackBarCategory, type: OlvidSnackBarCategory} -- name: UserDismissedSnackBarForLater - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: snackBarCategory, type: OlvidSnackBarCategory} -- name: UserRequestedToResetAllAlerts -- name: olvidSnackBarShouldBeHidden - params: - - {name: ownedCryptoId, type: ObvCryptoId} -- name: userWantsToUpdateReaction - params: - - {name: messageObjectID, type: TypeSafeManagedObjectID} - - {name: emoji, type: "String?"} -- name: currentUserActivityDidChange - params: - - {name: previousUserActivity, type: ObvUserActivityType} - - {name: currentUserActivity, type: ObvUserActivityType} -- name: displayedSnackBarShouldBeRefreshed -- name: requestUserDeniedRecordPermissionAlert -- name: userWantsToStartIncrementalCleanBackup - params: - - {name: cleanAllDevices, type: Bool} -- name: incrementalCleanBackupStarts -- name: incrementalCleanBackupTerminates -- name: userWantsToUnblockContact - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: contactCryptoId, type: ObvCryptoId} -- name: userWantsToReblockContact - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: contactCryptoId, type: ObvCryptoId} -- name: installedOlvidAppIsOutdated - params: - - {name: presentingViewController, type: "UIViewController?"} -- name: userOwnedIdentityWasRevokedByKeycloak - params: - - {name: ownedCryptoId, type: ObvCryptoId} -- name: uiRequiresSignedContactDetails - params: - - {name: ownedIdentityCryptoId, type: ObvCryptoId} - - {name: contactCryptoId, type: ObvCryptoId} - - {name: completion, type: "(SignedObvKeycloakUserDetails?) -> Void", escaping: true} -- name: requestSyncAppDatabasesWithEngine - params: - - {name: completion, type: "(Result) -> Void", escaping: true} -- name: uiRequiresSignedOwnedDetails - params: - - {name: ownedIdentityCryptoId, type: ObvCryptoId} - - {name: completion, type: "(SignedObvKeycloakUserDetails?) -> Void", escaping: true} -- name: listMessagesOnServerBackgroundTaskWasLaunched - params: - - {name: completionHandler, type: (Bool) -> Void, escaping: true} -- name: userWantsToSendOneToOneInvitationToContact - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: contactCryptoId, type: ObvCryptoId} -- name: userRepliedToReceivedMessageWithinTheNotificationExtension - params: - - {name: contactPermanentID, type: ObvManagedObjectPermanentID} - - {name: messageIdentifierFromEngine, type: Data} - - {name: textBody, type: String} - - {name: completionHandler, type: () -> Void, escaping: true} -- name: userRepliedToMissedCallWithinTheNotificationExtension - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: textBody, type: String} - - {name: completionHandler, type: () -> Void, escaping: true} -- name: userWantsToMarkAsReadMessageWithinTheNotificationExtension - params: - - {name: contactPermanentID, type: ObvManagedObjectPermanentID} - - {name: messageIdentifierFromEngine, type: Data} - - {name: completionHandler, type: () -> Void, escaping: true} -- name: userWantsToWipeFyleMessageJoinWithStatus - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: objectIDs, type: Set>} -- name: userWantsToCreateNewGroupV1 - params: - - {name: groupName, type: String} - - {name: groupDescription, type: "String?"} - - {name: groupMembersCryptoIds, type: Set} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: photoURL, type: "URL?"} -- name: userWantsToCreateNewGroupV2 - params: - - {name: groupCoreDetails, type: GroupV2CoreDetails} - - {name: ownPermissions, type: Set} - - {name: otherGroupMembers, type: Set} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: photoURL, type: "URL?"} -- name: userWantsToForwardMessage - params: - - {name: messagePermanentID, type: ObvManagedObjectPermanentID} - - {name: discussionPermanentIDs, type: Set>} -- name: userWantsToUpdateGroupV2 - params: - - {name: groupObjectID, type: TypeSafeManagedObjectID} - - {name: changeset, type: ObvGroupV2.Changeset} -- name: inviteContactsToGroupOwned - params: - - {name: groupUid, type: UID} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: newGroupMembers, type: Set} -- name: removeContactsFromGroupOwned - params: - - {name: groupUid, type: UID} - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: removedContacts, type: Set} -- name: badgeForNewMessagesHasBeenUpdated - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: newCount, type: Int} -- name: badgeForInvitationsHasBeenUpdated - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: newCount, type: Int} -- name: requestRunningLog - params: - - {name: completion, type: (RunningLogError) -> Void} -- name: metaFlowControllerViewDidAppear -- name: userWantsToUpdateCustomNameAndGroupV2Photo - params: - - {name: groupObjectID, type: TypeSafeManagedObjectID} - - {name: customName, type: "String?"} - - {name: customPhotoURL, type: "URL?"} -- name: userHasSeenPublishedDetailsOfGroupV2 - params: - - {name: groupObjectID, type: TypeSafeManagedObjectID} -- name: tooManyWrongPasscodeAttemptsCausedLockOut -- name: backupForExportWasExported -- name: backupForUploadWasUploaded -- name: backupForUploadFailedToUpload -- name: userWantsToCreateNewOwnedIdentity -- name: userWantsToSwitchToOtherOwnedIdentity - params: - - {name: ownedCryptoId, type: ObvCryptoId} -- name: userWantsToDeleteOwnedIdentityButHasNotConfirmedYet - params: - - {name: ownedCryptoId, type: ObvCryptoId} -- name: userWantsToDeleteOwnedIdentityAndHasConfirmed - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: notifyContacts, type: Bool} -- name: userWantsToHideOwnedIdentity - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: password, type: String} -- name: failedToHideOwnedIdentity - params: - - {name: ownedCryptoId, type: ObvCryptoId} -- name: userWantsToSwitchToOtherHiddenOwnedIdentity - params: - - {name: password, type: String} -- name: userWantsToUnhideOwnedIdentity - params: - - {name: ownedCryptoId, type: ObvCryptoId} -- name: metaFlowControllerDidSwitchToOwnedIdentity - params: - - {name: ownedCryptoId, type: ObvCryptoId} -- name: recomputeRecomputeBadgeCountForDiscussionsTabForAllOwnedIdentities -- name: closeAnyOpenHiddenOwnedIdentity -- name: userWantsToUpdateOwnedCustomDisplayName - params: - - {name: ownedCryptoId, type: ObvCryptoId} - - {name: newCustomDisplayName, type: "String?"} -- name: userWantsToReorderDiscussions - params: - - {name: discussionObjectIds, type: [NSManagedObjectID]} - - {name: ownedIdentity, type: ObvCryptoId} - - {name: completionHandler, type: "((Bool) -> Void)?"} -- name: betaUserWantsToDebugCoordinatorsQueue -- name: betaUserWantsToSeeLogString - params: - - {name: logString, type: String} -- name: draftFyleJoinWasDeleted - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: draftPermanentID, type: ObvManagedObjectPermanentID} - - {name: draftFyleJoinPermanentID, type: ObvManagedObjectPermanentID} -- name: draftToSendWasReset - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: draftPermanentID, type: ObvManagedObjectPermanentID} -- name: fyleMessageJoinWasWiped - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: messagePermanentID, type: ObvManagedObjectPermanentID} - - {name: fyleMessageJoinPermanentID, type: ObvManagedObjectPermanentID} -- name: userWantsToUpdateDiscussionLocalConfiguration - params: - - {name: value, type: PersistedDiscussionLocalConfigurationValue} - - {name: localConfigurationObjectID, type: TypeSafeManagedObjectID} -- name: userWantsToArchiveDiscussion - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: completionHandler, type: "((Bool) -> Void)?"} -- name: userWantsToUnarchiveDiscussion - params: - - {name: discussionPermanentID, type: ObvManagedObjectPermanentID} - - {name: updateTimestampOfLastMessage, type: Bool} - - {name: completionHandler, type: "((Bool) -> Void)?"} -- name: userWantsToRefreshDiscussions - params: - - {name: completionHandler, type: "(() -> Void)", escaping: true} -- name: updateNormalizedSearchKeyOnPersistedDiscussions - params: - - {name: ownedIdentity, type: ObvCryptoId} - - {name: completionHandler, type: "(() -> Void)?"} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Notifications/SubscriptionNotification.swift b/iOSClient/ObvMessenger/ObvMessenger/Notifications/SubscriptionNotification.swift deleted file mode 100644 index ed20746b..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Notifications/SubscriptionNotification.swift +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2023 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import StoreKit - -fileprivate struct OptionalWrapper { - let value: T? - public init() { - self.value = nil - } - public init(_ value: T?) { - self.value = value - } -} - -enum SubscriptionNotification { - case newListOfSKProducts(result: Result<[SKProduct], SubscriptionManager.RequestedListOfSKProductsError>) - case userRequestedToBuySKProduct(skProduct: SKProduct) - case skProductPurchaseFailed(error: SKError) - case userRequestedListOfSKProducts - case userDecidedToCancelToTheSKProductPurchase - case skProductPurchaseWasDeferred - case userRequestedToRestoreAppStorePurchases - case thereWasNoAppStorePurchaseToRestore - case allPurchaseTransactionsSentToEngineWereProcessed - - private enum Name { - case newListOfSKProducts - case userRequestedToBuySKProduct - case skProductPurchaseFailed - case userRequestedListOfSKProducts - case userDecidedToCancelToTheSKProductPurchase - case skProductPurchaseWasDeferred - case userRequestedToRestoreAppStorePurchases - case thereWasNoAppStorePurchaseToRestore - case allPurchaseTransactionsSentToEngineWereProcessed - - private var namePrefix: String { String(describing: SubscriptionNotification.self) } - - private var nameSuffix: String { String(describing: self) } - - var name: NSNotification.Name { - let name = [namePrefix, nameSuffix].joined(separator: ".") - return NSNotification.Name(name) - } - - static func forInternalNotification(_ notification: SubscriptionNotification) -> NSNotification.Name { - switch notification { - case .newListOfSKProducts: return Name.newListOfSKProducts.name - case .userRequestedToBuySKProduct: return Name.userRequestedToBuySKProduct.name - case .skProductPurchaseFailed: return Name.skProductPurchaseFailed.name - case .userRequestedListOfSKProducts: return Name.userRequestedListOfSKProducts.name - case .userDecidedToCancelToTheSKProductPurchase: return Name.userDecidedToCancelToTheSKProductPurchase.name - case .skProductPurchaseWasDeferred: return Name.skProductPurchaseWasDeferred.name - case .userRequestedToRestoreAppStorePurchases: return Name.userRequestedToRestoreAppStorePurchases.name - case .thereWasNoAppStorePurchaseToRestore: return Name.thereWasNoAppStorePurchaseToRestore.name - case .allPurchaseTransactionsSentToEngineWereProcessed: return Name.allPurchaseTransactionsSentToEngineWereProcessed.name - } - } - } - private var userInfo: [AnyHashable: Any]? { - let info: [AnyHashable: Any]? - switch self { - case .newListOfSKProducts(result: let result): - info = [ - "result": result, - ] - case .userRequestedToBuySKProduct(skProduct: let skProduct): - info = [ - "skProduct": skProduct, - ] - case .skProductPurchaseFailed(error: let error): - info = [ - "error": error, - ] - case .userRequestedListOfSKProducts: - info = nil - case .userDecidedToCancelToTheSKProductPurchase: - info = nil - case .skProductPurchaseWasDeferred: - info = nil - case .userRequestedToRestoreAppStorePurchases: - info = nil - case .thereWasNoAppStorePurchaseToRestore: - info = nil - case .allPurchaseTransactionsSentToEngineWereProcessed: - info = nil - } - return info - } - - func post(object anObject: Any? = nil) { - let name = Name.forInternalNotification(self) - NotificationCenter.default.post(name: name, object: anObject, userInfo: userInfo) - } - - func postOnDispatchQueue(object anObject: Any? = nil) { - let name = Name.forInternalNotification(self) - postOnDispatchQueue(withLabel: "Queue for posting \(name.rawValue) notification", object: anObject) - } - - func postOnDispatchQueue(_ queue: DispatchQueue) { - let name = Name.forInternalNotification(self) - queue.async { - NotificationCenter.default.post(name: name, object: nil, userInfo: userInfo) - } - } - - private func postOnDispatchQueue(withLabel label: String, object anObject: Any? = nil) { - let name = Name.forInternalNotification(self) - let userInfo = self.userInfo - DispatchQueue(label: label).async { - NotificationCenter.default.post(name: name, object: anObject, userInfo: userInfo) - } - } - - static func observeNewListOfSKProducts(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (Result<[SKProduct], SubscriptionManager.RequestedListOfSKProductsError>) -> Void) -> NSObjectProtocol { - let name = Name.newListOfSKProducts.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let result = notification.userInfo!["result"] as! Result<[SKProduct], SubscriptionManager.RequestedListOfSKProductsError> - block(result) - } - } - - static func observeUserRequestedToBuySKProduct(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (SKProduct) -> Void) -> NSObjectProtocol { - let name = Name.userRequestedToBuySKProduct.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let skProduct = notification.userInfo!["skProduct"] as! SKProduct - block(skProduct) - } - } - - static func observeSkProductPurchaseFailed(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (SKError) -> Void) -> NSObjectProtocol { - let name = Name.skProductPurchaseFailed.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let error = notification.userInfo!["error"] as! SKError - block(error) - } - } - - static func observeUserRequestedListOfSKProducts(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.userRequestedListOfSKProducts.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - block() - } - } - - static func observeUserDecidedToCancelToTheSKProductPurchase(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.userDecidedToCancelToTheSKProductPurchase.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - block() - } - } - - static func observeSkProductPurchaseWasDeferred(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.skProductPurchaseWasDeferred.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - block() - } - } - - static func observeUserRequestedToRestoreAppStorePurchases(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.userRequestedToRestoreAppStorePurchases.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - block() - } - } - - static func observeThereWasNoAppStorePurchaseToRestore(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.thereWasNoAppStorePurchaseToRestore.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - block() - } - } - - static func observeAllPurchaseTransactionsSentToEngineWereProcessed(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.allPurchaseTransactionsSentToEngineWereProcessed.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - block() - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Notifications/SubscriptionNotification.yml b/iOSClient/ObvMessenger/ObvMessenger/Notifications/SubscriptionNotification.yml deleted file mode 100644 index e653d47f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Notifications/SubscriptionNotification.yml +++ /dev/null @@ -1,19 +0,0 @@ -import: - - Foundation - - StoreKit -notifications: -- name: newListOfSKProducts - params: - - {name: result, type: "Result<[SKProduct], SubscriptionManager.RequestedListOfSKProductsError>"} -- name: userRequestedToBuySKProduct - params: - - {name: skProduct, type: SKProduct} -- name: skProductPurchaseFailed - params: - - {name: error, type: SKError} -- name: userRequestedListOfSKProducts -- name: userDecidedToCancelToTheSKProductPurchase -- name: skProductPurchaseWasDeferred -- name: userRequestedToRestoreAppStorePurchases -- name: thereWasNoAppStorePurchaseToRestore -- name: allPurchaseTransactionsSentToEngineWereProcessed diff --git a/iOSClient/ObvMessenger/ObvMessenger/ObvMessenger.entitlements b/iOSClient/ObvMessenger/ObvMessenger/ObvMessenger.entitlements index c77c0391..e501e387 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/ObvMessenger.entitlements +++ b/iOSClient/ObvMessenger/ObvMessenger/ObvMessenger.entitlements @@ -2,6 +2,8 @@ + aps-environment + development com.apple.developer.associated-domains applinks:$(OBV_HOST_FOR_INVITATIONS) @@ -20,8 +22,6 @@ com.apple.developer.usernotifications.communication - aps-environment - development com.apple.security.app-sandbox com.apple.security.application-groups @@ -32,8 +32,12 @@ com.apple.security.device.camera + com.apple.security.files.user-selected.read-write + com.apple.security.network.client + com.apple.security.network.server + com.apple.security.personal-information.photos-library diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AddProfile/AddProfileView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AddProfile/AddProfileView.swift new file mode 100644 index 00000000..744d9dbc --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AddProfile/AddProfileView.swift @@ -0,0 +1,61 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI + +protocol AddProfileViewActionsProtocol: AnyObject { + func userWantsToCreateNewProfile() async + func userWantsToImportProfileFromAnotherDevice() async +} + + +struct AddProfileView: View { + + let actions: AddProfileViewActionsProtocol + + var body: some View { + VStack { + + // Vertically center the view, but not on iPhone + + if UIDevice.current.userInterfaceIdiom != .phone { + Spacer() + } + + NewOnboardingHeaderView( + title: "ONBOARDING_ADD_PROFILE_TITLE", + subtitle: nil) + .padding(.bottom, 35) + + VStack { + OnboardingSpecificPlainButton("ONBOARDING_ADD_PROFILE_IMPORT_BUTTON", action: { + Task { await actions.userWantsToImportProfileFromAnotherDevice() } + }) + .padding(.bottom) + OnboardingSpecificPlainButton("ONBOARDING_ADD_PROFILE_CREATE_BUTTON", action: { + Task { await actions.userWantsToCreateNewProfile() } + }) + } + + Spacer() + + }.padding(.horizontal) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AddProfile/AddProfileViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AddProfile/AddProfileViewController.swift new file mode 100644 index 00000000..b4155a86 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AddProfile/AddProfileViewController.swift @@ -0,0 +1,110 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI + + +protocol AddProfileViewControllerDelegate: AnyObject { + func userWantsToCloseOnboarding(controller: AddProfileViewController) async + func userWantsToCreateNewProfile(controller: AddProfileViewController) async + func userWantsToImportProfileFromAnotherDevice(controller: AddProfileViewController) async +} + + +final class AddProfileViewController: UIHostingController, AddProfileViewActionsProtocol { + + private weak var delegate: AddProfileViewControllerDelegate? + + private let showCloseButton: Bool + + init(showCloseButton: Bool, delegate: AddProfileViewControllerDelegate) { + self.showCloseButton = showCloseButton + let actions = AddProfileViewActions() + let view = AddProfileView(actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + if showCloseButton { + let handler: UIActionHandler = { [weak self] _ in self?.closeAction() } + let closeButton = UIBarButtonItem(systemItem: .close, primaryAction: .init(handler: handler)) + navigationItem.rightBarButtonItem = closeButton + } + } + + + private func closeAction() { + Task { [weak self] in + guard let self else { return } + await delegate?.userWantsToCloseOnboarding(controller: self) + } + } + + + // AddProfileViewActionsProtocol + + func userWantsToCreateNewProfile() async { + await delegate?.userWantsToCreateNewProfile(controller: self) + } + + func userWantsToImportProfileFromAnotherDevice() async { + await delegate?.userWantsToImportProfileFromAnotherDevice(controller: self) + } + +} + + + + +private final class AddProfileViewActions: AddProfileViewActionsProtocol { + + weak var delegate: AddProfileViewActionsProtocol? + + func userWantsToCreateNewProfile() async { + await delegate?.userWantsToCreateNewProfile() + } + + func userWantsToImportProfileFromAnotherDevice() async { + await delegate?.userWantsToImportProfileFromAnotherDevice() + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AutorisationRequesterHostingController/AutorisationRequesterHostingController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AutorisationRequesterHostingController/AutorisationRequesterHostingController.swift deleted file mode 100644 index ba41dd6b..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AutorisationRequesterHostingController/AutorisationRequesterHostingController.swift +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import SwiftUI -import ObvEngine -import ObvUI -import ObvUICoreData - -final class AutorisationRequesterHostingController: UIHostingController { - - enum AutorisationCategory { - case localNotifications - case recordPermission - } - - init(autorisationCategory: AutorisationCategory, delegate: AutorisationRequesterHostingControllerDelegate) { - let view = AutorisationRequesterView(autorisationCategory: autorisationCategory, delegate: delegate) - super.init(rootView: view) - } - - @objc required dynamic init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - -} - -struct AutorisationRequesterView: View { - - let autorisationCategory: AutorisationRequesterHostingController.AutorisationCategory - let delegate: AutorisationRequesterHostingControllerDelegate - - private var textBody: Text { - switch autorisationCategory { - case .localNotifications: - return Text("SUBSCRIBING_TO_USER_NOTIFICATIONS_EXPLANATION") - case .recordPermission: - return Text("EXPLANATION_WHY_RECORD_PERMISSION_IS_IMPORTANT") - } - } - - private var textTitle: Text { - switch autorisationCategory { - case .localNotifications: - return Text("TITLE_NEVER_MISS_A_MESSAGE") - case .recordPermission: - return Text("TITLE_NEVER_MISS_A_SECURE_CALL") - } - } - - private var buttonTitle: Text { - switch autorisationCategory { - case .localNotifications: - return Text("BUTON_TITLE_ACTIVATE_NOTIFICATION") - case .recordPermission: - return Text("BUTON_TITLE_REQUEST_RECORD_PERMISSION") - } - } - - var body: some View { - - ZStack { - Color(AppTheme.shared.colorScheme.systemBackground) - .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) - .edgesIgnoringSafeArea(.all) - VStack(alignment: .leading, spacing: 16) { - HStack { - textTitle - .font(.largeTitle) - .fontWeight(.bold) - Spacer() - } - ObvCardView { - textBody - .frame(minWidth: .none, - maxWidth: .infinity, - minHeight: .none, - idealHeight: .none, - maxHeight: .none, - alignment: .center) - .font(.body) - } - Spacer() - OlvidButton(style: .blue, title: buttonTitle) { - Task(priority: .userInitiated) { - await delegate.requestAutorisation(now: true, for: autorisationCategory) - } - } - OlvidButton(style: .standardWithBlueText, title: Text(CommonString.Word.Later)) { - Task(priority: .userInitiated) { - await delegate.requestAutorisation(now: false, for: autorisationCategory) - } - } - }.padding() - } - } -} - - -struct AutorisationRequesterView_Previews: PreviewProvider { - - private final class MocAutorisationRequesterHostingControllerDelegate: AutorisationRequesterHostingControllerDelegate { - @MainActor - func requestAutorisation(now: Bool, for autorisationCategory: AutorisationRequesterHostingController.AutorisationCategory) async {} - } - - private static let delegate = MocAutorisationRequesterHostingControllerDelegate() - - static var previews: some View { - Group { - AutorisationRequesterView(autorisationCategory: .recordPermission, delegate: delegate) - AutorisationRequesterView(autorisationCategory: .recordPermission, delegate: delegate) - .environment(\.locale, .init(identifier: "fr")) - AutorisationRequesterView(autorisationCategory: .localNotifications, delegate: delegate) - AutorisationRequesterView(autorisationCategory: .localNotifications, delegate: delegate) - .environment(\.locale, .init(identifier: "fr")) - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AutorisationRequesterHostingController/AutorisationRequesterHostingControllerDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AutorisationRequesterHostingController/AutorisationRequesterHostingControllerDelegate.swift deleted file mode 100644 index 14267f75..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/AutorisationRequesterHostingController/AutorisationRequesterHostingControllerDelegate.swift +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import ObvEngine - -protocol AutorisationRequesterHostingControllerDelegate: AnyObject { - - @MainActor - func requestAutorisation(now: Bool, for autorisationCategory: AutorisationRequesterHostingController.AutorisationCategory) async - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/01ChooseBackupFile/ChooseBackupFileView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/01ChooseBackupFile/ChooseBackupFileView.swift new file mode 100644 index 00000000..ef21dd04 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/01ChooseBackupFile/ChooseBackupFileView.swift @@ -0,0 +1,443 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import CloudKit +import UI_SystemIcon + + +protocol ChooseBackupFileViewActionsProtocol: AnyObject { + func userWantsToRestoreBackupFromFile() async -> [NewBackupInfo] + func userWantsToRestoreBackupFromICloud() async throws -> [NewBackupInfo] + func userWantsToProceedWithBackup(encryptedBackup: Data) async +} + + + +struct ChooseBackupFileView: View, NewBackupFileDropViewActionsDelegate { + + let actions: ChooseBackupFileViewActionsProtocol + + @State private var backupInfos = [NewBackupInfo]() + @State private var alertType: AlertType? = nil + @State private var isAlertPresented: Bool = false + @State private var selectedBackup: NewBackupInfo? = nil + @State private var isPerformingCloudFetch = false + + private enum AlertType { + case icloudAccountStatusIsNotAvailable + case cloudKitError(ckError: CKError) + case otherCloudError(error: NSError) + } + + enum ObvError: Error { + case icloudAccountStatusIsNotAvailable + case cloudKitError(ckError: CKError) + case otherCloudError(error: NSError) + } + + private func userWantsToRestoreBackupFromFile() { + Task { + let newBackupInfos = await actions.userWantsToRestoreBackupFromFile() + await addNewBackupInfos(newBackupInfos) + } + } + + @MainActor + private func userWantsToRestoreBackupFromICloud() async { + isPerformingCloudFetch = true + defer { isPerformingCloudFetch = false } + do { + let newBackupInfos = try await actions.userWantsToRestoreBackupFromICloud() + await addNewBackupInfos(newBackupInfos) + } catch { + let obvError = (error as? ObvError) ?? ObvError.otherCloudError(error: error as NSError) + switch obvError { + case .icloudAccountStatusIsNotAvailable: + alertType = .icloudAccountStatusIsNotAvailable + case .cloudKitError(let ckError): + alertType = .cloudKitError(ckError: ckError) + case .otherCloudError(let error): + alertType = .otherCloudError(error: error) + } + isAlertPresented = true + } + } + + + private func userWantsToProceedWithBackup(url: URL) { + guard let encryptedBackupData = try? Data(contentsOf: url) else { return } + Task { await actions.userWantsToProceedWithBackup(encryptedBackup: encryptedBackupData) } + } + + + func userDroppedBackupInfos(_ backupInfos: [NewBackupInfo]) -> Bool { + Task { await addNewBackupInfos(backupInfos) } + return true + } + + + @MainActor + private func addNewBackupInfos(_ newBackupInfos: [NewBackupInfo]) async { + let mergedBackupInfos = Set(self.backupInfos).union(Set(newBackupInfos)) + withAnimation { + self.backupInfos = Array(mergedBackupInfos) + self.backupInfos.sort { b1, b2 in + if let d1 = b1.creationDate, let d2 = b2.creationDate { + return d1 > d2 + } + return b1.fileUrl.lastPathComponent > b2.fileUrl.lastPathComponent + } + } + } + + + private var alertTitle: LocalizedStringKey { + switch alertType { + case .icloudAccountStatusIsNotAvailable: + return "Sign in to iCloud" + case .cloudKitError: + return "iCloud error" + case .otherCloudError: + return "ERROR" + case .none: + return "" + } + } + + private var alertMessage: LocalizedStringKey { + switch alertType { + case .icloudAccountStatusIsNotAvailable: + return "Please sign in to your iCloud account. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on." + case .cloudKitError(ckError: let ckError): + return LocalizedStringKey(stringLiteral: ckError.localizedDescription) + case .otherCloudError(error: let error): + return LocalizedStringKey(stringLiteral: error.localizedDescription) + case .none: + return "" + } + } + + + var body: some View { + VStack { + ScrollView { + VStack { + + NewOnboardingHeaderView( + title: "CHOOSE_YOUR_BACKUP_FILE_ONBOARDING_TITLE", + subtitle: nil) + + HStack { + OnboardingSpecificBlueButton("ONBOARDING_BUTTON_CHOOSE_BACKUP_FILE_FROM_FILES", + systemIcon: .folderFill, + action: userWantsToRestoreBackupFromFile) + OnboardingSpecificBlueButton("ONBOARDING_BUTTON_CHOOSE_BACKUP_FILE_FROM_ICLOUD", + systemIcon: .icloud(.fill), + action: { Task { await userWantsToRestoreBackupFromICloud() } }) + .disabled(isPerformingCloudFetch) + .overlay { + ProgressView() + .progressViewStyle(CircularProgressViewStyle(tint: Color.white)) + .opacity(isPerformingCloudFetch ? 1.0 : 0.0) + } + }.padding() + + if #available(iOS 16, *), UIDevice.current.userInterfaceIdiom != .phone { + NewBackupFileDropView(actions: self) + .padding(.horizontal) + } + + if !backupInfos.isEmpty { + VStack { + Divider() + .padding(.vertical) + VStack { + HStack { + Text("ONBOARDING_WHICH_BACKUP_DO_YOU_WANT_TO_RESTORE") + .font(.headline) + Spacer() + } + NewBackupInfoListView(model: backupInfos, + selectedBackup: $selectedBackup) + } + .padding(.trailing) + } + .padding(.leading) + } + + + } + } + + Spacer() + + ValidateButton(action: { + guard let selectedBackup else { return } + userWantsToProceedWithBackup(url: selectedBackup.fileUrl) + }) + .disabled(selectedBackup == nil) + .padding() + + }.alert(alertTitle, + isPresented: $isAlertPresented, + presenting: alertType) + { details in + } message: { details in + Text(alertMessage) + } + } +} + + +// MARK: - OnboardingSpecificBlueButton + +struct OnboardingSpecificBlueButton: View { + + private let key: LocalizedStringKey + private let systemIcon: SystemIcon + private let action: () -> Void + + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, systemIcon: SystemIcon, action: @escaping () -> Void) { + self.key = key + self.systemIcon = systemIcon + self.action = action + } + + var body: some View { + Button(action: action) { + Label(key, systemIcon: systemIcon) + .lineLimit(1) + .foregroundStyle(.white) + .padding(.vertical) + } + .frame(maxWidth: .infinity) // So that two side-by-side buttons have the same size + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + +// MARK: - Internal validate button + +private struct ValidateButton: View { + + let action: () -> Void + + @Environment(\.isEnabled) var isEnabled + + var body: some View { + Button(action: action) { + Label("VALIDATE", systemIcon: .checkmarkCircleFill) + .lineLimit(1) + .foregroundStyle(.white) + .padding(.vertical) + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.0) + } + +} + +// MARK: - NewBackupInfoListView and Cell + +private struct NewBackupInfoListView: View { + + let model: [NewBackupInfo] + @Binding var selectedBackup: NewBackupInfo? + + var body: some View { + ForEach(model) { backupInfo in + NewBackupInfoListViewCell( + model: backupInfo, + showAsSelectable: true, + selectedBackup: $selectedBackup) + } + .onAppear(perform: { + // If there is only one backup in the list, select it immediately + if model.count == 1, let onlyBackup = model.first { + selectedBackup = onlyBackup + } + }) + } + +} + + +private struct NewBackupInfoListViewCell: View { + + let model: NewBackupInfo + let showAsSelectable: Bool + @Binding var selectedBackup: NewBackupInfo? + + private let dateFormater: DateFormatter = { + let df = DateFormatter() + df.locale = Locale.current + df.doesRelativeDateFormatting = true + df.timeStyle = .short + df.dateStyle = .short + return df + }() + + var body: some View { + HStack(alignment: .center) { + + if showAsSelectable { + Image(systemIcon: model == selectedBackup ? .checkmarkCircleFill : .circle) + .font(Font.system(size: 24, weight: .regular, design: .default)) + .foregroundColor(model == selectedBackup ? Color.green : Color.gray) + } + + VStack(alignment: .leading) { + if let deviceName = model.deviceName { + Text(deviceName) + .font(.system(.headline, design: .rounded)) + } + if let formattedDate = model.creationDate?.relativeFormatted { + Text(formattedDate) + .font(.system(.callout)) + } else { + Text(model.fileUrl.lastPathComponent) + .font(.system(.footnote, design: .monospaced)) + } + } + + Spacer() + + } + .padding(.vertical, 6.0) + .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped + .onTapGesture { + selectedBackup = model + } + } + +} + + +// MARK: - BackupFileDropView + + +protocol NewBackupFileDropViewActionsDelegate { + /// Returns `true` if the drop operation was successful; otherwise, return `false`. + func userDroppedBackupInfos(_ backupInfos: [NewBackupInfo]) -> Bool +} + + +@available(iOS 16.0, *) +fileprivate struct NewBackupFileDropView: View { + + let actions: NewBackupFileDropViewActionsDelegate + + var body: some View { + ZStack { + RoundedRectangle(cornerRadius: 12) + .strokeBorder(style: StrokeStyle(lineWidth: 1, dash: [8])) + .frame(maxHeight: .infinity, alignment: .center) + Label("ONBOARDING_DROP_A_BACKUP_FILE_HERE", systemIcon: .squareAndArrowDownOnSquare) + .font(.body) + .padding(.vertical, 64) + } + .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped + .dropDestination(for: NewBackupInfo.self) { items, location in + return actions.userDroppedBackupInfos(items) + } + } + +} + + + + +struct ChooseBackupFileView_Previews: PreviewProvider { + + private final class ActionsForPreviews: ChooseBackupFileViewActionsProtocol { + + func userWantsToRestoreBackupFromFile() async -> [NewBackupInfo] { + let backupInfosForPreviews: [NewBackupInfo] = [ + .init(fileUrl: URL(fileURLWithPath: "Olvid backup 2023-09-05 16-13-27.olvidbackup"), + deviceName: nil, + creationDate: nil), + .init(fileUrl: URL(fileURLWithPath: "Olvid backup 2023-09-05 16-11-26.olvidbackup"), + deviceName: nil, + creationDate: nil), + ] + return backupInfosForPreviews + } + + func userWantsToRestoreBackupFromICloud() async throws -> [NewBackupInfo] { + try await Task.sleep(seconds: 2) // Simulate cloud fetch + let backupInfosForPreviews: [NewBackupInfo] = [ + .init(fileUrl: URL(fileURLWithPath: "Olvid backup from iCloud"), + deviceName: "iPhone", + creationDate: .init(timeIntervalSince1970: 1_700_000_000)), + .init(fileUrl: URL(fileURLWithPath: "Another Olvid backup from iCloud"), + deviceName: "iPhone", + creationDate: .init(timeIntervalSince1970: 1_600_000_000)), + ] + return backupInfosForPreviews + } + + func userDroppedBackupInfos(_ backupInfos: [NewBackupInfo]) -> Bool { return false } + func userWantsToProceedWithBackup(encryptedBackup: Data) async {} + } + + + private final class ThrowingActionsForPreviews: ChooseBackupFileViewActionsProtocol { + + func userWantsToRestoreBackupFromFile() async -> [NewBackupInfo] { + return [] + } + + func userWantsToRestoreBackupFromICloud() async throws -> [NewBackupInfo] { + throw ChooseBackupFileView.ObvError.icloudAccountStatusIsNotAvailable + } + + func userDroppedBackupInfos(_ backupInfos: [NewBackupInfo]) -> Bool { return false } + func userWantsToProceedWithBackup(encryptedBackup: Data) async {} + + } + + private static let actions = ActionsForPreviews() + private static let throwingActions = ThrowingActionsForPreviews() + + private static let backupInfosForPreviews: [NewBackupInfo] = [ + .init(fileUrl: URL(fileURLWithPath: "Olvid backup 2023-09-05 16-13-27.olvidbackup"), + deviceName: nil, + creationDate: nil), + .init(fileUrl: URL(fileURLWithPath: "Olvid backup 2023-09-05 16-11-26.olvidbackup"), + deviceName: nil, + creationDate: nil), + ] + + static var previews: some View { + ChooseBackupFileView(actions: actions) + ChooseBackupFileView(actions: throwingActions) + } + +} + + + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/01ChooseBackupFile/ChooseBackupFileViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/01ChooseBackupFile/ChooseBackupFileViewController.swift new file mode 100644 index 00000000..6cb84751 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/01ChooseBackupFile/ChooseBackupFileViewController.swift @@ -0,0 +1,201 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import CloudKit +import os.log + + +protocol ChooseBackupFileViewControllerDelegate: AnyObject { + func userWantsToProceedWithBackup(controller: ChooseBackupFileViewController, encryptedBackup: Data) async +} + + +final class ChooseBackupFileViewController: UIHostingController, ChooseBackupFileViewActionsProtocol, UIDocumentPickerDelegate { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ChooseBackupFileViewController.self)) + weak private var delegate: ChooseBackupFileViewControllerDelegate? + + init(delegate: ChooseBackupFileViewControllerDelegate) { + let actions = ChooseBackupFileViewActions() + let view = ChooseBackupFileView(actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + deinit { + debugPrint("ChooseBackupFileViewController deinit") + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + } + + // ChooseBackupFileViewActionsProtocol + + /// The continuation is created when presenting the document picker, and resumed in the delegates methods called when the picker is dismissed. + private var currentContinuation: CheckedContinuation<[NewBackupInfo], Never>? + + @MainActor + func userWantsToRestoreBackupFromFile() async -> [NewBackupInfo] { + // We do *not* specify ObvUTIUtils.kUTTypeOlvidBackup here. It does not work under Google Drive. + // And it never works within the simulator. + let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: [.item]) + // let documentTypes = [kUTTypeItem] as [String] // 2020-03-13 Custom UTIs do not work in the simulator + // let documentPicker = UIDocumentPickerViewController(documentTypes: documentTypes, in: .import) + documentPicker.delegate = self + documentPicker.allowsMultipleSelection = true + let backupInfos: [NewBackupInfo] = await withCheckedContinuation { (continuation: CheckedContinuation<[NewBackupInfo], Never>) in + resumePreviousContinuationIfRequired() + currentContinuation = continuation + present(documentPicker, animated: true) + } + return backupInfos + } + + + private func resumePreviousContinuationIfRequired() { + guard let continuation = currentContinuation else { return } + self.currentContinuation = nil + continuation.resume(returning: []) + } + + + func userWantsToRestoreBackupFromICloud() async throws -> [NewBackupInfo] { + let container = CKContainer(identifier: ObvMessengerConstants.iCloudContainerIdentifierForEngineBackup) + do { + let accountStatus = try await container.accountStatus() + guard accountStatus == .available else { + os_log("The iCloud account isn't available. We cannot restore an uploaded backup.", log: Self.log, type: .fault) + throw ChooseBackupFileView.ObvError.icloudAccountStatusIsNotAvailable + } + + // The iCloud service is available. Look for backups to restore. + + let container = CKContainer(identifier: ObvMessengerConstants.iCloudContainerIdentifierForEngineBackup) + let database = container.privateCloudDatabase + + let config = CKOperation.Configuration() + config.qualityOfService = .userInitiated + + let predicate = NSPredicate(value: true) + let query = CKQuery(recordType: AppBackupManager.recordType, predicate: predicate) + query.sortDescriptors = [NSSortDescriptor(key: AppBackupManager.creationDate, ascending: false)] + + let records = try await database.configuredWith(configuration: config) { db in + try await db.records(matching: query, resultsLimit: 5) // Get up to 5 records + } + + let infos: [NewBackupInfo] = records.matchResults + .compactMap { matchResult in + let result = matchResult.1 + switch result { + case .success(let ckRecord): + guard let asset = ckRecord[.encryptedBackupFile] as? CKAsset, + let url = asset.fileURL else { + return nil + } + let deviceName = ckRecord[.deviceName] as? String + let creationDate = ckRecord.creationDate + let backupInfos = NewBackupInfo(fileUrl: url, deviceName: deviceName, creationDate: creationDate) + return backupInfos + case .failure: + return nil + } + } + + return infos + + } catch { + if let ckError = error as? CKError { + throw ChooseBackupFileView.ObvError.cloudKitError(ckError: ckError) + } else if error is ChooseBackupFileView.ObvError { + throw error + } else { + throw ChooseBackupFileView.ObvError.otherCloudError(error: error as NSError) + } + } + } + + + func userWantsToProceedWithBackup(encryptedBackup: Data) async { + Task { [weak self] in + guard let self else { return } + await delegate?.userWantsToProceedWithBackup(controller: self, encryptedBackup: encryptedBackup) + } + } + + + // MARK: - UIDocumentPickerDelegate + + func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { + guard let continuation = self.currentContinuation else { assertionFailure(); return } + self.currentContinuation = nil + let infos = urls.compactMap({ NewBackupInfo.createBackupInfoByCopyingFile(at: $0) }) + continuation.resume(returning: infos) + } + + + func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { + guard let continuation = self.currentContinuation else { assertionFailure(); return } + self.currentContinuation = nil + continuation.resume(returning: []) + } + +} + + +private final class ChooseBackupFileViewActions: ChooseBackupFileViewActionsProtocol { + + weak var delegate: ChooseBackupFileViewActionsProtocol? + + func userWantsToRestoreBackupFromFile() async -> [NewBackupInfo] { + guard let delegate else { assertionFailure(); return [] } + return await delegate.userWantsToRestoreBackupFromFile() + } + + func userWantsToRestoreBackupFromICloud() async throws -> [NewBackupInfo] { + guard let delegate else { assertionFailure(); return [] } + return try await delegate.userWantsToRestoreBackupFromICloud() + } + + func userWantsToProceedWithBackup(encryptedBackup: Data) async { + await delegate?.userWantsToProceedWithBackup(encryptedBackup: encryptedBackup) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/01ChooseBackupFile/NewBackupInfo.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/01ChooseBackupFile/NewBackupInfo.swift new file mode 100644 index 00000000..a1b0c621 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/01ChooseBackupFile/NewBackupInfo.swift @@ -0,0 +1,106 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import UniformTypeIdentifiers +import ObvSettings +import CoreTransferable + + +struct NewBackupInfo: Identifiable, Transferable, Equatable, Hashable { + + let fileUrl: URL + let deviceName: String? + let creationDate: Date? + var id: URL { fileUrl } + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: Self.self)) + + static func createBackupInfoByCopyingFile(at url: URL) -> Self? { + + let tempBackupFileUrl: URL + do { + _ = url.startAccessingSecurityScopedResource() + defer { url.stopAccessingSecurityScopedResource() } + + guard let pathExtension = (url as NSURL).pathExtension, pathExtension == UTType.olvidBackup.preferredFilenameExtension else { + os_log("The chosen file does not conform to the appropriate type. The file name shoud in with .olvidbackup", log: Self.log, type: .error) + assertionFailure() + return nil + } + + os_log("A file with an appropriate file extension was returned.", log: Self.log, type: .info) + + // We can copy the backup file at an appropriate location + + let tempDir = ObvUICoreDataConstants.ContainerURL.forTempFiles.appendingPathComponent("BackupFilesToRestore", isDirectory: true) + do { + if FileManager.default.fileExists(atPath: tempDir.path) { + try FileManager.default.removeItem(at: tempDir) // Clean the directory + } + try FileManager.default.createDirectory(at: tempDir, withIntermediateDirectories: true, attributes: nil) + } catch let error { + os_log("Could not create temporary directory: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + return nil + } + + let fileName = url.lastPathComponent + tempBackupFileUrl = tempDir.appendingPathComponent(fileName) + + do { + try FileManager.default.copyItem(at: url, to: tempBackupFileUrl) + } catch let error { + os_log("Could not copy backup file to temp location: %{public}@", log: Self.log, type: .error, error.localizedDescription) + return nil + } + + // Check that the file can be read + do { + _ = try Data(contentsOf: tempBackupFileUrl) + } catch { + os_log("Could not read backup file: %{public}@", log: Self.log, type: .error, error.localizedDescription) + return nil + } + } + + // If we reach this point, we can start processing the backup file located at tempBackupFileUrl + let info = NewBackupInfo(fileUrl: tempBackupFileUrl, deviceName: nil, creationDate: nil) + return info + + } + + @available(iOS 16.0, macCatalyst 16.0, *) + static var transferRepresentation: some TransferRepresentation { + + // For some reason, specifying .olvidBackup does not work. + // This can be seen in the console by filtering on the Olvid process and DragAndDrop. + // At some point, the recognized type appears to be something like "dyn.ah62d4rv4ge8085d0rfwge2pdrr41a". + FileRepresentation(importedContentType: .item) { received in + + guard let backupInfo = Self.createBackupInfoByCopyingFile(at: received.file) else { + assertionFailure() + return .init(fileUrl: received.file, deviceName: nil, creationDate: nil) + } + return backupInfo + + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/02EnterBackupKey/EnterBackupKeyView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/02EnterBackupKey/EnterBackupKeyView.swift new file mode 100644 index 00000000..c418b5d0 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/02EnterBackupKey/EnterBackupKeyView.swift @@ -0,0 +1,508 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import Combine + + +protocol EnterBackupKeyViewActionsProtocol: AnyObject { + func recoverBackupFromEncryptedBackup(_ encryptedBackup: Data, backupKey: String) async throws -> (backupRequestIdentifier: UUID, backupDate: Date) + func userWantsToRestoreBackup(backupRequestIdentifier: UUID) async throws +} + + +private enum EnteredBackupKeyStatus { + + /// When a backup key is entered, it is immediately used to try to decrypt the encryted backup + /// If the decryption succeeds (at the engine level), we set this value which will later be used to + /// inform the engine that we want to restore the backup on the basis of the decrypted backup identifier by + /// this `backupRequestIdentifier`. + case correct(backupRequestIdentifier: UUID) + + case incorrect +} + + +struct EnterBackupKeyView: View, BackupKeyTextFieldActionsProtocol { + + let model: Model + let actions: EnterBackupKeyViewActionsProtocol + + @State private var enteredBackupKeyStatus: EnteredBackupKeyStatus? + @State private var backupKeyCurrentlyChecked: String? + @State private var isInterfaceDisabled = false + + struct Model { + let encryptedBackup: Data + let acceptableCharactersForBackupKeyString: CharacterSet + } + + /// Called when the user entered a complete 32 characters backup key + @MainActor + func userEnteredBackupKey(backupKey: String) async { + + guard backupKeyCurrentlyChecked != backupKey else { return } + backupKeyCurrentlyChecked = backupKey + enteredBackupKeyStatus = nil + + let backupRequestIdentifier = try? await actions.recoverBackupFromEncryptedBackup(model.encryptedBackup, backupKey: backupKey).backupRequestIdentifier + + guard backupKeyCurrentlyChecked == backupKey else { return } + if let backupRequestIdentifier { + enteredBackupKeyStatus = .correct(backupRequestIdentifier: backupRequestIdentifier) + } else { + enteredBackupKeyStatus = .incorrect + } + backupKeyCurrentlyChecked = nil + + } + + + func userIsTypingBackupKey() { + enteredBackupKeyStatus = nil + } + + + private var showClearButton: Bool { + switch enteredBackupKeyStatus { + case .correct: + return false + default: + return true + } + } + + + private func userWantsToRestoreBackup(backupRequestIdentifier: UUID) { + isInterfaceDisabled = true + Task { + try? await actions.userWantsToRestoreBackup(backupRequestIdentifier: backupRequestIdentifier) + } + } + + + private func viewDidAppear() { + isInterfaceDisabled = false + } + + + var body: some View { + VStack { + ScrollView { + VStack { + + // Vertically center the view, but not on iPhone + + if UIDevice.current.userInterfaceIdiom != .phone { + Spacer() + } + + NewOnboardingHeaderView( + title: "ONBOARDING_ENTER_BACKUP_KEY", + subtitle: nil) + .padding(.bottom, 35) + + BackupKeyTextField(model: .init(showClearButton: showClearButton, acceptableCharactersForBackupKeyString: model.acceptableCharactersForBackupKeyString), + actions: self) + .padding(.horizontal) + + Spacer() + + if let enteredBackupKeyStatus { + EnteredBackupKeyStatusReportView(enteredBackupKeyStatus: enteredBackupKeyStatus) + .padding(.horizontal) + .padding(.top) + } + + HStack { + Spacer() + ProgressView() + Spacer() + } + .padding(.top) + .opacity(isInterfaceDisabled ? 1.0 : 0.0) + + } + } + switch enteredBackupKeyStatus { + case .correct(let backupRequestIdentifier): + ValidateButton(action: { userWantsToRestoreBackup(backupRequestIdentifier: backupRequestIdentifier) }) + .padding() + default: + EmptyView() + } + } + .onAppear(perform: viewDidAppear) + .disabled(isInterfaceDisabled) + } + +} + + +// MARK: - Internal validate button + +private struct ValidateButton: View { + + let action: () -> Void + + @Environment(\.isEnabled) var isEnabled + + var body: some View { + Button(action: action) { + Label("Restore this backup", systemIcon: .checkmarkCircleFill) + .lineLimit(1) + .foregroundStyle(.white) + .padding(.vertical) + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + + +private struct EnteredBackupKeyStatusReportView: View { + + let enteredBackupKeyStatus: EnteredBackupKeyStatus + + private var imageSystemName: String { + switch enteredBackupKeyStatus { + case .correct: + return "checkmark.circle.fill" + case .incorrect: + return "exclamationmark.circle.fill" + } + } + + + private var imageColor: Color { + switch enteredBackupKeyStatus { + case .correct: + return Color(UIColor.systemGreen) + case .incorrect: + return Color(UIColor.red) + } + } + + + private var title: LocalizedStringKey { + switch enteredBackupKeyStatus { + case .correct: + return "The backup key is correct" + case .incorrect: + return "The backup key is incorrect" + } + } + + + private var description: LocalizedStringKey? { + switch enteredBackupKeyStatus { + case .correct: + return nil + case .incorrect: + return nil + } + } + + var body: some View { + HStack { + Spacer() + Image(systemName: imageSystemName) + .font(.system(size: 32)) + .foregroundColor(imageColor) + VStack(alignment: .leading, spacing: 4) { + Text(title) + .font(.body) + .fixedSize(horizontal: false, vertical: true) + if let description { + Text(description) + .font(.caption) + .fixedSize(horizontal: false, vertical: true) + .foregroundColor(.secondary) + } + } + Spacer() + } + } +} + + +protocol BackupKeyTextFieldActionsProtocol { + func userEnteredBackupKey(backupKey: String) async + func userIsTypingBackupKey() +} + + +private struct BackupKeyTextField: View, SingleTextFieldActions { + + let model: Model + let actions: BackupKeyTextFieldActionsProtocol + + struct Model { + let showClearButton: Bool + let acceptableCharactersForBackupKeyString: CharacterSet + } + + @State private var textValue0: String = "" + @State private var textValue1: String = "" + @State private var textValue2: String = "" + @State private var textValue3: String = "" + @State private var textValue4: String = "" + @State private var textValue5: String = "" + @State private var textValue6: String = "" + @State private var textValue7: String = "" + + private var textValues: [String] { + [textValue0, textValue1, textValue2, textValue3, + textValue4, textValue5, textValue6, textValue7] + } + + @FocusState private var indexOfFocusedField: Int? + + private func clearAll() { + textValue0 = "" + textValue1 = "" + textValue2 = "" + textValue3 = "" + textValue4 = "" + textValue5 = "" + textValue6 = "" + textValue7 = "" + } + + // SingleTextFieldActions + + func tryToPasteTextIfItIsSomeBackupKey(_ receivedText: String) -> Bool { + let filteredString = receivedText.removingAllCharactersNotInCharacterSet(model.acceptableCharactersForBackupKeyString) + guard filteredString.count == 32 else { + return false + } + let allStrings = filteredString.byFour.map { String($0) } + guard allStrings.count == 8 else { + return false + } + let allStringsAreComplete = allStrings.allSatisfy { $0.count == 4 } + guard allStringsAreComplete else { + return false + } + textValue0 = allStrings[0] + textValue1 = allStrings[1] + textValue2 = allStrings[2] + textValue3 = allStrings[3] + textValue4 = allStrings[4] + textValue5 = allStrings[5] + textValue6 = allStrings[6] + textValue7 = allStrings[7] + indexOfFocusedField = nil + return true + } + + + /// Called by the ``SingleTextField`` at index `index` each time its text value changes. + fileprivate func singleTextFieldDidChangeAtIndex(_ index: Int) { + gotoNextTextFieldIfPossible(fromIndex: index) + if let enteredBackupKey { + indexOfFocusedField = nil + Task { + await actions.userEnteredBackupKey(backupKey: enteredBackupKey) + } + } else { + actions.userIsTypingBackupKey() + } + } + + + // Helpers + + private func gotoNextTextFieldIfPossible(fromIndex: Int) { + guard fromIndex < 7 else { return } + let toIndex = fromIndex + 1 + if textValues[fromIndex].count == 4, textValues[toIndex].count < 4 { + indexOfFocusedField = toIndex + } + } + + /// Returns a 32 characters backup key if the text in the text fields allow to compute one. + /// Returns `nil` otherwise. + private var enteredBackupKey: String? { + let concatenation = textValues + .reduce("", { $0 + $1 }) + .removingAllCharactersNotInCharacterSet(model.acceptableCharactersForBackupKeyString) + return concatenation.count == 32 ? concatenation : nil + } + + + // Body + + var body: some View { + VStack { + HStack { + SingleTextField("X", text: $textValue0, actions: self, model: .init(index: 0, acceptableCharactersForBackupKeyString: model.acceptableCharactersForBackupKeyString)) + SingleTextField("X", text: $textValue1, actions: self, model: .init(index: 1, acceptableCharactersForBackupKeyString: model.acceptableCharactersForBackupKeyString)) + .focused($indexOfFocusedField, equals: 1) + SingleTextField("X", text: $textValue2, actions: self, model: .init(index: 2, acceptableCharactersForBackupKeyString: model.acceptableCharactersForBackupKeyString)) + .focused($indexOfFocusedField, equals: 2) + SingleTextField("X", text: $textValue3, actions: self, model: .init(index: 3, acceptableCharactersForBackupKeyString: model.acceptableCharactersForBackupKeyString)) + .focused($indexOfFocusedField, equals: 3) + } + HStack { + SingleTextField("X", text: $textValue4, actions: self, model: .init(index: 4, acceptableCharactersForBackupKeyString: model.acceptableCharactersForBackupKeyString)) + .focused($indexOfFocusedField, equals: 4) + SingleTextField("X", text: $textValue5, actions: self, model: .init(index: 5, acceptableCharactersForBackupKeyString: model.acceptableCharactersForBackupKeyString)) + .focused($indexOfFocusedField, equals: 5) + SingleTextField("X", text: $textValue6, actions: self, model: .init(index: 6, acceptableCharactersForBackupKeyString: model.acceptableCharactersForBackupKeyString)) + .focused($indexOfFocusedField, equals: 6) + SingleTextField("X", text: $textValue7, actions: self, model: .init(index: 7, acceptableCharactersForBackupKeyString: model.acceptableCharactersForBackupKeyString)) + .focused($indexOfFocusedField, equals: 7) + } + if model.showClearButton { + HStack { + Spacer() + Button("CLEAR_ALL", action: clearAll) + }.padding(.top, 4) + } + } + } + +} + + +// MARK: - Text field used in this view only + + +private protocol SingleTextFieldActions { + func tryToPasteTextIfItIsSomeBackupKey(_ receivedText: String) -> Bool + func singleTextFieldDidChangeAtIndex(_ index: Int) +} + + +private struct SingleTextField: View { + + private let key: LocalizedStringKey + private let text: Binding + private let actions: SingleTextFieldActions + private let model: Model + + struct Model { + let index: Int // Index of this text field in the BackupKeyTextField + let acceptableCharactersForBackupKeyString: CharacterSet + } + + @State private var previousText: String? = nil + + private static let maxLength = 4 + + init(_ key: LocalizedStringKey, text: Binding, actions: SingleTextFieldActions, model: Model) { + self.key = key + self.text = text + self.actions = actions + self.model = model + } + + private let myFont = Font + .system(size: 18) + .monospaced() + + var body: some View { + TextField("XXXX", text: text) + .textInputAutocapitalization(.characters) + .textFieldStyle(.roundedBorder) + .autocorrectionDisabled() + .multilineTextAlignment(.center) + .font(myFont) + .onReceive(Just(text)) { _ in + guard previousText != text.wrappedValue else { return } + previousText = text.wrappedValue + // If the user pastes a backup key, the "text" received here will contain it. + // To handle this case, we call our "superview" (the BackupKeyTextField) using the + // tryToPasteTextIfItIsSomeBackupKey method. This method will paste the key in all 8 text + // fields (including this one) if a key is found. In that case, the method returns true + // and there is nothing left to do here. + if actions.tryToPasteTextIfItIsSomeBackupKey(text.wrappedValue) { + return + } + // If we reach this point, we are not in a situation where the text contains + // a pasted backup key. + // We limit the string length to maxLength characters. + let uppercasedText = text.wrappedValue.uppercased() + let newText = String(uppercasedText.removingAllCharactersNotInCharacterSet(model.acceptableCharactersForBackupKeyString).prefix(4)) + if text.wrappedValue != newText { + text.wrappedValue = newText + } + actions.singleTextFieldDidChangeAtIndex(model.index) + } + } + +} + + + +fileprivate extension Collection { + var byFour: [SubSequence] { + var startIndex = self.startIndex + let count = self.count + let n = count/4 + count % 4 + return (0.. String { + return String(self + .trimmingWhitespacesAndNewlines() + .unicodeScalars + .filter({ + characterSet.contains($0) + })) + } +} + + + +struct EnterBackupKeyView_Previews: PreviewProvider { + + private final class ActionsForPreviews: EnterBackupKeyViewActionsProtocol { + func recoverBackupFromEncryptedBackup(_ encryptedBackup: Data, backupKey: String) async throws -> (backupRequestIdentifier: UUID, backupDate: Date) { + if backupKey == String(repeating: "0", count: 32) { + return (UUID(), Date()) + } else { + throw NSError(domain: "EnterBackupKeyView_Previews", code: 0) + } + } + func userWantsToRestoreBackup(backupRequestIdentifier: UUID) async throws {} + } + + + private static let model = EnterBackupKeyView.Model(encryptedBackup: Data(), acceptableCharactersForBackupKeyString: CharacterSet(charactersIn: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")) + + private static let actions = ActionsForPreviews() + + static var previews: some View { + EnterBackupKeyView(model: model, actions: actions) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/02EnterBackupKey/EnterBackupKeyViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/02EnterBackupKey/EnterBackupKeyViewController.swift new file mode 100644 index 00000000..23d9bed8 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/02EnterBackupKey/EnterBackupKeyViewController.swift @@ -0,0 +1,85 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI + + +protocol EnterBackupKeyViewControllerDelegate: AnyObject { + func recoverBackupFromEncryptedBackup(controller: EnterBackupKeyViewController, encryptedBackup: Data, backupKey: String) async throws -> (backupRequestIdentifier: UUID, backupDate: Date) + func userWantsToRestoreBackup(controller: EnterBackupKeyViewController, backupRequestIdentifier: UUID) async throws +} + + +final class EnterBackupKeyViewController: UIHostingController, EnterBackupKeyViewActionsProtocol { + + private weak var delegate: EnterBackupKeyViewControllerDelegate? + + init(model: EnterBackupKeyView.Model, delegate: EnterBackupKeyViewControllerDelegate) { + let actions = EnterBackupKeyViewActions() + let view = EnterBackupKeyView(model: model, actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // EnterBackupKeyViewActionsProtocol + + func recoverBackupFromEncryptedBackup(_ encryptedBackup: Data, backupKey: String) async throws -> (backupRequestIdentifier: UUID, backupDate: Date) { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNotSet } + return try await delegate.recoverBackupFromEncryptedBackup(controller: self, encryptedBackup: encryptedBackup, backupKey: backupKey) + } + + func userWantsToRestoreBackup(backupRequestIdentifier: UUID) async throws { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNotSet } + try await delegate.userWantsToRestoreBackup(controller: self, backupRequestIdentifier: backupRequestIdentifier) + } + + // Error + + enum ObvError: Error { + case theDelegateIsNotSet + } + +} + + +private final class EnterBackupKeyViewActions: EnterBackupKeyViewActionsProtocol { + + weak var delegate: EnterBackupKeyViewActionsProtocol? + + func recoverBackupFromEncryptedBackup(_ encryptedBackup: Data, backupKey: String) async throws -> (backupRequestIdentifier: UUID, backupDate: Date) { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNotSet } + return try await delegate.recoverBackupFromEncryptedBackup(encryptedBackup, backupKey: backupKey) + } + + func userWantsToRestoreBackup(backupRequestIdentifier: UUID) async throws { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNotSet } + return try await delegate.userWantsToRestoreBackup(backupRequestIdentifier: backupRequestIdentifier) + } + + enum ObvError: Error { + case theDelegateIsNotSet + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/03WaitingForBackupRestore/WaitingForBackupRestoreView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/03WaitingForBackupRestore/WaitingForBackupRestoreView.swift new file mode 100644 index 00000000..670df2db --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/03WaitingForBackupRestore/WaitingForBackupRestoreView.swift @@ -0,0 +1,326 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import UI_SystemIcon +import ObvTypes + + +protocol WaitingForBackupRestoreViewActionsProtocol: AnyObject { + /// Returns the CryptoId of the restore owned identity. When many identities were restored, only one is returned here + func restoreBackupNow(backupRequestIdentifier: UUID) async throws -> ObvCryptoId + func userWantsToEnableAutomaticBackup() async throws + func backupRestorationSucceeded(restoredOwnedCryptoId: ObvCryptoId) async // 2023-09-15 Many Ids can be restored at this time, we only return one + func backupRestorationFailed() async +} + +struct WaitingForBackupRestoreView: View { + + let actions: WaitingForBackupRestoreViewActionsProtocol + let model: Model + + @State private var backupRestoreRequested = false + @State private var restoreState = RestoreState.restoreInProgress + @State private var isAlertPresented: Bool = false + @State private var alertType: AlertType? = nil + + struct Model { + let backupRequestIdentifier: UUID + } + + private enum AlertType { + case couldNotEnableAutomaticBackup(error: LocalizedError) + } + + fileprivate enum RestoreState { + case restoreInProgress + case restoreSucceeded(restoredOwnedCryptoId: ObvCryptoId) + case restoreFailed(error: Error) + } + + @MainActor + private func restoreBackupNow() async { + guard !backupRestoreRequested else { return } + backupRestoreRequested = true + do { + let restoredOwnedCryptoId = try await actions.restoreBackupNow(backupRequestIdentifier: model.backupRequestIdentifier) + restoreState = .restoreSucceeded(restoredOwnedCryptoId: restoredOwnedCryptoId) + } catch { + restoreState = .restoreFailed(error: error) + } + } + + private var alertTitle: String { + switch alertType { + case .couldNotEnableAutomaticBackup(let error): + return error.errorDescription ?? DefaultError.couldNotEnableAutomaticBackup.errorDescription + case nil: + return DefaultError.genericError.errorDescription + } + } + + private var alertMessage: String { + switch alertType { + case .couldNotEnableAutomaticBackup(let error): + return error.recoverySuggestion ?? DefaultError.couldNotEnableAutomaticBackup.recoverySuggestion + case nil: + return DefaultError.genericError.recoverySuggestion + } + } + + @MainActor + private func userWantsToEnableAutomaticBackup() async { + do { + try await actions.userWantsToEnableAutomaticBackup() + backupRestorationSucceeded() + } catch { + let localizedError = (error as? LocalizedError) ?? DefaultError.couldNotEnableAutomaticBackup + alertType = .couldNotEnableAutomaticBackup(error: localizedError) + isAlertPresented = true + } + } + + /// Error used when something when wrong but we fail to obtain a localized error + private enum DefaultError: LocalizedError { + case couldNotEnableAutomaticBackup + case genericError + var errorDescription: String { + switch self { + case .couldNotEnableAutomaticBackup: + return NSLocalizedString("AUTOMATIC_BACKUP_COULD_NOT_BE_ENABLED_TITLE", comment: "") + case .genericError: + return NSLocalizedString("ERROR", comment: "") + } + } + var recoverySuggestion: String { + return NSLocalizedString("PLEASE_TRY_AGAIN_LATER", comment: "") + } + } + + + private func backupRestorationSucceeded() { + let restoredOwnedCryptoId: ObvCryptoId + switch restoreState { + case .restoreSucceeded(let _restoredOwnedCryptoId): + restoredOwnedCryptoId = _restoredOwnedCryptoId + default: + assertionFailure() + return + } + Task { await actions.backupRestorationSucceeded(restoredOwnedCryptoId: restoredOwnedCryptoId) } // This call navigates to the next onboarding screen + } + + + private func backupRestorationFailed() { + Task { await actions.backupRestorationFailed() } // This call navigates to the next onboarding screen + } + + + var body: some View { + VStack(alignment: .leading, spacing: 16) { + switch restoreState { + + case .restoreInProgress: + + RestoringBackupView() + + case .restoreSucceeded: + + VStack { + ScrollView { + VStack { + NewOnboardingHeaderView(title: "TITLE_BACKUP_RESTORED", subtitle: nil) + Text("ENABLE_AUTOMATIC_BACKUP_EXPLANATION") + .padding() + } + } + VStack { + ValidateButton(title: "ENABLE_AUTOMATIC_BACKUP_AND_CONTINUE", systemIcon: .checkmarkCircleFill, action: { Task { await userWantsToEnableAutomaticBackup() } }) + .padding(.bottom) + HStack { + Spacer() + Button("Later", action: backupRestorationSucceeded) + } + }.padding() + } + + + case .restoreFailed(error: let error): + + VStack { + ScrollView { + VStack { + NewOnboardingHeaderView(title: "Restore failed 🥺", subtitle: nil) + Text("RESTORE_BACKUP_FAILED_EXPLANATION") + .frame(maxWidth: .infinity, alignment: .leading) + .padding() + if ObvMessengerConstants.showExperimentalFeature { + VStack { + Text("ERROR_DESCRIPTION") + .foregroundColor(.secondary) + .frame(maxWidth: .infinity, alignment: .leading) + Text(error.localizedDescription) + .foregroundColor(.secondary) + .frame(maxWidth: .infinity, alignment: .leading) + Text((error as NSError).debugDescription) + .foregroundColor(.secondary) + .frame(maxWidth: .infinity, alignment: .leading) + }.padding(.horizontal) + } + } + } + ValidateButton(title: "Back", systemIcon: .arrowshapeTurnUpBackwardFill, action: backupRestorationFailed) + .padding() + } + + } + + } + .onAppear { + Task { await restoreBackupNow() } + } + .alert(alertTitle, + isPresented: $isAlertPresented, + presenting: alertType) + { _ in + } message: { _ in + Text(alertMessage) + } + } +} + + +// MARK: - Internal validate button + +private struct ValidateButton: View { + + let title: LocalizedStringKey + let systemIcon: SystemIcon + let action: () -> Void + + var body: some View { + Button(action: action) { + Label(title, systemIcon: systemIcon) + .lineLimit(1) + .foregroundStyle(.white) + .padding(.vertical) + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } + +} + + +private struct RestoringBackupView: View { + var body: some View { + HStack { + Spacer() + VStack { + Text("RESTORING_BACKUP_PLEASE_WAIT") + .font(.headline) + .fontWeight(.bold) + ProgressView() + } + Spacer() + } + } +} + + +struct WaitingForBackupRestoreView_Previews: PreviewProvider { + + private final class ActionsForPreviews: WaitingForBackupRestoreViewActionsProtocol { + + private let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + private let errorWhenEnablingAutomaticBackup: LocalizedError? + private let errorWhenRestoringBackup: LocalizedError? + + init(errorWhenRestoringBackup: LocalizedError?, errorWhenEnablingAutomaticBackup: LocalizedError?) { + self.errorWhenRestoringBackup = errorWhenRestoringBackup + self.errorWhenEnablingAutomaticBackup = errorWhenEnablingAutomaticBackup + } + + func backupRestorationIsOver() async {} + + func userWantsToEnableAutomaticBackup() async throws { + if let errorWhenEnablingAutomaticBackup { + throw errorWhenEnablingAutomaticBackup + } else { + // Do nothing to simulate success + } + } + + func restoreBackupNow(backupRequestIdentifier: UUID) async throws -> ObvTypes.ObvCryptoId { + if let errorWhenRestoringBackup { + throw errorWhenRestoringBackup + } else { + try! await Task.sleep(seconds: 1) + return ownedCryptoId + } + } + + func backupRestorationSucceeded(restoredOwnedCryptoId: ObvTypes.ObvCryptoId) async { + // Should navigate to the next onboarding screen + } + + func backupRestorationFailed() async { + // Should navigate to the backup selection screen + } + + } + + private static let actions = [ + ActionsForPreviews(errorWhenRestoringBackup: nil, + errorWhenEnablingAutomaticBackup: nil), + ActionsForPreviews(errorWhenRestoringBackup: ObvErrorForPreviews.someError, + errorWhenEnablingAutomaticBackup: nil), + ActionsForPreviews(errorWhenRestoringBackup: nil, + errorWhenEnablingAutomaticBackup: ObvErrorForPreviews.someError), + ] + private static let model = WaitingForBackupRestoreView.Model(backupRequestIdentifier: UUID()) + + static var previews: some View { + WaitingForBackupRestoreView(actions: actions[0], model: model) // No error when enabling automatic backups + WaitingForBackupRestoreView(actions: actions[1], model: model) // When backup restore fails + WaitingForBackupRestoreView(actions: actions[2], model: model) // When restore succeeds, but cannot enable auto auto backup + } + + private enum ObvErrorForPreviews: LocalizedError { + case someError + + var errorDescription: String? { + switch self { + case .someError: + return "Some error" + } + } + + var recoverySuggestion: String? { + switch self { + case .someError: + return NSLocalizedString("PLEASE_TRY_AGAIN_LATER", comment: "") + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/03WaitingForBackupRestore/WaitingForBackupRestoreViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/03WaitingForBackupRestore/WaitingForBackupRestoreViewController.swift new file mode 100644 index 00000000..1b6d333c --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/03WaitingForBackupRestore/WaitingForBackupRestoreViewController.swift @@ -0,0 +1,120 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import ObvTypes + +protocol WaitingForBackupRestoreViewControllerDelegate: AnyObject { + /// Returns the CryptoId of the restore owned identity. When many identities were restored, only one is returned here + func restoreBackupNow(controller: WaitingForBackupRestoreViewController, backupRequestIdentifier: UUID) async throws -> ObvCryptoId + func userWantsToEnableAutomaticBackup(controller: WaitingForBackupRestoreViewController) async throws + func backupRestorationSucceeded(controller: WaitingForBackupRestoreViewController, restoredOwnedCryptoId: ObvCryptoId) async + func backupRestorationFailed(controller: WaitingForBackupRestoreViewController) async +} + + +final class WaitingForBackupRestoreViewController: UIHostingController, WaitingForBackupRestoreViewActionsProtocol { + + weak var delegate: WaitingForBackupRestoreViewControllerDelegate? + + init(model: WaitingForBackupRestoreView.Model, delegate: WaitingForBackupRestoreViewControllerDelegate) { + let actions = WaitingForBackupRestoreViewActions() + let view = WaitingForBackupRestoreView(actions: actions, model: model) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + configureNavigation(animated: false) + } + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + } + + + // WaitingForBackupRestoreViewActionsProtocol + + func restoreBackupNow(backupRequestIdentifier: UUID) async throws -> ObvCryptoId { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNotSet } + return try await delegate.restoreBackupNow(controller: self, backupRequestIdentifier: backupRequestIdentifier) + } + + func userWantsToEnableAutomaticBackup() async throws { + try await delegate?.userWantsToEnableAutomaticBackup(controller: self) + } + + func backupRestorationSucceeded(restoredOwnedCryptoId: ObvCryptoId) async { + await delegate?.backupRestorationSucceeded(controller: self, restoredOwnedCryptoId: restoredOwnedCryptoId) + } + + func backupRestorationFailed() async { + await delegate?.backupRestorationFailed(controller: self) + } + + + // Errors + + enum ObvError: Error { + case theDelegateIsNotSet + } + +} + + +private final class WaitingForBackupRestoreViewActions: WaitingForBackupRestoreViewActionsProtocol { + + weak var delegate: WaitingForBackupRestoreViewActionsProtocol? + + func restoreBackupNow(backupRequestIdentifier: UUID) async throws -> ObvCryptoId { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNotSet } + return try await delegate.restoreBackupNow(backupRequestIdentifier: backupRequestIdentifier) + } + + func userWantsToEnableAutomaticBackup() async throws { + try await delegate?.userWantsToEnableAutomaticBackup() + } + + func backupRestorationSucceeded(restoredOwnedCryptoId: ObvCryptoId) async { + await delegate?.backupRestorationSucceeded(restoredOwnedCryptoId: restoredOwnedCryptoId) + } + + func backupRestorationFailed() async { + await delegate?.backupRestorationFailed() + } + + enum ObvError: Error { + case theDelegateIsNotSet + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/BackupRestoreView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/BackupRestoreView.swift deleted file mode 100644 index 3f086301..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/BackupRestoreView.swift +++ /dev/null @@ -1,674 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import SwiftUI -import CloudKit -import os.log -import MobileCoreServices -import ObvUICoreData - - -protocol BackupRestoreViewHostingControllerDelegate: AnyObject { - func proceedWithBackupFile(atUrl: URL) async -} - - -final class BackupRestoreViewHostingController: UIHostingController, BackupRestoreViewModelDelegate, UIDocumentPickerDelegate { - - private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: BackupRestoreViewHostingController.self)) - - private let backupRestoreViewModel: BackupRestoreViewModel - private var allCloudOperationsAreCancelled = false - - private weak var delegate: BackupRestoreViewHostingControllerDelegate? - - init(delegate: BackupRestoreViewHostingControllerDelegate) { - let backupRestoreViewModel = BackupRestoreViewModel() - self.backupRestoreViewModel = backupRestoreViewModel - let view = BackupRestoreView(store: backupRestoreViewModel) - super.init(rootView: view) - self.backupRestoreViewModel.delegate = self - self.delegate = delegate - } - - deinit { - debugPrint("BackupRestoreViewHostingController deinit") - } - - override func viewDidLoad() { - super.viewDidLoad() - title = NSLocalizedString("Restore", comment: "") - } - - @objc required dynamic init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated) - backupRestoreViewModel.clear() - allCloudOperationsAreCancelled = true - } - - - // MARK: - BackupRestoreViewModelDelegate - - func userWantsToRestoreBackupFromFile() async { - // We do *not* specify ObvUTIUtils.kUTTypeOlvidBackup here. It does not work under Google Drive. - // And it never works within the simulator. - let documentTypes = [kUTTypeItem] as [String] // 2020-03-13 Custom UTIs do not work in the simulator - let documentPicker = UIDocumentPickerViewController(documentTypes: documentTypes, in: .import) - documentPicker.delegate = self - documentPicker.allowsMultipleSelection = false - present(documentPicker, animated: true) - } - - - func userWantToRestoreBackupFromCloud() async { - self.allCloudOperationsAreCancelled = false - let container = CKContainer(identifier: ObvMessengerConstants.iCloudContainerIdentifierForEngineBackup) - let backupRestoreViewModel = self.backupRestoreViewModel - do { - let accountStatus = try await container.accountStatus() - guard accountStatus == .available else { - os_log("The iCloud account isn't available. We cannot restore an uploaded backup.", log: Self.log, type: .fault) - await backupRestoreViewModel.backupFileFailedToBeRetrievedFromCloud(cloudFailureReason: .icloudAccountStatusIsNotAvailable) - return - } - - // The iCloud service is available. Look for backups to restore. - // This iterator only fetches the deviceIdentifierForVendor to load records efficiently. - let iterator = CloudKitBackupRecordIterator(identifierForVendor: nil, - resultsLimit: nil, - desiredKeys: [.deviceIdentifierForVendor]) - // The already seen devices, since we show the latest record by device. - var seenDevices = Set() - try await withThrowingTaskGroup(of: Void.self) { group in - for try await records in iterator { - guard !allCloudOperationsAreCancelled else { break } - for recordWithoutData in records { - guard !allCloudOperationsAreCancelled else { break } - guard let deviceIdentifierForVendor = recordWithoutData.deviceIdentifierForVendor else { - continue - } - guard !seenDevices.contains(deviceIdentifierForVendor) else { - // We have already seen this record. - continue - } - // 'record' should be the latest record for the device 'deviceIdentifierForVendor' - seenDevices.insert(deviceIdentifierForVendor) - // Launch a task that fetches all the data of the latest record - group.addTask { - let iteratorWithData = CloudKitBackupRecordIterator(identifierForVendor: deviceIdentifierForVendor, - resultsLimit: 1, - desiredKeys: nil) - guard await !self.allCloudOperationsAreCancelled else { return } - guard let recordWithData = try? await iteratorWithData.next()?.first else { - await backupRestoreViewModel.backupFileFailedToBeRetrievedFromCloud(cloudFailureReason: .couldNotRetrieveEncryptedBackupFile) - return - } - guard await !self.allCloudOperationsAreCancelled else { return } - guard let asset = recordWithData[.encryptedBackupFile] as? CKAsset, - let url = asset.fileURL else { - await backupRestoreViewModel.backupFileFailedToBeRetrievedFromCloud(cloudFailureReason: .couldNotRetrieveEncryptedBackupFile) - return - } - guard await !self.allCloudOperationsAreCancelled else { return } - guard let creationDate = recordWithData.creationDate else { - await backupRestoreViewModel.backupFileFailedToBeRetrievedFromCloud(cloudFailureReason: .couldNotRetrieveCreationDate) - return - } - guard await !self.allCloudOperationsAreCancelled else { return } - guard let deviceName = recordWithData[.deviceName] as? String else { - await backupRestoreViewModel.backupFileFailedToBeRetrievedFromCloud(cloudFailureReason: .couldNotRetrieveDeviceName) - return - } - guard await !self.allCloudOperationsAreCancelled else { return } - let info = BackupInfo(fileUrl: url, deviceName: deviceName, creationDate: creationDate) - await backupRestoreViewModel.addNewSelectableBackups([info]) - } - } - } - } - await backupRestoreViewModel.noMoreCloudBackupToFetch() - } catch { - await backupRestoreViewModel.backupFileFailedToBeRetrievedFromCloud(cloudFailureReason: .couldNotRetrieveEncryptedBackupFile) - return - } - } - - - func proceedWithBackupFile(atUrl url: URL) async { - assert(delegate != nil) - await delegate?.proceedWithBackupFile(atUrl: url) - } - - - // MARK: - UIDocumentPickerDelegate - - func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { - - DispatchQueue(label: "Queue for processing the backup file").async { [weak self] in - - guard urls.count == 1 else { return } - let url = urls.first! - - let tempBackupFileUrl: URL - do { - _ = url.startAccessingSecurityScopedResource() - defer { url.stopAccessingSecurityScopedResource() } - - guard let fileUTI = ObvUTIUtils.utiOfFile(atURL: url) else { - os_log("Could not determine the UTI of the file at URL %{public}@", log: Self.log, type: .fault, url.path) - return - } - - guard ObvUTIUtils.uti(fileUTI, conformsTo: ObvUTIUtils.kUTTypeOlvidBackup) else { - os_log("The chosen file does not conform to the appropriate type. The file name shoud in with .olvidbackup", log: Self.log, type: .error) - return - } - - os_log("A file with an appropriate file extension was returned.", log: Self.log, type: .info) - - // We can copy the backup file at an appropriate location - - let tempDir = ObvUICoreDataConstants.ContainerURL.forTempFiles.appendingPathComponent("BackupFilesToRestore", isDirectory: true) - do { - if FileManager.default.fileExists(atPath: tempDir.path) { - try FileManager.default.removeItem(at: tempDir) // Clean the directory - } - try FileManager.default.createDirectory(at: tempDir, withIntermediateDirectories: true, attributes: nil) - } catch let error { - os_log("Could not create temporary directory: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - return - } - - let fileName = url.lastPathComponent - tempBackupFileUrl = tempDir.appendingPathComponent(fileName) - - do { - try FileManager.default.copyItem(at: url, to: tempBackupFileUrl) - } catch let error { - os_log("Could not copy backup file to temp location: %{public}@", log: Self.log, type: .error, error.localizedDescription) - return - } - - // Check that the file can be read - do { - _ = try Data(contentsOf: tempBackupFileUrl) - } catch { - os_log("Could not read backup file: %{public}@", log: Self.log, type: .error, error.localizedDescription) - return - } - } - - // If we reach this point, we can start processing the backup file located at tempBackupFileUrl - let info = BackupInfo(fileUrl: tempBackupFileUrl, deviceName: nil, creationDate: nil) - - Task { - await self?.backupRestoreViewModel.addNewSelectableBackups([info]) - } - - } - - } - - - func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { - assert(Thread.isMainThread) - backupRestoreViewModel.userCanceledSelectionOfBackupFile() - } - -} - -struct BackupInfo: Identifiable { - var id: URL { fileUrl } - - let fileUrl: URL - let deviceName: String? - let creationDate: Date? -} - - -protocol BackupRestoreViewModelDelegate: AnyObject { - func userWantToRestoreBackupFromCloud() async - func userWantsToRestoreBackupFromFile() async - func proceedWithBackupFile(atUrl: URL) async -} - -fileprivate final class BackupRestoreViewModel: ObservableObject { - - @Published private(set) var backups: [BackupInfo] = [] - @Published var userIsRequestingBackupFileOrCloudBackup = false - @Published var backupFileOrCloudBackupHasBeenRequested = false - @Published fileprivate var isAlertPresented = false - @Published fileprivate var alertType = AlertType.none - @Published fileprivate var isFetchingFromICloud: Bool = false - @Published fileprivate var selectedBackup: URL? - - - fileprivate enum AlertType { - case cloudFailure(reason: CloudFailureReason) - case noMoreCloudBackupToFetch - case none // Dummy type - } - - weak var delegate: BackupRestoreViewModelDelegate? - - func restoreFromFileAction() { - withAnimation { - userIsRequestingBackupFileOrCloudBackup = true - backupFileOrCloudBackupHasBeenRequested = true - } - Task { await delegate?.userWantsToRestoreBackupFromFile() } - } - - func restoreFromCloudAction() { - withAnimation { - userIsRequestingBackupFileOrCloudBackup = true - backupFileOrCloudBackupHasBeenRequested = true - isFetchingFromICloud = true - } - Task { - await delegate?.userWantToRestoreBackupFromCloud() - } - } - - @MainActor - func addNewSelectableBackups(_ backups: [BackupInfo]) async { - assert(Thread.isMainThread) - withAnimation { - self.userIsRequestingBackupFileOrCloudBackup = false - self.backups += backups - self.backups.sort { b1, b2 in - guard let d1 = b1.creationDate else { assertionFailure(); return false } - guard let d2 = b2.creationDate else { assertionFailure(); return false } - return d2 < d1 - } - } - } - - func userCanceledSelectionOfBackupFile() { - assert(Thread.isMainThread) - clear() - } - - func proceedWithBackupFile(backupFileUrl: URL) { - Task { await delegate?.proceedWithBackupFile(atUrl: backupFileUrl) } - } - - @MainActor - func backupFileFailedToBeRetrievedFromCloud(cloudFailureReason: CloudFailureReason) async { - withAnimation { - self.alertType = .cloudFailure(reason: cloudFailureReason) - self.isAlertPresented = true - } - } - - @MainActor - func noMoreCloudBackupToFetch() async { - if backups.isEmpty { - withAnimation { - alertType = .noMoreCloudBackupToFetch - isAlertPresented = true - } - } - withAnimation { - isFetchingFromICloud = false - } - } - - func clear() { - DispatchQueue.main.async { - withAnimation { - self.selectedBackup = nil - self.backups.removeAll() - self.userIsRequestingBackupFileOrCloudBackup = false - self.backupFileOrCloudBackupHasBeenRequested = false - self.isAlertPresented = false - self.alertType = AlertType.none - self.isFetchingFromICloud = false - } - } - } -} - -struct BackupRestoreView: View { - - @ObservedObject fileprivate var store: BackupRestoreViewModel - - var body: some View { - BackupRestoreInnerView(backups: store.backups, - restoreFromFileAction: store.restoreFromFileAction, - restoreFromCloudAction: store.restoreFromCloudAction, - proceedWithBackupFile: store.proceedWithBackupFile, - alertType: store.alertType, - isAlertPresented: $store.isAlertPresented, - disableButtons: $store.userIsRequestingBackupFileOrCloudBackup, - backupFileOrCloudBackupHasBeenRequested: $store.backupFileOrCloudBackupHasBeenRequested, - isFetchingFromICloud: $store.isFetchingFromICloud, - selectedBackup: $store.selectedBackup) - } - -} - -struct BackupRestoreInnerView: View { - - fileprivate let backups: [BackupInfo] - fileprivate let restoreFromFileAction: () -> Void - fileprivate let restoreFromCloudAction: () -> Void - fileprivate let proceedWithBackupFile: (URL) -> Void - fileprivate let alertType: BackupRestoreViewModel.AlertType - @Binding var isAlertPresented: Bool - @Binding var disableButtons: Bool - @Binding var backupFileOrCloudBackupHasBeenRequested: Bool - @Binding var isFetchingFromICloud: Bool - @Binding var selectedBackup: URL? - - private let dateFormater: DateFormatter = { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = true - df.timeStyle = .short - df.dateStyle = .short - return df - }() - - private var alertTitle: Text { - switch alertType { - case .cloudFailure(reason: let reason): - switch reason { - case .icloudAccountStatusIsNotAvailable: - return Text("Sign in to iCloud") - case .couldNotRetrieveEncryptedBackupFile: - return Text("Unexpected iCloud file error") - case .couldNotRetrieveCreationDate: - return Text("Unexpected iCloud file error") - case .couldNotRetrieveDeviceName: - return Text("Unexpected iCloud file error") - case .iCloudError: - return Text("iCloud error") - } - case .noMoreCloudBackupToFetch: - return Text("No backup available in iCloud") - case .none: - assertionFailure() - return Text("") - } - } - - private var alertMessage: Text { - switch alertType { - case .cloudFailure(reason: let reason): - switch reason { - case .icloudAccountStatusIsNotAvailable: - return Text("Please sign in to your iCloud account. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on.") - case .couldNotRetrieveEncryptedBackupFile: - return Text("We could not retrieve the encrypted backup content from iCloud") - case .couldNotRetrieveCreationDate: - return Text("We could not retrieve the creation date of the backup content from iCloud") - case .couldNotRetrieveDeviceName: - return Text("We could not retrieve the device name of the backup content from iCloud") - case .iCloudError(description: let description): - return Text(description) - } - case .noMoreCloudBackupToFetch: - return Text("We could not find any backup in you iCloud account. Please make sure this device uses the same iCloud account as the one you were using on the previous device.") - case .none: - assertionFailure() - return Text("") - } - } - - var body: some View { - ZStack { - Color(AppTheme.shared.colorScheme.systemBackground) - .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) - .edgesIgnoringSafeArea(.all) - VStack(spacing: 16) { - BackupRestoreExplanationView(backupFileOrCloudBackupHasBeenRequested: backupFileOrCloudBackupHasBeenRequested) - if !backupFileOrCloudBackupHasBeenRequested { - HStack { - OlvidButton(style: .blue, - title: Text("From a file"), - systemIcon: .folderFill, - action: restoreFromFileAction) - OlvidButton(style: .blue, - title: Text("From the cloud"), - systemIcon: .icloud(.fill), - action: restoreFromCloudAction) - }.disabled(disableButtons) - } else { - if !backups.isEmpty { - ObvCardView(padding: 0) { - List { - ForEach(backups) { backup in - BackupFileDescriptionView(fileUrl: backup.fileUrl, - deviceName: backup.deviceName, - creationDate: backup.creationDate, - selectedBackup: $selectedBackup) - } - if isFetchingFromICloud { - ObvActivityIndicator(isAnimating: .constant(true), style: .medium, color: nil) - .frame(idealWidth: .infinity, maxWidth: .infinity, alignment: .center) - } - } - .listStyle(.plain) - } - } else { - ObvActivityIndicator(isAnimating: .constant(true), style: .medium, color: nil) - .frame(idealWidth: .infinity, maxWidth: .infinity, alignment: .center) - } - } - Spacer() - OlvidButton(style: .blue, title: Text("Proceed and enter backup key"), systemIcon: .checkmarkShieldFill) { - guard let selectedBackup else { assertionFailure(); return } - proceedWithBackupFile(selectedBackup) - } - .disabled(selectedBackup == nil) - }.padding() - } - .alert(isPresented: $isAlertPresented) { - Alert(title: alertTitle, - message: alertMessage, - dismissButton: Alert.Button.cancel { - withAnimation { - disableButtons = false - } - }) - } - } -} - - -fileprivate struct BackupFileDescriptionView: View { - - let fileUrl: URL - let deviceName: String? - let creationDate: Date? - - @Binding var selectedBackup: URL? - - private let dateFormater: DateFormatter = { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = true - df.timeStyle = .short - df.dateStyle = .short - return df - }() - - var body: some View { - HStack { - VStack(alignment: .leading, spacing: 4) { - if let deviceName { - Text(deviceName) - .font(.system(.headline, design: .rounded)) - } - if let formattedDate = creationDate?.relativeFormatted { - Text(formattedDate) - .font(.system(.callout)) - } else { - Text(fileUrl.lastPathComponent) - .font(.system(.footnote, design: .monospaced)) - } - } - Spacer() - Image(systemIcon: fileUrl == selectedBackup ? .checkmarkCircleFill : .circle) - .font(Font.system(size: 24, weight: .regular, design: .default)) - .foregroundColor(fileUrl == selectedBackup ? Color.green : Color.gray) - .padding(.leading) - } - .padding(.vertical, 6.0) - .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped - .onTapGesture { - selectedBackup = fileUrl - } - } - -} - - -fileprivate struct BackupRestoreExplanationView: View { - - let backupFileOrCloudBackupHasBeenRequested: Bool - - var body: some View { - ObvCardView(padding: 0) { - HStack { - VStack(alignment: .leading, spacing: 8) { - if backupFileOrCloudBackupHasBeenRequested { - Text("PLEASE_CHOOSE_THE_BACKUP_TO_RESTORE") - } else { - Text("Please choose the location of the backup file you wish to restore.") - Text("Choose From a file to pick a backup file create from a manual backup.") - Text("Choose From the cloud to select an account used for automatic backups.") - } - } - Spacer() - } - .font(.body) - .padding() - } - } -} - - -struct BackupRestoreInnerView_Previews: PreviewProvider { - - static let backups = [ - BackupInfo(fileUrl: URL(string: "file://fake.url.olvid.io/Olvid_backup_2020-11-10_12-57-45.olvidbackup")!, - deviceName: "iPhone 8", - creationDate: Date()), - BackupInfo(fileUrl: URL(string: "file://fake.url.olvid.io/Olvid_backup_2020-11-10_12-57-46.olvidbackup")!, - deviceName: "iPhone X", - creationDate: Date()), - BackupInfo(fileUrl: URL(string: "file://fake.url.olvid.io/Olvid_backup_2020-11-10_12-57-47.olvidbackup")!, - deviceName: "iPhone 11", - creationDate: Date()), - BackupInfo(fileUrl: URL(string: "file://fake.url.olvid.io/Olvid_backup_2020-11-10_12-57-48.olvidbackup")!, - deviceName: "iPhone 14", - creationDate: Date()) - ] - - static let fileUrl = URL(string: "file://fake.url.olvid.io/Olvid_backup_2020-11-10_12-57-45.olvidbackup")! - - static var previews: some View { - Group { - NavigationView { - BackupRestoreInnerView(backups: backups, - restoreFromFileAction: {}, - restoreFromCloudAction: {}, - proceedWithBackupFile: { _ in }, - alertType: .none, - isAlertPresented: .constant(false), - disableButtons: .constant(false), - backupFileOrCloudBackupHasBeenRequested: .constant(false), - isFetchingFromICloud: .constant(false), - selectedBackup: .constant(nil)) - } - NavigationView { - BackupRestoreInnerView(backups: backups, - restoreFromFileAction: {}, - restoreFromCloudAction: {}, - proceedWithBackupFile: { _ in }, - alertType: .none, - isAlertPresented: .constant(false), - disableButtons: .constant(false), - backupFileOrCloudBackupHasBeenRequested: .constant(false), - isFetchingFromICloud: .constant(false), - selectedBackup: .constant(nil)) - } - .environment(\.colorScheme, .dark) - NavigationView { - BackupRestoreInnerView(backups: backups, - restoreFromFileAction: {}, - restoreFromCloudAction: {}, - proceedWithBackupFile: { _ in }, - alertType: .none, - isAlertPresented: .constant(false), - disableButtons: .constant(false), - backupFileOrCloudBackupHasBeenRequested: .constant(true), - isFetchingFromICloud: .constant(false), - selectedBackup: .constant(fileUrl)) - } - .environment(\.colorScheme, .dark) - .previewDevice(PreviewDevice(rawValue: "iPhone8,4")) - NavigationView { - BackupRestoreInnerView(backups: backups, - restoreFromFileAction: {}, - restoreFromCloudAction: {}, - proceedWithBackupFile: { _ in }, - alertType: .none, - isAlertPresented: .constant(false), - disableButtons: .constant(false), - backupFileOrCloudBackupHasBeenRequested: .constant(true), - isFetchingFromICloud: .constant(false), - selectedBackup: .constant(nil)) - } - NavigationView { - BackupRestoreInnerView(backups: backups, - restoreFromFileAction: {}, - restoreFromCloudAction: {}, - proceedWithBackupFile: { _ in }, - alertType: .none, - isAlertPresented: .constant(false), - disableButtons: .constant(false), - backupFileOrCloudBackupHasBeenRequested: .constant(true), - isFetchingFromICloud: .constant(true), - selectedBackup: .constant(nil)) - .environment(\.colorScheme, .dark) - } - NavigationView { - BackupRestoreInnerView(backups: backups, - restoreFromFileAction: {}, - restoreFromCloudAction: {}, - proceedWithBackupFile: { _ in }, - alertType: .cloudFailure(reason: .icloudAccountStatusIsNotAvailable), - isAlertPresented: .constant(true), - disableButtons: .constant(false), - backupFileOrCloudBackupHasBeenRequested: .constant(false), - isFetchingFromICloud: .constant(false), - selectedBackup: .constant(nil)) - .environment(\.colorScheme, .dark) - } - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/BackupRestoringWaitingScreenViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/BackupRestoringWaitingScreenViewController.swift deleted file mode 100644 index 4a3e47ea..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/BackupRestoringWaitingScreenViewController.swift +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvEngine -import ObvUI -import SwiftUI -import ObvUICoreData - - -protocol BackupRestoringWaitingScreenViewControllerDelegate: AnyObject { - func userWantsToStartOnboardingFromScratch() async - @MainActor func ownedIdentityRestoredFromBackupRestore() async -} - -/// This view controller is shown right after the user entered her backup key. It shows a confirmation message if the backup was restored, or an error message if not. -/// In case the backup was restored, the user gets a chance to activate automatic backups to iCloud. -final class BackupRestoringWaitingScreenHostingController: UIHostingController { - - fileprivate let model: BackupRestoringWaitingScreenModel - - var delegate: BackupRestoringWaitingScreenViewControllerDelegate? { - get { - self.model.delegate - } - set { - self.model.delegate = newValue - } - } - - var appBackupDelegate: AppBackupDelegate? { - get { - self.model.appBackupDelegate - } - set { - self.model.appBackupDelegate = newValue - } - } - - init(backupRequestUuid: UUID, obvEngine: ObvEngine) { - self.model = BackupRestoringWaitingScreenModel(backupRequestUuid: backupRequestUuid, obvEngine: obvEngine) - let view = BackupRestoringWaitingScreenView(model: self.model) - super.init(rootView: view) - } - - @objc required dynamic init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - navigationController?.setNavigationBarHidden(true, animated: false) - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - Task { await model.restoreFullBackupNow() } - } - -} - -fileprivate enum RestoreState { - case restoreInProgress - case restoreSucceeded - case restoreFailed - case restoreSucceededButActivationOfAutomaticBackupsFailed(title: String, message: String) -} - -fileprivate class BackupRestoringWaitingScreenModel: ObservableObject { - - let obvEngine: ObvEngine - let backupRequestUuid: UUID - weak var delegate: BackupRestoringWaitingScreenViewControllerDelegate? - weak var appBackupDelegate: AppBackupDelegate? - - init(backupRequestUuid: UUID, obvEngine: ObvEngine) { - self.backupRequestUuid = backupRequestUuid - self.obvEngine = obvEngine - } - - @Published var restoreState: RestoreState = .restoreInProgress - - func userWantsToStartOnboardingFromScratch() { - Task { await delegate?.userWantsToStartOnboardingFromScratch() } - } - - func ownedIdentityRestoredFromBackupRestore() { - Task { await delegate?.ownedIdentityRestoredFromBackupRestore() } - } - - - @MainActor - fileprivate func restoreFullBackupNow() async { - do { - try await obvEngine.restoreFullBackup(backupRequestIdentifier: backupRequestUuid) - withAnimation { - restoreState = .restoreSucceeded - } - } catch { - withAnimation { - restoreState = .restoreFailed - } - } - } - - - /// Activates automatic backups to iCloud. - /// - Returns: `nil`if this method succeeds, or an error title and message if it fails. - @MainActor - func userWantsToEnableAutomaticBackup() async { - if let errorTitleAndMessage = await userWantsToEnableAutomaticBackup() { - withAnimation { - self.restoreState = .restoreSucceededButActivationOfAutomaticBackupsFailed(title: errorTitleAndMessage.title, message: errorTitleAndMessage.message) - } - } else { - ownedIdentityRestoredFromBackupRestore() - } - } - - - /// Activates automatic backups to iCloud. - /// - Returns: `nil`if this method succeeds, or an error title and message if it fails. - private func userWantsToEnableAutomaticBackup() async -> (title: String, message: String)? { - - guard !ObvMessengerSettings.Backup.isAutomaticBackupEnabled else { return nil } - guard let appBackupDelegate else { assertionFailure(); return nil } - - // The user wants to activate automatic backup. - // We must check whether it's possible. - do { - let accountStatus = try await appBackupDelegate.getAccountStatus() - if case .available = accountStatus { - obvEngine.userJustActivatedAutomaticBackup() - ObvMessengerSettings.Backup.isAutomaticBackupEnabled = true - return nil - } else { - guard let titleAndMessage = AppBackupManager.CKAccountStatusMessage(accountStatus) else { - assertionFailure() - return AppBackupManager.CKAccountStatusMessage(.couldNotDetermine) - } - return titleAndMessage - } - } catch { - return AppBackupManager.CKAccountStatusMessage(.noAccount) - } - } - - -} - - -struct BackupRestoringWaitingScreenView: View { - - @ObservedObject fileprivate var model: BackupRestoringWaitingScreenModel - - var body: some View { - ZStack { - Color(AppTheme.shared.colorScheme.systemBackground) - .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) - .edgesIgnoringSafeArea(.all) - VStack(alignment: .leading, spacing: 16) { - HStack { - switch model.restoreState { - case .restoreInProgress: - Text(Strings.restoringBackup) - .font(.largeTitle) - .fontWeight(.bold) - case .restoreSucceeded, .restoreSucceededButActivationOfAutomaticBackupsFailed: - Text("TITLE_BACKUP_RESTORED") - .font(.largeTitle) - .fontWeight(.bold) - case .restoreFailed: - Text(Strings.restoreFailed) - .font(.largeTitle) - .fontWeight(.bold) - } - Spacer() - } - ObvCardView { - switch model.restoreState { - case .restoreInProgress: - HStack { - Spacer() - ObvActivityIndicator(isAnimating: .constant(true), style: .large, color: nil) - Spacer() - } - case .restoreSucceeded: - Text("ENABLE_AUTOMATIC_BACKUP_EXPLANATION") - .frame(minWidth: .none, - maxWidth: .infinity, - minHeight: .none, - idealHeight: .none, - maxHeight: .none, - alignment: .center) - case .restoreFailed: - Text("RESTORE_BACKUP_FAILED_EXPLANATION") - .frame(minWidth: .none, - maxWidth: .infinity, - minHeight: .none, - idealHeight: .none, - maxHeight: .none, - alignment: .center) - case .restoreSucceededButActivationOfAutomaticBackupsFailed(title: let title, message: let message): - VStack { - Text(title) - .font(.body) - .fontWeight(.heavy) - .lineLimit(1) - Text(message) - .font(.body) - .multilineTextAlignment(.center) - } - } - } - switch model.restoreState { - case .restoreInProgress: - EmptyView() - case .restoreSucceeded, .restoreSucceededButActivationOfAutomaticBackupsFailed: - if model.appBackupDelegate != nil { - OlvidButton(style: .blue, title: Text("ENABLE_AUTOMATIC_BACKUP_AND_CONTINUE")) { - Task { - await model.userWantsToEnableAutomaticBackup() - } - } - OlvidButton(style: .standard, title: Text("Later")) { - model.ownedIdentityRestoredFromBackupRestore() - } - } else { - OlvidButton(style: .standard, title: Text("Continue")) { - model.ownedIdentityRestoredFromBackupRestore() - } - } - case .restoreFailed: - OlvidButton(style: .standard, title: Text("Back")) { - model.userWantsToStartOnboardingFromScratch() - } - } - Spacer() - }.padding() - - } - } - - private struct Strings { - static let restoringBackup = NSLocalizedString("RESTORING_BACKUP_PLEASE_WAIT", comment: "Title centered on screen") - static let restoreFailed = NSLocalizedString("Restore failed 🥺", comment: "Body displayed when a backup restore failed") - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/CloudFailureReason.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/CloudFailureReason.swift deleted file mode 100644 index 6b65e5a6..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/BackupRestore/CloudFailureReason.swift +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation - -enum CloudFailureReason { - case icloudAccountStatusIsNotAvailable - case couldNotRetrieveEncryptedBackupFile - case couldNotRetrieveCreationDate - case couldNotRetrieveDeviceName - case iCloudError(description: String) -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ChooseBetweenBackupRestoreAndAddThisDevice/ChooseBetweenBackupRestoreAndAddThisDeviceView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ChooseBetweenBackupRestoreAndAddThisDevice/ChooseBetweenBackupRestoreAndAddThisDeviceView.swift new file mode 100644 index 00000000..5ccafd8f --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ChooseBetweenBackupRestoreAndAddThisDevice/ChooseBetweenBackupRestoreAndAddThisDeviceView.swift @@ -0,0 +1,92 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI + + +protocol ChooseBetweenBackupRestoreAndAddThisDeviceViewActionsProtocol: AnyObject { + func userWantsToRestoreBackup() + func userWantsToActivateHerProfileOnThisDevice() + func userIndicatedHerProfileIsManagedByOrganisation() +} + + +struct ChooseBetweenBackupRestoreAndAddThisDeviceView: View { + + let actions: ChooseBetweenBackupRestoreAndAddThisDeviceViewActionsProtocol + + var body: some View { + ScrollView { + VStack { + + // Vertically center the view, but not on iPhone + + if UIDevice.current.userInterfaceIdiom != .phone { + Spacer() + } + + NewOnboardingHeaderView( + title: "WHAT_DO_YOU_WANT_TO_DO_ONBOARDING_TITLE", + subtitle: nil) + + VStack { + OnboardingSpecificPlainButton("ONBOARDING_BUTTON_TITLE_ACTIVATE_MY_PROFILE_ON_THIS_DEVICE", action: actions.userWantsToActivateHerProfileOnThisDevice) + .padding(.bottom) + OnboardingSpecificPlainButton("ONBOARDING_BUTTON_TITLE_RESTORE_BACKUP", action: actions.userWantsToRestoreBackup) + } + .padding(.horizontal) + .padding(.top) + + HStack { + Text("ONBOARDING_NAME_CHOOSER_MANAGED_PROFILE_LABEL") + .foregroundStyle(.secondary) + Button("ONBOARDING_NAME_CHOOSER_MANAGED_PROFILE_BUTTON_TITLE", action: actions.userIndicatedHerProfileIsManagedByOrganisation) + } + .font(.subheadline) + .padding(.top, 40) + + Spacer() + + } + } + } + +} + + + + + + + +struct ChooseBetweenBackupRestoreAndAddThisDeviceView_Previews: PreviewProvider { + + private final class Actions: ChooseBetweenBackupRestoreAndAddThisDeviceViewActionsProtocol { + func userWantsToRestoreBackup() {} + func userWantsToActivateHerProfileOnThisDevice() {} + func userIndicatedHerProfileIsManagedByOrganisation() {} + } + + private static let actions = Actions() + + static var previews: some View { + ChooseBetweenBackupRestoreAndAddThisDeviceView(actions: actions) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ChooseBetweenBackupRestoreAndAddThisDevice/ChooseBetweenBackupRestoreAndAddThisDeviceViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ChooseBetweenBackupRestoreAndAddThisDevice/ChooseBetweenBackupRestoreAndAddThisDeviceViewController.swift new file mode 100644 index 00000000..b64069ba --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ChooseBetweenBackupRestoreAndAddThisDevice/ChooseBetweenBackupRestoreAndAddThisDeviceViewController.swift @@ -0,0 +1,102 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI + + +protocol ChooseBetweenBackupRestoreAndAddThisDeviceViewControllerDelegate: AnyObject { + func userWantsToRestoreBackup(controller: ChooseBetweenBackupRestoreAndAddThisDeviceViewController) async + func userWantsToActivateHerProfileOnThisDevice(controller: ChooseBetweenBackupRestoreAndAddThisDeviceViewController) async + func userIndicatedHerProfileIsManagedByOrganisation(controller: ChooseBetweenBackupRestoreAndAddThisDeviceViewController) async +} + + +final class ChooseBetweenBackupRestoreAndAddThisDeviceViewController: UIHostingController, ChooseBetweenBackupRestoreAndAddThisDeviceViewActionsProtocol { + + weak var delegate: ChooseBetweenBackupRestoreAndAddThisDeviceViewControllerDelegate? + + init(delegate: ChooseBetweenBackupRestoreAndAddThisDeviceViewControllerDelegate) { + let actions = ChooseBetweenBackupRestoreAndAddThisDeviceViewActions() + let view = ChooseBetweenBackupRestoreAndAddThisDeviceView(actions: actions) + super.init(rootView: view) + actions.delegate = self + self.delegate = delegate + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + } + + // ChooseBetweenBackupRestoreAndAddThisDeviceViewActionsProtocol + + func userWantsToRestoreBackup() { + Task { await delegate?.userWantsToRestoreBackup(controller: self) } + } + + func userWantsToActivateHerProfileOnThisDevice() { + Task { await delegate?.userWantsToActivateHerProfileOnThisDevice(controller: self) } + } + + func userIndicatedHerProfileIsManagedByOrganisation() { + Task { await delegate?.userIndicatedHerProfileIsManagedByOrganisation(controller: self) } + } + +} + + +// MARK: - ChooseBetweenBackupRestoreAndAddThisDeviceViewActions + +private final class ChooseBetweenBackupRestoreAndAddThisDeviceViewActions: ChooseBetweenBackupRestoreAndAddThisDeviceViewActionsProtocol { + + weak var delegate: ChooseBetweenBackupRestoreAndAddThisDeviceViewActionsProtocol? + + func userWantsToRestoreBackup() { + delegate?.userWantsToRestoreBackup() + } + + func userWantsToActivateHerProfileOnThisDevice() { + delegate?.userWantsToActivateHerProfileOnThisDevice() + } + + func userIndicatedHerProfileIsManagedByOrganisation() { + delegate?.userIndicatedHerProfileIsManagedByOrganisation() + } + + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CommonViews/NewOnboardingHeaderView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CommonViews/NewOnboardingHeaderView.swift new file mode 100644 index 00000000..b8d85fe1 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CommonViews/NewOnboardingHeaderView.swift @@ -0,0 +1,61 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PART ICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI + + +struct NewOnboardingHeaderView: View { + + let title: LocalizedStringKey + let subtitle: LocalizedStringKey? + + var body: some View { + VStack { + Image("badge", bundle: nil) + .resizable() + .frame(width: 60, height: 60, alignment: .center) + .padding() + Text(title) + .multilineTextAlignment(.center) + .font(.title) + if let subtitle { + Text(subtitle) + .multilineTextAlignment(.center) + .font(.title3) + .foregroundStyle(.secondary) + } + } + } + +} + + +struct NewOnboardingHeaderView_Previews: PreviewProvider { + + static var previews: some View { + NewOnboardingHeaderView( + title: "WELCOME_ONBOARDING_TITLE", + subtitle: "WELCOME_ONBOARDING_SUBTITLE") + NewOnboardingHeaderView( + title: "WELCOME_ONBOARDING_TITLE", + subtitle: "WELCOME_ONBOARDING_SUBTITLE") + .environment(\.locale, .init(identifier: "fr")) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CommonViews/SingleDigitTextField.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CommonViews/SingleDigitTextField.swift new file mode 100644 index 00000000..f70d38b1 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CommonViews/SingleDigitTextField.swift @@ -0,0 +1,104 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import Combine + + +protocol SingleDigitTextFielddActions { + func singleTextFieldDidChangeAtIndex(_ index: Int) +} + + + +struct SingleDigitTextField: View { + + private let key: LocalizedStringKey + private let text: Binding + private let actions: SingleDigitTextFielddActions? // Not needed when the this text field stays disabled + private let model: Model? // Not needed when the this text field stays disabled + + @Environment(\.isEnabled) var isEnabled + + struct Model { + let index: Int // Index of this text field in the BackupKeyTextField + } + + @State private var previousText: String? = nil + + private static let maxLength = 1 + + /// Both `actions` and `model` must be set, unless this text field is disabled by default (just used to show some existing value). + init(_ key: LocalizedStringKey, text: Binding, actions: SingleDigitTextFielddActions?, model: Model?) { + self.key = key + self.text = text + self.actions = actions + self.model = model + } + + private let myFont = Font + .system(size: 18) + .monospaced() + .weight(.bold) + + var body: some View { + TextField(key, text: text) + .keyboardType(.decimalPad) + .textContentType(.none) + .multilineTextAlignment(.center) + .font(myFont) + .padding(.vertical, 10) + .overlay(content: { + RoundedRectangle(cornerRadius: 12, style: .continuous) + .stroke(Color(UIColor.systemGray2), lineWidth: 1) + .padding(.horizontal, 1) + }).background( + RoundedRectangle(cornerRadius: 12) + .fill(Color(UIColor.systemGray5)) + .padding(.horizontal, 1) + .opacity(isEnabled ? 0 : 1) + ) + .onReceive(Just(text)) { _ in + guard let actions, let model else { return } + guard previousText != text.wrappedValue else { return } + previousText = text.wrappedValue + // We limit the string length to maxLength characters. + let newText = String(text.wrappedValue.removingAllCharactersNotInCharacterSet(.decimalDigits).prefix(Self.maxLength)) + if text.wrappedValue != newText { + text.wrappedValue = newText + } + actions.singleTextFieldDidChangeAtIndex(model.index) + } + } + +} + + +// MARK: - Private helpers + +fileprivate extension String { + func removingAllCharactersNotInCharacterSet(_ characterSet: CharacterSet) -> String { + return String(self + .trimmingWhitespacesAndNewlines() + .unicodeScalars + .filter({ + characterSet.contains($0) + })) + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CurrentDeviceNameChooser/CurrentDeviceNameChooserView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CurrentDeviceNameChooser/CurrentDeviceNameChooserView.swift new file mode 100644 index 00000000..23b705ea --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CurrentDeviceNameChooser/CurrentDeviceNameChooserView.swift @@ -0,0 +1,152 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI + +protocol CurrentDeviceNameChooserViewActionsProtocol: AnyObject { + func userDidChooseCurrentDeviceName(deviceName: String) async +} + + +struct CurrentDeviceNameChooserView: View { + + let actions: CurrentDeviceNameChooserViewActionsProtocol + let model: Model + + struct Model { + let defaultDeviceName: String + } + + @State private var deviceName = ""; + @State private var deviceNameSetWithDefaultName = false + @State private var isButtonDisabled = true + @State private var isInterfaceDisabled = false + + + private func isResetButtonDisabled() { + isButtonDisabled = deviceName.trimmingWhitespacesAndNewlines().isEmpty + } + + private func userDidChooseCurrentDeviceName() { + isInterfaceDisabled = true + Task { await actions.userDidChooseCurrentDeviceName(deviceName: deviceName) } + } + + var body: some View { + ScrollView { + VStack { + + NewOnboardingHeaderView(title: "ONBOARDING_DEVICE_NAME_CHOOSER_TITLE", subtitle: "ONBOARDING_DEVICE_NAME_CHOOSER_SUBTITLE") + .padding(.bottom, 40) + + InternalTextField("ONBOARDING_DEVICE_NAME_CHOOSER_TEXTFIELD_\(model.defaultDeviceName)", text: $deviceName) + .onChange(of: deviceName) { _ in isResetButtonDisabled() } + .padding(.bottom) + + HStack { + Spacer() + ProgressView() + Spacer() + }.opacity(isInterfaceDisabled ? 1.0 : 0.0) + + InternalButton("ONBOARDING_DEVICE_NAME_CHOOSER_BUTTON_TITLE", action: userDidChooseCurrentDeviceName) + .disabled(isButtonDisabled) + .padding(.top, 20) + + } + .padding(.horizontal) + } + .onAppear { + isInterfaceDisabled = false + guard !deviceNameSetWithDefaultName else { return } + deviceNameSetWithDefaultName = true + deviceName = String.localizedStringWithFormat(NSLocalizedString("MY_DEVICE_NAME_%@", comment: ""), model.defaultDeviceName) + } + .disabled(isInterfaceDisabled) + } + +} + + +// MARK: - Button used in this view only + +private struct InternalButton: View { + + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Text(key) + .foregroundStyle(.white) + .padding(.horizontal, 30) + .padding(.vertical, 24) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + +// MARK: - Text field used in this view only + +private struct InternalTextField: View { + + private let key: LocalizedStringKey + private let text: Binding + + init(_ key: LocalizedStringKey, text: Binding) { + self.key = key + self.text = text + } + + var body: some View { + TextField(key, text: text) + .padding() + .background(Color("TextFieldBackgroundColor")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } + +} + + +struct CurrentDeviceNameChooserViewActionsProtocol_Previews: PreviewProvider { + + final class ActionsForPreviews: CurrentDeviceNameChooserViewActionsProtocol{ + func userDidChooseCurrentDeviceName(deviceName: String) {} + } + + private static let actions = ActionsForPreviews() + + private static let model = CurrentDeviceNameChooserView.Model( + defaultDeviceName: "iPhone 15") + + static var previews: some View { + CurrentDeviceNameChooserView(actions: actions, model: model) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CurrentDeviceNameChooser/CurrentDeviceNameChooserViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CurrentDeviceNameChooser/CurrentDeviceNameChooserViewController.swift new file mode 100644 index 00000000..c7084f27 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/CurrentDeviceNameChooser/CurrentDeviceNameChooserViewController.swift @@ -0,0 +1,110 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI + + +protocol CurrentDeviceNameChooserViewControllerDelegate: AnyObject { + func userWantsToCloseOnboarding(controller: CurrentDeviceNameChooserViewController) async + func userDidChooseCurrentDeviceName(controller: CurrentDeviceNameChooserViewController, deviceName: String) async +} + + +@MainActor +final class CurrentDeviceNameChooserViewController: UIHostingController, CurrentDeviceNameChooserViewActionsProtocol { + + private weak var delegate: CurrentDeviceNameChooserViewControllerDelegate? + + private let showCloseButton: Bool + + init(model: CurrentDeviceNameChooserView.Model, delegate: CurrentDeviceNameChooserViewControllerDelegate, showCloseButton: Bool) { + self.showCloseButton = showCloseButton + let actions = CurrentDeviceNameChooserViewActions() + let view = CurrentDeviceNameChooserView(actions: actions, model: model) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + configureNavigation(animated: false) + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + configureNavigation(animated: false) + } + + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + configureNavigation(animated: animated) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + if showCloseButton && navigationItem.rightBarButtonItem == nil { + let handler: UIActionHandler = { [weak self] _ in self?.closeAction() } + let closeButton = UIBarButtonItem(systemItem: .close, primaryAction: .init(handler: handler)) + navigationItem.setRightBarButton(closeButton, animated: animated) + } + } + + + private func closeAction() { + Task { [weak self] in + guard let self else { return } + await delegate?.userWantsToCloseOnboarding(controller: self) + } + } + + + // CurrentDeviceNameChooserViewActionsProtocol + + func userDidChooseCurrentDeviceName(deviceName: String) async { + await delegate?.userDidChooseCurrentDeviceName(controller: self, deviceName: deviceName) + } + +} + + + + +private final class CurrentDeviceNameChooserViewActions: CurrentDeviceNameChooserViewActionsProtocol { + + weak var delegate: CurrentDeviceNameChooserViewActionsProtocol? + + func userDidChooseCurrentDeviceName(deviceName: String) async { + await delegate?.userDidChooseCurrentDeviceName(deviceName: deviceName) + } + +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/DisplayNameChooserViewController/DisplayNameChooserView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/DisplayNameChooserViewController/DisplayNameChooserView.swift deleted file mode 100644 index 0f39e0f0..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/DisplayNameChooserViewController/DisplayNameChooserView.swift +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import SwiftUI -import ObvTypes -import ObvUICoreData - - -protocol DisplayNameChooserViewControllerDelegate: AnyObject { - func userDidSetUnmanagedDetails(ownedIdentityCoreDetails: ObvIdentityCoreDetails, photoURL: URL?) async - func userDidAcceptedKeycloakDetails(keycloakDetails: (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff), keycloakState: ObvKeycloakState, photoURL: URL?) async -} - - -final class DisplayNameChooserViewController: UIHostingController { - - private let singleIdentity: SingleIdentity - - init(delegate: DisplayNameChooserViewControllerDelegate) { - self.singleIdentity = SingleIdentity(serverAndAPIKeyToShow: nil, identityDetails: nil) - let view = DisplayNameChooserView(singleIdentity: singleIdentity, completionHandlerOnSave: { [weak delegate] (coreDetails, photoURL) in - Task { await delegate?.userDidSetUnmanagedDetails(ownedIdentityCoreDetails: coreDetails, photoURL: photoURL) } - }) - super.init(rootView: view) - } - - init(keycloakDetails: (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff), keycloakState: ObvKeycloakState, delegate: DisplayNameChooserViewControllerDelegate) { - self.singleIdentity = SingleIdentity(keycloakDetails: keycloakDetails) - let view = DisplayNameChooserView(singleIdentity: singleIdentity, completionHandlerOnSave: { [weak delegate] (coreDetails, photoURL) in - assert(try! keycloakDetails.keycloakUserDetailsAndStuff.getObvIdentityCoreDetails() == coreDetails) - Task { await delegate?.userDidAcceptedKeycloakDetails(keycloakDetails: keycloakDetails, keycloakState: keycloakState, photoURL: photoURL) } - }) - super.init(rootView: view) - } - - override func viewDidLoad() { - super.viewDidLoad() - title = CommonString.Title.myId - } - - deinit { - debugPrint("DisplayNameChooserViewController deinit") - } - - @MainActor required dynamic init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - -} - - -struct DisplayNameChooserView: View { - - var singleIdentity: SingleIdentity - var completionHandlerOnSave: (ObvIdentityCoreDetails, URL?) -> Void - var editionType: EditSingleOwnedIdentityView.EditionType = .creation - - var body: some View { - EditSingleOwnedIdentityView( - editionType: editionType, - singleIdentity: singleIdentity, - userConfirmedPublishAction: { - if let userDetails = try? singleIdentity.keycloakDetails?.keycloakUserDetailsAndStuff.getObvIdentityCoreDetails() { - completionHandlerOnSave(userDetails, singleIdentity.photoURL) - } else if let unmanagedIdentityDetails = singleIdentity.unmanagedIdentityDetails { - completionHandlerOnSave(unmanagedIdentityDetails, singleIdentity.photoURL) - } - }, - userWantsToUnbindFromKeycloakServer: { _ in - assertionFailure("We do not expect any unbinding during an onboarding") - }) - } -} - - -struct DisplayNameChooserView_Previews: PreviewProvider { - - private static let emptyIdentity = SingleIdentity(firstName: nil, - lastName: nil, - position: nil, - company: nil, - isKeycloakManaged: false, - showGreenShield: false, - showRedShield: false, - identityColors: nil, - photoURL: nil) - - static var previews: some View { - Group { - DisplayNameChooserView(singleIdentity: emptyIdentity, completionHandlerOnSave: {_,_ in }) - DisplayNameChooserView(singleIdentity: emptyIdentity, completionHandlerOnSave: {_,_ in }) - .environment(\.colorScheme, .dark) - .environment(\.locale, .init(identifier: "fr")) - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderManualConfiguration/IdentityProviderManualConfigurationHostingView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderManualConfiguration/IdentityProviderManualConfigurationHostingView.swift deleted file mode 100644 index 5f58caa0..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderManualConfiguration/IdentityProviderManualConfigurationHostingView.swift +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import SwiftUI -import Combine -import JWS -import AppAuth -import ObvTypes -import ObvUI - -protocol IdentityProviderManualConfigurationHostingViewDelegate: AnyObject { - - func userWantsToValidateManualKeycloakConfiguration(keycloakConfig: KeycloakConfiguration) async - -} - - -final class IdentityProviderManualConfigurationHostingView: UIHostingController { - - private let store: IdentityProviderManualConfigurationViewStore - - init(delegate: IdentityProviderManualConfigurationHostingViewDelegate) { - let store = IdentityProviderManualConfigurationViewStore(delegate: delegate) - let view = IdentityProviderManualConfigurationView(store: store) - self.store = store - super.init(rootView: view) - title = Strings.title - } - - @objc required dynamic init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - navigationController?.navigationBar.prefersLargeTitles = false - } - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated) - navigationController?.navigationBar.prefersLargeTitles = true - } - - private struct Strings { - static let title = NSLocalizedString("IDENTITY_PROVIDER", comment: "") - } - -} - - -final class IdentityProviderManualConfigurationViewStore: ObservableObject { - - @Published fileprivate var displayedIdentityServerAsString = "" - @Published fileprivate var displayedClientId = "" - @Published fileprivate var displayedClientSecret = "" - - @Published fileprivate var validatedServerURL: URL? = nil - - private var cancellables = [AnyCancellable]() - - weak var delegate: IdentityProviderManualConfigurationHostingViewDelegate? - - @Published private var identityServer: URL? - @Published private(set) var keycloakConfig: KeycloakConfiguration? - - init(delegate: IdentityProviderManualConfigurationHostingViewDelegate?) { - self.delegate = delegate - processDisplayedValues() - } - - private func processDisplayedValues() { - cancellables.append(contentsOf: [ - // When the identity server changes, we invalidate any previously validated server, and check whether the new displayed server can be validated - self.$displayedIdentityServerAsString.sink(receiveValue: { [weak self] displayedServer in - if let url = URL(string: displayedServer), UIApplication.shared.canOpenURL(url) { - self?.identityServer = url - } else { - self?.identityServer = nil - } - }), - self.$identityServer.combineLatest(self.$displayedClientId).sink { [weak self] (serverURL, clientId) in - guard let serverURL = serverURL, let displayedClientId = self?.displayedClientId, !clientId.isEmpty else { - withAnimation { self?.keycloakConfig = nil } - return - } - let keycloakConfig = KeycloakConfiguration(serverURL: serverURL, clientId: clientId, clientSecret: displayedClientId) - guard self?.keycloakConfig != keycloakConfig else { return } - withAnimation { self?.keycloakConfig = keycloakConfig } - }, - ]) - } - - fileprivate func userWantsToValidateDisplayedServer() { - guard let keycloakConfig = keycloakConfig else { assertionFailure(); return } - Task { await delegate?.userWantsToValidateManualKeycloakConfiguration(keycloakConfig: keycloakConfig) } - } - -} - - -struct IdentityProviderManualConfigurationView: View { - - @ObservedObject var store: IdentityProviderManualConfigurationViewStore - - var body: some View { - ZStack { - Color(AppTheme.shared.colorScheme.systemBackground) - .edgesIgnoringSafeArea(.all) - VStack { - - Form { - Text("IDENTITY_PROVIDER_OPTION_EXPLANATION") - .font(.body) - IdentityProviderServerAndOtherTextFields(displayedIdentityServer: $store.displayedIdentityServerAsString, - displayedClientId: $store.displayedClientId, - displayedClientSecret: $store.displayedClientSecret) - } - - OlvidButton(style: .blue, - title: Text("VALIDATE_SERVER"), - systemIcon: .checkmarkCircle, - action: store.userWantsToValidateDisplayedServer) - .disabled(store.keycloakConfig == nil) - .padding(.bottom, 16) - .padding(.horizontal) - - } - - } - } -} - - - - -fileprivate struct IdentityProviderServerAndOtherTextFields: View { - - @Binding var displayedIdentityServer: String - @Binding var displayedClientId: String - @Binding var displayedClientSecret: String - let validating: Bool = false - - var body: some View { - - // Identity Server URL - Section(header: Text("IDENTITY_PROVIDER_SERVER")) { - HStack { - TextField(LocalizedStringKey("URL"), text: $displayedIdentityServer) - .disableAutocorrection(true) - .autocapitalization(.none) - .disabled(validating) - if validating { - ObvProgressView() - } - } - HStack { - TextField(LocalizedStringKey("SERVER_CLIENT_ID"), text: $displayedClientId) - .disableAutocorrection(true) - .autocapitalization(.none) - .disabled(validating) - if validating { - ObvProgressView() - } - } - HStack { - SecureField(LocalizedStringKey("SERVER_CLIENT_SECRET"), text: $displayedClientSecret) - .disableAutocorrection(true) - .autocapitalization(.allCharacters) - .disabled(validating) - if validating { - ObvProgressView() - } - } - } - - } -} - - - - - - -struct IdentityProviderOptionsView_Previews: PreviewProvider { - - private static let mockStore = IdentityProviderManualConfigurationViewStore(delegate: nil) - - static var previews: some View { - IdentityProviderManualConfigurationView(store: mockStore) - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/IdentityProviderValidationHostingViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/IdentityProviderValidationHostingViewController.swift deleted file mode 100644 index b1af01d0..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/IdentityProviderValidationHostingViewController.swift +++ /dev/null @@ -1,404 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import AppAuth -import JWS -import ObvUI -import ObvTypes -import SwiftUI -import UI_SystemIcon -import UI_SystemIcon_SwiftUI - - -protocol IdentityProviderValidationHostingViewControllerDelegate: AnyObject { - func newKeycloakUserDetailsAndStuff(_ keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff, keycloakState: ObvKeycloakState) async - func userWantsToRestoreBackup() async -} - -final class IdentityProviderValidationHostingViewController: UIHostingController { - - private let store: IdentityProviderValidationHostingViewStore - - init(keycloakConfig: KeycloakConfiguration, isConfiguredFromMDM: Bool, delegate: IdentityProviderValidationHostingViewControllerDelegate) { - let store = IdentityProviderValidationHostingViewStore(keycloakConfig: keycloakConfig, isConfiguredFromMDM: isConfiguredFromMDM) - let view = IdentityProviderValidationHostingView(store: store) - self.store = store - super.init(rootView: view) - store.delegate = delegate - } - - @objc required dynamic init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewDidLoad() { - super.viewDidLoad() - title = store.isConfiguredFromMDM ? nil : Strings.title - navigationItem.largeTitleDisplayMode = .never - - let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 20.0, weight: .bold) - let questionmarkCircleImage = UIImage(systemIcon: .questionmarkCircle, withConfiguration: symbolConfiguration) - let questionmarkCircleButton = UIBarButtonItem(image: questionmarkCircleImage, style: UIBarButtonItem.Style.plain, target: self, action: #selector(questionmarkCircleButtonTapped)) - navigationItem.rightBarButtonItem = questionmarkCircleButton - - } - - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - navigationController?.navigationBar.barStyle = .black - navigationController?.navigationBar.tintColor = .white - } - - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated) - navigationController?.navigationBar.barStyle = .default - navigationController?.navigationBar.tintColor = .systemBlue - } - - - @objc func questionmarkCircleButtonTapped() { - let view = KeycloakConfigurationDetailsView(keycloakConfig: store.keycloakConfig) - let vc = UIHostingController(rootView: view) - if #available(iOS 15, *) { - vc.sheetPresentationController?.detents = [.medium(), .large()] - vc.sheetPresentationController?.preferredCornerRadius = 16.0 - vc.sheetPresentationController?.prefersGrabberVisible = true - } - present(vc, animated: true) - } - - private struct Strings { - static let title = NSLocalizedString("IDENTITY_PROVIDER", comment: "") - } - -} - - -final class IdentityProviderValidationHostingViewStore: ObservableObject { - - fileprivate let keycloakConfig: KeycloakConfiguration - fileprivate let isConfiguredFromMDM: Bool - - fileprivate var delegate: IdentityProviderValidationHostingViewControllerDelegate? - - // Nil while validating - @Published fileprivate var validationStatus: ValidationStatus - - @Published fileprivate var isAlertPresented = false - @Published fileprivate var alertType = AlertType.none - - init(keycloakConfig: KeycloakConfiguration, isConfiguredFromMDM: Bool) { - self.keycloakConfig = keycloakConfig - self.isConfiguredFromMDM = isConfiguredFromMDM - self.validationStatus = .validating - } - - fileprivate enum AlertType { - case userAuthenticationFailed - case badKeycloakServerResponse - case none // Dummy type - } - - enum ValidationStatus { - case validating - case validationFailed - case validated(keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration)) - - var isValidated: Bool { - switch self { - case .validated: return true - default: return false - } - } - } - - @MainActor - fileprivate func userWantsToValidateDisplayedServer() { - assert(Thread.isMainThread) - switch validationStatus { - case .validating: - break - case .validationFailed, .validated: - return // Already validated, happens typically when the user comes back to this view after a successfull authentication - } - Task { - let keycloakServerKeyAndConfig: (ObvJWKSet, OIDServiceConfiguration) - do { - keycloakServerKeyAndConfig = try await KeycloakManagerSingleton.shared.discoverKeycloakServer(for: keycloakConfig.serverURL) - } catch { - assert(Thread.isMainThread) - withAnimation { validationStatus = .validationFailed } - return - } - assert(Thread.isMainThread) - withAnimation { validationStatus = .validated(keycloakServerKeyAndConfig: keycloakServerKeyAndConfig) } - } - } - - - @MainActor - fileprivate func userWantsToAuthenticate(keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration)) async { - do { - let authState = try await KeycloakManagerSingleton.shared.authenticate(configuration: keycloakServerKeyAndConfig.serviceConfig, - clientId: keycloakConfig.clientId, - clientSecret: keycloakConfig.clientSecret, - ownedCryptoId: nil) - assert(Thread.isMainThread) - await getOwnedDetailsAfterSucessfullAuthentication(keycloakServerKeyAndConfig: keycloakServerKeyAndConfig, authState: authState) - } catch { - assert(Thread.isMainThread) - alertType = .userAuthenticationFailed - isAlertPresented = true - return - } - } - - - @MainActor - private func getOwnedDetailsAfterSucessfullAuthentication(keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration), authState: OIDAuthState) async { - - assert(Thread.isMainThread) - - let keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff - let keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff - do { - (keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff) = try await KeycloakManagerSingleton.shared.getOwnDetails(keycloakServer: keycloakConfig.serverURL, - authState: authState, - clientSecret: keycloakConfig.clientSecret, - jwks: keycloakServerKeyAndConfig.jwks, - latestLocalRevocationListTimestamp: nil) - } catch let error as KeycloakManager.GetOwnDetailsError { - switch error { - case .badResponse: - alertType = .badKeycloakServerResponse - isAlertPresented = true - default: - // We should be more specific - alertType = .badKeycloakServerResponse - isAlertPresented = true - } - return - } catch { - // We should be more specific - alertType = .badKeycloakServerResponse - isAlertPresented = true - return - } - - assert(Thread.isMainThread) - - if let minimumBuildVersion = keycloakServerRevocationsAndStuff.minimumIOSBuildVersion { - guard ObvMessengerConstants.bundleVersionAsInt >= minimumBuildVersion else { - ObvMessengerInternalNotification.installedOlvidAppIsOutdated(presentingViewController: nil) - .postOnDispatchQueue() - return - } - } - - guard let rawAuthState = try? authState.serialize() else { - alertType = .badKeycloakServerResponse - isAlertPresented = true - return - } - let keycloakState = ObvKeycloakState( - keycloakServer: keycloakConfig.serverURL, - clientId: keycloakConfig.clientId, - clientSecret: keycloakConfig.clientSecret, - jwks: keycloakServerKeyAndConfig.jwks, - rawAuthState: rawAuthState, - signatureVerificationKey: keycloakUserDetailsAndStuff.serverSignatureVerificationKey, - latestLocalRevocationListTimestamp: nil, - latestGroupUpdateTimestamp: nil) - Task { await delegate?.newKeycloakUserDetailsAndStuff(keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: keycloakServerRevocationsAndStuff, keycloakState: keycloakState) } - } - - func userWantsToRestoreBackup() { - Task { await delegate?.userWantsToRestoreBackup() } - } - -} - - -struct IdentityProviderValidationHostingView: View { - - @ObservedObject var store: IdentityProviderValidationHostingViewStore - - @Environment(\.colorScheme) var colorScheme - - var body: some View { - ZStack { - Image("SplashScreenBackground") - .resizable() - .edgesIgnoringSafeArea(.all) - VStack(spacing: 0) { - switch store.validationStatus { - case .validating: - ObvActivityIndicator(isAnimating: .constant(true), style: .large, color: .white) - if store.isConfiguredFromMDM { - HStack { - Spacer() - Text("VALIDATING_ENTERPRISE_CONFIGURATION") - .font(.system(.subheadline, design: .default)) - .foregroundColor(.white) - Spacer() - } - .padding(.top, 16) - } - case .validationFailed, .validated: - if store.isConfiguredFromMDM { - Image("logo") - .resizable() - .scaledToFit() - .padding(.horizontal) - .padding(.bottom, 16) - .frame(maxWidth: 300) - .transition(.scale) - } - ScrollView { - HStack { - Spacer() - BigCircledSystemIconView(systemIcon: store.validationStatus.isValidated ? .checkmark : .xmark, - backgroundColor: store.validationStatus.isValidated ? .green : .red) - Spacer() - } - .padding(.top, 32) - .padding(.bottom, 32) - Text(store.validationStatus.isValidated ? "IDENTITY_PROVIDER_CONFIGURED_SUCCESS" : "IDENTITY_PROVIDER_CONFIGURED_FAILURE") - .font(.system(.body, design: .default)) - .foregroundColor(.white) - } - Spacer() - if case .validated(keycloakServerKeyAndConfig: let keycloakServerKeyAndConfig) = store.validationStatus { - if store.validationStatus.isValidated { - VStack { - if store.isConfiguredFromMDM { - OlvidButton(style: colorScheme == .dark ? .standard : .standardAlt, - title: Text("Restore a backup"), - systemIcon: .folderCircle, - action: store.userWantsToRestoreBackup) - } - OlvidButton(style: colorScheme == .dark ? .blue : .white, - title: Text("AUTHENTICATE"), - systemIcon: .personCropCircleBadgeCheckmark, - action: { Task { await store.userWantsToAuthenticate(keycloakServerKeyAndConfig: keycloakServerKeyAndConfig) } }) - .padding(.bottom, 16) - } - } - } - } - } - .padding(.horizontal) - } - .onAppear { - store.userWantsToValidateDisplayedServer() - } - .alert(isPresented: $store.isAlertPresented) { - switch store.alertType { - case .userAuthenticationFailed: - return Alert(title: Text("AUTHENTICATION_FAILED"), - message: Text("CHECK_IDENTITY_SERVER_PARAMETERS"), - dismissButton: Alert.Button.default(Text("Ok")) - ) - case .badKeycloakServerResponse: - return Alert(title: Text("BAD_KEYCLOAK_SERVER_RESPONSE"), - dismissButton: Alert.Button.default(Text("Ok")) - ) - case .none: - assertionFailure() - return Alert(title: Text("AUTHENTICATION_FAILED"), - message: Text("CHECK_IDENTITY_SERVER_PARAMETERS"), - dismissButton: Alert.Button.default(Text("Ok")) - ) - } - } - } - -} - - -fileprivate struct KeycloakConfigurationDetailsView: View { - - let keycloakConfig: KeycloakConfiguration - - @Environment(\.presentationMode) var presentationMode - - var body: some View { - ZStack { - Color(AppTheme.shared.colorScheme.systemBackground) - .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) - .edgesIgnoringSafeArea(.all) - - VStack { - - List { - Section { - ObvSimpleListItemView( - title: Text("SERVER_URL"), - value: keycloakConfig.serverURL.absoluteString) - ObvSimpleListItemView( - title: Text("CLIENT_ID"), - value: keycloakConfig.clientId) - ObvSimpleListItemView( - title: Text("CLIENT_SECRET"), - value: keycloakConfig.clientSecret) - } header: { - Text("IDENTITY_PROVIDER_CONFIGURATION") - } - - } - .padding(.bottom, 16) - - OlvidButton(style: .blue, - title: Text("Back"), - systemIcon: .arrowshapeTurnUpBackwardFill, - action: { presentationMode.wrappedValue.dismiss() }) - .padding(.vertical) - .padding(.horizontal, 16) - - - } - .padding(.top, 16) - - } - } - -} - - - - - -fileprivate struct BigCircledSystemIconView: View { - - let systemIcon: SystemIcon - let backgroundColor: Color - - var body: some View { - Image(systemIcon: systemIcon) - .font(Font.system(size: 50, weight: .heavy, design: .rounded)) - .foregroundColor(.white) - .padding(32) - .background(Circle().fill(backgroundColor)) - .padding() - .background(Circle().fill(backgroundColor.opacity(0.2))) - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/IdentityProviderValidationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/IdentityProviderValidationView.swift new file mode 100644 index 00000000..3e4ecdff --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/IdentityProviderValidationView.swift @@ -0,0 +1,225 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import JWS +import AppAuth +import UI_SystemIcon +import AuthenticationServices + + +protocol IdentityProviderValidationViewActionsProtocol: AnyObject { + func discoverKeycloakServer(keycloakServerURL: URL) async throws -> (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration) + func userWantsToAuthenticateOnKeycloakServer(keycloakConfiguration: Onboarding.KeycloakConfiguration, isConfiguredFromMDM: Bool, keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration)) async throws +} + + +struct IdentityProviderValidationView: View { + + let model: Model + let actions: IdentityProviderValidationViewActionsProtocol + @State private var discoveryStatus: KeycloakServerDiscoveryStatus = .toDiscover + + @State private var errorForAlert: Error? + @State private var isAlertShown = false + + + struct Model { + let keycloakConfiguration: Onboarding.KeycloakConfiguration + let isConfiguredFromMDM: Bool + } + + + private enum KeycloakServerDiscoveryStatus { + + case toDiscover + case discovering + case discoveryFailed + case discovered(keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration)) + + var isDiscovered: Bool { + switch self { + case .toDiscover, .discovering, .discoveryFailed: + return false + case .discovered: + return true + } + } + } + + + @MainActor + private func discoverKeycloakServerIfRequired() async { + switch discoveryStatus { + case .toDiscover: + break + case .discovering, .discoveryFailed, .discovered: + return + } + discoveryStatus = .discovering + do { + let keycloakServerKeyAndConfig = try await actions.discoverKeycloakServer(keycloakServerURL: model.keycloakConfiguration.keycloakServerURL) + discoveryStatus = .discovered(keycloakServerKeyAndConfig: keycloakServerKeyAndConfig) + } catch { + discoveryStatus = .discoveryFailed + } + } + + + private var systemIcon: SystemIcon { + discoveryStatus.isDiscovered ? .checkmark : .xmark + } + + private var systemIconColor: UIColor { + discoveryStatus.isDiscovered ? .systemGreen : .systemRed + } + + private var discoveryStatusLocalizedStringKey: LocalizedStringKey { + discoveryStatus.isDiscovered ? "IDENTITY_PROVIDER_CONFIGURED_SUCCESS" : "IDENTITY_PROVIDER_CONFIGURED_FAILURE" + } + + + private func userWantsToAuthenticate(keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration)) async { + do { + try await actions.userWantsToAuthenticateOnKeycloakServer( + keycloakConfiguration: model.keycloakConfiguration, + isConfiguredFromMDM: model.isConfiguredFromMDM, + keycloakServerKeyAndConfig: keycloakServerKeyAndConfig) + } catch { + // Do not show an alert if the user just cancelled the authentication process + let nsError = error as NSError + let errorsToCheck = [nsError] + nsError.underlyingErrors.map({ $0 as NSError }) + for er in errorsToCheck { + if er.domain == ASWebAuthenticationSessionError.errorDomain && er.code == ASWebAuthenticationSessionError.canceledLogin.rawValue { + // No need to show an alert + return + } + } + errorForAlert = error + isAlertShown = true + } + } + + + private var authenticationFailureAlertTitle: LocalizedStringKey { + if let errorForAlert { + return "KEYCLOAK_AUTHENTICATION_FAILED_ALERT_\((errorForAlert as NSError).localizedDescription)" + } else { + return "KEYCLOAK_AUTHENTICATION_FAILED_ALERT" + } + } + + + var body: some View { + + switch discoveryStatus { + + case .toDiscover, .discovering: + + DiscoveringInProgressView(isConfiguredFromMDM: model.isConfiguredFromMDM) + .onAppear { + Task { await discoverKeycloakServerIfRequired() } + } + + case .discoveryFailed, .discovered: + + ScrollView { + VStack { + + NewOnboardingHeaderView(title: "IDENTITY_PROVIDER", subtitle: nil) + + HStack { + Spacer() + BigCircledSystemIconView( + systemIcon: systemIcon, + backgroundColor: systemIconColor) + Spacer() + } + .padding(.top, 32) + .padding(.bottom, 32) + + Text(discoveryStatusLocalizedStringKey) + .font(.system(.body, design: .default)) + + Spacer() + + }.padding(.horizontal) + } + + if case .discovered(keycloakServerKeyAndConfig: let config) = discoveryStatus { + + Button(action: { Task { await userWantsToAuthenticate(keycloakServerKeyAndConfig: config) } }) { + Label("AUTHENTICATE", systemIcon: .personCropCircleBadgeCheckmark) + .foregroundStyle(.white) + .padding() + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .padding() + .alert(authenticationFailureAlertTitle, isPresented: $isAlertShown) { + Button("OK", role: .cancel) { } + } + } + + } + + } +} + + +// MARK: - DiscoveringInProgressView + +private struct DiscoveringInProgressView: View { + + let isConfiguredFromMDM: Bool + + var body: some View { + ProgressView() + if isConfiguredFromMDM { + HStack { + Spacer() + Text("VALIDATING_ENTERPRISE_CONFIGURATION") + .font(.system(.subheadline, design: .default)) + Spacer() + } + .padding(.top, 16) + } + } +} + + +// MARK: - BigCircledSystemIconView + +private struct BigCircledSystemIconView: View { + + let systemIcon: SystemIcon + let backgroundColor: UIColor + + var body: some View { + Image(systemIcon: systemIcon) + .font(Font.system(size: 50, weight: .heavy, design: .rounded)) + .foregroundColor(.white) + .padding(32) + .background(Circle().fill(Color(backgroundColor))) + .padding() + .background(Circle().fill(Color(backgroundColor).opacity(0.2))) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/IdentityProviderValidationViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/IdentityProviderValidationViewController.swift new file mode 100644 index 00000000..789e6dbe --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/IdentityProviderValidationViewController.swift @@ -0,0 +1,133 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import JWS +import AppAuth + + +protocol IdentityProviderValidationViewControllerDelegate: AnyObject { + func discoverKeycloakServer(controller: IdentityProviderValidationViewController, keycloakServerURL: URL) async throws -> (jwks: JWS.ObvJWKSet, serviceConfig: OIDServiceConfiguration) + func userWantsToAuthenticateOnKeycloakServer(controller: IdentityProviderValidationViewController, keycloakConfiguration: Onboarding.KeycloakConfiguration, isConfiguredFromMDM: Bool, keycloakServerKeyAndConfig: (jwks: JWS.ObvJWKSet, serviceConfig: OIDServiceConfiguration)) async throws +} + + +final class IdentityProviderValidationViewController: UIHostingController, IdentityProviderValidationViewActionsProtocol { + + private weak var delegate: IdentityProviderValidationViewControllerDelegate? + + private let keycloakConfiguration: Onboarding.KeycloakConfiguration + + init(model: IdentityProviderValidationView.Model, delegate: IdentityProviderValidationViewControllerDelegate) { + self.keycloakConfiguration = model.keycloakConfiguration + let actions = IdentityProviderValidationViewActions() + let view = IdentityProviderValidationView(model: model, actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + // If Olvid is configured via an MDM, we don't want to allow the user to go back. + // Otherwise, we do. + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + // Configure a bar button item allowing to show the keycloak configuration details + let image = UIImage(systemIcon: .questionmarkCircle) + let barButton = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(questionmarkCircleButtonTapped)) + navigationItem.rightBarButtonItem = barButton + } + + + @objc func questionmarkCircleButtonTapped() { + let view = NewKeycloakConfigurationDetailsView(model: .init(keycloakConfiguration: self.keycloakConfiguration)) + let vc = UIHostingController(rootView: view) + vc.sheetPresentationController?.detents = [.medium(), .large()] + vc.sheetPresentationController?.preferredCornerRadius = 16.0 + vc.sheetPresentationController?.prefersGrabberVisible = true + present(vc, animated: true) + } + + + + // IdentityProviderValidationViewActionsProtocol + + func discoverKeycloakServer(keycloakServerURL: URL) async throws -> (jwks: JWS.ObvJWKSet, serviceConfig: OIDServiceConfiguration) { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + return try await delegate.discoverKeycloakServer(controller: self, keycloakServerURL: keycloakServerURL) + } + + + func userWantsToAuthenticateOnKeycloakServer(keycloakConfiguration: Onboarding.KeycloakConfiguration, isConfiguredFromMDM: Bool, keycloakServerKeyAndConfig: (jwks: JWS.ObvJWKSet, serviceConfig: OIDServiceConfiguration)) async throws { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + return try await delegate.userWantsToAuthenticateOnKeycloakServer( + controller: self, + keycloakConfiguration: keycloakConfiguration, + isConfiguredFromMDM: isConfiguredFromMDM, + keycloakServerKeyAndConfig: keycloakServerKeyAndConfig) + } + + + // Errors + + enum ObvError: Error { + case theDelegateIsNotSet + } + +} + + +private final class IdentityProviderValidationViewActions: IdentityProviderValidationViewActionsProtocol { + + weak var delegate: IdentityProviderValidationViewActionsProtocol? + + func discoverKeycloakServer(keycloakServerURL: URL) async throws -> (jwks: JWS.ObvJWKSet, serviceConfig: OIDServiceConfiguration) { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + return try await delegate.discoverKeycloakServer(keycloakServerURL: keycloakServerURL) + } + + func userWantsToAuthenticateOnKeycloakServer(keycloakConfiguration: Onboarding.KeycloakConfiguration, isConfiguredFromMDM: Bool, keycloakServerKeyAndConfig: (jwks: JWS.ObvJWKSet, serviceConfig: OIDServiceConfiguration)) async throws { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + try await delegate.userWantsToAuthenticateOnKeycloakServer(keycloakConfiguration: keycloakConfiguration, isConfiguredFromMDM: isConfiguredFromMDM, keycloakServerKeyAndConfig: keycloakServerKeyAndConfig) + } + + enum ObvError: Error { + case theDelegateIsNotSet + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/NewKeycloakConfigurationDetailsView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/NewKeycloakConfigurationDetailsView.swift new file mode 100644 index 00000000..dea75823 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/IdentityProviderValidation/NewKeycloakConfigurationDetailsView.swift @@ -0,0 +1,97 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI + + +struct NewKeycloakConfigurationDetailsView: View { + + let model: Model + + struct Model { + let keycloakConfiguration: Onboarding.KeycloakConfiguration + } + + @Environment(\.presentationMode) var presentationMode + + var body: some View { + + ZStack { + + Color(UIColor.secondarySystemBackground) + .edgesIgnoringSafeArea(.all) + + VStack { + + List { + Section { + ObvSimpleListItemView( + title: Text("SERVER_URL"), + value: model.keycloakConfiguration.keycloakServerURL.absoluteString) + ObvSimpleListItemView( + title: Text("CLIENT_ID"), + value: model.keycloakConfiguration.clientId) + ObvSimpleListItemView( + title: Text("CLIENT_SECRET"), + value: model.keycloakConfiguration.clientSecret) + } header: { + Text("IDENTITY_PROVIDER_CONFIGURATION") + } + + } + .padding(.bottom, 16) + + InternalButton("Back", action: { presentationMode.wrappedValue.dismiss() }) + .padding() + + + } + .padding(.top, 16) + } + + } + +} + + +private struct InternalButton: View { + + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Text(key) + .foregroundStyle(.white) + .padding(.horizontal, 26) + .padding(.vertical, 16) + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ManagedDetailsViewer/ManagedDetailsViewerView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ManagedDetailsViewer/ManagedDetailsViewerView.swift new file mode 100644 index 00000000..7ede07bd --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ManagedDetailsViewer/ManagedDetailsViewerView.swift @@ -0,0 +1,312 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import UI_SystemIcon + + + +protocol ManagedDetailsViewerViewActionsProtocol: AnyObject { + func userWantsToCreateProfileWithDetailsFromIdentityProvider(keycloakDetails: (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff)) async +} + + +struct ManagedDetailsViewerView: View, ManagedDetailsViewerInnerViewActionsProtocol { + + let actions: ManagedDetailsViewerViewActionsProtocol + let model: Model + + struct Model { + let keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff + let keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff + } + + private var coreDetails: ObvIdentityCoreDetails? { + try? model.keycloakUserDetailsAndStuff.signedUserDetails.userDetails.getCoreDetails() + } + + fileprivate func createProfileAction() async { + await actions.userWantsToCreateProfileWithDetailsFromIdentityProvider(keycloakDetails: (model.keycloakUserDetailsAndStuff, model.keycloakServerRevocationsAndStuff)) + } + + private var anOldIdentityAlreadyExistsOnTheIdentityProvider: Bool { + model.keycloakUserDetailsAndStuff.signedUserDetails.identity != nil + } + + private var identityProviderAllowsRevocation: Bool { + model.keycloakServerRevocationsAndStuff.revocationAllowed + } + + var body: some View { + ManagedDetailsViewerInnerView( + actions: self, + model: .init(coreDetails: coreDetails, + anOldIdentityAlreadyExistsOnTheIdentityProvider: anOldIdentityAlreadyExistsOnTheIdentityProvider, + identityProviderAllowsRevocation: identityProviderAllowsRevocation)) + } + +} + + + +// MARK: - ManagedDetailsViewerInnerView + + +private protocol ManagedDetailsViewerInnerViewActionsProtocol { + func createProfileAction() async +} + + +private struct ManagedDetailsViewerInnerView: View { + + let actions: ManagedDetailsViewerInnerViewActionsProtocol + let model: Model + @State private var isProfileCreationInProgress = false + + struct Model { + let coreDetails: ObvIdentityCoreDetails? // Expected to be non nil, unless the identity provider did a bad job + let anOldIdentityAlreadyExistsOnTheIdentityProvider: Bool + let identityProviderAllowsRevocation: Bool + } + + @MainActor + private func createProfile() async { + isProfileCreationInProgress = true + await actions.createProfileAction() + isProfileCreationInProgress = false + } + + + private var warningPanelConfig: (icon: SystemIcon, iconColor: Color, body: LocalizedStringKey)? { + guard model.anOldIdentityAlreadyExistsOnTheIdentityProvider else { return nil } + if model.identityProviderAllowsRevocation { + return (SystemIcon.exclamationmarkCircle, Color(UIColor.systemYellow), "TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_NEEDED") + } else { + return (SystemIcon.xmarkCircle, Color(UIColor.systemRed), "TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_IMPOSSIBLE") + } + } + + + private var indentityProviderWouldRejectProfileCreation: Bool { + model.anOldIdentityAlreadyExistsOnTheIdentityProvider && !model.identityProviderAllowsRevocation + } + + + private var createProfileButtonIsDisabled: Bool { + isProfileCreationInProgress || indentityProviderWouldRejectProfileCreation + } + + var body: some View { + VStack { + + NewOnboardingHeaderView(title: "ONBOARDING_NAME_CHOOSER_TITLE", subtitle: "ONBOARDING_MANAGED_IDENTITY_SUBTITLE") + .padding(.bottom, 40) + + if let coreDetails = model.coreDetails { + + ScrollView { + + VStack { + + if let firstName = coreDetails.firstName, !firstName.isEmpty { + InternalCellView(title: "FORM_FIRST_NAME", verbatim: firstName) + } + + if let lastName = coreDetails.lastName, !lastName.isEmpty { + InternalCellView(title: "FORM_LAST_NAME", verbatim: lastName) + } + + if let position = coreDetails.position, !position.isEmpty { + InternalCellView(title: "FORM_POSITION", verbatim: position) + } + + if let company = coreDetails.company, !company.isEmpty { + InternalCellView(title: "FORM_COMPANY", verbatim: company) + } + + if model.anOldIdentityAlreadyExistsOnTheIdentityProvider { + WarningPreviousIDExistsOnIdentityProviderView(model: .init(identityProviderAllowsRevocation: model.identityProviderAllowsRevocation)) + .padding(.top) + } + + if isProfileCreationInProgress { + HStack { + Spacer() + ProgressView() + .controlSize(.large) + Spacer() + }.padding(.top) + } + + } + + } + + InternalButton("ONBOARDING_NAME_CHOOSER_BUTTON_TITLE", action: { Task { await createProfile() } }) + .disabled(createProfileButtonIsDisabled) + .padding(.bottom) + + } else { + + BadInformationsReturnedByIdentityProviderView() + + } + + } + .padding(.horizontal) + } +} + + +// MARK: Warning panel when an Olvid ID already exists on the identity provider + +private struct WarningPreviousIDExistsOnIdentityProviderView: View { + + let model: Model + + struct Model { + let identityProviderAllowsRevocation: Bool + } + + private var warningPanelConfig: (icon: SystemIcon, iconColor: Color, body: LocalizedStringKey) { + if model.identityProviderAllowsRevocation { + return (SystemIcon.exclamationmarkCircle, Color(UIColor.systemYellow), "TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_NEEDED") + } else { + return (SystemIcon.xmarkCircle, Color(UIColor.systemRed), "TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_IMPOSSIBLE") + } + } + + var body: some View { + Label( + title: { + Text(warningPanelConfig.body) + .foregroundStyle(.secondary) + }, + icon: { + Image(systemIcon: warningPanelConfig.icon) + .foregroundStyle(warningPanelConfig.iconColor) + } + ) + } + +} + + +// MARK: InternalCellView + +private struct InternalCellView: View { + + let title: LocalizedStringKey + let verbatim: String + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + Text(title) + .font(.headline) + .foregroundStyle(.secondary) + .padding(.leading, 6) + TextField(title, text: .constant(verbatim)) + .disabled(true) + .padding() + .background(Color("TextFieldBackgroundColor")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + HStack { Spacer() } + } + } + +} + + +// MARK: View used when bad informations were returned by the identity provider + +private struct BadInformationsReturnedByIdentityProviderView: View { + + var body: some View { + ScrollView { + HStack { + Label { + Text("ONBOARDING_BAD_INFORMATIONS_RETURNED_BY_IDENTITY_PROVIDER") + .font(.body) + } icon: { + Image(systemIcon: .xmarkCircle) + .foregroundStyle(Color(UIColor.systemRed)) + } + + Spacer(minLength: 0) + } + } + } + +} + + +private struct InternalButton: View { + + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Text(key) + .foregroundStyle(.white) + .padding(.horizontal, 26) + .padding(.vertical, 16) + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + + +// MARK: - Previews + +struct ManagedDetailsViewerInnerView_Previews: PreviewProvider { + + private static let model = ManagedDetailsViewerInnerView.Model( + coreDetails: try? .init( + firstName: "Alice", + lastName: nil, + company: nil, + position: nil, + signedUserDetails: nil), + anOldIdentityAlreadyExistsOnTheIdentityProvider: false, + identityProviderAllowsRevocation: false) + + private struct ActionsForPreviews: ManagedDetailsViewerInnerViewActionsProtocol { + func createProfileAction() async {} + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + ManagedDetailsViewerInnerView(actions: actions, model: model) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ManagedDetailsViewer/ManagedDetailsViewerViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ManagedDetailsViewer/ManagedDetailsViewerViewController.swift new file mode 100644 index 00000000..218cf4fa --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ManagedDetailsViewer/ManagedDetailsViewerViewController.swift @@ -0,0 +1,91 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import ObvTypes + + +protocol ManagedDetailsViewerViewControllerDelegate: AnyObject { + func userWantsToCreateProfileWithDetailsFromIdentityProvider(controller: ManagedDetailsViewerViewController, keycloakDetails: (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff), keycloakState: ObvKeycloakState) async +} + + +final class ManagedDetailsViewerViewController: UIHostingController, ManagedDetailsViewerViewActionsProtocol { + + private weak var delegate: ManagedDetailsViewerViewControllerDelegate? + + /// The following value is not used in this VC (or in the View). We store it so as to send them back in the delegate method + private let keycloakState: ObvKeycloakState + + init(model: ManagedDetailsViewerView.Model, keycloakState: ObvKeycloakState, delegate: ManagedDetailsViewerViewControllerDelegate) { + self.keycloakState = keycloakState + let actions = ManagedDetailsViewerViewActions() + let view = ManagedDetailsViewerView(actions: actions, model: model) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + } + + // ManagedDetailsViewerViewActionsProtocol + + @MainActor + func userWantsToCreateProfileWithDetailsFromIdentityProvider(keycloakDetails: (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff)) async { + await delegate?.userWantsToCreateProfileWithDetailsFromIdentityProvider( + controller: self, + keycloakDetails: keycloakDetails, + keycloakState: keycloakState) + } + +} + + + + +private final class ManagedDetailsViewerViewActions: ManagedDetailsViewerViewActionsProtocol { + + weak var delegate: ManagedDetailsViewerViewActionsProtocol? + + func userWantsToCreateProfileWithDetailsFromIdentityProvider(keycloakDetails: (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff)) async { + await delegate?.userWantsToCreateProfileWithDetailsFromIdentityProvider(keycloakDetails: keycloakDetails) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewAutorisationRequester/NewAutorisationRequesterView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewAutorisationRequester/NewAutorisationRequesterView.swift new file mode 100644 index 00000000..34dc0ae7 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewAutorisationRequester/NewAutorisationRequesterView.swift @@ -0,0 +1,166 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import UI_SystemIcon + + +protocol NewAutorisationRequesterViewActionsProtocol: AnyObject { + func requestAutorisation(now: Bool, for autorisationCategory: NewAutorisationRequesterViewController.AutorisationCategory) async +} + + +struct NewAutorisationRequesterView: View { + + let autorisationCategory: NewAutorisationRequesterViewController.AutorisationCategory + let actions: NewAutorisationRequesterViewActionsProtocol + + private var textBodyKey: LocalizedStringKey { + switch autorisationCategory { + case .localNotifications: + return "SUBSCRIBING_TO_USER_NOTIFICATIONS_EXPLANATION" + case .recordPermission: + return "EXPLANATION_WHY_RECORD_PERMISSION_IS_IMPORTANT" + } + } + + private var textTitleKey: LocalizedStringKey { + switch autorisationCategory { + case .localNotifications: + return "TITLE_NEVER_MISS_A_MESSAGE" + case .recordPermission: + return "TITLE_NEVER_MISS_A_SECURE_CALL" + } + } + + private var buttonTitleKey: LocalizedStringKey { + switch autorisationCategory { + case .localNotifications: + return "BUTON_TITLE_ACTIVATE_NOTIFICATION" + case .recordPermission: + return "BUTON_TITLE_REQUEST_RECORD_PERMISSION" + } + } + + private var buttonSystemIcon: SystemIcon { + switch autorisationCategory { + case .localNotifications: + return .envelopeBadge + case .recordPermission: + return .mic + } + } + + private func userTappedSkipButton() { + Task(priority: .userInitiated) { + await actions.requestAutorisation(now: false, for: autorisationCategory) + } + } + + private func userTappedAllowButton() { + Task(priority: .userInitiated) { + await actions.requestAutorisation(now: true, for: autorisationCategory) + } + } + + private var showSkipButton: Bool { + switch autorisationCategory { + case .localNotifications: + return true + case .recordPermission: + return false + } + } + + var body: some View { + VStack { + + ScrollView { + + VStack { + + Image("badge", bundle: nil) + .resizable() + .frame(width: 60, height: 60, alignment: .center) + .padding() + Text(textTitleKey) + .font(.title) + .multilineTextAlignment(.center) + + Text(textBodyKey) + .frame(minWidth: .none, + maxWidth: .infinity, + minHeight: .none, + idealHeight: .none, + maxHeight: .none, + alignment: .center) + .font(.body) + .padding() + + Button(action: userTappedAllowButton) { + Label(buttonTitleKey, systemIcon: buttonSystemIcon) + .foregroundStyle(.white) + .padding() + } + .background(Color(UIColor.systemGreen)) + .clipShape(RoundedRectangle(cornerRadius: 12)) + + } + + } + + // Show a "skip" button bellow the scroll view + + Spacer() + + if showSkipButton { + HStack { + Spacer() + Button("MAYBE_LATER", action: userTappedSkipButton) + } + .padding(.horizontal) + .padding(.bottom) + } + + } + } + +} + + +struct NewAutorisationRequesterView_Previews: PreviewProvider { + + private final class ActionsForPreviews: NewAutorisationRequesterViewActionsProtocol { + func requestAutorisation(now: Bool, for autorisationCategory: NewAutorisationRequesterViewController.AutorisationCategory) async {} + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + Group { + NewAutorisationRequesterView(autorisationCategory: .recordPermission, actions: actions) + NewAutorisationRequesterView(autorisationCategory: .recordPermission, actions: actions) + .environment(\.locale, .init(identifier: "fr")) + NewAutorisationRequesterView(autorisationCategory: .localNotifications, actions: actions) + NewAutorisationRequesterView(autorisationCategory: .localNotifications, actions: actions) + .environment(\.locale, .init(identifier: "fr")) + } + } +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewAutorisationRequester/NewAutorisationRequesterViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewAutorisationRequester/NewAutorisationRequesterViewController.swift new file mode 100644 index 00000000..48637334 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewAutorisationRequester/NewAutorisationRequesterViewController.swift @@ -0,0 +1,87 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI + + +protocol NewAutorisationRequesterViewControllerDelegate: AnyObject { + func requestAutorisation(autorisationRequester: NewAutorisationRequesterViewController, now: Bool, for autorisationCategory: NewAutorisationRequesterViewController.AutorisationCategory) async +} + + +final class NewAutorisationRequesterViewController: UIHostingController, NewAutorisationRequesterViewActionsProtocol { + + enum AutorisationCategory { + case localNotifications + case recordPermission + } + + weak var delegate: NewAutorisationRequesterViewControllerDelegate? + + init(autorisationCategory: AutorisationCategory, delegate: NewAutorisationRequesterViewControllerDelegate) { + let actions = NewAutorisationRequesterViewActions() + let view = NewAutorisationRequesterView(autorisationCategory: autorisationCategory, actions: actions) + super.init(rootView: view) + actions.delegate = self + self.delegate = delegate + } + + deinit { + debugPrint("NewAutorisationRequesterViewController deinit") + } + + @objc required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + } + + // NewAutorisationRequesterViewActionsProtocol + + func requestAutorisation(now: Bool, for autorisationCategory: AutorisationCategory) async { + await delegate?.requestAutorisation(autorisationRequester: self, now: now, for: autorisationCategory) + } + +} + + +private final class NewAutorisationRequesterViewActions: NewAutorisationRequesterViewActionsProtocol { + weak var delegate: NewAutorisationRequesterViewActionsProtocol? + + func requestAutorisation(now: Bool, for autorisationCategory: NewAutorisationRequesterViewController.AutorisationCategory) async { + await delegate?.requestAutorisation(now: now, for: autorisationCategory) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewIdentityProviderManualConfiguration/NewIdentityProviderManualConfigurationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewIdentityProviderManualConfiguration/NewIdentityProviderManualConfigurationView.swift new file mode 100644 index 00000000..ea9713f5 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewIdentityProviderManualConfiguration/NewIdentityProviderManualConfigurationView.swift @@ -0,0 +1,204 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI + + +protocol NewIdentityProviderManualConfigurationViewActionsProtocol: AnyObject { + + func userWantsToValidateManualKeycloakConfiguration(keycloakConfig: Onboarding.KeycloakConfiguration) async + +} + + +struct NewIdentityProviderManualConfigurationView: View { + + let actions: NewIdentityProviderManualConfigurationViewActionsProtocol + + @State private var url = ""; + @State private var clientId = ""; + @State private var clientSecret = ""; + + @State private var currentKeycloakConfig: Onboarding.KeycloakConfiguration? + @State private var isValidating = false + + + private func resetCurrentKeycloakConfig() { + self.currentKeycloakConfig = computeKeycloakConfig() + } + + private var isValidateButtonDisabled: Bool { + isValidating || currentKeycloakConfig == nil + } + + private func computeKeycloakConfig() -> Onboarding.KeycloakConfiguration? { + let localURL = url.trimmingWhitespacesAndNewlines() + let localClientId = clientId.trimmingWhitespacesAndNewlines() + let clientSecret = clientSecret.trimmingWhitespacesAndNewlines() + guard !localClientId.isEmpty else { return nil } + guard let url = URL(string: localURL), UIApplication.shared.canOpenURL(url) else { + return nil + } + return .init(keycloakServerURL: url, clientId: localClientId, clientSecret: clientSecret) + } + + @MainActor + private func validateButtonTapped() async { + guard let currentKeycloakConfig else { assertionFailure(); return } + isValidating = true + await actions.userWantsToValidateManualKeycloakConfiguration(keycloakConfig: currentKeycloakConfig) + isValidating = false + } + + + var body: some View { + ZStack { + VStack { + ScrollView { + VStack { + + NewOnboardingHeaderView( + title: "CONFIGURE_YOUR_IDENTITY_PROVIDER_MANUALLY", + subtitle: "") + + HStack { + Text("IDENTITY_PROVIDER_OPTION_EXPLANATION") + Spacer(minLength: 0) + } + .padding(.vertical) + + InternalCellView(title: "ONBOARDING_KEYCLOAK_MANUAL_CONFIGURATION_TITLE_URL", + placeholder: "https://...", + text: $url) + .onChange(of: url) { _ in resetCurrentKeycloakConfig() } + + InternalCellView(title: "ONBOARDING_KEYCLOAK_MANUAL_CONFIGURATION_TITLE_CLIENT_ID", + placeholder: "", + text: $clientId) + .onChange(of: clientId) { _ in resetCurrentKeycloakConfig() } + + InternalCellView(title: "ONBOARDING_KEYCLOAK_MANUAL_CONFIGURATION_TITLE_CLIENT_SECRET", + placeholder: "", + text: $clientSecret) + .onChange(of: clientSecret) { _ in resetCurrentKeycloakConfig() } + + }.padding(.horizontal) + } + + InternalButton("VALIDATE_SERVER", action: { Task { await validateButtonTapped() } }) + .disabled(isValidateButtonDisabled) + .padding(.horizontal) + .padding(.bottom) + + } + .disabled(isValidating) + + if isValidating { + ProgressView() + .controlSize(.large) + .padding(32) + .background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 12)) + } + + } + + } + +} + + +private struct InternalButton: View { + + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Label { + Text(key) + .foregroundStyle(.white) + } icon: { + Image(systemIcon: .serverRack) + .foregroundStyle(.white) + } + .padding(.horizontal, 26) + .padding(.vertical, 16) + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + +// MARK: InternalCellView + +private struct InternalCellView: View { + + let title: LocalizedStringKey + let placeholder: String + let text: Binding + + private let monospacedBodyFont = Font.callout.monospaced() + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + Text(title) + .font(.headline) + .foregroundStyle(.secondary) + .padding(.leading, 6) + TextField(placeholder, text: text) + .font(monospacedBodyFont) + .textInputAutocapitalization(.never) + .autocorrectionDisabled() + .padding() + .background(Color("TextFieldBackgroundColor")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + HStack { Spacer() } + } + } + +} + + +struct NewIdentityProviderManualConfigurationView_Previews: PreviewProvider { + + private final class ActionsForPreviews: NewIdentityProviderManualConfigurationViewActionsProtocol { + + func userWantsToValidateManualKeycloakConfiguration(keycloakConfig: Onboarding.KeycloakConfiguration) async { + try! await Task.sleep(seconds: 3) + } + + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + NewIdentityProviderManualConfigurationView(actions: actions) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewIdentityProviderManualConfiguration/NewIdentityProviderManualConfigurationViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewIdentityProviderManualConfiguration/NewIdentityProviderManualConfigurationViewController.swift new file mode 100644 index 00000000..a444a7fd --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewIdentityProviderManualConfiguration/NewIdentityProviderManualConfigurationViewController.swift @@ -0,0 +1,65 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI + + +protocol NewIdentityProviderManualConfigurationViewControllerDelegate: AnyObject { + func userWantsToValidateManualKeycloakConfiguration(controller: NewIdentityProviderManualConfigurationViewController, keycloakConfig: Onboarding.KeycloakConfiguration) async +} + + +final class NewIdentityProviderManualConfigurationViewController: UIHostingController, NewIdentityProviderManualConfigurationViewActionsProtocol { + + private weak var delegate: NewIdentityProviderManualConfigurationViewControllerDelegate? + + init(delegate: NewIdentityProviderManualConfigurationViewControllerDelegate) { + let actions = NewIdentityProviderManualConfigurationViewActions() + let view = NewIdentityProviderManualConfigurationView(actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + // NewIdentityProviderManualConfigurationViewActionsProtocol + + func userWantsToValidateManualKeycloakConfiguration(keycloakConfig: Onboarding.KeycloakConfiguration) async { + await delegate?.userWantsToValidateManualKeycloakConfiguration(controller: self, keycloakConfig: keycloakConfig) + } + +} + + +private final class NewIdentityProviderManualConfigurationViewActions: NewIdentityProviderManualConfigurationViewActionsProtocol { + + weak var delegate: NewIdentityProviderManualConfigurationViewActionsProtocol? + + func userWantsToValidateManualKeycloakConfiguration(keycloakConfig: Onboarding.KeycloakConfiguration) async { + await delegate?.userWantsToValidateManualKeycloakConfiguration(keycloakConfig: keycloakConfig) + } + + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOnboardingFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOnboardingFlowViewController.swift new file mode 100644 index 00000000..77a8cd35 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOnboardingFlowViewController.swift @@ -0,0 +1,1271 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import CoreData +import UIKit +import StoreKit +import os.log +import UniformTypeIdentifiers +import AVFoundation +import ObvTypes +import JWS +import AppAuth +import ObvCrypto +import Contacts + + +protocol NewOnboardingFlowViewControllerDelegate: AnyObject, SubscriptionPlansViewActionsProtocol { + + func onboardingIsFinished(onboardingFlow: NewOnboardingFlowViewController, ownedCryptoIdGeneratedDuringOnboarding: ObvCryptoId) async + + func onboardingNeedsToPreventPrivacyWindowSceneFromShowingOnNextWillResignActive(onboardingFlow: NewOnboardingFlowViewController) async + + func onboardingRequiresToSyncAppDatabasesWithEngine(onboardingFlow: NewOnboardingFlowViewController) async throws + + func onboardingRequiresToGenerateOwnedIdentity(onboardingFlow: NewOnboardingFlowViewController, identityDetails: ObvIdentityDetails, nameForCurrentDevice: String, keycloakState: ObvKeycloakState?, customServerAndAPIKey: ServerAndAPIKey?) async throws -> ObvCryptoId + + func onboardingRequiresAcceptableCharactersForBackupKeyString() async -> CharacterSet + + func onboardingRequiresToRecoverBackupFromEncryptedBackup(onboardingFlow: NewOnboardingFlowViewController, encryptedBackup: Data, backupKey: String) async throws -> (backupRequestIdentifier: UUID, backupDate: Date) + + /// Returns the CryptoId of the restore owned identity. When many identities were restored, only one is returned here + func onboardingRequiresToRestoreBackup(onboardingFlow: NewOnboardingFlowViewController, backupRequestIdentifier: UUID) async throws -> ObvCryptoId + + func userWantsToEnableAutomaticBackup(onboardingFlow: NewOnboardingFlowViewController) async throws + + func onboardingRequiresToDiscoverKeycloakServer(onboardingFlow: NewOnboardingFlowViewController, keycloakServerURL: URL) async throws -> (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration) + + func onboardingRequiresKeycloakAuthentication(onboardingFlow: NewOnboardingFlowViewController, keycloakConfiguration: Onboarding.KeycloakConfiguration, keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration)) async throws -> (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff, keycloakState: ObvKeycloakState) + + func onboardingRequiresKeycloakToSyncAllManagedIdentities() async + + func onboardingRequiresToRegisterAndUploadOwnedIdentityToKeycloakServer(ownedCryptoId: ObvCryptoId) async throws + + /// Called when the first view of the owned identity transfer protocol flow is shown. + /// - Parameters: + /// - onboardingFlow: The `NewOnboardingFlowViewController` instance calling this method. + /// - ownedCryptoId: The `ObvCryptoId` of the owned identity. + /// - onAvailableSessionNumber: A block called as soon as the session number is available. In practice, it is called by the engine as soon as the session number is available. + /// - onAvailableSASExpectedOnInput: A block called as soon as the SAS is available on this source device. The user on this source device will enter this SAS, we use the value received in this block to make sure it is correct before sending it back to the engine + func onboardingRequiresToInitiateOwnedIdentityTransferProtocolOnSourceDevice(onboardingFlow: NewOnboardingFlowViewController, ownedCryptoId: ObvCryptoId, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void) async throws + + + /// Called when the user tapped the cancel button while an owned identity transfer protocol is ongoing, or when the user simply closes the onboarding when it is presented + /// - Parameter controller: The `NewOnboardingFlowViewController` instance calling this method. + func userWantsToCloseOnboardingAndCancelAnyOwnedTransferProtocol(onboardingFlow: NewOnboardingFlowViewController) async + + func userWishesToFinalizeOwnedIdentityTransferFromSourceDevice(onboardingFlow: NewOnboardingFlowViewController, enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws + + func onboardingRequiresToInitiateOwnedIdentityTransferProtocolOnTargetDevice(onboardingFlow: NewOnboardingFlowViewController, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, currentDeviceName: String, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void) async throws + + + /// This method gets called during the owned identity transfer flow, on the target device, when the SAS appears (which should be entered on the source device). We call this method to receive appropriate callbacks from the engine when, e.g., the source + /// sync snapshot is received and processing, and when it is fully processed. + /// - Parameters: + /// - onboardingFlow: The `NewOnboardingFlowViewController` instance calling this method. + /// - protocolInstanceUID: The identifier of the protocol running on this target device for transfering the owned identity. + /// - onSyncSnapshotReception: A block called by the engine when the snapshot is received from the source device. + func onboardingIsShowingSasAndExpectingEndOfProtocol(onboardingFlow: NewOnboardingFlowViewController, protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async + + + /// Called at then end of the owned identity transfer flow on this target device. + /// - Parameters: + /// - onboardingFlow: The `NewOnboardingFlowViewController` instance calling this method. + /// - userWantsToAddAnotherProfile: `true` when the user wants to start a new flow allowing to add a new profile on this target device, `false` if she just want to dismiss the onboarding. + func userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice(onboardingFlow: NewOnboardingFlowViewController, transferredOwnedCryptoId: ObvCryptoId, userWantsToAddAnotherProfile: Bool) async + + + /// On the source device, when a correct SAS is entered by the user, we want to show a list of owned devices so as to let the user choose which one she wishes to keep active (in case she does not have a multidevice subscription) or just to inform here that a new device will be added. + func onboardingRequiresToPerformOwnedDeviceDiscoveryNow(for ownedCryptoId: ObvCryptoId) async throws -> (ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data) + +} + + +/// Structure allowing to encapsulate type definitions +public struct Onboarding { + + /// This onboarding starts in one of these modes: + /// - The `initialOnboarding` mode is used for the very first onboarding only. MDM configurations are considered in this mode only. + /// - The `addNewDevice` mode is used when starting an owned identity transfer protocol on a source device (where the owned identity already exist). + /// - The `addProfile` mode is used on a device where an owned identity already exist, but where the user wants to add an owned identity existing on another device. This thus starts the owned identity transfer protocol on the target device. + public enum Mode { + case initialOnboarding(mdmConfig: MDMConfiguration?) + case addNewDevice(ownedCryptoId: ObvCryptoId, ownedDetails: CNContact) + case addProfile + + var mdmConfigDuringInitialOnboarding: MDMConfiguration? { + switch self { + case .initialOnboarding(let mdmConfig): + return mdmConfig + case .addNewDevice, .addProfile: + return nil + } + } + + } + + + public struct KeycloakConfiguration { + let keycloakServerURL: URL // Keycloak server URL + let clientId: String + let clientSecret: String? + } + + + public struct MDMConfiguration { + let keycloakConfiguration: KeycloakConfiguration + } + +} + + +@MainActor +public final class NewOnboardingFlowViewController: UIViewController, NewWelcomeScreenViewControllerDelegate, NewUnmanagedDetailsChooserViewControllerDelegate, NewAutorisationRequesterViewControllerDelegate, NewOwnedIdentityGeneratedViewControllerDelegate, UINavigationControllerDelegate, ChooseBetweenBackupRestoreAndAddThisDeviceViewControllerDelegate, ChooseBackupFileViewControllerDelegate, EnterBackupKeyViewControllerDelegate, WaitingForBackupRestoreViewControllerDelegate, ScannerHostingViewDelegate, IdentityProviderValidationViewControllerDelegate, OlvidURLHandler, ManagedDetailsViewerViewControllerDelegate, TransfertProtocolSourceCodeDisplayerViewControllerDelegate, AddProfileViewControllerDelegate, CurrentDeviceNameChooserViewControllerDelegate, TransfertProtocolTargetCodeFormViewControllerDelegate, TransferProtocolTargetShowSasViewControllerDelegate, SuccessfulTransferConfirmationViewControllerDelegate, InputSASOnSourceViewControllerDelegate, ChooseDeviceToKeepActiveViewControllerDelegate, OwnedIdentityTransferSummaryViewControllerDelegate, NewIdentityProviderManualConfigurationViewControllerDelegate, UIAdaptivePresentationControllerDelegate { + + private var internalState = NewOnboardingState.initial + + private var flowNavigationController: UINavigationController? + private var flowNavigationControllerWidthConstraint: NSLayoutConstraint? + private var flowNavigationControllerHeightConstraint: NSLayoutConstraint? + + private static let defaultLogSubsystem = "io.olvid.messenger" + private static var log = OSLog(subsystem: defaultLogSubsystem, category: String(describing: NewOnboardingFlowViewController.self)) + + weak var delegate: NewOnboardingFlowViewControllerDelegate? + + /// If, at any point during the onboarding, we receive an `OlvidURL` with a custom API Key and custom Server URL, + /// we store the value here. At the time we request the generation of the owned identity, we pass this value to our delegate. + private var customServerAndAPIKey: ServerAndAPIKey? + + private let mode: Onboarding.Mode + + private let directoryForTempFiles: URL + + public init(logSubsystem: String, directoryForTempFiles: URL, mode: Onboarding.Mode) { + self.mode = mode + self.directoryForTempFiles = directoryForTempFiles + super.init(nibName: nil, bundle: nil) + Self.log = OSLog(subsystem: logSubsystem, category: String(describing: NewOnboardingFlowViewController.self)) + } + + required init?(coder aDecoder: NSCoder) { fatalError("die") } + + private var requestKeycloakSyncOnDeinit = true + + deinit { + if requestKeycloakSyncOnDeinit { + guard let delegate else { return } + Task { + await delegate.onboardingRequiresKeycloakToSyncAllManagedIdentities() + } + } + debugPrint("NewOnboardingFlowViewController deinit") + } + + // MARK: - View controller lifecycle + + public override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = UIColor(named: "OnboardingBackgroundColor") + showFirstOnboardingScreen() + self.presentationController?.delegate = self + } + + + /// Called by the `MetaFlowController` when an owned identity transfer protocol fails + @MainActor + public func anOwnedIdentityTransferProtocolFailed(ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID, error: Error) async { + guard protocolInstanceUID == internalState.ownedIdentityTransferProtocolInstanceUID || internalState.userIsEnteringTransferCode else { assertionFailure(); return } + internalState = .showOwnedIdentityTransferFailed(error: error) + await showNextOnboardingScreen(animated: true) + } + + + private var defaultShowCloseButton: Bool { + switch mode { + case .initialOnboarding: + return false + case .addNewDevice, .addProfile: + return true + } + } + + + /// Sets the appropriate internal state and show the most appropriate first view controller + private func showFirstOnboardingScreen() { + + // Set an appropriate first view controller to show during onboarding + + let rootViewController: UIViewController + + switch mode { + + case .initialOnboarding(mdmConfig: _): + + // Even when we have an MDM configuration, we show the standard Welcome screen. + // If the user taps on the button allowing to create a new profile, we + // apply the mdm configuration if there is one. Otherwise, we lead the user to the + // screen allowing to freely choose her given name and family name. + // See the delegate method lower in this file: + // NewOnboardingFlowViewController.userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet(controller:) + + rootViewController = NewWelcomeScreenViewController(delegate: self, showCloseButton: defaultShowCloseButton) + + case .addNewDevice(let ownedCryptoId, let ownedDetails): + + rootViewController = TransfertProtocolSourceCodeDisplayerViewController( + model: .init(ownedCryptoId: ownedCryptoId, ownedDetails: ownedDetails), + delegate: self) + + case .addProfile: + + rootViewController = AddProfileViewController(showCloseButton: defaultShowCloseButton, delegate: self) + + } + + flowNavigationController = UINavigationController(rootViewController: rootViewController) + flowNavigationController!.delegate = self + flowNavigationController!.setNavigationBarHidden(false, animated: false) + flowNavigationController!.navigationBar.prefersLargeTitles = true + displayFlowNavigationController(flowNavigationController!) + + } + + + private func userDidCancelOwnedIdentityTransferProtocol() async { + await delegate?.userWantsToCloseOnboardingAndCancelAnyOwnedTransferProtocol(onboardingFlow: self) + switch mode { + case .initialOnboarding: + // Go back to the initial screen of the onboarding + internalState = .initial + await showNextOnboardingScreen(animated: true) + case .addNewDevice, .addProfile: + // This flow has been dismissed by the meta flow controller + break + } + } + + + private func showNextOnboardingScreen(animated: Bool) async { + + guard let flowNavigationController else { assertionFailure(); return } + + // Dismiss any presented view controller + + presentedViewController?.dismiss(animated: true) + + // Setup the navigation view controllers given the current internal state + + switch internalState { + case .initial: + if flowNavigationController.viewControllers.first is NewWelcomeScreenViewController { + flowNavigationController.popToRootViewController(animated: true) + return + } else if !flowNavigationController.viewControllers.isEmpty { + let newViewControllers: [UIViewController] = [NewWelcomeScreenViewController(delegate: self, showCloseButton: defaultShowCloseButton)] + flowNavigationController.viewControllers + flowNavigationController.setViewControllers(newViewControllers, animated: false) + flowNavigationController.popToRootViewController(animated: true) + } else { + let welcomeScreenVC = NewWelcomeScreenViewController(delegate: self, showCloseButton: defaultShowCloseButton) + flowNavigationController.setViewControllers([welcomeScreenVC], animated: animated) + return + } + case .userWantsToChooseUnmanagedDetails: + if let displayNameChooserVC = flowNavigationController.viewControllers.first(where: { $0 is NewUnmanagedDetailsChooserViewController }) { + flowNavigationController.popToViewController(displayNameChooserVC, animated: animated) + return + } else if let welcomeScreenVC = flowNavigationController.viewControllers.first as? NewWelcomeScreenViewController { + let displayNameChooserVC = NewUnmanagedDetailsChooserViewController( + model: .init(showPositionAndOrganisation: false), + delegate: self, + showCloseButton: defaultShowCloseButton) + flowNavigationController.setViewControllers([welcomeScreenVC, displayNameChooserVC], animated: animated) + return + } else if let addProfileVC = flowNavigationController.viewControllers.first as? AddProfileViewController { + let displayNameChooserVC = NewUnmanagedDetailsChooserViewController( + model: .init(showPositionAndOrganisation: false), + delegate: self, + showCloseButton: defaultShowCloseButton) + flowNavigationController.setViewControllers([addProfileVC, displayNameChooserVC], animated: animated) + return + } else { + let displayNameChooserVC = NewUnmanagedDetailsChooserViewController( + model: .init(showPositionAndOrganisation: false), + delegate: self, + showCloseButton: defaultShowCloseButton) + flowNavigationController.setViewControllers([displayNameChooserVC], animated: animated) + return + } + case .keycloakConfigAvailable(keycloakConfiguration: let keycloakConfiguration, isConfiguredFromMDM: let isConfiguredFromMDM): + var viewControllers = [UIViewController]() + let welcomeScreenVC = flowNavigationController.viewControllers.first(where: { $0 is NewWelcomeScreenViewController }) ?? NewWelcomeScreenViewController(delegate: self, showCloseButton: defaultShowCloseButton) + viewControllers.append(welcomeScreenVC) + if let manualVC = flowNavigationController.viewControllers.first(where: { $0 is NewIdentityProviderManualConfigurationViewController }) { + viewControllers.append(manualVC) + } + let identityProviderValidationVC = IdentityProviderValidationViewController( + model: .init(keycloakConfiguration: keycloakConfiguration, + isConfiguredFromMDM: isConfiguredFromMDM), + delegate: self) + viewControllers.append(identityProviderValidationVC) + flowNavigationController.setViewControllers(viewControllers, animated: animated) + case .keycloakUserDetailsAndStuffAvailable(let keycloakUserDetailsAndStuff, let keycloakServerRevocationsAndStuff, let keycloakState): + let managedDetailsViewerVC = ManagedDetailsViewerViewController( + model: .init(keycloakUserDetailsAndStuff: keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: keycloakServerRevocationsAndStuff), + keycloakState: keycloakState, + delegate: self) + flowNavigationController.pushViewController(managedDetailsViewerVC, animated: true) + case .userIndicatedSheHasAnExistingProfile: + let welcomeScreenVC = flowNavigationController.viewControllers.first(where: { $0 is NewWelcomeScreenViewController }) ?? NewWelcomeScreenViewController(delegate: self, showCloseButton: defaultShowCloseButton) + let chooseVC = flowNavigationController.viewControllers.first(where: { $0 is ChooseBetweenBackupRestoreAndAddThisDeviceViewController }) ?? ChooseBetweenBackupRestoreAndAddThisDeviceViewController(delegate: self) + flowNavigationController.setViewControllers([welcomeScreenVC, chooseVC], animated: animated) + case .userWantsToRestoreSomeBackup: + let welcomeScreenVC = flowNavigationController.viewControllers.first(where: { $0 is NewWelcomeScreenViewController }) ?? NewWelcomeScreenViewController(delegate: self, showCloseButton: defaultShowCloseButton) + let chooseVC = flowNavigationController.viewControllers.first(where: { $0 is ChooseBetweenBackupRestoreAndAddThisDeviceViewController }) ?? ChooseBetweenBackupRestoreAndAddThisDeviceViewController(delegate: self) + let chooseBackupFileVC = flowNavigationController.viewControllers.first(where: { $0 is ChooseBackupFileViewController }) ?? ChooseBackupFileViewController(delegate: self) + flowNavigationController.setViewControllers([welcomeScreenVC, chooseVC, chooseBackupFileVC], animated: animated) + case .userWantsToRestoreThisEncryptedBackup(encryptedBackup: let encryptedBackup): + guard let acceptableCharactersForBackupKeyString = await delegate?.onboardingRequiresAcceptableCharactersForBackupKeyString() else { assertionFailure(); return } + let enterBackupKeyViewController = EnterBackupKeyViewController( + model: .init(encryptedBackup: encryptedBackup, + acceptableCharactersForBackupKeyString: acceptableCharactersForBackupKeyString), + delegate: self) + flowNavigationController.pushViewController(enterBackupKeyViewController, animated: true) + case .userWantsToRestoreThisDecryptedBackup(backupRequestIdentifier: let backupRequestIdentifier): + let waitingForBackupRestoreVC = WaitingForBackupRestoreViewController(model: .init(backupRequestIdentifier: backupRequestIdentifier), delegate: self) + // Don't allow the user to go back (and interface button allows to do so if the restore fails) + flowNavigationController.setViewControllers([waitingForBackupRestoreVC], animated: true) + case .shouldRequestPermission(profileKind: _, category: let category): + let vc = NewAutorisationRequesterViewController(autorisationCategory: category, delegate: self) + flowNavigationController.pushViewController(vc, animated: true) + return + case .finalize: + if flowNavigationController.viewControllers.last is NewOwnedIdentityGeneratedViewController { + // Nothing to do + } else { + let vc = NewOwnedIdentityGeneratedViewController(delegate: self) + flowNavigationController.pushViewController(vc, animated: true) + } + return + case .userWantsToChooseNameForCurrentDevice: + let vc = CurrentDeviceNameChooserViewController(model: .init(defaultDeviceName: defaultNameForCurrentDevice), delegate: self, showCloseButton: defaultShowCloseButton) + flowNavigationController.pushViewController(vc, animated: true) + case .userWantsToEnterTransferCode(currentDeviceName: _): + let vc = TransfertProtocolTargetCodeFormViewController(delegate: self) + flowNavigationController.pushViewController(vc, animated: true) + case .userWantsToDisplaySasOnThisTargetDevice(currentDeviceName: _, protocolInstanceUID: let protocolInstanceUID, sas: let sas): + let vc = TransferProtocolTargetShowSasViewController(model: .init(protocolInstanceUID: protocolInstanceUID, sas: sas), delegate: self) + flowNavigationController.setViewControllers([vc], animated: animated) + case .successfulTransferWasPerfomed(transferredOwnedCryptoId: let transferredOwnedCryptoId, postTransferError: let postTransferError): + let vc = SuccessfulTransferConfirmationViewController(model: .init(transferredOwnedCryptoId: transferredOwnedCryptoId, postTransferError: postTransferError), delegate: self) + flowNavigationController.setViewControllers([vc], animated: animated) + case .userMustEnterSASOnSourceDevice(sasExpectedOnInput: let sasExpectedOnInput, targetDeviceName: let targetDeviceName, ownedCryptoId: let ownedCryptoId, ownedDetails: let ownedDetails, protocolInstanceUID: let protocolInstanceUID): + let vc = InputSASOnSourceViewController(model: .init(sasExpectedOnInput: sasExpectedOnInput, targetDeviceName: targetDeviceName, ownedCryptoId: ownedCryptoId, ownedDetails: ownedDetails, protocolInstanceUID: protocolInstanceUID), delegate: self) + flowNavigationController.setViewControllers([vc], animated: animated) + case .userMustChooseDeviceToKeepActiveOnSourceDevice(ownedCryptoId: let ownedCryptoId, ownedDetails: let ownedDetails, enteredSAS: let enteredSAS, ownedDeviceDiscoveryResult: let ownedDeviceDiscoveryResult, currentDeviceIdentifier: let currentDeviceIdentifier, targetDeviceName: let targetDeviceName, protocolInstanceUID: let protocolInstanceUID): + let vc = ChooseDeviceToKeepActiveViewController( + model: .init(ownedCryptoId: ownedCryptoId, ownedDetails: ownedDetails, enteredSAS: enteredSAS, ownedDeviceDiscoveryResult: ownedDeviceDiscoveryResult, currentDeviceIdentifier: currentDeviceIdentifier, targetDeviceName: targetDeviceName, protocolInstanceUID: protocolInstanceUID), + delegate: self) + flowNavigationController.setViewControllers([vc], animated: animated) + case .finalOwnedIdentityTransferCheckOnSourceDevice(ownedCryptoId: let ownedCryptoId, ownedDetails: let ownedDetails, enteredSAS: let enteredSAS, ownedDeviceDiscoveryResult: let ownedDeviceDiscoveryResult, targetDeviceName: let targetDeviceName, protocolInstanceUID: let protocolInstanceUID, deviceToKeepActive: let deviceToKeepActive): + let vc = OwnedIdentityTransferSummaryViewController( + model: .init( + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + enteredSAS: enteredSAS, + ownedDeviceDiscoveryResult: ownedDeviceDiscoveryResult, + targetDeviceName: targetDeviceName, + deviceToKeepActive: deviceToKeepActive, + protocolInstanceUID: protocolInstanceUID), + delegate: self) + flowNavigationController.pushViewController(vc, animated: animated) + case .showOwnedIdentityTransferFailed(error: let error): + let welcomeScreenVC = flowNavigationController.viewControllers.first as? NewWelcomeScreenViewController ?? NewWelcomeScreenViewController(delegate: self, showCloseButton: defaultShowCloseButton) + let failureVC = OwnedIdentityTransferFailureViewController(model: .init(error: error)) + flowNavigationController.setViewControllers([welcomeScreenVC, failureVC], animated: animated) + case .userWantsToManuallyConfigureTheIdentityProvider: + let welcomeScreenVC = flowNavigationController.viewControllers.first as? NewWelcomeScreenViewController ?? NewWelcomeScreenViewController(delegate: self, showCloseButton: defaultShowCloseButton) + let manualVC = NewIdentityProviderManualConfigurationViewController(delegate: self) + flowNavigationController.setViewControllers([welcomeScreenVC, manualVC], animated: animated) + } + } + + // MARK: - Adapting the size of the onboarding screens + + private func displayFlowNavigationController(_ flowNavigationController: UINavigationController) { + assert(flowNavigationController == self.flowNavigationController) + + flowNavigationController.willMove(toParent: self) + addChild(flowNavigationController) + flowNavigationController.didMove(toParent: self) + + view.addSubview(flowNavigationController.view) + + // Under iPhone, we want the onboarding to be as large as possible. + // This is not the case under iPad or Mac, during the first onboarding. + // If this onboarding is presented (whatever the platform, we want maximum width) + if traitCollection.userInterfaceIdiom == .phone || self.isBeingPresented { + flowNavigationController.view.translatesAutoresizingMaskIntoConstraints = true + flowNavigationController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] + flowNavigationController.view.frame = view.bounds + } else { + flowNavigationController.view.translatesAutoresizingMaskIntoConstraints = false + flowNavigationControllerWidthConstraint = flowNavigationController.view.widthAnchor.constraint(equalToConstant: 443) + flowNavigationControllerHeightConstraint = flowNavigationController.view.heightAnchor.constraint(equalToConstant: 426) + flowNavigationControllerWidthConstraint?.priority = .defaultHigh // less than the priority on the maximum width + flowNavigationControllerHeightConstraint?.priority = .defaultHigh // less than the priority on the maximum height + NSLayoutConstraint.activate([ + flowNavigationController.view.centerXAnchor.constraint(equalTo: view.centerXAnchor), + flowNavigationController.view.centerYAnchor.constraint(equalTo: view.centerYAnchor), + flowNavigationControllerWidthConstraint!, + flowNavigationControllerHeightConstraint!, + flowNavigationController.view.widthAnchor.constraint(lessThanOrEqualTo: view.widthAnchor), + flowNavigationController.view.heightAnchor.constraint(lessThanOrEqualTo: view.heightAnchor), + ]) + flowNavigationController.view.layer.cornerRadius = 12 + flowNavigationController.additionalSafeAreaInsets = .init(top: 20, left: 20, bottom: 40, right: 20) + } + + } + + + // MARK: - UIAdaptivePresentationControllerDelegate + + /// This `UIAdaptivePresentationControllerDelegate` delegate gets called when the user dismisses a presented onboarding flow. + /// In case there was an onboarding flow, we ask our delegate to cancel it. + public func presentationControllerDidDismiss(_ presentationController: UIPresentationController) { + guard let delegate else { return } + let localSelf = self + Task { + await delegate.userWantsToCloseOnboardingAndCancelAnyOwnedTransferProtocol(onboardingFlow: localSelf) + } + } + + + // MARK: - NewWelcomeScreenViewControllerDelegate + + func userWantsToCloseOnboarding(controller: NewWelcomeScreenViewController) async { + await delegate?.userWantsToCloseOnboardingAndCancelAnyOwnedTransferProtocol(onboardingFlow: self) + } + + + func userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet(controller: NewWelcomeScreenViewController) async { + + // In case we are performing the initial onboarding and there is an MDM configuration, we apply it. + // Othersise, we send the user to the screen allowing her to choose her given name and family name. + + if let mdmConfig = mode.mdmConfigDuringInitialOnboarding { + self.internalState = .keycloakConfigAvailable(keycloakConfiguration: mdmConfig.keycloakConfiguration, isConfiguredFromMDM: true) + } else { + self.internalState = .userWantsToChooseUnmanagedDetails + } + + await showNextOnboardingScreen(animated: true) + + } + + + func userWantsToLeaveWelcomeScreenAndHasAnOlvidProfile(controller: NewWelcomeScreenViewController) async { + self.internalState = .userIndicatedSheHasAnExistingProfile + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - NewUnmanagedDetailsChooserViewControllerDelegate + + func userWantsToCloseOnboarding(controller: NewUnmanagedDetailsChooserViewController) async { + await delegate?.userWantsToCloseOnboardingAndCancelAnyOwnedTransferProtocol(onboardingFlow: self) + } + + + func userDidChooseUnmanagedDetails(controller: NewUnmanagedDetailsChooserViewController, ownedIdentityCoreDetails: ObvIdentityCoreDetails, photo: UIImage?) async { + + guard let delegate else { assertionFailure(); return } + + // If the user chose a profile picture, save it to disk so that the engine can process it + + let photoURL: URL? + if let photo, let jpegData = photo.jpegData(compressionQuality: 1.0) { + let filename = [UUID().uuidString, UTType.jpeg.preferredFilenameExtension ?? "jpeg"].joined(separator: ".") + let filepath = directoryForTempFiles.appendingPathComponent(filename) + do { + try jpegData.write(to: filepath) + photoURL = filepath + } catch { + assertionFailure() + photoURL = nil + } + } else { + photoURL = nil + } + + // Create the details to pass to the engine + + let currentDetails = ObvIdentityDetails(coreDetails: ownedIdentityCoreDetails, photoURL: photoURL) + let ownedCryptoId: ObvCryptoId + + // Note that we could have let the user choose a name for her device. We decide not to, for now, and use the device model name + + do { + ownedCryptoId = try await delegate.onboardingRequiresToGenerateOwnedIdentity( + onboardingFlow: self, + identityDetails: currentDetails, + nameForCurrentDevice: defaultNameForCurrentDevice, + keycloakState: nil, + customServerAndAPIKey: customServerAndAPIKey) + } catch { + os_log("Could not generate owned identity: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + + do { + try await delegate.onboardingRequiresToSyncAppDatabasesWithEngine(onboardingFlow: self) + } catch { + os_log("Could not sync engine and app: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + + // At the end, the engine will be managing the photo, we can delete the one we store in the temporary folder + + if let photoURL { + try? FileManager.default.removeItem(at: photoURL) + } + + // Transition to the next screen + + await requestNextAutorisationPermissionAfterCreatingTheOwnedIdentity(profileKind: .unmanaged(ownedCryptoId: ownedCryptoId)) + + } + + + func userIndicatedHerProfileIsManagedByOrganisation(controller: NewUnmanagedDetailsChooserViewController) async { + await userIndicatedHerProfileIsManagedByOrganisation() + } + + + // MARK: - NewAutorisationRequesterViewControllerDelegate + + func requestAutorisation(autorisationRequester: NewAutorisationRequesterViewController, now: Bool, for autorisationCategory: NewAutorisationRequesterViewController.AutorisationCategory) async { + guard let profileKind = internalState.profileKind else { assertionFailure(); return } + await delegate?.onboardingNeedsToPreventPrivacyWindowSceneFromShowingOnNextWillResignActive(onboardingFlow: self) + switch autorisationCategory { + case .localNotifications: + if now { + let center = UNUserNotificationCenter.current() + do { + try await center.requestAuthorization(options: [.alert, .sound, .badge]) + } catch { + os_log("Could not request authorization for notifications: %@", log: Self.log, type: .error, error.localizedDescription) + } + } + if await requestingAutorisationIsNecessary(for: .recordPermission) { + internalState = .shouldRequestPermission(profileKind: profileKind, category: .recordPermission) + } else { + internalState = determineLastInternalState(profileKind: profileKind) + } + case .recordPermission: + if now { + let granted = await AVAudioSession.sharedInstance().requestRecordPermission() + os_log("User granted access to audio: %@", log: Self.log, type: .info, String(describing: granted)) + } + internalState = determineLastInternalState(profileKind: profileKind) + } + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - NewOwnedIdentityGeneratedViewControllerDelegate + + func userWantsToStartUsingOlvid(controller: NewOwnedIdentityGeneratedViewController) async { + guard let ownedCryptoId = internalState.ownedCryptoId else { assertionFailure(); return } + await delegate?.onboardingIsFinished(onboardingFlow: self, ownedCryptoIdGeneratedDuringOnboarding: ownedCryptoId) + + } + + + // MARK: - UINavigationControllerDelegate + + public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) { + + guard let flowNavigationControllerWidthConstraint, let flowNavigationControllerHeightConstraint else { return } + + var isHeightIncreased = false + var newSize: Size? + + enum Size { + case small + case normal + case large + + var width: CGFloat { + return 443 + } + + var height: CGFloat { + switch self { + case .small: + return 426 + case .normal: + return 700 + case .large: + return 800 + } + } + } + + switch viewController.self { + case is NewUnmanagedDetailsChooserViewController: + newSize = .normal + case is NewAutorisationRequesterViewController: + newSize = .normal + case is ChooseBetweenBackupRestoreAndAddThisDeviceViewController: + newSize = .normal + case is ChooseBackupFileViewController: + newSize = .large + case is EnterBackupKeyViewController: + newSize = .large + case is WaitingForBackupRestoreViewController: + newSize = .large + case is NewOwnedIdentityGeneratedViewController: + newSize = nil + case is NewWelcomeScreenViewController: + newSize = .small + default: + newSize = .large + } + + if let newSize { + + if flowNavigationControllerWidthConstraint.constant != newSize.width { + flowNavigationControllerWidthConstraint.constant = newSize.width + } + + if flowNavigationControllerHeightConstraint.constant != newSize.height { + isHeightIncreased = flowNavigationControllerHeightConstraint.constant < newSize.height + flowNavigationControllerHeightConstraint.constant = newSize.height + } + + } + + if animated && isHeightIncreased { + UIView.animate(withDuration: 0.3) { [weak self] in + self?.view.layoutIfNeeded() + } + } + + } + + + // MARK: - ChooseBetweenBackupRestoreAndAddThisDeviceViewControllerDelegate + + func userWantsToRestoreBackup(controller: ChooseBetweenBackupRestoreAndAddThisDeviceViewController) async { + self.internalState = .userWantsToRestoreSomeBackup + await showNextOnboardingScreen(animated: true) + } + + + func userWantsToActivateHerProfileOnThisDevice(controller: ChooseBetweenBackupRestoreAndAddThisDeviceViewController) async { + self.internalState = .userWantsToChooseNameForCurrentDevice + await showNextOnboardingScreen(animated: true) + } + + + func userIndicatedHerProfileIsManagedByOrganisation(controller: ChooseBetweenBackupRestoreAndAddThisDeviceViewController) async { + await userIndicatedHerProfileIsManagedByOrganisation() + } + + + // MARK: - ChooseBackupFileViewControllerDelegate + + func userWantsToProceedWithBackup(controller: ChooseBackupFileViewController, encryptedBackup: Data) async { + self.internalState = .userWantsToRestoreThisEncryptedBackup(encryptedBackup: encryptedBackup) + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - EnterBackupKeyViewControllerDelegate + + func recoverBackupFromEncryptedBackup(controller: EnterBackupKeyViewController, encryptedBackup: Data, backupKey: String) async throws -> (backupRequestIdentifier: UUID, backupDate: Date) { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNotSet } + return try await delegate.onboardingRequiresToRecoverBackupFromEncryptedBackup(onboardingFlow: self, encryptedBackup: encryptedBackup, backupKey: backupKey) + } + + + func userWantsToRestoreBackup(controller: EnterBackupKeyViewController, backupRequestIdentifier: UUID) async throws { + self.internalState = .userWantsToRestoreThisDecryptedBackup(backupRequestIdentifier: backupRequestIdentifier) + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - WaitingForBackupRestoreViewControllerDelegate + + /// Returns the CryptoId of the restore owned identity. When many identities were restored, only one is returned here + func restoreBackupNow(controller: WaitingForBackupRestoreViewController, backupRequestIdentifier: UUID) async throws -> ObvCryptoId { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + return try await delegate.onboardingRequiresToRestoreBackup(onboardingFlow: self, backupRequestIdentifier: backupRequestIdentifier) + } + + + func userWantsToEnableAutomaticBackup(controller: WaitingForBackupRestoreViewController) async throws { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + try await delegate.userWantsToEnableAutomaticBackup(onboardingFlow: self) + } + + + func backupRestorationSucceeded(controller: WaitingForBackupRestoreViewController, restoredOwnedCryptoId: ObvCryptoId) async { + await requestNextAutorisationPermissionAfterCreatingTheOwnedIdentity(profileKind: .backupRestored(ownedCryptoId: restoredOwnedCryptoId)) + } + + + func backupRestorationFailed(controller: WaitingForBackupRestoreViewController) async { + self.internalState = .userWantsToRestoreSomeBackup + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - ScannerHostingViewDelegate + + func scannerViewActionButtonWasTapped() async { + flowNavigationController?.presentedViewController?.dismiss(animated: true) + } + + + func qrCodeWasScanned(olvidURL: OlvidURL) async { + flowNavigationController?.presentedViewController?.dismiss(animated: true) + await NewAppStateManager.shared.handleOlvidURL(olvidURL) + } + + + // MARK: - IdentityProviderValidationViewControllerDelegate + + func discoverKeycloakServer(controller: IdentityProviderValidationViewController, keycloakServerURL: URL) async throws -> (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration) { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + return try await delegate.onboardingRequiresToDiscoverKeycloakServer(onboardingFlow: self, keycloakServerURL: keycloakServerURL) + } + + + func userWantsToAuthenticateOnKeycloakServer(controller: IdentityProviderValidationViewController, keycloakConfiguration: Onboarding.KeycloakConfiguration, isConfiguredFromMDM: Bool, keycloakServerKeyAndConfig: (jwks: ObvJWKSet, serviceConfig: OIDServiceConfiguration)) async throws { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + let (keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff, keycloakState) = try await delegate.onboardingRequiresKeycloakAuthentication( + onboardingFlow: self, + keycloakConfiguration: keycloakConfiguration, + keycloakServerKeyAndConfig: keycloakServerKeyAndConfig) + internalState = .keycloakUserDetailsAndStuffAvailable(keycloakUserDetailsAndStuff: keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: keycloakServerRevocationsAndStuff, keycloakState: keycloakState) + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - ManagedDetailsViewerViewControllerDelegate + + @MainActor + func userWantsToCreateProfileWithDetailsFromIdentityProvider(controller: ManagedDetailsViewerViewController, keycloakDetails: (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff), keycloakState: ObvKeycloakState) async { + + guard let delegate else { + assertionFailure() + return + } + + // We are dealing with an identity server. If there was no previous olvid identity for this user, then we can safely generate a new one. If there was a previous identity, we must make sure that the server allows revocation before trying to create a new identity. + + guard keycloakDetails.keycloakUserDetailsAndStuff.identity == nil || keycloakDetails.keycloakServerRevocationsAndStuff.revocationAllowed else { + // If this happens, there is an UI bug. + assertionFailure() + return + } + + // The following call discards the signed details. This is intentional. The reason is that these signed details, if they exist, contain an old identity that will be revoked. We do not want to store this identity. + + guard let coreDetails = try? keycloakDetails.keycloakUserDetailsAndStuff.signedUserDetails.userDetails.getCoreDetails() else { + assertionFailure() + return + } + + // We use the hardcoded API here, it will be updated during the keycloak registration + + let currentDetails = ObvIdentityDetails(coreDetails: coreDetails, photoURL: nil) + + // Request the generation of the owned identity and sync it with the app + + let ownedCryptoId: ObvCryptoId + do { + ownedCryptoId = try await delegate.onboardingRequiresToGenerateOwnedIdentity( + onboardingFlow: self, + identityDetails: currentDetails, + nameForCurrentDevice: defaultNameForCurrentDevice, + keycloakState: keycloakState, + customServerAndAPIKey: customServerAndAPIKey) + } catch { + os_log("Could not generate owned identity: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + + do { + try await delegate.onboardingRequiresToSyncAppDatabasesWithEngine(onboardingFlow: self) + } catch { + os_log("Could not sync engine and app: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + + // The owned identity is created, we register it with the keycloak manager + + do { + try await delegate.onboardingRequiresToRegisterAndUploadOwnedIdentityToKeycloakServer(ownedCryptoId: ownedCryptoId) + } catch { + let alert = UIAlertController(title: NSLocalizedString("DIALOG_TITLE_IDENTITY_PROVIDER_ERROR", comment: "") , + message: NSLocalizedString("DIALOG_MESSAGE_FAILED_TO_UPLOAD_IDENTITY_TO_KEYCLOAK", comment: ""), + preferredStyle: .alert) + alert.addAction(UIAlertAction(title: "Ok", style: .default)) + present(alert, animated: true) + return + } + + // We are done, we can proceed with the next screen + + await requestNextAutorisationPermissionAfterCreatingTheOwnedIdentity(profileKind: .keycloakManaged(ownedCryptoId: ownedCryptoId)) + + } + + + // MARK: - TransfertProtocolSourceCodeDisplayerViewControllerDelegate + + func userWantsToInitiateOwnedIdentityTransferProtocolOnSourceDevice(controller: TransfertProtocolSourceCodeDisplayerViewController, ownedCryptoId: ObvCryptoId, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void) async throws { + try await delegate?.onboardingRequiresToInitiateOwnedIdentityTransferProtocolOnSourceDevice( + onboardingFlow: self, + ownedCryptoId: ownedCryptoId, + onAvailableSessionNumber: onAvailableSessionNumber, + onAvailableSASExpectedOnInput: onAvailableSASExpectedOnInput) + } + + + func userDidCancelOwnedIdentityTransferProtocol(controller: TransfertProtocolSourceCodeDisplayerViewController) async { + await userDidCancelOwnedIdentityTransferProtocol() + } + + + func sasExpectedOnInputIsAvailable(controller: TransfertProtocolSourceCodeDisplayerViewController, sasExpectedOnInput: ObvOwnedIdentityTransferSas, targetDeviceName: String, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID) async { + self.internalState = .userMustEnterSASOnSourceDevice( + sasExpectedOnInput: sasExpectedOnInput, + targetDeviceName: targetDeviceName, + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + protocolInstanceUID: protocolInstanceUID) + await showNextOnboardingScreen(animated: true) + } + + // MARK: - AddProfileViewControllerDelegate + + func userWantsToCloseOnboarding(controller: AddProfileViewController) async { + await delegate?.userWantsToCloseOnboardingAndCancelAnyOwnedTransferProtocol(onboardingFlow: self) + } + + + func userWantsToCreateNewProfile(controller: AddProfileViewController) async { + self.internalState = .userWantsToChooseUnmanagedDetails + await showNextOnboardingScreen(animated: true) + } + + + func userWantsToImportProfileFromAnotherDevice(controller: AddProfileViewController) async { + self.internalState = .userWantsToChooseNameForCurrentDevice + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - CurrentDeviceNameChooserViewControllerDelegate + + func userWantsToCloseOnboarding(controller: CurrentDeviceNameChooserViewController) async { + await delegate?.userWantsToCloseOnboardingAndCancelAnyOwnedTransferProtocol(onboardingFlow: self) + } + + + func userDidChooseCurrentDeviceName(controller: CurrentDeviceNameChooserViewController, deviceName: String) async { + self.internalState = .userWantsToEnterTransferCode(currentDeviceName: deviceName) + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - TransfertProtocolTargetCodeFormViewControllerDelegate + + func userEnteredTransferSessionNumberOnTargetDevice(controller: TransfertProtocolTargetCodeFormViewController, transferSessionNumber: ObvTypes.ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void) async throws { + guard let currentDeviceName = internalState.currentDeviceName else { assertionFailure(); return } + try await delegate?.onboardingRequiresToInitiateOwnedIdentityTransferProtocolOnTargetDevice( + onboardingFlow: self, + transferSessionNumber: transferSessionNumber, + currentDeviceName: currentDeviceName, + onIncorrectTransferSessionNumber: onIncorrectTransferSessionNumber, + onAvailableSas: onAvailableSas) + } + + + /// Called when the user entered a correct session number on the target device, and after the protocol managed to exchanged the appropriate data with the source device in order to compute a SAS to show on this target device. + func sasIsAvailable(controller: TransfertProtocolTargetCodeFormViewController, protocolInstanceUID: UID, sas: ObvOwnedIdentityTransferSas) async { + guard let currentDeviceName = internalState.currentDeviceName else { assertionFailure("We expect to be in the userWantsToEnterTransferCode that contains a device name"); return } + self.internalState = .userWantsToDisplaySasOnThisTargetDevice(currentDeviceName: currentDeviceName, protocolInstanceUID: protocolInstanceUID, sas: sas) + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - TransferProtocolTargetShowSasViewControllerDelegate + + func targetDeviceIsShowingSasAndExpectingEndOfProtocol(controller: TransferProtocolTargetShowSasViewController, protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async { + await delegate?.onboardingIsShowingSasAndExpectingEndOfProtocol( + onboardingFlow: self, + protocolInstanceUID: protocolInstanceUID, + onSyncSnapshotReception: onSyncSnapshotReception, + onSuccessfulTransfer: onSuccessfulTransfer) + } + + + /// Called at the end of the transfer protocol on the target device, when everything worked + func successfulTransferWasPerformedOnThisTargetDevice(controller: TransferProtocolTargetShowSasViewController, transferredOwnedCryptoId: ObvCryptoId, postTransferError: Error?) async { + await requestNextAutorisationPermissionAfterCreatingTheOwnedIdentity(profileKind: .transferred(ownedCryptoId: transferredOwnedCryptoId, postTransferError: postTransferError)) + } + + + func userDidCancelOwnedIdentityTransferProtocol(controller: TransferProtocolTargetShowSasViewController) async { + await userDidCancelOwnedIdentityTransferProtocol() + } + + + // MARK: - SuccessfulTransferConfirmationViewControllerDelegate + + func userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice(controller: SuccessfulTransferConfirmationViewController, transferredOwnedCryptoId: ObvCryptoId, userWantsToAddAnotherProfile: Bool) async { + if userWantsToAddAnotherProfile { + requestKeycloakSyncOnDeinit = false + } + await delegate?.userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice( + onboardingFlow: self, + transferredOwnedCryptoId: transferredOwnedCryptoId, + userWantsToAddAnotherProfile: userWantsToAddAnotherProfile) + } + + + // MARK: - InputSASOnSourceViewControllerDelegate + + func userEnteredValidSASOnSourceDevice(controller: InputSASOnSourceViewController, enteredSAS: ObvOwnedIdentityTransferSas, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID, targetDeviceName: String) async throws { + // Before going to the next screen, we need more information, namely the current list of owned devices and if the user has a multidevice subscription or not + guard let delegate else { assertionFailure(); return } + let (ownedDeviceDiscoveryResult, currentDeviceIdentifier) = try await delegate.onboardingRequiresToPerformOwnedDeviceDiscoveryNow(for: ownedCryptoId) + internalState = .userMustChooseDeviceToKeepActiveOnSourceDevice( + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + enteredSAS: enteredSAS, + ownedDeviceDiscoveryResult: ownedDeviceDiscoveryResult, + currentDeviceIdentifier: currentDeviceIdentifier, + targetDeviceName: targetDeviceName, + protocolInstanceUID: protocolInstanceUID) + await showNextOnboardingScreen(animated: true) + } + + + func userDidCancelOwnedIdentityTransferProtocol(controller: InputSASOnSourceViewController) async { + await userDidCancelOwnedIdentityTransferProtocol() + } + + + // MARK: - ChooseDeviceToKeepActiveViewControllerDelegate + + func userChoseDeviceToKeepActive(controller: ChooseDeviceToKeepActiveViewController, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data, targetDeviceName: String, deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device?, protocolInstanceUID: UID) async { + internalState = .finalOwnedIdentityTransferCheckOnSourceDevice( + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + enteredSAS: enteredSAS, + ownedDeviceDiscoveryResult: ownedDeviceDiscoveryResult, + targetDeviceName: targetDeviceName, + protocolInstanceUID: protocolInstanceUID, + deviceToKeepActive: deviceToKeepActive) + await showNextOnboardingScreen(animated: true) + } + + + func userDidCancelOwnedIdentityTransferProtocol(controller: ChooseDeviceToKeepActiveViewController) async { + await userDidCancelOwnedIdentityTransferProtocol() + } + + + // MARK: - OwnedIdentityTransferSummaryViewControllerDelegate + + func userDidCancelOwnedIdentityTransferProtocol(controller: OwnedIdentityTransferSummaryViewController) async { + await userDidCancelOwnedIdentityTransferProtocol() + } + + + func userWishesToFinalizeOwnedIdentityTransferFromSourceDevice(controller: OwnedIdentityTransferSummaryViewController, enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws { + try await delegate?.userWishesToFinalizeOwnedIdentityTransferFromSourceDevice( + onboardingFlow: self, + enteredSAS: enteredSAS, + deviceToKeepActive: deviceToKeepActive, + ownedCryptoId: ownedCryptoId, + protocolInstanceUID: protocolInstanceUID) + } + + + func refreshDeviceDiscovery(controller: ChooseDeviceToKeepActiveViewController, for ownedCryptoId: ObvCryptoId) async throws -> ObvOwnedDeviceDiscoveryResult { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + let result = try await delegate.onboardingRequiresToPerformOwnedDeviceDiscoveryNow(for: ownedCryptoId) + return result.ownedDeviceDiscoveryResult + } + + + // MARK: - SubscriptionPlansViewActionsProtocol (required for ChooseDeviceToKeepActiveViewControllerDelegate) + + func fetchSubscriptionPlans(for ownedCryptoId: ObvCryptoId, alsoFetchFreePlan: Bool) async throws -> (freePlanIsAvailable: Bool, products: [Product]) { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + return try await delegate.fetchSubscriptionPlans(for: ownedCryptoId, alsoFetchFreePlan: alsoFetchFreePlan) + } + + + func userWantsToStartFreeTrialNow(ownedCryptoId: ObvCryptoId) async throws -> APIKeyElements { + guard let delegate else { throw ObvError.theDelegateIsNotSet } + let newAPIKeyElements = try await delegate.userWantsToStartFreeTrialNow(ownedCryptoId: ownedCryptoId) + return newAPIKeyElements + } + + + func userWantsToBuy(_ product: Product) async throws -> StoreKitDelegatePurchaseResult { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNotSet } + return try await delegate.userWantsToBuy(product) + } + + + func userWantsToRestorePurchases() async throws { + guard let delegate else { assertionFailure(); throw ObvError.theDelegateIsNotSet } + try await delegate.userWantsToRestorePurchases() + } + + + // MARK: - NewIdentityProviderManualConfigurationViewControllerDelegate + + @MainActor + func userWantsToValidateManualKeycloakConfiguration(controller: NewIdentityProviderManualConfigurationViewController, keycloakConfig: Onboarding.KeycloakConfiguration) async { + self.internalState = .keycloakConfigAvailable(keycloakConfiguration: keycloakConfig, isConfiguredFromMDM: false) + await showNextOnboardingScreen(animated: true) + } + + + // MARK: - OlvidURLHandler + + @MainActor + func handleOlvidURL(_ olvidURL: OlvidURL) async { + switch olvidURL.category { + + case .openIdRedirect: + // This case should have been dealt with by the MetaFlowController + assertionFailure() + + case .invitation: + // Not handled while the user is performing an onboarding (it used to be, in the old flow, but not anymore) + assertionFailure() + + case .mutualScan: + // Not handled while the user is performing an onboarding + assertionFailure() + + case .configuration(let serverAndAPIKey, _, let keycloakConfig): + + if let serverAndAPIKey { + await userWantsToUseCustomServerAndAPIKey(serverAndAPIKey) + } else if let keycloakConfig { + let keycloakConfiguration = Onboarding.KeycloakConfiguration(keycloakServerURL: keycloakConfig.serverURL, clientId: keycloakConfig.clientId, clientSecret: keycloakConfig.clientSecret) + self.internalState = .keycloakConfigAvailable(keycloakConfiguration: keycloakConfiguration, isConfiguredFromMDM: false) + await showNextOnboardingScreen(animated: true) + } else { + assertionFailure() + // betaConfiguration are not handled + } + + } + + } + + + @MainActor + private func userWantsToUseCustomServerAndAPIKey(_ customServerAndAPIKey: ServerAndAPIKey) async { + + let title = NSLocalizedString("USE_CUSTOM_API_KEY_AND_SERVER_ALERT_TITLE", comment: "") + let message = String.localizedStringWithFormat(NSLocalizedString("USE_CUSTOM_API_KEY_AND_SERVER_ALERT_BODY_%@_%@", comment: ""), customServerAndAPIKey.server.absoluteString, customServerAndAPIKey.apiKey.uuidString) + + let alert = UIAlertController(title: title, + message: message, + preferredStyleForTraitCollection: .current) + alert.addAction(.init(title: "Cancel", style: .cancel)) + alert.addAction(.init(title: "Ok", style: .default) { _ in + self.customServerAndAPIKey = customServerAndAPIKey + }) + + present(alert, animated: true) + + } + + + // MARK: - Helpers + + @MainActor + private func userIndicatedHerProfileIsManagedByOrganisation() async { + let vc = ScannerHostingView(buttonType: .back, delegate: self) + let nav = UINavigationController(rootViewController: vc) + // Configure the ScannerHostingView properly for the navigation controller + vc.title = NSLocalizedString("CONFIGURATION_SCAN", comment: "") + let ellipsisButton = getConfiguredEllipsisCircleRightBarButtonItem() + vc.navigationItem.rightBarButtonItem = ellipsisButton + flowNavigationController?.present(nav, animated: true) + } + + + /// Returns the bar button item shown on the scanner hosting view + private func getConfiguredEllipsisCircleRightBarButtonItem() -> UIBarButtonItem { + let menuElements: [UIMenuElement] = [ + UIAction(title: NSLocalizedString("PASTE_CONFIGURATION_LINK", comment: ""), + image: UIImage(systemIcon: .docOnClipboardFill)) { [weak self] _ in + self?.presentedViewController?.dismiss(animated: true) { [weak self] in + Task { [weak self] in await self?.userWantsToPasteConfigurationURL() } + } + }, + UIAction(title: NSLocalizedString("MANUAL_CONFIGURATION", comment: ""), + image: UIImage(systemIcon: .serverRack)) { [weak self] _ in + self?.presentedViewController?.dismiss(animated: true) { [weak self] in + Task { [weak self] in await self?.userChooseToUseManualIdentityProvider() } + } + }, + ] + let menu = UIMenu(title: "", children: menuElements) + let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 20.0, weight: .bold) + let ellipsisImage = UIImage(systemIcon: .ellipsisCircle, withConfiguration: symbolConfiguration) + let ellipsisButton = UIBarButtonItem( + title: "Menu", + image: ellipsisImage, + primaryAction: nil, + menu: menu) + return ellipsisButton + } + + + @MainActor + private func userWantsToPasteConfigurationURL() async { + + guard let pastedString = UIPasteboard.general.string, + let url = URL(string: pastedString), + let olvidURL = OlvidURL(urlRepresentation: url) else { + ObvMessengerInternalNotification.pastedStringIsNotValidOlvidURL + .postOnDispatchQueue() + return + } + + await NewAppStateManager.shared.handleOlvidURL(olvidURL) + + } + + + @MainActor + private func userChooseToUseManualIdentityProvider() async { + self.internalState = .userWantsToManuallyConfigureTheIdentityProvider + await showNextOnboardingScreen(animated: true) + } + + + /// This method is sytematically called after the creation of an owned identity (unmanaged, keycloak ,transferred, etc.). + /// When all the permissions screen have been dealt with, the appropriate "final" screen is chosen depending on the profile kind + @MainActor + private func requestNextAutorisationPermissionAfterCreatingTheOwnedIdentity(profileKind: NewOnboardingState.ProfileKind) async { + if await requestingAutorisationIsNecessary(for: .localNotifications) { + internalState = .shouldRequestPermission(profileKind: profileKind, category: .localNotifications) + } else if await requestingAutorisationIsNecessary(for: .recordPermission) { + internalState = .shouldRequestPermission(profileKind: profileKind, category: .recordPermission) + } else { + internalState = determineLastInternalState(profileKind: profileKind) + } + await showNextOnboardingScreen(animated: true) + } + + + @MainActor + private func determineLastInternalState(profileKind: NewOnboardingState.ProfileKind) -> NewOnboardingState { + switch profileKind { + case .unmanaged, .keycloakManaged, .backupRestored: + return .finalize(profileKind: profileKind) + case .transferred(ownedCryptoId: let transferredOwnedCryptoId, postTransferError: let postTransferError): + return .successfulTransferWasPerfomed(transferredOwnedCryptoId: transferredOwnedCryptoId, postTransferError: postTransferError) + } + } + + + @MainActor + private func requestingAutorisationIsNecessary(for autorisationCategory: NewAutorisationRequesterViewController.AutorisationCategory) async -> Bool { + switch autorisationCategory { + case .localNotifications: + let center = UNUserNotificationCenter.current() + let authorizationStatus = await center.notificationSettings().authorizationStatus + switch authorizationStatus { + case .notDetermined, .provisional, .ephemeral: + return true + case .denied, .authorized: + return false + @unknown default: + assertionFailure() + return true + } + case .recordPermission: + let recordPermission = AVAudioSession.sharedInstance().recordPermission + switch recordPermission { + case .undetermined: + return true + case .denied, .granted: + return false + @unknown default: + return true + } + } + } + + + private var defaultNameForCurrentDevice: String { + UIDevice.current.preciseModel + } + + +// private func requestSyncAppDatabasesWithEngine() async throws { +// showHUD(type: .spinner) +// try await withCheckedThrowingContinuation { [weak self] (continuation: CheckedContinuation) in +// ObvMessengerInternalNotification.requestSyncAppDatabasesWithEngine { result in +// DispatchQueue.main.async { +// self?.hideHUD() +// } +// switch result { +// case .failure(let error): +// continuation.resume(throwing: error) +// case .success: +// continuation.resume() +// } +// }.postOnDispatchQueue() +// } +// } + + + // MARK: - Errors + + enum ObvError: Error { + case couldNotCompressImage + case theDelegateIsNotSet + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOnboardingInternalState.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOnboardingInternalState.swift new file mode 100644 index 00000000..988450a6 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOnboardingInternalState.swift @@ -0,0 +1,186 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes +import ObvCrypto +import Contacts + + +enum NewOnboardingState { + + enum ProfileKind { + case unmanaged(ownedCryptoId: ObvCryptoId) + case keycloakManaged(ownedCryptoId: ObvCryptoId) + case backupRestored(ownedCryptoId: ObvCryptoId) + case transferred(ownedCryptoId: ObvCryptoId, postTransferError: Error?) + var ownedCryptoId: ObvCryptoId { + switch self { + case .unmanaged(let ownedCryptoId), + .keycloakManaged(let ownedCryptoId), + .backupRestored(let ownedCryptoId), + .transferred(let ownedCryptoId, _): + return ownedCryptoId + } + } + } + + case initial + case userWantsToChooseUnmanagedDetails + case userIndicatedSheHasAnExistingProfile + case userWantsToManuallyConfigureTheIdentityProvider + case userWantsToRestoreSomeBackup + case userWantsToChooseNameForCurrentDevice + case userWantsToRestoreThisEncryptedBackup(encryptedBackup: Data) + case userWantsToRestoreThisDecryptedBackup(backupRequestIdentifier: UUID) + case keycloakConfigAvailable(keycloakConfiguration: Onboarding.KeycloakConfiguration, isConfiguredFromMDM: Bool) + case keycloakUserDetailsAndStuffAvailable(keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff, keycloakState: ObvKeycloakState) + case shouldRequestPermission(profileKind: ProfileKind, category: NewAutorisationRequesterViewController.AutorisationCategory) + case finalize(profileKind: ProfileKind) + + // States while transfering an owned identity + case finalOwnedIdentityTransferCheckOnSourceDevice(ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, targetDeviceName: String, protocolInstanceUID: UID, deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device?) + case userMustChooseDeviceToKeepActiveOnSourceDevice(ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data, targetDeviceName: String, protocolInstanceUID: UID) + case userMustEnterSASOnSourceDevice(sasExpectedOnInput: ObvOwnedIdentityTransferSas, targetDeviceName: String, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID) + case userWantsToDisplaySasOnThisTargetDevice(currentDeviceName: String, protocolInstanceUID: UID, sas: ObvOwnedIdentityTransferSas) + case userWantsToEnterTransferCode(currentDeviceName: String) + case successfulTransferWasPerfomed(transferredOwnedCryptoId: ObvCryptoId, postTransferError: Error?) + case showOwnedIdentityTransferFailed(error: Error) + + + var currentDeviceName: String? { + switch self { + case .userWantsToEnterTransferCode(currentDeviceName: let currentDeviceName), + .userWantsToDisplaySasOnThisTargetDevice(currentDeviceName: let currentDeviceName, protocolInstanceUID: _, sas: _): + return currentDeviceName + default: + return nil + } + } + + + var ownedIdentityTransferProtocolInstanceUID: UID? { + switch self { + case .initial, + .userWantsToChooseUnmanagedDetails, + .userIndicatedSheHasAnExistingProfile, + .userWantsToRestoreSomeBackup, + .userWantsToChooseNameForCurrentDevice, + .userWantsToRestoreThisEncryptedBackup, + .userWantsToRestoreThisDecryptedBackup, + .keycloakConfigAvailable, + .keycloakUserDetailsAndStuffAvailable, + .shouldRequestPermission, + .userWantsToEnterTransferCode, + .successfulTransferWasPerfomed, + .userWantsToManuallyConfigureTheIdentityProvider, + .showOwnedIdentityTransferFailed, + .finalize: + return nil + case .finalOwnedIdentityTransferCheckOnSourceDevice(_, _, _, _, _, let protocolInstanceUID, _), + .userMustChooseDeviceToKeepActiveOnSourceDevice(_, _, _, _, _, _, let protocolInstanceUID), + .userMustEnterSASOnSourceDevice(_, _, _, _, let protocolInstanceUID), + .userWantsToDisplaySasOnThisTargetDevice(_, let protocolInstanceUID, _): + return protocolInstanceUID + } + } + + + var userIsEnteringTransferCode: Bool { + switch self { + case .userWantsToEnterTransferCode: + return true + default: + return false + } + } + + + /// Returns the owned crypto id generated or transferred during the onboarding process if we are in a state occuring after the generation of the owned identity. + var ownedCryptoId: ObvCryptoId? { + switch self { + case .initial: + return nil + case .userIndicatedSheHasAnExistingProfile: + return nil + case .userWantsToChooseUnmanagedDetails: + return nil + case .userWantsToRestoreSomeBackup: + return nil + case .userWantsToRestoreThisEncryptedBackup: + return nil + case .userWantsToRestoreThisDecryptedBackup: + return nil + case .keycloakConfigAvailable: + return nil + case .keycloakUserDetailsAndStuffAvailable: + return nil + case .userWantsToChooseNameForCurrentDevice: + return nil + case .userWantsToEnterTransferCode: + return nil + case .userWantsToDisplaySasOnThisTargetDevice: + return nil + case .showOwnedIdentityTransferFailed: + return nil + case .userWantsToManuallyConfigureTheIdentityProvider: + return nil + case .finalOwnedIdentityTransferCheckOnSourceDevice(ownedCryptoId: let ownedCryptoId, ownedDetails: _, enteredSAS: _, ownedDeviceDiscoveryResult: _, targetDeviceName: _, protocolInstanceUID: _, deviceToKeepActive: _): + return ownedCryptoId + case .userMustChooseDeviceToKeepActiveOnSourceDevice(ownedCryptoId: let ownedCryptoId, ownedDetails: _, enteredSAS: _, ownedDeviceDiscoveryResult: _, currentDeviceIdentifier: _, targetDeviceName: _, protocolInstanceUID: _): + return ownedCryptoId + case .userMustEnterSASOnSourceDevice(sasExpectedOnInput: _, targetDeviceName: _, ownedCryptoId: let ownedCryptoId, ownedDetails: _, protocolInstanceUID: _): + return ownedCryptoId + case .successfulTransferWasPerfomed(transferredOwnedCryptoId: let transferredOwnedCryptoId, postTransferError: _): + return transferredOwnedCryptoId + case .shouldRequestPermission(let profileKind, _): + return profileKind.ownedCryptoId + case .finalize(let profileKind): + return profileKind.ownedCryptoId + } + } + + + var profileKind: ProfileKind? { + switch self { + case .shouldRequestPermission(profileKind: let profileKind, category: _), + .finalize(profileKind: let profileKind): + return profileKind + case .initial, + .userWantsToChooseUnmanagedDetails, + .userIndicatedSheHasAnExistingProfile, + .userWantsToManuallyConfigureTheIdentityProvider, + .userWantsToRestoreSomeBackup, + .userWantsToChooseNameForCurrentDevice, + .userWantsToRestoreThisEncryptedBackup, + .userWantsToRestoreThisDecryptedBackup, + .keycloakConfigAvailable, + .keycloakUserDetailsAndStuffAvailable, + .finalOwnedIdentityTransferCheckOnSourceDevice, + .userMustChooseDeviceToKeepActiveOnSourceDevice, + .userMustEnterSASOnSourceDevice, + .userWantsToDisplaySasOnThisTargetDevice, + .userWantsToEnterTransferCode, + .successfulTransferWasPerfomed, + .showOwnedIdentityTransferFailed: + return nil + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOwnedIdentityGenerated/NewOwnedIdentityGeneratedView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOwnedIdentityGenerated/NewOwnedIdentityGeneratedView.swift new file mode 100644 index 00000000..f5ea3835 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOwnedIdentityGenerated/NewOwnedIdentityGeneratedView.swift @@ -0,0 +1,101 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI + + +protocol NewOwnedIdentityGeneratedViewActionsProtocol: AnyObject { + func startUsingOlvidAction() async +} + + +struct NewOwnedIdentityGeneratedView: View { + + let actions: NewOwnedIdentityGeneratedViewActionsProtocol + + private func startUsingOlvidAction() { + Task { + await actions.startUsingOlvidAction() + } + } + + var body: some View { + + VStack { + + Image("badge", bundle: nil) + .resizable() + .frame(width: 60, height: 60, alignment: .center) + .padding() + Text("Congratulations!") + .font(.title) + .multilineTextAlignment(.center) + + ScrollView { + Text("OWNED_IDENTITY_GENERATED_EXPLANATION") + .frame(minWidth: .none, + maxWidth: .infinity, + minHeight: .none, + idealHeight: .none, + maxHeight: .none, + alignment: .center) + .font(.body) + .padding() + } + + // Show a "skip" button bellow the scroll view + + Spacer() + + Button(action: startUsingOlvidAction) { + Text("START_USING_OLVID") + .foregroundStyle(.white) + .padding() + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .padding() + } + + + } + +} + + +// MARK: - Previews + +struct NewOwnedIdentityGeneratedView_Previews: PreviewProvider { + + private final class ActionsForPreviews: NewOwnedIdentityGeneratedViewActionsProtocol { + func startUsingOlvidAction() async {} + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + Group { + NewOwnedIdentityGeneratedView(actions: actions) + NewOwnedIdentityGeneratedView(actions: actions) + .environment(\.locale, .init(identifier: "fr")) + } + } +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOwnedIdentityGenerated/NewOwnedIdentityGeneratedViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOwnedIdentityGenerated/NewOwnedIdentityGeneratedViewController.swift new file mode 100644 index 00000000..2d78e300 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewOwnedIdentityGenerated/NewOwnedIdentityGeneratedViewController.swift @@ -0,0 +1,81 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + + +import SwiftUI +import UIKit + + +protocol NewOwnedIdentityGeneratedViewControllerDelegate: AnyObject { + func userWantsToStartUsingOlvid(controller: NewOwnedIdentityGeneratedViewController) async +} + +final class NewOwnedIdentityGeneratedViewController: UIHostingController, NewOwnedIdentityGeneratedViewActionsProtocol { + + private weak var delegate: NewOwnedIdentityGeneratedViewControllerDelegate? + + init(delegate: NewOwnedIdentityGeneratedViewControllerDelegate) { + let actions = NewOwnedIdentityGeneratedViewActions() + let view = NewOwnedIdentityGeneratedView(actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @objc required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(true, animated: animated) + } + + // NewOwnedIdentityGeneratedViewActions + + func startUsingOlvidAction() async { + await delegate?.userWantsToStartUsingOlvid(controller: self) + } + +} + + +private final class NewOwnedIdentityGeneratedViewActions: NewOwnedIdentityGeneratedViewActionsProtocol { + + weak var delegate: NewOwnedIdentityGeneratedViewActionsProtocol? + + func startUsingOlvidAction() async { + await delegate?.startUsingOlvidAction() + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewUnmanagedDetailsChooser/NewUnmanagedDetailsChooserView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewUnmanagedDetailsChooser/NewUnmanagedDetailsChooserView.swift new file mode 100644 index 00000000..53df302c --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewUnmanagedDetailsChooser/NewUnmanagedDetailsChooserView.swift @@ -0,0 +1,257 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import UI_ObvCircledInitials +import UI_ObvPhotoButton + + +protocol NewUnmanagedDetailsChooserViewModelProtocol: ObservableObject, ObvPhotoButtonViewModelProtocol { + // The circledInitialsConfiguration is part of InitialCircleViewNewModelProtocol + func updatePhoto(with photo: UIImage?) async + var showPositionAndOrganisation: Bool { get } +} + + +protocol NewUnmanagedDetailsChooserViewActions: AnyObject { + func userDidChooseUnmanagedDetails(ownedIdentityCoreDetails: ObvIdentityCoreDetails, photo: UIImage?) + func userIndicatedHerProfileIsManagedByOrganisation() + // The following two methods leverages the view controller to show + // the appropriate UI allowing the user to create her profile picture. + func userWantsToTakePhoto() async -> UIImage? + func userWantsToChoosePhoto() async -> UIImage? +} + + +struct NewUnmanagedDetailsChooserView: View, ObvPhotoButtonViewActionsProtocol { + + @ObservedObject var model: Model + let actions: NewUnmanagedDetailsChooserViewActions + + @State private var firstname = ""; + @State private var lastname = ""; + @State private var position = ""; + @State private var company = ""; + @State private var isButtonDisabled = true + @State private var isInterfaceDisabled = false + @State private var photoAlertToShow: PhotoAlertType? + + enum PhotoAlertType { + case camera + case photoLibrary + } + + private func resetIsButtonDisabled() { + isButtonDisabled = firstname.trimmingWhitespacesAndNewlines().isEmpty && lastname.trimmingWhitespacesAndNewlines().isEmpty + } + + private var coreDetails: ObvIdentityCoreDetails? { + return try? .init( + firstName: firstname, + lastName: lastname, + company: company, + position: position, + signedUserDetails: nil) + } + + + private func createProfileButtonTapped() { + guard let coreDetails else { return } + withAnimation { + isInterfaceDisabled = true + } + actions.userDidChooseUnmanagedDetails(ownedIdentityCoreDetails: coreDetails, photo: model.circledInitialsConfiguration.photo) + } + + // PhotoButtonViewActionsProtocol + + func userWantsToAddProfilPictureWithCamera() { + Task { + guard let image = await actions.userWantsToTakePhoto() else { return } + await model.updatePhoto(with: image) + } + } + + + func userWantsToAddProfilPictureWithPhotoLibrary() { + Task { + guard let image = await actions.userWantsToChoosePhoto() else { return } + await model.updatePhoto(with: image) + } + } + + + func userWantsToRemoveProfilePicture() { + Task { + await model.updatePhoto(with: nil) + } + } + + + var body: some View { + ScrollView { + VStack { + + NewOnboardingHeaderView(title: "ONBOARDING_NAME_CHOOSER_TITLE", subtitle: "LETS_CREATE_YOUR_PROFILE") + .padding(.bottom, 20) + + ObvPhotoButtonView(actions: self, model: model) + .padding(.bottom, 10) + + InternalTextField("ONBOARDING_NAME_CHOOSER_TEXTFIELD_FIRSTNAME", text: $firstname) + .onChange(of: firstname) { _ in resetIsButtonDisabled() } + .padding(.bottom, 10) + InternalTextField("ONBOARDING_NAME_CHOOSER_TEXTFIELD_LASTNAME", text: $lastname) + .onChange(of: lastname) { _ in resetIsButtonDisabled() } + .padding(.bottom, 10) + if model.showPositionAndOrganisation { + InternalTextField("ONBOARDING_NAME_CHOOSER_TEXTFIELD_POSITION", text: $position) + .padding(.bottom, 10) + InternalTextField("ONBOARDING_NAME_CHOOSER_TEXTFIELD_COMPANY", text: $company) + .padding(.bottom, 10) + } + + HStack { + Spacer() + ProgressView() + Spacer() + }.opacity(isInterfaceDisabled ? 1.0 : 0.0) + + HStack { + Text("ONBOARDING_NAME_CHOOSER_MANAGED_PROFILE_LABEL") + .foregroundStyle(.secondary) + Button("ONBOARDING_NAME_CHOOSER_MANAGED_PROFILE_BUTTON_TITLE", action: actions.userIndicatedHerProfileIsManagedByOrganisation) + } + .font(.subheadline) + .padding(.top, 10) + + InternalButton("ONBOARDING_NAME_CHOOSER_BUTTON_TITLE", action: createProfileButtonTapped) + .disabled(isButtonDisabled) + .padding(.vertical, 20) + + } + .padding(.horizontal) + .disabled(isInterfaceDisabled) + } + } +} + + +// MARK: - Button used in this view only + +private struct InternalButton: View { + + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Text(key) + .foregroundStyle(.white) + .padding(.horizontal, 30) + .padding(.vertical, 24) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + + + +// MARK: - Text field used in this view only + +private struct InternalTextField: View { + + private let key: LocalizedStringKey + private let text: Binding + + init(_ key: LocalizedStringKey, text: Binding) { + self.key = key + self.text = text + } + + var body: some View { + TextField(key, text: text) + .padding() + .background(Color("TextFieldBackgroundColor")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } + +} + + +// MARK: - Previews + +struct NewUnmanagedDetailsChooserView_Previews: PreviewProvider { + + private final class ActionsForPreviews: NewUnmanagedDetailsChooserViewActions { + func userWantsToTakePhoto() async -> UIImage? { + return UIImage(systemIcon: .checkmarkShield) + + } + + func userWantsToChoosePhoto() async -> UIImage? { + return UIImage(systemIcon: .checkmarkSealFill) + } + + func userDidChooseUnmanagedDetails(ownedIdentityCoreDetails: ObvTypes.ObvIdentityCoreDetails, photo: UIImage?) {} + func userIndicatedHerProfileIsManagedByOrganisation() {} + } + + private static let actions = ActionsForPreviews() + + final class ModelForPreviews: NewUnmanagedDetailsChooserViewModelProtocol { + + var photoThatCannotBeRemoved: UIImage? { nil } + @Published var circledInitialsConfiguration: CircledInitialsConfiguration + let showPositionAndOrganisation: Bool + + init(showPositionAndOrganisation: Bool) { + self.showPositionAndOrganisation = showPositionAndOrganisation + self.circledInitialsConfiguration = .icon(.person) + } + + @MainActor + func updatePhoto(with photo: UIImage?) async { + if let photo { + self.circledInitialsConfiguration = .photo(photo: .image(image: photo)) + } else { + self.circledInitialsConfiguration = .icon(.person) + } + } + + } + + private static let model = ModelForPreviews(showPositionAndOrganisation: false) + + static var previews: some View { + NewUnmanagedDetailsChooserView(model: model, actions: actions) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewUnmanagedDetailsChooser/NewUnmanagedDetailsChooserViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewUnmanagedDetailsChooser/NewUnmanagedDetailsChooserViewController.swift new file mode 100644 index 00000000..efb52ef4 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewUnmanagedDetailsChooser/NewUnmanagedDetailsChooserViewController.swift @@ -0,0 +1,313 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import PhotosUI +import ObvTypes +import UI_ObvCircledInitials +import UI_ObvImageEditor + + +protocol NewUnmanagedDetailsChooserViewControllerDelegate: AnyObject { + func userWantsToCloseOnboarding(controller: NewUnmanagedDetailsChooserViewController) async + func userDidChooseUnmanagedDetails(controller: NewUnmanagedDetailsChooserViewController, ownedIdentityCoreDetails: ObvIdentityCoreDetails, photo: UIImage?) async + func userIndicatedHerProfileIsManagedByOrganisation(controller: NewUnmanagedDetailsChooserViewController) async +} + + +final class NewUnmanagedDetailsChooserViewController: UIHostingController>, NewUnmanagedDetailsChooserViewActions, PHPickerViewControllerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, ObvImageEditorViewControllerDelegate { + + weak var delegate: NewUnmanagedDetailsChooserViewControllerDelegate? + + private let showCloseButton: Bool + + init(model: NewUnmanagedDetailsChooserViewModel, delegate: NewUnmanagedDetailsChooserViewControllerDelegate, showCloseButton: Bool) { + self.showCloseButton = showCloseButton + let actions = Actions() + let view = NewUnmanagedDetailsChooserView(model: model, actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + if showCloseButton { + let handler: UIActionHandler = { [weak self] _ in self?.closeAction() } + let closeButton = UIBarButtonItem(systemItem: .close, primaryAction: .init(handler: handler)) + navigationItem.rightBarButtonItem = closeButton + } + } + + + private func closeAction() { + Task { [weak self] in + guard let self else { return } + await delegate?.userWantsToCloseOnboarding(controller: self) + } + } + + + // NewUnmanagedDetailsChooserViewActions + + func userDidChooseUnmanagedDetails(ownedIdentityCoreDetails: ObvTypes.ObvIdentityCoreDetails, photo: UIImage?) { + Task(priority: .userInitiated) { + await delegate?.userDidChooseUnmanagedDetails(controller: self, ownedIdentityCoreDetails: ownedIdentityCoreDetails, photo: photo) + } + } + + func userIndicatedHerProfileIsManagedByOrganisation() { + Task { + await delegate?.userIndicatedHerProfileIsManagedByOrganisation(controller: self) + } + } + + private var continuationForPicker: CheckedContinuation? + + + @MainActor + func userWantsToTakePhoto() async -> UIImage? { + + removeAnyPreviousContinuation() + + guard UIImagePickerController.isSourceTypeAvailable(.camera) else { return nil } + + let picker = UIImagePickerController() + picker.delegate = self + picker.allowsEditing = false + picker.sourceType = .camera + picker.cameraDevice = .front + + let imageFromPicker = await withCheckedContinuation { (continuation: CheckedContinuation) in + self.continuationForPicker = continuation + present(picker, animated: true) + } + + guard let imageFromPicker else { return nil } + + let resizedImage = await resizeImageFromPicker(imageFromPicker: imageFromPicker) + + return resizedImage + + } + + + @MainActor + func userWantsToChoosePhoto() async -> UIImage? { + + removeAnyPreviousContinuation() + + guard UIImagePickerController.isSourceTypeAvailable(.photoLibrary) else { return nil } + + var configuration = PHPickerConfiguration() + configuration.selectionLimit = 1 + configuration.filter = .images + let picker = PHPickerViewController(configuration: configuration) + picker.delegate = self + + let imageFromPicker = await withCheckedContinuation { (continuation: CheckedContinuation) in + self.continuationForPicker = continuation + present(picker, animated: true) + } + + guard let imageFromPicker else { return nil } + + let resizedImage = await resizeImageFromPicker(imageFromPicker: imageFromPicker) + + return resizedImage + + } + + + private func removeAnyPreviousContinuation() { + if let continuationForPicker { + continuationForPicker.resume(returning: nil) + self.continuationForPicker = nil + } + } + + + // PHPickerViewControllerDelegate + + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + picker.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + if results.count == 1, let result = results.first { + result.itemProvider.loadObject(ofClass: UIImage.self) { item, error in + guard error == nil else { + continuationForPicker.resume(returning: nil) + return + } + guard let image = item as? UIImage else { + continuationForPicker.resume(returning: nil) + return + } + continuationForPicker.resume(returning: image) + } + } else { + continuationForPicker.resume(with: .success(nil)) + } + } + + + // UIImagePickerControllerDelegate + + func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { + assert(Thread.isMainThread) + picker.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + let image = info[.originalImage] as? UIImage + continuationForPicker.resume(returning: image) + } + + + func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { + assert(Thread.isMainThread) + picker.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + continuationForPicker.resume(returning: nil) + } + + + // ObvImageEditorViewControllerDelegate + + func userCancelledImageEdition(_ imageEditor: ObvImageEditorViewController) async { + imageEditor.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + continuationForPicker.resume(returning: nil) + } + + func userConfirmedImageEdition(_ imageEditor: ObvImageEditorViewController, image: UIImage) async { + imageEditor.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + continuationForPicker.resume(returning: image) + } + + + // Resizing the photos received from the camera or the photo library + + private func resizeImageFromPicker(imageFromPicker: UIImage) async -> UIImage? { + + let imageEditor = ObvImageEditorViewController(originalImage: imageFromPicker, + showZoomButtons: Utils.targetEnvironmentIsMacCatalyst, + maxReturnedImageSize: (1024, 1024), + delegate: self) + + removeAnyPreviousContinuation() + + let resizedImage = await withCheckedContinuation { (continuation: CheckedContinuation) in + self.continuationForPicker = continuation + present(imageEditor, animated: true) + } + + return resizedImage + + } + +} + + + + +fileprivate final class Actions: NewUnmanagedDetailsChooserViewActions { + + weak var delegate: NewUnmanagedDetailsChooserViewActions? + + func userDidChooseUnmanagedDetails(ownedIdentityCoreDetails: ObvTypes.ObvIdentityCoreDetails, photo: UIImage?) { + delegate?.userDidChooseUnmanagedDetails(ownedIdentityCoreDetails: ownedIdentityCoreDetails, photo: photo) + } + + func userIndicatedHerProfileIsManagedByOrganisation() { + delegate?.userIndicatedHerProfileIsManagedByOrganisation() + } + + func userWantsToTakePhoto() async -> UIImage? { + await delegate?.userWantsToTakePhoto() + } + + func userWantsToChoosePhoto() async -> UIImage? { + await delegate?.userWantsToChoosePhoto() + } + +} + + +// MARK: - NewUnmanagedDetailsChooserViewModel + +final class NewUnmanagedDetailsChooserViewModel: NewUnmanagedDetailsChooserViewModelProtocol { + + @Published var circledInitialsConfiguration: CircledInitialsConfiguration + let showPositionAndOrganisation: Bool + var photoThatCannotBeRemoved: UIImage? { nil } + + init(showPositionAndOrganisation: Bool) { + self.showPositionAndOrganisation = showPositionAndOrganisation + self.circledInitialsConfiguration = .icon(.person) + } + + @MainActor + func updatePhoto(with photo: UIImage?) async { + if let photo { + self.circledInitialsConfiguration = .photo(photo: .image(image: photo)) + } else { + self.circledInitialsConfiguration = .icon(.person) + } + } + +} + + + +// MARK: Utils + +fileprivate struct Utils { + + static var targetEnvironmentIsMacCatalyst: Bool { + #if targetEnvironment(macCatalyst) + return true + #else + return false + #endif + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewWelcomeScreen/NewWelcomeScreenView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewWelcomeScreen/NewWelcomeScreenView.swift new file mode 100644 index 00000000..ef5831dd --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewWelcomeScreen/NewWelcomeScreenView.swift @@ -0,0 +1,130 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI + + +protocol NewWelcomeScreenViewActionsProtocol: AnyObject { + func userWantsToLeaveWelcomeScreenAndHasAnOlvidProfile() async + func userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet() async +} + + +// MARK: - NewWelcomeScreenView + +struct NewWelcomeScreenView: View { + + let actions: NewWelcomeScreenViewActionsProtocol + + var body: some View { + VStack { + + // Vertically center the view, but not on iPhone + + if UIDevice.current.userInterfaceIdiom != .phone { + Spacer() + } + + NewOnboardingHeaderView( + title: "WELCOME_ONBOARDING_TITLE", + subtitle: "WELCOME_ONBOARDING_SUBTITLE") + .padding(.bottom, 35) + + VStack { + OnboardingSpecificPlainButton("ONBOARDING_BUTTON_TITLE_I_HAVE_AN_OLVID_PROFILE", action: { + Task { await actions.userWantsToLeaveWelcomeScreenAndHasAnOlvidProfile() } + }) + .padding(.bottom) + OnboardingSpecificPlainButton("ONBOARDING_BUTTON_TITLE_I_DO_NOT_HAVE_AN_OLVID_PROFILE", action: { + Task { await actions.userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet() } + }) + } + .padding(.horizontal) + + Spacer() + + } + } +} + + +// MARK: - Button used in this view only + +struct OnboardingSpecificPlainButton: View { + + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.colorScheme) var colorScheme + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + HStack { + Text(key) + .if(colorScheme == .light) { + $0.foregroundStyle(.black) + } + .multilineTextAlignment( .leading) + Spacer() + Image(systemIcon: .chevronRight) + .if(colorScheme == .light) { + $0.foregroundStyle(.black) + } + } + .padding(.horizontal) + .padding(.vertical, 24) + } + .overlay(content: { + RoundedRectangle(cornerRadius: 12) + .stroke(Color(UIColor.lightGray), lineWidth: 1) + }) + } + +} + + +// MARK: - Previews + +struct NewWelcomeScreenView_Previews: PreviewProvider { + + private final class ActionsForPreviews: NewWelcomeScreenViewActionsProtocol { + func userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet() async {} + func userWantsToLeaveWelcomeScreenAndHasAnOlvidProfile() async {} + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + NewWelcomeScreenView(actions: actions) + NewWelcomeScreenView(actions: actions) + .environment(\.locale, .init(identifier: "fr")) + NewWelcomeScreenView(actions: actions) + .previewLayout(.sizeThatFits) + .padding(.top, 20) + .padding(.leading, 20) + .padding(.trailing, 20) + .padding(.bottom, 40) + .frame(width: 443, height: 426) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewWelcomeScreen/NewWelcomeScreenViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewWelcomeScreen/NewWelcomeScreenViewController.swift new file mode 100644 index 00000000..3149d62e --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/NewWelcomeScreen/NewWelcomeScreenViewController.swift @@ -0,0 +1,111 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI + + +protocol NewWelcomeScreenViewControllerDelegate: AnyObject { + func userWantsToCloseOnboarding(controller: NewWelcomeScreenViewController) async + func userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet(controller: NewWelcomeScreenViewController) async + func userWantsToLeaveWelcomeScreenAndHasAnOlvidProfile(controller: NewWelcomeScreenViewController) async +} + + +final class NewWelcomeScreenViewController: UIHostingController, NewWelcomeScreenViewActionsProtocol { + + private weak var delegate: NewWelcomeScreenViewControllerDelegate? + + private let showCloseButton: Bool + + init(delegate: NewWelcomeScreenViewControllerDelegate, showCloseButton: Bool) { + self.showCloseButton = showCloseButton + let actions = NewWelcomeScreenViewActions() + let view = NewWelcomeScreenView(actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + if showCloseButton { + let handler: UIActionHandler = { [weak self] _ in self?.closeAction() } + let closeButton = UIBarButtonItem(systemItem: .close, primaryAction: .init(handler: handler)) + navigationItem.rightBarButtonItem = closeButton + } + } + + + private func closeAction() { + Task { [weak self] in + guard let self else { return } + await delegate?.userWantsToCloseOnboarding(controller: self) + } + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + // NewWelcomeScreenViewActionsProtocol + + func userWantsToLeaveWelcomeScreenAndHasAnOlvidProfile() async { + await delegate?.userWantsToLeaveWelcomeScreenAndHasAnOlvidProfile(controller: self) + } + + + func userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet() async { + await delegate?.userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet(controller: self) + } + +} + + + +private final class NewWelcomeScreenViewActions: NewWelcomeScreenViewActionsProtocol { + + weak var delegate: NewWelcomeScreenViewActionsProtocol? + + func userWantsToLeaveWelcomeScreenAndHasAnOlvidProfile() async { + await delegate?.userWantsToLeaveWelcomeScreenAndHasAnOlvidProfile() + } + + + func userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet() async { + await delegate?.userWantsToLeaveWelcomeScreenAndHasNoOlvidProfileYet() + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ObvOnboardingAssets.xcassets/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ObvOnboardingAssets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ObvOnboardingAssets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ObvOnboardingAssets.xcassets/badge.imageset/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ObvOnboardingAssets.xcassets/badge.imageset/Contents.json new file mode 100644 index 00000000..e9ed6778 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ObvOnboardingAssets.xcassets/badge.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "badge.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ObvOnboardingAssets.xcassets/badge.imageset/badge.pdf b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ObvOnboardingAssets.xcassets/badge.imageset/badge.pdf new file mode 100644 index 00000000..28de8fb2 Binary files /dev/null and b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/ObvOnboardingAssets.xcassets/badge.imageset/badge.pdf differ diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OnboardingFlowViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OnboardingFlowViewController.swift deleted file mode 100644 index b4533f46..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OnboardingFlowViewController.swift +++ /dev/null @@ -1,839 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import UIKit -import os.log -import ObvEngine -import ObvTypes -import AppAuth -import OlvidUtils -import AVFoundation -import ObvUICoreData - - -final class OnboardingFlowViewController: UIViewController, OlvidURLHandler, ObvErrorMaker, WelcomeScreenHostingControllerDelegate, DisplayNameChooserViewControllerDelegate, OwnedIdentityGeneratedHostingControllerDelegate, IdentityProviderValidationHostingViewControllerDelegate, ScannerHostingViewDelegate, IdentityProviderManualConfigurationHostingViewDelegate, BackupRestoreViewHostingControllerDelegate, BackupKeyTesterDelegate, BackupRestoringWaitingScreenViewControllerDelegate { - - private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: OnboardingFlowViewController.self)) - static let errorDomain = "OnboardingFlowViewController" - - private let obvEngine: ObvEngine - - private var flowNavigationController: UINavigationController? - private var internalState = OnboardingState.initial(externalOlvidURL: nil) - - private weak var appBackupDelegate: AppBackupDelegate? - - weak var delegate: OnboardingFlowViewControllerDelegate? - - private var ownedCryptoIdGeneratedOrRestoredDuringOnboarding: ObvCryptoId? - - // MARK: - Init and deinit - - init(obvEngine: ObvEngine, appBackupDelegate: AppBackupDelegate?) { - self.obvEngine = obvEngine - self.appBackupDelegate = appBackupDelegate - super.init(nibName: nil, bundle: nil) - } - - required init?(coder aDecoder: NSCoder) { fatalError("die") } - - deinit { - debugPrint("OnboardingFlowViewController deinit") - } - -} - - -// MARK: - View controller lifecycle - -extension OnboardingFlowViewController { - - override func viewDidLoad() { - super.viewDidLoad() - showFirstOnboardingScreen() - } - - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - Task { - await showNextOnboardingScreen(animated: true) - } - } - - /// Sets the appropriate internal state and show the most appropriate first view controller - private func showFirstOnboardingScreen() { - - var noOwnedIdentityExist = true - do { - let ownedIdentities = try PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: ObvStack.shared.viewContext) - noOwnedIdentityExist = ownedIdentities.isEmpty - } catch { - assertionFailure(error.localizedDescription) - // Continue anyway - } - - // If we find a keycloak configuration thanks to an MDM, we change the inital state. - // We do *not* use the usual way to handle an Olvid URL so as to distinguish between a keycloak configuration obtained through an MDM, and one that was scanned. - - if noOwnedIdentityExist, - ObvMessengerSettings.MDM.isConfiguredFromMDM, - let mdmConfigurationURI = ObvMessengerSettings.MDM.Configuration.uri, - let olvidURL = OlvidURL(urlRepresentation: mdmConfigurationURI) { - switch olvidURL.category { - case .configuration(serverAndAPIKey: _, betaConfiguration: _, keycloakConfig: let keycloakConfig): - if let keycloakConfig { - let currentExternalOlvidURL = internalState.externalOlvidURL - internalState = .keycloakConfigAvailable(keycloakConfig: keycloakConfig, isConfiguredFromMDM: true, externalOlvidURL: currentExternalOlvidURL) - } - default: - break - } - } else if !noOwnedIdentityExist { - internalState = .userWantsToChooseUnmanagedDetails(userIsCreatingHerFirstIdentity: false, externalOlvidURL: nil) - } - - // Set an appropriate first view controller to show during onboarding - - switch internalState { - case .keycloakConfigAvailable(let keycloakConfig, let isConfiguredFromMDM, _): - let identityProviderValidationHostingViewController = IdentityProviderValidationHostingViewController( - keycloakConfig: keycloakConfig, - isConfiguredFromMDM: isConfiguredFromMDM, - delegate: self) - flowNavigationController = ObvNavigationController(rootViewController: identityProviderValidationHostingViewController) - flowNavigationController!.setNavigationBarHidden(false, animated: false) - flowNavigationController!.navigationBar.prefersLargeTitles = true - displayContentController(content: flowNavigationController!) - case .userWantsToChooseUnmanagedDetails(let userIsCreatingHerFirstIdentity, _): - if !userIsCreatingHerFirstIdentity { - let displayNameChooserVC = DisplayNameChooserViewController(delegate: self) - flowNavigationController = ObvNavigationController(rootViewController: displayNameChooserVC) - displayContentController(content: flowNavigationController!) - } else { - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - flowNavigationController = ObvNavigationController(rootViewController: welcomeScreenVC) - flowNavigationController!.setNavigationBarHidden(false, animated: false) - flowNavigationController!.navigationBar.prefersLargeTitles = true - displayContentController(content: flowNavigationController!) - } - default: - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - flowNavigationController = ObvNavigationController(rootViewController: welcomeScreenVC) - flowNavigationController!.setNavigationBarHidden(false, animated: false) - flowNavigationController!.navigationBar.prefersLargeTitles = true - displayContentController(content: flowNavigationController!) - } - - } - - - @MainActor - private func showNextOnboardingScreen(animated: Bool) async { - - if flowNavigationController == nil { - assertionFailure() - switch internalState { - case .userWantsToChooseUnmanagedDetails(userIsCreatingHerFirstIdentity: let userIsCreatingHerFirstIdentity, externalOlvidURL: _): - if !userIsCreatingHerFirstIdentity { - let displayNameChooserVC = DisplayNameChooserViewController(delegate: self) - flowNavigationController = ObvNavigationController(rootViewController: displayNameChooserVC) - displayContentController(content: flowNavigationController!) - } - default: - break - } - if flowNavigationController == nil { - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - flowNavigationController = ObvNavigationController(rootViewController: welcomeScreenVC) - flowNavigationController!.setNavigationBarHidden(false, animated: false) - flowNavigationController!.navigationBar.prefersLargeTitles = true - displayContentController(content: flowNavigationController!) - } - } - - guard let flowNavigationController else { assertionFailure(); return } - - // We defer the internal state's external olvid URL transmission to the view controllers of the navigation until they are all set. - - defer { - for vc in flowNavigationController.viewControllers.compactMap({ $0 as? CanShowInformationAboutExternalOlvidURL }) { - vc.showInformationAboutOlvidURL(internalState.externalOlvidURL) - } - } - - // Setup the navigation view controllers given the current internal state - - switch internalState { - case .initial: - if let welcomeScreenVC = flowNavigationController.viewControllers.first(where: { $0 is WelcomeScreenHostingController }) { - flowNavigationController.popToViewController(welcomeScreenVC, animated: animated) - return - } else { - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - flowNavigationController.setViewControllers([welcomeScreenVC], animated: animated) - return - } - case .userWantsToRestoreBackup: - let backupRestoreViewVC = BackupRestoreViewHostingController(delegate: self) - if flowNavigationController.viewControllers.count == 1 && (flowNavigationController.viewControllers.first is WelcomeScreenHostingController || flowNavigationController.viewControllers.first is IdentityProviderValidationHostingViewController) { - flowNavigationController.pushViewController(backupRestoreViewVC, animated: animated) - return - } else { - assertionFailure() - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - flowNavigationController.setViewControllers([welcomeScreenVC, backupRestoreViewVC], animated: animated) - return - } - case .userSelectedBackupFileToRestore(backupFileURL: let backupFileURL, _): - let backupKeyVerifierViewHostingController = BackupKeyVerifierViewHostingController(obvEngine: obvEngine, backupFileURL: backupFileURL, dismissAction: {}, dismissThenGenerateNewBackupKeyAction: {}) - backupKeyVerifierViewHostingController.delegate = self - if flowNavigationController.viewControllers.last is BackupRestoreViewHostingController { - flowNavigationController.pushViewController(backupKeyVerifierViewHostingController, animated: animated) - return - } else { - assertionFailure() - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - flowNavigationController.setViewControllers([welcomeScreenVC, backupKeyVerifierViewHostingController], animated: animated) - return - } - case .userWantsToRestoreBackupNow(backupRequestUuid: let backupRequestUuid, _): - let backupRestoringWaitingScreenVC = BackupRestoringWaitingScreenHostingController(backupRequestUuid: backupRequestUuid, obvEngine: obvEngine) - backupRestoringWaitingScreenVC.delegate = self - assert(appBackupDelegate != nil) - backupRestoringWaitingScreenVC.appBackupDelegate = appBackupDelegate - if flowNavigationController.viewControllers.last is BackupKeyVerifierViewHostingController { - flowNavigationController.pushViewController(backupRestoringWaitingScreenVC, animated: animated) - return - } else { - assertionFailure() - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - flowNavigationController.setViewControllers([welcomeScreenVC, backupRestoringWaitingScreenVC], animated: animated) - return - } - case .userWantsToManuallyConfigureTheIdentityProvider: - let identityProviderManualConfigurationHostingView = IdentityProviderManualConfigurationHostingView(delegate: self) - if flowNavigationController.viewControllers.count == 1 && flowNavigationController.viewControllers.first is WelcomeScreenHostingController { - flowNavigationController.pushViewController(identityProviderManualConfigurationHostingView, animated: animated) - return - } else { - assertionFailure() - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - flowNavigationController.setViewControllers([welcomeScreenVC, identityProviderManualConfigurationHostingView], animated: animated) - return - } - case .userWantsToChooseUnmanagedDetails(userIsCreatingHerFirstIdentity: let userIsCreatingHerFirstIdentity, _): - if userIsCreatingHerFirstIdentity { - if flowNavigationController.viewControllers.count == 1 && flowNavigationController.viewControllers.first is WelcomeScreenHostingController { - let displayNameChooserVC = DisplayNameChooserViewController(delegate: self) - flowNavigationController.pushViewController(displayNameChooserVC, animated: animated) - return - } else if flowNavigationController.viewControllers.last is DisplayNameChooserViewController { - // Nothing to do - return - } else { - assertionFailure() - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - let displayNameChooserVC = DisplayNameChooserViewController(delegate: self) - flowNavigationController.setViewControllers([welcomeScreenVC, displayNameChooserVC], animated: animated) - return - } - } else { - if flowNavigationController.viewControllers.last is DisplayNameChooserViewController { - // Nothing to do - return - } else { - assertionFailure() - let displayNameChooserVC = DisplayNameChooserViewController(delegate: self) - flowNavigationController.setViewControllers([displayNameChooserVC], animated: animated) - return - } - } - case .keycloakConfigAvailable(keycloakConfig: let keycloakConfig, isConfiguredFromMDM: let isConfiguredFromMDM, _): - let identityProviderValidationHostingViewController = IdentityProviderValidationHostingViewController( - keycloakConfig: keycloakConfig, - isConfiguredFromMDM: isConfiguredFromMDM, - delegate: self) - if isConfiguredFromMDM { - if flowNavigationController.viewControllers.last is IdentityProviderValidationHostingViewController { - // Nothing left to do - return - } else { - assertionFailure() - flowNavigationController.setViewControllers([identityProviderValidationHostingViewController], animated: animated) - flowNavigationController.setNavigationBarHidden(false, animated: false) - flowNavigationController.navigationBar.prefersLargeTitles = true - return - } - } else { - if flowNavigationController.viewControllers.last is WelcomeScreenHostingController || flowNavigationController.viewControllers.last is IdentityProviderManualConfigurationHostingView { - flowNavigationController.pushViewController(identityProviderValidationHostingViewController, animated: animated) - return - } else { - assertionFailure() - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - flowNavigationController.setViewControllers([welcomeScreenVC, identityProviderValidationHostingViewController], animated: animated) - return - } - } - case .keycloakUserDetailsAndStuffAvailable(let keycloakUserDetailsAndStuff, let keycloakServerRevocationsAndStuff, let keycloakState, _): - if flowNavigationController.viewControllers.last is IdentityProviderValidationHostingViewController { - let displayNameChooserVC = DisplayNameChooserViewController(keycloakDetails: (keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff), keycloakState: keycloakState, delegate: self) - flowNavigationController.pushViewController(displayNameChooserVC, animated: animated) - return - } else { - assertionFailure() - let welcomeScreenVC = WelcomeScreenHostingController(delegate: self) - let displayNameChooserVC = DisplayNameChooserViewController(keycloakDetails: (keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff), keycloakState: keycloakState, delegate: self) - flowNavigationController.setViewControllers([welcomeScreenVC, displayNameChooserVC], animated: animated) - return - } - case .shouldRequestPermission(category: let category, _): - let vc = AutorisationRequesterHostingController(autorisationCategory: category, delegate: self) - flowNavigationController.pushViewController(vc, animated: true) - vc.navigationItem.setHidesBackButton(true, animated: false) - vc.navigationController?.setNavigationBarHidden(true, animated: false) - case .finalize: - if flowNavigationController.viewControllers.last is OwnedIdentityGeneratedHostingController { - // Nothing to do - } else { - let vc = OwnedIdentityGeneratedHostingController(delegate: self) - vc.navigationItem.setHidesBackButton(true, animated: false) - vc.navigationController?.setNavigationBarHidden(true, animated: false) - flowNavigationController.pushViewController(vc, animated: true) - } - } - - } - -} - -// MARK: - DisplayNameChooserViewControllerDelegate - -extension OnboardingFlowViewController { - - @MainActor - func userDidSetUnmanagedDetails(ownedIdentityCoreDetails: ObvIdentityCoreDetails, photoURL: URL?) async { - guard let serverAndAPIKey = ObvMessengerConstants.defaultServerAndAPIKey else { assertionFailure(); return } - let currentDetails = ObvIdentityDetails(coreDetails: ownedIdentityCoreDetails, photoURL: photoURL) - do { - ownedCryptoIdGeneratedOrRestoredDuringOnboarding = try await obvEngine.generateOwnedIdentity( - withApiKey: serverAndAPIKey.apiKey, - onServerURL: serverAndAPIKey.server, - with: currentDetails, - keycloakState: nil) - } catch { - os_log("Could not generate owned identity: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - do { - try await requestSyncAppDatabasesWithEngine() - } catch { - os_log("Could not sync engine and app: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - - await requestNextAutorisationPermissionAfterCreatingTheOwnedIdentity() - - } - - - @MainActor - private func requestNextAutorisationPermissionAfterCreatingTheOwnedIdentity() async { - let currentExternalOlvidURL = internalState.externalOlvidURL - if await requestingAutorisationIsNecessary(for: .localNotifications) { - internalState = .shouldRequestPermission(category: .localNotifications, externalOlvidURL: currentExternalOlvidURL) - } else if await requestingAutorisationIsNecessary(for: .recordPermission) { - internalState = .shouldRequestPermission(category: .recordPermission, externalOlvidURL: currentExternalOlvidURL) - } else { - internalState = .finalize(externalOlvidURL: currentExternalOlvidURL) - } - await showNextOnboardingScreen(animated: true) - } - - - @MainActor - func userDidAcceptedKeycloakDetails(keycloakDetails: (keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff), keycloakState: ObvKeycloakState, photoURL: URL?) async { - - showHUD(type: .spinner) - defer { hideHUD() } - - // We are dealing with an identity server. If there was no previous olvid identity for this user, then we can safely generate a new one. If there was a previous identity, we must make sure that the server allows revocation before trying to create a new identity. - - guard keycloakDetails.keycloakUserDetailsAndStuff.identity == nil || keycloakDetails.keycloakServerRevocationsAndStuff.revocationAllowed else { - // If this happens, there is an UI bug. - assertionFailure() - return - } - - // The following call discards the signed details. This is intentional. The reason is that these signed details, if they exist, contain an old identity that will be revoked. We do not want to store this identity. - - guard let coreDetails = try? keycloakDetails.keycloakUserDetailsAndStuff.signedUserDetails.userDetails.getCoreDetails() else { - assertionFailure() - return - } - - // We use the hardcoded API here, it will be updated during the keycloak registration - - let currentDetails = ObvIdentityDetails(coreDetails: coreDetails, photoURL: photoURL) - guard let apiKey = ObvMessengerConstants.hardcodedAPIKey else { hideHUD(); assertionFailure(); return } - - // Request the generation of the owned identity and sync it with the app - - let ownedCryptoIdentity: ObvCryptoId - do { - ownedCryptoIdentity = try await obvEngine.generateOwnedIdentity(withApiKey: apiKey, - onServerURL: keycloakDetails.keycloakUserDetailsAndStuff.server, - with: currentDetails, - keycloakState: keycloakState) - ownedCryptoIdGeneratedOrRestoredDuringOnboarding = ownedCryptoIdentity - } catch { - os_log("Could not generate owned identity: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - - do { - try await requestSyncAppDatabasesWithEngine() - } catch { - os_log("Could not sync engine and app: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - - // The owned identity is created, we register it with the keycloak manager - - await KeycloakManagerSingleton.shared.registerKeycloakManagedOwnedIdentity(ownedCryptoId: ownedCryptoIdentity, firstKeycloakBinding: true) - do { - try await KeycloakManagerSingleton.shared.uploadOwnIdentity(ownedCryptoId: ownedCryptoIdentity) - } catch { - let alert = UIAlertController(title: Strings.dialogTitleIdentityProviderError, - message: Strings.dialogMessageFailedToUploadIdentityToKeycloak, - preferredStyle: .alert) - alert.addAction(UIAlertAction(title: CommonString.Word.Ok, style: .default)) - present(alert, animated: true) - return - } - - // We are done, we can proceed with the next screen - - await requestNextAutorisationPermissionAfterCreatingTheOwnedIdentity() - - } - - - private func requestSyncAppDatabasesWithEngine() async throws { - showHUD(type: .spinner) - try await withCheckedThrowingContinuation { [weak self] (continuation: CheckedContinuation) in - ObvMessengerInternalNotification.requestSyncAppDatabasesWithEngine { result in - DispatchQueue.main.async { - self?.hideHUD() - } - switch result { - case .failure(let error): - continuation.resume(throwing: error) - case .success: - continuation.resume() - } - }.postOnDispatchQueue() - } - } - -} - - -// MARK: - OwnedIdentityGeneratedHostingControllerDelegate - -extension OnboardingFlowViewController { - - func userWantsToStartUsingOlvid() async { - assert(ownedCryptoIdGeneratedOrRestoredDuringOnboarding != nil) - await delegate?.onboardingIsFinished(ownedCryptoIdGeneratedDuringOnboarding: ownedCryptoIdGeneratedOrRestoredDuringOnboarding, - olvidURLScannedDuringOnboarding: internalState.externalOlvidURL) - } - -} - - -// MARK: - AutorisationRequesterHostingControllerDelegate - -extension OnboardingFlowViewController: AutorisationRequesterHostingControllerDelegate { - - @MainActor - func requestAutorisation(now: Bool, for autorisationCategory: AutorisationRequesterHostingController.AutorisationCategory) async { - assert(Thread.isMainThread) - let currentExternalOlvidURL = internalState.externalOlvidURL - switch autorisationCategory { - case .localNotifications: - if now { - let center = UNUserNotificationCenter.current() - do { - try await center.requestAuthorization(options: [.alert, .sound, .badge]) - } catch { - os_log("Could not request authorization for notifications: %@", log: Self.log, type: .error, error.localizedDescription) - } - } - if await requestingAutorisationIsNecessary(for: .recordPermission) { - internalState = .shouldRequestPermission(category: .recordPermission, externalOlvidURL: currentExternalOlvidURL) - } else { - internalState = .finalize(externalOlvidURL: currentExternalOlvidURL) - } - case .recordPermission: - if now { - let granted = await AVAudioSession.sharedInstance().requestRecordPermission() - os_log("User granted access to audio: %@", log: Self.log, type: .error, String(describing: granted)) - } - internalState = .finalize(externalOlvidURL: currentExternalOlvidURL) - } - await showNextOnboardingScreen(animated: true) - } - - - @MainActor - private func requestingAutorisationIsNecessary(for autorisationCategory: AutorisationRequesterHostingController.AutorisationCategory) async -> Bool { - switch autorisationCategory { - case .localNotifications: - let center = UNUserNotificationCenter.current() - let authorizationStatus = await center.notificationSettings().authorizationStatus - switch authorizationStatus { - case .notDetermined, .provisional, .ephemeral: - return true - case .denied, .authorized: - return false - @unknown default: - assertionFailure() - return true - } - case .recordPermission: - let recordPermission = AVAudioSession.sharedInstance().recordPermission - switch recordPermission { - case .undetermined: - return true - case .denied, .granted: - return false - @unknown default: - return true - } - } - } - -} - - -// MARK: - WelcomeScreenHostingControllerDelegate - -extension OnboardingFlowViewController { - - /// Call from the first view controller (`WelcomeScreenHostingController`) when the user chooses to scan a QR code. - func userWantsWantsToScanQRCode() { - assert(Thread.isMainThread) - let vc = ScannerHostingView(buttonType: .back, delegate: self) - let nav = UINavigationController(rootViewController: vc) - // Configure the ScannerHostingView properly for the navigation controller - vc.title = NSLocalizedString("CONFIGURATION_SCAN", comment: "") - if #available(iOS 14, *) { - let ellipsisButton = getConfiguredEllipsisCircleRightBarButtonItem() - vc.navigationItem.rightBarButtonItem = ellipsisButton - } else { - let ellipsisButton = getConfiguredEllipsisCircleRightBarButtonItem(selector: #selector(ellipsisButtonTappedOnScannerHostingView)) - vc.navigationItem.rightBarButtonItem = ellipsisButton - } - flowNavigationController?.present(nav, animated: true) - } - - - func userWantsToClearExternalOlvidURL() async { - internalState = internalState.addingExternalOlvidURL(nil) - await showNextOnboardingScreen(animated: true) - } - - - @available(iOS, introduced: 14.0) - private func getConfiguredEllipsisCircleRightBarButtonItem() -> UIBarButtonItem { - let menuElements: [UIMenuElement] = [ - UIAction(title: Strings.pasteConfigurationLink, - image: UIImage(systemIcon: .docOnClipboardFill)) { [weak self] _ in - self?.presentedViewController?.dismiss(animated: true) { - self?.userWantsToPasteConfigurationURL() - } - }, - UIAction(title: Strings.manualConfiguration, - image: UIImage(systemIcon: .serverRack)) { [weak self] _ in - self?.presentedViewController?.dismiss(animated: true) { - Task { await self?.userChooseToUseManualIdentityProvider() } - } - }, - ] - let menu = UIMenu(title: "", children: menuElements) - let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 20.0, weight: .bold) - let ellipsisImage = UIImage(systemIcon: .ellipsisCircle, withConfiguration: symbolConfiguration) - let ellipsisButton = UIBarButtonItem( - title: "Menu", - image: ellipsisImage, - primaryAction: nil, - menu: menu) - return ellipsisButton - } - - - @available(iOS, introduced: 13.0, deprecated: 14.0, message: "Used because iOS 13 does not support UIMenu on UIBarButtonItem") - func getConfiguredEllipsisCircleRightBarButtonItem(selector: Selector) -> UIBarButtonItem { - let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 20.0, weight: .bold) - let ellipsisImage = UIImage(systemIcon: .ellipsisCircle, withConfiguration: symbolConfiguration) - let ellipsisButton = UIBarButtonItem(image: ellipsisImage, style: UIBarButtonItem.Style.plain, target: self, action: selector) - return ellipsisButton - } - - - @available(iOS, introduced: 13.0, deprecated: 14.0, message: "Used because iOS 13 does not support UIMenu on UIBarButtonItem") - @objc private func ellipsisButtonTappedOnScannerHostingView() { - assert(Thread.isMainThread) - let alert = UIAlertController(title: CommonString.Word.Advanced, message: nil, preferredStyle: UIDevice.current.actionSheetIfPhoneAndAlertOtherwise) - alert.addAction(UIAlertAction(title: Strings.pasteLink, style: .default, handler: { [weak self] _ in self?.userWantsToPasteConfigurationURL() })) - alert.addAction(UIAlertAction(title: Strings.manualConfiguration, style: .default, handler: { [weak self] _ in Task { await self?.userChooseToUseManualIdentityProvider() } })) - alert.addAction(UIAlertAction(title: CommonString.Word.Cancel, style: .cancel)) - present(alert, animated: true) - } - - - private func userWantsToPasteConfigurationURL() { - guard let pastedString = UIPasteboard.general.string, - let url = URL(string: pastedString), - let olvidURL = OlvidURL(urlRepresentation: url) else { - ObvMessengerInternalNotification.pastedStringIsNotValidOlvidURL - .postOnDispatchQueue() - return - } - Task { await NewAppStateManager.shared.handleOlvidURL(olvidURL) } - } - - - @MainActor - func userWantsToContinueAsNewUser() async { - var userIsCreatingHerFirstIdentity = true - do { - let ownedIdentities = try PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: ObvStack.shared.viewContext) - userIsCreatingHerFirstIdentity = ownedIdentities.isEmpty - } catch { - assertionFailure(error.localizedDescription) - // Continue anyway - } - let currentExternalOlvidURL = internalState.externalOlvidURL - self.internalState = .userWantsToChooseUnmanagedDetails(userIsCreatingHerFirstIdentity: userIsCreatingHerFirstIdentity, externalOlvidURL: currentExternalOlvidURL) - await showNextOnboardingScreen(animated: true) - } - - - @MainActor - func userWantsToRestoreBackup() async { - let currentExternalOlvidURL = internalState.externalOlvidURL - internalState = .userWantsToRestoreBackup(externalOlvidURL: currentExternalOlvidURL) - await showNextOnboardingScreen(animated: true) - } - - - @MainActor - private func userChooseToUseManualIdentityProvider() async { - let currentExternalOlvidURL = internalState.externalOlvidURL - internalState = .userWantsToManuallyConfigureTheIdentityProvider(externalOlvidURL: currentExternalOlvidURL) - await showNextOnboardingScreen(animated: true) - } - -} - - - -// MARK: - IdentityProviderManualConfigurationHostingViewDelegate - -extension OnboardingFlowViewController { - - @MainActor - func userWantsToValidateManualKeycloakConfiguration(keycloakConfig: KeycloakConfiguration) async { - let currentExternalOlvidURL = internalState.externalOlvidURL - internalState = .keycloakConfigAvailable(keycloakConfig: keycloakConfig, isConfiguredFromMDM: false, externalOlvidURL: currentExternalOlvidURL) - await showNextOnboardingScreen(animated: true) - } - -} - - - -// MARK: - IdentityProviderValidationHostingViewControllerDelegate - -extension OnboardingFlowViewController { - - func newKeycloakUserDetailsAndStuff(_ keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff, keycloakState: ObvKeycloakState) async { - let currentExternalOlvidURL = internalState.externalOlvidURL - internalState = .keycloakUserDetailsAndStuffAvailable(keycloakUserDetailsAndStuff: keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: keycloakServerRevocationsAndStuff, keycloakState: keycloakState, externalOlvidURL: currentExternalOlvidURL) - await showNextOnboardingScreen(animated: true) - } - -} - - - -// MARK: - BackupRestoreViewHostingControllerDelegate - -extension OnboardingFlowViewController { - - @MainActor - func proceedWithBackupFile(atUrl url: URL) async { - assert(Thread.isMainThread) - let currentExternalOlvidURL = internalState.externalOlvidURL - internalState = .userSelectedBackupFileToRestore(backupFileURL: url, externalOlvidURL: currentExternalOlvidURL) - await showNextOnboardingScreen(animated: true) - } - -} - - -// MARK: - ScannerHostingViewDelegate - -extension OnboardingFlowViewController { - - func scannerViewActionButtonWasTapped() { - flowNavigationController?.presentedViewController?.dismiss(animated: true) - } - - - func qrCodeWasScanned(olvidURL: OlvidURL) { - flowNavigationController?.presentedViewController?.dismiss(animated: true) - Task { await NewAppStateManager.shared.handleOlvidURL(olvidURL) } - } - -} - - -// MARK: - BackupKeyTesterDelegate - -extension OnboardingFlowViewController { - - @MainActor - func userWantsToRestoreBackupIdentifiedByRequestUuid(_ backupRequestUuid: UUID) async { - let currentExternalOlvidURL = internalState.externalOlvidURL - internalState = .userWantsToRestoreBackupNow(backupRequestUuid: backupRequestUuid, externalOlvidURL: currentExternalOlvidURL) - await showNextOnboardingScreen(animated: true) - } - -} - - -// MARK: - BackupRestoringWaitingScreenViewControllerDelegate - -extension OnboardingFlowViewController { - - @MainActor - func userWantsToStartOnboardingFromScratch() async { - assert(Thread.isMainThread) - let currentExternalOlvidURL = internalState.externalOlvidURL - internalState = .initial(externalOlvidURL: currentExternalOlvidURL) - await showNextOnboardingScreen(animated: true) - } - - - /// Called after a backup is successfully restored. In that case, we know that app database is already in sync with the one within the engine. - @MainActor - func ownedIdentityRestoredFromBackupRestore() async { - ownedCryptoIdGeneratedOrRestoredDuringOnboarding = await getRandomExistingNonHiddenOwnedCryptoId() - assert(ownedCryptoIdGeneratedOrRestoredDuringOnboarding != nil) - await requestNextAutorisationPermissionAfterCreatingTheOwnedIdentity() - } - - - @MainActor private func getRandomExistingNonHiddenOwnedCryptoId() async -> ObvCryptoId? { - guard let ownedIdentities = try? PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: ObvStack.shared.viewContext) else { assertionFailure(); return nil } - return ownedIdentities.first?.cryptoId - } - -} - - -// MARK: - OlvidURLHandler - -extension OnboardingFlowViewController { - - @MainActor - func handleOlvidURL(_ olvidURL: OlvidURL) { - assert(Thread.isMainThread) - let currentExternalOlvidURL = internalState.externalOlvidURL - switch olvidURL.category { - case .configuration(serverAndAPIKey: _, betaConfiguration: _, keycloakConfig: let _keycloakConfig): - if let keycloakConfig = _keycloakConfig { - internalState = .keycloakConfigAvailable(keycloakConfig: keycloakConfig, isConfiguredFromMDM: false, externalOlvidURL: currentExternalOlvidURL) - Task { await showNextOnboardingScreen(animated: true) } - } else { - internalState = internalState.addingExternalOlvidURL(olvidURL) - Task { await showNextOnboardingScreen(animated: true) } - } - case .invitation: - internalState = internalState.addingExternalOlvidURL(olvidURL) - Task { await showNextOnboardingScreen(animated: true) } - case .mutualScan: - assertionFailure("Cannot happen") - case .openIdRedirect: - Task { - do { - _ = try await KeycloakManagerSingleton.shared.resumeExternalUserAgentFlow(with: olvidURL.url) - os_log("Successfully resumed the external user agent flow", log: Self.log, type: .info) - } catch { - os_log("Failed to resume external user agent flow: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - } - } - } - -} - - -extension OnboardingFlowViewController { - - struct Strings { - - static let qrCodeScannerTitle = NSLocalizedString("SCAN_QR_CODE_CONFIGURATION", comment: "View controller title") - static let qrCodeScannerExplanation = NSLocalizedString("Please scan an Olvid configuation QR code.", comment: "") - static let initialConfiguratorVCTitle = NSLocalizedString("Welcome", comment: "View controller title") - static let localNotificationsSubscriberVCTitle = NSLocalizedString("Almost there!", comment: "View controller title") - static let ownedIdentityGeneratedVCTitle = NSLocalizedString("Congratulations!", comment: "View controller title") - - struct NotServerConfigurationAlert { - static let title = NSLocalizedString("Bad QR code", comment: "Alert title") - static let message = NSLocalizedString("This QR code does not allow to configure Olvid. Please use an Olvid configuration QR code.", comment: "Alert message") - } - - struct BadServer { - static let title = NSLocalizedString("Bad server", comment: "Alert title") - static let message = NSLocalizedString("The imported API Key seems to be for a different server.", comment: "Alert message") - } - - static let pasteLink = NSLocalizedString("PASTE_CONFIGURATION_LINK", comment: "") - static let enterAPIKey = NSLocalizedString("ENTER_API_KEY", comment: "") - static let manualConfiguration = NSLocalizedString("MANUAL_CONFIGURATION", comment: "") - - static let dialogTitleIdentityProviderError = NSLocalizedString("DIALOG_TITLE_IDENTITY_PROVIDER_ERROR", comment: "") - static let dialogMessageFailedToUploadIdentityToKeycloak = NSLocalizedString("DIALOG_MESSAGE_FAILED_TO_UPLOAD_IDENTITY_TO_KEYCLOAK", comment: "") - - static let pasteConfigurationLink = NSLocalizedString("PASTE_CONFIGURATION_LINK", comment: "") - - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OnboardingFlowViewControllerDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OnboardingFlowViewControllerDelegate.swift deleted file mode 100644 index d5680b4a..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OnboardingFlowViewControllerDelegate.swift +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import ObvTypes -import ObvEngine - -protocol OnboardingFlowViewControllerDelegate: AnyObject { - func onboardingIsFinished(ownedCryptoIdGeneratedDuringOnboarding: ObvCryptoId?, olvidURLScannedDuringOnboarding: OlvidURL?) async -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OnboardingInternalState.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OnboardingInternalState.swift deleted file mode 100644 index 885f4168..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OnboardingInternalState.swift +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import ObvTypes - - -enum OnboardingState { - case initial(externalOlvidURL: OlvidURL?) - case userWantsToChooseUnmanagedDetails(userIsCreatingHerFirstIdentity: Bool, externalOlvidURL: OlvidURL?) - case userWantsToManuallyConfigureTheIdentityProvider(externalOlvidURL: OlvidURL?) - case userWantsToRestoreBackup(externalOlvidURL: OlvidURL?) - case userSelectedBackupFileToRestore(backupFileURL: URL, externalOlvidURL: OlvidURL?) - case userWantsToRestoreBackupNow(backupRequestUuid: UUID, externalOlvidURL: OlvidURL?) - case keycloakConfigAvailable(keycloakConfig: KeycloakConfiguration, isConfiguredFromMDM: Bool, externalOlvidURL: OlvidURL?) - case keycloakUserDetailsAndStuffAvailable(keycloakUserDetailsAndStuff: KeycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: KeycloakServerRevocationsAndStuff, keycloakState: ObvKeycloakState, externalOlvidURL: OlvidURL?) - case shouldRequestPermission(category: AutorisationRequesterHostingController.AutorisationCategory, externalOlvidURL: OlvidURL?) - case finalize(externalOlvidURL: OlvidURL?) - - var externalOlvidURL: OlvidURL? { - switch self { - case .initial(let externalOlvidURL): - return externalOlvidURL - case .userWantsToChooseUnmanagedDetails(_, let externalOlvidURL): - return externalOlvidURL - case .userWantsToManuallyConfigureTheIdentityProvider(let externalOlvidURL): - return externalOlvidURL - case .userWantsToRestoreBackup(let externalOlvidURL): - return externalOlvidURL - case .userSelectedBackupFileToRestore(_, let externalOlvidURL): - return externalOlvidURL - case .userWantsToRestoreBackupNow(_, let externalOlvidURL): - return externalOlvidURL - case .keycloakConfigAvailable(_, _, let externalOlvidURL): - return externalOlvidURL - case .keycloakUserDetailsAndStuffAvailable(_, _, _, let externalOlvidURL): - return externalOlvidURL - case .shouldRequestPermission(_, let externalOlvidURL): - return externalOlvidURL - case .finalize(let externalOlvidURL): - return externalOlvidURL - } - } - - /// Returns a copy of the current `OnboardingState`, after setting its `externalOlvidURL`. - func addingExternalOlvidURL(_ externalOlvidURL: OlvidURL?) -> OnboardingState { - switch self { - case .initial: - return .initial(externalOlvidURL: externalOlvidURL) - case .userWantsToChooseUnmanagedDetails(let userIsCreatingHerFirstIdentity, _): - return .userWantsToChooseUnmanagedDetails(userIsCreatingHerFirstIdentity: userIsCreatingHerFirstIdentity, externalOlvidURL: externalOlvidURL) - case .userWantsToManuallyConfigureTheIdentityProvider: - return .userWantsToManuallyConfigureTheIdentityProvider(externalOlvidURL: externalOlvidURL) - case .userWantsToRestoreBackup: - return .userWantsToRestoreBackup(externalOlvidURL: externalOlvidURL) - case .userSelectedBackupFileToRestore(let backupFileURL, _): - return .userSelectedBackupFileToRestore(backupFileURL: backupFileURL, externalOlvidURL: externalOlvidURL) - case .userWantsToRestoreBackupNow(let backupRequestUuid, _): - return .userWantsToRestoreBackupNow(backupRequestUuid: backupRequestUuid, externalOlvidURL: externalOlvidURL) - case .keycloakConfigAvailable(let keycloakConfig, let isConfiguredFromMDM, _): - return .keycloakConfigAvailable(keycloakConfig: keycloakConfig, isConfiguredFromMDM: isConfiguredFromMDM, externalOlvidURL: externalOlvidURL) - case .keycloakUserDetailsAndStuffAvailable(let keycloakUserDetailsAndStuff, let keycloakServerRevocationsAndStuff, let keycloakState, _): - return .keycloakUserDetailsAndStuffAvailable(keycloakUserDetailsAndStuff: keycloakUserDetailsAndStuff, keycloakServerRevocationsAndStuff: keycloakServerRevocationsAndStuff, keycloakState: keycloakState, externalOlvidURL: externalOlvidURL) - case .shouldRequestPermission(let category, _): - return .shouldRequestPermission(category: category, externalOlvidURL: externalOlvidURL) - case .finalize(let externalOlvidURL): - return .finalize(externalOlvidURL: externalOlvidURL) - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OwnedIdentityGeneratedViewController/OwnedIdentityGeneratedView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OwnedIdentityGeneratedViewController/OwnedIdentityGeneratedView.swift deleted file mode 100644 index 8e348d1c..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/OwnedIdentityGeneratedViewController/OwnedIdentityGeneratedView.swift +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import SwiftUI - -protocol OwnedIdentityGeneratedHostingControllerDelegate: AnyObject { - func userWantsToStartUsingOlvid() async -} - -final class OwnedIdentityGeneratedHostingController: UIHostingController { - - init(delegate: OwnedIdentityGeneratedHostingControllerDelegate) { - let view = OwnedIdentityGeneratedView(startUsingOlvidAction: { [weak delegate] in - Task { await delegate?.userWantsToStartUsingOlvid() } - }) - super.init(rootView: view) - } - - @objc required dynamic init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - -} - -struct OwnedIdentityGeneratedView: View { - - let startUsingOlvidAction: () -> Void - - var body: some View { - - ZStack { - Color(AppTheme.shared.colorScheme.systemBackground) - .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) - .edgesIgnoringSafeArea(.all) - VStack(alignment: .leading, spacing: 0) { - HStack { - Text("Congratulations!") - .font(.largeTitle) - .fontWeight(.bold) - .padding(.horizontal) - .padding(.top) - Spacer() - } - ScrollView { - VStack(spacing: 0) { - HStack { Spacer() } - ObvCardView { - Text("OWNED_IDENTITY_GENERATED_EXPLANATION") - .frame(minWidth: .none, - maxWidth: .infinity, - minHeight: .none, - idealHeight: .none, - maxHeight: .none, - alignment: .center) - .font(.body) - } - .padding(.bottom) - OlvidButton(style: .blue, title: Text("START_USING_OLVID")) { - startUsingOlvidAction() - } - Spacer() - } - .padding(.horizontal) - .padding(.top) - } - Spacer() - } - } - // Although the back button is hidden at the VC level, this is required - .navigationBarBackButtonHidden(true) - } -} - -struct OwnedIdentityGeneratedView_Previews: PreviewProvider { - static var previews: some View { - Group { - OwnedIdentityGeneratedView(startUsingOlvidAction: {}) - .environment(\.colorScheme, .dark) - OwnedIdentityGeneratedView(startUsingOlvidAction: {}) - .environment(\.locale, .init(identifier: "fr")) - OwnedIdentityGeneratedView(startUsingOlvidAction: {}) - .previewDevice(PreviewDevice(rawValue: "iPhone8,4")) - OwnedIdentityGeneratedView(startUsingOlvidAction: {}) - .environment(\.locale, .init(identifier: "fr")) - .environment(\.colorScheme, .dark) - .previewDevice(PreviewDevice(rawValue: "iPhone8,4")) - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnBoth/OwnedIdentityTransferFailure/OwnedIdentityTransferFailureView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnBoth/OwnedIdentityTransferFailure/OwnedIdentityTransferFailureView.swift new file mode 100644 index 00000000..24acc850 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnBoth/OwnedIdentityTransferFailure/OwnedIdentityTransferFailureView.swift @@ -0,0 +1,163 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import MessageUI + + + +protocol OwnedIdentityTransferFailureViewActionsProtocol: AnyObject { + func userWantsToSendErrorByEmail(errorMessage: String) async +} + + +struct OwnedIdentityTransferFailureView: View { + + let actions: OwnedIdentityTransferFailureViewActionsProtocol + let model: Model + let canSendMail: Bool + + struct Model { + let error: Error + } + + + private static func stringForError(_ error: Error) -> String { + let fullOlvidVersion = ObvMessengerConstants.fullVersion + let preciseModel = UIDevice.current.preciseModel + let systemName = UIDevice.current.systemName + let systemVersion = UIDevice.current.systemVersion + let msg = [ + "Olvid version: \(fullOlvidVersion)", + "Device model: \(preciseModel)", + "System: \(systemName) \(systemVersion)", + "Error messages:\n\(error.localizedDescription)", + ] + return msg.joined(separator: "\n") + } + + + private func userWantsToSendErrorByEmail() { + Task { await actions.userWantsToSendErrorByEmail(errorMessage: Self.stringForError(model.error) ) } + } + + var body: some View { + VStack { + ScrollView { + VStack { + + NewOnboardingHeaderView( + title: "OWNED_IDENTITY_TRANSFER_FAILED_TITLE", + subtitle: "OWNED_IDENTITY_TRANSFER_FAILED_SUBTITLE") + + Image(systemIcon: .xmarkCircleFill) + .font(.title) + .foregroundStyle(Color(UIColor.systemRed)) + .padding(.vertical) + + HStack { + VStack(alignment: .leading) { + Text("OWNED_IDENTITY_TRANSFER_FAILED_BODY_\(ObvMessengerConstants.toEmailForSendingInitializationFailureErrorMessage)") + .font(.body) + .foregroundStyle(.primary) + .padding(.bottom, 4) + Text(verbatim: Self.stringForError(model.error)) + .lineLimit(nil) + .font(.body) + .foregroundStyle(.secondary) + .padding(.bottom, 4) + HStack { + Spacer() + Button("COPY_ERROR_TO_PASTEBOARD") { + UIPasteboard.general.string = Self.stringForError(model.error) + } + } + } + Spacer() + } + + + }.padding(.horizontal) + } + if canSendMail { + InternalButton("SEND_ERROR_BY_EMAIL", action: userWantsToSendErrorByEmail) + .padding(.horizontal) + .padding(.bottom) + } + } + } + +} + + +// MARK: - Button used in this view only + +private struct InternalButton: View { + + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Label( + title: { + Text(key) + .foregroundStyle(.white) + .padding(.vertical, 16) + }, + icon: { + Image(systemIcon: .envelope) + .foregroundStyle(.white) + } + ) + } + .frame(maxWidth: .infinity) + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + + +struct OwnedIdentityTransferFailureView_Previews: PreviewProvider { + + private final class ActionsForPreviews: OwnedIdentityTransferFailureViewActionsProtocol { + func userWantsToSendErrorByEmail(errorMessage: String) async {} + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + + OwnedIdentityTransferFailureView(actions: actions, model: .init(error: ObvError.errorForPreviews), canSendMail: true) + } + + private enum ObvError: Error { + case errorForPreviews + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnBoth/OwnedIdentityTransferFailure/OwnedIdentityTransferFailureViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnBoth/OwnedIdentityTransferFailure/OwnedIdentityTransferFailureViewController.swift new file mode 100644 index 00000000..45c98c25 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnBoth/OwnedIdentityTransferFailure/OwnedIdentityTransferFailureViewController.swift @@ -0,0 +1,123 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import MessageUI + + +final class OwnedIdentityTransferFailureViewController: UIHostingController, MFMailComposeViewControllerDelegate, OwnedIdentityTransferFailureViewActionsProtocol { + + init(model: OwnedIdentityTransferFailureView.Model) { + let actions = OwnedIdentityTransferFailureViewActions() + let view = OwnedIdentityTransferFailureView(actions: actions, model: model, canSendMail: Self.canSendMail) + super.init(rootView: view) + actions.delegate = self + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + } + + + private static var canSendMail: Bool { + MFMailComposeViewController.canSendMail() + } + + + // OwnedIdentityTransferFailureViewActions + + @MainActor + func userWantsToSendErrorByEmail(errorMessage: String) async { + + assert(MFMailComposeViewController.canSendMail()) + + let composeVC = MFMailComposeViewController() + composeVC.mailComposeDelegate = self + + // Configure the fields of the interface. + composeVC.setToRecipients([ObvMessengerConstants.toEmailForSendingInitializationFailureErrorMessage]) + composeVC.setSubject(Strings.mailSubject) + composeVC.setMessageBody(Strings.messageBody(errorMessage), isHTML: false) + + // Present the view controller modally. + self.present(composeVC, animated: true, completion: nil) + + } + + + // MFMailComposeViewControllerDelegate + + func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { + guard error == nil else { return } + Task { [weak self] in + await self?.showSuccess() + } + } + + + @MainActor + private func showSuccess() async { + await showHUDAndAwaitAnimationEnd(type: .checkmark) + try? await Task.sleep(seconds: 1) + hideHUD() + } + + + // Strings + + private struct Strings { + static let mailSubject = NSLocalizedString("MAIL_SUBJECT_COULD_NOT_TRANSFER_PROFILE_ERROR", comment: "Mail subject") + static let messageBody = { (errorMessage: String) in + String.localizedStringWithFormat(NSLocalizedString("MAIL_BODY_COULD_NOT_TRANSFER_PROFILE_ERROR$@", comment: "mail body text"), errorMessage) + } + } + +} + + +private final class OwnedIdentityTransferFailureViewActions: OwnedIdentityTransferFailureViewActionsProtocol { + + weak var delegate: OwnedIdentityTransferFailureViewActionsProtocol? + + func userWantsToSendErrorByEmail(errorMessage: String) async { + await delegate?.userWantsToSendErrorByEmail(errorMessage: errorMessage) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/01TransfertProtocolSourceCodeDisplayer/TransfertProtocolSourceCodeDisplayerView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/01TransfertProtocolSourceCodeDisplayer/TransfertProtocolSourceCodeDisplayerView.swift new file mode 100644 index 00000000..84e8142e --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/01TransfertProtocolSourceCodeDisplayer/TransfertProtocolSourceCodeDisplayerView.swift @@ -0,0 +1,183 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import ObvCrypto +import Contacts + + +protocol TransfertProtocolSourceCodeDisplayerViewActionsProtocol: AnyObject { + + typealias BlockCancellingOwnedIdentityTransferProtocol = () -> Void + typealias TransferSessionNumber = Int + + /// Called as soon as the view appears. + /// - Parameters: + /// - ownedCryptoId: The `ObvCryptoId` of the owned identity. + /// - onAvailableSessionNumber: A block called as soon as the session number is available. + func userWantsToInitiateOwnedIdentityTransferProtocolOnSourceDevice(ownedCryptoId: ObvCryptoId, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void) async throws + + func sasExpectedOnInputIsAvailable(_ sasExpectedOnInput: ObvOwnedIdentityTransferSas, targetDeviceName: String, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID) async + +} + + +struct TransfertProtocolSourceCodeDisplayerView: View { + + let model: Model + let actions: TransfertProtocolSourceCodeDisplayerViewActionsProtocol + @State private var sessionNumber: ObvOwnedIdentityTransferSessionNumber? + + struct Model { + let ownedCryptoId: ObvCryptoId + let ownedDetails: CNContact + } + + private func userWantsToStartTransferProtocolAsSourceDevice() { + Task { + do { + try await actions.userWantsToInitiateOwnedIdentityTransferProtocolOnSourceDevice( + ownedCryptoId: model.ownedCryptoId, + onAvailableSessionNumber: onAvailableSessionNumber, + onAvailableSASExpectedOnInput: onAvailableSASExpectedOnInput) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + + private func onAvailableSASExpectedOnInput(_ sasExpectedOnInput: ObvOwnedIdentityTransferSas, _ targetDeviceName: String, _ protocolInstanceUID: UID) { + Task { + await actions.sasExpectedOnInputIsAvailable(sasExpectedOnInput, targetDeviceName: targetDeviceName, ownedCryptoId: model.ownedCryptoId, ownedDetails: model.ownedDetails, protocolInstanceUID: protocolInstanceUID) + } + } + + + private func onAvailableSessionNumber(_ sessionNumber: ObvOwnedIdentityTransferSessionNumber) { + Task { await setSessionNumber(sessionNumber) } + } + + + @MainActor + private func setSessionNumber(_ sessionNumber: ObvOwnedIdentityTransferSessionNumber) async { + withAnimation { + self.sessionNumber = sessionNumber + } + } + + + var body: some View { + VStack { + + if let sessionNumber { + + ScrollView { + + NewOnboardingHeaderView(title: "OWNED_IDENTITY_TRANSFER_ENTER_CODE_ON_NEW_DEVICE", subtitle: nil) + + Text("OWNED_IDENTITY_TRANSFER_ENTER_CODE_ON_OTHER_DEVICE_BODY") + .font(.body) + .padding(.top) + + SessionNumberView(sessionNumber: sessionNumber) + .padding(.top) + + HStack { + Text("PLEASE_NOTE_THIS_CODE_WORKS_ONLY_ONCE") + .font(.footnote) + .foregroundStyle(.secondary) + Spacer() + }.padding(.top) + + } + + } else { + Spacer() + ProgressView() + .onAppear(perform: userWantsToStartTransferProtocolAsSourceDevice) + Text("OWNED_IDENTITY_TRANSFER_CONTACTING_SERVER") + .font(.body) + .foregroundStyle(.secondary) + Spacer() + } + + } + .padding(.horizontal) + } + +} + + +private struct SessionNumberView: View { + + let sessionNumber: ObvOwnedIdentityTransferSessionNumber + + var body: some View { + HStack { + ForEach((0.. Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void) async throws { + + Task { + try! await Task.sleep(seconds: 0) + onAvailableSessionNumber(try! ObvOwnedIdentityTransferSessionNumber(sessionNumber: 112233)) + } + + } + + func sasExpectedOnInputIsAvailable(_ sasExpectedOnInput: ObvTypes.ObvOwnedIdentityTransferSas, targetDeviceName: String, ownedCryptoId: ObvTypes.ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: ObvCrypto.UID) async {} + + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + TransfertProtocolSourceCodeDisplayerView( + model: model, + actions: actions) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/01TransfertProtocolSourceCodeDisplayer/TransfertProtocolSourceCodeDisplayerViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/01TransfertProtocolSourceCodeDisplayer/TransfertProtocolSourceCodeDisplayerViewController.swift new file mode 100644 index 00000000..8cd2430a --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/01TransfertProtocolSourceCodeDisplayer/TransfertProtocolSourceCodeDisplayerViewController.swift @@ -0,0 +1,158 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import ObvTypes +import ObvCrypto +import Contacts + + +protocol TransfertProtocolSourceCodeDisplayerViewControllerDelegate: AnyObject { + + typealias BlockCancellingOwnedIdentityTransferProtocol = () -> Void + typealias TransferSessionNumber = Int + + /// Called as soon as the view appears. + /// - Parameters: + /// - controller: The `TransfertProtocolSourceCodeDisplayerViewController` instance calling this method. + /// - ownedCryptoId: The `ObvCryptoId` of the owned identity. + /// - onAvailableSessionNumber: A block called as soon as the session number is available. + func userWantsToInitiateOwnedIdentityTransferProtocolOnSourceDevice(controller: TransfertProtocolSourceCodeDisplayerViewController, ownedCryptoId: ObvCryptoId, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void) async throws + + func userDidCancelOwnedIdentityTransferProtocol(controller: TransfertProtocolSourceCodeDisplayerViewController) async + + + /// Called when the engine sent us back the SAS we expect the user to enter on this source device. + /// - Parameters: + /// - controller: The `TransfertProtocolSourceCodeDisplayerViewController` instance calling this method. + /// - sasExpectedOnInput: The SAS we expect the user to enter on the next screen of the onboarding + func sasExpectedOnInputIsAvailable(controller: TransfertProtocolSourceCodeDisplayerViewController, sasExpectedOnInput: ObvOwnedIdentityTransferSas, targetDeviceName: String, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID) async + +} + + + +final class TransfertProtocolSourceCodeDisplayerViewController: UIHostingController, TransfertProtocolSourceCodeDisplayerViewActionsProtocol { + + private weak var delegate: TransfertProtocolSourceCodeDisplayerViewControllerDelegate? + + init(model: TransfertProtocolSourceCodeDisplayerView.Model, delegate: TransfertProtocolSourceCodeDisplayerViewControllerDelegate) { + let actions = TransfertProtocolSourceCodeDisplayerViewActions() + let view = TransfertProtocolSourceCodeDisplayerView( + model: model, + actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelButtonTapped)) + } + + + @objc + private func cancelButtonTapped() { + Task { [weak self] in + guard let self else { return } + await delegate?.userDidCancelOwnedIdentityTransferProtocol(controller: self) + } + } + + + // TransfertProtocolSourceCodeDisplayerViewActionsProtocol + + func userWantsToInitiateOwnedIdentityTransferProtocolOnSourceDevice(ownedCryptoId: ObvCryptoId, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void) async throws { + guard let delegate else { throw ObvError.theDelegateIsNil } + return try await delegate.userWantsToInitiateOwnedIdentityTransferProtocolOnSourceDevice( + controller: self, + ownedCryptoId: ownedCryptoId, + onAvailableSessionNumber: onAvailableSessionNumber, + onAvailableSASExpectedOnInput: onAvailableSASExpectedOnInput) + } + + + func sasExpectedOnInputIsAvailable(_ sasExpectedOnInput: ObvOwnedIdentityTransferSas, targetDeviceName: String, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID) async { + await delegate?.sasExpectedOnInputIsAvailable( + controller: self, + sasExpectedOnInput: sasExpectedOnInput, + targetDeviceName: targetDeviceName, + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + protocolInstanceUID: protocolInstanceUID) + } + + enum ObvError: Error { + case theDelegateIsNil + } + +} + + +// MARK: - TransfertProtocolSourceCodeDisplayerViewActions + +private final class TransfertProtocolSourceCodeDisplayerViewActions: TransfertProtocolSourceCodeDisplayerViewActionsProtocol { + + weak var delegate: TransfertProtocolSourceCodeDisplayerViewActionsProtocol? + + func userWantsToInitiateOwnedIdentityTransferProtocolOnSourceDevice(ownedCryptoId: ObvCryptoId, onAvailableSessionNumber: @escaping (ObvOwnedIdentityTransferSessionNumber) -> Void, onAvailableSASExpectedOnInput: @escaping (ObvOwnedIdentityTransferSas, String, UID) -> Void) async throws { + guard let delegate else { throw ObvError.theDelegateIsNil } + try await delegate.userWantsToInitiateOwnedIdentityTransferProtocolOnSourceDevice( + ownedCryptoId: ownedCryptoId, + onAvailableSessionNumber: onAvailableSessionNumber, + onAvailableSASExpectedOnInput: onAvailableSASExpectedOnInput) + } + + + func sasExpectedOnInputIsAvailable(_ sasExpectedOnInput: ObvOwnedIdentityTransferSas, targetDeviceName: String, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID) async { + await delegate?.sasExpectedOnInputIsAvailable( + sasExpectedOnInput, + targetDeviceName: targetDeviceName, + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + protocolInstanceUID: protocolInstanceUID) + } + + + enum ObvError: Error { + case theDelegateIsNil + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/02InputSASOnSource/InputSASOnSourceView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/02InputSASOnSource/InputSASOnSourceView.swift new file mode 100644 index 00000000..03d2fdc6 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/02InputSASOnSource/InputSASOnSourceView.swift @@ -0,0 +1,157 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import ObvCrypto +import Contacts + + +protocol InputSASOnSourceViewActionsProtocol: AnyObject { + func userEnteredValidSASOnSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID, targetDeviceName: String) async throws +} + + +struct InputSASOnSourceView: View, SessionNumberTextFieldActionsProtocol { + + private enum AlertType { + case userEnteredIncorrectSAS + case seriousError + } + + let actions: InputSASOnSourceViewActionsProtocol + let model: Model + + @State private var shownAlert: AlertType? = nil + @State private var userEnteredValidSAS = false + + struct Model { + let sasExpectedOnInput: ObvOwnedIdentityTransferSas + let targetDeviceName: String + let ownedCryptoId: ObvCryptoId + let ownedDetails: CNContact + let protocolInstanceUID: UID + } + + + private func alertTitle(for alertType: AlertType) -> LocalizedStringKey { + switch alertType { + case .userEnteredIncorrectSAS: + return "OWNED_IDENTITY_TRANSFER_INCORRECT_TRANSFER_SESSION_NUMBER" + case .seriousError: + return "OWNED_IDENTITY_TRANSFER_INCORRECT_SERIOUS_ERROR" + } + } + + // SessionNumberTextFieldActionsProtocol + + func userEnteredSessionNumber(sessionNumber: String) async { + guard let data = sessionNumber.data(using: .utf8) else { assertionFailure(); return } + guard let enteredSAS = try? ObvOwnedIdentityTransferSas(fullSas: data) else { assertionFailure(); return } + if enteredSAS == model.sasExpectedOnInput { + shownAlert = nil + userEnteredValidSAS = true + Task { + do { + try await actions.userEnteredValidSASOnSourceDevice( + enteredSAS: enteredSAS, + ownedCryptoId: model.ownedCryptoId, + ownedDetails: model.ownedDetails, + protocolInstanceUID: model.protocolInstanceUID, + targetDeviceName: model.targetDeviceName) + } catch { + shownAlert = .seriousError + } + } + } else { + shownAlert = .userEnteredIncorrectSAS + } + } + + + func userIsTypingSessionNumber() { + shownAlert = nil + } + + + + var body: some View { + ScrollView { + VStack { + + NewOnboardingHeaderView( + title: "OWNED_IDENTITY_TRANSFER_ENTER_CODE_FROM_NEW_DEVICE", + subtitle: nil) + + SessionNumberTextField(actions: self, model: .init(mode: .enterSessionNumber)) + .padding(.top) + .disabled(userEnteredValidSAS) + + if let shownAlert { + HStack { + Label( + title: { Text(alertTitle(for: shownAlert)) }, + icon: { + Image(systemIcon: .xmarkCircle) + .renderingMode(.template) + .foregroundColor(Color(.systemRed)) + }) + Spacer() + } + } + + if userEnteredValidSAS { + HStack { + Spacer() + ProgressView() + Spacer() + } + } + + } + .padding(.horizontal) + } + } +} + + + +struct InputSASOnSourceView_Previews: PreviewProvider { + + private static let sas = "12345678".data(using: .utf8)! + + private final class ActionsForPreviews: InputSASOnSourceViewActionsProtocol { + func userEnteredValidSASOnSourceDevice(enteredSAS: ObvTypes.ObvOwnedIdentityTransferSas, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID, targetDeviceName: String) async throws {} + } + + private static let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + private static let actions = ActionsForPreviews() + + private static let ownedDetails: CNContact = { + let details = CNMutableContact() + details.givenName = "Steve" + return details + }() + + static var previews: some View { + InputSASOnSourceView(actions: actions, model: .init(sasExpectedOnInput: try! .init(fullSas: sas), targetDeviceName: "Name of new device", ownedCryptoId: ownedCryptoId, ownedDetails: ownedDetails, protocolInstanceUID: UID.zero)) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/02InputSASOnSource/InputSASOnSourceViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/02InputSASOnSource/InputSASOnSourceViewController.swift new file mode 100644 index 00000000..2ed6ed9f --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/02InputSASOnSource/InputSASOnSourceViewController.swift @@ -0,0 +1,105 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import ObvTypes +import ObvCrypto +import Contacts + + +protocol InputSASOnSourceViewControllerDelegate: AnyObject { + func userEnteredValidSASOnSourceDevice(controller: InputSASOnSourceViewController, enteredSAS: ObvOwnedIdentityTransferSas, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID, targetDeviceName: String) async throws + func userDidCancelOwnedIdentityTransferProtocol(controller: InputSASOnSourceViewController) async +} + + +final class InputSASOnSourceViewController: UIHostingController, InputSASOnSourceViewActionsProtocol { + + private weak var delegate: InputSASOnSourceViewControllerDelegate? + + init(model: InputSASOnSourceView.Model, delegate: InputSASOnSourceViewControllerDelegate) { + let actions = InputSASOnSourceViewActions() + let view = InputSASOnSourceView(actions: actions, model: model) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelButtonTapped)) + } + + + @objc + private func cancelButtonTapped() { + Task { [weak self] in + guard let self else { return } + await delegate?.userDidCancelOwnedIdentityTransferProtocol(controller: self) + } + } + + // InputSASOnSourceViewActionsProtocol + + func userEnteredValidSASOnSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID, targetDeviceName: String) async throws { + try await delegate?.userEnteredValidSASOnSourceDevice( + controller: self, + enteredSAS: enteredSAS, + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + protocolInstanceUID: protocolInstanceUID, + targetDeviceName: targetDeviceName) + } + +} + + +private final class InputSASOnSourceViewActions: InputSASOnSourceViewActionsProtocol { + + weak var delegate: InputSASOnSourceViewActionsProtocol? + + func userEnteredValidSASOnSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, protocolInstanceUID: UID, targetDeviceName: String) async throws { + try await delegate?.userEnteredValidSASOnSourceDevice( + enteredSAS: enteredSAS, + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + protocolInstanceUID: protocolInstanceUID, + targetDeviceName: targetDeviceName) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/03ChooseDeviceToKeepActive/ChooseDeviceToKeepActiveView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/03ChooseDeviceToKeepActive/ChooseDeviceToKeepActiveView.swift new file mode 100644 index 00000000..2da10ec0 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/03ChooseDeviceToKeepActive/ChooseDeviceToKeepActiveView.swift @@ -0,0 +1,476 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import StoreKit +import ObvTypes +import ObvCrypto +import Contacts + + +protocol ChooseDeviceToKeepActiveViewActionsProtocol: AnyObject, SubscriptionPlansViewActionsProtocol { + + func userChoseDeviceToKeepActive(ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data, targetDeviceName: String, deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device?, protocolInstanceUID: UID) async + func refreshDeviceDiscovery(for ownedCryptoId: ObvCryptoId) async throws -> ObvOwnedDeviceDiscoveryResult + +} + + +final class ChooseDeviceToKeepActiveViewModel: ChooseDeviceToKeepActiveViewModelProtocol { + + let ownedCryptoId: ObvCryptoId + let ownedDetails: CNContact + let enteredSAS: ObvOwnedIdentityTransferSas + @Published var ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult + let currentDeviceIdentifier: Data + let targetDeviceName: String + let protocolInstanceUID: UID + + init(ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data, targetDeviceName: String, protocolInstanceUID: UID) { + self.ownedCryptoId = ownedCryptoId + self.ownedDetails = ownedDetails + self.enteredSAS = enteredSAS + self.ownedDeviceDiscoveryResult = ownedDeviceDiscoveryResult + self.currentDeviceIdentifier = currentDeviceIdentifier + self.targetDeviceName = targetDeviceName + self.protocolInstanceUID = protocolInstanceUID + } + + + @MainActor + func resetOwnedDeviceDiscoveryResult(with newObvOwnedDeviceDiscoveryResult: ObvTypes.ObvOwnedDeviceDiscoveryResult) async { + withAnimation { + self.ownedDeviceDiscoveryResult = newObvOwnedDeviceDiscoveryResult + } + } + +} + + +protocol ChooseDeviceToKeepActiveViewModelProtocol: AnyObject, ObservableObject { + var ownedCryptoId: ObvCryptoId { get } + var ownedDetails: CNContact { get } + var enteredSAS: ObvOwnedIdentityTransferSas { get } + var ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult { get } // Published + var currentDeviceIdentifier: Data { get } + var targetDeviceName: String { get } + var protocolInstanceUID: UID { get } + + func resetOwnedDeviceDiscoveryResult(with newObvOwnedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult) async +} + + +struct ChooseDeviceToKeepActiveView: View, SubscriptionPlansViewDismissActionsProtocol { + + let actions: ChooseDeviceToKeepActiveViewActionsProtocol + @ObservedObject var model: Model + @State private var selectedDevice: ObvOwnedDeviceDiscoveryResult.Device? + @State private var isInterfaceDisabled = false + @State private var isSubscriptionPlansViewPresented = false + @State private var userJustSubscribedToMultidevice = false + + private var title: LocalizedStringKey { + if model.ownedDeviceDiscoveryResult.isMultidevice { + return "CHOOSE_ACTIVE_DEVICE_TITLE_WHEN_MULTIDEVICE_TRUE" + } else { + return "CHOOSE_ACTIVE_DEVICE_TITLE_WHEN_MULTIDEVICE_FALSE" + } + } + + + private var subtitle: LocalizedStringKey { + if model.ownedDeviceDiscoveryResult.isMultidevice { + return "CHOOSE_ACTIVE_DEVICE_SUBTITLE_WHEN_MULTIDEVICE_TRUE" + } else { + return "CHOOSE_ACTIVE_DEVICE_SUBTITLE_WHEN_MULTIDEVICE_FALSE" + } + } + + + private var sortedDevices: [ObvOwnedDeviceDiscoveryResult.Device] { + let existingDevices = model.ownedDeviceDiscoveryResult.devices.sorted { device1, device2 in + if device1.identifier == model.currentDeviceIdentifier { return true } + if device2.identifier == model.currentDeviceIdentifier { return false } + return device1.hashValue < device2.hashValue + } + let newDevice = ObvOwnedDeviceDiscoveryResult.Device( + identifier: OwnedIdentityTransferSummaryView.fakeDeviceIdForNewDevice, + expirationDate: nil, + latestRegistrationDate: nil, + name: model.targetDeviceName) + return existingDevices + [newDevice] + } + + + private func titleOfKeepDeviceActiveButton(device: ObvOwnedDeviceDiscoveryResult.Device) -> LocalizedStringKey { + if let name = device.name { + return "KEEP_\(name)_ACTIVE" + } else { + return "KEEP_SELECTED_DEVICE_ACTIVE" + } + } + + + private func proceedButtonTapped(deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device?) { + isInterfaceDisabled = true + Task { + await userChoseDeviceToKeepActive(deviceToKeepActive: deviceToKeepActive) + } + } + + + private func userWantsToSeeMultideviceSubscriptionsOptions() { + isSubscriptionPlansViewPresented = true + } + + + @MainActor + private func userChoseDeviceToKeepActive(deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device?) async { + isInterfaceDisabled = true + await actions.userChoseDeviceToKeepActive( + ownedCryptoId: model.ownedCryptoId, + ownedDetails: model.ownedDetails, + enteredSAS: model.enteredSAS, + ownedDeviceDiscoveryResult: model.ownedDeviceDiscoveryResult, + currentDeviceIdentifier: model.currentDeviceIdentifier, + targetDeviceName: model.targetDeviceName, + deviceToKeepActive: deviceToKeepActive, + protocolInstanceUID: model.protocolInstanceUID) + isInterfaceDisabled = false // In case the user comes back + } + + // SubscriptionPlansViewDismissActionsProtocol + + @MainActor + func userWantsToDismissSubscriptionPlansView() async { + isSubscriptionPlansViewPresented = false + } + + + func dismissSubscriptionPlansViewAfterPurchaseWasMade() async { + await refreshDeviceDiscovery() + } + + + /// Called when the subscription view is dismissed after a purchase is made (so as to reflect the acquisition of the multi-device feature) + /// and when the subscription view is dismissed manually (since, in that case, was cannot know whether a purchase was made or not). + @MainActor + private func refreshDeviceDiscovery() async { + isInterfaceDisabled = true + do { + let newObvOwnedDeviceDiscoveryResult = try await actions.refreshDeviceDiscovery(for: model.ownedCryptoId) + await model.resetOwnedDeviceDiscoveryResult(with: newObvOwnedDeviceDiscoveryResult) + if newObvOwnedDeviceDiscoveryResult.isMultidevice { + userJustSubscribedToMultidevice = true + } + } catch { + assertionFailure(error.localizedDescription) + } + isInterfaceDisabled = false + } + + + // Body + + var body: some View { + VStack { + ScrollView { + VStack { + + NewOnboardingHeaderView(title: title, subtitle: subtitle) + .padding(.bottom) + + if userJustSubscribedToMultidevice { + HStack { + Label { + Text("NO_DEVICE_WILL_EXPIRE_SINCE_YOUR_SUBSCRIPTION_INCLUDES_MULTIDEVICE") + } icon: { + Image(systemIcon: .checkmarkCircleFill) + .foregroundStyle(Color(UIColor.systemGreen)) + } + Spacer() + } + } + + ProgressView() + .opacity(isInterfaceDisabled ? 1 : 0) + + ForEach(sortedDevices) { device in + DeviceView(mode: model.ownedDeviceDiscoveryResult.isMultidevice ? .list : .select(selectedDevice: $selectedDevice), + model: .init(device: device, + currentDeviceIdentifier: model.currentDeviceIdentifier, + fakeDeviceIdForNewDevice: OwnedIdentityTransferSummaryView.fakeDeviceIdForNewDevice)) + .padding(.leading) + .padding(.top) + } + + + }.padding(.horizontal) + + if model.ownedDeviceDiscoveryResult.isMultidevice { + InternalButton("VALIDATE", action: { proceedButtonTapped(deviceToKeepActive: nil) }) + .padding() + } else if let selectedDevice { + InternalButton(titleOfKeepDeviceActiveButton(device: selectedDevice), action: { proceedButtonTapped(deviceToKeepActive: selectedDevice) }) + .padding() + } + } + + if !model.ownedDeviceDiscoveryResult.isMultidevice { + HStack { + Spacer() + // We use a Markdown trick so as to show an in-line link instead of a button. + Text("DO_YOU_WANT_ALL_YOUR_DEVICE_TO_STAY_ACTIVE_[THIS_WAY](_)") + .environment(\.openURL, OpenURLAction { url in + userWantsToSeeMultideviceSubscriptionsOptions() + return .discarded + }) + Spacer() + } + } + + } + .disabled(isInterfaceDisabled) + .sheet(isPresented: $isSubscriptionPlansViewPresented, onDismiss: { + Task { await refreshDeviceDiscovery() } + }, content: { + let model = SubscriptionPlansViewModel(ownedCryptoId: model.ownedCryptoId, showFreePlanIfAvailable: false) + SubscriptionPlansView(model: model, actions: actions, dismissActions: self) + }) + } +} + + +// MARK: - DeviceView + +private struct DeviceView: View { + + enum Mode { + case list + case select(selectedDevice: Binding) + } + + let mode: Mode + let model: Model + + struct Model { + let device: ObvOwnedDeviceDiscoveryResult.Device + let currentDeviceIdentifier: Data + let fakeDeviceIdForNewDevice: Data + } + + + private func cellTapped() { + switch mode { + case .list: + return + case .select(selectedDevice: let selectedDevice): + selectedDevice.wrappedValue = model.device + } + } + + + private var isSelected: Bool { + switch mode { + case .list: + return false + case .select(selectedDevice: let selectedDevice): + return model.device == selectedDevice.wrappedValue + } + } + + + var body: some View { + HStack { + Label( + title: { + VStack(alignment: .leading) { + Text(verbatim: model.device.name ?? String(model.device.identifier.hexString().prefix(4))) + .font(.headline) + if model.device.identifier == model.currentDeviceIdentifier { + Text("CURRENT_DEVICE") + .foregroundStyle(.secondary) + .font(.subheadline) + } else if model.device.identifier == model.fakeDeviceIdForNewDevice { + Text("NEW_DEVICE") + .foregroundStyle(.secondary) + .font(.subheadline) + } + } + }, + icon: { + Image(systemIcon: .laptopcomputerAndIphone) + } + ) + Spacer() + switch mode { + case .list: + EmptyView() + case .select: + Image(systemIcon: isSelected ? .checkmarkCircleFill : .circle) + .foregroundStyle(isSelected ? Color(UIColor.systemGreen) : .secondary) + } + } + .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped + .onTapGesture(perform: cellTapped) + } +} + + + +// MARK: - Button used in this view only + +private struct InternalButton: View { + + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Text(key) + .foregroundStyle(.white) + .padding(.horizontal, 26) + .padding(.vertical, 16) + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + + +// MARK: - Previews + +struct ChooseDeviceToKeepActiveView_Previews: PreviewProvider { + + private static let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + private static let enteredSAS = try! ObvOwnedIdentityTransferSas(fullSas: "12345678".data(using: .utf8)!) + + private static let devices: Set = Set([ + .init(identifier: UID(uid: Data(repeating: 0x01, count: UID.length))!.raw, + expirationDate: Date(timeIntervalSinceNow: 400), + latestRegistrationDate: Date(timeIntervalSinceNow: -200), + name: "iPad Pro"), + .init(identifier: UID.zero.raw, + expirationDate: Date(timeIntervalSinceNow: 500), + latestRegistrationDate: Date(timeIntervalSinceNow: -100), + name: "iPhone 15"), + ]) + + private static let ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult = .init( + devices: devices, + isMultidevice: false) + + private static let ownedDeviceDiscoveryResultWithMultidevice: ObvOwnedDeviceDiscoveryResult = .init( + devices: devices, + isMultidevice: true) + + final class ActionsForPreviews: ChooseDeviceToKeepActiveViewActionsProtocol { + func userChoseDeviceToKeepActive(ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data, targetDeviceName: String, deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device?, protocolInstanceUID: UID) async {} + func userWantsToSeeMultideviceSubscriptionsOptions() async {} + + func fetchSubscriptionPlans(for ownedCryptoId: ObvCryptoId, alsoFetchFreePlan: Bool) async throws -> (freePlanIsAvailable: Bool, products: [Product]) { + try! await Task.sleep(seconds: 1) + return (alsoFetchFreePlan, []) + } + + func userWantsToStartFreeTrialNow(ownedCryptoId: ObvTypes.ObvCryptoId) async throws -> APIKeyElements { + try! await Task.sleep(seconds: 2) + return .init(status: .freeTrial, permissions: [.canCall], expirationDate: Date().addingTimeInterval(.init(days: 30))) + } + + func userWantsToBuy(_: Product) async -> StoreKitDelegatePurchaseResult { + try! await Task.sleep(seconds: 2) + return .userCancelled + } + + func userWantsToRestorePurchases() async { + try! await Task.sleep(seconds: 2) + } + + func refreshDeviceDiscovery(for ownedCryptoId: ObvCryptoId) async throws -> ObvOwnedDeviceDiscoveryResult { + try? await Task.sleep(seconds: 2) + return ownedDeviceDiscoveryResultWithMultidevice + } + + } + + private static let actions = ActionsForPreviews() + + private static let ownedDetails: CNContact = { + let details = CNMutableContact() + details.givenName = "Steve" + return details + }() + + + private final class ModelForPreviews: ChooseDeviceToKeepActiveViewModelProtocol { + + let ownedCryptoId: ObvCryptoId + let ownedDetails: CNContact + let enteredSAS: ObvOwnedIdentityTransferSas + @Published var ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult + let currentDeviceIdentifier: Data + let targetDeviceName: String + let protocolInstanceUID: UID + + init(ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data, targetDeviceName: String, protocolInstanceUID: UID) { + self.ownedCryptoId = ownedCryptoId + self.ownedDetails = ownedDetails + self.enteredSAS = enteredSAS + self.ownedDeviceDiscoveryResult = ownedDeviceDiscoveryResult + self.currentDeviceIdentifier = currentDeviceIdentifier + self.targetDeviceName = targetDeviceName + self.protocolInstanceUID = protocolInstanceUID + } + + func resetOwnedDeviceDiscoveryResult(with newObvOwnedDeviceDiscoveryResult: ObvTypes.ObvOwnedDeviceDiscoveryResult) async { + withAnimation { + self.ownedDeviceDiscoveryResult = newObvOwnedDeviceDiscoveryResult + } + } + + } + + private static let model = ModelForPreviews( + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + enteredSAS: enteredSAS, + ownedDeviceDiscoveryResult: ownedDeviceDiscoveryResult, + currentDeviceIdentifier: UID.zero.raw, + targetDeviceName: "New Device Name", + protocolInstanceUID: UID.zero) + + static var previews: some View { + ChooseDeviceToKeepActiveView( + actions: actions, + model: model) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/03ChooseDeviceToKeepActive/ChooseDeviceToKeepActiveViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/03ChooseDeviceToKeepActive/ChooseDeviceToKeepActiveViewController.swift new file mode 100644 index 00000000..06e68a86 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/03ChooseDeviceToKeepActive/ChooseDeviceToKeepActiveViewController.swift @@ -0,0 +1,187 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import StoreKit +import ObvTypes +import ObvCrypto +import Contacts + + +protocol ChooseDeviceToKeepActiveViewControllerDelegate: AnyObject, SubscriptionPlansViewActionsProtocol { + func userChoseDeviceToKeepActive(controller: ChooseDeviceToKeepActiveViewController, ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data, targetDeviceName: String, deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device?, protocolInstanceUID: UID) async + func userDidCancelOwnedIdentityTransferProtocol(controller: ChooseDeviceToKeepActiveViewController) async + func refreshDeviceDiscovery(controller: ChooseDeviceToKeepActiveViewController, for ownedCryptoId: ObvCryptoId) async throws -> ObvOwnedDeviceDiscoveryResult +} + + +final class ChooseDeviceToKeepActiveViewController: UIHostingController>, ChooseDeviceToKeepActiveViewActionsProtocol { + + private weak var delegate: ChooseDeviceToKeepActiveViewControllerDelegate? + + init(model: ChooseDeviceToKeepActiveViewModel, delegate: ChooseDeviceToKeepActiveViewControllerDelegate) { + let actions = ChooseDeviceToKeepActiveViewActions() + let view = ChooseDeviceToKeepActiveView(actions: actions, model: model) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelButtonTapped)) + } + + + @objc + private func cancelButtonTapped() { + Task { [weak self] in + guard let self else { return } + await delegate?.userDidCancelOwnedIdentityTransferProtocol(controller: self) + } + } + + + // ChooseDeviceToKeepActiveViewActionsProtocol + + func userChoseDeviceToKeepActive(ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data, targetDeviceName: String, deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device?, protocolInstanceUID: UID) async { + await delegate?.userChoseDeviceToKeepActive( + controller: self, + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + enteredSAS: enteredSAS, + ownedDeviceDiscoveryResult: ownedDeviceDiscoveryResult, + currentDeviceIdentifier: currentDeviceIdentifier, + targetDeviceName: targetDeviceName, + deviceToKeepActive: deviceToKeepActive, + protocolInstanceUID: protocolInstanceUID) + } + + + // SubscriptionPlansViewActionsProtocol (required for ChooseDeviceToKeepActiveViewActionsProtocol) + + func fetchSubscriptionPlans(for ownedCryptoId: ObvCryptoId, alsoFetchFreePlan: Bool) async throws -> (freePlanIsAvailable: Bool, products: [Product]) { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + return try await delegate.fetchSubscriptionPlans(for: ownedCryptoId, alsoFetchFreePlan: alsoFetchFreePlan) + } + + + func userWantsToStartFreeTrialNow(ownedCryptoId: ObvCryptoId) async throws -> APIKeyElements { + assertionFailure("Not expected to be called here. The subscription view shall only show plans allowing to subscribe to multidevice") + throw ObvError.cannotStartFreeTrialDuringOnboarding + } + + + func userWantsToBuy(_ product: Product) async throws -> StoreKitDelegatePurchaseResult { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + return try await delegate.userWantsToBuy(product) + } + + + func userWantsToRestorePurchases() async throws { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + try await delegate.userWantsToRestorePurchases() + } + + + func refreshDeviceDiscovery(for ownedCryptoId: ObvCryptoId) async throws -> ObvOwnedDeviceDiscoveryResult { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + return try await delegate.refreshDeviceDiscovery(controller: self, for: ownedCryptoId) + } + + enum ObvError: Error { + case delegateIsNil + case cannotStartFreeTrialDuringOnboarding + } + +} + + +private final class ChooseDeviceToKeepActiveViewActions: ChooseDeviceToKeepActiveViewActionsProtocol { + + weak var delegate: ChooseDeviceToKeepActiveViewActionsProtocol? + + func userChoseDeviceToKeepActive(ownedCryptoId: ObvCryptoId, ownedDetails: CNContact, enteredSAS: ObvOwnedIdentityTransferSas, ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult, currentDeviceIdentifier: Data, targetDeviceName: String, deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device?, protocolInstanceUID: UID) async { + await delegate?.userChoseDeviceToKeepActive( + ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + enteredSAS: enteredSAS, + ownedDeviceDiscoveryResult: ownedDeviceDiscoveryResult, + currentDeviceIdentifier: currentDeviceIdentifier, + targetDeviceName: targetDeviceName, + deviceToKeepActive: deviceToKeepActive, + protocolInstanceUID: protocolInstanceUID) + } + + + // SubscriptionPlansViewActionsProtocol (required for ChooseDeviceToKeepActiveViewActionsProtocol) + + func fetchSubscriptionPlans(for ownedCryptoId: ObvCryptoId, alsoFetchFreePlan: Bool) async throws -> (freePlanIsAvailable: Bool, products: [Product]) { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + return try await delegate.fetchSubscriptionPlans(for: ownedCryptoId, alsoFetchFreePlan: alsoFetchFreePlan) + } + + func userWantsToStartFreeTrialNow(ownedCryptoId: ObvCryptoId) async throws -> APIKeyElements { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + return try await delegate.userWantsToStartFreeTrialNow(ownedCryptoId: ownedCryptoId) + } + + + func userWantsToBuy(_ product: Product) async throws -> StoreKitDelegatePurchaseResult { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + return try await delegate.userWantsToBuy(product) + } + + + func userWantsToRestorePurchases() async throws { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + try await delegate.userWantsToRestorePurchases() + } + + + func refreshDeviceDiscovery(for ownedCryptoId: ObvCryptoId) async throws -> ObvOwnedDeviceDiscoveryResult { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + return try await delegate.refreshDeviceDiscovery(for: ownedCryptoId) + } + + enum ObvError: Error { + case delegateIsNil + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/04OwnedIdentityTransferSummary/OwnedIdentityTransferSummaryView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/04OwnedIdentityTransferSummary/OwnedIdentityTransferSummaryView.swift new file mode 100644 index 00000000..750057c6 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/04OwnedIdentityTransferSummary/OwnedIdentityTransferSummaryView.swift @@ -0,0 +1,372 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import Contacts +import ObvTypes +import ObvCrypto + + +protocol OwnedIdentityTransferSummaryViewActionsProtocol: AnyObject { + func userDidCancelOwnedIdentityTransferProtocol() async + func userWishesToFinalizeOwnedIdentityTransferFromSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws +} + + + +struct OwnedIdentityTransferSummaryView: View { + + let actions: OwnedIdentityTransferSummaryViewActionsProtocol + let model: Model + + @State private var isInterfaceDisabled = false + + @State private var errorForAlert: Error? + @State private var isAlertShown = false + + struct Model { + let ownedCryptoId: ObvCryptoId + let ownedDetails: CNContact + let enteredSAS: ObvOwnedIdentityTransferSas + let ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult + let targetDeviceName: String + let deviceToKeepActive: ObvOwnedDeviceDiscoveryResult.Device? + let protocolInstanceUID: UID + } + + + private var ownedIdentityName: String { + let formatter = PersonNameComponentsFormatter() + formatter.style = .default + return formatter.string(from: model.ownedDetails.personNameComponents) + } + + + private var jobTitleAndOrganizationName: String? { + let jobTitle = model.ownedDetails.jobTitle.mapToNilIfZeroLength() + let organizationName = model.ownedDetails.organizationName.mapToNilIfZeroLength() + switch (jobTitle, organizationName) { + case (.none, .none): + return nil + case (.some(let jobTitle), .none): + return jobTitle + case (.none, .some(let organizationName)): + return organizationName + case (.some(let jobTitle), .some(let organizationName)): + return [jobTitle, organizationName].joined(separator: "@") + } + } + + + private var nameOfDeviceToKeepActive: String { + if let device = model.deviceToKeepActive { + return device.name ?? String(device.identifier.hexString().prefix(4)) + } else { + return model.targetDeviceName + } + } + + + private func cancelButtonTapped() { + isInterfaceDisabled = true + Task { + await actions.userDidCancelOwnedIdentityTransferProtocol() + } + } + + static let fakeDeviceIdForNewDevice: Data = Data(repeating: 0, count: 1) + + private func proceedButtonTapped() { + let deviceToKeepActive: UID? + // The ChooseDeviceToKeepActiveView.fakeDeviceIdForNewDevice was used to give a fake identifier to the target device. + // Setting the deviceToKeepActive to nil means "keep target device active". + if let identifier = model.deviceToKeepActive?.identifier, identifier != Self.fakeDeviceIdForNewDevice { + guard let uid = UID(uid: identifier) else { assertionFailure(); return } + deviceToKeepActive = uid + } else { + deviceToKeepActive = nil + } + isInterfaceDisabled = true + Task { + do { + try await actions.userWishesToFinalizeOwnedIdentityTransferFromSourceDevice( + enteredSAS: model.enteredSAS, + deviceToKeepActive: deviceToKeepActive, + ownedCryptoId: model.ownedCryptoId, + protocolInstanceUID: model.protocolInstanceUID) + } catch { + errorForAlert = error + isAlertShown = true + } + } + } + + + private var alertTitle: LocalizedStringKey { + if let errorForAlert { + return "COULD_NOT_PERFORM_OWNED_IDENTITY_TRANSFER_ALERT_\(ObvMessengerConstants.toEmailForSendingInitializationFailureErrorMessage)_\((errorForAlert as NSError).description)" + } else { + return "COULD_NOT_PERFORM_OWNED_IDENTITY_TRANSFER_ALERT_\(ObvMessengerConstants.toEmailForSendingInitializationFailureErrorMessage)" + } + } + + + var body: some View { + + VStack { + + ScrollView { + VStack { + + NewOnboardingHeaderView( + title: "OWNED_IDENTITY_SUMMARY_VIEW_TITLE", + subtitle: "OWNED_IDENTITY_SUMMARY_VIEW_SUBTITLE") + + Divider() + .padding(.top) + + HStack(alignment: .top) { + + HStack { + + Label( + title: { + VStack(alignment: .leading) { + Text("PROFILE_YOU_ARE_ABOUT_TO_ADD_TO_NEW_DEVICE") + .font(.headline) + Text(verbatim: ownedIdentityName) + .font(.subheadline) + .foregroundStyle(.secondary) + if let jobTitleAndOrganizationName { + Text(verbatim: jobTitleAndOrganizationName) + .font(.subheadline) + .foregroundStyle(.secondary) + } + } + }, + icon: { + Image(systemIcon: .person) + } + ) + + Spacer() + }.padding(.top) + + + HStack { + + Label( + title: { + VStack(alignment: .leading) { + Text("WILL_BE_ADDED_TO_THIS_DEVICE") + .font(.headline) + Text(verbatim: model.targetDeviceName) + .font(.subheadline) + .foregroundStyle(.secondary) + } + }, + icon: { + Image(systemIcon: .laptopcomputerAndIphone) + } + ) + + Spacer() + }.padding(.top) + + } + + Divider() + .padding(.top) + + if !model.ownedDeviceDiscoveryResult.isMultidevice { + + HStack { + + Label( + title: { + VStack(alignment: .leading) { + Text("THE_FOLLOWING_DEVICE_WILL_REMAIN_ACTIVE") + .font(.headline) + Text(verbatim: nameOfDeviceToKeepActive) + .font(.subheadline) + .foregroundStyle(.secondary) + Text("YOUR_OTHER_DEVICES_WILL_BE_DEACTIVATED_EXPLANATION") + .foregroundStyle(.secondary) + .padding(.top) + } + }, + icon: { + Image(systemIcon: .poweroff) + } + ) + + Spacer() + }.padding(.top) + + Divider() + .padding(.top) + + } + + + if isInterfaceDisabled { + HStack { + Spacer() + ProgressView() + Spacer() + }.padding(.top) + } + + + }.padding(.horizontal) + } + + HStack { + InternalButton("Cancel", style: .red, action: cancelButtonTapped) + InternalButton("VALIDATE", style: .blue, action: proceedButtonTapped) + }.padding() + + } + .disabled(isInterfaceDisabled) + .alert(alertTitle, isPresented: $isAlertShown) { + Button("OK", role: .cancel) { } + if let errorForAlert { + Button("COPY_ERROR", role: .none) { UIPasteboard.general.string = (errorForAlert as NSError).description } + } + } + + } +} + + +// MARK: - Button used in this view only + +private struct InternalButton: View { + + enum Style { + case red + case blue + } + + private var backgroundColor: Color { + switch style { + case .red: + return Color(UIColor.systemRed) + case .blue: + return Color("Blue01") + } + } + + private let key: LocalizedStringKey + private let action: () -> Void + private let style: Style + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, style: Style, action: @escaping () -> Void) { + self.key = key + self.action = action + self.style = style + } + + var body: some View { + Button(action: action) { + Text(key) + .foregroundStyle(.white) + .padding(.horizontal, 26) + .padding(.vertical, 16) + .frame(maxWidth: .infinity) + } + .background(backgroundColor) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + +extension CNContact { + + var personNameComponents: PersonNameComponents { + .init(namePrefix: self.namePrefix, + givenName: self.givenName, + middleName: self.middleName, + familyName: self.familyName, + nameSuffix: self.nameSuffix, + nickname: self.nickname, + phoneticRepresentation: nil) + } + +} + + + + +// MARK: - Previews + +struct OwnedIdentityTransferSummaryView_Previews: PreviewProvider { + + private static let ownedDetails: CNContact = { + let contact = CNMutableContact() + contact.givenName = "Steve" + contact.familyName = "Jobs" + contact.jobTitle = "CEO" + contact.organizationName = "Apple" + contact.nickname = "The boss" + return contact + }() + + private static let devices: Set = Set([ + .init(identifier: UID(uid: Data(repeating: 0x01, count: UID.length))!.raw, + expirationDate: Date(timeIntervalSinceNow: 400), + latestRegistrationDate: Date(timeIntervalSinceNow: -200), + name: "iPad Pro"), + .init(identifier: UID.zero.raw, + expirationDate: Date(timeIntervalSinceNow: 500), + latestRegistrationDate: Date(timeIntervalSinceNow: -100), + name: "iPhone 15"), + ]) + + private static let ownedDeviceDiscoveryResult: ObvOwnedDeviceDiscoveryResult = .init( + devices: devices, + isMultidevice: false) + + private static let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + private static let enteredSAS = try! ObvOwnedIdentityTransferSas(fullSas: "12345678".data(using: .utf8)!) + + private final class ActionsForPreviews: OwnedIdentityTransferSummaryViewActionsProtocol { + func userDidCancelOwnedIdentityTransferProtocol() async {} + func userWishesToFinalizeOwnedIdentityTransferFromSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws {} + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + OwnedIdentityTransferSummaryView(actions: actions, + model: .init(ownedCryptoId: ownedCryptoId, + ownedDetails: ownedDetails, + enteredSAS: enteredSAS, + ownedDeviceDiscoveryResult: ownedDeviceDiscoveryResult, + targetDeviceName: "iPhone 13", + deviceToKeepActive: devices.first, + protocolInstanceUID: UID.zero)) + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/04OwnedIdentityTransferSummary/OwnedIdentityTransferSummaryViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/04OwnedIdentityTransferSummary/OwnedIdentityTransferSummaryViewController.swift new file mode 100644 index 00000000..8c742510 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnSourceDevice/04OwnedIdentityTransferSummary/OwnedIdentityTransferSummaryViewController.swift @@ -0,0 +1,108 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import ObvTypes +import ObvCrypto + + +protocol OwnedIdentityTransferSummaryViewControllerDelegate: AnyObject { + + func userDidCancelOwnedIdentityTransferProtocol(controller: OwnedIdentityTransferSummaryViewController) async + func userWishesToFinalizeOwnedIdentityTransferFromSourceDevice(controller: OwnedIdentityTransferSummaryViewController, enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws + +} + + +final class OwnedIdentityTransferSummaryViewController: UIHostingController, OwnedIdentityTransferSummaryViewActionsProtocol { + + private var delegate: OwnedIdentityTransferSummaryViewControllerDelegate? + + init(model: OwnedIdentityTransferSummaryView.Model, delegate: OwnedIdentityTransferSummaryViewControllerDelegate) { + let actions = OwnedIdentityTransferSummaryViewActions() + let view = OwnedIdentityTransferSummaryView(actions: actions, model: model) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + } + + + // OwnedIdentityTransferSummaryViewActionsProtocol + + func userDidCancelOwnedIdentityTransferProtocol() async { + await delegate?.userDidCancelOwnedIdentityTransferProtocol(controller: self) + } + + + func userWishesToFinalizeOwnedIdentityTransferFromSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws { + try await delegate?.userWishesToFinalizeOwnedIdentityTransferFromSourceDevice( + controller: self, + enteredSAS: enteredSAS, + deviceToKeepActive: deviceToKeepActive, + ownedCryptoId: ownedCryptoId, + protocolInstanceUID: protocolInstanceUID) + } + + +} + + +private final class OwnedIdentityTransferSummaryViewActions: OwnedIdentityTransferSummaryViewActionsProtocol { + + weak var delegate: OwnedIdentityTransferSummaryViewActionsProtocol? + + func userDidCancelOwnedIdentityTransferProtocol() async { + await delegate?.userDidCancelOwnedIdentityTransferProtocol() + } + + + func userWishesToFinalizeOwnedIdentityTransferFromSourceDevice(enteredSAS: ObvOwnedIdentityTransferSas, deviceToKeepActive: UID?, ownedCryptoId: ObvCryptoId, protocolInstanceUID: UID) async throws { + try await delegate?.userWishesToFinalizeOwnedIdentityTransferFromSourceDevice( + enteredSAS: enteredSAS, + deviceToKeepActive: deviceToKeepActive, + ownedCryptoId: ownedCryptoId, + protocolInstanceUID: protocolInstanceUID) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/01TransfertProtocolTargetCodeForm/TransfertProtocolTargetCodeFormView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/01TransfertProtocolTargetCodeForm/TransfertProtocolTargetCodeFormView.swift new file mode 100644 index 00000000..c9e72015 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/01TransfertProtocolTargetCodeForm/TransfertProtocolTargetCodeFormView.swift @@ -0,0 +1,379 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import Combine +import ObvCrypto + + +protocol TransfertProtocolTargetCodeFormViewActionsProtocol: AnyObject { + func userEnteredTransferSessionNumberOnTargetDevice(transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void) async throws + func sasIsAvailable(protocolInstanceUID: UID, sas: ObvOwnedIdentityTransferSas) async +} + + +struct TransfertProtocolTargetCodeFormView: View, SessionNumberTextFieldActionsProtocol { + + let actions: TransfertProtocolTargetCodeFormViewActionsProtocol + + private enum AlertType { + case userEnteredIncorrectSessionNumber + case seriousError + } + + @State private var enteredTransferSessionNumber: ObvOwnedIdentityTransferSessionNumber? + @State private var engineIsProcessingEnteredSessionNumber = false + @State private var sasAvailable = false + @State private var shownAlert: AlertType? = nil + + // SessionNumberTextFieldActionsProtocol + + func userEnteredSessionNumber(sessionNumber: String) async { + guard let sessionNumber = try? Int(sessionNumber, format: .number) else { assertionFailure(); return } + guard let transferSessionNumber = try? ObvOwnedIdentityTransferSessionNumber(sessionNumber: sessionNumber) else { return } + shownAlert = nil + withAnimation { + enteredTransferSessionNumber = transferSessionNumber + } + } + + + func userIsTypingSessionNumber() { + shownAlert = nil + withAnimation { + enteredTransferSessionNumber = nil + } + } + + + private func userTappedConfirmButton() { + guard let enteredTransferSessionNumber else { assertionFailure(); return } + withAnimation { + engineIsProcessingEnteredSessionNumber = true + shownAlert = nil + } + Task { + do { + try await actions.userEnteredTransferSessionNumberOnTargetDevice( + transferSessionNumber: enteredTransferSessionNumber, + onIncorrectTransferSessionNumber: { Task { await onIncorrectTransferSessionNumber() } }, + onAvailableSas: { (uid, sas) in Task { await onAvailableSas(uid, sas) } }) + } catch { + engineIsProcessingEnteredSessionNumber = false + shownAlert = .seriousError + } + } + } + + + /// Called by the engine if the `enteredTransferSessionNumber` happens to be incorrect + @MainActor + private func onIncorrectTransferSessionNumber() async { + withAnimation { + engineIsProcessingEnteredSessionNumber = false + shownAlert = .userEnteredIncorrectSessionNumber + } + } + + + /// Called by the engine if something went really wrong + @MainActor + private func onAvailableSas(_ protocolInstanceUID: UID, _ sas: ObvOwnedIdentityTransferSas) async { + shownAlert = nil + engineIsProcessingEnteredSessionNumber = false + sasAvailable = true + await actions.sasIsAvailable(protocolInstanceUID: protocolInstanceUID, sas: sas) + } + + + private func alertTitle(for alertType: AlertType) -> LocalizedStringKey { + switch alertType { + case .userEnteredIncorrectSessionNumber: + return "OWNED_IDENTITY_TRANSFER_INCORRECT_TRANSFER_SESSION_NUMBER" + case .seriousError: + return "OWNED_IDENTITY_TRANSFER_INCORRECT_SERIOUS_ERROR" + } + } + + + var body: some View { + VStack { + + ScrollView { + + ScrollViewReader { reader in + + NewOnboardingHeaderView(title: "OWNED_IDENTITY_TRANSFER_ENTER_CODE_FROM_OTHER_DEVICE", subtitle: nil) + + Text("OWNED_IDENTITY_TRANSFER_ENTER_CODE_FROM_OTHER_DEVICE_BODY") + .font(.body) + .padding(.top) + + SessionNumberTextField(actions: self, model: .init(mode: .enterSessionNumber)) + .id("SessionNumberTextField") + .padding(.top) + .disabled(engineIsProcessingEnteredSessionNumber || sasAvailable) + .onTapGesture { + // Allows the text field to be properly above the keyboard, the automatic scrolling is not enough + if UIDevice.current.userInterfaceIdiom == .phone { + reader.scrollTo("SessionNumberTextField", anchor: .top) + } + } + + ProgressView() + .opacity(engineIsProcessingEnteredSessionNumber ? 1.0 : 0) + + if let shownAlert { + HStack { + Label( + title: { Text(alertTitle(for: shownAlert)) }, + icon: { + Image(systemIcon: .xmarkCircle) + .renderingMode(.template) + .foregroundColor(Color(.systemRed)) + }) + Spacer() + } + } + + } + + } + + InternalButton("OWNED_IDENTITY_TRANSFER_ENTER_CODE_FROM_OTHER_DEVICE_BUTTON_TITLE", action: userTappedConfirmButton) + .disabled(enteredTransferSessionNumber == nil || engineIsProcessingEnteredSessionNumber || sasAvailable) + .padding(.bottom) + + } + .padding(.horizontal) + } + + +} + + +protocol SessionNumberTextFieldActionsProtocol { + func userEnteredSessionNumber(sessionNumber: String) async + func userIsTypingSessionNumber() +} + + +struct SessionNumberTextField: View, SingleDigitTextFielddActions { + + let actions: SessionNumberTextFieldActionsProtocol + let model: Model + + enum Mode { + case showSessionNumber(sessionNumber: ObvOwnedIdentityTransferSessionNumber) + case enterSessionNumber + } + + struct Model { + let mode: Mode + } + + @State private var textValue0: String = "" + @State private var textValue1: String = "" + @State private var textValue2: String = "" + @State private var textValue3: String = "" + @State private var textValue4: String = "" + @State private var textValue5: String = "" + @State private var textValue6: String = "" + @State private var textValue7: String = "" + + private var textValues: [String] { + [textValue0, textValue1, textValue2, textValue3, + textValue4, textValue5, textValue6, textValue7] + } + + @FocusState private var indexOfFocusedField: Int? + + private func clearAll() { + textValue0 = "" + textValue1 = "" + textValue2 = "" + textValue3 = "" + textValue4 = "" + textValue5 = "" + textValue6 = "" + textValue7 = "" + indexOfFocusedField = nil + } + + + private var showClearButton: Bool { + switch model.mode { + case .enterSessionNumber: + return true + case .showSessionNumber: + return false + } + } + + + // SingleTextFieldActions + + /// Called by the ``SingleTextField`` at index `index` each time its text value changes. + func singleTextFieldDidChangeAtIndex(_ index: Int) { + gotoNextTextFieldIfPossible(fromIndex: index) + if let enteredSessionNumber { + indexOfFocusedField = nil + Task { + await actions.userEnteredSessionNumber(sessionNumber: enteredSessionNumber) + } + } else { + actions.userIsTypingSessionNumber() + } + } + + // Helpers + + /// Returns an 8 characters session number if the texts in the text fields allow to compute one. + /// Returns `nil` otherwise. + private var enteredSessionNumber: String? { + let concatenation = textValues + .reduce("", { $0 + $1 }) + .removingAllCharactersNotInCharacterSet(.decimalDigits) + return concatenation.count == ObvOwnedIdentityTransferSessionNumber.expectedCount ? concatenation : nil + } + + private func gotoNextTextFieldIfPossible(fromIndex: Int) { + guard fromIndex < 7 else { return } + let toIndex = fromIndex + 1 + if textValues[fromIndex].count == 1, textValues[toIndex].count < 1 { + indexOfFocusedField = toIndex + } + } + + + // Body + + var body: some View { + VStack { + HStack { + SingleDigitTextField("X", text: $textValue0, actions: self, model: .init(index: 0)) + SingleDigitTextField("X", text: $textValue1, actions: self, model: .init(index: 1)) + .focused($indexOfFocusedField, equals: 1) + SingleDigitTextField("X", text: $textValue2, actions: self, model: .init(index: 2)) + .focused($indexOfFocusedField, equals: 2) + SingleDigitTextField("X", text: $textValue3, actions: self, model: .init(index: 3)) + .focused($indexOfFocusedField, equals: 3) + SingleDigitTextField("X", text: $textValue4, actions: self, model: .init(index: 4)) + .focused($indexOfFocusedField, equals: 4) + SingleDigitTextField("X", text: $textValue5, actions: self, model: .init(index: 5)) + .focused($indexOfFocusedField, equals: 5) + SingleDigitTextField("X", text: $textValue6, actions: self, model: .init(index: 6)) + .focused($indexOfFocusedField, equals: 6) + SingleDigitTextField("X", text: $textValue7, actions: self, model: .init(index: 7)) + .focused($indexOfFocusedField, equals: 7) + } + if showClearButton { + HStack { + Spacer() + Button("CLEAR_ALL", action: clearAll) + }.padding(.top, 4) + } + } + } + +} + + +// MARK: - Button used in this view only + +private struct InternalButton: View { + + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.isEnabled) var isEnabled + + init(_ key: LocalizedStringKey, action: @escaping () -> Void) { + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Text(key) + .foregroundStyle(.white) + .padding(.horizontal, 26) + .padding(.vertical, 16) + .frame(maxWidth: .infinity) + } + .background(Color("Blue01")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + } + +} + + +// MARK: - Private helpers + +fileprivate extension String { + func removingAllCharactersNotInCharacterSet(_ characterSet: CharacterSet) -> String { + return String(self + .trimmingWhitespacesAndNewlines() + .unicodeScalars + .filter({ + characterSet.contains($0) + })) + } +} + + +// MARK: - Previews + + +struct TransfertProtocolTargetCodeFormView_Previews: PreviewProvider { + + + private final class ActionsForPreviews: TransfertProtocolTargetCodeFormViewActionsProtocol { + + private static let protocolInstanceUIDForPreviews = UID.zero + private static let sasForPreviews = try! ObvOwnedIdentityTransferSas(fullSas: "12345678".data(using: .utf8)!) + + func userEnteredTransferSessionNumberOnTargetDevice(transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void) async throws { + + try! await Task.sleep(seconds: 1) + + if transferSessionNumber.sessionNumber == 0 { + onAvailableSas(Self.protocolInstanceUIDForPreviews, Self.sasForPreviews) + } else { + onIncorrectTransferSessionNumber() + } + + } + + func sasIsAvailable(protocolInstanceUID: UID, sas: ObvOwnedIdentityTransferSas) async {} + + } + + private static let actions = ActionsForPreviews() + + private enum ObvError: Error { + case fakeErrorForPreviews + } + + static var previews: some View { + TransfertProtocolTargetCodeFormView(actions: actions) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/01TransfertProtocolTargetCodeForm/TransfertProtocolTargetCodeFormViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/01TransfertProtocolTargetCodeForm/TransfertProtocolTargetCodeFormViewController.swift new file mode 100644 index 00000000..532e8a07 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/01TransfertProtocolTargetCodeForm/TransfertProtocolTargetCodeFormViewController.swift @@ -0,0 +1,101 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import ObvTypes +import ObvCrypto + + +protocol TransfertProtocolTargetCodeFormViewControllerDelegate: AnyObject { + func userEnteredTransferSessionNumberOnTargetDevice(controller: TransfertProtocolTargetCodeFormViewController, transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void) async throws + func sasIsAvailable(controller: TransfertProtocolTargetCodeFormViewController, protocolInstanceUID: UID, sas: ObvOwnedIdentityTransferSas) async +} + + +final class TransfertProtocolTargetCodeFormViewController: UIHostingController, TransfertProtocolTargetCodeFormViewActionsProtocol { + + private weak var delegate: TransfertProtocolTargetCodeFormViewControllerDelegate? + + init(delegate: TransfertProtocolTargetCodeFormViewControllerDelegate) { + let actions = TransfertProtocolTargetCodeFormViewActions() + let view = TransfertProtocolTargetCodeFormView(actions: actions) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + } + + // TransfertProtocolTargetCodeFormViewActionsProtocol + + func userEnteredTransferSessionNumberOnTargetDevice(transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void) async throws { + try await delegate?.userEnteredTransferSessionNumberOnTargetDevice( + controller: self, + transferSessionNumber: transferSessionNumber, + onIncorrectTransferSessionNumber: onIncorrectTransferSessionNumber, + onAvailableSas: onAvailableSas) + } + + func sasIsAvailable(protocolInstanceUID: UID, sas: ObvOwnedIdentityTransferSas) async { + await delegate?.sasIsAvailable(controller: self, protocolInstanceUID: protocolInstanceUID, sas: sas) + } + +} + + +private final class TransfertProtocolTargetCodeFormViewActions: TransfertProtocolTargetCodeFormViewActionsProtocol { + + weak var delegate: TransfertProtocolTargetCodeFormViewActionsProtocol? + + func userEnteredTransferSessionNumberOnTargetDevice(transferSessionNumber: ObvOwnedIdentityTransferSessionNumber, onIncorrectTransferSessionNumber: @escaping () -> Void, onAvailableSas: @escaping (UID, ObvOwnedIdentityTransferSas) -> Void) async throws { + try await delegate?.userEnteredTransferSessionNumberOnTargetDevice( + transferSessionNumber: transferSessionNumber, + onIncorrectTransferSessionNumber: onIncorrectTransferSessionNumber, + onAvailableSas: onAvailableSas) + } + + + func sasIsAvailable(protocolInstanceUID: UID, sas: ObvOwnedIdentityTransferSas) async { + await delegate?.sasIsAvailable(protocolInstanceUID: protocolInstanceUID, sas: sas) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/02TransferProtocolTargetShowSas/TransferProtocolTargetShowSasView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/02TransferProtocolTargetShowSas/TransferProtocolTargetShowSasView.swift new file mode 100644 index 00000000..ba364c19 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/02TransferProtocolTargetShowSas/TransferProtocolTargetShowSasView.swift @@ -0,0 +1,156 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import ObvCrypto + + +protocol TransferProtocolTargetShowSasViewActionsProtocol: AnyObject { + func targetDeviceIsShowingSasAndExpectingEndOfProtocol(protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async + func successfulTransferWasPerformedOnThisTargetDevice(transferredOwnedCryptoId: ObvCryptoId, postTransferError: Error?) async +} + + +struct TransferProtocolTargetShowSasView: View { + + let actions: TransferProtocolTargetShowSasViewActionsProtocol + let model: Model + + @State private var isSpinnerShown = false + + struct Model { + let protocolInstanceUID: UID + let sas: ObvOwnedIdentityTransferSas + } + + private func onAppear() { + Task { + await actions.targetDeviceIsShowingSasAndExpectingEndOfProtocol( + protocolInstanceUID: model.protocolInstanceUID, + onSyncSnapshotReception: onSyncSnapshotReception, + onSuccessfulTransfer: onSuccessfulTransfer) + } + } + + + private func onSyncSnapshotReception() { + DispatchQueue.main.async { + isSpinnerShown = true + } + } + + + private func onSuccessfulTransfer(_ transferredOwnedCryptoId: ObvCryptoId, _ postTransferError: Error?) { + DispatchQueue.main.async { + isSpinnerShown = false + Task { + // This call will allow to push the last screen for the transfer + // The postTransferError, if not nil, is the error occuring after a successful restore at the engine level, when something goes wrong at the app leve, or when setting the unexpiring device. We display this error on the last screen, by we cannot do much better. + await actions.successfulTransferWasPerformedOnThisTargetDevice(transferredOwnedCryptoId: transferredOwnedCryptoId, postTransferError: postTransferError) + } + } + } + + + var body: some View { + ScrollView { + VStack { + + NewOnboardingHeaderView(title: "OWNED_IDENTITY_TRANSFER_ENTER_CODE_ON_OTHER_DEVICE", subtitle: nil) + + OnboardingSasView(sas: model.sas) + .padding(.top) + + HStack { + Text("OWNED_IDENTITY_TRANSFER_TARGET_LAST_STEP") + Spacer() + } + .padding(.top) + .font(.body) + + // Show an activity indicator when the snapshot is receive from the source device, + // and thus processing (restored, register to push notifications, keep device active) + // on this target device. + + HStack { + Spacer() + ProgressView() + Spacer() + } + .padding(.top) + .opacity(isSpinnerShown ? 1.0 : 0.0) + + } + .padding(.horizontal) + } + .onAppear(perform: onAppear) + } + +} + + +private struct OnboardingSasView: View { + + let sas: ObvOwnedIdentityTransferSas + + var body: some View { + HStack { + ForEach((0.. Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async { + try! await Task.sleep(seconds: 0) + onSyncSnapshotReception() + try! await Task.sleep(seconds: 0) + } + + + func successfulTransferWasPerformedOnThisTargetDevice(transferredOwnedCryptoId: ObvCryptoId, postTransferError: Error?) async {} + + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + TransferProtocolTargetShowSasView(actions: actions, model: .init(protocolInstanceUID: UID.zero, sas: Self.sasForPreviews)) + } + + fileprivate enum ObvError: Error { + case errorForPreviews + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/02TransferProtocolTargetShowSas/TransferProtocolTargetShowSasViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/02TransferProtocolTargetShowSas/TransferProtocolTargetShowSasViewController.swift new file mode 100644 index 00000000..22ae12a1 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/02TransferProtocolTargetShowSas/TransferProtocolTargetShowSasViewController.swift @@ -0,0 +1,120 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import UIKit +import ObvCrypto +import ObvTypes + + +protocol TransferProtocolTargetShowSasViewControllerDelegate: AnyObject { + func targetDeviceIsShowingSasAndExpectingEndOfProtocol(controller: TransferProtocolTargetShowSasViewController, protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async + func successfulTransferWasPerformedOnThisTargetDevice(controller: TransferProtocolTargetShowSasViewController, transferredOwnedCryptoId: ObvCryptoId, postTransferError: Error?) async + func userDidCancelOwnedIdentityTransferProtocol(controller: TransferProtocolTargetShowSasViewController) async +} + + +final class TransferProtocolTargetShowSasViewController: UIHostingController, TransferProtocolTargetShowSasViewActionsProtocol { + + private weak var delegate: TransferProtocolTargetShowSasViewControllerDelegate? + + init(model: TransferProtocolTargetShowSasView.Model, delegate: TransferProtocolTargetShowSasViewControllerDelegate) { + let actions = TransferProtocolTargetShowSasViewActions() + let view = TransferProtocolTargetShowSasView(actions: actions, model: model) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + // Add a cancel button + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelButtonTapped)) + } + + + @objc + private func cancelButtonTapped() { + Task { [weak self] in + guard let self else { return } + await delegate?.userDidCancelOwnedIdentityTransferProtocol(controller: self) + } + } + + + // TransferProtocolTargetShowSasViewActionsProtocol + + func targetDeviceIsShowingSasAndExpectingEndOfProtocol(protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async { + await delegate?.targetDeviceIsShowingSasAndExpectingEndOfProtocol( + controller: self, + protocolInstanceUID: protocolInstanceUID, + onSyncSnapshotReception: onSyncSnapshotReception, + onSuccessfulTransfer: onSuccessfulTransfer) + } + + + func successfulTransferWasPerformedOnThisTargetDevice(transferredOwnedCryptoId: ObvCryptoId, postTransferError: Error?) async { + await delegate?.successfulTransferWasPerformedOnThisTargetDevice( + controller: self, + transferredOwnedCryptoId: transferredOwnedCryptoId, + postTransferError: postTransferError) + } + +} + + +fileprivate final class TransferProtocolTargetShowSasViewActions: TransferProtocolTargetShowSasViewActionsProtocol { + + weak var delegate: TransferProtocolTargetShowSasViewActionsProtocol? + + func targetDeviceIsShowingSasAndExpectingEndOfProtocol(protocolInstanceUID: UID, onSyncSnapshotReception: @escaping () -> Void, onSuccessfulTransfer: @escaping (ObvCryptoId, Error?) -> Void) async { + await delegate?.targetDeviceIsShowingSasAndExpectingEndOfProtocol( + protocolInstanceUID: protocolInstanceUID, + onSyncSnapshotReception: onSyncSnapshotReception, + onSuccessfulTransfer: onSuccessfulTransfer) + } + + + func successfulTransferWasPerformedOnThisTargetDevice(transferredOwnedCryptoId: ObvCryptoId, postTransferError: Error?) async { + await delegate?.successfulTransferWasPerformedOnThisTargetDevice( + transferredOwnedCryptoId: transferredOwnedCryptoId, + postTransferError: postTransferError) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/03SuccessfulTransferConfirmation/SuccessfulTransferConfirmationView.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/03SuccessfulTransferConfirmation/SuccessfulTransferConfirmationView.swift new file mode 100644 index 00000000..014161ff --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/03SuccessfulTransferConfirmation/SuccessfulTransferConfirmationView.swift @@ -0,0 +1,244 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes + + +protocol SuccessfulTransferConfirmationViewActionsProtocol: AnyObject { + func userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice(transferredOwnedCryptoId: ObvCryptoId, userWantsToAddAnotherProfile: Bool) async +} + + + +struct SuccessfulTransferConfirmationView: View { + + let actions: SuccessfulTransferConfirmationViewActionsProtocol + let model: Model + + struct Model { + let transferredOwnedCryptoId: ObvCryptoId + let postTransferError: Error? + } + + private func doneButtonTapped() { + Task { + await actions.userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice( + transferredOwnedCryptoId: model.transferredOwnedCryptoId, + userWantsToAddAnotherProfile: false) + } + } + + private func addButtonTapped() { + Task { + await actions.userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice( + transferredOwnedCryptoId: model.transferredOwnedCryptoId, + userWantsToAddAnotherProfile: true) + } + } + + + private static func stringForError(_ error: Error) -> String { + error.localizedDescription + } + + + var body: some View { + ScrollView { + VStack { + + NewOnboardingHeaderView(title: "PROFILE_ADDED_SUCCESSFULLY", + subtitle: nil) + + + LaptopcomputerAndIphoneView() + .padding(.top) + + // In case something went wrong after a successful snapshot restoratin at the engine level, + // we show the error here. + + if let postTransferError = model.postTransferError { + HStack { + Label( + title: { + VStack(alignment: .leading) { + Text("OWNED_IDENTITY_TRANSFER_KINDA_FAILED_TITLE") + .font(.headline) + .padding(.bottom, 4) + Text("OWNED_IDENTITY_TRANSFER_KINDA_FAILED_BODY_\(ObvMessengerConstants.toEmailForSendingInitializationFailureErrorMessage)") + .font(.body) + .foregroundStyle(.primary) + .padding(.bottom, 4) + Text(verbatim: Self.stringForError(postTransferError)) + .font(.body) + .foregroundStyle(.secondary) + .padding(.bottom, 4) + HStack { + Spacer() + Button("COPY_ERROR_TO_PASTEBOARD") { + UIPasteboard.general.string = Self.stringForError(postTransferError) + } + } + } + }, + icon: { + Image(systemIcon: .exclamationmarkCircle) + .foregroundStyle(Color(UIColor.systemYellow)) + .padding(.trailing) + } + ) + Spacer() + } + .padding(.top) + } + + HStack { + Text("DO_YOU_HAVE_OTHER_PROFILES_TO_ADD") + .font(.body) + .foregroundStyle(.secondary) + Spacer() + }.padding(.top) + + HStack { + InternalButton(style: .white, "ADD_ANOTHER_PROFILE", action: addButtonTapped) + InternalButton(style: .blue, "NO_OTHER_PROFILE_TO_ADD", action: doneButtonTapped) + }.padding(.top) + + Spacer() + + } + .padding(.horizontal) + } + } +} + + +// MARK: - Button used in this view only + +private struct InternalButton: View { + + private let style: Style + private let key: LocalizedStringKey + private let action: () -> Void + @Environment(\.isEnabled) var isEnabled + + enum Style { + case blue + case white + } + + private var backgroundColor: Color { + switch style { + case .blue: + return Color("Blue01") + case .white: + return Color(UIColor.systemBackground) + } + } + + + private var textColor: Color { + switch style { + case .blue: + return .white + case .white: + return Color(UIColor.label) + } + } + + private var borderOpacity: Double { + switch style { + case .blue: + return 0.0 + case .white: + return 1.0 + } + } + + init(style: Style, _ key: LocalizedStringKey, action: @escaping () -> Void) { + self.style = style + self.key = key + self.action = action + } + + var body: some View { + Button(action: action) { + Text(key) + .foregroundStyle(textColor) + .padding(.horizontal, 26) + .padding(.vertical, 16) + .frame(maxWidth: .infinity, maxHeight: .infinity) + } + .background(backgroundColor) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .opacity(isEnabled ? 1.0 : 0.6) + .overlay(content: { + RoundedRectangle(cornerRadius: 12) + .stroke(Color(UIColor.lightGray), lineWidth: 1) + .opacity(borderOpacity) + }) + } + +} + + +private struct LaptopcomputerAndIphoneView: View { + var body: some View { + HStack { + Spacer() + Image(systemIcon: .laptopcomputerAndIphone) + .font(.system(size: 80, weight: .regular)) + .foregroundStyle(.secondary) + .overlay(alignment: .topTrailing) { + Image(systemIcon: .checkmarkCircleFill) + .font(.system(size: 30, weight: .regular)) + .foregroundStyle(Color(UIColor.systemGreen)) + .background(.background, in: .circle.inset(by: -2)) + .offset(y: -10) + } + Spacer() + } + } +} + + + +// MARK: - Previews + +struct SuccessfulTransferConfirmationView_Previews: PreviewProvider { + + private static let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + + private final class ActionsForPreviews: SuccessfulTransferConfirmationViewActionsProtocol { + func userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice(transferredOwnedCryptoId: ObvCryptoId, userWantsToAddAnotherProfile: Bool) async {} + } + + private static let actions = ActionsForPreviews() + + static var previews: some View { + SuccessfulTransferConfirmationView(actions: actions, model: .init(transferredOwnedCryptoId: ownedCryptoId, postTransferError: ObvError.errorForPreviews)) + } + + + fileprivate enum ObvError: Error { + case errorForPreviews + } + +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/03SuccessfulTransferConfirmation/SuccessfulTransferConfirmationViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/03SuccessfulTransferConfirmation/SuccessfulTransferConfirmationViewController.swift new file mode 100644 index 00000000..116ab355 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/OnTargetDevice/03SuccessfulTransferConfirmation/SuccessfulTransferConfirmationViewController.swift @@ -0,0 +1,87 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import SwiftUI +import ObvTypes + + +protocol SuccessfulTransferConfirmationViewControllerDelegate: AnyObject { + func userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice(controller: SuccessfulTransferConfirmationViewController, transferredOwnedCryptoId: ObvCryptoId, userWantsToAddAnotherProfile: Bool) async +} + + +final class SuccessfulTransferConfirmationViewController: UIHostingController, SuccessfulTransferConfirmationViewActionsProtocol { + + private weak var delegate: SuccessfulTransferConfirmationViewControllerDelegate? + + init(model: SuccessfulTransferConfirmationView.Model, delegate: SuccessfulTransferConfirmationViewControllerDelegate) { + let actions = SuccessfulTransferConfirmationViewActions() + let view = SuccessfulTransferConfirmationView(actions: actions, model: model) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + configureNavigation(animated: false) + } + + + override func viewIsAppearing(_ animated: Bool) { + super.viewIsAppearing(animated) + configureNavigation(animated: animated) + } + + + private func configureNavigation(animated: Bool) { + navigationItem.largeTitleDisplayMode = .never + navigationController?.setNavigationBarHidden(false, animated: animated) + } + + // SuccessfulTransferConfirmationViewActionsProtocol + + func userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice(transferredOwnedCryptoId: ObvCryptoId, userWantsToAddAnotherProfile: Bool) async { + await delegate?.userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice( + controller: self, + transferredOwnedCryptoId: transferredOwnedCryptoId, + userWantsToAddAnotherProfile: userWantsToAddAnotherProfile) + } + +} + + +private final class SuccessfulTransferConfirmationViewActions: SuccessfulTransferConfirmationViewActionsProtocol { + + weak var delegate: SuccessfulTransferConfirmationViewActionsProtocol? + + func userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice(transferredOwnedCryptoId: ObvCryptoId, userWantsToAddAnotherProfile: Bool) async { + await delegate?.userWantsToDismissOnboardingAfterSuccessfulOwnedIdentityTransferOnThisTargetDevice( + transferredOwnedCryptoId: transferredOwnedCryptoId, + userWantsToAddAnotherProfile: userWantsToAddAnotherProfile) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/TransferProtocolViewsNotifications.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/TransferProtocolViewsNotifications.swift new file mode 100644 index 00000000..ae43e039 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/TransferProtocolViews/TransferProtocolViewsNotifications.swift @@ -0,0 +1,97 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + +fileprivate struct OptionalWrapper { + let value: T? + public init() { + self.value = nil + } + public init(_ value: T?) { + self.value = value + } +} + +enum TransferProtocolViewsNotifications { + case someNotification(value: Bool) + + private enum Name { + case someNotification + + private var namePrefix: String { String(describing: TransferProtocolViewsNotifications.self) } + + private var nameSuffix: String { String(describing: self) } + + var name: NSNotification.Name { + let name = [namePrefix, nameSuffix].joined(separator: ".") + return NSNotification.Name(name) + } + + static func forInternalNotification(_ notification: TransferProtocolViewsNotifications) -> NSNotification.Name { + switch notification { + case .someNotification: return Name.someNotification.name + } + } + } + private var userInfo: [AnyHashable: Any]? { + let info: [AnyHashable: Any]? + switch self { + case .someNotification(value: let value): + info = [ + "value": value, + ] + } + return info + } + + func post(object anObject: Any? = nil) { + let name = Name.forInternalNotification(self) + NotificationCenter.default.post(name: name, object: anObject, userInfo: userInfo) + } + + func postOnDispatchQueue(object anObject: Any? = nil) { + let name = Name.forInternalNotification(self) + postOnDispatchQueue(withLabel: "Queue for posting \(name.rawValue) notification", object: anObject) + } + + func postOnDispatchQueue(_ queue: DispatchQueue) { + let name = Name.forInternalNotification(self) + queue.async { + NotificationCenter.default.post(name: name, object: nil, userInfo: userInfo) + } + } + + private func postOnDispatchQueue(withLabel label: String, object anObject: Any? = nil) { + let name = Name.forInternalNotification(self) + let userInfo = self.userInfo + DispatchQueue(label: label).async { + NotificationCenter.default.post(name: name, object: anObject, userInfo: userInfo) + } + } + + static func observeSomeNotification(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (Bool) -> Void) -> NSObjectProtocol { + let name = Name.someNotification.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let value = notification.userInfo!["value"] as! Bool + block(value) + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/WelcomeScreen/WelcomeScreenHostingController.swift b/iOSClient/ObvMessenger/ObvMessenger/Onboarding/WelcomeScreen/WelcomeScreenHostingController.swift deleted file mode 100644 index fd203b3e..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/Onboarding/WelcomeScreen/WelcomeScreenHostingController.swift +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import UIKit -import SwiftUI - - -protocol WelcomeScreenHostingControllerDelegate: AnyObject { - - func userWantsToContinueAsNewUser() async - func userWantsToRestoreBackup() async - func userWantsWantsToScanQRCode() async - func userWantsToClearExternalOlvidURL() async - -} - - -protocol CanShowInformationAboutExternalOlvidURL { - func showInformationAboutOlvidURL(_: OlvidURL?) -} - -final class WelcomeScreenHostingController: UIHostingController, WelcomeScreenHostingViewStoreDelegate, CanShowInformationAboutExternalOlvidURL { - - fileprivate let store: WelcomeScreenHostingViewStore - weak var delegate: WelcomeScreenHostingControllerDelegate? - - init(delegate: WelcomeScreenHostingControllerDelegate) { - let store = WelcomeScreenHostingViewStore() - self.store = store - let view = WelcomeScreenHostingView(store: store) - super.init(rootView: view) - self.delegate = delegate - store.delegate = self - } - - @objc required dynamic init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - // WelcomeScreenHostingViewStoreDelegate - - func userWantsToContinueAsNewUser() { - Task { await - delegate?.userWantsToContinueAsNewUser() - } - } - - func userWantsToRestoreBackup() { - Task { await - delegate?.userWantsToRestoreBackup() - } - } - - func userWantsWantsToScanQRCode() { - Task { await - delegate?.userWantsWantsToScanQRCode() - } - } - - func userWantsToClearExternalOlvidURL() { - Task { await - delegate?.userWantsToClearExternalOlvidURL() - } - } - - // CanShowInformationAboutExternalOlvidURL - - func showInformationAboutOlvidURL(_ externalOlvidURL: OlvidURL?) { - withAnimation { - store.externalOlvidURL = externalOlvidURL - } - } - -} - - -protocol WelcomeScreenHostingViewStoreDelegate: AnyObject { - - func userWantsToContinueAsNewUser() - func userWantsToRestoreBackup() - func userWantsWantsToScanQRCode() - func userWantsToClearExternalOlvidURL() - -} - - -final class WelcomeScreenHostingViewStore: ObservableObject { - - weak var delegate: WelcomeScreenHostingViewStoreDelegate? - @Published var externalOlvidURL: OlvidURL? - - func userWantsToContinueAsNewUser() { - delegate?.userWantsToContinueAsNewUser() - } - - func userWantsToRestoreBackup() { - delegate?.userWantsToRestoreBackup() - } - - fileprivate func userWantsWantsToScanQRCode() { - delegate?.userWantsWantsToScanQRCode() - } - - fileprivate func userWantsToClearExternalOlvidURL() { - delegate?.userWantsToClearExternalOlvidURL() - } - -} - - -struct WelcomeScreenHostingView: View { - - @ObservedObject var store: WelcomeScreenHostingViewStore - @Environment(\.colorScheme) var colorScheme - - private var textForExternalOlvidURL: Text? { - guard let olvidURL = store.externalOlvidURL else { return nil } - switch olvidURL.category { - case .invitation(urlIdentity: let urlIdentity): - return Text("WILL_INVITE_\(urlIdentity.fullDisplayName)_AFTER_ONBOARDING") - case .mutualScan: - return nil - case .configuration(serverAndAPIKey: let serverAndAPIKey, betaConfiguration: _, keycloakConfig: _): - guard serverAndAPIKey != nil else { return nil } - return Text("WILL_PROCESS_API_KEY_AFTER_ONBOARDING") - case .openIdRedirect: - return nil - } - } - - var body: some View { - ZStack { - Image("SplashScreenBackground") - .resizable() - .edgesIgnoringSafeArea(.all) - VStack { - Image("logo") - .resizable() - .scaledToFit() - .padding(.horizontal) - .padding(.bottom, 32) - .frame(maxWidth: 300) - ScrollView { - TextExplanationsView() - if let textForExternalOlvidURL = textForExternalOlvidURL { - ObvCardView { - HStack { - textForExternalOlvidURL - .font(.body) - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - Spacer() - } - } - .overlay( - Image(systemIcon: .xmarkCircleFill) - .font(Font.system(size: 20, weight: .heavy, design: .rounded)) - .foregroundColor(.red) - .background(Circle().fill(Color.white)) - .offset(x: 10, y: -10) - .onTapGesture { store.userWantsToClearExternalOlvidURL() }, - alignment: .topTrailing) - .padding(.top, 16) - .padding(.trailing, 10) - .transition(.asymmetric(insertion: .opacity, removal: .scale)) - } - } - Spacer() - HStack { - OlvidButton(style: colorScheme == .dark ? .standard : .standardAlt, - title: Text("Restore a backup"), - systemIcon: .folderCircle) { - store.userWantsToRestoreBackup() - } - OlvidButton(style: colorScheme == .dark ? .standard : .standardAlt, - title: Text("SCAN_QR_CODE"), - systemIcon: .qrcodeViewfinder) { - store.userWantsWantsToScanQRCode() - } - } - .padding(.bottom, 4) - OlvidButton(style: colorScheme == .dark ? .blue : .white, - title: Text("Continue as a new user"), - systemIcon: .personCropCircle) { - store.userWantsToContinueAsNewUser() - } - } - .foregroundColor(.white) - .padding(.horizontal) - .padding(.bottom) - } - } - -} - -fileprivate struct TextExplanationsView: View { - - var body: some View { - HStack { - VStack(alignment: .leading, spacing: 24) { - Text("Welcome to Olvid!") - .font(.headline) - Text("If you are a new Olvid user, simply click Continue as a new user below.") - .lineLimit(nil) - .multilineTextAlignment(.leading) - Text("If you already used Olvid and want to restore your identity and contacts from a backup, click Restore a backup") - .lineLimit(nil) - .multilineTextAlignment(.leading) - } - .font(.body) - .fixedSize(horizontal: false, vertical: true) - Spacer() - } - } - -} - - - - -struct WelcomeScreenHostingView_Previews: PreviewProvider { - - static let mockupStore = WelcomeScreenHostingViewStore() - - static var previews: some View { - Group { - WelcomeScreenHostingView(store: mockupStore) - .environment(\.colorScheme, .light) - WelcomeScreenHostingView(store: mockupStore) - .environment(\.colorScheme, .dark) - WelcomeScreenHostingView(store: mockupStore) - .environment(\.colorScheme, .dark) - .previewDevice(PreviewDevice(rawValue: "com.apple.CoreSimulator.SimDeviceType.iPhone-SE")) - .previewDisplayName("iPhone SE 1st generation") - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/OwnedIdentityChooser/LatestCurrentOwnedIdentityStorage.swift b/iOSClient/ObvMessenger/ObvMessenger/OwnedIdentityChooser/LatestCurrentOwnedIdentityStorage.swift index 031e6cb7..d8b90107 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/OwnedIdentityChooser/LatestCurrentOwnedIdentityStorage.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/OwnedIdentityChooser/LatestCurrentOwnedIdentityStorage.swift @@ -16,12 +16,12 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import Foundation import ObvTypes import OlvidUtils import ObvUICoreData +import ObvSettings /// This singleton allows to store and fetch a `LatestCurrentOWnedIdentityStored` to and from the user defaults shared between the app and the app extensions. diff --git a/iOSClient/ObvMessenger/ObvMessenger/OwnedIdentityChooser/OwnedIdentityChooserViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/OwnedIdentityChooser/OwnedIdentityChooserViewController.swift index 031be778..b615fa00 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/OwnedIdentityChooser/OwnedIdentityChooserViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/OwnedIdentityChooser/OwnedIdentityChooserViewController.swift @@ -25,7 +25,10 @@ import CoreData import Combine import ObvUI import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvSettings +import ObvDesignSystem + protocol OwnedIdentityChooserViewControllerDelegate: AnyObject { func userUsedTheOwnedIdentityChooserViewControllerToChoose(ownedCryptoId: ObvCryptoId) async @@ -136,16 +139,10 @@ fileprivate struct OwnedIdentityChooserInnerView: View { } List { ForEach(models) { model in - if #available(iOS 15.0, *) { - OwnedIdentityItemView( - model: model, - delegate: delegate) - .listRowSeparator(.hidden) - } else { - OwnedIdentityItemView( - model: model, - delegate: delegate) - } + OwnedIdentityItemView( + model: model, + delegate: delegate) + .listRowSeparator(.hidden) } .if(allowDeletion, transform: { view in view.onDelete { indexSet in @@ -169,9 +166,9 @@ fileprivate struct OwnedIdentityChooserInnerView: View { } if allowCreation { OlvidButton(style: .blue, - title: Text("CREATE_NEW_OWNED_IDENTITY"), + title: Text("ADD_OWNED_IDENTITY"), systemIcon: .personCropCircleBadgePlus) { - ObvMessengerInternalNotification.userWantsToCreateNewOwnedIdentity + ObvMessengerInternalNotification.userWantsToAddOwnedProfile .postOnDispatchQueue() }.padding(.horizontal).padding(.bottom) } @@ -347,8 +344,8 @@ struct OwnedIdentityChooserInnerView_Previews: PreviewProvider { private static let ownedCryptoIds = identitiesAsURLs.map({ ObvURLIdentity(urlRepresentation: $0)!.cryptoId }) private static let ownedCircledInitialsConfigurations = [ - CircledInitialsConfiguration.contact(initial: "S", photoURL: nil, showGreenShield: false, showRedShield: false, cryptoId: ownedCryptoIds[0], tintAdjustementMode: .normal), - CircledInitialsConfiguration.contact(initial: "T", photoURL: nil, showGreenShield: false, showRedShield: false, cryptoId: ownedCryptoIds[1], tintAdjustementMode: .normal), + CircledInitialsConfiguration.contact(initial: "S", photo: nil, showGreenShield: false, showRedShield: false, cryptoId: ownedCryptoIds[0], tintAdjustementMode: .normal), + CircledInitialsConfiguration.contact(initial: "T", photo: nil, showGreenShield: false, showRedShield: false, cryptoId: ownedCryptoIds[1], tintAdjustementMode: .normal), ] private static let models = [ diff --git a/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto01.imageset/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto01.imageset/Contents.json new file mode 100644 index 00000000..eaf82933 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto01.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "DevPhoto01.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto01.imageset/DevPhoto01.jpg b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto01.imageset/DevPhoto01.jpg new file mode 100644 index 00000000..a5fc85c2 Binary files /dev/null and b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto01.imageset/DevPhoto01.jpg differ diff --git a/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto02.imageset/Contents.json b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto02.imageset/Contents.json new file mode 100644 index 00000000..e41d62f9 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto02.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "DevPhoto02.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto02.imageset/DevPhoto02.jpg b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto02.imageset/DevPhoto02.jpg new file mode 100644 index 00000000..7a6d5f09 Binary files /dev/null and b/iOSClient/ObvMessenger/ObvMessenger/Preview Content/Preview Assets.xcassets/Photos/DevPhoto02.imageset/DevPhoto02.jpg differ diff --git a/iOSClient/ObvMessenger/ObvMessenger/RootViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/RootViewController.swift new file mode 100644 index 00000000..70967ec8 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/RootViewController.swift @@ -0,0 +1,866 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import UIKit +import ObvEngine +import ObvUICoreData +import Intents +import os.log +import ObvSettings + + +@MainActor +final class RootViewController: UIViewController, LocalAuthenticationViewControllerDelegate, KeycloakSceneDelegate { + + enum ChildViewControllerType { + case initializer + case initializationFailure(error: Error) + //case call(callInProgress: GenericCall) + case call(model: OlvidCallViewController.Model) + case metaFlow(obvEngine: ObvEngine) + case localAuthentication + } + + private let initializerViewController = InitializerViewController() + private var initializationFailureViewController: InitializationFailureViewController? + //private var callViewHostingController: CallViewHostingController? + private var callViewController: OlvidCallViewController? + private var metaFlowViewController: MetaFlowController? + private var localAuthenticationVC: LocalAuthenticationViewController? + + private var sceneIsActive = false + //private var callInProgress: GenericCall? + private var callViewControllerModel: OlvidCallViewController.Model? + private var preferMetaViewControllerOverCallViewController = false + private var userSuccessfullyPerformedLocalAuthentication = false + private var shouldAutomaticallyPerformLocalAuthentication = true + private var keycloakManagerWillPresentAuthenticationScreen = false + + private var observationTokens = [NSObjectProtocol]() + + private var uptimeAtTheTimeOfChangeoverToNotActiveState: TimeInterval? + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "RootViewController") + + deinit { + observationTokens.forEach { NotificationCenter.default.removeObserver($0) } + } + + override func viewDidLoad() { + + // This allows to make sure the initializer view controller is part of the view hierarchy + _ = getInitializerViewController() + + observeVoIPNotifications() + + } + + + func sceneDidBecomeActive(_ scene: UIScene) { + + debugPrint("🫵 sceneDidBecomeActive") + + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + sceneIsActive = true + Task(priority: .userInitiated) { + do { + try await switchToNextViewController() + } catch { + assertionFailure(error.localizedDescription) + } + } + Task { + _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() + await KeycloakManagerSingleton.shared.setKeycloakSceneDelegate(to: self) + guard let metaFlowViewController else { assertionFailure(); return } + metaFlowViewController.sceneDidBecomeActive(scene) + } + + } + + + func sceneDidEnterBackground(_ scene: UIScene) { + + // If the user successfully authenticated, we want to reset reset the `uptimeAtTheTimeOfChangeoverToNotActiveState` for this scene. + // Note that if the user successfully authenticated, it means that the app was initialized properly. + if userSuccessfullyPerformedLocalAuthentication { + uptimeAtTheTimeOfChangeoverToNotActiveState = TimeInterval.getUptime() + } + + userSuccessfullyPerformedLocalAuthentication = false + shouldAutomaticallyPerformLocalAuthentication = true + keycloakManagerWillPresentAuthenticationScreen = false + + // In case we have a local authentication policy, we dismiss any presented view controller to prevent a glitch + // during next relaunch (the presented screen would show in front of the other screens, including the privacy screen and + // the authentication screen. + + if ObvMessengerSettings.Privacy.localAuthenticationPolicy != .none { + presentedViewController?.dismiss(animated: false) + } + + } + + + func sceneWillResignActive(_ scene: UIScene) { + + sceneIsActive = false + + // If the keycloak manager is about to present a Safari authentication screen, we ignore the fact that the scene will resign active. + guard !keycloakManagerWillPresentAuthenticationScreen else { + keycloakManagerWillPresentAuthenticationScreen = false + return + } + + Task(priority: .userInitiated) { + do { + try await switchToNextViewController() + } catch { + assertionFailure(error.localizedDescription) + } + } + Task { + _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() + guard let metaFlowViewController else { assertionFailure(); return } + metaFlowViewController.sceneWillResignActive(scene) + } + + } + + + func sceneWillEnterForeground(_ scene: UIScene) { + + // We now deal with the closing of opened hidden profiles: + // - If the `hiddenProfileClosePolicy` is `.background` + // - and the elapsed time since the last switch to background is "large", + // We close any opened hidden profile. + if ObvMessengerSettings.Privacy.hiddenProfileClosePolicy == .background { + let timeIntervalSinceLastChangeoverToNotActiveState = TimeInterval.getUptime() - (uptimeAtTheTimeOfChangeoverToNotActiveState ?? 0) + assert(0 <= timeIntervalSinceLastChangeoverToNotActiveState) + if timeIntervalSinceLastChangeoverToNotActiveState > ObvMessengerSettings.Privacy.timeIntervalForBackgroundHiddenProfileClosePolicy.timeInterval || ObvMessengerSettings.Privacy.timeIntervalForBackgroundHiddenProfileClosePolicy == .immediately { + Task { + // The following line allows to make sure we won't switch to the hidden profile + await LatestCurrentOwnedIdentityStorage.shared.removeLatestHiddenCurrentOWnedIdentityStored() + await switchToNonHiddenOwnedIdentityIfCurrentIsHidden() + } + } + } + + } + + + private func switchToNextViewController() async throws { + assert(Thread.isMainThread) + + let result = await NewAppStateManager.shared.waitUntilAppInitializationSucceededOrFailed() + + let obvEngine: ObvEngine + + switch result { + case .failure(let error): + return try await switchToChildViewController(type: .initializationFailure(error: error)) + case .success(let _obvEngine): + obvEngine = _obvEngine + } + + // If we reach this point, the initialization was successful. + + // Since the app did initialize, we don't want the initializerWindow to show the spinner ever again + + self.initializerViewController.appInitializationSucceeded() + + // We choose the most appropriate view controller to show depending on the current view controller and on various state variables + + guard sceneIsActive else { + // When the user choosed to lock the screen, we hide the app content each time the scene becomes inactive + if ObvMessengerSettings.Privacy.localAuthenticationPolicy.lockScreen { + return try await switchToChildViewController(type: .initializer) + } + return + } + + // If we reach this point, the scene is active + + // If there is a call in progress, show it instead of any other view controller + + if let callViewControllerModel, !preferMetaViewControllerOverCallViewController { + //return try await switchToChildViewController(type: .call(callInProgress: callInProgress)) + return try await switchToChildViewController(type: .call(model: callViewControllerModel)) + } + + // At this point, there is not call in progress (or the user prefers to see the meta view controller instead of the call view) + + if userSuccessfullyPerformedLocalAuthentication || !ObvMessengerSettings.Privacy.localAuthenticationPolicy.lockScreen { + return try await switchToChildViewController(type: .metaFlow(obvEngine: obvEngine)) + } else { + try await switchToChildViewController(type: .localAuthentication) + let localAuthenticationVC = try await getLocalAuthenticationViewController() + if shouldAutomaticallyPerformLocalAuthentication { + shouldAutomaticallyPerformLocalAuthentication = false + await localAuthenticationVC.performLocalAuthentication( + customPasscodePresentingViewController: self, + uptimeAtTheTimeOfChangeoverToNotActiveState: uptimeAtTheTimeOfChangeoverToNotActiveState) + } else { + await localAuthenticationVC.shouldPerformLocalAuthentication() + } + return + } + + } + + + private func switchToChildViewController(type: ChildViewControllerType) async throws { + + debugPrint("🫵 switchToChildViewController(\(type))") + + defer { + // Make sure the child view controller views are in the right order + if let view = localAuthenticationVC?.view { + self.view.bringSubviewToFront(view) + } + self.view.bringSubviewToFront(initializerViewController.view) + } + + switch type { + + case .initializer: + let vc = getInitializerViewController() + vc.becomeFirstResponder() + vc.view.isHidden = true + hideAllChildViewControllersBut(type: type) + + case .initializationFailure(error: let error): + let vc = getInitializationFailureViewController() + vc.becomeFirstResponder() + vc.view.isHidden = true + vc.error = error + hideAllChildViewControllersBut(type: type) + +// case .call(callInProgress: let callInProgress): +// let vc = getCallViewHostingController(callInProgress: callInProgress) +// vc.becomeFirstResponder() +// vc.view.isHidden = true +// hideAllChildViewControllersBut(type: type) + + case .call(model: let callViewControllerModel): + let vc = getOlvidCallViewController(callViewControllerModel: callViewControllerModel) + vc.becomeFirstResponder() + vc.view.isHidden = true + hideAllChildViewControllersBut(type: type) + + case .metaFlow(obvEngine: let obvEngine): + let vc = try await getMetaFlowViewController(obvEngine: obvEngine) + vc.becomeFirstResponder() + vc.view.isHidden = true + hideAllChildViewControllersBut(type: type) + + case .localAuthentication: + let vc = try await getLocalAuthenticationViewController() + vc.becomeFirstResponder() + vc.view.isHidden = true + hideAllChildViewControllersBut(type: type) + + } + + } + + + private func hideAllChildViewControllersBut(type: ChildViewControllerType) { + + let allChildViewControllers = [ + initializerViewController, + initializationFailureViewController, + //callViewHostingController, + callViewController, + metaFlowViewController, + localAuthenticationVC, + ] + + // We hide all view controllers + + allChildViewControllers.forEach { vcToHide in + vcToHide?.view.endEditing(true) + vcToHide?.view.isHidden = true + } + + // We show the appropriate one. Certain child view controllers, like the call view controller, must make sure no view controller is presented. Otherwise, the user would not see them. Other situations are a bit more complex: for example, when pasting an API key, the system request an authorization to the user, and hides the meta flow controller. When unhiding the meta flow, we don't want to dismiss the presented view controller. + + switch type { + case .initializer: + initializerViewController.view.isHidden = false + case .initializationFailure: + initializationFailureViewController?.view.isHidden = false + case .call: +// callViewHostingController?.view.isHidden = false + callViewController?.view.isHidden = false + allChildViewControllers.forEach({ $0?.presentedViewController?.dismiss(animated: true) }) + case .metaFlow: + metaFlowViewController?.view.isHidden = false + case .localAuthentication: + localAuthenticationVC?.view.isHidden = false + } + + // When type != call, we want to deallocate the CallViewController (to release the OlvidCall object) + + switch type { + case .call: + break + default: + removeCurrentCallViewController() + } + + } + + + // MARK: - Creating/Getting child view controllers + + private func getMetaFlowViewController(obvEngine: ObvEngine) async throws -> MetaFlowController { + + guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { assertionFailure(); throw ObvError.couldNotGetAppDelegate } + + if let metaFlowViewController { + + return metaFlowViewController + + } else { + + guard let createPasscodeDelegate = await appDelegate.createPasscodeDelegate else { assertionFailure(); throw ObvError.couldNotGetCreatePasscodeDelegate } + guard let localAuthenticationDelegate = await appDelegate.localAuthenticationDelegate else { assertionFailure(); throw ObvError.couldNotGetLocalAuthenticationDelegate } + guard let appBackupDelegate = await appDelegate.appBackupDelegate else { assertionFailure(); throw ObvError.couldNotGetAppBackupDelegate } + guard let storeKitDelegate = await appDelegate.storeKitDelegate else { assertionFailure(); throw ObvError.couldNotGetStoreKitDelegate } + + // Since we had to "await", another task might have created the MetaFlowController in the meantime + + if let metaFlowViewController { + return metaFlowViewController + } + + assert(self.metaFlowViewController == nil) + let shouldShowCallBanner = callViewControllerModel != nil + let metaFlowViewController = MetaFlowController( + obvEngine: obvEngine, + createPasscodeDelegate: createPasscodeDelegate, + localAuthenticationDelegate: localAuthenticationDelegate, + appBackupDelegate: appBackupDelegate, + storeKitDelegate: storeKitDelegate, + shouldShowCallBanner: shouldShowCallBanner) + + addChildViewControllerAndChildView(metaFlowViewController) + assert(self.metaFlowViewController == nil) + self.metaFlowViewController = metaFlowViewController + return metaFlowViewController + + } + + } + + + private func getInitializationFailureViewController() -> InitializationFailureViewController { + + if let initializationFailureViewController { + + return initializationFailureViewController + + } else { + + let initializationFailureViewController = InitializationFailureViewController() + addChildViewControllerAndChildView(initializationFailureViewController) + self.initializationFailureViewController = initializationFailureViewController + return initializationFailureViewController + + } + + } + + + private func getInitializerViewController() -> InitializerViewController { + + if initializerViewController.parent == nil { + addChildViewControllerAndChildView(initializerViewController) + } + + return initializerViewController + + } + + +// private func getCallViewHostingController(callInProgress: GenericCall) -> CallViewHostingController { +// +// if let callViewHostingController { +// callViewHostingController.view.removeFromSuperview() +// callViewHostingController.willMove(toParent: nil) +// callViewHostingController.removeFromParent() +// callViewHostingController.didMove(toParent: nil) +// self.callViewHostingController = nil +// } +// let callViewHostingController = CallViewHostingController(call: callInProgress) +// addChildViewControllerAndChildView(callViewHostingController) +// self.callViewHostingController = callViewHostingController +// return callViewHostingController +// +// } + + private func getOlvidCallViewController(callViewControllerModel: OlvidCallViewController.Model) -> OlvidCallViewController { + + removeCurrentCallViewController() + + let callViewController = OlvidCallViewController(model: callViewControllerModel) + addChildViewControllerAndChildView(callViewController) + self.callViewController = callViewController + return callViewController + + } + + + private func removeCurrentCallViewController() { + if let callViewController { + callViewController.view.removeFromSuperview() + callViewController.willMove(toParent: nil) + callViewController.removeFromParent() + callViewController.didMove(toParent: nil) + self.callViewController = nil + } + } + + + private func getLocalAuthenticationViewController() async throws -> LocalAuthenticationViewController { + + guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { assertionFailure(); throw ObvError.couldNotGetAppDelegate } + + if let localAuthenticationVC { + + return localAuthenticationVC + + } else { + + guard let localAuthenticationDelegate = await appDelegate.localAuthenticationDelegate else { assertionFailure(); throw ObvError.couldNotGetLocalAuthenticationDelegate } + + // Since we had to "await", another task might have created the view controller in the meantime + if let localAuthenticationVC { + return localAuthenticationVC + } + + let localAuthenticationVC = LocalAuthenticationViewController(localAuthenticationDelegate: localAuthenticationDelegate, delegate: self) + addChildViewControllerAndChildView(localAuthenticationVC) + assert(self.localAuthenticationVC == nil) + self.localAuthenticationVC = localAuthenticationVC + return localAuthenticationVC + + } + + } + + /// Helper method + private func addChildViewControllerAndChildView(_ vc: UIViewController) { + guard vc.parent == nil else { assertionFailure(); return } + vc.willMove(toParent: self) + self.addChild(vc) + vc.didMove(toParent: self) + vc.view.translatesAutoresizingMaskIntoConstraints = false + self.view.addSubview(vc.view) + self.view.pinAllSidesToSides(of: vc.view) + } + + + // MARK: - Errors + + enum ObvError: Error { + case couldNotGetLocalAuthenticationDelegate + case couldNotGetAppDelegate + case couldNotGetCreatePasscodeDelegate + case couldNotGetAppBackupDelegate + case couldNotGetStoreKitDelegate + case metaFlowViewControllerIsNotSet + } + +} + + +// MARK: - LocalAuthenticationViewControllerDelegate + +extension RootViewController { + + func userLocalAuthenticationDidSucceed(authenticationWasPerformed: Bool) async { + + userSuccessfullyPerformedLocalAuthentication = true + // If we just performed authentication, it means the screen was locked. If the hidden profile close policy is `.screenLock`, we should make sure the current identity is not hidden. + if authenticationWasPerformed && ObvMessengerSettings.Privacy.hiddenProfileClosePolicy == .screenLock { + // The following line allows to make sure we won't switch to the hidden profile + await LatestCurrentOwnedIdentityStorage.shared.removeLatestHiddenCurrentOWnedIdentityStored() + await switchToNonHiddenOwnedIdentityIfCurrentIsHidden() + } + Task(priority: .userInitiated) { [weak self] in + do { + try await self?.switchToNextViewController() + } catch { + assertionFailure(error.localizedDescription) + } + } + + } + + + func tooManyWrongPasscodeAttemptsCausedLockOut() async { + await switchToNonHiddenOwnedIdentityIfCurrentIsHidden() + ObvMessengerInternalNotification.tooManyWrongPasscodeAttemptsCausedLockOut.postOnDispatchQueue() + + } + +} + + +extension RootViewController { + + /// Allows to switch to a non hidden profile if the current one is hidden + /// + /// This is called in two cases: + /// - when the user just authenticated and the hidden profile closing policy is `screenLock` + /// - or when she was locked out after entering too many bad passcodes. + private func switchToNonHiddenOwnedIdentityIfCurrentIsHidden() async { + // In case the meta flow controller is nil, we do nothing. This is not an issue: if it is nil, there is no risk it displays a hidden profile. + await self.metaFlowViewController?.switchToNonHiddenOwnedIdentityIfCurrentIsHidden() + } + + +} + + +// MARK: - Observing notifications + +extension RootViewController { + + private func observeVoIPNotifications() { + observationTokens.append(contentsOf: [ +// VoIPNotification.observeShowCallViewControllerForAnsweringNonCallKitIncomingCall { incomingCall in +// Task(priority: .userInitiated) { [weak self] in +// self?.preferMetaViewControllerOverCallViewController = false +// await self?.setCallInProgress(to: incomingCall) +// } +// }, + VoIPNotification.observeNewCallToShow { model in + Task(priority: .userInitiated) { [weak self] in + self?.preferMetaViewControllerOverCallViewController = false + await self?.setCallViewControllerModel(to: model) + } + }, + VoIPNotification.observeNoMoreCallInProgress { + Task(priority: .userInitiated) { [weak self] in + self?.preferMetaViewControllerOverCallViewController = false + await self?.setCallViewControllerModel(to: nil) + } + }, +// VoIPNotification.observeNewOutgoingCall { newOutgoingCall in +// Task(priority: .userInitiated) { [weak self] in +// self?.preferMetaViewControllerOverCallViewController = false +// await self?.setCallInProgress(to: newOutgoingCall) +// } +// }, +// VoIPNotification.observeAnIncomingCallShouldBeShownToUser { newOutgoingCall in +// Task(priority: .userInitiated) { [weak self] in +// self?.preferMetaViewControllerOverCallViewController = false +// await self?.setCallInProgress(to: newOutgoingCall) +// } +// }, + VoIPNotification.observeHideCallView { + Task(priority: .userInitiated) { [weak self] in + self?.preferMetaViewControllerOverCallViewController = true + do { + try await self?.switchToNextViewController() + } catch { + assertionFailure(error.localizedDescription) + } + } + }, + VoIPNotification.observeShowCallView { + Task(priority: .userInitiated) { [weak self] in + self?.preferMetaViewControllerOverCallViewController = false + do { + try await self?.switchToNextViewController() + } catch { + assertionFailure(error.localizedDescription) + } + } + }, + ]) + } + +} + + +// MARK: - Managing calls + +extension RootViewController { + +// private func setCallInProgress(to call: GenericCall?) async { +// _ = await NewAppStateManager.shared.waitUntilAppIsInitialized() +// callInProgress = call +// Task(priority: .userInitiated) { [weak self] in +// do { +// try await self?.switchToNextViewController() +// } catch { +// assertionFailure(error.localizedDescription) +// } +// } +// } + + + private func setCallViewControllerModel(to newCallViewControllerModel: OlvidCallViewController.Model?) async { + _ = await NewAppStateManager.shared.waitUntilAppIsInitialized() + callViewControllerModel = newCallViewControllerModel + Task(priority: .userInitiated) { [weak self] in + do { + try await self?.switchToNextViewController() + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + + private func processINStartCallIntent(startCallIntent: INStartCallIntent, obvEngine: ObvEngine) { + + os_log("📲 Process INStartCallIntent", log: Self.log, type: .info) + + guard let handle = startCallIntent.contacts?.first?.personHandle?.value else { + os_log("📲 Could not get appropriate value of INStartCallIntent", log: Self.log, type: .error) + return + } + + ObvStack.shared.performBackgroundTaskAndWait { (context) in + + if let callUUID = UUID(handle), let item = try? PersistedCallLogItem.get(callUUID: callUUID, within: context), let ownedCryptoId = item.ownedCryptoId { + let contactCryptoIds = item.logContacts.compactMap { $0.contactIdentity?.cryptoId } + let groupId = item.groupIdentifier + os_log("📲 Posting a userWantsToCallButWeShouldCheckSheIsAllowedTo notification following an INStartCallIntent", log: Self.log, type: .info) + ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set(contactCryptoIds), groupId: groupId) + .postOnDispatchQueue() + } else if let contact = try? PersistedObvContactIdentity.getAll(within: context).first(where: { $0.getGenericHandleValue(engine: obvEngine) == handle }) { + // To be compatible with previous 1to1 versions + let contactCryptoId = contact.cryptoId + guard let ownedCryptoId = contact.ownedIdentity?.cryptoId else { return } + ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(ownedCryptoId: ownedCryptoId, contactCryptoIds: Set([contactCryptoId]), groupId: nil) + .postOnDispatchQueue() + } else { + os_log("📲 Could not parse INStartCallIntent", log: Self.log, type: .fault) + } + + } + } + + + private func processINSendMessageIntent(sendMessageIntent: INSendMessageIntent) { + os_log("📲 Process INSendMessageIntent", log: Self.log, type: .info) + + guard let handle = sendMessageIntent.recipients?.first?.personHandle?.value else { + os_log("📲 Could not get appropriate value of INSendMessageIntent", log: Self.log, type: .error) + assertionFailure() + return + } + + guard let objectPermanentID = ObvManagedObjectPermanentID(handle) else { assertionFailure(); return } + + ObvStack.shared.performBackgroundTaskAndWait { (context) in + guard let contact = try? PersistedObvContactIdentity.getManagedObject(withPermanentID: objectPermanentID, within: context) else { assertionFailure(); return } + guard let ownedCryptoId = contact.ownedIdentity?.cryptoId else { assertionFailure(); return } + let deepLink: ObvDeepLink + if let oneToOneDiscussion = contact.oneToOneDiscussion { + deepLink = .singleDiscussion(ownedCryptoId: ownedCryptoId, objectPermanentID: oneToOneDiscussion.discussionPermanentID) + } else { assertionFailure(); return } + ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink).postOnDispatchQueue() + } + } + +} + + +// MARK: - Continuing User Activities + +extension RootViewController { + + func continueUserActivities(_ userActivities: Set) { + Task { [weak self] in + for userActivity in userActivities { + await self?.continueUserActivity(userActivity) + } + } + } + + func continueUserActivity(_ userActivity: NSUserActivity) async { + let obvEngine = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() + if let url = userActivity.webpageURL { + // Called when tapping the "open in" button on an "identity" webpage or when tapping a call entry in the system call log (?) + await openOlvidURL(url) + } else if let startCallIntent = userActivity.interaction?.intent as? INStartCallIntent { + processINStartCallIntent(startCallIntent: startCallIntent, obvEngine: obvEngine) + } else if let sendMessageIntent = userActivity.interaction?.intent as? INSendMessageIntent { + processINSendMessageIntent(sendMessageIntent: sendMessageIntent) + } else { + assertionFailure() + } + } + + + +} + + +// MARK: - Opening Olvid URLs + +extension RootViewController { + + private func openOlvidURL(_ url: URL) async { + assert(Thread.isMainThread) + os_log("🥏 Call to openDeepLink with URL %{public}@", log: Self.log, type: .info, url.debugDescription) + guard let olvidURL = OlvidURL(urlRepresentation: url) else { assertionFailure(); return } + os_log("An OlvidURL struct was successfully created", log: Self.log, type: .info) + await NewAppStateManager.shared.handleOlvidURL(olvidURL) + } + + + func openURLContexts(_ URLContexts: Set) { + os_log("📲 Scene openURLContexts", log: Self.log, type: .info) + // Called when tapping an Olvid link, e.g., on an invite webpage + Task { + + _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() + + assert(URLContexts.count < 2) + if let url = URLContexts.first?.url { + + if url.scheme == "olvid" || url.scheme == "olvid.dev" { + + guard var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: true) else { return } + urlComponents.scheme = "https" + guard let newUrl = urlComponents.url else { return } + await openOlvidURL(newUrl) + return + + } else if url.isFileURL { + + /* We are certainly dealing with an AirDrop'ed file. See + * https://developer.apple.com/library/archive/qa/qa1587/_index.html + * for handling Open in... + */ + let deepLink = ObvDeepLink.airDrop(fileURL: url) + Task { + ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) + .postOnDispatchQueue() + } + return + + } else { + assertionFailure() + } + + } + + } + + } + +} + + +// MARK: - Performing Tasks + +extension RootViewController { + + func performActionFor(shortcutItem: UIApplicationShortcutItem) async -> Bool { + // Called when the users taps on the "Scan QR code" shortcut on the app icon + os_log("UIWindowScene perform action for shortcut", log: Self.log, type: .info) + _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() + guard let shortcut = ApplicationShortcut(shortcutItem.type) else { assertionFailure(); return false } + let deepLink: ObvDeepLink + switch shortcut { + case .scanQRCode: + deepLink = ObvDeepLink.qrCodeScan + } + os_log("🥏 Sending a UserWantsToNavigateToDeepLink notification for shortut item %{public}@", log: Self.log, type: .info, shortcut.description) + ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) + .postOnDispatchQueue() + return true + } + +} + + +// MARK: - KeycloakSceneDelegate + +extension RootViewController { + + func requestViewControllerForPresenting() async throws -> UIViewController { + + _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() + + guard let metaFlowViewController else { + assertionFailure() + throw ObvError.metaFlowViewControllerIsNotSet + } + + keycloakManagerWillPresentAuthenticationScreen = true + + var viewControllerToReturn = metaFlowViewController as UIViewController + while let presentedViewController = viewControllerToReturn.presentedViewController { + viewControllerToReturn = presentedViewController + } + return viewControllerToReturn + + } + +} + + + +// MARK: - Helpers + +extension RootViewController.ChildViewControllerType: CustomDebugStringConvertible { + + var debugDescription: String { + switch self { + case .initializer: return "initializer" + case .initializationFailure: return "initializationFailure" + case .call: return "call" + case .metaFlow: return "metaFlow" + case .localAuthentication: return "localAuthentication" + } + } + +} + + +fileprivate extension PersistedObvContactIdentity { + + func getGenericHandleValue(engine: ObvEngine) -> String? { + guard let context = self.managedObjectContext else { assertionFailure(); return nil } + var _handleTagData: Data? + context.performAndWait { + guard let ownedIdentity = self.ownedIdentity else { assertionFailure(); return } + do { + _handleTagData = try engine.computeTagForOwnedIdentity(with: ownedIdentity.cryptoId, on: self.cryptoId.getIdentity()) + } catch { + assertionFailure() + return + } + } + guard let handleTagData = _handleTagData else { assertionFailure(); return nil } + return handleTagData.base64EncodedString() + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/SceneDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/SceneDelegate.swift index 86c12467..cc5e4055 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/SceneDelegate.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/SceneDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,45 +25,20 @@ import ObvEngine import OlvidUtils import ObvUICoreData +final class SceneDelegate: UIResponder, UIWindowSceneDelegate { -class SceneDelegate: UIResponder, UIWindowSceneDelegate, KeycloakSceneDelegate, ObvErrorMaker { - - static let errorDomain = "SceneDelegate" - - private var initializerWindow: UIWindow? - private var localAuthenticationWindow: UIWindow? - private var initializationFailureWindow: UIWindow? - private var metaWindow: UIWindow? - private var callWindow: UIWindow? - - private let animator = UIViewPropertyAnimator(duration: 0.15, curve: .linear) + var window: UIWindow? + var privacyWindow: UIWindow? // For iOS - private var allWindows: [UIWindow?] { [ - initializerWindow, - localAuthenticationWindow, - initializationFailureWindow, - metaWindow, - callWindow, - ] } + private var rootViewController: RootViewController? + private let privacyViewControler = UIStoryboard(name: "LaunchScreen", bundle: nil).instantiateInitialViewController()! - private var callNotificationObserved = false - private var observationTokens = [NSObjectProtocol]() - - private var sceneIsActive = false - private var userSuccessfullyPerformedLocalAuthentication = false - private var shouldAutomaticallyPerformLocalAuthentication = true - private var callInProgress: GenericCall? - private var preferMetaWindowOverCallWindow = false - private var keycloakManagerWillPresentAuthenticationScreen = false - - private var uptimeAtTheTimeOfChangeoverToNotActiveStateForScene = [UIScene: TimeInterval]() - private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "SceneDelegate") - - deinit { - observationTokens.forEach { NotificationCenter.default.removeObserver($0) } - } + /// On some occasions, we want to prevent the privacy window from showing the next time ``SceneDelegate.sceneWillResignActive(_:)`` is called. + /// This variable is typically set to `true` from a child view controller, just before showing a system alert. This is for example the case during onboarding, + /// when requesting the authorization to send push notifications. + fileprivate var preventPrivacyWindowFromShowingOnNextWillResignActive = false func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. @@ -74,136 +49,100 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, KeycloakSceneDelegate, guard let windowScene = (scene as? UIWindowScene) else { assertionFailure(); return } - initializerWindow = UIWindow(windowScene: windowScene) - initializerWindow?.rootViewController = InitializerViewController() - changeKeyWindow(to: initializerWindow) - - observeVoIPNotifications(scene) - + let rootViewController = RootViewController() + self.rootViewController = rootViewController + let window = UIWindow(windowScene: windowScene) + window.rootViewController = rootViewController + window.makeKeyAndVisible() + self.window = window + + let privacyWindow = UIWindow(windowScene: windowScene) + privacyWindow.windowLevel = .alert + privacyWindow.rootViewController = privacyViewControler + privacyWindow.makeKeyAndVisible() + self.privacyWindow = privacyWindow + if !connectionOptions.userActivities.isEmpty { os_log("📲 Scene will connect with user activities", log: Self.log, type: .info) - Task { [weak self] in - for userActivity in connectionOptions.userActivities { - self?.scene(scene, continue: userActivity) - } - } + rootViewController.continueUserActivities(connectionOptions.userActivities) } - + if !connectionOptions.urlContexts.isEmpty { os_log("📲 Scene will connect with url contexts", log: Self.log, type: .info) - Task { [weak self] in - self?.scene(scene, openURLContexts: connectionOptions.urlContexts) - } + rootViewController.openURLContexts(connectionOptions.urlContexts) } - + if let shortcutItem = connectionOptions.shortcutItem { os_log("📲 Scene will connect with a shortcutItem", log: Self.log, type: .info) Task { [weak self] in - await self?.windowScene(windowScene, performActionFor: shortcutItem) + assert(self?.rootViewController != nil) + _ = await self?.rootViewController?.performActionFor(shortcutItem: shortcutItem) } } } + + + func scene(_ scene: UIScene, openURLContexts URLContexts: Set) { + // Called when, e.g., the user taps on an Olvid backup file from the Files app. + os_log("🧦 openURLContexts", log: Self.log, type: .info) + rootViewController?.openURLContexts(URLContexts) + } + func sceneDidDisconnect(_ scene: UIScene) { // Called as the scene is being released by the system. // This occurs shortly after the scene enters the background, or when its session is discarded. // Release any resources associated with this scene that can be re-created the next time the scene connects. // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). - debugPrint("sceneDidDisconnect") os_log("🧦 sceneDidDisconnect", log: Self.log, type: .info) } + func sceneDidBecomeActive(_ scene: UIScene) { // Called when the scene has moved from an inactive state to an active state. // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. - sceneIsActive = true - Task(priority: .userInitiated) { - await switchToNextWindowForScene(scene) - } - Task { - _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() - await KeycloakManagerSingleton.shared.setKeycloakSceneDelegate(to: self) - if let metaWindow = metaWindow, let metaFlowController = metaWindow.rootViewController as? MetaFlowController { - metaFlowController.sceneDidBecomeActive(scene) - } else { - assertionFailure() - } - } + os_log("🧦 sceneDidBecomeActive", log: Self.log, type: .info) + assert(rootViewController != nil) + rootViewController?.sceneDidBecomeActive(scene) + self.privacyWindow?.resignKey() + self.privacyWindow?.isHidden = true } + func sceneWillResignActive(_ scene: UIScene) { // Called when the scene will move from an active state to an inactive state. // This may occur due to temporary interruptions (ex. an incoming phone call). - os_log("🧦 sceneWillResignActive", log: Self.log, type: .info) - - sceneIsActive = false - - // If the keycloak manager is about to present a Safari authentication screen, we ignore the fact that the scene will resign active. - guard !keycloakManagerWillPresentAuthenticationScreen else { - keycloakManagerWillPresentAuthenticationScreen = false - return - } - - Task(priority: .userInitiated) { - await switchToNextWindowForScene(scene) - } - Task { - _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() - if let metaWindow = metaWindow, let metaFlowController = metaWindow.rootViewController as? MetaFlowController { - metaFlowController.sceneWillResignActive(scene) - } else { - assertionFailure() - } + assert(rootViewController != nil) + rootViewController?.sceneWillResignActive(scene) + if !preventPrivacyWindowFromShowingOnNextWillResignActive { + self.privacyWindow?.makeKeyAndVisible() } + preventPrivacyWindowFromShowingOnNextWillResignActive = false } + func sceneWillEnterForeground(_ scene: UIScene) { // Called as the scene transitions from the background to the foreground. // Use this method to undo the changes made on entering the background. - debugPrint("sceneWillEnterForeground") os_log("🧦 sceneWillEnterForeground", log: Self.log, type: .info) - - // We now deal with the closing of opened hidden profiles: - // - If the `hiddenProfileClosePolicy` is `.background` - // - and the elapsed time since the last switch to background is "large", - // We close any opened hidden profile. - if ObvMessengerSettings.Privacy.hiddenProfileClosePolicy == .background { - let uptimeAtTheTimeOfChangeoverToNotActiveState = uptimeAtTheTimeOfChangeoverToNotActiveStateForScene[scene] ?? 0 - let timeIntervalSinceLastChangeoverToNotActiveState = TimeInterval.getUptime() - uptimeAtTheTimeOfChangeoverToNotActiveState - assert(0 <= timeIntervalSinceLastChangeoverToNotActiveState) - if timeIntervalSinceLastChangeoverToNotActiveState > ObvMessengerSettings.Privacy.timeIntervalForBackgroundHiddenProfileClosePolicy.timeInterval || ObvMessengerSettings.Privacy.timeIntervalForBackgroundHiddenProfileClosePolicy == .immediately { - Task { - // The following line allows to make sure we won't switch to the hidden profile - await LatestCurrentOwnedIdentityStorage.shared.removeLatestHiddenCurrentOWnedIdentityStored() - await switchToNonHiddenOwnedIdentityIfCurrentIsHidden() - } - } - } - + assert(rootViewController != nil) + preventPrivacyWindowFromShowingOnNextWillResignActive = false + rootViewController?.sceneWillEnterForeground(scene) + window?.makeKeyAndVisible() } + func sceneDidEnterBackground(_ scene: UIScene) { // Called as the scene transitions from the foreground to the background. // Use this method to save data, release shared resources, and store enough scene-specific state information to restore the scene back to its current state. - os_log("🧦 sceneDidEnterBackground", log: Self.log, type: .info) - - // If the user successfully authenticated, we want to reset reset the `uptimeAtTheTimeOfChangeoverToNotActiveState` for this scene. - // Note that if the user successfully authenticated, it means that the app was initialized properly. - if userSuccessfullyPerformedLocalAuthentication { - uptimeAtTheTimeOfChangeoverToNotActiveStateForScene[scene] = TimeInterval.getUptime() - } - - userSuccessfullyPerformedLocalAuthentication = false - shouldAutomaticallyPerformLocalAuthentication = true - keycloakManagerWillPresentAuthenticationScreen = false - + assert(rootViewController != nil) + rootViewController?.sceneDidEnterBackground(scene) } - // MARK: - Continuing User Activities func scene(_ scene: UIScene, willContinueUserActivityWithType userActivityType: String) { @@ -217,17 +156,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, KeycloakSceneDelegate, os_log("📲 Continue user activity", log: Self.log, type: .info) Task { assert(Thread.isMainThread) - let obvEngine = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() - if let url = userActivity.webpageURL { - // Called when tapping the "open in" button on an "identity" webpage or when tapping a call entry in the system call log (?) - await openOlvidURL(url) - } else if let startCallIntent = userActivity.interaction?.intent as? INStartCallIntent { - processINStartCallIntent(startCallIntent: startCallIntent, obvEngine: obvEngine) - } else if let sendMessageIntent = userActivity.interaction?.intent as? INSendMessageIntent { - processINSendMessageIntent(sendMessageIntent: sendMessageIntent) - } else { - assertionFailure() - } + assert(rootViewController != nil) + await rootViewController?.continueUserActivity(userActivity) } } @@ -243,455 +173,20 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, KeycloakSceneDelegate, func windowScene(_ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem) async -> Bool { // Called when the users taps on the "Scan QR code" shortcut on the app icon os_log("UIWindowScene perform action for shortcut", log: Self.log, type: .info) - _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() - guard let shortcut = ApplicationShortcut(shortcutItem.type) else { assertionFailure(); return false } - let deepLink: ObvDeepLink - switch shortcut { - case .scanQRCode: - deepLink = ObvDeepLink.qrCodeScan - } - os_log("🥏 Sending a UserWantsToNavigateToDeepLink notification for shortut item %{public}@", log: Self.log, type: .info, shortcut.description) - ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) - .postOnDispatchQueue() - return true - } - - - // MARK: - Opening URLs - - func scene(_ scene: UIScene, openURLContexts URLContexts: Set) { - os_log("📲 Scene openURLContexts", log: Self.log, type: .info) - // Called when tapping an Olvid link, e.g., on an invite webpage - Task { - - _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() - - assert(URLContexts.count < 2) - if let url = URLContexts.first?.url { - - if url.scheme == "olvid" { - - guard var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: true) else { return } - urlComponents.scheme = "https" - guard let newUrl = urlComponents.url else { return } - await openOlvidURL(newUrl) - return - - } else if url.isFileURL { - - /* We are certainly dealing with an AirDrop'ed file. See - * https://developer.apple.com/library/archive/qa/qa1587/_index.html - * for handling Open in... - */ - let deepLink = ObvDeepLink.airDrop(fileURL: url) - Task { - ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) - .postOnDispatchQueue() - } - return - - } else { - assertionFailure() - } - - } - - } - - } - - - // MARK: - Switching between windows - - @MainActor - private func switchToNextWindowForScene(_ scene: UIScene) async { - assert(Thread.isMainThread) - - guard let windowScene = (scene as? UIWindowScene) else { assertionFailure(); return } - guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { assertionFailure(); return } - - // When switching view controller, we alway make sure the metaWindow is available. - // The only exception is when the initialization failed. - - if metaWindow == nil { - let result = await NewAppStateManager.shared.waitUntilAppInitializationSucceededOrFailed() - switch result { - case .failure(let error): - initializationFailureWindow = UIWindow(windowScene: windowScene) - let initializationFailureVC = InitializationFailureViewController() - initializationFailureVC.error = error - let nav = UINavigationController(rootViewController: initializationFailureVC) - initializationFailureWindow?.rootViewController = nav - changeKeyWindow(to: initializationFailureWindow) - return - case .success(let obvEngine): - if metaWindow == nil { - metaWindow = UIWindow(windowScene: windowScene) - guard let createPasscodeDelegate = await appDelegate.createPasscodeDelegate else { assertionFailure(); return } - guard let appBackupDelegate = await appDelegate.appBackupDelegate else { assertionFailure(); return } - metaWindow?.rootViewController = MetaFlowController(obvEngine: obvEngine, createPasscodeDelegate: createPasscodeDelegate, appBackupDelegate: appBackupDelegate) - metaWindow?.alpha = 0.0 - } - } - } - - // We make sure all the windows are instanciated - - if localAuthenticationWindow == nil { - localAuthenticationWindow = UIWindow(windowScene: windowScene) - guard let localAuthenticationDelegate = await appDelegate.localAuthenticationDelegate else { assertionFailure(); return } - let localAuthenticationVC = LocalAuthenticationViewController(localAuthenticationDelegate: localAuthenticationDelegate, delegate: self) - localAuthenticationWindow?.rootViewController = localAuthenticationVC - } - - // If we reach this point, we know the initialization succeeded and that the metaWindow was initialized - - guard let initializerWindow = self.initializerWindow, - let metaWindow = self.metaWindow, - let localAuthenticationWindow = self.localAuthenticationWindow else { - assertionFailure(); return - } - - // Since the app did initialize, we don't want the initializerWindow to show the spinner ever again - - (initializerWindow.rootViewController as? InitializerViewController)?.appInitializationSucceeded() - - // We choose the most appropriate window to show depending on the current key window and on various state variables - - if sceneIsActive { - - // If there is a call in progress, show it instead of any other view controller - - if let callInProgress = callInProgress, !preferMetaWindowOverCallWindow { - if callWindow == nil || (callWindow?.rootViewController as? CallViewHostingController)?.callUUID != callInProgress.uuid { - callWindow = UIWindow(windowScene: windowScene) - callWindow?.rootViewController = CallViewHostingController(call: callInProgress) - } - changeKeyWindow(to: callWindow) - return - } - - // At this point, there is not call in progress - - if initializerWindow.isKeyWindow || callWindow?.isKeyWindow == true || localAuthenticationWindow.isKeyWindow { - if userSuccessfullyPerformedLocalAuthentication || !ObvMessengerSettings.Privacy.localAuthenticationPolicy.lockScreen { - changeKeyWindow(to: metaWindow) - return - } else { - changeKeyWindow(to: localAuthenticationWindow) - let localAuthenticationViewController = localAuthenticationWindow.rootViewController as? LocalAuthenticationViewController - if shouldAutomaticallyPerformLocalAuthentication { - shouldAutomaticallyPerformLocalAuthentication = false - let uptimeAtTheTimeOfChangeoverToNotActiveState = uptimeAtTheTimeOfChangeoverToNotActiveStateForScene[scene] - await localAuthenticationViewController?.performLocalAuthentication(uptimeAtTheTimeOfChangeoverToNotActiveState: uptimeAtTheTimeOfChangeoverToNotActiveState) - } else { - await localAuthenticationViewController?.shouldPerformLocalAuthentication() - } - return - } - } - } else { - // When the user choosed to lock the screen, we hide the app content each time the scene becomes inactive - if ObvMessengerSettings.Privacy.localAuthenticationPolicy.lockScreen { - changeKeyWindow(to: initializerWindow) - } - } + assert(rootViewController != nil) + guard let rootViewController else { return false } + return await rootViewController.performActionFor(shortcutItem: shortcutItem) } - - - private func debugDescriptionOfWindow(_ window: UIWindow) -> String { - switch window { - case initializerWindow: - return "Initializer window" - case localAuthenticationWindow: - return "Local authentication window" - case initializationFailureWindow: - return "Initialization failure window" - case metaWindow: - return "Meta Window" - case callWindow: - return "Call Window" - default: - assertionFailure() - return "Unknown" - } - } - - /// Exclusivemy called from ``func switchToNextWindowForScene(_ scene: UIScene) async``. - @MainActor - private func changeKeyWindow(to newKeyWindow: UIWindow?) { - guard let newKeyWindow = newKeyWindow else { assertionFailure(); return } - - // Find the current key window, if none can be found, show one requested - - guard let currentKeyWindow = allWindows.compactMap({ $0 }).first(where: { $0.isKeyWindow }) else { - newKeyWindow.alpha = 1.0 - newKeyWindow.makeKeyAndVisible() - return - } - - // If the current key window is the one requested, there is nothing left to do - - guard currentKeyWindow != newKeyWindow else { return } - - // We have a current key window and a (distinct) window that must become key and visisble. - - // If an animation is in progress, stop it - - if animator.state == UIViewAnimatingState.active { - animator.stopAnimation(true) - } - - // We choose the appropriate animation for the transition between the windows - - debugPrint("🪟 Changing from \(debugDescriptionOfWindow(currentKeyWindow)) to \(debugDescriptionOfWindow(newKeyWindow))") - - switch (currentKeyWindow, newKeyWindow) { - case (initializerWindow, metaWindow), - (metaWindow, callWindow), - (callWindow, metaWindow): - - newKeyWindow.makeKeyAndVisible() - - animator.addAnimations { - newKeyWindow.alpha = 1.0 - } - - animator.addCompletion { [weak self] animatingPosition in - guard animatingPosition == .end else { return } - // If the animation ended, we make sure all non-key windows are properly hidden - self?.hideAllNonKeyWindows() - } - - animator.startAnimation() - - default: - - // No animation - newKeyWindow.alpha = 1.0 - newKeyWindow.makeKeyAndVisible() - hideAllNonKeyWindows() - } - - - } - - - private func hideAllNonKeyWindows() { - let allNonKeyWindows = allWindows.compactMap({ $0 }).filter({ !$0.isKeyWindow }) - allNonKeyWindows.forEach { window in - window.alpha = 0.0 - } - } - - - // MARK: - Managing calls - - @MainActor - private func setCallInProgress(to call: GenericCall?, for scene: UIScene) async { - _ = await NewAppStateManager.shared.waitUntilAppIsInitialized() - callInProgress = call - Task(priority: .userInitiated) { - await switchToNextWindowForScene(scene) - } - } - - - private func observeVoIPNotifications(_ scene: UIScene) { - guard !callNotificationObserved else { return } - defer { callNotificationObserved = true } - observationTokens.append(contentsOf: [ - VoIPNotification.observeShowCallViewControllerForAnsweringNonCallKitIncomingCall { incomingCall in - Task(priority: .userInitiated) { [weak self] in - self?.preferMetaWindowOverCallWindow = false - await self?.setCallInProgress(to: incomingCall, for: scene) - } - }, - VoIPNotification.observeNoMoreCallInProgress { - Task(priority: .userInitiated) { [weak self] in - self?.preferMetaWindowOverCallWindow = false - await self?.setCallInProgress(to: nil, for: scene) - } - }, - VoIPNotification.observeNewOutgoingCall { newOutgoingCall in - Task(priority: .userInitiated) { [weak self] in - self?.preferMetaWindowOverCallWindow = false - await self?.setCallInProgress(to: newOutgoingCall, for: scene) - } - }, - VoIPNotification.observeAnIncomingCallShouldBeShownToUser { newOutgoingCall in - Task(priority: .userInitiated) { [weak self] in - self?.preferMetaWindowOverCallWindow = false - await self?.setCallInProgress(to: newOutgoingCall, for: scene) - } - }, - VoIPNotification.observeHideCallView(queue: .main) { - Task(priority: .userInitiated) { [weak self] in - self?.preferMetaWindowOverCallWindow = true - await self?.switchToNextWindowForScene(scene) - } - }, - VoIPNotification.observeShowCallView(queue: .main) { - Task(priority: .userInitiated) { [weak self] in - self?.preferMetaWindowOverCallWindow = false - await self?.switchToNextWindowForScene(scene) - } - }, - ]) - } - - - private func processINStartCallIntent(startCallIntent: INStartCallIntent, obvEngine: ObvEngine) { - - os_log("📲 Process INStartCallIntent", log: Self.log, type: .info) - - guard let handle = startCallIntent.contacts?.first?.personHandle?.value else { - os_log("📲 Could not get appropriate value of INStartCallIntent", log: Self.log, type: .error) - return - } - - ObvStack.shared.performBackgroundTaskAndWait { (context) in - - if let callUUID = UUID(handle), let item = try? PersistedCallLogItem.get(callUUID: callUUID, within: context) { - let contacts = item.logContacts.compactMap { $0.contactIdentity?.typedObjectID } - os_log("📲 Posting a userWantsToCallButWeShouldCheckSheIsAllowedTo notification following an INStartCallIntent", log: Self.log, type: .info) - ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: contacts, groupId: try? item.getGroupIdentifier()).postOnDispatchQueue() - } else if let contact = try? PersistedObvContactIdentity.getAll(within: context).first(where: { $0.getGenericHandleValue(engine: obvEngine) == handle }) { - // To be compatible with previous 1to1 versions - let contacts = [contact.typedObjectID] - ObvMessengerInternalNotification.userWantsToCallButWeShouldCheckSheIsAllowedTo(contactIDs: contacts, groupId: nil).postOnDispatchQueue() - } else { - os_log("📲 Could not parse INStartCallIntent", log: Self.log, type: .fault) - } - - } - } - - - private func processINSendMessageIntent(sendMessageIntent: INSendMessageIntent) { - os_log("📲 Process INSendMessageIntent", log: Self.log, type: .info) - - guard let handle = sendMessageIntent.recipients?.first?.personHandle?.value else { - os_log("📲 Could not get appropriate value of INSendMessageIntent", log: Self.log, type: .error) - assertionFailure() - return - } - - guard let objectPermanentID = ObvManagedObjectPermanentID(handle) else { assertionFailure(); return } - - ObvStack.shared.performBackgroundTaskAndWait { (context) in - guard let contact = try? PersistedObvContactIdentity.getManagedObject(withPermanentID: objectPermanentID, within: context) else { assertionFailure(); return } - guard let ownedCryptoId = contact.ownedIdentity?.cryptoId else { assertionFailure(); return } - let deepLink: ObvDeepLink - if let oneToOneDiscussion = contact.oneToOneDiscussion { - deepLink = .singleDiscussion(ownedCryptoId: ownedCryptoId, objectPermanentID: oneToOneDiscussion.discussionPermanentID) - } else { assertionFailure(); return } - ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink).postOnDispatchQueue() - } - } - - - // MARK: - Opening Olvid URLs - - @MainActor - private func openOlvidURL(_ url: URL) async { - assert(Thread.isMainThread) - os_log("🥏 Call to openDeepLink with URL %{public}@", log: Self.log, type: .info, url.debugDescription) - guard let olvidURL = OlvidURL(urlRepresentation: url) else { assertionFailure(); return } - os_log("An OlvidURL struct was successfully created", log: Self.log, type: .info) - await NewAppStateManager.shared.handleOlvidURL(olvidURL) - } - - -} - - -// MARK: - LocalAuthenticationViewControllerDelegate - -extension SceneDelegate: LocalAuthenticationViewControllerDelegate { - - @MainActor - func userLocalAuthenticationDidSucceed(authenticationWasPerformed: Bool) async { - userSuccessfullyPerformedLocalAuthentication = true - guard let scene = localAuthenticationWindow?.windowScene else { assertionFailure(); return } - // If we just performed authentication, it means the screen was locked. If the hidden profile close policy is `.screenLock`, we should make sure the current identity is not hidden. - if authenticationWasPerformed && ObvMessengerSettings.Privacy.hiddenProfileClosePolicy == .screenLock { - // The following line allows to make sure we won't switch to the hidden profile - await LatestCurrentOwnedIdentityStorage.shared.removeLatestHiddenCurrentOWnedIdentityStored() - await switchToNonHiddenOwnedIdentityIfCurrentIsHidden() - } - Task(priority: .userInitiated) { - await switchToNextWindowForScene(scene) - } - } - - @MainActor - func tooManyWrongPasscodeAttemptsCausedLockOut() async { - await switchToNonHiddenOwnedIdentityIfCurrentIsHidden() - ObvMessengerInternalNotification.tooManyWrongPasscodeAttemptsCausedLockOut.postOnDispatchQueue() - } - - - /// Allows to switch to a non hidden profile if the current one is hidden - /// - /// This is called in two cases: - /// - when the user just authenticated and the hidden profile closing policy is `screenLock` - /// - or when she was locked out after entering too many bad passcodes. - private func switchToNonHiddenOwnedIdentityIfCurrentIsHidden() async { - let metaFlowController = metaWindow?.rootViewController as? MetaFlowController - // In case the meta flow controller is nil, we do nothing. This is not an issue: if it is nil, there is no risk it displays a hidden profile. - await metaFlowController?.switchToNonHiddenOwnedIdentityIfCurrentIsHidden() - } - } -// MARK: - KeycloakSceneDelegate +// MARK: - Helper of all UIViewControllers -extension SceneDelegate { +extension UIViewController { - func requestViewControllerForPresenting() async throws -> UIViewController { - - _ = await NewAppStateManager.shared.waitUntilAppIsInitializedAndMetaFlowControllerViewDidAppearAtLeastOnce() - - guard let metaWindow = metaWindow else { - throw Self.makeError(message: "The meta window is not set, unexpected at this point") - } - - guard let rootViewController = metaWindow.rootViewController else { - throw Self.makeError(message: "The root view controller is not set, unexpected at this point") - } - - assert(rootViewController is MetaFlowController) - - keycloakManagerWillPresentAuthenticationScreen = true - - return rootViewController - - } - -} - - -// MARK: - PersistedObvContactIdentity utils - -fileprivate extension PersistedObvContactIdentity { - - func getGenericHandleValue(engine: ObvEngine) -> String? { - guard let context = self.managedObjectContext else { assertionFailure(); return nil } - var _handleTagData: Data? - context.performAndWait { - guard let ownedIdentity = self.ownedIdentity else { assertionFailure(); return } - do { - _handleTagData = try engine.computeTagForOwnedIdentity(with: ownedIdentity.cryptoId, on: self.cryptoId.getIdentity()) - } catch { - assertionFailure() - return - } - } - guard let handleTagData = _handleTagData else { assertionFailure(); return nil } - return handleTagData.base64EncodedString() + func preventPrivacyWindowSceneFromShowingOnNextWillResignActive() { + (self.view.window?.windowScene?.delegate as? SceneDelegate)?.preventPrivacyWindowFromShowingOnNextWillResignActive = true } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Singletons/AppTheme.swift b/iOSClient/ObvMessenger/ObvMessenger/Singletons/AppTheme.swift index 5f865cba..5923e9d3 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Singletons/AppTheme.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Singletons/AppTheme.swift @@ -22,6 +22,7 @@ import ObvEngine import ObvTypes import ObvCrypto import ObvUI +import ObvDesignSystem final class ObvSemanticColorScheme { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Singletons/NetworkStatus.swift b/iOSClient/ObvMessenger/ObvMessenger/Singletons/NetworkStatus.swift index d3c83ce6..2f246772 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Singletons/NetworkStatus.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Singletons/NetworkStatus.swift @@ -25,13 +25,12 @@ final class NetworkStatus { static let shared = NetworkStatus() - private let monitor: NWPathMonitor + private let monitor = NWPathMonitor() private let networkQueue = DispatchQueue(label: "Queue for monitoring network path changes") private var currentInterfaceType: NWInterface.InterfaceType? private var currentIsConnectedStatus: Bool init() { - monitor = NWPathMonitor() currentIsConnectedStatus = (monitor.currentPath.status == .satisfied) monitor.pathUpdateHandler = { [weak self] in self?.pathUpdateHandler(nWPath: $0) } monitor.start(queue: networkQueue) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvDisplayableLogs.swift b/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvDisplayableLogs.swift index 001df5df..3f0843a2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvDisplayableLogs.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvDisplayableLogs.swift @@ -19,6 +19,8 @@ import Foundation import ObvUICoreData +import ObvSettings + final class ObvDisplayableLogs { @@ -47,22 +49,20 @@ final class ObvDisplayableLogs { let now = Date() let dateFormatterForLog = self.dateFormatterForLog let dateFormatterForFilename = self.dateFormatterForFilename - if #available(iOS 13.4, *) { - let logURL = self.logURL - internalQueue.async { - guard let data = dateFormatterForLog.string(from: now).appending(" - ").appending(string).appending("\n").data(using: .utf8) else { return } + let logURL = self.logURL + internalQueue.async { + guard let data = dateFormatterForLog.string(from: now).appending(" - ").appending(string).appending("\n").data(using: .utf8) else { return } + if let fh = try? FileHandle(forWritingTo: logURL) { + defer { try? fh.close() } + _ = try? fh.seekToEnd() + fh.write(data) + } else { + guard let firstline = dateFormatterForFilename.string(from: now).appending("\n").data(using: .utf8) else { return } + try? firstline.write(to: logURL) if let fh = try? FileHandle(forWritingTo: logURL) { defer { try? fh.close() } _ = try? fh.seekToEnd() fh.write(data) - } else { - guard let firstline = dateFormatterForFilename.string(from: now).appending("\n").data(using: .utf8) else { return } - try? firstline.write(to: logURL) - if let fh = try? FileHandle(forWritingTo: logURL) { - defer { try? fh.close() } - _ = try? fh.seekToEnd() - fh.write(data) - } } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvPushNotificationManager.swift b/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvPushNotificationManager.swift index a23d63f7..1989b035 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvPushNotificationManager.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvPushNotificationManager.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -21,6 +21,10 @@ import Foundation import os.log import ObvEngine import ObvUICoreData +import OlvidUtils +import ObvTypes +import ObvSettings + actor ObvPushNotificationManager { @@ -62,8 +66,6 @@ actor ObvPushNotificationManager { } - private var kickOtherDevicesOnNextRegister = false - // Private variables private var notificationTokens = [NSObjectProtocol]() @@ -76,33 +78,90 @@ actor ObvPushNotificationManager { private func observeNotifications() { let log = self.log notificationTokens.append(contentsOf: [ - ObvEngineNotificationNew.observeServerRequiresThisDeviceToRegisterToPushNotifications(within: NotificationCenter.default) { ownedCryptoId in + ObvEngineNotificationNew.observeServerRequiresAllActiveOwnedIdentitiesToRegisterToPushNotifications(within: NotificationCenter.default) { os_log("Since the server reported that we need to register to push notification, we do so now", log: log, type: .info) - Task { [weak self] in await self?.tryToRegisterToPushNotifications() } + Task { [weak self] in await self?.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() } }, - ObvMessengerSettingsNotifications.observeIsCallKitEnabledSettingDidChange { [weak self] in - Task { [weak self] in await self?.tryToRegisterToPushNotifications() } + ObvMessengerSettingsNotifications.observeReceiveCallsOnThisDeviceSettingDidChange { [weak self] in + Task { [weak self] in await self?.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() } }, + ObvEngineNotificationNew.observeEngineRequiresOwnedIdentityToRegisterToPushNotifications(within: NotificationCenter.default) { _ in + Task { [weak self] in await self?.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() } + } ]) } - func doKickOtherDevicesOnNextRegister() { - kickOtherDevicesOnNextRegister = true + func requestRegisterToPushNotificationsForAllActiveOwnedIdentities() async { + + let obvEngine = await NewAppStateManager.shared.waitUntilAppIsInitialized() + + let defaultDeviceNameForFirstRegistration = await UIDevice.current.preciseModel + + let tokens: (pushToken: Data, voipToken: Data?)? + if ObvMessengerConstants.areRemoteNotificationsAvailable { + if let _currentDeviceToken = currentDeviceToken { + let voipToken = ObvMessengerSettings.VoIP.receiveCallsOnThisDevice ? currentVoipToken : nil + tokens = (_currentDeviceToken, voipToken) + } else { + tokens = nil + } + } else { + tokens = nil + } + + do { + os_log("🍎 Will call registerToPushNotificationFor (tokens is %{public}@, voipToken is %{public}@)", log: log, type: .info, tokens == nil ? "nil" : "set", tokens?.voipToken == nil ? "nil" : "set") + try await obvEngine.requestRegisterToPushNotificationsForAllActiveOwnedIdentities(deviceTokens: tokens, defaultDeviceNameForFirstRegistration: defaultDeviceNameForFirstRegistration) + os_log("🍎 Youpi, we successfully requested to register to remote push notifications", log: log, type: .info) + } catch { + os_log("🍎 We Could not register to push notifications", log: log, type: .fault) + return + } + } - func tryToRegisterToPushNotifications() async { + func userRequestedReactivationOf(ownedCryptoId: ObvCryptoId, replacedDeviceIdentifier: Data?) async throws { + let obvEngine = await NewAppStateManager.shared.waitUntilAppIsInitialized() - tryToRegisterToPushNotifications(obvEngine: obvEngine) + + let deviceNameForFirstRegistration = await UIDevice.current.preciseModel + + let tokens: (pushToken: Data, voipToken: Data?)? + if ObvMessengerConstants.areRemoteNotificationsAvailable { + if let _currentDeviceToken = currentDeviceToken { + let voipToken = ObvMessengerSettings.VoIP.receiveCallsOnThisDevice ? currentVoipToken : nil + tokens = (_currentDeviceToken, voipToken) + } else { + tokens = nil + } + } else { + tokens = nil + } + + do { + try await obvEngine.reactivateOwnedIdentity(ownedCryptoId: ownedCryptoId, deviceTokens: tokens, deviceNameForFirstRegistration: deviceNameForFirstRegistration, replacedDeviceIdentifier: replacedDeviceIdentifier) + } catch { + os_log("🍎 We could not reactivate owned identity", log: log, type: .fault) + throw error + } + + os_log("🍎 Youpi, we successfully reactivated the owned identity", log: log, type: .info) + } - private func tryToRegisterToPushNotifications(obvEngine: ObvEngine) { + func updateKeycloakPushTopicsIfNeeded(ownedCryptoId: ObvCryptoId, pushTopics: Set) async throws { + + let obvEngine = await NewAppStateManager.shared.waitUntilAppIsInitialized() + + let deviceNameForFirstRegistration = await UIDevice.current.preciseModel + let tokens: (pushToken: Data, voipToken: Data?)? if ObvMessengerConstants.areRemoteNotificationsAvailable { if let _currentDeviceToken = currentDeviceToken { - let voipToken = ObvMessengerSettings.VoIP.isCallKitEnabled ? currentVoipToken : nil + let voipToken = ObvMessengerSettings.VoIP.receiveCallsOnThisDevice ? currentVoipToken : nil tokens = (_currentDeviceToken, voipToken) } else { tokens = nil @@ -110,23 +169,15 @@ actor ObvPushNotificationManager { } else { tokens = nil } - + do { - os_log("🍎 Will call registerToPushNotificationFor (tokens is %{public}@, voipToken is %{public}@)", log: log, type: .info, tokens == nil ? "nil" : "set", tokens?.voipToken == nil ? "nil" : "set") - let log = self.log - try obvEngine.registerToPushNotificationFor(deviceTokens: tokens, kickOtherDevices: kickOtherDevicesOnNextRegister, useMultiDevice: false) { result in - switch result { - case .failure(let error): - os_log("🍎 We Could not register to push notifications: %{public}@", log: log, type: .fault, error.localizedDescription) - case .success: - os_log("🍎 Youpi, we successfully subscribed to remote push notifications", log: log, type: .info) - } - } - kickOtherDevicesOnNextRegister = false + try await obvEngine.updateKeycloakPushTopicsIfNeeded(ownedCryptoId: ownedCryptoId, deviceTokens: tokens, deviceNameForFirstRegistration: deviceNameForFirstRegistration, pushTopics: pushTopics) + os_log("🍎 Youpi, we successfully requested the reactivation of the owned identity", log: log, type: .info) } catch { - os_log("🍎 We Could not register to push notifications", log: log, type: .fault) + os_log("🍎 We could not reactivate owned identity", log: log, type: .fault) return } + } - + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvUserActivitySingleton/ObvUserActivitySingleton.swift b/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvUserActivitySingleton/ObvUserActivitySingleton.swift index 6744dd00..5c1df541 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvUserActivitySingleton/ObvUserActivitySingleton.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Singletons/ObvUserActivitySingleton/ObvUserActivitySingleton.swift @@ -143,7 +143,7 @@ extension ObvUserActivitySingleton { let displayedContactGroupPermanentID = vc.displayedContactGroupPermanentID newUserActivity = .displaySingleGroup(ownedCryptoId: ownedCryptoId, displayedContactGroupPermanentID: displayedContactGroupPermanentID) - case let vc as InvitationsCollectionViewController: + case let vc as AllInvitationsViewController: let ownedCryptoId = vc.currentOwnedCryptoId newUserActivity = .displayInvitations(ownedCryptoId: ownedCryptoId) diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/ContactsTableViewController/ContactsTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/ContactsTableViewController/ContactsTableViewController.swift index 4b7196bf..22f1ed97 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/ContactsTableViewController/ContactsTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/ContactsTableViewController/ContactsTableViewController.swift @@ -23,6 +23,7 @@ import CoreData import ObvTypes import ObvUICoreData import ObvUI +import ObvSettings class ContactsTableViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/FloatingActionButton.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/FloatingActionButton.swift index 793a4fb7..7032db20 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/FloatingActionButton.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/FloatingActionButton.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -68,12 +68,9 @@ struct FloatingButtonView: View { Spacer() if !showBackground { content - } else if #available(iOS 15.0, *) { - content - .background(.ultraThinMaterial) } else { content - .background(Color(.systemBackground).edgesIgnoringSafeArea(.all)) + .background(.ultraThinMaterial) } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultiContactChooserViewControllerDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultiContactChooserViewControllerDelegate.swift index 5b55cf2f..d7447757 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultiContactChooserViewControllerDelegate.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultiContactChooserViewControllerDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultipleContactsHostingViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultipleContactsHostingViewController.swift index d3cee058..bd43830d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultipleContactsHostingViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultipleContactsHostingViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -17,7 +17,6 @@ * along with Olvid. If not, see . */ - import CoreData import os.log import ObvEngine @@ -27,6 +26,8 @@ import ObvUICoreData import SwiftUI import UI_SystemIcon import UI_SystemIcon_SwiftUI +import ObvDesignSystem +import ObvSettings final class MultipleContactsHostingViewController: UIHostingController, ContactsViewStoreDelegate { @@ -469,16 +470,18 @@ fileprivate class ContactsViewStore: NSObject, ObservableObject, UISearchResults /// and perform a search that is likely to return no result. Soon after we cancel the search and display the list again. This seems to work, but /// this is clearely an ugly hack. private func refreshFetchRequestWhenSortOrderChanges() { - notificationTokens.append(ObvMessengerSettingsNotifications.observeContactsSortOrderDidChange(queue: OperationQueue.main) { [weak self] in - withAnimation { - self?.showSortingSpinner = true - } - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(300)) { - self?.refreshFetchRequest(searchText: String(repeating: " ", count: 100)) + notificationTokens.append(ObvMessengerSettingsNotifications.observeContactsSortOrderDidChange { [weak self] in + DispatchQueue.main.async { + withAnimation { + self?.showSortingSpinner = true + } DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(300)) { - self?.refreshFetchRequest(searchText: nil) - withAnimation { - self?.showSortingSpinner = false + self?.refreshFetchRequest(searchText: String(repeating: " ", count: 100)) + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(300)) { + self?.refreshFetchRequest(searchText: nil) + withAnimation { + self?.showSortingSpinner = false + } } } } @@ -576,7 +579,7 @@ struct ContactsScrollingViewOrExplanationView: View { var body: some View { if store.showSortingSpinner { - ObvProgressView() + ProgressView() } else if store.showExplanation && fetchRequest.wrappedValue.isEmpty { ExplanationView() } else { @@ -690,26 +693,22 @@ fileprivate struct ContactsScrollingView: View { Spacer() } } else { - if #available(iOS 14.0, *) { - ScrollViewReader { scrollViewProxy in - innerView - .onChange(of: contactToScrollTo) { (_) in - guard let contact = contactToScrollTo else { return } - withAnimation { - scrollViewProxy.scrollTo(contact) - } + ScrollViewReader { scrollViewProxy in + innerView + .onChange(of: contactToScrollTo) { (_) in + guard let contact = contactToScrollTo else { return } + withAnimation { + scrollViewProxy.scrollTo(contact) } - .onChange(of: scrollToTop) { (_) in - if let firstItem = try? ObvStack.shared.viewContext.fetch(nsFetchRequest).first { - withAnimation { - scrollViewProxy.scrollTo(firstItem) - scrollToTop = false - } + } + .onChange(of: scrollToTop) { (_) in + if let firstItem = try? ObvStack.shared.viewContext.fetch(nsFetchRequest).first { + withAnimation { + scrollViewProxy.scrollTo(firstItem) + scrollToTop = false } } - } - } else { - innerView + } } } if let floatingButtonModel { @@ -783,10 +782,10 @@ fileprivate struct ContactsInnerView: View { if contactCellCanBeSelected(for: contact) { SelectableContactCellView(selection: $multipleSelection, contact: contact, selectionStyle: selectionStyle) } else { - ContactCellView(identity: contact, showChevron: false, selected: false) + ContactCellView(model: contact, state: .init(chevronStyle: .hidden, showDetailsStatus: false)) } } else { - ContactCellView(identity: contact, showChevron: true, selected: tappedContact == contact) + ContactCellView(model: contact, state: .init(chevronStyle: .shown(selected: tappedContact == contact), showDetailsStatus: true)) .onTapGesture { withAnimation(Animation.easeIn(duration: 0.1)) { tappedContact = contact @@ -810,7 +809,7 @@ fileprivate struct ContactsInnerView: View { .foregroundColor(.clear) } } - .obvListStyle() + .listStyle(InsetGroupedListStyle()) } } @@ -845,7 +844,7 @@ fileprivate struct SelectableContactCellView: View { var body: some View { HStack { - ContactCellView(identity: contact, showChevron: false, selected: false) + ContactCellView(model: contact, state: .init(chevronStyle: .hidden, showDetailsStatus: false)) Image(systemName: selection.contains(contact) ? imageSystemName : "circle") .font(Font.system(size: 24, weight: .regular, design: .default)) .foregroundColor(selection.contains(contact) ? imageColor : Color.gray) @@ -863,47 +862,6 @@ fileprivate struct SelectableContactCellView: View { } - -struct ContactCellView: View { - - @ObservedObject var identity: PersistedObvContactIdentity - let showChevron: Bool - var selected: Bool - - private var data: SingleContactIdentity { SingleContactIdentity(persistedContact: identity, observeChangesMadeToContact: false) } - - var body: some View { - HStack { - ContactIdentityCardContentView(model: data, - preferredDetails: .customOrTrusted) - Spacer() - if !identity.isActive { - Image(systemIcon: .exclamationmarkShieldFill) - .foregroundColor(.red) - } else { - ObvActivityIndicator(isAnimating: .constant(identity.devices.isEmpty), style: .medium, color: nil) - } - if showChevron { - switch identity.status { - case .noNewPublishedDetails: - EmptyView() - case .unseenPublishedDetails: - Image(systemName: "person.crop.rectangle") - .foregroundColor(.red) - case .seenPublishedDetails: - Image(systemName: "person.crop.rectangle") - .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) - } - ObvChevron(selected: selected) - } - } - .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped - } - -} - - - struct ExplanationView_Previews: PreviewProvider { static var previews: some View { diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultipleContactsHostingViewControllerDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultipleContactsHostingViewControllerDelegate.swift index 30b40c08..dd216748 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultipleContactsHostingViewControllerDelegate.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/MultipleContactsHostingViewControllerDelegate.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ContactCellView.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ContactCellView.swift new file mode 100644 index 00000000..711840b9 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ContactCellView.swift @@ -0,0 +1,194 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import UI_ObvCircledInitials +import ObvUI +import ObvTypes + + +protocol ContactCellViewModelProtocol: ObservableObject, SpinnerViewForContactCellModelProtocol, ContactTextViewModelProtocol, InitialCircleViewNewModelProtocol { + + var detailsStatus: ContactCellViewTypes.ContactDetailsStatus { get } + +} + + +struct ContactCellViewTypes { + + enum ContactDetailsStatus { + case noNewPublishedDetails + case unseenPublishedDetails + case seenPublishedDetails + } + +} + + +struct ContactCellView: View { + + @ObservedObject var model: Model + let state: State + + struct State { + + let chevronStyle: ChevronStyle + let showDetailsStatus: Bool + + enum ChevronStyle { + case hidden + case shown(selected: Bool) + } + + } + + + var body: some View { + HStack { + HStack(alignment: .center, spacing: 16) { + InitialCircleViewNew(model: model, state: .init(circleDiameter: 60)) + ContactTextView(model: model) + } + + Spacer() + + SpinnerViewForContactCell(model: model) + + if state.showDetailsStatus { + switch model.detailsStatus { + case .noNewPublishedDetails: + EmptyView() + case .unseenPublishedDetails: + Image(systemIcon: .personCropRectangle) + .foregroundColor(.red) + case .seenPublishedDetails: + Image(systemIcon: .personCropRectangle) + .foregroundColor(.secondary) + } + } + + switch state.chevronStyle { + case .hidden: + EmptyView() + case .shown(selected: let selected): + ObvChevron(selected: selected) + } + + } + .contentShape(Rectangle()) // This makes it possible to have an "on tap" gesture that also works when the Spacer is tapped + } + +} + + +protocol ContactTextViewModelProtocol: ObservableObject { + + var customDisplayName: String? { get } + var firstName: String? { get } + var lastName: String? { get } + var displayedPosition: String? { get } + var displayedCompany: String? { get } + +} + + +fileprivate struct ContactTextView: View { + + @ObservedObject var model: Model + + var body: some View { + TextView(model: .init( + titlePart1: model.customDisplayName == nil ? model.firstName : nil, + titlePart2: model.customDisplayName ?? model.lastName, + subtitle: model.displayedPosition, + subsubtitle: model.displayedCompany)) + } + +} + + + + + + + +struct ContactCellView_Previews: PreviewProvider { + + private final class Contact: ContactCellViewModelProtocol { + + let isActive: Bool + let contactHasNoDevice: Bool + let atLeastOneDeviceAllowsThisContactToReceiveMessages: Bool + let detailsStatus: ContactCellViewTypes.ContactDetailsStatus + let customDisplayName: String? + let firstName: String? + let lastName: String? + let displayedPosition: String? + let displayedCompany: String? + let circledInitialsConfiguration: CircledInitialsConfiguration + + + init(detailsStatus: ContactCellViewTypes.ContactDetailsStatus, contactIsActive: Bool, contactHasNoDevice: Bool, atLeastOneDeviceAllowsThisContactToReceiveMessages: Bool, customDisplayName: String?, firstName: String?, lastName: String?, displayedPosition: String?, displayedCompany: String?, circledInitialsConfiguration: CircledInitialsConfiguration) { + self.detailsStatus = detailsStatus + self.isActive = contactIsActive + self.contactHasNoDevice = contactHasNoDevice + self.atLeastOneDeviceAllowsThisContactToReceiveMessages = atLeastOneDeviceAllowsThisContactToReceiveMessages + self.customDisplayName = customDisplayName + self.firstName = firstName + self.lastName = lastName + self.displayedPosition = displayedPosition + self.displayedCompany = displayedCompany + self.circledInitialsConfiguration = circledInitialsConfiguration + } + + } + + private static let identityAsURL = URL(string: "https://invitation.olvid.io/#AwAAAIAAAAAAXmh0dHBzOi8vc2VydmVyLmRldi5vbHZpZC5pbwAA1-NJhAuO742VYzS5WXQnM3ACnlxX_ZTYt9BUHrotU2UBA_FlTxBTrcgXN9keqcV4-LOViz3UtdEmTZppHANX3JYAAAAAGEFsaWNlIFdvcmsgKENFTyBAIE9sdmlkKQ==")! + private static let cryptoId = ObvURLIdentity(urlRepresentation: identityAsURL)!.cryptoId + + static var previews: some View { + Group { + ContactCellView( + model: Contact( + detailsStatus: .noNewPublishedDetails, + contactIsActive: true, + contactHasNoDevice: false, + atLeastOneDeviceAllowsThisContactToReceiveMessages: true, + customDisplayName: nil, + firstName: "Alice", + lastName: "Spring", + displayedPosition: "CEO", + displayedCompany: "MyCo", + circledInitialsConfiguration: .contact( + initial: "S", + photo: nil, + showGreenShield: false, + showRedShield: false, + cryptoId: cryptoId, + tintAdjustementMode: .normal)), + state: .init( + chevronStyle: .hidden, + showDetailsStatus: true)) + .previewLayout(.sizeThatFits) + .padding() + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/SpinnerViewForContactCell.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/SpinnerViewForContactCell.swift new file mode 100644 index 00000000..d325c33e --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/SpinnerViewForContactCell.swift @@ -0,0 +1,51 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI + + +protocol SpinnerViewForContactCellModelProtocol: ObservableObject { + + var contactHasNoDevice: Bool { get } + var isActive: Bool { get } + var atLeastOneDeviceAllowsThisContactToReceiveMessages: Bool { get } + +} + + +/// This view conditionally shows a spinner (typically, when we are creating a channel with the contact), an exclamation mark (when the keycloak contact is inactive), or nothing (most of the time). It is used in the list of contacts, but also in other places, like in the list of group members. +struct SpinnerViewForContactCell: View { + + @ObservedObject var model: Model + + var body: some View { + if !model.isActive { + Image(systemIcon: .exclamationmarkShieldFill) + .foregroundColor(.red) + } else if !model.contactHasNoDevice && !model.atLeastOneDeviceAllowsThisContactToReceiveMessages { + ProgressView() + } else { + EmptyView() + .frame(width: 0, height: 0) + } + } + +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+ContactCellViewNewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+ContactCellViewNewModelProtocol.swift new file mode 100644 index 00000000..7b0ae95b --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+ContactCellViewNewModelProtocol.swift @@ -0,0 +1,38 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvUICoreData + + + +extension PersistedObvContactIdentity: ContactCellViewModelProtocol { + + var detailsStatus: ContactCellViewTypes.ContactDetailsStatus { + switch self.status { + case .noNewPublishedDetails: + return .noNewPublishedDetails + case .seenPublishedDetails: + return .seenPublishedDetails + case .unseenPublishedDetails: + return .unseenPublishedDetails + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+ContactTextViewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+ContactTextViewModelProtocol.swift new file mode 100644 index 00000000..f1fb7739 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+ContactTextViewModelProtocol.swift @@ -0,0 +1,26 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvUICoreData + + +extension PersistedObvContactIdentity: ContactTextViewModelProtocol { + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+InitialCircleViewNewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+InitialCircleViewNewModelProtocol.swift new file mode 100644 index 00000000..cfac4472 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+InitialCircleViewNewModelProtocol.swift @@ -0,0 +1,28 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import UI_ObvCircledInitials +import ObvUICoreData +import CoreData + + +extension PersistedObvContactIdentity: InitialCircleViewNewModelProtocol { + // We only need to declare the protocol conformance here +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+SpinnerViewForContactCellModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+SpinnerViewForContactCellModelProtocol.swift new file mode 100644 index 00000000..7d743f8e --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Contacts/MultiContactChooserViewController/Subviews/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+SpinnerViewForContactCellModelProtocol.swift @@ -0,0 +1,30 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvUICoreData + + +extension PersistedObvContactIdentity: SpinnerViewForContactCellModelProtocol { + + var contactHasNoDevice: Bool { + self.devices.isEmpty + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/DiscussionsTableViewController/DiscussionsTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/DiscussionsTableViewController/DiscussionsTableViewController.swift index 667250ba..0ee756a8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/DiscussionsTableViewController/DiscussionsTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/DiscussionsTableViewController/DiscussionsTableViewController.swift @@ -25,6 +25,8 @@ import ObvEngine import ObvTypes import ObvUI import ObvUICoreData +import ObvDesignSystem +import ObvSettings /// This view controller is replaced by NewDiscussionsViewController under iOS 16 @@ -170,7 +172,6 @@ extension DiscussionsTableViewController { observeIdentityColorStyleDidChangeNotifications() observeDiscussionLocalConfigurationHasBeenUpdatedNotifications() - observeCallLogItemWasUpdatedNotifications() } @@ -193,12 +194,6 @@ extension DiscussionsTableViewController { self.notificationTokens.append(token) } - private func observeCallLogItemWasUpdatedNotifications() { - let token = VoIPNotification.observeCallHasBeenUpdated(queue: OperationQueue.main) { [weak self] _, _ in - self?.tableView.reloadData() - } - self.notificationTokens.append(token) - } private func registerTableViewCell() { self.tableView?.register(UINib(nibName: ObvSubtitleTableViewCell.nibName, bundle: nil), forCellReuseIdentifier: ObvSubtitleTableViewCell.identifier) diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/Cell/NewDiscussionsViewControllerCell.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/Cell/NewDiscussionsViewControllerCell.swift index d5137a0f..c4fc29b0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/Cell/NewDiscussionsViewControllerCell.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/Cell/NewDiscussionsViewControllerCell.swift @@ -19,6 +19,8 @@ import SwiftUI import ObvUI +import ObvDesignSystem + @available(iOS 16.0, *) private let kCircledInitialsViewSize = CircledInitialsView.Size.medium diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/Cell/NewDiscussionsViewControllerCellViewModel.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/Cell/NewDiscussionsViewControllerCellViewModel.swift index d06144b7..a84df3ee 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/Cell/NewDiscussionsViewControllerCellViewModel.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/Cell/NewDiscussionsViewControllerCellViewModel.swift @@ -20,7 +20,10 @@ import Foundation import CoreData import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvSettings +import ObvDesignSystem + @available(iOS 16.0, *) extension NewDiscussionsViewController.Cell { diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/NewDiscussionsViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/NewDiscussionsViewController.swift index c256d2d3..5b2dba3f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/NewDiscussionsViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/Discussions/NewDiscussionsViewController/NewDiscussionsViewController.swift @@ -27,6 +27,7 @@ import OlvidUtils import OSLog import SwiftUI import UIKit +import ObvDesignSystem protocol NewDiscussionsViewControllerDelegate: AnyObject { @@ -302,8 +303,8 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont guard let selectedItem = dataSource.itemIdentifier(for: indexPath) else { return UISwipeActionsConfiguration(actions: []) } switch (selectedItem) { case .persistedDiscussion(let listItemID): - let deleteAllMessagesAction = self.createDeleteAllMessagesAction(for: listItemID) - let archiveDiscussionAction = self.createArchiveDiscussionAction(for: listItemID) + let deleteAllMessagesAction = self.createDeleteAllMessagesContextualAction(for: listItemID) + let archiveDiscussionAction = self.createArchiveDiscussionContextualAction(for: listItemID) let configuration = UISwipeActionsConfiguration(actions: [deleteAllMessagesAction, archiveDiscussionAction]) configuration.performsFirstActionWithFullSwipe = false return configuration @@ -318,8 +319,8 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont guard let selectedItem = dataSource.itemIdentifier(for: indexPath) else { return UISwipeActionsConfiguration(actions: []) } switch (selectedItem) { case .persistedDiscussion(let listItemID): - let unpinAction = self.createUnpinAction(for: listItemID) - let markAllMessagesAsNotNewAction = self.createMarkAllMessagesAsNotNewAction(for: listItemID) + let unpinAction = self.createUnpinContextualAction(for: listItemID) + let markAllMessagesAsNotNewAction = self.createMarkAllMessagesAsNotNewContextualAction(for: listItemID) let configuration = UISwipeActionsConfiguration(actions: [unpinAction, markAllMessagesAsNotNewAction]) configuration.performsFirstActionWithFullSwipe = false return configuration @@ -328,8 +329,8 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont guard let selectedItem = dataSource.itemIdentifier(for: indexPath) else { return UISwipeActionsConfiguration(actions: []) } switch (selectedItem) { case .persistedDiscussion(let listItemID): - let pinAction = self.createPinAction(for: listItemID) - let markAllMessagesAsNotNewAction = self.createMarkAllMessagesAsNotNewAction(for: listItemID) + let pinAction = self.createPinContextualAction(for: listItemID) + let markAllMessagesAsNotNewAction = self.createMarkAllMessagesAsNotNewContextualAction(for: listItemID) let configuration = UISwipeActionsConfiguration(actions: [pinAction, markAllMessagesAsNotNewAction]) configuration.performsFirstActionWithFullSwipe = false return configuration @@ -338,7 +339,7 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont } - private func createMarkAllMessagesAsNotNewAction(for listItemID: (ObvUICoreData.TypeSafeManagedObjectID)) -> UIContextualAction { + private func createMarkAllMessagesAsNotNewContextualAction(for listItemID: (ObvUICoreData.TypeSafeManagedObjectID)) -> UIContextualAction { let markAllAsNotNewAction = UIContextualAction(style: UIContextualAction.Style.normal, title: PersistedMessage.Strings.markAllAsRead) { (action, view, handler) in guard let discussion: PersistedDiscussion = try? PersistedDiscussion.get(objectID: listItemID.objectID, within: ObvStack.shared.viewContext) else { return } ObvMessengerInternalNotification.userWantsToMarkAllMessagesAsNotNewWithinDiscussion(persistedDiscussionObjectID: discussion.objectID, completionHandler: handler) @@ -346,9 +347,19 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont } return markAllAsNotNewAction } + + + private func createMarkAllMessagesAsNotNewAction(for listItemID: (ObvUICoreData.TypeSafeManagedObjectID)) -> UIAction { + let title = NSLocalizedString("MENU_ACTION_TITLE_MARK_ALL_MESSAGES_AS_READ", comment: "") + return UIAction(title: title) { _ in + guard let discussion: PersistedDiscussion = try? PersistedDiscussion.get(objectID: listItemID.objectID, within: ObvStack.shared.viewContext) else { return } + ObvMessengerInternalNotification.userWantsToMarkAllMessagesAsNotNewWithinDiscussion(persistedDiscussionObjectID: discussion.objectID, completionHandler: { _ in }) + .postOnDispatchQueue() + } + } - private func createDeleteAllMessagesAction(for listItemID: (ObvUICoreData.TypeSafeManagedObjectID)) -> UIContextualAction { + private func createDeleteAllMessagesContextualAction(for listItemID: (ObvUICoreData.TypeSafeManagedObjectID)) -> UIContextualAction { let deleteAction = UIContextualAction(style: .destructive, title: CommonString.Word.Delete) { [weak self] (action, view, handler) in guard let discussion: PersistedDiscussion = try? PersistedDiscussion.get(objectID: listItemID.objectID, within: ObvStack.shared.viewContext) else { return } self?.delegate?.userAskedToDeleteDiscussion(discussion, completionHandler: handler) @@ -356,9 +367,18 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont deleteAction.image = UIImage(systemIcon: .trash) return deleteAction } + + + private func createDeleteAllMessagesAction(for listItemID: (ObvUICoreData.TypeSafeManagedObjectID)) -> UIAction { + let title = NSLocalizedString("MENU_ACTION_TITLE_DELETE_ALL_MESSAGES", comment: "") + return UIAction(title: title, attributes: .destructive) { [weak self] _ in + guard let discussion: PersistedDiscussion = try? PersistedDiscussion.get(objectID: listItemID.objectID, within: ObvStack.shared.viewContext) else { return } + self?.delegate?.userAskedToDeleteDiscussion(discussion, completionHandler: { _ in }) + } + } - private func createPinAction(for listItemID: (TypeSafeManagedObjectID)) -> UIContextualAction { + private func createPinContextualAction(for listItemID: (TypeSafeManagedObjectID)) -> UIContextualAction { let pinAction = UIContextualAction(style: .normal, title: CommonString.Word.Pin) { [weak self] (action, view, handler) in self?.pinDiscussion(listItemID: listItemID, handler: handler) } @@ -367,6 +387,54 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont return pinAction } + + private func createPinAction(for listItemID: (TypeSafeManagedObjectID)) -> UIAction { + let title = NSLocalizedString("MENU_ACTION_TITLE_PIN_DISCUSSION", comment: "") + return UIAction(title: title) { [weak self] _ in + self?.pinDiscussion(listItemID: listItemID, handler: { _ in }) + } + } + + + func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemsAt indexPaths: [IndexPath], point: CGPoint) -> UIContextMenuConfiguration? { + + // Only provide a menu on a Mac + + guard ObvMessengerConstants.targetEnvironmentIsMacCatalyst else { + return nil + } + + // For now, we only show a menu for one item at a time + + guard let indexPath = indexPaths.first, indexPaths.count == 1 else { + debugPrint(indexPaths) + return nil + } + guard let sectionKind = dataSource.sectionIdentifier(for: indexPath.section) else { return nil } + guard let item = dataSource.itemIdentifier(for: indexPath) else { return nil } + + // Create the actions + + var actions = [UIAction]() + switch item { + case .persistedDiscussion(let listItemID): + actions += [createMarkAllMessagesAsNotNewAction(for: listItemID)] + switch sectionKind { + case .pinnedDiscussions: + actions += [createUnpinAction(for: listItemID)] + case .discussions: + actions += [createPinAction(for: listItemID)] + } + actions += [createArchiveDiscussionAction(for: listItemID)] + actions += [createDeleteAllMessagesAction(for: listItemID)] + } + + return UIContextMenuConfiguration(actionProvider: { _ in + return UIMenu(children: actions) + }) + + } + private let millisecondsToWaitAfterCallingHandler = 500 @@ -395,7 +463,7 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont } - private func createUnpinAction(for listItemID: (TypeSafeManagedObjectID)) -> UIContextualAction { + private func createUnpinContextualAction(for listItemID: (TypeSafeManagedObjectID)) -> UIContextualAction { let unpinAction = UIContextualAction(style: .normal, title: CommonString.Word.Unpin) { [weak self] (action, view, handler) in self?.unpinDiscussion(listItemID: listItemID, handler: handler) } @@ -403,9 +471,17 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont unpinAction.image = UIImage(systemIcon: .unpin) return unpinAction } - - private func createArchiveDiscussionAction(for listItemID: (ObvUICoreData.TypeSafeManagedObjectID)) -> UIContextualAction { + + private func createUnpinAction(for listItemID: (TypeSafeManagedObjectID)) -> UIAction { + let title = NSLocalizedString("MENU_ACTION_TITLE_UNPIN_DISCUSSION", comment: "") + return UIAction(title: title) { [weak self] _ in + self?.unpinDiscussion(listItemID: listItemID, handler: nil) + } + } + + + private func createArchiveDiscussionContextualAction(for listItemID: (ObvUICoreData.TypeSafeManagedObjectID)) -> UIContextualAction { let archiveDiscussionAction = UIContextualAction(style: .destructive, title: CommonString.Word.Archive) { [weak self] (action, view, handler) in self?.archiveDiscussion(listItemID: listItemID, handler: handler) } @@ -415,6 +491,14 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont } + private func createArchiveDiscussionAction(for listItemID: (ObvUICoreData.TypeSafeManagedObjectID)) -> UIAction { + let title = NSLocalizedString("MENU_ACTION_TITLE_ARCHIVE_DISCUSSION", comment: "") + return UIAction(title: title) { [weak self] _ in + self?.archiveDiscussion(listItemID: listItemID, handler: nil) + } + } + + private func unpinDiscussion(listItemID: (ObvUICoreData.TypeSafeManagedObjectID), handler: ((Bool) -> Void)?) { var discussionObjectIds = Self.retrieveDiscussionObjectIds(from: dataSource.snapshot()) discussionObjectIds.removeAll(where: { $0 == listItemID.objectID }) @@ -451,6 +535,7 @@ final class NewDiscussionsViewController: UIViewController, NSFetchedResultsCont private func reorderingCompleted() { let snapshot = dataSource.snapshot() + guard snapshot.sectionIdentifiers.contains(where: { $0 == .pinnedDiscussions }) else { return } let discussionObjectIds = snapshot.itemIdentifiers(inSection: .pinnedDiscussions).map { switch $0 { case .persistedDiscussion(let listItemID): diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/PendingGroupMembers/PendingGroupMembersTableViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/PendingGroupMembers/PendingGroupMembersTableViewController.swift index 0c2e3ca1..7eb64a9e 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/PendingGroupMembers/PendingGroupMembersTableViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/PendingGroupMembers/PendingGroupMembersTableViewController.swift @@ -23,6 +23,7 @@ import CoreData import ObvEngine import ObvUICoreData import ObvUI +import ObvSettings class PendingGroupMembersTableViewController: UITableViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvSubtitleTableViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvSubtitleTableViewCell.swift index 7d3a24ab..05323ee7 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvSubtitleTableViewCell.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvSubtitleTableViewCell.swift @@ -20,7 +20,9 @@ import ObvUI import ObvUICoreData import UIKit -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvDesignSystem + class ObvSubtitleTableViewCell: UITableViewCell, ObvTableViewCellWithActivityIndicator { diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvTitleAndSwitchTableViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvTitleAndSwitchTableViewCell.swift index 5ab8ee2f..0adf53be 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvTitleAndSwitchTableViewCell.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvTitleAndSwitchTableViewCell.swift @@ -29,13 +29,9 @@ final class ObvTitleAndSwitchTableViewCell: UITableViewCell { var title: String? { get { self.textLabel?.text } set { - if #available(iOS 14, *) { - var config = self.defaultContentConfiguration() - config.text = newValue - self.contentConfiguration = config - } else { - self.textLabel?.text = newValue - } + var config = self.defaultContentConfiguration() + config.text = newValue + self.contentConfiguration = config } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvTitleTableViewCell.swift b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvTitleTableViewCell.swift index 7858da9b..42596e31 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvTitleTableViewCell.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/TableViewControllers/TableViewCells/ObvTitleTableViewCell.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + class ObvTitleTableViewCell: UITableViewCell, ObvTableViewCellWithActivityIndicator { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Types/ObvFlowController.swift b/iOSClient/ObvMessenger/ObvMessenger/Types/ObvFlowController.swift index f4b94545..a443d541 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Types/ObvFlowController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Types/ObvFlowController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,9 +25,10 @@ import CoreData import ObvCrypto import OlvidUtils import ObvUICoreData +import ObvSettings -protocol ObvFlowController: UINavigationController, SingleDiscussionViewControllerDelegate, SingleGroupViewControllerDelegate, SingleGroupV2ViewControllerDelegate, SingleContactIdentityViewHostingControllerDelegate, SingleOwnedIdentityFlowViewControllerDelegate, ObvErrorMaker { +protocol ObvFlowController: UINavigationController, SingleDiscussionViewControllerDelegate, SingleGroupViewControllerDelegate, SingleGroupV2ViewControllerDelegate, SingleContactIdentityViewHostingControllerDelegate, ObvErrorMaker { var flowDelegate: ObvFlowControllerDelegate? { get } var log: OSLog { get } @@ -121,7 +122,7 @@ extension ObvFlowController { } func userWantsToDisplay(persistedMessage message: PersistedMessage) { - let discussion = message.discussion + guard let discussion = message.discussion else { assertionFailure(); return } userWantsToDisplayImpl(persistedDiscussion: discussion, messageToShow: message) } @@ -261,11 +262,7 @@ extension ObvFlowController { if someSingleDiscussionVC.discussionPermanentID != discussion.discussionPermanentID { return someSingleDiscussionVC } else { - if #available(iOS 15.0, *), !ObvMessengerSettings.Interface.useOldDiscussionInterface { - return try getNewSingleDiscussionViewController(for:discussion, initialScroll: .newMessageSystemOrLastMessage) - } else { - return try getSingleDiscussionViewController(for: discussion) - } + return try getNewSingleDiscussionViewController(for:discussion, initialScroll: .newMessageSystemOrLastMessage) } } self.setViewControllers(newStack, animated: false) @@ -273,23 +270,17 @@ extension ObvFlowController { func buildSingleDiscussionVC(discussion: PersistedDiscussion, messageToShow: PersistedMessage?) throws -> SomeSingleDiscussionViewController { - if #available(iOS 15.0, *), !ObvMessengerSettings.Interface.useOldDiscussionInterface { - let initialScroll: NewSingleDiscussionViewController.InitialScroll - if let messageToShow = messageToShow { - initialScroll = .specificMessage(messageToShow) - } else { - initialScroll = .newMessageSystemOrLastMessage - } - let singleDiscussionVC = try getNewSingleDiscussionViewController(for: discussion, initialScroll: initialScroll) - return singleDiscussionVC + let initialScroll: NewSingleDiscussionViewController.InitialScroll + if let messageToShow = messageToShow { + initialScroll = .specificMessage(messageToShow) } else { - let singleDiscussionVC = try getSingleDiscussionViewController(for: discussion) - return singleDiscussionVC + initialScroll = .newMessageSystemOrLastMessage } + let singleDiscussionVC = try getNewSingleDiscussionViewController(for: discussion, initialScroll: initialScroll) + return singleDiscussionVC } - @available(iOS 15.0, *) func getNewSingleDiscussionViewController(for discussion: PersistedDiscussion, initialScroll: NewSingleDiscussionViewController.InitialScroll) throws -> NewSingleDiscussionViewController { assert(Thread.isMainThread) let singleDiscussionVC = try NewSingleDiscussionViewController(discussion: discussion, delegate: self, initialScroll: initialScroll) @@ -297,22 +288,6 @@ extension ObvFlowController { return singleDiscussionVC } - - func getSingleDiscussionViewController(for discussion: PersistedDiscussion) throws -> SingleDiscussionViewController { - guard let ownedCryptoId = discussion.ownedIdentity?.cryptoId else { - throw Self.makeError(message: "Could not determine owned identity") - } - let singleDiscussionVC = SingleDiscussionViewController(ownedCryptoId: ownedCryptoId, collectionViewLayout: UICollectionViewLayout()) - singleDiscussionVC.discussion = discussion - singleDiscussionVC.composeMessageViewDataSource = ComposeMessageDataSourceWithDraft(draft: discussion.draft) - singleDiscussionVC.composeMessageViewDocumentPickerDelegate = ComposeMessageViewDocumentPickerAdapterWithDraft(draft: discussion.draft) - singleDiscussionVC.strongComposeMessageViewSendMessageDelegate = ComposeMessageViewSendMessageAdapterWithDraft(draft: discussion.draft) - singleDiscussionVC.uiApplication = UIApplication.shared - singleDiscussionVC.delegate = self - singleDiscussionVC.hidesBottomBarWhenPushed = true - return singleDiscussionVC - } - } // MARK: - SingleDiscussionViewControllerDelegate @@ -431,9 +406,7 @@ extension ObvFlowController { return } - let vcToPresent = SingleOwnedIdentityFlowViewController(ownedIdentity: ownedIdentity, obvEngine: obvEngine) - - vcToPresent.delegate = self + let vcToPresent = SingleOwnedIdentityFlowViewController(ownedIdentity: ownedIdentity, obvEngine: obvEngine, delegate: flowDelegate) viewControllerToPresent = vcToPresent @@ -479,6 +452,19 @@ extension ObvFlowController { extension ObvFlowController { + func userWantsToNavigateToListOfContactDevicesView(_ contact: PersistedObvContactIdentity, within nav: UINavigationController?) { + let appropriateNav = nav ?? self + let vc = ListOfContactDevicesViewController(persistedContact: contact, obvEngine: obvEngine) + appropriateNav.pushViewController(vc, animated: true) + } + + + func userWantsToNavigateToListOfTrustOriginsView(_ trustOrigins: [ObvTrustOrigin], within nav: UINavigationController?) { + let appropriateNav = nav ?? self + let vc = ListOfTrustOriginsViewController(trustOrigins: trustOrigins) + appropriateNav.pushViewController(vc, animated: true) + } + func userWantsToNavigateToSingleGroupView(_ group: DisplayedContactGroup, within nav: UINavigationController?) { @@ -534,80 +520,32 @@ extension ObvFlowController { flowDelegate?.userWantsToUpdateTrustedIdentityDetailsOfContactIdentity(with: contactCryptoId, using: newContactIdentityDetails) } - func userWantsToEditContactNickname(persistedContactObjectId: NSManagedObjectID) { - assert(Thread.isMainThread) - - guard let persistedObvContactIdentity = try? PersistedObvContactIdentity.get(objectID: persistedContactObjectId, within: ObvStack.shared.viewContext) else { assertionFailure(); return } - - let title = NSLocalizedString("Set Contact Nickname", comment: "") - let message = NSLocalizedString("This nickname will only be visible to you and used instead of your contact name within the Olvid interface.", comment: "UIAlertController message") - let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) - alert.addTextField { textField in - textField.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.headline) - textField.autocapitalizationType = .words - if let customDisplayName = persistedObvContactIdentity.customDisplayName { - textField.text = customDisplayName - } else { - textField.text = persistedObvContactIdentity.identityCoreDetails?.getDisplayNameWithStyle(.firstNameThenLastName) ?? persistedObvContactIdentity.fullDisplayName - } - } - guard let textField = alert.textFields?.first else { return } - let removeNicknameAction = UIAlertAction(title: CommonString.removeNickname, style: .destructive) { [weak self] (_) in - self?.setContactNickname(to: nil, persistedContactObjectId: persistedContactObjectId) - } - let cancelAction = UIAlertAction(title: CommonString.Word.Cancel, style: UIAlertAction.Style.cancel) - let okAction = UIAlertAction(title: CommonString.Word.Ok, style: UIAlertAction.Style.default) { [weak self] (action) in - if let newNickname = textField.text, !newNickname.isEmpty { - self?.setContactNickname(to: newNickname, persistedContactObjectId: persistedContactObjectId) - } else { - self?.setContactNickname(to: nil, persistedContactObjectId: persistedContactObjectId) - } - } - alert.addAction(removeNicknameAction) - alert.addAction(cancelAction) - alert.addAction(okAction) - if let presentedViewController = self.presentedViewController { - presentedViewController.present(alert, animated: true) - } else { - self.present(alert, animated: true, completion: nil) - } - } - - - private func setContactNickname(to newNickname: String?, persistedContactObjectId: NSManagedObjectID) { - ObvStack.shared.performBackgroundTask { [weak self] (context) in - guard let _self = self else { return } + func userWantsToInviteContactToOneToOne(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) { + Task { [weak self] in + guard let self else { return } do { - guard let writableContact = try PersistedObvContactIdentity.get(objectID: persistedContactObjectId, within: context) else { assertionFailure(); return } - try writableContact.setCustomDisplayName(to: newNickname) - try context.save(logOnFailure: _self.log) + assert(flowDelegate != nil) + try await flowDelegate?.userWantsToInviteContactsToOneToOne(ownedCryptoId: ownedCryptoId, users: [(contactCryptoId, nil)]) } catch { - os_log("Could not remove contact custom display name", log: _self.log, type: .error) + assertionFailure(error.localizedDescription) } } } - - func userWantsToInviteContactToOneToOne(persistedContactObjectID: TypeSafeManagedObjectID) { - let log = self.log - ObvStack.shared.performBackgroundTask { [weak self] (context) in - do { - guard let contact = try PersistedObvContactIdentity.get(objectID: persistedContactObjectID, within: context) else { assertionFailure(); return } - assert(!contact.isOneToOne) - guard let ownedIdentity = contact.ownedIdentity else { assertionFailure(); return } - try self?.obvEngine.sendOneToOneInvitation(ownedIdentity: ownedIdentity.cryptoId, contactIdentity: contact.cryptoId) - } catch { - os_log("Could not invite contact to OneToOne: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - } + /// Method part of the `SingleGroupV2ViewControllerDelegate`, called when the user wants to add all the group members as one2one contacts at once. + func userWantsToInviteContactToOneToOne(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set) async throws { + assert(flowDelegate != nil) + let users: [(cryptoId: ObvCryptoId, keycloakDetails: ObvKeycloakUserDetails?)] = contactCryptoIds.map { ($0, nil) } + try await flowDelegate?.userWantsToInviteContactsToOneToOne(ownedCryptoId: ownedCryptoId, users: users) + } + func userWantsToCancelSentInviteContactToOneToOne(ownedCryptoId: ObvCryptoId, contactCryptoId: ObvCryptoId) { let log = self.log - ObvStack.shared.performBackgroundTask { [weak self] (context) in + let obvEngine = self.obvEngine + ObvStack.shared.performBackgroundTask { (context) in do { guard let oneToOneInvitationSent = try PersistedInvitationOneToOneInvitationSent.get(fromOwnedIdentity: ownedCryptoId, toContact: contactCryptoId, @@ -616,7 +554,10 @@ extension ObvFlowController { } guard var dialog = oneToOneInvitationSent.obvDialog else { assertionFailure(); return } try dialog.cancelOneToOneInvitationSent() - self?.obvEngine.respondTo(dialog) + let dialogForEngine = dialog + Task { + try? await obvEngine.respondTo(dialogForEngine) + } } catch { os_log("Could not invite contact to OneToOne: %{public}@", log: log, type: .fault, error.localizedDescription) assertionFailure() @@ -796,16 +737,17 @@ extension ObvFlowController { } -// MARK: - SingleOwnedIdentityFlowViewControllerDelegate -extension ObvFlowController { - func userWantsToDismissSingleOwnedIdentityFlowViewController(_ viewController: SingleOwnedIdentityFlowViewController) { - viewController.dismiss(animated: true) - } + +// MARK: - Errors + +enum ObvFlowControllerError: Error { + case couldNotFindOwnedIdentity } + // MARK: - ObvFlowControllerDelegate -protocol ObvFlowControllerDelegate: AnyObject { +protocol ObvFlowControllerDelegate: AnyObject, SingleOwnedIdentityFlowViewControllerDelegate { func getAndRemoveAirDroppedFileURLs() -> [URL] @MainActor func userSelectedURL(_ url: URL, within viewController: UIViewController) @@ -813,5 +755,6 @@ protocol ObvFlowControllerDelegate: AnyObject { func rePerformTrustEstablishmentProtocolOfContactIdentity(contactCryptoId: ObvCryptoId, contactFullDisplayName: String) func userWantsToUpdateTrustedIdentityDetailsOfContactIdentity(with: ObvCryptoId, using: ObvIdentityDetails) func userAskedToRefreshDiscussions(completionHandler: @escaping () -> Void) + func userWantsToInviteContactsToOneToOne(ownedCryptoId: ObvCryptoId, users: [(cryptoId: ObvCryptoId, keycloakDetails: ObvKeycloakUserDetails?)]) async throws } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Types/OlvidURL.swift b/iOSClient/ObvMessenger/ObvMessenger/Types/OlvidURL.swift index af6d9c11..6a9e2f66 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Types/OlvidURL.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Types/OlvidURL.swift @@ -19,6 +19,7 @@ import Foundation import ObvEngine +import ObvTypes struct OlvidURL { @@ -33,40 +34,44 @@ struct OlvidURL { } init?(urlRepresentation: URL) { - guard urlRepresentation.scheme == "https" else { assertionFailure(); return nil } - guard let urlComponents = URLComponents(url: urlRepresentation, resolvingAgainstBaseURL: true) else { assertionFailure(); return nil } + + // If the scheme of the URL is "olvid", try to replace it by "https" + let updatedURL = Self.replaceOlvidSchemeByHTTPS(urlRepresentation: urlRepresentation) + + guard updatedURL.scheme == "https" else { assertionFailure(); return nil } + guard let urlComponents = URLComponents(url: updatedURL, resolvingAgainstBaseURL: true) else { assertionFailure(); return nil } switch urlComponents.host { case ObvMessengerConstants.Host.forConfigurations: - if let serverAndAPIKey = ServerAndAPIKey(urlRepresentation: urlRepresentation) { + if let serverAndAPIKey = ServerAndAPIKey(urlRepresentation: updatedURL) { // For now, if the URL representation decodes to a ServerAndAPIKey, we do not expect to find a BetaConfiguration nor a KeycloakConfiguration - assert(BetaConfiguration(urlRepresentation: urlRepresentation) == nil && KeycloakConfiguration(urlRepresentation: urlRepresentation) == nil) + assert(BetaConfiguration(urlRepresentation: updatedURL) == nil && KeycloakConfiguration(urlRepresentation: updatedURL) == nil) self.category = .configuration(serverAndAPIKey: serverAndAPIKey, betaConfiguration: nil, keycloakConfig: nil) - self.url = urlRepresentation + self.url = updatedURL return - } else if let betaConfiguration = BetaConfiguration(urlRepresentation: urlRepresentation) { + } else if let betaConfiguration = BetaConfiguration(urlRepresentation: updatedURL) { // For now, if the URL representation decodes to a BetaConfiguration, we do not expect to find a ServerAndAPIKey nor a KeycloakConfiguration - assert(ServerAndAPIKey(urlRepresentation: urlRepresentation) == nil && KeycloakConfiguration(urlRepresentation: urlRepresentation) == nil) + assert(ServerAndAPIKey(urlRepresentation: updatedURL) == nil && KeycloakConfiguration(urlRepresentation: updatedURL) == nil) self.category = .configuration(serverAndAPIKey: nil, betaConfiguration: betaConfiguration, keycloakConfig: nil) - self.url = urlRepresentation + self.url = updatedURL return - } else if let keycloakConfig = KeycloakConfiguration(urlRepresentation: urlRepresentation) { + } else if let keycloakConfig = KeycloakConfiguration(urlRepresentation: updatedURL) { // For now, if the URL representation decodes to a KeycloakConfiguration, we do not expect to find a ServerAndAPIKey nor a BetaConfiguration - assert(ServerAndAPIKey(urlRepresentation: urlRepresentation) == nil && BetaConfiguration(urlRepresentation: urlRepresentation) == nil) + assert(ServerAndAPIKey(urlRepresentation: updatedURL) == nil && BetaConfiguration(urlRepresentation: updatedURL) == nil) self.category = .configuration(serverAndAPIKey: nil, betaConfiguration: nil, keycloakConfig: keycloakConfig) - self.url = urlRepresentation + self.url = updatedURL return } else { assertionFailure() return nil } case ObvMessengerConstants.Host.forInvitations: - if let mutualScanURL = ObvMutualScanUrl(urlRepresentation: urlRepresentation) { + if let mutualScanURL = ObvMutualScanUrl(urlRepresentation: updatedURL) { self.category = .mutualScan(mutualScanURL: mutualScanURL) - self.url = urlRepresentation + self.url = updatedURL return - } else if let urlIdentity = ObvURLIdentity(urlRepresentation: urlRepresentation) { + } else if let urlIdentity = ObvURLIdentity(urlRepresentation: updatedURL) { self.category = .invitation(urlIdentity: urlIdentity) - self.url = urlRepresentation + self.url = updatedURL return } else { assertionFailure() @@ -74,7 +79,7 @@ struct OlvidURL { } case ObvMessengerConstants.Host.forOpenIdRedirect: self.category = .openIdRedirect - self.url = urlRepresentation + self.url = updatedURL return default: assertionFailure() @@ -82,6 +87,26 @@ struct OlvidURL { } } + + private static func replaceOlvidSchemeByHTTPS(urlRepresentation: URL) -> URL { + guard var components = URLComponents(url: urlRepresentation, resolvingAgainstBaseURL: false), + components.scheme == "olvid" else { + return urlRepresentation + } + components.scheme = "https" + return components.url ?? urlRepresentation + } + + + var isOpenIdRedirectWithURL: URL? { + switch self.category { + case .invitation, .mutualScan, .configuration: + return nil + case .openIdRedirect: + return url + } + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Types/OlvidUserId.swift b/iOSClient/ObvMessenger/ObvMessenger/Types/OlvidUserId.swift index 339fa5f5..26466cb2 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Types/OlvidUserId.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Types/OlvidUserId.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -26,16 +26,40 @@ import ObvUICoreData enum OlvidUserId: Hashable { case known(contactObjectID: TypeSafeManagedObjectID, ownCryptoId: ObvCryptoId, remoteCryptoId: ObvCryptoId, displayName: String) case unknown(ownCryptoId: ObvCryptoId, remoteCryptoId: ObvCryptoId, displayName: String) + case ownedIdentity(ownedCryptoId: ObvCryptoId) var contactObjectID: TypeSafeManagedObjectID? { if case .known(contactObjectID: let contactObjectID, ownCryptoId: _, remoteCryptoId: _, displayName: _) = self { return contactObjectID } else { return nil } } + var isOwnedIdentity: Bool { + switch self { + case .known, .unknown: + return false + case .ownedIdentity: + return true + } + } + + + /// Non-nil iff we are in the `known` case + var contactIdentifier: ObvContactIdentifier? { + switch self { + case .known(_, ownCryptoId: let ownCryptoId, remoteCryptoId: let remoteCryptoId, _): + return .init(contactCryptoId: remoteCryptoId, ownedCryptoId: ownCryptoId) + case .unknown, .ownedIdentity: + return nil + } + } + + var ownCryptoId: ObvCryptoId { switch self { case .known(contactObjectID: _, ownCryptoId: let ownCryptoId, remoteCryptoId: _, displayName: _), .unknown(ownCryptoId: let ownCryptoId, remoteCryptoId: _, displayName: _): return ownCryptoId + case .ownedIdentity(ownedCryptoId: let ownedCryptoId): + return ownedCryptoId } } @@ -44,6 +68,8 @@ enum OlvidUserId: Hashable { case .known(contactObjectID: _, ownCryptoId: _, remoteCryptoId: let remoteIdentity, displayName: _), .unknown(ownCryptoId: _, remoteCryptoId: let remoteIdentity, displayName: _): return remoteIdentity + case .ownedIdentity(ownedCryptoId: let ownedCryptoId): + return ownedCryptoId } } @@ -52,6 +78,9 @@ enum OlvidUserId: Hashable { case .known(contactObjectID: _, ownCryptoId: _, remoteCryptoId: _, displayName: let displayName), .unknown(ownCryptoId: _, remoteCryptoId: _, displayName: let displayName): return displayName + case .ownedIdentity: + assertionFailure() + return "" } } @@ -66,6 +95,8 @@ extension OlvidUserId: CustomDebugStringConvertible { return "known (\(remoteCryptoId.getIdentity().debugDescription))" case .unknown(ownCryptoId: _, remoteCryptoId: let remoteCryptoId, displayName: _): return "unknown (\(remoteCryptoId.getIdentity().debugDescription))" + case .ownedIdentity: + return "ownedIdentity" } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/BallScaleMultipleActivityIndicatorView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/BallScaleMultipleActivityIndicatorView.swift index 13294c76..5b8a0e34 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/BallScaleMultipleActivityIndicatorView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/BallScaleMultipleActivityIndicatorView.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + final class BallScaleMultipleActivityIndicatorView: UIView, ActivityIndicator { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/CircleStrokeSpinActivityIndicatorView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/CircleStrokeSpinActivityIndicatorView.swift index c10e6a93..14f3f09d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/CircleStrokeSpinActivityIndicatorView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/CircleStrokeSpinActivityIndicatorView.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + final class CircleStrokeSpinActivityIndicatorView: UIView, ActivityIndicator { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/DotsActivityIndicatorView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/DotsActivityIndicatorView.swift index a1ac6056..fb63b2cc 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/DotsActivityIndicatorView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ActivityIndicators/DotsActivityIndicatorView.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + class DotsActivityIndicatorView: UIView, ActivityIndicator { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvButton.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvButton.swift index 91be5577..7e5f48a7 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvButton.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvButton.swift @@ -19,6 +19,7 @@ import ObvUI import UIKit +import ObvDesignSystem /// When setting this class within a storyboard, the type should be set to "custom" @@ -56,7 +57,7 @@ class ObvButton: UIButton { private func setup() { self.layer.cornerRadius = self.cornerRadius - self.contentEdgeInsets = UIEdgeInsets(top: topPadding, left: sidePadding, bottom: topPadding, right: sidePadding) + // self.contentEdgeInsets = UIEdgeInsets(top: topPadding, left: sidePadding, bottom: topPadding, right: sidePadding) setTitle(self.title(for: .normal), for: .normal) setTitleColors() resetColors() diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvButtonBorderless.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvButtonBorderless.swift index 004b30b0..2a3ac0d3 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvButtonBorderless.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvButtonBorderless.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + class ObvButtonBorderless: ObvButton { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvFloatingButton.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvFloatingButton.swift index eed72480..3e3d0621 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvFloatingButton.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvFloatingButton.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + final class ObvFloatingButton: UIButton { @@ -38,7 +40,7 @@ final class ObvFloatingButton: UIButton { self.backgroundColor = .clear resetShadowPath() self.tintColor = .white - self.adjustsImageWhenHighlighted = false + // self.adjustsImageWhenHighlighted = false } override func draw(_ rect: CGRect) { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvRoundedButton.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvRoundedButton.swift index 3dcc0afa..e288d997 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvRoundedButton.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvRoundedButton.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + class ObvRoundedButton: UIButton { @@ -39,7 +41,7 @@ class ObvRoundedButton: UIButton { resetBackgroundColor() resetTintColor() self.tintColor = AppTheme.shared.colorScheme.secondaryLabel - self.adjustsImageWhenHighlighted = false + // self.adjustsImageWhenHighlighted = false } diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvRoundedButtonBorderless.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvRoundedButtonBorderless.swift index ea2f77a5..25a78045 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvRoundedButtonBorderless.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/Buttons/ObvRoundedButtonBorderless.swift @@ -19,13 +19,15 @@ import Foundation import ObvUI +import ObvDesignSystem + final class ObvRoundedButtonBorderless: ObvRoundedButton { internal override func setup() { layer.cornerRadius = frame.size.height / 2.0 resetBackgroundColor() - self.adjustsImageWhenHighlighted = false + // self.adjustsImageWhenHighlighted = false } diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/EditNicknameAndCustomPicture/EditNicknameAndCustomPictureView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/EditNicknameAndCustomPicture/EditNicknameAndCustomPictureView.swift new file mode 100644 index 00000000..50611e82 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/EditNicknameAndCustomPicture/EditNicknameAndCustomPictureView.swift @@ -0,0 +1,302 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import ObvTypes +import UI_ObvPhotoButton +import UI_ObvCircledInitials + + + +protocol EditNicknameAndCustomPictureViewActionsProtocol: AnyObject { + func userWantsToSaveNicknameAndCustomPicture(identifier: EditNicknameAndCustomPictureView.Model.IdentifierKind, nickname: String, customPhoto: UIImage?) async + func userWantsToDismissEditNicknameAndCustomPictureView() async + // The following two methods leverages the view controller to show + // the appropriate UI allowing the user to create her profile picture. + func userWantsToTakePhoto() async -> UIImage? + func userWantsToChoosePhoto() async -> UIImage? +} + + + +// MARK: - EditNicknameAndCustomPictureView + +struct EditNicknameAndCustomPictureView: View, ObvPhotoButtonViewActionsProtocol { + + + final class Model: ObservableObject, ObvPhotoButtonViewModelProtocol { + + enum IdentifierKind { + case contact(contactIdentifier: ObvContactIdentifier) + case groupV2(groupV2Identifier: GroupV2Identifier) + } + + fileprivate let identifier: IdentifierKind + fileprivate let currentNickname: String // Empty string means "no nickname" + fileprivate let currentInitials: String + fileprivate let defaultPhoto: UIImage? // The photo chosen by the contact or by a group owner + fileprivate let currentCustomPhoto: UIImage? + + var photoThatCannotBeRemoved: UIImage? { + defaultPhoto + } + + @Published var circledInitialsConfiguration: CircledInitialsConfiguration + + init(identifier: IdentifierKind, currentInitials: String, defaultPhoto: UIImage?, currentCustomPhoto: UIImage?, currentNickname: String) { + self.identifier = identifier + self.currentInitials = currentInitials + self.currentNickname = currentNickname + self.defaultPhoto = defaultPhoto + self.currentCustomPhoto = currentCustomPhoto + let photo = currentCustomPhoto ?? defaultPhoto + switch identifier { + case .contact(let contactIdentifier): + self.circledInitialsConfiguration = .contact( + initial: currentInitials, + photo: .image(image: photo), + showGreenShield: false, + showRedShield: false, + cryptoId: contactIdentifier.contactCryptoId, + tintAdjustementMode: .normal) + case .groupV2(let groupV2Identifier): + self.circledInitialsConfiguration = .groupV2( + photo: .image(image: photo), + groupIdentifier: groupV2Identifier, + showGreenShield: false) + } + } + + + /// When the user choses a new photo: + /// - If it is non-`nil`, we show it and this is the one that will be saved as a custom photo if the user hits the save button + /// - If it is `nil`, we consider that the user wants to remove the current custom photo (if any) and show the default photo chosen by the contact or a group owner + @MainActor + fileprivate func userChoseNewCustomPhoto(_ customPhoto: UIImage?) async { + let photo = customPhoto ?? self.defaultPhoto + withAnimation { + self.circledInitialsConfiguration = self.circledInitialsConfiguration.replacingPhoto(with: .image(image: photo)) + } + } + + + @MainActor + fileprivate func userChoseNewNickname(_ nickname: String) async { + let sanitizedNickname = nickname.trimmingWhitespacesAndNewlines() + let newInitials: String + if let firstCharacter = sanitizedNickname.first { + newInitials = String(firstCharacter) + } else { + newInitials = currentInitials + } + withAnimation { + self.circledInitialsConfiguration = circledInitialsConfiguration.replacingInitials(with: newInitials) + } + } + + } + + + let actions: EditNicknameAndCustomPictureViewActionsProtocol + @ObservedObject var model: Model + @State private var nickname = "" + @State private var isSaveButtonDisabled = true + + + private func userWantsToSaveNicknameAndCustomPicture() { + Task { + let customPhoto: UIImage? + if model.circledInitialsConfiguration.photo != model.defaultPhoto { + customPhoto = model.circledInitialsConfiguration.photo + } else { + customPhoto = nil + } + await actions.userWantsToSaveNicknameAndCustomPicture(identifier: model.identifier, + nickname: nickname.trimmingWhitespacesAndNewlines(), + customPhoto: customPhoto) + } + } + + + private func userWantsToCancel() { + Task { + await actions.userWantsToDismissEditNicknameAndCustomPictureView() + } + } + + + private func nicknameDidChange() { + Task { + await model.userChoseNewNickname(nickname) + resetIsSaveButtonDisabled() + } + } + + + private func onAppear() { + self.nickname = model.currentNickname + } + + + private func resetIsSaveButtonDisabled() { + let nicknameChanged = nickname != model.currentNickname + let customPhotoChanged: Bool + if let currentCustomPhoto = model.currentCustomPhoto { + customPhotoChanged = model.circledInitialsConfiguration.photo != currentCustomPhoto + } else if let defaultPhoto = model.defaultPhoto { + customPhotoChanged = model.circledInitialsConfiguration.photo != defaultPhoto + } else { + customPhotoChanged = model.circledInitialsConfiguration.photo != nil + } + withAnimation { + isSaveButtonDisabled = !nicknameChanged && !customPhotoChanged + } + } + + // ObvPhotoButtonViewActionsProtocol + + func userWantsToAddProfilPictureWithCamera() { + Task { + guard let newImage = await actions.userWantsToTakePhoto() else { return } + await model.userChoseNewCustomPhoto(newImage) + resetIsSaveButtonDisabled() + } + } + + + func userWantsToAddProfilPictureWithPhotoLibrary() { + Task { + guard let newImage = await actions.userWantsToChoosePhoto() else { return } + await model.userChoseNewCustomPhoto(newImage) + resetIsSaveButtonDisabled() + } + } + + + func userWantsToRemoveProfilePicture() { + Task { + await model.userChoseNewCustomPhoto(nil) + resetIsSaveButtonDisabled() + } + } + + + private var explanationLocalizedStringKey: LocalizedStringKey { + switch model.identifier { + case .contact: + return "EDIT_NICKNAME_AND_CUSTOM_PICTURE_EXPLANATION_FOR_CONTACT" + case .groupV2: + return "EDIT_NICKNAME_AND_CUSTOM_PICTURE_EXPLANATION_FOR_GROUP" + } + } + + + var body: some View { + VStack { + ScrollView { + VStack { + Text("EDIT_NICKNAME_AND_CUSTOM_PICTURE") + .font(.title) + .fontWeight(.heavy) + .multilineTextAlignment(.center) + .padding(.bottom) + Text(explanationLocalizedStringKey) + .padding(.bottom) + .multilineTextAlignment(.center) + ObvPhotoButtonView(actions: self, model: model) + .padding(.bottom, 10) + InternalTextField("FORM_NICKNAME", text: $nickname) + .onChange(of: nickname) { _ in nicknameDidChange() } + .padding(.bottom, 10) + } + .padding() + } + VStack { + OlvidButton(style: .blue, title: Text("Save"), systemIcon: nil, action: userWantsToSaveNicknameAndCustomPicture) + .disabled(isSaveButtonDisabled) + OlvidButton(style: .text, title: Text("Cancel"), systemIcon: nil, action: userWantsToCancel) + }.padding() + } + .onAppear(perform: onAppear) + } +} + + +// MARK: - Text field used in this view only + +private struct InternalTextField: View { + + private let key: LocalizedStringKey + private let text: Binding + + init(_ key: LocalizedStringKey, text: Binding) { + self.key = key + self.text = text + } + + var body: some View { + TextField(key, text: text) + .padding() + .background(Color("TextFieldBackgroundColor")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } + +} + + + +// MARK: - Previews + + +struct EditNicknameAndCustomPictureView_Previews: PreviewProvider { + + private static let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + private static let contactCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f000009e171a9c73a0d6e9480b022154c83b13dfa8e4c99496c061c0c35b9b0432b3a014a5393f98a1aead77b813df0afee6b8af7e5f9a5aae6cb55fdb6bc5cc766f8da")!) + + private static let contactIdentifier = ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + + private final class ActionsForPreviews: EditNicknameAndCustomPictureViewActionsProtocol { + + func userWantsToSaveNicknameAndCustomPicture(identifier: EditNicknameAndCustomPictureView.Model.IdentifierKind, nickname: String, customPhoto: UIImage?) async {} + func userWantsToDismissEditNicknameAndCustomPictureView() async {} + + func userWantsToTakePhoto() async -> UIImage? { + return UIImage(systemIcon: .archivebox) + } + + func userWantsToChoosePhoto() async -> UIImage? { + return UIImage(systemIcon: .book) + } + + } + + private static let actions = ActionsForPreviews() + + private static let model = EditNicknameAndCustomPictureView.Model( + identifier: .contact(contactIdentifier: contactIdentifier), + currentInitials: "A", + defaultPhoto: UIImage(systemIcon: .alarm), + currentCustomPhoto: nil, + currentNickname: "") // Empty string means "no nickname" + + static var previews: some View { + EditNicknameAndCustomPictureView(actions: actions, model: model) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/EditNicknameAndCustomPicture/EditNicknameAndCustomPictureViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/EditNicknameAndCustomPicture/EditNicknameAndCustomPictureViewController.swift new file mode 100644 index 00000000..20cbfb7d --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/EditNicknameAndCustomPicture/EditNicknameAndCustomPictureViewController.swift @@ -0,0 +1,252 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import SwiftUI +import UIKit +import ObvTypes +import PhotosUI +import UI_ObvImageEditor + + +protocol EditNicknameAndCustomPictureViewControllerDelegate: AnyObject { + func userWantsToSaveNicknameAndCustomPicture(controller: EditNicknameAndCustomPictureViewController, identifier: EditNicknameAndCustomPictureView.Model.IdentifierKind, nickname: String, customPhoto: UIImage?) async + func userWantsToDismissEditNicknameAndCustomPictureViewController(controller: EditNicknameAndCustomPictureViewController) async +} + + + +/// This view controller is used in the single contact a single group v2 and allows the user to edit the nickname and custom photo of the contact or the group. +final class EditNicknameAndCustomPictureViewController: UIHostingController, EditNicknameAndCustomPictureViewActionsProtocol, PHPickerViewControllerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, ObvImageEditorViewControllerDelegate { + + + private weak var delegate: EditNicknameAndCustomPictureViewControllerDelegate? + + + init(model: EditNicknameAndCustomPictureView.Model, delegate: EditNicknameAndCustomPictureViewControllerDelegate) { + let actions = EditNicknameAndCustomPictureViewActions() + let view = EditNicknameAndCustomPictureView(actions: actions, model: model) + super.init(rootView: view) + self.delegate = delegate + actions.delegate = self + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + // EditNicknameAndCustomPictureViewActionsProtocol + + private var continuationForPicker: CheckedContinuation? + + + func userWantsToSaveNicknameAndCustomPicture(identifier: EditNicknameAndCustomPictureView.Model.IdentifierKind, nickname: String, customPhoto: UIImage?) async { + await delegate?.userWantsToSaveNicknameAndCustomPicture(controller: self, identifier: identifier, nickname: nickname, customPhoto: customPhoto) + } + + + func userWantsToDismissEditNicknameAndCustomPictureView() async { + await delegate?.userWantsToDismissEditNicknameAndCustomPictureViewController(controller: self) + } + + + @MainActor + func userWantsToTakePhoto() async -> UIImage? { + + removeAnyPreviousContinuation() + + guard UIImagePickerController.isSourceTypeAvailable(.camera) else { return nil } + + let picker = UIImagePickerController() + picker.delegate = self + picker.allowsEditing = false + picker.sourceType = .camera + picker.cameraDevice = .front + + let imageFromPicker = await withCheckedContinuation { (continuation: CheckedContinuation) in + self.continuationForPicker = continuation + present(picker, animated: true) + } + + guard let imageFromPicker else { return nil } + + let resizedImage = await resizeImageFromPicker(imageFromPicker: imageFromPicker) + + return resizedImage + + } + + + @MainActor + func userWantsToChoosePhoto() async -> UIImage? { + + removeAnyPreviousContinuation() + + guard UIImagePickerController.isSourceTypeAvailable(.photoLibrary) else { return nil } + + var configuration = PHPickerConfiguration() + configuration.selectionLimit = 1 + configuration.filter = .images + let picker = PHPickerViewController(configuration: configuration) + picker.delegate = self + + let imageFromPicker = await withCheckedContinuation { (continuation: CheckedContinuation) in + self.continuationForPicker = continuation + present(picker, animated: true) + } + + guard let imageFromPicker else { return nil } + + let resizedImage = await resizeImageFromPicker(imageFromPicker: imageFromPicker) + + return resizedImage + + } + + + private func removeAnyPreviousContinuation() { + if let continuationForPicker { + continuationForPicker.resume(returning: nil) + self.continuationForPicker = nil + } + } + + + // PHPickerViewControllerDelegate + + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + picker.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + if results.count == 1, let result = results.first { + result.itemProvider.loadObject(ofClass: UIImage.self) { item, error in + guard error == nil else { + continuationForPicker.resume(returning: nil) + return + } + guard let image = item as? UIImage else { + continuationForPicker.resume(returning: nil) + return + } + continuationForPicker.resume(returning: image) + } + } else { + continuationForPicker.resume(with: .success(nil)) + } + } + + + // UIImagePickerControllerDelegate + + func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { + assert(Thread.isMainThread) + picker.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + let image = info[.originalImage] as? UIImage + continuationForPicker.resume(returning: image) + } + + + func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { + assert(Thread.isMainThread) + picker.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + continuationForPicker.resume(returning: nil) + } + + + // ObvImageEditorViewControllerDelegate + + func userCancelledImageEdition(_ imageEditor: ObvImageEditorViewController) async { + imageEditor.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + continuationForPicker.resume(returning: nil) + } + + func userConfirmedImageEdition(_ imageEditor: ObvImageEditorViewController, image: UIImage) async { + imageEditor.dismiss(animated: true) + guard let continuationForPicker else { assertionFailure(); return } + self.continuationForPicker = nil + continuationForPicker.resume(returning: image) + } + + + // Resizing the photos received from the camera or the photo library + + private func resizeImageFromPicker(imageFromPicker: UIImage) async -> UIImage? { + + let imageEditor = ObvImageEditorViewController(originalImage: imageFromPicker, + showZoomButtons: Utils.targetEnvironmentIsMacCatalyst, + maxReturnedImageSize: (1024, 1024), + delegate: self) + + removeAnyPreviousContinuation() + + let resizedImage = await withCheckedContinuation { (continuation: CheckedContinuation) in + self.continuationForPicker = continuation + present(imageEditor, animated: true) + } + + return resizedImage + + } + +} + + +private final class EditNicknameAndCustomPictureViewActions: EditNicknameAndCustomPictureViewActionsProtocol { + + weak var delegate: EditNicknameAndCustomPictureViewActionsProtocol? + + func userWantsToTakePhoto() async -> UIImage? { + return await delegate?.userWantsToTakePhoto() + } + + func userWantsToChoosePhoto() async -> UIImage? { + return await delegate?.userWantsToChoosePhoto() + } + + func userWantsToSaveNicknameAndCustomPicture(identifier: EditNicknameAndCustomPictureView.Model.IdentifierKind, nickname: String, customPhoto: UIImage?) async { + await delegate?.userWantsToSaveNicknameAndCustomPicture(identifier: identifier, nickname: nickname, customPhoto: customPhoto) + } + + func userWantsToDismissEditNicknameAndCustomPictureView() async { + await delegate?.userWantsToDismissEditNicknameAndCustomPictureView() + } + +} + + + +// MARK: Utils + +fileprivate struct Utils { + + static var targetEnvironmentIsMacCatalyst: Bool { + #if targetEnvironment(macCatalyst) + return true + #else + return false + #endif + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/EmojiPickerView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/EmojiPickerView.swift index 38a74605..012747ea 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/EmojiPickerView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/EmojiPickerView.swift @@ -22,6 +22,9 @@ import UniformTypeIdentifiers import Combine import ObvUICoreData import ObvUI +import OlvidUtils +import ObvSettings + @available(iOS 15.0, *) final class EmojiPickerHostingViewController: UIHostingController, EmojiPickerViewModelDelegate { @@ -35,6 +38,18 @@ final class EmojiPickerHostingViewController: UIHostingController. - */ - -import SwiftUI - - -struct ObvActivityIndicator: UIViewRepresentable { - - @Binding var isAnimating: Bool - let style: UIActivityIndicatorView.Style - let color: UIColor? - - func makeUIView(context: UIViewRepresentableContext) -> UIActivityIndicatorView { - return UIActivityIndicatorView(style: style) - } - - func updateUIView(_ uiView: UIActivityIndicatorView, context: UIViewRepresentableContext) { - if let color = self.color { - uiView.color = color - } - if isAnimating { - uiView.startAnimating() - } else { - uiView.stopAnimating() - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ImageEditor.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ImageEditor.swift deleted file mode 100644 index 219cb1de..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ImageEditor.swift +++ /dev/null @@ -1,397 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import SwiftUI - - -struct ImageEditor: View { - - @Binding var image: UIImage? - - @State var scale: CGFloat = 1.0 - @State var accumulatedScales: CGFloat = 1.0 - - @State var offset: CGSize = CGSize.zero - @State var accumulatedOffsets: CGSize = CGSize.zero - - private static var widthScale: CGFloat = 0.8 - private static var profilSize: CGFloat = 1080 - - @State var orientation = UIDevice.current.orientation - - var completionHandler: () -> Void - - let orientationChanged = NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification) - .makeConnectable() - .autoconnect() - - var body: some View { - ZStack { - Color.black.edgesIgnoringSafeArea(.all) - GeometryReader() { geo in - let isPortrait = geo.size.height > geo.size.width - let circleDiameter = (isPortrait ? geo.size.width : geo.size.height) * ImageEditor.widthScale - if let image { - let geometry = Geometry(circleDiameter: circleDiameter, geo: geo, imageSize: image.size) - - VStack(alignment: .center) { - Spacer() - HStack(alignment: .center) { - let base = Image(uiImage: image) - .resizable() - .aspectRatio(image.size, contentMode: .fill) - .frame(width: isPortrait ? geo.size.width * ImageEditor.widthScale : geo.size.width, - height: isPortrait ? geo.size.height : geo.size.height * ImageEditor.widthScale) - .offset(offset) - .scaleEffect(scale) - .onAppear { - scale = geometry.defaultScale - accumulatedScales = scale - } - Spacer() - ZStack { - base - .opacity(0.4) - .blur(radius: 1.0) - base - .opacity(0.55) - .blur(radius: 0.4) - .frame(width: circleDiameter, height: circleDiameter) - .clipped() - base - .clipShape(Circle()) - .gesture(MagnificationGesture() - .onChanged { value in - let newScale = self.accumulatedScales * value - let defaultScale = geometry.defaultScale - guard newScale > defaultScale else { return } - if let fixedOffset = checkBounds(geometry: geometry, - newScale: newScale, - newOffset: offset) { - self.offset = fixedOffset - } - self.scale = newScale - } - .onEnded { value in - let newScale = self.accumulatedScales * value - let defaultScale = geometry.defaultScale - guard newScale > defaultScale else { return } - if let fixedOffset = checkBounds(geometry: geometry, - newScale: newScale, - newOffset: offset) { - self.offset = fixedOffset - } - self.scale = newScale - self.accumulatedScales = self.scale - } - .simultaneously(with: DragGesture() - .onChanged { value in - let newOffset = self.accumulatedOffsets + (value.translation / scale) - let fixedOffset = checkBounds(geometry: geometry, - newScale: scale, - newOffset: newOffset) ?? newOffset - self.offset = fixedOffset - } - .onEnded { value in - let newOffset = self.accumulatedOffsets + (value.translation / scale) - let fixedOffset = checkBounds(geometry: geometry, - newScale: scale, - newOffset: newOffset) ?? newOffset - self.offset = fixedOffset - self.accumulatedOffsets = self.offset - } - )) - .onTapGesture(count: 2) { - withAnimation { - self.scale = geometry.defaultScale - self.offset = CGSize.zero - self.accumulatedScales = scale - self.accumulatedOffsets = offset - } - } - } - Spacer() - } - Spacer() - } - .overlay( - HStack { - if let xmark = UIImage(systemName: "multiply.circle.fill") { - Button(action: { - self.image = nil - completionHandler() - }, label: { - Image(uiImage: xmark) - .resizable() - .renderingMode(.template) - .foregroundColor(.red) - .scaledToFill() - .frame(width: 44, height: 44) - .padding(30) - }) - } - Spacer() - if let checkmark = UIImage(systemName: "checkmark.circle.fill") { - Button(action: { - if let scaledImage = buildImage(geometry: geometry, image: image, offset: offset, scale: scale) { - self.image = scaledImage - completionHandler() - } - }, label: { - Image(uiImage: checkmark) - .resizable() - .renderingMode(.template) - .foregroundColor(.green) - .scaledToFill() - .frame(width: 44, height: 44) - .padding(30) - }) - } - } - ,alignment: .bottom) - .onReceive(orientationChanged) { _ in - self.orientation = UIDevice.current.orientation - self.scale = CGFloat.maximum(self.scale, geometry.defaultScale) - } - } - } - } - } - - private func buildImage(geometry: Geometry, image: UIImage, offset: CGSize, scale: CGFloat) -> UIImage? { - let x = geometry.left(scale: scale, offset: offset) - geometry.radius - let y = geometry.top(scale: scale, offset: offset) - geometry.radius - - let circleSize = CGSize(width: geometry.circleDiameter, height: geometry.circleDiameter) - - let origin = geometry.convertToPixel(x: x, y: y, scale: scale) - let size = geometry.convertToPixel(size: circleSize, scale: scale) - - let cropZone = CGRect(x: origin.x, y: origin.y, - width: size.width, height: size.height) - - var result = image.croppedImage(inRect: cropZone) - - result = ImageEditor.resize(image: result, size: ImageEditor.profilSize) - - if let colorSpace = result.cgImage?.colorSpace?.name { - if colorSpace != CGColorSpace.sRGB { - result = ImageEditor.convertColorSpace(image: result, to: CGColorSpaceCreateDeviceRGB()) - } - } - - return result - } - - static func convertColorSpace(image: UIImage, to colorSpace: CGColorSpace) -> UIImage { - guard let cgImage = image.cgImage else { assertionFailure(); return image } - - guard cgImage.colorSpace != colorSpace else { assertionFailure(); return image } - - let context = CGContext(data: nil, width: cgImage.width, height: cgImage.height, bitsPerComponent: cgImage.bitsPerComponent, bytesPerRow: cgImage.bytesPerRow, space: colorSpace, bitmapInfo: cgImage.bitmapInfo.rawValue) - - let size = CGSize(width: cgImage.width, height: cgImage.height) - context?.draw(cgImage, in: CGRect(origin: .zero, size: size)) - - guard let makeImage = context?.makeImage() else { assertionFailure(); return image } - - return UIImage(cgImage: makeImage, scale: image.scale, orientation: image.imageOrientation) - } - - static func resize(image: UIImage, size newSize: CGFloat) -> UIImage { - let currentSize = image.size - guard currentSize.width > newSize else { return image } - - let newSize = CGSize(width: newSize / UIScreen.main.scale, height: newSize / UIScreen.main.scale) - - return UIGraphicsImageRenderer(size: newSize).image { _ in - image.draw(in: CGRect(origin: .zero, size: newSize)) - } - } - - struct Geometry { - - let circleDiameter: CGFloat - let geo: GeometryProxy - let imageSize: CGSize - - var radius: CGFloat { circleDiameter / 2 } - var imageRatio: CGFloat { imageSize.width / imageSize.height } - var imageIsInPortrait: Bool { imageRatio < 1 } - - var isScreenInPortrait: Bool { geo.size.height > geo.size.width } - - func convertToPixel(x: CGFloat, y: CGFloat, scale: CGFloat) -> CGPoint { - let imageSizeOnScreen = self.imageSizeOnScreen(scale: scale) - - let xRatio = x / imageSizeOnScreen.width - let yRatio = y / imageSizeOnScreen.height - - return CGPoint(x: imageSize.width * xRatio, y: imageSize.height * yRatio) - } - - func convertToPixel(size: CGSize, scale: CGFloat) -> CGSize { - let imageSizeOnScreen = self.imageSizeOnScreen(scale: scale) - - let widthRatio = size.width / imageSizeOnScreen.width - let heightRatio = size.height / imageSizeOnScreen.height - - return CGSize(width: imageSize.width * widthRatio, height: imageSize.height * heightRatio) - } - - func imageSizeOnScreen(scale: CGFloat) -> CGSize { - let imageHeight: CGFloat - let imageWidth: CGFloat - if (isScreenInPortrait) { - imageHeight = scale * geo.size.height - imageWidth = imageHeight * imageRatio - } else { - imageWidth = scale * geo.size.width - imageHeight = imageWidth / imageRatio - } - return CGSize(width: imageWidth, height: imageHeight) - } - - func top(scale: CGFloat, offset: CGSize) -> CGFloat { - let imageHeight = imageSizeOnScreen(scale: scale).height - return (imageHeight / 2) - (offset.height * scale) - } - - func bottom(scale: CGFloat, offset: CGSize) -> CGFloat { - let top = self.top(scale: scale, offset: offset) - let imageHeight = imageSizeOnScreen(scale: scale).height - return top - imageHeight - } - - func left(scale: CGFloat, offset: CGSize) -> CGFloat { - let imageWidth = imageSizeOnScreen(scale: scale).width - return (imageWidth / 2) - (offset.width * scale) - } - - func right(scale: CGFloat, offset: CGSize) -> CGFloat { - let left = self.left(scale: scale, offset: offset) - let imageWidth = imageSizeOnScreen(scale: scale).width - return left - imageWidth - } - - var defaultScale: CGFloat { - if isScreenInPortrait { - if imageIsInPortrait { - return (circleDiameter / geo.size.height) / imageRatio - } else { // ImageInLandscape - return circleDiameter / geo.size.height - } - } else { // ScreenInLandscape - if imageIsInPortrait { - return circleDiameter / geo.size.width - } else { // ImageInLandscape - return circleDiameter / geo.size.width * imageRatio - } - } - } - - - } - - private func checkBounds(geometry: Geometry, newScale: CGFloat, newOffset: CGSize) -> CGSize? { - var fixedOffset: CGSize? = nil - - let radius = geometry.radius - - let top = geometry.top(scale: newScale, offset: newOffset) - if top < radius { - if fixedOffset == nil { fixedOffset = newOffset } - let correction = (radius - top) / newScale - fixedOffset = CGSize(width: fixedOffset!.width, - height: fixedOffset!.height - correction) - } - - let bottom = geometry.bottom(scale: newScale, offset: newOffset) - if bottom > -radius { - if fixedOffset == nil { fixedOffset = newOffset } - let correction = (bottom + radius) / newScale - fixedOffset = CGSize(width: fixedOffset!.width, - height: fixedOffset!.height + correction) - } - - let left = geometry.left(scale: newScale, offset: newOffset) - if left < radius { - if fixedOffset == nil { fixedOffset = newOffset } - let correction = (radius - left) / newScale - fixedOffset = CGSize(width: fixedOffset!.width - correction, - height: fixedOffset!.height) - } - - let right = geometry.right(scale: newScale, offset: newOffset) - if right > -radius { - if fixedOffset == nil { fixedOffset = newOffset } - let correction = (radius + right) / newScale - fixedOffset = CGSize(width: fixedOffset!.width + correction, - height: fixedOffset!.height) - } - - return fixedOffset - } - -} - - -struct Landscape: View where Content: View { - let content: () -> Content - let height = UIScreen.main.bounds.width - let width = UIScreen.main.bounds.height - var body: some View { - content().previewLayout(PreviewLayout.fixed(width: width, height: height)) - } -} - -fileprivate extension CGSize { - - static func + (lhs: CGSize, rhs: CGSize) -> CGSize { - return CGSize(width: lhs.width + rhs.width, height: lhs.height + rhs.height) - } - - static func / (size: CGSize, denominator: CGFloat) -> CGSize { - return CGSize(width: size.width / denominator, height: size.height / denominator) - } - -} - -fileprivate extension UIImage { - func croppedImage(inRect rect: CGRect) -> UIImage { - var rectTransform: CGAffineTransform - switch imageOrientation { - case .left: - let rotation = CGAffineTransform(rotationAngle: .pi / 2) - rectTransform = rotation.translatedBy(x: 0, y: -size.height) - case .right: - let rotation = CGAffineTransform(rotationAngle: -.pi / 2) - rectTransform = rotation.translatedBy(x: -size.width, y: 0) - case .down: - let rotation = CGAffineTransform(rotationAngle: -.pi) - rectTransform = rotation.translatedBy(x: -size.width, y: -size.height) - default: - rectTransform = .identity - } - rectTransform = rectTransform.scaledBy(x: scale, y: scale) - let transformedRect = rect.applying(rectTransform) - let imageRef = cgImage!.cropping(to: transformedRect)! - return UIImage(cgImage: imageRef, scale: scale, orientation: imageOrientation) - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/InitialCircleView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/InitialCircleView.swift index ec51baee..6824a212 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/InitialCircleView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/InitialCircleView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,26 +20,58 @@ import ObvUI import SwiftUI import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvDesignSystem + + +/// Legacy view. Use InitialCircleViewNew instead. struct InitialCircleView: View { - let circledTextView: Text? - let systemImage: CircledInitialsIcon - let circleBackgroundColor: UIColor? - let circleTextColor: UIColor? - let circleDiameter: CGFloat - - init(circledTextView: Text?, systemImage: CircledInitialsIcon, circleBackgroundColor: UIColor?, circleTextColor: UIColor?, circleDiameter: CGFloat = 70.0) { - self.circledTextView = circledTextView - self.systemImage = systemImage - self.circleBackgroundColor = circleBackgroundColor - self.circleTextColor = circleTextColor - self.circleDiameter = circleDiameter - } + struct Model: Identifiable { + + let id: UUID + + struct Content { + let text: String? + let icon: CircledInitialsIcon + } - private var systemImageSizeAdjustement: CGFloat { - switch systemImage { + struct Colors { + let background: UIColor + let foreground: UIColor + + init(background: UIColor?, foreground: UIColor?) { + self.background = background ?? AppTheme.shared.colorScheme.systemFill + self.foreground = foreground ?? AppTheme.shared.colorScheme.secondaryLabel + } + + } + + let content: Content + let colors: Colors + let circleDiameter: CGFloat + + init(content: Content, colors: Colors, circleDiameter: CGFloat) { + self.id = UUID() + self.content = content + self.colors = colors + self.circleDiameter = circleDiameter + } + + } + + + let model: Model + + + init(model: Model) { + self.model = model + } + + + private var iconSizeAdjustement: CGFloat { + switch model.content.icon { case .person: return 2 case .person3Fill: return 3 case .personFillXmark: return 2 @@ -48,97 +80,90 @@ struct InitialCircleView: View { } } - private var textColor: Color { - Color(circleTextColor ?? AppTheme.shared.colorScheme.secondaryLabel) - } - private var backgroundColor: Color { - Color(circleBackgroundColor ?? AppTheme.shared.colorScheme.systemFill) - } - var body: some View { ZStack { Circle() - .frame(width: circleDiameter, height: circleDiameter) - .foregroundColor(backgroundColor) - if let circledTextView = self.circledTextView { - circledTextView - .font(Font.system(size: circleDiameter/2.0, weight: .black, design: .rounded)) - .foregroundColor(textColor) + .frame(width: model.circleDiameter, height: model.circleDiameter) + .foregroundColor(Color(model.colors.background)) + if let text = model.content.text { + Text(text) + .font(Font.system(size: model.circleDiameter/2.0, weight: .black, design: .rounded)) + .foregroundColor(Color(model.colors.foreground)) } else { - Image(systemName: systemImage.icon.systemName) - .font(Font.system(size: circleDiameter/systemImageSizeAdjustement, weight: .semibold, design: .default)) - .foregroundColor(textColor) + Image(systemName: model.content.icon.icon.systemName) + .font(Font.system(size: model.circleDiameter/iconSizeAdjustement, weight: .semibold, design: .default)) + .foregroundColor(Color(model.colors.foreground)) } } } } +// MARK: - NSManagedObjects extensions -struct InitialCircleView_Previews: PreviewProvider { +extension PersistedObvOwnedIdentity { - private struct TestData: Identifiable { - let id = UUID() - let circledTextView: Text? - let systemImage: CircledInitialsIcon - let circleBackgroundColor: UIColor? - let circleTextColor: UIColor? - let circleDiameter: CGFloat + var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: self.circledInitialsConfiguration.backgroundColor(appTheme: AppTheme.shared), + foreground: self.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared)) } - private static let testData = [ - TestData(circledTextView: Text("SV"), - systemImage: .person, - circleBackgroundColor: nil, - circleTextColor: nil, - circleDiameter: 70), - TestData(circledTextView: Text("A"), - systemImage: .person, - circleBackgroundColor: .red, - circleTextColor: .blue, - circleDiameter: 70), - TestData(circledTextView: Text("MF"), - systemImage: .person, - circleBackgroundColor: nil, - circleTextColor: nil, - circleDiameter: 120), - TestData(circledTextView: nil, - systemImage: .person, - circleBackgroundColor: .purple, - circleTextColor: .green, - circleDiameter: 70), - TestData(circledTextView: nil, - systemImage: .person, - circleBackgroundColor: .purple, - circleTextColor: .green, - circleDiameter: 120), - TestData(circledTextView: nil, - systemImage: .person, - circleBackgroundColor: .purple, - circleTextColor: .green, - circleDiameter: 70), +} + +extension PersistedGroupV2Member { + + var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: self.circledInitialsConfiguration.backgroundColor(appTheme: AppTheme.shared), + foreground: self.circledInitialsConfiguration.foregroundColor(appTheme: AppTheme.shared)) + } + +} + + + +struct InitialCircleView_Previews: PreviewProvider { + + + private static let testModels = [ + InitialCircleView.Model(content: .init(text: "SV", + icon: .person), + colors: .init(background: nil, + foreground: nil), + circleDiameter: 60), + InitialCircleView.Model(content: .init(text: "A", + icon: .person), + colors: .init(background: .red, + foreground: .blue), + circleDiameter: 70), + InitialCircleView.Model(content: .init(text: "MF", + icon: .person), + colors: .init(background: nil, + foreground: nil), + circleDiameter: 120), + InitialCircleView.Model(content: .init(text: nil, + icon: .person), + colors: .init(background: .purple, + foreground: .green), + circleDiameter: 70), + InitialCircleView.Model(content: .init(text: nil, + icon: .person), + colors: .init(background: .purple, + foreground: .green), + circleDiameter: 120), ] static var previews: some View { Group { - ForEach(testData) { - InitialCircleView(circledTextView: $0.circledTextView, - systemImage: $0.systemImage, - circleBackgroundColor: $0.circleBackgroundColor, - circleTextColor: $0.circleTextColor, - circleDiameter: $0.circleDiameter) + ForEach(testModels) { model in + InitialCircleView(model: model) .padding() .background(Color(.systemBackground)) .environment(\.colorScheme, .dark) .previewLayout(.sizeThatFits) } - ForEach(testData) { - InitialCircleView(circledTextView: $0.circledTextView, - systemImage: $0.systemImage, - circleBackgroundColor: $0.circleBackgroundColor, - circleTextColor: $0.circleTextColor, - circleDiameter: $0.circleDiameter) + ForEach(testModels) { model in + InitialCircleView(model: model) .padding() .background(Color(.systemBackground)) .environment(\.colorScheme, .light) diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvAutoGrowingTextView/ObvAutoGrowingTextView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvAutoGrowingTextView/ObvAutoGrowingTextView.swift index 0dd7c504..55029b69 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvAutoGrowingTextView/ObvAutoGrowingTextView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvAutoGrowingTextView/ObvAutoGrowingTextView.swift @@ -20,6 +20,7 @@ import UIKit import PDFKit import MobileCoreServices +import UniformTypeIdentifiers class ObvAutoGrowingTextView: UITextView, ViewForDragAndDropDelegate { @@ -129,7 +130,7 @@ final class ViewForDragAndDrop: UIView { } private func setup() { - self.pasteConfiguration = UIPasteConfiguration(acceptableTypeIdentifiers: [String(kUTTypeData)]) + self.pasteConfiguration = UIPasteConfiguration(acceptableTypeIdentifiers: [UTType.data.identifier]) } override func canPaste(_ itemProviders: [NSItemProvider]) -> Bool { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvCardView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvCardView.swift index 93968c90..af101ff0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvCardView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvCardView.swift @@ -19,6 +19,7 @@ import ObvUI import SwiftUI +import ObvDesignSystem /// A View Builder allowing to create a card around the content. diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvChevron.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvChevron.swift index 479988c6..b7c26385 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvChevron.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvChevron.swift @@ -19,6 +19,7 @@ import ObvUI import SwiftUI +import ObvDesignSystem struct ObvChevron: View { @@ -38,13 +39,13 @@ struct ObvChevron: View { .imageScale(.large) .foregroundColor(.white) .colorMultiply(selected ? Color.clear : ObvChevron.normalColor) - .animation(.spring()) + .animation(.spring(), value: 0.3) .clipShape(Circle().scale(0.7)) Image(systemIcon: .chevronRightCircleFill) .imageScale(.large) .foregroundColor(.white) .colorMultiply(selected ? ObvChevron.selectedColor : Color.clear) - .animation(.spring()) + .animation(.spring(), value: 0.3) } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvChipLabel.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvChipLabel.swift index 792f90c1..671d3575 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvChipLabel.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvChipLabel.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + final class ObvChipLabel: UIView { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvSimpleListItemView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvSimpleListItemView.swift index 7de7f435..a23737db 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvSimpleListItemView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvSimpleListItemView.swift @@ -19,7 +19,7 @@ import ObvUI import SwiftUI - +import ObvDesignSystem struct ObvSimpleListItemView: View { @@ -43,18 +43,9 @@ struct ObvSimpleListItemView: View { self.title = title self.buttonConfig = nil if let date = date { - if #available(iOS 14, *) { - self.value = Text(date, style: .date) - } else { - let df = DateFormatter() - df.locale = Locale.current - df.doesRelativeDateFormatting = true - df.timeStyle = .short - df.dateStyle = .short - self.value = Text(df.string(from: date)) - } + self.value = Text(date, style: .date) } else { - self.value = Text("-") + self.value = Text(verbatim: "-") } self.valueToCopyOnLongPress = nil } diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvTextField.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvTextField.swift index 0c0170bd..36951252 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvTextField.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ObvTextField.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + final class ObvTextField: UITextField { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/OlvidAlertViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/OlvidAlertViewController.swift index 52f38003..2de1ebd8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/OlvidAlertViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/OlvidAlertViewController.swift @@ -19,6 +19,7 @@ import ObvUI import UIKit +import ObvDesignSystem final class OlvidAlertViewController: UIViewController { @@ -102,7 +103,7 @@ final class OlvidAlertViewController: UIViewController { buttonsStack.spacing = 8.0 buttonsStack.addArrangedSubview(primaryButton) - if #available(iOS 15, *) { + do { var configuration = UIButton.Configuration.filled() configuration.buttonSize = .large configuration.cornerStyle = .large @@ -111,7 +112,7 @@ final class OlvidAlertViewController: UIViewController { primaryButton.addTarget(self, action: #selector(primaryButtonTapped), for: .touchUpInside) buttonsStack.addArrangedSubview(secondaryButton) - if #available(iOS 15, *) { + do { var configuration = UIButton.Configuration.gray() configuration.buttonSize = .large configuration.cornerStyle = .large diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/OlvidSnackBarView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/OlvidSnackBarView.swift index c5bc8e7d..3367a4e8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/OlvidSnackBarView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/OlvidSnackBarView.swift @@ -20,6 +20,7 @@ import UIKit import ObvTypes import ObvUI +import ObvDesignSystem final class OlvidSnackBarView: UIView { @@ -41,19 +42,11 @@ final class OlvidSnackBarView: UIView { self.currentOwnedCryptoId = ownedCryptoId self.label.text = snackBarCategory.body self.button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside) - if #available(iOS 15, *) { - self.button.configuration = makeButtonConfiguration(title: snackBarCategory.buttonTitle) - } else { - self.button.setTitle(snackBarCategory.buttonTitle, for: .normal) - } + self.button.configuration = makeButtonConfiguration(title: snackBarCategory.buttonTitle) let config = UIImage.SymbolConfiguration(pointSize: 30, weight: .regular) let image = UIImage(systemIcon: snackBarCategory.icon, withConfiguration: config) - if #available(iOS 15, *) { - self.button.maximumContentSizeCategory = .extraLarge - imageView.image = image?.withTintColor(labelColor, renderingMode: .alwaysOriginal) - } else { - imageView.image = image - } + self.button.maximumContentSizeCategory = .extraLarge + imageView.image = image?.withTintColor(labelColor, renderingMode: .alwaysOriginal) } private let labelColor = AppTheme.shared.colorScheme.secondaryLabel diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/PasscodeUtils.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PasscodeUtils.swift index 2bcddc33..deeecd01 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/PasscodeUtils.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PasscodeUtils.swift @@ -19,6 +19,7 @@ import ObvUI import SwiftUI +import ObvDesignSystem // Allows to fix an iOS 14/13 bug with @available(iOS 15.0, *) @FocusState @@ -116,41 +117,26 @@ struct PasscodeField: View { @ViewBuilder private var field: some View { if showPasscode { - if #available(iOS 15.0, *) { - textField - .obvFocused(state: $textFocus) - } else { - textField - } + textField + .obvFocused(state: $textFocus) } else { - if #available(iOS 15.0, *) { - secureField - .obvFocused(state: $secureFocus) - } else { - secureField - } + secureField + .obvFocused(state: $secureFocus) } } var body: some View { HStack { - if #available(iOS 15.0, *) { - field - .keyboardType(passcodeKind.passcodeIsPassword ? .alphabet : .numberPad) - } else { - field - .keyboardType(.numberPad) - } + field + .keyboardType(passcodeKind.passcodeIsPassword ? .alphabet : .numberPad) if isLockedOut { Image(systemIcon: .lock(.none, .none)) .font(.system(size: 20)) .foregroundColor(.primary) } else { Button(action: { - if #available(iOS 15.0, *) { - withAnimation { - showPasscode.toggle() - } + withAnimation { + showPasscode.toggle() } }, label: { Image(systemIcon: .eyes) diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteEditor/PersonalNoteEditorHostingController.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteEditor/PersonalNoteEditorHostingController.swift new file mode 100644 index 00000000..56781c8d --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteEditor/PersonalNoteEditorHostingController.swift @@ -0,0 +1,42 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import UIKit +import SwiftUI + +@available(iOS 14.0, *) +final class PersonalNoteEditorHostingController: UIHostingController> { + + init(model: PersonalNoteEditorViewModel, actions: PersonalNoteEditorViewActionsDelegate) { + let view = PersonalNoteEditorView(model: model, actions: actions) + super.init(rootView: view) + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + + + +struct PersonalNoteEditorViewModel: PersonalNoteEditorViewModelProtocol { + let initialText: String? +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteEditor/PersonalNoteEditorView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteEditor/PersonalNoteEditorView.swift new file mode 100644 index 00000000..37fe393c --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteEditor/PersonalNoteEditorView.swift @@ -0,0 +1,128 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI + + +protocol PersonalNoteEditorViewModelProtocol { + var initialText: String? { get } +} + + +protocol PersonalNoteEditorViewActionsDelegate { + func userWantsToDismissPersonalNoteEditorView() async + func userWantsToUpdatePersonalNote(with newText: String?) async +} + +@available(iOS 14.0, *) +struct PersonalNoteEditorView: View { + + let model: Model + let actions: PersonalNoteEditorViewActionsDelegate + + @State private var text = "" + @State private var isOkButtonDisabled = true + @State private var isShowingPlaceHolderText = false + + private func cancel() { + Task { + await actions.userWantsToDismissPersonalNoteEditorView() + } + } + + private func setInitialTextValue() { + if let initialText = model.initialText, !initialText.isEmpty { + self.text = model.initialText ?? "" + } else { + self.isShowingPlaceHolderText = true + self.text = NSLocalizedString("TYPE_PERSONAL_NOTE_HERE", comment: "") + } + } + + private func ok() { + let newText = self.text + Task { + await actions.userWantsToUpdatePersonalNote(with: newText) + } + } + + private func textDidChange(_ newText: String) { + isOkButtonDisabled = text == (model.initialText ?? "") || isShowingPlaceHolderText + } + + private func textEditorWasTapped() { + if isShowingPlaceHolderText { + self.text = "" + self.isShowingPlaceHolderText = false + } + } + + var body: some View { + VStack { + TextEditor(text: $text) + .onChange(of: text, perform: textDidChange) + .foregroundColor(isShowingPlaceHolderText ? .secondary : .primary) + .onTapGesture(perform: textEditorWasTapped) + HStack { + OlvidButton( + style: .standardWithBlueText, + title: Text("Cancel"), + systemIcon: .xmarkCircle, + action: cancel) + OlvidButton( + style: .blue, + title: Text("Ok"), + systemIcon: .checkmarkCircle, + action: ok) + .disabled(isOkButtonDisabled) + } + } + .padding() + .onAppear(perform: setInitialTextValue) + } + +} + + + +@available(iOS 14.0, *) +struct PersonalNoteEditorView_Previews: PreviewProvider { + + private struct ModelForPreviews: PersonalNoteEditorViewModelProtocol { + let initialText: String? + } + + private struct ActionsForPreviews: PersonalNoteEditorViewActionsDelegate { + func userWantsToUpdatePersonalNote(with newText: String?) async {} + func userWantsToDismissPersonalNoteEditorView() async {} + } + + static var previews: some View { + Group { + PersonalNoteEditorView( + model: ModelForPreviews(initialText: "Some note writted before"), + actions: ActionsForPreviews()) + PersonalNoteEditorView( + model: ModelForPreviews(initialText: nil), + actions: ActionsForPreviews()) + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteViewer/PersonalNoteView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteViewer/PersonalNoteView.swift new file mode 100644 index 00000000..422a59e2 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteViewer/PersonalNoteView.swift @@ -0,0 +1,71 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI + + +protocol PersonalNoteViewModelProtocol: ObservableObject { + var text: String? { get } +} + + +struct PersonalNoteView: View { + + @ObservedObject var model: Model + + var body: some View { + ObvCardView { + VStack(alignment: .leading) { + HStack { + Text("PERSONAL_NOTE") + .font(.headline) + .padding(.bottom, 4) + Spacer(minLength: 0) + } + Text(verbatim: model.text ?? "") + .font(.body) + .foregroundColor(.secondary) + } + } + } + +} + + +struct PersonalNoteView_Previews: PreviewProvider { + + final class ModelForPreviews: PersonalNoteViewModelProtocol { + + let text: String? + + init(text: String?) { + self.text = text + } + + } + + static var previews: some View { + Group { + PersonalNoteView( + model: ModelForPreviews(text: "The text of the personal note")) + } + } + +} diff --git a/Modules/UI/CircledInitialsView/CircledInitialsConfiguration/CircledInitialsIcon.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteViewer/ViewModelsForCoreDataEntities/PersistedGroupV2+PersonalNoteViewModelProtocol.swift similarity index 78% rename from Modules/UI/CircledInitialsView/CircledInitialsConfiguration/CircledInitialsIcon.swift rename to iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteViewer/ViewModelsForCoreDataEntities/PersistedGroupV2+PersonalNoteViewModelProtocol.swift index 7a1cfdd1..6d811cb1 100644 --- a/Modules/UI/CircledInitialsView/CircledInitialsConfiguration/CircledInitialsIcon.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteViewer/ViewModelsForCoreDataEntities/PersistedGroupV2+PersonalNoteViewModelProtocol.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -16,15 +16,15 @@ * You should have received a copy of the GNU Affero General Public License * along with Olvid. If not, see . */ - import Foundation +import ObvUICoreData -public enum CircledInitialsIcon: Hashable { - case lockFill - case person - case person3Fill - case personFillXmark - case plus +extension PersistedGroupV2: PersonalNoteViewModelProtocol { + + var text: String? { + self.personalNote + } + } diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteViewer/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+PersonalNoteViewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteViewer/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+PersonalNoteViewModelProtocol.swift new file mode 100644 index 00000000..2ed46509 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/PersonalNoteViewer/ViewModelsForCoreDataEntities/PersistedObvContactIdentity+PersonalNoteViewModelProtocol.swift @@ -0,0 +1,30 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvUICoreData + + +extension PersistedObvContactIdentity: PersonalNoteViewModelProtocol { + + var text: String? { + self.note + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ReorderableForEach.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ReorderableForEach.swift index e3344826..63dc702a 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/ReorderableForEach.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/ReorderableForEach.swift @@ -19,6 +19,7 @@ import SwiftUI import UniformTypeIdentifiers +import OlvidUtils @available(iOS 15, *) protocol ReorderableItem: Identifiable, Equatable { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/ObvDocumentPickerViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/ObvDocumentPickerViewController.swift index 8ad3bd63..f8422b1d 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/ObvDocumentPickerViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/ObvDocumentPickerViewController.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + final class ObvDocumentPickerViewController: UIDocumentPickerViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/PrivacyViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/PrivacyViewController.swift index ede7d6d4..1fdafe95 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/PrivacyViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/PrivacyViewController.swift @@ -19,6 +19,8 @@ import ObvUI import UIKit +import ObvDesignSystem + final class PrivacyViewController: UIViewController { diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/ShowOwnedIdentityButtonUIViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/ShowOwnedIdentityButtonUIViewController.swift index dd2bf059..adb92aa7 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/ShowOwnedIdentityButtonUIViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/StandardViewControllerSubclasses/ShowOwnedIdentityButtonUIViewController.swift @@ -25,7 +25,7 @@ import Combine import OlvidUtils import ObvUI import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials class ShowOwnedIdentityButtonUIViewController: UIViewController, OwnedIdentityChooserViewControllerDelegate { @@ -182,12 +182,10 @@ class ShowOwnedIdentityButtonUIViewController: UIViewController, OwnedIdentityCh let ownedIdentityChooserVC = OwnedIdentityChooserViewController(currentOwnedCryptoId: currentOwnedCryptoId, ownedIdentities: ownedIdentities, delegate: self) ownedIdentityChooserVC.modalPresentationStyle = .popover if let popover = ownedIdentityChooserVC.popoverPresentationController { - if #available(iOS 15, *) { - let sheet = popover.adaptiveSheetPresentationController - sheet.detents = [.medium(), .large()] - sheet.prefersGrabberVisible = true - sheet.preferredCornerRadius = 16.0 - } + let sheet = popover.adaptiveSheetPresentationController + sheet.detents = [.medium(), .large()] + sheet.prefersGrabberVisible = true + sheet.preferredCornerRadius = 16.0 assert(profilePictureBarButtonItem != nil) if #available(iOS 16, *) { popover.sourceItem = profilePictureBarButtonItem @@ -244,7 +242,7 @@ class ShowOwnedIdentityButtonUIViewController: UIViewController, OwnedIdentityCh preferredStyle: .alert) alert.addTextField { textField in textField.passwordRules = UITextInputPasswordRules(descriptor: "minlength: \(ObvMessengerConstants.minimumLengthOfPasswordForHiddenProfiles);") - textField.text = NSLocalizedString("", comment: "") + textField.text = "" textField.isSecureTextEntry = true textField.addTarget(self, action: #selector(self.textFieldForUnlockingHiddenProfileDidChange(textField:)), for: .editingChanged) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/UIElements/SubscriptionStatusView.swift b/iOSClient/ObvMessenger/ObvMessenger/UIElements/SubscriptionStatusView.swift index 25e481c0..46c8db8f 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/UIElements/SubscriptionStatusView.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/UIElements/SubscriptionStatusView.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,6 +20,8 @@ import SwiftUI import ObvTypes import ObvUI +import UI_SystemIcon +import ObvDesignSystem struct SubscriptionStatusView: View { @@ -28,9 +30,10 @@ struct SubscriptionStatusView: View { let apiKeyStatus: APIKeyStatus let apiKeyExpirationDate: Date? let showSubscriptionPlansButton: Bool - let subscriptionPlanAction: () -> Void + let userWantsToSeeSubscriptionPlans: () -> Void let showRefreshStatusButton: Bool let refreshStatusAction: () -> Void + let apiPermissions: APIPermissions struct Feature: Identifiable { let id = UUID() @@ -38,38 +41,24 @@ struct SubscriptionStatusView: View { let imageColor: Color let description: String } - - private var isPremiumFeaturesAvailable: Bool { - switch apiKeyStatus { - case .expired, .unknown, .licensesExhausted, .awaitingPaymentOnHold, .freeTrialExpired: - return false - case .free, .valid, .freeTrial, .awaitingPaymentGracePeriod, .anotherOwnedIdentityHasValidAPIKey: - return true - } - } private func refreshStatusNow() { refreshStatusAction() } - private static let freeFeatures = [ - SubscriptionStatusView.Feature(imageSystemName: "bubble.left.and.bubble.right.fill", - imageColor: Color(.displayP3, red: 1.0, green: 0.35, blue: 0.39, opacity: 1.0), - description: NSLocalizedString("Sending & receiving messages and attachments", comment: "")), - SubscriptionStatusView.Feature(imageSystemName: "person.3.fill", - imageColor: Color(.displayP3, red: 7.0/255, green: 132.0/255, blue: 254.0/255, opacity: 1.0), - description: NSLocalizedString("Create groups", comment: "")), - SubscriptionStatusView.Feature(imageSystemName: "phone.fill.arrow.down.left", - imageColor: Color(.displayP3, red: 253.0/255, green: 56.0/255, blue: 95.0/255, opacity: 1.0), - description: NSLocalizedString("Receive secure calls", comment: "")), + private static let freeFeature: [FeatureView.Model] = [ + .init(feature: .sendAndReceiveMessagesAndAttachments, showAsAvailable: true), + .init(feature: .createGroupChats, showAsAvailable: true), + .init(feature: .receiveSecureCalls, showAsAvailable: true), ] - static let premiumFeatures = [ - SubscriptionStatusView.Feature(imageSystemName: "phone.fill.arrow.up.right", - imageColor: Color(.displayP3, red: 253.0/255, green: 56.0/255, blue: 95.0/255, opacity: 1.0), - description: NSLocalizedString("Make secure calls", comment: "")), - ] + + private var premiumFeatures: [FeatureView.Model] {[ + .init(feature: .startSecureCalls, showAsAvailable: apiPermissions.contains(.canCall)), + .init(feature: .multidevice, showAsAvailable: apiPermissions.contains(.multidevice)) + ]} + var body: some View { VStack { if let title = self.title { @@ -90,7 +79,7 @@ struct SubscriptionStatusView: View { OlvidButton(style: .blue, title: Text("See subscription plans"), systemIcon: .flameFill, - action: subscriptionPlanAction) + action: userWantsToSeeSubscriptionPlans) .padding(.bottom, 16) } HStack { Spacer() } // Force full width @@ -98,16 +87,14 @@ struct SubscriptionStatusView: View { SeparatorView() .padding(.bottom, 16) FeatureListView(title: NSLocalizedString("Free features", comment: ""), - features: SubscriptionStatusView.freeFeatures, - available: true) + features: SubscriptionStatusView.freeFeature) SeparatorView() .padding(.bottom, 16) FeatureListView(title: NSLocalizedString("Premium features", comment: ""), - features: SubscriptionStatusView.premiumFeatures, - available: isPremiumFeaturesAvailable) + features: premiumFeatures) } if showRefreshStatusButton { - OlvidButton(style: .standard, + OlvidButton(style: .standardWithBlueText, title: Text("Refresh status"), systemIcon: .arrowClockwise, action: refreshStatusNow) @@ -125,36 +112,19 @@ struct SubscriptionStatusView: View { struct FeatureListView: View { let title: String - let features: [SubscriptionStatusView.Feature] - let available: Bool + let features: [FeatureView.Model] - private var colorScheme: AppThemeSemanticColorScheme { AppTheme.shared.colorScheme } - private let colorWhenUnavailable = Color(AppTheme.shared.colorScheme.secondaryLabel) var body: some View { VStack(alignment: .leading, spacing: 0) { HStack { Text(title) .font(.headline) - Image(systemName: available ? "checkmark.seal.fill" : "xmark.seal.fill") - .foregroundColor(available ? .green : colorWhenUnavailable) - .font(.headline) } .padding(.bottom, 16) ForEach(features) { feature in - HStack(alignment: .firstTextBaseline) { - Image(systemName: feature.imageSystemName) - .font(.system(size: 16)) - .foregroundColor(available ? feature.imageColor : colorWhenUnavailable) - .frame(minWidth: 30) - Text(feature.description) - .foregroundColor(available ? Color(colorScheme.label) : colorWhenUnavailable) - .font(.body) - .lineLimit(nil) - .fixedSize(horizontal: false, vertical: true) - Spacer() - } - .padding(.bottom, 16) + FeatureView(model: feature) + .padding(.bottom, 16) } } } @@ -162,6 +132,94 @@ struct FeatureListView: View { } +// MARK: - FeatureView + +struct FeatureView: View { + + let model: Model + + + struct Model: Identifiable { + let feature: FeatureView.Feature + let showAsAvailable: Bool + var id: Int { self.feature.rawValue } + } + + + enum Feature: Int, Identifiable { + case startSecureCalls = 0 + case multidevice + case sendAndReceiveMessagesAndAttachments + case createGroupChats + case receiveSecureCalls + var id: Int { self.rawValue } + } + + + private var systemIcon: SystemIcon { + switch model.feature { + case .startSecureCalls: return .phoneArrowUpRightFill + case .multidevice: return .macbookAndIphone + case .sendAndReceiveMessagesAndAttachments: return .bubbleLeftAndBubbleRightFill + case .createGroupChats: return .person3Fill + case .receiveSecureCalls: return .phoneArrowDownLeftFill + } + } + + + private var systemIconColor: Color { + switch model.feature { + case .startSecureCalls: return Color(.displayP3, red: 253.0/255, green: 56.0/255, blue: 95.0/255, opacity: 1.0) + case .multidevice: return Color(UIColor.systemBlue) + case .sendAndReceiveMessagesAndAttachments: return Color(.displayP3, red: 1.0, green: 0.35, blue: 0.39, opacity: 1.0) + case .createGroupChats: return Color(.displayP3, red: 7.0/255, green: 132.0/255, blue: 254.0/255, opacity: 1.0) + case .receiveSecureCalls: return Color(.displayP3, red: 253.0/255, green: 56.0/255, blue: 95.0/255, opacity: 1.0) + } + } + + + private var description: LocalizedStringKey { + switch model.feature { + case .startSecureCalls: return "MAKE_SECURE_CALLS" + case .multidevice: return "MULTIDEVICE" + case .sendAndReceiveMessagesAndAttachments: return "Sending & receiving messages and attachments" + case .createGroupChats: return "Create groups" + case .receiveSecureCalls: return "RECEIVE_SECURE_CALLS" + } + } + + + private var systemIconForAvailability: SystemIcon { + model.showAsAvailable ? .checkmarkSealFill : .xmarkSealFill + } + + + private var systemIconForAvailabilityColor: Color { + model.showAsAvailable ? Color(UIColor.systemGreen) : Color(AppTheme.shared.colorScheme.secondaryLabel) + } + + + var body: some View { + HStack(alignment: .firstTextBaseline) { + Image(systemIcon: systemIcon) + .font(.system(size: 16)) + .foregroundColor(systemIconColor) + .frame(minWidth: 30) + Text(description) + .foregroundColor(Color(AppTheme.shared.colorScheme.label)) + .font(.body) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + Spacer() + Image(systemIcon: systemIconForAvailability) + .font(.system(size: 16)) + .foregroundColor(systemIconForAvailabilityColor) + } + } + +} + + struct SubscriptionStatusSummaryView: View { @@ -337,87 +395,115 @@ struct FeatureListView_Previews: PreviewProvider { description: "Make secure calls"), ] + private static let apiPermissionsCalls = { + var permissions = APIPermissions() + permissions.insert(.canCall) + return permissions + }() + + private static let apiPermissionsMultiDevice = { + var permissions = APIPermissions() + permissions.insert(.multidevice) + return permissions + }() + + private static let apiPermissionsCallsAndMultiDevice = { + var permissions = APIPermissions() + permissions.insert(.canCall) + permissions.insert(.multidevice) + return permissions + }() + static var previews: some View { Group { SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: .anotherOwnedIdentityHasValidAPIKey, apiKeyExpirationDate: Date(), showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, - showRefreshStatusButton: false, - refreshStatusAction: {}) + userWantsToSeeSubscriptionPlans: {}, + showRefreshStatusButton: true, + refreshStatusAction: {}, + apiPermissions: Self.apiPermissionsCalls) .padding() .previewLayout(.sizeThatFits) SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: .unknown, apiKeyExpirationDate: nil, showSubscriptionPlansButton: true, - subscriptionPlanAction: {}, + userWantsToSeeSubscriptionPlans: {}, showRefreshStatusButton: true, - refreshStatusAction: {}) + refreshStatusAction: {}, + apiPermissions: apiPermissionsCallsAndMultiDevice) .padding() .previewLayout(.sizeThatFits) SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: .valid, apiKeyExpirationDate: Date(), showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, + userWantsToSeeSubscriptionPlans: {}, showRefreshStatusButton: true, - refreshStatusAction: {}) + refreshStatusAction: {}, + apiPermissions: apiPermissionsMultiDevice) .padding() .previewLayout(.sizeThatFits) SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: .licensesExhausted, apiKeyExpirationDate: nil, showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, + userWantsToSeeSubscriptionPlans: {}, showRefreshStatusButton: false, - refreshStatusAction: {}) + refreshStatusAction: {}, + apiPermissions: apiPermissionsMultiDevice) .padding() .previewLayout(.sizeThatFits) SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: .expired, apiKeyExpirationDate: Date(), showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, + userWantsToSeeSubscriptionPlans: {}, showRefreshStatusButton: true, - refreshStatusAction: {}) + refreshStatusAction: {}, + apiPermissions: apiPermissionsMultiDevice) .padding() .previewLayout(.sizeThatFits) SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: .free, apiKeyExpirationDate: Date(), showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, + userWantsToSeeSubscriptionPlans: {}, showRefreshStatusButton: false, - refreshStatusAction: {}) + refreshStatusAction: {}, + apiPermissions: apiPermissionsMultiDevice) .padding() .previewLayout(.sizeThatFits) SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: .awaitingPaymentGracePeriod, apiKeyExpirationDate: Date(), showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, + userWantsToSeeSubscriptionPlans: {}, showRefreshStatusButton: false, - refreshStatusAction: {}) + refreshStatusAction: {}, + apiPermissions: apiPermissionsMultiDevice) .padding() .previewLayout(.sizeThatFits) SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: .awaitingPaymentOnHold, apiKeyExpirationDate: Date(), showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, + userWantsToSeeSubscriptionPlans: {}, showRefreshStatusButton: false, - refreshStatusAction: {}) + refreshStatusAction: {}, + apiPermissions: apiPermissionsMultiDevice) .padding() .previewLayout(.sizeThatFits) SubscriptionStatusView(title: Text("SUBSCRIPTION_STATUS"), apiKeyStatus: .freeTrialExpired, apiKeyExpirationDate: Date(), showSubscriptionPlansButton: false, - subscriptionPlanAction: {}, + userWantsToSeeSubscriptionPlans: {}, showRefreshStatusButton: false, - refreshStatusAction: {}) + refreshStatusAction: {}, + apiPermissions: apiPermissionsMultiDevice) .padding() .previewLayout(.sizeThatFits) .environment(\.locale, .init(identifier: "fr")) diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/CloudKitUtils.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/CloudKitUtils.swift index e00315d6..6c4e1b6e 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/CloudKitUtils.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/CloudKitUtils.swift @@ -87,17 +87,24 @@ final class CloudKitBackupRecordIterator: AsyncIteratorProtocol { return try await withCheckedThrowingContinuation { cont in @Atomic var records: [CKRecord] = [] - op.recordFetchedBlock = { record in - records += [record] + op.recordMatchedBlock = { (_, result) in + switch result { + case .success(let record): + records += [record] + case .failure(let error): + assertionFailure(error.localizedDescription) + } } - op.queryCompletionBlock = { cursor, error in - if let error = error { + op.queryResultBlock = { result in + switch result { + case .failure(let error): cont.resume(throwing: error) return + case .success(let cursor): + self.cursor = cursor + self.hasNext = self.cursor != nil + cont.resume(returning: records) } - self.cursor = cursor - self.hasNext = self.cursor != nil - cont.resume(returning: records) } self.database.add(op) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/LPMetadataProviderUtils.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/LPMetadataProviderUtils.swift index cbcb9721..44fe2355 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/LPMetadataProviderUtils.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/LPMetadataProviderUtils.swift @@ -21,6 +21,7 @@ import LinkPresentation import CryptoKit import os.log import ObvUICoreData +import ObvSettings extension LPMetadataProvider { diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/Loading Item Providers/LoadItemProviderOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/Loading Item Providers/LoadItemProviderOperation.swift index 2c42ae45..ce2d94cf 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/Loading Item Providers/LoadItemProviderOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/Loading Item Providers/LoadItemProviderOperation.swift @@ -19,12 +19,14 @@ import Foundation import MobileCoreServices +import UniformTypeIdentifiers import os.log import UIKit import Contacts import OlvidUtils import ObvUI import ObvUICoreData +import ObvSettings /// This operation takes an `itemProvider` and loads it. @@ -35,12 +37,12 @@ import ObvUICoreData /// - It keeps track of the UTI and of the file name so as to return an appropriate `loadedFileRepresentation`. final class LoadItemProviderOperation: OperationWithSpecificReasonForCancel, OperationProvidingLoadedItemProvider { - private let preferredUTIs = [kUTTypeFileURL, kUTTypeJPEG, kUTTypePNG, kUTTypeMPEG4, kUTTypeMP3, kUTTypeQuickTimeMovie].map({ $0 as String }) - private let ignoredUTIs = [UTI.Bitmoji.avatarID, UTI.Bitmoji.comicID, UTI.Bitmoji.packID, UTI.Apple.groupActivitiesActivity] + private let preferredTypes: [UTType] = [.fileURL, .jpeg, .png, .mpeg4Movie, .mp3, .quickTimeMovie] + private let ignoredTypes: Set = Set([.groupActivitiesActivity, .Bitmoji.avatarID, .Bitmoji.comicID, .Bitmoji.packID]) private let itemProviderOrItemURL: ItemProviderOrItemURL - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "LoadItemProviderOperation") + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "LoadItemProviderOperation") // Called iff a progress is available for tracking the loading progress private let progressAvailable: (Progress) -> Void @@ -89,54 +91,66 @@ final class LoadItemProviderOperation: OperationWithSpecificReasonForCancel UTType { + if (url as NSURL).pathExtension == UTType.olvidBackup.preferredFilenameExtension { + return .olvidBackup + } else if let type = try? url.resourceValues(forKeys: [.contentTypeKey]).contentType { + return type + } else { + return .data + } + } + + private func process(_ itemProvider: NSItemProvider) { // Find the most appropriate UTI to load - let availableTypeIdentifiers = itemProvider.registeredTypeIdentifiers(fileOptions: NSItemProviderFileOptions(rawValue: 0)) - os_log("Available type identifiers of the attachment: %{public}@", log: log, type: .info, availableTypeIdentifiers.debugDescription) - guard !availableTypeIdentifiers.isEmpty else { assertionFailure(); return cancel(withReason: .itemHasNoRegisteredTypeIdentifier) } + let availableContentTypes = itemProvider.registeredTypeIdentifiers(fileOptions: NSItemProviderFileOptions(rawValue: 0)) + .compactMap({ UTType($0) }) + os_log("Available type identifiers of the attachment: %{public}@", log: Self.log, type: .info, availableContentTypes.debugDescription) + guard !availableContentTypes.isEmpty else { assertionFailure(); return cancel(withReason: .itemHasNoRegisteredTypeIdentifier) } - let filteredTypeIdentifiers = availableTypeIdentifiers.filter({ !ignoredUTIs.contains($0) }) - guard !filteredTypeIdentifiers.isEmpty else { - os_log("No acceptable UTI was found, we do not load any item provider", log: log, type: .info) + let filteredContentTypes = availableContentTypes.filter({ !ignoredTypes.contains($0) }) + guard !filteredContentTypes.isEmpty else { + os_log("No acceptable content type was found, we do not load any item provider", log: Self.log, type: .info) _isFinished = true return } - let availablePreferredUTIs = preferredUTIs.filter({ filteredTypeIdentifiers.contains($0) }) - let utiToLoad: String - if !availablePreferredUTIs.isEmpty { - // This is the easy case, where the file provider does provide an UTI we "prefer" - utiToLoad = preferredUTIs.first(where: { availablePreferredUTIs.contains($0) })! + let availablePreferredContentTypes = preferredTypes.filter({ filteredContentTypes.contains($0) }) + let contentTypeToLoad: UTType + if !availablePreferredContentTypes.isEmpty { + // This is the easy case, where the file provider does provide a content type we "prefer" + contentTypeToLoad = preferredTypes.first(where: { availablePreferredContentTypes.contains($0) })! } else { // There is no "preferred" UTI available. We simply take the first UTI available - assert(filteredTypeIdentifiers.count == 1, "We should have a special rule and include one of the UTIs in the list of preferred UTIs") - utiToLoad = filteredTypeIdentifiers.first! + assert(filteredContentTypes.count == 1, "We should have a special rule and include one of the UTIs in the list of preferred UTIs") + contentTypeToLoad = filteredContentTypes.first! } - assert(itemProvider.hasItemConformingToTypeIdentifier(utiToLoad)) + assert(itemProvider.hasItemConformingToTypeIdentifier(contentTypeToLoad.identifier)) // We have found an appropriate UTI for the item provider // We can load it - os_log("Type identifier to load is: %{public}@", log: log, type: .info, utiToLoad) + os_log("Content type to load is: %{public}@", log: Self.log, type: .info, contentTypeToLoad.debugDescription) var progress: Progress? - if utiToLoad.utiConformsTo(kUTTypeVCard) { + if contentTypeToLoad.conforms(to: .vCard) { - os_log("Type identifier to load conforms to kUTTypeVCard", log: log, type: .info) + os_log("Type identifier to load conforms to kUTTypeVCard", log: Self.log, type: .info) - progress = itemProvider.loadDataRepresentation(forTypeIdentifier: String(kUTTypeVCard), completionHandler: { [weak self] (data, error) in + progress = itemProvider.obvLoadDataRepresentation(for: .vCard, completionHandler: { [weak self] (data, error) in guard error == nil else { if let progress = self?.operationProgress, progress.isCancelled { // The user cancelled the file loading, there is nothing left to do @@ -166,16 +180,16 @@ final class LoadItemProviderOperation: OperationWithSpecificReasonForCancel Bool { - UTTypeConformsTo(self as CFString, otherUTI) - } -} +//fileprivate extension String { +// func utiConformsTo(_ otherUTI: CFString) -> Bool { +// UTTypeConformsTo(self as CFString, otherUTI) +// } +//} enum LoadItemProviderOperationReasonForCancel: LocalizedErrorWithLogType { - case noneOfTheItemTypeIdentifiersCouldBeLoaded(itemTypeIdentifiers: [String]) + case noneOfTheItemTypeIdentifiersCouldBeLoaded(contentTypes: [UTType]) case loadFileRepresentationFailed(error: Error) case pickerURLIsNil case itemHasNoRegisteredTypeIdentifier @@ -379,8 +396,8 @@ enum LoadItemProviderOperationReasonForCancel: LocalizedErrorWithLogType { var errorDescription: String? { switch self { - case .noneOfTheItemTypeIdentifiersCouldBeLoaded(itemTypeIdentifiers: let itemTypeIdentifiers): - return "None of the item type identifiers could be loaded: \(itemTypeIdentifiers.debugDescription)" + case .noneOfTheItemTypeIdentifiersCouldBeLoaded(contentTypes: let contentTypes): + return "None of the item type identifiers could be loaded: \(contentTypes.debugDescription)" case .loadFileRepresentationFailed(error: let error): return "Failed to load representation: \(error.localizedDescription)" case .pickerURLIsNil: @@ -413,3 +430,38 @@ fileprivate struct UTI { } } + + +fileprivate extension UTType { + + static var groupActivitiesActivity: UTType? { + .init("com.apple.group-activities.activity") + } + + struct Bitmoji { + static var avatarID: UTType? { + .init("com.bitmoji.metadata.avatarID") + } + static var packID: UTType? { + .init("com.bitmoji.metadata.packID") + } + static var comicID: UTType? { + .init("com.bitmoji.metadata.comicID") + } + } + +} + + +fileprivate extension NSItemProvider { + + /// Trivial wrapper around the ``NSItemProvider.loadDataRepresentation(for:completionHandler:)`` method since it is only available under iOS 16 + func obvLoadDataRepresentation(for contentType: UTType, completionHandler: @escaping @Sendable (Data?, (Error)?) -> Void) -> Progress { + if #available(iOS 16, *) { + return loadDataRepresentation(for: contentType, completionHandler: completionHandler) + } else { + return loadDataRepresentation(forTypeIdentifier: contentType.identifier, completionHandler: completionHandler) + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/NSItemProvider+Utils.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/NSItemProvider+Utils.swift new file mode 100644 index 00000000..2b9da7e4 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/NSItemProvider+Utils.swift @@ -0,0 +1,64 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import UniformTypeIdentifiers + + +extension NSItemProvider { + + /// Simple wrapper as ``registeredContentTypes`` only exists in iOS 16 + var obvRegisteredContentTypes: [UTType] { + if #available(iOS 16, *) { + return self.registeredContentTypes + } else { + let types = self.registeredTypeIdentifiers.compactMap({ UTType($0) }) + assert(types.count == self.registeredTypeIdentifiers.count) + return types + } + } + + + func loadText() async throws -> String { + + return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + + loadItem(forTypeIdentifier: UTType.text.identifier) { item, error in + if let error { + assertionFailure() + continuation.resume(throwing: error) + return + } + guard let text = item as? String else { + assertionFailure() + continuation.resume(throwing: ObvError.cannotCastItemAsString) + return + } + continuation.resume(returning: text) + } + + } + + } + + enum ObvError: Error { + case cannotCastItemAsString + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/ObvDeepLink.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/ObvDeepLink.swift index 7a833c46..b9fc9ae8 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/ObvDeepLink.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/ObvDeepLink.swift @@ -33,6 +33,7 @@ enum ObvDeepLinkHost: CaseIterable { case requestRecordPermission case settings case backupSettings + case voipSettings case privacySettings case message case allGroups @@ -67,6 +68,7 @@ enum ObvDeepLink: Equatable, LosslessStringConvertible { case settings case backupSettings case privacySettings + case voipSettings case message(ownedCryptoId: ObvCryptoId, objectPermanentID: ObvManagedObjectPermanentID) case allGroups(ownedCryptoId: ObvCryptoId) @@ -98,6 +100,8 @@ enum ObvDeepLink: Equatable, LosslessStringConvertible { return host.name case .backupSettings: return host.name + case .voipSettings: + return host.name case .privacySettings: return host.name case .message(let ownedCryptoId, let objectPermanentID): @@ -159,6 +163,8 @@ enum ObvDeepLink: Equatable, LosslessStringConvertible { self = .settings case .backupSettings: self = .backupSettings + case .voipSettings: + self = .voipSettings case .privacySettings: self = .privacySettings case .message: @@ -187,6 +193,7 @@ enum ObvDeepLink: Equatable, LosslessStringConvertible { case .requestRecordPermission: return .requestRecordPermission case .settings: return .settings case .backupSettings: return .backupSettings + case .voipSettings: return .voipSettings case .privacySettings: return .privacySettings case .message: return .message case .allGroups: return .allGroups @@ -220,6 +227,8 @@ enum ObvDeepLink: Equatable, LosslessStringConvertible { return nil case .backupSettings: return nil + case .voipSettings: + return nil case .privacySettings: return nil case .message(let ownedCryptoId, _): diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/SoundsPlayer.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/SoundsPlayer.swift index 536c8924..a0b08c5b 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/SoundsPlayer.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/SoundsPlayer.swift @@ -23,6 +23,7 @@ import AVFoundation import os.log import UIKit import ObvUICoreData +import ObvSettings extension Sound { @@ -46,9 +47,28 @@ final class SoundsPlayer: NSObject, AVAudioPlayerDelegate { guard let filename = sound.filename else { assertionFailure(); return } let soundURL: URL if let note = note { - soundURL = Bundle.main.bundleURL.appendingPathComponent(filename + note.index).appendingPathExtension("caf") + if ObvMessengerConstants.targetEnvironmentIsMacCatalyst { + soundURL = Bundle.main.bundleURL + .appendingPathComponent("Contents") + .appendingPathComponent("Resources") + .appendingPathComponent(filename + note.index).appendingPathExtension("caf") + } else { + soundURL = Bundle.main.bundleURL.appendingPathComponent(filename + note.index).appendingPathExtension("caf") + } } else { - soundURL = Bundle.main.bundleURL.appendingPathComponent(filename) + if ObvMessengerConstants.targetEnvironmentIsMacCatalyst { + soundURL = Bundle.main.bundleURL + .appendingPathComponent("Contents") + .appendingPathComponent("Resources") + .appendingPathComponent(filename) + } else { + soundURL = Bundle.main.bundleURL.appendingPathComponent(filename) + } + } + guard FileManager.default.fileExists(atPath: soundURL.path) else { + os_log("🎵 Could not find audio file at path: %{public}@", log: log, type: .fault, filename, soundURL.path) + assertionFailure() + throw ObvError.fileDoesNotExist } let player = try AVAudioPlayer(contentsOf: soundURL) player.numberOfLoops = sound.loops ? Int.max : 0 @@ -75,11 +95,12 @@ final class SoundsPlayer: NSObject, AVAudioPlayerDelegate { os_log("🎵 Error in AVAudioSession %{public}@", log: self.log, type: .info, error.localizedDescription) } } + guard let currentAudioPlayer else { return } os_log("🎵 Play %{public}@", log: self.log, type: .info, filename) - self.currentAudioPlayer?.currentTime = 0 - self.currentAudioPlayer?.play() - self.currentAudioPlayer?.delegate = self + currentAudioPlayer.currentTime = 0 + currentAudioPlayer.delegate = self self.soundCurrentlyPlaying = sound + currentAudioPlayer.play() if let feedback = sound.feedback { self.feedbackGenerator.notificationOccurred(feedback) } @@ -124,4 +145,7 @@ final class SoundsPlayer: NSObject, AVAudioPlayerDelegate { } } + enum ObvError: Error { + case fileDoesNotExist + } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/ThumbnailWorker.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/ThumbnailWorker.swift index 9d824c0a..c43606c0 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/ThumbnailWorker.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/ThumbnailWorker.swift @@ -23,6 +23,7 @@ import CoreGraphics import AVKit import PDFKit import ObvUICoreData +import ObvSettings final class ThumbnailWorker: NSObject { @@ -46,9 +47,9 @@ final class ThumbnailWorker: NSObject { var fileExtension: String { switch self { case .jpeg: - return ObvUTIUtils.jpegExtension() + return UTType.jpeg.preferredFilenameExtension ?? "jpeg" case .png: - return ObvUTIUtils.pngExtension() + return UTType.png.preferredFilenameExtension ?? "png" } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/TimeUtils.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/TimeUtils.swift index 9bd46a7f..39f240c9 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/TimeUtils.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/TimeUtils.swift @@ -105,23 +105,14 @@ extension Date { formatter.dateTimeStyle = .named return formatter.localizedString(for: self, relativeTo: Date()) } else { - if #available(iOS 15.0, *) { - var dateStyle: Date.FormatStyle = .dateTime - .weekday(.wide) - .month() - .day() - if calendar.component(.year, from: self) != calendar.component(.year, from: Date()) { - dateStyle = dateStyle.year() - } - return self.formatted(dateStyle) - } else { - let df = DateFormatter() - df.doesRelativeDateFormatting = true - df.dateStyle = .short - df.timeStyle = .medium - df.locale = Locale.current - return df.string(from: self) + var dateStyle: Date.FormatStyle = .dateTime + .weekday(.wide) + .month() + .day() + if calendar.component(.year, from: self) != calendar.component(.year, from: Date()) { + dateStyle = dateStyle.year() } + return self.formatted(dateStyle) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/UIView+AppTheme.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/UIView+AppTheme.swift index 56ad5f21..24f32356 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/UIView+AppTheme.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/UIView+AppTheme.swift @@ -19,11 +19,12 @@ import ObvUI import UIKit +import ObvDesignSystem extension UIView { - var appTheme: ObvUI.AppTheme { - return ObvUI.AppTheme.shared + var appTheme: AppTheme { + return AppTheme.shared } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/UIViewController+ContentController.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/UIViewController+ContentController.swift index 478bd367..b252abae 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/UIViewController+ContentController.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/UIViewController+ContentController.swift @@ -23,7 +23,9 @@ extension UIViewController { func displayContentController(content: UIViewController) { + content.willMove(toParent: self) addChild(content) + content.didMove(toParent: self) content.view.translatesAutoresizingMaskIntoConstraints = true content.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] @@ -31,7 +33,6 @@ extension UIViewController { view.addSubview(content.view) - content.didMove(toParent: self) } diff --git a/iOSClient/ObvMessenger/ObvMessenger/Utils/URL+MoveToTrash.swift b/iOSClient/ObvMessenger/ObvMessenger/Utils/URL+MoveToTrash.swift index 2e9cf7d0..182e5ce9 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Utils/URL+MoveToTrash.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/Utils/URL+MoveToTrash.swift @@ -18,7 +18,8 @@ */ import Foundation -import ObvUICoreData +import ObvSettings + extension URL { diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Call/Call.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Call/Call.swift deleted file mode 100644 index c4aedf6b..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Call/Call.swift +++ /dev/null @@ -1,1558 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import OlvidUtils -import ObvEngine -import os.log -import ObvTypes -import WebRTC -import ObvCrypto -import ObvUICoreData - - -actor Call: GenericCall, ObvErrorMaker { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: Call.self)) - static let errorDomain = "Call" - - let uuid: UUID // Corresponds to the UUID for CallKit when using it - let usesCallKit: Bool - let direction: CallDirection - - let uuidForWebRTC: UUID - let groupId: GroupIdentifierBasedOnObjectID? - let ownedIdentity: ObvCryptoId - /// Used for an outgoing call. If the owned identity making the call is allowed to do so, this is set to this owned identity. If she is not, this is set to some other owned identity on this device that is allowed to make calls. - /// This makes it possible to make secure outgoing calls available to all profiles on this device as soon as one profile is allowed to make secure outgoing calls. - let ownedIdentityForRequestingTurnCredentials: ObvCryptoId - private var callParticipants = Set() - - private var tokens: [NSObjectProtocol] = [] - - weak var delegate: CallDelegate? - - private func setDelegate(to delegate: CallDelegate) { - self.delegate = delegate - } - - private var pendingIceCandidates = [OlvidUserId: [IceCandidateJSON]]() - - /// If we are a call participant, we might receive relayed WebRTC messages from the caller (in the case another participant is not "known" to us, i.e., we have not secure channel with her). - /// We may receive those messages before we are aware of this participant. When this happens, we add those messages to `pendingReceivedRelayedMessages`. - /// These messages will be used as soon as we are aware of this participant. - private var pendingReceivedRelayedMessages = [ObvCryptoId: [(messageType: WebRTCMessageJSON.MessageType, messagePayload: String)]]() - - private let queueForPostingNotifications: DispatchQueue - - /// This Boolean is set to `true` when entering a method that could end up modifying the set of call participants. - /// It is set back to `false` whenever this method is done. - /// It allows to implement a mechanism preventing two distinct methods to interfere when both can end up modifying the set of call participants. - private var aTaskIsCurrentlyModifyingCallParticipants = false { - didSet { - guard !aTaskIsCurrentlyModifyingCallParticipants else { return } - oneOfTheTaskCurrentlyModifyingCallParticipantsIsDone() - } - } - - /// See the comment about ``aTaskIsCurrentlyModifyingCallParticipants``. - private var continuationsOfTaskWaitingUntilTheyCanModifyCallParticipants = [CheckedContinuation]() - - // Specific to incoming calls - - let messageIdentifierFromEngine: Data? // Non-nil for an incoming call, nil for an outgoing call - private let messageUploadTimestampFromServer: Date? // Should not be nil for an incoming call - let initialParticipantCount: Int - let turnCredentialsReceivedFromCaller: TurnCredentials? - private var userAnsweredIncomingCall = false - private(set) var receivedOfferMessages: [OlvidUserId: (Date, NewParticipantOfferMessageJSON)] = [:] - private var ringingMessageHasBeenSent = false // For incoming calls - - private var pushKitNotificationWasReceived = false - - // Specific to outgoing calls - - private var obvTurnCredentials: ObvTurnCredentials? - - // Common methods - - private func addParticipant(callParticipant: CallParticipantImpl, report: Bool) async { - await callParticipant.setDelegate(to: self) - assert(callParticipants.firstIndex(of: HashableCallParticipant(callParticipant)) == nil, "The participant already exists in the set, we should never happen since we have an anti-race mechanism") - callParticipants.insert(HashableCallParticipant(callParticipant)) - if report { - VoIPNotification.callHasBeenUpdated(callUUID: self.uuid, updateKind: .callParticipantChange) - .postOnDispatchQueue(queueForPostingNotifications) - } - for iceCandidate in pendingIceCandidates[callParticipant.userId] ?? [] { - try? await callParticipant.processIceCandidatesJSON(message: iceCandidate) - } - // Process the relayed messages from this participant that were received before we were aware of this participant. - if let relayedMessagesToProcess = pendingReceivedRelayedMessages.removeValue(forKey: callParticipant.remoteCryptoId) { - for relayedMsg in relayedMessagesToProcess { - os_log("☎️ Processing a relayed message received while we were not aware of this call participant", log: log, type: .info) - await receivedRelayedMessage(from: callParticipant.remoteCryptoId, messageType: relayedMsg.messageType, messagePayload: relayedMsg.messagePayload) - } - } - pendingIceCandidates[callParticipant.userId] = nil - } - - - private func removeParticipant(callParticipant: CallParticipantImpl) async { - callParticipants.remove(HashableCallParticipant(callParticipant)) - if callParticipants.isEmpty { - await endCallAsAllOtherParticipantsLeft() - } - VoIPNotification.callHasBeenUpdated(callUUID: self.uuid, updateKind: .callParticipantChange) - .postOnDispatchQueue(queueForPostingNotifications) - - // If we are the caller (i.e., if this is an outgoing call) and if the call is not over, we send an updated list of participants to the remaining participants - - if direction == .outgoing && !internalState.isFinalState { - let otherParticipants = callParticipants.map({ $0.callParticipant }) - let message: WebRTCDataChannelMessageJSON - do { - message = try await UpdateParticipantsMessageJSON(callParticipants: otherParticipants).embedInWebRTCDataChannelMessageJSON() - } catch { - os_log("☎️ Could not send UpdateParticipantsMessageJSON: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - for otherParticipant in otherParticipants { - try? await otherParticipant.sendDataChannelMessage(message) - } - } - - } - - - func getParticipant(remoteCryptoId: ObvCryptoId) -> CallParticipantImpl? { - return callParticipants.first(where: { $0.remoteCryptoId == remoteCryptoId })?.callParticipant - } - - func getCallParticipants() async -> [CallParticipant] { - callParticipants.map({ $0.callParticipant }) - } - - func userDidAnsweredIncomingCall() async -> Bool { - userAnsweredIncomingCall - } - - func getStateDates() async -> [CallState: Date] { - stateDate - } - - // MARK: State management - - private var internalState: CallState = .initial - private var stateDate = [CallState: Date]() - - static let acceptableTimeIntervalForStartCallMessages: TimeInterval = 30.0 // 30 seconds - private static let ringingTimeoutInterval = 60 // 60 seconds - - private var currentAudioInput: (label: String, activate: () -> Void)? - - var state: CallState { - get async { - internalState - } - } - - - private func setCallState(to newState: CallState) async { - - guard !internalState.isFinalState else { return } - let previousState = internalState - if previousState == .callInProgress && newState == .ringing { return } - if previousState == newState { return } - - os_log("☎️ WebRTCCall will change state: %{public}@ --> %{public}@", log: log, type: .info, internalState.debugDescription, newState.debugDescription) - - internalState = newState - - // Play sounds - - switch self.direction { - case .outgoing: - if internalState == .ringing { - await CallSounds.shared.play(sound: .ringing, category: nil) - } else if internalState == .callInProgress && previousState != .callInProgress { - await CallSounds.shared.play(sound: .connect, category: nil) - } else if internalState.isFinalState && previousState == .callInProgress { - await CallSounds.shared.play(sound: .disconnect, category: nil) - } else { - await CallSounds.shared.stopCurrentSound() - } - case .incoming: - if internalState == .callInProgress && previousState != .callInProgress { - await CallSounds.shared.play(sound: .connect, category: nil) - } else if internalState.isFinalState && previousState == .callInProgress { - await CallSounds.shared.play(sound: .disconnect, category: nil) - } else { - await CallSounds.shared.stopCurrentSound() - } - } - - if !stateDate.keys.contains(internalState) { - stateDate[internalState] = Date() - } - - VoIPNotification.callHasBeenUpdated(callUUID: self.uuid, updateKind: .state(newState: newState)) - .postOnDispatchQueue(queueForPostingNotifications) - - // Notify of the fact that the incoming call is initializing (this is used to show the call view and the call toggle view) - - if self.direction == .incoming && newState == .initializingCall { - VoIPNotification.anIncomingCallShouldBeShownToUser(newIncomingCall: self) - .postOnDispatchQueue(queueForPostingNotifications) - } - - if internalState.isFinalState { - - // Close all connections - - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - for participant in callParticipants { - do { - try await participant.closeConnection() - } catch { - os_log("Failed to close a connection with a participant while ending WebRTC call: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() // Continue anyway - } - } - - // Notify our delegate - - await delegate?.callReachedFinalState(call: self) - } - - if direction == .outgoing && internalState == .callInProgress { - await delegate?.outgoingCallReachedReachedInProgressState(call: self) - } - - } - - - private func updateStateFromPeerStates() async { - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - for callParticipant in callParticipants { - guard await callParticipant.getPeerState().isFinalState else { return } - } - // If we reach this point, all call participants are in a final state, we can end the call. - await endCallAsAllOtherParticipantsLeft() - } - - - private init(direction: CallDirection, uuid: UUID, usesCallKit: Bool, uuidForWebRTC: UUID?, groupId: GroupIdentifierBasedOnObjectID?, ownedIdentity: ObvCryptoId, ownedIdentityForRequestingTurnCredentials: ObvCryptoId?, messageIdentifierFromEngine: Data?, messageUploadTimestampFromServer: Date?, initialParticipantCount: Int, turnCredentialsReceivedFromCaller: TurnCredentials?, obvTurnCredentials: ObvTurnCredentials?, queueForPostingNotifications: DispatchQueue) { - - self.uuid = uuid - self.usesCallKit = usesCallKit - self.direction = direction - self.uuidForWebRTC = uuidForWebRTC ?? uuid - self.groupId = groupId - self.ownedIdentity = ownedIdentity - self.ownedIdentityForRequestingTurnCredentials = ownedIdentityForRequestingTurnCredentials ?? ownedIdentity - self.queueForPostingNotifications = queueForPostingNotifications - - // Specific to incoming calls - - self.messageIdentifierFromEngine = messageIdentifierFromEngine - self.messageUploadTimestampFromServer = messageUploadTimestampFromServer - self.initialParticipantCount = initialParticipantCount - self.turnCredentialsReceivedFromCaller = turnCredentialsReceivedFromCaller - - // Specific to outgoing calls - - self.obvTurnCredentials = obvTurnCredentials - - } - - - deinit { - tokens.forEach { NotificationCenter.default.removeObserver($0) } - } - - - // MARK: Creating an incoming call - - static func createIncomingCall(uuid: UUID, startCallMessage: StartCallMessageJSON, contactId: OlvidUserId, uuidForWebRTC: UUID, messageIdentifierFromEngine: Data, messageUploadTimestampFromServer: Date, delegate: IncomingCallDelegate, useCallKit: Bool, queueForPostingNotifications: DispatchQueue) async -> Call { - - let callParticipant = await CallParticipantImpl.createCaller(startCallMessage: startCallMessage, contactId: contactId) - - var groupId: GroupIdentifierBasedOnObjectID? - switch startCallMessage.groupIdentifier { - case .none: - groupId = nil - case .groupV1(groupV1Identifier: let groupV1Identifier): - ObvStack.shared.performBackgroundTaskAndWait { context in - if let persistedGroup = try? PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedCryptoId: callParticipant.ownedIdentity, within: context) { - groupId = .groupV1(persistedGroup.typedObjectID) - } - } - case .groupV2(groupV2Identifier: let groupV2Identifier): - ObvStack.shared.performBackgroundTaskAndWait { context in - if let group = try? PersistedGroupV2.get(ownIdentity: callParticipant.ownedIdentity, appGroupIdentifier: groupV2Identifier, within: context) { - groupId = .groupV2(group.typedObjectID) - } - } - } - - let call = Call(direction: .incoming, - uuid: uuid, - usesCallKit: useCallKit, - uuidForWebRTC: uuidForWebRTC, - groupId: groupId, - ownedIdentity: callParticipant.ownedIdentity, - ownedIdentityForRequestingTurnCredentials: nil, - messageIdentifierFromEngine: messageIdentifierFromEngine, - messageUploadTimestampFromServer: messageUploadTimestampFromServer, - initialParticipantCount: startCallMessage.participantCount, - turnCredentialsReceivedFromCaller: startCallMessage.turnCredentials, - obvTurnCredentials: nil, - queueForPostingNotifications: queueForPostingNotifications) - - await call.setDelegate(to: delegate) - - await call.addParticipant(callParticipant: callParticipant, report: false) - - await call.observeAudioInputHasBeenActivatedNotifications() - - return call - - } - - - // MARK: Creating an outgoing call - - static func createOutgoingCall(contactIds: [OlvidUserId], ownedIdentityForRequestingTurnCredentials: ObvCryptoId, delegate: OutgoingCallDelegate, usesCallKit: Bool, groupId: GroupIdentifierBasedOnObjectID?, queueForPostingNotifications: DispatchQueue) async throws -> Call { - - var callParticipants = [CallParticipantImpl]() - for contactId in contactIds { - let participant = await Self.createRecipient(contactId: contactId) - callParticipants.append(participant) - } - - guard let participant = contactIds.first else { - throw Self.makeError(message: "Cannot create an outgoing call with no participant") - } - - let call = Call(direction: .outgoing, - uuid: UUID(), - usesCallKit: usesCallKit, - uuidForWebRTC: nil, - groupId: groupId, - ownedIdentity: participant.ownCryptoId, - ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, - messageIdentifierFromEngine: nil, - messageUploadTimestampFromServer: nil, - initialParticipantCount: callParticipants.count, - turnCredentialsReceivedFromCaller: nil, - obvTurnCredentials: nil, - queueForPostingNotifications: queueForPostingNotifications) - - await call.setDelegate(to: delegate) - - for callParticipant in callParticipants { - await call.addParticipant(callParticipant: callParticipant, report: false) - } - - await call.observeAudioInputHasBeenActivatedNotifications() - - return call - - } - - - // MARK: - For any kind of call - - - private func observeAudioInputHasBeenActivatedNotifications() { - self.tokens.append(ObvMessengerInternalNotification.observeAudioInputHasBeenActivated { label, activate in - Task { [weak self] in await self?.processAudioInputHasBeenActivatedNotification(label: label, activate: activate) } - }) - } - - - func processAudioInputHasBeenActivatedNotification(label: String, activate: @escaping () -> Void) { - guard isOutgoingCall else { return } - guard currentAudioInput?.label != label else { return } - /// Keep a trace of audio input during ringing state to restore it when the call become inProgress - os_log("☎️🎵 Call stores %{public}@ as audio input", log: log, type: .info, label) - currentAudioInput = (label: label, activate: activate) - } - - - var isMuted: Bool { - get async { - // We return true only if audio is disabled for everyone - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - for callParticipant in callParticipants { - if await !callParticipant.isMuted { - return false - } - } - return true - } - } - - - /// Called from the Olvid UI when the user taps on the mute button - func userRequestedToToggleAudio() async { - do { - if await self.isMuted { - try await callManager.requestUnmuteCallAction(call: self) - } else { - try await callManager.requestMuteCallAction(call: self) - } - } catch { - os_log("☎️ Failed to toggle audio: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - - - /// This method is *not* called from the UI but from the coordinator, as a response to our request made in - /// ``func userRequestedToToggleAudio() async`` - func muteSelfForOtherParticipants() async { - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - for participant in callParticipants { - guard await !participant.isMuted else { continue } - await participant.mute() - } - VoIPNotification.callHasBeenUpdated(callUUID: self.uuid, updateKind: .mute) - .postOnDispatchQueue(queueForPostingNotifications) - } - - - /// This method is *not* called from the UI but from the coordinator, as a response to our request made in - /// ``func userRequestedToToggleAudio() async`` - func unmuteSelfForOtherParticipants() async { - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - for participant in callParticipants { - guard await participant.isMuted else { continue } - await participant.unmute() - } - VoIPNotification.callHasBeenUpdated(callUUID: self.uuid, updateKind: .mute) - .postOnDispatchQueue(queueForPostingNotifications) - } - - - func callParticipantDidHangUp(participantId: OlvidUserId) async throws { - guard let participant = getParticipant(remoteCryptoId: participantId.remoteCryptoId) else { return } - try await participant.setPeerState(to: .hangedUp) - let newParticipantState = await participant.getPeerState() - assert(newParticipantState.isFinalState) - await updateStateFromPeerStates() - } - - // - MARK: Restarting a call - - /// Called when a network connection status changed - func restartIceIfAppropriate() async throws { - guard internalState == .callInProgress else { return } - let log = self.log - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - for callParticipant in callParticipants { - do { - try await callParticipant.restartIceIfAppropriate() - } catch { - os_log("☎️ Could not restart ICE: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - } - - - func handleReconnectCallMessage(callParticipant: CallParticipantImpl, _ reconnectCallMessage: ReconnectCallMessageJSON) async throws { - let sessionDescription = RTCSessionDescription(type: reconnectCallMessage.sessionDescriptionType, sdp: reconnectCallMessage.sessionDescription) - try await callParticipant.handleReceivedRestartSdp( - sessionDescription: sessionDescription, - reconnectCounter: reconnectCallMessage.reconnectCounter ?? 0, - peerReconnectCounterToOverride: reconnectCallMessage.peerReconnectCounterToOverride ?? 0) - } - - - private var callManager: ObvCallManager { usesCallKit ? CXCallManager() : NCXCallManager() } - -} - - -// MARK: - Implementing CallParticipantDelegate - -extension Call: CallParticipantDelegate { - - nonisolated var isOutgoingCall: Bool { self.direction == .outgoing } - - func participantWasUpdated(callParticipant: CallParticipantImpl, updateKind: CallParticipantUpdateKind) async { - - guard callParticipants.contains(HashableCallParticipant(callParticipant)) else { return } - VoIPNotification.callParticipantHasBeenUpdated(callParticipant: callParticipant, updateKind: updateKind) - .postOnDispatchQueue(queueForPostingNotifications) - - switch updateKind { - case .state(newState: let newState): - switch newState { - case .initial: - break - case .startCallMessageSent: - break - case .ringing: - guard self.direction == .outgoing else { return } - guard [CallState.initializingCall, .gettingTurnCredentials, .initial].contains(internalState) else { return } - await setCallState(to: .ringing) - case .busy: - await removeParticipant(callParticipant: callParticipant) - case .connectingToPeer: - guard internalState == .userAnsweredIncomingCall else { return } - await setCallState(to: .initializingCall) - case .connected: - guard internalState != .callInProgress else { return } - await setCallState(to: .callInProgress) - if let currentAudioInput = currentAudioInput { - os_log("☎️🎵 Connected call restores %{public}@ as audio input ", log: log, type: .info, currentAudioInput.label) - currentAudioInput.activate() - } - case .reconnecting, .callRejected, .hangedUp, .kicked, .failed: - break - } - case .contactID: - break - case .contactMuted: - break - } - } - - - nonisolated func connectionIsChecking(for callParticipant: CallParticipant) { - Task { await CallSounds.shared.prepareFeedback() } - } - - - func connectionIsConnected(for callParticipant: CallParticipant, oldParticipantState: PeerState) async { - - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - - do { - if self.direction == .outgoing && oldParticipantState != .connected && oldParticipantState != .reconnecting { - let message = try await UpdateParticipantsMessageJSON(callParticipants: callParticipants).embedInWebRTCDataChannelMessageJSON() - let callParticipantsToNotify = self.callParticipants.filter({ $0.callParticipant.uuid != callParticipant.uuid }).map({ $0.callParticipant }) - for callParticipant in callParticipantsToNotify { - try await callParticipant.sendDataChannelMessage(message) - } - } - } catch { - os_log("We failed to notify the other participants about the new participants list: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - // Continue anywait - } - - // If the current state is not already "callInProgress", it means that the first participant - // Just joined to call. We want to change the state to "callInProgress" (which will play the - // Appropriate sounds, etc.). - - guard internalState != .callInProgress else { return } - await setCallState(to: .callInProgress) - } - - - func connectionWasClosed(for callParticipant: CallParticipantImpl) async { - await removeParticipant(callParticipant: callParticipant) - await updateStateFromPeerStates() - } - - func dataChannelIsOpened(for callParticipant: CallParticipant) async { - guard self.direction == .outgoing else { return } - guard callParticipant.role == .recipient else { assertionFailure(); return } - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - try? await callParticipant.sendUpdateParticipantsMessageJSON(callParticipants: callParticipants) - } - - nonisolated func shouldISendTheOfferToCallParticipant(cryptoId: ObvCryptoId) -> Bool { - /// REMARK it should be the same as io.olvid.messenger.webrtc.WebrtcCallService#shouldISendTheOfferToCallParticipant in java - return ownedIdentity > cryptoId - } - - - func updateParticipants(with allCallParticipants: [ContactBytesAndNameJSON]) async throws { - - os_log("☎️ Entering updateParticipant(newCallParticipants: [ContactBytesAndNameJSON])", log: log, type: .info) - os_log("☎️ The latest list of call participants contains %d participant(s)", log: log, type: .info, allCallParticipants.count) - os_log("☎️ Before processing this list, we consider there are %d participant(s) in this call", log: log, type: .info, callParticipants.count) - - // In case of large group calls, we can encounter race conditions. We prevent that by waiting until it is safe to process the new participants list - - await waitUntilItIsSafeToModifyParticipants() - - // Now that it is our turn to potentially modify the participants set, we must make sure no other task will interfere. - // The mechanism allowing to do so requires to set the following Boolean to true now, and to false when we are done. - - aTaskIsCurrentlyModifyingCallParticipants = true - defer { aTaskIsCurrentlyModifyingCallParticipants = false } - - // We can proceed - - guard direction == .incoming else { - assertionFailure() - throw Self.makeError(message: "self is not an incoming call") - } - guard let turnCredentials = self.turnCredentialsReceivedFromCaller else { - assertionFailure() - throw Self.makeError(message: "No turn credentials found") - } - - let callIsMuted = await self.isMuted - - // Remove our own identity from the list of call participants. - - let allCallParticipants = allCallParticipants.filter({ $0.byteContactIdentity != ownedIdentity.getIdentity() }) - - // Determine the CryptoIds of the local list of participants and of the reveived version of the list - - let currentIdsOfParticipants = Set(callParticipants.compactMap({ $0.callParticipant.userId })) - let updatedIdsOfParticipants = Set(allCallParticipants.compactMap({ try? getOlvidUserIdFor(contactInfos: $0) })) - - // Determine the participants to add to the local list, and those that should be removed - - let idsOfParticipantsToAdd = updatedIdsOfParticipants.subtracting(currentIdsOfParticipants) - let idsOfParticipantsToRemove = currentIdsOfParticipants.subtracting(updatedIdsOfParticipants) - - // Perform the necessary steps to add the participants - - os_log("☎️ We have %d participant(s) to add", log: log, type: .info, idsOfParticipantsToAdd.count) - - for userId in idsOfParticipantsToAdd { - - let gatheringPolicy = allCallParticipants - .first(where: { $0.byteContactIdentity == userId.remoteCryptoId.getIdentity() }) - .map({ $0.gatheringPolicy ?? .gatherOnce }) ?? .gatherOnce - - let callParticipant = await CallParticipantImpl.createRecipientForIncomingCall(contactId: userId, gatheringPolicy: gatheringPolicy) - await addParticipant(callParticipant: callParticipant, report: true) - await delegate?.newParticipantWasAdded(call: self, callParticipant: callParticipant) - - if shouldISendTheOfferToCallParticipant(cryptoId: userId.remoteCryptoId) { - os_log("☎️ Will set credentials for offer to a call participant", log: log, type: .info) - try await callParticipant.setTurnCredentialsAndCreateUnderlyingPeerConnection(turnCredentials: turnCredentials) - } else { - os_log("☎️ No need to send offer to the call participant", log: log, type: .info) - /// check if we already received the offer the CallParticipant is supposed to send us - if let (date, newParticipantOfferMessage) = self.receivedOfferMessages.removeValue(forKey: userId) { - try await delegate?.processNewParticipantOfferMessageJSON(newParticipantOfferMessage, - uuidForWebRTC: uuidForWebRTC, - contact: userId, - messageUploadTimestampFromServer: date) - } - } - - } - - // If we were muted, we must make sure we stay muted for all participant, including the new ones - - if callIsMuted { - await muteSelfForOtherParticipants() - } - - // Perform the necessary steps to remove the participants. - // Note that we know the caller is among the participants and we do not want to remove her here. - - os_log("☎️ We have %d participant(s) to remove (unless one if the caller)", log: log, type: .info, idsOfParticipantsToRemove.count) - - for userId in idsOfParticipantsToRemove { - guard let participant = getParticipant(remoteCryptoId: userId.remoteCryptoId) else { assertionFailure(); continue } - guard participant.role != .caller else { continue } - try await participant.closeConnection() - await removeParticipant(callParticipant: participant) - } - - } - - - /// This method allows to make sure we are not risking race conditions when updating the list of participants. - private func waitUntilItIsSafeToModifyParticipants() async { - guard aTaskIsCurrentlyModifyingCallParticipants else { return } - os_log("☎️ Since we are already currently modifying call participants, we must wait", log: log, type: .info) - await withCheckedContinuation { (continuation: CheckedContinuation) in - guard aTaskIsCurrentlyModifyingCallParticipants else { continuation.resume(); return } - continuationsOfTaskWaitingUntilTheyCanModifyCallParticipants.insert(continuation, at: 0) // first in, first out - } - } - - - private func oneOfTheTaskCurrentlyModifyingCallParticipantsIsDone() { - assert(!aTaskIsCurrentlyModifyingCallParticipants) - guard !continuationsOfTaskWaitingUntilTheyCanModifyCallParticipants.isEmpty else { return } - os_log("☎️ Since a task potentially modifying the set of call participants is done, we can proceed with the next one", log: log, type: .info) - guard let continuation = continuationsOfTaskWaitingUntilTheyCanModifyCallParticipants.popLast() else { return } - aTaskIsCurrentlyModifyingCallParticipants = true - continuation.resume() - } - - - // MARK: - Post office service - - func relay(from: ObvCryptoId, to: ObvCryptoId, messageType: WebRTCMessageJSON.MessageType, messagePayload: String) async { - - guard messageType.isAllowedToBeRelayed else { assertionFailure(); return } - - guard let participant = getParticipant(remoteCryptoId: to) else { return } - let message: WebRTCDataChannelMessageJSON - do { - message = try RelayedMessageJSON(from: from.getIdentity(), relayedMessageType: messageType.rawValue, serializedMessagePayload: messagePayload).embedInWebRTCDataChannelMessageJSON() - } catch { - os_log("☎️ Could not send UpdateParticipantsMessageJSON: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - do { - try await participant.sendDataChannelMessage(message) - } catch { - os_log("☎️ Could not send data channel message: %{public}@", log: log, type: .fault, error.localizedDescription) - return - } - } - - - func receivedRelayedMessage(from: ObvCryptoId, messageType: WebRTCMessageJSON.MessageType, messagePayload: String) async { - os_log("☎️ Call to receivedRelayedMessage", log: log, type: .info) - guard let callParticipant = callParticipants.first(where: { $0.remoteCryptoId == from })?.callParticipant else { - os_log("☎️ Could not find the call participant in receivedRelayedMessage. We store the relayed message for later", log: log, type: .info) - if var previous = pendingReceivedRelayedMessages[from] { - previous.append((messageType, messagePayload)) - pendingReceivedRelayedMessages[from] = previous - } else { - pendingReceivedRelayedMessages[from] = [(messageType, messagePayload)] - } - return - } - let contactId = callParticipant.userId - await delegate?.processReceivedWebRTCMessage(messageType: messageType, - serializedMessagePayload: messagePayload, - callIdentifier: uuidForWebRTC, - contact: contactId, - messageUploadTimestampFromServer: Date(), - messageIdentifierFromEngine: nil) - } - - - private func sendLocalUserHangedUpMessageToAllParticipants() async { - let hangedUpMessage = HangedUpMessageJSON() - for participant in self.callParticipants { - do { - try await sendWebRTCMessage(to: participant.callParticipant, innerMessage: hangedUpMessage, forStartingCall: false) - } catch { - os_log("Failed to send a HangedUpMessageJSON to a participant: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() // Continue anyway - } - } - } - - - private func sendRejectIncomingCallToCaller() async { - assert(direction == .incoming) - guard let caller = self.callerCallParticipant else { - os_log("Could not find caller", log: log, type: .fault) - assertionFailure() - return - } - let rejectedMessage = RejectCallMessageJSON() - do { - try await sendWebRTCMessage(to: caller, innerMessage: rejectedMessage, forStartingCall: false) - } catch { - os_log("Failed to send a RejectCallMessageJSON to the caller: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() // Continue anyway - } - } - - - private func sendBusyMessageToCaller() async { - assert(direction == .incoming) - guard let caller = self.callerCallParticipant else { - os_log("Could not find caller", log: log, type: .fault) - assertionFailure() - return - } - let rejectedMessage = BusyMessageJSON() - do { - try await sendWebRTCMessage(to: caller, innerMessage: rejectedMessage, forStartingCall: false) - } catch { - os_log("Failed to send a BusyMessageJSON to the caller: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() // Continue anyway - } - } - - - func sendRingingMessageToCaller() async { - assert(direction == .incoming) - guard !ringingMessageHasBeenSent else { return } - ringingMessageHasBeenSent = true - guard let caller = self.callerCallParticipant else { - os_log("Could not find caller", log: log, type: .fault) - assertionFailure() - return - } - let rejectedMessage = RingingMessageJSON() - do { - try await sendWebRTCMessage(to: caller, innerMessage: rejectedMessage, forStartingCall: false) - } catch { - os_log("Failed to send a RejectCallMessageJSON to the caller: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() // Continue anyway - } - await scheduleRingingIncomingCallTimeout() - } - - - func sendWebRTCMessage(to: CallParticipant, innerMessage: WebRTCInnerMessageJSON, forStartingCall: Bool) async throws { - let message = try innerMessage.embedInWebRTCMessageJSON(callIdentifier: uuidForWebRTC) - if case .hangedUp = message.messageType { - // Also send message on the data channel, if the caller is gone - do { - let hangedUpDataChannel = try HangedUpDataChannelMessageJSON().embedInWebRTCDataChannelMessageJSON() - try await to.sendDataChannelMessage(hangedUpDataChannel) - } catch { - os_log("☎️ Could not send HangedUpDataChannelMessageJSON: %{public}@", log: log, type: .fault, error.localizedDescription) - // Continue anyway - } - } - switch to.userId { - case .known(contactObjectID: let contactObjectID, ownCryptoId: _, remoteCryptoId: _, displayName: _): - os_log("☎️ Posting a newWebRTCMessageToSend", log: log, type: .info) - ObvMessengerInternalNotification.newWebRTCMessageToSend(webrtcMessage: message, contactID: contactObjectID, forStartingCall: forStartingCall) - .postOnDispatchQueue(queueForPostingNotifications) - case .unknown(ownCryptoId: _, remoteCryptoId: let remoteCryptoId, displayName: _): - guard message.messageType.isAllowedToBeRelayed else { assertionFailure(); return } - guard self.direction == .incoming else { assertionFailure(); return } - guard let caller = self.callerCallParticipant else { return } - let toContactIdentity = remoteCryptoId.getIdentity() - - do { - let dataChannelMessage = try RelayMessageJSON(to: toContactIdentity, relayedMessageType: message.messageType.rawValue, serializedMessagePayload: message.serializedMessagePayload).embedInWebRTCDataChannelMessageJSON() - try await caller.sendDataChannelMessage(dataChannelMessage) - } catch { - os_log("☎️ Could not send RelayMessageJSON: %{public}@", log: log, type: .fault, error.localizedDescription) - return - } - } - } - - - func sendStartCallMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription, turnCredentials: TurnCredentials) async throws { - - guard let gatheringPolicy = await callParticipant.gatheringPolicy else { - assertionFailure() - throw Self.makeError(message: "The gathering policy is not specified, which is unexpected at this point") - } - - guard let turnServers = turnCredentials.turnServers else { - assertionFailure() - throw Self.makeError(message: "The turn servers are not set, which is unexpected at this point") - } - - var filteredGroupId: GroupIdentifier? - switch groupId { - case .groupV1(let objectID): - let participantIdentity = callParticipant.remoteCryptoId - ObvStack.shared.performBackgroundTaskAndWait { context in - guard let contactGroup = try? PersistedContactGroup.get(objectID: objectID.objectID, within: context) else { - os_log("Could not find contactGroup", log: log, type: .fault) - return - } - let groupMembers = Set(contactGroup.contactIdentities.map { $0.cryptoId }) - if groupMembers.contains(participantIdentity), let groupV1Identifier = try? contactGroup.getGroupId() { - filteredGroupId = .groupV1(groupV1Identifier: groupV1Identifier) - } - } - case .groupV2(let objectID): - let participantIdentity = callParticipant.remoteCryptoId - ObvStack.shared.performBackgroundTaskAndWait { context in - guard let group = try? PersistedGroupV2.get(objectID: objectID, within: context) else { - os_log("Could not find PersistedGroupV2", log: log, type: .fault) - return - } - let groupMembers = Set(group.otherMembers.compactMap({ $0.cryptoId })) - if groupMembers.contains(participantIdentity) { - filteredGroupId = .groupV2(groupV2Identifier: group.groupIdentifier) - } - } - case .none: - filteredGroupId = nil - } - - let message = try StartCallMessageJSON( - sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), - sessionDescription: sessionDescription.sdp, - turnUserName: turnCredentials.turnUserName, - turnPassword: turnCredentials.turnPassword, - turnServers: turnServers, - participantCount: callParticipants.count, - groupIdentifier: filteredGroupId, - gatheringPolicy: gatheringPolicy) - - try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: true) - - } - - - func sendAnswerCallMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription) async throws { - - let message: WebRTCInnerMessageJSON - let messageDescripton = callParticipant.role == .caller ? "AnswerIncomingCall" : "NewParticipantAnswerMessage" - do { - if callParticipant.role == .caller { - message = try AnswerCallJSON(sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), sessionDescription: sessionDescription.sdp) - } else { - message = try NewParticipantAnswerMessageJSON(sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), sessionDescription: sessionDescription.sdp) - } - } catch { - os_log("Could not create and send %{public}@: %{public}@", log: log, type: .fault, messageDescripton, error.localizedDescription) - assertionFailure() - throw error - } - try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) - } - - - func sendNewParticipantOfferMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription) async throws { - let message = try await NewParticipantOfferMessageJSON( - sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), - sessionDescription: sessionDescription.sdp, - gatheringPolicy: callParticipant.gatheringPolicy ?? .gatherContinually) - try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) - } - - - func sendNewParticipantAnswerMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription) async throws { - let message = try NewParticipantAnswerMessageJSON( - sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), - sessionDescription: sessionDescription.sdp) - try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) - } - - - func sendReconnectCallMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async throws { - let message = try ReconnectCallMessageJSON( - sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), - sessionDescription: sessionDescription.sdp, - reconnectCounter: reconnectCounter, - peerReconnectCounterToOverride: peerReconnectCounterToOverride) - try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) - } - - - func sendNewIceCandidateMessage(to callParticipant: CallParticipant, iceCandidate: RTCIceCandidate) async throws { - let message = IceCandidateJSON(sdp: iceCandidate.sdp, sdpMLineIndex: iceCandidate.sdpMLineIndex, sdpMid: iceCandidate.sdpMid) - try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) - } - - - func sendRemoveIceCandidatesMessages(to callParticipant: CallParticipant, candidates: [RTCIceCandidate]) async throws { - let message = RemoveIceCandidatesMessageJSON(candidates: candidates.map({ IceCandidateJSON(sdp: $0.sdp, sdpMLineIndex: $0.sdpMLineIndex, sdpMid: $0.sdpMid) })) - try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) - } - - - func processIceCandidatesJSON(iceCandidate: IceCandidateJSON, participantId: OlvidUserId) async throws { - - if let callParticipant = callParticipants.first(where: { $0.callParticipant.userId == participantId })?.callParticipant { - try await callParticipant.processIceCandidatesJSON(message: iceCandidate) - } else { - if var previousCandidates = pendingIceCandidates[participantId] { - previousCandidates.append(iceCandidate) - pendingIceCandidates[participantId] = previousCandidates - } else { - pendingIceCandidates[participantId] = [iceCandidate] - } - } - - } - - - func removeIceCandidatesJSON(removeIceCandidatesJSON: RemoveIceCandidatesMessageJSON, participantId: OlvidUserId) async throws { - if let callParticipant = callParticipants.first(where: { $0.callParticipant.userId == participantId })?.callParticipant { - await callParticipant.processRemoveIceCandidatesMessageJSON(message: removeIceCandidatesJSON) - } else { - if var candidates = pendingIceCandidates[participantId] { - candidates.removeAll(where: { removeIceCandidatesJSON.candidates.contains($0) }) - pendingIceCandidates[participantId] = candidates - } - } - } - -} - - -// MARK: - Ending a call - -extension Call { - - /// This is the method call by the Olvid UI when a the user taps on the hangup button. - /// It simply creates an end call action that it passed to the system. Eventually, the - /// ``func provider(perform action: ObvEndCallAction) async throws`` - /// delegate method of the call coordinator will be called after dismissing the CallKit UI (when using it). - /// This delegate method will call us back so that we can properly end this WebRTC call. - nonisolated func userRequestedToEndCall() { - Task { - do { - try await callManager.requestEndCallAction(call: self) - } catch { - os_log("Failed to request an end call action: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - } - - - /// When the user requests to end the call, the - /// ``func userRequestedToEndCall()`` - /// the call coordinator - /// ``func provider(perform action: ObvEndCallAction) async throws`` - /// delegate is called. After fullfilling the action, it calls this method. - /// We can not properly end the WebRTC call. - func userRequestedToEndCallWasFulfilled() async { - await endWebRTCCall(reason: .localUserRequest) - } - - - func endCallAsInitiationNotSupported() async { - assert(direction == .outgoing) - await endWebRTCCall(reason: .callInitiationNotSupported) - } - - - func endCallAsLocalUserGotKicked() async { - assert(direction == .incoming) - await endWebRTCCall(reason: .kicked) - } - - - func endCallAsPermissionWasDeniedByServer() async { - assert(direction == .outgoing) - await endWebRTCCall(reason: .permissionDeniedByServer) - } - - - func endCallAsReportingAnIncomingCallFailed(error: ObvErrorCodeIncomingCallError) async { - assert(direction == .incoming) - await endWebRTCCall(reason: .reportIncomingCallFailed(error: error)) - } - - - func endCallAsAllOtherParticipantsLeft() async { - await endWebRTCCall(reason: .allOtherParticipantsLeft) - } - - - func endCallAsOutgoingCallInitializationFailed() async { - assert(direction == .outgoing) - await endWebRTCCall(reason: .outgoingCallInitializationFailed) - } - - - func endCallBecauseOfMissingRecordPermission() async { - await endWebRTCCall(reason: .missingRecordPermission) - } - - - private func endCallBecauseOfTimeout() async { - await endWebRTCCall(reason: .callTimedOut) - } - - /// This method is eventually called when ending a call, either because the local user requested to end the call, or the remote user hanged up, - /// Or because some error occured, etc. It perfoms final important steps before settting the call into an appropriate final state. - /// This is the only method that actually sets the call state to a final state. - private func endWebRTCCall(reason: EndCallReason) async { - - guard !internalState.isFinalState else { return } - - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - - // Potentially send a hangup/reject call message to the other participants or the to the caller - - switch reason { - - case .callTimedOut: - await sendLocalUserHangedUpMessageToAllParticipants() - - case .localUserRequest: - switch direction { - case .outgoing: - await sendLocalUserHangedUpMessageToAllParticipants() - case .incoming: - switch internalState { - case .initial, .ringing, .initializingCall: - await sendRejectIncomingCallToCaller() - case .userAnsweredIncomingCall, .callInProgress: - await sendLocalUserHangedUpMessageToAllParticipants() - case .gettingTurnCredentials, .hangedUp, .kicked, .callRejected, .permissionDeniedByServer, .unanswered, .callInitiationNotSupported, .failed: - assertionFailure() - await sendRejectIncomingCallToCaller() - } - } - - case .callInitiationNotSupported: - assert(direction == .outgoing) // No need to send reject/hangup message - - case .kicked: - assert(direction == .incoming) // No need to send reject/hangup message - - case .permissionDeniedByServer: - assert(direction == .outgoing) // No need to send reject/hangup message - - case .allOtherParticipantsLeft: - break // No need to send reject/hangup message - - case .reportIncomingCallFailed(error: let error): - assert(direction == .incoming) - switch error { - case .unknown, .unentitled, .callUUIDAlreadyExists, .filteredByDoNotDisturb, .filteredByBlockList: - await sendRejectIncomingCallToCaller() - case .maximumCallGroupsReached: - await sendBusyMessageToCaller() - } - - case .outgoingCallInitializationFailed: - assert(direction == .outgoing) // No need to send reject/hangup message - - case .missingRecordPermission: - await sendRejectIncomingCallToCaller() - // No need to send reject/hangup message - - } - - // In the end, we might have to report to our delegate - - var callReport: CallReport? - - // Set the call in an appropriate final state and perform final steps - - switch reason { - - case .callTimedOut: - await setCallState(to: .unanswered) - switch direction { - case .incoming: - callReport = .missedIncomingCall(caller: callerCallParticipant?.info, - participantCount: initialParticipantCount) - case .outgoing: - callReport = .unansweredOutgoingCall(with: callParticipants.map({ $0.info })) - } - await delegate?.callOutOfBoundEnded(call: self, reason: .unanswered) - - case .localUserRequest: - switch direction { - case .outgoing: - callReport = .uncompletedOutgoingCall(with: callParticipants.map({ $0.info })) - await setCallState(to: .hangedUp) - case .incoming: - switch internalState { - case .initial, .ringing, .initializingCall: - await setCallState(to: .callRejected) - if let caller = callerCallParticipant?.info { - callReport = .rejectedIncomingCall(caller: caller, participantCount: initialParticipantCount) - } - case .userAnsweredIncomingCall, .callInProgress: - await setCallState(to: .hangedUp) - case .gettingTurnCredentials, .hangedUp, .kicked, .callRejected, .permissionDeniedByServer, .unanswered, .callInitiationNotSupported, .failed: - assertionFailure() - await setCallState(to: .callRejected) - if let caller = callerCallParticipant?.info { - callReport = .rejectedIncomingCall(caller: caller, participantCount: initialParticipantCount) - } - } - } - - case .callInitiationNotSupported: - assert(direction == .outgoing) - await setCallState(to: .callInitiationNotSupported) - await delegate?.callOutOfBoundEnded(call: self, reason: .failed) - callReport = .uncompletedOutgoingCall(with: callParticipants.map({ $0.info })) - - case .kicked: - assert(direction == .incoming) - await setCallState(to: .kicked) - await delegate?.callOutOfBoundEnded(call: self, reason: .remoteEnded) - - case .permissionDeniedByServer: - assert(direction == .outgoing) - await setCallState(to: .permissionDeniedByServer) - await delegate?.callOutOfBoundEnded(call: self, reason: .failed) - callReport = .uncompletedOutgoingCall(with: callParticipants.map({ $0.info })) - - case .allOtherParticipantsLeft: - if internalState == .initial { - await setCallState(to: .unanswered) - await delegate?.callOutOfBoundEnded(call: self, reason: .unanswered) - } else { - await setCallState(to: .hangedUp) - await delegate?.callOutOfBoundEnded(call: self, reason: .remoteEnded) - } - - case .reportIncomingCallFailed(error: let error): - assert(direction == .incoming) - switch error { - case .unknown, .unentitled, .callUUIDAlreadyExists: - await setCallState(to: .failed) - if let caller = callerCallParticipant?.info { - callReport = .rejectedIncomingCall(caller: caller, participantCount: initialParticipantCount) - } - case .filteredByDoNotDisturb, .filteredByBlockList: - await setCallState(to: .unanswered) - if let caller = callerCallParticipant?.info { - callReport = .filteredIncomingCall(caller: caller, participantCount: initialParticipantCount) - } - if let caller = callerCallParticipant?.info { - callReport = .rejectedIncomingCall(caller: caller, participantCount: initialParticipantCount) - } - - case .maximumCallGroupsReached: - await setCallState(to: .unanswered) - } - - case .outgoingCallInitializationFailed: - assert(direction == .outgoing) - await setCallState(to: .failed) - callReport = .uncompletedOutgoingCall(with: callParticipants.map({ $0.info })) - - - case .missingRecordPermission: - await setCallState(to: .failed) - await delegate?.callOutOfBoundEnded(call: self, reason: .failed) - if direction == .incoming, let caller = callerCallParticipant?.info { - callReport = .rejectedIncomingCallBecauseOfDeniedRecordPermission(caller: caller, participantCount: initialParticipantCount) - } - - } - - assert(internalState.isFinalState) - - // If we have a call report, transmit it to our delegate - - if let callReport = callReport { - if let delegate = delegate { - type(of: delegate).report(call: self, report: callReport) - } else { - assertionFailure() - } - } - - } - - - enum EndCallReason { - case callTimedOut - case localUserRequest - case callInitiationNotSupported - case kicked // incoming call only - case permissionDeniedByServer // outgoing call only - case allOtherParticipantsLeft - case reportIncomingCallFailed(error: ObvErrorCodeIncomingCallError) - case outgoingCallInitializationFailed - case missingRecordPermission - } -} - - -// MARK: - Incoming calls - -extension Call { - - var callerCallParticipant: CallParticipant? { - guard direction == .incoming else { assertionFailure(); return nil } - return callParticipants.first(where: { $0.callParticipant.role == .caller })?.callParticipant - } - - - func addPendingOffer(_ receivedOfferMessage: (Date, NewParticipantOfferMessageJSON), from userId: OlvidUserId) { - assert(receivedOfferMessages[userId] == nil) - receivedOfferMessages[userId] = receivedOfferMessage - } - - - func isReady() -> Bool { - assert(direction == .incoming) - let pushKitIsEitherDisabledOrReady = !ObvMessengerSettings.VoIP.isCallKitEnabled || pushKitNotificationWasReceived - return pushKitIsEitherDisabledOrReady - } - - - /// This method is called after when the local user answers an incoming call - func answerWebRTCCall() async throws { - assert(direction == .incoming) - userAnsweredIncomingCall = true - await setCallState(to: .userAnsweredIncomingCall) - try await answerIfRequestedAndIfPossible() - } - - - private func answerIfRequestedAndIfPossible() async throws { - assert(direction == .incoming) - guard let caller = callerCallParticipant else { return } - guard userAnsweredIncomingCall else { return } - try await caller.localUserAcceptedIncomingCallFromThisCallParticipant() - } - - - /// Called when the user taps on the ansert button on the Olvid UI - func userRequestedToAnswerCall() async { - guard direction == .incoming else { - os_log("Can only answer an incoming call", log: log, type: .fault) - assertionFailure() - return - } - if internalState == .initial || internalState == .ringing { - do { - try await callManager.requestAnswerCallAction(incomingCall: self) - } catch { - os_log("Failed to answer incoming call: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - } else { - os_log("To answer an incoming call, we must be either in the initial or ringing state. But we are in the %{public}@ state", log: log, type: .fault, internalState.debugDescription) - assertionFailure() - } - } - - - - - /// When receiving an incoming call, we heventully arrive in the ringing state. We do not want the phone to ring forever. We thus schedule a timeout using this method. - private func scheduleRingingIncomingCallTimeout() async { - let log = self.log - guard direction == .incoming else { assertionFailure(); return } - os_log("☎️ Scheduling a ringing timeout for this incoming call", log: log, type: .info) - DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(Call.ringingTimeoutInterval)) { - Task { [weak self] in await self?.ringingTimerForIncomingCallFired() } - } - } - - - /// This method is *always* called after the `ringingTimeoutInterval`. For this reason, we *do* check whether it is appropriate to end the call - private func ringingTimerForIncomingCallFired() async { - guard direction == .incoming else { assertionFailure(); return } - guard internalState == .initial else { - os_log("☎️ We prevent the ringing timer from firing since we are not in a ringing state anymore", log: log, type: .info) - return - } - os_log("☎️ The incoming call did ring for too long, we timeout it now", log: log, type: .info) - await endCallBecauseOfTimeout() - } - -} - - -// MARK: - Outgoing calls - -extension Call { - - var outgoingCallDelegate: OutgoingCallDelegate? { - assert(direction == .outgoing) - return delegate as? OutgoingCallDelegate - } - - - var turnCredentialsForRecipient: TurnCredentials? { - assert(direction == .outgoing) - return obvTurnCredentials?.turnCredentialsForRecipient - } - - - var turnCredentialsForCaller: TurnCredentials? { - assert(direction == .outgoing) - return obvTurnCredentials?.turnCredentialsForCaller - } - - - private static func createRecipient(contactId: OlvidUserId) async -> CallParticipantImpl { - var contactInfo: ContactInfo? - if let contactObjectID = contactId.contactObjectID { - contactInfo = CallHelper.getContactInfo(contactObjectID) - } - return await CallParticipantImpl.createRecipientForOutgoingCall(contactId: contactId, gatheringPolicy: contactInfo?.gatheringPolicy ?? .gatherOnce) - } - - - // MARK: Starting an outgoing call - - func startCall() async throws { - assert(direction == .outgoing) - guard internalState == .initial else { - os_log("☎️ Trying to start this call although it is not initial", log: log, type: .fault) - assertionFailure() - throw Self.makeError(message: "Trying to start this call although it is not initial") - } - await setCallState(to: .gettingTurnCredentials) - assert(outgoingCallDelegate != nil) - await outgoingCallDelegate?.turnCredentialsRequiredByOutgoingCall(outgoingCallUuidForWebRTC: uuidForWebRTC, forOwnedIdentity: ownedIdentityForRequestingTurnCredentials) - } - - - func setTurnCredentials(_ obvTurnCredentials: ObvTurnCredentials) async { - assert(direction == .outgoing) - let log = self.log - guard self.obvTurnCredentials == nil else { assertionFailure(); return } - self.obvTurnCredentials = obvTurnCredentials - - let callParticipants = self.callParticipants.map({ $0.callParticipant }) - - for callParticipant in callParticipants { - do { - try await callParticipant.setTurnCredentialsAndCreateUnderlyingPeerConnection(turnCredentials: obvTurnCredentials.turnCredentialsForRecipient) - } catch { - os_log("☎️ We failed to set the turn credentials for one of the call participants: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() // Continue anyway - } - usleep(300_000) // 300 ms, dirty trick, required to prevent a deadlock of the WebRTC library - } - await setCallState(to: .initializingCall) - } - - - func processAnswerCallJSON(callParticipant: CallParticipantImpl, _ answerCallMessage: AnswerCallJSON) async throws { - assert(direction == .outgoing) - let sessionDescription = RTCSessionDescription(type: answerCallMessage.sessionDescriptionType, sdp: answerCallMessage.sessionDescription) - try await callParticipant.setRemoteDescription(sessionDescription: sessionDescription) - } - - - /// This method gets called when the local user (as the caller) wants to add more participants in an ongoing outgoing call. - func processUserWantsToAddParticipants(contactIds: [OlvidUserId]) async throws { - - assert(direction == .outgoing) - - guard let turnCredentialsForRecipient = self.turnCredentialsForRecipient else { - throw Self.makeError(message: "No turn credentials for recipient") - } - - guard !contactIds.isEmpty else { return } - - let callIsMuted = await self.isMuted - - let contactIdsToAdd = contactIds - .filter({ $0.ownCryptoId == ownedIdentity }) - .filter({ getParticipant(remoteCryptoId: $0.remoteCryptoId) == nil }) // Remove contacts that are already in the call - - var callParticipantsToAdd = [CallParticipantImpl]() - for contactId in contactIdsToAdd { - let participant = await Self.createRecipient(contactId: contactId) - callParticipantsToAdd.append(participant) - } - - guard !callParticipantsToAdd.isEmpty else { return } - - let log = self.log - - for newCallParticipant in callParticipantsToAdd { - os_log("☎️ Adding a new participant", log: log, type: .info) - await addParticipant(callParticipant: newCallParticipant, report: true) - try? await newCallParticipant.setTurnCredentialsAndCreateUnderlyingPeerConnection(turnCredentials: turnCredentialsForRecipient) - if callIsMuted { - await newCallParticipant.mute() - } - } - - } - - - /// This method is called by the coordinator when receiving the notification that the caller wants to kick a participant of the call - func processUserWantsToKickParticipant(callParticipant: CallParticipant) async throws { - - assert(direction == .outgoing) - - guard let participant = callParticipants.first(where: { $0.remoteCryptoId == callParticipant.remoteCryptoId })?.callParticipant else { return } - - guard participant.role != .caller else { assertionFailure(); return } - - try await participant.setPeerState(to: .kicked) - - // Close the Connection - - do { - try await participant.closeConnection() - } catch { - os_log("☎️ Could not close connection with kicked participant: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - // Continue anyway - } - - // Send kick to the kicked participant - - let kickMessage = KickMessageJSON() - do { - try await sendWebRTCMessage(to: participant, innerMessage: kickMessage, forStartingCall: false) - } catch { - os_log("☎️ Could not send KickMessageJSON to kicked contact: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - // Continue anyway - } - - } - - - func initializeCall(contactIdentifier: String, handleValue: String) async throws { - assert(direction == .outgoing) - try await callManager.requestStartCallAction(call: self, contactIdentifier: contactIdentifier, handleValue: handleValue) - } - -} - - -extension Call { - - private func getOlvidUserIdFor(contactInfos: ContactBytesAndNameJSON) throws -> OlvidUserId { - let remoteCryptoId = try ObvCryptoId(identity: contactInfos.byteContactIdentity) - var contactId: OlvidUserId! - ObvStack.shared.performBackgroundTaskAndWait { (context) in - do { - if let identity = try PersistedObvContactIdentity.get(contactCryptoId: remoteCryptoId, ownedIdentityCryptoId: ownedIdentity, whereOneToOneStatusIs: .any, within: context), let ownedIdentity = identity.ownedIdentity, !identity.devices.isEmpty { - contactId = .known(contactObjectID: identity.typedObjectID, ownCryptoId: ownedIdentity.cryptoId, remoteCryptoId: identity.cryptoId, displayName: identity.fullDisplayName) - } - } catch { - assertionFailure() // Continue anyway - } - } - if let contactId = contactId { - return contactId - } else { - return .unknown(ownCryptoId: ownedIdentity, remoteCryptoId: remoteCryptoId, displayName: contactInfos.displayName) - } - } - -} - - - -private struct HashableCallParticipant: Hashable { - - let remoteCryptoId: ObvCryptoId - let callParticipant: CallParticipantImpl - - init(_ callParticipant: CallParticipantImpl) { - self.remoteCryptoId = callParticipant.remoteCryptoId - self.callParticipant = callParticipant - } - - static func == (lhs: HashableCallParticipant, rhs: HashableCallParticipant) -> Bool { - lhs.remoteCryptoId == rhs.remoteCryptoId - } - - func hash(into hasher: inout Hasher) { - hasher.combine(remoteCryptoId) - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Call/CallDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Call/CallDelegate.swift deleted file mode 100644 index 5014631f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Call/CallDelegate.swift +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import ObvTypes -import ObvUICoreData - - -// MARK: - CallDelegate - -protocol CallDelegate: AnyObject { - - func processReceivedWebRTCMessage(messageType: WebRTCMessageJSON.MessageType, serializedMessagePayload: String, callIdentifier: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date, messageIdentifierFromEngine: Data?) async - func processNewParticipantOfferMessageJSON(_ newParticipantOffer: NewParticipantOfferMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws - static func report(call: Call, report: CallReport) - func newParticipantWasAdded(call: Call, callParticipant: CallParticipant) async - func callReachedFinalState(call: Call) async - func outgoingCallReachedReachedInProgressState(call: Call) async - func callOutOfBoundEnded(call: Call, reason: ObvCallEndedReason) async - -} - - -// MARK: - IncomingCallDelegate - -protocol IncomingCallDelegate: CallDelegate {} - - -// MARK: - OutgoingCallDelegate - -protocol OutgoingCallDelegate: CallDelegate { - func turnCredentialsRequiredByOutgoingCall(outgoingCallUuidForWebRTC: UUID, forOwnedIdentity ownedIdentityCryptoId: ObvCryptoId) async -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Call/GenericCall.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Call/GenericCall.swift deleted file mode 100644 index a6668c11..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Call/GenericCall.swift +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import ObvEngine -import ObvTypes - - -// MARK: - GenericCall protocol - -protocol GenericCall: AnyObject { - - var direction: CallDirection { get } - var uuid: UUID { get } - var usesCallKit: Bool { get } - - func getCallParticipants() async -> [CallParticipant] - - var state: CallState { get async } - func getStateDates() async -> [CallState: Date] - - var isMuted: Bool { get async } - - func userRequestedToToggleAudio() async - func userRequestedToEndCall() // Called from the Olvid UI when the user taps the end call button - func userRequestedToAnswerCall() async // Throws if called on anything else than an incoming call - - func userDidAnsweredIncomingCall() async -> Bool // Only makes sense for an incoming call - - var initialParticipantCount: Int { get } - -} - - -// MARK: - Call State - -enum CallState: Hashable, CustomDebugStringConvertible { - case initial - case userAnsweredIncomingCall - case gettingTurnCredentials // Only for outgoing calls - case initializingCall - case ringing - case callInProgress - - case hangedUp - case kicked - case callRejected - - case permissionDeniedByServer - case unanswered - case callInitiationNotSupported - case failed - - var debugDescription: String { - switch self { - case .kicked: return "kicked" - case .userAnsweredIncomingCall: return "userAnsweredIncomingCall" - case .gettingTurnCredentials: return "gettingTurnCredentials" - case .initializingCall: return "initializingCall" - case .ringing: return "ringing" - case .initial: return "initial" - case .callRejected: return "callRejected" - case .callInProgress: return "callInProgress" - case .hangedUp: return "hangedUp" - case .permissionDeniedByServer: return "permissionDeniedByServer" - case .unanswered: return "unanswered" - case .callInitiationNotSupported: return "callInitiationNotSupported" - case .failed: return "failed" - } - } - - var isFinalState: Bool { - switch self { - case .callRejected, .hangedUp, .unanswered, .callInitiationNotSupported, .kicked, .permissionDeniedByServer, .failed: return true - case .gettingTurnCredentials, .userAnsweredIncomingCall, .initializingCall, .ringing, .initial, .callInProgress: return false - } - } - - var localizedString: String { - switch self { - case .initial: return NSLocalizedString("CALL_STATE_NEW", comment: "") - case .gettingTurnCredentials: return NSLocalizedString("CALL_STATE_GETTING_TURN_CREDENTIALS", comment: "") - case .kicked: return NSLocalizedString("CALL_STATE_KICKED", comment: "") - case .userAnsweredIncomingCall, .initializingCall: return NSLocalizedString("CALL_STATE_INITIALIZING_CALL", comment: "") - case .ringing: return NSLocalizedString("CALL_STATE_RINGING", comment: "") - case .callRejected: return NSLocalizedString("CALL_STATE_CALL_REJECTED", comment: "") - case .callInProgress: return NSLocalizedString("SECURE_CALL_IN_PROGRESS", comment: "") - case .hangedUp: return NSLocalizedString("CALL_STATE_HANGED_UP", comment: "") - case .permissionDeniedByServer: return NSLocalizedString("CALL_STATE_PERMISSION_DENIED_BY_SERVER", comment: "") - case .unanswered: return NSLocalizedString("UNANSWERED", comment: "") - case .callInitiationNotSupported: return NSLocalizedString("CALL_INITIALISATION_NOT_SUPPORTED", comment: "") - case .failed: return NSLocalizedString("CALL_FAILED", comment: "") - } - } -} - - -enum CallDirection { - case incoming - case outgoing -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/CXCallController+CallControllerProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/CXCallController+CallControllerProtocol.swift new file mode 100644 index 00000000..0f1427ea --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/CXCallController+CallControllerProtocol.swift @@ -0,0 +1,24 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CallKit + + +extension CXCallController: CallControllerProtocol {} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/CallControllerHolder.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/CallControllerHolder.swift new file mode 100644 index 00000000..cf2234bd --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/CallControllerHolder.swift @@ -0,0 +1,38 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CallKit +import ObvSettings + + +final class CallControllerHolder { + + private let cxCallController = CXCallController() + private let nxCallController = NCXCallController() + + var callController: CallControllerProtocol { + ObvUICoreDataConstants.useCallKit ? cxCallController : nxCallController + } + + func setNCXCallControllerDelegate(_ delegate: NCXCallControllerDelegate) { + Task { await nxCallController.setDelegate(delegate) } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/CallControllerProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/CallControllerProtocol.swift new file mode 100644 index 00000000..034b110c --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/CallControllerProtocol.swift @@ -0,0 +1,30 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CallKit + + +protocol CallControllerProtocol { + + func request(_ transaction: CXTransaction) async throws + func requestTransaction(with action: CXAction) async throws + func requestTransaction(with actions: [CXAction]) async throws + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/NCXCallController.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/NCXCallController.swift new file mode 100644 index 00000000..4b0a681b --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallController/NCXCallController.swift @@ -0,0 +1,76 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CallKit + + +protocol NCXCallControllerDelegate: AnyObject { + func process(action: CXAction) async throws +} + + +actor NCXCallController: CallControllerProtocol { + + private weak var delegate: NCXCallControllerDelegate? + + func setDelegate(_ delegate: NCXCallControllerDelegate) { + self.delegate = delegate + } + + + func request(_ transaction: CXTransaction) async throws { + try await process(transaction.actions) + } + + + func requestTransaction(with action: CXAction) async throws { + try await process([action]) + } + + + func requestTransaction(with actions: [CXAction]) async throws { + try await process(actions) + } + +} + +// MARK: - Internal methods + +extension NCXCallController { + + private func process(_ actions: [CXAction]) async throws { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + for action in actions { + try await delegate.process(action: action) + } + } + +} + + +// MARK: - Errors + +extension NCXCallController { + + enum ObvError: Error { + case delegateIsNil + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallKitSupport.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallKitSupport.swift deleted file mode 100644 index 06b89ab0..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallKitSupport.swift +++ /dev/null @@ -1,424 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import CallKit -import AVKit - -class CXCallManager: ObvCallManager { - - var isCallKit: Bool { true } - - private let callController = CXCallController() - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: CXCallManager.self)) - - func requestEndCallAction(call: Call) async throws { - let endCallAction = CXEndCallAction(call: call.uuid) - let transaction = CXTransaction() - transaction.addAction(endCallAction) - try await requestTransaction(transaction) - } - - func requestAnswerCallAction(incomingCall: Call) async throws { - let answerCallAction = CXAnswerCallAction(call: incomingCall.uuid) - let transaction = CXTransaction() - transaction.addAction(answerCallAction) - try await requestTransaction(transaction) - } - - func requestMuteCallAction(call: Call) async throws { - let muteCallAction = CXSetMutedCallAction(call: call.uuid, muted: true) - let transaction = CXTransaction() - transaction.addAction(muteCallAction) - try await requestTransaction(transaction) - } - - func requestUnmuteCallAction(call: Call) async throws { - let muteCallAction = CXSetMutedCallAction(call: call.uuid, muted: false) - let transaction = CXTransaction() - transaction.addAction(muteCallAction) - try await requestTransaction(transaction) - } - - func requestStartCallAction(call: Call, contactIdentifier: String, handleValue: String) async throws { - let handle = CXHandle(type: .generic, value: handleValue) - - let startCallAction = CXStartCallAction(call: call.uuid, handle: handle) - startCallAction.contactIdentifier = contactIdentifier - - let transaction = CXTransaction() - transaction.addAction(startCallAction) - try await requestTransaction(transaction) - } - - - private func requestTransaction(_ transaction: CXTransaction) async throws { - os_log("☎️ Requesting transaction with %{public}d action(s). The first is: %{public}@", log: log, type: .error, transaction.actions.count, transaction.actions.first ?? "nil") - try await callController.request(transaction) - } - -} - -extension ObvHandleType { - var cxHandleType: CXHandle.HandleType { CXHandle.HandleType(rawValue: rawValue) ?? .generic } -} - -extension CXHandle.HandleType { - var obvHandleType: ObvHandleType { ObvHandleType(rawValue: rawValue) ?? .generic } -} - - -extension CXProviderConfiguration: ObvProviderConfiguration { - var supportedHandleTypes_: Set { - get { Set(supportedHandleTypes.map { $0.obvHandleType }) } - set { supportedHandleTypes = Set(newValue.map { $0.cxHandleType }) } - } -} - -extension ObvProviderConfiguration { - var cxProviderConfiguration: CXProviderConfiguration { - var configuration: CXProviderConfiguration - if #available(iOS 14.0, *) { - configuration = CXProviderConfiguration() - } else { - assert(localizedName != nil) - configuration = CXProviderConfiguration(localizedName: localizedName ?? "CXProviderConfiguration") - } - configuration.ringtoneSound = ringtoneSound - configuration.iconTemplateImageData = iconTemplateImageData - configuration.maximumCallGroups = maximumCallGroups - configuration.maximumCallsPerCallGroup = maximumCallsPerCallGroup - configuration.includesCallsInRecents = includesCallsInRecents - configuration.supportsVideo = supportsVideo - configuration.supportedHandleTypes_ = supportedHandleTypes_ - return configuration - } -} - -extension ObvCallEndedReason { - var cxReason: CXCallEndedReason { - switch self { - case .failed: return .failed - case .remoteEnded: return .remoteEnded - case .unanswered: return .unanswered - case .answeredElsewhere: return .answeredElsewhere - case .declinedElsewhere: return .declinedElsewhere - } - } - -} - -extension ObvErrorCodeRequestTransactionError { - var cxError: CXErrorCodeRequestTransactionError { - var code: CXErrorCodeRequestTransactionError.Code? - switch self { - case .unknown: code = .unknown - case .unentitled: code = .unentitled - case .unknownCallProvider: code = .unknownCallProvider - case .emptyTransaction: code = .emptyTransaction - case .unknownCallUUID: code = .unknownCallUUID - case .callUUIDAlreadyExists: code = .callUUIDAlreadyExists - case .invalidAction: code = .invalidAction - case .maximumCallGroupsReached: code = .maximumCallGroupsReached - } - return CXErrorCodeRequestTransactionError(code ?? .unknown) - } -} - -extension CXErrorCodeRequestTransactionError { - var obvError: ObvErrorCodeRequestTransactionError { - switch self.code { - case .unknown: return .unknown - case .unentitled: return .unentitled - case .unknownCallProvider: return .unknownCallProvider - case .emptyTransaction: return .emptyTransaction - case .unknownCallUUID: return .unknownCallUUID - case .callUUIDAlreadyExists: return .callUUIDAlreadyExists - case .invalidAction: return .invalidAction - case .maximumCallGroupsReached: return .maximumCallGroupsReached - @unknown default: assertionFailure(); return .unknown - } - } -} - -extension CXErrorCodeIncomingCallError { - var obvError: ObvErrorCodeIncomingCallError { - switch self.code { - case .unknown: return .unknown - case .unentitled: return .unentitled - case .callUUIDAlreadyExists: return .callUUIDAlreadyExists - case .filteredByDoNotDisturb: return .filteredByDoNotDisturb - case .filteredByBlockList: return .filteredByBlockList - @unknown default: return .unknown - } - } -} - -class CXObvProvider: ObvProvider { - - var isCallKit: Bool { true } - - private var provider: CXProvider - - init(configuration: ObvProviderConfiguration) { - self.provider = CXProvider(configuration: configuration.cxProviderConfiguration) - } - - /// Allows to keep a strong ref on delegate since setDelegate keeps a weak ref and CallKitProviderDelegate is a local variable - private var delegate: CXProviderDelegate? - - func setDelegate(_ delegate: ObvProviderDelegate?, queue: DispatchQueue?) { - self.delegate = CXObvProviderDelegate(delegate: delegate) - self.provider.setDelegate(self.delegate, queue: queue) - } - - func reportNewIncomingCall(with UUID: UUID, update: ObvCallUpdate, completion: @escaping (Result) -> Void) { - provider.reportNewIncomingCall(with: UUID, update: update.cxCallUpdate) { error in - if let error = error { - completion(.failure(error)) - } else { - completion(.success(())) - } - } - } - - func reportCall(with UUID: UUID, updated update: ObvCallUpdate) { - provider.reportCall(with: UUID, updated: update.cxCallUpdate) - } - - func reportCall(with UUID: UUID, endedAt dateEnded: Date?, reason endedReason: ObvCallEndedReason) { - provider.reportCall(with: UUID, endedAt: dateEnded, reason: endedReason.cxReason) - } - - func reportOutgoingCall(with UUID: UUID, startedConnectingAt dateStartedConnecting: Date?) { - provider.reportOutgoingCall(with: UUID, startedConnectingAt: dateStartedConnecting) - } - - func reportOutgoingCall(with UUID: UUID, connectedAt dateConnected: Date?) { - provider.reportOutgoingCall(with: UUID, connectedAt: dateConnected) - } - - var configuration_: ObvProviderConfiguration { - get { provider.configuration } - set { provider.configuration = newValue.cxProviderConfiguration } - } - - func invalidate() { - provider.invalidate() - } - - - func reportNewCancelledIncomingCall() { - let uuid = UUID() - let update = ObvCallUpdateImpl(remoteHandle_: nil, - localizedCallerName: "...", - supportsHolding: false, - supportsGrouping: false, - supportsUngrouping: false, - supportsDTMF: false, - hasVideo: false) - provider.reportNewIncomingCall(with: uuid, update: update.cxCallUpdate) { [weak self] _ in - self?.endReportedIncomingCall(with: uuid, inSeconds: 2) - } - } - - - func endReportedIncomingCall(with uuid: UUID, inSeconds: Int) { - let callController = CXCallController() - let endCallAction = CXEndCallAction(call: uuid) - let transaction = CXTransaction() - transaction.addAction(endCallAction) - DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(inSeconds)) { - Task { try await callController.request(transaction) } - } - } - -} - -extension CXHandle: ObvHandle { - var type_: ObvHandleType { type.obvHandleType } -} -extension ObvHandle { - var cxHandle: CXHandle { CXHandle(type: type_.cxHandleType, value: value) } -} - -extension CXCallUpdate: ObvCallUpdate { - var remoteHandle_: ObvHandle? { - get { remoteHandle } - set { remoteHandle = newValue?.cxHandle } - } -} -extension ObvCallUpdate { - var cxCallUpdate: CXCallUpdate { - let update = CXCallUpdate() - update.remoteHandle = remoteHandle_?.cxHandle - update.localizedCallerName = localizedCallerName - update.supportsHolding = supportsHolding - update.supportsGrouping = supportsGrouping - update.supportsUngrouping = supportsUngrouping - update.supportsDTMF = supportsDTMF - update.hasVideo = hasVideo - return update - } -} - - -extension CXStartCallAction: ObvStartCallAction { - var handle_: ObvHandle { self.handle } -} -extension CXAnswerCallAction: ObvAnswerCallAction { } -extension CXEndCallAction: ObvEndCallAction { } -extension CXSetHeldCallAction: ObvSetHeldCallAction { } -extension CXSetMutedCallAction: ObvSetMutedCallAction { } -extension CXPlayDTMFCallAction.ActionType { - var obvType: ObvPlayDTMFCallActionType { - switch self { - case .singleTone: return .singleTone - case .softPause: return .softPause - case .hardPause: return .hardPause - @unknown default: return .unknown - } - } -} -extension CXPlayDTMFCallAction: ObvPlayDTMFCallAction { - var type_: ObvPlayDTMFCallActionType { type.obvType } -} -class CXObvProviderDelegate: NSObject, CXProviderDelegate { - - let delegate: ObvProviderDelegate? - - init(delegate: ObvProviderDelegate?) { - self.delegate = delegate - super.init() - } - - func providerDidBegin(_ provider: CXProvider) { - Task { [weak self] in await self?.delegate?.providerDidBegin() } - } - func providerDidReset(_ provider: CXProvider) { - Task { [weak self] in await self?.delegate?.providerDidReset() } - } - func provider(_ provider: CXProvider, perform action: CXStartCallAction) { - guard let delegate = delegate else { assertionFailure(); action.fail(); return } - Task { await delegate.provider(perform: action) } - } - func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) { - guard let delegate = delegate else { assertionFailure(); action.fail(); return } - Task { await delegate.provider(perform: action) } - } - func provider(_ provider: CXProvider, perform action: CXEndCallAction) { - guard let delegate = delegate else { assertionFailure(); action.fail(); return } - Task { await delegate.provider(perform: action) } - } - func provider(_ provider: CXProvider, perform action: CXSetHeldCallAction) { - Task { [weak self] in await self?.delegate?.provider(perform: action) } - } - func provider(_ provider: CXProvider, perform action: CXSetMutedCallAction) { - Task { [weak self] in await self?.delegate?.provider(perform: action) } - } - func provider(_ provider: CXProvider, perform action: CXPlayDTMFCallAction) { - Task { [weak self] in await self?.delegate?.provider(perform: action) } - } - func provider(_ provider: CXProvider, timedOutPerforming action: CXAction) { - if let obvAction = action as? ObvAction { - Task { [weak self] in await self?.delegate?.provider(timedOutPerforming: obvAction) } - } else { - assertionFailure() - action.fail() - } - } - func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) { - Task { [weak self] in await self?.delegate?.provider(didActivate: audioSession) } - } - func provider(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession) { - Task { [weak self] in await self?.delegate?.provider(didDeactivate: audioSession) } - } -} - -extension CXCall: ObvCall { } - -class CXObvCallObserverDelegate: NSObject, CXCallObserverDelegate { - - let delegate: ObvCallObserverDelegate? - - init(delegate: ObvCallObserverDelegate?) { - self.delegate = delegate - super.init() - } - func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) { - delegate?.callObserver(callChanged: call) - } -} - -class CXObvCallObserver: CXCallObserver, ObvCallObserver { - var calls_: [ObvCall] { calls } - - private var delegate: CXObvCallObserverDelegate? - - func setDelegate(_ delegate: ObvCallObserverDelegate?, queue: DispatchQueue?) { - self.delegate = CXObvCallObserverDelegate(delegate: delegate) - super.setDelegate(self.delegate, queue: queue) - } - -} - -/// CXCallObserverDelegate Exemple -class CXCallObserverTest: NSObject, CXCallObserverDelegate { - - private let callObserver = CXObvCallObserver() - - override init() { - super.init() - callObserver.setDelegate(self, queue: DispatchQueue.main) - } - - func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) { - print("☎️ CX Observe call changed uuid=", call.uuid, " isOutgoing=", call.isOutgoing, " isOnHold=", call.isOnHold, " hasConnected=", call.hasConnected, " hasEnded=", call.hasEnded) - print("☎️ CX Number of ObvCall=", callObserver.calls.count) - } -} - - - -// MARK: - ObvErrorCodeRequestTransactionError - -enum ObvErrorCodeRequestTransactionError: Int { - case unknown = 0 - case unentitled = 1 - case unknownCallProvider = 2 - case emptyTransaction = 3 - case unknownCallUUID = 4 - case callUUIDAlreadyExists = 5 - case invalidAction = 6 - case maximumCallGroupsReached = 7 - - var localizedDescription: String { - switch self { - case .unknown: return "unknown" - case .unentitled: return "unentitled" - case .unknownCallProvider: return "unknownCallProvider" - case .emptyTransaction: return "emptyTransaction" - case .unknownCallUUID: return "unknownCallUUID" - case .callUUIDAlreadyExists: return "callUUIDAlreadyExists" - case .invalidAction: return "invalidAction" - case .maximumCallGroupsReached: return "maximumCallGroupsReached" - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallManager.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallManager.swift deleted file mode 100644 index 64f8aca2..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallManager.swift +++ /dev/null @@ -1,1347 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import CoreData -import ObvTypes -import ObvEngine -import PushKit -import AVKit -import WebRTC -import OlvidUtils -import ObvCrypto -import ObvUICoreData - - -final actor CallManager: ObvErrorMaker { - - static let errorDomain = "CallManager" - private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: CallManager.self)) - - private let pushRegistryHandler: ObvPushRegistryHandler - - private var continuationsWaitingForCallKitVoIPNotification = [Data: CheckedContinuation]() - private var filteredIncomingCalls = [UUID]() - private var currentCalls = [Call]() - private var messageIdentifiersFromEngineOfRecentlyDeletedIncomingCalls = [Data]() - private var currentIncomingCalls: [Call] { currentCalls.filter({ $0.direction == .incoming }) } - private var currentOutgoingCalls: [Call] { currentCalls.filter({ $0.direction == .outgoing }) } - private var remotelyHangedUpCalls = Set() - - private var receivedIceCandidates = [UUID: [(IceCandidateJSON, OlvidUserId)]]() - - /// This array allows to make sure we do not process the same `StartCallMessageJSON` twice. This is required as this message may be received twice. - private var messageIdentifierFromEngineFromProcessingStartCallMessage = Set() - - /// When receiving a pushkit notification, we do not immediately create a call like we used to do in previous versions of this framework. - /// Instead, we add an element to this dictionary, indexed by message Ids from the engine. The values are UUID to use with CallKit and when creating the (incoming) call instance - private var receivedCallKitVoIPNotifications = [Data: UUID]() - - private let obvEngine: ObvEngine - private var notificationTokens = [NSObjectProtocol]() - - private let cxProvider: CXObvProvider - private let ncxProvider: NCXObvProvider - - private func provider(isCallKit: Bool) -> ObvProvider { - RTCAudioSession.sharedInstance().useManualAudio = isCallKit - return isCallKit ? cxProvider : ncxProvider - } - - init(obvEngine: ObvEngine) { - let cxProvider = CXObvProvider(configuration: CallManager.providerConfiguration) - let ncxProvider = NCXObvProvider.instance - self.obvEngine = obvEngine - self.cxProvider = cxProvider - self.ncxProvider = ncxProvider - self.pushRegistryHandler = ObvPushRegistryHandler(obvEngine: obvEngine, cxObvProvider: cxProvider) - ncxProvider.setConfiguration(CallManager.providerConfiguration) - cxProvider.setDelegate(self, queue: nil) - ncxProvider.setDelegate(self, queue: nil) - } - - deinit { - notificationTokens.forEach { NotificationCenter.default.removeObserver($0) } - } - - private let queueForPostingNotifications = DispatchQueue(label: "Call queue for posting notifications") - - - func performPostInitialization() { - listenToNotifications() - /// Force provider initialization - _ = provider(isCallKit: ObvMessengerSettings.VoIP.isCallKitEnabled) - pushRegistryHandler.registerForVoIPPushes(delegate: self) - } - - - /// The app's provider configuration, representing its CallKit capabilities - private static var providerConfiguration: ObvProviderConfiguration { - let localizedName = NSLocalizedString("Olvid", comment: "Name of application") - var providerConfiguration = ObvProviderConfigurationImpl(localizedName: localizedName) - providerConfiguration.supportsVideo = false - providerConfiguration.maximumCallGroups = 1 - providerConfiguration.maximumCallsPerCallGroup = 1 - providerConfiguration.supportedHandleTypes_ = [.generic] - providerConfiguration.includesCallsInRecents = ObvMessengerSettings.VoIP.isIncludesCallsInRecentsEnabled - providerConfiguration.iconTemplateImageData = UIImage(named: "olvid-callkit-logo")?.pngData() - return providerConfiguration - } - - - func applicationAppearedOnScreen(forTheFirstTime: Bool) async { - for call in currentIncomingCalls { - guard await !call.state.isFinalState else { return } - VoIPNotification.anIncomingCallShouldBeShownToUser(newIncomingCall: call) - .postOnDispatchQueue(queueForPostingNotifications) - return - } - } - - - private func listenToNotifications() { - - // VoIP notifications - - notificationTokens.append(contentsOf: [ - VoIPNotification.observeUserWantsToKickParticipant { (call, callParticipant) in - Task { [weak self] in await self?.processUserWantsToKickParticipant(call: call, callParticipant: callParticipant) } - }, - VoIPNotification.observeUserWantsToAddParticipants { [weak self] (call, contactIds) in - Task { [weak self] in await self?.processUserWantsToAddParticipants(call: call, contactIds: contactIds) } - }, - ]) - - // Internal notifications - - notificationTokens.append(contentsOf: [ - ObvMessengerInternalNotification.observeNewWebRTCMessageWasReceived { (webrtcMessage, contactId, messageUploadTimestampFromServer, messageIdentifierFromEngine) in - Task { [weak self] in - await self?.processReceivedWebRTCMessage(messageType: webrtcMessage.messageType, - serializedMessagePayload: webrtcMessage.serializedMessagePayload, - callIdentifier: webrtcMessage.callIdentifier, - contact: contactId, - messageUploadTimestampFromServer: messageUploadTimestampFromServer, - messageIdentifierFromEngine: messageIdentifierFromEngine) - } - }, - ObvMessengerInternalNotification.observeUserWantsToCallAndIsAllowedTo { (contactIds, ownedIdentityForRequestingTurnCredentials, groupId) in - Task { [weak self] in await self?.processUserWantsToCallNotification(contactIds: contactIds, ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, groupId: groupId) } - }, - ObvMessengerInternalNotification.observeNetworkInterfaceTypeChanged { [weak self] (isConnected) in - Task { [weak self] in await self?.processNetworkStatusChangedNotification(isConnected: isConnected) } - }, - ObvMessengerInternalNotification.observeIsCallKitEnabledSettingDidChange { [weak self] in - Task { [weak self] in await self?.processIsCallKitEnabledSettingDidChangeNotification() } - }, - ObvMessengerInternalNotification.observeIsIncludesCallsInRecentsEnabledSettingDidChange { [weak self] in - Task { [weak self] in await self?.processIsIncludesCallsInRecentsEnabledSettingDidChangeNotification() } - }, - ]) - - // Engine notifications - - notificationTokens.append(contentsOf: [ - ObvEngineNotificationNew.observeCallerTurnCredentialsReceived(within: NotificationCenter.default) { [weak self] (ownedIdentity, callUuid, turnCredentials) in - Task { [weak self] in await self?.processCallerTurnCredentialsReceivedNotification(ownedIdentity: ownedIdentity, uuidForWebRTC: callUuid, turnCredentials: turnCredentials) } - }, - ObvEngineNotificationNew.observeCallerTurnCredentialsReceptionFailure(within: NotificationCenter.default) { [weak self] (ownedIdentity, callUuid) in - Task { [weak self] in await self?.processCallerTurnCredentialsReceptionFailureNotification(ownedIdentity: ownedIdentity, uuidForWebRTC: callUuid) } - }, - ObvEngineNotificationNew.observeCallerTurnCredentialsReceptionPermissionDenied(within: NotificationCenter.default) { [weak self] (ownedIdentity, callUuid) in - Task { [weak self] in await self?.processCallerTurnCredentialsReceptionPermissionDeniedNotification(ownedIdentity: ownedIdentity, uuidForWebRTC: callUuid) } - }, - ObvEngineNotificationNew.observeCallerTurnCredentialsServerDoesNotSupportCalls(within: NotificationCenter.default) { [weak self] (ownedIdentity, callUuid) in - Task { [weak self] in await self?.processTurnCredentialsServerDoesNotSupportCalls(ownedIdentity: ownedIdentity, uuidForWebRTC: callUuid) } - }, - ]) - } - - - private func addCallToCurrentCalls(call: Call) async throws { - let callState = await call.state - assert(callState == .initial) - os_log("☎️ Adding call to the list of current calls", log: Self.log, type: .info) - - assert(currentCalls.first(where: { $0.uuid == call.uuid }) == nil, "Trying to add a call that already exists in the list of current calls") - currentCalls.append(call) - - switch call.direction { - case .outgoing: - VoIPNotification.newOutgoingCall(newOutgoingCall: call) - .postOnDispatchQueue(queueForPostingNotifications) - case .incoming: - VoIPNotification.newIncomingCall(newIncomingCall: call) - .postOnDispatchQueue(queueForPostingNotifications) - } - - } - - - private func removeCallFromCurrentCalls(call: Call) async throws { - os_log("☎️ Removing call from the list of current calls", log: Self.log, type: .info) - let callState = await call.state - assert(callState.isFinalState) - - currentCalls.removeAll(where: { $0.uuid == call.uuid }) - if currentCalls.isEmpty { - // Yes, we need to make sure the calls are properly freed... - currentCalls = [] - } - if call.direction == .incoming { - assert(call.messageIdentifierFromEngine != nil) - if let messageIdentifierFromEngine = call.messageIdentifierFromEngine { - messageIdentifiersFromEngineOfRecentlyDeletedIncomingCalls.append(messageIdentifierFromEngine) - } - } - if let newCall = currentCalls.first { - let newCallState = await newCall.state - assert(!newCallState.isFinalState) - VoIPNotification.callHasBeenUpdated(callUUID: newCall.uuid, updateKind: .state(newState: newCallState)) - .postOnDispatchQueue(queueForPostingNotifications) - } else { - VoIPNotification.noMoreCallInProgress - .postOnDispatchQueue(queueForPostingNotifications) - } - receivedIceCandidates[call.uuidForWebRTC] = nil - } - - - private func createOutgoingCall(contactIds: [OlvidUserId], ownedIdentityForRequestingTurnCredentials: ObvCryptoId, groupId: GroupIdentifierBasedOnObjectID?) async throws -> Call { - let outgoingCall = try await Call.createOutgoingCall(contactIds: contactIds, - ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, - delegate: self, - usesCallKit: ObvMessengerSettings.VoIP.isCallKitEnabled, - groupId: groupId, - queueForPostingNotifications: queueForPostingNotifications) - try await addCallToCurrentCalls(call: outgoingCall) - assert(outgoingCall.direction == .outgoing) - return outgoingCall - } - -} - - -// MARK: - Processing notifications - -extension CallManager { - - private func processIsCallKitEnabledSettingDidChangeNotification() { - // Force provider initialization - _ = provider(isCallKit: ObvMessengerSettings.VoIP.isCallKitEnabled) - } - - - private func processIsIncludesCallsInRecentsEnabledSettingDidChangeNotification() { - let provider = self.provider(isCallKit: ObvMessengerSettings.VoIP.isCallKitEnabled) - var configuration = provider.configuration_ - configuration.includesCallsInRecents = ObvMessengerSettings.VoIP.isIncludesCallsInRecentsEnabled - provider.configuration_ = configuration - } - - - private func processNetworkStatusChangedNotification(isConnected: Bool) async { - os_log("☎️ Processing a network status changed notification", log: Self.log, type: .info) - await withTaskGroup(of: Void.self) { taskGroup in - for call in currentCalls { - taskGroup.addTask { - do { - try await call.restartIceIfAppropriate() - } catch { - os_log("☎️ Could not restart ICE after a network status change: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - } - } - } - - - private func processCallerTurnCredentialsReceptionFailureNotification(ownedIdentity: ObvCryptoId, uuidForWebRTC: UUID) async { - os_log("☎️ Processing a CallerTurnCredentialsReceptionFailure notification", log: Self.log, type: .fault) - guard let call = currentOutgoingCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) else { return } - await call.endCallAsPermissionWasDeniedByServer() - } - - - private func processCallerTurnCredentialsReceptionPermissionDeniedNotification(ownedIdentity: ObvCryptoId, uuidForWebRTC: UUID) async { - os_log("☎️ Processing a CallerTurnCredentialsReceptionPermissionDenied notification", log: Self.log, type: .fault) - guard let call = currentOutgoingCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) else { return } - await call.endCallAsPermissionWasDeniedByServer() - } - - - private func processTurnCredentialsServerDoesNotSupportCalls(ownedIdentity: ObvCryptoId, uuidForWebRTC: UUID) async { - os_log("☎️ Processing a TurnCredentialsServerDoesNotSupportCalls notification", log: Self.log, type: .fault) - guard let call = currentOutgoingCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) else { return } - await call.endCallAsInitiationNotSupported() - VoIPNotification.serverDoesNotSupportCall - .postOnDispatchQueue(queueForPostingNotifications) - } - - - /// This method is called when receiving the credentials allowing to make an outgoing call. At this point, the outgoing call has already been created and is waiting for these credentials. - /// Under the hood, the caller has a peer connection holder which of the call participants, but these connection holders do *not* have a WebRTC peer connection yet. - /// Setting the credentials will create these peer connections. - private func processCallerTurnCredentialsReceivedNotification(ownedIdentity: ObvCryptoId, uuidForWebRTC: UUID, turnCredentials: ObvTurnCredentials) async { - let currentOutgoingCalls = self.currentCalls.filter({ $0.direction == .outgoing }) - guard let outgoingCall = currentOutgoingCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) else { return } - await outgoingCall.setTurnCredentials(turnCredentials) - } - -} - - - -// MARK: - ObvPushRegistryHandlerDelegate - -extension CallManager: ObvPushRegistryHandlerDelegate { - - /// When using CallKit, we always wait until the pushkit notification is received before creating an incoming call. - /// When we receive it, we do not create an "empty" call instance like we used to do in previous versions of the framework. - /// Instead, we simply add an element to the `receivedCallKitVoIPNotifications` dictionary. - /// This essentially is what this method is about. - func successfullyReportedNewIncomingCallToCallKit(uuidForCallKit: UUID, messageIdentifierFromEngine: Data) async { - - // If the incoming call was recently deleted, we just dismiss the CallKit UI (that we just showed) and terminate. - - guard !messageIdentifiersFromEngineOfRecentlyDeletedIncomingCalls.contains(messageIdentifierFromEngine) else { - cxProvider.endReportedIncomingCall(with: uuidForCallKit, inSeconds: 2) - return - } - - // Add an entry to the receivedCallKitVoIPNotifications array - - assert(receivedCallKitVoIPNotifications[messageIdentifierFromEngine] == nil) - receivedCallKitVoIPNotifications[messageIdentifierFromEngine] = uuidForCallKit - - // We may have already received a start call message (in case we are in a CallKit scenario and the WebSocket was faster than the VoIP notification) - // In that situation, we know the StartCall processing method is waiting that the VoIP push notification is received before creating the incoming call and adding it to the list of current call. - // The following two lines allows to "unblock" the start call processing method. - - if let continuation = continuationsWaitingForCallKitVoIPNotification.removeValue(forKey: messageIdentifierFromEngine) { - continuation.resume(returning: uuidForCallKit) - } - - } - - - func failedToReportNewIncomingCallToCallKit(callUUID: UUID, error: Error) async { - - let incomingCallError = ObvErrorCodeIncomingCallError(rawValue: (error as NSError).code) ?? .unknown - switch incomingCallError { - case .unknown, .unentitled, .callUUIDAlreadyExists, .maximumCallGroupsReached: - os_log("☎️ reportNewIncomingCall failed -> ending call: %{public}@", log: Self.log, type: .error, error.localizedDescription) - assertionFailure() - case .filteredByDoNotDisturb, .filteredByBlockList: - os_log("☎️ reportNewIncomingCall filtered (busy/blocked) -> set call has been filtered", log: Self.log, type: .info) - filteredIncomingCalls.append(callUUID) - } - - } - -} - - - -// MARK: - Processing received WebRTC messages - -extension CallManager { - - internal func processReceivedWebRTCMessage(messageType: WebRTCMessageJSON.MessageType, serializedMessagePayload: String, callIdentifier: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date, messageIdentifierFromEngine: Data?) async { - if case .hangedUp = messageType { - os_log("☎️🛑 We received %{public}@ message", log: Self.log, type: .info, messageType.description) - } else { - os_log("☎️ We received %{public}@ message", log: Self.log, type: .info, messageType.description) - } - do { - switch messageType { - - case .startCall: - let startCallMessage = try StartCallMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - guard let messageIdentifierFromEngine = messageIdentifierFromEngine else { assertionFailure(); return } - try await processStartCallMessage(startCallMessage, - uuidForWebRTC: callIdentifier, - userId: contact, - messageUploadTimestampFromServer: messageUploadTimestampFromServer, - messageIdentifierFromEngine: messageIdentifierFromEngine) - - case .answerCall: - let answerCallMessage = try AnswerCallJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processAnswerCallMessage(answerCallMessage, uuidForWebRTC: callIdentifier, contact: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - case .rejectCall: - let rejectCallMessage = try RejectCallMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processRejectCallMessage(rejectCallMessage, uuidForWebRTC: callIdentifier, contact: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - case .hangedUp: - let hangedUpMessage = try HangedUpMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processHangedUpMessage(hangedUpMessage, uuidForWebRTC: callIdentifier, contact: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - case .ringing: - _ = try RingingMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processRingingMessageJSON(uuidForWebRTC: callIdentifier, contact: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - case .busy: - _ = try BusyMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processBusyMessageJSON(uuidForWebRTC: callIdentifier, contact: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - case .reconnect: - let reconnectCallMessage = try ReconnectCallMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processReconnectCallMessageJSON(reconnectCallMessage, uuidForWebRTC: callIdentifier, contact: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - case .newParticipantAnswer: - let newParticipantAnswer = try NewParticipantAnswerMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processNewParticipantAnswerMessageJSON(newParticipantAnswer, uuidForWebRTC: callIdentifier, contact: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - case .newParticipantOffer: - let newParticipantOffer = try NewParticipantOfferMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processNewParticipantOfferMessageJSON(newParticipantOffer, uuidForWebRTC: callIdentifier, contact: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - case .kick: - let kickMessage = try KickMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processKickMessageJSON(kickMessage, uuidForWebRTC: callIdentifier, contact: contact, messageUploadTimestampFromServer: messageUploadTimestampFromServer) - - case .newIceCandidate: - os_log("☎️❄️ We received new ICE Candidate message: %{public}@", log: Self.log, type: .info, messageType.description) - let iceCandidate = try IceCandidateJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processIceCandidateMessage(message: iceCandidate, uuidForWebRTC: callIdentifier, contact: contact) - - case .removeIceCandidates: - let removeIceCandidatesMessage = try RemoveIceCandidatesMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) - try await processRemoveIceCandidatesMessage(message: removeIceCandidatesMessage, uuidForWebRTC: callIdentifier, contact: contact) - - } - } catch { - os_log("☎️ Could not parse or process the WebRTCMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - } - } - - - /// This method processes a received StartCallMessageJSON. In case we use CallKit and Olvid is in the background, this message is probably first received first within a PushKit notification, that gets decrypted very fast, which eventually triggers this method. Note that - /// since decrypting a notification does *not* delete the decryption key, it almost certain that this method will get called a second time: the message will be fetched from the server, decrypted as usual, which eventually triggers this method again. - private func processStartCallMessage(_ startCallMessage: StartCallMessageJSON, uuidForWebRTC: UUID, userId: OlvidUserId, messageUploadTimestampFromServer: Date, messageIdentifierFromEngine: Data) async throws { - - // If the call was already terminated, discard this message - - guard !remotelyHangedUpCalls.contains(uuidForWebRTC) else { - return - } - - // If the StartCallMessageJSON was already received (i.e., we are processing it already), we do nothing. This can happen when decrypting the VoIP notification first (when using CallKit), then receiving the start call message via the network. In that case, we can receive the start call message twice. We only consider the first occurence. - - guard !messageIdentifierFromEngineFromProcessingStartCallMessage.contains(messageIdentifierFromEngine) && currentIncomingCalls.first(where: { $0.messageIdentifierFromEngine == messageIdentifierFromEngine }) == nil else { - os_log("☎️ We already received this start call message (which can occur when using CallKit). We discard this one.", log: Self.log, type: .info) - return - } - - messageIdentifierFromEngineFromProcessingStartCallMessage.insert(messageIdentifierFromEngine) - - // We check that the `StartCallMessageJSON` is not too old. If this is the case, we ignore it - - let timeInterval = Date().timeIntervalSince(messageUploadTimestampFromServer) // In seconds - guard timeInterval < Call.acceptableTimeIntervalForStartCallMessages else { - os_log("☎️ We received an old StartCallMessageJSON, uploaded %{timeInterval}f seconds ago on the server. We ignore it.", log: Self.log, type: .info, timeInterval) - return - } - - os_log("☎️ We received a fresh StartCallMessageJSON, uploaded %{timeInterval}f seconds ago on the server.", log: Self.log, type: .info, timeInterval) - - // In the CallKit case, we are not in charge of inserting the incoming call in the `currentIncomingCalls` array. - // In that case, we wait until this is done. - // In the non-CallKit case, we are in charge and we insert it right away. - - let useCallKit = ObvMessengerSettings.VoIP.isCallKitEnabled - let callUUID: UUID - if useCallKit { - callUUID = await waitUntilCallKitVoIPIsReceived(messageIdentifierFromEngine: messageIdentifierFromEngine) - } else { - callUUID = UUID() - } - let incomingCall = await Call.createIncomingCall(uuid: callUUID, - startCallMessage: startCallMessage, - contactId: userId, - uuidForWebRTC: uuidForWebRTC, - messageIdentifierFromEngine: messageIdentifierFromEngine, - messageUploadTimestampFromServer: messageUploadTimestampFromServer, - delegate: self, - useCallKit: useCallKit, - queueForPostingNotifications: queueForPostingNotifications) - - // After the following line, currentIncomingCalls.first(where: { $0.messageIdentifierFromEngine == messageIdentifierFromEngine }) will be not nil. - // This is important for the test made at the beginning of this method. - // Consequently, we can remove the corresponding entry from the messageIdentifierFromEngineFromProcessingStartCallMessage array. - try await addCallToCurrentCalls(call: incomingCall) - - messageIdentifierFromEngineFromProcessingStartCallMessage.remove(messageIdentifierFromEngine) - - assert(incomingCall.direction == .incoming) - - // Now that we know for sure that the incoming call is part of the current calls, we can process the - // ICE candidates we may already have received - - for (iceCandidate, contact) in receivedIceCandidates[incomingCall.uuidForWebRTC] ?? [] { - os_log("☎️❄️ Process pending remote IceCandidateJSON message", log: Self.log, type: .info) - try? await incomingCall.processIceCandidatesJSON(iceCandidate: iceCandidate, participantId: contact) - } - receivedIceCandidates[incomingCall.uuidForWebRTC] = nil - - // Finish the processing - - if incomingCall.usesCallKit { - - guard !filteredIncomingCalls.contains(where: { $0 == incomingCall.uuid }) else { - os_log("☎️ processStartCallMessage: end the filtered call", log: Self.log, type: .info) - await incomingCall.endCallAsReportingAnIncomingCallFailed(error: .filteredByDoNotDisturb) - return - } - - // Update the CallKit UI - - let callUpdate = await ObvCallUpdateImpl.make(with: incomingCall) - self.provider(isCallKit: true).reportCall(with: incomingCall.uuid, updated: callUpdate) - - // Send the ringing message - - await sendRingingMessageToCaller(forIncomingCall: incomingCall) - - } else { - - await provider(isCallKit: false).reportNewIncomingCall(with: incomingCall.uuid, update: ObvCallUpdateImpl.make(with: incomingCall)) { result in - Task { [weak self] in - guard let _self = self else { return } - switch result { - case .failure(let error): - let incomingCallError = ObvErrorCodeIncomingCallError(rawValue: (error as NSError).code) ?? .unknown - switch incomingCallError { - case .unknown, .unentitled, .callUUIDAlreadyExists, .filteredByDoNotDisturb, .filteredByBlockList: - os_log("☎️ reportNewIncomingCall failed -> ending call", log: Self.log, type: .error) - case .maximumCallGroupsReached: - os_log("☎️ reportNewIncomingCall maximumCallGroupsReached -> ending call", log: Self.log, type: .error) - await Self.report(call: incomingCall, report: .missedIncomingCall(caller: incomingCall.callerCallParticipant?.info, participantCount: startCallMessage.participantCount)) - } - await incomingCall.endCallAsReportingAnIncomingCallFailed(error: incomingCallError) - case .success: - VoIPNotification.showCallViewControllerForAnsweringNonCallKitIncomingCall(incomingCall: incomingCall) - .postOnDispatchQueue(_self.queueForPostingNotifications) - await self?.sendRingingMessageToCaller(forIncomingCall: incomingCall) - } - } - } - - } - - } - - - /// In case we use CallKit, we insert a call in the `currentCalls` array when receiving the start call message, not when receiving the VoIP notification. - /// Yet, in the case we use CallKit, we first need to wait until we receive a CallKit VoIP notification. The fact that we received this notification - /// is materialized by the insertion of a new element in the `receivedCallKitVoIPNotifications` dictionary, and the "start call message" - /// processing method waits until this event occurs. - /// This method (using a patern based on async/await continuations) allows to do just that. To make it work, we must resume the continuation - /// stored in the `continuationsWaitingForCallKitVoIPNotification` array at the time we add an element in the `receivedCallKitVoIPNotifications` array. - private func waitUntilCallKitVoIPIsReceived(messageIdentifierFromEngine: Data) async -> UUID { - if let uuidForCallKit = receivedCallKitVoIPNotifications[messageIdentifierFromEngine] { - return uuidForCallKit - } - return await withCheckedContinuation { (continuation: CheckedContinuation) in - Task { - if let uuidForCallKit = receivedCallKitVoIPNotifications[messageIdentifierFromEngine] { - continuation.resume(returning: uuidForCallKit) - } else { - assert(continuationsWaitingForCallKitVoIPNotification[messageIdentifierFromEngine] == nil) - continuationsWaitingForCallKitVoIPNotification[messageIdentifierFromEngine] = continuation - } - } - } - } - - - private func processAnswerCallMessage(_ answerCallMessage: AnswerCallJSON, uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws { - guard let outgoingCall = currentOutgoingCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) else { return } - guard let participant = await outgoingCall.getParticipant(remoteCryptoId: contact.remoteCryptoId) else { return } - provider(isCallKit: outgoingCall.usesCallKit).reportOutgoingCall(with: outgoingCall.uuid, startedConnectingAt: nil) - do { - try await outgoingCall.processAnswerCallJSON(callParticipant: participant, answerCallMessage) - } catch { - os_log("Could not set remote description -> ending call", log: Self.log, type: .fault) - try await participant.closeConnection() - assertionFailure() - throw error - } - Self.report(call: outgoingCall, report: .acceptedOutgoingCall(from: participant.info)) - } - - - private func processRejectCallMessage(_ rejectCallMessage: RejectCallMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws { - guard let call = currentCalls.filter({ $0.uuidForWebRTC == uuidForWebRTC }).first else { return } - guard let participant = await call.getParticipant(remoteCryptoId: contact.remoteCryptoId) else { return } - guard call.direction == .outgoing else { return } - let participantState = await participant.getPeerState() - guard [.startCallMessageSent, .ringing].contains(participantState) else { return } - - try await participant.setPeerState(to: .callRejected) - Self.report(call: call, report: .rejectedOutgoingCall(from: participant.info)) - } - - - private func processHangedUpMessage(_ hangedUpMessage: HangedUpMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws { - guard let call = currentCalls.filter({ $0.uuidForWebRTC == uuidForWebRTC }).first else { - remotelyHangedUpCalls.insert(uuidForWebRTC) - return - } - let callStateIsInitial = await call.state == .initial - if call.direction == .incoming && callStateIsInitial { - await Self.report(call: call, report: .missedIncomingCall(caller: call.callerCallParticipant?.info, participantCount: call.initialParticipantCount)) - } - try await call.callParticipantDidHangUp(participantId: contact) - } - - - private func processBusyMessageJSON(uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws { - guard let call = currentCalls.filter({ $0.uuidForWebRTC == uuidForWebRTC }).first else { return } - guard let participant = await call.getParticipant(remoteCryptoId: contact.remoteCryptoId) else { return } - guard await participant.getPeerState() == .startCallMessageSent else { return } - - try await participant.setPeerState(to: .busy) - Self.report(call: call, report: .busyOutgoingCall(from: participant.info)) - } - - - private func processRingingMessageJSON(uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws { - guard let outgoingCall = currentOutgoingCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) else { return } - guard let participant = await outgoingCall.getParticipant(remoteCryptoId: contact.remoteCryptoId) else { return } - guard await participant.getPeerState() == .startCallMessageSent else { return } - - try await participant.setPeerState(to: .ringing) - } - - - private func processReconnectCallMessageJSON(_ reconnectCallMessage: ReconnectCallMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws { - guard let call = currentCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) else { return } - guard let participant = await call.getParticipant(remoteCryptoId: contact.remoteCryptoId) else { return } - try await call.handleReconnectCallMessage(callParticipant: participant, reconnectCallMessage) - } - - - private func processNewParticipantAnswerMessageJSON(_ newParticipantAnswer: NewParticipantAnswerMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws { - os_log("☎️ Call to processNewParticipantAnswerMessageJSON", log: Self.log, type: .info) - guard let call = currentCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) else { return } - guard let participant = await call.getParticipant(remoteCryptoId: contact.remoteCryptoId) else { return } - guard participant.role == .recipient else { return } - let remoteCryptoId = participant.remoteCryptoId - guard call.shouldISendTheOfferToCallParticipant(cryptoId: remoteCryptoId) else { return } - let sessionDescription = RTCSessionDescription(type: newParticipantAnswer.sessionDescriptionType, sdp: newParticipantAnswer.sessionDescription) - os_log("☎️ Will call setRemoteDescription on the participant", log: Self.log, type: .info) - try await participant.setRemoteDescription(sessionDescription: sessionDescription) - } - - - func processNewParticipantOfferMessageJSON(_ newParticipantOffer: NewParticipantOfferMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws { - /// We check that the `NewParticipantOfferMessageJSON` is not too old. If this is the case, we ignore it - let timeInterval = Date().timeIntervalSince(messageUploadTimestampFromServer) // In seconds - guard timeInterval < 30 else { - os_log("☎️ We received an old NewParticipantOfferMessageJSON, uploaded %{timeInterval}f seconds ago on the server. We ignore it.", log: Self.log, type: .info, timeInterval) - return - } - - guard let incomingCall = currentCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC && $0.direction == .incoming }) else { return } - guard let participant = await incomingCall.getParticipant(remoteCryptoId: contact.remoteCryptoId) else { - // Put the message in queue as we might simply receive the update call participant message later - await incomingCall.addPendingOffer((messageUploadTimestampFromServer, newParticipantOffer), from: contact) - return - } - guard participant.role == .recipient else { return } - let remoteCryptoId = participant.remoteCryptoId - guard !incomingCall.shouldISendTheOfferToCallParticipant(cryptoId: remoteCryptoId) else { return } - - guard let turnCredentials = incomingCall.turnCredentialsReceivedFromCaller else { assertionFailure(); return } - - try await participant.updateRecipient(newParticipantOfferMessage: newParticipantOffer, turnCredentials: turnCredentials) - } - - - private func processKickMessageJSON(_ kickMessage: KickMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId, messageUploadTimestampFromServer: Date) async throws { - guard let call = currentCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) else { return } - guard let participant = await call.getParticipant(remoteCryptoId: contact.remoteCryptoId) else { return } - guard participant.role == .caller else { return } - os_log("☎️ We received an KickMessageJSON from caller", log: Self.log, type: .info) - await call.endCallAsLocalUserGotKicked() - } - - - private func processIceCandidateMessage(message: IceCandidateJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws { - - if let call = currentCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) { - - os_log("☎️❄️ Process IceCandidateJSON message", log: Self.log, type: .info) - try await call.processIceCandidatesJSON(iceCandidate: message, participantId: contact) - - } else { - - guard !remotelyHangedUpCalls.contains(uuidForWebRTC) else { return } - os_log("☎️❄️ Received new remote ICE Candidates for a call that does not exists yet. Adding the ICE candidate to the receivedIceCandidates array.", log: Self.log, type: .info) - var candidates = receivedIceCandidates[uuidForWebRTC] ?? [] - candidates += [(message, contact)] - receivedIceCandidates[uuidForWebRTC] = candidates - return - - } - - } - - - private func processRemoveIceCandidatesMessage(message: RemoveIceCandidatesMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws { - - if let call = currentCalls.first(where: { $0.uuidForWebRTC == uuidForWebRTC }) { - - os_log("☎️❄️ Process RemoveIceCandidatesMessageJSON message", log: Self.log, type: .info) - try await call.removeIceCandidatesJSON(removeIceCandidatesJSON: message, participantId: contact) - - } else { - - guard !remotelyHangedUpCalls.contains(uuidForWebRTC) else { return } - os_log("☎️❄️ Received removed remote ICE Candidates for a call that does not exists yet", log: Self.log, type: .info) - var candidates = receivedIceCandidates[uuidForWebRTC] ?? [] - candidates.removeAll { message.candidates.contains($0.0) } - receivedIceCandidates[uuidForWebRTC] = candidates - - } - - } - - - private func processUserWantsToCallNotification(contactIds: [OlvidUserId], ownedIdentityForRequestingTurnCredentials: ObvCryptoId, groupId: GroupIdentifierBasedOnObjectID?) async { - - // 2022-06-20 We used to wait until the app is initialized and active. Still needed? - // 2022-06-27 We comment the following line, it shouldn't be necessary now. - // _ = await NewAppStateManager.shared.waitUntilAppIsInitialized() - - // We first check that there is no ongoing call before allowing a new call - - for currentCall in currentCalls { - guard await currentCall.state.isFinalState else { - os_log("☎️ Trying to create a new outgoing call while another (not finished) call exists is not allowed", log: Self.log, type: .error) - return - } - } - - let granted = await AVAudioSession.sharedInstance().requestRecordPermission() - if granted { - await initiateCall(with: contactIds, ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, groupId: groupId) - } else { - ObvMessengerInternalNotification.outgoingCallFailedBecauseUserDeniedRecordPermission - .postOnDispatchQueue(queueForPostingNotifications) - } - - } - - - private func processUserWantsToKickParticipant(call: GenericCall, callParticipant: CallParticipant) async { - guard let call = call as? Call else { - os_log("☎️ Unknown call type", log: Self.log, type: .fault) - assertionFailure() - return - } - guard let outgoingCall = currentOutgoingCalls.first(where: { $0.uuidForWebRTC == call.uuidForWebRTC }) else { return } - do { - try await outgoingCall.processUserWantsToKickParticipant(callParticipant: callParticipant) - } catch { - os_log("☎️ Could not properly kick participant: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - - - private func processUserWantsToAddParticipants(call: GenericCall, contactIds: [OlvidUserId]) async { - guard !contactIds.isEmpty else { assertionFailure(); return } - guard let call = call as? Call else { - os_log("Unknown call type", log: Self.log, type: .fault) - assertionFailure() - return - } - guard currentOutgoingCalls.first(where: { $0.uuidForWebRTC == call.uuidForWebRTC }) != nil else { return } - guard call.direction == .outgoing else { return } - do { - try await call.processUserWantsToAddParticipants(contactIds: contactIds) - } catch { - os_log("☎️ Could not process processUserWantsToAddParticipants: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - } -} - - -// MARK: - Incoming/Outgoing Call Delegate - -extension CallManager: IncomingCallDelegate, OutgoingCallDelegate { - - func turnCredentialsRequiredByOutgoingCall(outgoingCallUuidForWebRTC: UUID, forOwnedIdentity ownedIdentityCryptoId: ObvCryptoId) async { - obvEngine.getTurnCredentials(ownedIdenty: ownedIdentityCryptoId, callUuid: outgoingCallUuidForWebRTC) - } - -} - - -// MARK: - Helpers - -extension CallManager { - - /// This method sends a `RingingMessageJSON` to the caller. It makes sure this message is sent only once. - private func sendRingingMessageToCaller(forIncomingCall call: Call) async { - assert(call.direction == .incoming) - os_log("☎️ Within sendRingingMessageToCaller", log: Self.log, type: .info) - await call.sendRingingMessageToCaller() - } - -} - - -// MARK: - Actions - -extension CallManager { - - private func initiateCall(with contactIds: [OlvidUserId], ownedIdentityForRequestingTurnCredentials: ObvCryptoId, groupId: GroupIdentifierBasedOnObjectID?) async { - - guard !contactIds.isEmpty else { assertionFailure(); return } - - os_log("☎️ initiateCall with %{public}@", log: Self.log, type: .info, contactIds.map { $0.debugDescription }.joined(separator: ", ")) - - do { - try ObvAudioSessionUtils.shared.configureAudioSessionForMakingOrAnsweringCall() - } catch { - os_log("☎️ Failed to configure audio session: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() // Continue anyway - } - - let sortedContactIds = contactIds.sorted(by: { $0.displayName < $1.displayName }) - - let outgoingCall: Call - do { - outgoingCall = try await createOutgoingCall(contactIds: sortedContactIds, ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, groupId: groupId) - assert(outgoingCall.direction == .outgoing) - } catch { - os_log("☎️ Could not create outgoing call: %{public}@", log: Self.log, type: .error, error.localizedDescription) - assertionFailure() - return - } - - guard let firstContactId = contactIds.first else { return } - let firstContactDisplayName = firstContactId.displayName - - let outgoingCallUuid = outgoingCall.uuid - let handleValue: String = String(outgoingCallUuid) - - do { - try await outgoingCall.initializeCall(contactIdentifier: firstContactDisplayName, handleValue: handleValue) - } catch { - os_log("☎️ Start call failed: %{public}@", log: Self.log, type: .error, error.localizedDescription) - await outgoingCall.endCallAsOutgoingCallInitializationFailed() - return - } - } - -} - - -// MARK: - Call Delegate - -extension CallManager { - - static func report(call: Call, report: CallReport) { - let ownedIdentity = call.ownedIdentity - os_log("☎️📖 Report call to user as %{public}@", log: Self.log, type: .info, report.description) - VoIPNotification.reportCallEvent(callUUID: call.uuid, callReport: report, groupId: call.groupId, ownedCryptoId: ownedIdentity) - .postOnDispatchQueue() - } - - - func newParticipantWasAdded(call: Call, callParticipant: CallParticipant) async { - switch call.direction { - case .incoming: - Self.report(call: call, report: .newParticipantInIncomingCall(callParticipant.info)) - case .outgoing: - Self.report(call: call, report: .newParticipantInOutgoingCall(callParticipant.info)) - } - let callUpdate = await ObvCallUpdateImpl.make(with: call) - self.provider(isCallKit: call.usesCallKit).reportCall(with: call.uuid, updated: callUpdate) - } - - - func callReachedFinalState(call: Call) async { - do { - try await removeCallFromCurrentCalls(call: call) - } catch { - os_log("Could not remove call from current calls: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - - - func outgoingCallReachedReachedInProgressState(call: Call) async { - assert(call.direction == .outgoing) - provider(isCallKit: call.usesCallKit).reportOutgoingCall(with: call.uuid, connectedAt: nil) - } - - - /// This call delegate method gets called when a call is ended in an out-of-band manner, i.e., not because the local user decided to end the call. - /// In that case, we want to report this information to CallKit. - func callOutOfBoundEnded(call: Call, reason: ObvCallEndedReason) async { - let callState = await call.state - assert(callState.isFinalState) - provider(isCallKit: call.usesCallKit).reportCall(with: call.uuid, endedAt: nil, reason: reason) - } - -} - - -// MARK: - ObvProviderDelegate - -extension CallManager: ObvProviderDelegate { - - func providerDidBegin() async { - os_log("☎️ Provider did begin", log: Self.log, type: .info) - } - - - func providerDidReset() async { - os_log("☎️ Provider did reset", log: Self.log, type: .info) - } - - - func provider(perform action: ObvStartCallAction) async { - - os_log("☎️ Provider perform action: %{public}@", log: Self.log, type: .info, action.debugDescription) - - guard let outgoingCall = currentCalls.first(where: { $0.uuid == action.callUUID && $0.direction == .outgoing }) else { - os_log("☎️ Could not start call, call not found", log: Self.log, type: .fault) - action.fail() - assertionFailure() - return - } - - do { - try await outgoingCall.startCall() - } catch(let error) { - os_log("☎️ startCall failed: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - await outgoingCall.endCallAsOutgoingCallInitializationFailed() - action.fail() - assertionFailure() - return - } - - action.fulfill() - - // If we stop here, the name displayed within iOS call log is incorrect (it shows the CoreData instance's URI). Updating the call right now does the trick. - let callUpdate = await ObvCallUpdateImpl.make(with: outgoingCall) - provider(isCallKit: outgoingCall.usesCallKit).reportCall(with: outgoingCall.uuid, updated: callUpdate) - - // At this point, credentials have been requested to the engine (when calling outgoingCall.startCall() above). - // The outgoing call will evolve when receiving these credentials. - } - - - func provider(perform action: ObvAnswerCallAction) async { - - os_log("☎️ Provider perform answer call action", log: Self.log, type: .info) - - guard let call = currentCalls.first(where: { $0.uuid == action.callUUID && $0.direction == .incoming }) else { - os_log("☎️ Could not answer call: could not find the call within the current calls", log: Self.log, type: .fault) - action.fail() - return - } - - guard AVAudioSession.sharedInstance().recordPermission == .granted else { - os_log("☎️ We reject the call since there is no record permission", log: Self.log, type: .fault) - await call.endCallBecauseOfMissingRecordPermission() - action.fail() - return - } - - guard await !call.userDidAnsweredIncomingCall() else { - action.fail() - return - } - - /* Although https://www.youtube.com/watch?v=_64EiziqbuE @ 20:35 says that we should not configure - * the audio here, we do so anyway. Otherwise, CallKit does not call the - * func provider(didActivate audioSession: AVAudioSession) - * delegate method in the case the call is received when the screen is locked. - */ - do { - try ObvAudioSessionUtils.shared.configureAudioSessionForMakingOrAnsweringCall() - } catch { - os_log("☎️🎵 Could not configure the audio session: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - action.fail() - assertionFailure() - return - } - - do { - try await call.answerWebRTCCall() - } catch { - os_log("☎️ Failed to answer WebRTC call: %{public}@", log: Self.log, type: .fault, error.localizedDescription) - action.fail() - assertionFailure() - return - } - - action.fulfill() - - await Self.report(call: call, report: .acceptedIncomingCall(caller: call.callerCallParticipant?.info)) - } - - - /// This delegate method is called when the local user ends the call from the CallKit UI or from the Olvid UI. - func provider(perform action: ObvEndCallAction) async { - - os_log("☎️🛑 Provider perform end call action for call with UUID %{public}@", log: Self.log, type: .info, action.callUUID as CVarArg) - - guard let call = currentCalls.first(where: { $0.uuid == action.callUUID }) else { - os_log("Cannot find call after performing ObvEndCallAction", log: Self.log, type: .fault) - action.fail() - assertionFailure() - return - } - - await call.userRequestedToEndCallWasFulfilled() - - action.fulfill() - - } - - - func provider(perform action: ObvSetHeldCallAction) async { - os_log("☎️ Provider perform set held call action", log: Self.log, type: .info) - action.fulfill() - assertionFailure("Not implemented") - } - - - func provider(perform action: ObvSetMutedCallAction) async { - os_log("☎️ Provider perform set muted call action", log: Self.log, type: .info) - guard let call = currentCalls.first(where: { $0.uuid == action.callUUID }) else { action.fail(); return } - if action.isMuted { - await call.muteSelfForOtherParticipants() - } else { - await call.unmuteSelfForOtherParticipants() - } - action.fulfill() - } - - - func provider(perform action: ObvPlayDTMFCallAction) async { - os_log("☎️ Provider perform play DTMF action", log: Self.log, type: .info) - action.fulfill() - } - - - func provider(timedOutPerforming action: ObvAction) async { - os_log("☎️ Provider timed out performing action %{public}@", log: Self.log, type: .info, action.debugDescription) - action.fulfill() - } - - - func provider(didActivate audioSession: AVAudioSession) async { - // See https://stackoverflow.com/a/55781328 - os_log("☎️🎵 Provider did activate audioSession %{public}@", log: Self.log, type: .info, audioSession.description) - RTCAudioSession.sharedInstance().audioSessionDidActivate(audioSession) - RTCAudioSession.sharedInstance().isAudioEnabled = true - } - - - func provider(didDeactivate audioSession: AVAudioSession) async { - os_log("☎️🎵 Provider did deactivate audioSession %{public}@", log: Self.log, type: .info, audioSession.description) - RTCAudioSession.sharedInstance().audioSessionDidDeactivate(audioSession) - RTCAudioSession.sharedInstance().isAudioEnabled = false - } - -} - - -// MARK: - Extensions / Helpers - -fileprivate extension EncryptedPushNotification { - - init?(dict: [AnyHashable: Any]) { - - guard let wrappedKeyString = dict["encryptedHeader"] as? String else { return nil } - guard let encryptedContentString = dict["encryptedMessage"] as? String else { return nil } - - guard let wrappedKey = Data(base64Encoded: wrappedKeyString), - let encryptedContent = Data(base64Encoded: encryptedContentString), - let maskingUID = dict["maskinguid"] as? String, - let messageUploadTimestampFromServerAsDouble = dict["timestamp"] as? Double, - let messageIdFromServer = dict["messageuid"] as? String else { - return nil - } - - let messageUploadTimestampFromServer = Date(timeIntervalSince1970: messageUploadTimestampFromServerAsDouble / 1000.0) - - self.init(messageIdFromServer: messageIdFromServer, - wrappedKey: wrappedKey, - encryptedContent: encryptedContent, - encryptedExtendedContent: nil, - maskingUID: maskingUID, - messageUploadTimestampFromServer: messageUploadTimestampFromServer, - localDownloadTimestamp: Date()) - - } - -} - - -fileprivate extension ObvCallUpdateImpl { - - static func make(with call: Call) async -> ObvCallUpdate { - var update = ObvCallUpdateImpl() - let callParticipants = await call.getCallParticipants() - let sortedContacts: [(isCaller: Bool, displayName: String)] = callParticipants.map { - let displayName = $0.displayName - return ($0.role == .caller, displayName) - }.sorted { - if $0.isCaller { return true } - if $1.isCaller { return false } - return $0.displayName < $1.displayName - } - - update.remoteHandle_ = ObvHandleImpl(type_: .generic, value: String(call.uuid)) - if call.direction == .incoming && sortedContacts.count == 1 { - update.localizedCallerName = sortedContacts.first?.displayName - if call.initialParticipantCount > 1 { - update.localizedCallerName! += " + \(call.initialParticipantCount - 1)" - } - } else if sortedContacts.count > 0 { - let contactName = sortedContacts.map({ $0.displayName }).joined(separator: ", ") - update.localizedCallerName = contactName - } else { - update.localizedCallerName = "..." - } - update.hasVideo = false - update.supportsGrouping = false - update.supportsUngrouping = false - update.supportsHolding = false - update.supportsDTMF = false - return update - } - - - static func make(with encryptedNotification: EncryptedPushNotification) -> (uuidForCallKit: UUID, obvCallUpdate: ObvCallUpdate) { - var update = ObvCallUpdateImpl() - let uuidForCallKit = UUID() - update.remoteHandle_ = ObvHandleImpl(type_: .generic, value: String(uuidForCallKit)) - update.localizedCallerName = "..." - update.hasVideo = false - update.supportsGrouping = false - update.supportsUngrouping = false - update.supportsHolding = false - update.supportsDTMF = false - return (uuidForCallKit, update) - } - -} - - -// MARK: - ContactInfo - -protocol ContactInfo { - var objectID: TypeSafeManagedObjectID { get } - var ownedIdentity: ObvCryptoId? { get } - var cryptoId: ObvCryptoId? { get } - var fullDisplayName: String { get } - var customDisplayName: String? { get } - var sortDisplayName: String { get } - var photoURL: URL? { get } - var identityColors: (background: UIColor, text: UIColor)? { get } - var gatheringPolicy: GatheringPolicy { get } -} - - -// MARK: - ContactInfoImpl - -struct ContactInfoImpl: ContactInfo { - var objectID: TypeSafeManagedObjectID - var ownedIdentity: ObvCryptoId? - var cryptoId: ObvCryptoId? - var fullDisplayName: String - var customDisplayName: String? - var sortDisplayName: String - var photoURL: URL? - var identityColors: (background: UIColor, text: UIColor)? - var gatheringPolicy: GatheringPolicy - - init(contact persistedContactIdentity: PersistedObvContactIdentity) { - self.objectID = persistedContactIdentity.typedObjectID - self.ownedIdentity = persistedContactIdentity.ownedIdentity?.cryptoId - self.cryptoId = persistedContactIdentity.cryptoId - self.fullDisplayName = persistedContactIdentity.fullDisplayName - self.customDisplayName = persistedContactIdentity.customDisplayName - self.sortDisplayName = persistedContactIdentity.sortDisplayName - self.photoURL = persistedContactIdentity.customPhotoURL ?? persistedContactIdentity.photoURL - self.identityColors = persistedContactIdentity.cryptoId.colors - self.gatheringPolicy = persistedContactIdentity.supportsCapability(.webrtcContinuousICE) ? .gatherContinually : .gatherOnce - } -} - - -// MARK: - GatheringPolicy - -extension GatheringPolicy { - var rtcPolicy: RTCContinualGatheringPolicy { - switch self { - case .gatherOnce: return .gatherOnce - case .gatherContinually: return .gatherContinually - } - } -} - - - -// MARK: - ObvPushRegistryHandler - -/// We create one instance of this class when instantiating the call coordinator. This instance handles the interaction with the PushKit registry as it register to VoIP push notifications and -/// Receives incoming pushes. When an incoming VoIP push notification is received, it reports it (as required by Apple specifications) then calls its delegate (the call coordinator). -fileprivate final class ObvPushRegistryHandler: NSObject, PKPushRegistryDelegate { - - private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: CallManager.self)) - - private let obvEngine: ObvEngine - private let cxObvProvider: CXObvProvider - private var didRegisterToVoIPNotifications = false - private var voipRegistry: PKPushRegistry! - private let internalQueue = DispatchQueue(label: "ObvPushRegistryHandler internal queue") - - weak var delegate: ObvPushRegistryHandlerDelegate? - - init(obvEngine: ObvEngine, cxObvProvider: CXObvProvider) { - self.obvEngine = obvEngine - self.cxObvProvider = cxObvProvider - super.init() - } - - - func registerForVoIPPushes(delegate: ObvPushRegistryHandlerDelegate) { - internalQueue.async { [weak self] in - guard let _self = self else { return } - guard !_self.didRegisterToVoIPNotifications else { return } - defer { _self.didRegisterToVoIPNotifications = true } - assert(_self.delegate == nil) - _self.delegate = delegate - os_log("☎️ Registering for VoIP push notifications", log: Self.log, type: .info) - _self.voipRegistry = PKPushRegistry(queue: _self.internalQueue) - _self.voipRegistry.delegate = self - _self.voipRegistry.desiredPushTypes = [.voIP] - } - } - - - func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) { - guard type == .voIP else { return } - let voipToken = pushCredentials.token - os_log("☎️✅ We received a voip notification token: %{public}@", log: Self.log, type: .info, voipToken.hexString()) - Task { - await ObvPushNotificationManager.shared.setCurrentVoipToken(to: voipToken) - await ObvPushNotificationManager.shared.tryToRegisterToPushNotifications() - } - } - - - // Implementing PKPushRegistryDelegate - - func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenFor type: PKPushType) { - guard type == .voIP else { return } - os_log("☎️✅❌ Push Registry did invalidate push token", log: Self.log, type: .info) - Task { - await ObvPushNotificationManager.shared.setCurrentVoipToken(to: nil) - await ObvPushNotificationManager.shared.tryToRegisterToPushNotifications() - } - } - - - func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) { - - os_log("☎️✅ We received a voip notification", log: Self.log, type: .info) - - guard let encryptedNotification = EncryptedPushNotification(dict: payload.dictionaryPayload) else { - os_log("☎️ Could not extract encrypted notification", log: Self.log, type: .fault) - // We are not be able to make a link between this call and the received StartCallMessageJSON, we report a cancelled call to respect PushKit constraints. - cxObvProvider.reportNewCancelledIncomingCall() - assertionFailure() - return - } - - // We request the immediate decryption of the encrypted notification. This call returns nothing. - // Eventually, we should receive a NewWebRTCMessageWasReceived notification from the discussion coordinator, - // Containing the decrypted data. Calling this method here is an optimization (we could also wait for the same - // Message arriving through the websocket). - - tryDecryptAndProcessEncryptedNotification(encryptedNotification) - - let (uuidForCallKit, callUpdate) = ObvCallUpdateImpl.make(with: encryptedNotification) - - os_log("☎️✅ We will report new incoming call to CallKit", log: Self.log, type: .info) - - cxObvProvider.reportNewIncomingCall(with: uuidForCallKit, update: callUpdate) { result in - switch result { - case .failure(let error): - os_log("☎️✅❌ We failed to report an incoming call: %{public}@", log: Self.log, type: .info, error.localizedDescription) - Task { [weak self] in - await self?.delegate?.failedToReportNewIncomingCallToCallKit(callUUID: uuidForCallKit, error: error) - DispatchQueue.main.async { - completion() - } - } - case .success: - Task { [weak self] in - os_log("☎️✅ We successfully reported an incoming call to CallKit", log: Self.log, type: .info) - await self?.delegate?.successfullyReportedNewIncomingCallToCallKit(uuidForCallKit: uuidForCallKit, messageIdentifierFromEngine: encryptedNotification.messageIdentifierFromEngine) - DispatchQueue.main.async { - completion() - } - } - } - } - - } - - - private func tryDecryptAndProcessEncryptedNotification(_ encryptedNotification: EncryptedPushNotification) { - let obvMessage: ObvMessage - do { - obvMessage = try obvEngine.decrypt(encryptedPushNotification: encryptedNotification) - } catch { - os_log("☎️ Could not decrypt received voip notification, the contained message has certainly been decrypted after being received by the webSocket", log: Self.log, type: .info) - return - } - // We send the obvMessage to the PersistedDiscussionsUpdatesCoordinator, who will pass us back an StartCallMessageJSON - ObvMessengerInternalNotification.newObvMessageWasReceivedViaPushKitNotification(obvMessage: obvMessage) - .postOnDispatchQueue() - } - -} - - -protocol ObvPushRegistryHandlerDelegate: IncomingCallDelegate { - - func failedToReportNewIncomingCallToCallKit(callUUID: UUID, error: Error) async - func successfullyReportedNewIncomingCallToCallKit(uuidForCallKit: UUID, messageIdentifierFromEngine: Data) async - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipant.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipant.swift deleted file mode 100644 index 9560936c..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipant.swift +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import UIKit -import ObvTypes -import ObvEngine -import ObvUICoreData - - -protocol CallParticipant: AnyObject { - - var uuid: UUID { get } - var role: Role { get } - func getPeerState() async -> PeerState - func getContactIsMuted() async -> Bool - - var userId: OlvidUserId { get } - var info: ParticipantInfo? { get } - var ownedIdentity: ObvCryptoId { get } - var remoteCryptoId: ObvCryptoId { get } - var gatheringPolicy: GatheringPolicy? { get async } - - /// Use to be sent to others participants, we do not want to send the displayName that can include custom name - var fullDisplayName: String { get } - var displayName: String { get } - var photoURL: URL? { get } - var identityColors: (background: UIColor, text: UIColor)? { get } - func setTurnCredentials(to turnCredentials: TurnCredentials) async - - func setPeerState(to state: PeerState) async throws - - func localUserAcceptedIncomingCallFromThisCallParticipant() async throws - func setTurnCredentialsAndCreateUnderlyingPeerConnection(turnCredentials: TurnCredentials) async throws - - func updateRecipient(newParticipantOfferMessage: NewParticipantOfferMessageJSON, turnCredentials: TurnCredentials) async throws - - func restartIceIfAppropriate() async throws - func closeConnection() async throws - - func sendUpdateParticipantsMessageJSON(callParticipants: [CallParticipant]) async throws - func sendDataChannelMessage(_ message: WebRTCDataChannelMessageJSON) async throws - - var isMuted: Bool { get async } - func mute() async - func unmute() async - - func processIceCandidatesJSON(message: IceCandidateJSON) async throws - func processRemoveIceCandidatesMessageJSON(message: RemoveIceCandidatesMessageJSON) async -} - - -// MARK: - Role - -enum Role { - case none - case caller - case recipient -} - - -// MARK: - PeerState - -enum PeerState: Hashable, CustomDebugStringConvertible { - case initial - // States for the caller only (during this time, the recipient stays in the initial state) - case startCallMessageSent - case ringing - case busy - case callRejected - // States common to the caller and the recipient - case connectingToPeer - case connected - case reconnecting - case hangedUp - case kicked - case failed - - var debugDescription: String { - switch self { - case .initial: return "initial" - case .startCallMessageSent: return "startCallMessageSent" - case .busy: return "busy" - case .reconnecting: return "reconnecting" - case .ringing: return "ringing" - case .callRejected: return "callRejected" - case .connectingToPeer: return "connectingToPeer" - case .connected: return "connected" - case .hangedUp: return "hangedUp" - case .kicked: return "kicked" - case .failed: return "failed" - } - } - - var isFinalState: Bool { - switch self { - case .callRejected, .hangedUp, .kicked, .failed: return true - case .initial, .startCallMessageSent, .ringing, .busy, .connectingToPeer, .connected, .reconnecting: return false - } - } - - var localizedString: String { - switch self { - case .initial: return NSLocalizedString("CALL_STATE_NEW", comment: "") - case .startCallMessageSent: return NSLocalizedString("CALL_STATE_INCOMING_CALL_MESSAGE_WAS_POSTED", comment: "") - case .ringing: return NSLocalizedString("CALL_STATE_RINGING", comment: "") - case .busy: return NSLocalizedString("CALL_STATE_BUSY", comment: "") - case .callRejected: return NSLocalizedString("CALL_STATE_CALL_REJECTED", comment: "") - case .connectingToPeer: return NSLocalizedString("CALL_STATE_CONNECTING_TO_PEER", comment: "") - case .connected: return NSLocalizedString("SECURE_CALL_IN_PROGRESS", comment: "") - case .reconnecting: return NSLocalizedString("CALL_STATE_RECONNECTING", comment: "") - case .hangedUp: return NSLocalizedString("CALL_STATE_HANGED_UP", comment: "") - case .kicked: return NSLocalizedString("CALL_STATE_KICKED", comment: "") - case .failed: return NSLocalizedString("FAILED", comment: "") - } - } - -} - - -// MARK: - TurnCredentials and extension - -struct TurnCredentials { - let turnUserName: String - let turnPassword: String - let turnServers: [String]? -} - - -extension ObvTurnCredentials { - - var turnCredentialsForCaller: TurnCredentials { - TurnCredentials(turnUserName: callerUsername, - turnPassword: callerPassword, - turnServers: turnServersURL) - } - - var turnCredentialsForRecipient: TurnCredentials { - TurnCredentials(turnUserName: recipientUsername, - turnPassword: recipientPassword, - turnServers: turnServersURL) - } - -} - -extension StartCallMessageJSON { - - var turnCredentials: TurnCredentials { - TurnCredentials(turnUserName: turnUserName, - turnPassword: turnPassword, - turnServers: turnServers) - } - -} - - -// MARK: - ParticipantInfo - -struct ParticipantInfo { - let contactObjectID: TypeSafeManagedObjectID - let isCaller: Bool -} - - -// MARK: - GatheringPolicy - -enum GatheringPolicy: Int { - case gatherOnce = 1 - case gatherContinually = 2 - - var localizedDescription: String { - switch self { - case .gatherOnce: return "gatherOnce" - case .gatherContinually: return "gatherContinually" - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipantDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipantDelegate.swift deleted file mode 100644 index 019c41f2..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipantDelegate.swift +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import ObvTypes -import WebRTC -import ObvUICoreData - - -// MARK: - CallParticipantDelegate - -protocol CallParticipantDelegate: AnyObject { - - var isOutgoingCall: Bool { get } - - func participantWasUpdated(callParticipant: CallParticipantImpl, updateKind: CallParticipantUpdateKind) async - - func connectionIsChecking(for callParticipant: CallParticipant) - func connectionIsConnected(for callParticipant: CallParticipant, oldParticipantState: PeerState) async - func connectionWasClosed(for callParticipant: CallParticipantImpl) async - - func dataChannelIsOpened(for callParticipant: CallParticipant) async - - func updateParticipants(with newCallParticipants: [ContactBytesAndNameJSON]) async throws - func relay(from: ObvCryptoId, to: ObvCryptoId, messageType: WebRTCMessageJSON.MessageType, messagePayload: String) async - func receivedRelayedMessage(from: ObvCryptoId, messageType: WebRTCMessageJSON.MessageType, messagePayload: String) async - - func sendStartCallMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription, turnCredentials: TurnCredentials) async throws - func sendAnswerCallMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription) async throws - func sendNewParticipantOfferMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription) async throws - func sendNewParticipantAnswerMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription) async throws - func sendReconnectCallMessage(to callParticipant: CallParticipant, sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async throws - func sendNewIceCandidateMessage(to callParticipant: CallParticipant, iceCandidate: RTCIceCandidate) async throws - func sendRemoveIceCandidatesMessages(to callParticipant: CallParticipant, candidates: [RTCIceCandidate]) async throws - - func shouldISendTheOfferToCallParticipant(cryptoId: ObvCryptoId) -> Bool - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipantImpl.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipantImpl.swift deleted file mode 100644 index 946ebfa3..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipantImpl.swift +++ /dev/null @@ -1,598 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import os.log -import ObvTypes -import OlvidUtils -import WebRTC -import ObvUICoreData - - -// MARK: - CallParticipantImpl - -actor CallParticipantImpl: CallParticipant, ObvErrorMaker { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: CallParticipantImpl.self)) - - let uuid: UUID = UUID() - let role: Role - let ownRole: Role // Role of the owned identity - let userId: OlvidUserId - private var state: PeerState - - static let errorDomain = "CallParticipantImpl" - - private var contactIsMuted = false - - /// The only case where the `peerConnectionHolder` can be nil is when we receive pushkit notification for an incoming call - /// And cannot immediately determine the caller. - private var peerConnectionHolder: WebrtcPeerConnectionHolder? - - private var connectingTimeoutTimer: Timer? - private static let connectingTimeoutInterval: TimeInterval = 15.0 // 15 seconds - - private func setPeerConnectionHolder(to peerConnectionHolder: WebrtcPeerConnectionHolder) async { - assert(self.peerConnectionHolder == nil) - self.peerConnectionHolder = peerConnectionHolder - } - - - var gatheringPolicy: GatheringPolicy? { - get async { - await peerConnectionHolder?.gatheringPolicy - } - } - - func getPeerState() async -> PeerState { - return state - } - - private weak var delegate: CallParticipantDelegate? - - - func setDelegate(to delegate: CallParticipantDelegate) async { - self.delegate = delegate - } - - func getContactIsMuted() async -> Bool { - return contactIsMuted - } - - nonisolated var contactInfo: ContactInfo? { - switch userId { - case .known(let contactObjectID, _, _, _): - return CallHelper.getContactInfo(contactObjectID) - case .unknown: - return nil - } - } - - - nonisolated var ownedIdentity: ObvCryptoId { - userId.ownCryptoId - } - - - nonisolated var remoteCryptoId: ObvCryptoId { - userId.remoteCryptoId - } - - - nonisolated var fullDisplayName: String { - switch userId { - case .known(_, _, _, displayName: let displayName): - return contactInfo?.fullDisplayName ?? displayName - case .unknown(ownCryptoId: _, remoteCryptoId: _, displayName: let displayName): - return displayName - } - } - - - nonisolated var displayName: String { - switch userId { - case .known(contactObjectID: _, ownCryptoId: _, remoteCryptoId: _, displayName: let displayName): - return contactInfo?.customDisplayName ?? contactInfo?.fullDisplayName ?? displayName - case .unknown(ownCryptoId: _, remoteCryptoId: _, displayName: let displayName): - return displayName - } - } - - - nonisolated var photoURL: URL? { contactInfo?.photoURL } - - nonisolated var identityColors: (background: UIColor, text: UIColor)? { contactInfo?.identityColors } - - - nonisolated var info: ParticipantInfo? { - if let contactObjectID = userId.contactObjectID { - return ParticipantInfo(contactObjectID: contactObjectID, isCaller: role == .caller) - } else { - return nil - } - } - - - /// Create the `caller` participant for an incoming call when the contact ID of this caller is already known. - static func createCaller(startCallMessage: StartCallMessageJSON, contactId: OlvidUserId) async -> Self { - let callParticipant = self.init(role: .caller, ownRole: .recipient, userId: contactId) - await callParticipant.setTurnCredentials(to: startCallMessage.turnCredentials) - await callParticipant.setPeerConnectionHolder(to: WebrtcPeerConnectionHolder(startCallMessage: startCallMessage, delegate: callParticipant)) - return callParticipant - } - - - /// Create a `recipient` participant for an outgoing call - static func createRecipientForOutgoingCall(contactId: OlvidUserId, gatheringPolicy: GatheringPolicy) async -> Self { - let callParticipant = self.init(role: .recipient, ownRole: .caller, userId: contactId) - await callParticipant.setPeerConnectionHolder(to: WebrtcPeerConnectionHolder(gatheringPolicy: gatheringPolicy, delegate: callParticipant)) - return callParticipant - } - - - /// Create a `recipient` participant for an incoming call - static func createRecipientForIncomingCall(contactId: OlvidUserId, gatheringPolicy: GatheringPolicy) async -> Self { - let callParticipant = self.init(role: .recipient, ownRole: .recipient, userId: contactId) - await callParticipant.setPeerConnectionHolder(to: WebrtcPeerConnectionHolder(gatheringPolicy: gatheringPolicy, delegate: callParticipant)) - return callParticipant - } - - - /// Update a recipient in a multi-user incoming call where we also are a recipient (not the caller), and not in charge of the offer. - func updateRecipient(newParticipantOfferMessage: NewParticipantOfferMessageJSON, turnCredentials: TurnCredentials) async throws { - assert(role == .recipient) - assert(self.peerConnectionHolder != nil) - self.turnCredentials = turnCredentials - try await self.peerConnectionHolder?.setRemoteDescriptionAndTurnCredentialsThenCreateTheUnderlyingPeerConnectionIfRequired(newParticipantOfferMessage: newParticipantOfferMessage, turnCredentials: turnCredentials) - } - - - private init(role: Role, ownRole: Role, userId: OlvidUserId) { - self.role = role - self.ownRole = ownRole - self.userId = userId - self.state = .initial - } - - - func setPeerState(to newState: PeerState) async throws { - guard newState != self.state else { return } - os_log("☎️ WebRTCCall participant will change state: %{public}@ --> %{public}@", log: log, type: .info, self.state.debugDescription, newState.debugDescription) - self.state = newState - - invalidateConnectingTimeout() - - switch self.state { - case .startCallMessageSent: - break - case .ringing: - break - case .connectingToPeer, .reconnecting: - scheduleConnectingTimeout() - case .connected: - break - case .busy, .callRejected, .hangedUp, .kicked, .failed, .initial: - break - } - if self.state.isFinalState { - try await closeConnection() - } - - await delegate?.participantWasUpdated(callParticipant: self, updateKind: .state(newState: state)) - } - - func localUserAcceptedIncomingCallFromThisCallParticipant() async throws { - assert(self.role == .caller) - assert(self.ownRole == .recipient) - guard let peerConnectionHolder = self.peerConnectionHolder else { - assertionFailure() - throw Self.makeError(message: "No peer connection holder") - } - try await peerConnectionHolder.createPeerConnectionIfRequiredAfterAcceptingAnIncomingCall() - } - - - /// This method is two situations: - /// - During an outgoing call, when setting the turn credential of a call participant. - /// - During a multi-users incoming call, when we are in charge of sending the offer to another recipient (who isn't the caller). - func setTurnCredentialsAndCreateUnderlyingPeerConnection(turnCredentials: TurnCredentials) async throws { - assert(role == .recipient) - self.turnCredentials = turnCredentials - assert(self.peerConnectionHolder != nil) - try await self.peerConnectionHolder?.setTurnCredentialsAndCreateUnderlyingPeerConnectionIfRequired(turnCredentials) - } - - - func setRemoteDescription(sessionDescription: RTCSessionDescription) async throws { - guard let peerConnectionHolder = self.peerConnectionHolder else { - assertionFailure() - throw Self.makeError(message: "Cannot set remote description, the peer connection holder is nil") - } - try await peerConnectionHolder.setRemoteDescription(sessionDescription) - } - - - func handleReceivedRestartSdp(sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async throws { - guard let peerConnectionHolder = self.peerConnectionHolder else { - throw Self.makeError(message: "No peer connection holder") - } - try await peerConnectionHolder.handleReceivedRestartSdp(sessionDescription: sessionDescription, - reconnectCounter: reconnectCounter, - peerReconnectCounterToOverride: peerReconnectCounterToOverride) - } - - - func reconnectAfterConnectionLoss() async throws { - guard [PeerState.connectingToPeer, .connected, .reconnecting].contains(self.state) else { return } - try await setPeerState(to: .reconnecting) - guard let peerConnectionHolder = self.peerConnectionHolder else { - assertionFailure() - throw Self.makeError(message: "No peer connection holder") - } - try await peerConnectionHolder.restartIce() - } - - - /// Called when a network connection status changed - func restartIceIfAppropriate() async throws { - guard let peerConnectionHolder = self.peerConnectionHolder else { - throw Self.makeError(message: "No peer connection holder") - } - guard [.connected, .connectingToPeer, .reconnecting].contains(self.state) else { return } - try await peerConnectionHolder.restartIce() - } - - - func closeConnection() async throws { - guard let peerConnectionHolder = self.peerConnectionHolder else { - os_log("☎️🛑 No need to close connection: peer connection holder is nil", log: log, type: .info) - return - } - try await peerConnectionHolder.close() - } - - - var isMuted: Bool { - get async { - await peerConnectionHolder?.isAudioTrackMuted ?? false - } - } - - - func mute() async { - guard let peerConnectionHolder = peerConnectionHolder else { return } - await peerConnectionHolder.muteAudioTracks() - await sendMutedMessageJSON() - } - - - func unmute() async { - guard let peerConnectionHolder = peerConnectionHolder else { return } - await peerConnectionHolder.unmuteAudioTracks() - await sendMutedMessageJSON() - } - - - private var turnCredentials: TurnCredentials? - - - func setTurnCredentials(to turnCredentials: TurnCredentials) async { - self.turnCredentials = turnCredentials - } - - - private func processMutedMessageJSON(message: MutedMessageJSON) async { - guard contactIsMuted != message.muted else { return } - contactIsMuted = message.muted - await delegate?.participantWasUpdated(callParticipant: self, updateKind: .contactMuted) - } - - - private func processUpdateParticipantsMessageJSON(message: UpdateParticipantsMessageJSON) async throws { - // Check that the participant list is indeed sent by the caller (and thus, not by a "simple" participant). - guard role == .caller else { - assertionFailure() - return - } - try await delegate?.updateParticipants(with: message.callParticipants) - } - - - private func processRelayMessageJSON(message: RelayMessageJSON) async { - guard role == .recipient else { return } - - do { - let fromId = self.remoteCryptoId - let toId = try ObvCryptoId(identity: message.to) - guard let messageType = WebRTCMessageJSON.MessageType(rawValue: message.relayedMessageType) else { throw Self.makeError(message: "Could not parse WebRTCMessageJSON.MessageType") } - let messagePayload = message.serializedMessagePayload - await delegate?.relay(from: fromId, to: toId, messageType: messageType, messagePayload: messagePayload) - } catch { - os_log("☎️ Could not read received RelayMessageJSON: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - } - - - private func processRelayedMessageJSON(message: RelayedMessageJSON) async throws { - - guard role == .caller else { return } - - do { - let fromId = try ObvCryptoId(identity: message.from) - guard let messageType = WebRTCMessageJSON.MessageType(rawValue: message.relayedMessageType) else { - throw Self.makeError(message: "Could not compute message type") - } - let messagePayload = message.serializedMessagePayload - await delegate?.receivedRelayedMessage(from: fromId, messageType: messageType, messagePayload: messagePayload) - } catch { - os_log("☎️ Could not read received RelayedMessageJSON: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - } - - - private func processHangedUpMessage(message: HangedUpDataChannelMessageJSON) async throws { - try await setPeerState(to: .hangedUp) - } - - - func sendDataChannelMessage(_ message: WebRTCDataChannelMessageJSON) async throws { - guard let peerConnectionHolder = self.peerConnectionHolder else { assertionFailure(); return } - try await peerConnectionHolder.sendDataChannelMessage(message) - } - - - func sendUpdateParticipantsMessageJSON(callParticipants: [CallParticipant]) async throws { - let message = try await UpdateParticipantsMessageJSON(callParticipants: callParticipants).embedInWebRTCDataChannelMessageJSON() - try await sendDataChannelMessage(message) - } - - - func processIceCandidatesJSON(message: IceCandidateJSON) async throws { - guard let peerConnectionHolder = self.peerConnectionHolder else { assertionFailure(); return } - try await peerConnectionHolder.addIceCandidate(iceCandidate: message.iceCandidate) - } - - - func processRemoveIceCandidatesMessageJSON(message: RemoveIceCandidatesMessageJSON) async { - guard let peerConnectionHolder = self.peerConnectionHolder else { return } - await peerConnectionHolder.removeIceCandidates(iceCandidates: message.iceCandidates) - } - -} - - -// MARK: - Timers - -extension CallParticipantImpl { - - private func scheduleConnectingTimeout() { - invalidateConnectingTimeout() - let log = self.log - os_log("☎️ Schedule connecting timeout timer", log: log, type: .info) - let nextConnectingTimeoutInterval = CallParticipantImpl.connectingTimeoutInterval * Double.random(in: 1.0..<1.3) // Approx. between 15 and 20 seconds - let timer = Timer.init(timeInterval: nextConnectingTimeoutInterval, repeats: false) { timer in - guard timer.isValid else { return } - Task { [weak self] in await self?.connectingTimeoutTimerFired() } - } - self.connectingTimeoutTimer = timer - RunLoop.main.add(timer, forMode: .default) - } - - - private func invalidateConnectingTimeout() { - if let timer = self.connectingTimeoutTimer { - os_log("☎️ Invalidating connecting timeout timer", log: log, type: .info) - timer.invalidate() - self.connectingTimeoutTimer = nil - } - } - - - private func connectingTimeoutTimerFired() async { - guard [PeerState.connectingToPeer, .reconnecting].contains(self.state) else { return } - os_log("☎️ Reconnection timer fired -> trying to reconnect after connection loss", log: log, type: .info) - do { - try await reconnectAfterConnectionLoss() - } catch { - os_log("☎️ Could not reconnect: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - -} - - -// MARK: - Implementing WebrtcPeerConnectionHolderDelegate - -extension CallParticipantImpl: WebrtcPeerConnectionHolderDelegate { - - func shouldISendTheOfferToCallParticipant() async -> Bool { - guard let delegate = delegate else { assertionFailure(); return false } - return delegate.shouldISendTheOfferToCallParticipant(cryptoId: userId.remoteCryptoId) - } - - - func peerConnectionStateDidChange(newState: RTCIceConnectionState) async { - switch newState { - case .new: return - case .checking: - delegate?.connectionIsChecking(for: self) - case .connected: - let oldState = self.state - try? await setPeerState(to: .connected) - await delegate?.connectionIsConnected(for: self, oldParticipantState: oldState) - case .failed, .disconnected: - try? await reconnectAfterConnectionLoss() - case .closed: - await delegate?.connectionWasClosed(for: self) - case .completed, .count: - return - @unknown default: - assertionFailure() - } - } - - - func dataChannel(of peerConnectionHolder: WebrtcPeerConnectionHolder, didReceiveMessage message: WebRTCDataChannelMessageJSON) async { - do { - switch message.messageType { - - case .muted: - let mutedMessage = try MutedMessageJSON.jsonDecode(serializedMessage: message.serializedMessage) - os_log("☎️ MutedMessageJSON received", log: log, type: .info) - await processMutedMessageJSON(message: mutedMessage) - - case .updateParticipant: - let updateParticipantsMessage = try UpdateParticipantsMessageJSON.jsonDecode(serializedMessage: message.serializedMessage) - os_log("☎️ UpdateParticipantsMessageJSON received", log: log, type: .info) - try await processUpdateParticipantsMessageJSON(message: updateParticipantsMessage) - - case .relayMessage: - let relayMessage = try RelayMessageJSON.jsonDecode(serializedMessage: message.serializedMessage) - os_log("☎️ RelayMessageJSON received", log: log, type: .info) - await processRelayMessageJSON(message: relayMessage) - - case .relayedMessage: - let relayedMessage = try RelayedMessageJSON.jsonDecode(serializedMessage: message.serializedMessage) - os_log("☎️ RelayedMessageJSON received", log: log, type: .info) - try await processRelayedMessageJSON(message: relayedMessage) - - case .hangedUpMessage: - let hangedUpMessage = try HangedUpDataChannelMessageJSON.jsonDecode(serializedMessage: message.serializedMessage) - os_log("☎️ HangedUpDataChannelMessageJSON received", log: log, type: .info) - try await processHangedUpMessage(message: hangedUpMessage) - - } - } catch { - os_log("☎️ Failed to parse or process WebRTCDataChannelMessageJSON: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - - - func dataChannel(of peerConnectionHolder: WebrtcPeerConnectionHolder, didChangeState state: RTCDataChannelState) async { - os_log("☎️ Data channel changed state. New state is %{public}@", log: log, type: .info, state.description) - switch state { - case .open: - await delegate?.dataChannelIsOpened(for: self) - await sendMutedMessageJSON() - case .connecting, .closing, .closed: - break - @unknown default: - assertionFailure() - } - } - - func sendMutedMessageJSON() async { - let message: WebRTCDataChannelMessageJSON - do { - message = try await MutedMessageJSON(muted: isMuted).embedInWebRTCDataChannelMessageJSON() - } catch { - os_log("☎️ Could not send MutedMessageJSON: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - return - } - do { - try await peerConnectionHolder?.sendDataChannelMessage(message) - } catch { - os_log("☎️ Could not send data channel message: %{public}@", log: log, type: .fault, error.localizedDescription) - return - } - } - - - func sendNewIceCandidateMessage(candidate: RTCIceCandidate) async throws { - try await delegate?.sendNewIceCandidateMessage(to: self, iceCandidate: candidate) - } - - - func sendRemoveIceCandidatesMessages(candidates: [RTCIceCandidate]) async throws { - try await delegate?.sendRemoveIceCandidatesMessages(to: self, candidates: candidates) - } - - - /// Send the local description to the call participant corresponding to `self` - func sendLocalDescription(sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async { - - os_log("☎️ Calling sendLocalDescription for a participant", log: log, type: .info) - - guard let delegate = self.delegate else { assertionFailure(); return } - - do { - switch self.state { - case .initial: - os_log("☎️ Sending peer the following SDP: %{public}@", log: log, type: .info, sessionDescription.sdp) - switch ownRole { - case .caller: - guard let turnCredentials = self.turnCredentials else { assertionFailure(); throw Self.makeError(message: "Turn credentials are required") } - try await delegate.sendStartCallMessage(to: self, sessionDescription: sessionDescription, turnCredentials: turnCredentials) - try await setPeerState(to: .startCallMessageSent) - case .recipient: - switch self.role { - case .caller: - try await delegate.sendAnswerCallMessage(to: self, sessionDescription: sessionDescription) - try await setPeerState(to: .connectingToPeer) - case .recipient: - if await shouldISendTheOfferToCallParticipant() { - try await delegate.sendNewParticipantOfferMessage(to: self, sessionDescription: sessionDescription) - try await self.setPeerState(to: .startCallMessageSent) - } else { - try await delegate.sendNewParticipantAnswerMessage(to: self, sessionDescription: sessionDescription) - try await self.setPeerState(to: .connectingToPeer) - } - case .none: - assertionFailure() - return - } - case .none: - assertionFailure() - } - case .connected, .reconnecting: - os_log("☎️ Sending peer the following restart SDP: %{public}@", log: log, type: .info, sessionDescription.sdp) - try await delegate.sendReconnectCallMessage(to: self, sessionDescription: sessionDescription, reconnectCounter: reconnectCounter, peerReconnectCounterToOverride: peerReconnectCounterToOverride) - case .startCallMessageSent, .ringing, .busy, .callRejected, .connectingToPeer, .hangedUp, .kicked, .failed: - break // Do nothing - } - } catch { - try? await self.setPeerState(to: .failed) - assertionFailure() - return - } - - } - -} - - -fileprivate extension IceCandidateJSON { - var iceCandidate: RTCIceCandidate { - RTCIceCandidate(sdp: sdp, sdpMLineIndex: sdpMLineIndex, sdpMid: sdpMid) - } -} - -fileprivate extension RemoveIceCandidatesMessageJSON { - var iceCandidates: [RTCIceCandidate] { - candidates.map { $0.iceCandidate } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipantUpdateKind.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipantUpdateKind.swift deleted file mode 100644 index 14c6667d..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallParticipant/CallParticipantUpdateKind.swift +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation - - -// MARK: - CallParticipantUpdateKind - -enum CallParticipantUpdateKind { - case state(newState: PeerState) - case contactID - case contactMuted -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/CXProvider+CallProviderProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/CXProvider+CallProviderProtocol.swift new file mode 100644 index 00000000..9c152e81 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/CXProvider+CallProviderProtocol.swift @@ -0,0 +1,24 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CallKit + + +extension CXProvider: CallProviderProtocol {} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/CallProviderHolder.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/CallProviderHolder.swift new file mode 100644 index 00000000..ed6d1a39 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/CallProviderHolder.swift @@ -0,0 +1,245 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CallKit +import AVFoundation +import ObvSettings + + +protocol CallProviderHolderDelegate: AnyObject { + + // Handling Provider Events + // func providerDidBegin(_ provider: CallProviderHolder) async + func providerDidReset(_ provider: CallProviderHolder) async + + // Determining the Execution of Transactions + // func provider(_ provider: CallProviderHolder, execute transaction: CXTransaction) -> Bool + + // Handling Call Actions + func provider(_ provider: CallProviderHolder, perform: CXStartCallAction) async + func provider(_ provider: CallProviderHolder, perform: CXAnswerCallAction) async + func provider(_ provider: CallProviderHolder, perform: CXEndCallAction) async + //func provider(_ provider: CallProviderHolder, perform: CXSetHeldCallAction) async + func provider(_ provider: CallProviderHolder, perform: CXSetMutedCallAction) async + //func provider(_ provider: CallProviderHolder, perform: CXSetGroupCallAction) async + //func provider(_ provider: CallProviderHolder, perform: CXPlayDTMFCallAction) async + //func provider(_ provider: CallProviderHolder, timedOutPerforming action: CXAction) async + + // Handling Changes to Audio Session Activation State + func provider(_ provider: CallProviderHolder, didActivate audioSession: AVAudioSession) async + func provider(_ provider: CallProviderHolder, didDeactivate audioSession: AVAudioSession) async +} + + +/// Subclass of `NSObject` as this class implements `CXProviderDelegate`. +final class CallProviderHolder: NSObject { + + private let cxProvider: CXProvider + private let nxProvider: NCXProvider + + var provider: CallProviderProtocol { + ObvUICoreDataConstants.useCallKit ? cxProvider : nxProvider + } + + var ncxCallControllerDelegate: NCXCallControllerDelegate { + nxProvider + } + + private weak var delegate: CallProviderHolderDelegate? + + /// The app's provider configuration, representing its CallKit capabilities + /// A `CXProviderConfiguration` object controls the native call UI for incoming and outgoing calls. + private static let providerConfiguration: CXProviderConfiguration = { + let providerConfiguration = CXProviderConfiguration() + providerConfiguration.iconTemplateImageData = UIImage(named: "olvid-callkit-logo")?.pngData() + providerConfiguration.maximumCallGroups = 1 + providerConfiguration.maximumCallsPerCallGroup = 1 + providerConfiguration.supportedHandleTypes = [.generic] + providerConfiguration.supportsVideo = false + providerConfiguration.includesCallsInRecents = ObvMessengerSettings.VoIP.isIncludesCallsInRecentsEnabled + return providerConfiguration + }() + + + override init() { + self.cxProvider = .init(configuration: Self.providerConfiguration) + self.nxProvider = NCXProvider() + super.init() + self.cxProvider.setDelegate(self, queue: nil) + self.nxProvider.setDelegate(self) + } + + + func setDelegate(_ delegate: CallProviderHolderDelegate?) { + self.delegate = delegate + } + +} + + +// MARK: - Implementing CXProviderDelegate + +extension CallProviderHolder: CXProviderDelegate { + + // Handling Provider Events + + func providerDidReset(_ provider: CXProvider) { + genericProviderDidReset(provider) + } + + // Handling Call Actions + + func provider(_ provider: CXProvider, perform action: CXStartCallAction) { + genericProvider(provider, perform: action) + } + + func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) { + genericProvider(provider, perform: action) + } + + func provider(_ provider: CXProvider, perform action: CXEndCallAction) { + genericProvider(provider, perform: action) + } + + func provider(_ provider: CXProvider, perform action: CXSetMutedCallAction) { + genericProvider(provider, perform: action) + } + + // Handling Changes to Audio Session Activation State + + func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) { + genericProvider(provider, didActivate: audioSession) + } + + func provider(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession) { + genericProvider(provider, didDeactivate: audioSession) + } + +} + + +// MARK: - Implementing NCXProviderDelegate + +extension CallProviderHolder: NCXProviderDelegate { + + // Handling Call Actions + + func provider(_ provider: NCXProvider, perform action: CXStartCallAction) { + genericProvider(provider, perform: action) + } + + func provider(_ provider: NCXProvider, perform action: CXAnswerCallAction) { + genericProvider(provider, perform: action) + } + + func provider(_ provider: NCXProvider, perform action: CXEndCallAction) { + genericProvider(provider, perform: action) + } + + func provider(_ provider: NCXProvider, perform action: CXSetMutedCallAction) { + genericProvider(provider, perform: action) + } + + + // Handling Changes to Audio Session Activation State + + func provider(_ provider: NCXProvider, didActivate audioSession: AVAudioSession) { + genericProvider(provider, didActivate: audioSession) + } + + func provider(_ provider: NCXProvider, didDeactivate audioSession: AVAudioSession) { + genericProvider(provider, didDeactivate: audioSession) + } + +} + + +// MARK: - For both CXProviderDelegate and NCXProviderDelegate + +extension CallProviderHolder { + + // Handling Provider Events + + private func genericProviderDidReset(_ provider: CallProviderProtocol) { + guard let delegate else { assertionFailure(); return } + Task { [weak self] in + guard let self else { return } + await delegate.providerDidReset(self) + } + } + + // Handling Call Actions + + private func genericProvider(_ provider: CallProviderProtocol, perform action: CXStartCallAction) { + guard let delegate else { assertionFailure(); return } + Task { [weak self] in + guard let self else { return } + await delegate.provider(self, perform: action) + } + } + + + private func genericProvider(_ provider: CallProviderProtocol, perform action: CXAnswerCallAction) { + guard let delegate else { assertionFailure(); return } + Task { [weak self] in + guard let self else { return } + await delegate.provider(self, perform: action) + } + } + + + private func genericProvider(_ provider: CallProviderProtocol, perform action: CXEndCallAction) { + guard let delegate else { assertionFailure(); return } + Task { [weak self] in + guard let self else { return } + await delegate.provider(self, perform: action) + } + } + + + private func genericProvider(_ provider: CallProviderProtocol, perform action: CXSetMutedCallAction) { + guard let delegate else { assertionFailure(); return } + Task { [weak self] in + guard let self else { return } + await delegate.provider(self, perform: action) + } + } + + + // Handling Changes to Audio Session Activation State + + private func genericProvider(_ provider: CallProviderProtocol, didActivate audioSession: AVAudioSession) { + guard let delegate else { assertionFailure(); return } + Task { [weak self] in + guard let self else { return } + await delegate.provider(self, didActivate: audioSession) + } + } + + + private func genericProvider(_ provider: CallProviderProtocol, didDeactivate audioSession: AVAudioSession) { + guard let delegate else { assertionFailure(); return } + Task { [weak self] in + guard let self else { return } + await delegate.provider(self, didDeactivate: audioSession) + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/CallProviderProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/CallProviderProtocol.swift new file mode 100644 index 00000000..d1bad7c9 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/CallProviderProtocol.swift @@ -0,0 +1,34 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CallKit + + +protocol CallProviderProtocol { + + /// We do *not* use the async way for reporting new incoming call. We had too much issues when calling this method on the `CXProvider` while in the background. + func reportNewIncomingCall(with UUID: UUID, update: CXCallUpdate,completion: @escaping (Error?) -> Void) + + func reportOutgoingCall(with: UUID, startedConnectingAt: Date?) + func reportOutgoingCall(with: UUID, connectedAt: Date?) + func reportCall(with: UUID, updated: CXCallUpdate) + func reportCall(with: UUID, endedAt: Date?, reason: CXCallEndedReason) + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/NCXProvider.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/NCXProvider.swift new file mode 100644 index 00000000..97439462 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProvider/NCXProvider.swift @@ -0,0 +1,113 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CallKit +import AVFoundation + + +protocol NCXProviderDelegate: AnyObject { + + // Handling Call Actions + func provider(_ provider: NCXProvider, perform action: CXStartCallAction) + func provider(_ provider: NCXProvider, perform action: CXAnswerCallAction) + func provider(_ provider: NCXProvider, perform action: CXEndCallAction) + func provider(_ provider: NCXProvider, perform action: CXSetMutedCallAction) + + // Handling Changes to Audio Session Activation State (only used in the CallKit case) + func provider(_ provider: NCXProvider, didActivate audioSession: AVAudioSession) + func provider(_ provider: NCXProvider, didDeactivate audioSession: AVAudioSession) + +} + + + + + +final class NCXProvider: CallProviderProtocol { + + private weak var delegate: NCXProviderDelegate? + + func setDelegate(_ delegate: NCXProviderDelegate) { + self.delegate = delegate + } + + + func reportNewIncomingCall(with UUID: UUID, update: CXCallUpdate, completion: @escaping (Error?) -> Void) { + // We do nothing + } + + + func reportOutgoingCall(with: UUID, startedConnectingAt: Date?) { + // We do nothing + } + + + func reportOutgoingCall(with: UUID, connectedAt: Date?) { + // We do nothing + } + + + func reportCall(with: UUID, updated: CXCallUpdate) { + // We do nothing + } + + + func reportCall(with: UUID, endedAt: Date?, reason: CXCallEndedReason) { + // We do nothing + } + +} + + +// MARK: - Implementing NCXCallControllerDelegate + +extension NCXProvider: NCXCallControllerDelegate { + + func process(action: CXAction) async throws { + + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + + switch action { + case let action as CXStartCallAction: + delegate.provider(self, perform: action) + case let action as CXAnswerCallAction: + delegate.provider(self, perform: action) + case let action as CXEndCallAction: + delegate.provider(self, perform: action) + case let action as CXSetMutedCallAction: + delegate.provider(self, perform: action) + default: + assertionFailure("Not implemented (yet)") + } + + } + +} + + +// MARK: - Errors + +extension NCXProvider { + + enum ObvError: Error { + case delegateIsNil + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProviderDelegate.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProviderDelegate.swift new file mode 100644 index 00000000..78873f1b --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallProviderDelegate.swift @@ -0,0 +1,951 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import CallKit +import PushKit +import WebRTC +import ObvEngine +import ObvTypes +import ObvCrypto +import ObvSettings +import ObvUICoreData + + +/// Main class of Olvid's VoIP implementation. +/// +/// Remark: Subclass of NSObject as this class implements `PKPushRegistryDelegate` which inherits from `NSObjectProtocol`. +/// +/// Remark: We do *not* use an external PushRegistryDelegate (as done in Apple sample code). The reason is that, we receiving a pushkit notification +/// using the async delegate method, we need to report the new incoming call to the system immediately (we cannot call any async method or create a Task). +final class CallProviderDelegate: NSObject { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: CallProviderDelegate.self)) + + /// Allows to let the system know about any out-of-band notifications that have happened (i.e., *not* local user actions). + /// When using CallKit, this holds the CXProvider. + /// The second important class is the ``CallControllerHolder`` at the ``OlvidCallManager`` level. + private let callProviderHolder = CallProviderHolder() + private let callManager = OlvidCallManager() + private let pushKitNotificationSynchronizer = PushKitNotificationSynchronizer() + private var pkPushRegistry: PKPushRegistry? + private let obvEngine: ObvEngine + private let rtcPeerConnectionQueue = OperationQueue.createSerialQueue(name: "CallProviderDelegate serial queue common to all OlvidCallParticipantPeerConnectionHolder") + private let callAudioPlayer = OlvidCallAudioPlayer() + + private var notificationTokens = [NSObjectProtocol]() + + private let queueForPostingNotifications = DispatchQueue(label: "CallProviderDelegate queue for posting notifications") + + init(obvEngine: ObvEngine) { + self.obvEngine = obvEngine + super.init() + self.callProviderHolder.setDelegate(self) // CallProviderHolderDelegate + self.callManager.setNCXCallControllerDelegate(self.callProviderHolder.ncxCallControllerDelegate) + Task { [weak self] in + guard let self else { return } + await callManager.setDelegate(to: self) + } + } + + deinit { + notificationTokens.forEach { NotificationCenter.default.removeObserver($0) } + } + + + func performPostInitialization() { + listenToNotifications() + registerToPushKitNotifications() + } + + + private func listenToNotifications() { + + // Internal notifications + + notificationTokens.append(contentsOf: [ + ObvMessengerInternalNotification.observeNewWebRTCMessageWasReceived { (webrtcMessage, fromOlvidUser, messageIdentifierFromEngine) in + Task { [weak self] in + await self?.processReceivedWebRTCMessage( + messageType: webrtcMessage.messageType, + serializedMessagePayload: webrtcMessage.serializedMessagePayload, + uuidForWebRTC: webrtcMessage.callIdentifier, + fromOlvidUser: fromOlvidUser, + messageIdentifierFromEngine: messageIdentifierFromEngine) + } + }, + ObvMessengerInternalNotification.observeUserWantsToCallAndIsAllowedTo { (ownedCryptoId, contactCryptoIds, ownedIdentityForRequestingTurnCredentials, groupId) in + Task { [weak self] in await self?.processUserWantsToCallNotification(ownedCryptoId: ownedCryptoId, contactCryptoIds: contactCryptoIds, ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, groupId: groupId) } + }, + ]) + + } + + + private func registerToPushKitNotifications() { + guard self.pkPushRegistry == nil else { assertionFailure(); return } + pkPushRegistry = PKPushRegistry(queue: nil) + pkPushRegistry?.delegate = self // PKPushRegistryDelegate + pkPushRegistry?.desiredPushTypes = [.voIP] + } + +} + + +// MARK: - Implementing PKPushRegistryDelegate + +extension CallProviderDelegate: PKPushRegistryDelegate { + + func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) { + guard type == .voIP else { return } + let voipToken = pushCredentials.token + os_log("☎️✅ We received a voip notification token: %{public}@", log: Self.log, type: .info, voipToken.hexString()) + Task { + await ObvPushNotificationManager.shared.setCurrentVoipToken(to: voipToken) + await ObvPushNotificationManager.shared.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() + } + } + + + func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenFor type: PKPushType) { + guard type == .voIP else { return } + os_log("☎️✅❌ Push Registry did invalidate push token", log: Self.log, type: .info) + Task { + await ObvPushNotificationManager.shared.setCurrentVoipToken(to: nil) + await ObvPushNotificationManager.shared.requestRegisterToPushNotificationsForAllActiveOwnedIdentities() + } + } + + + /// Remark: We do *not* use the async version of the this delegate method, not the async version of ``reportNewIncomingCall(with:update:completion:)`` as we encountered countless issues with them (in particular, when in the background). + func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) { + + os_log("☎️✅ We received a voip notification", log: Self.log, type: .info) + + assert(ObvMessengerSettings.VoIP.receiveCallsOnThisDevice, "When setting receiveCallsOnThisDevice to false, we should have removed the VoIP token from the server (and thus we should not receive this notification)") + + guard let encryptedNotification = ObvEncryptedPushNotification(dict: payload.dictionaryPayload) else { + os_log("☎️ Could not extract encrypted notification", log: Self.log, type: .fault) + reportFakeNewIncomingCall() + return + } + + // We notify the discussions coordinator. + // Eventually the encrypted notification will be decrypted and sent back to us. + + os_log("☎️ We request a decryption of the encrypted notification", log: Self.log, type: .info) + + ObvMessengerInternalNotification.newObvEncryptedPushNotificationWasReceivedViaPushKitNotification(encryptedNotification: encryptedNotification) + .postOnDispatchQueue() + + // The incoming call UUID is derived from the message identifier from engine of the received pushkit notification + + let callIdentifierForCallKit = encryptedNotification.messageIdFromServer.deterministicUUID + + // Get a "fake" CXCallUpdate describing the incoming call. It will be updated once we receive the result of the decryption of the notification. + + let initalUpdate = CXCallUpdate.createForIncomingCallUntilStartCallMessageIsAvailable(callIdentifierForCallKit: callIdentifierForCallKit) + + // Report the incoming call to the system. + // Do so before creating an incoming call so as to make sure reporting the call did not throw. + // Calls may be denied for various legitimate reasons. See CXErrorCodeIncomingCallError. + + os_log("☎️✅ We will report new incoming call to the system", log: Self.log, type: .info) + + callProviderHolder.provider.reportNewIncomingCall(with: callIdentifierForCallKit, update: initalUpdate) { [weak self] error in + + if let error { + os_log("☎️✅❌ We failed to report an incoming call: %{public}@", log: Self.log, type: .info, error.localizedDescription) + DispatchQueue.main.async { + completion() + } + assertionFailure() + return + } + + Task { [weak self] in + DispatchQueue.main.async { + completion() + } + await self?.didReportNewIncomingCallToCallKit(encryptedNotification: encryptedNotification, callIdentifierForCallKit: callIdentifierForCallKit) + } + + } + + } + + + /// Called when we fail to recover the `ObvEncryptedPushNotification` when receiving a `PushKit` notification. + /// Since this "never" happens, we just do what it takes to prevent the system from crashing the app. + private func reportFakeNewIncomingCall() { + let fakeUUIDForCallKit = UUID() + let fakeUpdate = CXCallUpdate.createForIncomingCallUntilStartCallMessageIsAvailable(callIdentifierForCallKit: fakeUUIDForCallKit) + callProviderHolder.provider.reportNewIncomingCall(with: fakeUUIDForCallKit, update: fakeUpdate) { _ in assertionFailure() } + } + + + /// Called after successfully reporting a new incoming call to the system when using `CallKit`. + private func didReportNewIncomingCallToCallKit(encryptedNotification: ObvEncryptedPushNotification, callIdentifierForCallKit: UUID) async { + os_log("☎️✅ Did report new incoming call to the system", log: Self.log, type: .info) + + // Wait for the (decrypted) start call message allowing to create a proper CXCallUpdate + + let callerId: ObvContactIdentifier + let startCallMessage: StartCallMessageJSON + let uuidForWebRTC: UUID + do { + (callerId, startCallMessage, uuidForWebRTC) = try await pushKitNotificationSynchronizer.waitForStartCallMessage(encryptedNotification: encryptedNotification) + } catch { + callProviderHolder.provider.reportCall(with: callIdentifierForCallKit, endedAt: Date(), reason: .failed) + assertionFailure() + return + } + + // Create an incoming call and add it to the call manager + + os_log("☎️ Creating an incoming OlvidCall", log: Self.log, type: .info) + + let incomingCall: OlvidCall + do { + incomingCall = try await callManager.createIncomingCall( + uuidForCallKit: callIdentifierForCallKit, + uuidForWebRTC: uuidForWebRTC, + contactIdentifier: callerId, + startCallMessage: startCallMessage, + rtcPeerConnectionQueue: rtcPeerConnectionQueue, + callDelegate: self) + } catch { + os_log("☎️ Could not create incoming call: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + callProviderHolder.provider.reportCall(with: callIdentifierForCallKit, endedAt: Date(), reason: .failed) + assertionFailure() + return + } + + // Use the updated call to update the CallKit interface + + let update = await incomingCall.createUpToDateCXCallUpdate() + os_log("☎️ Using the created incoming call to update the CXCallProvider", log: Self.log, type: .info) + callProviderHolder.provider.reportCall(with: callIdentifierForCallKit, updated: update) + + } + +} + + +// MARK: - Processing WebRTCMessageJSON messages received from the discussions coordinator + +extension CallProviderDelegate { + + /// This method gets called when a `WebRTCMessageJSON` is received by the discussions coordinator. This is in particular called when a start call message is received either through the websocket, + /// or when an encrypted notification that we notified from the `PushKitNotificationSynchronizer` was successfuly decrypted. + /// It is also called when we need to relay a message received on the data channel of an ongoing call. In that case, the `messageIdentifierFromEngine` is `nil`. This cannot happen for a `StartCallMessageJSON`. + /// + /// + /// + private func processReceivedWebRTCMessage(messageType: WebRTCMessageJSON.MessageType, serializedMessagePayload: String, uuidForWebRTC: UUID, fromOlvidUser: OlvidUserId, messageIdentifierFromEngine: UID?) async { + + do { + + switch messageType { + case .startCall: + guard let messageIdentifierFromEngine else { assertionFailure(); return } + guard let contactIdentifier = fromOlvidUser.contactIdentifier else { assertionFailure(); return } + guard ObvMessengerSettings.VoIP.receiveCallsOnThisDevice else { + // The local user decided not to receive calls on this device. + // If the user has only one device, we reject the call and notify the user that she missed a call due to her settings. + // If she has several devices, we do nothing. + if try await ownedIdentityHasSeveralDevices(ownedCryptoId: fromOlvidUser.ownCryptoId) { + return + } else { + // Notify the caller that the call is not going to be answered + let rejectedMessage = try RejectCallMessageJSON().embedInWebRTCMessageJSON(callIdentifier: uuidForWebRTC) + guard let contactID = fromOlvidUser.contactObjectID else { assertionFailure(); return } + await newWebRTCMessageToSend(webrtcMessage: rejectedMessage, contactID: contactID, forStartingCall: false) + // Notify the local user that a call was missed + let caller = OlvidCallParticipantInfo(contactObjectID: contactID, isCaller: true) + VoIPNotification.reportCallEvent(callUUID: messageIdentifierFromEngine.deterministicUUID, callReport: .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse(caller: caller), groupId: nil, ownedCryptoId: fromOlvidUser.ownCryptoId) + .postOnDispatchQueue() + return + } + } + let startCallMessage = try StartCallMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + if ObvUICoreDataConstants.useCallKit { + await pushKitNotificationSynchronizer.continuePushKitNotificationProcessing(startCallMessage, messageIdFromServer: messageIdentifierFromEngine, callerId: contactIdentifier, uuidForWebRTC: uuidForWebRTC) + } else { + // Since we are not using CallKit, we don't use manual audio. Note that the CallKit counterpart of this call is made in + // ``pushRegistry(_:didReceiveIncomingPushWith:for:)``, thus, prior reporting the call. + let uuidForCallKit = messageIdentifierFromEngine.deterministicUUID + let incomingCall = try await callManager.createIncomingCall( + uuidForCallKit: uuidForCallKit, + uuidForWebRTC: uuidForWebRTC, + contactIdentifier: contactIdentifier, + startCallMessage: startCallMessage, + rtcPeerConnectionQueue: rtcPeerConnectionQueue, + callDelegate: self) + let update = await incomingCall.createUpToDateCXCallUpdate() + callProviderHolder.provider.reportNewIncomingCall(with: uuidForCallKit, update: update) { error in + if let error { + os_log("☎️ Could not report new incoming call: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + } + } + case .answerCall: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + let answerCallMessage = try AnswerCallJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + try await processAnswerCallMessage(answerCallMessage, uuidForWebRTC: uuidForWebRTC, contact: contact) + + case .rejectCall: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + let rejectCallMessage = try RejectCallMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + let (outgoingCall, participantInfo) = try await callManager.processRejectCallMessage(rejectCallMessage, uuidForWebRTC: uuidForWebRTC, contact: contact) + Self.report(call: outgoingCall, report: .rejectedOutgoingCall(from: participantInfo)) + callProviderHolder.provider.reportCall(with: outgoingCall.uuidForCallKit, endedAt: Date(), reason: .unanswered) + + case .hangedUp: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + let hangedUpMessage = try HangedUpMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + try await processHangedUpMessage(hangedUpMessage, uuidForWebRTC: uuidForWebRTC, contact: contact) + + case .ringing: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + _ = try RingingMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + await callManager.processRingingMessageJSON(uuidForWebRTC: uuidForWebRTC, contact: contact) + + case .busy: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + _ = try BusyMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + let (outgoingCall, participantInfo) = try await callManager.processBusyMessageJSON(uuidForWebRTC: uuidForWebRTC, contact: contact) + Self.report(call: outgoingCall, report: .busyOutgoingCall(from: participantInfo)) + + case .reconnect: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + let reconnectCallMessage = try ReconnectCallMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + try await callManager.processReconnectCallMessageJSON(reconnectCallMessage, uuidForWebRTC: uuidForWebRTC, contact: contact) + + case .newParticipantAnswer: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + let newParticipantAnswer = try NewParticipantAnswerMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + try await callManager.processNewParticipantAnswerMessageJSON(newParticipantAnswer, uuidForWebRTC: uuidForWebRTC, contact: contact) + + case .newParticipantOffer: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + let newParticipantOffer = try NewParticipantOfferMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + try await callManager.processNewParticipantOfferMessageJSON(newParticipantOffer, uuidForWebRTC: uuidForWebRTC, contact: contact) + + case .kick: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + try await processKickMessageJSON(serializedMessagePayload: serializedMessagePayload, uuidForWebRTC: uuidForWebRTC, contact: contact) + + case .newIceCandidate: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + os_log("☎️❄️ We received new ICE Candidate message: %{public}@", log: Self.log, type: .info, messageType.description) + let iceCandidate = try IceCandidateJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + try await callManager.processICECandidateForCall(uuidForWebRTC: uuidForWebRTC, iceCandidate: iceCandidate, contact: contact) + + case .removeIceCandidates: + guard !fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let contact = fromOlvidUser + let removeIceCandidatesMessage = try RemoveIceCandidatesMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + try await callManager.processRemoveIceCandidatesMessage(message: removeIceCandidatesMessage, uuidForWebRTC: uuidForWebRTC, contact: contact) + + case .answeredOrRejectedOnOtherDevice: + guard fromOlvidUser.isOwnedIdentity else { assertionFailure(); return } + let answeredOrRejectedOnOtherDeviceMessage = try AnsweredOrRejectedOnOtherDeviceMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + let (incomingCall, callReport, cxCallEndedReason) = try await callManager.processAnsweredOrRejectedOnOtherDeviceMessage(answered: answeredOrRejectedOnOtherDeviceMessage.answered, uuidForWebRTC: uuidForWebRTC, ownedCryptoId: fromOlvidUser.ownCryptoId) + guard let incomingCall else { return } + if let cxCallEndedReason { + callProviderHolder.provider.reportCall(with: incomingCall.uuidForCallKit, endedAt: Date(), reason: cxCallEndedReason) + } + if let callReport { + Self.report(call: incomingCall, report: callReport) + } + + } + + } catch { + if let error = error as? OlvidCallManager.ObvError, error == .callNotFound { + return + } else { + assertionFailure() + os_log("☎️ Could not parse or process the WebRTCMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + } + } + + } + + + func processKickMessageJSON(serializedMessagePayload: String, uuidForWebRTC: UUID, contact: OlvidUserId) async throws { + let kickMessage = try KickMessageJSON.jsonDecode(serializedMessagePayload: serializedMessagePayload) + let (incomingCall, callReport, cxCallEndedReason) = try await callManager.processKickMessageJSON(kickMessage, uuidForWebRTC: uuidForWebRTC, contact: contact) + if let cxCallEndedReason { + assert(cxCallEndedReason == .remoteEnded) + callProviderHolder.provider.reportCall(with: incomingCall.uuidForCallKit, endedAt: Date(), reason: cxCallEndedReason) + } + if let callReport { + Self.report(call: incomingCall, report: callReport) + } + } + + + private func processAnswerCallMessage(_ answerCallMessage: AnswerCallJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws { + do { + let (outgoingCall, participantInfo) = try await callManager.processAnswerCallMessage(answerCallMessage, uuidForWebRTC: uuidForWebRTC, contact: contact) + Self.report(call: outgoingCall, report: .acceptedOutgoingCall(from: participantInfo)) + } catch { + os_log("☎️ Failed to answer call: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + throw error + } + } + + + private func processHangedUpMessage(_ hangedUpMessage: HangedUpMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws { + + let (call, missedIncomingCallReport) = try await callManager.processHangedUpMessage(hangedUpMessage, uuidForWebRTC: uuidForWebRTC, contact: contact) + + if let missedIncomingCallReport { + Self.report(call: call, report: missedIncomingCallReport) + } + + if call.state.isFinalState { + + // Stop call audio when ending a call in a simulator + stopAudioWhenNotUsingCallKit() + + callProviderHolder.provider.reportCall(with: call.uuidForCallKit, endedAt: Date(), reason: .remoteEnded) + + } + + } + +} + + +// MARK: - Implementing OlvidCallDelegate + +extension CallProviderDelegate: OlvidCallDelegate { + + + /// We leverage the call's state change to let the system know about certain out-of-band notifications that have happened. + func callDidChangeState(call: OlvidCall, previousState: OlvidCall.State, newState: OlvidCall.State) { + + // Calling reportOutgoingCall(with: UUID, startedConnectingAt: Date?) + + switch call.direction { + case .outgoing: + if newState == .outgoingCallIsConnecting { + callProviderHolder.provider.reportOutgoingCall(with: call.uuidForCallKit, startedConnectingAt: Date()) + } + case .incoming: + if newState == .userAnsweredIncomingCall { + callProviderHolder.provider.reportOutgoingCall(with: call.uuidForCallKit, startedConnectingAt: Date()) + } + } + + // Calling reportOutgoingCall(with: UUID, connectedAt: Date?) + + if newState == .callInProgress { + callProviderHolder.provider.reportOutgoingCall(with: call.uuidForCallKit, connectedAt: Date()) + } + + // Notify (allows to show the in-house UI when using CallKit + + if call.direction == .incoming && newState == .userAnsweredIncomingCall { + if call.direction == .incoming && ObvUICoreDataConstants.useCallKit { + let model = OlvidCallViewController.Model(call: call, manager: callManager) + VoIPNotification.newCallToShow(model: model) + .post() + } else { + // The notification was already sent + } + } + + // Notify if a call was ended + + if call.state.isFinalState { + VoIPNotification.callWasEnded(uuidForCallKit: call.uuidForCallKit) + .postOnDispatchQueue() + } + + // Play a sound + + playSound(call: call, previousState: previousState, newState: newState) + + } + + + /// Disconnect sounds are not played in the simulator. For some reason, this dramatically slows down everything. + private func playSound(call: OlvidCall, previousState: OlvidCall.State, newState: OlvidCall.State) { + + switch call.direction { + case .outgoing: + if newState == .ringing { + os_log("☎️ OlvidCall will play sound .ringing", log: Self.log, type: .info) + callAudioPlayer.play(.ringing) + } else if newState == .callInProgress && previousState != .callInProgress { + os_log("☎️ OlvidCall will play sound .connect", log: Self.log, type: .info) + callAudioPlayer.play(.connect) + } else if newState == .reconnecting && previousState != .reconnecting { + callAudioPlayer.play(.reconnecting) + } else if newState.isFinalState && (previousState == .callInProgress || previousState == .ringing), ObvMessengerConstants.isRunningOnRealDevice { + os_log("☎️ OlvidCall will play sound .disconnect", log: Self.log, type: .info) + if !ObvMessengerConstants.targetEnvironmentIsMacCatalyst { + // We do not play the disconnect sound under macOS, the timing is too random in practice + callAudioPlayer.play(.disconnect) + } else { + callAudioPlayer.stop() + } + } else { + callAudioPlayer.stop() + } + case .incoming: + if newState == .callInProgress && previousState != .callInProgress { + os_log("☎️ OlvidCall will play sound .connect", log: Self.log, type: .info) + callAudioPlayer.play(.connect) + } else if newState == .reconnecting && previousState != .reconnecting { + callAudioPlayer.play(.reconnecting) + } else if newState.isFinalState && previousState == .callInProgress, ObvMessengerConstants.isRunningOnRealDevice { + os_log("☎️ OlvidCall will play sound .disconnect", log: Self.log, type: .info) + if !ObvMessengerConstants.targetEnvironmentIsMacCatalyst { + // We do not play the disconnect sound under macOS, the timing is too random in practice + callAudioPlayer.play(.disconnect) + } else { + callAudioPlayer.stop() + } + } else { + callAudioPlayer.stop() + } + } + + } + + + func incomingWasNotAnsweredToAndTimedOut(call: OlvidCall) async { + + let (callReport, cxCallEndedReason) = await callManager.incomingWasNotAnsweredToAndTimedOut(uuidForCallKit: call.uuidForCallKit) + + if let cxCallEndedReason { + assert(cxCallEndedReason == .unanswered) + callProviderHolder.provider.reportCall(with: call.uuidForCallKit, endedAt: Date(), reason: cxCallEndedReason) + } + + if let callReport { + Self.report(call: call, report: callReport) + } + + } + + + func requestTurnCredentialsForCall(call: OlvidCall, ownedIdentityForRequestingTurnCredentials: ObvCryptoId) async throws -> ObvTurnCredentials { + return try await obvEngine.getTurnCredentials(ownedCryptoId: ownedIdentityForRequestingTurnCredentials) + } + + + func newWebRTCMessageToSend(webrtcMessage: ObvUICoreData.WebRTCMessageJSON, contactID: ObvUICoreData.TypeSafeManagedObjectID, forStartingCall: Bool) async { + os_log("☎️ Posting a newWebRTCMessageToSend", log: Self.log, type: .info) + VoIPNotification.newWebRTCMessageToSend(webrtcMessage: webrtcMessage, contactID: contactID, forStartingCall: forStartingCall) + .postOnDispatchQueue(queueForPostingNotifications) + } + + + func newParticipantWasAdded(call: OlvidCall, callParticipant: OlvidCallParticipant) async { + switch call.direction { + case .incoming: + Self.report(call: call, report: .newParticipantInIncomingCall(callParticipant.info)) + case .outgoing: + Self.report(call: call, report: .newParticipantInOutgoingCall(callParticipant.info)) + } + let update = await call.createUpToDateCXCallUpdate() + callProviderHolder.provider.reportCall(with: call.uuidForCallKit, updated: update) + } + + + private static func report(call: OlvidCall, report: CallReport) { + os_log("☎️📖 Report call to user as %{public}@", log: Self.log, type: .info, report.description) + VoIPNotification.reportCallEvent(callUUID: call.uuidForCallKit, callReport: report, groupId: call.groupId, ownedCryptoId: call.ownedCryptoId) + .postOnDispatchQueue() + } + + + func receivedRelayedMessage(call: OlvidCall, messageType: WebRTCMessageJSON.MessageType, serializedMessagePayload: String, uuidForWebRTC: UUID, fromOlvidUser: OlvidUserId) async { + await self.processReceivedWebRTCMessage( + messageType: messageType, + serializedMessagePayload: serializedMessagePayload, + uuidForWebRTC: uuidForWebRTC, + fromOlvidUser: fromOlvidUser, + messageIdentifierFromEngine: nil) + } + + + func receivedHangedUpMessage(call: OlvidCall, serializedMessagePayload: String, uuidForWebRTC: UUID, fromOlvidUser: OlvidUserId) async { + await self.processReceivedWebRTCMessage( + messageType: .hangedUp, + serializedMessagePayload: serializedMessagePayload, + uuidForWebRTC: uuidForWebRTC, + fromOlvidUser: fromOlvidUser, + messageIdentifierFromEngine: nil) + } + +} + + +// MARK: - Processing user requests + +extension CallProviderDelegate { + + private func processUserWantsToCallNotification(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set, ownedIdentityForRequestingTurnCredentials: ObvCryptoId, groupId: GroupIdentifier?) async { + + let granted = await AVAudioSession.sharedInstance().requestRecordPermission() + + if granted { + + do { + // The following call will eventually trigger a system call to provider(_ provider: CXProvider, perform action: CXStartCallAction) + try await callManager.localUserWantsToStartOutgoingCall( + ownedCryptoId: ownedCryptoId, + contactCryptoIds: contactCryptoIds, + ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, + groupId: groupId, + rtcPeerConnectionQueue: rtcPeerConnectionQueue, + olvidCallDelegate: self) + } catch { + os_log("☎️ Failed to create outgoing call %{public}@", log: Self.log, type: .info, error.localizedDescription) + assertionFailure() + return + } + + } else { + + ObvMessengerInternalNotification.outgoingCallFailedBecauseUserDeniedRecordPermission + .postOnDispatchQueue(queueForPostingNotifications) + + } + + } + +} + + +// MARK: - Implementing ObvProviderDelegate + +extension CallProviderDelegate: CallProviderHolderDelegate { + + /// Required method of the `CXProviderDelegate` protocol. + func providerDidReset(_ provider: CallProviderHolder) async { + assertionFailure() + os_log("☎️ Provider did reset", log: Self.log, type: .info) + } + + + /// Called by the system when the user starts an outgoing call. + func provider(_ provider: CallProviderHolder, perform action: CXStartCallAction) async { + os_log("☎️ Call to provider(CXStartCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .info, action.callUUID.debugDescription) + do { + + // Configure the audio session but do not start call audio here. + // When using CallKit, call audio should not be started until the audio session is activated by the system, + // after having its priority elevated. + await configureAudioSession() + + // Trigger the call to be started via the underlying network service. + let upToDateCXCallUpdate = try await callManager.localUserWantsToPerform(action) + + // Signal to the system that the action was successfully performed. + os_log("☎️ Fulfills call to provider(CXStartCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .info, action.callUUID.debugDescription) + action.fulfill() + + // If we stop here, the name displayed within iOS call log is incorrect (it shows the call UUID). Updating the call right now does the trick. + os_log("☎️ Using the created incoming call to update the CXCallProvider", log: Self.log, type: .info) + callProviderHolder.provider.reportCall(with: action.callUUID, updated: upToDateCXCallUpdate) + + } catch { + os_log("☎️ Fails call to provider(CXStartCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .error, action.callUUID.debugDescription) + assertionFailure() + action.fail() + } + } + + + /// Called by the system when the user answers an incoming call from the CallKit interface. Also called when the user accepts a call from the non-CallKit interface (on a simulator). + /// In that last case, we created a `CXAnswerCallAction` ourselves at the OlvidCallManager level. + func provider(_ provider: CallProviderHolder, perform action: CXAnswerCallAction) async { + os_log("☎️ [CXAnswerCallAction] Call to provider(CXAnswerCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .info, action.callUUID.debugDescription) + do { + + // Configure the audio session but do not start call audio here. + // When using CallKit, call audio should not be started until the audio session is activated by the system, + // after having its priority elevated. + await configureAudioSession() + + // Trigger the call to be answered via the underlying network service. + let (incomingCall, callerInfo, answeredOnOtherDeviceMessageJSON) = try await callManager.localUserWantsToPerform(action) + + // Signal to the system that the action was successfully performed. + os_log("☎️ [CXAnswerCallAction] Fulfills call to provider(CXAnswerCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .info, action.callUUID.debugDescription) + action.fulfill() + + Self.report(call: incomingCall, report: .acceptedIncomingCall(caller: callerInfo)) + + // Notify other owned devices that the call was accepted on this device + + if let answeredOnOtherDeviceMessageJSON { + VoIPNotification.newOwnedWebRTCMessageToSend(ownedCryptoId: incomingCall.ownedCryptoId, webrtcMessage: answeredOnOtherDeviceMessageJSON) + .postOnDispatchQueue() + } + + } catch { + os_log("☎️ [CXAnswerCallAction] Fails call to provider(CXAnswerCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .error, action.callUUID.debugDescription) + assertionFailure() + action.fail() + } + } + + + /// Called by the system when the user ends (or rejects) an incoming call from the CallKit interface or as a result of a `CXEndCallAction` requested by the `OlvidCallManager` (triggered by the Olvid UI). + /// Note that this is *not* called when the call is ended by the contact. + func provider(_ provider: CallProviderHolder, perform action: CXEndCallAction) async { + os_log("☎️ Call to provider(CXEndCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .info, action.callUUID.debugDescription) + do { + + // Let the OlvidCallManager end the call. + // This returns an optional report as well as the call removed from the list of calls. + let (call, report, rejectedOnOtherDeviceMessageJSON) = try await callManager.localUserWantsToPerform(action) + + // If there is a report to send, do it now + if let call, let report { + Self.report(call: call, report: report) + } + + // Stop call audio when ending a call in a simulator + stopAudioWhenNotUsingCallKit() + + // Signal to the system that the action was successfully performed. + os_log("☎️ Fulfills call to provider(CXEndCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .info, action.callUUID.debugDescription) + action.fulfill() + + // If answeredOnOtherDeviceMessageJSON != nil, it means we have to notify other owned devices that the call was rejected on this device + + if let call, let rejectedOnOtherDeviceMessageJSON { + VoIPNotification.newOwnedWebRTCMessageToSend(ownedCryptoId: call.ownedCryptoId, webrtcMessage: rejectedOnOtherDeviceMessageJSON) + .postOnDispatchQueue() + } + + } catch { + os_log("☎️ Fails call to provider(CXEndCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .error, action.callUUID.debugDescription) + assertionFailure() + action.fail() + } + } + + + func provider(_ provider: CallProviderHolder, perform action: CXSetMutedCallAction) async { + os_log("☎️ Call to provider(CXSetMutedCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .info, action.callUUID.debugDescription) + do { + + try await callManager.localUserWantsToSetMuteSelf(action) + os_log("☎️ Fulfills call to provider(CXSetMutedCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .info, action.callUUID.debugDescription) + action.fulfill() + + } catch { + os_log("☎️ Fails call to provider(CXSetMutedCallAction) for call with uuidForCallKit %{public}@", log: Self.log, type: .error, action.callUUID.debugDescription) + assertionFailure() + action.fail() + } + } + + + /// This delegate method is called *only* when using CallKit. + func provider(_ provider: CallProviderHolder, didActivate audioSession: AVAudioSession) async { + // See https://stackoverflow.com/a/55781328 + os_log("☎️🎵 Provider did activate audioSession %{public}@", log: Self.log, type: .info, audioSession.description) + RTCAudioSession.sharedInstance().audioSessionDidActivate(audioSession) + if RTCAudioSession.sharedInstance().useManualAudio { + // true when using CallKit + RTCAudioSession.sharedInstance().isAudioEnabled = true + } + } + + + /// This delegate method is called *only* when using CallKit. + func provider(_ provider: CallProviderHolder, didDeactivate audioSession: AVAudioSession) async { + os_log("☎️🎵 Provider did deactivate audioSession %{public}@", log: Self.log, type: .info, audioSession.description) + RTCAudioSession.sharedInstance().audioSessionDidDeactivate(audioSession) + if RTCAudioSession.sharedInstance().useManualAudio { + // true when using CallKit + RTCAudioSession.sharedInstance().isAudioEnabled = false + } + } + +} + + +// MARK: - Audio utils + +extension CallProviderDelegate { + + private func configureAudioSession() async { + os_log("☎️🎵 Configure audio session", log: Self.log, type: .info) + let op = ConfigureAudioSessionOperation() + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, op.debugDescription) + await rtcPeerConnectionQueue.addAndAwaitOperation(op) + if op.isCancelled { + os_log("☎️🎵 Audio configuration failed", log: Self.log, type: .fault) + // We do not throw as the configuration fails sometimes (e.g., when accepting an incoming call while another Olvid call was in progress). + // In the failure cases we encoutered, the call worked anyway. + } + } + + + /// This is called when ending a call (both incoming and ougoing). In the CallKit case, this does nothing, as the same work is done at the appropriate time in ``provider(_:didDeactivate:)``. + /// In the non-CallKit case, we stop the WebRTC audio. + func stopAudioWhenNotUsingCallKit() { + if !(ObvUICoreDataConstants.useCallKit) { + // We don't await until the audio session is stopped + // To allow the call window to close quickly, we wait some time before diactivating audio + let rtcPeerConnectionQueue = self.rtcPeerConnectionQueue + rtcPeerConnectionQueue.addOperation { + os_log("☎️🔚 Deactivating audio on end call", log: Self.log, type: .info) + RTCAudioSession.sharedInstance().isAudioEnabled = false + try? RTCAudioSession.sharedInstance().setActive(false) + os_log("☎️🔚 Deactivated audio on end call", log: Self.log, type: .info) + } + } + } + +} + + +// MARK: - Implementing OlvidCallManagerDelegate + +extension CallProviderDelegate: OlvidCallManagerDelegate { + + func callWasAdded(callManager: OlvidCallManager, call: OlvidCall) async { + let model = OlvidCallViewController.Model(call: call, manager: callManager) + if call.direction == .incoming && ObvUICoreDataConstants.useCallKit { + // In the CallKit case, we don't want to show the in-house UI together with the CallKit UI for an incoming call. + // We wait until the local user accepts the incoming call. + } else { + VoIPNotification.newCallToShow(model: model) + .post() + } + } + + nonisolated + func callWasRemoved(callManager: OlvidCallManager, removedCall: OlvidCall, callStillInProgress: OlvidCall?) async { + + os_log("☎️🔚 Call to callWasRemoved(callManager: OlvidCallManager, removedCall: OlvidCall, callStillInProgress: OlvidCall?)", log: Self.log, type: .info) + + if let callStillInProgress { + let model = OlvidCallViewController.Model(call: callStillInProgress, manager: callManager) + VoIPNotification.newCallToShow(model: model) + .post() + } else { + VoIPNotification.noMoreCallInProgress + .postOnDispatchQueue() + } + + } + +} + + +// MARK: - Errors + +extension CallProviderDelegate { + + enum ObvError: Error { + case audioConfigurationFailed + case couldNotFindIncomingCallInCallManager + case couldNotFindOutgoingCallInCallManager + case noSpecifiedOwnedCryptoIdForRequestingTurnCredentialsForOutgoingCall + } + +} + + +// MARK: - Extensions / Helpers + +fileprivate extension CallProviderDelegate { + + @MainActor + func ownedIdentityHasSeveralDevices(ownedCryptoId: ObvCryptoId) async throws -> Bool { + guard let ownedIdentity = try PersistedObvOwnedIdentity.get(cryptoId: ownedCryptoId, within: ObvStack.shared.viewContext) else { assertionFailure(); return false } + return ownedIdentity.devices.count > 1 + } + +} + +fileprivate extension ObvEncryptedPushNotification { + + init?(dict: [AnyHashable: Any]) { + + guard let wrappedKeyString = dict["encryptedHeader"] as? String else { return nil } + guard let encryptedContentString = dict["encryptedMessage"] as? String else { return nil } + + guard let wrappedKey = Data(base64Encoded: wrappedKeyString), + let encryptedContent = Data(base64Encoded: encryptedContentString), + let maskingUID = dict["maskinguid"] as? String, + let messageUploadTimestampFromServerAsDouble = dict["timestamp"] as? Double, + let messageIdFromServer = dict["messageuid"] as? String else { + return nil + } + + let messageUploadTimestampFromServer = Date(timeIntervalSince1970: messageUploadTimestampFromServerAsDouble / 1000.0) + + self.init(messageIdFromServer: messageIdFromServer, + wrappedKey: wrappedKey, + encryptedContent: encryptedContent, + encryptedExtendedContent: nil, + maskingUID: maskingUID, + messageUploadTimestampFromServer: messageUploadTimestampFromServer, + localDownloadTimestamp: Date()) + + } + +} + + +extension CXCallUpdate { + + static func createForIncomingCallUntilStartCallMessageIsAvailable(callIdentifierForCallKit: UUID) -> Self { + let update = Self() + update.localizedCallerName = "..." + update.remoteHandle = .init(type: .generic, value: callIdentifierForCallKit.uuidString) + update.hasVideo = false + update.supportsGrouping = false + update.supportsUngrouping = false + update.supportsHolding = false + update.supportsDTMF = false + return update + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallSupport.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallSupport.swift deleted file mode 100644 index 41b9f8bf..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallSupport.swift +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import AVKit - -protocol ObvCallManager { - - var isCallKit: Bool { get } - - func requestEndCallAction(call: Call) async throws - func requestAnswerCallAction(incomingCall: Call) async throws - func requestMuteCallAction(call: Call) async throws - func requestUnmuteCallAction(call: Call) async throws - func requestStartCallAction(call: Call, contactIdentifier: String, handleValue: String) async throws -} - -protocol ObvCallUpdate { - var remoteHandle_: ObvHandle? { get set } - var localizedCallerName: String? { get set } - var supportsHolding: Bool { get set } - var supportsGrouping: Bool { get set } - var supportsUngrouping: Bool { get set } - var supportsDTMF: Bool { get set } - var hasVideo: Bool { get set } -} -struct ObvCallUpdateImpl: ObvCallUpdate { - var remoteHandle_: ObvHandle? - var localizedCallerName: String? - var supportsHolding: Bool = false - var supportsGrouping: Bool = false - var supportsUngrouping: Bool = false - var supportsDTMF: Bool = false - var hasVideo: Bool = false -} - - -enum ObvCallEndedReason { - case failed - case remoteEnded - case unanswered - case answeredElsewhere - case declinedElsewhere -} - -protocol ObvProviderConfiguration { - var localizedName: String? { get } - var ringtoneSound: String? { get set } - var iconTemplateImageData: Data? { get set } - var maximumCallGroups: Int { get set } - var maximumCallsPerCallGroup: Int { get set } - var includesCallsInRecents: Bool { get set } - var supportsVideo: Bool { get set } - var supportedHandleTypes_: Set { get set } -} - -struct ObvProviderConfigurationImpl: ObvProviderConfiguration { - var localizedName: String? - var ringtoneSound: String? - var iconTemplateImageData: Data? - var maximumCallGroups: Int = 2 - var maximumCallsPerCallGroup: Int = 5 - var includesCallsInRecents: Bool = true - var supportsVideo: Bool = false - var supportedHandleTypes_: Set = Set() -} - -enum ObvErrorCodeIncomingCallError: Int { - case unknown = 0 - case unentitled = 1 - case callUUIDAlreadyExists = 2 - case filteredByDoNotDisturb = 3 - case filteredByBlockList = 4 - - case maximumCallGroupsReached = 5 // For NCX -} - -protocol ObvProvider: AnyObject { - - var isCallKit: Bool { get } - - func setDelegate(_ delegate: ObvProviderDelegate?, queue: DispatchQueue?) - - /// Report a cancelled incoming call. - func reportNewCancelledIncomingCall() - - /// Report a new incoming call to the system. - /// If completion is invoked with a non-nil `error`, the incoming call has been disallowed by the system and will not be displayed, so the provider should not proceed with the call. - /// Completion block will be called on delegate queue, if specified, otherwise on a private serial queue. - func reportNewIncomingCall(with UUID: UUID, update: ObvCallUpdate, completion: @escaping (Result) -> Void) - - /// Report an update to call information. - func reportCall(with UUID: UUID, updated update: ObvCallUpdate) - - /// Report that a call ended. A nil value for `dateEnded` results in the ended date being set to now. - func reportCall(with UUID: UUID, endedAt dateEnded: Date?, reason endedReason: ObvCallEndedReason) - - /// Report that an outgoing call started connecting. A nil value for `dateStartedConnecting` results in the started connecting date being set to now. - func reportOutgoingCall(with UUID: UUID, startedConnectingAt dateStartedConnecting: Date?) - - /// Report that an outgoing call connected. A nil value for `dateConnected` results in the connected date being set to now. - func reportOutgoingCall(with UUID: UUID, connectedAt dateConnected: Date?) - - var configuration_: ObvProviderConfiguration { get set } - - /// Invalidate the receiver. All existing calls will be marked as ended in failure. The provider must be invalidated before it is deallocated. - func invalidate() -} - -enum ObvHandleType: Int { - case generic = 1 - case phoneNumber = 2 - case emailAddress = 3 -} - -protocol ObvHandle { - var type_: ObvHandleType { get } - var value: String { get } -} -struct ObvHandleImpl: ObvHandle { - var type_: ObvHandleType - var value: String -} -protocol ObvAction { - - var debugDescription: String { get } - - var isComplete: Bool { get } - - /// Report successful execution of the receiver. - func fulfill() - - /// Report failed execution of the receiver. - func fail() -} - -enum ObvActionKind { - case start - case answer - case end - case held - case mute - case playDTMF -} - -protocol ObvCallAction: ObvAction { - var callUUID: UUID { get } -} - -protocol ObvStartCallAction: ObvCallAction { - var handle_: ObvHandle { get } - var contactIdentifier: String? { get } - var isVideo: Bool { get } - - func fulfill(withDateStarted: Date) -} - -protocol ObvAnswerCallAction: ObvCallAction { - func fulfill(withDateConnected: Date) -} - -protocol ObvEndCallAction: ObvCallAction { - func fulfill(withDateEnded: Date) -} - -protocol ObvSetHeldCallAction: ObvCallAction { - var isOnHold: Bool { get } -} - -protocol ObvSetMutedCallAction: ObvCallAction { - var isMuted: Bool { get } -} - -enum ObvPlayDTMFCallActionType: Int { - case singleTone = 1 - case softPause = 2 - case hardPause = 3 - case unknown = 100 -} - -protocol ObvPlayDTMFCallAction: ObvCallAction { - var digits: String { get } - var type_: ObvPlayDTMFCallActionType { get } -} - -protocol ObvProviderDelegate: AnyObject { - func providerDidBegin() async - func providerDidReset() async - func provider(perform action: ObvStartCallAction) async - func provider(perform action: ObvAnswerCallAction) async - func provider(perform action: ObvEndCallAction) async - func provider(perform action: ObvSetHeldCallAction) async - func provider(perform action: ObvSetMutedCallAction) async - func provider(perform action: ObvPlayDTMFCallAction) async - func provider(timedOutPerforming action: ObvAction) async - func provider(didActivate audioSession: AVAudioSession) async - func provider(didDeactivate audioSession: AVAudioSession) async -} - -protocol ObvCall: AnyObject { - var uuid: UUID { get } - var isOutgoing: Bool { get } - var isOnHold: Bool { get } - var hasConnected: Bool { get } - var hasEnded: Bool { get } -} - -protocol ObvCallObserverDelegate: AnyObject { - func callObserver(callChanged call: ObvCall) -} -protocol ObvCallObserver { - /// Retrieve the current call list, blocking on initial state retrieval if necessary - var calls_: [ObvCall] { get } - /// Set delegate and optional queue for delegate callbacks to be performed on. - /// A nil queue implies that delegate callbacks should happen on the main queue. The delegate is stored weakly - func setDelegate(_ delegate: ObvCallObserverDelegate?, queue: DispatchQueue?) -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/AVAudioSessionPortDescription+isSpeaker.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/AVAudioSessionPortDescription+isSpeaker.swift new file mode 100644 index 00000000..a91b55f5 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/AVAudioSessionPortDescription+isSpeaker.swift @@ -0,0 +1,30 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import AVFAudio + + +extension AVAudioSessionPortDescription { + + var isSpeaker: Bool { + return portType == AVAudioSession.Port.builtInSpeaker + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallReport.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/CallReport.swift similarity index 66% rename from iOSClient/ObvMessenger/ObvMessenger/VoIP/CallReport.swift rename to iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/CallReport.swift index f2d82d72..94bb5254 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/CallReport.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/CallReport.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -22,19 +22,21 @@ import ObvEngine import ObvUICoreData enum CallReport { - case missedIncomingCall(caller: ParticipantInfo?, participantCount: Int?) - case filteredIncomingCall(caller: ParticipantInfo?, participantCount: Int?) - case rejectedIncomingCall(caller: ParticipantInfo?, participantCount: Int?) - case rejectedIncomingCallBecauseOfDeniedRecordPermission(caller: ParticipantInfo?, participantCount: Int?) - case acceptedIncomingCall(caller: ParticipantInfo?) - case newParticipantInIncomingCall(_: ParticipantInfo?) + case missedIncomingCall(caller: OlvidCallParticipantInfo?, participantCount: Int?) + case filteredIncomingCall(caller: OlvidCallParticipantInfo?, participantCount: Int?) + case rejectedIncomingCall(caller: OlvidCallParticipantInfo?, participantCount: Int?) + case rejectedIncomingCallBecauseOfDeniedRecordPermission(caller: OlvidCallParticipantInfo?, participantCount: Int?) + case rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse(caller: OlvidCallParticipantInfo) + case acceptedIncomingCall(caller: OlvidCallParticipantInfo?) + case newParticipantInIncomingCall(_: OlvidCallParticipantInfo?) + case answeredOrRejectedOnOtherDevice(caller: OlvidCallParticipantInfo?, answered: Bool) - case acceptedOutgoingCall(from: ParticipantInfo?) - case rejectedOutgoingCall(from: ParticipantInfo?) - case busyOutgoingCall(from: ParticipantInfo?) - case unansweredOutgoingCall(with: [ParticipantInfo?]) - case uncompletedOutgoingCall(with: [ParticipantInfo?]) - case newParticipantInOutgoingCall(_: ParticipantInfo?) + case acceptedOutgoingCall(from: OlvidCallParticipantInfo?) + case rejectedOutgoingCall(from: OlvidCallParticipantInfo?) + case busyOutgoingCall(from: OlvidCallParticipantInfo?) + case unansweredOutgoingCall(with: [OlvidCallParticipantInfo?]) + case uncompletedOutgoingCall(with: [OlvidCallParticipantInfo?]) + case newParticipantInOutgoingCall(_: OlvidCallParticipantInfo?) } extension CallReport: CustomStringConvertible { @@ -53,10 +55,14 @@ extension CallReport: CustomStringConvertible { case .uncompletedOutgoingCall: return .uncompletedOutgoingCall case .newParticipantInIncomingCall: return .newParticipantInIncomingCall case .newParticipantInOutgoingCall: return .newParticipantInOutgoingCall + case .answeredOrRejectedOnOtherDevice(caller: _, answered: let answered): + return answered ? .answeredOnOtherDevice : .rejectedOnOtherDevice + case .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse: + return .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse } } - var participantInfos: [ParticipantInfo?] { + var participantInfos: [OlvidCallParticipantInfo?] { switch self { case .missedIncomingCall(caller: let caller, _): return [caller] @@ -82,13 +88,17 @@ extension CallReport: CustomStringConvertible { return [participant] case .newParticipantInOutgoingCall(let participant): return [participant] + case .answeredOrRejectedOnOtherDevice(caller: let caller, answered: _): + return [caller] + case .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse(caller: let caller): + return [caller] } } var isIncoming: Bool { switch self { - case .missedIncomingCall, .filteredIncomingCall, .rejectedIncomingCall, .acceptedIncomingCall, .newParticipantInIncomingCall, .rejectedIncomingCallBecauseOfDeniedRecordPermission: + case .missedIncomingCall, .filteredIncomingCall, .rejectedIncomingCall, .acceptedIncomingCall, .newParticipantInIncomingCall, .rejectedIncomingCallBecauseOfDeniedRecordPermission, .answeredOrRejectedOnOtherDevice, .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse: return true case .acceptedOutgoingCall, .rejectedOutgoingCall, .busyOutgoingCall, .unansweredOutgoingCall, .uncompletedOutgoingCall, .newParticipantInOutgoingCall: return false @@ -109,6 +119,8 @@ extension CallReport: CustomStringConvertible { case .uncompletedOutgoingCall: return "uncompletedOutgoingCall" case .newParticipantInIncomingCall: return "newParticipantInIncomingCall" case .newParticipantInOutgoingCall: return "newParticipantInOutgoingCall" + case .answeredOrRejectedOnOtherDevice: return "answeredOrRejectedOnOtherDevice" + case .rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse: return "rejectedIncomingCallAsTheReceiveCallsOnThisDeviceSettingIsFalse" } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/CallSounds.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/CallSounds.swift deleted file mode 100644 index 7c5e100a..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/CallSounds.swift +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import UIKit -import AVFoundation -import ObvUICoreData - - -enum CallSound: Sound, CaseIterable { - - case ringing - case connect - case disconnect - - var filename: String? { - switch self { - case .ringing: return "ringing.mp3" - case .connect: return "connect.mp3" - case .disconnect: return "disconnect.mp3" - } - } - - var loops: Bool { - switch self { - case .ringing: - return true - case .connect, .disconnect: - return false - } - } - - var feedback: UINotificationFeedbackGenerator.FeedbackType? { - switch self { - case .ringing: - return nil - case .connect: - return .success - case .disconnect: - return .error - } - } -} - -@MainActor -final class CallSounds { - static private(set) var shared = SoundsPlayer() -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/DataChannelWorker.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/DataChannelWorker.swift deleted file mode 100644 index 408fcdbc..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/DataChannelWorker.swift +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import os.log -import WebRTC - - -protocol CallDataChannelWorkerDelegate: AnyObject { - func dataChannel(didReceiveMessage message: WebRTCDataChannelMessageJSON) async - func dataChannel(didChangeState state: RTCDataChannelState) async -} - - -/// This class allows to create an object that conforms to the `RTCDataChannelDelegate` protocol. It is typically instanciated as call local variable so -/// as to receive and post messages/data within the data channel corresponding to the peer connection holder of the call. -final class DataChannelWorker: NSObject, RTCDataChannelDelegate { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: DataChannelWorker.self)) - private static func makeError(message: String) -> Error { - NSError(domain: String(describing: self), code: 0, userInfo: [NSLocalizedFailureReasonErrorKey: message]) - } - private func makeError(message: String) -> Error { - DataChannelWorker.makeError(message: message) - } - - weak var delegate: CallDataChannelWorkerDelegate? - - private let peerConnection: ObvPeerConnection - - init(with peerConnection: ObvPeerConnection) async throws { - self.peerConnection = peerConnection - super.init() - - let configuration = RTCDataChannelConfiguration() - configuration.isOrdered = true - configuration.isNegotiated = true - configuration.channelId = 1 - await peerConnection.createDataChannel(for: "data0", with: configuration, delegate: self) - } - - - func sendDataChannelMessage(_ message: WebRTCDataChannelMessageJSON) async throws { - let data = try message.jsonEncode() - let buffer = RTCDataBuffer(data: data, isBinary: false) - guard await peerConnection.sendData(buffer: buffer) else { - throw makeError(message: "☎️ Failed to send message of type \(message.messageType.description) on webrtc data channel") - } - } - -} - - -// MARK: - RTCDataChannelDelegate - -extension DataChannelWorker { - - func dataChannelDidChangeState(_ dataChannel: RTCDataChannel) { - os_log("☎️ Data Channel %{public}@ has a new state: %{public}@", log: log, type: .info, dataChannel.debugDescription, dataChannel.readyState.description) - assert(delegate != nil) - Task { - await delegate?.dataChannel(didChangeState: dataChannel.readyState) - } - } - - func dataChannel(_ dataChannel: RTCDataChannel, didReceiveMessageWith buffer: RTCDataBuffer) { - os_log("☎️ Data Channel %{public}@ did receive message with buffer", log: log, type: .info, dataChannel.debugDescription) - assert(!buffer.isBinary) - let webRTCDataChannelMessageJSON: WebRTCDataChannelMessageJSON - do { - webRTCDataChannelMessageJSON = try WebRTCDataChannelMessageJSON.jsonDecode(data: buffer.data) - } catch { - os_log("☎️ Could not decode message received on the RTC data channel as a WebRTCMessageJSON: %{public}@", log: log, type: .fault, error.localizedDescription) - return - } - assert(delegate != nil) - Task { await delegate?.dataChannel(didReceiveMessage: webRTCDataChannelMessageJSON) } - } - -} - - -// MARK: - RTCDataChannelState+CustomStringConvertible - -extension RTCDataChannelState: CustomStringConvertible { - - public var description: String { - switch self { - case .connecting: return "connecting" - case .closed: return "closed" - case .closing: return "closing" - case .open: return "open" - default: - assertionFailure() - return "unknown" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/OlvidCallAudioPlayer.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/OlvidCallAudioPlayer.swift new file mode 100644 index 00000000..0d685edb --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/OlvidCallAudioPlayer.swift @@ -0,0 +1,160 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import AVFAudio +import os.log + + +/// Very simple player used instead of the ``SoundsPlayer`` for performance reasons under macOS. +/// We tested several solutions for playing call sounds (including the system sounds framework and the AVAudioEngine APIs) and came up with this solution that uses +/// the `AVAudioPlayer` API. Although not perferct (sometimes, play/pause hang for a long time under macOS), it has the advantage of not blocking the main thread and does not crash +/// (unlike some of the tests we made with AVAudioEngine, that does not seem to be very resilient during audio interrupts, which often happen during an audio call). +final class OlvidCallAudioPlayer: NSObject, AVAudioPlayerDelegate { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "OlvidCallAudioPlayer") + + private let internalQueue = OperationQueue.createSerialQueue(name: "OlvidCallAudioPlayer internal queue") + + private var currentPlayer: AVAudioPlayer? + private var currentSound: Sound? + private let feedbackGenerator = UINotificationFeedbackGenerator() + + func play(_ sound: Sound) { + let scheduledTime = Date.now + internalQueue.addOperation { [weak self] in + + guard let self else { return } + + currentPlayer?.stop() + currentPlayer = nil + currentSound = nil + + guard abs(Date.now.timeIntervalSince(scheduledTime)) < 1 else { + return + } + + currentPlayer = try? AVAudioPlayer(contentsOf: sound.url) + currentSound = sound + currentPlayer?.delegate = self + + currentPlayer?.play() + + if let feedback = sound.feedback { + DispatchQueue.main.async { [weak self] in + self?.feedbackGenerator.notificationOccurred(feedback) + } + } + + } + } + + + func stop() { + internalQueue.addOperation { [weak self] in + guard let self else { return } + currentPlayer?.stop() + currentPlayer = nil + currentSound = nil + } + } + + + func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { + internalQueue.addOperation { [weak self] in + + guard let self else { return } + + if let currentSound, currentSound.doesLoop == true { + // Note that + play(currentSound) + } + + currentPlayer?.stop() + currentPlayer = nil + currentSound = nil + + } + } + + + enum Sound: CaseIterable { + + case connect + case disconnect + case reconnecting + case ringing + + private var filename: String { + switch self { + case .connect: return "connect.mp3" + case .disconnect: return "disconnect.mp3" + case .reconnecting: return "reconnecting.mp3" + case .ringing: return "ringing.mp3" + } + } + + fileprivate var url: URL { + if ObvMessengerConstants.targetEnvironmentIsMacCatalyst { + return Bundle.main.bundleURL + .appendingPathComponent("Contents") + .appendingPathComponent("Resources") + .appendingPathComponent(filename) + .resolvingSymlinksInPath() + } else { + return Bundle.main.bundleURL.appendingPathComponent(filename) + } + } + + fileprivate var avAudioFile: AVAudioFile { + get throws { + try .init(forReading: url) + } + } + + + fileprivate var doesLoop: Bool { + switch self { + case .ringing: + return true + case .connect, .disconnect, .reconnecting: + return false + } + } + + + fileprivate var feedback: UINotificationFeedbackGenerator.FeedbackType? { + switch self { + case .ringing: + return nil + case .connect: + return .success + case .disconnect, .reconnecting: + return .error + } + } + + } + + + enum ObvError: Error { + case failedToCreateAVAudioPCMBuffer + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/RTCDataChannelState+CustomStringConvertible.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/RTCDataChannelState+CustomStringConvertible.swift new file mode 100644 index 00000000..f302863d --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/RTCDataChannelState+CustomStringConvertible.swift @@ -0,0 +1,38 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import WebRTC + + +extension RTCDataChannelState: CustomStringConvertible { + + public var description: String { + switch self { + case .connecting: return "connecting" + case .closed: return "closed" + case .closing: return "closing" + case .open: return "open" + default: + assertionFailure() + return "unknown" + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/Sounds/connect.mp3 b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/Sounds/connect.mp3 similarity index 100% rename from iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/Sounds/connect.mp3 rename to iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/Sounds/connect.mp3 diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/Sounds/disconnect.mp3 b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/Sounds/disconnect.mp3 similarity index 100% rename from iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/Sounds/disconnect.mp3 rename to iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/Sounds/disconnect.mp3 diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/Sounds/reconnecting.mp3 b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/Sounds/reconnecting.mp3 new file mode 100644 index 00000000..54527e2b Binary files /dev/null and b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/Sounds/reconnecting.mp3 differ diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/Sounds/ringing.mp3 b/iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/Sounds/ringing.mp3 similarity index 100% rename from iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/Sounds/ringing.mp3 rename to iOSClient/ObvMessenger/ObvMessenger/VoIP/Helpers/Sounds/ringing.mp3 diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/JSON Messages/WebRTCDataChannelMessageJSON.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/JSON Messages/WebRTCDataChannelMessageJSON.swift index 9803d6e9..75b9b1dd 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/JSON Messages/WebRTCDataChannelMessageJSON.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/JSON Messages/WebRTCDataChannelMessageJSON.swift @@ -115,7 +115,7 @@ struct ContactBytesAndNameJSON: Codable { case rawGatheringPolicy = "gp" } - init(byteContactIdentity: Data, displayName: String, gatheringPolicy: GatheringPolicy) { + init(byteContactIdentity: Data, displayName: String, gatheringPolicy: OlvidCallGatheringPolicy) { self.byteContactIdentity = byteContactIdentity self.displayName = displayName self.rawGatheringPolicy = gatheringPolicy.rawValue @@ -135,9 +135,9 @@ struct ContactBytesAndNameJSON: Codable { try container.encode(rawGatheringPolicy, forKey: .rawGatheringPolicy) } - var gatheringPolicy: GatheringPolicy? { + var gatheringPolicy: OlvidCallGatheringPolicy? { guard let rawGatheringPolicy = rawGatheringPolicy else { return nil } - return GatheringPolicy(rawValue: rawGatheringPolicy) + return OlvidCallGatheringPolicy(rawValue: rawGatheringPolicy) } } @@ -152,19 +152,6 @@ struct UpdateParticipantsMessageJSON: WebRTCDataChannelInnerMessageJSON { case callParticipants = "cp" } - init(callParticipants: [CallParticipant]) async { - var callParticipants_: [ContactBytesAndNameJSON] = [] - for callParticipant in callParticipants { - let callParticipantState = await callParticipant.getPeerState() - guard callParticipantState == .connected || callParticipantState == .reconnecting else { continue } - let remoteCryptoId = callParticipant.remoteCryptoId - let displayName = callParticipant.fullDisplayName - guard let gatheringPolicy = await callParticipant.gatheringPolicy else { continue } - callParticipants_.append(ContactBytesAndNameJSON(byteContactIdentity: remoteCryptoId.getIdentity(), displayName: displayName, gatheringPolicy: gatheringPolicy)) - } - self.callParticipants = callParticipants_ - } - init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) self.callParticipants = try values.decode([ContactBytesAndNameJSON].self, forKey: .callParticipants) diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/JSON Messages/WebRTCInnerMessageJSON.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/JSON Messages/WebRTCInnerMessageJSON.swift index 1ecb3c55..2ad3c308 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/JSON Messages/WebRTCInnerMessageJSON.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/JSON Messages/WebRTCInnerMessageJSON.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -52,6 +52,7 @@ extension WebRTCInnerMessageJSON { return try decoder.decode(Self.self, from: data) } + /// The `callIdentifier` is the `uuidForWebRTC` func embedInWebRTCMessageJSON(callIdentifier: UUID) throws -> WebRTCMessageJSON { let serializedMessagePayloadAsData = try self.jsonEncode() guard let serializedMessagePayload = String(data: serializedMessagePayloadAsData, encoding: .utf8) else { @@ -115,7 +116,7 @@ struct StartCallMessageJSON: WebRTCInnerMessageJSON { } } - init(sessionDescriptionType: String, sessionDescription: String, turnUserName: String, turnPassword: String, turnServers: [String], participantCount: Int, groupIdentifier: GroupIdentifier?, gatheringPolicy: GatheringPolicy) throws { + init(sessionDescriptionType: String, sessionDescription: String, turnUserName: String, turnPassword: String, turnServers: [String], participantCount: Int, groupIdentifier: GroupIdentifier?, gatheringPolicy: OlvidCallGatheringPolicy) throws { self.sessionDescriptionType = sessionDescriptionType self.sessionDescription = sessionDescription self.turnUserName = turnUserName @@ -145,7 +146,8 @@ struct StartCallMessageJSON: WebRTCInnerMessageJSON { let groupOwnerIdentity = try values.decodeIfPresent(Data.self, forKey: .groupOwner), let groupUid = UID(uid: groupUidRaw), let groupOwner = try? ObvCryptoId(identity: groupOwnerIdentity) { - self.groupIdentifier = .groupV1(groupV1Identifier: (groupUid, groupOwner)) + let groupIdentifier = GroupV1Identifier(groupUid: groupUid, groupOwner: groupOwner) + self.groupIdentifier = .groupV1(groupV1Identifier: groupIdentifier) } else if let groupV2Identifier = try values.decodeIfPresent(Data.self, forKey: .groupV2Identifier) { self.groupIdentifier = .groupV2(groupV2Identifier: groupV2Identifier) } else { @@ -153,9 +155,9 @@ struct StartCallMessageJSON: WebRTCInnerMessageJSON { } } - var gatheringPolicy: GatheringPolicy? { + var gatheringPolicy: OlvidCallGatheringPolicy? { guard let rawGatheringPolicy = rawGatheringPolicy else { return nil } - return GatheringPolicy(rawValue: rawGatheringPolicy) + return OlvidCallGatheringPolicy(rawValue: rawGatheringPolicy) } } @@ -270,7 +272,7 @@ struct NewParticipantOfferMessageJSON: WebRTCInnerMessageJSON { case rawGatheringPolicy = "gp" } - init(sessionDescriptionType: String, sessionDescription: String, gatheringPolicy: GatheringPolicy) throws { + init(sessionDescriptionType: String, sessionDescription: String, gatheringPolicy: OlvidCallGatheringPolicy) throws { self.sessionDescriptionType = sessionDescriptionType self.sessionDescription = sessionDescription guard let data = sessionDescription.data(using: .utf8) else { throw Self.makeError(message: "Could not compress session description") } @@ -288,9 +290,9 @@ struct NewParticipantOfferMessageJSON: WebRTCInnerMessageJSON { self.rawGatheringPolicy = try values.decodeIfPresent(Int.self, forKey: .rawGatheringPolicy) } - var gatheringPolicy: GatheringPolicy? { + var gatheringPolicy: OlvidCallGatheringPolicy? { guard let rawGatheringPolicy = rawGatheringPolicy else { return nil } - return GatheringPolicy(rawValue: rawGatheringPolicy) + return OlvidCallGatheringPolicy(rawValue: rawGatheringPolicy) } } @@ -360,3 +362,16 @@ struct RemoveIceCandidatesMessageJSON: WebRTCInnerMessageJSON { } } + + +struct AnsweredOrRejectedOnOtherDeviceMessageJSON: WebRTCInnerMessageJSON { + + var messageType: WebRTCMessageJSON.MessageType { .answeredOrRejectedOnOtherDevice } + + let answered: Bool + + enum CodingKeys: String, CodingKey { + case answered = "ans" + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/NonCallKitSupport.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/NonCallKitSupport.swift deleted file mode 100644 index 211a8e9c..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/NonCallKitSupport.swift +++ /dev/null @@ -1,445 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import AudioToolbox -import OlvidUtils - -class NCXCallManager: ObvCallManager { - - var isCallKit: Bool { false } - private var callController = NCXCallController.instance - - func requestEndCallAction(call: Call) async throws { - let endCallAction = NCXEndCallAction(call: call.uuid) - try await callController.request(action: endCallAction) - } - - func requestAnswerCallAction(incomingCall: Call) async throws { - guard incomingCall.direction == .incoming else { assertionFailure(); return } - guard await !incomingCall.userDidAnsweredIncomingCall() else { return } - let answerCallAction = NCXAnswerCallAction(call: incomingCall.uuid) - try await callController.request(action: answerCallAction) - } - - func requestMuteCallAction(call: Call) async throws { - let muteCallAction = NCXSetMutedCallAction(call: call.uuid, muted: true) - try await callController.request(action: muteCallAction) - } - - func requestUnmuteCallAction(call: Call) async throws { - let umuteCallAction = NCXSetMutedCallAction(call: call.uuid, muted: false) - try await callController.request(action: umuteCallAction) - } - - func requestStartCallAction(call: Call, contactIdentifier: String, handleValue: String) async throws { - let handle = ObvHandleImpl(type_: .generic, value: handleValue) - let startCallAction = NCXStartCallAction(call: call.uuid, handle: handle) - startCallAction.contactIdentifier = contactIdentifier - try await callController.request(action: startCallAction) - } -} - -class NCXAction: ObvAction { - var debugDescription: String { String(describing: Self.self) } - var isComplete: Bool = false - func fulfill() { } - - func fail() { } -} - -class NCXCallAction: NCXAction, ObvCallAction { - var kind: ObvActionKind - - var callUUID: UUID - init(call: UUID, kind: ObvActionKind) { - self.kind = kind - self.callUUID = call - } -} - -class NCXStartCallAction: NCXCallAction, ObvStartCallAction { - var handle_: ObvHandle - var contactIdentifier: String? - var isVideo: Bool = false - - init(call: UUID, handle: ObvHandle) { - self.handle_ = handle - super.init(call: call, kind: .start) - } - func fulfill(withDateStarted: Date) { } -} - -class NCXAnswerCallAction: NCXCallAction, ObvAnswerCallAction { - init(call: UUID) { - super.init(call: call, kind: .answer) - } - func fulfill(withDateConnected: Date) { } - -} - -class NCXEndCallAction: NCXCallAction, ObvEndCallAction { - init(call: UUID) { - super.init(call: call, kind: .end) - } - func fulfill(withDateEnded: Date) { } -} - -class NCXSetHeldCallAction: NCXCallAction, ObvSetHeldCallAction { - var isOnHold: Bool - init(call: UUID, onHold: Bool) { - self.isOnHold = onHold - super.init(call: call, kind: .held) - } -} - -class NCXSetMutedCallAction: NCXCallAction, ObvSetMutedCallAction { - var isMuted: Bool - init(call: UUID, muted: Bool) { - self.isMuted = muted - super.init(call: call, kind: .mute) - } -} -class NCXPlayDTMFCallAction: NCXCallAction, ObvPlayDTMFCallAction { - var digits: String - var type_: ObvPlayDTMFCallActionType - init(call: UUID, digits: String, type_: ObvPlayDTMFCallActionType) { - self.digits = digits - self.type_ = type_ - super.init(call: call, kind: .playDTMF) - } -} - -class NCXCall: ObvCall { - var uuid: UUID - var isOutgoing: Bool - var isOnHold: Bool = false - var hasConnected: Bool = false - var hasEnded: Bool = false - - init(uuid: UUID, isOutgoing: Bool) { - self.uuid = uuid - self.isOutgoing = isOutgoing - } -} - -class NCXCallController: ObvErrorMaker { - - static let errorDomain = "NCXCallController" - - private static var _instance: NCXCallController? = nil - private init() { /* You shall not pass */ } - static var instance: NCXCallController { - Concurrency.sync(lock: "NCXCallController.instance") { - if _instance == nil { _instance = NCXCallController() } - return _instance! - } - } - - private var callObserver = NCXCallObserver.instance - - private var delegate: ObvProviderDelegate? - private var delegateQueue: DispatchQueue? - func setDelegate(_ delegate: ObvProviderDelegate?, queue: DispatchQueue?) { - self.delegate = delegate - self.delegateQueue = queue - } - - private var configuration: ObvProviderConfiguration! - fileprivate func setConfiguration(_ configuration: ObvProviderConfiguration) { - self.configuration = configuration - } - - - fileprivate func request(action: NCXCallAction) async throws { - guard let delegate = self.delegate else { - throw Self.makeError(message: "Unknown call provider") - } - - switch action.kind { - - case .start: - if let action = action as? ObvStartCallAction { - guard callObserver.calls_.first(where: { $0.uuid == action.callUUID }) == nil else { - throw Self.makeError(message: "Call UUID alreadt exists") - } - guard callObserver.calls_.count < configuration.maximumCallGroups else { - throw Self.makeError(message: "Maximum call groups reached") - } - let call = NCXCall(uuid: action.callUUID, isOutgoing: true) - callObserver.calls_.append(call) - callObserver.callObserver(callChanged: call) - await delegate.provider(perform: action) - } - - case .answer: - if let action = action as? ObvAnswerCallAction { - guard callObserver.calls_.count <= configuration.maximumCallGroups else { - throw Self.makeError(message: "Maximum call groups reached") - } - await delegate.provider(perform: action) - if let call = self.callObserver.calls_.first(where: { $0.uuid == action.callUUID }) as? NCXCall { - if !call.hasConnected { - call.hasConnected = true - self.callObserver.callObserver(callChanged: call) - } - } - } - - case .end: - if let action = action as? ObvEndCallAction { - guard callObserver.calls_.first(where: { $0.uuid == action.callUUID }) != nil else { - throw Self.makeError(message: "Unknown call UUID") - } - await delegate.provider(perform: action) - if let call = self.callObserver.calls_.first(where: { $0.uuid == action.callUUID }) as? NCXCall { - callObserver.calls_.removeAll(where: { $0.uuid == action.callUUID }) - if !call.hasEnded { - call.hasEnded = true - self.callObserver.callObserver(callChanged: call) - } - } - } - - case .held: - if let action = action as? ObvSetHeldCallAction { - guard callObserver.calls_.first(where: { $0.uuid == action.callUUID }) != nil else { - throw Self.makeError(message: "Unknown call UUID") - } - await delegate.provider(perform: action) - } - - case .mute: - if let action = action as? ObvSetMutedCallAction { - guard callObserver.calls_.first(where: { $0.uuid == action.callUUID }) != nil else { - throw Self.makeError(message: "Unknown call UUID") - } - await delegate.provider(perform: action) - } - - case .playDTMF: - if let action = action as? ObvPlayDTMFCallAction { - guard callObserver.calls_.first(where: { $0.uuid == action.callUUID }) != nil else { - throw Self.makeError(message: "Unknown call UUID") - } - await delegate.provider(perform: action) - } - - } - } - -} - -class NCXObvProvider: ObvProvider, ObvErrorMaker { - - static let errorDomain = "NCXObvProvider" - - private static var _instance: NCXObvProvider? = nil - private init() { /* You shall not pass */ } - static var instance: NCXObvProvider { - Concurrency.sync(lock: "NCXObvProvider.instance") { - if _instance == nil { _instance = NCXObvProvider() } - return _instance! - } - } - - private var configuration: ObvProviderConfiguration! - private var callObserver = NCXCallObserver.instance - private var callController = NCXCallController.instance - - func setConfiguration(_ configuration: ObvProviderConfiguration) { - self.configuration = configuration - self.callController.setConfiguration(configuration) - } - - var isCallKit: Bool { false } - - private let internalQueue: OperationQueue = { - let queue = OperationQueue() - queue.maxConcurrentOperationCount = 1 - queue.qualityOfService = .userInteractive - return queue - }() - - func setDelegate(_ delegate: ObvProviderDelegate?, queue: DispatchQueue?) { - callController.setDelegate(delegate, queue: queue) - } - - private var startedConnectingDates: [UUID: Date] = [:] - private var connectedDates: [UUID: Date] = [:] - private var callUpdates: [UUID: ObvCallUpdate] = [:] - - - func reportNewIncomingCall(with UUID: UUID, update: ObvCallUpdate, completion: @escaping (Result) -> Void) { - - guard callObserver.calls_.first(where: { $0.uuid == UUID }) == nil else { - let error = Self.makeError(message: "Call UUID already exists", code: ObvErrorCodeIncomingCallError.callUUIDAlreadyExists.rawValue) - completion(.failure(error)) - return - } - - /// REMARK It is not like in CX but it simplify a lot of code to have this test here - guard callObserver.calls_.count < configuration.maximumCallGroups else { - let error = Self.makeError(message: "Maximum call groups reached", code: ObvErrorCodeIncomingCallError.maximumCallGroupsReached.rawValue) - completion(.failure(error)) - return - } - - let call = NCXCall(uuid: UUID, isOutgoing: false) - callObserver.calls_.append(call) - - callObserver.callObserver(callChanged: call) - - completion(.success(())) - - // REMARK ? We should deal with do not disturb - - } - - - func reportCall(with UUID: UUID, updated update: ObvCallUpdate) { - print("☎️ NCX reportCall with ", update, UUID) - - if var current = callUpdates[UUID] { - current.remoteHandle_ = update.remoteHandle_ - current.localizedCallerName = update.localizedCallerName - current.supportsHolding = update.supportsHolding - current.supportsGrouping = update.supportsGrouping - current.supportsUngrouping = update.supportsUngrouping - current.supportsDTMF = update.supportsDTMF - current.hasVideo = update.hasVideo - } else { - callUpdates[UUID] = update - } - } - - func reportCall(with UUID: UUID, endedAt dateEnded: Date?, reason endedReason: ObvCallEndedReason) { - print("☎️ NCX reportCall", endedReason, UUID) - - guard let call = callObserver.calls_.first(where: { $0.uuid == UUID }) as? NCXCall else { - print("☎️ NCX reportCall (1): the given call does not exists ", UUID); return - } - if call.isOutgoing { - if let dateStartedConnecting = startedConnectingDates.removeValue(forKey: UUID) { - if let dateConnected = connectedDates.removeValue(forKey: UUID) { - if dateStartedConnecting >= dateConnected { - print("☎️ NCX reportCall (4): dates are incoherents ", UUID); assertionFailure(); return - assertionFailure() - } - } - } else { - print("☎️ NCX reportCall (2): the given call does not exists", UUID) - } - } - callObserver.calls_.removeAll(where: { $0.uuid == UUID }) - - if !call.hasEnded { - call.hasEnded = true - callObserver.callObserver(callChanged: call) - } - } - - func reportOutgoingCall(with UUID: UUID, startedConnectingAt dateStartedConnecting: Date?) { - print("☎️ NCX reportOutgoingCall startedConnectingAt") - guard let call = callObserver.calls_.first(where: { $0.uuid == UUID }) else { - print("☎️ NCX reportOutgoingCall startedConnectingAt -> could not find call"); return - } - startedConnectingDates[UUID] = dateStartedConnecting ?? Date() - callObserver.callObserver(callChanged: call) - } - - func reportOutgoingCall(with UUID: UUID, connectedAt dateConnected: Date?) { - print("☎️ NCX reportOutgoingCall connectedAt") - guard let call = callObserver.calls_.first(where: { $0.uuid == UUID }) as? NCXCall else { - print("☎️ NCX reportOutgoingCall connectedAt: the given call does not exists ", UUID); assertionFailure(); return - } - - assert(startedConnectingDates.keys.contains(UUID)) - connectedDates[UUID] = dateConnected ?? Date() - - call.hasConnected = true - callObserver.callObserver(callChanged: call) - } - - var configuration_: ObvProviderConfiguration { - get { configuration } - set { configuration = newValue } - } - - func invalidate() { - print("☎️ NCX invalidate") - for call in callObserver.calls_ { - reportCall(with: call.uuid, endedAt: Date(), reason: .failed) - } - callObserver.calls_.removeAll() - startedConnectingDates.removeAll() - connectedDates.removeAll() - callUpdates.removeAll() - } - - func reportNewCancelledIncomingCall() { - /// Nothing to call we do not have to present something to the user in case of error - } - -} - -class NCXCallObserver: ObvCallObserver { - - private static var _instance: NCXCallObserver? = nil - - private init() { /* You shall not pass */ } - - static var instance: NCXCallObserver { - Concurrency.sync(lock: "NCXCallObserver.instance") { - if _instance == nil { _instance = NCXCallObserver() } - return _instance! - } - } - - var calls_: [ObvCall] = [] - - private weak var delegate: ObvCallObserverDelegate? - private var queue: DispatchQueue? - - func setDelegate(_ delegate: ObvCallObserverDelegate?, queue: DispatchQueue?) { - self.delegate = delegate - self.queue = queue - } - - func callObserver(callChanged call: ObvCall) { - queue?.async { self.delegate?.callObserver(callChanged: call) } ?? self.delegate?.callObserver(callChanged: call) - } - -} - -/// NCXCallObserverDelegate Exemple -class NCXCallObserverTest: NSObject, ObvCallObserverDelegate { - - private let callObserver: ObvCallObserver = NCXCallObserver.instance - - override init() { - super.init() - callObserver.setDelegate(self, queue: DispatchQueue(label: "Queue for observing call")) - } - - func callObserver(callChanged call: ObvCall) { - print("☎️ NCX Observe call changed uuid=", call.uuid, " isOutgoing=", call.isOutgoing, " isOnHold=", call.isOnHold, " hasConnected=", call.hasConnected, " hasEnded=", call.hasEnded) - print("☎️ NCX Number of ObvCall=", callObserver.calls_.count) - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ObvAudioSessionUtils.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/ObvAudioSessionUtils.swift deleted file mode 100644 index b101055a..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ObvAudioSessionUtils.swift +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import Foundation -import AVFoundation -import os.log -import WebRTC -import ObvUICoreData - -enum AudioInputIcon { - case sf(_: String) - case png(_: String) -} - -struct AudioInput { - let label: String - let isCurrent: Bool - fileprivate let activate0: () -> Void - let icon: AudioInputIcon - let isSpeaker: Bool - - init(label: String, isCurrent: Bool, activate0: @escaping () -> Void, icon: AudioInputIcon, isSpeaker: Bool) { - self.label = label - self.isCurrent = isCurrent - self.activate0 = activate0 - self.icon = icon - self.isSpeaker = isSpeaker - } - - /// For testing purpose - init(label: String, isCurrent: Bool, icon: AudioInputIcon, isSpeaker: Bool) { - self.init(label: label, isCurrent: isCurrent, activate0: {}, icon: icon, isSpeaker: isSpeaker) - } - - func activate() { - activate0() - ObvMessengerInternalNotification.audioInputHasBeenActivated( - label: label, - activate: activate0).postOnDispatchQueue() - } -} - -extension AudioInput { - - var toAction: UIAction { - let state: UIMenuElement.State = isCurrent ? .on : .off - let image: UIImage? - switch icon { - case .sf(let systemName): - image = UIImage(systemName: systemName) - case .png(let name): - image = UIImage(named: name)?.withTintColor(UIColor.label) - } - return UIAction(title: label, image: image, identifier: nil, discoverabilityTitle: nil, state: state) { action in - activate() - } - } -} - -final class ObvAudioSessionUtils { - - @Atomic() static private(set) var shared = ObvAudioSessionUtils() - - private init() {} - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ObvAudioSessionUtils.self)) - - private let rtcAudioSession = RTCAudioSession.sharedInstance() - private var audioSession: AVAudioSession { rtcAudioSession.session } - - func configureAudioSessionForMakingOrAnsweringCall() throws { - os_log("☎️🎵 Configure audio session", log: log, type: .info) - try audioSession.setCategory(.playAndRecord) - try audioSession.setMode(.voiceChat) - } - - func getAllInputs() -> [AudioInput] { - let log = self.log - var inputs: [AudioInput] = [] - let currentRoute = audioSession.currentRoute - func isSpeakerCurrent() -> Bool { - return currentRoute.outputs.contains(where: { $0.isSpeaker }) - } - if let availableInputs = audioSession.availableInputs { - for input in availableInputs { - let label = input.portName - let activate = { - let audioSession = AVAudioSession.sharedInstance() - if isSpeakerCurrent() { - do { - try audioSession.overrideOutputAudioPort(.none) - os_log("☎️🎵 Speaker was disabled", log: log, type: .info) - } catch { - os_log("☎️🎵 Could not disable speaker: %{public}@", log: log, type: .info, error.localizedDescription) - } - } - try? audioSession.setPreferredInput(input) - } - var isCurrent = currentRoute.inputs.contains(where: {$0.portType == input.portType}) - if isCurrent, input.portType == .builtInMic { - /// Special case, we do not want to have both .builtInMic and speaker checked - /// we deselect manually builtInMic if the speaker is enabled. - isCurrent = !isSpeakerCurrent() - } - let icon = getAudioIcon(input: input) - inputs.append(AudioInput(label: label, isCurrent: isCurrent, activate0: activate, icon: icon, isSpeaker: false)) - } - } - do { - let label = CommonString.Word.Speaker - let activate = { - if !isSpeakerCurrent() { - do { - // This also switch back the input to the Built-In Microphone - let audioSession = AVAudioSession.sharedInstance() - try audioSession.overrideOutputAudioPort(.speaker) - os_log("☎️🎵 Speaker was enabled", log: log, type: .info) - } catch { - os_log("☎️🎵 Could not enable speaker: %{public}@", log: log, type: .info, error.localizedDescription) - } - } - } - inputs.append(AudioInput(label: label, isCurrent: isSpeakerCurrent(), activate0: activate, icon: .sf("speaker.3.fill"), isSpeaker: true)) - } - return inputs - } - - func getCurrentAudioInput() -> AudioInput? { - let allInputs = getAllInputs() - return allInputs.first { $0.isCurrent } - } - - - private func getAudioIcon(input: AVAudioSessionPortDescription) -> AudioInputIcon { - switch input.portType { - case .builtInMic: return .sf("iphone") - case .headsetMic: return .sf("headphones") - case .lineIn: return .sf("rectangle.dock") - case .airPlay: return .sf("airplayaudio") - case .bluetoothA2DP: return .png("bluetooth") - case .bluetoothLE: return .png("bluetooth") - case .bluetoothHFP: return .png("bluetooth") - case .builtInReceiver: return .sf("iphone") - case .builtInSpeaker: return .sf("speaker.3.fill") - case .HDMI: return .sf("display") - case .headphones: return .sf("headphones") - case .lineOut: return .sf("rectangle.dock") - default: assertionFailure() - } - return .sf("speaker.1.fill") - } - -} - - -extension AVAudioSessionPortDescription { - var isSpeaker: Bool { - return portType == AVAudioSession.Port.builtInSpeaker - } -} - -extension AVAudioSession.RouteChangeReason: CustomStringConvertible { - public var description: String { - switch self { - case .unknown: return "unknown" - case .newDeviceAvailable: return "newDeviceAvailable" - case .oldDeviceUnavailable: return "oldDeviceUnavailable" - case .categoryChange: return "categoryChange" - case .override: return "override" - case .wakeFromSleep: return "wakeFromSleep" - case .noSuitableRouteForCategory: return "noSuitableRouteForCategory" - case .routeConfigurationChange: return "routeConfigurationChange" - @unknown default: return "@unknown" - } - } - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/PeerConnection/ObvPeerConnection.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/ObvPeerConnection.swift similarity index 71% rename from iOSClient/ObvMessenger/ObvMessenger/VoIP/PeerConnection/ObvPeerConnection.swift rename to iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/ObvPeerConnection.swift index dd8c1166..8a069e59 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/PeerConnection/ObvPeerConnection.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/ObvPeerConnection.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -25,7 +25,7 @@ import OlvidUtils /// An instance of this class is a wrapper around a WebRTC `RTCPeerConnection` object. It ensures all the calls made to this wrapped object are made on the same internal serial queue. -final class ObvPeerConnection: NSObject, ObvErrorMaker { +final class ObvPeerConnection: NSObject { private static let internalQueue = DispatchQueue(label: "ObvPeerConnection internal queue") private static let factory = ObvPeerConnectionFactory(internalQueue: internalQueue) @@ -34,20 +34,22 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { private var peerConnection: RTCPeerConnection! private var dataChannel: RTCDataChannel? + private var audioTrack: RTCAudioTrack? - static let errorDomain = "ObvPeerConnection" - private(set) var connectionState: RTCPeerConnectionState = .new private(set) var signalingState: RTCSignalingState = .stable private(set) var iceConnectionState: RTCIceConnectionState = .new private weak var delegate: ObvPeerConnectionDelegate? + private weak var dataChannelDelegate: ObvDataChannelDelegate? - init?(with configuration: RTCConfiguration, constraints: RTCMediaConstraints, delegate: ObvPeerConnectionDelegate) async { + init(with configuration: RTCConfiguration, constraints: RTCMediaConstraints, delegate: ObvPeerConnectionDelegate) async throws { self.delegate = delegate super.init() - guard let pc = await ObvPeerConnection.factory.make(with: configuration, constraints: constraints, delegate: self) else { return nil } + guard let pc = await ObvPeerConnection.factory.make(with: configuration, constraints: constraints, delegate: self) else { + throw ObvError.rtcPeerConnectionCreationFailed + } self.peerConnection = pc } @@ -55,6 +57,7 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { func close() async { return await withCheckedContinuation { cont in Self.internalQueue.async { + os_log("☎️🔌 peerConnection.close()", log: Self.log, type: .info) self.peerConnection.close() cont.resume() } @@ -65,6 +68,7 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { func restartIce() async { return await withCheckedContinuation { cont in Self.internalQueue.async { + os_log("☎️🔌 peerConnection.restartIce()", log: Self.log, type: .info) self.peerConnection.restartIce() cont.resume() } @@ -87,13 +91,14 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { func offer(for mediaConstraints: RTCMediaConstraints) async throws -> RTCSessionDescription { return try await withCheckedThrowingContinuation({ cont in Self.internalQueue.async { + os_log("☎️🔌 peerConnection.peerConnection.offer", log: Self.log, type: .info) self.peerConnection.offer(for: mediaConstraints) { rtcSessionDescription, error in if let error = error { cont.resume(throwing: error) } else if let rtcSessionDescription = rtcSessionDescription { cont.resume(returning: rtcSessionDescription) } else { - cont.resume(throwing: Self.makeError(message: "rtcSessionDescription is nil, which is unexpected")) + cont.resume(throwing: ObvError.sdpOfferGenerationFailed) } } } @@ -104,13 +109,14 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { func answer(for mediaConstraints: RTCMediaConstraints) async throws -> RTCSessionDescription { return try await withCheckedThrowingContinuation({ cont in Self.internalQueue.async { + os_log("☎️🔌 peerConnection.peerConnection.answer", log: Self.log, type: .info) self.peerConnection.answer(for: mediaConstraints) { localRTCSessionDescription, error in if let error = error { cont.resume(throwing: error) } else if let localRTCSessionDescription = localRTCSessionDescription { cont.resume(returning: localRTCSessionDescription) } else { - cont.resume(throwing: Self.makeError(message: "localRTCSessionDescription is nil, which is unexpected")) + cont.resume(throwing: ObvError.sdpAnswerGenerationFailed) } } } @@ -121,7 +127,9 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { func setLocalDescription(_ sessionDescription: RTCSessionDescription) async throws { return try await withCheckedThrowingContinuation { cont in Self.internalQueue.async { - os_log("☎️ Setting the local description with sdp: %{public}@", log: Self.log, type: .info, sessionDescription.sdp) + //os_log("☎️ Setting the local description with sdp: %{public}@", log: Self.log, type: .info, sessionDescription.sdp) + os_log("☎️ Setting the local description", log: Self.log, type: .info) + os_log("☎️🔌 peerConnection.peerConnection.setLocalDescription", log: Self.log, type: .info) self.peerConnection.setLocalDescription(sessionDescription) { error in if let error = error { cont.resume(throwing: error) @@ -137,7 +145,9 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { func setRemoteDescription(_ sessionDescription: RTCSessionDescription) async throws { return try await withCheckedThrowingContinuation { cont in Self.internalQueue.async { - os_log("☎️ Setting the remote description with sdp: %{public}@", log: Self.log, type: .info, sessionDescription.sdp) + //os_log("☎️ Setting the remote description with sdp: %{public}@", log: Self.log, type: .info, sessionDescription.sdp) + os_log("☎️ Setting the remote description", log: Self.log, type: .info) + os_log("☎️🔌 peerConnection.peerConnection.setRemoteDescription", log: Self.log, type: .info) self.peerConnection.setRemoteDescription(sessionDescription) { error in if let error = error { cont.resume(throwing: error) @@ -150,9 +160,16 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { } + func rollback() async throws { + let rollbackSessionDescription = RTCSessionDescription(type: .rollback, sdp: "") + try await self.setLocalDescription(rollbackSessionDescription) + } + + func addIceCandidate(_ iceCandidate: RTCIceCandidate) async throws { return try await withCheckedThrowingContinuation { cont in Self.internalQueue.async { + os_log("☎️🔌 peerConnection.peerConnection.add(iceCandidate)", log: Self.log, type: .info) self.peerConnection.add(iceCandidate) { error in if let error = error { cont.resume(throwing: error) @@ -168,6 +185,7 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { func removeIceCandidates(_ iceCandidates: [RTCIceCandidate]) async { return await withCheckedContinuation { cont in Self.internalQueue.async { + os_log("☎️🔌 peerConnection.peerConnection.remove(iceCandidate)", log: Self.log, type: .info) self.peerConnection.remove(iceCandidates) cont.resume() } @@ -175,17 +193,34 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { } - func createDataChannel(for label: String, with configuration: RTCDataChannelConfiguration, delegate: RTCDataChannelDelegate) async { - return await withCheckedContinuation { cont in + func addDataChannel(dataChannelDelegate: ObvDataChannelDelegate) async throws { + let label = "data0" + let configuration = Self.createRTCDataChannelConfiguration() + try await withCheckedThrowingContinuation { (cont: CheckedContinuation) in Self.internalQueue.async { - self.dataChannel = self.peerConnection.dataChannel(forLabel: label, configuration: configuration) - self.dataChannel?.delegate = delegate + os_log("☎️🔌 peerConnection.peerConnection.dataChannel", log: Self.log, type: .info) + guard let dataChannel = self.peerConnection.dataChannel(forLabel: label, configuration: configuration) else { + cont.resume(throwing: ObvError.dataChannelCreationFailed) + return + } + self.dataChannel = dataChannel + self.dataChannelDelegate = dataChannelDelegate + self.dataChannel?.delegate = self cont.resume() } } } + private static func createRTCDataChannelConfiguration() -> RTCDataChannelConfiguration { + let configuration = RTCDataChannelConfiguration() + configuration.isOrdered = true + configuration.isNegotiated = true + configuration.channelId = 1 + return configuration + } + + func sendData(buffer: RTCDataBuffer) async -> Bool { return await withCheckedContinuation { cont in Self.internalQueue.async { [weak self] in @@ -198,20 +233,61 @@ final class ObvPeerConnection: NSObject, ObvErrorMaker { } - func addOlvidTracks() async throws -> RTCAudioTrack { + func addAudioTrack(isEnabled: Bool) async throws { let streamId = "audioStreamId" let audioConstrains = RTCMediaConstraints(mandatoryConstraints: nil, optionalConstraints: nil) let audioSource = try await Self.factory.audioSource(with: audioConstrains) let audioTrack = try await Self.factory.audioTrack(with: audioSource, trackId: "audio0") - return await withCheckedContinuation { cont in + await withCheckedContinuation { cont in Self.internalQueue.async { - audioTrack.isEnabled = true + audioTrack.isEnabled = isEnabled + os_log("☎️🔌 peerConnection.peerConnection.add(audioTrack)", log: Self.log, type: .info) self.peerConnection.add(audioTrack, streamIds: [streamId]) - cont.resume(returning: audioTrack) + self.audioTrack = audioTrack + cont.resume() + } + } + } + + + func setAudioTrack(isEnabled: Bool) async throws { + guard let audioTrack else { + assertionFailure() + throw ObvError.audioTrackIsNil + } + await withCheckedContinuation { (cont: CheckedContinuation) in + Self.internalQueue.async { + audioTrack.isEnabled = isEnabled + cont.resume() } } } + + + var isAudioTrackEnabled: Bool { + get throws { + guard let audioTrack else { + throw ObvError.audioTrackIsNil + } + return audioTrack.isEnabled + } + } + +} + +// MARK: - Errors + +extension ObvPeerConnection { + + enum ObvError: Error { + case sdpOfferGenerationFailed + case sdpAnswerGenerationFailed + case rtcPeerConnectionCreationFailed + case dataChannelCreationFailed + case audioTrackIsNil + } + } @@ -312,7 +388,7 @@ extension ObvPeerConnection: RTCPeerConnectionDelegate { guard peerConnection == self.peerConnection else { assertionFailure(); return } self.iceConnectionState = newState Task { [weak self] in - guard let _self = self else { assertionFailure(); return } + guard let _self = self else { return } guard let delegate = _self.delegate else { assertionFailure(); return } await delegate.peerConnection(_self, didChange: newState) } @@ -368,6 +444,32 @@ extension ObvPeerConnection: RTCPeerConnectionDelegate { } +// MARK: - RTCDataChannelDelegate + +extension ObvPeerConnection: RTCDataChannelDelegate { + + func dataChannelDidChangeState(_ dataChannel: RTCDataChannel) { + guard peerConnection == self.peerConnection else { assertionFailure(); return } + assert(self.dataChannel == dataChannel) + Task { [weak self] in + guard let self else { return } + await dataChannelDelegate?.dataChannelDidChangeState(dataChannel) + } + } + + + func dataChannel(_ dataChannel: RTCDataChannel, didReceiveMessageWith buffer: RTCDataBuffer) { + guard peerConnection == self.peerConnection else { assertionFailure(); return } + assert(self.dataChannel == dataChannel) + Task { [weak self] in + guard let self else { return } + await dataChannelDelegate?.dataChannel(dataChannel, didReceiveMessageWith: buffer) + } + } + +} + + protocol ObvPeerConnectionDelegate: AnyObject { func peerConnectionShouldNegotiate(_ peerConnection: ObvPeerConnection) async @@ -380,3 +482,11 @@ protocol ObvPeerConnectionDelegate: AnyObject { func peerConnection(_ peerConnection: ObvPeerConnection, didOpen dataChannel: RTCDataChannel) async } + + +protocol ObvDataChannelDelegate: AnyObject { + + func dataChannel(_ dataChannel: RTCDataChannel, didReceiveMessageWith buffer: RTCDataBuffer) async + func dataChannelDidChangeState(_ dataChannel: RTCDataChannel) async + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCall.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCall.swift new file mode 100644 index 00000000..09c55958 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCall.swift @@ -0,0 +1,1674 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import Combine +import os.log +import CallKit +import WebRTC +import ObvTypes +import ObvUICoreData + + +protocol OlvidCallDelegate: AnyObject { + func newWebRTCMessageToSend(webrtcMessage: WebRTCMessageJSON, contactID: TypeSafeManagedObjectID, forStartingCall: Bool) async + func newParticipantWasAdded(call: OlvidCall, callParticipant: OlvidCallParticipant) async + func receivedRelayedMessage(call: OlvidCall, messageType: WebRTCMessageJSON.MessageType, serializedMessagePayload: String, uuidForWebRTC: UUID, fromOlvidUser: OlvidUserId) async + func receivedHangedUpMessage(call: OlvidCall, serializedMessagePayload: String, uuidForWebRTC: UUID, fromOlvidUser: OlvidUserId) async + func requestTurnCredentialsForCall(call: OlvidCall, ownedIdentityForRequestingTurnCredentials: ObvCryptoId) async throws -> ObvTurnCredentials + func incomingWasNotAnsweredToAndTimedOut(call: OlvidCall) async + func callDidChangeState(call: OlvidCall, previousState: OlvidCall.State, newState: OlvidCall.State) +} + + +final class OlvidCall: ObservableObject { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "OlvidCall") + + let uuidForCallKit: UUID + let uuidForWebRTC: UUID + let groupId: GroupIdentifier? + let ownedCryptoId: ObvCryptoId + /// Used for an outgoing call. If the owned identity making the call is allowed to do so, this is set to this owned identity. If she is not, this is set to some other owned identity on this device that is allowed to make calls. + /// This makes it possible to make secure outgoing calls available to all profiles on this device as soon as one profile is allowed to make secure outgoing calls. + let ownedIdentityForRequestingTurnCredentials: ObvCryptoId? // Only for outgoing calls + private var turnCredentials: ObvTurnCredentials? // Only for outgoing calls + let turnCredentialsReceivedFromCaller: TurnCredentials? // Only for incoming calls + let direction: Direction + let initialParticipantCount: Int + private var pendingIceCandidates = [ObvCryptoId: [IceCandidateJSON]]() + /// If we are a call participant, we might receive relayed WebRTC messages from the caller (in the case another participant is not "known" to us, i.e., we have not secure channel with her). + /// We may receive those messages before we are aware of this participant. When this happens, we add those messages to `pendingReceivedRelayedMessages`. + /// These messages will be used as soon as we are aware of this participant. + private var pendingReceivedRelayedMessages = [ObvCryptoId: [(messageType: WebRTCMessageJSON.MessageType, messagePayload: String)]]() + private(set) var receivedOfferMessages: [ObvCryptoId: (OlvidUserId, NewParticipantOfferMessageJSON)] = [:] + private let rtcPeerConnectionQueue: OperationQueue + @Published private(set) var otherParticipants: [OlvidCallParticipant] + @Published private(set) var state = State.initial + @Published private(set) var dateWhenCallSwitchedToInProgress: Date? + + /* Variables used for audio */ + + @Published private(set) var selfIsMuted = false + @Published private(set) var availableAudioOptions: [OlvidCallAudioOption]? // Nil if the available options cannot be determined yet + @Published private(set) var currentAudioOptions: [OlvidCallAudioOption] // Empty if the current option cannot be determined yet + @Published private(set) var isSpeakerEnabled: Bool + private var isSpeakerEnabledValueChosenByUser: Bool? // Nil unless the user manually decided to activate/deactivate the speaker. This allows to reflect the user choice even if the audio choices are not yet available. + private let timer = Timer.publish(every: 2, on: .main, in: .common).autoconnect() // Allows to keep availableAudioOptions up-to-date + private var cancellables = Set() + + /// When receiving an incoming call, we let some time to the user to answer the call. After that, we end it automatically. + private static let ringingTimeoutInterval: TimeInterval = 60 // 60 seconds + + /// This task allows to implement the mechanism allowing to wait until ``currentlyCreatingPeerConnection`` + /// is set back to false before proceeding with a negotiation. + private var sleepingTasksToCancelWhenEndingCallParticipantsModification = [Task]() + + /// This Boolean is set to `true` when entering a method that could end up modifying the set of call participants. + /// It is set back to `false` whenever this method is done. + /// It allows to implement a mechanism preventing two distinct methods to interfere when both can end up modifying the set of call participants. + private var aTaskIsCurrentlyModifyingCallParticipants = false { + didSet { + guard !aTaskIsCurrentlyModifyingCallParticipants else { return } + oneOfTheTaskCurrentlyModifyingCallParticipantsIsDone() + } + } + + private weak var delegate: OlvidCallDelegate? + + + private init(ownedCryptoId: ObvCryptoId, callIdentifierForCallKit: UUID, otherParticipants: [OlvidCallParticipant], ownedIdentityForRequestingTurnCredentials: ObvCryptoId?, direction: Direction, uuidForWebRTC: UUID, initialParticipantCount: Int, groupId: GroupIdentifier?, turnCredentialsReceivedFromCaller: TurnCredentials?, rtcPeerConnectionQueue: OperationQueue, delegate: OlvidCallDelegate) { + self.ownedCryptoId = ownedCryptoId + self.uuidForCallKit = callIdentifierForCallKit + self.otherParticipants = otherParticipants + self.ownedIdentityForRequestingTurnCredentials = ownedIdentityForRequestingTurnCredentials + self.direction = direction + self.uuidForWebRTC = uuidForWebRTC + self.initialParticipantCount = initialParticipantCount + self.groupId = groupId + self.turnCredentialsReceivedFromCaller = turnCredentialsReceivedFromCaller + self.rtcPeerConnectionQueue = rtcPeerConnectionQueue + self.delegate = delegate + self.availableAudioOptions = Self.getAvailableOlvidCallAudioOption() + self.currentAudioOptions = RTCAudioSession.sharedInstance().session.currentRoute.inputs.map({ .init(portDescription: $0) }) + self.isSpeakerEnabled = false // The currentRoute.outputs always contain the builtInSpeaker speaker at this point, although we know it won't be activated. We set this value to false by default. + regularlyUpdatePublishedAudioInformations() + } + + + deinit { + cancellables.forEach { $0.cancel() } + os_log("☎️ OlvidCall deinit", log: Self.log, type: .fault) + } + + + static func createIncomingCall(callIdentifierForCallKit: UUID, uuidForWebRTC: UUID, callerId: ObvContactIdentifier, startCallMessage: StartCallMessageJSON, rtcPeerConnectionQueue: OperationQueue, delegate: OlvidCallDelegate) async throws -> OlvidCall { + + let shouldISendTheOfferToCallParticipant = Self.shouldISendTheOfferToCallParticipant(ownedCryptoId: callerId.ownedCryptoId, cryptoId: callerId.contactCryptoId) + + let caller = try await OlvidCallParticipant.createCallerOfIncomingCall( + callerId: callerId, + startCallMessage: startCallMessage, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant, + rtcPeerConnectionQueue: rtcPeerConnectionQueue) + + let incomingCall = OlvidCall( + ownedCryptoId: callerId.ownedCryptoId, + callIdentifierForCallKit: callIdentifierForCallKit, + otherParticipants: [caller], + ownedIdentityForRequestingTurnCredentials: nil, + direction: .incoming, + uuidForWebRTC: uuidForWebRTC, + initialParticipantCount: startCallMessage.participantCount, + groupId: startCallMessage.groupIdentifier, + turnCredentialsReceivedFromCaller: startCallMessage.turnCredentials, + rtcPeerConnectionQueue: rtcPeerConnectionQueue, + delegate: delegate) + + await caller.setDelegate(to: incomingCall) + + await incomingCall.sendRingingMessageToCallerAndScheduleTimeout() + + return incomingCall + + } + + + @MainActor + static func createOutgoingCall(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set, ownedIdentityForRequestingTurnCredentials: ObvCryptoId, groupId: GroupIdentifier?, rtcPeerConnectionQueue: OperationQueue, delegate: OlvidCallDelegate) async throws -> OlvidCall { + + let callIdentifierForCallKitAndWebRTC = UUID() + + var callees = [OlvidCallParticipant]() + for contactCryptoId in contactCryptoIds { + let shouldISendTheOfferToCallParticipant = Self.shouldISendTheOfferToCallParticipant(ownedCryptoId: ownedCryptoId, cryptoId: contactCryptoId) + let contactId = ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + let callee = try await OlvidCallParticipant.createCalleeOfOutgoingCall( + calleeId: contactId, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant, + rtcPeerConnectionQueue: rtcPeerConnectionQueue) + callees.append(callee) + } + + callees.sort(by: \.displayName) + + let outgoingCall = OlvidCall( + ownedCryptoId: ownedCryptoId, + callIdentifierForCallKit: callIdentifierForCallKitAndWebRTC, + otherParticipants: callees, + ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, + direction: .outgoing, + uuidForWebRTC: callIdentifierForCallKitAndWebRTC, + initialParticipantCount: contactCryptoIds.count, + groupId: groupId, + turnCredentialsReceivedFromCaller: nil, + rtcPeerConnectionQueue: rtcPeerConnectionQueue, + delegate: delegate) + + for otherParticipant in outgoingCall.otherParticipants { + await otherParticipant.setDelegate(to: outgoingCall) + } + + return outgoingCall + + } + + + private var callerOfIncomingCall: OlvidCallParticipant? { + return otherParticipants.first(where: { $0.isCallerOfIncomingCall }) + } + + + /// Given the information available for this call, this method returns the most up-to-date `CXCallUpdate` possible. + func createUpToDateCXCallUpdate() async -> CXCallUpdate { + let update = CXCallUpdate() + let sortedContacts: [(isCaller: Bool, displayName: String)] = otherParticipants.map { + let displayName = $0.displayName + return ($0.isCallerOfIncomingCall, displayName) + }.sorted { + if $0.isCaller { return true } + if $1.isCaller { return false } + return $0.displayName < $1.displayName + } + + if self.direction == .incoming && sortedContacts.count == 1 { + update.localizedCallerName = sortedContacts.first?.displayName + if initialParticipantCount > 1 { + update.localizedCallerName! += " + \(initialParticipantCount - 1)" + } + } else if sortedContacts.count > 0 { + let contactName = sortedContacts.map({ $0.displayName }).joined(separator: ", ") + update.localizedCallerName = contactName + } else { + update.localizedCallerName = "..." + } + update.remoteHandle = .init(type: .generic, value: uuidForCallKit.uuidString) + update.hasVideo = false + update.supportsGrouping = false + update.supportsUngrouping = false + update.supportsHolding = false + update.supportsDTMF = false + return update + } + + + static func shouldISendTheOfferToCallParticipant(ownedCryptoId: ObvTypes.ObvCryptoId, cryptoId: ObvTypes.ObvCryptoId) -> Bool { + /// REMARK it should be the same as io.olvid.messenger.webrtc.WebrtcCallService#shouldISendTheOfferToCallParticipant in java + return ownedCryptoId > cryptoId + } + +} + + +// MARK: - Audio + +extension OlvidCall { + + /// This method is *not* called from the UI but from the coordinator, as a response to our request made in + /// ``func userRequestedToToggleAudio() async`` + func setMuteSelfForOtherParticipants(muted: Bool) async throws { + for participant in self.otherParticipants { + try await participant.setMuteSelf(muted: muted) + } + await setSelfIsMuted(to: muted) + for participant in self.otherParticipants { + Task { await participant.sendMutedMessageJSON() } + } + } + + /// We set the ``selfIsMuted`` propery on the main actor as it is a published property, used at the UI level. + @MainActor + private func setSelfIsMuted(to newSelfIsMuted: Bool) async { + withAnimation { + self.selfIsMuted = newSelfIsMuted + } + } + + + func userWantsToChangeSpeaker(to isSpeakerEnabled: Bool) async throws { + isSpeakerEnabledValueChosenByUser = isSpeakerEnabled + let rtcAudioSession = RTCAudioSession.sharedInstance() + rtcAudioSession.lockForConfiguration() + try rtcAudioSession.overrideOutputAudioPort(isSpeakerEnabled ? .speaker : .none) + rtcAudioSession.unlockForConfiguration() + } + + + func userWantsToActivateAudioOption(_ audioOption: OlvidCallAudioOption) async throws { + let rtcAudioSession = RTCAudioSession.sharedInstance() + rtcAudioSession.lockForConfiguration() + do { + if let portDescription = audioOption.portDescription { + isSpeakerEnabledValueChosenByUser = false + try rtcAudioSession.overrideOutputAudioPort(.none) + try rtcAudioSession.setPreferredInput(portDescription) + } else { + isSpeakerEnabledValueChosenByUser = true + try rtcAudioSession.overrideOutputAudioPort(.speaker) + } + } catch { + rtcAudioSession.unlockForConfiguration() + throw error + } + rtcAudioSession.unlockForConfiguration() + await updatePublishedAudioInformations() + } + + + /// Returns `nil` if the options are not yet known (e.g., at the very begining of an outgoing call). + private static func getAvailableOlvidCallAudioOption() -> [OlvidCallAudioOption]? { + let rtcAudioSession = RTCAudioSession.sharedInstance() + guard let availableInputs = rtcAudioSession.session.availableInputs else { return nil } + var inputs: [OlvidCallAudioOption] = availableInputs.map({ .init(portDescription: $0) }) + inputs.append(OlvidCallAudioOption.builtInSpeaker()) + return inputs + } + + + /// Called during init, so as to make sure the ``availableAudioOptions`` stay up-to-date. + private func regularlyUpdatePublishedAudioInformations() { + timer + .sink { [weak self] _ in + Task { [weak self] in await self?.updatePublishedAudioInformations() } + } + .store(in: &cancellables) + } + + + @MainActor + private func updatePublishedAudioInformations() async { + let rtcAudioSession = RTCAudioSession.sharedInstance() + self.availableAudioOptions = Self.getAvailableOlvidCallAudioOption() + self.currentAudioOptions = rtcAudioSession.currentRoute.inputs.map({ .init(portDescription: $0) }) + if currentAudioOptions.isEmpty { + // The available audio options are not yet available (typicall at the very begining of an outgoing call) + // We set the isSpeakerEnabled to the value manually chosen by the user (if any) or to false otherwise + self.isSpeakerEnabled = isSpeakerEnabledValueChosenByUser ?? false + } else { + // Typical case during a call. We don't use the value chosen by the user as we want the UI to reflect the "true" + // state of the speaker, now that we are able to determine it. + self.isSpeakerEnabled = rtcAudioSession.currentRoute.outputs.contains(where: { $0.portType == .builtInSpeaker }) + } + } + +} + +// MARK: - For incoming calls + +extension OlvidCall { + + /// This method is called by the ``OlvidCallManager`` immediately after the local user accepted an incoming call from the in-house UI. + /// This allows to quickly switch the call state (and thus, allows to have a responsive UI). + /// Note that the call manager will still have to notify the call acceptance to the call controller. Eventually, this will trigger the + /// ``localUserWantsToAnswerThisIncomingCall()`` method. + /// Note that if the user accepts an incoming call from the CallKit UI, this method is not called, but the ``localUserWantsToAnswerThisIncomingCall()`` is always called. + func localUserAcceptedIncomingCallFromInHouseUI() async { + assert(self.direction == .incoming) + await setCallState(to: .userAnsweredIncomingCall) + } + + + /// This is called from the `OlvidCallManager` when the local user accepted an incoming call (either on the CallKit interface or on the Olvid UI). + /// Returns the caller infos. + func localUserWantsToAnswerThisIncomingCall() async throws -> OlvidCallParticipantInfo? { + os_log("☎️ Call to localUserWantsToAnswerThisIncomingCall()", log: Self.log, type: .info) + await setCallState(to: .userAnsweredIncomingCall) + guard let callerOfIncomingCall else { + assertionFailure() + throw ObvError.callerIsNotSet + } + try await callerOfIncomingCall.localUserAcceptedIncomingCallFromThisCallParticipant() + return callerOfIncomingCall.info + } + + + + /// This called from the ``OlvidCallManager`` when the user ends an incoming call (either on the CallKit interface or on the Olvid UI). + func endWasRequestedByLocalUser() async -> CallReport? { + os_log("☎️🔚 Call to endWasRequestedByLocalUser()", log: Self.log, type: .info) + let values = await endWebRTCCall(reason: .localUserRequest) + assert(values.cxCallEndedReason == nil, "Since the end of this call was request by the local user, it does not make sense to have a CXCallEndedReason") + return values.callReport + } + + + func processNewParticipantOfferMessageJSONFromContact(_ contact: OlvidUserId, _ newParticipantOffer: NewParticipantOfferMessageJSON) async throws { + guard let participant = await getParticipant(remoteCryptoId: contact.remoteCryptoId) else { + // Put the message in queue as we might simply receive the update call participant message later + await addPendingOffer((contact, newParticipantOffer), from: contact.remoteCryptoId) + return + } + guard !Self.shouldISendTheOfferToCallParticipant(ownedCryptoId: ownedCryptoId, cryptoId: contact.remoteCryptoId) else { assertionFailure(); return } + guard let turnCredentialsReceivedFromCaller else { assertionFailure(); throw ObvError.noTurnCredentialsFound } + try await participant.updateRecipient(newParticipantOfferMessage: newParticipantOffer, turnCredentials: turnCredentialsReceivedFromCaller) + } + + + func processKickMessageJSONFromContact(_ contact: OlvidUserId) async throws -> (callReport: CallReport?, cxCallEndedReason: CXCallEndedReason?) { + guard direction == .incoming else { assertionFailure(); return (nil, nil) } + guard let participant = await getParticipant(remoteCryptoId: contact.remoteCryptoId) else { assertionFailure(); return (nil, nil) } + guard participant.isCallerOfIncomingCall else { assertionFailure(); return (nil, nil) } + os_log("☎️ We received an KickMessageJSON from caller", log: Self.log, type: .info) + return await endWebRTCCall(reason: .kicked) + } + + + func processAnsweredOrRejectedOnOtherDeviceMessage(answered: Bool) async -> (callReport: CallReport?, cxCallEndedReason: CXCallEndedReason?) { + guard direction == .incoming else { assertionFailure(); return (nil, nil) } + return await endWebRTCCall(reason: .answeredOrRejectedOnOtherDevice(answered: answered)) + } + + + /// Called when creating an incoming call + func sendRingingMessageToCallerAndScheduleTimeout() async { + + assert(direction == .incoming) + + guard let caller = self.callerOfIncomingCall else { + os_log("☎️ Could not send ringing message as the caller is not set", log: Self.log, type: .fault) + assertionFailure() + return + } + + // Send a RingingMessageJSON + + let rejectedMessage = RingingMessageJSON() + do { + try await sendWebRTCMessage(to: caller, innerMessage: rejectedMessage, forStartingCall: false) + } catch { + os_log("☎️ Failed to send a RejectCallMessageJSON to the caller: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() // Continue anyway + } + + // Schedule a timeout after which this incoming call should be automatically ended + + Task { [weak self] in + try? await Task.sleep(for: Self.ringingTimeoutInterval) + guard let self else { return } + guard state == .initial else { return } + // The following call will eventually call us back, with the endIncomingCallAsItTimedOut() method. + // We don't call it directly since ending the call is not enough (we have to remove it from the call manager, etc.) + await delegate?.incomingWasNotAnsweredToAndTimedOut(call: self) + } + + } + + +} + + +// MARK: - For outgoing calls + +extension OlvidCall { + + func startOutgoingCall() async throws { + + guard let delegate else { + assertionFailure() + throw ObvError.delegateIsNil + } + + guard let ownedIdentityForRequestingTurnCredentials else { + assertionFailure() + throw ObvError.ownedIdentityForRequestingTurnCredentialsIsNil + } + + // Will will request turn credentials, we want the outgoing call to reflect that + await setCallState(to: .gettingTurnCredentials) + + assert(self.turnCredentials == nil) + let turnCredentials = try await delegate.requestTurnCredentialsForCall(call: self, ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials) + + self.turnCredentials = turnCredentials + for otherParticipant in self.otherParticipants { + try await otherParticipant.setTurnCredentialsAndCreateUnderlyingPeerConnection(turnCredentials: turnCredentials.turnCredentialsForRecipient) + try? await Task.sleep(milliseconds: 300) // 300 ms, dirty trick, required to prevent a deadlock of the WebRTC library + } + await setCallState(to: .initializingCall) + + } + + + func processAnswerCallJSONFromContact(_ contact: OlvidUserId, _ answerCallMessage: AnswerCallJSON) async throws -> OlvidCallParticipantInfo? { + guard self.direction == .outgoing else { assertionFailure(); throw ObvError.notOutgoingCall } + await setCallState(to: .outgoingCallIsConnecting) + guard let participant = await getParticipant(remoteCryptoId: contact.remoteCryptoId) else { assertionFailure(); throw ObvError.couldNotFindParticipant } + let sessionDescription = RTCSessionDescription(type: answerCallMessage.sessionDescriptionType, sdp: answerCallMessage.sessionDescription) + do { + try await participant.setRemoteDescription(sessionDescription: sessionDescription) + } catch { + try await participant.closeConnection() + throw error + } + return participant.info + } + + + func processRejectCallMessageFromContact(_ contact: OlvidUserId) async -> OlvidCallParticipantInfo? { + guard self.direction == .outgoing else { assertionFailure(); return nil } + guard let participant = await getParticipant(remoteCryptoId: contact.remoteCryptoId) else { return nil } + await participant.rejectedOutgoingCall() + assert(participant.state.isFinalState) + await updateStateFromPeerStates() + return participant.info + } + + + func processRingingMessageJSONFromContact(_ contact: OlvidUserId) async { + guard self.direction == .outgoing else { assertionFailure(); return } + guard let participant = await getParticipant(remoteCryptoId: contact.remoteCryptoId) else { return } + await participant.isRinging() + } + + + /// Dispatching on the main actor as we modify a published variable used at the UI level. + @MainActor + func userWantsToAddParticipantsToThisOutgoingCall(participantsToAdd: Set) async throws { + + guard self.direction == .outgoing else { + assertionFailure() + throw ObvError.notOutgoingCall + } + + guard let turnCredentials else { + assertionFailure() + throw ObvError.noTurnCredentialsFound + } + + var callees = [OlvidCallParticipant]() + for contactCryptoId in participantsToAdd { + guard otherParticipants.first(where: { $0.cryptoId == contactCryptoId }) == nil else { assertionFailure(); continue } + let shouldISendTheOfferToCallParticipant = Self.shouldISendTheOfferToCallParticipant(ownedCryptoId: ownedCryptoId, cryptoId: contactCryptoId) + let contactId = ObvContactIdentifier(contactCryptoId: contactCryptoId, ownedCryptoId: ownedCryptoId) + let callee = try await OlvidCallParticipant.createCalleeOfOutgoingCall( + calleeId: contactId, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant, + rtcPeerConnectionQueue: rtcPeerConnectionQueue) + callees.append(callee) + } + + callees.sort(by: \.displayName) + + var newOtherParticipants = callees + self.otherParticipants + newOtherParticipants.sort(by: \.displayName) + withAnimation { + self.otherParticipants = newOtherParticipants + } + + for newParticipant in callees { + try? await Task.sleep(milliseconds: 300) // 300 ms, dirty trick, required to prevent a deadlock of the WebRTC library + await newParticipant.setDelegate(to: self) + do { + try await newParticipant.setTurnCredentialsAndCreateUnderlyingPeerConnection(turnCredentials: turnCredentials.turnCredentialsForRecipient) + } catch { + assertionFailure(error.localizedDescription) + continue + } + await delegate?.newParticipantWasAdded(call: self, callParticipant: newParticipant) + } + + } + + + func userWantsToRemoveParticipantFromThisOutgoingCall(cryptoId: ObvCryptoId) async throws { + + guard self.direction == .outgoing else { + assertionFailure() + throw ObvError.notOutgoingCall + } + + guard let participantToKick = otherParticipants.first(where: { $0.cryptoId == cryptoId }) else { assertionFailure(); return } + + await participantToKick.callerKicksThisParticipant() + + // Send kick to the kicked participant + + let kickMessage = KickMessageJSON() + do { + try await sendWebRTCMessage(to: participantToKick, innerMessage: kickMessage, forStartingCall: false) + } catch { + os_log("☎️ Could not send KickMessageJSON to kicked contact: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + // Continue anyway + } + + } + +} + + +// MARK: - Processing messages received by the CallProviderDelegate + +extension OlvidCall { + + func callParticipantDidHangUp(participantId: OlvidUserId) async throws -> OlvidCallParticipantInfo? { + guard let participant = await getParticipant(remoteCryptoId: participantId.remoteCryptoId) else { return nil } + await participant.didHangUp() + assert(participant.state.isFinalState) + await updateStateFromPeerStates() + return participant.info + } + + + func processBusyMessageJSONFromContact(_ contact: OlvidUserId) async -> OlvidCallParticipantInfo? { + guard let participant = await getParticipant(remoteCryptoId: contact.remoteCryptoId) else { assertionFailure(); return nil } + await participant.isBusy() + return participant.info + } + + + func processReconnectCallMessageJSONFromContact(_ contact: OlvidUserId, _ reconnectCallMessage: ReconnectCallMessageJSON) async throws { + guard !self.state.isFinalState else { return } + guard let participant = await getParticipant(remoteCryptoId: contact.remoteCryptoId) else { + // Happens when receiving a message from a kicked participant + return + } + let sessionDescription = RTCSessionDescription(type: reconnectCallMessage.sessionDescriptionType, sdp: reconnectCallMessage.sessionDescription) + try await participant.handleReceivedRestartSdp( + sessionDescription: sessionDescription, + reconnectCounter: reconnectCallMessage.reconnectCounter ?? 0, + peerReconnectCounterToOverride: reconnectCallMessage.peerReconnectCounterToOverride ?? 0) + } + + + func processNewParticipantAnswerMessageJSONFromContact(_ contact: OlvidUserId, _ newParticipantAnswer: NewParticipantAnswerMessageJSON) async throws { + guard let participant = await getParticipant(remoteCryptoId: contact.remoteCryptoId) else { assertionFailure(); return } + guard Self.shouldISendTheOfferToCallParticipant(ownedCryptoId: ownedCryptoId, cryptoId: contact.remoteCryptoId) else { return } + let sessionDescription = RTCSessionDescription(type: newParticipantAnswer.sessionDescriptionType, sdp: newParticipantAnswer.sessionDescription) + try await participant.processNewParticipantAnswerMessageJSON(sessionDescription: sessionDescription) + } + +} + + +// MARK: - Ending a call + +extension OlvidCall { + + + /// Called from the ``OlvidCallManager`` when an incoming call times out because the user did not answer it + func endIncomingCallAsItTimedOut() async -> (callReport: CallReport?, cxCallEndedReason: CXCallEndedReason?) { + guard direction == .incoming else { + assertionFailure() + return (nil, nil) + } + guard state == .initial else { + assertionFailure() + return (nil, nil) + } + let values = await endWebRTCCall(reason: .callTimedOut) + assert(values.cxCallEndedReason == .unanswered) + return values + } + + + /// This method is eventually called when ending a call, either because the local user requested to end the call, or the remote user hanged up, + /// Or because some error occured, etc. It perfoms final important steps before settting the call into an appropriate final state. + /// This is the only method that actually sets the call state to a final state. + private func endWebRTCCall(reason: EndCallReason) async -> (callReport: CallReport?, cxCallEndedReason: CXCallEndedReason?) { + + assert(delegate != nil) + + guard !state.isFinalState else { return (nil, nil) } + + // Potentially send a hangup/reject call message to the other participants or to the caller + + await sendAppropriateMessageOnEndCall(reason: reason) + + // Change the call state + + let finalStateToSet = getFinalStateToSetOnEndCall(reason: reason) + assert(finalStateToSet.isFinalState) + await setCallState(to: finalStateToSet) + + // In the end, we might have to report to our delegate + + let callReport = getEndCallReport(reason: reason) + + // Get appropriate end reason + + let cxCallEndedReason = getEndCallReasonForOurDelegate(reason: reason) + + // Return values + + return (callReport, cxCallEndedReason) + + } + + + private func getFinalStateToSetOnEndCall(reason: EndCallReason) -> State { + + switch reason { + + case .callTimedOut: + return .unanswered + + case .localUserRequest: + switch direction { + case .outgoing: + return .hangedUp + case .incoming: + switch state { + case .initial, .ringing, .initializingCall: + return .callRejected + case .userAnsweredIncomingCall, .callInProgress, .outgoingCallIsConnecting, .reconnecting: + return .hangedUp + case .gettingTurnCredentials, .hangedUp, .kicked, .callRejected, .unanswered, .answeredOnAnotherDevice: + assertionFailure() + return .callRejected + } + } + + case .kicked: + assert(direction == .incoming) + return .kicked + + case .allOtherParticipantsLeft: + if state == .initial { + return .unanswered + } else { + return .hangedUp + } + + case .answeredOrRejectedOnOtherDevice(answered: _): + assert(direction == .incoming) + return .answeredOnAnotherDevice + + } + + } + + + /// Exclusively called from ``endWebRTCCall(reason:)`` + private func getEndCallReasonForOurDelegate(reason: EndCallReason) -> CXCallEndedReason? { + switch reason { + case .callTimedOut: + return .unanswered + case .localUserRequest: + return nil + case .kicked: + assert(direction == .incoming) + return .remoteEnded + case .allOtherParticipantsLeft: + if state == .initial { + return .unanswered + } else { + return .remoteEnded + } + case .answeredOrRejectedOnOtherDevice(answered: let answered): + assert(direction == .incoming) + return answered ? .answeredElsewhere : .declinedElsewhere + } + } + + + /// Exclusively called from ``endWebRTCCall(reason:)`` + private func sendAppropriateMessageOnEndCall(reason: EndCallReason) async { + + switch reason { + + case .callTimedOut: + await sendLocalUserHangedUpMessageToAllParticipants() + + case .localUserRequest: + switch direction { + case .outgoing: + await sendLocalUserHangedUpMessageToAllParticipants() + case .incoming: + switch state { + case .initial, .ringing, .initializingCall: + await sendRejectIncomingCallToCaller() + case .userAnsweredIncomingCall, .callInProgress, .outgoingCallIsConnecting, .reconnecting: + await sendLocalUserHangedUpMessageToAllParticipants() + case .gettingTurnCredentials, .hangedUp, .kicked, .callRejected, .unanswered: + assertionFailure() + await sendRejectIncomingCallToCaller() + case .answeredOnAnotherDevice: + assertionFailure() + break + } + } + + case .kicked: + assert(direction == .incoming) // No need to send reject/hangup message + + case .allOtherParticipantsLeft: + break // No need to send reject/hangup message + + case .answeredOrRejectedOnOtherDevice(answered: _): + assert(direction == .incoming) // No need to send reject/hangup message + + } + + } + + + /// Exclusively called from ``endWebRTCCall(reason:)`` + private func getEndCallReport(reason: EndCallReason) -> CallReport? { + + switch reason { + case .callTimedOut: + switch direction { + case .incoming: + return .missedIncomingCall(caller: callerOfIncomingCall?.info, participantCount: initialParticipantCount) + case .outgoing: + return .unansweredOutgoingCall(with: otherParticipants.map({ $0.info })) + } + case .localUserRequest: + switch direction { + case .incoming: + switch state { + case .initial, .ringing, .initializingCall, .callRejected: + return .rejectedIncomingCall(caller: callerOfIncomingCall?.info, participantCount: initialParticipantCount) + case .userAnsweredIncomingCall, .callInProgress, .hangedUp, .outgoingCallIsConnecting, .reconnecting: + return nil + case .gettingTurnCredentials, .kicked, .unanswered, .answeredOnAnotherDevice: + assertionFailure() + return .rejectedIncomingCall(caller: callerOfIncomingCall?.info, participantCount: initialParticipantCount) + } + case .outgoing: + return .uncompletedOutgoingCall(with: otherParticipants.map({ $0.info })) + } + case .kicked: + assert(direction == .incoming) + return nil + case .allOtherParticipantsLeft: + return nil + case .answeredOrRejectedOnOtherDevice(let answered): + assert(direction == .incoming) + assert(callerOfIncomingCall?.info != nil) + return .answeredOrRejectedOnOtherDevice(caller: callerOfIncomingCall?.info, answered: answered) + } + + } + + + private func sendLocalUserHangedUpMessageToAllParticipants() async { + let hangedUpMessage = HangedUpMessageJSON() + for participant in self.otherParticipants { + do { + try await sendWebRTCMessage(to: participant, innerMessage: hangedUpMessage, forStartingCall: false) + } catch { + os_log("☎️ Failed to send a HangedUpMessageJSON to a participant: %{public}@", log: Self.log, type: .error, error.localizedDescription) + assertionFailure() // Continue anyway + } + } + } + + + private func sendRejectIncomingCallToCaller() async { + assert(direction == .incoming) + guard let caller = self.callerOfIncomingCall else { + os_log("Could not find caller", log: Self.log, type: .fault) + assertionFailure() + return + } + let rejectedMessage = RejectCallMessageJSON() + do { + try await sendWebRTCMessage(to: caller, innerMessage: rejectedMessage, forStartingCall: false) + } catch { + os_log("Failed to send a RejectCallMessageJSON to the caller: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() // Continue anyway + } + } + + + private func sendBusyMessageToCaller() async { + assert(direction == .incoming) + guard let caller = self.callerOfIncomingCall else { + os_log("Could not find caller", log: Self.log, type: .fault) + assertionFailure() + return + } + let rejectedMessage = BusyMessageJSON() + do { + try await sendWebRTCMessage(to: caller, innerMessage: rejectedMessage, forStartingCall: false) + } catch { + os_log("Failed to send a BusyMessageJSON to the caller: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() // Continue anyway + } + } + + + enum EndCallReason { + case callTimedOut + case localUserRequest + case kicked // incoming call only + case allOtherParticipantsLeft + case answeredOrRejectedOnOtherDevice(answered: Bool) + } + + +} + + +// MARK: - Sending WebRTC (and other) messages + +extension OlvidCall { + + private func sendWebRTCMessage(to: OlvidCallParticipant, innerMessage: WebRTCInnerMessageJSON, forStartingCall: Bool) async throws { + guard let delegate else { assertionFailure(); throw ObvError.delegateIsNil } + let message = try innerMessage.embedInWebRTCMessageJSON(callIdentifier: uuidForWebRTC) + if case .hangedUp = message.messageType { + // Also send message on the data channel, if the caller is gone + do { + let hangedUpDataChannel = try HangedUpDataChannelMessageJSON().embedInWebRTCDataChannelMessageJSON() + try await to.sendDataChannelMessage(hangedUpDataChannel) + } catch { + os_log("☎️ Could not send HangedUpDataChannelMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + // Continue anyway + } + } + switch to.knownOrUnknown { + case .known(contactObjectID: let contactObjectID): + await delegate.newWebRTCMessageToSend(webrtcMessage: message, contactID: contactObjectID, forStartingCall: forStartingCall) + case .unknown(remoteCryptoId: let remoteCryptoId): + guard message.messageType.isAllowedToBeRelayed else { assertionFailure(); return } + guard self.direction == .incoming else { assertionFailure(); return } + guard let caller = self.callerOfIncomingCall else { + // This happen if the caller quit the call before we did, and we continued the call with a user who is not a contact + return + } + let toContactIdentity = remoteCryptoId.getIdentity() + + do { + let dataChannelMessage = try RelayMessageJSON(to: toContactIdentity, relayedMessageType: message.messageType.rawValue, serializedMessagePayload: message.serializedMessagePayload).embedInWebRTCDataChannelMessageJSON() + try await caller.sendDataChannelMessage(dataChannelMessage) + } catch { + assertionFailure() + os_log("☎️ Could not send RelayMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + return + } + } + } + +} + + +// MARK: - Implementing CallParticipantDelegate + +extension OlvidCall: OlvidCallParticipantDelegate { + + func participantWasUpdated(callParticipant: OlvidCallParticipant, updateKind: OlvidCallParticipant.UpdateKind) async { + + guard self.otherParticipants.firstIndex(where: { $0.cryptoId == callParticipant.cryptoId }) != nil else { + // Happens when the participant was kicked + return + } + + switch updateKind { + case .state(newState: let newState): + switch newState { + case .initial: + break + case .startCallMessageSent: + break + case .ringing: + guard self.direction == .outgoing else { return } + guard [State.initializingCall, .gettingTurnCredentials, .initial].contains(state) else { return } + await setCallState(to: .ringing) + case .busy: + await removeParticipant(callParticipant: callParticipant) + case .connectingToPeer: + guard state == .userAnsweredIncomingCall else { return } + await setCallState(to: .initializingCall) + case .connected: + guard state != .callInProgress else { return } + await setCallState(to: .callInProgress) + case .reconnecting: + // If the call is not in a final state and + // if all other participants are in a reconnecting state, play a sound + if !state.isFinalState { + let allOtherParticipantsAreReconnecting = otherParticipants.allSatisfy({ $0.state == .reconnecting }) + if allOtherParticipantsAreReconnecting { + await setCallState(to: .reconnecting) + } + } + case .callRejected, .hangedUp, .kicked, .failed, .connectionTimeout: + break + } + case .contactID: + break + case .contactMuted: + break + } + } + + + func connectionIsChecking(for callParticipant: OlvidCallParticipant) { + // Task { await CallSounds.shared.prepareFeedback() } + } + + + func connectionIsConnected(for callParticipant: OlvidCallParticipant, oldParticipantState: OlvidCallParticipant.State) async { + + do { + if self.direction == .outgoing && oldParticipantState != .connected && oldParticipantState != .reconnecting { + let message = try await UpdateParticipantsMessageJSON(callParticipants: otherParticipants).embedInWebRTCDataChannelMessageJSON() + let callParticipantsToNotify = otherParticipants.filter({ $0.cryptoId != callParticipant.cryptoId }) + for callParticipant in callParticipantsToNotify { + try await callParticipant.sendDataChannelMessage(message) + } + } + } catch { + os_log("We failed to notify the other participants about the new participants list: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + // Continue anyway + } + + // If the current state is not already "callInProgress", it means that the first participant + // just joined to call. We want to change the state to "callInProgress" (which will play the + // appropriate sounds, etc.). + + await setCallState(to: .callInProgress) + } + + + func connectionWasClosed(for callParticipant: OlvidCallParticipant) async { + await removeParticipant(callParticipant: callParticipant) + await updateStateFromPeerStates() + } + + + func dataChannelIsOpened(for callParticipant: OlvidCallParticipant) async { + guard self.direction == .outgoing else { return } + do { + let message = try await UpdateParticipantsMessageJSON(callParticipants: otherParticipants).embedInWebRTCDataChannelMessageJSON() + try await callParticipant.sendDataChannelMessage(message) + } catch { + os_log("We failed to notify the participant about the new participants list: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + } + } + + + func updateParticipants(with allCallParticipants: [ContactBytesAndNameJSON]) async throws { + + os_log("☎️ Entering updateParticipant(newCallParticipants: [ContactBytesAndNameJSON])", log: Self.log, type: .info) + os_log("☎️ The latest list of call participants contains %d participant(s)", log: Self.log, type: .info, allCallParticipants.count) + os_log("☎️ Before processing this list, we consider there are %d participant(s) in this call", log: Self.log, type: .info, otherParticipants.count) + + // In case of large group calls, we can encounter race conditions. We prevent that by waiting until it is safe to process the new participants list + + await waitUntilItIsSafeToModifyParticipants() + + // Now that it is our turn to potentially modify the participants set, we must make sure no other task will interfere. + // The mechanism allowing to do so requires to set the following Boolean to true now, and to false when we are done. + + aTaskIsCurrentlyModifyingCallParticipants = true + defer { aTaskIsCurrentlyModifyingCallParticipants = false } + + // We can proceed + + guard direction == .incoming else { + assertionFailure() + throw ObvError.selfIsNotIncomingCall + } + guard let turnCredentials = self.turnCredentialsReceivedFromCaller else { + assertionFailure() + throw ObvError.noTurnCredentialsFound + } + + let selfIsMuted = self.selfIsMuted + + // Remove our own identity from the list of call participants. + + let allCallParticipants = allCallParticipants.filter({ $0.byteContactIdentity != ownedCryptoId.getIdentity() }) + + // Determine the CryptoIds of the local list of participants and of the reveived version of the list + + let currentIdsOfParticipants = Set(otherParticipants.compactMap({ $0.cryptoId })) + let updatedIdsOfParticipants = Set(allCallParticipants.compactMap({ try? ObvCryptoId(identity: $0.byteContactIdentity) })) + + // Determine the participants to add to the local list, and those that should be removed + + let idsOfParticipantsToAdd = updatedIdsOfParticipants.subtracting(currentIdsOfParticipants) + let idsOfParticipantsToRemove = currentIdsOfParticipants.subtracting(updatedIdsOfParticipants) + + // Perform the necessary steps to add the participants + + os_log("☎️ We have %d participant(s) to add", log: Self.log, type: .info, idsOfParticipantsToAdd.count) + + for remoteCryptoId in idsOfParticipantsToAdd { + + let gatheringPolicy = allCallParticipants + .first(where: { $0.byteContactIdentity == remoteCryptoId.getIdentity() }) + .map({ $0.gatheringPolicy ?? .gatherOnce }) ?? .gatherOnce + + let displayName = allCallParticipants + .first(where: { $0.byteContactIdentity == remoteCryptoId.getIdentity() }) + .map({ $0.displayName }) ?? "-" + + let shouldISendTheOfferToCallParticipant = Self.shouldISendTheOfferToCallParticipant(ownedCryptoId: ownedCryptoId, cryptoId: remoteCryptoId) + + let callParticipant = try await OlvidCallParticipant.createOtherParticipantOfIncomingCall( + ownedCryptoId: ownedCryptoId, + remoteCryptoId: remoteCryptoId, + gatheringPolicy: gatheringPolicy, + displayName: displayName, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant, + rtcPeerConnectionQueue: rtcPeerConnectionQueue) + + await addParticipant(callParticipant: callParticipant) + await delegate?.newParticipantWasAdded(call: self, callParticipant: callParticipant) + + if shouldISendTheOfferToCallParticipant { + os_log("☎️ Will set credentials for offer to a call participant", log: Self.log, type: .info) + try await callParticipant.setTurnCredentialsAndCreateUnderlyingPeerConnection(turnCredentials: turnCredentials) + } else { + os_log("☎️ No need to send offer to the call participant", log: Self.log, type: .info) + /// check if we already received the offer the CallParticipant is supposed to send us + if let (user, newParticipantOfferMessage) = self.receivedOfferMessages.removeValue(forKey: remoteCryptoId) { + try await processNewParticipantOfferMessageJSONFromContact(user, newParticipantOfferMessage) + } + } + + } + + // If we were muted, we must make sure we stay muted for all participant, including the new ones + + try await setMuteSelfForOtherParticipants(muted: selfIsMuted) + + // Perform the necessary steps to remove the participants. + // Note that we know the caller is among the participants and we do not want to remove her here. + + os_log("☎️ We have %d participant(s) to remove (unless one if the caller)", log: Self.log, type: .info, idsOfParticipantsToRemove.count) + + for remoteCryptoId in idsOfParticipantsToRemove { + guard let participant = otherParticipants.first(where: { $0.cryptoId == remoteCryptoId }) else { continue } + guard !participant.isCallerOfIncomingCall else { continue } + try await participant.closeConnection() + await removeParticipant(callParticipant: participant) + } + + } + + + func relay(from: ObvTypes.ObvCryptoId, to: ObvTypes.ObvCryptoId, messageType: ObvUICoreData.WebRTCMessageJSON.MessageType, messagePayload: String) async { + + guard messageType.isAllowedToBeRelayed else { assertionFailure(); return } + + guard let participant = otherParticipants.first(where: { $0.cryptoId == to }) else { assertionFailure(); return } + let message: WebRTCDataChannelMessageJSON + do { + message = try RelayedMessageJSON(from: from.getIdentity(), relayedMessageType: messageType.rawValue, serializedMessagePayload: messagePayload).embedInWebRTCDataChannelMessageJSON() + } catch { + os_log("☎️ Could not send UpdateParticipantsMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + do { + try await participant.sendDataChannelMessage(message) + } catch { + os_log("☎️ Could not send data channel message: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + return + } + } + + + + /// Called by an `OlvidCallParticipant` when receiving a hanged up message. Since we want this message (received on the WebRTC data channel) to receive the same + /// treatment as the one we can received on the WebSocket, we notify our delegate. + @MainActor + func receivedHangedUpMessage(from callParticipant: OlvidCallParticipant, messagePayload: String) async { + let fromOlvidUser: OlvidUserId + switch callParticipant.knownOrUnknown { + case .known(let contactObjectID): + do { + guard let contact = try PersistedObvContactIdentity.get(objectID: contactObjectID.objectID, within: ObvStack.shared.viewContext) else { + assertionFailure() + os_log("☎️ Could not find the contact to whom we should relay the message", log: Self.log, type: .error) + return + } + let contactIdentifier = try contact.contactIdentifier + let ownedCryptoId = contactIdentifier.ownedCryptoId + fromOlvidUser = .known(contactObjectID: contact.typedObjectID, ownCryptoId: ownedCryptoId, remoteCryptoId: contactIdentifier.contactCryptoId, displayName: contact.customOrNormalDisplayName) + } catch { + assertionFailure() + return + } + case .unknown: + fromOlvidUser = .unknown(ownCryptoId: ownedCryptoId, remoteCryptoId: callParticipant.cryptoId, displayName: callParticipant.displayName) + } + await delegate?.receivedHangedUpMessage( + call: self, + serializedMessagePayload: messagePayload, + uuidForWebRTC: uuidForWebRTC, + fromOlvidUser: fromOlvidUser) + } + + + /// Processes a messages that was relayed by the caller but originally sent by the `from` + @MainActor + func receivedRelayedMessage(from: ObvTypes.ObvCryptoId, messageType: ObvUICoreData.WebRTCMessageJSON.MessageType, messagePayload: String) async { + os_log("☎️ Call to receivedRelayedMessage", log: Self.log, type: .info) + guard let callParticipant = otherParticipants.first(where: { $0.cryptoId == from }) else { + os_log("☎️ Could not find the call participant in receivedRelayedMessage. We store the relayed message for later", log: Self.log, type: .info) + if var previous = pendingReceivedRelayedMessages[from] { + previous.append((messageType, messagePayload)) + pendingReceivedRelayedMessages[from] = previous + } else { + pendingReceivedRelayedMessages[from] = [(messageType, messagePayload)] + } + return + } + let fromOlvidUser: OlvidUserId + let contactIdentifier: ObvContactIdentifier + switch callParticipant.knownOrUnknown { + case .known(let contactObjectID): + do { + guard let contact = try PersistedObvContactIdentity.get(objectID: contactObjectID.objectID, within: ObvStack.shared.viewContext) else { + assertionFailure() + os_log("☎️ Could not find the contact to whom we should relay the message", log: Self.log, type: .error) + return + } + contactIdentifier = try contact.contactIdentifier + let ownedCryptoId = contactIdentifier.ownedCryptoId + fromOlvidUser = .known(contactObjectID: contact.typedObjectID, ownCryptoId: ownedCryptoId, remoteCryptoId: contactIdentifier.contactCryptoId, displayName: contact.customOrNormalDisplayName) + } catch { + assertionFailure() + return + } + case .unknown(remoteCryptoId: let remoteCryptoId): + os_log("☎️ Receiving a message from a participant that is not a contact. The message was relayed by the caller", log: Self.log, type: .error) + fromOlvidUser = .unknown(ownCryptoId: ownedCryptoId, remoteCryptoId: remoteCryptoId, displayName: callParticipant.displayName) + } + await delegate?.receivedRelayedMessage( + call: self, + messageType: messageType, + serializedMessagePayload: messagePayload, + uuidForWebRTC: uuidForWebRTC, + fromOlvidUser: fromOlvidUser) + } + + + @MainActor + func sendStartCallMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription, turnCredentials: TurnCredentials) async throws { + + let gatheringPolicy = await callParticipant.gatheringPolicy + + guard let turnServers = turnCredentials.turnServers else { + assertionFailure() + os_log("☎️ The turn servers are not set, which is unexpected at this point", log: Self.log, type: .fault) + throw ObvError.noTurnServersFound + } + + var filteredGroupId: GroupIdentifier? + switch groupId { + case .groupV1(groupV1Identifier: let groupV1Identifier): + do { + guard let contactGroup = try? PersistedContactGroup.getContactGroup(groupIdentifier: groupV1Identifier, ownedCryptoId: ownedCryptoId, within: ObvStack.shared.viewContext) else { + os_log("☎️ Could not find contactGroup", log: Self.log, type: .fault) + return + } + let groupMembers = Set(contactGroup.contactIdentities.map { $0.cryptoId }) + if groupMembers.contains(callParticipant.cryptoId) { + filteredGroupId = .groupV1(groupV1Identifier: groupV1Identifier) + } + } + case .groupV2(groupV2Identifier: let groupV2Identifier): + do { + guard let group = try? PersistedGroupV2.get(ownIdentity: ownedCryptoId, appGroupIdentifier: groupV2Identifier, within: ObvStack.shared.viewContext) else { + os_log("☎️ Could not find PersistedGroupV2", log: Self.log, type: .fault) + return + } + let groupMembers = Set(group.otherMembers.compactMap({ $0.cryptoId })) + if groupMembers.contains(callParticipant.cryptoId) { + filteredGroupId = .groupV2(groupV2Identifier: group.groupIdentifier) + } + } + case .none: + filteredGroupId = nil + } + + let message = try StartCallMessageJSON( + sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), + sessionDescription: sessionDescription.sdp, + turnUserName: turnCredentials.turnUserName, + turnPassword: turnCredentials.turnPassword, + turnServers: turnServers, + participantCount: otherParticipants.count, + groupIdentifier: filteredGroupId, + gatheringPolicy: gatheringPolicy) + + try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: true) + + } + + + func sendAnswerCallMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription) async throws { + + let message: WebRTCInnerMessageJSON + let messageDescripton = callParticipant.isCallerOfIncomingCall ? "AnswerIncomingCall" : "NewParticipantAnswerMessage" + do { + if callParticipant.isCallerOfIncomingCall { + message = try AnswerCallJSON(sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), sessionDescription: sessionDescription.sdp) + } else { + message = try NewParticipantAnswerMessageJSON(sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), sessionDescription: sessionDescription.sdp) + } + } catch { + os_log("Could not create and send %{public}@: %{public}@", log: Self.log, type: .fault, messageDescripton, error.localizedDescription) + assertionFailure() + throw error + } + try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) + } + + + func sendNewParticipantOfferMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription) async throws { + let message = try await NewParticipantOfferMessageJSON( + sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), + sessionDescription: sessionDescription.sdp, + gatheringPolicy: callParticipant.gatheringPolicy) + try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) + } + + + func sendNewParticipantAnswerMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription) async throws { + let message = try NewParticipantAnswerMessageJSON( + sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), + sessionDescription: sessionDescription.sdp) + try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) + } + + + func sendReconnectCallMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async throws { + let message = try ReconnectCallMessageJSON( + sessionDescriptionType: RTCSessionDescription.string(for: sessionDescription.type), + sessionDescription: sessionDescription.sdp, + reconnectCounter: reconnectCounter, + peerReconnectCounterToOverride: peerReconnectCounterToOverride) + try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) + } + + + func sendNewIceCandidateMessage(to callParticipant: OlvidCallParticipant, iceCandidate: RTCIceCandidate) async throws { + let message = IceCandidateJSON(sdp: iceCandidate.sdp, sdpMLineIndex: iceCandidate.sdpMLineIndex, sdpMid: iceCandidate.sdpMid) + try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) + } + + + func sendRemoveIceCandidatesMessages(to callParticipant: OlvidCallParticipant, candidates: [RTCIceCandidate]) async throws { + let message = RemoveIceCandidatesMessageJSON(candidates: candidates.map({ IceCandidateJSON(sdp: $0.sdp, sdpMLineIndex: $0.sdpMLineIndex, sdpMid: $0.sdpMid) })) + try await sendWebRTCMessage(to: callParticipant, innerMessage: message, forStartingCall: false) + } + +} + + +// MARK: - Helpers for managing participants + +extension OlvidCall { + + @MainActor + private func addParticipant(callParticipant: OlvidCallParticipant) async { + await callParticipant.setDelegate(to: self) + guard otherParticipants.firstIndex(where: { $0.cryptoId == callParticipant.cryptoId }) == nil else { + os_log("☎️ The participant already exists in the set, we should never happen since we have an anti-race mechanism", log: Self.log, type: .fault) + assertionFailure() + return + } + withAnimation { + otherParticipants.append(callParticipant) + otherParticipants.sort(by: \.displayName) + } + let iceCandidates = pendingIceCandidates.removeValue(forKey: callParticipant.cryptoId) ?? [] + for iceCandidate in iceCandidates { + try? await callParticipant.processIceCandidatesJSON(message: iceCandidate) + } + // Process the messages from this participant that were relayed by the caller that were received before we were aware of this participant. + if let relayedMessagesToProcess = pendingReceivedRelayedMessages.removeValue(forKey: callParticipant.cryptoId) { + for relayedMsg in relayedMessagesToProcess { + os_log("☎️ Processing a relayed message received while we were not aware of this call participant", log: Self.log, type: .info) + await receivedRelayedMessage(from: callParticipant.cryptoId, messageType: relayedMsg.messageType, messagePayload: relayedMsg.messagePayload) + } + } + } + + + @MainActor + func getParticipant(remoteCryptoId: ObvCryptoId) async -> OlvidCallParticipant? { + return otherParticipants.first(where: { $0.cryptoId == remoteCryptoId }) + } + + + @MainActor + func addPendingOffer(_ receivedOfferMessage: (OlvidUserId, NewParticipantOfferMessageJSON), from remoteCryptoId: ObvCryptoId) async { + assert(receivedOfferMessages[remoteCryptoId] == nil) + receivedOfferMessages[remoteCryptoId] = receivedOfferMessage + } + + + @MainActor + private func removeParticipant(callParticipant: OlvidCallParticipant) async { + + guard let index = otherParticipants.firstIndex(where: { $0.cryptoId == callParticipant.cryptoId }) else { return } + otherParticipants.remove(at: index) + + if otherParticipants.isEmpty { + _ = await endWebRTCCall(reason: .allOtherParticipantsLeft) + } + + // If we are the caller (i.e., if this is an outgoing call) and if the call is not over, we send an updated list of participants to the remaining participants + + if direction == .outgoing && !state.isFinalState { + let message: WebRTCDataChannelMessageJSON + do { + message = try await UpdateParticipantsMessageJSON(callParticipants: otherParticipants).embedInWebRTCDataChannelMessageJSON() + } catch { + os_log("☎️ Could not send UpdateParticipantsMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + for otherParticipant in otherParticipants { + try? await otherParticipant.sendDataChannelMessage(message) + } + } + + } + + + private func updateStateFromPeerStates() async { + for callParticipant in otherParticipants { + guard callParticipant.state.isFinalState else { return } + } + // If we reach this point, all call participants are in a final state, we can end the call. + _ = await endWebRTCCall(reason: .allOtherParticipantsLeft) + } + + + /// This method allows to make sure we are not risking race conditions when updating the list of participants. + private func waitUntilItIsSafeToModifyParticipants() async { + while aTaskIsCurrentlyModifyingCallParticipants { + os_log("☎️ Since we are already currently modifying call participants, we must wait", log: Self.log, type: .info) + let sleepTask: Task = Task { try? await Task.sleep(seconds: 60) } + sleepingTasksToCancelWhenEndingCallParticipantsModification.insert(sleepTask, at: 0) // First in, first out + try? await sleepTask.value // Note the "try?": we don't want to throw when the task is cancelled + } + } + + + private func oneOfTheTaskCurrentlyModifyingCallParticipantsIsDone() { + assert(!aTaskIsCurrentlyModifyingCallParticipants) + while let sleepingTask = sleepingTasksToCancelWhenEndingCallParticipantsModification.popLast() { + os_log("☎️ Since a task potentially modifying the set of call participants is done, we can proceed with the next one", log: Self.log, type: .info) + sleepingTask.cancel() + } + } + +} + + +// MARK: - ICE candidates + +extension OlvidCall { + + @MainActor + func processIceCandidatesJSON(iceCandidate: IceCandidateJSON, participantId: OlvidUserId) async throws { + if let callParticipant = otherParticipants.first(where: { $0.cryptoId == participantId.remoteCryptoId }) { + try await callParticipant.processIceCandidatesJSON(message: iceCandidate) + } else { + if var previousCandidates = pendingIceCandidates[participantId.remoteCryptoId] { + previousCandidates.append(iceCandidate) + pendingIceCandidates[participantId.remoteCryptoId] = previousCandidates + } else { + pendingIceCandidates[participantId.remoteCryptoId] = [iceCandidate] + } + } + } + + + @MainActor + func removeIceCandidatesJSON(removeIceCandidatesJSON: RemoveIceCandidatesMessageJSON, participantId: OlvidUserId) async throws { + if let callParticipant = otherParticipants.first(where: { $0.cryptoId == participantId.remoteCryptoId }) { + await callParticipant.processRemoveIceCandidatesMessageJSON(message: removeIceCandidatesJSON) + } else { + if var candidates = pendingIceCandidates[participantId.remoteCryptoId] { + candidates.removeAll(where: { removeIceCandidatesJSON.candidates.contains($0) }) + pendingIceCandidates[participantId.remoteCryptoId] = candidates + } + } + } + + +} + + +// MARK: - Errors + +extension OlvidCall { + + enum ObvError: Error { + case delegateIsNil + case couldNotFindCallerAmongContacts + case callerIsNotSet + case tryingToStartOutgoingCallAlthoughItIsNotInInitalState + case selfIsNotIncomingCall + case noTurnCredentialsFound + case noTurnServersFound + case notOutgoingCall + case couldNotFindParticipant + case ownedIdentityForRequestingTurnCredentialsIsNil + } + +} + +extension OlvidCall: CustomDebugStringConvertible { + + var debugDescription: String { + "OlvidCall" + } + +} + +// MARK: - State management + +extension OlvidCall { + + enum State: Hashable, CustomDebugStringConvertible { + + case initial + case userAnsweredIncomingCall + case gettingTurnCredentials // Only for outgoing calls + case initializingCall + case ringing + case outgoingCallIsConnecting + case callInProgress + case reconnecting + + case hangedUp + case kicked + case callRejected + + case unanswered + case answeredOnAnotherDevice + + var debugDescription: String { + switch self { + case .outgoingCallIsConnecting: return "outgoingCallIsConnecting" + case .kicked: return "kicked" + case .userAnsweredIncomingCall: return "userAnsweredIncomingCall" + case .gettingTurnCredentials: return "gettingTurnCredentials" + case .initializingCall: return "initializingCall" + case .ringing: return "ringing" + case .initial: return "initial" + case .callRejected: return "callRejected" + case .callInProgress: return "callInProgress" + case .hangedUp: return "hangedUp" + case .unanswered: return "unanswered" + case .answeredOnAnotherDevice: return "answeredOnAnotherDevice" + case .reconnecting: return "reconnecting" + } + } + + var isFinalState: Bool { + switch self { + case .callRejected, .hangedUp, .unanswered, .kicked, .answeredOnAnotherDevice: + return true + case .gettingTurnCredentials, .userAnsweredIncomingCall, .initializingCall, .ringing, .initial, .callInProgress, .outgoingCallIsConnecting, .reconnecting: + return false + } + } + + var localizedString: String { + switch self { + case .initial: return NSLocalizedString("CALL_STATE_NEW", comment: "") + case .gettingTurnCredentials: return NSLocalizedString("CALL_STATE_GETTING_TURN_CREDENTIALS", comment: "") + case .kicked: return NSLocalizedString("CALL_STATE_KICKED", comment: "") + case .userAnsweredIncomingCall, .initializingCall: return NSLocalizedString("CALL_STATE_INITIALIZING_CALL", comment: "") + case .ringing: return NSLocalizedString("CALL_STATE_RINGING", comment: "") + case .callRejected: return NSLocalizedString("CALL_STATE_CALL_REJECTED", comment: "") + case .callInProgress: return NSLocalizedString("SECURE_CALL_IN_PROGRESS", comment: "") + case .hangedUp: return NSLocalizedString("CALL_STATE_HANGED_UP", comment: "") + case .unanswered: return NSLocalizedString("UNANSWERED", comment: "") + case .answeredOnAnotherDevice: return NSLocalizedString("ANSWERED_ON_ANOTHER_OWNED_DEVICE", comment: "") + case .outgoingCallIsConnecting: return NSLocalizedString("OUTGOING_CALL_IS_CONNECTING", comment: "") + case .reconnecting: return NSLocalizedString("RECONNECTING", comment: "") + } + } + } + + + @MainActor + private func setCallState(to newState: State) async { + + guard state != newState else { return } + guard !state.isFinalState else { return } + + let previousState = state + + if previousState == .callInProgress && newState == .ringing { return } + + // And outgoing call can move to the outgoingCallIsConnecting state from the ringing state only. + if newState == .outgoingCallIsConnecting && previousState != .ringing { return } + + os_log("☎️ OlvidCall will change state: %{public}@ --> %{public}@", log: Self.log, type: .info, previousState.debugDescription, newState.debugDescription) + + self.state = newState + + await performPostStateChangeActions(previousState: previousState, newState: newState) + + Task { [weak self] in + guard let self else { return } + delegate?.callDidChangeState(call: self, previousState: previousState, newState: newState) + } + + } + + + private func performPostStateChangeActions(previousState: State, newState: State) async { + + if newState == .callInProgress && self.dateWhenCallSwitchedToInProgress == nil { + Task { await setDateWhenCallSwitchedToInProgressToNow() } + } + + if newState.isFinalState { + cancellables.forEach { $0.cancel() } + } + + // When the local user starts an outgoing call, she might decide to switch on the speaker before the call + // is connected. Without the following lines, WebRTC (?) automatically overrides the output audio port + // to .none (i.e., removes the speaker). Here, we make sure that the choice of the user is maintained. + // Note that isSpeakerEnabledValueChosenByUser is nil if the user did not touch the speaker button so, in + // most cases, the following code does nothing. + if let isSpeakerEnabledValueChosenByUser, newState == .callInProgress { + let rtcAudioSession = RTCAudioSession.sharedInstance() + rtcAudioSession.lockForConfiguration() + try? rtcAudioSession.overrideOutputAudioPort(isSpeakerEnabledValueChosenByUser ? .speaker : .none) + rtcAudioSession.unlockForConfiguration() + } + + } + + + @MainActor + private func setDateWhenCallSwitchedToInProgressToNow() async { + assert(self.dateWhenCallSwitchedToInProgress == nil) + self.dateWhenCallSwitchedToInProgress = Date.now + } + + +} + + +// MARK: - Call Direction + +extension OlvidCall { + + enum Direction { + case incoming + case outgoing + } + +} + + +// MARK: - Utils + +fileprivate extension UpdateParticipantsMessageJSON { + + init(callParticipants: [OlvidCallParticipant]) async { + var callParticipants_: [ContactBytesAndNameJSON] = [] + for callParticipant in callParticipants { + let callParticipantState = callParticipant.state + guard callParticipantState == .connected || callParticipantState == .reconnecting else { continue } + let remoteCryptoId = callParticipant.cryptoId + let displayName = callParticipant.displayName + let gatheringPolicy = await callParticipant.gatheringPolicy + callParticipants_.append(ContactBytesAndNameJSON(byteContactIdentity: remoteCryptoId.getIdentity(), displayName: displayName, gatheringPolicy: gatheringPolicy)) + } + self.callParticipants = callParticipants_ + } + +} + + +fileprivate extension AVAudioSessionPortDescription { + + var detailedDebugDescription: String { + var values = [String]() + values.append(self.portName) + values.append(self.portType.rawValue.description) + values.append(self.uid) + let concat = values.joined(separator: ",") + return "AVAudioSessionPortDescription<\(concat)>" + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallAudioOption.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallAudioOption.swift new file mode 100644 index 00000000..606c5953 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallAudioOption.swift @@ -0,0 +1,129 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import AVFoundation +import UI_SystemIcon + + +/// Represents an audio option made available to the user when tapping the audio button in the in-house user interface. +struct OlvidCallAudioOption: Identifiable { + + enum Identifier: Hashable { + case builtInSpeaker + case notBuiltInSpeaker(uid: String) + } + + let id: Identifier + let portDescription: AVAudioSessionPortDescription? // Nil for the built-in speaker + let portType: AVAudioSession.Port + let portName: String + + enum IconKind { + case sf(_: SystemIcon) + case png(_: String) + } + + + var icon: IconKind { + switch portType { + case .builtInMic: + return .sf(.mic) + case .headsetMic: + return .sf(.headphones) + case .airPlay: + return .sf(.airplayaudio) + case .bluetoothA2DP: + return .png("bluetooth") + case .bluetoothLE: + return .png("bluetooth") + case .bluetoothHFP: + return iconKindForBluetooth() + case .builtInSpeaker: + return .sf(.speakerWave3Fill) + case .builtInReceiver: + return .sf(.mic) + case .builtInSpeaker: + return .sf(.speakerWave3Fill) + case .HDMI: + return .sf(.display) + case .headphones: + return .sf(.headphones) + case .usbAudio: + if self.portName.lowercased().contains("Studio Display".lowercased()) { + return .sf(.display) + } else { + return .sf(.waveform) + } + default: + if portType.rawValue == "Bluetooth" { + return iconKindForBluetooth() + } else { + return .sf(.speakerWave3Fill) + } + } + } + + private func iconKindForBluetooth() -> IconKind { + if self.portName.lowercased().contains("AirPods M".lowercased()) { + return .sf(.airpodsmax) + } else if self.portName.lowercased().contains("AirPods Pro".lowercased()) { + return .sf(.airpodspro) + } else if self.portName.lowercased().contains("AirPods".lowercased()) { + return .sf(.airpods) + } else { + return .png("bluetooth") + } + } + + + private init(id: Identifier, portDescription: AVAudioSessionPortDescription?, portType: AVAudioSession.Port, portName: String) { + self.id = id + self.portDescription = portDescription + self.portType = portType + self.portName = portName + } + + /// Initializes an `OlvidCallAudioOption` from an `AVAudioSessionPortDescription`. This is typically used when listing all available audio inputs. + init(portDescription: AVAudioSessionPortDescription) { + self.init(id: .notBuiltInSpeaker(uid: portDescription.uid), + portDescription: portDescription, + portType: portDescription.portType, + portName: portDescription.portName) + } + + + /// Returns the `OlvidCallAudioOption` appropriate for the built-in speaker + static func builtInSpeaker() -> OlvidCallAudioOption { + .init(id: .builtInSpeaker, + portDescription: nil, + portType: .builtInSpeaker, + portName: NSLocalizedString("BUILT_IN_SPEAKER", comment: "")) + } + + + /// Only used for SwiftUI previews + static func forPreviews(portType: AVAudioSession.Port, portName: String) -> OlvidCallAudioOption { + .init(id: .notBuiltInSpeaker(uid: UUID().uuidString), + portDescription: nil, + portType: portType, + portName: portName) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallParticipant.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallParticipant.swift new file mode 100644 index 00000000..17f20223 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallParticipant.swift @@ -0,0 +1,853 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import os.log +import WebRTC +import ObvTypes +import ObvUICoreData + + +protocol OlvidCallParticipantDelegate: AnyObject { + + func participantWasUpdated(callParticipant: OlvidCallParticipant, updateKind: OlvidCallParticipant.UpdateKind) async + + func connectionIsChecking(for callParticipant: OlvidCallParticipant) + func connectionIsConnected(for callParticipant: OlvidCallParticipant, oldParticipantState: OlvidCallParticipant.State) async + func connectionWasClosed(for callParticipant: OlvidCallParticipant) async + + func dataChannelIsOpened(for callParticipant: OlvidCallParticipant) async + + func updateParticipants(with allCallParticipants: [ContactBytesAndNameJSON]) async throws + func relay(from: ObvCryptoId, to: ObvCryptoId, messageType: WebRTCMessageJSON.MessageType, messagePayload: String) async + func receivedRelayedMessage(from: ObvCryptoId, messageType: WebRTCMessageJSON.MessageType, messagePayload: String) async + func receivedHangedUpMessage(from callParticipant: OlvidCallParticipant, messagePayload: String) async + + func sendStartCallMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription, turnCredentials: TurnCredentials) async throws + func sendAnswerCallMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription) async throws + func sendNewParticipantOfferMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription) async throws + func sendNewParticipantAnswerMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription) async throws + func sendReconnectCallMessage(to callParticipant: OlvidCallParticipant, sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async throws + func sendNewIceCandidateMessage(to callParticipant: OlvidCallParticipant, iceCandidate: RTCIceCandidate) async throws + func sendRemoveIceCandidatesMessages(to callParticipant: OlvidCallParticipant, candidates: [RTCIceCandidate]) async throws + +} + + +final class OlvidCallParticipant: ObservableObject { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "OlvidCallParticipant") + + let kind: Kind + private let peerConnectionHolder: OlvidCallParticipantPeerConnectionHolder + let cryptoId: ObvCryptoId + let displayName: String + @Published private(set) var state = State.initial + private var connectingTimeoutTimer: Timer? + private static let connectingTimeoutInterval: TimeInterval = 15.0 // 15 seconds + private var turnCredentials: TurnCredentials? + let shouldISendTheOfferToCallParticipant: Bool + @Published private(set) var contactIsMuted = false + + private weak var delegate: OlvidCallParticipantDelegate? + + + private init(kind: Kind, peerConnectionHolder: OlvidCallParticipantPeerConnectionHolder, cryptoId: ObvCryptoId, displayName: String, shouldISendTheOfferToCallParticipant: Bool) { + self.kind = kind + self.peerConnectionHolder = peerConnectionHolder + self.cryptoId = cryptoId + self.displayName = displayName + self.shouldISendTheOfferToCallParticipant = shouldISendTheOfferToCallParticipant + } + + + @MainActor + static func createCallerOfIncomingCall(callerId: ObvContactIdentifier, startCallMessage: StartCallMessageJSON, shouldISendTheOfferToCallParticipant: Bool, rtcPeerConnectionQueue: OperationQueue) async throws -> OlvidCallParticipant { + guard let persistedContact = try PersistedObvContactIdentity.get(persisted: callerId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) else { + throw ObvError.couldNotFindContact + } + let peerConnectionHolder = OlvidCallParticipantPeerConnectionHolder( + startCallMessage: startCallMessage, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant, + rtcPeerConnectionQueue: rtcPeerConnectionQueue) + let caller = OlvidCallParticipant( + kind: .callerOfIncomingCall(contactObjectID: persistedContact.typedObjectID), + peerConnectionHolder: peerConnectionHolder, + cryptoId: persistedContact.cryptoId, + displayName: persistedContact.customOrNormalDisplayName, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant) + return caller + } + + + /// After calling this method, we should immediately call ``setDelegate(to:)``. + @MainActor + static func createCalleeOfOutgoingCall(calleeId: ObvContactIdentifier, shouldISendTheOfferToCallParticipant: Bool, rtcPeerConnectionQueue: OperationQueue) async throws -> OlvidCallParticipant { + guard let persistedContact = try PersistedObvContactIdentity.get(persisted: calleeId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) else { + throw ObvError.couldNotFindContact + } + let gatheringPolicy: OlvidCallGatheringPolicy = persistedContact.supportsCapability(.webrtcContinuousICE) ? .gatherContinually : .gatherOnce + let peerConnectionHolder = OlvidCallParticipantPeerConnectionHolder( + gatheringPolicy: gatheringPolicy, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant, + rtcPeerConnectionQueue: rtcPeerConnectionQueue) + let callee = OlvidCallParticipant( + kind: .calleeOfOutgoingCall(contactObjectID: persistedContact.typedObjectID), + peerConnectionHolder: peerConnectionHolder, + cryptoId: persistedContact.cryptoId, + displayName: persistedContact.customOrNormalDisplayName, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant) + await callee.peerConnectionHolder.setDelegate(to: callee) + return callee + } + + + @MainActor + static func createOtherParticipantOfIncomingCall(ownedCryptoId: ObvCryptoId, remoteCryptoId: ObvCryptoId, gatheringPolicy: OlvidCallGatheringPolicy, displayName: String, shouldISendTheOfferToCallParticipant: Bool, rtcPeerConnectionQueue: OperationQueue) async throws -> OlvidCallParticipant { + let knownOrUnknown: KnownOrUnknown + let usedDisplayName: String + if let persistedContact = try PersistedObvContactIdentity.get(contactCryptoId: remoteCryptoId, ownedIdentityCryptoId: ownedCryptoId, whereOneToOneStatusIs: .any, within: ObvStack.shared.viewContext) { + knownOrUnknown = .known(contactObjectID: persistedContact.typedObjectID) + usedDisplayName = persistedContact.customOrNormalDisplayName + } else { + knownOrUnknown = .unknown(remoteCryptoId: remoteCryptoId) + usedDisplayName = displayName + } + let peerConnectionHolder = OlvidCallParticipantPeerConnectionHolder( + gatheringPolicy: gatheringPolicy, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant, + rtcPeerConnectionQueue: rtcPeerConnectionQueue) + let otherParticipant = OlvidCallParticipant( + kind: .otherParticipantOfIncomingCall(knownOrUnknown: knownOrUnknown), + peerConnectionHolder: peerConnectionHolder, + cryptoId: remoteCryptoId, + displayName: usedDisplayName, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant) + await peerConnectionHolder.setDelegate(to: otherParticipant) + return otherParticipant + } + + + @MainActor + func setDelegate(to delegate: OlvidCallParticipantDelegate) async { + self.delegate = delegate + } + +} + + +// MARK: - Audio + +extension OlvidCallParticipant { + + var selfIsMuted: Bool { + get async throws { + try await !peerConnectionHolder.isAudioTrackEnabled + } + } + + func setMuteSelf(muted: Bool) async throws { + try await peerConnectionHolder.setAudioTrack(isEnabled: !muted) + } + + +} + + +// MARK: - Implementing OlvidCallParticipantPeerConnectionHolderDelegate + +extension OlvidCallParticipant: OlvidCallParticipantPeerConnectionHolderDelegate { + + @MainActor + func peerConnectionStateDidChange(newState: RTCIceConnectionState) async { + switch newState { + case .new: return + case .checking: + delegate?.connectionIsChecking(for: self) + case .connected: + let oldState = self.state + setPeerState(to: .connected) + await delegate?.connectionIsConnected(for: self, oldParticipantState: oldState) + case .failed, .disconnected: + await reconnectAfterConnectionLoss() + case .closed: + await delegate?.connectionWasClosed(for: self) + case .completed, .count: + return + @unknown default: + assertionFailure() + } + } + + + @MainActor + func dataChannel(of peerConnectionHolder: OlvidCallParticipantPeerConnectionHolder, didReceiveMessage message: WebRTCDataChannelMessageJSON) async { + do { + switch message.messageType { + + case .muted: + let mutedMessage = try MutedMessageJSON.jsonDecode(serializedMessage: message.serializedMessage) + os_log("☎️ MutedMessageJSON received on data channel", log: Self.log, type: .info) + await processMutedMessageJSON(message: mutedMessage) + + case .updateParticipant: + let updateParticipantsMessage = try UpdateParticipantsMessageJSON.jsonDecode(serializedMessage: message.serializedMessage) + os_log("☎️ UpdateParticipantsMessageJSON received on data channel", log: Self.log, type: .info) + try await processUpdateParticipantsMessageJSON(message: updateParticipantsMessage) + + case .relayMessage: + let relayMessage = try RelayMessageJSON.jsonDecode(serializedMessage: message.serializedMessage) + os_log("☎️ RelayMessageJSON received on data channel", log: Self.log, type: .info) + await processRelayMessageJSON(message: relayMessage) + + case .relayedMessage: + let relayedMessage = try RelayedMessageJSON.jsonDecode(serializedMessage: message.serializedMessage) + os_log("☎️ RelayedMessageJSON received on data channel", log: Self.log, type: .info) + await processRelayedMessageJSON(message: relayedMessage) + + case .hangedUpMessage: + os_log("☎️ HangedUpDataChannelMessageJSON received on data channel", log: Self.log, type: .info) + // We want hangedUpMessage received on the data channel and on the WebSocket to receive the same treatment. + // So we don't process the this message here, and report to our delegate + let messagePayload = message.serializedMessage + await delegate?.receivedHangedUpMessage(from: self, messagePayload: messagePayload) + + } + } catch { + os_log("☎️ Failed to parse or process WebRTCDataChannelMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + } + } + + + private func processRelayedMessageJSON(message: RelayedMessageJSON) async { + + guard isCallerOfIncomingCall else { assertionFailure(); return } + + do { + let fromId = try ObvCryptoId(identity: message.from) + guard let messageType = WebRTCMessageJSON.MessageType(rawValue: message.relayedMessageType) else { assertionFailure(); throw ObvError.couldNotParseWebRTCMessageJSONMessageType } + let messagePayload = message.serializedMessagePayload + await delegate?.receivedRelayedMessage(from: fromId, messageType: messageType, messagePayload: messagePayload) + } catch { + os_log("☎️ Could not read received RelayedMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + } + + + private func processRelayMessageJSON(message: RelayMessageJSON) async { + guard !isCallerOfIncomingCall else { assertionFailure(); return } + + do { + let fromId = self.cryptoId + let toId = try ObvCryptoId(identity: message.to) + guard let messageType = WebRTCMessageJSON.MessageType(rawValue: message.relayedMessageType) else { assertionFailure(); throw ObvError.couldNotParseWebRTCMessageJSONMessageType } + let messagePayload = message.serializedMessagePayload + await delegate?.relay(from: fromId, to: toId, messageType: messageType, messagePayload: messagePayload) + } catch { + os_log("☎️ Could not read received RelayMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + } + + + private func processUpdateParticipantsMessageJSON(message: UpdateParticipantsMessageJSON) async throws { + // Check that the participant list is indeed sent by the caller (and thus, not by a "simple" participant). + guard isCallerOfIncomingCall else { + assertionFailure() + return + } + try await delegate?.updateParticipants(with: message.callParticipants) + } + + + /// Dispatching on the main actor as we are setting a published variable, used at the UI level + @MainActor + private func processMutedMessageJSON(message: MutedMessageJSON) async { + guard contactIsMuted != message.muted else { return } + contactIsMuted = message.muted + await delegate?.participantWasUpdated(callParticipant: self, updateKind: .contactMuted) + } + + + func dataChannel(of peerConnectionHolder: OlvidCallParticipantPeerConnectionHolder, didChangeState state: RTCDataChannelState) async { + os_log("☎️ Data channel changed state. New state is %{public}@", log: Self.log, type: .info, state.description) + switch state { + case .open: + await delegate?.dataChannelIsOpened(for: self) + await sendMutedMessageJSON() + case .connecting, .closing, .closed: + break + @unknown default: + assertionFailure() + } + } + + + func sendMutedMessageJSON() async { + let message: WebRTCDataChannelMessageJSON + do { + message = try await MutedMessageJSON(muted: selfIsMuted).embedInWebRTCDataChannelMessageJSON() + } catch { + os_log("☎️ Could not send MutedMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() + return + } + do { + try await peerConnectionHolder.sendDataChannelMessage(message) + } catch { + os_log("☎️ Could not send data channel message: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + return + } + } + + + func sendNewIceCandidateMessage(candidate: RTCIceCandidate) async throws { + guard !state.isFinalState else { return } + guard let delegate else { return } + try await delegate.sendNewIceCandidateMessage(to: self, iceCandidate: candidate) + } + + + func sendRemoveIceCandidatesMessages(candidates: [RTCIceCandidate]) async throws { + guard let delegate else { assertionFailure(); return } + try await delegate.sendRemoveIceCandidatesMessages(to: self, candidates: candidates) + } + + + /// Sends the local description to the call participant corresponding to `self` + @MainActor + func sendLocalDescription(sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async { + + os_log("☎️ Calling sendLocalDescription for a participant", log: Self.log, type: .info) + + guard let delegate else { + // This typically happen when the call has been deallocated as it reached a final state + return + } + + do { + switch self.state { + case .initial: + os_log("☎️ Sending peer the following SDP: %{public}@", log: Self.log, type: .info, sessionDescription.sdp) + if isCallOutgoing { + guard let turnCredentials else { assertionFailure(); throw ObvError.turnCredentialsRequired } + try await delegate.sendStartCallMessage(to: self, sessionDescription: sessionDescription, turnCredentials: turnCredentials) + setPeerState(to: .startCallMessageSent) + } else { + if self.isCallerOfIncomingCall { + try await delegate.sendAnswerCallMessage(to: self, sessionDescription: sessionDescription) + setPeerState(to: .connectingToPeer) + } else { + if shouldISendTheOfferToCallParticipant { + try await delegate.sendNewParticipantOfferMessage(to: self, sessionDescription: sessionDescription) + setPeerState(to: .startCallMessageSent) + } else { + try await delegate.sendNewParticipantAnswerMessage(to: self, sessionDescription: sessionDescription) + setPeerState(to: .connectingToPeer) + } + } + } + case .connected, .reconnecting: + os_log("☎️ Sending peer the following restart SDP: %{public}@", log: Self.log, type: .info, sessionDescription.sdp) + try await delegate.sendReconnectCallMessage(to: self, sessionDescription: sessionDescription, reconnectCounter: reconnectCounter, peerReconnectCounterToOverride: peerReconnectCounterToOverride) + case .startCallMessageSent, .ringing, .busy, .callRejected, .connectingToPeer, .hangedUp, .kicked, .failed, .connectionTimeout: + os_log("☎️ Not sending peer the restart SDP as we are in state %{public}@", log: Self.log, type: .info, self.state.debugDescription) + break // Do nothing + } + } catch { + setPeerState(to: .failed) + assertionFailure() + return + } + + } + +} + + +// MARK: - Turn credentials + +extension OlvidCallParticipant { + + /// This method is two situations: + /// - During an outgoing call, when setting the turn credential of a call participant. + /// - During a multi-users incoming call, when we are in charge of sending the offer to another recipient (who isn't the caller). + func setTurnCredentialsAndCreateUnderlyingPeerConnection(turnCredentials: TurnCredentials) async throws { + assert(self.isOtherParticipantOfIncomingCall || self.isCalleeOfOutgoingCall) + self.turnCredentials = turnCredentials + try await self.peerConnectionHolder.setTurnCredentialsAndCreateUnderlyingPeerConnectionIfRequired(turnCredentials) + } + +} + + +// MARK: - Methods called when this participant is the caller of an incoming call + +extension OlvidCallParticipant { + + func localUserAcceptedIncomingCallFromThisCallParticipant() async throws { + assert(self.isCallerOfIncomingCall) + assert(!self.isCallOutgoing) + try await peerConnectionHolder.createPeerConnectionIfRequiredAfterAcceptingAnIncomingCall(delegate: self) + } + + + /// Called by ``OlvidCall`` when the local user is the caller, and decided to kick this participant. + @MainActor + func callerKicksThisParticipant() async { + await peerConnectionHolder.close() + setPeerState(to: .kicked) + } + +} + + +// MARK: - Methods for outgoing calls + +extension OlvidCallParticipant { + + /// Called by the associated `OlvidCall` when we received a message indicating that this participant rejected our outgoing call. + @MainActor + func rejectedOutgoingCall() async { + guard [.startCallMessageSent, .ringing].contains(self.state) else { assertionFailure(); return } + setPeerState(to: .callRejected) + } + + + /// Called by the associated `OlvidCall` when we received a message indicating that this participant is ringing. + @MainActor + func isRinging() async { + guard state == .startCallMessageSent else { return } + setPeerState(to: .ringing) + } + +} + + +// MARK: - Methods for processing participants actions + +extension OlvidCallParticipant { + + @MainActor + func didHangUp() async { + setPeerState(to: .hangedUp) + } + + + @MainActor + func isBusy() async { + guard state == .startCallMessageSent else { assertionFailure(); return } + setPeerState(to: .busy) + } + +} + + + +// MARK: - Distinguishing between known (i.e., contacts) and unknown participants + +extension OlvidCallParticipant { + + enum KnownOrUnknown { + case known(contactObjectID: TypeSafeManagedObjectID) + case unknown(remoteCryptoId: ObvCryptoId) + } + + var knownOrUnknown: KnownOrUnknown { + switch self.kind { + case .otherParticipantOfIncomingCall(knownOrUnknown: let knownOrUnknown): + return knownOrUnknown + case .callerOfIncomingCall(contactObjectID: let contactObjectID), + .calleeOfOutgoingCall(contactObjectID: let contactObjectID): + return .known(contactObjectID: contactObjectID) + } + } + +} + + +// MARK: - Participant kind and data extracted from its kind + +extension OlvidCallParticipant { + + enum Kind { + case otherParticipantOfIncomingCall(knownOrUnknown: KnownOrUnknown) + case callerOfIncomingCall(contactObjectID: TypeSafeManagedObjectID) + case calleeOfOutgoingCall(contactObjectID: TypeSafeManagedObjectID) + } + + + var isCallerOfIncomingCall: Bool { + switch kind { + case .callerOfIncomingCall: + return true + default: + return false + } + } + + + private var isOtherParticipantOfIncomingCall: Bool { + switch kind { + case .otherParticipantOfIncomingCall: + return true + default: + return false + } + } + + + private var isCalleeOfOutgoingCall: Bool { + switch kind { + case .calleeOfOutgoingCall: + return true + default: + return false + } + } + + + private var isCallOutgoing: Bool { + switch kind { + case .calleeOfOutgoingCall: + return true + case .callerOfIncomingCall, .otherParticipantOfIncomingCall: + return false + } + } + +} + + +// MARK: - Reconnecting + +extension OlvidCallParticipant { + + @MainActor + func reconnectAfterConnectionLoss() async { + guard [State.connectingToPeer, .connected, .reconnecting].contains(self.state) else { return } + setPeerState(to: .connectionTimeout) + setPeerState(to: .reconnecting) + } + +} + + +// MARK: - Timers + +extension OlvidCallParticipant { + + private func scheduleConnectingTimeout() { + invalidateConnectingTimeout() + os_log("☎️ Schedule connecting timeout timer", log: Self.log, type: .info) + let nextConnectingTimeoutInterval = Self.connectingTimeoutInterval * Double.random(in: 1.0..<1.3) // Approx. between 15 and 20 seconds + let timer = Timer.init(timeInterval: nextConnectingTimeoutInterval, repeats: false) { timer in + guard timer.isValid else { return } + Task { [weak self] in await self?.connectingTimeoutTimerFired() } + } + self.connectingTimeoutTimer = timer + RunLoop.main.add(timer, forMode: .default) + } + + + private func invalidateConnectingTimeout() { + guard let timer = self.connectingTimeoutTimer else { return } + os_log("☎️ Invalidating connecting timeout timer", log: Self.log, type: .info) + timer.invalidate() + self.connectingTimeoutTimer = nil + } + + + @MainActor + private func connectingTimeoutTimerFired() async { + guard [State.connectingToPeer, .connected, .reconnecting].contains(self.state) else { return } + os_log("☎️ Reconnection timer fired -> trying to reconnect after connection loss", log: Self.log, type: .info) + setPeerState(to: .connectionTimeout) + setPeerState(to: .reconnecting) + } + +} + + +// MARK: - Peer connection + +extension OlvidCallParticipant { + + func closeConnection() async throws { + os_log("☎️🛑 Closing peer connection", log: Self.log, type: .info) + await peerConnectionHolder.close() + } + + var gatheringPolicy: OlvidCallGatheringPolicy { + get async { + await peerConnectionHolder.gatheringPolicy + } + } + + + func setRemoteDescription(sessionDescription: RTCSessionDescription) async throws { + os_log("☎️ Will call setRemoteDescription on the peerConnectionHolder", log: Self.log, type: .info) + try await peerConnectionHolder.setRemoteDescription(sessionDescription) + } + + + func handleReceivedRestartSdp(sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async throws { + os_log("☎️ Will call handleReceivedRestartSdp on the peerConnectionHolder", log: Self.log, type: .info) + try await peerConnectionHolder.handleReceivedRestartSdp( + sessionDescription: sessionDescription, + reconnectCounter: reconnectCounter, + peerReconnectCounterToOverride: peerReconnectCounterToOverride, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant) + } + + + /// Called when we receive a `NewParticipantAnswerMessageJSON` from this participant and when we determined that we must set a remote description + func processNewParticipantAnswerMessageJSON(sessionDescription: RTCSessionDescription) async throws { + guard self.isCalleeOfOutgoingCall || self.isOtherParticipantOfIncomingCall else { assertionFailure(); return } + os_log("☎️ Will call setRemoteDescription on the peerConnectionHolder", log: Self.log, type: .info) + try await peerConnectionHolder.setRemoteDescription(sessionDescription) + } + +} + + +// MARK: - Participant state + +extension OlvidCallParticipant { + + private func setPeerState(to newState: State) { + + // We want to make sure we are on the main thread since we are modifying a published value + assert(Thread.isMainThread) + + guard newState != self.state else { return } + + os_log("☎️ WebRTCCall participant will change state: %{public}@ --> %{public}@", log: Self.log, type: .info, self.state.debugDescription, newState.debugDescription) + self.state = newState + + invalidateConnectingTimeout() + + switch self.state { + case .startCallMessageSent: + break + case .ringing: + break + case .connectingToPeer: + scheduleConnectingTimeout() + case .reconnecting: + scheduleConnectingTimeout() + Task { [weak self] in + guard let self else { return } + try await peerConnectionHolder.restartIce(shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant) + } + case .connectionTimeout: + break + case .connected: + break + case .busy, .callRejected, .hangedUp, .kicked, .failed, .initial: + break + } + + if self.state.isFinalState { + Task { + try await closeConnection() + } + } + + Task { + await delegate?.participantWasUpdated(callParticipant: self, updateKind: .state(newState: state)) + } + } + + + enum State: Hashable, CustomDebugStringConvertible { + case initial + // States for the caller only (during this time, the recipient stays in the initial state) + case startCallMessageSent + case ringing + case busy + case callRejected + // States common to the caller and the recipient + case connectingToPeer + case connected + case reconnecting + case connectionTimeout + case hangedUp + case kicked + case failed + + var debugDescription: String { + switch self { + case .initial: return "initial" + case .startCallMessageSent: return "startCallMessageSent" + case .busy: return "busy" + case .reconnecting: return "reconnecting" + case .connectionTimeout: return "connectionTimeout" + case .ringing: return "ringing" + case .callRejected: return "callRejected" + case .connectingToPeer: return "connectingToPeer" + case .connected: return "connected" + case .hangedUp: return "hangedUp" + case .kicked: return "kicked" + case .failed: return "failed" + } + } + + var isFinalState: Bool { + switch self { + case .callRejected, .hangedUp, .kicked, .failed: return true + case .initial, .startCallMessageSent, .ringing, .busy, .connectingToPeer, .connected, .reconnecting, .connectionTimeout: return false + } + } + + var localizedString: String { + switch self { + case .initial: return NSLocalizedString("CALL_STATE_NEW", comment: "") + case .startCallMessageSent: return NSLocalizedString("CALL_STATE_INCOMING_CALL_MESSAGE_WAS_POSTED", comment: "") + case .ringing: return NSLocalizedString("CALL_STATE_RINGING", comment: "") + case .busy: return NSLocalizedString("CALL_STATE_BUSY", comment: "") + case .callRejected: return NSLocalizedString("CALL_STATE_CALL_REJECTED", comment: "") + case .connectingToPeer: return NSLocalizedString("CALL_STATE_CONNECTING_TO_PEER", comment: "") + case .connected: return NSLocalizedString("SECURE_CALL_IN_PROGRESS", comment: "") + case .reconnecting: return NSLocalizedString("CALL_STATE_RECONNECTING", comment: "") + case .connectionTimeout: return NSLocalizedString("CALL_STATE_CONNECTION_TIMEOUT", comment: "") + case .hangedUp: return NSLocalizedString("CALL_STATE_HANGED_UP", comment: "") + case .kicked: return NSLocalizedString("CALL_STATE_KICKED", comment: "") + case .failed: return NSLocalizedString("FAILED", comment: "") + } + } + + } + +} + + +// MARK: - Update kind + +extension OlvidCallParticipant { + + enum UpdateKind { + case state(newState: State) + case contactID + case contactMuted + } + +} + + +// MARK: - Offers + +extension OlvidCallParticipant { + + /// Update a recipient in a multi-user incoming call where we also are a recipient (not the caller), and not in charge of the offer. + func updateRecipient(newParticipantOfferMessage: NewParticipantOfferMessageJSON, turnCredentials: TurnCredentials) async throws { + assert(!self.isCallerOfIncomingCall) + self.turnCredentials = turnCredentials + try await self.peerConnectionHolder.setRemoteDescriptionAndTurnCredentialsThenCreateTheUnderlyingPeerConnectionIfRequired(newParticipantOfferMessage: newParticipantOfferMessage, turnCredentials: turnCredentials) + } + +} + + +// MARK: - Sending WebRTC messages + +extension OlvidCallParticipant { + + func sendDataChannelMessage(_ message: WebRTCDataChannelMessageJSON) async throws { + try await peerConnectionHolder.sendDataChannelMessage(message) + } + +} + + +// MARK: - Informations for call reports + +extension OlvidCallParticipant { + + var info: OlvidCallParticipantInfo? { + switch knownOrUnknown { + case .known(contactObjectID: let contactObjectID): + return .init(contactObjectID: contactObjectID, + isCaller: isCallerOfIncomingCall) + case .unknown: + return nil + } + } + +} + + +// MARK: ICE candidates + +extension OlvidCallParticipant { + + func processIceCandidatesJSON(message: IceCandidateJSON) async throws { + try await peerConnectionHolder.addIceCandidate(iceCandidate: message.iceCandidate) + } + + + func processRemoveIceCandidatesMessageJSON(message: RemoveIceCandidatesMessageJSON) async { + await peerConnectionHolder.removeIceCandidates(iceCandidates: message.iceCandidates) + } + +} + + +// MARK: - Errors + +extension OlvidCallParticipant { + + enum ObvError: Error, CustomDebugStringConvertible { + + case turnCredentialsRequired + case couldNotParseWebRTCMessageJSONMessageType + case couldNotFindContact + + var debugDescription: String { + switch self { + case .turnCredentialsRequired: return "Turn credentials are required" + case .couldNotParseWebRTCMessageJSONMessageType: return "Could not parse WebRTCMessageJSON.MessageType" + case .couldNotFindContact: return "Could not find contact" + } + } + + } + +} + + +// MARK: - Helpers + +fileprivate extension IceCandidateJSON { + var iceCandidate: RTCIceCandidate { + RTCIceCandidate(sdp: sdp, sdpMLineIndex: sdpMLineIndex, sdpMid: sdpMid) + } +} + + +fileprivate extension RemoveIceCandidatesMessageJSON { + var iceCandidates: [RTCIceCandidate] { + candidates.map { $0.iceCandidate } + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallParticipantInfo.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallParticipantInfo.swift new file mode 100644 index 00000000..f9a681ad --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallParticipantInfo.swift @@ -0,0 +1,27 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvUICoreData + + +struct OlvidCallParticipantInfo { + let contactObjectID: TypeSafeManagedObjectID + let isCaller: Bool +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallParticipantPeerConnectionHolder.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallParticipantPeerConnectionHolder.swift new file mode 100644 index 00000000..dbe33df5 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/OlvidCallParticipantPeerConnectionHolder.swift @@ -0,0 +1,744 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import WebRTC +import ObvSettings + + +protocol OlvidCallParticipantPeerConnectionHolderDelegate: AnyObject { + + func peerConnectionStateDidChange(newState: RTCIceConnectionState) async + func dataChannel(of peerConnectionHolder: OlvidCallParticipantPeerConnectionHolder, didReceiveMessage message: WebRTCDataChannelMessageJSON) async + func dataChannel(of peerConnectionHolder: OlvidCallParticipantPeerConnectionHolder, didChangeState state: RTCDataChannelState) async + + func sendNewIceCandidateMessage(candidate: RTCIceCandidate) async throws + func sendRemoveIceCandidatesMessages(candidates: [RTCIceCandidate]) async throws + + func sendLocalDescription(sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async + +} + + +actor OlvidCallParticipantPeerConnectionHolder { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "OlvidCallParticipantPeerConnectionHolder") + + /// Serial queue shared among all `OlvidCallParticipantPeerConnectionHolder`, among all calls. + private let rtcPeerConnectionQueue: OperationQueue + + private(set) var turnCredentials: TurnCredentials? + private(set) var gatheringPolicy: OlvidCallGatheringPolicy + + weak var delegate: OlvidCallParticipantPeerConnectionHolderDelegate? + + /// Used to save the remote session description obtained when receiving an incoming call. + /// Since we do not create the underlying peer connection until the local user accepts (picks up) the call, + /// We need to store the session description until she does so. If she does pick up the call, we create the + /// Underlying peer connection and immediately set its session description using the value saved here. + private var remoteSessionDescription: RTCSessionDescription? + + private var peerConnection: ObvPeerConnection? + private var pendingRemoteIceCandidates = [RTCIceCandidate]() + private var iceCandidatesGeneratedLocally = [RTCIceCandidate]() // Legacy, used when gatheringPolicy == gatherOnce + private var reconnectOfferCounter: Int = 0 // Counter of the last reconnect offer we sent + private var reconnectAnswerCounter: Int = 0 // Counter of the last reconnect offer from the peer for which we sent an answer + private var iceGatheringCompletedWasCalled = false + private let shouldISendTheOfferToCallParticipant: Bool + /// ICE candidates can be processed after an SDP was set on the peer connection. + private var readyToProcessPeerIceCandidates = false { + didSet { + guard self.readyToProcessPeerIceCandidates else { return } + Task { await drainRemoteIceCandidates() } + } + } + /// Allows the user to mute self before the peer connection is created (e.g., before answering the call) + private var audioTrackIsEnabledOnCreation = true + + + private static var factory: RTCPeerConnectionFactory = { + RTCInitializeSSL() + let videoEncoderFactory = RTCDefaultVideoEncoderFactory() + let videoDecoderFactory = RTCDefaultVideoDecoderFactory() + let factory = RTCPeerConnectionFactory(encoderFactory: videoEncoderFactory, decoderFactory: videoDecoderFactory) + return factory + }() + + + // Remark: we do not test whether self.rtcPeerConnection == peerConnection as it happens that self.rtcPeerConnection == nil + // at this point. This happens as the rtcPeerConnection is created in an operation and only set after the operation finishes. + // This callback is typically called because of the creation of the peer connection in the operation, reason why + // we may have self.rtcPeerConnection == nil. But this is not an issue as we can use the peerConnection received as a parameter. + + /// Creating the peer connection is done by means of executing a ``CreatePeerConnectionOperation``. Once the operation finishes, we set ``self.rtcPeerConnection`` + /// to the value created by the operation. Yet, the sole fact to create this peer connection triggers calls to several ``RTCPeerConnectionDelegateWrapperDelegate`` delegate + /// methods. These methods may be called before we have time to set ``self.rtcPeerConnection`` after the operation finishes. We made the choice to also set + /// ``self.rtcPeerConnection`` from these delegate methods. We do so by always calling this function for setting ``self.rtcPeerConnection``. + private func setRTCPeerConnectionIfRequired(_ newPeerConnection: ObvPeerConnection) { + if let peerConnection { + assert(peerConnection == newPeerConnection) + } else { + self.peerConnection = newPeerConnection + } + } + + /// Used when receiving an incoming call (the delegate shall be set immediately) + init(startCallMessage: StartCallMessageJSON, shouldISendTheOfferToCallParticipant: Bool, rtcPeerConnectionQueue: OperationQueue) { + self.turnCredentials = startCallMessage.turnCredentials + self.shouldISendTheOfferToCallParticipant = shouldISendTheOfferToCallParticipant + self.remoteSessionDescription = RTCSessionDescription(type: startCallMessage.sessionDescriptionType, + sdp: startCallMessage.sessionDescription) + self.gatheringPolicy = startCallMessage.gatheringPolicy ?? .gatherOnce + self.rtcPeerConnectionQueue = rtcPeerConnectionQueue + // We do *not* create the peer connection now, we wait until the user explicitely accepts the incoming call + } + + + /// Used during the init of an outgoing call. Also used during a multi-call, when we are a recipient and need to create a peer connection holder with another participant. + /// When calling this initalizer, one should immediately call ``setDelegate(to:)``. + init(gatheringPolicy: OlvidCallGatheringPolicy, shouldISendTheOfferToCallParticipant: Bool, rtcPeerConnectionQueue: OperationQueue) { + self.gatheringPolicy = gatheringPolicy + self.shouldISendTheOfferToCallParticipant = shouldISendTheOfferToCallParticipant + self.remoteSessionDescription = nil + self.rtcPeerConnectionQueue = rtcPeerConnectionQueue + } + + + deinit { + os_log("☎️ OlvidCallParticipantPeerConnectionHolder deinit", log: Self.log, type: .debug) + } + + + func setDelegate(to newDelegate: OlvidCallParticipantPeerConnectionHolderDelegate) { + assert(self.delegate == nil) + self.delegate = newDelegate + } + +} + + +// MARK: - Dealing with incoming calls + +extension OlvidCallParticipantPeerConnectionHolder { + + /// When receiving an incoming call, we quickly create this peer connection holder, but we do not create the underlying peer connection. + /// For this, we want to wait until the user explictely accepts (picks up) the incoming call. + /// This method is called when the local user does so. + /// It creates the peer connection. This will eventually trigger a call to + /// ``func peerConnectionShouldNegotiate(_ peerConnection: ObvPeerConnection) async`` + /// where the local description (answer) will be created. + func createPeerConnectionIfRequiredAfterAcceptingAnIncomingCall(delegate: OlvidCallParticipantPeerConnectionHolderDelegate) async throws { + assert(self.peerConnection == nil) + assert(self.delegate == nil) + self.delegate = delegate + try await createPeerConnectionIfRequired() + } + + + /// Used for an incoming call that was already accepted, when the caller adds a participant to the call + func setRemoteDescriptionAndTurnCredentialsThenCreateTheUnderlyingPeerConnectionIfRequired(newParticipantOfferMessage: NewParticipantOfferMessageJSON, turnCredentials: TurnCredentials) async throws { + + os_log("☎️ Setting remote description and turn credentials, then creating peer connection", log: Self.log, type: .info) + + assert(self.delegate != nil) + + self.turnCredentials = turnCredentials + self.remoteSessionDescription = RTCSessionDescription(type: newParticipantOfferMessage.sessionDescriptionType, + sdp: newParticipantOfferMessage.sessionDescription) + + // We override the gathering policy we had (indicated by the caller for this participant) by the one sent the participant herself. + self.gatheringPolicy = newParticipantOfferMessage.gatheringPolicy ?? .gatherOnce + + // Since the call was already accepted (we are only adding another participant here), we can safely create the peer connection immediately. + // The situation here is different from the one encountered in the initializer executed when receiving an incoming call, where we had to wait + // Until the local user explicitely accepted the call. + + try await createPeerConnectionIfRequired() + + } + +} + + +// MARK: - Creating and closing the peer connection + +extension OlvidCallParticipantPeerConnectionHolder { + + /// This method is two situations: + /// - During an outgoing call, when setting the turn credential of a call participant. + /// - During a multi-users incoming call, when we are in charge of sending the offer to another recipient (who isn't the caller). + func setTurnCredentialsAndCreateUnderlyingPeerConnectionIfRequired(_ turnCredentials: TurnCredentials) async throws { + assert(self.delegate != nil) + guard self.turnCredentials == nil else { + assertionFailure() + throw ObvError.turnCredentialsAreSetAlready + } + self.turnCredentials = turnCredentials + try await createPeerConnectionIfRequired() + } + + + func close() async { + guard let peerConnection else { + os_log("☎️🛑 Execute signaling state closed completion handler: peer connection is nil", log: Self.log, type: .info) + return + } + let op = ClosePeerConnectionOperation(peerConnection: peerConnection) + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, op.debugDescription) + await rtcPeerConnectionQueue.addAndAwaitOperation(op) + } + + + /// This method creates the peer connection underlying this peer connection holder. + /// + /// This method is called in two situations : + /// - For an outgoing call, it is called right after setting the credentials. + /// - For an incoming call, it is not called when setting the credentials as we want to wait until the user explicitely accepts (picks up) the incoming call. + /// It is called as soon as the user accepts the incoming call. + private func createPeerConnectionIfRequired() async throws { + + os_log("☎️ Call to createPeerConnection", log: Self.log, type: .info) + + guard peerConnection == nil else { + os_log("☎️ No need to create the peer connection, it already exists", log: Self.log, type: .info) + assert(delegate != nil) + return + } + + guard delegate != nil else { + os_log("☎️ The delegate is nil, which not expected", log: Self.log, type: .fault) + assertionFailure() + throw ObvError.delegateIsNil + } + + guard let turnCredentials else { + os_log("☎️ No turn credentials availabe", log: Self.log, type: .fault) + assertionFailure() + throw ObvError.noTurnCredentialsAvailable + } + + // Create the peer connection and store it + + os_log("☎️ Creating the RTC peer connection", log: Self.log, type: .info) + + var operationsToQueue = [Operation]() + + let op1 = CreatePeerConnectionOperation( + turnCredentials: turnCredentials, + gatheringPolicy: gatheringPolicy, + isAudioTrackEnabled: audioTrackIsEnabledOnCreation, + obvPeerConnectionDelegate: self, + obvDataChannelDelegate: self) + + operationsToQueue.append(op1) + + // We might already have a session description available. This typically happens when receiving an incoming call: + // We created the call and saved the session description for later, i.e., for the time the local user accepts the incoming call, + // Which is what led us here. + + let shouldSetReadyToProcessPeerIceCandidates: Bool + if let remoteSessionDescription { + self.remoteSessionDescription = nil + let op2 = SetRemoteDescriptionOperation(input: .createPeerConnectionOperation(operation: op1), remoteSessionDescription: remoteSessionDescription) + op2.addDependency(op1) + operationsToQueue.append(op2) + shouldSetReadyToProcessPeerIceCandidates = true + } else { + shouldSetReadyToProcessPeerIceCandidates = false + } + + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, operationsToQueue.debugDescription) + operationsToQueue.makeEachOperationDependentOnThePreceedingOne() + await rtcPeerConnectionQueue.addAndAwaitOperations(operationsToQueue) + + guard let peerConnection = op1.peerConnection else { + assertionFailure() + throw ObvError.peerConnectionCreationFailed + } + + setRTCPeerConnectionIfRequired(peerConnection) + + os_log("☎️ The RTC peer connection was created", log: Self.log, type: .info) + + if shouldSetReadyToProcessPeerIceCandidates { + self.readyToProcessPeerIceCandidates = true + } + + } + + + private func createRTCConfiguration(turnCredentials: TurnCredentials) -> RTCConfiguration { + + // 2022-03-11, we used to use the servers indicated in the turn credentials. + // We do not do that anymore and use the (user) preferred servers. + let iceServer = WebRTC.RTCIceServer(urlStrings: ObvMessengerConstants.ICEServerURLs.preferred, + username: turnCredentials.turnUserName, + credential: turnCredentials.turnPassword, + tlsCertPolicy: .insecureNoCheck) + + let rtcConfiguration = RTCConfiguration() + rtcConfiguration.iceServers = [iceServer] + rtcConfiguration.iceTransportPolicy = .relay + rtcConfiguration.sdpSemantics = .unifiedPlan + rtcConfiguration.continualGatheringPolicy = gatheringPolicy.rtcPolicy + + return rtcConfiguration + + } + + +} + + +// MARK: - Gathering ICE candidates + +extension OlvidCallParticipantPeerConnectionHolder { + + private func drainRemoteIceCandidates() async { + guard case .gatherContinually = gatheringPolicy else { return } + guard readyToProcessPeerIceCandidates else { assertionFailure(); return } + guard !pendingRemoteIceCandidates.isEmpty else { return } + os_log("☎️❄️ Drain remote %{public}@ ICE candidate(s)", log: Self.log, type: .info, String(pendingRemoteIceCandidates.count)) + let pendingRemoteIceCandidates = self.pendingRemoteIceCandidates + self.pendingRemoteIceCandidates.removeAll() + for iceCandidate in pendingRemoteIceCandidates { + do { + try await addIceCandidate(iceCandidate: iceCandidate) + } catch { + os_log("☎️ Could not drain one of the ice candidates: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + assertionFailure() // Continue anyway + } + } + } + + + func addIceCandidate(iceCandidate: RTCIceCandidate) async throws { + os_log("☎️❄️ addIceCandidate called", log: Self.log, type: .info) + guard gatheringPolicy == .gatherContinually else { assertionFailure(); return } + if readyToProcessPeerIceCandidates { + os_log("☎️❄️ As we are ready to process ICE candidates, we will queue an AddIceCandidateOperation", log: Self.log, type: .info) + guard let peerConnection else { assertionFailure("We expect rtcPeerConnection to exist when readyToProcessPeerIceCandidates is true"); return } + let op = AddIceCandidateOperation(input: .peerConnection(peerConnection: peerConnection), iceCandidate: iceCandidate) + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, op.debugDescription) + await rtcPeerConnectionQueue.addAndAwaitOperation(op) + guard !op.isCancelled else { + assertionFailure() + throw ObvError.addIceCandidateFailed(error: op.reasonForCancel) + } + } else { + os_log("☎️❄️ Not ready to forward remote ICE candidates, add candidate to pending list (count %{public}@)", log: Self.log, type: .info, String(pendingRemoteIceCandidates.count)) + pendingRemoteIceCandidates.append(iceCandidate) + } + } + + + func removeIceCandidates(iceCandidates: [RTCIceCandidate]) async { + os_log("☎️❄️ removeIceCandidates called", log: Self.log, type: .info) + if readyToProcessPeerIceCandidates { + guard let peerConnection else { assertionFailure("We expect rtcPeerConnection to exist when readyToProcessPeerIceCandidates is true"); return } + let op = RemoveIceCandidatesOperation(peerConnection: peerConnection, iceCandidates: iceCandidates) + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, op.debugDescription) + await rtcPeerConnectionQueue.addAndAwaitOperation(op) + } else { + os_log("☎️❄️ Not ready to forward remote ICE candidates, remove candidates from pending list (count %{public}@)", log: Self.log, type: .info, String(pendingRemoteIceCandidates.count)) + pendingRemoteIceCandidates.removeAll { iceCandidates.contains($0) } + } + } + + + private func resetGatheringState() { + guard case .gatherOnce = gatheringPolicy else { assertionFailure(); return } + iceCandidatesGeneratedLocally.removeAll() + iceGatheringCompletedWasCalled = false + } + + + func restartIce(shouldISendTheOfferToCallParticipant: Bool) async throws { + + guard let peerConnection else { assertionFailure(); return } + + let op = RestartIceIfRequiredOperation(peerConnection: peerConnection, shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant) + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, op.debugDescription) + await rtcPeerConnectionQueue.addAndAwaitOperation(op) + guard !op.isCancelled else { + throw ObvError.restartIceFailed(error: op.reasonForCancel) + } + + } + + + private func iceGatheringCompleted() async throws { + + guard !iceGatheringCompletedWasCalled else { return } + iceGatheringCompletedWasCalled = true + + os_log("☎️ ICE gathering is completed", log: Self.log, type: .info) + + guard let localDescription = await peerConnection?.localDescription else { assertionFailure(); return } + guard let delegate = delegate else { assertionFailure(); return } + + switch localDescription.type { + case .offer: + await delegate.sendLocalDescription(sessionDescription: localDescription, reconnectCounter: reconnectOfferCounter, peerReconnectCounterToOverride: reconnectAnswerCounter) + case .answer: + await delegate.sendLocalDescription(sessionDescription: localDescription, reconnectCounter: reconnectAnswerCounter, peerReconnectCounterToOverride: -1) + case .prAnswer, .rollback: + assertionFailure() // Do nothing + @unknown default: + assertionFailure() // Do nothing + } + + } + +} + + +// MARK: - Implementing RTCDataChannelDelegateWrapperDelegate (wrapper around a RTCDataChannelDelegate) and other methods + +extension OlvidCallParticipantPeerConnectionHolder: ObvDataChannelDelegate { + + func dataChannelDidChangeState(_ dataChannel: RTCDataChannel) async { + os_log("☎️ Data Channel %{public}@ has a new state: %{public}@", log: Self.log, type: .info, dataChannel.debugDescription, dataChannel.readyState.description) + await delegate?.dataChannel(of: self, didChangeState: dataChannel.readyState) + } + + + func dataChannel(_ dataChannel: RTCDataChannel, didReceiveMessageWith buffer: RTCDataBuffer) async { + os_log("☎️ Data Channel %{public}@ did receive message with buffer", log: Self.log, type: .info, dataChannel.debugDescription) + assert(!buffer.isBinary) + let webRTCDataChannelMessageJSON: WebRTCDataChannelMessageJSON + do { + webRTCDataChannelMessageJSON = try WebRTCDataChannelMessageJSON.jsonDecode(data: buffer.data) + } catch { + os_log("☎️ Could not decode message received on the RTC data channel as a WebRTCMessageJSON: %{public}@", log: Self.log, type: .fault, error.localizedDescription) + return + } + assert(delegate != nil) + await delegate?.dataChannel(of: self, didReceiveMessage: webRTCDataChannelMessageJSON) + } + + + func sendDataChannelMessage(_ message: WebRTCDataChannelMessageJSON) async throws { + guard let peerConnection else { + throw ObvError.noPeerConnectionAvailable + } + let op = SendDataThroughPeerConnectionOperation(peerConnection: peerConnection, message: message) + // Do not await the end of this operation, as it might take a long time + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, op.debugDescription) + rtcPeerConnectionQueue.addOperation(op) + //await rtcPeerConnectionQueue.addAndAwaitOperation(op) + //guard !op.isCancelled else { + // throw ObvError.sendDataChannelMessage(error: op.reasonForCancel) + //} + } + +} + + +// MARK: - Implementing RTCPeerConnectionDelegateWrapperDelegate (wrapper around a RTCPeerConnectionDelegate) + +extension OlvidCallParticipantPeerConnectionHolder: ObvPeerConnectionDelegate { + + /// According to https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Perfect_negotiation, + /// This is the best place to get a local description and send it using the signaling channel to the remote peer. + func peerConnectionShouldNegotiate(_ peerConnection: ObvPeerConnection) async { + + os_log("☎️ Peer Connection should negociate was called", log: Self.log, type: .info) + setRTCPeerConnectionIfRequired(peerConnection) + + let reconnectOfferCounterBeforeOp = self.reconnectOfferCounter + + let op = CreateAndSetLocalDescriptionIfAppropriateOperation( + peerConnection: peerConnection, + gatheringPolicy: gatheringPolicy, + reconnectOfferCounter: reconnectOfferCounter, + reconnectAnswerCounter: reconnectAnswerCounter, + maxaveragebitrate: ObvMessengerSettings.VoIP.maxaveragebitrate) + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, op.debugDescription) + await rtcPeerConnectionQueue.addAndAwaitOperation(op) + guard !op.isCancelled else { + os_log("☎️🛑Could not negotiate: %{public}@", log: Self.log, type: .fault, op.reasonForCancel?.localizedDescription ?? "None") + assertionFailure() + return + } + + // Make sure we have no race condition (occuring if this method was called back-to-back) + + guard self.reconnectOfferCounter == reconnectOfferCounterBeforeOp else { + await peerConnectionShouldNegotiate(peerConnection) + return + } + + self.reconnectOfferCounter = op.reconnectOfferCounter + + if op.gaetheringStateNeedsToBeReset { + resetGatheringState() + } + + if let toSend = op.toSend { + guard let delegate else { assertionFailure(); return } + await delegate.sendLocalDescription(sessionDescription: toSend.filteredSessionDescription, reconnectCounter: toSend.reconnectCounter, peerReconnectCounterToOverride: toSend.peerReconnectCounterToOverride) + } + + } + + + func peerConnection(_ peerConnection: ObvPeerConnection, didChange newState: RTCPeerConnectionState) async { + os_log("☎️ RTCPeerConnection didChange RTCPeerConnectionState: %{public}@", log: Self.log, type: .info, newState.debugDescription) + } + + + func peerConnection(_ peerConnection: ObvPeerConnection, didChange stateChanged: RTCSignalingState) async { + os_log("☎️ RTCPeerConnection didChange RTCSignalingState: %{public}@. Current ICE connection state is %{public}@", log: Self.log, type: .info, stateChanged.debugDescription, peerConnection.iceConnectionState.debugDescription) + self.setRTCPeerConnectionIfRequired(peerConnection) + if stateChanged == .stable && peerConnection.iceConnectionState == .connected { + await delegate?.peerConnectionStateDidChange(newState: .connected) + } + if stateChanged == .closed { + os_log("☎️🛑 Signaling state is closed", log: Self.log, type: .info) + } + } + + + func peerConnection(_ peerConnection: ObvPeerConnection, didAdd stream: RTCMediaStream) async { + os_log("☎️ RTCPeerConnection didAdd RTCMediaStream", log: Self.log, type: .info) + setRTCPeerConnectionIfRequired(peerConnection) + } + + + func peerConnection(_ peerConnection: ObvPeerConnection, didRemove stream: RTCMediaStream) async { + os_log("☎️ RTCPeerConnection didRemove RTCMediaStream", log: Self.log, type: .info) + setRTCPeerConnectionIfRequired(peerConnection) + } + + + func peerConnection(_ peerConnection: ObvPeerConnection, didChange newState: RTCIceConnectionState) async { + os_log("☎️ RTCPeerConnection didChange RTCIceConnectionState: %{public}@", log: Self.log, type: .info, newState.debugDescription) + setRTCPeerConnectionIfRequired(peerConnection) + await delegate?.peerConnectionStateDidChange(newState: newState) + } + + + func peerConnection(_ peerConnection: ObvPeerConnection, didChange newState: RTCIceGatheringState) async { + os_log("☎️❄️ Peer Connection Ice Gathering State changed to: %{public}@", log: Self.log, type: .info, newState.debugDescription) + setRTCPeerConnectionIfRequired(peerConnection) + guard case .gatherOnce = gatheringPolicy else { return } + switch newState { + case .new: + break + case .gathering: + // We start gathering --> clear the turnCandidates list + resetGatheringState() + case .complete: + switch gatheringPolicy { + case .gatherOnce: + if iceCandidatesGeneratedLocally.isEmpty { + os_log("☎️❄️ No ICE candidates found", log: Self.log, type: .info) + } else { + // We have all we need to send the local description to the caller. + os_log("☎️❄️ Calls completed ICE Gathering with %{public}@ candidates", log: Self.log, type: .info, String(self.iceCandidatesGeneratedLocally.count)) + Task { + try? await iceGatheringCompleted() + } + } + case .gatherContinually: + break // Do nothing + } + @unknown default: + assertionFailure() + } + } + + + func peerConnection(_ peerConnection: ObvPeerConnection, didGenerate candidate: RTCIceCandidate) async { + os_log("☎️❄️ Peer Connection didGenerate RTCIceCandidate", log: Self.log, type: .info) + setRTCPeerConnectionIfRequired(peerConnection) + switch gatheringPolicy { + case .gatherOnce: + iceCandidatesGeneratedLocally.append(candidate) + if iceCandidatesGeneratedLocally.count == 1 { /// At least one candidate, we wait one second and hope that the other candidate will be added. + try? await Task.sleep(seconds: 2) + try? await iceGatheringCompleted() + } + case .gatherContinually: + Task { + try? await delegate?.sendNewIceCandidateMessage(candidate: candidate) + } + } + } + + + func peerConnection(_ peerConnection: ObvPeerConnection, didRemove candidates: [RTCIceCandidate]) async { + os_log("☎️❄️ Peer Connection didRemove RTCIceCandidate", log: Self.log, type: .info) + assert(delegate != nil) + setRTCPeerConnectionIfRequired(peerConnection) + switch gatheringPolicy { + case .gatherOnce: + iceCandidatesGeneratedLocally.removeAll { candidates.contains($0) } + case .gatherContinually: + try? await delegate?.sendRemoveIceCandidatesMessages(candidates: candidates) + } + } + + + func peerConnection(_ peerConnection: ObvPeerConnection, didOpen dataChannel: RTCDataChannel) async { + os_log("☎️ Peer Connection didOpen RTCDataChannel", log: Self.log, type: .info) + setRTCPeerConnectionIfRequired(peerConnection) + } + +} + + +// MARK: - Managing session descriptions + +extension OlvidCallParticipantPeerConnectionHolder { + + func setRemoteDescription(_ sessionDescription: RTCSessionDescription) async throws { + + os_log("☎️ Setting a session description of type %{public}@", log: Self.log, type: .info, sessionDescription.type.debugDescription) + + guard let peerConnection else { + assertionFailure() + throw ObvError.noPeerConnectionAvailable + } + + // Since we are setting a remote description, we expect to be either in the stable or haveLocalOffer states. + // We do not test this though, as the following call will throw if we are not in one of these states. + + let op = SetRemoteDescriptionOperation(input: .peerConnection(peerConnection: peerConnection), remoteSessionDescription: sessionDescription) + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, op.debugDescription) + await rtcPeerConnectionQueue.addAndAwaitOperation(op) + guard !op.isCancelled else { + throw ObvError.setRemoteDescriptionFailed(error: op.reasonForCancel) + } + self.readyToProcessPeerIceCandidates = true + + } + + + func handleReceivedRestartSdp(sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int, shouldISendTheOfferToCallParticipant: Bool) async throws { + + guard let peerConnection else { + assertionFailure("We expect rtcPeerConnection to exist at this point") + throw ObvError.noPeerConnectionAvailable + } + + let op = HandleReceivedRestartSdpOperation( + peerConnection: peerConnection, + sessionDescription: sessionDescription, + receivedReconnectCounter: reconnectCounter, + receivedPeerReconnectCounterToOverride: peerReconnectCounterToOverride, + reconnectAnswerCounter: reconnectAnswerCounter, + reconnectOfferCounter: reconnectOfferCounter, + shouldISendTheOfferToCallParticipant: shouldISendTheOfferToCallParticipant) + + os_log("☎️ Operations in the queue: %{public}@ before adding %{public}@", log: Self.log, type: .info, rtcPeerConnectionQueue.operations.debugDescription, op.debugDescription) + await rtcPeerConnectionQueue.addAndAwaitOperation(op) + + guard !op.isCancelled else { + throw ObvError.handleReceivedRestartSdpFailed(error: op.reasonForCancel) + } + + if let newReconnectAnswerCounter = op.newReconnectAnswerCounter { + self.reconnectAnswerCounter = newReconnectAnswerCounter + } + + } + +} + + +// MARK: - Audio control + +extension OlvidCallParticipantPeerConnectionHolder { + + func setAudioTrack(isEnabled: Bool) async throws { + guard let peerConnection else { + self.audioTrackIsEnabledOnCreation = isEnabled + return + } + try await peerConnection.setAudioTrack(isEnabled: isEnabled) + } + + var isAudioTrackEnabled: Bool { + get throws { + guard let peerConnection else { + return audioTrackIsEnabledOnCreation + } + return try peerConnection.isAudioTrackEnabled + } + } +} + + +// MARK - Errors + +extension OlvidCallParticipantPeerConnectionHolder { + + enum ObvError: Error, CustomStringConvertible { + + case noTurnCredentialsAvailable + case couldNotFindExpectedMatchInSDP + case turnCredentialsAreSetAlready + case noPeerConnectionAvailable + case unexpectedNumberOfMediaLinesInSessionDescription + case delegateIsNil + case peerConnectionCreationFailed + case setRemoteDescriptionFailed(error: SetRemoteDescriptionOperation.ReasonForCancel?) + case addIceCandidateFailed(error: AddIceCandidateOperation.ReasonForCancel?) + case restartIceFailed(error: RestartIceIfRequiredOperation.ReasonForCancel?) + case dataChannelIsNil + case sendDataChannelMessage(error: SendDataThroughPeerConnectionOperation.ReasonForCancel?) + case handleReceivedRestartSdpFailed(error: HandleReceivedRestartSdpOperation.ReasonForCancel?) + + var description: String { + switch self { + case .noTurnCredentialsAvailable: + return "No turn credentials available" + case .couldNotFindExpectedMatchInSDP: + return "Could not find expected match in SDP" + case .turnCredentialsAreSetAlready: + return "Turn credentials already set" + case .noPeerConnectionAvailable: + return "No peer connection available" + case .unexpectedNumberOfMediaLinesInSessionDescription: + return "Unexpected number of media lines in session description" + case .delegateIsNil: + return "Delegate is nil" + case .peerConnectionCreationFailed: + return "Peer connection creation failed" + case .setRemoteDescriptionFailed(error: let error): + return "Set remote description failed: \(error?.localizedDescription ?? "No reason specified")" + case .addIceCandidateFailed(error: let error): + return "Add ICE candidate failed: \(error?.localizedDescription ?? "No reason specified")" + case .restartIceFailed(error: let error): + return "Restart ICE failed: \(error?.localizedDescription ?? "No reason specified")" + case .dataChannelIsNil: + return "Data channel is nil" + case .sendDataChannelMessage(error: let error): + return "Send data channel message failed: \(error?.localizedDescription ?? "No reason specified")" + case .handleReceivedRestartSdpFailed(error: let error): + return "Handle received restart SDP failed: \(error?.localizedDescription ?? "No reason specified")" + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/AddIceCandidateOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/AddIceCandidateOperation.swift new file mode 100644 index 00000000..290397ea --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/AddIceCandidateOperation.swift @@ -0,0 +1,138 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import WebRTC +import OlvidUtils + + + +final class AddIceCandidateOperation: AsyncOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "AddIceCandidateOperation") + + enum InputType { + case peerConnection(peerConnection: ObvPeerConnection) + case operation(op: CreatePeerConnectionOperation) + } + + private let input: InputType + private let iceCandidate: RTCIceCandidate + + init(input: InputType, iceCandidate: RTCIceCandidate) { + self.input = input + self.iceCandidate = iceCandidate + } + + + override func main() async { + os_log("☎️❄️ [WebRTCOperation][AddIceCandidateOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️❄️ [WebRTCOperation][AddIceCandidateOperation] Finish", log: Self.log, type: .info) } + + let peerConnection: ObvPeerConnection + switch input { + case .peerConnection(let _peerConnection): + peerConnection = _peerConnection + case .operation(let op): + guard let _peerConnection = op.peerConnection else { + assertionFailure() + return cancel(withReason: .noRTCPeerConnectionProvided) + } + peerConnection = _peerConnection + } + + do { + try await peerConnection.addIceCandidate(iceCandidate) + } catch { + assertionFailure() + return cancel(withReason: .addIceCandidateFailed(error: error)) + } + return finish() + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + case noRTCPeerConnectionProvided + case addIceCandidateFailed(error: Error) + var logType: OSLogType { + return .fault + } + } + +} + + +//final class AddIceCandidateOperation: OperationWithSpecificReasonForCancel { +// +// private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "AddIceCandidateOperation") +// +// private let peerConnection: RTCPeerConnection +// private let iceCandidate: RTCIceCandidate +// +// init(peerConnection: RTCPeerConnection, iceCandidate: RTCIceCandidate) { +// self.peerConnection = peerConnection +// self.iceCandidate = iceCandidate +// } +// +// +// private var _isFinished = false { +// willSet { willChangeValue(for: \.isFinished) } +// didSet { didChangeValue(for: \.isFinished) } +// } +// +// +// final public override var isFinished: Bool { _isFinished } +// +// +// final public override func cancel(withReason reason: ReasonForCancel) { +// super.cancel(withReason: reason) +// _isFinished = true +// } +// +// +// final public func finish() { +// _isFinished = true +// } +// +// +// override func main() { +// os_log("☎️❄️ [WebRTCOperation][AddIceCandidateOperation] Start", log: Self.log, type: .info) +// defer { os_log("☎️❄️ [WebRTCOperation][AddIceCandidateOperation] Finish", log: Self.log, type: .info) } +// +// peerConnection.add(iceCandidate) { [weak self] error in +// guard let self else { return } +// if let error { +// return cancel(withReason: .addIceCandidateFailed(error: error)) +// } else { +// return finish() +// } +// } +// } +// +// +// enum ReasonForCancel: LocalizedErrorWithLogType { +// case addIceCandidateFailed(error: Error) +// var logType: OSLogType { +// return .fault +// } +// } +// +//} +// diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/ClosePeerConnectionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/ClosePeerConnectionOperation.swift new file mode 100644 index 00000000..117ccb88 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/ClosePeerConnectionOperation.swift @@ -0,0 +1,68 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import WebRTC +import OlvidUtils + + + +final class ClosePeerConnectionOperation: AsyncOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "ClosePeerConnectionOperation") + + let peerConnection: ObvPeerConnection + + init(peerConnection: ObvPeerConnection) { + self.peerConnection = peerConnection + } + + + override func main() async { + + os_log("☎️ [WebRTCOperation][ClosePeerConnectionOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️ [WebRTCOperation][ClosePeerConnectionOperation] Finish", log: Self.log, type: .info) } + + let currentConnectionState = peerConnection.connectionState + + guard currentConnectionState != .closed else { + os_log("☎️🛑 Trying to close a peer connection whose connection state is already closed. We do nothing.", log: Self.log, type: .info) + return finish() + } + + os_log("☎️🛑 Closing peer connection. State before closing: %{public}@", log: Self.log, type: .info, currentConnectionState.debugDescription) + + await peerConnection.close() + + assert(peerConnection.connectionState == .closed) + + return finish() + + } + + + + enum ReasonForCancel: LocalizedErrorWithLogType { + var logType: OSLogType { + return .fault + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/ConfigureAudioSessionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/ConfigureAudioSessionOperation.swift new file mode 100644 index 00000000..6cbdcbf0 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/ConfigureAudioSessionOperation.swift @@ -0,0 +1,88 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import AVFoundation +import WebRTC +import ObvSettings +import os.log +import OlvidUtils + + +final class ConfigureAudioSessionOperation: OperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "ConfigureAudioSessionOperation") + + private static var dateOfLastConfiguration: Date? + + override func main() { + + os_log("☎️🎵 [WebRTCOperation][ConfigureAudioSessionOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️🎵 [WebRTCOperation][ConfigureAudioSessionOperation] Finish", log: Self.log, type: .info) } + + do { + + // See also https://stackoverflow.com/questions/49170274/callkit-loudspeaker-bug-how-whatsapp-fixed-it/49466250#49466250 + // See also https://developer.apple.com/forums/thread/64544#189703 + // See also https://stackoverflow.com/questions/48023629/abnormal-behavior-of-speaker-button-on-system-provided-call-screen?rq=1 + + let rtcAudioSession = RTCAudioSession.sharedInstance() + + rtcAudioSession.lockForConfiguration() + defer { rtcAudioSession.unlockForConfiguration() } + +// try rtcAudioSession.setCategory(.playAndRecord, mode: .voiceChat) + + let configuration = RTCAudioSessionConfiguration.webRTC() + configuration.categoryOptions = [.allowBluetooth, .allowBluetoothA2DP, .duckOthers] + try rtcAudioSession.setConfiguration(configuration) + + if ObvUICoreDataConstants.useCallKit { + rtcAudioSession.useManualAudio = true + } else { + rtcAudioSession.useManualAudio = false + if !ObvMessengerConstants.isRunningOnRealDevice { + try rtcAudioSession.setActive(true) + } + //rtcAudioSession.audioSessionDidActivate(rtcAudioSession.session) + } + + try rtcAudioSession.overrideOutputAudioPort(.none) + + Self.dateOfLastConfiguration = Date.now + + } catch { + if let date = Self.dateOfLastConfiguration, abs(date.timeIntervalSinceNow) < 1 { + assertionFailure("\(error.localizedDescription) - This happens when answering an incoming call while another Olvid call was in progress. In practice, it seems to work.") + } + return cancel(withReason: .configureAudioSessionFailed(error: error)) + } + + } + + + + enum ReasonForCancel: LocalizedErrorWithLogType { + case configureAudioSessionFailed(error: Error) + var logType: OSLogType { + return .fault + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/CreateAndSetLocalDescriptionIfAppropriateOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/CreateAndSetLocalDescriptionIfAppropriateOperation.swift new file mode 100644 index 00000000..ba1df6a1 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/CreateAndSetLocalDescriptionIfAppropriateOperation.swift @@ -0,0 +1,584 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import WebRTC +import OlvidUtils + + + +final class CreateAndSetLocalDescriptionIfAppropriateOperation: AsyncOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "CreateAndSetLocalDescriptionIfAppropriateOperation") + + private let peerConnection: ObvPeerConnection + private let gatheringPolicy: OlvidCallGatheringPolicy + private(set) var reconnectOfferCounter: Int + private let reconnectAnswerCounter: Int + private let maxaveragebitrate: Int? + + init(peerConnection: ObvPeerConnection, gatheringPolicy: OlvidCallGatheringPolicy, reconnectOfferCounter: Int, reconnectAnswerCounter: Int, maxaveragebitrate: Int?) { + self.peerConnection = peerConnection + self.gatheringPolicy = gatheringPolicy + self.reconnectOfferCounter = reconnectOfferCounter + self.reconnectAnswerCounter = reconnectAnswerCounter + self.maxaveragebitrate = maxaveragebitrate + } + + + private(set) var gaetheringStateNeedsToBeReset = false + private(set) var toSend: (filteredSessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int)? + + override func main() async { + + os_log("☎️ [WebRTCOperation][CreateAndSetLocalDescriptionIfAppropriateOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️ [WebRTCOperation][CreateAndSetLocalDescriptionIfAppropriateOperation] Finish", log: Self.log, type: .info) } + + // Check that the current state is not closed + + guard peerConnection.connectionState != .closed else { + os_log("☎️ Since the peer connection is in a closed state, we do not negotiate", log: Self.log, type: .info) + return finish() + } + + // Create session description + + os_log("☎️ Creating session description", log: Self.log, type: .info) + + let sessionDescription: RTCSessionDescription? + do { + sessionDescription = try await createLocalDescriptionIfAppropriateForCurrentSignalingState() + } catch { + return cancel(withReason: .localDescriptionCreationFailed(error: error)) + } + + guard let sessionDescription else { + // No need to set a local decription + os_log("☎️ No need to set a local description", log: Self.log, type: .info) + return finish() + } + + // Filter the session description we just created + + let filteredSessionDescription: RTCSessionDescription + do { + os_log("☎️ Filtering SDP...", log: Self.log, type: .info) + filteredSessionDescription = try self.filterSdpDescriptionCodec(rtcSessionDescription: sessionDescription) + //os_log("☎️ Filtered SDP: %{public}@", log: Self.log, type: .info, filteredSessionDescription.sdp) + } catch { + return cancel(withReason: .filterLocalSessionDescriptionFailed(error: error)) + } + + // Set the filtered session description + + do { + os_log("☎️ Setting local (filtered) SDP...", log: Self.log, type: .info) + try await peerConnection.setLocalDescription(filteredSessionDescription) + os_log("☎️ The filtered SDP was set", log: Self.log, type: .info) + } catch { + os_log("☎️ Failed to set the filtered SDP", log: Self.log, type: .fault) + return cancel(withReason: .setLocalDescriptionFailed(error: error)) + } + + + switch gatheringPolicy { + case .gatherOnce: + gaetheringStateNeedsToBeReset = true + case .gatherContinually: + switch filteredSessionDescription.type { + case .offer: + toSend = (filteredSessionDescription, reconnectOfferCounter, reconnectAnswerCounter) + case .answer: + toSend = (filteredSessionDescription, reconnectAnswerCounter, -1) + case .prAnswer, .rollback: + assertionFailure() + @unknown default: + assertionFailure() + } + } + + os_log("☎️ Finishing the CreateAndSetLocalDescriptionIfAppropriateOperation", log: Self.log, type: .info) + + return finish() + + } + + + private func createLocalDescriptionIfAppropriateForCurrentSignalingState() async throws -> RTCSessionDescription? { + os_log("☎️ Calling Create Local Description if appropriate for the current signaling state", log: Self.log, type: .info) + let constraints = RTCMediaConstraints(mandatoryConstraints: nil, optionalConstraints: nil) + switch peerConnection.signalingState { + case .stable: + os_log("☎️ We are in a stable state --> create offer", log: Self.log, type: .info) + reconnectOfferCounter += 1 + let offer = try await peerConnection.offer(for: constraints) + return offer + case .haveRemoteOffer: + os_log("☎️ We are in a haveRemoteOffer state --> create answer", log: Self.log, type: .info) + let answer = try await peerConnection.answer(for: constraints) + return answer + case .haveLocalOffer, .haveLocalPrAnswer, .haveRemotePrAnswer, .closed: + os_log("☎️ We are neither in a stable or a haveRemoteOffer state, we do not create any offer", log: Self.log, type: .info) + return nil + @unknown default: + assertionFailure() + return nil + } + } + + + // MARK: - Filtering session descriptions + + private static let audioCodecs = Set(["opus", "PCMU", "PCMA", "telephone-event", "red"]) + + + private func filterSdpDescriptionCodec(rtcSessionDescription: RTCSessionDescription) throws -> RTCSessionDescription { + + let sessionDescription = rtcSessionDescription.sdp + + let mediaStartAudio = try NSRegularExpression(pattern: "^m=audio\\s+", options: .anchorsMatchLines) + let mediaStart = try NSRegularExpression(pattern: "^m=", options: .anchorsMatchLines) + let lines = sessionDescription.split(whereSeparator: { $0.isNewline }).map({String($0)}) + var audioSectionStarted = false + var audioLines = [String]() + var filteredLines = [String]() + for line in lines { + if audioSectionStarted { + let isFirstLineOfAnotherMediaSection = mediaStart.numberOfMatches(in: line, options: [], range: NSRange(location: 0, length: line.count)) > 0 + if isFirstLineOfAnotherMediaSection { + audioSectionStarted = false + // The audio section has ended, we can process all the audio lines with gathered + let filteredAudioLines = try processAudioLines(audioLines) + filteredLines.append(contentsOf: filteredAudioLines) + filteredLines.append(line) + } else { + audioLines.append(line) + } + } else { + let isFirstLineOfAudioSection = mediaStartAudio.numberOfMatches(in: line, options: [], range: NSRange(location: 0, length: line.count)) > 0 + if isFirstLineOfAudioSection { + audioSectionStarted = true + audioLines.append(line) + } else { + filteredLines.append(line) + } + } + } + if audioSectionStarted { + // In case the audio section was the last section of the session description + audioSectionStarted = false + let filteredAudioLines = try processAudioLines(audioLines) + filteredLines.append(contentsOf: filteredAudioLines) + } + let filteredSessionDescription = filteredLines.joined(separator: "\r\n").appending("\r\n") + return RTCSessionDescription(type: rtcSessionDescription.type, sdp: filteredSessionDescription) + } + + + private func processAudioLines(_ audioLines: [String]) throws -> [String] { + + let rtpmapPattern = try NSRegularExpression(pattern: "^a=rtpmap:([0-9]+)\\s+([^\\s/]+)", options: .anchorsMatchLines) + + // First pass + var formatsToKeep = Set() + var opusFormat: String? + for line in audioLines { + guard let result = rtpmapPattern.firstMatch(in: line, options: [], range: NSRange(location: 0, length: line.count)) else { continue } + let formatRange = result.range(at: 1) + let codecRange = result.range(at: 2) + let format = (line as NSString).substring(with: formatRange) + let codec = (line as NSString).substring(with: codecRange) + guard Self.audioCodecs.contains(codec) else { continue } + formatsToKeep.insert(format) + if codec == "opus" { + opusFormat = format + } + } + + assert(opusFormat != nil) + + // Second pass + // 1. Rewrite the first line (only keep the formats to keep) + var processedAudioLines = [String]() + do { + let firstLine = try NSRegularExpression(pattern: "^(m=\\S+\\s+\\S+\\s+\\S+)\\s+(([0-9]+\\s*)+)$", options: .anchorsMatchLines) + guard let result = firstLine.firstMatch(in: audioLines[0], options: [], range: NSRange(location: 0, length: audioLines[0].count)) else { + throw ObvError.couldNotFindExpectedMatchInSDP + } + let processedFirstLine = (audioLines[0] as NSString) + .substring(with: result.range(at: 1)) + .appending(" ") + .appending( + (audioLines[0] as NSString) + .substring(with: result.range(at: 2)) + .split(whereSeparator: { $0.isWhitespace }) + .map({String($0)}) + .filter({ formatsToKeep.contains($0) }) + .joined(separator: " ")) + processedAudioLines.append(processedFirstLine) + } + // 2. Filter subsequent lines + let rtpmapOrOptionPattern = try NSRegularExpression(pattern: "^a=(rtpmap|fmtp|rtcp-fb):([0-9]+)\\s+", options: .anchorsMatchLines) + + for i in 1.. { +// +// private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "CreateAndSetLocalDescriptionIfAppropriateOperation") +// +// private let peerConnection: RTCPeerConnection +// private let gatheringPolicy: GatheringPolicy +// private(set) var reconnectOfferCounter: Int +// private let reconnectAnswerCounter: Int +// private let maxaveragebitrate: Int? +// +// init(peerConnection: RTCPeerConnection, gatheringPolicy: GatheringPolicy, reconnectOfferCounter: Int, reconnectAnswerCounter: Int, maxaveragebitrate: Int?) { +// self.peerConnection = peerConnection +// self.gatheringPolicy = gatheringPolicy +// self.reconnectOfferCounter = reconnectOfferCounter +// self.reconnectAnswerCounter = reconnectAnswerCounter +// self.maxaveragebitrate = maxaveragebitrate +// } +// +// +// private(set) var gaetheringStateNeedsToBeReset = false +// private(set) var toSend: (filteredSessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int)? +// +// +// private var _isFinished = false { +// willSet { willChangeValue(for: \.isFinished) } +// didSet { didChangeValue(for: \.isFinished) } +// } +// +// +// final public override var isFinished: Bool { _isFinished } +// +// +// final public override func cancel(withReason reason: ReasonForCancel) { +// super.cancel(withReason: reason) +// _isFinished = true +// } +// +// +// final public func finish() { +// _isFinished = true +// } +// +// +// override func main() { +// +// os_log("☎️ [WebRTCOperation][CreateAndSetLocalDescriptionIfAppropriateOperation] Start", log: Self.log, type: .info) +// defer { os_log("☎️ [WebRTCOperation][CreateAndSetLocalDescriptionIfAppropriateOperation] Finish", log: Self.log, type: .info) } +// +// // Check that the current state is not closed +// +// guard peerConnection.connectionState != .closed else { +// os_log("☎️ Since the peer connection is in a closed state, we do not negotiate", log: Self.log, type: .info) +// return finish() +// } +// +// // Create session description +// +// os_log("☎️ Creating session description", log: Self.log, type: .info) +// +// createLocalDescriptionIfAppropriateForCurrentSignalingState { [weak self] sessionDescription, error in +// guard let self else { return } +// if let error { +// return cancel(withReason: .localDescriptionCreationFailed(error: error)) +// } +// +// guard let sessionDescription else { +// // No need to set a local decription +// os_log("☎️ No need to set a local description", log: Self.log, type: .info) +// return finish() +// } +// +// // Filter the session description we just created +// +// let filteredSessionDescription: RTCSessionDescription +// do { +// os_log("☎️ Filtering SDP...", log: Self.log, type: .info) +// filteredSessionDescription = try self.filterSdpDescriptionCodec(rtcSessionDescription: sessionDescription) +// //os_log("☎️ Filtered SDP: %{public}@", log: Self.log, type: .info, filteredSessionDescription.sdp) +// } catch { +// return cancel(withReason: .filterLocalSessionDescriptionFailed(error: error)) +// } +// +// // Set the filtered session description +// +// os_log("☎️ Setting the filtered SDP...", log: Self.log, type: .info) +// +// peerConnection.setLocalDescription(filteredSessionDescription) { [weak self] error in +// guard let self else { return } +// +// if let error { +// return cancel(withReason: .setLocalDescriptionFailed(error: error)) +// } +// +// os_log("☎️ The filtered SDP was set", log: Self.log, type: .info) +// +// switch gatheringPolicy { +// case .gatherOnce: +// gaetheringStateNeedsToBeReset = true +// case .gatherContinually: +// switch filteredSessionDescription.type { +// case .offer: +// toSend = (filteredSessionDescription, reconnectOfferCounter, reconnectAnswerCounter) +// case .answer: +// toSend = (filteredSessionDescription, reconnectAnswerCounter, -1) +// case .prAnswer, .rollback: +// assertionFailure() +// @unknown default: +// assertionFailure() +// } +// } +// +// os_log("☎️ Finishing the CreateAndSetLocalDescriptionIfAppropriateOperation", log: Self.log, type: .info) +// +// return finish() +// +// } +// +// } +// +// } +// +// +// private func createLocalDescriptionIfAppropriateForCurrentSignalingState(_ completionHandler: @escaping RTCCreateSessionDescriptionCompletionHandler) { +// os_log("☎️ Calling Create Local Description if appropriate for the current signaling state", log: Self.log, type: .info) +// let constraints = RTCMediaConstraints(mandatoryConstraints: nil, optionalConstraints: nil) +// switch peerConnection.signalingState { +// case .stable: +// os_log("☎️ We are in a stable state --> create offer", log: Self.log, type: .info) +// reconnectOfferCounter += 1 +// peerConnection.offer(for: constraints, completionHandler: completionHandler) +// case .haveRemoteOffer: +// os_log("☎️ We are in a haveRemoteOffer state --> create answer", log: Self.log, type: .info) +// peerConnection.answer(for: constraints, completionHandler: completionHandler) +// case .haveLocalOffer, .haveLocalPrAnswer, .haveRemotePrAnswer, .closed: +// os_log("☎️ We are neither in a stable or a haveRemoteOffer state, we do not create any offer", log: Self.log, type: .info) +// completionHandler(nil, nil) +// @unknown default: +// assertionFailure() +// completionHandler(nil, nil) +// } +// } +// +// +// // MARK: - Filtering session descriptions +// +// private static let audioCodecs = Set(["opus", "PCMU", "PCMA", "telephone-event", "red"]) +// +// +// private func filterSdpDescriptionCodec(rtcSessionDescription: RTCSessionDescription) throws -> RTCSessionDescription { +// +// let sessionDescription = rtcSessionDescription.sdp +// +// let mediaStartAudio = try NSRegularExpression(pattern: "^m=audio\\s+", options: .anchorsMatchLines) +// let mediaStart = try NSRegularExpression(pattern: "^m=", options: .anchorsMatchLines) +// let lines = sessionDescription.split(whereSeparator: { $0.isNewline }).map({String($0)}) +// var audioSectionStarted = false +// var audioLines = [String]() +// var filteredLines = [String]() +// for line in lines { +// if audioSectionStarted { +// let isFirstLineOfAnotherMediaSection = mediaStart.numberOfMatches(in: line, options: [], range: NSRange(location: 0, length: line.count)) > 0 +// if isFirstLineOfAnotherMediaSection { +// audioSectionStarted = false +// // The audio section has ended, we can process all the audio lines with gathered +// let filteredAudioLines = try processAudioLines(audioLines) +// filteredLines.append(contentsOf: filteredAudioLines) +// filteredLines.append(line) +// } else { +// audioLines.append(line) +// } +// } else { +// let isFirstLineOfAudioSection = mediaStartAudio.numberOfMatches(in: line, options: [], range: NSRange(location: 0, length: line.count)) > 0 +// if isFirstLineOfAudioSection { +// audioSectionStarted = true +// audioLines.append(line) +// } else { +// filteredLines.append(line) +// } +// } +// } +// if audioSectionStarted { +// // In case the audio section was the last section of the session description +// audioSectionStarted = false +// let filteredAudioLines = try processAudioLines(audioLines) +// filteredLines.append(contentsOf: filteredAudioLines) +// } +// let filteredSessionDescription = filteredLines.joined(separator: "\r\n").appending("\r\n") +// return RTCSessionDescription(type: rtcSessionDescription.type, sdp: filteredSessionDescription) +// } +// +// +// private func processAudioLines(_ audioLines: [String]) throws -> [String] { +// +// let rtpmapPattern = try NSRegularExpression(pattern: "^a=rtpmap:([0-9]+)\\s+([^\\s/]+)", options: .anchorsMatchLines) +// +// // First pass +// var formatsToKeep = Set() +// var opusFormat: String? +// for line in audioLines { +// guard let result = rtpmapPattern.firstMatch(in: line, options: [], range: NSRange(location: 0, length: line.count)) else { continue } +// let formatRange = result.range(at: 1) +// let codecRange = result.range(at: 2) +// let format = (line as NSString).substring(with: formatRange) +// let codec = (line as NSString).substring(with: codecRange) +// guard Self.audioCodecs.contains(codec) else { continue } +// formatsToKeep.insert(format) +// if codec == "opus" { +// opusFormat = format +// } +// } +// +// assert(opusFormat != nil) +// +// // Second pass +// // 1. Rewrite the first line (only keep the formats to keep) +// var processedAudioLines = [String]() +// do { +// let firstLine = try NSRegularExpression(pattern: "^(m=\\S+\\s+\\S+\\s+\\S+)\\s+(([0-9]+\\s*)+)$", options: .anchorsMatchLines) +// guard let result = firstLine.firstMatch(in: audioLines[0], options: [], range: NSRange(location: 0, length: audioLines[0].count)) else { +// throw ObvError.couldNotFindExpectedMatchInSDP +// } +// let processedFirstLine = (audioLines[0] as NSString) +// .substring(with: result.range(at: 1)) +// .appending(" ") +// .appending( +// (audioLines[0] as NSString) +// .substring(with: result.range(at: 2)) +// .split(whereSeparator: { $0.isWhitespace }) +// .map({String($0)}) +// .filter({ formatsToKeep.contains($0) }) +// .joined(separator: " ")) +// processedAudioLines.append(processedFirstLine) +// } +// // 2. Filter subsequent lines +// let rtpmapOrOptionPattern = try NSRegularExpression(pattern: "^a=(rtpmap|fmtp|rtcp-fb):([0-9]+)\\s+", options: .anchorsMatchLines) +// +// for i in 1... + */ + +import Foundation +import os.log +import WebRTC +import OlvidUtils + + + +final class CreatePeerConnectionOperation: AsyncOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "CreatePeerConnectionOperation") + + static let labelForDataChannel = "data0" + + private let turnCredentials: TurnCredentials + private let gatheringPolicy: OlvidCallGatheringPolicy + private let obvPeerConnectionDelegate: ObvPeerConnectionDelegate + private let obvDataChannelDelegate: ObvDataChannelDelegate + private let isAudioTrackEnabled: Bool + + // If this operation finishes without cancelling, this is set + private(set) var peerConnection: ObvPeerConnection? + + init(turnCredentials: TurnCredentials, gatheringPolicy: OlvidCallGatheringPolicy, isAudioTrackEnabled: Bool, obvPeerConnectionDelegate: ObvPeerConnectionDelegate, obvDataChannelDelegate: ObvDataChannelDelegate) { + self.turnCredentials = turnCredentials + self.gatheringPolicy = gatheringPolicy + self.obvPeerConnectionDelegate = obvPeerConnectionDelegate + self.obvDataChannelDelegate = obvDataChannelDelegate + self.isAudioTrackEnabled = isAudioTrackEnabled + } + + + override func main() async { + + os_log("☎️ [WebRTCOperation][CreatePeerConnectionOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️ [WebRTCOperation][CreatePeerConnectionOperation] Finish", log: Self.log, type: .info) } + + let rtcConfiguration = Self.createRTCConfiguration(turnCredentials: turnCredentials, gatheringPolicy: gatheringPolicy) + let constraints = RTCMediaConstraints(mandatoryConstraints: nil, optionalConstraints: nil) + os_log("☎️ Create Peer Connection with %{public}@ policy", log: Self.log, type: .info, gatheringPolicy.localizedDescription) + + do { + peerConnection = try await ObvPeerConnection(with: rtcConfiguration, constraints: constraints, delegate: obvPeerConnectionDelegate) + } catch { + return cancel(withReason: .peerConnectionCreationFailed) + } + + guard let peerConnection else { + assertionFailure() + return cancel(withReason: .peerConnectionCreationFailed) + } + + os_log("☎️ Add Olvid audio tracks", log: Self.log, type: .info) + do { + try await peerConnection.addAudioTrack(isEnabled: isAudioTrackEnabled) + } catch { + assertionFailure() + return cancel(withReason: .audiotrackCreationFailed) + } + + os_log("☎️ Create Data Channel", log: Self.log, type: .info) + do { + try await peerConnection.addDataChannel(dataChannelDelegate: obvDataChannelDelegate) + } catch { + return cancel(withReason: .dataChannelCreationFailed) + } + + return finish() + + } + + + private static func createRTCConfiguration(turnCredentials: TurnCredentials, gatheringPolicy: OlvidCallGatheringPolicy) -> RTCConfiguration { + + // 2022-03-11, we used to use the servers indicated in the turn credentials. + // We do not do that anymore and use the (user) preferred servers. + let iceServer = WebRTC.RTCIceServer(urlStrings: ObvMessengerConstants.ICEServerURLs.preferred, + username: turnCredentials.turnUserName, + credential: turnCredentials.turnPassword, + tlsCertPolicy: .insecureNoCheck) + + let rtcConfiguration = RTCConfiguration() + rtcConfiguration.iceServers = [iceServer] + rtcConfiguration.iceTransportPolicy = .relay + rtcConfiguration.sdpSemantics = .unifiedPlan + rtcConfiguration.continualGatheringPolicy = gatheringPolicy.rtcPolicy + + return rtcConfiguration + + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case peerConnectionCreationFailed + case dataChannelCreationFailed + case audiotrackCreationFailed + + var logType: OSLogType { + return .fault + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/HandleReceivedRestartSdpOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/HandleReceivedRestartSdpOperation.swift new file mode 100644 index 00000000..a85a39c8 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/HandleReceivedRestartSdpOperation.swift @@ -0,0 +1,143 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import WebRTC +import OlvidUtils + + + +final class HandleReceivedRestartSdpOperation: AsyncOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "AddIceCandidateOperation") + + private let peerConnection: ObvPeerConnection + private let sessionDescription: RTCSessionDescription + private let receivedReconnectCounter: Int + private let receivedPeerReconnectCounterToOverride: Int + private let reconnectAnswerCounter: Int + private let reconnectOfferCounter: Int + private let shouldISendTheOfferToCallParticipant: Bool + + init(peerConnection: ObvPeerConnection, sessionDescription: RTCSessionDescription, receivedReconnectCounter: Int, receivedPeerReconnectCounterToOverride: Int, reconnectAnswerCounter: Int, reconnectOfferCounter: Int, shouldISendTheOfferToCallParticipant: Bool) { + self.peerConnection = peerConnection + self.sessionDescription = sessionDescription + self.receivedReconnectCounter = receivedReconnectCounter + self.receivedPeerReconnectCounterToOverride = receivedPeerReconnectCounterToOverride + self.reconnectAnswerCounter = reconnectAnswerCounter + self.reconnectOfferCounter = reconnectOfferCounter + self.shouldISendTheOfferToCallParticipant = shouldISendTheOfferToCallParticipant + self.newReconnectAnswerCounter = reconnectAnswerCounter // Will be modified in the main() method of this operation + } + + + private(set) var newReconnectAnswerCounter: Int? + + + override func main() async { + + os_log("☎️ [WebRTCOperation][HandleReceivedRestartSdpOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️ [WebRTCOperation][HandleReceivedRestartSdpOperation] Finish", log: Self.log, type: .info) } + + do { + + switch sessionDescription.type { + + case .offer: + + // If we receive an offer with a counter smaller than another offer we previously received, we can ignore it. + guard receivedReconnectCounter >= reconnectAnswerCounter else { + os_log("☎️ Received restart offer with counter too low %{public}@ vs. %{public}@", log: Self.log, type: .info, String(receivedReconnectCounter), String(reconnectAnswerCounter)) + return finish() + } + + switch peerConnection.signalingState { + case .haveRemoteOffer: + os_log("☎️ Received restart offer while already having one --> rollback", log: Self.log, type: .info) + try await peerConnection.rollback() + + case .haveLocalOffer: + // We already sent an offer. + // If we are the offer sender, do nothing, otherwise rollback and process the new offer + if shouldISendTheOfferToCallParticipant { + if receivedPeerReconnectCounterToOverride == reconnectOfferCounter { + os_log("☎️ Received restart offer while already having created an offer. It specifies to override my current offer --> rollback", log: Self.log, type: .info) + try await peerConnection.rollback() + } else { + os_log("☎️ Received restart offer while already having created an offer. I am the offerer --> ignore this new offer", log: Self.log, type: .info) + return finish() + } + } else { + os_log("☎️ Received restart offer while already having created an offer. I am not the offerer --> rollback", log: Self.log, type: .info) + try await peerConnection.rollback() + } + + default: + break + } + + newReconnectAnswerCounter = receivedReconnectCounter + + os_log("☎️ Setting remote description", log: Self.log, type: .info) + try await peerConnection.setRemoteDescription(sessionDescription) + + await peerConnection.restartIce() + + case .answer: + + guard receivedReconnectCounter == reconnectOfferCounter else { + os_log("☎️ Received restart answer with bad counter %{public}@ vs. %{public}@", log: Self.log, type: .info, String(receivedReconnectCounter), String(reconnectOfferCounter)) + return finish() + } + + guard peerConnection.signalingState == .haveLocalOffer else { + os_log("☎️ Received restart answer while not in the haveLocalOffer state --> ignore this answer", log: Self.log, type: .info) + return finish() + } + + os_log("☎️ Applying received restart answer", log: Self.log, type: .info) + os_log("☎️ Setting remote description", log: Self.log, type: .info) + try await peerConnection.setRemoteDescription(sessionDescription) + + default: + + assertionFailure() + + } + + return finish() + + } catch { + assertionFailure() + return cancel(withReason: .failed(error: error)) + } + + } + + enum ReasonForCancel: LocalizedErrorWithLogType { + case rollbackFailed(error: Error) + case setRemoteDescriptionFailed(error: Error) + case failed(error: Error) + var logType: OSLogType { + return .fault + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/RemoveIceCandidateOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/RemoveIceCandidateOperation.swift new file mode 100644 index 00000000..ad3a41fa --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/RemoveIceCandidateOperation.swift @@ -0,0 +1,55 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import WebRTC +import OlvidUtils + + + +final class RemoveIceCandidatesOperation: AsyncOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "RemoveIceCandidatesOperation") + + private let peerConnection: ObvPeerConnection + private let iceCandidates: [RTCIceCandidate] + + init(peerConnection: ObvPeerConnection, iceCandidates: [RTCIceCandidate]) { + self.peerConnection = peerConnection + self.iceCandidates = iceCandidates + } + + + override func main() async { + os_log("☎️❄️ [WebRTCOperation][RemoveIceCandidatesOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️❄️ [WebRTCOperation][RemoveIceCandidatesOperation] Finish", log: Self.log, type: .info) } + await peerConnection.removeIceCandidates(iceCandidates) + return finish() + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + var logType: OSLogType { + return .fault + } + } + +} + diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/RestartIceIfRequiredOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/RestartIceIfRequiredOperation.swift new file mode 100644 index 00000000..fec9cb93 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/RestartIceIfRequiredOperation.swift @@ -0,0 +1,96 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import WebRTC +import OlvidUtils + + + +final class RestartIceIfRequiredOperation: AsyncOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "RestartIceIfRequiredOperation") + + private let peerConnection: ObvPeerConnection + private let shouldISendTheOfferToCallParticipant: Bool + + init(peerConnection: ObvPeerConnection, shouldISendTheOfferToCallParticipant: Bool) { + self.peerConnection = peerConnection + self.shouldISendTheOfferToCallParticipant = shouldISendTheOfferToCallParticipant + } + + + override func main() async { + + os_log("☎️❄️ [WebRTCOperation][RestartIceIfRequiredOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️❄️ [WebRTCOperation][RestartIceIfRequiredOperation] Finish", log: Self.log, type: .info) } + + guard isRestartICENeeded else { + return finish() + } + + if isRollbackNeeded { + let rollbackSessionDescription = RTCSessionDescription(type: .rollback, sdp: "") + do { + try await peerConnection.setLocalDescription(rollbackSessionDescription) + } catch { + return cancel(withReason: .rollbackFailed(error: error)) + } + } + + await peerConnection.restartIce() + + return finish() + + } + + + private var isRestartICENeeded: Bool { + switch peerConnection.signalingState { + case .haveRemoteOffer: + return shouldISendTheOfferToCallParticipant + default: + return true + } + } + + private var isRollbackNeeded: Bool { + switch peerConnection.signalingState { + case .haveLocalOffer: + return true + case .haveRemoteOffer: + return shouldISendTheOfferToCallParticipant + case .stable, .haveLocalPrAnswer, .haveRemotePrAnswer, .closed: + return false + @unknown default: + assertionFailure() + return false + } + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + case rollbackFailed(error: Error) + var logType: OSLogType { + return .fault + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/SendDataThroughPeerConnectionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/SendDataThroughPeerConnectionOperation.swift new file mode 100644 index 00000000..3372212b --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/SendDataThroughPeerConnectionOperation.swift @@ -0,0 +1,71 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import WebRTC +import OlvidUtils + + +final class SendDataThroughPeerConnectionOperation: AsyncOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "SendDataThroughPeerConnectionOperation") + + private let peerConnection: ObvPeerConnection + private let message: WebRTCDataChannelMessageJSON + + init(peerConnection: ObvPeerConnection, message: WebRTCDataChannelMessageJSON) { + self.peerConnection = peerConnection + self.message = message + } + + + override func main() async { + + os_log("☎️ [WebRTCOperation][SendDataThroughPeerConnectionOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️ [WebRTCOperation][SendDataThroughPeerConnectionOperation] Finish", log: Self.log, type: .info) } + + let buffer: RTCDataBuffer + do { + let data = try message.jsonEncode() + buffer = RTCDataBuffer(data: data, isBinary: false) + } catch { + return cancel(withReason: .messageEncodingFailed(error: error)) + } + + let isSuccess = await peerConnection.sendData(buffer: buffer) + + guard isSuccess else { + return cancel(withReason: .sendDataThroughPeerConnectionFailed) + } + + return finish() + } + + enum ReasonForCancel: LocalizedErrorWithLogType { + + case sendDataThroughPeerConnectionFailed + case messageEncodingFailed(error: Error) + + var logType: OSLogType { + return .fault + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/SetRemoteDescriptionOperation.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/SetRemoteDescriptionOperation.swift new file mode 100644 index 00000000..535c1d43 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCall/Operations/SetRemoteDescriptionOperation.swift @@ -0,0 +1,107 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import WebRTC +import OlvidUtils + + + +final class SetRemoteDescriptionOperation: AsyncOperationWithSpecificReasonForCancel { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "SetRemoteDescriptionOperation") + + enum Input { + case peerConnection(peerConnection: ObvPeerConnection) + case createPeerConnectionOperation(operation: CreatePeerConnectionOperation) + } + + private let input: Input + private let remoteSessionDescription: RTCSessionDescription + + init(input: Input, remoteSessionDescription: RTCSessionDescription) { + self.input = input + self.remoteSessionDescription = remoteSessionDescription + } + + + override func main() async { + + os_log("☎️ [WebRTCOperation][SetRemoteDescriptionOperation] Start", log: Self.log, type: .info) + defer { os_log("☎️ [WebRTCOperation][SetRemoteDescriptionOperation] Finish", log: Self.log, type: .info) } + + do { + if try countSdpMedia(sessionDescription: remoteSessionDescription.sdp) != 2 { + assertionFailure() + return cancel(withReason: .unexpectedNumberOfMediaLinesInSessionDescription) + } + } catch { + assertionFailure() + return cancel(withReason: .unableToCheckSDP) + } + + let peerConnection: ObvPeerConnection + + switch input { + case .peerConnection(let _peerConnection): + peerConnection = _peerConnection + case .createPeerConnectionOperation(let operation): + guard let _peerConnection = operation.peerConnection else { + return cancel(withReason: .noPeerConnectionProvidedByOperation) + } + peerConnection = _peerConnection + } + + do { + try await peerConnection.setRemoteDescription(remoteSessionDescription) + } catch { + return cancel(withReason: .setRemoteDescriptionFailed(error: error)) + } + + return finish() + + } + + + private func countSdpMedia(sessionDescription: String) throws -> Int { + var counter = 0 + let mediaStart = try NSRegularExpression(pattern: "^m=", options: .anchorsMatchLines) + let lines = sessionDescription.split(whereSeparator: { $0.isNewline }).map({String($0)}) + for line in lines { + let isFirstLineOfAnotherMediaSection = mediaStart.numberOfMatches(in: line, options: [], range: NSRange(location: 0, length: line.count)) > 0 + if isFirstLineOfAnotherMediaSection { + counter += 1 + } + } + return counter + } + + + enum ReasonForCancel: LocalizedErrorWithLogType { + case noPeerConnectionProvidedByOperation + case unableToCheckSDP + case unexpectedNumberOfMediaLinesInSessionDescription + case setRemoteDescriptionFailed(error: Error) + var logType: OSLogType { + return .fault + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCallManager.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCallManager.swift new file mode 100644 index 00000000..49de4634 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/OlvidCallManager.swift @@ -0,0 +1,632 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import CallKit +import os.log +import ObvTypes +import ObvUICoreData + + +protocol OlvidCallManagerDelegate: AnyObject { + func callWasAdded(callManager: OlvidCallManager, call: OlvidCall) async + func callWasRemoved(callManager: OlvidCallManager, removedCall: OlvidCall, callStillInProgress: OlvidCall?) async +} + + +actor OlvidCallManager { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "OlvidCallManager") + + /// Allows to let the system know about any local user actions (i.e., *not* out-of-band notifications that have happened). + /// When using CallKit, this holds the ``CXCallController``. + /// The second important class is the ``CallProviderHolder`` at the ``CallProviderDelegate`` level. + private let callControllerHolder = CallControllerHolder() + private var calls = [OlvidCall]() + /// Stores ICE candidates received for a call that cannot be found yet. They will be used as soon as the call is added to the list of calls. + private var receivedIceCandidatesStoredForLater = [UUID: [(iceCandidate: IceCandidateJSON, userId: OlvidUserId)]]() + + private weak var delegate: OlvidCallManagerDelegate? + + nonisolated + func setNCXCallControllerDelegate(_ delegate: NCXCallControllerDelegate) { + callControllerHolder.setNCXCallControllerDelegate(delegate) + } + + + func setDelegate(to newDelegate: OlvidCallManagerDelegate) { + self.delegate = newDelegate + } + + + /// Adds a call to the array of active calls. + /// - Parameter call: The call to add. + private func addCall(_ call: OlvidCall) { + os_log("☎️ Adding call %{public}@", log: Self.log, type: .info, call.debugDescription) + assert(delegate != nil) + calls.append(call) + Task { await delegate?.callWasAdded(callManager: self, call: call) } + // The call has been added to the list of calls, we can process the ICE candidate saved for later. + os_log("☎️❄️ Looking for ICE candidates saved for later for call %{public}@", log: Self.log, type: .info, call.uuidForWebRTC.uuidString) + if let candidates = receivedIceCandidatesStoredForLater.removeValue(forKey: call.uuidForWebRTC), !candidates.isEmpty { + os_log("☎️❄️ Found %{public}d ICE saved for later for call %{public}@", log: Self.log, type: .info, candidates.count, call.uuidForWebRTC.uuidString) + Task { + for candidate in candidates { + do { + os_log("☎️❄️ Processing an ICE candidate saved for later for call %{public}@", log: Self.log, type: .info, call.uuidForWebRTC.uuidString) + try await call.processIceCandidatesJSON(iceCandidate: candidate.iceCandidate, participantId: candidate.userId) + } catch { + os_log("☎️❄️ Failed to process an ICE candidate saved for later %{public}@", log: Self.log, type: .error, error.localizedDescription) + assertionFailure() // Continue anyway + } + } + } + } + } + + + func createIncomingCall(uuidForCallKit: UUID, uuidForWebRTC: UUID, contactIdentifier: ObvContactIdentifier, startCallMessage: StartCallMessageJSON, rtcPeerConnectionQueue: OperationQueue, callDelegate: OlvidCallDelegate) async throws -> OlvidCall { + let incomingCall = try await OlvidCall.createIncomingCall( + callIdentifierForCallKit: uuidForCallKit, + uuidForWebRTC: uuidForWebRTC, + callerId: contactIdentifier, + startCallMessage: startCallMessage, + rtcPeerConnectionQueue: rtcPeerConnectionQueue, + delegate: callDelegate) + addCall(incomingCall) + return incomingCall + } + + + /// Removes a call from the array of active calls if it exists. + /// - Parameter call: The call to remove. + private func removeCall(_ call: OlvidCall) { + os_log("☎️ Remove call %{public}@", log: Self.log, type: .info, call.debugDescription) + guard let index = calls.firstIndex(where: { $0 === call }) else { return } + calls.remove(at: index) + let callStillInProgress = calls.first(where: { !$0.state.isFinalState }) + Task(priority: .userInitiated) { [weak self] in + guard let self else { return } + await delegate?.callWasRemoved(callManager: self, removedCall: call, callStillInProgress: callStillInProgress) + } + } + + + /// Returns the call with the specified UUID if it exists. + /// - Parameter uuid: The call's unique identifier. + /// - Returns: The call with the specified UUID if it exists, otherwise `nil`. + private func callWithCallIdentifierForCallKit(_ uuid: UUID) -> OlvidCall? { + os_log("☎️ Looking for call with uuidForCallKit %{public}@", log: Self.log, type: .info, uuid.debugDescription) + guard let index = calls.firstIndex(where: { $0.uuidForCallKit == uuid }) else { return nil } + return calls[index] + } + + + private func callWithCallIdentifierForWebRTC(_ uuid: UUID) -> OlvidCall? { + os_log("☎️ Looking for call with uuidForWebRTC %{public}@", log: Self.log, type: .info, uuid.debugDescription) + guard let index = calls.firstIndex(where: { $0.uuidForWebRTC == uuid }) else { return nil } + return calls[index] + } + + + var someCallIsInProgress: Bool { + let inProgressCall = calls.first(where: { !$0.state.isFinalState }) + return inProgressCall != nil + } + +} + + +// MARK: - ICE candidates stored for later + +extension OlvidCallManager { + + func processICECandidateForCall(uuidForWebRTC: UUID, iceCandidate: IceCandidateJSON, contact: OlvidUserId) async throws { + if let call = callWithCallIdentifierForWebRTC(uuidForWebRTC) { + os_log("☎️❄️ Process IceCandidateJSON message for call %{public}@", log: Self.log, type: .info, call.uuidForWebRTC.uuidString) + try await call.processIceCandidatesJSON(iceCandidate: iceCandidate, participantId: contact) + } else { + os_log("☎️❄️ Received new remote ICE Candidates for a call %{public}@ that does not exists yet: we save it for later.", log: Self.log, type: .info, uuidForWebRTC.uuidString) + saveICECandidateForLater(uuidForWebRTC: uuidForWebRTC, iceCandidate: iceCandidate, contact: contact) + } + } + + + private func saveICECandidateForLater(uuidForWebRTC: UUID, iceCandidate: IceCandidateJSON, contact: OlvidUserId) { + os_log("☎️❄️ Saving an ICE candidate for later for call %{public}@", log: Self.log, type: .info, uuidForWebRTC.uuidString) + var candidates = receivedIceCandidatesStoredForLater[uuidForWebRTC] ?? [] + candidates += [(iceCandidate, contact)] + receivedIceCandidatesStoredForLater[uuidForWebRTC] = candidates + } + + + /// Called when an ICE candidate previously received (and saved for later) should actually be discarded. In that case, we remove it from the list of candidates saved for later. + private func removeIceCandidatesMessageSavedForLater(uuidForWebRTC: UUID, message: RemoveIceCandidatesMessageJSON) { + var candidates = receivedIceCandidatesStoredForLater[uuidForWebRTC] ?? [] + candidates.removeAll { message.candidates.contains($0.0) } + receivedIceCandidatesStoredForLater[uuidForWebRTC] = candidates + } + +} + + +// MARK: - Process JSON messages received from remote users + +extension OlvidCallManager { + + func processNewParticipantOfferMessageJSON(_ newParticipantOffer: NewParticipantOfferMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws { + + guard let incomingCall = callWithCallIdentifierForWebRTC(uuidForWebRTC) else { + throw ObvError.callNotFound + } + + guard incomingCall.direction == .incoming else { + assertionFailure() + throw ObvError.expectingAnIncomingCall + } + + try await incomingCall.processNewParticipantOfferMessageJSONFromContact(contact, newParticipantOffer) + + } + + + func processHangedUpMessage(_ hangedUpMessage: HangedUpMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws -> (call: OlvidCall, report: CallReport?) { + + guard let call = callWithCallIdentifierForWebRTC(uuidForWebRTC) else { + throw ObvError.callNotFound + } + + guard !call.state.isFinalState else { return (call, nil) } + + let callStateWasInitial = (call.state == .initial) + let callStateWasRinging = (call.state == .ringing) + + let participantInfo = try await call.callParticipantDidHangUp(participantId: contact) + + let callReport: CallReport? + if callStateWasInitial && call.direction == .incoming { + callReport = .missedIncomingCall(caller: participantInfo, participantCount: call.initialParticipantCount) + } else if callStateWasRinging && call.direction == .outgoing { + callReport = .unansweredOutgoingCall(with: [participantInfo]) + } else { + callReport = nil + } + + if call.state.isFinalState { + removeCall(call) + } + + return (call, callReport) + + } + + + func processRingingMessageJSON(uuidForWebRTC: UUID, contact: OlvidUserId) async { + + guard let outgoingCall = callWithCallIdentifierForWebRTC(uuidForWebRTC) else { + // No need to throw for a ringing message + return + } + + await outgoingCall.processRingingMessageJSONFromContact(contact) + + } + + + func processRejectCallMessage(_ rejectCallMessage: RejectCallMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws -> (outgoingCall: OlvidCall, participantInfo: OlvidCallParticipantInfo?) { + + guard let outgoingCall = callWithCallIdentifierForWebRTC(uuidForWebRTC) else { + throw ObvError.callNotFound + } + + assert(outgoingCall.direction == .outgoing) + + let participantInfo = await outgoingCall.processRejectCallMessageFromContact(contact) + + if outgoingCall.state.isFinalState { + removeCall(outgoingCall) + } + + return (outgoingCall, participantInfo) + } + + + func processAnswerCallMessage(_ answerCallMessage: AnswerCallJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws -> (outgoingCall: OlvidCall, participantInfo: OlvidCallParticipantInfo?) { + + guard let outgoingCall = callWithCallIdentifierForWebRTC(uuidForWebRTC) else { + throw ObvError.callNotFound + } + + let participantInfo = try await outgoingCall.processAnswerCallJSONFromContact(contact, answerCallMessage) + + + return (outgoingCall, participantInfo) + } + + + func processBusyMessageJSON(uuidForWebRTC: UUID, contact: OlvidUserId) async throws -> (outgoingCall: OlvidCall, participantInfo: OlvidCallParticipantInfo?) { + + guard let outgoingCall = callWithCallIdentifierForWebRTC(uuidForWebRTC) else { + throw ObvError.callNotFound + } + + let participantInfo = await outgoingCall.processBusyMessageJSONFromContact(contact) + + return (outgoingCall, participantInfo) + + } + + + func processReconnectCallMessageJSON(_ reconnectCallMessage: ReconnectCallMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws { + + guard let call = callWithCallIdentifierForWebRTC(uuidForWebRTC) else { + // The message certainly concerns an old call + return + } + + try await call.processReconnectCallMessageJSONFromContact(contact, reconnectCallMessage) + + } + + + func processNewParticipantAnswerMessageJSON(_ newParticipantAnswer: NewParticipantAnswerMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws { + + guard let call = callWithCallIdentifierForWebRTC(uuidForWebRTC) else { + throw ObvError.callNotFound + } + + try await call.processNewParticipantAnswerMessageJSONFromContact(contact, newParticipantAnswer) + + } + + + func processKickMessageJSON(_ kickMessage: KickMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws -> (cll: OlvidCall, callReport: CallReport?, cxCallEndedReason: CXCallEndedReason?) { + + guard let incomingCall = callWithCallIdentifierForWebRTC(uuidForWebRTC) else { + throw ObvError.callNotFound + } + + guard incomingCall.direction == .incoming else { + assertionFailure() + throw ObvError.expectingAnIncomingCall + } + + let (callReport, cxCallEndedReason) = try await incomingCall.processKickMessageJSONFromContact(contact) + + assert(incomingCall.state.isFinalState) + removeCall(incomingCall) + + return (incomingCall, callReport, cxCallEndedReason) + + } + + + func processRemoveIceCandidatesMessage(message: RemoveIceCandidatesMessageJSON, uuidForWebRTC: UUID, contact: OlvidUserId) async throws { + + if let call = callWithCallIdentifierForWebRTC(uuidForWebRTC) { + os_log("☎️❄️ Process RemoveIceCandidatesMessageJSON message", log: Self.log, type: .info) + try await call.removeIceCandidatesJSON(removeIceCandidatesJSON: message, participantId: contact) + } else { + os_log("☎️❄️ Received removed remote ICE Candidates for a call that does not exists yet", log: Self.log, type: .info) + removeIceCandidatesMessageSavedForLater(uuidForWebRTC: uuidForWebRTC, message: message) + } + + } + + + func processAnsweredOrRejectedOnOtherDeviceMessage(answered: Bool, uuidForWebRTC: UUID, ownedCryptoId: ObvCryptoId) async throws -> (incomingCall: OlvidCall?, callReport: CallReport?, cxCallEndedReason: CXCallEndedReason?) { + + os_log("☎️ Process AnsweredOrRejectedOnOtherDeviceMessage", log: Self.log, type: .info) + + if let incomingCall = callWithCallIdentifierForWebRTC(uuidForWebRTC) { + + assert(incomingCall.direction == .incoming) + let (callReport, cxCallEndedReason) = await incomingCall.processAnsweredOrRejectedOnOtherDeviceMessage(answered: answered) + + assert(incomingCall.state.isFinalState) + removeCall(incomingCall) + + return (incomingCall, callReport, cxCallEndedReason) + + } else { + + // We expect to rarely arrive here as the CallKit notification should be fast enough + assertionFailure() + return (nil, nil, nil) + + } + + } + +} + + +// MARK: - Processing local user requests + +extension OlvidCallManager { + + /// Called from the ``CallProviderDelegate.provider(_:perform:)`` delegate method. + /// + /// This delegate method was either called because + /// - the user ended the call from the CallKit UI + /// - the user ended the call from the in-house UI. In that case, we created a `CXEndCallAction` within this manager + /// and passed it to the `CallControllerHolder` so as to let the system know about the local user action. + func localUserWantsToPerform(_ action: CXEndCallAction) async throws -> (call: OlvidCall?, callReport: CallReport?, rejectedOnOtherDeviceMessageJSON: WebRTCMessageJSON?) { + + os_log("☎️🔚 Call to localUserWantsToPerform(_ action: CXEndCallAction)", log: Self.log, type: .info) + + guard let call = callWithCallIdentifierForCallKit(action.callUUID) else { + return (nil, nil, nil) + } + + // Remove the ended call from the app's list of calls. + os_log("☎️🔚 Removing call from the list of calls", log: Self.log, type: .info) + removeCall(call) + + let endingIncomingCallInInitialState = (call.direction == .incoming) && (call.state == .initial) + + // Trigger the call to be ended via the underlying network service. + let callReport = await call.endWasRequestedByLocalUser() + + let rejectedOnOtherDeviceMessageJSON: WebRTCMessageJSON? + if endingIncomingCallInInitialState { + rejectedOnOtherDeviceMessageJSON = try? AnsweredOrRejectedOnOtherDeviceMessageJSON(answered: false).embedInWebRTCMessageJSON(callIdentifier: call.uuidForWebRTC) + } else { + rejectedOnOtherDeviceMessageJSON = nil + } + + os_log("☎️🔚 End of call to localUserWantsToPerform(_ action: CXEndCallAction)", log: Self.log, type: .info) + + return (call, callReport, rejectedOnOtherDeviceMessageJSON) + + } + + + /// Called from the ``CallProviderDelegate.provider(_:perform:)`` delegate method. + /// Returns the `ParticipantInfo` of the caller. + /// + /// This delegate method was either called because + /// - the user accepted an incoming call from the CallKit UI + /// - the user accepted an incoming call from the in-house UI. In that case, we created a `CXAnswerCallAction` within this manager + /// and passed it to the `CallControllerHolder` so as to let the system know about the local user action. + func localUserWantsToPerform(_ action: CXAnswerCallAction) async throws -> (incomingCall: OlvidCall, callerInfo: OlvidCallParticipantInfo?, answeredOnOtherDeviceMessageJSON: WebRTCMessageJSON?) { + + os_log("☎️ Call to localUserWantsToPerform %{public}@", log: Self.log, type: .info, action.uuid.uuidString) + + guard let incomingCall = callWithCallIdentifierForCallKit(action.callUUID) else { + assertionFailure() + throw ObvError.callNotFound + } + + let callerInfo = try await incomingCall.localUserWantsToAnswerThisIncomingCall() + + let answeredOnOtherDeviceMessageJSON = try? AnsweredOrRejectedOnOtherDeviceMessageJSON(answered: true).embedInWebRTCMessageJSON(callIdentifier: incomingCall.uuidForWebRTC) + + return (incomingCall, callerInfo, answeredOnOtherDeviceMessageJSON) + + } + + + /// Called from the ``CallProviderDelegate.provider(_:perform:)`` delegate method. + /// Returns up-to-date ``CXCallUpdate`` so as to update the CallKit UI. + /// + /// This delegate method was called as we created a ``CXStartCallAction`` in ``localUserWantsToStartOutgoingCall(ownedCryptoId:contactCryptoIds:ownedIdentityForRequestingTurnCredentials:groupId:rtcPeerConnectionQueue:olvidCallDelegate:)`` + func localUserWantsToPerform(_ action: CXStartCallAction) async throws -> CXCallUpdate { + + guard let outgoingCall = callWithCallIdentifierForCallKit(action.callUUID) else { + assertionFailure() + throw ObvError.callNotFound + } + + try await outgoingCall.startOutgoingCall() + + let update = await outgoingCall.createUpToDateCXCallUpdate() + return update + + } + + + func localUserWantsToSetMuteSelf(_ action: CXSetMutedCallAction) async throws { + + guard let call = callWithCallIdentifierForCallKit(action.callUUID) else { + // As this is sometimes called by CallKit when hanging up a call, we simply return here. + return + } + + try await call.setMuteSelfForOtherParticipants(muted: action.isMuted) + + } + +} + + +// MARK: - Automatically ending a call + +extension OlvidCallManager { + + func incomingWasNotAnsweredToAndTimedOut(uuidForCallKit: UUID) async -> (callReport: CallReport?, cxCallEndedReason: CXCallEndedReason?) { + + guard let incomingCall = callWithCallIdentifierForCallKit(uuidForCallKit) else { + assertionFailure() + return (nil, nil) + } + + let values = await incomingCall.endIncomingCallAsItTimedOut() + + if incomingCall.state.isFinalState { + removeCall(incomingCall) + } else { + assertionFailure() + } + + return values + + } + +} + + +// MARK: - Starting an outgoing call or adding/removeing new participants + +extension OlvidCallManager { + + /// This is called when the local user wants to start a new outgoing call. This method creates a ``CXStartCallAction`` so as to let the system know about the user action. + /// Eventually, this manager will be called back from the ``provider(_:perform:CXStartCallAction)`` delegate method of the ``CallProviderDelegate``. + func localUserWantsToStartOutgoingCall(ownedCryptoId: ObvCryptoId, contactCryptoIds: Set, ownedIdentityForRequestingTurnCredentials: ObvCryptoId, groupId: GroupIdentifier?, rtcPeerConnectionQueue: OperationQueue, olvidCallDelegate: OlvidCallDelegate) async throws { + + guard !contactCryptoIds.isEmpty else { + assertionFailure() + throw ObvError.cannotStartOutgoingCallAsNotCalleeWasSpecified + } + + guard !someCallIsInProgress else { + assertionFailure() + throw ObvError.cannotStartOutgoingCallWhileAnotherCallIsInProgress + } + + // Create the outgoing call and add it to the list of calls + + let outgoingCall = try await OlvidCall.createOutgoingCall( + ownedCryptoId: ownedCryptoId, + contactCryptoIds: contactCryptoIds, + ownedIdentityForRequestingTurnCredentials: ownedIdentityForRequestingTurnCredentials, + groupId: groupId, + rtcPeerConnectionQueue: rtcPeerConnectionQueue, + delegate: olvidCallDelegate) + + addCall(outgoingCall) + + // Create a CXStartCallAction and pass it to the CallControllerHolder to inform it about the local user action + // Eventually, this manager will be called back in localUserWantsToPerform(_:) + + os_log("☎️ Creating CXStartCallAction for call with uuidForCallKit %{public}@", log: Self.log, type: .info, outgoingCall.uuidForCallKit.uuidString) + + let handle = CXHandle(type: .generic, value: outgoingCall.uuidForCallKit.uuidString) + let startCallAction = CXStartCallAction(call: outgoingCall.uuidForCallKit, handle: handle) + // We don't set the startCallAction.contactIdentifier as it is not used by CallKit (to the contrary of what the documentation says). + // Instead, in the CallProviderHolderDelegate, we update the call using a CXCallUpdate. + startCallAction.isVideo = false + let transaction = CXTransaction() + transaction.addAction(startCallAction) + try await callControllerHolder.callController.request(transaction) + + } + + + /// This method is actully required by the ``OlvidCallViewActionsProtocol``. It is called when the user wants to add new participants to an existing outgoing call. + func userWantsToAddParticipantsToExistingCall(uuidForCallKit: UUID, participantsToAdd: Set) async throws { + + guard let outgoingCall = callWithCallIdentifierForCallKit(uuidForCallKit) else { + throw ObvError.callNotFound + } + + try await outgoingCall.userWantsToAddParticipantsToThisOutgoingCall(participantsToAdd: participantsToAdd) + + } + + + /// This method is actully required by the ``OlvidCallViewActionsProtocol``. It is called when the user (caller) wants to remove a participant from an existing outgoing call. + func userWantsToRemoveParticipant(uuidForCallKit: UUID, participantToRemove: ObvCryptoId) async throws { + + guard let outgoingCall = callWithCallIdentifierForCallKit(uuidForCallKit) else { + throw ObvError.callNotFound + } + + try await outgoingCall.userWantsToRemoveParticipantFromThisOutgoingCall(cryptoId: participantToRemove) + + } + +} + + +// MARK: - Implementing the OlvidCallViewActionsProtocol for the UI + +extension OlvidCallManager { + + /// This is called from the in house-UI (``OlvidCallView``) when the user accepts an incoming call. + /// We first end "all" calls that are not in a finished state, then accept the call. + func userAcceptedIncomingCall(uuidForCallKit: UUID) async throws { + + // End all current calls + + let callsToEnd = calls + .filter({ !$0.state.isFinalState && $0.uuidForCallKit != uuidForCallKit }) + .map({ $0.uuidForCallKit }) + for call in callsToEnd { + try await userWantsToEndOngoingCall(uuidForCallKit: call) + } + + // Accept the incoming call + + os_log("☎️ Creating CXAnswerCallAction for call %{public}@", log: Self.log, type: .info, uuidForCallKit.uuidString) + guard let incomingCall = callWithCallIdentifierForCallKit(uuidForCallKit) else { + throw ObvError.callNotFound + } + await incomingCall.localUserAcceptedIncomingCallFromInHouseUI() + let answerCallAction = CXAnswerCallAction(call: uuidForCallKit) + let transaction = CXTransaction() + transaction.addAction(answerCallAction) + try await callControllerHolder.callController.request(transaction) + + } + + + /// Called when the local user taps the reject call button on the in-house UI when receiving an incoming call. + func userRejectedIncomingCall(uuidForCallKit: UUID) async throws { + let endCallAction = CXEndCallAction(call: uuidForCallKit) + let transaction = CXTransaction() + transaction.addAction(endCallAction) + try await callControllerHolder.callController.request(transaction) + } + + + /// Called when the user taps the end call button on the in-house UI during an ongoing call (both for incoming and outgoing calls). + func userWantsToEndOngoingCall(uuidForCallKit: UUID) async throws { + os_log("☎️🔚 userWantsToEndOngoingCall %{public}@", log: Self.log, type: .info, uuidForCallKit.uuidString) + let endCallAction = CXEndCallAction(call: uuidForCallKit) + let transaction = CXTransaction() + transaction.addAction(endCallAction) + try await callControllerHolder.callController.request(transaction) + } + + + /// Called when the user taps the mute (or unmute) call button on the in-house UI during an ongoing call (both for incoming and outgoing calls). + func userWantsToSetMuteSelf(uuidForCallKit: UUID, muted: Bool) async throws { + os_log("☎️ userWantsToMuteSelf %{public}@", log: Self.log, type: .info, uuidForCallKit.uuidString) + let mutedCallAction = CXSetMutedCallAction(call: uuidForCallKit, muted: muted) + let transaction = CXTransaction() + transaction.addAction(mutedCallAction) + try await callControllerHolder.callController.request(transaction) + } + +} + + +// MARK: - Errors + +extension OlvidCallManager { + + enum ObvError: Error { + case callNotFound + case cannotStartOutgoingCallWhileAnotherCallIsInProgress + case cannotStartOutgoingCallAsNotCalleeWasSpecified + case expectingAnIncomingCall + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/PeerConnection/WebrtcPeerConnectionHolder.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/PeerConnection/WebrtcPeerConnectionHolder.swift deleted file mode 100644 index 62885596..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/PeerConnection/WebrtcPeerConnectionHolder.swift +++ /dev/null @@ -1,928 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - - -import Foundation -import WebRTC -import OlvidUtils -import os.log -import ObvUICoreData - - -final actor WebrtcPeerConnectionHolder: ObvPeerConnectionDelegate, CallDataChannelWorkerDelegate, ObvErrorMaker { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: WebrtcPeerConnectionHolder.self)) - static let errorDomain = "WebrtcPeerConnectionHolder" - - private(set) var gatheringPolicy: GatheringPolicy - - private var iceCandidates = [RTCIceCandidate]() - private var pendingRemoteIceCandidates = [RTCIceCandidate]() - private var readyToProcessPeerIceCandidates = false { - didSet { - Task { - guard readyToProcessPeerIceCandidates else { return } - os_log("☎️❄️ Forwarding remote ICE candidates is ready", log: self.log, type: .info) - await drainRemoteIceCandidates() - } - } - } - private var iceGatheringCompletedWasCalled = false - private var reconnectOfferCounter: Int = 0 // Counter of the last reconnect offer we sent - private var reconnectAnswerCounter: Int = 0 // Counter of the last reconnect offer from the peer for which we sent an answer - - private static let audioCodecs = Set(["opus", "PCMU", "PCMA", "telephone-event", "red"]) - - private var dataChannelWorker: DataChannelWorker? - weak var delegate: WebrtcPeerConnectionHolderDelegate? - - private(set) var turnCredentials: TurnCredentials? - - /// The ``createPeerConnection()`` method being highly asynchronous, it occurs that - /// ``func peerConnectionShouldNegotiate(_ peerConnection: ObvPeerConnection) async`` - /// is called although we did not properly finish the creation of the peer connection (i.e., we did not had time to add tracks or - /// To consider a potential received remote session description). This Boolean value is thus set to `true` when starting the - /// Peer connection creation, and set back to false when its appropriate to do so. If the - /// ``func peerConnectionShouldNegotiate(_ peerConnection: ObvPeerConnection) async`` - /// is called when this Boolean is `true`, we do **not ** negotiate immediately but wait until this value is reset to `false` - /// to do so. - private var currentlyCreatingPeerConnection = false { - didSet { - guard !currentlyCreatingPeerConnection else { return } - noLongerCreatingPeerConnection() - } - } - - /// This continuation allows to implement the mechanism allowing to wait until ``currentlyCreatingPeerConnection`` - /// Is set back to false before proceeding with a negotiation. - private var continuationToResumeWhenPeerConnectionIsCreated: CheckedContinuation? - - /// This Boolean is set to `true` when entering a method that could end up setting a local/remote description. - /// It is set back to `false` whenever this method is done. - /// It allows to implement a mechanism preventing two distinct methods to interfere when both can end up setting a description. - private var aTaskIsCurrentlySettingSomeDescription = false { - didSet { - guard !aTaskIsCurrentlySettingSomeDescription else { return } - oneOfTheTaskCurrentlySettingSomeDescriptionIsDone() - } - } - - /// See the comment about ``anotherTaskIsCurrentlySettingSomeDescription``. - private var continuationsOfTaskWaitingUntilTheyCanSetSomeDescription = [CheckedContinuation]() - - /// Used to save the remote session description obtained when receiving an incoming call. - /// Since we do not create the underlying peer connection until the local user accepts (picks up) the call, - /// We need to store the session description until she does so. If she does pick up the call, we create the - /// Underlying peer connection and immediately set its session description using the value saved here. - private var remoteSessionDescription: RTCSessionDescription? - - private var peerConnection: ObvPeerConnection? - private var connectionState: RTCPeerConnectionState = .new - - private var audioTrack: RTCAudioTrack? = nil - private var isAudioEnabled: Bool = true - - enum CompletionKind { - case answer - case offer - case restart - } - - private let mediaConstraints = [kRTCMediaConstraintsOfferToReceiveAudio: kRTCMediaConstraintsValueTrue, - kRTCMediaConstraintsOfferToReceiveVideo: kRTCMediaConstraintsValueFalse] - - /// Used when receiving an incoming call - init(startCallMessage: StartCallMessageJSON, delegate: WebrtcPeerConnectionHolderDelegate) { - self.delegate = delegate - self.turnCredentials = startCallMessage.turnCredentials - self.remoteSessionDescription = RTCSessionDescription(type: startCallMessage.sessionDescriptionType, - sdp: startCallMessage.sessionDescription) - self.gatheringPolicy = startCallMessage.gatheringPolicy ?? .gatherOnce - - // We do *not* create the peer connection now, we wait until the user explicitely accepts the incoming call - - } - - /// Used for an incoming call that was already accepted, when the caller adds a participant to the call - func setRemoteDescriptionAndTurnCredentialsThenCreateTheUnderlyingPeerConnectionIfRequired(newParticipantOfferMessage: NewParticipantOfferMessageJSON, turnCredentials: TurnCredentials) async throws { - - os_log("☎️ Setting remote description and turn credentials, then creating peer connection", log: log, type: .info) - - assert(self.delegate != nil) - - self.turnCredentials = turnCredentials - self.remoteSessionDescription = RTCSessionDescription(type: newParticipantOfferMessage.sessionDescriptionType, - sdp: newParticipantOfferMessage.sessionDescription) - - // We override the gathering policy we had (indicated by the caller for this participant) by the one sent the participant herself. - self.gatheringPolicy = newParticipantOfferMessage.gatheringPolicy ?? .gatherOnce - - // Since the call was already accepted (we are only adding another participant here), we can safely create the peer connection immediately. - // The situation here is different from the one encountered in the initializer executed when receiving an incoming call, where we had to wait - // Until the local user explicitely accepted the call. - - try await createPeerConnectionIfRequired() - - } - - - /// Used during the init of an outgoing call. Also used during a multi-call, when we are a recipient and need to create a peer connection holder with another participant. - init(gatheringPolicy: GatheringPolicy, delegate: WebrtcPeerConnectionHolderDelegate) { - self.delegate = delegate - self.gatheringPolicy = gatheringPolicy - self.remoteSessionDescription = nil - } - - - private var additionalOpusOptions: String { - var options = [(name: String, value: String)]() - options.append(("cbr", "1")) - if let maxaveragebitrate = ObvMessengerSettings.VoIP.maxaveragebitrate { - options.append(("maxaveragebitrate", "\(maxaveragebitrate)")) - } - let optionsAsString = options.reduce("") { $0.appending(";\($1.name)=\($1.value)") } - debugPrint(optionsAsString) - return optionsAsString - } - - - func setTurnCredentialsAndCreateUnderlyingPeerConnectionIfRequired(_ turnCredentials: TurnCredentials) async throws { - assert(self.delegate != nil) - guard self.turnCredentials == nil else { - assertionFailure() - throw Self.makeError(message: "Turn credentials already set") - } - self.turnCredentials = turnCredentials - try await createPeerConnectionIfRequired() - } - - - /// This method creates the peer connection underlying this peer connection holder. - /// - /// This method is called in two situations : - /// - For an outgoing call, it is called right after setting the credentials. - /// - For an incoming call, it is not called when setting the credentials as we want to wait until the user explicitely accepts (picks up) the incoming call. - /// It called as soon as the user accepts the incoming call. - private func createPeerConnectionIfRequired() async throws { - - os_log("☎️ Call to createPeerConnection", log: log, type: .info) - - guard peerConnection == nil else { - os_log("☎️ No need to create the peer connection, it already exists", log: log, type: .info) - assert(delegate != nil) - return - } - - if delegate == nil { - os_log("☎️ The delegate is nil, which not expected", log: log, type: .fault) - assertionFailure() - } - - currentlyCreatingPeerConnection = true - defer { currentlyCreatingPeerConnection = false } - - guard let turnCredentials = turnCredentials else { - throw Self.makeError(message: "No turn credentials available") - } - // 2022-03-11, we used to use the servers indicated in the turn credentials. - // We do not do that anymore and use the (user) preferred servers. - let iceServer = WebRTC.RTCIceServer(urlStrings: ObvMessengerConstants.ICEServerURLs.preferred, - username: turnCredentials.turnUserName, - credential: turnCredentials.turnPassword, - tlsCertPolicy: .insecureNoCheck) - let rtcConfiguration = RTCConfiguration() - rtcConfiguration.iceServers = [iceServer] - rtcConfiguration.iceTransportPolicy = .relay - rtcConfiguration.sdpSemantics = .unifiedPlan - rtcConfiguration.continualGatheringPolicy = gatheringPolicy.rtcPolicy - let constraints = RTCMediaConstraints(mandatoryConstraints: nil, - optionalConstraints: nil) - os_log("☎️❄️ Create Peer Connection with %{public}@ policy", log: log, type: .info, gatheringPolicy.localizedDescription) - - guard let peerConnection = await ObvPeerConnection(with: rtcConfiguration, constraints: constraints, delegate: self) else { assertionFailure(); return } - self.peerConnection = peerConnection - - os_log("☎️ Add Olvid audio tracks", log: log, type: .info) - self.audioTrack = try? await peerConnection.addOlvidTracks() - setAudioTrack(isEnabled: isAudioEnabled) // Usefull when a participant was added to a group call while we were muted - assert(self.audioTrack != nil) - - os_log("☎️ Create Data Channel", log: log, type: .info) - try await createDataChannel(for: peerConnection) - assert(self.dataChannelWorker != nil) - - // We might already have a session description available. This typically happens when receiving an incoming call: - // We created the called and saved the session description for later, i.e., for the time the local user accepts the incoming call, - // Which is what led us here. - - if let remoteSessionDescription = self.remoteSessionDescription { - os_log("☎️ We just created the peer connection and have a remote description available. We set it now.", log: log, type: .info) - self.remoteSessionDescription = nil - try await peerConnection.setRemoteDescription(remoteSessionDescription) - self.readyToProcessPeerIceCandidates = true - } - - } - - - func close() async throws { - guard let peerConnection = self.peerConnection else { - os_log("☎️🛑 Execute signaling state closed completion handler: peer connection is nil", log: log, type: .info) - return - } - guard connectionState != .closed else { - os_log("☎️🛑 Execute signaling state closed completion handler: signaling state is already closed", log: log, type: .info) - return - } - os_log("☎️🛑 Closing peer connection. State before closing: %{public}@", log: log, type: .info, connectionState.debugDescription) - await peerConnection.close() - } - - - func setRemoteDescription(_ sessionDescription: RTCSessionDescription) async throws { - os_log("☎️ Setting a session description of type %{public}@", log: log, type: .info, sessionDescription.type.debugDescription) - guard let peerConnection = peerConnection else { - throw Self.makeError(message: "No peer connection available") - } - if try countSdpMedia(sessionDescription: sessionDescription.sdp) != 2 { - assertionFailure() - throw Self.makeError(message: "Unexpected number of media lines in session description") - } - - // Since we will set a description, we must wait until it is our turn to do so. - - await waitUntilItIsSafeToSetSomeDescription() - - // Now that it is our turn to potentially set a description, we must make sure no other task will interfere. - // The mechanism allowing to do so requires to set the following Boolean to true now, and to false when we are done. - - aTaskIsCurrentlySettingSomeDescription = true - defer { aTaskIsCurrentlySettingSomeDescription = false } - - // Since we are setting a remote description, we expect to be either in the stable or haveLocalOffer states. - // We do not test this though, as the following call will throw if we are not in one of these states. - - os_log("☎️ Will call setRemoteDescription on the ObvPeerConnection", log: log, type: .info) - try await peerConnection.setRemoteDescription(sessionDescription) - self.readyToProcessPeerIceCandidates = true - } - - - /// When receiving an incoming call, we quickly create this peer connection holder, but we do not create the underlying peer connection. - /// For this, we want to wait until the user explictely accepts (picks up) the incoming call. - /// This method is called when the local user does so. - /// It creates the peer connection. This will eventually trigger a call to - /// ``func peerConnectionShouldNegotiate(_ peerConnection: ObvPeerConnection) async`` - /// where the local description (answer) will be created. - func createPeerConnectionIfRequiredAfterAcceptingAnIncomingCall() async throws { - assert(peerConnection == nil) - assert(delegate != nil) - try await createPeerConnectionIfRequired() - } - - - private func rollback() async throws { - assert(aTaskIsCurrentlySettingSomeDescription, "This method must exclusively be called from a method (belonging to this actor) that sets this Boolean to true") - guard let peerConnection = peerConnection else { assertionFailure(); return } - os_log("☎️ Rollback", log: log, type: .info) - try await peerConnection.setLocalDescription(RTCSessionDescription(type: .rollback, sdp: "")) - assert(self.dataChannelWorker != nil) - } - - - func restartIce() async throws { - - guard let peerConnection = peerConnection else { assertionFailure(); return } - guard let delegate = delegate else { assertionFailure(); return } - - // Since we might set a description, we must wait until it is our turn to do so. - - await waitUntilItIsSafeToSetSomeDescription() - - // Now that it is our turn to potentially set a description, we must make sure no other task will interfere. - // The mechanism allowing to do so requires to set the following Boolean to true now, and to false when we are done. - - aTaskIsCurrentlySettingSomeDescription = true - defer { aTaskIsCurrentlySettingSomeDescription = false } - - switch peerConnection.signalingState { - case .haveLocalOffer: - // Rollback to a stable set before creating the new restart offer - try await rollback() - case .haveRemoteOffer: - // We received a remote offer. - // If we are the offer sender, rollback and send a new offer, otherwise juste wait for the answer process to finish - if await delegate.shouldISendTheOfferToCallParticipant() { - try await rollback() - } else { - return - } - default: - break - } - - await peerConnection.restartIce() - } - - - func handleReceivedRestartSdp(sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async throws { - - guard let peerConnection = peerConnection else { assertionFailure(); return } - guard let delegate = delegate else { assertionFailure(); return } - - os_log("☎️ Received restart SDP with reconnect counter: %{public}@", log: log, type: .info, String(reconnectCounter)) - - // Since we might set a description, we must wait until it is our turn to do so. - - await waitUntilItIsSafeToSetSomeDescription() - - // Now that it is our turn to potentially set a description, we must make sure no other task will interfere. - // The mechanism allowing to do so requires to set the following Boolean to true now, and to false when we are done. - - aTaskIsCurrentlySettingSomeDescription = true - defer { aTaskIsCurrentlySettingSomeDescription = false } - - switch sessionDescription.type { - - case .offer: - - // If we receive an offer with a counter smaller than another offer we previously received, we can ignore it. - guard reconnectCounter >= reconnectAnswerCounter else { - os_log("☎️ Received restart offer with counter too low %{public}@ vs. %{public}@", log: log, type: .info, String(reconnectCounter), String(reconnectAnswerCounter)) - return - } - - switch peerConnection.signalingState { - case .haveRemoteOffer: - os_log("☎️ Received restart offer while already having one --> rollback", log: log, type: .info) - // Rollback to a stable set before handling the new restart offer - try await rollback() - - case .haveLocalOffer: - // We already sent an offer. - // If we are the offer sender, do nothing, otherwise rollback and process the new offer - if await delegate.shouldISendTheOfferToCallParticipant() { - if peerReconnectCounterToOverride == reconnectOfferCounter { - os_log("☎️ Received restart offer while already having created an offer. It specifies to override my current offer --> rollback", log: log, type: .info) - try await rollback() - } else { - os_log("☎️ Received restart offer while already having created an offer. I am the offerer --> ignore this new offer", log: log, type: .info) - return - } - } else { - os_log("☎️ Received restart offer while already having created an offer. I am not the offerer --> rollback", log: log, type: .info) - try await rollback() - } - - default: - break - } - - reconnectAnswerCounter = reconnectCounter - os_log("☎️ Setting remote description (1)", log: log, type: .info) - try await peerConnection.setRemoteDescription(sessionDescription) - - await peerConnection.restartIce() - - case .answer: - guard reconnectCounter == reconnectOfferCounter else { - os_log("☎️ Received restart answer with bad counter %{public}@ vs. %{public}@", log: log, type: .info, String(reconnectCounter), String(reconnectOfferCounter)) - return - } - - guard peerConnection.signalingState == .haveLocalOffer else { - os_log("☎️ Received restart answer while not in the haveLocalOffer state --> ignore this restart answer", log: log, type: .info) - return - } - - os_log("☎️ Applying received restart answer", log: log, type: .info) - os_log("☎️ Setting remote description (2)", log: log, type: .info) - try await peerConnection.setRemoteDescription(sessionDescription) - - default: - return - } - - } - - - private func resetGatheringState() { - guard case .gatherOnce = gatheringPolicy else { assertionFailure(); return } - iceCandidates.removeAll() - iceGatheringCompletedWasCalled = false - } - - - private func createDataChannel(for peerConnection: ObvPeerConnection) async throws { - assert(dataChannelWorker == nil) - self.dataChannelWorker = try await DataChannelWorker(with: peerConnection) - self.dataChannelWorker?.delegate = self - } - - - func addIceCandidate(iceCandidate: RTCIceCandidate) async throws { - os_log("☎️❄️ addIceCandidate called", log: self.log, type: .info) - guard gatheringPolicy == .gatherContinually else { assertionFailure(); return } - if readyToProcessPeerIceCandidates { - guard let peerConnection = peerConnection else { assertionFailure(); return } - try await peerConnection.addIceCandidate(iceCandidate) - } else { - os_log("☎️❄️ Not ready to forward remote ICE candidates, add candidate to pending list (count %{public}@)", log: self.log, type: .info, String(pendingRemoteIceCandidates.count)) - pendingRemoteIceCandidates.append(iceCandidate) - } - } - - - func removeIceCandidates(iceCandidates: [RTCIceCandidate]) async { - os_log("☎️❄️ removeIceCandidates called", log: self.log, type: .info) - if readyToProcessPeerIceCandidates { - guard let peerConnection = peerConnection else { assertionFailure(); return } - await peerConnection.removeIceCandidates(iceCandidates) - } else { - os_log("☎️❄️ Not ready to forward remote ICE candidates, remove candidates from pending list (count %{public}@)", log: self.log, type: .info, String(pendingRemoteIceCandidates.count)) - pendingRemoteIceCandidates.removeAll { iceCandidates.contains($0) } - } - } - - - private func createLocalDescriptionIfAppropriateForCurrentSignalingState(for peerConnection: ObvPeerConnection) async throws -> RTCSessionDescription? { - os_log("☎️ Calling Create Local Description if appropriate for the current signaling state", log: self.log, type: .info) - assert(self.peerConnection == peerConnection) - let rtcSessionDescription: RTCSessionDescription? - switch peerConnection.signalingState { - case .stable: - os_log("☎️ We are in a stable state --> create offer", log: self.log, type: .info) - reconnectOfferCounter += 1 - rtcSessionDescription = try await peerConnection.offer(for: RTCMediaConstraints(mandatoryConstraints: nil, optionalConstraints: nil)) - case .haveRemoteOffer: - os_log("☎️ We are in a haveRemoteOffer state --> create answer", log: self.log, type: .info) - rtcSessionDescription = try await peerConnection.answer(for: RTCMediaConstraints(mandatoryConstraints: nil, optionalConstraints: nil)) - case .haveLocalOffer, .haveLocalPrAnswer, .haveRemotePrAnswer, .closed: - os_log("☎️ We are neither in a stable or a haveRemoteOffer state, we do not create any offer", log: self.log, type: .info) - rtcSessionDescription = nil - @unknown default: - assertionFailure() - rtcSessionDescription = nil - } - return rtcSessionDescription - } - - - private func drainRemoteIceCandidates() async { - let log = self.log - guard case .gatherContinually = gatheringPolicy else { return } - guard readyToProcessPeerIceCandidates else { return } - guard !pendingRemoteIceCandidates.isEmpty else { return } - os_log("☎️❄️ Drain remote %{public}@ ICE candidate(s)", log: self.log, type: .info, String(pendingRemoteIceCandidates.count)) - for iceCandidate in pendingRemoteIceCandidates { - do { - try await addIceCandidate(iceCandidate: iceCandidate) - } catch { - os_log("☎️ Could not drain one of the ice candidates: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() // Continue anyway - } - } - pendingRemoteIceCandidates.removeAll() - } - - - private func iceGatheringCompleted() async throws { - - guard !iceGatheringCompletedWasCalled else { return } - iceGatheringCompletedWasCalled = true - - os_log("☎️ ICE gathering is completed", log: log, type: .info) - - guard let localDescription = await peerConnection?.localDescription else { assertionFailure(); return } - guard let delegate = delegate else { assertionFailure(); return } - - switch localDescription.type { - case .offer: - await delegate.sendLocalDescription(sessionDescription: localDescription, reconnectCounter: reconnectOfferCounter, peerReconnectCounterToOverride: reconnectAnswerCounter) - case .answer: - await delegate.sendLocalDescription(sessionDescription: localDescription, reconnectCounter: reconnectAnswerCounter, peerReconnectCounterToOverride: -1) - case .prAnswer, .rollback: - assertionFailure() // Do nothing - @unknown default: - assertionFailure() // Do nothing - } - - } - - - // MARK: - Implementing ObvPeerConnectionDelegate - - /// According to https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Perfect_negotiation, - /// This is the best place to get a local description and send it using the signaling channel to the remote peer. - func peerConnectionShouldNegotiate(_ peerConnection: ObvPeerConnection) async { - - os_log("☎️ Peer Connection should negociate was called", log: log, type: .info) - assert(self.peerConnection == peerConnection) - - await waitUntilNoLongerCreatingPeerConnection() - assert(!currentlyCreatingPeerConnection) - - // Since we might set a description, we must wait until it is our turn to do so. - - await waitUntilItIsSafeToSetSomeDescription() - - // Now that it is our turn to potentially set a description, we must make sure no other task will interfere. - // The mechanism allowing to do so requires to set the following Boolean to true now, and to false when we are done. - - aTaskIsCurrentlySettingSomeDescription = true - defer { aTaskIsCurrentlySettingSomeDescription = false } - - // Check that the current state is not closed - - guard connectionState != .closed else { - os_log("☎️ Since the peer connection is in a closed state, we do not negotiate", log: log, type: .info) - return - } - - do { - guard let sessionDescription = try await createLocalDescriptionIfAppropriateForCurrentSignalingState(for: peerConnection) else { return } - guard connectionState != .closed else { return } // The connection was closed during the creation of the local description - try await onCreateSuccess(sessionDescription: sessionDescription, for: peerConnection) - } catch { - guard connectionState != .closed else { return } // The connection was closed during the call to onCreateSuccess - os_log("☎️🛑 Could not negotiate: %{public}@", log: log, type: .fault, error.localizedDescription) - assertionFailure() - } - } - - - private func waitUntilNoLongerCreatingPeerConnection() async { - guard currentlyCreatingPeerConnection else { return } - os_log("☎️ Since we currently creating the peer connection (e.g., adding tracks), we wait until the creation is done before negotiating", log: log, type: .info) - await withCheckedContinuation { (continuation: CheckedContinuation) in - guard currentlyCreatingPeerConnection else { continuation.resume(); return } - assert(continuationToResumeWhenPeerConnectionIsCreated == nil) - continuationToResumeWhenPeerConnectionIsCreated = continuation - } - } - - - private func noLongerCreatingPeerConnection() { - assert(!currentlyCreatingPeerConnection) - guard let continuation = continuationToResumeWhenPeerConnectionIsCreated else { return } - os_log("☎️ Since the peer connection is now properly created (with tracks and all), we can proceed with the negotiation", log: log, type: .info) - continuationToResumeWhenPeerConnectionIsCreated = nil - continuation.resume() - } - - - private func waitUntilItIsSafeToSetSomeDescription() async { - guard aTaskIsCurrentlySettingSomeDescription else { return } - os_log("☎️ Since we are currently negotiating, we must wait", log: log, type: .info) - await withCheckedContinuation { (continuation: CheckedContinuation) in - guard aTaskIsCurrentlySettingSomeDescription else { continuation.resume(); return } - continuationsOfTaskWaitingUntilTheyCanSetSomeDescription.insert(continuation, at: 0) // first in, first out - } - } - - - private func oneOfTheTaskCurrentlySettingSomeDescriptionIsDone() { - assert(!aTaskIsCurrentlySettingSomeDescription) - guard !continuationsOfTaskWaitingUntilTheyCanSetSomeDescription.isEmpty else { return } - os_log("☎️ Since a task potentially setting a description is done, we can proceed with the next one", log: log, type: .info) - guard let continuation = continuationsOfTaskWaitingUntilTheyCanSetSomeDescription.popLast() else { return } - aTaskIsCurrentlySettingSomeDescription = true - continuation.resume() - } - - - private func onCreateSuccess(sessionDescription: RTCSessionDescription, for peerConnection: ObvPeerConnection) async throws { - os_log("☎️ onCreateSuccess", log: log, type: .info) - assert(self.peerConnection == peerConnection) - - guard let delegate = delegate else { - os_log("☎️ The delegate is not set on holder", log: log, type: .fault) - assertionFailure() - return - } - - // If we are not in stable or in a "have remote offer" state, we shouldn't be creating an offer nor an anser. - // In that case, we return immediately. - // Moreover, because the state might have changed since we created the session description, we check whether this description - // Is still appropriate for the current signaling state. - guard (peerConnection.signalingState, sessionDescription.type) == (.stable, .offer) || - (peerConnection.signalingState, sessionDescription.type) == (.haveRemoteOffer, .answer) else { - return - } - - os_log("☎️ Filtering SDP...", log: log, type: .info) - let filteredSessionDescription = try self.filterSdpDescriptionCodec(rtcSessionDescription: sessionDescription) - os_log("☎️ Filtered SDP: %{public}@", log: log, type: .info, filteredSessionDescription.sdp) - - os_log("☎️ Setting the local description in onCreateSuccess", log: log, type: .info) - try await peerConnection.setLocalDescription(filteredSessionDescription) - - switch gatheringPolicy { - case .gatherOnce: - resetGatheringState() - case .gatherContinually: - switch filteredSessionDescription.type { - case .offer: - await delegate.sendLocalDescription(sessionDescription: filteredSessionDescription, reconnectCounter: reconnectOfferCounter, peerReconnectCounterToOverride: reconnectAnswerCounter) - case .answer: - await delegate.sendLocalDescription(sessionDescription: filteredSessionDescription, reconnectCounter: reconnectAnswerCounter, peerReconnectCounterToOverride: -1) - case .prAnswer, .rollback: - assertionFailure() - @unknown default: - assertionFailure() - } - } - } - - - func peerConnection(_ peerConnection: ObvPeerConnection, didChange stateChanged: RTCSignalingState) async { - os_log("☎️ RTCPeerConnection didChange RTCSignalingState: %{public}@", log: log, type: .info, stateChanged.debugDescription) - assert(self.peerConnection == peerConnection) - Task { - if stateChanged == .stable && peerConnection.iceConnectionState == .connected { - await delegate?.peerConnectionStateDidChange(newState: .connected) - } - if stateChanged == .closed { - os_log("☎️🛑 Signaling state is closed", log: log, type: .info) - } - } - } - - - func peerConnection(_ peerConnection: ObvPeerConnection, didChange newState: RTCPeerConnectionState) async { - os_log("☎️ RTCPeerConnection didChange RTCPeerConnectionState: %{public}@", log: log, type: .info, newState.debugDescription) - assert(self.peerConnection == peerConnection) - self.connectionState = newState - } - - - func peerConnection(_ peerConnection: ObvPeerConnection, didChange newState: RTCIceConnectionState) async { - os_log("☎️ RTCPeerConnection didChange RTCIceConnectionState: %{public}@", log: log, type: .info, newState.debugDescription) - assert(self.peerConnection == peerConnection) - await delegate?.peerConnectionStateDidChange(newState: newState) - } - - - func peerConnection(_ peerConnection: ObvPeerConnection, didChange newState: RTCIceGatheringState) async { - os_log("☎️❄️ Peer Connection Ice Gathering State changed to: %{public}@", log: log, type: .info, newState.debugDescription) - assert(self.peerConnection == peerConnection) - guard case .gatherOnce = gatheringPolicy else { return } - switch newState { - case .new: - break - case .gathering: - // We start gathering --> clear the turnCandidates list - resetGatheringState() - case .complete: - switch gatheringPolicy { - case .gatherOnce: - if iceCandidates.isEmpty { - os_log("☎️❄️ No ICE candidates found", log: log, type: .info) - } else { - // We have all we need to send the local description to the caller. - os_log("☎️❄️ Calls completed ICE Gathering with %{public}@ candidates", log: self.log, type: .info, String(self.iceCandidates.count)) - Task { - try? await iceGatheringCompleted() - } - } - case .gatherContinually: - break // Do nothing - } - @unknown default: - assertionFailure() - } - } - - - func peerConnection(_ peerConnection: ObvPeerConnection, didGenerate candidate: RTCIceCandidate) async { - os_log("☎️❄️ Peer Connection didGenerate RTCIceCandidate", log: log, type: .info) - assert(self.peerConnection == peerConnection) - switch gatheringPolicy { - case .gatherOnce: - iceCandidates.append(candidate) - if iceCandidates.count == 1 { /// At least one candidate, we wait one second and hope that the other candidate will be added. - let queue = DispatchQueue(label: "Sleeping queue", qos: .userInitiated) - queue.asyncAfter(deadline: .now() + .seconds(2)) { [weak self] in - guard let _self = self else { return } - Task { - try? await _self.iceGatheringCompleted() - } - } - } - case .gatherContinually: - Task { - try? await delegate?.sendNewIceCandidateMessage(candidate: candidate) - } - } - } - - - func peerConnection(_ peerConnection: ObvPeerConnection, didRemove candidates: [RTCIceCandidate]) async { - os_log("☎️❄️ Peer Connection didRemove RTCIceCandidate", log: log, type: .info) - assert(self.peerConnection == peerConnection) - switch gatheringPolicy { - case .gatherOnce: - iceCandidates.removeAll { candidates.contains($0) } - case .gatherContinually: - Task { - try? await delegate?.sendRemoveIceCandidatesMessages(candidates: candidates) - } - } - } - - - func peerConnection(_ peerConnection: ObvPeerConnection, didOpen dataChannel: RTCDataChannel) async { - os_log("☎️ Peer Connection didOpen RTCDataChannel", log: log, type: .info) - assert(self.peerConnection == peerConnection) - } - - - // MARK: CallDataChannelWorkerDelegate and related methods - - func dataChannel(didReceiveMessage message: WebRTCDataChannelMessageJSON) async { - await delegate?.dataChannel(of: self, didReceiveMessage: message) - } - - func dataChannel(didChangeState state: RTCDataChannelState) async { - await delegate?.dataChannel(of: self, didChangeState: state) - } - - func sendDataChannelMessage(_ message: WebRTCDataChannelMessageJSON) throws { - Task { - try await dataChannelWorker?.sendDataChannelMessage(message) - } - } - - -} - - - -// MARK: - Filtering session descriptions - -extension WebrtcPeerConnectionHolder { - - - private func countSdpMedia(sessionDescription: String) throws -> Int { - var counter = 0 - let mediaStart = try NSRegularExpression(pattern: "^m=", options: .anchorsMatchLines) - let lines = sessionDescription.split(whereSeparator: { $0.isNewline }).map({String($0)}) - for line in lines { - let isFirstLineOfAnotherMediaSection = mediaStart.numberOfMatches(in: line, options: [], range: NSRange(location: 0, length: line.count)) > 0 - if isFirstLineOfAnotherMediaSection { - counter += 1 - } - } - return counter - } - - - private func filterSdpDescriptionCodec(rtcSessionDescription: RTCSessionDescription) throws -> RTCSessionDescription { - - let sessionDescription = rtcSessionDescription.sdp - - let mediaStartAudio = try NSRegularExpression(pattern: "^m=audio\\s+", options: .anchorsMatchLines) - let mediaStart = try NSRegularExpression(pattern: "^m=", options: .anchorsMatchLines) - let lines = sessionDescription.split(whereSeparator: { $0.isNewline }).map({String($0)}) - var audioSectionStarted = false - var audioLines = [String]() - var filteredLines = [String]() - for line in lines { - if audioSectionStarted { - let isFirstLineOfAnotherMediaSection = mediaStart.numberOfMatches(in: line, options: [], range: NSRange(location: 0, length: line.count)) > 0 - if isFirstLineOfAnotherMediaSection { - audioSectionStarted = false - // The audio section has ended, we can process all the audio lines with gathered - let filteredAudioLines = try processAudioLines(audioLines) - filteredLines.append(contentsOf: filteredAudioLines) - filteredLines.append(line) - } else { - audioLines.append(line) - } - } else { - let isFirstLineOfAudioSection = mediaStartAudio.numberOfMatches(in: line, options: [], range: NSRange(location: 0, length: line.count)) > 0 - if isFirstLineOfAudioSection { - audioSectionStarted = true - audioLines.append(line) - } else { - filteredLines.append(line) - } - } - } - if audioSectionStarted { - // In case the audio section was the last section of the session description - audioSectionStarted = false - let filteredAudioLines = try processAudioLines(audioLines) - filteredLines.append(contentsOf: filteredAudioLines) - } - let filteredSessionDescription = filteredLines.joined(separator: "\r\n").appending("\r\n") - return RTCSessionDescription(type: rtcSessionDescription.type, sdp: filteredSessionDescription) - } - - - private func processAudioLines(_ audioLines: [String]) throws -> [String] { - - let rtpmapPattern = try NSRegularExpression(pattern: "^a=rtpmap:([0-9]+)\\s+([^\\s/]+)", options: .anchorsMatchLines) - - // First pass - var formatsToKeep = Set() - var opusFormat: String? - for line in audioLines { - guard let result = rtpmapPattern.firstMatch(in: line, options: [], range: NSRange(location: 0, length: line.count)) else { continue } - let formatRange = result.range(at: 1) - let codecRange = result.range(at: 2) - let format = (line as NSString).substring(with: formatRange) - let codec = (line as NSString).substring(with: codecRange) - guard Self.audioCodecs.contains(codec) else { continue } - formatsToKeep.insert(format) - if codec == "opus" { - opusFormat = format - } - } - - assert(opusFormat != nil) - - // Second pass - // 1. Rewrite the first line (only keep the formats to keep) - var processedAudioLines = [String]() - do { - let firstLine = try NSRegularExpression(pattern: "^(m=\\S+\\s+\\S+\\s+\\S+)\\s+(([0-9]+\\s*)+)$", options: .anchorsMatchLines) - guard let result = firstLine.firstMatch(in: audioLines[0], options: [], range: NSRange(location: 0, length: audioLines[0].count)) else { - throw Self.makeError(message: "Could not find expected match") - } - let processedFirstLine = (audioLines[0] as NSString) - .substring(with: result.range(at: 1)) - .appending(" ") - .appending( - (audioLines[0] as NSString) - .substring(with: result.range(at: 2)) - .split(whereSeparator: { $0.isWhitespace }) - .map({String($0)}) - .filter({ formatsToKeep.contains($0) }) - .joined(separator: " ")) - processedAudioLines.append(processedFirstLine) - } - // 2. Filter subsequent lines - let rtpmapOrOptionPattern = try NSRegularExpression(pattern: "^a=(rtpmap|fmtp|rtcp-fb):([0-9]+)\\s+", options: .anchorsMatchLines) - - for i in 1... - */ - - -import Foundation -import WebRTC - - -protocol WebrtcPeerConnectionHolderDelegate: AnyObject { - - func peerConnectionStateDidChange(newState: RTCIceConnectionState) async - func dataChannel(of peerConnectionHolder: WebrtcPeerConnectionHolder, didReceiveMessage message: WebRTCDataChannelMessageJSON) async - func dataChannel(of peerConnectionHolder: WebrtcPeerConnectionHolder, didChangeState state: RTCDataChannelState) async - func shouldISendTheOfferToCallParticipant() async -> Bool - - func sendNewIceCandidateMessage(candidate: RTCIceCandidate) async throws - func sendRemoveIceCandidatesMessages(candidates: [RTCIceCandidate]) async throws - - func sendLocalDescription(sessionDescription: RTCSessionDescription, reconnectCounter: Int, peerReconnectCounterToOverride: Int) async - -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/PushKitNotificationSynchronizer.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/PushKitNotificationSynchronizer.swift new file mode 100644 index 00000000..51bd7ff5 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/PushKitNotificationSynchronizer.swift @@ -0,0 +1,113 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import ObvTypes +import ObvCrypto +import ObvSettings + + + +actor PushKitNotificationSynchronizer { + + private static let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "PushKitNotificationSynchronizer") + + private var receivedStartCallMessageForCallWithCallIdentifierForCallKit = [UUID: (callerId: ObvContactIdentifier, startCallMessage: StartCallMessageJSON, uuidForWebRTC: UUID)]() + private var sleepTaskForCallWithCallIdentifierForCallKit = [UUID: Task]() + + + /// Called by the `CallProviderDelegate` when receiving a pushkit notification, after reporting the call to the system using a "fake" `CXCallUpdate`. + /// As soon as a `StartCallMessageJSON` is available, this method returns it, allowing the `CallProviderDelegate` to update the + /// call with a proper `CXCallUpdate`. + func waitForStartCallMessage(encryptedNotification: ObvEncryptedPushNotification) async throws -> (callerId: ObvContactIdentifier, startCallMessage: StartCallMessageJSON, uuidForWebRTC: UUID) { + + let callIdentifierForCallKit = encryptedNotification.messageIdFromServer.deterministicUUID + + // The start call message may already be available, in which case, we return it + + if let receivedValues = receivedStartCallMessageForCallWithCallIdentifierForCallKit[callIdentifierForCallKit] { + os_log("☎️ Start call message is readily available, so we return it now", log: Self.log, type: .info) + return receivedValues + } + + // Now that we notified, we wait until the start call message is available + + os_log("☎️ We wait until the start call message is available", log: Self.log, type: .info) + + assert(sleepTaskForCallWithCallIdentifierForCallKit[callIdentifierForCallKit] == nil) + let sleepTask = Task { try await Task.sleep(seconds: 10) } + sleepTaskForCallWithCallIdentifierForCallKit[callIdentifierForCallKit] = sleepTask + // Wait until the sleep task is cancelled (upon reception of the start call message) + // Note the try? instead of try: we don't want to throw when the task is cancelled. + try? await sleepTask.value + + // Either the sleep task has been cancelled because the start call message is available, or it waited for too long + + guard let startCallMessage = receivedStartCallMessageForCallWithCallIdentifierForCallKit[callIdentifierForCallKit] else { + os_log("☎️ Enough waiting for the start call message. We fail.", log: Self.log, type: .error) + throw ObvError.startCallMessageNeverArrived + } + + os_log("☎️ The start call message we were waiting for is now available, we return it", log: Self.log, type: .info) + + return startCallMessage + + } + + + /// Called by the `CallProviderDelegate` when receiving a `StartCallMessageJSON` when CallKit is enabled (which never happens in a simulator). + /// We store this message and cancel any sleeping task. This mechanism allows to make sure the PushKit notification is received before actually using this start call message to start an incoming call. + func continuePushKitNotificationProcessing(_ startCallMessage: StartCallMessageJSON, messageIdFromServer: UID, callerId: ObvContactIdentifier, uuidForWebRTC: UUID) { + + assert(ObvUICoreDataConstants.useCallKit) + + os_log("☎️ Receiving a start call message", log: Self.log, type: .info) + + let callIdentifierForCallKit = messageIdFromServer.deterministicUUID + + guard receivedStartCallMessageForCallWithCallIdentifierForCallKit[callIdentifierForCallKit] == nil else { + // We already received this start call message. This happens when: + // - The PushKit notification was decrypted + // - Then the same encrypted message arrived from the net work fetch manager. + // So that this method is called twice. In that case, we discard the second call here. + return + } + + receivedStartCallMessageForCallWithCallIdentifierForCallKit[callIdentifierForCallKit] = (callerId, startCallMessage, uuidForWebRTC) + + if let sleepTask = sleepTaskForCallWithCallIdentifierForCallKit.removeValue(forKey: callIdentifierForCallKit) { + // Now that the start call message is available, we can resume the waitForStartCallMessage(encryptedNotification:) method. + os_log("☎️ We will resume the sleeping waitForStartCallMessage(encryptedNotification:) method as the expected start call message is now available", log: Self.log, type: .info) + sleepTask.cancel() + } else { + // The PushKit notification will arrive soon and the waitForStartCallMessage(encryptedNotification:) method will called. + // The start call message will be ready to be used immediately. + os_log("☎️ The start call message has been stored, waiting for the PsuhKit notification that will arrive soon", log: Self.log, type: .info) + } + + } + + + enum ObvError: Error { + case startCallMessageNeverArrived + case obvMessageIsNotWebRTCMessage + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/SupportingTypes/OlvidCallGatheringPolicy+RTCContinualGatheringPolicy.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/SupportingTypes/OlvidCallGatheringPolicy+RTCContinualGatheringPolicy.swift new file mode 100644 index 00000000..29ae7c40 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/SupportingTypes/OlvidCallGatheringPolicy+RTCContinualGatheringPolicy.swift @@ -0,0 +1,33 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import WebRTC + + +// MARK: - OlvidCallGatheringPolicy extension + +extension OlvidCallGatheringPolicy { + var rtcPolicy: RTCContinualGatheringPolicy { + switch self { + case .gatherOnce: return .gatherOnce + case .gatherContinually: return .gatherContinually + } + } +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/Localization/ComposeMessageView+Strings.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/SupportingTypes/OlvidCallGatheringPolicy.swift similarity index 69% rename from iOSClient/ObvMessenger/ObvMessenger/Localization/ComposeMessageView+Strings.swift rename to iOSClient/ObvMessenger/ObvMessenger/VoIP/SupportingTypes/OlvidCallGatheringPolicy.swift index 1817b7eb..389bc916 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/Localization/ComposeMessageView+Strings.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/SupportingTypes/OlvidCallGatheringPolicy.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -19,12 +19,17 @@ import Foundation -extension ComposeMessageView { - - struct Strings { - - static let placeholderText = NSLocalizedString("Type a confidential message...", comment: "Placeholder text within the text view. Keep it short.") - + +enum OlvidCallGatheringPolicy: Int { + + case gatherOnce = 1 + case gatherContinually = 2 + + var localizedDescription: String { + switch self { + case .gatherOnce: return "gatherOnce" + case .gatherContinually: return "gatherContinually" + } } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/SupportingTypes/TurnCredentials.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/SupportingTypes/TurnCredentials.swift new file mode 100644 index 00000000..507ada7d --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/SupportingTypes/TurnCredentials.swift @@ -0,0 +1,56 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import ObvTypes + + +struct TurnCredentials { + let turnUserName: String + let turnPassword: String + let turnServers: [String]? +} + + +extension ObvTurnCredentials { + + var turnCredentialsForCaller: TurnCredentials { + TurnCredentials(turnUserName: callerUsername, + turnPassword: callerPassword, + turnServers: turnServersURL) + } + + var turnCredentialsForRecipient: TurnCredentials { + TurnCredentials(turnUserName: recipientUsername, + turnPassword: recipientPassword, + turnServers: turnServersURL) + } + +} + + +extension StartCallMessageJSON { + + var turnCredentials: TurnCredentials { + TurnCredentials(turnUserName: turnUserName, + turnPassword: turnPassword, + turnServers: turnServers) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/OlvidCallParticipantView.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/OlvidCallParticipantView.swift new file mode 100644 index 00000000..0b7653f0 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/OlvidCallParticipantView.swift @@ -0,0 +1,162 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import ObvTypes +import UI_ObvCircledInitials + + +protocol OlvidCallParticipantViewModelProtocol: ObservableObject, Identifiable, InitialCircleViewNewModelProtocol { + var displayName: String { get } + var stateLocalizedDescription: String { get } + var contactIsMuted: Bool { get } + var cryptoId: ObvCryptoId { get } +} + + +protocol OlvidCallParticipantViewActionsProtocol { + func userWantsToRemoveParticipant(cryptoId: ObvCryptoId) async throws +} + +/// Encapsulates view parameters that cannot be easily implemented at the model level (i.e., by an `OlvidCallParticipant`, that will implement `OlvidCallParticipantViewModelProtocol`) +/// but that can easily be computed par the `OlvidCallView`. +struct OlvidCallParticipantViewState { + let showRemoveParticipantButton: Bool +} + + +// MARK: - OlvidCallParticipantView + +struct OlvidCallParticipantView: View { + + @ObservedObject var model: Model + let state: OlvidCallParticipantViewState + let actions: OlvidCallParticipantViewActionsProtocol + + + private func userWantsToRemoveParticipant() { + Task { + do { + try await actions.userWantsToRemoveParticipant(cryptoId: model.cryptoId) + } catch { + assertionFailure() + } + } + } + + var body: some View { + HStack(spacing: 12) { + InitialCircleViewNew(model: model, state: .init(circleDiameter: 70)) + .overlay(alignment: .topTrailing) { + MuteView() + .opacity(model.contactIsMuted ? 1.0 : 0.0) + } + VStack(alignment: .leading) { + ScrollView(.horizontal, showsIndicators: false) { + Text(verbatim: model.displayName) + .font(.title) + .fontWeight(.heavy) + .lineLimit(1) + .foregroundStyle(.primary) + } + Text(verbatim: model.stateLocalizedDescription) + .font(.callout) + .lineLimit(1) + .foregroundStyle(.secondary) + } + if state.showRemoveParticipantButton { + Button(action: userWantsToRemoveParticipant) { + Image(systemIcon: .minusCircleFill) + .foregroundStyle(Color(UIColor.systemRed)) + .background(Color(.white).clipShape(Circle()).padding(4)) + .font(.system(size: 24)) + }.padding(.leading, 4) + } + } + } + + +} + + +// MARK: - Small mute icon shown when the participant is muted + +private struct MuteView: View { + var body: some View { + Image(systemIcon: .micSlashFill) + .foregroundStyle(Color(UIColor.white)) + .font(.system(size: 12, weight: .semibold)) + .frame(width: 24, height: 24) + .background(Color(UIColor.systemRed)) + .clipShape(Circle()) + } +} + + + +// MARK: - Previews + +struct OlvidCallParticipantView_Previews: PreviewProvider { + + private static let ownedCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!) + private static let contactCryptoId = try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f000009e171a9c73a0d6e9480b022154c83b13dfa8e4c99496c061c0c35b9b0432b3a014a5393f98a1aead77b813df0afee6b8af7e5f9a5aae6cb55fdb6bc5cc766f8da")!) + + private final class ModelForPreviews: OlvidCallParticipantViewModelProtocol { + + var cryptoId: ObvTypes.ObvCryptoId { contactCryptoId } + + var circledInitialsConfiguration: CircledInitialsConfiguration { + .contact(initial: "S", + photo: nil, + showGreenShield: false, + showRedShield: false, + cryptoId: contactCryptoId, + tintAdjustementMode: .normal) + } + + var displayName: String { + "Steve Jobs" + } + + var stateLocalizedDescription: String { + "Some description" + } + + @Published var contactIsMuted: Bool = false + + var uuidForCallKit: UUID { UUID() } + + } + + + private final class ActionsForPreviews: OlvidCallParticipantViewActionsProtocol { + func userWantsToRemoveParticipant(cryptoId: ObvCryptoId) async throws {} + } + + private static let model = ModelForPreviews() + private static let actions = ActionsForPreviews() + private static let state = OlvidCallParticipantViewState( + showRemoveParticipantButton: true) + + static var previews: some View { + OlvidCallParticipantView(model: model, state: state, actions: actions) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/OlvidCallView.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/OlvidCallView.swift new file mode 100644 index 00000000..05d9bc03 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/OlvidCallView.swift @@ -0,0 +1,804 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import ObvTypes +import UI_ObvCircledInitials +import UI_SystemIcon + + +protocol OlvidCallViewModelProtocol: ObservableObject, OngoingCallButtonsViewModelProtocol, AcceptOrRejectButtonsViewModelProtocol { + associatedtype OlvidCallParticipantViewModel: OlvidCallParticipantViewModelProtocol + var ownedCryptoId: ObvCryptoId { get } + var otherParticipants: [OlvidCallParticipantViewModel] { get } + var localUserStillNeedsToAcceptOrRejectIncomingCall: Bool { get } + var uuidForCallKit: UUID { get } + var direction: OlvidCall.Direction { get } + var dateWhenCallSwitchedToInProgress: Date? { get } +} + + +protocol OlvidCallViewActionsProtocol: AcceptOrRejectButtonsViewActionsProtocol, OngoingCallButtonsViewActionsProtocol { + func userWantsToAddParticipantsToExistingCall(uuidForCallKit: UUID, participantsToAdd: Set) async throws + func userWantsToRemoveParticipant(uuidForCallKit: UUID, participantToRemove: ObvCryptoId) async throws +} + + +protocol OlvidCallViewNavigationActionsProtocol: AnyObject { + func userWantsToAddParticipantToCall(ownedCryptoId: ObvCryptoId, currentOtherParticipants: Set) async -> Set +} + + +fileprivate enum Orientation { + case vertical + case horizontal +} + +/// Main view used when displaying a call to the user. +struct OlvidCallView: View, OlvidCallParticipantViewActionsProtocol { + + @ObservedObject var model: Model + let actions: OlvidCallViewActionsProtocol + let navigationActions: OlvidCallViewNavigationActionsProtocol + + private let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect() + @State private var callDuration: String? + + @Environment(\.horizontalSizeClass) var horizontalSizeClass + @Environment(\.verticalSizeClass) var verticalSizeClass + + private var orientation: Orientation { + switch (horizontalSizeClass, verticalSizeClass) { + case (.compact, .compact), (.regular, .compact): + return .horizontal + default: + return .vertical + } + } + + /// State common to all `OlvidCallParticipantView` instances displayed by this view + private var callParticipantViewState: OlvidCallParticipantViewState { + let showRemoveParticipantButton: Bool + switch model.direction { + case .incoming: + showRemoveParticipantButton = false + case .outgoing: + showRemoveParticipantButton = model.otherParticipants.count != 1 + } + return .init(showRemoveParticipantButton: showRemoveParticipantButton) + } + + + private func userWantsToAddParticipantToCall() { + Task { + let currentOtherParticipants = Set(model.otherParticipants.map({ $0.cryptoId })) + let participantsToAdd = await navigationActions.userWantsToAddParticipantToCall(ownedCryptoId: model.ownedCryptoId, currentOtherParticipants: currentOtherParticipants) + do { + try await actions.userWantsToAddParticipantsToExistingCall(uuidForCallKit: model.uuidForCallKit, participantsToAdd: participantsToAdd) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + + func userWantsToRemoveParticipant(cryptoId: ObvCryptoId) async throws { + do { + try await actions.userWantsToRemoveParticipant(uuidForCallKit: model.uuidForCallKit, participantToRemove: cryptoId) + } catch { + assertionFailure(error.localizedDescription) + } + } + + private let dateFormatter: DateComponentsFormatter = { + let f = DateComponentsFormatter() + f.unitsStyle = .abbreviated // Or .short or .abbreviated + f.allowedUnits = [.second, .minute, .hour] + return f + }() + + + private func refreshCallDuration() { + guard let date = model.dateWhenCallSwitchedToInProgress else { return } + let newCallDuration = dateFormatter.string(from: abs(date.timeIntervalSinceNow)) + if callDuration == nil { + withAnimation(.bouncy) { + callDuration = newCallDuration + } + } else { + callDuration = newCallDuration + } + } + + + var body: some View { + VHStack(orientation: orientation) { + + if orientation == .horizontal { + + VStack { + + if model.localUserStillNeedsToAcceptOrRejectIncomingCall { + AcceptOrRejectButtonsView(model: model, actions: actions) + } else { + OngoingCallButtonsView(globalOrientation: orientation, model: model, actions: actions) + } + } + .padding(.trailing) + + Divider() + .padding(.trailing) + + } + + VStack { + + // If the call is an outgoing call, show a button allowing the caller to add participants to the call + + if model.direction == .outgoing { + HStack { + Spacer() + Button(action: userWantsToAddParticipantToCall) { + Image(systemIcon: .personCropCircleBadgePlus) + .font(.system(size: 26)) + } + } + } + + // Show a list of all participants + + ScrollView { + ForEach(model.otherParticipants) { participant in + OlvidCallParticipantView(model: participant, state: callParticipantViewState, actions: self) + } + } + + Spacer() + + CallDurationAndTitle(orientation: orientation, callDuration: callDuration) + + } + + if orientation == .vertical { + VStack { + + if model.localUserStillNeedsToAcceptOrRejectIncomingCall { + AcceptOrRejectButtonsView(model: model, actions: actions) + } else { + OngoingCallButtonsView(globalOrientation: orientation, model: model, actions: actions) + } + + } + } + + } + .padding() + .onReceive(timer) { (_) in + refreshCallDuration() + } + + } +} + + +// MARK: Call duration and title + +private struct CallDurationAndTitle: View { + + let orientation: Orientation + let callDuration: String? + + var body: some View { + + switch orientation { + case .vertical: + VStack { + BadgeAndTextView() + if let callDuration { + Text(verbatim: callDuration) + } + } + .font(.system(size: 16)) + .foregroundStyle(Color(UIColor.secondaryLabel)) + case .horizontal: + HStack { + BadgeAndTextView() + if let callDuration { + Text(verbatim: "-") + Text(verbatim: callDuration) + } + Spacer() + } + .font(.system(size: 16)) + .foregroundStyle(Color(UIColor.secondaryLabel)) + .padding(.leading, 82) + } + + } + +} + + +// MARK: - BadgeAndTextView + +private struct BadgeAndTextView: View { + var body: some View { + HStack { + Image("badge") + .resizable() + .aspectRatio(contentMode: .fill) + .frame(width: 20, height: 20) + Text("OLVID_AUDIO") + } + } +} + + +// MARK: - VHStack view + +private struct VHStack: View { + + let orientation: Orientation + let spacing: CGFloat? + + let content: Content + + init(orientation: Orientation, spacing: CGFloat? = nil, @ViewBuilder _ content: () -> Content) { + self.orientation = orientation + self.spacing = spacing + self.content = content() + } + + var body: some View { + switch orientation { + case .vertical: + VStack(spacing: spacing) { + content + } + case .horizontal: + HStack(spacing: spacing) { + content + } + } + } +} + + +// MARK: - Buttons shown when the local user needs to accept/reject incoming call + +protocol AcceptOrRejectButtonsViewActionsProtocol { + func userAcceptedIncomingCall(uuidForCallKit: UUID) async throws + func userRejectedIncomingCall(uuidForCallKit: UUID) async throws +} + + +protocol AcceptOrRejectButtonsViewModelProtocol: ObservableObject { + var uuidForCallKit: UUID { get } +} + + +private struct AcceptOrRejectButtonsView: View { + + @ObservedObject var model: Model + let actions: AcceptOrRejectButtonsViewActionsProtocol + + private let buttonImageFontSize: CGFloat = 20 + + private func userRejectedIncomingCall() { + Task { + do { + try await actions.userRejectedIncomingCall(uuidForCallKit: model.uuidForCallKit) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + private func userAcceptedIncomingCall() { + Task { + do { + try await actions.userAcceptedIncomingCall(uuidForCallKit: model.uuidForCallKit) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + var body: some View { + HStack(spacing: 24) { + + CallButton(action: userRejectedIncomingCall, + systemIcon: .xmark, + background: .systemRed, + text: nil) + + CallButton(action: userAcceptedIncomingCall, + systemIcon: .checkmark, + background: .systemGreen, + text: nil) + + } + } +} + + +// MARK: - Stack of buttons shown during an ongoing call + +protocol OngoingCallButtonsViewModelProtocol: ObservableObject, AudioMenuButtonModelProtocol { + var selfIsMuted: Bool { get } + var uuidForCallKit: UUID { get } +} + + +protocol OngoingCallButtonsViewActionsProtocol: AudioMenuButtonActionsProtocol { + func userWantsToEndOngoingCall(uuidForCallKit: UUID) async throws + func userWantsToSetMuteSelf(uuidForCallKit: UUID, muted: Bool) async throws +} + + +private struct OngoingCallButtonsView: View { + + let globalOrientation: Orientation + @ObservedObject var model: Model + let actions: OngoingCallButtonsViewActionsProtocol + + private let buttonImageFontSize: CGFloat = 20 + + private func userWantsToToggleMuteSelf() { + Task { + do { + try await actions.userWantsToSetMuteSelf(uuidForCallKit: model.uuidForCallKit, muted: !model.selfIsMuted) + } catch { + assertionFailure() + } + } + } + + + private func userWantsToEndOngoingCall() { + Task { + do { + try await actions.userWantsToEndOngoingCall(uuidForCallKit: model.uuidForCallKit) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + + private func userWantsToChat() { + VoIPNotification.hideCallView.postOnDispatchQueue() + } + + + private var buttonStackOrientation: Orientation { + switch globalOrientation { + case .horizontal: return .vertical + case .vertical: return .horizontal + } + } + + var body: some View { + + VHStack(orientation: buttonStackOrientation, spacing: 24) { + + HStack(alignment: .top, spacing: 24) { + + CallButton(action: userWantsToToggleMuteSelf, + systemIcon: .micSlashFill, + background: model.selfIsMuted ? .systemRed : .systemFill, + text: model.selfIsMuted ? "Unmute" : "Mute") + + AudioMenuButton(model: model, actions: actions) + + } + + HStack(alignment: .top, spacing: 24) { + + CallButton(action: userWantsToChat, + systemIcon: .bubbleLeftAndBubbleRightFill, + background: .systemFill, + text: "Chat") + + CallButton(action: userWantsToEndOngoingCall, + systemIcon: .phoneDownFill, + background: .systemRed, + text: "End") + + } + } + + } +} + + +// MARK: - Generic view for most buttons shown during a call + +private struct CallButton: View { + + let action: () -> Void + let systemIcon: SystemIcon + let background: UIColor + let text: LocalizedStringKey? + + var body: some View { + VStack { + Button(action: action, label: { + ZStack { + Circle() + .foregroundStyle(Color(background)) + Image(systemIcon: systemIcon) + .font(Constants.inCallImageFont) + .foregroundStyle(.white) + } + }) + .frame(width: Constants.inCallButtonFrameWidth, height: Constants.inCallButtonFrameWidth) + if let text { + VStack { + Text(text) + .font(.system(size: Constants.inCallButtonTextSize)) + .multilineTextAlignment(.center) + .lineLimit(2) + .foregroundStyle(Color(UIColor.tertiaryLabel)) + Spacer(minLength: 0) + } + .frame(height: Constants.inCallButtonTextFrameHeight) + } + } + .frame(width: Constants.inCallButtonFrameWidth) + } + +} + + +// MARK: - Button for choosing Audio input + +protocol AudioMenuButtonModelProtocol: ObservableObject, AudioMenuButtonLabelViewModelProtocol { + var availableAudioOptions: [OlvidCallAudioOption]? { get } // Nil if the available options cannot be determined yet + func userWantsToActivateAudioOption(_ audioOption: OlvidCallAudioOption) async throws + func userWantsToChangeSpeaker(to isSpeakerEnabled: Bool) async throws +} + + +protocol AudioMenuButtonActionsProtocol { +} + + +private struct AudioMenuButton: View { + + @ObservedObject var model: Model + let actions: AudioMenuButtonActionsProtocol + + /// Called when the user chooses a particular audio input from the menu displayed when tapping the audio button + private func userTappedOnAudioOption(_ audioOption: OlvidCallAudioOption) { + Task { + do { + try await model.userWantsToActivateAudioOption(audioOption) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + + /// The button is available only if the user can only toggle between the built-in speaker in the internal mic. + private func userTappedOnAudioButton() { + Task { + do { + try await model.userWantsToChangeSpeaker(to: !model.isSpeakerEnabled) + } catch { + assertionFailure(error.localizedDescription) + } + } + } + + + /// Type of the input shown on screen. + /// + /// On macOS, the input can only be chosen in the menu bar, so tapping the button shows an alert. + /// On iOS/iPadOS : + /// - if the only alternative choice would be to activate the speaker, we show a button that toggle the speaker; + /// - if more choices are available, we show a menu allowing to choose among the inputs. + private enum InputType { + case button + case menu(availableAudioOptions: [OlvidCallAudioOption]) + case alertOnMac + } + + + private var inputType: InputType { + if ObvMessengerConstants.targetEnvironmentIsMacCatalyst { + return .alertOnMac + } + guard let availableAudioOptions = model.availableAudioOptions else { + return .button + } + switch availableAudioOptions.count { + case let nbrAvailableAudioOptions where nbrAvailableAudioOptions > 2: + return .menu(availableAudioOptions: availableAudioOptions) + default: + return .button + } + } + + private var subtitleLocalizedStringKey: LocalizedStringKey { + if model.isSpeakerEnabled { + return "SPEAKER" + } else { + return "AUDIO" + } + } + + + var body: some View { + + VStack { + + // Show a Menu or a simple button, depending on the number of options to choose from + + switch inputType { + + case .alertOnMac: + + Menu { + Text("THE_CALL_AUDIO_CONFIG_FOR_MAC_IS_AVAILABLE_IN_MENU_BAR") + .foregroundStyle(.primary) + } label: { + AudioMenuButtonLabelView(model: model) + } + .frame(width: Constants.inCallButtonFrameWidth, height: Constants.inCallButtonFrameWidth) + + case .button: + + Button(action: userTappedOnAudioButton) { + AudioMenuButtonLabelView(model: model) + } + .frame(width: Constants.inCallButtonFrameWidth, height: Constants.inCallButtonFrameWidth) + + case .menu(availableAudioOptions: let availableAudioOptions): + + Menu { + ForEach(availableAudioOptions) { audioOption in + Button(action: { userTappedOnAudioOption(audioOption) }) { + Label { + Text(verbatim: audioOption.portName) + } icon: { + switch audioOption.icon { + case .sf(let systemIcon): + Image(systemIcon: systemIcon) + .font(Constants.inCallImageFont) + case .png(let filename): + Image(filename) + .renderingMode(.template) + .resizable() + .foregroundColor(.white) + .frame(width: Constants.inCallImagePngSize, height: Constants.inCallImagePngSize) + + } + } + } + } + } label: { + AudioMenuButtonLabelView(model: model) + } + .frame(width: Constants.inCallButtonFrameWidth, height: Constants.inCallButtonFrameWidth) + } + + // In all cases, show text bellow the menu or button + + VStack { + Text(subtitleLocalizedStringKey) + .font(.system(size: Constants.inCallButtonTextSize)) + .foregroundStyle(Color(UIColor.tertiaryLabel)) + Spacer(minLength: 0) + } + .frame(height: Constants.inCallButtonTextFrameHeight) + + } + .frame(width: Constants.inCallButtonFrameWidth) + + } + +} + +// MARK: - The view used for the audio button, both when using a menu or a button + +protocol AudioMenuButtonLabelViewModelProtocol: ObservableObject { + var isSpeakerEnabled: Bool { get } + var currentAudioOptions: [OlvidCallAudioOption] { get } // Empty if the current option cannot be determined yet +} + + +private struct AudioMenuButtonLabelView: View { + + @ObservedObject var model: Model + + private var displayedAudioOption: OlvidCallAudioOption? { + model.currentAudioOptions.first + } + + private var displayedIcon: OlvidCallAudioOption.IconKind { + if model.isSpeakerEnabled { + return .sf(.speakerWave3Fill) + } else { + return displayedAudioOption?.icon ?? .sf(.speakerWave3Fill) + } + } + + var body: some View { + ZStack { + Circle() + .foregroundStyle(model.isSpeakerEnabled ? Color(UIColor.systemRed) : Color(UIColor.systemFill)) + switch displayedIcon { + case .sf(let systemIcon): + Image(systemIcon: systemIcon) + .font(Constants.inCallImageFont) + .foregroundStyle(.white) + case .png(let filename): + Image(filename) + .renderingMode(.template) + .resizable() + .foregroundColor(.white) + .frame(width: Constants.inCallImagePngSize, height: Constants.inCallImagePngSize) + } + } + } + +} + + +// MARK: Local constants for the views + +private struct Constants { + + /// Width of the frame of all the buttons shown during a call (e.g., the end call button and the mute button). + static let inCallButtonFrameWidth: CGFloat = 64 + + /// The buttons shown during a call show a title. This is its size. + static let inCallButtonTextSize: CGFloat = 16 + + /// For buttons that show a png instead of an SF symbol (like for the bluetooth image) + static let inCallImagePngSize: CGFloat = 20 + + /// The font used for SF symbol images contained in the buttons shown during a call + static let inCallImageFont = Font.system(size: 20, weight: .semibold, design: .default) + + /// Height of the frame delimiting the frame around the text below the buttons shown during a call. + /// Specifying this height allows to have an acceptable design whatever the number of lines that the text requires (1 or 2). + static let inCallButtonTextFrameHeight: CGFloat = 42 + +} + + +// MARK: - Previews + +struct OlvidCallView_Previews: PreviewProvider { + + private static let cryptoIds: [ObvCryptoId] = [ + try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f0000b82ae0c57e570389cb03d5ad93dab4606bda7bbe01c09ce5e423094a8603a61e01693046e10e04606ef4461d31e1aa1819222a0a606a250e91749095a4410778c1")!), + try! ObvCryptoId(identity: Data(hexString: "68747470733a2f2f7365727665722e6465762e6f6c7669642e696f000009e171a9c73a0d6e9480b022154c83b13dfa8e4c99496c061c0c35b9b0432b3a014a5393f98a1aead77b813df0afee6b8af7e5f9a5aae6cb55fdb6bc5cc766f8da")!), + ] + + private final class CallParticipantModelForPreviews: OlvidCallParticipantViewModelProtocol { + var uuidForCallKit: UUID { UUID() } + var cryptoId: ObvTypes.ObvCryptoId + var stateLocalizedDescription: String + let showRemoveParticipantButton: Bool + let displayName: String + let circledInitialsConfiguration: UI_ObvCircledInitials.CircledInitialsConfiguration + var contactIsMuted: Bool + init(cryptoId: ObvTypes.ObvCryptoId, showRemoveParticipantButton: Bool, displayName: String, stateLocalizedDescription: String, circledInitialsConfiguration: UI_ObvCircledInitials.CircledInitialsConfiguration, contactIsMuted: Bool) { + self.showRemoveParticipantButton = showRemoveParticipantButton + self.displayName = displayName + self.stateLocalizedDescription = stateLocalizedDescription + self.circledInitialsConfiguration = circledInitialsConfiguration + self.contactIsMuted = contactIsMuted + self.cryptoId = cryptoId + } + } + + private final class ModelForPreviews: OlvidCallViewModelProtocol { + let dateWhenCallSwitchedToInProgress: Date? = Date.now + var direction: OlvidCall.Direction { .outgoing } + let ownedCryptoId = OlvidCallView_Previews.cryptoIds[0] + let availableAudioOptions: [OlvidCallAudioOption]? + var currentAudioOptions: [OlvidCallAudioOption] + @Published var isSpeakerEnabled: Bool + let uuidForCallKit = UUID() + let selfIsMuted: Bool + let otherParticipants: [CallParticipantModelForPreviews] + let localUserStillNeedsToAcceptOrRejectIncomingCall: Bool + init(selfIsMuted: Bool, otherParticipants: [CallParticipantModelForPreviews], localUserStillNeedsToAcceptOrRejectIncomingCall: Bool, availableAudioOptions: [OlvidCallAudioOption]?) { + self.otherParticipants = otherParticipants + self.selfIsMuted = selfIsMuted + self.localUserStillNeedsToAcceptOrRejectIncomingCall = localUserStillNeedsToAcceptOrRejectIncomingCall + self.availableAudioOptions = availableAudioOptions + self.currentAudioOptions = [availableAudioOptions!.first!] + self.isSpeakerEnabled = false + } + func userWantsToActivateAudioOption(_ audioOption: OlvidCallAudioOption) async throws {} + func userWantsToChangeSpeaker(to isSpeakerEnabled: Bool) async throws { + self.isSpeakerEnabled = isSpeakerEnabled + } + } + + private static let model = ModelForPreviews( + selfIsMuted: false, + otherParticipants: [ + .init(cryptoId: cryptoIds[0], + showRemoveParticipantButton: true, + displayName: "Thomas Baignères", + stateLocalizedDescription: "Some s0tate", + circledInitialsConfiguration: .contact( + initial: "S", + photo: nil, + showGreenShield: false, + showRedShield: false, + cryptoId: cryptoIds[0], + tintAdjustementMode: .normal), + contactIsMuted: true), + .init(cryptoId: cryptoIds[1], + showRemoveParticipantButton: true, + displayName: "Tim Cooks", + stateLocalizedDescription: "Some other state", + circledInitialsConfiguration: .contact( + initial: "T", + photo: nil, + showGreenShield: false, + showRedShield: false, + cryptoId: cryptoIds[1], + tintAdjustementMode: .normal), + contactIsMuted: false), + ], + localUserStillNeedsToAcceptOrRejectIncomingCall: false, + availableAudioOptions: [ + OlvidCallAudioOption.builtInSpeaker(), + OlvidCallAudioOption.forPreviews(portType: .headphones, portName: "Headphones"), + //OlvidCallAudioOption.forPreviews(portType: .airPlay, portName: "Airplay"), + ]) + + private final class ActionsForPreviews: OlvidCallViewActionsProtocol { + func userWantsToRemoveParticipant(uuidForCallKit: UUID, participantToRemove: ObvCryptoId) async throws {} + func userWantsToAddParticipantsToExistingCall(uuidForCallKit: UUID, participantsToAdd: Set) async throws {} + func userWantsToSetMuteSelf(uuidForCallKit: UUID, muted: Bool) async throws {} + func userWantsToEndOngoingCall(uuidForCallKit: UUID) async throws {} + func userAcceptedIncomingCall(uuidForCallKit: UUID) async {} + func userRejectedIncomingCall(uuidForCallKit: UUID) async {} + func userWantsToAddParticipantToCall() {} + func userWantsToMuteSelf() {} + } + + + private final class NavigationActionsForPreviews: OlvidCallViewNavigationActionsProtocol { + func userWantsToAddParticipantToCall(ownedCryptoId: ObvTypes.ObvCryptoId, currentOtherParticipants: Set) async -> Set { + return Set([]) + } + } + + private static let actions = ActionsForPreviews() + private static let navigationActions = NavigationActionsForPreviews() + + + static var previews: some View { + OlvidCallView(model: model, actions: actions, navigationActions: navigationActions) + .environment(\.locale, .init(identifier: "fr")) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/OlvidCallViewController.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/OlvidCallViewController.swift new file mode 100644 index 00000000..f3985037 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/OlvidCallViewController.swift @@ -0,0 +1,120 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import UIKit +import ObvTypes +import ObvUICoreData + + +final class OlvidCallViewController: UIHostingController> { + + private var continuationWhenPresentingMultipleContactsViewController: CheckedContinuation, Never>? + + struct Model { + let call: OlvidCall + let manager: OlvidCallManager + } + + init(model: Model) { + let navigationActions = OlvidCallViewNavigationActions() + let view = OlvidCallView(model: model.call, actions: model.manager, navigationActions: navigationActions) + super.init(rootView: view) + navigationActions.delegate = self + } + + deinit { + debugPrint("deinit OlvidCallViewController") + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + + +// MARK: - Implementing OlvidCallViewNavigationActionsProtocol + +extension OlvidCallViewController: OlvidCallViewNavigationActionsProtocol { + + @MainActor + func userWantsToAddParticipantToCall(ownedCryptoId: ObvCryptoId, currentOtherParticipants: Set) async -> Set { + + return await withCheckedContinuation { (continuation: CheckedContinuation, Never>) in + + continuationWhenPresentingMultipleContactsViewController = continuation + + let vc = MultipleContactsViewController( + ownedCryptoId: ownedCryptoId, + mode: .excluded(from: currentOtherParticipants, oneToOneStatus: .any, requiredCapabilitites: nil), + button: .floating(title: NSLocalizedString("ADD_SELECTED_CONTACTS_TO_CALL", comment: ""), systemIcon: .phoneFill), + disableContactsWithoutDevice: true, + allowMultipleSelection: true, + showExplanation: false, + allowEmptySetOfContacts: false, + textAboveContactList: NSLocalizedString("SELECT_NEW_CALL_PARTICIPANTS", comment: "")) { [weak self] selectedContacts in + self?.presentedViewController?.dismiss(animated: true) + self?.continuationWhenPresentingMultipleContactsViewController = nil + continuation.resume(returning: Set(selectedContacts.map({ $0.cryptoId }))) + } dismissAction: { [weak self] in + self?.presentedViewController?.dismiss(animated: true) + self?.continuationWhenPresentingMultipleContactsViewController = nil + continuation.resume(returning: Set([])) + } + + let nav = UINavigationController(rootViewController: vc) + + nav.presentationController?.delegate = self + + self.present(nav, animated: true) + + } + + } + +} + + +// MARK: - UIAdaptivePresentationControllerDelegate + +extension OlvidCallViewController: UIAdaptivePresentationControllerDelegate { + + /// This `UIAdaptivePresentationControllerDelegate` delegate gets called when the user dismisses the presented `MultipleContactsViewController` manually. + public func presentationControllerDidDismiss(_ presentationController: UIPresentationController) { + guard let continuation = self.continuationWhenPresentingMultipleContactsViewController else { return } + self.continuationWhenPresentingMultipleContactsViewController = nil + continuation.resume(returning: Set([])) + } + +} + +// MARK: - OlvidCallViewNavigationActions + +private final class OlvidCallViewNavigationActions: OlvidCallViewNavigationActionsProtocol { + + weak var delegate: OlvidCallViewNavigationActionsProtocol? + + func userWantsToAddParticipantToCall(ownedCryptoId: ObvCryptoId, currentOtherParticipants: Set) async -> Set { + guard let delegate else { assertionFailure(); return Set([])} + return await delegate.userWantsToAddParticipantToCall(ownedCryptoId: ownedCryptoId, currentOtherParticipants: currentOtherParticipants) + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/ViewModelsImplementation/OlvidCall+OlvidCallViewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/ViewModelsImplementation/OlvidCall+OlvidCallViewModelProtocol.swift new file mode 100644 index 00000000..0b838494 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/ViewModelsImplementation/OlvidCall+OlvidCallViewModelProtocol.swift @@ -0,0 +1,51 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation + + +extension OlvidCall: OlvidCallViewModelProtocol { + + var localUserStillNeedsToAcceptOrRejectIncomingCall: Bool { + switch direction { + case .outgoing: + return false + case .incoming: + switch self.state { + case .initial: + return true + case .userAnsweredIncomingCall, + .gettingTurnCredentials, + .initializingCall, + .callInProgress, + .hangedUp, + .ringing, + .kicked, + .callRejected, + .unanswered, + .outgoingCallIsConnecting, + .reconnecting, + .answeredOnAnotherDevice: + return false + } + } + + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/ViewModelsImplementation/OlvidCallManager+OlvidCallViewActionsProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/ViewModelsImplementation/OlvidCallManager+OlvidCallViewActionsProtocol.swift new file mode 100644 index 00000000..875e67f2 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/ViewModelsImplementation/OlvidCallManager+OlvidCallViewActionsProtocol.swift @@ -0,0 +1,27 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import os.log +import CallKit +import WebRTC + + +/// We declare the conformance of the `OlvidCallManager` to the `OlvidCallViewActionsProtocol` used at the UI level. All methods are implemented in the `OlvidCallManager` file itself. +extension OlvidCallManager: OlvidCallViewActionsProtocol {} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/ViewModelsImplementation/OlvidCallParticipant+OlvidCallParticipantViewModelProtocol.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/ViewModelsImplementation/OlvidCallParticipant+OlvidCallParticipantViewModelProtocol.swift new file mode 100644 index 00000000..32fa2c83 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/UI/ViewModelsImplementation/OlvidCallParticipant+OlvidCallParticipantViewModelProtocol.swift @@ -0,0 +1,69 @@ +/* + * Olvid for iOS + * Copyright © 2019-2023 Olvid SAS + * + * This file is part of Olvid for iOS. + * + * Olvid is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * Olvid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Olvid. If not, see . + */ + +import Foundation +import SwiftUI +import ObvTypes +import UI_ObvCircledInitials +import ObvUICoreData + + +// MARK: - Implementing OlvidCallParticipantViewModelProtocol (for the UI) + +extension OlvidCallParticipant: OlvidCallParticipantViewModelProtocol { + + var stateLocalizedDescription: String { + return self.state.localizedString + } + + var circledInitialsConfiguration: UI_ObvCircledInitials.CircledInitialsConfiguration { + assert(Thread.isMainThread) + do { + switch self.knownOrUnknown { + case .known(contactObjectID: let contactObjectID): + guard let persistedContact = try PersistedObvContactIdentity.get(objectID: contactObjectID.objectID, within: ObvStack.shared.viewContext) else { + assertionFailure() + return defaultCircledInitialsConfiguration + } + return persistedContact.circledInitialsConfiguration + case .unknown: + // This happens if we are a callee and do not have this participant among our contacts + return defaultCircledInitialsConfiguration + } + } catch { + assertionFailure() + return defaultCircledInitialsConfiguration + } + } + + + private var defaultCircledInitialsConfiguration: UI_ObvCircledInitials.CircledInitialsConfiguration { + if let firstCharacter = self.displayName.trimmingWhitespacesAndNewlines().first { + return .contact(initial: String(firstCharacter), + photo: nil, + showGreenShield: false, + showRedShield: false, + cryptoId: self.cryptoId, + tintAdjustementMode: .normal) + } else { + return .icon(.person) + } + } + +} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallAnswerAndRejectButtonsView.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallAnswerAndRejectButtonsView.swift deleted file mode 100644 index 1212c85b..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallAnswerAndRejectButtonsView.swift +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import SwiftUI - -struct CallAnswerAndRejectButtonsView: View { - var callIsInInitialState: Bool - var actionReject: () -> Void - var actionAccept: () -> Void - var actionAddParticipant: () -> Void - var showAcceptButton: Bool - var showAddParticipantButton: Bool - var body: some View { - HStack { - if showAddParticipantButton { - Spacer() - AddParticipantButtonView(actionAddParticipant: actionAddParticipant) - } - Spacer() - HangupDeclineButtonView(callIsInInitialState: callIsInInitialState, actionReject: actionReject) - Spacer() - if showAcceptButton { - AcceptButtonView(actionAccept: actionAccept) - Spacer() - } - } - } -} - - - -struct CallAnswerAndRejectButtonsView_Previews: PreviewProvider { - static var previews: some View { - Group { - CallAnswerAndRejectButtonsView(callIsInInitialState: true, actionReject: {}, actionAccept: {}, actionAddParticipant: {}, showAcceptButton: true, showAddParticipantButton: false) - .padding() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .light) - .previewDisplayName("Static example in light mode") - CallAnswerAndRejectButtonsView(callIsInInitialState: true, actionReject: {}, actionAccept: {}, actionAddParticipant: {}, showAcceptButton: true, showAddParticipantButton: false) - .padding() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Static example in dark mode") - CallAnswerAndRejectButtonsView(callIsInInitialState: false, actionReject: {}, actionAccept: {}, actionAddParticipant: {}, showAcceptButton: false, showAddParticipantButton: false) - .padding() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Static example in dark mode") - CallAnswerAndRejectButtonsView(callIsInInitialState: false, actionReject: {}, actionAccept: {}, actionAddParticipant: {}, showAcceptButton: false, showAddParticipantButton: true) - .padding() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Static example in dark mode") - CallAnswerAndRejectButtonsMockView(object: MockObject()) - .padding() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Dynamic example in dark mode") - } - } -} - -fileprivate struct CallAnswerAndRejectButtonsMockView: View { - @ObservedObject var object: MockObject - var body: some View { - CallAnswerAndRejectButtonsView(callIsInInitialState: object.callIsInInitialState, - actionReject: object.actionReject, - actionAccept: object.actionAccept, - actionAddParticipant: object.actionAddParticipant, - showAcceptButton: object.showAcceptButton, - showAddParticipantButton: object.showAddPartcipantButton) - } -} - - -fileprivate class MockObject: ObservableObject { - @Published private(set) var showAcceptButton = true - @Published private(set) var showAddPartcipantButton = false - @Published private(set) var callIsInInitialState: Bool = true - func actionReject() { - withAnimation { callIsInInitialState.toggle(); showAcceptButton.toggle() } - } - func actionAccept() { - withAnimation { callIsInInitialState.toggle(); showAcceptButton.toggle() } - } - func actionAddParticipant() { } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallButtonsViews.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallButtonsViews.swift deleted file mode 100644 index c4265a1d..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallButtonsViews.swift +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import SwiftUI - -struct MuteButtonView: View { - - var actionToggleAudio: () -> Void - var isMuted: Bool - - var body: some View { - RoundedButtonView(icon: isMuted ? .sf("mic.slash.fill") : .sf("mic.fill"), - text: nil, // "mute", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color.red, - isOn: isMuted, - action: actionToggleAudio) - .buttonStyle(CallSettingButtonStyle()) - } - -} - - -struct AudioButtonView: View { - - let audioInputs: [AudioInput] - let showAudioAction: () -> Void - let audioIcon: AudioInputIcon - - var body: some View { - if audioInputs.count == 2 { - RoundedButtonView(icon: .sf("speaker.3.fill"), - text: nil, // CommonString.Word.Speaker, - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: audioInputs.first(where: { $0.isCurrent })?.isSpeaker ?? false, - action: { audioInputs.first(where: { !$0.isCurrent })?.activate() }) - .buttonStyle(CallSettingButtonStyle()) - } else if #available(iOS 14.0, *) { - UIButtonWrapper(title: nil, actions: audioInputs.map { $0.toAction }) { - RoundedButtonView(icon: audioIcon, - text: nil, // "audio", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: false, - action: { }) - } - .frame(width: 60, height: 60) - .buttonStyle(CallSettingButtonStyle()) - } else { - RoundedButtonView(icon: audioIcon, - text: nil, // "audio", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: false, - action: showAudioAction) - .buttonStyle(CallSettingButtonStyle()) - } - - } -} - - -struct DiscussionButtonView: View { - - var actionDiscussions: () -> Void - var discussionsIsOn: Bool - - var body: some View { - RoundedButtonView(icon: .sf("bubble.left.fill"), - text: nil, // "discussions", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: discussionsIsOn, - action: actionDiscussions) - .buttonStyle(CallSettingButtonStyle()) - } -} - - -struct AddParticipantButtonView: View { - - var actionAddParticipant: () -> Void - - var body: some View { - RoundedButtonView(icon: .sf("plus"), - text: nil, // "Add Participant", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: false, - action: actionAddParticipant) - .transition(.opacity) - - } -} - - -struct HangupDeclineButtonView: View { - - var callIsInInitialState: Bool // True iff callState == .initial - var actionReject: () -> Void - - var body: some View { - if callIsInInitialState { - RoundedButtonView(icon: .sf("xmark"), - text: nil, // "Decline", - backgroundColor: Color.red, - backgroundColorWhenOn: Color.red, - isOn: false, - action: actionReject) - } else { - RoundedButtonView(icon: .sf("phone.down.fill"), - text: nil, // "Hangup", - backgroundColor: Color.red, - backgroundColorWhenOn: Color.red, - isOn: false, - action: actionReject) - } - - } - -} - - -struct AcceptButtonView: View { - - var actionAccept: () -> Void - - var body: some View { - RoundedButtonView(icon: .sf("checkmark"), - text: nil, // "Accept", - backgroundColor: Color(AppTheme.shared.colorScheme.olvidLight), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: false, - action: actionAccept) - .transition(.opacity) - } -} - - -struct CallSettingsButtonsView: View { - - var actionToggleAudio: () -> Void - var isMuted: Bool - - let audioInputs: [AudioInput] - let showAudioAction: () -> Void - let audioIcon: AudioInputIcon - - var actionDiscussions: () -> Void - var discussionsIsOn: Bool - - var body: some View { - HStack { - MuteButtonView(actionToggleAudio: actionToggleAudio, isMuted: isMuted) - AudioButtonView(audioInputs: audioInputs, showAudioAction: showAudioAction, audioIcon: audioIcon) - DiscussionButtonView(actionDiscussions: actionDiscussions, discussionsIsOn: discussionsIsOn) - } - } - -} - - - -struct CallSettingsButtonsView_Previews: PreviewProvider { - static var previews: some View { - Group { - CallSettingsButtonsView(actionToggleAudio: {}, - isMuted: true, - audioInputs: [], - showAudioAction: {}, - audioIcon: .sf("speaker.3.fill"), - actionDiscussions: {}, - discussionsIsOn: false) - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .light) - .previewDisplayName("Static example in light mode") - CallSettingsButtonsView(actionToggleAudio: {}, - isMuted: true, audioInputs: [], - showAudioAction: {}, - audioIcon: .sf("speaker.3.fill"), - actionDiscussions: {}, - discussionsIsOn: false) - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Static example in dark mode") - CallSettingsButtonsMockView(object: MockObject()) - .padding() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .light) - .previewDisplayName("Dynamic example in light mode") - CallSettingsButtonsMockView(object: MockObject()) - .padding() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Dynamic example in dark mode") - } - } -} - - - -fileprivate struct CallSettingsButtonsMockView: View { - - @ObservedObject var object: MockObject - - var body: some View { - CallSettingsButtonsView(actionToggleAudio: object.actionToggleAudio, - isMuted: object.isMuted, - audioInputs: [], - showAudioAction: object.showAudioAction, - audioIcon: object.audioIcon, - actionDiscussions: object.actionDiscussions, - discussionsIsOn: object.discussionsIsOn) - } - -} - - - -fileprivate class MockObject: ObservableObject { - @Published private(set) var isMuted: Bool = true - func actionToggleAudio() { - isMuted.toggle() - } - func showAudioAction() { - } - @Published private(set) var discussionsIsOn: Bool = false - func actionDiscussions() { - discussionsIsOn.toggle() - } - @State var audioIcon: AudioInputIcon = .sf("speaker.3.fill") -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallView.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallView.swift deleted file mode 100644 index cfbcc59a..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/CallView.swift +++ /dev/null @@ -1,757 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import SwiftUI -import AVKit -import ObvTypes -import CoreData -import os.log -import ObvUICoreData - - -@MainActor -final class ObservableCallWrapper: ObservableObject { - - private let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: String(describing: ObservableCallWrapper.self)) - - let call: GenericCall - private var tokens: [NSObjectProtocol] = [] - - var isOutgoingCall: Bool { call.direction == .outgoing } - - @Published var callParticipantDatas = Set() - @Published var isCallIsAnswered: Bool = false - @Published var initialParticipantCount: Int? - @Published var startTimestamp: Date? - @Published var isMuted = false - @Published var callIsInInitialState: Bool = true - @Published var audioIcon: AudioInputIcon = .sf("iphone") - @Published var audioInputs: [AudioInput] = ObvAudioSessionUtils.shared.getAllInputs() - @Published var callHeadline: String - - private var selectedGroupMembers = Set() - - nonisolated func actionReject() { - call.userRequestedToEndCall() - } - - - nonisolated func actionAccept() { - Task { - await call.userRequestedToAnswerCall() - } - } - - - nonisolated func actionAddParticipant(_ selectedContacts: Set) { - assert(Thread.isMainThread) - for contact in selectedContacts { - assert(contact.managedObjectContext == ObvStack.shared.viewContext) - } - let contactIds: [OlvidUserId] = selectedContacts.compactMap { persistedContact in - guard let ownCryptoId = persistedContact.ownedIdentity?.cryptoId else { return nil } - return OlvidUserId.known(contactObjectID: persistedContact.typedObjectID, - ownCryptoId: ownCryptoId, - remoteCryptoId: persistedContact.cryptoId, - displayName: persistedContact.fullDisplayName) - } - VoIPNotification.userWantsToAddParticipants(call: call, contactIds: contactIds) - .postOnDispatchQueue() - } - - - nonisolated func actionKick(_ callParticipant: CallParticipant) { - VoIPNotification.userWantsToKickParticipant(call: call, callParticipant: callParticipant) - .postOnDispatchQueue() - } - - - nonisolated func actionToggleAudio() { - Task { - await call.userRequestedToToggleAudio() - } - } - - - nonisolated func actionDiscussions() { - VoIPNotification.hideCallView.postOnDispatchQueue() - } - - - init(call: GenericCall) { - self.call = call - self.callHeadline = "" - self.tokens.append(contentsOf: [ - VoIPNotification.observeCallHasBeenUpdated { (callUUID, updateKind) in - Task { [weak self] in await self?.processCallHasBeenUpdated(callUUID: callUUID, updateKind: updateKind) } - }, - VoIPNotification.observeCallParticipantHasBeenUpdated(queue: OperationQueue.main) { [weak self] (updatedParticipant, updateKind) in - Task { [weak self] in - assert(Thread.isMainThread) - guard let callParticipant = self?.callParticipantDatas.first(where: { $0.id == updatedParticipant.uuid}) else { return } - await callParticipant.update() - await self?.update() - } - }, - NotificationCenter.default.addObserver(forName: AVAudioSession.routeChangeNotification, object: nil, queue: nil) { _ in - Task { [weak self] in await self?.update() } - }, - ]) - Task { [weak self] in - await self?.updateCallParticipants() - await self?.update() - } - } - - deinit { - tokens.forEach { NotificationCenter.default.removeObserver($0) } - } - - - private func processCallHasBeenUpdated(callUUID: UUID, updateKind: CallUpdateKind) async { - assert(Thread.isMainThread) - guard callUUID == call.uuid else { return } - switch updateKind { - case .state, .mute: - break - case .callParticipantChange: - await updateCallParticipants() - } - await update() - } - - - private func updateCallParticipants() async { - - let callParticipants = await call.getCallParticipants() - let newParticipantDatas = await withTaskGroup(of: CallParticipantData.self, returning: Set.self) { taskGroup in - for callParticipant in callParticipants { - taskGroup.addTask { - return await CallParticipantData(callParticipant: callParticipant, startTimestamp: self.startTimestamp) - } - } - var collected = Set() - for await value in taskGroup { - collected.insert(value) - } - return collected - } - - let callParticipantsToInsert = newParticipantDatas.subtracting(self.callParticipantDatas) - let callParticipantsToRemove = self.callParticipantDatas.subtracting(newParticipantDatas) - - for participant in callParticipantsToInsert { - withAnimation { - _ = self.callParticipantDatas.insert(participant) - } - } - - for participant in callParticipantsToRemove { - withAnimation { - _ = self.callParticipantDatas.remove(participant) - } - } - - - - } - - - private func update() async { - assert(Thread.isMainThread) - // Update isCallIsAnswered - switch call.direction { - case .incoming: - switch await call.state { - case .initial, .ringing: - /// We never show the answerCallButton when we use call kit - isCallIsAnswered = call.usesCallKit - initialParticipantCount = call.initialParticipantCount - - default: - isCallIsAnswered = true - } - case .outgoing: - isCallIsAnswered = true - } - // Update the startTimestamp - - if self.startTimestamp == nil, let start = await call.getStateDates()[.callInProgress] { - self.startTimestamp = start - for participant in callParticipantDatas { - participant.startTimestamp = start - } - } - // Update muteIsOn - Task { - let isMuted = await call.isMuted - DispatchQueue.main.async { - self.isMuted = isMuted - } - } - // Update state - let callState = await call.state - callIsInInitialState = callState == .initial - - // Update the call headline - if callState != .callInProgress { - callHeadline = callState.localizedString - } else { - // If we reach this point, the call is not a group call and it is in progess. - // We always display the call state, unless the (only) participant is connecting or reconnecting - if let singleParticipantState = callParticipantDatas.first?.state, [PeerState.connectingToPeer, PeerState.reconnecting].contains(singleParticipantState) { - callHeadline = singleParticipantState.localizedString - } else { - callHeadline = callState.localizedString - } - } - - audioInputs = ObvAudioSessionUtils.shared.getAllInputs() - - // Update current route - if let currentInput = ObvAudioSessionUtils.shared.getCurrentAudioInput() { - self.audioIcon = currentInput.icon - } else { - self.audioIcon = .sf("iphone") - } - } - -} - -struct CallView: View { - - @ObservedObject var wrappedCall: ObservableCallWrapper - - private var sortedCallParticipantDatas: [CallParticipantData] { - wrappedCall.callParticipantDatas.sorted { - $0.name < $1.name - } - } - - var body: some View { - InnerCallView(callParticipantDatas: sortedCallParticipantDatas, - isOutgoingCall: wrappedCall.isOutgoingCall, - startTimestamp: wrappedCall.startTimestamp, - isMuted: wrappedCall.isMuted, - audioIcon: wrappedCall.audioIcon, - audioInputs: wrappedCall.audioInputs, - discussionsIsOn: false, - isCallIsAnswered: wrappedCall.isCallIsAnswered, - initialParticipantCount: wrappedCall.initialParticipantCount, - callIsInInitialState: wrappedCall.callIsInInitialState, - callHeadline: wrappedCall.callHeadline, - - actionToggleAudio: wrappedCall.actionToggleAudio, - actionDiscussions: wrappedCall.actionDiscussions, - actionReject: wrappedCall.actionReject, - actionAccept: wrappedCall.actionAccept, - actionAddParticipant: wrappedCall.actionAddParticipant, - actionKick: wrappedCall.actionKick) - } - -} - -struct CounterView: View { - - let startTimestamp: Date? - - init(startTimestamp: Date?) { - self.startTimestamp = startTimestamp - refreshCounter() - } - - @State private var counter: TimeInterval? - private var timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect() - - private func refreshCounter() { - if let st = self.startTimestamp { - self.counter = Date().timeIntervalSince(st) - } - } - - private let formatter: DateComponentsFormatter = { - let f = DateComponentsFormatter() - f.unitsStyle = .abbreviated // Or .short or .abbreviated - f.allowedUnits = [.second, .minute, .hour] - return f - }() - - private func makeCounterString() -> String { - var res = "Olvid Audio" - if let counter = self.counter, - let formattedCounter = formatter.string(from: counter) { - res = [res, formattedCounter].joined(separator: " - ") - } - return res - } - - var body: some View { - HStack { - Image("badge") - .resizable() - .aspectRatio(contentMode: .fill) - .frame(width: 20, height: 20) - Text(makeCounterString()) - .onReceive(timer) { (_) in - refreshCounter() - } - .font(.callout) - .foregroundColor(Color(.secondaryLabel)) - } - } -} - -fileprivate struct InnerCallView: View { - - let callParticipantDatas: [CallParticipantData] - let isOutgoingCall: Bool - let startTimestamp: Date? - let isMuted: Bool - let audioIcon: AudioInputIcon - let audioInputs: [AudioInput] - let discussionsIsOn: Bool - let isCallIsAnswered: Bool - let initialParticipantCount: Int? - let callIsInInitialState: Bool - let callHeadline: String - - let actionToggleAudio: () -> Void - let actionDiscussions: () -> Void - let actionReject: () -> Void - let actionAccept: () -> Void - let actionAddParticipant: (_ selectedContacts: Set) -> Void - let actionKick: (_ callParticipant: CallParticipant) -> Void - - var isGroupCall: Bool { callParticipantDatas.count > 1 } - var showAddParticipantButton: Bool { isOutgoingCall } - var showAcceptButton: Bool { !isCallIsAnswered } - var ownedIdentity: ObvCryptoId? { - let ids = callParticipantDatas.compactMap { $0.callParticipant?.ownedIdentity } - return ids.first - } - var imagesOnTheLeft: Bool { - isGroupCall || verticalSizeClass == .compact - } - - @State private var showAddParticipantView = false - @State private var showAudioActionSheet = false - - @Environment(\.verticalSizeClass) var verticalSizeClass - - private func getSpeakerActionSheetButtons() -> [ActionSheet.Button] { - var buttons: [ActionSheet.Button] = audioInputs.map({ - let label = $0.label + ($0.isCurrent ? " ✔︎" : "") - return Alert.Button.default(Text(label), action: $0.activate) - }) - buttons.append(Alert.Button.cancel({ showAudioActionSheet = false })) - return buttons - } - - func participantView(_ data: CallParticipantData) -> ParticipantView { - ParticipantView( - callParticipantData: data, - isOutgoingCall: isOutgoingCall, - isGroupCall: isGroupCall, - isCallIsAnswered: isCallIsAnswered, - imagesOnTheLeft: imagesOnTheLeft, - initialParticipantCount: initialParticipantCount, - actionKick: actionKick) - } - - struct CallButton: Identifiable { - var id = UUID() - var view: AnyView - var bottom: Bool - - init(_ view: AnyView, bottom: Bool) { - self.view = view - self.bottom = bottom - } - } - - var buttons: [CallButton] { - var result = [CallButton]() - - if !showAcceptButton { - if showAddParticipantButton { - result += [CallButton(AnyView(AddParticipantButtonView(actionAddParticipant: { - showAddParticipantView.toggle() })), - bottom: false)] - } - - result += [CallButton(AnyView(MuteButtonView(actionToggleAudio: actionToggleAudio, - isMuted: isMuted)), - bottom: true)] - - result += [CallButton(AnyView(AudioButtonView(audioInputs: audioInputs, - showAudioAction: { - showAudioActionSheet.toggle() - }, - audioIcon: audioIcon) - .actionSheet(isPresented: $showAudioActionSheet, content: { - ActionSheet(title: Text("CHOOSE_PREFERRED_AUDIO_SOURCE"), message: nil, buttons: getSpeakerActionSheetButtons()) - })), - bottom: true)] - - result += [CallButton(AnyView(DiscussionButtonView(actionDiscussions: actionDiscussions, - discussionsIsOn: discussionsIsOn)), - bottom: true)] - - } - - result += [CallButton(AnyView(HangupDeclineButtonView(callIsInInitialState: callIsInInitialState, actionReject: actionReject)), - bottom: true)] - - if showAcceptButton { - result += [CallButton(AnyView(AcceptButtonView(actionAccept: actionAccept)), - bottom: true)] - } - - return result - } - - - - var body: some View { - ZStack { - Color(.systemBackground) - .edgesIgnoringSafeArea(.all) - VStack(alignment: .leading) { - if callParticipantDatas.count == 1, - let participantData = callParticipantDatas.first { - participantView(participantData) - if !imagesOnTheLeft { - Spacer() - HStack { - Spacer() - participantData.profilePictureView(customCircleDiameter: 150.0) - Spacer() - } - } - } else { - ScrollView { - ForEach(callParticipantDatas) { participantData in - participantView(participantData) - } - } - } - Spacer() - HStack { - Spacer() - VStack { - if isGroupCall { - CounterView(startTimestamp: startTimestamp) - } else { - Text(callHeadline) - .font(Font.headline.smallCaps()) - .foregroundColor(Color(.tertiaryLabel)) - } - } - Spacer() - } - Spacer() - if verticalSizeClass != .compact && showAddParticipantButton { - HStack(alignment: .center) { - Spacer() - ForEach(buttons.filter({ !$0.bottom })) { button in - button.view - .padding([.bottom]) - Spacer() - } - } - } - HStack(alignment: .center) { - Spacer() - ForEach(buttons.filter({ $0.bottom || verticalSizeClass == .compact })) { button in - button.view - .padding([.bottom]) - Spacer() - } - } - } - } - .sheet(isPresented: $showAddParticipantView) { - let contactsToExclude = Set(callParticipantDatas.compactMap { $0.callParticipant?.remoteCryptoId }) - // We allow to call any contact (even non OneToOne) when this is done via a group discussion. - let mode = MultipleContactsMode.excluded(from: contactsToExclude, oneToOneStatus: .any, requiredCapabilitites: nil) - MultipleContactsView(ownedCryptoId: ownedIdentity, - mode: mode, - button: .floating(title: CommonString.Word.Call, systemIcon: .phoneFill), - disableContactsWithoutDevice: true, - allowMultipleSelection: true, - showExplanation: false, - allowEmptySetOfContacts: false, - textAboveContactList: nil) { selectedContacts in - actionAddParticipant(selectedContacts) - showAddParticipantView = false - } dismissAction: { - showAddParticipantView = false - } - } - } - -} - - -final class CallParticipantData: ObservableObject, Identifiable, Equatable, Hashable { - - static func == (lhs: CallParticipantData, rhs: CallParticipantData) -> Bool { - return lhs.callParticipant?.uuid == rhs.callParticipant?.uuid - } - - var callParticipant: CallParticipant? - var id: UUID - @Published var name: String - @Published var photoURL: URL? - @Published var isMuted = false - @Published var state: PeerState - @Published var startTimestamp: Date? - - /// For preview purposes - fileprivate init(name: String, isMuted: Bool, state: PeerState) { - self.callParticipant = nil - self.id = UUID() - self.name = name - self.isMuted = isMuted - self.state = state - self.startTimestamp = Date() - } - - @MainActor - init(callParticipant: CallParticipant, startTimestamp: Date?) async { - assert(Thread.isMainThread) - self.callParticipant = callParticipant - self.id = callParticipant.uuid - self.startTimestamp = startTimestamp - self.name = callParticipant.displayName - self.isMuted = await callParticipant.getContactIsMuted() - self.state = await callParticipant.getPeerState() - self.photoURL = callParticipant.photoURL - } - - @MainActor - func update() async { - assert(Thread.isMainThread) - guard let callParticipant = callParticipant else { return } - self.name = callParticipant.displayName - self.isMuted = await callParticipant.getContactIsMuted() - self.state = await callParticipant.getPeerState() - debugPrint("☎️ ****** CHANGED INTERFACE PARTICIPANT STATE TO \(self.state.debugDescription)") - self.photoURL = callParticipant.photoURL - } - - var circledTextView: Text? { - if let char = name.first { - return Text(String(char)) - } else { - return nil - } - } - - var uiImage: UIImage? { - guard let photoURL = photoURL else { return nil } - return UIImage(contentsOfFile: photoURL.path) - } - - - func profilePictureView(customCircleDiameter: CGFloat? = nil) -> ProfilePictureView { - ProfilePictureView(profilePicture: uiImage, - circleBackgroundColor: callParticipant?.identityColors?.background, - circleTextColor: callParticipant?.identityColors?.text, - circledTextView: circledTextView, - systemImage: .person, - showGreenShield: false, - showRedShield: false, - customCircleDiameter: customCircleDiameter) - } - - func hash(into hasher: inout Hasher) { - hasher.combine(self.id) - } - -} - -struct ParticipantView: View { - - @ObservedObject var callParticipantData: CallParticipantData - - var isOutgoingCall: Bool - var isGroupCall: Bool - var isCallIsAnswered: Bool - var imagesOnTheLeft: Bool - var initialParticipantCount: Int? - var actionKick: (_ callParticipant: CallParticipant) -> Void - - @State private var showingKickConfirmationActionSheet: Bool = false - - var participantName: String { - var result = callParticipantData.name - if !isCallIsAnswered, - let initialParticipantCount = initialParticipantCount, - initialParticipantCount > 1 { - result += " + \(initialParticipantCount - 1)" - } - return result - } - - var body: some View { - HStack { - if imagesOnTheLeft { - Button(action: { - guard let contactObjectID = callParticipantData.callParticipant?.userId.contactObjectID else { return } - ObvStack.shared.viewContext.perform { - guard let persistedContact = try? PersistedObvContactIdentity.get(objectID: contactObjectID, within: ObvStack.shared.viewContext) else { return } - guard let discussionPermanentID = persistedContact.oneToOneDiscussion?.discussionPermanentID else { assertionFailure(); return } - guard let ownedCryptoId = persistedContact.ownedIdentity?.cryptoId else { assertionFailure(); return } - let deepLink = ObvDeepLink.singleDiscussion(ownedCryptoId: ownedCryptoId, objectPermanentID: discussionPermanentID) - ObvMessengerInternalNotification.userWantsToNavigateToDeepLink(deepLink: deepLink) - .postOnDispatchQueue() - return - } - }) { - callParticipantData.profilePictureView() - } - } - VStack(alignment: .leading) { - Text(participantName) - .font(imagesOnTheLeft ? .title : .largeTitle) - .fontWeight(.heavy) - .padding(.bottom, -4.0) - .lineLimit(1) - .foregroundColor(Color(.label)) - .overlay(callParticipantData.isMuted ? AnyView(MutedBadgeView().offset(x: MutedBadgeView.size / 2, y: -0)) : AnyView(EmptyView()), alignment: Alignment(horizontal: .trailing, vertical: .top)) - if isGroupCall { - Text(callParticipantData.state.localizedString) - .font(.callout) - .foregroundColor(Color(.tertiaryLabel)) - } else { - CounterView(startTimestamp: callParticipantData.startTimestamp) - } - } - Spacer() - if isOutgoingCall && isGroupCall { - RoundedButtonView(size: 30, - icon: .sf("minus"), - text: nil, - backgroundColor: Color(.red), - backgroundColorWhenOn: Color(.red), - isOn: false, - action: { - showingKickConfirmationActionSheet = true - }) - } - } - .padding(.top, 16) - .padding([.leading, .trailing], 24) - .actionSheet(isPresented: $showingKickConfirmationActionSheet) { - ActionSheet(title: Text("ALERT_TITLE_KICK_PARTICIPANT"), - message: Text("ALERT_MESSAGE_KICK_PARTICIPANT_\(participantName)"), - buttons: [ - .default(Text( CommonString.Word.Exclude)) { - if let callParticipant = callParticipantData.callParticipant { - actionKick(callParticipant) - } - }, - .cancel() - ]) - } - } -} - - - -// MARK: - Previews - - -struct InnerCallView_Previews: PreviewProvider { - - static var logiciansNames = ["Alan Turing", "Kurt Gödel", "David Hilbert", "Stephen Cole Kleene", "Haskell Curry", "Georg Cantor", "Willard Van Orman Quine", "Aristote", "Giuseppe Peano"] - - static var logicians = logiciansNames.map { CallParticipantData(name: $0, isMuted: $0.count % 2 == 0, state: .connected) } - - private static let fakeAudioInputs = [ - AudioInput(label: "Nice speaker", isCurrent: true, icon: .sf("speaker.1.fill"), isSpeaker: true), - AudioInput(label: "Great handset", isCurrent: false, icon: .sf("headphones"), isSpeaker: false), - ] - static var audioIcon: AudioInputIcon = fakeAudioInputs.first!.icon - - static var previews: some View { - Group { - InnerCallView(callParticipantDatas: [CallParticipantData(name: "Alan Turing", isMuted: true, state: .connected)], - isOutgoingCall: true, - startTimestamp: Date(), - isMuted: true, - audioIcon: audioIcon, - audioInputs: fakeAudioInputs, - discussionsIsOn: false, - isCallIsAnswered: true, - initialParticipantCount: nil, - callIsInInitialState: false, - callHeadline: CallState.callInProgress.localizedString, - - actionToggleAudio: {}, - actionDiscussions: {}, - actionReject: {}, - actionAccept: {}, - actionAddParticipant: {_ in}, - actionKick: { _ in }) - .environment(\.colorScheme, .dark) - - InnerCallView(callParticipantDatas: logicians, - isOutgoingCall: true, - startTimestamp: Date(), - isMuted: true, - audioIcon: audioIcon, - audioInputs: fakeAudioInputs, - discussionsIsOn: false, - isCallIsAnswered: true, - initialParticipantCount: nil, - callIsInInitialState: false, - callHeadline: CallState.callInProgress.localizedString, - - actionToggleAudio: {}, - actionDiscussions: {}, - actionReject: {}, - actionAccept: {}, - actionAddParticipant: {_ in}, - actionKick: { _ in }) - .environment(\.colorScheme, .light) - - InnerCallView(callParticipantDatas: logicians, - isOutgoingCall: false, - startTimestamp: Date(), - isMuted: true, - audioIcon: audioIcon, - audioInputs: fakeAudioInputs, - discussionsIsOn: false, - isCallIsAnswered: true, - initialParticipantCount: nil, - callIsInInitialState: false, - callHeadline: CallState.callInProgress.localizedString, - - actionToggleAudio: {}, - actionDiscussions: {}, - actionReject: {}, - actionAccept: {}, - actionAddParticipant: {_ in}, - actionKick: { _ in }) - .environment(\.colorScheme, .light) - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/MutedBadgeView.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/MutedBadgeView.swift deleted file mode 100644 index 12e64f4f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/MutedBadgeView.swift +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import SwiftUI - -struct MutedBadgeView: View { - static let size: CGFloat = 20.0 - var body: some View { - Circle() - .fill(Color.red) - .frame(width: MutedBadgeView.size, height: MutedBadgeView.size) - .overlay(Image(systemName: "mic.slash.fill") - .font(Font.system(size: MutedBadgeView.size*0.4).bold())) - .foregroundColor(.white) - } -} - -struct MutedBadgeView_Previews: PreviewProvider { - static var previews: some View { - Group { - MutedBadgeView() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .light) - .previewDisplayName("Static example in light mode") - MutedBadgeView() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Static example in dark mode") - } - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/RoundedButtonView.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/RoundedButtonView.swift deleted file mode 100644 index 377ffb6f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/ViewsAndViewControllers/SwiftUI/RoundedButtonView.swift +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS - * - * This file is part of Olvid for iOS. - * - * Olvid is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * Olvid is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Olvid. If not, see . - */ - -import ObvUI -import SwiftUI - - -struct RoundedButtonView: View { - var size: CGFloat = 60 - let icon: AudioInputIcon - let text: String? - let backgroundColor: Color - let backgroundColorWhenOn: Color - let isOn: Bool - let action: () -> Void - - var body: some View { - VStack { - switch icon { - case .sf(let systemName): - Button(action: action) { - Circle() - .fill(isOn ? backgroundColorWhenOn : backgroundColor) - .frame(width: size, height: size) - .overlay(Image(systemName: systemName) - .font(Font.system(size: size*0.4).bold())) - .foregroundColor(.white) - } - case .png(let name): - Button(action: action) { - Circle() - .fill(isOn ? backgroundColorWhenOn : backgroundColor) - .frame(width: size, height: size) - .overlay( - Image(name) - .renderingMode(.template) - .resizable() - .foregroundColor(.white) - .frame(width: size * 0.5, height: size * 0.5) - ) - .foregroundColor(.white) - } - } - if let text = text { - Text(text) - .font(.footnote) - .foregroundColor(Color(.secondaryLabel)) - } - } - } -} - - -struct CallSettingButtonStyle: PrimitiveButtonStyle { - - func makeBody(configuration: Configuration) -> some View { - configuration - .label - .gesture(TapGesture().onEnded({ _ in configuration.trigger() })) - .animation(.easeInOut(duration: 0.2)) - } - -} - - -// MARK: - Previews - -struct RoundedButtonView_Previews: PreviewProvider { - - fileprivate static let mockObject = MockObject() - - static var previews: some View { - Group { - HStack { - RoundedButtonView(icon: .sf("mic.slash.fill"), - text: "mute", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(.systemFill), - isOn: false, - action: defaultAction) - .padding() - RoundedButtonView(icon: .sf("mic.slash.fill"), - text: "mute", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: true, - action: defaultAction) - .padding() - } - .previewLayout(.sizeThatFits) - .previewDisplayName("Static example in light mode") - HStack { - RoundedButtonView(size: 30, - icon: .sf("minus"), - text: nil, - backgroundColor: Color(.red), - backgroundColorWhenOn: Color(.red), - isOn: false, - action: defaultAction) - .padding() - } - .previewLayout(.sizeThatFits) - .previewDisplayName("Static example (2) in light mode") - HStack { - RoundedButtonView(icon: .sf("mic.slash.fill"), - text: "mute", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(.systemFill), - isOn: false, - action: defaultAction) - .padding() - RoundedButtonView(icon: .sf("mic.slash.fill"), - text: "mute", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: true, - action: defaultAction) - .padding() - } - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Static example in dark mode") - RoundedButtonMockView(object: MockObject()) - .buttonStyle(CallSettingButtonStyle()) - .padding() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .light) - .previewDisplayName("Dynamic example in light mode with call setting style") - RoundedButtonMockView(object: MockObject()) - .buttonStyle(CallSettingButtonStyle()) - .padding() - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Dynamic example in dark mode with call setting style") - HStack { - RoundedButtonView(icon: .png("bluetooth"), - text: "audio", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(.systemFill), - isOn: false, - action: defaultAction) - .padding() - RoundedButtonView(icon: .png("bluetooth"), - text: "audio", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: true, - action: defaultAction) - .padding() - } - .previewLayout(.sizeThatFits) - .background(Color(.systemBackground)) - .environment(\.colorScheme, .dark) - .previewDisplayName("Static bluetooth example in dark mode") - } - } - - private static func defaultAction() { - debugPrint("Button tapped") - } -} - - -fileprivate class MockObject: ObservableObject { - @Published private(set) var isOn: Bool = false - func toggle() { - debugPrint("Toggle!") - isOn.toggle() - } -} - - -fileprivate struct RoundedButtonMockView: View { - @ObservedObject var object: MockObject - var body: some View { - RoundedButtonView(icon: .sf("mic.slash.fill"), - text: object.isOn ? "unmute" : "mute", - backgroundColor: Color(.systemFill), - backgroundColorWhenOn: Color(AppTheme.shared.colorScheme.olvidLight), - isOn: object.isOn, - action: object.toggle) - } -} diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/VoIPNotification.swift b/iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/VoIPNotification.swift index 188e9cb3..e3530370 100644 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/VoIPNotification.swift +++ b/iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/VoIPNotification.swift @@ -36,34 +36,26 @@ fileprivate struct OptionalWrapper { } enum VoIPNotification { - case userWantsToKickParticipant(call: GenericCall, callParticipant: CallParticipant) - case userWantsToAddParticipants(call: GenericCall, contactIds: [OlvidUserId]) - case callHasBeenUpdated(callUUID: UUID, updateKind: CallUpdateKind) - case callParticipantHasBeenUpdated(callParticipant: CallParticipant, updateKind: CallParticipantUpdateKind) - case reportCallEvent(callUUID: UUID, callReport: CallReport, groupId: GroupIdentifierBasedOnObjectID?, ownedCryptoId: ObvCryptoId) - case showCallViewControllerForAnsweringNonCallKitIncomingCall(incomingCall: GenericCall) + case reportCallEvent(callUUID: UUID, callReport: CallReport, groupId: GroupIdentifier?, ownedCryptoId: ObvCryptoId) + case newCallToShow(model: OlvidCallViewController.Model) case noMoreCallInProgress + case callWasEnded(uuidForCallKit: UUID) case serverDoesNotSupportCall - case newOutgoingCall(newOutgoingCall: GenericCall) - case newIncomingCall(newIncomingCall: GenericCall) case showCallView case hideCallView - case anIncomingCallShouldBeShownToUser(newIncomingCall: GenericCall) + case newWebRTCMessageToSend(webrtcMessage: WebRTCMessageJSON, contactID: TypeSafeManagedObjectID, forStartingCall: Bool) + case newOwnedWebRTCMessageToSend(ownedCryptoId: ObvCryptoId, webrtcMessage: WebRTCMessageJSON) private enum Name { - case userWantsToKickParticipant - case userWantsToAddParticipants - case callHasBeenUpdated - case callParticipantHasBeenUpdated case reportCallEvent - case showCallViewControllerForAnsweringNonCallKitIncomingCall + case newCallToShow case noMoreCallInProgress + case callWasEnded case serverDoesNotSupportCall - case newOutgoingCall - case newIncomingCall case showCallView case hideCallView - case anIncomingCallShouldBeShownToUser + case newWebRTCMessageToSend + case newOwnedWebRTCMessageToSend private var namePrefix: String { String(describing: VoIPNotification.self) } @@ -76,45 +68,21 @@ enum VoIPNotification { static func forInternalNotification(_ notification: VoIPNotification) -> NSNotification.Name { switch notification { - case .userWantsToKickParticipant: return Name.userWantsToKickParticipant.name - case .userWantsToAddParticipants: return Name.userWantsToAddParticipants.name - case .callHasBeenUpdated: return Name.callHasBeenUpdated.name - case .callParticipantHasBeenUpdated: return Name.callParticipantHasBeenUpdated.name case .reportCallEvent: return Name.reportCallEvent.name - case .showCallViewControllerForAnsweringNonCallKitIncomingCall: return Name.showCallViewControllerForAnsweringNonCallKitIncomingCall.name + case .newCallToShow: return Name.newCallToShow.name case .noMoreCallInProgress: return Name.noMoreCallInProgress.name + case .callWasEnded: return Name.callWasEnded.name case .serverDoesNotSupportCall: return Name.serverDoesNotSupportCall.name - case .newOutgoingCall: return Name.newOutgoingCall.name - case .newIncomingCall: return Name.newIncomingCall.name case .showCallView: return Name.showCallView.name case .hideCallView: return Name.hideCallView.name - case .anIncomingCallShouldBeShownToUser: return Name.anIncomingCallShouldBeShownToUser.name + case .newWebRTCMessageToSend: return Name.newWebRTCMessageToSend.name + case .newOwnedWebRTCMessageToSend: return Name.newOwnedWebRTCMessageToSend.name } } } private var userInfo: [AnyHashable: Any]? { let info: [AnyHashable: Any]? switch self { - case .userWantsToKickParticipant(call: let call, callParticipant: let callParticipant): - info = [ - "call": call, - "callParticipant": callParticipant, - ] - case .userWantsToAddParticipants(call: let call, contactIds: let contactIds): - info = [ - "call": call, - "contactIds": contactIds, - ] - case .callHasBeenUpdated(callUUID: let callUUID, updateKind: let updateKind): - info = [ - "callUUID": callUUID, - "updateKind": updateKind, - ] - case .callParticipantHasBeenUpdated(callParticipant: let callParticipant, updateKind: let updateKind): - info = [ - "callParticipant": callParticipant, - "updateKind": updateKind, - ] case .reportCallEvent(callUUID: let callUUID, callReport: let callReport, groupId: let groupId, ownedCryptoId: let ownedCryptoId): info = [ "callUUID": callUUID, @@ -122,29 +90,32 @@ enum VoIPNotification { "groupId": OptionalWrapper(groupId), "ownedCryptoId": ownedCryptoId, ] - case .showCallViewControllerForAnsweringNonCallKitIncomingCall(incomingCall: let incomingCall): + case .newCallToShow(model: let model): info = [ - "incomingCall": incomingCall, + "model": model, ] case .noMoreCallInProgress: info = nil - case .serverDoesNotSupportCall: - info = nil - case .newOutgoingCall(newOutgoingCall: let newOutgoingCall): - info = [ - "newOutgoingCall": newOutgoingCall, - ] - case .newIncomingCall(newIncomingCall: let newIncomingCall): + case .callWasEnded(uuidForCallKit: let uuidForCallKit): info = [ - "newIncomingCall": newIncomingCall, + "uuidForCallKit": uuidForCallKit, ] + case .serverDoesNotSupportCall: + info = nil case .showCallView: info = nil case .hideCallView: info = nil - case .anIncomingCallShouldBeShownToUser(newIncomingCall: let newIncomingCall): + case .newWebRTCMessageToSend(webrtcMessage: let webrtcMessage, contactID: let contactID, forStartingCall: let forStartingCall): + info = [ + "webrtcMessage": webrtcMessage, + "contactID": contactID, + "forStartingCall": forStartingCall, + ] + case .newOwnedWebRTCMessageToSend(ownedCryptoId: let ownedCryptoId, webrtcMessage: let webrtcMessage): info = [ - "newIncomingCall": newIncomingCall, + "ownedCryptoId": ownedCryptoId, + "webrtcMessage": webrtcMessage, ] } return info @@ -175,59 +146,23 @@ enum VoIPNotification { } } - static func observeUserWantsToKickParticipant(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (GenericCall, CallParticipant) -> Void) -> NSObjectProtocol { - let name = Name.userWantsToKickParticipant.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let call = notification.userInfo!["call"] as! GenericCall - let callParticipant = notification.userInfo!["callParticipant"] as! CallParticipant - block(call, callParticipant) - } - } - - static func observeUserWantsToAddParticipants(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (GenericCall, [OlvidUserId]) -> Void) -> NSObjectProtocol { - let name = Name.userWantsToAddParticipants.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let call = notification.userInfo!["call"] as! GenericCall - let contactIds = notification.userInfo!["contactIds"] as! [OlvidUserId] - block(call, contactIds) - } - } - - static func observeCallHasBeenUpdated(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (UUID, CallUpdateKind) -> Void) -> NSObjectProtocol { - let name = Name.callHasBeenUpdated.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let callUUID = notification.userInfo!["callUUID"] as! UUID - let updateKind = notification.userInfo!["updateKind"] as! CallUpdateKind - block(callUUID, updateKind) - } - } - - static func observeCallParticipantHasBeenUpdated(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (CallParticipant, CallParticipantUpdateKind) -> Void) -> NSObjectProtocol { - let name = Name.callParticipantHasBeenUpdated.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let callParticipant = notification.userInfo!["callParticipant"] as! CallParticipant - let updateKind = notification.userInfo!["updateKind"] as! CallParticipantUpdateKind - block(callParticipant, updateKind) - } - } - - static func observeReportCallEvent(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (UUID, CallReport, GroupIdentifierBasedOnObjectID?, ObvCryptoId) -> Void) -> NSObjectProtocol { + static func observeReportCallEvent(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (UUID, CallReport, GroupIdentifier?, ObvCryptoId) -> Void) -> NSObjectProtocol { let name = Name.reportCallEvent.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in let callUUID = notification.userInfo!["callUUID"] as! UUID let callReport = notification.userInfo!["callReport"] as! CallReport - let groupIdWrapper = notification.userInfo!["groupId"] as! OptionalWrapper + let groupIdWrapper = notification.userInfo!["groupId"] as! OptionalWrapper let groupId = groupIdWrapper.value let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId block(callUUID, callReport, groupId, ownedCryptoId) } } - static func observeShowCallViewControllerForAnsweringNonCallKitIncomingCall(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (GenericCall) -> Void) -> NSObjectProtocol { - let name = Name.showCallViewControllerForAnsweringNonCallKitIncomingCall.name + static func observeNewCallToShow(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (OlvidCallViewController.Model) -> Void) -> NSObjectProtocol { + let name = Name.newCallToShow.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let incomingCall = notification.userInfo!["incomingCall"] as! GenericCall - block(incomingCall) + let model = notification.userInfo!["model"] as! OlvidCallViewController.Model + block(model) } } @@ -238,26 +173,18 @@ enum VoIPNotification { } } - static func observeServerDoesNotSupportCall(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { - let name = Name.serverDoesNotSupportCall.name + static func observeCallWasEnded(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (UUID) -> Void) -> NSObjectProtocol { + let name = Name.callWasEnded.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - block() + let uuidForCallKit = notification.userInfo!["uuidForCallKit"] as! UUID + block(uuidForCallKit) } } - static func observeNewOutgoingCall(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (GenericCall) -> Void) -> NSObjectProtocol { - let name = Name.newOutgoingCall.name - return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let newOutgoingCall = notification.userInfo!["newOutgoingCall"] as! GenericCall - block(newOutgoingCall) - } - } - - static func observeNewIncomingCall(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (GenericCall) -> Void) -> NSObjectProtocol { - let name = Name.newIncomingCall.name + static func observeServerDoesNotSupportCall(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping () -> Void) -> NSObjectProtocol { + let name = Name.serverDoesNotSupportCall.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let newIncomingCall = notification.userInfo!["newIncomingCall"] as! GenericCall - block(newIncomingCall) + block() } } @@ -275,11 +202,22 @@ enum VoIPNotification { } } - static func observeAnIncomingCallShouldBeShownToUser(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (GenericCall) -> Void) -> NSObjectProtocol { - let name = Name.anIncomingCallShouldBeShownToUser.name + static func observeNewWebRTCMessageToSend(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (WebRTCMessageJSON, TypeSafeManagedObjectID, Bool) -> Void) -> NSObjectProtocol { + let name = Name.newWebRTCMessageToSend.name + return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in + let webrtcMessage = notification.userInfo!["webrtcMessage"] as! WebRTCMessageJSON + let contactID = notification.userInfo!["contactID"] as! TypeSafeManagedObjectID + let forStartingCall = notification.userInfo!["forStartingCall"] as! Bool + block(webrtcMessage, contactID, forStartingCall) + } + } + + static func observeNewOwnedWebRTCMessageToSend(object obj: Any? = nil, queue: OperationQueue? = nil, block: @escaping (ObvCryptoId, WebRTCMessageJSON) -> Void) -> NSObjectProtocol { + let name = Name.newOwnedWebRTCMessageToSend.name return NotificationCenter.default.addObserver(forName: name, object: obj, queue: queue) { (notification) in - let newIncomingCall = notification.userInfo!["newIncomingCall"] as! GenericCall - block(newIncomingCall) + let ownedCryptoId = notification.userInfo!["ownedCryptoId"] as! ObvCryptoId + let webrtcMessage = notification.userInfo!["webrtcMessage"] as! WebRTCMessageJSON + block(ownedCryptoId, webrtcMessage) } } diff --git a/iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/VoIPNotification.yml b/iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/VoIPNotification.yml deleted file mode 100644 index 4d1dda61..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/VoIP/VoIPNotification/VoIPNotification.yml +++ /dev/null @@ -1,47 +0,0 @@ -import: - - Foundation - - CoreData - - ObvTypes - - ObvEngine - - OlvidUtils - - ObvCrypto - - ObvUICoreData -notifications: -- name: userWantsToKickParticipant - params: - - {name: call, type: GenericCall} - - {name: callParticipant, type: CallParticipant} -- name: userWantsToAddParticipants - params: - - {name: call, type: GenericCall} - - {name: contactIds, type: [OlvidUserId]} -- name: callHasBeenUpdated - params: - - {name: callUUID, type: UUID} - - {name: updateKind, type: CallUpdateKind} -- name: callParticipantHasBeenUpdated - params: - - {name: callParticipant, type: CallParticipant} - - {name: updateKind, type: CallParticipantUpdateKind} -- name: reportCallEvent - params: - - {name: callUUID, type: UUID} - - {name: callReport, type: CallReport} - - {name: groupId, type: "GroupIdentifierBasedOnObjectID?"} - - {name: ownedCryptoId, type: ObvCryptoId} -- name: showCallViewControllerForAnsweringNonCallKitIncomingCall - params: - - {name: incomingCall, type: GenericCall} -- name: noMoreCallInProgress -- name: serverDoesNotSupportCall -- name: newOutgoingCall - params: - - {name: newOutgoingCall, type: GenericCall} -- name: newIncomingCall - params: - - {name: newIncomingCall, type: GenericCall} -- name: showCallView -- name: hideCallView -- name: anIncomingCallShouldBeShownToUser - params: - - {name: newIncomingCall, type: GenericCall} diff --git a/iOSClient/ObvMessenger/ObvMessenger/en.lproj/Localizable.strings b/iOSClient/ObvMessenger/ObvMessenger/en.lproj/Localizable.strings deleted file mode 100644 index 1e249c72..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/en.lproj/Localizable.strings +++ /dev/null @@ -1,2764 +0,0 @@ -"Olvid" = "Olvid"; - -/* No comment provided by engineer. */ -"%@ and" = "%@ and"; - -/* Invitation details */ -"%@ wants to introduce you to %@. If you do trust %@ for this, you may accept this invitation and %@ will soon appear in your contacts, with no further actions from your part (provided that %@ also accepts the invitation). If you don't trust %@ or if you simply do not want to be introduced to %@ you can ignore this invitation (neither %@ nor %@ will be notified of this)." = "%1$@ would like to introduce you to %2$@. If you accept, %2$@ will be part of your contacts and you will have a private discussion with them."; - -/* No comment provided by engineer. */ -"A file named %@ already exists within the following location: -On My iPhone > Olvid" = "A file named %@ already exists within the following location: -On My iPhone > Olvid"; - -/* Button title */ -"Abort" = "Abort"; - -/* Accept acction - Button title */ -"Accept" = "Accept"; - -/* Invitation details */ -"All the members of the group created by %@ have accepted the invitation." = "All the members of the group created by %@ have accepted the invitation."; - -/* Notification title */ -"An invitation requires your attention!" = "An invitation requires your attention!"; - -/* Action of alert - Action title - Button title - Cancel */ -"Cancel" = "Cancel"; - -/* Title before the list of group members. */ -"Confirmed Group Members:" = "Confirmed Group Members:"; - -/* Title before a list of group members. */ -"Confirmed Members:" = "Confirmed Members:"; - -/* Tab title - Title of the AllContactsViewController */ -"Contacts" = "Contacts"; - -/* Create word, capitalized */ -"Create" = "Create"; - -/* Perform the attachment deletion */ -"Delete attachment" = "Delete attachment"; - -/* Action title */ -"Delete contact" = "Delete contact"; - -/* Action of alert */ -"Delete file" = "Delete file"; - -/* Title of alert */ -"Delete File" = "Delete File"; - -/* Title of alert */ -"Delete Message" = "Delete Message"; - -/* Title of alert */ -"Delete Message and Attachments" = "Delete Message and Attachments"; - -/* Alert title */ -"Delete this contact?" = "Delete this user?"; - -/* Invitation subtitle */ -"Digits confirmed" = "Code confirmed"; - -/* Action title */ -"Discard group creation" = "Discard group creation"; - -/* Action title */ -"Discard invitation" = "Decline invitation"; - -/* Action title */ -"Discard this group creation?" = "Discard this group creation?"; - -/* Action title */ -"Discard this invitation?" = "Decline this invitation?"; - -/* Discussions word, capitalized */ -"Discussions" = "Discussions"; - -/* Action title */ -"Do not discard group creation" = "Do not discard group creation"; - -/* Action title */ -"Do not discard invitation" = "Do not decline invitation"; - -/* Alert message */ -"Do you want to send an invitation to %@?" = "Do you want add %@ to your contacts?"; - -/* Title of the EditDisplayNameViewController */ -"Edit your name" = "Edit your name"; - -/* Invitation subtitle */ -"Exchange digits" = "Exchange your codes"; - -/* Action of alert */ -"Export to the system's File App" = "Export to the system's File App"; - -/* Title of alert */ -"File Management" = "File Management"; - -/* Invitation subtitle */ -"Group Created" = "Group Created"; - -/* Title before the list of group members. */ -"Group Members:" = "Group Members:"; - -/* Invitation details */ -"If %@ accepts your invitation, you will be notified here." = "Please wait for %@ to confirm."; - -/* Button title */ -"Ignore" = "Ignore"; - -/* Title of the table listing all identities but the one to introduce */ -"Introduce %@ to..." = "Introduce %@ to..."; - -/* Invitation subtitle */ -"Introduction Accepted" = "Introduction Accepted"; - -/* Alert title */ -"Invitation" = "Invitation"; - -/* Invitation subtitle */ -"Invitation accepted" = "Invitation in progress"; - -/* Invitation subtitle */ -"Invitation received" = "Invitation in progress"; - -/* Invitation subtitle */ -"Invitation to join a group" = "Invitation to join a group"; - -"Invitations" = "Invitations"; - -/* Title of the table listing all members of a discussion group. */ -"Members of %@" = "Members of %@"; - -/* Invitation subtitle */ -"MUTUAL_TRUST_CONFIRMED" = "User added to your contacts"; - -/* Notification title */ -"Mutual trust confirmed!" = "Secure channel in progress"; - -/* Title of the MyIdViewController */ -"My Id" = "My profile"; - -/* Notification body */ -"n more attachments" = "n more attachments"; - -/* Notification title */ -"New Invitation!" = "New Invitation!"; -"New invitation" = "New invitation"; - -/* Notification title */ -"New message from %@" = "New message from %@"; - -/* Invitation subtitle */ -"New Suggested Introduction" = "Contact introduction"; - -/* Action title */ -"No" = "No"; - -/* Action title - Button title */ -"Ok" = "Ok"; - -/* Invitation subtitle */ -"Ongoing Group Creation" = "Ongoing Group Creation"; - -/* Title before a list of group members. */ -"Pending Members:" = "Pending Members:"; - -/* Action of alert */ -"Perform the deletion" = "Perform the deletion"; - -/* Perform the introduction */ -"Perform the introduction" = "Perform the introduction"; - -/* No comment provided by engineer. */ -"The file %@ can now be found in the File App, within the following location: -On My iPhone > Olvid" = "The file %@ can now be found in the File App, within the following location: -On My iPhone > Olvid"; - -/* Invitation details */ -"The invitation appears to come from %@. If you accept this invitation you will guided through the process allowing to make sure that this is the case." = "%@ would like to be part of your contacts. Please \"ACCEPT\" if you wish to proceed. Otherwise, you can \"IGNORE\"."; - -/* Action message */ -"The other group members will not be notified." = "The other group members will not be notified."; - -/* Alert message */ -"The scanned identity is already part of your trusted contacts 🙌. Do you still wish to proceed?" = "The scanned identity is already part of your trusted contacts 🙌. Do you still wish to proceed?"; - -"%@ is already part of your trusted contacts 🙌. Do you still wish to proceed?" = "%@ is already part of your trusted contacts 🙌. Do you still wish to proceed?"; - -/* Alert message */ -"The scanned identity is one of your own 😇." = "The scanned identity is one of your own 😇."; - -/* Invitation details */ -"We are bootstraping the secure channel between you and %@. Please note that this requires %@'s device to be online." = "We are bootstraping the secure channel between you and %@. Please wait..."; - -/* Invitation details */ -"MUTUAL_TRUST_CONFIRMED_DETAILS_%@" = "Well done! %1$@ is now part of your contacts and you can have a private discussion with them."; - -/* Message of alert */ -"What do you want to do with this file?" = "What do you want to do with this file?"; - -/* Action title */ -"Yes" = "Yes"; - -/* Invitation details */ -"You accepted to be introduced to %@ by %@. Please wait until %@ also accepts this invitation." = "You accepted to be introduced to %@ by %@. Please wait until %@ also accepts this invitation."; - -/* Message of alert */ -"You are about to delete a file." = "You are about to delete a file."; - -/* Invitation details */ -"YOU_ARE_INVITED_TO_JOIN_A_GROUP_CREATED_BY_%@_EXPLANATION" = "You are invited to join a group created by %@."; - -/* Invitation details */ -"You have accepted to join a group created by %@." = "You have accepted to join a group created by %@."; - -/* Invitation details */ -"You have successfully entered the 4 digits of %1$@. You should communicate your four digits to %1$@. Your digits are %2$@." = "You successfully entered the code of %1$@. Please communicate them your code (%2$@).\n\nPrefer a face-to-face meeting or a phone call (avoid email, SMS, or any other messenger)."; - -/* Notification body */ -"You now appear in %@'s contacts list. A secure channel is being established. When this is done, you will be able to exchange confidential messages and more!" = "You now appear in %@'s contacts list. A secure channel is being established. When this is done, you will be able to exchange confidential messages and more!"; - -/* Notification body */ -"You receive a new invitation from %@. You can accept or silently discard it." = "You received a new invitation from %@. You can accept or silently discard it."; - -/* Invitation details */ -"You should communicate your four digits to %@. Your digits are %@. You should also enter the 4 digits of %@." = "To add %1$@ to your contacts, please give them your code (%2$@) and enter theirs. - -Please make sure that %1$@ is indeed the one giving you this code: prefer a face-to-face meeting or a phone call (avoid email, SMS, or any other messenger)."; - -/* Notification body */ -"Your are one step away to create a secure channel with %@!" = "Your are one step away to create a secure channel with %@!"; - -/* Invitation subtitle */ -"Your invitation was sent" = "Invitation in progress"; - -"New Suggested Introduction" = "New Suggested Introduction"; - -"You are invited to join a group created by %@." = "You are invited to join a group created by %@."; - -/* Placeholder text within the text view. Keep it short. */ -"Type a confidential message..." = "Write message"; - -/* Title of the view controller allowing to edit a contact */ -"Contact Edition" = "Contact Edition"; - -/* No comment provided by engineer. */ -"One-to-one verification" = "One-to-one verification"; - -/* No comment provided by engineer. */ -"Introduced by %@" = "Introduced by %@"; - -/* No comment provided by engineer. */ -"Introduced by a former contact" = "Introduced by a former contact"; - -/* No comment provided by engineer. */ -"Introduced as part of a group discussion" = "Introduced as part of a group discussion"; - -/* Must be short, label for the company name */ -"Company" = "Company"; - -/* No comment provided by engineer. */ -"Please scan an Olvid configuation QR code." = "Please scan an Olvid configuation QR code."; - -/* No comment provided by engineer. */ -"Scan server settings" = "Scan server settings"; - -/* No comment provided by engineer. */ -"URL" = "URL"; - -/* Indicates a mandatory text field */ -"mandatory" = "mandatory"; - -/* View controller title */ -"Almost there!" = "Almost there!"; - -/* No comment provided by engineer. */ -"API Key" = "API Key"; - -/* No comment provided by engineer. */ -"None" = "None"; - -/* No comment provided by engineer. */ -"Please specify an identifier that will make it possible for other users to identify you." = "Please specify an identifier that will make it possible for other users to identify you."; - -/* No comment provided by engineer. */ -"Your Id" = "Your ID"; - -/* Must be short, label for first name */ -"First" = "First"; - -/* View controller title */ -"Congratulations!" = "Congratulations!"; - -/* Must be short, label for last name */ -"Last" = "Last"; - -/* No comment provided by engineer. */ -"Server Settings" = "Server Settings"; - -/* Indicates an optional text field */ -"optional" = "optional"; - -/* View controller title */ -"Welcome" = "Welcome"; - -/* No comment provided by engineer. */ -"Re-Scan server settings" = "Scan server settings again"; - -/* No comment provided by engineer. */ -"In order to automatically configure Olvid, you can either scan a configuration QR code or click on the link you received by email." = "In order to automatically configure Olvid, you can either scan a configuration QR code or configuration click on the link you should have received by email."; - -/* Chip title */ -"Updated" = "Updated"; - -/* Chip title */ -"Action Required" = "Action Required"; - -/* Chip title */ -"New" = "New"; - -/* Title */ -"New contact" = "New contact"; - -/* UIAlertController title */ -"Mutual Introduction" = "Mutual Introduction"; - -/* Title of the UIAlertAction allowing to add a document as an attachment within a message to send */ -"Document" = "Document"; - -"Documents" = "Documents"; - -/* Title of the UIAlertAction allowing to add a photo as an attachment within a message to send */ -"Photo & Video Library" = "Photo & Video Library"; - -/* Title of the UIAlertController allowing to add an attachment within a message to send. */ -"Add attachment" = "Add attachment"; - -/* UIAlertController message */ -"You are about to introduce %@ to %@" = "You are about to introduce %@ to %@"; - -/* Alert message */ -"Do you really wish to restart the channel establishment?" = "Do you really wish to restart the channel establishment?"; - -/* Alert title */ -"Restart channel establishment" = "Restart channel establishment"; - -/* Alert title */ -"The channel establishment was restarted" = "The channel establishment was restarted"; - -/* Alert title */ -"At least one of the channel establishment failed to restart" = "At least one of the channel establishment failed to restart"; - -/* Title */ -"Background App Refresh is disabled" = "Background App Refresh is disabled"; - -/* View Controller title */ -"Misconfiguration" = "Misconfiguration"; - -/* Long explanation */ -"Olvid requires the Background App Refresh to be turned on. Unfortunately it appears to be off. If you wish to use Olvid, please turn it back on. - -The reason why this is required lies in the fact that Olvid regularly executes complex, multipass, cryptographic protocols in order to achieve a security level no other app can compete with. These protocols happen in the background and could not work if you had to manually launch Olvid each time a cryptographic computation has to be performed." = "Olvid requires the Background App Refresh setting to be turned on. Unfortunately it appears to be off."; - -/* Button title */ -"Open Settings" = "Open Settings"; - -/* Long solution */ -"Please open settings and enable Background App Refresh. Hint: If the button is grayed out, you may have turned off the general setting which can be found within:\n\n Settings > General > Background App Refresh" = "Please open settings and enable Background App Refresh.\n\nHint: If the button is grayed out, you may have turned off the general setting which can be found within: - -Settings > General > Background App Refresh"; - -/* Title */ -"Problem" = "Problem"; - -/* Title */ -"Solution" = "Solution"; - -/* Alert title */ -"Bad QR code" = "Bad QR code"; - -/* Alert title */ -"Bad server" = "Bad server"; - -/* Section title */ -"Enter your personal details" = "Enter your personal details"; - -/* No comment provided by engineer. */ -"Scan" = "Scan"; - -/* View controller title */ -"Scan QR code" = "Scan QR code"; - -/* No comment provided by engineer. */ -"Server" = "Server"; - -/* Section title */ -"Server settings" = "Server settings"; - -/* Alert message */ -"The imported API Key seems to be for a different server." = "The imported API Key seems to be for a different server."; - -/* Alert message */ -"The scanned QR code does not appear to be an Olvid identity." = "The scanned QR code does not appear to be an Olvid identity."; - -/* Alert message */ -"This QR code does not allow to configure Olvid. Please use an Olvid configuration QR code." = "This QR code does not allow to configure Olvid. Please use an Olvid configuration QR code."; - -/* Alert action title */ -"Delete all messages" = "Delete all messages"; - -/* Alert title */ -"Delete all messages?" = "Delete all messages?"; - -/* Alert message */ -"Do you wish to delete all the messages within this discussion? This action is irrevisble." = "Do you wish to delete all the messages within this discussion? This action is irreversible."; - -/* Subtitle displayed within a discussion cell when there is no message preview to display */ -"No message yet." = "No message yet."; - -/* Notification body */ -"%@ wants to introduce you to %@" = "%@ wants to introduce you to %@"; - -/* Text used within the footer in a discussion. */ -"Your messages will be automatically sent once a secure channel is established for this discussion. Until then, they will remain on hold." = "Your messages will be automatically sent once a secure channel is established for this discussion. Until then, they will remain on hold."; - -/* Text used within the footer in a discussion. */ -"Your messages will be automatically sent once a contact accepts to join this group discussion. Until then, they will remain on hold." = "You cannot write any message in this discussion until a contact accepts to join this group."; - -/* System message displayed within a group discussion */ -"%@_ACCEPTED_TO_JOIN_THIS_GROUP_AT_%@" = "%@ has joined this group - %@"; - -"%@_ACCEPTED_TO_JOIN_THIS_GROUP" = "%@ has joined this group"; - -/* Discussion word, capitalized */ -"Discussion" = "Discussion"; - -/* Groups word, capitalized */ -"Groups" = "Groups"; - -/* Camera word, capitalized */ -"Camera" = "Camera"; - -/* Stack view title */ -"Members" = "Members"; - -/* Stack view title */ -"Pending members" = "Pending members"; - -/* Can serve as a name in the sentence \"%@ accepted to join this group\" */ -"A (now deleted) contact" = "Deleted contact"; - -/* Alert title */ -"Export Picture" = "Export Picture"; - -/* Details word, capitalized */ -"Details" = "Details"; - -/* Table View section title */ -"Groups created" = "Groups created"; - -/* Table View section title */ -"Groups joined" = "Groups joined"; - -/* Copy word, capitalized */ -"Copy" = "Copy"; - -/* Reply word, capitalized */ -"Reply" = "Reply"; - -/* Delete word, capitalized */ -"Delete" = "Delete"; - -/* Title of the contact details view controller */ -"Contact Details" = "Contact details"; - -/* Introduce word, capitalized */ -"Introduce" = "Introduce"; - -/* Type title of a owned Olvid card */ -"Olvid Card" = "Olvid Card"; - -/* Button title */ -"Accept published version" = "Accept published version"; - -/* Alert title */ -"Name update available" = "Name update available"; - -/* No comment provided by engineer. */ -"Set Contact Nickname" = "Set Contact Nickname"; - -/* UIAlertController message */ -"This nickname will only be visible to you and used instead of your contact name within the Olvid interface." = "This nickname will only be visible to you and used instead of your contact name within the Olvid interface."; - -/* UIAlertController action */ -"Remove nickname" = "Remove nickname"; - -/* Message of an alert */ -"The core you entered is incorrect. The code you need to enter is the one displayed on your contact's device." = "The code you entered is incorrect. The one you need to enter is the displayed on your contact's device."; - -/* Title of an alert */ -"Incorrect code" = "Incorrect code"; - -/* Type title of a owned Olvid card */ -"Olvid Card - Trusted" = "Olvid Card - On my iPhone"; - -/* Alert title */ -"Set Group Name" = "Set Group Name"; - -/* Update word, capitalized */ -"Update" = "Update"; - -/* Body */ -"Your contact published a new version of their Olvid card. Both the old and new versions are shown below. - -Click to update yout contact's informations with the new version." = "Your contact updated their Olvid Card. Both the old and new versions are shown below. - -Click to update your contact's informations with the new version."; - -/* Title */ -"New contact details" = "New Olvid Card"; - -/* Type title of a owned Olvid card */ -"Olvid Card - New" = "Olvid Card - New"; - -/* Title of an alert action */ -"Scan another user's QR code" = "Scan another user's QR code"; - -/* Button title */ -"QR code" = "QR code"; - -/* Title of an alert action */ -"Show my QR code" = "Show my QR code"; - -/* Message of an alert */ -"In order to invite another Olvid user, you can either scan their QR code or show them your own QR code." = "In order to add another Olvid user to your contacts, you can send an invitation, scan their QR code, or show them your own QR code."; - -/* Title of an alert */ -"Invite another Olvid user" = "Choose how to add a contact"; - -/* Table View section title */ -"My Olvid Card" = "My profile"; - -/* Advanced word, capitalized */ -"Advanced" = "Advanced"; - -/* button title */ -"Restart Channel Establishment" = "Restart Channel Establishment"; - -/* Invitation details */ -"%@ was added to your contacts following an introduction by %@." = "%@ was added to your contacts following an introduction by %@."; - -/* Proceed word, capitalized */ -"Proceed" = "Proceed"; - -/* Invitation details */ -"%1@ wants to introduce you to %2@. - -Olvid's security policy requires you to re-validate the identity of %2@ by exchanging 4-digit codes with them, or to invite %1@ directly." = "%1@ wants to introduce you to %2@. - -Olvid's security policy requires you to re-validate the identity of %2@ by exchanging 4-digit codes with them, or to invite %1@ directly."; - -/* Button title */ -"Invite %@" = "Invite %@"; - -/* Button title */ -"Exchange digits with %@" = "Exchange codes with %@"; - -/* Invitation details */ -"%1$@ wants to introduce you to %2$@." = "%1$@ wants to introduce you to %2$@."; - -/* Alert title */ -"Your Messages are on hold" = "Your Messages are on hold"; - -/* Must be short, label for the position name within the company */ -"Position" = "Position"; - -/* Settings word, capitalized */ -"Settings" = "Settings"; - -/* Downloads word, capitalized */ -"Downloads" = "Downloads"; - -/* Version word, capitalized */ -"Version" = "Version"; - -/* About word, capitalized */ -"About" = "About"; - -/* Table view group header */ -"Maximum size for automatic downloads" = "Maximum size for automatic downloads"; - -/* Table view group footer */ -"Attachments smaller than the specified size will be automatically downloaded. Larger attachments will require manual download." = "Attachments smaller than the specified size will be automatically downloaded. Larger attachments will require manual download."; - -/* Invitation details */ -"You have joined a group created by %@." = "You have joined a group created by %@."; - -/* Button title allowing to navigation towards a contact group */ -"Show Group" = "Show Group"; - -/* Invitation subtitle */ -"New Group Joined" = "New Group Joined"; - -/* Invitation details */ -"%1$@ is inviting you to a discussion group.\n\nOlvid\'s security policy requires you to re-validate the identity of %1$@ by exchanging 4-digit codes with them." = "%1$@ is inviting you to a discussion group.\n\nOlvid's security policy requires you to re-validate the identity of %1$@ by exchanging 4-digit codes with them."; - -/* Placeholder for group name */ -"Optional description..." = "Optional description..."; - -/* Olvid card corner text */ -"Group Card - New" = "Group Card - New"; - -/* Button title for removing members from an owned contact groupe */ -"Remove Members" = "Remove Members"; - -/* Olvid card corner text */ -"Group Card" = "Group Card"; - -/* Next word, capitalized */ -"Next" = "Next"; - -/* Body */ -"The group owner published a new version of Group Card. Both the old and new versions are shown below.\n\nClick to update the group informations with the new version." = "The group owner published a new version of Group Card. Both the old and new versions are shown below.\n\nClick to update the group informations with the new version."; - -/* Placeholder for group name */ -"Type a discussion group name..." = "Type a discussion group name..."; - -/* Title used above the Table view allowing to choose the new members of a group */ -"Choose Members:" = "Choose Members:"; - -/* Title */ -"New group details" = "New group details"; - -/* System message displayed within a group discussion */ -"%@_LEFT_THIS_GROUP_AT_%@" = "%@ left this group - %@"; - -"%@_LEFT_THIS_GROUP" = "%@ left this group"; - -/* Title group name text field */ -"Group name:" = "Group name:"; - -/* Olvid card corner text */ -"Group Card - Published" = "Group Card - Published"; - -/* Olvid card corner text */ -"Group Card - Unpublished Draft" = "Group Card - Unpublished Draft"; - -/* Button title for inviting new members to an owned contact group */ -"Invite Members" = "Invite Members"; - -/* Olvid card corner text */ -"Group Card - On My iPhone" = "Group Card - On My iPhone"; - -/* Title group description text field */ -"Group description:" = "Group description:"; - -/* Send word, capitalized */ -"Send" = "Send"; - -/* Two lines label indicating that a contact declined a group invitation */ -"Invitation\nDeclined" = "Invitation\nDeclined"; - -/* Alert message */ -"Do you want to send a new invitation to your contact?" = "Do you want to send a new invitation to your contact?"; - -/* Alert title */ -"Reinvite contact?" = "Reinvite contact?"; - -"Invite" = "Invite"; - -"Send invite" = "Send invitation"; - -"Admin" = "Admin"; - -"Paste" = "Paste"; - -"Back" = "Back"; - -"Leave group" = "Leave group"; - -"Your are about to leave a group." = "Your are about to permanently leave a group."; - -"Your are about to permanently delete a group." = "Your are about to permanently delete a group."; - -"Delete group" = "Delete group"; - -"Mark all as read" = "Mark all as read"; - -"MARK_AS_READ" = "Mark as read"; - -"Deleted message" = "Deleted message"; - -"Contact Introduction Performed" = "Contact Introduction Performed"; - -"You successfully introduced %@ to %@" = "You successfully introduced %@ to %@"; - -"Messages posted in this discussion are protected using end-to-end encryption. Their confidentiality, their authenticity, and the identity of their sender are guaranteed through cryptography." = "🔒 Messages posted in this discussion are protected using end-to-end encryption. Their confidentiality, their authenticity, and the identity of their sender are guaranteed through cryptography."; - -/* Disclaimer showed during the onboarding */ -"Please enter a name which will be displayed to your contacts. These details will never be sent to Olvid's servers." = "Please enter a name which will be displayed to your contacts. These details will never be sent to Olvid's servers."; - -"More..." = "More..."; - -"In order to invite another Olvid user, you can copy your identity in order to paste it in an email, sms, and so forth. If you receive an identity, you can paste it here." = "In order to invite another Olvid user, you can copy your identity in order to paste it in an email, sms, and so forth. If you receive the identity of another user, you can paste it here."; - -"Copy your Id" = "Copy your ID"; - -"Paste an Id" = "Paste an ID"; - -/* Alert title */ -"File exported to Files App" = "File exported to Files App"; - -/* Alert title */ -"Contact cannot be deleted for now" = "This user cannot be deleted for now"; - -/* Alert message */ -"You cannot remove %@ from your contacts as both of you belong to some common groups. You will need to leave these groups to proceed." = "You cannot delete the user %@ as both of you belong to some common groups. You will need to leave these groups to proceed."; - -/* Alert message */ -"You are about to remove %1$@ from your contacts. You will no longer be able to exchange messages with them.\n\nReally delete this contact?" = "You are about to delete the user %1$@.\n\nReally delete this contact?"; - -/* Alert message */ -"You are about to remove %1$@ from your contacts. You will no longer be able to exchange messages with them.\n\nNote that %1$@ is a pending member in at least one group you belong to. %1$@ might get added back to your contacts in a near future. You may want to leave these groups to avoid this.\n\nReally delete this contact?" = "You are about to remove %1$@ from your contacts. You will no longer be able to exchange messages with them.\n\nNote that %1$@ is a pending member in at least one group you belong to. %1$@ might get added back to your contacts in a near future. You may want to leave these groups to avoid this.\n\nReally delete this contact?"; - -/* Reject word, capitalized */ -"Reject" = "Reject"; - -/* System message displayed within a group discussion */ -"This contact was deleted from your contacts, either because you did or because this contact deleted you." = "This contact was deleted from your Olvid contacts, either because you did or because this contact deleted you from their own contacts."; - -"Show detailed infos" = "Show detailed infos"; - -"Discard changes" = "Discard changes"; - -"Save changes" = "Save changes"; - -"Copy text" = "Copy text"; - -"Attachments smaller than %@ will be automatically downloaded. Larger attachments will require manual download." = "Attachments smaller than %@ will be automatically downloaded. Larger attachments will require manual download."; - -"ALL_ATTACHMENTS_WILL_BE_AUTOMATICALLY_DOWNLOADED" = "All attachments will be automatically downloaded."; - -"Size" = "Size"; - -"Identity color style" = "Identity color style"; - -"Interface" = "Interface"; - -/* Small string used in tab controller to sort by latest discussions */ -"Latest Discussions" = "Latest"; - -/* Displayed in QuickLook when showing a downloading file */ -"Downloading File..." = "File not downloaded yet 😕"; - -/* Subject used when inviting another user to Olvid, i.e., when sharing ones owned identity using, e.g., an email */ -"%@ invites you to discuss on Olvid" = "%@ would like to discuss with you on Olvid"; - -/* Body used when inviting another user to Olvid, i.e., when sharing ones owned identity using, e.g., an email or message */ -"%@ invites you to discuss on Olvid. To accept, please click the link below:\n\n%@" = "%@ would like to discuss with you on Olvid. To invite them, please click the link below:\n\n%@\n"; - -"Scan document" = "Scan document"; - -"Read" = "Read"; - -"Delivered" = "Delivered"; - -"Sent" = "Sent"; - -"Send Read Receipts" = "Send Read Receipts"; - -"Recent" = "Recent"; - -/* General Read Receipt explanantions */ - -"Your contacts will be notified when you have read their messages. This settting can be overriden on a per discussion basis." = "Your contacts will be notified when you have read their messages. This settting can be overriden on a per discussion basis."; - -"Your contacts won't be notified when you read their messages. This settting can be overriden on a per discussion basis." = "Your contacts won't be notified when you read their messages. This settting can be overriden on a per discussion basis."; - -/* Per discussion Read Receipt explanations */ - -"A read receipt will be sent for each message you read within this discussion." = "Your contacts will be notified when you have read their messages within this discussion."; - -"No read receipt will be sent within this discussion." = "Your contacts won't be notified when you read their messages within this discussion."; - -"Default" = "Default"; - -"DISCUSSION_SETTINGS" = "Discussion settings"; - -"Use application default" = "Use application default"; - -"Privacy" = "Privacy"; - -"LOGIN_WITH_SYSTEM_PASSCODE_TITLE" = "Log in with your device's passcode"; -"LOGIN_WITH_TOUCH_ID_SYSTEM_PASSCODE_TITLE" = "Log in with Touch ID or your device's passcode"; -"LOGIN_WITH_FACE_ID_SYSTEM_PASSCODE_TITLE" = "Log in with Face ID or your device's passcode"; -"LOGIN_WITH_TOUCH_ID_FACE_ID_SYSTEM_PASSCODE_TITLE" = "Log in with Touch ID, Face ID, or your device's passcode"; - -"LOGIN_WITH_CUSTOM_PASSCODE_TITLE" = "Log in with a custom passcode"; -"LOGIN_WITH_TOUCH_ID_CUSTOM_PASSCODE_TITLE" = "Log in with Touch ID or a custom passcode"; -"LOGIN_WITH_TOUCH_ID_FACE_ID_CUSTOM_PASSCODE_TITLE" = "Log in with Touch ID, Face ID, or a custom passcode"; -"LOGIN_WITH_FACE_ID_CUSTOM_PASSCODE_TITLE" = "Log in with Face ID or a custom passcode"; - -"LOGIN_WITH_SYSTEM_PASSCODE_EXPLANATION" = "This option allows you to protect Olvid using your device's passcode."; -"LOGIN_WITH_TOUCH_ID_SYSTEM_PASSCODE_EXPLANATION" = "This option allows you to protect Olvid using Touch ID or your device's passcode"; -"LOGIN_WITH_FACE_ID_SYSTEM_PASSCODE_EXPLANATION" = "This option allows you to protect Olvid using Face ID or your device's passcode"; -"LOGIN_WITH_TOUCH_ID_FACE_ID_SYSTEM_PASSCODE_EXPLANATION" = "This option allows you to protect Olvid using Touch ID, Face ID, or your device's passcode"; - -"NO_AUTHENTICATION_EXPLANATION" = "Olvid's screen won't be locked."; - -"LOGIN_WITH_CUSTOM_PASSCODE_EXPLANATION" = "This option allows you to protect Olvid using a custom passcode."; -"LOGIN_WITH_TOUCH_ID_CUSTOM_PASSCODE_EXPLANATION" = "This option allows you to protect Olvid using Touch ID or a custom passcode"; -"LOGIN_WITH_FACE_ID_CUSTOM_PASSCODE_EXPLANATION" = "This option allows you to protect Olvid using Face ID or a custom passcode"; -"LOGIN_WITH_TOUCH_ID_FACE_ID_CUSTOM_PASSCODE_EXPLANATION" = "This option allows you to protect Olvid using Touch ID, Face ID, or a custom passcode"; - -"Authenticate" = "Authenticate"; - -"Please authenticate to start Olvid" = "Please authenticate to start Olvid"; - -"After" = "After"; - -"Immediately" = "Immediately"; - -"Please authenticate in order to change this setting." = "Please authenticate in order to change this setting."; - -"No passcode set on this iPhone." = "No passcode set on this iPhone."; - -"😧 Oups..." = "😧 Oops..."; - -/* Used within a HUD to indicate to the user that she should choose a discussion for AirDrop'ed files */ -"Choose Discussion" = "Choose a Discussion"; - -/* Title of the screen displaying informations about a specific message within a discussion */ -"MESSAGE_INFO" = "Message informations"; - -"Rich link preview" = "Rich link preview"; - -"Never" = "Never"; - -"Sent messages only" = "Sent messages only"; - -"Always" = "Always"; - -"Clear cache" = "Clear cache"; - -"Cache management" = "Cache management"; - -"Websocket status" = "Websocket connexion status"; - -"Hide notifications content" = "Hide content"; - -"Hide notifications" = "Hide notifications"; - -"Olvid requires your attention" = "Olvid requires your attention."; - -"Show" = "Show"; - -"Partially" = "Partially"; - -"Notifications will preview new messages and new invitations content." = "Notifications will preview new messages and new invitations content."; - -"Notifications will not preview any message content nor any invitation content. Instead, they will display the number of new messages as well as the number of new invitations." = "Notifications will not preview any message content nor any invitation content. It will be possible to distinguish between a new message notification and new invitation notification."; - -"Notifications will not provide any information about messages nor invitations. A minimal static notification will show to indicate that Olvid requires your attention." = "Notifications will not provide any information about messages nor invitations. A minimal static notification will show to indicate that Olvid requires your attention."; - -"Completely" = "Completely"; - -"New message" = "New message"; - -"Tap to see the message" = "Tap to see the message."; - -"Tap to see the invitation" = "Tap to see the invitation."; - -"Notifications" = "Notifications"; - -"Screen Lock" = "Screen Lock"; - -"Backup" = "Backup"; - -/* Explanation shown on on top of a backup key shown to the user. */ -"The backup key below will be used to encrypt all your Olvid backups. Please keep it in a safe place.\nOlvid will periodically check you are able to enter this key to ensure you do not lose access to your backups." = "The backup key below will be used to encrypt all your Olvid backups. Please keep it in a safe place.\nOlvid will periodically check you are able to enter this key to ensure you do note lose access to your backups."; - -/* Explanation shown below a backup key shown to the user. */ -"This is the only time this key will be displayed. If you lose it, you will need to generate a new one." = "This is the only time this key will be displayed. If you lose it, you will need to generate a new one."; - -/* "Button title shown to the user" */ -"I have copied the key" = "I have copied the key"; - -/* Title of the view showing a new backup key */ -"New backup key" = "New backup key"; - -"GENERATE_NEW_BACKUP_KEY" = "Generate a backup key"; - -"VERIFIY_OR_GENERATE_NEW_BACKUP_KEY" = "Verify or generate new backup key"; - -"Decline" = "Decline"; - -/* Table view section footer */ -"NO_BACKUP_KEY_GENERATED_YET" = "In order to perform encrypted backups of your contacts, groups, and settings, you first need to generate a backup key 🔐. No backup key has been generated yet."; - -/* Table view section header */ -"GENERATE_BACKUP_KEY_SECTION_TITLE" = "Backup key"; - -/* Table view section header */ -"MANUAL_BACKUP_TITLE" = "Manual backup"; - -/* Button title allowing to backup now */ -"BACKUP_AND_SHARE_NOW" = "Backup and share now"; - -/* Table view section footer */ -"MANUAL_BACKUP_EXPLANATION_FOOTER" = "Allows to export an encrypted backup of your contacts, groups, and settings (messages and attachments are not backuped). You can either share it (email it, save it to Files,...) or upload it directely to iCloud. Do not worry, this backup is encrypted 😇."; - -"Refresh group" = "Refresh group"; - -"Debug" = "Debug"; - -"Olvid requires the Background App Refresh to be turned on. Unfortunately it appears to be off. If you wish to use Olvid, please turn it back on.\n\nThe reason why this is required lies in the fact that Olvid regularly executes complex, multipass, cryptographic protocols in order to achieve a security level no other app can compete with. These protocols happen in the background and could not work if you had to manually launch Olvid each time a cryptographic computation has to be performed." = "Olvid requires the Background App Refresh to be turned on. Unfortunately it appears to be off. If you wish to use Olvid, please turn it back on.\n\nThe reason why this is required lies in the fact that Olvid regularly executes complex, multipass, cryptographic protocols in order to achieve a security level no other app can compete with. These protocols happen in the background and could not work if you had to manually launch Olvid each time a cryptographic computation has to be performed."; - -"Your contact published a new version of their Olvid card. Both the old and new versions are shown below.\n\nClick to update yout contact's informations with the new version." = "Your contact published a new version of their Olvid card. Both the old and new versions are shown below.\n\nClick to update yout contact's informations with the new version."; - -"Authorization Required" = "Authorization Required"; - -"Olvid is not authorized to access the camera. You can change this setting within the Settings app." = "Olvid is not authorized to access the camera 😱. You can change this setting within the Settings app."; - -"Could not delete group" = "Could not delete group"; - -"Please remove any pending/group member and try again." = "Please remove any pending/group member and try again."; - -"Olvid Card - Published" = "Olvid Card - Published"; - -"Olvid Card - Unpublished draft" = "Olvid Card - Unpublished draft"; - -"Actions" = "Actions"; - -"Share" = "Share"; - -"Export to File App" = "Export to File App"; - -"Show Contact" = "Show Contact"; - -"Open in Safari?" = "Open in Safari?"; - -"Do you wish to open %@ in Safari?" = "Do you wish to open %@ in Safari?"; - -"YOUR_ID_WAS_COPIED" = "Your ID was copied"; - -"YOUR_ID_WAS_COPIED_TO_CLIPBOARD_YOU_CAN_WRITE_EMAIL_AND_COPY_IT_THERE" = "Your ID was copied to the clipboard. You can now write an email or sms and copy it there."; - -"%1@ wants to introduce you to %2@.\n\nOlvid\'s security policy requires you to re-validate the identity of %2@ by exchanging 4-digit codes with them, or to invite %1@ directly." = "%1@ wants to introduce you to %2@.\n\nOlvid\'s security policy requires you to re-validate the identity of %2@ by exchanging 4-digit codes with them, or to invite %1@ directly."; - -"Fetching latest upload" = "Fetching latest upload..."; - -"CANNOT_FETCH_LATEST_UPLOAD" = "Cannot fetch latest upload. You might need to configure your iCloud account."; - -"Latest export: %@" = "Latest export: %@"; - -"No backup was exported yet." = "No backup was exported yet."; - -"Thank you!" = "Thank you!"; - -"Sorry..." = "Sorry..."; - -"Olvid failed to start properly. This is a terrible experience, we deeply appologize about this." = "Olvid failed to start properly. This is a terrible experience, we deeply appologize about this. Please be reassured, none of your data was lost."; - -"Send this to the development team" = "Send this to the development team"; - -"If you wish, you can help the development team by tapping the button below. This will share (only) the above message with them." = "If you wish, you can help the development team by tapping the button below. This will share (only) the following message with them."; - -"Please report this error to %1$@ so we can fix this issue as fast as possible." = "Restarting your device may fix this issue. If it does not, please report this error to %1$@ so we can fix this issue as fast as possible."; - -"Please fix this serious issue with Olvid" = "Please fix this serious issue with Olvid"; - -"Olvid failed to initialize with the following error message:\n\n%1$@" = "Olvid failed to initialize with the following error message:\n\n%1$@"; - -"Your identity is deactivated on this device since it is active on another device. This tipically happens when you restore a backup on a device: this deactivates your previous device." = "Your identity is deactivated on this device since it is active on another device. This tipically happens when you restore a backup on a device: this deactivates your previous device."; - -"What can I do?" = "What can I do?"; - -"You can still access your old discussions on this device, but you cannot send nor receive new messages. If you want to do so, you can tap on Reactivate this device. Please note that this will deactivate your other device." = "You can still access your old discussions on this device, but you cannot send nor receive new messages. If you want to do so, you can tap on \"Reactivate this device\". Please note that this will deactivate your other device."; - -"Reactivate my identity on this device" = "Reactivate this device"; - -"Current backup key generated: %@" = "Current backup key generated: %@"; - -"Verify backup key" = "Verify backup key"; - -"Enter backup key" = "Enter backup key"; - -"Forgot your backup key?" = "Forgot your backup key?"; - -"Please enter all the characters of your backup key." = "Please enter all the characters of your backup key."; - -"Please enter the backup key that was presented to you when you configured backups.\n\nThis key is the only way to decrypt the backup. If you lost it, backup restoration is impossible." = "Please enter the backup key that was presented to you when you configured backups.\n\nThis key is the only way to decrypt the backup. If you lost it, backup restoration is impossible."; - -"The backup key is correct" = "The backup key is correct"; - -"You may proceed with the restoration." = "You may proceed with the restoration."; - -"Restore this backup" = "Restore this backup"; - -"The backup key is incorrect" = "The backup key is incorrect"; - -"Please check your backup key and try again." = "Please check your backup key and try again."; - -"Please choose the location of the backup file you wish to restore." = "Please choose the location of the backup file you wish to restore."; - -"Choose From a file to pick a backup file create from a manual backup." = "Choose \"From a file\" to pick a backup file create from a manual backup."; - -"Choose From the cloud to select an account used for automatic backups." = "Choose \"From iCloud\" to select an account used for automatic backups."; - -"From a file" = "From a file"; - -"From the cloud" = "From iCloud"; - -"Backup file selected" = "Backup file selected"; - -"Proceed and enter backup key" = "Proceed and enter backup key"; - -"RESTORING_BACKUP_PLEASE_WAIT" = "Restoring backup. Please Wait."; - -"Restore failed 🥺" = "Restore failed 🥺"; - -"Try again" = "Try again"; - -"Welcome to Olvid!" = "Welcome to Olvid!"; - -"If you are a new Olvid user, simply click Continue as a new user below." = "If you are a new Olvid user, simply click \"Continue as a new user\" below."; - -"If you already used Olvid and want to restore your identity and contacts from a backup, click Restore a backup" = "If you already used Olvid and want to restore your identity and contacts from a backup, click \"Restore a backup\"."; - -"Continue as a new user" = "Continue as a new user"; - -"Restore a backup" = "Restore a backup"; - -"BACKUP_AND_UPLOAD_NOW" = "Backup and upload to iCloud now"; - -"AUTOMATIC_BACKUP" = "Automatic backup to iCloud"; - -"ENABLE_AUTOMATIC_BACKUP" = "Enable automatic backups to iCloud"; - -"AUTOMATIC_BACKUP_EXPLANATION" = "Activating this option allows to perform an automatic encrypted backup of your contacts, groups, and settings (messages and attachments are not backuped). Do not worry, this backup is encrypted 😇."; - -"Latest upload: %@" = "Latest upload: %@"; - -"⚠️ Latest failed upload: %@" = "⚠️ Latest failed upload: %@"; - -"No backup was uploaded yet." = "No backup was uploaded yet."; - -"Sign in to iCloud" = "Sign in to iCloud"; - -"iCloud status is unclear" = "iCloud status is unclear"; - -"iCloud access is restricted" = "iCloud access is restricted"; - -"Your iCloud account is not available. Access was denied due to Parental Controls or Mobile Device Management restrictions" = "Your iCloud account is not available. Access was denied due to Parental Controls or Mobile Device Management restrictions"; - -"Please sign in to your iCloud account to enable automatic backups. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on. If you don't have an iCloud account, tap Create a new Apple ID." = "Please sign in to your iCloud account to enable automatic backups. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on. If you don't have an iCloud account, tap Create a new Apple ID."; - -"AUTOMATIC_ICLOUD_BACKUPS" = "Automatic iCloud backups"; - -"iCloud backups list" = "iCloud backups list"; - -"Clean" = "Clean"; - -"CLEAN_OLD_BACKUPS" = "Delete old iCloud backups"; - -"CLEAN_OLD_BACKUPS_ON_ALL_DEVICES" = "Delete backups for all devices"; - -"CLEAN_OLD_BACKUPS_ON_CURRENT_DEVICE" = "Delete backups for this device"; - -"CLEAN_OLD_BACKUPS_TITLE" = "Delete old iCloud backups?"; - -"CLEAN_OLD_BACKUPS_MESSAGE" = "Delete all iCloud backups but the last one."; - -"CLEAN_LATEST_BACKUP_FOR_OTHER_DEVICE_TITLE" = "Delete the latest iCloud backup of another device?"; - -"CLEAN_LATEST_BACKUP_FOR_OTHER_DEVICE_MESSAGE" = "Please note that you are about to delete the latest iCloud backup of another device."; - -"CLEAN_LATEST_BACKUP_FOR_CURRENT_DEVICE_TITLE" = "Delete the latest iCloud backup?"; - -"CLEAN_LATEST_BACKUP_FOR_CURRENT_DEVICE_MESSAGE" = "Please note that you are about to delete the latest iCloud backup."; - -"Automatic iCloud backup cleaning" = "Automatic old iCloud backups deletion"; - -"Copy Documents URL" = "Copy Documents URL"; - -"Copy App Database URL" = "Copy App Database URL"; - -"Backup creation date: %@" = "Backup creation date: %@"; - -"Please sign in to your iCloud account. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on." = "Please sign in to your iCloud account. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on."; - -"Sign in to iCloud" = "Sign in to iCloud"; - -"Unexpected iCloud file error" = "Unexpected iCloud file error"; - -"We could not retrieve the encrypted backup content from iCloud" = "We could not retrieve the encrypted backup content from iCloud"; - -"We could not retrieve the creation date of the backup content from iCloud" = "We could not retrieve the creation date of the backup content from iCloud"; - -"We could not retrieve the device name of the backup content from iCloud" = "We could not retrieve the device name associated to the backup content from iCloud"; - -"iCloud error" = "iCloud error"; - -"No backup available in iCloud" = "No backup available in iCloud"; - -"We could not find any backup in you iCloud account. Please make sure this device uses the same iCloud account as the one you were using on the previous device." = "We could not find any backup in you iCloud account. Please make sure this device uses the same iCloud account as the one you were using on the previous device."; - -"Generate new backup key?" = "Generate new backup key?"; - -"Please note that generating a new backup key will invalidate all your previous backups. If you generate a new backup key, please create a fresh backup right afterwards." = "Please note that generating a new backup key will invalidate all your previous backups. If you generate a new backup key, please create a fresh backup right afterwards."; - -"Generate new backup key now" = "Generate new backup key now"; - -"Export App Database" = "Export App Database"; - -"Export Engine Database" = "Export Engine Database"; - -"Custom Display Name" = "Custom Display Name"; - -"Full Display Name" = "Full Display Name"; - -"Identity" = "Identity"; - -"Devices" = "Devices"; - -"USE_CALLKIT" = "Use CallKit"; - -"BUTTON_TITLE_AUTHENTICATE" = "Authenticate"; - -"VoIP" = "VoIP"; - -"CALL_STATE_NEW" = "New call..."; - -"CALL_STATE_GETTING_TURN_CREDENTIALS" = "Authentication..."; - -"CALL_STATE_KICKED" = "Excluded"; - -"USER_HAS_BEEN_KICKED" = "You were excluded from the call."; - -"CALL_STATE_INCOMING_CALL_MESSAGE_WAS_POSTED" = "Connecting..."; - -"CALL_STATE_INITIALIZING_CALL" = "Initializing call..."; - -"CALL_STATE_USER_ANSWERED_INCOMING_CALL" = "Incoming call accepted..."; - -"CALL_STATE_CONNECTING_TO_PEER" = "Connection..."; - -"CALL_STATE_CONNECTED" = "Connected"; - -"CALL_STATE_BUSY" = "Busy"; - -"CALL_STATE_RECONNECTING" = "Reconnection"; - -"CALL_STATE_RINGING" = "Ringing..."; - -"CALL_STATE_CALL_REJECTED" = "Call rejected"; - -"CALL_STATE_CALL_IN_PROGRESS" = "Call in progress"; - -"CALL_STATE_HANGED_UP" = "Hanged up"; - -"Restore" = "Restore"; - -"Could not read backup file" = "Could not read backup file"; - -"Speaker" = "Speaker"; - -"ALERT_TITLE_KICK_PARTICIPANT" = "Exclude contact from call?"; - -"ALERT_MESSAGE_KICK_PARTICIPANT_%@" = "Do you really wish to exclude %@ from this call?"; - -"Exclude" = "Exclude"; - -"DO_NO_SHOW_MSG_AGAIN" = "Do not show this message again"; - -"TITLE_RESET_ALL_ALERTS" = "Reset all alerts"; - -"TITLE_HELP_FAQ" = "Help/FAQ"; - -"ALERT_MSG_OUTGOING_CALL_FAILED_USER_DENIED_RECORDING" = "To make this call, you need to allow Olvid to access the microphone. Open Settings and turn on the Microphone"; - -"ALERT_VOICE_MESSAGE_FAILED_USER_DENIED_RECORDING" = "To record a voice message, you need to allow Olvid to access the microphone. Open Settings and turn on the Microphone"; - -"CALL_STATE_PERMISSION_DENIED_BY_SERVER" = "Connection denied by the server"; - -"INCLUDE_CALL_IN_RECENTS" = "Include calls in iOS call log"; - -"Pending" = "Pending"; - -"MISSED_CALL" = "Missed Call"; - -"MISSED_CALL_FILTERED" = "Missed call while you were in \"Focus\" mode."; - -"ACCEPTED_OUTGOING_CALL" = "Outgoing call"; - -"ACCEPTED_INCOMING_CALL" = "Incoming call"; - -"ANY_OUTGOING_CALL" = "Outgoing call..."; - -"ANY_INCOMING_CALL" = "Incoming call..."; - -"REJECTED_OUTGOING_CALL" = "Rejected outgoing call"; - -"REJECTED_INCOMING_CALL" = "Rejected incoming call"; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_UNDETERMINED" = "The incoming call was rejected because Olvid is not allowed to access the microphone. Please tap on this message to allow Olvid to access the Microphone."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_UNDETERMINED_NOTIFICATION_BODY" = "To received a call, you need to allow Olvid to access the microphone. Please tap on this notification to allow Olvid to access the microphone."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_GRANTED" = "The incoming call was rejected because Olvid was not allowed to access the Microphone. Fortunately, since then, this autorisation was granted. You won't miss a call again 🥳!"; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_DENIED" = "The incoming call was rejected because Olvid is not allowed to access the Microphone. To never miss a call again, please go to Settings and grant Olvid access to the microphone."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_DENIED_NOTIFICATION_BODY" = "The incoming call was rejected because Olvid was not allowed to access the Microphone. To never miss a call again, please go to Settings and grant Olvid access to the microphone."; - -"BUSY_OUTGOING_CALL" = "Busy outgoing call"; - -"UNANSWERED_OUTGOING_CALL" = "Unanswered outgoing call"; - -"UNCOMPLETED_OUTGOING_CALL" = "Uncompleted outgoing call"; - -"CHOOSE_PREFERRED_AUDIO_SOURCE" = "Choose your preferred audio source"; - -"SECURE_CALL_IN_PROGRESS" = "Secure call in progress"; - -"SECURING_CALL_LINE" = "Securing line"; - -"UNANSWERED" = "Unanswered"; - -"WITH_%@" = "with %@"; - -"FROM_%@" = "from %@"; - -"AND_ONE_OTHER" = "and one other"; - -"AND_%@_OTHERS" = "and %@ others"; - -"Hangup" = "Hangup"; - -"HOW_DO_YOU_WANT_TO_SHARE_ID" = "How do you want to share your ID?"; - -"SHARE_MY_ID" = "Share my ID"; - -"SCAN_CONTACT_ID" = "Scan contact ID"; - -"SHARING_YOUR_ID_ALLOWS_OTHERS_TO_INVITE_YOU_REMOTELY" = "Sharing your ID allows another Olvid user to invite you."; - -"SCANNING_CONTACT_ID_ALLOWS_YOU_TO_INVITE_THEM_NOW" = "Scanning the ID of another user allows you to invite them."; - -"Show my Id" = "Show my ID"; - -"Olvid is not authorized to access the camera. Because your settings are restricted, there is nothing we can do about this. Please contact your administrator." = "Olvid is not authorized to access the camera. Because your settings are restricted, there is nothing we can do about this. Please contact your administrator."; - -"Do you wish to send an invite to %@?" = "Do you wish to send an invite to %@?"; - -"YOUR_ID_WAS_COPIED_TO_CLIPBOARD" = "Your ID was copied to clipboard"; - -"Oops..." = "Oops..."; - -"What you pasted doesn't seem to be an Olvid identity 🧐" = "What you pasted doesn't seem to be an Olvid ID 🧐"; - -"THIS_ID_IS_THE_ONE_YOU_OWN" = "This ID is the one you own 😇."; - -"Add new contact" = "Add new contact"; - -"SUBSCRIBING_TO_USER_NOTIFICATIONS_EXPLANATION" = "Olvid works best if you are notified of new messages & invitations! On the next screen, you will get a chance to subscribe to user notifications.\n\nYou can always change your mind later 😇."; - -"CONTINUE" = "Continue"; - -"SCAN" = "Scan"; - -"COPY_MY_ID_TO_CLIPBOARD" = "Copy my ID to clipboard"; - -"PASTE_CONTACT_ID_FROM_CLIPBOARD" = "Paste contact ID from clipboard"; - -"More invitations methods" = "Additional methods for adding a contact"; - -"CHOOSE_GROUP_MEMBERS" = "Choose group members"; - -"You successfully introduced %@ to %@ and %d other contacts" = "You successfully introduced %@ to %@ and %d other contact(s)"; - -"EDIT_MY_ID" = "Edit my ID"; - -"SUBSCRIPTION_STATUS" = "Subscription status"; - -"Premium features tryout" = "Premium features tryout"; - -"No active subscription" = "No active subscription"; - -"Valid license" = "Valid license"; - -"Invalid subscription" = "Invalid subscription"; - -"Subscription expired" = "Subscription expired"; - -"This subscription is already associated to another user" = "This subscription is already associated to another user"; - -"FORM_FIRST_NAME" = "First name"; - -"FORM_LAST_NAME" = "Last name"; - -"FORM_POSITION" = "Position"; - -"FORM_COMPANY" = "Company"; - -"PUBLISH_MY_ID" = "Publish my ID"; - -"PUBLISH_NEW_ID" = "Publish your new ID?"; - -"ARE_YOU_SURE_PUBLISH_NEW_OWNED_ID" = "Once published, all your contacts will receive your new ID."; - -"Premium features are available for a limited period of time" = "Premium features are available for a limited period of time."; - -"Free features" = "Free features"; - -"Premium features" = "Premium features"; - -"Sending & receiving messages and attachments" = "Sending & receiving messages and attachments"; - -"Create groups" = "Create groups"; - -"Receive secure calls" = "Receive secure calls"; - -"Make secure calls" = "Make secure calls"; - -"NEW_LICENSE_TO_ACTIVATE" = "New license to activate"; - -"CURRENT_LICENSE_STATUS" = "Current license status"; - -"ACTIVATE_NEW_LICENSE" = "Activate new license"; - -"Confirm invite" = "Confirm invite"; - -"Premium features free trial" = "Premium features free trial"; - -"Premium features available for free" = "Premium features available for free"; - -"Valid until %@" = "Valid until %@"; - -"Premium features available until %@" = "Premium features available until %@"; - -"Fallback to free version" = "Fallback to free version"; - -"See subscription plans" = "See subscription plans"; - -"Available subscription plans" = "Available subscription plans"; - -"Looking for available subscription plans" = "Looking for available subscription plans"; - -"Get access to premium features for free for one month. This free trial can be activated only once." = "Get access to premium features for free for 30 days. This free trial can be activated only once."; - -"Start free trial now" = "Start free trial now"; - -"Free Trial" = "Free trial"; - -"Subscribe now" = "Subscribe now"; - -"month" = "month"; - -"Free" = "Free"; - -"Sorry, it seems you are not allowed to issue the request 😢." = "Sorry, it seems you are not allowed to issue the request 😢."; - -"Ok, the payment was successfully cancelled." = "Ok, the payment was successfully cancelled."; - -"Sorry, it seems you are not allowed to make the payment 😢." = "Sorry, it seems you are not allowed to make the payment 😢."; - -"Sorry, the product is not available in your store 😢." = "Sorry, the product is not available in your store 😢."; - -"The purchase failed because you did not allowed access to cloud service information 😢." = "The purchase failed because you did not allowed access to cloud service information 😢."; - -"Sorry, the purchase failed because we could not connect to the nework 😢. Please try again later." = "Sorry, the purchase failed because we could not connect to the nework 😢. Please try again later."; - -"Sorry, the purchase failed because you still need to acknowledge Apple's privacy policy 😢." = "Sorry, the purchase failed because you still need to acknowledge Apple's privacy policy 😢."; - -"Sorry, the purchase failed 😢. Please try again later or contact us if this problem is recurring." = "Sorry, the purchase failed 😢. Please try again later or contact us if this problem is recurring."; - -"Your purchase must be approved before it can go through." = "Your purchase must be approved before it can go through."; - -"Manage your subscription" = "Manage your subscription"; - -"START_USING_OLVID" = "Welcome to Olvid 😇"; - -"OWNED_IDENTITY_GENERATED_EXPLANATION" = "You just finished Olvid's configuration!\n\nNo data (first name, last name,...) was ever transmitted to our servers. Everything stays on your device.\n\nDid you notice that we did not ask for your phone number nor your email address?\n\nAnd unlike your previous messenger, Olvid will never request access to your address book."; - -"Restore Purchases" = "Restore Purchases"; - -"Manage payments" = "Manage payments"; - -"We found no purchase to restore." = "We found no purchase to restore."; - -"Premium features are available for free until %@" = "Premium features are available for free until %@"; - -"Refresh status" = "Refresh status"; - -"Looking for the new license" = "Looking for the new license"; - -"SUBSCRIPTION_REQUIRED" = "Subscription required"; - -"BUTTON_LABEL_CHECK_SUBSCRIPTION" = "Check subscription status"; - -"MESSAGE_SUBSCRIPTION_REQUIRED_CALL" = "Initiating secure phone calls with Olvid requires a subscription.\n\nYou can check your current subscription status and see available subscription plans on the \"My ID\" page."; - -"MESSAGE_SUBSCRIPTION_REQUIRED_GENERIC" = "Th requested feature requires a subscription.\n\nYou can check your current subscription status and see available subscription plans on the \"My ID\" page."; - -"License activation" = "License activation"; - -"BILLING_GRACE_PERIOD" = "Billing Grace Period"; - -"GRACE_PERIOD_ENDS_ON_%@" = "Grace period ends on %@"; - -"GRACE_PERIOD_ENDED" = "Grace period ended"; - -"GRACE_PERIOD_ENDED_ON_%@" = "Grace period ended on %@"; - -"TERMS_OF_USE" = "Terms of use"; - -"PRIVACY_POLICY" = "Privacy policy"; - -"FREE_TRIAL_EXPIRED" = "Free trial expired"; - -"FREE_TRIAL_ENDED_ON_%@" = "The free trial expired on %@"; - -"Premium subscription" = "Premium subscription"; - -"Unlock all premium features in Olvid" = "Unlock all premium features in Olvid."; - -"Allow all api key activations" = "Allow all api key activations"; - -"The backup could not be recovered" = "The backup could not be recovered"; - -"The backuped data could not be decrypted." = "The backuped data could not be decrypted."; - -"The integrity check of the backuped data failed." = "Are you sure this is the correct backup key?"; - -"The backup could not be recovered (error code: %@)." = "The backup could not be recovered (error code: %@)."; - -"The backup file could not be read" = "The backup file could not be read"; - -"USE_LOAD_BALANCED_TURN_SERVERS" = "Use load balanced turn servers"; - -"WIPE_AFTER_READ_SECTION_HEADER" = "Wipe after read"; - -"WIPE_AFTER_PICKER_LABEL" = "Wipe after"; - -"TIMER_PICKER_LABEL" = "Timer"; - -"MESSAGE_EXPIRATION_SECTION_HEADER" = "Message expiration"; - -"EXPIRE_PICKER_LABEL" = "Expiration"; - -"EXPIRATION_SETTINGS_TITLE" = "Ephemeral messages"; - -"READ_ONCE" = "Read once"; - -"Timer" = "Timer"; - -"AFTER_DATE" = "After date"; - -"AFTER_TIMER" = "After timer"; - -"TEN_SECONDS" = "10 seconds"; - -"ONE_MINUTE" = "1 minute"; - -"FIVE_MINUTE" = "5 minutes"; - -"ONE_HOUR" = "1 hour"; - -"EIGHT_HOURS" = "8 hours"; - -"ONE_DAY" = "1 day"; - -"FIFTEEN_DAYS" = "15 days"; - -"TWO_DAYS" = "2 days"; - -"ONE_WEEK" = "1 week"; - -"FOUR_WEEKS" = "4 weeks"; - -"INDEFINITELY" = "indefinitely"; - -"DATE" = "Date"; - -"MESSAGE_WAS_WIPED" = "Last message was wiped 🧹"; - -"READ_ONCE_SECTION_HEADER" = "Delete"; - -"READ_ONCE_LABEL" = "Read once"; - -"TAP_TO_READ" = "Click to view\nmessage content"; - -"AUTO_READ_LABEL" = "Auto read"; - -"EPHEMERAL_MESSAGE" = "Ephemeral message"; - -"DEFAULT_DISCUSSION_SETTINGS" = "Default settings for this discussion"; - -"DRAFT_EXPIRATION_EXPLANATION" = "Use the settings below to modify the visibility and existence durations of your next message. You may only use more restrictive settings than the discussion's default."; - -"Reset" = "Reset"; - -"ACTIVATE_NEW_LICENSE_CONFIRMATION_TITLE" = "Activate the license?"; - -"DO_YOU_WISH_TO_ACTIVATE_API_KEY" = "Any previous license will be lost. Do you wish to activate the new license?"; - -"Expired since %@" = "Expired since %@"; - -"FALLBACK_FREE_VERSION_WARNING" = "Are you sure you wish to fallback to the free version of Olvid? Any existing subscription advantage would be lost."; - -"Wiped" = "Wiped"; - -"WIPED_MESSAGE" = "Wiped message 🧹"; - -"WIPED_MESSAGE_BY_%@" = "Message deleted by %@"; - -"EXPIRATION_SETTINGS_EXPLANATION" = "The settings below are shared between all participants in this discussion. Changing them will affect the default visibility and existence duration of messages sent by all participants."; - -"READ_ONCE_SECTION_FOOTER" = "When activated, messages and attachments are displayed only once, and are deleted when exiting the discussion."; - -"LIMITED_VISIBILITY_SECTION_FOOTER" = "When activated, messages and attachments are visible for a limited period of time after they have been read."; - -"LIMITED_VISIBILITY_LABEL" = "Visibility duration"; - -"LIMITED_EXISTENCE_SECTION_FOOTER" = "When activated, messages and attachments are auto-deleted after a limited period of time."; - -"LIMITED_EXISTENCE_SECTION_LABEL" = "Existence duration"; - -"FIVE_SECONDS" = "5 seconds"; - -"THIRTY_SECONDS" = "30 seconds"; - -"TWO_MINUTES" = "2 minutes"; - -"THIRTY_MINUTES" = "30 minutes"; - -"SIX_HOUR" = "6 hours"; - -"TWELVE_HOURS" = "12 hours"; - -"SEVEN_DAYS" = "7 days"; - -"THIRTY_DAYS" = "30 days"; - -"NINETY_DAYS" = "90 days"; - -"ONE_HUNDRED_AND_HEIGHTY_DAYS" = "180 days"; - -"ONE_YEAR" = "1 year"; - -"AUTO_READ_SECTION_FOOTER" = "Automaticall open ephemeral messages."; - -"RETAIN_WIPED_OUTBOUND_MESSAGES_LABEL" = "Retain wiped ephemeral outbound messages"; - -"RETAIN_WIPED_OUTBOUND_MESSAGES_SECTION_FOOTER" = "When activated, outbound ephemeral messages are not deleted when they expire, but replaced by a static text."; - -"THREE_YEAR" = "3 years"; - -"FIVE_YEAR" = "5 years"; - -"Mute" = "Mute"; - -"MUTE_NOTIFICATIONS" = "Mute notifications"; - -"UNMUTE_NOTIFICATIONS" = "Unmute notifications"; - -"UNMUTED_NOTIFICATIONS_FOOTER" = "When activated, you won't be notified of new messages in this discussion."; - -"MUTED_NOTIFICATIONS_FOOTER_UNTIL_%@" = "New message notifications muted until %@"; - -"MUTED_NOTIFICATIONS_CONFIRMATION_%@" = "New message notifications muted until %@.\nDo you want to unmute them?"; - -"MUTED_NOTIFICATIONS_FOOTER_INDEFINITELY" = "New message notifications muted indefinitely"; - -"SEND_READ_RECEIPT_SECTION_FOOTER" = "When activated, your contacts will be notified when you have read their messages within this discussion."; - -"SEND_READ_RECEIPTS_LABEL" = "Send read receipts"; - -"SHOW_RICH_LINK_PREVIEW_LABEL" = "Show rich link previews"; - -"NOTIFICATION_SOUNDS_LABEL" = "Notification sound"; - -"MODIFIED_SHARED_SETTINGS_CONFIRMATION_TITLE" = "Modified shared ephemeral message settings"; - -"MODIFIED_SHARED_SETTINGS_CONFIRMATION_MESSAGE" = "You have modified the message settings for this discussion.\n\nDo you want to update these settings for you and all other discussion participants, or do you want to discard your changes?"; - -"Discard" = "Discard"; - -"DISCUSSION_SHARED_SETTINGS_WERE_UPDATED" = "Discussion shared settings were updated"; - -"NON_EPHEMERAL_MESSAGES_LABEL" = "Non-ephemeral messages"; - -"GLOBAL_EXPIRATION_SETTINGS_EXPLANATION" = "The settings below will be applied to all new one-to-one discussions and to all new group discussions that you create. Please note that these settings will be shared among all the participant of the discussion."; - -"ONLY_GROUP_OWNER_CAN_MODIFY" = "Only a group administrator can modify these settings."; - -"UNREAD_EPHEMERAL_MESSAGE" = "Unread ephemeral message"; - -"All logs" = "All logs"; - -"Unlimited" = "Unlimited"; - -"RETENTION_SETTINGS_TITLE" = "Message retention policy"; - -"GLOBAL_RETENTION_SETTINGS_EXPLANATION" = "The settings below allow you to automatically delete old messages in your discussions. They can be overidden in each discussion."; - -"COUNT_BASED_LABEL" = "Count based"; - -"COUNT_BASED_KEEP_ALL" = "Keep all"; - -"COUNT_BASED_SECTION_FOOTER" = "Old messages will be regularly deleted, so as to keep the number of message per discussion less than the value you enter here."; - -"KEEP_%lld_MESSAGES" = "Keep %lld messages"; - -"TIME_BASED_LABEL" = "Time based"; - -"TIME_BASED_SECTION_FOOTER" = "If activated, messages older than the specified time will be regularly deleted."; - -"LOCAL_RETENTION_SETTINGS_EXPLANATION" = "The settings below allow you to automatically delete old messages in this discussion."; - -"EPHEMERAL_MESSAGES" = "Ephemeral messages"; - -"LOCAL_CONFIG" = "Local configuration"; - -"SHARED_CONFIG" = "Shared configuration"; - -"COUNT_BASED_SINGLE_DISCUSSION_SECTION_FOOTER" = "Old messages will be regularly deleted from this discussion, so as to keep the number of message less than the value you enter here."; - -"LOCAL_EPHEMERAL_SETTINGS_EXPLANATION" = "The settings below allow you to locally customize how ephemeral messages behave within this discussion. These settings are not shared with other participants."; - -"TIME_BASED_SINGLE_DISCUSSION_SECTION_FOOTER" = "If activated, messages older than the specified time will be regularly deleted from this discussion."; - -"EXPECTED_DELETION_DATE" = "Deletion date"; - -"RETENTION_INFO_LABEL" = "Message retention information"; - -"NUMBER_OF_MESSAGES_BEFORE_DELETION" = "Number of new messages before deletion"; - -"WILL_SOON_BE_DELETED" = "This message will soon be deleted"; - -"NO_MESSAGE" = "No message"; - -"SETTINGS_UPDATE_TITLE" = "Settings update"; - -"ACCESS_TO_ADVANCED_SETTINGS" = "Access to advanced settings"; - -"SKIP_SAS_DURING_WEBCLIENT_TESTING" = "Skip the SAS during the webclient testing"; - -"USE_SCALED_TURN" = "Use scaled turn servers for VoIP"; - -"Received" = "Received"; - -"Remotely wiped" = "Remotely wiped"; - -"Remotely wiped by %@" = "Remotely wiped by %@"; - -"Perform the deletion for all users" = "Perform the deletion for all users"; - -"REMOTE_WIPED_MESSAGE" = "Remotely wiped"; - -"Delete all messages for all users" = "Delete all messages for all users"; - -"Delete all messages for all users?" = "Delete all messages for all users?"; - -"Do you wish to delete all the messages on all the devices of all the users of this discussion? This action is irrevisble." = "Do you wish to delete all the messages on all the devices of all the users of this discussion? This action is irreversible."; - -"This discussion was remotely wiped by %@ on %@" = "This discussion was remotely wiped by %@ on %@"; - -"This discussion was remotely wiped by %@" = "This discussion was remotely wiped by %@"; - -"EDIT_YOUR_MESSAGE" = "Edit your message"; - -"UPDATE_YOUR_ALREADY_SENT_MESSAGE" = "Update your already sent message"; - -"Edited" = "Edited"; - -"Edit" = "Edit"; - -"CREATE_MY_ID" = "Create my profile"; - -"TAKE_PICTURE" = "Take a photo"; - -"CHOOSE_PICTURE" = "Choose a photo"; - -"REMOVE_PICTURE" = "Remove the photo"; - -"PROFILE_PICTURE" = "Profile picture"; - -"ENTER_GROUP_DETAILS" = "New group details"; - -"GROUP_NAME" = "Group name"; - -"GROUP_DESCRIPTION" = "Group description"; - -"PUBLISH_NEW_GROUP" = "Publish this new group?"; - -"ARE_YOU_SURE_CREATE_NEW_OWNED_GROUP" = "Do you wish to create this new group now?"; - -"CREATE_MY_GROUP" = "Create the group now"; - -"CREATE_GROUP" = "Create the group"; - -"EDIT_GROUP" = "Edit group"; - -"PUBLISH_GROUP" = "Publish group changes"; - -"ARE_YOU_SURE_PUBLISH_EDITED_OWNED_GROUP" = "Do you you wish to publish the group changes?"; - -"PUBLISH_MY_GROUP" = "Publish group changes"; - -"INTRODUCE_%@_TO" = "Introduce %@ to..."; - -"ON_MY_DEVICE_%@" = "On my %@"; - -"DELETE_CONTACT" = "Delete contact"; - -"UPDATE_DETAILS" = "Use new details"; - -"START_HERE" = "Add your first contact!"; - -"IDENTITY_CREATION_OPTION_TITLE" = "Options"; - -"IDENTITY_CREATION_OPTION_EXPLANATION" = "This screen lets you choose additional options for the creation of your Olvid identity. You can enter the options manually or scan a configuration QR-code."; - -"VALIDATE_OPTIONS" = "Validate options"; - -"OLVID_SERVER" = "Olvid server"; - -"LICENSE_ACTIVATION_CODE" = "License activation code"; - -"UNABLE_TO_CHECK_LICENSE_STATUS" = "Unable to check license status"; - -"CHECK_SERVER_AND_LICENSE_ACTIVATION_CODE" = "Please check the server url as well as the license activation code."; - -"Server: %@" = "Server: %@"; - -"LEAVE_BLANK_IF_USING_THE_DEFAULT_ACTIVATION_CODE" = "Leave blank to use the default code."; - -"SERVER_URL" = "Server URL"; - -"PASTED_STRING_IS_NOT_VALID_OLVID_CONFIG" = "What you just pasted does not seem to be a valid Olvid configuration link 🤔."; - -"IDENTITY_SETTINGS" = "Identity settings"; - -"PASTE_CONFIGURATION_LINK" = "Paste a configuration from the clipboard"; - -"IDENTITY_PROVIDER_OPTION_EXPLANATION" = "This screen lets you to manually configure your company's identity provider. If you received a configuration link (or QR code), please tap on \"Back\" and tap the link or scan the code. This will make the onboarding process much easier 😇.\n\nPlease contact your administrator for more details."; - -"IDENTITY_PROVIDER_SERVER" = "Identity provider server"; - -"SERVER_CLIENT_ID" = "Client ID"; - -"SERVER_CLIENT_SECRET" = "Client Secret"; - -"IDENTITY_PROVIDER" = "Identity provider"; - -"VALIDATE_SERVER" = "Validate server"; - -"AUTHENTICATE" = "Authenticate"; - -"IDENTITY_SERVER_VALIDATION_FAILED" = "The identity server validation failed"; - -"CHECK_IDENTITY_SERVER" = "Please check the URL of the identity server"; - -"AUTHENTICATION_FAILED" = "Authentication failed"; - -"CHECK_IDENTITY_SERVER_PARAMETERS" = "Please check the identity provider parameters."; - -"Identity Server: %@" = "Identity Server: %@"; - -"EXPLANATION_MANAGED_IDENTITY" = "The name above was retrieved from your Identity provider and can't be changed. You may still choose a profile picture. These details will never be sent to Olvid's servers."; - -"ENTER_API_KEY" = "Enter a license key"; - -"SCAN_QR_CODE_CONFIGURATION" = "Scan a configuration QR code"; - -"Successfully revoked previous Olvid ID" = "You previous ID was revoked."; - -"Search" = "Search"; - -"SEARCH_HERE" = "Search for a contact within your company 🔎"; - -"UNABLE_TO_PERFORM_KEYCLOAK_SEARCH" = "Search could not be performed."; - -"Confirmation" = "Confirmation"; - -"Do you wish to add %@ to your contacts?" = "Do you wish to add %@ to your contacts?"; - -"ADD_TO_CONTACTS" = "Add to contacts"; - -"NEW_DETAILS_EXPLANATION_%@_%@" = "%1$@ updated their details. If you wish to use these new details instead of those currently on your %2$@, please tap the button bellow."; - -"ESTABLISHING_SECURE_CHANNEL" = "Establishing a secure discussion channel"; - -"ESTABLISHING_SECURE_CHANNEL_EXPLANATION" = "A secure discussion channel is currently being created. This process should take a few seconds if both you and your contact are online.\n\nIf you believe that something went wrong, you can restart the channel creation."; - -"RESTART_CHANNEL_CREATION" = "Restart secure channel creation"; - -"Restart" = "Restart"; - -"RECREATE_CHANNEL" = "Recreate secure channel"; - -"Do you really wish to recreate the secure channel?" = "Do you really wish to recreate the secure channel?"; - -"REALLY_DELETE_CONTACT" = "If you delete this contact, you will no longer be able to exchange messages with them.\n\nDo you still wish to delete this contact?"; - -"TRUST_ORIGIN_TITLE_DIRECT" = "One-to-one verification"; - -"TRUST_ORIGIN_TITLE_INTRODUCTION_%@" = "Introduced by %@"; - -"INTRODUCED_BY_FORMER_CONTACT" = "Introduced by a former contact"; - -"TRUST_ORIGIN_TITLE_GROUP" = "Introduced as part of a group discussion"; - -"TRUST_ORIGINS" = "Trust origins"; - -"Chat" = "Chat"; - -"Call" = "Call"; - -"CALL_BACK" = "Call back"; - -"CUSTOM_KEYBOARD_MANAGEMENT" = "Custom keyboards management"; - -"ALLOW_CUSTOM_KEYBOARDS" = "Allow custom keyboards"; - -"CUSTOM_KEYBOARD_MANAGEMENT_EXPLANATION" = "Any change to this parameter will require a complete restart of Olvid before it can take effect."; - -"IDENTITY_SERVER" = "Identity server"; - -"BAD_KEYCLOAK_SERVER_RESPONSE" = "There is something wrong with the identity server 😨. Please contact your administrator."; - -"Unavailable" = "Unavailable"; - -"EDIT_CONTACT_NICKNAME_EXPLANATION_%@" = "You can choose a nickname and a custom profile picture for your contact. They will only appear on your %@, and won't be shared with anyone."; - -"Save" = "Save"; - -"Reset" = "Reset"; - -"FORM_NICKNAME" = "Nickname"; - -"EDIT_CONTACT_NICKNAME" = "Edit nickname and picture"; - -"TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_NEEDED" = "Your identity provider indicates that an Olvid ID is already associated to the user you signed in as. If you proceed, this Olvid ID will be revoked and your new one will be associated to this user.\n\nPlease contact your administrator for more details."; - -"WARNING" = "Warning"; - -"TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_IMPOSSIBLE" = "Your identity provider indicates that an Olvid ID is already associated to the user you signed in as. You cannot proceed with the creation of your identity.\n\nPlease contact your administrator for more details."; - -"DIALOG_TITLE_IDENTITY_PROVIDER_ERROR" = "Identity provider error"; - -"DIALOG_MESSAGE_FAILED_TO_UPLOAD_IDENTITY_TO_KEYCLOAK" = "Olvid was unable to upload your Olvid ID to your company's identity provider. It will be retried in the background."; - -"LAST_MESSAGE_WAS_REMOTELY_WIPED" = "Last message was remotely wiped"; - -"UNABLE_TO_ACTIVATE_LICENSE_TITLE" = "Unable to activate license"; - -"UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION" = "Your Olvid ID is currently managed by your company's identity provider. You cannot manually activate an Olvid license."; - -"PLEASE_CONTACT_ADMIN_FOR_MORE_DETAILS" = "Please contact your administrator for more details."; - -"EXPLANATION_KEYCLOAK_UPDATE_NEW" = "You are about to configure your company's identity provider in Olvid. Once configured, you can authenticate with this server and Olvid will let you to seamlessly add other employees to your contacts."; - -"LABEL_BIND_KEYCLOAK" = "Use an identity provider"; - -"BUTTON_LABEL_MANAGE_KEYCLOAK" = "Switch to a managed ID"; - -"EXPLANATION_KEYCLOAK_BIND" = "The name above was retrieved from your company's identity provider. Once your Olvid ID is managed by your this provider, this is how your contacts will see you in Olvid."; - -"EXPLANATION_KEYCLOAK_UPDATE_BAD_SERVER" = "Olvid was unable to configure your company's identity provider with your current Olvid ID because your ID was generated on a different Olvid server."; - -"REMOVE_IDENTITY_PROVIDER" = "Remove identity provider"; - -"DIALOG_MESSAGE_UNBIND_FROM_KEYCLOAK" = "Your Olvid ID is currently managed by your company's identity provider. You are about to switch to a normal, un-managed, Olvid ID.\n\nIf you proceed, you will no longer be able to seamlessly add contacts from your company to Olvid. Please contact your administrator for more details.\n\nDo you wish to proceed?"; - -"GLOBAL_LOCAL_EPHEMERAL_SETTINGS_EXPLANATION" = "The settings below allow you to locally customize the default behavior of ephemeral messages. These settings are not shared with other discussion participants."; - -"GLOBAL_LOCAL_EPHEMERAL_SETTINGS_EXPLANATION" = "The settings below allow you to locally customize the default behavior of ephemeral messages. These settings are not shared with other discussion participants."; - -"SERVER_DOES_NOT_SUPPORT_CALLS" = "The server does not support calls."; - -"STD_MSG_OLVID_TAKES_TOO_LONG_TO_START" = "Olvid seems to take longer than usual to start. This typically occurs after installing a new version. Please be reassured, none of your data was lost."; - -"SHARE_MSG_OLVID_TAKES_TOO_LONG_TO_START" = "If the problem persists, you can help the development team by tapping the button below. This will share (only) the following message with them."; - -"ADDING_KEYCLOAK_CONTACT_FAILED" = "Failed to add contact"; - -"PLEASE_TRY_AGAIN_LATER" = "Please try again later"; - -"AUTHENTICATION_FAILED" = "Authentication failed"; - -"PLEASE_TRY_AGAIN" = "Please try again"; - -"COULD_NOT_SWITCH_TO_MANAGED_ID" = "Could not switch to a managed ID"; - -"UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION_ALT" = "The message distribution server associated with your Olvid ID is incompatible with the server indicated within the license"; - -"CONTACTS_SORT_ORDER" = "Contact sort order"; - -"FIRST_NAME_LAST_NAME" = "First, Last"; - -"LAST_NAME_FIRST_NAME" = "Last, First"; - -"MAX_AVG_BITRATE" = "Max. average bitrate"; - -"ICLOUD_ACCOUNT_TEMPORARILY_UNAVAILABLE" = "iCloud account temporarily unavailable"; - -"ICLOUD_ACCOUNT_TRY_AGAIN_LATER" = "Please try again later"; - -"DISMISS" = "Dismiss"; - -"INVALID_QR_CODE" = "This QR code is invalid"; - -"IMPOSSIBLE_TO_ADD_%@_WITH_THIS_QR_CODE" = "This QR code cannot be used to add %1$@ to your contacts. Please try again, making sure %1$@ scans your QR code before you scan their's."; - -"SEND_INVITE_TO_%@_TO_ADD_THEM_TO_YOUR_CONTACTS_FROM_A_DISTANCE" = "Send an invitation to %@ to add them to your contacts from a distance."; - -"OPTION_%@_FROM_A_DISTANCE" = "Option %@: Invite remotely"; - -"OPTION_%@_LOCALLY" = "Option %@: Invite locally"; - -"INVITE_%@_LOCALLY" = "If %@ is next to you, have them scan this QR code to add them to your contacts directly."; - -"MISSING_CHANNEL_FOR_CALL_TITLE_%@" = "%@ cannot be called yet"; - -"MISSING_CHANNEL_FOR_CALL_MESSAGE_%@" = "You will be able to call %@ once a secure channel is established with them. Please try again later."; - -"REPLYING_TO_%@" = "Replying to %@"; - -"REPLYING_TO_CONTACT" = "Replying to a contact"; - -"REPLYING_TO_YOURSELF" = "Replying to yourself"; - -"REPLYING" = "Replying"; - -"REPLYING_TO_YOU" = "Replying to you"; - -"Loading" = "Loading"; - -"USE_OLD_DISCUSSION_INTERFACE" = "Use old discussion interface"; - -"TAP_TO_CANCEL" = "Tap to cancel"; - -"PLEASE_UPDATE_OLVID_FROM_MAIN_APP" = "Please launch the Olvid App in order to finalize its update 🚀. You will be able to share content once this is done 😉."; - -"PLEASE_LAUNCH_OLVID_FROM_MAIN_APP" = "Please launch the Olvid App to be able to share content 😉."; - -"SCAN_DOCUMENT" = "Scan a document"; - -"EPHEMERAL_MESSAGE" = "Ephemeral message"; - -"SHOOT_PHOTO_OR_MOVIE" = "Camera"; - -"CHOOSE_IMAGE_FROM_LIBRARY" = "Photo & video library"; - -"CHOOSE_FILE" = "Attach file"; - -"INTRODUCE_CONTACT_%@_TO" = "Introduce %@ to..."; - -"DIALOG_MISSING_MESSAGES_TITLE" = "Missing messages"; - -"DIALOG_MISSING_MESSAGES_MESSAGE" = "This missing message indicator tells you that a gap was detected in the numbering sequence of messages received from your contact.\n\nThis can either be that the sending of a message was cancelled (the message will never reach you), or that a larger message (typically with attachment) has not finished uploading yet (you should receive it soon)."; - -"SHOW_BACKUP_SCREEN" = "Backup settings"; - -"SHOW_SETTINGS_SCREEN" = "All settings"; - -"TOGGLE_EDIT_PINNED_STATE" = "Edit pinned discussions"; - -"CONTACT_SORT_ORDER" = "Contact sort order..."; - -"Later" = "Later"; -"Now" = "Now"; -"REMIND_ME_LATER" = "Remind me later"; - -"SNACK_BAR_BODY_CREATE_BACKUP_KEY" = "It's time to setup backups!"; -"SNACK_BAR_BUTTON_TITLE_CREATE_BACKUP_KEY" = "Show me"; -"SNACK_BAR_DETAILS_TITLE_CREATE_BACKUP_KEY" = "Why should I setup backups 🧐?"; -"SNACK_BAR_DETAILS_BODY_CREATE_BACKUP_KEY_%@" = "If you were to lose your %@, or to uninstall Olvid by mistake, you would lose your Olvid ID, all your contacts, and all your groups 😱. Luckily for you, it is possible to setup secure backups 😅.\n\nPress \"Setup backups\" to begin."; -"CONFIGURE_BACKUPS_BUTTON_TITLE" = "Setup backups"; - -"SNACK_BAR_BODY_SHOULD_PERFORM_BACKUP" = "It's backup time!"; -"SNACK_BAR_BUTTON_TITLE_SHOULD_PERFORM_BACKUP" = "Show me"; -"SNACK_BAR_DETAILS_TITLE_SHOULD_PERFORM_BACKUP" = "Why should I create a backup 🧐?"; -"SNACK_BAR_DETAILS_BODY_SHOULD_PERFORM_BACKUP_%@" = "In order not to lose any contact, we recommend you activate automatic backups to iCloud. Don't worry, these backups are encrypted 🤓!\nOtherwise, you may also perform manual backups on a regular basis.\n\nPress \"Setup backups\" to begin."; - -"SNACK_BAR_BODY_SHOULD_VERIFY_BACKUP_KEY" = "Do you remember your backup key?"; -"SNACK_BAR_BUTTON_TITLE_SHOULD_VERIFY_BACKUP_KEY" = "Show me"; -"SNACK_BAR_DETAILS_TITLE_SHOULD_VERIFY_BACKUP_KEY" = "Why should I remember my backup key 🧐?"; -"SNACK_BAR_DETAILS_BODY_SHOULD_VERIFY_BACKUP_KEY_%@" = "Having an up to date Olvid backup is essential, but you need your backup key to restore it!\n\nPress \"Setup backups\" to verify your key. If you lost it, don't worry, you can generate a new one 🤗."; - -"You" = "You"; - -"Touch to return to call" = "Touch to return to call"; - -"ERROR" = "Error"; - -"SNACK_BAR_BODY_GRANT_PERMISSION_TO_RECORD" = "You missed a call!"; -"SNACK_BAR_BODY_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" = "You missed a call!"; -"SNACK_BAR_BUTTON_TITLE_GRANT_PERMISSION_TO_RECORD" = "Show me"; -"SNACK_BAR_BUTTON_TITLE_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" = "Show me"; -"SNACK_BAR_DETAILS_TITLE_GRANT_PERMISSION_TO_RECORD" = "You missed a call because Olvid is not allowed to access the microphone"; -"SNACK_BAR_DETAILS_TITLE_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" = "You missed a call because Olvid is not allowed to access the microphone"; -"SNACK_BAR_DETAILS_BODY_GRANT_PERMISSION_TO_RECORD" = "To received a call, you need to allow Olvid to access the microphone."; -"SNACK_BAR_DETAILS_BODY_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" = "To received a call, you need to allow Olvid to access the microphone. To never miss a call again, please go to Settings and grant Olvid access to the microphone."; -"GRANT_PERMISSION_TO_RECORD_BUTTON_TITLE" = "Allow microphone access"; -"GRANT_PERMISSION_TO_RECORD_IN_SETTINGS_BUTTON_TITLE" = "Go to Settings"; - -"SNACK_BAR_BODY_LAST_UPLOAD_BACKUP_HAS_FAILED" = "The last backup failed"; -"SNACK_BAR_TITLE_LAST_UPLOAD_BACKUP_HAS_FAILED" = "Show me"; -"SNACK_BAR_DETAILS_TITLE_LAST_UPLOAD_BACKUP_HAS_FAILED" = "Why should I fix this?"; -"SNACK_BAR_DETAILS_BODY_LAST_UPLOAD_BACKUP_HAS_FAILED" = "You should make sure your iCloud account is properly configured on this device. Once this is done, we can try again."; - -"DIALOG_TITLE_KEYCLOAK_IDENTITY_WAS_REVOKED" = "Identity provider removed"; -"DIALOG_MESSAGE_KEYCLOAK_IDENTITY_WAS_REVOKED" = "It seems that your account was removed from your company's identity provider. If you left your company, this is normal and you may continue using Olvid as a free user.\n\nIf you believe this is an error, please contact your administrator to re-register this identity provider with Olvid."; - -"AUTHENTICATION_REQUIRED" = "Authentication Required"; - -"AUTHENTICATION_REQUIRED_TOKEN_EXPIRED_MESSAGE" = "Your Olvid identity is managed by your company's identity provider. You need to re-authenticate with this identity provider to continue."; - -"USER_CHANGE_DETECTED" = "User change detected"; - -"AUTHENTICATION_REQUIRED_USER_ID_CHANGED_MESSAGE" = "You Olvid ID is managed by your company's identity provider. It seems you authenticated as a different user than usual. This is not supported.\n\nPlease contact your administrator or re-authenticate as the correct user."; - -"KEYCLOAK_REVOCATION" = "Revoke previous Olvid ID"; - -"KEYCLOAK_REVOCATION_BUTTON" = "Revoke previous ID"; - -"KEYCLOAK_REVOCATION_MESSAGE" = "Another Olvid ID is associated with your account on your company's identity provider. If you generated a new ID you need to revoke the previous one."; - -"KEYCLOAK_REVOCATION_SUCCESSFUL" = "Successfully revoked previous Olvid ID"; - -"KEYCLOAK_REVOCATION_FAILURE" = "Failed to revoke previous Olvid ID"; - -"ADD_CONTACT_BUTTON" = "Add contact"; - -"ADD_CONTACT_TITLE" = "Add a contact"; - -"DIALOG_TITLE_KEYCLOAK_SIGNATURE_KEY_CHANGED" = "Identity provider key change"; - -"DIALOG_MESSAGE_KEYCLOAK_SIGNATURE_KEY_CHANGED" = "Olvid detected a change in the cryptographic signature key of your identity provider. This should normally never happen.\n\nPlease contact your administrator and only press \"Update Key\" if she can confirm the key change was intentional. If unsure, press \"Cancel\"."; - -"BUTTON_LABEL_UPDATE_KEY" = "Update key"; - -"USER_CANNOT_MAKE_PAYMENT_TITLE" = "It seems you cannot make payments 😢"; -"USER_CANNOT_MAKE_PAYMENT_DESCRIPTION" = "Olvid paid options are made available through the App Store in-app purchases. It seems that you cannot make a payment right now. This may happen if your credit card has expired, or if your iPhone is restricted from accessing the Apple App Store (through parental control or enterprise management)."; - -"Directory" = "Directory"; - -"DELETION_IN_PROGRESS" = "Deletion in progress"; -"DELETION_TERMINATED" = "Deletion done"; - -"DRAG_AND_DROP_TO_CONFIGURE_PREFERRED_EMOJIS_LIST" = "Drop your favorite reactions here!"; - -"CONTACT_IS_NOT_ACTIVE_EXPLANATION_TITLE" = "Contact revoked by your company's identity provider"; - -"CONTACT_IS_NOT_ACTIVE_EXPLANATION_BODY" = "This contact was revoked by your company's identity provider. Their Olvid ID may have been compromised and the security of your communications cannot be guaranteed.\n\nIf you are sure your contact's Olvid ID was never compromised you may manually unblock them.\nPlease contact your administrator for more details."; - -"UNBLOCK_CONTACT" = "Unblock contact"; - -"UNBLOCK_CONTACT_CONFIRMATION" = "Do you really wish to unblock the contact?"; - -"EXPLANATION_CONTACT_REVOKED_AND_UNBLOCKED" = "This contact was revoked by your company's identity provider. Their Olvid ID may have been compromised and the security of your communications cannot be guaranteed.\n\nYou previously decided to manually unblock them. If you are unsure about your decision, it is recommended you re-block this contact.\nPlease contact your administrator for more details."; - -"REBLOCK_CONTACT_CONFIRMATION" = "Do you really want to re-block the contact?"; - -"REBLOCK_CONTACT" = "Re-block contact"; - -"DIALOG_TITLE_OUTDATED_VERSION" = "Update required"; -"DIALOG_MESSAGE_OUTDATED_VERSION" = "Your version of Olvid is outdated and needs to be updated.\n\nYou are probably missing out on many new features and we cannot guarantee the compatibility of your version with newer versions of the app that your contacts may use."; -"BUTTON_LABEL_UPDATE" = "Update"; -"BUTTON_LABEL_REMIND_ME_LATER" = "Remind me later"; - -"DIALOG_OWNED_IDENTITY_WAS_REVOKED_BY_KEYCLOAK_TITLE" = "Your Olvid ID was revoked"; -"DIALOG_OWNED_IDENTITY_WAS_REVOKED_BY_KEYCLOAK_MESSAGE" = "Your company's identity provider revoked your Olvid ID. Please contact your administrator."; - -"CONTACT_REVOKED_BY_COMPANY_IDENTITY_PROVIDER" = "Contact revoked by your company's identity provider"; - -"Active" = "Active"; - -"CERTIFIED_BY_IDENTITY_PROVIDER" = "Certified by identity provider"; - -"DEVICE %lld" = "Device %lld"; - -"TECHNICAL_DETAILS" = "Technical details"; - -"DETAILS_SIGNED_BY_IDENTITY_PROVIDER" = "Details signed by the identity provider"; - -"SIGNED_DETAILS_DATE" = "Signature date"; - -"KEYCLOAK_ID" = "Keycloak ID"; - -"SHOW_CONTACT_DETAILS" = "Show all contact details"; - -"VALUE_COPIED" = "Value copied"; - -"DEFAULT_EMOJI" = "Default quick emoji"; - -"SCAN_QR_CODE" = "Scan a QR code"; - -"CONFIGURATION_SCAN" = "Configuration scan"; - -"IDENTITY_PROVIDER_CONFIGURED_SUCCESS" = "The identity provider of your company was successfully configured. Press \"Authenticate\" to log in and retrieve your personal information."; - -"IDENTITY_PROVIDER_CONFIGURED_FAILURE" = "The identity provider of your company does not seem to be available. Please contact your administrator"; - -"MANUAL_CONFIGURATION" = "Manual configuration"; - -"WILL_INVITE_%@_AFTER_ONBOARDING" = "We will invite %@ right after the onboarding process ✌️."; - -"WILL_PROCESS_API_KEY_AFTER_ONBOARDING" = "The API key will be processed right after the onboarding process ✌️."; - -"CLIENT_ID" = "Client Id"; - -"CLIENT_SECRET" = "Client secret"; - -"IDENTITY_PROVIDER_CONFIGURATION" = "Identity provider configuration"; - -"CURRENT_DEVICE" = "This device"; - -"OTHER_DEVICE" = "Other device"; - -"NEW_COMPOSE_MESSAGE_VIEW_PREFERENCES" = "Customize the message compose area"; - -"NEW_COMPOSE_MESSAGE_VIEW_ACTION_ORDER_HEADER" = "Preferred message buttons order"; - -"NEW_COMPOSE_MESSAGE_VIEW_ACTION_ORDER_FOOTER" = "The first button will be located next to the text field allowing to compose messages. The buttons you use the most should be put at the top of this list so that you can access them in one tap."; - -"COMPOSE_MESSAGE_SETTINGS" = "Customize"; - -"OPEN_SOURCE_LICENCES" = "Open Source Licenses"; - -"HOW_TO_ADD_REACTION_TO_A_MESSAGE" = "You can double a tap a message to add a reaction."; - -"RESET_COMPOSE_MESSAGE_VIEW_ACTIONS_ORDER" = "Reset buttons order to default"; - -"UNAVAILABLE_MESSAGE" = "Unavailable message"; - -"RESET_DISCUSSION_EMOJI_TO_DEFAULT" = "Reset"; - -"RESET_DISCUSSION_EMOJI_TO_DEFAULT_DISCUSSION_LEVEL" = "Reset"; - -"DEFAULT_EMOJI_AT_APP_LEVEL" = "Quick emoji"; - -"QUICK_EMOJI_EXPLANATION" = "The quick emoji is available when the text field allowing to compose messages is empty. Tapping this emoji sends it emmediately. Tapping this emoji twice (or three times) sends it twice (or three times). Here, you can customize the default quick emoji for all discussions. This choice can be overriden at the discussion level, by customizing the quick emoji of the discussion."; - -"DISCUSSION_QUICK_EMOJI" = "Quick emoji for this discussion"; - -"SNACK_BAR_BODY_IOS_VERSION_WILL_BE_UNSUPPORTED" = "⚠️ Support for your iOS version will soon be dropped."; -"SNACK_BAR_BODY_IOS_VERSION_SHOULD_UPGRADE" = "iOS upgrade recommended."; -"SNACK_BAR_BODY_IOS_VERSION_ACCEPTABLE" = "iOS upgrade recommended."; - -"SNACK_BAR_TITLE_IOS_VERSION_WILL_BE_UNSUPPORTED" = "More"; -"SNACK_BAR_TITLE_IOS_VERSION_SHOULD_UPGRADE" = "More"; -"SNACK_BAR_TITLE_IOS_VERSION_ACCEPTABLE" = "More"; - -"SNACK_BAR_DETAILS_TITLE_IOS_VERSION_WILL_BE_UNSUPPORTED" = "Support for your iOS version will soon be dropped"; -"SNACK_BAR_DETAILS_TITLE_IOS_VERSION_SHOULD_UPGRADE" = "iOS upgrade recommended"; -"SNACK_BAR_DETAILS_TITLE_IOS_VERSION_ACCEPTABLE" = "iOS upgrade recommended"; - -"SNACK_BAR_DETAILS_BODY_IOS_VERSION_WILL_BE_UNSUPPORTED" = "We detected that you use an iOS version that Olvid will not support anymore, starting with the next update. We appologize for this. If possible, we recommend you upgrade to the latest iOS version.\nTo do so, open the Settings App on your device. Go to General and tap Software Update."; -"SNACK_BAR_DETAILS_BODY_IOS_VERSION_SHOULD_UPGRADE" = "We detected that you are not using the latest version of iOS. You are missing out on important features of Olvid. To make the most out of Olvid, you should upgrade iOS.\nTo do so, open the Settings App on your device. Go to General and tap Software Update."; -"SNACK_BAR_DETAILS_BODY_IOS_VERSION_ACCEPTABLE" = "To make sure you use the latest version of iOS, go to Settings > General, then tap Software Update."; - -"MESSAGE_REACTION_NOTIFICATION_%@_%@" = "Reacted %@ to: %@"; -"MESSAGE_REACTION_NOTIFICATION_%@" = "Reacted %@ to your message"; - -"NEW_REACTION" = "New reaction"; -"TAP_TO_SEE_THE_REACTION" = "Tap to see the reaction."; - -/* Notification title */ -"NEW_REACTION_FROM_%@" = "New reaction from %@"; - -"CAPABILITIES" = "Capabilities"; - -"CAPABILITY_WEBRTC_CONTINUOUS_ICE" = "VoIP v2"; - -"DELETE_OWN_REACTION" = "Delete my reaction"; - -"VALIDATING_ENTERPRISE_CONFIGURATION" = "Performing an automatic configuration..."; - -"CONTACTS_AND_GROUPS" = "Contacts & Groups"; - -"Everyone" = "Everyone"; - -"No one" = "No one"; - -"AUTO_ACCEPT_GROUP_INVITES_FROM" = "Automatically accept group invitations from…"; - -"AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_TITLE" = "Heads up!"; - -"CAPABILITY_ONE_TO_ONE_CONTACTS" = "One2One contacts "; - -"CAPABILITY_GROUPS_V2" = "Groups v2"; - -"INVITE_%@_IF_YOU_WANT_ONE_TO_ONE_DISCUSSION" = "To have a private discussion with %@ and add them to your contacts, touch \"Invite\"."; - -"ONE_TO_ONE_DISCUSSION_INVITATION_SENT_TO_%@" = "You invited %@ to have a private discussion. Please wait until they accept it 🤞."; - -"ONE_TO_ONE_INVITATION_SENT" = "Invitation sent"; - -"ONE_TO_ONE_INVITATION_RECEIVED" = "Private discussion invitation"; - -"ONE_TO_ONE_DISCUSSION_INVITATION_RECEIVED_FROM_%@" = "To start a private discussion with %@ and add them to your contacts, touch \"Accept\"."; - -"STOP_ONE_TO_ONE_DISCUSSION_WITH_CONTACT_ALERT_TITLE" = "Remove from contacts?"; - -"DO_YOU_WISH_TO_STOP_ONE_TO_ONE_DISCUSSION_WITH_@_ALERT_MESSAGE" = "Removing %1$@ from your contacts will end the private discussion you have with this user (in other words, you will no longer be able to exchange messages in your private discussion with %1$@). You will still be able to exchange messages in groups you have in common."; - -"DO_STOP_ONE_TO_ONE_DISCUSSION" = "Remove from contacts"; - -"DOWNGRADE_CONTACT_TO_NON_ONE_TO_ONE_BUTTON_TITLE" = "Remove from contacts"; - -"DELETE_OLVID_USER" = "Delete this user"; - -"OTHER_KNOWN_USERS" = "Other known users"; - -"EXPLANATION_PLACED_ABOVE_LIST_OF_NON_ONE_TO_ONE_CONTACTS" = "The following users are not part of your contacts (yet), so you cannot have a private discussion with them. But you can invite them easily 🚀!"; - -"%@_INVITES_YOU_TO_ONE_TO_ONE_DISCUSSION" = "%@ invites you to have a private discussion. If you accept, this user will be added to your contacts."; - -"DELETE_USER_ACTION_TITLE" = "Delete this user now"; - -"INVITE_REQUIRED_ALERT_TITLE" = "Invitation required"; - -"YOU_NEED_TO_INVITE_%@_BEFORE_HAVING_DISCUSSION_ALERT_MESSAGE" = "You cannot have a private discussion with %@ until they are part of your contacts. Do you wish to invite them now?"; - -"SNACK_BAR_BODY_NEW_APP_VERSION_AVAILABLE" = "A new version of Olvid is available 🥳!"; - -"SNACK_BAR_BUTTON_TITLE_NEW_APP_VERSION_AVAILABLE" = "Info"; - -"SNACK_BAR_DETAILS_TITLE_NEW_APP_VERSION_AVAILABLE" = "A new version of Olvid is available 🥳!"; - -"SNACK_BAR_DETAILS_BODY_NEW_APP_VERSION_AVAILABLE" = "A new version of Olvid is available from the App Store. You are missing out amazing new features 🤓! We recommend you upgrade now 🚀."; - -"GO_TO_APP_STORE_BUTTON_TITLE" = "Open the App Store"; - -"INSTALLED_APP_IS_OUTDATED_ALERT_TITLE" = "Your Olvid version is obsolete 😱!"; - -"INSTALLED_APP_IS_OUTDATED_ALERT_BODY" = "But don't worry 😊. You can upgrade now to the latest version of Olvid and discover its amazing new features 🤓! We recommend you upgrade now 🚀."; - -"UPGRADE_NOW" = "Upgrade now"; - -"MINIMUM_SUPPORTED_VERSION" = "Minimum supported version"; - -"MINIMUM_RECOMMENDED_VERSION" = "Minimum recommended version"; - -"UPGRADE_OLVID_NOW" = "Upgrade Olvid now"; - -"SYNC" = "Sync"; - -"SYNC_REQUEST_SENT" = "Sync request sent"; - -"Choose" = "Choose"; - -"SEND_MESSAGE" = "Send message"; - -"FAILED" = "Failed"; - -"CALL_INITIALISATION_NOT_SUPPORTED" = "Secure calls are not supported"; - -"CALL_FAILED" = "Call failed 😟"; - -"Choose" = "Choose"; - -"YOUR_MESSAGE" = "Your message..."; - -"HOW_TO_ADD_MESSAGE_REACTION" = "Double tap a message to add a reaction."; - -"HOW_TO_ADD_REACTION_TO_PREFFERED" = "Add a star to a reaction to add it to your favorite reactions."; - -"HOW_TO_REMOVE_OWN_REACTION" = "Tap to remove your reaction."; - -"Gallery" = "Gallery"; - -"Select" = "Select"; - -"DELETE_ITEMS" = "Delete items"; - -"SHOW_IN_DISCUSSION" = "Show in discussion"; - -"NOT_PART_OF_THE_GROUP_ANYMORE" = "You are not part of this group anymore, either because you left it, because an administrator removed you, or because the group was deleted 🥲."; - -"REJOINED_GROUP" = "You are again part of this group ✌️."; - -"CONTACT_%@_IS_ONE_TO_ONE_AGAIN" = "%@ is part of your contacts again, you can continue your discussion where you left off 🤗."; - -"Medias" = "Medias"; - -"UNKNOWN_USER" = "Unknown user"; - -"CREATE_GROUP_WITH_OWN_PERMISSION_ADMIN" = "Create a group"; - -"CREATE_FIRST_GROUP_WITH_OWN_PERMISSION_ADMIN" = "Create your first group"; - -"GROUPS_THAT_YOU_ADMINISTER" = "Groups that you administer"; - -"Forward" = "Forward"; - -"Forwarded" = "Forwarded"; - -"NO_SOUNDS" = "None"; - -"ATTACHMENTS_INFO" = "Attachments"; - -"NOTIFICATION_SOUNDS_TITLE_POLYPHONIC" = "Polyphonic tones"; - -"NOTIFICATION_SOUNDS_TITLE_NEUTRAL" = "Neutral tones"; - -"NOTIFICATION_SOUNDS_NEUTRAL_CATEGORY_TITLE" = "Neutral"; -"NOTIFICATION_SOUNDS_ALARM_CATEGORY_TITLE" = "Alarms"; -"NOTIFICATION_SOUNDS_ANIMAL_CATEGORY_TITLE" = "Animals"; -"NOTIFICATION_SOUNDS_TOY_CATEGORY_TITLE" = "Toys"; - -"BUSY" = "Busy"; -"CHIME" = "Chime"; -"BRING_THE_DRAMA" = "Bring the drama"; -"FRENZY" = "Frenzy"; -"HORN_BOAT" = "Fog horn"; -"HORN_BUS" = "Bus Horn"; -"HORN_CAR" = "Car Horn"; -"HORN_DIXIE" = "1916 car horn"; -"HORN_TAXI" = "Taxi horn"; -"HORN_TRAIN_1" = "Train horn 1"; -"HORN_TRAIN_2" = "Train horn 2"; -"PARANOID" = "Paranoid"; -"WEIRD" = "Weird"; - -"BIRD_CARDINAL" = "Cardinal"; -"BIRD_COQUI" = "Coqui"; -"BIRD_CROW" = "Crow"; -"BIRD_CUCKOO" = "Cuckoo"; -"BIRD_DUCK_QUACK" = "Duck"; -"BIRD_DUCK_QUACKS" = "Duck quacks"; -"BIRD_EAGLE" = "Eagle"; -"BIRD_IN_FOREST" = "Bird in the forest"; -"BIRD_MAGPIE" = "Magpie"; -"BIRD_OWL_HORNED" = "Horned owl"; -"BIRD_OWL_TAWNY" = "Tawny owl"; -"BIRD_TWEET" = "Bird Tweet"; -"BIRD_WARNING" = "Hawk"; -"CHICKEN_ROOSTER" = "Rooster 1"; -"CHICKEN_ROSTER" = "Rooster 2"; -"CHICKEN" = "Chicken"; -"CICADA" = "Cicada"; -"COW_MOO" = "Cow"; -"ELEPHANT" = "Elephant"; -"PANTHERA" = "Panthera"; -"TIGER" = "Tiger"; -"FROG" = "Frog"; -"GOAT" = "Goat"; -"HORSE_WHINNIES" = "Horse"; -"PUPPY" = "Puppy"; -"SHEEP" = "Sheep"; -"TURKEY_GOBBLE" = "Turkey"; -"TURKEY_NOISES" = "Turkeys"; - -"BELL" = "Bell"; -"BLOCK" = "Block"; -"CALM" = "Clam"; -"CLOUD" = "Cloud"; -"HEY_CHAMP" = "Hey champ"; -"KOTO" = "Koto"; -"MODULAR" = "Modular"; -"ORINGZ" = "Oring"; -"POLITE" = "Polite"; -"SONAR" = "Sonar"; -"STRIKE" = "Strike"; -"UNPHASED" = "Unphased"; -"UNSTRUNG" = "Unstrung"; -"WOODBLOCK" = "Woodblock"; - -"CIRCUS_CLOWN_HORN" = "Circus clown horn"; -"FUNNY_FANFARE" = "Funny fanfare"; -"ARE_YOU_KIDDING" = "Are you kidding?"; -"ENOUGH_WITH_THE_TALKING" = "Enough with the talking"; -"NESTLING" = "Nestling"; -"NICE_CUT" = "Nice cut"; -"OH_REALLY" = "Oh really"; -"SPRINGY" = "Springy"; - -"BASSOON" = "Bassoon"; -"BRASS" = "Brass"; -"CLARINET" = "Clarinet"; -"CLAV_FLY" = "Kemence"; -"CLAV_GUITAR" = "Cura"; -"FLUTE" = "Flute"; -"GLOCKENSPIEL" = "Glockenspiel"; -"HARP" = "Harp"; -"KOTO" = "Koto"; -"OBOE" = "Oboe"; -"PIANO" = "Piano"; -"PIPA" = "Pipa"; -"SAXO" = "Saxo"; -"STRINGS" = "Strings"; -"SYNTH_AIRSHIP" = "Synth Airship"; -"SYNTH_CHORDAL" = "Synth Chordal"; -"SYNTH_COSMIC" = "Synth Cosmic"; -"SYNTH_DROPLETS" = "Synth Droplets"; -"SYNTH_EMOTIVE" = "Synth Emotive"; -"SYNTH_FM" = "Synth FM"; -"SYNTH_LUSHARP" = "Synth LushArp"; -"SYNTH_PECUSSIVE" = "Synth Percussive"; -"SYNTH_QUANTIZER" = "Synth Quantizer"; - -"NOTIFICATION_SOUNDS_SUBTITLE_POLYPHONIC" = "When receiving a message, a random note of the selected instrument will be played. Give it a try by tapping your preferred choice several times 😉."; - -"SYSTEM_SOUND" = "System sound"; - -"GRACE_PERIOD" = "Require authentication"; - -"PIN" = "PIN"; - -"PASSWORD" = "Password"; - -"CREATE_YOUR_PASSCODE" = "Create your passcode"; - -"CONFIRM_YOUR_PASSCODE" = "Confirm your passcode"; - -"ENTER_YOUR_PASSCODE" = "Enter your passcode"; - -"CREATE_MY_PASSCODE" = "Create my passcode"; - -"LOCKED_OUT_FOR" = "Locked for "; - -"LOCKED_OUT" = "Locked Out"; - -"RETRY_WITH_TOUCH_ID" = "Retry with Touch ID"; - -"RETRY_WITH_FACE_ID" = "Retry with Face ID"; - -"LOCKED_OUT_EXPLANATION" = "Olvid is locked following too many wrong passcode attempts."; - -"LOCKOUT_CLEAN_EPHEMERAL_TITLE" = "Erase sensitive messages after 3 bad passcode attempts"; - -"LOCKOUT_CLEAN_EPHEMERAL_EXPLANATION" = "When activated, entering a wrong passcode 3 times in a row will silently erase all read once and limited visibility messages."; - -"BIOMETRY_NOT_ENROLLED_ERROR_TITLE" = "Please set up Face ID or Touch ID"; - -"BIOMETRY_NOT_ENROLLED_ERROR_MESSAGE" = "To use this feature, you need to set up either Face ID or Touch ID in the Settings app."; - -"NO_GRACE_PERIOD_EXPLANATION" = "Olvid will be locked immediately after being closed."; - -"GRACE_PERIOD_EXPLANATION_%@" = "After being closed, Olvid will be locked after %@."; - -"GRACE_PERIOD_TITLE_%@" = "after %@"; - -"OTHER_GROUP_MEMBERS" = "Other group members"; - -"EDIT_GROUP_MEMBERS" = "Edit group members"; - -"IS_ADMIN" = "Admin"; - -"IS_NOT_ADMIN" = "Not admin"; - -"ADD_GROUP_MEMBERS" = "Add group members"; - -"PUBLISH" = "Publish"; - -"GROUP_V2_PUBLISHED_DETAILS_EXPLANATION_%@" = "The group details were updated. If you wish to use these new details instead of the ones on your %@, please tap the button bellow."; - -"CHOOSE_GROUP_NICKNAME" = "Choose a group nickname"; - -"ADD_MEMBER_BY_TAPPING_EDIT_GROUP_MEMBERS_BUTTON" = "You are the only member of this group 😅. Start adding group members by tapping the \"Edit members\" button above ☝️."; - -"GROUP_UPDATE_IN_PROGRESS_EXPLANATION_TITLE" = "Update in progress"; - -"GROUP_UPDATE_IN_PROGRESS_EXPLANATION_BODY" = "An update of this group is in progress. Please wait until it is done to make further modifications."; - -"MANUAL_RESYNC_OF_GROUP_V2" = "Resynchronize this group"; - -"SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_TITLE" = "You cannot leave the group for now"; - -"SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_MESSAGE" = "Since you are the only administrator of this group, you cannot leave it now (you would leave the group with no administrator). You can name another administrator among the other group members and try again."; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_TITLE" = "Do you really wish to leave this group?"; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_MESSAGE" = "Please note that this action is irreversible (unless a group administrator decides to invite you again later on)."; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_BUTTON_TITLE" = "Leave this group"; - -"LEAVE_GROUP" = "Leave this group"; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_TITLE" = "Heads-up! Do you really wish to disband this group?"; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_MESSAGE" = "Please note that this action is irreversible. I you confirm, this group will be deleted for all members."; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_BUTTON_TITLE" = "Delete this group for all members"; - -"DISBAND_GROUP" = "Disband this group"; - -"UNKNOWN_GROUP_MEMBER_NAME" = "Unknown name"; - -"IS_PENDING" = "Pending"; - -"IS_PENDING_ADMIN" = "Pending\nadmin"; - -"SAVE_CUSTOM_GROUP_VALUES" = "Save your modifications"; - -"EDIT_GROUP_DETAILS_AS_ADMINISTRATOR_BUTTON_TITLE" = "Edit title"; - -"EDIT_GROUP_MEMBERS_AS_ADMINISTRATOR_BUTTON_TITLE" = "Edit members"; - -"CHOOSE_GROUP_CUSTOM_NAME_AND_PHOTO_TITLE" = "Custom photo and group name"; - -"GROUP_TITLE_WHEN_NO_SPECIFIC_TITLE_IS_GIVEN" = "Group with no name 😅"; - -"MEMBERS_OF_GROUP_V2_WERE_UPDATED_SYSTEM_MESSAGE" = "Group members have been updated. Tap to learn more."; - -"CHOSEN_GROUP_MEMBERS" = "Chosen group members"; - -"CLONE_THIS_GROUP" = "Clone this group"; - -"CLONE_THIS_GROUP_V1_TO_GROUP_V2" = "Clone this group"; - -"SOME_GROUP_MEMBERS_MUST_UPGRADE" = "Some members must upgrade Olvid"; - -"FOLLOWING_MEMBERS_MUST_UPGRADE_BEFORE_CREATING_GROUP_V2_%@" = "In order to create a group V2, all group members must use a recent version of Olvid 🤓. Please try again after asking the following members to upgrade to the latest version of Olvid:\n%@."; - -"YOU_ARE_NOW_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" = "You are now a group administrator 😎."; - -"YOU_ARE_NO_LONGER_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" = "You are no longer a group administrator."; - -"PLEASE_AUTHENTICATE" = "Authentication required"; - -"PLEASE_NOTE_THAT_YOUR_CUSTOM_PASSCODE_CANNOT_BE_RECOVERED" = "Please note that if you forget your passcode, it cannot be recovered and you won't be able to access Olvid anymore."; - -"CLONED_GROUP_NAME_FROM_ORIGINAL_NAME_%@" = "Copy of %@"; - -"COMPUTE_CKRECORD_COUNT" = "Compute iCloud record count"; - -"DISK_USAGE" = "Storage used"; - -"REFERENCED_BY_DATABASE" = "Referenced by database"; - -"APP_DIRECTORIES" = "Directories within the app"; - -"ENGINE_DIRECTORIES" = "Directories within the engine"; - -"ABOUT_DISKUSAGEVIEW_%@" = "This screen allows you to evaluate the storage used by Olvid on your %@. Beware though, the total storage is not the sum of all the values indicated here (as Olvid uses deduplication techniques). To evaluate the total storage, it is in general sufficient to consider the values referenced by the database"; - -"IS_DELETING" = "is deleting"; - -"ENABLE_AUTOMATIC_BACKUP_AND_CONTINUE" = "Activate automatic backup"; - -"ESTIMATING_TIME_REMAINING" = "Estimating remaining time..."; - -"YOU_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE" = "You took a screenshot of a sensitive message, other participants have been notified."; - -"CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_%@" = "%@ took a screenshot of a sensitive message."; - -"CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_WHEN_CONTACT_IS_UNKNOWN" = "A participant took a screenshot of a sensitive message."; - -"ENABLE" = "Enable"; - -"PLEASE_CHOOSE_THE_BACKUP_TO_RESTORE" = "Please choose the backup to restore"; - -"TITLE_BACKUP_RESTORED" = "Backup restored"; - -"ENABLE_AUTOMATIC_BACKUP_EXPLANATION" = "The backup was successfully restored. To make sure you can restore a fresh backup the next time you need to, we recommend to activate automatic iCloud backups."; - -"RESTORE_BACKUP_FAILED_EXPLANATION" = "The backup could not be restored. If you can, we recommend you try to restore another backup."; - -"KEYCLOAK_REVOCATION_FORBIDDEN_TITLE" = "You cannot revoke your identity"; - -"KEYCLOAK_REVOCATION_FORBIDDEN_MESSAGE" = "Please contact your administrator."; - -"Processing" = "Processing"; - -"Unprocessed" = "Unprocessed"; - -"Metadata" = "Metadata"; - -"You selected to add %@ to your contacts. Do you want to proceed?" = "You selected to add %@ to your contacts. Do you want to proceed?"; - -"Unread" = "Unread"; - -"EXPORT_TMP_DIRECTORY" = "Export the tmp directory"; - -"SOME_OF_YOUR_CONTACTS_MAY_NOT_APPEAR_AS_GROUP_V2_CANDIDATES" = "Please choose who to add to this group. Can't find the user you are looking for? Please ask them to upgrade to the latest version of Olvid 🚀."; - -"EXPLANATION_FOR_CLONING_A_GROUP_V1_TO_GROUP_V2" = "This group does not support more than one administrator. But you can clone this group into a new one that will 🚀!"; - -"TITLE_NEVER_MISS_A_MESSAGE" = "Never miss a message"; - -"TITLE_NEVER_MISS_A_SECURE_CALL" = "Never miss a call"; - -"EXPLANATION_WHY_RECORD_PERMISSION_IS_IMPORTANT" = "To place or receive secure calls ☎️, and to record voice messages 🎵, Olvid needs access to the microphone.\n\nTo make sure you never miss a secure call, we recommend you grant access now 🤓."; - -"BUTON_TITLE_ACTIVATE_NOTIFICATION" = "Allow notifications"; - -"BUTON_TITLE_REQUEST_RECORD_PERMISSION" = "Grant access to the microphone"; - -"PERFORM_INTERACTION_DONATION_LABEL" = "Suggest Olvid's discussions when sharing"; - -"PERFORM_INTERACTION_DONATION_FOOTER" = "If you activate this option, your Olvid discussions will be suggested when sharing from another app. This choice can be overridden at the discussion level."; - -"PERFORM_INTERACTION_DONATION_FOR_THIS_DISCUSSION_LABEL" = "Suggest this discussion when sharing"; - -"PERFORM_INTERACTION_DONATION_FOR_THIS_DISCUSSION_FOOTER" = "If you activate this option, this discussion will be suggested when sharing from another app."; - -"DISCUSSIONS_FILTER_CELL_PICKER_TEXT" = "Filter discussions"; - -"MY_OWN_IDS" = "My profiles"; - -"CREATE_NEW_OWNED_IDENTITY" = "Create a new profile"; - -"DELETE_THIS_IDENTITY_QUESTION_TITLE_%@" = "Delete the profile \"%@\"?"; - -"DELETE_THIS_IDENTITY_QUESTION_MESSAGE" = "Deleting this profile will delete any information related to it from your device. This includes the contacts, groups, and the content of all your discussions (messages and attachments) for this profile. Your other profiles will not be affected by this operation.\nIf you have enabled backups in Olvid, your future backups will not contain any trace of this profile and you will not be able to restore it."; - -"DELETE_THIS_IDENTITY_BUTTON" = "Delete this profile"; - -"CHOOSE_PASSWORD" = "Choose a password"; - -"HIDE_PROFILE_EXPLANATION" = "Hidden profiles are protected by a password and do not appear in you profile list until you enter this password.\nAccessing a hidden profile requires a long press on the top left button shown on each tab.\nIf you forget this password, you will permanently lose access to this profile 😱!"; - -"ENTER_PASSWORD" = "Enter a password"; - -"CONFIRM_PASSWORD" = "Confirm password"; - -"CREATE_PASSWORD" = "Create password"; - -"EDIT_CURRENT_IDENTITY" = "Edit current profile"; - -"HIDE_THIS_IDENTITY" = "Hide this profile"; - -"UNHIDE_THIS_IDENTITY" = "Unhide this profile"; - -"SHOW_OWNED_IDENTITY_DETAILS" = "Show profile informations"; - -"FAILED_TO_HIDE_OWNED_ID_ALERT_TITLE" = "The profile could not be hidden"; - -"FAILED_TO_HIDE_OWNED_ID_ALERT_MESSAGE" = "Please try again. When choosing the password, please make sure it is not a prefix of an existing hidden profile password."; - -"UNHIDE_OWNED_IDENTITY_ALERT_TITLE" = "Unhide this profile?"; - -"UNHIDE_OWNED_IDENTITY_ALERT_MESSAGE" = "You are about to unhide a profile. If you do so, the profile will be systematically shown in the profile switcher, with no need for a specific password."; - -"UNHIDE_OWNED_IDENTITY_ALERT_ACTION_STAY_HIDDEN" = "Do not unhide"; - -"UNHIDE_OWNED_IDENTITY_ALERT_ACTION_UNHIDE" = "Unhide"; - -"OPEN_HIDDEN_PROFILE_ALERT_TITLE" = "Open a hidden profile"; - -"OPEN_HIDDEN_PROFILE_ALERT_MESSAGE" = "If you created a hidden profile, please enter its password to open it."; - -"AT_LEAST_ONE_UNHIDDEN_PROFILE_MUST_EXIST_TITLE" = "This profile cannot be hidden at the moment"; - -"AT_LEAST_ONE_UNHIDDEN_PROFILE_MUST_EXIST_MESSAGE" = "You must have at least one visible profile. Since this profile is the only one you have, you cannot hide it. Nonetheless, you can create a new profile and try again."; - -"DELETE_THIS_LAST_UNHIDDEN_IDENTITY_QUESTION_TITLE" = "Delete this last profile?"; - -"DELETE_THIS_LAST_UNHIDDEN_IDENTITY_QUESTION_MESSAGE" = "Deleting this profile will delete any information related to it from your device. This includes the contacts, groups, and the content of all your discussions (messages and attachments) for this profile.\n\nThis is your only visible profile and if you have any hidden profile, they will be deleted simultaneously.\nIf you have enabled backups in Olvid, your future backups will not contain any trace of this profile and you will not be able to restore it."; - -"NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_TITLE" = "Do you wish to notify your contacts?"; - -"NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_MESSAGE" = "We recommend you do notify your contacts. By doing so:\n- your profile will be deleted from your contact's devices,\n- the groups you created will be disbanded if your are the only administrator,\n- you will leave other groups.\n\nIf you do not notify, your contacts may still try sending you messages and might not realize these messages cannot be delivered."; - -"NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_DO_NOTIFY_CONTACTS_ACTION" = "Notify my contacts (recommended)"; - -"NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_DO_NOT_NOTIFY_CONTACTS_ACTION" = "Do not notify my contacts"; - -"TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_TITLE_%@" = "Confirm the deletion of the profile \"%@\""; - -"TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_MESSAGE" = "To confirm the deletion of your profile, please type 'DELETE' to proceed."; - -"TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_DO_DELETE_ACTION" = "Delete my profile"; - -"TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_WORD_TO_TYPE" = "DELETE"; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_TITLE" = "When to close an open hidden profile?"; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_MESSAGE" = "Please choose when an open profile should be closed. By default, hidden profiles will be closed when manually switching to another profile."; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_SCREEN_LOCK" = "When Olvid lock screen activates"; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_MANUAL_SWITCHING" = "When manually switching profile"; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_BACKGROUND" = "When Olvid enters background"; - -"CLOSE_OPEN_HIDDEN_PROFILE" = "Close open hidden profile"; - -"HIDDEN_PROFILES" = "Hidden profiles"; - -"AFTER_TEN_SECONDS" = "after 10 seconds"; -"AFTER_THIRTY_SECONDS" = "after 30 seconds"; -"AFTER_ONE_MINUTE" = "after 1 minute"; -"AFTER_TWO_MINUTE" = "after 2 minutes"; -"AFTER_FIVE_MINUTE" = "after 5 minutes"; - -"TIME_INTERVAL_FOR_BG_HIDDEN_PROFILE_CLOSE_POLICY" = "Close hidden profile when Olvid enters background..."; - -"ALERT_SHOULD_ACTIVATE_SCREEN_LOCK_AFTER_CREATING_HIDDEN_PROFILE_TITLE" = "Olvid lock screen not configured"; -"ALERT_SHOULD_ACTIVATE_SCREEN_LOCK_AFTER_CREATING_HIDDEN_PROFILE_MESSAGE" = "You chose to close any open hidden profile when the Olvid lock screen activate. However you have not configured any lock screen.\n\nIn the current setting, hidden profiles will only be closed when manually switching to another profile.\n\nPlease go to the privacy settings to configure a lock screen."; -"ALERT_SHOULD_ACTIVATE_SCREEN_LOCK_AFTER_CREATING_HIDDEN_PROFILE_ACTION_GOTO_PRIVACY_SETTINGS" = "Go to privacy settings"; - -"PLEASE_CHOOSE_PROFILE_TO_PROCESS_OLVID_URL" = "Please choose the profile you wish to use."; - -"EDIT_OWNED_IDENTITY_NICKNAME" = "Edit my nickname"; - -"ALERT_FOR_EDITING_NICKNAME_TITLE" = "Edit my nickname"; -"ALERT_FOR_EDITING_NICKNAME_MESSAGE" = "Your nickname is for your eyes only and allows you to easily distinguish your profiles from each other."; - -"DISCUSSIONS_LIST_SELECTED_DISCUSSION_GROUP_SUBTITLE" = "Participants: %d"; - -"SHARE_VIEW_PROFILE_SELECTION_BAR_TITLE" = "Profile"; - -"PLEASE_WAIT_DURING_UPDATE" = "Update in progress. Please do not quit Olvid."; - -"Message" = "Message"; - -"ANOTHER_PROFILE_HAS_VALID_API_KEY" = "This profile benefits from the license of another profile."; - -"Stored" = "Stored"; - -"ENABLE_RUNNING_LOGS" = "Enable in-app logs"; - -"IN_APP_LOGS" = "In-app logs"; - -"NO_OTHER_MEMBER_FOR_NOW" = "No other group member for now."; - -"SHOW_CURRENT_COORDINATORS_OPS" = "Show current coordinators operations"; - -"SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_AS_KEYCLOAK_TITLE" = "You cannot leave the group"; - -"SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_AS_KEYCLOAK_MESSAGE" = "Since this group a managed by your company's server, you cannot leave it."; - -"ARCHIVE" = "Archive"; - -"UNARCHIVE" = "Unarchive"; - -"PERFORM_CONTACT_INTRODUCTION" = "Perform contact introduction"; - -/* Picker title for the mention notification mode */ -"discussion-expiration-settings-view.body.section.mention-notification-mode.picker.title" = "Mention Notification Mode"; -/* Display title for the `default` value for mention notification mode. Takes one argument, the global discussion notification mode */ -"discussion-mention-notification-mode.display-title.default" = "Default (%1$@)"; -/* Display title for the `always` value for mention notification mode */ -"discussion-mention-notification-mode.display-title.always" = "Always"; -/* Display title for the `never` value for mention notification mode */ -"discussion-mention-notification-mode.display-title.never" = "Never"; -/* Picker footer for the mention notification mode */ -"discussion-expiration-settings-view.body.section.mention-notification-mode.picker.footer.title" = "Setting to be notified when being mentioned within this Discussion"; - -/* Picker title for the default mention notification mode */ -"discussion-default-settings-view.mention-notification-mode.picker.title" = "Mention Notification Mode"; -/* Display title for the `always` value for mention notification mode */ -"discussion-default-settings-view.mention-notification-mode.picker.mode.always" = "Always"; -/* Display title for the `never` value for mention notification mode */ -"discussion-default-settings-view.mention-notification-mode.picker.mode.never" = "Never"; -/* Picker footer for the default mention notification mode */ -"discussion-default-settings-view.mention-notification-mode.picker.footer.title" = "Global Setting to be notified when being mentioned within a Discussion"; diff --git a/iOSClient/ObvMessenger/ObvMessenger/en.lproj/Localizable.stringsdict b/iOSClient/ObvMessenger/ObvMessenger/en.lproj/Localizable.stringsdict deleted file mode 100644 index 96fd9fb5..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/en.lproj/Localizable.stringsdict +++ /dev/null @@ -1,340 +0,0 @@ - - - - - You are about to introduce X to Y and count other contacts. - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - You are about to introduce %2$@ to %3$@. - one - You are about to introduce %2$@ to %3$@ and one other contact. - other - You are about to introduce %2$@ to %3$@ and %1$u other contacts. - - - You successfully introduced X to Y and count other contacts. - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - You successfully introduced %2$@ to %3$@. - one - You successfully introduced %2$@ to %3$@ and one other contact. - other - You successfully introduced %2$@ to %3$@ and %1$u other contacts. - - - see count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No attachment - one - → See the attachment - other - → See %u attachments - - - count new messages - - NSStringLocalizedFormatKey - %#@VARIABLE@ - VARIABLE - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No new message - one - 1 new message - other - %u new messages - - - count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No attachment - one - One attachment - other - %u attachments - - - share count photos - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No photo to share - one - Share the photo - other - Share the %u photos - - - share count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No attachment to share - one - Share attachment - other - Share %u attachments - - - You are about to delete a message together with its count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - You are about to delete a message. - one - You are about to delete a message together with its attachment. - other - You are about to delete a message together with its %u attachments. - - - recent backups count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No backups - one - One backup - other - %u most recent backups - - - backups count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No backups - one - One backup - other - %u backups - - - missed messages count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - One missing message - other - %u missing messages - - - clean in progress count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - no deleted backups - one - one deleted backup - other - %u deleted backups - - - KEYCLOAK_MISSING_SEARCH_RESULT - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - One additional search result is available. Please refine your search. - other - %u additional search results are available. Please refine your search. - - - AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_MESSAGE - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Modifying this setting requires you to accept one pending group invitation. - other - Modifying this setting requires you to accept %u pending group invitations. - - - AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_ACCEPT_ACTION_TITLE - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Accept the pending group invitation now - other - Accept the %u pending group invitations now - - - CHOOSE_OR_NUMBER_OF_CHOSEN_DISCUSSION - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - choose - one - one selected - other - %u selected - - - NUMBER_OF_ITEMS_SELECTED - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Choose items - one - 1 item selected - other - %u items selected - - - NUMBER_OF_ELEMENTS - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - No element - one - 1 element - other - %u elements - - - WITH_N_PARTICIPANTS - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - without any participant - one - with one participant - other - with %u participants - - - - diff --git a/iOSClient/ObvMessenger/ObvMessenger/fr.lproj/InfoPlist.strings b/iOSClient/ObvMessenger/ObvMessenger/fr.lproj/InfoPlist.strings deleted file mode 100644 index a94e6a4d..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/fr.lproj/InfoPlist.strings +++ /dev/null @@ -1,18 +0,0 @@ -/* Bundle display name */ -//"CFBundleDisplayName" = "Olvid"; - -/* Bundle name */ -//"CFBundleName" = "Olvid"; - -/* Privacy - Camera Usage Description */ -"NSCameraUsageDescription" = "L'accès à l'appareil photo permet de scanner le code QR de vos contacts et de prendre des photos et des vidéos directement au sein d'une discussion."; - -/* Privacy - Face ID Usage Description */ -"NSFaceIDUsageDescription" = "Utiliser Face ID pour accéder à Olvid"; - -/* Privacy - Microphone Usage Description */ -"NSMicrophoneUsageDescription" = "L'accès au micro est nécessaire pour passer des appels sécurisés ainsi que pour enregistrer des films et des messages audios."; - -/* Privacy - Photo Library Additions Usage Description */ -"NSPhotoLibraryAddUsageDescription" = "L'accès en écriture à votre librairie de photos permet d'y sauver une image directement. Notez que Olvid n'aura pas accès aux autres photos de votre librairie de photos."; - diff --git a/iOSClient/ObvMessenger/ObvMessenger/fr.lproj/Localizable.strings b/iOSClient/ObvMessenger/ObvMessenger/fr.lproj/Localizable.strings deleted file mode 100644 index 83f66cb8..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/fr.lproj/Localizable.strings +++ /dev/null @@ -1,2796 +0,0 @@ -"Olvid" = "Olvid"; - -/* System message displayed within a group discussion */ -"%@_ACCEPTED_TO_JOIN_THIS_GROUP_AT_%@" = "%@ a rejoint ce groupe - %@"; - -"%@_ACCEPTED_TO_JOIN_THIS_GROUP" = "%@ a rejoint ce groupe"; - -/* No comment provided by engineer. */ -"%@ and" = "%@ et"; - -/* System message displayed within a group discussion */ -"%@_LEFT_THIS_GROUP_AT_%@" = "%@ a quitté ce groupe - %@"; - -"%@_LEFT_THIS_GROUP" = "%@ a quitté ce groupe"; - -/* Notification body */ -"%@ wants to introduce you to %@" = "%1$@ aimerait vous présenter à %2$@"; - -/* Invitation details */ -"%@ wants to introduce you to %@. If you do trust %@ for this, you may accept this invitation and %@ will soon appear in your contacts, with no further actions from your part (provided that %@ also accepts the invitation). If you don't trust %@ or if you simply do not want to be introduced to %@ you can ignore this invitation (neither %@ nor %@ will be notified of this)." = "%1$@ aimerait vous présenter à %2$@. Si vous acceptez, %2$@ fera partie de vos contacts et vous pourrez avoir une discussion privée."; - -/* Invitation details */ -"%@ was added to your contacts following an introduction by %@." = "%1$@ apparait maintenant dans vos contacts suite à une présentation par %2$@."; - -/* Invitation details */ -"%1@ wants to introduce you to %2@.\n\nOlvid\'s security policy requires you to re-validate the identity of %2@ by exchanging 4-digit codes with them, or to invite %1@ directly." = "%1$@ aimerait vous présenter à %2$@.\n \nLa politique de sécurité d'Olvid requiert une re-validation de l'identité de %2$@ via un échange de 4 chiffres. Vous pouvez aussi inviter %1$@ directement."; - -/* Invitation details */ -"%1$@ is inviting you to a discussion group.\n\nOlvid\'s security policy requires you to re-validate the identity of %1$@ by exchanging 4-digit codes with them." = "%1$@ aimerait vous inviter à un nouveau groupe de discussion.\n\nLa politique de sécurité d'Olvid requiert une re-validation de l'identité de %1$@ via un échange de 4 chiffres."; - -/* Invitation details */ -"%1$@ wants to introduce you to %2$@." = "%1$@ aimerait vous présenter à %2$@."; - -/* Can serve as a name in the sentence \"%@ accepted to join this group\" */ -"A (now deleted) contact" = "Contact supprimé"; - -/* Abort word, capitalized */ -"Abort" = "Abandonner"; - -/* About word, capitalized */ -"About" = "À propos"; - -/* Accept word, capitalized */ -"Accept" = "Accepter"; - -/* Button title */ -"Accept published version" = "Accepter la version publiée"; - -/* Chip title */ -"Action Required" = "Action requise"; - -/* Actions word, capitalized */ -"Actions" = "Actions"; - -/* Title of the UIAlertController allowing to add an attachment within a message to send. */ -"Add attachment" = "Ajouter une pièce jointe"; - -/* Admin word, capitalized */ -"Admin" = "Administrateur"; - -/* Advanced word, capitalized */ -"Advanced" = "Avancé"; - -/* Invitation details */ -"All the members of the group created by %@ have accepted the invitation." = "Tous les membres du groupe créé par %@ ont accepté l'invitation."; - -/* View controller title */ -"Almost there!" = "Bienvenue"; - -/* Notification title */ -"An invitation requires your attention!" = "Une invitation requiert votre attention !"; - -/* No comment provided by engineer. */ -"API Key" = "Clé d'API"; - -/* Alert title */ -"At least one of the channel establishment failed to restart" = "Erreur lors du redémarrage de l'établissement de canal sécurisé"; - -/* (No Comment) */ -"Attachments smaller than %@ will be automatically downloaded. Larger attachments will require manual download." = "Les pièces jointes de taille inférieure à %@ seront téléchargées automatiquement. Les pièces jointes de plus grande taille devront être téléchargées manuellement."; - -"ALL_ATTACHMENTS_WILL_BE_AUTOMATICALLY_DOWNLOADED" = "Toutes les pièces jointes seront téléchargées automatiquement."; - -/* Table view group footer */ -"Attachments smaller than the specified size will be automatically downloaded. Larger attachments will require manual download." = "Les pièces jointes de taille inférieure à celle spécifiée ici seront téléchargées automatiquement. Les pièces jointes de plus grande taille devront être téléchargées manuellement."; - -/* Alert title */ -"Authorization Required" = "Autorisation Requise"; - -/* Back word, capitalized */ -"Back" = "Retour"; - -/* Title */ -"Background App Refresh is disabled" = "L'actualisation en arrière-plan est désactivée"; - -/* Alert title */ -"Bad QR code" = "Mauvais code QR"; - -/* Alert title */ -"Bad server" = "Mauvais serveur"; - -/* Camera word, capitalized */ -"Camera" = "Appareil photo"; - -/* Cancel word, capitalized */ -"Cancel" = "Annuler"; - -/* Title used above the Table view allowing to choose the new members of a group */ -"Choose Members:" = "Choisir les participants:"; - -/* Must be short, label for the company name */ -"Company" = "Société"; - -/* Title before the list of group members. */ -"Confirmed Group Members:" = "Membres du Groupe:"; - -/* Title before a list of group members. */ -"Confirmed Members:" = "Membres du Groupe:"; - -/* View controller title */ -"Congratulations!" = "Bravo !"; - -/* Alert title */ -"Contact cannot be deleted for now" = "Cet utilisateur ne peut pas être supprimé pour le moment"; - -/* Title of the contact details view controller */ -"Contact Details" = "Détails du contact"; - -/* Title of the view controller allowing to edit a contact */ -"Contact Edition" = "Renommer le contact"; - -/* UIAlert title */ -"Contact Introduction Performed" = "Les présentations sont faites"; - -/* Contacts word, capitalized */ -"Contacts" = "Contacts"; - -/* Copy word, capitalized */ -"Copy" = "Copier"; - -/* Title */ -"Copy text" = "Copier le texte"; - -/* Action of an alert */ -"Copy your Id" = "Copier votre ID"; - -/* Alert title */ -"Could not delete group" = "Le groupe n'a pas pu être supprimé"; - -/* Create word, capitalized */ -"Create" = "Créer"; - -/* Delete word, capitalized */ -"Delete" = "Supprimer"; - -/* Alert action title */ -"Delete all messages" = "Supprimer tous les messages"; - -/* Alert title */ -"Delete all messages?" = "Supprimer tous les messages ?"; - -/* Perform the attachment deletion */ -"Delete attachment" = "Supprimer la pièce jointe"; - -/* Action title */ -"Delete contact" = "Supprimer le contact"; - -/* Action of alert */ -"Delete file" = "Supprimer le fichier"; - -/* Title of alert */ -"Delete File" = "Supprimer le fichier"; - -/* Title */ -"Delete group" = "Supprimer le groupe"; - -/* Title of alert */ -"Delete Message" = "Supprimer le message"; - -/* Title of alert */ -"Delete Message and Attachments" = "Supprimer le message et les pièces jointes"; - -/* Alert title */ -"Delete this contact?" = "Supprimer cet utilisateur ?"; - -/* Body displayed when a reply-to message cannot be found. */ -"Deleted message" = "Message supprimé"; - -/* Details word, capitalized */ -"Details" = "Détails"; - -/* Invitation subtitle */ -"Digits confirmed" = "Code confirmé"; - -/* Discard word, capitalized */ -"Discard" = "Supprimer"; - -/* Alert button title */ -"Discard changes" = "Abandonner les modifications"; - -/* Action title */ -"Discard group creation" = "Abandonner la création du groupe"; - -/* Action title */ -"Discard invitation" = "Décliner l'invitation"; - -/* Action title */ -"Discard this group creation?" = "Écarter cette création de groupe ?"; - -/* Action title */ -"Discard this invitation?" = "Décliner l'invitation ?"; - -/* Discussion word, capitalized */ -"Discussion" = "Discussion"; - -/* Discussions word, capitalized */ -"Discussions" = "Discussions"; - -/* Action title */ -"Do not discard group creation" = "Ne pas écarter la création de groupe"; - -/* Action title */ -"Do not discard invitation" = "Ne pas décliner l'invitation"; - -/* Alert message */ -"Do you really wish to restart the channel establishment?" = "Voulez vous redémarrer l'établissement de canal sécurisé ?"; - -/* Alert message */ -"Do you want to send a new invitation to your contact?" = "Voulez-vous envoyer une nouvelle invitation à votre contact ?"; - -/* Alert message */ -"Do you want to send an invitation to %@?" = "Souhaitez-vous entrer en contact avec %@ ?"; - -/* Alert message */ -"Do you wish to delete all the messages within this discussion? This action is irrevisble." = "Voulez-vous supprimer tous les messages de cette discussion ? Attention, cette opération est irréversible."; - -/* Alert message */ -"Do you wish to open %@ in Safari?" = "Voulez-vous ouvrir %@ dans Safari ?"; - -/* Title of the UIAlertAction allowing to add a document as an attachment within a message to send */ -"Document" = "Document"; - -"Documents" = "Documents"; - -/* Downloads word, capitalized */ -"Downloads" = "Téléchargements"; - -/* Edit word, capitalized */ -"Edit" = "Modifier"; - -/* Title of the EditDisplayNameViewController */ -"Edit your name" = "Modifiez votre nom"; - -/* Section title */ -"Enter your personal details" = "Votre identité"; - -/* Invitation subtitle */ -"Exchange digits" = "Échangez vos codes"; - -/* Button title */ -"Exchange digits with %@" = "Échanger chiffres avec %@"; - -/* Alert title */ -"Export Picture" = "Exporter l'image"; - -/* Alert button title */ -"Export to File App" = "Exporter vers l'App Fichiers"; - -/* Action of alert */ -"Export to the system's File App" = "Exporter le fichier vers l'application Fichiers"; - -/* Alert title */ -"File exported to Files App" = "Fichier exporté vers l'App Fichiers"; - -/* Title of alert */ -"File Management" = "Gestion du fichier"; - -/* Must be short, label for first name */ -"First" = "Prénom"; - -/* Olvid card corner text */ -"Group Card" = "Group Card"; - -/* Olvid card corner text */ -"Group Card - New" = "Group Card - Nouvelle"; - -/* Olvid card corner text */ -"Group Card - On My iPhone" = "Group Card - Sur mon iPhone"; - -/* Olvid card corner text */ -"Group Card - Published" = "Group Card - Publiée"; - -/* Olvid card corner text */ -"Group Card - Unpublished Draft" = "Group Card - Brouillon non publié"; - -/* Invitation subtitle */ -"Group Created" = "Groupe Créé"; - -/* Title group description text field */ -"Group description:" = "Description du groupe:"; - -/* Title before the list of group members. */ -"Group Members:" = "Membres du Groupe:"; - -/* Title group name text field */ -"Group name:" = "Nom du groupe:"; - -/* Groups word, capitalized */ -"Groups" = "Groupes"; - -/* Table View section title */ -"Groups created" = "Groupes créés"; - -/* Table View section title */ -"Groups joined" = "Groupes rejoints"; - -/* Invitation details */ -"If %@ accepts your invitation, you will be notified here." = "En attente de confirmation de la part de %@."; - -/* Button title */ -"Ignore" = "Ignorer"; - -/* No comment provided by engineer. */ -"In order to automatically configure Olvid, you can either scan a configuration QR code or click on the link you received by email." = "Pour configurer Olvid automatiquement, il vous suffit de scanner un code QR de configuration ou de cliquer (depuis votre iPhone) sur le lien que vous devriez avoir reçu par email."; - -/* Message of an alert */ -"In order to invite another Olvid user, you can copy your identity in order to paste it in an email, sms, and so forth. If you receive an identity, you can paste it here." = "Pour inviter un autre utilisateur, vous pouvez copier votre identité puis la coller dans un courriel, un sms, etc. Si vous recevez l'identité d'un autre utilisateur, vous pouvez la coller ici."; - -/* Message of an alert */ -"In order to invite another Olvid user, you can either scan their QR code or show them your own QR code." = "Afin d'entrer en contact avec un autre utilisateur d'Olvid, vous pouvez lui envoyer une invitation, scanner son code QR, ou afficher le vôtre pour qu'il le scanne."; - -/* Title of an alert */ -"Incorrect code" = "Code incorrect"; - -/* Introduce word, capitalized */ -"Introduce" = "Présenter"; - -/* Title of the table listing all identities but the one to introduce */ -"Introduce %@ to..." = "Présenter %@ à..."; - -/* No comment provided by engineer. */ -"Introduced as part of a group discussion" = "Présenté lors d'une création de groupe"; - -/* No comment provided by engineer. */ -"Introduced by %@" = "Présenté par %@"; - -/* No comment provided by engineer. */ -"Introduced by a former contact" = "Présenté par un ancien contact"; - -/* Invitation subtitle */ -"Introduction Accepted" = "Présentation acceptée"; - -/* Alert title */ -"Invitation" = "Invitation"; - -/* Two lines label indicating that a contact declined a group invitation */ -"Invitation\nDeclined" = "Invitation Refusée"; - -/* Invitation subtitle */ -"Invitation accepted" = "Invitation en cours"; - -/* Invitation subtitle */ -"Invitation received" = "Invitation en cours"; - -/* Invitation subtitle, Notification title */ -"Invitation to join a group" = "Invitation à rejoindre un groupe"; - -"Invitations" = "Invitations"; - -/* Invite word, capitalized */ -"Invite" = "Inviter"; - -/* Button title */ -"Invite %@" = "Inviter %@"; - -/* Title of an alert */ -"Invite another Olvid user" = "Choisissez comment inviter un contact"; - -/* Button title for inviting new members to an owned contact group */ -"Invite Members" = "Inviter des participants"; - -/* Must be short, label for last name */ -"Last" = "Nom"; - -/* Title */ -"Leave group" = "Quitter le groupe"; - -/* Indicates a mandatory text field */ -"mandatory" = "requis"; - -/* Action title */ -"Mark all as read" = "Tout marquer comme lu"; - -/* Action title */ -"MARK_AS_READ" = "Marquer comme lu"; - -/* Table view group header */ -"Maximum size for automatic downloads" = "Taille maximum pour téléchargement automatique"; - -/* Stack view title */ -"Members" = "Membres"; - -/* Title of the table listing all members of a discussion group. */ -"Members of %@" = "Membres de %@"; - -/* System message displayed at the top of each conversation. */ -"Messages posted in this discussion are protected using end-to-end encryption. Their confidentiality, their authenticity, and the identity of their sender are guaranteed through cryptography." = "🔒 Les messages postés dans cette discussion sont protégés par du chiffrement de bout-en-bout. Leur confidentialité, leur authenticité et l'identité de leur expéditeur sont garanties grâce à la cryptographie."; - -/* View Controller title */ -"Misconfiguration" = "Configuration"; - -/* UIAlert action title */ -"More..." = "Avancé..."; - -/* UIAlertController title */ -"Mutual Introduction" = "Faire les présentations"; - -/* Invitation subtitle */ -"MUTUAL_TRUST_CONFIRMED" = "Utilisateur ajouté à vos contacts"; - -/* Notification title */ -"Mutual trust confirmed!" = "Canal sécurisé en cours"; - -/* Title of a tab, Title of the MyIdViewController, View Controller title */ -"My Id" = "Mon profil"; - -/* Table View section title */ -"My Olvid Card" = "Mon ID"; - -/* Notification body */ -"n more attachments" = "n pieces jointes de plus"; - -/* Alert title */ -"Name update available" = "Mise à jour disponible"; - -/* Chip title */ -"New" = "Nouveau"; - -/* Title */ -"New contact" = "Nouveau contact"; - -/* Title */ -"New contact details" = "Nouvelle Olvid Card"; - -/* Title */ -"New group details" = "Nouveaux détails de groupe"; - -/* Invitation subtitle */ -"New Group Joined" = "Nouveau groupe rejoint"; - -/* Notification title */ -"New Invitation!" = "Nouvelle Invitation !"; -"New Invitation" = "Nouvelle Invitation"; - -/* No comment provided by engineer. */ -"New message" = "Nouveau message"; - -/* Notification title */ -"New message from %@" = "Nouveau message de %@"; - -/* Invitation subtitle, Notification title */ -"New Suggested Introduction" = "Mise en relation"; - -/* Next word, capitalized */ -"Next" = "Suivant"; - -/* Action title */ -"No" = "Non"; - -/* Subtitle displayed within a discussion cell when there is no message preview to display */ -"No message yet." = "Aucun message pour le moment."; - -/* None word, capitalized */ -"None" = "Aucun"; - -/* Ok word, capitalized */ -"Ok" = "Ok"; - -/* Type title of a owned Olvid card */ -"Olvid Card" = "Olvid Card"; - -/* Type title of a owned Olvid card */ -"Olvid Card - New" = "Olvid Card - Nouvelle"; - -/* Type title of a owned Olvid card */ -"Olvid Card - Published" = "Olvid Card - Publiée"; - -/* Type title of a owned Olvid card */ -"Olvid Card - Trusted" = "Olvid Card - Sur mon iPhone"; - -/* Type title of a owned Olvid card */ -"Olvid Card - Unpublished draft" = "Olvid Card - Brouillon non publié"; - -/* Body of an alert */ -"Olvid is not authorized to access the camera. You can change this setting within the Settings app." = "Olvid n'a pas l'autorisation d'accéder à l'appareil photo 😱. Vous pouvez changer ce paramètre dans l'application Réglages."; - -/* Long explanation */ -"Olvid requires the Background App Refresh to be turned on. Unfortunately it appears to be off. If you wish to use Olvid, please turn it back on.\n\nThe reason why this is required lies in the fact that Olvid regularly executes complex, multipass, cryptographic protocols in order to achieve a security level no other app can compete with. These protocols happen in the background and could not work if you had to manually launch Olvid each time a cryptographic computation has to be performed." = "Olvid nécessite que l'actualisation en arrière-plan soit activée. Malheureusement, cela ne semble pas être le cas sur cet appareil."; - -/* No comment provided by engineer. */ -"One-to-one verification" = "Vérification face-à-face"; - -/* Invitation subtitle */ -"Ongoing Group Creation" = "Création de Groupe en Cours"; - -/* Aloert button title */ -"Open" = "Ouvrir"; - -/* Alert title */ -"Open in Safari?" = "Ouvrir dans Safari ?"; - -/* Button title */ -"Open Settings" = "Aller dans les Réglages"; - -/* Indicates an optional text field */ -"optional" = "optionnel"; - -/* Placeholder for group name */ -"Optional description..." = "Description optionnelle..."; - -/* Paste word, capitalized */ -"Paste" = "Coller"; - -/* Action of an alert */ -"Paste an Id" = "Coller un ID"; - -/* Stack view title */ -"Pending members" = "Membres en attente"; - -/* Title before a list of group members. */ -"Pending Members:" = "Membres en attente:"; - -/* Action of alert - Alert button title */ -"Perform the deletion" = "Suppression"; - -/* UIAlertController action */ -"Perform the introduction" = "Faire les présentations"; - -/* Title of the UIAlertAction allowing to add a photo as an attachment within a message to send */ -"Photo & Video Library" = "Librairie de photos & vidéos"; - -/* Disclaimer showed during the onboarding */ -"Please enter a name which will be displayed to your contacts. These details will never be sent to Olvid's servers." = "Choisissez un nom qui sera affiché chez vos contacts. Ces informations ne seront jamais envoyées aux serveurs d'Olvid."; - -/* Long solution */ -"Please open settings and enable Background App Refresh. Hint: If the button is grayed out, you may have turned off the general setting which can be found within:\n\n Settings > General > Background App Refresh" = "Allez dans les Réglages et activez l'actualisation en arrière-plan.\n\nAstuce : Si le bouton est grisé, vous avez probablement désactivé le réglage global qui se trouve ici :\n \nRéglages > Général > Actualisation en arrière-plan"; - -/* Alert body */ -"Please remove any pending/group member and try again." = "Retirez tous les membres et membres en attente et essayez à nouveau."; - -/* No comment provided by engineer. */ -"Please scan an Olvid configuation QR code." = "Scannez le code QR d'une configuration d'Olvid."; - -/* No comment provided by engineer. */ -"Please specify an identifier that will make it possible for other users to identify you." = "Choisissez un identifiant qui permettra aux autres utilisateurs de vous identifier sans se tromper."; - -/* Must be short, label for the position name within the company */ -"Position" = "Poste"; - -/* Title */ -"Problem" = "Problème"; - -/* Proceed word, capitalized */ -"Proceed" = "Poursuivre"; - -/* Publish word, capitalized */ -"Publish" = "Publier"; - -/* Button title */ -"QR code" = "Code QR"; - -/* No comment provided by engineer. */ -"Re-Scan server settings" = "Scanner à nouveau les paramètres"; - -/* Alert title */ -"Reinvite contact?" = "Inviter à nouveau ?"; - -/* Reject word, capitalized */ -"Reject" = "Refuser"; - -/* Button title for removing members from an owned contact groupe */ -"Remove Members" = "Retirer des Participants"; - -/* Olvid card corner text - UIAlertController action */ -"Remove nickname" = "Supprimer le surnom"; - -/* Reply word, capitalized */ -"Reply" = "Répondre"; - -/* Alert title */ -"Restart channel establishment" = "Redémarrer l'établissement de canal sécurisé"; - -/* button title */ -"Restart Channel Establishment" = "Recréer le canal sécurisé"; - -/* Alert button title */ -"Save changes" = "Sauver les modifications"; - -/* No comment provided by engineer. */ -"Scan" = "Scanner"; - -/* Title of an alert action */ -"Scan another user's QR code" = "Scanner le code QR d'un autre utilisateur"; - -/* View controller title */ -"Scan QR code" = "Scannez un code QR"; - -/* No comment provided by engineer. */ -"Scan server settings" = "Scanner les paramètres du serveur"; - -/* Send word, capitalized */ -"Send" = "Envoyer"; - -/* title of an alert */ -"Send invite" = "Envoyer une invitation"; - -/* No comment provided by engineer. */ -"Server" = "Serveur"; - -/* Section title */ -"Server settings" = "Paramètres du serveur"; - -/* No comment provided by engineer. */ -"Server Settings" = "Paramètres du serveur"; - -/* No comment provided by engineer. */ -"Set Contact Nickname" = "Surnom du Contact"; - -/* Alert title */ -"Set Group Name" = "Choisir un nom pour ce groupe"; - -/* Settings word, capitalized */ -"Settings" = "Paramètres"; - -/* Share word, capitalized */ -"Share" = "Partager"; - -/* Button title allowing to navigation towards a contact */ -"Show Contact" = "Afficher le contact"; - -/* Button title */ -"Show detailed infos" = "Informations détaillées"; - -/* Button title allowing to navigation towards a contact group */ -"Show Group" = "Afficher le Groupe"; - -/* Title of an alert action */ -"Show my QR code" = "Afficher mon code QR"; - -/* Share word, capitalized */ -"Size" = "Taille"; - -/* Title */ -"Solution" = "Solution"; - -/* No comment provided by engineer. */ -"Tap this notification to download the message" = "Appuyez sur cette notification pour télécharger le message"; - -/* Alert title */ -"The channel establishment was restarted" = "L'établissement de canal sécurisé a redémarré"; - -/* Message of an alert */ -"The core you entered is incorrect. The code you need to enter is the one displayed on your contact's device." = "Le code que vous avez entré est incorrect. Celui que vous devez entrer est affiché sur l'écran de votre contact."; - -/* Body */ -"The group owner published a new version of Group Card. Both the old and new versions are shown below.\n\nClick to update the group informations with the new version." = "Le propriétaire du groupe a publié une nouvelle version de la Group Card. L'ancienne et la nouvelle version se trouvent ci-dessous.\n\nCliquez pour mettre à jour les informations du groupe en utilisant la nouvelle version."; - -/* Alert message */ -"The imported API Key seems to be for a different server." = "La clé d'API importée semble être destinée à un autre serveur."; - -/* Invitation details */ -"The invitation appears to come from %@. If you accept this invitation you will guided through the process allowing to make sure that this is the case." = "%@ aimerait entrer en contact avec vous. Cliquez sur « ACCEPTER » si vous êtes d'accord. Sinon, vous pouvez « IGNORER »."; - -/* Action message */ -"The other group members will not be notified." = "Les autres membres du groupe ne seront pas notifiés."; - -/* Alert message */ -"The scanned identity is already part of your trusted contacts 🙌. Do you still wish to proceed?" = "L'identité scannée fait déjà partie de vos contacts 🙌. Voulez-vous quand même poursuivre ?"; - -"%@ is already part of your trusted contacts 🙌. Do you still wish to proceed?" = "%@ fait déjà partie de vos contacts 🙌. Voulez-vous quand même poursuivre ?"; - -/* Alert message */ -"The scanned identity is one of your own 😇." = "L'identité scannée vous appartient 😇."; - -/* Alert message */ -"The scanned QR code does not appear to be an Olvid identity." = "Le code QR ne semble pas correspondre à une identité Olvid."; - -/* System message displayed within a group discussion */ -"This contact was deleted from your contacts, either because you did or because this contact deleted you." = "Ce contact a été supprimé de vos contacts Olvid, soit par vous-même, soit parce que ce contact vous a supprimé de ses propres contacts."; - -/* UIAlertController message */ -"This nickname will only be visible to you and used instead of your contact name within the Olvid interface." = "Ce surnom ne sera visible que de vous. Il sera utilisé en lieu et place du nom de votre contact dans l'interface d'Olvid."; - -/* Alert message */ -"This QR code does not allow to configure Olvid. Please use an Olvid configuration QR code." = "Ce code QR ne permet pas de configurer Olvid. Utilisez plutôt un code de configuration Olvid."; - -/* Placeholder text within the text view. Keep it short. */ -"Type a confidential message..." = "Écrire un message"; - -/* Placeholder for group name */ -"Type a discussion group name..." = "Nom de la discussion de groupe..."; - -/* Update word, capitalized */ -"Update" = "Mettre à jour"; - -/* Chip title */ -"Updated" = "Mis à jour"; - -/* No comment provided by engineer. */ -"URL" = "URL"; - -/* Version word, capitalized */ -"Version" = "Version"; - -/* Invitation details */ -"We are bootstraping the secure channel between you and %@. Please note that this requires %@'s device to be online." = "Nous procédons à la création du canal sécurisé entre vous et %1$@. Merci de patienter..."; - -/* View controller title */ -"Welcome" = "Bienvenue"; - -/* Invitation details */ -"MUTUAL_TRUST_CONFIRMED_DETAILS_%@" = "Bravo ! %1$@ fait maintenant partie de vos contacts et vous pouvez donc avoir une discussion privée."; - -/* Message of alert */ -"What do you want to do with this file?" = "Que voulez-vous faire de ce fichier ?"; - -/* Alert message */ -"Where do you wish to export this picture?" = "Où voulez-vous exporter cette photo ?"; - -/* Yes word, capitalized */ -"Yes" = "Oui"; - -/* Invitation details */ -"You accepted to be introduced to %@ by %@. Please wait until %@ also accepts this invitation." = "Vous avez accepté d'être présenté à %1$@ par %2$@. %3$@ doit à son tour accepter cette invitation."; - -/* Message of alert */ -"You are about to delete a file." = "Vous vous apprêtez à supprimer un fichier."; - -/* UIAlertController message */ -"You are about to introduce %@ to %@" = "Vous allez présenter %1$@ à %2$@"; - -/* Alert message */ -"You are about to remove %1$@ from your contacts. You will no longer be able to exchange messages with them.\n\nNote that %1$@ is a pending member in at least one group you belong to. %1$@ might get added back to your contacts in a near future. You may want to leave these groups to avoid this.\n\nReally delete this contact?" = "Vous êtes sur le point de retirer %1$@ de vos contacts. Vous ne pourrez plus échanger de message avec cette personne.\n\nNotez que %1$@ est un membre en attente dans certains groupes auxquel vous appartenez. Il risque d'être ajouté à vos contacts à nouveau dans un future proche. Vous pouvez vous prémunir de cela en quittant ces groupes.\n\nSouhaitez-vous supprimer ce contact ?"; - -/* Alert message */ -"You are about to remove %1$@ from your contacts. You will no longer be able to exchange messages with them.\n\nReally delete this contact?" = "Vous êtes sur le point de supprimer l'utilisateur %1$@."; - -/* Notification body */ -"You are invited to join a group created by %@." = "Vous êtes invité à rejoindre un groupe créé par %@."; - -/* Invitation details */ -"YOU_ARE_INVITED_TO_JOIN_A_GROUP_CREATED_BY_%@_EXPLANATION" = "Vous êtes invité à rejoindre un groupe créé par %@."; - -/* Alert message */ -"You cannot remove %@ from your contacts as both of you belong to some common groups. You will need to leave these groups to proceed." = "Vous ne pouvez pas supprimer l'utilisateur %@ car vous appartenez à certains groupes en commun. Vous devrez quitter ces groupes pour pouvoir continuer."; - -/* Invitation details */ -"You have accepted to join a group created by %@." = "Vous avez rejoint un groupe créé par %@."; - -/* Invitation details */ -"You have joined a group created by %@." = "Vous avez rejoint un groupe créé par %@."; - -/* Invitation details */ -"You have successfully entered the 4 digits of %1$@. You should communicate your four digits to %1$@. Your digits are %2$@." = "Vous avez entré le code de %1$@ avec succès. Il ne vous reste plus qu'à lui communiquer le vôtre (%2$@).\n\nPrivilégiez le face-à-face ou un appel téléphonique (évitez absolument email, SMS ou toute messagerie électronique)."; - -/* Notification body */ -"You now appear in %@'s contacts list. A secure channel is being established. When this is done, you will be able to exchange confidential messages and more!" = "Vous apparaissez dans les contacts de %@. Un canal sécurisé s'établit. Une fois fini, vous pourrez communiquer."; - -/* Notification body */ -"You receive a new invitation from %@. You can accept or silently discard it." = "Vous avez reçu une invitation de la part de %@. Vous pouvez accepter cette invitation ou l'écarter sans notifier votre correspondant."; - -/* Invitation details */ -"You should communicate your four digits to %@. Your digits are %@. You should also enter the 4 digits of %@." = "Pour entrer en contact avec %1$@, vous devez lui communiquer votre code (%2$@) et saisir le sien.\n\nAssurez-vous que c’est bien %3$@ qui vous donne son code. Privilégiez le face-à-face ou un appel téléphonique (évitez absolument email, SMS ou toute messagerie électronique)."; - -/* UIAlertController message */ -"You successfully introduced %@ to %@" = "Vous avez présenté %1$@ à %2$@"; - -"You successfully introduced %@ to %@ and %d other contacts" = "Vous avez présenté %1$@ à %2$@ ainsi qu'à %2$d autre(s) contacts(s)"; - -/* Explanation */ -"Your are about to leave a group." = "Vous vous apprêtez à quitter définitivement un groupe."; - -/* Explanation */ -"Your are about to permanently delete a group." = "Vous vous apprêtez à supprimer définitivement un groupe."; - -/* Notification body */ -"Your are one step away to create a secure channel with %@!" = "Plus qu'une étape pour établir un canal sécurisé avec %@!"; - -/* Body */ -"Your contact published a new version of their Olvid card. Both the old and new versions are shown below.\n\nClick to update yout contact's informations with the new version." = "Votre contact a mis à jour son Olvid Card. L'ancienne version et la nouvelle se trouvent ci-dessous.\n \nActualisez les informations de votre contact en cliquant « Mettre à jour »."; - -/* No comment provided by engineer. */ -"Your Id" = "Votre ID"; - -/* Alert title */ -"YOUR_ID_WAS_COPIED" = "Votre ID a été copiée"; - -/* Alert message */ -"YOUR_ID_WAS_COPIED_TO_CLIPBOARD_YOU_CAN_WRITE_EMAIL_AND_COPY_IT_THERE" = "Votre ID a été copiée dans le presse-papier. Vous pouvez préparer un courriel ou un sms et l'y copier directement."; - -/* Invitation subtitle */ -"Your invitation was sent" = "Invitation en cours"; - -/* Alert title */ -"Your Messages are on hold" = "Vos messages sont en attente"; - -/* Text used within the footer in a discussion. */ -"Your messages will be automatically sent once a contact accepts to join this group discussion. Until then, they will remain on hold." = "Vous pourrez écrire dans cette discussion dès que l'un de vos contacts aura accepté votre invitation."; - -/* Text used within the footer in a discussion. */ -"Your messages will be automatically sent once a secure channel is established for this discussion. Until then, they will remain on hold." = "Vos messages seront automatiquement envoyés dès qu'un canal sécurisé sera établi pour cette discussion. D'ici là, ils resteront en attente."; - -"Identity color style" = "Couleurs pour les identités"; - -"Interface" = "Interface"; - -/* Small string used in tab controller to sort by latest discussions */ -"Latest Discussions" = "Récentes"; - -/* Displayed in QuickLook when showing a downloading file */ -"Downloading File..." = "Le téléchargement n'est pas terminé 😕"; - -/* Subject used when inviting another user to Olvid, i.e., when sharing ones owned identity using, e.g., an email */ -"%@ invites you to discuss on Olvid" = "%@ aimerait discuter avec vous sur Olvid"; - -/* Body used when inviting another user to Olvid, i.e., when sharing ones owned identity using, e.g., an email or message */ -"%@ invites you to discuss on Olvid. To accept, please click the link below:\n\n%@" = "%@ aimerait discuter avec vous sur Olvid. Pour l'y inviter, veuillez cliquer sur le lien suivant :\n\n%@\n"; - -"Scan document" = "Scanner un document"; - -"Read" = "Lu"; - -"Delivered" = "Distribué"; - -"Sent" = "Envoyé"; - -"Send Read Receipts" = "Confirmation de lecture"; - -"Recent" = "Récent"; - -/* General Read Receipt explanantions */ - -"Your contacts will be notified when you have read their messages. This settting can be overriden on a per discussion basis." = "Vos correspondants recevront une confirmation lorsque vous aurez lu leurs messages. Ce paramètre peut être modifié indépendemment pour chaque discussion."; - -"Your contacts won't be notified when you read their messages. This settting can be overriden on a per discussion basis." = "Vos correspondants ne recevront pas de confirmation lorsque vous lirez leurs messages. Ce paramètre peut être modifié indépendamment pour chaque discussion."; - -/* Per discussion Read Receipt explanations */ - -"A read receipt will be sent for each message you read within this discussion." = "Vos correspondants recevront une confirmation lorsque vous aurez lu leurs messages dans le cadre de cette discussion."; - -"No read receipt will be sent within this discussion." = "Vos correspondants ne recevront pas de confirmation lorsque vous lirez leurs messages dans le cadre de cette discussion."; - -"Default" = "Par défaut"; - -"DISCUSSION_SETTINGS" = "Paramètres de la discussion"; - -"Use application default" = "Réglage par défaut"; - -"Privacy" = "Vie Privée"; - -"LOGIN_WITH_SYSTEM_PASSCODE_TITLE" = "S'authentifier avec le code d’accès de votre appareil"; -"LOGIN_WITH_TOUCH_ID_SYSTEM_PASSCODE_TITLE" = "S'authentifier avec Touch ID ou le code d’accès de votre appareil"; -"LOGIN_WITH_FACE_ID_SYSTEM_PASSCODE_TITLE" = "S'authentifier avec Face ID ou le code d’accès de votre appareil"; -"LOGIN_WITH_TOUCH_ID_FACE_ID_SYSTEM_PASSCODE_TITLE" = "S'authentifier avec Touch ID, Face ID ou le code d’accès de votre appareil"; - -"LOGIN_WITH_CUSTOM_PASSCODE_TITLE" = "S'authentifier avec un code personnalisé"; -"LOGIN_WITH_TOUCH_ID_CUSTOM_PASSCODE_TITLE" = "S'authentifier avec Touch ID ou un code personnalisé"; -"LOGIN_WITH_FACE_ID_CUSTOM_PASSCODE_TITLE" = "S'authentifier avec Face ID ou un code personnalisé"; -"LOGIN_WITH_TOUCH_ID_FACE_ID_CUSTOM_PASSCODE_TITLE" = "S'authentifier avec Touch ID, Face ID ou un code personnalisé"; - -"LOGIN_WITH_SYSTEM_PASSCODE_EXPLANATION" = "Cette option vous permet de protéger l'accès à Olvid grâce au code d’accès de votre appareil."; -"LOGIN_WITH_TOUCH_ID_SYSTEM_PASSCODE_EXPLANATION" = "Cette option vous permet de protéger l'accès à Olvid grâce à Touch ID ou au code d’accès de votre appareil."; -"LOGIN_WITH_FACE_ID_SYSTEM_PASSCODE_EXPLANATION" = "Cette option vous permet de protéger l'accès à Olvid grâce à Face ID ou au code d’accès de votre appareil."; -"LOGIN_WITH_TOUCH_ID_FACE_ID_SYSTEM_PASSCODE_EXPLANATION" = "Cette option vous permet de protéger l'accès à Olvid grâce à Face ID, Touch ID ou au code d’accès de votre appareil."; - -"NO_AUTHENTICATION_EXPLANATION" = "L'écran d'Olvid ne sera pas vérouillé."; - -"LOGIN_WITH_CUSTOM_PASSCODE_EXPLANATION" = "Cette option vous permet de protéger l'accès à Olvid grâce au code personnalisé."; -"LOGIN_WITH_TOUCH_ID_CUSTOM_PASSCODE_EXPLANATION" = "Cette option vous permet de protéger l'accès à Olvid grâce à Touch ID ou au code personnalisé."; -"LOGIN_WITH_FACE_ID_CUSTOM_PASSCODE_EXPLANATION" = "Cette option vous permet de protéger l'accès à Olvid grâce à Face ID ou au code personnalisé."; -"LOGIN_WITH_TOUCH_ID_FACE_ID_CUSTOM_PASSCODE_EXPLANATION" = "Cette option vous permet de protéger l'accès à Olvid grâce à Touch/Face ID ou au code personnalisé."; - -"Authenticate" = "S'authentifier"; - -"Please authenticate to start Olvid" = "Authentifiez-vous pour démarrer Olvid"; - -"After" = "Après"; - -"Immediately" = "Immédiatement"; - -"Please authenticate in order to change this setting." = "Authentifiez-vous pour changer ce paramètre."; - -"No passcode set on this iPhone." = "Aucun code PIN n'a été choisi sur cet iPhone."; - -"😧 Oups..." = "😧 Oups..."; - -/* Used within a HUD to indicate to the user that she should choose a discussion for AirDrop'ed files */ -"Choose Discussion" = "Choisir une Discussion"; - -/* Title of the screen displaying informations about a specific message within a discussion */ -"MESSAGE_INFO" = "Informations sur le message"; - -"Rich link preview" = "Prévisualisation des liens"; - -"Never" = "Jamais"; - -"Sent messages only" = "Messages envoyés uniquement"; - -"Always" = "Toujours"; - -"Clear cache" = "Supprimer le cache"; - -"Cache management" = "Gestion du cache"; - -"Websocket status" = "État de la connexion de la websocket"; - -"Hide notifications content" = "Cacher le contenu"; - -"Hide notifications" = "Cacher les notifications"; - -"Olvid requires your attention" = "Olvid requiert votre attention."; - -"Show" = "Afficher"; - -"Partially" = "Partiellement"; - -"Notifications will preview new messages and new invitations content." = "Les notifications afficheront une prévisualisation du contenu des nouveaux messages ainsi que des nouvelles invitations."; - -"Notifications will not preview any message content nor any invitation content. Instead, they will display the number of new messages as well as the number of new invitations." = "Les notifications n'afficheront pas le contenu des nouveaux messages ni des nouvelles invitations. Il sera néanmoins possible de distinguer une notification de nouveau message d'une notification de nouvelle invitation."; - -"Notifications will not provide any information about messages nor invitations. A minimal static notification will show to indicate that Olvid requires your attention." = "Les notifications n'afficheront aucune information concernant les messages ou les invitations. À la place, elles afficherons un texte standard indiquant qu'Olvid requiert votre attention."; - -"Completely" = "Totalement"; - -"Tap to see the message" = "Appuyez pour voir le message."; - -"New invitation" = "Nouvelle invitation"; - -"Tap to see the invitation" = "Appuyez pour voir l'invitation."; - -"Notifications" = "Notifications"; - -"Screen Lock" = "Verrouillage d'écran"; - -"Backup" = "Sauvegarde"; - -/* Explanation shown on on top of a backup key shown to the user. */ -"The backup key below will be used to encrypt all your Olvid backups. Please keep it in a safe place.\nOlvid will periodically check you are able to enter this key to ensure you do note lose access to your backups." = "La clé de sauvegarde ci-dessous sera utilisée pour chiffrer toutes vos sauvegardes d'Olvid. Gardez la précieusement.\nIl vous sera périodiquement demandé d'entrer cette clé pour vous assurer de ne perdre l'accès à vos sauvegardes."; - -/* Explanation shown below a backup key shown to the user. */ -"This is the only time this key will be displayed. If you lose it, you will need to generate a new one." = "C'est votre seule occasion de noter cette clé puisqu'elle ne sera plus jamais réaffichée. Si vous la perdez, vous devrez en générer une nouvelle."; - -/* "Button title shown to the user" */ -"I have copied the key" = "J'ai bien copié la clé"; - -/* Title of the view showing a new backup key */ -"New backup key" = "Nouvelle clé de sauvegarde"; - -"GENERATE_NEW_BACKUP_KEY" = "Générer une clé de sauvegarde"; - -"VERIFIY_OR_GENERATE_NEW_BACKUP_KEY" = "Vérifier ou générer une nouvelle clé"; - -"Decline" = "Décliner"; - -/* Table view section footer */ -"NO_BACKUP_KEY_GENERATED_YET" = "Pour effectuer une sauvegarde chiffrée de vos contacts, groupes et paramètres, la première étape est de générer une clé de sauvegarde 🔐. Aucune clé de sauvegarde n'a été générée pour le moment."; - -/* Table view section header */ -"GENERATE_BACKUP_KEY_SECTION_TITLE" = "Clé de sauvegarde"; - -/* Table view section header */ -"MANUAL_BACKUP_TITLE" = "Sauvegarde manuelle"; - -/* Button title allowing to backup now */ -"BACKUP_AND_SHARE_NOW" = "Sauvegarder et partager"; - -/* Table view section footer */ -"MANUAL_BACKUP_EXPLANATION_FOOTER" = "Permet d'exporter une sauvegarde chiffrée de vos contacts, groupes et paramètres (les messages et pièces jointes ne sont pas sauvegardés). Vous pouvez la partager (l'envoyer par mail, la sauvegarder dans Fichiers, etc.) ou la sauvegarder directement vers iCloud. Ne vous en faites pas, cette sauvegarde est chiffrée 😇."; - -"Refresh group" = "Actualiser le groupe"; - -"Debug" = "Debug"; - -"Fetching latest upload" = "Récupération de la dernière sauvegarde..."; - -"CANNOT_FETCH_LATEST_UPLOAD" = "Impossible de récuperer la dernière sauvegarde. Avez-vous bien configuré iCloud ?"; - -"Latest export: %@" = "Dernier export: %@"; - -"No backup was exported yet." = "Aucune sauvegarde exportée pour le moment."; - -"Thank you!" = "Merci !"; - -"Sorry..." = "Désolé..."; - -"Olvid failed to start properly. This is a terrible experience, we deeply appologize about this." = "Olvid n'a pas pu démarrer correctement. Nous en sommes désolés. Mais rassurez-vous, aucune de vos données n'a été perdue."; - -"Send this to the development team" = "Envoyer à l'équipe de développement"; - -"If you wish, you can help the development team by tapping the button below. This will share (only) the above message with them." = "Si vous le désirez, vous pouvez aider l'équipe de développement via la bouton ci-dessous. Vous partagerez (uniquement) le message encadré ci-dessous avec elle."; - -"Please report this error to %1$@ so we can fix this issue as fast as possible." = "Il se peut qu'un redémarrage de votre iPhone corrige ce problème. Sinon, nous vous serions reconnaissant d'envoyer cette erreur à %1$@ pour que nous puissions la corriger le plus vite possible."; - -"Please fix this serious issue with Olvid" = "Merci de corriger cette erreur dans Olvid"; - -"Olvid failed to initialize with the following error message:\n\n%1$@" = "Olvid n'a pas pu démarrer correctement. Voici le message d'erreur:\n\n%1$@"; - -"Your identity is deactivated on this device since it is active on another device. This tipically happens when you restore a backup on a device: this deactivates your previous device." = "Votre identité est désactivée sur cet appareil puisqu'elle est active sur un autre appareil. Cela arrive quand une sauvegarde est restaurée sur un nouvel appareil : l'ancien est désactivé."; - -"What can I do?" = "Que puis-je faire ?"; - -"You can still access your old discussions on this device, but you cannot send nor receive new messages. If you want to do so, you can tap on Reactivate this device. Please note that this will deactivate your other device." = "Vous pouvez toujours accéder à votre anciennes discussions sur cet appareil, mais vous ne pouvez plus recevoir de nouveaux messages. Si vous le voulez, vous pouvez appuyer sur « Réactiver mon identité sur cet appareil ». Attention, ceci désactivera votre deuxième appareil."; - -"Reactivate my identity on this device" = "Réactiver mon identité sur cet appareil"; - -"Current backup key generated: %@" = "Clé de sauvegarde générée: %@"; - -"Verify backup key" = "Vérifier la clé de sauvegarde"; - -"Enter backup key" = "Clé de sauvegarde"; - -"Forgot your backup key?" = "Clé de sauvegarde oubliée ?"; - -"Please enter all the characters of your backup key." = "Entrez tous les caractères de votre clé de sauvegarde."; - -"Please enter the backup key that was presented to you when you configured backups.\n\nThis key is the only way to decrypt the backup. If you lost it, backup restoration is impossible." = "Veuillez entrer la clé de sauvegarde qui vous a été présentée lorsque vous avez configuré les sauvegardes.\n\nCette clé est l'unique moyen de déchiffrer la sauvegarde. Sans elle, la restauration est impossible."; - -"The backup key is correct" = "La clé de sauvegarde est correcte"; - -"You may proceed with the restoration." = "Vous pouvez continuer."; - -"Restore this backup" = "Restaurer la sauvegarde"; - -"The backup key is incorrect" = "La clé de sauvegarde est incorrecte"; - -"Please check your backup key and try again." = "Vérifier votre clé de sauvegarde et essayez à nouveau."; - -"Please choose the location of the backup file you wish to restore." = "Choisissez l'emplacement du fichier de sauvegarde que vous souhaitez restaurer."; - -"Choose From a file to pick a backup file create from a manual backup." = "Choisissez « Depuis un fichier » pour restaurer une sauvegarde effectuée manuellement."; - -"Choose From the cloud to select an account used for automatic backups." = "Choisissez « Depuis iCloud » pour restaurer une sauvarde effectuée automatiquement."; - -"From a file" = "Depuis un fichier"; - -"From the cloud" = "Depuis iCloud"; - -"Backup file selected" = "Fichier de sauvegarde séléctionné"; - -"Proceed and enter backup key" = "Entrer la clé de sauvegarde"; - -"RESTORING_BACKUP_PLEASE_WAIT" = "Restauration en cours..."; - -"Restore failed 🥺" = "La restauration a échoué 🥺"; - -"Try again" = "Essayer à nouveau"; - -"Welcome to Olvid!" = "Bienvenue sur Olvid !"; - -"If you are a new Olvid user, simply click Continue as a new user below." = "Si vous êtes un nouvel utilisateur d'Olvid, touchez « Nouvel utilisateur »."; - -"If you already used Olvid and want to restore your identity and contacts from a backup, click Restore a backup" = "Si vous avez déjà utilisé Olvid et souhaitez restaurer une sauvegarde de vos contacts, touchez « Restaurer une sauvegarde »."; - -"Continue as a new user" = "Nouvel utilisateur"; - -"Restore a backup" = "Restaurer une sauvegarde"; - -"BACKUP_AND_UPLOAD_NOW" = "Sauvegarder et télécharger vers iCloud"; - -"AUTOMATIC_BACKUP" = "Sauvegarde automatique vers iCloud"; - -"ENABLE_AUTOMATIC_BACKUP" = "Activer la sauvegarde automatique vers iCloud"; - -"AUTOMATIC_BACKUP_EXPLANATION" = "Activer cette option permet d'effectuer une sauvegarde automatique de vos contacts, groupes et paramètres (les messages et pièces jointes ne sont pas sauvegardés)."; - -"Latest upload: %@" = "Dernier téléchargement : %@"; - -"⚠️ Latest failed upload: %@" = "⚠️ Dernière erreur : %@"; - -"No backup was uploaded yet." = "Aucune sauvegarde pour le moment."; - -"Sign in to iCloud" = "Connectez-vous à iCloud"; - -"iCloud status is unclear" = "Le status de iCloud n'est pas clair"; - -"iCloud access is restricted" = "Accès restreint à iCloud"; - -"Your iCloud account is not available. Access was denied due to Parental Controls or Mobile Device Management restrictions" = "Votre compte iCloud n'est pas accessible. L'accès a été refusé suite à des restrictions liées à du contrôle parental ou à la gestion des terminaux mobiles (MDM) de votre entreprise."; - -"Please sign in to your iCloud account to enable automatic backups. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on. If you don't have an iCloud account, tap Create a new Apple ID." = "Connectez-vous à iCloud pour activer les sauvegardes automatiques. Sur l'écran d'accueil, démarrez l'App Réglages, touchez iCloud et entrez votre Apple ID. Activez iCloud Drive. Si vous n'avez pas de compte iCloud, touchez Créer un nouvel Apple ID."; - -"AUTOMATIC_ICLOUD_BACKUPS" = "Sauvegardes iCloud automatiques"; - -"iCloud backups list" = "Liste des sauvegardes iCloud"; - -"Clean" = "Nettoyer"; - -"CLEAN_OLD_BACKUPS" = "Supprimer les anciennes sauvegardes iCloud"; - -"CLEAN_OLD_BACKUPS_ON_ALL_DEVICES" = "Supprimer pour tous les appareils"; - -"CLEAN_OLD_BACKUPS_ON_CURRENT_DEVICE" = "Supprimer pour cet appareil"; - -"CLEAN_OLD_BACKUPS_TITLE" = "Supprimer les anciennes sauvegardes iCloud ?"; - -"CLEAN_OLD_BACKUPS_MESSAGE" = "Supprimer les anciennes sauvegardes iCloud pour ne garder que la plus récente."; - -"CLEAN_LATEST_BACKUP_FOR_OTHER_DEVICE_TITLE" = "Supprimer la sauvegarde iCloud la plus récente d'un autre appareil ?"; - -"CLEAN_LATEST_BACKUP_FOR_OTHER_DEVICE_MESSAGE" = "Attention, vous vous apprêtez à supprimer la sauvegarde iCloud la plus récente d'un autre apparail."; - -"CLEAN_LATEST_BACKUP_FOR_CURRENT_DEVICE_TITLE" = "Supprimer la sauvegarde iCloud la plus récente ?"; - -"CLEAN_LATEST_BACKUP_FOR_CURRENT_DEVICE_MESSAGE" = "Attention, vous vous apprêtez à supprimer la sauvegarde iCloud la plus récente."; - -"Automatic iCloud backup cleaning" = "Suppression automatique des anciennes sauvegardes iCloud"; - -"Copy Documents URL" = "Copier l'URL des Documents"; - -"Copy App Database URL" = "Copier l'URL des bases de données"; - -"Backup creation date: %@" = "Date de création de la sauvegarde : %@"; - -"Please sign in to your iCloud account. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on." = "Connectez-vous à iCloud. Sur l'écran d'accueil, démarrez l'App Réglages, touchez iCloud et entrez votre Apple ID. Activez iCloud Drive."; - -"Sign in to iCloud" = "Connectez-vous à iCloud"; - -"Unexpected iCloud file error" = "Erreur de fichier iCloud inattendue"; - -"We could not retrieve the encrypted backup content from iCloud" = "Impossible de récupérer la sauvegarde chiffrée depuis iCloud"; - -"We could not retrieve the creation date of the backup content from iCloud" = "Il n'a pas été possible de récupérer la date de création de la sauvegarde depuis iCloud"; - -"We could not retrieve the device name of the backup content from iCloud" = "Il n'a pas été possible de récupérer le nom de l'appareil correspondant à la sauvegarde depuis iCloud"; - -"iCloud error" = "Erreur iCloud"; - -"No backup available in iCloud" = "Aucune sauvegarde trouvée sur iCloud"; - -"We could not find any backup in you iCloud account. Please make sure this device uses the same iCloud account as the one you were using on the previous device." = "Aucune sauvegarde n'a été trouvé sur votre compte iCloud. Assurez-vous que cet appareil utilise bien le même compte iCloud que celui de votre appareil précédent."; - -"Generate new backup key?" = "Générer une nouvelle clé de sauvegarde ?"; - -"Please note that generating a new backup key will invalidate all your previous backups. If you generate a new backup key, please create a fresh backup right afterwards." = "Générer une nouvelle clé de sauvegarde invalide vos sauvegardes précédentes. Si vous décidez de générer une nouvelle clé, nous vous recommandons d'effectuer une sauvegarde juste après."; - -"Generate new backup key now" = "Regénérer une clé de sauvegarde maintenant"; - -"Export App Database" = "Exporter la base de données de l'App"; - -"Export Engine Database" = "Exporter la base de données de l'Engine"; - -"Custom Display Name" = "Surnom à afficher"; - -"Full Display Name" = "Nom complet"; - -"Identity" = "Identité"; - -"Devices" = "Dispositifs"; - -"USE_CALLKIT" = "Utiliser CallKit"; - -"BUTTON_TITLE_AUTHENTICATE" = "S'authentifier"; - -"VoIP" = "VoIP"; - -"CALL_STATE_NEW" = "Nouvel appel..."; - -"CALL_STATE_GETTING_TURN_CREDENTIALS" = "Authentification..."; - -"CALL_STATE_KICKED" = "Exclue"; - -"USER_HAS_BEEN_KICKED" = "Vous avez été exclu de l'appel."; - -"CALL_STATE_INCOMING_CALL_MESSAGE_WAS_POSTED" = "Connexion..."; - -"CALL_STATE_INITIALIZING_CALL" = "Initialisation de l'appel..."; - -"CALL_STATE_USER_ANSWERED_INCOMING_CALL" = "Appel accepté..."; - -"CALL_STATE_CONNECTING_TO_PEER" = "Connexion..."; - -"CALL_STATE_CONNECTED" = "Connecté"; - -"CALL_STATE_BUSY" = "Occupé"; - -"CALL_STATE_RECONNECTING" = "Reconnexion"; - -"CALL_STATE_RINGING" = "Sonnerie..."; - -"CALL_STATE_CALL_REJECTED" = "Appel refusé"; - -"CALL_STATE_CALL_IN_PROGRESS" = "Appel en cours"; - -"CALL_STATE_HANGED_UP" = "Appel raccroché"; - -"Restore" = "Restaurer"; - -"Could not read backup file" = "Le fichier de sauvegarde n'a pas pu être lu"; - -"Speaker" = "Haut-parleur"; - -"ALERT_TITLE_KICK_PARTICIPANT" = "Exclure un contact de l'appel ?"; - -"ALERT_MESSAGE_KICK_PARTICIPANT_%@" = "Souhaitez-vous réellement exclure %@ de l'appel en cours ?"; - -"Exclude" = "Exclure"; - -"DO_NO_SHOW_MSG_AGAIN" = "Ne plus afficher ce message"; - -"TITLE_RESET_ALL_ALERTS" = "Réinitialiser les alertes"; - -"TITLE_HELP_FAQ" = "Aide/FAQ"; - -"ALERT_MSG_OUTGOING_CALL_FAILED_USER_DENIED_RECORDING" = "Pour passer cet appel, vous devez autoriser Olvid à accéder au micro. Allez dans les Réglages et activez le Micro."; - -"ALERT_VOICE_MESSAGE_FAILED_USER_DENIED_RECORDING" = "Pour enregistrer un message vocal, vous devez autoriser Olvid à accéder au micro. Allez dans les Réglages et activez le Micro."; - -"CALL_STATE_PERMISSION_DENIED_BY_SERVER" = "Connexion refusée par le serveur"; - -"INCLUDE_CALL_IN_RECENTS" = "Partager liste appels avec le système"; - -"Pending" = "En attente"; - -"MISSED_CALL" = "Appel manqué"; - -"MISSED_CALL_FILTERED" = "Appel manqué alors que vous étiez en mode « Concentration »."; - -"ACCEPTED_OUTGOING_CALL" = "Appel sortant"; - -"ACCEPTED_INCOMING_CALL" = "Appel entrant"; - -"ANY_OUTGOING_CALL" = "Appel sortant..."; - -"ANY_INCOMING_CALL" = "Appel entrant..."; - -"REJECTED_OUTGOING_CALL" = "Appel sortant rejeté"; - -"REJECTED_INCOMING_CALL" = "Appel entrant rejeté"; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_UNDETERMINED" = "L'appel entrant n'a pas abouti car Olvid n'a pas l'autorisation d'accéder au micro. Cliquez sur ce message pour autoriser l'accès au micro."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_UNDETERMINED_NOTIFICATION_BODY" = "Pour recevoir des appels, vous devez autoriser Olvid à accéder au micro. Cliquez sur la notification et autorisez l'accès au micro."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_GRANTED" = "L'appel entrant n'a pas abouti car Olvid n'avait pas l'autorisation d'accéder au micro. Fort heureusement, l'autorisation a été accordée. Vous ne raterez plus aucun appel 🥳 !"; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_DENIED" = "L'appel entrant n'a pas abouti car Olvid n'a pas l'autorisation d'accéder au micro. Pour ne plus rater d'appel, allez dans les Réglages et autorisez l'accès au micro pour Olvid."; - -"REJECTED_INCOMING_CALL_BECAUSE_RECORD_PERMISSION_IS_DENIED_NOTIFICATION_BODY" = "Pour recevoir des appels, vous devez autoriser Olvid à accéder au micro. Pour ne plus rater d'appel, allez dans les Réglages et autorisez l'accès au micro pour Olvid."; - -"BUSY_OUTGOING_CALL" = "Appel sortant occupé"; - -"UNANSWERED_OUTGOING_CALL" = "Appel sortant sans réponse"; - -"UNCOMPLETED_OUTGOING_CALL" = "Appel sortant non abouti"; - -"CHOOSE_PREFERRED_AUDIO_SOURCE" = "Choisissez votre source audio"; - -"SECURE_CALL_IN_PROGRESS" = "Appel sécurisé en cours"; - -"SECURING_CALL_LINE" = "Sécurisation de la ligne"; - -"UNANSWERED" = "Sans réponse"; - -"WITH_%@" = "avec %@"; - -"FROM_%@" = "de %@"; - -"AND_ONE_OTHER" = "et un autre"; - -"AND_%@_OTHERS" = "et %@ autres"; - -"Hangup" = "Raccrocher"; - -"HOW_DO_YOU_WANT_TO_SHARE_ID" = "Comment voulez-vous partager votre ID ?"; - -"SHARE_MY_ID" = "Partager mon ID"; - -"SCAN_CONTACT_ID" = "Scanner l'Id d'un contact"; - -"SHARING_YOUR_ID_ALLOWS_OTHERS_TO_INVITE_YOU_REMOTELY" = "Partager votre ID permet à un autre utilisateur de vous inviter."; - -"SCANNING_CONTACT_ID_ALLOWS_YOU_TO_INVITE_THEM_NOW" = "Scanner l'ID d'un autre utilisateur vous permet de l'inviter."; - -"Show my Id" = "Montrer mon ID"; - -"Olvid is not authorized to access the camera. Because your settings are restricted, there is nothing we can do about this. Please contact your administrator." = "Olvid n'a pas l'autorisation d'accéder à l'appareil photo 😱. Vos paramètres étants restreints, il n'y a rien que nous ne puissions faire. Nous vous recommandons de contacter votre administrateur."; - -"Do you wish to send an invite to %@?" = "Voulez-vous envoyer une invitation à %@ ?"; - -"YOUR_ID_WAS_COPIED_TO_CLIPBOARD" = "Votre ID a été copiée dans le presse-papiers"; - -"Oops..." = "Oups..."; - -"What you pasted doesn't seem to be an Olvid identity 🧐" = "Ce que vous venez de coller ne semble pas être un ID Olvid 🧐"; - -/* Alert message */ -"THIS_ID_IS_THE_ONE_YOU_OWN" = "Cette ID est la vôtre 😇."; - -"Add new contact" = "Ajouter un nouveau contact"; - -"SUBSCRIBING_TO_USER_NOTIFICATIONS_EXPLANATION" = "Olvid est plus agréable à utiliser si vous acceptez d'être notifié à chaque nouveau message & invitation ! Le prochain écran vous donnera la possibilité de souscrire aux notifications.\n\nVous pourrez toujours changer d'avis plus tard 😇."; - -"CONTINUE" = "Continuer"; - -"SCAN" = "Scanner"; - -"COPY_MY_ID_TO_CLIPBOARD" = "Copier mon ID dans le presse-papiers"; - -"PASTE_CONTACT_ID_FROM_CLIPBOARD" = "Coller un ID de contact depuis le presse-papiers"; - -"More invitations methods" = "Autres méthodes d'ajout de contact"; - -"CHOOSE_GROUP_MEMBERS" = "Choisir les participants"; - -"EDIT_MY_ID" = "Modifier mon ID"; - -"SUBSCRIPTION_STATUS" = "État de l'abonnement"; - -"Premium features tryout" = "Essai des fonctionnalités premium"; - -"No active subscription" = "Aucun abonnement actif"; - -"Valid license" = "Licence valide"; - -"Invalid subscription" = "Abonnement non valide"; - -"Subscription expired" = "Abonnement expiré"; - -"This subscription is already associated to another user" = "Cet abonnement est déjà associé à un autre utilisateur"; - -"FORM_FIRST_NAME" = "Prénom"; - -"FORM_LAST_NAME" = "Nom de famille"; - -"FORM_POSITION" = "Poste"; - -"FORM_COMPANY" = "Société"; - -"PUBLISH_MY_ID" = "Publier mon ID"; - -"PUBLISH_NEW_ID" = "Publier votre nouvelle ID ?"; - -"ARE_YOU_SURE_PUBLISH_NEW_OWNED_ID" = "Une fois publiée, la nouvelle version de votre ID s'affichera chez tous vos contacts."; - -"Premium features are available for a limited period of time" = "Les fonctionnalités premium sont disponibles pour une durée limitée."; - -"Free features" = "Fonctionnalités gratuites"; - -"Premium features" = "Fonctionnalités premium"; - -"Sending & receiving messages and attachments" = "Envoyer & recevoir des messages et des pièces jointes"; - -"Create groups" = "Créer des groupes"; - -"Receive secure calls" = "Recevoir des appels sécurisés"; - -"Make secure calls" = "Émettre des appels sécurisés"; - -"NEW_LICENSE_TO_ACTIVATE" = "Nouvelle licence à activer"; - -"CURRENT_LICENSE_STATUS" = "Licence actuelle"; - -"ACTIVATE_NEW_LICENSE" = "Activer la licence"; - -"Confirm invite" = "Confirmer l'invitation"; - -"Premium features free trial" = "Période d'essai gratuite des fonctionnalités premiums"; - -"Premium features available for free" = "Fonctionnalités premiums disponibles gratuitement"; - -"Valid until %@" = "Valide jusqu'au %@"; - -"Premium features available until %@" = "Fonctionnalités prémiums disponibles jusqu'au %@"; - -"Fallback to free version" = "Retourner à la version gratuite"; - -"See subscription plans" = "Voir les offres d'abonnement"; - -"Available subscription plans" = "Offres d'abonnement"; - -"Looking for available subscription plans" = "Recherche des offres d'abonnement"; - -"Get access to premium features for free for one month. This free trial can be activated only once." = "Accéder aux fonctionnalités premium gratuitement pendant 30 jours. Cette offre d'essai ne peut être activée qu'une seule fois."; - -"Start free trial now" = "Commencer l'essai maintenant"; - -"Free Trial" = "Essai gratuit"; - -"Subscribe now" = "S'abonner maintenant"; - -"month" = "mois"; - -"Free" = "Gratuit"; - -"Sorry, it seems you are not allowed to issue the request 😢." = "Désolé, il semblerait que vous ne soyez pas autorisé à faire cette requête 😢."; - -"Ok, the payment was successfully cancelled." = "Ok, le paiement a été abandonné."; - -"Sorry, it seems you are not allowed to make the payment 😢." = "Désolé, il semblerait que vous ne soyez pas autorisé à faire le paiement 😢."; - -"Sorry, the product is not available in your store 😢." = "Désolé, le produit n'est pas disponible dans votre Store 😢."; - -"The purchase failed because you did not allowed access to cloud service information 😢." = "L'achat a échoué car vous n'avez pas donné accès à certaines informations demandées par l'App Store 😢."; - -"Sorry, the purchase failed because we could not connect to the nework 😢. Please try again later." = "Désolé, l'achat a échoué car le réseau est indisponible 😢. N'hésitez pas à essayer plus tard."; - -"Sorry, the purchase failed because you still need to acknowledge Apple's privacy policy 😢." = "Désolé, l'achat a échoué car vous devez au préalable accepter la politique de confidentialité d'Apple 😢."; - -"Sorry, the purchase failed 😢. Please try again later or contact us if this problem is recurring." = "Désolé, l'achat a échoué 😢. N'hésitez pas à essayer plus tard ou à nous contacter si le problème est récurent."; - -"Your purchase must be approved before it can go through." = "Votre achat est en attente d'approbation."; - -"Manage your subscription" = "Gérer vos abonnements"; - -"START_USING_OLVID" = "Bienvenue sur Olvid 😇"; - -"OWNED_IDENTITY_GENERATED_EXPLANATION" = "Vous venez de terminer la configuration d'Olvid !\n\nAucune donnée (nom, prénom, etc.) n'a été transmise à nos serveurs. Tout reste sur votre appareil.\n\nAvez-vous remarqué que nous ne vous avons pas demandé votre numéro de téléphone ni votre adresse email ?\n\nEt contrairement à votre messagerie précédente, Olvid ne demandera jamais l’accès à votre carnet d’adresses."; - -"Restore Purchases" = "Restaurer les achats"; - -"Manage payments" = "Modes de paiement"; - -"We found no purchase to restore." = "Nous n'avons trouvé aucun achat à restaurer."; - -"Premium features are available for free until %@" = "Les fonctionnalités premium sont disponibles gratuitement jusqu'au %@"; - -"Refresh status" = "Actualiser le statut"; - -"Looking for the new license" = "Nous recherchons la nouvelle licence"; - -"SUBSCRIPTION_REQUIRED" = "Abonnement requis"; - -"BUTTON_LABEL_CHECK_SUBSCRIPTION" = "Vérifier votre abonnement"; - -"MESSAGE_SUBSCRIPTION_REQUIRED_CALL" = "L'émission d'appels téléphoniques sécurisés avec Olvid nécessite un abonnement.\n\nVous pouvez vérifier le statut de votre abonnement et les options d'abonnement disponibles depuis la page « Mon ID »."; - -"MESSAGE_SUBSCRIPTION_REQUIRED_GENERIC" = "La fonctionnalité demandée nécessite un abonnement.\n\nVous pouvez vérifier le statut de votre abonnement et les options d'abonnement disponibles depuis la page « Mon ID »."; - -"License activation" = "Activer une licence"; - -"BILLING_GRACE_PERIOD" = "Délai de grâce"; - -"GRACE_PERIOD_ENDS_ON_%@" = "La période de grâce prendra fin le %@"; - -"GRACE_PERIOD_ENDED" = "Le délai de grâce est échu"; - -"GRACE_PERIOD_ENDED_ON_%@" = "La période de grâce a pris fin le %@"; - -"TERMS_OF_USE" = "Conditions générales d'utilisation"; - -"PRIVACY_POLICY" = "Politique de confidentialité"; - -"FREE_TRIAL_EXPIRED" = "Période d'essai expirée"; - -"FREE_TRIAL_ENDED_ON_%@" = "La période d'essai a expiré le %@"; - -"Premium subscription" = "Abonnement premium"; - -"Unlock all premium features in Olvid" = "Accès à toutes les fonctionnalités premium."; - -"Allow all api key activations" = "Permettre l'activation de toute clé d'API"; - -"The backup could not be recovered" = "La sauvegarde n'a pas pu être restaurée"; - -"The backuped data could not be decrypted." = "La sauvegarde n'a pas pu être déchiffrée."; - -"The integrity check of the backuped data failed." = "Êtes-vous certain d'avoir utilisé la bonne clé de sauvegarde ?"; - -"The backup could not be recovered (error code: %@)." = "La sauvegarde n'a pas pu être restaurée (code d'erreur : %@)."; - -"The backup file could not be read" = "Le fichier de sauvegarde n'a pas pu être lu"; - -"USE_LOAD_BALANCED_TURN_SERVERS" = "Utiliser serveurs turn distribués"; - -"WIPE_AFTER_READ_SECTION_HEADER" = "Effacer après lecture"; - -"WIPE_AFTER_PICKER_LABEL" = "Effacer après"; - -"TIMER_PICKER_LABEL" = "Minuteur"; - -"MESSAGE_EXPIRATION_SECTION_HEADER" = "Expiration du message"; - -"EXPIRE_PICKER_LABEL" = "Expiration"; - -"EXPIRATION_SETTINGS_TITLE" = "Messages éphémères"; - -"READ_ONCE" = "Première lecture"; - -"Timer" = "Minuteur"; - -"AFTER_DATE" = "Après date"; - -"AFTER_TIMER" = "Après minuteur"; - -"TEN_SECONDS" = "10 secondes"; - -"ONE_MINUTE" = "1 minute"; - -"FIVE_MINUTE" = "5 minutes"; - -"ONE_HOUR" = "1 heure"; - -"EIGHT_HOURS" = "8 heures"; - -"ONE_DAY" = "1 jour"; - -"FIFTEEN_DAYS" = "15 jours"; - -"TWO_DAYS" = "2 jours"; - -"ONE_WEEK" = "1 semaine"; - -"FOUR_WEEKS" = "4 semaines"; - -"INDEFINITELY" = "Indéfiniment"; - -"DATE" = "Date"; - -"MESSAGE_WAS_WIPED" = "Dernier message expiré 🧹"; - -"READ_ONCE_SECTION_HEADER" = "Effacement"; - -"READ_ONCE_LABEL" = "Lecture unique"; - -"TAP_TO_READ" = "Cliquez pour voir\nle contenu du message"; - -"AUTO_READ_LABEL" = "Ouverture automatique"; - -"EPHEMERAL_MESSAGE" = "Message éphémère"; - -"DEFAULT_DISCUSSION_SETTINGS" = "Paramètres par défaut pour cette discussion"; - -"Reset" = "Réinitialiser"; - -"DRAFT_EXPIRATION_EXPLANATION" = "Utilisez les paramètres ci-dessous pour modifier les durées de visibilité et d'existence de votre prochain message. Vous ne pouvez pas choisir des paramètres moins restrictifs que les paramètres par défaut de la discussion."; - -"ACTIVATE_NEW_LICENSE_CONFIRMATION_TITLE" = "Activer la licence ?"; - -"DO_YOU_WISH_TO_ACTIVATE_API_KEY" = "Toute licence précédente sera perdue. Confirmez-vous vouloir activer la nouvelle licence ?"; - -"Expired since %@" = "Expirée depuis le %@"; - -"FALLBACK_FREE_VERSION_WARNING" = "Êtes-vous certain de vouloir retourner à la version gratuite ? Tout avantage lié à votre licence actuelle sera perdu."; - -"Wiped" = "Expiré"; - -"WIPED_MESSAGE" = "Contenu expiré 🧹"; - -"WIPED_MESSAGE_BY_%@" = "Contenu supprimé par %@"; - -"EXPIRATION_SETTINGS_EXPLANATION" = "Les paramètres ci-dessous sont partagés par l'ensemble des participants à la discussion. En cas de modification, la nouvelle durée de visibilité et d'existence sera envoyée à tous les participants."; - -"READ_ONCE_SECTION_FOOTER" = "Si ce réglage est activé, les messages et leurs pièces jointes ne sont affichés qu'une seule fois. Il sont supprimés au sortir de la discussion."; - -"LIMITED_VISIBILITY_SECTION_FOOTER" = "Si ce réglage est activé, les messages et leurs pièces jointes sont affichés pour une durée limitée après avoir été lus."; - -"LIMITED_VISIBILITY_LABEL" = "Durée de visibilité"; - -"LIMITED_EXISTENCE_SECTION_FOOTER" = "Si ce réglage est activé, les messages et leurs pièces jointes sont automatiquement supprimés après une certaine durée."; - -"LIMITED_EXISTENCE_SECTION_LABEL" = "Durée d'existence"; - -"FIVE_SECONDS" = "5 secondes"; - -"THIRTY_SECONDS" = "30 secondes"; - -"TWO_MINUTES" = "2 minutes"; - -"THIRTY_MINUTES" = "30 minutes"; - -"SIX_HOUR" = "6 heures"; - -"TWELVE_HOURS" = "12 heures"; - -"SEVEN_DAYS" = "7 jours"; - -"THIRTY_DAYS" = "30 jours"; - -"NINETY_DAYS" = "90 jours"; - -"ONE_HUNDRED_AND_HEIGHTY_DAYS" = "180 jours"; - -"ONE_YEAR" = "1 an"; - -"AUTO_READ_SECTION_FOOTER" = "Ouvrir automatiquement les messages éphémères."; - -"RETAIN_WIPED_OUTBOUND_MESSAGES_LABEL" = "Conserver une trace des messages éphémères envoyés"; - -"RETAIN_WIPED_OUTBOUND_MESSAGES_SECTION_FOOTER" = "Si ce réglage est activé, les messages éphémères sortants ne sont pas supprimés à expiration, mais remplacés par un texte fixe."; - -"THREE_YEAR" = "3 ans"; - -"FIVE_YEAR" = "5 ans"; - -"Mute" = "Silencieux"; - -"MUTE_NOTIFICATIONS" = "Désactiver les notifications"; - -"UNMUTE_NOTIFICATIONS" = "Réactiver les notifications"; - -"UNMUTED_NOTIFICATIONS_FOOTER" = "Activez cette option pour ne plus recevoir de notifications de nouveau message dans cette discussion."; - -"MUTED_NOTIFICATIONS_FOOTER_UNTIL_%@" = "Notifications de nouveau message désactivées jusqu\'à %@"; - -"MUTED_NOTIFICATIONS_CONFIRMATION_%@" = "Notifications de nouveau message désactivées jusqu\'à %@.\n Souhaitez-vous les réactiver ?"; - -"MUTED_NOTIFICATIONS_FOOTER_INDEFINITELY" = "Notifications de nouveau message désactivées indéfiniment."; - -"SEND_READ_RECEIPT_SECTION_FOOTER" = "Si ce réglage est activé, vos correspondants recevront une confirmation lorsque vous aurez lu leurs messages dans le cadre de cette discussion."; - -"SEND_READ_RECEIPTS_LABEL" = "Confirmation de lecture"; - -"SHOW_RICH_LINK_PREVIEW_LABEL" = "Prévisualiser"; - -"NOTIFICATION_SOUNDS_LABEL" = "Son de notification"; - -"DISCUSSION_SHARED_SETTINGS_WERE_UPDATED" = "Les paramètres partagés de la discussion ont été mis à jour"; - -"NON_EPHEMERAL_MESSAGES_LABEL" = "Message non-éphémère"; - -"GLOBAL_EXPIRATION_SETTINGS_EXPLANATION" = "Les paramètres ci-dessous seront appliqués à toute nouvelle discussion « one-to-one » ainsi qu'à toute nouvelle discussion de groupe que vous créerez. Veuillez noter que ces paramètres de discussion seront partagés avec tous les participants."; - -"ONLY_GROUP_OWNER_CAN_MODIFY" = "Seul un administrateur du groupe peut modifier ces paramètres."; - -"UNREAD_EPHEMERAL_MESSAGE" = "Message éphémère non lu"; - -"MODIFIED_SHARED_SETTINGS_CONFIRMATION_TITLE" = "Les paramètres partagés ont été modifiés"; - -"MODIFIED_SHARED_SETTINGS_CONFIRMATION_MESSAGE" = "Vous avez modifié les paramètres partagés de cette discussion.\n\nVoulez-vous mettre à jour ces paramètres pour vous et tous les participants à la discussion, ou préférez-vous supprimer vos modifications ?"; - -"day" = "jour"; - -"week" = "semaine"; - -"year" = "année"; - -"All logs" = "Tous les logs"; - -"Unlimited" = "Illimité"; - -"RETENTION_SETTINGS_TITLE" = "Politique de rétention des messages"; - -"GLOBAL_RETENTION_SETTINGS_EXPLANATION" = "Les réglages ci-dessous vous permettent de supprimer automatiquement de vieux messages dans vos discussions. Ces paramètres par défaut peuvent être modifiés indépendamment pour chaque discussion."; - -"COUNT_BASED_LABEL" = "En nombre"; - -"COUNT_BASED_KEEP_ALL" = "Tout garder"; - -"COUNT_BASED_SECTION_FOOTER" = "Les anciens messages de vos discussions seront régulièrement supprimés afin que le nombre maximum de messages par discussion reste inférieur à la limite que vous indiquez ici."; - -"KEEP_%lld_MESSAGES" = "Conserver %lld messages"; - -"TIME_BASED_LABEL" = "En temps"; - -"TIME_BASED_SECTION_FOOTER" = "Si ce réglage est activé, les messages plus anciens que le temps spécifié seront régulièrement supprimés."; - -"LOCAL_RETENTION_SETTINGS_EXPLANATION" = "Les réglages ci-dessous vous permettent de supprimer automatiquement de vieux messages dans cette discussion."; - -"EPHEMERAL_MESSAGES" = "Messages éphémères"; - -"LOCAL_CONFIG" = "Configuration locale"; - -"SHARED_CONFIG" = "Configuration partagée"; - -"COUNT_BASED_SINGLE_DISCUSSION_SECTION_FOOTER" = "Les anciens messages de cette discussion seront régulièrement supprimés afin que leur nombre reste inférieur à la limite que vous indiquez ici."; - -"LOCAL_EPHEMERAL_SETTINGS_EXPLANATION" = "Les réglages ci-dessous vous permettent d'ajuster localement le comportement des messages éphémères. Ces paramètres ne sont pas partagés avec les autres participants."; - -"TIME_BASED_SINGLE_DISCUSSION_SECTION_FOOTER" = "Si ce réglage est activé, les messages plus anciens que le temps spécifié seront régulièrement supprimés de cette discussion."; - -"EXPECTED_DELETION_DATE" = "Date de suppression"; - -"RETENTION_INFO_LABEL" = "Informations de rétention de message"; - -"NUMBER_OF_MESSAGES_BEFORE_DELETION" = "Nombre de nouveaux messages avant suppression"; - -"WILL_SOON_BE_DELETED" = "Ce message sera prochainement supprimé"; - -"NO_MESSAGE" = "Aucun message"; - -"SETTINGS_UPDATE_TITLE" = "Mise à jour de la configuration"; - -"ACCESS_TO_ADVANCED_SETTINGS" = "Accès aux paramètres avancés"; - -"SKIP_SAS_DURING_WEBCLIENT_TESTING" = "Ne pas utiliser le SAS pendant le test du client web"; - -"USE_SCALED_TURN" = "Utilisation des serveurs turn distribués pour la VoIP"; - -"Received" = "Reçu"; - -"Remotely wiped" = "Éliminé à distance"; - -"Remotely wiped by %@" = "Éliminé à distance par %@"; - -"Perform the deletion for all users" = "Suppression chez tous les utilisateurs"; - -"REMOTE_WIPED_MESSAGE" = "Éliminé à distance"; - -"Delete all messages for all users" = "Supprimer tous les messages chez tous les utilisateurs"; - -"Delete all messages for all users?" = "Supprimer tous les messages chez tous les utilisateurs ?"; - -"Do you wish to delete all the messages on all the devices of all the users of this discussion? This action is irrevisble." = "Voulez-vous supprimer tous les messages des téléphones de tous les participants de cette discussion ? Attention, cette opération est irréversible."; - -"This discussion was remotely wiped by %@ on %@" = "Cette discussion a été effacée à distance par %@ le %@"; - -"This discussion was remotely wiped by %@" = "Cette discussion a été effacée à distance par %@"; - -"EDIT_YOUR_MESSAGE" = "Modifiez votre message"; - -"UPDATE_YOUR_ALREADY_SENT_MESSAGE" = "Mettez à jour le message déjà envoyé"; - -"Edited" = "Modifié"; - -"CREATE_MY_ID" = "Créer mon profil"; - -"TAKE_PICTURE" = "Prendre une photo"; - -"CHOOSE_PICTURE" = "Choisir une photo"; - -"REMOVE_PICTURE" = "Supprimer la photo"; - -"PROFILE_PICTURE" = "Photo de profil"; - -"ENTER_GROUP_DETAILS" = "Détails du nouveau groupe"; - -"GROUP_NAME" = "Nom du groupe"; - -"GROUP_DESCRIPTION" = "Description du groupe"; - -"PUBLISH_NEW_GROUP" = "Publier ce nouveau groupe ?"; - -"ARE_YOU_SURE_CREATE_NEW_OWNED_GROUP" = "Voulez-vous créer ce nouveau groupe maintenant ?"; - -"CREATE_MY_GROUP" = "Créer le groupe"; - -"CREATE_GROUP" = "Créer le groupe"; - -"EDIT_GROUP" = "Modifier le groupe"; - -"PUBLISH_GROUP" = "Publier les modifications"; - -"ARE_YOU_SURE_PUBLISH_EDITED_OWNED_GROUP" = "Voulez-vous publier les modifications ou les annuler ?"; - -"PUBLISH_MY_GROUP" = "Publier les modifications"; - -"INTRODUCE_%@_TO" = "Présenter %@ à..."; - -"ON_MY_DEVICE_%@" = "Sur mon %@"; - -"DELETE_CONTACT" = "Supprimer le contact"; - -"UPDATE_DETAILS" = "Utiliser les nouveaux détails"; - -"START_HERE" = "Ajoutez votre premier contact !"; - -"IDENTITY_CREATION_OPTION_TITLE" = "Options"; - -"IDENTITY_CREATION_OPTION_EXPLANATION" = "Cet écran vous permet de paramétrer des options avancées pour la création de votre identité Olvid. Vous pouvez saisir ces options manuellement, ou scanner un code QR de configuration."; - -"VALIDATE_OPTIONS" = "Valider les options"; - -"OLVID_SERVER" = "Serveur Olvid"; - -"LICENSE_ACTIVATION_CODE" = "Code d'activation de licence"; - -"UNABLE_TO_CHECK_LICENSE_STATUS" = "Impossible de vérifier le status de la licence"; - -"CHECK_SERVER_AND_LICENSE_ACTIVATION_CODE" = "Veuillez vérifier l'url du serveur ainsi que le code d'activation de licence."; - -"Server: %@" = "Serveur: %@"; - -"LEAVE_BLANK_IF_USING_THE_DEFAULT_ACTIVATION_CODE" = "Laisser vide pour utiliser le code par défaut."; - -"SERVER_URL" = "URL du serveur"; - -"PASTED_STRING_IS_NOT_VALID_OLVID_CONFIG" = "Ce que vous venez de coller ne semble pas être une URL de configuration d'Olvid 🤔."; - -"IDENTITY_SETTINGS" = "Paramètres de l'identité"; - -"PASTE_CONFIGURATION_LINK" = "Coller une configuration depuis le presse-papier"; - -"IDENTITY_PROVIDER_OPTION_EXPLANATION" = "Cet écran vous permet de configurer manuellement le fournisseur d'identités de votre entreprise. Si vous avez reçu un lien (ou un code QR) de configuration, appuyez sur « Retour » et appuyez sur le lien ou scannez le code. Le processus de démarrage n'en sera que plus simple 😇.\n\nVeuillez contacter votre administrateur pour plus de détails."; - -"IDENTITY_PROVIDER_SERVER" = "Serveur fournisseur d'identités"; - -"SERVER_CLIENT_ID" = "Client ID"; - -"SERVER_CLIENT_SECRET" = "Client Secret"; - -"IDENTITY_PROVIDER" = "Fournisseur d'identités"; - -"VALIDATE_SERVER" = "Valider le serveur"; - -"AUTHENTICATE" = "S'authentifier"; - -"IDENTITY_SERVER_VALIDATION_FAILED" = "La validation du serveur a échoué"; - -"CHECK_IDENTITY_SERVER" = "Veuillez vérifier l'url du serveur d'identités."; - -"AUTHENTICATION_FAILED" = "L'authentification a échoué"; - -"CHECK_IDENTITY_SERVER_PARAMETERS" = "Veuillez vérifier votre paramètres de connexion au fournisseur d'identités."; - -"Identity Server: %@" = "Serveur d'identité: %@"; - -"EXPLANATION_MANAGED_IDENTITY" = "Le nom ci-dessus a été obtenu via votre fournisseur d'identités et ne peut être modifié. Vous pouvez néanmoins choisir une photo de profil. Ces informations ne seront jamais envoyées aux serveurs d'Olvid."; - -"ENTER_API_KEY" = "Entrer une clé de licence"; - -"SCAN_QR_CODE_CONFIGURATION" = "Scanner un code QR de configuration"; - -"Successfully revoked previous Olvid ID" = "Votre ID précédent a été révoqué."; - -"Search" = "Rechercher"; - -"SEARCH_HERE" = "Recherchez un contact de votre entreprise 🔎"; - -"UNABLE_TO_PERFORM_KEYCLOAK_SEARCH" = "La recherche n'a pas pu s'effectuer."; - -"Confirmation" = "Confirmation"; - -"Do you wish to add %@ to your contacts?" = "Voulez-vous ajouter %@ à vos contacts ?"; - -"ADD_TO_CONTACTS" = "Ajouter aux contacts"; - -"NEW_DETAILS_EXPLANATION_%@_%@" = "%1$@ a mis à jour ses informations. Si vous voulez utiliser ces nouveaux détails à la place de ceux actuellements stockés sur votre %2$@, touchez le bouton ci-dessous."; - -"ESTABLISHING_SECURE_CHANNEL" = "Établissement d'un canal de discussion sécurisé"; - -"ESTABLISHING_SECURE_CHANNEL_EXPLANATION" = "Un canal sécurisé est actuellement en cours de création. Ce processus ne demande que quelques secondes si vous et votre contact êtes tous deux en ligne.\n\nSi vous pensez que quelque chose s'est mal passé, vous pouvez redémarrer la création de ce canal."; - -"RESTART_CHANNEL_CREATION" = "Redémarrer la création du canal sécurisé"; - -"Restart" = "Redémarrer"; - -"RECREATE_CHANNEL" = "Recréer le canal sécurisé"; - -"Do you really wish to recreate the secure channel?" = "Voulez-vous vraiment recréer le canal sécurisé ?"; - -"REALLY_DELETE_CONTACT" = "Si vous supprimez ce contact, vous ne pourrez plus échanger de message avec cette personne.\n\nSouhaitez-vous supprimer ce contact ?"; - -"TRUST_ORIGIN_TITLE_DIRECT" = "Vérification face-à-face"; - -"TRUST_ORIGIN_TITLE_INTRODUCTION_%@" = "Présenté par %@"; - -"INTRODUCED_BY_FORMER_CONTACT" = "Présenté par un ancien contact"; - -"TRUST_ORIGIN_TITLE_GROUP" = "Présenté lors d'une création de groupe"; - -"TRUST_ORIGINS" = "Origines de confiance"; - -"Chat" = "Discuter"; - -"Call" = "Appeler"; - -"CALL_BACK" = "Rappeler"; - -"CUSTOM_KEYBOARD_MANAGEMENT" = "Gestion des claviers personnalisés"; - -"ALLOW_CUSTOM_KEYBOARDS" = "Autoriser les claviers personnalisés"; - -"CUSTOM_KEYBOARD_MANAGEMENT_EXPLANATION" = "Tout changement de ce paramètre ne prendra effet qu'après un redémarrage complet d'Olvid."; - -"IDENTITY_SERVER" = "Serveur d'identités"; - -"BAD_KEYCLOAK_SERVER_RESPONSE" = "Quelque chose s'est mal passé avec le serveur d'identités 😨. Si le problème persiste, nous vous recommandons de contacter votre administrateur."; - -"Unavailable" = "Indisponible"; - -"EDIT_CONTACT_NICKNAME_EXPLANATION_%@" = "Vous pouvez choisir un surnom et une photo de profil personnalisée pour votre contact. Ils apparaîtront sur votre %@ uniquement, et ne seront partagés avec personne."; - -"Save" = "Enregistrer"; - -"Reset" = "Réinitialiser"; - -"FORM_NICKNAME" = "Surnom"; - -"EDIT_CONTACT_NICKNAME" = "Edition surnom et photo"; - -"TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_NEEDED" = "Votre serveur d'identités indique qu'un ID Olvid est déjà associé avec votre compte utilisateur. Si vous continuez, cet ID Olvid sera révoqué et remplacé par votre nouvel ID.\nVeuillez contacter votre administrateur si vous désirez plus d'informations."; - -"WARNING" = "Attention"; - -"TEXT_EXPLANATION_WARNING_IDENTITY_CREATION_KEYCLOAK_REVOCATION_IMPOSSIBLE" = "Votre serveur d'identités indique qu'un ID Olvid est déjà associé avec votre compte utilisateur. Vous ne pouvez pas procéder à la création de votre identité Olvid.\nVeuillez contacter votre administrateur pour plus d'informations."; - -"DIALOG_TITLE_IDENTITY_PROVIDER_ERROR" = "Erreur du fournisseur d'identités"; - -"DIALOG_MESSAGE_FAILED_TO_UPLOAD_IDENTITY_TO_KEYCLOAK" = "Olvid n'a pas réussi à transmettre votre ID Olvid au fournisseur d'identités de votre entreprise. De nouveaux essais seront réalisés en tâche de fond."; - -"LAST_MESSAGE_WAS_REMOTELY_WIPED" = "Dernier message éliminé à distance"; - -"UNABLE_TO_ACTIVATE_LICENSE_TITLE" = "Impossible d'activer la licence"; - -"UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION" = "Votre ID Olvid est actuellement gérée par le fournisseur d'identité de votre entreprise. À ce titre, vous ne pouvez pas activer de license Olvid manuellement."; - -"PLEASE_CONTACT_ADMIN_FOR_MORE_DETAILS" = "Veuillez contacter votre administrateur pour plus d'informations."; - -"EXPLANATION_KEYCLOAK_UPDATE_NEW" = "Vous êtes sur le point de configurer le fournisseur d'identités de votre société au sein d'Olvid. Une fois configuré, vous pourrez vous authentifier auprès de ce serveur et Olvid vous permettra d'ajouter automatiquement d'autres employés à vos contacts."; - -"LABEL_BIND_KEYCLOAK" = "Utiliser un serveur d'identités"; - -"BUTTON_LABEL_MANAGE_KEYCLOAK" = "Passer à un ID géré"; - -"EXPLANATION_KEYCLOAK_BIND" = "Le nom ci-dessus à été récupéré depuis le fournisseur d'identités de votre société.\nUne fois votre ID Olvid géré par ce fournisseur, c'est comme cela que vos contacts vous verront dans Olvid."; - -"EXPLANATION_KEYCLOAK_UPDATE_BAD_SERVER" = "Olvid ne peut pas configurer le fournisseur d'identité de votre société avec votre ID Olvid actuel. Votre ID a été généré sur un serveur Olvid différent."; - -"REMOVE_IDENTITY_PROVIDER" = "Supprimer le fournisseur d'identités"; - -"DIALOG_MESSAGE_UNBIND_FROM_KEYCLOAK" = "Votre ID Olvid est actuellement géré par le fournisseur d'identités de votre société. Vous êtes sur le point de passer à un ID Olvid normal, non-géré.\n\nSi vous continuez, vous ne pourrez plus ajouter automatiquement d'autres employés à vos contacts. Veuillez contacter votre administrateur pour plus de détails.\n\nSouhaitez-vous continuer ?"; - -"GLOBAL_LOCAL_EPHEMERAL_SETTINGS_EXPLANATION" = "Les réglages ci-dessous vous permettent d'ajuster localement le comportement par défaut des messages éphémères. Ces paramètres ne sont pas partagés avec les autres participants aux discussions."; - -"GLOBAL_LOCAL_EPHEMERAL_SETTINGS_EXPLANATION" = "Les réglages ci-dessous vous permettent d'ajuster localement le comportement par défaut des messages éphémères. Ces paramètres ne sont pas partagés avec les autres participants aux discussions."; - -"SERVER_DOES_NOT_SUPPORT_CALLS" = "Le serveur ne permet pas de passer des appels"; - -"STD_MSG_OLVID_TAKES_TOO_LONG_TO_START" = "Olvid semble prendre plus de temps que d'habitude pour démarrer. Cela peut arriver après une mise à jour. Rassurez-vous, même si le problème persiste, aucune de vos données n'a été perdue."; - -"SHARE_MSG_OLVID_TAKES_TOO_LONG_TO_START" = "Si le problème persiste, vous pouvez aider l'équipe de développement à résoudre votre problème via la bouton ci-dessous. Vous partagerez (uniquement) le message encadré ci-dessous avec elle."; - -"ADDING_KEYCLOAK_CONTACT_FAILED" = "L'ajout de contact a échoué"; - -"PLEASE_TRY_AGAIN_LATER" = "Veuillez essayer à nouveau plus tard"; - -"AUTHENTICATION_FAILED" = "L'authentification a échoué"; - -"PLEASE_TRY_AGAIN" = "Essayez à nouveau"; - -"COULD_NOT_SWITCH_TO_MANAGED_ID" = "Il n'a pas été possible de passer à un ID géré"; - -"UNABLE_TO_ACTIVATE_LICENSE_EXPLANATION_ALT" = "Le serveur de distribution de message spécifié dans votre ID Olvid est incompatible avec le serveur indiqué dans la licence."; - -"CONTACTS_SORT_ORDER" = "Ordre de tri des contacts"; - -"FIRST_NAME_LAST_NAME" = "Prénom Nom"; - -"LAST_NAME_FIRST_NAME" = "Nom Prénom"; - -"MAX_AVG_BITRATE" = "Débit moyen maximum"; - -"ICLOUD_ACCOUNT_TEMPORARILY_UNAVAILABLE" = "Compte iCloud indisponible pour le moment"; - -"ICLOUD_ACCOUNT_TRY_AGAIN_LATER" = "Veuillez essayer à nouveau plus tard"; - -"DISMISS" = "Quitter"; - -"INVALID_QR_CODE" = "Ce code QR n'est pas valide"; - -"IMPOSSIBLE_TO_ADD_%@_WITH_THIS_QR_CODE" = "Ce code QR ne peut pas être utilisé pour ajouter %1$@ à vos contacts. Veuillez essayer à nouveau, en vous assurant que %1$@ scanne votre code QR avant que vous ne scanniez le sien."; - -"SEND_INVITE_TO_%@_TO_ADD_THEM_TO_YOUR_CONTACTS_FROM_A_DISTANCE" = "Envoyez une invitation à %@ pour l'ajouter à vos contacts à distance."; - -"OPTION_%@_FROM_A_DISTANCE" = "Option %@ : Inviter à distance"; - -"OPTION_%@_LOCALLY" = "Option %@ : Inviter localement"; - -"INVITE_%@_LOCALLY" = "Si %@ est à côté de vous, faites lui scanner ce code QR pour l'ajouter à vos contacts immédiatement."; - -"MISSING_CHANNEL_FOR_CALL_TITLE_%@" = "%@ ne peut pas encore être appelé"; - -"MISSING_CHANNEL_FOR_CALL_MESSAGE_%@" = "Vous pourrez appeler %@ dès que le canal sécurisé sera établi. Veuillez essayer à nouveau plus tard."; - -"REPLYING_TO_%@" = "Réponse à %@"; - -"REPLYING_TO_CONTACT" = "Réponse à un contact"; - -"REPLYING_TO_YOURSELF" = "Réponse à vous-même"; - -"REPLYING" = "Réponse"; - -"REPLYING_TO_YOU" = "Réponse à vous"; - -"Loading" = "Chargement"; - -"USE_OLD_DISCUSSION_INTERFACE" = "Utiliser l'ancien style de discussions"; - -"TAP_TO_CANCEL" = "Appuyez pour annuler"; - -"PLEASE_UPDATE_OLVID_FROM_MAIN_APP" = "Veuillez lancer l'app Olvid afin de terminer la mise à jour 🚀. Vous pourrez à nouveau partager du contenu une fois que ce sera fait 😉."; - -"PLEASE_LAUNCH_OLVID_FROM_MAIN_APP" = "Il vous faut lancer l'app Olvid avant de pouvoir partager du contenu 😉."; - -"SCAN_DOCUMENT" = "Scanner un document"; - -"EPHEMERAL_MESSAGE" = "Message éphémère"; - -"SHOOT_PHOTO_OR_MOVIE" = "Appareil photo"; - -"CHOOSE_IMAGE_FROM_LIBRARY" = "Librairie de photos & vidéos"; - -"CHOOSE_FILE" = "Choisir un fichier"; - -"INTRODUCE_CONTACT_%@_TO" = "Présenter %@ à..."; - -"DIALOG_MISSING_MESSAGES_TITLE" = "Messages manquants"; - -"DIALOG_MISSING_MESSAGES_MESSAGE" = "Cet indicateur de message manquant vous prévient qu'un trou a été détecté dans la séquence de numérotation des messages reçus de votre contact.\n\nCeci est soit dû à l'annulation d'envoi d'un message (vous ne recevrez jamais ce message), soit à l'envoi d'un message plus gros (en général, avec des pièces jointes) qui n'a pas encore été entièrement déposé sur le serveur (vous devriez le recevoir prochainement)."; - -"SHOW_BACKUP_SCREEN" = "Paramètres de sauvegarde"; - -"SHOW_SETTINGS_SCREEN" = "Tous les paramètres"; - -"TOGGLE_EDIT_PINNED_STATE" = "Modifier les discussions épinglées"; - -"CONTACT_SORT_ORDER" = "Ordre de tri des contacts..."; - -"Later" = "Plus tard"; -"Now" = "Maintenant"; -"REMIND_ME_LATER" = "Me rappeler plus tard"; - -"SNACK_BAR_BODY_CREATE_BACKUP_KEY" = "Il est temps de configurer les sauvegardes !"; -"SNACK_BAR_BUTTON_TITLE_CREATE_BACKUP_KEY" = "Info"; -"SNACK_BAR_DETAILS_TITLE_CREATE_BACKUP_KEY" = "Pourquoi configurer les sauvegardes 🧐 ?"; -"SNACK_BAR_DETAILS_BODY_CREATE_BACKUP_KEY_%@" = "Si vous veniez à égarer votre %@, ou à désinstaller Olvid par erreur, vous perdriez votre ID Olvid, l'intégralité de vos contacts et tous vos groupes 😱. Fort heureusement, il est possible de les sauvegarder de façon sécurisée 😅. Appuyez sur « Paramétrer les sauvegardes » pour commencer."; -"CONFIGURE_BACKUPS_BUTTON_TITLE" = "Paramétrer les sauvegardes"; - -"SNACK_BAR_BODY_SHOULD_PERFORM_BACKUP" = "Il est temps de faire une sauvegarde !"; -"SNACK_BAR_BUTTON_TITLE_SHOULD_PERFORM_BACKUP" = "Info"; -"SNACK_BAR_DETAILS_TITLE_SHOULD_PERFORM_BACKUP" = "Pourquoi faire une sauvegarde 🧐 ?"; -"SNACK_BAR_DETAILS_BODY_SHOULD_PERFORM_BACKUP_%@" = "Pour ne perdre aucun contact, nous vous recommandons d'activer les sauvegardes automatiques vers iCloud. Rassurez-vous, elles sont chiffrées 🤓 ! Sinon, vous pouvez aussi effectuer des sauvegardes manuelles régulièrement. Appuyez sur « Paramétrer les sauvegardes » pour commencer."; - -"SNACK_BAR_BODY_SHOULD_VERIFY_BACKUP_KEY" = "Vous souvenez-vous de votre clé de sauvegarde ?"; -"SNACK_BAR_BUTTON_TITLE_SHOULD_VERIFY_BACKUP_KEY" = "Info"; -"SNACK_BAR_DETAILS_TITLE_SHOULD_VERIFY_BACKUP_KEY" = "Pourquoi vérifier sa clé de sauvegarde 🧐 ?"; -"SNACK_BAR_DETAILS_BODY_SHOULD_VERIFY_BACKUP_KEY_%@" = "Avoir une sauvegarde à jour est essentiel, mais il vous faut votre clé de sauvegarde pour la restaurer ! Appuyez sur « Paramétrer les sauvegardes » pour vérifier votre clé. Si vous avez perdu cette clé, pas d'inquiétude, vous pourrez en générer une nouvelle 🤗."; - -"You" = "Vous"; - -"Touch to return to call" = "Touchez pour revenir à l'appel"; - -"ERROR" = "Erreur"; - -"SNACK_BAR_BODY_GRANT_PERMISSION_TO_RECORD" = "Vous avez raté un appel !"; -"SNACK_BAR_BODY_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" = "Vous avez raté un appel !"; -"SNACK_BAR_BUTTON_TITLE_GRANT_PERMISSION_TO_RECORD" = "Info"; -"SNACK_BAR_BUTTON_TITLE_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" = "Info"; -"SNACK_BAR_DETAILS_TITLE_GRANT_PERMISSION_TO_RECORD" = "Vous avez raté un appel car Olvid n'a pas accès au micro"; -"SNACK_BAR_DETAILS_TITLE_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" = "Vous avez raté un appel car Olvid n'a pas accès au micro"; -"SNACK_BAR_DETAILS_BODY_GRANT_PERMISSION_TO_RECORD" = "Pour recevoir des appels, vous devez autoriser Olvid à accéder au micro."; -"SNACK_BAR_DETAILS_BODY_GRANT_PERMISSION_TO_RECORD_IN_SETTINGS" = "Pour recevoir des appels, vous devez autoriser Olvid à accéder au micro. Pour ne plus rater d'appel, allez dans les Réglages et autorisez l'accès au micro pour Olvid."; -"GRANT_PERMISSION_TO_RECORD_BUTTON_TITLE" = "Autoriser l'accès au micro"; -"GRANT_PERMISSION_TO_RECORD_IN_SETTINGS_BUTTON_TITLE" = "Aller dans les Réglages"; - -"SNACK_BAR_BODY_LAST_UPLOAD_BACKUP_HAS_FAILED" = "La dernière sauvegarde a échoué"; -"SNACK_BAR_TITLE_LAST_UPLOAD_BACKUP_HAS_FAILED" = "Info"; -"SNACK_BAR_DETAILS_TITLE_LAST_UPLOAD_BACKUP_HAS_FAILED" = "Que puis-je faire ?"; -"SNACK_BAR_DETAILS_BODY_LAST_UPLOAD_BACKUP_HAS_FAILED" = "Nous vous recommandons de vérifier que vous avez bien configurer votre compte iCloud sur cet appareil. Ensuite, vous pourrez essayer à nouveau."; - -"DIALOG_TITLE_KEYCLOAK_IDENTITY_WAS_REVOKED" = "Fournisseur d'identités supprimé"; -"DIALOG_MESSAGE_KEYCLOAK_IDENTITY_WAS_REVOKED" = "Il semble que votre compte a été supprimé du fournisseur d'identités de votre société. Si vous avez quitté votre entreprise, ceci est normal et vous pouvez continuer à utiliser Olvid en tant qu'utilisateur gratuit.\n\nSi vous pensez que c'est une erreur, veuillez contacter votre administrateur pour enregistrer à nouveau ce fournisseur d'identités dans Olvid."; - -"AUTHENTICATION_REQUIRED" = "Authentification Requise"; - -"AUTHENTICATION_REQUIRED_TOKEN_EXPIRED_MESSAGE" = "Votre identité Olvid est gérée par le fournisseur d'identité de votre entreprise. Il faut vous ré-authentifier auprès de ce fournisseur d'identité pour continuer."; - -"USER_CHANGE_DETECTED" = "Changement d'utilisateur détecté"; - -"AUTHENTICATION_REQUIRED_USER_ID_CHANGED_MESSAGE" = "Votre ID Olvid est gérée par le fournisseur d'identités de votre entreprise. Il semblerait que vous vous soyiez authentifié avec un compte différent du compte habituel. Ceci n'est pas supporté.\n\nContactez votre adminisrateur ou ré-authentifié vous avec le compte habituel."; - -"KEYCLOAK_REVOCATION" = "Révoquer l'ID Olvid précédent"; - -"KEYCLOAK_REVOCATION_BUTTON" = "Révoquer ID précédent"; - -"KEYCLOAK_REVOCATION_MESSAGE" = "Un autre ID Olvid est associé avec le compte géré avec le fournisseur d'identités de votre entreprise. Si vous avez générez un nouvel ID Olvid, il vous faut révoquer le précédent."; - -"KEYCLOAK_REVOCATION_SUCCESSFUL" = "L'ID Olvid précédent a été révoqué"; - -"KEYCLOAK_REVOCATION_FAILURE" = "L'ID Olvid précédent n'a pas pu être révoqué"; - -"ADD_CONTACT_BUTTON" = "Ajouter un contact"; - -"ADD_CONTACT_TITLE" = "Ajouter un contact"; - -"DIALOG_TITLE_KEYCLOAK_SIGNATURE_KEY_CHANGED" = "Changement de clé du fournisseur d'identités"; - -"DIALOG_MESSAGE_KEYCLOAK_SIGNATURE_KEY_CHANGED" = "Olvid a détecté une modification de la clé de signature cryptographique de votre fournisseur d'identités. Cela ne devrait normalement jamais arriver.\n\nVeuillez contacter votre administrateur et n'appuyer sur « Mettre la clé à jour » que si elle peut confirmer que cette modification est intentionnelle. En cas de doute, appuyez sur « Annuler »."; - -"BUTTON_LABEL_UPDATE_KEY" = "Mettre la clé à jour"; - -"USER_CANNOT_MAKE_PAYMENT_TITLE" = "Il semblerait que vous ne puissiez pas faire de paiement 😢"; -"USER_CANNOT_MAKE_PAYMENT_DESCRIPTION" = "Les options payantes d'Olvid sont disponibles via les achats intégrés de l'App Store. Il semblerait que vous ne puissiez pas y faire d'achat. Ceci peut arriver si votre moyen de paiement est invalide ou si votre compte est restreint (contrôle parental ou compte entreprise)."; - -"Directory" = "Annuaire"; - - -"DELETION_IN_PROGRESS" = "Suppression en cours"; -"DELETION_TERMINATED" = "Suppression terminée"; - -"DRAG_AND_DROP_TO_CONFIGURE_PREFERRED_EMOJIS_LIST" = "Déposez ici vos réactions préférés !"; - -"CONTACT_IS_NOT_ACTIVE_EXPLANATION_TITLE" = "Contact revoqué par le fournisseur d'identités de votre société"; - -"CONTACT_IS_NOT_ACTIVE_EXPLANATION_BODY" = "Ce contact a été révoqué par le fournisseur d'identités de votre société. Son ID Olvid a peut-être été compromis et la sécurité de vos communications ne peut être garantie.\n\nSi vous êtes certain que l'ID Olvid de votre contact n'a jamais été compromis, vous pouvez le débloquer manuellement.\nVeuillez contacter votre administrateur pour plus d'informations."; - -"UNBLOCK_CONTACT" = "Débloquer le contact"; - -"UNBLOCK_CONTACT_CONFIRMATION" = "Voulez-vous débloquer le contact ?"; - -"EXPLANATION_CONTACT_REVOKED_AND_UNBLOCKED" = "Ce contact a été révoqué par le fournisseur d'identités de votre société. Leur ID Olvid a peut-être été compromis et la sécurité de vos communications ne peut être garantie.\n\nVous avez précédemment décidé de le débloquer manuellement. Si vous n'êtes pas certain de votre décision, il est recommandé de re-bloquer ce contact.\nVeuillez contacter votre administrateur pour plus d'informations."; - -"REBLOCK_CONTACT_CONFIRMATION" = "Voulez-vous re-bloquer le contact ?"; - -"REBLOCK_CONTACT" = "Re-bloquer le contact"; - -"DIALOG_TITLE_OUTDATED_VERSION" = "Mise à jour requise"; -"DIALOG_MESSAGE_OUTDATED_VERSION" = "Votre version d'Olvid est dépassée et doit être mise à jour.\n\nVous passez probablement à côté de nombreuses nouvelles fonctionnalités et nous ne pouvons pas vous garantir la compatibilité de votre version avec les versions plus récentes utilisées par vos contacts."; -"BUTTON_LABEL_UPDATE" = "Mettre à jour"; -"BUTTON_LABEL_REMIND_ME_LATER" = "Me rappeler plus tard"; - -"DIALOG_OWNED_IDENTITY_WAS_REVOKED_BY_KEYCLOAK_TITLE" = "Votre ID Olvid a été révoquée"; -"DIALOG_OWNED_IDENTITY_WAS_REVOKED_BY_KEYCLOAK_MESSAGE" = "Le fournisseur d'identités de votre entreprise a révoqué votre ID Olvid. Nous vous recommandons de contacter votre administrateur."; - -"CONTACT_REVOKED_BY_COMPANY_IDENTITY_PROVIDER" = "Contact revoqué par le fournisseur d'identités de votre société"; - -"Active" = "Active"; - -"CERTIFIED_BY_IDENTITY_PROVIDER" = "Certifiée par un fournisseur d'identité"; - -"DEVICE %lld" = "Dispositif %lld"; - -"TECHNICAL_DETAILS" = "Détails techniques"; - -"DETAILS_SIGNED_BY_IDENTITY_PROVIDER" = "Détails signés par le fournisseur d'identités"; - -"SIGNED_DETAILS_DATE" = "Date de la signature"; - -"KEYCLOAK_ID" = "Keycloak ID"; - -"SHOW_CONTACT_DETAILS" = "Voir tous les détails du contact"; - -"VALUE_COPIED" = "Valeur copiée"; - -"DEFAULT_EMOJI" = "Emoji rapide par défaut"; - -"SCAN_QR_CODE" = "Scanner un code QR"; - -"CONFIGURATION_SCAN" = "Scan de configuration"; - -"IDENTITY_PROVIDER_CONFIGURED_SUCCESS" = "Le fournisseur d'identités de votre société a été configuré avec succès. Appuyez sur « S'authentifier » pour vous y connecter et récupérer vos informations personnelles."; - -"IDENTITY_PROVIDER_CONFIGURED_FAILURE" = "Le fournisseur d'identités de votre société ne semble pas disponible. Veuillez contacter votre administrateur."; - -"MANUAL_CONFIGURATION" = "Configuration manuelle"; - -"WILL_INVITE_%@_AFTER_ONBOARDING" = "Vous pourrez inviter %@ juste après la création de votre ID Olvid ✌️."; - -"WILL_PROCESS_API_KEY_AFTER_ONBOARDING" = "La clé d'API sera prise en compte juste après la création de votre ID Olvid ✌️."; - -"CLIENT_ID" = "Client Id"; - -"CLIENT_SECRET" = "Secret client"; - -"IDENTITY_PROVIDER_CONFIGURATION" = "Configuration du fournisseur d'identités"; - -"CURRENT_DEVICE" = "Cet appareil"; - -"OTHER_DEVICE" = "Autre appareil"; - -"NEW_COMPOSE_MESSAGE_VIEW_PREFERENCES" = "Personnaliser la composition de message"; - -"NEW_COMPOSE_MESSAGE_VIEW_ACTION_ORDER_HEADER" = "Ordre préféré des boutons de composition de message"; - -"NEW_COMPOSE_MESSAGE_VIEW_ACTION_ORDER_FOOTER" = "Le premier bouton apparaîtra juste à côté la zone de composition du message de vos messages. Nous vous recommandons de placer les boutons que vous utilisez le plus au sommet de la liste, de façon à les atteindre en une touche."; - -"COMPOSE_MESSAGE_SETTINGS" = "Personnaliser"; - -"OPEN_SOURCE_LICENCES" = "Licences Open Source"; - -"HOW_TO_ADD_REACTION_TO_A_MESSAGE" = "Vous pouvez appuyer deux fois sur un message pour ajouter une reaction."; - -"RESET_COMPOSE_MESSAGE_VIEW_ACTIONS_ORDER" = "Réinitialiser l'ordre des boutons"; - -"UNAVAILABLE_MESSAGE" = "Message non disponible"; - -"RESET_DISCUSSION_EMOJI_TO_DEFAULT" = "Réinitialiser"; - -"RESET_DISCUSSION_EMOJI_TO_DEFAULT_DISCUSSION_LEVEL" = "Réinitialiser"; - -"DEFAULT_EMOJI_AT_APP_LEVEL" = "Emoji rapide"; - -"QUICK_EMOJI_EXPLANATION" = "L'emoji rapide est accessible quand la zone de composition de message ne contient pas de texte. Appuyer sur cet emoji l'envoie immédiatement. Appuyer deux (ou trois) fois en envoie deux (ou trois). Vous pouvez personnaliser ici l'emoji rapide par défaut pour toutes les discussions. Ce choix peut-être outrepassé au niveau de chaque discussion, en personnalisant l'emoji rapide de la discussion."; - -"DISCUSSION_QUICK_EMOJI" = "Emoji rapide pour cette discussion"; - -"SNACK_BAR_BODY_IOS_VERSION_WILL_BE_UNSUPPORTED" = "⚠️ Le support pour votre version d'iOS sera bientôt abandonné."; -"SNACK_BAR_BODY_IOS_VERSION_SHOULD_UPGRADE" = "Mise à jour d'iOS recommandée."; -"SNACK_BAR_BODY_IOS_VERSION_ACCEPTABLE" = "Mise à jour d'iOS recommandée."; - -"SNACK_BAR_TITLE_IOS_VERSION_WILL_BE_UNSUPPORTED" = "Info"; -"SNACK_BAR_TITLE_IOS_VERSION_SHOULD_UPGRADE" = "Info"; -"SNACK_BAR_TITLE_IOS_VERSION_ACCEPTABLE" = "Info"; - -"SNACK_BAR_DETAILS_TITLE_IOS_VERSION_WILL_BE_UNSUPPORTED" = "Le support pour votre version d'iOS sera bientôt abandonné."; -"SNACK_BAR_DETAILS_TITLE_IOS_VERSION_SHOULD_UPGRADE" = "Mise à jour d'iOS recommandée"; -"SNACK_BAR_DETAILS_TITLE_IOS_VERSION_ACCEPTABLE" = "Mise à jour d'iOS recommandée"; - -"SNACK_BAR_DETAILS_BODY_IOS_VERSION_WILL_BE_UNSUPPORTED" = "Nous avons détecté que vous utilisez une version d'iOS que Olvid ne supportera plus, à partir de la prochaine mise à jour. Nous vous présentons toutes nos excuses. Si possible, nous vous recommandons de mettre à jour iOS.\nPour ce faire, accédez à l'App Réglages sur votre appareil. Allez dans Général puis touchez Mise à jour logicielle."; -"SNACK_BAR_DETAILS_BODY_IOS_VERSION_SHOULD_UPGRADE" = "Nous avons détecté que vous n'utilisez pas la dernière version d'iOS. Vous être en train de passer à côté de fonctionnalités importantes d'Olvid. Pour profiter d'Olvid au maximum, vous devriez mettre à jour iOS.\nPour ce faire, accédez à l'App Réglages sur votre appareil. Allez dans Général puis touchez Mise à jour logicielle."; -"SNACK_BAR_DETAILS_BODY_IOS_VERSION_ACCEPTABLE" = "Pour vous assurez que vous utilisez la dernière version d'iOS, accédez à l'App Réglages sur votre appareil. Allez dans Général puis touchez Mise à jour logicielle."; - -"MESSAGE_REACTION_NOTIFICATION_%@_%@" = "A réagi %@ à : %@"; -"MESSAGE_REACTION_NOTIFICATION_%@" = "A réagi %@ à votre message"; - -"NEW_REACTION" = "Nouvelle réaction"; -"TAP_TO_SEE_THE_REACTION" = "Appuyez pour voir la réaction."; - -/* Notification title */ -"NEW_REACTION_FROM_%@" = "Nouvelle réaction de %@"; - -"CAPABILITIES" = "Capacités"; - -"CAPABILITY_WEBRTC_CONTINUOUS_ICE" = "VoIP v2"; - -"DELETE_OWN_REACTION" = "Supprimer ma réaction"; - -"VALIDATING_ENTERPRISE_CONFIGURATION" = "Configuration automatique en cours..."; - -"CONTACTS_AND_GROUPS" = "Contacts & Groupes"; - -"Everyone" = "Tout le monde"; - -"No one" = "Personne"; - -"AUTO_ACCEPT_GROUP_INVITES_FROM" = "Accepter automatiquement les invitations de groupe de…"; - -"AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_TITLE" = "Avant d'aller plus loin…"; - -"CAPABILITY_ONE_TO_ONE_CONTACTS" = "Contacts One2One"; - -"CAPABILITY_GROUPS_V2" = "Groupes v2"; - -"INVITE_%@_IF_YOU_WANT_ONE_TO_ONE_DISCUSSION" = "Pour discuter en privé avec %@ et l'ajouter à vos contacts, touchez « Inviter »."; - -"ONE_TO_ONE_DISCUSSION_INVITATION_SENT_TO_%@" = "Vous avez envoyé une invitation à discuter en privé à %@, qui doit encore l'accepter 🤞."; - -"ONE_TO_ONE_INVITATION_SENT" = "Invitation envoyée"; - -"ONE_TO_ONE_INVITATION_RECEIVED" = "Invitation à discuter en privé"; - -"ONE_TO_ONE_DISCUSSION_INVITATION_RECEIVED_FROM_%@" = "Pour accepter de discuter en privé avec %@ et l'ajouter à vos contacts, touchez « Accepter »."; - -"STOP_ONE_TO_ONE_DISCUSSION_WITH_CONTACT_ALERT_TITLE" = "Retirer des contacts ?"; - -"DO_YOU_WISH_TO_STOP_ONE_TO_ONE_DISCUSSION_WITH_@_ALERT_MESSAGE" = "En retirant %1$@ de vos contacts, vous mettez fin à la discussion privée avec cet utilisateur (autrement dit, vous ne pourrez plus échanger de messages dans votre discussion privée avec %1$@). Cela ne vous empêchera pas d'échanger des messages dans vos groupes communs."; - -"DO_STOP_ONE_TO_ONE_DISCUSSION" = "Retirer des contacts"; - -"DOWNGRADE_CONTACT_TO_NON_ONE_TO_ONE_BUTTON_TITLE" = "Retirer des contacts"; - -"DELETE_OLVID_USER" = "Supprimer cet utilisateur"; - -"OTHER_KNOWN_USERS" = "Autres utilisateurs"; - -"EXPLANATION_PLACED_ABOVE_LIST_OF_NON_ONE_TO_ONE_CONTACTS" = "Les utilisateurs ci-dessous ne font pas (encore) partie de vos contacts, et vous ne pouvez donc pas encore avoir de discussion privée avec eux. Mais vous pouvez les y inviter facilement 🚀 !"; - -"%@_INVITES_YOU_TO_ONE_TO_ONE_DISCUSSION" = "%@ vous invite à discuter en privé. Si vous acceptez, cet utilisateur sera ajouté à vos contacts."; - -"DELETE_USER_ACTION_TITLE" = "Supprimer cet utilisateur maintenant"; - -"INVITE_REQUIRED_ALERT_TITLE" = "Invitation requise"; - -"YOU_NEED_TO_INVITE_%@_BEFORE_HAVING_DISCUSSION_ALERT_MESSAGE" = "Vous ne pouvez pas discuter en privé avec %@ tant que cet utilisateur ne fait pas partie de vos contacts. Vous pouvez l'y inviter maintenant."; - -"SNACK_BAR_BODY_NEW_APP_VERSION_AVAILABLE" = "Une nouvelle version d'Olvid est disponible 🥳 !"; - -"SNACK_BAR_BUTTON_TITLE_NEW_APP_VERSION_AVAILABLE" = "Info"; - -"SNACK_BAR_DETAILS_TITLE_NEW_APP_VERSION_AVAILABLE" = "Une nouvelle version d'Olvid est disponible 🥳 !"; - -"SNACK_BAR_DETAILS_BODY_NEW_APP_VERSION_AVAILABLE" = "Une nouvelle version d'Olvid est disponible dès maintenant sur l'App Store. Pour ne pas rater les dernières nouveautés d'Olvid 🤓, nous vous recommandons de mettre à jour maintenant 🚀."; - -"GO_TO_APP_STORE_BUTTON_TITLE" = "Ouvrir l'App Store"; - -"INSTALLED_APP_IS_OUTDATED_ALERT_TITLE" = "Votre version d'Olvid est obsolète 😱 !"; - -"INSTALLED_APP_IS_OUTDATED_ALERT_BODY" = "Mais ne vous inquiétez pas 😊. Vous pouvez mettre à jour Olvid dès maintenant et ainsi découvrir les dernières nouveautés 🤓. Nous vous recommandons de mettre à jour maintenant 🚀."; - -"UPGRADE_NOW" = "Mettre à jour maintenant"; - -"MINIMUM_SUPPORTED_VERSION" = "Version minimum prise en charge"; - -"MINIMUM_RECOMMENDED_VERSION" = "Version minimum recommandée"; - -"UPGRADE_OLVID_NOW" = "Mettre à jour Olvid maintenant"; - -"SYNC" = "Sync"; - -"SYNC_REQUEST_SENT" = "Synchronisation envoyée"; - -"Choose" = "Choisir"; - -"SEND_MESSAGE" = "Envoyer un message"; - -"FAILED" = "Échec"; - -"CALL_INITIALISATION_NOT_SUPPORTED" = "Appels non supportés"; - -"CALL_FAILED" = "L'appel a échoué 😟"; - -"Choose" = "Choisir"; - -"YOUR_MESSAGE" = "Votre message..."; - -"HOW_TO_ADD_MESSAGE_REACTION" = "Tapez deux fois sur le message pour ajouter votre réaction."; - -"HOW_TO_ADD_REACTION_TO_PREFFERED" = "Ajoutez une étoile à une réaction pour l'ajouter à vos réactions préférées."; - -"HOW_TO_REMOVE_OWN_REACTION" = "Tapez pour supprimer votre réaction."; - -"Gallery" = "Galerie"; - -"Select" = "Choisir"; - -"DELETE_ITEMS" = "Supprimer les éléments"; - -"SHOW_IN_DISCUSSION" = "Afficher dans la discussion"; - -"NOT_PART_OF_THE_GROUP_ANYMORE" = "Vous ne faites plus partie de ce groupe, parce que vous l'avez quitté, parce qu'un administrateur vous a retiré du groupe, ou tout simplement parce que le groupe a été supprimé 🥲."; - -"REJOINED_GROUP" = "Vous faites à nouveau partie du groupe ✌️"; - -"CONTACT_%@_IS_ONE_TO_ONE_AGAIN" = "%@ fait à nouveau partie de vos contacts, vous pouvez reprendre la discussion là où vous l'aviez laissée 🤗."; - -"Medias" = "Médias"; - -"UNKNOWN_USER" = "Utilisateur inconnu"; - -"CREATE_GROUP_WITH_OWN_PERMISSION_ADMIN" = "Créer un groupe"; - -"CREATE_FIRST_GROUP_WITH_OWN_PERMISSION_ADMIN" = "Créez votre premier groupe"; - -"GROUPS_THAT_YOU_ADMINISTER" = "Groupes que vous administrez"; - -"NO_SOUNDS" = "Aucun"; - -"Forward" = "Transférer"; - -"Forwarded" = "Transféré"; - -"NO_SOUNDS" = "Aucun"; - -"ATTACHMENTS_INFO" = "Pièces jointes"; - -"NOTIFICATION_SOUNDS_TITLE_POLYPHONIC" = "Sons polyphoniques"; - -"NOTIFICATION_SOUNDS_TITLE_NEUTRAL" = "Sons neutres"; - -"NOTIFICATION_SOUNDS_NEUTRAL_CATEGORY_TITLE" = "Neutre"; -"NOTIFICATION_SOUNDS_ALARM_CATEGORY_TITLE" = "Alarmes"; -"NOTIFICATION_SOUNDS_ANIMAL_CATEGORY_TITLE" = "Animaux"; -"NOTIFICATION_SOUNDS_TOY_CATEGORY_TITLE" = "Jouets"; - -"BUSY" = "Occupé"; -"CHIME" = "Carillon"; -"BRING_THE_DRAMA" = "Feu aux poudres"; -"FRENZY" = "Frénésie"; -"HORN_BOAT" = "Corne de brume"; -"HORN_BUS" = "Klaxon de bus"; -"HORN_CAR" = "Klaxon automobile"; -"HORN_DIXIE" = "Klaxon 1916"; -"HORN_TAXI" = "Klaxon de taxi"; -"HORN_TRAIN_1" = "Train 1"; -"HORN_TRAIN_2" = "Train 2"; -"PARANOID" = "Paranoïaque"; -"WEIRD" = "Bizarre"; - -"BIRD_CARDINAL" = "Cardinal"; -"BIRD_COQUI" = "Francolin coqui"; -"BIRD_CROW" = "Corbeau"; -"BIRD_CUCKOO" = "Coucou"; -"BIRD_DUCK_QUACK" = "Canard"; -"BIRD_DUCK_QUACKS" = "Coin-coin"; -"BIRD_EAGLE" = "Aigle"; -"BIRD_IN_FOREST" = "Oiseau dans la forêt"; -"BIRD_MAGPIE" = "Pie"; -"BIRD_OWL_HORNED" = "Hibou à cornes"; -"BIRD_OWL_TAWNY" = "Chouette hulotte"; -"BIRD_TWEET" = "Cui-cui"; -"BIRD_WARNING" = "Buse"; -"CHICKEN_ROOSTER" = "Coq 1"; -"CHICKEN_ROSTER" = "Coq 2"; -"CHICKEN" = "Poulet"; -"CICADA" = "Cigale"; -"COW_MOO" = "Vache"; -"ELEPHANT" = "Éléphant"; -"PANTHERA" = "Panthère"; -"TIGER" = "Tigre"; -"FROG" = "Grenouille"; -"GOAT" = "Chèvre"; -"HORSE_WHINNIES" = "Cheval"; -"PUPPY" = "Chiot"; -"SHEEP" = "Mouton"; -"TURKEY_GOBBLE" = "Dinde"; -"TURKEY_NOISES" = "Dindes"; - -"BELL" = "Cloche"; -"BLOCK" = "Bloquer"; -"CALM" = "Calme"; -"CLOUD" = "Nuage"; -"HEY_CHAMP" = "Hé, champion !"; -"KOTO" = "Koto"; -"MODULAR" = "Modulaire"; -"ORINGZ" = "Anneau"; -"POLITE" = "Poli"; -"SONAR" = "Sonar"; -"STRIKE" = "Frappe"; -"UNPHASED" = "Déphasé"; -"UNSTRUNG" = "Décordé"; -"WOODBLOCK" = "Woodblock"; - -"CIRCUS_CLOWN_HORN" = "Corne de clown"; -"FUNNY_FANFARE" = "Drôle de fanfare"; -"ARE_YOU_KIDDING" = "Vous plaisantez ?"; -"ENOUGH_WITH_THE_TALKING" = "Assez parlé"; -"NESTLING" = "Nid d'abeilles"; -"NICE_CUT" = "Jolie coupe"; -"OH_REALLY" = "Oh vraiment"; -"SPRINGY" = "Ressort"; - -"BASSOON" = "Basson"; -"BRASS" = "Cuivres"; -"CLARINET" = "Clarinette"; -"CLAV_FLY" = "Guitare"; -"CLAV_GUITAR" = "Cura"; -"FLUTE" = "Flûte"; -"GLOCKENSPIEL" = "Carillon"; -"HARP" = "Harpe"; -"KOTO" = "Koto"; -"OBOE" = "Hautbois"; -"PIANO" = "Piano"; -"PIPA" = "Pipa"; -"SAXO" = "Saxo"; -"STRINGS" = "Cordes"; -"SYNTH_AIRSHIP" = "Synthé airship"; -"SYNTH_CHORDAL" = "Synthé cordes"; -"SYNTH_COSMIC" = "Synthé cosmique"; -"SYNTH_DROPLETS" = "Synthé gouttelettes"; -"SYNTH_EMOTIVE" = "Synthé émotif"; -"SYNTH_FM" = "Synthé FM"; -"SYNTH_LUSHARP" = "Synthé luxuriant"; -"SYNTH_PECUSSIVE" = "Synthé percussif"; -"SYNTH_QUANTIZER" = "Synthé quantizer"; - -"NOTIFICATION_SOUNDS_SUBTITLE_POLYPHONIC" = "Lorsque vous recevrez un message, vous entendrez une note aléatoire de l'instrument choisi. N'hésitez pas à essayer en appuyant plusieurs fois sur votre instrument préféré 😉."; - -"SYSTEM_SOUND" = "Son système"; - -"GRACE_PERIOD" = "Exiger l'authentification"; - -"PIN" = "PIN"; - -"PASSWORD" = "Mot de passe"; - -"CREATE_YOUR_PASSCODE" = "Créez votre code personnalisé"; - -"CONFIRM_YOUR_PASSCODE" = "Confirmez votre code personnalisé"; - -"ENTER_YOUR_PASSCODE" = "Entrez votre code personnalisé"; - -"CREATE_MY_PASSCODE" = "Créer mon code personnalisé"; - -"LOCKED_OUT_FOR" = "Bloqué pour "; - -"LOCKED_OUT" = "Bloqué"; - -"RETRY_WITH_TOUCH_ID" = "Réessayer avec Touch ID"; - -"RETRY_WITH_FACE_ID" = "Réessayer avec Face ID"; - -"LOCKED_OUT_EXPLANATION" = "Olvid est verrouillée suite à la saisie d'un nombre trop important de mauvais passcode."; - -"LOCKOUT_CLEAN_EPHEMERAL_TITLE" = "Effacer les messages sensibles après 3 mauvais codes"; - -"LOCKOUT_CLEAN_EPHEMERAL_EXPLANATION" = "Quand cette option est activée, saisir 3 mauvais codes d'affilée entraîne l'effacement silencieux de tous les messages à visibilité limitée."; - -"BIOMETRY_NOT_ENROLLED_ERROR_TITLE" = "Il vous faut configurer Face ID ou Touch ID"; - -"BIOMETRY_NOT_ENROLLED_ERROR_MESSAGE" = "Pour utiliser cette fonctionnalité, vous devez configurer Face ID ou Touch ID dans l'app Réglages de votre appareil."; - -"NO_GRACE_PERIOD_EXPLANATION" = "Une fois fermée, Olvid se vérrouillera immédiatement."; - -"GRACE_PERIOD_EXPLANATION_%@" = "Une fois fermée, Olvid se vérrouillera après %@."; - -"GRACE_PERIOD_TITLE_%@" = "après %@"; - -"OTHER_GROUP_MEMBERS" = "Autres membres du groupe"; - -"EDIT_GROUP_MEMBERS" = "Modifier les membres du groupe"; - -"IS_ADMIN" = "Admin"; - -"IS_NOT_ADMIN" = "Pas admin"; - -"ADD_GROUP_MEMBERS" = "Ajouter des membres"; - -"PUBLISH" = "Publier"; - -"GROUP_V2_PUBLISHED_DETAILS_EXPLANATION_%@" = "Les détails du groupe ont été mis à jour. Si vous désirez utiliser ces nouveaux détails au lieu de ceux sur votre %@, touchez le bouton ci-dessous."; - -"CHOOSE_GROUP_NICKNAME" = "Choisir un surnom pour le groupe"; - -"ADD_MEMBER_BY_TAPPING_EDIT_GROUP_MEMBERS_BUTTON" = "Vous êtes le seul membre de ce groupe 😅. Ajoutez des membres en touchant le bouton \"Modifier les membres\" ☝️."; - -"GROUP_UPDATE_IN_PROGRESS_EXPLANATION_TITLE" = "Mise à jour en cours"; - -"GROUP_UPDATE_IN_PROGRESS_EXPLANATION_BODY" = "Une mise à jour du groupe est en cours. Merci de patienter jusqu'à son terme pour faire de nouvelles modifications."; - -"MANUAL_RESYNC_OF_GROUP_V2" = "Resynchroniser ce groupe"; - -"SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_TITLE" = "Vous ne pouvez pas quitter le groupe pour le moment"; - -"SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_MESSAGE" = "Comme vous êtes le seul administrateur de ce groupe, il vous est impossible de le quitter (vous laisseriez le groupe sans administrateur). Une fois que vous aurez nommé un autre administrateur, vous pourrez essayer à nouveau."; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_TITLE" = "Voulez-vous vraiment quitter le groupe ?"; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_MESSAGE" = "Attention, cette action est irréversible (sauf si un administrateur du groupe vous y invite à nouveau après que vous l'ayez quitté)."; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_LEAVE_GROUP_BUTTON_TITLE" = "Quitter ce groupe"; - -"LEAVE_GROUP" = "Quitter ce groupe"; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_TITLE" = "Attention ! Voulez-vous vraiment supprimer ce groupe ?"; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_MESSAGE" = "Supprimer un groupe est une opération irréversible. Si vous continuez, le groupe sera supprimé chez tous les membres."; - -"SINGLE_GROUP_V2_VIEW_SHEET_CONFIRM_DISBAND_GROUP_BUTTON_TITLE" = "Supprimer ce groupe chez tous les utilisateurs"; - -"DISBAND_GROUP" = "Supprimer ce groupe"; - -"UNKNOWN_GROUP_MEMBER_NAME" = "Nom inconnu"; - -"IS_PENDING" = "En attente"; - -"IS_PENDING_ADMIN" = "Admin\nen attente"; - -"SAVE_CUSTOM_GROUP_VALUES" = "Sauvegarder vos modifications"; - -"EDIT_GROUP_DETAILS_AS_ADMINISTRATOR_BUTTON_TITLE" = "Modifier le titre"; - -"EDIT_GROUP_MEMBERS_AS_ADMINISTRATOR_BUTTON_TITLE" = "Modifier les membres"; - -"CHOOSE_GROUP_CUSTOM_NAME_AND_PHOTO_TITLE" = "Photo et nom personalisés"; - -"GROUP_TITLE_WHEN_NO_SPECIFIC_TITLE_IS_GIVEN" = "Groupe sans nom 😅"; - -"MEMBERS_OF_GROUP_V2_WERE_UPDATED_SYSTEM_MESSAGE" = "Les membres du groupe ont été mis à jour. Touchez pour en savoir plus."; - -"CHOSEN_GROUP_MEMBERS" = "Participants choisis"; - -"CLONE_THIS_GROUP" = "Cloner ce groupe"; - -"CLONE_THIS_GROUP_V1_TO_GROUP_V2" = "Cloner ce groupe"; - -"SOME_GROUP_MEMBERS_MUST_UPGRADE" = "Certains membres doivent mettre à jour Olvid"; - -"FOLLOWING_MEMBERS_MUST_UPGRADE_BEFORE_CREATING_GROUP_V2_%@" = "Pour pouvoir créer un groupe v2, tous les membres doivent utiliser une version récente d'Olvid 🤓. Avant d'essayer à nouveau, demandez aux contacts suivants de mettre Olvid à jour:\n%@."; - -"YOU_ARE_NOW_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" = "Vous êtes maintenant un administrateur de ce groupe 😎."; - -"YOU_ARE_NO_LONGER_PART_OF_THE_ADMINISTRATORS_OF_THIS_GROUP_V2" = "Vous n'êtes plus administrateur de ce groupe."; - -"PLEASE_AUTHENTICATE" = "Authentification requise"; - -"PLEASE_NOTE_THAT_YOUR_CUSTOM_PASSCODE_CANNOT_BE_RECOVERED" = "Veuillez noter que si vous oubliez votre code personnalisé, il ne sera pas possible de le récupérer, et vous ne pourrez plus accéder à Olvid."; - -"CLONED_GROUP_NAME_FROM_ORIGINAL_NAME_%@" = "Copie de %@"; - -"COMPUTE_CKRECORD_COUNT" = "Calculer le nombre d'entrées iCloud"; - -"DISK_USAGE" = "Espace de stockage occupé"; - -"REFERENCED_BY_DATABASE" = "Référencés depuis la base de données"; - -"APP_DIRECTORIES" = "Répertoires de l'app"; - -"ENGINE_DIRECTORIES" = "Répertoires de l'engine"; - -"ABOUT_DISKUSAGEVIEW_%@" = "Cet écran permet d'évaluer l'espace de stockage occupé par Olvid sur votre %@. Attention cependant, le stockage total n'est pas la somme des valeurs indiquées ici (Olvid utilise des techniques de déduplication). Pour évaluer le stockage total, il suffit en général de considérer les valeurs référencées depuis la base de données."; - -"IS_DELETING" = "suppression en cours"; - -"ENABLE_AUTOMATIC_BACKUP_AND_CONTINUE" = "Activer les sauvegardes automatiques"; - -"ESTIMATING_TIME_REMAINING" = "Estimation du temps restant..."; - -"YOU_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE" = "Vous avez fait une capture d'un message sensible, les participants de cette discussion ont été notifiés."; - -"CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_%@" = "%@ a fait une capture d'un message sensible."; - -"CONTACT_CAPTURED_SENSITIVE_CONTENT_WARNING_MESSAGE_WHEN_CONTACT_IS_UNKNOWN" = "Un particpant a fait une capture d'un message sensible."; - -"ENABLE" = "Activer"; - -"PLEASE_CHOOSE_THE_BACKUP_TO_RESTORE" = "Veuillez choisir la sauvegarde à restaurer."; - -"TITLE_BACKUP_RESTORED" = "Sauvegarde restaurée"; - -"ENABLE_AUTOMATIC_BACKUP_EXPLANATION" = "La sauvegarde a été restaurée avec succès. Pour vous assurer de pouvoir restaurer à nouveau une sauvegarde la prochaine fois que vous en aurez besoin, nous vous recommandons d'activer les sauvegardes automatiques vers iCloud."; - -"RESTORE_BACKUP_FAILED_EXPLANATION" = "La sauvegarde n'a malheureusement pas pu être restaurée. Si vous le pouvez, nous vous recommandons d'essayer de restaurer une autre sauvegarde."; - -"KEYCLOAK_REVOCATION_FORBIDDEN_TITLE" = "Vous ne pouvez pas révoquer votre identité"; - -"KEYCLOAK_REVOCATION_FORBIDDEN_MESSAGE" = "Nous vous recommandons de contacter votre administrateur."; - -"Processing" = "Traitement"; - -"Unprocessed" = "À traiter"; - -"Metadata" = "Métadonnées"; - -"You selected to add %@ to your contacts. Do you want to proceed?" = "Vous avez choisi d'ajouter %@ à vos contacts. Voulez-vous continuer ?"; - -"Unread" = "Non lu"; - -"EXPORT_TMP_DIRECTORY" = "Exporter le répertoire tmp"; - -"SOME_OF_YOUR_CONTACTS_MAY_NOT_APPEAR_AS_GROUP_V2_CANDIDATES" = "Choisissez qui ajouter à ce groupe. Vous ne trouvez pas la personne que vous cherchez ? Demandez-lui de mettre à jour Olvid 🚀 !"; - -"EXPLANATION_FOR_CLONING_A_GROUP_V1_TO_GROUP_V2" = "Ce groupe ne permet pas d'avoir plusieurs administrateurs. Mais vous pouvez le cloner en un nouveau groupe de dernière génération qui le permettra 🚀 !"; - -"TITLE_NEVER_MISS_A_MESSAGE" = "Ne ratez aucun message"; - -"TITLE_NEVER_MISS_A_SECURE_CALL" = "Ne ratez aucun appel"; - -"EXPLANATION_WHY_RECORD_PERMISSION_IS_IMPORTANT" = "Pour passer ou recevoir des appels sécurisés ☎️ et pour enregistrer des messages audio 🎵, il faut accorder à Olvid le droit d'accéder au micro.\n\nAfin de ne rater aucun appel, nous vous recommandons de le faire maintenant 🤓."; - -"BUTON_TITLE_ACTIVATE_NOTIFICATION" = "Activer les notifications"; - -"BUTON_TITLE_REQUEST_RECORD_PERMISSION" = "Autoriser le micro"; - -"PERFORM_INTERACTION_DONATION_LABEL" = "Suggérer les discussions Olvid pendant un partage"; - -"PERFORM_INTERACTION_DONATION_FOOTER" = "Si vous activez cette option, les discussions Olvid apparaitront directement lorsque vous partagerez du contenu depuis une autre app. Ce paramètre peut être modifié indépendamment pour chaque discussion."; - -"PERFORM_INTERACTION_DONATION_FOR_THIS_DISCUSSION_LABEL" = "Suggérer cette discussion pendant un partage"; - -"PERFORM_INTERACTION_DONATION_FOR_THIS_DISCUSSION_FOOTER" = "Si vous activez cette option, cette discussion apparaîtra directement lorsque vous partagerez du contenu depuis une autre app."; - -"DISCUSSIONS_FILTER_CELL_PICKER_TEXT" = "Filtrer les discussions"; - -"MY_OWN_IDS" = "Mes profils"; - -"CREATE_NEW_OWNED_IDENTITY" = "Créer un nouveau profil"; - -"DELETE_THIS_IDENTITY_QUESTION_TITLE_%@" = "Supprimer le profil « %@ » ?"; - -"DELETE_THIS_IDENTITY_QUESTION_MESSAGE" = "Supprimer un profil effacera toute information associée à ce profil de votre appareil. Cela inclut vos contacts, vos groupes et le contenu de toutes vos discussions pour ce profil. Vos autres profils ne seront pas affectés par cette opération.\nSi vous avez activé les sauvegardes Olvid, vos futures sauvegardes ne contiendront aucune trace de ce profil et vous ne serez pas en mesure de le restaurer."; - -"DELETE_THIS_IDENTITY_BUTTON" = "Supprimer ce profil"; - -"CHOOSE_PASSWORD" = "Choisissez un mot de passe"; - -"HIDE_PROFILE_EXPLANATION" = "Les profils masqués sont protégés par un mot de passe et n'apparaissent dans la liste de profils qu'après avoir saisi ce mot de passe.\nFaites un appui long sur le bouton supérieur gauche affiché sur chaque onglet pour accéder à un profil masqué.\nSi vous oubliez ce mot de passe, vous perdrez définitivement accès à ce profil 😱 !"; - -"ENTER_PASSWORD" = "Entrez un mot de passe"; - -"CONFIRM_PASSWORD" = "Confirmez le mot de passe"; - -"CREATE_PASSWORD" = "Créer le mot de passe"; - -"EDIT_CURRENT_IDENTITY" = "Éditer le profil courant"; - -"HIDE_THIS_IDENTITY" = "Masquer ce profil"; - -"UNHIDE_THIS_IDENTITY" = "Démasquer ce profil"; - -"SHOW_OWNED_IDENTITY_DETAILS" = "Afficher les détails de ce profil"; - -"FAILED_TO_HIDE_OWNED_ID_ALERT_TITLE" = "Le profil n'a pas pu être masquée"; - -"FAILED_TO_HIDE_OWNED_ID_ALERT_MESSAGE" = "Vous pouvez essayer à nouveau, en prenant garde à choisir un mot de passe qui ne soit pas le préfixe d'un mot de passe d'un autre profil masqué."; - -"UNHIDE_OWNED_IDENTITY_ALERT_TITLE" = "Démasquer ce profil ?"; - -"UNHIDE_OWNED_IDENTITY_ALERT_MESSAGE" = "Vous êtes sur le point de démasquer un profil. Si vous confirmez, ce profil sera sytématiquement visible, sans mot de passe spécifique."; - -"UNHIDE_OWNED_IDENTITY_ALERT_ACTION_STAY_HIDDEN" = "Ne pas démasquer"; - -"UNHIDE_OWNED_IDENTITY_ALERT_ACTION_UNHIDE" = "Démasquer"; - -"OPEN_HIDDEN_PROFILE_ALERT_TITLE" = "Afficher un profil masqué"; - -"OPEN_HIDDEN_PROFILE_ALERT_MESSAGE" = "Si vous avez créé un profil masqué, veuillez entrer son mot de passe pour l'afficher."; - -"AT_LEAST_ONE_UNHIDDEN_PROFILE_MUST_EXIST_TITLE" = "Impossible de masquer ce profil pour le moment"; - -"AT_LEAST_ONE_UNHIDDEN_PROFILE_MUST_EXIST_MESSAGE" = "Vous devez toujours avoir au moins un profil visible. Comme ce profil est le seul que vous ayez, vous ne pouvez pas le masquer. Vous pouvez néanmoins créer un nouveau profil et essayer à nouveau."; - -"DELETE_THIS_LAST_UNHIDDEN_IDENTITY_QUESTION_TITLE" = "Supprimer ce dernier profil ?"; - -"DELETE_THIS_LAST_UNHIDDEN_IDENTITY_QUESTION_MESSAGE" = "Supprimer un profil effacera toute information associée à ce profil de votre appareil. Cela inclut vos contacts, vos groupes et le contenu de toutes vos discussions pour ce profil.\n\nCe profil est votre seul profil visible et si vous avez des profils masqués, ceux-ci seront également supprimés.\nSi vous avez activé les sauvegardes Olvid, vos futures sauvegardes ne contiendront aucune trace de ce profil et vous ne serez pas en mesure de le restaurer."; - -"NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_TITLE" = "Voulez-vous prévenir vos contacts ?"; - -"NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_MESSAGE" = "Nous vous recommandons de prévenir vos contacts. De cette façon:\n- votre profil supprimé n'apparaîtra plus dans le carnet d'adresses de vos contacts,\n- les groupes que vous gérez serons dissous si vous en êtes le seul administrateur,\n- vous quitterez les groupes dont vous êtes membre.\n\nSi vous ne prévenez pas, à moins d\'avoir transféré votre ID sur un autre appareil, vos contacts pourraient continuer à vous écrire sans réaliser que leurs messages ne peuvent vous être distribués."; - -"NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_DO_NOTIFY_CONTACTS_ACTION" = "Prévenir mes contacts (recommandé)"; - -"NOTIFY_CONTACTS_ON_OWNED_IDENTITY_DELETION_DO_NOT_NOTIFY_CONTACTS_ACTION" = "Ne pas prévenir mes contacts"; - -"TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_TITLE_%@" = "Confirmez la suppression du profil « %@ »"; - -"TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_MESSAGE" = "Pour confirmer la suppression de votre profil, veuillez taper le mot 'SUPPRIMER'."; - -"TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_DO_DELETE_ACTION" = "Supprimer mon profil"; - -"TYPE_DELETE_TO_PROCEED_WITH_OWNED_IDENTITY_DELETION_WORD_TO_TYPE" = "SUPPRIMER"; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_TITLE" = "Quand désirez-vous fermer un profil masqué ?"; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_MESSAGE" = "Veuillez choisir le bon moment pour fermer un profil masqué. Par défaut, un profil masqué est fermé quand vous basculez manuellement vers un autre profil."; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_SCREEN_LOCK" = "Au verrouillage de l'écran d'Olvid"; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_MANUAL_SWITCHING" = "En changeant de profil manuellement"; - -"ALERT_CHOOSE_HIDDEN_PROFILE_CLOSE_POLICY_ACTION_BACKGROUND" = "Quand Olvid passe en arrière-plan"; - -"CLOSE_OPEN_HIDDEN_PROFILE" = "Fermer un profil masqué ouvert"; - -"HIDDEN_PROFILES" = "Profils masqués"; - -"AFTER_TEN_SECONDS" = "après 10 secondes"; -"AFTER_THIRTY_SECONDS" = "après 30 secondes"; -"AFTER_ONE_MINUTE" = "après 1 minute"; -"AFTER_TWO_MINUTE" = "après 2 minutes"; -"AFTER_FIVE_MINUTE" = "après 5 minutes"; - -"TIME_INTERVAL_FOR_BG_HIDDEN_PROFILE_CLOSE_POLICY" = "Fermer un profil masqué quand Olvid passe en arrière plan..."; - -"ALERT_SHOULD_ACTIVATE_SCREEN_LOCK_AFTER_CREATING_HIDDEN_PROFILE_TITLE" = "Écran de verrouillage non configuré"; -"ALERT_SHOULD_ACTIVATE_SCREEN_LOCK_AFTER_CREATING_HIDDEN_PROFILE_MESSAGE" = "Vous avez choisi de fermer les profils masqués ouverts au verrouillage de l'écran d'Olvid. Cependant, vous n'avez pas configuré d'écran de verrouillage.\n\nAvec le réglage actuel, les profils masqués ne seront fermés que si vous basculez manuellement vers un autre profil.\n\nPour configurer un écran de verrouillage, allez dans les paramètres de « Vie privée »."; -"ALERT_SHOULD_ACTIVATE_SCREEN_LOCK_AFTER_CREATING_HIDDEN_PROFILE_ACTION_GOTO_PRIVACY_SETTINGS" = "Aller dans les paramètres"; - -"PLEASE_CHOOSE_PROFILE_TO_PROCESS_OLVID_URL" = "Veuillez choisir le profil avec lequel vous désirez continuer."; - -"EDIT_OWNED_IDENTITY_NICKNAME" = "Éditer mon pseudo"; - -"ALERT_FOR_EDITING_NICKNAME_TITLE" = "Éditer mon pseudo"; -"ALERT_FOR_EDITING_NICKNAME_MESSAGE" = "Votre pseudo n'est visible que par vous et vous permet de facilement distinguer vos profils les uns des autres."; - -"DISCUSSIONS_LIST_SELECTED_DISCUSSION_GROUP_SUBTITLE" = "Participants : %d"; - -"SHARE_VIEW_PROFILE_SELECTION_BAR_TITLE" = "Profil"; - -"PLEASE_WAIT_DURING_UPDATE" = "Mise à jour en cours. Veuillez ne pas quitter Olvid."; - -"Message" = "Message"; - -"ANOTHER_PROFILE_HAS_VALID_API_KEY" = "Ce profil bénéficie de la licence d'un autre profil."; - -"Stored" = "Stocké"; - -/* Picker title for the mention notification mode */ -"discussion-expiration-settings-view.body.section.mention-notification-mode.picker.title" = "Mode de notification pour les mentions"; -/* Display title for the `default` value for mention notification mode. Takes one argument, the global discussion notification mode */ -"discussion-mention-notification-mode.display-title.default" = "par défaut (%1$@)"; -/* Display title for the `always` value for mention notification mode */ -"discussion-mention-notification-mode.display-title.always" = "toujours"; -/* Display title for the `never` value for mention notification mode */ -"discussion-mention-notification-mode.display-title.never" = "jamais"; -/* Picker footer for the mention notification mode */ -"discussion-expiration-settings-view.body.section.mention-notification-mode.picker.footer.title" = "Réglage pour être notifié lorsqu’on est mentionné dans cette Discussion"; - -/* Picker title for the default mention notification mode */ -"discussion-default-settings-view.mention-notification-mode.picker.title" = "Mode de notification pour les mentions"; -/* Display title for the `always` value for mention notification mode */ -"discussion-default-settings-view.mention-notification-mode.picker.mode.always" = "toujours"; -/* Display title for the `never` value for mention notification mode */ -"discussion-default-settings-view.mention-notification-mode.picker.mode.never" = "jamais"; -/* Picker footer for the default mention notification mode */ -"discussion-default-settings-view.mention-notification-mode.picker.footer.title" = "Réglage global pour être notifié lorsqu’on est mentionné dans une Discussion"; - - -"ENABLE_RUNNING_LOGS" = "Activer les logs intégrés"; - -"IN_APP_LOGS" = "Logs intégrés"; - -"NO_OTHER_MEMBER_FOR_NOW" = "Aucun autre membre pour le moment."; - -"SHOW_CURRENT_COORDINATORS_OPS" = "Voir les opérations courantes"; - -"SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_AS_KEYCLOAK_TITLE" = "Vous ne pouvez pas quitter le groupe"; - -"SINGLE_GROUP_V2_VIEW_ALERT_CANNOT_LEAVE_GROUP_AS_KEYCLOAK_MESSAGE" = "Comme ce groupe et géré par le serveur de votre entreprise, il ne vous est pas possible de le quitter."; - -"ARCHIVE" = "Archiver"; - -"UNARCHIVE" = "Désarchiver"; - -"PERFORM_CONTACT_INTRODUCTION" = "Faire les présentations"; diff --git a/iOSClient/ObvMessenger/ObvMessenger/fr.lproj/Localizable.stringsdict b/iOSClient/ObvMessenger/ObvMessenger/fr.lproj/Localizable.stringsdict deleted file mode 100644 index 13ed3a7f..00000000 --- a/iOSClient/ObvMessenger/ObvMessenger/fr.lproj/Localizable.stringsdict +++ /dev/null @@ -1,340 +0,0 @@ - - - - - You are about to introduce X to Y and count other contacts. - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Vous allez présenter %2$@ à %3$@. - one - Vous allez présenter %2$@ à %3$@ et un autre contact. - other - Vous allez présenter %2$@ à %3$@ et %1$d autres contacts. - - - You successfully introduced X to Y and count other contacts. - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Vous avez présenté %2$@ à %3$@. - one - Vous avez présenté %2$@ à %3$@ et un autre contact. - other - Vous avez présenté %2$@ à %3$@ et %1$d autres contacts. - - - see count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - → Voir la pièce jointe - other - → Voir les %u pièces jointes - zero - Aucune pièce jointe - - - count new messages - - NSStringLocalizedFormatKey - %#@VARIABLE@ - VARIABLE - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - 1 nouveau message - other - %u nouveaux messages - zero - Aucun nouveau message - - - count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Une pièce jointe - other - %u pièces jointes - zero - Aucune pièce jointe - - - share count photos - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Partager la photo - other - Partager les %u photos - zero - Aucune photo à partager - - - share count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Aucune pièce jointe - one - Partager la pièce jointe - other - Partager les %u pièces jointes - - - You are about to delete a message together with its count attachments - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Vous vous apprêtez à supprimer un message. - one - Vous vous apprêtez à supprimer un message et sa pièce jointe. - other - Vous vous apprêtez à supprimer un message et ses %d pièces jointes. - - - recent backups count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Aucune sauvegarde - one - Une sauvegarde - other - %u sauvegardes les plus récentes - - - backups count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Aucune sauvegarde - one - Une sauvegarde - other - %u sauvegardes - - - missed messages count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - 1 message manquant - other - %u messages manquants - - - clean in progress count - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Pas de sauvegardes supprimées - one - Une sauvegarde supprimée - other - %u sauvegardes supprimées - - - KEYCLOAK_MISSING_SEARCH_RESULT - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Un résultat supplémentaire est disponible. Veuillez affiner votre recherche. - other - %u résultats supplémentaires sont disponibles. Veuillez affiner votre recherche. - - - AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_MESSAGE - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Pour changer ce paramètre, vous devez accepter une invitation de groupe en attente. - other - Pour changer ce paramètre, vous devez accepter %u invitations de groupe en attente. - - - AUTO_ACCEPT_GROUP_INVITATIONS_ALERT_ACCEPT_ACTION_TITLE - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - one - Accepter l'invitation de groupe maintenant - other - Accepter les %u invitations de groupe maintenant - - - CHOOSE_OR_NUMBER_OF_CHOSEN_DISCUSSION - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - choisir - one - une sélectionnée - other - %u sélectionnées - - - NUMBER_OF_ITEMS_SELECTED - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Sélectionner des éléments - one - 1 élément sélectionné - other - %u éléments sélectionnés - - - NUMBER_OF_ELEMENTS - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - Aucun élément - one - 1 élément - other - %u éléments - - - WITH_N_PARTICIPANTS - - NSStringLocalizedFormatKey - %#@Variable@ - Variable - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - u - zero - sans aucun participant - one - avec un participant - other - avec %u participants - - - - diff --git a/iOSClient/ObvMessenger/ObvMessengerIntentsExtension/ObvMessengerIntentsExtension.entitlements b/iOSClient/ObvMessenger/ObvMessengerIntentsExtension/ObvMessengerIntentsExtension.entitlements new file mode 100644 index 00000000..852fa1a4 --- /dev/null +++ b/iOSClient/ObvMessenger/ObvMessengerIntentsExtension/ObvMessengerIntentsExtension.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/iOSClient/ObvMessenger/ObvMessengerNotificationServiceExtension/NotificationService.swift b/iOSClient/ObvMessenger/ObvMessengerNotificationServiceExtension/NotificationService.swift index 9835ec5e..76443dec 100644 --- a/iOSClient/ObvMessenger/ObvMessengerNotificationServiceExtension/NotificationService.swift +++ b/iOSClient/ObvMessenger/ObvMessengerNotificationServiceExtension/NotificationService.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,6 +24,7 @@ import OlvidUtils import ObvTypes import ObvCrypto import ObvUICoreData +import ObvSettings final class NotificationService: UNNotificationServiceExtension { @@ -89,7 +90,7 @@ final class NotificationService: UNNotificationServiceExtension { // Extract the information from the received notification - guard let encryptedNotification = EncryptedPushNotification(content: request.content) else { + guard let encryptedNotification = ObvEncryptedPushNotification(content: request.content) else { os_log("Could not extract information from the received notification", log: log, type: .error) cleanUserDefaults() addNotification() @@ -142,7 +143,7 @@ final class NotificationService: UNNotificationServiceExtension { } - private func tryToCreateNewMessageNotificationByFetchingReceivedMessageFromDatabase(encryptedPushNotification: EncryptedPushNotification, request: UNNotificationRequest) async -> Bool { + private func tryToCreateNewMessageNotificationByFetchingReceivedMessageFromDatabase(encryptedPushNotification: ObvEncryptedPushNotification, request: UNNotificationRequest) async -> Bool { var messageReceivedStructure: PersistedMessageReceived.Structure? var messageRepliedToStructure: PersistedMessage.AbstractStructure? @@ -179,7 +180,7 @@ final class NotificationService: UNNotificationServiceExtension { } } - guard let messageReceivedStructure = messageReceivedStructure else { + guard let messageReceivedStructure else { return false } @@ -217,7 +218,7 @@ final class NotificationService: UNNotificationServiceExtension { /// Returns true if the encrypted pushed notification was processed, either because a user notification was created, or because we detected that no notification should be shown. - private func tryToCreateNewMessageNotificationByDecrypting(encryptedPushNotification: EncryptedPushNotification, request: UNNotificationRequest) async -> Bool { + private func tryToCreateNewMessageNotificationByDecrypting(encryptedPushNotification: ObvEncryptedPushNotification, request: UNNotificationRequest) async -> Bool { let log = self.log @@ -230,7 +231,7 @@ final class NotificationService: UNNotificationServiceExtension { let obvMessage: ObvMessage do { - obvMessage = try obvEngine.decrypt(encryptedPushNotification: encryptedPushNotification) + obvMessage = try await obvEngine.decrypt(encryptedPushNotification: encryptedPushNotification) } catch { os_log("Could not decrypt information", log: log, type: .info) return false @@ -275,8 +276,8 @@ final class NotificationService: UNNotificationServiceExtension { return } - let groupV1Identifier: (groupUid: UID, groupOwner: ObvCryptoId)? - let groupV2Identifier: Data? + let groupV1Identifier: GroupV1Identifier? + let groupV2Identifier: GroupV2Identifier? if let messageJSON = persistedItemJSON.message { groupV1Identifier = messageJSON.groupV1Identifier groupV2Identifier = messageJSON.groupV2Identifier @@ -298,7 +299,7 @@ final class NotificationService: UNNotificationServiceExtension { os_log("Could not find owned identity. This is ok if it was just deleted.", log: log, type: .error) return } - guard let contactGroup = try PersistedContactGroup.getContactGroup(groupId: groupV1Identifier, ownedIdentity: ownedIdentity) else { + guard let contactGroup = try PersistedContactGroup.getContactGroup(groupIdentifier: groupV1Identifier, ownedIdentity: ownedIdentity) else { throw Self.makeError(message: "Could not find contact group") } discussion = contactGroup.discussion @@ -392,8 +393,8 @@ final class NotificationService: UNNotificationServiceExtension { try NotificationService.obvEngine!.postReturnReceiptWithElements( returnReceiptJSON.elements, andStatus: ReturnReceiptJSON.Status.delivered.rawValue, - forContactCryptoId: obvMessage.fromContactIdentity.cryptoId, - ofOwnedIdentityCryptoId: obvMessage.fromContactIdentity.ownedIdentity.cryptoId, + forContactCryptoId: obvMessage.fromContactIdentity.contactCryptoId, + ofOwnedIdentityCryptoId: obvMessage.fromContactIdentity.ownedCryptoId, messageIdentifierFromEngine: obvMessage.messageIdentifierFromEngine, attachmentNumber: nil) } catch { @@ -436,7 +437,7 @@ final class NotificationService: UNNotificationServiceExtension { } else { // Extract Extended Payload // In practice, this is disappointing as the server seems to often send a nil extended payload as soon as there are more than one image (i.e., one attachment) to show. - let op = ExtractReceivedExtendedPayloadOperation(obvMessage: obvMessage) + let op = ExtractReceivedExtendedPayloadOperation(input: .messageSentByContact(obvMessage: obvMessage)) op.start() assert(op.isFinished) attachementImages = op.attachementImages @@ -575,11 +576,11 @@ final class NotificationService: UNNotificationServiceExtension { } -fileprivate extension EncryptedPushNotification { +fileprivate extension ObvEncryptedPushNotification { init?(content: UNNotificationContent) { - let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "EncryptedPushNotification") + let log = OSLog(subsystem: ObvMessengerConstants.logSubsystem, category: "ObvEncryptedPushNotification") let wrappedKeyString = content.userInfo["encryptedHeader"] as? String ?? content.title let encryptedContentString = content.userInfo["encryptedMessage"] as? String ?? content.body diff --git a/iOSClient/ObvMessenger/ObvMessengerNotificationServiceExtension/ObvMessengerNotificationServiceExtension.entitlements b/iOSClient/ObvMessenger/ObvMessengerNotificationServiceExtension/ObvMessengerNotificationServiceExtension.entitlements index c199ed8c..2664f4ef 100644 --- a/iOSClient/ObvMessenger/ObvMessengerNotificationServiceExtension/ObvMessengerNotificationServiceExtension.entitlements +++ b/iOSClient/ObvMessenger/ObvMessengerNotificationServiceExtension/ObvMessengerNotificationServiceExtension.entitlements @@ -2,6 +2,8 @@ + com.apple.developer.usernotifications.filtering + com.apple.security.app-sandbox com.apple.security.application-groups @@ -10,7 +12,5 @@ com.apple.security.network.client - com.apple.developer.usernotifications.filtering - diff --git a/iOSClient/ObvMessenger/ObvMessengerShareExtension/DiscussionsView.swift b/iOSClient/ObvMessenger/ObvMessengerShareExtension/DiscussionsView.swift index abc74449..182b2204 100644 --- a/iOSClient/ObvMessenger/ObvMessengerShareExtension/DiscussionsView.swift +++ b/iOSClient/ObvMessenger/ObvMessengerShareExtension/DiscussionsView.swift @@ -17,15 +17,15 @@ * along with Olvid. If not, see . */ - - import CoreData import ObvUI import ObvTypes import os.log import SwiftUI import ObvUICoreData -import UI_CircledInitialsView_CircledInitialsConfiguration +import UI_ObvCircledInitials +import ObvDesignSystem + protocol DiscussionsHostingViewControllerDelegate: AnyObject { func setSelectedDiscussions(to: [PersistedDiscussion]) async throws @@ -51,13 +51,9 @@ final class DiscussionViewModel: ObservableObject, Hashable { do { if let photoURL = try persistedDiscussion.displayPhotoURL { let image = UIImage(contentsOfFile: photoURL.path) - if #available(iOS 15, *) { - let scale = UIScreen.main.scale - let size = CGSize(width: scale * Self.circleDiameter, height: scale * Self.circleDiameter) - self.profilePicture = image?.preparingThumbnail(of: size) - } else { - self.profilePicture = nil - } + let scale = UIScreen.main.scale + let size = CGSize(width: scale * Self.circleDiameter, height: scale * Self.circleDiameter) + self.profilePicture = image?.preparingThumbnail(of: size) } else { self.profilePicture = nil } @@ -129,10 +125,8 @@ struct DiscussionsView: View { private var subView: some View { if #available(iOSApplicationExtension 16.0, *) { return AnyView(NewDiscussionsListView(ownedCryptoId: ownedCryptoId, discussionsViewModel: model)) - } else if #available(iOSApplicationExtension 15.0, *) { - return AnyView(DiscussionsListView(ownedCryptoId: ownedCryptoId, discussionsViewModel: model)) } else { - return AnyView(DiscussionsScrollingView(discussionModels: model.discussions)) + return AnyView(DiscussionsListView(ownedCryptoId: ownedCryptoId, discussionsViewModel: model)) } } } @@ -162,7 +156,7 @@ fileprivate struct DiscussionsInnerView: View { DiscussionCellView(model: discussionModel) } } - .obvListStyle() + .listStyle(InsetGroupedListStyle()) } } @@ -202,35 +196,45 @@ fileprivate struct DiscussionCellView: View { } } - private var circledTextView: Text? { + private var circledText: String? { let title = model.persistedDiscussion.title.trimmingCharacters(in: .whitespacesAndNewlines) if let char = title.first { - return Text(String(char)) + return String(char) } else { return nil } } - - private var pictureViewInner: some View { - let showGreenShield = (try? model.persistedDiscussion.showGreenShield) ?? false - let showRedShield = (try? model.persistedDiscussion.showRedShield) ?? false - return ProfilePictureView(profilePicture: model.profilePicture, - circleBackgroundColor: identityColors?.background, - circleTextColor: identityColors?.text, - circledTextView: circledTextView, - systemImage: systemImage, - showGreenShield: showGreenShield, - showRedShield: showRedShield, - customCircleDiameter: DiscussionViewModel.circleDiameter) + + private var profilePictureViewModelContent: ProfilePictureView.Model.Content { + .init(text: circledText, + icon: systemImage, + profilePicture: model.profilePicture, + showGreenShield: (try? model.persistedDiscussion.showGreenShield) ?? false, + showRedShield: (try? model.persistedDiscussion.showRedShield) ?? false) + } + + private var initialCircleViewModelColors: InitialCircleView.Model.Colors { + .init(background: identityColors?.background, + foreground: identityColors?.text) + } + + private var profilePictureViewModel: ProfilePictureView.Model { + .init(content: profilePictureViewModelContent, + colors: initialCircleViewModelColors, + circleDiameter: 60.0) + } + + private var textViewModel: TextView.Model { + .init(titlePart1: model.persistedDiscussion.title, + titlePart2: nil, + subtitle: nil, + subsubtitle: nil) } var body: some View { HStack { - pictureViewInner - TextView(titlePart1: model.persistedDiscussion.title, - titlePart2: nil, - subtitle: nil, - subsubtitle: nil) + ProfilePictureView(model: profilePictureViewModel) + TextView(model: textViewModel) Spacer() Image(systemIcon: model.selected ? .checkmarkCircleFill : .circle) .font(Font.system(size: 24, weight: .regular, design: .default)) diff --git a/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/CreateFylesFromLoadedFileRepresentationsOperation.swift b/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/CreateFylesFromLoadedFileRepresentationsOperation.swift index 8fc24227..b44e4414 100644 --- a/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/CreateFylesFromLoadedFileRepresentationsOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/CreateFylesFromLoadedFileRepresentationsOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -23,6 +23,8 @@ import os.log import OlvidUtils import ObvCrypto import ObvUICoreData +import CoreData + protocol LoadedItemProviderProvider: Operation { var loadedItemProviders: [LoadedItemProvider]? { get } @@ -49,85 +51,78 @@ final class CreateFylesFromLoadedFileRepresentationsOperation: ContextualOperati private let Sha256 = ObvCryptoSuite.sharedInstance.hashFunctionSha256() - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + assert(loadedItemProviderProvider.isFinished) - - guard let obvContext = self.obvContext else { - cancel(withReason: .contextIsNil) - return - } - + guard let loadedItemProviders = loadedItemProviderProvider.loadedItemProviders else { cancel(withReason: .noLoadedItemProviders) return } - - obvContext.performAndWait { - - var tempURLsToDelete = [URL]() - var fyleJoins = [FyleJoin]() - var bodyTexts = [String]() - - for loadedItemProvider in loadedItemProviders { - - switch loadedItemProvider { - - case .file(tempURL: let tempURL, uti: let uti, filename: let filename): - - // Compute the sha256 of the file - let sha256: Data - do { - sha256 = try Sha256.hash(fileAtUrl: tempURL) - } catch { - cancelAndContinue(withReason: .couldNotComputeSha256) - tempURLsToDelete.append(tempURL) - continue - } - - // Get or create a Fyle - guard let fyle: Fyle = try? Fyle.getOrCreate(sha256: sha256, within: obvContext.context) else { - cancelAndContinue(withReason: .couldNotGetOrCreateFyle) - tempURLsToDelete.append(tempURL) - continue - } - - // We move the received file to a permanent location - - do { - try fyle.moveFileToPermanentURL(from: tempURL, logTo: log) - } catch { - cancelAndContinue(withReason: .couldNotMoveFileToPermanentURL(error: error)) - tempURLsToDelete.append(tempURL) - continue - } - - let fyleJoin = FyleJoinImpl(fyle: fyle, fileName: filename, uti: uti, index: fyleJoins.count) - - fyleJoins += [fyleJoin] - - case .text(content: let textContent): - - let qBegin = Locale.current.quotationBeginDelimiter ?? "\"" - let qEnd = Locale.current.quotationEndDelimiter ?? "\"" - - let textToAppend = [qBegin, textContent, qEnd].joined(separator: "") - - bodyTexts.append(textToAppend) - - case .url(content: let url): - bodyTexts.append(url.absoluteString) + + var tempURLsToDelete = [URL]() + var fyleJoins = [FyleJoin]() + var bodyTexts = [String]() + + for loadedItemProvider in loadedItemProviders { + + switch loadedItemProvider { + + case .file(tempURL: let tempURL, fileType: let fileType, filename: let filename): + + // Compute the sha256 of the file + let sha256: Data + do { + sha256 = try Sha256.hash(fileAtUrl: tempURL) + } catch { + cancelAndContinue(withReason: .couldNotComputeSha256) + tempURLsToDelete.append(tempURL) + continue } - - } - - self.bodyTexts = bodyTexts - self.fyleJoins = fyleJoins - - for urlToDelete in tempURLsToDelete { - try? urlToDelete.moveToTrash() + + // Get or create a Fyle + guard let fyle: Fyle = try? Fyle.getOrCreate(sha256: sha256, within: obvContext.context) else { + cancelAndContinue(withReason: .couldNotGetOrCreateFyle) + tempURLsToDelete.append(tempURL) + continue + } + + // We move the received file to a permanent location + + do { + try fyle.moveFileToPermanentURL(from: tempURL, logTo: log) + } catch { + cancelAndContinue(withReason: .couldNotMoveFileToPermanentURL(error: error)) + tempURLsToDelete.append(tempURL) + continue + } + + let fyleJoin = FyleJoinImpl(fyle: fyle, fileName: filename, contentType: fileType, index: fyleJoins.count) + + fyleJoins += [fyleJoin] + + case .text(content: let textContent): + + let qBegin = Locale.current.quotationBeginDelimiter ?? "\"" + let qEnd = Locale.current.quotationEndDelimiter ?? "\"" + + let textToAppend = [qBegin, textContent, qEnd].joined(separator: "") + + bodyTexts.append(textToAppend) + + case .url(content: let url): + bodyTexts.append(url.absoluteString) } - + + } + + self.bodyTexts = bodyTexts + self.fyleJoins = fyleJoins + + for urlToDelete in tempURLsToDelete { + try? urlToDelete.moveToTrash() } + } } diff --git a/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/CreateUnprocessedPersistedMessageSentFromFylesStrings.swift b/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/CreateUnprocessedPersistedMessageSentFromFylesStrings.swift index b0bbee01..ecc996fa 100644 --- a/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/CreateUnprocessedPersistedMessageSentFromFylesStrings.swift +++ b/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/CreateUnprocessedPersistedMessageSentFromFylesStrings.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -24,23 +24,27 @@ import CoreData import OlvidUtils import ObvCrypto import ObvUICoreData +import UniformTypeIdentifiers final class FyleJoinImpl: FyleJoin { var fyle: Fyle? let fileName: String + let contentType: UTType let uti: String let index: Int let fyleObjectID: NSManagedObjectID - init(fyle: Fyle, fileName: String, uti: String, index: Int) { + init(fyle: Fyle, fileName: String, contentType: UTType, index: Int) { self.fyle = fyle self.fyleObjectID = fyle.objectID self.fileName = fileName - self.uti = uti + self.contentType = contentType self.index = index + self.uti = contentType.identifier } + } final class CreateUnprocessedPersistedMessageSentFromFylesAndStrings: ContextualOperationWithSpecificReasonForCancel, UnprocessedPersistedMessageSentProvider { @@ -60,42 +64,40 @@ final class CreateUnprocessedPersistedMessageSentFromFylesAndStrings: Contextual super.init() } - override func main() { + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { + assert(fyleJoinsProvider.isFinished) - + let body = body ?? "" - + guard let fyleJoins = fyleJoinsProvider.fyleJoins else { return } - - guard let obvContext = self.obvContext else { - cancel(withReason: .contextIsNil) - return - } - - obvContext.performAndWait { + + do { + guard let discussion = try PersistedDiscussion.get(objectID: discussionObjectID, within: obvContext.context) else { + return cancel(withReason: .couldNotFindDiscussion) + } + + let persistedMessageSent = try PersistedMessageSent.createPersistedMessageSentFromShareExtension( + body: body, + fyleJoins: fyleJoins, + discussion: discussion) + do { - guard let discussion = try PersistedDiscussion.get(objectID: discussionObjectID, within: obvContext.context) else { - return cancel(withReason: .couldNotFindDiscussion) - } - - let persistedMessageSent = try PersistedMessageSent(body: body, replyTo: nil, fyleJoins: fyleJoins, discussion: discussion, readOnce: false, visibilityDuration: nil, existenceDuration: nil, forwarded: false, mentions: []) - - do { - try obvContext.context.obtainPermanentIDs(for: [persistedMessageSent]) - } catch { - return cancel(withReason: .couldNotObtainPermanentIDForPersistedMessageSent) - } - - self.messageSentPermanentID = persistedMessageSent.objectPermanentID + try obvContext.context.obtainPermanentIDs(for: [persistedMessageSent]) } catch { - return cancel(withReason: .coreDataError(error: error)) + return cancel(withReason: .couldNotObtainPermanentIDForPersistedMessageSent) } + + self.messageSentPermanentID = persistedMessageSent.objectPermanentID + } catch { + return cancel(withReason: .coreDataError(error: error)) } + } - } + enum CreateUnprocessedPersistedMessageSentFromPersistedDraftOperationReasonForCancel: LocalizedErrorWithLogType { case contextIsNil diff --git a/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/SaveContextOperation.swift b/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/SaveContextOperation.swift index 8907b785..cdcadbd1 100644 --- a/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/SaveContextOperation.swift +++ b/iOSClient/ObvMessenger/ObvMessengerShareExtension/Operations/SaveContextOperation.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -33,24 +33,20 @@ final class SaveContextOperation: ContextualOperationWithSpecificReasonForCancel self.userDefaults = userDefaults } - override func main() { - - guard let obvContext = self.obvContext else { - return cancel(withReason: .contextIsNil) - } + override func main(obvContext: ObvContext, viewContext: NSManagedObjectContext) { var modifiedObjects = Set() do { - try obvContext.performAndWaitOrThrow { - - modifiedObjects = obvContext.context.insertedObjects - .union(obvContext.context.updatedObjects) - .union(obvContext.context.deletedObjects) - - try obvContext.save(logOnFailure: Self.log) - os_log("📤 Saving Context done.", log: Self.log, type: .info) - } + + modifiedObjects = obvContext.context.insertedObjects + .union(obvContext.context.updatedObjects) + .union(obvContext.context.deletedObjects) + + try obvContext.save(logOnFailure: Self.log) + + os_log("📤 Saving Context done.", log: Self.log, type: .info) + } catch(let error) { return cancel(withReason: .coreDataError(error: error)) } diff --git a/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareExtensionErrorViewController.swift b/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareExtensionErrorViewController.swift index 3ec19374..0a5d399a 100644 --- a/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareExtensionErrorViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareExtensionErrorViewController.swift @@ -1,6 +1,6 @@ /* * Olvid for iOS - * Copyright © 2019-2022 Olvid SAS + * Copyright © 2019-2023 Olvid SAS * * This file is part of Olvid for iOS. * @@ -20,6 +20,7 @@ import ObvUI import UIKit import ObvUICoreData +import ObvDesignSystem protocol ShareExtensionErrorViewControllerDelegate: AnyObject { @@ -57,7 +58,7 @@ final class ShareExtensionErrorViewController: UIViewController { okButton.setTitle(CommonString.Word.Ok, for: .normal) okButton.layer.cornerRadius = 16 okButton.layer.masksToBounds = true - okButton.contentEdgeInsets = UIEdgeInsets(top: 16, left: 32, bottom: 16, right: 32) + // okButton.contentEdgeInsets = UIEdgeInsets(top: 16, left: 32, bottom: 16, right: 32) okButton.backgroundColor = AppTheme.shared.colorScheme.olvidLight okButton.addTarget(self, action: #selector(okOlvidButtonTapped), for: .touchUpInside) diff --git a/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareView.swift b/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareView.swift index aa5ab1fe..ebc47662 100644 --- a/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareView.swift +++ b/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareView.swift @@ -21,6 +21,8 @@ import ObvUI import SwiftUI import ObvUICoreData +import ObvDesignSystem +import ObvSettings private enum ActiveSheet: Identifiable { @@ -94,9 +96,7 @@ struct ShareView: View { .frame(width: 30, height: 30) Spacer() Button(action: { - if #available(iOSApplicationExtension 15.0, *) { - isFocused = false - } + isFocused = false model.userWantsToSendMessages(to: model.selectedDiscussions) }) { Image(systemIcon: .paperplaneFill) @@ -107,16 +107,10 @@ struct ShareView: View { } private var textArea: some View { - Group { - if #available(iOSApplicationExtension 14.0, *) { - ZStack { - TextEditor(text: model.textBinding) - if model.textBinding.wrappedValue.isEmpty { - textEditorPlaceholderView - } - } - } else { - TextField(LocalizedStringKey("YOUR_MESSAGE"), text: model.textBinding) + ZStack { + TextEditor(text: model.textBinding) + if model.textBinding.wrappedValue.isEmpty { + textEditorPlaceholderView } } } @@ -148,7 +142,7 @@ struct ShareView: View { RoundedRectangle(cornerRadius: 10.0) .foregroundColor(.secondary) .aspectRatio(1.0, contentMode: .fill) - ObvProgressView() + ProgressView() } .frame(height: 100) case .image(let image): @@ -198,7 +192,7 @@ struct ShareView: View { Text(LocalizedStringKey("Discussions")) .foregroundColor(Color(AppTheme.shared.colorScheme.label)) Spacer() - Text(String.localizedStringWithFormat(NSLocalizedString("CHOOSE_OR_NUMBER_OF_CHOSEN_DISCUSSION", comment: ""), model.selectedDiscussions.count)) + Text("CHOOSE_OR_\(model.selectedDiscussions.count)_CHOSEN_DISCUSSION") .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) Image(systemIcon: .chevronRight) .foregroundColor(Color(AppTheme.shared.colorScheme.secondaryLabel)) @@ -208,14 +202,10 @@ struct ShareView: View { private var navigationViewPresentingOwnedIdentityChooserView: some View { NavigationView { - if #available(iOSApplicationExtension 14.0, *) { - ownedIdentityChooserView - .onChange(of: model.selectedOwnedIdentity) { _ in - activeSheet = nil - } - } else { - ownedIdentityChooserView - } + ownedIdentityChooserView + .onChange(of: model.selectedOwnedIdentity) { _ in + activeSheet = nil + } } } diff --git a/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareViewController.swift b/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareViewController.swift index 1e26aa7f..cbc7c62d 100644 --- a/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareViewController.swift +++ b/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareViewController.swift @@ -28,7 +28,7 @@ import OlvidUtils import os.log import SwiftUI import ObvUICoreData - +import ObvSettings @objc(ShareViewController) @@ -44,7 +44,7 @@ final class ShareViewController: UIViewController, ShareExtensionErrorViewContro private var localAuthenticationViewController: LocalAuthenticationViewController? private var obvEngine: ObvEngine! - private var model: ShareViewModel! + private var model: ShareViewModel? private var wipeOp: WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation? @@ -105,12 +105,14 @@ final class ShareViewController: UIViewController, ShareExtensionErrorViewContro // Make sure at least one owned identity has been generated within the main app + let model: ShareViewModel do { let allOwnedIdentities = try PersistedObvOwnedIdentity.getAllNonHiddenOwnedIdentities(within: ObvStack.shared.viewContext) guard !allOwnedIdentities.isEmpty else { throw Self.makeError(message: "Cannot find any owned identity") } - self.model = try ShareViewModel(allOwnedIdentities: allOwnedIdentities) + model = try ShareViewModel(allOwnedIdentities: allOwnedIdentities) + self.model = model } catch { let vc = ShareExtensionErrorViewController() vc.delegate = self @@ -122,7 +124,7 @@ final class ShareViewController: UIViewController, ShareExtensionErrorViewContro // Instantiate the two view controllers that we might need and add them as child view controllers // The appropriate vc view will be added as a subview later, in showAppropriateViewControllerView() let shareViewHostingController = ShareViewHostingController(obvEngine: self.obvEngine, - model: self.model, + model: model, internalQueue: internalQueue, userDefaults: userDefaults) shareViewHostingController.delegate = self @@ -130,8 +132,9 @@ final class ShareViewController: UIViewController, ShareExtensionErrorViewContro shareViewHostingController.didMove(toParent: self) self.shareViewHostingController = shareViewHostingController - let localAuthenticationViewController = LocalAuthenticationViewController(localAuthenticationDelegate: localAuthenticationDelegate, - delegate: self) + let localAuthenticationViewController = LocalAuthenticationViewController( + localAuthenticationDelegate: localAuthenticationDelegate, + delegate: self) self.addChild(localAuthenticationViewController) localAuthenticationViewController.didMove(toParent: self) self.localAuthenticationViewController = localAuthenticationViewController @@ -152,6 +155,7 @@ final class ShareViewController: UIViewController, ShareExtensionErrorViewContro guard let localAuthenticationViewController = localAuthenticationViewController else { assertionFailure(); return } guard let shareViewHostingController = shareViewHostingController else { assertionFailure(); return } + guard let model else { assertionFailure(); return } let vcToShow = !model.isAuthenticated ? localAuthenticationViewController : shareViewHostingController let vcToHide = model.isAuthenticated ? localAuthenticationViewController : shareViewHostingController @@ -186,9 +190,11 @@ final class ShareViewController: UIViewController, ShareExtensionErrorViewContro private func authenticateIfRequired() async { - assert(model != nil, "Should not occur. May be nil under testing conditions via Xcode with no owned identity set up.") + guard let model else { assertionFailure("Should not occur. May be nil under testing conditions via Xcode with no owned identity set up."); return } if !model.isAuthenticated { - await localAuthenticationViewController?.performLocalAuthentication(uptimeAtTheTimeOfChangeoverToNotActiveState: nil) + await localAuthenticationViewController?.performLocalAuthentication( + customPasscodePresentingViewController: self, + uptimeAtTheTimeOfChangeoverToNotActiveState: nil) } } @@ -282,7 +288,8 @@ extension ShareViewController: LocalAuthenticationViewControllerDelegate { func userLocalAuthenticationDidSucceed(authenticationWasPerformed: Bool) async { assert(Thread.isMainThread) - self.model.isAuthenticated = true + assert(model != nil) + self.model?.isAuthenticated = true showAppropriateViewControllerView() } @@ -510,7 +517,7 @@ final class ShareViewHostingController: UIHostingController, ShareVie try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in dispatchGroupForEngine.enter() - let op = SendUnprocessedPersistedMessageSentOperation(messageSentPermanentID: messageSentPermanentID, extendedPayloadProvider: nil, obvEngine: obvEngine) { + let op = SendUnprocessedPersistedMessageSentOperation(messageSentPermanentID: messageSentPermanentID, alsoPostToOtherOwnedDevices: true, extendedPayloadProvider: nil, obvEngine: obvEngine) { // Called by the engine when the message and its attachments were taken into account progress.completedUnitCount += 1 dispatchGroupForEngine.leave() @@ -579,11 +586,13 @@ final class ShareViewHostingController: UIHostingController, ShareVie internalQueue.addOperation { [weak self] in dispatchGroupForEngine.wait() - progress.completedUnitCount += 1 + progress.completedUnitCount += 1 // If we reach this point, we know for sure that *all* messages to send were sent by the engine debugPrint(progress.completedUnitCount, progress.totalUnitCount) // Give some time to the progress to reach 100 percent and complete the request - self?.delegate?.showSuccessAndCompleteRequestAfter(deadline: .now() + .milliseconds(300)) + Task { [weak self] in + await self?.delegate?.showSuccessAndCompleteRequestAfter(deadline: .now() + .milliseconds(300)) + } } } diff --git a/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareViewModel.swift b/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareViewModel.swift index b7dc7158..38954a38 100644 --- a/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareViewModel.swift +++ b/iOSClient/ObvMessenger/ObvMessengerShareExtension/ShareViewModel.swift @@ -29,6 +29,7 @@ import SwiftUI import CoreData import ObvUICoreData import UI_SystemIcon +import ObvSettings final class ShareViewModel: ObservableObject, DiscussionsHostingViewControllerDelegate, ObvErrorMaker { @@ -215,25 +216,7 @@ final class ShareViewModel: ObservableObject, DiscussionsHostingViewControllerDe let thumbnail = try await generator.generateBestRepresentation(for: request) return .image(thumbnail.uiImage) } catch { - let uti = hardlink.uti - if #available(iOS 14.0, *) { - let icon = ObvUTIUtils.getIcon(forUTI: uti) - return .symbol(icon) - } else { - // See CoreServices > UTCoreTypes - if ObvUTIUtils.uti(uti, conformsTo: "org.openxmlformats.wordprocessingml.document" as CFString) { - // Word (docx) document - return .symbol(.docFill) - } else if ObvUTIUtils.uti(uti, conformsTo: kUTTypeArchive) { - // Zip archive - return .symbol(.rectangleCompressVertical) - } else if ObvUTIUtils.uti(uti, conformsTo: kUTTypeWebArchive) { - // Web archive - return .symbol(.archiveboxFill) - } else { - return .symbol(.paperclip) - } - } + return .symbol(hardlink.contentType.systemIcon) } } } diff --git a/iOSClient/ObvMessenger/Project.swift b/iOSClient/ObvMessenger/Project.swift index c7c828d5..57dba52d 100644 --- a/iOSClient/ObvMessenger/Project.swift +++ b/iOSClient/ObvMessenger/Project.swift @@ -29,6 +29,7 @@ SUBQUERY ( ], "CFBundleShortVersionString": "$(MARKETING_VERSION)", "CFBundleVersion": "$(CURRENT_PROJECT_VERSION)", + "NSHumanReadableCopyright": .init(stringLiteral: Constants.nsHumanReadableCopyrightValue), "CFBundleDisplayName": "$(OBV_BUNDLE_DISPLAY_NAME_FOR_SHARE_EXTENSION)", "OBV_APP_GROUP_IDENTIFIER": "$(OBV_APP_GROUP_IDENTIFIER)" ]) @@ -36,7 +37,7 @@ SUBQUERY ( let target = Target.appExtension(name: "ObvMessengerShareExtension", bundleIdentifier: "$(OBV_PRODUCT_BUNDLE_IDENTIFIER_FOR_SHARE_EXTENSION)", infoPlist: infoPlist, - sources: [ //this is going to be a fuckfest… this WILL need to be organized and not have target files from other targets + sources: [ // This will need to be organized and not have target files from other targets "ObvMessengerShareExtension/*.swift", "ObvMessengerShareExtension/Operations/*.swift", "ObvMessenger/Constants/ObvMessengerConstants.swift", @@ -44,7 +45,6 @@ SUBQUERY ( "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/DeletePersistedGroupV2Operation.swift", "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/MarkPublishedDetailsOfGroupV2AsSeenOperation.swift", "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/RemoveUpdateInProgressForGroupV2Operation.swift", - "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateCustomNameAndGroupV2PhotoOperation.swift", "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateGroupV2Operation.swift", "ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Deleting messages and discussions/WipeAllReadOnceAndLimitedVisibilityMessagesAfterLockOutOperation.swift", "ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Sending messages/SendUnprocessedPersistedMessageSentOperation.swift", @@ -113,8 +113,7 @@ SUBQUERY ( "ObvMessenger/VoIP/Helpers/CallSounds.swift", ], resources: [ - "ObvMessenger/*.lproj/*.strings", - "ObvMessenger/*.lproj/*.stringsdict", + "ObvMessenger/*.xcstrings", "ObvMessenger/Assets.xcassets", "ObvMessenger/LaunchScreen.storyboard", ], @@ -143,6 +142,7 @@ func createNotificationServiceExtension() -> Target { ], "CFBundleShortVersionString": "$(MARKETING_VERSION)", "CFBundleVersion": "$(CURRENT_PROJECT_VERSION)", + "NSHumanReadableCopyright": .init(stringLiteral: Constants.nsHumanReadableCopyrightValue), "CFBundleDisplayName": "$(OBV_BUNDLE_DISPLAY_NAME_FOR_NOTIFICATION_SERVICE_EXTENSION)", "OBV_APP_GROUP_IDENTIFIER": "$(OBV_APP_GROUP_IDENTIFIER)" ]) @@ -150,16 +150,14 @@ func createNotificationServiceExtension() -> Target { let target = Target.appExtension(name: "ObvMessengerNotificationServiceExtension", bundleIdentifier: "$(OBV_PRODUCT_BUNDLE_IDENTIFIER_FOR_NOTIFICATION_SERVICE_EXTENSION)", infoPlist: infoPlist, - sources: [ //this is going to be a fuckfest… this WILL need to be organized and not have target files from other targets + sources: [ "ObvMessenger/Constants/ObvMessengerConstants.swift", "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/CreateOrUpdatePersistedGroupV2Operation.swift", "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/DeletePersistedGroupV2Operation.swift", "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/MarkPublishedDetailsOfGroupV2AsSeenOperation.swift", "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/RemoveUpdateInProgressForGroupV2Operation.swift", - "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateCustomNameAndGroupV2PhotoOperation.swift", "ObvMessenger/Coordinators/ContactGroupCoordinator/Operations/UpdateGroupV2Operation.swift", "ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/CleanCallLogContactsOperation.swift", - "ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/ReportCallEventOperation.swift", "ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/CallLog/ReportEndCallOperation.swift", "ObvMessenger/Coordinators/PersistedDiscussionsUpdatesCoordinator/Operations/Receiving messages/ExtractReceivedExtendedPayloadOperation.swift", "ObvMessenger/CoreData/DataMigrationManagerForObvMessenger.swift", @@ -204,12 +202,8 @@ func createNotificationServiceExtension() -> Target { "ObvMessenger/VoIP/Call/GenericCall.swift", "ObvMessenger/VoIP/CallParticipant/CallParticipant.swift", "ObvMessenger/VoIP/CallParticipant/CallParticipantUpdateKind.swift", - "ObvMessenger/VoIP/CallReport.swift", "ObvMessenger/VoIP/Helpers/CallSounds.swift", - "ObvMessenger/VoIP/JSON Messages/WebRTCDataChannelMessageJSON.swift", - "ObvMessenger/VoIP/JSON Messages/WebRTCInnerMessageJSON.swift", "ObvMessenger/VoIP/VoIPNotification/CallUpdateKind.swift", - "ObvMessenger/VoIP/VoIPNotification/VoIPNotification.swift", "ObvMessengerNotificationServiceExtension/NotificationService.swift", ], resources: [ @@ -250,8 +244,7 @@ func createNotificationServiceExtension() -> Target { "ObvMessenger/Managers/UserNotificationManager/Sounds/Synth-Emotive/Synth-Emotive08.caf", "ObvMessenger/Managers/UserNotificationManager/Sounds/alarm-paranoid.caf", "ObvMessenger/Managers/UserNotificationManager/Sounds/Synth-FM/Synth-FM12.caf", - "ObvMessenger/*.lproj/*.strings", - "ObvMessenger/*.lproj/*.stringsdict", + "ObvMessenger/*.xcstrings", "ObvMessenger/Managers/UserNotificationManager/Sounds/Piano/Piano05.caf", "ObvMessenger/Managers/UserNotificationManager/Sounds/Oboe/Oboe13.caf", "ObvMessenger/Managers/UserNotificationManager/Sounds/Synth-Quantizer/Synth-Quantizer13.caf", @@ -608,6 +601,7 @@ func createIntentsServiceExtension() -> Target { "NSExtensionPrincipalClass" : "$(PRODUCT_MODULE_NAME).IntentHandler" ], "CFBundleShortVersionString": "$(MARKETING_VERSION)", + "NSHumanReadableCopyright": .init(stringLiteral: Constants.nsHumanReadableCopyrightValue), "CFBundleVersion": "$(CURRENT_PROJECT_VERSION)", "CFBundleDisplayName": "$(OBV_BUNDLE_DISPLAY_NAME_FOR_INTENTS_EXTENSION)", ]) @@ -620,7 +614,7 @@ func createIntentsServiceExtension() -> Target { "ObvMessengerIntentsExtension/IntentHandler.swift" ], resources: [], - entitlements: nil, + entitlements: "ObvMessengerIntentsExtension/ObvMessengerIntentsExtension.entitlements", dependencies: [ .sdk(name: "Intents", type: .framework, status: .required) ], @@ -630,16 +624,17 @@ func createIntentsServiceExtension() -> Target { return target } + func createApp(shareExtension: Target, notificationExtension: Target, - intentsExtension: Target) -> Target { + intentsExtension: Target, + devMode: Bool) -> Target { let infoPlist: InfoPlist = .extendingDefault(with: [ "BGTaskSchedulerPermittedIdentifiers": [ "io.olvid.background.tasks" ], "CFBundleDocumentTypes": [ [ - "CFBundleTypeIconFiles" : [], "CFBundleTypeName" : "com.adobe.pdf", "CFBundleTypeRole" : "None", "LSHandlerRank" : "Default", @@ -655,20 +650,40 @@ func createApp(shareExtension: Target, "CFBundleTypeName" : "public.comma-separated-values-text", "LSHandlerRank" : "Default", "LSItemContentTypes" : ["public.comma-separated-values-text"] - ] + ], + [ + "CFBundleTypeName" : "Microsoft Word 97 document", + "LSHandlerRank" : "Default", + "LSItemContentTypes" : ["com.microsoft.word.doc"] + ], + [ + "CFBundleTypeName" : "Microsoft Word document", + "LSHandlerRank" : "Default", + "LSItemContentTypes" : ["org.openxmlformats.wordprocessingml.document"] + ], + [ + "CFBundleTypeName" : "Microsoft Powerpoint document", + "LSHandlerRank" : "Default", + "LSItemContentTypes" : ["org.openxmlformats.presentationml.presentation"] + ], + [ + "CFBundleTypeName" : "Microsoft Excel document", + "LSHandlerRank" : "Default", + "LSItemContentTypes" : ["org.openxmlformats.spreadsheetml.sheet"] + ], ], "CFBundleURLTypes": [ [ "CFBundleTypeRole" : "Editor", "CFBundleURLSchemes" : [ - "olvid" + devMode ? "olvid.dev" : "olvid" ] ] ], "CFBundleDisplayName": "$(OBV_BUNDLE_DISPLAY_NAME)", "CFBundleShortVersionString": "$(MARKETING_VERSION)", + "NSHumanReadableCopyright": .init(stringLiteral: Constants.nsHumanReadableCopyrightValue), "CFBundleVersion": "$(CURRENT_PROJECT_VERSION)", - "HARDCODED_API_KEY": "$(HARDCODED_API_KEY)", "ITSAppUsesNonExemptEncryption": false, "LSApplicationCategoryType": "public.app-category.social-networking", "LSRequiresIPhoneOS": true, @@ -730,7 +745,8 @@ func createApp(shareExtension: Target, "UTExportedTypeDeclarations" : [ [ "UTTypeConformsTo" : [ - "public.item" + "public.data", + "public.content", ], "UTTypeDescription" : "Olvid Backup", "UTTypeIconFiles" : [], @@ -740,54 +756,109 @@ func createApp(shareExtension: Target, "olvidbackup" ] ] - ] - ] + ], + ], + "UTImportedTypeDeclarations" : [ + [ + "UTTypeDescription" : "Web Internet Location", + "UTTypeIdentifier" : "com.apple.web-internet-location", + "UTTypeConformsTo" : [ + "public.data", + ], + ], + [ + "UTTypeDescription" : "Microsoft Word 97 document", + "UTTypeIdentifier" : "com.microsoft.word.doc", + "UTTypeConformsTo" : [ + "public.data", + ], + "UTTypeTagSpecification" : [ + "public.filename-extension" : [ + "doc", + ], + ], + ], + [ + "UTTypeDescription" : "Microsoft Word document", + "UTTypeIdentifier" : "org.openxmlformats.wordprocessingml.document", + "UTTypeConformsTo" : [ + "public.data", + ], + "UTTypeTagSpecification" : [ + "public.filename-extension" : [ + "docx", + ], + ], + ], + [ + "UTTypeDescription" : "Microsoft Powerpoint document", + "UTTypeIdentifier" : "org.openxmlformats.presentationml.presentation", + "UTTypeConformsTo" : [ + "public.data", + ], + "UTTypeTagSpecification" : [ + "public.filename-extension" : [ + "pptx", + ], + ], + ], + [ + "UTTypeDescription" : "Microsoft Excel document", + "UTTypeIdentifier" : "org.openxmlformats.spreadsheetml.sheet", + "UTTypeConformsTo" : [ + "public.data", + ], + "UTTypeTagSpecification" : [ + "public.filename-extension" : [ + "xlsx", + ], + ], + ], + ], ]) - let dependencies: [TargetDependency] = { - let _base: [TargetDependency] = [ - .target(shareExtension), - .target(notificationExtension), - .target(intentsExtension), - .Engine.obvFlowManager, - .Engine.obvTypes, - .Engine.obvServerInterface, - .Modules.obvUI, - .Engine.obvNetworkFetchManager, - .Engine.bigInt, - .Engine.jws, - .Engine.obvIdentityManager, - .init(.webRTC), - .Engine.obvOperation, - .Engine.obvNotificationCenter, - .Engine.obvNetworkSendManager, - .Engine.obvEncoder, - .init(.orderedCollections), - .Engine.obvDatabaseManager, - .Engine.obvChannelManager, - .Engine.obvBackupManager, - .Engine.obvCrypto, - .Engine.obvEngine, - .Engine.obvProtocolManager, - .Modules.obvUICoreData, - .Engine.obvMetaManager, - .Modules.olvidUtils, - .Modules.Platform.base, - .Modules.Discussions.Mentions.AutoGrowingTextView.textViewDelegateProxy, - .Modules.Platform.uiKitAdditions, - .init(.appAuth), - .Modules.Discussions.attachmentsDropView, - .Modules.Components.textInputShortcutsResultView, - .Modules.Discussions.Mentions.Builders.composeMessage, - .Modules.Discussions.Mentions.Builders.textBubble, - .Modules.Discussions.Mentions.Builders.buildersShared, - .Modules.Discussions.scrollToBottomButton, - ] - - return _base - }() + let dependencies: [TargetDependency] = [ + .target(shareExtension), + .target(notificationExtension), + .target(intentsExtension), + .Engine.obvFlowManager, + .Engine.obvTypes, + .Engine.obvServerInterface, + .Modules.obvUI, + .Engine.obvNetworkFetchManager, + .Engine.bigInt, + .Engine.jws, + .Engine.obvIdentityManager, + .init(.webRTC), + .package(product: "AppAuth"), + .Engine.obvOperation, + .Engine.obvNotificationCenter, + .Engine.obvNetworkSendManager, + .Engine.obvEncoder, + //.init(.orderedCollections), + .Engine.obvDatabaseManager, + .Engine.obvChannelManager, + .Engine.obvBackupManager, + .Engine.obvSyncSnapshotManager, + .Engine.obvCrypto, + .Engine.obvEngine, + .Engine.obvProtocolManager, + .Modules.obvUICoreData, + //.Engine.obvMetaManager, + .Modules.olvidUtils, + .Modules.obvDesignSystem, + .Modules.obvSettings, + .Modules.Platform.base, + .Modules.Discussions.Mentions.AutoGrowingTextView.textViewDelegateProxy, + .Modules.Platform.uiKitAdditions, + .Modules.Components.textInputShortcutsResultView, + .Modules.Discussions.Mentions.Builders.composeMessage, + .Modules.Discussions.Mentions.Builders.textBubble, + .Modules.Discussions.Mentions.Builders.buildersShared, + .Modules.Discussions.scrollToBottomButton, + ] - let mainApp = Target.mainApp(name: "Olvid", + let mainApp = Target.mainApp(name: devMode ? "Olvid_dev" : "Olvid", infoPlist: infoPlist, sources: [ "ObvMessenger/**/*.swift", @@ -798,10 +869,8 @@ func createApp(shareExtension: Target, "ObvMessenger/**/*.mp3", "ObvMessenger/**/*.xib", "ObvMessenger/**/*.storyboard", - "ObvMessenger/**/*.lproj/*.strings", - "ObvMessenger/**/*.lproj/*.stringsdict", + "ObvMessenger/**/*.xcstrings", "ObvMessenger/**/*.lproj/AppIntentVocabulary.plist", - "ObvMessenger/**/*.lproj/*.strings", "ObvMessenger/Assets.xcassets", "ObvMessenger/Settings.bundle" ], @@ -814,7 +883,6 @@ func createApp(shareExtension: Target, additionalFiles: [ "ObvMessenger/**/*.md", "ObvMessenger/**/*.txt", - "TestConfiguration.storekit" ]) return mainApp @@ -829,12 +897,19 @@ let intentsExtension = createIntentsServiceExtension() let app = createApp(shareExtension: shareExtension, notificationExtension: notificationExtension, - intentsExtension: intentsExtension) + intentsExtension: intentsExtension, + devMode: false) + +let appDev = createApp(shareExtension: shareExtension, + notificationExtension: notificationExtension, + intentsExtension: intentsExtension, + devMode: true) let project = Project.createProject(name: "ObvMessenger", packages: [], targets: [ app, + appDev, shareExtension, notificationExtension, intentsExtension diff --git a/iOSClient/ObvMessenger/TestConfiguration.storekit b/iOSClient/ObvMessenger/TestConfiguration.storekit deleted file mode 100644 index fb4064e1..00000000 --- a/iOSClient/ObvMessenger/TestConfiguration.storekit +++ /dev/null @@ -1,54 +0,0 @@ -{ - "identifier" : "D2AEBB39", - "nonRenewingSubscriptions" : [ - - ], - "products" : [ - - ], - "settings" : { - - }, - "subscriptionGroups" : [ - { - "id" : "98BEABAA", - "localizations" : [ - - ], - "name" : "io.olvid.group.premium", - "subscriptions" : [ - { - "adHocOffers" : [ - - ], - "displayPrice" : "0.99", - "familyShareable" : false, - "groupNumber" : 1, - "internalID" : "C43ECCD9", - "introductoryOffer" : null, - "localizations" : [ - { - "description" : "Access to all premium features.", - "displayName" : "Premium features", - "locale" : "en_US" - }, - { - "description" : "Accès à toutes les fonctionnalités premimum.", - "displayName" : "Fonctionnalités Premium", - "locale" : "fr" - } - ], - "productID" : "io.olvid.premium_2020_monthly", - "recurringSubscriptionPeriod" : "P1M", - "referenceName" : "Olvid Premium Features", - "subscriptionGroupID" : "98BEABAA", - "type" : "RecurringSubscription" - } - ] - } - ], - "version" : { - "major" : 1, - "minor" : 1 - } -} diff --git a/tuist/Config.swift b/tuist/Config.swift index 3a7659a0..32bfc771 100644 --- a/tuist/Config.swift +++ b/tuist/Config.swift @@ -4,16 +4,19 @@ import Foundation let xcodeVersionFileVersion = try! { let currentPath = (#file as NSString).deletingLastPathComponent - let xcodesVersionFilePath = currentPath.appending("/../.xcode-version") + let xcodesVersionFilePath = (currentPath.appending("/../.xcode-version") as NSString) + .resolvingSymlinksInPath guard FileManager.default.fileExists(atPath: xcodesVersionFilePath) else { fatalError("expected \(xcodesVersionFilePath) to exist") } return try String(contentsOfFile: xcodesVersionFilePath) + .trimmingCharacters(in: .whitespacesAndNewlines) }() let config = Config( - compatibleXcodeVersions: .exact(.init(stringLiteral: xcodeVersionFileVersion)), + //compatibleXcodeVersions: .exact(.init(stringLiteral: xcodeVersionFileVersion)), + compatibleXcodeVersions: .all, generationOptions: .options(resolveDependenciesWithSystemScm: true) ) diff --git a/tuist/Dependencies.swift b/tuist/Dependencies.swift index 12416848..b5789e88 100644 --- a/tuist/Dependencies.swift +++ b/tuist/Dependencies.swift @@ -4,5 +4,5 @@ import ProjectDescriptionHelpers let dependencies = Dependencies( carthage: .init(TargetDependency.CarthageDependency.allCases), swiftPackageManager: .init(TargetDependency.SPMDependency.allCases), - platforms: [.iOS] + platforms: [.iOS, .macOS] ) diff --git a/tuist/Dependencies/Lockfiles/Cartfile.resolved b/tuist/Dependencies/Lockfiles/Cartfile.resolved deleted file mode 100644 index 4fc74403..00000000 --- a/tuist/Dependencies/Lockfiles/Cartfile.resolved +++ /dev/null @@ -1 +0,0 @@ -github "olvid-io/AppAuth-iOS-for-Olvid" "0d90e24667c4a1fd9a84edb27ce966cc395f1314" diff --git a/tuist/Dependencies/Lockfiles/Package.resolved b/tuist/Dependencies/Lockfiles/Package.resolved deleted file mode 100644 index 2bb33884..00000000 --- a/tuist/Dependencies/Lockfiles/Package.resolved +++ /dev/null @@ -1,23 +0,0 @@ -{ - "pins" : [ - { - "identity" : "joseswift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/airsidemobile/JOSESwift.git", - "state" : { - "revision" : "10ed3b6736def7c26eb87135466b1cb46ea7e37f", - "version" : "2.4.0" - } - }, - { - "identity" : "swift-collections", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-collections.git", - "state" : { - "revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2", - "version" : "1.0.4" - } - } - ], - "version" : 2 -} diff --git a/tuist/GMPSPM/GMP.xcframework/Info.plist b/tuist/GMPSPM/GMP.xcframework/Info.plist index 27a7a503..88f5c723 100644 --- a/tuist/GMPSPM/GMP.xcframework/Info.plist +++ b/tuist/GMPSPM/GMP.xcframework/Info.plist @@ -4,6 +4,23 @@ AvailableLibraries + + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-maccatalyst + LibraryPath + libgmp.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + maccatalyst + HeadersPath Headers diff --git a/tuist/GMPSPM/GMP.xcframework/ios-arm64/Headers/gmp.h b/tuist/GMPSPM/GMP.xcframework/ios-arm64/Headers/gmp.h index 3fd30559..db976b96 100644 --- a/tuist/GMPSPM/GMP.xcframework/ios-arm64/Headers/gmp.h +++ b/tuist/GMPSPM/GMP.xcframework/ios-arm64/Headers/gmp.h @@ -2323,7 +2323,7 @@ enum }; /* Define CC and CFLAGS which were used to build this version of GMP */ -#define __GMP_CC "/Applications/Xcode-14.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" +#define __GMP_CC "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" #define __GMP_CFLAGS "-O2 -pedantic -march=armv8-a" /* Major version number is the value of __GNU_MP__ too, above. */ diff --git a/tuist/GMPSPM/GMP.xcframework/ios-arm64/libgmp.a b/tuist/GMPSPM/GMP.xcframework/ios-arm64/libgmp.a index 28769f56..5534859c 100644 --- a/tuist/GMPSPM/GMP.xcframework/ios-arm64/libgmp.a +++ b/tuist/GMPSPM/GMP.xcframework/ios-arm64/libgmp.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c654ad2ce40feebba458fe5d6d5f06feece1cc3cddbcf8799bde8db1f6adabe -size 3312984 +oid sha256:95fa151b49d78a9e79d344a9485758cdff36374c6f2ddcfbf713eb63d0bbad53 +size 3372152 diff --git a/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-maccatalyst/Headers/gmp.h b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-maccatalyst/Headers/gmp.h new file mode 100644 index 00000000..db976b96 --- /dev/null +++ b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-maccatalyst/Headers/gmp.h @@ -0,0 +1,2336 @@ +/* Definitions for GNU multiple precision functions. -*- mode: c -*- + +Copyright 1991, 1993-1997, 1999-2016, 2020 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. */ + +#ifndef __GMP_H__ + +#if defined (__cplusplus) +#include /* for std::istream, std::ostream, std::string */ +#include +#endif + + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_HAVE_HOST_CPU_FAMILY_power 0 +#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0 +#define GMP_LIMB_BITS 64 +#define GMP_NAIL_BITS 0 +#endif +#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS) +#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS) +#define GMP_NUMB_MAX GMP_NUMB_MASK +#define GMP_NAIL_MASK (~ GMP_NUMB_MASK) + + +#ifndef __GNU_MP__ +#define __GNU_MP__ 6 + +#include /* for size_t */ +#include + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +/* #undef _LONG_LONG_LIMB */ +#define __GMP_LIBGMP_DLL 0 +#endif + + +/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in + all other circumstances. + + When compiling objects for libgmp, __GMP_DECLSPEC is an export directive, + or when compiling for an application it's an import directive. The two + cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles + (and not defined from an application). + + __GMP_DECLSPEC_XX is similarly used for libgmpxx. __GMP_WITHIN_GMPXX + indicates when building libgmpxx, and in that case libgmpxx functions are + exports, but libgmp functions which might get called are imports. + + Libtool DLL_EXPORT define is not used. + + There's no attempt to support GMP built both static and DLL. Doing so + would mean applications would have to tell us which of the two is going + to be used when linking, and that seems very tedious and error prone if + using GMP by hand, and equally tedious from a package since autoconf and + automake don't give much help. + + __GMP_DECLSPEC is required on all documented global functions and + variables, the various internals in gmp-impl.h etc can be left unadorned. + But internals used by the test programs or speed measuring programs + should have __GMP_DECLSPEC, and certainly constants or variables must + have it or the wrong address will be resolved. + + In gcc __declspec can go at either the start or end of a prototype. + + In Microsoft C __declspec must go at the start, or after the type like + void __declspec(...) *foo()". There's no __dllexport or anything to + guard against someone foolish #defining dllexport. _export used to be + available, but no longer. + + In Borland C _export still exists, but needs to go after the type, like + "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to + make use of that. Probably more trouble than it's worth. */ + +#if defined (__GNUC__) +#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__) +#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__) +#endif +#if defined (_MSC_VER) || defined (__BORLANDC__) +#define __GMP_DECLSPEC_EXPORT __declspec(dllexport) +#define __GMP_DECLSPEC_IMPORT __declspec(dllimport) +#endif +#ifdef __WATCOMC__ +#define __GMP_DECLSPEC_EXPORT __export +#define __GMP_DECLSPEC_IMPORT __import +#endif +#ifdef __IBMC__ +#define __GMP_DECLSPEC_EXPORT _Export +#define __GMP_DECLSPEC_IMPORT _Import +#endif + +#if __GMP_LIBGMP_DLL +#ifdef __GMP_WITHIN_GMP +/* compiling to go into a DLL libgmp */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into an application which will link to a DLL libgmp */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC +#endif + + +#ifdef __GMP_SHORT_LIMB +typedef unsigned int mp_limb_t; +typedef int mp_limb_signed_t; +#else +#ifdef _LONG_LONG_LIMB +typedef unsigned long long int mp_limb_t; +typedef long long int mp_limb_signed_t; +#else +typedef unsigned long int mp_limb_t; +typedef long int mp_limb_signed_t; +#endif +#endif +typedef unsigned long int mp_bitcnt_t; + +/* For reference, note that the name __mpz_struct gets into C++ mangled + function names, which means although the "__" suggests an internal, we + must leave this name for binary compatibility. */ +typedef struct +{ + int _mp_alloc; /* Number of *limbs* allocated and pointed + to by the _mp_d field. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpz_struct; + +#endif /* __GNU_MP__ */ + + +typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */ +typedef __mpz_struct mpz_t[1]; + +typedef mp_limb_t * mp_ptr; +typedef const mp_limb_t * mp_srcptr; +#if defined (_CRAY) && ! defined (_CRAYMPP) +/* plain `int' is much faster (48 bits) */ +#define __GMP_MP_SIZE_T_INT 1 +typedef int mp_size_t; +typedef int mp_exp_t; +#else +#define __GMP_MP_SIZE_T_INT 0 +typedef long int mp_size_t; +typedef long int mp_exp_t; +#endif + +typedef struct +{ + __mpz_struct _mp_num; + __mpz_struct _mp_den; +} __mpq_struct; + +typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */ +typedef __mpq_struct mpq_t[1]; + +typedef struct +{ + int _mp_prec; /* Max precision, in number of `mp_limb_t's. + Set by mpf_init and modified by + mpf_set_prec. The area pointed to by the + _mp_d field contains `prec' + 1 limbs. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpf_struct; + +/* typedef __mpf_struct MP_FLOAT; */ +typedef __mpf_struct mpf_t[1]; + +/* Available random number generation algorithms. */ +typedef enum +{ + GMP_RAND_ALG_DEFAULT = 0, + GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ +} gmp_randalg_t; + +/* Random state struct. */ +typedef struct +{ + mpz_t _mp_seed; /* _mp_d member points to state of the generator. */ + gmp_randalg_t _mp_alg; /* Currently unused. */ + union { + void *_mp_lc; /* Pointer to function pointers structure. */ + } _mp_algdata; +} __gmp_randstate_struct; +typedef __gmp_randstate_struct gmp_randstate_t[1]; + +/* Types for function declarations in gmp files. */ +/* ??? Should not pollute user name space with these ??? */ +typedef const __mpz_struct *mpz_srcptr; +typedef __mpz_struct *mpz_ptr; +typedef const __mpf_struct *mpf_srcptr; +typedef __mpf_struct *mpf_ptr; +typedef const __mpq_struct *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; + + +#if __GMP_LIBGMP_DLL +#ifdef __GMP_WITHIN_GMPXX +/* compiling to go into a DLL libgmpxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into a application which will link to a DLL libgmpxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC_XX +#endif + + +#ifndef __MPN +#define __MPN(x) __gmpn_##x +#endif + +/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4, + defines EOF but not FILE. */ +#if defined (FILE) \ + || defined (H_STDIO) \ + || defined (_H_STDIO) /* AIX */ \ + || defined (_STDIO_H) /* glibc, Sun, SCO */ \ + || defined (_STDIO_H_) /* BSD, OSF */ \ + || defined (__STDIO_H) /* Borland */ \ + || defined (__STDIO_H__) /* IRIX */ \ + || defined (_STDIO_INCLUDED) /* HPUX */ \ + || defined (__dj_include_stdio_h_) /* DJGPP */ \ + || defined (_FILE_DEFINED) /* Microsoft */ \ + || defined (__STDIO__) /* Apple MPW MrC */ \ + || defined (_MSL_STDIO_H) /* Metrowerks */ \ + || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ + || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \ + || defined (__STDIO_LOADED) /* VMS */ \ + || defined (__DEFINED_FILE) /* musl */ +#define _GMP_H_HAVE_FILE 1 +#endif + +/* In ISO C, if a prototype involving "struct obstack *" is given without + that structure defined, then the struct is scoped down to just the + prototype, causing a conflict if it's subsequently defined for real. So + only give prototypes if we've got obstack.h. */ +#if defined (_OBSTACK_H) /* glibc */ +#define _GMP_H_HAVE_OBSTACK 1 +#endif + +/* The prototypes for gmp_vprintf etc are provided only if va_list is defined, + via an application having included . Usually va_list is a typedef + so can't be tested directly, but C99 specifies that va_start is a macro. + + will define some sort of va_list for vprintf and vfprintf, but + let's not bother trying to use that since it's not standard and since + application uses for gmp_vprintf etc will almost certainly require the + whole anyway. */ + +#ifdef va_start +#define _GMP_H_HAVE_VA_LIST 1 +#endif + +/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ +#if defined (__GNUC__) && defined (__GNUC_MINOR__) +#define __GMP_GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +#define __GMP_GNUC_PREREQ(maj, min) 0 +#endif + +/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically + it means a function does nothing but examine its arguments and memory + (global or via arguments) to generate a return value, but changes nothing + and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets + tune/common.c etc turn this off when trying to write timing loops. */ +#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE) +#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +#define __GMP_ATTRIBUTE_PURE +#endif + + +/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean + to "g++ -Wold-style-cast". + + Casts in "extern inline" code within an extern "C" block don't induce + these warnings, so __GMP_CAST only needs to be used on documented + macros. */ + +#ifdef __cplusplus +#define __GMP_CAST(type, expr) (static_cast (expr)) +#else +#define __GMP_CAST(type, expr) ((type) (expr)) +#endif + + +/* An empty "throw ()" means the function doesn't throw any C++ exceptions, + this can save some stack frame info in applications. + + Currently it's given only on functions which never divide-by-zero etc, + don't allocate memory, and are expected to never need to allocate memory. + This leaves open the possibility of a C++ throw from a future GMP + exceptions scheme. + + mpz_set_ui etc are omitted to leave open the lazy allocation scheme + described in doc/tasks.html. mpz_get_d etc are omitted to leave open + exceptions for float overflows. + + Note that __GMP_NOTHROW must be given on any inlines the same as on their + prototypes (for g++ at least, where they're used together). Note also + that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like + __GMP_ATTRIBUTE_PURE. */ + +#if defined (__cplusplus) +#if __cplusplus >= 201103L +#define __GMP_NOTHROW noexcept +#else +#define __GMP_NOTHROW throw () +#endif +#else +#define __GMP_NOTHROW +#endif + + +/* PORTME: What other compilers have a useful "extern inline"? "static + inline" would be an acceptable substitute if the compiler (or linker) + discards unused statics. */ + + /* gcc has __inline__ in all modes, including strict ansi. Give a prototype + for an inline too, so as to correctly specify "dllimport" on windows, in + case the function is called rather than inlined. + GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 + inline semantics, unless -fgnu89-inline is used. */ +#ifdef __GNUC__ +#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2) \ + || (defined __GNUC_GNU_INLINE__ && defined __cplusplus) +#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__)) +#else +#define __GMP_EXTERN_INLINE extern __inline__ +#endif +#define __GMP_INLINE_PROTOTYPES 1 +#endif + +/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1 + strict ANSI mode. Inlining is done even when not optimizing (ie. -O0 + mode, which is the default), but an unnecessary local copy of foo is + emitted unless -O is used. "extern __inline" is accepted, but the + "extern" appears to be ignored, ie. it becomes a plain global function + but which is inlined within its file. Don't know if all old versions of + DEC C supported __inline, but as a start let's do the right thing for + current versions. */ +#ifdef __DECC +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict + ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes + place under -O. Without -O "foo" seems to be emitted whether it's used + or not, which is wasteful. "extern inline foo()" isn't useful, the + "extern" is apparently ignored, so foo is inlined if possible but also + emitted as a global, which causes multiple definition errors when + building a shared libgmp. */ +#ifdef __SCO_VERSION__ +#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE static inline +#endif +#endif + +/* Microsoft's C compiler accepts __inline */ +#ifdef _MSC_VER +#define __GMP_EXTERN_INLINE __inline +#endif + +/* Recent enough Sun C compilers want "inline" */ +#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE inline +#endif + +/* Somewhat older Sun C compilers want "static inline" */ +#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE static inline +#endif + + +/* C++ always has "inline" and since it's a normal feature the linker should + discard duplicate non-inlined copies, or if it doesn't then that's a + problem for everyone, not just GMP. */ +#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE inline +#endif + +/* Don't do any inlining within a configure run, since if the compiler ends + up emitting copies of the code into the object file it can end up + demanding the various support routines (like mpn_popcount) for linking, + making the "alloca" test and perhaps others fail. And on hppa ia64 a + pre-release gcc 3.2 was seen not respecting the "extern" in "extern + __inline__", triggering this problem too. */ +#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE +#undef __GMP_EXTERN_INLINE +#endif + +/* By default, don't give a prototype when there's going to be an inline + version. Note in particular that Cray C++ objects to the combination of + prototype and inline. */ +#ifdef __GMP_EXTERN_INLINE +#ifndef __GMP_INLINE_PROTOTYPES +#define __GMP_INLINE_PROTOTYPES 0 +#endif +#else +#define __GMP_INLINE_PROTOTYPES 1 +#endif + + +#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) +#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i)) + + +/* __builtin_expect is in gcc 3.0, and not in 2.95. */ +#if __GMP_GNUC_PREREQ (3,0) +#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1) +#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0) +#else +#define __GMP_LIKELY(cond) (cond) +#define __GMP_UNLIKELY(cond) (cond) +#endif + +#ifdef _CRAY +#define __GMP_CRAY_Pragma(str) _Pragma (str) +#else +#define __GMP_CRAY_Pragma(str) +#endif + + +/* Allow direct user access to numerator and denominator of an mpq_t object. */ +#define mpq_numref(Q) (&((Q)->_mp_num)) +#define mpq_denref(Q) (&((Q)->_mp_den)) + + +#if defined (__cplusplus) +extern "C" { +using std::FILE; +#endif + +#define mp_set_memory_functions __gmp_set_memory_functions +__GMP_DECLSPEC void mp_set_memory_functions (void *(*) (size_t), + void *(*) (void *, size_t, size_t), + void (*) (void *, size_t)) __GMP_NOTHROW; + +#define mp_get_memory_functions __gmp_get_memory_functions +__GMP_DECLSPEC void mp_get_memory_functions (void *(**) (size_t), + void *(**) (void *, size_t, size_t), + void (**) (void *, size_t)) __GMP_NOTHROW; + +#define mp_bits_per_limb __gmp_bits_per_limb +__GMP_DECLSPEC extern const int mp_bits_per_limb; + +#define gmp_errno __gmp_errno +__GMP_DECLSPEC extern int gmp_errno; + +#define gmp_version __gmp_version +__GMP_DECLSPEC extern const char * const gmp_version; + + +/**************** Random number routines. ****************/ + +/* obsolete */ +#define gmp_randinit __gmp_randinit +__GMP_DECLSPEC void gmp_randinit (gmp_randstate_t, gmp_randalg_t, ...); + +#define gmp_randinit_default __gmp_randinit_default +__GMP_DECLSPEC void gmp_randinit_default (gmp_randstate_t); + +#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp +__GMP_DECLSPEC void gmp_randinit_lc_2exp (gmp_randstate_t, mpz_srcptr, unsigned long int, mp_bitcnt_t); + +#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size +__GMP_DECLSPEC int gmp_randinit_lc_2exp_size (gmp_randstate_t, mp_bitcnt_t); + +#define gmp_randinit_mt __gmp_randinit_mt +__GMP_DECLSPEC void gmp_randinit_mt (gmp_randstate_t); + +#define gmp_randinit_set __gmp_randinit_set +__GMP_DECLSPEC void gmp_randinit_set (gmp_randstate_t, const __gmp_randstate_struct *); + +#define gmp_randseed __gmp_randseed +__GMP_DECLSPEC void gmp_randseed (gmp_randstate_t, mpz_srcptr); + +#define gmp_randseed_ui __gmp_randseed_ui +__GMP_DECLSPEC void gmp_randseed_ui (gmp_randstate_t, unsigned long int); + +#define gmp_randclear __gmp_randclear +__GMP_DECLSPEC void gmp_randclear (gmp_randstate_t); + +#define gmp_urandomb_ui __gmp_urandomb_ui +__GMP_DECLSPEC unsigned long gmp_urandomb_ui (gmp_randstate_t, unsigned long); + +#define gmp_urandomm_ui __gmp_urandomm_ui +__GMP_DECLSPEC unsigned long gmp_urandomm_ui (gmp_randstate_t, unsigned long); + + +/**************** Formatted output routines. ****************/ + +#define gmp_asprintf __gmp_asprintf +__GMP_DECLSPEC int gmp_asprintf (char **, const char *, ...); + +#define gmp_fprintf __gmp_fprintf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fprintf (FILE *, const char *, ...); +#endif + +#define gmp_obstack_printf __gmp_obstack_printf +#if defined (_GMP_H_HAVE_OBSTACK) +__GMP_DECLSPEC int gmp_obstack_printf (struct obstack *, const char *, ...); +#endif + +#define gmp_obstack_vprintf __gmp_obstack_vprintf +#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_obstack_vprintf (struct obstack *, const char *, va_list); +#endif + +#define gmp_printf __gmp_printf +__GMP_DECLSPEC int gmp_printf (const char *, ...); + +#define gmp_snprintf __gmp_snprintf +__GMP_DECLSPEC int gmp_snprintf (char *, size_t, const char *, ...); + +#define gmp_sprintf __gmp_sprintf +__GMP_DECLSPEC int gmp_sprintf (char *, const char *, ...); + +#define gmp_vasprintf __gmp_vasprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vasprintf (char **, const char *, va_list); +#endif + +#define gmp_vfprintf __gmp_vfprintf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfprintf (FILE *, const char *, va_list); +#endif + +#define gmp_vprintf __gmp_vprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vprintf (const char *, va_list); +#endif + +#define gmp_vsnprintf __gmp_vsnprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsnprintf (char *, size_t, const char *, va_list); +#endif + +#define gmp_vsprintf __gmp_vsprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsprintf (char *, const char *, va_list); +#endif + + +/**************** Formatted input routines. ****************/ + +#define gmp_fscanf __gmp_fscanf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fscanf (FILE *, const char *, ...); +#endif + +#define gmp_scanf __gmp_scanf +__GMP_DECLSPEC int gmp_scanf (const char *, ...); + +#define gmp_sscanf __gmp_sscanf +__GMP_DECLSPEC int gmp_sscanf (const char *, const char *, ...); + +#define gmp_vfscanf __gmp_vfscanf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfscanf (FILE *, const char *, va_list); +#endif + +#define gmp_vscanf __gmp_vscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vscanf (const char *, va_list); +#endif + +#define gmp_vsscanf __gmp_vsscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsscanf (const char *, const char *, va_list); +#endif + + +/**************** Integer (i.e. Z) routines. ****************/ + +#define _mpz_realloc __gmpz_realloc +#define mpz_realloc __gmpz_realloc +__GMP_DECLSPEC void *_mpz_realloc (mpz_ptr, mp_size_t); + +#define mpz_abs __gmpz_abs +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs) +__GMP_DECLSPEC void mpz_abs (mpz_ptr, mpz_srcptr); +#endif + +#define mpz_add __gmpz_add +__GMP_DECLSPEC void mpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_add_ui __gmpz_add_ui +__GMP_DECLSPEC void mpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_addmul __gmpz_addmul +__GMP_DECLSPEC void mpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_addmul_ui __gmpz_addmul_ui +__GMP_DECLSPEC void mpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_and __gmpz_and +__GMP_DECLSPEC void mpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_array_init __gmpz_array_init +__GMP_DECLSPEC void mpz_array_init (mpz_ptr, mp_size_t, mp_size_t); + +#define mpz_bin_ui __gmpz_bin_ui +__GMP_DECLSPEC void mpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_bin_uiui __gmpz_bin_uiui +__GMP_DECLSPEC void mpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int); + +#define mpz_cdiv_q __gmpz_cdiv_q +__GMP_DECLSPEC void mpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp +__GMP_DECLSPEC void mpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_cdiv_qr __gmpz_cdiv_qr +__GMP_DECLSPEC void mpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_cdiv_r __gmpz_cdiv_r +__GMP_DECLSPEC void mpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp +__GMP_DECLSPEC void mpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_cdiv_ui __gmpz_cdiv_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE; + +#define mpz_clear __gmpz_clear +__GMP_DECLSPEC void mpz_clear (mpz_ptr); + +#define mpz_clears __gmpz_clears +__GMP_DECLSPEC void mpz_clears (mpz_ptr, ...); + +#define mpz_clrbit __gmpz_clrbit +__GMP_DECLSPEC void mpz_clrbit (mpz_ptr, mp_bitcnt_t); + +#define mpz_cmp __gmpz_cmp +__GMP_DECLSPEC int mpz_cmp (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmp_d __gmpz_cmp_d +__GMP_DECLSPEC int mpz_cmp_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_si __gmpz_cmp_si +__GMP_DECLSPEC int _mpz_cmp_si (mpz_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_ui __gmpz_cmp_ui +__GMP_DECLSPEC int _mpz_cmp_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs __gmpz_cmpabs +__GMP_DECLSPEC int mpz_cmpabs (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_d __gmpz_cmpabs_d +__GMP_DECLSPEC int mpz_cmpabs_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_ui __gmpz_cmpabs_ui +__GMP_DECLSPEC int mpz_cmpabs_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_com __gmpz_com +__GMP_DECLSPEC void mpz_com (mpz_ptr, mpz_srcptr); + +#define mpz_combit __gmpz_combit +__GMP_DECLSPEC void mpz_combit (mpz_ptr, mp_bitcnt_t); + +#define mpz_congruent_p __gmpz_congruent_p +__GMP_DECLSPEC int mpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p +__GMP_DECLSPEC int mpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_ui_p __gmpz_congruent_ui_p +__GMP_DECLSPEC int mpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __GMP_ATTRIBUTE_PURE; + +#define mpz_divexact __gmpz_divexact +__GMP_DECLSPEC void mpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_divexact_ui __gmpz_divexact_ui +__GMP_DECLSPEC void mpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long); + +#define mpz_divisible_p __gmpz_divisible_p +__GMP_DECLSPEC int mpz_divisible_p (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_ui_p __gmpz_divisible_ui_p +__GMP_DECLSPEC int mpz_divisible_ui_p (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p +__GMP_DECLSPEC int mpz_divisible_2exp_p (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_dump __gmpz_dump +__GMP_DECLSPEC void mpz_dump (mpz_srcptr); + +#define mpz_export __gmpz_export +__GMP_DECLSPEC void *mpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr); + +#define mpz_fac_ui __gmpz_fac_ui +__GMP_DECLSPEC void mpz_fac_ui (mpz_ptr, unsigned long int); + +#define mpz_2fac_ui __gmpz_2fac_ui +__GMP_DECLSPEC void mpz_2fac_ui (mpz_ptr, unsigned long int); + +#define mpz_mfac_uiui __gmpz_mfac_uiui +__GMP_DECLSPEC void mpz_mfac_uiui (mpz_ptr, unsigned long int, unsigned long int); + +#define mpz_primorial_ui __gmpz_primorial_ui +__GMP_DECLSPEC void mpz_primorial_ui (mpz_ptr, unsigned long int); + +#define mpz_fdiv_q __gmpz_fdiv_q +__GMP_DECLSPEC void mpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp +__GMP_DECLSPEC void mpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_fdiv_qr __gmpz_fdiv_qr +__GMP_DECLSPEC void mpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_fdiv_r __gmpz_fdiv_r +__GMP_DECLSPEC void mpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp +__GMP_DECLSPEC void mpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_fdiv_ui __gmpz_fdiv_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE; + +#define mpz_fib_ui __gmpz_fib_ui +__GMP_DECLSPEC void mpz_fib_ui (mpz_ptr, unsigned long int); + +#define mpz_fib2_ui __gmpz_fib2_ui +__GMP_DECLSPEC void mpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int); + +#define mpz_fits_sint_p __gmpz_fits_sint_p +__GMP_DECLSPEC int mpz_fits_sint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_slong_p __gmpz_fits_slong_p +__GMP_DECLSPEC int mpz_fits_slong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_sshort_p __gmpz_fits_sshort_p +__GMP_DECLSPEC int mpz_fits_sshort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_uint_p __gmpz_fits_uint_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_DECLSPEC int mpz_fits_uint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ulong_p __gmpz_fits_ulong_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_DECLSPEC int mpz_fits_ulong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ushort_p __gmpz_fits_ushort_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_DECLSPEC int mpz_fits_ushort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_gcd __gmpz_gcd +__GMP_DECLSPEC void mpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_gcd_ui __gmpz_gcd_ui +__GMP_DECLSPEC unsigned long int mpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_gcdext __gmpz_gcdext +__GMP_DECLSPEC void mpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_get_d __gmpz_get_d +__GMP_DECLSPEC double mpz_get_d (mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_get_d_2exp __gmpz_get_d_2exp +__GMP_DECLSPEC double mpz_get_d_2exp (signed long int *, mpz_srcptr); + +#define mpz_get_si __gmpz_get_si +__GMP_DECLSPEC /* signed */ long int mpz_get_si (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_get_str __gmpz_get_str +__GMP_DECLSPEC char *mpz_get_str (char *, int, mpz_srcptr); + +#define mpz_get_ui __gmpz_get_ui +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui) +__GMP_DECLSPEC unsigned long int mpz_get_ui (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_getlimbn __gmpz_getlimbn +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn) +__GMP_DECLSPEC mp_limb_t mpz_getlimbn (mpz_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_hamdist __gmpz_hamdist +__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_import __gmpz_import +__GMP_DECLSPEC void mpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *); + +#define mpz_init __gmpz_init +__GMP_DECLSPEC void mpz_init (mpz_ptr) __GMP_NOTHROW; + +#define mpz_init2 __gmpz_init2 +__GMP_DECLSPEC void mpz_init2 (mpz_ptr, mp_bitcnt_t); + +#define mpz_inits __gmpz_inits +__GMP_DECLSPEC void mpz_inits (mpz_ptr, ...) __GMP_NOTHROW; + +#define mpz_init_set __gmpz_init_set +__GMP_DECLSPEC void mpz_init_set (mpz_ptr, mpz_srcptr); + +#define mpz_init_set_d __gmpz_init_set_d +__GMP_DECLSPEC void mpz_init_set_d (mpz_ptr, double); + +#define mpz_init_set_si __gmpz_init_set_si +__GMP_DECLSPEC void mpz_init_set_si (mpz_ptr, signed long int); + +#define mpz_init_set_str __gmpz_init_set_str +__GMP_DECLSPEC int mpz_init_set_str (mpz_ptr, const char *, int); + +#define mpz_init_set_ui __gmpz_init_set_ui +__GMP_DECLSPEC void mpz_init_set_ui (mpz_ptr, unsigned long int); + +#define mpz_inp_raw __gmpz_inp_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_raw (mpz_ptr, FILE *); +#endif + +#define mpz_inp_str __gmpz_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_str (mpz_ptr, FILE *, int); +#endif + +#define mpz_invert __gmpz_invert +__GMP_DECLSPEC int mpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_ior __gmpz_ior +__GMP_DECLSPEC void mpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_jacobi __gmpz_jacobi +__GMP_DECLSPEC int mpz_jacobi (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker mpz_jacobi /* alias */ + +#define mpz_kronecker_si __gmpz_kronecker_si +__GMP_DECLSPEC int mpz_kronecker_si (mpz_srcptr, long) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker_ui __gmpz_kronecker_ui +__GMP_DECLSPEC int mpz_kronecker_ui (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE; + +#define mpz_si_kronecker __gmpz_si_kronecker +__GMP_DECLSPEC int mpz_si_kronecker (long, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_kronecker __gmpz_ui_kronecker +__GMP_DECLSPEC int mpz_ui_kronecker (unsigned long, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_lcm __gmpz_lcm +__GMP_DECLSPEC void mpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_lcm_ui __gmpz_lcm_ui +__GMP_DECLSPEC void mpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long); + +#define mpz_legendre mpz_jacobi /* alias */ + +#define mpz_lucnum_ui __gmpz_lucnum_ui +__GMP_DECLSPEC void mpz_lucnum_ui (mpz_ptr, unsigned long int); + +#define mpz_lucnum2_ui __gmpz_lucnum2_ui +__GMP_DECLSPEC void mpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int); + +#define mpz_millerrabin __gmpz_millerrabin +__GMP_DECLSPEC int mpz_millerrabin (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE; + +#define mpz_mod __gmpz_mod +__GMP_DECLSPEC void mpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */ + +#define mpz_mul __gmpz_mul +__GMP_DECLSPEC void mpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_mul_2exp __gmpz_mul_2exp +__GMP_DECLSPEC void mpz_mul_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_mul_si __gmpz_mul_si +__GMP_DECLSPEC void mpz_mul_si (mpz_ptr, mpz_srcptr, long int); + +#define mpz_mul_ui __gmpz_mul_ui +__GMP_DECLSPEC void mpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_neg __gmpz_neg +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg) +__GMP_DECLSPEC void mpz_neg (mpz_ptr, mpz_srcptr); +#endif + +#define mpz_nextprime __gmpz_nextprime +__GMP_DECLSPEC void mpz_nextprime (mpz_ptr, mpz_srcptr); + +#define mpz_out_raw __gmpz_out_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_raw (FILE *, mpz_srcptr); +#endif + +#define mpz_out_str __gmpz_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr); +#endif + +#define mpz_perfect_power_p __gmpz_perfect_power_p +__GMP_DECLSPEC int mpz_perfect_power_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_perfect_square_p __gmpz_perfect_square_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_DECLSPEC int mpz_perfect_square_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_popcount __gmpz_popcount +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount) +__GMP_DECLSPEC mp_bitcnt_t mpz_popcount (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_pow_ui __gmpz_pow_ui +__GMP_DECLSPEC void mpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_powm __gmpz_powm +__GMP_DECLSPEC void mpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr); + +#define mpz_powm_sec __gmpz_powm_sec +__GMP_DECLSPEC void mpz_powm_sec (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr); + +#define mpz_powm_ui __gmpz_powm_ui +__GMP_DECLSPEC void mpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr); + +#define mpz_probab_prime_p __gmpz_probab_prime_p +__GMP_DECLSPEC int mpz_probab_prime_p (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE; + +#define mpz_random __gmpz_random +__GMP_DECLSPEC void mpz_random (mpz_ptr, mp_size_t); + +#define mpz_random2 __gmpz_random2 +__GMP_DECLSPEC void mpz_random2 (mpz_ptr, mp_size_t); + +#define mpz_realloc2 __gmpz_realloc2 +__GMP_DECLSPEC void mpz_realloc2 (mpz_ptr, mp_bitcnt_t); + +#define mpz_remove __gmpz_remove +__GMP_DECLSPEC mp_bitcnt_t mpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_root __gmpz_root +__GMP_DECLSPEC int mpz_root (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_rootrem __gmpz_rootrem +__GMP_DECLSPEC void mpz_rootrem (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_rrandomb __gmpz_rrandomb +__GMP_DECLSPEC void mpz_rrandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t); + +#define mpz_scan0 __gmpz_scan0 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_scan1 __gmpz_scan1 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_set __gmpz_set +__GMP_DECLSPEC void mpz_set (mpz_ptr, mpz_srcptr); + +#define mpz_set_d __gmpz_set_d +__GMP_DECLSPEC void mpz_set_d (mpz_ptr, double); + +#define mpz_set_f __gmpz_set_f +__GMP_DECLSPEC void mpz_set_f (mpz_ptr, mpf_srcptr); + +#define mpz_set_q __gmpz_set_q +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q) +__GMP_DECLSPEC void mpz_set_q (mpz_ptr, mpq_srcptr); +#endif + +#define mpz_set_si __gmpz_set_si +__GMP_DECLSPEC void mpz_set_si (mpz_ptr, signed long int); + +#define mpz_set_str __gmpz_set_str +__GMP_DECLSPEC int mpz_set_str (mpz_ptr, const char *, int); + +#define mpz_set_ui __gmpz_set_ui +__GMP_DECLSPEC void mpz_set_ui (mpz_ptr, unsigned long int); + +#define mpz_setbit __gmpz_setbit +__GMP_DECLSPEC void mpz_setbit (mpz_ptr, mp_bitcnt_t); + +#define mpz_size __gmpz_size +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size) +__GMP_DECLSPEC size_t mpz_size (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_sizeinbase __gmpz_sizeinbase +__GMP_DECLSPEC size_t mpz_sizeinbase (mpz_srcptr, int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_sqrt __gmpz_sqrt +__GMP_DECLSPEC void mpz_sqrt (mpz_ptr, mpz_srcptr); + +#define mpz_sqrtrem __gmpz_sqrtrem +__GMP_DECLSPEC void mpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr); + +#define mpz_sub __gmpz_sub +__GMP_DECLSPEC void mpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_sub_ui __gmpz_sub_ui +__GMP_DECLSPEC void mpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_ui_sub __gmpz_ui_sub +__GMP_DECLSPEC void mpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr); + +#define mpz_submul __gmpz_submul +__GMP_DECLSPEC void mpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_submul_ui __gmpz_submul_ui +__GMP_DECLSPEC void mpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_swap __gmpz_swap +__GMP_DECLSPEC void mpz_swap (mpz_ptr, mpz_ptr) __GMP_NOTHROW; + +#define mpz_tdiv_ui __gmpz_tdiv_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE; + +#define mpz_tdiv_q __gmpz_tdiv_q +__GMP_DECLSPEC void mpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp +__GMP_DECLSPEC void mpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_tdiv_qr __gmpz_tdiv_qr +__GMP_DECLSPEC void mpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_tdiv_r __gmpz_tdiv_r +__GMP_DECLSPEC void mpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp +__GMP_DECLSPEC void mpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_tstbit __gmpz_tstbit +__GMP_DECLSPEC int mpz_tstbit (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_pow_ui __gmpz_ui_pow_ui +__GMP_DECLSPEC void mpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int); + +#define mpz_urandomb __gmpz_urandomb +__GMP_DECLSPEC void mpz_urandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t); + +#define mpz_urandomm __gmpz_urandomm +__GMP_DECLSPEC void mpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_srcptr); + +#define mpz_xor __gmpz_xor +#define mpz_eor __gmpz_xor +__GMP_DECLSPEC void mpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_limbs_read __gmpz_limbs_read +__GMP_DECLSPEC mp_srcptr mpz_limbs_read (mpz_srcptr); + +#define mpz_limbs_write __gmpz_limbs_write +__GMP_DECLSPEC mp_ptr mpz_limbs_write (mpz_ptr, mp_size_t); + +#define mpz_limbs_modify __gmpz_limbs_modify +__GMP_DECLSPEC mp_ptr mpz_limbs_modify (mpz_ptr, mp_size_t); + +#define mpz_limbs_finish __gmpz_limbs_finish +__GMP_DECLSPEC void mpz_limbs_finish (mpz_ptr, mp_size_t); + +#define mpz_roinit_n __gmpz_roinit_n +__GMP_DECLSPEC mpz_srcptr mpz_roinit_n (mpz_ptr, mp_srcptr, mp_size_t); + +#define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }} + +/**************** Rational (i.e. Q) routines. ****************/ + +#define mpq_abs __gmpq_abs +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs) +__GMP_DECLSPEC void mpq_abs (mpq_ptr, mpq_srcptr); +#endif + +#define mpq_add __gmpq_add +__GMP_DECLSPEC void mpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr); + +#define mpq_canonicalize __gmpq_canonicalize +__GMP_DECLSPEC void mpq_canonicalize (mpq_ptr); + +#define mpq_clear __gmpq_clear +__GMP_DECLSPEC void mpq_clear (mpq_ptr); + +#define mpq_clears __gmpq_clears +__GMP_DECLSPEC void mpq_clears (mpq_ptr, ...); + +#define mpq_cmp __gmpq_cmp +__GMP_DECLSPEC int mpq_cmp (mpq_srcptr, mpq_srcptr) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_si __gmpq_cmp_si +__GMP_DECLSPEC int _mpq_cmp_si (mpq_srcptr, long, unsigned long) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_ui __gmpq_cmp_ui +__GMP_DECLSPEC int _mpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __GMP_ATTRIBUTE_PURE; + +#define mpq_cmp_z __gmpq_cmp_z +__GMP_DECLSPEC int mpq_cmp_z (mpq_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpq_div __gmpq_div +__GMP_DECLSPEC void mpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr); + +#define mpq_div_2exp __gmpq_div_2exp +__GMP_DECLSPEC void mpq_div_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t); + +#define mpq_equal __gmpq_equal +__GMP_DECLSPEC int mpq_equal (mpq_srcptr, mpq_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpq_get_num __gmpq_get_num +__GMP_DECLSPEC void mpq_get_num (mpz_ptr, mpq_srcptr); + +#define mpq_get_den __gmpq_get_den +__GMP_DECLSPEC void mpq_get_den (mpz_ptr, mpq_srcptr); + +#define mpq_get_d __gmpq_get_d +__GMP_DECLSPEC double mpq_get_d (mpq_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpq_get_str __gmpq_get_str +__GMP_DECLSPEC char *mpq_get_str (char *, int, mpq_srcptr); + +#define mpq_init __gmpq_init +__GMP_DECLSPEC void mpq_init (mpq_ptr); + +#define mpq_inits __gmpq_inits +__GMP_DECLSPEC void mpq_inits (mpq_ptr, ...); + +#define mpq_inp_str __gmpq_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_inp_str (mpq_ptr, FILE *, int); +#endif + +#define mpq_inv __gmpq_inv +__GMP_DECLSPEC void mpq_inv (mpq_ptr, mpq_srcptr); + +#define mpq_mul __gmpq_mul +__GMP_DECLSPEC void mpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr); + +#define mpq_mul_2exp __gmpq_mul_2exp +__GMP_DECLSPEC void mpq_mul_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t); + +#define mpq_neg __gmpq_neg +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg) +__GMP_DECLSPEC void mpq_neg (mpq_ptr, mpq_srcptr); +#endif + +#define mpq_out_str __gmpq_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_out_str (FILE *, int, mpq_srcptr); +#endif + +#define mpq_set __gmpq_set +__GMP_DECLSPEC void mpq_set (mpq_ptr, mpq_srcptr); + +#define mpq_set_d __gmpq_set_d +__GMP_DECLSPEC void mpq_set_d (mpq_ptr, double); + +#define mpq_set_den __gmpq_set_den +__GMP_DECLSPEC void mpq_set_den (mpq_ptr, mpz_srcptr); + +#define mpq_set_f __gmpq_set_f +__GMP_DECLSPEC void mpq_set_f (mpq_ptr, mpf_srcptr); + +#define mpq_set_num __gmpq_set_num +__GMP_DECLSPEC void mpq_set_num (mpq_ptr, mpz_srcptr); + +#define mpq_set_si __gmpq_set_si +__GMP_DECLSPEC void mpq_set_si (mpq_ptr, signed long int, unsigned long int); + +#define mpq_set_str __gmpq_set_str +__GMP_DECLSPEC int mpq_set_str (mpq_ptr, const char *, int); + +#define mpq_set_ui __gmpq_set_ui +__GMP_DECLSPEC void mpq_set_ui (mpq_ptr, unsigned long int, unsigned long int); + +#define mpq_set_z __gmpq_set_z +__GMP_DECLSPEC void mpq_set_z (mpq_ptr, mpz_srcptr); + +#define mpq_sub __gmpq_sub +__GMP_DECLSPEC void mpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr); + +#define mpq_swap __gmpq_swap +__GMP_DECLSPEC void mpq_swap (mpq_ptr, mpq_ptr) __GMP_NOTHROW; + + +/**************** Float (i.e. F) routines. ****************/ + +#define mpf_abs __gmpf_abs +__GMP_DECLSPEC void mpf_abs (mpf_ptr, mpf_srcptr); + +#define mpf_add __gmpf_add +__GMP_DECLSPEC void mpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_add_ui __gmpf_add_ui +__GMP_DECLSPEC void mpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int); +#define mpf_ceil __gmpf_ceil +__GMP_DECLSPEC void mpf_ceil (mpf_ptr, mpf_srcptr); + +#define mpf_clear __gmpf_clear +__GMP_DECLSPEC void mpf_clear (mpf_ptr); + +#define mpf_clears __gmpf_clears +__GMP_DECLSPEC void mpf_clears (mpf_ptr, ...); + +#define mpf_cmp __gmpf_cmp +__GMP_DECLSPEC int mpf_cmp (mpf_srcptr, mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_z __gmpf_cmp_z +__GMP_DECLSPEC int mpf_cmp_z (mpf_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_d __gmpf_cmp_d +__GMP_DECLSPEC int mpf_cmp_d (mpf_srcptr, double) __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_si __gmpf_cmp_si +__GMP_DECLSPEC int mpf_cmp_si (mpf_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_ui __gmpf_cmp_ui +__GMP_DECLSPEC int mpf_cmp_ui (mpf_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_div __gmpf_div +__GMP_DECLSPEC void mpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_div_2exp __gmpf_div_2exp +__GMP_DECLSPEC void mpf_div_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t); + +#define mpf_div_ui __gmpf_div_ui +__GMP_DECLSPEC void mpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int); + +#define mpf_dump __gmpf_dump +__GMP_DECLSPEC void mpf_dump (mpf_srcptr); + +#define mpf_eq __gmpf_eq +__GMP_DECLSPEC int mpf_eq (mpf_srcptr, mpf_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sint_p __gmpf_fits_sint_p +__GMP_DECLSPEC int mpf_fits_sint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_slong_p __gmpf_fits_slong_p +__GMP_DECLSPEC int mpf_fits_slong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sshort_p __gmpf_fits_sshort_p +__GMP_DECLSPEC int mpf_fits_sshort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_uint_p __gmpf_fits_uint_p +__GMP_DECLSPEC int mpf_fits_uint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ulong_p __gmpf_fits_ulong_p +__GMP_DECLSPEC int mpf_fits_ulong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ushort_p __gmpf_fits_ushort_p +__GMP_DECLSPEC int mpf_fits_ushort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_floor __gmpf_floor +__GMP_DECLSPEC void mpf_floor (mpf_ptr, mpf_srcptr); + +#define mpf_get_d __gmpf_get_d +__GMP_DECLSPEC double mpf_get_d (mpf_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpf_get_d_2exp __gmpf_get_d_2exp +__GMP_DECLSPEC double mpf_get_d_2exp (signed long int *, mpf_srcptr); + +#define mpf_get_default_prec __gmpf_get_default_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec (void) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_prec __gmpf_get_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_si __gmpf_get_si +__GMP_DECLSPEC long mpf_get_si (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_str __gmpf_get_str +__GMP_DECLSPEC char *mpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr); + +#define mpf_get_ui __gmpf_get_ui +__GMP_DECLSPEC unsigned long mpf_get_ui (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_init __gmpf_init +__GMP_DECLSPEC void mpf_init (mpf_ptr); + +#define mpf_init2 __gmpf_init2 +__GMP_DECLSPEC void mpf_init2 (mpf_ptr, mp_bitcnt_t); + +#define mpf_inits __gmpf_inits +__GMP_DECLSPEC void mpf_inits (mpf_ptr, ...); + +#define mpf_init_set __gmpf_init_set +__GMP_DECLSPEC void mpf_init_set (mpf_ptr, mpf_srcptr); + +#define mpf_init_set_d __gmpf_init_set_d +__GMP_DECLSPEC void mpf_init_set_d (mpf_ptr, double); + +#define mpf_init_set_si __gmpf_init_set_si +__GMP_DECLSPEC void mpf_init_set_si (mpf_ptr, signed long int); + +#define mpf_init_set_str __gmpf_init_set_str +__GMP_DECLSPEC int mpf_init_set_str (mpf_ptr, const char *, int); + +#define mpf_init_set_ui __gmpf_init_set_ui +__GMP_DECLSPEC void mpf_init_set_ui (mpf_ptr, unsigned long int); + +#define mpf_inp_str __gmpf_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_inp_str (mpf_ptr, FILE *, int); +#endif + +#define mpf_integer_p __gmpf_integer_p +__GMP_DECLSPEC int mpf_integer_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_mul __gmpf_mul +__GMP_DECLSPEC void mpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_mul_2exp __gmpf_mul_2exp +__GMP_DECLSPEC void mpf_mul_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t); + +#define mpf_mul_ui __gmpf_mul_ui +__GMP_DECLSPEC void mpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int); + +#define mpf_neg __gmpf_neg +__GMP_DECLSPEC void mpf_neg (mpf_ptr, mpf_srcptr); + +#define mpf_out_str __gmpf_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_out_str (FILE *, int, size_t, mpf_srcptr); +#endif + +#define mpf_pow_ui __gmpf_pow_ui +__GMP_DECLSPEC void mpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int); + +#define mpf_random2 __gmpf_random2 +__GMP_DECLSPEC void mpf_random2 (mpf_ptr, mp_size_t, mp_exp_t); + +#define mpf_reldiff __gmpf_reldiff +__GMP_DECLSPEC void mpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_set __gmpf_set +__GMP_DECLSPEC void mpf_set (mpf_ptr, mpf_srcptr); + +#define mpf_set_d __gmpf_set_d +__GMP_DECLSPEC void mpf_set_d (mpf_ptr, double); + +#define mpf_set_default_prec __gmpf_set_default_prec +__GMP_DECLSPEC void mpf_set_default_prec (mp_bitcnt_t) __GMP_NOTHROW; + +#define mpf_set_prec __gmpf_set_prec +__GMP_DECLSPEC void mpf_set_prec (mpf_ptr, mp_bitcnt_t); + +#define mpf_set_prec_raw __gmpf_set_prec_raw +__GMP_DECLSPEC void mpf_set_prec_raw (mpf_ptr, mp_bitcnt_t) __GMP_NOTHROW; + +#define mpf_set_q __gmpf_set_q +__GMP_DECLSPEC void mpf_set_q (mpf_ptr, mpq_srcptr); + +#define mpf_set_si __gmpf_set_si +__GMP_DECLSPEC void mpf_set_si (mpf_ptr, signed long int); + +#define mpf_set_str __gmpf_set_str +__GMP_DECLSPEC int mpf_set_str (mpf_ptr, const char *, int); + +#define mpf_set_ui __gmpf_set_ui +__GMP_DECLSPEC void mpf_set_ui (mpf_ptr, unsigned long int); + +#define mpf_set_z __gmpf_set_z +__GMP_DECLSPEC void mpf_set_z (mpf_ptr, mpz_srcptr); + +#define mpf_size __gmpf_size +__GMP_DECLSPEC size_t mpf_size (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_sqrt __gmpf_sqrt +__GMP_DECLSPEC void mpf_sqrt (mpf_ptr, mpf_srcptr); + +#define mpf_sqrt_ui __gmpf_sqrt_ui +__GMP_DECLSPEC void mpf_sqrt_ui (mpf_ptr, unsigned long int); + +#define mpf_sub __gmpf_sub +__GMP_DECLSPEC void mpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_sub_ui __gmpf_sub_ui +__GMP_DECLSPEC void mpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int); + +#define mpf_swap __gmpf_swap +__GMP_DECLSPEC void mpf_swap (mpf_ptr, mpf_ptr) __GMP_NOTHROW; + +#define mpf_trunc __gmpf_trunc +__GMP_DECLSPEC void mpf_trunc (mpf_ptr, mpf_srcptr); + +#define mpf_ui_div __gmpf_ui_div +__GMP_DECLSPEC void mpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr); + +#define mpf_ui_sub __gmpf_ui_sub +__GMP_DECLSPEC void mpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr); + +#define mpf_urandomb __gmpf_urandomb +__GMP_DECLSPEC void mpf_urandomb (mpf_t, gmp_randstate_t, mp_bitcnt_t); + + +/************ Low level positive-integer (i.e. N) routines. ************/ + +/* This is ugly, but we need to make user calls reach the prefixed function. */ + +#define mpn_add __MPN(add) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add) +__GMP_DECLSPEC mp_limb_t mpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); +#endif + +#define mpn_add_1 __MPN(add_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1) +__GMP_DECLSPEC mp_limb_t mpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW; +#endif + +#define mpn_add_n __MPN(add_n) +__GMP_DECLSPEC mp_limb_t mpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_addmul_1 __MPN(addmul_1) +__GMP_DECLSPEC mp_limb_t mpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_cmp __MPN(cmp) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp) +__GMP_DECLSPEC int mpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpn_zero_p __MPN(zero_p) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_zero_p) +__GMP_DECLSPEC int mpn_zero_p (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpn_divexact_1 __MPN(divexact_1) +__GMP_DECLSPEC void mpn_divexact_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_divexact_by3(dst,src,size) \ + mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0)) + +#define mpn_divexact_by3c __MPN(divexact_by3c) +__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_divmod_1(qp,np,nsize,dlimb) \ + mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb) + +#define mpn_divrem __MPN(divrem) +__GMP_DECLSPEC mp_limb_t mpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t); + +#define mpn_divrem_1 __MPN(divrem_1) +__GMP_DECLSPEC mp_limb_t mpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_divrem_2 __MPN(divrem_2) +__GMP_DECLSPEC mp_limb_t mpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr); + +#define mpn_div_qr_1 __MPN(div_qr_1) +__GMP_DECLSPEC mp_limb_t mpn_div_qr_1 (mp_ptr, mp_limb_t *, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_div_qr_2 __MPN(div_qr_2) +__GMP_DECLSPEC mp_limb_t mpn_div_qr_2 (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr); + +#define mpn_gcd __MPN(gcd) +__GMP_DECLSPEC mp_size_t mpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t); + +#define mpn_gcd_11 __MPN(gcd_11) +__GMP_DECLSPEC mp_limb_t mpn_gcd_11 (mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_gcd_1 __MPN(gcd_1) +__GMP_DECLSPEC mp_limb_t mpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_gcdext_1 __MPN(gcdext_1) +__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t); + +#define mpn_gcdext __MPN(gcdext) +__GMP_DECLSPEC mp_size_t mpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t); + +#define mpn_get_str __MPN(get_str) +__GMP_DECLSPEC size_t mpn_get_str (unsigned char *, int, mp_ptr, mp_size_t); + +#define mpn_hamdist __MPN(hamdist) +__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_lshift __MPN(lshift) +__GMP_DECLSPEC mp_limb_t mpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); + +#define mpn_mod_1 __MPN(mod_1) +__GMP_DECLSPEC mp_limb_t mpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_mul __MPN(mul) +__GMP_DECLSPEC mp_limb_t mpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); + +#define mpn_mul_1 __MPN(mul_1) +__GMP_DECLSPEC mp_limb_t mpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_mul_n __MPN(mul_n) +__GMP_DECLSPEC void mpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_sqr __MPN(sqr) +__GMP_DECLSPEC void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t); + +#define mpn_neg __MPN(neg) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg) +__GMP_DECLSPEC mp_limb_t mpn_neg (mp_ptr, mp_srcptr, mp_size_t); +#endif + +#define mpn_com __MPN(com) +__GMP_DECLSPEC void mpn_com (mp_ptr, mp_srcptr, mp_size_t); + +#define mpn_perfect_square_p __MPN(perfect_square_p) +__GMP_DECLSPEC int mpn_perfect_square_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_perfect_power_p __MPN(perfect_power_p) +__GMP_DECLSPEC int mpn_perfect_power_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_popcount __MPN(popcount) +__GMP_DECLSPEC mp_bitcnt_t mpn_popcount (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_pow_1 __MPN(pow_1) +__GMP_DECLSPEC mp_size_t mpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); + +/* undocumented now, but retained here for upward compatibility */ +#define mpn_preinv_mod_1 __MPN(preinv_mod_1) +__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_random __MPN(random) +__GMP_DECLSPEC void mpn_random (mp_ptr, mp_size_t); + +#define mpn_random2 __MPN(random2) +__GMP_DECLSPEC void mpn_random2 (mp_ptr, mp_size_t); + +#define mpn_rshift __MPN(rshift) +__GMP_DECLSPEC mp_limb_t mpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); + +#define mpn_scan0 __MPN(scan0) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_scan1 __MPN(scan1) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_set_str __MPN(set_str) +__GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int); + +#define mpn_sizeinbase __MPN(sizeinbase) +__GMP_DECLSPEC size_t mpn_sizeinbase (mp_srcptr, mp_size_t, int); + +#define mpn_sqrtrem __MPN(sqrtrem) +__GMP_DECLSPEC mp_size_t mpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t); + +#define mpn_sub __MPN(sub) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub) +__GMP_DECLSPEC mp_limb_t mpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); +#endif + +#define mpn_sub_1 __MPN(sub_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1) +__GMP_DECLSPEC mp_limb_t mpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW; +#endif + +#define mpn_sub_n __MPN(sub_n) +__GMP_DECLSPEC mp_limb_t mpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_submul_1 __MPN(submul_1) +__GMP_DECLSPEC mp_limb_t mpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_tdiv_qr __MPN(tdiv_qr) +__GMP_DECLSPEC void mpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); + +#define mpn_and_n __MPN(and_n) +__GMP_DECLSPEC void mpn_and_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_andn_n __MPN(andn_n) +__GMP_DECLSPEC void mpn_andn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_nand_n __MPN(nand_n) +__GMP_DECLSPEC void mpn_nand_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_ior_n __MPN(ior_n) +__GMP_DECLSPEC void mpn_ior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_iorn_n __MPN(iorn_n) +__GMP_DECLSPEC void mpn_iorn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_nior_n __MPN(nior_n) +__GMP_DECLSPEC void mpn_nior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_xor_n __MPN(xor_n) +__GMP_DECLSPEC void mpn_xor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_xnor_n __MPN(xnor_n) +__GMP_DECLSPEC void mpn_xnor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_copyi __MPN(copyi) +__GMP_DECLSPEC void mpn_copyi (mp_ptr, mp_srcptr, mp_size_t); +#define mpn_copyd __MPN(copyd) +__GMP_DECLSPEC void mpn_copyd (mp_ptr, mp_srcptr, mp_size_t); +#define mpn_zero __MPN(zero) +__GMP_DECLSPEC void mpn_zero (mp_ptr, mp_size_t); + +#define mpn_cnd_add_n __MPN(cnd_add_n) +__GMP_DECLSPEC mp_limb_t mpn_cnd_add_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_cnd_sub_n __MPN(cnd_sub_n) +__GMP_DECLSPEC mp_limb_t mpn_cnd_sub_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_sec_add_1 __MPN(sec_add_1) +__GMP_DECLSPEC mp_limb_t mpn_sec_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); +#define mpn_sec_add_1_itch __MPN(sec_add_1_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_add_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_sub_1 __MPN(sec_sub_1) +__GMP_DECLSPEC mp_limb_t mpn_sec_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); +#define mpn_sec_sub_1_itch __MPN(sec_sub_1_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_sub_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_cnd_swap __MPN(cnd_swap) +__GMP_DECLSPEC void mpn_cnd_swap (mp_limb_t, volatile mp_limb_t *, volatile mp_limb_t *, mp_size_t); + +#define mpn_sec_mul __MPN(sec_mul) +__GMP_DECLSPEC void mpn_sec_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_mul_itch __MPN(sec_mul_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_mul_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_sqr __MPN(sec_sqr) +__GMP_DECLSPEC void mpn_sec_sqr (mp_ptr, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_sqr_itch __MPN(sec_sqr_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_sqr_itch (mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_powm __MPN(sec_powm) +__GMP_DECLSPEC void mpn_sec_powm (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_bitcnt_t, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_powm_itch __MPN(sec_powm_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_powm_itch (mp_size_t, mp_bitcnt_t, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_tabselect __MPN(sec_tabselect) +__GMP_DECLSPEC void mpn_sec_tabselect (volatile mp_limb_t *, volatile const mp_limb_t *, mp_size_t, mp_size_t, mp_size_t); + +#define mpn_sec_div_qr __MPN(sec_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_sec_div_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_div_qr_itch __MPN(sec_div_qr_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_div_qr_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE; +#define mpn_sec_div_r __MPN(sec_div_r) +__GMP_DECLSPEC void mpn_sec_div_r (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_div_r_itch __MPN(sec_div_r_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_div_r_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_invert __MPN(sec_invert) +__GMP_DECLSPEC int mpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitcnt_t, mp_ptr); +#define mpn_sec_invert_itch __MPN(sec_invert_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_invert_itch (mp_size_t) __GMP_ATTRIBUTE_PURE; + + +/**************** mpz inlines ****************/ + +/* The following are provided as inlines where possible, but always exist as + library functions too, for binary compatibility. + + Within gmp itself this inlining generally isn't relied on, since it + doesn't get done for all compilers, whereas if something is worth + inlining then it's worth arranging always. + + There are two styles of inlining here. When the same bit of code is + wanted for the inline as for the library version, then __GMP_FORCE_foo + arranges for that code to be emitted and the __GMP_EXTERN_INLINE + directive suppressed, eg. mpz_fits_uint_p. When a different bit of code + is wanted for the inline than for the library version, then + __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs) +__GMP_EXTERN_INLINE void +mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size); +} +#endif + +#if GMP_NAIL_BITS == 0 +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)); +#else +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \ + || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS))); +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p) +#if ! defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, UINT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p) +#if ! defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, ULONG_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p) +#if ! defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, USHRT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui) +#if ! defined (__GMP_FORCE_mpz_get_ui) +__GMP_EXTERN_INLINE +#endif +unsigned long +mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + mp_ptr __gmp_p = __gmp_z->_mp_d; + mp_size_t __gmp_n = __gmp_z->_mp_size; + mp_limb_t __gmp_l = __gmp_p[0]; + /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings + about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland + C++ 6.0 warnings about condition always true for something like + "ULONG_MAX < GMP_NUMB_MASK". */ +#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB) + /* limb==long and no nails, or limb==longlong, one limb is enough */ + return (__gmp_n != 0 ? __gmp_l : 0); +#else + /* limb==long and nails, need two limbs when available */ + __gmp_n = __GMP_ABS (__gmp_n); + if (__gmp_n <= 1) + return (__gmp_n != 0 ? __gmp_l : 0); + else + return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS); +#endif +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn) +#if ! defined (__GMP_FORCE_mpz_getlimbn) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_result = 0; + if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size))) + __gmp_result = __gmp_z->_mp_d[__gmp_n]; + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg) +__GMP_EXTERN_INLINE void +mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = - __gmp_w->_mp_size; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p) +#if ! defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_perfect_square_p (mpz_srcptr __gmp_a) +{ + mp_size_t __gmp_asize; + int __gmp_result; + + __gmp_asize = __gmp_a->_mp_size; + __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */ + if (__GMP_LIKELY (__gmp_asize > 0)) + __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount) +#if ! defined (__GMP_FORCE_mpz_popcount) +__GMP_EXTERN_INLINE +#endif +mp_bitcnt_t +mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW +{ + mp_size_t __gmp_usize; + mp_bitcnt_t __gmp_result; + + __gmp_usize = __gmp_u->_mp_size; + __gmp_result = (__gmp_usize < 0 ? ~ __GMP_CAST (mp_bitcnt_t, 0) : __GMP_CAST (mp_bitcnt_t, 0)); + if (__GMP_LIKELY (__gmp_usize > 0)) + __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q) +#if ! defined (__GMP_FORCE_mpz_set_q) +__GMP_EXTERN_INLINE +#endif +void +mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u)); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size) +#if ! defined (__GMP_FORCE_mpz_size) +__GMP_EXTERN_INLINE +#endif +size_t +mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + return __GMP_ABS (__gmp_z->_mp_size); +} +#endif + + +/**************** mpq inlines ****************/ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs) +__GMP_EXTERN_INLINE void +mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg) +__GMP_EXTERN_INLINE void +mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; +} +#endif + + +/**************** mpn inlines ****************/ + +/* The comments with __GMPN_ADD_1 below apply here too. + + The test for FUNCTION returning 0 should predict well. If it's assumed + {yp,ysize} will usually have a random number of bits then the high limb + won't be full and a carry out will occur a good deal less than 50% of the + time. + + ysize==0 isn't a documented feature, but is used internally in a few + places. + + Producing cout last stops it using up a register during the main part of + the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))" + doesn't seem able to move the true and false legs of the conditional up + to the two places cout is generated. */ + +#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x; \ + \ + /* ASSERT ((ysize) >= 0); */ \ + /* ASSERT ((xsize) >= (ysize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \ + \ + __gmp_i = (ysize); \ + if (__gmp_i != 0) \ + { \ + if (FUNCTION (wp, xp, yp, __gmp_i)) \ + { \ + do \ + { \ + if (__gmp_i >= (xsize)) \ + { \ + (cout) = 1; \ + goto __gmp_done; \ + } \ + __gmp_x = (xp)[__gmp_i]; \ + } \ + while (TEST); \ + } \ + } \ + if ((wp) != (xp)) \ + __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \ + (cout) = 0; \ + __gmp_done: \ + ; \ + } while (0) + +#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \ + (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0)) +#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \ + (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0)) + + +/* The use of __gmp_i indexing is designed to ensure a compile time src==dst + remains nice and clear to the compiler, so that __GMPN_COPY_REST can + disappear, and the load/add/store gets a chance to become a + read-modify-write on CISC CPUs. + + Alternatives: + + Using a pair of pointers instead of indexing would be possible, but gcc + isn't able to recognise compile-time src==dst in that case, even when the + pointers are incremented more or less together. Other compilers would + very likely have similar difficulty. + + gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or + similar to detect a compile-time src==dst. This works nicely on gcc + 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems + to be always false, for a pointer p. But the current code form seems + good enough for src==dst anyway. + + gcc on x86 as usual doesn't give particularly good flags handling for the + carry/borrow detection. It's tempting to want some multi instruction asm + blocks to help it, and this was tried, but in truth there's only a few + instructions to save and any gain is all too easily lost by register + juggling setting up for the asm. */ + +#if GMP_NAIL_BITS == 0 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r; \ + if (CB (__gmp_r, __gmp_x, (v))) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r; \ + ++__gmp_i; \ + if (!CB (__gmp_r, __gmp_x, 1)) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#if GMP_NAIL_BITS >= 1 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r & GMP_NUMB_MASK; \ + if (__gmp_r >> GMP_NUMB_BITS != 0) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \ + ++__gmp_i; \ + if (__gmp_r >> GMP_NUMB_BITS == 0) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#define __GMPN_ADDCB(r,x,y) ((r) < (y)) +#define __GMPN_SUBCB(r,x,y) ((x) < (y)) + +#define __GMPN_ADD_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB) +#define __GMPN_SUB_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB) + + +/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or + negative. size==0 is allowed. On random data usually only one limb will + need to be examined to get a result, so it's worth having it inline. */ +#define __GMPN_CMP(result, xp, yp, size) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_y; \ + \ + /* ASSERT ((size) >= 0); */ \ + \ + (result) = 0; \ + __gmp_i = (size); \ + while (--__gmp_i >= 0) \ + { \ + __gmp_x = (xp)[__gmp_i]; \ + __gmp_y = (yp)[__gmp_i]; \ + if (__gmp_x != __gmp_y) \ + { \ + /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \ + (result) = (__gmp_x > __gmp_y ? 1 : -1); \ + break; \ + } \ + } \ + } while (0) + + +#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \ + } while (0) +#endif + +/* Copy {src,size} to {dst,size}, starting at "start". This is designed to + keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1, + __GMPN_ADD, etc. */ +#if ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + mp_size_t __gmp_j; \ + /* ASSERT ((size) >= 0); */ \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ + __GMP_CRAY_Pragma ("_CRI ivdep"); \ + for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \ + (dst)[__gmp_j] = (src)[__gmp_j]; \ + } while (0) +#endif + +/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use + mpn_copyi if there's a native version, and if we don't mind demanding + binary compatibility for it (on targets which use it). */ + +#if ! defined (__GMPN_COPY) +#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0) +#endif + + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add) +#if ! defined (__GMP_FORCE_mpn_add) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1) +#if ! defined (__GMP_FORCE_mpn_add_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp) +#if ! defined (__GMP_FORCE_mpn_cmp) +__GMP_EXTERN_INLINE +#endif +int +mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW +{ + int __gmp_result; + __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_zero_p) +#if ! defined (__GMP_FORCE_mpn_zero_p) +__GMP_EXTERN_INLINE +#endif +int +mpn_zero_p (mp_srcptr __gmp_p, mp_size_t __gmp_n) __GMP_NOTHROW +{ + /* if (__GMP_LIKELY (__gmp_n > 0)) */ + do { + if (__gmp_p[--__gmp_n] != 0) + return 0; + } while (__gmp_n != 0); + return 1; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub) +#if ! defined (__GMP_FORCE_mpn_sub) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1) +#if ! defined (__GMP_FORCE_mpn_sub_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg) +#if ! defined (__GMP_FORCE_mpn_neg) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n) +{ + while (*__gmp_up == 0) /* Low zero limbs are unchanged by negation. */ + { + *__gmp_rp = 0; + if (!--__gmp_n) /* All zero */ + return 0; + ++__gmp_up; ++__gmp_rp; + } + + *__gmp_rp = (- *__gmp_up) & GMP_NUMB_MASK; + + if (--__gmp_n) /* Higher limbs get complemented. */ + mpn_com (++__gmp_rp, ++__gmp_up, __gmp_n); + + return 1; +} +#endif + +#if defined (__cplusplus) +} +#endif + + +/* Allow faster testing for negative, zero, and positive. */ +#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) +#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) +#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) + +/* When using GCC, optimize certain common comparisons. */ +#if defined (__GNUC__) && __GNUC__ >= 2 +#define mpz_cmp_ui(Z,UI) \ + (__builtin_constant_p (UI) && (UI) == 0 \ + ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) +#define mpz_cmp_si(Z,SI) \ + (__builtin_constant_p ((SI) >= 0) && (SI) >= 0 \ + ? mpz_cmp_ui (Z, __GMP_CAST (unsigned long, SI)) \ + : _mpz_cmp_si (Z,SI)) +#define mpq_cmp_ui(Q,NUI,DUI) \ + (__builtin_constant_p (NUI) && (NUI) == 0 ? mpq_sgn (Q) \ + : __builtin_constant_p ((NUI) == (DUI)) && (NUI) == (DUI) \ + ? mpz_cmp (mpq_numref (Q), mpq_denref (Q)) \ + : _mpq_cmp_ui (Q,NUI,DUI)) +#define mpq_cmp_si(q,n,d) \ + (__builtin_constant_p ((n) >= 0) && (n) >= 0 \ + ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \ + : _mpq_cmp_si (q, n, d)) +#else +#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) +#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) +#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) +#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d) +#endif + + +/* Using "&" rather than "&&" means these can come out branch-free. Every + mpz_t has at least one limb allocated, so fetching the low limb is always + allowed. */ +#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0])) +#define mpz_even_p(z) (! mpz_odd_p (z)) + + +/**************** C++ routines ****************/ + +#ifdef __cplusplus +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr); +#endif + + +/* Source-level compatibility with GMP 2 and earlier. */ +#define mpn_divmod(qp,np,nsize,dp,dsize) \ + mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize) + +/* Source-level compatibility with GMP 1. */ +#define mpz_mdiv mpz_fdiv_q +#define mpz_mdivmod mpz_fdiv_qr +#define mpz_mmod mpz_fdiv_r +#define mpz_mdiv_ui mpz_fdiv_q_ui +#define mpz_mdivmod_ui(q,r,n,d) \ + (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) +#define mpz_mmod_ui(r,n,d) \ + (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) + +/* Useful synonyms, but not quite compatible with GMP 1. */ +#define mpz_div mpz_fdiv_q +#define mpz_divmod mpz_fdiv_qr +#define mpz_div_ui mpz_fdiv_q_ui +#define mpz_divmod_ui mpz_fdiv_qr_ui +#define mpz_div_2exp mpz_fdiv_q_2exp +#define mpz_mod_2exp mpz_fdiv_r_2exp + +enum +{ + GMP_ERROR_NONE = 0, + GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, + GMP_ERROR_DIVISION_BY_ZERO = 2, + GMP_ERROR_SQRT_OF_NEGATIVE = 4, + GMP_ERROR_INVALID_ARGUMENT = 8 +}; + +/* Define CC and CFLAGS which were used to build this version of GMP */ +#define __GMP_CC "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" +#define __GMP_CFLAGS "-O2 -pedantic -march=armv8-a" + +/* Major version number is the value of __GNU_MP__ too, above. */ +#define __GNU_MP_VERSION 6 +#define __GNU_MP_VERSION_MINOR 2 +#define __GNU_MP_VERSION_PATCHLEVEL 1 +#define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL) + +#define __GMP_H__ +#endif /* __GMP_H__ */ diff --git a/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-maccatalyst/Headers/module.modulemap b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-maccatalyst/Headers/module.modulemap new file mode 100644 index 00000000..d4a18c59 --- /dev/null +++ b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-maccatalyst/Headers/module.modulemap @@ -0,0 +1,4 @@ +module gmp [system][extern_c] { + header "gmp.h" + export * +} diff --git a/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-maccatalyst/libgmp.a b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-maccatalyst/libgmp.a new file mode 100644 index 00000000..cd3efccc --- /dev/null +++ b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-maccatalyst/libgmp.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d433f0ed8b99495ff2087536404ac3ecf9cbacedc0f260fa28b7a39e017185f5 +size 7356776 diff --git a/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-simulator/Headers/gmp.h b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-simulator/Headers/gmp.h index 3fd30559..db976b96 100644 --- a/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-simulator/Headers/gmp.h +++ b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-simulator/Headers/gmp.h @@ -2323,7 +2323,7 @@ enum }; /* Define CC and CFLAGS which were used to build this version of GMP */ -#define __GMP_CC "/Applications/Xcode-14.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" +#define __GMP_CC "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" #define __GMP_CFLAGS "-O2 -pedantic -march=armv8-a" /* Major version number is the value of __GNU_MP__ too, above. */ diff --git a/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-simulator/libgmp.a b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-simulator/libgmp.a index 4d808071..44ed90b1 100644 --- a/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-simulator/libgmp.a +++ b/tuist/GMPSPM/GMP.xcframework/ios-arm64_x86_64-simulator/libgmp.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5fc83bcf1e4175a531b126e4cdee0b784c3b9a98cc9bba5c554f58beff99fd65 -size 6950144 +oid sha256:fe984b4c785ca3110748bed828967c9bc40e37985b15d82c77214c91feda8e4a +size 7032400 diff --git a/tuist/GMPSPM/Package.swift b/tuist/GMPSPM/Package.swift index 394c1534..13818692 100644 --- a/tuist/GMPSPM/Package.swift +++ b/tuist/GMPSPM/Package.swift @@ -5,7 +5,8 @@ import PackageDescription let package = Package( name: "GMP", platforms: [ - .iOS(.v13) + .iOS(.v15), + .macOS(.v12), // No clear, we compile gmp with macabi 15.5 ], products: [ .library( diff --git a/tuist/ProjectDescriptionHelpers/Constants.swift b/tuist/ProjectDescriptionHelpers/Constants.swift index 56362bb0..6477cee6 100644 --- a/tuist/ProjectDescriptionHelpers/Constants.swift +++ b/tuist/ProjectDescriptionHelpers/Constants.swift @@ -1,6 +1,7 @@ import ProjectDescription public enum Constants { + static let developmentRegion = "en" static let availableRegions = [ @@ -13,21 +14,27 @@ public enum Constants { static let sampleAppBaseBundleIdentifier = baseAppBundleIdentifier + ".sample_app" - public static let iOSDeploymentTargetVersion = "13.0" + public static let iOSDeploymentTargetVersion = "15.5" - public static let iOSDeploymentDevices: DeploymentDevice = [.iphone, .ipad] + public static let iOSDeploymentDevices: DeploymentDevice = [.iphone, .ipad, .mac] - public static let deploymentTarget: DeploymentTarget = .iOS(targetVersion: Constants.iOSDeploymentTargetVersion, devices: Constants.iOSDeploymentDevices) + public static let deploymentTarget: DeploymentTarget = .iOS( + targetVersion: Constants.iOSDeploymentTargetVersion, + devices: Constants.iOSDeploymentDevices, + supportsMacDesignedForIOS: false) static let developmentTeam = "" - static let marketingVersion = "0.12.9" + static let marketingVersion = "1.3.1" static var buildNumber: String { get throws { - return "661" + return "719" } } + + public static let nsHumanReadableCopyrightValue = "Copyright © 2019-2023 Olvid SAS" + static let fileHeader = """ /* diff --git a/tuist/ProjectDescriptionHelpers/Project+Templates.swift b/tuist/ProjectDescriptionHelpers/Project+Templates.swift index 7e612c03..95dc5e14 100644 --- a/tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ b/tuist/ProjectDescriptionHelpers/Project+Templates.swift @@ -1,12 +1,14 @@ import ProjectDescription public extension Project { + static func createProject( name: String, packages: [Package], targets: [Target], shouldEnableDefaultResourceSynthesizers: Bool = false ) -> Self { + return .init( name: name, organizationName: "Olvid", @@ -18,8 +20,10 @@ public extension Project { fileHeaderTemplate: .string(Constants.fileHeader), resourceSynthesizers: Self.defaultResourceSynthesizers(shouldEnableDefaultResourceSynthesizers: shouldEnableDefaultResourceSynthesizers) ) + } + private static func defaultOptions() -> Project.Options { return .options(automaticSchemesOptions: .disabled, defaultKnownRegions: Constants.availableRegions, @@ -47,19 +51,19 @@ public extension Project { case .app: let runActionOptions = RunActionOptions.options() - let runEnvironment: [String: String] = [ - "SQLITE_ENABLE_THREAD_ASSERTIONS": "1", - "SQLITE_ENABLE_FILE_ASSERTIONS": "1" + let environmentVariables: [String: EnvironmentVariable] = [ + "SQLITE_ENABLE_THREAD_ASSERTIONS": .init(stringLiteral: "1"), + "SQLITE_ENABLE_FILE_ASSERTIONS": .init(stringLiteral: "1"), ] let launchArguments: [LaunchArgument] = [ .init(name: "-com.apple.CoreData.MigrationDebug 1", isEnabled: true), .init(name: "-com.apple.CoreData.SQLDebug 1", isEnabled: false), - .init(name: "-com.apple.CoreData.ConcurrencyDebug 1", isEnabled: true) + .init(name: "-com.apple.CoreData.ConcurrencyDebug 1", isEnabled: true), + .init(name: "-NSShowNonLocalizedStrings YES", isEnabled: true), ] - let arguments = Arguments(environment: runEnvironment, - launchArguments: launchArguments) + let arguments = Arguments.init(environmentVariables: environmentVariables, launchArguments: launchArguments) let appStoreScheme = Scheme(name: $0.name, shared: true, @@ -89,16 +93,21 @@ public extension Project { .staticFramework, .staticLibrary, .stickerPackExtension, + .systemExtension, .tvTopShelfExtension, .uiTests, .unitTests, + .macro, .watch2App, .watch2Extension, .xpc: return [] + + case .extensionKitExtension: + fatalError("please handle me, case: \($0.product)") @unknown default: - return [] + fatalError("please handle me, case: \($0.product)") } } } diff --git a/tuist/ProjectDescriptionHelpers/Settings+Templates.swift b/tuist/ProjectDescriptionHelpers/Settings+Templates.swift index 99b7fe07..04118c50 100644 --- a/tuist/ProjectDescriptionHelpers/Settings+Templates.swift +++ b/tuist/ProjectDescriptionHelpers/Settings+Templates.swift @@ -2,6 +2,7 @@ import ProjectDescription import Foundation internal extension SettingsDictionary { + func applicationExtensionAPIOnly(_ value: Bool) -> Self { if value { return merging(["APPLICATION_EXTENSION_API_ONLY": .init(booleanLiteral: value)]) @@ -9,6 +10,7 @@ internal extension SettingsDictionary { return self } } + func enableModuleDefinition(moduleName: String) -> Self { return merging([ @@ -25,8 +27,8 @@ internal extension SettingsDictionary { return merging(["GENERATE_INFOPLIST_FILE": false]) } - func disableSwiftLocalizableStringsExtraction() -> Self { - return merging(["SWIFT_EMIT_LOC_STRINGS": false]) + func setSwiftLocalizableStringsExtraction(to bool: Bool) -> Self { + return merging(["SWIFT_EMIT_LOC_STRINGS": .init(booleanLiteral: bool)]) } func assetCompilerAppIcon(name: String) -> Self { @@ -91,7 +93,7 @@ private extension Settings { ] private static let _keysToExcludeForUITargetsFromRecommendedDefaultSettings: Set = [ - "ASSETCATALOG_COMPILER_APPICON_NAME" + "ASSETCATALOG_COMPILER_APPICON_NAME", ] static let defaultSettingsForProjects: DefaultSettings = { @@ -109,14 +111,18 @@ private extension Settings { } public extension Settings { + + static func defaultProjectSettings() -> Self { return defaultProjectSettings(appending: [:]) } + static func defaultProjectSettings( appending base: SettingsDictionary, iOSDeploymentTargetVersion: String = Constants.iOSDeploymentTargetVersion ) -> Self { + let baseSettings: SettingsDictionary = base .injectBaseValues() .automaticCodeSigning(devTeam: Constants.developmentTeam) @@ -124,7 +130,7 @@ public extension Settings { .currentProjectVersion(try! Constants.buildNumber) .iOSDeploymentTargetVersion(iOSDeploymentTargetVersion) .disableInfoPlistGeneration() - .disableSwiftLocalizableStringsExtraction() + .setSwiftLocalizableStringsExtraction(to: true) .swiftActiveCompilationConditions("$(inherited)", "$(OLVID_MODE_SWIFT_ACTIVE_COMPILATION_CONDITIONS)", "$(OLVID_SERVER_SWIFT_ACTIVE_COMPILATION_CONDITIONS)") .excludedFileNames("$(inherited)", "$(OLVID_MODE_EXCLUDED_SOURCE_FILE_NAMES)", "$(OLVID_SERVER_EXCLUDED_SOURCE_FILE_NAMES)") .disableAppleGenericVersioning() @@ -133,6 +139,7 @@ public extension Settings { configurations: defaultConfigurations, defaultSettings: defaultSettingsForProjects) } + static func defaultSPMProjectSettings() -> Self { return .settings(base: [:], @@ -161,27 +168,16 @@ public extension Settings { } private extension Configuration { + private static func modeBaseSettings(activeCompilationConditions: String..., includedSourceFileNames: String..., - excludedSourceFileNames: String..., - enableBonjourInfoPlistAdditions: Bool, - enableRevealInfoPlistAdditions: Bool) -> SettingsDictionary { - if enableRevealInfoPlistAdditions && !enableBonjourInfoPlistAdditions { - preconditionFailure("enableBonjourInfoPlistAdditions should be enable if enabling enableRevealInfoPlistAdditions") - } + excludedSourceFileNames: String...) -> SettingsDictionary { - let excludeRevealSourceFilenames: [String] - - if enableRevealInfoPlistAdditions { - excludeRevealSourceFilenames = [] - } else { - excludeRevealSourceFilenames = ["Reveal*"] - } - - return ["OLVID_MODE_SWIFT_ACTIVE_COMPILATION_CONDITIONS": .array(["$(inherited)"] + activeCompilationConditions), - "OLVID_MODE_INCLUDED_SOURCE_FILE_NAMES": .array(["$(inherited)"] + includedSourceFileNames), - "OLVID_MODE_EXCLUDED_SOURCE_FILE_NAMES": .array(["$(inherited)"] + excludedSourceFileNames + excludeRevealSourceFilenames), - "OLVID_ENABLE_INFO_PLIST_BONJOUR_ADDITIONS": .init(booleanLiteral: enableBonjourInfoPlistAdditions)] + return [ + "OLVID_MODE_SWIFT_ACTIVE_COMPILATION_CONDITIONS": .array(["$(inherited)"] + activeCompilationConditions), + "OLVID_MODE_INCLUDED_SOURCE_FILE_NAMES": .array(["$(inherited)"] + includedSourceFileNames), + "OLVID_MODE_EXCLUDED_SOURCE_FILE_NAMES": .array(["$(inherited)"] + excludedSourceFileNames), + ] } private static func serverBaseSettings(bundleIdentifierSuffix: String, @@ -190,7 +186,6 @@ private extension Configuration { notificationServiceExtensionBundleIdentifier: String, intentsExtensionBundleIdentifier: String, activeCompilationConditions: String..., - harcodedAPIKey: String, serverURL: String, includedSourceFileNames: String..., excludedSourceFileNames: String..., @@ -200,22 +195,23 @@ private extension Configuration { invitationsHost: String, configurationsHost: String, openIDRedirectHost: String) -> SettingsDictionary { - return ["OLVID_PRODUCT_BUNDLE_IDENTIFIER_SERVER_SUFFIX": .string(bundleIdentifierSuffix), - "OLVID_PRODUCT_BUNDLE_DISPLAY_NAME_SERVER_SUFFIX": .string(displayNameSuffix), - "OBV_PRODUCT_BUNDLE_IDENTIFIER_FOR_SHARE_EXTENSION": .string(shareExtensionBundleIdentifier), - "OBV_PRODUCT_BUNDLE_IDENTIFIER_FOR_NOTIFICATION_SERVICE_EXTENSION": .string(notificationServiceExtensionBundleIdentifier), - "OBV_PRODUCT_BUNDLE_IDENTIFIER_FOR_INTENTS_EXTENSION": .string(intentsExtensionBundleIdentifier), - "OLVID_SERVER_SWIFT_ACTIVE_COMPILATION_CONDITIONS": .array(["$(inherited)"] + activeCompilationConditions), - "HARDCODED_API_KEY": .string(harcodedAPIKey), - "OBV_SERVER_URL": .string(serverURL), - "OLVID_SERVER_INCLUDED_SOURCE_FILE_NAMES": .array(["$(inherited)"] + includedSourceFileNames), - "OLVID_SERVER_EXCLUDED_SOURCE_FILE_NAMES": .array(["$(inherited)"] + excludedSourceFileNames), - "OLVID_ASSETCATALOG_COMPILER_APPICON_NAME_SUFFIX": .string(assetCatalogAppIconNameSuffix), - "OBV_DEVELOPMENT_MODE": .init(booleanLiteral: isDevelopmentServerMode), - "OBV_APP_GROUP_IDENTIFIER": .string(appGroupIdentifier), - "OBV_HOST_FOR_INVITATIONS": .string(invitationsHost), - "OBV_HOST_FOR_CONFIGURATIONS": .string(configurationsHost), - "OBV_HOST_FOR_OPENID_REDIRECT": .string(openIDRedirectHost)] + return [ + "OLVID_PRODUCT_BUNDLE_IDENTIFIER_SERVER_SUFFIX": .string(bundleIdentifierSuffix), + "OLVID_PRODUCT_BUNDLE_DISPLAY_NAME_SERVER_SUFFIX": .string(displayNameSuffix), + "OBV_PRODUCT_BUNDLE_IDENTIFIER_FOR_SHARE_EXTENSION": .string(shareExtensionBundleIdentifier), + "OBV_PRODUCT_BUNDLE_IDENTIFIER_FOR_NOTIFICATION_SERVICE_EXTENSION": .string(notificationServiceExtensionBundleIdentifier), + "OBV_PRODUCT_BUNDLE_IDENTIFIER_FOR_INTENTS_EXTENSION": .string(intentsExtensionBundleIdentifier), + "OLVID_SERVER_SWIFT_ACTIVE_COMPILATION_CONDITIONS": .array(["$(inherited)"] + activeCompilationConditions), + "OBV_SERVER_URL": .string(serverURL), + "OLVID_SERVER_INCLUDED_SOURCE_FILE_NAMES": .array(["$(inherited)"] + includedSourceFileNames), + "OLVID_SERVER_EXCLUDED_SOURCE_FILE_NAMES": .array(["$(inherited)"] + excludedSourceFileNames), + "OLVID_ASSETCATALOG_COMPILER_APPICON_NAME_SUFFIX": .string(assetCatalogAppIconNameSuffix), + "OBV_DEVELOPMENT_MODE": .init(booleanLiteral: isDevelopmentServerMode), + "OBV_APP_GROUP_IDENTIFIER": .string(appGroupIdentifier), + "OBV_HOST_FOR_INVITATIONS": .string(invitationsHost), + "OBV_HOST_FOR_CONFIGURATIONS": .string(configurationsHost), + "OBV_HOST_FOR_OPENID_REDIRECT": .string(openIDRedirectHost), + ] } private static let productionServerBase: SettingsDictionary = { @@ -225,7 +221,6 @@ private extension Configuration { notificationServiceExtensionBundleIdentifier: "io.olvid.messenger.extension-notification-service", intentsExtensionBundleIdentifier: "io.olvid.messenger.ObvMessengerIntentsExtension", activeCompilationConditions: "OLVID_SERVER_PRODUCTION", - harcodedAPIKey: "5288afb8-bfe0-2ab9-cb24-7b93a54be5d5", serverURL: "https://server.olvid.io", assetCatalogAppIconNameSuffix: "", isDevelopmentServerMode: false, @@ -234,29 +229,21 @@ private extension Configuration { configurationsHost: "configuration.olvid.io", openIDRedirectHost: "openid-redirect.olvid.io") }() + + static let appStoreDebug: Self = .debug( + name: .appStoreDebug, + settings: modeBaseSettings(activeCompilationConditions: "DEBUG").merging(productionServerBase), + xcconfig: nil) + + static let appStoreRelease: Self = .release( + name: .appStoreRelease, + settings: modeBaseSettings(activeCompilationConditions: "RELEASE").merging(productionServerBase), + xcconfig: nil) - static let appStoreDebug: Self = .debug(name: .appStoreDebug, - settings: modeBaseSettings(activeCompilationConditions: "DEBUG", - excludedSourceFileNames: "RevealServer.xcframework", - enableBonjourInfoPlistAdditions: false, - enableRevealInfoPlistAdditions: false) - .merging(productionServerBase), - xcconfig: nil) - - static let appStoreRelease: Self = .release(name: .appStoreRelease, - settings: modeBaseSettings(activeCompilationConditions: "RELEASE", - excludedSourceFileNames: "RevealServer.xcframework", - enableBonjourInfoPlistAdditions: false, - enableRevealInfoPlistAdditions: false) - .merging(productionServerBase), - xcconfig: nil) } internal extension ConfigurationName { - /// AppStore~Debug static let appStoreDebug: Self = "AppStore~Debug" - - /// AppStore~Release static let appStoreRelease: Self = "AppStore~Release" } diff --git a/tuist/ProjectDescriptionHelpers/Target+Templates.swift b/tuist/ProjectDescriptionHelpers/Target+Templates.swift index 348e588f..6b2bb7b4 100644 --- a/tuist/ProjectDescriptionHelpers/Target+Templates.swift +++ b/tuist/ProjectDescriptionHelpers/Target+Templates.swift @@ -20,16 +20,16 @@ extension Target { resources: ProjectDescription.ResourceFileElements? = nil, copyFiles: [ProjectDescription.CopyFilesAction]? = nil, headers: ProjectDescription.Headers? = nil, - entitlements: ProjectDescription.Path? = nil, + entitlements: ProjectDescription.Entitlements? = nil, scripts: [ProjectDescription.TargetScript] = [], dependencies: [ProjectDescription.TargetDependency] = [], settings: ProjectDescription.Settings? = nil, coreDataModels: [ProjectDescription.CoreDataModel] = [], - environment: [String : String] = [:], + environmentVariables: [String : ProjectDescription.EnvironmentVariable] = [:], launchArguments: [ProjectDescription.LaunchArgument] = [], additionalFiles: [ProjectDescription.FileElement] = [] ) -> Self { - return self.init( + return Self.init( name: name, platform: .iOS, product: product, @@ -46,10 +46,9 @@ extension Target { dependencies: dependencies, settings: settings, coreDataModels: coreDataModels, - environment: environment, + environmentVariables: environmentVariables, launchArguments: launchArguments, - additionalFiles: additionalFiles - ) + additionalFiles: additionalFiles) } public static func mainApp( @@ -58,7 +57,7 @@ extension Target { infoPlist: InfoPlist, sources: SourceFilesList, resources: ResourceFileElements, - entitlements: Path, + entitlements: ProjectDescription.Entitlements, scripts: [ProjectDescription.TargetScript] = [], dependencies: [TargetDependency], settings: ProjectDescription.Settings, @@ -114,7 +113,7 @@ extension Target { infoPlist: InfoPlist, sources: SourceFilesList, resources: ResourceFileElements, - entitlements: Path?, + entitlements: ProjectDescription.Entitlements?, dependencies: [TargetDependency], settings: Settings, coreDataModels: [ProjectDescription.CoreDataModel] diff --git a/tuist/ProjectDescriptionHelpers/TargetDependency+Carthage+Templates.swift b/tuist/ProjectDescriptionHelpers/TargetDependency+Carthage+Templates.swift index 0616750d..23fb6d65 100644 --- a/tuist/ProjectDescriptionHelpers/TargetDependency+Carthage+Templates.swift +++ b/tuist/ProjectDescriptionHelpers/TargetDependency+Carthage+Templates.swift @@ -1,38 +1,60 @@ import ProjectDescription import Foundation + public extension TargetDependency { + enum CarthageDependency: CaseIterable { + /// https://gitlab.com/Olvid/appauthiosmodifiedforolvid/-/tree/modified-for-olvid - case appAuth + //case appAuth + + //case joseSwift public var dependency: CarthageDependencies.Dependency { switch self { - case .appAuth: - return .github(path: "https://github.com/olvid-io/AppAuth-iOS-for-Olvid.git", requirement: .branch("targetfix")) +// case .appAuth: +// // WARNING: When changing this, we must delete the Dependencies directory manually +// return .github(path: "https://github.com/openid/AppAuth-iOS", requirement: .exact(.init(1, 6, 2))) +// //return .github(path: "https://github.com/olvid-io/AppAuth-iOS-for-Olvid.git", requirement: .branch("targetfix")) +//// case .joseSwift: +//// return .github(path: "https://github.com/olvid-io/JOSESwift-for-Olvid", requirement: .branch("targetfix")) +//// // return .github(path: "https://github.com/airsidemobile/JOSESwift.git", requirement: .exact(.init(2, 4, 0))) + } } fileprivate var _productName: String { switch self { - case .appAuth: - return "AppAuth" +// case .appAuth: +// return "AppAuth" +// case .joseSwift: +// return "JOSESwift" } } } + } + public extension TargetDependency { + init(_ carthageDependency: CarthageDependency) { self = .external(name: carthageDependency._productName) } + } + extension CarthageDependencies { + public init(_ dependencies: [TargetDependency.CarthageDependency]) { + let targetDependencies: [CarthageDependencies.Dependency] = dependencies .map(\.dependency) self.init(targetDependencies) + } + } diff --git a/tuist/ProjectDescriptionHelpers/TargetDependency+InternalModules.swift b/tuist/ProjectDescriptionHelpers/TargetDependency+InternalModules.swift index 572a1876..223a702f 100644 --- a/tuist/ProjectDescriptionHelpers/TargetDependency+InternalModules.swift +++ b/tuist/ProjectDescriptionHelpers/TargetDependency+InternalModules.swift @@ -9,6 +9,8 @@ public extension TargetDependency { public static let obvBackupManager: TargetDependency = .project(target: "ObvBackupManager", path: .relativeToRoot("Engine")) + public static let obvSyncSnapshotManager: TargetDependency = .project(target: "ObvSyncSnapshotManager", path: .relativeToRoot("Engine")) + public static let obvChannelManager: TargetDependency = .project(target: "ObvChannelManager", path: .relativeToRoot("Engine")) public static let obvCrypto: TargetDependency = .project(target: "ObvCrypto", path: .relativeToRoot("Engine")) @@ -64,25 +66,23 @@ public extension TargetDependency { } } - public static let attachmentsDropView: TargetDependency = .project(target: "Discussions_AttachmentsDropView", path: .relativeToRoot("Modules/Discussions")) - public static let scrollToBottomButton: TargetDependency = .project(target: "Discussions_ScrollToBottomButton", path: .relativeToRoot("Modules/Discussions")) } + public enum UI { - - public enum CircledInitialsView { - public static let configuration: TargetDependency = .project(target: "UI_CircledInitialsView_CircledInitialsConfiguration", path: .relativeToRoot("Modules/UI")) - } - - public static let systemIcon: TargetDependency = .project(target: "UI_SystemIcon", path: .relativeToRoot("Modules/UI")) - +// public enum CircledInitialsView { +// public static let configuration: TargetDependency = .project(target: "UI_CircledInitialsView_CircledInitialsConfiguration", path: .relativeToRoot("Modules/UI")) +// } + public static let obvCircledInitials: TargetDependency = .project(target: "UI_ObvCircledInitials", path: .relativeToRoot("Modules/UI")) + public static let obvPhotoButton: TargetDependency = .project(target: "UI_ObvPhotoButton", path: .relativeToRoot("Modules/UI")) + public static let systemIcon: TargetDependency = .project(target: "UI_SystemIcon", path: .relativeToRoot("Modules/UI")) public static let systemIconSwiftUI: TargetDependency = .project(target: "UI_SystemIcon_SwiftUI", path: .relativeToRoot("Modules/UI")) - public static let systemIconUIKit: TargetDependency = .project(target: "UI_SystemIcon_UIKit", path: .relativeToRoot("Modules/UI")) - + public static let obvImageEditor: TargetDependency = .project(target: "UI_ObvImageEditor", path: .relativeToRoot("Modules/UI")) } + public enum Platform { public static let base: TargetDependency = .project(target: "Platform_Base", path: .relativeToRoot("Modules/Platform")) @@ -102,5 +102,10 @@ public extension TargetDependency { public static let obvUICoreData: TargetDependency = .project(target: "ObvUICoreData", path: .relativeToRoot("Modules")) public static let olvidUtils: TargetDependency = .project(target: "OlvidUtils", path: .relativeToRoot("Modules")) + + public static let obvDesignSystem: TargetDependency = .project(target: "ObvDesignSystem", path: .relativeToRoot("Modules")) + + public static let obvSettings: TargetDependency = .project(target: "ObvSettings", path: .relativeToRoot("Modules")) + } } diff --git a/tuist/ProjectDescriptionHelpers/TargetDependency+SPM+Templates.swift b/tuist/ProjectDescriptionHelpers/TargetDependency+SPM+Templates.swift index 437bfb37..608d2562 100644 --- a/tuist/ProjectDescriptionHelpers/TargetDependency+SPM+Templates.swift +++ b/tuist/ProjectDescriptionHelpers/TargetDependency+SPM+Templates.swift @@ -2,44 +2,31 @@ import ProjectDescription import Foundation public extension TargetDependency { + enum SPMDependency: CaseIterable { - /// https://github.com/airsidemobile/JOSESwift - case joseSwift - + /// local implementation of GMP case gmp - /// https://github.com/apple/swift-collections - case orderedCollections - public var package: Package { switch self { - case .joseSwift: - return .remote(url: "https://github.com/airsidemobile/JOSESwift.git", requirement: .exact("2.4.0")) case .gmp: - return .local(path: .relativeToRoot("tuist/GMPSPM")) - - case .orderedCollections: - return .remote(url: "https://github.com/apple/swift-collections.git", requirement: .exact("1.0.4")) + return .local(path: .relativeToRoot("Tuist/GMPSPM")) } } fileprivate var _productName: String { switch self { - case .joseSwift: - return "JOSESwift" case .gmp: return "GMP" - case .orderedCollections: - return "OrderedCollections" - } } } + } public extension TargetDependency { @@ -58,6 +45,9 @@ extension SwiftPackageManagerDependencies { } } + /// Although this init is deprecated, we continue to use until Tuist documentation is updated + /// See https://docs.tuist.io/guides/third-party-dependencies + /// As of 2023-11-29, the document appears to be wrong. self.init(uniquedPackages, baseSettings: .defaultSPMProjectSettings()) } diff --git a/tuist/ProjectDescriptionHelpers/TargetDependency+XCFrameworks.swift b/tuist/ProjectDescriptionHelpers/TargetDependency+XCFrameworks.swift index 4ff47df3..48bb9b0c 100644 --- a/tuist/ProjectDescriptionHelpers/TargetDependency+XCFrameworks.swift +++ b/tuist/ProjectDescriptionHelpers/TargetDependency+XCFrameworks.swift @@ -13,7 +13,7 @@ public extension TargetDependency { } fileprivate var path: Path { - return .relativeToRoot("tuist/xcframeworks/".appending(xcFrameworkName)) + return .relativeToRoot("Tuist/xcframeworks/".appending(xcFrameworkName)) } } } diff --git a/tuist/xcframeworks/WebRTC.xcframework/Info.plist b/tuist/xcframeworks/WebRTC.xcframework/Info.plist index 5ac9ef5c..825e5e73 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/Info.plist +++ b/tuist/xcframeworks/WebRTC.xcframework/Info.plist @@ -5,23 +5,24 @@ AvailableLibraries + BinaryPath + WebRTC.framework/WebRTC DebugSymbolsPath dSYMs LibraryIdentifier - ios-arm64_x86_64-simulator + ios-arm64 LibraryPath WebRTC.framework SupportedArchitectures arm64 - x86_64 SupportedPlatform ios - SupportedPlatformVariant - simulator + BinaryPath + WebRTC.framework/Versions/A/WebRTC DebugSymbolsPath dSYMs LibraryIdentifier @@ -39,18 +40,23 @@ maccatalyst + BinaryPath + WebRTC.framework/WebRTC DebugSymbolsPath dSYMs LibraryIdentifier - ios-arm64 + ios-arm64_x86_64-simulator LibraryPath WebRTC.framework SupportedArchitectures arm64 + x86_64 SupportedPlatform ios + SupportedPlatformVariant + simulator CFBundlePackageType diff --git a/tuist/xcframeworks/WebRTC.xcframework/LICENSE.md b/tuist/xcframeworks/WebRTC.xcframework/LICENSE.md index 6d484233..c964e561 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/LICENSE.md +++ b/tuist/xcframeworks/WebRTC.xcframework/LICENSE.md @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a619c92159c23e88f6539fe1d29534dcf3206d2d28db80896a8ac19b02db48d -size 84091 +oid sha256:ae2bd4acd34781701c68902064ed50a48c49053c63cf25450bc3db9ab01cb783 +size 84103 diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCAudioSession.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCAudioSession.h index 0ca137d2..d7f66c65 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCAudioSession.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCAudioSession.h @@ -225,10 +225,14 @@ RTC_OBJC_EXPORT // AVAudioSession. `lockForConfiguration` must be called before using them // otherwise they will fail with kRTCAudioSessionErrorLockRequired. -- (BOOL)setCategory:(NSString *)category +- (BOOL)setCategory:(AVAudioSessionCategory)category + mode:(AVAudioSessionMode)mode + options:(AVAudioSessionCategoryOptions)options + error:(NSError **)outError; +- (BOOL)setCategory:(AVAudioSessionCategory)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError; -- (BOOL)setMode:(NSString *)mode error:(NSError **)outError; +- (BOOL)setMode:(AVAudioSessionMode)mode error:(NSError **)outError; - (BOOL)setInputGain:(float)gain error:(NSError **)outError; - (BOOL)setPreferredSampleRate:(double)sampleRate error:(NSError **)outError; - (BOOL)setPreferredIOBufferDuration:(NSTimeInterval)duration error:(NSError **)outError; diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h index be799203..59fcb758 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h @@ -17,9 +17,7 @@ NS_ASSUME_NONNULL_BEGIN RTC_EXTERN const int kRTCAudioSessionPreferredNumberOfChannels; RTC_EXTERN const double kRTCAudioSessionHighPerformanceSampleRate; -RTC_EXTERN const double kRTCAudioSessionLowComplexitySampleRate; RTC_EXTERN const double kRTCAudioSessionHighPerformanceIOBufferDuration; -RTC_EXTERN const double kRTCAudioSessionLowComplexityIOBufferDuration; // Struct to hold configuration values. RTC_OBJC_EXPORT diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCCallbackLogger.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCCallbackLogger.h index 8def162e..815ea25c 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCCallbackLogger.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCCallbackLogger.h @@ -32,7 +32,7 @@ RTC_OBJC_EXPORT // to implement dispatching to some other queue. - (void)start:(nullable RTCCallbackLoggerMessageHandler)handler; - (void)startWithMessageAndSeverityHandler: - (nullable RTCCallbackLoggerMessageAndSeverityHandler)handler; + (nullable RTCCallbackLoggerMessageAndSeverityHandler)handler; - (void)stop; diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCFieldTrials.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCFieldTrials.h index 4b76da8f..8a7de727 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCFieldTrials.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCFieldTrials.h @@ -14,14 +14,14 @@ /** The only valid value for the following if set is kRTCFieldTrialEnabledValue. */ RTC_EXTERN NSString *const kRTCFieldTrialAudioForceABWENoTWCCKey; -RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03AdvertisedKey; -RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03Key; -RTC_EXTERN NSString * const kRTCFieldTrialH264HighProfileKey; -RTC_EXTERN NSString * const kRTCFieldTrialMinimizeResamplingOnMobileKey; +RTC_EXTERN NSString *const kRTCFieldTrialFlexFec03AdvertisedKey; +RTC_EXTERN NSString *const kRTCFieldTrialFlexFec03Key; +RTC_EXTERN NSString *const kRTCFieldTrialH264HighProfileKey; +RTC_EXTERN NSString *const kRTCFieldTrialMinimizeResamplingOnMobileKey; RTC_EXTERN NSString *const kRTCFieldTrialUseNWPathMonitor; /** The valid value for field trials above. */ -RTC_EXTERN NSString * const kRTCFieldTrialEnabledValue; +RTC_EXTERN NSString *const kRTCFieldTrialEnabledValue; /** Initialize field trials using a dictionary mapping field trial keys to their * values. See above for valid keys and values. Must be called before any other diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCLogging.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCLogging.h index 36f53d83..e8610da0 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCLogging.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCLogging.h @@ -34,9 +34,12 @@ RTC_EXTERN NSString* RTCFileName(const char* filePath); // Some convenience macros. -#define RTCLogString(format, ...) \ - [NSString stringWithFormat:@"(%@:%d %s): " format, RTCFileName(__FILE__), \ - __LINE__, __FUNCTION__, ##__VA_ARGS__] +#define RTCLogString(format, ...) \ + [NSString stringWithFormat:@"(%@:%d %s): " format, \ + RTCFileName(__FILE__), \ + __LINE__, \ + __FUNCTION__, \ + ##__VA_ARGS__] #define RTCLogFormat(severity, format, ...) \ do { \ @@ -44,17 +47,13 @@ RTC_EXTERN NSString* RTCFileName(const char* filePath); RTCLogEx(severity, log_string); \ } while (false) -#define RTCLogVerbose(format, ...) \ - RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__) +#define RTCLogVerbose(format, ...) RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__) -#define RTCLogInfo(format, ...) \ - RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__) +#define RTCLogInfo(format, ...) RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__) -#define RTCLogWarning(format, ...) \ - RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__) +#define RTCLogWarning(format, ...) RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__) -#define RTCLogError(format, ...) \ - RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__) +#define RTCLogError(format, ...) RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__) #if !defined(NDEBUG) #define RTCLogDebug(format, ...) RTCLogInfo(format, ##__VA_ARGS__) diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCMacros.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCMacros.h index 469e3c93..114ced0e 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCMacros.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCMacros.h @@ -36,9 +36,10 @@ // WebRTC.framework with their own prefix in case symbol clashing is a // problem. // -// This macro must only be defined here and not on via compiler flag to -// ensure it has a unique value. +// This macro must be defined uniformily across all the translation units. +#ifndef RTC_OBJC_TYPE_PREFIX #define RTC_OBJC_TYPE_PREFIX +#endif // RCT_OBJC_TYPE // diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCPeerConnection.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCPeerConnection.h index 5b06df82..400069c4 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCPeerConnection.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCPeerConnection.h @@ -82,9 +82,8 @@ typedef NS_ENUM(NSInteger, RTCStatsOutputLevel) { RTCStatsOutputLevelDebug, }; -typedef void (^RTCCreateSessionDescriptionCompletionHandler)(RTC_OBJC_TYPE(RTCSessionDescription) * - _Nullable sdp, - NSError *_Nullable error); +typedef void (^RTCCreateSessionDescriptionCompletionHandler)( + RTC_OBJC_TYPE(RTCSessionDescription) *_Nullable sdp, NSError *_Nullable error); typedef void (^RTCSetSessionDescriptionCompletionHandler)(NSError *_Nullable error); diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCRtpSender.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCRtpSender.h index edea5d83..b0f0e747 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCRtpSender.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCRtpSender.h @@ -21,8 +21,8 @@ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCRtpSender) -/** A unique identifier for this sender. */ -@property(nonatomic, readonly) NSString *senderId; + /** A unique identifier for this sender. */ + @property(nonatomic, readonly) NSString *senderId; /** The currently active RTCRtpParameters, as defined in * https://www.w3.org/TR/webrtc/#idl-def-RTCRtpParameters. diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoDecoder.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoDecoder.h index 9ffde998..32d79a08 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoDecoder.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoDecoder.h @@ -29,6 +29,7 @@ RTC_OBJC_EXPORT - (void)setCallback : (RTCVideoDecoderCallback)callback; - (NSInteger)startDecodeWithNumberOfCores:(int)numberOfCores; - (NSInteger)releaseDecoder; +// TODO(bugs.webrtc.org/15444): Remove obsolete missingFrames param. - (NSInteger)decode:(RTC_OBJC_TYPE(RTCEncodedImage) *)encodedImage missingFrames:(BOOL)missingFrames codecSpecificInfo:(nullable id)info diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoEncoder.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoEncoder.h index 2e921540..0a3a875d 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoEncoder.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoEncoder.h @@ -28,7 +28,7 @@ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCVideoEncoder) -- (void)setCallback:(nullable RTCVideoEncoderCallback)callback; + - (void)setCallback : (nullable RTCVideoEncoderCallback)callback; - (NSInteger)startEncodeWithSettings:(RTC_OBJC_TYPE(RTCVideoEncoderSettings) *)settings numberOfCores:(int)numberOfCores; - (NSInteger)releaseEncoder; diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoFrame.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoFrame.h index 01294f57..a4ef6001 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoFrame.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/RTCVideoFrame.h @@ -45,7 +45,7 @@ RTC_OBJC_EXPORT @property(nonatomic, readonly) id buffer; - (instancetype)init NS_UNAVAILABLE; -- (instancetype) new NS_UNAVAILABLE; +- (instancetype)new NS_UNAVAILABLE; /** Initialize an RTCVideoFrame from a pixel buffer, rotation, and timestamp. * Deprecated - initialize with a RTCCVPixelBuffer instead diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/UIDevice+RTCDevice.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/UIDevice+RTCDevice.h index ab477e2a..4d04f38f 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/UIDevice+RTCDevice.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/UIDevice+RTCDevice.h @@ -10,102 +10,8 @@ #import -typedef NS_ENUM(NSInteger, RTCDeviceType) { - RTCDeviceTypeUnknown, - RTCDeviceTypeIPhone1G, - RTCDeviceTypeIPhone3G, - RTCDeviceTypeIPhone3GS, - RTCDeviceTypeIPhone4, - RTCDeviceTypeIPhone4Verizon, - RTCDeviceTypeIPhone4S, - RTCDeviceTypeIPhone5GSM, - RTCDeviceTypeIPhone5GSM_CDMA, - RTCDeviceTypeIPhone5CGSM, - RTCDeviceTypeIPhone5CGSM_CDMA, - RTCDeviceTypeIPhone5SGSM, - RTCDeviceTypeIPhone5SGSM_CDMA, - RTCDeviceTypeIPhone6Plus, - RTCDeviceTypeIPhone6, - RTCDeviceTypeIPhone6S, - RTCDeviceTypeIPhone6SPlus, - RTCDeviceTypeIPhone7, - RTCDeviceTypeIPhone7Plus, - RTCDeviceTypeIPhoneSE, - RTCDeviceTypeIPhone8, - RTCDeviceTypeIPhone8Plus, - RTCDeviceTypeIPhoneX, - RTCDeviceTypeIPhoneXS, - RTCDeviceTypeIPhoneXSMax, - RTCDeviceTypeIPhoneXR, - RTCDeviceTypeIPhone11, - RTCDeviceTypeIPhone11Pro, - RTCDeviceTypeIPhone11ProMax, - RTCDeviceTypeIPhone12Mini, - RTCDeviceTypeIPhone12, - RTCDeviceTypeIPhone12Pro, - RTCDeviceTypeIPhone12ProMax, - RTCDeviceTypeIPhoneSE2Gen, - RTCDeviceTypeIPhone13, - RTCDeviceTypeIPhone13Mini, - RTCDeviceTypeIPhone13Pro, - RTCDeviceTypeIPhone13ProMax, - - RTCDeviceTypeIPodTouch1G, - RTCDeviceTypeIPodTouch2G, - RTCDeviceTypeIPodTouch3G, - RTCDeviceTypeIPodTouch4G, - RTCDeviceTypeIPodTouch5G, - RTCDeviceTypeIPodTouch6G, - RTCDeviceTypeIPodTouch7G, - RTCDeviceTypeIPad, - RTCDeviceTypeIPad2Wifi, - RTCDeviceTypeIPad2GSM, - RTCDeviceTypeIPad2CDMA, - RTCDeviceTypeIPad2Wifi2, - RTCDeviceTypeIPadMiniWifi, - RTCDeviceTypeIPadMiniGSM, - RTCDeviceTypeIPadMiniGSM_CDMA, - RTCDeviceTypeIPad3Wifi, - RTCDeviceTypeIPad3GSM_CDMA, - RTCDeviceTypeIPad3GSM, - RTCDeviceTypeIPad4Wifi, - RTCDeviceTypeIPad4GSM, - RTCDeviceTypeIPad4GSM_CDMA, - RTCDeviceTypeIPad5, - RTCDeviceTypeIPad6, - RTCDeviceTypeIPadAirWifi, - RTCDeviceTypeIPadAirCellular, - RTCDeviceTypeIPadAirWifiCellular, - RTCDeviceTypeIPadAir2, - RTCDeviceTypeIPadMini2GWifi, - RTCDeviceTypeIPadMini2GCellular, - RTCDeviceTypeIPadMini2GWifiCellular, - RTCDeviceTypeIPadMini3, - RTCDeviceTypeIPadMini4, - RTCDeviceTypeIPadPro9Inch, - RTCDeviceTypeIPadPro12Inch, - RTCDeviceTypeIPadPro12Inch2, - RTCDeviceTypeIPadPro10Inch, - RTCDeviceTypeIPad7Gen10Inch, - RTCDeviceTypeIPadPro3Gen11Inch, - RTCDeviceTypeIPadPro3Gen12Inch, - RTCDeviceTypeIPadPro4Gen11Inch, - RTCDeviceTypeIPadPro4Gen12Inch, - RTCDeviceTypeIPadMini5Gen, - RTCDeviceTypeIPadAir3Gen, - RTCDeviceTypeIPad8, - RTCDeviceTypeIPad9, - RTCDeviceTypeIPadMini6, - RTCDeviceTypeIPadAir4Gen, - RTCDeviceTypeIPadPro5Gen11Inch, - RTCDeviceTypeIPadPro5Gen12Inch, - RTCDeviceTypeSimulatori386, - RTCDeviceTypeSimulatorx86_64, -}; - @interface UIDevice (RTCDevice) -+ (RTCDeviceType)deviceType; -+ (BOOL)isIOS11OrLater; ++ (NSString *)machineName; @end diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Info.plist b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Info.plist index d3daaf9d..c91a1eae 100644 Binary files a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Info.plist and b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/Info.plist differ diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/WebRTC b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/WebRTC index 05f069b4..cd915fb1 100755 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/WebRTC +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64/WebRTC.framework/WebRTC @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f617fee8fb1935d3f684c8af8ab4ab387e764c3268d76d8ba5892419780aa02 -size 7558952 +oid sha256:55caec5ec9d1a6d1444006292c369e60772e1c6b3e980f9e8c5f14ae28f844f2 +size 9647688 diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCAudioSession.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCAudioSession.h index 0ca137d2..d7f66c65 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCAudioSession.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCAudioSession.h @@ -225,10 +225,14 @@ RTC_OBJC_EXPORT // AVAudioSession. `lockForConfiguration` must be called before using them // otherwise they will fail with kRTCAudioSessionErrorLockRequired. -- (BOOL)setCategory:(NSString *)category +- (BOOL)setCategory:(AVAudioSessionCategory)category + mode:(AVAudioSessionMode)mode + options:(AVAudioSessionCategoryOptions)options + error:(NSError **)outError; +- (BOOL)setCategory:(AVAudioSessionCategory)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError; -- (BOOL)setMode:(NSString *)mode error:(NSError **)outError; +- (BOOL)setMode:(AVAudioSessionMode)mode error:(NSError **)outError; - (BOOL)setInputGain:(float)gain error:(NSError **)outError; - (BOOL)setPreferredSampleRate:(double)sampleRate error:(NSError **)outError; - (BOOL)setPreferredIOBufferDuration:(NSTimeInterval)duration error:(NSError **)outError; diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCAudioSessionConfiguration.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCAudioSessionConfiguration.h index be799203..59fcb758 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCAudioSessionConfiguration.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCAudioSessionConfiguration.h @@ -17,9 +17,7 @@ NS_ASSUME_NONNULL_BEGIN RTC_EXTERN const int kRTCAudioSessionPreferredNumberOfChannels; RTC_EXTERN const double kRTCAudioSessionHighPerformanceSampleRate; -RTC_EXTERN const double kRTCAudioSessionLowComplexitySampleRate; RTC_EXTERN const double kRTCAudioSessionHighPerformanceIOBufferDuration; -RTC_EXTERN const double kRTCAudioSessionLowComplexityIOBufferDuration; // Struct to hold configuration values. RTC_OBJC_EXPORT diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCCallbackLogger.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCCallbackLogger.h index 8def162e..815ea25c 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCCallbackLogger.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCCallbackLogger.h @@ -32,7 +32,7 @@ RTC_OBJC_EXPORT // to implement dispatching to some other queue. - (void)start:(nullable RTCCallbackLoggerMessageHandler)handler; - (void)startWithMessageAndSeverityHandler: - (nullable RTCCallbackLoggerMessageAndSeverityHandler)handler; + (nullable RTCCallbackLoggerMessageAndSeverityHandler)handler; - (void)stop; diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCFieldTrials.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCFieldTrials.h index 4b76da8f..8a7de727 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCFieldTrials.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCFieldTrials.h @@ -14,14 +14,14 @@ /** The only valid value for the following if set is kRTCFieldTrialEnabledValue. */ RTC_EXTERN NSString *const kRTCFieldTrialAudioForceABWENoTWCCKey; -RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03AdvertisedKey; -RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03Key; -RTC_EXTERN NSString * const kRTCFieldTrialH264HighProfileKey; -RTC_EXTERN NSString * const kRTCFieldTrialMinimizeResamplingOnMobileKey; +RTC_EXTERN NSString *const kRTCFieldTrialFlexFec03AdvertisedKey; +RTC_EXTERN NSString *const kRTCFieldTrialFlexFec03Key; +RTC_EXTERN NSString *const kRTCFieldTrialH264HighProfileKey; +RTC_EXTERN NSString *const kRTCFieldTrialMinimizeResamplingOnMobileKey; RTC_EXTERN NSString *const kRTCFieldTrialUseNWPathMonitor; /** The valid value for field trials above. */ -RTC_EXTERN NSString * const kRTCFieldTrialEnabledValue; +RTC_EXTERN NSString *const kRTCFieldTrialEnabledValue; /** Initialize field trials using a dictionary mapping field trial keys to their * values. See above for valid keys and values. Must be called before any other diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCLogging.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCLogging.h index 36f53d83..e8610da0 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCLogging.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCLogging.h @@ -34,9 +34,12 @@ RTC_EXTERN NSString* RTCFileName(const char* filePath); // Some convenience macros. -#define RTCLogString(format, ...) \ - [NSString stringWithFormat:@"(%@:%d %s): " format, RTCFileName(__FILE__), \ - __LINE__, __FUNCTION__, ##__VA_ARGS__] +#define RTCLogString(format, ...) \ + [NSString stringWithFormat:@"(%@:%d %s): " format, \ + RTCFileName(__FILE__), \ + __LINE__, \ + __FUNCTION__, \ + ##__VA_ARGS__] #define RTCLogFormat(severity, format, ...) \ do { \ @@ -44,17 +47,13 @@ RTC_EXTERN NSString* RTCFileName(const char* filePath); RTCLogEx(severity, log_string); \ } while (false) -#define RTCLogVerbose(format, ...) \ - RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__) +#define RTCLogVerbose(format, ...) RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__) -#define RTCLogInfo(format, ...) \ - RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__) +#define RTCLogInfo(format, ...) RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__) -#define RTCLogWarning(format, ...) \ - RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__) +#define RTCLogWarning(format, ...) RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__) -#define RTCLogError(format, ...) \ - RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__) +#define RTCLogError(format, ...) RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__) #if !defined(NDEBUG) #define RTCLogDebug(format, ...) RTCLogInfo(format, ##__VA_ARGS__) diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCMacros.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCMacros.h index 469e3c93..114ced0e 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCMacros.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCMacros.h @@ -36,9 +36,10 @@ // WebRTC.framework with their own prefix in case symbol clashing is a // problem. // -// This macro must only be defined here and not on via compiler flag to -// ensure it has a unique value. +// This macro must be defined uniformily across all the translation units. +#ifndef RTC_OBJC_TYPE_PREFIX #define RTC_OBJC_TYPE_PREFIX +#endif // RCT_OBJC_TYPE // diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCPeerConnection.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCPeerConnection.h index 5b06df82..400069c4 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCPeerConnection.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCPeerConnection.h @@ -82,9 +82,8 @@ typedef NS_ENUM(NSInteger, RTCStatsOutputLevel) { RTCStatsOutputLevelDebug, }; -typedef void (^RTCCreateSessionDescriptionCompletionHandler)(RTC_OBJC_TYPE(RTCSessionDescription) * - _Nullable sdp, - NSError *_Nullable error); +typedef void (^RTCCreateSessionDescriptionCompletionHandler)( + RTC_OBJC_TYPE(RTCSessionDescription) *_Nullable sdp, NSError *_Nullable error); typedef void (^RTCSetSessionDescriptionCompletionHandler)(NSError *_Nullable error); diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCRtpSender.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCRtpSender.h index edea5d83..b0f0e747 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCRtpSender.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCRtpSender.h @@ -21,8 +21,8 @@ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCRtpSender) -/** A unique identifier for this sender. */ -@property(nonatomic, readonly) NSString *senderId; + /** A unique identifier for this sender. */ + @property(nonatomic, readonly) NSString *senderId; /** The currently active RTCRtpParameters, as defined in * https://www.w3.org/TR/webrtc/#idl-def-RTCRtpParameters. diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoDecoder.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoDecoder.h index 9ffde998..32d79a08 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoDecoder.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoDecoder.h @@ -29,6 +29,7 @@ RTC_OBJC_EXPORT - (void)setCallback : (RTCVideoDecoderCallback)callback; - (NSInteger)startDecodeWithNumberOfCores:(int)numberOfCores; - (NSInteger)releaseDecoder; +// TODO(bugs.webrtc.org/15444): Remove obsolete missingFrames param. - (NSInteger)decode:(RTC_OBJC_TYPE(RTCEncodedImage) *)encodedImage missingFrames:(BOOL)missingFrames codecSpecificInfo:(nullable id)info diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoEncoder.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoEncoder.h index 2e921540..0a3a875d 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoEncoder.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoEncoder.h @@ -28,7 +28,7 @@ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCVideoEncoder) -- (void)setCallback:(nullable RTCVideoEncoderCallback)callback; + - (void)setCallback : (nullable RTCVideoEncoderCallback)callback; - (NSInteger)startEncodeWithSettings:(RTC_OBJC_TYPE(RTCVideoEncoderSettings) *)settings numberOfCores:(int)numberOfCores; - (NSInteger)releaseEncoder; diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoFrame.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoFrame.h index 01294f57..a4ef6001 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoFrame.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/RTCVideoFrame.h @@ -45,7 +45,7 @@ RTC_OBJC_EXPORT @property(nonatomic, readonly) id buffer; - (instancetype)init NS_UNAVAILABLE; -- (instancetype) new NS_UNAVAILABLE; +- (instancetype)new NS_UNAVAILABLE; /** Initialize an RTCVideoFrame from a pixel buffer, rotation, and timestamp. * Deprecated - initialize with a RTCCVPixelBuffer instead diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/UIDevice+RTCDevice.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/UIDevice+RTCDevice.h index ab477e2a..4d04f38f 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/UIDevice+RTCDevice.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Headers/UIDevice+RTCDevice.h @@ -10,102 +10,8 @@ #import -typedef NS_ENUM(NSInteger, RTCDeviceType) { - RTCDeviceTypeUnknown, - RTCDeviceTypeIPhone1G, - RTCDeviceTypeIPhone3G, - RTCDeviceTypeIPhone3GS, - RTCDeviceTypeIPhone4, - RTCDeviceTypeIPhone4Verizon, - RTCDeviceTypeIPhone4S, - RTCDeviceTypeIPhone5GSM, - RTCDeviceTypeIPhone5GSM_CDMA, - RTCDeviceTypeIPhone5CGSM, - RTCDeviceTypeIPhone5CGSM_CDMA, - RTCDeviceTypeIPhone5SGSM, - RTCDeviceTypeIPhone5SGSM_CDMA, - RTCDeviceTypeIPhone6Plus, - RTCDeviceTypeIPhone6, - RTCDeviceTypeIPhone6S, - RTCDeviceTypeIPhone6SPlus, - RTCDeviceTypeIPhone7, - RTCDeviceTypeIPhone7Plus, - RTCDeviceTypeIPhoneSE, - RTCDeviceTypeIPhone8, - RTCDeviceTypeIPhone8Plus, - RTCDeviceTypeIPhoneX, - RTCDeviceTypeIPhoneXS, - RTCDeviceTypeIPhoneXSMax, - RTCDeviceTypeIPhoneXR, - RTCDeviceTypeIPhone11, - RTCDeviceTypeIPhone11Pro, - RTCDeviceTypeIPhone11ProMax, - RTCDeviceTypeIPhone12Mini, - RTCDeviceTypeIPhone12, - RTCDeviceTypeIPhone12Pro, - RTCDeviceTypeIPhone12ProMax, - RTCDeviceTypeIPhoneSE2Gen, - RTCDeviceTypeIPhone13, - RTCDeviceTypeIPhone13Mini, - RTCDeviceTypeIPhone13Pro, - RTCDeviceTypeIPhone13ProMax, - - RTCDeviceTypeIPodTouch1G, - RTCDeviceTypeIPodTouch2G, - RTCDeviceTypeIPodTouch3G, - RTCDeviceTypeIPodTouch4G, - RTCDeviceTypeIPodTouch5G, - RTCDeviceTypeIPodTouch6G, - RTCDeviceTypeIPodTouch7G, - RTCDeviceTypeIPad, - RTCDeviceTypeIPad2Wifi, - RTCDeviceTypeIPad2GSM, - RTCDeviceTypeIPad2CDMA, - RTCDeviceTypeIPad2Wifi2, - RTCDeviceTypeIPadMiniWifi, - RTCDeviceTypeIPadMiniGSM, - RTCDeviceTypeIPadMiniGSM_CDMA, - RTCDeviceTypeIPad3Wifi, - RTCDeviceTypeIPad3GSM_CDMA, - RTCDeviceTypeIPad3GSM, - RTCDeviceTypeIPad4Wifi, - RTCDeviceTypeIPad4GSM, - RTCDeviceTypeIPad4GSM_CDMA, - RTCDeviceTypeIPad5, - RTCDeviceTypeIPad6, - RTCDeviceTypeIPadAirWifi, - RTCDeviceTypeIPadAirCellular, - RTCDeviceTypeIPadAirWifiCellular, - RTCDeviceTypeIPadAir2, - RTCDeviceTypeIPadMini2GWifi, - RTCDeviceTypeIPadMini2GCellular, - RTCDeviceTypeIPadMini2GWifiCellular, - RTCDeviceTypeIPadMini3, - RTCDeviceTypeIPadMini4, - RTCDeviceTypeIPadPro9Inch, - RTCDeviceTypeIPadPro12Inch, - RTCDeviceTypeIPadPro12Inch2, - RTCDeviceTypeIPadPro10Inch, - RTCDeviceTypeIPad7Gen10Inch, - RTCDeviceTypeIPadPro3Gen11Inch, - RTCDeviceTypeIPadPro3Gen12Inch, - RTCDeviceTypeIPadPro4Gen11Inch, - RTCDeviceTypeIPadPro4Gen12Inch, - RTCDeviceTypeIPadMini5Gen, - RTCDeviceTypeIPadAir3Gen, - RTCDeviceTypeIPad8, - RTCDeviceTypeIPad9, - RTCDeviceTypeIPadMini6, - RTCDeviceTypeIPadAir4Gen, - RTCDeviceTypeIPadPro5Gen11Inch, - RTCDeviceTypeIPadPro5Gen12Inch, - RTCDeviceTypeSimulatori386, - RTCDeviceTypeSimulatorx86_64, -}; - @interface UIDevice (RTCDevice) -+ (RTCDeviceType)deviceType; -+ (BOOL)isIOS11OrLater; ++ (NSString *)machineName; @end diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Resources/Info.plist b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Resources/Info.plist index 0e5ee39a..0bd70d66 100644 Binary files a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Resources/Info.plist and b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/Resources/Info.plist differ diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/WebRTC b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/WebRTC index 1eb89eec..0d10b6b3 100755 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/WebRTC +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-maccatalyst/WebRTC.framework/Versions/A/WebRTC @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb8fad3c7f45ac5abc749853449cc178a73212edcf456c7031d8f3367eead7cb -size 17991632 +oid sha256:8f5bc4e1c7186fdf6ee65407cbb31c64240dcee8805a3347a3895ad00cf15e8a +size 23279128 diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSession.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSession.h index 0ca137d2..d7f66c65 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSession.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSession.h @@ -225,10 +225,14 @@ RTC_OBJC_EXPORT // AVAudioSession. `lockForConfiguration` must be called before using them // otherwise they will fail with kRTCAudioSessionErrorLockRequired. -- (BOOL)setCategory:(NSString *)category +- (BOOL)setCategory:(AVAudioSessionCategory)category + mode:(AVAudioSessionMode)mode + options:(AVAudioSessionCategoryOptions)options + error:(NSError **)outError; +- (BOOL)setCategory:(AVAudioSessionCategory)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError; -- (BOOL)setMode:(NSString *)mode error:(NSError **)outError; +- (BOOL)setMode:(AVAudioSessionMode)mode error:(NSError **)outError; - (BOOL)setInputGain:(float)gain error:(NSError **)outError; - (BOOL)setPreferredSampleRate:(double)sampleRate error:(NSError **)outError; - (BOOL)setPreferredIOBufferDuration:(NSTimeInterval)duration error:(NSError **)outError; diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h index be799203..59fcb758 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h @@ -17,9 +17,7 @@ NS_ASSUME_NONNULL_BEGIN RTC_EXTERN const int kRTCAudioSessionPreferredNumberOfChannels; RTC_EXTERN const double kRTCAudioSessionHighPerformanceSampleRate; -RTC_EXTERN const double kRTCAudioSessionLowComplexitySampleRate; RTC_EXTERN const double kRTCAudioSessionHighPerformanceIOBufferDuration; -RTC_EXTERN const double kRTCAudioSessionLowComplexityIOBufferDuration; // Struct to hold configuration values. RTC_OBJC_EXPORT diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCallbackLogger.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCallbackLogger.h index 8def162e..815ea25c 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCallbackLogger.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCallbackLogger.h @@ -32,7 +32,7 @@ RTC_OBJC_EXPORT // to implement dispatching to some other queue. - (void)start:(nullable RTCCallbackLoggerMessageHandler)handler; - (void)startWithMessageAndSeverityHandler: - (nullable RTCCallbackLoggerMessageAndSeverityHandler)handler; + (nullable RTCCallbackLoggerMessageAndSeverityHandler)handler; - (void)stop; diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCFieldTrials.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCFieldTrials.h index 4b76da8f..8a7de727 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCFieldTrials.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCFieldTrials.h @@ -14,14 +14,14 @@ /** The only valid value for the following if set is kRTCFieldTrialEnabledValue. */ RTC_EXTERN NSString *const kRTCFieldTrialAudioForceABWENoTWCCKey; -RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03AdvertisedKey; -RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03Key; -RTC_EXTERN NSString * const kRTCFieldTrialH264HighProfileKey; -RTC_EXTERN NSString * const kRTCFieldTrialMinimizeResamplingOnMobileKey; +RTC_EXTERN NSString *const kRTCFieldTrialFlexFec03AdvertisedKey; +RTC_EXTERN NSString *const kRTCFieldTrialFlexFec03Key; +RTC_EXTERN NSString *const kRTCFieldTrialH264HighProfileKey; +RTC_EXTERN NSString *const kRTCFieldTrialMinimizeResamplingOnMobileKey; RTC_EXTERN NSString *const kRTCFieldTrialUseNWPathMonitor; /** The valid value for field trials above. */ -RTC_EXTERN NSString * const kRTCFieldTrialEnabledValue; +RTC_EXTERN NSString *const kRTCFieldTrialEnabledValue; /** Initialize field trials using a dictionary mapping field trial keys to their * values. See above for valid keys and values. Must be called before any other diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCLogging.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCLogging.h index 36f53d83..e8610da0 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCLogging.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCLogging.h @@ -34,9 +34,12 @@ RTC_EXTERN NSString* RTCFileName(const char* filePath); // Some convenience macros. -#define RTCLogString(format, ...) \ - [NSString stringWithFormat:@"(%@:%d %s): " format, RTCFileName(__FILE__), \ - __LINE__, __FUNCTION__, ##__VA_ARGS__] +#define RTCLogString(format, ...) \ + [NSString stringWithFormat:@"(%@:%d %s): " format, \ + RTCFileName(__FILE__), \ + __LINE__, \ + __FUNCTION__, \ + ##__VA_ARGS__] #define RTCLogFormat(severity, format, ...) \ do { \ @@ -44,17 +47,13 @@ RTC_EXTERN NSString* RTCFileName(const char* filePath); RTCLogEx(severity, log_string); \ } while (false) -#define RTCLogVerbose(format, ...) \ - RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__) +#define RTCLogVerbose(format, ...) RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__) -#define RTCLogInfo(format, ...) \ - RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__) +#define RTCLogInfo(format, ...) RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__) -#define RTCLogWarning(format, ...) \ - RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__) +#define RTCLogWarning(format, ...) RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__) -#define RTCLogError(format, ...) \ - RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__) +#define RTCLogError(format, ...) RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__) #if !defined(NDEBUG) #define RTCLogDebug(format, ...) RTCLogInfo(format, ##__VA_ARGS__) diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMacros.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMacros.h index 469e3c93..114ced0e 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMacros.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMacros.h @@ -36,9 +36,10 @@ // WebRTC.framework with their own prefix in case symbol clashing is a // problem. // -// This macro must only be defined here and not on via compiler flag to -// ensure it has a unique value. +// This macro must be defined uniformily across all the translation units. +#ifndef RTC_OBJC_TYPE_PREFIX #define RTC_OBJC_TYPE_PREFIX +#endif // RCT_OBJC_TYPE // diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCPeerConnection.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCPeerConnection.h index 5b06df82..400069c4 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCPeerConnection.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCPeerConnection.h @@ -82,9 +82,8 @@ typedef NS_ENUM(NSInteger, RTCStatsOutputLevel) { RTCStatsOutputLevelDebug, }; -typedef void (^RTCCreateSessionDescriptionCompletionHandler)(RTC_OBJC_TYPE(RTCSessionDescription) * - _Nullable sdp, - NSError *_Nullable error); +typedef void (^RTCCreateSessionDescriptionCompletionHandler)( + RTC_OBJC_TYPE(RTCSessionDescription) *_Nullable sdp, NSError *_Nullable error); typedef void (^RTCSetSessionDescriptionCompletionHandler)(NSError *_Nullable error); diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpSender.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpSender.h index edea5d83..b0f0e747 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpSender.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpSender.h @@ -21,8 +21,8 @@ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCRtpSender) -/** A unique identifier for this sender. */ -@property(nonatomic, readonly) NSString *senderId; + /** A unique identifier for this sender. */ + @property(nonatomic, readonly) NSString *senderId; /** The currently active RTCRtpParameters, as defined in * https://www.w3.org/TR/webrtc/#idl-def-RTCRtpParameters. diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoder.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoder.h index 9ffde998..32d79a08 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoder.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoder.h @@ -29,6 +29,7 @@ RTC_OBJC_EXPORT - (void)setCallback : (RTCVideoDecoderCallback)callback; - (NSInteger)startDecodeWithNumberOfCores:(int)numberOfCores; - (NSInteger)releaseDecoder; +// TODO(bugs.webrtc.org/15444): Remove obsolete missingFrames param. - (NSInteger)decode:(RTC_OBJC_TYPE(RTCEncodedImage) *)encodedImage missingFrames:(BOOL)missingFrames codecSpecificInfo:(nullable id)info diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoder.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoder.h index 2e921540..0a3a875d 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoder.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoder.h @@ -28,7 +28,7 @@ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCVideoEncoder) -- (void)setCallback:(nullable RTCVideoEncoderCallback)callback; + - (void)setCallback : (nullable RTCVideoEncoderCallback)callback; - (NSInteger)startEncodeWithSettings:(RTC_OBJC_TYPE(RTCVideoEncoderSettings) *)settings numberOfCores:(int)numberOfCores; - (NSInteger)releaseEncoder; diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoFrame.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoFrame.h index 01294f57..a4ef6001 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoFrame.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoFrame.h @@ -45,7 +45,7 @@ RTC_OBJC_EXPORT @property(nonatomic, readonly) id buffer; - (instancetype)init NS_UNAVAILABLE; -- (instancetype) new NS_UNAVAILABLE; +- (instancetype)new NS_UNAVAILABLE; /** Initialize an RTCVideoFrame from a pixel buffer, rotation, and timestamp. * Deprecated - initialize with a RTCCVPixelBuffer instead diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/UIDevice+RTCDevice.h b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/UIDevice+RTCDevice.h index ab477e2a..4d04f38f 100644 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/UIDevice+RTCDevice.h +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/UIDevice+RTCDevice.h @@ -10,102 +10,8 @@ #import -typedef NS_ENUM(NSInteger, RTCDeviceType) { - RTCDeviceTypeUnknown, - RTCDeviceTypeIPhone1G, - RTCDeviceTypeIPhone3G, - RTCDeviceTypeIPhone3GS, - RTCDeviceTypeIPhone4, - RTCDeviceTypeIPhone4Verizon, - RTCDeviceTypeIPhone4S, - RTCDeviceTypeIPhone5GSM, - RTCDeviceTypeIPhone5GSM_CDMA, - RTCDeviceTypeIPhone5CGSM, - RTCDeviceTypeIPhone5CGSM_CDMA, - RTCDeviceTypeIPhone5SGSM, - RTCDeviceTypeIPhone5SGSM_CDMA, - RTCDeviceTypeIPhone6Plus, - RTCDeviceTypeIPhone6, - RTCDeviceTypeIPhone6S, - RTCDeviceTypeIPhone6SPlus, - RTCDeviceTypeIPhone7, - RTCDeviceTypeIPhone7Plus, - RTCDeviceTypeIPhoneSE, - RTCDeviceTypeIPhone8, - RTCDeviceTypeIPhone8Plus, - RTCDeviceTypeIPhoneX, - RTCDeviceTypeIPhoneXS, - RTCDeviceTypeIPhoneXSMax, - RTCDeviceTypeIPhoneXR, - RTCDeviceTypeIPhone11, - RTCDeviceTypeIPhone11Pro, - RTCDeviceTypeIPhone11ProMax, - RTCDeviceTypeIPhone12Mini, - RTCDeviceTypeIPhone12, - RTCDeviceTypeIPhone12Pro, - RTCDeviceTypeIPhone12ProMax, - RTCDeviceTypeIPhoneSE2Gen, - RTCDeviceTypeIPhone13, - RTCDeviceTypeIPhone13Mini, - RTCDeviceTypeIPhone13Pro, - RTCDeviceTypeIPhone13ProMax, - - RTCDeviceTypeIPodTouch1G, - RTCDeviceTypeIPodTouch2G, - RTCDeviceTypeIPodTouch3G, - RTCDeviceTypeIPodTouch4G, - RTCDeviceTypeIPodTouch5G, - RTCDeviceTypeIPodTouch6G, - RTCDeviceTypeIPodTouch7G, - RTCDeviceTypeIPad, - RTCDeviceTypeIPad2Wifi, - RTCDeviceTypeIPad2GSM, - RTCDeviceTypeIPad2CDMA, - RTCDeviceTypeIPad2Wifi2, - RTCDeviceTypeIPadMiniWifi, - RTCDeviceTypeIPadMiniGSM, - RTCDeviceTypeIPadMiniGSM_CDMA, - RTCDeviceTypeIPad3Wifi, - RTCDeviceTypeIPad3GSM_CDMA, - RTCDeviceTypeIPad3GSM, - RTCDeviceTypeIPad4Wifi, - RTCDeviceTypeIPad4GSM, - RTCDeviceTypeIPad4GSM_CDMA, - RTCDeviceTypeIPad5, - RTCDeviceTypeIPad6, - RTCDeviceTypeIPadAirWifi, - RTCDeviceTypeIPadAirCellular, - RTCDeviceTypeIPadAirWifiCellular, - RTCDeviceTypeIPadAir2, - RTCDeviceTypeIPadMini2GWifi, - RTCDeviceTypeIPadMini2GCellular, - RTCDeviceTypeIPadMini2GWifiCellular, - RTCDeviceTypeIPadMini3, - RTCDeviceTypeIPadMini4, - RTCDeviceTypeIPadPro9Inch, - RTCDeviceTypeIPadPro12Inch, - RTCDeviceTypeIPadPro12Inch2, - RTCDeviceTypeIPadPro10Inch, - RTCDeviceTypeIPad7Gen10Inch, - RTCDeviceTypeIPadPro3Gen11Inch, - RTCDeviceTypeIPadPro3Gen12Inch, - RTCDeviceTypeIPadPro4Gen11Inch, - RTCDeviceTypeIPadPro4Gen12Inch, - RTCDeviceTypeIPadMini5Gen, - RTCDeviceTypeIPadAir3Gen, - RTCDeviceTypeIPad8, - RTCDeviceTypeIPad9, - RTCDeviceTypeIPadMini6, - RTCDeviceTypeIPadAir4Gen, - RTCDeviceTypeIPadPro5Gen11Inch, - RTCDeviceTypeIPadPro5Gen12Inch, - RTCDeviceTypeSimulatori386, - RTCDeviceTypeSimulatorx86_64, -}; - @interface UIDevice (RTCDevice) -+ (RTCDeviceType)deviceType; -+ (BOOL)isIOS11OrLater; ++ (NSString *)machineName; @end diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Info.plist b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Info.plist index bd4c2bd6..f1834b42 100644 Binary files a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Info.plist and b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Info.plist differ diff --git a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/WebRTC b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/WebRTC index 73e27a0c..f08eec4e 100755 --- a/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/WebRTC +++ b/tuist/xcframeworks/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/WebRTC @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df591020ae147cb7941bd8a55007093d5f9bf0ea282bcc12e6c009a0a440779b -size 18103432 +oid sha256:a30e035cfbac4f19cb04b07a788d95c2f0758837299a61743690509af1a34e52 +size 23354744